From 56013ce4801ef92e6a238783bc04a32e5b631189 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 4 Dec 2023 12:32:03 +0900 Subject: [PATCH 01/96] feat: canto cosmos-sdk v0.50.1 bump up - 1 --- Makefile | 6 +- app/ante/ante.go | 5 +- app/ante/comission.go | 11 +- app/ante/cosmos/authz.go | 5 +- app/ante/handler_options.go | 19 +- app/ante/utils_test.go | 36 +- app/app.go | 84 +- app/app_test.go | 15 +- app/export.go | 42 +- app/sigverify.go | 13 +- app/sigverify_test.go | 18 +- app/sim_test.go | 39 +- app/sim_utils.go | 21 +- app/state.go | 28 +- app/test_helpers.go | 28 +- app/tps_counter.go | 2 +- app/tps_counter_test.go | 2 +- app/upgrades/v2/upgrades.go | 9 +- app/upgrades/v3/upgrades.go | 14 +- app/upgrades/v4/upgrades.go | 11 +- app/upgrades/v5/upgrades.go | 9 +- app/upgrades/v6/upgrades.go | 9 +- app/upgrades/v7/upgrades.go | 15 +- app/upgrades/v7/upgrades_test.go | 22 +- cmd/cantod/cmd_test.go | 4 +- cmd/cantod/init.go | 10 +- cmd/cantod/root.go | 16 +- cmd/cantod/testnet.go | 15 +- cmd/config/config.go | 5 +- go.mod | 279 ++-- go.sum | 1218 ++++++++++++----- ibc/module.go | 8 +- ibc/module_test.go | 10 +- ibc/testing/app.go | 37 +- ibc/testing/chain.go | 54 +- ibc/testing/config.go | 12 +- ibc/testing/coordinator.go | 2 +- ibc/testing/endpoint.go | 16 +- ibc/testing/events.go | 6 +- ibc/testing/path.go | 2 +- ibc/testing/sdk_test.go | 30 +- ibc/testing/values.go | 18 +- ibc/utils.go | 22 +- ibc/utils_test.go | 6 +- proto/buf.yaml | 5 + proto/canto/coinswap/v1/coinswap.proto | 8 +- proto/canto/coinswap/v1/tx.proto | 8 +- proto/canto/csr/v1/csr.proto | 2 +- proto/canto/erc20/v1/tx.proto | 2 +- proto/canto/onboarding/v1/genesis.proto | 2 +- testutil/network/network.go | 44 +- testutil/network/util.go | 16 +- .../proto/cosmos/gov/v1beta1/gov.proto | 8 +- .../cosmos/staking/v1beta1/genesis.proto | 2 +- .../cosmos/staking/v1beta1/staking.proto | 16 +- .../proto/cosmos/staking/v1beta1/tx.proto | 4 +- third_party/proto/ethermint/evm/v1/evm.proto | 28 +- .../proto/ethermint/evm/v1/query.proto | 2 +- third_party/proto/ethermint/evm/v1/tx.proto | 18 +- .../ethermint/feemarket/v1/feemarket.proto | 2 +- .../proto/ethermint/feemarket/v1/query.proto | 2 +- types/errors.go | 4 +- types/utils.go | 5 +- x/coinswap/client/cli/tx.go | 9 +- x/coinswap/client/rest/query.go | 51 - x/coinswap/client/rest/rest.go | 63 - x/coinswap/client/rest/tx.go | 215 --- x/coinswap/handler.go | 3 +- x/coinswap/keeper/fees.go | 3 +- x/coinswap/keeper/grpc_query.go | 6 +- x/coinswap/keeper/keeper.go | 50 +- x/coinswap/keeper/keeper_test.go | 93 +- x/coinswap/keeper/msg_server.go | 9 +- x/coinswap/keeper/pool.go | 12 +- x/coinswap/keeper/swap.go | 77 +- x/coinswap/keeper/swap_test.go | 87 +- x/coinswap/module.go | 30 +- x/coinswap/simulation/operations.go | 13 +- x/coinswap/simulation/params.go | 3 +- x/coinswap/types/errors.go | 20 +- x/coinswap/types/msgs.go | 16 +- x/coinswap/types/msgs_test.go | 61 +- x/coinswap/types/params.go | 29 +- x/coinswap/types/query.pb.go | 2 +- x/coinswap/types/tx.pb.go | 2 +- x/coinswap/types/utils.go | 2 +- x/coinswap/types/validation.go | 40 +- x/csr/handler.go | 6 +- x/csr/keeper/csr.go | 2 +- x/csr/keeper/errors.go | 20 +- x/csr/keeper/event_handler.go | 10 +- x/csr/keeper/evm.go | 16 +- x/csr/keeper/evm_hook_test.go | 3 +- x/csr/keeper/evm_hooks.go | 23 +- x/csr/keeper/grpc_query.go | 2 +- x/csr/keeper/integration_test.go | 5 +- x/csr/keeper/keeper.go | 8 +- x/csr/keeper/keeper_test.go | 42 +- x/csr/keeper/params_test.go | 4 +- x/csr/module.go | 23 +- x/csr/types/csr.go | 12 +- x/csr/types/csr.pb.go | 2 +- x/csr/types/errors.go | 10 +- x/csr/types/params.go | 22 +- x/csr/types/params_test.go | 14 +- x/csr/types/query.pb.go | 2 +- x/epochs/genesis_test.go | 6 +- x/epochs/keeper/epoch_infos.go | 5 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/keeper.go | 7 +- x/epochs/keeper/keeper_test.go | 33 +- x/epochs/module.go | 29 +- x/epochs/types/query.pb.go | 2 +- x/erc20/client/cli/tx.go | 3 +- x/erc20/client/rest/rest.go | 162 --- x/erc20/genesis_test.go | 10 +- x/erc20/handler.go | 3 +- x/erc20/keeper/evm.go | 25 +- x/erc20/keeper/evm_hooks.go | 3 +- x/erc20/keeper/evm_hooks_test.go | 11 +- x/erc20/keeper/grpc_query.go | 2 +- x/erc20/keeper/integration_test.go | 11 +- x/erc20/keeper/keeper.go | 7 +- x/erc20/keeper/keeper_test.go | 35 +- x/erc20/keeper/mint.go | 15 +- x/erc20/keeper/msg_server.go | 42 +- x/erc20/keeper/msg_server_test.go | 65 +- x/erc20/keeper/proposals.go | 29 +- x/erc20/keeper/token_pairs.go | 5 +- x/erc20/migrations/v2/migration_test.go | 8 +- x/erc20/module.go | 27 +- x/erc20/proposal_handler.go | 3 +- x/erc20/types/errors.go | 26 +- x/erc20/types/interfaces.go | 22 +- x/erc20/types/msg.go | 20 +- x/erc20/types/msg_test.go | 37 +- x/erc20/types/proposal.go | 6 +- x/erc20/types/proposal_test.go | 2 +- x/erc20/types/query.pb.go | 2 +- x/erc20/types/token_pair.go | 2 +- x/erc20/types/token_pair_test.go | 2 +- x/erc20/types/tx.pb.go | 2 +- x/govshuttle/client/cli/tx.go | 6 +- x/govshuttle/handler.go | 3 +- x/govshuttle/keeper/keeper.go | 9 +- x/govshuttle/keeper/proposals.go | 19 +- x/govshuttle/module.go | 30 +- x/govshuttle/module_simulation.go | 4 +- x/govshuttle/proposal_handler.go | 3 +- x/govshuttle/types/errors.go | 4 +- x/govshuttle/types/proposal.go | 10 +- x/govshuttle/types/query.pb.go | 2 +- x/govshuttle/types/tx.pb.go | 2 +- x/inflation/keeper/epoch_mint_provisions.go | 9 +- .../keeper/epoch_mint_provisions_test.go | 6 +- x/inflation/keeper/genesis_test.go | 4 +- x/inflation/keeper/grpc_query_test.go | 7 +- x/inflation/keeper/hooks.go | 2 +- x/inflation/keeper/hooks_test.go | 6 +- x/inflation/keeper/inflation.go | 36 +- x/inflation/keeper/inflation_test.go | 21 +- x/inflation/keeper/integration_test.go | 24 +- x/inflation/keeper/keeper.go | 8 +- x/inflation/keeper/keeper_test.go | 33 +- x/inflation/migrations/v2/migration.go | 15 +- x/inflation/module.go | 33 +- x/inflation/spec/05_parameters.md | 16 +- x/inflation/types/inflation_calculation.go | 14 +- .../types/inflation_calculation_test.go | 56 +- x/inflation/types/interfaces.go | 16 +- x/inflation/types/params.go | 21 +- x/inflation/types/params_test.go | 102 +- x/inflation/types/query.pb.go | 2 +- x/onboarding/genesis_test.go | 13 +- x/onboarding/ibc_middleware.go | 8 +- x/onboarding/ibc_module_test.go | 37 +- x/onboarding/keeper/ibc_callbacks.go | 11 +- .../ibc_callbacks_integration_suite_test.go | 29 +- .../keeper/ibc_callbacks_integration_test.go | 53 +- x/onboarding/keeper/ibc_callbacks_test.go | 181 +-- x/onboarding/keeper/keeper.go | 11 +- x/onboarding/keeper/keeper_test.go | 19 +- x/onboarding/keeper/utils_test.go | 6 +- x/onboarding/module.go | 27 +- x/onboarding/testutil/helpers.go | 2 +- x/onboarding/types/errors.go | 6 +- x/onboarding/types/genesis_test.go | 4 +- x/onboarding/types/interfaces.go | 27 +- x/onboarding/types/params.go | 8 +- x/onboarding/types/params_test.go | 4 +- x/onboarding/types/query.pb.go | 2 +- 191 files changed, 2661 insertions(+), 2514 deletions(-) delete mode 100644 x/coinswap/client/rest/query.go delete mode 100644 x/coinswap/client/rest/rest.go delete mode 100644 x/coinswap/client/rest/tx.go delete mode 100644 x/erc20/client/rest/rest.go diff --git a/Makefile b/Makefile index 9a241ef82..fcd966a63 100755 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation') DIFF_TAG=$(shell git rev-list --tags="v*" --max-count=1 --not $(shell git rev-list --tags="v*" "HEAD..origin")) DEFAULT_TAG=$(shell git rev-list --tags="v*" --max-count=1) VERSION ?= $(shell echo $(shell git describe --tags $(or $(DIFF_TAG), $(DEFAULT_TAG))) | sed 's/^v//') -TMVERSION := $(shell go list -m github.com/tendermint/tendermint | sed 's:.* ::') +TMVERSION := $(shell go list -m github.com/cometbft/cometbft | sed 's:.* ::') COMMIT := $(shell git log -1 --format='%H') LEDGER_ENABLED ?= true GOPATH ?= $(shell $(GO) env GOPATH) @@ -91,7 +91,7 @@ ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=canto \ -X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ -X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \ -X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)" \ - -X github.com/tendermint/tendermint/version.TMCoreSemVer=$(TMVERSION) + -X github.com/cometbft/cometbft/version.TMCoreSemVer=$(TMVERSION) # DB backend selection ifeq (cleveldb,$(findstring cleveldb,$(COSMOS_BUILD_OPTIONS))) @@ -532,7 +532,7 @@ proto-update-deps: ## Importing of tendermint protobuf definitions currently requires the ## use of `sed` in order to build properly with cosmos-sdk's proto file layout ## (which is the standard Buf.build FILE_LAYOUT) -## Issue link: https://github.com/tendermint/tendermint/issues/5021 +## Issue link: https://github.com/cometbft/cometbft/issues/5021 @mkdir -p $(TM_ABCI_TYPES) @curl -sSL $(TM_URL)/abci/types.proto > $(TM_ABCI_TYPES)/types.proto diff --git a/app/ante/ante.go b/app/ante/ante.go index 7cc12289f..a41e5d85a 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,6 +1,7 @@ package ante import ( + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authante "github.com/cosmos/cosmos-sdk/x/auth/ante" @@ -32,7 +33,7 @@ func NewAnteHandler(options HandlerOptions) sdk.AnteHandler { // handle as normal Cosmos SDK tx, except signature is checked for EIP712 representation anteHandler = newCosmosAnteHandlerEip712(options) default: - return ctx, sdkerrors.Wrapf( + return ctx, errorsmod.Wrapf( sdkerrors.ErrUnknownExtensionOptions, "rejecting tx with unsupported extension option: %s", typeURL, ) @@ -51,7 +52,7 @@ func NewAnteHandler(options HandlerOptions) sdk.AnteHandler { anteHandler = newCosmosAnteHandler(options) } default: - return ctx, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "invalid transaction type: %T", tx) + return ctx, errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "invalid transaction type: %T", tx) } return anteHandler(ctx, tx, sim) diff --git a/app/ante/comission.go b/app/ante/comission.go index 04dfdf109..db246f7e1 100644 --- a/app/ante/comission.go +++ b/app/ante/comission.go @@ -1,15 +1,16 @@ package ante import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/authz" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) -var minCommission = sdk.NewDecWithPrec(5, 2) // 5% +var minCommission = sdkmath.LegacyNewDecWithPrec(5, 2) // 5% // TODO: remove once Cosmos SDK is upgraded to v0.46 @@ -53,7 +54,7 @@ func (vcd ValidatorCommissionDecorator) validateAuthz(ctx sdk.Context, execMsg * var innerMsg sdk.Msg err := vcd.cdc.UnpackAny(v, &innerMsg) if err != nil { - return sdkerrors.Wrap(err, "cannot unmarshal authz exec msgs") + return errorsmod.Wrap(err, "cannot unmarshal authz exec msgs") } if err := vcd.validateMsg(ctx, innerMsg); err != nil { @@ -69,13 +70,13 @@ func (vcd ValidatorCommissionDecorator) validateMsg(_ sdk.Context, msg sdk.Msg) switch msg := msg.(type) { case *stakingtypes.MsgCreateValidator: if msg.Commission.Rate.LT(minCommission) { - return sdkerrors.Wrapf( + return errorsmod.Wrapf( sdkerrors.ErrInvalidRequest, "validator commission %s be lower than minimum of %s", msg.Commission.Rate, minCommission) } case *stakingtypes.MsgEditValidator: if msg.CommissionRate != nil && msg.CommissionRate.LT(minCommission) { - return sdkerrors.Wrapf( + return errorsmod.Wrapf( sdkerrors.ErrInvalidRequest, "validator commission %s be lower than minimum of %s", msg.CommissionRate, minCommission) } diff --git a/app/ante/cosmos/authz.go b/app/ante/cosmos/authz.go index 252ff735a..9fdee7985 100644 --- a/app/ante/cosmos/authz.go +++ b/app/ante/cosmos/authz.go @@ -71,7 +71,10 @@ func (ald AuthzLimiterDecorator) checkDisabledMsgs(msgs []sdk.Msg, isAuthzInnerM return err } case *authz.MsgGrant: - authorization := msg.GetAuthorization() + authorization, err := msg.GetAuthorization() + if err != nil { + return err + } url := authorization.MsgTypeURL() if ald.isDisabledMsg(url) { diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 072fa4fac..c8a929abb 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -1,6 +1,8 @@ package ante import ( + errorsmod "cosmossdk.io/errors" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -8,8 +10,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/ante" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - ibcante "github.com/cosmos/ibc-go/v3/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" + ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" ethante "github.com/evmos/ethermint/app/ante" evmtypes "github.com/evmos/ethermint/x/evm/types" @@ -28,7 +30,7 @@ type HandlerOptions struct { EvmKeeper ethante.EVMKeeper FeegrantKeeper ante.FeegrantKeeper SignModeHandler authsigning.SignModeHandler - SigGasConsumer func(meter sdk.GasMeter, sig signing.SignatureV2, params authtypes.Params) error + SigGasConsumer func(meter storetypes.GasMeter, sig signing.SignatureV2, params authtypes.Params) error Cdc codec.BinaryCodec MaxTxGasWanted uint64 Simulation bool @@ -37,24 +39,23 @@ type HandlerOptions struct { // Validate checks if the keepers are defined func (options HandlerOptions) Validate() error { if options.AccountKeeper == nil { - return sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") + return errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") } if options.BankKeeper == nil { - return sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") + return errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") } if options.SignModeHandler == nil { - return sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") + return errorsmod.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") } if options.FeeMarketKeeper == nil { - return sdkerrors.Wrap(sdkerrors.ErrLogic, "fee market keeper is required for AnteHandler") + return errorsmod.Wrap(sdkerrors.ErrLogic, "fee market keeper is required for AnteHandler") } if options.EvmKeeper == nil { - return sdkerrors.Wrap(sdkerrors.ErrLogic, "evm keeper is required for AnteHandler") + return errorsmod.Wrap(sdkerrors.ErrLogic, "evm keeper is required for AnteHandler") } return nil } -// newCosmosAnteHandler creates the default ante handler for Ethereum transactions func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return sdk.ChainAnteDecorators( ethante.NewEthSetUpContextDecorator(options.EvmKeeper), // outermost AnteDecorator. SetUpContext must be called first diff --git a/app/ante/utils_test.go b/app/ante/utils_test.go index 6864a9ef2..1f65d8e60 100644 --- a/app/ante/utils_test.go +++ b/app/ante/utils_test.go @@ -8,8 +8,15 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + protov2 "google.golang.org/protobuf/proto" + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/app" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" client "github.com/cosmos/cosmos-sdk/client" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -19,11 +26,6 @@ import ( "github.com/evmos/ethermint/encoding" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" ) var s *AnteTestSuite @@ -43,7 +45,7 @@ func (suite *AnteTestSuite) SetupTest(isCheckTx bool) { consAddress := sdk.ConsAddress(privCons.PubKey().Address()) suite.app = app.Setup(isCheckTx, feemarkettypes.DefaultGenesisState()) - suite.ctx = suite.app.BaseApp.NewContext(isCheckTx, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(isCheckTx, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -87,20 +89,23 @@ func (suite *AnteTestSuite) Commit() { // Commit commits a block at a given time. func (suite *AnteTestSuite) CommitAfter(t time.Duration) { header := suite.ctx.BlockHeader() - suite.app.EndBlock(abci.RequestEndBlock{Height: header.Height}) - _ = suite.app.Commit() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }) + suite.app.Commit() header.Height += 1 header.Time = header.Time.Add(t) - suite.app.BeginBlock(abci.RequestBeginBlock{ - Header: header, + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, }) // update ctx - suite.ctx = suite.app.BaseApp.NewContext(false, header) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) } -func (s *AnteTestSuite) CreateTestTxBuilder(gasPrice sdk.Int, denom string, msgs ...sdk.Msg) client.TxBuilder { +func (s *AnteTestSuite) CreateTestTxBuilder(gasPrice sdkmath.Int, denom string, msgs ...sdk.Msg) client.TxBuilder { encodingConfig := encoding.MakeConfig(app.ModuleBasics) gasLimit := uint64(1000000) @@ -130,7 +135,7 @@ func (s *AnteTestSuite) CreateEthTestTxBuilder(msgEthereumTx *evmtypes.MsgEthere txData, err := evmtypes.UnpackTxData(msgEthereumTx.Data) s.Require().NoError(err) - fees := sdk.Coins{{Denom: s.denom, Amount: sdk.NewIntFromBigInt(txData.Fee())}} + fees := sdk.Coins{{Denom: s.denom, Amount: sdkmath.NewIntFromBigInt(txData.Fee())}} builder.SetFeeAmount(fees) builder.SetGasLimit(msgEthereumTx.GetGas()) @@ -172,5 +177,6 @@ var _ sdk.Tx = &invalidTx{} type invalidTx struct{} -func (invalidTx) GetMsgs() []sdk.Msg { return []sdk.Msg{nil} } -func (invalidTx) ValidateBasic() error { return nil } +func (invalidTx) GetMsgs() []sdk.Msg { return []sdk.Msg{nil} } +func (invalidTx) ValidateBasic() error { return nil } +func (invalidTx) GetMsgsV2() ([]protov2.Message, error) { return nil, nil } diff --git a/app/app.go b/app/app.go index 3d488010a..64bb9ff77 100644 --- a/app/app.go +++ b/app/app.go @@ -13,24 +13,33 @@ import ( "github.com/rakyll/statik/fs" "github.com/spf13/cast" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmos "github.com/tendermint/tendermint/libs/os" - dbm "github.com/tendermint/tm-db" + abci "github.com/cometbft/cometbft/abci/types" + tmos "github.com/cometbft/cometbft/libs/os" + dbm "github.com/cosmos/cosmos-db" + "cosmossdk.io/log" + "cosmossdk.io/simapp" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/evidence" + evidencekeeper "cosmossdk.io/x/evidence/keeper" + evidencetypes "cosmossdk.io/x/evidence/types" + "cosmossdk.io/x/feegrant" + feegrantkeeper "cosmossdk.io/x/feegrant/keeper" + feegrantmodule "cosmossdk.io/x/feegrant/module" + "cosmossdk.io/x/upgrade" + upgradekeeper "cosmossdk.io/x/upgrade/keeper" + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/version" @@ -44,22 +53,12 @@ import ( "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/capability" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" "github.com/cosmos/cosmos-sdk/x/crisis" crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distr "github.com/cosmos/cosmos-sdk/x/distribution" - distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/cosmos/cosmos-sdk/x/evidence" - evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" - feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" "github.com/cosmos/cosmos-sdk/x/gov" @@ -76,29 +75,26 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/cosmos-sdk/x/upgrade" - upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" - upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - "github.com/cosmos/ibc-go/v3/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v3/modules/core" - ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client" - ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client" - ibcclienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" - ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" - ibctesting "github.com/cosmos/ibc-go/v3/testing" + "github.com/cosmos/ibc-go/modules/capability" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + + "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v8/modules/core" + ibcclient "github.com/cosmos/ibc-go/v8/modules/core/02-client" + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/v8/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + ibctesting "github.com/cosmos/ibc-go/v8/testing" ethermintapp "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/encoding" srvflags "github.com/evmos/ethermint/server/flags" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm" - evmrest "github.com/evmos/ethermint/x/evm/client/rest" evmkeeper "github.com/evmos/ethermint/x/evm/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/evmos/ethermint/x/feemarket" @@ -157,8 +153,8 @@ func init() { // manually update the power reduction by replacing micro (u) -> atto (a) Canto sdk.DefaultPowerReduction = ethermint.PowerReduction // modify fee market parameter defaults through global - feemarkettypes.DefaultMinGasPrice = sdk.NewDec(20_000_000_000) - feemarkettypes.DefaultMinGasMultiplier = sdk.NewDecWithPrec(5, 1) + feemarkettypes.DefaultMinGasPrice = sdkmath.LegacyNewDec(20_000_000_000) + feemarkettypes.DefaultMinGasMultiplier = sdkmath.LegacyNewDecWithPrec(5, 1) } // Name defines the application binary name @@ -179,12 +175,12 @@ var ( staking.AppModuleBasic{}, distr.AppModuleBasic{}, gov.NewAppModuleBasic( - paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler, - ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler, + paramsclient.ProposalHandler, /* distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler + ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler // Canto proposal types erc20client.RegisterCoinProposalHandler, erc20client.RegisterERC20ProposalHandler, erc20client.ToggleTokenConversionProposalHandler, govshuttleclient.LendingMarketProposalHandler, - govshuttleclient.TreasuryProposalHandler, + govshuttleclient.TreasuryProposalHandler, */ // TODO(dudong2) ), params.AppModuleBasic{}, crisis.AppModuleBasic{}, @@ -257,7 +253,7 @@ type Canto struct { AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper stakingkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper SlashingKeeper slashingkeeper.Keeper DistrKeeper distrkeeper.Keeper GovKeeper govkeeper.Keeper @@ -935,12 +931,12 @@ func (app *Canto) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConf clientCtx := apiSvr.ClientCtx rpc.RegisterRoutes(clientCtx, apiSvr.Router) - evmrest.RegisterTxRoutes(clientCtx, apiSvr.Router) + // evmrest.RegisterTxRoutes(clientCtx, apiSvr.Router) // TODO(dudong2) // Register new tx routes from grpc-gateway. authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // Register new tendermint queries routes from grpc-gateway. - tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // Register legacy and grpc-gateway routes for all modules. ModuleBasics.RegisterRESTRoutes(clientCtx, apiSvr.Router) @@ -957,7 +953,7 @@ func (app *Canto) RegisterTxService(clientCtx client.Context) { } func (app *Canto) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry) + cmtservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry) } // IBC Go TestingApp functions diff --git a/app/app_test.go b/app/app_test.go index 00c710229..fe98148eb 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -7,11 +7,10 @@ import ( "github.com/stretchr/testify/require" - "github.com/cosmos/cosmos-sdk/simapp" - - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - dbm "github.com/tendermint/tm-db" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/log" + dbm "github.com/cosmos/cosmos-db" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/evmos/ethermint/encoding" @@ -20,7 +19,7 @@ import ( func TestCantoExport(t *testing.T) { db := dbm.NewMemDB() - app := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{}) + app := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) genesisState := NewDefaultGenesisState() stateBytes, err := json.MarshalIndent(genesisState, "", " ") @@ -28,7 +27,7 @@ func TestCantoExport(t *testing.T) { // Initialize the chain app.InitChain( - abci.RequestInitChain{ + &abci.RequestInitChain{ ChainId: types.MainnetChainID + "-1", Validators: []abci.ValidatorUpdate{}, AppStateBytes: stateBytes, @@ -37,7 +36,7 @@ func TestCantoExport(t *testing.T) { app.Commit() // Making a new app object with the db, so that initchain hasn't been called - app2 := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{}) + app2 := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) _, err = app2.ExportAppStateAndValidators(false, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") } diff --git a/app/export.go b/app/export.go index 8db7ec132..a345a1f6c 100644 --- a/app/export.go +++ b/app/export.go @@ -4,10 +4,11 @@ import ( "encoding/json" "fmt" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + "cosmossdk.io/simapp" + storetypes "cosmossdk.io/store/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" sdk "github.com/cosmos/cosmos-sdk/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/cosmos/cosmos-sdk/x/staking" @@ -19,7 +20,7 @@ import ( // NewDefaultGenesisState generates the default state for the application. func NewDefaultGenesisState() simapp.GenesisState { encCfg := encoding.MakeConfig(ModuleBasics) - return ModuleBasics.DefaultGenesis(encCfg.Marshaler) + return ModuleBasics.DefaultGenesis(encCfg.Codec) } // ExportAppStateAndValidators exports the state of the application for a genesis @@ -28,7 +29,7 @@ func (app *Canto) ExportAppStateAndValidators( forZeroHeight bool, jailAllowedAddrs []string, ) (servertypes.ExportedApp, error) { // Creates context with current height and checks txs for ctx to be usable by start of next block - ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) + ctx := app.NewContextLegacy(true, tmproto.Header{Height: app.LastBlockHeight()}) // We export at last height + 1, because that's the height at which // Tendermint will start InitChain. @@ -41,7 +42,11 @@ func (app *Canto) ExportAppStateAndValidators( } } - genState := app.mm.ExportGenesis(ctx, app.appCodec) + genState, err := app.mm.ExportGenesis(ctx, app.appCodec) + if err != nil { + return servertypes.ExportedApp{}, err + } + appState, err := json.MarshalIndent(genState, "", " ") if err != nil { return servertypes.ExportedApp{}, err @@ -62,7 +67,8 @@ func (app *Canto) ExportAppStateAndValidators( // prepare for fresh start at zero height // NOTE zero height genesis is a temporary feature which will be deprecated -// in favor of export at a block height +// +// in favor of export at a block height func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) error { applyAllowedAddrs := false @@ -88,12 +94,16 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s // withdraw all validator commission app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { - _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) + valbz, _ := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valbz) return false }) // withdraw all delegator rewards - dels := app.StakingKeeper.GetAllDelegations(ctx) + dels, err := app.StakingKeeper.GetAllDelegations(ctx) + if err != nil { + return err + } for _, delegation := range dels { valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) if err != nil { @@ -120,12 +130,12 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s // reinitialize all validators app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { // donate any unwithdrawn outstanding reward fraction tokens to the community pool - scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) - feePool := app.DistrKeeper.GetFeePool(ctx) + valbz, _ := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + scraps, _ := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valbz) + feePool, _ := app.DistrKeeper.FeePool.Get(ctx) feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) - app.DistrKeeper.SetFeePool(ctx, feePool) - - app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()) + app.DistrKeeper.FeePool.Set(ctx, feePool) + app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valbz) return false }) @@ -169,13 +179,13 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s // Iterate through validators by power descending, reset bond heights, and // update bond intra-tx counters. store := ctx.KVStore(app.keys[stakingtypes.StoreKey]) - iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) + iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) counter := int16(0) for ; iter.Valid(); iter.Next() { addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) - validator, found := app.StakingKeeper.GetValidator(ctx, addr) - if !found { + validator, err := app.StakingKeeper.GetValidator(ctx, addr) + if err != nil { return fmt.Errorf("expected validator %s not found", addr) } diff --git a/app/sigverify.go b/app/sigverify.go index b3daf9ca3..104e35f6e 100644 --- a/app/sigverify.go +++ b/app/sigverify.go @@ -3,10 +3,11 @@ package app import ( "fmt" + errorsmod "cosmossdk.io/errors" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/types/multisig" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + sdkerror "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/tx/signing" authante "github.com/cosmos/cosmos-sdk/x/auth/ante" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -31,7 +32,7 @@ const ( // // - multisig (Cosmos SDK multisigs) func SigVerificationGasConsumer( - meter sdk.GasMeter, sig signing.SignatureV2, params authtypes.Params, + meter storetypes.GasMeter, sig signing.SignatureV2, params authtypes.Params, ) error { pubkey := sig.PubKey switch pubkey := pubkey.(type) { @@ -43,7 +44,7 @@ func SigVerificationGasConsumer( case *ed25519.PubKey: // Validator keys meter.ConsumeGas(params.SigVerifyCostED25519, "ante verify: ed25519") - return sdkerrors.Wrap(sdkerrors.ErrInvalidPubKey, "ED25519 public keys are unsupported") + return errorsmod.Wrap(sdkerror.ErrInvalidPubKey, "ED25519 public keys are unsupported") case multisig.PubKey: // Multisig keys @@ -54,13 +55,13 @@ func SigVerificationGasConsumer( return ConsumeMultisignatureVerificationGas(meter, multisignature, pubkey, params, sig.Sequence) default: - return sdkerrors.Wrapf(sdkerrors.ErrInvalidPubKey, "unrecognized/unsupported public key type: %T", pubkey) + return errorsmod.Wrapf(sdkerror.ErrInvalidPubKey, "unrecognized/unsupported public key type: %T", pubkey) } } // ConsumeMultisignatureVerificationGas consumes gas from a GasMeter for verifying a multisig pubkey signature func ConsumeMultisignatureVerificationGas( - meter sdk.GasMeter, sig *signing.MultiSignatureData, pubkey multisig.PubKey, + meter storetypes.GasMeter, sig *signing.MultiSignatureData, pubkey multisig.PubKey, params authtypes.Params, accSeq uint64, ) error { size := sig.BitArray.Count() diff --git a/app/sigverify_test.go b/app/sigverify_test.go index e56375dc7..4bc4a23ea 100644 --- a/app/sigverify_test.go +++ b/app/sigverify_test.go @@ -7,15 +7,15 @@ import ( "github.com/stretchr/testify/require" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256r1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/crypto/types/multisig" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/tx/signing" - "github.com/cosmos/cosmos-sdk/x/auth/legacy/legacytx" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" @@ -74,7 +74,7 @@ func TestConsumeSignatureVerificationGas(t *testing.T) { skR1, _ := secp256r1.GenPrivKey() type args struct { - meter sdk.GasMeter + meter storetypes.GasMeter sig signing.SignatureData pubkey cryptotypes.PubKey params authtypes.Params @@ -87,37 +87,37 @@ func TestConsumeSignatureVerificationGas(t *testing.T) { }{ { "PubKeyEd25519", - args{sdk.NewInfiniteGasMeter(), nil, ed25519.GenPrivKey().PubKey(), params}, + args{storetypes.NewInfiniteGasMeter(), nil, ed25519.GenPrivKey().PubKey(), params}, p.SigVerifyCostED25519, true, }, { "PubKeyEthsecp256k1", - args{sdk.NewInfiniteGasMeter(), nil, ethsecKey.PubKey(), params}, + args{storetypes.NewInfiniteGasMeter(), nil, ethsecKey.PubKey(), params}, secp256k1VerifyCost, false, }, { "PubKeySecp256k1", - args{sdk.NewInfiniteGasMeter(), nil, secp256k1.GenPrivKey().PubKey(), params}, + args{storetypes.NewInfiniteGasMeter(), nil, secp256k1.GenPrivKey().PubKey(), params}, p.SigVerifyCostSecp256k1, true, }, { "PubKeySecp256r1", - args{sdk.NewInfiniteGasMeter(), nil, skR1.PubKey(), params}, + args{storetypes.NewInfiniteGasMeter(), nil, skR1.PubKey(), params}, p.SigVerifyCostSecp256r1(), true, }, { "Multisig", - args{sdk.NewInfiniteGasMeter(), multisignature1, multisigKey1, params}, + args{storetypes.NewInfiniteGasMeter(), multisignature1, multisigKey1, params}, expectedCost1, false, }, { "unknown key", - args{sdk.NewInfiniteGasMeter(), nil, nil, params}, + args{storetypes.NewInfiniteGasMeter(), nil, nil, params}, 0, true, }, diff --git a/app/sim_test.go b/app/sim_test.go index bbac1d061..ff0286c7e 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -6,29 +6,32 @@ import ( "os" "testing" + sdkmath "cosmossdk.io/math" + "cosmossdk.io/simapp" + "cosmossdk.io/store" + storetypes "cosmossdk.io/store/types" + evidencetypes "cosmossdk.io/x/evidence/types" + "cosmossdk.io/x/feegrant" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/simapp" - "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/simulation" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibchost "github.com/cosmos/ibc-go/v8/modules/core/24-host" "github.com/evmos/ethermint/encoding" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - dbm "github.com/tendermint/tm-db" cantoconfig "github.com/Canto-Network/Canto/v7/cmd/config" csrtypes "github.com/Canto-Network/Canto/v7/x/csr/types" @@ -43,8 +46,8 @@ func init() { } type StoreKeysPrefixes struct { - A sdk.StoreKey - B sdk.StoreKey + A storetypes.StoreKey + B storetypes.StoreKey Prefixes [][]byte } @@ -114,7 +117,7 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(dir)) }() - sdk.DefaultPowerReduction = sdk.NewIntFromUint64(1000000) + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) app := NewCanto( logger, @@ -187,8 +190,8 @@ func TestAppImportExport(t *testing.T) { err = json.Unmarshal(exported.AppState, &genesisState) require.NoError(t, err) - ctxA := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - ctxB := newApp.NewContext(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) + ctxA := app.NewContextLegacy(true, tmproto.Header{Height: app.LastBlockHeight()}) + ctxB := newApp.NewContextLegacy(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) newApp.mm.InitGenesis(ctxB, app.AppCodec(), genesisState) newApp.StoreConsensusParams(ctxB, exported.ConsensusParams) @@ -249,7 +252,7 @@ func TestAppStateDeterminism(t *testing.T) { numTimesToRunPerSeed := 2 appHashList := make([]json.RawMessage, numTimesToRunPerSeed) - sdk.DefaultPowerReduction = sdk.NewIntFromUint64(1000000) + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) for i := 0; i < numSeeds; i++ { config.Seed = config.Seed + int64(i) @@ -319,7 +322,7 @@ func TestAppSimulationAfterImport(t *testing.T) { require.NoError(t, os.RemoveAll(dir)) }() - sdk.DefaultPowerReduction = sdk.NewIntFromUint64(1000000) + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) app := NewCanto( logger, @@ -397,7 +400,7 @@ func TestAppSimulationAfterImport(t *testing.T) { err = json.Unmarshal(exported.AppState, &genesisState) require.NoError(t, err) - ctx := newApp.NewContext(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) + ctx := newApp.NewContextLegacy(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) newApp.mm.InitGenesis(ctx, app.AppCodec(), genesisState) newApp.StoreConsensusParams(ctx, exported.ConsensusParams) diff --git a/app/sim_utils.go b/app/sim_utils.go index e74a1d027..1063d2237 100644 --- a/app/sim_utils.go +++ b/app/sim_utils.go @@ -4,7 +4,7 @@ import ( "math/rand" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/simapp/helpers" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -20,14 +20,14 @@ func GenAndDeliverTxWithRandFees(txCtx simulation.OperationInput) (simtypes.Oper var fees sdk.Coins var err error - coins, hasNeg := spendable.SafeSub(txCtx.CoinsSpentInMsg) + coins, hasNeg := spendable.SafeSub(txCtx.CoinsSpentInMsg...) if hasNeg { - return simtypes.NoOpMsg(txCtx.ModuleName, txCtx.MsgType, "message doesn't leave room for fees"), nil, err + return simtypes.NoOpMsg(txCtx.ModuleName, sdk.MsgTypeURL(txCtx.Msg), "message doesn't leave room for fees"), nil, err } fees, err = simtypes.RandomFees(txCtx.R, txCtx.Context, coins) if err != nil { - return simtypes.NoOpMsg(txCtx.ModuleName, txCtx.MsgType, "unable to generate fees"), nil, err + return simtypes.NoOpMsg(txCtx.ModuleName, sdk.MsgTypeURL(txCtx.Msg), "unable to generate fees"), nil, err } return GenAndDeliverTx(txCtx, fees) } @@ -35,26 +35,27 @@ func GenAndDeliverTxWithRandFees(txCtx simulation.OperationInput) (simtypes.Oper // GenAndDeliverTx generates a transactions and delivers it. func GenAndDeliverTx(txCtx simulation.OperationInput, fees sdk.Coins) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { account := txCtx.AccountKeeper.GetAccount(txCtx.Context, txCtx.SimAccount.Address) - tx, err := helpers.GenTx( + tx, err := simtestutil.GenSignedMockTx( + txCtx.R, txCtx.TxGen, []sdk.Msg{txCtx.Msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, txCtx.Context.ChainID(), []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, txCtx.SimAccount.PrivKey, ) if err != nil { - return simtypes.NoOpMsg(txCtx.ModuleName, txCtx.MsgType, "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg(txCtx.ModuleName, sdk.MsgTypeURL(txCtx.Msg), "unable to generate mock tx"), nil, err } - _, _, err = txCtx.App.Deliver(txCtx.TxGen.TxEncoder(), tx) + _, _, err = txCtx.App.SimDeliver(txCtx.TxGen.TxEncoder(), tx) if err != nil { - return simtypes.NoOpMsg(txCtx.ModuleName, txCtx.MsgType, "unable to deliver tx"), nil, err + return simtypes.NoOpMsg(txCtx.ModuleName, sdk.MsgTypeURL(txCtx.Msg), "unable to deliver tx"), nil, err } - return simtypes.NewOperationMsg(txCtx.Msg, true, "", txCtx.Cdc), nil, nil + return simtypes.NewOperationMsg(txCtx.Msg, true, ""), nil, nil } // RandomAccounts generates n random accounts diff --git a/app/state.go b/app/state.go index 84b812e5e..fc2dd9062 100644 --- a/app/state.go +++ b/app/state.go @@ -8,17 +8,18 @@ import ( "os" "time" + sdkmath "cosmossdk.io/math" + tmjson "github.com/cometbft/cometbft/libs/json" + tmtypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - tmjson "github.com/tendermint/tendermint/libs/json" - tmtypes "github.com/tendermint/tendermint/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" ) @@ -88,7 +89,7 @@ func AppStateFn(cdc codec.JSONCodec, simManager *module.SimulationManager) simty panic(err) } // compute not bonded balance - notBondedTokens := sdk.ZeroInt() + notBondedTokens := sdkmath.ZeroInt() for _, val := range stakingState.Validators { if val.Status != stakingtypes.Unbonded { continue @@ -143,17 +144,18 @@ func AppStateRandomizedFn( numAccs := int64(len(accs)) genesisState := NewDefaultGenesisState() - var initalStake, numInitiallyBonded int64 + var ( + numInitiallyBonded int64 + initialStake sdkmath.Int + ) appParams.GetOrGenerate( - cdc, - simappparams.StakePerAccount, - &initalStake, + simtestutil.StakePerAccount, + &initialStake, r, - func(r *rand.Rand) { initalStake = r.Int63n(1e12) }, + func(r *rand.Rand) { initialStake = sdkmath.NewInt(r.Int63n(1e12)) }, ) appParams.GetOrGenerate( - cdc, - simappparams.InitiallyBondedValidators, + simtestutil.InitiallyBondedValidators, &numInitiallyBonded, r, func(r *rand.Rand) { numInitiallyBonded = int64(r.Intn(300)) }, @@ -169,7 +171,7 @@ func AppStateRandomizedFn( StakePerAccount: %d, InitiallyBondedValidators: %d, } -`, initalStake, numInitiallyBonded) +`, initialStake, numInitiallyBonded) simState := &module.SimulationState{ AppParams: appParams, @@ -177,7 +179,7 @@ func AppStateRandomizedFn( Rand: r, GenState: genesisState, Accounts: accs, - InitialStake: initalStake, + InitialStake: initialStake, NumBonded: numInitiallyBonded, GenTimestamp: genesisTimestamp, } diff --git a/app/test_helpers.go b/app/test_helpers.go index 71eff2868..8a3d030c0 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -4,17 +4,17 @@ import ( "encoding/json" "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/ibc-go/v3/testing/simapp" - - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmtypes "github.com/tendermint/tendermint/types" - dbm "github.com/tendermint/tm-db" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/libs/log" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/evmos/ethermint/encoding" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -31,8 +31,8 @@ func init() { // DefaultConsensusParams defines the default Tendermint consensus params used in // canto testing. -var DefaultConsensusParams = &abci.ConsensusParams{ - Block: &abci.BlockParams{ +var DefaultConsensusParams = &tmproto.ConsensusParams{ + Block: &tmproto.BlockParams{ MaxBytes: 200000, MaxGas: -1, // no limit }, @@ -49,7 +49,7 @@ var DefaultConsensusParams = &abci.ConsensusParams{ } func init() { - feemarkettypes.DefaultMinGasPrice = sdk.ZeroDec() + feemarkettypes.DefaultMinGasPrice = sdkmath.LegacyZeroDec() cfg := sdk.GetConfig() config.SetBech32Prefixes(cfg) config.SetBip44CoinType(cfg) @@ -61,7 +61,7 @@ func Setup( feemarketGenesis *feemarkettypes.GenesisState, ) *Canto { db := dbm.NewMemDB() - app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{}) + app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewDefaultGenesisState() @@ -81,7 +81,7 @@ func Setup( // Initialize the chain app.InitChain( - abci.RequestInitChain{ + &abci.RequestInitChain{ ChainId: types.MainnetChainID + "-1", Validators: []abci.ValidatorUpdate{}, ConsensusParams: DefaultConsensusParams, @@ -104,7 +104,7 @@ func SetupWithGenesisAccounts(genAccs []authtypes.GenesisAccount, balances ...ba totalSupply = totalSupply.Add(b.Coins...) } - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) stateBytes, err := json.MarshalIndent(genesisState, "", " ") @@ -113,7 +113,7 @@ func SetupWithGenesisAccounts(genAccs []authtypes.GenesisAccount, balances ...ba } app.InitChain( - abci.RequestInitChain{ + &abci.RequestInitChain{ ChainId: types.MainnetChainID + "-1", Validators: []abci.ValidatorUpdate{}, ConsensusParams: DefaultConsensusParams, diff --git a/app/tps_counter.go b/app/tps_counter.go index 410fee504..f8af29a52 100644 --- a/app/tps_counter.go +++ b/app/tps_counter.go @@ -6,7 +6,7 @@ import ( "sync/atomic" "time" - "github.com/tendermint/tendermint/libs/log" + "github.com/cometbft/cometbft/libs/log" "go.opencensus.io/stats" "go.opencensus.io/stats/view" "go.opencensus.io/tag" diff --git a/app/tps_counter_test.go b/app/tps_counter_test.go index 71a19abb7..4f4055f6d 100644 --- a/app/tps_counter_test.go +++ b/app/tps_counter_test.go @@ -11,8 +11,8 @@ import ( "testing" "time" + "github.com/cometbft/cometbft/libs/log" "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" ) func TestTPSCounter(t *testing.T) { diff --git a/app/upgrades/v2/upgrades.go b/app/upgrades/v2/upgrades.go index 55a3ae7e6..087a7c806 100644 --- a/app/upgrades/v2/upgrades.go +++ b/app/upgrades/v2/upgrades.go @@ -1,9 +1,11 @@ package v2 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v2 @@ -11,8 +13,9 @@ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrade", UpgradeName) + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrade", UpgradeName) // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index c09708e21..8b6c5e2cc 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -1,11 +1,11 @@ package v3 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - ) // CreateUpgradeHandler creates an SDK upgrade handler for v2 @@ -13,12 +13,12 @@ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrading to v3.0.0", UpgradeName) - + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrading to v3.0.0", UpgradeName) // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") return mm.RunMigrations(ctx, configurator, vm) } -} \ No newline at end of file +} diff --git a/app/upgrades/v4/upgrades.go b/app/upgrades/v4/upgrades.go index 55ce34f92..5cf8b4734 100644 --- a/app/upgrades/v4/upgrades.go +++ b/app/upgrades/v4/upgrades.go @@ -1,10 +1,12 @@ package v4 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" shuttleKeeper "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/ethereum/go-ethereum/common" ) @@ -14,11 +16,12 @@ func CreateUpgradeHandler( configurator module.Configurator, shuttlekeeper shuttleKeeper.Keeper, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrading to v4.0.0", UpgradeName) + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrading to v4.0.0", UpgradeName) // update address of map contract in keeper state - shuttlekeeper.SetPort(ctx, common.BytesToAddress(portAddr)) + shuttlekeeper.SetPort(sdkCtx, common.BytesToAddress(portAddr)) // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") return mm.RunMigrations(ctx, configurator, vm) diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 5e21f6a46..c9dfd3fdd 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -1,9 +1,11 @@ package v5 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v5 @@ -11,8 +13,9 @@ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrade", UpgradeName) + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrade", UpgradeName) // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index debb9681f..d658737b1 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -1,9 +1,11 @@ package v6 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v6 @@ -11,8 +13,9 @@ func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrade: ", UpgradeName) + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrade: ", UpgradeName) // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index edfa45ed0..19dd40271 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -1,9 +1,11 @@ package v7 import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" coinswapkeeper "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" coinswaptypes "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -18,8 +20,9 @@ func CreateUpgradeHandler( onboardingKeeper onboardingkeeper.Keeper, coinswapKeeper coinswapkeeper.Keeper, ) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - logger := ctx.Logger().With("upgrading to v7.0.0", UpgradeName) + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrading to v7.0.0", UpgradeName) newVM, err := mm.RunMigrations(ctx, configurator, vm) if err != nil { @@ -27,11 +30,11 @@ func CreateUpgradeHandler( } onboardingParams := onboardingtypes.DefaultParams() - onboardingKeeper.SetParams(ctx, onboardingParams) + onboardingKeeper.SetParams(sdkCtx, onboardingParams) coinswapParams := coinswaptypes.DefaultParams() - coinswapKeeper.SetParams(ctx, coinswapParams) - coinswapKeeper.SetStandardDenom(ctx, "acanto") + coinswapKeeper.SetParams(sdkCtx, coinswapParams) + coinswapKeeper.SetStandardDenom(sdkCtx, "acanto") // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index 6b579c30b..e7217ac7d 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -6,16 +6,16 @@ import ( "github.com/stretchr/testify/suite" + upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - abci "github.com/tendermint/tendermint/abci/types" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + abci "github.com/cometbft/cometbft/abci/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" chain "github.com/Canto-Network/Canto/v7/app" v7 "github.com/Canto-Network/Canto/v7/app/upgrades/v7" @@ -39,7 +39,7 @@ func (s *UpgradeTestSuite) SetupTest() { s.app = chain.Setup(false, feemarkettypes.DefaultGenesisState()) - s.ctx = s.app.BaseApp.NewContext(false, tmproto.Header{ + s.ctx = s.app.BaseApp.NewContextLegacy(false, tmproto.Header{ ChainID: "canto_9001-1", Height: 1, Time: time.Date(2023, 5, 9, 8, 0, 0, 0, time.UTC), @@ -48,10 +48,12 @@ func (s *UpgradeTestSuite) SetupTest() { // Set Validator valAddr := sdk.ValAddress(s.consAddress.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, priv.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), priv.PubKey(), stakingtypes.Description{}) s.NoError(err) validator = stakingkeeper.TestingUpdateValidator(s.app.StakingKeeper, s.ctx, validator, true) - s.app.StakingKeeper.AfterValidatorCreated(s.ctx, validator.GetOperator()) + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + s.app.StakingKeeper.Hooks().AfterValidatorCreated(s.ctx, valbz) err = s.app.StakingKeeper.SetValidatorByConsAddr(s.ctx, validator) s.NoError(err) @@ -106,13 +108,15 @@ func (s *UpgradeTestSuite) TestUpgradeV7() { plan := upgradetypes.Plan{Name: v7.UpgradeName, Height: testUpgradeHeight} err := s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, plan) s.Require().NoError(err) - _, exists := s.app.UpgradeKeeper.GetUpgradePlan(s.ctx) - s.Require().True(exists) + _, err = s.app.UpgradeKeeper.GetUpgradePlan(s.ctx) + s.Require().NoError(err) s.ctx = s.ctx.WithBlockHeight(testUpgradeHeight) s.Require().NotPanics(func() { s.ctx.WithProposer(s.consAddress) - s.app.BeginBlocker(s.ctx, abci.RequestBeginBlock{}) + s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: s.app.LastBlockHeight() + 1, + }) }) tc.after() diff --git a/cmd/cantod/cmd_test.go b/cmd/cantod/cmd_test.go index fdb80311c..d2769b8f2 100644 --- a/cmd/cantod/cmd_test.go +++ b/cmd/cantod/cmd_test.go @@ -22,7 +22,7 @@ func TestInitCmd(t *testing.T) { fmt.Sprintf("--%s=%s", flags.FlagChainID, "canto_9000-1"), }) - err := svrcmd.Execute(rootCmd, app.DefaultNodeHome) + err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome) require.NoError(t, err) } @@ -35,6 +35,6 @@ func TestAddKeyLedgerCmd(t *testing.T) { fmt.Sprintf("--%s", flags.FlagUseLedger), }) - err := svrcmd.Execute(rootCmd, app.DefaultNodeHome) + err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome) require.Error(t, err) } diff --git a/cmd/cantod/init.go b/cmd/cantod/init.go index ff8fc8f5a..9a36357e7 100644 --- a/cmd/cantod/init.go +++ b/cmd/cantod/init.go @@ -12,11 +12,11 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - cfg "github.com/tendermint/tendermint/config" - "github.com/tendermint/tendermint/libs/cli" - tmos "github.com/tendermint/tendermint/libs/os" - tmrand "github.com/tendermint/tendermint/libs/rand" - "github.com/tendermint/tendermint/types" + cfg "github.com/cometbft/cometbft/config" + "github.com/cometbft/cometbft/libs/cli" + tmos "github.com/cometbft/cometbft/libs/os" + tmrand "github.com/cometbft/cometbft/libs/rand" + "github.com/cometbft/cometbft/types" "github.com/cosmos/go-bip39" diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index e017b5b7a..b24283e7c 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -7,16 +7,17 @@ import ( "os" "path/filepath" - "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/cosmos/cosmos-sdk/snapshots" + "cosmossdk.io/simapp/params" + "cosmossdk.io/store/snapshots" "github.com/spf13/cast" "github.com/spf13/cobra" - tmcli "github.com/tendermint/tendermint/libs/cli" - "github.com/tendermint/tendermint/libs/log" - dbm "github.com/tendermint/tm-db" + tmcli "github.com/cometbft/cometbft/libs/cli" + "github.com/cometbft/cometbft/libs/log" + dbm "github.com/cosmos/cosmos-db" + "cosmossdk.io/store" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" @@ -24,7 +25,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/rpc" sdkserver "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -52,13 +52,13 @@ const ( func NewRootCmd() (*cobra.Command, params.EncodingConfig) { encodingConfig := encoding.MakeConfig(app.ModuleBasics) initClientCtx := client.Context{}. - WithCodec(encodingConfig.Marshaler). + WithCodec(encodingConfig.Codec). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxConfig(encodingConfig.TxConfig). WithLegacyAmino(encodingConfig.Amino). WithInput(os.Stdin). WithAccountRetriever(types.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). + WithBroadcastMode(flags.BroadcastSync). WithHomeDir(app.DefaultNodeHome). WithKeyringOptions(cantokr.Option()). WithViper(EnvPrefix) diff --git a/cmd/cantod/testnet.go b/cmd/cantod/testnet.go index fd9606c38..abda3e712 100644 --- a/cmd/cantod/testnet.go +++ b/cmd/cantod/testnet.go @@ -12,12 +12,13 @@ import ( "github.com/ethereum/go-ethereum/common" + tmconfig "github.com/cometbft/cometbft/config" + tmrand "github.com/cometbft/cometbft/libs/rand" + "github.com/cometbft/cometbft/types" + tmtime "github.com/cometbft/cometbft/types/time" "github.com/spf13/cobra" - tmconfig "github.com/tendermint/tendermint/config" - tmrand "github.com/tendermint/tendermint/libs/rand" - "github.com/tendermint/tendermint/types" - tmtime "github.com/tendermint/tendermint/types/time" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" @@ -305,12 +306,12 @@ func initTestnetFiles( valTokens := sdk.TokensFromConsensusPower(100, ethermint.PowerReduction) createValMsg, err := stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(addr), + sdk.ValAddress(addr).String(), valPubKeys[i], sdk.NewCoin(cmdcfg.BaseDenom, valTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), - stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()), - sdk.OneInt(), + stakingtypes.NewCommissionRates(sdkmath.LegacyOneDec(), sdkmath.LegacyOneDec(), sdkmath.LegacyOneDec()), + sdkmath.OneInt(), ) if err != nil { return err diff --git a/cmd/config/config.go b/cmd/config/config.go index 0a84f6e06..41ed8a422 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -1,6 +1,7 @@ package config import ( + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" ethermint "github.com/evmos/ethermint/types" @@ -48,11 +49,11 @@ func SetBip44CoinType(config *sdk.Config) { // RegisterDenoms registers the base and display denominations to the SDK. func RegisterDenoms() { - if err := sdk.RegisterDenom(DisplayDenom, sdk.OneDec()); err != nil { + if err := sdk.RegisterDenom(DisplayDenom, sdkmath.LegacyOneDec()); err != nil { panic(err) } - if err := sdk.RegisterDenom(BaseDenom, sdk.NewDecWithPrec(1, ethermint.BaseDenomUnit)); err != nil { + if err := sdk.RegisterDenom(BaseDenom, sdkmath.LegacyNewDecWithPrec(1, ethermint.BaseDenomUnit)); err != nil { panic(err) } } diff --git a/go.mod b/go.mod index dbb862609..e47330b17 100644 --- a/go.mod +++ b/go.mod @@ -1,168 +1,237 @@ module github.com/Canto-Network/Canto/v7 -go 1.18 +go 1.21 + +toolchain go1.21.4 require ( + cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced + cosmossdk.io/store v1.0.0 + cosmossdk.io/x/evidence v0.1.0 + cosmossdk.io/x/feegrant v0.1.0 + cosmossdk.io/x/upgrade v0.1.0 github.com/armon/go-metrics v0.4.0 - github.com/cosmos/cosmos-sdk v0.45.9 + github.com/cometbft/cometbft v0.38.0 + github.com/cosmos/cosmos-db v1.0.0 + github.com/cosmos/cosmos-sdk v0.50.1 github.com/cosmos/go-bip39 v1.0.0 - github.com/ethereum/go-ethereum v1.10.19 - github.com/gogo/protobuf v1.3.3 + github.com/cosmos/ibc-go/modules/capability v1.0.0 + github.com/cosmos/ibc-go/v8 v8.0.0 + github.com/ethereum/go-ethereum v1.10.26 + github.com/evmos/ethermint v0.19.3 + github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.3 - github.com/gorilla/mux v1.8.0 + github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/onsi/ginkgo/v2 v2.1.4 - github.com/onsi/gomega v1.20.0 + github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/gomega v1.27.6 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 - github.com/spf13/cast v1.5.0 - github.com/spf13/cobra v1.6.0 - github.com/stretchr/testify v1.8.1 - github.com/tendermint/tendermint v0.34.25 - github.com/tendermint/tm-db v0.6.7 + github.com/spf13/cast v1.5.1 + github.com/spf13/cobra v1.7.0 + github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 - google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 - google.golang.org/grpc v1.53.0 - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 + google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a + google.golang.org/grpc v1.59.0 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - github.com/cosmos/ibc-go/v3 v3.2.0 - github.com/evmos/ethermint v0.19.3 -) - -require ( - github.com/btcsuite/btcd v0.22.1 // indirect - github.com/cenkalti/backoff/v4 v4.1.1 // indirect - github.com/danieljoos/wincred v1.0.2 // indirect - github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/go-ole/go-ole v1.2.5 // indirect - github.com/google/go-cmp v0.5.9 // indirect + cloud.google.com/go v0.110.8 // indirect + cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.3 // indirect + cloud.google.com/go/storage v1.30.1 // indirect + cosmossdk.io/api v0.7.2 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.1 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/core v0.11.0 // indirect + cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/log v1.2.1 // indirect + cosmossdk.io/x/circuit v0.1.0 // indirect + cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c // indirect + cosmossdk.io/x/tx v0.12.0 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/aws/aws-sdk-go v1.44.224 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bits-and-blooms/bitset v1.8.0 // indirect + github.com/btcsuite/btcd v0.23.4 // indirect + github.com/btcsuite/btcd/btcutil v1.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft-db v0.8.0 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/gogoproto v1.4.11 // indirect + github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/danieljoos/wincred v1.2.0 // indirect + github.com/emicklei/dot v1.6.0 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/getsentry/sentry-go v0.25.0 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/mock v1.6.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 // indirect + github.com/google/s2a-go v0.1.4 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-metrics v0.5.1 // indirect + github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/linxGnu/grocksdb v1.8.4 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/stretchr/objx v0.5.0 // indirect - github.com/tklauser/go-sysconf v0.3.5 // indirect - github.com/tklauser/numcpus v0.2.2 // indirect + github.com/tidwall/btree v1.7.0 // indirect + github.com/tidwall/gjson v1.14.4 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/sjson v1.2.5 // indirect + github.com/tklauser/go-sysconf v0.3.10 // indirect + github.com/tklauser/numcpus v0.4.0 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + golang.org/x/oauth2 v0.12.0 // indirect + golang.org/x/tools v0.14.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.128.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect + gotest.tools/v3 v3.5.1 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) require ( - cosmossdk.io/errors v1.0.0-beta.7 - cosmossdk.io/math v1.0.0-beta.3 // indirect - filippo.io/edwards25519 v1.0.0-beta.2 // indirect - github.com/99designs/keyring v1.1.6 // indirect - github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/DataDog/zstd v1.4.8 // indirect + cosmossdk.io/errors v1.0.0 + cosmossdk.io/math v1.2.0 + filippo.io/edwards25519 v1.0.0 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/DataDog/zstd v1.5.5 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/VictoriaMetrics/fastcache v1.6.0 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect github.com/allegro/bigcache v1.2.1 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.2.1 // indirect + github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect - github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.0 // indirect - github.com/confio/ics23/go v0.7.0 // indirect - github.com/cosmos/btcutil v1.0.4 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.3 // indirect - github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect - github.com/cosmos/ledger-go v0.9.2 // indirect - github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/iavl v1.0.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set v1.8.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.3 // indirect - github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 // indirect github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf // indirect - github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect - github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect - github.com/go-stack/stack v1.8.0 // indirect + github.com/go-stack/stack v1.8.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.0.0 // indirect + github.com/golang/glog v1.1.2 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.0.1 // indirect + github.com/google/btree v1.1.2 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/gorilla/handlers v1.5.1 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.2.0 // indirect + github.com/holiman/uint256 v1.2.2 // indirect github.com/huin/goupnp v1.0.3 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect - github.com/klauspost/compress v1.15.11 // indirect - github.com/lib/pq v1.10.6 // indirect + github.com/klauspost/compress v1.17.2 // indirect + github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/magiconair/properties v1.8.6 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.5 // indirect - github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.12.2 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.34.0 // indirect - github.com/prometheus/procfs v0.8.0 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/prometheus/tsdb v0.10.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rjeczalik/notify v0.9.2 // indirect - github.com/rs/cors v1.8.2 // indirect - github.com/rs/zerolog v1.27.0 // indirect + github.com/rs/cors v1.10.0 // indirect + github.com/rs/zerolog v1.31.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/afero v1.9.5 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.13.0 // indirect - github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969 // indirect - github.com/subosito/gotenv v1.4.1 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - github.com/tendermint/btcd v0.1.1 // indirect - github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect + github.com/spf13/viper v1.16.0 // indirect + github.com/status-im/keycard-go v0.2.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/zondax/hid v0.9.0 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.4.0 // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e - golang.org/x/net v0.7.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + github.com/zondax/hid v0.9.2 // indirect + go.etcd.io/bbolt v1.3.7 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d + golang.org/x/net v0.17.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/term v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -170,10 +239,6 @@ require ( ) replace ( - github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/tendermint/tendermint => github.com/informalsystems/tendermint v0.34.25 - google.golang.org/grpc => google.golang.org/grpc v1.33.2 + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9 ) - -replace github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 diff --git a/go.sum b/go.sum index 70f0b1c06..ea6bafe1a 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= @@ -16,73 +17,237 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= -cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= -cosmossdk.io/math v1.0.0-beta.3 h1:TbZxSopz2LqjJ7aXYfn7nJSb8vNaBklW6BLpcei1qwM= -cosmossdk.io/math v1.0.0-beta.3/go.mod h1:3LYasri3Zna4XpbrTNdKsWmD5fHHkaNAod/mNT9XdE4= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.7.2 h1:BO3i5fvKMKvfaUiMkCznxViuBEfyWA/k6w2eAF6q1C4= +cosmossdk.io/api v0.7.2/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= +cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= +cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= +cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= +cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= +cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= +cosmossdk.io/log v1.2.1 h1:Xc1GgTCicniwmMiKwDxUjO4eLhPxoVdI9vtMW8Ti/uk= +cosmossdk.io/log v1.2.1/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= +cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= +cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced h1:l5rW4cKGOGyo2ZinzmuhleebC5OpMEv3qsabKyRXUV0= +cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced/go.mod h1:EdpAqccZXp8XnV2FFMCdEt+Xq+3pbzIb2KzGAyi6GGc= +cosmossdk.io/store v1.0.0 h1:6tnPgTpTSIskaTmw/4s5C9FARdgFflycIc9OX8i1tOI= +cosmossdk.io/store v1.0.0/go.mod h1:ABMprwjvx6IpMp8l06TwuMrj6694/QP5NIW+X6jaTYc= +cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= +cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= +cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= +cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= +cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= +cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= +cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c h1:EFBlwazEIqkvKV5L1JfQZ6lhUJF9cMguAqQk1xSmbfM= +cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c/go.mod h1:PELWSey8Y7pq8iSgqEav82APBbgMb/SDbbjyuP8tvWc= +cosmossdk.io/x/tx v0.12.0 h1:Ry2btjQdrfrje9qZ3iZeZSmDArjgxUJMMcLMrX4wj5U= +cosmossdk.io/x/tx v0.12.0/go.mod h1:qTth2coAGkwCwOCjqQ8EAQg+9udXNRzcnSbMgGKGEI0= +cosmossdk.io/x/upgrade v0.1.0 h1:z1ZZG4UL9ICTNbJDYZ6jOnF9GdEK9wyoEFi4BUScHXE= +cosmossdk.io/x/upgrade v0.1.0/go.mod h1:/6jjNGbiPCNtmA1N+rBtP601sr0g4ZXuj3yC6ClPCGY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= -filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= -github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.8 h1:Rpmta4xZ/MgZnriKNd24iZMhGpP5dvUcs/uqfBapKZY= -github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -96,7 +261,6 @@ github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2uc github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -105,34 +269,43 @@ github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= +github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9 h1:tLXpuGcKTwzOvr7Bp2ouQJBna4OxAcdAFhP4n64d3zs= +github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9/go.mod h1:2nnNbTeVHLe5bWkowE8XovYoW2WMWx2fnbUqYnfd7lU= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= -github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= -github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= +github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.2.1 h1:xP60mv8fvp+0khmrN0zTdPC3cNm24rfeE6lh2R/Yv3E= -github.com/btcsuite/btcd/btcec/v2 v2.2.1/go.mod h1:9/CSmJxmuvqzX9Wh2fXMWToLOHhPd11lSPuIupwTkI8= -github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= +github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= +github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= +github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= +github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -140,208 +313,282 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb h1:6Po+YYKT5B5ZXN0wd2rwFBaebM0LufPf8p4zxOd48Kg= +github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb/go.mod h1:acMRUGd/BK8AUmQNK3spUCCGzFLZU2bSST3NMXSq2Kc= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go v0.7.0 h1:lmTO/JEpCvZgpbkOITL95rA80CPKb5CtMzLaqF2mCNg= -github.com/coinbase/rosetta-sdk-go v0.7.0/go.mod h1:7nD3oBPIiHqhRprqvMgPoGxe/nyq3yftRmpsy29coWE= +github.com/cometbft/cometbft v0.38.0 h1:ogKnpiPX7gxCvqTEF4ly25/wAxUqf181t30P3vqdpdc= +github.com/cometbft/cometbft v0.38.0/go.mod h1:5Jz0Z8YsHSf0ZaAqGvi/ifioSdVFPtEGrm8Y9T/993k= +github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= +github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= -github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= -github.com/cosmos/cosmos-sdk v0.45.9 h1:Z4s1EZL/mfM8uSSZr8WmyEbWp4hqbWVI5sAIFR432KY= -github.com/cosmos/cosmos-sdk v0.45.9/go.mod h1:Z5M4TX7PsHNHlF/1XanI2DIpORQ+Q/st7oaeufEjnvU= -github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 h1:iKclrn3YEOwk4jQHT2ulgzuXyxmzmPczUalMwW4XH9k= -github.com/cosmos/cosmos-sdk/ics23/go v0.8.0/go.mod h1:2a4dBq88TUoqoWAU5eu0lGvpFP3wWDPgdHPargtyw30= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0E= +github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= +github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= +github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= +github.com/cosmos/cosmos-sdk v0.50.1 h1:2SYwAYqd7ZwtrWxu/J8PwbQV/cDcu90bCr/a78g3lVw= +github.com/cosmos/cosmos-sdk v0.50.1/go.mod h1:fsLSPGstCwn6MMsFDMAQWGJj8E4sYsN9Gnu1bGE5imA= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.3 h1:cESO0OwTTxQm5rmyESKW+zESheDUYI7CcZDWWDwnuxg= -github.com/cosmos/iavl v0.19.3/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v3 v3.2.0 h1:Mh+RWo5FHPMM1Xsrar3uwKufdEGdIp5LDkVk9cYKYYA= -github.com/cosmos/ibc-go/v3 v3.2.0/go.mod h1:DrDYXJjWNwgv72cK1Il+BegtyGIDXcx+cnJwWGzve6o= -github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= -github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= -github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= -github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= -github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= -github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= +github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= +github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= +github.com/cosmos/iavl v1.0.0 h1:bw6t0Mv/mVCJvlMTOPHWLs5uUE3BRBfVWCRelOzl+so= +github.com/cosmos/iavl v1.0.0/go.mod h1:CmTGqMnRnucjxbjduneZXT+0vPgNElYvdefjX2q9tYc= +github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= +github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= +github.com/cosmos/ibc-go/v8 v8.0.0 h1:QKipnr/NGwc+9L7NZipURvmSIu+nw9jOIWTJuDBqOhg= +github.com/cosmos/ibc-go/v8 v8.0.0/go.mod h1:C6IiJom0F3cIQCD5fKwVPDrDK9j/xTu563AWuOmXois= +github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= -github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= +github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= +github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/badger/v2 v2.2007.3 h1:Sl9tQWz92WCbVSe8pj04Tkqlm2boW+KAxd+XSs58SQI= -github.com/dgraph-io/badger/v2 v2.2007.3/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= -github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 h1:Izz0+t1Z5nI16/II7vuEo/nHjodOg0p7+OiDpjX5t1E= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf h1:Yt+4K30SdjOkRoRRm3vYNQgR+/ZIy0RmeUDZo7Y8zeQ= github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emicklei/dot v1.6.0 h1:vUzuoVE8ipzS7QkES4UfxdpCwdU2U97m2Pb2tQCoYRY= +github.com/emicklei/dot v1.6.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= -github.com/ethereum/go-ethereum v1.10.19 h1:EOR5JbL4MD5yeOqv8W2iC1s4NximrTjqFccUz8lyBRA= -github.com/ethereum/go-ethereum v1.10.19/go.mod h1:IJBNMtzKcNHPtllYihy6BL2IgK1u+32JriaTbdt4v+w= -github.com/evmos/ethermint v0.19.3 h1:Tc2tIiEK9b+rp1a0aWfzzggRDgecLa8gOHyXT3tH/1A= -github.com/evmos/ethermint v0.19.3/go.mod h1:2A25AF6mes32UL6j+r0wT0FnbzN7tzGYp2URxy+ZNmY= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= +github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= +github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= -github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -358,19 +605,19 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -382,15 +629,23 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -403,108 +658,146 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 h1:CqYfpuYIjnlNxM3msdyPRKabhXZWbKjf3Q8BWROFBso= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= -github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.1 h1:rfPwUqFU6uZXNvGl4hzjY8LEBsqFVU4si1H9/Hqck/U= +github.com/hashicorp/go-metrics v0.5.1/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= +github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.2 h1:TXKcSGc2WaxPD2+bmzAsVthL4+pEN0YwXcL5qED83vk= +github.com/holiman/uint256 v1.2.2/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= -github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/informalsystems/tendermint v0.34.25 h1:KlTF1ECfJI2KmM1w1YGai5hoLJ0ZOKjVwGAaElEBPtE= -github.com/informalsystems/tendermint v0.34.25/go.mod h1:TCGT4eRe5OW979YKVTpFOM57B4YkN+7FSDWpsgzAGwY= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -515,92 +808,91 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/linxGnu/grocksdb v1.8.4 h1:ZMsBpPpJNtRLHiKKp0mI7gW+NT4s7UgfD5xHxx1jVRo= +github.com/linxGnu/grocksdb v1.8.4/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miguelmota/go-ethereum-hdwallet v0.1.1 h1:zdXGlHao7idpCBjEGTXThVAtMKs+IxAgivZ75xqkWK0= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -614,8 +906,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= @@ -623,34 +913,45 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= -github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -660,33 +961,33 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= -github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= +github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -694,39 +995,32 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= -github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic= github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= @@ -736,33 +1030,30 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= -github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= -github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= +github.com/rs/cors v1.10.0 h1:62NOS1h+r8p1mW6FM0FSB0exioXLhd/sh15KpjWBZ+8= +github.com/rs/cors v1.10.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= +github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -771,6 +1062,7 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -779,15 +1071,15 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= -github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -796,19 +1088,15 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= -github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969 h1:Oo2KZNP70KE0+IUJSidPj/BFS/RXNHmKIJOdckzml2E= -github.com/status-im/keycard-go v0.0.0-20200402102358-957c09536969/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= -github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -819,60 +1107,68 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= -github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= -github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= -github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= +github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= -github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y= +github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= -github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -882,41 +1178,42 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= -golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -925,10 +1222,11 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -939,23 +1237,25 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -990,19 +1290,33 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1012,8 +1326,24 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= +golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1025,9 +1355,13 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1046,7 +1380,6 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1078,52 +1411,89 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1140,6 +1510,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1148,7 +1519,6 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1169,19 +1539,31 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1202,12 +1584,45 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -1231,7 +1646,6 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1250,11 +1664,124 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 h1:znp6mq/drrY+6khTAlJUDNFFcDGV2ENLYKpMq8SyCds= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a h1:myvhA4is3vrit1a6NZCWBIwN0kNEnX21DJOJX/NvIfI= +google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1267,15 +1794,20 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= @@ -1283,12 +1815,9 @@ gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1304,7 +1833,9 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1315,9 +1846,12 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/ibc/module.go b/ibc/module.go index 6478f1ef3..f6af6f18a 100644 --- a/ibc/module.go +++ b/ibc/module.go @@ -2,11 +2,11 @@ package ibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ) var _ porttypes.IBCModule = &Module{} diff --git a/ibc/module_test.go b/ibc/module_test.go index 5c6e3dc14..14caee843 100644 --- a/ibc/module_test.go +++ b/ibc/module_test.go @@ -7,12 +7,12 @@ import ( "github.com/stretchr/testify/require" sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ) var _ porttypes.IBCModule = &MockIBCModule{} diff --git a/ibc/testing/app.go b/ibc/testing/app.go index ce1ef4b9a..5caaf4744 100644 --- a/ibc/testing/app.go +++ b/ibc/testing/app.go @@ -7,6 +7,8 @@ import ( "github.com/stretchr/testify/require" + "cosmossdk.io/log" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -15,21 +17,20 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" - "github.com/cosmos/ibc-go/v3/modules/core/keeper" - "github.com/cosmos/ibc-go/v3/testing/simapp" + "github.com/cosmos/ibc-go/v8/modules/core/keeper" + "github.com/cosmos/ibc-go/v8/testing/simapp" "github.com/evmos/ethermint/encoding" ethermint "github.com/evmos/ethermint/types" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmtypes "github.com/tendermint/tendermint/types" - dbm "github.com/tendermint/tm-db" + abci "github.com/cometbft/cometbft/abci/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmtypes "github.com/cometbft/cometbft/types" + dbm "github.com/cosmos/cosmos-db" cantoapp "github.com/Canto-Network/Canto/v7/app" ) @@ -72,7 +73,7 @@ func SetupTestingCantoApp() (TestingApp, map[string]json.RawMessage) { return app, cantoapp.NewDefaultGenesisState() } -func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, powerReduction sdk.Int, balances ...banktypes.Balance) TestingApp { +func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, powerReduction sdkmath.Int, balances ...banktypes.Balance) TestingApp { app, genesisState := DefaultTestingAppInit() // set genesis accounts @@ -95,16 +96,16 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs Jailed: false, Status: stakingtypes.Bonded, Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), + DelegatorShares: sdkmath.LegacyOneDec(), Description: stakingtypes.Description{}, UnbondingHeight: int64(0), UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), - MinSelfDelegation: sdk.ZeroInt(), + Commission: stakingtypes.NewCommission(sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec()), + MinSelfDelegation: sdkmath.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), val.Address.String(), sdkmath.LegacyOneDec())) } // set validators and delegations @@ -118,7 +119,7 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // add bonded amount to bonded pool module account balances = append(balances, banktypes.Balance{ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), - Coins: sdk.Coins{sdk.NewCoin(bondDenom, bondAmt.Mul(sdk.NewInt(int64(len(valSet.Validators)))))}, + Coins: sdk.Coins{sdk.NewCoin(bondDenom, bondAmt.Mul(sdkmath.NewInt(int64(len(valSet.Validators)))))}, }) // set validators and delegations @@ -185,15 +186,15 @@ func SetupWithGenesisValSetCanto(t *testing.T, valSet *tmtypes.ValidatorSet, gen Jailed: false, Status: stakingtypes.Bonded, Tokens: bondAmt, - DelegatorShares: sdk.OneDec(), + DelegatorShares: sdkmath.LegacyOneDec(), Description: stakingtypes.Description{}, UnbondingHeight: int64(0), UnbondingTime: time.Unix(0, 0).UTC(), - Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()), - MinSelfDelegation: sdk.ZeroInt(), + Commission: stakingtypes.NewCommission(sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec(), sdkmath.LegacyZeroDec()), + MinSelfDelegation: sdkmath.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdk.OneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdkmath.LegacyOneDec())) } // set validators and delegations diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go index a974d4923..3044bf911 100644 --- a/ibc/testing/chain.go +++ b/ibc/testing/chain.go @@ -8,37 +8,36 @@ import ( "github.com/stretchr/testify/require" + errorsmod "cosmossdk.io/errors" bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - "github.com/cosmos/cosmos-sdk/x/staking/teststaking" + stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - commitmenttypes "github.com/cosmos/ibc-go/v3/modules/core/23-commitment/types" - host "github.com/cosmos/ibc-go/v3/modules/core/24-host" - "github.com/cosmos/ibc-go/v3/modules/core/exported" - "github.com/cosmos/ibc-go/v3/modules/core/types" - ibctmtypes "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types" - "github.com/cosmos/ibc-go/v3/testing/mock" - "github.com/cosmos/ibc-go/v3/testing/simapp" - "github.com/cosmos/ibc-go/v3/testing/simapp/helpers" - - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmprotoversion "github.com/tendermint/tendermint/proto/tendermint/version" - tmtypes "github.com/tendermint/tendermint/types" - tmversion "github.com/tendermint/tendermint/version" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + "github.com/cosmos/ibc-go/v8/modules/core/types" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v8/testing/mock" + "github.com/cosmos/ibc-go/v8/testing/simapp" + + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmprotoversion "github.com/cometbft/cometbft/proto/tendermint/version" + tmtypes "github.com/cometbft/cometbft/types" + tmversion "github.com/cometbft/cometbft/version" "github.com/ethereum/go-ethereum/common" @@ -108,7 +107,7 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va for i := 0; i < MaxAccounts; i++ { senderPrivKey := secp256k1.GenPrivKey() acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), uint64(i), 0) - amount, ok := sdk.NewIntFromString("10000000000000000000") + amount, ok := sdkmath.NewIntFromString("10000000000000000000") require.True(t, ok) balance := banktypes.Balance{ @@ -266,7 +265,7 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh // GetContext returns the current context for the application. func (chain *TestChain) GetContext() sdk.Context { - return chain.App.GetBaseApp().NewContext(false, chain.CurrentHeader) + return chain.App.GetBaseApp().NewContextLegacy(false, chain.CurrentHeader) } // GetSimApp returns the SimApp to allow usage ofnon-interface fields. @@ -288,12 +287,13 @@ func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height) { // QueryProof performs an abci query with the given key and returns the proto encoded merkle proof // for the query and the height at which the proof will succeed on a tendermint verifier. func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, clienttypes.Height) { - res := chain.App.Query(abci.RequestQuery{ + res, err := chain.App.Query(abci.RequestQuery{ Path: fmt.Sprintf("store/%s/key", host.StoreKey), Height: height - 1, Data: key, Prove: true, }) + require.NoError(chain.T, err) merkleProof, err := commitmenttypes.ConvertProofs(res.ProofOps) require.NoError(chain.T, err) @@ -434,7 +434,7 @@ func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bo valSet := stakingtypes.Validators(histInfo.Valset) - tmValidators, err := teststaking.ToTmValidators(valSet, sdk.DefaultPowerReduction) + tmValidators, err := stakingtestutil.ToCmtValidators(valSet, sdk.DefaultPowerReduction) if err != nil { panic(err) } @@ -485,7 +485,7 @@ func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterpa // NextValidatorsHash tmTrustedVals, ok = counterparty.GetValsAtHeight(int64(trustedHeight.RevisionHeight + 1)) if !ok { - return nil, sdkerrors.Wrapf(ibctmtypes.ErrInvalidHeaderHeight, "could not retrieve trusted validators at trustedHeight: %d", trustedHeight) + return nil, errorsmod.Wrapf(ibctmtypes.ErrInvalidHeaderHeight, "could not retrieve trusted validators at trustedHeight: %d", trustedHeight) } } // inject trusted fields into last header diff --git a/ibc/testing/config.go b/ibc/testing/config.go index a47dea170..cdccbce06 100644 --- a/ibc/testing/config.go +++ b/ibc/testing/config.go @@ -3,11 +3,11 @@ package ibctesting import ( "time" - connectiontypes "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" - ibctmtypes "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types" - "github.com/cosmos/ibc-go/v3/testing/mock" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v8/testing/mock" ) type ClientConfig interface { @@ -15,7 +15,7 @@ type ClientConfig interface { } type TendermintConfig struct { - TrustLevel ibctmtypes.Fraction + TrustLevel ibctm.Fraction TrustingPeriod time.Duration UnbondingPeriod time.Duration MaxClockDrift time.Duration diff --git a/ibc/testing/coordinator.go b/ibc/testing/coordinator.go index 4f02e28b7..6facea07f 100644 --- a/ibc/testing/coordinator.go +++ b/ibc/testing/coordinator.go @@ -6,8 +6,8 @@ import ( "testing" "time" + abci "github.com/cometbft/cometbft/abci/types" "github.com/stretchr/testify/require" - abci "github.com/tendermint/tendermint/abci/types" ) var ( diff --git a/ibc/testing/endpoint.go b/ibc/testing/endpoint.go index 607f7a168..c025200a1 100644 --- a/ibc/testing/endpoint.go +++ b/ibc/testing/endpoint.go @@ -6,13 +6,13 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - connectiontypes "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - commitmenttypes "github.com/cosmos/ibc-go/v3/modules/core/23-commitment/types" - host "github.com/cosmos/ibc-go/v3/modules/core/24-host" - "github.com/cosmos/ibc-go/v3/modules/core/exported" - ibctmtypes "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + host "github.com/cosmos/ibc-go/v8/modules/core/24-host" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" ) // Endpoint is a which represents a channel endpoint and its associated @@ -91,7 +91,7 @@ func (endpoint *Endpoint) CreateClient() (err error) { require.True(endpoint.Chain.T, ok) height := endpoint.Counterparty.Chain.LastHeader.GetHeight().(clienttypes.Height) - clientState = ibctmtypes.NewClientState( + clientState = ibctm.NewClientState( endpoint.Counterparty.Chain.ChainID, tmConfig.TrustLevel, tmConfig.TrustingPeriod, tmConfig.UnbondingPeriod, tmConfig.MaxClockDrift, height, commitmenttypes.GetSDKSpecs(), UpgradePath, tmConfig.AllowUpdateAfterExpiry, tmConfig.AllowUpdateAfterMisbehaviour, ) diff --git a/ibc/testing/events.go b/ibc/testing/events.go index 7828b4261..f561dd8fd 100644 --- a/ibc/testing/events.go +++ b/ibc/testing/events.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - connectiontypes "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) // ParseClientIDFromEvents parses events emitted from a MsgCreateClient and returns the diff --git a/ibc/testing/path.go b/ibc/testing/path.go index 731d3cd5e..b79a838d8 100644 --- a/ibc/testing/path.go +++ b/ibc/testing/path.go @@ -4,7 +4,7 @@ import ( "bytes" "fmt" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) // Path contains two endpoints representing two chains connected over IBC diff --git a/ibc/testing/sdk_test.go b/ibc/testing/sdk_test.go index eefe7ddf5..c99668566 100644 --- a/ibc/testing/sdk_test.go +++ b/ibc/testing/sdk_test.go @@ -8,6 +8,7 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/hd" @@ -15,23 +16,20 @@ import ( kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" - storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/testutil" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" txtypes "github.com/cosmos/cosmos-sdk/types/tx" authcli "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - authrest "github.com/cosmos/cosmos-sdk/x/auth/client/rest" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - ibcclientcli "github.com/cosmos/ibc-go/v3/modules/core/02-client/client/cli" - "github.com/cosmos/ibc-go/v3/testing/simapp" - "github.com/cosmos/ibc-go/v3/testing/simapp/params" + ibcclientcli "github.com/cosmos/ibc-go/v8/modules/core/02-client/client/cli" + "github.com/cosmos/ibc-go/v8/testing/simapp" + "github.com/cosmos/ibc-go/v8/testing/simapp/params" - tmrand "github.com/tendermint/tendermint/libs/rand" - dbm "github.com/tendermint/tm-db" + tmrand "github.com/cometbft/cometbft/libs/rand" + dbm "github.com/cosmos/cosmos-db" ) /* @@ -171,7 +169,7 @@ func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { consensusJSON.Name(), // path to consensus json, fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), fmt.Sprintf("--%s=foobar", flags.FlagNote), @@ -186,7 +184,7 @@ func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { consensusJSON.Name(), // path to consensus json, fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), fmt.Sprintf("--%s=foobar", flags.FlagNote), @@ -238,10 +236,10 @@ func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.C for _, tc := range testCases { s.Run(fmt.Sprintf("Case %s", tc.desc), func() { - txJSON, err := rest.GetRequest(tc.url) + txJSON, err := testutil.GetRequest(tc.url) s.Require().NoError(err) - var errResp rest.ErrorResponse + var errResp testutil.ErrorResponse s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(txJSON, &errResp)) s.Require().Contains(errResp.Error, errMsg) @@ -249,7 +247,7 @@ func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.C } // try fetching the txn using gRPC req, it will fetch info since it has proto codec. - grpcJSON, err := rest.GetRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/%s", val.APIAddress, txRes.TxHash)) + grpcJSON, err := testutil.GetRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/%s", val.APIAddress, txRes.TxHash)) s.Require().NoError(err) var getTxRes txtypes.GetTxResponse @@ -268,14 +266,14 @@ func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.C out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, authcli.GetEncodeCommand(), []string{txFileName}) s.Require().NoError(err) - bz, err := val.ClientCtx.LegacyAmino.MarshalJSON(authrest.DecodeReq{Tx: string(out.Bytes())}) + bz, err := val.ClientCtx.LegacyAmino.MarshalJSON(authtestutil.DecodeReq{Tx: string(out.Bytes())}) s.Require().NoError(err) // try to decode the txn using legacy rest, it fails. - res, err := rest.PostRequest(fmt.Sprintf("%s/txs/decode", val.APIAddress), "application/json", bz) + res, err := testutil.PostRequest(fmt.Sprintf("%s/txs/decode", val.APIAddress), "application/json", bz) s.Require().NoError(err) - var errResp rest.ErrorResponse + var errResp testutil.ErrorResponse s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(res, &errResp)) s.Require().Contains(errResp.Error, errMsg) } diff --git a/ibc/testing/values.go b/ibc/testing/values.go index 6bdf782c6..f5d947277 100644 --- a/ibc/testing/values.go +++ b/ibc/testing/values.go @@ -1,6 +1,6 @@ /* - This file contains the variables, constants, and default values - used in the testing package and commonly defined in tests. +This file contains the variables, constants, and default values +used in the testing package and commonly defined in tests. */ package ibctesting @@ -9,11 +9,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - connectiontypes "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types" - commitmenttypes "github.com/cosmos/ibc-go/v3/modules/core/23-commitment/types" - ibctmtypes "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types" - "github.com/cosmos/ibc-go/v3/testing/mock" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v8/testing/mock" ) const ( @@ -45,8 +45,8 @@ var ( DefaultOpenInitVersion *connectiontypes.Version // Default params variables used to create a TM client - DefaultTrustLevel ibctmtypes.Fraction = ibctmtypes.DefaultTrustLevel - TestCoin = sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100)) + DefaultTrustLevel ibctm.Fraction = ibctm.DefaultTrustLevel + TestCoin = sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100)) UpgradePath = []string{"upgrade", "upgradedIBCState"} diff --git a/ibc/utils.go b/ibc/utils.go index 747a24669..239f76d4d 100644 --- a/ibc/utils.go +++ b/ibc/utils.go @@ -1,11 +1,13 @@ package ibc import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" canto "github.com/Canto-Network/Canto/v7/types" ) @@ -24,21 +26,21 @@ func GetTransferSenderRecipient(packet channeltypes.Packet) ( // unmarshal packet data to obtain the sender and recipient var data transfertypes.FungibleTokenPacketData if err := transfertypes.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil { - return nil, nil, "", "", sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet data") + return nil, nil, "", "", errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet data") } // validate the sender bech32 address from the counterparty chain // and change the bech32 human readable prefix (HRP) of the sender to `canto` sender, err = canto.GetcantoAddressFromBech32(data.Sender) if err != nil { - return nil, nil, "", "", sdkerrors.Wrap(err, "invalid sender") + return nil, nil, "", "", errorsmod.Wrap(err, "invalid sender") } // validate the recipient bech32 address from the counterparty chain // and change the bech32 human readable prefix (HRP) of the recipient to `canto` recipient, err = canto.GetcantoAddressFromBech32(data.Receiver) if err != nil { - return nil, nil, "", "", sdkerrors.Wrap(err, "invalid recipient") + return nil, nil, "", "", errorsmod.Wrap(err, "invalid recipient") } return sender, recipient, data.Sender, data.Receiver, nil @@ -49,15 +51,15 @@ func GetTransferAmount(packet channeltypes.Packet) (string, error) { // unmarshal packet data to obtain the sender and recipient var data transfertypes.FungibleTokenPacketData if err := transfertypes.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil { - return "", sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet data") + return "", errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal ICS-20 transfer packet data") } if data.Amount == "" { - return "", sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "empty amount") + return "", errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "empty amount") } - if _, ok := sdk.NewIntFromString(data.Amount); !ok { - return "", sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "invalid amount") + if _, ok := sdkmath.NewIntFromString(data.Amount); !ok { + return "", errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid amount") } return data.Amount, nil @@ -70,7 +72,7 @@ func GetTransferAmount(packet channeltypes.Packet) (string, error) { // prefix path from the destination chain to the denom. func GetReceivedCoin(srcPort, srcChannel, dstPort, dstChannel, rawDenom, rawAmt string) sdk.Coin { // NOTE: Denom and amount are already validated - amount, _ := sdk.NewIntFromString(rawAmt) + amount, _ := sdkmath.NewIntFromString(rawAmt) if transfertypes.ReceiverChainIsSource(srcPort, srcChannel, rawDenom) { // remove prefix added by sender chain diff --git a/ibc/utils_test.go b/ibc/utils_test.go index 96ae5dea6..b0b344341 100644 --- a/ibc/utils_test.go +++ b/ibc/utils_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - ibctesting "github.com/cosmos/ibc-go/v3/testing" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v8/testing" ) func init() { diff --git a/proto/buf.yaml b/proto/buf.yaml index bda80539e..cb672e133 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,4 +1,9 @@ version: v1 +deps: + - buf.build/cosmos/cosmos-sdk + - buf.build/cosmos/cosmos-proto + - buf.build/cosmos/gogo-proto + - buf.build/googleapis/googleapis lint: use: - DEFAULT diff --git a/proto/canto/coinswap/v1/coinswap.proto b/proto/canto/coinswap/v1/coinswap.proto index 8b03ac88f..bd6d09938 100644 --- a/proto/canto/coinswap/v1/coinswap.proto +++ b/proto/canto/coinswap/v1/coinswap.proto @@ -37,7 +37,8 @@ message Params { option (gogoproto.goproto_stringer) = false; cosmos.base.v1beta1.Coin fee = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; @@ -45,12 +46,13 @@ message Params { [ (gogoproto.nullable) = false ]; string tax_rate = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; string max_standard_coin_per_pool = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; diff --git a/proto/canto/coinswap/v1/tx.proto b/proto/canto/coinswap/v1/tx.proto index 85744b982..6fc34e284 100644 --- a/proto/canto/coinswap/v1/tx.proto +++ b/proto/canto/coinswap/v1/tx.proto @@ -31,12 +31,12 @@ message MsgAddLiquidity { ]; string exact_standard_amt = 2 [ (gogoproto.moretags) = "yaml:\"exact_standard_amt\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string min_liquidity = 3 [ (gogoproto.moretags) = "yaml:\"min_liquidity\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; int64 deadline = 4; @@ -54,12 +54,12 @@ message MsgRemoveLiquidity { ]; string min_token = 2 [ (gogoproto.moretags) = "yaml:\"min_token\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string min_standard_amt = 3 [ (gogoproto.moretags) = "yaml:\"min_standard_amt\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; int64 deadline = 4; diff --git a/proto/canto/csr/v1/csr.proto b/proto/canto/csr/v1/csr.proto index 3f0616e9f..c677add00 100644 --- a/proto/canto/csr/v1/csr.proto +++ b/proto/canto/csr/v1/csr.proto @@ -16,7 +16,7 @@ message CSR { uint64 txs = 3; // The cumulative revenue for this CSR NFT -> represented as a sdk.Int string revenue = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } \ No newline at end of file diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index e34450494..b838c2500 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -42,7 +42,7 @@ message MsgConvertERC20 { string contract_address = 1; // amount of ERC20 tokens to convert string amount = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; // bech32 address to receive native Cosmos coins diff --git a/proto/canto/onboarding/v1/genesis.proto b/proto/canto/onboarding/v1/genesis.proto index 169230af9..7ace89fd2 100644 --- a/proto/canto/onboarding/v1/genesis.proto +++ b/proto/canto/onboarding/v1/genesis.proto @@ -18,7 +18,7 @@ message Params { bool enable_onboarding = 1; string auto_swap_threshold = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; repeated string whitelisted_channels = 4; diff --git a/testutil/network/network.go b/testutil/network/network.go index d1c7c20e3..62b2fb040 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -15,18 +15,23 @@ import ( "testing" "time" + tmcfg "github.com/cometbft/cometbft/config" + tmflags "github.com/cometbft/cometbft/libs/cli/flags" + "github.com/cometbft/cometbft/libs/log" + tmrand "github.com/cometbft/cometbft/libs/rand" + "github.com/cometbft/cometbft/node" + tmclient "github.com/cometbft/cometbft/rpc/client" + dbm "github.com/cosmos/cosmos-db" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" "github.com/spf13/cobra" - tmcfg "github.com/tendermint/tendermint/config" - tmflags "github.com/tendermint/tendermint/libs/cli/flags" - "github.com/tendermint/tendermint/libs/log" - tmrand "github.com/tendermint/tendermint/libs/rand" - "github.com/tendermint/tendermint/node" - tmclient "github.com/tendermint/tendermint/rpc/client" - dbm "github.com/tendermint/tm-db" "google.golang.org/grpc" + sdkmath "cosmossdk.io/math" + "cosmossdk.io/simapp" + "cosmossdk.io/simapp/params" + pruningtypes "cosmossdk.io/store/pruning/types" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" @@ -38,9 +43,6 @@ import ( "github.com/cosmos/cosmos-sdk/server/api" srvconfig "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" - "github.com/cosmos/cosmos-sdk/simapp/params" - storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -76,9 +78,9 @@ type Config struct { AppConstructor AppConstructor // the ABCI application constructor GenesisState simapp.GenesisState // custom gensis state to provide TimeoutCommit time.Duration // the consensus commitment timeout - AccountTokens sdk.Int // the amount of unique validator tokens (e.g. 1000node0) - StakingTokens sdk.Int // the amount of tokens each validator has available to stake - BondedTokens sdk.Int // the amount of tokens each validator stakes + AccountTokens sdkmath.Int // the amount of unique validator tokens (e.g. 1000node0) + StakingTokens sdkmath.Int // the amount of tokens each validator has available to stake + BondedTokens sdkmath.Int // the amount of tokens each validator stakes NumValidators int // the total number of validators to create and bond ChainID string // the network chain-id BondDenom string // the staking bond denomination @@ -100,13 +102,13 @@ func DefaultConfig() Config { encCfg := encoding.MakeConfig(app.ModuleBasics) return Config{ - Codec: encCfg.Marshaler, + Codec: encCfg.Codec, TxConfig: encCfg.TxConfig, LegacyAmino: encCfg.Amino, InterfaceRegistry: encCfg.InterfaceRegistry, AccountRetriever: authtypes.AccountRetriever{}, AppConstructor: NewAppConstructor(encCfg), - GenesisState: app.ModuleBasics.DefaultGenesis(encCfg.Marshaler), + GenesisState: app.ModuleBasics.DefaultGenesis(encCfg.Codec), TimeoutCommit: 2 * time.Second, ChainID: fmt.Sprintf("canto_%d-1", tmrand.Int63n(9999999999999)+1), NumValidators: 4, @@ -115,7 +117,7 @@ func DefaultConfig() Config { AccountTokens: sdk.TokensFromConsensusPower(1000, ethermint.PowerReduction), StakingTokens: sdk.TokensFromConsensusPower(500, ethermint.PowerReduction), BondedTokens: sdk.TokensFromConsensusPower(100, ethermint.PowerReduction), - PruningStrategy: storetypes.PruningOptionNothing, + PruningStrategy: pruningtypes.PruningOptionNothing, CleanupDir: true, SigningAlgo: string(hd.EthSecp256k1Type), KeyringOptions: []keyring.Option{hd.EthSecp256k1Option()}, @@ -417,18 +419,18 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { CodeHash: common.BytesToHash(evmtypes.EmptyCodeHash).Hex(), }) - commission, err := sdk.NewDecFromStr("0.5") + commission, err := sdkmath.LegacyNewDecFromStr("0.5") if err != nil { return nil, err } createValMsg, err := stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(addr), + sdk.ValAddress(addr).String(), valPubKeys[i], sdk.NewCoin(cfg.BondDenom, cfg.BondedTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), - stakingtypes.NewCommissionRates(commission, sdk.OneDec(), sdk.OneDec()), - sdk.OneInt(), + stakingtypes.NewCommissionRates(commission, sdkmath.LegacyOneDec(), sdkmath.LegacyOneDec()), + sdkmath.OneInt(), ) if err != nil { return nil, err @@ -440,7 +442,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { } memo := fmt.Sprintf("%s@%s:%s", nodeIDs[i], p2pURL.Hostname(), p2pURL.Port()) - fee := sdk.NewCoins(sdk.NewCoin(cfg.BondDenom, sdk.NewInt(0))) + fee := sdk.NewCoins(sdk.NewCoin(cfg.BondDenom, sdkmath.NewInt(0))) txBuilder := cfg.TxConfig.NewTxBuilder() err = txBuilder.SetMsgs(createValMsg) if err != nil { diff --git a/testutil/network/util.go b/testutil/network/util.go index 39ae9b97b..13b6cc6dc 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -6,15 +6,15 @@ import ( "path/filepath" "time" + tmos "github.com/cometbft/cometbft/libs/os" + "github.com/cometbft/cometbft/node" + "github.com/cometbft/cometbft/p2p" + pvm "github.com/cometbft/cometbft/privval" + "github.com/cometbft/cometbft/proxy" + "github.com/cometbft/cometbft/rpc/client/local" + "github.com/cometbft/cometbft/types" + tmtime "github.com/cometbft/cometbft/types/time" "github.com/ethereum/go-ethereum/ethclient" - tmos "github.com/tendermint/tendermint/libs/os" - "github.com/tendermint/tendermint/node" - "github.com/tendermint/tendermint/p2p" - pvm "github.com/tendermint/tendermint/privval" - "github.com/tendermint/tendermint/proxy" - "github.com/tendermint/tendermint/rpc/client/local" - "github.com/tendermint/tendermint/types" - tmtime "github.com/tendermint/tendermint/types/time" inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" "github.com/cosmos/cosmos-sdk/server/api" diff --git a/third_party/proto/cosmos/gov/v1beta1/gov.proto b/third_party/proto/cosmos/gov/v1beta1/gov.proto index 344b5ada1..75c31e562 100644 --- a/third_party/proto/cosmos/gov/v1beta1/gov.proto +++ b/third_party/proto/cosmos/gov/v1beta1/gov.proto @@ -115,11 +115,11 @@ enum ProposalStatus { message TallyResult { option (gogoproto.equal) = true; - string yes = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; - string abstain = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; - string no = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; + string yes = 1 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; + string abstain = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; + string no = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; string no_with_veto = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"no_with_veto\"" ]; diff --git a/third_party/proto/cosmos/staking/v1beta1/genesis.proto b/third_party/proto/cosmos/staking/v1beta1/genesis.proto index d1563dbc5..9fbb097e2 100644 --- a/third_party/proto/cosmos/staking/v1beta1/genesis.proto +++ b/third_party/proto/cosmos/staking/v1beta1/genesis.proto @@ -14,7 +14,7 @@ message GenesisState { // last_total_power tracks the total amounts of bonded tokens recorded during // the previous end block. bytes last_total_power = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"last_total_power\"", (gogoproto.nullable) = false ]; diff --git a/third_party/proto/cosmos/staking/v1beta1/staking.proto b/third_party/proto/cosmos/staking/v1beta1/staking.proto index 76e9599e2..bbac0717a 100644 --- a/third_party/proto/cosmos/staking/v1beta1/staking.proto +++ b/third_party/proto/cosmos/staking/v1beta1/staking.proto @@ -95,7 +95,7 @@ message Validator { // status is the validator status (bonded/unbonding/unbonded). BondStatus status = 4; // tokens define the delegated tokens (incl. self-delegation). - string tokens = 5 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; + string tokens = 5 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; // delegator_shares defines total shares issued to a validator's delegators. string delegator_shares = 6 [ (gogoproto.moretags) = "yaml:\"delegator_shares\"", @@ -114,7 +114,7 @@ message Validator { // min_self_delegation is the validator's self declared minimum self delegation. string min_self_delegation = 11 [ (gogoproto.moretags) = "yaml:\"min_self_delegation\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; } @@ -220,12 +220,12 @@ message UnbondingDelegationEntry { [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""]; // initial_balance defines the tokens initially scheduled to receive at completion. string initial_balance = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"initial_balance\"" ]; // balance defines the tokens to receive at completion. - string balance = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; + string balance = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; } // RedelegationEntry defines a redelegation object with relevant metadata. @@ -240,7 +240,7 @@ message RedelegationEntry { [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""]; // initial_balance defines the initial balance when redelegation started. string initial_balance = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"initial_balance\"" ]; @@ -302,7 +302,7 @@ message RedelegationEntryResponse { option (gogoproto.equal) = true; RedelegationEntry redelegation_entry = 1 [(gogoproto.nullable) = false]; - string balance = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; + string balance = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; } // RedelegationResponse is equivalent to a Redelegation except that its entries @@ -321,13 +321,13 @@ message Pool { option (gogoproto.description) = true; option (gogoproto.equal) = true; string not_bonded_tokens = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.jsontag) = "not_bonded_tokens", (gogoproto.nullable) = false ]; string bonded_tokens = 2 [ (gogoproto.jsontag) = "bonded_tokens", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"bonded_tokens\"" ]; diff --git a/third_party/proto/cosmos/staking/v1beta1/tx.proto b/third_party/proto/cosmos/staking/v1beta1/tx.proto index 7b05d89ee..8c45948c1 100644 --- a/third_party/proto/cosmos/staking/v1beta1/tx.proto +++ b/third_party/proto/cosmos/staking/v1beta1/tx.proto @@ -40,7 +40,7 @@ message MsgCreateValidator { Description description = 1 [(gogoproto.nullable) = false]; CommissionRates commission = 2 [(gogoproto.nullable) = false]; string min_self_delegation = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"min_self_delegation\"", (gogoproto.nullable) = false ]; @@ -70,7 +70,7 @@ message MsgEditValidator { (gogoproto.moretags) = "yaml:\"commission_rate\"" ]; string min_self_delegation = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"min_self_delegation\"" ]; } diff --git a/third_party/proto/ethermint/evm/v1/evm.proto b/third_party/proto/ethermint/evm/v1/evm.proto index b74b27aef..313dd56e4 100644 --- a/third_party/proto/ethermint/evm/v1/evm.proto +++ b/third_party/proto/ethermint/evm/v1/evm.proto @@ -34,13 +34,13 @@ message Params { message ChainConfig { // Homestead switch block (nil no fork, 0 = already homestead) string homestead_block = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"homestead_block\"" ]; // TheDAO hard-fork switch block (nil no fork) string dao_fork_block = 2 [ (gogoproto.customname) = "DAOForkBlock", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"dao_fork_block\"" ]; // Whether the nodes supports or opposes the DAO hard-fork @@ -52,7 +52,7 @@ message ChainConfig { // (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork) string eip150_block = 4 [ (gogoproto.customname) = "EIP150Block", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"eip150_block\"" ]; // EIP150 HF hash (needed for header only clients as only gas pricing changed) @@ -63,43 +63,43 @@ message ChainConfig { // EIP155Block HF block string eip155_block = 6 [ (gogoproto.customname) = "EIP155Block", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"eip155_block\"" ]; // EIP158 HF block string eip158_block = 7 [ (gogoproto.customname) = "EIP158Block", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"eip158_block\"" ]; // Byzantium switch block (nil no fork, 0 = already on byzantium) string byzantium_block = 8 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"byzantium_block\"" ]; // Constantinople switch block (nil no fork, 0 = already activated) string constantinople_block = 9 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"constantinople_block\"" ]; // Petersburg switch block (nil same as Constantinople) string petersburg_block = 10 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"petersburg_block\"" ]; // Istanbul switch block (nil no fork, 0 = already on istanbul) string istanbul_block = 11 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"istanbul_block\"" ]; // Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) string muir_glacier_block = 12 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"muir_glacier_block\"" ]; // Berlin switch block (nil = no fork, 0 = already on berlin) string berlin_block = 13 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"berlin_block\"" ]; // DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated @@ -107,17 +107,17 @@ message ChainConfig { reserved "yolo_v3_block", "ewasm_block", "catalyst_block"; // London switch block (nil = no fork, 0 = already on london) string london_block = 17 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"london_block\"" ]; // Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) string arrow_glacier_block = 18 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"arrow_glacier_block\"" ]; // EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge proceedings) string merge_fork_block = 19 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"merge_fork_block\"" ]; } diff --git a/third_party/proto/ethermint/evm/v1/query.proto b/third_party/proto/ethermint/evm/v1/query.proto index 537bc7cf6..22d9c2c44 100644 --- a/third_party/proto/ethermint/evm/v1/query.proto +++ b/third_party/proto/ethermint/evm/v1/query.proto @@ -285,5 +285,5 @@ message QueryBaseFeeRequest {} // BaseFeeResponse returns the EIP1559 base fee. message QueryBaseFeeResponse { string base_fee = 1 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; } diff --git a/third_party/proto/ethermint/evm/v1/tx.proto b/third_party/proto/ethermint/evm/v1/tx.proto index 9dc53f2fa..3cd6e119b 100644 --- a/third_party/proto/ethermint/evm/v1/tx.proto +++ b/third_party/proto/ethermint/evm/v1/tx.proto @@ -46,14 +46,14 @@ message LegacyTx { uint64 nonce = 1; // gas price defines the value for each gas unit string gas_price = 2 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; // gas defines the gas limit defined for the transaction. uint64 gas = 3 [ (gogoproto.customname) = "GasLimit" ]; // hex formatted address of the recipient string to = 4; // value defines the unsigned integer value of the transaction amount. string value = 5 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount" ]; // input defines the data payload bytes of the transaction. @@ -73,7 +73,7 @@ message AccessListTx { // destination EVM chain ID string chain_id = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "ChainID", (gogoproto.jsontag) = "chainID" ]; @@ -81,14 +81,14 @@ message AccessListTx { uint64 nonce = 2; // gas price defines the value for each gas unit string gas_price = 3 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; // gas defines the gas limit defined for the transaction. uint64 gas = 4 [ (gogoproto.customname) = "GasLimit" ]; // hex formatted address of the recipient string to = 5; // value defines the unsigned integer value of the transaction amount. string value = 6 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount" ]; // input defines the data payload bytes of the transaction. @@ -113,7 +113,7 @@ message DynamicFeeTx { // destination EVM chain ID string chain_id = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "ChainID", (gogoproto.jsontag) = "chainID" ]; @@ -121,17 +121,17 @@ message DynamicFeeTx { uint64 nonce = 2; // gas tip cap defines the max value for the gas tip string gas_tip_cap = 3 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; // gas fee cap defines the max value for the gas fee string gas_fee_cap = 4 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; // gas defines the gas limit defined for the transaction. uint64 gas = 5 [ (gogoproto.customname) = "GasLimit" ]; // hex formatted address of the recipient string to = 6; // value defines the the transaction amount. string value = 7 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount" ]; // input defines the data payload bytes of the transaction. diff --git a/third_party/proto/ethermint/feemarket/v1/feemarket.proto b/third_party/proto/ethermint/feemarket/v1/feemarket.proto index 8508ec715..3aef92f12 100644 --- a/third_party/proto/ethermint/feemarket/v1/feemarket.proto +++ b/third_party/proto/ethermint/feemarket/v1/feemarket.proto @@ -22,7 +22,7 @@ message Params { int64 enable_height = 5; // base fee for EIP-1559 blocks. string base_fee = 6 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; // min_gas_price defines the minimum gas price value for cosmos and eth transactions diff --git a/third_party/proto/ethermint/feemarket/v1/query.proto b/third_party/proto/ethermint/feemarket/v1/query.proto index f8b672b02..6006f833f 100644 --- a/third_party/proto/ethermint/feemarket/v1/query.proto +++ b/third_party/proto/ethermint/feemarket/v1/query.proto @@ -42,7 +42,7 @@ message QueryBaseFeeRequest {} // BaseFeeResponse returns the EIP1559 base fee. message QueryBaseFeeResponse { string base_fee = 1 - [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; } // QueryBlockGasRequest defines the request type for querying the EIP1559 base diff --git a/types/errors.go b/types/errors.go index 78f14abaa..04db4b073 100644 --- a/types/errors.go +++ b/types/errors.go @@ -1,7 +1,7 @@ package types import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // RootCodespace is the codespace for all errors defined in this package @@ -14,5 +14,5 @@ const ( // errors var ( - ErrKeyTypeNotSupported = sdkerrors.Register(RootCodespace, codeKeyTypeNotSupported, "key type 'secp256k1' not supported") + ErrKeyTypeNotSupported = errorsmod.Register(RootCodespace, codeKeyTypeNotSupported, "key type 'secp256k1' not supported") ) diff --git a/types/utils.go b/types/utils.go index cba30cb3f..930aa9704 100644 --- a/types/utils.go +++ b/types/utils.go @@ -5,6 +5,7 @@ import ( "github.com/evmos/ethermint/crypto/ethsecp256k1" + errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/crypto/types/multisig" @@ -64,12 +65,12 @@ func IsSupportedKey(pubkey cryptotypes.PubKey) bool { func GetcantoAddressFromBech32(address string) (sdk.AccAddress, error) { bech32Prefix := strings.SplitN(address, "1", 2)[0] if bech32Prefix == address { - return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid bech32 address: %s", address) + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid bech32 address: %s", address) } addressBz, err := sdk.GetFromBech32(address, bech32Prefix) if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address %s, %s", address, err.Error()) + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address %s, %s", address, err.Error()) } // safety check: shouldn't happen diff --git a/x/coinswap/client/cli/tx.go b/x/coinswap/client/cli/tx.go index f36fe5247..f221cda84 100644 --- a/x/coinswap/client/cli/tx.go +++ b/x/coinswap/client/cli/tx.go @@ -7,6 +7,7 @@ import ( "github.com/spf13/cobra" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" @@ -50,12 +51,12 @@ func GetAddLiquidityCmd() *cobra.Command { return fmt.Errorf("invalid coins: %w", err) } - standardCoinAmt, ok := sdk.NewIntFromString(args[1]) + standardCoinAmt, ok := sdkmath.NewIntFromString(args[1]) if !ok { return fmt.Errorf("invalid standard coin amount: %s", args[1]) } - minLiquidity, ok := sdk.NewIntFromString(args[2]) + minLiquidity, ok := sdkmath.NewIntFromString(args[2]) if !ok { return fmt.Errorf("invalid minimum liquidity: %s", args[2]) } @@ -89,7 +90,7 @@ func GetRemoveLiquidityCmd() *cobra.Command { return err } - minOutputCoin, ok := sdk.NewIntFromString(args[0]) + minOutputCoin, ok := sdkmath.NewIntFromString(args[0]) if !ok { return fmt.Errorf("invalid output coin amount: %s", args[1]) } @@ -99,7 +100,7 @@ func GetRemoveLiquidityCmd() *cobra.Command { return fmt.Errorf("invalid liquidity coin: %w", err) } - minOutputStandardCoin, ok := sdk.NewIntFromString(args[2]) + minOutputStandardCoin, ok := sdkmath.NewIntFromString(args[2]) if !ok { return fmt.Errorf("invalid output standard coin amount: %s", args[2]) } diff --git a/x/coinswap/client/rest/query.go b/x/coinswap/client/rest/query.go deleted file mode 100644 index d554c109e..000000000 --- a/x/coinswap/client/rest/query.go +++ /dev/null @@ -1,51 +0,0 @@ -package rest - -import ( - "fmt" - "net/http" - - "github.com/gorilla/mux" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/types/rest" - - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -func registerQueryRoutes(cliCtx client.Context, r *mux.Router) { - // query pool - r.HandleFunc(fmt.Sprintf("/%s/pools/{%s}", types.ModuleName, RestPoolID), queryPoolsHandlerFn(cliCtx)).Methods("GET") -} - -// HTTP request handler to query liquidity information. -func queryPoolsHandlerFn(cliCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - denom := vars[RestPoolID] - - cliCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, cliCtx, r) - if !ok { - return - } - - params := types.QueryPoolParams{ - LptDenom: denom, - } - - bz, err := cliCtx.LegacyAmino.MarshalJSON(params) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - route := fmt.Sprintf("custom/%s/%s", types.QuerierRoute, types.QueryPool) - res, height, err := cliCtx.QueryWithData(route, bz) - if err != nil { - rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) - return - } - - cliCtx = cliCtx.WithHeight(height) - rest.PostProcessResponse(w, cliCtx, res) - } -} diff --git a/x/coinswap/client/rest/rest.go b/x/coinswap/client/rest/rest.go deleted file mode 100644 index 452155750..000000000 --- a/x/coinswap/client/rest/rest.go +++ /dev/null @@ -1,63 +0,0 @@ -package rest - -import ( - "github.com/gorilla/mux" - - "github.com/cosmos/cosmos-sdk/client" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" -) - -// Rest variable names -// nolint -const ( - RestPoolID = "denom" -) - -// RegisterHandlers registers asset-related REST handlers to a router -func RegisterHandlers(cliCtx client.Context, r *mux.Router) { - registerQueryRoutes(cliCtx, r) - registerTxRoutes(cliCtx, r) -} - -// AddLiquidityReq defines the properties of a add liquidity request's body -type AddLiquidityReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - ID string `json:"id" yaml:"id"` // the unique liquidity id - MaxToken string `json:"max_token" yaml:"max_token"` // token to be deposited as liquidity with an upper bound for its amount - ExactStandardAmt string `json:"exact_standard_amt" yaml:"exact_standard_amt"` // exact amount of standard token being add to the liquidity pool - MinLiquidity string `json:"min_liquidity" yaml:"min_liquidity"` // lower bound UNI sender is willing to accept for deposited coins - Deadline string `json:"deadline" yaml:"deadline"` // deadline duration, e.g. 10m - Sender string `json:"sender" yaml:"sender"` // msg sender -} - -// RemoveLiquidityReq defines the properties of a remove liquidity request's body -type RemoveLiquidityReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - ID string `json:"id" yaml:"id"` // the unique liquidity id - MinToken string `json:"min_token" yaml:"min_token"` // coin to be withdrawn with a lower bound for its amount - WithdrawLiquidity string `json:"withdraw_liquidity" yaml:"withdraw_liquidity"` // amount of UNI to be burned to withdraw liquidity from a reserve pool - MinStandardAmt string `json:"min_standard_amt" yaml:"min_standard_amt"` // minimum amount of the native asset the sender is willing to accept - Deadline string `json:"deadline" yaml:"deadline"` // deadline duration, e.g. 10m - Sender string `json:"sender" yaml:"sender"` // msg sender -} - -// Input defines the properties of order's input -type Input struct { - Address string `json:"address" yaml:"address"` // address of input - Coin sdk.Coin `json:"coin" yaml:"coin"` // coins of input -} - -// Output defines the properties of order's output -type Output struct { - Address string `json:"address" yaml:"address"` // address of output - Coin sdk.Coin `json:"coin" yaml:"coin"` // coins of output -} - -// SwapOrderReq defines the properties of a swap request's body -type SwapOrderReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Input Input `json:"input" yaml:"input"` // the amount the sender is trading - Output Output `json:"output" yaml:"output"` // the amount the sender is receiving - Deadline string `json:"deadline" yaml:"deadline"` // deadline for the transaction to still be considered valid -} diff --git a/x/coinswap/client/rest/tx.go b/x/coinswap/client/rest/tx.go deleted file mode 100644 index ecba0e333..000000000 --- a/x/coinswap/client/rest/tx.go +++ /dev/null @@ -1,215 +0,0 @@ -package rest - -import ( - "context" - "fmt" - "net/http" - "time" - - "github.com/gorilla/mux" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -func registerTxRoutes(cliCtx client.Context, r *mux.Router) { - // add liquidity - r.HandleFunc(fmt.Sprintf("/coinswap/liquidities/{%s}/deposit", RestPoolID), addLiquidityHandlerFn(cliCtx)).Methods("POST") - // remove liquidity - r.HandleFunc(fmt.Sprintf("/coinswap/liquidities/{%s}/withdraw", RestPoolID), removeLiquidityHandlerFn(cliCtx)).Methods("POST") - // post a buy order - r.HandleFunc("/coinswap/liquidities/buy", swapOrderHandlerFn(cliCtx, true)).Methods("POST") - // post a sell order - r.HandleFunc("/coinswap/liquidities/sell", swapOrderHandlerFn(cliCtx, false)).Methods("POST") -} - -// HTTP request handler to add liquidity. -func addLiquidityHandlerFn(cliCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - denom := vars[RestPoolID] - - if err := sdk.ValidateDenom(denom); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - var req AddLiquidityReq - if !rest.ReadRESTReq(w, r, cliCtx.LegacyAmino, &req) { - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - if _, err := sdk.AccAddressFromBech32(req.Sender); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - duration, e := time.ParseDuration(req.Deadline) - if e != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, e.Error()) - return - } - - status, e := cliCtx.Client.Status(context.Background()) - if e != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, e.Error()) - return - } - deadline := status.SyncInfo.LatestBlockTime.Add(duration) - - maxToken, ok := sdk.NewIntFromString(req.MaxToken) - if !ok || !maxToken.IsPositive() { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid max token amount: "+req.MaxToken) - return - } - - exactStandardAmt, ok := sdk.NewIntFromString(req.ExactStandardAmt) - if !ok { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid exact standard token amount: "+req.ExactStandardAmt) - return - } - - minLiquidity, ok := sdk.NewIntFromString(req.MinLiquidity) - if !ok { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid min liquidity amount: "+req.MinLiquidity) - return - } - - msg := types.NewMsgAddLiquidity(sdk.NewCoin(denom, maxToken), exactStandardAmt, minLiquidity, deadline.Unix(), req.Sender) - if err := msg.ValidateBasic(); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - tx.WriteGeneratedTxResponse(cliCtx, w, req.BaseReq, msg) - } -} - -// HTTP request handler to remove liquidity. -func removeLiquidityHandlerFn(cliCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - lptDenom := vars[RestPoolID] - - if err := sdk.ValidateDenom(lptDenom); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - var req RemoveLiquidityReq - if !rest.ReadRESTReq(w, r, cliCtx.LegacyAmino, &req) { - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - if _, err := sdk.AccAddressFromBech32(req.Sender); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - duration, e := time.ParseDuration(req.Deadline) - if e != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, e.Error()) - return - } - - status, e := cliCtx.Client.Status(context.Background()) - if e != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, e.Error()) - return - } - deadline := status.SyncInfo.LatestBlockTime.Add(duration) - - minToken, ok := sdk.NewIntFromString(req.MinToken) - if !ok { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid min token amount: "+req.MinToken) - return - } - - minStandard, ok := sdk.NewIntFromString(req.MinStandardAmt) - if !ok { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid min iris amount: "+req.MinStandardAmt) - return - } - - liquidityAmt, ok := sdk.NewIntFromString(req.WithdrawLiquidity) - if !ok || !liquidityAmt.IsPositive() { - rest.WriteErrorResponse(w, http.StatusBadRequest, "invalid liquidity amount: "+req.WithdrawLiquidity) - return - } - - msg := types.NewMsgRemoveLiquidity( - minToken, sdk.NewCoin(lptDenom, liquidityAmt), minStandard, deadline.Unix(), req.Sender, - ) - if err := msg.ValidateBasic(); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - tx.WriteGeneratedTxResponse(cliCtx, w, req.BaseReq, msg) - } -} - -// HTTP request handler to post order. -func swapOrderHandlerFn(cliCtx client.Context, isBuyOrder bool) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req SwapOrderReq - if !rest.ReadRESTReq(w, r, cliCtx.LegacyAmino, &req) { - return - } - - baseReq := req.BaseReq.Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - - senderAddress, err := sdk.AccAddressFromBech32(req.Input.Address) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - recipientAddress, err := sdk.AccAddressFromBech32(req.Output.Address) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - duration, err := time.ParseDuration(req.Deadline) - if err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - input := types.Input{Address: senderAddress.String(), Coin: req.Input.Coin} - output := types.Output{Address: recipientAddress.String(), Coin: req.Output.Coin} - - status, e := cliCtx.Client.Status(context.Background()) - if e != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, e.Error()) - return - } - deadline := status.SyncInfo.LatestBlockTime.Add(duration) - - msg := types.NewMsgSwapOrder(input, output, deadline.Unix(), isBuyOrder) - if err := msg.ValidateBasic(); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - - tx.WriteGeneratedTxResponse(cliCtx, w, req.BaseReq, msg) - } -} diff --git a/x/coinswap/handler.go b/x/coinswap/handler.go index d4ee3d35e..e2bcf3195 100644 --- a/x/coinswap/handler.go +++ b/x/coinswap/handler.go @@ -1,6 +1,7 @@ package coinswap import ( + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -29,7 +30,7 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return sdk.WrapServiceResult(ctx, res, err) default: - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + return nil, errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } } } diff --git a/x/coinswap/keeper/fees.go b/x/coinswap/keeper/fees.go index fc7ea892c..d53c7bc24 100644 --- a/x/coinswap/keeper/fees.go +++ b/x/coinswap/keeper/fees.go @@ -2,6 +2,7 @@ package keeper import ( + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -14,7 +15,7 @@ func (k Keeper) DeductPoolCreationFee(ctx sdk.Context, creator sdk.AccAddress) e // compute community tax and burned coin communityTaxCoin := sdk.NewCoin(poolCreationFee.Denom, - sdk.NewDecFromInt(poolCreationFee.Amount).Mul(params.TaxRate).TruncateInt()) + sdkmath.LegacyNewDecFromInt(poolCreationFee.Amount).Mul(params.TaxRate).TruncateInt()) burnedCoins := sdk.NewCoins(poolCreationFee.Sub(communityTaxCoin)) // send all fees to module account diff --git a/x/coinswap/keeper/grpc_query.go b/x/coinswap/keeper/grpc_query.go index 1cca3d7b1..b9ba48b75 100644 --- a/x/coinswap/keeper/grpc_query.go +++ b/x/coinswap/keeper/grpc_query.go @@ -6,9 +6,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/cosmos/cosmos-sdk/store/prefix" + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/query" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -33,7 +33,7 @@ func (k Keeper) LiquidityPool(c context.Context, req *types.QueryLiquidityPoolRe ctx := sdk.UnwrapSDKContext(c) pool, exists := k.GetPoolByLptDenom(ctx, req.LptDenom) if !exists { - return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", req.LptDenom) + return nil, errorsmod.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", req.LptDenom) } balances, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) diff --git a/x/coinswap/keeper/keeper.go b/x/coinswap/keeper/keeper.go index fe715cac3..e67d65c1b 100644 --- a/x/coinswap/keeper/keeper.go +++ b/x/coinswap/keeper/keeper.go @@ -6,11 +6,11 @@ import ( gogotypes "github.com/gogo/protobuf/types" - "github.com/tendermint/tendermint/libs/log" - + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/log" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -63,19 +63,19 @@ func NewKeeper( // Logger returns a module-specific logger. func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", types.ModuleName) + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } // Swap execute swap order in specified pool func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { - var amount sdk.Int + var amount sdkmath.Int var err error standardDenom := k.GetStandardDenom(ctx) isDoubleSwap := (msg.Input.Coin.Denom != standardDenom) && (msg.Output.Coin.Denom != standardDenom) if isDoubleSwap { - return sdkerrors.Wrapf(types.ErrNotContainStandardDenom, "unsupported swap: standard coin must be in either Input or Output") + return errorsmod.Wrapf(types.ErrNotContainStandardDenom, "unsupported swap: standard coin must be in either Input or Output") } if msg.IsBuyOrder { amount, err = k.TradeInputForExactOutput(ctx, msg.Input, msg.Output) @@ -104,18 +104,18 @@ func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.Coin, error) { standardDenom := k.GetStandardDenom(ctx) if standardDenom == msg.MaxToken.Denom { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrInvalidDenom, + return sdk.Coin{}, errorsmod.Wrapf(types.ErrInvalidDenom, "MaxToken: %s should not be StandardDenom", msg.MaxToken.String()) } params := k.GetParams(ctx) if !params.MaxSwapAmount.AmountOf(msg.MaxToken.Denom).IsPositive() { - return sdk.Coin{}, sdkerrors.Wrapf(types.ErrInvalidDenom, + return sdk.Coin{}, errorsmod.Wrapf(types.ErrInvalidDenom, "MaxToken %s is not registered in max swap amount", msg.MaxToken.Denom) } - var mintLiquidityAmt sdk.Int + var mintLiquidityAmt sdkmath.Int var depositToken sdk.Coin var standardCoin = sdk.NewCoin(standardDenom, msg.ExactStandardAmt) @@ -138,11 +138,11 @@ func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.C mintLiquidityAmt = msg.ExactStandardAmt if mintLiquidityAmt.GT(params.MaxStandardCoinPerPool) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("liquidity amount not met, max standard coin amount: no bigger than %s, actual: %s", params.MaxStandardCoinPerPool.String(), mintLiquidityAmt.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("liquidity amount not met, max standard coin amount: no bigger than %s, actual: %s", params.MaxStandardCoinPerPool.String(), mintLiquidityAmt.String())) } if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) } depositToken = sdk.NewCoin(msg.MaxToken.Denom, msg.MaxToken.Amount) @@ -157,37 +157,37 @@ func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.C tokenReserveAmt := balances.AmountOf(msg.MaxToken.Denom) liquidity := k.bk.GetSupply(ctx, pool.LptDenom).Amount - if liquidity.Equal(sdk.ZeroInt()) { + if liquidity.Equal(sdkmath.ZeroInt()) { // pool exists, but it is empty // same with initial liquidity provide mintLiquidityAmt = msg.ExactStandardAmt if mintLiquidityAmt.GT(params.MaxStandardCoinPerPool) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("liquidity amount not met, max standard coin amount: no bigger than %s, actual: %s", params.MaxStandardCoinPerPool.String(), mintLiquidityAmt.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("liquidity amount not met, max standard coin amount: no bigger than %s, actual: %s", params.MaxStandardCoinPerPool.String(), mintLiquidityAmt.String())) } if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) } depositToken = sdk.NewCoin(msg.MaxToken.Denom, msg.MaxToken.Amount) } else { if standardReserveAmt.GTE(params.MaxStandardCoinPerPool) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("pool standard coin is maxed out: %s", params.MaxStandardCoinPerPool.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrMaxedStandardDenom, fmt.Sprintf("pool standard coin is maxed out: %s", params.MaxStandardCoinPerPool.String())) } - maxStandardInputAmt := sdk.MinInt(msg.ExactStandardAmt, params.MaxStandardCoinPerPool.Sub(standardReserveAmt)) + maxStandardInputAmt := sdkmath.MinInt(msg.ExactStandardAmt, params.MaxStandardCoinPerPool.Sub(standardReserveAmt)) mintLiquidityAmt = (liquidity.Mul(maxStandardInputAmt)).Quo(standardReserveAmt) if mintLiquidityAmt.LT(msg.MinLiquidity) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("liquidity amount not met, user expected: no less than %s, actual: %s", msg.MinLiquidity.String(), mintLiquidityAmt.String())) } depositAmt := (tokenReserveAmt.Mul(maxStandardInputAmt)).Quo(standardReserveAmt).AddRaw(1) depositToken = sdk.NewCoin(msg.MaxToken.Denom, depositAmt) standardCoin = sdk.NewCoin(standardDenom, maxStandardInputAmt) if depositAmt.GT(msg.MaxToken.Amount) { - return sdk.Coin{}, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("token amount not met, user expected: no more than %s, actual: %s", msg.MaxToken.String(), depositToken.String())) + return sdk.Coin{}, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("token amount not met, user expected: no more than %s, actual: %s", msg.MaxToken.String(), depositToken.String())) } } } @@ -212,7 +212,7 @@ func (k Keeper) addLiquidity(ctx sdk.Context, reservePoolAddress sdk.AccAddress, standardCoin, token sdk.Coin, lptDenom string, - mintLiquidityAmt sdk.Int, + mintLiquidityAmt sdkmath.Int, ) (sdk.Coin, error) { depositedTokens := sdk.NewCoins(standardCoin, token) // transfer deposited token into coinswaps Account @@ -238,7 +238,7 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) pool, exists := k.GetPoolByLptDenom(ctx, msg.WithdrawLiquidity.Denom) if !exists { - return nil, sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", msg.WithdrawLiquidity.Denom) + return nil, errorsmod.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", msg.WithdrawLiquidity.Denom) } balances, err := k.GetPoolBalances(ctx, pool.EscrowAddress) @@ -253,13 +253,13 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) tokenReserveAmt := balances.AmountOf(minTokenDenom) liquidityReserve := k.bk.GetSupply(ctx, lptDenom).Amount if standardReserveAmt.LT(msg.MinStandardAmt) { - return nil, sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", standardDenom, msg.MinStandardAmt.String(), standardReserveAmt.String())) + return nil, errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", standardDenom, msg.MinStandardAmt.String(), standardReserveAmt.String())) } if tokenReserveAmt.LT(msg.MinToken) { - return nil, sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", minTokenDenom, msg.MinToken.String(), tokenReserveAmt.String())) + return nil, errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", minTokenDenom, msg.MinToken.String(), tokenReserveAmt.String())) } if liquidityReserve.LT(msg.WithdrawLiquidity.Amount) { - return nil, sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", lptDenom, msg.WithdrawLiquidity.Amount.String(), liquidityReserve.String())) + return nil, errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("insufficient %s funds, user expected: %s, actual: %s", lptDenom, msg.WithdrawLiquidity.Amount.String(), liquidityReserve.String())) } // calculate amount of UNI to be burned for sender @@ -272,10 +272,10 @@ func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) deductUniCoin := msg.WithdrawLiquidity if standardWithdrawCoin.Amount.LT(msg.MinStandardAmt) { - return nil, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("iris amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(standardDenom, msg.MinStandardAmt).String(), standardWithdrawCoin.String())) + return nil, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("iris amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(standardDenom, msg.MinStandardAmt).String(), standardWithdrawCoin.String())) } if tokenWithdrawCoin.Amount.LT(msg.MinToken) { - return nil, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("token amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(minTokenDenom, msg.MinToken).String(), tokenWithdrawCoin.String())) + return nil, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("token amount not met, user expected: no less than %s, actual: %s", sdk.NewCoin(minTokenDenom, msg.MinToken).String(), tokenWithdrawCoin.String())) } ctx.EventManager().EmitEvent( diff --git a/x/coinswap/keeper/keeper_test.go b/x/coinswap/keeper/keeper_test.go index 9b2d456f6..460b8089a 100644 --- a/x/coinswap/keeper/keeper_test.go +++ b/x/coinswap/keeper/keeper_test.go @@ -6,9 +6,10 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -43,7 +44,7 @@ type TestSuite struct { func (suite *TestSuite) SetupTest() { app := setupWithGenesisAccounts() - ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + ctx := app.BaseApp.NewContextLegacy(false, tmproto.Header{}) queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) types.RegisterQueryServer(queryHelper, app.CoinswapKeeper) @@ -70,10 +71,10 @@ func (suite *TestSuite) TestParams() { {types.DefaultParams()}, { params: types.Params{ - Fee: sdk.NewDec(0), - PoolCreationFee: sdk.Coin{sdk.DefaultBondDenom, sdk.ZeroInt()}, - TaxRate: sdk.NewDec(0), - MaxStandardCoinPerPool: sdk.NewInt(10_000_000_000), + Fee: sdkmath.LegacyNewDec(0), + PoolCreationFee: sdk.Coin{sdk.DefaultBondDenom, sdkmath.ZeroInt()}, + TaxRate: sdkmath.LegacyNewDec(0), + MaxStandardCoinPerPool: sdkmath.NewInt(10_000_000_000), MaxSwapAmount: sdk.NewCoins( sdk.NewInt64Coin("usdc", 10_000_000), sdk.NewInt64Coin("usdt", 10_000_000), @@ -91,8 +92,8 @@ func (suite *TestSuite) TestParams() { } func setupWithGenesisAccounts() *app.Canto { - amountInitStandard, _ := sdk.NewIntFromString("30000000000000000000") - amountInitBTC, _ := sdk.NewIntFromString("3000000000") + amountInitStandard, _ := sdkmath.NewIntFromString("30000000000000000000") + amountInitBTC, _ := sdkmath.NewIntFromString("3000000000") addrSender1 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender1"))) addrSender2 = sdk.AccAddress(tmhash.SumTruncated([]byte("addrSender2"))) @@ -133,19 +134,19 @@ func (suite *TestSuite) TestAmountOf() { searchDenom := "ibc/FBEEDF2F566CF2568921399BD092363FCC45EB53278A3A09318C4348AAE2B27F" - var amount sdk.Int + var amount sdkmath.Int cases := []struct { name string malleate func() - expectedAmount sdk.Int + expectedAmount sdkmath.Int }{ { "AmountOf doesn't work for some denoms", func() { amount = MaxSwapAmount.AmountOf(searchDenom) }, - sdk.NewInt(1000000), + sdkmath.NewInt(1000000), }, { "manual search for denom works", @@ -158,7 +159,7 @@ func (suite *TestSuite) TestAmountOf() { } } }, - sdk.NewInt(1000000), + sdkmath.NewInt(1000000), }, } for _, tc := range cases { @@ -169,20 +170,20 @@ func (suite *TestSuite) TestAmountOf() { func (suite *TestSuite) TestLiquidity() { params := types.Params{ - Fee: sdk.NewDec(0), - PoolCreationFee: sdk.Coin{sdk.DefaultBondDenom, sdk.ZeroInt()}, - TaxRate: sdk.NewDec(0), - MaxStandardCoinPerPool: sdk.NewInt(10_000_000_000), + Fee: sdkmath.LegacyNewDec(0), + PoolCreationFee: sdk.Coin{sdk.DefaultBondDenom, sdkmath.ZeroInt()}, + TaxRate: sdkmath.LegacyNewDec(0), + MaxStandardCoinPerPool: sdkmath.NewInt(10_000_000_000), MaxSwapAmount: sdk.NewCoins(sdk.NewInt64Coin(denomBTC, 10_000_000)), } suite.app.CoinswapKeeper.SetParams(suite.ctx, params) // Test add liquidity with non-whitelisted denom // Fail to create a pool - ethAmt, _ := sdk.NewIntFromString("100") - standardAmt, _ := sdk.NewIntFromString("1000000000") + ethAmt, _ := sdkmath.NewIntFromString("100") + standardAmt, _ := sdkmath.NewIntFromString("1000000000") depositCoin := sdk.NewCoin(denomETH, ethAmt) - minReward := sdk.NewInt(1) + minReward := sdkmath.NewInt(1) deadline := time.Now().Add(1 * time.Minute) msg := types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender1.String()) @@ -191,8 +192,8 @@ func (suite *TestSuite) TestLiquidity() { // test add liquidity with exceeding standard coin limit // Expected behavior: fails to create to pool - btcAmt, _ := sdk.NewIntFromString("100") - standardAmt, _ = sdk.NewIntFromString("15000000000") + btcAmt, _ := sdkmath.NewIntFromString("100") + standardAmt, _ = sdkmath.NewIntFromString("15000000000") depositCoin = sdk.NewCoin(denomBTC, btcAmt) msg = types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender1.String()) @@ -203,7 +204,7 @@ func (suite *TestSuite) TestLiquidity() { // Deposit: 100btc, 8000000000stake // Pool created and mint 8000000000lpt-1 // Expected pool balance: 100btc, 8000000000stake - standardAmt, _ = sdk.NewIntFromString("8000000000") + standardAmt, _ = sdkmath.NewIntFromString("8000000000") msg = types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender1.String()) _, err = suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, msg) suite.NoError(err) @@ -223,14 +224,14 @@ func (suite *TestSuite) TestLiquidity() { expCoins := sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 100), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(8000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(8000, 6)), ) suite.Equal(expCoins.Sort().String(), reservePoolBalances.Sort().String()) expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 2999999900), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(3, 19).Sub(sdk.NewIntWithDecimal(8000, 6))), - sdk.NewCoin(lptDenom, sdk.NewIntWithDecimal(8000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19).Sub(sdkmath.NewIntWithDecimal(8000, 6))), + sdk.NewCoin(lptDenom, sdkmath.NewIntWithDecimal(8000, 6)), ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) @@ -242,10 +243,10 @@ func (suite *TestSuite) TestLiquidity() { expLptDenom, _ := suite.app.CoinswapKeeper.GetLptDenomFromDenoms(suite.ctx, denomBTC, denomStandard) suite.Require().Equal(expLptDenom, lptDenom) - btcAmt, _ = sdk.NewIntFromString("200") - standardAmt, _ = sdk.NewIntFromString("8000000000") + btcAmt, _ = sdkmath.NewIntFromString("200") + standardAmt, _ = sdkmath.NewIntFromString("8000000000") depositCoin = sdk.NewCoin(denomBTC, btcAmt) - minReward = sdk.NewInt(1) + minReward = sdkmath.NewInt(1) deadline = time.Now().Add(1 * time.Minute) msg = types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender2.String()) @@ -258,14 +259,14 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 126), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(10000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(10000, 6)), ) suite.Equal(expCoins.Sort().String(), reservePoolBalances.Sort().String()) expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 2999999974), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(3, 19).Sub(sdk.NewIntWithDecimal(2000, 6))), - sdk.NewCoin(lptDenom, sdk.NewIntWithDecimal(2000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19).Sub(sdkmath.NewIntWithDecimal(2000, 6))), + sdk.NewCoin(lptDenom, sdkmath.NewIntWithDecimal(2000, 6)), ) suite.Equal(expCoins.Sort().String(), sender2Balances.Sort().String()) @@ -278,11 +279,11 @@ func (suite *TestSuite) TestLiquidity() { // Withdraw 8000*10^6 pool coin // Expected return: 8000*10^6 standard coin, 100btc // Expected pool reserve: 2000*10^6 standard coin, 26btc - withdraw, _ := sdk.NewIntFromString("8000000000") + withdraw, _ := sdkmath.NewIntFromString("8000000000") msgRemove := types.NewMsgRemoveLiquidity( - sdk.NewInt(1), + sdkmath.NewInt(1), sdk.NewCoin(lptDenom, withdraw), - sdk.NewInt(1), + sdkmath.NewInt(1), suite.ctx.BlockHeader().Time.Unix(), addrSender1.String(), ) @@ -296,23 +297,23 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 3000000000), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(3, 19)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19)), ) suite.Equal(expCoins.Sort().String(), sender1Balances.Sort().String()) expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 26), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(2000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(2000, 6)), ) suite.Equal(expCoins.Sort().String(), reservePoolBalances.String()) // Test remove liquidity (overdraft) // Expected behavior: fails to withdraw - withdraw = sdk.NewIntWithDecimal(8000, 6) + withdraw = sdkmath.NewIntWithDecimal(8000, 6) msgRemove = types.NewMsgRemoveLiquidity( - sdk.NewInt(1), + sdkmath.NewInt(1), sdk.NewCoin(lptDenom, withdraw), - sdk.NewInt(1), + sdkmath.NewInt(1), suite.ctx.BlockHeader().Time.Unix(), addrSender2.String(), ) @@ -323,11 +324,11 @@ func (suite *TestSuite) TestLiquidity() { // Test remove liquidity (remove all) // Expected pool coin supply: 0 // Expected reserve balance: 0btc, 0stake - withdraw = sdk.NewIntWithDecimal(2000, 6) + withdraw = sdkmath.NewIntWithDecimal(2000, 6) msgRemove = types.NewMsgRemoveLiquidity( - sdk.NewInt(1), + sdkmath.NewInt(1), sdk.NewCoin(lptDenom, withdraw), - sdk.NewInt(1), + sdkmath.NewInt(1), suite.ctx.BlockHeader().Time.Unix(), addrSender2.String(), ) @@ -341,7 +342,7 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 3000000000), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(3, 19)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(3, 19)), ) suite.Equal(expCoins.Sort().String(), sender2Balances.Sort().String()) suite.Equal("", reservePoolBalances.String()) @@ -350,7 +351,7 @@ func (suite *TestSuite) TestLiquidity() { // Deposit: 200btc, 8000000000stake // Pool created and mint 8000000000lpt-1 // Expected pool balance: 200btc, 8000000000stake - standardAmt, _ = sdk.NewIntFromString("8000000000") + standardAmt, _ = sdkmath.NewIntFromString("8000000000") msg = types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender1.String()) _, err = suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, msg) suite.NoError(err) @@ -370,7 +371,7 @@ func (suite *TestSuite) TestLiquidity() { expCoins = sdk.NewCoins( sdk.NewInt64Coin(denomBTC, 200), - sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(8000, 6)), + sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(8000, 6)), ) suite.Equal(expCoins.Sort().String(), reservePoolBalances.Sort().String()) } diff --git a/x/coinswap/keeper/msg_server.go b/x/coinswap/keeper/msg_server.go index 69344965f..53f8622bb 100644 --- a/x/coinswap/keeper/msg_server.go +++ b/x/coinswap/keeper/msg_server.go @@ -4,6 +4,7 @@ import ( "context" "time" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -26,7 +27,7 @@ func (m msgServer) AddLiquidity(goCtx context.Context, msg *types.MsgAddLiquidit ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { - return nil, sdkerrors.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgAddLiquidity") + return nil, errorsmod.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgAddLiquidity") } mintToken, err := m.Keeper.AddLiquidity(ctx, msg) @@ -51,7 +52,7 @@ func (m msgServer) RemoveLiquidity(goCtx context.Context, msg *types.MsgRemoveLi ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { - return nil, sdkerrors.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgRemoveLiquidity") + return nil, errorsmod.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgRemoveLiquidity") } withdrawCoins, err := m.Keeper.RemoveLiquidity(ctx, msg) if err != nil { @@ -80,11 +81,11 @@ func (m msgServer) SwapCoin(goCtx context.Context, msg *types.MsgSwapOrder) (*ty ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { - return nil, sdkerrors.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgSwapOrder") + return nil, errorsmod.Wrap(types.ErrInvalidDeadline, "deadline has passed for MsgSwapOrder") } if m.Keeper.blockedAddrs[msg.Output.Address] { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive external funds", msg.Output.Address) + return nil, errorsmod.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive external funds", msg.Output.Address) } if err := m.Keeper.Swap(ctx, msg); err != nil { diff --git a/x/coinswap/keeper/pool.go b/x/coinswap/keeper/pool.go index 2264bc9c7..df4545fc1 100644 --- a/x/coinswap/keeper/pool.go +++ b/x/coinswap/keeper/pool.go @@ -5,8 +5,8 @@ import ( gogotypes "github.com/gogo/protobuf/types" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) @@ -74,7 +74,7 @@ func (k Keeper) GetPoolBalances(ctx sdk.Context, escrowAddress string) (coins sd } acc := k.ak.GetAccount(ctx, address) if acc == nil { - return nil, sdkerrors.Wrap(types.ErrReservePoolNotExists, escrowAddress) + return nil, errorsmod.Wrap(types.ErrReservePoolNotExists, escrowAddress) } return k.bk.GetAllBalances(ctx, acc.GetAddress()), nil } @@ -83,7 +83,7 @@ func (k Keeper) GetPoolBalancesByLptDenom(ctx sdk.Context, lptDenom string) (coi address := types.GetReservePoolAddr(lptDenom) acc := k.ak.GetAccount(ctx, address) if acc == nil { - return nil, sdkerrors.Wrap(types.ErrReservePoolNotExists, address.String()) + return nil, errorsmod.Wrap(types.ErrReservePoolNotExists, address.String()) } return k.bk.GetAllBalances(ctx, acc.GetAddress()), nil } @@ -96,7 +96,7 @@ func (k Keeper) GetLptDenomFromDenoms(ctx sdk.Context, denom1, denom2 string) (s standardDenom := k.GetStandardDenom(ctx) if denom1 != standardDenom && denom2 != standardDenom { - return "", sdkerrors.Wrap(types.ErrNotContainStandardDenom, fmt.Sprintf("standard denom: %s, denom1: %s, denom2: %s", standardDenom, denom1, denom2)) + return "", errorsmod.Wrap(types.ErrNotContainStandardDenom, fmt.Sprintf("standard denom: %s, denom1: %s, denom2: %s", standardDenom, denom1, denom2)) } counterpartyDenom := denom1 @@ -106,7 +106,7 @@ func (k Keeper) GetLptDenomFromDenoms(ctx sdk.Context, denom1, denom2 string) (s poolId := types.GetPoolId(counterpartyDenom) pool, has := k.GetPool(ctx, poolId) if !has { - return "", sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", counterpartyDenom) + return "", errorsmod.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", counterpartyDenom) } return pool.LptDenom, nil } @@ -119,7 +119,7 @@ func (k Keeper) ValidatePool(ctx sdk.Context, lptDenom string) error { pool, has := k.GetPoolByLptDenom(ctx, lptDenom) if !has { - return sdkerrors.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", lptDenom) + return errorsmod.Wrapf(types.ErrReservePoolNotExists, "liquidity pool token: %s", lptDenom) } _, err := k.GetPoolBalances(ctx, pool.EscrowAddress) diff --git a/x/coinswap/keeper/swap.go b/x/coinswap/keeper/swap.go index 9a441988c..61301b749 100644 --- a/x/coinswap/keeper/swap.go +++ b/x/coinswap/keeper/swap.go @@ -3,8 +3,9 @@ package keeper import ( "fmt" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) @@ -34,26 +35,26 @@ Calculate the amount of another token to be received based on the exact amount o @param soldTokenDenom : received token's denom @return : amount of the token that will be received */ -func (k Keeper) calculateWithExactInput(ctx sdk.Context, exactSoldCoin sdk.Coin, boughtTokenDenom string) (sdk.Int, error) { +func (k Keeper) calculateWithExactInput(ctx sdk.Context, exactSoldCoin sdk.Coin, boughtTokenDenom string) (sdkmath.Int, error) { lptDenom, err := k.GetLptDenomFromDenoms(ctx, exactSoldCoin.Denom, boughtTokenDenom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } reservePoolAddress := types.GetReservePoolAddr(lptDenom).String() reservePool, err := k.GetPoolBalances(ctx, reservePoolAddress) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } inputReserve := reservePool.AmountOf(exactSoldCoin.Denom) outputReserve := reservePool.AmountOf(boughtTokenDenom) if !inputReserve.IsPositive() { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient funds, actual [%s%s]", inputReserve.String(), exactSoldCoin.Denom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient funds, actual [%s%s]", inputReserve.String(), exactSoldCoin.Denom)) } if !outputReserve.IsPositive() { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient funds, actual [%s%s]", outputReserve.String(), boughtTokenDenom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient funds, actual [%s%s]", outputReserve.String(), boughtTokenDenom)) } param := k.GetParams(ctx) @@ -70,25 +71,25 @@ Sell exact amount of a token for buying another, one of them must be standard to @param receipt: address of the receiver @return: actual amount of the token to be bought */ -func (k Keeper) TradeExactInputForOutput(ctx sdk.Context, input types.Input, output types.Output) (sdk.Int, error) { +func (k Keeper) TradeExactInputForOutput(ctx sdk.Context, input types.Input, output types.Output) (sdkmath.Int, error) { boughtTokenAmt, err := k.calculateWithExactInput(ctx, input.Coin, output.Coin.Denom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } // assert that the calculated amount is more than the // minimum amount the buyer is willing to buy. if boughtTokenAmt.LT(output.Coin.Amount) { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", output.Coin.Denom, output.Coin.Amount.String(), boughtTokenAmt.String())) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", output.Coin.Denom, output.Coin.Amount.String(), boughtTokenAmt.String())) } boughtToken := sdk.NewCoin(output.Coin.Denom, boughtTokenAmt) inputAddress, err := sdk.AccAddressFromBech32(input.Address) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } outputAddress, err := sdk.AccAddressFromBech32(output.Address) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } standardDenom := k.GetStandardDenom(ctx) @@ -102,15 +103,15 @@ func (k Keeper) TradeExactInputForOutput(ctx sdk.Context, input types.Input, out maxSwapAmount, err := k.GetMaximumSwapAmount(ctx, quoteCoinToSwap.Denom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } if quoteCoinToSwap.Amount.GT(maxSwapAmount.Amount) { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("expected swap amount %s%s exceeding swap amount limit %s%s", quoteCoinToSwap.Amount.String(), quoteCoinToSwap.Denom, maxSwapAmount.Amount.String(), maxSwapAmount.Denom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("expected swap amount %s%s exceeding swap amount limit %s%s", quoteCoinToSwap.Amount.String(), quoteCoinToSwap.Denom, maxSwapAmount.Amount.String(), maxSwapAmount.Denom)) } if err := k.swapCoins(ctx, inputAddress, outputAddress, input.Coin, boughtToken); err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } return boughtTokenAmt, nil } @@ -122,29 +123,29 @@ Calculate the amount of the token to be paid based on the exact amount of the to @param soldTokenDenom @return: actual amount of the token to be paid */ -func (k Keeper) calculateWithExactOutput(ctx sdk.Context, exactBoughtCoin sdk.Coin, soldTokenDenom string) (sdk.Int, error) { +func (k Keeper) calculateWithExactOutput(ctx sdk.Context, exactBoughtCoin sdk.Coin, soldTokenDenom string) (sdkmath.Int, error) { lptDenom, err := k.GetLptDenomFromDenoms(ctx, exactBoughtCoin.Denom, soldTokenDenom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } poolAddr := types.GetReservePoolAddr(lptDenom).String() reservePool, err := k.GetPoolBalances(ctx, poolAddr) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } outputReserve := reservePool.AmountOf(exactBoughtCoin.Denom) inputReserve := reservePool.AmountOf(soldTokenDenom) if !inputReserve.IsPositive() { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance: [%s%s]", inputReserve.String(), soldTokenDenom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance: [%s%s]", inputReserve.String(), soldTokenDenom)) } if !outputReserve.IsPositive() { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance: [%s%s]", outputReserve.String(), exactBoughtCoin.Denom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance: [%s%s]", outputReserve.String(), exactBoughtCoin.Denom)) } if exactBoughtCoin.Amount.GTE(outputReserve) { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance of %s, user expected: %s, actual: %s", exactBoughtCoin.Denom, exactBoughtCoin.Amount.String(), outputReserve.String())) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrInsufficientFunds, fmt.Sprintf("reserve pool insufficient balance of %s, user expected: %s, actual: %s", exactBoughtCoin.Denom, exactBoughtCoin.Amount.String(), outputReserve.String())) } param := k.GetParams(ctx) @@ -161,26 +162,26 @@ Buy exact amount of a token by specifying the max amount of another token, one o @param receipt : address of the receiver @return : actual amount of the token to be paid */ -func (k Keeper) TradeInputForExactOutput(ctx sdk.Context, input types.Input, output types.Output) (sdk.Int, error) { +func (k Keeper) TradeInputForExactOutput(ctx sdk.Context, input types.Input, output types.Output) (sdkmath.Int, error) { soldTokenAmt, err := k.calculateWithExactOutput(ctx, output.Coin, input.Coin.Denom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } // assert that the calculated amount is less than the // max amount the buyer is willing to pay. if soldTokenAmt.GT(input.Coin.Amount) { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", input.Coin.Denom, input.Coin.Amount.String(), soldTokenAmt.String())) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", input.Coin.Denom, input.Coin.Amount.String(), soldTokenAmt.String())) } soldToken := sdk.NewCoin(input.Coin.Denom, soldTokenAmt) inputAddress, err := sdk.AccAddressFromBech32(input.Address) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } outputAddress, err := sdk.AccAddressFromBech32(output.Address) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } standardDenom := k.GetStandardDenom(ctx) @@ -194,15 +195,15 @@ func (k Keeper) TradeInputForExactOutput(ctx sdk.Context, input types.Input, out maxSwapAmount, err := k.GetMaximumSwapAmount(ctx, quoteCoinToSwap.Denom) if err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } if quoteCoinToSwap.Amount.GT(maxSwapAmount.Amount) { - return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("expected swap amount %s%s exceeding swap amount limit %s%s", quoteCoinToSwap.Amount.String(), quoteCoinToSwap.Denom, maxSwapAmount.Amount.String(), maxSwapAmount.Denom)) + return sdkmath.ZeroInt(), errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("expected swap amount %s%s exceeding swap amount limit %s%s", quoteCoinToSwap.Amount.String(), quoteCoinToSwap.Denom, maxSwapAmount.Amount.String(), maxSwapAmount.Denom)) } if err := k.swapCoins(ctx, inputAddress, outputAddress, soldToken, output.Coin); err != nil { - return sdk.ZeroInt(), err + return sdkmath.ZeroInt(), err } return soldTokenAmt, nil @@ -215,25 +216,25 @@ func (k Keeper) GetMaximumSwapAmount(ctx sdk.Context, denom string) (sdk.Coin, e return coin, nil } } - return sdk.Coin{}, sdkerrors.Wrap(types.ErrInvalidDenom, fmt.Sprintf("invalid denom: %s, denom is not whitelisted", denom)) + return sdk.Coin{}, errorsmod.Wrap(types.ErrInvalidDenom, fmt.Sprintf("invalid denom: %s, denom is not whitelisted", denom)) } // GetInputPrice returns the amount of coins bought (calculated) given the input amount being sold (exact) // The fee is included in the input coins being bought // https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf -func GetInputPrice(inputAmt, inputReserve, outputReserve sdk.Int, fee sdk.Dec) sdk.Int { - deltaFee := sdk.OneDec().Sub(fee) - inputAmtWithFee := inputAmt.Mul(sdk.NewIntFromBigInt(deltaFee.BigInt())) +func GetInputPrice(inputAmt, inputReserve, outputReserve sdkmath.Int, fee sdkmath.LegacyDec) sdkmath.Int { + deltaFee := sdkmath.LegacyOneDec().Sub(fee) + inputAmtWithFee := inputAmt.Mul(sdkmath.NewIntFromBigInt(deltaFee.BigInt())) numerator := inputAmtWithFee.Mul(outputReserve) - denominator := inputReserve.Mul(sdk.NewIntWithDecimal(1, sdk.Precision)).Add(inputAmtWithFee) + denominator := inputReserve.Mul(sdkmath.NewIntWithDecimal(1, sdkmath.LegacyPrecision)).Add(inputAmtWithFee) return numerator.Quo(denominator) } // GetOutputPrice returns the amount of coins sold (calculated) given the output amount being bought (exact) // The fee is included in the output coins being bought -func GetOutputPrice(outputAmt, inputReserve, outputReserve sdk.Int, fee sdk.Dec) sdk.Int { - deltaFee := sdk.OneDec().Sub(fee) - numerator := inputReserve.Mul(outputAmt).Mul(sdk.NewIntWithDecimal(1, sdk.Precision)) - denominator := (outputReserve.Sub(outputAmt)).Mul(sdk.NewIntFromBigInt(deltaFee.BigInt())) - return numerator.Quo(denominator).Add(sdk.OneInt()) +func GetOutputPrice(outputAmt, inputReserve, outputReserve sdkmath.Int, fee sdkmath.LegacyDec) sdkmath.Int { + deltaFee := sdkmath.LegacyOneDec().Sub(fee) + numerator := inputReserve.Mul(outputAmt).Mul(sdkmath.NewIntWithDecimal(1, sdkmath.LegacyPrecision)) + denominator := (outputReserve.Sub(outputAmt)).Mul(sdkmath.NewIntFromBigInt(deltaFee.BigInt())) + return numerator.Quo(denominator).Add(sdkmath.OneInt()) } diff --git a/x/coinswap/keeper/swap_test.go b/x/coinswap/keeper/swap_test.go index e6042ec44..dfdb7afb7 100644 --- a/x/coinswap/keeper/swap_test.go +++ b/x/coinswap/keeper/swap_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/suite" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" @@ -19,32 +20,32 @@ func TestSwapSuite(t *testing.T) { } type Data struct { - delta sdk.Int - x sdk.Int - y sdk.Int - fee sdk.Dec + delta sdkmath.Int + x sdkmath.Int + y sdkmath.Int + fee sdkmath.LegacyDec } type SwapCase struct { data Data - expect sdk.Int + expect sdkmath.Int } func (suite *TestSuite) TestGetInputPrice() { var datas = []SwapCase{{ - data: Data{delta: sdk.NewInt(100), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(90), + data: Data{delta: sdkmath.NewInt(100), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(90), }, { - data: Data{delta: sdk.NewInt(200), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(166), + data: Data{delta: sdkmath.NewInt(200), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(166), }, { - data: Data{delta: sdk.NewInt(300), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(230), + data: Data{delta: sdkmath.NewInt(300), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(230), }, { - data: Data{delta: sdk.NewInt(1000), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(499), + data: Data{delta: sdkmath.NewInt(1000), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(499), }, { - data: Data{delta: sdk.NewInt(1000), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.ZeroDec()}, - expect: sdk.NewInt(500), + data: Data{delta: sdkmath.NewInt(1000), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyZeroDec()}, + expect: sdkmath.NewInt(500), }} for _, tcase := range datas { data := tcase.data @@ -55,17 +56,17 @@ func (suite *TestSuite) TestGetInputPrice() { func (suite *TestSuite) TestGetOutputPrice() { var datas = []SwapCase{{ - data: Data{delta: sdk.NewInt(100), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(112), + data: Data{delta: sdkmath.NewInt(100), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(112), }, { - data: Data{delta: sdk.NewInt(200), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(251), + data: Data{delta: sdkmath.NewInt(200), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(251), }, { - data: Data{delta: sdk.NewInt(300), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.NewDecWithPrec(3, 3)}, - expect: sdk.NewInt(430), + data: Data{delta: sdkmath.NewInt(300), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyNewDecWithPrec(3, 3)}, + expect: sdkmath.NewInt(430), }, { - data: Data{delta: sdk.NewInt(300), x: sdk.NewInt(1000), y: sdk.NewInt(1000), fee: sdk.ZeroDec()}, - expect: sdk.NewInt(429), + data: Data{delta: sdkmath.NewInt(300), x: sdkmath.NewInt(1000), y: sdkmath.NewInt(1000), fee: sdkmath.LegacyZeroDec()}, + expect: sdkmath.NewInt(429), }} for _, tcase := range datas { data := tcase.data @@ -85,8 +86,8 @@ func (suite *TestSuite) TestSwap() { // swap buy order msg msg := types.NewMsgSwapOrder( - types.Input{Coin: sdk.NewCoin(denomBTC, sdk.NewIntWithDecimal(100, 6)), Address: sender.String()}, - types.Output{Coin: sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(50, 6)), Address: sender.String()}, + types.Input{Coin: sdk.NewCoin(denomBTC, sdkmath.NewIntWithDecimal(100, 6)), Address: sender.String()}, + types.Output{Coin: sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(50, 6)), Address: sender.String()}, time.Now().Add(1*time.Minute).Unix(), true, ) @@ -96,8 +97,8 @@ func (suite *TestSuite) TestSwap() { // swap buy order msg msg = types.NewMsgSwapOrder( - types.Input{Coin: sdk.NewCoin(denomBTC, sdk.NewIntWithDecimal(10, 6)), Address: sender.String()}, - types.Output{Coin: sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(5, 6)), Address: sender.String()}, + types.Input{Coin: sdk.NewCoin(denomBTC, sdkmath.NewIntWithDecimal(10, 6)), Address: sender.String()}, + types.Output{Coin: sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(5, 6)), Address: sender.String()}, time.Now().Add(1*time.Minute).Unix(), true, ) @@ -143,8 +144,8 @@ func (suite *TestSuite) TestSwap() { // swap sell order msg msg = types.NewMsgSwapOrder( - types.Input{Coin: sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(100, 6)), Address: sender.String()}, - types.Output{Coin: sdk.NewCoin(denomBTC, sdk.NewIntWithDecimal(100, 6)), Address: sender.String()}, + types.Input{Coin: sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(100, 6)), Address: sender.String()}, + types.Output{Coin: sdk.NewCoin(denomBTC, sdkmath.NewIntWithDecimal(100, 6)), Address: sender.String()}, time.Now().Add(1*time.Minute).Unix(), false, ) @@ -156,8 +157,8 @@ func (suite *TestSuite) TestSwap() { // swap sell order msg msg = types.NewMsgSwapOrder( - types.Input{Coin: sdk.NewCoin(denomStandard, sdk.NewIntWithDecimal(5, 6)), Address: sender.String()}, - types.Output{Coin: sdk.NewCoin(denomBTC, sdk.NewIntWithDecimal(5, 6)), Address: sender.String()}, + types.Input{Coin: sdk.NewCoin(denomStandard, sdkmath.NewIntWithDecimal(5, 6)), Address: sender.String()}, + types.Output{Coin: sdk.NewCoin(denomBTC, sdkmath.NewIntWithDecimal(5, 6)), Address: sender.String()}, time.Now().Add(1*time.Minute).Unix(), false, ) @@ -204,17 +205,17 @@ func (suite *TestSuite) TestSwap() { func createReservePool(suite *TestSuite, denom string) (sdk.AccAddress, sdk.AccAddress) { // Set parameters params := types.Params{ - Fee: sdk.NewDec(0), - PoolCreationFee: sdk.Coin{denomStandard, sdk.ZeroInt()}, - TaxRate: sdk.NewDec(0), - MaxStandardCoinPerPool: sdk.NewInt(10_000_000_000), + Fee: sdkmath.LegacyNewDec(0), + PoolCreationFee: sdk.Coin{denomStandard, sdkmath.ZeroInt()}, + TaxRate: sdkmath.LegacyNewDec(0), + MaxStandardCoinPerPool: sdkmath.NewInt(10_000_000_000), MaxSwapAmount: sdk.NewCoins(sdk.NewInt64Coin(denomBTC, 10_000_000), sdk.NewInt64Coin(denomETH, 10_000_000), ), } suite.app.CoinswapKeeper.SetParams(suite.ctx, params) - amountInit, _ := sdk.NewIntFromString("30000000000") + amountInit, _ := sdkmath.NewIntFromString("30000000000") addrSender := sdk.AccAddress(getRandomString(20)) _ = suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, addrSender) @@ -228,11 +229,11 @@ func createReservePool(suite *TestSuite, denom string) (sdk.AccAddress, sdk.AccA err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, addrSender, coins) suite.NoError(err) - depositAmt, _ := sdk.NewIntFromString("10000000000") + depositAmt, _ := sdkmath.NewIntFromString("10000000000") depositCoin := sdk.NewCoin(denom, depositAmt) - standardAmt, _ := sdk.NewIntFromString("10000000000") - minReward := sdk.NewInt(1) + standardAmt, _ := sdkmath.NewIntFromString("10000000000") + minReward := sdkmath.NewInt(1) deadline := time.Now().Add(1 * time.Minute) msg := types.NewMsgAddLiquidity(depositCoin, standardAmt, minReward, deadline.Unix(), addrSender.String()) _, err = suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, msg) @@ -266,8 +267,8 @@ func createReservePool(suite *TestSuite, denom string) (sdk.AccAddress, sdk.AccA func (suite *TestSuite) TestTradeInputForExactOutput() { sender, poolAddr := createReservePool(suite, denomBTC) - outputCoin := sdk.NewCoin(denomStandard, sdk.NewInt(1000)) - inputCoin := sdk.NewCoin(denomBTC, sdk.NewInt(1000000)) + outputCoin := sdk.NewCoin(denomStandard, sdkmath.NewInt(1000)) + inputCoin := sdk.NewCoin(denomBTC, sdkmath.NewInt(1000000)) input := types.Input{ Address: sender.String(), Coin: inputCoin, @@ -307,8 +308,8 @@ func (suite *TestSuite) TestTradeInputForExactOutput() { func (suite *TestSuite) TestTradeExactInputForOutput() { sender, poolAddr := createReservePool(suite, denomBTC) - outputCoin := sdk.NewCoin(denomStandard, sdk.NewInt(0)) - inputCoin := sdk.NewCoin(denomBTC, sdk.NewInt(10000)) + outputCoin := sdk.NewCoin(denomStandard, sdkmath.NewInt(0)) + inputCoin := sdk.NewCoin(denomBTC, sdkmath.NewInt(10000)) input := types.Input{ Address: sender.String(), Coin: inputCoin, diff --git a/x/coinswap/module.go b/x/coinswap/module.go index 17b280e88..850acfe8b 100644 --- a/x/coinswap/module.go +++ b/x/coinswap/module.go @@ -10,7 +10,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -20,7 +20,6 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/Canto-Network/Canto/v7/x/coinswap/client/cli" - "github.com/Canto-Network/Canto/v7/x/coinswap/client/rest" "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" "github.com/Canto-Network/Canto/v7/x/coinswap/simulation" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -109,6 +108,12 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.Acc } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + // Name returns the coinswap module's name. func (AppModule) Name() string { return types.ModuleName } @@ -121,19 +126,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { // RegisterInvariants registers the coinswap module invariants. func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -// Route returns the message routing key for the coinswap module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the coinswap module's querier route name. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the coinswap module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // InitGenesis performs genesis initialization for the coinswap module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { @@ -152,14 +144,6 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements AppModule/ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 3 } -// BeginBlock performs a no-op. -func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} - -// EndBlock returns the end blocker for the coinswap module. It returns no validator updates. -func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // ____________________________________________________________________________ // AppModuleSimulation functions diff --git a/x/coinswap/simulation/operations.go b/x/coinswap/simulation/operations.go index d00e72189..90a0d5cc1 100644 --- a/x/coinswap/simulation/operations.go +++ b/x/coinswap/simulation/operations.go @@ -6,12 +6,11 @@ import ( "strings" "time" + errorsmod "cosmossdk.io/errors" + simappparams "cosmossdk.io/simapp/params" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp/helpers" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -89,7 +88,7 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B var ( maxToken sdk.Coin - minLiquidity sdk.Int + minLiquidity sdkmath.Int ) standardDenom := k.GetStandardDenom(ctx) @@ -349,8 +348,8 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type standardDenom := k.GetStandardDenom(ctx) var ( - minToken sdk.Int - minStandardAmt sdk.Int + minToken sdkmath.Int + minStandardAmt sdkmath.Int withdrawLiquidity sdk.Coin ) @@ -472,7 +471,7 @@ func doubleSwapBill(inputCoin, outputCoin sdk.Coin, ctx sdk.Context, k keeper.Ke outputReserve := reservePool.AmountOf(outputCoin.Denom) inputReserve := reservePool.AmountOf(standardDenom) if outputCoin.Amount.GTE(outputReserve) { - return sdk.Coin{}, sdk.Coin{}, sdkerrors.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", outputCoin.Denom, outputCoin.Amount, outputReserve)) + return sdk.Coin{}, sdk.Coin{}, errorsmod.Wrap(types.ErrConstraintNotMet, fmt.Sprintf("insufficient amount of %s, user expected: %s, actual: %s", outputCoin.Denom, outputCoin.Amount, outputReserve)) } soldStandardAmount := keeper.GetOutputPrice(outputCoin.Amount, inputReserve, outputReserve, param.Fee) soldStandardCoin := sdk.NewCoin(standardDenom, soldStandardAmount) diff --git a/x/coinswap/simulation/params.go b/x/coinswap/simulation/params.go index 7b2badc7f..4d682e037 100644 --- a/x/coinswap/simulation/params.go +++ b/x/coinswap/simulation/params.go @@ -4,6 +4,7 @@ import ( "fmt" "math/rand" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -18,7 +19,7 @@ func ParamChanges(r *rand.Rand) []simtypes.ParamChange { simulation.NewSimParamChange( types.ModuleName, string(types.KeyFee), func(r *rand.Rand) string { - return fmt.Sprintf("\"%s\"", sdk.NewDecWithPrec(r.Int63n(3), 3)) // 0.1%~0.3% + return fmt.Sprintf("\"%s\"", sdkmath.LegacyNewDecWithPrec(r.Int63n(3), 3)) // 0.1%~0.3% }, ), } diff --git a/x/coinswap/types/errors.go b/x/coinswap/types/errors.go index f8e3a6d81..9ad81ab63 100644 --- a/x/coinswap/types/errors.go +++ b/x/coinswap/types/errors.go @@ -1,18 +1,18 @@ package types import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // coinswap module sentinel errors var ( - ErrReservePoolNotExists = sdkerrors.Register(ModuleName, 2, "reserve pool not exists") - ErrEqualDenom = sdkerrors.Register(ModuleName, 3, "input and output denomination are equal") - ErrNotContainStandardDenom = sdkerrors.Register(ModuleName, 4, "must have one standard denom") - ErrMustStandardDenom = sdkerrors.Register(ModuleName, 5, "must be standard denom") - ErrInvalidDenom = sdkerrors.Register(ModuleName, 6, "invalid denom") - ErrInvalidDeadline = sdkerrors.Register(ModuleName, 7, "invalid deadline") - ErrConstraintNotMet = sdkerrors.Register(ModuleName, 8, "constraint not met") - ErrInsufficientFunds = sdkerrors.Register(ModuleName, 9, "insufficient funds") - ErrMaxedStandardDenom = sdkerrors.Register(ModuleName, 10, "standard denom amount exceed max list") + ErrReservePoolNotExists = errorsmod.Register(ModuleName, 2, "reserve pool not exists") + ErrEqualDenom = errorsmod.Register(ModuleName, 3, "input and output denomination are equal") + ErrNotContainStandardDenom = errorsmod.Register(ModuleName, 4, "must have one standard denom") + ErrMustStandardDenom = errorsmod.Register(ModuleName, 5, "must be standard denom") + ErrInvalidDenom = errorsmod.Register(ModuleName, 6, "invalid denom") + ErrInvalidDeadline = errorsmod.Register(ModuleName, 7, "invalid deadline") + ErrConstraintNotMet = errorsmod.Register(ModuleName, 8, "constraint not met") + ErrInsufficientFunds = errorsmod.Register(ModuleName, 9, "insufficient funds") + ErrMaxedStandardDenom = errorsmod.Register(ModuleName, 10, "standard denom amount exceed max list") ) diff --git a/x/coinswap/types/msgs.go b/x/coinswap/types/msgs.go index 6452f8ebd..824366760 100644 --- a/x/coinswap/types/msgs.go +++ b/x/coinswap/types/msgs.go @@ -1,6 +1,8 @@ package types import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) @@ -67,7 +69,7 @@ func (msg MsgSwapOrder) ValidateBasic() error { } if msg.Input.Coin.Denom == msg.Output.Coin.Denom { - return sdkerrors.Wrap(ErrEqualDenom, "invalid swap") + return errorsmod.Wrap(ErrEqualDenom, "invalid swap") } return ValidateDeadline(msg.Deadline) @@ -94,8 +96,8 @@ func (msg MsgSwapOrder) GetSigners() []sdk.AccAddress { // NewMsgAddLiquidity creates a new MsgAddLiquidity object. func NewMsgAddLiquidity( maxToken sdk.Coin, - exactStandardAmt sdk.Int, - minLiquidity sdk.Int, + exactStandardAmt sdkmath.Int, + minLiquidity sdkmath.Int, deadline int64, sender string, ) *MsgAddLiquidity { @@ -133,7 +135,7 @@ func (msg MsgAddLiquidity) ValidateBasic() error { } if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) } return nil } @@ -158,9 +160,9 @@ func (msg MsgAddLiquidity) GetSigners() []sdk.AccAddress { // NewMsgRemoveLiquidity creates a new MsgRemoveLiquidity object func NewMsgRemoveLiquidity( - minToken sdk.Int, + minToken sdkmath.Int, withdrawLiquidity sdk.Coin, - minStandardAmt sdk.Int, + minStandardAmt sdkmath.Int, deadline int64, sender string, ) *MsgRemoveLiquidity { @@ -198,7 +200,7 @@ func (msg MsgRemoveLiquidity) ValidateBasic() error { } if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) } return nil } diff --git a/x/coinswap/types/msgs_test.go b/x/coinswap/types/msgs_test.go index 20374c803..2988000bf 100644 --- a/x/coinswap/types/msgs_test.go +++ b/x/coinswap/types/msgs_test.go @@ -3,8 +3,9 @@ package types import ( "testing" - "github.com/tendermint/tendermint/crypto/tmhash" + "github.com/cometbft/cometbft/crypto/tmhash" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -50,8 +51,8 @@ func TestMsgSwapOrder_ValidateBasic(t *testing.T) { func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { type fields struct { MaxToken sdk.Coin - ExactStandardAmt sdk.Int - MinLiquidity sdk.Int + ExactStandardAmt sdkmath.Int + MinLiquidity sdkmath.Int Deadline int64 Sender string } @@ -65,8 +66,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("131stake", 1000), - ExactStandardAmt: sdk.NewInt(100), - MinLiquidity: sdk.NewInt(100), + ExactStandardAmt: sdkmath.NewInt(100), + MinLiquidity: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -76,8 +77,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("stake", -1000), - ExactStandardAmt: sdk.NewInt(100), - MinLiquidity: sdk.NewInt(100), + ExactStandardAmt: sdkmath.NewInt(100), + MinLiquidity: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -87,8 +88,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("stake", 1000), - ExactStandardAmt: sdk.NewInt(-100), - MinLiquidity: sdk.NewInt(100), + ExactStandardAmt: sdkmath.NewInt(-100), + MinLiquidity: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -98,8 +99,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("stake", 1000), - ExactStandardAmt: sdk.NewInt(100), - MinLiquidity: sdk.NewInt(-100), + ExactStandardAmt: sdkmath.NewInt(100), + MinLiquidity: sdkmath.NewInt(-100), Deadline: 1611213344, Sender: sender, }, @@ -109,8 +110,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("stake", 1000), - ExactStandardAmt: sdk.NewInt(100), - MinLiquidity: sdk.NewInt(100), + ExactStandardAmt: sdkmath.NewInt(100), + MinLiquidity: sdkmath.NewInt(100), Deadline: 0, Sender: sender, }, @@ -120,8 +121,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ MaxToken: buildCoin("stake", 1000), - ExactStandardAmt: sdk.NewInt(100), - MinLiquidity: sdk.NewInt(100), + ExactStandardAmt: sdkmath.NewInt(100), + MinLiquidity: sdkmath.NewInt(100), Deadline: 0, Sender: "", }, @@ -146,8 +147,8 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { type fields struct { WithdrawLiquidity sdk.Coin - MinToken sdk.Int - MinStandardAmt sdk.Int + MinToken sdkmath.Int + MinStandardAmt sdkmath.Int Deadline int64 Sender string } @@ -161,8 +162,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("stake", 1000), - MinToken: sdk.NewInt(100), - MinStandardAmt: sdk.NewInt(100), + MinToken: sdkmath.NewInt(100), + MinStandardAmt: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -172,8 +173,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("131stake", 1000), - MinToken: sdk.NewInt(100), - MinStandardAmt: sdk.NewInt(100), + MinToken: sdkmath.NewInt(100), + MinStandardAmt: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -183,8 +184,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("stake", -1000), - MinToken: sdk.NewInt(-100), - MinStandardAmt: sdk.NewInt(100), + MinToken: sdkmath.NewInt(-100), + MinStandardAmt: sdkmath.NewInt(100), Deadline: 1611213344, Sender: sender, }, @@ -194,8 +195,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("stake", 1000), - MinToken: sdk.NewInt(100), - MinStandardAmt: sdk.NewInt(-100), + MinToken: sdkmath.NewInt(100), + MinStandardAmt: sdkmath.NewInt(-100), Deadline: 1611213344, Sender: sender, }, @@ -205,8 +206,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("stake", 1000), - MinToken: sdk.NewInt(100), - MinStandardAmt: sdk.NewInt(100), + MinToken: sdkmath.NewInt(100), + MinStandardAmt: sdkmath.NewInt(100), Deadline: 0, Sender: sender, }, @@ -216,8 +217,8 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { wantErr: true, fields: fields{ WithdrawLiquidity: buildCoin("stake", 1000), - MinToken: sdk.NewInt(100), - MinStandardAmt: sdk.NewInt(100), + MinToken: sdkmath.NewInt(100), + MinStandardAmt: sdkmath.NewInt(100), Deadline: 0, Sender: "", }, @@ -242,6 +243,6 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { func buildCoin(denom string, amt int64) sdk.Coin { return sdk.Coin{ Denom: denom, - Amount: sdk.NewInt(amt), + Amount: sdkmath.NewInt(amt), } } diff --git a/x/coinswap/types/params.go b/x/coinswap/types/params.go index c5c4d5626..9a696c1dd 100644 --- a/x/coinswap/types/params.go +++ b/x/coinswap/types/params.go @@ -5,6 +5,7 @@ import ( "gopkg.in/yaml.v2" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -24,19 +25,19 @@ var ( KeyMaxStandardCoinPerPool = []byte("MaxStandardCoinPerPool") // max standard coin amount per pool KeyMaxSwapAmount = []byte("MaxSwapAmount") // whitelisted denoms - DefaultFee = sdk.NewDecWithPrec(0, 0) + DefaultFee = sdkmath.LegacyNewDecWithPrec(0, 0) DefaultPoolCreationFee = sdk.NewInt64Coin(sdk.DefaultBondDenom, 0) - DefaultTaxRate = sdk.NewDecWithPrec(0, 0) - DefaultMaxStandardCoinPerPool = sdk.NewIntWithDecimal(10000, 18) + DefaultTaxRate = sdkmath.LegacyNewDecWithPrec(0, 0) + DefaultMaxStandardCoinPerPool = sdkmath.NewIntWithDecimal(10000, 18) DefaultMaxSwapAmount = sdk.NewCoins( - sdk.NewCoin(UsdcIBCDenom, sdk.NewIntWithDecimal(10, 6)), - sdk.NewCoin(UsdtIBCDenom, sdk.NewIntWithDecimal(10, 6)), - sdk.NewCoin(EthIBCDenom, sdk.NewIntWithDecimal(1, 16)), + sdk.NewCoin(UsdcIBCDenom, sdkmath.NewIntWithDecimal(10, 6)), + sdk.NewCoin(UsdtIBCDenom, sdkmath.NewIntWithDecimal(10, 6)), + sdk.NewCoin(EthIBCDenom, sdkmath.NewIntWithDecimal(1, 16)), ) ) // NewParams is the coinswap params constructor -func NewParams(fee, taxRate sdk.Dec, poolCreationFee sdk.Coin, maxStandardCoinPerPool sdk.Int, maxSwapAmount sdk.Coins) Params { +func NewParams(fee, taxRate sdkmath.LegacyDec, poolCreationFee sdk.Coin, maxStandardCoinPerPool sdkmath.Int, maxSwapAmount sdk.Coins) Params { return Params{ Fee: fee, TaxRate: taxRate, @@ -81,19 +82,19 @@ func (p Params) String() string { // Validate returns err if Params is invalid func (p Params) Validate() error { - if p.Fee.IsNegative() || !p.Fee.LT(sdk.OneDec()) { + if p.Fee.IsNegative() || !p.Fee.LT(sdkmath.LegacyOneDec()) { return fmt.Errorf("fee must be positive and less than 1: %s", p.Fee.String()) } return nil } func validateFee(i interface{}) error { - v, ok := i.(sdk.Dec) + v, ok := i.(sdkmath.LegacyDec) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } - if v.IsNegative() || !v.LT(sdk.OneDec()) { + if v.IsNegative() || !v.LT(sdkmath.LegacyOneDec()) { return fmt.Errorf("fee must be positive and less than 1: %s", v.String()) } @@ -113,19 +114,19 @@ func validatePoolCreationFee(i interface{}) error { } func validateTaxRate(i interface{}) error { - v, ok := i.(sdk.Dec) + v, ok := i.(sdkmath.LegacyDec) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } - if v.IsNegative() || !v.LT(sdk.OneDec()) { + if v.IsNegative() || !v.LT(sdkmath.LegacyOneDec()) { return fmt.Errorf("fee must be positive and less than 1: %s", v.String()) } return nil } func validateMaxStandardCoinPerPool(i interface{}) error { - v, ok := i.(sdk.Int) + v, ok := i.(sdkmath.Int) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } @@ -152,7 +153,7 @@ func validateMaxSwapAmount(i interface{}) error { return err } - if coin.Amount.LT(sdk.ZeroInt()) { + if coin.Amount.LT(sdkmath.ZeroInt()) { return fmt.Errorf("coin amount must be positive") } } diff --git a/x/coinswap/types/query.pb.go b/x/coinswap/types/query.pb.go index 3747d0422..93afc6d7f 100644 --- a/x/coinswap/types/query.pb.go +++ b/x/coinswap/types/query.pb.go @@ -9,7 +9,7 @@ import ( types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/coinswap/types/tx.pb.go b/x/coinswap/types/tx.pb.go index f4410833a..24ea10fb4 100644 --- a/x/coinswap/types/tx.pb.go +++ b/x/coinswap/types/tx.pb.go @@ -9,7 +9,7 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/coinswap/types/utils.go b/x/coinswap/types/utils.go index 2a315f190..971eaeb42 100644 --- a/x/coinswap/types/utils.go +++ b/x/coinswap/types/utils.go @@ -5,7 +5,7 @@ import ( "strconv" "strings" - "github.com/tendermint/tendermint/crypto" + "github.com/cometbft/cometbft/crypto" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/coinswap/types/validation.go b/x/coinswap/types/validation.go index 2e604af47..d23cc6c56 100644 --- a/x/coinswap/types/validation.go +++ b/x/coinswap/types/validation.go @@ -4,6 +4,8 @@ import ( fmt "fmt" "strings" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) @@ -11,15 +13,15 @@ import ( // ValidateInput verifies whether the given input is legal func ValidateInput(input Input) error { if !(input.Coin.IsValid() && input.Coin.IsPositive()) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "invalid input (%s)", input.Coin.String()) + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid input (%s)", input.Coin.String()) } if strings.HasPrefix(input.Coin.Denom, LptTokenPrefix) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "invalid input denom, should not begin with (%s)", LptTokenPrefix) + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid input denom, should not begin with (%s)", LptTokenPrefix) } if _, err := sdk.AccAddressFromBech32(input.Address); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid input address (%s)", err) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid input address (%s)", err) } return nil } @@ -27,15 +29,15 @@ func ValidateInput(input Input) error { // ValidateOutput verifies whether the given output is legal func ValidateOutput(output Output) error { if !(output.Coin.IsValid() && output.Coin.IsPositive()) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "invalid output (%s)", output.Coin.String()) + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid output (%s)", output.Coin.String()) } if strings.HasPrefix(output.Coin.Denom, LptTokenPrefix) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "invalid output denom, should not begin with (%s)", LptTokenPrefix) + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid output denom, should not begin with (%s)", LptTokenPrefix) } if _, err := sdk.AccAddressFromBech32(output.Address); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid output address (%s)", err) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid output address (%s)", err) } return nil } @@ -43,7 +45,7 @@ func ValidateOutput(output Output) error { // ValidateDeadline verifies whether the given deadline is legal func ValidateDeadline(deadline int64) error { if deadline <= 0 { - return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, fmt.Sprintf("deadline %d must be greater than 0", deadline)) + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, fmt.Sprintf("deadline %d must be greater than 0", deadline)) } return nil } @@ -51,35 +53,35 @@ func ValidateDeadline(deadline int64) error { // ValidateMaxToken verifies whether the maximum token is legal func ValidateMaxToken(maxToken sdk.Coin) error { if !(maxToken.IsValid() && maxToken.IsPositive()) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "invalid maxToken (%s)", maxToken.String()) + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid maxToken (%s)", maxToken.String()) } if strings.HasPrefix(maxToken.Denom, LptTokenPrefix) { - return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "max token must be non-liquidity token") + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "max token must be non-liquidity token") } return nil } // ValidateExactStandardAmt verifies whether the standard token amount is legal -func ValidateExactStandardAmt(standardAmt sdk.Int) error { +func ValidateExactStandardAmt(standardAmt sdkmath.Int) error { if !standardAmt.IsPositive() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "standard token amount must be positive") + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "standard token amount must be positive") } return nil } // ValidateMinLiquidity verifies whether the minimum liquidity is legal -func ValidateMinLiquidity(minLiquidity sdk.Int) error { +func ValidateMinLiquidity(minLiquidity sdkmath.Int) error { if minLiquidity.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum liquidity can not be negative") + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum liquidity can not be negative") } return nil } // ValidateMinToken verifies whether the minimum token amount is legal -func ValidateMinToken(minToken sdk.Int) error { +func ValidateMinToken(minToken sdkmath.Int) error { if minToken.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "minimum token amount can not be negative") + return errorsmod.Wrap(sdkerrors.ErrInvalidCoins, "minimum token amount can not be negative") } return nil } @@ -87,7 +89,7 @@ func ValidateMinToken(minToken sdk.Int) error { // ValidateWithdrawLiquidity verifies whether the given liquidity is legal func ValidateWithdrawLiquidity(liquidity sdk.Coin) error { if !liquidity.IsValid() || !liquidity.IsPositive() { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "invalid withdrawLiquidity (%s)", liquidity.String()) + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "invalid withdrawLiquidity (%s)", liquidity.String()) } if err := ValidateLptDenom(liquidity.Denom); err != nil { @@ -97,9 +99,9 @@ func ValidateWithdrawLiquidity(liquidity sdk.Coin) error { } // ValidateMinStandardAmt verifies whether the minimum standard amount is legal -func ValidateMinStandardAmt(minStandardAmt sdk.Int) error { +func ValidateMinStandardAmt(minStandardAmt sdkmath.Int) error { if minStandardAmt.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, fmt.Sprintf("minimum standard token amount %s can not be negative", minStandardAmt.String())) + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, fmt.Sprintf("minimum standard token amount %s can not be negative", minStandardAmt.String())) } return nil } @@ -107,7 +109,7 @@ func ValidateMinStandardAmt(minStandardAmt sdk.Int) error { // ValidateLptDenom returns nil if the Liquidity pool token denom is valid func ValidateLptDenom(lptDenom string) error { if _, err := ParseLptDenom(lptDenom); err != nil { - return sdkerrors.Wrap(ErrInvalidDenom, lptDenom) + return errorsmod.Wrap(ErrInvalidDenom, lptDenom) } return nil } diff --git a/x/csr/handler.go b/x/csr/handler.go index 0f7c8d536..832127fe8 100644 --- a/x/csr/handler.go +++ b/x/csr/handler.go @@ -3,17 +3,19 @@ package csr import ( "fmt" + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/csr/keeper" "github.com/Canto-Network/Canto/v7/x/csr/types" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) // NewHandler for the CSR module. This will not handle msg types because all transactions occur directly // through the CSR Turnstile Smart Contract. -func NewHandler(k keeper.Keeper) sdk.Handler { +func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } } diff --git a/x/csr/keeper/csr.go b/x/csr/keeper/csr.go index 7846eb3b9..39e702d12 100644 --- a/x/csr/keeper/csr.go +++ b/x/csr/keeper/csr.go @@ -3,8 +3,8 @@ package keeper import ( "encoding/binary" + "cosmossdk.io/store/prefix" "github.com/Canto-Network/Canto/v7/x/csr/types" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" ) diff --git a/x/csr/keeper/errors.go b/x/csr/keeper/errors.go index c51f79afc..42262b84b 100644 --- a/x/csr/keeper/errors.go +++ b/x/csr/keeper/errors.go @@ -3,19 +3,19 @@ package keeper // DONTCOVER import ( + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/csr/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) // x/csr module sentinel errors var ( - ErrPrevRegisteredSmartContract = sdkerrors.Register(types.ModuleName, 2000, "You cannot register a smart contract that was previously registered") - ErrFeeDistribution = sdkerrors.Register(types.ModuleName, 2001, "There was an error sending fees from the fee collector to NFT") - ErrContractDeployments = sdkerrors.Register(types.ModuleName, 2004, "There was an error deploying a contract from the CSR module") - ErrMethodCall = sdkerrors.Register(types.ModuleName, 2005, "There was an error calling a method on a smart contract from the module account") - ErrRegisterInvalidContract = sdkerrors.Register(types.ModuleName, 2007, "Register/update must have a valid smart contract address entered") - ErrNonexistentAcct = sdkerrors.Register(types.ModuleName, 2008, "The recipient of a register event must be an EOA that exists") - ErrNonexistentCSR = sdkerrors.Register(types.ModuleName, 2009, "The CSR that was queried does not currently exist") - ErrNFTNotFound = sdkerrors.Register(types.ModuleName, 2010, "The NFT that was queried does not currently exist") - ErrDuplicateNFTID = sdkerrors.Register(types.ModuleName, 2011, "There cannot be duplicate NFT IDs passed into a register event") + ErrPrevRegisteredSmartContract = errorsmod.Register(types.ModuleName, 2000, "You cannot register a smart contract that was previously registered") + ErrFeeDistribution = errorsmod.Register(types.ModuleName, 2001, "There was an error sending fees from the fee collector to NFT") + ErrContractDeployments = errorsmod.Register(types.ModuleName, 2004, "There was an error deploying a contract from the CSR module") + ErrMethodCall = errorsmod.Register(types.ModuleName, 2005, "There was an error calling a method on a smart contract from the module account") + ErrRegisterInvalidContract = errorsmod.Register(types.ModuleName, 2007, "Register/update must have a valid smart contract address entered") + ErrNonexistentAcct = errorsmod.Register(types.ModuleName, 2008, "The recipient of a register event must be an EOA that exists") + ErrNonexistentCSR = errorsmod.Register(types.ModuleName, 2009, "The CSR that was queried does not currently exist") + ErrNFTNotFound = errorsmod.Register(types.ModuleName, 2010, "The NFT that was queried does not currently exist") + ErrDuplicateNFTID = errorsmod.Register(types.ModuleName, 2011, "There cannot be duplicate NFT IDs passed into a register event") ) diff --git a/x/csr/keeper/event_handler.go b/x/csr/keeper/event_handler.go index e29b5bbea..ebf698421 100644 --- a/x/csr/keeper/event_handler.go +++ b/x/csr/keeper/event_handler.go @@ -1,7 +1,7 @@ package keeper import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" "github.com/ethereum/go-ethereum/common" "github.com/Canto-Network/Canto/v7/x/csr/types" @@ -31,7 +31,7 @@ func (k Keeper) RegisterEvent(ctx sdk.Context, data []byte) error { nftID := event.TokenId.Uint64() _, found := k.GetCSR(ctx, nftID) if found { - return sdkerrors.Wrapf(ErrDuplicateNFTID, "EventHandler::RegisterEvent this NFT id has already been registered: %d", nftID) + return errorsmod.Wrapf(ErrDuplicateNFTID, "EventHandler::RegisterEvent this NFT id has already been registered: %d", nftID) } // Create CSR object and perform stateless validation @@ -71,7 +71,7 @@ func (k Keeper) UpdateEvent(ctx sdk.Context, data []byte) error { nftID := event.TokenId.Uint64() csr, found := k.GetCSR(ctx, nftID) if !found { - return sdkerrors.Wrapf(ErrNFTNotFound, "EventHandler::UpdateEvent the nft entered does not currently exist: %d", nftID) + return errorsmod.Wrapf(ErrNFTNotFound, "EventHandler::UpdateEvent the nft entered does not currently exist: %d", nftID) } // Add the new smart contract to the CSR NFT and validate csr.Contracts = append(csr.Contracts, event.SmartContract.String()) @@ -91,14 +91,14 @@ func (k Keeper) ValidateContract(ctx sdk.Context, contract common.Address) error // Check if the smart contract is already registered -> prevent double registration nftID, found := k.GetNFTByContract(ctx, contract.String()) if found { - return sdkerrors.Wrapf(ErrPrevRegisteredSmartContract, + return errorsmod.Wrapf(ErrPrevRegisteredSmartContract, "EventHandler::ValidateContract this smart contract is already registered to an existing NFT: %d", nftID) } // Check if the user is attempting to register a non-smart contract address (i.e. an EOA or non-existent address) account := k.evmKeeper.GetAccount(ctx, contract) if account == nil || !account.IsContract() { - return sdkerrors.Wrapf(ErrRegisterInvalidContract, + return errorsmod.Wrapf(ErrRegisterInvalidContract, "EventHandler::ValidateContract user is attempting to register/assign a nil or non-smart contract address") } return nil diff --git a/x/csr/keeper/evm.go b/x/csr/keeper/evm.go index 2961936e4..722c26aa3 100644 --- a/x/csr/keeper/evm.go +++ b/x/csr/keeper/evm.go @@ -3,10 +3,10 @@ package keeper import ( "math/big" + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/x/csr/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -24,7 +24,7 @@ func (k Keeper) DeployTurnstile( ) (common.Address, error) { addr, err := k.DeployContract(ctx, contracts.TurnstileContract) if err != nil { - return common.Address{}, sdkerrors.Wrapf(ErrContractDeployments, + return common.Address{}, errorsmod.Wrapf(ErrContractDeployments, "EVM::DeployTurnstile error deploying Turnstile: %s", err.Error()) } return addr, nil @@ -42,7 +42,7 @@ func (k Keeper) DeployContract( // method name is nil in this case, we are calling the constructor ctorArgs, err := contract.ABI.Pack("", args...) if err != nil { - return common.Address{}, sdkerrors.Wrapf(ErrContractDeployments, + return common.Address{}, errorsmod.Wrapf(ErrContractDeployments, "EVM::DeployContract error packing data: %s", err.Error()) } @@ -59,7 +59,7 @@ func (k Keeper) DeployContract( nonce, err := k.accountKeeper.GetSequence(ctx, types.ModuleAddress.Bytes()) if err != nil { return common.Address{}, - sdkerrors.Wrapf(ErrContractDeployments, + errorsmod.Wrapf(ErrContractDeployments, "EVM::DeployContract error retrieving nonce: %s", err.Error()) } @@ -67,7 +67,7 @@ func (k Keeper) DeployContract( _, err = k.CallEVM(ctx, types.ModuleAddress, nil, amount, data, true) if err != nil { return common.Address{}, - sdkerrors.Wrapf(ErrContractDeployments, + errorsmod.Wrapf(ErrContractDeployments, "EVM::DeployContract error deploying contract: %s", err.Error()) } @@ -91,13 +91,13 @@ func (k Keeper) CallMethod( // pack method args data, err := contract.ABI.Pack(method, args...) if err != nil { - return nil, sdkerrors.Wrapf(ErrMethodCall, "EVM::CallMethod there was an issue packing the arguments into the method signature: %s", err.Error()) + return nil, errorsmod.Wrapf(ErrMethodCall, "EVM::CallMethod there was an issue packing the arguments into the method signature: %s", err.Error()) } // call method resp, err := k.CallEVM(ctx, from, contractAddr, amount, data, true) if err != nil { - return nil, sdkerrors.Wrapf(ErrMethodCall, "EVM::CallMethod error applying message: %s", err.Error()) + return nil, errorsmod.Wrapf(ErrMethodCall, "EVM::CallMethod error applying message: %s", err.Error()) } return resp, nil @@ -147,7 +147,7 @@ func (k Keeper) CallEVM( } if res.Failed() { - return nil, sdkerrors.Wrap(evmtypes.ErrVMExecution, res.VmError) + return nil, errorsmod.Wrap(evmtypes.ErrVMExecution, res.VmError) } return res, nil } diff --git a/x/csr/keeper/evm_hook_test.go b/x/csr/keeper/evm_hook_test.go index e17d823b3..bb2403785 100644 --- a/x/csr/keeper/evm_hook_test.go +++ b/x/csr/keeper/evm_hook_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "math/big" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" @@ -38,7 +39,7 @@ func (suite *KeeperTestSuite) TestCSRHook() { // Send some initial funds to the fee module account evmDenom := suite.app.EvmKeeper.GetParams(suite.ctx).EvmDenom - coins := sdk.Coins{{Denom: evmDenom, Amount: sdk.NewIntFromUint64(1000000000)}} + coins := sdk.Coins{{Denom: evmDenom, Amount: sdkmath.NewIntFromUint64(1000000000)}} suite.app.BankKeeper.MintCoins(suite.ctx, csrTypes.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToModule(suite.ctx, csrTypes.ModuleName, suite.app.CSRKeeper.FeeCollectorName, coins) diff --git a/x/csr/keeper/evm_hooks.go b/x/csr/keeper/evm_hooks.go index f93b9f8d0..cfc7f3197 100644 --- a/x/csr/keeper/evm_hooks.go +++ b/x/csr/keeper/evm_hooks.go @@ -3,8 +3,9 @@ package keeper import ( "math/big" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/x/csr/types" @@ -54,14 +55,14 @@ func (h Hooks) PostTxProcessing(ctx sdk.Context, msg core.Message, receipt *etht } // Get the gas fee for the TX - fee := sdk.NewIntFromUint64(receipt.GasUsed).Mul(sdk.NewIntFromBigInt(msg.GasPrice())) + fee := sdkmath.NewIntFromUint64(receipt.GasUsed).Mul(sdkmath.NewIntFromBigInt(msg.GasPrice())) evmDenom := h.k.evmKeeper.GetParams(ctx).EvmDenom fees := sdk.Coins{{Denom: evmDenom, Amount: fee}} // Send fees from fee collector to CSR module account before distribution err := h.k.bankKeeper.SendCoinsFromModuleToModule(ctx, h.k.FeeCollectorName, types.ModuleName, fees) if err != nil { - return sdkerrors.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to distribute fees from fee collector to module acount, %d", err) + return errorsmod.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to distribute fees from fee collector to module acount, %d", err) } contract := msg.To() @@ -69,7 +70,7 @@ func (h Hooks) PostTxProcessing(ctx sdk.Context, msg core.Message, receipt *etht // Burn the whole fee if TX isn't smart contract interaction errBurn := h.k.bankKeeper.BurnCoins(ctx, types.ModuleName, fees) if errBurn != nil { - return sdkerrors.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn base fee after contract was nill, %d", errBurn) + return errorsmod.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn base fee after contract was nill, %d", errBurn) } return nil } @@ -79,18 +80,18 @@ func (h Hooks) PostTxProcessing(ctx sdk.Context, msg core.Message, receipt *etht // Burn the whole fee if contract isn't registered to CSR errBurn := h.k.bankKeeper.BurnCoins(ctx, types.ModuleName, fees) if errBurn != nil { - return sdkerrors.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn base fee after NFT wasn't found, %d", errBurn) + return errorsmod.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn base fee after NFT wasn't found, %d", errBurn) } return nil } csr, found := h.k.GetCSR(ctx, nftID) if !found { - return sdkerrors.Wrapf(ErrNonexistentCSR, "EVMHook::PostTxProcessing the NFT ID was found but the CSR was not: %d", nftID) + return errorsmod.Wrapf(ErrNonexistentCSR, "EVMHook::PostTxProcessing the NFT ID was found but the CSR was not: %d", nftID) } // Calculate fees to be distributed = intFloor(GasUsed * GasPrice * csrShares) - csrFee := sdk.NewDecFromInt(fee).Mul(params.CsrShares).TruncateInt() + csrFee := sdkmath.LegacyNewDecFromInt(fee).Mul(params.CsrShares).TruncateInt() // Remaining fee is calculated by fee - csrFee = remainingFee remainingFee := fee.Sub(csrFee) @@ -99,20 +100,20 @@ func (h Hooks) PostTxProcessing(ctx sdk.Context, msg core.Message, receipt *etht // Get the turnstile which will receive funds for tx fees turnstileAddress, found := h.k.GetTurnstile(ctx) if !found { - return sdkerrors.Wrapf(ErrContractDeployments, "EVMHook::PostTxProcessing the turnstile contract has not been found.") + return errorsmod.Wrapf(ErrContractDeployments, "EVMHook::PostTxProcessing the turnstile contract has not been found.") } // Distribute CSR fee to turnstile contract by NFT ID distributeFees(amount, nftID) amount := csrFee.BigInt() _, err = h.k.CallMethod(ctx, "distributeFees", contracts.TurnstileContract, types.ModuleAddress, &turnstileAddress, amount, new(big.Int).SetUint64(nftID)) if err != nil { - return sdkerrors.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to distribute fees from module account to turnstile, %d", err) + return errorsmod.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to distribute fees from module account to turnstile, %d", err) } // Burn remaining base fee errBurn := h.k.bankKeeper.BurnCoins(ctx, types.ModuleName, burnRemainingFees) if errBurn != nil { - return sdkerrors.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn remaining base fee, %d", errBurn) + return errorsmod.Wrapf(ErrFeeDistribution, "EVMHook::PostTxProcessing failed to burn remaining base fee, %d", errBurn) } // Update metrics on the CSR obj @@ -129,7 +130,7 @@ func (h Hooks) processEvents(ctx sdk.Context, receipt *ethtypes.Receipt) { // Get the turnstile address from which state transition events are emitted turnstileAddress, found := h.k.GetTurnstile(ctx) if !found { - panic(sdkerrors.Wrapf(ErrContractDeployments, "EVMHook::PostTxProcessing the turnstile contract has not been found.")) + panic(errorsmod.Wrapf(ErrContractDeployments, "EVMHook::PostTxProcessing the turnstile contract has not been found.")) } for _, log := range receipt.Logs { diff --git a/x/csr/keeper/grpc_query.go b/x/csr/keeper/grpc_query.go index 0b6e12a8a..1da9693f4 100644 --- a/x/csr/keeper/grpc_query.go +++ b/x/csr/keeper/grpc_query.go @@ -4,8 +4,8 @@ import ( "context" "strings" + "cosmossdk.io/store/prefix" "github.com/Canto-Network/Canto/v7/x/csr/types" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" ethermint "github.com/evmos/ethermint/types" diff --git a/x/csr/keeper/integration_test.go b/x/csr/keeper/integration_test.go index 8f71699ad..9a6395f61 100644 --- a/x/csr/keeper/integration_test.go +++ b/x/csr/keeper/integration_test.go @@ -16,6 +16,7 @@ import ( evmtypes "github.com/evmos/ethermint/x/evm/types" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -43,7 +44,7 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { // Variables to track the state of CSR turnstileAddress common.Address - csrShares sdk.Dec + csrShares sdkmath.LegacyDec csrContracts map[uint64][]string revenueByNFT map[uint64]*big.Int @@ -66,7 +67,7 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { s.Require().NoError(err) // Initial balances for the account - initAmount := sdk.NewInt(int64(math.Pow10(18) * 4)) + initAmount := sdkmath.NewInt(int64(math.Pow10(18) * 4)) initBalance := sdk.NewCoins(sdk.NewCoin(s.denom, initAmount)) // Set up account that will be used to deploy smart contracts diff --git a/x/csr/keeper/keeper.go b/x/csr/keeper/keeper.go index 6541425a2..c351d2d87 100644 --- a/x/csr/keeper/keeper.go +++ b/x/csr/keeper/keeper.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" - + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/Canto-Network/Canto/v7/x/csr/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -14,7 +14,7 @@ import ( type ( Keeper struct { cdc codec.BinaryCodec - storeKey sdk.StoreKey + storeKey storetypes.StoreKey paramstore paramtypes.Subspace accountKeeper types.AccountKeeper @@ -26,7 +26,7 @@ type ( func NewKeeper( cdc codec.BinaryCodec, - storeKey sdk.StoreKey, + storeKey storetypes.StoreKey, ps paramtypes.Subspace, accountKeeper types.AccountKeeper, evmKeeper types.EVMKeeper, diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index 5e7799185..bf9da7519 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -9,6 +9,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/x/csr/types" @@ -25,14 +26,14 @@ import ( evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/ed25519" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/ed25519" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" ) type KeeperTestSuite struct { @@ -85,7 +86,7 @@ func (suite *KeeperTestSuite) SetupApp() { privCons, err := ethsecp256k1.GenerateKey() require.NoError(t, err) suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -130,21 +131,25 @@ func (suite *KeeperTestSuite) SetupApp() { evmParams.EvmDenom = suite.denom suite.app.EvmKeeper.SetParams(suite.ctx, evmParams) - stakingParams := suite.app.StakingKeeper.GetParams(suite.ctx) + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + require.NoError(t, err) stakingParams.BondDenom = suite.denom suite.app.StakingKeeper.SetParams(suite.ctx, stakingParams) // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) - suite.app.StakingKeeper.AfterValidatorCreated(suite.ctx, validator.GetOperator()) + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - validators := s.app.StakingKeeper.GetValidators(s.ctx, 1) + validators, err := s.app.StakingKeeper.GetValidators(s.ctx, 1) + require.NoError(t, err) suite.validator = validators[0] suite.ethSigner = ethtypes.LatestSignerForChainID(s.app.EvmKeeper.ChainID()) @@ -157,17 +162,18 @@ func (suite *KeeperTestSuite) Commit() { // Commit commits a block at a given time. func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - _ = suite.app.Commit() + suite.app.Commit() header := suite.ctx.BlockHeader() header.Height += 1 header.Time = header.Time.Add(t) - suite.app.BeginBlock(abci.RequestBeginBlock{ - Header: header, + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, }) // update ctx - suite.ctx = suite.app.BaseApp.NewContext(false, header) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evmtypes.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) @@ -221,9 +227,9 @@ func GenerateEventData(name string, contract evmtypes.CompiledContract, args ... // Helper function that will calculate how much revenue a NFT or the Turnstile should accumulate // Calculation is done by the following: int(gasUsed * gasPrice * csrShares) -func CalculateExpectedFee(gasUsed uint64, gasPrice *big.Int, csrShare sdk.Dec) sdk.Int { - fee := sdk.NewIntFromUint64(gasUsed).Mul(sdk.NewIntFromBigInt(gasPrice)) - expectedTurnstileBalance := sdk.NewDecFromInt(fee).Mul(csrShare).TruncateInt() +func CalculateExpectedFee(gasUsed uint64, gasPrice *big.Int, csrShare sdkmath.LegacyDec) sdkmath.Int { + fee := sdkmath.NewIntFromUint64(gasUsed).Mul(sdkmath.NewIntFromBigInt(gasPrice)) + expectedTurnstileBalance := sdkmath.LegacyNewDecFromInt(fee).Mul(csrShare).TruncateInt() return expectedTurnstileBalance } diff --git a/x/csr/keeper/params_test.go b/x/csr/keeper/params_test.go index d143d8412..8c1403857 100644 --- a/x/csr/keeper/params_test.go +++ b/x/csr/keeper/params_test.go @@ -1,8 +1,8 @@ package keeper_test import ( + sdkmath "cosmossdk.io/math" _ "github.com/Canto-Network/Canto/v7/x/csr/keeper" - sdk "github.com/cosmos/cosmos-sdk/types" ) // params test suite @@ -11,5 +11,5 @@ func (suite *KeeperTestSuite) TestParams() { // CSR is disabled by default suite.Require().False(params.EnableCsr) // Default CSRShares are 20% - suite.Require().Equal(params.CsrShares, sdk.NewDecWithPrec(20, 2)) + suite.Require().Equal(params.CsrShares, sdkmath.LegacyNewDecWithPrec(20, 2)) } diff --git a/x/csr/module.go b/x/csr/module.go index 7845ade4f..822d7ba4a 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -14,13 +14,13 @@ import ( "github.com/Canto-Network/Canto/v7/x/csr/client/cli" "github.com/Canto-Network/Canto/v7/x/csr/keeper" "github.com/Canto-Network/Canto/v7/x/csr/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - abci "github.com/tendermint/tendermint/abci/types" ) var ( @@ -113,6 +113,12 @@ func NewAppModule( } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + // Name returns the csr module's name. func (am AppModule) Name() string { return am.AppModuleBasic.Name() @@ -122,19 +128,6 @@ func (am AppModule) NewHandler() sdk.Handler { return NewHandler(am.keeper) } -// Route returns the csr module's message routing key. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, am.NewHandler()) -} - -// QuerierRoute returns the csr module's query routing key. -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// LegacyQuerierHandler returns the csr module's Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { @@ -166,7 +159,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 2 } // BeginBlock executes all ABCI BeginBlock logic respective to the csr module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context) { // check in begin block whether the Turnstile has been deployed, if not, deploy it and set it to state if _, found := am.keeper.GetTurnstile(ctx); !found { if am.keeper.GetParams(ctx).EnableCsr { // only deploy if csr is enabled diff --git a/x/csr/types/csr.go b/x/csr/types/csr.go index 660cd12ee..f0f149e31 100644 --- a/x/csr/types/csr.go +++ b/x/csr/types/csr.go @@ -1,8 +1,8 @@ package types import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" ethermint "github.com/evmos/ethermint/types" ) @@ -12,7 +12,7 @@ func NewCSR(contracts []string, id uint64) CSR { Contracts: contracts, Id: id, Txs: 0, - Revenue: sdk.Int(sdk.ZeroUint()), + Revenue: sdkmath.Int(sdkmath.ZeroUint()), } } @@ -23,11 +23,11 @@ func (csr CSR) Validate() error { seenSmartContracts := make(map[string]bool) for _, smartContract := range csr.Contracts { if err := ethermint.ValidateNonZeroAddress(smartContract); err != nil { - return sdkerrors.Wrapf(ErrInvalidSmartContractAddress, "CSR::Validate one or more of the entered smart contract address are invalid: %s", smartContract) + return errorsmod.Wrapf(ErrInvalidSmartContractAddress, "CSR::Validate one or more of the entered smart contract address are invalid: %s", smartContract) } if seenSmartContracts[smartContract] { - return sdkerrors.Wrapf(ErrDuplicateSmartContracts, "CSR::Validate there are duplicate smart contracts in this CSR: %s", smartContract) + return errorsmod.Wrapf(ErrDuplicateSmartContracts, "CSR::Validate there are duplicate smart contracts in this CSR: %s", smartContract) } seenSmartContracts[smartContract] = true } @@ -35,7 +35,7 @@ func (csr CSR) Validate() error { // Ensure that there is at least one smart contract in the CSR Pool numSmartContracts := len(csr.Contracts) if numSmartContracts < 1 { - return sdkerrors.Wrapf(ErrSmartContractSupply, "CSR::Validate # of smart contracts must be greater than 0 got: %d", numSmartContracts) + return errorsmod.Wrapf(ErrSmartContractSupply, "CSR::Validate # of smart contracts must be greater than 0 got: %d", numSmartContracts) } return nil } diff --git a/x/csr/types/csr.pb.go b/x/csr/types/csr.pb.go index d8fd9e36f..84fa1d55e 100644 --- a/x/csr/types/csr.pb.go +++ b/x/csr/types/csr.pb.go @@ -33,7 +33,7 @@ type CSR struct { Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` // The total number of transactions for this CSR NFT Txs uint64 `protobuf:"varint,3,opt,name=txs,proto3" json:"txs,omitempty"` - // The cumulative revenue for this CSR NFT -> represented as a sdk.Int + // The cumulative revenue for this CSR NFT -> represented as a sdkmath.Int Revenue github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=revenue,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"revenue"` } diff --git a/x/csr/types/errors.go b/x/csr/types/errors.go index a4cfb30f2..a56267651 100644 --- a/x/csr/types/errors.go +++ b/x/csr/types/errors.go @@ -1,13 +1,13 @@ package types import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // CSR module sentinel errors var ( - ErrSmartContractSupply = sdkerrors.Register(ModuleName, 1000, "The supply of smart contracts must be greater than 0") - ErrDuplicateSmartContracts = sdkerrors.Register(ModuleName, 1001, "There cannot be duplicate smart contracts") - ErrInvalidSmartContractAddress = sdkerrors.Register(ModuleName, 1002, "There cannot be invalid smart contract addresses") - ErrInvalidParams = sdkerrors.Register(ModuleName, 1003, "The parameters for CSR are invalid") + ErrSmartContractSupply = errorsmod.Register(ModuleName, 1000, "The supply of smart contracts must be greater than 0") + ErrDuplicateSmartContracts = errorsmod.Register(ModuleName, 1001, "There cannot be duplicate smart contracts") + ErrInvalidSmartContractAddress = errorsmod.Register(ModuleName, 1002, "There cannot be invalid smart contract addresses") + ErrInvalidParams = errorsmod.Register(ModuleName, 1003, "The parameters for CSR are invalid") ) diff --git a/x/csr/types/params.go b/x/csr/types/params.go index 5f3d348a7..c0dff9bab 100644 --- a/x/csr/types/params.go +++ b/x/csr/types/params.go @@ -1,14 +1,14 @@ package types import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) var ( DefaultEnableCSR = false - DefaultCSRShares = sdk.NewDecWithPrec(20, 2) + DefaultCSRShares = sdkmath.LegacyNewDecWithPrec(20, 2) ParamStoreKeyEnableCSR = []byte("EnableCSR") ParamStoreKeyCSRShares = []byte("CSRShares") @@ -20,7 +20,7 @@ func ParamKeyTable() paramtypes.KeyTable { } // NewParams creates a new Params instance -func NewParams(enableCSR bool, csrShares sdk.Dec) Params { +func NewParams(enableCSR bool, csrShares sdkmath.LegacyDec) Params { return Params{ EnableCsr: enableCSR, CsrShares: csrShares, @@ -44,7 +44,7 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { func ValidateEnableCSR(i interface{}) error { _, ok := i.(bool) if !ok { - return sdkerrors.Wrapf(ErrInvalidParams, "Params::Validate::ValidateEnableCSR enableCSR must be a bool") + return errorsmod.Wrapf(ErrInvalidParams, "Params::Validate::ValidateEnableCSR enableCSR must be a bool") } return nil @@ -52,22 +52,22 @@ func ValidateEnableCSR(i interface{}) error { // Validates the CSR share dec that is inputted func ValidateShares(i interface{}) error { - v, ok := i.(sdk.Dec) + v, ok := i.(sdkmath.LegacyDec) if !ok { - return sdkerrors.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares must be of type sdk.Dec") + return errorsmod.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares must be of type sdkmath.LegacyDec") } if v.IsNil() { - return sdkerrors.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares cannot have entry that is nil for CSRShares") + return errorsmod.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares cannot have entry that is nil for CSRShares") } if v.IsNegative() { - return sdkerrors.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares cannot be negative") + return errorsmod.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares cannot be negative") } - if v.GT(sdk.OneDec()) { - return sdkerrors.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares cannot be greater than 1") + if v.GT(sdkmath.LegacyOneDec()) { + return errorsmod.Wrapf(ErrInvalidParams, "Params::Validate::ValidateShares CSRShares cannot be greater than 1") } return nil diff --git a/x/csr/types/params_test.go b/x/csr/types/params_test.go index 6b0013397..cbdb39f1d 100644 --- a/x/csr/types/params_test.go +++ b/x/csr/types/params_test.go @@ -3,7 +3,7 @@ package types import ( "testing" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/require" ) @@ -19,7 +19,7 @@ func TestParamSetPairs(t *testing.T) { } func TestParamsValidate(t *testing.T) { - csrShares := sdk.NewDecWithPrec(50, 2) + csrShares := sdkmath.LegacyNewDecWithPrec(50, 2) testCases := []struct { name string @@ -39,12 +39,12 @@ func TestParamsValidate(t *testing.T) { }, { "Testing all goes to csrShares - pass", - Params{true, sdk.NewDecFromInt(sdk.NewInt(1))}, + Params{true, sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(1))}, true, }, { "Testing nothing goes to csrShares - pass", - Params{true, sdk.NewDecFromInt(sdk.NewInt(0))}, + Params{true, sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(0))}, true, }, { @@ -54,17 +54,17 @@ func TestParamsValidate(t *testing.T) { }, { "Testing CSR shares going over 100% - fail", - Params{true, sdk.NewDecFromInt(sdk.NewInt(2))}, + Params{true, sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(2))}, false, }, { "Testing CSR shares below 0 - fail", - Params{true, sdk.NewDecFromInt(sdk.NewInt(-1))}, + Params{true, sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(-1))}, false, }, { "Testing CSR shares below 0 - fail", - Params{true, sdk.NewDecFromInt(sdk.NewInt(-1))}, + Params{true, sdkmath.LegacyNewDecFromInt(sdkmath.NewInt(-1))}, false, }, } diff --git a/x/csr/types/query.pb.go b/x/csr/types/query.pb.go index 1b71cce46..91195b607 100644 --- a/x/csr/types/query.pb.go +++ b/x/csr/types/query.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index 953769071..ef8d04f73 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -4,9 +4,9 @@ import ( "testing" "time" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" simapp "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/x/epochs" @@ -20,7 +20,7 @@ func TestEpochsExportGenesis(t *testing.T) { feemarketGenesis.Params.NoBaseFee = false app := simapp.Setup(false, feemarketGenesis) - ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + ctx := app.BaseApp.NewContextLegacy(false, tmproto.Header{}) chainStartTime := ctx.BlockTime() chainStartHeight := ctx.BlockHeight() @@ -51,7 +51,7 @@ func TestEpochsInitGenesis(t *testing.T) { feemarketGenesis.Params.NoBaseFee = false app := simapp.Setup(false, feemarketGenesis) - ctx := app.BaseApp.NewContext(false, tmproto.Header{}) + ctx := app.BaseApp.NewContextLegacy(false, tmproto.Header{}) // On init genesis, default epochs information is set // To check init genesis again, should make it fresh status diff --git a/x/epochs/keeper/epoch_infos.go b/x/epochs/keeper/epoch_infos.go index 288a5eda7..4dd386cea 100644 --- a/x/epochs/keeper/epoch_infos.go +++ b/x/epochs/keeper/epoch_infos.go @@ -1,7 +1,8 @@ package keeper import ( - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/epochs/types" @@ -37,7 +38,7 @@ func (k Keeper) DeleteEpochInfo(ctx sdk.Context, identifier string) { func (k Keeper) IterateEpochInfo(ctx sdk.Context, fn func(index int64, epochInfo types.EpochInfo) (stop bool)) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixEpoch) - iterator := sdk.KVStorePrefixIterator(store, nil) + iterator := storetypes.KVStorePrefixIterator(store, nil) defer iterator.Close() i := int64(0) diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index e6546ac45..dff5d115f 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" "google.golang.org/grpc/codes" diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index 3155abf97..4b67b9c8b 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -3,9 +3,10 @@ package keeper import ( "fmt" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/libs/log" "github.com/Canto-Network/Canto/v7/x/epochs/types" ) @@ -13,12 +14,12 @@ import ( // Keeper of this module maintains collections of epochs and hooks. type Keeper struct { cdc codec.Codec - storeKey sdk.StoreKey + storeKey storetypes.StoreKey hooks types.EpochHooks } // NewKeeper returns a new instance of epochs Keeper -func NewKeeper(cdc codec.Codec, storeKey sdk.StoreKey) *Keeper { +func NewKeeper(cdc codec.Codec, storeKey storetypes.StoreKey) *Keeper { return &Keeper{ cdc: cdc, storeKey: storeKey, diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index f55d556c0..41e38a584 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -8,15 +8,15 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -82,7 +82,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) // setup context - suite.ctx = suite.app.BaseApp.NewContext(checkTx, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(checkTx, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -120,21 +120,25 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { evmParams.EvmDenom = suite.denom suite.app.EvmKeeper.SetParams(suite.ctx, evmParams) - stakingParams := suite.app.StakingKeeper.GetParams(suite.ctx) + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + s.NoError(err) stakingParams.BondDenom = suite.denom suite.app.StakingKeeper.SetParams(suite.ctx, stakingParams) // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) - suite.app.StakingKeeper.AfterValidatorCreated(suite.ctx, validator.GetOperator()) + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - validators := s.app.StakingKeeper.GetValidators(s.ctx, 1) + validators, err := s.app.StakingKeeper.GetValidators(s.ctx, 1) + require.NoError(t, err) suite.validator = validators[0] suite.ethSigner = ethtypes.LatestSignerForChainID(s.app.EvmKeeper.ChainID()) @@ -155,16 +159,17 @@ func (suite *KeeperTestSuite) Commit() { } func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - _ = suite.app.Commit() + suite.app.Commit() header := suite.ctx.BlockHeader() header.Height += 1 header.Time = header.Time.Add(t) - suite.app.BeginBlock(abci.RequestBeginBlock{ - Header: header, + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, }) // update ctx - suite.ctx = suite.app.BaseApp.NewContext(false, header) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) diff --git a/x/epochs/module.go b/x/epochs/module.go index 303cb635c..964774686 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -12,7 +12,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -109,6 +109,12 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule { } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + // Name returns the epochs module's name. func (am AppModule) Name() string { return am.AppModuleBasic.Name() @@ -119,19 +125,6 @@ func (am AppModule) NewHandler() sdk.Handler { return nil } -// Route returns the epochs module's message routing key. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, am.NewHandler()) -} - -// QuerierRoute returns the epochs module's query routing key. -func (AppModule) QuerierRoute() string { return "" } - -// LegacyQuerierHandler returns the epochs module's Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { @@ -159,16 +152,10 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // BeginBlock executes all ABCI BeginBlock logic respective to the epochs module. -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { +func (am AppModule) BeginBlock(ctx sdk.Context) { am.keeper.BeginBlocker(ctx) } -// EndBlock executes all ABCI EndBlock logic respective to the epochs module. It -// returns no validator updates. -func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // ___________________________________________________________________________ // AppModuleSimulation functions diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index edef75a66..4da8fe6b0 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go index 961896278..d3f5b0ea5 100644 --- a/x/erc20/client/cli/tx.go +++ b/x/erc20/client/cli/tx.go @@ -5,6 +5,7 @@ import ( "github.com/spf13/cobra" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" @@ -101,7 +102,7 @@ func NewConvertERC20Cmd() *cobra.Command { return fmt.Errorf("invalid ERC20 contract address %w", err) } - amount, ok := sdk.NewIntFromString(args[1]) + amount, ok := sdkmath.NewIntFromString(args[1]) if !ok { return fmt.Errorf("invalid amount %s", args[1]) } diff --git a/x/erc20/client/rest/rest.go b/x/erc20/client/rest/rest.go deleted file mode 100644 index 43eb94084..000000000 --- a/x/erc20/client/rest/rest.go +++ /dev/null @@ -1,162 +0,0 @@ -package rest - -import ( - "net/http" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - govrest "github.com/cosmos/cosmos-sdk/x/gov/client/rest" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// RegisterCoinProposalRequest defines a request for a new register coin proposal. -type RegisterCoinProposalRequest struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - Metadata banktypes.Metadata `json:"metadata" yaml:"metadata"` -} - -// RegisterERC20ProposalRequest defines a request for a new register ERC20 proposal. -type RegisterERC20ProposalRequest struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - ERC20Address string `json:"erc20_address" yaml:"erc20_address"` -} - -// ToggleTokenConversionProposalRequest defines a request for a toggle token conversion proposal. -type ToggleTokenConversionProposalRequest struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - Token string `json:"token" yaml:"token"` -} - -func RegisterCoinProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: types.ModuleName, - Handler: newRegisterCoinProposalHandler(clientCtx), - } -} - -func RegisterERC20ProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: types.ModuleName, - Handler: newRegisterERC20ProposalHandler(clientCtx), - } -} - -func ToggleTokenConversionRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: types.ModuleName, - Handler: newToggleTokenConversionHandler(clientCtx), - } -} - -// nolint: dupl -func newRegisterCoinProposalHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req RegisterCoinProposalRequest - - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - return - } - - req.BaseReq = req.BaseReq.Sanitize() - if !req.BaseReq.ValidateBasic(w) { - return - } - - fromAddr, err := sdk.AccAddressFromBech32(req.BaseReq.From) - if rest.CheckBadRequestError(w, err) { - return - } - - content := types.NewRegisterCoinProposal(req.Title, req.Description, req.Metadata) - msg, err := govtypes.NewMsgSubmitProposal(content, req.Deposit, fromAddr) - if rest.CheckBadRequestError(w, err) { - return - } - - if rest.CheckBadRequestError(w, msg.ValidateBasic()) { - return - } - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -// nolint: dupl -func newRegisterERC20ProposalHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req RegisterERC20ProposalRequest - - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - return - } - - req.BaseReq = req.BaseReq.Sanitize() - if !req.BaseReq.ValidateBasic(w) { - return - } - - fromAddr, err := sdk.AccAddressFromBech32(req.BaseReq.From) - if rest.CheckBadRequestError(w, err) { - return - } - - content := types.NewRegisterERC20Proposal(req.Title, req.Description, req.ERC20Address) - msg, err := govtypes.NewMsgSubmitProposal(content, req.Deposit, fromAddr) - if rest.CheckBadRequestError(w, err) { - return - } - - if rest.CheckBadRequestError(w, msg.ValidateBasic()) { - return - } - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} - -// nolint: dupl -func newToggleTokenConversionHandler(clientCtx client.Context) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req ToggleTokenConversionProposalRequest - - if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { - return - } - - req.BaseReq = req.BaseReq.Sanitize() - if !req.BaseReq.ValidateBasic(w) { - return - } - - fromAddr, err := sdk.AccAddressFromBech32(req.BaseReq.From) - if rest.CheckBadRequestError(w, err) { - return - } - - content := types.NewToggleTokenConversionProposal(req.Title, req.Description, req.Token) - msg, err := govtypes.NewMsgSubmitProposal(content, req.Deposit, fromAddr) - if rest.CheckBadRequestError(w, err) { - return - } - - if rest.CheckBadRequestError(w, msg.ValidateBasic()) { - return - } - - tx.WriteGeneratedTxResponse(clientCtx, w, req.BaseReq, msg) - } -} diff --git a/x/erc20/genesis_test.go b/x/erc20/genesis_test.go index 52f90a572..73eb64995 100644 --- a/x/erc20/genesis_test.go +++ b/x/erc20/genesis_test.go @@ -8,10 +8,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" "github.com/evmos/ethermint/tests" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -37,7 +37,7 @@ func (suite *GenesisTestSuite) SetupTest() { consAddress := sdk.ConsAddress(tests.GenerateAddress().Bytes()) suite.app = app.Setup(false, feemarkettypes.DefaultGenesisState()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "canto_9000-1", Time: time.Now().UTC(), diff --git a/x/erc20/handler.go b/x/erc20/handler.go index 02f43e92c..eabfbec28 100644 --- a/x/erc20/handler.go +++ b/x/erc20/handler.go @@ -1,6 +1,7 @@ package erc20 import ( + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -20,7 +21,7 @@ func NewHandler(server types.MsgServer) sdk.Handler { res, err := server.ConvertERC20(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) default: - err := sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) + err := errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) return nil, err } } diff --git a/x/erc20/keeper/evm.go b/x/erc20/keeper/evm.go index 6e06daf40..e884683b0 100644 --- a/x/erc20/keeper/evm.go +++ b/x/erc20/keeper/evm.go @@ -4,8 +4,9 @@ import ( "encoding/json" "math/big" - sdk "github.com/cosmos/cosmos-sdk/types" + errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" @@ -37,7 +38,7 @@ func (k Keeper) DeployERC20Contract( decimals, ) if err != nil { - return common.Address{}, sdkerrors.Wrapf(types.ErrABIPack, "coin metadata is invalid %s: %s", coinMetadata.Name, err.Error()) + return common.Address{}, errorsmod.Wrapf(types.ErrABIPack, "coin metadata is invalid %s: %s", coinMetadata.Name, err.Error()) } data := make([]byte, len(contracts.ERC20MinterBurnerDecimalsContract.Bin)+len(ctorArgs)) @@ -52,7 +53,7 @@ func (k Keeper) DeployERC20Contract( contractAddr := crypto.CreateAddress(types.ModuleAddress, nonce) _, err = k.CallEVMWithData(ctx, types.ModuleAddress, nil, data, true) if err != nil { - return common.Address{}, sdkerrors.Wrapf(err, "failed to deploy contract for %s", coinMetadata.Name) + return common.Address{}, errorsmod.Wrapf(err, "failed to deploy contract for %s", coinMetadata.Name) } return contractAddr, nil @@ -78,7 +79,7 @@ func (k Keeper) QueryERC20( } if err := erc20.UnpackIntoInterface(&nameRes, "name", res.Ret); err != nil { - return types.ERC20Data{}, sdkerrors.Wrapf( + return types.ERC20Data{}, errorsmod.Wrapf( types.ErrABIUnpack, "failed to unpack name: %s", err.Error(), ) } @@ -90,7 +91,7 @@ func (k Keeper) QueryERC20( } if err := erc20.UnpackIntoInterface(&symbolRes, "symbol", res.Ret); err != nil { - return types.ERC20Data{}, sdkerrors.Wrapf( + return types.ERC20Data{}, errorsmod.Wrapf( types.ErrABIUnpack, "failed to unpack symbol: %s", err.Error(), ) } @@ -102,7 +103,7 @@ func (k Keeper) QueryERC20( } if err := erc20.UnpackIntoInterface(&decimalRes, "decimals", res.Ret); err != nil { - return types.ERC20Data{}, sdkerrors.Wrapf( + return types.ERC20Data{}, errorsmod.Wrapf( types.ErrABIUnpack, "failed to unpack decimals: %s", err.Error(), ) } @@ -145,15 +146,15 @@ func (k Keeper) CallEVM( ) (*evmtypes.MsgEthereumTxResponse, error) { data, err := abi.Pack(method, args...) if err != nil { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( types.ErrABIPack, - sdkerrors.Wrap(err, "failed to create transaction data").Error(), + errorsmod.Wrap(err, "failed to create transaction data").Error(), ) } resp, err := k.CallEVMWithData(ctx, from, &contract, data, commit) if err != nil { - return nil, sdkerrors.Wrapf(err, "contract call failed: method '%s', contract '%s'", method, contract) + return nil, errorsmod.Wrapf(err, "contract call failed: method '%s', contract '%s'", method, contract) } return resp, nil } @@ -179,7 +180,7 @@ func (k Keeper) CallEVMWithData( Data: (*hexutil.Bytes)(&data), }) if err != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrJSONMarshal, "failed to marshal tx args: %s", err.Error()) + return nil, errorsmod.Wrapf(sdkerrors.ErrJSONMarshal, "failed to marshal tx args: %s", err.Error()) } gasRes, err := k.evmKeeper.EstimateGas(sdk.WrapSDKContext(ctx), &evmtypes.EthCallRequest{ @@ -212,7 +213,7 @@ func (k Keeper) CallEVMWithData( } if res.Failed() { - return nil, sdkerrors.Wrap(evmtypes.ErrVMExecution, res.VmError) + return nil, errorsmod.Wrap(evmtypes.ErrVMExecution, res.VmError) } return res, nil @@ -230,7 +231,7 @@ func (k Keeper) monitorApprovalEvent(res *evmtypes.MsgEthereumTxResponse) error for _, log := range res.Logs { if log.Topics[0] == logApprovalSigHash.Hex() { - return sdkerrors.Wrapf( + return errorsmod.Wrapf( types.ErrUnexpectedEvent, "unexpected Approval event", ) } diff --git a/x/erc20/keeper/evm_hooks.go b/x/erc20/keeper/evm_hooks.go index 47c08e634..8b9669c91 100644 --- a/x/erc20/keeper/evm_hooks.go +++ b/x/erc20/keeper/evm_hooks.go @@ -5,6 +5,7 @@ import ( // nolint: typecheck "math/big" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" @@ -117,7 +118,7 @@ func (h Hooks) PostTxProcessing( } // create the corresponding sdk.Coin that is paired with ERC20 - coins := sdk.Coins{{Denom: pair.Denom, Amount: sdk.NewIntFromBigInt(tokens)}} + coins := sdk.Coins{{Denom: pair.Denom, Amount: sdkmath.NewIntFromBigInt(tokens)}} // Perform token conversion. We can now assume that the sender of a // registered token wants to mint a Cosmos coin. diff --git a/x/erc20/keeper/evm_hooks_test.go b/x/erc20/keeper/evm_hooks_test.go index f721ab961..c3deeb9b6 100644 --- a/x/erc20/keeper/evm_hooks_test.go +++ b/x/erc20/keeper/evm_hooks_test.go @@ -4,6 +4,7 @@ import ( "fmt" "math/big" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" @@ -156,12 +157,12 @@ func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { sender := sdk.AccAddress(suite.address.Bytes()) contractAddr := common.HexToAddress(pair.Erc20Address) - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) convertCoin := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -173,7 +174,7 @@ func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) suite.Require().Equal(balance, big.NewInt(tc.burn)) // Burn the 10 tokens of suite.address (owner) @@ -185,11 +186,11 @@ func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { if tc.result { // Check if the execution was successful suite.Require().NoError(err) - suite.Require().Equal(cosmosBalance.Amount, sdk.NewInt(tc.mint-tc.burn+tc.reconvert)) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert)) } else { // Check that no changes were made to the account suite.Require().Error(err) - suite.Require().Equal(cosmosBalance.Amount, sdk.NewInt(tc.mint-tc.burn)) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn)) } }) } diff --git a/x/erc20/keeper/grpc_query.go b/x/erc20/keeper/grpc_query.go index edf3ba392..c8ffb84db 100644 --- a/x/erc20/keeper/grpc_query.go +++ b/x/erc20/keeper/grpc_query.go @@ -6,7 +6,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" ethermint "github.com/evmos/ethermint/types" diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index 6935408d8..6e79a1d8d 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -18,8 +18,9 @@ import ( "github.com/Canto-Network/Canto/v7/testutil" "github.com/Canto-Network/Canto/v7/x/erc20/types" + sdkmath "cosmossdk.io/math" + abci "github.com/cometbft/cometbft/abci/types" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - abci "github.com/tendermint/tendermint/abci/types" ) var _ = Describe("Performing EVM transactions", Ordered, func() { @@ -79,7 +80,7 @@ var _ = Describe("Performing EVM transactions", Ordered, func() { }) var _ = Describe("ERC20: Converting", Ordered, func() { - amt := sdk.NewInt(100) + amt := sdkmath.NewInt(100) priv, _ := ethsecp256k1.GenerateKey() addrBz := priv.PubKey().Address().Bytes() accAddr := sdk.AccAddress(addrBz) @@ -164,7 +165,7 @@ var _ = Describe("ERC20: Converting", Ordered, func() { // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom denom := "acanto" //use default denom for claimsDenom - err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.NewInt(1000)))) + err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewInt(1000)))) s.Require().NoError(err) _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) @@ -227,7 +228,7 @@ func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { Expect(res.IsOK()).To(BeTrue(), "failed to convert coin: %s", res.Log) } -func convertERC20(priv *ethsecp256k1.PrivKey, amt sdk.Int, contract common.Address) { +func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { addrBz := priv.PubKey().Address().Bytes() convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) @@ -244,7 +245,7 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) abci.ResponseDeliver txBuilder := encodingConfig.TxConfig.NewTxBuilder() txBuilder.SetGasLimit(100_000_000) - txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdk.NewInt(1)}}) + txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewInt(1)}}) err := txBuilder.SetMsgs(msgs...) s.Require().NoError(err) diff --git a/x/erc20/keeper/keeper.go b/x/erc20/keeper/keeper.go index c74a2e04b..ee724fe51 100644 --- a/x/erc20/keeper/keeper.go +++ b/x/erc20/keeper/keeper.go @@ -3,17 +3,18 @@ package keeper import ( "fmt" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/tendermint/tendermint/libs/log" "github.com/Canto-Network/Canto/v7/x/erc20/types" ) // Keeper of this module maintains collections of erc20. type Keeper struct { - storeKey sdk.StoreKey + storeKey storetypes.StoreKey cdc codec.BinaryCodec paramstore paramtypes.Subspace @@ -24,7 +25,7 @@ type Keeper struct { // NewKeeper creates new instances of the erc20 Keeper func NewKeeper( - storeKey sdk.StoreKey, + storeKey storetypes.StoreKey, cdc codec.BinaryCodec, ps paramtypes.Subspace, ak types.AccountKeeper, diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 4a1f3c2be..64af716f6 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -11,6 +11,12 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + sdkmath "cosmossdk.io/math" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/crypto/keyring" @@ -25,12 +31,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" + tmjson "github.com/cometbft/cometbft/libs/json" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" @@ -43,7 +45,6 @@ import ( evm "github.com/evmos/ethermint/x/evm/types" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - tmjson "github.com/tendermint/tendermint/libs/json" "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/contracts" @@ -101,7 +102,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { if suite.mintFeeCollector { // mint some coin to fee collector - coins := sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdk.NewInt(int64(params.TxGas)-1))) + coins := sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt(int64(params.TxGas)-1))) genesisState := app.ModuleBasics.DefaultGenesis(suite.app.AppCodec()) balances := []banktypes.Balance{ { @@ -110,7 +111,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { }, } // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdk.NewInt((int64(params.TxGas)-1)))), []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt((int64(params.TxGas)-1)))), []banktypes.Metadata{}) bz := suite.app.AppCodec().MustMarshalJSON(bankGenesis) require.NotNil(t, bz) genesisState[banktypes.ModuleName] = suite.app.AppCodec().MustMarshalJSON(bankGenesis) @@ -121,7 +122,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { // Initialize the chain suite.app.InitChain( - abci.RequestInitChain{ + &abci.RequestInitChain{ ChainId: "canto_9001-1", Validators: []abci.ValidatorUpdate{}, ConsensusParams: app.DefaultConsensusParams, @@ -130,7 +131,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { ) } - suite.ctx = suite.app.BaseApp.NewContext(checkTx, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(checkTx, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -171,7 +172,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.app.AccountKeeper.SetAccount(suite.ctx, acc) valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, priv.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), priv.PubKey(), stakingtypes.Description{}) require.NoError(t, err) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) @@ -187,7 +188,7 @@ func (suite *KeeperTestSuite) SetupTest() { } func (suite *KeeperTestSuite) StateDB() *statedb.StateDB { - return statedb.New(suite.ctx, suite.app.EvmKeeper, statedb.NewEmptyTxConfig(common.BytesToHash(suite.ctx.HeaderHash().Bytes()))) + return statedb.New(suite.ctx, suite.app.EvmKeeper, statedb.NewEmptyTxConfig(common.BytesToHash(suite.ctx.HeaderHash()))) } func (suite *KeeperTestSuite) MintFeeCollector(coins sdk.Coins) { @@ -340,15 +341,15 @@ func (suite *KeeperTestSuite) DeployContractDirectBalanceManipulation(name strin } func (suite *KeeperTestSuite) Commit() { - _ = suite.app.Commit() + suite.app.Commit() header := suite.ctx.BlockHeader() header.Height += 1 - suite.app.BeginBlock(abci.RequestBeginBlock{ - Header: header, + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, }) // update ctx - suite.ctx = suite.app.BaseApp.NewContext(false, header) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) @@ -394,7 +395,7 @@ func (suite *KeeperTestSuite) sendTx(contractAddr, from common.Address, transfer nonce := suite.app.EvmKeeper.GetNonce(suite.ctx, suite.address) // Mint the max gas to the FeeCollector to ensure balance in case of refund - suite.MintFeeCollector(sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdk.NewInt(suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx).Int64()*int64(res.Gas))))) + suite.MintFeeCollector(sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt(suite.app.FeeMarketKeeper.GetBaseFee(suite.ctx).Int64()*int64(res.Gas))))) ercTransferTx := evm.NewTx( chainID, diff --git a/x/erc20/keeper/mint.go b/x/erc20/keeper/mint.go index 446615861..50a30c89d 100644 --- a/x/erc20/keeper/mint.go +++ b/x/erc20/keeper/mint.go @@ -1,8 +1,9 @@ package keeper import ( - sdk "github.com/cosmos/cosmos-sdk/types" + errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/Canto-Network/Canto/v7/x/erc20/types" @@ -20,33 +21,33 @@ func (k Keeper) MintingEnabled( ) (types.TokenPair, error) { params := k.GetParams(ctx) if !params.EnableErc20 { - return types.TokenPair{}, sdkerrors.Wrap( + return types.TokenPair{}, errorsmod.Wrap( types.ErrERC20Disabled, "module is currently disabled by governance", ) } id := k.GetTokenPairID(ctx, token) if len(id) == 0 { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( types.ErrTokenPairNotFound, "token '%s' not registered by id", token, ) } pair, found := k.GetTokenPair(ctx, id) if !found { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( types.ErrTokenPairNotFound, "token '%s' not registered", token, ) } if !pair.Enabled { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( types.ErrERC20TokenPairDisabled, "minting token '%s' is not enabled by governance", token, ) } if k.bankKeeper.BlockedAddr(receiver.Bytes()) { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( sdkerrors.ErrUnauthorized, "%s is not allowed to receive transactions", receiver, ) } @@ -57,7 +58,7 @@ func (k Keeper) MintingEnabled( // check if minting to a recipient address other than the sender is enabled // for for the given coin denom if !sender.Equals(receiver) && !k.bankKeeper.IsSendEnabledCoin(ctx, coin) { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( banktypes.ErrSendDisabled, "minting '%s' coins to an external address is currently disabled", token, ) } diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index 034234459..3ef167c0d 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -4,10 +4,10 @@ import ( "context" "math/big" - "github.com/armon/go-metrics" + errorsmod "cosmossdk.io/errors" + "github.com/hashicorp/go-metrics" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" "github.com/Canto-Network/Canto/v7/contracts" @@ -118,13 +118,13 @@ func (k Keeper) convertCoinNativeCoin( contract := pair.GetERC20Contract() balanceToken := k.BalanceOf(ctx, erc20, contract, receiver) if balanceToken == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } // Escrow coins on module account err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, coins) if err != nil { - return nil, sdkerrors.Wrap(err, "failed to escrow coins") + return nil, errorsmod.Wrap(err, "failed to escrow coins") } // Mint tokens and send to receiver @@ -137,12 +137,12 @@ func (k Keeper) convertCoinNativeCoin( tokens := msg.Coin.Amount.BigInt() balanceTokenAfter := k.BalanceOf(ctx, erc20, contract, receiver) if balanceTokenAfter == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } expToken := big.NewInt(0).Add(balanceToken, tokens) if r := balanceTokenAfter.Cmp(expToken); r != 0 { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid token balance - expected: %v, actual: %v", expToken, balanceTokenAfter, ) @@ -206,7 +206,7 @@ func (k Keeper) convertERC20NativeCoin( balanceCoin := k.bankKeeper.GetBalance(ctx, receiver, pair.Denom) balanceToken := k.BalanceOf(ctx, erc20, contract, sender) if balanceToken == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } // Burn escrowed tokens @@ -225,7 +225,7 @@ func (k Keeper) convertERC20NativeCoin( balanceCoinAfter := k.bankKeeper.GetBalance(ctx, receiver, pair.Denom) expCoin := balanceCoin.Add(coins[0]) if ok := balanceCoinAfter.IsEqual(expCoin); !ok { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid coin balance - expected: %v, actual: %v", expCoin, balanceCoinAfter, @@ -236,12 +236,12 @@ func (k Keeper) convertERC20NativeCoin( tokens := coins[0].Amount.BigInt() balanceTokenAfter := k.BalanceOf(ctx, erc20, contract, sender) if balanceTokenAfter == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } expToken := big.NewInt(0).Sub(balanceToken, tokens) if r := balanceTokenAfter.Cmp(expToken); r != 0 { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid token balance - expected: %v, actual: %v", expToken, balanceTokenAfter, @@ -308,7 +308,7 @@ func (k Keeper) convertERC20NativeToken( balanceCoin := k.bankKeeper.GetBalance(ctx, receiver, pair.Denom) balanceToken := k.BalanceOf(ctx, erc20, contract, types.ModuleAddress) if balanceToken == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } // Escrow tokens on module account @@ -329,20 +329,20 @@ func (k Keeper) convertERC20NativeToken( } if !unpackedRet.Value { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "failed to execute transfer") + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "failed to execute transfer") } // Check expected escrow balance after transfer execution tokens := coins[0].Amount.BigInt() balanceTokenAfter := k.BalanceOf(ctx, erc20, contract, types.ModuleAddress) if balanceTokenAfter == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } expToken := big.NewInt(0).Add(balanceToken, tokens) if r := balanceTokenAfter.Cmp(expToken); r != 0 { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid token balance - expected: %v, actual: %v", expToken, balanceTokenAfter, @@ -364,7 +364,7 @@ func (k Keeper) convertERC20NativeToken( expCoin := balanceCoin.Add(coins[0]) if ok := balanceCoinAfter.IsEqual(expCoin); !ok { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid coin balance - expected: %v, actual: %v", expCoin, balanceCoinAfter, @@ -435,12 +435,12 @@ func (k Keeper) convertCoinNativeERC20( contract := pair.GetERC20Contract() balanceToken := k.BalanceOf(ctx, erc20, contract, receiver) if balanceToken == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } // Escrow Coins on module account if err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, coins); err != nil { - return nil, sdkerrors.Wrap(err, "failed to escrow coins") + return nil, errorsmod.Wrap(err, "failed to escrow coins") } // Unescrow Tokens and send to receiver @@ -456,20 +456,20 @@ func (k Keeper) convertCoinNativeERC20( } if !unpackedRet.Value { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "failed to execute unescrow tokens from user") + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "failed to execute unescrow tokens from user") } // Check expected Receiver balance after transfer execution tokens := msg.Coin.Amount.BigInt() balanceTokenAfter := k.BalanceOf(ctx, erc20, contract, receiver) if balanceTokenAfter == nil { - return nil, sdkerrors.Wrap(types.ErrEVMCall, "failed to retrieve balance") + return nil, errorsmod.Wrap(types.ErrEVMCall, "failed to retrieve balance") } exp := big.NewInt(0).Add(balanceToken, tokens) if r := balanceTokenAfter.Cmp(exp); r != 0 { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrBalanceInvariance, "invalid token balance - expected: %v, actual: %v", exp, balanceTokenAfter, ) @@ -478,7 +478,7 @@ func (k Keeper) convertCoinNativeERC20( // Burn escrowed Coins err = k.bankKeeper.BurnCoins(ctx, types.ModuleName, coins) if err != nil { - return nil, sdkerrors.Wrap(err, "failed to burn coins") + return nil, errorsmod.Wrap(err, "failed to burn coins") } // Check for unexpected `Approval` event in logs diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index a5c1ede15..278bded33 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -4,6 +4,7 @@ import ( "fmt" "math/big" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/mock" @@ -151,10 +152,10 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { suite.Commit() ctx := sdk.WrapSDKContext(suite.ctx) - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) sender := sdk.AccAddress(suite.address.Bytes()) msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -185,7 +186,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { suite.Require().False(found) } else { suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) } } else { @@ -290,7 +291,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) }, false, }, @@ -304,7 +305,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdkmath.OneInt()}) }, false, }, @@ -318,12 +319,12 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { suite.Require().NotNil(pair) // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) sender := sdk.AccAddress(suite.address.Bytes()) suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -334,14 +335,14 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { suite.Commit() balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) suite.Require().Equal(balance, big.NewInt(tc.burn)) // Convert ERC20s back to Coins ctx = sdk.WrapSDKContext(suite.ctx) contractAddr := common.HexToAddress(pair.Erc20Address) msgConvertERC20 := types.NewMsgConvertERC20( - sdk.NewInt(tc.reconvert), + sdkmath.NewInt(tc.reconvert), sender, contractAddr, suite.address, @@ -356,7 +357,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { if tc.expPass { suite.Require().NoError(err, tc.name) suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) } else { suite.Require().Error(err, tc.name) @@ -597,7 +598,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) }, contractMinterBurner, false, @@ -617,7 +618,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) }, contractMinterBurner, false, @@ -637,7 +638,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdk.NewInt(int64(10))}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdkmath.NewInt(int64(10))}) }, contractMinterBurner, false, @@ -658,7 +659,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { coinName = types.CreateDenom(contractAddr.String()) sender := sdk.AccAddress(suite.address.Bytes()) msg := types.NewMsgConvertERC20( - sdk.NewInt(tc.transfer), + sdkmath.NewInt(tc.transfer), sender, contractAddr, suite.address, @@ -691,7 +692,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { suite.Require().False(found) } else { suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount, sdk.NewInt(tc.transfer)) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.transfer)) suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64()) } } else { @@ -865,7 +866,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) coinName := types.CreateDenom(contractAddr.String()) sender := sdk.AccAddress(suite.address.Bytes()) @@ -873,7 +874,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) - suite.Require().Equal(sdk.NewInt(tc.mint), cosmosBalance.Amount) + suite.Require().Equal(sdkmath.NewInt(tc.mint), cosmosBalance.Amount) // Precondition: Mint escrow tokens on module account suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE") @@ -888,7 +889,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { receiver := suite.address ctx := sdk.WrapSDKContext(suite.ctx) msg := types.NewMsgConvertCoin( - sdk.NewCoin(coinName, sdk.NewInt(tc.convert)), + sdk.NewCoin(coinName, sdkmath.NewInt(tc.convert)), receiver, sender, ) @@ -903,7 +904,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { if tc.expPass { suite.Require().NoError(err, tc.name) suite.Require().Equal(expRes, res) - suite.Require().Equal(sdk.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) + suite.Require().Equal(sdkmath.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int)) } else { suite.Require().Error(err, tc.name) @@ -932,12 +933,12 @@ func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { suite.Require().NotNil(pair) // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) sender := sdk.AccAddress(suite.address.Bytes()) suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -953,7 +954,7 @@ func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { ctx = sdk.WrapSDKContext(suite.ctx) contractAddr := common.HexToAddress(pair.Erc20Address) msgConvertERC20 := types.NewMsgConvertERC20( - sdk.NewInt(tc.reconvert), + sdkmath.NewInt(tc.reconvert), sender, contractAddr, suite.address, @@ -1101,10 +1102,10 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { suite.Commit() ctx := sdk.WrapSDKContext(suite.ctx) - coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) sender := sdk.AccAddress(suite.address.Bytes()) msg := types.NewMsgConvertCoin( - sdk.NewCoin(ibcBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -1135,7 +1136,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { suite.Require().False(found) } else { suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) } } else { @@ -1240,7 +1241,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) }, false, }, @@ -1254,7 +1255,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdk.OneInt()}) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdkmath.OneInt()}) }, false, }, @@ -1268,12 +1269,12 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { suite.Require().NotNil(pair) // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdk.NewInt(tc.mint))) + coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) sender := sdk.AccAddress(suite.address.Bytes()) suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) msg := types.NewMsgConvertCoin( - sdk.NewCoin(ibcBase, sdk.NewInt(tc.burn)), + sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), suite.address, sender, ) @@ -1284,14 +1285,14 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { suite.Commit() balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) suite.Require().Equal(balance, big.NewInt(tc.burn)) // Convert ERC20s back to Coins ctx = sdk.WrapSDKContext(suite.ctx) contractAddr := common.HexToAddress(pair.Erc20Address) msgConvertERC20 := types.NewMsgConvertERC20( - sdk.NewInt(tc.reconvert), + sdkmath.NewInt(tc.reconvert), sender, contractAddr, suite.address, @@ -1306,7 +1307,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { if tc.expPass { suite.Require().NoError(err, tc.name) suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdk.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) } else { suite.Require().Error(err, tc.name) diff --git a/x/erc20/keeper/proposals.go b/x/erc20/keeper/proposals.go index d072b1bc5..d33a458aa 100644 --- a/x/erc20/keeper/proposals.go +++ b/x/erc20/keeper/proposals.go @@ -3,6 +3,7 @@ package keeper import ( "strings" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -20,41 +21,41 @@ func (k Keeper) RegisterCoin( // Check if the conversion is globally enabled params := k.GetParams(ctx) if !params.EnableErc20 { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( types.ErrERC20Disabled, "registration is currently disabled by governance", ) } // Prohibit denominations that contain the evm denom if strings.Contains(coinMetadata.Base, "CANTO") { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrEVMDenom, "cannot register the EVM denomination %s", coinMetadata.Base, ) } // Check if denomination is already registered if k.IsDenomRegistered(ctx, coinMetadata.Name) { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrTokenPairAlreadyExists, "coin denomination already registered: %s", coinMetadata.Name, ) } // Check if the coin exists by ensuring the supply is set if !k.bankKeeper.HasSupply(ctx, coinMetadata.Base) { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( sdkerrors.ErrInvalidCoins, "base denomination '%s' cannot have a supply of 0", coinMetadata.Base, ) } if err := k.verifyMetadata(ctx, coinMetadata); err != nil { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrInternalTokenPair, "coin metadata is invalid %s", coinMetadata.Name, ) } addr, err := k.DeployERC20Contract(ctx, coinMetadata) if err != nil { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( err, "failed to create wrapped coin denom metadata for ERC20", ) } @@ -76,21 +77,21 @@ func (k Keeper) RegisterERC20( // Check if the conversion is globally enabled params := k.GetParams(ctx) if !params.EnableErc20 { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( types.ErrERC20Disabled, "registration is currently disabled by governance", ) } // Check if ERC20 is already registered if k.IsERC20Registered(ctx, contract) { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrTokenPairAlreadyExists, "token ERC20 contract already registered: %s", contract.String(), ) } metadata, err := k.CreateCoinMetadata(ctx, contract) if err != nil { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( err, "failed to create wrapped coin denom metadata for ERC20", ) } @@ -118,13 +119,13 @@ func (k Keeper) CreateCoinMetadata( // Check if metadata already exists _, found := k.bankKeeper.GetDenomMetaData(ctx, types.CreateDenom(strContract)) if found { - return nil, sdkerrors.Wrap( + return nil, errorsmod.Wrap( types.ErrInternalTokenPair, "denom metadata already registered", ) } if k.IsDenomRegistered(ctx, types.CreateDenom(strContract)) { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( types.ErrInternalTokenPair, "coin denomination already registered: %s", erc20Data.Name, ) } @@ -164,7 +165,7 @@ func (k Keeper) CreateCoinMetadata( } if err := metadata.Validate(); err != nil { - return nil, sdkerrors.Wrapf( + return nil, errorsmod.Wrapf( err, "ERC20 token data is invalid for contract %s", strContract, ) } @@ -181,14 +182,14 @@ func (k Keeper) ToggleConversion( ) (types.TokenPair, error) { id := k.GetTokenPairID(ctx, token) if len(id) == 0 { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( types.ErrTokenPairNotFound, "token '%s' not registered by id", token, ) } pair, found := k.GetTokenPair(ctx, id) if !found { - return types.TokenPair{}, sdkerrors.Wrapf( + return types.TokenPair{}, errorsmod.Wrapf( types.ErrTokenPairNotFound, "token '%s' not registered", token, ) } diff --git a/x/erc20/keeper/token_pairs.go b/x/erc20/keeper/token_pairs.go index 537db758b..febe9ec09 100644 --- a/x/erc20/keeper/token_pairs.go +++ b/x/erc20/keeper/token_pairs.go @@ -1,7 +1,8 @@ package keeper import ( - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" @@ -13,7 +14,7 @@ func (k Keeper) GetTokenPairs(ctx sdk.Context) []types.TokenPair { tokenPairs := []types.TokenPair{} store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, types.KeyPrefixTokenPair) + iterator := storetypes.KVStorePrefixIterator(store, types.KeyPrefixTokenPair) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { diff --git a/x/erc20/migrations/v2/migration_test.go b/x/erc20/migrations/v2/migration_test.go index 644a0258c..26796e371 100644 --- a/x/erc20/migrations/v2/migration_test.go +++ b/x/erc20/migrations/v2/migration_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/testutil" - sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/evmos/ethermint/encoding" @@ -19,11 +19,11 @@ import ( func TestUpdateParams(t *testing.T) { encCfg := encoding.MakeConfig(app.ModuleBasics) - erc20Key := sdk.NewKVStoreKey(erc20types.StoreKey) - tErc20Key := sdk.NewTransientStoreKey(fmt.Sprintf("%s_test", erc20types.StoreKey)) + erc20Key := storetypes.NewKVStoreKey(erc20types.StoreKey) + tErc20Key := storetypes.NewTransientStoreKey(fmt.Sprintf("%s_test", erc20types.StoreKey)) ctx := testutil.DefaultContext(erc20Key, tErc20Key) paramstore := paramtypes.NewSubspace( - encCfg.Marshaler, encCfg.Amino, erc20Key, tErc20Key, "erc20", + encCfg.Codec, encCfg.Amino, erc20Key, tErc20Key, "erc20", ) paramstore = paramstore.WithKeyTable(erc20types.ParamKeyTable()) require.True(t, paramstore.HasKeyTable()) diff --git a/x/erc20/module.go b/x/erc20/module.go index 7402f264e..b5ea93fe9 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -6,6 +6,7 @@ import ( "fmt" "math/rand" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -16,7 +17,6 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" "github.com/Canto-Network/Canto/v7/x/erc20/keeper" @@ -105,6 +105,12 @@ func NewAppModule( } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + func (AppModule) Name() string { return types.ModuleName } @@ -115,18 +121,6 @@ func (am AppModule) NewHandler() sdk.Handler { return NewHandler(am.keeper) } -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, am.NewHandler()) -} - -func (am AppModule) QuerierRoute() string { - return types.RouterKey -} - -func (am AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { - return nil -} - func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterMsgServer(cfg.MsgServer(), am.keeper) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) @@ -142,13 +136,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { } } -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) { -} - -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState diff --git a/x/erc20/proposal_handler.go b/x/erc20/proposal_handler.go index 8e0130ae0..e6b6b9fd4 100644 --- a/x/erc20/proposal_handler.go +++ b/x/erc20/proposal_handler.go @@ -2,7 +2,6 @@ package erc20 import ( sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" @@ -22,7 +21,7 @@ func NewErc20ProposalHandler(k *keeper.Keeper) govtypes.Handler { return handleToggleConversionProposal(ctx, k, c) default: - return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) + return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) } } } diff --git a/x/erc20/types/errors.go b/x/erc20/types/errors.go index 17d164c64..09e619385 100644 --- a/x/erc20/types/errors.go +++ b/x/erc20/types/errors.go @@ -1,21 +1,21 @@ package types import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // errors var ( - ErrERC20Disabled = sdkerrors.Register(ModuleName, 2, "erc20 module is disabled") - ErrInternalTokenPair = sdkerrors.Register(ModuleName, 3, "internal ethereum token mapping error") - ErrTokenPairNotFound = sdkerrors.Register(ModuleName, 4, "token pair not found") - ErrTokenPairAlreadyExists = sdkerrors.Register(ModuleName, 5, "token pair already exists") - ErrUndefinedOwner = sdkerrors.Register(ModuleName, 6, "undefined owner of contract pair") - ErrBalanceInvariance = sdkerrors.Register(ModuleName, 7, "post transfer balance invariant failed") - ErrUnexpectedEvent = sdkerrors.Register(ModuleName, 8, "unexpected event") - ErrABIPack = sdkerrors.Register(ModuleName, 9, "contract ABI pack failed") - ErrABIUnpack = sdkerrors.Register(ModuleName, 10, "contract ABI unpack failed") - ErrEVMDenom = sdkerrors.Register(ModuleName, 11, "EVM denomination registration") - ErrEVMCall = sdkerrors.Register(ModuleName, 12, "EVM call unexpected error") - ErrERC20TokenPairDisabled = sdkerrors.Register(ModuleName, 13, "erc20 token pair is disabled") + ErrERC20Disabled = errorsmod.Register(ModuleName, 2, "erc20 module is disabled") + ErrInternalTokenPair = errorsmod.Register(ModuleName, 3, "internal ethereum token mapping error") + ErrTokenPairNotFound = errorsmod.Register(ModuleName, 4, "token pair not found") + ErrTokenPairAlreadyExists = errorsmod.Register(ModuleName, 5, "token pair already exists") + ErrUndefinedOwner = errorsmod.Register(ModuleName, 6, "undefined owner of contract pair") + ErrBalanceInvariance = errorsmod.Register(ModuleName, 7, "post transfer balance invariant failed") + ErrUnexpectedEvent = errorsmod.Register(ModuleName, 8, "unexpected event") + ErrABIPack = errorsmod.Register(ModuleName, 9, "contract ABI pack failed") + ErrABIUnpack = errorsmod.Register(ModuleName, 10, "contract ABI unpack failed") + ErrEVMDenom = errorsmod.Register(ModuleName, 11, "EVM denomination registration") + ErrEVMCall = errorsmod.Register(ModuleName, 12, "EVM call unexpected error") + ErrERC20TokenPairDisabled = errorsmod.Register(ModuleName, 13, "erc20 token pair is disabled") ) diff --git a/x/erc20/types/interfaces.go b/x/erc20/types/interfaces.go index 497106abe..c1f20de94 100644 --- a/x/erc20/types/interfaces.go +++ b/x/erc20/types/interfaces.go @@ -1,7 +1,7 @@ package types import ( - context "context" + "context" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -17,21 +17,21 @@ import ( // AccountKeeper defines the expected interface needed to retrieve account info. type AccountKeeper interface { GetModuleAddress(moduleName string) sdk.AccAddress - GetSequence(sdk.Context, sdk.AccAddress) (uint64, error) + GetSequence(context.Context, sdk.AccAddress) (uint64, error) } // BankKeeper defines the expected interface needed to retrieve account balances. type BankKeeper interface { - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - IsSendEnabledCoin(ctx sdk.Context, coin sdk.Coin) bool + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error + BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error + IsSendEnabledCoin(ctx context.Context, coin sdk.Coin) bool BlockedAddr(addr sdk.AccAddress) bool - GetDenomMetaData(ctx sdk.Context, denom string) (banktypes.Metadata, bool) - SetDenomMetaData(ctx sdk.Context, denomMetaData banktypes.Metadata) - HasSupply(ctx sdk.Context, denom string) bool - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin + GetDenomMetaData(ctx context.Context, denom string) (banktypes.Metadata, bool) + SetDenomMetaData(ctx context.Context, denomMetaData banktypes.Metadata) + HasSupply(ctx context.Context, denom string) bool + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin } // EVMKeeper defines the expected EVM keeper interface used on erc20 diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index 2ba46ce37..04a4abe92 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -1,10 +1,12 @@ package types import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/ethereum/go-ethereum/common" ) @@ -42,14 +44,14 @@ func (msg MsgConvertCoin) ValidateBasic() error { } if !msg.Coin.Amount.IsPositive() { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") } _, err := sdk.AccAddressFromBech32(msg.Sender) if err != nil { - return sdkerrors.Wrap(err, "invalid sender address") + return errorsmod.Wrap(err, "invalid sender address") } if !common.IsHexAddress(msg.Receiver) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) } return nil } @@ -66,7 +68,7 @@ func (msg MsgConvertCoin) GetSigners() []sdk.AccAddress { } // NewMsgConvertERC20 creates a new instance of MsgConvertERC20 -func NewMsgConvertERC20(amount sdk.Int, receiver sdk.AccAddress, contract, sender common.Address) *MsgConvertERC20 { // nolint: interfacer +func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, sender common.Address) *MsgConvertERC20 { // nolint: interfacer return &MsgConvertERC20{ ContractAddress: contract.String(), Amount: amount, @@ -84,17 +86,17 @@ func (msg MsgConvertERC20) Type() string { return TypeMsgConvertERC20 } // ValidateBasic runs stateless checks on the message func (msg MsgConvertERC20) ValidateBasic() error { if !common.IsHexAddress(msg.ContractAddress) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) } if !msg.Amount.IsPositive() { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") } _, err := sdk.AccAddressFromBech32(msg.Receiver) if err != nil { - return sdkerrors.Wrap(err, "invalid receiver address") + return errorsmod.Wrap(err, "invalid receiver address") } if !common.IsHexAddress(msg.Sender) { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) } return nil } diff --git a/x/erc20/types/msg_test.go b/x/erc20/types/msg_test.go index 952bad8ba..15e4cc678 100644 --- a/x/erc20/types/msg_test.go +++ b/x/erc20/types/msg_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/suite" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/evmos/ethermint/tests" @@ -22,7 +23,7 @@ func TestMsgsTestSuite(t *testing.T) { func (suite *MsgsTestSuite) TestMsgConvertCoinGetters() { msgInvalid := MsgConvertCoin{} msg := NewMsgConvertCoin( - sdk.NewCoin("test", sdk.NewInt(100)), + sdk.NewCoin("test", sdkmath.NewInt(100)), tests.GenerateAddress(), sdk.AccAddress(tests.GenerateAddress().Bytes()), ) @@ -42,7 +43,7 @@ func (suite *MsgsTestSuite) TestMsgConvertCoinNew() { }{ { "msg convert coin - pass", - sdk.NewCoin("test", sdk.NewInt(100)), + sdk.NewCoin("test", sdkmath.NewInt(100)), tests.GenerateAddress(), sdk.AccAddress(tests.GenerateAddress().Bytes()), true, @@ -73,7 +74,7 @@ func (suite *MsgsTestSuite) TestMsgConvertCoin() { "invalid denom", sdk.Coin{ Denom: "", - Amount: sdk.NewInt(100), + Amount: sdkmath.NewInt(100), }, "0x0000", tests.GenerateAddress().String(), @@ -83,7 +84,7 @@ func (suite *MsgsTestSuite) TestMsgConvertCoin() { "negative coin amount", sdk.Coin{ Denom: "coin", - Amount: sdk.NewInt(-100), + Amount: sdkmath.NewInt(-100), }, "0x0000", tests.GenerateAddress().String(), @@ -91,35 +92,35 @@ func (suite *MsgsTestSuite) TestMsgConvertCoin() { }, { "msg convert coin - invalid sender", - sdk.NewCoin("coin", sdk.NewInt(100)), + sdk.NewCoin("coin", sdkmath.NewInt(100)), tests.GenerateAddress().String(), "cantoinvalid", false, }, { "msg convert coin - invalid receiver", - sdk.NewCoin("coin", sdk.NewInt(100)), + sdk.NewCoin("coin", sdkmath.NewInt(100)), "0x0000", sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), false, }, { "msg convert coin - pass", - sdk.NewCoin("coin", sdk.NewInt(100)), + sdk.NewCoin("coin", sdkmath.NewInt(100)), tests.GenerateAddress().String(), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), true, }, { "msg convert coin - pass with `erc20/` denom", - sdk.NewCoin("erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", sdk.NewInt(100)), + sdk.NewCoin("erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", sdkmath.NewInt(100)), tests.GenerateAddress().String(), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), true, }, { "msg convert coin - pass with `ibc/{hash}` denom", - sdk.NewCoin("ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2", sdk.NewInt(100)), + sdk.NewCoin("ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2", sdkmath.NewInt(100)), tests.GenerateAddress().String(), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), true, @@ -141,7 +142,7 @@ func (suite *MsgsTestSuite) TestMsgConvertCoin() { func (suite *MsgsTestSuite) TestMsgConvertERC20Getters() { msgInvalid := MsgConvertERC20{} msg := NewMsgConvertERC20( - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress(tests.GenerateAddress().Bytes()), tests.GenerateAddress(), tests.GenerateAddress(), @@ -155,7 +156,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20Getters() { func (suite *MsgsTestSuite) TestMsgConvertERC20New() { testCases := []struct { msg string - amount sdk.Int + amount sdkmath.Int receiver sdk.AccAddress contract common.Address sender common.Address @@ -163,7 +164,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20New() { }{ { "msg convert erc20 - pass", - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress(tests.GenerateAddress().Bytes()), tests.GenerateAddress(), tests.GenerateAddress(), @@ -186,7 +187,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20New() { func (suite *MsgsTestSuite) TestMsgConvertERC20() { testCases := []struct { msg string - amount sdk.Int + amount sdkmath.Int receiver string contract string sender string @@ -194,7 +195,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20() { }{ { "invalid contract hex address", - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), sdk.AccAddress{}.String(), tests.GenerateAddress().String(), @@ -202,7 +203,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20() { }, { "negative coin amount", - sdk.NewInt(-100), + sdkmath.NewInt(-100), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), tests.GenerateAddress().String(), tests.GenerateAddress().String(), @@ -210,7 +211,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20() { }, { "invalid receiver address", - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress{}.String(), tests.GenerateAddress().String(), tests.GenerateAddress().String(), @@ -218,7 +219,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20() { }, { "invalid sender address", - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), tests.GenerateAddress().String(), sdk.AccAddress{}.String(), @@ -226,7 +227,7 @@ func (suite *MsgsTestSuite) TestMsgConvertERC20() { }, { "msg convert erc20 - pass", - sdk.NewInt(100), + sdkmath.NewInt(100), sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), tests.GenerateAddress().String(), tests.GenerateAddress().String(), diff --git a/x/erc20/types/proposal.go b/x/erc20/types/proposal.go index d1e7db947..45b117b73 100644 --- a/x/erc20/types/proposal.go +++ b/x/erc20/types/proposal.go @@ -4,11 +4,11 @@ import ( "fmt" "strings" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ethermint "github.com/evmos/ethermint/types" ) @@ -130,7 +130,7 @@ func (*RegisterERC20Proposal) ProposalType() string { // ValidateBasic performs a stateless check of the proposal fields func (rtbp *RegisterERC20Proposal) ValidateBasic() error { if err := ethermint.ValidateAddress(rtbp.Erc20Address); err != nil { - return sdkerrors.Wrap(err, "ERC20 address") + return errorsmod.Wrap(err, "ERC20 address") } return govtypes.ValidateAbstract(rtbp) } diff --git a/x/erc20/types/proposal_test.go b/x/erc20/types/proposal_test.go index 6ccde6350..d43cec626 100644 --- a/x/erc20/types/proposal_test.go +++ b/x/erc20/types/proposal_test.go @@ -9,7 +9,7 @@ import ( "github.com/evmos/ethermint/tests" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - length "github.com/cosmos/cosmos-sdk/x/gov/types" + length "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) type ProposalTestSuite struct { diff --git a/x/erc20/types/query.pb.go b/x/erc20/types/query.pb.go index 4152f3eaa..3f2f3dd32 100644 --- a/x/erc20/types/query.pb.go +++ b/x/erc20/types/query.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/erc20/types/token_pair.go b/x/erc20/types/token_pair.go index 2fcb5fe3b..25d324455 100644 --- a/x/erc20/types/token_pair.go +++ b/x/erc20/types/token_pair.go @@ -1,10 +1,10 @@ package types import ( + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" ethermint "github.com/evmos/ethermint/types" - "github.com/tendermint/tendermint/crypto/tmhash" ) // NewTokenPair returns an instance of TokenPair diff --git a/x/erc20/types/token_pair_test.go b/x/erc20/types/token_pair_test.go index 42358196c..e171db586 100644 --- a/x/erc20/types/token_pair_test.go +++ b/x/erc20/types/token_pair_test.go @@ -4,9 +4,9 @@ import ( "strings" "testing" + "github.com/cometbft/cometbft/crypto/tmhash" "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" "github.com/evmos/ethermint/tests" ) diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index dce99958d..7fba23bb9 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -9,7 +9,7 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/govshuttle/client/cli/tx.go b/x/govshuttle/client/cli/tx.go index 9f06a3719..9967ead7d 100644 --- a/x/govshuttle/client/cli/tx.go +++ b/x/govshuttle/client/cli/tx.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/gov/client/cli" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" ) @@ -90,7 +90,7 @@ Where metadata.json contains (example): propMetaData, err := ParseLendingMarketMetadata(clientCtx.Codec, args[0]) if err != nil { - return sdkerrors.Wrap(err, "Failure to parse JSON object") + return errorsmod.Wrap(err, "Failure to parse JSON object") } from := clientCtx.GetFromAddress() @@ -173,7 +173,7 @@ Where metadata.json contains (example): propMetaData, err := ParseTreasuryMetadata(clientCtx.Codec, args[0]) if err != nil { - return sdkerrors.Wrap(err, "Failure to parse JSON object") + return errorsmod.Wrap(err, "Failure to parse JSON object") } from := clientCtx.GetFromAddress() diff --git a/x/govshuttle/handler.go b/x/govshuttle/handler.go index 1d590b437..0f5d3bf9a 100644 --- a/x/govshuttle/handler.go +++ b/x/govshuttle/handler.go @@ -3,6 +3,7 @@ package govshuttle import ( "fmt" + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -20,7 +21,7 @@ func NewHandler(k keeper.Keeper) sdk.Handler { // this line is used by starport scaffolding # 1 default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } } } diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index d89f423b6..26040f2d2 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -3,10 +3,11 @@ package keeper import ( "fmt" - "github.com/cosmos/cosmos-sdk/store/prefix" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" "github.com/ethereum/go-ethereum/common" - "github.com/tendermint/tendermint/libs/log" + "cosmossdk.io/log" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -15,7 +16,7 @@ import ( type ( Keeper struct { - storeKey sdk.StoreKey + storeKey storetypes.StoreKey cdc codec.BinaryCodec paramstore paramtypes.Subspace @@ -26,7 +27,7 @@ type ( ) func NewKeeper( - storeKey sdk.StoreKey, + storeKey storetypes.StoreKey, cdc codec.BinaryCodec, ps paramtypes.Subspace, diff --git a/x/govshuttle/keeper/proposals.go b/x/govshuttle/keeper/proposals.go index 9e592b917..b03c00c1e 100644 --- a/x/govshuttle/keeper/proposals.go +++ b/x/govshuttle/keeper/proposals.go @@ -3,9 +3,10 @@ package keeper import ( "math/big" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/contracts" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" @@ -23,7 +24,7 @@ func (k *Keeper) AppendLendingMarketProposal(ctx sdk.Context, lm *types.LendingM } if err != nil { - return nil, sdkerrors.Wrap(err, "Error obtaining Proposal ID") + return nil, errorsmod.Wrap(err, "Error obtaining Proposal ID") } //if this is the first govshuttle proposal, deploy the map contract as well @@ -39,11 +40,11 @@ func (k *Keeper) AppendLendingMarketProposal(ctx sdk.Context, lm *types.LendingM } _, err = k.erc20Keeper.CallEVM(ctx, contracts.ProposalStoreContract.ABI, types.ModuleAddress, addr, true, - "AddProposal", sdk.NewIntFromUint64(m.GetPropId()).BigInt(), lm.GetTitle(), lm.GetDescription(), ToAddress(m.GetAccount()), + "AddProposal", sdkmath.NewIntFromUint64(m.GetPropId()).BigInt(), lm.GetTitle(), lm.GetDescription(), ToAddress(m.GetAccount()), ToBigInt(m.GetValues()), m.GetSignatures(), ToBytes(m.GetCalldatas())) if err != nil { - return nil, sdkerrors.Wrap(err, "Error in EVM Call") + return nil, errorsmod.Wrap(err, "Error in EVM Call") } return lm, nil @@ -53,11 +54,11 @@ func (k Keeper) DeployMapContract(ctx sdk.Context, lm *types.LendingMarketPropos m := lm.GetMetadata() - ctorArgs, err := contracts.ProposalStoreContract.ABI.Pack("", sdk.NewIntFromUint64(m.GetPropId()).BigInt(), lm.GetTitle(), lm.GetDescription(), ToAddress(m.GetAccount()), + ctorArgs, err := contracts.ProposalStoreContract.ABI.Pack("", sdkmath.NewIntFromUint64(m.GetPropId()).BigInt(), lm.GetTitle(), lm.GetDescription(), ToAddress(m.GetAccount()), ToBigInt(m.GetValues()), m.GetSignatures(), ToBytes(m.GetCalldatas())) //Call empty constructor of Proposal-Store if err != nil { - return common.Address{}, sdkerrors.Wrapf(erc20types.ErrABIPack, "Contract deployment failure: %s", err.Error()) + return common.Address{}, errorsmod.Wrapf(erc20types.ErrABIPack, "Contract deployment failure: %s", err.Error()) } data := make([]byte, len(contracts.ProposalStoreContract.Bin)+len(ctorArgs)) @@ -67,14 +68,14 @@ func (k Keeper) DeployMapContract(ctx sdk.Context, lm *types.LendingMarketPropos nonce, err := k.accKeeper.GetSequence(ctx, types.ModuleAddress.Bytes()) if err != nil { - return common.Address{}, sdkerrors.Wrap(err, "Error obtaining account nonce") + return common.Address{}, errorsmod.Wrap(err, "Error obtaining account nonce") } contractAddr := crypto.CreateAddress(types.ModuleAddress, nonce) _, err = k.erc20Keeper.CallEVMWithData(ctx, types.ModuleAddress, nil, data, true) if err != nil { - return common.Address{}, sdkerrors.Wrap(err, "Failed to deploy contract") + return common.Address{}, errorsmod.Wrap(err, "Failed to deploy contract") } return contractAddr, nil @@ -115,7 +116,7 @@ func ToBigInt(ints []uint64) []*big.Int { arr := make([]*big.Int, len(ints)) for i, a := range ints { - arr[i] = sdk.NewIntFromUint64(a).BigInt() + arr[i] = sdkmath.NewIntFromUint64(a).BigInt() } return arr diff --git a/x/govshuttle/module.go b/x/govshuttle/module.go index 66d460c83..e99c0a24c 100644 --- a/x/govshuttle/module.go +++ b/x/govshuttle/module.go @@ -10,7 +10,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/Canto-Network/Canto/v7/x/govshuttle/client/cli" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" @@ -115,24 +115,17 @@ func NewAppModule( } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + // Name returns the capability module's name. func (am AppModule) Name() string { return am.AppModuleBasic.Name() } -// Route returns the capability module's message routing key. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the capability module's query routing key. -func (AppModule) QuerierRoute() string { return types.QuerierRoute } - -// LegacyQuerierHandler returns the capability module's Querier. -func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier { - return nil -} - // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { @@ -162,12 +155,3 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw // ConsensusVersion implements ConsensusVersion. func (AppModule) ConsensusVersion() uint64 { return 2 } - -// BeginBlock executes all ABCI BeginBlock logic respective to the capability module. -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} - -// EndBlock executes all ABCI EndBlock logic respective to the capability module. It -// returns no validator updates. -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} diff --git a/x/govshuttle/module_simulation.go b/x/govshuttle/module_simulation.go index 0fa01a228..bf4bd3db8 100644 --- a/x/govshuttle/module_simulation.go +++ b/x/govshuttle/module_simulation.go @@ -7,7 +7,7 @@ import ( govshuttlesimulation "github.com/Canto-Network/Canto/v7/x/govshuttle/simulation" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/baseapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" @@ -18,7 +18,7 @@ import ( var ( //_ = sample.AccAddress _ = govshuttlesimulation.FindAccount - _ = simappparams.StakePerAccount + _ = simtestutil.StakePerAccount _ = simulation.MsgEntryKind _ = baseapp.Paramspace ) diff --git a/x/govshuttle/proposal_handler.go b/x/govshuttle/proposal_handler.go index 62eaefee4..9a05bf341 100644 --- a/x/govshuttle/proposal_handler.go +++ b/x/govshuttle/proposal_handler.go @@ -4,7 +4,6 @@ import ( "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) @@ -18,7 +17,7 @@ func NewgovshuttleProposalHandler(k *keeper.Keeper) govtypes.Handler { case *types.TreasuryProposal: return handleTreasuryProposal(ctx, k, c) default: - return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) + return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) } } } diff --git a/x/govshuttle/types/errors.go b/x/govshuttle/types/errors.go index 88fa5d2dd..2613dac02 100644 --- a/x/govshuttle/types/errors.go +++ b/x/govshuttle/types/errors.go @@ -3,10 +3,10 @@ package types // DONTCOVER import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // x/govshuttle module sentinel errors var ( - Errgovshuttle = sdkerrors.Register(ModuleName, 1100, "govshuttle error") + Errgovshuttle = errorsmod.Register(ModuleName, 1100, "govshuttle error") ) diff --git a/x/govshuttle/types/proposal.go b/x/govshuttle/types/proposal.go index 883b50e27..655d2e202 100644 --- a/x/govshuttle/types/proposal.go +++ b/x/govshuttle/types/proposal.go @@ -3,7 +3,7 @@ package types import ( "strings" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) @@ -19,7 +19,7 @@ var ( _ govtypes.Content = &TreasuryProposal{} ) -//Register Compound Proposal type as a valid proposal type in goveranance module +// Register Compound Proposal type as a valid proposal type in goveranance module func init() { govtypes.RegisterProposalType(ProposalTypeLendingMarket) govtypes.RegisterProposalType(ProposalTypeTreasury) @@ -65,11 +65,11 @@ func (lm *LendingMarketProposal) ValidateBasic() error { cd, vals, sigs := len(m.GetCalldatas()), len(m.GetValues()), len(m.GetSignatures()) if cd != vals { - return sdkerrors.Wrapf(govtypes.ErrInvalidProposalContent, "proposal array arguments must be same length") + return errorsmod.Wrapf(govtypes.ErrInvalidProposalContent, "proposal array arguments must be same length") } if vals != sigs { - return sdkerrors.Wrapf(govtypes.ErrInvalidProposalContent, "proposal array arguments must be same length") + return errorsmod.Wrapf(govtypes.ErrInvalidProposalContent, "proposal array arguments must be same length") } return nil } @@ -83,7 +83,7 @@ func (tp *TreasuryProposal) ValidateBasic() error { s := strings.ToLower(tm.GetDenom()) if s != "canto" && s != "note" { - return sdkerrors.Wrapf(govtypes.ErrInvalidProposalContent, "%s is not a valid denom string", tm.GetDenom()) + return errorsmod.Wrapf(govtypes.ErrInvalidProposalContent, "%s is not a valid denom string", tm.GetDenom()) } return nil diff --git a/x/govshuttle/types/query.pb.go b/x/govshuttle/types/query.pb.go index 5487175ca..1a517accb 100644 --- a/x/govshuttle/types/query.pb.go +++ b/x/govshuttle/types/query.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" _ "github.com/cosmos/cosmos-sdk/types/query" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index b77a4c641..5c3016af9 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" math "math" diff --git a/x/inflation/keeper/epoch_mint_provisions.go b/x/inflation/keeper/epoch_mint_provisions.go index e6f0ac9d3..b0881067a 100644 --- a/x/inflation/keeper/epoch_mint_provisions.go +++ b/x/inflation/keeper/epoch_mint_provisions.go @@ -3,19 +3,20 @@ package keeper import ( "fmt" + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/x/inflation/types" sdk "github.com/cosmos/cosmos-sdk/types" ) // GetEpochMintProvision gets the current EpochMintProvision -func (k Keeper) GetEpochMintProvision(ctx sdk.Context) (sdk.Dec, bool) { +func (k Keeper) GetEpochMintProvision(ctx sdk.Context) (sdkmath.LegacyDec, bool) { store := ctx.KVStore(k.storeKey) bz := store.Get(types.KeyPrefixEpochMintProvision) if len(bz) == 0 { - return sdk.ZeroDec(), false + return sdkmath.LegacyZeroDec(), false } - var epochMintProvision sdk.Dec + var epochMintProvision sdkmath.LegacyDec err := epochMintProvision.Unmarshal(bz) if err != nil { panic(fmt.Errorf("unable to unmarshal epochMintProvision value: %w", err)) @@ -25,7 +26,7 @@ func (k Keeper) GetEpochMintProvision(ctx sdk.Context) (sdk.Dec, bool) { } // SetEpochMintProvision sets the current EpochMintProvision -func (k Keeper) SetEpochMintProvision(ctx sdk.Context, epochMintProvision sdk.Dec) { +func (k Keeper) SetEpochMintProvision(ctx sdk.Context, epochMintProvision sdkmath.LegacyDec) { bz, err := epochMintProvision.Marshal() if err != nil { panic(fmt.Errorf("unable to marshal amount value: %w", err)) diff --git a/x/inflation/keeper/epoch_mint_provisions_test.go b/x/inflation/keeper/epoch_mint_provisions_test.go index dcbb0e0bc..035afebea 100644 --- a/x/inflation/keeper/epoch_mint_provisions_test.go +++ b/x/inflation/keeper/epoch_mint_provisions_test.go @@ -3,11 +3,11 @@ package keeper_test import ( "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ) func (suite *KeeperTestSuite) TestSetGetEpochMintProvision() { - expEpochMintProvision := sdk.NewDec(1_000_000) + expEpochMintProvision := sdkmath.LegacyNewDec(1_000_000) testCases := []struct { name string @@ -28,7 +28,7 @@ func (suite *KeeperTestSuite) TestSetGetEpochMintProvision() { }, } - genesisProvision := sdk.MustNewDecFromStr("543478266666666666666667.000000000000000000") + genesisProvision := sdkmath.LegacyMustNewDecFromStr("543478266666666666666667.000000000000000000") for _, tc := range testCases { suite.Run(fmt.Sprintf("Case %s", tc.name), func() { diff --git a/x/inflation/keeper/genesis_test.go b/x/inflation/keeper/genesis_test.go index d59df66a2..33892462a 100644 --- a/x/inflation/keeper/genesis_test.go +++ b/x/inflation/keeper/genesis_test.go @@ -3,13 +3,13 @@ package keeper_test import ( "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ) func (suite *KeeperTestSuite) TestInitGenesis() { // check calculated epochMintProvision at genesis epochMintProvision, _ := suite.app.InflationKeeper.GetEpochMintProvision(suite.ctx) fmt.Println(suite.app.InflationKeeper.GetParams(suite.ctx)) - expMintProvision := sdk.MustNewDecFromStr("543478266666666666666667.000000000000000000") + expMintProvision := sdkmath.LegacyMustNewDecFromStr("543478266666666666666667.000000000000000000") suite.Require().Equal(expMintProvision, epochMintProvision) } diff --git a/x/inflation/keeper/grpc_query_test.go b/x/inflation/keeper/grpc_query_test.go index 80d5aa3a9..3c2868407 100644 --- a/x/inflation/keeper/grpc_query_test.go +++ b/x/inflation/keeper/grpc_query_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "fmt" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/inflation/types" @@ -78,7 +79,7 @@ func (suite *KeeperTestSuite) TestEpochMintProvision() { params, uint64(0), 30, - sdk.OneDec(), + sdkmath.LegacyOneDec(), ) req = &types.QueryEpochMintProvisionRequest{} expRes = &types.QueryEpochMintProvisionResponse{ @@ -90,7 +91,7 @@ func (suite *KeeperTestSuite) TestEpochMintProvision() { { "set epochMintProvision", func() { - epochMintProvision := sdk.NewDec(1_000_000) + epochMintProvision := sdkmath.LegacyNewDec(1_000_000) suite.app.InflationKeeper.SetEpochMintProvision(suite.ctx, epochMintProvision) suite.Commit() @@ -195,7 +196,7 @@ func (suite *KeeperTestSuite) TestQueryInflationRate() { err := suite.app.InflationKeeper.MintCoins(suite.ctx, mintCoin) suite.Require().NoError(err) - expInflationRate := sdk.MustNewDecFromStr("4.076087000000000000") + expInflationRate := sdkmath.LegacyMustNewDecFromStr("4.076087000000000000") res, err := suite.queryClient.InflationRate(ctx, &types.QueryInflationRateRequest{}) suite.Require().NoError(err) suite.Require().Equal(expInflationRate, res.InflationRate) diff --git a/x/inflation/keeper/hooks.go b/x/inflation/keeper/hooks.go index d6926e3be..aa6326d9a 100644 --- a/x/inflation/keeper/hooks.go +++ b/x/inflation/keeper/hooks.go @@ -5,9 +5,9 @@ import ( epochstypes "github.com/Canto-Network/Canto/v7/x/epochs/types" "github.com/Canto-Network/Canto/v7/x/inflation/types" - "github.com/armon/go-metrics" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/hashicorp/go-metrics" ) // BeforeEpochStart: noop, We don't need to do anything here diff --git a/x/inflation/keeper/hooks_test.go b/x/inflation/keeper/hooks_test.go index 3d3bda94f..ec40e1435 100644 --- a/x/inflation/keeper/hooks_test.go +++ b/x/inflation/keeper/hooks_test.go @@ -36,14 +36,16 @@ func (suite *KeeperTestSuite) TestEpochIdentifierAfterEpochEnd() { futureCtx := suite.ctx.WithBlockTime(time.Now().Add(time.Hour)) newHeight := suite.app.LastBlockHeight() + 1 - feePoolOrigin := suite.app.DistrKeeper.GetFeePool(suite.ctx) + feePoolOrigin, err := suite.app.DistrKeeper.FeePool.Get(suite.ctx) + suite.Require().NoError(err) suite.app.EpochsKeeper.BeforeEpochStart(futureCtx, tc.epochIdentifier, newHeight) suite.app.EpochsKeeper.AfterEpochEnd(futureCtx, tc.epochIdentifier, newHeight) suite.app.EpochsKeeper.AfterEpochEnd(futureCtx, tc.epochIdentifier, newHeight) // check the distribution happened as well - feePoolNew := suite.app.DistrKeeper.GetFeePool(suite.ctx) + feePoolNew, err := suite.app.DistrKeeper.FeePool.Get(suite.ctx) + suite.Require().NoError(err) if tc.expDistribution { // Actual distribution portions are tested elsewhere; we just want to verify the value of the pool is greater here suite.Require().Equal(feePoolNew.CommunityPool.AmountOf(denomMint).BigInt().Uint64(), diff --git a/x/inflation/keeper/inflation.go b/x/inflation/keeper/inflation.go index c3c8ecc5f..16591eda7 100644 --- a/x/inflation/keeper/inflation.go +++ b/x/inflation/keeper/inflation.go @@ -1,6 +1,7 @@ package keeper import ( + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/inflation/types" @@ -85,54 +86,59 @@ func (k Keeper) AllocateExponentialInflation( func (k Keeper) GetProportions( ctx sdk.Context, coin sdk.Coin, - distribution sdk.Dec, + distribution sdkmath.LegacyDec, ) sdk.Coin { return sdk.NewCoin( coin.Denom, - coin.Amount.ToDec().Mul(distribution).TruncateInt(), + coin.Amount.ToLegacyDec().Mul(distribution).TruncateInt(), ) } // BondedRatio the fraction of the staking tokens which are currently bonded // It doesn't consider team allocation for inflation -func (k Keeper) BondedRatio(ctx sdk.Context) sdk.Dec { - stakeSupply := k.stakingKeeper.StakingTokenSupply(ctx) +func (k Keeper) BondedRatio(ctx sdk.Context) sdkmath.LegacyDec { + stakeSupply, err := k.stakingKeeper.StakingTokenSupply(ctx) - if !stakeSupply.IsPositive() { - return sdk.ZeroDec() + if err != nil || !stakeSupply.IsPositive() { + return sdkmath.LegacyZeroDec() } - return k.stakingKeeper.TotalBondedTokens(ctx).ToDec().QuoInt(stakeSupply) + totalBonded, err := k.stakingKeeper.TotalBondedTokens(ctx) + if err != nil { + return sdkmath.LegacyZeroDec() + } + + return totalBonded.ToLegacyDec().QuoInt(stakeSupply) } // GetCirculatingSupply returns the bank supply of the mintDenom -func (k Keeper) GetCirculatingSupply(ctx sdk.Context) sdk.Dec { +func (k Keeper) GetCirculatingSupply(ctx sdk.Context) sdkmath.LegacyDec { mintDenom := k.GetParams(ctx).MintDenom - circulatingSupply := k.bankKeeper.GetSupply(ctx, mintDenom).Amount.ToDec() + circulatingSupply := k.bankKeeper.GetSupply(ctx, mintDenom).Amount.ToLegacyDec() return circulatingSupply } // GetInflationRate returns the inflation rate for the current period. -func (k Keeper) GetInflationRate(ctx sdk.Context) sdk.Dec { +func (k Keeper) GetInflationRate(ctx sdk.Context) sdkmath.LegacyDec { epochMintProvision, _ := k.GetEpochMintProvision(ctx) if epochMintProvision.IsZero() { - return sdk.ZeroDec() + return sdkmath.LegacyZeroDec() } epp := k.GetEpochsPerPeriod(ctx) if epp == 0 { - return sdk.ZeroDec() + return sdkmath.LegacyZeroDec() } - epochsPerPeriod := sdk.NewDec(epp) + epochsPerPeriod := sdkmath.LegacyNewDec(epp) circulatingSupply := k.GetCirculatingSupply(ctx) if circulatingSupply.IsZero() { - return sdk.ZeroDec() + return sdkmath.LegacyZeroDec() } // EpochMintProvision * 365 / circulatingSupply * 100 - return epochMintProvision.Mul(epochsPerPeriod).Quo(circulatingSupply).Mul(sdk.NewDec(100)) + return epochMintProvision.Mul(epochsPerPeriod).Quo(circulatingSupply).Mul(sdkmath.LegacyNewDec(100)) } diff --git a/x/inflation/keeper/inflation_test.go b/x/inflation/keeper/inflation_test.go index ca0d234dc..622574bf7 100644 --- a/x/inflation/keeper/inflation_test.go +++ b/x/inflation/keeper/inflation_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "fmt" + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/x/inflation/types" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -20,17 +21,17 @@ func (suite *KeeperTestSuite) TestMintAndAllocateInflation() { }{ { "pass", - sdk.NewCoin(denomMint, sdk.NewInt(1_000_000)), + sdk.NewCoin(denomMint, sdkmath.NewInt(1_000_000)), func() {}, - sdk.NewCoin(denomMint, sdk.NewInt(1_000_000)), + sdk.NewCoin(denomMint, sdkmath.NewInt(1_000_000)), sdk.DecCoins(nil), true, }, { "pass - no coins minted ", - sdk.NewCoin(denomMint, sdk.ZeroInt()), + sdk.NewCoin(denomMint, sdkmath.ZeroInt()), func() {}, - sdk.NewCoin(denomMint, sdk.ZeroInt()), + sdk.NewCoin(denomMint, sdkmath.ZeroInt()), sdk.DecCoins(nil), true, }, @@ -75,15 +76,15 @@ func (suite *KeeperTestSuite) TestGetCirculatingSupplyAndInflationRate() { name string bankSupply int64 malleate func() - expInflationRate sdk.Dec + expInflationRate sdkmath.LegacyDec }{ { "no mint provision", 400_000_000, func() { - suite.app.InflationKeeper.SetEpochMintProvision(suite.ctx, sdk.ZeroDec()) + suite.app.InflationKeeper.SetEpochMintProvision(suite.ctx, sdkmath.LegacyZeroDec()) }, - sdk.ZeroDec(), + sdkmath.LegacyZeroDec(), }, { "no epochs per period", @@ -91,19 +92,19 @@ func (suite *KeeperTestSuite) TestGetCirculatingSupplyAndInflationRate() { func() { suite.app.InflationKeeper.SetEpochsPerPeriod(suite.ctx, 0) }, - sdk.ZeroDec(), + sdkmath.LegacyZeroDec(), }, { "high supply", 800_000_000, func() {}, - sdk.MustNewDecFromStr("2.038043500000000000"), + sdkmath.LegacyMustNewDecFromStr("2.038043500000000000"), }, { "low supply", 400_000_000, func() {}, - sdk.MustNewDecFromStr("4.076087000000000000"), + sdkmath.LegacyMustNewDecFromStr("4.076087000000000000"), }, } for _, tc := range testCases { diff --git a/x/inflation/keeper/integration_test.go b/x/inflation/keeper/integration_test.go index 83d2abe7a..b73896306 100644 --- a/x/inflation/keeper/integration_test.go +++ b/x/inflation/keeper/integration_test.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + sdkmath "cosmossdk.io/math" epochstypes "github.com/Canto-Network/Canto/v7/x/epochs/types" "github.com/Canto-Network/Canto/v7/x/inflation/types" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -17,7 +18,7 @@ import ( var ( epochNumber int64 skipped uint64 - provision sdk.Dec + provision sdkmath.LegacyDec found bool ) @@ -65,7 +66,7 @@ var _ = Describe("Inflation", Ordered, func() { stakingBal := s.app.BankKeeper.GetAllBalances(s.ctx, staking) // fees distributed Expect(balanceCommunityPool.AmountOf(denomMint).Equal(expectedStaking)).To(BeTrue()) - Expect(stakingBal.AmountOf(denomMint).Equal(sdk.NewInt(0))).To(BeTrue()) + Expect(stakingBal.AmountOf(denomMint).Equal(sdkmath.NewInt(0))).To(BeTrue()) }) }) }) @@ -164,7 +165,7 @@ var _ = Describe("Inflation", Ordered, func() { // fmt.Println("provisionAfter: ", provisionAfter) Expect(provisionAfter).ToNot(Equal(provision)) fmt.Println("provision after: ", provisionAfter) - Expect(provisionAfter).To(Equal(sdk.MustNewDecFromStr("10597826200000000000000000.000000000000000000"))) + Expect(provisionAfter).To(Equal(sdkmath.LegacyMustNewDecFromStr("10597826200000000000000000.000000000000000000"))) }) }) }) @@ -179,7 +180,7 @@ var _ = Describe("Inflation", Ordered, func() { valAddrs := MakeValAccts(1) pk := GenKeys(1) // instantiate validator - v, err := stakingtypes.NewValidator(valAddrs[0], pk[0].PubKey(), stakingtypes.Description{}) + v, err := stakingtypes.NewValidator(valAddrs[0].String(), pk[0].PubKey(), stakingtypes.Description{}) s.Require().NoError(err) s.Require().Equal(stakingtypes.Unbonded, v.Status) // Increment Validator balance + power Index @@ -190,8 +191,8 @@ var _ = Describe("Inflation", Ordered, func() { s.app.StakingKeeper.SetValidatorByPowerIndex(s.ctx, v) //update validator set _, err = s.app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(s.ctx) // failing bc validator tokens are not enough - v, found := s.app.StakingKeeper.GetValidator(s.ctx, valAddrs[0]) - s.Require().True(found) + s.Require().NoError(err) + v, err = s.app.StakingKeeper.GetValidator(s.ctx, valAddrs[0]) s.Require().NoError(err) s.Require().Equal(stakingtypes.Bonded, v.Status) // set consAddress @@ -213,7 +214,7 @@ var _ = Describe("Inflation", Ordered, func() { It("Commit Block Before Epoch and check rewards", func() { s.CommitAfter(time.Minute) valBal := s.app.BankKeeper.GetAllBalances(s.ctx, sdk.AccAddress(sdk.AccAddress(s.consAddress))) - Expect(valBal.AmountOf(denomMint).Equal(sdk.NewInt(0))).To(BeTrue()) + Expect(valBal.AmountOf(denomMint).Equal(sdkmath.NewInt(0))).To(BeTrue()) }) It("Commit block after Epoch and balance will be Epoch Mint Provision", func() { provision, _ := s.app.InflationKeeper.GetEpochMintProvision(s.ctx) @@ -222,7 +223,8 @@ var _ = Describe("Inflation", Ordered, func() { s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) //Get Fee Pool befor // valAddr, _ := sdk.ValAddressFromBech32(v.OperatorAddress) - valBal := s.app.DistrKeeper.GetValidatorCurrentRewards(s.ctx, valAddr) + valBal, err := s.app.DistrKeeper.GetValidatorCurrentRewards(s.ctx, valAddr) + s.Require().NoError(err) Expect(valBal.Rewards.AmountOf(denomMint).Equal(provision)).To(BeFalse()) }) }) @@ -231,9 +233,11 @@ var _ = Describe("Inflation", Ordered, func() { func (s *KeeperTestSuite) clearValidatorsAndInitPool(power int64) { amt := s.app.StakingKeeper.TokensFromConsensusPower(s.ctx, power) notBondedPool := s.app.StakingKeeper.GetNotBondedPool(s.ctx) - totalSupply := sdk.NewCoins(sdk.NewCoin(s.app.StakingKeeper.BondDenom(s.ctx), amt)) + bondDenom, err := s.app.StakingKeeper.BondDenom(s.ctx) + s.Require().NoError(err) + totalSupply := sdk.NewCoins(sdk.NewCoin(bondDenom, amt)) s.app.AccountKeeper.SetModuleAccount(s.ctx, notBondedPool) - err := FundModuleAccount(s.app.BankKeeper, s.ctx, notBondedPool.GetName(), totalSupply) + err = FundModuleAccount(s.app.BankKeeper, s.ctx, notBondedPool.GetName(), totalSupply) s.Require().NoError(err) } diff --git a/x/inflation/keeper/keeper.go b/x/inflation/keeper/keeper.go index d0d6e6f46..4060a6f23 100644 --- a/x/inflation/keeper/keeper.go +++ b/x/inflation/keeper/keeper.go @@ -1,18 +1,18 @@ package keeper import ( + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/tendermint/tendermint/libs/log" - "github.com/Canto-Network/Canto/v7/x/inflation/types" ) // Keeper of the inflation store type Keeper struct { - storeKey sdk.StoreKey + storeKey storetypes.StoreKey cdc codec.BinaryCodec paramstore paramtypes.Subspace @@ -25,7 +25,7 @@ type Keeper struct { // NewKeeper creates a new mint Keeper instance func NewKeeper( - storeKey sdk.StoreKey, + storeKey storetypes.StoreKey, cdc codec.BinaryCodec, ps paramtypes.Subspace, ak types.AccountKeeper, diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index ea7ba41eb..b0ee64ae6 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -8,15 +8,15 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + abci "github.com/cometbft/cometbft/abci/types" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" "github.com/ethereum/go-ethereum/common" "github.com/evmos/ethermint/crypto/ethsecp256k1" @@ -72,7 +72,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { require.NoError(t, err) suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) // setup context - suite.ctx = suite.app.BaseApp.NewContext(checkTx, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(checkTx, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -110,21 +110,25 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { evmParams.EvmDenom = denomMint suite.app.EvmKeeper.SetParams(suite.ctx, evmParams) - stakingParams := suite.app.StakingKeeper.GetParams(suite.ctx) + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + require.NoError(t, err) stakingParams.BondDenom = denomMint suite.app.StakingKeeper.SetParams(suite.ctx, stakingParams) // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) - suite.app.StakingKeeper.AfterValidatorCreated(suite.ctx, validator.GetOperator()) + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - validators := s.app.StakingKeeper.GetValidators(s.ctx, 1) + validators, err := s.app.StakingKeeper.GetValidators(s.ctx, 1) + require.NoError(t, err) suite.validator = validators[0] suite.ethSigner = ethtypes.LatestSignerForChainID(s.app.EvmKeeper.ChainID()) @@ -145,16 +149,17 @@ func (suite *KeeperTestSuite) Commit() { } func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - _ = suite.app.Commit() + suite.app.Commit() header := suite.ctx.BlockHeader() header.Height += 1 header.Time = header.Time.Add(t) - suite.app.BeginBlock(abci.RequestBeginBlock{ - Header: header, + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, }) // update ctx - suite.ctx = suite.app.BaseApp.NewContext(false, header) + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) diff --git a/x/inflation/migrations/v2/migration.go b/x/inflation/migrations/v2/migration.go index 8411aa7dc..b6e991591 100644 --- a/x/inflation/migrations/v2/migration.go +++ b/x/inflation/migrations/v2/migration.go @@ -1,6 +1,7 @@ package v7 import ( + sdkmath "cosmossdk.io/math" "github.com/Canto-Network/Canto/v7/x/inflation/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -9,17 +10,17 @@ type InflationKeeper interface { GetParams(ctx sdk.Context) types.Params SetParams(ctx sdk.Context, params types.Params) SetEpochsPerPeriod(ctx sdk.Context, epochsPerPeriod int64) - SetEpochMintProvision(ctx sdk.Context, epochMintProvision sdk.Dec) + SetEpochMintProvision(ctx sdk.Context, epochMintProvision sdkmath.LegacyDec) } func UpdateParams(ctx sdk.Context, ik InflationKeeper) error { params := ik.GetParams(ctx) newExp := types.ExponentialCalculation{ - A: sdk.NewDec(int64(16_304_348)), - R: sdk.NewDecWithPrec(35, 2), // 35% - C: sdk.ZeroDec(), - BondingTarget: sdk.NewDecWithPrec(80, 2), // not relevant; max variance is 0 - MaxVariance: sdk.ZeroDec(), + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), // 35% + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(80, 2), // not relevant; max variance is 0 + MaxVariance: sdkmath.LegacyZeroDec(), } ctx.Logger().Info("Setting Inflation Parameters") @@ -30,7 +31,7 @@ func UpdateParams(ctx sdk.Context, ik InflationKeeper) error { //update EpochsPerPeriod ik.SetEpochsPerPeriod(ctx, int64(30)) - epochMintProvision := types.CalculateEpochMintProvision(params, 0, 30, sdk.NewDec(1)) + epochMintProvision := types.CalculateEpochMintProvision(params, 0, 30, sdkmath.LegacyNewDec(1)) ik.SetEpochMintProvision(ctx, epochMintProvision) return nil diff --git a/x/inflation/module.go b/x/inflation/module.go index 7d8cb58d1..eb6adaad5 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -6,6 +6,7 @@ import ( "fmt" "math/rand" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -17,7 +18,6 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" "github.com/Canto-Network/Canto/v7/x/inflation/client/cli" "github.com/Canto-Network/Canto/v7/x/inflation/keeper" @@ -112,6 +112,12 @@ func NewAppModule( } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + // Name returns the inflation module's name. func (AppModule) Name() string { return types.ModuleName @@ -125,21 +131,6 @@ func (am AppModule) NewHandler() sdk.Handler { return nil } -// Route returns the message routing key for the inflation module. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, am.NewHandler()) -} - -// QuerierRoute returns the inflation module's querier route name. -func (am AppModule) QuerierRoute() string { - return types.RouterKey -} - -// LegacyQuerierHandler returns the inflation module sdk.Querier. -func (am AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { - return nil -} - // RegisterServices registers a gRPC query service to respond to the // module-specific gRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { @@ -152,16 +143,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { } } -// BeginBlock returns the begin blocker for the inflation module. -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) { -} - -// EndBlock returns the end blocker for the inflation module. It returns no validator -// updates. -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - // InitGenesis performs genesis initialization for the inflation module. It returns // no validator updates. func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { diff --git a/x/inflation/spec/05_parameters.md b/x/inflation/spec/05_parameters.md index 7e92fdecf..c774590b8 100644 --- a/x/inflation/spec/05_parameters.md +++ b/x/inflation/spec/05_parameters.md @@ -10,14 +10,14 @@ can be modified via governance. | Key | Type | Default Value | | ------------------------ | ---------------------- | ----------------------------------------------------------------------------- | | `MintDenom` | string | `evm.DefaultEVMDenom` // “aevmos” | -| `ExponentialCalculation` | ExponentialCalculation | `A: sdk.NewDec(int64(300_000_000))` | -| | | `R: sdk.NewDecWithPrec(50, 2)` | -| | | `C: sdk.NewDec(int64(9_375_000))` | -| | | `BondingTarget: sdk.NewDecWithPrec(66, 2)` | -| | | `MaxVariance: sdk.ZeroDec()` | -| `InflationDistribution` | InflationDistribution | `StakingRewards: sdk.NewDecWithPrec(533333334, 9)` // 0.53 = 40% / (1 - 25%) | -| | | `UsageIncentives: sdk.NewDecWithPrec(333333333, 9)` // 0.33 = 25% / (1 - 25%) | -| | | `CommunityPool: sdk.NewDecWithPrec(133333333, 9)` // 0.13 = 10% / (1 - 25%) | +| `ExponentialCalculation` | ExponentialCalculation | `A: sdkmath.LegacyNewDec(int64(300_000_000))` | +| | | `R: sdkmath.LegacyNewDecWithPrec(50, 2)` | +| | | `C: sdkmath.LegacyNewDec(int64(9_375_000))` | +| | | `BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2)` | +| | | `MaxVariance: sdkmath.LegacyZeroDec()` | +| `InflationDistribution` | InflationDistribution | `StakingRewards: sdkmath.LegacyNewDecWithPrec(533333334, 9)` // 0.53 = 40% / (1 - 25%) | +| | | `UsageIncentives: sdkmath.LegacyNewDecWithPrec(333333333, 9)` // 0.33 = 25% / (1 - 25%) | +| | | `CommunityPool: sdkmath.LegacyNewDecWithPrec(133333333, 9)` // 0.13 = 10% / (1 - 25%) | | `EnableInflation` | bool | `true` | ## Mint Denom diff --git a/x/inflation/types/inflation_calculation.go b/x/inflation/types/inflation_calculation.go index aa188aaf3..f7239c2a0 100644 --- a/x/inflation/types/inflation_calculation.go +++ b/x/inflation/types/inflation_calculation.go @@ -1,7 +1,7 @@ package types import ( - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ethermint "github.com/evmos/ethermint/types" ) @@ -11,8 +11,8 @@ func CalculateEpochMintProvision( params Params, period uint64, epochsPerPeriod int64, - bondedRatio sdk.Dec, -) sdk.Dec { + bondedRatio sdkmath.LegacyDec, +) sdkmath.LegacyDec { x := period // period a := params.ExponentialCalculation.A // initial value r := params.ExponentialCalculation.R // reduction factor @@ -21,7 +21,7 @@ func CalculateEpochMintProvision( maxVariance := params.ExponentialCalculation.MaxVariance // max percentage that inflation can be increased by // exponentialDecay := a * (1 - r) ^ x + c - decay := sdk.OneDec().Sub(r) + decay := sdkmath.LegacyOneDec().Sub(r) exponentialDecay := a.Mul(decay.Power(x)).Add(c) // bondingIncentive doesn't increase beyond bonding target (0 < b < bonding_target) @@ -31,17 +31,17 @@ func CalculateEpochMintProvision( // bondingIncentive = 1 + max_variance - bondingRatio * (max_variance / bonding_target) sub := bondedRatio.Mul(maxVariance.Quo(bTarget)) - bondingIncentive := sdk.OneDec().Add(maxVariance).Sub(sub) + bondingIncentive := sdkmath.LegacyOneDec().Add(maxVariance).Sub(sub) // periodProvision = exponentialDecay * bondingIncentive periodProvision := exponentialDecay.Mul(bondingIncentive) // epochProvision = periodProvision / epochsPerPeriod - epochProvision := periodProvision.Quo(sdk.NewDec(epochsPerPeriod)) + epochProvision := periodProvision.Quo(sdkmath.LegacyNewDec(epochsPerPeriod)) // Multiply epochMintProvision with power reduction (10^18 for evmos) as the // calculation is based on `evmos` and the issued tokens need to be given in // `aevmos` - epochProvision = epochProvision.Mul(ethermint.PowerReduction.ToDec()) + epochProvision = epochProvision.Mul(ethermint.PowerReduction.ToLegacyDec()) return epochProvision } diff --git a/x/inflation/types/inflation_calculation_test.go b/x/inflation/types/inflation_calculation_test.go index de82d6e6d..e11175514 100644 --- a/x/inflation/types/inflation_calculation_test.go +++ b/x/inflation/types/inflation_calculation_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/suite" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ) type InflationTestSuite struct { @@ -19,111 +19,111 @@ func TestInflationSuite(t *testing.T) { func (suite *InflationTestSuite) TestCalculateEpochMintProvision() { bondingParams := DefaultParams() - bondingParams.ExponentialCalculation.MaxVariance = sdk.NewDecWithPrec(0, 2) + bondingParams.ExponentialCalculation.MaxVariance = sdkmath.LegacyNewDecWithPrec(0, 2) epochsPerPeriod := int64(30) testCases := []struct { name string params Params period uint64 - bondedRatio sdk.Dec - expEpochProvision sdk.Dec + bondedRatio sdkmath.LegacyDec + expEpochProvision sdkmath.LegacyDec expPass bool }{ { "pass - initial period", DefaultParams(), uint64(0), - sdk.OneDec(), - sdk.MustNewDecFromStr("543478266666666666666667.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("543478266666666666666667.000000000000000000"), true, }, { "pass - period 1", DefaultParams(), uint64(1), - sdk.OneDec(), - sdk.MustNewDecFromStr("353260873333333333333333.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("353260873333333333333333.000000000000000000"), true, }, { "pass - period 2", DefaultParams(), uint64(2), - sdk.OneDec(), - sdk.MustNewDecFromStr("229619567666666666666667.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("229619567666666666666667.000000000000000000"), true, }, { "pass - period 3", DefaultParams(), uint64(3), - sdk.OneDec(), - sdk.MustNewDecFromStr("149252718983333333333333.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("149252718983333333333333.000000000000000000"), true, }, { "pass - period 20", DefaultParams(), uint64(20), - sdk.OneDec(), - sdk.MustNewDecFromStr("98502967552518961527.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("98502967552518961527.000000000000000000"), true, }, { "pass - period 21", DefaultParams(), uint64(21), - sdk.OneDec(), - sdk.MustNewDecFromStr("64026928909137053253.000000000000000000"), + sdkmath.LegacyOneDec(), + sdkmath.LegacyMustNewDecFromStr("64026928909137053253.000000000000000000"), true, }, { "pass - 0 percent bonding - initial period", bondingParams, uint64(0), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("543478266666666666666667.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("543478266666666666666667.000000000000000000"), true, }, { "pass - 0 percent bonding - period 1", bondingParams, uint64(1), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("353260873333333333333333.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("353260873333333333333333.000000000000000000"), true, }, { "pass - 0 percent bonding - period 2", bondingParams, uint64(2), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("229619567666666666666667.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("229619567666666666666667.000000000000000000"), true, }, { "pass - 0 percent bonding - period 3", bondingParams, uint64(3), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("149252718983333333333333.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("149252718983333333333333.000000000000000000"), true, }, { "pass - 0 percent bonding - period 20", bondingParams, uint64(20), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("98502967552518961527.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("98502967552518961527.000000000000000000"), true, }, { "pass - 0 percent bonding - period 21", bondingParams, uint64(21), - sdk.ZeroDec(), - sdk.MustNewDecFromStr("64026928909137053253.000000000000000000"), + sdkmath.LegacyZeroDec(), + sdkmath.LegacyMustNewDecFromStr("64026928909137053253.000000000000000000"), true, }, } diff --git a/x/inflation/types/interfaces.go b/x/inflation/types/interfaces.go index 9e69c5587..56ab2a67f 100644 --- a/x/inflation/types/interfaces.go +++ b/x/inflation/types/interfaces.go @@ -1,16 +1,18 @@ package types // noalias import ( + "context" + + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" ) // AccountKeeper defines the contract required for account APIs. type AccountKeeper interface { GetModuleAddress(name string) sdk.AccAddress - GetModuleAccount(ctx sdk.Context, moduleName string) types.ModuleAccountI - GetAccount(sdk.Context, sdk.AccAddress) types.AccountI - SetAccount(sdk.Context, types.AccountI) + GetModuleAccount(ctx context.Context, moduleName string) sdk.ModuleAccountI + GetAccount(context.Context, sdk.AccAddress) sdk.AccountI + SetAccount(context.Context, sdk.AccountI) } // BankKeeper defines the contract needed to be fulfilled for banking and supply @@ -35,7 +37,7 @@ type DistrKeeper interface { // StakingKeeper expected staking keeper type StakingKeeper interface { // BondedRatio the fraction of the staking tokens which are currently bonded - BondedRatio(ctx sdk.Context) sdk.Dec - StakingTokenSupply(ctx sdk.Context) sdk.Int - TotalBondedTokens(ctx sdk.Context) sdk.Int + BondedRatio(ctx context.Context) (sdkmath.LegacyDec, error) + StakingTokenSupply(ctx context.Context) (sdkmath.Int, error) + TotalBondedTokens(ctx context.Context) (sdkmath.Int, error) } diff --git a/x/inflation/types/params.go b/x/inflation/types/params.go index 7c2a8c056..581a417d3 100644 --- a/x/inflation/types/params.go +++ b/x/inflation/types/params.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -43,15 +44,15 @@ func DefaultParams() Params { return Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(16_304_348)), - R: sdk.NewDecWithPrec(35, 2), // 35% - C: sdk.ZeroDec(), - BondingTarget: sdk.NewDecWithPrec(80, 2), // not relevant; max variance is 0 - MaxVariance: sdk.ZeroDec(), // 0% + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), // 35% + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(80, 2), // not relevant; max variance is 0 + MaxVariance: sdkmath.LegacyZeroDec(), // 0% }, InflationDistribution: InflationDistribution{ - StakingRewards: sdk.NewDecWithPrec(1000000000, 9), // 0.53 = 40% / (1 - 25%) - CommunityPool: sdk.ZeroDec(), // 0.13 = 10% / (1 - 25%) + StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000000, 9), // 0.53 = 40% / (1 - 25%) + CommunityPool: sdkmath.LegacyZeroDec(), // 0.13 = 10% / (1 - 25%) }, EnableInflation: false, } @@ -95,7 +96,7 @@ func validateExponentialCalculation(i interface{}) error { } // validate reduction factor - if v.R.GT(sdk.NewDec(1)) { + if v.R.GT(sdkmath.LegacyNewDec(1)) { return fmt.Errorf("reduction factor cannot be greater than 1") } @@ -109,7 +110,7 @@ func validateExponentialCalculation(i interface{}) error { } // validate bonded target - if v.BondingTarget.GT(sdk.NewDec(1)) { + if v.BondingTarget.GT(sdkmath.LegacyNewDec(1)) { return fmt.Errorf("bonded target cannot be greater than 1") } @@ -140,7 +141,7 @@ func validateInflationDistribution(i interface{}) error { } totalProportions := v.StakingRewards.Add(v.CommunityPool) - if !totalProportions.Equal(sdk.NewDec(1)) { + if !totalProportions.Equal(sdkmath.LegacyNewDec(1)) { return errors.New("total distributions ratio should be 1") } diff --git a/x/inflation/types/params_test.go b/x/inflation/types/params_test.go index 9a7f0eccd..4c014d370 100644 --- a/x/inflation/types/params_test.go +++ b/x/inflation/types/params_test.go @@ -3,7 +3,7 @@ package types import ( "testing" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" ) @@ -22,16 +22,16 @@ func (suite *ParamsTestSuite) TestParamKeyTable() { func (suite *ParamsTestSuite) TestParamsValidate() { validExponentialCalculation := ExponentialCalculation{ - A: sdk.NewDec(int64(16_304_348)), - R: sdk.NewDecWithPrec(35, 2), - C: sdk.ZeroDec(), - BondingTarget: sdk.NewDecWithPrec(66, 2), - MaxVariance: sdk.ZeroDec(), + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2), + MaxVariance: sdkmath.LegacyZeroDec(), } validInflationDistribution := InflationDistribution{ - StakingRewards: sdk.NewDecWithPrec(1000000, 6), - CommunityPool: sdk.ZeroDec(), + StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000, 6), + CommunityPool: sdkmath.LegacyZeroDec(), } testCases := []struct { @@ -89,11 +89,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(-1)), - R: sdk.NewDecWithPrec(5, 1), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(-1)), + R: sdkmath.LegacyNewDecWithPrec(5, 1), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -105,11 +105,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(5, 0), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(5, 0), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -121,11 +121,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(-5, 1), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(-5, 1), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -137,11 +137,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(5, 1), - C: sdk.NewDec(int64(-9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(5, 1), + C: sdkmath.LegacyNewDec(int64(-9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -153,11 +153,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(5, 1), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 1), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(5, 1), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 1), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -169,11 +169,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(5, 1), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2).Neg(), - MaxVariance: sdk.NewDecWithPrec(20, 2), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(5, 1), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2).Neg(), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -185,11 +185,11 @@ func (suite *ParamsTestSuite) TestParamsValidate() { Params{ MintDenom: "acanto", ExponentialCalculation: ExponentialCalculation{ - A: sdk.NewDec(int64(300_000_000)), - R: sdk.NewDecWithPrec(5, 1), - C: sdk.NewDec(int64(9_375_000)), - BondingTarget: sdk.NewDecWithPrec(50, 2), - MaxVariance: sdk.NewDecWithPrec(20, 2).Neg(), + A: sdkmath.LegacyNewDec(int64(300_000_000)), + R: sdkmath.LegacyNewDecWithPrec(5, 1), + C: sdkmath.LegacyNewDec(int64(9_375_000)), + BondingTarget: sdkmath.LegacyNewDecWithPrec(50, 2), + MaxVariance: sdkmath.LegacyNewDecWithPrec(20, 2).Neg(), }, InflationDistribution: validInflationDistribution, EnableInflation: true, @@ -202,8 +202,8 @@ func (suite *ParamsTestSuite) TestParamsValidate() { MintDenom: "acanto", ExponentialCalculation: validExponentialCalculation, InflationDistribution: InflationDistribution{ - StakingRewards: sdk.OneDec().Neg(), - CommunityPool: sdk.NewDecWithPrec(133333, 6), + StakingRewards: sdkmath.LegacyOneDec().Neg(), + CommunityPool: sdkmath.LegacyNewDecWithPrec(133333, 6), }, EnableInflation: true, }, @@ -215,8 +215,8 @@ func (suite *ParamsTestSuite) TestParamsValidate() { MintDenom: "acanto", ExponentialCalculation: validExponentialCalculation, InflationDistribution: InflationDistribution{ - StakingRewards: sdk.NewDecWithPrec(533334, 6), - CommunityPool: sdk.NewDecWithPrec(133333, 6), + StakingRewards: sdkmath.LegacyNewDecWithPrec(533334, 6), + CommunityPool: sdkmath.LegacyNewDecWithPrec(133333, 6), }, EnableInflation: true, }, @@ -228,8 +228,8 @@ func (suite *ParamsTestSuite) TestParamsValidate() { MintDenom: "acanto", ExponentialCalculation: validExponentialCalculation, InflationDistribution: InflationDistribution{ - StakingRewards: sdk.NewDecWithPrec(533334, 6), - CommunityPool: sdk.OneDec().Neg(), + StakingRewards: sdkmath.LegacyNewDecWithPrec(533334, 6), + CommunityPool: sdkmath.LegacyOneDec().Neg(), }, EnableInflation: true, }, @@ -241,8 +241,8 @@ func (suite *ParamsTestSuite) TestParamsValidate() { MintDenom: "acanto", ExponentialCalculation: validExponentialCalculation, InflationDistribution: InflationDistribution{ - StakingRewards: sdk.NewDecWithPrec(533333, 6), - CommunityPool: sdk.NewDecWithPrec(133333, 6), + StakingRewards: sdkmath.LegacyNewDecWithPrec(533333, 6), + CommunityPool: sdkmath.LegacyNewDecWithPrec(133333, 6), }, EnableInflation: true, }, diff --git a/x/inflation/types/query.pb.go b/x/inflation/types/query.pb.go index ecf17fbb1..e0da47083 100644 --- a/x/inflation/types/query.pb.go +++ b/x/inflation/types/query.pb.go @@ -9,7 +9,7 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" diff --git a/x/onboarding/genesis_test.go b/x/onboarding/genesis_test.go index 7cd912808..a09375bad 100644 --- a/x/onboarding/genesis_test.go +++ b/x/onboarding/genesis_test.go @@ -10,11 +10,12 @@ import ( "github.com/evmos/ethermint/tests" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/app" @@ -36,7 +37,7 @@ func (suite *GenesisTestSuite) SetupTest() { consAddress := sdk.ConsAddress(tests.GenerateAddress().Bytes()) suite.app = app.Setup(false, feemarkettypes.DefaultGenesisState()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "canto_9000-1", Time: time.Now().UTC(), @@ -84,7 +85,7 @@ func (suite *GenesisTestSuite) TestOnboardingInitGenesis() { types.GenesisState{ Params: types.Params{ EnableOnboarding: false, - AutoSwapThreshold: sdk.NewIntWithDecimal(4, 18), + AutoSwapThreshold: sdkmath.NewIntWithDecimal(4, 18), }, }, false, diff --git a/x/onboarding/ibc_middleware.go b/x/onboarding/ibc_middleware.go index 32df9e274..fb6c42300 100644 --- a/x/onboarding/ibc_middleware.go +++ b/x/onboarding/ibc_middleware.go @@ -2,11 +2,11 @@ package onboarding import ( sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/Canto-Network/Canto/v7/ibc" "github.com/Canto-Network/Canto/v7/x/onboarding/keeper" diff --git a/x/onboarding/ibc_module_test.go b/x/onboarding/ibc_module_test.go index e377897ae..9c85eab57 100644 --- a/x/onboarding/ibc_module_test.go +++ b/x/onboarding/ibc_module_test.go @@ -8,12 +8,13 @@ import ( "github.com/ethereum/go-ethereum/common" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - ibcgotesting "github.com/cosmos/ibc-go/v3/testing" + ibcgotesting "github.com/cosmos/ibc-go/v8/testing" - "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/contracts" @@ -76,8 +77,8 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { // Fund chainB coins := sdk.NewCoins( - sdk.NewCoin(ibcBase, sdk.NewInt(1000000000000)), - sdk.NewCoin("acanto", sdk.NewInt(10000000000)), + sdk.NewCoin(ibcBase, sdkmath.NewInt(1000000000000)), + sdk.NewCoin("acanto", sdkmath.NewInt(10000000000)), ) err := suite.chainB.App.(*app.Canto).BankKeeper.MintCoins(suite.chainB.GetContext(), inflationtypes.ModuleName, coins) suite.Require().NoError(err) @@ -89,11 +90,11 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { coinswapKeeper.SetStandardDenom(suite.chainB.GetContext(), "acanto") params := coinswapKeeper.GetParams(suite.chainB.GetContext()) - params.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(ibcBase, sdk.NewInt(10000000))) + params.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(10000000))) coinswapKeeper.SetParams(suite.chainB.GetContext(), params) middlewareParams := suite.chainB.App.(*app.Canto).GetOnboardingKeeper().GetParams(suite.chainB.GetContext()) - middlewareParams.AutoSwapThreshold = sdk.NewInt(4000000) + middlewareParams.AutoSwapThreshold = sdkmath.NewInt(4000000) suite.chainB.App.(*app.Canto).GetOnboardingKeeper().SetParams(suite.chainB.GetContext(), middlewareParams) erc20Keeper := suite.chainB.App.(*app.Canto).GetErc20Keeper() @@ -102,9 +103,9 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { // Pool creation msgAddLiquidity := coinswaptypes.MsgAddLiquidity{ - MaxToken: sdk.NewCoin(ibcBase, sdk.NewInt(10000000000)), - ExactStandardAmt: sdk.NewInt(10000000000), - MinLiquidity: sdk.NewInt(1), + MaxToken: sdk.NewCoin(ibcBase, sdkmath.NewInt(10000000000)), + ExactStandardAmt: sdkmath.NewInt(10000000000), + MinLiquidity: sdkmath.NewInt(1), Deadline: time.Now().Add(time.Minute * 10).Unix(), Sender: suite.chainB.SenderAccount.GetAddress().String(), } @@ -114,7 +115,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { timeoutHeight := clienttypes.NewHeight(10, 100) - amount, ok := sdk.NewIntFromString("9223372036854775808") // 2^63 (one above int64) + amount, ok := sdkmath.NewIntFromString("9223372036854775808") // 2^63 (one above int64) suite.Require().True(ok) coinToSendToB := sdk.NewCoin(sdk.DefaultBondDenom, amount) @@ -140,9 +141,9 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { events := res.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swapAmount, ok := sdk.NewIntFromString(attrs["amount"]) + swapAmount, ok := sdkmath.NewIntFromString(attrs["amount"]) if !ok { - swapAmount = sdk.ZeroInt() + swapAmount = sdkmath.ZeroInt() } // check balances on chainB after the IBC transfer @@ -163,9 +164,9 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { } // Check that the convert is successful - before := sdk.NewIntFromBigInt(balanceErc20Before) + before := sdkmath.NewIntFromBigInt(balanceErc20Before) suite.Require().True(before.IsZero()) - suite.Require().Equal(coinSentFromAToB.Amount.Sub(swapAmount), sdk.NewIntFromBigInt(balanceErc20)) + suite.Require().Equal(coinSentFromAToB.Amount.Sub(swapAmount), sdkmath.NewIntFromBigInt(balanceErc20)) // IBC transfer to blocked address blockedAddr := "canto10d07y265gmmuvt4z0w9aw880jnsr700jg5j4zm" @@ -207,9 +208,9 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { events = res.GetEvents() attrs = onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swapAmount, ok = sdk.NewIntFromString(attrs["amount"]) + swapAmount, ok = sdkmath.NewIntFromString(attrs["amount"]) if !ok { - swapAmount = sdk.ZeroInt() + swapAmount = sdkmath.ZeroInt() } coinSentFromAToB = types.GetTransferCoin(path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, sdk.DefaultBondDenom, coinToSendToB.Amount) @@ -219,7 +220,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().Equal(balanceCantoBefore, balanceCanto) suite.Require().Equal(balanceVoucherBefore, balanceVoucher) - suite.Require().Equal(sdk.NewIntFromBigInt(balanceErc20Before).Add(coinSentFromAToB.Amount).Sub(swapAmount), sdk.NewIntFromBigInt(balanceErc20)) + suite.Require().Equal(sdkmath.NewIntFromBigInt(balanceErc20Before).Add(coinSentFromAToB.Amount).Sub(swapAmount), sdkmath.NewIntFromBigInt(balanceErc20)) } diff --git a/x/onboarding/keeper/ibc_callbacks.go b/x/onboarding/keeper/ibc_callbacks.go index 5ef388b03..0e5f608ef 100644 --- a/x/onboarding/keeper/ibc_callbacks.go +++ b/x/onboarding/keeper/ibc_callbacks.go @@ -5,12 +5,13 @@ import ( errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/ethereum/go-ethereum/common" @@ -87,12 +88,12 @@ func (k Keeper) OnRecvPacket( autoSwapThreshold := k.GetParams(ctx).AutoSwapThreshold swapCoins := sdk.NewCoin(standardDenom, autoSwapThreshold) standardCoinBalance := k.bankKeeper.SpendableCoins(ctx, recipient).AmountOf(standardDenom) - swappedAmount := sdk.ZeroInt() + swappedAmount := sdkmath.ZeroInt() if standardCoinBalance.LT(autoSwapThreshold) { swappedAmount, err = k.coinswapKeeper.TradeInputForExactOutput(ctx, coinswaptypes.Input{Coin: transferredCoin, Address: recipient.String()}, coinswaptypes.Output{Coin: swapCoins, Address: recipient.String()}) if err != nil { - swappedAmount = sdk.ZeroInt() + swappedAmount = sdkmath.ZeroInt() logger.Error("failed to swap coins", "error", err) } else { ctx.EventManager().EmitEvent( diff --git a/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go b/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go index 68ef1fc4f..9361e4b85 100644 --- a/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go +++ b/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go @@ -9,13 +9,14 @@ import ( . "github.com/onsi/gomega" "github.com/stretchr/testify/suite" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" "github.com/Canto-Network/Canto/v7/app" ibcgotesting "github.com/Canto-Network/Canto/v7/ibc/testing" @@ -62,8 +63,8 @@ func (suite *IBCTestingSuite) SetupTest() { suite.coordinator.CommitNBlocks(suite.IBCCosmosChain, 2) // Mint coins on the gravity side which we'll use to unlock our acanto - coinUsdc := sdk.NewCoin("uUSDC", sdk.NewIntWithDecimal(10000, 6)) - coinUsdt := sdk.NewCoin("uUSDT", sdk.NewIntWithDecimal(10000, 6)) + coinUsdc := sdk.NewCoin("uUSDC", sdkmath.NewIntWithDecimal(10000, 6)) + coinUsdt := sdk.NewCoin("uUSDT", sdkmath.NewIntWithDecimal(10000, 6)) coins := sdk.NewCoins(coinUsdc, coinUsdt) err := suite.IBCGravityChain.GetSimApp().BankKeeper.MintCoins(suite.IBCGravityChain.GetContext(), minttypes.ModuleName, coins) suite.Require().NoError(err) @@ -71,7 +72,7 @@ func (suite *IBCTestingSuite) SetupTest() { suite.Require().NoError(err) // Mint coins on the cosmos side which we'll use to unlock our acanto - coinAtom := sdk.NewCoin("uatom", sdk.NewIntWithDecimal(10000, 6)) + coinAtom := sdk.NewCoin("uatom", sdkmath.NewIntWithDecimal(10000, 6)) coins = sdk.NewCoins(coinAtom) err = suite.IBCCosmosChain.GetSimApp().BankKeeper.MintCoins(suite.IBCCosmosChain.GetContext(), minttypes.ModuleName, coins) suite.Require().NoError(err) @@ -120,22 +121,22 @@ func (suite *IBCTestingSuite) setupRegisterCoin(metadata banktypes.Metadata) *er // CreatePool creates a pool with acanto and the given denom func (suite *IBCTestingSuite) CreatePool(denom string) { - coincanto := sdk.NewCoin("acanto", sdk.NewIntWithDecimal(10000, 18)) - coinIBC := sdk.NewCoin(denom, sdk.NewIntWithDecimal(10000, 6)) + coincanto := sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(10000, 18)) + coinIBC := sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(10000, 6)) coins := sdk.NewCoins(coincanto, coinIBC) suite.FundCantoChain(coins) coinswapKeeper := suite.cantoChain.App.(*app.Canto).CoinswapKeeper coinswapKeeper.SetStandardDenom(suite.cantoChain.GetContext(), "acanto") coinswapParams := coinswapKeeper.GetParams(suite.cantoChain.GetContext()) - coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(denom, sdk.NewIntWithDecimal(10, 6))) + coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(10, 6))) coinswapKeeper.SetParams(suite.cantoChain.GetContext(), coinswapParams) // Create a message to add liquidity to the pool msgAddLiquidity := coinswaptypes.MsgAddLiquidity{ - MaxToken: sdk.NewCoin(denom, sdk.NewIntWithDecimal(10000, 6)), - ExactStandardAmt: sdk.NewIntWithDecimal(10000, 18), - MinLiquidity: sdk.NewInt(1), + MaxToken: sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(10000, 6)), + ExactStandardAmt: sdkmath.NewIntWithDecimal(10000, 18), + MinLiquidity: sdkmath.NewInt(1), Deadline: time.Now().Add(time.Minute * 10).Unix(), Sender: suite.cantoChain.SenderAccount.GetAddress().String(), } @@ -168,12 +169,12 @@ var ( // SendAndReceiveMessage sends a transfer message from the origin chain to the destination chain func (suite *IBCTestingSuite) SendAndReceiveMessage(path *ibcgotesting.Path, origin *ibcgotesting.TestChain, coin string, amount int64, sender string, receiver string, seq uint64) *sdk.Result { // Send coin from A to B - transferMsg := transfertypes.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.NewCoin(coin, sdk.NewInt(amount)), sender, receiver, timeoutHeight, 0) + transferMsg := transfertypes.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.NewCoin(coin, sdkmath.NewInt(amount)), sender, receiver, timeoutHeight, 0, "") _, err := origin.SendMsgs(transferMsg) suite.Require().NoError(err) // message committed // Recreate the packet that was sent - transfer := transfertypes.NewFungibleTokenPacketData(coin, strconv.Itoa(int(amount)), sender, receiver) + transfer := transfertypes.NewFungibleTokenPacketData(coin, strconv.Itoa(int(amount)), sender, receiver, "") packet := channeltypes.NewPacket(transfer.GetBytes(), seq, path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, path.EndpointB.ChannelConfig.PortID, path.EndpointB.ChannelID, timeoutHeight, 0) // patched RelayPacket call to get res diff --git a/x/onboarding/keeper/ibc_callbacks_integration_test.go b/x/onboarding/keeper/ibc_callbacks_integration_test.go index 7ee79090a..7d482fec9 100644 --- a/x/onboarding/keeper/ibc_callbacks_integration_test.go +++ b/x/onboarding/keeper/ibc_callbacks_integration_test.go @@ -4,6 +4,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" @@ -14,10 +15,10 @@ import ( ) var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap and convert", Ordered, func() { - coincanto := sdk.NewCoin("acanto", sdk.ZeroInt()) - ibcBalance := sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(10000, 6)) - coinUsdc := sdk.NewCoin("uUSDC", sdk.NewIntWithDecimal(10000, 6)) - coinAtom := sdk.NewCoin("uatom", sdk.NewIntWithDecimal(10000, 6)) + coincanto := sdk.NewCoin("acanto", sdkmath.ZeroInt()) + ibcBalance := sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(10000, 6)) + coinUsdc := sdk.NewCoin("uUSDC", sdkmath.NewIntWithDecimal(10000, 6)) + coinAtom := sdk.NewCoin("uatom", sdkmath.NewIntWithDecimal(10000, 6)) var ( sender, receiver string @@ -54,7 +55,7 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Cosmos chain's uatom balance should be 0", func() { atom := s.IBCCosmosChain.GetSimApp().BankKeeper.GetBalance(s.IBCCosmosChain.GetContext(), senderAcc, "uatom") - Expect(atom).To(Equal(sdk.NewCoin("uatom", sdk.ZeroInt()))) + Expect(atom).To(Equal(sdk.NewCoin("uatom", sdkmath.ZeroInt()))) }) }) @@ -92,7 +93,7 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) - convertAmount, _ := sdk.NewIntFromString(attrs["amount"]) + convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) }) @@ -108,7 +109,7 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("No swap: Balance of acanto should be same with the original acanto balance (0)", func() { nativecanto := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, "acanto") - Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", sdk.ZeroInt()))) + Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", sdkmath.ZeroInt()))) }) It("Convert: Canto chain's IBC voucher balance should be same with the original balance", func() { ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) @@ -116,12 +117,12 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the transferred IBC voucher amount", func() { erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) - Expect(erc20balance).To(Equal(sdk.NewIntWithDecimal(1, 6).BigInt())) + Expect(erc20balance).To(Equal(sdkmath.NewIntWithDecimal(1, 6).BigInt())) }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) - convertAmount, _ := sdk.NewIntFromString(attrs["amount"]) + convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) }) @@ -143,14 +144,14 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an It("Convert: ERC20 token balance should be same with the difference between transferred IBC voucher amount and the swapped amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swappedAmount, _ := sdk.NewIntFromString(attrs["amount"]) + swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(coinUsdc.Amount.Sub(swappedAmount).BigInt())) }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) - convertAmount, _ := sdk.NewIntFromString(attrs["amount"]) + convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) }) @@ -158,13 +159,13 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an When("Canto chain's acanto balance is between 0 and auto swap threshold (3canto)", func() { BeforeEach(func() { - s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18)))) + s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18)))) result = s.SendAndReceiveMessage(s.pathGravitycanto, s.IBCGravityChain, "uUSDC", 10000000000, sender, receiver, 1) }) It("Auto swap operation: balance of acanto should be same with the sum of original acanto balance and auto swap threshold", func() { autoSwapThreshold := s.cantoChain.App.(*app.Canto).OnboardingKeeper.GetParams(s.cantoChain.GetContext()).AutoSwapThreshold nativecanto := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, "acanto") - Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdk.NewIntWithDecimal(3, 18))))) + Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdkmath.NewIntWithDecimal(3, 18))))) }) It("Convert: Canto chain's IBC voucher balance should be same with the original balance", func() { ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) @@ -173,26 +174,26 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an It("Convert: ERC20 token balance should be same with the difference between transferred IBC voucher amount and the swapped amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swappedAmount, _ := sdk.NewIntFromString(attrs["amount"]) + swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(coinUsdc.Amount.Sub(swappedAmount).BigInt())) }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) - convertAmount, _ := sdk.NewIntFromString(attrs["amount"]) + convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) }) }) When("Canto chain's acanto balance is bigger than the auto swap threshold (4canto)", func() { BeforeEach(func() { - s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)))) + s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)))) result = s.SendAndReceiveMessage(s.pathGravitycanto, s.IBCGravityChain, "uUSDC", 10000000000, sender, receiver, 1) }) It("No swap: balance of acanto should be same with the original acanto balance (4canto)", func() { nativecanto := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, "acanto") - Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)))) + Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)))) }) It("Convert: Canto chain's IBC voucher balance should be same with the original balance", func() { ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) @@ -205,7 +206,7 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) - convertAmount, _ := sdk.NewIntFromString(attrs["amount"]) + convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) }) @@ -225,21 +226,21 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an s.CreatePool(uusdcIbcdenom) s.FundCantoChain(sdk.NewCoins(ibcBalance)) - s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18)))) + s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18)))) result = s.SendAndReceiveMessage(s.pathGravitycanto, s.IBCGravityChain, "uUSDC", 10000000000, sender, receiver, 1) }) It("Auto swap operation: balance of acanto should be same with the sum of original acanto balance and auto swap threshold", func() { autoSwapThreshold := s.cantoChain.App.(*app.Canto).OnboardingKeeper.GetParams(s.cantoChain.GetContext()).AutoSwapThreshold nativecanto := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, "acanto") - Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdk.NewIntWithDecimal(3, 18))))) + Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdkmath.NewIntWithDecimal(3, 18))))) }) It("No convert: Canto chain's IBC voucher balance should be same with (original balance + transferred amount - swapped amount)", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swappedAmount, _ := sdk.NewIntFromString(attrs["amount"]) + swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) - Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdk.NewInt(10000000000)).Sub(swappedAmount))) + Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdkmath.NewInt(10000000000)).Sub(swappedAmount))) }) }) When("ERC20 contract is not deployed", func() { @@ -251,20 +252,20 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an s.CreatePool(uusdcIbcdenom) s.FundCantoChain(sdk.NewCoins(ibcBalance)) - s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18)))) + s.FundCantoChain(sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18)))) result = s.SendAndReceiveMessage(s.pathGravitycanto, s.IBCGravityChain, "uUSDC", 10000000000, sender, receiver, 1) }) It("Auto swap operation: balance of acanto should be same with the sum of original acanto balance and auto swap threshold", func() { autoSwapThreshold := s.cantoChain.App.(*app.Canto).OnboardingKeeper.GetParams(s.cantoChain.GetContext()).AutoSwapThreshold nativecanto := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, "acanto") - Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdk.NewIntWithDecimal(3, 18))))) + Expect(nativecanto).To(Equal(sdk.NewCoin("acanto", autoSwapThreshold.Add(sdkmath.NewIntWithDecimal(3, 18))))) }) It("No convert: Canto chain's IBC voucher balance should be same with (original balance + transferred amount - swapped amount)", func() { events := result.GetEvents() attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swappedAmount, _ := sdk.NewIntFromString(attrs["amount"]) + swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) - Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdk.NewInt(10000000000)).Sub(swappedAmount))) + Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdkmath.NewInt(10000000000)).Sub(swappedAmount))) }) }) diff --git a/x/onboarding/keeper/ibc_callbacks_test.go b/x/onboarding/keeper/ibc_callbacks_test.go index cbda45002..5e987a6d9 100644 --- a/x/onboarding/keeper/ibc_callbacks_test.go +++ b/x/onboarding/keeper/ibc_callbacks_test.go @@ -9,16 +9,17 @@ import ( "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/stretchr/testify/mock" + sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - ibcgotesting "github.com/cosmos/ibc-go/v3/testing" - ibcmock "github.com/cosmos/ibc-go/v3/testing/mock" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" + ibcgotesting "github.com/cosmos/ibc-go/v8/testing" + ibcmock "github.com/cosmos/ibc-go/v8/testing/mock" "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/testutil" @@ -84,7 +85,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { // Setup Cosmos <=> canto IBC relayer denom := "uUSDC" ibcDenom := uusdcIbcdenom - transferAmount := sdk.NewIntWithDecimal(25, 6) + transferAmount := sdkmath.NewIntWithDecimal(25, 6) sourceChannel := "channel-0" cantoChannel := "channel-0" path := fmt.Sprintf("%s/%s", transfertypes.PortID, cantoChannel) @@ -102,33 +103,33 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { receiverBalance sdk.Coins expCantoBalance sdk.Coin expVoucherBalance sdk.Coin - expErc20Balance sdk.Int + expErc20Balance sdkmath.Int }{ { "fail - invalid sender - missing '1' ", func() { - transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", "canto", ethsecpAddrcanto) + transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", "canto", ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, false, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, transferAmount), - sdk.ZeroInt(), + sdkmath.ZeroInt(), }, { "fail - invalid sender - invalid bech32", func() { - transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", "badba1sv9m0g7ycejwr3s369km58h5qe7xj77hvcxrms", ethsecpAddrcanto) + transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", "badba1sv9m0g7ycejwr3s369km58h5qe7xj77hvcxrms", ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, false, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, transferAmount), - sdk.ZeroInt(), + sdkmath.ZeroInt(), }, { "continue - receiver is a module account", @@ -136,15 +137,15 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { distrAcc := suite.app.AccountKeeper.GetModuleAccount(suite.ctx, distrtypes.ModuleName) suite.Require().NotNil(distrAcc) addr := distrAcc.GetAddress().String() - transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", addr, addr) + transfer := transfertypes.NewFungibleTokenPacketData(denom, "100", addr, addr, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, transferAmount), - sdk.ZeroInt(), + sdkmath.ZeroInt(), }, { "continue - params disabled", @@ -154,10 +155,10 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { suite.app.OnboardingKeeper.SetParams(suite.ctx, params) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, transferAmount), - sdk.ZeroInt(), + sdkmath.ZeroInt(), }, { "swap fail / convert all transferred amount - no liquidity pool exists", @@ -166,14 +167,14 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { denom = "uUSDT" ibcDenom = uusdtIbcdenom - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), - sdk.NewCoin(uusdtIbcdenom, sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), + sdk.NewCoin(uusdtIbcdenom, sdkmath.ZeroInt()), transferAmount, }, { @@ -183,14 +184,14 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { denom = "uUSDT" ibcDenom = uusdtIbcdenom - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)), - sdk.NewCoin(uusdtIbcdenom, sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)), + sdk.NewCoin(uusdtIbcdenom, sdkmath.ZeroInt()), transferAmount, }, { @@ -199,128 +200,128 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { denom = "uUSDC" ibcDenom = uusdcIbcdenom - transferAmount = sdk.NewIntWithDecimal(1, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(1, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), - sdk.NewCoin(uusdcIbcdenom, sdk.ZeroInt()), - sdk.NewIntWithDecimal(1, 6), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), + sdk.NewCoin(uusdcIbcdenom, sdkmath.ZeroInt()), + sdkmath.NewIntWithDecimal(1, 6), }, { "no swap / convert all transferred amount - acanto balance is already bigger than threshold", func() { - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.ZeroInt()), transferAmount, }, { "no swap / no convert - unauthorized channel", func() { cantoChannel = "channel-100" - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.ZeroInt()), - sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(25, 6)), - sdk.ZeroInt(), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.ZeroInt()), + sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(25, 6)), + sdkmath.ZeroInt(), }, { "swap / convert remaining ibc token - swap and erc20 conversion are successful", func() { cantoChannel = "channel-0" - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.ZeroInt()), - sdk.NewInt(20998399), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.ZeroInt()), + sdkmath.NewInt(20998399), }, { "swap / convert remaining ibc token - swap and erc20 conversion are successful (acanto balance is positive but less than threshold)", func() { - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(7, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.ZeroInt()), - sdk.NewInt(20998399), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(7, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.ZeroInt()), + sdkmath.NewInt(20998399), }, { "swap / convert remaining ibc token - swap and erc20 conversion are successful (ibc token balance is bigger than 0)", func() { cantoChannel = "channel-0" - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(1, 6))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(1, 6)), - sdk.NewInt(20998399), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt()), sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(1, 6))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(1, 6)), + sdkmath.NewInt(20998399), }, { "swap / convert remaining ibc token - swap and erc20 conversion are successful (acanto and ibc token balance is bigger than 0)", func() { - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18)), sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(1, 6))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(7, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(1, 6)), - sdk.NewInt(20998399), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18)), sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(1, 6))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(7, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(1, 6)), + sdkmath.NewInt(20998399), }, { "swap fail / convert all transferred amount - required ibc token to swap exceeds max swap amount limit", func() { coinswapParams := suite.app.CoinswapKeeper.GetParams(suite.ctx) - coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(5, 5))) + coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(5, 5))) suite.app.CoinswapKeeper.SetParams(suite.ctx, coinswapParams) - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18))), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(3, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.ZeroInt()), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18))), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(3, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.ZeroInt()), transferAmount, }, { "convert fail", func() { cantoChannel = "channel-0" - transferAmount = sdk.NewIntWithDecimal(25, 6) - transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto) + transferAmount = sdkmath.NewIntWithDecimal(25, 6) + transfer := transfertypes.NewFungibleTokenPacketData(denom, transferAmount.String(), secpAddrCosmos, ethsecpAddrcanto, "") bz := transfertypes.ModuleCdc.MustMarshalJSON(&transfer) packet = channeltypes.NewPacket(bz, 100, transfertypes.PortID, sourceChannel, transfertypes.PortID, cantoChannel, timeoutHeight, 0) @@ -331,10 +332,10 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { }, true, - sdk.NewCoins(sdk.NewCoin("acanto", sdk.ZeroInt())), - sdk.NewCoin("acanto", sdk.NewIntWithDecimal(4, 18)), - sdk.NewCoin(uusdcIbcdenom, sdk.NewInt(20998399)), - sdk.NewInt(0), + sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.ZeroInt())), + sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(4, 18)), + sdk.NewCoin(uusdcIbcdenom, sdkmath.NewInt(20998399)), + sdkmath.NewInt(0), }, } for _, tc := range testCases { @@ -344,15 +345,15 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { // Setup liquidity pool (acanto/uUSDC) suite.app.CoinswapKeeper.SetStandardDenom(suite.ctx, "acanto") coinswapParams := suite.app.CoinswapKeeper.GetParams(suite.ctx) - coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(10, 6))) + coinswapParams.MaxSwapAmount = sdk.NewCoins(sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(10, 6))) suite.app.CoinswapKeeper.SetParams(suite.ctx, coinswapParams) - testutil.FundAccount(suite.app.BankKeeper, suite.ctx, secpAddr, sdk.NewCoins(sdk.NewCoin("acanto", sdk.NewIntWithDecimal(10000, 18)), sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(10000, 6)))) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, secpAddr, sdk.NewCoins(sdk.NewCoin("acanto", sdkmath.NewIntWithDecimal(10000, 18)), sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(10000, 6)))) msgAddLiquidity := coinswaptypes.MsgAddLiquidity{ - MaxToken: sdk.NewCoin(uusdcIbcdenom, sdk.NewIntWithDecimal(10000, 6)), - ExactStandardAmt: sdk.NewIntWithDecimal(10000, 18), - MinLiquidity: sdk.NewInt(1), + MaxToken: sdk.NewCoin(uusdcIbcdenom, sdkmath.NewIntWithDecimal(10000, 6)), + ExactStandardAmt: sdkmath.NewIntWithDecimal(10000, 18), + MinLiquidity: sdkmath.NewInt(1), Deadline: time.Now().Add(time.Minute * 10).Unix(), Sender: secpAddr.String(), } @@ -448,9 +449,9 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) - swappedAmount, ok := sdk.NewIntFromString(attrs["amount"]) + swappedAmount, ok := sdkmath.NewIntFromString(attrs["amount"]) if !ok { - swappedAmount = sdk.ZeroInt() + swappedAmount = sdkmath.ZeroInt() } attrs = onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) diff --git a/x/onboarding/keeper/keeper.go b/x/onboarding/keeper/keeper.go index 28d55203b..1845f5643 100644 --- a/x/onboarding/keeper/keeper.go +++ b/x/onboarding/keeper/keeper.go @@ -3,15 +3,14 @@ package keeper import ( "fmt" - "github.com/tendermint/tendermint/libs/log" - + "cosmossdk.io/log" sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) diff --git a/x/onboarding/keeper/keeper_test.go b/x/onboarding/keeper/keeper_test.go index 9710259f3..342a29eeb 100644 --- a/x/onboarding/keeper/keeper_test.go +++ b/x/onboarding/keeper/keeper_test.go @@ -6,10 +6,10 @@ import ( "github.com/stretchr/testify/suite" - "github.com/tendermint/tendermint/crypto/tmhash" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - "github.com/tendermint/tendermint/version" + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" evm "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -41,7 +41,7 @@ func (suite *KeeperTestSuite) SetupTest() { consAddress := sdk.ConsAddress(privCons.PubKey().Address()) suite.app = app.Setup(false, feemarkettypes.DefaultGenesisState()) - suite.ctx = suite.app.BaseApp.NewContext(false, tmproto.Header{ + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", Time: time.Now().UTC(), @@ -72,14 +72,17 @@ func (suite *KeeperTestSuite) SetupTest() { // Set Validator valAddr := sdk.ValAddress(privCons.PubKey().Address().Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) suite.NoError(err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) - suite.app.StakingKeeper.AfterValidatorCreated(suite.ctx, validator.GetOperator()) + valbz, err := suite.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) suite.NoError(err) - stakingParams := suite.app.StakingKeeper.GetParams(suite.ctx) + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + suite.NoError(err) stakingParams.BondDenom = "acanto" suite.app.StakingKeeper.SetParams(suite.ctx, stakingParams) } diff --git a/x/onboarding/keeper/utils_test.go b/x/onboarding/keeper/utils_test.go index d4180afd4..f419ce324 100644 --- a/x/onboarding/keeper/utils_test.go +++ b/x/onboarding/keeper/utils_test.go @@ -3,13 +3,13 @@ package keeper_test import ( "github.com/stretchr/testify/mock" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) diff --git a/x/onboarding/module.go b/x/onboarding/module.go index 32b06f9d1..fb6818550 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -10,7 +10,7 @@ import ( "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" @@ -99,6 +99,12 @@ func NewAppModule( } } +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + func (AppModule) Name() string { return types.ModuleName } @@ -110,29 +116,10 @@ func (AppModule) NewHandler() sdk.Handler { return nil } -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, am.NewHandler()) -} - -func (AppModule) QuerierRoute() string { - return "" -} - -func (AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { - return nil -} - func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterQueryServer(cfg.QueryServer(), am.keeper) } -func (AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) { -} - -func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} - func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState diff --git a/x/onboarding/testutil/helpers.go b/x/onboarding/testutil/helpers.go index 5d8b7d81f..a0d733eac 100644 --- a/x/onboarding/testutil/helpers.go +++ b/x/onboarding/testutil/helpers.go @@ -6,7 +6,7 @@ import ( ibcgotesting "github.com/Canto-Network/Canto/v7/ibc/testing" sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" "golang.org/x/exp/slices" ) diff --git a/x/onboarding/types/errors.go b/x/onboarding/types/errors.go index c9fe73b13..418151b0c 100644 --- a/x/onboarding/types/errors.go +++ b/x/onboarding/types/errors.go @@ -1,11 +1,11 @@ package types import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + errorsmod "cosmossdk.io/errors" ) // errors var ( - ErrBlockedAddress = sdkerrors.Register(ModuleName, 2, "blocked address") - ErrInvalidType = sdkerrors.Register(ModuleName, 3, "invalid type") + ErrBlockedAddress = errorsmod.Register(ModuleName, 2, "blocked address") + ErrInvalidType = errorsmod.Register(ModuleName, 3, "invalid type") ) diff --git a/x/onboarding/types/genesis_test.go b/x/onboarding/types/genesis_test.go index 72e014ba2..ad1161c77 100644 --- a/x/onboarding/types/genesis_test.go +++ b/x/onboarding/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ) func TestGenesisValidate(t *testing.T) { @@ -21,7 +21,7 @@ func TestGenesisValidate(t *testing.T) { }, { "custom genesis", - NewGenesisState(NewParams(true, sdk.NewInt(10000), []string{"channel-0"})), + NewGenesisState(NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"})), false, }, } diff --git a/x/onboarding/types/interfaces.go b/x/onboarding/types/interfaces.go index 04865659d..82d9e3f4a 100644 --- a/x/onboarding/types/interfaces.go +++ b/x/onboarding/types/interfaces.go @@ -9,14 +9,15 @@ import ( evmtypes "github.com/evmos/ethermint/x/evm/types" - tmbytes "github.com/tendermint/tendermint/libs/bytes" + tmbytes "github.com/cometbft/cometbft/libs/bytes" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - transfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" coinswaptypes "github.com/Canto-Network/Canto/v7/x/coinswap/types" erc20types "github.com/Canto-Network/Canto/v7/x/erc20/types" @@ -45,26 +46,26 @@ type Erc20Keeper interface { } type CoinwapKeeper interface { - TradeInputForExactOutput(ctx sdk.Context, input coinswaptypes.Input, output coinswaptypes.Output) (sdk.Int, error) + TradeInputForExactOutput(ctx sdk.Context, input coinswaptypes.Input, output coinswaptypes.Output) (sdkmath.Int, error) GetStandardDenom(ctx sdk.Context) string } // BankKeeper defines the banking keeper that must be fulfilled when // creating a x/onboarding keeper. type BankKeeper interface { - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error - MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error - SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin + GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error + MintCoins(ctx context.Context, name string, amt sdk.Coins) error + SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error BlockedAddr(addr sdk.AccAddress) bool - SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins } // AccountKeeper defines the expected account keeper type AccountKeeper interface { - GetAccount(sdk.Context, sdk.AccAddress) authtypes.AccountI + GetAccount(context.Context, sdk.AccAddress) sdk.AccountI } // TransferKeeper defines the expected IBC transfer keeper. diff --git a/x/onboarding/types/params.go b/x/onboarding/types/params.go index a146e3468..2d82b7b0a 100644 --- a/x/onboarding/types/params.go +++ b/x/onboarding/types/params.go @@ -3,7 +3,7 @@ package types import ( "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -12,7 +12,7 @@ var ( ParamStoreKeyEnableOnboarding = []byte("EnableOnboarding") ParamStoreKeyAutoSwapThreshold = []byte("AutoSwapThreshold") ParamsStoreKeyWhitelistedChannels = []byte("WhitelistedChannels") - DefaultAutoSwapThreshold = sdk.NewIntWithDecimal(4, 18) // 4 Canto + DefaultAutoSwapThreshold = sdkmath.NewIntWithDecimal(4, 18) // 4 Canto DefaultWhitelistedChannels = []string{"channel-0"} ) @@ -26,7 +26,7 @@ func ParamKeyTable() paramtypes.KeyTable { // NewParams creates a new Params instance func NewParams( enableOnboarding bool, - autoSwapThreshold sdk.Int, + autoSwapThreshold sdkmath.Int, whitelistedChannels []string, ) Params { return Params{ @@ -73,7 +73,7 @@ func validateBool(i interface{}) error { } func validateAutoSwapThreshold(i interface{}) error { - v, ok := i.(sdk.Int) + v, ok := i.(sdkmath.Int) if !ok { return fmt.Errorf("invalid parameter type: %T", i) } diff --git a/x/onboarding/types/params_test.go b/x/onboarding/types/params_test.go index 496c7b28e..3920673e2 100644 --- a/x/onboarding/types/params_test.go +++ b/x/onboarding/types/params_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - sdk "github.com/cosmos/cosmos-sdk/types" + sdkmath "cosmossdk.io/math" ) func TestParamsMisc(t *testing.T) { @@ -28,7 +28,7 @@ func TestParamsValidate(t *testing.T) { }, { "custom params", - NewParams(true, sdk.NewInt(10000), []string{"channel-0"}), + NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"}), false, }, } diff --git a/x/onboarding/types/query.pb.go b/x/onboarding/types/query.pb.go index e55509c6a..d1c1eed50 100644 --- a/x/onboarding/types/query.pb.go +++ b/x/onboarding/types/query.pb.go @@ -7,7 +7,7 @@ import ( context "context" fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" + // grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" From f066fec3e591841e5e6cc4f0f1df3e513717617a Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 4 Dec 2023 14:46:14 +0900 Subject: [PATCH 02/96] feat: fix protobuf --- Makefile | 36 +- buf.work.yaml | 1 - go.mod | 12 +- go.sum | 19 +- ibc/testing/app.go | 3 +- ibc/testing/sdk_test.go | 19 +- ibc/testing/values.go | 1 + proto/buf.gen.gogo.yaml | 8 + proto/buf.lock | 23 + proto/buf.yaml | 2 +- proto/canto/coinswap/v1/coinswap.proto | 1 + proto/canto/coinswap/v1/tx.proto | 5 + proto/canto/csr/v1/csr.proto | 2 + proto/canto/csr/v1/params.proto | 4 +- proto/canto/erc20/v1/tx.proto | 2 + proto/canto/inflation/v1/inflation.proto | 22 +- proto/canto/inflation/v1/query.proto | 4 +- proto/canto/onboarding/v1/genesis.proto | 3 +- scripts/protocgen-pulsar.sh | 10 + scripts/protocgen.sh | 65 +- third_party/proto/buf.yaml | 36 - .../proto/cosmos/auth/v1beta1/auth.proto | 50 - .../proto/cosmos/auth/v1beta1/genesis.proto | 17 - .../proto/cosmos/auth/v1beta1/query.proto | 74 -- .../proto/cosmos/authz/v1beta1/authz.proto | 39 - .../proto/cosmos/authz/v1beta1/event.proto | 25 - .../proto/cosmos/authz/v1beta1/genesis.proto | 13 - .../proto/cosmos/authz/v1beta1/query.proto | 81 -- .../proto/cosmos/authz/v1beta1/tx.proto | 70 -- .../proto/cosmos/bank/v1beta1/authz.proto | 19 - .../proto/cosmos/bank/v1beta1/bank.proto | 96 -- .../proto/cosmos/bank/v1beta1/genesis.proto | 39 - .../proto/cosmos/bank/v1beta1/query.proto | 193 ---- .../proto/cosmos/bank/v1beta1/tx.proto | 42 - .../proto/cosmos/base/abci/v1beta1/abci.proto | 144 --- .../proto/cosmos/base/kv/v1beta1/kv.proto | 17 - .../base/query/v1beta1/pagination.proto | 55 -- .../base/reflection/v1beta1/reflection.proto | 44 - .../base/reflection/v2alpha1/reflection.proto | 218 ----- .../base/snapshots/v1beta1/snapshot.proto | 57 -- .../base/store/v1beta1/commit_info.proto | 29 - .../cosmos/base/store/v1beta1/listening.proto | 16 - .../base/tendermint/v1beta1/query.proto | 138 --- .../proto/cosmos/base/v1beta1/coin.proto | 40 - .../capability/v1beta1/capability.proto | 30 - .../cosmos/capability/v1beta1/genesis.proto | 26 - .../proto/cosmos/crisis/v1beta1/genesis.proto | 15 - .../proto/cosmos/crisis/v1beta1/tx.proto | 25 - .../proto/cosmos/crypto/ed25519/keys.proto | 23 - .../proto/cosmos/crypto/multisig/keys.proto | 18 - .../crypto/multisig/v1beta1/multisig.proto | 25 - .../proto/cosmos/crypto/secp256k1/keys.proto | 22 - .../proto/cosmos/crypto/secp256r1/keys.proto | 23 - .../distribution/v1beta1/distribution.proto | 157 --- .../cosmos/distribution/v1beta1/genesis.proto | 155 --- .../cosmos/distribution/v1beta1/query.proto | 218 ----- .../cosmos/distribution/v1beta1/tx.proto | 79 -- .../cosmos/evidence/v1beta1/evidence.proto | 21 - .../cosmos/evidence/v1beta1/genesis.proto | 12 - .../proto/cosmos/evidence/v1beta1/query.proto | 51 - .../proto/cosmos/evidence/v1beta1/tx.proto | 32 - .../cosmos/feegrant/v1beta1/feegrant.proto | 78 -- .../cosmos/feegrant/v1beta1/genesis.proto | 13 - .../proto/cosmos/feegrant/v1beta1/query.proto | 55 -- .../proto/cosmos/feegrant/v1beta1/tx.proto | 49 - .../cosmos/genutil/v1beta1/genesis.proto | 16 - .../proto/cosmos/gov/v1beta1/genesis.proto | 26 - .../proto/cosmos/gov/v1beta1/gov.proto | 200 ---- .../proto/cosmos/gov/v1beta1/query.proto | 190 ---- third_party/proto/cosmos/gov/v1beta1/tx.proto | 99 -- .../proto/cosmos/mint/v1beta1/genesis.proto | 16 - .../proto/cosmos/mint/v1beta1/mint.proto | 53 -- .../proto/cosmos/mint/v1beta1/query.proto | 57 -- .../proto/cosmos/params/v1beta1/params.proto | 27 - .../proto/cosmos/params/v1beta1/query.proto | 32 - .../cosmos/slashing/v1beta1/genesis.proto | 50 - .../proto/cosmos/slashing/v1beta1/query.proto | 63 -- .../cosmos/slashing/v1beta1/slashing.proto | 58 -- .../proto/cosmos/slashing/v1beta1/tx.proto | 26 - .../proto/cosmos/staking/v1beta1/authz.proto | 47 - .../cosmos/staking/v1beta1/genesis.proto | 53 -- .../proto/cosmos/staking/v1beta1/query.proto | 348 ------- .../cosmos/staking/v1beta1/staking.proto | 334 ------- .../proto/cosmos/staking/v1beta1/tx.proto | 126 --- .../cosmos/tx/signing/v1beta1/signing.proto | 91 -- .../proto/cosmos/tx/v1beta1/service.proto | 165 ---- third_party/proto/cosmos/tx/v1beta1/tx.proto | 183 ---- .../proto/cosmos/upgrade/v1beta1/query.proto | 104 -- .../cosmos/upgrade/v1beta1/upgrade.proto | 78 -- .../proto/cosmos/vesting/v1beta1/tx.proto | 31 - .../cosmos/vesting/v1beta1/vesting.proto | 85 -- third_party/proto/cosmos_proto/cosmos.proto | 14 - .../crypto/v1/ethsecp256k1/keys.proto | 19 - third_party/proto/ethermint/evm/v1/evm.proto | 235 ----- .../proto/ethermint/evm/v1/genesis.proto | 28 - .../proto/ethermint/evm/v1/query.proto | 289 ------ third_party/proto/ethermint/evm/v1/tx.proto | 174 ---- .../ethermint/feemarket/v1/feemarket.proto | 39 - .../ethermint/feemarket/v1/genesis.proto | 20 - .../proto/ethermint/feemarket/v1/query.proto | 53 -- .../proto/ethermint/types/v1/account.proto | 25 - .../proto/ethermint/types/v1/web3.proto | 25 - third_party/proto/gogoproto/gogo.proto | 145 --- .../proto/google/api/annotations.proto | 31 - third_party/proto/google/api/http.proto | 325 ------- third_party/proto/google/api/httpbody.proto | 78 -- third_party/proto/google/protobuf/any.proto | 161 ---- .../proto/google/protobuf/descriptor.proto | 894 ------------------ .../controller/v1/controller.proto | 15 - .../controller/v1/query.proto | 26 - .../interchain_accounts/host/v1/host.proto | 18 - .../interchain_accounts/host/v1/query.proto | 26 - .../interchain_accounts/v1/account.proto | 23 - .../interchain_accounts/v1/genesis.proto | 69 -- .../interchain_accounts/v1/metadata.proto | 31 - .../interchain_accounts/v1/packet.proto | 31 - .../applications/transfer/v1/genesis.proto | 19 - .../ibc/applications/transfer/v1/query.proto | 87 -- .../applications/transfer/v1/transfer.proto | 31 - .../ibc/applications/transfer/v1/tx.proto | 48 - .../ibc/applications/transfer/v2/packet.proto | 19 - .../proto/ibc/core/channel/v1/channel.proto | 157 --- .../proto/ibc/core/channel/v1/genesis.proto | 42 - .../proto/ibc/core/channel/v1/query.proto | 391 -------- .../proto/ibc/core/channel/v1/tx.proto | 244 ----- .../proto/ibc/core/client/v1/client.proto | 111 --- .../proto/ibc/core/client/v1/genesis.proto | 56 -- .../proto/ibc/core/client/v1/query.proto | 196 ---- third_party/proto/ibc/core/client/v1/tx.proto | 106 --- .../ibc/core/commitment/v1/commitment.proto | 39 - .../ibc/core/connection/v1/connection.proto | 118 --- .../ibc/core/connection/v1/genesis.proto | 22 - .../proto/ibc/core/connection/v1/query.proto | 145 --- .../proto/ibc/core/connection/v1/tx.proto | 140 --- .../proto/ibc/core/types/v1/genesis.proto | 29 - .../lightclients/localhost/v1/localhost.proto | 18 - .../solomachine/v1/solomachine.proto | 206 ---- .../solomachine/v2/solomachine.proto | 205 ---- .../tendermint/v1/tendermint.proto | 146 --- third_party/proto/proofs.proto | 238 ----- third_party/proto/tendermint/abci/types.proto | 400 -------- .../proto/tendermint/crypto/keys.proto | 17 - .../proto/tendermint/crypto/proof.proto | 39 - .../proto/tendermint/libs/bits/types.proto | 9 - third_party/proto/tendermint/p2p/types.proto | 34 - .../proto/tendermint/types/block.proto | 15 - .../proto/tendermint/types/evidence.proto | 42 - .../proto/tendermint/types/params.proto | 80 -- .../proto/tendermint/types/types.proto | 173 ---- .../proto/tendermint/types/validator.proto | 25 - .../proto/tendermint/version/types.proto | 24 - x/coinswap/types/coinswap.pb.go | 84 +- x/coinswap/types/genesis.pb.go | 4 +- x/coinswap/types/query.pb.go | 6 +- x/coinswap/types/query.pb.gw.go | 13 +- x/coinswap/types/tx.pb.go | 122 +-- x/csr/types/csr.pb.go | 40 +- x/csr/types/genesis.pb.go | 4 +- x/csr/types/params.pb.go | 43 +- x/csr/types/query.pb.go | 6 +- x/csr/types/query.pb.gw.go | 19 +- x/epochs/types/genesis.pb.go | 24 +- x/epochs/types/query.pb.go | 6 +- x/epochs/types/query.pb.gw.go | 10 +- x/erc20/client/proposal_handler.go | 1 - x/erc20/types/erc20.pb.go | 4 +- x/erc20/types/genesis.pb.go | 4 +- x/erc20/types/query.pb.go | 6 +- x/erc20/types/query.pb.gw.go | 13 +- x/erc20/types/tx.pb.go | 70 +- x/erc20/types/tx.pb.gw.go | 10 +- x/govshuttle/client/proposal_handler.go | 1 - x/govshuttle/types/genesis.pb.go | 4 +- x/govshuttle/types/govshuttle.pb.go | 10 +- x/govshuttle/types/query.pb.go | 6 +- x/govshuttle/types/query.pb.gw.go | 7 +- x/govshuttle/types/tx.pb.go | 4 +- x/inflation/types/genesis.pb.go | 4 +- x/inflation/types/inflation.pb.go | 69 +- x/inflation/types/query.pb.go | 103 +- x/inflation/types/query.pb.gw.go | 22 +- x/onboarding/types/genesis.pb.go | 58 +- x/onboarding/types/query.pb.go | 6 +- x/onboarding/types/query.pb.gw.go | 7 +- 184 files changed, 586 insertions(+), 12148 deletions(-) create mode 100644 proto/buf.gen.gogo.yaml create mode 100644 proto/buf.lock create mode 100755 scripts/protocgen-pulsar.sh delete mode 100644 third_party/proto/buf.yaml delete mode 100644 third_party/proto/cosmos/auth/v1beta1/auth.proto delete mode 100644 third_party/proto/cosmos/auth/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/auth/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/authz/v1beta1/authz.proto delete mode 100644 third_party/proto/cosmos/authz/v1beta1/event.proto delete mode 100644 third_party/proto/cosmos/authz/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/authz/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/authz/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/bank/v1beta1/authz.proto delete mode 100644 third_party/proto/cosmos/bank/v1beta1/bank.proto delete mode 100644 third_party/proto/cosmos/bank/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/bank/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/bank/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/base/abci/v1beta1/abci.proto delete mode 100644 third_party/proto/cosmos/base/kv/v1beta1/kv.proto delete mode 100644 third_party/proto/cosmos/base/query/v1beta1/pagination.proto delete mode 100644 third_party/proto/cosmos/base/reflection/v1beta1/reflection.proto delete mode 100644 third_party/proto/cosmos/base/reflection/v2alpha1/reflection.proto delete mode 100644 third_party/proto/cosmos/base/snapshots/v1beta1/snapshot.proto delete mode 100644 third_party/proto/cosmos/base/store/v1beta1/commit_info.proto delete mode 100644 third_party/proto/cosmos/base/store/v1beta1/listening.proto delete mode 100644 third_party/proto/cosmos/base/tendermint/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/base/v1beta1/coin.proto delete mode 100644 third_party/proto/cosmos/capability/v1beta1/capability.proto delete mode 100644 third_party/proto/cosmos/capability/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/crisis/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/crisis/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/crypto/ed25519/keys.proto delete mode 100644 third_party/proto/cosmos/crypto/multisig/keys.proto delete mode 100644 third_party/proto/cosmos/crypto/multisig/v1beta1/multisig.proto delete mode 100644 third_party/proto/cosmos/crypto/secp256k1/keys.proto delete mode 100644 third_party/proto/cosmos/crypto/secp256r1/keys.proto delete mode 100644 third_party/proto/cosmos/distribution/v1beta1/distribution.proto delete mode 100644 third_party/proto/cosmos/distribution/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/distribution/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/distribution/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/evidence/v1beta1/evidence.proto delete mode 100644 third_party/proto/cosmos/evidence/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/evidence/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/evidence/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/feegrant/v1beta1/feegrant.proto delete mode 100644 third_party/proto/cosmos/feegrant/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/feegrant/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/feegrant/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/genutil/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/gov/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/gov/v1beta1/gov.proto delete mode 100644 third_party/proto/cosmos/gov/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/gov/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/mint/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/mint/v1beta1/mint.proto delete mode 100644 third_party/proto/cosmos/mint/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/params/v1beta1/params.proto delete mode 100644 third_party/proto/cosmos/params/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/slashing/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/slashing/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/slashing/v1beta1/slashing.proto delete mode 100644 third_party/proto/cosmos/slashing/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/staking/v1beta1/authz.proto delete mode 100644 third_party/proto/cosmos/staking/v1beta1/genesis.proto delete mode 100644 third_party/proto/cosmos/staking/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/staking/v1beta1/staking.proto delete mode 100644 third_party/proto/cosmos/staking/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/tx/signing/v1beta1/signing.proto delete mode 100644 third_party/proto/cosmos/tx/v1beta1/service.proto delete mode 100644 third_party/proto/cosmos/tx/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/upgrade/v1beta1/query.proto delete mode 100644 third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto delete mode 100644 third_party/proto/cosmos/vesting/v1beta1/tx.proto delete mode 100644 third_party/proto/cosmos/vesting/v1beta1/vesting.proto delete mode 100644 third_party/proto/cosmos_proto/cosmos.proto delete mode 100644 third_party/proto/ethermint/crypto/v1/ethsecp256k1/keys.proto delete mode 100644 third_party/proto/ethermint/evm/v1/evm.proto delete mode 100644 third_party/proto/ethermint/evm/v1/genesis.proto delete mode 100644 third_party/proto/ethermint/evm/v1/query.proto delete mode 100644 third_party/proto/ethermint/evm/v1/tx.proto delete mode 100644 third_party/proto/ethermint/feemarket/v1/feemarket.proto delete mode 100644 third_party/proto/ethermint/feemarket/v1/genesis.proto delete mode 100644 third_party/proto/ethermint/feemarket/v1/query.proto delete mode 100644 third_party/proto/ethermint/types/v1/account.proto delete mode 100644 third_party/proto/ethermint/types/v1/web3.proto delete mode 100644 third_party/proto/gogoproto/gogo.proto delete mode 100644 third_party/proto/google/api/annotations.proto delete mode 100644 third_party/proto/google/api/http.proto delete mode 100644 third_party/proto/google/api/httpbody.proto delete mode 100644 third_party/proto/google/protobuf/any.proto delete mode 100644 third_party/proto/google/protobuf/descriptor.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/controller/v1/controller.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/controller/v1/query.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/host/v1/host.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/host/v1/query.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/v1/account.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/v1/genesis.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/v1/metadata.proto delete mode 100644 third_party/proto/ibc/applications/interchain_accounts/v1/packet.proto delete mode 100644 third_party/proto/ibc/applications/transfer/v1/genesis.proto delete mode 100644 third_party/proto/ibc/applications/transfer/v1/query.proto delete mode 100644 third_party/proto/ibc/applications/transfer/v1/transfer.proto delete mode 100644 third_party/proto/ibc/applications/transfer/v1/tx.proto delete mode 100644 third_party/proto/ibc/applications/transfer/v2/packet.proto delete mode 100644 third_party/proto/ibc/core/channel/v1/channel.proto delete mode 100644 third_party/proto/ibc/core/channel/v1/genesis.proto delete mode 100644 third_party/proto/ibc/core/channel/v1/query.proto delete mode 100644 third_party/proto/ibc/core/channel/v1/tx.proto delete mode 100644 third_party/proto/ibc/core/client/v1/client.proto delete mode 100644 third_party/proto/ibc/core/client/v1/genesis.proto delete mode 100644 third_party/proto/ibc/core/client/v1/query.proto delete mode 100644 third_party/proto/ibc/core/client/v1/tx.proto delete mode 100644 third_party/proto/ibc/core/commitment/v1/commitment.proto delete mode 100644 third_party/proto/ibc/core/connection/v1/connection.proto delete mode 100644 third_party/proto/ibc/core/connection/v1/genesis.proto delete mode 100644 third_party/proto/ibc/core/connection/v1/query.proto delete mode 100644 third_party/proto/ibc/core/connection/v1/tx.proto delete mode 100644 third_party/proto/ibc/core/types/v1/genesis.proto delete mode 100644 third_party/proto/ibc/lightclients/localhost/v1/localhost.proto delete mode 100644 third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto delete mode 100644 third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto delete mode 100644 third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto delete mode 100644 third_party/proto/proofs.proto delete mode 100644 third_party/proto/tendermint/abci/types.proto delete mode 100644 third_party/proto/tendermint/crypto/keys.proto delete mode 100644 third_party/proto/tendermint/crypto/proof.proto delete mode 100644 third_party/proto/tendermint/libs/bits/types.proto delete mode 100644 third_party/proto/tendermint/p2p/types.proto delete mode 100644 third_party/proto/tendermint/types/block.proto delete mode 100644 third_party/proto/tendermint/types/evidence.proto delete mode 100644 third_party/proto/tendermint/types/params.proto delete mode 100644 third_party/proto/tendermint/types/types.proto delete mode 100644 third_party/proto/tendermint/types/validator.proto delete mode 100644 third_party/proto/tendermint/version/types.proto diff --git a/Makefile b/Makefile index fcd966a63..05fe89ffc 100755 --- a/Makefile +++ b/Makefile @@ -478,33 +478,37 @@ format: ### Protobuf ### ############################################################################### -containerProtoVer=v0.2 -containerProtoImage=tendermintdev/sdk-proto-gen:$(containerProtoVer) -containerProtoGen=cosmos-sdk-proto-gen-$(containerProtoVer) -containerProtoGenSwagger=cosmos-sdk-proto-gen-swagger-$(containerProtoVer) -containerProtoFmt=cosmos-sdk-proto-fmt-$(containerProtoVer) +protoVer=0.14.0 +protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) +protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) -proto-all: proto-format proto-gen proto-swagger-gen update-swagger-docs +# ------ +# NOTE: If you are experiencing problems running these commands, try deleting +# the docker images and execute the desired command again. +# +proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGen}$$"; then docker start -a $(containerProtoGen); else docker run --name $(containerProtoGen) -v $(CURDIR):/workspace --workdir /workspace $(containerProtoImage) \ - sh ./scripts/protocgen.sh; fi + $(protoImage) sh ./scripts/protocgen.sh +proto-lint: + @echo "Linting Protobuf files" + @$(protoImage) buf lint --error-format=json + +proto-check-breaking: + @echo "Checking Protobuf files for breaking changes" + @$(protoImage) buf breaking --against $(HTTPS_GIT)#branch=main +# TODO: Rethink API docs generation proto-swagger-gen: @echo "Generating Protobuf Swagger" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoGenSwagger}$$"; then docker start -a $(containerProtoGenSwagger); else docker run --name $(containerProtoGenSwagger) -v $(CURDIR):/workspace --workdir /workspace $(containerProtoImage) \ - sh ./scripts/protoc-swagger-gen.sh; fi + $(protoImage) sh ./scripts/protoc-swagger-gen.sh proto-format: @echo "Formatting Protobuf files" - @if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerProtoFmt}$$"; then docker start -a $(containerProtoFmt); else docker run --name $(containerProtoFmt) -v $(CURDIR):/workspace --workdir /workspace tendermintdev/docker-build-proto \ - find ./ -not -path "./third_party/*" -name "*.proto" -exec clang-format -i {} \; ; fi - -proto-lint: - @$(DOCKER_BUF) lint --error-format=json + @$(protoImage) find ./ -name "*.proto" -exec clang-format -i {} \; -.PHONY: proto-all proto-gen proto-swagger-gen proto-format +.PHONY: proto-all proto-gen proto-format proto-lint proto-check-breaking TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.15/proto/tendermint diff --git a/buf.work.yaml b/buf.work.yaml index 494296bfa..1878b341b 100644 --- a/buf.work.yaml +++ b/buf.work.yaml @@ -1,4 +1,3 @@ version: v1 directories: - proto - - third_party/proto diff --git a/go.mod b/go.mod index e47330b17..c7253fc38 100644 --- a/go.mod +++ b/go.mod @@ -5,16 +5,18 @@ go 1.21 toolchain go1.21.4 require ( + cosmossdk.io/log v1.2.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced cosmossdk.io/store v1.0.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 cosmossdk.io/x/upgrade v0.1.0 - github.com/armon/go-metrics v0.4.0 github.com/cometbft/cometbft v0.38.0 github.com/cosmos/cosmos-db v1.0.0 + github.com/cosmos/cosmos-proto v1.0.0-beta.3 github.com/cosmos/cosmos-sdk v0.50.1 github.com/cosmos/go-bip39 v1.0.0 + github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.0.0 github.com/ethereum/go-ethereum v1.10.26 @@ -23,11 +25,11 @@ require ( github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/hashicorp/go-metrics v0.5.1 github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.6 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 - github.com/regen-network/cosmos-proto v0.3.1 github.com/spf13/cast v1.5.1 github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 @@ -49,7 +51,6 @@ require ( cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/core v0.11.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect - cosmossdk.io/log v1.2.1 // indirect cosmossdk.io/x/circuit v0.1.0 // indirect cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c // indirect cosmossdk.io/x/tx v0.12.0 // indirect @@ -68,9 +69,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/gogoproto v1.4.11 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/danieljoos/wincred v1.2.0 // indirect github.com/emicklei/dot v1.6.0 // indirect @@ -91,7 +90,6 @@ require ( github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-metrics v0.5.1 // indirect github.com/hashicorp/go-plugin v1.5.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect @@ -241,4 +239,6 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9 + // replace broken goleveldb + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index ea6bafe1a..46d947150 100644 --- a/go.sum +++ b/go.sum @@ -264,8 +264,6 @@ github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= -github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -492,7 +490,6 @@ github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0X github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= @@ -544,7 +541,6 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= @@ -660,7 +656,6 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -931,18 +926,14 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -1028,8 +1019,6 @@ github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Ung github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -1114,9 +1103,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= @@ -1299,7 +1287,6 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1416,7 +1403,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1542,7 +1528,6 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= diff --git a/ibc/testing/app.go b/ibc/testing/app.go index 5caaf4744..59e4a9bd8 100644 --- a/ibc/testing/app.go +++ b/ibc/testing/app.go @@ -15,6 +15,7 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -59,7 +60,7 @@ type TestingApp interface { func SetupTestingApp() (TestingApp, map[string]json.RawMessage) { db := dbm.NewMemDB() - encCdc := simapp.MakeTestEncodingConfig() + encCdc := moduletestutil.MakeTestEncodingConfig() app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, simapp.DefaultNodeHome, 5, encCdc, simapp.EmptyAppOptions{}) return app, simapp.NewDefaultGenesisState(encCdc.Marshaler) } diff --git a/ibc/testing/sdk_test.go b/ibc/testing/sdk_test.go index c99668566..b32fc6d45 100644 --- a/ibc/testing/sdk_test.go +++ b/ibc/testing/sdk_test.go @@ -8,6 +8,8 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" + sdkmath "cosmossdk.io/math" + pruningtypes "cosmossdk.io/store/pruning/types" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client/flags" @@ -20,6 +22,7 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" txtypes "github.com/cosmos/cosmos-sdk/types/tx" authcli "github.com/cosmos/cosmos-sdk/x/auth/client/cli" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -96,16 +99,16 @@ func NewAppConstructor(encodingCfg params.EncodingConfig) network.AppConstructor // DefaultConfig returns a sane default configuration suitable for nearly all // testing requirements. func DefaultConfig() network.Config { - encCfg := simapp.MakeTestEncodingConfig() + encCfg := moduletestutil.MakeTestEncodingConfig() return network.Config{ - Codec: encCfg.Marshaler, + Codec: encCfg.Codec, TxConfig: encCfg.TxConfig, LegacyAmino: encCfg.Amino, InterfaceRegistry: encCfg.InterfaceRegistry, AccountRetriever: authtypes.AccountRetriever{}, AppConstructor: NewAppConstructor(encCfg), - GenesisState: simapp.ModuleBasics.DefaultGenesis(encCfg.Marshaler), + GenesisState: simapp.ModuleBasics.DefaultGenesis(encCfg.Codec), TimeoutCommit: 2 * time.Second, ChainID: "chain-" + tmrand.NewRand().Str(6), NumValidators: 4, @@ -114,7 +117,7 @@ func DefaultConfig() network.Config { AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), - PruningStrategy: storetypes.PruningOptionNothing, + PruningStrategy: pruningtypes.PruningOptionNothing, CleanupDir: true, SigningAlgo: string(hd.Secp256k1Type), KeyringOptions: []keyring.Option{}, @@ -168,7 +171,7 @@ func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { badClientStateJSON.Name(), // path to client state json consensusJSON.Name(), // path to consensus json, fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), @@ -183,7 +186,7 @@ func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { clientStateJSON.Name(), // path to client state json consensusJSON.Name(), // path to consensus json, fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), @@ -198,7 +201,7 @@ func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, tc.cmd, tc.args) s.Require().NoError(err) var txRes sdk.TxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(out.Bytes(), &txRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) s.Require().Equal(tc.code, txRes.Code) s.Require().NoError(s.network.WaitForNextBlock()) @@ -251,7 +254,7 @@ func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.C s.Require().NoError(err) var getTxRes txtypes.GetTxResponse - s.Require().NoError(val.ClientCtx.JSONCodec.UnmarshalJSON(grpcJSON, &getTxRes)) + s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(grpcJSON, &getTxRes)) s.Require().Equal(getTxRes.Tx.Body.Memo, "foobar") // generate broadcast only txn. diff --git a/ibc/testing/values.go b/ibc/testing/values.go index f5d947277..514f3de63 100644 --- a/ibc/testing/values.go +++ b/ibc/testing/values.go @@ -7,6 +7,7 @@ package ibctesting import ( "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" diff --git a/proto/buf.gen.gogo.yaml b/proto/buf.gen.gogo.yaml new file mode 100644 index 000000000..e3cd0b1ac --- /dev/null +++ b/proto/buf.gen.gogo.yaml @@ -0,0 +1,8 @@ +version: v1 +plugins: + - name: gocosmos + out: .. + opt: plugins=grpc,Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mcosmos/orm/v1/orm.proto=cosmossdk.io/orm + - name: grpc-gateway + out: .. + opt: logtostderr=true,allow_colon_final_segments=true diff --git a/proto/buf.lock b/proto/buf.lock new file mode 100644 index 000000000..17ac7fa21 --- /dev/null +++ b/proto/buf.lock @@ -0,0 +1,23 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: cosmos + repository: cosmos-proto + commit: 1935555c206d4afb9e94615dfd0fad31 + digest: shake256:c74d91a3ac7ae07d579e90eee33abf9b29664047ac8816500cf22c081fec0d72d62c89ce0bebafc1f6fec7aa5315be72606717740ca95007248425102c365377 + - remote: buf.build + owner: cosmos + repository: cosmos-sdk + commit: 5a6ab7bc14314acaa912d5e53aef1c2f + digest: shake256:02c00c73493720055f9b57553a35b5550023a3c1914123b247956288a78fb913aff70e66552777ae14d759467e119079d484af081264a5dd607a94d9fbc8116b + - remote: buf.build + owner: cosmos + repository: gogo-proto + commit: 5e5b9fdd01804356895f8f79a6f1ddc1 + digest: shake256:0b85da49e2e5f9ebc4806eae058e2f56096ff3b1c59d1fb7c190413dd15f45dd456f0b69ced9059341c80795d2b6c943de15b120a9e0308b499e43e4b5fc2952 + - remote: buf.build + owner: googleapis + repository: googleapis + commit: b30c5775bfb3485d9da2e87b26590ac9 + digest: shake256:9d0caaf056949a0e1c883b9849d8a2fa66e22f18a2a48f867d1a8c700aa22abee50ad3ef0d8171637457cadc43c584998bdf3adac55da0f9e4614c72686b057d diff --git a/proto/buf.yaml b/proto/buf.yaml index cb672e133..6c2c18d35 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,6 +1,6 @@ version: v1 deps: - - buf.build/cosmos/cosmos-sdk + - buf.build/cosmos/cosmos-sdk:v0.50.1 - buf.build/cosmos/cosmos-proto - buf.build/cosmos/gogo-proto - buf.build/googleapis/googleapis diff --git a/proto/canto/coinswap/v1/coinswap.proto b/proto/canto/coinswap/v1/coinswap.proto index bd6d09938..f97541c40 100644 --- a/proto/canto/coinswap/v1/coinswap.proto +++ b/proto/canto/coinswap/v1/coinswap.proto @@ -3,6 +3,7 @@ package canto.coinswap.v1; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/coinswap/types"; option (gogoproto.goproto_getters_all) = false; diff --git a/proto/canto/coinswap/v1/tx.proto b/proto/canto/coinswap/v1/tx.proto index 6fc34e284..f203a7547 100644 --- a/proto/canto/coinswap/v1/tx.proto +++ b/proto/canto/coinswap/v1/tx.proto @@ -4,6 +4,7 @@ package canto.coinswap.v1; import "canto/coinswap/v1/coinswap.proto"; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/coinswap/types"; option (gogoproto.goproto_getters_all) = false; @@ -31,11 +32,13 @@ message MsgAddLiquidity { ]; string exact_standard_amt = 2 [ (gogoproto.moretags) = "yaml:\"exact_standard_amt\"", + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string min_liquidity = 3 [ (gogoproto.moretags) = "yaml:\"min_liquidity\"", + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; @@ -54,11 +57,13 @@ message MsgRemoveLiquidity { ]; string min_token = 2 [ (gogoproto.moretags) = "yaml:\"min_token\"", + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; string min_standard_amt = 3 [ (gogoproto.moretags) = "yaml:\"min_standard_amt\"", + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; diff --git a/proto/canto/csr/v1/csr.proto b/proto/canto/csr/v1/csr.proto index c677add00..c341e585e 100644 --- a/proto/canto/csr/v1/csr.proto +++ b/proto/canto/csr/v1/csr.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package canto.csr.v1; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/csr/types"; @@ -16,6 +17,7 @@ message CSR { uint64 txs = 3; // The cumulative revenue for this CSR NFT -> represented as a sdk.Int string revenue = 4 [ + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; diff --git a/proto/canto/csr/v1/params.proto b/proto/canto/csr/v1/params.proto index 9fa7c2195..203feeb2f 100644 --- a/proto/canto/csr/v1/params.proto +++ b/proto/canto/csr/v1/params.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package canto.csr.v1; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/csr/types"; @@ -12,7 +13,8 @@ message Params { // decimal to determine the transaction fee split between network operators // (validators) and CSR string csr_shares = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index b838c2500..266e99ee1 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -4,6 +4,7 @@ package canto.erc20.v1; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; @@ -42,6 +43,7 @@ message MsgConvertERC20 { string contract_address = 1; // amount of ERC20 tokens to convert string amount = 2 [ + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; diff --git a/proto/canto/inflation/v1/inflation.proto b/proto/canto/inflation/v1/inflation.proto index a9cd9bd68..5b69db25f 100644 --- a/proto/canto/inflation/v1/inflation.proto +++ b/proto/canto/inflation/v1/inflation.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package canto.inflation.v1; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/inflation/types"; @@ -16,7 +17,8 @@ message InflationDistribution { // staking_rewards defines the proportion of the minted minted_denom that is // to be allocated as staking rewards string staking_rewards = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // // usage_incentives defines the proportion of the minted minted_denom that @@ -29,7 +31,8 @@ message InflationDistribution { // community_pool defines the proportion of the minted minted_denom that is to // be allocated to the community pool string community_pool = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } @@ -42,27 +45,32 @@ message InflationDistribution { message ExponentialCalculation { // initial value string a = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // reduction factor string r = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // long term inflation string c = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // bonding target string bonding_target = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; // max variance string max_variance = 5 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } diff --git a/proto/canto/inflation/v1/query.proto b/proto/canto/inflation/v1/query.proto index 2de7eb0be..bed055254 100644 --- a/proto/canto/inflation/v1/query.proto +++ b/proto/canto/inflation/v1/query.proto @@ -5,6 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/v1beta1/coin.proto"; import "canto/inflation/v1/genesis.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/inflation/types"; @@ -103,7 +104,8 @@ message QueryInflationRateRequest {} message QueryInflationRateResponse { // rate by which the total supply increases within one period string inflation_rate = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false ]; } diff --git a/proto/canto/onboarding/v1/genesis.proto b/proto/canto/onboarding/v1/genesis.proto index 7ace89fd2..0d76b11ae 100644 --- a/proto/canto/onboarding/v1/genesis.proto +++ b/proto/canto/onboarding/v1/genesis.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package canto.onboarding.v1; import "gogoproto/gogo.proto"; -import "google/protobuf/duration.proto"; +import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/onboarding/types"; @@ -18,6 +18,7 @@ message Params { bool enable_onboarding = 1; string auto_swap_threshold = 3 [ + (cosmos_proto.scalar) = "cosmos.Int", (gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false ]; diff --git a/scripts/protocgen-pulsar.sh b/scripts/protocgen-pulsar.sh new file mode 100755 index 000000000..43c24bab6 --- /dev/null +++ b/scripts/protocgen-pulsar.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# this script is for generating protobuf files for the new google.golang.org/protobuf API +set -eo pipefail + +echo "Cleaning API directory" +(cd api; find ./ -type f \( -iname \*.pulsar.go -o -iname \*.pb.go -o -iname \*.cosmos_orm.go -o -iname \*.pb.gw.go \) -delete; find . -empty -type d -delete; cd ..) + +echo "Generating API module" +(cd proto; buf generate --template buf.gen.pulsar.yaml) diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 81769cb54..c92725f9a 100755 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -1,53 +1,34 @@ #!/usr/bin/env bash +# How to run manually: +# docker build --pull --rm -f "contrib/devtools/Dockerfile" -t cosmossdk-proto:latest "contrib/devtools" +# docker run --rm -v $(pwd):/workspace --workdir /workspace cosmossdk-proto sh ./scripts/protocgen.sh -set -eo pipefail +echo "Formatting protobuf files" +find ./ -name "*.proto" -exec clang-format -i {} \; +set -e -protoc_gen_gocosmos() { - if ! grep "github.com/gogo/protobuf => github.com/regen-network/protobuf" go.mod &>/dev/null ; then - echo -e "\tPlease run this command from somewhere inside the cosmos-sdk folder." - return 1 - fi - - go get github.com/regen-network/cosmos-proto/protoc-gen-gocosmos@latest 2>/dev/null -} - -protoc_gen_doc() { - go get github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc 2>/dev/null -} - -echo "1" - -protoc_gen_gocosmos -protoc_gen_doc - -echo "2" - -proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) +echo "Generating gogo proto code" +cd proto +proto_dirs=$(find ./canto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) for dir in $proto_dirs; do - buf protoc \ - -I "proto" \ - -I "third_party/proto" \ - --gocosmos_out=plugins=interfacetype+grpc,\ -Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types:. \ - --grpc-gateway_out=logtostderr=true,allow_colon_final_segments=true:. \ - $(find "${dir}" -maxdepth 1 -name '*.proto') - + for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do + # this regex checks if a proto file has its go_package set to Canto/... + # gogo proto files SHOULD ONLY be generated if this is false + # we don't want gogo proto to run for proto files which are natively built for google.golang.org/protobuf + if grep -q "option go_package.*Canto" "$file"; then + buf generate --template buf.gen.gogo.yaml $file + fi + done done -echo "3" - -# command to generate docs using protoc-gen-doc -# TODO: migrate to `buf build` -# buf alpha protoc \ -# -I "proto" \ -# -I "third_party/proto" \ -# --doc_out=./docs/protocol \ -# --doc_opt=./docs/protodoc-markdown.tmpl,proto-docs.md \ -# $(find "$(pwd)/proto" -maxdepth 5 -name '*.proto') - +cd .. # move proto files to the right places -cp -r github.com/Canto-Network/Canto/v7/x/* x/ +cp -r github.com/Canto-Network/Canto/v7/* ./ rm -rf github.com + +go mod tidy + +./scripts/protocgen-pulsar.sh \ No newline at end of file diff --git a/third_party/proto/buf.yaml b/third_party/proto/buf.yaml deleted file mode 100644 index e9cdd2b17..000000000 --- a/third_party/proto/buf.yaml +++ /dev/null @@ -1,36 +0,0 @@ -version: v1 -build: - excludes: - - google/protobuf -lint: - use: - - DEFAULT - - COMMENTS - - FILE_LOWER_SNAKE_CASE - except: - - UNARY_RPC - - COMMENT_FIELD - - SERVICE_SUFFIX - - PACKAGE_VERSION_SUFFIX - - RPC_REQUEST_STANDARD_NAME - - RPC_REQUEST_RESPONSE_UNIQUE - - RPC_RESPONSE_STANDARD_NAME - - RPC_REQUEST_RESPONSE_UNIQUE - - COMMENT_MESSAGE - ignore: - - cosmos - - tendermint - - gogoproto - - cosmos_proto - - google - - confio - - ibc - - proofs.proto -breaking: - use: - - FILE - ignore: - - tendermint - - gogoproto - - cosmos_proto - - google \ No newline at end of file diff --git a/third_party/proto/cosmos/auth/v1beta1/auth.proto b/third_party/proto/cosmos/auth/v1beta1/auth.proto deleted file mode 100644 index 72e1d9ec2..000000000 --- a/third_party/proto/cosmos/auth/v1beta1/auth.proto +++ /dev/null @@ -1,50 +0,0 @@ -syntax = "proto3"; -package cosmos.auth.v1beta1; - -import "cosmos_proto/cosmos.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types"; - -// BaseAccount defines a base account type. It contains all the necessary fields -// for basic account functionality. Any custom account type should extend this -// type for additional functionality (e.g. vesting). -message BaseAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.equal) = false; - - option (cosmos_proto.implements_interface) = "AccountI"; - - string address = 1; - google.protobuf.Any pub_key = 2 - [(gogoproto.jsontag) = "public_key,omitempty", (gogoproto.moretags) = "yaml:\"public_key\""]; - uint64 account_number = 3 [(gogoproto.moretags) = "yaml:\"account_number\""]; - uint64 sequence = 4; -} - -// ModuleAccount defines an account for modules that holds coins on a pool. -message ModuleAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - option (cosmos_proto.implements_interface) = "ModuleAccountI"; - - BaseAccount base_account = 1 [(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"base_account\""]; - string name = 2; - repeated string permissions = 3; -} - -// Params defines the parameters for the auth module. -message Params { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - uint64 max_memo_characters = 1 [(gogoproto.moretags) = "yaml:\"max_memo_characters\""]; - uint64 tx_sig_limit = 2 [(gogoproto.moretags) = "yaml:\"tx_sig_limit\""]; - uint64 tx_size_cost_per_byte = 3 [(gogoproto.moretags) = "yaml:\"tx_size_cost_per_byte\""]; - uint64 sig_verify_cost_ed25519 = 4 - [(gogoproto.customname) = "SigVerifyCostED25519", (gogoproto.moretags) = "yaml:\"sig_verify_cost_ed25519\""]; - uint64 sig_verify_cost_secp256k1 = 5 - [(gogoproto.customname) = "SigVerifyCostSecp256k1", (gogoproto.moretags) = "yaml:\"sig_verify_cost_secp256k1\""]; -} diff --git a/third_party/proto/cosmos/auth/v1beta1/genesis.proto b/third_party/proto/cosmos/auth/v1beta1/genesis.proto deleted file mode 100644 index c88b94ee4..000000000 --- a/third_party/proto/cosmos/auth/v1beta1/genesis.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; -package cosmos.auth.v1beta1; - -import "google/protobuf/any.proto"; -import "gogoproto/gogo.proto"; -import "cosmos/auth/v1beta1/auth.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types"; - -// GenesisState defines the auth module's genesis state. -message GenesisState { - // params defines all the paramaters of the module. - Params params = 1 [(gogoproto.nullable) = false]; - - // accounts are the accounts present at genesis. - repeated google.protobuf.Any accounts = 2; -} diff --git a/third_party/proto/cosmos/auth/v1beta1/query.proto b/third_party/proto/cosmos/auth/v1beta1/query.proto deleted file mode 100644 index 4d9759cad..000000000 --- a/third_party/proto/cosmos/auth/v1beta1/query.proto +++ /dev/null @@ -1,74 +0,0 @@ -syntax = "proto3"; -package cosmos.auth.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; -import "cosmos/auth/v1beta1/auth.proto"; -import "cosmos_proto/cosmos.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types"; - -// Query defines the gRPC querier service. -service Query { - // Accounts returns all the existing accounts - // - // Since: cosmos-sdk 0.43 - rpc Accounts(QueryAccountsRequest) returns (QueryAccountsResponse) { - option (google.api.http).get = "/cosmos/auth/v1beta1/accounts"; - } - - // Account returns account details based on address. - rpc Account(QueryAccountRequest) returns (QueryAccountResponse) { - option (google.api.http).get = "/cosmos/auth/v1beta1/accounts/{address}"; - } - - // Params queries all parameters. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/auth/v1beta1/params"; - } -} - -// QueryAccountsRequest is the request type for the Query/Accounts RPC method. -// -// Since: cosmos-sdk 0.43 -message QueryAccountsRequest { - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryAccountsResponse is the response type for the Query/Accounts RPC method. -// -// Since: cosmos-sdk 0.43 -message QueryAccountsResponse { - // accounts are the existing accounts - repeated google.protobuf.Any accounts = 1 [(cosmos_proto.accepts_interface) = "AccountI"]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryAccountRequest is the request type for the Query/Account RPC method. -message QueryAccountRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address defines the address to query for. - string address = 1; -} - -// QueryAccountResponse is the response type for the Query/Account RPC method. -message QueryAccountResponse { - // account defines the account of the corresponding address. - google.protobuf.Any account = 1 [(cosmos_proto.accepts_interface) = "AccountI"]; -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/authz/v1beta1/authz.proto b/third_party/proto/cosmos/authz/v1beta1/authz.proto deleted file mode 100644 index 05b1feefa..000000000 --- a/third_party/proto/cosmos/authz/v1beta1/authz.proto +++ /dev/null @@ -1,39 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.authz.v1beta1; - -import "cosmos_proto/cosmos.proto"; -import "google/protobuf/timestamp.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/authz"; -option (gogoproto.goproto_getters_all) = false; - -// GenericAuthorization gives the grantee unrestricted permissions to execute -// the provided method on behalf of the granter's account. -message GenericAuthorization { - option (cosmos_proto.implements_interface) = "Authorization"; - - // Msg, identified by it's type URL, to grant unrestricted permissions to execute - string msg = 1; -} - -// Grant gives permissions to execute -// the provide method with expiration time. -message Grant { - google.protobuf.Any authorization = 1 [(cosmos_proto.accepts_interface) = "Authorization"]; - google.protobuf.Timestamp expiration = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; -} - -// GrantAuthorization extends a grant with both the addresses of the grantee and granter. -// It is used in genesis.proto and query.proto -// -// Since: cosmos-sdk 0.45.2 -message GrantAuthorization { - string granter = 1; - string grantee = 2; - - google.protobuf.Any authorization = 3 [(cosmos_proto.accepts_interface) = "Authorization"]; - google.protobuf.Timestamp expiration = 4 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} diff --git a/third_party/proto/cosmos/authz/v1beta1/event.proto b/third_party/proto/cosmos/authz/v1beta1/event.proto deleted file mode 100644 index 7a3cf7c8c..000000000 --- a/third_party/proto/cosmos/authz/v1beta1/event.proto +++ /dev/null @@ -1,25 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.authz.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/authz"; - -// EventGrant is emitted on Msg/Grant -message EventGrant { - // Msg type URL for which an autorization is granted - string msg_type_url = 2; - // Granter account address - string granter = 3; - // Grantee account address - string grantee = 4; -} - -// EventRevoke is emitted on Msg/Revoke -message EventRevoke { - // Msg type URL for which an autorization is revoked - string msg_type_url = 2; - // Granter account address - string granter = 3; - // Grantee account address - string grantee = 4; -} diff --git a/third_party/proto/cosmos/authz/v1beta1/genesis.proto b/third_party/proto/cosmos/authz/v1beta1/genesis.proto deleted file mode 100644 index 310f62656..000000000 --- a/third_party/proto/cosmos/authz/v1beta1/genesis.proto +++ /dev/null @@ -1,13 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.authz.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/authz/v1beta1/authz.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/authz"; - -// GenesisState defines the authz module's genesis state. -message GenesisState { - repeated GrantAuthorization authorization = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/authz/v1beta1/query.proto b/third_party/proto/cosmos/authz/v1beta1/query.proto deleted file mode 100644 index f668309be..000000000 --- a/third_party/proto/cosmos/authz/v1beta1/query.proto +++ /dev/null @@ -1,81 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.authz.v1beta1; - -import "google/api/annotations.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "cosmos/authz/v1beta1/authz.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/authz"; - -// Query defines the gRPC querier service. -service Query { - // Returns list of `Authorization`, granted to the grantee by the granter. - rpc Grants(QueryGrantsRequest) returns (QueryGrantsResponse) { - option (google.api.http).get = "/cosmos/authz/v1beta1/grants"; - } - - // GranterGrants returns list of `GrantAuthorization`, granted by granter. - // - // Since: cosmos-sdk 0.45.2 - rpc GranterGrants(QueryGranterGrantsRequest) returns (QueryGranterGrantsResponse) { - option (google.api.http).get = "/cosmos/authz/v1beta1/grants/granter/{granter}"; - } - - // GranteeGrants returns a list of `GrantAuthorization` by grantee. - // - // Since: cosmos-sdk 0.45.2 - rpc GranteeGrants(QueryGranteeGrantsRequest) returns (QueryGranteeGrantsResponse) { - option (google.api.http).get = "/cosmos/authz/v1beta1/grants/grantee/{grantee}"; - } -} - -// QueryGrantsRequest is the request type for the Query/Grants RPC method. -message QueryGrantsRequest { - string granter = 1; - string grantee = 2; - // Optional, msg_type_url, when set, will query only grants matching given msg type. - string msg_type_url = 3; - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 4; -} - -// QueryGrantsResponse is the response type for the Query/Authorizations RPC method. -message QueryGrantsResponse { - // authorizations is a list of grants granted for grantee by granter. - repeated Grant grants = 1; - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryGranterGrantsRequest is the request type for the Query/GranterGrants RPC method. -message QueryGranterGrantsRequest { - string granter = 1; - - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method. -message QueryGranterGrantsResponse { - // grants is a list of grants granted by the granter. - repeated GrantAuthorization grants = 1; - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryGranteeGrantsRequest is the request type for the Query/IssuedGrants RPC method. -message QueryGranteeGrantsRequest { - string grantee = 1; - - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method. -message QueryGranteeGrantsResponse { - // grants is a list of grants granted to the grantee. - repeated GrantAuthorization grants = 1; - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} diff --git a/third_party/proto/cosmos/authz/v1beta1/tx.proto b/third_party/proto/cosmos/authz/v1beta1/tx.proto deleted file mode 100644 index 457f0d662..000000000 --- a/third_party/proto/cosmos/authz/v1beta1/tx.proto +++ /dev/null @@ -1,70 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.authz.v1beta1; - -import "cosmos_proto/cosmos.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/any.proto"; -import "cosmos/base/abci/v1beta1/abci.proto"; -import "cosmos/authz/v1beta1/authz.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/authz"; -option (gogoproto.goproto_getters_all) = false; - -// Msg defines the authz Msg service. -service Msg { - // Grant grants the provided authorization to the grantee on the granter's - // account with the provided expiration time. If there is already a grant - // for the given (granter, grantee, Authorization) triple, then the grant - // will be overwritten. - rpc Grant(MsgGrant) returns (MsgGrantResponse); - - // Exec attempts to execute the provided messages using - // authorizations granted to the grantee. Each message should have only - // one signer corresponding to the granter of the authorization. - rpc Exec(MsgExec) returns (MsgExecResponse); - - // Revoke revokes any authorization corresponding to the provided method name on the - // granter's account that has been granted to the grantee. - rpc Revoke(MsgRevoke) returns (MsgRevokeResponse); -} - -// MsgGrant is a request type for Grant method. It declares authorization to the grantee -// on behalf of the granter with the provided expiration time. -message MsgGrant { - string granter = 1; - string grantee = 2; - - cosmos.authz.v1beta1.Grant grant = 3 [(gogoproto.nullable) = false]; -} - -// MsgExecResponse defines the Msg/MsgExecResponse response type. -message MsgExecResponse { - repeated bytes results = 1; -} - -// MsgExec attempts to execute the provided messages using -// authorizations granted to the grantee. Each message should have only -// one signer corresponding to the granter of the authorization. -message MsgExec { - string grantee = 1; - // Authorization Msg requests to execute. Each msg must implement Authorization interface - // The x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg)) - // triple and validate it. - repeated google.protobuf.Any msgs = 2 [(cosmos_proto.accepts_interface) = "sdk.Msg, authz.Authorization"]; -} - -// MsgGrantResponse defines the Msg/MsgGrant response type. -message MsgGrantResponse {} - -// MsgRevoke revokes any authorization with the provided sdk.Msg type on the -// granter's account with that has been granted to the grantee. -message MsgRevoke { - string granter = 1; - string grantee = 2; - string msg_type_url = 3; -} - -// MsgRevokeResponse defines the Msg/MsgRevokeResponse response type. -message MsgRevokeResponse {} diff --git a/third_party/proto/cosmos/bank/v1beta1/authz.proto b/third_party/proto/cosmos/bank/v1beta1/authz.proto deleted file mode 100644 index 4f58b15e4..000000000 --- a/third_party/proto/cosmos/bank/v1beta1/authz.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; -package cosmos.bank.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; - -// SendAuthorization allows the grantee to spend up to spend_limit coins from -// the granter's account. -// -// Since: cosmos-sdk 0.43 -message SendAuthorization { - option (cosmos_proto.implements_interface) = "Authorization"; - - repeated cosmos.base.v1beta1.Coin spend_limit = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} diff --git a/third_party/proto/cosmos/bank/v1beta1/bank.proto b/third_party/proto/cosmos/bank/v1beta1/bank.proto deleted file mode 100644 index df91008df..000000000 --- a/third_party/proto/cosmos/bank/v1beta1/bank.proto +++ /dev/null @@ -1,96 +0,0 @@ -syntax = "proto3"; -package cosmos.bank.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; - -// Params defines the parameters for the bank module. -message Params { - option (gogoproto.goproto_stringer) = false; - repeated SendEnabled send_enabled = 1 [(gogoproto.moretags) = "yaml:\"send_enabled,omitempty\""]; - bool default_send_enabled = 2 [(gogoproto.moretags) = "yaml:\"default_send_enabled,omitempty\""]; -} - -// SendEnabled maps coin denom to a send_enabled status (whether a denom is -// sendable). -message SendEnabled { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - string denom = 1; - bool enabled = 2; -} - -// Input models transaction input. -message Input { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string address = 1; - repeated cosmos.base.v1beta1.Coin coins = 2 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// Output models transaction outputs. -message Output { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string address = 1; - repeated cosmos.base.v1beta1.Coin coins = 2 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// Supply represents a struct that passively keeps track of the total supply -// amounts in the network. -// This message is deprecated now that supply is indexed by denom. -message Supply { - option deprecated = true; - - option (gogoproto.equal) = true; - option (gogoproto.goproto_getters) = false; - - option (cosmos_proto.implements_interface) = "*github.com/cosmos/cosmos-sdk/x/bank/legacy/v040.SupplyI"; - - repeated cosmos.base.v1beta1.Coin total = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// DenomUnit represents a struct that describes a given -// denomination unit of the basic token. -message DenomUnit { - // denom represents the string name of the given denom unit (e.g uatom). - string denom = 1; - // exponent represents power of 10 exponent that one must - // raise the base_denom to in order to equal the given DenomUnit's denom - // 1 denom = 1^exponent base_denom - // (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with - // exponent = 6, thus: 1 atom = 10^6 uatom). - uint32 exponent = 2; - // aliases is a list of string aliases for the given denom - repeated string aliases = 3; -} - -// Metadata represents a struct that describes -// a basic token. -message Metadata { - string description = 1; - // denom_units represents the list of DenomUnit's for a given coin - repeated DenomUnit denom_units = 2; - // base represents the base denom (should be the DenomUnit with exponent = 0). - string base = 3; - // display indicates the suggested denom that should be - // displayed in clients. - string display = 4; - // name defines the name of the token (eg: Cosmos Atom) - // - // Since: cosmos-sdk 0.43 - string name = 5; - // symbol is the token symbol usually shown on exchanges (eg: ATOM). This can - // be the same as the display. - // - // Since: cosmos-sdk 0.43 - string symbol = 6; -} diff --git a/third_party/proto/cosmos/bank/v1beta1/genesis.proto b/third_party/proto/cosmos/bank/v1beta1/genesis.proto deleted file mode 100644 index 8fd7329a0..000000000 --- a/third_party/proto/cosmos/bank/v1beta1/genesis.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; -package cosmos.bank.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/bank/v1beta1/bank.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; - -// GenesisState defines the bank module's genesis state. -message GenesisState { - // params defines all the paramaters of the module. - Params params = 1 [(gogoproto.nullable) = false]; - - // balances is an array containing the balances of all the accounts. - repeated Balance balances = 2 [(gogoproto.nullable) = false]; - - // supply represents the total supply. If it is left empty, then supply will be calculated based on the provided - // balances. Otherwise, it will be used to validate that the sum of the balances equals this amount. - repeated cosmos.base.v1beta1.Coin supply = 3 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false]; - - // denom_metadata defines the metadata of the differents coins. - repeated Metadata denom_metadata = 4 [(gogoproto.moretags) = "yaml:\"denom_metadata\"", (gogoproto.nullable) = false]; -} - -// Balance defines an account address and balance pair used in the bank module's -// genesis state. -message Balance { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the address of the balance holder. - string address = 1; - - // coins defines the different coins this balance holds. - repeated cosmos.base.v1beta1.Coin coins = 2 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/bank/v1beta1/query.proto b/third_party/proto/cosmos/bank/v1beta1/query.proto deleted file mode 100644 index 67cebd5fd..000000000 --- a/third_party/proto/cosmos/bank/v1beta1/query.proto +++ /dev/null @@ -1,193 +0,0 @@ -syntax = "proto3"; -package cosmos.bank.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/bank/v1beta1/bank.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; - -// Query defines the gRPC querier service. -service Query { - // Balance queries the balance of a single coin for a single account. - rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}/by_denom"; - } - - // AllBalances queries the balance of all coins for a single account. - rpc AllBalances(QueryAllBalancesRequest) returns (QueryAllBalancesResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}"; - } - - // SpendableBalances queries the spenable balance of all coins for a single - // account. - rpc SpendableBalances(QuerySpendableBalancesRequest) returns (QuerySpendableBalancesResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/spendable_balances/{address}"; - } - - // TotalSupply queries the total supply of all coins. - rpc TotalSupply(QueryTotalSupplyRequest) returns (QueryTotalSupplyResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/supply"; - } - - // SupplyOf queries the supply of a single coin. - rpc SupplyOf(QuerySupplyOfRequest) returns (QuerySupplyOfResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/supply/{denom}"; - } - - // Params queries the parameters of x/bank module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/params"; - } - - // DenomsMetadata queries the client metadata of a given coin denomination. - rpc DenomMetadata(QueryDenomMetadataRequest) returns (QueryDenomMetadataResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata/{denom}"; - } - - // DenomsMetadata queries the client metadata for all registered coin denominations. - rpc DenomsMetadata(QueryDenomsMetadataRequest) returns (QueryDenomsMetadataResponse) { - option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata"; - } -} - -// QueryBalanceRequest is the request type for the Query/Balance RPC method. -message QueryBalanceRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the address to query balances for. - string address = 1; - - // denom is the coin denom to query balances for. - string denom = 2; -} - -// QueryBalanceResponse is the response type for the Query/Balance RPC method. -message QueryBalanceResponse { - // balance is the balance of the coin. - cosmos.base.v1beta1.Coin balance = 1; -} - -// QueryBalanceRequest is the request type for the Query/AllBalances RPC method. -message QueryAllBalancesRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the address to query balances for. - string address = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryAllBalancesResponse is the response type for the Query/AllBalances RPC -// method. -message QueryAllBalancesResponse { - // balances is the balances of all the coins. - repeated cosmos.base.v1beta1.Coin balances = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QuerySpendableBalancesRequest defines the gRPC request structure for querying -// an account's spendable balances. -message QuerySpendableBalancesRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the address to query spendable balances for. - string address = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QuerySpendableBalancesResponse defines the gRPC response structure for querying -// an account's spendable balances. -message QuerySpendableBalancesResponse { - // balances is the spendable balances of all the coins. - repeated cosmos.base.v1beta1.Coin balances = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC -// method. -message QueryTotalSupplyRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // pagination defines an optional pagination for the request. - // - // Since: cosmos-sdk 0.43 - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC -// method -message QueryTotalSupplyResponse { - // supply is the supply of the coins - repeated cosmos.base.v1beta1.Coin supply = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // pagination defines the pagination in the response. - // - // Since: cosmos-sdk 0.43 - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QuerySupplyOfRequest is the request type for the Query/SupplyOf RPC method. -message QuerySupplyOfRequest { - // denom is the coin denom to query balances for. - string denom = 1; -} - -// QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method. -message QuerySupplyOfResponse { - // amount is the supply of the coin. - cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false]; -} - -// QueryParamsRequest defines the request type for querying x/bank parameters. -message QueryParamsRequest {} - -// QueryParamsResponse defines the response type for querying x/bank parameters. -message QueryParamsResponse { - Params params = 1 [(gogoproto.nullable) = false]; -} - -// QueryDenomsMetadataRequest is the request type for the Query/DenomsMetadata RPC method. -message QueryDenomsMetadataRequest { - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC -// method. -message QueryDenomsMetadataResponse { - // metadata provides the client information for all the registered tokens. - repeated Metadata metadatas = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDenomMetadataRequest is the request type for the Query/DenomMetadata RPC method. -message QueryDenomMetadataRequest { - // denom is the coin denom to query the metadata for. - string denom = 1; -} - -// QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC -// method. -message QueryDenomMetadataResponse { - // metadata describes and provides all the client information for the requested token. - Metadata metadata = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/bank/v1beta1/tx.proto b/third_party/proto/cosmos/bank/v1beta1/tx.proto deleted file mode 100644 index 26b2ab41f..000000000 --- a/third_party/proto/cosmos/bank/v1beta1/tx.proto +++ /dev/null @@ -1,42 +0,0 @@ -syntax = "proto3"; -package cosmos.bank.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/bank/v1beta1/bank.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types"; - -// Msg defines the bank Msg service. -service Msg { - // Send defines a method for sending coins from one account to another account. - rpc Send(MsgSend) returns (MsgSendResponse); - - // MultiSend defines a method for sending coins from some accounts to other accounts. - rpc MultiSend(MsgMultiSend) returns (MsgMultiSendResponse); -} - -// MsgSend represents a message to send coins from one account to another. -message MsgSend { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""]; - string to_address = 2 [(gogoproto.moretags) = "yaml:\"to_address\""]; - repeated cosmos.base.v1beta1.Coin amount = 3 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// MsgSendResponse defines the Msg/Send response type. -message MsgSendResponse {} - -// MsgMultiSend represents an arbitrary multi-in, multi-out send message. -message MsgMultiSend { - option (gogoproto.equal) = false; - - repeated Input inputs = 1 [(gogoproto.nullable) = false]; - repeated Output outputs = 2 [(gogoproto.nullable) = false]; -} - -// MsgMultiSendResponse defines the Msg/MultiSend response type. -message MsgMultiSendResponse {} diff --git a/third_party/proto/cosmos/base/abci/v1beta1/abci.proto b/third_party/proto/cosmos/base/abci/v1beta1/abci.proto deleted file mode 100644 index e24ae7bd5..000000000 --- a/third_party/proto/cosmos/base/abci/v1beta1/abci.proto +++ /dev/null @@ -1,144 +0,0 @@ -syntax = "proto3"; -package cosmos.base.abci.v1beta1; - -import "gogoproto/gogo.proto"; -import "tendermint/abci/types.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types"; -option (gogoproto.goproto_stringer_all) = false; - -// TxResponse defines a structure containing relevant tx data and metadata. The -// tags are stringified and the log is JSON decoded. -message TxResponse { - option (gogoproto.goproto_getters) = false; - // The block height - int64 height = 1; - // The transaction hash. - string txhash = 2 [(gogoproto.customname) = "TxHash"]; - // Namespace for the Code - string codespace = 3; - // Response code. - uint32 code = 4; - // Result bytes, if any. - string data = 5; - // The output of the application's logger (raw string). May be - // non-deterministic. - string raw_log = 6; - // The output of the application's logger (typed). May be non-deterministic. - repeated ABCIMessageLog logs = 7 [(gogoproto.castrepeated) = "ABCIMessageLogs", (gogoproto.nullable) = false]; - // Additional information. May be non-deterministic. - string info = 8; - // Amount of gas requested for transaction. - int64 gas_wanted = 9; - // Amount of gas consumed by transaction. - int64 gas_used = 10; - // The request transaction bytes. - google.protobuf.Any tx = 11; - // Time of the previous block. For heights > 1, it's the weighted median of - // the timestamps of the valid votes in the block.LastCommit. For height == 1, - // it's genesis time. - string timestamp = 12; - // Events defines all the events emitted by processing a transaction. Note, - // these events include those emitted by processing all the messages and those - // emitted from the ante handler. Whereas Logs contains the events, with - // additional metadata, emitted only by processing the messages. - // - // Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - repeated tendermint.abci.Event events = 13 [(gogoproto.nullable) = false]; -} - -// ABCIMessageLog defines a structure containing an indexed tx ABCI message log. -message ABCIMessageLog { - option (gogoproto.stringer) = true; - - uint32 msg_index = 1; - string log = 2; - - // Events contains a slice of Event objects that were emitted during some - // execution. - repeated StringEvent events = 3 [(gogoproto.castrepeated) = "StringEvents", (gogoproto.nullable) = false]; -} - -// StringEvent defines en Event object wrapper where all the attributes -// contain key/value pairs that are strings instead of raw bytes. -message StringEvent { - option (gogoproto.stringer) = true; - - string type = 1; - repeated Attribute attributes = 2 [(gogoproto.nullable) = false]; -} - -// Attribute defines an attribute wrapper where the key and value are -// strings instead of raw bytes. -message Attribute { - string key = 1; - string value = 2; -} - -// GasInfo defines tx execution gas context. -message GasInfo { - // GasWanted is the maximum units of work we allow this tx to perform. - uint64 gas_wanted = 1 [(gogoproto.moretags) = "yaml:\"gas_wanted\""]; - - // GasUsed is the amount of gas actually consumed. - uint64 gas_used = 2 [(gogoproto.moretags) = "yaml:\"gas_used\""]; -} - -// Result is the union of ResponseFormat and ResponseCheckTx. -message Result { - option (gogoproto.goproto_getters) = false; - - // Data is any data returned from message or handler execution. It MUST be - // length prefixed in order to separate data from multiple message executions. - bytes data = 1; - - // Log contains the log information from message or handler execution. - string log = 2; - - // Events contains a slice of Event objects that were emitted during message - // or handler execution. - repeated tendermint.abci.Event events = 3 [(gogoproto.nullable) = false]; -} - -// SimulationResponse defines the response generated when a transaction is -// successfully simulated. -message SimulationResponse { - GasInfo gas_info = 1 [(gogoproto.embed) = true, (gogoproto.nullable) = false]; - Result result = 2; -} - -// MsgData defines the data returned in a Result object during message -// execution. -message MsgData { - option (gogoproto.stringer) = true; - - string msg_type = 1; - bytes data = 2; -} - -// TxMsgData defines a list of MsgData. A transaction will have a MsgData object -// for each message. -message TxMsgData { - option (gogoproto.stringer) = true; - - repeated MsgData data = 1; -} - -// SearchTxsResult defines a structure for querying txs pageable -message SearchTxsResult { - option (gogoproto.stringer) = true; - - // Count of all txs - uint64 total_count = 1 [(gogoproto.moretags) = "yaml:\"total_count\"", (gogoproto.jsontag) = "total_count"]; - // Count of txs in current page - uint64 count = 2; - // Index of current page, start from 1 - uint64 page_number = 3 [(gogoproto.moretags) = "yaml:\"page_number\"", (gogoproto.jsontag) = "page_number"]; - // Count of total pages - uint64 page_total = 4 [(gogoproto.moretags) = "yaml:\"page_total\"", (gogoproto.jsontag) = "page_total"]; - // Max count txs per page - uint64 limit = 5; - // List of txs in current page - repeated TxResponse txs = 6; -} diff --git a/third_party/proto/cosmos/base/kv/v1beta1/kv.proto b/third_party/proto/cosmos/base/kv/v1beta1/kv.proto deleted file mode 100644 index 4e9b8d285..000000000 --- a/third_party/proto/cosmos/base/kv/v1beta1/kv.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; -package cosmos.base.kv.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types/kv"; - -// Pairs defines a repeated slice of Pair objects. -message Pairs { - repeated Pair pairs = 1 [(gogoproto.nullable) = false]; -} - -// Pair defines a key/value bytes tuple. -message Pair { - bytes key = 1; - bytes value = 2; -} diff --git a/third_party/proto/cosmos/base/query/v1beta1/pagination.proto b/third_party/proto/cosmos/base/query/v1beta1/pagination.proto deleted file mode 100644 index cd5eb066d..000000000 --- a/third_party/proto/cosmos/base/query/v1beta1/pagination.proto +++ /dev/null @@ -1,55 +0,0 @@ -syntax = "proto3"; -package cosmos.base.query.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/types/query"; - -// PageRequest is to be embedded in gRPC request messages for efficient -// pagination. Ex: -// -// message SomeRequest { -// Foo some_parameter = 1; -// PageRequest pagination = 2; -// } -message PageRequest { - // key is a value returned in PageResponse.next_key to begin - // querying the next page most efficiently. Only one of offset or key - // should be set. - bytes key = 1; - - // offset is a numeric offset that can be used when key is unavailable. - // It is less efficient than using key. Only one of offset or key should - // be set. - uint64 offset = 2; - - // limit is the total number of results to be returned in the result page. - // If left empty it will default to a value to be set by each app. - uint64 limit = 3; - - // count_total is set to true to indicate that the result set should include - // a count of the total number of items available for pagination in UIs. - // count_total is only respected when offset is used. It is ignored when key - // is set. - bool count_total = 4; - - // reverse is set to true if results are to be returned in the descending order. - // - // Since: cosmos-sdk 0.43 - bool reverse = 5; -} - -// PageResponse is to be embedded in gRPC response messages where the -// corresponding request message has used PageRequest. -// -// message SomeResponse { -// repeated Bar results = 1; -// PageResponse page = 2; -// } -message PageResponse { - // next_key is the key to be passed to PageRequest.key to - // query the next page most efficiently - bytes next_key = 1; - - // total is total number of results available if PageRequest.count_total - // was set, its value is undefined otherwise - uint64 total = 2; -} diff --git a/third_party/proto/cosmos/base/reflection/v1beta1/reflection.proto b/third_party/proto/cosmos/base/reflection/v1beta1/reflection.proto deleted file mode 100644 index 22670e72b..000000000 --- a/third_party/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax = "proto3"; -package cosmos.base.reflection.v1beta1; - -import "google/api/annotations.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/reflection"; - -// ReflectionService defines a service for interface reflection. -service ReflectionService { - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces"; - }; - - // ListImplementations list all the concrete types that implement a given - // interface. - rpc ListImplementations(ListImplementationsRequest) returns (ListImplementationsResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces/" - "{interface_name}/implementations"; - }; -} - -// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. -message ListAllInterfacesRequest {} - -// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. -message ListAllInterfacesResponse { - // interface_names is an array of all the registered interfaces. - repeated string interface_names = 1; -} - -// ListImplementationsRequest is the request type of the ListImplementations -// RPC. -message ListImplementationsRequest { - // interface_name defines the interface to query the implementations for. - string interface_name = 1; -} - -// ListImplementationsResponse is the response type of the ListImplementations -// RPC. -message ListImplementationsResponse { - repeated string implementation_message_names = 1; -} diff --git a/third_party/proto/cosmos/base/reflection/v2alpha1/reflection.proto b/third_party/proto/cosmos/base/reflection/v2alpha1/reflection.proto deleted file mode 100644 index d5b048558..000000000 --- a/third_party/proto/cosmos/base/reflection/v2alpha1/reflection.proto +++ /dev/null @@ -1,218 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.base.reflection.v2alpha1; - -import "google/api/annotations.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1"; - -// AppDescriptor describes a cosmos-sdk based application -message AppDescriptor { - // AuthnDescriptor provides information on how to authenticate transactions on the application - // NOTE: experimental and subject to change in future releases. - AuthnDescriptor authn = 1; - // chain provides the chain descriptor - ChainDescriptor chain = 2; - // codec provides metadata information regarding codec related types - CodecDescriptor codec = 3; - // configuration provides metadata information regarding the sdk.Config type - ConfigurationDescriptor configuration = 4; - // query_services provides metadata information regarding the available queriable endpoints - QueryServicesDescriptor query_services = 5; - // tx provides metadata information regarding how to send transactions to the given application - TxDescriptor tx = 6; -} - -// TxDescriptor describes the accepted transaction type -message TxDescriptor { - // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) - // it is not meant to support polymorphism of transaction types, it is supposed to be used by - // reflection clients to understand if they can handle a specific transaction type in an application. - string fullname = 1; - // msgs lists the accepted application messages (sdk.Msg) - repeated MsgDescriptor msgs = 2; -} - -// AuthnDescriptor provides information on how to sign transactions without relying -// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures -message AuthnDescriptor { - // sign_modes defines the supported signature algorithm - repeated SigningModeDescriptor sign_modes = 1; -} - -// SigningModeDescriptor provides information on a signing flow of the application -// NOTE(fdymylja): here we could go as far as providing an entire flow on how -// to sign a message given a SigningModeDescriptor, but it's better to think about -// this another time -message SigningModeDescriptor { - // name defines the unique name of the signing mode - string name = 1; - // number is the unique int32 identifier for the sign_mode enum - int32 number = 2; - // authn_info_provider_method_fullname defines the fullname of the method to call to get - // the metadata required to authenticate using the provided sign_modes - string authn_info_provider_method_fullname = 3; -} - -// ChainDescriptor describes chain information of the application -message ChainDescriptor { - // id is the chain id - string id = 1; -} - -// CodecDescriptor describes the registered interfaces and provides metadata information on the types -message CodecDescriptor { - // interfaces is a list of the registerted interfaces descriptors - repeated InterfaceDescriptor interfaces = 1; -} - -// InterfaceDescriptor describes the implementation of an interface -message InterfaceDescriptor { - // fullname is the name of the interface - string fullname = 1; - // interface_accepting_messages contains information regarding the proto messages which contain the interface as - // google.protobuf.Any field - repeated InterfaceAcceptingMessageDescriptor interface_accepting_messages = 2; - // interface_implementers is a list of the descriptors of the interface implementers - repeated InterfaceImplementerDescriptor interface_implementers = 3; -} - -// InterfaceImplementerDescriptor describes an interface implementer -message InterfaceImplementerDescriptor { - // fullname is the protobuf queryable name of the interface implementer - string fullname = 1; - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - string type_url = 2; -} - -// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains -// an interface represented as a google.protobuf.Any -message InterfaceAcceptingMessageDescriptor { - // fullname is the protobuf fullname of the type containing the interface - string fullname = 1; - // field_descriptor_names is a list of the protobuf name (not fullname) of the field - // which contains the interface as google.protobuf.Any (the interface is the same, but - // it can be in multiple fields of the same proto message) - repeated string field_descriptor_names = 2; -} - -// ConfigurationDescriptor contains metadata information on the sdk.Config -message ConfigurationDescriptor { - // bech32_account_address_prefix is the account address prefix - string bech32_account_address_prefix = 1; -} - -// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction -message MsgDescriptor { - // msg_type_url contains the TypeURL of a sdk.Msg. - string msg_type_url = 1; -} - -// ReflectionService defines a service for application reflection. -service ReflectionService { - // GetAuthnDescriptor returns information on how to authenticate transactions in the application - // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in - // future releases of the cosmos-sdk. - rpc GetAuthnDescriptor(GetAuthnDescriptorRequest) returns (GetAuthnDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/authn"; - } - // GetChainDescriptor returns the description of the chain - rpc GetChainDescriptor(GetChainDescriptorRequest) returns (GetChainDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/chain"; - }; - // GetCodecDescriptor returns the descriptor of the codec of the application - rpc GetCodecDescriptor(GetCodecDescriptorRequest) returns (GetCodecDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/codec"; - } - // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application - rpc GetConfigurationDescriptor(GetConfigurationDescriptorRequest) returns (GetConfigurationDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/configuration"; - } - // GetQueryServicesDescriptor returns the available gRPC queryable services of the application - rpc GetQueryServicesDescriptor(GetQueryServicesDescriptorRequest) returns (GetQueryServicesDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/query_services"; - } - // GetTxDescriptor returns information on the used transaction object and available msgs that can be used - rpc GetTxDescriptor(GetTxDescriptorRequest) returns (GetTxDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor"; - } -} - -// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC -message GetAuthnDescriptorRequest {} -// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC -message GetAuthnDescriptorResponse { - // authn describes how to authenticate to the application when sending transactions - AuthnDescriptor authn = 1; -} - -// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC -message GetChainDescriptorRequest {} -// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC -message GetChainDescriptorResponse { - // chain describes application chain information - ChainDescriptor chain = 1; -} - -// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC -message GetCodecDescriptorRequest {} -// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC -message GetCodecDescriptorResponse { - // codec describes the application codec such as registered interfaces and implementations - CodecDescriptor codec = 1; -} - -// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC -message GetConfigurationDescriptorRequest {} -// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC -message GetConfigurationDescriptorResponse { - // config describes the application's sdk.Config - ConfigurationDescriptor config = 1; -} - -// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC -message GetQueryServicesDescriptorRequest {} -// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC -message GetQueryServicesDescriptorResponse { - // queries provides information on the available queryable services - QueryServicesDescriptor queries = 1; -} - -// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC -message GetTxDescriptorRequest {} -// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC -message GetTxDescriptorResponse { - // tx provides information on msgs that can be forwarded to the application - // alongside the accepted transaction protobuf type - TxDescriptor tx = 1; -} - -// QueryServicesDescriptor contains the list of cosmos-sdk queriable services -message QueryServicesDescriptor { - // query_services is a list of cosmos-sdk QueryServiceDescriptor - repeated QueryServiceDescriptor query_services = 1; -} - -// QueryServiceDescriptor describes a cosmos-sdk queryable service -message QueryServiceDescriptor { - // fullname is the protobuf fullname of the service descriptor - string fullname = 1; - // is_module describes if this service is actually exposed by an application's module - bool is_module = 2; - // methods provides a list of query service methods - repeated QueryMethodDescriptor methods = 3; -} - -// QueryMethodDescriptor describes a queryable method of a query service -// no other info is provided beside method name and tendermint queryable path -// because it would be redundant with the grpc reflection service -message QueryMethodDescriptor { - // name is the protobuf name (not fullname) of the method - string name = 1; - // full_query_path is the path that can be used to query - // this method via tendermint abci.Query - string full_query_path = 2; -} diff --git a/third_party/proto/cosmos/base/snapshots/v1beta1/snapshot.proto b/third_party/proto/cosmos/base/snapshots/v1beta1/snapshot.proto deleted file mode 100644 index 1d2365bef..000000000 --- a/third_party/proto/cosmos/base/snapshots/v1beta1/snapshot.proto +++ /dev/null @@ -1,57 +0,0 @@ -syntax = "proto3"; -package cosmos.base.snapshots.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/snapshots/types"; - -// Snapshot contains Tendermint state sync snapshot info. -message Snapshot { - uint64 height = 1; - uint32 format = 2; - uint32 chunks = 3; - bytes hash = 4; - Metadata metadata = 5 [(gogoproto.nullable) = false]; -} - -// Metadata contains SDK-specific snapshot metadata. -message Metadata { - repeated bytes chunk_hashes = 1; // SHA-256 chunk hashes -} - -// SnapshotItem is an item contained in a rootmulti.Store snapshot. -message SnapshotItem { - // item is the specific type of snapshot item. - oneof item { - SnapshotStoreItem store = 1; - SnapshotIAVLItem iavl = 2 [(gogoproto.customname) = "IAVL"]; - SnapshotExtensionMeta extension = 3; - SnapshotExtensionPayload extension_payload = 4; - } -} - -// SnapshotStoreItem contains metadata about a snapshotted store. -message SnapshotStoreItem { - string name = 1; -} - -// SnapshotIAVLItem is an exported IAVL node. -message SnapshotIAVLItem { - bytes key = 1; - bytes value = 2; - // version is block height - int64 version = 3; - // height is depth of the tree. - int32 height = 4; -} - -// SnapshotExtensionMeta contains metadata about an external snapshotter. -message SnapshotExtensionMeta { - string name = 1; - uint32 format = 2; -} - -// SnapshotExtensionPayload contains payloads of an external snapshotter. -message SnapshotExtensionPayload { - bytes payload = 1; -} diff --git a/third_party/proto/cosmos/base/store/v1beta1/commit_info.proto b/third_party/proto/cosmos/base/store/v1beta1/commit_info.proto deleted file mode 100644 index 98a33d30e..000000000 --- a/third_party/proto/cosmos/base/store/v1beta1/commit_info.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; -package cosmos.base.store.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/store/types"; - -// CommitInfo defines commit information used by the multi-store when committing -// a version/height. -message CommitInfo { - int64 version = 1; - repeated StoreInfo store_infos = 2 [(gogoproto.nullable) = false]; -} - -// StoreInfo defines store-specific commit information. It contains a reference -// between a store name and the commit ID. -message StoreInfo { - string name = 1; - CommitID commit_id = 2 [(gogoproto.nullable) = false]; -} - -// CommitID defines the committment information when a specific store is -// committed. -message CommitID { - option (gogoproto.goproto_stringer) = false; - - int64 version = 1; - bytes hash = 2; -} diff --git a/third_party/proto/cosmos/base/store/v1beta1/listening.proto b/third_party/proto/cosmos/base/store/v1beta1/listening.proto deleted file mode 100644 index 359997109..000000000 --- a/third_party/proto/cosmos/base/store/v1beta1/listening.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; -package cosmos.base.store.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/store/types"; - -// StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes) -// It optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and -// Deletes -// -// Since: cosmos-sdk 0.43 -message StoreKVPair { - string store_key = 1; // the store key for the KVStore this pair originates from - bool delete = 2; // true indicates a delete operation, false indicates a set operation - bytes key = 3; - bytes value = 4; -} diff --git a/third_party/proto/cosmos/base/tendermint/v1beta1/query.proto b/third_party/proto/cosmos/base/tendermint/v1beta1/query.proto deleted file mode 100644 index 3c31877aa..000000000 --- a/third_party/proto/cosmos/base/tendermint/v1beta1/query.proto +++ /dev/null @@ -1,138 +0,0 @@ -syntax = "proto3"; -package cosmos.base.tendermint.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; -import "tendermint/p2p/types.proto"; -import "tendermint/types/block.proto"; -import "tendermint/types/types.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/tmservice"; - -// Service defines the gRPC querier service for tendermint queries. -service Service { - // GetNodeInfo queries the current node info. - rpc GetNodeInfo(GetNodeInfoRequest) returns (GetNodeInfoResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/node_info"; - } - // GetSyncing queries node syncing. - rpc GetSyncing(GetSyncingRequest) returns (GetSyncingResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/syncing"; - } - // GetLatestBlock returns the latest block. - rpc GetLatestBlock(GetLatestBlockRequest) returns (GetLatestBlockResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/blocks/latest"; - } - // GetBlockByHeight queries block for given height. - rpc GetBlockByHeight(GetBlockByHeightRequest) returns (GetBlockByHeightResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/blocks/{height}"; - } - - // GetLatestValidatorSet queries latest validator-set. - rpc GetLatestValidatorSet(GetLatestValidatorSetRequest) returns (GetLatestValidatorSetResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/validatorsets/latest"; - } - // GetValidatorSetByHeight queries validator-set at a given height. - rpc GetValidatorSetByHeight(GetValidatorSetByHeightRequest) returns (GetValidatorSetByHeightResponse) { - option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/validatorsets/{height}"; - } -} - -// GetValidatorSetByHeightRequest is the request type for the Query/GetValidatorSetByHeight RPC method. -message GetValidatorSetByHeightRequest { - int64 height = 1; - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method. -message GetValidatorSetByHeightResponse { - int64 block_height = 1; - repeated Validator validators = 2; - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 3; -} - -// GetLatestValidatorSetRequest is the request type for the Query/GetValidatorSetByHeight RPC method. -message GetLatestValidatorSetRequest { - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method. -message GetLatestValidatorSetResponse { - int64 block_height = 1; - repeated Validator validators = 2; - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 3; -} - -// Validator is the type for the validator-set. -message Validator { - string address = 1; - google.protobuf.Any pub_key = 2; - int64 voting_power = 3; - int64 proposer_priority = 4; -} - -// GetBlockByHeightRequest is the request type for the Query/GetBlockByHeight RPC method. -message GetBlockByHeightRequest { - int64 height = 1; -} - -// GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method. -message GetBlockByHeightResponse { - .tendermint.types.BlockID block_id = 1; - .tendermint.types.Block block = 2; -} - -// GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC method. -message GetLatestBlockRequest {} - -// GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method. -message GetLatestBlockResponse { - .tendermint.types.BlockID block_id = 1; - .tendermint.types.Block block = 2; -} - -// GetSyncingRequest is the request type for the Query/GetSyncing RPC method. -message GetSyncingRequest {} - -// GetSyncingResponse is the response type for the Query/GetSyncing RPC method. -message GetSyncingResponse { - bool syncing = 1; -} - -// GetNodeInfoRequest is the request type for the Query/GetNodeInfo RPC method. -message GetNodeInfoRequest {} - -// GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC method. -message GetNodeInfoResponse { - .tendermint.p2p.DefaultNodeInfo default_node_info = 1; - VersionInfo application_version = 2; -} - -// VersionInfo is the type for the GetNodeInfoResponse message. -message VersionInfo { - string name = 1; - string app_name = 2; - string version = 3; - string git_commit = 4; - string build_tags = 5; - string go_version = 6; - repeated Module build_deps = 7; - // Since: cosmos-sdk 0.43 - string cosmos_sdk_version = 8; -} - -// Module is the type for VersionInfo -message Module { - // module path - string path = 1; - // module version - string version = 2; - // checksum - string sum = 3; -} diff --git a/third_party/proto/cosmos/base/v1beta1/coin.proto b/third_party/proto/cosmos/base/v1beta1/coin.proto deleted file mode 100644 index fab75284b..000000000 --- a/third_party/proto/cosmos/base/v1beta1/coin.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax = "proto3"; -package cosmos.base.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types"; -option (gogoproto.goproto_stringer_all) = false; -option (gogoproto.stringer_all) = false; - -// Coin defines a token with a denomination and an amount. -// -// NOTE: The amount field is an Int which implements the custom method -// signatures required by gogoproto. -message Coin { - option (gogoproto.equal) = true; - - string denom = 1; - string amount = 2 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false]; -} - -// DecCoin defines a token with a denomination and a decimal amount. -// -// NOTE: The amount field is an Dec which implements the custom method -// signatures required by gogoproto. -message DecCoin { - option (gogoproto.equal) = true; - - string denom = 1; - string amount = 2 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false]; -} - -// IntProto defines a Protobuf wrapper around an Int object. -message IntProto { - string int = 1 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false]; -} - -// DecProto defines a Protobuf wrapper around a Dec object. -message DecProto { - string dec = 1 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/capability/v1beta1/capability.proto b/third_party/proto/cosmos/capability/v1beta1/capability.proto deleted file mode 100644 index 1c8332f34..000000000 --- a/third_party/proto/cosmos/capability/v1beta1/capability.proto +++ /dev/null @@ -1,30 +0,0 @@ -syntax = "proto3"; -package cosmos.capability.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/capability/types"; - -import "gogoproto/gogo.proto"; - -// Capability defines an implementation of an object capability. The index -// provided to a Capability must be globally unique. -message Capability { - option (gogoproto.goproto_stringer) = false; - - uint64 index = 1 [(gogoproto.moretags) = "yaml:\"index\""]; -} - -// Owner defines a single capability owner. An owner is defined by the name of -// capability and the module name. -message Owner { - option (gogoproto.goproto_stringer) = false; - option (gogoproto.goproto_getters) = false; - - string module = 1 [(gogoproto.moretags) = "yaml:\"module\""]; - string name = 2 [(gogoproto.moretags) = "yaml:\"name\""]; -} - -// CapabilityOwners defines a set of owners of a single Capability. The set of -// owners must be unique. -message CapabilityOwners { - repeated Owner owners = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/capability/v1beta1/genesis.proto b/third_party/proto/cosmos/capability/v1beta1/genesis.proto deleted file mode 100644 index 05bb0afc4..000000000 --- a/third_party/proto/cosmos/capability/v1beta1/genesis.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; -package cosmos.capability.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/capability/v1beta1/capability.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/capability/types"; - -// GenesisOwners defines the capability owners with their corresponding index. -message GenesisOwners { - // index is the index of the capability owner. - uint64 index = 1; - - // index_owners are the owners at the given index. - CapabilityOwners index_owners = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"index_owners\""]; -} - -// GenesisState defines the capability module's genesis state. -message GenesisState { - // index is the capability global index. - uint64 index = 1; - - // owners represents a map from index to owners of the capability index - // index key is string to allow amino marshalling. - repeated GenesisOwners owners = 2 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/crisis/v1beta1/genesis.proto b/third_party/proto/cosmos/crisis/v1beta1/genesis.proto deleted file mode 100644 index 5b0ff7ec7..000000000 --- a/third_party/proto/cosmos/crisis/v1beta1/genesis.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; -package cosmos.crisis.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/crisis/types"; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -// GenesisState defines the crisis module's genesis state. -message GenesisState { - // constant_fee is the fee used to verify the invariant in the crisis - // module. - cosmos.base.v1beta1.Coin constant_fee = 3 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"constant_fee\""]; -} diff --git a/third_party/proto/cosmos/crisis/v1beta1/tx.proto b/third_party/proto/cosmos/crisis/v1beta1/tx.proto deleted file mode 100644 index 26457ad6d..000000000 --- a/third_party/proto/cosmos/crisis/v1beta1/tx.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package cosmos.crisis.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/crisis/types"; - -import "gogoproto/gogo.proto"; - -// Msg defines the bank Msg service. -service Msg { - // VerifyInvariant defines a method to verify a particular invariance. - rpc VerifyInvariant(MsgVerifyInvariant) returns (MsgVerifyInvariantResponse); -} - -// MsgVerifyInvariant represents a message to verify a particular invariance. -message MsgVerifyInvariant { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string sender = 1; - string invariant_module_name = 2 [(gogoproto.moretags) = "yaml:\"invariant_module_name\""]; - string invariant_route = 3 [(gogoproto.moretags) = "yaml:\"invariant_route\""]; -} - -// MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type. -message MsgVerifyInvariantResponse {} diff --git a/third_party/proto/cosmos/crypto/ed25519/keys.proto b/third_party/proto/cosmos/crypto/ed25519/keys.proto deleted file mode 100644 index 6ffec3448..000000000 --- a/third_party/proto/cosmos/crypto/ed25519/keys.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; -package cosmos.crypto.ed25519; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"; - -// PubKey is an ed25519 public key for handling Tendermint keys in SDK. -// It's needed for Any serialization and SDK compatibility. -// It must not be used in a non Tendermint key context because it doesn't implement -// ADR-28. Nevertheless, you will like to use ed25519 in app user level -// then you must create a new proto message and follow ADR-28 for Address construction. -message PubKey { - option (gogoproto.goproto_stringer) = false; - - bytes key = 1 [(gogoproto.casttype) = "crypto/ed25519.PublicKey"]; -} - -// Deprecated: PrivKey defines a ed25519 private key. -// NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context. -message PrivKey { - bytes key = 1 [(gogoproto.casttype) = "crypto/ed25519.PrivateKey"]; -} diff --git a/third_party/proto/cosmos/crypto/multisig/keys.proto b/third_party/proto/cosmos/crypto/multisig/keys.proto deleted file mode 100644 index f8398e805..000000000 --- a/third_party/proto/cosmos/crypto/multisig/keys.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; -package cosmos.crypto.multisig; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/multisig"; - -// LegacyAminoPubKey specifies a public key type -// which nests multiple public keys and a threshold, -// it uses legacy amino address rules. -message LegacyAminoPubKey { - option (gogoproto.goproto_getters) = false; - - uint32 threshold = 1 [(gogoproto.moretags) = "yaml:\"threshold\""]; - repeated google.protobuf.Any public_keys = 2 - [(gogoproto.customname) = "PubKeys", (gogoproto.moretags) = "yaml:\"pubkeys\""]; -} diff --git a/third_party/proto/cosmos/crypto/multisig/v1beta1/multisig.proto b/third_party/proto/cosmos/crypto/multisig/v1beta1/multisig.proto deleted file mode 100644 index bf671f171..000000000 --- a/third_party/proto/cosmos/crypto/multisig/v1beta1/multisig.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package cosmos.crypto.multisig.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/crypto/types"; - -// MultiSignature wraps the signatures from a multisig.LegacyAminoPubKey. -// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers -// signed and with which modes. -message MultiSignature { - option (gogoproto.goproto_unrecognized) = true; - repeated bytes signatures = 1; -} - -// CompactBitArray is an implementation of a space efficient bit array. -// This is used to ensure that the encoded data takes up a minimal amount of -// space after proto encoding. -// This is not thread safe, and is not intended for concurrent usage. -message CompactBitArray { - option (gogoproto.goproto_stringer) = false; - - uint32 extra_bits_stored = 1; - bytes elems = 2; -} diff --git a/third_party/proto/cosmos/crypto/secp256k1/keys.proto b/third_party/proto/cosmos/crypto/secp256k1/keys.proto deleted file mode 100644 index a22725713..000000000 --- a/third_party/proto/cosmos/crypto/secp256k1/keys.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; -package cosmos.crypto.secp256k1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"; - -// PubKey defines a secp256k1 public key -// Key is the compressed form of the pubkey. The first byte depends is a 0x02 byte -// if the y-coordinate is the lexicographically largest of the two associated with -// the x-coordinate. Otherwise the first byte is a 0x03. -// This prefix is followed with the x-coordinate. -message PubKey { - option (gogoproto.goproto_stringer) = false; - - bytes key = 1; -} - -// PrivKey defines a secp256k1 private key. -message PrivKey { - bytes key = 1; -} diff --git a/third_party/proto/cosmos/crypto/secp256r1/keys.proto b/third_party/proto/cosmos/crypto/secp256r1/keys.proto deleted file mode 100644 index 2e96c6e3c..000000000 --- a/third_party/proto/cosmos/crypto/secp256r1/keys.proto +++ /dev/null @@ -1,23 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.crypto.secp256r1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/secp256r1"; -option (gogoproto.messagename_all) = true; -option (gogoproto.goproto_stringer_all) = false; -option (gogoproto.goproto_getters_all) = false; - -// PubKey defines a secp256r1 ECDSA public key. -message PubKey { - // Point on secp256r1 curve in a compressed representation as specified in section - // 4.3.6 of ANSI X9.62: https://webstore.ansi.org/standards/ascx9/ansix9621998 - bytes key = 1 [(gogoproto.customtype) = "ecdsaPK"]; -} - -// PrivKey defines a secp256r1 ECDSA private key. -message PrivKey { - // secret number serialized using big-endian encoding - bytes secret = 1 [(gogoproto.customtype) = "ecdsaSK"]; -} diff --git a/third_party/proto/cosmos/distribution/v1beta1/distribution.proto b/third_party/proto/cosmos/distribution/v1beta1/distribution.proto deleted file mode 100644 index ae98ec0b9..000000000 --- a/third_party/proto/cosmos/distribution/v1beta1/distribution.proto +++ /dev/null @@ -1,157 +0,0 @@ -syntax = "proto3"; -package cosmos.distribution.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -// Params defines the set of params for the distribution module. -message Params { - option (gogoproto.goproto_stringer) = false; - string community_tax = 1 [ - (gogoproto.moretags) = "yaml:\"community_tax\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - string base_proposer_reward = 2 [ - (gogoproto.moretags) = "yaml:\"base_proposer_reward\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - string bonus_proposer_reward = 3 [ - (gogoproto.moretags) = "yaml:\"bonus_proposer_reward\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - bool withdraw_addr_enabled = 4 [(gogoproto.moretags) = "yaml:\"withdraw_addr_enabled\""]; -} - -// ValidatorHistoricalRewards represents historical rewards for a validator. -// Height is implicit within the store key. -// Cumulative reward ratio is the sum from the zeroeth period -// until this period of rewards / tokens, per the spec. -// The reference count indicates the number of objects -// which might need to reference this historical entry at any point. -// ReferenceCount = -// number of outstanding delegations which ended the associated period (and -// might need to read that record) -// + number of slashes which ended the associated period (and might need to -// read that record) -// + one per validator for the zeroeth period, set on initialization -message ValidatorHistoricalRewards { - repeated cosmos.base.v1beta1.DecCoin cumulative_reward_ratio = 1 [ - (gogoproto.moretags) = "yaml:\"cumulative_reward_ratio\"", - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", - (gogoproto.nullable) = false - ]; - uint32 reference_count = 2 [(gogoproto.moretags) = "yaml:\"reference_count\""]; -} - -// ValidatorCurrentRewards represents current rewards and current -// period for a validator kept as a running counter and incremented -// each block as long as the validator's tokens remain constant. -message ValidatorCurrentRewards { - repeated cosmos.base.v1beta1.DecCoin rewards = 1 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false]; - uint64 period = 2; -} - -// ValidatorAccumulatedCommission represents accumulated commission -// for a validator kept as a running counter, can be withdrawn at any time. -message ValidatorAccumulatedCommission { - repeated cosmos.base.v1beta1.DecCoin commission = 1 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false]; -} - -// ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards -// for a validator inexpensive to track, allows simple sanity checks. -message ValidatorOutstandingRewards { - repeated cosmos.base.v1beta1.DecCoin rewards = 1 [ - (gogoproto.moretags) = "yaml:\"rewards\"", - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", - (gogoproto.nullable) = false - ]; -} - -// ValidatorSlashEvent represents a validator slash event. -// Height is implicit within the store key. -// This is needed to calculate appropriate amount of staking tokens -// for delegations which are withdrawn after a slash has occurred. -message ValidatorSlashEvent { - uint64 validator_period = 1 [(gogoproto.moretags) = "yaml:\"validator_period\""]; - string fraction = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; -} - -// ValidatorSlashEvents is a collection of ValidatorSlashEvent messages. -message ValidatorSlashEvents { - option (gogoproto.goproto_stringer) = false; - repeated ValidatorSlashEvent validator_slash_events = 1 - [(gogoproto.moretags) = "yaml:\"validator_slash_events\"", (gogoproto.nullable) = false]; -} - -// FeePool is the global fee pool for distribution. -message FeePool { - repeated cosmos.base.v1beta1.DecCoin community_pool = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", - (gogoproto.moretags) = "yaml:\"community_pool\"" - ]; -} - -// CommunityPoolSpendProposal details a proposal for use of community funds, -// together with how many coins are proposed to be spent, and to which -// recipient account. -message CommunityPoolSpendProposal { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - string title = 1; - string description = 2; - string recipient = 3; - repeated cosmos.base.v1beta1.Coin amount = 4 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// DelegatorStartingInfo represents the starting info for a delegator reward -// period. It tracks the previous validator period, the delegation's amount of -// staking token, and the creation height (to check later on if any slashes have -// occurred). NOTE: Even though validators are slashed to whole staking tokens, -// the delegators within the validator may be left with less than a full token, -// thus sdk.Dec is used. -message DelegatorStartingInfo { - uint64 previous_period = 1 [(gogoproto.moretags) = "yaml:\"previous_period\""]; - string stake = 2 [ - (gogoproto.moretags) = "yaml:\"stake\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - uint64 height = 3 [(gogoproto.moretags) = "yaml:\"creation_height\"", (gogoproto.jsontag) = "creation_height"]; -} - -// DelegationDelegatorReward represents the properties -// of a delegator's delegation reward. -message DelegationDelegatorReward { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = true; - - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - repeated cosmos.base.v1beta1.DecCoin reward = 2 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false]; -} - -// CommunityPoolSpendProposalWithDeposit defines a CommunityPoolSpendProposal -// with a deposit -message CommunityPoolSpendProposalWithDeposit { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = true; - - string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; - string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - string recipient = 3 [(gogoproto.moretags) = "yaml:\"recipient\""]; - string amount = 4 [(gogoproto.moretags) = "yaml:\"amount\""]; - string deposit = 5 [(gogoproto.moretags) = "yaml:\"deposit\""]; -} diff --git a/third_party/proto/cosmos/distribution/v1beta1/genesis.proto b/third_party/proto/cosmos/distribution/v1beta1/genesis.proto deleted file mode 100644 index c0b17cdf1..000000000 --- a/third_party/proto/cosmos/distribution/v1beta1/genesis.proto +++ /dev/null @@ -1,155 +0,0 @@ -syntax = "proto3"; -package cosmos.distribution.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/distribution/v1beta1/distribution.proto"; - -// DelegatorWithdrawInfo is the address for where distributions rewards are -// withdrawn to by default this struct is only used at genesis to feed in -// default withdraw addresses. -message DelegatorWithdrawInfo { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_address is the address of the delegator. - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - - // withdraw_address is the address to withdraw the delegation rewards to. - string withdraw_address = 2 [(gogoproto.moretags) = "yaml:\"withdraw_address\""]; -} - -// ValidatorOutstandingRewardsRecord is used for import/export via genesis json. -message ValidatorOutstandingRewardsRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validator_address is the address of the validator. - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - // outstanding_rewards represents the oustanding rewards of a validator. - repeated cosmos.base.v1beta1.DecCoin outstanding_rewards = 2 [ - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"outstanding_rewards\"" - ]; -} - -// ValidatorAccumulatedCommissionRecord is used for import / export via genesis -// json. -message ValidatorAccumulatedCommissionRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validator_address is the address of the validator. - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - // accumulated is the accumulated commission of a validator. - ValidatorAccumulatedCommission accumulated = 2 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"accumulated\""]; -} - -// ValidatorHistoricalRewardsRecord is used for import / export via genesis -// json. -message ValidatorHistoricalRewardsRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validator_address is the address of the validator. - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - // period defines the period the historical rewards apply to. - uint64 period = 2; - - // rewards defines the historical rewards of a validator. - ValidatorHistoricalRewards rewards = 3 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"rewards\""]; -} - -// ValidatorCurrentRewardsRecord is used for import / export via genesis json. -message ValidatorCurrentRewardsRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validator_address is the address of the validator. - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - // rewards defines the current rewards of a validator. - ValidatorCurrentRewards rewards = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"rewards\""]; -} - -// DelegatorStartingInfoRecord used for import / export via genesis json. -message DelegatorStartingInfoRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_address is the address of the delegator. - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - - // validator_address is the address of the validator. - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - - // starting_info defines the starting info of a delegator. - DelegatorStartingInfo starting_info = 3 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"starting_info\""]; -} - -// ValidatorSlashEventRecord is used for import / export via genesis json. -message ValidatorSlashEventRecord { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validator_address is the address of the validator. - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - // height defines the block height at which the slash event occured. - uint64 height = 2; - // period is the period of the slash event. - uint64 period = 3; - // validator_slash_event describes the slash event. - ValidatorSlashEvent validator_slash_event = 4 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"event\""]; -} - -// GenesisState defines the distribution module's genesis state. -message GenesisState { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // params defines all the paramaters of the module. - Params params = 1 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"params\""]; - - // fee_pool defines the fee pool at genesis. - FeePool fee_pool = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"fee_pool\""]; - - // fee_pool defines the delegator withdraw infos at genesis. - repeated DelegatorWithdrawInfo delegator_withdraw_infos = 3 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"delegator_withdraw_infos\""]; - - // fee_pool defines the previous proposer at genesis. - string previous_proposer = 4 [(gogoproto.moretags) = "yaml:\"previous_proposer\""]; - - // fee_pool defines the outstanding rewards of all validators at genesis. - repeated ValidatorOutstandingRewardsRecord outstanding_rewards = 5 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"outstanding_rewards\""]; - - // fee_pool defines the accumulated commisions of all validators at genesis. - repeated ValidatorAccumulatedCommissionRecord validator_accumulated_commissions = 6 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_accumulated_commissions\""]; - - // fee_pool defines the historical rewards of all validators at genesis. - repeated ValidatorHistoricalRewardsRecord validator_historical_rewards = 7 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_historical_rewards\""]; - - // fee_pool defines the current rewards of all validators at genesis. - repeated ValidatorCurrentRewardsRecord validator_current_rewards = 8 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_current_rewards\""]; - - // fee_pool defines the delegator starting infos at genesis. - repeated DelegatorStartingInfoRecord delegator_starting_infos = 9 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"delegator_starting_infos\""]; - - // fee_pool defines the validator slash events at genesis. - repeated ValidatorSlashEventRecord validator_slash_events = 10 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_slash_events\""]; -} diff --git a/third_party/proto/cosmos/distribution/v1beta1/query.proto b/third_party/proto/cosmos/distribution/v1beta1/query.proto deleted file mode 100644 index 2991218d8..000000000 --- a/third_party/proto/cosmos/distribution/v1beta1/query.proto +++ /dev/null @@ -1,218 +0,0 @@ -syntax = "proto3"; -package cosmos.distribution.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/distribution/v1beta1/distribution.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types"; - -// Query defines the gRPC querier service for distribution module. -service Query { - // Params queries params of the distribution module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/params"; - } - - // ValidatorOutstandingRewards queries rewards of a validator address. - rpc ValidatorOutstandingRewards(QueryValidatorOutstandingRewardsRequest) - returns (QueryValidatorOutstandingRewardsResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/" - "{validator_address}/outstanding_rewards"; - } - - // ValidatorCommission queries accumulated commission for a validator. - rpc ValidatorCommission(QueryValidatorCommissionRequest) returns (QueryValidatorCommissionResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/" - "{validator_address}/commission"; - } - - // ValidatorSlashes queries slash events of a validator. - rpc ValidatorSlashes(QueryValidatorSlashesRequest) returns (QueryValidatorSlashesResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/{validator_address}/slashes"; - } - - // DelegationRewards queries the total rewards accrued by a delegation. - rpc DelegationRewards(QueryDelegationRewardsRequest) returns (QueryDelegationRewardsResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/" - "{validator_address}"; - } - - // DelegationTotalRewards queries the total rewards accrued by a each - // validator. - rpc DelegationTotalRewards(QueryDelegationTotalRewardsRequest) returns (QueryDelegationTotalRewardsResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards"; - } - - // DelegatorValidators queries the validators of a delegator. - rpc DelegatorValidators(QueryDelegatorValidatorsRequest) returns (QueryDelegatorValidatorsResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/" - "{delegator_address}/validators"; - } - - // DelegatorWithdrawAddress queries withdraw address of a delegator. - rpc DelegatorWithdrawAddress(QueryDelegatorWithdrawAddressRequest) returns (QueryDelegatorWithdrawAddressResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/" - "{delegator_address}/withdraw_address"; - } - - // CommunityPool queries the community pool coins. - rpc CommunityPool(QueryCommunityPoolRequest) returns (QueryCommunityPoolResponse) { - option (google.api.http).get = "/cosmos/distribution/v1beta1/community_pool"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1 [(gogoproto.nullable) = false]; -} - -// QueryValidatorOutstandingRewardsRequest is the request type for the -// Query/ValidatorOutstandingRewards RPC method. -message QueryValidatorOutstandingRewardsRequest { - // validator_address defines the validator address to query for. - string validator_address = 1; -} - -// QueryValidatorOutstandingRewardsResponse is the response type for the -// Query/ValidatorOutstandingRewards RPC method. -message QueryValidatorOutstandingRewardsResponse { - ValidatorOutstandingRewards rewards = 1 [(gogoproto.nullable) = false]; -} - -// QueryValidatorCommissionRequest is the request type for the -// Query/ValidatorCommission RPC method -message QueryValidatorCommissionRequest { - // validator_address defines the validator address to query for. - string validator_address = 1; -} - -// QueryValidatorCommissionResponse is the response type for the -// Query/ValidatorCommission RPC method -message QueryValidatorCommissionResponse { - // commission defines the commision the validator received. - ValidatorAccumulatedCommission commission = 1 [(gogoproto.nullable) = false]; -} - -// QueryValidatorSlashesRequest is the request type for the -// Query/ValidatorSlashes RPC method -message QueryValidatorSlashesRequest { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = true; - - // validator_address defines the validator address to query for. - string validator_address = 1; - // starting_height defines the optional starting height to query the slashes. - uint64 starting_height = 2; - // starting_height defines the optional ending height to query the slashes. - uint64 ending_height = 3; - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 4; -} - -// QueryValidatorSlashesResponse is the response type for the -// Query/ValidatorSlashes RPC method. -message QueryValidatorSlashesResponse { - // slashes defines the slashes the validator received. - repeated ValidatorSlashEvent slashes = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDelegationRewardsRequest is the request type for the -// Query/DelegationRewards RPC method. -message QueryDelegationRewardsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_address defines the delegator address to query for. - string delegator_address = 1; - // validator_address defines the validator address to query for. - string validator_address = 2; -} - -// QueryDelegationRewardsResponse is the response type for the -// Query/DelegationRewards RPC method. -message QueryDelegationRewardsResponse { - // rewards defines the rewards accrued by a delegation. - repeated cosmos.base.v1beta1.DecCoin rewards = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins"]; -} - -// QueryDelegationTotalRewardsRequest is the request type for the -// Query/DelegationTotalRewards RPC method. -message QueryDelegationTotalRewardsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - // delegator_address defines the delegator address to query for. - string delegator_address = 1; -} - -// QueryDelegationTotalRewardsResponse is the response type for the -// Query/DelegationTotalRewards RPC method. -message QueryDelegationTotalRewardsResponse { - // rewards defines all the rewards accrued by a delegator. - repeated DelegationDelegatorReward rewards = 1 [(gogoproto.nullable) = false]; - // total defines the sum of all the rewards. - repeated cosmos.base.v1beta1.DecCoin total = 2 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins"]; -} - -// QueryDelegatorValidatorsRequest is the request type for the -// Query/DelegatorValidators RPC method. -message QueryDelegatorValidatorsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_address defines the delegator address to query for. - string delegator_address = 1; -} - -// QueryDelegatorValidatorsResponse is the response type for the -// Query/DelegatorValidators RPC method. -message QueryDelegatorValidatorsResponse { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // validators defines the validators a delegator is delegating for. - repeated string validators = 1; -} - -// QueryDelegatorWithdrawAddressRequest is the request type for the -// Query/DelegatorWithdrawAddress RPC method. -message QueryDelegatorWithdrawAddressRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_address defines the delegator address to query for. - string delegator_address = 1; -} - -// QueryDelegatorWithdrawAddressResponse is the response type for the -// Query/DelegatorWithdrawAddress RPC method. -message QueryDelegatorWithdrawAddressResponse { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // withdraw_address defines the delegator address to query for. - string withdraw_address = 1; -} - -// QueryCommunityPoolRequest is the request type for the Query/CommunityPool RPC -// method. -message QueryCommunityPoolRequest {} - -// QueryCommunityPoolResponse is the response type for the Query/CommunityPool -// RPC method. -message QueryCommunityPoolResponse { - // pool defines community pool's coins. - repeated cosmos.base.v1beta1.DecCoin pool = 1 - [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/distribution/v1beta1/tx.proto b/third_party/proto/cosmos/distribution/v1beta1/tx.proto deleted file mode 100644 index e6ce478bc..000000000 --- a/third_party/proto/cosmos/distribution/v1beta1/tx.proto +++ /dev/null @@ -1,79 +0,0 @@ -syntax = "proto3"; -package cosmos.distribution.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -// Msg defines the distribution Msg service. -service Msg { - // SetWithdrawAddress defines a method to change the withdraw address - // for a delegator (or validator self-delegation). - rpc SetWithdrawAddress(MsgSetWithdrawAddress) returns (MsgSetWithdrawAddressResponse); - - // WithdrawDelegatorReward defines a method to withdraw rewards of delegator - // from a single validator. - rpc WithdrawDelegatorReward(MsgWithdrawDelegatorReward) returns (MsgWithdrawDelegatorRewardResponse); - - // WithdrawValidatorCommission defines a method to withdraw the - // full commission to the validator address. - rpc WithdrawValidatorCommission(MsgWithdrawValidatorCommission) returns (MsgWithdrawValidatorCommissionResponse); - - // FundCommunityPool defines a method to allow an account to directly - // fund the community pool. - rpc FundCommunityPool(MsgFundCommunityPool) returns (MsgFundCommunityPoolResponse); -} - -// MsgSetWithdrawAddress sets the withdraw address for -// a delegator (or validator self-delegation). -message MsgSetWithdrawAddress { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string withdraw_address = 2 [(gogoproto.moretags) = "yaml:\"withdraw_address\""]; -} - -// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response type. -message MsgSetWithdrawAddressResponse {} - -// MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator -// from a single validator. -message MsgWithdrawDelegatorReward { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; -} - -// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward response type. -message MsgWithdrawDelegatorRewardResponse {} - -// MsgWithdrawValidatorCommission withdraws the full commission to the validator -// address. -message MsgWithdrawValidatorCommission { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""]; -} - -// MsgWithdrawValidatorCommissionResponse defines the Msg/WithdrawValidatorCommission response type. -message MsgWithdrawValidatorCommissionResponse {} - -// MsgFundCommunityPool allows an account to directly -// fund the community pool. -message MsgFundCommunityPool { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - repeated cosmos.base.v1beta1.Coin amount = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - string depositor = 2; -} - -// MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type. -message MsgFundCommunityPoolResponse {} diff --git a/third_party/proto/cosmos/evidence/v1beta1/evidence.proto b/third_party/proto/cosmos/evidence/v1beta1/evidence.proto deleted file mode 100644 index 14612c314..000000000 --- a/third_party/proto/cosmos/evidence/v1beta1/evidence.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; -package cosmos.evidence.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; - -// Equivocation implements the Evidence interface and defines evidence of double -// signing misbehavior. -message Equivocation { - option (gogoproto.goproto_stringer) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.equal) = false; - - int64 height = 1; - google.protobuf.Timestamp time = 2 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; - int64 power = 3; - string consensus_address = 4 [(gogoproto.moretags) = "yaml:\"consensus_address\""]; -} \ No newline at end of file diff --git a/third_party/proto/cosmos/evidence/v1beta1/genesis.proto b/third_party/proto/cosmos/evidence/v1beta1/genesis.proto deleted file mode 100644 index 199f446f7..000000000 --- a/third_party/proto/cosmos/evidence/v1beta1/genesis.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; -package cosmos.evidence.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types"; - -import "google/protobuf/any.proto"; - -// GenesisState defines the evidence module's genesis state. -message GenesisState { - // evidence defines all the evidence at genesis. - repeated google.protobuf.Any evidence = 1; -} diff --git a/third_party/proto/cosmos/evidence/v1beta1/query.proto b/third_party/proto/cosmos/evidence/v1beta1/query.proto deleted file mode 100644 index eda00544c..000000000 --- a/third_party/proto/cosmos/evidence/v1beta1/query.proto +++ /dev/null @@ -1,51 +0,0 @@ -syntax = "proto3"; -package cosmos.evidence.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types"; - -// Query defines the gRPC querier service. -service Query { - // Evidence queries evidence based on evidence hash. - rpc Evidence(QueryEvidenceRequest) returns (QueryEvidenceResponse) { - option (google.api.http).get = "/cosmos/evidence/v1beta1/evidence/{evidence_hash}"; - } - - // AllEvidence queries all evidence. - rpc AllEvidence(QueryAllEvidenceRequest) returns (QueryAllEvidenceResponse) { - option (google.api.http).get = "/cosmos/evidence/v1beta1/evidence"; - } -} - -// QueryEvidenceRequest is the request type for the Query/Evidence RPC method. -message QueryEvidenceRequest { - // evidence_hash defines the hash of the requested evidence. - bytes evidence_hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"]; -} - -// QueryEvidenceResponse is the response type for the Query/Evidence RPC method. -message QueryEvidenceResponse { - // evidence returns the requested evidence. - google.protobuf.Any evidence = 1; -} - -// QueryEvidenceRequest is the request type for the Query/AllEvidence RPC -// method. -message QueryAllEvidenceRequest { - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC -// method. -message QueryAllEvidenceResponse { - // evidence returns all evidences. - repeated google.protobuf.Any evidence = 1; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} diff --git a/third_party/proto/cosmos/evidence/v1beta1/tx.proto b/third_party/proto/cosmos/evidence/v1beta1/tx.proto deleted file mode 100644 index 38795f25d..000000000 --- a/third_party/proto/cosmos/evidence/v1beta1/tx.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; -package cosmos.evidence.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "cosmos_proto/cosmos.proto"; - -// Msg defines the evidence Msg service. -service Msg { - // SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or - // counterfactual signing. - rpc SubmitEvidence(MsgSubmitEvidence) returns (MsgSubmitEvidenceResponse); -} - -// MsgSubmitEvidence represents a message that supports submitting arbitrary -// Evidence of misbehavior such as equivocation or counterfactual signing. -message MsgSubmitEvidence { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string submitter = 1; - google.protobuf.Any evidence = 2 [(cosmos_proto.accepts_interface) = "Evidence"]; -} - -// MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type. -message MsgSubmitEvidenceResponse { - // hash defines the hash of the evidence. - bytes hash = 4; -} diff --git a/third_party/proto/cosmos/feegrant/v1beta1/feegrant.proto b/third_party/proto/cosmos/feegrant/v1beta1/feegrant.proto deleted file mode 100644 index a86691f91..000000000 --- a/third_party/proto/cosmos/feegrant/v1beta1/feegrant.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.feegrant.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/duration.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/feegrant"; - -// BasicAllowance implements Allowance with a one-time grant of tokens -// that optionally expires. The grantee can use up to SpendLimit to cover fees. -message BasicAllowance { - option (cosmos_proto.implements_interface) = "FeeAllowanceI"; - - // spend_limit specifies the maximum amount of tokens that can be spent - // by this allowance and will be updated as tokens are spent. If it is - // empty, there is no spend limit and any amount of coins can be spent. - repeated cosmos.base.v1beta1.Coin spend_limit = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // expiration specifies an optional time when this allowance expires - google.protobuf.Timestamp expiration = 2 [(gogoproto.stdtime) = true]; -} - -// PeriodicAllowance extends Allowance to allow for both a maximum cap, -// as well as a limit per time period. -message PeriodicAllowance { - option (cosmos_proto.implements_interface) = "FeeAllowanceI"; - - // basic specifies a struct of `BasicAllowance` - BasicAllowance basic = 1 [(gogoproto.nullable) = false]; - - // period specifies the time duration in which period_spend_limit coins can - // be spent before that allowance is reset - google.protobuf.Duration period = 2 [(gogoproto.stdduration) = true, (gogoproto.nullable) = false]; - - // period_spend_limit specifies the maximum number of coins that can be spent - // in the period - repeated cosmos.base.v1beta1.Coin period_spend_limit = 3 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // period_can_spend is the number of coins left to be spent before the period_reset time - repeated cosmos.base.v1beta1.Coin period_can_spend = 4 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // period_reset is the time at which this period resets and a new one begins, - // it is calculated from the start time of the first transaction after the - // last period ended - google.protobuf.Timestamp period_reset = 5 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; -} - -// AllowedMsgAllowance creates allowance only for specified message types. -message AllowedMsgAllowance { - option (gogoproto.goproto_getters) = false; - option (cosmos_proto.implements_interface) = "FeeAllowanceI"; - - // allowance can be any of basic and filtered fee allowance. - google.protobuf.Any allowance = 1 [(cosmos_proto.accepts_interface) = "FeeAllowanceI"]; - - // allowed_messages are the messages for which the grantee has the access. - repeated string allowed_messages = 2; -} - -// Grant is stored in the KVStore to record a grant with full context -message Grant { - // granter is the address of the user granting an allowance of their funds. - string granter = 1; - - // grantee is the address of the user being granted an allowance of another user's funds. - string grantee = 2; - - // allowance can be any of basic and filtered fee allowance. - google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = "FeeAllowanceI"]; -} diff --git a/third_party/proto/cosmos/feegrant/v1beta1/genesis.proto b/third_party/proto/cosmos/feegrant/v1beta1/genesis.proto deleted file mode 100644 index 5b1ac4ca5..000000000 --- a/third_party/proto/cosmos/feegrant/v1beta1/genesis.proto +++ /dev/null @@ -1,13 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.feegrant.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/feegrant/v1beta1/feegrant.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/feegrant"; - -// GenesisState contains a set of fee allowances, persisted from the store -message GenesisState { - repeated Grant allowances = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/feegrant/v1beta1/query.proto b/third_party/proto/cosmos/feegrant/v1beta1/query.proto deleted file mode 100644 index 9cf2a4987..000000000 --- a/third_party/proto/cosmos/feegrant/v1beta1/query.proto +++ /dev/null @@ -1,55 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.feegrant.v1beta1; - -import "cosmos/feegrant/v1beta1/feegrant.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "google/api/annotations.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/feegrant"; - -// Query defines the gRPC querier service. -service Query { - - // Allowance returns fee granted to the grantee by the granter. - rpc Allowance(QueryAllowanceRequest) returns (QueryAllowanceResponse) { - option (google.api.http).get = "/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}"; - } - - // Allowances returns all the grants for address. - rpc Allowances(QueryAllowancesRequest) returns (QueryAllowancesResponse) { - option (google.api.http).get = "/cosmos/feegrant/v1beta1/allowances/{grantee}"; - } -} - -// QueryAllowanceRequest is the request type for the Query/Allowance RPC method. -message QueryAllowanceRequest { - // granter is the address of the user granting an allowance of their funds. - string granter = 1; - - // grantee is the address of the user being granted an allowance of another user's funds. - string grantee = 2; -} - -// QueryAllowanceResponse is the response type for the Query/Allowance RPC method. -message QueryAllowanceResponse { - // allowance is a allowance granted for grantee by granter. - cosmos.feegrant.v1beta1.Grant allowance = 1; -} - -// QueryAllowancesRequest is the request type for the Query/Allowances RPC method. -message QueryAllowancesRequest { - string grantee = 1; - - // pagination defines an pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryAllowancesResponse is the response type for the Query/Allowances RPC method. -message QueryAllowancesResponse { - // allowances are allowance's granted for grantee by granter. - repeated cosmos.feegrant.v1beta1.Grant allowances = 1; - - // pagination defines an pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} diff --git a/third_party/proto/cosmos/feegrant/v1beta1/tx.proto b/third_party/proto/cosmos/feegrant/v1beta1/tx.proto deleted file mode 100644 index 2d875e922..000000000 --- a/third_party/proto/cosmos/feegrant/v1beta1/tx.proto +++ /dev/null @@ -1,49 +0,0 @@ -// Since: cosmos-sdk 0.43 -syntax = "proto3"; -package cosmos.feegrant.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "cosmos_proto/cosmos.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/feegrant"; - -// Msg defines the feegrant msg service. -service Msg { - - // GrantAllowance grants fee allowance to the grantee on the granter's - // account with the provided expiration time. - rpc GrantAllowance(MsgGrantAllowance) returns (MsgGrantAllowanceResponse); - - // RevokeAllowance revokes any fee allowance of granter's account that - // has been granted to the grantee. - rpc RevokeAllowance(MsgRevokeAllowance) returns (MsgRevokeAllowanceResponse); -} - -// MsgGrantAllowance adds permission for Grantee to spend up to Allowance -// of fees from the account of Granter. -message MsgGrantAllowance { - // granter is the address of the user granting an allowance of their funds. - string granter = 1; - - // grantee is the address of the user being granted an allowance of another user's funds. - string grantee = 2; - - // allowance can be any of basic and filtered fee allowance. - google.protobuf.Any allowance = 3 [(cosmos_proto.accepts_interface) = "FeeAllowanceI"]; -} - -// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type. -message MsgGrantAllowanceResponse {} - -// MsgRevokeAllowance removes any existing Allowance from Granter to Grantee. -message MsgRevokeAllowance { - // granter is the address of the user granting an allowance of their funds. - string granter = 1; - - // grantee is the address of the user being granted an allowance of another user's funds. - string grantee = 2; -} - -// MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type. -message MsgRevokeAllowanceResponse {} diff --git a/third_party/proto/cosmos/genutil/v1beta1/genesis.proto b/third_party/proto/cosmos/genutil/v1beta1/genesis.proto deleted file mode 100644 index a0207793d..000000000 --- a/third_party/proto/cosmos/genutil/v1beta1/genesis.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; -package cosmos.genutil.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/genutil/types"; - -// GenesisState defines the raw genesis transaction in JSON. -message GenesisState { - // gen_txs defines the genesis transactions. - repeated bytes gen_txs = 1 [ - (gogoproto.casttype) = "encoding/json.RawMessage", - (gogoproto.jsontag) = "gentxs", - (gogoproto.moretags) = "yaml:\"gentxs\"" - ]; -} diff --git a/third_party/proto/cosmos/gov/v1beta1/genesis.proto b/third_party/proto/cosmos/gov/v1beta1/genesis.proto deleted file mode 100644 index a99950044..000000000 --- a/third_party/proto/cosmos/gov/v1beta1/genesis.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -package cosmos.gov.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/gov/v1beta1/gov.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; - -// GenesisState defines the gov module's genesis state. -message GenesisState { - // starting_proposal_id is the ID of the starting proposal. - uint64 starting_proposal_id = 1 [(gogoproto.moretags) = "yaml:\"starting_proposal_id\""]; - // deposits defines all the deposits present at genesis. - repeated Deposit deposits = 2 [(gogoproto.castrepeated) = "Deposits", (gogoproto.nullable) = false]; - // votes defines all the votes present at genesis. - repeated Vote votes = 3 [(gogoproto.castrepeated) = "Votes", (gogoproto.nullable) = false]; - // proposals defines all the proposals present at genesis. - repeated Proposal proposals = 4 [(gogoproto.castrepeated) = "Proposals", (gogoproto.nullable) = false]; - // params defines all the paramaters of related to deposit. - DepositParams deposit_params = 5 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_params\""]; - // params defines all the paramaters of related to voting. - VotingParams voting_params = 6 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_params\""]; - // params defines all the paramaters of related to tally. - TallyParams tally_params = 7 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"tally_params\""]; -} diff --git a/third_party/proto/cosmos/gov/v1beta1/gov.proto b/third_party/proto/cosmos/gov/v1beta1/gov.proto deleted file mode 100644 index 75c31e562..000000000 --- a/third_party/proto/cosmos/gov/v1beta1/gov.proto +++ /dev/null @@ -1,200 +0,0 @@ -syntax = "proto3"; -package cosmos.gov.v1beta1; - -import "cosmos/base/v1beta1/coin.proto"; -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/duration.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; -option (gogoproto.goproto_stringer_all) = false; -option (gogoproto.stringer_all) = false; -option (gogoproto.goproto_getters_all) = false; - -// VoteOption enumerates the valid vote options for a given governance proposal. -enum VoteOption { - option (gogoproto.goproto_enum_prefix) = false; - - // VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - VOTE_OPTION_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "OptionEmpty"]; - // VOTE_OPTION_YES defines a yes vote option. - VOTE_OPTION_YES = 1 [(gogoproto.enumvalue_customname) = "OptionYes"]; - // VOTE_OPTION_ABSTAIN defines an abstain vote option. - VOTE_OPTION_ABSTAIN = 2 [(gogoproto.enumvalue_customname) = "OptionAbstain"]; - // VOTE_OPTION_NO defines a no vote option. - VOTE_OPTION_NO = 3 [(gogoproto.enumvalue_customname) = "OptionNo"]; - // VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - VOTE_OPTION_NO_WITH_VETO = 4 [(gogoproto.enumvalue_customname) = "OptionNoWithVeto"]; -} - -// WeightedVoteOption defines a unit of vote for vote split. -// -// Since: cosmos-sdk 0.43 -message WeightedVoteOption { - VoteOption option = 1; - string weight = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"weight\"" - ]; -} - -// TextProposal defines a standard text proposal whose changes need to be -// manually updated in case of approval. -message TextProposal { - option (cosmos_proto.implements_interface) = "Content"; - - option (gogoproto.equal) = true; - - string title = 1; - string description = 2; -} - -// Deposit defines an amount deposited by an account address to an active -// proposal. -message Deposit { - option (gogoproto.goproto_getters) = false; - option (gogoproto.equal) = false; - - uint64 proposal_id = 1 [(gogoproto.moretags) = "yaml:\"proposal_id\""]; - string depositor = 2; - repeated cosmos.base.v1beta1.Coin amount = 3 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// Proposal defines the core field members of a governance proposal. -message Proposal { - option (gogoproto.equal) = true; - - uint64 proposal_id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = "yaml:\"id\""]; - google.protobuf.Any content = 2 [(cosmos_proto.accepts_interface) = "Content"]; - ProposalStatus status = 3 [(gogoproto.moretags) = "yaml:\"proposal_status\""]; - TallyResult final_tally_result = 4 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"final_tally_result\""]; - google.protobuf.Timestamp submit_time = 5 - [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"submit_time\""]; - google.protobuf.Timestamp deposit_end_time = 6 - [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_end_time\""]; - repeated cosmos.base.v1beta1.Coin total_deposit = 7 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"total_deposit\"" - ]; - google.protobuf.Timestamp voting_start_time = 8 - [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_start_time\""]; - google.protobuf.Timestamp voting_end_time = 9 - [(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_end_time\""]; -} - -// ProposalStatus enumerates the valid statuses of a proposal. -enum ProposalStatus { - option (gogoproto.goproto_enum_prefix) = false; - - // PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - PROPOSAL_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "StatusNil"]; - // PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - // period. - PROPOSAL_STATUS_DEPOSIT_PERIOD = 1 [(gogoproto.enumvalue_customname) = "StatusDepositPeriod"]; - // PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - // period. - PROPOSAL_STATUS_VOTING_PERIOD = 2 [(gogoproto.enumvalue_customname) = "StatusVotingPeriod"]; - // PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - // passed. - PROPOSAL_STATUS_PASSED = 3 [(gogoproto.enumvalue_customname) = "StatusPassed"]; - // PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - // been rejected. - PROPOSAL_STATUS_REJECTED = 4 [(gogoproto.enumvalue_customname) = "StatusRejected"]; - // PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - // failed. - PROPOSAL_STATUS_FAILED = 5 [(gogoproto.enumvalue_customname) = "StatusFailed"]; -} - -// TallyResult defines a standard tally for a governance proposal. -message TallyResult { - option (gogoproto.equal) = true; - - string yes = 1 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; - string abstain = 2 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; - string no = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; - string no_with_veto = 4 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"no_with_veto\"" - ]; -} - -// Vote defines a vote on a governance proposal. -// A Vote consists of a proposal ID, the voter, and the vote option. -message Vote { - option (gogoproto.goproto_stringer) = false; - option (gogoproto.equal) = false; - - uint64 proposal_id = 1 [(gogoproto.moretags) = "yaml:\"proposal_id\""]; - string voter = 2; - // Deprecated: Prefer to use `options` instead. This field is set in queries - // if and only if `len(options) == 1` and that option has weight 1. In all - // other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - VoteOption option = 3 [deprecated = true]; - // Since: cosmos-sdk 0.43 - repeated WeightedVoteOption options = 4 [(gogoproto.nullable) = false]; -} - -// DepositParams defines the params for deposits on governance proposals. -message DepositParams { - // Minimum deposit for a proposal to enter voting period. - repeated cosmos.base.v1beta1.Coin min_deposit = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"min_deposit\"", - (gogoproto.jsontag) = "min_deposit,omitempty" - ]; - - // Maximum period for Atom holders to deposit on a proposal. Initial value: 2 - // months. - google.protobuf.Duration max_deposit_period = 2 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.jsontag) = "max_deposit_period,omitempty", - (gogoproto.moretags) = "yaml:\"max_deposit_period\"" - ]; -} - -// VotingParams defines the params for voting on governance proposals. -message VotingParams { - // Length of the voting period. - google.protobuf.Duration voting_period = 1 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.jsontag) = "voting_period,omitempty", - (gogoproto.moretags) = "yaml:\"voting_period\"" - ]; -} - -// TallyParams defines the params for tallying votes on governance proposals. -message TallyParams { - // Minimum percentage of total stake needed to vote for a result to be - // considered valid. - bytes quorum = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "quorum,omitempty" - ]; - - // Minimum proportion of Yes votes for proposal to pass. Default value: 0.5. - bytes threshold = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "threshold,omitempty" - ]; - - // Minimum value of Veto votes to Total votes ratio for proposal to be - // vetoed. Default value: 1/3. - bytes veto_threshold = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "veto_threshold,omitempty", - (gogoproto.moretags) = "yaml:\"veto_threshold\"" - ]; -} diff --git a/third_party/proto/cosmos/gov/v1beta1/query.proto b/third_party/proto/cosmos/gov/v1beta1/query.proto deleted file mode 100644 index da62bdbad..000000000 --- a/third_party/proto/cosmos/gov/v1beta1/query.proto +++ /dev/null @@ -1,190 +0,0 @@ -syntax = "proto3"; -package cosmos.gov.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/gov/v1beta1/gov.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; - -// Query defines the gRPC querier service for gov module -service Query { - // Proposal queries proposal details based on ProposalID. - rpc Proposal(QueryProposalRequest) returns (QueryProposalResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}"; - } - - // Proposals queries all proposals based on given status. - rpc Proposals(QueryProposalsRequest) returns (QueryProposalsResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals"; - } - - // Vote queries voted information based on proposalID, voterAddr. - rpc Vote(QueryVoteRequest) returns (QueryVoteResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}"; - } - - // Votes queries votes of a given proposal. - rpc Votes(QueryVotesRequest) returns (QueryVotesResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes"; - } - - // Params queries all parameters of the gov module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/params/{params_type}"; - } - - // Deposit queries single deposit information based proposalID, depositAddr. - rpc Deposit(QueryDepositRequest) returns (QueryDepositResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}"; - } - - // Deposits queries all deposits of a single proposal. - rpc Deposits(QueryDepositsRequest) returns (QueryDepositsResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits"; - } - - // TallyResult queries the tally of a proposal vote. - rpc TallyResult(QueryTallyResultRequest) returns (QueryTallyResultResponse) { - option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/tally"; - } -} - -// QueryProposalRequest is the request type for the Query/Proposal RPC method. -message QueryProposalRequest { - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; -} - -// QueryProposalResponse is the response type for the Query/Proposal RPC method. -message QueryProposalResponse { - Proposal proposal = 1 [(gogoproto.nullable) = false]; -} - -// QueryProposalsRequest is the request type for the Query/Proposals RPC method. -message QueryProposalsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // proposal_status defines the status of the proposals. - ProposalStatus proposal_status = 1; - - // voter defines the voter address for the proposals. - string voter = 2; - - // depositor defines the deposit addresses from the proposals. - string depositor = 3; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 4; -} - -// QueryProposalsResponse is the response type for the Query/Proposals RPC -// method. -message QueryProposalsResponse { - repeated Proposal proposals = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryVoteRequest is the request type for the Query/Vote RPC method. -message QueryVoteRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; - - // voter defines the oter address for the proposals. - string voter = 2; -} - -// QueryVoteResponse is the response type for the Query/Vote RPC method. -message QueryVoteResponse { - // vote defined the queried vote. - Vote vote = 1 [(gogoproto.nullable) = false]; -} - -// QueryVotesRequest is the request type for the Query/Votes RPC method. -message QueryVotesRequest { - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryVotesResponse is the response type for the Query/Votes RPC method. -message QueryVotesResponse { - // votes defined the queried votes. - repeated Vote votes = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest { - // params_type defines which parameters to query for, can be one of "voting", - // "tallying" or "deposit". - string params_type = 1; -} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // voting_params defines the parameters related to voting. - VotingParams voting_params = 1 [(gogoproto.nullable) = false]; - // deposit_params defines the parameters related to deposit. - DepositParams deposit_params = 2 [(gogoproto.nullable) = false]; - // tally_params defines the parameters related to tally. - TallyParams tally_params = 3 [(gogoproto.nullable) = false]; -} - -// QueryDepositRequest is the request type for the Query/Deposit RPC method. -message QueryDepositRequest { - option (gogoproto.goproto_getters) = false; - option (gogoproto.equal) = false; - - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; - - // depositor defines the deposit addresses from the proposals. - string depositor = 2; -} - -// QueryDepositResponse is the response type for the Query/Deposit RPC method. -message QueryDepositResponse { - // deposit defines the requested deposit. - Deposit deposit = 1 [(gogoproto.nullable) = false]; -} - -// QueryDepositsRequest is the request type for the Query/Deposits RPC method. -message QueryDepositsRequest { - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryDepositsResponse is the response type for the Query/Deposits RPC method. -message QueryDepositsResponse { - repeated Deposit deposits = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryTallyResultRequest is the request type for the Query/Tally RPC method. -message QueryTallyResultRequest { - // proposal_id defines the unique id of the proposal. - uint64 proposal_id = 1; -} - -// QueryTallyResultResponse is the response type for the Query/Tally RPC method. -message QueryTallyResultResponse { - // tally defines the requested tally. - TallyResult tally = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/gov/v1beta1/tx.proto b/third_party/proto/cosmos/gov/v1beta1/tx.proto deleted file mode 100644 index 36c0a95d2..000000000 --- a/third_party/proto/cosmos/gov/v1beta1/tx.proto +++ /dev/null @@ -1,99 +0,0 @@ -syntax = "proto3"; -package cosmos.gov.v1beta1; - -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/gov/v1beta1/gov.proto"; -import "cosmos_proto/cosmos.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types"; - -// Msg defines the bank Msg service. -service Msg { - // SubmitProposal defines a method to create new proposal given a content. - rpc SubmitProposal(MsgSubmitProposal) returns (MsgSubmitProposalResponse); - - // Vote defines a method to add a vote on a specific proposal. - rpc Vote(MsgVote) returns (MsgVoteResponse); - - // VoteWeighted defines a method to add a weighted vote on a specific proposal. - // - // Since: cosmos-sdk 0.43 - rpc VoteWeighted(MsgVoteWeighted) returns (MsgVoteWeightedResponse); - - // Deposit defines a method to add deposit on a specific proposal. - rpc Deposit(MsgDeposit) returns (MsgDepositResponse); -} - -// MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary -// proposal Content. -message MsgSubmitProposal { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.stringer) = false; - option (gogoproto.goproto_getters) = false; - - google.protobuf.Any content = 1 [(cosmos_proto.accepts_interface) = "Content"]; - repeated cosmos.base.v1beta1.Coin initial_deposit = 2 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"initial_deposit\"" - ]; - string proposer = 3; -} - -// MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. -message MsgSubmitProposalResponse { - uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""]; -} - -// MsgVote defines a message to cast a vote. -message MsgVote { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.stringer) = false; - option (gogoproto.goproto_getters) = false; - - uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""]; - string voter = 2; - VoteOption option = 3; -} - -// MsgVoteResponse defines the Msg/Vote response type. -message MsgVoteResponse {} - -// MsgVoteWeighted defines a message to cast a vote. -// -// Since: cosmos-sdk 0.43 -message MsgVoteWeighted { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.stringer) = false; - option (gogoproto.goproto_getters) = false; - - uint64 proposal_id = 1 [(gogoproto.moretags) = "yaml:\"proposal_id\""]; - string voter = 2; - repeated WeightedVoteOption options = 3 [(gogoproto.nullable) = false]; -} - -// MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. -// -// Since: cosmos-sdk 0.43 -message MsgVoteWeightedResponse {} - -// MsgDeposit defines a message to submit a deposit to an existing proposal. -message MsgDeposit { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.stringer) = false; - option (gogoproto.goproto_getters) = false; - - uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""]; - string depositor = 2; - repeated cosmos.base.v1beta1.Coin amount = 3 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// MsgDepositResponse defines the Msg/Deposit response type. -message MsgDepositResponse {} diff --git a/third_party/proto/cosmos/mint/v1beta1/genesis.proto b/third_party/proto/cosmos/mint/v1beta1/genesis.proto deleted file mode 100644 index 4e783fb54..000000000 --- a/third_party/proto/cosmos/mint/v1beta1/genesis.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; -package cosmos.mint.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/mint/v1beta1/mint.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types"; - -// GenesisState defines the mint module's genesis state. -message GenesisState { - // minter is a space for holding current inflation information. - Minter minter = 1 [(gogoproto.nullable) = false]; - - // params defines all the paramaters of the module. - Params params = 2 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/mint/v1beta1/mint.proto b/third_party/proto/cosmos/mint/v1beta1/mint.proto deleted file mode 100644 index f94d4ae2e..000000000 --- a/third_party/proto/cosmos/mint/v1beta1/mint.proto +++ /dev/null @@ -1,53 +0,0 @@ -syntax = "proto3"; -package cosmos.mint.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types"; - -import "gogoproto/gogo.proto"; - -// Minter represents the minting state. -message Minter { - // current annual inflation rate - string inflation = 1 - [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; - // current annual expected provisions - string annual_provisions = 2 [ - (gogoproto.moretags) = "yaml:\"annual_provisions\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; -} - -// Params holds parameters for the mint module. -message Params { - option (gogoproto.goproto_stringer) = false; - - // type of coin to mint - string mint_denom = 1; - // maximum annual change in inflation rate - string inflation_rate_change = 2 [ - (gogoproto.moretags) = "yaml:\"inflation_rate_change\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // maximum inflation rate - string inflation_max = 3 [ - (gogoproto.moretags) = "yaml:\"inflation_max\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // minimum inflation rate - string inflation_min = 4 [ - (gogoproto.moretags) = "yaml:\"inflation_min\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // goal of percent bonded atoms - string goal_bonded = 5 [ - (gogoproto.moretags) = "yaml:\"goal_bonded\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // expected blocks per year - uint64 blocks_per_year = 6 [(gogoproto.moretags) = "yaml:\"blocks_per_year\""]; -} diff --git a/third_party/proto/cosmos/mint/v1beta1/query.proto b/third_party/proto/cosmos/mint/v1beta1/query.proto deleted file mode 100644 index acd341d77..000000000 --- a/third_party/proto/cosmos/mint/v1beta1/query.proto +++ /dev/null @@ -1,57 +0,0 @@ -syntax = "proto3"; -package cosmos.mint.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/mint/v1beta1/mint.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types"; - -// Query provides defines the gRPC querier service. -service Query { - // Params returns the total set of minting parameters. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/mint/v1beta1/params"; - } - - // Inflation returns the current minting inflation value. - rpc Inflation(QueryInflationRequest) returns (QueryInflationResponse) { - option (google.api.http).get = "/cosmos/mint/v1beta1/inflation"; - } - - // AnnualProvisions current minting annual provisions value. - rpc AnnualProvisions(QueryAnnualProvisionsRequest) returns (QueryAnnualProvisionsResponse) { - option (google.api.http).get = "/cosmos/mint/v1beta1/annual_provisions"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1 [(gogoproto.nullable) = false]; -} - -// QueryInflationRequest is the request type for the Query/Inflation RPC method. -message QueryInflationRequest {} - -// QueryInflationResponse is the response type for the Query/Inflation RPC -// method. -message QueryInflationResponse { - // inflation is the current minting inflation value. - bytes inflation = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; -} - -// QueryAnnualProvisionsRequest is the request type for the -// Query/AnnualProvisions RPC method. -message QueryAnnualProvisionsRequest {} - -// QueryAnnualProvisionsResponse is the response type for the -// Query/AnnualProvisions RPC method. -message QueryAnnualProvisionsResponse { - // annual_provisions is the current minting annual provisions value. - bytes annual_provisions = 1 - [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/params/v1beta1/params.proto b/third_party/proto/cosmos/params/v1beta1/params.proto deleted file mode 100644 index 5382fd799..000000000 --- a/third_party/proto/cosmos/params/v1beta1/params.proto +++ /dev/null @@ -1,27 +0,0 @@ -syntax = "proto3"; -package cosmos.params.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/params/types/proposal"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; - -// ParameterChangeProposal defines a proposal to change one or more parameters. -message ParameterChangeProposal { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - string title = 1; - string description = 2; - repeated ParamChange changes = 3 [(gogoproto.nullable) = false]; -} - -// ParamChange defines an individual parameter change, for use in -// ParameterChangeProposal. -message ParamChange { - option (gogoproto.goproto_stringer) = false; - - string subspace = 1; - string key = 2; - string value = 3; -} diff --git a/third_party/proto/cosmos/params/v1beta1/query.proto b/third_party/proto/cosmos/params/v1beta1/query.proto deleted file mode 100644 index 1078e02ae..000000000 --- a/third_party/proto/cosmos/params/v1beta1/query.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; -package cosmos.params.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/params/v1beta1/params.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/params/types/proposal"; - -// Query defines the gRPC querier service. -service Query { - // Params queries a specific parameter of a module, given its subspace and - // key. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/params/v1beta1/params"; - } -} - -// QueryParamsRequest is request type for the Query/Params RPC method. -message QueryParamsRequest { - // subspace defines the module to query the parameter for. - string subspace = 1; - - // key defines the key of the parameter in the subspace. - string key = 2; -} - -// QueryParamsResponse is response type for the Query/Params RPC method. -message QueryParamsResponse { - // param defines the queried parameter. - ParamChange param = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/slashing/v1beta1/genesis.proto b/third_party/proto/cosmos/slashing/v1beta1/genesis.proto deleted file mode 100644 index a7aebcfba..000000000 --- a/third_party/proto/cosmos/slashing/v1beta1/genesis.proto +++ /dev/null @@ -1,50 +0,0 @@ -syntax = "proto3"; -package cosmos.slashing.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types"; - -import "gogoproto/gogo.proto"; -import "cosmos/slashing/v1beta1/slashing.proto"; - -// GenesisState defines the slashing module's genesis state. -message GenesisState { - // params defines all the paramaters of related to deposit. - Params params = 1 [(gogoproto.nullable) = false]; - - // signing_infos represents a map between validator addresses and their - // signing infos. - repeated SigningInfo signing_infos = 2 - [(gogoproto.moretags) = "yaml:\"signing_infos\"", (gogoproto.nullable) = false]; - - // missed_blocks represents a map between validator addresses and their - // missed blocks. - repeated ValidatorMissedBlocks missed_blocks = 3 - [(gogoproto.moretags) = "yaml:\"missed_blocks\"", (gogoproto.nullable) = false]; -} - -// SigningInfo stores validator signing info of corresponding address. -message SigningInfo { - // address is the validator address. - string address = 1; - // validator_signing_info represents the signing info of this validator. - ValidatorSigningInfo validator_signing_info = 2 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_signing_info\""]; -} - -// ValidatorMissedBlocks contains array of missed blocks of corresponding -// address. -message ValidatorMissedBlocks { - // address is the validator address. - string address = 1; - // missed_blocks is an array of missed blocks by the validator. - repeated MissedBlock missed_blocks = 2 - [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"missed_blocks\""]; -} - -// MissedBlock contains height and missed status as boolean. -message MissedBlock { - // index is the height at which the block was missed. - int64 index = 1; - // missed is the missed status. - bool missed = 2; -} diff --git a/third_party/proto/cosmos/slashing/v1beta1/query.proto b/third_party/proto/cosmos/slashing/v1beta1/query.proto deleted file mode 100644 index 869049a0e..000000000 --- a/third_party/proto/cosmos/slashing/v1beta1/query.proto +++ /dev/null @@ -1,63 +0,0 @@ -syntax = "proto3"; -package cosmos.slashing.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/slashing/v1beta1/slashing.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types"; - -// Query provides defines the gRPC querier service -service Query { - // Params queries the parameters of slashing module - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/slashing/v1beta1/params"; - } - - // SigningInfo queries the signing info of given cons address - rpc SigningInfo(QuerySigningInfoRequest) returns (QuerySigningInfoResponse) { - option (google.api.http).get = "/cosmos/slashing/v1beta1/signing_infos/{cons_address}"; - } - - // SigningInfos queries signing info of all validators - rpc SigningInfos(QuerySigningInfosRequest) returns (QuerySigningInfosResponse) { - option (google.api.http).get = "/cosmos/slashing/v1beta1/signing_infos"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method -message QueryParamsResponse { - Params params = 1 [(gogoproto.nullable) = false]; -} - -// QuerySigningInfoRequest is the request type for the Query/SigningInfo RPC -// method -message QuerySigningInfoRequest { - // cons_address is the address to query signing info of - string cons_address = 1; -} - -// QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC -// method -message QuerySigningInfoResponse { - // val_signing_info is the signing info of requested val cons address - ValidatorSigningInfo val_signing_info = 1 [(gogoproto.nullable) = false]; -} - -// QuerySigningInfosRequest is the request type for the Query/SigningInfos RPC -// method -message QuerySigningInfosRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC -// method -message QuerySigningInfosResponse { - // info is the signing info of all validators - repeated cosmos.slashing.v1beta1.ValidatorSigningInfo info = 1 [(gogoproto.nullable) = false]; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} diff --git a/third_party/proto/cosmos/slashing/v1beta1/slashing.proto b/third_party/proto/cosmos/slashing/v1beta1/slashing.proto deleted file mode 100644 index 882a0fb60..000000000 --- a/third_party/proto/cosmos/slashing/v1beta1/slashing.proto +++ /dev/null @@ -1,58 +0,0 @@ -syntax = "proto3"; -package cosmos.slashing.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; - -// ValidatorSigningInfo defines a validator's signing info for monitoring their -// liveness activity. -message ValidatorSigningInfo { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - string address = 1; - // Height at which validator was first a candidate OR was unjailed - int64 start_height = 2 [(gogoproto.moretags) = "yaml:\"start_height\""]; - // Index which is incremented each time the validator was a bonded - // in a block and may have signed a precommit or not. This in conjunction with the - // `SignedBlocksWindow` param determines the index in the `MissedBlocksBitArray`. - int64 index_offset = 3 [(gogoproto.moretags) = "yaml:\"index_offset\""]; - // Timestamp until which the validator is jailed due to liveness downtime. - google.protobuf.Timestamp jailed_until = 4 - [(gogoproto.moretags) = "yaml:\"jailed_until\"", (gogoproto.stdtime) = true, (gogoproto.nullable) = false]; - // Whether or not a validator has been tombstoned (killed out of validator set). It is set - // once the validator commits an equivocation or for any other configured misbehiavor. - bool tombstoned = 5; - // A counter kept to avoid unnecessary array reads. - // Note that `Sum(MissedBlocksBitArray)` always equals `MissedBlocksCounter`. - int64 missed_blocks_counter = 6 [(gogoproto.moretags) = "yaml:\"missed_blocks_counter\""]; -} - -// Params represents the parameters used for by the slashing module. -message Params { - int64 signed_blocks_window = 1 [(gogoproto.moretags) = "yaml:\"signed_blocks_window\""]; - bytes min_signed_per_window = 2 [ - (gogoproto.moretags) = "yaml:\"min_signed_per_window\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - google.protobuf.Duration downtime_jail_duration = 3 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.moretags) = "yaml:\"downtime_jail_duration\"" - ]; - bytes slash_fraction_double_sign = 4 [ - (gogoproto.moretags) = "yaml:\"slash_fraction_double_sign\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - bytes slash_fraction_downtime = 5 [ - (gogoproto.moretags) = "yaml:\"slash_fraction_downtime\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; -} diff --git a/third_party/proto/cosmos/slashing/v1beta1/tx.proto b/third_party/proto/cosmos/slashing/v1beta1/tx.proto deleted file mode 100644 index 4d63370ec..000000000 --- a/third_party/proto/cosmos/slashing/v1beta1/tx.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; -package cosmos.slashing.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types"; -option (gogoproto.equal_all) = true; - -import "gogoproto/gogo.proto"; - -// Msg defines the slashing Msg service. -service Msg { - // Unjail defines a method for unjailing a jailed validator, thus returning - // them into the bonded validator set, so they can begin receiving provisions - // and rewards again. - rpc Unjail(MsgUnjail) returns (MsgUnjailResponse); -} - -// MsgUnjail defines the Msg/Unjail request type -message MsgUnjail { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = true; - - string validator_addr = 1 [(gogoproto.moretags) = "yaml:\"address\"", (gogoproto.jsontag) = "address"]; -} - -// MsgUnjailResponse defines the Msg/Unjail response type -message MsgUnjailResponse {} \ No newline at end of file diff --git a/third_party/proto/cosmos/staking/v1beta1/authz.proto b/third_party/proto/cosmos/staking/v1beta1/authz.proto deleted file mode 100644 index d50c329c9..000000000 --- a/third_party/proto/cosmos/staking/v1beta1/authz.proto +++ /dev/null @@ -1,47 +0,0 @@ -syntax = "proto3"; -package cosmos.staking.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types"; - -// StakeAuthorization defines authorization for delegate/undelegate/redelegate. -// -// Since: cosmos-sdk 0.43 -message StakeAuthorization { - option (cosmos_proto.implements_interface) = "Authorization"; - - // max_tokens specifies the maximum amount of tokens can be delegate to a validator. If it is - // empty, there is no spend limit and any amount of coins can be delegated. - cosmos.base.v1beta1.Coin max_tokens = 1 [(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin"]; - // validators is the oneof that represents either allow_list or deny_list - oneof validators { - // allow_list specifies list of validator addresses to whom grantee can delegate tokens on behalf of granter's - // account. - Validators allow_list = 2; - // deny_list specifies list of validator addresses to whom grantee can not delegate tokens. - Validators deny_list = 3; - } - // Validators defines list of validator addresses. - message Validators { - repeated string address = 1; - } - // authorization_type defines one of AuthorizationType. - AuthorizationType authorization_type = 4; -} - -// AuthorizationType defines the type of staking module authorization type -// -// Since: cosmos-sdk 0.43 -enum AuthorizationType { - // AUTHORIZATION_TYPE_UNSPECIFIED specifies an unknown authorization type - AUTHORIZATION_TYPE_UNSPECIFIED = 0; - // AUTHORIZATION_TYPE_DELEGATE defines an authorization type for Msg/Delegate - AUTHORIZATION_TYPE_DELEGATE = 1; - // AUTHORIZATION_TYPE_UNDELEGATE defines an authorization type for Msg/Undelegate - AUTHORIZATION_TYPE_UNDELEGATE = 2; - // AUTHORIZATION_TYPE_REDELEGATE defines an authorization type for Msg/BeginRedelegate - AUTHORIZATION_TYPE_REDELEGATE = 3; -} diff --git a/third_party/proto/cosmos/staking/v1beta1/genesis.proto b/third_party/proto/cosmos/staking/v1beta1/genesis.proto deleted file mode 100644 index 9fbb097e2..000000000 --- a/third_party/proto/cosmos/staking/v1beta1/genesis.proto +++ /dev/null @@ -1,53 +0,0 @@ -syntax = "proto3"; -package cosmos.staking.v1beta1; - -option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types"; - -import "gogoproto/gogo.proto"; -import "cosmos/staking/v1beta1/staking.proto"; - -// GenesisState defines the staking module's genesis state. -message GenesisState { - // params defines all the paramaters of related to deposit. - Params params = 1 [(gogoproto.nullable) = false]; - - // last_total_power tracks the total amounts of bonded tokens recorded during - // the previous end block. - bytes last_total_power = 2 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"last_total_power\"", - (gogoproto.nullable) = false - ]; - - // last_validator_powers is a special index that provides a historical list - // of the last-block's bonded validators. - repeated LastValidatorPower last_validator_powers = 3 - [(gogoproto.moretags) = "yaml:\"last_validator_powers\"", (gogoproto.nullable) = false]; - - // delegations defines the validator set at genesis. - repeated Validator validators = 4 [(gogoproto.nullable) = false]; - - // delegations defines the delegations active at genesis. - repeated Delegation delegations = 5 [(gogoproto.nullable) = false]; - - // unbonding_delegations defines the unbonding delegations active at genesis. - repeated UnbondingDelegation unbonding_delegations = 6 - [(gogoproto.moretags) = "yaml:\"unbonding_delegations\"", (gogoproto.nullable) = false]; - - // redelegations defines the redelegations active at genesis. - repeated Redelegation redelegations = 7 [(gogoproto.nullable) = false]; - - bool exported = 8; -} - -// LastValidatorPower required for validator set update logic. -message LastValidatorPower { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the address of the validator. - string address = 1; - - // power defines the power of the validator. - int64 power = 2; -} diff --git a/third_party/proto/cosmos/staking/v1beta1/query.proto b/third_party/proto/cosmos/staking/v1beta1/query.proto deleted file mode 100644 index 4852c5353..000000000 --- a/third_party/proto/cosmos/staking/v1beta1/query.proto +++ /dev/null @@ -1,348 +0,0 @@ -syntax = "proto3"; -package cosmos.staking.v1beta1; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "cosmos/staking/v1beta1/staking.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types"; - -// Query defines the gRPC querier service. -service Query { - // Validators queries all validators that match the given status. - rpc Validators(QueryValidatorsRequest) returns (QueryValidatorsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators"; - } - - // Validator queries validator info for given validator address. - rpc Validator(QueryValidatorRequest) returns (QueryValidatorResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}"; - } - - // ValidatorDelegations queries delegate info for given validator. - rpc ValidatorDelegations(QueryValidatorDelegationsRequest) returns (QueryValidatorDelegationsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations"; - } - - // ValidatorUnbondingDelegations queries unbonding delegations of a validator. - rpc ValidatorUnbondingDelegations(QueryValidatorUnbondingDelegationsRequest) - returns (QueryValidatorUnbondingDelegationsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators/" - "{validator_addr}/unbonding_delegations"; - } - - // Delegation queries delegate info for given validator delegator pair. - rpc Delegation(QueryDelegationRequest) returns (QueryDelegationResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/" - "{delegator_addr}"; - } - - // UnbondingDelegation queries unbonding info for given validator delegator - // pair. - rpc UnbondingDelegation(QueryUnbondingDelegationRequest) returns (QueryUnbondingDelegationResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/" - "{delegator_addr}/unbonding_delegation"; - } - - // DelegatorDelegations queries all delegations of a given delegator address. - rpc DelegatorDelegations(QueryDelegatorDelegationsRequest) returns (QueryDelegatorDelegationsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/delegations/{delegator_addr}"; - } - - // DelegatorUnbondingDelegations queries all unbonding delegations of a given - // delegator address. - rpc DelegatorUnbondingDelegations(QueryDelegatorUnbondingDelegationsRequest) - returns (QueryDelegatorUnbondingDelegationsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/" - "{delegator_addr}/unbonding_delegations"; - } - - // Redelegations queries redelegations of given address. - rpc Redelegations(QueryRedelegationsRequest) returns (QueryRedelegationsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations"; - } - - // DelegatorValidators queries all validators info for given delegator - // address. - rpc DelegatorValidators(QueryDelegatorValidatorsRequest) returns (QueryDelegatorValidatorsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators"; - } - - // DelegatorValidator queries validator info for given delegator validator - // pair. - rpc DelegatorValidator(QueryDelegatorValidatorRequest) returns (QueryDelegatorValidatorResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/" - "{validator_addr}"; - } - - // HistoricalInfo queries the historical info for given height. - rpc HistoricalInfo(QueryHistoricalInfoRequest) returns (QueryHistoricalInfoResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/historical_info/{height}"; - } - - // Pool queries the pool info. - rpc Pool(QueryPoolRequest) returns (QueryPoolResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/pool"; - } - - // Parameters queries the staking parameters. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/cosmos/staking/v1beta1/params"; - } -} - -// QueryValidatorsRequest is request type for Query/Validators RPC method. -message QueryValidatorsRequest { - // status enables to query for validators matching a given status. - string status = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryValidatorsResponse is response type for the Query/Validators RPC method -message QueryValidatorsResponse { - // validators contains all the queried validators. - repeated Validator validators = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryValidatorRequest is response type for the Query/Validator RPC method -message QueryValidatorRequest { - // validator_addr defines the validator address to query for. - string validator_addr = 1; -} - -// QueryValidatorResponse is response type for the Query/Validator RPC method -message QueryValidatorResponse { - // validator defines the the validator info. - Validator validator = 1 [(gogoproto.nullable) = false]; -} - -// QueryValidatorDelegationsRequest is request type for the -// Query/ValidatorDelegations RPC method -message QueryValidatorDelegationsRequest { - // validator_addr defines the validator address to query for. - string validator_addr = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryValidatorDelegationsResponse is response type for the -// Query/ValidatorDelegations RPC method -message QueryValidatorDelegationsResponse { - repeated DelegationResponse delegation_responses = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "DelegationResponses"]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryValidatorUnbondingDelegationsRequest is required type for the -// Query/ValidatorUnbondingDelegations RPC method -message QueryValidatorUnbondingDelegationsRequest { - // validator_addr defines the validator address to query for. - string validator_addr = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryValidatorUnbondingDelegationsResponse is response type for the -// Query/ValidatorUnbondingDelegations RPC method. -message QueryValidatorUnbondingDelegationsResponse { - repeated UnbondingDelegation unbonding_responses = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDelegationRequest is request type for the Query/Delegation RPC method. -message QueryDelegationRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // validator_addr defines the validator address to query for. - string validator_addr = 2; -} - -// QueryDelegationResponse is response type for the Query/Delegation RPC method. -message QueryDelegationResponse { - // delegation_responses defines the delegation info of a delegation. - DelegationResponse delegation_response = 1; -} - -// QueryUnbondingDelegationRequest is request type for the -// Query/UnbondingDelegation RPC method. -message QueryUnbondingDelegationRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // validator_addr defines the validator address to query for. - string validator_addr = 2; -} - -// QueryDelegationResponse is response type for the Query/UnbondingDelegation -// RPC method. -message QueryUnbondingDelegationResponse { - // unbond defines the unbonding information of a delegation. - UnbondingDelegation unbond = 1 [(gogoproto.nullable) = false]; -} - -// QueryDelegatorDelegationsRequest is request type for the -// Query/DelegatorDelegations RPC method. -message QueryDelegatorDelegationsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryDelegatorDelegationsResponse is response type for the -// Query/DelegatorDelegations RPC method. -message QueryDelegatorDelegationsResponse { - // delegation_responses defines all the delegations' info of a delegator. - repeated DelegationResponse delegation_responses = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDelegatorUnbondingDelegationsRequest is request type for the -// Query/DelegatorUnbondingDelegations RPC method. -message QueryDelegatorUnbondingDelegationsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryUnbondingDelegatorDelegationsResponse is response type for the -// Query/UnbondingDelegatorDelegations RPC method. -message QueryDelegatorUnbondingDelegationsResponse { - repeated UnbondingDelegation unbonding_responses = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryRedelegationsRequest is request type for the Query/Redelegations RPC -// method. -message QueryRedelegationsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // src_validator_addr defines the validator address to redelegate from. - string src_validator_addr = 2; - - // dst_validator_addr defines the validator address to redelegate to. - string dst_validator_addr = 3; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 4; -} - -// QueryRedelegationsResponse is response type for the Query/Redelegations RPC -// method. -message QueryRedelegationsResponse { - repeated RedelegationResponse redelegation_responses = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDelegatorValidatorsRequest is request type for the -// Query/DelegatorValidators RPC method. -message QueryDelegatorValidatorsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryDelegatorValidatorsResponse is response type for the -// Query/DelegatorValidators RPC method. -message QueryDelegatorValidatorsResponse { - // validators defines the the validators' info of a delegator. - repeated Validator validators = 1 [(gogoproto.nullable) = false]; - - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryDelegatorValidatorRequest is request type for the -// Query/DelegatorValidator RPC method. -message QueryDelegatorValidatorRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // delegator_addr defines the delegator address to query for. - string delegator_addr = 1; - - // validator_addr defines the validator address to query for. - string validator_addr = 2; -} - -// QueryDelegatorValidatorResponse response type for the -// Query/DelegatorValidator RPC method. -message QueryDelegatorValidatorResponse { - // validator defines the the validator info. - Validator validator = 1 [(gogoproto.nullable) = false]; -} - -// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC -// method. -message QueryHistoricalInfoRequest { - // height defines at which height to query the historical info. - int64 height = 1; -} - -// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC -// method. -message QueryHistoricalInfoResponse { - // hist defines the historical info at the given height. - HistoricalInfo hist = 1; -} - -// QueryPoolRequest is request type for the Query/Pool RPC method. -message QueryPoolRequest {} - -// QueryPoolResponse is response type for the Query/Pool RPC method. -message QueryPoolResponse { - // pool defines the pool info. - Pool pool = 1 [(gogoproto.nullable) = false]; -} - -// QueryParamsRequest is request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is response type for the Query/Params RPC method. -message QueryParamsResponse { - // params holds all the parameters of this module. - Params params = 1 [(gogoproto.nullable) = false]; -} diff --git a/third_party/proto/cosmos/staking/v1beta1/staking.proto b/third_party/proto/cosmos/staking/v1beta1/staking.proto deleted file mode 100644 index bbac0717a..000000000 --- a/third_party/proto/cosmos/staking/v1beta1/staking.proto +++ /dev/null @@ -1,334 +0,0 @@ -syntax = "proto3"; -package cosmos.staking.v1beta1; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; - -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "tendermint/types/types.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types"; - -// HistoricalInfo contains header and validator information for a given block. -// It is stored as part of staking module's state, which persists the `n` most -// recent HistoricalInfo -// (`n` is set by the staking module's `historical_entries` parameter). -message HistoricalInfo { - tendermint.types.Header header = 1 [(gogoproto.nullable) = false]; - repeated Validator valset = 2 [(gogoproto.nullable) = false]; -} - -// CommissionRates defines the initial commission rates to be used for creating -// a validator. -message CommissionRates { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // rate is the commission rate charged to delegators, as a fraction. - string rate = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; - // max_rate defines the maximum commission rate which validator can ever charge, as a fraction. - string max_rate = 2 [ - (gogoproto.moretags) = "yaml:\"max_rate\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // max_change_rate defines the maximum daily increase of the validator commission, as a fraction. - string max_change_rate = 3 [ - (gogoproto.moretags) = "yaml:\"max_change_rate\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; -} - -// Commission defines commission parameters for a given validator. -message Commission { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // commission_rates defines the initial commission rates to be used for creating a validator. - CommissionRates commission_rates = 1 [(gogoproto.embed) = true, (gogoproto.nullable) = false]; - // update_time is the last time the commission rate was changed. - google.protobuf.Timestamp update_time = 2 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"update_time\""]; -} - -// Description defines a validator description. -message Description { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // moniker defines a human-readable name for the validator. - string moniker = 1; - // identity defines an optional identity signature (ex. UPort or Keybase). - string identity = 2; - // website defines an optional website link. - string website = 3; - // security_contact defines an optional email for security contact. - string security_contact = 4 [(gogoproto.moretags) = "yaml:\"security_contact\""]; - // details define other optional details. - string details = 5; -} - -// Validator defines a validator, together with the total amount of the -// Validator's bond shares and their exchange rate to coins. Slashing results in -// a decrease in the exchange rate, allowing correct calculation of future -// undelegations without iterating over delegators. When coins are delegated to -// this validator, the validator is credited with a delegation whose number of -// bond shares is based on the amount of coins delegated divided by the current -// exchange rate. Voting power can be calculated as total bonded shares -// multiplied by exchange rate. -message Validator { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.goproto_getters) = false; - - // operator_address defines the address of the validator's operator; bech encoded in JSON. - string operator_address = 1 [(gogoproto.moretags) = "yaml:\"operator_address\""]; - // consensus_pubkey is the consensus public key of the validator, as a Protobuf Any. - google.protobuf.Any consensus_pubkey = 2 - [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey", (gogoproto.moretags) = "yaml:\"consensus_pubkey\""]; - // jailed defined whether the validator has been jailed from bonded status or not. - bool jailed = 3; - // status is the validator status (bonded/unbonding/unbonded). - BondStatus status = 4; - // tokens define the delegated tokens (incl. self-delegation). - string tokens = 5 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; - // delegator_shares defines total shares issued to a validator's delegators. - string delegator_shares = 6 [ - (gogoproto.moretags) = "yaml:\"delegator_shares\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // description defines the description terms for the validator. - Description description = 7 [(gogoproto.nullable) = false]; - // unbonding_height defines, if unbonding, the height at which this validator has begun unbonding. - int64 unbonding_height = 8 [(gogoproto.moretags) = "yaml:\"unbonding_height\""]; - // unbonding_time defines, if unbonding, the min time for the validator to complete unbonding. - google.protobuf.Timestamp unbonding_time = 9 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"unbonding_time\""]; - // commission defines the commission parameters. - Commission commission = 10 [(gogoproto.nullable) = false]; - // min_self_delegation is the validator's self declared minimum self delegation. - string min_self_delegation = 11 [ - (gogoproto.moretags) = "yaml:\"min_self_delegation\"", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false - ]; -} - -// BondStatus is the status of a validator. -enum BondStatus { - option (gogoproto.goproto_enum_prefix) = false; - - // UNSPECIFIED defines an invalid validator status. - BOND_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "Unspecified"]; - // UNBONDED defines a validator that is not bonded. - BOND_STATUS_UNBONDED = 1 [(gogoproto.enumvalue_customname) = "Unbonded"]; - // UNBONDING defines a validator that is unbonding. - BOND_STATUS_UNBONDING = 2 [(gogoproto.enumvalue_customname) = "Unbonding"]; - // BONDED defines a validator that is bonded. - BOND_STATUS_BONDED = 3 [(gogoproto.enumvalue_customname) = "Bonded"]; -} - -// ValAddresses defines a repeated set of validator addresses. -message ValAddresses { - option (gogoproto.goproto_stringer) = false; - option (gogoproto.stringer) = true; - - repeated string addresses = 1; -} - -// DVPair is struct that just has a delegator-validator pair with no other data. -// It is intended to be used as a marshalable pointer. For example, a DVPair can -// be used to construct the key to getting an UnbondingDelegation from state. -message DVPair { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; -} - -// DVPairs defines an array of DVPair objects. -message DVPairs { - repeated DVPair pairs = 1 [(gogoproto.nullable) = false]; -} - -// DVVTriplet is struct that just has a delegator-validator-validator triplet -// with no other data. It is intended to be used as a marshalable pointer. For -// example, a DVVTriplet can be used to construct the key to getting a -// Redelegation from state. -message DVVTriplet { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""]; - string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""]; -} - -// DVVTriplets defines an array of DVVTriplet objects. -message DVVTriplets { - repeated DVVTriplet triplets = 1 [(gogoproto.nullable) = false]; -} - -// Delegation represents the bond with tokens held by an account. It is -// owned by one delegator, and is associated with the voting power of one -// validator. -message Delegation { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - // delegator_address is the bech32-encoded address of the delegator. - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - // validator_address is the bech32-encoded address of the validator. - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - // shares define the delegation shares received. - string shares = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; -} - -// UnbondingDelegation stores all of a single delegator's unbonding bonds -// for a single validator in an time-ordered list. -message UnbondingDelegation { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - // delegator_address is the bech32-encoded address of the delegator. - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - // validator_address is the bech32-encoded address of the validator. - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - // entries are the unbonding delegation entries. - repeated UnbondingDelegationEntry entries = 3 [(gogoproto.nullable) = false]; // unbonding delegation entries -} - -// UnbondingDelegationEntry defines an unbonding object with relevant metadata. -message UnbondingDelegationEntry { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // creation_height is the height which the unbonding took place. - int64 creation_height = 1 [(gogoproto.moretags) = "yaml:\"creation_height\""]; - // completion_time is the unix time for unbonding completion. - google.protobuf.Timestamp completion_time = 2 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""]; - // initial_balance defines the tokens initially scheduled to receive at completion. - string initial_balance = 3 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"initial_balance\"" - ]; - // balance defines the tokens to receive at completion. - string balance = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; -} - -// RedelegationEntry defines a redelegation object with relevant metadata. -message RedelegationEntry { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // creation_height defines the height which the redelegation took place. - int64 creation_height = 1 [(gogoproto.moretags) = "yaml:\"creation_height\""]; - // completion_time defines the unix time for redelegation completion. - google.protobuf.Timestamp completion_time = 2 - [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""]; - // initial_balance defines the initial balance when redelegation started. - string initial_balance = 3 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"initial_balance\"" - ]; - // shares_dst is the amount of destination-validator shares created by redelegation. - string shares_dst = 4 - [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false]; -} - -// Redelegation contains the list of a particular delegator's redelegating bonds -// from a particular source validator to a particular destination validator. -message Redelegation { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - // delegator_address is the bech32-encoded address of the delegator. - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - // validator_src_address is the validator redelegation source operator address. - string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""]; - // validator_dst_address is the validator redelegation destination operator address. - string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""]; - // entries are the redelegation entries. - repeated RedelegationEntry entries = 4 [(gogoproto.nullable) = false]; // redelegation entries -} - -// Params defines the parameters for the staking module. -message Params { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // unbonding_time is the time duration of unbonding. - google.protobuf.Duration unbonding_time = 1 - [(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"unbonding_time\""]; - // max_validators is the maximum number of validators. - uint32 max_validators = 2 [(gogoproto.moretags) = "yaml:\"max_validators\""]; - // max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio). - uint32 max_entries = 3 [(gogoproto.moretags) = "yaml:\"max_entries\""]; - // historical_entries is the number of historical entries to persist. - uint32 historical_entries = 4 [(gogoproto.moretags) = "yaml:\"historical_entries\""]; - // bond_denom defines the bondable coin denomination. - string bond_denom = 5 [(gogoproto.moretags) = "yaml:\"bond_denom\""]; -} - -// DelegationResponse is equivalent to Delegation except that it contains a -// balance in addition to shares which is more suitable for client responses. -message DelegationResponse { - option (gogoproto.equal) = false; - option (gogoproto.goproto_stringer) = false; - - Delegation delegation = 1 [(gogoproto.nullable) = false]; - - cosmos.base.v1beta1.Coin balance = 2 [(gogoproto.nullable) = false]; -} - -// RedelegationEntryResponse is equivalent to a RedelegationEntry except that it -// contains a balance in addition to shares which is more suitable for client -// responses. -message RedelegationEntryResponse { - option (gogoproto.equal) = true; - - RedelegationEntry redelegation_entry = 1 [(gogoproto.nullable) = false]; - string balance = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; -} - -// RedelegationResponse is equivalent to a Redelegation except that its entries -// contain a balance in addition to shares which is more suitable for client -// responses. -message RedelegationResponse { - option (gogoproto.equal) = false; - - Redelegation redelegation = 1 [(gogoproto.nullable) = false]; - repeated RedelegationEntryResponse entries = 2 [(gogoproto.nullable) = false]; -} - -// Pool is used for tracking bonded and not-bonded token supply of the bond -// denomination. -message Pool { - option (gogoproto.description) = true; - option (gogoproto.equal) = true; - string not_bonded_tokens = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.jsontag) = "not_bonded_tokens", - (gogoproto.nullable) = false - ]; - string bonded_tokens = 2 [ - (gogoproto.jsontag) = "bonded_tokens", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"bonded_tokens\"" - ]; -} diff --git a/third_party/proto/cosmos/staking/v1beta1/tx.proto b/third_party/proto/cosmos/staking/v1beta1/tx.proto deleted file mode 100644 index 8c45948c1..000000000 --- a/third_party/proto/cosmos/staking/v1beta1/tx.proto +++ /dev/null @@ -1,126 +0,0 @@ -syntax = "proto3"; -package cosmos.staking.v1beta1; - -import "google/protobuf/any.proto"; -import "google/protobuf/timestamp.proto"; -import "gogoproto/gogo.proto"; - -import "cosmos_proto/cosmos.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/staking/v1beta1/staking.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types"; - -// Msg defines the staking Msg service. -service Msg { - // CreateValidator defines a method for creating a new validator. - rpc CreateValidator(MsgCreateValidator) returns (MsgCreateValidatorResponse); - - // EditValidator defines a method for editing an existing validator. - rpc EditValidator(MsgEditValidator) returns (MsgEditValidatorResponse); - - // Delegate defines a method for performing a delegation of coins - // from a delegator to a validator. - rpc Delegate(MsgDelegate) returns (MsgDelegateResponse); - - // BeginRedelegate defines a method for performing a redelegation - // of coins from a delegator and source validator to a destination validator. - rpc BeginRedelegate(MsgBeginRedelegate) returns (MsgBeginRedelegateResponse); - - // Undelegate defines a method for performing an undelegation from a - // delegate and a validator. - rpc Undelegate(MsgUndelegate) returns (MsgUndelegateResponse); -} - -// MsgCreateValidator defines a SDK message for creating a new validator. -message MsgCreateValidator { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Description description = 1 [(gogoproto.nullable) = false]; - CommissionRates commission = 2 [(gogoproto.nullable) = false]; - string min_self_delegation = 3 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"min_self_delegation\"", - (gogoproto.nullable) = false - ]; - string delegator_address = 4 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_address = 5 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - google.protobuf.Any pubkey = 6 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"]; - cosmos.base.v1beta1.Coin value = 7 [(gogoproto.nullable) = false]; -} - -// MsgCreateValidatorResponse defines the Msg/CreateValidator response type. -message MsgCreateValidatorResponse {} - -// MsgEditValidator defines a SDK message for editing an existing validator. -message MsgEditValidator { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Description description = 1 [(gogoproto.nullable) = false]; - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"address\""]; - - // We pass a reference to the new commission rate and min self delegation as - // it's not mandatory to update. If not updated, the deserialized rate will be - // zero with no way to distinguish if an update was intended. - // REF: #2373 - string commission_rate = 3 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.moretags) = "yaml:\"commission_rate\"" - ]; - string min_self_delegation = 4 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"min_self_delegation\"" - ]; -} - -// MsgEditValidatorResponse defines the Msg/EditValidator response type. -message MsgEditValidatorResponse {} - -// MsgDelegate defines a SDK message for performing a delegation of coins -// from a delegator to a validator. -message MsgDelegate { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; -} - -// MsgDelegateResponse defines the Msg/Delegate response type. -message MsgDelegateResponse {} - -// MsgBeginRedelegate defines a SDK message for performing a redelegation -// of coins from a delegator and source validator to a destination validator. -message MsgBeginRedelegate { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""]; - string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""]; - cosmos.base.v1beta1.Coin amount = 4 [(gogoproto.nullable) = false]; -} - -// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. -message MsgBeginRedelegateResponse { - google.protobuf.Timestamp completion_time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} - -// MsgUndelegate defines a SDK message for performing an undelegation from a -// delegate and a validator. -message MsgUndelegate { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""]; - string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""]; - cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; -} - -// MsgUndelegateResponse defines the Msg/Undelegate response type. -message MsgUndelegateResponse { - google.protobuf.Timestamp completion_time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} diff --git a/third_party/proto/cosmos/tx/signing/v1beta1/signing.proto b/third_party/proto/cosmos/tx/signing/v1beta1/signing.proto deleted file mode 100644 index c76c231ad..000000000 --- a/third_party/proto/cosmos/tx/signing/v1beta1/signing.proto +++ /dev/null @@ -1,91 +0,0 @@ -syntax = "proto3"; -package cosmos.tx.signing.v1beta1; - -import "cosmos/crypto/multisig/v1beta1/multisig.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types/tx/signing"; - -// SignMode represents a signing mode with its own security guarantees. -enum SignMode { - // SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - // rejected - SIGN_MODE_UNSPECIFIED = 0; - - // SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - // verified with raw bytes from Tx - SIGN_MODE_DIRECT = 1; - - // SIGN_MODE_TEXTUAL is a future signing mode that will verify some - // human-readable textual representation on top of the binary representation - // from SIGN_MODE_DIRECT - SIGN_MODE_TEXTUAL = 2; - - // SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - // Amino JSON and will be removed in the future - SIGN_MODE_LEGACY_AMINO_JSON = 127; - - // SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - // SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - // - // Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - // but is not implemented on the SDK by default. To enable EIP-191, you need - // to pass a custom `TxConfig` that has an implementation of - // `SignModeHandler` for EIP-191. The SDK may decide to fully support - // EIP-191 in the future. - // - // Since: cosmos-sdk 0.45.2 - SIGN_MODE_EIP_191 = 191; -} - -// SignatureDescriptors wraps multiple SignatureDescriptor's. -message SignatureDescriptors { - // signatures are the signature descriptors - repeated SignatureDescriptor signatures = 1; -} - -// SignatureDescriptor is a convenience type which represents the full data for -// a signature including the public key of the signer, signing modes and the -// signature itself. It is primarily used for coordinating signatures between -// clients. -message SignatureDescriptor { - // public_key is the public key of the signer - google.protobuf.Any public_key = 1; - - Data data = 2; - - // sequence is the sequence of the account, which describes the - // number of committed transactions signed by a given address. It is used to prevent - // replay attacks. - uint64 sequence = 3; - - // Data represents signature data - message Data { - // sum is the oneof that specifies whether this represents single or multi-signature data - oneof sum { - // single represents a single signer - Single single = 1; - - // multi represents a multisig signer - Multi multi = 2; - } - - // Single is the signature data for a single signer - message Single { - // mode is the signing mode of the single signer - SignMode mode = 1; - - // signature is the raw signature bytes - bytes signature = 2; - } - - // Multi is the signature data for a multisig public key - message Multi { - // bitarray specifies which keys within the multisig are signing - cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1; - - // signatures is the signatures of the multi-signature - repeated Data signatures = 2; - } - } -} diff --git a/third_party/proto/cosmos/tx/v1beta1/service.proto b/third_party/proto/cosmos/tx/v1beta1/service.proto deleted file mode 100644 index 7a014f4b9..000000000 --- a/third_party/proto/cosmos/tx/v1beta1/service.proto +++ /dev/null @@ -1,165 +0,0 @@ -syntax = "proto3"; -package cosmos.tx.v1beta1; - -import "google/api/annotations.proto"; -import "cosmos/base/abci/v1beta1/abci.proto"; -import "cosmos/tx/v1beta1/tx.proto"; -import "gogoproto/gogo.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "tendermint/types/block.proto"; -import "tendermint/types/types.proto"; - -option (gogoproto.goproto_registration) = true; -option go_package = "github.com/cosmos/cosmos-sdk/types/tx"; - -// Service defines a gRPC service for interacting with transactions. -service Service { - // Simulate simulates executing a transaction for estimating gas usage. - rpc Simulate(SimulateRequest) returns (SimulateResponse) { - option (google.api.http) = { - post: "/cosmos/tx/v1beta1/simulate" - body: "*" - }; - } - // GetTx fetches a tx by hash. - rpc GetTx(GetTxRequest) returns (GetTxResponse) { - option (google.api.http).get = "/cosmos/tx/v1beta1/txs/{hash}"; - } - // BroadcastTx broadcast transaction. - rpc BroadcastTx(BroadcastTxRequest) returns (BroadcastTxResponse) { - option (google.api.http) = { - post: "/cosmos/tx/v1beta1/txs" - body: "*" - }; - } - // GetTxsEvent fetches txs by event. - rpc GetTxsEvent(GetTxsEventRequest) returns (GetTxsEventResponse) { - option (google.api.http).get = "/cosmos/tx/v1beta1/txs"; - } - // GetBlockWithTxs fetches a block with decoded txs. - // - // Since: cosmos-sdk 0.45.2 - rpc GetBlockWithTxs(GetBlockWithTxsRequest) returns (GetBlockWithTxsResponse) { - option (google.api.http).get = "/cosmos/tx/v1beta1/txs/block/{height}"; - } -} - -// GetTxsEventRequest is the request type for the Service.TxsByEvents -// RPC method. -message GetTxsEventRequest { - // events is the list of transaction event type. - repeated string events = 1; - // pagination defines a pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; - OrderBy order_by = 3; -} - -// OrderBy defines the sorting order -enum OrderBy { - // ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. - ORDER_BY_UNSPECIFIED = 0; - // ORDER_BY_ASC defines ascending order - ORDER_BY_ASC = 1; - // ORDER_BY_DESC defines descending order - ORDER_BY_DESC = 2; -} - -// GetTxsEventResponse is the response type for the Service.TxsByEvents -// RPC method. -message GetTxsEventResponse { - // txs is the list of queried transactions. - repeated cosmos.tx.v1beta1.Tx txs = 1; - // tx_responses is the list of queried TxResponses. - repeated cosmos.base.abci.v1beta1.TxResponse tx_responses = 2; - // pagination defines a pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 3; -} - -// BroadcastTxRequest is the request type for the Service.BroadcastTxRequest -// RPC method. -message BroadcastTxRequest { - // tx_bytes is the raw transaction. - bytes tx_bytes = 1; - BroadcastMode mode = 2; -} - -// BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method. -enum BroadcastMode { - // zero-value for mode ordering - BROADCAST_MODE_UNSPECIFIED = 0; - // BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - // the tx to be committed in a block. - BROADCAST_MODE_BLOCK = 1; - // BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - // a CheckTx execution response only. - BROADCAST_MODE_SYNC = 2; - // BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - // immediately. - BROADCAST_MODE_ASYNC = 3; -} - -// BroadcastTxResponse is the response type for the -// Service.BroadcastTx method. -message BroadcastTxResponse { - // tx_response is the queried TxResponses. - cosmos.base.abci.v1beta1.TxResponse tx_response = 1; -} - -// SimulateRequest is the request type for the Service.Simulate -// RPC method. -message SimulateRequest { - // tx is the transaction to simulate. - // Deprecated. Send raw tx bytes instead. - cosmos.tx.v1beta1.Tx tx = 1 [deprecated = true]; - // tx_bytes is the raw transaction. - // - // Since: cosmos-sdk 0.43 - bytes tx_bytes = 2; -} - -// SimulateResponse is the response type for the -// Service.SimulateRPC method. -message SimulateResponse { - // gas_info is the information about gas used in the simulation. - cosmos.base.abci.v1beta1.GasInfo gas_info = 1; - // result is the result of the simulation. - cosmos.base.abci.v1beta1.Result result = 2; -} - -// GetTxRequest is the request type for the Service.GetTx -// RPC method. -message GetTxRequest { - // hash is the tx hash to query, encoded as a hex string. - string hash = 1; -} - -// GetTxResponse is the response type for the Service.GetTx method. -message GetTxResponse { - // tx is the queried transaction. - cosmos.tx.v1beta1.Tx tx = 1; - // tx_response is the queried TxResponses. - cosmos.base.abci.v1beta1.TxResponse tx_response = 2; -} - -// GetBlockWithTxsRequest is the request type for the Service.GetBlockWithTxs -// RPC method. -// -// Since: cosmos-sdk 0.45.2 -message GetBlockWithTxsRequest { - // height is the height of the block to query. - int64 height = 1; - // pagination defines a pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs method. -// -// Since: cosmos-sdk 0.45.2 -message GetBlockWithTxsResponse { - // txs are the transactions in the block. - repeated cosmos.tx.v1beta1.Tx txs = 1; - .tendermint.types.BlockID block_id = 2; - .tendermint.types.Block block = 3; - // pagination defines a pagination for the response. - cosmos.base.query.v1beta1.PageResponse pagination = 4; -} \ No newline at end of file diff --git a/third_party/proto/cosmos/tx/v1beta1/tx.proto b/third_party/proto/cosmos/tx/v1beta1/tx.proto deleted file mode 100644 index 6d5caf12c..000000000 --- a/third_party/proto/cosmos/tx/v1beta1/tx.proto +++ /dev/null @@ -1,183 +0,0 @@ -syntax = "proto3"; -package cosmos.tx.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/crypto/multisig/v1beta1/multisig.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/tx/signing/v1beta1/signing.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/types/tx"; - -// Tx is the standard type used for broadcasting transactions. -message Tx { - // body is the processable content of the transaction - TxBody body = 1; - - // auth_info is the authorization related content of the transaction, - // specifically signers, signer modes and fee - AuthInfo auth_info = 2; - - // signatures is a list of signatures that matches the length and order of - // AuthInfo's signer_infos to allow connecting signature meta information like - // public key and signing mode by position. - repeated bytes signatures = 3; -} - -// TxRaw is a variant of Tx that pins the signer's exact binary representation -// of body and auth_info. This is used for signing, broadcasting and -// verification. The binary `serialize(tx: TxRaw)` is stored in Tendermint and -// the hash `sha256(serialize(tx: TxRaw))` becomes the "txhash", commonly used -// as the transaction ID. -message TxRaw { - // body_bytes is a protobuf serialization of a TxBody that matches the - // representation in SignDoc. - bytes body_bytes = 1; - - // auth_info_bytes is a protobuf serialization of an AuthInfo that matches the - // representation in SignDoc. - bytes auth_info_bytes = 2; - - // signatures is a list of signatures that matches the length and order of - // AuthInfo's signer_infos to allow connecting signature meta information like - // public key and signing mode by position. - repeated bytes signatures = 3; -} - -// SignDoc is the type used for generating sign bytes for SIGN_MODE_DIRECT. -message SignDoc { - // body_bytes is protobuf serialization of a TxBody that matches the - // representation in TxRaw. - bytes body_bytes = 1; - - // auth_info_bytes is a protobuf serialization of an AuthInfo that matches the - // representation in TxRaw. - bytes auth_info_bytes = 2; - - // chain_id is the unique identifier of the chain this transaction targets. - // It prevents signed transactions from being used on another chain by an - // attacker - string chain_id = 3; - - // account_number is the account number of the account in state - uint64 account_number = 4; -} - -// TxBody is the body of a transaction that all signers sign over. -message TxBody { - // messages is a list of messages to be executed. The required signers of - // those messages define the number and order of elements in AuthInfo's - // signer_infos and Tx's signatures. Each required signer address is added to - // the list only the first time it occurs. - // By convention, the first required signer (usually from the first message) - // is referred to as the primary signer and pays the fee for the whole - // transaction. - repeated google.protobuf.Any messages = 1; - - // memo is any arbitrary note/comment to be added to the transaction. - // WARNING: in clients, any publicly exposed text should not be called memo, - // but should be called `note` instead (see https://github.com/cosmos/cosmos-sdk/issues/9122). - string memo = 2; - - // timeout is the block height after which this transaction will not - // be processed by the chain - uint64 timeout_height = 3; - - // extension_options are arbitrary options that can be added by chains - // when the default options are not sufficient. If any of these are present - // and can't be handled, the transaction will be rejected - repeated google.protobuf.Any extension_options = 1023; - - // extension_options are arbitrary options that can be added by chains - // when the default options are not sufficient. If any of these are present - // and can't be handled, they will be ignored - repeated google.protobuf.Any non_critical_extension_options = 2047; -} - -// AuthInfo describes the fee and signer modes that are used to sign a -// transaction. -message AuthInfo { - // signer_infos defines the signing modes for the required signers. The number - // and order of elements must match the required signers from TxBody's - // messages. The first element is the primary signer and the one which pays - // the fee. - repeated SignerInfo signer_infos = 1; - - // Fee is the fee and gas limit for the transaction. The first signer is the - // primary signer and the one which pays the fee. The fee can be calculated - // based on the cost of evaluating the body and doing signature verification - // of the signers. This can be estimated via simulation. - Fee fee = 2; -} - -// SignerInfo describes the public key and signing mode of a single top-level -// signer. -message SignerInfo { - // public_key is the public key of the signer. It is optional for accounts - // that already exist in state. If unset, the verifier can use the required \ - // signer address for this position and lookup the public key. - google.protobuf.Any public_key = 1; - - // mode_info describes the signing mode of the signer and is a nested - // structure to support nested multisig pubkey's - ModeInfo mode_info = 2; - - // sequence is the sequence of the account, which describes the - // number of committed transactions signed by a given address. It is used to - // prevent replay attacks. - uint64 sequence = 3; -} - -// ModeInfo describes the signing mode of a single or nested multisig signer. -message ModeInfo { - // sum is the oneof that specifies whether this represents a single or nested - // multisig signer - oneof sum { - // single represents a single signer - Single single = 1; - - // multi represents a nested multisig signer - Multi multi = 2; - } - - // Single is the mode info for a single signer. It is structured as a message - // to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the - // future - message Single { - // mode is the signing mode of the single signer - cosmos.tx.signing.v1beta1.SignMode mode = 1; - } - - // Multi is the mode info for a multisig public key - message Multi { - // bitarray specifies which keys within the multisig are signing - cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1; - - // mode_infos is the corresponding modes of the signers of the multisig - // which could include nested multisig public keys - repeated ModeInfo mode_infos = 2; - } -} - -// Fee includes the amount of coins paid in fees and the maximum -// gas to be used by the transaction. The ratio yields an effective "gasprice", -// which must be above some miminum to be accepted into the mempool. -message Fee { - // amount is the amount of coins to be paid as a fee - repeated cosmos.base.v1beta1.Coin amount = 1 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - // gas_limit is the maximum gas that can be used in transaction processing - // before an out of gas error occurs - uint64 gas_limit = 2; - - // if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees. - // the payer must be a tx signer (and thus have signed this field in AuthInfo). - // setting this field does *not* change the ordering of required signers for the transaction. - string payer = 3; - - // if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used - // to pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does - // not support fee grants, this will fail - string granter = 4; -} diff --git a/third_party/proto/cosmos/upgrade/v1beta1/query.proto b/third_party/proto/cosmos/upgrade/v1beta1/query.proto deleted file mode 100644 index dd14ba640..000000000 --- a/third_party/proto/cosmos/upgrade/v1beta1/query.proto +++ /dev/null @@ -1,104 +0,0 @@ -syntax = "proto3"; -package cosmos.upgrade.v1beta1; - -import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; -import "cosmos/upgrade/v1beta1/upgrade.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/upgrade/types"; - -// Query defines the gRPC upgrade querier service. -service Query { - // CurrentPlan queries the current upgrade plan. - rpc CurrentPlan(QueryCurrentPlanRequest) returns (QueryCurrentPlanResponse) { - option (google.api.http).get = "/cosmos/upgrade/v1beta1/current_plan"; - } - - // AppliedPlan queries a previously applied upgrade plan by its name. - rpc AppliedPlan(QueryAppliedPlanRequest) returns (QueryAppliedPlanResponse) { - option (google.api.http).get = "/cosmos/upgrade/v1beta1/applied_plan/{name}"; - } - - // UpgradedConsensusState queries the consensus state that will serve - // as a trusted kernel for the next version of this chain. It will only be - // stored at the last height of this chain. - // UpgradedConsensusState RPC not supported with legacy querier - // This rpc is deprecated now that IBC has its own replacement - // (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) - rpc UpgradedConsensusState(QueryUpgradedConsensusStateRequest) returns (QueryUpgradedConsensusStateResponse) { - option deprecated = true; - option (google.api.http).get = "/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}"; - } - - // ModuleVersions queries the list of module versions from state. - // - // Since: cosmos-sdk 0.43 - rpc ModuleVersions(QueryModuleVersionsRequest) returns (QueryModuleVersionsResponse) { - option (google.api.http).get = "/cosmos/upgrade/v1beta1/module_versions"; - } -} - -// QueryCurrentPlanRequest is the request type for the Query/CurrentPlan RPC -// method. -message QueryCurrentPlanRequest {} - -// QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC -// method. -message QueryCurrentPlanResponse { - // plan is the current upgrade plan. - Plan plan = 1; -} - -// QueryCurrentPlanRequest is the request type for the Query/AppliedPlan RPC -// method. -message QueryAppliedPlanRequest { - // name is the name of the applied plan to query for. - string name = 1; -} - -// QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC -// method. -message QueryAppliedPlanResponse { - // height is the block height at which the plan was applied. - int64 height = 1; -} - -// QueryUpgradedConsensusStateRequest is the request type for the Query/UpgradedConsensusState -// RPC method. -message QueryUpgradedConsensusStateRequest { - option deprecated = true; - - // last height of the current chain must be sent in request - // as this is the height under which next consensus state is stored - int64 last_height = 1; -} - -// QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState -// RPC method. -message QueryUpgradedConsensusStateResponse { - option deprecated = true; - reserved 1; - - // Since: cosmos-sdk 0.43 - bytes upgraded_consensus_state = 2; -} - -// QueryModuleVersionsRequest is the request type for the Query/ModuleVersions -// RPC method. -// -// Since: cosmos-sdk 0.43 -message QueryModuleVersionsRequest { - // module_name is a field to query a specific module - // consensus version from state. Leaving this empty will - // fetch the full list of module versions from state - string module_name = 1; -} - -// QueryModuleVersionsResponse is the response type for the Query/ModuleVersions -// RPC method. -// -// Since: cosmos-sdk 0.43 -message QueryModuleVersionsResponse { - // module_versions is a list of module names with their consensus versions. - repeated ModuleVersion module_versions = 1; -} diff --git a/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto b/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto deleted file mode 100644 index e888b393d..000000000 --- a/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto +++ /dev/null @@ -1,78 +0,0 @@ -syntax = "proto3"; -package cosmos.upgrade.v1beta1; - -import "google/protobuf/any.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/upgrade/types"; -option (gogoproto.goproto_getters_all) = false; - -// Plan specifies information about a planned upgrade and when it should occur. -message Plan { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - // Sets the name for the upgrade. This name will be used by the upgraded - // version of the software to apply any special "on-upgrade" commands during - // the first BeginBlock method after the upgrade is applied. It is also used - // to detect whether a software version can handle a given upgrade. If no - // upgrade handler with this name has been set in the software, it will be - // assumed that the software is out-of-date when the upgrade Time or Height is - // reached and the software will exit. - string name = 1; - - // Deprecated: Time based upgrades have been deprecated. Time based upgrade logic - // has been removed from the SDK. - // If this field is not empty, an error will be thrown. - google.protobuf.Timestamp time = 2 [deprecated = true, (gogoproto.stdtime) = true, (gogoproto.nullable) = false]; - - // The height at which the upgrade must be performed. - // Only used if Time is not set. - int64 height = 3; - - // Any application specific upgrade info to be included on-chain - // such as a git commit that validators could automatically upgrade to - string info = 4; - - // Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been - // moved to the IBC module in the sub module 02-client. - // If this field is not empty, an error will be thrown. - google.protobuf.Any upgraded_client_state = 5 - [deprecated = true, (gogoproto.moretags) = "yaml:\"upgraded_client_state\""]; -} - -// SoftwareUpgradeProposal is a gov Content type for initiating a software -// upgrade. -message SoftwareUpgradeProposal { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - string title = 1; - string description = 2; - Plan plan = 3 [(gogoproto.nullable) = false]; -} - -// CancelSoftwareUpgradeProposal is a gov Content type for cancelling a software -// upgrade. -message CancelSoftwareUpgradeProposal { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = false; - - string title = 1; - string description = 2; -} - -// ModuleVersion specifies a module and its consensus version. -// -// Since: cosmos-sdk 0.43 -message ModuleVersion { - option (gogoproto.equal) = true; - option (gogoproto.goproto_stringer) = true; - - // name of the app module - string name = 1; - - // consensus version of the app module - uint64 version = 2; -} diff --git a/third_party/proto/cosmos/vesting/v1beta1/tx.proto b/third_party/proto/cosmos/vesting/v1beta1/tx.proto deleted file mode 100644 index c49be802a..000000000 --- a/third_party/proto/cosmos/vesting/v1beta1/tx.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; -package cosmos.vesting.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"; - -// Msg defines the bank Msg service. -service Msg { - // CreateVestingAccount defines a method that enables creating a vesting - // account. - rpc CreateVestingAccount(MsgCreateVestingAccount) returns (MsgCreateVestingAccountResponse); -} - -// MsgCreateVestingAccount defines a message that enables creating a vesting -// account. -message MsgCreateVestingAccount { - option (gogoproto.equal) = true; - - string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""]; - string to_address = 2 [(gogoproto.moretags) = "yaml:\"to_address\""]; - repeated cosmos.base.v1beta1.Coin amount = 3 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; - - int64 end_time = 4 [(gogoproto.moretags) = "yaml:\"end_time\""]; - bool delayed = 5; -} - -// MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type. -message MsgCreateVestingAccountResponse {} \ No newline at end of file diff --git a/third_party/proto/cosmos/vesting/v1beta1/vesting.proto b/third_party/proto/cosmos/vesting/v1beta1/vesting.proto deleted file mode 100644 index e9f661f93..000000000 --- a/third_party/proto/cosmos/vesting/v1beta1/vesting.proto +++ /dev/null @@ -1,85 +0,0 @@ -syntax = "proto3"; -package cosmos.vesting.v1beta1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "cosmos/auth/v1beta1/auth.proto"; - -option go_package = "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"; - -// BaseVestingAccount implements the VestingAccount interface. It contains all -// the necessary fields needed for any vesting account implementation. -message BaseVestingAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - cosmos.auth.v1beta1.BaseAccount base_account = 1 [(gogoproto.embed) = true]; - repeated cosmos.base.v1beta1.Coin original_vesting = 2 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"original_vesting\"" - ]; - repeated cosmos.base.v1beta1.Coin delegated_free = 3 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"delegated_free\"" - ]; - repeated cosmos.base.v1beta1.Coin delegated_vesting = 4 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", - (gogoproto.moretags) = "yaml:\"delegated_vesting\"" - ]; - int64 end_time = 5 [(gogoproto.moretags) = "yaml:\"end_time\""]; -} - -// ContinuousVestingAccount implements the VestingAccount interface. It -// continuously vests by unlocking coins linearly with respect to time. -message ContinuousVestingAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true]; - int64 start_time = 2 [(gogoproto.moretags) = "yaml:\"start_time\""]; -} - -// DelayedVestingAccount implements the VestingAccount interface. It vests all -// coins after a specific time, but non prior. In other words, it keeps them -// locked until a specified time. -message DelayedVestingAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true]; -} - -// Period defines a length of time and amount of coins that will vest. -message Period { - option (gogoproto.goproto_stringer) = false; - - int64 length = 1; - repeated cosmos.base.v1beta1.Coin amount = 2 - [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"]; -} - -// PeriodicVestingAccount implements the VestingAccount interface. It -// periodically vests by unlocking coins during each specified period. -message PeriodicVestingAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true]; - int64 start_time = 2 [(gogoproto.moretags) = "yaml:\"start_time\""]; - repeated Period vesting_periods = 3 [(gogoproto.moretags) = "yaml:\"vesting_periods\"", (gogoproto.nullable) = false]; -} - -// PermanentLockedAccount implements the VestingAccount interface. It does -// not ever release coins, locking them indefinitely. Coins in this account can -// still be used for delegating and for governance votes even while locked. -// -// Since: cosmos-sdk 0.43 -message PermanentLockedAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true]; -} diff --git a/third_party/proto/cosmos_proto/cosmos.proto b/third_party/proto/cosmos_proto/cosmos.proto deleted file mode 100644 index d4719a38f..000000000 --- a/third_party/proto/cosmos_proto/cosmos.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; -package cosmos_proto; - -import "google/protobuf/descriptor.proto"; - -option go_package = "github.com/regen-network/cosmos-proto"; - -extend google.protobuf.MessageOptions { - string interface_type = 93001; - - string implements_interface = 93002; -} - -extend google.protobuf.FieldOptions { string accepts_interface = 93001; } diff --git a/third_party/proto/ethermint/crypto/v1/ethsecp256k1/keys.proto b/third_party/proto/ethermint/crypto/v1/ethsecp256k1/keys.proto deleted file mode 100644 index 4bde4739b..000000000 --- a/third_party/proto/ethermint/crypto/v1/ethsecp256k1/keys.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; -package ethermint.crypto.v1.ethsecp256k1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/evmos/ethermint/crypto/ethsecp256k1"; - -// PubKey defines a type alias for an ecdsa.PublicKey that implements -// Tendermint's PubKey interface. It represents the 33-byte compressed public -// key format. -message PubKey { - option (gogoproto.goproto_stringer) = false; - - bytes key = 1; -} - -// PrivKey defines a type alias for an ecdsa.PrivateKey that implements -// Tendermint's PrivateKey interface. -message PrivKey { bytes key = 1; } diff --git a/third_party/proto/ethermint/evm/v1/evm.proto b/third_party/proto/ethermint/evm/v1/evm.proto deleted file mode 100644 index 313dd56e4..000000000 --- a/third_party/proto/ethermint/evm/v1/evm.proto +++ /dev/null @@ -1,235 +0,0 @@ -syntax = "proto3"; -package ethermint.evm.v1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/evmos/ethermint/x/evm/types"; - -// Params defines the EVM module parameters -message Params { - // evm denom represents the token denomination used to run the EVM state - // transitions. - string evm_denom = 1 [ (gogoproto.moretags) = "yaml:\"evm_denom\"" ]; - // enable create toggles state transitions that use the vm.Create function - bool enable_create = 2 [ (gogoproto.moretags) = "yaml:\"enable_create\"" ]; - // enable call toggles state transitions that use the vm.Call function - bool enable_call = 3 [ (gogoproto.moretags) = "yaml:\"enable_call\"" ]; - // extra eips defines the additional EIPs for the vm.Config - repeated int64 extra_eips = 4 [ - (gogoproto.customname) = "ExtraEIPs", - (gogoproto.moretags) = "yaml:\"extra_eips\"" - ]; - // chain config defines the EVM chain configuration parameters - ChainConfig chain_config = 5 [ - (gogoproto.moretags) = "yaml:\"chain_config\"", - (gogoproto.nullable) = false - ]; - // Allow unprotected transactions defines if replay-protected (i.e non EIP155 - // signed) transactions can be executed on the state machine. - bool allow_unprotected_txs = 6; -} - -// ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values -// instead of *big.Int. -message ChainConfig { - // Homestead switch block (nil no fork, 0 = already homestead) - string homestead_block = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"homestead_block\"" - ]; - // TheDAO hard-fork switch block (nil no fork) - string dao_fork_block = 2 [ - (gogoproto.customname) = "DAOForkBlock", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"dao_fork_block\"" - ]; - // Whether the nodes supports or opposes the DAO hard-fork - bool dao_fork_support = 3 [ - (gogoproto.customname) = "DAOForkSupport", - (gogoproto.moretags) = "yaml:\"dao_fork_support\"" - ]; - // EIP150 implements the Gas price changes - // (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork) - string eip150_block = 4 [ - (gogoproto.customname) = "EIP150Block", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"eip150_block\"" - ]; - // EIP150 HF hash (needed for header only clients as only gas pricing changed) - string eip150_hash = 5 [ - (gogoproto.customname) = "EIP150Hash", - (gogoproto.moretags) = "yaml:\"byzantium_block\"" - ]; - // EIP155Block HF block - string eip155_block = 6 [ - (gogoproto.customname) = "EIP155Block", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"eip155_block\"" - ]; - // EIP158 HF block - string eip158_block = 7 [ - (gogoproto.customname) = "EIP158Block", - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"eip158_block\"" - ]; - // Byzantium switch block (nil no fork, 0 = already on byzantium) - string byzantium_block = 8 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"byzantium_block\"" - ]; - // Constantinople switch block (nil no fork, 0 = already activated) - string constantinople_block = 9 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"constantinople_block\"" - ]; - // Petersburg switch block (nil same as Constantinople) - string petersburg_block = 10 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"petersburg_block\"" - ]; - // Istanbul switch block (nil no fork, 0 = already on istanbul) - string istanbul_block = 11 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"istanbul_block\"" - ]; - // Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) - string muir_glacier_block = 12 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"muir_glacier_block\"" - ]; - // Berlin switch block (nil = no fork, 0 = already on berlin) - string berlin_block = 13 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"berlin_block\"" - ]; - // DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated - reserved 14, 15, 16; - reserved "yolo_v3_block", "ewasm_block", "catalyst_block"; - // London switch block (nil = no fork, 0 = already on london) - string london_block = 17 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"london_block\"" - ]; - // Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) - string arrow_glacier_block = 18 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"arrow_glacier_block\"" - ]; - // EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge proceedings) - string merge_fork_block = 19 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"merge_fork_block\"" - ]; -} - -// State represents a single Storage key value pair item. -message State { - string key = 1; - string value = 2; -} - -// TransactionLogs define the logs generated from a transaction execution -// with a given hash. It it used for import/export data as transactions are not -// persisted on blockchain state after an upgrade. -message TransactionLogs { - string hash = 1; - repeated Log logs = 2; -} - -// Log represents an protobuf compatible Ethereum Log that defines a contract -// log event. These events are generated by the LOG opcode and stored/indexed by -// the node. -message Log { - // Consensus fields: - - // address of the contract that generated the event - string address = 1; - // list of topics provided by the contract. - repeated string topics = 2; - // supplied by the contract, usually ABI-encoded - bytes data = 3; - - // Derived fields. These fields are filled in by the node - // but not secured by consensus. - - // block in which the transaction was included - uint64 block_number = 4 [ (gogoproto.jsontag) = "blockNumber" ]; - // hash of the transaction - string tx_hash = 5 [ (gogoproto.jsontag) = "transactionHash" ]; - // index of the transaction in the block - uint64 tx_index = 6 [ (gogoproto.jsontag) = "transactionIndex" ]; - // hash of the block in which the transaction was included - string block_hash = 7 [ (gogoproto.jsontag) = "blockHash" ]; - // index of the log in the block - uint64 index = 8 [ (gogoproto.jsontag) = "logIndex" ]; - - // The Removed field is true if this log was reverted due to a chain - // reorganisation. You must pay attention to this field if you receive logs - // through a filter query. - bool removed = 9; -} - -// TxResult stores results of Tx execution. -message TxResult { - option (gogoproto.goproto_getters) = false; - - // contract_address contains the ethereum address of the created contract (if - // any). If the state transition is an evm.Call, the contract address will be - // empty. - string contract_address = 1 - [ (gogoproto.moretags) = "yaml:\"contract_address\"" ]; - // bloom represents the bloom filter bytes - bytes bloom = 2; - // tx_logs contains the transaction hash and the proto-compatible ethereum - // logs. - TransactionLogs tx_logs = 3 [ - (gogoproto.moretags) = "yaml:\"tx_logs\"", - (gogoproto.nullable) = false - ]; - // ret defines the bytes from the execution. - bytes ret = 4; - // reverted flag is set to true when the call has been reverted - bool reverted = 5; - // gas_used notes the amount of gas consumed while execution - uint64 gas_used = 6; -} - -// AccessTuple is the element type of an access list. -message AccessTuple { - option (gogoproto.goproto_getters) = false; - - // hex formatted ethereum address - string address = 1; - // hex formatted hashes of the storage keys - repeated string storage_keys = 2 [ (gogoproto.jsontag) = "storageKeys" ]; -} - -// TraceConfig holds extra parameters to trace functions. -message TraceConfig { - // DEPRECATED: DisableMemory and DisableReturnData have been renamed to - // Enable*. - reserved 4, 7; - reserved "disable_memory", "disable_return_data"; - - // custom javascript tracer - string tracer = 1; - // overrides the default timeout of 5 seconds for JavaScript-based tracing - // calls - string timeout = 2; - // number of blocks the tracer is willing to go back - uint64 reexec = 3; - // disable stack capture - bool disable_stack = 5 [ (gogoproto.jsontag) = "disableStack" ]; - // disable storage capture - bool disable_storage = 6 [ (gogoproto.jsontag) = "disableStorage" ]; - // print output during capture end - bool debug = 8; - // maximum length of output, but zero means unlimited - int32 limit = 9; - // Chain overrides, can be used to execute a trace using future fork rules - ChainConfig overrides = 10; - // enable memory capture - bool enable_memory = 11 [ (gogoproto.jsontag) = "enableMemory" ]; - // enable return data capture - bool enable_return_data = 12 [ (gogoproto.jsontag) = "enableReturnData" ]; -} diff --git a/third_party/proto/ethermint/evm/v1/genesis.proto b/third_party/proto/ethermint/evm/v1/genesis.proto deleted file mode 100644 index 196bbd23a..000000000 --- a/third_party/proto/ethermint/evm/v1/genesis.proto +++ /dev/null @@ -1,28 +0,0 @@ -syntax = "proto3"; -package ethermint.evm.v1; - -import "gogoproto/gogo.proto"; -import "ethermint/evm/v1/evm.proto"; - -option go_package = "github.com/evmos/ethermint/x/evm/types"; - -// GenesisState defines the evm module's genesis state. -message GenesisState { - // accounts is an array containing the ethereum genesis accounts. - repeated GenesisAccount accounts = 1 [ (gogoproto.nullable) = false ]; - // params defines all the parameters of the module. - Params params = 2 [ (gogoproto.nullable) = false ]; -} - -// GenesisAccount defines an account to be initialized in the genesis state. -// Its main difference between with Geth's GenesisAccount is that it uses a -// custom storage type and that it doesn't contain the private key field. -message GenesisAccount { - // address defines an ethereum hex formated address of an account - string address = 1; - // code defines the hex bytes of the account code. - string code = 2; - // storage defines the set of state key values for the account. - repeated State storage = 3 - [ (gogoproto.nullable) = false, (gogoproto.castrepeated) = "Storage" ]; -} diff --git a/third_party/proto/ethermint/evm/v1/query.proto b/third_party/proto/ethermint/evm/v1/query.proto deleted file mode 100644 index 22d9c2c44..000000000 --- a/third_party/proto/ethermint/evm/v1/query.proto +++ /dev/null @@ -1,289 +0,0 @@ -syntax = "proto3"; -package ethermint.evm.v1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "google/api/annotations.proto"; -import "ethermint/evm/v1/evm.proto"; -import "ethermint/evm/v1/tx.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/evmos/ethermint/x/evm/types"; - -// Query defines the gRPC querier service. -service Query { - // Account queries an Ethereum account. - rpc Account(QueryAccountRequest) returns (QueryAccountResponse) { - option (google.api.http).get = "/ethermint/evm/v1/account/{address}"; - } - - // CosmosAccount queries an Ethereum account's Cosmos Address. - rpc CosmosAccount(QueryCosmosAccountRequest) - returns (QueryCosmosAccountResponse) { - option (google.api.http).get = "/ethermint/evm/v1/cosmos_account/{address}"; - } - - // ValidatorAccount queries an Ethereum account's from a validator consensus - // Address. - rpc ValidatorAccount(QueryValidatorAccountRequest) - returns (QueryValidatorAccountResponse) { - option (google.api.http).get = - "/ethermint/evm/v1/validator_account/{cons_address}"; - } - - // Balance queries the balance of a the EVM denomination for a single - // EthAccount. - rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) { - option (google.api.http).get = "/ethermint/evm/v1/balances/{address}"; - } - - // Storage queries the balance of all coins for a single account. - rpc Storage(QueryStorageRequest) returns (QueryStorageResponse) { - option (google.api.http).get = "/ethermint/evm/v1/storage/{address}/{key}"; - } - - // Code queries the balance of all coins for a single account. - rpc Code(QueryCodeRequest) returns (QueryCodeResponse) { - option (google.api.http).get = "/ethermint/evm/v1/codes/{address}"; - } - - // Params queries the parameters of x/evm module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/ethermint/evm/v1/params"; - } - - // EthCall implements the `eth_call` rpc api - rpc EthCall(EthCallRequest) returns (MsgEthereumTxResponse) { - option (google.api.http).get = "/ethermint/evm/v1/eth_call"; - } - - // EstimateGas implements the `eth_estimateGas` rpc api - rpc EstimateGas(EthCallRequest) returns (EstimateGasResponse) { - option (google.api.http).get = "/ethermint/evm/v1/estimate_gas"; - } - - // TraceTx implements the `debug_traceTransaction` rpc api - rpc TraceTx(QueryTraceTxRequest) returns (QueryTraceTxResponse) { - option (google.api.http).get = "/ethermint/evm/v1/trace_tx"; - } - - // TraceBlock implements the `debug_traceBlockByNumber` and `debug_traceBlockByHash` rpc api - rpc TraceBlock(QueryTraceBlockRequest) returns (QueryTraceBlockResponse) { - option (google.api.http).get = "/ethermint/evm/v1/trace_block"; - } - - // BaseFee queries the base fee of the parent block of the current block, - // it's similar to feemarket module's method, but also checks london hardfork status. - rpc BaseFee(QueryBaseFeeRequest) returns (QueryBaseFeeResponse) { - option (google.api.http).get = "/ethermint/evm/v1/base_fee"; - } - -} - -// QueryAccountRequest is the request type for the Query/Account RPC method. -message QueryAccountRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the ethereum hex address to query the account for. - string address = 1; -} - -// QueryAccountResponse is the response type for the Query/Account RPC method. -message QueryAccountResponse { - // balance is the balance of the EVM denomination. - string balance = 1; - // code hash is the hex-formatted code bytes from the EOA. - string code_hash = 2; - // nonce is the account's sequence number. - uint64 nonce = 3; -} - -// QueryCosmosAccountRequest is the request type for the Query/CosmosAccount RPC -// method. -message QueryCosmosAccountRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the ethereum hex address to query the account for. - string address = 1; -} - -// QueryCosmosAccountResponse is the response type for the Query/CosmosAccount -// RPC method. -message QueryCosmosAccountResponse { - // cosmos_address is the cosmos address of the account. - string cosmos_address = 1; - // sequence is the account's sequence number. - uint64 sequence = 2; - // account_number is the account numbert - uint64 account_number = 3; -} - -// QueryValidatorAccountRequest is the request type for the -// Query/ValidatorAccount RPC method. -message QueryValidatorAccountRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // cons_address is the validator cons address to query the account for. - string cons_address = 1; -} - -// QueryValidatorAccountResponse is the response type for the -// Query/ValidatorAccount RPC method. -message QueryValidatorAccountResponse { - // account_address is the cosmos address of the account in bech32 format. - string account_address = 1; - // sequence is the account's sequence number. - uint64 sequence = 2; - // account_number is the account number - uint64 account_number = 3; -} - -// QueryBalanceRequest is the request type for the Query/Balance RPC method. -message QueryBalanceRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the ethereum hex address to query the balance for. - string address = 1; -} - -// QueryBalanceResponse is the response type for the Query/Balance RPC method. -message QueryBalanceResponse { - // balance is the balance of the EVM denomination. - string balance = 1; -} - -// QueryStorageRequest is the request type for the Query/Storage RPC method. -message QueryStorageRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - /// address is the ethereum hex address to query the storage state for. - string address = 1; - - // key defines the key of the storage state - string key = 2; -} - -// QueryStorageResponse is the response type for the Query/Storage RPC -// method. -message QueryStorageResponse { - // key defines the storage state value hash associated with the given key. - string value = 1; -} - -// QueryCodeRequest is the request type for the Query/Code RPC method. -message QueryCodeRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // address is the ethereum hex address to query the code for. - string address = 1; -} - -// QueryCodeResponse is the response type for the Query/Code RPC -// method. -message QueryCodeResponse { - // code represents the code bytes from an ethereum address. - bytes code = 1; -} - -// QueryTxLogsRequest is the request type for the Query/TxLogs RPC method. -message QueryTxLogsRequest { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // hash is the ethereum transaction hex hash to query the logs for. - string hash = 1; - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryTxLogs is the response type for the Query/TxLogs RPC method. -message QueryTxLogsResponse { - // logs represents the ethereum logs generated from the given transaction. - repeated Log logs = 1; - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryParamsRequest defines the request type for querying x/evm parameters. -message QueryParamsRequest {} - -// QueryParamsResponse defines the response type for querying x/evm parameters. -message QueryParamsResponse { - // params define the evm module parameters. - Params params = 1 [ (gogoproto.nullable) = false ]; -} - -// EthCallRequest defines EthCall request -message EthCallRequest { - // same json format as the json rpc api. - bytes args = 1; - // the default gas cap to be used - uint64 gas_cap = 2; -} - -// EstimateGasResponse defines EstimateGas response -message EstimateGasResponse { - // the estimated gas - uint64 gas = 1; -} - -// QueryTraceTxRequest defines TraceTx request -message QueryTraceTxRequest { - // msgEthereumTx for the requested transaction - MsgEthereumTx msg = 1; - // tx_index is not necessary anymore - reserved 2; - reserved "tx_index"; - // TraceConfig holds extra parameters to trace functions. - TraceConfig trace_config = 3; - // the predecessor transactions included in the same block - // need to be replayed first to get correct context for tracing. - repeated MsgEthereumTx predecessors = 4; - // block number of requested transaction - int64 block_number = 5; - // block hex hash of requested transaction - string block_hash = 6; - // block time of requested transaction - google.protobuf.Timestamp block_time = 7 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} - -// QueryTraceTxResponse defines TraceTx response -message QueryTraceTxResponse { - // response serialized in bytes - bytes data = 1; -} - -// QueryTraceBlockRequest defines TraceTx request -message QueryTraceBlockRequest { - // txs messages in the block - repeated MsgEthereumTx txs = 1; - // TraceConfig holds extra parameters to trace functions. - TraceConfig trace_config = 3; - // block number - int64 block_number = 5; - // block hex hash - string block_hash = 6; - // block time - google.protobuf.Timestamp block_time = 7 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} - -// QueryTraceBlockResponse defines TraceBlock response -message QueryTraceBlockResponse { - bytes data = 1; -} - -// QueryBaseFeeRequest defines the request type for querying the EIP1559 base -// fee. -message QueryBaseFeeRequest {} - -// BaseFeeResponse returns the EIP1559 base fee. -message QueryBaseFeeResponse { - string base_fee = 1 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; -} diff --git a/third_party/proto/ethermint/evm/v1/tx.proto b/third_party/proto/ethermint/evm/v1/tx.proto deleted file mode 100644 index 3cd6e119b..000000000 --- a/third_party/proto/ethermint/evm/v1/tx.proto +++ /dev/null @@ -1,174 +0,0 @@ -syntax = "proto3"; -package ethermint.evm.v1; - -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "google/protobuf/any.proto"; -import "cosmos_proto/cosmos.proto"; -import "ethermint/evm/v1/evm.proto"; - -option go_package = "github.com/evmos/ethermint/x/evm/types"; - -// Msg defines the evm Msg service. -service Msg { - // EthereumTx defines a method submitting Ethereum transactions. - rpc EthereumTx(MsgEthereumTx) returns (MsgEthereumTxResponse) { - option (google.api.http).post = "/ethermint/evm/v1/ethereum_tx"; - }; -} - -// MsgEthereumTx encapsulates an Ethereum transaction as an SDK message. -message MsgEthereumTx { - option (gogoproto.goproto_getters) = false; - - // inner transaction data - google.protobuf.Any data = 1; - // caches - - // encoded storage size of the transaction - double size = 2 [ (gogoproto.jsontag) = "-" ]; - // transaction hash in hex format - string hash = 3 [ (gogoproto.moretags) = "rlp:\"-\"" ]; - // ethereum signer address in hex format. This address value is checked - // against the address derived from the signature (V, R, S) using the - // secp256k1 elliptic curve - string from = 4; -} - -// LegacyTx is the transaction data of regular Ethereum transactions. -// NOTE: All non-protected transactions (i.e non EIP155 signed) will fail if the -// AllowUnprotectedTxs parameter is disabled. -message LegacyTx { - option (gogoproto.goproto_getters) = false; - option (cosmos_proto.implements_interface) = "TxData"; - - // nonce corresponds to the account nonce (transaction sequence). - uint64 nonce = 1; - // gas price defines the value for each gas unit - string gas_price = 2 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; - // gas defines the gas limit defined for the transaction. - uint64 gas = 3 [ (gogoproto.customname) = "GasLimit" ]; - // hex formatted address of the recipient - string to = 4; - // value defines the unsigned integer value of the transaction amount. - string value = 5 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.customname) = "Amount" - ]; - // input defines the data payload bytes of the transaction. - bytes data = 6; - // v defines the signature value - bytes v = 7; - // r defines the signature value - bytes r = 8; - // s define the signature value - bytes s = 9; -} - -// AccessListTx is the data of EIP-2930 access list transactions. -message AccessListTx { - option (gogoproto.goproto_getters) = false; - option (cosmos_proto.implements_interface) = "TxData"; - - // destination EVM chain ID - string chain_id = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.customname) = "ChainID", - (gogoproto.jsontag) = "chainID" - ]; - // nonce corresponds to the account nonce (transaction sequence). - uint64 nonce = 2; - // gas price defines the value for each gas unit - string gas_price = 3 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; - // gas defines the gas limit defined for the transaction. - uint64 gas = 4 [ (gogoproto.customname) = "GasLimit" ]; - // hex formatted address of the recipient - string to = 5; - // value defines the unsigned integer value of the transaction amount. - string value = 6 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.customname) = "Amount" - ]; - // input defines the data payload bytes of the transaction. - bytes data = 7; - repeated AccessTuple accesses = 8 [ - (gogoproto.castrepeated) = "AccessList", - (gogoproto.jsontag) = "accessList", - (gogoproto.nullable) = false - ]; - // v defines the signature value - bytes v = 9; - // r defines the signature value - bytes r = 10; - // s define the signature value - bytes s = 11; -} - -// DynamicFeeTx is the data of EIP-1559 dinamic fee transactions. -message DynamicFeeTx { - option (gogoproto.goproto_getters) = false; - option (cosmos_proto.implements_interface) = "TxData"; - - // destination EVM chain ID - string chain_id = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.customname) = "ChainID", - (gogoproto.jsontag) = "chainID" - ]; - // nonce corresponds to the account nonce (transaction sequence). - uint64 nonce = 2; - // gas tip cap defines the max value for the gas tip - string gas_tip_cap = 3 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; - // gas fee cap defines the max value for the gas fee - string gas_fee_cap = 4 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; - // gas defines the gas limit defined for the transaction. - uint64 gas = 5 [ (gogoproto.customname) = "GasLimit" ]; - // hex formatted address of the recipient - string to = 6; - // value defines the the transaction amount. - string value = 7 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.customname) = "Amount" - ]; - // input defines the data payload bytes of the transaction. - bytes data = 8; - repeated AccessTuple accesses = 9 [ - (gogoproto.castrepeated) = "AccessList", - (gogoproto.jsontag) = "accessList", - (gogoproto.nullable) = false - ]; - // v defines the signature value - bytes v = 10; - // r defines the signature value - bytes r = 11; - // s define the signature value - bytes s = 12; -} - -message ExtensionOptionsEthereumTx { - option (gogoproto.goproto_getters) = false; -} - -// MsgEthereumTxResponse defines the Msg/EthereumTx response type. -message MsgEthereumTxResponse { - option (gogoproto.goproto_getters) = false; - - // ethereum transaction hash in hex format. This hash differs from the - // Tendermint sha256 hash of the transaction bytes. See - // https://github.com/tendermint/tendermint/issues/6539 for reference - string hash = 1; - // logs contains the transaction hash and the proto-compatible ethereum - // logs. - repeated Log logs = 2; - // returned data from evm function (result or data supplied with revert - // opcode) - bytes ret = 3; - // vm error is the error returned by vm execution - string vm_error = 4; - // gas consumed by the transaction - uint64 gas_used = 5; -} diff --git a/third_party/proto/ethermint/feemarket/v1/feemarket.proto b/third_party/proto/ethermint/feemarket/v1/feemarket.proto deleted file mode 100644 index 3aef92f12..000000000 --- a/third_party/proto/ethermint/feemarket/v1/feemarket.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; -package ethermint.feemarket.v1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/evmos/ethermint/x/feemarket/types"; - -// Params defines the EVM module parameters -message Params { - // no base fee forces the EIP-1559 base fee to 0 (needed for 0 price calls) - bool no_base_fee = 1; - // base fee change denominator bounds the amount the base fee can change - // between blocks. - uint32 base_fee_change_denominator = 2; - // elasticity multiplier bounds the maximum gas limit an EIP-1559 block may - // have. - uint32 elasticity_multiplier = 3; - // DEPRECATED: initial base fee for EIP-1559 blocks. - reserved 4; - reserved "initial_base_fee"; - // height at which the base fee calculation is enabled. - int64 enable_height = 5; - // base fee for EIP-1559 blocks. - string base_fee = 6 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.nullable) = false - ]; - // min_gas_price defines the minimum gas price value for cosmos and eth transactions - string min_gas_price = 7 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - // min gas denominator bounds the minimum gasUsed to be charged - // to senders based on GasLimit - string min_gas_multiplier = 8 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; -} diff --git a/third_party/proto/ethermint/feemarket/v1/genesis.proto b/third_party/proto/ethermint/feemarket/v1/genesis.proto deleted file mode 100644 index e3307844f..000000000 --- a/third_party/proto/ethermint/feemarket/v1/genesis.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; -package ethermint.feemarket.v1; - -import "gogoproto/gogo.proto"; -import "ethermint/feemarket/v1/feemarket.proto"; - -option go_package = "github.com/evmos/ethermint/x/feemarket/types"; - -// GenesisState defines the feemarket module's genesis state. -message GenesisState { - // params defines all the paramaters of the module. - Params params = 1 [ (gogoproto.nullable) = false ]; - // DEPRECATED: base fee is the exported value from previous software version. - // Zero by default. - reserved 2; - reserved "base_fee"; - // block gas is the amount of gas wanted on the last block before the upgrade. - // Zero by default. - uint64 block_gas = 3; -} \ No newline at end of file diff --git a/third_party/proto/ethermint/feemarket/v1/query.proto b/third_party/proto/ethermint/feemarket/v1/query.proto deleted file mode 100644 index 6006f833f..000000000 --- a/third_party/proto/ethermint/feemarket/v1/query.proto +++ /dev/null @@ -1,53 +0,0 @@ -syntax = "proto3"; -package ethermint.feemarket.v1; - -import "gogoproto/gogo.proto"; -// import "cosmos/base/query/v1beta1/pagination.proto"; -import "google/api/annotations.proto"; -import "ethermint/feemarket/v1/feemarket.proto"; - -option go_package = "github.com/evmos/ethermint/x/feemarket/types"; - -// Query defines the gRPC querier service. -service Query { - // Params queries the parameters of x/feemarket module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/ethermint/feemarket/v1/params"; - } - - // BaseFee queries the base fee of the parent block of the current block. - rpc BaseFee(QueryBaseFeeRequest) returns (QueryBaseFeeResponse) { - option (google.api.http).get = "/ethermint/feemarket/v1/base_fee"; - } - - // BlockGas queries the gas used at a given block height - rpc BlockGas(QueryBlockGasRequest) returns (QueryBlockGasResponse) { - option (google.api.http).get = "/ethermint/feemarket/v1/block_gas"; - } -} - -// QueryParamsRequest defines the request type for querying x/evm parameters. -message QueryParamsRequest {} - -// QueryParamsResponse defines the response type for querying x/evm parameters. -message QueryParamsResponse { - // params define the evm module parameters. - Params params = 1 [ (gogoproto.nullable) = false ]; -} - -// QueryBaseFeeRequest defines the request type for querying the EIP1559 base -// fee. -message QueryBaseFeeRequest {} - -// BaseFeeResponse returns the EIP1559 base fee. -message QueryBaseFeeResponse { - string base_fee = 1 - [ (gogoproto.customtype) = "cosmossdk.io/math.Int" ]; -} - -// QueryBlockGasRequest defines the request type for querying the EIP1559 base -// fee. -message QueryBlockGasRequest {} - -// QueryBlockGasResponse returns block gas used for a given height. -message QueryBlockGasResponse { int64 gas = 1; } \ No newline at end of file diff --git a/third_party/proto/ethermint/types/v1/account.proto b/third_party/proto/ethermint/types/v1/account.proto deleted file mode 100644 index 4a3a5d5d7..000000000 --- a/third_party/proto/ethermint/types/v1/account.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package ethermint.types.v1; - -import "cosmos/auth/v1beta1/auth.proto"; -import "cosmos_proto/cosmos.proto"; -import "gogoproto/gogo.proto"; - -option go_package = "github.com/evmos/ethermint/types"; - -// EthAccount implements the authtypes.AccountI interface and embeds an -// authtypes.BaseAccount type. It is compatible with the auth AccountKeeper. -message EthAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.equal) = false; - - option (cosmos_proto.implements_interface) = - "github.com/cosmos/cosmos-sdk/x/auth/types.AccountI"; - - cosmos.auth.v1beta1.BaseAccount base_account = 1 [ - (gogoproto.embed) = true, - (gogoproto.moretags) = "yaml:\"base_account\"" - ]; - string code_hash = 2 [ (gogoproto.moretags) = "yaml:\"code_hash\"" ]; -} diff --git a/third_party/proto/ethermint/types/v1/web3.proto b/third_party/proto/ethermint/types/v1/web3.proto deleted file mode 100644 index df6bf65b2..000000000 --- a/third_party/proto/ethermint/types/v1/web3.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package ethermint.types.v1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/evmos/ethermint/types"; - -message ExtensionOptionsWeb3Tx { - option (gogoproto.goproto_getters) = false; - - // typed data chain id used only in EIP712 Domain and should match - // Ethereum network ID in a Web3 provider (e.g. Metamask). - uint64 typed_data_chain_id = 1 [ - (gogoproto.jsontag) = "typedDataChainID,omitempty", - (gogoproto.customname) = "TypedDataChainID" - ]; - - // fee payer is an account address for the fee payer. It will be validated - // during EIP712 signature checking. - string fee_payer = 2 [ (gogoproto.jsontag) = "feePayer,omitempty" ]; - - // fee payer sig is a signature data from the fee paying account, - // allows to perform fee delegation when using EIP712 Domain. - bytes fee_payer_sig = 3 [ (gogoproto.jsontag) = "feePayerSig,omitempty" ]; -} diff --git a/third_party/proto/gogoproto/gogo.proto b/third_party/proto/gogoproto/gogo.proto deleted file mode 100644 index 91ff47185..000000000 --- a/third_party/proto/gogoproto/gogo.proto +++ /dev/null @@ -1,145 +0,0 @@ -// Protocol Buffers for Go with Gadgets -// -// Copyright (c) 2013, The GoGo Authors. All rights reserved. -// http://github.com/gogo/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; -package gogoproto; - -import "google/protobuf/descriptor.proto"; - -option java_package = "com.google.protobuf"; -option java_outer_classname = "GoGoProtos"; -option go_package = "github.com/gogo/protobuf/gogoproto"; - -extend google.protobuf.EnumOptions { - optional bool goproto_enum_prefix = 62001; - optional bool goproto_enum_stringer = 62021; - optional bool enum_stringer = 62022; - optional string enum_customname = 62023; - optional bool enumdecl = 62024; -} - -extend google.protobuf.EnumValueOptions { - optional string enumvalue_customname = 66001; -} - -extend google.protobuf.FileOptions { - optional bool goproto_getters_all = 63001; - optional bool goproto_enum_prefix_all = 63002; - optional bool goproto_stringer_all = 63003; - optional bool verbose_equal_all = 63004; - optional bool face_all = 63005; - optional bool gostring_all = 63006; - optional bool populate_all = 63007; - optional bool stringer_all = 63008; - optional bool onlyone_all = 63009; - - optional bool equal_all = 63013; - optional bool description_all = 63014; - optional bool testgen_all = 63015; - optional bool benchgen_all = 63016; - optional bool marshaler_all = 63017; - optional bool unmarshaler_all = 63018; - optional bool stable_marshaler_all = 63019; - - optional bool sizer_all = 63020; - - optional bool goproto_enum_stringer_all = 63021; - optional bool enum_stringer_all = 63022; - - optional bool unsafe_marshaler_all = 63023; - optional bool unsafe_unmarshaler_all = 63024; - - optional bool goproto_extensions_map_all = 63025; - optional bool goproto_unrecognized_all = 63026; - optional bool gogoproto_import = 63027; - optional bool protosizer_all = 63028; - optional bool compare_all = 63029; - optional bool typedecl_all = 63030; - optional bool enumdecl_all = 63031; - - optional bool goproto_registration = 63032; - optional bool messagename_all = 63033; - - optional bool goproto_sizecache_all = 63034; - optional bool goproto_unkeyed_all = 63035; -} - -extend google.protobuf.MessageOptions { - optional bool goproto_getters = 64001; - optional bool goproto_stringer = 64003; - optional bool verbose_equal = 64004; - optional bool face = 64005; - optional bool gostring = 64006; - optional bool populate = 64007; - optional bool stringer = 67008; - optional bool onlyone = 64009; - - optional bool equal = 64013; - optional bool description = 64014; - optional bool testgen = 64015; - optional bool benchgen = 64016; - optional bool marshaler = 64017; - optional bool unmarshaler = 64018; - optional bool stable_marshaler = 64019; - - optional bool sizer = 64020; - - optional bool unsafe_marshaler = 64023; - optional bool unsafe_unmarshaler = 64024; - - optional bool goproto_extensions_map = 64025; - optional bool goproto_unrecognized = 64026; - - optional bool protosizer = 64028; - optional bool compare = 64029; - - optional bool typedecl = 64030; - - optional bool messagename = 64033; - - optional bool goproto_sizecache = 64034; - optional bool goproto_unkeyed = 64035; -} - -extend google.protobuf.FieldOptions { - optional bool nullable = 65001; - optional bool embed = 65002; - optional string customtype = 65003; - optional string customname = 65004; - optional string jsontag = 65005; - optional string moretags = 65006; - optional string casttype = 65007; - optional string castkey = 65008; - optional string castvalue = 65009; - - optional bool stdtime = 65010; - optional bool stdduration = 65011; - optional bool wktpointer = 65012; - - optional string castrepeated = 65013; -} diff --git a/third_party/proto/google/api/annotations.proto b/third_party/proto/google/api/annotations.proto deleted file mode 100644 index 85c361b47..000000000 --- a/third_party/proto/google/api/annotations.proto +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2015, Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/http.proto"; -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "AnnotationsProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -extend google.protobuf.MethodOptions { - // See `HttpRule`. - HttpRule http = 72295728; -} diff --git a/third_party/proto/google/api/http.proto b/third_party/proto/google/api/http.proto deleted file mode 100644 index f5388aafa..000000000 --- a/third_party/proto/google/api/http.proto +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "HttpProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -// Defines the HTTP configuration for an API service. It contains a list of -// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -// to one or more HTTP REST API methods. -message Http { - // A list of HTTP configuration rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated HttpRule rules = 1; - - // When set to true, URL path parmeters will be fully URI-decoded except in - // cases of single segment matches in reserved expansion, where "%2F" will be - // left encoded. - // - // The default behavior is to not decode RFC 6570 reserved characters in multi - // segment matches. - bool fully_decode_reserved_expansion = 2; -} - -// `HttpRule` defines the mapping of an RPC method to one or more HTTP -// REST API methods. The mapping specifies how different portions of the RPC -// request message are mapped to URL path, URL query parameters, and -// HTTP request body. The mapping is typically specified as an -// `google.api.http` annotation on the RPC method, -// see "google/api/annotations.proto" for details. -// -// The mapping consists of a field specifying the path template and -// method kind. The path template can refer to fields in the request -// message, as in the example below which describes a REST GET -// operation on a resource collection of messages: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = -// "/v1/messages/{message_id}/{sub.subfield}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// SubMessage sub = 2; // `sub.subfield` is url-mapped -// } -// message Message { -// string text = 1; // content of the resource -// } -// -// The same http annotation can alternatively be expressed inside the -// `GRPC API Configuration` YAML file. -// -// http: -// rules: -// - selector: .Messaging.GetMessage -// get: /v1/messages/{message_id}/{sub.subfield} -// -// This definition enables an automatic, bidrectional mapping of HTTP -// JSON to RPC. Example: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: -// SubMessage(subfield: "foo"))` -// -// In general, not only fields but also field paths can be referenced -// from a path pattern. Fields mapped to the path pattern cannot be -// repeated and must have a primitive (non-message) type. -// -// Any fields in the request message which are not bound by the path -// pattern automatically become (optional) HTTP query -// parameters. Assume the following definition of the request message: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// int64 revision = 2; // becomes a parameter -// SubMessage sub = 3; // `sub.subfield` becomes a parameter -// } -// -// -// This enables a HTTP JSON to RPC mapping as below: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | -// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: -// "foo"))` -// -// Note that fields which are mapped to HTTP parameters must have a -// primitive type or a repeated primitive type. Message types are not -// allowed. In the case of a repeated type, the parameter can be -// repeated in the URL, as in `...?param=A¶m=B`. -// -// For HTTP method kinds which allow a request body, the `body` field -// specifies the mapping. Consider a REST update method on the -// message resource collection: -// -// -// service Messaging { -// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "message" -// }; -// } -// } -// message UpdateMessageRequest { -// string message_id = 1; // mapped to the URL -// Message message = 2; // mapped to the body -// } -// -// -// The following HTTP JSON to RPC mapping is enabled, where the -// representation of the JSON in the request body is determined by -// protos JSON encoding: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: -// "123456" message { text: "Hi!" })` -// -// The special name `*` can be used in the body mapping to define that -// every field not bound by the path template should be mapped to the -// request body. This enables the following alternative definition of -// the update method: -// -// service Messaging { -// rpc UpdateMessage(Message) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "*" -// }; -// } -// } -// message Message { -// string message_id = 1; -// string text = 2; -// } -// -// -// The following HTTP JSON to RPC mapping is enabled: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: -// "123456" text: "Hi!")` -// -// Note that when using `*` in the body mapping, it is not possible to -// have HTTP parameters, as all fields not bound by the path end in -// the body. This makes this option more rarely used in practice of -// defining REST APIs. The common usage of `*` is in custom methods -// which don't use the URL at all for transferring data. -// -// It is possible to define multiple HTTP methods for one RPC by using -// the `additional_bindings` option. Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/messages/{message_id}" -// additional_bindings { -// get: "/v1/users/{user_id}/messages/{message_id}" -// } -// }; -// } -// } -// message GetMessageRequest { -// string message_id = 1; -// string user_id = 2; -// } -// -// -// This enables the following two alternative HTTP JSON to RPC -// mappings: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` -// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: -// "123456")` -// -// # Rules for HTTP mapping -// -// The rules for mapping HTTP path, query parameters, and body fields -// to the request message are as follows: -// -// 1. The `body` field specifies either `*` or a field path, or is -// omitted. If omitted, it indicates there is no HTTP request body. -// 2. Leaf fields (recursive expansion of nested messages in the -// request) can be classified into three types: -// (a) Matched in the URL template. -// (b) Covered by body (if body is `*`, everything except (a) fields; -// else everything under the body field) -// (c) All other fields. -// 3. URL query parameters found in the HTTP request are mapped to (c) fields. -// 4. Any body sent with an HTTP request can contain only (b) fields. -// -// The syntax of the path template is as follows: -// -// Template = "/" Segments [ Verb ] ; -// Segments = Segment { "/" Segment } ; -// Segment = "*" | "**" | LITERAL | Variable ; -// Variable = "{" FieldPath [ "=" Segments ] "}" ; -// FieldPath = IDENT { "." IDENT } ; -// Verb = ":" LITERAL ; -// -// The syntax `*` matches a single path segment. The syntax `**` matches zero -// or more path segments, which must be the last part of the path except the -// `Verb`. The syntax `LITERAL` matches literal text in the path. -// -// The syntax `Variable` matches part of the URL path as specified by its -// template. A variable template must not contain other variables. If a variable -// matches a single path segment, its template may be omitted, e.g. `{var}` -// is equivalent to `{var=*}`. -// -// If a variable contains exactly one path segment, such as `"{var}"` or -// `"{var=*}"`, when such a variable is expanded into a URL path, all characters -// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the -// Discovery Document as `{var}`. -// -// If a variable contains one or more path segments, such as `"{var=foo/*}"` -// or `"{var=**}"`, when such a variable is expanded into a URL path, all -// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables -// show up in the Discovery Document as `{+var}`. -// -// NOTE: While the single segment variable matches the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 -// Simple String Expansion, the multi segment variable **does not** match -// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion -// does not expand special characters like `?` and `#`, which would lead -// to invalid URLs. -// -// NOTE: the field paths in variables and in the `body` must not refer to -// repeated fields or map fields. -message HttpRule { - // Selects methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax - // details. - string selector = 1; - - // Determines the URL pattern is matched by this rules. This pattern can be - // used with any of the {get|put|post|delete|patch} methods. A custom method - // can be defined using the 'custom' field. - oneof pattern { - // Used for listing and getting information about resources. - string get = 2; - - // Used for updating a resource. - string put = 3; - - // Used for creating a resource. - string post = 4; - - // Used for deleting a resource. - string delete = 5; - - // Used for updating a resource. - string patch = 6; - - // The custom pattern is used for specifying an HTTP method that is not - // included in the `pattern` field, such as HEAD, or "*" to leave the - // HTTP method unspecified for this rule. The wild-card rule is useful - // for services that provide content to Web (HTML) clients. - CustomHttpPattern custom = 8; - } - - // The name of the request field whose value is mapped to the HTTP body, or - // `*` for mapping all fields not captured by the path pattern to the HTTP - // body. NOTE: the referred field must not be a repeated field and must be - // present at the top-level of request message type. - string body = 7; - - // Optional. The name of the response field whose value is mapped to the HTTP - // body of response. Other response fields are ignored. When - // not set, the response message will be used as HTTP body of response. - string response_body = 12; - - // Additional HTTP bindings for the selector. Nested bindings must - // not contain an `additional_bindings` field themselves (that is, - // the nesting may only be one level deep). - repeated HttpRule additional_bindings = 11; -} - -// A custom pattern is used for defining custom HTTP verb. -message CustomHttpPattern { - // The name of this custom HTTP verb. - string kind = 1; - - // The path matched by this custom verb. - string path = 2; -} diff --git a/third_party/proto/google/api/httpbody.proto b/third_party/proto/google/api/httpbody.proto deleted file mode 100644 index 4428515c1..000000000 --- a/third_party/proto/google/api/httpbody.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2018 Google LLC. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -syntax = "proto3"; - -package google.api; - -import "google/protobuf/any.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; -option java_multiple_files = true; -option java_outer_classname = "HttpBodyProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -// Message that represents an arbitrary HTTP body. It should only be used for -// payload formats that can't be represented as JSON, such as raw binary or -// an HTML page. -// -// -// This message can be used both in streaming and non-streaming API methods in -// the request as well as the response. -// -// It can be used as a top-level request field, which is convenient if one -// wants to extract parameters from either the URL or HTTP template into the -// request fields and also want access to the raw HTTP body. -// -// Example: -// -// message GetResourceRequest { -// // A unique request id. -// string request_id = 1; -// -// // The raw HTTP body is bound to this field. -// google.api.HttpBody http_body = 2; -// } -// -// service ResourceService { -// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); -// rpc UpdateResource(google.api.HttpBody) returns -// (google.protobuf.Empty); -// } -// -// Example with streaming methods: -// -// service CaldavService { -// rpc GetCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// rpc UpdateCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// } -// -// Use of this type only changes how the request and response bodies are -// handled, all other features will continue to work unchanged. -message HttpBody { - // The HTTP Content-Type header value specifying the content type of the body. - string content_type = 1; - - // The HTTP request/response body as raw binary. - bytes data = 2; - - // Application specific response metadata. Must be set in the first response - // for streaming APIs. - repeated google.protobuf.Any extensions = 3; -} \ No newline at end of file diff --git a/third_party/proto/google/protobuf/any.proto b/third_party/proto/google/protobuf/any.proto deleted file mode 100644 index 1431810ea..000000000 --- a/third_party/proto/google/protobuf/any.proto +++ /dev/null @@ -1,161 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -import "gogoproto/gogo.proto"; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "types"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := ptypes.MarshalAny(foo) -// ... -// foo := &pb.Foo{} -// if err := ptypes.UnmarshalAny(any, foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. This string must contain at least - // one "/" character. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; - - option (gogoproto.typedecl) = false; -} - -option (gogoproto.goproto_registration) = false; diff --git a/third_party/proto/google/protobuf/descriptor.proto b/third_party/proto/google/protobuf/descriptor.proto deleted file mode 100644 index b9b3bb3d0..000000000 --- a/third_party/proto/google/protobuf/descriptor.proto +++ /dev/null @@ -1,894 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - -syntax = "proto2"; - -package google.protobuf; - -option go_package = "google.golang.org/protobuf/types/descriptorpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { repeated FileDescriptorProto file = 1; } - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; - - // The syntax of the proto file. - // The supported values are "proto2" and "proto3". - optional string syntax = 12; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - - optional ExtensionRangeOptions options = 3; - } - repeated ExtensionRange extension_range = 5; - - repeated OneofDescriptorProto oneof_decl = 8; - - optional MessageOptions options = 7; - - // Range of reserved tag numbers. Reserved tag numbers may not be used by - // fields or extension ranges in the same message. Reserved ranges may - // not overlap. - message ReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - } - repeated ReservedRange reserved_range = 9; - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - repeated string reserved_name = 10; -} - -message ExtensionRangeOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - // Tag-delimited aggregate. - // Group type is deprecated and not supported in proto3. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - } - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REQUIRED = 2; - LABEL_REPEATED = 3; - } - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - // TODO(kenton): Base-64 encode? - optional string default_value = 7; - - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - optional int32 oneof_index = 9; - - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - optional string json_name = 10; - - optional FieldOptions options = 8; - - // If true, this is a proto3 "optional". When a proto3 field is optional, it - // tracks presence regardless of field type. - // - // When proto3_optional is true, this field must be belong to a oneof to - // signal to old proto3 clients that presence is tracked for this field. This - // oneof is known as a "synthetic" oneof, and this field must be its sole - // member (each proto3 optional field gets its own synthetic oneof). Synthetic - // oneofs exist in the descriptor only, and do not generate any API. Synthetic - // oneofs must be ordered after all "real" oneofs. - // - // For message fields, proto3_optional doesn't create any semantic change, - // since non-repeated message fields always track presence. However it still - // indicates the semantic detail of whether the user wrote "optional" or not. - // This can be useful for round-tripping the .proto file. For consistency we - // give message fields a synthetic oneof also, even though it is not required - // to track presence. This is especially important because the parser can't - // tell if a field is a message or an enum, so it must always create a - // synthetic oneof. - // - // Proto2 optional fields do not set this flag, because they already indicate - // optional with `LABEL_OPTIONAL`. - optional bool proto3_optional = 17; -} - -// Describes a oneof. -message OneofDescriptorProto { - optional string name = 1; - optional OneofOptions options = 2; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; - - // Range of reserved numeric values. Reserved values may not be used by - // entries in the same enum. Reserved ranges may not overlap. - // - // Note that this is distinct from DescriptorProto.ReservedRange in that it - // is inclusive such that it can appropriately represent the entire int32 - // domain. - message EnumReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Inclusive. - } - - // Range of reserved numeric values. Reserved numeric values may not be used - // by enum values in the same enum declaration. Reserved ranges may not - // overlap. - repeated EnumReservedRange reserved_range = 4; - - // Reserved enum value names, which may not be reused. A given name may only - // be reserved once. - repeated string reserved_name = 5; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; - - // Identifies if client streams multiple client messages - optional bool client_streaming = 5 [ default = false ]; - // Identifies if server streams multiple server messages - optional bool server_streaming = 6 [ default = false ]; -} - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Objective-C plugin) and your project website (if available) -- there's no -// need to explain how you intend to use them. Usually you only need one -// extension number. You can declare multiple options with only one extension -// number by putting them in a sub-message. See the Custom Options section of -// the docs for examples: -// https://developers.google.com/protocol-buffers/docs/proto#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - // If set, all the classes from the .proto file are wrapped in a single - // outer class with the given name. This applies to both Proto1 - // (equivalent to the old "--one_java_file" option) and Proto2 (where - // a .proto always translates to a single class, but you may want to - // explicitly choose the class name). - optional string java_outer_classname = 8; - - // If set true, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the outer class - // named by java_outer_classname. However, the outer class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [ default = false ]; - - // This option does nothing. - optional bool java_generate_equals_and_hash = 20 [ deprecated = true ]; - - // If set true, then the Java2 code generator will generate code that - // throws an exception whenever an attempt is made to assign a non-UTF-8 - // byte sequence to a string field. - // Message reflection will do the same. - // However, an extension field still accepts non-UTF-8 byte sequences. - // This option has no effect on when used with the lite runtime. - optional bool java_string_check_utf8 = 27 [ default = false ]; - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [ default = SPEED ]; - - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - optional string go_package = 11; - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [ default = false ]; - optional bool java_generic_services = 17 [ default = false ]; - optional bool py_generic_services = 18 [ default = false ]; - optional bool php_generic_services = 42 [ default = false ]; - - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - optional bool deprecated = 23 [ default = false ]; - - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - optional bool cc_enable_arenas = 31 [ default = true ]; - - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - optional string objc_class_prefix = 36; - - // Namespace for generated classes; defaults to the package. - optional string csharp_namespace = 37; - - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - optional string swift_prefix = 39; - - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - optional string php_class_prefix = 40; - - // Use this option to change the namespace of php generated classes. Default - // is empty. When this option is empty, the package name will be used for - // determining the namespace. - optional string php_namespace = 41; - - // Use this option to change the namespace of php generated metadata classes. - // Default is empty. When this option is empty, the proto file name will be - // used for determining the namespace. - optional string php_metadata_namespace = 44; - - // Use this option to change the package of ruby generated classes. Default - // is empty. When this option is not set, the package name will be used for - // determining the ruby package. - optional string ruby_package = 45; - - // The parser stores options it doesn't recognize here. - // See the documentation for the "Options" section above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. - // See the documentation for the "Options" section above. - extensions 1000 to max; - - reserved 38; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [ default = false ]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [ default = false ]; - - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - optional bool deprecated = 3 [ default = false ]; - - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // map map_field = 1; - // The parsed descriptor looks like: - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementations still need to work as - // if the field is a repeated message field. - // - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - optional bool map_entry = 7; - - reserved 8; // javalite_serializable - reserved 9; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is not yet implemented in the open source - // release -- sorry, we'll try to include it in a future version! - optional CType ctype = 1 [ default = STRING ]; - enum CType { - // Default mode. - STRING = 0; - - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. - optional bool packed = 2; - - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - // is represented as JavaScript string, which avoids loss of precision that - // can happen when a large value is converted to a floating point JavaScript. - // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - // use the JavaScript "number" type. The behavior of the default option - // JS_NORMAL is implementation dependent. - // - // This option is an enum to permit additional types to be added, e.g. - // goog.math.Integer. - optional JSType jstype = 6 [ default = JS_NORMAL ]; - enum JSType { - // Use the default type. - JS_NORMAL = 0; - - // Use JavaScript strings. - JS_STRING = 1; - - // Use JavaScript numbers. - JS_NUMBER = 2; - } - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outer message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - optional bool lazy = 5 [ default = false ]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [ default = false ]; - - // For Google-internal migration only. Do not use. - optional bool weak = 10 [ default = false ]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 4; // removed jtype -} - -message OneofOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to true to allow mapping different tag names to the same - // value. - optional bool allow_alias = 2; - - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - optional bool deprecated = 3 [ default = false ]; - - reserved 5; // javanano_as_lite - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - optional bool deprecated = 1 [ default = false ]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - optional bool deprecated = 33 [ default = false ]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - optional bool deprecated = 33 [ default = false ]; - - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0; - NO_SIDE_EFFECTS = 1; // implies idempotent - IDEMPOTENT = 2; // idempotent, but may have side effects - } - optional IdempotencyLevel idempotency_level = 34 - [ default = IDEMPOTENCY_UNKNOWN ]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - // "foo.(bar.baz).qux". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendant. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition. For - // example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - repeated int32 path = 1 [ packed = true ]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [ packed = true ]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to qux. - // // - // // Another line attached to qux. - // optional double qux = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to qux or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - optional string leading_comments = 3; - optional string trailing_comments = 4; - repeated string leading_detached_comments = 6; - } -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -message GeneratedCodeInfo { - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - repeated Annotation annotation = 1; - message Annotation { - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - repeated int32 path = 1 [ packed = true ]; - - // Identifies the filesystem path to the original source .proto. - optional string source_file = 2; - - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - optional int32 begin = 3; - - // Identifies the ending offset in bytes in the generated code that - // relates to the identified offset. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - optional int32 end = 4; - } -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/controller/v1/controller.proto b/third_party/proto/ibc/applications/interchain_accounts/controller/v1/controller.proto deleted file mode 100644 index aa7cd7ceb..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/controller/v1/controller.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.controller.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types"; - -import "gogoproto/gogo.proto"; - -// Params defines the set of on-chain interchain accounts parameters. -// The following parameters may be used to disable the controller submodule. -message Params { - // controller_enabled enables or disables the controller submodule. - bool controller_enabled = 1 - [ (gogoproto.moretags) = "yaml:\"controller_enabled\"" ]; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/controller/v1/query.proto b/third_party/proto/ibc/applications/interchain_accounts/controller/v1/query.proto deleted file mode 100644 index 3a4d63aae..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/controller/v1/query.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.controller.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types"; - -import "ibc/applications/interchain_accounts/controller/v1/controller.proto"; -import "google/api/annotations.proto"; - -// Query provides defines the gRPC querier service. -service Query { - // Params queries all parameters of the ICA controller submodule. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = - "/ibc/apps/interchain_accounts/controller/v1/params"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/host/v1/host.proto b/third_party/proto/ibc/applications/interchain_accounts/host/v1/host.proto deleted file mode 100644 index 6b772a438..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/host/v1/host.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.host.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types"; - -import "gogoproto/gogo.proto"; - -// Params defines the set of on-chain interchain accounts parameters. -// The following parameters may be used to disable the host submodule. -message Params { - // host_enabled enables or disables the host submodule. - bool host_enabled = 1 [ (gogoproto.moretags) = "yaml:\"host_enabled\"" ]; - // allow_messages defines a list of sdk message typeURLs allowed to be - // executed on a host chain. - repeated string allow_messages = 2 - [ (gogoproto.moretags) = "yaml:\"allow_messages\"" ]; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/host/v1/query.proto b/third_party/proto/ibc/applications/interchain_accounts/host/v1/query.proto deleted file mode 100644 index c95625ddc..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/host/v1/query.proto +++ /dev/null @@ -1,26 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.host.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types"; - -import "google/api/annotations.proto"; -import "ibc/applications/interchain_accounts/host/v1/host.proto"; - -// Query provides defines the gRPC querier service. -service Query { - // Params queries all parameters of the ICA host submodule. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = - "/ibc/apps/interchain_accounts/host/v1/params"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/v1/account.proto b/third_party/proto/ibc/applications/interchain_accounts/v1/account.proto deleted file mode 100644 index 4336bd9f8..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/v1/account.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types"; - -import "cosmos_proto/cosmos.proto"; -import "gogoproto/gogo.proto"; -import "cosmos/auth/v1beta1/auth.proto"; - -// An InterchainAccount is defined as a BaseAccount & the address of the account -// owner on the controller chain -message InterchainAccount { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - option (cosmos_proto.implements_interface) = "InterchainAccountI"; - - cosmos.auth.v1beta1.BaseAccount base_account = 1 [ - (gogoproto.embed) = true, - (gogoproto.moretags) = "yaml:\"base_account\"" - ]; - string account_owner = 2 [ (gogoproto.moretags) = "yaml:\"account_owner\"" ]; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/v1/genesis.proto b/third_party/proto/ibc/applications/interchain_accounts/v1/genesis.proto deleted file mode 100644 index 087b7b96f..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/v1/genesis.proto +++ /dev/null @@ -1,69 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types"; - -import "gogoproto/gogo.proto"; -import "ibc/applications/interchain_accounts/controller/v1/controller.proto"; -import "ibc/applications/interchain_accounts/host/v1/host.proto"; - -// GenesisState defines the interchain accounts genesis state -message GenesisState { - ControllerGenesisState controller_genesis_state = 1 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"controller_genesis_state\"" - ]; - HostGenesisState host_genesis_state = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"host_genesis_state\"" - ]; -} - -// ControllerGenesisState defines the interchain accounts controller genesis -// state -message ControllerGenesisState { - repeated ActiveChannel active_channels = 1 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"active_channels\"" - ]; - repeated RegisteredInterchainAccount interchain_accounts = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"interchain_accounts\"" - ]; - repeated string ports = 3; - ibc.applications.interchain_accounts.controller.v1.Params params = 4 - [ (gogoproto.nullable) = false ]; -} - -// HostGenesisState defines the interchain accounts host genesis state -message HostGenesisState { - repeated ActiveChannel active_channels = 1 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"active_channels\"" - ]; - repeated RegisteredInterchainAccount interchain_accounts = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"interchain_accounts\"" - ]; - string port = 3; - ibc.applications.interchain_accounts.host.v1.Params params = 4 - [ (gogoproto.nullable) = false ]; -} - -// ActiveChannel contains a connection ID, port ID and associated active channel -// ID -message ActiveChannel { - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - string port_id = 2 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 3 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; -} - -// RegisteredInterchainAccount contains a connection ID, port ID and associated -// interchain account address -message RegisteredInterchainAccount { - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - string port_id = 2 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string account_address = 3 - [ (gogoproto.moretags) = "yaml:\"account_address\"" ]; -} \ No newline at end of file diff --git a/third_party/proto/ibc/applications/interchain_accounts/v1/metadata.proto b/third_party/proto/ibc/applications/interchain_accounts/v1/metadata.proto deleted file mode 100644 index d0229ff90..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/v1/metadata.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types"; - -import "gogoproto/gogo.proto"; - -// Metadata defines a set of protocol specific data encoded into the ICS27 -// channel version bytestring See ICS004: -// https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#Versioning -message Metadata { - // version defines the ICS27 protocol version - string version = 1; - // controller_connection_id is the connection identifier associated with the - // controller chain - string controller_connection_id = 2 - [ (gogoproto.moretags) = "yaml:\"controller_connection_id\"" ]; - // host_connection_id is the connection identifier associated with the host - // chain - string host_connection_id = 3 - [ (gogoproto.moretags) = "yaml:\"host_connection_id\"" ]; - // address defines the interchain account address to be fulfilled upon the - // OnChanOpenTry handshake step NOTE: the address field is empty on the - // OnChanOpenInit handshake step - string address = 4; - // encoding defines the supported codec format - string encoding = 5; - // tx_type defines the type of transactions the interchain account can execute - string tx_type = 6; -} diff --git a/third_party/proto/ibc/applications/interchain_accounts/v1/packet.proto b/third_party/proto/ibc/applications/interchain_accounts/v1/packet.proto deleted file mode 100644 index 2535c05fa..000000000 --- a/third_party/proto/ibc/applications/interchain_accounts/v1/packet.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.interchain_accounts.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types"; - -import "google/protobuf/any.proto"; -import "gogoproto/gogo.proto"; - -// Type defines a classification of message issued from a controller chain to -// its associated interchain accounts host -enum Type { - option (gogoproto.goproto_enum_prefix) = false; - - // Default zero value enumeration - TYPE_UNSPECIFIED = 0 [ (gogoproto.enumvalue_customname) = "UNSPECIFIED" ]; - // Execute a transaction on an interchain accounts host chain - TYPE_EXECUTE_TX = 1 [ (gogoproto.enumvalue_customname) = "EXECUTE_TX" ]; -} - -// InterchainAccountPacketData is comprised of a raw transaction, type of -// transaction and optional memo field. -message InterchainAccountPacketData { - Type type = 1; - bytes data = 2; - string memo = 3; -} - -// CosmosTx contains a list of sdk.Msg's. It should be used when sending -// transactions to an SDK host chain. -message CosmosTx { repeated google.protobuf.Any messages = 1; } diff --git a/third_party/proto/ibc/applications/transfer/v1/genesis.proto b/third_party/proto/ibc/applications/transfer/v1/genesis.proto deleted file mode 100644 index ef240f2c5..000000000 --- a/third_party/proto/ibc/applications/transfer/v1/genesis.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.transfer.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"; - -import "ibc/applications/transfer/v1/transfer.proto"; -import "gogoproto/gogo.proto"; - -// GenesisState defines the ibc-transfer genesis state -message GenesisState { - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - repeated DenomTrace denom_traces = 2 [ - (gogoproto.castrepeated) = "Traces", - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"denom_traces\"" - ]; - Params params = 3 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/ibc/applications/transfer/v1/query.proto b/third_party/proto/ibc/applications/transfer/v1/query.proto deleted file mode 100644 index 335ee007f..000000000 --- a/third_party/proto/ibc/applications/transfer/v1/query.proto +++ /dev/null @@ -1,87 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.transfer.v1; - -import "gogoproto/gogo.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "ibc/applications/transfer/v1/transfer.proto"; -import "google/api/annotations.proto"; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"; - -// Query provides defines the gRPC querier service. -service Query { - // DenomTrace queries a denomination trace information. - rpc DenomTrace(QueryDenomTraceRequest) returns (QueryDenomTraceResponse) { - option (google.api.http).get = "/ibc/apps/transfer/v1/denom_traces/{hash}"; - } - - // DenomTraces queries all denomination traces. - rpc DenomTraces(QueryDenomTracesRequest) returns (QueryDenomTracesResponse) { - option (google.api.http).get = "/ibc/apps/transfer/v1/denom_traces"; - } - - // Params queries all parameters of the ibc-transfer module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/ibc/apps/transfer/v1/params"; - } - - // DenomHash queries a denomination hash information. - rpc DenomHash(QueryDenomHashRequest) returns (QueryDenomHashResponse) { - option (google.api.http).get = "/ibc/apps/transfer/v1/denom_hashes/{trace}"; - } -} - -// QueryDenomTraceRequest is the request type for the Query/DenomTrace RPC -// method -message QueryDenomTraceRequest { - // hash (in hex format) of the denomination trace information. - string hash = 1; -} - -// QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC -// method. -message QueryDenomTraceResponse { - // denom_trace returns the requested denomination trace information. - DenomTrace denom_trace = 1; -} - -// QueryConnectionsRequest is the request type for the Query/DenomTraces RPC -// method -message QueryDenomTracesRequest { - // pagination defines an optional pagination for the request. - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryConnectionsResponse is the response type for the Query/DenomTraces RPC -// method. -message QueryDenomTracesResponse { - // denom_traces returns all denominations trace information. - repeated DenomTrace denom_traces = 1 - [ (gogoproto.castrepeated) = "Traces", (gogoproto.nullable) = false ]; - // pagination defines the pagination in the response. - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - // params defines the parameters of the module. - Params params = 1; -} - -// QueryDenomHashRequest is the request type for the Query/DenomHash RPC -// method -message QueryDenomHashRequest { - // The denomination trace ([port_id]/[channel_id])+/[denom] - string trace = 1; -} - -// QueryDenomHashResponse is the response type for the Query/DenomHash RPC -// method. -message QueryDenomHashResponse { - // hash (in hex format) of the denomination trace information. - string hash = 1; -} diff --git a/third_party/proto/ibc/applications/transfer/v1/transfer.proto b/third_party/proto/ibc/applications/transfer/v1/transfer.proto deleted file mode 100644 index 611f49ac5..000000000 --- a/third_party/proto/ibc/applications/transfer/v1/transfer.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.transfer.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"; - -import "gogoproto/gogo.proto"; - -// DenomTrace contains the base denomination for ICS20 fungible tokens and the -// source tracing information path. -message DenomTrace { - // path defines the chain of port/channel identifiers used for tracing the - // source of the fungible token. - string path = 1; - // base denomination of the relayed fungible token. - string base_denom = 2; -} - -// Params defines the set of IBC transfer parameters. -// NOTE: To prevent a single token from being transferred, set the -// TransfersEnabled parameter to true and then set the bank module's SendEnabled -// parameter for the denomination to false. -message Params { - // send_enabled enables or disables all cross-chain token transfers from this - // chain. - bool send_enabled = 1 [ (gogoproto.moretags) = "yaml:\"send_enabled\"" ]; - // receive_enabled enables or disables all cross-chain token transfers to this - // chain. - bool receive_enabled = 2 - [ (gogoproto.moretags) = "yaml:\"receive_enabled\"" ]; -} diff --git a/third_party/proto/ibc/applications/transfer/v1/tx.proto b/third_party/proto/ibc/applications/transfer/v1/tx.proto deleted file mode 100644 index a115097f3..000000000 --- a/third_party/proto/ibc/applications/transfer/v1/tx.proto +++ /dev/null @@ -1,48 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.transfer.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"; - -import "gogoproto/gogo.proto"; -import "cosmos/base/v1beta1/coin.proto"; -import "ibc/core/client/v1/client.proto"; - -// Msg defines the ibc/transfer Msg service. -service Msg { - // Transfer defines a rpc handler method for MsgTransfer. - rpc Transfer(MsgTransfer) returns (MsgTransferResponse); -} - -// MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between -// ICS20 enabled chains. See ICS Spec here: -// https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures -message MsgTransfer { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // the port on which the packet will be sent - string source_port = 1 [ (gogoproto.moretags) = "yaml:\"source_port\"" ]; - // the channel by which the packet will be sent - string source_channel = 2 - [ (gogoproto.moretags) = "yaml:\"source_channel\"" ]; - // the tokens to be transferred - cosmos.base.v1beta1.Coin token = 3 [ (gogoproto.nullable) = false ]; - // the sender address - string sender = 4; - // the recipient address on the destination chain - string receiver = 5; - // Timeout height relative to the current block height. - // The timeout is disabled when set to 0. - ibc.core.client.v1.Height timeout_height = 6 [ - (gogoproto.moretags) = "yaml:\"timeout_height\"", - (gogoproto.nullable) = false - ]; - // Timeout timestamp in absolute nanoseconds since unix epoch. - // The timeout is disabled when set to 0. - uint64 timeout_timestamp = 7 - [ (gogoproto.moretags) = "yaml:\"timeout_timestamp\"" ]; -} - -// MsgTransferResponse defines the Msg/Transfer response type. -message MsgTransferResponse {} diff --git a/third_party/proto/ibc/applications/transfer/v2/packet.proto b/third_party/proto/ibc/applications/transfer/v2/packet.proto deleted file mode 100644 index 850320df3..000000000 --- a/third_party/proto/ibc/applications/transfer/v2/packet.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -package ibc.applications.transfer.v2; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types"; - -// FungibleTokenPacketData defines a struct for the packet payload -// See FungibleTokenPacketData spec: -// https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures -message FungibleTokenPacketData { - // the token denomination to be transferred - string denom = 1; - // the token amount to be transferred - string amount = 2; - // the sender address - string sender = 3; - // the recipient address on the destination chain - string receiver = 4; -} diff --git a/third_party/proto/ibc/core/channel/v1/channel.proto b/third_party/proto/ibc/core/channel/v1/channel.proto deleted file mode 100644 index 8c002c009..000000000 --- a/third_party/proto/ibc/core/channel/v1/channel.proto +++ /dev/null @@ -1,157 +0,0 @@ -syntax = "proto3"; - -package ibc.core.channel.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/client/v1/client.proto"; - -// Channel defines pipeline for exactly-once packet delivery between specific -// modules on separate blockchains, which has at least one end capable of -// sending packets and one end capable of receiving packets. -message Channel { - option (gogoproto.goproto_getters) = false; - - // current state of the channel end - State state = 1; - // whether the channel is ordered or unordered - Order ordering = 2; - // counterparty channel end - Counterparty counterparty = 3 [ (gogoproto.nullable) = false ]; - // list of connection identifiers, in order, along which packets sent on - // this channel will travel - repeated string connection_hops = 4 - [ (gogoproto.moretags) = "yaml:\"connection_hops\"" ]; - // opaque channel version, which is agreed upon during the handshake - string version = 5; -} - -// IdentifiedChannel defines a channel with additional port and channel -// identifier fields. -message IdentifiedChannel { - option (gogoproto.goproto_getters) = false; - - // current state of the channel end - State state = 1; - // whether the channel is ordered or unordered - Order ordering = 2; - // counterparty channel end - Counterparty counterparty = 3 [ (gogoproto.nullable) = false ]; - // list of connection identifiers, in order, along which packets sent on - // this channel will travel - repeated string connection_hops = 4 - [ (gogoproto.moretags) = "yaml:\"connection_hops\"" ]; - // opaque channel version, which is agreed upon during the handshake - string version = 5; - // port identifier - string port_id = 6; - // channel identifier - string channel_id = 7; -} - -// State defines if a channel is in one of the following states: -// CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. -enum State { - option (gogoproto.goproto_enum_prefix) = false; - - // Default State - STATE_UNINITIALIZED_UNSPECIFIED = 0 - [ (gogoproto.enumvalue_customname) = "UNINITIALIZED" ]; - // A channel has just started the opening handshake. - STATE_INIT = 1 [ (gogoproto.enumvalue_customname) = "INIT" ]; - // A channel has acknowledged the handshake step on the counterparty chain. - STATE_TRYOPEN = 2 [ (gogoproto.enumvalue_customname) = "TRYOPEN" ]; - // A channel has completed the handshake. Open channels are - // ready to send and receive packets. - STATE_OPEN = 3 [ (gogoproto.enumvalue_customname) = "OPEN" ]; - // A channel has been closed and can no longer be used to send or receive - // packets. - STATE_CLOSED = 4 [ (gogoproto.enumvalue_customname) = "CLOSED" ]; -} - -// Order defines if a channel is ORDERED or UNORDERED -enum Order { - option (gogoproto.goproto_enum_prefix) = false; - - // zero-value for channel ordering - ORDER_NONE_UNSPECIFIED = 0 [ (gogoproto.enumvalue_customname) = "NONE" ]; - // packets can be delivered in any order, which may differ from the order in - // which they were sent. - ORDER_UNORDERED = 1 [ (gogoproto.enumvalue_customname) = "UNORDERED" ]; - // packets are delivered exactly in the order which they were sent - ORDER_ORDERED = 2 [ (gogoproto.enumvalue_customname) = "ORDERED" ]; -} - -// Counterparty defines a channel end counterparty -message Counterparty { - option (gogoproto.goproto_getters) = false; - - // port on the counterparty chain which owns the other end of the channel. - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - // channel end on the counterparty chain - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; -} - -// Packet defines a type that carries data across different chains through IBC -message Packet { - option (gogoproto.goproto_getters) = false; - - // number corresponds to the order of sends and receives, where a Packet - // with an earlier sequence number must be sent and received before a Packet - // with a later sequence number. - uint64 sequence = 1; - // identifies the port on the sending chain. - string source_port = 2 [ (gogoproto.moretags) = "yaml:\"source_port\"" ]; - // identifies the channel end on the sending chain. - string source_channel = 3 - [ (gogoproto.moretags) = "yaml:\"source_channel\"" ]; - // identifies the port on the receiving chain. - string destination_port = 4 - [ (gogoproto.moretags) = "yaml:\"destination_port\"" ]; - // identifies the channel end on the receiving chain. - string destination_channel = 5 - [ (gogoproto.moretags) = "yaml:\"destination_channel\"" ]; - // actual opaque bytes transferred directly to the application module - bytes data = 6; - // block height after which the packet times out - ibc.core.client.v1.Height timeout_height = 7 [ - (gogoproto.moretags) = "yaml:\"timeout_height\"", - (gogoproto.nullable) = false - ]; - // block timestamp (in nanoseconds) after which the packet times out - uint64 timeout_timestamp = 8 - [ (gogoproto.moretags) = "yaml:\"timeout_timestamp\"" ]; -} - -// PacketState defines the generic type necessary to retrieve and store -// packet commitments, acknowledgements, and receipts. -// Caller is responsible for knowing the context necessary to interpret this -// state as a commitment, acknowledgement, or a receipt. -message PacketState { - option (gogoproto.goproto_getters) = false; - - // channel port identifier. - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - // channel unique identifier. - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - // packet sequence. - uint64 sequence = 3; - // embedded data that represents packet state. - bytes data = 4; -} - -// Acknowledgement is the recommended acknowledgement format to be used by -// app-specific protocols. -// NOTE: The field numbers 21 and 22 were explicitly chosen to avoid accidental -// conflicts with other protobuf message formats used for acknowledgements. -// The first byte of any message with this format will be the non-ASCII values -// `0xaa` (result) or `0xb2` (error). Implemented as defined by ICS: -// https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#acknowledgement-envelope -message Acknowledgement { - // response contains either a result or an error and must be non-empty - oneof response { - bytes result = 21; - string error = 22; - } -} diff --git a/third_party/proto/ibc/core/channel/v1/genesis.proto b/third_party/proto/ibc/core/channel/v1/genesis.proto deleted file mode 100644 index c17ee4e7a..000000000 --- a/third_party/proto/ibc/core/channel/v1/genesis.proto +++ /dev/null @@ -1,42 +0,0 @@ -syntax = "proto3"; - -package ibc.core.channel.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/channel/v1/channel.proto"; - -// GenesisState defines the ibc channel submodule's genesis state. -message GenesisState { - repeated IdentifiedChannel channels = 1 [ - (gogoproto.casttype) = "IdentifiedChannel", - (gogoproto.nullable) = false - ]; - repeated PacketState acknowledgements = 2 [ (gogoproto.nullable) = false ]; - repeated PacketState commitments = 3 [ (gogoproto.nullable) = false ]; - repeated PacketState receipts = 4 [ (gogoproto.nullable) = false ]; - repeated PacketSequence send_sequences = 5 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"send_sequences\"" - ]; - repeated PacketSequence recv_sequences = 6 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"recv_sequences\"" - ]; - repeated PacketSequence ack_sequences = 7 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"ack_sequences\"" - ]; - // the sequence for the next generated channel identifier - uint64 next_channel_sequence = 8 - [ (gogoproto.moretags) = "yaml:\"next_channel_sequence\"" ]; -} - -// PacketSequence defines the genesis type necessary to retrieve and store -// next send and receive sequences. -message PacketSequence { - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - uint64 sequence = 3; -} diff --git a/third_party/proto/ibc/core/channel/v1/query.proto b/third_party/proto/ibc/core/channel/v1/query.proto deleted file mode 100644 index 2cd410222..000000000 --- a/third_party/proto/ibc/core/channel/v1/query.proto +++ /dev/null @@ -1,391 +0,0 @@ -syntax = "proto3"; - -package ibc.core.channel.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"; - -import "ibc/core/client/v1/client.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "ibc/core/channel/v1/channel.proto"; -import "google/api/annotations.proto"; -import "google/protobuf/any.proto"; -import "gogoproto/gogo.proto"; - -// Query provides defines the gRPC querier service -service Query { - // Channel queries an IBC Channel. - rpc Channel(QueryChannelRequest) returns (QueryChannelResponse) { - option (google.api.http).get = - "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}"; - } - - // Channels queries all the IBC channels of a chain. - rpc Channels(QueryChannelsRequest) returns (QueryChannelsResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels"; - } - - // ConnectionChannels queries all the channels associated with a connection - // end. - rpc ConnectionChannels(QueryConnectionChannelsRequest) - returns (QueryConnectionChannelsResponse) { - option (google.api.http).get = - "/ibc/core/channel/v1/connections/{connection}/channels"; - } - - // ChannelClientState queries for the client state for the channel associated - // with the provided channel identifiers. - rpc ChannelClientState(QueryChannelClientStateRequest) - returns (QueryChannelClientStateResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/client_state"; - } - - // ChannelConsensusState queries for the consensus state for the channel - // associated with the provided channel identifiers. - rpc ChannelConsensusState(QueryChannelConsensusStateRequest) - returns (QueryChannelConsensusStateResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/consensus_state/revision/" - "{revision_number}/height/{revision_height}"; - } - - // PacketCommitment queries a stored packet commitment hash. - rpc PacketCommitment(QueryPacketCommitmentRequest) - returns (QueryPacketCommitmentResponse) { - option (google.api.http).get = - "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/" - "packet_commitments/{sequence}"; - } - - // PacketCommitments returns all the packet commitments hashes associated - // with a channel. - rpc PacketCommitments(QueryPacketCommitmentsRequest) - returns (QueryPacketCommitmentsResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/packet_commitments"; - } - - // PacketReceipt queries if a given packet sequence has been received on the - // queried chain - rpc PacketReceipt(QueryPacketReceiptRequest) - returns (QueryPacketReceiptResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/packet_receipts/{sequence}"; - } - - // PacketAcknowledgement queries a stored packet acknowledgement hash. - rpc PacketAcknowledgement(QueryPacketAcknowledgementRequest) - returns (QueryPacketAcknowledgementResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/packet_acks/{sequence}"; - } - - // PacketAcknowledgements returns all the packet acknowledgements associated - // with a channel. - rpc PacketAcknowledgements(QueryPacketAcknowledgementsRequest) - returns (QueryPacketAcknowledgementsResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/packet_acknowledgements"; - } - - // UnreceivedPackets returns all the unreceived IBC packets associated with a - // channel and sequences. - rpc UnreceivedPackets(QueryUnreceivedPacketsRequest) - returns (QueryUnreceivedPacketsResponse) { - option (google.api.http).get = - "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/" - "packet_commitments/" - "{packet_commitment_sequences}/unreceived_packets"; - } - - // UnreceivedAcks returns all the unreceived IBC acknowledgements associated - // with a channel and sequences. - rpc UnreceivedAcks(QueryUnreceivedAcksRequest) - returns (QueryUnreceivedAcksResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/packet_commitments/" - "{packet_ack_sequences}/unreceived_acks"; - } - - // NextSequenceReceive returns the next receive sequence for a given channel. - rpc NextSequenceReceive(QueryNextSequenceReceiveRequest) - returns (QueryNextSequenceReceiveResponse) { - option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/" - "ports/{port_id}/next_sequence"; - } -} - -// QueryChannelRequest is the request type for the Query/Channel RPC method -message QueryChannelRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; -} - -// QueryChannelResponse is the response type for the Query/Channel RPC method. -// Besides the Channel end, it includes a proof and the height from which the -// proof was retrieved. -message QueryChannelResponse { - // channel associated with the request identifiers - ibc.core.channel.v1.Channel channel = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryChannelsRequest is the request type for the Query/Channels RPC method -message QueryChannelsRequest { - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryChannelsResponse is the response type for the Query/Channels RPC method. -message QueryChannelsResponse { - // list of stored channels of the chain. - repeated ibc.core.channel.v1.IdentifiedChannel channels = 1; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; - // query block height - ibc.core.client.v1.Height height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryConnectionChannelsRequest is the request type for the -// Query/QueryConnectionChannels RPC method -message QueryConnectionChannelsRequest { - // connection unique identifier - string connection = 1; - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryConnectionChannelsResponse is the Response type for the -// Query/QueryConnectionChannels RPC method -message QueryConnectionChannelsResponse { - // list of channels associated with a connection. - repeated ibc.core.channel.v1.IdentifiedChannel channels = 1; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; - // query block height - ibc.core.client.v1.Height height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryChannelClientStateRequest is the request type for the Query/ClientState -// RPC method -message QueryChannelClientStateRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; -} - -// QueryChannelClientStateResponse is the Response type for the -// Query/QueryChannelClientState RPC method -message QueryChannelClientStateResponse { - // client state associated with the channel - ibc.core.client.v1.IdentifiedClientState identified_client_state = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryChannelConsensusStateRequest is the request type for the -// Query/ConsensusState RPC method -message QueryChannelConsensusStateRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // revision number of the consensus state - uint64 revision_number = 3; - // revision height of the consensus state - uint64 revision_height = 4; -} - -// QueryChannelClientStateResponse is the Response type for the -// Query/QueryChannelClientState RPC method -message QueryChannelConsensusStateResponse { - // consensus state associated with the channel - google.protobuf.Any consensus_state = 1; - // client ID associated with the consensus state - string client_id = 2; - // merkle proof of existence - bytes proof = 3; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 4 [ (gogoproto.nullable) = false ]; -} - -// QueryPacketCommitmentRequest is the request type for the -// Query/PacketCommitment RPC method -message QueryPacketCommitmentRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // packet sequence - uint64 sequence = 3; -} - -// QueryPacketCommitmentResponse defines the client query response for a packet -// which also includes a proof and the height from which the proof was -// retrieved -message QueryPacketCommitmentResponse { - // packet associated with the request fields - bytes commitment = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryPacketCommitmentsRequest is the request type for the -// Query/QueryPacketCommitments RPC method -message QueryPacketCommitmentsRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 3; -} - -// QueryPacketCommitmentsResponse is the request type for the -// Query/QueryPacketCommitments RPC method -message QueryPacketCommitmentsResponse { - repeated ibc.core.channel.v1.PacketState commitments = 1; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; - // query block height - ibc.core.client.v1.Height height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryPacketReceiptRequest is the request type for the -// Query/PacketReceipt RPC method -message QueryPacketReceiptRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // packet sequence - uint64 sequence = 3; -} - -// QueryPacketReceiptResponse defines the client query response for a packet -// receipt which also includes a proof, and the height from which the proof was -// retrieved -message QueryPacketReceiptResponse { - // success flag for if receipt exists - bool received = 2; - // merkle proof of existence - bytes proof = 3; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 4 [ (gogoproto.nullable) = false ]; -} - -// QueryPacketAcknowledgementRequest is the request type for the -// Query/PacketAcknowledgement RPC method -message QueryPacketAcknowledgementRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // packet sequence - uint64 sequence = 3; -} - -// QueryPacketAcknowledgementResponse defines the client query response for a -// packet which also includes a proof and the height from which the -// proof was retrieved -message QueryPacketAcknowledgementResponse { - // packet associated with the request fields - bytes acknowledgement = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryPacketAcknowledgementsRequest is the request type for the -// Query/QueryPacketCommitments RPC method -message QueryPacketAcknowledgementsRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 3; - // list of packet sequences - repeated uint64 packet_commitment_sequences = 4; -} - -// QueryPacketAcknowledgemetsResponse is the request type for the -// Query/QueryPacketAcknowledgements RPC method -message QueryPacketAcknowledgementsResponse { - repeated ibc.core.channel.v1.PacketState acknowledgements = 1; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; - // query block height - ibc.core.client.v1.Height height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryUnreceivedPacketsRequest is the request type for the -// Query/UnreceivedPackets RPC method -message QueryUnreceivedPacketsRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // list of packet sequences - repeated uint64 packet_commitment_sequences = 3; -} - -// QueryUnreceivedPacketsResponse is the response type for the -// Query/UnreceivedPacketCommitments RPC method -message QueryUnreceivedPacketsResponse { - // list of unreceived packet sequences - repeated uint64 sequences = 1; - // query block height - ibc.core.client.v1.Height height = 2 [ (gogoproto.nullable) = false ]; -} - -// QueryUnreceivedAcks is the request type for the -// Query/UnreceivedAcks RPC method -message QueryUnreceivedAcksRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; - // list of acknowledgement sequences - repeated uint64 packet_ack_sequences = 3; -} - -// QueryUnreceivedAcksResponse is the response type for the -// Query/UnreceivedAcks RPC method -message QueryUnreceivedAcksResponse { - // list of unreceived acknowledgement sequences - repeated uint64 sequences = 1; - // query block height - ibc.core.client.v1.Height height = 2 [ (gogoproto.nullable) = false ]; -} - -// QueryNextSequenceReceiveRequest is the request type for the -// Query/QueryNextSequenceReceiveRequest RPC method -message QueryNextSequenceReceiveRequest { - // port unique identifier - string port_id = 1; - // channel unique identifier - string channel_id = 2; -} - -// QuerySequenceResponse is the request type for the -// Query/QueryNextSequenceReceiveResponse RPC method -message QueryNextSequenceReceiveResponse { - // next sequence receive number - uint64 next_sequence_receive = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/ibc/core/channel/v1/tx.proto b/third_party/proto/ibc/core/channel/v1/tx.proto deleted file mode 100644 index 5d83c8fcf..000000000 --- a/third_party/proto/ibc/core/channel/v1/tx.proto +++ /dev/null @@ -1,244 +0,0 @@ -syntax = "proto3"; - -package ibc.core.channel.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/client/v1/client.proto"; -import "ibc/core/channel/v1/channel.proto"; - -// Msg defines the ibc/channel Msg service. -service Msg { - // ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit. - rpc ChannelOpenInit(MsgChannelOpenInit) returns (MsgChannelOpenInitResponse); - - // ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry. - rpc ChannelOpenTry(MsgChannelOpenTry) returns (MsgChannelOpenTryResponse); - - // ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck. - rpc ChannelOpenAck(MsgChannelOpenAck) returns (MsgChannelOpenAckResponse); - - // ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm. - rpc ChannelOpenConfirm(MsgChannelOpenConfirm) - returns (MsgChannelOpenConfirmResponse); - - // ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit. - rpc ChannelCloseInit(MsgChannelCloseInit) - returns (MsgChannelCloseInitResponse); - - // ChannelCloseConfirm defines a rpc handler method for - // MsgChannelCloseConfirm. - rpc ChannelCloseConfirm(MsgChannelCloseConfirm) - returns (MsgChannelCloseConfirmResponse); - - // RecvPacket defines a rpc handler method for MsgRecvPacket. - rpc RecvPacket(MsgRecvPacket) returns (MsgRecvPacketResponse); - - // Timeout defines a rpc handler method for MsgTimeout. - rpc Timeout(MsgTimeout) returns (MsgTimeoutResponse); - - // TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose. - rpc TimeoutOnClose(MsgTimeoutOnClose) returns (MsgTimeoutOnCloseResponse); - - // Acknowledgement defines a rpc handler method for MsgAcknowledgement. - rpc Acknowledgement(MsgAcknowledgement) returns (MsgAcknowledgementResponse); -} - -// MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It -// is called by a relayer on Chain A. -message MsgChannelOpenInit { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - Channel channel = 2 [ (gogoproto.nullable) = false ]; - string signer = 3; -} - -// MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type. -message MsgChannelOpenInitResponse { - string channel_id = 1 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; -} - -// MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel -// on Chain B. The version field within the Channel field has been deprecated. -// Its value will be ignored by core IBC. -message MsgChannelOpenTry { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - // in the case of crossing hello's, when both chains call OpenInit, we need - // the channel identifier of the previous channel in state INIT - string previous_channel_id = 2 - [ (gogoproto.moretags) = "yaml:\"previous_channel_id\"" ]; - // NOTE: the version field within the channel has been deprecated. Its value - // will be ignored by core IBC. - Channel channel = 3 [ (gogoproto.nullable) = false ]; - string counterparty_version = 4 - [ (gogoproto.moretags) = "yaml:\"counterparty_version\"" ]; - bytes proof_init = 5 [ (gogoproto.moretags) = "yaml:\"proof_init\"" ]; - ibc.core.client.v1.Height proof_height = 6 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 7; -} - -// MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type. -message MsgChannelOpenTryResponse {} - -// MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge -// the change of channel state to TRYOPEN on Chain B. -message MsgChannelOpenAck { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - string counterparty_channel_id = 3 - [ (gogoproto.moretags) = "yaml:\"counterparty_channel_id\"" ]; - string counterparty_version = 4 - [ (gogoproto.moretags) = "yaml:\"counterparty_version\"" ]; - bytes proof_try = 5 [ (gogoproto.moretags) = "yaml:\"proof_try\"" ]; - ibc.core.client.v1.Height proof_height = 6 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 7; -} - -// MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type. -message MsgChannelOpenAckResponse {} - -// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to -// acknowledge the change of channel state to OPEN on Chain A. -message MsgChannelOpenConfirm { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - bytes proof_ack = 3 [ (gogoproto.moretags) = "yaml:\"proof_ack\"" ]; - ibc.core.client.v1.Height proof_height = 4 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 5; -} - -// MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response -// type. -message MsgChannelOpenConfirmResponse {} - -// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A -// to close a channel with Chain B. -message MsgChannelCloseInit { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - string signer = 3; -} - -// MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type. -message MsgChannelCloseInitResponse {} - -// MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B -// to acknowledge the change of channel state to CLOSED on Chain A. -message MsgChannelCloseConfirm { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string port_id = 1 [ (gogoproto.moretags) = "yaml:\"port_id\"" ]; - string channel_id = 2 [ (gogoproto.moretags) = "yaml:\"channel_id\"" ]; - bytes proof_init = 3 [ (gogoproto.moretags) = "yaml:\"proof_init\"" ]; - ibc.core.client.v1.Height proof_height = 4 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 5; -} - -// MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response -// type. -message MsgChannelCloseConfirmResponse {} - -// MsgRecvPacket receives incoming IBC packet -message MsgRecvPacket { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Packet packet = 1 [ (gogoproto.nullable) = false ]; - bytes proof_commitment = 2 - [ (gogoproto.moretags) = "yaml:\"proof_commitment\"" ]; - ibc.core.client.v1.Height proof_height = 3 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 4; -} - -// MsgRecvPacketResponse defines the Msg/RecvPacket response type. -message MsgRecvPacketResponse {} - -// MsgTimeout receives timed-out packet -message MsgTimeout { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Packet packet = 1 [ (gogoproto.nullable) = false ]; - bytes proof_unreceived = 2 - [ (gogoproto.moretags) = "yaml:\"proof_unreceived\"" ]; - ibc.core.client.v1.Height proof_height = 3 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - uint64 next_sequence_recv = 4 - [ (gogoproto.moretags) = "yaml:\"next_sequence_recv\"" ]; - string signer = 5; -} - -// MsgTimeoutResponse defines the Msg/Timeout response type. -message MsgTimeoutResponse {} - -// MsgTimeoutOnClose timed-out packet upon counterparty channel closure. -message MsgTimeoutOnClose { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Packet packet = 1 [ (gogoproto.nullable) = false ]; - bytes proof_unreceived = 2 - [ (gogoproto.moretags) = "yaml:\"proof_unreceived\"" ]; - bytes proof_close = 3 [ (gogoproto.moretags) = "yaml:\"proof_close\"" ]; - ibc.core.client.v1.Height proof_height = 4 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - uint64 next_sequence_recv = 5 - [ (gogoproto.moretags) = "yaml:\"next_sequence_recv\"" ]; - string signer = 6; -} - -// MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type. -message MsgTimeoutOnCloseResponse {} - -// MsgAcknowledgement receives incoming IBC acknowledgement -message MsgAcknowledgement { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - Packet packet = 1 [ (gogoproto.nullable) = false ]; - bytes acknowledgement = 2; - bytes proof_acked = 3 [ (gogoproto.moretags) = "yaml:\"proof_acked\"" ]; - ibc.core.client.v1.Height proof_height = 4 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 5; -} - -// MsgAcknowledgementResponse defines the Msg/Acknowledgement response type. -message MsgAcknowledgementResponse {} diff --git a/third_party/proto/ibc/core/client/v1/client.proto b/third_party/proto/ibc/core/client/v1/client.proto deleted file mode 100644 index 2d6f3375d..000000000 --- a/third_party/proto/ibc/core/client/v1/client.proto +++ /dev/null @@ -1,111 +0,0 @@ -syntax = "proto3"; - -package ibc.core.client.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/02-client/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "cosmos/upgrade/v1beta1/upgrade.proto"; - -// IdentifiedClientState defines a client state with an additional client -// identifier field. -message IdentifiedClientState { - // client identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // client state - google.protobuf.Any client_state = 2 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; -} - -// ConsensusStateWithHeight defines a consensus state with an additional height -// field. -message ConsensusStateWithHeight { - // consensus state height - Height height = 1 [ (gogoproto.nullable) = false ]; - // consensus state - google.protobuf.Any consensus_state = 2 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; -} - -// ClientConsensusStates defines all the stored consensus states for a given -// client. -message ClientConsensusStates { - // client identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // consensus states and their heights associated with the client - repeated ConsensusStateWithHeight consensus_states = 2 [ - (gogoproto.moretags) = "yaml:\"consensus_states\"", - (gogoproto.nullable) = false - ]; -} - -// ClientUpdateProposal is a governance proposal. If it passes, the substitute -// client's latest consensus state is copied over to the subject client. The -// proposal handler may fail if the subject and the substitute do not match in -// client and chain parameters (with exception to latest height, frozen height, -// and chain-id). -message ClientUpdateProposal { - option (gogoproto.goproto_getters) = false; - // the title of the update proposal - string title = 1; - // the description of the proposal - string description = 2; - // the client identifier for the client to be updated if the proposal passes - string subject_client_id = 3 - [ (gogoproto.moretags) = "yaml:\"subject_client_id\"" ]; - // the substitute client identifier for the client standing in for the subject - // client - string substitute_client_id = 4 - [ (gogoproto.moretags) = "yaml:\"substitute_client_id\"" ]; -} - -// UpgradeProposal is a gov Content type for initiating an IBC breaking -// upgrade. -message UpgradeProposal { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - option (gogoproto.equal) = true; - - string title = 1; - string description = 2; - cosmos.upgrade.v1beta1.Plan plan = 3 [ (gogoproto.nullable) = false ]; - - // An UpgradedClientState must be provided to perform an IBC breaking upgrade. - // This will make the chain commit to the correct upgraded (self) client state - // before the upgrade occurs, so that connecting chains can verify that the - // new upgraded client is valid by verifying a proof on the previous version - // of the chain. This will allow IBC connections to persist smoothly across - // planned chain upgrades - google.protobuf.Any upgraded_client_state = 4 - [ (gogoproto.moretags) = "yaml:\"upgraded_client_state\"" ]; -} - -// Height is a monotonically increasing data type -// that can be compared against another Height for the purposes of updating and -// freezing clients -// -// Normally the RevisionHeight is incremented at each height while keeping -// RevisionNumber the same. However some consensus algorithms may choose to -// reset the height in certain conditions e.g. hard forks, state-machine -// breaking changes In these cases, the RevisionNumber is incremented so that -// height continues to be monitonically increasing even as the RevisionHeight -// gets reset -message Height { - option (gogoproto.goproto_getters) = false; - option (gogoproto.goproto_stringer) = false; - - // the revision that the client is currently on - uint64 revision_number = 1 - [ (gogoproto.moretags) = "yaml:\"revision_number\"" ]; - // the height within the given revision - uint64 revision_height = 2 - [ (gogoproto.moretags) = "yaml:\"revision_height\"" ]; -} - -// Params defines the set of IBC light client parameters. -message Params { - // allowed_clients defines the list of allowed client state types. - repeated string allowed_clients = 1 - [ (gogoproto.moretags) = "yaml:\"allowed_clients\"" ]; -} diff --git a/third_party/proto/ibc/core/client/v1/genesis.proto b/third_party/proto/ibc/core/client/v1/genesis.proto deleted file mode 100644 index 4c113fa9d..000000000 --- a/third_party/proto/ibc/core/client/v1/genesis.proto +++ /dev/null @@ -1,56 +0,0 @@ -syntax = "proto3"; - -package ibc.core.client.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/02-client/types"; - -import "ibc/core/client/v1/client.proto"; -import "gogoproto/gogo.proto"; - -// GenesisState defines the ibc client submodule's genesis state. -message GenesisState { - // client states with their corresponding identifiers - repeated IdentifiedClientState clients = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "IdentifiedClientStates" - ]; - // consensus states from each client - repeated ClientConsensusStates clients_consensus = 2 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "ClientsConsensusStates", - (gogoproto.moretags) = "yaml:\"clients_consensus\"" - ]; - // metadata from each client - repeated IdentifiedGenesisMetadata clients_metadata = 3 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"clients_metadata\"" - ]; - Params params = 4 [ (gogoproto.nullable) = false ]; - // create localhost on initialization - bool create_localhost = 5 - [ (gogoproto.moretags) = "yaml:\"create_localhost\"" ]; - // the sequence for the next generated client identifier - uint64 next_client_sequence = 6 - [ (gogoproto.moretags) = "yaml:\"next_client_sequence\"" ]; -} - -// GenesisMetadata defines the genesis type for metadata that clients may return -// with ExportMetadata -message GenesisMetadata { - option (gogoproto.goproto_getters) = false; - - // store key of metadata without clientID-prefix - bytes key = 1; - // metadata value - bytes value = 2; -} - -// IdentifiedGenesisMetadata has the client metadata with the corresponding -// client id. -message IdentifiedGenesisMetadata { - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - repeated GenesisMetadata client_metadata = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"client_metadata\"" - ]; -} diff --git a/third_party/proto/ibc/core/client/v1/query.proto b/third_party/proto/ibc/core/client/v1/query.proto deleted file mode 100644 index a3dad8465..000000000 --- a/third_party/proto/ibc/core/client/v1/query.proto +++ /dev/null @@ -1,196 +0,0 @@ -syntax = "proto3"; - -package ibc.core.client.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/02-client/types"; - -import "cosmos/base/query/v1beta1/pagination.proto"; -import "ibc/core/client/v1/client.proto"; -import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; -import "gogoproto/gogo.proto"; - -// Query provides defines the gRPC querier service -service Query { - // ClientState queries an IBC light client. - rpc ClientState(QueryClientStateRequest) returns (QueryClientStateResponse) { - option (google.api.http).get = - "/ibc/core/client/v1/client_states/{client_id}"; - } - - // ClientStates queries all the IBC light clients of a chain. - rpc ClientStates(QueryClientStatesRequest) - returns (QueryClientStatesResponse) { - option (google.api.http).get = "/ibc/core/client/v1/client_states"; - } - - // ConsensusState queries a consensus state associated with a client state at - // a given height. - rpc ConsensusState(QueryConsensusStateRequest) - returns (QueryConsensusStateResponse) { - option (google.api.http).get = "/ibc/core/client/v1/consensus_states/" - "{client_id}/revision/{revision_number}/" - "height/{revision_height}"; - } - - // ConsensusStates queries all the consensus state associated with a given - // client. - rpc ConsensusStates(QueryConsensusStatesRequest) - returns (QueryConsensusStatesResponse) { - option (google.api.http).get = - "/ibc/core/client/v1/consensus_states/{client_id}"; - } - - // Status queries the status of an IBC client. - rpc ClientStatus(QueryClientStatusRequest) - returns (QueryClientStatusResponse) { - option (google.api.http).get = - "/ibc/core/client/v1/client_status/{client_id}"; - } - - // ClientParams queries all parameters of the ibc client. - rpc ClientParams(QueryClientParamsRequest) - returns (QueryClientParamsResponse) { - option (google.api.http).get = "/ibc/client/v1/params"; - } - - // UpgradedClientState queries an Upgraded IBC light client. - rpc UpgradedClientState(QueryUpgradedClientStateRequest) - returns (QueryUpgradedClientStateResponse) { - option (google.api.http).get = "/ibc/core/client/v1/upgraded_client_states"; - } - - // UpgradedConsensusState queries an Upgraded IBC consensus state. - rpc UpgradedConsensusState(QueryUpgradedConsensusStateRequest) - returns (QueryUpgradedConsensusStateResponse) { - option (google.api.http).get = - "/ibc/core/client/v1/upgraded_consensus_states"; - } -} - -// QueryClientStateRequest is the request type for the Query/ClientState RPC -// method -message QueryClientStateRequest { - // client state unique identifier - string client_id = 1; -} - -// QueryClientStateResponse is the response type for the Query/ClientState RPC -// method. Besides the client state, it includes a proof and the height from -// which the proof was retrieved. -message QueryClientStateResponse { - // client state associated with the request identifier - google.protobuf.Any client_state = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryClientStatesRequest is the request type for the Query/ClientStates RPC -// method -message QueryClientStatesRequest { - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryClientStatesResponse is the response type for the Query/ClientStates RPC -// method. -message QueryClientStatesResponse { - // list of stored ClientStates of the chain. - repeated IdentifiedClientState client_states = 1 [ - (gogoproto.nullable) = false, - (gogoproto.castrepeated) = "IdentifiedClientStates" - ]; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryConsensusStateRequest is the request type for the Query/ConsensusState -// RPC method. Besides the consensus state, it includes a proof and the height -// from which the proof was retrieved. -message QueryConsensusStateRequest { - // client identifier - string client_id = 1; - // consensus state revision number - uint64 revision_number = 2; - // consensus state revision height - uint64 revision_height = 3; - // latest_height overrrides the height field and queries the latest stored - // ConsensusState - bool latest_height = 4; -} - -// QueryConsensusStateResponse is the response type for the Query/ConsensusState -// RPC method -message QueryConsensusStateResponse { - // consensus state associated with the client identifier at the given height - google.protobuf.Any consensus_state = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryConsensusStatesRequest is the request type for the Query/ConsensusStates -// RPC method. -message QueryConsensusStatesRequest { - // client identifier - string client_id = 1; - // pagination request - cosmos.base.query.v1beta1.PageRequest pagination = 2; -} - -// QueryConsensusStatesResponse is the response type for the -// Query/ConsensusStates RPC method -message QueryConsensusStatesResponse { - // consensus states associated with the identifier - repeated ConsensusStateWithHeight consensus_states = 1 - [ (gogoproto.nullable) = false ]; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -// QueryClientStatusRequest is the request type for the Query/ClientStatus RPC -// method -message QueryClientStatusRequest { - // client unique identifier - string client_id = 1; -} - -// QueryClientStatusResponse is the response type for the Query/ClientStatus RPC -// method. It returns the current status of the IBC client. -message QueryClientStatusResponse { string status = 1; } - -// QueryClientParamsRequest is the request type for the Query/ClientParams RPC -// method. -message QueryClientParamsRequest {} - -// QueryClientParamsResponse is the response type for the Query/ClientParams RPC -// method. -message QueryClientParamsResponse { - // params defines the parameters of the module. - Params params = 1; -} - -// QueryUpgradedClientStateRequest is the request type for the -// Query/UpgradedClientState RPC method -message QueryUpgradedClientStateRequest {} - -// QueryUpgradedClientStateResponse is the response type for the -// Query/UpgradedClientState RPC method. -message QueryUpgradedClientStateResponse { - // client state associated with the request identifier - google.protobuf.Any upgraded_client_state = 1; -} - -// QueryUpgradedConsensusStateRequest is the request type for the -// Query/UpgradedConsensusState RPC method -message QueryUpgradedConsensusStateRequest {} - -// QueryUpgradedConsensusStateResponse is the response type for the -// Query/UpgradedConsensusState RPC method. -message QueryUpgradedConsensusStateResponse { - // Consensus state associated with the request identifier - google.protobuf.Any upgraded_consensus_state = 1; -} diff --git a/third_party/proto/ibc/core/client/v1/tx.proto b/third_party/proto/ibc/core/client/v1/tx.proto deleted file mode 100644 index 635ad7a71..000000000 --- a/third_party/proto/ibc/core/client/v1/tx.proto +++ /dev/null @@ -1,106 +0,0 @@ -syntax = "proto3"; - -package ibc.core.client.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/02-client/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -// Msg defines the ibc/client Msg service. -service Msg { - // CreateClient defines a rpc handler method for MsgCreateClient. - rpc CreateClient(MsgCreateClient) returns (MsgCreateClientResponse); - - // UpdateClient defines a rpc handler method for MsgUpdateClient. - rpc UpdateClient(MsgUpdateClient) returns (MsgUpdateClientResponse); - - // UpgradeClient defines a rpc handler method for MsgUpgradeClient. - rpc UpgradeClient(MsgUpgradeClient) returns (MsgUpgradeClientResponse); - - // SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour. - rpc SubmitMisbehaviour(MsgSubmitMisbehaviour) - returns (MsgSubmitMisbehaviourResponse); -} - -// MsgCreateClient defines a message to create an IBC client -message MsgCreateClient { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // light client state - google.protobuf.Any client_state = 1 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; - // consensus state associated with the client that corresponds to a given - // height. - google.protobuf.Any consensus_state = 2 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; - // signer address - string signer = 3; -} - -// MsgCreateClientResponse defines the Msg/CreateClient response type. -message MsgCreateClientResponse {} - -// MsgUpdateClient defines an sdk.Msg to update a IBC client state using -// the given header. -message MsgUpdateClient { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // client unique identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // header to update the light client - google.protobuf.Any header = 2; - // signer address - string signer = 3; -} - -// MsgUpdateClientResponse defines the Msg/UpdateClient response type. -message MsgUpdateClientResponse {} - -// MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client -// state -message MsgUpgradeClient { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // client unique identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // upgraded client state - google.protobuf.Any client_state = 2 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; - // upgraded consensus state, only contains enough information to serve as a - // basis of trust in update logic - google.protobuf.Any consensus_state = 3 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; - // proof that old chain committed to new client - bytes proof_upgrade_client = 4 - [ (gogoproto.moretags) = "yaml:\"proof_upgrade_client\"" ]; - // proof that old chain committed to new consensus state - bytes proof_upgrade_consensus_state = 5 - [ (gogoproto.moretags) = "yaml:\"proof_upgrade_consensus_state\"" ]; - // signer address - string signer = 6; -} - -// MsgUpgradeClientResponse defines the Msg/UpgradeClient response type. -message MsgUpgradeClientResponse {} - -// MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for -// light client misbehaviour. -message MsgSubmitMisbehaviour { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - // client unique identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // misbehaviour used for freezing the light client - google.protobuf.Any misbehaviour = 2; - // signer address - string signer = 3; -} - -// MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response -// type. -message MsgSubmitMisbehaviourResponse {} diff --git a/third_party/proto/ibc/core/commitment/v1/commitment.proto b/third_party/proto/ibc/core/commitment/v1/commitment.proto deleted file mode 100644 index 620ae5898..000000000 --- a/third_party/proto/ibc/core/commitment/v1/commitment.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -package ibc.core.commitment.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/23-commitment/types"; - -import "gogoproto/gogo.proto"; -import "proofs.proto"; - -// MerkleRoot defines a merkle root hash. -// In the Cosmos SDK, the AppHash of a block header becomes the root. -message MerkleRoot { - option (gogoproto.goproto_getters) = false; - - bytes hash = 1; -} - -// MerklePrefix is merkle path prefixed to the key. -// The constructed key from the Path and the key will be append(Path.KeyPath, -// append(Path.KeyPrefix, key...)) -message MerklePrefix { - bytes key_prefix = 1 [ (gogoproto.moretags) = "yaml:\"key_prefix\"" ]; -} - -// MerklePath is the path used to verify commitment proofs, which can be an -// arbitrary structured object (defined by a commitment type). -// MerklePath is represented from root-to-leaf -message MerklePath { - option (gogoproto.goproto_stringer) = false; - - repeated string key_path = 1 [ (gogoproto.moretags) = "yaml:\"key_path\"" ]; -} - -// MerkleProof is a wrapper type over a chain of CommitmentProofs. -// It demonstrates membership or non-membership for an element or set of -// elements, verifiable in conjunction with a known commitment root. Proofs -// should be succinct. -// MerkleProofs are ordered from leaf-to-root -message MerkleProof { repeated ics23.CommitmentProof proofs = 1; } diff --git a/third_party/proto/ibc/core/connection/v1/connection.proto b/third_party/proto/ibc/core/connection/v1/connection.proto deleted file mode 100644 index 97f478b46..000000000 --- a/third_party/proto/ibc/core/connection/v1/connection.proto +++ /dev/null @@ -1,118 +0,0 @@ -syntax = "proto3"; - -package ibc.core.connection.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/commitment/v1/commitment.proto"; - -// ICS03 - Connection Data Structures as defined in -// https://github.com/cosmos/ibc/blob/master/spec/core/ics-003-connection-semantics#data-structures - -// ConnectionEnd defines a stateful object on a chain connected to another -// separate one. -// NOTE: there must only be 2 defined ConnectionEnds to establish -// a connection between two chains. -message ConnectionEnd { - option (gogoproto.goproto_getters) = false; - // client associated with this connection. - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // IBC version which can be utilised to determine encodings or protocols for - // channels or packets utilising this connection. - repeated Version versions = 2; - // current state of the connection end. - State state = 3; - // counterparty chain associated with this connection. - Counterparty counterparty = 4 [ (gogoproto.nullable) = false ]; - // delay period that must pass before a consensus state can be used for - // packet-verification NOTE: delay period logic is only implemented by some - // clients. - uint64 delay_period = 5 [ (gogoproto.moretags) = "yaml:\"delay_period\"" ]; -} - -// IdentifiedConnection defines a connection with additional connection -// identifier field. -message IdentifiedConnection { - option (gogoproto.goproto_getters) = false; - // connection identifier. - string id = 1 [ (gogoproto.moretags) = "yaml:\"id\"" ]; - // client associated with this connection. - string client_id = 2 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // IBC version which can be utilised to determine encodings or protocols for - // channels or packets utilising this connection - repeated Version versions = 3; - // current state of the connection end. - State state = 4; - // counterparty chain associated with this connection. - Counterparty counterparty = 5 [ (gogoproto.nullable) = false ]; - // delay period associated with this connection. - uint64 delay_period = 6 [ (gogoproto.moretags) = "yaml:\"delay_period\"" ]; -} - -// State defines if a connection is in one of the following states: -// INIT, TRYOPEN, OPEN or UNINITIALIZED. -enum State { - option (gogoproto.goproto_enum_prefix) = false; - - // Default State - STATE_UNINITIALIZED_UNSPECIFIED = 0 - [ (gogoproto.enumvalue_customname) = "UNINITIALIZED" ]; - // A connection end has just started the opening handshake. - STATE_INIT = 1 [ (gogoproto.enumvalue_customname) = "INIT" ]; - // A connection end has acknowledged the handshake step on the counterparty - // chain. - STATE_TRYOPEN = 2 [ (gogoproto.enumvalue_customname) = "TRYOPEN" ]; - // A connection end has completed the handshake. - STATE_OPEN = 3 [ (gogoproto.enumvalue_customname) = "OPEN" ]; -} - -// Counterparty defines the counterparty chain associated with a connection end. -message Counterparty { - option (gogoproto.goproto_getters) = false; - - // identifies the client on the counterparty chain associated with a given - // connection. - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // identifies the connection end on the counterparty chain associated with a - // given connection. - string connection_id = 2 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - // commitment merkle prefix of the counterparty chain. - ibc.core.commitment.v1.MerklePrefix prefix = 3 - [ (gogoproto.nullable) = false ]; -} - -// ClientPaths define all the connection paths for a client state. -message ClientPaths { - // list of connection paths - repeated string paths = 1; -} - -// ConnectionPaths define all the connection paths for a given client state. -message ConnectionPaths { - // client state unique identifier - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // list of connection paths - repeated string paths = 2; -} - -// Version defines the versioning scheme used to negotiate the IBC verison in -// the connection handshake. -message Version { - option (gogoproto.goproto_getters) = false; - - // unique version identifier - string identifier = 1; - // list of features compatible with the specified identifier - repeated string features = 2; -} - -// Params defines the set of Connection parameters. -message Params { - // maximum expected time per block (in nanoseconds), used to enforce block - // delay. This parameter should reflect the largest amount of time that the - // chain might reasonably take to produce the next block under normal - // operating conditions. A safe choice is 3-5x the expected time per block. - uint64 max_expected_time_per_block = 1 - [ (gogoproto.moretags) = "yaml:\"max_expected_time_per_block\"" ]; -} diff --git a/third_party/proto/ibc/core/connection/v1/genesis.proto b/third_party/proto/ibc/core/connection/v1/genesis.proto deleted file mode 100644 index 8152eda0c..000000000 --- a/third_party/proto/ibc/core/connection/v1/genesis.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; - -package ibc.core.connection.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/connection/v1/connection.proto"; - -// GenesisState defines the ibc connection submodule's genesis state. -message GenesisState { - repeated IdentifiedConnection connections = 1 - [ (gogoproto.nullable) = false ]; - repeated ConnectionPaths client_connection_paths = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"client_connection_paths\"" - ]; - // the sequence for the next generated connection identifier - uint64 next_connection_sequence = 3 - [ (gogoproto.moretags) = "yaml:\"next_connection_sequence\"" ]; - Params params = 4 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/ibc/core/connection/v1/query.proto b/third_party/proto/ibc/core/connection/v1/query.proto deleted file mode 100644 index b50ac2e7a..000000000 --- a/third_party/proto/ibc/core/connection/v1/query.proto +++ /dev/null @@ -1,145 +0,0 @@ -syntax = "proto3"; - -package ibc.core.connection.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types"; - -import "gogoproto/gogo.proto"; -import "cosmos/base/query/v1beta1/pagination.proto"; -import "ibc/core/client/v1/client.proto"; -import "ibc/core/connection/v1/connection.proto"; -import "google/api/annotations.proto"; -import "google/protobuf/any.proto"; - -// Query provides defines the gRPC querier service -service Query { - // Connection queries an IBC connection end. - rpc Connection(QueryConnectionRequest) returns (QueryConnectionResponse) { - option (google.api.http).get = - "/ibc/core/connection/v1/connections/{connection_id}"; - } - - // Connections queries all the IBC connections of a chain. - rpc Connections(QueryConnectionsRequest) returns (QueryConnectionsResponse) { - option (google.api.http).get = "/ibc/core/connection/v1/connections"; - } - - // ClientConnections queries the connection paths associated with a client - // state. - rpc ClientConnections(QueryClientConnectionsRequest) - returns (QueryClientConnectionsResponse) { - option (google.api.http).get = - "/ibc/core/connection/v1/client_connections/{client_id}"; - } - - // ConnectionClientState queries the client state associated with the - // connection. - rpc ConnectionClientState(QueryConnectionClientStateRequest) - returns (QueryConnectionClientStateResponse) { - option (google.api.http).get = - "/ibc/core/connection/v1/connections/{connection_id}/client_state"; - } - - // ConnectionConsensusState queries the consensus state associated with the - // connection. - rpc ConnectionConsensusState(QueryConnectionConsensusStateRequest) - returns (QueryConnectionConsensusStateResponse) { - option (google.api.http).get = - "/ibc/core/connection/v1/connections/{connection_id}/consensus_state/" - "revision/{revision_number}/height/{revision_height}"; - } -} - -// QueryConnectionRequest is the request type for the Query/Connection RPC -// method -message QueryConnectionRequest { - // connection unique identifier - string connection_id = 1; -} - -// QueryConnectionResponse is the response type for the Query/Connection RPC -// method. Besides the connection end, it includes a proof and the height from -// which the proof was retrieved. -message QueryConnectionResponse { - // connection associated with the request identifier - ibc.core.connection.v1.ConnectionEnd connection = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryConnectionsRequest is the request type for the Query/Connections RPC -// method -message QueryConnectionsRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -// QueryConnectionsResponse is the response type for the Query/Connections RPC -// method. -message QueryConnectionsResponse { - // list of stored connections of the chain. - repeated ibc.core.connection.v1.IdentifiedConnection connections = 1; - // pagination response - cosmos.base.query.v1beta1.PageResponse pagination = 2; - // query block height - ibc.core.client.v1.Height height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryClientConnectionsRequest is the request type for the -// Query/ClientConnections RPC method -message QueryClientConnectionsRequest { - // client identifier associated with a connection - string client_id = 1; -} - -// QueryClientConnectionsResponse is the response type for the -// Query/ClientConnections RPC method -message QueryClientConnectionsResponse { - // slice of all the connection paths associated with a client. - repeated string connection_paths = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was generated - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryConnectionClientStateRequest is the request type for the -// Query/ConnectionClientState RPC method -message QueryConnectionClientStateRequest { - // connection identifier - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; -} - -// QueryConnectionClientStateResponse is the response type for the -// Query/ConnectionClientState RPC method -message QueryConnectionClientStateResponse { - // client state associated with the channel - ibc.core.client.v1.IdentifiedClientState identified_client_state = 1; - // merkle proof of existence - bytes proof = 2; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 3 [ (gogoproto.nullable) = false ]; -} - -// QueryConnectionConsensusStateRequest is the request type for the -// Query/ConnectionConsensusState RPC method -message QueryConnectionConsensusStateRequest { - // connection identifier - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - uint64 revision_number = 2; - uint64 revision_height = 3; -} - -// QueryConnectionConsensusStateResponse is the response type for the -// Query/ConnectionConsensusState RPC method -message QueryConnectionConsensusStateResponse { - // consensus state associated with the channel - google.protobuf.Any consensus_state = 1; - // client ID associated with the consensus state - string client_id = 2; - // merkle proof of existence - bytes proof = 3; - // height at which the proof was retrieved - ibc.core.client.v1.Height proof_height = 4 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/ibc/core/connection/v1/tx.proto b/third_party/proto/ibc/core/connection/v1/tx.proto deleted file mode 100644 index 4d7669b4b..000000000 --- a/third_party/proto/ibc/core/connection/v1/tx.proto +++ /dev/null @@ -1,140 +0,0 @@ -syntax = "proto3"; - -package ibc.core.connection.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "ibc/core/client/v1/client.proto"; -import "ibc/core/connection/v1/connection.proto"; - -// Msg defines the ibc/connection Msg service. -service Msg { - // ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit. - rpc ConnectionOpenInit(MsgConnectionOpenInit) - returns (MsgConnectionOpenInitResponse); - - // ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry. - rpc ConnectionOpenTry(MsgConnectionOpenTry) - returns (MsgConnectionOpenTryResponse); - - // ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck. - rpc ConnectionOpenAck(MsgConnectionOpenAck) - returns (MsgConnectionOpenAckResponse); - - // ConnectionOpenConfirm defines a rpc handler method for - // MsgConnectionOpenConfirm. - rpc ConnectionOpenConfirm(MsgConnectionOpenConfirm) - returns (MsgConnectionOpenConfirmResponse); -} - -// MsgConnectionOpenInit defines the msg sent by an account on Chain A to -// initialize a connection with Chain B. -message MsgConnectionOpenInit { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - Counterparty counterparty = 2 [ (gogoproto.nullable) = false ]; - Version version = 3; - uint64 delay_period = 4 [ (gogoproto.moretags) = "yaml:\"delay_period\"" ]; - string signer = 5; -} - -// MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response -// type. -message MsgConnectionOpenInitResponse {} - -// MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a -// connection on Chain B. -message MsgConnectionOpenTry { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - // in the case of crossing hello's, when both chains call OpenInit, we need - // the connection identifier of the previous connection in state INIT - string previous_connection_id = 2 - [ (gogoproto.moretags) = "yaml:\"previous_connection_id\"" ]; - google.protobuf.Any client_state = 3 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; - Counterparty counterparty = 4 [ (gogoproto.nullable) = false ]; - uint64 delay_period = 5 [ (gogoproto.moretags) = "yaml:\"delay_period\"" ]; - repeated Version counterparty_versions = 6 - [ (gogoproto.moretags) = "yaml:\"counterparty_versions\"" ]; - ibc.core.client.v1.Height proof_height = 7 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - // proof of the initialization the connection on Chain A: `UNITIALIZED -> - // INIT` - bytes proof_init = 8 [ (gogoproto.moretags) = "yaml:\"proof_init\"" ]; - // proof of client state included in message - bytes proof_client = 9 [ (gogoproto.moretags) = "yaml:\"proof_client\"" ]; - // proof of client consensus state - bytes proof_consensus = 10 - [ (gogoproto.moretags) = "yaml:\"proof_consensus\"" ]; - ibc.core.client.v1.Height consensus_height = 11 [ - (gogoproto.moretags) = "yaml:\"consensus_height\"", - (gogoproto.nullable) = false - ]; - string signer = 12; -} - -// MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type. -message MsgConnectionOpenTryResponse {} - -// MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to -// acknowledge the change of connection state to TRYOPEN on Chain B. -message MsgConnectionOpenAck { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - string counterparty_connection_id = 2 - [ (gogoproto.moretags) = "yaml:\"counterparty_connection_id\"" ]; - Version version = 3; - google.protobuf.Any client_state = 4 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; - ibc.core.client.v1.Height proof_height = 5 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - // proof of the initialization the connection on Chain B: `UNITIALIZED -> - // TRYOPEN` - bytes proof_try = 6 [ (gogoproto.moretags) = "yaml:\"proof_try\"" ]; - // proof of client state included in message - bytes proof_client = 7 [ (gogoproto.moretags) = "yaml:\"proof_client\"" ]; - // proof of client consensus state - bytes proof_consensus = 8 - [ (gogoproto.moretags) = "yaml:\"proof_consensus\"" ]; - ibc.core.client.v1.Height consensus_height = 9 [ - (gogoproto.moretags) = "yaml:\"consensus_height\"", - (gogoproto.nullable) = false - ]; - string signer = 10; -} - -// MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type. -message MsgConnectionOpenAckResponse {} - -// MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to -// acknowledge the change of connection state to OPEN on Chain A. -message MsgConnectionOpenConfirm { - option (gogoproto.equal) = false; - option (gogoproto.goproto_getters) = false; - - string connection_id = 1 [ (gogoproto.moretags) = "yaml:\"connection_id\"" ]; - // proof for the change of the connection state on Chain A: `INIT -> OPEN` - bytes proof_ack = 2 [ (gogoproto.moretags) = "yaml:\"proof_ack\"" ]; - ibc.core.client.v1.Height proof_height = 3 [ - (gogoproto.moretags) = "yaml:\"proof_height\"", - (gogoproto.nullable) = false - ]; - string signer = 4; -} - -// MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm -// response type. -message MsgConnectionOpenConfirmResponse {} diff --git a/third_party/proto/ibc/core/types/v1/genesis.proto b/third_party/proto/ibc/core/types/v1/genesis.proto deleted file mode 100644 index e1b6ab4a9..000000000 --- a/third_party/proto/ibc/core/types/v1/genesis.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -package ibc.core.types.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/client/v1/genesis.proto"; -import "ibc/core/connection/v1/genesis.proto"; -import "ibc/core/channel/v1/genesis.proto"; - -// GenesisState defines the ibc module's genesis state. -message GenesisState { - // ICS002 - Clients genesis state - ibc.core.client.v1.GenesisState client_genesis = 1 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"client_genesis\"" - ]; - // ICS003 - Connections genesis state - ibc.core.connection.v1.GenesisState connection_genesis = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"connection_genesis\"" - ]; - // ICS004 - Channel genesis state - ibc.core.channel.v1.GenesisState channel_genesis = 3 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"channel_genesis\"" - ]; -} diff --git a/third_party/proto/ibc/lightclients/localhost/v1/localhost.proto b/third_party/proto/ibc/lightclients/localhost/v1/localhost.proto deleted file mode 100644 index e9e5a4061..000000000 --- a/third_party/proto/ibc/lightclients/localhost/v1/localhost.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -package ibc.lightclients.localhost.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/light-clients/09-localhost/types"; - -import "gogoproto/gogo.proto"; -import "ibc/core/client/v1/client.proto"; - -// ClientState defines a loopback (localhost) client. It requires (read-only) -// access to keys outside the client prefix. -message ClientState { - option (gogoproto.goproto_getters) = false; - // self chain ID - string chain_id = 1 [ (gogoproto.moretags) = "yaml:\"chain_id\"" ]; - // self latest block height - ibc.core.client.v1.Height height = 2 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto b/third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto deleted file mode 100644 index 011e77b69..000000000 --- a/third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto +++ /dev/null @@ -1,206 +0,0 @@ -syntax = "proto3"; - -package ibc.lightclients.solomachine.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/core/02-client/legacy/v100"; - -import "ibc/core/connection/v1/connection.proto"; -import "ibc/core/channel/v1/channel.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -// ClientState defines a solo machine client that tracks the current consensus -// state and if the client is frozen. -message ClientState { - option (gogoproto.goproto_getters) = false; - // latest sequence of the client state - uint64 sequence = 1; - // frozen sequence of the solo machine - uint64 frozen_sequence = 2 - [ (gogoproto.moretags) = "yaml:\"frozen_sequence\"" ]; - ConsensusState consensus_state = 3 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; - // when set to true, will allow governance to update a solo machine client. - // The client will be unfrozen if it is frozen. - bool allow_update_after_proposal = 4 - [ (gogoproto.moretags) = "yaml:\"allow_update_after_proposal\"" ]; -} - -// ConsensusState defines a solo machine consensus state. The sequence of a -// consensus state is contained in the "height" key used in storing the -// consensus state. -message ConsensusState { - option (gogoproto.goproto_getters) = false; - // public key of the solo machine - google.protobuf.Any public_key = 1 - [ (gogoproto.moretags) = "yaml:\"public_key\"" ]; - // diversifier allows the same public key to be re-used across different solo - // machine clients (potentially on different chains) without being considered - // misbehaviour. - string diversifier = 2; - uint64 timestamp = 3; -} - -// Header defines a solo machine consensus header -message Header { - option (gogoproto.goproto_getters) = false; - // sequence to update solo machine public key at - uint64 sequence = 1; - uint64 timestamp = 2; - bytes signature = 3; - google.protobuf.Any new_public_key = 4 - [ (gogoproto.moretags) = "yaml:\"new_public_key\"" ]; - string new_diversifier = 5 - [ (gogoproto.moretags) = "yaml:\"new_diversifier\"" ]; -} - -// Misbehaviour defines misbehaviour for a solo machine which consists -// of a sequence and two signatures over different messages at that sequence. -message Misbehaviour { - option (gogoproto.goproto_getters) = false; - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - uint64 sequence = 2; - SignatureAndData signature_one = 3 - [ (gogoproto.moretags) = "yaml:\"signature_one\"" ]; - SignatureAndData signature_two = 4 - [ (gogoproto.moretags) = "yaml:\"signature_two\"" ]; -} - -// SignatureAndData contains a signature and the data signed over to create that -// signature. -message SignatureAndData { - option (gogoproto.goproto_getters) = false; - bytes signature = 1; - DataType data_type = 2 [ (gogoproto.moretags) = "yaml:\"data_type\"" ]; - bytes data = 3; - uint64 timestamp = 4; -} - -// TimestampedSignatureData contains the signature data and the timestamp of the -// signature. -message TimestampedSignatureData { - option (gogoproto.goproto_getters) = false; - bytes signature_data = 1 [ (gogoproto.moretags) = "yaml:\"signature_data\"" ]; - uint64 timestamp = 2; -} - -// SignBytes defines the signed bytes used for signature verification. -message SignBytes { - option (gogoproto.goproto_getters) = false; - - uint64 sequence = 1; - uint64 timestamp = 2; - string diversifier = 3; - // type of the data used - DataType data_type = 4 [ (gogoproto.moretags) = "yaml:\"data_type\"" ]; - // marshaled data - bytes data = 5; -} - -// DataType defines the type of solo machine proof being created. This is done -// to preserve uniqueness of different data sign byte encodings. -enum DataType { - option (gogoproto.goproto_enum_prefix) = false; - - // Default State - DATA_TYPE_UNINITIALIZED_UNSPECIFIED = 0 - [ (gogoproto.enumvalue_customname) = "UNSPECIFIED" ]; - // Data type for client state verification - DATA_TYPE_CLIENT_STATE = 1 [ (gogoproto.enumvalue_customname) = "CLIENT" ]; - // Data type for consensus state verification - DATA_TYPE_CONSENSUS_STATE = 2 - [ (gogoproto.enumvalue_customname) = "CONSENSUS" ]; - // Data type for connection state verification - DATA_TYPE_CONNECTION_STATE = 3 - [ (gogoproto.enumvalue_customname) = "CONNECTION" ]; - // Data type for channel state verification - DATA_TYPE_CHANNEL_STATE = 4 [ (gogoproto.enumvalue_customname) = "CHANNEL" ]; - // Data type for packet commitment verification - DATA_TYPE_PACKET_COMMITMENT = 5 - [ (gogoproto.enumvalue_customname) = "PACKETCOMMITMENT" ]; - // Data type for packet acknowledgement verification - DATA_TYPE_PACKET_ACKNOWLEDGEMENT = 6 - [ (gogoproto.enumvalue_customname) = "PACKETACKNOWLEDGEMENT" ]; - // Data type for packet receipt absence verification - DATA_TYPE_PACKET_RECEIPT_ABSENCE = 7 - [ (gogoproto.enumvalue_customname) = "PACKETRECEIPTABSENCE" ]; - // Data type for next sequence recv verification - DATA_TYPE_NEXT_SEQUENCE_RECV = 8 - [ (gogoproto.enumvalue_customname) = "NEXTSEQUENCERECV" ]; - // Data type for header verification - DATA_TYPE_HEADER = 9 [ (gogoproto.enumvalue_customname) = "HEADER" ]; -} - -// HeaderData returns the SignBytes data for update verification. -message HeaderData { - option (gogoproto.goproto_getters) = false; - - // header public key - google.protobuf.Any new_pub_key = 1 - [ (gogoproto.moretags) = "yaml:\"new_pub_key\"" ]; - // header diversifier - string new_diversifier = 2 - [ (gogoproto.moretags) = "yaml:\"new_diversifier\"" ]; -} - -// ClientStateData returns the SignBytes data for client state verification. -message ClientStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - google.protobuf.Any client_state = 2 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; -} - -// ConsensusStateData returns the SignBytes data for consensus state -// verification. -message ConsensusStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - google.protobuf.Any consensus_state = 2 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; -} - -// ConnectionStateData returns the SignBytes data for connection state -// verification. -message ConnectionStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - ibc.core.connection.v1.ConnectionEnd connection = 2; -} - -// ChannelStateData returns the SignBytes data for channel state -// verification. -message ChannelStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - ibc.core.channel.v1.Channel channel = 2; -} - -// PacketCommitmentData returns the SignBytes data for packet commitment -// verification. -message PacketCommitmentData { - bytes path = 1; - bytes commitment = 2; -} - -// PacketAcknowledgementData returns the SignBytes data for acknowledgement -// verification. -message PacketAcknowledgementData { - bytes path = 1; - bytes acknowledgement = 2; -} - -// PacketReceiptAbsenceData returns the SignBytes data for -// packet receipt absence verification. -message PacketReceiptAbsenceData { bytes path = 1; } - -// NextSequenceRecvData returns the SignBytes data for verification of the next -// sequence to be received. -message NextSequenceRecvData { - bytes path = 1; - uint64 next_seq_recv = 2 [ (gogoproto.moretags) = "yaml:\"next_seq_recv\"" ]; -} diff --git a/third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto b/third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto deleted file mode 100644 index 6f8d79fcf..000000000 --- a/third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto +++ /dev/null @@ -1,205 +0,0 @@ -syntax = "proto3"; - -package ibc.lightclients.solomachine.v2; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/light-clients/06-solomachine/types"; - -import "ibc/core/connection/v1/connection.proto"; -import "ibc/core/channel/v1/channel.proto"; -import "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; - -// ClientState defines a solo machine client that tracks the current consensus -// state and if the client is frozen. -message ClientState { - option (gogoproto.goproto_getters) = false; - // latest sequence of the client state - uint64 sequence = 1; - // frozen sequence of the solo machine - bool is_frozen = 2 [ (gogoproto.moretags) = "yaml:\"is_frozen\"" ]; - ConsensusState consensus_state = 3 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; - // when set to true, will allow governance to update a solo machine client. - // The client will be unfrozen if it is frozen. - bool allow_update_after_proposal = 4 - [ (gogoproto.moretags) = "yaml:\"allow_update_after_proposal\"" ]; -} - -// ConsensusState defines a solo machine consensus state. The sequence of a -// consensus state is contained in the "height" key used in storing the -// consensus state. -message ConsensusState { - option (gogoproto.goproto_getters) = false; - // public key of the solo machine - google.protobuf.Any public_key = 1 - [ (gogoproto.moretags) = "yaml:\"public_key\"" ]; - // diversifier allows the same public key to be re-used across different solo - // machine clients (potentially on different chains) without being considered - // misbehaviour. - string diversifier = 2; - uint64 timestamp = 3; -} - -// Header defines a solo machine consensus header -message Header { - option (gogoproto.goproto_getters) = false; - // sequence to update solo machine public key at - uint64 sequence = 1; - uint64 timestamp = 2; - bytes signature = 3; - google.protobuf.Any new_public_key = 4 - [ (gogoproto.moretags) = "yaml:\"new_public_key\"" ]; - string new_diversifier = 5 - [ (gogoproto.moretags) = "yaml:\"new_diversifier\"" ]; -} - -// Misbehaviour defines misbehaviour for a solo machine which consists -// of a sequence and two signatures over different messages at that sequence. -message Misbehaviour { - option (gogoproto.goproto_getters) = false; - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - uint64 sequence = 2; - SignatureAndData signature_one = 3 - [ (gogoproto.moretags) = "yaml:\"signature_one\"" ]; - SignatureAndData signature_two = 4 - [ (gogoproto.moretags) = "yaml:\"signature_two\"" ]; -} - -// SignatureAndData contains a signature and the data signed over to create that -// signature. -message SignatureAndData { - option (gogoproto.goproto_getters) = false; - bytes signature = 1; - DataType data_type = 2 [ (gogoproto.moretags) = "yaml:\"data_type\"" ]; - bytes data = 3; - uint64 timestamp = 4; -} - -// TimestampedSignatureData contains the signature data and the timestamp of the -// signature. -message TimestampedSignatureData { - option (gogoproto.goproto_getters) = false; - bytes signature_data = 1 [ (gogoproto.moretags) = "yaml:\"signature_data\"" ]; - uint64 timestamp = 2; -} - -// SignBytes defines the signed bytes used for signature verification. -message SignBytes { - option (gogoproto.goproto_getters) = false; - - uint64 sequence = 1; - uint64 timestamp = 2; - string diversifier = 3; - // type of the data used - DataType data_type = 4 [ (gogoproto.moretags) = "yaml:\"data_type\"" ]; - // marshaled data - bytes data = 5; -} - -// DataType defines the type of solo machine proof being created. This is done -// to preserve uniqueness of different data sign byte encodings. -enum DataType { - option (gogoproto.goproto_enum_prefix) = false; - - // Default State - DATA_TYPE_UNINITIALIZED_UNSPECIFIED = 0 - [ (gogoproto.enumvalue_customname) = "UNSPECIFIED" ]; - // Data type for client state verification - DATA_TYPE_CLIENT_STATE = 1 [ (gogoproto.enumvalue_customname) = "CLIENT" ]; - // Data type for consensus state verification - DATA_TYPE_CONSENSUS_STATE = 2 - [ (gogoproto.enumvalue_customname) = "CONSENSUS" ]; - // Data type for connection state verification - DATA_TYPE_CONNECTION_STATE = 3 - [ (gogoproto.enumvalue_customname) = "CONNECTION" ]; - // Data type for channel state verification - DATA_TYPE_CHANNEL_STATE = 4 [ (gogoproto.enumvalue_customname) = "CHANNEL" ]; - // Data type for packet commitment verification - DATA_TYPE_PACKET_COMMITMENT = 5 - [ (gogoproto.enumvalue_customname) = "PACKETCOMMITMENT" ]; - // Data type for packet acknowledgement verification - DATA_TYPE_PACKET_ACKNOWLEDGEMENT = 6 - [ (gogoproto.enumvalue_customname) = "PACKETACKNOWLEDGEMENT" ]; - // Data type for packet receipt absence verification - DATA_TYPE_PACKET_RECEIPT_ABSENCE = 7 - [ (gogoproto.enumvalue_customname) = "PACKETRECEIPTABSENCE" ]; - // Data type for next sequence recv verification - DATA_TYPE_NEXT_SEQUENCE_RECV = 8 - [ (gogoproto.enumvalue_customname) = "NEXTSEQUENCERECV" ]; - // Data type for header verification - DATA_TYPE_HEADER = 9 [ (gogoproto.enumvalue_customname) = "HEADER" ]; -} - -// HeaderData returns the SignBytes data for update verification. -message HeaderData { - option (gogoproto.goproto_getters) = false; - - // header public key - google.protobuf.Any new_pub_key = 1 - [ (gogoproto.moretags) = "yaml:\"new_pub_key\"" ]; - // header diversifier - string new_diversifier = 2 - [ (gogoproto.moretags) = "yaml:\"new_diversifier\"" ]; -} - -// ClientStateData returns the SignBytes data for client state verification. -message ClientStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - google.protobuf.Any client_state = 2 - [ (gogoproto.moretags) = "yaml:\"client_state\"" ]; -} - -// ConsensusStateData returns the SignBytes data for consensus state -// verification. -message ConsensusStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - google.protobuf.Any consensus_state = 2 - [ (gogoproto.moretags) = "yaml:\"consensus_state\"" ]; -} - -// ConnectionStateData returns the SignBytes data for connection state -// verification. -message ConnectionStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - ibc.core.connection.v1.ConnectionEnd connection = 2; -} - -// ChannelStateData returns the SignBytes data for channel state -// verification. -message ChannelStateData { - option (gogoproto.goproto_getters) = false; - - bytes path = 1; - ibc.core.channel.v1.Channel channel = 2; -} - -// PacketCommitmentData returns the SignBytes data for packet commitment -// verification. -message PacketCommitmentData { - bytes path = 1; - bytes commitment = 2; -} - -// PacketAcknowledgementData returns the SignBytes data for acknowledgement -// verification. -message PacketAcknowledgementData { - bytes path = 1; - bytes acknowledgement = 2; -} - -// PacketReceiptAbsenceData returns the SignBytes data for -// packet receipt absence verification. -message PacketReceiptAbsenceData { bytes path = 1; } - -// NextSequenceRecvData returns the SignBytes data for verification of the next -// sequence to be received. -message NextSequenceRecvData { - bytes path = 1; - uint64 next_seq_recv = 2 [ (gogoproto.moretags) = "yaml:\"next_seq_recv\"" ]; -} diff --git a/third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto b/third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto deleted file mode 100644 index 62b3ac765..000000000 --- a/third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto +++ /dev/null @@ -1,146 +0,0 @@ -syntax = "proto3"; - -package ibc.lightclients.tendermint.v1; - -option go_package = "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types"; - -import "tendermint/types/validator.proto"; -import "tendermint/types/types.proto"; -import "proofs.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; -import "ibc/core/client/v1/client.proto"; -import "ibc/core/commitment/v1/commitment.proto"; -import "gogoproto/gogo.proto"; - -// ClientState from Tendermint tracks the current validator set, latest height, -// and a possible frozen height. -message ClientState { - option (gogoproto.goproto_getters) = false; - - string chain_id = 1; - Fraction trust_level = 2 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"trust_level\"" - ]; - // duration of the period since the LastestTimestamp during which the - // submitted headers are valid for upgrade - google.protobuf.Duration trusting_period = 3 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.moretags) = "yaml:\"trusting_period\"" - ]; - // duration of the staking unbonding period - google.protobuf.Duration unbonding_period = 4 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.moretags) = "yaml:\"unbonding_period\"" - ]; - // defines how much new (untrusted) header's Time can drift into the future. - google.protobuf.Duration max_clock_drift = 5 [ - (gogoproto.nullable) = false, - (gogoproto.stdduration) = true, - (gogoproto.moretags) = "yaml:\"max_clock_drift\"" - ]; - // Block height when the client was frozen due to a misbehaviour - ibc.core.client.v1.Height frozen_height = 6 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"frozen_height\"" - ]; - // Latest height the client was updated to - ibc.core.client.v1.Height latest_height = 7 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"latest_height\"" - ]; - - // Proof specifications used in verifying counterparty state - repeated ics23.ProofSpec proof_specs = 8 - [ (gogoproto.moretags) = "yaml:\"proof_specs\"" ]; - - // Path at which next upgraded client will be committed. - // Each element corresponds to the key for a single CommitmentProof in the - // chained proof. NOTE: ClientState must stored under - // `{upgradePath}/{upgradeHeight}/clientState` ConsensusState must be stored - // under `{upgradepath}/{upgradeHeight}/consensusState` For SDK chains using - // the default upgrade module, upgrade_path should be []string{"upgrade", - // "upgradedIBCState"}` - repeated string upgrade_path = 9 - [ (gogoproto.moretags) = "yaml:\"upgrade_path\"" ]; - - // This flag, when set to true, will allow governance to recover a client - // which has expired - bool allow_update_after_expiry = 10 - [ (gogoproto.moretags) = "yaml:\"allow_update_after_expiry\"" ]; - // This flag, when set to true, will allow governance to unfreeze a client - // whose chain has experienced a misbehaviour event - bool allow_update_after_misbehaviour = 11 - [ (gogoproto.moretags) = "yaml:\"allow_update_after_misbehaviour\"" ]; -} - -// ConsensusState defines the consensus state from Tendermint. -message ConsensusState { - option (gogoproto.goproto_getters) = false; - - // timestamp that corresponds to the block height in which the ConsensusState - // was stored. - google.protobuf.Timestamp timestamp = 1 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - // commitment root (i.e app hash) - ibc.core.commitment.v1.MerkleRoot root = 2 [ (gogoproto.nullable) = false ]; - bytes next_validators_hash = 3 [ - (gogoproto.casttype) = - "github.com/tendermint/tendermint/libs/bytes.HexBytes", - (gogoproto.moretags) = "yaml:\"next_validators_hash\"" - ]; -} - -// Misbehaviour is a wrapper over two conflicting Headers -// that implements Misbehaviour interface expected by ICS-02 -message Misbehaviour { - option (gogoproto.goproto_getters) = false; - - string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ]; - Header header_1 = 2 [ - (gogoproto.customname) = "Header1", - (gogoproto.moretags) = "yaml:\"header_1\"" - ]; - Header header_2 = 3 [ - (gogoproto.customname) = "Header2", - (gogoproto.moretags) = "yaml:\"header_2\"" - ]; -} - -// Header defines the Tendermint client consensus Header. -// It encapsulates all the information necessary to update from a trusted -// Tendermint ConsensusState. The inclusion of TrustedHeight and -// TrustedValidators allows this update to process correctly, so long as the -// ConsensusState for the TrustedHeight exists, this removes race conditions -// among relayers The SignedHeader and ValidatorSet are the new untrusted update -// fields for the client. The TrustedHeight is the height of a stored -// ConsensusState on the client that will be used to verify the new untrusted -// header. The Trusted ConsensusState must be within the unbonding period of -// current time in order to correctly verify, and the TrustedValidators must -// hash to TrustedConsensusState.NextValidatorsHash since that is the last -// trusted validator set at the TrustedHeight. -message Header { - .tendermint.types.SignedHeader signed_header = 1 [ - (gogoproto.embed) = true, - (gogoproto.moretags) = "yaml:\"signed_header\"" - ]; - - .tendermint.types.ValidatorSet validator_set = 2 - [ (gogoproto.moretags) = "yaml:\"validator_set\"" ]; - ibc.core.client.v1.Height trusted_height = 3 [ - (gogoproto.nullable) = false, - (gogoproto.moretags) = "yaml:\"trusted_height\"" - ]; - .tendermint.types.ValidatorSet trusted_validators = 4 - [ (gogoproto.moretags) = "yaml:\"trusted_validators\"" ]; -} - -// Fraction defines the protobuf message type for tmmath.Fraction that only -// supports positive values. -message Fraction { - uint64 numerator = 1; - uint64 denominator = 2; -} diff --git a/third_party/proto/proofs.proto b/third_party/proto/proofs.proto deleted file mode 100644 index f36281dd1..000000000 --- a/third_party/proto/proofs.proto +++ /dev/null @@ -1,238 +0,0 @@ -syntax = "proto3"; - -package ics23; -option go_package = "github.com/confio/ics23/go"; - -enum HashOp { - // NO_HASH is the default if no data passed. Note this is an illegal argument - // some places. - NO_HASH = 0; - SHA256 = 1; - SHA512 = 2; - KECCAK = 3; - RIPEMD160 = 4; - BITCOIN = 5; // ripemd160(sha256(x)) -} - -/** -LengthOp defines how to process the key and value of the LeafOp -to include length information. After encoding the length with the given -algorithm, the length will be prepended to the key and value bytes. -(Each one with it's own encoded length) -*/ -enum LengthOp { - // NO_PREFIX don't include any length info - NO_PREFIX = 0; - // VAR_PROTO uses protobuf (and go-amino) varint encoding of the length - VAR_PROTO = 1; - // VAR_RLP uses rlp int encoding of the length - VAR_RLP = 2; - // FIXED32_BIG uses big-endian encoding of the length as a 32 bit integer - FIXED32_BIG = 3; - // FIXED32_LITTLE uses little-endian encoding of the length as a 32 bit - // integer - FIXED32_LITTLE = 4; - // FIXED64_BIG uses big-endian encoding of the length as a 64 bit integer - FIXED64_BIG = 5; - // FIXED64_LITTLE uses little-endian encoding of the length as a 64 bit - // integer - FIXED64_LITTLE = 6; - // REQUIRE_32_BYTES is like NONE, but will fail if the input is not exactly 32 - // bytes (sha256 output) - REQUIRE_32_BYTES = 7; - // REQUIRE_64_BYTES is like NONE, but will fail if the input is not exactly 64 - // bytes (sha512 output) - REQUIRE_64_BYTES = 8; -} - -/** -ExistenceProof takes a key and a value and a set of steps to perform on it. -The result of peforming all these steps will provide a "root hash", which can -be compared to the value in a header. - -Since it is computationally infeasible to produce a hash collission for any of -the used cryptographic hash functions, if someone can provide a series of -operations to transform a given key and value into a root hash that matches some -trusted root, these key and values must be in the referenced merkle tree. - -The only possible issue is maliablity in LeafOp, such as providing extra prefix -data, which should be controlled by a spec. Eg. with lengthOp as NONE, prefix = -FOO, key = BAR, value = CHOICE and prefix = F, key = OOBAR, value = CHOICE would -produce the same value. - -With LengthOp this is tricker but not impossible. Which is why the -"leafPrefixEqual" field in the ProofSpec is valuable to prevent this mutability. -And why all trees should length-prefix the data before hashing it. -*/ -message ExistenceProof { - bytes key = 1; - bytes value = 2; - LeafOp leaf = 3; - repeated InnerOp path = 4; -} - -/* -NonExistenceProof takes a proof of two neighbors, one left of the desired key, -one right of the desired key. If both proofs are valid AND they are neighbors, -then there is no valid proof for the given key. -*/ -message NonExistenceProof { - bytes key = 1; // TODO: remove this as unnecessary??? we prove a range - ExistenceProof left = 2; - ExistenceProof right = 3; -} - -/* -CommitmentProof is either an ExistenceProof or a NonExistenceProof, or a Batch -of such messages -*/ -message CommitmentProof { - oneof proof { - ExistenceProof exist = 1; - NonExistenceProof nonexist = 2; - BatchProof batch = 3; - CompressedBatchProof compressed = 4; - } -} - -/** -LeafOp represents the raw key-value data we wish to prove, and -must be flexible to represent the internal transformation from -the original key-value pairs into the basis hash, for many existing -merkle trees. - -key and value are passed in. So that the signature of this operation is: - leafOp(key, value) -> output - -To process this, first prehash the keys and values if needed (ANY means no hash -in this case): hkey = prehashKey(key) hvalue = prehashValue(value) - -Then combine the bytes, and hash it - output = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue) -*/ -message LeafOp { - HashOp hash = 1; - HashOp prehash_key = 2; - HashOp prehash_value = 3; - LengthOp length = 4; - // prefix is a fixed bytes that may optionally be included at the beginning to - // differentiate a leaf node from an inner node. - bytes prefix = 5; -} - -/** -InnerOp represents a merkle-proof step that is not a leaf. -It represents concatenating two children and hashing them to provide the next -result. - -The result of the previous step is passed in, so the signature of this op is: - innerOp(child) -> output - -The result of applying InnerOp should be: - output = op.hash(op.prefix || child || op.suffix) - - where the || operator is concatenation of binary data, -and child is the result of hashing all the tree below this step. - -Any special data, like prepending child with the length, or prepending the -entire operation with some value to differentiate from leaf nodes, should be -included in prefix and suffix. If either of prefix or suffix is empty, we just -treat it as an empty string -*/ -message InnerOp { - HashOp hash = 1; - bytes prefix = 2; - bytes suffix = 3; -} - -/** -ProofSpec defines what the expected parameters are for a given proof type. -This can be stored in the client and used to validate any incoming proofs. - - verify(ProofSpec, Proof) -> Proof | Error - -As demonstrated in tests, if we don't fix the algorithm used to calculate the -LeafHash for a given tree, there are many possible key-value pairs that can -generate a given hash (by interpretting the preimage differently). -We need this for proper security, requires client knows a priori what -tree format server uses. But not in code, rather a configuration object. -*/ -message ProofSpec { - // any field in the ExistenceProof must be the same as in this spec. - // except Prefix, which is just the first bytes of prefix (spec can be longer) - LeafOp leaf_spec = 1; - InnerSpec inner_spec = 2; - // max_depth (if > 0) is the maximum number of InnerOps allowed (mainly for - // fixed-depth tries) - int32 max_depth = 3; - // min_depth (if > 0) is the minimum number of InnerOps allowed (mainly for - // fixed-depth tries) - int32 min_depth = 4; -} - -/* -InnerSpec contains all store-specific structure info to determine if two proofs -from a given store are neighbors. - -This enables: - - isLeftMost(spec: InnerSpec, op: InnerOp) - isRightMost(spec: InnerSpec, op: InnerOp) - isLeftNeighbor(spec: InnerSpec, left: InnerOp, right: InnerOp) -*/ -message InnerSpec { - // Child order is the ordering of the children node, must count from 0 - // iavl tree is [0, 1] (left then right) - // merk is [0, 2, 1] (left, right, here) - repeated int32 child_order = 1; - int32 child_size = 2; - int32 min_prefix_length = 3; - int32 max_prefix_length = 4; - // empty child is the prehash image that is used when one child is nil (eg. 20 - // bytes of 0) - bytes empty_child = 5; - // hash is the algorithm that must be used for each InnerOp - HashOp hash = 6; -} - -/* -BatchProof is a group of multiple proof types than can be compressed -*/ -message BatchProof { repeated BatchEntry entries = 1; } - -// Use BatchEntry not CommitmentProof, to avoid recursion -message BatchEntry { - oneof proof { - ExistenceProof exist = 1; - NonExistenceProof nonexist = 2; - } -} - -/****** all items here are compressed forms *******/ - -message CompressedBatchProof { - repeated CompressedBatchEntry entries = 1; - repeated InnerOp lookup_inners = 2; -} - -// Use BatchEntry not CommitmentProof, to avoid recursion -message CompressedBatchEntry { - oneof proof { - CompressedExistenceProof exist = 1; - CompressedNonExistenceProof nonexist = 2; - } -} - -message CompressedExistenceProof { - bytes key = 1; - bytes value = 2; - LeafOp leaf = 3; - // these are indexes into the lookup_inners table in CompressedBatchProof - repeated int32 path = 4; -} - -message CompressedNonExistenceProof { - bytes key = 1; // TODO: remove this as unnecessary??? we prove a range - CompressedExistenceProof left = 2; - CompressedExistenceProof right = 3; -} diff --git a/third_party/proto/tendermint/abci/types.proto b/third_party/proto/tendermint/abci/types.proto deleted file mode 100644 index 36503cbfd..000000000 --- a/third_party/proto/tendermint/abci/types.proto +++ /dev/null @@ -1,400 +0,0 @@ -syntax = "proto3"; -package tendermint.abci; - -option go_package = "github.com/tendermint/tendermint/abci/types"; - -// For more information on gogo.proto, see: -// https://github.com/gogo/protobuf/blob/master/extensions.md -import "tendermint/crypto/proof.proto"; -import "tendermint/types/types.proto"; -import "tendermint/crypto/keys.proto"; -import "tendermint/types/params.proto"; -import "google/protobuf/timestamp.proto"; -import "gogoproto/gogo.proto"; - -// This file is copied from http://github.com/tendermint/abci -// NOTE: When using custom types, mind the warnings. -// https://github.com/gogo/protobuf/blob/master/custom_types.md#warnings-and-issues - -//---------------------------------------- -// Request types - -message Request { - oneof value { - RequestEcho echo = 1; - RequestFlush flush = 2; - RequestInfo info = 3; - RequestSetOption set_option = 4; - RequestInitChain init_chain = 5; - RequestQuery query = 6; - RequestBeginBlock begin_block = 7; - RequestCheckTx check_tx = 8; - RequestDeliverTx deliver_tx = 9; - RequestEndBlock end_block = 10; - RequestCommit commit = 11; - RequestListSnapshots list_snapshots = 12; - RequestOfferSnapshot offer_snapshot = 13; - RequestLoadSnapshotChunk load_snapshot_chunk = 14; - RequestApplySnapshotChunk apply_snapshot_chunk = 15; - } -} - -message RequestEcho { string message = 1; } - -message RequestFlush {} - -message RequestInfo { - string version = 1; - uint64 block_version = 2; - uint64 p2p_version = 3; -} - -// nondeterministic -message RequestSetOption { - string key = 1; - string value = 2; -} - -message RequestInitChain { - google.protobuf.Timestamp time = 1 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - string chain_id = 2; - ConsensusParams consensus_params = 3; - repeated ValidatorUpdate validators = 4 [ (gogoproto.nullable) = false ]; - bytes app_state_bytes = 5; - int64 initial_height = 6; -} - -message RequestQuery { - bytes data = 1; - string path = 2; - int64 height = 3; - bool prove = 4; -} - -message RequestBeginBlock { - bytes hash = 1; - tendermint.types.Header header = 2 [ (gogoproto.nullable) = false ]; - LastCommitInfo last_commit_info = 3 [ (gogoproto.nullable) = false ]; - repeated Evidence byzantine_validators = 4 [ (gogoproto.nullable) = false ]; -} - -enum CheckTxType { - NEW = 0 [ (gogoproto.enumvalue_customname) = "New" ]; - RECHECK = 1 [ (gogoproto.enumvalue_customname) = "Recheck" ]; -} - -message RequestCheckTx { - bytes tx = 1; - CheckTxType type = 2; -} - -message RequestDeliverTx { bytes tx = 1; } - -message RequestEndBlock { int64 height = 1; } - -message RequestCommit {} - -// lists available snapshots -message RequestListSnapshots {} - -// offers a snapshot to the application -message RequestOfferSnapshot { - Snapshot snapshot = 1; // snapshot offered by peers - bytes app_hash = 2; // light client-verified app hash for snapshot height -} - -// loads a snapshot chunk -message RequestLoadSnapshotChunk { - uint64 height = 1; - uint32 format = 2; - uint32 chunk = 3; -} - -// Applies a snapshot chunk -message RequestApplySnapshotChunk { - uint32 index = 1; - bytes chunk = 2; - string sender = 3; -} - -//---------------------------------------- -// Response types - -message Response { - oneof value { - ResponseException exception = 1; - ResponseEcho echo = 2; - ResponseFlush flush = 3; - ResponseInfo info = 4; - ResponseSetOption set_option = 5; - ResponseInitChain init_chain = 6; - ResponseQuery query = 7; - ResponseBeginBlock begin_block = 8; - ResponseCheckTx check_tx = 9; - ResponseDeliverTx deliver_tx = 10; - ResponseEndBlock end_block = 11; - ResponseCommit commit = 12; - ResponseListSnapshots list_snapshots = 13; - ResponseOfferSnapshot offer_snapshot = 14; - ResponseLoadSnapshotChunk load_snapshot_chunk = 15; - ResponseApplySnapshotChunk apply_snapshot_chunk = 16; - } -} - -// nondeterministic -message ResponseException { string error = 1; } - -message ResponseEcho { string message = 1; } - -message ResponseFlush {} - -message ResponseInfo { - string data = 1; - - string version = 2; - uint64 app_version = 3; - - int64 last_block_height = 4; - bytes last_block_app_hash = 5; -} - -// nondeterministic -message ResponseSetOption { - uint32 code = 1; - // bytes data = 2; - string log = 3; - string info = 4; -} - -message ResponseInitChain { - ConsensusParams consensus_params = 1; - repeated ValidatorUpdate validators = 2 [ (gogoproto.nullable) = false ]; - bytes app_hash = 3; -} - -message ResponseQuery { - uint32 code = 1; - // bytes data = 2; // use "value" instead. - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 index = 5; - bytes key = 6; - bytes value = 7; - tendermint.crypto.ProofOps proof_ops = 8; - int64 height = 9; - string codespace = 10; -} - -message ResponseBeginBlock { - repeated Event events = 1 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "events,omitempty" - ]; -} - -message ResponseCheckTx { - uint32 code = 1; - bytes data = 2; - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 gas_wanted = 5 [ json_name = "gas_wanted" ]; - int64 gas_used = 6 [ json_name = "gas_used" ]; - repeated Event events = 7 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "events,omitempty" - ]; - string codespace = 8; -} - -message ResponseDeliverTx { - uint32 code = 1; - bytes data = 2; - string log = 3; // nondeterministic - string info = 4; // nondeterministic - int64 gas_wanted = 5 [ json_name = "gas_wanted" ]; - int64 gas_used = 6 [ json_name = "gas_used" ]; - repeated Event events = 7 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "events,omitempty" - ]; // nondeterministic - string codespace = 8; -} - -message ResponseEndBlock { - repeated ValidatorUpdate validator_updates = 1 - [ (gogoproto.nullable) = false ]; - ConsensusParams consensus_param_updates = 2; - repeated Event events = 3 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "events,omitempty" - ]; -} - -message ResponseCommit { - // reserve 1 - bytes data = 2; - int64 retain_height = 3; -} - -message ResponseListSnapshots { repeated Snapshot snapshots = 1; } - -message ResponseOfferSnapshot { - Result result = 1; - - enum Result { - UNKNOWN = 0; // Unknown result, abort all snapshot restoration - ACCEPT = 1; // Snapshot accepted, apply chunks - ABORT = 2; // Abort all snapshot restoration - REJECT = 3; // Reject this specific snapshot, try others - REJECT_FORMAT = 4; // Reject all snapshots of this format, try others - REJECT_SENDER = 5; // Reject all snapshots from the sender(s), try others - } -} - -message ResponseLoadSnapshotChunk { bytes chunk = 1; } - -message ResponseApplySnapshotChunk { - Result result = 1; - repeated uint32 refetch_chunks = 2; // Chunks to refetch and reapply - repeated string reject_senders = 3; // Chunk senders to reject and ban - - enum Result { - UNKNOWN = 0; // Unknown result, abort all snapshot restoration - ACCEPT = 1; // Chunk successfully accepted - ABORT = 2; // Abort all snapshot restoration - RETRY = 3; // Retry chunk (combine with refetch and reject) - RETRY_SNAPSHOT = 4; // Retry snapshot (combine with refetch and reject) - REJECT_SNAPSHOT = 5; // Reject this snapshot, try others - } -} - -//---------------------------------------- -// Misc. - -// ConsensusParams contains all consensus-relevant parameters -// that can be adjusted by the abci app -message ConsensusParams { - BlockParams block = 1; - tendermint.types.EvidenceParams evidence = 2; - tendermint.types.ValidatorParams validator = 3; - tendermint.types.VersionParams version = 4; -} - -// BlockParams contains limits on the block size. -message BlockParams { - // Note: must be greater than 0 - int64 max_bytes = 1; - // Note: must be greater or equal to -1 - int64 max_gas = 2; -} - -message LastCommitInfo { - int32 round = 1; - repeated VoteInfo votes = 2 [ (gogoproto.nullable) = false ]; -} - -// Event allows application developers to attach additional information to -// ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and ResponseDeliverTx. -// Later, transactions may be queried using these events. -message Event { - string type = 1; - repeated EventAttribute attributes = 2 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "attributes,omitempty" - ]; -} - -// EventAttribute is a single key-value pair, associated with an event. -message EventAttribute { - bytes key = 1; - bytes value = 2; - bool index = 3; // nondeterministic -} - -// TxResult contains results of executing the transaction. -// -// One usage is indexing transaction results. -message TxResult { - int64 height = 1; - uint32 index = 2; - bytes tx = 3; - ResponseDeliverTx result = 4 [ (gogoproto.nullable) = false ]; -} - -//---------------------------------------- -// Blockchain Types - -// Validator -message Validator { - bytes address = 1; // The first 20 bytes of SHA256(public key) - // PubKey pub_key = 2 [(gogoproto.nullable)=false]; - int64 power = 3; // The voting power -} - -// ValidatorUpdate -message ValidatorUpdate { - tendermint.crypto.PublicKey pub_key = 1 [ (gogoproto.nullable) = false ]; - int64 power = 2; -} - -// VoteInfo -message VoteInfo { - Validator validator = 1 [ (gogoproto.nullable) = false ]; - bool signed_last_block = 2; -} - -enum EvidenceType { - UNKNOWN = 0; - DUPLICATE_VOTE = 1; - LIGHT_CLIENT_ATTACK = 2; -} - -message Evidence { - EvidenceType type = 1; - // The offending validator - Validator validator = 2 [ (gogoproto.nullable) = false ]; - // The height when the offense occurred - int64 height = 3; - // The corresponding time where the offense occurred - google.protobuf.Timestamp time = 4 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - // Total voting power of the validator set in case the ABCI application does - // not store historical validators. - // https://github.com/tendermint/tendermint/issues/4581 - int64 total_voting_power = 5; -} - -//---------------------------------------- -// State Sync Types - -message Snapshot { - uint64 height = 1; // The height at which the snapshot was taken - uint32 format = 2; // The application-specific snapshot format - uint32 chunks = 3; // Number of chunks in the snapshot - bytes hash = 4; // Arbitrary snapshot hash, equal only if identical - bytes metadata = 5; // Arbitrary application metadata -} - -//---------------------------------------- -// Service Definition - -service ABCIApplication { - rpc Echo(RequestEcho) returns (ResponseEcho); - rpc Flush(RequestFlush) returns (ResponseFlush); - rpc Info(RequestInfo) returns (ResponseInfo); - rpc SetOption(RequestSetOption) returns (ResponseSetOption); - rpc DeliverTx(RequestDeliverTx) returns (ResponseDeliverTx); - rpc CheckTx(RequestCheckTx) returns (ResponseCheckTx); - rpc Query(RequestQuery) returns (ResponseQuery); - rpc Commit(RequestCommit) returns (ResponseCommit); - rpc InitChain(RequestInitChain) returns (ResponseInitChain); - rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); - rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); - rpc ListSnapshots(RequestListSnapshots) returns (ResponseListSnapshots); - rpc OfferSnapshot(RequestOfferSnapshot) returns (ResponseOfferSnapshot); - rpc LoadSnapshotChunk(RequestLoadSnapshotChunk) - returns (ResponseLoadSnapshotChunk); - rpc ApplySnapshotChunk(RequestApplySnapshotChunk) - returns (ResponseApplySnapshotChunk); -} diff --git a/third_party/proto/tendermint/crypto/keys.proto b/third_party/proto/tendermint/crypto/keys.proto deleted file mode 100644 index 8b1b22509..000000000 --- a/third_party/proto/tendermint/crypto/keys.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; -package tendermint.crypto; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/crypto"; - -import "gogoproto/gogo.proto"; - -// PublicKey defines the keys available for use with Tendermint Validators -message PublicKey { - option (gogoproto.compare) = true; - option (gogoproto.equal) = true; - - oneof sum { - bytes ed25519 = 1; - bytes secp256k1 = 2; - } -} diff --git a/third_party/proto/tendermint/crypto/proof.proto b/third_party/proto/tendermint/crypto/proof.proto deleted file mode 100644 index 58657a785..000000000 --- a/third_party/proto/tendermint/crypto/proof.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; -package tendermint.crypto; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/crypto"; - -import "gogoproto/gogo.proto"; - -message Proof { - int64 total = 1; - int64 index = 2; - bytes leaf_hash = 3; - repeated bytes aunts = 4; -} - -message ValueOp { - // Encoded in ProofOp.Key. - bytes key = 1; - - // To encode in ProofOp.Data - Proof proof = 2; -} - -message DominoOp { - string key = 1; - string input = 2; - string output = 3; -} - -// ProofOp defines an operation used for calculating Merkle root -// The data could be arbitrary format, providing nessecary data -// for example neighbouring node hash -message ProofOp { - string type = 1; - bytes key = 2; - bytes data = 3; -} - -// ProofOps is Merkle proof defined by the list of ProofOps -message ProofOps { repeated ProofOp ops = 1 [ (gogoproto.nullable) = false ]; } diff --git a/third_party/proto/tendermint/libs/bits/types.proto b/third_party/proto/tendermint/libs/bits/types.proto deleted file mode 100644 index 4cae6efde..000000000 --- a/third_party/proto/tendermint/libs/bits/types.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; -package tendermint.libs.bits; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/libs/bits"; - -message BitArray { - int64 bits = 1; - repeated uint64 elems = 2; -} diff --git a/third_party/proto/tendermint/p2p/types.proto b/third_party/proto/tendermint/p2p/types.proto deleted file mode 100644 index 965238848..000000000 --- a/third_party/proto/tendermint/p2p/types.proto +++ /dev/null @@ -1,34 +0,0 @@ -syntax = "proto3"; -package tendermint.p2p; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/p2p"; - -import "gogoproto/gogo.proto"; - -message NetAddress { - string id = 1 [ (gogoproto.customname) = "ID" ]; - string ip = 2 [ (gogoproto.customname) = "IP" ]; - uint32 port = 3; -} - -message ProtocolVersion { - uint64 p2p = 1 [ (gogoproto.customname) = "P2P" ]; - uint64 block = 2; - uint64 app = 3; -} - -message DefaultNodeInfo { - ProtocolVersion protocol_version = 1 [ (gogoproto.nullable) = false ]; - string default_node_id = 2 [ (gogoproto.customname) = "DefaultNodeID" ]; - string listen_addr = 3; - string network = 4; - string version = 5; - bytes channels = 6; - string moniker = 7; - DefaultNodeInfoOther other = 8 [ (gogoproto.nullable) = false ]; -} - -message DefaultNodeInfoOther { - string tx_index = 1; - string rpc_address = 2 [ (gogoproto.customname) = "RPCAddress" ]; -} diff --git a/third_party/proto/tendermint/types/block.proto b/third_party/proto/tendermint/types/block.proto deleted file mode 100644 index 8f769eb22..000000000 --- a/third_party/proto/tendermint/types/block.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "tendermint/types/types.proto"; -import "tendermint/types/evidence.proto"; - -message Block { - Header header = 1 [ (gogoproto.nullable) = false ]; - Data data = 2 [ (gogoproto.nullable) = false ]; - tendermint.types.EvidenceList evidence = 3 [ (gogoproto.nullable) = false ]; - Commit last_commit = 4; -} diff --git a/third_party/proto/tendermint/types/evidence.proto b/third_party/proto/tendermint/types/evidence.proto deleted file mode 100644 index b96e8c918..000000000 --- a/third_party/proto/tendermint/types/evidence.proto +++ /dev/null @@ -1,42 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; -import "tendermint/types/types.proto"; -import "tendermint/types/validator.proto"; - -message Evidence { - oneof sum { - DuplicateVoteEvidence duplicate_vote_evidence = 1; - LightClientAttackEvidence light_client_attack_evidence = 2; - } -} - -// DuplicateVoteEvidence contains evidence of a validator signed two conflicting -// votes. -message DuplicateVoteEvidence { - tendermint.types.Vote vote_a = 1; - tendermint.types.Vote vote_b = 2; - int64 total_voting_power = 3; - int64 validator_power = 4; - google.protobuf.Timestamp timestamp = 5 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; -} - -// LightClientAttackEvidence contains evidence of a set of validators attempting -// to mislead a light client. -message LightClientAttackEvidence { - tendermint.types.LightBlock conflicting_block = 1; - int64 common_height = 2; - repeated tendermint.types.Validator byzantine_validators = 3; - int64 total_voting_power = 4; - google.protobuf.Timestamp timestamp = 5 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; -} - -message EvidenceList { - repeated Evidence evidence = 1 [ (gogoproto.nullable) = false ]; -} diff --git a/third_party/proto/tendermint/types/params.proto b/third_party/proto/tendermint/types/params.proto deleted file mode 100644 index 38ab12fa6..000000000 --- a/third_party/proto/tendermint/types/params.proto +++ /dev/null @@ -1,80 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/duration.proto"; - -option (gogoproto.equal_all) = true; - -// ConsensusParams contains consensus critical parameters that determine the -// validity of blocks. -message ConsensusParams { - BlockParams block = 1 [ (gogoproto.nullable) = false ]; - EvidenceParams evidence = 2 [ (gogoproto.nullable) = false ]; - ValidatorParams validator = 3 [ (gogoproto.nullable) = false ]; - VersionParams version = 4 [ (gogoproto.nullable) = false ]; -} - -// BlockParams contains limits on the block size. -message BlockParams { - // Max block size, in bytes. - // Note: must be greater than 0 - int64 max_bytes = 1; - // Max gas per block. - // Note: must be greater or equal to -1 - int64 max_gas = 2; - // Minimum time increment between consecutive blocks (in milliseconds) If the - // block header timestamp is ahead of the system clock, decrease this value. - // - // Not exposed to the application. - int64 time_iota_ms = 3; -} - -// EvidenceParams determine how we handle evidence of malfeasance. -message EvidenceParams { - // Max age of evidence, in blocks. - // - // The basic formula for calculating this is: MaxAgeDuration / {average block - // time}. - int64 max_age_num_blocks = 1; - - // Max age of evidence, in time. - // - // It should correspond with an app's "unbonding period" or other similar - // mechanism for handling [Nothing-At-Stake - // attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - google.protobuf.Duration max_age_duration = 2 - [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; - - // This sets the maximum size of total evidence in bytes that can be committed - // in a single block. and should fall comfortably under the max block bytes. - // Default is 1048576 or 1MB - int64 max_bytes = 3; -} - -// ValidatorParams restrict the public key types validators can use. -// NOTE: uses ABCI pubkey naming, not Amino names. -message ValidatorParams { - option (gogoproto.populate) = true; - option (gogoproto.equal) = true; - - repeated string pub_key_types = 1; -} - -// VersionParams contains the ABCI application version. -message VersionParams { - option (gogoproto.populate) = true; - option (gogoproto.equal) = true; - - uint64 app_version = 1; -} - -// HashedParams is a subset of ConsensusParams. -// -// It is hashed into the Header.ConsensusHash. -message HashedParams { - int64 block_max_bytes = 1; - int64 block_max_gas = 2; -} diff --git a/third_party/proto/tendermint/types/types.proto b/third_party/proto/tendermint/types/types.proto deleted file mode 100644 index f681bc4c4..000000000 --- a/third_party/proto/tendermint/types/types.proto +++ /dev/null @@ -1,173 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; -import "tendermint/crypto/proof.proto"; -import "tendermint/version/types.proto"; -import "tendermint/types/validator.proto"; - -// BlockIdFlag indicates which BlcokID the signature is for -enum BlockIDFlag { - option (gogoproto.goproto_enum_stringer) = true; - option (gogoproto.goproto_enum_prefix) = false; - - BLOCK_ID_FLAG_UNKNOWN = 0 - [ (gogoproto.enumvalue_customname) = "BlockIDFlagUnknown" ]; - BLOCK_ID_FLAG_ABSENT = 1 - [ (gogoproto.enumvalue_customname) = "BlockIDFlagAbsent" ]; - BLOCK_ID_FLAG_COMMIT = 2 - [ (gogoproto.enumvalue_customname) = "BlockIDFlagCommit" ]; - BLOCK_ID_FLAG_NIL = 3 [ (gogoproto.enumvalue_customname) = "BlockIDFlagNil" ]; -} - -// SignedMsgType is a type of signed message in the consensus. -enum SignedMsgType { - option (gogoproto.goproto_enum_stringer) = true; - option (gogoproto.goproto_enum_prefix) = false; - - SIGNED_MSG_TYPE_UNKNOWN = 0 - [ (gogoproto.enumvalue_customname) = "UnknownType" ]; - // Votes - SIGNED_MSG_TYPE_PREVOTE = 1 - [ (gogoproto.enumvalue_customname) = "PrevoteType" ]; - SIGNED_MSG_TYPE_PRECOMMIT = 2 - [ (gogoproto.enumvalue_customname) = "PrecommitType" ]; - - // Proposals - SIGNED_MSG_TYPE_PROPOSAL = 32 - [ (gogoproto.enumvalue_customname) = "ProposalType" ]; -} - -// PartsetHeader -message PartSetHeader { - uint32 total = 1; - bytes hash = 2; -} - -message Part { - uint32 index = 1; - bytes bytes = 2; - tendermint.crypto.Proof proof = 3 [ (gogoproto.nullable) = false ]; -} - -// BlockID -message BlockID { - bytes hash = 1; - PartSetHeader part_set_header = 2 [ (gogoproto.nullable) = false ]; -} - -// -------------------------------- - -// Header defines the structure of a Tendermint block header. -message Header { - // basic block info - tendermint.version.Consensus version = 1 [ (gogoproto.nullable) = false ]; - string chain_id = 2 [ (gogoproto.customname) = "ChainID" ]; - int64 height = 3; - google.protobuf.Timestamp time = 4 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - - // prev block info - BlockID last_block_id = 5 [ (gogoproto.nullable) = false ]; - - // hashes of block data - bytes last_commit_hash = 6; // commit from validators from the last block - bytes data_hash = 7; // transactions - - // hashes from the app output from the prev block - bytes validators_hash = 8; // validators for the current block - bytes next_validators_hash = 9; // validators for the next block - bytes consensus_hash = 10; // consensus params for current block - bytes app_hash = 11; // state after txs from the previous block - bytes last_results_hash = - 12; // root hash of all results from the txs from the previous block - - // consensus info - bytes evidence_hash = 13; // evidence included in the block - bytes proposer_address = 14; // original proposer of the block -} - -// Data contains the set of transactions included in the block -message Data { - // Txs that will be applied by state @ block.Height+1. - // NOTE: not all txs here are valid. We're just agreeing on the order first. - // This means that block.AppHash does not include these txs. - repeated bytes txs = 1; -} - -// Vote represents a prevote, precommit, or commit vote from validators for -// consensus. -message Vote { - SignedMsgType type = 1; - int64 height = 2; - int32 round = 3; - BlockID block_id = 4 [ - (gogoproto.nullable) = false, - (gogoproto.customname) = "BlockID" - ]; // zero if vote is nil. - google.protobuf.Timestamp timestamp = 5 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - bytes validator_address = 6; - int32 validator_index = 7; - bytes signature = 8; -} - -// Commit contains the evidence that a block was committed by a set of -// validators. -message Commit { - int64 height = 1; - int32 round = 2; - BlockID block_id = 3 - [ (gogoproto.nullable) = false, (gogoproto.customname) = "BlockID" ]; - repeated CommitSig signatures = 4 [ (gogoproto.nullable) = false ]; -} - -// CommitSig is a part of the Vote included in a Commit. -message CommitSig { - BlockIDFlag block_id_flag = 1; - bytes validator_address = 2; - google.protobuf.Timestamp timestamp = 3 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - bytes signature = 4; -} - -message Proposal { - SignedMsgType type = 1; - int64 height = 2; - int32 round = 3; - int32 pol_round = 4; - BlockID block_id = 5 - [ (gogoproto.customname) = "BlockID", (gogoproto.nullable) = false ]; - google.protobuf.Timestamp timestamp = 6 - [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - bytes signature = 7; -} - -message SignedHeader { - Header header = 1; - Commit commit = 2; -} - -message LightBlock { - SignedHeader signed_header = 1; - tendermint.types.ValidatorSet validator_set = 2; -} - -message BlockMeta { - BlockID block_id = 1 - [ (gogoproto.customname) = "BlockID", (gogoproto.nullable) = false ]; - int64 block_size = 2; - Header header = 3 [ (gogoproto.nullable) = false ]; - int64 num_txs = 4; -} - -// TxProof represents a Merkle proof of the presence of a transaction in the -// Merkle tree. -message TxProof { - bytes root_hash = 1; - bytes data = 2; - tendermint.crypto.Proof proof = 3; -} diff --git a/third_party/proto/tendermint/types/validator.proto b/third_party/proto/tendermint/types/validator.proto deleted file mode 100644 index 5e6dc8bae..000000000 --- a/third_party/proto/tendermint/types/validator.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "tendermint/crypto/keys.proto"; - -message ValidatorSet { - repeated Validator validators = 1; - Validator proposer = 2; - int64 total_voting_power = 3; -} - -message Validator { - bytes address = 1; - tendermint.crypto.PublicKey pub_key = 2 [ (gogoproto.nullable) = false ]; - int64 voting_power = 3; - int64 proposer_priority = 4; -} - -message SimpleValidator { - tendermint.crypto.PublicKey pub_key = 1; - int64 voting_power = 2; -} diff --git a/third_party/proto/tendermint/version/types.proto b/third_party/proto/tendermint/version/types.proto deleted file mode 100644 index 4b7a52dd0..000000000 --- a/third_party/proto/tendermint/version/types.proto +++ /dev/null @@ -1,24 +0,0 @@ -syntax = "proto3"; -package tendermint.version; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/version"; - -import "gogoproto/gogo.proto"; - -// App includes the protocol and software version for the application. -// This information is included in ResponseInfo. The App.Protocol can be -// updated in ResponseEndBlock. -message App { - uint64 protocol = 1; - string software = 2; -} - -// Consensus captures the consensus rules for processing a block in the -// blockchain, including all blockchain data structures and the rules of the -// application's state transition machine. -message Consensus { - option (gogoproto.equal) = true; - - uint64 block = 1; - uint64 app = 2; -} diff --git a/x/coinswap/types/coinswap.pb.go b/x/coinswap/types/coinswap.pb.go index 005647a2f..4a52c73c7 100644 --- a/x/coinswap/types/coinswap.pb.go +++ b/x/coinswap/types/coinswap.pb.go @@ -4,11 +4,13 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -150,10 +152,10 @@ var xxx_messageInfo_Pool proto.InternalMessageInfo // Params defines token module's parameters type Params struct { - Fee github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=fee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"fee"` + Fee cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=fee,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"fee"` PoolCreationFee types.Coin `protobuf:"bytes,2,opt,name=pool_creation_fee,json=poolCreationFee,proto3" json:"pool_creation_fee"` - TaxRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=tax_rate,json=taxRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"tax_rate"` - MaxStandardCoinPerPool github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=max_standard_coin_per_pool,json=maxStandardCoinPerPool,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"max_standard_coin_per_pool"` + TaxRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=tax_rate,json=taxRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"tax_rate"` + MaxStandardCoinPerPool cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=max_standard_coin_per_pool,json=maxStandardCoinPerPool,proto3,customtype=cosmossdk.io/math.Int" json:"max_standard_coin_per_pool"` MaxSwapAmount github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,6,rep,name=max_swap_amount,json=maxSwapAmount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"max_swap_amount"` } @@ -199,41 +201,43 @@ func init() { func init() { proto.RegisterFile("canto/coinswap/v1/coinswap.proto", fileDescriptor_b57883b6d1fc5094) } var fileDescriptor_b57883b6d1fc5094 = []byte{ - // 536 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x93, 0xc1, 0x6f, 0x12, 0x4f, - 0x14, 0xc7, 0x77, 0x81, 0x52, 0x98, 0x5f, 0x4a, 0xc3, 0xe4, 0x17, 0x83, 0x98, 0x2c, 0x84, 0xa4, - 0x86, 0x0b, 0xbb, 0xd2, 0x1e, 0x4c, 0xbc, 0xb5, 0x34, 0x26, 0xc4, 0x44, 0xc9, 0x9a, 0x68, 0xa2, - 0x87, 0xcd, 0x63, 0x77, 0xc4, 0xb5, 0xec, 0xce, 0x64, 0x66, 0x80, 0xed, 0x7f, 0xe1, 0xd1, 0x63, - 0xcf, 0x9e, 0xfc, 0x33, 0x38, 0xf6, 0x68, 0x3c, 0x54, 0x85, 0x4b, 0xff, 0x0c, 0x33, 0x33, 0x0b, - 0xf6, 0xd4, 0xb4, 0x07, 0x4f, 0xcc, 0x3c, 0xbe, 0xef, 0xfb, 0x99, 0xf7, 0xde, 0x3e, 0xd4, 0x0e, - 0x21, 0x95, 0xd4, 0x0b, 0x69, 0x9c, 0x8a, 0x05, 0x30, 0x6f, 0xde, 0xdf, 0x9e, 0x5d, 0xc6, 0xa9, - 0xa4, 0xb8, 0xae, 0x15, 0xee, 0x36, 0x3a, 0xef, 0x37, 0x9d, 0x90, 0x8a, 0x84, 0x0a, 0x6f, 0x0c, - 0x82, 0x78, 0xf3, 0xfe, 0x98, 0x48, 0x30, 0x69, 0x26, 0xa5, 0xf9, 0xff, 0x84, 0x4e, 0xa8, 0x3e, - 0x7a, 0xea, 0x64, 0xa2, 0x9d, 0x37, 0x68, 0x67, 0x98, 0xb2, 0x99, 0xc4, 0x0d, 0xb4, 0x0b, 0x51, - 0xc4, 0x89, 0x10, 0x0d, 0xbb, 0x6d, 0x77, 0xab, 0xfe, 0xe6, 0x8a, 0x8f, 0x50, 0x49, 0xd9, 0x34, - 0x0a, 0x6d, 0xbb, 0xfb, 0xdf, 0xe1, 0x43, 0xd7, 0x70, 0x5c, 0xc5, 0x71, 0x73, 0x8e, 0x3b, 0xa0, - 0x71, 0x7a, 0x52, 0x5a, 0x5e, 0xb5, 0x2c, 0x5f, 0x8b, 0x3b, 0x6f, 0x51, 0xf9, 0xd5, 0x4c, 0xfe, - 0x03, 0xe3, 0x6f, 0x36, 0x2a, 0x8d, 0x28, 0x9d, 0xe2, 0x1a, 0x2a, 0xc4, 0x51, 0x6e, 0x59, 0x88, - 0x23, 0x7c, 0x80, 0x6a, 0x42, 0x42, 0x1a, 0x01, 0x8f, 0x82, 0x88, 0xa4, 0x34, 0xd1, 0xbe, 0x55, - 0x7f, 0x6f, 0x13, 0x3d, 0x55, 0x41, 0xdc, 0x43, 0x38, 0xa4, 0xb3, 0x54, 0x12, 0xce, 0x80, 0xcb, - 0xf3, 0x5c, 0x5a, 0xd4, 0xd2, 0xfa, 0xcd, 0x7f, 0x8c, 0xfc, 0x00, 0xd5, 0x88, 0x08, 0x39, 0x5d, - 0x04, 0x9b, 0x22, 0x4a, 0xc6, 0xd5, 0x44, 0x8f, 0xf3, 0x52, 0x1e, 0xa1, 0xea, 0x94, 0xc9, 0xdc, - 0x6c, 0x47, 0x2b, 0x2a, 0x53, 0x26, 0xb5, 0x47, 0xe7, 0xba, 0x88, 0xca, 0x23, 0xe0, 0x90, 0x08, - 0xfc, 0x1e, 0x15, 0x3f, 0x10, 0xa2, 0x5f, 0x7d, 0x6b, 0xc5, 0xae, 0xaa, 0xf8, 0xc7, 0x55, 0xeb, - 0xf1, 0x24, 0x96, 0x1f, 0x67, 0x63, 0x37, 0xa4, 0x89, 0x97, 0xcf, 0xd7, 0xfc, 0xf4, 0x44, 0x74, - 0xe6, 0xc9, 0x73, 0x46, 0x84, 0x7b, 0x4a, 0x42, 0x5f, 0xb9, 0xe2, 0x17, 0xa8, 0xce, 0x28, 0x9d, - 0x06, 0x21, 0x27, 0x20, 0x63, 0x9a, 0x06, 0x0a, 0x75, 0xc7, 0xe6, 0xee, 0xab, 0xcc, 0x41, 0x9e, - 0xf8, 0x9c, 0x10, 0x3c, 0x44, 0x15, 0x09, 0x59, 0xc0, 0x41, 0x12, 0xd3, 0x9d, 0x7b, 0xbf, 0x69, - 0x57, 0x42, 0xe6, 0x83, 0x24, 0xf8, 0x13, 0x6a, 0x26, 0x90, 0x05, 0xdb, 0xe9, 0xa8, 0x39, 0x06, - 0x8c, 0xf0, 0x40, 0x31, 0x4d, 0x3f, 0xef, 0x65, 0x3e, 0x4c, 0xa5, 0xff, 0x20, 0x81, 0xec, 0x75, - 0x6e, 0xa8, 0xca, 0x18, 0x11, 0xae, 0xbf, 0x0a, 0x81, 0xf6, 0x35, 0x6b, 0x01, 0x2c, 0x80, 0x44, - 0x8d, 0xb3, 0x51, 0x6e, 0x17, 0x6f, 0xef, 0xc0, 0x13, 0xc5, 0xfe, 0xfa, 0xb3, 0xd5, 0xbd, 0x03, - 0x5b, 0x25, 0x08, 0x7f, 0x4f, 0xd1, 0x17, 0xc0, 0x8e, 0x35, 0xe1, 0x59, 0xe5, 0xcb, 0x45, 0xcb, - 0xba, 0xbe, 0x68, 0xd9, 0x27, 0xa3, 0xe5, 0x6f, 0xc7, 0x5a, 0xae, 0x1c, 0xfb, 0x72, 0xe5, 0xd8, - 0xbf, 0x56, 0x8e, 0xfd, 0x79, 0xed, 0x58, 0x97, 0x6b, 0xc7, 0xfa, 0xbe, 0x76, 0xac, 0x77, 0x87, - 0x37, 0x00, 0x03, 0xb5, 0xc0, 0xbd, 0x97, 0x44, 0x2e, 0x28, 0x3f, 0x33, 0x37, 0x6f, 0xfe, 0xd4, - 0xcb, 0xfe, 0x6e, 0xbd, 0x06, 0x8e, 0xcb, 0x7a, 0x4f, 0x8f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, - 0x9a, 0xfb, 0x4b, 0xfd, 0x14, 0x04, 0x00, 0x00, + // 567 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xcb, 0x6b, 0x13, 0x41, + 0x18, 0xdf, 0x6d, 0xd2, 0x34, 0x19, 0x69, 0x4a, 0x16, 0x95, 0x34, 0xc5, 0x4d, 0x08, 0x14, 0x72, + 0xc9, 0xae, 0x69, 0x0f, 0x82, 0xb7, 0x26, 0x41, 0x28, 0x16, 0x0d, 0x2b, 0x28, 0x7a, 0x70, 0xf9, + 0xb2, 0x3b, 0xa6, 0x4b, 0xb2, 0x3b, 0xcb, 0xcc, 0xe4, 0xf5, 0x5f, 0x78, 0xf4, 0xd8, 0xb3, 0x27, + 0x0f, 0xfe, 0x11, 0x39, 0x16, 0x4f, 0x22, 0x58, 0x35, 0xb9, 0xf8, 0x67, 0xc8, 0x3c, 0x12, 0x0b, + 0x42, 0x11, 0xc1, 0x53, 0x66, 0xbe, 0xf9, 0x3d, 0xbe, 0x47, 0xbe, 0x45, 0xb5, 0x00, 0x12, 0x4e, + 0xdc, 0x80, 0x44, 0x09, 0x9b, 0x42, 0xea, 0x4e, 0x5a, 0x9b, 0xb3, 0x93, 0x52, 0xc2, 0x89, 0x55, + 0x92, 0x08, 0x67, 0x13, 0x9d, 0xb4, 0x2a, 0x76, 0x40, 0x58, 0x4c, 0x98, 0xdb, 0x07, 0x86, 0xdd, + 0x49, 0xab, 0x8f, 0x39, 0x28, 0x9a, 0xa2, 0x54, 0x6e, 0x0f, 0xc8, 0x80, 0xc8, 0xa3, 0x2b, 0x4e, + 0x3a, 0xba, 0xaf, 0x58, 0xbe, 0x7a, 0x50, 0x17, 0xf5, 0x54, 0x7f, 0x8e, 0xb6, 0x4f, 0x93, 0x74, + 0xcc, 0xad, 0x32, 0xda, 0x81, 0x30, 0xa4, 0x98, 0xb1, 0xb2, 0x59, 0x33, 0x1b, 0x05, 0x6f, 0x7d, + 0xb5, 0x8e, 0x51, 0x56, 0x38, 0x94, 0xb7, 0x6a, 0x66, 0xe3, 0xd6, 0xd1, 0xbe, 0xa3, 0xf9, 0x22, + 0x05, 0x47, 0xa7, 0xe0, 0x74, 0x48, 0x94, 0xb4, 0xb3, 0x8b, 0xab, 0xaa, 0xe1, 0x49, 0x70, 0xfd, + 0x05, 0xca, 0x3d, 0x1d, 0xf3, 0xff, 0x20, 0xfc, 0xc1, 0x44, 0xd9, 0x1e, 0x21, 0x23, 0xab, 0x88, + 0xb6, 0xa2, 0x50, 0x4b, 0x6e, 0x45, 0xa1, 0x75, 0x88, 0x8a, 0x8c, 0x43, 0x12, 0x02, 0x0d, 0xfd, + 0x10, 0x27, 0x24, 0x96, 0xba, 0x05, 0x6f, 0x77, 0x1d, 0xed, 0x8a, 0xa0, 0xd5, 0x44, 0x56, 0x40, + 0xc6, 0x09, 0xc7, 0x34, 0x05, 0xca, 0xe7, 0x1a, 0x9a, 0x91, 0xd0, 0xd2, 0xf5, 0x17, 0x05, 0x3f, + 0x44, 0x45, 0xcc, 0x02, 0x4a, 0xa6, 0xfe, 0xba, 0x88, 0xac, 0x52, 0x55, 0xd1, 0x13, 0x5d, 0xca, + 0x01, 0x2a, 0x8c, 0x52, 0xae, 0xc5, 0xb6, 0x25, 0x22, 0x3f, 0x4a, 0xb9, 0xd4, 0xa8, 0x7f, 0xcd, + 0xa0, 0x5c, 0x0f, 0x28, 0xc4, 0xcc, 0x7a, 0x8d, 0x32, 0x6f, 0x30, 0x96, 0x59, 0xdf, 0x58, 0x71, + 0x4b, 0x54, 0xfc, 0xe5, 0xaa, 0x7a, 0xa0, 0x10, 0x2c, 0x1c, 0x3a, 0x11, 0x71, 0x63, 0xe0, 0xe7, + 0xce, 0x19, 0x1e, 0x40, 0x30, 0xef, 0xe2, 0xe0, 0xd3, 0xc7, 0x26, 0xd2, 0x02, 0x5d, 0x1c, 0x78, + 0x42, 0xd8, 0x7a, 0x8c, 0x4a, 0x29, 0x21, 0x23, 0x3f, 0xa0, 0x18, 0x78, 0x44, 0x12, 0x5f, 0xb8, + 0xfd, 0x65, 0x7f, 0xf7, 0x04, 0xb3, 0xa3, 0x89, 0x8f, 0x30, 0xb6, 0xce, 0x50, 0x9e, 0xc3, 0xcc, + 0xa7, 0xc0, 0xb1, 0x6a, 0xd0, 0xbf, 0xa4, 0xb5, 0xc3, 0x61, 0xe6, 0x01, 0xc7, 0xd6, 0x4b, 0x54, + 0x89, 0x61, 0xe6, 0x6f, 0x66, 0x24, 0xa6, 0xe9, 0xa7, 0x98, 0xfa, 0xc2, 0x56, 0x75, 0xb5, 0x7d, + 0x4f, 0xeb, 0xdf, 0xf9, 0x53, 0xff, 0x34, 0xe1, 0xde, 0xdd, 0x18, 0x66, 0xcf, 0x34, 0x5f, 0x24, + 0xde, 0xc3, 0x54, 0xfe, 0x15, 0x18, 0xda, 0x93, 0xd2, 0x53, 0x48, 0x7d, 0x88, 0xc5, 0x0c, 0xcb, + 0xb9, 0x5a, 0xe6, 0xe6, 0x9a, 0xef, 0x0b, 0xab, 0xf7, 0xdf, 0xaa, 0x8d, 0x41, 0xc4, 0xcf, 0xc7, + 0x7d, 0x27, 0x20, 0xb1, 0xde, 0x0c, 0xfd, 0xd3, 0x64, 0xe1, 0xd0, 0xe5, 0xf3, 0x14, 0x33, 0x49, + 0x60, 0xde, 0xae, 0x70, 0x9f, 0x42, 0x7a, 0x22, 0x1d, 0x1e, 0xe6, 0xdf, 0x5d, 0x54, 0x8d, 0x9f, + 0x17, 0x55, 0xb3, 0xdd, 0x5b, 0xfc, 0xb0, 0x8d, 0xc5, 0xd2, 0x36, 0x2f, 0x97, 0xb6, 0xf9, 0x7d, + 0x69, 0x9b, 0x6f, 0x57, 0xb6, 0x71, 0xb9, 0xb2, 0x8d, 0xcf, 0x2b, 0xdb, 0x78, 0x75, 0x74, 0xcd, + 0xa0, 0x23, 0x16, 0xba, 0xf9, 0x04, 0xf3, 0x29, 0xa1, 0x43, 0x75, 0x73, 0x27, 0x0f, 0xdc, 0xd9, + 0xef, 0xaf, 0x80, 0x34, 0xec, 0xe7, 0xe4, 0x72, 0x1e, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xd3, + 0xdf, 0x6b, 0xcb, 0x24, 0x04, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { diff --git a/x/coinswap/types/genesis.pb.go b/x/coinswap/types/genesis.pb.go index c1552b2ba..612c42c9e 100644 --- a/x/coinswap/types/genesis.pb.go +++ b/x/coinswap/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/coinswap/types/query.pb.go b/x/coinswap/types/query.pb.go index 93afc6d7f..b6ae6fc97 100644 --- a/x/coinswap/types/query.pb.go +++ b/x/coinswap/types/query.pb.go @@ -8,9 +8,9 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/coinswap/types/query.pb.gw.go b/x/coinswap/types/query.pb.gw.go index 90fda34f8..02e25fdb8 100644 --- a/x/coinswap/types/query.pb.gw.go +++ b/x/coinswap/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryParamsRequest @@ -142,12 +144,14 @@ func local_request_Query_LiquidityPools_0(ctx context.Context, marshaler runtime // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -155,6 +159,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -168,6 +173,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_LiquidityPool_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -175,6 +182,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_LiquidityPool_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -188,6 +196,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_LiquidityPools_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -195,6 +205,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_LiquidityPools_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/coinswap/types/tx.pb.go b/x/coinswap/types/tx.pb.go index 24ea10fb4..2aa499a87 100644 --- a/x/coinswap/types/tx.pb.go +++ b/x/coinswap/types/tx.pb.go @@ -5,12 +5,13 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -32,11 +33,11 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // MsgAddLiquidity defines a msg for adding liquidity to a reserve pool type MsgAddLiquidity struct { - MaxToken types.Coin `protobuf:"bytes,1,opt,name=max_token,json=maxToken,proto3" json:"max_token" yaml:"max_token"` - ExactStandardAmt github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=exact_standard_amt,json=exactStandardAmt,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"exact_standard_amt" yaml:"exact_standard_amt"` - MinLiquidity github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=min_liquidity,json=minLiquidity,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_liquidity" yaml:"min_liquidity"` - Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` - Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` + MaxToken types.Coin `protobuf:"bytes,1,opt,name=max_token,json=maxToken,proto3" json:"max_token" yaml:"max_token"` + ExactStandardAmt cosmossdk_io_math.Int `protobuf:"bytes,2,opt,name=exact_standard_amt,json=exactStandardAmt,proto3,customtype=cosmossdk.io/math.Int" json:"exact_standard_amt" yaml:"exact_standard_amt"` + MinLiquidity cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=min_liquidity,json=minLiquidity,proto3,customtype=cosmossdk.io/math.Int" json:"min_liquidity" yaml:"min_liquidity"` + Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` } func (m *MsgAddLiquidity) Reset() { *m = MsgAddLiquidity{} } @@ -112,11 +113,11 @@ var xxx_messageInfo_MsgAddLiquidityResponse proto.InternalMessageInfo // MsgRemoveLiquidity defines a msg for removing liquidity from a reserve pool type MsgRemoveLiquidity struct { - WithdrawLiquidity types.Coin `protobuf:"bytes,1,opt,name=withdraw_liquidity,json=withdrawLiquidity,proto3" json:"withdraw_liquidity" yaml:"withdraw_liquidity"` - MinToken github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=min_token,json=minToken,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_token" yaml:"min_token"` - MinStandardAmt github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=min_standard_amt,json=minStandardAmt,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"min_standard_amt" yaml:"min_standard_amt"` - Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` - Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` + WithdrawLiquidity types.Coin `protobuf:"bytes,1,opt,name=withdraw_liquidity,json=withdrawLiquidity,proto3" json:"withdraw_liquidity" yaml:"withdraw_liquidity"` + MinToken cosmossdk_io_math.Int `protobuf:"bytes,2,opt,name=min_token,json=minToken,proto3,customtype=cosmossdk.io/math.Int" json:"min_token" yaml:"min_token"` + MinStandardAmt cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=min_standard_amt,json=minStandardAmt,proto3,customtype=cosmossdk.io/math.Int" json:"min_standard_amt" yaml:"min_standard_amt"` + Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` } func (m *MsgRemoveLiquidity) Reset() { *m = MsgRemoveLiquidity{} } @@ -280,52 +281,53 @@ func init() { func init() { proto.RegisterFile("canto/coinswap/v1/tx.proto", fileDescriptor_003205f46878c077) } var fileDescriptor_003205f46878c077 = []byte{ - // 707 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcb, 0x4e, 0xdb, 0x40, - 0x14, 0x8d, 0x13, 0x40, 0x61, 0x1a, 0x20, 0x18, 0x5a, 0x8c, 0x17, 0x4e, 0x6a, 0xa9, 0x08, 0x55, - 0xc2, 0x16, 0xb4, 0x12, 0x6d, 0x57, 0xc5, 0x48, 0x95, 0x50, 0x9b, 0x82, 0x9c, 0xae, 0xba, 0xc0, - 0x9a, 0xc4, 0x23, 0x33, 0x0a, 0x9e, 0x49, 0x3d, 0x93, 0xd7, 0x37, 0x74, 0xd3, 0x7f, 0xe8, 0xcf, - 0xb0, 0x64, 0xd1, 0x45, 0xd5, 0x45, 0xd4, 0xc2, 0x1f, 0xf0, 0x03, 0xad, 0xc6, 0x9e, 0x38, 0x2f, - 0x5a, 0x48, 0x57, 0x99, 0x99, 0x7b, 0xee, 0xeb, 0x9c, 0x7b, 0x63, 0xa0, 0xd7, 0x21, 0xe1, 0xd4, - 0xae, 0x53, 0x4c, 0x58, 0x07, 0x36, 0xed, 0xf6, 0xae, 0xcd, 0xbb, 0x56, 0x33, 0xa2, 0x9c, 0xaa, - 0xab, 0xb1, 0xcd, 0x1a, 0xd8, 0xac, 0xf6, 0xae, 0x5e, 0x9e, 0x86, 0xa7, 0xe6, 0xd8, 0x49, 0x37, - 0xea, 0x94, 0x85, 0x94, 0xd9, 0x35, 0xc8, 0x90, 0xdd, 0xde, 0xad, 0x21, 0x0e, 0x13, 0x8c, 0xb4, - 0xaf, 0x07, 0x34, 0xa0, 0xf1, 0xd1, 0x16, 0xa7, 0xe4, 0xd5, 0xfc, 0x9d, 0x05, 0x2b, 0x15, 0x16, - 0x1c, 0xf8, 0xfe, 0x3b, 0xfc, 0xa9, 0x85, 0x7d, 0xcc, 0x7b, 0xea, 0x09, 0x58, 0x0c, 0x61, 0xd7, - 0xe3, 0xb4, 0x81, 0x88, 0xa6, 0x94, 0x95, 0xed, 0x07, 0x7b, 0x9b, 0x56, 0x12, 0xdd, 0x12, 0xd1, - 0x2d, 0x19, 0xdd, 0x3a, 0xa4, 0x98, 0x38, 0xda, 0x45, 0xbf, 0x94, 0xb9, 0xe9, 0x97, 0x8a, 0x3d, - 0x18, 0x9e, 0xbf, 0x32, 0x53, 0x4f, 0xd3, 0xcd, 0x87, 0xb0, 0xfb, 0x41, 0x1c, 0xd5, 0x1e, 0x50, - 0x51, 0x17, 0xd6, 0xb9, 0xc7, 0x38, 0x24, 0x3e, 0x8c, 0x7c, 0x0f, 0x86, 0x5c, 0xcb, 0x96, 0x95, - 0xed, 0x45, 0xe7, 0xad, 0xf0, 0xff, 0xd1, 0x2f, 0x6d, 0x05, 0x98, 0x9f, 0xb5, 0x6a, 0x56, 0x9d, - 0x86, 0xb6, 0x6c, 0x25, 0xf9, 0xd9, 0x61, 0x7e, 0xc3, 0xe6, 0xbd, 0x26, 0x62, 0xd6, 0x11, 0xe1, - 0x37, 0xfd, 0xd2, 0x66, 0x92, 0x69, 0x3a, 0xa2, 0xe9, 0x16, 0xe3, 0xc7, 0xaa, 0x7c, 0x3b, 0x08, - 0xb9, 0xda, 0x00, 0x4b, 0x21, 0x26, 0xde, 0xf9, 0xa0, 0x3b, 0x2d, 0x17, 0x67, 0x7d, 0x33, 0x73, - 0xd6, 0x75, 0xd9, 0xdf, 0x68, 0x30, 0xd3, 0x2d, 0x84, 0x98, 0x0c, 0x99, 0xd3, 0x41, 0xde, 0x47, - 0xd0, 0x3f, 0xc7, 0x04, 0x69, 0x73, 0x65, 0x65, 0x3b, 0xe7, 0xa6, 0x77, 0xf5, 0x11, 0x58, 0x60, - 0x88, 0xf8, 0x28, 0xd2, 0xe6, 0x45, 0x05, 0xae, 0xbc, 0x99, 0x55, 0xb0, 0x31, 0x21, 0x80, 0x8b, - 0x58, 0x93, 0x12, 0x86, 0xd4, 0x17, 0x00, 0x84, 0x98, 0xf0, 0x7b, 0x2a, 0xe1, 0x2e, 0x0a, 0x70, - 0x4c, 0xb8, 0xf9, 0x39, 0x07, 0xd4, 0x0a, 0x0b, 0x5c, 0x14, 0xd2, 0x36, 0x1a, 0xd6, 0xd7, 0x00, - 0x6a, 0x07, 0xf3, 0x33, 0x3f, 0x82, 0x9d, 0x11, 0x46, 0xee, 0x94, 0xf8, 0xb1, 0x94, 0x58, 0x12, - 0x3f, 0x1d, 0xc2, 0x74, 0x57, 0x07, 0x8f, 0xc3, 0x64, 0x1e, 0x10, 0x05, 0xc9, 0xe2, 0x13, 0xad, - 0x9d, 0x99, 0x59, 0x2f, 0x0e, 0x59, 0x4f, 0xa7, 0x0a, 0x93, 0x64, 0xaa, 0x18, 0x28, 0x8a, 0xf7, - 0xb1, 0x99, 0x4a, 0xd4, 0x3d, 0x9a, 0x39, 0xcf, 0xc6, 0x30, 0xcf, 0xf8, 0x44, 0x2d, 0x87, 0x98, - 0x8c, 0xce, 0xd3, 0xff, 0x48, 0x7c, 0x0a, 0xf4, 0x69, 0x31, 0x52, 0x95, 0x5f, 0x83, 0xe5, 0x94, - 0xd1, 0x78, 0xa7, 0x35, 0xa5, 0x9c, 0xfb, 0xb7, 0xd2, 0x4b, 0x03, 0x07, 0x71, 0x63, 0xe6, 0x37, - 0x05, 0x14, 0x2a, 0x2c, 0xa8, 0x76, 0x60, 0xf3, 0x38, 0xf2, 0x51, 0xa4, 0x3e, 0x07, 0xf3, 0x98, - 0x34, 0x5b, 0x5c, 0x4a, 0xab, 0x59, 0x53, 0x7f, 0x28, 0xd6, 0x91, 0xb0, 0x3b, 0x73, 0x82, 0x28, - 0x37, 0x01, 0xab, 0xfb, 0x60, 0x81, 0xb6, 0xb8, 0x70, 0xcb, 0x0e, 0x26, 0x62, 0xca, 0xed, 0x38, - 0x06, 0x48, 0x3f, 0x09, 0x1f, 0xe3, 0x24, 0x37, 0xc1, 0xc9, 0x4b, 0x50, 0xc0, 0xcc, 0xab, 0xb5, - 0x7a, 0x1e, 0x15, 0xa5, 0xc5, 0x9c, 0xe5, 0x9d, 0x8d, 0x9b, 0x7e, 0x69, 0x2d, 0xa1, 0x7c, 0xd4, - 0x6a, 0xba, 0x00, 0x33, 0xa7, 0xd5, 0x8b, 0xbb, 0x30, 0x1f, 0x82, 0x35, 0xd9, 0x55, 0xdc, 0xb4, - 0xe4, 0x6b, 0xef, 0x6b, 0x16, 0xe4, 0x2a, 0x2c, 0x50, 0x4f, 0x41, 0x61, 0xec, 0x6f, 0xcb, 0xbc, - 0xa5, 0xdc, 0x89, 0xcd, 0xd2, 0x9f, 0xde, 0x8d, 0x49, 0x75, 0x09, 0xc0, 0xca, 0xe4, 0xfe, 0x3c, - 0xb9, 0xdd, 0x7d, 0x02, 0xa6, 0xef, 0xdc, 0x0b, 0x96, 0x26, 0xaa, 0x82, 0xfc, 0xa0, 0x49, 0xb5, - 0x74, 0xbb, 0x6b, 0x2a, 0xad, 0xbe, 0xf5, 0x77, 0xc0, 0x28, 0x4b, 0xce, 0xc9, 0xc5, 0x2f, 0x23, - 0x73, 0x71, 0x65, 0x28, 0x97, 0x57, 0x86, 0xf2, 0xf3, 0xca, 0x50, 0xbe, 0x5c, 0x1b, 0x99, 0xcb, - 0x6b, 0x23, 0xf3, 0xfd, 0xda, 0xc8, 0x7c, 0xdc, 0x1b, 0x59, 0x8c, 0x43, 0x11, 0x6f, 0xe7, 0x3d, - 0xe2, 0x1d, 0x1a, 0x35, 0x92, 0x9b, 0xdd, 0xde, 0xb7, 0xbb, 0xc3, 0x8f, 0x4d, 0xbc, 0x28, 0xb5, - 0x85, 0xf8, 0x8b, 0xf1, 0xec, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x48, 0x66, 0xf8, 0x54, 0xba, - 0x06, 0x00, 0x00, + // 730 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcd, 0x4e, 0xdb, 0x4a, + 0x18, 0x8d, 0x13, 0x40, 0x61, 0x6e, 0x80, 0x60, 0xe0, 0x62, 0xbc, 0x70, 0x72, 0x2d, 0xdd, 0x2b, + 0x74, 0x25, 0x6c, 0x41, 0x2b, 0xd1, 0x76, 0xd3, 0x12, 0xa4, 0xaa, 0x48, 0x4d, 0x41, 0x4e, 0x57, + 0x55, 0x45, 0x34, 0x89, 0x47, 0xce, 0x28, 0x78, 0x26, 0xcd, 0x4c, 0xfe, 0x1e, 0xa0, 0xfb, 0xbe, + 0x43, 0x5f, 0xa1, 0x0f, 0xc1, 0x12, 0x55, 0x5d, 0x54, 0x5d, 0x44, 0x2d, 0xbc, 0x01, 0xbb, 0xee, + 0xaa, 0xf1, 0x4c, 0x9c, 0xe0, 0x50, 0x82, 0xba, 0xf3, 0xf8, 0x3b, 0x67, 0xce, 0x7c, 0xe7, 0x7c, + 0x63, 0x03, 0xb3, 0x0e, 0x09, 0xa7, 0x6e, 0x9d, 0x62, 0xc2, 0x7a, 0xb0, 0xe5, 0x76, 0x77, 0x5d, + 0xde, 0x77, 0x5a, 0x6d, 0xca, 0xa9, 0xbe, 0x1a, 0xd5, 0x9c, 0x51, 0xcd, 0xe9, 0xee, 0x9a, 0xc5, + 0x69, 0x78, 0x5c, 0x8e, 0x48, 0xa6, 0x55, 0xa7, 0x2c, 0xa4, 0xcc, 0xad, 0x41, 0x86, 0xdc, 0xee, + 0x6e, 0x0d, 0x71, 0x28, 0x31, 0xaa, 0xbe, 0x1e, 0xd0, 0x80, 0x46, 0x8f, 0xae, 0x78, 0x52, 0x6f, + 0xb7, 0x24, 0xab, 0x2a, 0x0b, 0x72, 0x21, 0x4b, 0xf6, 0xcf, 0x34, 0x58, 0x29, 0xb3, 0xe0, 0xc0, + 0xf7, 0x5f, 0xe2, 0x77, 0x1d, 0xec, 0x63, 0x3e, 0xd0, 0x4f, 0xc0, 0x62, 0x08, 0xfb, 0x55, 0x4e, + 0x9b, 0x88, 0x18, 0x5a, 0x51, 0xdb, 0xfe, 0x6b, 0x6f, 0xcb, 0x51, 0x2c, 0x21, 0xec, 0x28, 0x61, + 0xe7, 0x90, 0x62, 0x52, 0x32, 0xce, 0x87, 0x85, 0xd4, 0xf5, 0xb0, 0x90, 0x1f, 0xc0, 0xf0, 0xec, + 0x89, 0x1d, 0x33, 0x6d, 0x2f, 0x1b, 0xc2, 0xfe, 0x6b, 0xf1, 0xa8, 0x77, 0x81, 0x8e, 0xfa, 0xb0, + 0xce, 0xab, 0x8c, 0x43, 0xe2, 0xc3, 0xb6, 0x5f, 0x85, 0x21, 0x37, 0xd2, 0x45, 0x6d, 0x7b, 0xb1, + 0xf4, 0x42, 0xf0, 0xbf, 0x0d, 0x0b, 0x1b, 0x52, 0x81, 0xf9, 0x4d, 0x07, 0x53, 0x37, 0x84, 0xbc, + 0xe1, 0x1c, 0x11, 0x7e, 0x3d, 0x2c, 0x6c, 0xc9, 0x8d, 0xa7, 0x37, 0xb0, 0x3f, 0x7f, 0xda, 0x01, + 0xea, 0x5c, 0x47, 0x84, 0x7b, 0xf9, 0x08, 0x52, 0x51, 0x88, 0x83, 0x90, 0xeb, 0x0d, 0xb0, 0x14, + 0x62, 0x52, 0x3d, 0x1b, 0xb5, 0x66, 0x64, 0x22, 0xc9, 0xc3, 0x59, 0x92, 0xeb, 0xaa, 0x97, 0x49, + 0x6e, 0x52, 0x2d, 0x17, 0x62, 0x32, 0xf6, 0xcc, 0x04, 0x59, 0x1f, 0x41, 0xff, 0x0c, 0x13, 0x64, + 0xcc, 0x15, 0xb5, 0xed, 0x8c, 0x17, 0xaf, 0xf5, 0xbf, 0xc1, 0x02, 0x43, 0xc4, 0x47, 0x6d, 0x63, + 0x5e, 0xc8, 0x7b, 0x6a, 0x65, 0x57, 0xc0, 0x66, 0xc2, 0x7a, 0x0f, 0xb1, 0x16, 0x25, 0x0c, 0xe9, + 0x8f, 0x00, 0x08, 0x31, 0xe1, 0xf7, 0xcc, 0xc0, 0x5b, 0x14, 0xe0, 0xc8, 0x6a, 0xfb, 0x7d, 0x06, + 0xe8, 0x65, 0x16, 0x78, 0x28, 0xa4, 0x5d, 0x34, 0x3e, 0x5f, 0x13, 0xe8, 0x3d, 0xcc, 0x1b, 0x7e, + 0x1b, 0xf6, 0x26, 0xec, 0x98, 0x19, 0xee, 0x3f, 0x2a, 0x5c, 0x95, 0xc1, 0xf4, 0x16, 0xb6, 0xb7, + 0x3a, 0x7a, 0x39, 0x16, 0x7b, 0x0b, 0xc4, 0x81, 0xd4, 0xe1, 0x65, 0xca, 0x4f, 0x67, 0x59, 0x9e, + 0x1f, 0x5b, 0x2e, 0xc7, 0x27, 0x61, 0x77, 0x36, 0xc4, 0x44, 0x0e, 0x53, 0x0b, 0xe4, 0x05, 0xea, + 0xc6, 0x28, 0xc9, 0x5c, 0x9f, 0xcf, 0x12, 0xd9, 0x1c, 0x8b, 0xdc, 0x35, 0x48, 0xcb, 0x21, 0x26, + 0x93, 0x63, 0xf4, 0x27, 0xe1, 0x9e, 0x02, 0x73, 0x3a, 0x86, 0x38, 0xdf, 0x67, 0x60, 0x39, 0xf6, + 0x32, 0xba, 0xe2, 0x86, 0x56, 0xcc, 0xdc, 0x9d, 0xf1, 0xd2, 0x88, 0x20, 0x56, 0xcc, 0xfe, 0xa2, + 0x81, 0x5c, 0x99, 0x05, 0x95, 0x1e, 0x6c, 0x1d, 0xb7, 0x7d, 0xd4, 0xd6, 0x1f, 0x82, 0x79, 0x4c, + 0x5a, 0x1d, 0xae, 0x42, 0x35, 0x9c, 0xa9, 0xef, 0x8b, 0x73, 0x24, 0xea, 0xa5, 0x39, 0xe1, 0x92, + 0x27, 0xc1, 0xfa, 0x3e, 0x58, 0xa0, 0x1d, 0x2e, 0x68, 0xe9, 0xd1, 0x2c, 0x4c, 0xd1, 0x8e, 0x23, + 0x80, 0xe2, 0x29, 0xf8, 0x0d, 0x4f, 0x32, 0x09, 0x4f, 0x1e, 0x83, 0x1c, 0x66, 0xd5, 0x5a, 0x67, + 0x50, 0xa5, 0xe2, 0x68, 0x91, 0x67, 0xd9, 0xd2, 0xe6, 0xf5, 0xb0, 0xb0, 0x26, 0x03, 0x98, 0xac, + 0xda, 0x1e, 0xc0, 0xac, 0xd4, 0x19, 0x44, 0x5d, 0xd8, 0x1b, 0x60, 0x4d, 0x75, 0x15, 0x35, 0xad, + 0xfc, 0xda, 0xfb, 0x98, 0x06, 0x99, 0x32, 0x0b, 0xf4, 0x53, 0x90, 0xbb, 0xf1, 0xa9, 0xb2, 0x6f, + 0x39, 0x6e, 0xe2, 0x4e, 0x99, 0xff, 0xcf, 0xc6, 0xc4, 0xb9, 0x04, 0x60, 0x25, 0x79, 0x73, 0xfe, + 0xbd, 0x9d, 0x9e, 0x80, 0x99, 0x3b, 0xf7, 0x82, 0xc5, 0x42, 0x15, 0x90, 0x1d, 0x35, 0xa9, 0x17, + 0x6e, 0xa7, 0xc6, 0xd1, 0x9a, 0xff, 0xfd, 0x1e, 0x30, 0xe9, 0x52, 0xe9, 0xe4, 0xfc, 0x87, 0x95, + 0x3a, 0xbf, 0xb4, 0xb4, 0x8b, 0x4b, 0x4b, 0xfb, 0x7e, 0x69, 0x69, 0x1f, 0xae, 0xac, 0xd4, 0xc5, + 0x95, 0x95, 0xfa, 0x7a, 0x65, 0xa5, 0xde, 0xec, 0x05, 0x98, 0x37, 0x3a, 0x35, 0xa7, 0x4e, 0x43, + 0xf7, 0x50, 0xec, 0xb7, 0xf3, 0x0a, 0xf1, 0x1e, 0x6d, 0x37, 0xe5, 0xca, 0xed, 0xee, 0xbb, 0xfd, + 0xf1, 0xbf, 0x87, 0x0f, 0x5a, 0x88, 0xd5, 0x16, 0xa2, 0xbf, 0xc4, 0x83, 0x5f, 0x01, 0x00, 0x00, + 0xff, 0xff, 0x59, 0xd2, 0x0d, 0xd6, 0xc9, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/csr/types/csr.pb.go b/x/csr/types/csr.pb.go index 84fa1d55e..a7750f7d3 100644 --- a/x/csr/types/csr.pb.go +++ b/x/csr/types/csr.pb.go @@ -4,10 +4,11 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -33,8 +34,8 @@ type CSR struct { Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` // The total number of transactions for this CSR NFT Txs uint64 `protobuf:"varint,3,opt,name=txs,proto3" json:"txs,omitempty"` - // The cumulative revenue for this CSR NFT -> represented as a sdkmath.Int - Revenue github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=revenue,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"revenue"` + // The cumulative revenue for this CSR NFT -> represented as a sdk.Int + Revenue cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=revenue,proto3,customtype=cosmossdk.io/math.Int" json:"revenue"` } func (m *CSR) Reset() { *m = CSR{} } @@ -98,23 +99,24 @@ func init() { func init() { proto.RegisterFile("canto/csr/v1/csr.proto", fileDescriptor_57c53cea3d443afa) } var fileDescriptor_57c53cea3d443afa = []byte{ - // 248 bytes of a gzipped FileDescriptorProto + // 268 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4b, 0x4e, 0xcc, 0x2b, 0xc9, 0xd7, 0x4f, 0x2e, 0x2e, 0xd2, 0x2f, 0x33, 0x04, 0x51, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x3c, 0x60, 0x71, 0x3d, 0x90, 0x40, 0x99, 0xa1, 0x94, 0x48, 0x7a, 0x7e, 0x7a, 0x3e, 0x58, - 0x42, 0x1f, 0xc4, 0x82, 0xa8, 0x51, 0xea, 0x67, 0xe4, 0x62, 0x76, 0x0e, 0x0e, 0x12, 0x92, 0xe1, - 0xe2, 0x4c, 0xce, 0xcf, 0x2b, 0x29, 0x4a, 0x4c, 0x2e, 0x29, 0x96, 0x60, 0x54, 0x60, 0xd6, 0xe0, - 0x0c, 0x42, 0x08, 0x08, 0xf1, 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x29, 0x30, 0x6a, 0xb0, 0x04, - 0x31, 0x65, 0xa6, 0x08, 0x09, 0x70, 0x31, 0x97, 0x54, 0x14, 0x4b, 0x30, 0x83, 0x05, 0x40, 0x4c, - 0x21, 0x0f, 0x2e, 0xf6, 0xa2, 0xd4, 0xb2, 0xd4, 0xbc, 0xd2, 0x54, 0x09, 0x16, 0x05, 0x46, 0x0d, - 0x4e, 0x27, 0xbd, 0x13, 0xf7, 0xe4, 0x19, 0x6e, 0xdd, 0x93, 0x57, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, - 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x86, 0x52, 0xba, 0xc5, - 0x29, 0xd9, 0xfa, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x7a, 0x9e, 0x79, 0x25, 0x41, 0x30, 0xed, 0x4e, - 0xee, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, - 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x8b, 0x64, 0x94, 0x33, - 0xc8, 0x6b, 0xba, 0x7e, 0xa9, 0x25, 0xe5, 0xf9, 0x45, 0xd9, 0x10, 0x9e, 0x7e, 0x99, 0xb9, 0x7e, - 0x05, 0x38, 0x14, 0xc0, 0xa6, 0x26, 0xb1, 0x81, 0x7d, 0x68, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, - 0x8c, 0xe8, 0x6d, 0x67, 0x1f, 0x01, 0x00, 0x00, + 0x42, 0x1f, 0xc4, 0x82, 0xa8, 0x91, 0x92, 0x4c, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x8e, 0x87, 0x48, + 0x40, 0x38, 0x10, 0x29, 0xa5, 0x1e, 0x46, 0x2e, 0x66, 0xe7, 0xe0, 0x20, 0x21, 0x19, 0x2e, 0xce, + 0xe4, 0xfc, 0xbc, 0x92, 0xa2, 0xc4, 0xe4, 0x92, 0x62, 0x09, 0x46, 0x05, 0x66, 0x0d, 0xce, 0x20, + 0x84, 0x80, 0x10, 0x1f, 0x17, 0x53, 0x66, 0x8a, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x4b, 0x10, 0x53, + 0x66, 0x8a, 0x90, 0x00, 0x17, 0x73, 0x49, 0x45, 0xb1, 0x04, 0x33, 0x58, 0x00, 0xc4, 0x14, 0x72, + 0xe5, 0x62, 0x2f, 0x4a, 0x2d, 0x4b, 0xcd, 0x2b, 0x4d, 0x95, 0x60, 0x51, 0x60, 0xd4, 0xe0, 0x74, + 0xd2, 0x3e, 0x71, 0x4f, 0x9e, 0xe1, 0xd6, 0x3d, 0x79, 0x51, 0x88, 0x75, 0xc5, 0x29, 0xd9, 0x7a, + 0x99, 0xf9, 0xfa, 0xb9, 0x89, 0x25, 0x19, 0x7a, 0x9e, 0x79, 0x25, 0x97, 0xb6, 0xe8, 0x72, 0x41, + 0xdd, 0xe1, 0x99, 0x57, 0x12, 0x04, 0xd3, 0xeb, 0xe4, 0x7e, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, + 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, + 0xc7, 0x72, 0x0c, 0x51, 0xba, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, + 0xce, 0x20, 0x2f, 0xeb, 0xfa, 0xa5, 0x96, 0x94, 0xe7, 0x17, 0x65, 0x43, 0x78, 0xfa, 0x65, 0xe6, + 0xfa, 0x15, 0xe0, 0xd0, 0x29, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0x7b, 0xcf, 0x18, 0x10, + 0x00, 0x00, 0xff, 0xff, 0x98, 0x28, 0x05, 0x78, 0x37, 0x01, 0x00, 0x00, } func (m *CSR) Marshal() (dAtA []byte, err error) { diff --git a/x/csr/types/genesis.pb.go b/x/csr/types/genesis.pb.go index 889dc9aa4..5c91271b8 100644 --- a/x/csr/types/genesis.pb.go +++ b/x/csr/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/csr/types/params.pb.go b/x/csr/types/params.pb.go index d49baf76f..1a4a2247a 100644 --- a/x/csr/types/params.pb.go +++ b/x/csr/types/params.pb.go @@ -4,10 +4,11 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -30,7 +31,7 @@ type Params struct { EnableCsr bool `protobuf:"varint,1,opt,name=enable_csr,json=enableCsr,proto3" json:"enable_csr,omitempty"` // decimal to determine the transaction fee split between network operators // (validators) and CSR - CsrShares github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=csr_shares,json=csrShares,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"csr_shares"` + CsrShares cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=csr_shares,json=csrShares,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"csr_shares"` } func (m *Params) Reset() { *m = Params{} } @@ -80,22 +81,24 @@ func init() { func init() { proto.RegisterFile("canto/csr/v1/params.proto", fileDescriptor_60f3e0cd3160b8d7) } var fileDescriptor_60f3e0cd3160b8d7 = []byte{ - // 239 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0x4e, 0xcc, 0x2b, - 0xc9, 0xd7, 0x4f, 0x2e, 0x2e, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x01, 0x4b, 0xe9, 0x25, 0x17, 0x17, 0xe9, 0x95, 0x19, - 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0xa5, 0x32, 0x2e, - 0xb6, 0x00, 0xb0, 0x1e, 0x21, 0x59, 0x2e, 0xae, 0xd4, 0xbc, 0xc4, 0xa4, 0x9c, 0xd4, 0xf8, 0xe4, - 0xe2, 0x22, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x8e, 0x20, 0x4e, 0x88, 0x88, 0x73, 0x71, 0x91, 0x90, - 0x2f, 0x17, 0x57, 0x72, 0x71, 0x51, 0x7c, 0x71, 0x46, 0x62, 0x51, 0x6a, 0xb1, 0x04, 0x93, 0x02, - 0xa3, 0x06, 0xa7, 0x93, 0xde, 0x89, 0x7b, 0xf2, 0x0c, 0xb7, 0xee, 0xc9, 0xab, 0xa5, 0x67, 0x96, - 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x27, 0xe7, 0x17, 0xe7, 0xe6, 0x17, 0x43, 0x29, - 0xdd, 0xe2, 0x94, 0x6c, 0xfd, 0x92, 0xca, 0x82, 0xd4, 0x62, 0x3d, 0x97, 0xd4, 0xe4, 0x20, 0xce, - 0xe4, 0xe2, 0xa2, 0x60, 0xb0, 0x01, 0x4e, 0xee, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, - 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, - 0xc7, 0x10, 0xa5, 0x8b, 0x64, 0x98, 0x33, 0xc8, 0x03, 0xba, 0x7e, 0xa9, 0x25, 0xe5, 0xf9, 0x45, - 0xd9, 0x10, 0x9e, 0x7e, 0x99, 0xb9, 0x7e, 0x05, 0xd8, 0xbb, 0x60, 0x73, 0x93, 0xd8, 0xc0, 0xfe, - 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xd0, 0x56, 0x45, 0x08, 0x01, 0x00, 0x00, + // 263 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x2c, 0x90, 0xb1, 0x4e, 0xc3, 0x30, + 0x10, 0x86, 0x63, 0x86, 0x8a, 0x58, 0x4c, 0x11, 0x43, 0x5b, 0x84, 0x5b, 0x31, 0x75, 0x89, 0xad, + 0x88, 0x81, 0xbd, 0xad, 0xc4, 0x82, 0x50, 0x55, 0x36, 0x96, 0xc8, 0x39, 0xac, 0xa4, 0x2a, 0xa9, + 0x23, 0x9f, 0x09, 0xe4, 0x2d, 0x78, 0x18, 0x1e, 0xa2, 0x63, 0xc5, 0x84, 0x18, 0x2a, 0x94, 0xbc, + 0x08, 0x8a, 0xdd, 0xcd, 0xbf, 0xbf, 0xd3, 0x77, 0xfa, 0x8f, 0x8e, 0x40, 0xee, 0xac, 0x16, 0x80, + 0x46, 0xd4, 0x89, 0xa8, 0xa4, 0x91, 0x25, 0xf2, 0xca, 0x68, 0xab, 0xa3, 0x0b, 0x87, 0x38, 0xa0, + 0xe1, 0x75, 0x32, 0xbe, 0xcc, 0x75, 0xae, 0x1d, 0x10, 0xfd, 0xcb, 0xcf, 0x8c, 0x47, 0xa0, 0xb1, + 0xd4, 0x98, 0x7a, 0xe0, 0x83, 0x47, 0x37, 0x0d, 0x1d, 0xac, 0x9c, 0x2e, 0xba, 0xa6, 0x54, 0xed, + 0x64, 0xf6, 0xaa, 0x52, 0x40, 0x33, 0x24, 0x53, 0x32, 0x3b, 0x5f, 0x87, 0xfe, 0x67, 0x81, 0x26, + 0x5a, 0x51, 0x0a, 0x68, 0x52, 0x2c, 0xa4, 0x51, 0x38, 0x3c, 0x9b, 0x92, 0x59, 0x38, 0x4f, 0xf6, + 0xc7, 0x49, 0xf0, 0x7b, 0x9c, 0x5c, 0x79, 0x25, 0xbe, 0x6c, 0xf9, 0x46, 0x8b, 0x52, 0xda, 0x82, + 0x3f, 0xa8, 0x5c, 0x42, 0xb3, 0x54, 0xf0, 0xfd, 0x15, 0xd3, 0xd3, 0xc6, 0xa5, 0x82, 0x75, 0x08, + 0x68, 0x9e, 0x9c, 0x63, 0x7e, 0xbf, 0x6f, 0x19, 0x39, 0xb4, 0x8c, 0xfc, 0xb5, 0x8c, 0x7c, 0x76, + 0x2c, 0x38, 0x74, 0x2c, 0xf8, 0xe9, 0x58, 0xf0, 0x1c, 0xe7, 0x1b, 0x5b, 0xbc, 0x65, 0x1c, 0x74, + 0x29, 0x16, 0x7d, 0xbd, 0xf8, 0x51, 0xd9, 0x77, 0x6d, 0xb6, 0x3e, 0x89, 0xfa, 0x4e, 0x7c, 0xb8, + 0x63, 0xd8, 0xa6, 0x52, 0x98, 0x0d, 0x5c, 0x95, 0xdb, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, + 0xa6, 0x44, 0xae, 0x26, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/csr/types/query.pb.go b/x/csr/types/query.pb.go index 91195b607..000e84613 100644 --- a/x/csr/types/query.pb.go +++ b/x/csr/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/csr/types/query.pb.gw.go b/x/csr/types/query.pb.gw.go index 034728ce3..27d2309b9 100644 --- a/x/csr/types/query.pb.gw.go +++ b/x/csr/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryParamsRequest @@ -214,12 +216,14 @@ func local_request_Query_Turnstile_0(ctx context.Context, marshaler runtime.Mars // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -227,6 +231,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -240,6 +245,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CSRs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -247,6 +254,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CSRs_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -260,6 +268,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CSRByNFT_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -267,6 +277,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CSRByNFT_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -280,6 +291,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CSRByContract_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -287,6 +300,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CSRByContract_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -300,6 +314,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_Turnstile_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -307,6 +323,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Turnstile_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 623bad822..50b2f1c1e 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -5,9 +5,9 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" _ "google.golang.org/protobuf/types/known/durationpb" _ "google.golang.org/protobuf/types/known/timestamppb" io "io" @@ -241,7 +241,7 @@ func (m *EpochInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - n1, err1 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CurrentEpochStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CurrentEpochStartTime):]) + n1, err1 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.CurrentEpochStartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CurrentEpochStartTime):]) if err1 != nil { return 0, err1 } @@ -254,7 +254,7 @@ func (m *EpochInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - n2, err2 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.Duration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.Duration):]) + n2, err2 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.Duration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Duration):]) if err2 != nil { return 0, err2 } @@ -262,7 +262,7 @@ func (m *EpochInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(n2)) i-- dAtA[i] = 0x1a - n3, err3 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime):]) + n3, err3 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime):]) if err3 != nil { return 0, err3 } @@ -338,14 +338,14 @@ func (m *EpochInfo) Size() (n int) { if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.StartTime) n += 1 + l + sovGenesis(uint64(l)) - l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.Duration) + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.Duration) n += 1 + l + sovGenesis(uint64(l)) if m.CurrentEpoch != 0 { n += 1 + sovGenesis(uint64(m.CurrentEpoch)) } - l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CurrentEpochStartTime) + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.CurrentEpochStartTime) n += 1 + l + sovGenesis(uint64(l)) if m.EpochCountingStarted { n += 2 @@ -467,7 +467,7 @@ func (m *EpochInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.StartTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -500,7 +500,7 @@ func (m *EpochInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.Duration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.Duration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -552,7 +552,7 @@ func (m *EpochInfo) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CurrentEpochStartTime, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.CurrentEpochStartTime, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index 4da8fe6b0..e68f334ed 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/epochs/types/query.pb.gw.go b/x/epochs/types/query.pb.gw.go index 2ae01ec80..87cf4d479 100644 --- a/x/epochs/types/query.pb.gw.go +++ b/x/epochs/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join var ( filter_Query_EpochInfos_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} @@ -106,12 +108,14 @@ func local_request_Query_CurrentEpoch_0(ctx context.Context, marshaler runtime.M // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_EpochInfos_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -119,6 +123,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_EpochInfos_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -132,6 +137,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CurrentEpoch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -139,6 +146,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CurrentEpoch_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/erc20/client/proposal_handler.go b/x/erc20/client/proposal_handler.go index ab65b4dc7..e3bb26027 100644 --- a/x/erc20/client/proposal_handler.go +++ b/x/erc20/client/proposal_handler.go @@ -4,7 +4,6 @@ import ( govclient "github.com/cosmos/cosmos-sdk/x/gov/client" "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" - "github.com/Canto-Network/Canto/v7/x/erc20/client/rest" ) var ( diff --git a/x/erc20/types/erc20.pb.go b/x/erc20/types/erc20.pb.go index 9c00f45ad..ec159bc90 100644 --- a/x/erc20/types/erc20.pb.go +++ b/x/erc20/types/erc20.pb.go @@ -6,8 +6,8 @@ package types import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/x/bank/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/erc20/types/genesis.pb.go b/x/erc20/types/genesis.pb.go index 4c684ef9e..957d3ed1f 100644 --- a/x/erc20/types/genesis.pb.go +++ b/x/erc20/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/erc20/types/query.pb.go b/x/erc20/types/query.pb.go index 3f2f3dd32..13765373b 100644 --- a/x/erc20/types/query.pb.go +++ b/x/erc20/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/erc20/types/query.pb.gw.go b/x/erc20/types/query.pb.gw.go index bc9fb064c..3b145f562 100644 --- a/x/erc20/types/query.pb.gw.go +++ b/x/erc20/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join var ( filter_Query_TokenPairs_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} @@ -142,12 +144,14 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_TokenPairs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -155,6 +159,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_TokenPairs_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -168,6 +173,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_TokenPair_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -175,6 +182,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_TokenPair_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -188,6 +196,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -195,6 +205,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 7fba23bb9..4b97af497 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -5,12 +5,13 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -139,7 +140,7 @@ type MsgConvertERC20 struct { // ERC20 token contract address registered in a token pair ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` // amount of ERC20 tokens to convert - Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + Amount cosmossdk_io_math.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=cosmossdk.io/math.Int" json:"amount"` // bech32 address to receive native Cosmos coins Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` // sender hex address from the owner of the given ERC20 tokens @@ -247,36 +248,37 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 461 bytes of a gzipped FileDescriptorProto + // 473 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0x31, 0x6f, 0x13, 0x31, - 0x14, 0xce, 0x25, 0x51, 0x44, 0x5d, 0xd4, 0x22, 0x0b, 0xb5, 0xe9, 0x09, 0x5d, 0x42, 0x86, 0x36, - 0x0c, 0xf5, 0x6b, 0xd2, 0x81, 0x99, 0x44, 0x20, 0x75, 0x28, 0xc3, 0x8d, 0x2c, 0x95, 0xe3, 0x58, - 0xc7, 0xa9, 0xc4, 0xef, 0x64, 0xbb, 0x47, 0xbb, 0x30, 0x74, 0x64, 0x42, 0xe2, 0xcf, 0xf0, 0x13, - 0x3a, 0x56, 0x62, 0x41, 0x0c, 0x15, 0x4a, 0xf8, 0x21, 0xe8, 0xec, 0x6b, 0xe8, 0x81, 0x9a, 0x4e, - 0xe7, 0xf7, 0xbe, 0xef, 0x3e, 0x7f, 0xef, 0x7b, 0x26, 0xdb, 0x82, 0x2b, 0x8b, 0x20, 0xb5, 0x18, - 0x1e, 0x40, 0x3e, 0x00, 0x7b, 0xce, 0x32, 0x8d, 0x16, 0xe9, 0x86, 0x03, 0x98, 0x03, 0x58, 0x3e, - 0x08, 0x9f, 0x25, 0x88, 0xc9, 0x07, 0x09, 0x3c, 0x4b, 0x81, 0x2b, 0x85, 0x96, 0xdb, 0x14, 0x95, - 0xf1, 0xec, 0xf0, 0x69, 0x82, 0x09, 0xba, 0x23, 0x14, 0xa7, 0xb2, 0x1b, 0x09, 0x34, 0x33, 0x34, - 0x30, 0xe1, 0x46, 0x42, 0x3e, 0x98, 0x48, 0xcb, 0x07, 0x20, 0x30, 0x55, 0x1e, 0xef, 0x5d, 0x90, - 0x8d, 0x63, 0x93, 0x8c, 0x51, 0xe5, 0x52, 0xdb, 0x31, 0xa6, 0x8a, 0x1e, 0x92, 0x66, 0x81, 0xb7, - 0x83, 0x6e, 0xd0, 0x5f, 0x1f, 0xee, 0x30, 0x2f, 0xc0, 0x0a, 0x01, 0x56, 0x0a, 0xb0, 0x82, 0x38, - 0x6a, 0x5e, 0xdd, 0x74, 0x6a, 0xb1, 0x23, 0xd3, 0x90, 0x3c, 0xd2, 0x52, 0xc8, 0x34, 0x97, 0xba, - 0x5d, 0xef, 0x06, 0xfd, 0xb5, 0x78, 0x59, 0xd3, 0x2d, 0xd2, 0x32, 0x52, 0x4d, 0xa5, 0x6e, 0x37, - 0x1c, 0x52, 0x56, 0xbd, 0x36, 0xd9, 0xaa, 0x5e, 0x1d, 0x4b, 0x93, 0xa1, 0x32, 0xb2, 0xf7, 0x2d, - 0x20, 0x9b, 0x7f, 0xa1, 0xd7, 0xf1, 0x78, 0x78, 0x40, 0x5f, 0x90, 0x27, 0x02, 0x95, 0xd5, 0x5c, - 0xd8, 0x13, 0x3e, 0x9d, 0x6a, 0x69, 0x8c, 0xb3, 0xb8, 0x16, 0x6f, 0xde, 0xf6, 0x5f, 0xf9, 0x36, - 0x7d, 0x43, 0x5a, 0x7c, 0x86, 0x67, 0xca, 0x7a, 0x2b, 0x23, 0x56, 0x18, 0xfd, 0x79, 0xd3, 0xd9, - 0x4d, 0x52, 0xfb, 0xfe, 0x6c, 0xc2, 0x04, 0xce, 0xa0, 0x8c, 0xc5, 0x7f, 0xf6, 0xcd, 0xf4, 0x14, - 0xec, 0x45, 0x26, 0x0d, 0x3b, 0x52, 0x36, 0x2e, 0xff, 0xae, 0x0c, 0xd5, 0xb8, 0x77, 0xa8, 0x66, - 0x65, 0xa8, 0x1d, 0xb2, 0xfd, 0x8f, 0xf3, 0xdb, 0xa9, 0x86, 0x9f, 0xeb, 0xa4, 0x71, 0x6c, 0x12, - 0xfa, 0x89, 0xac, 0xdf, 0xcd, 0x3b, 0x62, 0xd5, 0x35, 0xb3, 0x6a, 0x28, 0xe1, 0xee, 0x6a, 0x7c, - 0x19, 0xda, 0xde, 0xe5, 0xf7, 0xdf, 0x5f, 0xeb, 0xcf, 0x69, 0x07, 0xfe, 0x7b, 0x4f, 0x20, 0x3c, - 0xff, 0xc4, 0xed, 0xea, 0x32, 0x20, 0x8f, 0x2b, 0xd1, 0x76, 0xee, 0xbf, 0xc1, 0x11, 0xc2, 0xbd, - 0x07, 0x08, 0x4b, 0x0f, 0x7d, 0xe7, 0xa1, 0x47, 0xbb, 0x2b, 0x3c, 0xb8, 0xde, 0xe8, 0xe8, 0x6a, - 0x1e, 0x05, 0xd7, 0xf3, 0x28, 0xf8, 0x35, 0x8f, 0x82, 0x2f, 0x8b, 0xa8, 0x76, 0xbd, 0x88, 0x6a, - 0x3f, 0x16, 0x51, 0xed, 0x1d, 0xdc, 0xd9, 0xd2, 0xb8, 0x50, 0xd9, 0x7f, 0x2b, 0xed, 0x47, 0xd4, - 0xa7, 0xbe, 0x82, 0xfc, 0x25, 0x9c, 0x97, 0xc2, 0x6e, 0x65, 0x93, 0x96, 0x7b, 0xc9, 0x87, 0x7f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x62, 0xc7, 0x1c, 0xd9, 0x48, 0x03, 0x00, 0x00, + 0x14, 0xce, 0x25, 0x51, 0x44, 0x5d, 0xd4, 0x22, 0x0b, 0xda, 0xe4, 0x84, 0x2e, 0x21, 0x03, 0x0d, + 0x42, 0xb5, 0x9b, 0x74, 0x60, 0x26, 0x27, 0x86, 0x0c, 0x65, 0xb8, 0x91, 0x25, 0x72, 0x1c, 0xeb, + 0x7a, 0x2a, 0xf1, 0x8b, 0x6c, 0xf7, 0x68, 0x17, 0x86, 0x8e, 0x4c, 0x48, 0xfc, 0x15, 0xf8, 0x0f, + 0x1d, 0x2b, 0x58, 0x10, 0x43, 0x85, 0x12, 0x7e, 0x08, 0x3a, 0xdb, 0x0d, 0x1c, 0xa8, 0xe9, 0xe6, + 0xf7, 0xbe, 0xef, 0x3d, 0x7f, 0xdf, 0x67, 0xa3, 0x5d, 0xce, 0xa4, 0x01, 0x2a, 0x14, 0x1f, 0x1c, + 0xd0, 0xbc, 0x4f, 0xcd, 0x19, 0x99, 0x2b, 0x30, 0x80, 0xb7, 0x2c, 0x40, 0x2c, 0x40, 0xf2, 0x7e, + 0xf8, 0x38, 0x05, 0x48, 0xdf, 0x0a, 0xca, 0xe6, 0x19, 0x65, 0x52, 0x82, 0x61, 0x26, 0x03, 0xa9, + 0x1d, 0x3b, 0x7c, 0x98, 0x42, 0x0a, 0xf6, 0x48, 0x8b, 0x93, 0xef, 0x46, 0x1c, 0xf4, 0x0c, 0x34, + 0x9d, 0x30, 0x2d, 0x68, 0xde, 0x9f, 0x08, 0xc3, 0xfa, 0x94, 0x43, 0x26, 0x3d, 0xde, 0x72, 0xf8, + 0xd8, 0x0d, 0xba, 0xc2, 0x41, 0xdd, 0x73, 0xb4, 0x75, 0xa4, 0xd3, 0x18, 0x64, 0x2e, 0x94, 0x89, + 0x21, 0x93, 0xf8, 0x10, 0xd5, 0x8b, 0xd1, 0x66, 0xd0, 0x09, 0x7a, 0x9b, 0x83, 0x16, 0xf1, 0xf4, + 0x62, 0x37, 0xf1, 0xbb, 0x49, 0x41, 0x1c, 0xd6, 0x2f, 0xaf, 0xdb, 0x95, 0xc4, 0x92, 0x71, 0x88, + 0xee, 0x29, 0xc1, 0x45, 0x96, 0x0b, 0xd5, 0xac, 0x76, 0x82, 0xde, 0x46, 0xb2, 0xaa, 0xf1, 0x0e, + 0x6a, 0x68, 0x21, 0xa7, 0x42, 0x35, 0x6b, 0x16, 0xf1, 0x55, 0xb7, 0x89, 0x76, 0xca, 0x57, 0x27, + 0x42, 0xcf, 0x41, 0x6a, 0xd1, 0xfd, 0x12, 0xa0, 0xed, 0x3f, 0xd0, 0xab, 0x24, 0x1e, 0x1c, 0xe0, + 0x67, 0xe8, 0x01, 0x07, 0x69, 0x14, 0xe3, 0x66, 0xcc, 0xa6, 0x53, 0x25, 0xb4, 0xb6, 0x12, 0x37, + 0x92, 0xed, 0x9b, 0xfe, 0x4b, 0xd7, 0xc6, 0x31, 0x6a, 0xb0, 0x19, 0x9c, 0x4a, 0xe3, 0xa4, 0x0c, + 0x9f, 0x17, 0x42, 0x7f, 0x5c, 0xb7, 0x1f, 0x39, 0x2b, 0x7a, 0x7a, 0x42, 0x32, 0xa0, 0x33, 0x66, + 0x8e, 0xc9, 0x48, 0x9a, 0xaf, 0x9f, 0xf7, 0x91, 0xf7, 0x38, 0x92, 0x26, 0xf1, 0xa3, 0x25, 0x47, + 0xb5, 0x5b, 0x1d, 0xd5, 0x4b, 0x8e, 0x5a, 0x68, 0xf7, 0x1f, 0xd9, 0x37, 0x96, 0x06, 0x1f, 0xaa, + 0xa8, 0x76, 0xa4, 0x53, 0xfc, 0x1e, 0x6d, 0xfe, 0x1d, 0x76, 0x44, 0xca, 0xcf, 0x4f, 0xca, 0x89, + 0x84, 0x4f, 0xd7, 0xe3, 0xab, 0xc4, 0xf6, 0x2e, 0xbe, 0xfd, 0xfa, 0x54, 0x7d, 0x82, 0xdb, 0xf4, + 0xbf, 0x7f, 0x46, 0xb9, 0xe3, 0x8f, 0xed, 0x43, 0x5d, 0x04, 0xe8, 0x7e, 0x29, 0xd7, 0xf6, 0xed, + 0x37, 0x58, 0x42, 0xb8, 0x77, 0x07, 0x61, 0xa5, 0xa1, 0x67, 0x35, 0x74, 0x71, 0x67, 0x8d, 0x06, + 0xdb, 0x1b, 0x8e, 0x2e, 0x17, 0x51, 0x70, 0xb5, 0x88, 0x82, 0x9f, 0x8b, 0x28, 0xf8, 0xb8, 0x8c, + 0x2a, 0x57, 0xcb, 0xa8, 0xf2, 0x7d, 0x19, 0x55, 0xde, 0xd0, 0x34, 0x33, 0xc7, 0xa7, 0x13, 0xc2, + 0x61, 0x46, 0xe3, 0x62, 0xcb, 0xfe, 0x6b, 0x61, 0xde, 0x81, 0x3a, 0x71, 0x15, 0xcd, 0x5f, 0xd0, + 0x33, 0xbf, 0xd8, 0x9c, 0xcf, 0x85, 0x9e, 0x34, 0xec, 0x37, 0x3e, 0xfc, 0x1d, 0x00, 0x00, 0xff, + 0xff, 0x8f, 0xd6, 0xd7, 0xef, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/erc20/types/tx.pb.gw.go b/x/erc20/types/tx.pb.gw.go index 3f2ee25a4..caf45d3e0 100644 --- a/x/erc20/types/tx.pb.gw.go +++ b/x/erc20/types/tx.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join var ( filter_Msg_ConvertCoin_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} @@ -106,12 +108,14 @@ func local_request_Msg_ConvertERC20_0(ctx context.Context, marshaler runtime.Mar // RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". // UnaryRPC :call MsgServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MsgServer) error { mux.Handle("GET", pattern_Msg_ConvertCoin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -119,6 +123,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server return } resp, md, err := local_request_Msg_ConvertCoin_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -132,6 +137,8 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server mux.Handle("GET", pattern_Msg_ConvertERC20_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -139,6 +146,7 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server return } resp, md, err := local_request_Msg_ConvertERC20_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/govshuttle/client/proposal_handler.go b/x/govshuttle/client/proposal_handler.go index ce8146fe8..2457f9c3d 100644 --- a/x/govshuttle/client/proposal_handler.go +++ b/x/govshuttle/client/proposal_handler.go @@ -3,7 +3,6 @@ package client import ( govclient "github.com/cosmos/cosmos-sdk/x/gov/client" - "github.com/Canto-Network/Canto/v7/x/erc20/client/rest" "github.com/Canto-Network/Canto/v7/x/govshuttle/client/cli" ) diff --git a/x/govshuttle/types/genesis.pb.go b/x/govshuttle/types/genesis.pb.go index a53f33c76..a804df3e4 100644 --- a/x/govshuttle/types/genesis.pb.go +++ b/x/govshuttle/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/govshuttle/types/govshuttle.pb.go b/x/govshuttle/types/govshuttle.pb.go index f41dd6fc6..ccb21068f 100644 --- a/x/govshuttle/types/govshuttle.pb.go +++ b/x/govshuttle/types/govshuttle.pb.go @@ -5,9 +5,9 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - _ "github.com/regen-network/cosmos-proto" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -346,7 +346,7 @@ var fileDescriptor_39f3a63fcc428040 = []byte{ 0x14, 0xce, 0xb8, 0xe9, 0xea, 0x4e, 0x41, 0x24, 0x56, 0x19, 0x8b, 0xa4, 0x61, 0xf1, 0xb0, 0x08, 0x9b, 0xb0, 0x2a, 0x28, 0x7b, 0x52, 0x2b, 0x42, 0xc1, 0x96, 0x12, 0x3c, 0x79, 0x91, 0xd9, 0x64, 0x48, 0xc3, 0x26, 0x33, 0x61, 0xe6, 0x25, 0xda, 0xbb, 0x3f, 0xc0, 0xa3, 0x37, 0xfb, 0x23, 0xfc, - 0x11, 0x1e, 0x8b, 0x17, 0xf5, 0x26, 0xbb, 0x17, 0x7f, 0x86, 0xcc, 0x4c, 0x76, 0x1b, 0x6b, 0x3d, + 0x11, 0xe2, 0xa9, 0x37, 0xf5, 0x26, 0xbb, 0x17, 0x7f, 0x86, 0xcc, 0x4c, 0x76, 0x1b, 0x6b, 0x3d, 0x89, 0xa7, 0xe4, 0xfb, 0xde, 0xbc, 0xf7, 0xbe, 0xef, 0xbd, 0x19, 0x7c, 0x27, 0xa1, 0x1c, 0x44, 0x94, 0x89, 0x46, 0x1d, 0xd5, 0x00, 0x05, 0x8b, 0x9a, 0x49, 0x07, 0x85, 0x95, 0x14, 0x20, 0xbc, 0xeb, 0xe6, 0x54, 0xd8, 0xe1, 0x9b, 0xc9, 0xf6, 0x56, 0x26, 0x32, 0x61, 0xe2, 0x91, 0xfe, 0xb3, @@ -371,7 +371,7 @@ var fileDescriptor_39f3a63fcc428040 = []byte{ 0xc1, 0xe7, 0x85, 0x8f, 0x4e, 0x17, 0x3e, 0xfa, 0xb1, 0xf0, 0xd1, 0xfb, 0xa5, 0xef, 0x9c, 0x2e, 0x7d, 0xe7, 0xdb, 0xd2, 0x77, 0x5e, 0x3d, 0xe8, 0x0c, 0x7f, 0x57, 0xef, 0x71, 0x7c, 0xc0, 0xe0, 0x8d, 0x90, 0x73, 0x8b, 0xa2, 0xe6, 0xa1, 0xdd, 0xc0, 0xea, 0x49, 0x9a, 0x45, 0xcc, 0xfa, 0xe6, - 0x15, 0xdd, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x33, 0xe7, 0xa0, 0xb3, 0x03, 0x00, 0x00, + 0x15, 0xdd, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xa9, 0x7b, 0xc3, 0xb3, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/govshuttle/types/query.pb.go b/x/govshuttle/types/query.pb.go index 1a517accb..3d7e9aa0e 100644 --- a/x/govshuttle/types/query.pb.go +++ b/x/govshuttle/types/query.pb.go @@ -7,9 +7,9 @@ import ( context "context" fmt "fmt" _ "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/govshuttle/types/query.pb.gw.go b/x/govshuttle/types/query.pb.gw.go index ba13e89db..2899a89c1 100644 --- a/x/govshuttle/types/query.pb.gw.go +++ b/x/govshuttle/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryParamsRequest @@ -52,12 +54,14 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -65,6 +69,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index 5c3016af9..822de4a01 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -6,8 +6,8 @@ package types import ( context "context" fmt "fmt" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" math "math" ) diff --git a/x/inflation/types/genesis.pb.go b/x/inflation/types/genesis.pb.go index bbde243d1..193604292 100644 --- a/x/inflation/types/genesis.pb.go +++ b/x/inflation/types/genesis.pb.go @@ -5,8 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/inflation/types/inflation.pb.go b/x/inflation/types/inflation.pb.go index 5431ba58d..d6df6398a 100644 --- a/x/inflation/types/inflation.pb.go +++ b/x/inflation/types/inflation.pb.go @@ -4,10 +4,11 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -34,7 +35,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type InflationDistribution struct { // staking_rewards defines the proportion of the minted minted_denom that is // to be allocated as staking rewards - StakingRewards github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=staking_rewards,json=stakingRewards,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"staking_rewards"` + StakingRewards cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=staking_rewards,json=stakingRewards,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"staking_rewards"` // // usage_incentives defines the proportion of the minted minted_denom that // is // // to be allocated to the incentives module address @@ -44,7 +45,7 @@ type InflationDistribution struct { // ]; // community_pool defines the proportion of the minted minted_denom that is to // be allocated to the community pool - CommunityPool github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=community_pool,json=communityPool,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"community_pool"` + CommunityPool cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=community_pool,json=communityPool,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"community_pool"` } func (m *InflationDistribution) Reset() { *m = InflationDistribution{} } @@ -87,15 +88,15 @@ var xxx_messageInfo_InflationDistribution proto.InternalMessageInfo // (max_variance / bonding_target)) type ExponentialCalculation struct { // initial value - A github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=a,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"a"` + A cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=a,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"a"` // reduction factor - R github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=r,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"r"` + R cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=r,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"r"` // long term inflation - C github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=c,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"c"` + C cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=c,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"c"` // bonding target - BondingTarget github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=bonding_target,json=bondingTarget,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"bonding_target"` + BondingTarget cosmossdk_io_math.LegacyDec `protobuf:"bytes,4,opt,name=bonding_target,json=bondingTarget,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"bonding_target"` // max variance - MaxVariance github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,5,opt,name=max_variance,json=maxVariance,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_variance"` + MaxVariance cosmossdk_io_math.LegacyDec `protobuf:"bytes,5,opt,name=max_variance,json=maxVariance,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"max_variance"` } func (m *ExponentialCalculation) Reset() { *m = ExponentialCalculation{} } @@ -141,29 +142,31 @@ func init() { } var fileDescriptor_aa2aa1764b029465 = []byte{ - // 351 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xbd, 0x4e, 0xfb, 0x30, - 0x14, 0xc5, 0xe3, 0xfe, 0x3f, 0x24, 0x02, 0x14, 0x29, 0x02, 0x14, 0x31, 0xa4, 0xa8, 0x03, 0x62, - 0x69, 0xa2, 0xaa, 0x03, 0x0b, 0x53, 0x5b, 0x06, 0x06, 0x10, 0x54, 0x7c, 0x48, 0x2c, 0x95, 0xe3, - 0x9a, 0x60, 0x35, 0xf1, 0x8d, 0x6c, 0x27, 0x4d, 0xdf, 0x82, 0xb7, 0xa2, 0x63, 0x47, 0xc4, 0x50, - 0xa1, 0xf6, 0x35, 0x18, 0x90, 0x93, 0x40, 0x3b, 0x67, 0xca, 0xbd, 0xf1, 0x39, 0x3f, 0xf9, 0x5e, - 0x1f, 0xb3, 0x49, 0x30, 0x57, 0xe0, 0x31, 0xfe, 0x1c, 0x62, 0xc5, 0x80, 0x7b, 0x69, 0x7b, 0xdd, - 0xb8, 0xb1, 0x00, 0x05, 0x96, 0x95, 0x6b, 0xdc, 0xf5, 0xef, 0xb4, 0x7d, 0xb4, 0x1f, 0x40, 0x00, - 0xf9, 0xb1, 0xa7, 0xab, 0x42, 0xd9, 0x7c, 0x43, 0xe6, 0xc1, 0xe5, 0x8f, 0xac, 0xcf, 0xa4, 0x12, - 0xcc, 0x4f, 0x74, 0x6d, 0x3d, 0x9a, 0x7b, 0x52, 0xe1, 0x31, 0xe3, 0xc1, 0x50, 0xd0, 0x09, 0x16, - 0x23, 0x69, 0xa3, 0x63, 0x74, 0xba, 0xd5, 0x75, 0x67, 0x8b, 0x86, 0xf1, 0xb1, 0x68, 0x9c, 0x04, - 0x4c, 0xbd, 0x24, 0xbe, 0x4b, 0x20, 0xf2, 0x08, 0xc8, 0x08, 0x64, 0xf9, 0x69, 0xc9, 0xd1, 0xd8, - 0x53, 0xd3, 0x98, 0x4a, 0xb7, 0x4f, 0xc9, 0xa0, 0x5e, 0x62, 0x06, 0x05, 0xc5, 0xba, 0x37, 0xeb, - 0x04, 0xa2, 0x28, 0xe1, 0x4c, 0x4d, 0x87, 0x31, 0x40, 0x68, 0xff, 0xa9, 0xc4, 0xdd, 0xfd, 0xa5, - 0xdc, 0x00, 0x84, 0xcd, 0xaf, 0x9a, 0x79, 0x78, 0x91, 0xc5, 0xc0, 0x29, 0x57, 0x0c, 0x87, 0x3d, - 0x1c, 0x92, 0xa4, 0x18, 0xcb, 0x3a, 0x37, 0x11, 0xae, 0x78, 0x79, 0x84, 0xb5, 0x5b, 0xd8, 0xb5, - 0x6a, 0x6e, 0xa1, 0xdd, 0xa4, 0xe2, 0x80, 0x88, 0xe8, 0x5d, 0xf9, 0xc0, 0x47, 0xfa, 0x11, 0x14, - 0x16, 0x01, 0x55, 0xf6, 0xdf, 0x6a, 0xbb, 0x2a, 0x29, 0x77, 0x39, 0xc4, 0xba, 0x35, 0x77, 0x22, - 0x9c, 0x0d, 0x53, 0x2c, 0x18, 0xe6, 0x84, 0xda, 0xff, 0x2a, 0x41, 0xb7, 0x23, 0x9c, 0x3d, 0x94, - 0x88, 0xee, 0xd5, 0x6c, 0xe9, 0xa0, 0xf9, 0xd2, 0x41, 0x9f, 0x4b, 0x07, 0xbd, 0xae, 0x1c, 0x63, - 0xbe, 0x72, 0x8c, 0xf7, 0x95, 0x63, 0x3c, 0x75, 0x36, 0x70, 0x3d, 0x9d, 0xcb, 0xd6, 0x35, 0x55, - 0x13, 0x10, 0xe3, 0xa2, 0xf3, 0xd2, 0x33, 0x2f, 0xdb, 0x88, 0x73, 0xce, 0xf7, 0xff, 0xe7, 0xf1, - 0xec, 0x7c, 0x07, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xa0, 0x32, 0xdd, 0xee, 0x02, 0x00, 0x00, + // 376 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0xd2, 0xc1, 0x6a, 0xdb, 0x40, + 0x10, 0x00, 0x50, 0x6d, 0xdd, 0x16, 0xba, 0x6d, 0x5d, 0x10, 0x6d, 0x51, 0x5d, 0x90, 0x8b, 0x4f, + 0xbd, 0x58, 0xc2, 0xf8, 0xd0, 0x63, 0xc1, 0x76, 0x0e, 0x81, 0x24, 0x04, 0x63, 0x42, 0xf0, 0x45, + 0xac, 0xd6, 0x1b, 0x79, 0xb1, 0xb4, 0x23, 0x56, 0x2b, 0x59, 0xfe, 0x86, 0x5c, 0xf2, 0x31, 0xf9, + 0x08, 0x5f, 0x02, 0x26, 0xa7, 0x90, 0x83, 0x09, 0xf6, 0x8f, 0x04, 0x69, 0x95, 0x38, 0x67, 0xdd, + 0x66, 0x34, 0xc3, 0x13, 0x33, 0x3b, 0xb8, 0x43, 0x89, 0x50, 0xe0, 0x72, 0x71, 0x15, 0x12, 0xc5, + 0x41, 0xb8, 0x59, 0xef, 0x90, 0x38, 0xb1, 0x04, 0x05, 0xa6, 0x59, 0xf6, 0x38, 0x87, 0xcf, 0x59, + 0xaf, 0xf5, 0x3d, 0x80, 0x00, 0xca, 0xb2, 0x5b, 0x44, 0xba, 0xb3, 0xf5, 0x8b, 0x42, 0x12, 0x41, + 0xe2, 0xe9, 0x82, 0x4e, 0x74, 0xa9, 0x73, 0x87, 0xf0, 0x8f, 0xe3, 0x17, 0x61, 0xc4, 0x13, 0x25, + 0xb9, 0x9f, 0x16, 0xb1, 0x39, 0xc5, 0xdf, 0x12, 0x45, 0x16, 0x5c, 0x04, 0x9e, 0x64, 0x4b, 0x22, + 0x67, 0x89, 0x85, 0xfe, 0xa0, 0xbf, 0x9f, 0x06, 0xbd, 0xf5, 0xb6, 0x6d, 0x3c, 0x6e, 0xdb, 0xbf, + 0x35, 0x94, 0xcc, 0x16, 0x0e, 0x07, 0x37, 0x22, 0x6a, 0xee, 0x9c, 0xb0, 0x80, 0xd0, 0xd5, 0x88, + 0xd1, 0xfb, 0xdb, 0x2e, 0xae, 0xfe, 0x33, 0x62, 0x74, 0xdc, 0xac, 0xa4, 0xb1, 0x86, 0xcc, 0x4b, + 0xdc, 0xa4, 0x10, 0x45, 0xa9, 0xe0, 0x6a, 0xe5, 0xc5, 0x00, 0xa1, 0xd5, 0xa8, 0x4b, 0x7f, 0x7d, + 0x85, 0xce, 0x01, 0xc2, 0xce, 0x75, 0x03, 0xff, 0x3c, 0xca, 0x63, 0x10, 0x4c, 0x28, 0x4e, 0xc2, + 0x21, 0x09, 0x69, 0xaa, 0x87, 0x33, 0xff, 0x63, 0x44, 0xea, 0x8f, 0x80, 0x48, 0x01, 0x48, 0xeb, + 0x5d, 0x6d, 0x40, 0x16, 0x00, 0xad, 0x3f, 0x29, 0xa2, 0xc5, 0xde, 0x7c, 0x10, 0xb3, 0xe2, 0x4d, + 0x14, 0x91, 0x01, 0x53, 0xd6, 0xfb, 0xda, 0x7b, 0xab, 0xa0, 0x49, 0xe9, 0x98, 0x13, 0xfc, 0x25, + 0x22, 0xb9, 0x97, 0x11, 0xc9, 0x89, 0xa0, 0xcc, 0xfa, 0x50, 0xd7, 0xfd, 0x1c, 0x91, 0xfc, 0xa2, + 0x52, 0x06, 0xa7, 0xeb, 0x9d, 0x8d, 0x36, 0x3b, 0x1b, 0x3d, 0xed, 0x6c, 0x74, 0xb3, 0xb7, 0x8d, + 0xcd, 0xde, 0x36, 0x1e, 0xf6, 0xb6, 0x31, 0xed, 0x07, 0x5c, 0xcd, 0x53, 0xdf, 0xa1, 0x10, 0xb9, + 0xc3, 0xe2, 0x8e, 0xbb, 0x67, 0x4c, 0x2d, 0x41, 0x2e, 0x74, 0xe6, 0x66, 0xff, 0xdc, 0xfc, 0xcd, + 0xf9, 0xab, 0x55, 0xcc, 0x12, 0xff, 0x63, 0x79, 0xb3, 0xfd, 0xe7, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x97, 0x5f, 0xa0, 0x6f, 0x1e, 0x03, 0x00, 0x00, } func (m *InflationDistribution) Marshal() (dAtA []byte, err error) { diff --git a/x/inflation/types/query.pb.go b/x/inflation/types/query.pb.go index e0da47083..bf2b51885 100644 --- a/x/inflation/types/query.pb.go +++ b/x/inflation/types/query.pb.go @@ -5,12 +5,13 @@ package types import ( context "context" + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -411,7 +412,7 @@ var xxx_messageInfo_QueryInflationRateRequest proto.InternalMessageInfo // RPC method. type QueryInflationRateResponse struct { // rate by which the total supply increases within one period - InflationRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=inflation_rate,json=inflationRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"inflation_rate"` + InflationRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=inflation_rate,json=inflationRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"inflation_rate"` } func (m *QueryInflationRateResponse) Reset() { *m = QueryInflationRateResponse{} } @@ -548,51 +549,53 @@ func init() { func init() { proto.RegisterFile("canto/inflation/v1/query.proto", fileDescriptor_bd7bc906141a59c4) } var fileDescriptor_bd7bc906141a59c4 = []byte{ - // 689 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x95, 0x3f, 0x6f, 0x13, 0x31, - 0x18, 0xc6, 0x63, 0x54, 0x82, 0x30, 0x6a, 0xa5, 0x9a, 0x0a, 0xc1, 0x51, 0x2e, 0xd5, 0x09, 0x4a, - 0x55, 0x14, 0x9b, 0x24, 0x03, 0xcc, 0x0d, 0x0c, 0x0c, 0x85, 0x92, 0x8a, 0x85, 0x25, 0xba, 0x5c, - 0xcd, 0xd5, 0x6a, 0x63, 0xbb, 0x67, 0x27, 0xd0, 0x01, 0x09, 0xc1, 0x17, 0x40, 0x62, 0x63, 0x60, - 0x61, 0x40, 0xea, 0xc2, 0xd7, 0xe8, 0x58, 0x89, 0x05, 0x31, 0x14, 0xd4, 0xf0, 0x41, 0xd0, 0xf9, - 0x7c, 0x69, 0xd2, 0x38, 0x69, 0x3b, 0x30, 0xb5, 0xe7, 0xf7, 0xdf, 0xf3, 0x3e, 0xe7, 0xdf, 0x05, - 0xfa, 0x51, 0xc8, 0xb5, 0x20, 0x8c, 0xbf, 0xda, 0x0e, 0x35, 0x13, 0x9c, 0x74, 0x2b, 0x64, 0xa7, - 0x43, 0x93, 0x5d, 0x2c, 0x13, 0xa1, 0x05, 0x42, 0x26, 0x8e, 0xfb, 0x71, 0xdc, 0xad, 0x78, 0x73, - 0xb1, 0x88, 0x85, 0x09, 0x93, 0xf4, 0xbf, 0x2c, 0xd3, 0x9b, 0x8f, 0x85, 0x88, 0xb7, 0x29, 0x09, - 0x25, 0x23, 0x21, 0xe7, 0x42, 0x9b, 0x7c, 0x65, 0xa3, 0x7e, 0x24, 0x54, 0x5b, 0x28, 0xd2, 0x0a, - 0x15, 0x25, 0xdd, 0x4a, 0x8b, 0xea, 0xb0, 0x42, 0x22, 0xc1, 0xb8, 0x8d, 0x2f, 0x38, 0x74, 0xc4, - 0x94, 0x53, 0xc5, 0x6c, 0x87, 0x60, 0x0e, 0xa2, 0xe7, 0xa9, 0xb0, 0x35, 0x9a, 0x30, 0xb1, 0xd1, - 0xa0, 0x3b, 0x1d, 0xaa, 0x74, 0x50, 0x86, 0x57, 0x87, 0x4e, 0x95, 0x14, 0x5c, 0x51, 0x74, 0x0d, - 0x16, 0xa5, 0x39, 0xb9, 0x0e, 0x16, 0xc0, 0xd2, 0x54, 0xc3, 0x3e, 0x05, 0x0b, 0xd0, 0x37, 0xe9, - 0x8f, 0xa5, 0x88, 0x36, 0x57, 0x19, 0xd7, 0x6b, 0x89, 0xe8, 0x32, 0xc5, 0x04, 0xcf, 0x1b, 0x7e, - 0x03, 0xb0, 0x34, 0x36, 0xc5, 0x76, 0xff, 0x00, 0xe0, 0x1c, 0x4d, 0xc3, 0xcd, 0x36, 0xe3, 0xba, - 0x29, 0xf3, 0x04, 0x33, 0xec, 0x4a, 0x75, 0x1e, 0x67, 0xcb, 0xe2, 0x74, 0x59, 0x6c, 0x97, 0xc5, - 0x8f, 0x68, 0x54, 0x17, 0x8c, 0xaf, 0xd4, 0xf6, 0x0f, 0x4b, 0x85, 0xbd, 0xdf, 0xa5, 0x7b, 0x31, - 0xd3, 0x9b, 0x9d, 0x16, 0x8e, 0x44, 0x9b, 0x58, 0x73, 0xb2, 0x3f, 0x65, 0xb5, 0xb1, 0x45, 0xf4, - 0xae, 0xa4, 0x2a, 0xaf, 0x51, 0x0d, 0x44, 0x47, 0xd4, 0x04, 0x37, 0xe1, 0x0d, 0x23, 0x74, 0x7d, - 0x8b, 0x49, 0x49, 0x37, 0x8c, 0x5e, 0x95, 0xaf, 0x51, 0x87, 0x9e, 0x2b, 0x68, 0x17, 0xb8, 0x03, - 0x67, 0x54, 0x16, 0x68, 0x9a, 0xc6, 0xca, 0xda, 0x34, 0xad, 0x06, 0xd3, 0x83, 0x12, 0xbc, 0x65, - 0x9a, 0xd4, 0x59, 0x12, 0x75, 0xd2, 0xf7, 0xc2, 0xe3, 0xf5, 0x8e, 0x94, 0xdb, 0xbb, 0xf9, 0x94, - 0xaf, 0xc0, 0xfa, 0xe9, 0xc8, 0xb0, 0xa3, 0xde, 0x01, 0x88, 0xa2, 0xe3, 0x68, 0x53, 0x99, 0xf0, - 0xff, 0x73, 0x6a, 0x36, 0x3a, 0x29, 0xa5, 0x6f, 0xd4, 0x93, 0xfc, 0x72, 0x35, 0x42, 0x4d, 0xf3, - 0x15, 0x94, 0x35, 0xea, 0x44, 0xd0, 0xaa, 0x7f, 0x01, 0x67, 0xfa, 0x57, 0xb2, 0x99, 0x84, 0x9a, - 0x1a, 0xe1, 0x97, 0x57, 0x70, 0x2a, 0xed, 0xd7, 0x61, 0x69, 0xf1, 0x6c, 0xd2, 0x1a, 0xd3, 0x6c, - 0xb0, 0xfd, 0xf1, 0x5d, 0x0e, 0x93, 0xb0, 0xdd, 0x7f, 0x67, 0xcf, 0xf2, 0xbb, 0x6c, 0x4f, 0xad, - 0x86, 0x87, 0xb0, 0x28, 0xcd, 0x89, 0x35, 0xcd, 0xc3, 0xa3, 0x4c, 0xe2, 0xac, 0x66, 0x65, 0x2a, - 0xd5, 0xd5, 0xb0, 0xf9, 0xd5, 0x2f, 0x97, 0xe0, 0x45, 0xd3, 0x11, 0xbd, 0x85, 0xc5, 0x8c, 0x10, - 0xb4, 0xe8, 0xaa, 0x1e, 0x05, 0xcb, 0xbb, 0x7b, 0x6a, 0x5e, 0x26, 0x2f, 0x08, 0xde, 0xff, 0xf8, - 0xfb, 0xe9, 0xc2, 0x3c, 0xf2, 0x88, 0x03, 0xe1, 0x0c, 0x3b, 0xf4, 0x1d, 0x40, 0x34, 0xca, 0x13, - 0xaa, 0x8e, 0x9d, 0x31, 0x96, 0x4f, 0xaf, 0x76, 0xae, 0x1a, 0xab, 0xf1, 0xbe, 0xd1, 0xb8, 0x8c, - 0x96, 0x5c, 0x1a, 0x5d, 0x24, 0xa3, 0xcf, 0x00, 0x4e, 0x0f, 0xb1, 0x83, 0xca, 0x63, 0x07, 0xbb, - 0x00, 0xf4, 0xf0, 0x59, 0xd3, 0xad, 0xc4, 0x65, 0x23, 0xf1, 0x36, 0x0a, 0x5c, 0x12, 0x87, 0x61, - 0x45, 0x7b, 0x00, 0xce, 0x8e, 0x10, 0x87, 0x2a, 0x63, 0x27, 0x8e, 0xe3, 0xd7, 0xab, 0x9e, 0xa7, - 0xc4, 0x0a, 0xc5, 0x46, 0xe8, 0x12, 0x5a, 0x74, 0x09, 0x1d, 0x25, 0xdd, 0x38, 0x39, 0x04, 0xd7, - 0x04, 0x27, 0x5d, 0x84, 0x4e, 0x70, 0xd2, 0xc9, 0xec, 0x64, 0x27, 0x87, 0x69, 0x36, 0x5c, 0x18, - 0x56, 0x26, 0x71, 0x31, 0x08, 0xe9, 0x24, 0x2e, 0x86, 0xb0, 0x3d, 0x85, 0x8b, 0x0c, 0xd7, 0xd5, - 0xfd, 0x23, 0x1f, 0x1c, 0x1c, 0xf9, 0xe0, 0xcf, 0x91, 0x0f, 0x3e, 0xf6, 0xfc, 0xc2, 0x41, 0xcf, - 0x2f, 0xfc, 0xec, 0xf9, 0x85, 0x97, 0xb5, 0x81, 0x0f, 0x4b, 0x3d, 0xad, 0x2f, 0x3f, 0xa5, 0xfa, - 0xb5, 0x48, 0xb6, 0xb2, 0x27, 0xd2, 0x7d, 0x40, 0xde, 0x0c, 0xb4, 0x34, 0x5f, 0x9a, 0x56, 0xd1, - 0xfc, 0x52, 0xd6, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x8d, 0xf4, 0x4e, 0xde, 0xd5, 0x07, 0x00, - 0x00, + // 724 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x95, 0x31, 0x6f, 0x13, 0x3f, + 0x14, 0xc0, 0x73, 0x7f, 0xf5, 0x1f, 0x84, 0x51, 0x2b, 0xd5, 0x54, 0x88, 0x5e, 0xcb, 0xa5, 0x3a, + 0x41, 0xa9, 0x8a, 0x62, 0x93, 0x64, 0x80, 0xb9, 0x29, 0x03, 0x12, 0x85, 0x92, 0x2e, 0x88, 0x25, + 0xba, 0x5c, 0xcc, 0xd5, 0x4a, 0x63, 0x5f, 0xcf, 0x4e, 0x20, 0x03, 0x12, 0x82, 0x2f, 0x80, 0xc4, + 0xc6, 0xc0, 0xc2, 0x80, 0xd4, 0x85, 0x85, 0x0f, 0xd1, 0xb1, 0x82, 0x05, 0x31, 0x14, 0xd4, 0xf2, + 0x41, 0xd0, 0xd9, 0xbe, 0x34, 0x69, 0x9c, 0x94, 0x0e, 0x4c, 0xed, 0xf9, 0x3d, 0xbf, 0xf7, 0xf3, + 0x3b, 0xff, 0x2e, 0xc0, 0x0b, 0x03, 0x26, 0x39, 0xa6, 0xec, 0xd9, 0x4e, 0x20, 0x29, 0x67, 0xb8, + 0x5b, 0xc2, 0xbb, 0x1d, 0x92, 0xf4, 0x50, 0x9c, 0x70, 0xc9, 0x21, 0x54, 0x71, 0xd4, 0x8f, 0xa3, + 0x6e, 0xc9, 0x9d, 0x8b, 0x78, 0xc4, 0x55, 0x18, 0xa7, 0xff, 0xe9, 0x4c, 0x77, 0x31, 0xe2, 0x3c, + 0xda, 0x21, 0x38, 0x88, 0x29, 0x0e, 0x18, 0xe3, 0x52, 0xe5, 0x0b, 0x13, 0xf5, 0x42, 0x2e, 0xda, + 0x5c, 0xe0, 0x46, 0x20, 0x08, 0xee, 0x96, 0x1a, 0x44, 0x06, 0x25, 0x1c, 0x72, 0xca, 0x4c, 0x7c, + 0xc9, 0xc2, 0x11, 0x11, 0x46, 0x04, 0xcd, 0x2a, 0xcc, 0xeb, 0x0a, 0x75, 0xdd, 0x58, 0x3f, 0xe8, + 0x90, 0x3f, 0x07, 0xe0, 0xe3, 0x94, 0x79, 0x93, 0x24, 0x94, 0x37, 0x6b, 0x64, 0xb7, 0x43, 0x84, + 0xf4, 0x8b, 0xe0, 0xf2, 0xd0, 0xaa, 0x88, 0x39, 0x13, 0x04, 0x5e, 0x01, 0xf9, 0x58, 0xad, 0x5c, + 0x75, 0x96, 0x9c, 0x95, 0xa9, 0x9a, 0x79, 0xf2, 0x97, 0x80, 0xa7, 0xd2, 0xef, 0xc5, 0x3c, 0xdc, + 0xde, 0xa0, 0x4c, 0x6e, 0x26, 0xbc, 0x4b, 0x05, 0xe5, 0x2c, 0x2b, 0xf8, 0xc9, 0x01, 0x85, 0xb1, + 0x29, 0xa6, 0xfa, 0x1b, 0x07, 0xcc, 0x91, 0x34, 0x5c, 0x6f, 0x53, 0x26, 0x53, 0x58, 0x9d, 0xa0, + 0x9a, 0x5d, 0x2a, 0x2f, 0x22, 0x03, 0x9e, 0xce, 0x01, 0x99, 0x39, 0xa0, 0x75, 0x12, 0x56, 0x39, + 0x65, 0x6b, 0x95, 0xfd, 0xc3, 0x42, 0x6e, 0xef, 0x67, 0xe1, 0x56, 0x44, 0xe5, 0x76, 0xa7, 0x81, + 0x42, 0xde, 0x36, 0x07, 0x35, 0x7f, 0x8a, 0xa2, 0xd9, 0xc2, 0xb2, 0x17, 0x13, 0x91, 0xed, 0x11, + 0x35, 0x48, 0x46, 0x68, 0xfc, 0x05, 0x30, 0xaf, 0x40, 0xb7, 0x5a, 0x34, 0x8e, 0x49, 0x53, 0xf1, + 0x8a, 0xec, 0x18, 0x55, 0xe0, 0xda, 0x82, 0xe6, 0x00, 0x37, 0xc0, 0x8c, 0xd0, 0x81, 0xba, 0x2a, + 0x2c, 0xcc, 0x98, 0xa6, 0xc5, 0x60, 0xba, 0x5f, 0x00, 0xd7, 0x54, 0x91, 0x2a, 0x4d, 0xc2, 0x4e, + 0xfa, 0xca, 0x58, 0xb4, 0xd5, 0x89, 0xe3, 0x9d, 0x5e, 0xd6, 0xe5, 0xa3, 0x63, 0xe6, 0x69, 0xc9, + 0x30, 0xad, 0x5e, 0x39, 0x00, 0x86, 0x27, 0xd1, 0xba, 0x50, 0xe1, 0x7f, 0x37, 0xa9, 0xd9, 0xf0, + 0x34, 0x4a, 0x7f, 0x50, 0xf7, 0xb3, 0x7b, 0x57, 0x0b, 0x24, 0xc9, 0x8e, 0xd0, 0x35, 0x83, 0x3a, + 0x15, 0x34, 0xf4, 0x4f, 0xc0, 0x4c, 0xff, 0xb6, 0xd6, 0x93, 0x40, 0x12, 0x05, 0x7e, 0x71, 0xad, + 0x94, 0xa2, 0xfd, 0x38, 0x2c, 0x2c, 0x68, 0x10, 0xd1, 0x6c, 0x21, 0xca, 0x71, 0x3b, 0x90, 0xdb, + 0xe8, 0x01, 0x89, 0x82, 0xb0, 0xb7, 0x4e, 0xc2, 0xaf, 0x5f, 0x8a, 0xc0, 0x1c, 0x6f, 0x9d, 0x84, + 0xb5, 0x69, 0x3a, 0xd8, 0xe1, 0xe4, 0x3a, 0x07, 0x49, 0xd0, 0xee, 0xbf, 0xb6, 0x47, 0xd9, 0x75, + 0x36, 0xab, 0x06, 0xe3, 0x2e, 0xc8, 0xc7, 0x6a, 0xc5, 0xcc, 0xcd, 0x45, 0xa3, 0xc6, 0x22, 0xbd, + 0x67, 0x6d, 0x2a, 0x45, 0xab, 0x99, 0xfc, 0xf2, 0x87, 0x0b, 0xe0, 0x7f, 0x55, 0x11, 0xbe, 0x04, + 0x79, 0x2d, 0x09, 0x5c, 0xb6, 0xed, 0x1e, 0x75, 0xcb, 0xbd, 0x79, 0x66, 0x9e, 0xc6, 0xf3, 0xfd, + 0xd7, 0xdf, 0x7e, 0xbf, 0xfb, 0x6f, 0x11, 0xba, 0xd8, 0x22, 0xb8, 0x36, 0x0f, 0x7e, 0x76, 0x00, + 0x1c, 0x55, 0x0a, 0x96, 0xc7, 0xf6, 0x18, 0xab, 0xa8, 0x5b, 0x39, 0xd7, 0x1e, 0xc3, 0x78, 0x5b, + 0x31, 0xae, 0xc2, 0x15, 0x1b, 0xa3, 0x4d, 0x66, 0xf8, 0xde, 0x01, 0xd3, 0x43, 0xfa, 0xc0, 0xe2, + 0xd8, 0xc6, 0x36, 0x07, 0x5d, 0xf4, 0xb7, 0xe9, 0x06, 0x71, 0x55, 0x21, 0x5e, 0x87, 0xbe, 0x0d, + 0x71, 0xd8, 0x57, 0xb8, 0xe7, 0x80, 0xd9, 0x11, 0xe9, 0x60, 0x69, 0x6c, 0xc7, 0x71, 0x0a, 0xbb, + 0xe5, 0xf3, 0x6c, 0x31, 0xa0, 0x48, 0x81, 0xae, 0xc0, 0x65, 0x1b, 0xe8, 0xa8, 0xec, 0x6a, 0x92, + 0x43, 0x7e, 0x4d, 0x98, 0xa4, 0x4d, 0xd2, 0x09, 0x93, 0xb4, 0x6a, 0x3b, 0x79, 0x92, 0xc3, 0x42, + 0x2b, 0x2f, 0x94, 0x2b, 0x93, 0xbc, 0x18, 0x94, 0x74, 0x92, 0x17, 0x43, 0xda, 0x9e, 0xe1, 0x85, + 0xd6, 0x75, 0x63, 0xff, 0xc8, 0x73, 0x0e, 0x8e, 0x3c, 0xe7, 0xd7, 0x91, 0xe7, 0xbc, 0x3d, 0xf6, + 0x72, 0x07, 0xc7, 0x5e, 0xee, 0xfb, 0xb1, 0x97, 0x7b, 0x5a, 0x19, 0xf8, 0xec, 0x55, 0xd3, 0xfd, + 0xc5, 0x87, 0x44, 0x3e, 0xe7, 0x49, 0x4b, 0x3f, 0xe1, 0xee, 0x1d, 0xfc, 0x62, 0xa0, 0xa4, 0xfa, + 0x0e, 0x36, 0xf2, 0xea, 0xc7, 0xb2, 0xf2, 0x27, 0x00, 0x00, 0xff, 0xff, 0x22, 0xa3, 0x52, 0x31, + 0xf3, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/inflation/types/query.pb.gw.go b/x/inflation/types/query.pb.gw.go index 84d6353f7..76934a6d8 100644 --- a/x/inflation/types/query.pb.gw.go +++ b/x/inflation/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join func request_Query_Period_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryPeriodRequest @@ -142,12 +144,14 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_Period_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -155,6 +159,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Period_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -168,6 +173,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_EpochMintProvision_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -175,6 +182,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_EpochMintProvision_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -188,6 +196,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_SkippedEpochs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -195,6 +205,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_SkippedEpochs_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -208,6 +219,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_CirculatingSupply_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -215,6 +228,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_CirculatingSupply_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -228,6 +242,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_InflationRate_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -235,6 +251,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_InflationRate_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) @@ -248,6 +265,8 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -255,6 +274,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) diff --git a/x/onboarding/types/genesis.pb.go b/x/onboarding/types/genesis.pb.go index ba0e937d9..5b17451f6 100644 --- a/x/onboarding/types/genesis.pb.go +++ b/x/onboarding/types/genesis.pb.go @@ -4,11 +4,11 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/protobuf/types/known/durationpb" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" @@ -74,9 +74,9 @@ func (m *GenesisState) GetParams() Params { // Params holds parameters for the onboarding module type Params struct { // enable onboarding IBC middleware - EnableOnboarding bool `protobuf:"varint,1,opt,name=enable_onboarding,json=enableOnboarding,proto3" json:"enable_onboarding,omitempty"` - AutoSwapThreshold github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=auto_swap_threshold,json=autoSwapThreshold,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"auto_swap_threshold"` - WhitelistedChannels []string `protobuf:"bytes,4,rep,name=whitelisted_channels,json=whitelistedChannels,proto3" json:"whitelisted_channels,omitempty"` + EnableOnboarding bool `protobuf:"varint,1,opt,name=enable_onboarding,json=enableOnboarding,proto3" json:"enable_onboarding,omitempty"` + AutoSwapThreshold cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=auto_swap_threshold,json=autoSwapThreshold,proto3,customtype=cosmossdk.io/math.Int" json:"auto_swap_threshold"` + WhitelistedChannels []string `protobuf:"bytes,4,rep,name=whitelisted_channels,json=whitelistedChannels,proto3" json:"whitelisted_channels,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -135,28 +135,28 @@ func init() { proto.RegisterFile("canto/onboarding/v1/genesis.proto", fileDescri var fileDescriptor_a3d6be42d72587d3 = []byte{ // 349 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x31, 0x4f, 0xc2, 0x40, - 0x14, 0xc7, 0xdb, 0x40, 0x88, 0x54, 0x07, 0x29, 0x0c, 0x04, 0x93, 0x82, 0x0c, 0x86, 0xc4, 0x70, - 0x17, 0xd4, 0xc4, 0xb8, 0xc2, 0x60, 0x58, 0xd0, 0x14, 0x27, 0x07, 0x9b, 0x6b, 0x7b, 0x5e, 0x1b, - 0xca, 0xbd, 0xa6, 0x77, 0xa5, 0xfa, 0x2d, 0xfc, 0x58, 0x8c, 0x8c, 0xc6, 0x81, 0x18, 0xf8, 0x22, - 0xa6, 0x57, 0x14, 0x06, 0xa7, 0xbb, 0x77, 0xbf, 0xff, 0xfb, 0xbf, 0x97, 0xff, 0x19, 0xe7, 0x1e, - 0xe1, 0x12, 0x30, 0x70, 0x17, 0x48, 0xe2, 0x87, 0x9c, 0xe1, 0xc5, 0x00, 0x33, 0xca, 0xa9, 0x08, - 0x05, 0x8a, 0x13, 0x90, 0x60, 0xd6, 0x95, 0x04, 0xed, 0x25, 0x68, 0x31, 0x68, 0x35, 0x18, 0x30, - 0x50, 0x1c, 0xe7, 0xb7, 0x42, 0xda, 0xb2, 0x18, 0x00, 0x8b, 0x28, 0x56, 0x95, 0x9b, 0xbe, 0x62, - 0x3f, 0x4d, 0x88, 0x0c, 0x81, 0x17, 0xbc, 0x3b, 0x36, 0x4e, 0xee, 0x0b, 0xef, 0xa9, 0x24, 0x92, - 0x9a, 0x77, 0x46, 0x25, 0x26, 0x09, 0x99, 0x8b, 0xa6, 0xde, 0xd1, 0x7b, 0xc7, 0x57, 0x67, 0xe8, - 0x9f, 0x59, 0xe8, 0x51, 0x49, 0x86, 0xe5, 0xe5, 0xba, 0xad, 0xd9, 0xbb, 0x86, 0xee, 0x52, 0x37, - 0x2a, 0x05, 0x30, 0x2f, 0x8d, 0x1a, 0xe5, 0xc4, 0x8d, 0xa8, 0xb3, 0xef, 0x53, 0x86, 0x47, 0xf6, - 0x69, 0x01, 0x1e, 0xfe, 0xde, 0xcd, 0x17, 0xa3, 0x4e, 0x52, 0x09, 0x8e, 0xc8, 0x48, 0xec, 0xc8, - 0x20, 0xa1, 0x22, 0x80, 0xc8, 0x6f, 0x96, 0x3a, 0x7a, 0xaf, 0x3a, 0x44, 0xf9, 0x88, 0xaf, 0x75, - 0xfb, 0x82, 0x85, 0x32, 0x48, 0x5d, 0xe4, 0xc1, 0x1c, 0x7b, 0x20, 0xe6, 0x20, 0x76, 0x47, 0x5f, - 0xf8, 0x33, 0x2c, 0xdf, 0x63, 0x2a, 0xd0, 0x98, 0x4b, 0xbb, 0x96, 0x5b, 0x4d, 0x33, 0x12, 0x3f, - 0xfd, 0x1a, 0x99, 0x03, 0xa3, 0x91, 0x05, 0xa1, 0xa4, 0x51, 0x28, 0x24, 0xf5, 0x1d, 0x2f, 0x20, - 0x9c, 0xd3, 0x48, 0x34, 0xcb, 0x9d, 0x52, 0xaf, 0x6a, 0xd7, 0x0f, 0xd8, 0x68, 0x87, 0x86, 0x93, - 0xe5, 0xc6, 0xd2, 0x57, 0x1b, 0x4b, 0xff, 0xde, 0x58, 0xfa, 0xc7, 0xd6, 0xd2, 0x56, 0x5b, 0x4b, - 0xfb, 0xdc, 0x5a, 0xda, 0xf3, 0xcd, 0xc1, 0x1e, 0xa3, 0x3c, 0x99, 0xfe, 0x84, 0xca, 0x0c, 0x92, - 0x59, 0x51, 0xe1, 0xc5, 0x2d, 0x7e, 0x3b, 0xfc, 0x3b, 0xb5, 0x99, 0x5b, 0x51, 0x61, 0x5f, 0xff, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xb3, 0x1d, 0x6b, 0xdc, 0x01, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xc2, 0x30, + 0x18, 0xc7, 0xd7, 0x40, 0x88, 0x54, 0x0f, 0x32, 0x30, 0x41, 0x4c, 0x06, 0x72, 0x22, 0x21, 0xb4, + 0x41, 0x4d, 0x8c, 0x57, 0x38, 0x18, 0x2e, 0x68, 0x86, 0x27, 0x3d, 0x2c, 0xdd, 0xd6, 0x6c, 0x0b, + 0x5b, 0xbb, 0xac, 0x85, 0xe9, 0x5b, 0xf8, 0x30, 0xbe, 0x82, 0x09, 0x47, 0xe2, 0xc9, 0x78, 0x20, + 0x06, 0x5e, 0xc4, 0x6c, 0x45, 0xe1, 0xe0, 0xad, 0x5f, 0x7f, 0xff, 0xef, 0xff, 0xb5, 0xff, 0x0f, + 0x9e, 0x3b, 0x84, 0x49, 0x8e, 0x39, 0xb3, 0x39, 0x49, 0xdc, 0x80, 0x79, 0x78, 0xde, 0xc7, 0x1e, + 0x65, 0x54, 0x04, 0x02, 0xc5, 0x09, 0x97, 0x5c, 0xaf, 0xe6, 0x12, 0xb4, 0x93, 0xa0, 0x79, 0xbf, + 0x51, 0xf3, 0xb8, 0xc7, 0x73, 0x8e, 0xb3, 0x93, 0x92, 0x36, 0x4e, 0x1d, 0x2e, 0x22, 0x2e, 0x2c, + 0x05, 0x54, 0xa1, 0x50, 0x7b, 0x04, 0x8f, 0x6e, 0x95, 0xed, 0x44, 0x12, 0x49, 0xf5, 0x1b, 0x58, + 0x8a, 0x49, 0x42, 0x22, 0x51, 0x07, 0x2d, 0xd0, 0x39, 0xbc, 0x38, 0x43, 0xff, 0x8c, 0x41, 0xf7, + 0xb9, 0x64, 0x50, 0x5c, 0xac, 0x9a, 0x9a, 0xb9, 0x6d, 0x68, 0xbf, 0x03, 0x58, 0x52, 0x40, 0xef, + 0xc2, 0x0a, 0x65, 0xc4, 0x0e, 0xa9, 0xb5, 0xeb, 0xcb, 0x0d, 0x0f, 0xcc, 0x63, 0x05, 0xee, 0xfe, + 0xee, 0xf5, 0x27, 0x58, 0x25, 0x33, 0xc9, 0x2d, 0x91, 0x92, 0xd8, 0x92, 0x7e, 0x42, 0x85, 0xcf, + 0x43, 0xb7, 0x5e, 0x68, 0x81, 0x4e, 0x79, 0xd0, 0xcd, 0x46, 0x7c, 0xad, 0x9a, 0x27, 0xea, 0xd5, + 0xc2, 0x9d, 0xa2, 0x80, 0xe3, 0x88, 0x48, 0x1f, 0x8d, 0x98, 0xfc, 0x78, 0xeb, 0xc1, 0xed, 0x77, + 0x46, 0x4c, 0x9a, 0x95, 0xcc, 0x67, 0x92, 0x92, 0xf8, 0xe1, 0xd7, 0x45, 0xef, 0xc3, 0x5a, 0xea, + 0x07, 0x92, 0x86, 0x81, 0x90, 0xd4, 0xb5, 0x1c, 0x9f, 0x30, 0x46, 0x43, 0x51, 0x2f, 0xb6, 0x0a, + 0x9d, 0xb2, 0x59, 0xdd, 0x63, 0xc3, 0x2d, 0x1a, 0x8c, 0x17, 0x6b, 0x03, 0x2c, 0xd7, 0x06, 0xf8, + 0x5e, 0x1b, 0xe0, 0x75, 0x63, 0x68, 0xcb, 0x8d, 0xa1, 0x7d, 0x6e, 0x0c, 0xed, 0xf1, 0xca, 0x0b, + 0xa4, 0x3f, 0xb3, 0x91, 0xc3, 0x23, 0x3c, 0xcc, 0x62, 0xe9, 0x8d, 0xa9, 0x4c, 0x79, 0x32, 0x55, + 0x15, 0x9e, 0x5f, 0xe3, 0xe7, 0xfd, 0x9d, 0xc9, 0x97, 0x98, 0x0a, 0xbb, 0x94, 0x27, 0x7d, 0xf9, + 0x13, 0x00, 0x00, 0xff, 0xff, 0x29, 0xb4, 0xa8, 0xe9, 0xd4, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/onboarding/types/query.pb.go b/x/onboarding/types/query.pb.go index d1c1eed50..9121fa8da 100644 --- a/x/onboarding/types/query.pb.go +++ b/x/onboarding/types/query.pb.go @@ -6,9 +6,9 @@ package types import ( context "context" fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - // grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" diff --git a/x/onboarding/types/query.pb.gw.go b/x/onboarding/types/query.pb.gw.go index 3361adca5..5e69dae4e 100644 --- a/x/onboarding/types/query.pb.gw.go +++ b/x/onboarding/types/query.pb.gw.go @@ -20,6 +20,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" ) @@ -30,6 +31,7 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +var _ = metadata.Join func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryParamsRequest @@ -52,12 +54,14 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) if err != nil { @@ -65,6 +69,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) From 0e79cef271e09efe1abd7480e2d1d4c5255caa61 Mon Sep 17 00:00:00 2001 From: poorphd Date: Tue, 5 Dec 2023 15:23:45 +0900 Subject: [PATCH 03/96] fix: simulation for coinswap module --- x/coinswap/handler.go | 3 +- x/coinswap/keeper/keeper.go | 5 +-- x/coinswap/module.go | 12 +++---- x/coinswap/simulation/operations.go | 49 ++++++++++++++++------------- x/coinswap/simulation/params.go | 7 ++--- 5 files changed, 41 insertions(+), 35 deletions(-) diff --git a/x/coinswap/handler.go b/x/coinswap/handler.go index e2bcf3195..34c4a760f 100644 --- a/x/coinswap/handler.go +++ b/x/coinswap/handler.go @@ -2,6 +2,7 @@ package coinswap import ( errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -10,7 +11,7 @@ import ( ) // NewHandler returns a handler for all "coinswap" type messages. -func NewHandler(k keeper.Keeper) sdk.Handler { +func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { msgServer := keeper.NewMsgServerImpl(k) return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { diff --git a/x/coinswap/keeper/keeper.go b/x/coinswap/keeper/keeper.go index e67d65c1b..32517f496 100644 --- a/x/coinswap/keeper/keeper.go +++ b/x/coinswap/keeper/keeper.go @@ -4,6 +4,7 @@ import ( "fmt" "strconv" + storetypes "cosmossdk.io/store/types" gogotypes "github.com/gogo/protobuf/types" errorsmod "cosmossdk.io/errors" @@ -19,7 +20,7 @@ import ( // Keeper of the coinswap store type Keeper struct { cdc codec.BinaryCodec - storeKey sdk.StoreKey + storeKey storetypes.StoreKey bk types.BankKeeper ak types.AccountKeeper paramSpace paramstypes.Subspace @@ -33,7 +34,7 @@ type Keeper struct { // - sending to and from ModuleAccounts func NewKeeper( cdc codec.BinaryCodec, - key sdk.StoreKey, + key storetypes.StoreKey, paramSpace paramstypes.Subspace, bk types.BankKeeper, ak types.AccountKeeper, diff --git a/x/coinswap/module.go b/x/coinswap/module.go index 850acfe8b..b2e20af85 100644 --- a/x/coinswap/module.go +++ b/x/coinswap/module.go @@ -6,7 +6,6 @@ import ( "fmt" "math/rand" - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -60,9 +59,9 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod } // RegisterRESTRoutes registers the REST routes for the coinswap module. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { - rest.RegisterHandlers(clientCtx, rtr) -} +//func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { +// rest.RegisterHandlers(clientCtx, rtr) +//} // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the coinswap module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { @@ -159,13 +158,12 @@ func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.We } // RandomizedParams creates randomized coinswap param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { +func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.LegacyParamChange { return simulation.ParamChanges(r) } // RegisterStoreDecoder registers a decoder for coinswap module's types -func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { - +func (am AppModule) RegisterStoreDecoder(sdr simtypes.StoreDecoderRegistry) { } // WeightedOperations returns the all the coinswap module operations with their respective weights. diff --git a/x/coinswap/simulation/operations.go b/x/coinswap/simulation/operations.go index 90a0d5cc1..1bf584964 100644 --- a/x/coinswap/simulation/operations.go +++ b/x/coinswap/simulation/operations.go @@ -7,15 +7,16 @@ import ( "time" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" simappparams "cosmossdk.io/simapp/params" + "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" + "github.com/Canto-Network/Canto/v7/x/coinswap/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - - "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" - "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) // Simulation operation weights constants @@ -39,21 +40,21 @@ func WeightedOperations( ) appParams.GetOrGenerate( - cdc, OpWeightMsgSwapOrder, &weightSwap, nil, + OpWeightMsgSwapOrder, &weightSwap, nil, func(_ *rand.Rand) { weightSwap = 50 }, ) appParams.GetOrGenerate( - cdc, OpWeightMsgAddLiquidity, &weightAdd, nil, + OpWeightMsgAddLiquidity, &weightAdd, nil, func(_ *rand.Rand) { weightAdd = 100 }, ) appParams.GetOrGenerate( - cdc, OpWeightMsgRemoveLiquidity, &weightRemove, nil, + OpWeightMsgRemoveLiquidity, &weightRemove, nil, func(_ *rand.Rand) { weightRemove = 30 }, @@ -153,7 +154,9 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B ) var fees sdk.Coins - coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoins(sdk.NewCoin(standardDenom, exactStandardAmt), maxToken)) + coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoin(standardDenom, exactStandardAmt)) + coinsTemp, hasNeg = coinsTemp.SafeSub(maxToken) + if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { @@ -163,11 +166,12 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenTx( + tx, err := simtestutil.GenSignedMockTx( + r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -178,11 +182,11 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err } - if _, _, err := app.Deliver(txGen.TxEncoder(), tx); err != nil { + if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil + return simtypes.NewOperationMsg(msg, true, ""), nil, nil } } @@ -304,7 +308,7 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank ) var fees sdk.Coins - coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoins(sdk.NewCoin(inputCoin.Denom, inputCoin.Amount))) + coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoin(inputCoin.Denom, inputCoin.Amount)) if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { @@ -313,11 +317,12 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank } txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenTx( + tx, err := simtestutil.GenSignedMockTx( + r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -328,11 +333,11 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err } - if _, _, err := app.Deliver(txGen.TxEncoder(), tx); err != nil { + if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil + return simtypes.NewOperationMsg(msg, true, ""), nil, nil } } @@ -407,7 +412,8 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type ) var fees sdk.Coins - coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoins(sdk.NewCoin(pool.CounterpartyDenom, minToken), sdk.NewCoin(standardDenom, minStandardAmt))) + coinsTemp, hasNeg := spendable.SafeSub(sdk.NewCoin(pool.CounterpartyDenom, minToken)) + coinsTemp, hasNeg = coinsTemp.SafeSub(sdk.NewCoin(standardDenom, minStandardAmt)) if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { @@ -417,11 +423,12 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type txGen := simappparams.MakeTestEncodingConfig().TxConfig - tx, err := helpers.GenTx( + tx, err := simtestutil.GenSignedMockTx( + r, txGen, []sdk.Msg{msg}, fees, - helpers.DefaultGenTxGas, + simtestutil.DefaultGenTxGas, chainID, []uint64{account.GetAccountNumber()}, []uint64{account.GetSequence()}, @@ -432,11 +439,11 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err } - if _, _, err := app.Deliver(txGen.TxEncoder(), tx); err != nil { + if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, nil } - return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil + return simtypes.NewOperationMsg(msg, true, ""), nil, nil } } diff --git a/x/coinswap/simulation/params.go b/x/coinswap/simulation/params.go index 4d682e037..f5e8f815b 100644 --- a/x/coinswap/simulation/params.go +++ b/x/coinswap/simulation/params.go @@ -5,7 +5,6 @@ import ( "math/rand" sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -14,9 +13,9 @@ import ( // ParamChanges defines the parameters that can be modified by param change proposals // on the simulation -func ParamChanges(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{ - simulation.NewSimParamChange( +func ParamChanges(r *rand.Rand) []simtypes.LegacyParamChange { + return []simtypes.LegacyParamChange{ + simulation.NewSimLegacyParamChange( types.ModuleName, string(types.KeyFee), func(r *rand.Rand) string { return fmt.Sprintf("\"%s\"", sdkmath.LegacyNewDecWithPrec(r.Int63n(3), 3)) // 0.1%~0.3% From 5af5df3c62f95863a59641f1c6ebe451f658f578 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 6 Dec 2023 14:36:06 +0900 Subject: [PATCH 04/96] build: fix app --- app/ante/ante.go | 8 +- app/ante/handler_options.go | 71 +- app/ante/utils_test.go | 4 +- app/app.go | 968 ++++++++++++++++++--------- app/app_test.go | 31 +- app/export.go | 23 +- app/sigverify_test.go | 2 +- app/sim_test.go | 312 +++++---- app/test_helpers.go | 5 +- app/tps_counter.go | 3 +- app/tps_counter_test.go | 3 +- cmd/cantod/genaccounts.go | 6 +- cmd/cantod/init.go | 32 +- cmd/cantod/main.go | 13 +- cmd/cantod/root.go | 94 ++- cmd/cantod/testnet.go | 30 +- go.mod | 14 +- go.sum | 4 +- ibc/module.go | 2 +- x/coinswap/types/expected_keepers.go | 29 +- x/csr/types/interfaces.go | 6 +- x/govshuttle/types/interfaces.go | 10 +- x/inflation/types/interfaces.go | 19 +- x/onboarding/types/interfaces.go | 9 - 24 files changed, 1052 insertions(+), 646 deletions(-) diff --git a/app/ante/ante.go b/app/ante/ante.go index a41e5d85a..5406d2392 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -13,7 +13,11 @@ import ( // Ethereum or SDK transaction to an internal ante handler for performing // transaction-level processing (e.g. fee payment, signature verification) before // being passed onto it's respective handler. -func NewAnteHandler(options HandlerOptions) sdk.AnteHandler { +func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { + if err := options.Validate(); err != nil { + return nil, err + } + return func( ctx sdk.Context, tx sdk.Tx, sim bool, ) (newCtx sdk.Context, err error) { @@ -56,5 +60,5 @@ func NewAnteHandler(options HandlerOptions) sdk.AnteHandler { } return anteHandler(ctx, tx, sim) - } + }, nil } diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index c8a929abb..7c4b3fa86 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -3,37 +3,37 @@ package ante import ( errorsmod "cosmossdk.io/errors" storetypes "cosmossdk.io/store/types" + txsigning "cosmossdk.io/x/tx/signing" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/tx/signing" "github.com/cosmos/cosmos-sdk/x/auth/ante" - authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" ethante "github.com/evmos/ethermint/app/ante" evmtypes "github.com/evmos/ethermint/x/evm/types" - - cosmosante "github.com/Canto-Network/Canto/v7/app/ante/cosmos" - sdkvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" ) // HandlerOptions defines the list of module keepers required to run the canto // AnteHandler decorators. type HandlerOptions struct { - AccountKeeper evmtypes.AccountKeeper - BankKeeper evmtypes.BankKeeper - IBCKeeper *ibckeeper.Keeper - FeeMarketKeeper evmtypes.FeeMarketKeeper - EvmKeeper ethante.EVMKeeper - FeegrantKeeper ante.FeegrantKeeper - SignModeHandler authsigning.SignModeHandler - SigGasConsumer func(meter storetypes.GasMeter, sig signing.SignatureV2, params authtypes.Params) error - Cdc codec.BinaryCodec - MaxTxGasWanted uint64 - Simulation bool + AccountKeeper evmtypes.AccountKeeper + BankKeeper evmtypes.BankKeeper + IBCKeeper *ibckeeper.Keeper + FeeMarketKeeper ethante.FeeMarketKeeper + EvmKeeper ethante.EVMKeeper + FeegrantKeeper ante.FeegrantKeeper + SignModeHandler *txsigning.HandlerMap + SigGasConsumer func(meter storetypes.GasMeter, sig signing.SignatureV2, params authtypes.Params) error + Cdc codec.BinaryCodec + MaxTxGasWanted uint64 + Simulation bool + ExtensionOptionChecker ante.ExtensionOptionChecker + TxFeeChecker ante.TxFeeChecker + DisabledAuthzMsgs []string } // Validate checks if the keepers are defined @@ -76,19 +76,16 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler { return sdk.ChainAnteDecorators( ethante.RejectMessagesDecorator{}, // reject MsgEthereumTxs - cosmosante.NewAuthzLimiterDecorator( - sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}), - ), + // disable the Msg types that cannot be included on an authz.MsgExec msgs field + ethante.NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), ante.NewSetUpContextDecorator(), - ante.NewRejectExtensionOptionsDecorator(), + ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), ante.NewValidateBasicDecorator(), - ante.NewMempoolFeeDecorator(), ethante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper), ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), @@ -96,7 +93,7 @@ func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler { ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewAnteDecorator(options.IBCKeeper), + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper), ) } @@ -105,27 +102,24 @@ func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler { func newCosmosSimulationAnteHandler(options HandlerOptions) sdk.AnteHandler { return sdk.ChainAnteDecorators( ethante.RejectMessagesDecorator{}, // reject MsgEthereumTxs - cosmosante.NewAuthzLimiterDecorator( - sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}), - ), + // disable the Msg types that cannot be included on an authz.MsgExec msgs field + ethante.NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), ante.NewSetUpContextDecorator(), - ante.NewRejectExtensionOptionsDecorator(), + ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), ante.NewValidateBasicDecorator(), - ante.NewMempoolFeeDecorator(), ethante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper), ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), // NewParamChangeLimitDecorator(options.SlashingKeeper, options.Cdc), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), // NewValidatorCommissionDecorator(options.Cdc), //ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), //ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), //ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewAnteDecorator(options.IBCKeeper), + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper), ) } @@ -134,27 +128,24 @@ func newCosmosSimulationAnteHandler(options HandlerOptions) sdk.AnteHandler { func newCosmosAnteHandlerEip712(options HandlerOptions) sdk.AnteHandler { return sdk.ChainAnteDecorators( ethante.RejectMessagesDecorator{}, // reject MsgEthereumTxs - cosmosante.NewAuthzLimiterDecorator( - sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - sdk.MsgTypeURL(&sdkvesting.MsgCreateVestingAccount{}), - ), + // disable the Msg types that cannot be included on an authz.MsgExec msgs field + ethante.NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), ante.NewSetUpContextDecorator(), - ante.NewMempoolFeeDecorator(), ante.NewValidateBasicDecorator(), ethante.NewMinGasPriceDecorator(options.FeeMarketKeeper, options.EvmKeeper), ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), - NewValidatorCommissionDecorator(options.Cdc), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + NewValidatorCommissionDecorator(options.Cdc), // TODO(dudong2): canto's unique ante handler? // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), // Note: signature verification uses EIP instead of the cosmos signature validator - ethante.NewEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), + ethante.NewLegacyEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewAnteDecorator(options.IBCKeeper), + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), ethante.NewGasWantedDecorator(options.EvmKeeper, options.FeeMarketKeeper), ) } diff --git a/app/ante/utils_test.go b/app/ante/utils_test.go index 1f65d8e60..43b386316 100644 --- a/app/ante/utils_test.go +++ b/app/ante/utils_test.go @@ -106,7 +106,7 @@ func (suite *AnteTestSuite) CommitAfter(t time.Duration) { } func (s *AnteTestSuite) CreateTestTxBuilder(gasPrice sdkmath.Int, denom string, msgs ...sdk.Msg) client.TxBuilder { - encodingConfig := encoding.MakeConfig(app.ModuleBasics) + encodingConfig := encoding.MakeTestEncodingConfig() gasLimit := uint64(1000000) txBuilder := encodingConfig.TxConfig.NewTxBuilder() @@ -120,7 +120,7 @@ func (s *AnteTestSuite) CreateTestTxBuilder(gasPrice sdkmath.Int, denom string, } func (s *AnteTestSuite) CreateEthTestTxBuilder(msgEthereumTx *evmtypes.MsgEthereumTx) client.TxBuilder { - encodingConfig := encoding.MakeConfig(app.ModuleBasics) + encodingConfig := encoding.MakeTestEncodingConfig() option, err := codectypes.NewAnyWithValue(&evmtypes.ExtensionOptionsEthereumTx{}) s.Require().NoError(err) diff --git a/app/app.go b/app/app.go index 64bb9ff77..f1bb0bb8d 100644 --- a/app/app.go +++ b/app/app.go @@ -9,42 +9,67 @@ import ( "os" "path/filepath" + "github.com/cosmos/gogoproto/proto" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" + protov2 "google.golang.org/protobuf/proto" abci "github.com/cometbft/cometbft/abci/types" tmos "github.com/cometbft/cometbft/libs/os" dbm "github.com/cosmos/cosmos-db" + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" + runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" + + "cosmossdk.io/client/v2/autocli" + "cosmossdk.io/core/appmodule" "cosmossdk.io/log" + sdkmath "cosmossdk.io/math" "cosmossdk.io/simapp" simappparams "cosmossdk.io/simapp/params" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" - "github.com/cosmos/cosmos-sdk/client/rpc" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/server/api" - "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/circuit" + circuitkeeper "cosmossdk.io/x/circuit/keeper" + circuittypes "cosmossdk.io/x/circuit/types" "cosmossdk.io/x/evidence" evidencekeeper "cosmossdk.io/x/evidence/keeper" evidencetypes "cosmossdk.io/x/evidence/types" "cosmossdk.io/x/feegrant" feegrantkeeper "cosmossdk.io/x/feegrant/keeper" feegrantmodule "cosmossdk.io/x/feegrant/module" + "cosmossdk.io/x/nft" + nftkeeper "cosmossdk.io/x/nft/keeper" + nftmodule "cosmossdk.io/x/nft/module" + "cosmossdk.io/x/tx/signing" "cosmossdk.io/x/upgrade" upgradekeeper "cosmossdk.io/x/upgrade/keeper" upgradetypes "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" + "github.com/cosmos/cosmos-sdk/client/grpc/node" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/server" + "github.com/cosmos/cosmos-sdk/server/api" + "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + testdata_pulsar "github.com/cosmos/cosmos-sdk/testutil/testdata/testpb" sdk "github.com/cosmos/cosmos-sdk/types" + mempool "github.com/cosmos/cosmos-sdk/types/mempool" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/types/msgservice" "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/auth" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/posthandler" + authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/authz" @@ -53,6 +78,9 @@ import ( "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/consensus" + consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" "github.com/cosmos/cosmos-sdk/x/crisis" crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" @@ -62,8 +90,14 @@ import ( "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" "github.com/cosmos/cosmos-sdk/x/gov" + govclient "github.com/cosmos/cosmos-sdk/x/gov/client" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/cosmos-sdk/x/group" + groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" + groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" @@ -79,24 +113,28 @@ import ( capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" // TODO(dudong2): need it? "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ibc "github.com/cosmos/ibc-go/v8/modules/core" - ibcclient "github.com/cosmos/ibc-go/v8/modules/core/02-client" - ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v8/modules/core/24-host" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" ibctesting "github.com/cosmos/ibc-go/v8/testing" + ibctestingtypes "github.com/cosmos/ibc-go/v8/testing/types" - ethermintapp "github.com/evmos/ethermint/app" - "github.com/evmos/ethermint/encoding" + evmv1 "github.com/evmos/ethermint/api/ethermint/evm/v1" + feemarketv1 "github.com/evmos/ethermint/api/ethermint/feemarket/v1" + ethante "github.com/evmos/ethermint/app/ante" + enccodec "github.com/evmos/ethermint/encoding/codec" + "github.com/evmos/ethermint/ethereum/eip712" srvflags "github.com/evmos/ethermint/server/flags" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm" evmkeeper "github.com/evmos/ethermint/x/evm/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/evmos/ethermint/x/evm/vm/geth" "github.com/evmos/ethermint/x/feemarket" feemarketkeeper "github.com/evmos/ethermint/x/feemarket/keeper" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -109,7 +147,6 @@ import ( epochskeeper "github.com/Canto-Network/Canto/v7/x/epochs/keeper" epochstypes "github.com/Canto-Network/Canto/v7/x/epochs/types" "github.com/Canto-Network/Canto/v7/x/erc20" - erc20client "github.com/Canto-Network/Canto/v7/x/erc20/client" erc20keeper "github.com/Canto-Network/Canto/v7/x/erc20/keeper" erc20types "github.com/Canto-Network/Canto/v7/x/erc20/types" @@ -122,7 +159,6 @@ import ( //govshuttle imports "github.com/Canto-Network/Canto/v7/x/govshuttle" - govshuttleclient "github.com/Canto-Network/Canto/v7/x/govshuttle/client" govshuttlekeeper "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" govshuttletypes "github.com/Canto-Network/Canto/v7/x/govshuttle/types" @@ -142,21 +178,6 @@ import ( v7 "github.com/Canto-Network/Canto/v7/app/upgrades/v7" ) -func init() { - userHomeDir, err := os.UserHomeDir() - if err != nil { - panic(err) - } - - DefaultNodeHome = filepath.Join(userHomeDir, ".cantod") - - // manually update the power reduction by replacing micro (u) -> atto (a) Canto - sdk.DefaultPowerReduction = ethermint.PowerReduction - // modify fee market parameter defaults through global - feemarkettypes.DefaultMinGasPrice = sdkmath.LegacyNewDec(20_000_000_000) - feemarkettypes.DefaultMinGasMultiplier = sdkmath.LegacyNewDecWithPrec(5, 1) -} - // Name defines the application binary name const Name = "cantod" @@ -164,44 +185,6 @@ var ( // DefaultNodeHome default home directories for the application daemon DefaultNodeHome string - // ModuleBasics defines the module BasicManager is in charge of setting up basic, - // non-dependant module elements, such as codec registration - // and genesis verification. - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - genutil.AppModuleBasic{}, - bank.AppModuleBasic{}, - capability.AppModuleBasic{}, - staking.AppModuleBasic{}, - distr.AppModuleBasic{}, - gov.NewAppModuleBasic( - paramsclient.ProposalHandler, /* distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler - ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler - // Canto proposal types - erc20client.RegisterCoinProposalHandler, erc20client.RegisterERC20ProposalHandler, erc20client.ToggleTokenConversionProposalHandler, - govshuttleclient.LendingMarketProposalHandler, - govshuttleclient.TreasuryProposalHandler, */ // TODO(dudong2) - ), - params.AppModuleBasic{}, - crisis.AppModuleBasic{}, - slashing.AppModuleBasic{}, - ibc.AppModuleBasic{}, - authzmodule.AppModuleBasic{}, - feegrantmodule.AppModuleBasic{}, - upgrade.AppModuleBasic{}, - evidence.AppModuleBasic{}, - transfer.AppModuleBasic{}, - evm.AppModuleBasic{}, - feemarket.AppModuleBasic{}, - inflation.AppModuleBasic{}, - erc20.AppModuleBasic{}, - govshuttle.AppModuleBasic{}, - csr.AppModuleBasic{}, - epochs.AppModuleBasic{}, - onboarding.AppModuleBasic{}, - coinswap.AppModuleBasic{}, - ) - // module account permissions maccPerms = map[string][]string{ authtypes.FeeCollectorName: nil, @@ -217,6 +200,7 @@ var ( govshuttletypes.ModuleName: {authtypes.Minter, authtypes.Burner}, onboardingtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, coinswaptypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + nft.ModuleName: nil, } // module accounts that are allowed to receive tokens @@ -226,8 +210,8 @@ var ( ) var ( + _ runtime.AppI = (*Canto)(nil) _ servertypes.Application = (*Canto)(nil) - _ simapp.App = (*Canto)(nil) _ ibctesting.TestingApp = (*Canto)(nil) ) @@ -236,35 +220,37 @@ var ( // Tendermint consensus. type Canto struct { *baseapp.BaseApp - - // encoding - cdc *codec.LegacyAmino + legacyAmino *codec.LegacyAmino appCodec codec.Codec + txConfig client.TxConfig interfaceRegistry types.InterfaceRegistry - invCheckPeriod uint - // keys to access the substores - keys map[string]*sdk.KVStoreKey - tkeys map[string]*sdk.TransientStoreKey - memKeys map[string]*sdk.MemoryStoreKey + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + memKeys map[string]*storetypes.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper - UpgradeKeeper upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - AuthzKeeper authzkeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - EvidenceKeeper evidencekeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper *crisiskeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + AuthzKeeper authzkeeper.Keeper + EvidenceKeeper evidencekeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + GroupKeeper groupkeeper.Keeper + NFTKeeper nftkeeper.Keeper + ConsensusParamsKeeper consensusparamkeeper.Keeper + CircuitKeeper circuitkeeper.Keeper + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + IBCFeeKeeper ibcfeekeeper.Keeper // TODO(dudong2): need it? + TransferKeeper ibctransferkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper // make scoped keepers public for test purposes ScopedIBCKeeper capabilitykeeper.ScopedKeeper @@ -286,7 +272,8 @@ type Canto struct { CoinswapKeeper coinswapkeeper.Keeper // the module manager - mm *module.Manager + ModuleManager *module.Manager + BasicModuleManager module.BasicManager // simulation manager sm *module.SimulationManager @@ -297,6 +284,21 @@ type Canto struct { tpsCounter *tpsCounter } +func init() { + userHomeDir, err := os.UserHomeDir() + if err != nil { + panic(err) + } + + DefaultNodeHome = filepath.Join(userHomeDir, ".cantod") + + // manually update the power reduction by replacing micro (u) -> atto (a) Canto + sdk.DefaultPowerReduction = ethermint.PowerReduction + // modify fee market parameter defaults through global + feemarkettypes.DefaultMinGasPrice = sdkmath.LegacyNewDec(20_000_000_000) + feemarkettypes.DefaultMinGasMultiplier = sdkmath.LegacyNewDecWithPrec(5, 1) +} + // NewCanto returns a reference to a new initialized Ethermint application. func NewCanto( logger log.Logger, @@ -307,35 +309,75 @@ func NewCanto( homePath string, invCheckPeriod uint, simulation bool, - encodingConfig simappparams.EncodingConfig, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *Canto { - appCodec := encodingConfig.Marshaler - cdc := encodingConfig.Amino - interfaceRegistry := encodingConfig.InterfaceRegistry + legacyAmino := codec.NewLegacyAmino() + signingOptions := signing.Options{ + AddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), + }, + ValidatorAddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + }, + } + + // evm/MsgEthereumTx, evm/MsgUpdateParams, feemarket/MsgUpdateParams + signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgEthereumTx{}), evmtypes.GetSignersFromMsgEthereumTxV2) + signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgUpdateParams{}), evmtypes.GetSignersFromMsgUpdateParamsV2) + signingOptions.DefineCustomGetSigners(protov2.MessageName(&feemarketv1.MsgUpdateParams{}), feemarkettypes.GetSignersFromMsgUpdateParamsV2) + + interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signingOptions, + }) + appCodec := codec.NewProtoCodec(interfaceRegistry) + txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes) + + encodingConfig := simappparams.EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Codec: appCodec, + TxConfig: authtx.NewTxConfig(appCodec, authtx.DefaultSignModes), + Amino: legacyAmino, + } + + enccodec.RegisterLegacyAminoCodec(legacyAmino) + enccodec.RegisterInterfaces(interfaceRegistry) + + eip712.SetEncodingConfig(encodingConfig) // TODO(dudong2) + + // create and set dummy vote extension handler + voteExtOp := func(bApp *baseapp.BaseApp) { + voteExtHandler := simapp.NewVoteExtensionHandler() + voteExtHandler.SetHandlers(bApp) + } + baseAppOptions = append(baseAppOptions, voteExtOp, baseapp.SetOptimisticExecution()) // NOTE we use custom transaction decoder that supports the sdk.Tx interface instead of sdk.StdTx - bApp := baseapp.NewBaseApp( - Name, - logger, - db, - encodingConfig.TxConfig.TxDecoder(), - baseAppOptions..., - ) + // Setup Mempool and Proposal Handlers + baseAppOptions = append(baseAppOptions, func(app *baseapp.BaseApp) { + mempool := mempool.NoOpMempool{} + app.SetMempool(mempool) + handler := baseapp.NewDefaultProposalHandler(mempool, app) + app.SetPrepareProposal(handler.PrepareProposalHandler()) + app.SetProcessProposal(handler.ProcessProposalHandler()) + }) + + bApp := baseapp.NewBaseApp(Name, logger, db, txConfig.TxDecoder(), baseAppOptions...) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetVersion(version.Version) bApp.SetInterfaceRegistry(interfaceRegistry) + bApp.SetTxEncoder(txConfig.TxEncoder()) - keys := sdk.NewKVStoreKeys( + keys := storetypes.NewKVStoreKeys( // TODO(dudong2): add other store keys // SDK keys authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, - evidencetypes.StoreKey, capabilitytypes.StoreKey, + evidencetypes.StoreKey, feegrant.StoreKey, authzkeeper.StoreKey, // ibc keys - ibchost.StoreKey, ibctransfertypes.StoreKey, + ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, // ethermint keys evmtypes.StoreKey, feemarkettypes.StoreKey, // Canto keys @@ -348,30 +390,41 @@ func NewCanto( coinswaptypes.StoreKey, ) - // Add the EVM transient store key - tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey) - memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) + // register streaming services + if err := bApp.RegisterStreamingServices(appOpts, keys); err != nil { + panic(err) + } + // Add the EVM transient store key + tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey) + memKeys := storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) app := &Canto{ BaseApp: bApp, - cdc: cdc, + legacyAmino: legacyAmino, appCodec: appCodec, + txConfig: txConfig, interfaceRegistry: interfaceRegistry, - invCheckPeriod: invCheckPeriod, keys: keys, tkeys: tkeys, memKeys: memKeys, } // init params keeper and subspaces - app.ParamsKeeper = initParamsKeeper(appCodec, cdc, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + // set the BaseApp's parameter store - bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramskeeper.ConsensusParamsKeyTable())) + app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + runtime.EventService{}, + ) + bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore) // add capability keeper and ScopeToModule for ibc module app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) - scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) + scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating @@ -380,47 +433,214 @@ func NewCanto( // use custom Ethermint account for contracts app.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), ethermint.ProtoAccount, maccPerms, + appCodec, + runtime.NewKVStoreService(keys[authtypes.StoreKey]), + ethermint.ProtoAccount, + maccPerms, + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + sdk.Bech32MainPrefix, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.BlockedAddrs(), + appCodec, + runtime.NewKVStoreService(keys[banktypes.StoreKey]), + app.AccountKeeper, + app.BlockedAddrs(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + logger, ) + + // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper) + // enabledSignModes := append(tx.DefaultSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL) + // txConfigOpts := tx.ConfigOptions{ + // EnabledSignModes: enabledSignModes, + // TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper), + // } + // txConfig, err := tx.NewTxConfigWithOptions( + // appCodec, + // txConfigOpts, + // ) + // if err != nil { + // panic(err) + // } + // app.txConfig = txConfig + stakingKeeper := stakingkeeper.NewKeeper( - appCodec, keys[stakingtypes.StoreKey], app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName), + appCodec, + runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), + app.AccountKeeper, + app.BankKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), ) + // TODO(dudong2): MintKeeper app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, keys[distrtypes.StoreKey], app.GetSubspace(distrtypes.ModuleName), app.AccountKeeper, app.BankKeeper, - &stakingKeeper, authtypes.FeeCollectorName, app.ModuleAccountAddrs(), + appCodec, + runtime.NewKVStoreService(keys[distrtypes.StoreKey]), + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, keys[slashingtypes.StoreKey], &stakingKeeper, app.GetSubspace(slashingtypes.ModuleName), + appCodec, + legacyAmino, + runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), + app.StakingKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), invCheckPeriod, app.BankKeeper, authtypes.FeeCollectorName, + appCodec, + runtime.NewKVStoreService(keys[crisistypes.StoreKey]), + invCheckPeriod, + app.BankKeeper, + authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + app.AccountKeeper.AddressCodec(), + ) + app.FeeGrantKeeper = feegrantkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[feegrant.StoreKey]), + app.AccountKeeper, + ) + + // register the staking hooks + // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks + // NOTE: Distr, Slashing and Claim must be created before calling the Hooks method to avoid returning a Keeper without its table generated + app.StakingKeeper.SetHooks( + stakingtypes.NewMultiStakingHooks( + app.DistrKeeper.Hooks(), + app.SlashingKeeper.Hooks(), + ), ) - app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) - app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp) - app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.BaseApp.MsgServiceRouter()) + app.CircuitKeeper = circuitkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[circuittypes.StoreKey]), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + app.AccountKeeper.AddressCodec(), + ) + app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper) - tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer)) + app.AuthzKeeper = authzkeeper.NewKeeper( + runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), + appCodec, + app.MsgServiceRouter(), + app.AccountKeeper, + ) - // Create Ethermint keepers - app.FeeMarketKeeper = feemarketkeeper.NewKeeper( - appCodec, app.GetSubspace(feemarkettypes.ModuleName), keys[feemarkettypes.StoreKey], tkeys[feemarkettypes.TransientKey], + groupConfig := group.DefaultConfig() + /* + Example of setting group params: + groupConfig.MaxMetadataLen = 1000 + */ + app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig) + + // set the governance module account as the authority for conducting upgrades + app.UpgradeKeeper = upgradekeeper.NewKeeper( + skipUpgradeHeights, + runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), + appCodec, + homePath, + app.BaseApp, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - app.EvmKeeper = evmkeeper.NewKeeper( - appCodec, keys[evmtypes.StoreKey], tkeys[evmtypes.TransientKey], app.GetSubspace(evmtypes.ModuleName), - app.AccountKeeper, app.BankKeeper, &stakingKeeper, app.FeeMarketKeeper, - tracer, + // register the proposal types + govRouter := govv1beta1.NewRouter() + govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)) + govConfig := govtypes.DefaultConfig() + /* + Example of setting gov params: + govConfig.MaxMetadataLen = 10000 + */ + govKeeper := govkeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[govtypes.StoreKey]), + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.DistrKeeper, + app.MsgServiceRouter(), + govConfig, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + // Set legacy router for backwards compatibility with gov v1beta1 + govKeeper.SetLegacyRouter(govRouter) + + app.GovKeeper = *govKeeper.SetHooks( + govtypes.NewMultiGovHooks( + // register the governance hooks + ), + ) + + app.NFTKeeper = nftkeeper.NewKeeper( + runtime.NewKVStoreService(keys[nftkeeper.StoreKey]), + appCodec, + app.AccountKeeper, + app.BankKeeper, + ) + + // create evidence keeper with router + evidenceKeeper := evidencekeeper.NewKeeper( + appCodec, + runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), + app.StakingKeeper, + app.SlashingKeeper, + app.AccountKeeper.AddressCodec(), + runtime.ProvideCometInfoService(), + ) + // If evidence needs to be handled for the app, set routes in router here and seal + app.EvidenceKeeper = *evidenceKeeper + // Create IBC Keeper app.IBCKeeper = ibckeeper.NewKeeper( - appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), &stakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, + appCodec, + keys[ibcexported.StoreKey], + app.GetSubspace(ibcexported.ModuleName), + app.StakingKeeper, + app.UpgradeKeeper, + scopedIBCKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) + // Create Transfer Keepers + app.TransferKeeper = ibctransferkeeper.NewKeeper( + appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), + app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware // TODO(dudong2) + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, + app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + transferModule := transfer.NewAppModule(app.TransferKeeper) + transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) + + // Create static IBC router, add transfer route, then set and seal it + ibcRouter := porttypes.NewRouter() + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) + app.IBCKeeper.SetRouter(ibcRouter) + + // Create Ethermint keepers + feeMarketSs := app.GetSubspace(feemarkettypes.ModuleName) + app.FeeMarketKeeper = feemarketkeeper.NewKeeper( + appCodec, authtypes.NewModuleAddress(govtypes.ModuleName), + runtime.NewKVStoreService(keys[feemarkettypes.StoreKey]), tkeys[feemarkettypes.TransientKey], feeMarketSs, + ) + + // Set authority to x/gov module account to only expect the module account to update params + tracer := cast.ToString(appOpts.Get(srvflags.EVMTracer)) + evmSs := app.GetSubspace(evmtypes.ModuleName) + app.EvmKeeper = evmkeeper.NewKeeper( + appCodec, runtime.NewKVStoreService(keys[evmtypes.StoreKey]), tkeys[evmtypes.TransientKey], authtypes.NewModuleAddress(govtypes.ModuleName), + app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.FeeMarketKeeper, + nil, geth.NewEVM, tracer, evmSs, + ) + + // Canto Keeper app.CoinswapKeeper = coinswapkeeper.NewKeeper( appCodec, keys[coinswaptypes.ModuleName], @@ -431,56 +651,49 @@ func NewCanto( authtypes.FeeCollectorName, ) - // register the proposal types - govRouter := govtypes.NewRouter() - govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler). - AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). - AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). - AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)). - AddRoute(erc20types.RouterKey, erc20.NewErc20ProposalHandler(&app.Erc20Keeper)). - AddRoute(govshuttletypes.RouterKey, govshuttle.NewgovshuttleProposalHandler(&app.GovshuttleKeeper)) - - govKeeper := govkeeper.NewKeeper( - appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), - app.AccountKeeper, app.BankKeeper, &stakingKeeper, govRouter, - ) - - // Canto Keeper app.InflationKeeper = inflationkeeper.NewKeeper( - keys[inflationtypes.StoreKey], appCodec, app.GetSubspace(inflationtypes.ModuleName), - app.AccountKeeper, app.BankKeeper, app.DistrKeeper, &stakingKeeper, + keys[inflationtypes.StoreKey], + appCodec, + app.GetSubspace(inflationtypes.ModuleName), + app.AccountKeeper, + app.BankKeeper, + app.DistrKeeper, + stakingKeeper, authtypes.FeeCollectorName, ) - // register the staking hooks - // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - // NOTE: Distr, Slashing and Claim must be created before calling the Hooks method to avoid returning a Keeper without its table generated - app.StakingKeeper = *stakingKeeper.SetHooks( - stakingtypes.NewMultiStakingHooks( - app.DistrKeeper.Hooks(), - app.SlashingKeeper.Hooks(), - ), - ) - app.Erc20Keeper = erc20keeper.NewKeeper( - keys[erc20types.StoreKey], appCodec, app.GetSubspace(erc20types.ModuleName), - app.AccountKeeper, app.BankKeeper, app.EvmKeeper, + keys[erc20types.StoreKey], + appCodec, + app.GetSubspace(erc20types.ModuleName), + app.AccountKeeper, + app.BankKeeper, + app.EvmKeeper, ) app.GovshuttleKeeper = govshuttlekeeper.NewKeeper( - keys[govshuttletypes.StoreKey], appCodec, app.GetSubspace(govshuttletypes.ModuleName), - app.AccountKeeper, app.Erc20Keeper, govKeeper, + keys[govshuttletypes.StoreKey], + appCodec, + app.GetSubspace(govshuttletypes.ModuleName), + app.AccountKeeper, + app.Erc20Keeper, + govKeeper, ) app.CSRKeeper = csrkeeper.NewKeeper( - appCodec, keys[csrtypes.StoreKey], + appCodec, + keys[csrtypes.StoreKey], app.GetSubspace(csrtypes.ModuleName), - app.AccountKeeper, app.EvmKeeper, app.BankKeeper, + app.AccountKeeper, + app.EvmKeeper, + app.BankKeeper, authtypes.FeeCollectorName, ) - epochsKeeper := epochskeeper.NewKeeper(appCodec, keys[epochstypes.StoreKey]) + epochsKeeper := epochskeeper.NewKeeper( + appCodec, + keys[epochstypes.StoreKey], + ) app.EpochsKeeper = *epochsKeeper.SetHooks( epochskeeper.NewMultiEpochHooks( // insert epoch hooks receivers here @@ -488,12 +701,6 @@ func NewCanto( ), ) - app.GovKeeper = *govKeeper.SetHooks( - govtypes.NewMultiGovHooks( - //insert Gov hooks here - ), - ) - app.EvmKeeper = app.EvmKeeper.SetHooks( evmkeeper.NewMultiEvmHooks( app.Erc20Keeper.Hooks(), @@ -518,22 +725,12 @@ func NewCanto( app.CoinswapKeeper, app.Erc20Keeper, ) - - app.TransferKeeper = ibctransferkeeper.NewKeeper( - appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), app.OnboardingKeeper, - app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, - app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, - ) - app.OnboardingKeeper.SetTransferKeeper(app.TransferKeeper) // Set the ICS4 wrappers for onboarding middlewares app.OnboardingKeeper.SetICS4Wrapper(app.IBCKeeper.ChannelKeeper) // NOTE: ICS4 wrapper for Transfer Keeper already set - // Override the ICS20 app module - transferModule := transfer.NewAppModule(app.TransferKeeper) - // transfer stack contains (from top to bottom): // - Onboarding Middleware // - Transfer @@ -544,18 +741,6 @@ func NewCanto( transferStack = transfer.NewIBCModule(app.TransferKeeper) transferStack = onboarding.NewIBCMiddleware(*app.OnboardingKeeper, transferStack) - // Create static IBC router, add transfer route, then set and seal it - ibcRouter := porttypes.NewRouter() - ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) - app.IBCKeeper.SetRouter(ibcRouter) - - // create evidence keeper with router - evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, keys[evidencetypes.StoreKey], &app.StakingKeeper, app.SlashingKeeper, - ) - // If evidence needs to be handled for the app, set routes in router here and seal - app.EvidenceKeeper = *evidenceKeeper - /**** Module Options ****/ // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment @@ -564,34 +749,50 @@ func NewCanto( // NOTE: Any module instantiated in the module manager that is later modified // must be passed by reference here. - app.mm = module.NewManager( + app.ModuleManager = module.NewManager( // SDK app modules genutil.NewAppModule( - app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, - encodingConfig.TxConfig, + app.AccountKeeper, app.StakingKeeper, app, + txConfig, ), - auth.NewAppModule(appCodec, app.AccountKeeper, ethermintapp.RandomGenesisAccounts), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), - capability.NewAppModule(appCodec, *app.CapabilityKeeper), - crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), - gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), - upgrade.NewAppModule(app.UpgradeKeeper), + auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + // vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), // TODO(dudong2) + bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), + feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), + gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + // mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), // TODO(dudong2) + slashing.NewAppModule( + appCodec, + app.SlashingKeeper, + app.AccountKeeper, + app.BankKeeper, + app.StakingKeeper, + app.GetSubspace(slashingtypes.ModuleName), + app.interfaceRegistry, + ), + distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()), evidence.NewAppModule(app.EvidenceKeeper), params.NewAppModule(app.ParamsKeeper), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + circuit.NewAppModule(appCodec, app.CircuitKeeper), // ibc modules ibc.NewAppModule(app.IBCKeeper), transferModule, + capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + // Ethermint app modules - evm.NewAppModule(app.EvmKeeper, app.AccountKeeper), - feemarket.NewAppModule(app.FeeMarketKeeper), + evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, evmSs), + feemarket.NewAppModule(app.FeeMarketKeeper, feeMarketSs), + // Canto app modules - inflation.NewAppModule(app.InflationKeeper, app.AccountKeeper, app.StakingKeeper), + inflation.NewAppModule(app.InflationKeeper, app.AccountKeeper, *app.StakingKeeper), erc20.NewAppModule(app.Erc20Keeper, app.AccountKeeper), epochs.NewAppModule(appCodec, app.EpochsKeeper), onboarding.NewAppModule(*app.OnboardingKeeper), @@ -600,13 +801,34 @@ func NewCanto( coinswap.NewAppModule(appCodec, app.CoinswapKeeper, app.AccountKeeper, app.BankKeeper), ) + // BasicModuleManager defines the module BasicManager is in charge of setting up basic, + // non-dependant module elements, such as codec registration and genesis verification. + // By default it is composed of all the module from the module manager. + // Additionally, app module basics can be overwritten by passing them as argument. + app.BasicModuleManager = module.NewBasicManagerFromManager( + app.ModuleManager, + map[string]module.AppModuleBasic{ + genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + govtypes.ModuleName: gov.NewAppModuleBasic( + []govclient.ProposalHandler{ + paramsclient.ProposalHandler, + }, + ), + }) + app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino) + app.BasicModuleManager.RegisterInterfaces(interfaceRegistry) + + // NOTE: upgrade module is required to be prioritized + app.ModuleManager.SetOrderPreBlockers( + upgradetypes.ModuleName, + ) // During begin block slashing happens after distr.BeginBlocker so that // there is nothing left over in the validator fee pool, so as to keep the // CanWithdrawInvariant invariant. // NOTE: upgrade module must go first to handle software upgrades. // NOTE: staking module is required if HistoricalEntries param > 0. // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) - app.mm.SetOrderBeginBlockers( + app.ModuleManager.SetOrderBeginBlockers( // TODO(dudong2): maybe remove no-op modules upgradetypes.ModuleName, capabilitytypes.ModuleName, // Note: epochs' begin should be "real" start of epochs, we keep epochs beginblock at the beginning @@ -617,7 +839,7 @@ func NewCanto( slashingtypes.ModuleName, evidencetypes.ModuleName, stakingtypes.ModuleName, - ibchost.ModuleName, + ibcexported.ModuleName, // no-op modules ibctransfertypes.ModuleName, authtypes.ModuleName, @@ -637,7 +859,7 @@ func NewCanto( ) // NOTE: fee market module must go last in order to retrieve the block gas used. - app.mm.SetOrderEndBlockers( + app.ModuleManager.SetOrderEndBlockers( crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, @@ -647,7 +869,7 @@ func NewCanto( epochstypes.ModuleName, onboardingtypes.ModuleName, // no-op modules - ibchost.ModuleName, + ibcexported.ModuleName, ibctransfertypes.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, @@ -673,7 +895,7 @@ func NewCanto( // NOTE: Capability module must occur first so that it can initialize any capabilities // so that other modules that want to create or claim capabilities afterwards in InitChain // can do so safely. - app.mm.SetOrderInitGenesis( + genesisModuleOrder := []string{ // SDK modules capabilitytypes.ModuleName, authtypes.ModuleName, @@ -683,11 +905,11 @@ func NewCanto( stakingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, - ibchost.ModuleName, - // Ethermint modules - // evm module denomination is used by the fees module, in AnteHandle + // minttypes.ModuleName, // TODO(dudong2) + ibcexported.ModuleName, + // evm module denomination is used by the feemarket module, in AnteHandle evmtypes.ModuleName, - // NOTE: feemarket module needs to be initialized before genutil module: + // NOTE: feemarket need to be initialized before genutil module: // gentx transactions use MinGasPriceDecorator.AnteHandle feemarkettypes.ModuleName, genutiltypes.ModuleName, @@ -695,8 +917,13 @@ func NewCanto( ibctransfertypes.ModuleName, authz.ModuleName, feegrant.ModuleName, + nft.ModuleName, + group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, + // vestingtypes.ModuleName, // TODO(dudong2) + consensusparamtypes.ModuleName, + circuittypes.ModuleName, // Canto modules inflationtypes.ModuleName, erc20types.ModuleName, @@ -707,47 +934,43 @@ func NewCanto( coinswaptypes.ModuleName, // NOTE: crisis module must go at the end to check for invariants on each module crisistypes.ModuleName, - ) + } + app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...) + app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...) + + // Uncomment if you want to set a custom migration order here. + // app.ModuleManager.SetOrderMigrations(custom order) - app.mm.RegisterInvariants(&app.CrisisKeeper) - app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) + app.ModuleManager.RegisterInvariants(app.CrisisKeeper) app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) + err := app.ModuleManager.RegisterServices(app.configurator) + if err != nil { + panic(err) + } + + // RegisterUpgradeHandlers is used for registering any on-chain upgrades. + // Make sure it's called after `app.mm` and `app.configurator` are set. + // app.RegisterUpgradeHandlers(app.appCodec, app.IBCKeeper.ClientKeeper, app.ConsensusParamsKeeper) // TODO(dudong2): consider it + + autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) + + reflectionSvc, err := runtimeservices.NewReflectionService() + if err != nil { + panic(err) + } + reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) // add test gRPC service for testing gRPC queries in isolation - // testdata.RegisterTestServiceServer(app.GRPCQueryRouter(), testdata.TestServiceImpl{}) + testdata_pulsar.RegisterQueryServer(app.GRPCQueryRouter(), testdata_pulsar.QueryImpl{}) // create the simulation manager and define the order of the modules for deterministic simulations - + // // NOTE: this is not required apps that don't use the simulator for fuzz testing // transactions - app.sm = module.NewSimulationManager( - // basic sdk modules - auth.NewAppModule(appCodec, app.AccountKeeper, ethermintapp.RandomGenesisAccounts), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), - capability.NewAppModule(appCodec, *app.CapabilityKeeper), - gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - params.NewAppModule(app.ParamsKeeper), - evidence.NewAppModule(app.EvidenceKeeper), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - ibc.NewAppModule(app.IBCKeeper), - transferModule, - // TODO: Temporary exclusion authz due to issues with implementation of authz simulation - // authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - - // canto, ethermint modules - evm.NewAppModule(app.EvmKeeper, app.AccountKeeper), - epochs.NewAppModule(appCodec, app.EpochsKeeper), - inflation.NewAppModule(app.InflationKeeper, app.AccountKeeper, app.StakingKeeper), - feemarket.NewAppModule(app.FeeMarketKeeper), - coinswap.NewAppModule(appCodec, app.CoinswapKeeper, app.AccountKeeper, app.BankKeeper), - - // TODO: Modules that have not yet been implemented for simulation - // govshuttle, csr, inflation, erc20 - ) + overrideModules := map[string]module.AppModuleSimulation{ + authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + } + app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules) app.sm.RegisterStoreDecoders() @@ -759,6 +982,7 @@ func NewCanto( // initialize BaseApp app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) + app.SetPreBlocker(app.PreBlocker) maxGasWanted := cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted)) options := ante.HandlerOptions{ @@ -768,7 +992,7 @@ func NewCanto( FeegrantKeeper: app.FeeGrantKeeper, IBCKeeper: app.IBCKeeper, FeeMarketKeeper: app.FeeMarketKeeper, - SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), + SignModeHandler: txConfig.SignModeHandler(), SigGasConsumer: SigVerificationGasConsumer, Cdc: appCodec, MaxTxGasWanted: maxGasWanted, @@ -779,10 +1003,38 @@ func NewCanto( panic(err) } - app.SetAnteHandler(ante.NewAnteHandler(options)) app.SetEndBlocker(app.EndBlocker) + app.setAnteHandler(txConfig, cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted))) app.setupUpgradeHandlers() + // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like + // antehandlers, but are run _after_ the `runMsgs` execution. They are also + // defined as a chain, and have the same signature as antehandlers. + // + // In baseapp, postHandlers are run in the same store branch as `runMsgs`, + // meaning that both `runMsgs` and `postHandler` state will be committed if + // both are successful, and both will be reverted if any of the two fails. + // + // The SDK exposes a default empty postHandlers chain. + // + // Please note that changing any of the anteHandler or postHandler chain is + // likely to be a state-machine breaking change, which needs a coordinated + // upgrade. + app.setPostHandler() + + // At startup, after all modules have been registered, check that all prot + // annotations are correct. + protoFiles, err := proto.MergedRegistry() + if err != nil { + panic(err) + } + err = msgservice.ValidateProtoAnnotations(protoFiles) + if err != nil { + // Once we switch to using protoreflect-based antehandlers, we might + // want to panic here instead of logging a warning. + fmt.Fprintln(os.Stderr, err.Error()) + } + if loadLatest { if err := app.LoadLatestVersion(); err != nil { tmos.Exit(err.Error()) @@ -803,45 +1055,79 @@ func NewCanto( return app } +// use Canto's custom AnteHandler +func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { // TODO(dudong2) + anteHandler, err := ante.NewAnteHandler( + ante.HandlerOptions{ + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + SignModeHandler: txConfig.SignModeHandler(), + FeegrantKeeper: app.FeeGrantKeeper, + SigGasConsumer: ethante.DefaultSigVerificationGasConsumer, + IBCKeeper: app.IBCKeeper, + EvmKeeper: app.EvmKeeper, + FeeMarketKeeper: app.FeeMarketKeeper, + MaxTxGasWanted: maxGasWanted, + ExtensionOptionChecker: ethermint.HasDynamicFeeExtensionOption, + TxFeeChecker: ethante.NewDynamicFeeChecker(app.EvmKeeper), + DisabledAuthzMsgs: []string{ + sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), + // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), // TODO(dudong2) + }, + }, + ) + if err != nil { + panic(err) + } + + app.SetAnteHandler(anteHandler) +} + +func (app *Canto) setPostHandler() { + postHandler, err := posthandler.NewPostHandler( + posthandler.HandlerOptions{}, + ) + if err != nil { + panic(err) + } + + app.SetPostHandler(postHandler) +} + // Name returns the name of the App func (app *Canto) Name() string { return app.BaseApp.Name() } +// PreBlocker updates every pre begin block +func (app *Canto) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) { + return app.ModuleManager.PreBlock(ctx) +} + // BeginBlocker runs the Tendermint ABCI BeginBlock logic. It executes state changes at the beginning // of the new block for every registered module. If there is a registered fork at the current height, // BeginBlocker will schedule the upgrade plan and perform the state migration (if any). -func (app *Canto) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - return app.mm.BeginBlock(ctx, req) +func (app *Canto) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) { + return app.ModuleManager.BeginBlock(ctx) } // EndBlocker updates every end block -func (app *Canto) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { - return app.mm.EndBlock(ctx, req) +func (app *Canto) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { + return app.ModuleManager.EndBlock(ctx) } -// We are intentionally decomposing the DeliverTx method so as to calculate the transactions per second. -func (app *Canto) DeliverTx(req abci.RequestDeliverTx) (res abci.ResponseDeliverTx) { - defer func() { - // TODO: Record the count along with the code and or reason so as to display - // in the transactions per second live dashboards. - if res.IsErr() { - app.tpsCounter.incrementFailure() - } else { - app.tpsCounter.incrementSuccess() - } - }() - return app.BaseApp.DeliverTx(req) +func (app *Canto) Configurator() module.Configurator { + return app.configurator } // InitChainer updates at chain initialization -func (app *Canto) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { +func (app *Canto) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { var genesisState simapp.GenesisState if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) } - - app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) - - return app.mm.InitGenesis(ctx, app.appCodec, genesisState) + if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil { + panic(err) + } + return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState) } // LoadHeight loads state at a particular height @@ -859,23 +1145,12 @@ func (app *Canto) ModuleAccountAddrs() map[string]bool { return modAccAddrs } -// BlockedAddrs returns all the app's module account addresses that are not -// allowed to receive external tokens. -func (app *Canto) BlockedAddrs() map[string]bool { - blockedAddrs := make(map[string]bool) - for acc := range maccPerms { - blockedAddrs[authtypes.NewModuleAddress(acc).String()] = !allowedReceivingModAcc[acc] - } - - return blockedAddrs -} - // LegacyAmino returns Canto's amino codec. // // NOTE: This is solely to be used for testing purposes as it may be desirable // for modules to register their own custom testing types. func (app *Canto) LegacyAmino() *codec.LegacyAmino { - return app.cdc + return app.legacyAmino } // AppCodec returns Canto's app codec. @@ -891,24 +1166,65 @@ func (app *Canto) InterfaceRegistry() types.InterfaceRegistry { return app.interfaceRegistry } +// TxConfig returns Canto's TxConfig +func (app *Canto) TxConfig() client.TxConfig { + return app.txConfig +} + +// AutoCliOpts returns the autocli options for the app. +func (app *Canto) AutoCliOpts() autocli.AppOptions { + modules := make(map[string]appmodule.AppModule, 0) + for _, m := range app.ModuleManager.Modules { + if moduleWithName, ok := m.(module.HasName); ok { + moduleName := moduleWithName.Name() + if appModule, ok := moduleWithName.(appmodule.AppModule); ok { + modules[moduleName] = appModule + } + } + } + + return autocli.AppOptions{ + Modules: modules, + ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules), + AddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), + ValidatorAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), + ConsensusAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), + } +} + +// DefaultGenesis returns a default genesis from the registered AppModuleBasic's. +func (app *Canto) DefaultGenesis() map[string]json.RawMessage { + return app.BasicModuleManager.DefaultGenesis(app.appCodec) +} + // GetKey returns the KVStoreKey for the provided store key. // // NOTE: This is solely to be used for testing purposes. -func (app *Canto) GetKey(storeKey string) *sdk.KVStoreKey { +func (app *Canto) GetKey(storeKey string) *storetypes.KVStoreKey { return app.keys[storeKey] } +// GetStoreKeys returns all the stored store keys. +func (app *Canto) GetStoreKeys() []storetypes.StoreKey { + keys := make([]storetypes.StoreKey, len(app.keys)) + for _, key := range app.keys { + keys = append(keys, key) + } + + return keys +} + // GetTKey returns the TransientStoreKey for the provided store key. // // NOTE: This is solely to be used for testing purposes. -func (app *Canto) GetTKey(storeKey string) *sdk.TransientStoreKey { +func (app *Canto) GetTKey(storeKey string) *storetypes.TransientStoreKey { return app.tkeys[storeKey] } // GetMemKey returns the MemStoreKey for the provided mem key. // // NOTE: This is solely used for testing purposes. -func (app *Canto) GetMemKey(storeKey string) *sdk.MemoryStoreKey { +func (app *Canto) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { return app.memKeys[storeKey] } @@ -929,22 +1245,22 @@ func (app *Canto) SimulationManager() *module.SimulationManager { // API server. func (app *Canto) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { clientCtx := apiSvr.ClientCtx - rpc.RegisterRoutes(clientCtx, apiSvr.Router) - - // evmrest.RegisterTxRoutes(clientCtx, apiSvr.Router) // TODO(dudong2) // Register new tx routes from grpc-gateway. authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + // Register new tendermint queries routes from grpc-gateway. cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + // Register node gRPC service for grpc-gateway. + node.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + // Register legacy and grpc-gateway routes for all modules. - ModuleBasics.RegisterRESTRoutes(clientCtx, apiSvr.Router) - ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // register swagger API from root so that other applications can override easily - if apiConfig.Swagger { - RegisterSwaggerAPI(clientCtx, apiSvr.Router) + if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { // TODO(dudong2): need to check swagger server + panic(err) } } @@ -953,7 +1269,16 @@ func (app *Canto) RegisterTxService(clientCtx client.Context) { } func (app *Canto) RegisterTendermintService(clientCtx client.Context) { - cmtservice.RegisterTendermintService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.interfaceRegistry) + cmtservice.RegisterTendermintService( + clientCtx, + app.BaseApp.GRPCQueryRouter(), + app.interfaceRegistry, + app.Query, + ) +} + +func (app *Canto) RegisterNodeService(clientCtx client.Context, cfg config.Config) { + node.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg) } // IBC Go TestingApp functions @@ -964,7 +1289,7 @@ func (app *Canto) GetBaseApp() *baseapp.BaseApp { } // GetStakingKeeper implements the TestingApp interface. -func (app *Canto) GetStakingKeeper() stakingkeeper.Keeper { +func (app *Canto) GetStakingKeeper() ibctestingtypes.StakingKeeper { return app.StakingKeeper } @@ -992,8 +1317,7 @@ func (app *Canto) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { // GetTxConfig implements the TestingApp interface. func (app *Canto) GetTxConfig() client.TxConfig { - cfg := encoding.MakeConfig(ModuleBasics) - return cfg.TxConfig + return app.txConfig } // RegisterSwaggerAPI registers swagger route with API Server @@ -1017,10 +1341,19 @@ func GetMaccPerms() map[string][]string { return dupMaccPerms } +// BlockedAddrs returns all the app's module account addresses that are not +// allowed to receive external tokens. +func (app *Canto) BlockedAddrs() map[string]bool { + blockedAddrs := make(map[string]bool) + for acc := range maccPerms { + blockedAddrs[authtypes.NewModuleAddress(acc).String()] = !allowedReceivingModAcc[acc] + } + + return blockedAddrs +} + // initParamsKeeper init params keeper and its subspaces -func initParamsKeeper( - appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey, -) paramskeeper.Keeper { +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) // SDK subspaces @@ -1029,10 +1362,10 @@ func initParamsKeeper( paramsKeeper.Subspace(stakingtypes.ModuleName) paramsKeeper.Subspace(distrtypes.ModuleName) paramsKeeper.Subspace(slashingtypes.ModuleName) - paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable()) + paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) paramsKeeper.Subspace(ibctransfertypes.ModuleName) - paramsKeeper.Subspace(ibchost.ModuleName) + paramsKeeper.Subspace(ibcexported.ModuleName) // ethermint subspaces paramsKeeper.Subspace(evmtypes.ModuleName) paramsKeeper.Subspace(feemarkettypes.ModuleName) @@ -1050,35 +1383,35 @@ func (app *Canto) setupUpgradeHandlers() { // v2 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v2.UpgradeName, - v2.CreateUpgradeHandler(app.mm, app.configurator), + v2.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) // v3 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v3.UpgradeName, - v3.CreateUpgradeHandler(app.mm, app.configurator), + v3.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) // v4 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v4.UpgradeName, - v4.CreateUpgradeHandler(app.mm, app.configurator, app.GovshuttleKeeper), + v4.CreateUpgradeHandler(app.ModuleManager, app.configurator, app.GovshuttleKeeper), ) // v4 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v5.UpgradeName, - v5.CreateUpgradeHandler(app.mm, app.configurator), + v5.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) // v6 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v6.UpgradeName, - v6.CreateUpgradeHandler(app.mm, app.configurator), + v6.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) // v7 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v7.UpgradeName, - v7.CreateUpgradeHandler(app.mm, app.configurator, *app.OnboardingKeeper, app.CoinswapKeeper), + v7.CreateUpgradeHandler(app.ModuleManager, app.configurator, *app.OnboardingKeeper, app.CoinswapKeeper), ) // When a planned update height is reached, the old binary will panic @@ -1115,6 +1448,7 @@ func (app *Canto) setupUpgradeHandlers() { storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{onboardingtypes.StoreKey, coinswaptypes.StoreKey}, } + // case v8.UpgradeName: // TODO(dudong2) } if storeUpgrades != nil { diff --git a/app/app_test.go b/app/app_test.go index fe98148eb..e45b6a0b8 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -7,19 +7,28 @@ import ( "github.com/stretchr/testify/require" + "cosmossdk.io/log" + abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" dbm "github.com/cosmos/cosmos-db" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/evmos/ethermint/encoding" - "github.com/Canto-Network/Canto/v7/types" ) func TestCantoExport(t *testing.T) { db := dbm.NewMemDB() - app := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) + app := NewCanto( + log.NewLogger(os.Stdout), + db, + nil, + true, + map[int64]bool{}, + DefaultNodeHome, + 0, + false, + simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), + ) genesisState := NewDefaultGenesisState() stateBytes, err := json.MarshalIndent(genesisState, "", " ") @@ -36,7 +45,17 @@ func TestCantoExport(t *testing.T) { app.Commit() // Making a new app object with the db, so that initchain hasn't been called - app2 := NewCanto(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) - _, err = app2.ExportAppStateAndValidators(false, []string{}) + app2 := NewCanto( + log.NewLogger(os.Stdout), + db, + nil, + true, + map[int64]bool{}, + DefaultNodeHome, + 0, + false, + simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), + ) + _, err = app2.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") } diff --git a/app/export.go b/app/export.go index a345a1f6c..177b398ea 100644 --- a/app/export.go +++ b/app/export.go @@ -6,27 +6,38 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + "cosmossdk.io/log" "cosmossdk.io/simapp" storetypes "cosmossdk.io/store/types" + dbm "github.com/cosmos/cosmos-db" servertypes "github.com/cosmos/cosmos-sdk/server/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/cosmos/cosmos-sdk/x/staking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/evmos/ethermint/encoding" ) // NewDefaultGenesisState generates the default state for the application. func NewDefaultGenesisState() simapp.GenesisState { - encCfg := encoding.MakeConfig(ModuleBasics) - return ModuleBasics.DefaultGenesis(encCfg.Codec) + tempApp := NewCanto( + log.NewNopLogger(), + dbm.NewMemDB(), + nil, + true, + map[int64]bool{}, + DefaultNodeHome, + 0, + true, + simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), + ) + return tempApp.DefaultGenesis() } // ExportAppStateAndValidators exports the state of the application for a genesis // file. func (app *Canto) ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, + forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string, ) (servertypes.ExportedApp, error) { // Creates context with current height and checks txs for ctx to be usable by start of next block ctx := app.NewContextLegacy(true, tmproto.Header{Height: app.LastBlockHeight()}) @@ -42,7 +53,7 @@ func (app *Canto) ExportAppStateAndValidators( } } - genState, err := app.mm.ExportGenesis(ctx, app.appCodec) + genState, err := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport) if err != nil { return servertypes.ExportedApp{}, err } diff --git a/app/sigverify_test.go b/app/sigverify_test.go index 4bc4a23ea..acc3eb0fe 100644 --- a/app/sigverify_test.go +++ b/app/sigverify_test.go @@ -53,7 +53,7 @@ func TestConsumeSignatureVerificationGas(t *testing.T) { params := authtypes.DefaultParams() msg := []byte{1, 2, 3, 4} - encodingConfig := encoding.MakeConfig(ModuleBasics) + encodingConfig := encoding.MakeTestEncodingConfig() cdc := encodingConfig.Amino p := authtypes.DefaultParams() diff --git a/app/sim_test.go b/app/sim_test.go index ff0286c7e..9d628441f 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -2,47 +2,48 @@ package app import ( "encoding/json" + "flag" "fmt" + "math/rand" "os" + "runtime/debug" + "strings" "testing" + "github.com/spf13/viper" + "github.com/stretchr/testify/require" + + abci "github.com/cometbft/cometbft/abci/types" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + + "cosmossdk.io/log" sdkmath "cosmossdk.io/math" - "cosmossdk.io/simapp" "cosmossdk.io/store" storetypes "cosmossdk.io/store/types" - evidencetypes "cosmossdk.io/x/evidence/types" "cosmossdk.io/x/feegrant" - "github.com/cometbft/cometbft/libs/log" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/server" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/simulation" - + simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - ibchost "github.com/cosmos/ibc-go/v8/modules/core/24-host" - "github.com/evmos/ethermint/encoding" - evmtypes "github.com/evmos/ethermint/x/evm/types" - feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - "github.com/stretchr/testify/require" cantoconfig "github.com/Canto-Network/Canto/v7/cmd/config" - csrtypes "github.com/Canto-Network/Canto/v7/x/csr/types" - erc20types "github.com/Canto-Network/Canto/v7/x/erc20/types" - govshuttletypes "github.com/Canto-Network/Canto/v7/x/govshuttle/types" - inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" + epochstypes "github.com/Canto-Network/Canto/v7/x/epochs/types" ) +var FlagEnableStreamingValue bool + // Get flags every time the simulator is run func init() { - simapp.GetSimulatorFlags() + simcli.GetSimulatorFlags() + flag.BoolVar(&FlagEnableStreamingValue, "EnableStreaming", false, "Enable streaming service") } type StoreKeysPrefixes struct { @@ -64,11 +65,13 @@ func interBlockCacheOpt() func(app *baseapp.BaseApp) { } func TestFullAppSimulation(t *testing.T) { - config, db, dir, logger, skip, err := simapp.SetupSimulation("leveldb-cantoApp-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = "canto_9000-1" + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application simulation") } - config.ChainID = "canto_9000-1" require.NoError(t, err, "simulation setup failed") defer func() { @@ -76,9 +79,12 @@ func TestFullAppSimulation(t *testing.T) { require.NoError(t, os.RemoveAll(dir)) }() + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + // TODO: shadowed - cantoApp := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simapp.FlagPeriodValue, - true, encoding.MakeConfig(ModuleBasics), simapp.EmptyAppOptions{}, fauxMerkleModeOpt) + cantoApp := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) require.Equal(t, cantoconfig.AppName, cantoApp.Name()) // run randomized simulation @@ -88,28 +94,30 @@ func TestFullAppSimulation(t *testing.T) { cantoApp.BaseApp, AppStateFn(cantoApp.AppCodec(), cantoApp.SimulationManager()), RandomAccounts, // replace with own random account function if using keys other than secp256k1 - simapp.SimulationOperations(cantoApp, cantoApp.AppCodec(), config), + simtestutil.SimulationOperations(cantoApp, cantoApp.AppCodec(), config), cantoApp.ModuleAccountAddrs(), config, cantoApp.AppCodec(), ) // export state and simParams before the simulation error is checked - err = simapp.CheckExportSimulation(cantoApp, config, simParams) + err = simtestutil.CheckExportSimulation(cantoApp, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - simapp.PrintStats(db) + simtestutil.PrintStats(db) } } func TestAppImportExport(t *testing.T) { - config, db, dir, logger, skip, err := simapp.SetupSimulation("leveldb-app-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = "canto_9000-1" + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application import/export simulation") } - config.ChainID = "canto_9000-1" require.NoError(t, err, "simulation setup failed") defer func() { @@ -117,21 +125,13 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(dir)) }() + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - app := NewCanto( - logger, - db, - nil, - true, - map[int64]bool{}, - DefaultNodeHome, - simapp.FlagPeriodValue, - true, - encoding.MakeConfig(ModuleBasics), - simapp.EmptyAppOptions{}, - fauxMerkleModeOpt, - ) + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) require.Equal(t, cantoconfig.AppName, app.Name()) // run randomized simulation @@ -141,29 +141,29 @@ func TestAppImportExport(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), RandomAccounts, // replace with own random account function if using keys other than secp256k1 - simapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - err = simapp.CheckExportSimulation(app, config, simParams) + err = simtestutil.CheckExportSimulation(app, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - simapp.PrintStats(db) + simtestutil.PrintStats(db) } fmt.Println("exporting genesis...") - exported, err := app.ExportAppStateAndValidators(false, []string{}) + exported, err := app.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err) fmt.Println("importing genesis...") - _, newDB, newDir, _, _, err := simapp.SetupSimulation("leveldb-app-sim-2", "Simulation-2") + newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) require.NoError(t, err, "simulation setup failed") defer func() { @@ -171,19 +171,7 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewCanto( - log.NewNopLogger(), - newDB, - nil, - true, - map[int64]bool{}, - DefaultNodeHome, - simapp.FlagPeriodValue, - true, - encoding.MakeConfig(ModuleBasics), - simapp.EmptyAppOptions{}, - fauxMerkleModeOpt, - ) + newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) require.Equal(t, cantoconfig.AppName, newApp.Name()) var genesisState GenesisState @@ -192,56 +180,66 @@ func TestAppImportExport(t *testing.T) { ctxA := app.NewContextLegacy(true, tmproto.Header{Height: app.LastBlockHeight()}) ctxB := newApp.NewContextLegacy(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) - newApp.mm.InitGenesis(ctxB, app.AppCodec(), genesisState) - newApp.StoreConsensusParams(ctxB, exported.ConsensusParams) + _, err = newApp.ModuleManager.InitGenesis(ctxB, app.AppCodec(), genesisState) + + if err != nil { + if strings.Contains(err.Error(), "validator set is empty after InitGenesis") { + logger.Info("Skipping simulation as all validators have been unbonded") + logger.Info("err", err, "stacktrace", string(debug.Stack())) + return + } + } + + require.NoError(t, err) + err = newApp.StoreConsensusParams(ctxB, exported.ConsensusParams) + require.NoError(t, err) fmt.Println("comparing stores...") - storeKeysPrefixes := []StoreKeysPrefixes{ - {app.keys[authtypes.StoreKey], newApp.keys[authtypes.StoreKey], [][]byte{}}, - {app.keys[banktypes.StoreKey], newApp.keys[banktypes.StoreKey], [][]byte{banktypes.BalancesPrefix}}, - {app.keys[stakingtypes.StoreKey], newApp.keys[stakingtypes.StoreKey], - [][]byte{ - stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, - stakingtypes.HistoricalInfoKey, - }, + // skip certain prefixes + skipPrefixes := map[string][][]byte{ + stakingtypes.StoreKey: { + stakingtypes.UnbondingQueueKey, stakingtypes.RedelegationQueueKey, stakingtypes.ValidatorQueueKey, + stakingtypes.HistoricalInfoKey, stakingtypes.UnbondingIDKey, stakingtypes.UnbondingIndexKey, + stakingtypes.UnbondingTypeKey, stakingtypes.ValidatorUpdatesKey, }, - {app.keys[distrtypes.StoreKey], newApp.keys[distrtypes.StoreKey], [][]byte{}}, - {app.keys[paramstypes.StoreKey], newApp.keys[paramstypes.StoreKey], [][]byte{}}, - {app.keys[evidencetypes.StoreKey], newApp.keys[evidencetypes.StoreKey], [][]byte{}}, - {app.keys[capabilitytypes.StoreKey], newApp.keys[capabilitytypes.StoreKey], [][]byte{}}, - {app.keys[feegrant.StoreKey], newApp.keys[feegrant.StoreKey], [][]byte{}}, - {app.keys[authzkeeper.StoreKey], newApp.keys[authzkeeper.StoreKey], [][]byte{}}, - {app.keys[ibchost.StoreKey], newApp.keys[ibchost.StoreKey], [][]byte{}}, - {app.keys[ibctransfertypes.StoreKey], newApp.keys[ibctransfertypes.StoreKey], [][]byte{}}, - {app.keys[evmtypes.StoreKey], newApp.keys[evmtypes.StoreKey], [][]byte{}}, - {app.keys[feemarkettypes.StoreKey], newApp.keys[feemarkettypes.StoreKey], [][]byte{}}, - {app.keys[inflationtypes.StoreKey], newApp.keys[inflationtypes.StoreKey], [][]byte{}}, - {app.keys[erc20types.StoreKey], newApp.keys[erc20types.StoreKey], [][]byte{}}, + authzkeeper.StoreKey: {authzkeeper.GrantQueuePrefix}, + feegrant.StoreKey: {feegrant.FeeAllowanceQueueKeyPrefix}, + slashingtypes.StoreKey: {slashingtypes.ValidatorMissedBlockBitmapKeyPrefix}, // In the case of epoch module, the value is updated when importing genesis, so the store consistency is broken - //{app.keys[epochstypes.StoreKey], newApp.keys[epochstypes.StoreKey], [][]byte{}}, - {app.keys[csrtypes.StoreKey], newApp.keys[csrtypes.StoreKey], [][]byte{}}, - {app.keys[govshuttletypes.StoreKey], newApp.keys[govshuttletypes.StoreKey], [][]byte{}}, + epochstypes.StoreKey: {epochstypes.KeyPrefixEpoch}, } - for _, skp := range storeKeysPrefixes { - storeA := ctxA.KVStore(skp.A) - storeB := ctxB.KVStore(skp.B) + storeKeys := app.GetStoreKeys() + require.NotEmpty(t, storeKeys) - failedKVAs, failedKVBs := sdk.DiffKVStores(storeA, storeB, skp.Prefixes) - require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare") + for _, appKeyA := range storeKeys { + // only compare kvstores + if _, ok := appKeyA.(*storetypes.KVStoreKey); !ok { + continue + } - fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), skp.A, skp.B) - require.Equal(t, len(failedKVAs), 0, simapp.GetSimulationLog(skp.A.Name(), app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) + keyName := appKeyA.Name() + appKeyB := newApp.GetKey(keyName) + + storeA := ctxA.KVStore(appKeyA) + storeB := ctxB.KVStore(appKeyB) + + failedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skipPrefixes[keyName]) + require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare %s", keyName) + + fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), appKeyA, appKeyB) + + require.Equal(t, 0, len(failedKVAs), simtestutil.GetSimulationLog(keyName, app.SimulationManager().StoreDecoders, failedKVAs, failedKVBs)) } } func TestAppStateDeterminism(t *testing.T) { - if !simapp.FlagEnabledValue { + if !simcli.FlagEnabledValue { t.Skip("skipping application simulation") } - config := simapp.NewConfigFromFlags() + config := simcli.NewConfigFromFlags() config.InitialBlockHeight = 1 config.ExportParamsPath = "" config.OnOperation = false @@ -252,33 +250,51 @@ func TestAppStateDeterminism(t *testing.T) { numTimesToRunPerSeed := 2 appHashList := make([]json.RawMessage, numTimesToRunPerSeed) + // We will be overriding the random seed and just run a single simulation on the provided seed value + if config.Seed != simcli.DefaultSeedValue { // TODO(dudong2): check it + numSeeds = 1 + } + + appOptions := viper.New() + if FlagEnableStreamingValue { + m := make(map[string]interface{}) + m["streaming.abci.keys"] = []string{"*"} + m["streaming.abci.plugin"] = "abci_v1" + m["streaming.abci.stop-node-on-err"] = true + for key, value := range m { + appOptions.SetDefault(key, value) + } + } + appOptions.SetDefault(flags.FlagHome, DefaultNodeHome) + appOptions.SetDefault(server.FlagInvCheckPeriod, simcli.FlagPeriodValue) + if simcli.FlagVerboseValue { + appOptions.SetDefault(flags.FlagLogLevel, "debug") + } + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) for i := 0; i < numSeeds; i++ { - config.Seed = config.Seed + int64(i) + if config.Seed == simcli.DefaultSeedValue { + config.Seed = rand.Int63() + } + + fmt.Println("config.Seed: ", config.Seed) + for j := 0; j < numTimesToRunPerSeed; j++ { var logger log.Logger - if simapp.FlagVerboseValue { - logger = log.TestingLogger() + if simcli.FlagVerboseValue { + logger = log.NewTestLogger(t) } else { logger = log.NewNopLogger() } db := dbm.NewMemDB() - app := NewCanto( - logger, - db, - nil, - true, - map[int64]bool{}, - DefaultNodeHome, - simapp.FlagPeriodValue, - true, - encoding.MakeConfig(ModuleBasics), - simapp.EmptyAppOptions{}, - fauxMerkleModeOpt, + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + + fmt.Printf( + "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", + config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, ) - fmt.Printf("running simulation with seed %d\n", config.Seed) _, _, err := simulation.SimulateFromSeed( t, @@ -286,7 +302,7 @@ func TestAppStateDeterminism(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), RandomAccounts, - simapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), @@ -294,49 +310,44 @@ func TestAppStateDeterminism(t *testing.T) { require.NoError(t, err) if config.Commit { - simapp.PrintStats(db) + simtestutil.PrintStats(db) } appHash := app.LastCommitID().Hash appHashList[j] = appHash if j != 0 { - require.Equal(t, string(appHashList[0]), string(appHashList[j]), - "non-determinism in seed %d: %d/%d, attempt: %d/%d\n", - config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed) + require.Equal( + t, string(appHashList[0]), string(appHashList[j]), + "non-determinism in seed %d: %d/%d, attempt: %d/%d\n", config.Seed, i+1, numSeeds, j+1, numTimesToRunPerSeed, + ) } } } } func TestAppSimulationAfterImport(t *testing.T) { - config, db, dir, logger, skip, err := simapp.SetupSimulation("leveldb-app-sim", "Simulation") + config := simcli.NewConfigFromFlags() + config.ChainID = "canto_9000-1" + + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application simulation after import") } require.NoError(t, err, "simulation setup failed") - config.ChainID = "canto_9000-1" defer func() { db.Close() require.NoError(t, os.RemoveAll(dir)) }() + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - app := NewCanto( - logger, - db, - nil, - true, - map[int64]bool{}, - DefaultNodeHome, - simapp.FlagPeriodValue, - true, - encoding.MakeConfig(ModuleBasics), - simapp.EmptyAppOptions{}, - fauxMerkleModeOpt, - ) + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) require.Equal(t, cantoconfig.AppName, app.Name()) // Run randomized simulation @@ -346,19 +357,19 @@ func TestAppSimulationAfterImport(t *testing.T) { app.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - simapp.SimulationOperations(app, app.AppCodec(), config), + simtestutil.SimulationOperations(app, app.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), ) // export state and simParams before the simulation error is checked - err = simapp.CheckExportSimulation(app, config, simParams) + err = simtestutil.CheckExportSimulation(app, config, simParams) require.NoError(t, err) require.NoError(t, simErr) if config.Commit { - simapp.PrintStats(db) + simtestutil.PrintStats(db) } if stopEarly { @@ -368,41 +379,26 @@ func TestAppSimulationAfterImport(t *testing.T) { fmt.Printf("exporting genesis...\n") - exported, err := app.ExportAppStateAndValidators(true, []string{}) + exported, err := app.ExportAppStateAndValidators(true, []string{}, []string{}) require.NoError(t, err) fmt.Printf("importing genesis...\n") - _, newDB, newDir, _, _, err := simapp.SetupSimulation("leveldb-app-sim-2", "Simulation-2") + newDB, newDir, _, _, err := simtestutil.SetupSimulation(config, "leveldb-app-sim-2", "Simulation-2", simcli.FlagVerboseValue, simcli.FlagEnabledValue) require.NoError(t, err, "simulation setup failed") defer func() { - newDB.Close() + require.NoError(t, newDB.Close()) require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewCanto( - log.NewNopLogger(), - newDB, - nil, - true, - map[int64]bool{}, - DefaultNodeHome, - simapp.FlagPeriodValue, - true, - encoding.MakeConfig(ModuleBasics), - simapp.EmptyAppOptions{}, - fauxMerkleModeOpt, - ) + newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) require.Equal(t, cantoconfig.AppName, newApp.Name()) - var genesisState GenesisState - err = json.Unmarshal(exported.AppState, &genesisState) - require.NoError(t, err) - - ctx := newApp.NewContextLegacy(true, tmproto.Header{ChainID: config.ChainID, Height: app.LastBlockHeight()}) - newApp.mm.InitGenesis(ctx, app.AppCodec(), genesisState) - newApp.StoreConsensusParams(ctx, exported.ConsensusParams) + newApp.InitChain(&abci.RequestInitChain{ + AppStateBytes: exported.AppState, + ChainId: config.ChainID, + }) _, _, err = simulation.SimulateFromSeed( t, @@ -410,7 +406,7 @@ func TestAppSimulationAfterImport(t *testing.T) { newApp.BaseApp, AppStateFn(app.AppCodec(), app.SimulationManager()), RandomAccounts, // Replace with own random account function if using keys other than secp256k1 - simapp.SimulationOperations(newApp, newApp.AppCodec(), config), + simtestutil.SimulationOperations(newApp, newApp.AppCodec(), config), app.ModuleAccountAddrs(), config, app.AppCodec(), diff --git a/app/test_helpers.go b/app/test_helpers.go index 8a3d030c0..29f396f33 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -4,19 +4,18 @@ import ( "encoding/json" "time" + "cosmossdk.io/log" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" abci "github.com/cometbft/cometbft/abci/types" - "github.com/cometbft/cometbft/libs/log" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmtypes "github.com/cometbft/cometbft/types" dbm "github.com/cosmos/cosmos-db" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/evmos/ethermint/encoding" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/Canto-Network/Canto/v7/cmd/config" @@ -61,7 +60,7 @@ func Setup( feemarketGenesis *feemarkettypes.GenesisState, ) *Canto { db := dbm.NewMemDB() - app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, encoding.MakeConfig(ModuleBasics), simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) + app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewDefaultGenesisState() diff --git a/app/tps_counter.go b/app/tps_counter.go index f8af29a52..59fc27cb8 100644 --- a/app/tps_counter.go +++ b/app/tps_counter.go @@ -6,10 +6,11 @@ import ( "sync/atomic" "time" - "github.com/cometbft/cometbft/libs/log" "go.opencensus.io/stats" "go.opencensus.io/stats/view" "go.opencensus.io/tag" + + "cosmossdk.io/log" ) var ( diff --git a/app/tps_counter_test.go b/app/tps_counter_test.go index 4f4055f6d..dc5427402 100644 --- a/app/tps_counter_test.go +++ b/app/tps_counter_test.go @@ -11,7 +11,8 @@ import ( "testing" "time" - "github.com/cometbft/cometbft/libs/log" + "cosmossdk.io/log" + "github.com/stretchr/testify/require" ) diff --git a/cmd/cantod/genaccounts.go b/cmd/cantod/genaccounts.go index 12efafe94..235746a0f 100644 --- a/cmd/cantod/genaccounts.go +++ b/cmd/cantod/genaccounts.go @@ -57,6 +57,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa keyringBackend, clientCtx.HomeDir, inBuf, + clientCtx.Codec, cantokr.Option(), ) if err != nil { @@ -71,7 +72,10 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa return fmt.Errorf("failed to get address from Keyring: %w", err) } - addr = info.GetAddress() + addr, err = info.GetAddress() + if err != nil { + return err + } } coins, err := sdk.ParseCoinsNormalized(args[1]) diff --git a/cmd/cantod/init.go b/cmd/cantod/init.go index 9a36357e7..18b866daf 100644 --- a/cmd/cantod/init.go +++ b/cmd/cantod/init.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "path/filepath" - // "strings" "time" "github.com/pkg/errors" @@ -16,18 +15,20 @@ import ( "github.com/cometbft/cometbft/libs/cli" tmos "github.com/cometbft/cometbft/libs/os" tmrand "github.com/cometbft/cometbft/libs/rand" - "github.com/cometbft/cometbft/types" "github.com/cosmos/go-bip39" + errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/input" "github.com/cosmos/cosmos-sdk/server" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/genutil" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + "github.com/cosmos/cosmos-sdk/x/genutil/types" ) type printInfo struct { @@ -115,6 +116,12 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { } } + // Get initial height + initHeight, _ := cmd.Flags().GetInt64(flags.FlagInitHeight) + if initHeight < 1 { + initHeight = 1 + } + nodeID, _, err := genutil.InitializeNodeValidatorFilesFromMnemonic(config, mnemonic) if err != nil { return err @@ -134,24 +141,29 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { return errors.Wrap(err, "Failed to marshall default genesis state") } - genDoc := &types.GenesisDoc{} + appGenesis := &types.AppGenesis{} if _, err := os.Stat(genFile); err != nil { if !os.IsNotExist(err) { return err } } else { - genDoc, err = types.GenesisDocFromFile(genFile) + appGenesis, err = types.AppGenesisFromFile(genFile) if err != nil { - return errors.Wrap(err, "Failed to read genesis doc from file") + return errorsmod.Wrap(err, "Failed to read genesis doc from file") } } - genDoc.ChainID = chainID - genDoc.Validators = nil - genDoc.AppState = appState + appGenesis.AppName = version.AppName + appGenesis.AppVersion = version.Version + appGenesis.ChainID = chainID + appGenesis.AppState = appState + appGenesis.InitialHeight = initHeight + appGenesis.Consensus = &types.ConsensusGenesis{ + Validators: nil, + } - if err := genutil.ExportGenesisFile(genDoc, genFile); err != nil { - return errors.Wrap(err, "Failed to export gensis file") + if err = genutil.ExportGenesisFile(appGenesis, genFile); err != nil { + return errorsmod.Wrap(err, "Failed to export genesis file") } toPrint := newPrintInfo(config.Moniker, chainID, nodeID, "", appState) diff --git a/cmd/cantod/main.go b/cmd/cantod/main.go index 4f9e899c0..9d0074e55 100644 --- a/cmd/cantod/main.go +++ b/cmd/cantod/main.go @@ -1,9 +1,9 @@ package main import ( + "fmt" "os" - "github.com/cosmos/cosmos-sdk/server" svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" sdk "github.com/cosmos/cosmos-sdk/types" @@ -17,14 +17,9 @@ func main() { rootCmd, _ := NewRootCmd() - if err := svrcmd.Execute(rootCmd, app.DefaultNodeHome); err != nil { - switch e := err.(type) { - case server.ErrorCode: - os.Exit(e.Code) - - default: - os.Exit(1) - } + if err := svrcmd.Execute(rootCmd, EnvPrefix, app.DefaultNodeHome); err != nil { + fmt.Fprintln(rootCmd.OutOrStderr(), err) + os.Exit(1) } } diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index b24283e7c..493760592 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -13,11 +13,14 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" + tmcfg "github.com/cometbft/cometbft/config" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/cometbft/cometbft/libs/log" - dbm "github.com/cosmos/cosmos-db" + "cosmossdk.io/log" "cosmossdk.io/store" + snapshottypes "cosmossdk.io/store/snapshots/types" + storetypes "cosmossdk.io/store/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" @@ -25,15 +28,16 @@ import ( "github.com/cosmos/cosmos-sdk/client/rpc" sdkserver "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ethermintclient "github.com/evmos/ethermint/client" "github.com/evmos/ethermint/client/debug" - "github.com/evmos/ethermint/encoding" ethermintserver "github.com/evmos/ethermint/server" servercfg "github.com/evmos/ethermint/server/config" srvflags "github.com/evmos/ethermint/server/flags" @@ -50,7 +54,23 @@ const ( // NewRootCmd creates a new root command for cantod. It is called once in the // main function. func NewRootCmd() (*cobra.Command, params.EncodingConfig) { - encodingConfig := encoding.MakeConfig(app.ModuleBasics) + tempApp := app.NewCanto( + log.NewNopLogger(), + dbm.NewMemDB(), + nil, + true, + map[int64]bool{}, + app.DefaultNodeHome, + 0, + true, + simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + ) + encodingConfig := params.EncodingConfig{ + InterfaceRegistry: tempApp.InterfaceRegistry(), + Codec: tempApp.AppCodec(), + TxConfig: tempApp.TxConfig(), + Amino: tempApp.LegacyAmino(), + } initClientCtx := client.Context{}. WithCodec(encodingConfig.Codec). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). @@ -94,7 +114,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { // TODO: define our own token customAppTemplate, customAppConfig := initAppConfig() - return sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig) + return sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, tmcfg.DefaultConfig()) }, } @@ -103,24 +123,36 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { rootCmd.AddCommand( ethermintclient.ValidateChainID( - InitCmd(app.ModuleBasics, app.DefaultNodeHome), + InitCmd(tempApp.BasicModuleManager, app.DefaultNodeHome), ), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.ValidateGenesisCmd(app.ModuleBasics), + genutilcli.CollectGenTxsCmd( + banktypes.GenesisBalancesIterator{}, + app.DefaultNodeHome, + genutiltypes.DefaultMessageValidator, + encodingConfig.TxConfig.SigningContext().ValidatorAddressCodec(), + ), + genutilcli.MigrateGenesisCmd(genutilcli.MigrationMap), // TODO: shouldn't this include the local app version instead of the SDK? + genutilcli.GenTxCmd( + tempApp.BasicModuleManager, + encodingConfig.TxConfig, + banktypes.GenesisBalancesIterator{}, + app.DefaultNodeHome, + encodingConfig.TxConfig.SigningContext().ValidatorAddressCodec(), + ), + genutilcli.ValidateGenesisCmd(tempApp.BasicModuleManager), AddGenesisAccountCmd(app.DefaultNodeHome), tmcli.NewCompletionCmd(rootCmd, true), - NewTestnetCmd(app.ModuleBasics, banktypes.GenesisBalancesIterator{}), + NewTestnetCmd(tempApp.BasicModuleManager, banktypes.GenesisBalancesIterator{}), debug.Cmd(), - config.Cmd(), + // config.Cmd(), // TODO(dudong2) ) a := appCreator{encodingConfig} - ethermintserver.AddCommands(rootCmd, app.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags) + ethermintserver.AddCommands(rootCmd, ethermintserver.NewDefaultStartOptions(a.newApp, app.DefaultNodeHome), a.appExport, addModuleInitFlags) // add keybase, auxiliary RPC, query, and tx child commands rootCmd.AddCommand( - rpc.StatusCommand(), + sdkserver.StatusCommand(), queryCommand(), txCommand(), ethermintclient.KeyCommands(app.DefaultNodeHome), @@ -131,7 +163,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { } // add rosetta - rootCmd.AddCommand(sdkserver.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Marshaler)) + // rootCmd.AddCommand(sdkserver.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Codec)) // TODO(dudong2) return rootCmd, encodingConfig } @@ -151,14 +183,13 @@ func queryCommand() *cobra.Command { } cmd.AddCommand( - authcmd.GetAccountCmd(), rpc.ValidatorCommand(), - rpc.BlockCommand(), authcmd.QueryTxsByEventsCmd(), + sdkserver.QueryBlocksCmd(), authcmd.QueryTxCmd(), + sdkserver.QueryBlockResultsCmd(), ) - app.ModuleBasics.AddQueryCommands(cmd) cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") return cmd @@ -184,7 +215,6 @@ func txCommand() *cobra.Command { authcmd.GetDecodeCommand(), ) - app.ModuleBasics.AddTxCommands(cmd) cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") return cmd @@ -212,7 +242,7 @@ type appCreator struct { // newApp is an appCreator func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { - var cache sdk.MultiStorePersistentCache + var cache storetypes.MultiStorePersistentCache if cast.ToBool(appOpts.Get(sdkserver.FlagInterBlockCache)) { cache = store.NewCommitKVStoreCacheManager() @@ -229,7 +259,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a } snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) + snapshotDB, err := dbm.NewDB("metadata", sdkserver.GetAppDBBackend(appOpts), snapshotDir) if err != nil { panic(err) } @@ -238,12 +268,16 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a panic(err) } + snapshotOptions := snapshottypes.NewSnapshotOptions( + cast.ToUint64(appOpts.Get(sdkserver.FlagStateSyncSnapshotInterval)), + cast.ToUint32(appOpts.Get(sdkserver.FlagStateSyncSnapshotKeepRecent)), + ) + cantoApp := app.NewCanto( logger, db, traceStore, true, skipUpgradeHeights, cast.ToString(appOpts.Get(flags.FlagHome)), cast.ToUint(appOpts.Get(sdkserver.FlagInvCheckPeriod)), false, - a.encCfg, appOpts, baseapp.SetPruning(pruningOpts), baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(sdkserver.FlagMinGasPrices))), @@ -253,9 +287,7 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a baseapp.SetInterBlockCache(cache), baseapp.SetTrace(cast.ToBool(appOpts.Get(sdkserver.FlagTrace))), baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(sdkserver.FlagIndexEvents))), - baseapp.SetSnapshotStore(snapshotStore), - baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(sdkserver.FlagStateSyncSnapshotInterval))), - baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(sdkserver.FlagStateSyncSnapshotKeepRecent))), + baseapp.SetSnapshot(snapshotStore, snapshotOptions), ) return cantoApp @@ -264,8 +296,14 @@ func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, a // appExport creates a new simapp (optionally at a given height) // and exports state. func (a appCreator) appExport( - logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + height int64, + forZeroHeight bool, + jailAllowedAddrs []string, appOpts servertypes.AppOptions, + modulesToExport []string, ) (servertypes.ExportedApp, error) { var cantoApp *app.Canto homePath, ok := appOpts.Get(flags.FlagHome).(string) @@ -274,14 +312,14 @@ func (a appCreator) appExport( } if height != -1 { - cantoApp = app.NewCanto(logger, db, traceStore, false, map[int64]bool{}, "", uint(1), false, a.encCfg, appOpts) + cantoApp = app.NewCanto(logger, db, traceStore, false, map[int64]bool{}, "", uint(1), false, appOpts) if err := cantoApp.LoadHeight(height); err != nil { return servertypes.ExportedApp{}, err } } else { - cantoApp = app.NewCanto(logger, db, traceStore, true, map[int64]bool{}, "", uint(1), false, a.encCfg, appOpts) + cantoApp = app.NewCanto(logger, db, traceStore, true, map[int64]bool{}, "", uint(1), false, appOpts) } - return cantoApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) + return cantoApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport) } diff --git a/cmd/cantod/testnet.go b/cmd/cantod/testnet.go index abda3e712..f14d16519 100644 --- a/cmd/cantod/testnet.go +++ b/cmd/cantod/testnet.go @@ -24,6 +24,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/crypto/keyring" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/runtime" sdkserver "github.com/cosmos/cosmos-sdk/server" srvconfig "github.com/cosmos/cosmos-sdk/server/config" "github.com/cosmos/cosmos-sdk/testutil" @@ -35,6 +36,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/evmos/ethermint/crypto/hd" @@ -147,7 +149,7 @@ Example: args.numValidators, _ = cmd.Flags().GetInt(flagNumValidators) args.algo, _ = cmd.Flags().GetString(flags.FlagKeyAlgorithm) - return initTestnetFiles(clientCtx, cmd, serverCtx.Config, mbm, genBalIterator, args) + return initTestnetFiles(clientCtx, cmd, serverCtx.Config, mbm, genBalIterator, clientCtx.TxConfig.SigningContext().ValidatorAddressCodec(), args) }, } @@ -209,6 +211,7 @@ func initTestnetFiles( nodeConfig *tmconfig.Config, mbm module.BasicManager, genBalIterator banktypes.GenesisBalancesIterator, + valAddrCodec runtime.ValidatorAddressCodec, args initArgs, ) error { if args.chainID == "" { @@ -264,7 +267,7 @@ func initTestnetFiles( memo := fmt.Sprintf("%s@%s:26656", nodeIDs[i], ip) genFiles = append(genFiles, nodeConfig.GenesisFile()) - kb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, nodeDir, inBuf, cantokr.Option()) + kb, err := keyring.New(sdk.KeyringServiceName(), args.keyringBackend, nodeDir, inBuf, clientCtx.Codec, cantokr.Option()) if err != nil { return err } @@ -331,7 +334,7 @@ func initTestnetFiles( WithKeybase(kb). WithTxConfig(clientCtx.TxConfig) - if err := tx.Sign(txFactory, nodeDirName, txBuilder, true); err != nil { + if err := tx.Sign(cmd.Context(), txFactory, nodeDirName, txBuilder, true); err != nil { return err } @@ -346,7 +349,7 @@ func initTestnetFiles( customAppTemplate, customAppConfig := config.AppConfig(cmdcfg.BaseDenom) srvconfig.SetConfigTemplate(customAppTemplate) - if err := sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig); err != nil { + if err := sdkserver.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, tmconfig.DefaultConfig()); err != nil { return err } @@ -359,7 +362,7 @@ func initTestnetFiles( err := collectGenFiles( clientCtx, nodeConfig, args.chainID, nodeIDs, valPubKeys, args.numValidators, - args.outputDir, args.nodeDirPrefix, args.nodeDaemonHome, genBalIterator, + args.outputDir, args.nodeDirPrefix, args.nodeDaemonHome, genBalIterator, valAddrCodec, ) if err != nil { return err @@ -405,7 +408,7 @@ func initGenFiles( stakingGenState.Params.BondDenom = coinDenom appGenState[stakingtypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&stakingGenState) - var govGenState govtypes.GenesisState + var govGenState govv1.GenesisState clientCtx.Codec.MustUnmarshalJSON(appGenState[govtypes.ModuleName], &govGenState) govGenState.DepositParams.MinDeposit[0].Denom = coinDenom @@ -446,7 +449,7 @@ func initGenFiles( func collectGenFiles( clientCtx client.Context, nodeConfig *tmconfig.Config, chainID string, nodeIDs []string, valPubKeys []cryptotypes.PubKey, numValidators int, - outputDir, nodeDirPrefix, nodeDaemonHome string, genBalIterator banktypes.GenesisBalancesIterator, + outputDir, nodeDirPrefix, nodeDaemonHome string, genBalIterator banktypes.GenesisBalancesIterator, valAddrCodec runtime.ValidatorAddressCodec, ) error { var appState json.RawMessage genTime := tmtime.Now() @@ -462,12 +465,21 @@ func collectGenFiles( nodeID, valPubKey := nodeIDs[i], valPubKeys[i] initCfg := genutiltypes.NewInitConfig(chainID, gentxsDir, nodeID, valPubKey) - genDoc, err := types.GenesisDocFromFile(nodeConfig.GenesisFile()) + appGenesis, err := genutiltypes.AppGenesisFromFile(nodeConfig.GenesisFile()) if err != nil { return err } - nodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.Codec, clientCtx.TxConfig, nodeConfig, initCfg, *genDoc, genBalIterator) + nodeAppState, err := genutil.GenAppStateFromConfig( + clientCtx.Codec, + clientCtx.TxConfig, + nodeConfig, + initCfg, + appGenesis, + genBalIterator, + genutiltypes.DefaultMessageValidator, + valAddrCodec, + ) if err != nil { return err } diff --git a/go.mod b/go.mod index c7253fc38..a3dd60b49 100644 --- a/go.mod +++ b/go.mod @@ -5,11 +5,17 @@ go 1.21 toolchain go1.21.4 require ( + cosmossdk.io/api v0.7.2 + cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/core v0.11.0 cosmossdk.io/log v1.2.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced cosmossdk.io/store v1.0.0 + cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 + cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c + cosmossdk.io/x/tx v0.12.0 cosmossdk.io/x/upgrade v0.1.0 github.com/cometbft/cometbft v0.38.0 github.com/cosmos/cosmos-db v1.0.0 @@ -46,14 +52,8 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.3 // indirect cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/api v0.7.2 // indirect - cosmossdk.io/client/v2 v2.0.0-beta.1 // indirect cosmossdk.io/collections v0.4.0 // indirect - cosmossdk.io/core v0.11.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect - cosmossdk.io/x/circuit v0.1.0 // indirect - cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c // indirect - cosmossdk.io/x/tx v0.12.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect @@ -238,7 +238,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 46d947150..9248765bd 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9 h1:tLXpuGcKTwzOvr7Bp2ouQJBna4OxAcdAFhP4n64d3zs= -github.com/b-harvest/ethermint v0.0.0-20231201054439-547ac13ba6a9/go.mod h1:2nnNbTeVHLe5bWkowE8XovYoW2WMWx2fnbUqYnfd7lU= +github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780 h1:+kieKYVfRmR2K+w1zruDe5cjFvLvVKGzvIPj05bJIzQ= +github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780/go.mod h1:Dar1/5v1YR/latCocqBcwBHFZCL7BkCxkNMbHuJXXv8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= diff --git a/ibc/module.go b/ibc/module.go index f6af6f18a..91a82d5aa 100644 --- a/ibc/module.go +++ b/ibc/module.go @@ -34,7 +34,7 @@ func (im Module) OnChanOpenInit( chanCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string, -) error { +) (string, error) { return im.app.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, chanCap, counterparty, version) } diff --git a/x/coinswap/types/expected_keepers.go b/x/coinswap/types/expected_keepers.go index a2d704310..9f605ce52 100644 --- a/x/coinswap/types/expected_keepers.go +++ b/x/coinswap/types/expected_keepers.go @@ -1,29 +1,30 @@ package types import ( + "context" + sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) // BankKeeper defines the expected bank keeper type BankKeeper interface { - SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error - GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin + SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error + GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetSupply(ctx sdk.Context, denom string) sdk.Coin - IterateTotalSupply(ctx sdk.Context, cb func(sdk.Coin) bool) - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) error - MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error - SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + GetSupply(ctx context.Context, denom string) sdk.Coin + IterateTotalSupply(ctx context.Context, cb func(sdk.Coin) bool) + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error + BurnCoins(ctx context.Context, name string, amt sdk.Coins) error + MintCoins(ctx context.Context, name string, amt sdk.Coins) error + SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins } // AccountKeeper defines the expected account keeper type AccountKeeper interface { - GetAccount(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI + GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI GetModuleAddress(name string) sdk.AccAddress - IterateAccounts(ctx sdk.Context, cb func(account authtypes.AccountI) (stop bool)) + IterateAccounts(ctx context.Context, cb func(account sdk.AccountI) (stop bool)) } diff --git a/x/csr/types/interfaces.go b/x/csr/types/interfaces.go index e3b102d6f..f88859650 100644 --- a/x/csr/types/interfaces.go +++ b/x/csr/types/interfaces.go @@ -15,13 +15,13 @@ import ( // AccountKeeper defines the expected interface needed to retrieve account info. type AccountKeeper interface { - GetSequence(ctx sdk.Context, addr sdk.AccAddress) (uint64, error) + GetSequence(ctx context.Context, addr sdk.AccAddress) (uint64, error) } // BankKeeper defines the expected interface needed to send tx fees from the fee collector module to the CSR module for distribution. type BankKeeper interface { - SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule string, recipientModule string, amt sdk.Coins) error + BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error } // EVMKeeper defines the expected EVM keeper interface used to make EVM deployments and txs from the module account. diff --git a/x/govshuttle/types/interfaces.go b/x/govshuttle/types/interfaces.go index a5de259db..7966a328f 100644 --- a/x/govshuttle/types/interfaces.go +++ b/x/govshuttle/types/interfaces.go @@ -1,13 +1,15 @@ package types import ( + "context" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" evmtypes "github.com/evmos/ethermint/x/evm/types" ) -//Required for deploying Map-Contract/Caling setter methods of Map-Contract +// Required for deploying Map-Contract/Caling setter methods of Map-Contract type ERC20Keeper interface { CallEVM(ctx sdk.Context, abi abi.ABI, from, contract common.Address, commit bool, method string, args ...interface{}) (*evmtypes.MsgEthereumTxResponse, error) @@ -24,11 +26,7 @@ type ERC20Keeper interface { type AccountKeeper interface { //GetAccount(ctx sdk.Context, addr sdk.AccAddress) GetModuleAddress(moduleName string) sdk.AccAddress - GetSequence(sdk.Context, sdk.AccAddress) (uint64, error) -} - -type GovKeeper interface { - GetProposalID(ctx sdk.Context) (uint64, error) + GetSequence(context.Context, sdk.AccAddress) (uint64, error) } // BankKeeper defines the expected interface needed to retrieve account balances. diff --git a/x/inflation/types/interfaces.go b/x/inflation/types/interfaces.go index 56ab2a67f..0245fc61a 100644 --- a/x/inflation/types/interfaces.go +++ b/x/inflation/types/interfaces.go @@ -18,20 +18,19 @@ type AccountKeeper interface { // BankKeeper defines the contract needed to be fulfilled for banking and supply // dependencies. type BankKeeper interface { - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin - GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error - MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) error - HasSupply(ctx sdk.Context, denom string) bool - GetSupply(ctx sdk.Context, denom string) sdk.Coin + GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin + GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins + SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error + MintCoins(ctx context.Context, name string, amt sdk.Coins) error + BurnCoins(ctx context.Context, name string, amt sdk.Coins) error + HasSupply(ctx context.Context, denom string) bool + GetSupply(ctx context.Context, denom string) sdk.Coin } // DistrKeeper defines the contract needed to be fulfilled for distribution keeper type DistrKeeper interface { - FundCommunityPool(ctx sdk.Context, amount sdk.Coins, sender sdk.AccAddress) error - GetFeePoolCommunityCoins(ctx sdk.Context) sdk.DecCoins + FundCommunityPool(ctx context.Context, amount sdk.Coins, sender sdk.AccAddress) error } // StakingKeeper expected staking keeper diff --git a/x/onboarding/types/interfaces.go b/x/onboarding/types/interfaces.go index 82d9e3f4a..9d71630da 100644 --- a/x/onboarding/types/interfaces.go +++ b/x/onboarding/types/interfaces.go @@ -13,10 +13,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" coinswaptypes "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -71,13 +69,6 @@ type AccountKeeper interface { // TransferKeeper defines the expected IBC transfer keeper. type TransferKeeper interface { GetDenomTrace(ctx sdk.Context, denomTraceHash tmbytes.HexBytes) (transfertypes.DenomTrace, bool) - SendTransfer( - ctx sdk.Context, - sourcePort, sourceChannel string, - token sdk.Coin, - sender sdk.AccAddress, receiver string, - timeoutHeight clienttypes.Height, timeoutTimestamp uint64, - ) error } // ChannelKeeper defines the expected IBC channel keeper. From 8294ab2e720e63b9c3c64ce17b1f38a1fecfdfee Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 6 Dec 2023 17:27:34 +0900 Subject: [PATCH 05/96] build: fix ibc --- ibc/module_test.go | 6 +- ibc/testing/app.go | 95 ++++----- ibc/testing/chain.go | 388 +++++++++++++++++++++--------------- ibc/testing/chain_test.go | 43 ++++ ibc/testing/coordinator.go | 5 - ibc/testing/endpoint.go | 79 ++++---- ibc/testing/events.go | 16 +- ibc/testing/path.go | 54 +++-- ibc/testing/sdk_test.go | 282 -------------------------- ibc/testing/values.go | 2 +- testutil/network/network.go | 135 ++++++++----- testutil/network/util.go | 114 +++++++---- 12 files changed, 568 insertions(+), 651 deletions(-) create mode 100644 ibc/testing/chain_test.go delete mode 100644 ibc/testing/sdk_test.go diff --git a/ibc/module_test.go b/ibc/module_test.go index 14caee843..8a2c7ebf4 100644 --- a/ibc/module_test.go +++ b/ibc/module_test.go @@ -34,9 +34,9 @@ func (m MockIBCModule) OnChanOpenInit( chanCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string, -) error { +) (string, error) { args := m.Called() - return args.Error(0) + return args.String(0), args.Error(1) } // OnChanOpenTry implements the Module interface. @@ -150,7 +150,7 @@ func TestModule(t *testing.T) { module := NewModule(mockModule) // mock calls for abstraction - err := module.OnChanOpenInit(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "") + _, err := module.OnChanOpenInit(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "") require.NoError(t, err) _, err = module.OnChanOpenTry(sdk.Context{}, channeltypes.ORDERED, nil, transfertypes.PortID, "channel-0", &capabilitytypes.Capability{}, channeltypes.Counterparty{}, "") require.NoError(t, err) diff --git a/ibc/testing/app.go b/ibc/testing/app.go index 59e4a9bd8..7af36cad4 100644 --- a/ibc/testing/app.go +++ b/ibc/testing/app.go @@ -9,27 +9,27 @@ import ( "cosmossdk.io/log" sdkmath "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" "github.com/cosmos/ibc-go/v8/modules/core/keeper" "github.com/cosmos/ibc-go/v8/testing/simapp" + ibctestingtypes "github.com/cosmos/ibc-go/v8/testing/types" - "github.com/evmos/ethermint/encoding" ethermint "github.com/evmos/ethermint/types" abci "github.com/cometbft/cometbft/abci/types" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmtypes "github.com/cometbft/cometbft/types" dbm "github.com/cosmos/cosmos-db" @@ -41,11 +41,11 @@ var DefaultTestingAppInit func() (TestingApp, map[string]json.RawMessage) = Setu var CantoTestingAppInit func() (TestingApp, map[string]json.RawMessage) = SetupTestingCantoApp type TestingApp interface { - abci.Application + servertypes.ABCI // ibc-go additions GetBaseApp() *baseapp.BaseApp - GetStakingKeeper() stakingkeeper.Keeper + GetStakingKeeper() ibctestingtypes.StakingKeeper GetIBCKeeper() *keeper.Keeper GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper GetTxConfig() client.TxConfig @@ -54,29 +54,31 @@ type TestingApp interface { AppCodec() codec.Codec // Implemented by BaseApp - LastCommitID() sdk.CommitID + LastCommitID() storetypes.CommitID LastBlockHeight() int64 } func SetupTestingApp() (TestingApp, map[string]json.RawMessage) { db := dbm.NewMemDB() - encCdc := moduletestutil.MakeTestEncodingConfig() - app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, map[int64]bool{}, simapp.DefaultNodeHome, 5, encCdc, simapp.EmptyAppOptions{}) - return app, simapp.NewDefaultGenesisState(encCdc.Marshaler) + app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, simtestutil.EmptyAppOptions{}) + return app, app.DefaultGenesis() } // SetupTestingApp initializes the IBC-go testing application func SetupTestingCantoApp() (TestingApp, map[string]json.RawMessage) { db := dbm.NewMemDB() - cfg := encoding.MakeConfig(cantoapp.ModuleBasics) - app := cantoapp.NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, cantoapp.DefaultNodeHome, 5, false, cfg, simapp.EmptyAppOptions{}) + app := cantoapp.NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, cantoapp.DefaultNodeHome, 5, false, simtestutil.EmptyAppOptions{}) return app, cantoapp.NewDefaultGenesisState() } -func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, powerReduction sdkmath.Int, balances ...banktypes.Balance) TestingApp { +func SetupWithGenesisValSet(tb testing.TB, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, powerReduction sdkmath.Int, balances ...banktypes.Balance) TestingApp { + tb.Helper() app, genesisState := DefaultTestingAppInit() + // ensure baseapp has a chain-id set before running InitChain + baseapp.SetChainID(chainID)(app.GetBaseApp()) + // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) @@ -87,10 +89,10 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs bondAmt := sdk.TokensFromConsensusPower(1, powerReduction) for _, val := range valSet.Validators { - pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey) - require.NoError(t, err) + pk, err := cryptocodec.FromCmtPubKeyInterface(val.PubKey) + require.NoError(tb, err) pkAny, err := codectypes.NewAnyWithValue(pk) - require.NoError(t, err) + require.NoError(tb, err) validator := stakingtypes.Validator{ OperatorAddress: sdk.ValAddress(val.Address).String(), ConsensusPubkey: pkAny, @@ -115,8 +117,6 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs bondDenom := stakingGenesis.Params.BondDenom - totalSupply := sdk.NewCoins() - // add bonded amount to bonded pool module account balances = append(balances, banktypes.Balance{ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(), @@ -128,33 +128,19 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs genesisState[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&stakingGenesis) // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{}) genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) stateBytes, err := json.MarshalIndent(genesisState, "", " ") - require.NoError(t, err) + require.NoError(tb, err) // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ + _, err = app.InitChain( + &abci.RequestInitChain{ ChainId: chainID, Validators: []abci.ValidatorUpdate{}, - ConsensusParams: simapp.DefaultConsensusParams, AppStateBytes: stateBytes, - }, - ) - - // commit genesis changes - app.Commit() - app.BeginBlock( - abci.RequestBeginBlock{ - Header: tmproto.Header{ - ChainID: chainID, - Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), - NextValidatorsHash: valSet.Hash(), - }, + ConsensusParams: simtestutil.DefaultConsensusParams, }, ) @@ -165,8 +151,13 @@ func SetupWithGenesisValSet(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs // that also act as delegators. For simplicity, each validator is bonded with a delegation // of one consensus engine unit (10^6) in the default token of the simapp from first genesis // account. A Nop logger is set in SimApp. -func SetupWithGenesisValSetCanto(t *testing.T, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, balances ...banktypes.Balance) TestingApp { +func SetupWithGenesisValSetCanto(tb testing.TB, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, chainID string, balances ...banktypes.Balance) TestingApp { + tb.Helper() app, genesisState := DefaultTestingAppInit() + + // ensure baseapp has a chain-id set before running InitChain + baseapp.SetChainID(chainID)(app.GetBaseApp()) + // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(authGenesis) @@ -177,10 +168,10 @@ func SetupWithGenesisValSetCanto(t *testing.T, valSet *tmtypes.ValidatorSet, gen bondAmt := sdk.TokensFromConsensusPower(1, ethermint.PowerReduction) for _, val := range valSet.Validators { - pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey) - require.NoError(t, err) + pk, err := cryptocodec.FromCmtPubKeyInterface(val.PubKey) + require.NoError(tb, err) pkAny, err := codectypes.NewAnyWithValue(pk) - require.NoError(t, err) + require.NoError(tb, err) validator := stakingtypes.Validator{ OperatorAddress: sdk.ValAddress(val.Address).String(), ConsensusPubkey: pkAny, @@ -195,7 +186,7 @@ func SetupWithGenesisValSetCanto(t *testing.T, valSet *tmtypes.ValidatorSet, gen MinSelfDelegation: sdkmath.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdkmath.LegacyOneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), val.Address.String(), sdkmath.LegacyOneDec())) } // set validators and delegations @@ -215,32 +206,22 @@ func SetupWithGenesisValSetCanto(t *testing.T, valSet *tmtypes.ValidatorSet, gen }) // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, totalSupply, []banktypes.Metadata{}, []banktypes.SendEnabled{}) genesisState[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(bankGenesis) stateBytes, err := json.MarshalIndent(genesisState, "", " ") - require.NoError(t, err) + require.NoError(tb, err) // init chain will set the validator set and initialize the genesis accounts - app.InitChain( - abci.RequestInitChain{ + _, err = app.InitChain( + &abci.RequestInitChain{ ChainId: chainID, Validators: []abci.ValidatorUpdate{}, ConsensusParams: cantoapp.DefaultConsensusParams, AppStateBytes: stateBytes, }, ) - - // commit genesis changes - app.Commit() - app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{ - ChainID: chainID, - Height: app.LastBlockHeight() + 1, - AppHash: app.LastCommitID().Hash, - ValidatorsHash: valSet.Hash(), - NextValidatorsHash: valSet.Hash(), - ProposerAddress: valSet.Proposer.Address, - }}) + require.NoError(tb, err) return app } diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go index 3044bf911..25926976f 100644 --- a/ibc/testing/chain.go +++ b/ibc/testing/chain.go @@ -1,29 +1,31 @@ package ibctesting import ( - "bytes" "fmt" + "math/rand" "testing" "time" "github.com/stretchr/testify/require" errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - stakingtestutil "github.com/cosmos/cosmos-sdk/x/staking/testutil" + "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" commitmenttypes "github.com/cosmos/ibc-go/v8/modules/core/23-commitment/types" host "github.com/cosmos/ibc-go/v8/modules/core/24-host" "github.com/cosmos/ibc-go/v8/modules/core/exported" @@ -50,7 +52,7 @@ var MaxAccounts = 10 type SenderAccount struct { SenderPrivKey cryptotypes.PrivKey - SenderAccount authtypes.AccountI + SenderAccount sdk.AccountI } // ChainIDPrefix defines the default chain ID prefix for canto test chains @@ -62,25 +64,36 @@ var ChainIDPrefixCanto = "canto_9000-" // is used for delivering transactions through the application state. // NOTE: the actual application uses an empty chain-id for ease of testing. type TestChain struct { - *testing.T + testing.TB Coordinator *Coordinator App TestingApp ChainID string - LastHeader *ibctmtypes.Header // header for last block height committed - CurrentHeader tmproto.Header // header for current block height + LastHeader *ibctm.Header // header for last block height committed + CurrentHeader tmproto.Header // header for current block height QueryServer types.QueryServer TxConfig client.TxConfig Codec codec.BinaryCodec - Vals *tmtypes.ValidatorSet - Signers []tmtypes.PrivValidator + Vals *tmtypes.ValidatorSet + NextVals *tmtypes.ValidatorSet + + // Signers is a map from validator address to the PrivValidator + // The map is converted into an array that is the same order as the validators right before signing commit + // This ensures that signers will always be in correct order even as validator powers change. + // If a test adds a new validator after chain creation, then the signer map must be updated to include + // the new PrivValidator entry. + Signers map[string]tmtypes.PrivValidator // autogenerated sender private key SenderPrivKey cryptotypes.PrivKey SenderAccount authtypes.AccountI SenderAccounts []SenderAccount + + // Short-term solution to override the logic of the standard SendMsgs function. + // See issue https://github.com/cosmos/ibc-go/issues/3123 for more information. + SendMsgsOverride func(msgs ...sdk.Msg) (*abci.ExecTxResult, error) } // NewTestChainWithValSet initializes a new TestChain instance with the given validator set @@ -98,7 +111,8 @@ type TestChain struct { // // CONTRACT: Validator and signer array must be provided in the order expected by Tendermint. // i.e. sorted first by power and then lexicographically by address. -func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, valSet *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *TestChain { +func NewTestChainWithValSet(tb testing.TB, coord *Coordinator, chainID string, valSet *tmtypes.ValidatorSet, signers map[string]tmtypes.PrivValidator) *TestChain { + tb.Helper() genAccs := []authtypes.GenesisAccount{} genBals := []banktypes.Balance{} senderAccs := []SenderAccount{} @@ -108,7 +122,7 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va senderPrivKey := secp256k1.GenPrivKey() acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), uint64(i), 0) amount, ok := sdkmath.NewIntFromString("10000000000000000000") - require.True(t, ok) + require.True(tb, ok) balance := banktypes.Balance{ Address: acc.GetAddress().String(), @@ -126,7 +140,7 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va senderAccs = append(senderAccs, senderAcc) } - app := SetupWithGenesisValSet(t, valSet, genAccs, chainID, sdk.DefaultPowerReduction, genBals...) + app := SetupWithGenesisValSet(tb, valSet, genAccs, chainID, sdk.DefaultPowerReduction, genBals...) // create current header and call begin block header := tmproto.Header{ @@ -139,7 +153,7 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va // create an account to send transactions from chain := &TestChain{ - T: t, + TB: tb, Coordinator: coord, ChainID: chainID, App: app, @@ -148,13 +162,15 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va TxConfig: txConfig, Codec: app.AppCodec(), Vals: valSet, + NextVals: valSet, Signers: signers, SenderPrivKey: senderAccs[0].SenderPrivKey, SenderAccount: senderAccs[0].SenderAccount, SenderAccounts: senderAccs, } - coord.CommitBlock(chain) + // commit genesis blocks + chain.NextBlock() return chain } @@ -162,6 +178,7 @@ func NewTestChainWithValSet(t *testing.T, coord *Coordinator, chainID string, va // NewTestChain initializes a new test chain with a default of 4 validators // Use this function if the tests do not need custom control over the validator set func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { + t.Helper() // generate validators private/public key var ( validatorsPerChain = 4 @@ -170,7 +187,7 @@ func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { ) for i := 0; i < validatorsPerChain; i++ { - privVal := mock.NewPV() + _, privVal := tmtypes.RandValidator(false, 100) pubKey, err := privVal.GetPubKey() require.NoError(t, err) validators = append(validators, tmtypes.NewValidator(pubKey, 1)) @@ -182,13 +199,7 @@ func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { // or, if equal, by address lexical order valSet := tmtypes.NewValidatorSet(validators) - // create signers indexed by the valSet validators's order - signers := []tmtypes.PrivValidator{} - for _, val := range valSet.Validators { - signers = append(signers, signersByAddress[val.PubKey.Address().String()]) - } - - return NewTestChainWithValSet(t, coord, chainID, valSet, signers) + return NewTestChainWithValSet(t, coord, chainID, valSet, signersByAddress) } // NewTestChain initializes a new TestChain instance with a single validator set using a @@ -200,6 +211,7 @@ func NewTestChain(t *testing.T, coord *Coordinator, chainID string) *TestChain { // Time management is handled by the Coordinator in order to ensure synchrony between chains. // Each update of any chain increments the block header time for all chains by 5 seconds. func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestChain { + t.Helper() // generate validator private/public key privVal := mock.NewPV() pubKey, err := privVal.GetPubKey() @@ -208,7 +220,9 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh // create validator set with single validator validator := tmtypes.NewValidator(pubKey, 1) valSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{validator}) - signers := []tmtypes.PrivValidator{privVal} + signers := map[string]tmtypes.PrivValidator{ + pubKey.Address().String(): privVal, + } // generate genesis account senderPrivKey, err := ethsecp256k1.GenerateKey() @@ -244,7 +258,7 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh // create an account to send transactions from chain := &TestChain{ - T: t, + TB: t, Coordinator: coord, ChainID: chainID, App: app, @@ -253,9 +267,16 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh TxConfig: txConfig, Codec: app.AppCodec(), Vals: valSet, + NextVals: valSet, Signers: signers, SenderPrivKey: senderPrivKey, SenderAccount: acc, + SenderAccounts: []SenderAccount{ + SenderAccount{ + SenderAccount: acc, + SenderPrivKey: senderPrivKey, + }, + }, } coord.CommitBlock(chain) @@ -273,7 +294,7 @@ func (chain *TestChain) GetContext() sdk.Context { // their own SimApp. func (chain *TestChain) GetSimApp() *simapp.SimApp { app, ok := chain.App.(*simapp.SimApp) - require.True(chain.T, ok) + require.True(chain.TB, ok) return app } @@ -284,22 +305,31 @@ func (chain *TestChain) QueryProof(key []byte) ([]byte, clienttypes.Height) { return chain.QueryProofAtHeight(key, chain.App.LastBlockHeight()) } -// QueryProof performs an abci query with the given key and returns the proto encoded merkle proof -// for the query and the height at which the proof will succeed on a tendermint verifier. +// QueryProofAtHeight performs an abci query with the given key and returns the proto encoded merkle proof +// for the query and the height at which the proof will succeed on a tendermint verifier. Only the IBC +// store is supported func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, clienttypes.Height) { - res, err := chain.App.Query(abci.RequestQuery{ - Path: fmt.Sprintf("store/%s/key", host.StoreKey), - Height: height - 1, - Data: key, - Prove: true, - }) - require.NoError(chain.T, err) + return chain.QueryProofForStore(exported.StoreKey, key, height) +} + +// QueryProofForStore performs an abci query with the given key and returns the proto encoded merkle proof +// for the query and the height at which the proof will succeed on a tendermint verifier. +func (chain *TestChain) QueryProofForStore(storeKey string, key []byte, height int64) ([]byte, clienttypes.Height) { + res, err := chain.App.Query( + chain.GetContext().Context(), + &abci.RequestQuery{ + Path: fmt.Sprintf("store/%s/key", storeKey), + Height: height - 1, + Data: key, + Prove: true, + }) + require.NoError(chain.TB, err) merkleProof, err := commitmenttypes.ConvertProofs(res.ProofOps) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) proof, err := chain.App.AppCodec().Marshal(&merkleProof) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) revision := clienttypes.ParseChainID(chain.ChainID) @@ -312,18 +342,21 @@ func (chain *TestChain) QueryProofAtHeight(key []byte, height int64) ([]byte, cl // QueryUpgradeProof performs an abci query with the given key and returns the proto encoded merkle proof // for the query and the height at which the proof will succeed on a tendermint verifier. func (chain *TestChain) QueryUpgradeProof(key []byte, height uint64) ([]byte, clienttypes.Height) { - res := chain.App.Query(abci.RequestQuery{ - Path: "store/upgrade/key", - Height: int64(height - 1), - Data: key, - Prove: true, - }) + res, err := chain.App.Query( + chain.GetContext().Context(), + &abci.RequestQuery{ + Path: "store/upgrade/key", + Height: int64(height - 1), + Data: key, + Prove: true, + }) + require.NoError(chain.TB, err) merkleProof, err := commitmenttypes.ConvertProofs(res.ProofOps) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) proof, err := chain.App.AppCodec().Marshal(&merkleProof) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) revision := clienttypes.ParseChainID(chain.ChainID) @@ -347,13 +380,33 @@ func (chain *TestChain) QueryConsensusStateProof(clientID string) ([]byte, clien // NextBlock sets the last header to the current header and increments the current header to be // at the next block height. It does not update the time as that is handled by the Coordinator. -// -// CONTRACT: this function must only be called after app.Commit() occurs +// It will call FinalizeBlock and Commit and apply the validator set changes to the next validators +// of the next block being created. This follows the Tendermint protocol of applying valset changes +// returned on block `n` to the validators of block `n+2`. +// It calls BeginBlock with the new block created before returning. func (chain *TestChain) NextBlock() { + res, err := chain.App.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: chain.CurrentHeader.Height, + Time: chain.CurrentHeader.GetTime(), + NextValidatorsHash: chain.NextVals.Hash(), + }) + require.NoError(chain.TB, err) + chain.commitBlock(res) +} + +func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) { + _, err := chain.App.Commit() + require.NoError(chain.TB, err) + // set the last header to the current header // use nil trusted fields chain.LastHeader = chain.CurrentTMClientHeader() + // val set changes returned from previous block get applied to the next validators + // of this block. See tendermint spec for details. + chain.Vals = chain.NextVals + chain.NextVals = ApplyValSetChanges(chain, chain.Vals, res.ValidatorUpdates) + // increment the current header chain.CurrentHeader = tmproto.Header{ ChainID: chain.ChainID, @@ -363,11 +416,9 @@ func (chain *TestChain) NextBlock() { // chains. Time: chain.CurrentHeader.Time, ValidatorsHash: chain.Vals.Hash(), - NextValidatorsHash: chain.Vals.Hash(), + NextValidatorsHash: chain.NextVals.Hash(), ProposerAddress: chain.CurrentHeader.ProposerAddress, } - - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) } // sendMsgs delivers a transaction through the application without returning the result. @@ -379,41 +430,56 @@ func (chain *TestChain) sendMsgs(msgs ...sdk.Msg) error { // SendMsgs delivers a transaction through the application. It updates the senders sequence // number and updates the TestChain's headers. It returns the result and error if one // occurred. -func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*sdk.Result, error) { +func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*abci.ExecTxResult, error) { + if chain.SendMsgsOverride != nil { + return chain.SendMsgsOverride(msgs...) + } + // ensure the chain has the latest time chain.Coordinator.UpdateTimeForChain(chain) - _, r, err := SignAndDeliver( - chain.T, + resp, err := SignAndDeliver( + chain.TB, chain.TxConfig, chain.App.GetBaseApp(), - chain.GetContext().BlockHeader(), msgs, chain.ChainID, []uint64{chain.SenderAccount.GetAccountNumber()}, []uint64{chain.SenderAccount.GetSequence()}, - true, true, chain.SenderPrivKey, + true, + chain.CurrentHeader.GetTime(), + chain.NextVals.Hash(), + chain.SenderPrivKey, ) if err != nil { return nil, err } - // SignAndDeliver calls app.Commit() - chain.NextBlock() + chain.commitBlock(resp) + + require.Len(chain.TB, resp.TxResults, 1) + txResult := resp.TxResults[0] + + if txResult.Code != 0 { + return txResult, fmt.Errorf("%s/%d: %q", txResult.Codespace, txResult.Code, txResult.Log) + } // increment sequence for successful transaction execution - chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) + err = chain.SenderAccount.SetSequence(chain.SenderAccount.GetSequence() + 1) + if err != nil { + return nil, err + } chain.Coordinator.IncrementTime() - return r, nil + return txResult, nil } // GetClientState retrieves the client state for the provided clientID. The client is // expected to exist otherwise testing will fail. func (chain *TestChain) GetClientState(clientID string) exported.ClientState { clientState, found := chain.App.GetIBCKeeper().ClientKeeper.GetClientState(chain.GetContext(), clientID) - require.True(chain.T, found) + require.True(chain.TB, found) return clientState } @@ -426,15 +492,31 @@ func (chain *TestChain) GetConsensusState(clientID string, height exported.Heigh // GetValsAtHeight will return the validator set of the chain at a given height. It will return // a success boolean depending on if the validator set exists or not at that height. -func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bool) { - histInfo, ok := chain.App.GetStakingKeeper().GetHistoricalInfo(chain.GetContext(), height) - if !ok { +func (chain *TestChain) GetValsAtHeight(trustedHeight int64) (*tmtypes.ValidatorSet, bool) { + // historical information does not store the validator set which committed the header at + // height h. During BeginBlock, it stores the last updated validator set. This is equivalent to + // the next validator set at height h. This is because cometbft processes the validator set + // as follows: + // + // valSetChanges := endBlock() + // chain.Vals = chain.NextVals + // chain.NextVals = applyValSetChanges(chain.NextVals, valSetChanges) + // + // At height h, the validators in the historical information are the: + // validators used to sign height h + 1 (next validator set) + // + // Since we want to return the trusted validator set, which is the next validator set + // for height h, we can simply query using the trusted height. + histInfo, err := chain.App.GetStakingKeeper().GetHistoricalInfo(chain.GetContext(), trustedHeight) + if err != nil { return nil, false } - valSet := stakingtypes.Validators(histInfo.Valset) + valSet := stakingtypes.Validators{ + Validators: histInfo.Valset, + } - tmValidators, err := stakingtestutil.ToCmtValidators(valSet, sdk.DefaultPowerReduction) + tmValidators, err := testutil.ToCmtValidators(valSet, sdk.DefaultPowerReduction) if err != nil { panic(err) } @@ -445,7 +527,7 @@ func (chain *TestChain) GetValsAtHeight(height int64) (*tmtypes.ValidatorSet, bo // acknowledgement does not exist then testing will fail. func (chain *TestChain) GetAcknowledgement(packet exported.PacketI) []byte { ack, found := chain.App.GetIBCKeeper().ChannelKeeper.GetPacketAcknowledgement(chain.GetContext(), packet.GetDestPort(), packet.GetDestChannel(), packet.GetSequence()) - require.True(chain.T, found) + require.True(chain.TB, found) return ack } @@ -457,13 +539,13 @@ func (chain *TestChain) GetPrefix() commitmenttypes.MerklePrefix { // ConstructUpdateTMClientHeader will construct a valid 07-tendermint Header to update the // light client on the source chain. -func (chain *TestChain) ConstructUpdateTMClientHeader(counterparty *TestChain, clientID string) (*ibctmtypes.Header, error) { +func (chain *TestChain) ConstructUpdateTMClientHeader(counterparty *TestChain, clientID string) (*ibctm.Header, error) { return chain.ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty, clientID, clienttypes.ZeroHeight()) } // ConstructUpdateTMClientHeader will construct a valid 07-tendermint Header to update the // light client on the source chain. -func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty *TestChain, clientID string, trustedHeight clienttypes.Height) (*ibctmtypes.Header, error) { +func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterparty *TestChain, clientID string, trustedHeight clienttypes.Height) (*ibctm.Header, error) { header := counterparty.LastHeader // Relayer must query for LatestHeight on client to get TrustedHeight if the trusted height is not set if trustedHeight.IsZero() { @@ -473,21 +555,12 @@ func (chain *TestChain) ConstructUpdateTMClientHeaderWithTrustedHeight(counterpa tmTrustedVals *tmtypes.ValidatorSet ok bool ) - // Once we get TrustedHeight from client, we must query the validators from the counterparty chain - // If the LatestHeight == LastHeader.Height, then TrustedValidators are current validators - // If LatestHeight < LastHeader.Height, we can query the historical validator set from HistoricalInfo - if trustedHeight == counterparty.LastHeader.GetHeight() { - tmTrustedVals = counterparty.Vals - } else { - // NOTE: We need to get validators from counterparty at height: trustedHeight+1 - // since the last trusted validators for a header at height h - // is the NextValidators at h+1 committed to in header h by - // NextValidatorsHash - tmTrustedVals, ok = counterparty.GetValsAtHeight(int64(trustedHeight.RevisionHeight + 1)) - if !ok { - return nil, errorsmod.Wrapf(ibctmtypes.ErrInvalidHeaderHeight, "could not retrieve trusted validators at trustedHeight: %d", trustedHeight) - } + + tmTrustedVals, ok = counterparty.GetValsAtHeight(int64(trustedHeight.RevisionHeight)) + if !ok { + return nil, errorsmod.Wrapf(ibctm.ErrInvalidHeaderHeight, "could not retrieve trusted validators at trustedHeight: %d", trustedHeight) } + // inject trusted fields into last header // for now assume revision number is 0 header.TrustedHeight = trustedHeight @@ -509,20 +582,27 @@ func (chain *TestChain) ExpireClient(amount time.Duration) { // CurrentTMClientHeader creates a TM header using the current header parameters // on the chain. The trusted fields in the header are set to nil. -func (chain *TestChain) CurrentTMClientHeader() *ibctmtypes.Header { - return chain.CreateTMClientHeader(chain.ChainID, chain.CurrentHeader.Height, clienttypes.Height{}, chain.CurrentHeader.Time, chain.Vals, nil, chain.Signers) +func (chain *TestChain) CurrentTMClientHeader() *ibctm.Header { + return chain.CreateTMClientHeader( + chain.ChainID, + chain.CurrentHeader.Height, + clienttypes.Height{}, + chain.CurrentHeader.Time, + chain.Vals, + chain.NextVals, + nil, + chain.Signers, + ) } // CreateTMClientHeader creates a TM header to update the TM client. Args are passed in to allow // caller flexibility to use params that differ from the chain. -func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, tmTrustedVals *tmtypes.ValidatorSet, signers []tmtypes.PrivValidator) *ibctmtypes.Header { +func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, trustedHeight clienttypes.Height, timestamp time.Time, tmValSet, nextVals, tmTrustedVals *tmtypes.ValidatorSet, signers map[string]tmtypes.PrivValidator) *ibctm.Header { var ( valSet *tmproto.ValidatorSet trustedVals *tmproto.ValidatorSet ) - require.NotNil(chain.T, tmValSet) - - vsetHash := tmValSet.Hash() + require.NotNil(chain.TB, tmValSet) tmHeader := tmtypes.Header{ Version: tmprotoversion.Consensus{Block: tmversion.BlockProtocol, App: 2}, @@ -532,8 +612,8 @@ func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, LastBlockID: MakeBlockID(make([]byte, tmhash.Size), 10_000, make([]byte, tmhash.Size)), LastCommitHash: chain.App.LastCommitID().Hash, DataHash: tmhash.Sum([]byte("data_hash")), - ValidatorsHash: vsetHash, - NextValidatorsHash: vsetHash, + ValidatorsHash: tmValSet.Hash(), + NextValidatorsHash: nextVals.Hash(), ConsensusHash: tmhash.Sum([]byte("consensus_hash")), AppHash: chain.CurrentHeader.AppHash, LastResultsHash: tmhash.Sum([]byte("last_results_hash")), @@ -545,27 +625,35 @@ func (chain *TestChain) CreateTMClientHeader(chainID string, blockHeight int64, blockID := MakeBlockID(hhash, 3, tmhash.Sum([]byte("part_set"))) voteSet := tmtypes.NewVoteSet(chainID, blockHeight, 1, tmproto.PrecommitType, tmValSet) - commit, err := tmtypes.MakeCommit(blockID, blockHeight, 1, voteSet, signers, timestamp) - require.NoError(chain.T, err) + // MakeCommit expects a signer array in the same order as the validator array. + // Thus we iterate over the ordered validator set and construct a signer array + // from the signer map in the same order. + var signerArr []tmtypes.PrivValidator //nolint:prealloc // using prealloc here would be needlessly complex + for _, v := range tmValSet.Validators { //nolint:staticcheck // need to check for nil validator set + signerArr = append(signerArr, signers[v.Address.String()]) + } + + extCommit, err := tmtypes.MakeExtCommit(blockID, blockHeight, 1, voteSet, signerArr, timestamp, false) + require.NoError(chain.TB, err) signedHeader := &tmproto.SignedHeader{ Header: tmHeader.ToProto(), - Commit: commit.ToProto(), + Commit: extCommit.ToCommit().ToProto(), } if tmValSet != nil { valSet, err = tmValSet.ToProto() - require.NoError(chain.T, err) + require.NoError(chain.TB, err) } if tmTrustedVals != nil { trustedVals, err = tmTrustedVals.ToProto() - require.NoError(chain.T, err) + require.NoError(chain.TB, err) } // The trusted fields may be nil. They may be filled before relaying messages to a client. // The relayer is responsible for querying client and injecting appropriate trusted fields. - return &ibctmtypes.Header{ + return &ibctm.Header{ SignedHeader: signedHeader, ValidatorSet: valSet, TrustedHeight: trustedHeight, @@ -584,26 +672,6 @@ func MakeBlockID(hash []byte, partSetSize uint32, partSetHash []byte) tmtypes.Bl } } -// CreateSortedSignerArray takes two PrivValidators, and the corresponding Validator structs -// (including voting power). It returns a signer array of PrivValidators that matches the -// sorting of ValidatorSet. -// The sorting is first by .VotingPower (descending), with secondary index of .Address (ascending). -func CreateSortedSignerArray(altPrivVal, suitePrivVal tmtypes.PrivValidator, - altVal, suiteVal *tmtypes.Validator, -) []tmtypes.PrivValidator { - switch { - case altVal.VotingPower > suiteVal.VotingPower: - return []tmtypes.PrivValidator{altPrivVal, suitePrivVal} - case altVal.VotingPower < suiteVal.VotingPower: - return []tmtypes.PrivValidator{suitePrivVal, altPrivVal} - default: - if bytes.Compare(altVal.Address, suiteVal.Address) == -1 { - return []tmtypes.PrivValidator{altPrivVal, suitePrivVal} - } - return []tmtypes.PrivValidator{suitePrivVal, altPrivVal} - } -} - // CreatePortCapability binds and claims a capability for the given portID if it does not // already exist. This function will fail testing on any resulting error. // NOTE: only creation of a capability for a transfer or mock port is supported @@ -614,25 +682,23 @@ func (chain *TestChain) CreatePortCapability(scopedKeeper capabilitykeeper.Scope if !ok { // create capability using the IBC capability keeper cap, err := chain.App.GetScopedIBCKeeper().NewCapability(chain.GetContext(), host.PortPath(portID)) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) // claim capability using the scopedKeeper err = scopedKeeper.ClaimCapability(chain.GetContext(), cap, host.PortPath(portID)) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) } - chain.App.Commit() - chain.NextBlock() } // GetPortCapability returns the port capability for the given portID. The capability must // exist, otherwise testing will fail. func (chain *TestChain) GetPortCapability(portID string) *capabilitytypes.Capability { - cap, ok := chain.App.GetScopedIBCKeeper().GetCapability(chain.GetContext(), host.PortPath(portID)) - require.True(chain.T, ok) + capability, ok := chain.App.GetScopedIBCKeeper().GetCapability(chain.GetContext(), host.PortPath(portID)) + require.True(chain.TB, ok) - return cap + return capability } // CreateChannelCapability binds and claims a capability for the given portID and channelID @@ -644,23 +710,21 @@ func (chain *TestChain) CreateChannelCapability(scopedKeeper capabilitykeeper.Sc _, ok := chain.App.GetScopedIBCKeeper().GetCapability(chain.GetContext(), capName) if !ok { cap, err := chain.App.GetScopedIBCKeeper().NewCapability(chain.GetContext(), capName) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) err = scopedKeeper.ClaimCapability(chain.GetContext(), cap, capName) - require.NoError(chain.T, err) + require.NoError(chain.TB, err) } - chain.App.Commit() - chain.NextBlock() } // GetChannelCapability returns the channel capability for the given portID and channelID. // The capability must exist, otherwise testing will fail. func (chain *TestChain) GetChannelCapability(portID, channelID string) *capabilitytypes.Capability { - cap, ok := chain.App.GetScopedIBCKeeper().GetCapability(chain.GetContext(), host.ChannelCapabilityPath(portID, channelID)) - require.True(chain.T, ok) + capability, ok := chain.App.GetScopedIBCKeeper().GetCapability(chain.GetContext(), host.ChannelCapabilityPath(portID, channelID)) + require.True(chain.TB, ok) - return cap + return capability } // GetTimeoutHeight is a convenience function which returns a IBC packet timeout height @@ -669,52 +733,50 @@ func (chain *TestChain) GetTimeoutHeight() clienttypes.Height { return clienttypes.NewHeight(clienttypes.ParseChainID(chain.ChainID), uint64(chain.GetContext().BlockHeight())+100) } -func NewTransferPath(chainA, chainB *TestChain) *Path { - path := NewPath(chainA, chainB) - path.EndpointA.ChannelConfig.PortID = TransferPort - path.EndpointB.ChannelConfig.PortID = TransferPort - - path.EndpointA.ChannelConfig.Order = channeltypes.UNORDERED - path.EndpointB.ChannelConfig.Order = channeltypes.UNORDERED - path.EndpointA.ChannelConfig.Version = "ics20-1" - path.EndpointB.ChannelConfig.Version = "ics20-1" - - return path -} - // SignAndDeliver signs and delivers a transaction. No simulation occurs as the // ibc testing package causes checkState and deliverState to diverge in block time. +// +// CONTRACT: BeginBlock must be called before this function. func SignAndDeliver( - t *testing.T, txCfg client.TxConfig, app *bam.BaseApp, header tmproto.Header, msgs []sdk.Msg, - chainID string, accNums, accSeqs []uint64, expSimPass, expPass bool, priv ...cryptotypes.PrivKey, -) (sdk.GasInfo, *sdk.Result, error) { - - tx, err := helpers.GenTx( + tb testing.TB, txCfg client.TxConfig, app *bam.BaseApp, msgs []sdk.Msg, + chainID string, accNums, accSeqs []uint64, expPass bool, blockTime time.Time, nextValHash []byte, priv ...cryptotypes.PrivKey, +) (*abci.ResponseFinalizeBlock, error) { + tb.Helper() + tx, err := simtestutil.GenSignedMockTx( + rand.New(rand.NewSource(time.Now().UnixNano())), txCfg, msgs, sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, - helpers.DefaultGenTxGas*5, + simtestutil.DefaultGenTxGas, chainID, accNums, accSeqs, priv..., ) - require.NoError(t, err) + require.NoError(tb, err) - // Simulate a sending a transaction and committing a block - app.BeginBlock(abci.RequestBeginBlock{Header: header}) - gInfo, res, err := app.Deliver(txCfg.TxEncoder(), tx) + txBytes, err := txCfg.TxEncoder()(tx) + require.NoError(tb, err) - if expPass { - require.NoError(t, err) - require.NotNil(t, res) - } else { - require.Error(t, err) - require.Nil(t, res) - } + return app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + Time: blockTime, + NextValidatorsHash: nextValHash, + Txs: [][]byte{txBytes}, + }) +} + +// ApplyValSetChanges takes in tmtypes.ValidatorSet and []abci.ValidatorUpdate and will return a new tmtypes.ValidatorSet which has the +// provided validator updates applied to the provided validator set. +func ApplyValSetChanges(tb testing.TB, valSet *tmtypes.ValidatorSet, valUpdates []abci.ValidatorUpdate) *tmtypes.ValidatorSet { + tb.Helper() + updates, err := tmtypes.PB2TM.ValidatorUpdates(valUpdates) + require.NoError(tb, err) - app.EndBlock(abci.RequestEndBlock{}) - app.Commit() + // must copy since validator set will mutate with UpdateWithChangeSet + newVals := valSet.Copy() + err = newVals.UpdateWithChangeSet(updates) + require.NoError(tb, err) - return gInfo, res, err + return newVals } diff --git a/ibc/testing/chain_test.go b/ibc/testing/chain_test.go new file mode 100644 index 000000000..ea0e2cbe6 --- /dev/null +++ b/ibc/testing/chain_test.go @@ -0,0 +1,43 @@ +package ibctesting_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + sdkmath "cosmossdk.io/math" + + "github.com/cosmos/cosmos-sdk/x/staking/types" + + ibctesting "github.com/cosmos/ibc-go/v8/testing" +) + +func TestChangeValSet(t *testing.T) { + coord := ibctesting.NewCoordinator(t, 2) + chainA := coord.GetChain(ibctesting.GetChainID(1)) + chainB := coord.GetChain(ibctesting.GetChainID(2)) + + path := ibctesting.NewPath(chainA, chainB) + coord.Setup(path) + + amount, ok := sdkmath.NewIntFromString("10000000000000000000") + require.True(t, ok) + amount2, ok := sdkmath.NewIntFromString("30000000000000000000") + require.True(t, ok) + + val, err := chainA.GetSimApp().StakingKeeper.GetValidators(chainA.GetContext(), 4) + require.NoError(t, err) + + chainA.GetSimApp().StakingKeeper.Delegate(chainA.GetContext(), chainA.SenderAccounts[1].SenderAccount.GetAddress(), //nolint:errcheck // ignore error for test + amount, types.Unbonded, val[1], true) + chainA.GetSimApp().StakingKeeper.Delegate(chainA.GetContext(), chainA.SenderAccounts[3].SenderAccount.GetAddress(), //nolint:errcheck // ignore error for test + amount2, types.Unbonded, val[3], true) + + coord.CommitBlock(chainA) + + // verify that update clients works even after validator update goes into effect + err = path.EndpointB.UpdateClient() + require.NoError(t, err) + err = path.EndpointB.UpdateClient() + require.NoError(t, err) +} diff --git a/ibc/testing/coordinator.go b/ibc/testing/coordinator.go index 6facea07f..4fae8ab13 100644 --- a/ibc/testing/coordinator.go +++ b/ibc/testing/coordinator.go @@ -6,7 +6,6 @@ import ( "testing" "time" - abci "github.com/cometbft/cometbft/abci/types" "github.com/stretchr/testify/require" ) @@ -79,7 +78,6 @@ func (coord *Coordinator) UpdateTime() { // UpdateTimeForChain updates the clock for a specific chain. func (coord *Coordinator) UpdateTimeForChain(chain *TestChain) { chain.CurrentHeader.Time = coord.CurrentTime.UTC() - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) } // Setup constructs a TM client, connection, and channel on both chains provided. It will @@ -198,7 +196,6 @@ func GetChainIDCanto(index int) string { // CONTRACT: the passed in list of indexes must not contain duplicates func (coord *Coordinator) CommitBlock(chains ...*TestChain) { for _, chain := range chains { - chain.App.Commit() chain.NextBlock() } coord.IncrementTime() @@ -207,8 +204,6 @@ func (coord *Coordinator) CommitBlock(chains ...*TestChain) { // CommitNBlocks commits n blocks to state and updates the block height by 1 for each commit. func (coord *Coordinator) CommitNBlocks(chain *TestChain, n uint64) { for i := uint64(0); i < n; i++ { - chain.App.BeginBlock(abci.RequestBeginBlock{Header: chain.CurrentHeader}) - chain.App.Commit() chain.NextBlock() coord.IncrementTime() } diff --git a/ibc/testing/endpoint.go b/ibc/testing/endpoint.go index c025200a1..51eaa9387 100644 --- a/ibc/testing/endpoint.go +++ b/ibc/testing/endpoint.go @@ -3,9 +3,10 @@ package ibctesting import ( "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" + abci "github.com/cometbft/cometbft/abci/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" @@ -88,17 +89,17 @@ func (endpoint *Endpoint) CreateClient() (err error) { switch endpoint.ClientConfig.GetClientType() { case exported.Tendermint: tmConfig, ok := endpoint.ClientConfig.(*TendermintConfig) - require.True(endpoint.Chain.T, ok) + require.True(endpoint.Chain.TB, ok) height := endpoint.Counterparty.Chain.LastHeader.GetHeight().(clienttypes.Height) clientState = ibctm.NewClientState( endpoint.Counterparty.Chain.ChainID, tmConfig.TrustLevel, tmConfig.TrustingPeriod, tmConfig.UnbondingPeriod, tmConfig.MaxClockDrift, - height, commitmenttypes.GetSDKSpecs(), UpgradePath, tmConfig.AllowUpdateAfterExpiry, tmConfig.AllowUpdateAfterMisbehaviour, + height, commitmenttypes.GetSDKSpecs(), UpgradePath, ) consensusState = endpoint.Counterparty.Chain.LastHeader.ConsensusState() case exported.Solomachine: // TODO - // solo := NewSolomachine(endpoint.Chain.T, endpoint.Chain.Codec, clientID, "", 1) + // solo := NewSolomachine(endpoint.Chain.TB, endpoint.Chain.Codec, clientID, "", 1) // clientState = solo.ClientState() // consensusState = solo.ConsensusState() @@ -113,15 +114,15 @@ func (endpoint *Endpoint) CreateClient() (err error) { msg, err := clienttypes.NewMsgCreateClient( clientState, consensusState, endpoint.Chain.SenderAccount.GetAddress().String(), ) - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) res, err := endpoint.Chain.SendMsgs(msg) if err != nil { return err } - endpoint.ClientID, err = ParseClientIDFromEvents(res.GetEvents()) - require.NoError(endpoint.Chain.T, err) + endpoint.ClientID, err = ParseClientIDFromEvents(res.Events) + require.NoError(endpoint.Chain.TB, err) return nil } @@ -131,7 +132,7 @@ func (endpoint *Endpoint) UpdateClient() (err error) { // ensure counterparty has committed state endpoint.Chain.Coordinator.CommitBlock(endpoint.Counterparty.Chain) - var header exported.Header + var header exported.ClientMessage switch endpoint.ClientConfig.GetClientType() { case exported.Tendermint: @@ -149,7 +150,7 @@ func (endpoint *Endpoint) UpdateClient() (err error) { endpoint.ClientID, header, endpoint.Chain.SenderAccount.GetAddress().String(), ) - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) return endpoint.Chain.sendMsgs(msg) } @@ -167,8 +168,8 @@ func (endpoint *Endpoint) ConnOpenInit() error { return err } - endpoint.ConnectionID, err = ParseConnectionIDFromEvents(res.GetEvents()) - require.NoError(endpoint.Chain.T, err) + endpoint.ConnectionID, err = ParseConnectionIDFromEvents(res.Events) + require.NoError(endpoint.Chain.TB, err) return nil } @@ -176,13 +177,12 @@ func (endpoint *Endpoint) ConnOpenInit() error { // ConnOpenTry will construct and execute a MsgConnectionOpenTry on the associated endpoint. func (endpoint *Endpoint) ConnOpenTry() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) counterpartyClient, proofClient, proofConsensus, consensusHeight, proofInit, proofHeight := endpoint.QueryConnectionHandshakeProof() msg := connectiontypes.NewMsgConnectionOpenTry( - "", endpoint.ClientID, // does not support handshake continuation - endpoint.Counterparty.ConnectionID, endpoint.Counterparty.ClientID, + endpoint.ClientID, endpoint.Counterparty.ConnectionID, endpoint.Counterparty.ClientID, counterpartyClient, endpoint.Counterparty.Chain.GetPrefix(), []*connectiontypes.Version{ConnectionVersion}, endpoint.ConnectionConfig.DelayPeriod, proofInit, proofClient, proofConsensus, proofHeight, consensusHeight, @@ -195,7 +195,7 @@ func (endpoint *Endpoint) ConnOpenTry() error { if endpoint.ConnectionID == "" { endpoint.ConnectionID, err = ParseConnectionIDFromEvents(res.GetEvents()) - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) } return nil @@ -204,7 +204,7 @@ func (endpoint *Endpoint) ConnOpenTry() error { // ConnOpenAck will construct and execute a MsgConnectionOpenAck on the associated endpoint. func (endpoint *Endpoint) ConnOpenAck() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) counterpartyClient, proofClient, proofConsensus, consensusHeight, proofTry, proofHeight := endpoint.QueryConnectionHandshakeProof() @@ -221,7 +221,7 @@ func (endpoint *Endpoint) ConnOpenAck() error { // ConnOpenConfirm will construct and execute a MsgConnectionOpenConfirm on the associated endpoint. func (endpoint *Endpoint) ConnOpenConfirm() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) connectionKey := host.ConnectionKey(endpoint.Counterparty.ConnectionID) proof, height := endpoint.Counterparty.Chain.QueryProof(connectionKey) @@ -277,7 +277,7 @@ func (endpoint *Endpoint) ChanOpenInit() error { } endpoint.ChannelID, err = ParseChannelIDFromEvents(res.GetEvents()) - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) return nil } @@ -285,13 +285,13 @@ func (endpoint *Endpoint) ChanOpenInit() error { // ChanOpenTry will construct and execute a MsgChannelOpenTry on the associated endpoint. func (endpoint *Endpoint) ChanOpenTry() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) msg := channeltypes.NewMsgChannelOpenTry( - endpoint.ChannelConfig.PortID, "", // does not support handshake continuation + endpoint.ChannelConfig.PortID, endpoint.ChannelConfig.Version, endpoint.ChannelConfig.Order, []string{endpoint.ConnectionID}, endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID, endpoint.Counterparty.ChannelConfig.Version, proof, height, @@ -304,7 +304,7 @@ func (endpoint *Endpoint) ChanOpenTry() error { if endpoint.ChannelID == "" { endpoint.ChannelID, err = ParseChannelIDFromEvents(res.GetEvents()) - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) } // update version to selected app version @@ -317,7 +317,7 @@ func (endpoint *Endpoint) ChanOpenTry() error { // ChanOpenAck will construct and execute a MsgChannelOpenAck on the associated endpoint. func (endpoint *Endpoint) ChanOpenAck() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) @@ -334,7 +334,7 @@ func (endpoint *Endpoint) ChanOpenAck() error { // ChanOpenConfirm will construct and execute a MsgChannelOpenConfirm on the associated endpoint. func (endpoint *Endpoint) ChanOpenConfirm() error { err := endpoint.UpdateClient() - require.NoError(endpoint.Chain.T, err) + require.NoError(endpoint.Chain.TB, err) channelKey := host.ChannelKey(endpoint.Counterparty.ChannelConfig.PortID, endpoint.Counterparty.ChannelID) proof, height := endpoint.Counterparty.Chain.QueryProof(channelKey) @@ -360,19 +360,30 @@ func (endpoint *Endpoint) ChanCloseInit() error { // SendPacket sends a packet through the channel keeper using the associated endpoint // The counterparty client is updated so proofs can be sent to the counterparty chain. -func (endpoint *Endpoint) SendPacket(packet exported.PacketI) error { - channelCap := endpoint.Chain.GetChannelCapability(packet.GetSourcePort(), packet.GetSourceChannel()) +// The packet sequence generated for the packet to be sent is returned. An error +// is returned if one occurs. +func (endpoint *Endpoint) SendPacket( + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, +) (uint64, error) { + channelCap := endpoint.Chain.GetChannelCapability(endpoint.ChannelConfig.PortID, endpoint.ChannelID) // no need to send message, acting as a module - err := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.SendPacket(endpoint.Chain.GetContext(), channelCap, packet) + sequence, err := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.SendPacket(endpoint.Chain.GetContext(), channelCap, endpoint.ChannelConfig.PortID, endpoint.ChannelID, timeoutHeight, timeoutTimestamp, data) if err != nil { - return err + return 0, err } // commit changes since no message was sent endpoint.Chain.Coordinator.CommitBlock(endpoint.Chain) - return endpoint.Counterparty.UpdateClient() + err = endpoint.Counterparty.UpdateClient() + if err != nil { + return 0, err + } + + return sequence, nil } // RecvPacket receives a packet on the associated endpoint. @@ -388,7 +399,7 @@ func (endpoint *Endpoint) RecvPacket(packet channeltypes.Packet) error { // RecvPacketWithResult receives a packet on the associated endpoint and the result // of the transaction is returned. The counterparty client is updated. -func (endpoint *Endpoint) RecvPacketWithResult(packet channeltypes.Packet) (*sdk.Result, error) { +func (endpoint *Endpoint) RecvPacketWithResult(packet channeltypes.Packet) (*abci.ExecTxResult, error) { // get proof of packet commitment on source packetKey := host.PacketCommitmentKey(packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) proof, proofHeight := endpoint.Counterparty.Chain.QueryProof(packetKey) @@ -452,7 +463,7 @@ func (endpoint *Endpoint) TimeoutPacket(packet channeltypes.Packet) error { proof, proofHeight := endpoint.Counterparty.QueryProof(packetKey) nextSeqRecv, found := endpoint.Counterparty.Chain.App.GetIBCKeeper().ChannelKeeper.GetNextSequenceRecv(endpoint.Counterparty.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID) - require.True(endpoint.Chain.T, found) + require.True(endpoint.Chain.TB, found) timeoutMsg := channeltypes.NewMsgTimeout( packet, nextSeqRecv, @@ -482,7 +493,7 @@ func (endpoint *Endpoint) TimeoutOnClose(packet channeltypes.Packet) error { proofClosed, _ := endpoint.Counterparty.QueryProof(channelKey) nextSeqRecv, found := endpoint.Counterparty.Chain.App.GetIBCKeeper().ChannelKeeper.GetNextSequenceRecv(endpoint.Counterparty.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID) - require.True(endpoint.Chain.T, found) + require.True(endpoint.Chain.TB, found) timeoutOnCloseMsg := channeltypes.NewMsgTimeoutOnClose( packet, nextSeqRecv, @@ -519,7 +530,7 @@ func (endpoint *Endpoint) SetClientState(clientState exported.ClientState) { // The consensus state is expected to exist otherwise testing will fail. func (endpoint *Endpoint) GetConsensusState(height exported.Height) exported.ConsensusState { consensusState, found := endpoint.Chain.GetConsensusState(endpoint.ClientID, height) - require.True(endpoint.Chain.T, found) + require.True(endpoint.Chain.TB, found) return consensusState } @@ -533,7 +544,7 @@ func (endpoint *Endpoint) SetConsensusState(consensusState exported.ConsensusSta // connection is expected to exist otherwise testing will fail. func (endpoint *Endpoint) GetConnection() connectiontypes.ConnectionEnd { connection, found := endpoint.Chain.App.GetIBCKeeper().ConnectionKeeper.GetConnection(endpoint.Chain.GetContext(), endpoint.ConnectionID) - require.True(endpoint.Chain.T, found) + require.True(endpoint.Chain.TB, found) return connection } @@ -547,7 +558,7 @@ func (endpoint *Endpoint) SetConnection(connection connectiontypes.ConnectionEnd // is expected to exist otherwise testing will fail. func (endpoint *Endpoint) GetChannel() channeltypes.Channel { channel, found := endpoint.Chain.App.GetIBCKeeper().ChannelKeeper.GetChannel(endpoint.Chain.GetContext(), endpoint.ChannelConfig.PortID, endpoint.ChannelID) - require.True(endpoint.Chain.T, found) + require.True(endpoint.Chain.TB, found) return channel } diff --git a/ibc/testing/events.go b/ibc/testing/events.go index f561dd8fd..1c14ee0d4 100644 --- a/ibc/testing/events.go +++ b/ibc/testing/events.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - sdk "github.com/cosmos/cosmos-sdk/types" + abci "github.com/cometbft/cometbft/abci/types" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" @@ -13,7 +13,7 @@ import ( // ParseClientIDFromEvents parses events emitted from a MsgCreateClient and returns the // client identifier. -func ParseClientIDFromEvents(events sdk.Events) (string, error) { +func ParseClientIDFromEvents(events []abci.Event) (string, error) { for _, ev := range events { if ev.Type == clienttypes.EventTypeCreateClient { for _, attr := range ev.Attributes { @@ -28,7 +28,7 @@ func ParseClientIDFromEvents(events sdk.Events) (string, error) { // ParseConnectionIDFromEvents parses events emitted from a MsgConnectionOpenInit or // MsgConnectionOpenTry and returns the connection identifier. -func ParseConnectionIDFromEvents(events sdk.Events) (string, error) { +func ParseConnectionIDFromEvents(events []abci.Event) (string, error) { for _, ev := range events { if ev.Type == connectiontypes.EventTypeConnectionOpenInit || ev.Type == connectiontypes.EventTypeConnectionOpenTry { @@ -44,7 +44,7 @@ func ParseConnectionIDFromEvents(events sdk.Events) (string, error) { // ParseChannelIDFromEvents parses events emitted from a MsgChannelOpenInit or // MsgChannelOpenTry and returns the channel identifier. -func ParseChannelIDFromEvents(events sdk.Events) (string, error) { +func ParseChannelIDFromEvents(events []abci.Event) (string, error) { for _, ev := range events { if ev.Type == channeltypes.EventTypeChannelOpenInit || ev.Type == channeltypes.EventTypeChannelOpenTry { for _, attr := range ev.Attributes { @@ -59,7 +59,7 @@ func ParseChannelIDFromEvents(events sdk.Events) (string, error) { // ParsePacketFromEvents parses events emitted from a MsgRecvPacket and returns the // acknowledgement. -func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error) { +func ParsePacketFromEvents(events []abci.Event) (channeltypes.Packet, error) { for _, ev := range events { if ev.Type == channeltypes.EventTypeSendPacket { packet := channeltypes.Packet{} @@ -67,7 +67,7 @@ func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error) { switch string(attr.Key) { case channeltypes.AttributeKeyData: - packet.Data = attr.Value + packet.Data = []byte(attr.Value) case channeltypes.AttributeKeySequence: seq, err := strconv.ParseUint(string(attr.Value), 10, 64) @@ -118,12 +118,12 @@ func ParsePacketFromEvents(events sdk.Events) (channeltypes.Packet, error) { // ParseAckFromEvents parses events emitted from a MsgRecvPacket and returns the // acknowledgement. -func ParseAckFromEvents(events sdk.Events) ([]byte, error) { +func ParseAckFromEvents(events []abci.Event) ([]byte, error) { for _, ev := range events { if ev.Type == channeltypes.EventTypeWriteAck { for _, attr := range ev.Attributes { if string(attr.Key) == channeltypes.AttributeKeyAck { - return attr.Value, nil + return []byte(attr.Value), nil } } } diff --git a/ibc/testing/path.go b/ibc/testing/path.go index b79a838d8..64785c9b1 100644 --- a/ibc/testing/path.go +++ b/ibc/testing/path.go @@ -4,6 +4,9 @@ import ( "bytes" "fmt" + abci "github.com/cometbft/cometbft/abci/types" + + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" ) @@ -29,6 +32,19 @@ func NewPath(chainA, chainB *TestChain) *Path { } } +func NewTransferPath(chainA, chainB *TestChain) *Path { + path := NewPath(chainA, chainB) + path.EndpointA.ChannelConfig.PortID = TransferPort + path.EndpointB.ChannelConfig.PortID = TransferPort + + path.EndpointA.ChannelConfig.Order = channeltypes.UNORDERED + path.EndpointB.ChannelConfig.Order = channeltypes.UNORDERED + path.EndpointA.ChannelConfig.Version = transfertypes.Version + path.EndpointB.ChannelConfig.Version = transfertypes.Version + + return path +} + // SetChannelOrdered sets the channel order for both endpoints to ORDERED. func (path *Path) SetChannelOrdered() { path.EndpointA.ChannelConfig.Order = channeltypes.ORDERED @@ -39,29 +55,38 @@ func (path *Path) SetChannelOrdered() { // if EndpointA does not contain a packet commitment for that packet. An error is returned // if a relay step fails or the packet commitment does not exist on either endpoint. func (path *Path) RelayPacket(packet channeltypes.Packet) error { + _, _, err := path.RelayPacketWithResults(packet) + return err +} + +// RelayPacketWithResults attempts to relay the packet first on EndpointA and then on EndpointB +// if EndpointA does not contain a packet commitment for that packet. The function returns: +// - The result of the packet receive transaction. +// - The acknowledgement written on the receiving chain. +// - An error if a relay step fails or the packet commitment does not exist on either endpoint. +func (path *Path) RelayPacketWithResults(packet channeltypes.Packet) (*abci.ExecTxResult, []byte, error) { pc := path.EndpointA.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(path.EndpointA.Chain.GetContext(), packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) if bytes.Equal(pc, channeltypes.CommitPacket(path.EndpointA.Chain.App.AppCodec(), packet)) { - // packet found, relay from A to B if err := path.EndpointB.UpdateClient(); err != nil { - return err + return nil, nil, err } res, err := path.EndpointB.RecvPacketWithResult(packet) if err != nil { - return err + return nil, nil, err } - ack, err := ParseAckFromEvents(res.GetEvents()) + ack, err := ParseAckFromEvents(res.Events) if err != nil { - return err + return nil, nil, err } if err := path.EndpointA.AcknowledgePacket(packet, ack); err != nil { - return err + return nil, nil, err } - return nil + return res, ack, nil } pc = path.EndpointB.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(path.EndpointB.Chain.GetContext(), packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) @@ -69,24 +94,25 @@ func (path *Path) RelayPacket(packet channeltypes.Packet) error { // packet found, relay B to A if err := path.EndpointA.UpdateClient(); err != nil { - return err + return nil, nil, err } res, err := path.EndpointA.RecvPacketWithResult(packet) if err != nil { - return err + return nil, nil, err } - ack, err := ParseAckFromEvents(res.GetEvents()) + ack, err := ParseAckFromEvents(res.Events) if err != nil { - return err + return nil, nil, err } if err := path.EndpointB.AcknowledgePacket(packet, ack); err != nil { - return err + return nil, nil, err } - return nil + + return res, ack, nil } - return fmt.Errorf("packet commitment does not exist on either endpoint for provided packet") + return nil, nil, fmt.Errorf("packet commitment does not exist on either endpoint for provided packet") } diff --git a/ibc/testing/sdk_test.go b/ibc/testing/sdk_test.go deleted file mode 100644 index b32fc6d45..000000000 --- a/ibc/testing/sdk_test.go +++ /dev/null @@ -1,282 +0,0 @@ -package ibctesting_test - -import ( - "fmt" - "testing" - "time" - - "github.com/spf13/cobra" - "github.com/stretchr/testify/suite" - - sdkmath "cosmossdk.io/math" - pruningtypes "cosmossdk.io/store/pruning/types" - storetypes "cosmossdk.io/store/types" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" - cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/testutil" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/cosmos/cosmos-sdk/testutil/network" - sdk "github.com/cosmos/cosmos-sdk/types" - moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" - txtypes "github.com/cosmos/cosmos-sdk/types/tx" - authcli "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - - ibcclientcli "github.com/cosmos/ibc-go/v8/modules/core/02-client/client/cli" - "github.com/cosmos/ibc-go/v8/testing/simapp" - "github.com/cosmos/ibc-go/v8/testing/simapp/params" - - tmrand "github.com/cometbft/cometbft/libs/rand" - dbm "github.com/cosmos/cosmos-db" -) - -/* - This file contains tests from the SDK which had to deleted during the migration of - the IBC module from the SDK into this repository. https://github.com/cosmos/cosmos-sdk/pull/8735 - - They can be removed once the SDK deprecates amino. -*/ - -type IntegrationTestSuite struct { - suite.Suite - - cfg network.Config - network *network.Network -} - -func (s *IntegrationTestSuite) SetupSuite() { - s.T().Log("setting up integration test suite") - - cfg := DefaultConfig() - - cfg.NumValidators = 2 - - s.cfg = cfg - s.network = network.New(s.T(), cfg) - - kb := s.network.Validators[0].ClientCtx.Keyring - _, _, err := kb.NewMnemonic("newAccount", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) - s.Require().NoError(err) - - account1, _, err := kb.NewMnemonic("newAccount1", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) - s.Require().NoError(err) - - account2, _, err := kb.NewMnemonic("newAccount2", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) - s.Require().NoError(err) - - multi := kmultisig.NewLegacyAminoPubKey(2, []cryptotypes.PubKey{account1.GetPubKey(), account2.GetPubKey()}) - _, err = kb.SaveMultisig("multi", multi) - s.Require().NoError(err) - - _, err = s.network.WaitForHeight(1) - s.Require().NoError(err) - - s.Require().NoError(s.network.WaitForNextBlock()) -} - -func TestIntegrationTestSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestSuite)) -} - -// NewAppConstructor returns a new simapp AppConstructor -func NewAppConstructor(encodingCfg params.EncodingConfig) network.AppConstructor { - return func(val network.Validator) servertypes.Application { - return simapp.NewSimApp( - val.Ctx.Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.Ctx.Config.RootDir, 0, - encodingCfg, - simapp.EmptyAppOptions{}, - baseapp.SetPruning(storetypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), - baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), - ) - } -} - -// DefaultConfig returns a sane default configuration suitable for nearly all -// testing requirements. -func DefaultConfig() network.Config { - encCfg := moduletestutil.MakeTestEncodingConfig() - - return network.Config{ - Codec: encCfg.Codec, - TxConfig: encCfg.TxConfig, - LegacyAmino: encCfg.Amino, - InterfaceRegistry: encCfg.InterfaceRegistry, - AccountRetriever: authtypes.AccountRetriever{}, - AppConstructor: NewAppConstructor(encCfg), - GenesisState: simapp.ModuleBasics.DefaultGenesis(encCfg.Codec), - TimeoutCommit: 2 * time.Second, - ChainID: "chain-" + tmrand.NewRand().Str(6), - NumValidators: 4, - BondDenom: sdk.DefaultBondDenom, - MinGasPrices: fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), - AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), - StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), - BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), - PruningStrategy: pruningtypes.PruningOptionNothing, - CleanupDir: true, - SigningAlgo: string(hd.Secp256k1Type), - KeyringOptions: []keyring.Option{}, - } -} - -func (s *IntegrationTestSuite) TearDownSuite() { - s.T().Log("tearing down integration test suite") - s.network.Cleanup() -} - -// TestLegacyRestErrMessages creates two IBC txs, one that fails, one that -// succeeds, and make sure we cannot query any of them (with pretty error msg). -// Our intension is to test the error message of querying a message which is -// signed with proto, since IBC won't support legacy amino at all we are -// considering a message from IBC module. -func (s *IntegrationTestSuite) TestLegacyRestErrMessages() { - val := s.network.Validators[0] - - // Write client state json to temp file, used for an IBC message. - // Generated by printing the result of cdc.MarshalIntefaceJSON on - // a solo machine client state - clientStateJSON := testutil.WriteToNewTempFile( - s.T(), - `{"@type":"/ibc.lightclients.solomachine.v2.ClientState","sequence":"1","is_frozen":false,"consensus_state":{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AtK50+5pJOoaa04qqAqrnyAqsYrwrR/INnA6UPIaYZlp"},"diversifier":"testing","timestamp":"10"},"allow_update_after_proposal":false}`, - ) - - badClientStateJSON := testutil.WriteToNewTempFile( - s.T(), - `{"@type":"/ibc.lightclients.solomachine.v2.ClientState","sequence":"1","is_frozen":false,"consensus_state":{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AtK50+5pJOoaa04qqAqrnyAqsYrwrR/INnA6UPIaYZlp"},"diversifier":"DIFFERENT","timestamp":"10"},"allow_update_after_proposal":false}`, - ) - - // Write consensus json to temp file, used for an IBC message. - // Generated by printing the result of cdc.MarshalIntefaceJSON on - // a solo machine consensus state - consensusJSON := testutil.WriteToNewTempFile( - s.T(), - `{"@type":"/ibc.lightclients.solomachine.v2.ConsensusState","public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AtK50+5pJOoaa04qqAqrnyAqsYrwrR/INnA6UPIaYZlp"},"diversifier":"testing","timestamp":"10"}`, - ) - - testCases := []struct { - desc string - cmd *cobra.Command - args []string - code uint32 - }{ - { - "Failing IBC message", - ibcclientcli.NewCreateClientCmd(), - []string{ - badClientStateJSON.Name(), // path to client state json - consensusJSON.Name(), // path to consensus json, - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), - fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), - fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), - fmt.Sprintf("--%s=foobar", flags.FlagNote), - }, - uint32(8), - }, - { - "Successful IBC message", - ibcclientcli.NewCreateClientCmd(), - []string{ - clientStateJSON.Name(), // path to client state json - consensusJSON.Name(), // path to consensus json, - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdkmath.NewInt(10))).String()), - fmt.Sprintf("--gas=%d", flags.DefaultGasLimit), - fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Address.String()), - fmt.Sprintf("--%s=foobar", flags.FlagNote), - }, - uint32(0), - }, - } - - for _, tc := range testCases { - s.Run(fmt.Sprintf("Case %s", tc.desc), func() { - out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, tc.cmd, tc.args) - s.Require().NoError(err) - var txRes sdk.TxResponse - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &txRes)) - s.Require().Equal(tc.code, txRes.Code) - - s.Require().NoError(s.network.WaitForNextBlock()) - - s.testQueryIBCTx(txRes, tc.cmd, tc.args) - }) - } -} - -// testQueryIBCTx is a helper function to test querying txs which: -// - show an error message on legacy REST endpoints -// - succeed using gRPC -// In practice, we call this function on IBC txs. -func (s *IntegrationTestSuite) testQueryIBCTx(txRes sdk.TxResponse, cmd *cobra.Command, args []string) { - val := s.network.Validators[0] - - errMsg := "this transaction cannot be displayed via legacy REST endpoints, because it does not support" + - " Amino serialization. Please either use CLI, gRPC, gRPC-gateway, or directly query the Tendermint RPC" + - " endpoint to query this transaction. The new REST endpoint (via gRPC-gateway) is " - - // Test that legacy endpoint return the above error message on IBC txs. - testCases := []struct { - desc string - url string - }{ - { - "Query by hash", - fmt.Sprintf("%s/txs/%s", val.APIAddress, txRes.TxHash), - }, - { - "Query by height", - fmt.Sprintf("%s/txs?tx.height=%d", val.APIAddress, txRes.Height), - }, - } - - for _, tc := range testCases { - s.Run(fmt.Sprintf("Case %s", tc.desc), func() { - txJSON, err := testutil.GetRequest(tc.url) - s.Require().NoError(err) - - var errResp testutil.ErrorResponse - s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(txJSON, &errResp)) - - s.Require().Contains(errResp.Error, errMsg) - }) - } - - // try fetching the txn using gRPC req, it will fetch info since it has proto codec. - grpcJSON, err := testutil.GetRequest(fmt.Sprintf("%s/cosmos/tx/v1beta1/txs/%s", val.APIAddress, txRes.TxHash)) - s.Require().NoError(err) - - var getTxRes txtypes.GetTxResponse - s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(grpcJSON, &getTxRes)) - s.Require().Equal(getTxRes.Tx.Body.Memo, "foobar") - - // generate broadcast only txn. - args = append(args, fmt.Sprintf("--%s=true", flags.FlagGenerateOnly)) - out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, args) - s.Require().NoError(err) - - txFile := testutil.WriteToNewTempFile(s.T(), string(out.Bytes())) - txFileName := txFile.Name() - - // encode the generated txn. - out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, authcli.GetEncodeCommand(), []string{txFileName}) - s.Require().NoError(err) - - bz, err := val.ClientCtx.LegacyAmino.MarshalJSON(authtestutil.DecodeReq{Tx: string(out.Bytes())}) - s.Require().NoError(err) - - // try to decode the txn using legacy rest, it fails. - res, err := testutil.PostRequest(fmt.Sprintf("%s/txs/decode", val.APIAddress), "application/json", bz) - s.Require().NoError(err) - - var errResp testutil.ErrorResponse - s.Require().NoError(val.ClientCtx.LegacyAmino.UnmarshalJSON(res, &errResp)) - s.Require().Contains(errResp.Error, errMsg) -} diff --git a/ibc/testing/values.go b/ibc/testing/values.go index 514f3de63..9e38849cc 100644 --- a/ibc/testing/values.go +++ b/ibc/testing/values.go @@ -51,7 +51,7 @@ var ( UpgradePath = []string{"upgrade", "upgradedIBCState"} - ConnectionVersion = connectiontypes.ExportedVersionsToProto(connectiontypes.GetCompatibleVersions())[0] + ConnectionVersion = connectiontypes.GetCompatibleVersions()[0] MockAcknowledgement = mock.MockAcknowledgement.Acknowledgement() MockPacketData = mock.MockPacketData diff --git a/testutil/network/network.go b/testutil/network/network.go index 62b2fb040..fecd34877 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -9,29 +9,30 @@ import ( "net/http" "net/url" "os" + "os/signal" "path/filepath" "strings" "sync" + "syscall" "testing" "time" - tmcfg "github.com/cometbft/cometbft/config" - tmflags "github.com/cometbft/cometbft/libs/cli/flags" - "github.com/cometbft/cometbft/libs/log" + "golang.org/x/sync/errgroup" + tmrand "github.com/cometbft/cometbft/libs/rand" "github.com/cometbft/cometbft/node" tmclient "github.com/cometbft/cometbft/rpc/client" - dbm "github.com/cosmos/cosmos-db" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" "github.com/spf13/cobra" "google.golang.org/grpc" + "cosmossdk.io/log" sdkmath "cosmossdk.io/math" "cosmossdk.io/simapp" "cosmossdk.io/simapp/params" pruningtypes "cosmossdk.io/store/pruning/types" - storetypes "cosmossdk.io/store/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" @@ -44,6 +45,7 @@ import ( srvconfig "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/testutil" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -53,7 +55,6 @@ import ( "github.com/Canto-Network/Canto/v7/app" - "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/server/config" ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" @@ -66,6 +67,26 @@ var lock = new(sync.Mutex) // creates an ABCI Application to provide to Tendermint. type AppConstructor = func(val Validator) servertypes.Application +// NewAppConstructor returns a new simapp AppConstructor +func NewAppConstructor(chainID string) AppConstructor { + return func(val Validator) servertypes.Application { + return app.NewCanto( + val.Ctx.Logger, + dbm.NewMemDB(), + nil, + true, + make(map[int64]bool), + val.Ctx.Config.RootDir, + 0, + true, + simtestutil.NewAppOptionsWithFlagHome(val.Ctx.Config.RootDir), + baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), + baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), + baseapp.SetChainID(chainID), + ) + } +} + // Config defines the necessary configuration used to bootstrap and start an // in-process local testing network. type Config struct { @@ -99,18 +120,36 @@ type Config struct { // DefaultConfig returns a sane default configuration suitable for nearly all // testing requirements. func DefaultConfig() Config { - encCfg := encoding.MakeConfig(app.ModuleBasics) + tempApp := app.NewCanto( + log.NewNopLogger(), + dbm.NewMemDB(), + nil, + true, + map[int64]bool{}, + app.DefaultNodeHome, + 0, + true, + simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + ) + + encCfg := params.EncodingConfig{ + InterfaceRegistry: tempApp.InterfaceRegistry(), + Codec: tempApp.AppCodec(), + TxConfig: tempApp.TxConfig(), + Amino: tempApp.LegacyAmino(), + } + chainID := fmt.Sprintf("canto_%d-1", tmrand.Int63n(9999999999999)+1) return Config{ Codec: encCfg.Codec, TxConfig: encCfg.TxConfig, LegacyAmino: encCfg.Amino, InterfaceRegistry: encCfg.InterfaceRegistry, AccountRetriever: authtypes.AccountRetriever{}, - AppConstructor: NewAppConstructor(encCfg), - GenesisState: app.ModuleBasics.DefaultGenesis(encCfg.Codec), + AppConstructor: NewAppConstructor(chainID), + GenesisState: tempApp.DefaultGenesis(), TimeoutCommit: 2 * time.Second, - ChainID: fmt.Sprintf("canto_%d-1", tmrand.Int63n(9999999999999)+1), + ChainID: chainID, NumValidators: 4, BondDenom: ethermint.AttoPhoton, MinGasPrices: fmt.Sprintf("0.000006%s", ethermint.AttoPhoton), @@ -125,20 +164,6 @@ func DefaultConfig() Config { } } -// NewAppConstructor returns a new canto AppConstructor -func NewAppConstructor(encodingCfg params.EncodingConfig) AppConstructor { - return func(val Validator) servertypes.Application { - return app.NewCanto( - val.Ctx.Logger, dbm.NewMemDB(), nil, true, make(map[int64]bool), val.Ctx.Config.RootDir, 0, - false, - encodingCfg, - simapp.EmptyAppOptions{}, - baseapp.SetPruning(storetypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), - baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), - ) - } -} - type ( // Network defines a local in-process testing network using SimApp. It can be // configured to start any number of validators, each with its own RPC and API @@ -177,10 +202,13 @@ type ( RPCClient tmclient.Client JSONRPCClient *ethclient.Client - tmNode *node.Node - api *api.Server - grpc *grpc.Server - grpcWeb *http.Server + tmNode *node.Node + api *api.Server + grpc *grpc.Server + grpcWeb *http.Server + errGroup *errgroup.Group + cancelFn context.CancelFunc + jsonrpc *http.Server jsonrpcDone chan struct{} } @@ -271,7 +299,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { apiListenAddr = cfg.APIAddress } else { var err error - apiListenAddr, _, err = server.FreeTCPAddr() + apiListenAddr, _, _, err = FreeTCPAddr() if err != nil { return nil, err } @@ -287,7 +315,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { if cfg.RPCAddress != "" { tmCfg.RPC.ListenAddress = cfg.RPCAddress } else { - rpcAddr, _, err := server.FreeTCPAddr() + rpcAddr, _, _, err := FreeTCPAddr() if err != nil { return nil, err } @@ -297,25 +325,19 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { if cfg.GRPCAddress != "" { appCfg.GRPC.Address = cfg.GRPCAddress } else { - _, grpcPort, err := server.FreeTCPAddr() + _, grpcPort, _, err := FreeTCPAddr() if err != nil { return nil, err } appCfg.GRPC.Address = fmt.Sprintf("0.0.0.0:%s", grpcPort) } appCfg.GRPC.Enable = true - - _, grpcWebPort, err := server.FreeTCPAddr() - if err != nil { - return nil, err - } - appCfg.GRPCWeb.Address = fmt.Sprintf("0.0.0.0:%s", grpcWebPort) appCfg.GRPCWeb.Enable = true if cfg.JSONRPCAddress != "" { appCfg.JSONRPC.Address = cfg.JSONRPCAddress } else { - _, jsonRPCPort, err := server.FreeTCPAddr() + _, jsonRPCPort, _, err := FreeTCPAddr() if err != nil { return nil, err } @@ -327,8 +349,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { logger := log.NewNopLogger() if cfg.EnableTMLogging { - logger = log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - logger, _ = tmflags.ParseLogLevel("info", logger, tmcfg.DefaultLogLevel) + logger = log.NewLogger(os.Stdout) } ctx.Logger = logger @@ -352,13 +373,13 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { tmCfg.Moniker = nodeDirName monikers[i] = nodeDirName - proxyAddr, _, err := server.FreeTCPAddr() + proxyAddr, _, _, err := FreeTCPAddr() if err != nil { return nil, err } tmCfg.ProxyApp = proxyAddr - p2pAddr, _, err := server.FreeTCPAddr() + p2pAddr, _, _, err := FreeTCPAddr() if err != nil { return nil, err } @@ -373,7 +394,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { nodeIDs[i] = nodeID valPubKeys[i] = pubKey - kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, clientDir, buf, cfg.KeyringOptions...) + kb, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, clientDir, buf, cfg.Codec, cfg.KeyringOptions...) if err != nil { return nil, err } @@ -459,7 +480,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { WithKeybase(kb). WithTxConfig(cfg.TxConfig) - if err := tx.Sign(txFactory, nodeDirName, txBuilder, true); err != nil { + if err := tx.Sign(context.Background(), txFactory, nodeDirName, txBuilder, true); err != nil { return nil, err } @@ -531,11 +552,35 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { // Ensure we cleanup incase any test was abruptly halted (e.g. SIGINT) as any // defer in a test would not be called. - server.TrapSignal(network.Cleanup) + trapSignal(network.Cleanup) return network, nil } +// trapSignal traps SIGINT and SIGTERM and calls os.Exit once a signal is received. +func trapSignal(cleanupFunc func()) { + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + + go func() { + sig := <-sigs + + if cleanupFunc != nil { + cleanupFunc() + } + exitCode := 128 + + switch sig { + case syscall.SIGINT: + exitCode += int(syscall.SIGINT) + case syscall.SIGTERM: + exitCode += int(syscall.SIGTERM) + } + + os.Exit(exitCode) + }() +} + // LatestHeight returns the latest height of the network or an error if the // query fails or no validators exist. func (n *Network) LatestHeight() (int64, error) { diff --git a/testutil/network/util.go b/testutil/network/util.go index 13b6cc6dc..bf4f08fa1 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -1,11 +1,16 @@ package network import ( + "context" "encoding/json" "fmt" + "net" "path/filepath" - "time" + "github.com/ethereum/go-ethereum/ethclient" + "golang.org/x/sync/errgroup" + + tmcfg "github.com/cometbft/cometbft/config" tmos "github.com/cometbft/cometbft/libs/os" "github.com/cometbft/cometbft/node" "github.com/cometbft/cometbft/p2p" @@ -14,18 +19,18 @@ import ( "github.com/cometbft/cometbft/rpc/client/local" "github.com/cometbft/cometbft/types" tmtime "github.com/cometbft/cometbft/types/time" - "github.com/ethereum/go-ethereum/ethclient" inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" "github.com/cosmos/cosmos-sdk/server/api" servergrpc "github.com/cosmos/cosmos-sdk/server/grpc" - srvtypes "github.com/cosmos/cosmos-sdk/server/types" + servercmtlog "github.com/cosmos/cosmos-sdk/server/log" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/evmos/ethermint/server" @@ -48,16 +53,24 @@ func startInProcess(cfg Config, val *Validator) error { app := cfg.AppConstructor(*val) - genDocProvider := node.DefaultGenesisDocProviderFunc(tmCfg) + appGenesisProvider := func() (*types.GenesisDoc, error) { + appGenesis, err := genutiltypes.AppGenesisFromFile(tmCfg.GenesisFile()) + if err != nil { + return nil, err + } + return appGenesis.ToGenesisDoc() + } + + cmtApp := server.NewCometABCIWrapper(app) tmNode, err := node.NewNode( tmCfg, pvm.LoadOrGenFilePV(tmCfg.PrivValidatorKeyFile(), tmCfg.PrivValidatorStateFile()), nodeKey, - proxy.NewLocalClientCreator(app), - genDocProvider, - node.DefaultDBProvider, + proxy.NewLocalClientCreator(cmtApp), + appGenesisProvider, + tmcfg.DefaultDBProvider, node.DefaultMetricsProvider(tmCfg.Instrumentation), - logger.With("module", val.Moniker), + servercmtlog.CometLoggerWrapper{Logger: logger.With("module", val.Moniker)}, ) if err != nil { return err @@ -83,43 +96,40 @@ func startInProcess(cfg Config, val *Validator) error { // Add the tendermint queries service in the gRPC router. app.RegisterTendermintService(val.ClientCtx) - } - if val.AppConfig.API.Enable && val.APIAddress != "" { - apiSrv := api.New(val.ClientCtx, logger.With("module", "api-server")) - app.RegisterAPIRoutes(apiSrv, val.AppConfig.API) + app.RegisterNodeService(val.ClientCtx, val.AppConfig.Config) + } - errCh := make(chan error) + ctx := context.Background() + ctx, val.cancelFn = context.WithCancel(ctx) + val.errGroup, ctx = errgroup.WithContext(ctx) - go func() { - if err := apiSrv.Start(val.AppConfig.Config); err != nil { - errCh <- err - } - }() + grpcCfg := val.AppConfig.GRPC - select { - case err := <-errCh: + if grpcCfg.Enable { + grpcSrv, err := servergrpc.NewGRPCServer(val.ClientCtx, app, grpcCfg) + if err != nil { return err - case <-time.After(srvtypes.ServerStartTime): // assume server started successfully } - val.api = apiSrv + // Start the gRPC server in a goroutine. Note, the provided ctx will ensure + // that the server is gracefully shut down. + val.errGroup.Go(func() error { + return servergrpc.StartGRPCServer(ctx, logger.With("module", "grpc-server"), grpcCfg, grpcSrv) + }) + + val.grpc = grpcSrv } - if val.AppConfig.GRPC.Enable { - grpcSrv, err := servergrpc.StartGRPCServer(val.ClientCtx, app, val.AppConfig.GRPC.Address) - if err != nil { - return err - } + if val.AppConfig.API.Enable && val.APIAddress != "" { + apiSrv := api.New(val.ClientCtx, logger.With("module", "api-server"), val.grpc) + app.RegisterAPIRoutes(apiSrv, val.AppConfig.API) - val.grpc = grpcSrv + val.errGroup.Go(func() error { + return apiSrv.Start(ctx, val.AppConfig.Config) + }) - if val.AppConfig.GRPCWeb.Enable { - val.grpcWeb, err = servergrpc.StartGRPCWeb(grpcSrv, val.AppConfig.Config) - if err != nil { - return err - } - } + val.api = apiSrv } if val.AppConfig.JSONRPC.Enable && val.AppConfig.JSONRPC.Address != "" { @@ -128,7 +138,7 @@ func startInProcess(cfg Config, val *Validator) error { } tmEndpoint := "/websocket" - tmRPCAddr := fmt.Sprintf("tcp://%s", val.AppConfig.GRPC.Address) + tmRPCAddr := val.RPCAddress val.jsonrpc, val.jsonrpcDone, err = server.StartJSONRPC(val.Ctx, val.ClientCtx, tmRPCAddr, tmEndpoint, val.AppConfig, nil) if err != nil { @@ -161,13 +171,21 @@ func collectGenFiles(cfg Config, vals []*Validator, outputDir string) error { initCfg := genutiltypes.NewInitConfig(cfg.ChainID, gentxsDir, vals[i].NodeID, vals[i].PubKey) genFile := tmCfg.GenesisFile() - genDoc, err := types.GenesisDocFromFile(genFile) + appGenesis, err := genutiltypes.AppGenesisFromFile(genFile) if err != nil { return err } - appState, err := genutil.GenAppStateFromConfig(cfg.Codec, cfg.TxConfig, - tmCfg, initCfg, *genDoc, banktypes.GenesisBalancesIterator{}) + appState, err := genutil.GenAppStateFromConfig( + cfg.Codec, + cfg.TxConfig, + tmCfg, + initCfg, + appGenesis, + banktypes.GenesisBalancesIterator{}, + genutiltypes.DefaultMessageValidator, + cfg.TxConfig.SigningContext().ValidatorAddressCodec(), + ) if err != nil { return err } @@ -205,7 +223,7 @@ func initGenFiles(cfg Config, genAccounts []authtypes.GenesisAccount, genBalance stakingGenState.Params.BondDenom = cfg.BondDenom cfg.GenesisState[stakingtypes.ModuleName] = cfg.Codec.MustMarshalJSON(&stakingGenState) - var govGenState govtypes.GenesisState + var govGenState govv1.GenesisState cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[govtypes.ModuleName], &govGenState) govGenState.DepositParams.MinDeposit[0].Denom = cfg.BondDenom @@ -260,3 +278,21 @@ func WriteFile(name string, dir string, contents []byte) error { return tmos.WriteFile(file, contents, 0o644) } + +// Get a free address for a test CometBFT server +// protocol is either tcp, http, etc +func FreeTCPAddr() (addr, port string, closeFn func() error, err error) { + l, err := net.Listen("tcp", "localhost:0") + if err != nil { + return "", "", nil, err + } + + closeFn = func() error { + return l.Close() + } + + portI := l.Addr().(*net.TCPAddr).Port + port = fmt.Sprintf("%d", portI) + addr = fmt.Sprintf("tcp://0.0.0.0:%s", port) + return +} From 2349d1c7c93e8908910fde7da0eb813367f9904d Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 7 Dec 2023 16:39:11 +0900 Subject: [PATCH 06/96] chore: fix csr, epochs modules begin/endblcoker --- app/ante/handler_options.go | 2 +- app/app.go | 103 ++++++++++++-------- cmd/cantod/root.go | 5 +- go.mod | 81 +++++++++------- go.sum | 186 +++++++++++++++++------------------- x/csr/module.go | 17 ++-- x/epochs/keeper/abci.go | 25 ++--- x/epochs/module.go | 2 +- 8 files changed, 217 insertions(+), 204 deletions(-) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 7c4b3fa86..51adb822e 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -137,7 +137,7 @@ func newCosmosAnteHandlerEip712(options HandlerOptions) sdk.AnteHandler { ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), - NewValidatorCommissionDecorator(options.Cdc), // TODO(dudong2): canto's unique ante handler? + NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), diff --git a/app/app.go b/app/app.go index f1bb0bb8d..d32a9e174 100644 --- a/app/app.go +++ b/app/app.go @@ -98,6 +98,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/group" groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" + // mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" // TODO(dudong2): consider mint, vesting + // minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" @@ -113,7 +115,7 @@ import ( capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" // TODO(dudong2): need it? + ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" @@ -231,10 +233,11 @@ type Canto struct { memKeys map[string]*storetypes.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + // MintKeeper mintkeeper.Keeper DistrKeeper distrkeeper.Keeper GovKeeper govkeeper.Keeper CrisisKeeper *crisiskeeper.Keeper @@ -247,8 +250,8 @@ type Canto struct { NFTKeeper nftkeeper.Keeper ConsensusParamsKeeper consensusparamkeeper.Keeper CircuitKeeper circuitkeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - IBCFeeKeeper ibcfeekeeper.Keeper // TODO(dudong2): need it? + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + IBCFeeKeeper ibcfeekeeper.Keeper TransferKeeper ibctransferkeeper.Keeper CapabilityKeeper *capabilitykeeper.Keeper @@ -344,7 +347,7 @@ func NewCanto( enccodec.RegisterLegacyAminoCodec(legacyAmino) enccodec.RegisterInterfaces(interfaceRegistry) - eip712.SetEncodingConfig(encodingConfig) // TODO(dudong2) + eip712.SetEncodingConfig(encodingConfig) // create and set dummy vote extension handler voteExtOp := func(bApp *baseapp.BaseApp) { @@ -369,19 +372,20 @@ func NewCanto( bApp.SetInterfaceRegistry(interfaceRegistry) bApp.SetTxEncoder(txConfig.TxEncoder()) - keys := storetypes.NewKVStoreKeys( // TODO(dudong2): add other store keys + keys := storetypes.NewKVStoreKeys( // SDK keys - authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, - distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, - evidencetypes.StoreKey, - feegrant.StoreKey, authzkeeper.StoreKey, + authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, + /* minttypes.StoreKey, */ distrtypes.StoreKey, slashingtypes.StoreKey, + govtypes.StoreKey, paramstypes.StoreKey, consensusparamkeeper.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, + evidencetypes.StoreKey, circuittypes.StoreKey, + authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, // ibc keys ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, // ethermint keys evmtypes.StoreKey, feemarkettypes.StoreKey, // Canto keys - inflationtypes.StoreKey, erc20types.StoreKey, + inflationtypes.StoreKey, + erc20types.StoreKey, epochstypes.StoreKey, onboardingtypes.StoreKey, csrtypes.StoreKey, @@ -474,7 +478,15 @@ func NewCanto( authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), ) - // TODO(dudong2): MintKeeper + // app.MintKeeper = mintkeeper.NewKeeper( + // appCodec, + // runtime.NewKVStoreService(keys[minttypes.StoreKey]), + // app.StakingKeeper, + // app.AccountKeeper, + // app.BankKeeper, + // authtypes.FeeCollectorName, + // authtypes.NewModuleAddress(govtypes.ModuleName).String(), + // ) app.DistrKeeper = distrkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), @@ -611,7 +623,7 @@ func NewCanto( // Create Transfer Keepers app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), - app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware // TODO(dudong2) + app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), @@ -756,12 +768,12 @@ func NewCanto( txConfig, ), auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - // vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), // TODO(dudong2) + // vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - // mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), // TODO(dudong2) + // mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), slashing.NewAppModule( appCodec, app.SlashingKeeper, @@ -828,33 +840,39 @@ func NewCanto( // NOTE: upgrade module must go first to handle software upgrades. // NOTE: staking module is required if HistoricalEntries param > 0. // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) - app.ModuleManager.SetOrderBeginBlockers( // TODO(dudong2): maybe remove no-op modules - upgradetypes.ModuleName, - capabilitytypes.ModuleName, + app.ModuleManager.SetOrderBeginBlockers( // Note: epochs' begin should be "real" start of epochs, we keep epochs beginblock at the beginning epochstypes.ModuleName, - feemarkettypes.ModuleName, - evmtypes.ModuleName, + capabilitytypes.ModuleName, distrtypes.ModuleName, - slashingtypes.ModuleName, - evidencetypes.ModuleName, stakingtypes.ModuleName, + slashingtypes.ModuleName, + // minttypes.ModuleName, ibcexported.ModuleName, + evmtypes.ModuleName, + feemarkettypes.ModuleName, + evidencetypes.ModuleName, + authz.ModuleName, + csrtypes.ModuleName, // no-op modules - ibctransfertypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, govtypes.ModuleName, - crisistypes.ModuleName, genutiltypes.ModuleName, - authz.ModuleName, + ibctransfertypes.ModuleName, feegrant.ModuleName, + nft.ModuleName, + group.ModuleName, paramstypes.ModuleName, + upgradetypes.ModuleName, + // vestingtypes.ModuleName, + consensusparamtypes.ModuleName, + circuittypes.ModuleName, + crisistypes.ModuleName, inflationtypes.ModuleName, erc20types.ModuleName, onboardingtypes.ModuleName, govshuttletypes.ModuleName, - csrtypes.ModuleName, coinswaptypes.ModuleName, ) @@ -862,13 +880,13 @@ func NewCanto( app.ModuleManager.SetOrderEndBlockers( crisistypes.ModuleName, govtypes.ModuleName, - stakingtypes.ModuleName, evmtypes.ModuleName, feemarkettypes.ModuleName, - // Note: epochs' endblock should be "real" end of epochs, we keep epochs endblock at the end - epochstypes.ModuleName, + feegrant.ModuleName, + group.ModuleName, onboardingtypes.ModuleName, // no-op modules + stakingtypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, capabilitytypes.ModuleName, @@ -876,18 +894,23 @@ func NewCanto( banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, + // minttypes.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, - feegrant.ModuleName, + nft.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - // Canto modules + // vestingtypes.ModuleName, + consensusparamtypes.ModuleName, + circuittypes.ModuleName, inflationtypes.ModuleName, erc20types.ModuleName, govshuttletypes.ModuleName, csrtypes.ModuleName, coinswaptypes.ModuleName, + // Note: epochs' endblock should be "real" end of epochs, we keep epochs endblock at the end + epochstypes.ModuleName, ) // NOTE: The genutils module must occur after staking so that pools are @@ -905,7 +928,7 @@ func NewCanto( stakingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, - // minttypes.ModuleName, // TODO(dudong2) + // minttypes.ModuleName, ibcexported.ModuleName, // evm module denomination is used by the feemarket module, in AnteHandle evmtypes.ModuleName, @@ -921,7 +944,7 @@ func NewCanto( group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - // vestingtypes.ModuleName, // TODO(dudong2) + // vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, // Canto modules @@ -1056,7 +1079,7 @@ func NewCanto( } // use Canto's custom AnteHandler -func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { // TODO(dudong2) +func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { anteHandler, err := ante.NewAnteHandler( ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, @@ -1072,7 +1095,7 @@ func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) TxFeeChecker: ethante.NewDynamicFeeChecker(app.EvmKeeper), DisabledAuthzMsgs: []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), // TODO(dudong2) + // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), }, }, ) @@ -1448,7 +1471,7 @@ func (app *Canto) setupUpgradeHandlers() { storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{onboardingtypes.StoreKey, coinswaptypes.StoreKey}, } - // case v8.UpgradeName: // TODO(dudong2) + // case v8.UpgradeName: // TODO(dudong2): maybe implement v8 upgrade } if storeUpgrades != nil { diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index 493760592..e94c44cd3 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -45,6 +45,8 @@ import ( "github.com/Canto-Network/Canto/v7/app" cmdcfg "github.com/Canto-Network/Canto/v7/cmd/config" cantokr "github.com/Canto-Network/Canto/v7/crypto/keyring" + + rosettacmd "github.com/cosmos/rosetta/cmd" ) const ( @@ -144,7 +146,6 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { tmcli.NewCompletionCmd(rootCmd, true), NewTestnetCmd(tempApp.BasicModuleManager, banktypes.GenesisBalancesIterator{}), debug.Cmd(), - // config.Cmd(), // TODO(dudong2) ) a := appCreator{encodingConfig} @@ -163,7 +164,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { } // add rosetta - // rootCmd.AddCommand(sdkserver.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Codec)) // TODO(dudong2) + rootCmd.AddCommand(rosettacmd.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Codec)) return rootCmd, encodingConfig } diff --git a/go.mod b/go.mod index a3dd60b49..7f94001cb 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.21.4 require ( cosmossdk.io/api v0.7.2 cosmossdk.io/client/v2 v2.0.0-beta.1 - cosmossdk.io/core v0.11.0 + cosmossdk.io/core v0.12.0 cosmossdk.io/log v1.2.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced cosmossdk.io/store v1.0.0 @@ -17,7 +17,7 @@ require ( cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c cosmossdk.io/x/tx v0.12.0 cosmossdk.io/x/upgrade v0.1.0 - github.com/cometbft/cometbft v0.38.0 + github.com/cometbft/cometbft v0.38.2 github.com/cosmos/cosmos-db v1.0.0 github.com/cosmos/cosmos-proto v1.0.0-beta.3 github.com/cosmos/cosmos-sdk v0.50.1 @@ -25,32 +25,33 @@ require ( github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.0.0 + github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6 github.com/ethereum/go-ethereum v1.10.26 github.com/evmos/ethermint v0.19.3 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-metrics v0.5.1 + github.com/hashicorp/go-metrics v0.5.2 github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.6 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.1 - github.com/spf13/cobra v1.7.0 + github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a + google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.110.8 // indirect - cloud.google.com/go/compute v1.23.1 // indirect + cloud.google.com/go v0.110.10 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.3 // indirect + cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.30.1 // indirect cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect @@ -65,15 +66,17 @@ require ( github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb // indirect + github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.8.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/danieljoos/wincred v1.2.0 // indirect github.com/emicklei/dot v1.6.0 // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/getsentry/sentry-go v0.25.0 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -84,13 +87,13 @@ require ( github.com/golang/mock v1.6.0 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 // indirect - github.com/google/s2a-go v0.1.4 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.1 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-plugin v1.6.0 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect @@ -99,7 +102,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/linxGnu/grocksdb v1.8.4 // indirect + github.com/linxGnu/grocksdb v1.8.5 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -107,6 +110,9 @@ require ( github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect github.com/stretchr/objx v0.5.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/gjson v1.14.4 // indirect @@ -117,13 +123,14 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/tools v0.14.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/oauth2 v0.13.0 // indirect + golang.org/x/tools v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.128.0 // indirect + google.golang.org/api v0.149.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 // indirect + google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect gotest.tools/v3 v3.5.1 // indirect pgregory.net/rapid v1.1.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect @@ -147,7 +154,7 @@ require ( github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/iavl v1.0.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set v1.8.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect @@ -159,7 +166,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect @@ -171,9 +178,9 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/gorilla/handlers v1.5.2 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect @@ -187,7 +194,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.2 // indirect + github.com/klauspost/compress v1.17.3 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -208,35 +215,35 @@ require ( github.com/prometheus/tsdb v0.10.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rjeczalik/notify v0.9.2 // indirect - github.com/rs/cors v1.10.0 // indirect + github.com/rs/cors v1.10.1 // indirect github.com/rs/zerolog v1.31.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/afero v1.10.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.16.0 // indirect + github.com/spf13/viper v1.17.0 github.com/status-im/keycard-go v0.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/zondax/hid v0.9.2 // indirect - go.etcd.io/bbolt v1.3.7 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20231006140011-7918f672742d - golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + go.etcd.io/bbolt v1.3.8 // indirect + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa + golang.org/x/net v0.18.0 // indirect + golang.org/x/sync v0.5.0 + golang.org/x/sys v0.14.0 // indirect + golang.org/x/term v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.7 // indirect + nhooyr.io/websocket v1.8.10 // indirect ) replace ( + cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780 // replace broken goleveldb diff --git a/go.sum b/go.sum index 9248765bd..346a250be 100644 --- a/go.sum +++ b/go.sum @@ -32,8 +32,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -70,8 +70,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.1 h1:V97tBoDaZHb6leicZ1G6DLK2BAaZLJ/7+9BB/En3hR0= -cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -111,8 +111,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.3 h1:18tKG7DzydKWUnLjonWcJO6wjSCAtzh4GcRKlH/Hrzc= -cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -359,15 +359,17 @@ github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZ github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb h1:6Po+YYKT5B5ZXN0wd2rwFBaebM0LufPf8p4zxOd48Kg= -github.com/cockroachdb/pebble v0.0.0-20231102162011-844f0582c2eb/go.mod h1:acMRUGd/BK8AUmQNK3spUCCGzFLZU2bSST3NMXSq2Kc= +github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a h1:X736kLTBU9S4kkBma7KBac16E4UBImQmlHLtvPi4VBY= +github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a/go.mod h1:acMRUGd/BK8AUmQNK3spUCCGzFLZU2bSST3NMXSq2Kc= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.0 h1:ogKnpiPX7gxCvqTEF4ly25/wAxUqf181t30P3vqdpdc= -github.com/cometbft/cometbft v0.38.0/go.mod h1:5Jz0Z8YsHSf0ZaAqGvi/ifioSdVFPtEGrm8Y9T/993k= +github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= +github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= +github.com/cometbft/cometbft v0.38.2 h1:io0JCh5EPxINKN5ZMI5hCdpW3QVZRy+o8qWe3mlJa/8= +github.com/cometbft/cometbft v0.38.2/go.mod h1:PIi48BpzwlHqtV3mzwPyQgOyOnU94BNBimLS2ebBHOg= github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -405,19 +407,24 @@ github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= +github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6 h1:VLOONpZQS6mDxcPJldvCmEUQ1txYs8zVU42Eb7A+O6o= +github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6/go.mod h1:2ljsFjyTQR3mGcL8yjHx8npdDgoLcWiOaLYXjp3c5Ww= +github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= +github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -476,8 +483,8 @@ github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqB github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= @@ -490,18 +497,15 @@ github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0X github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -527,14 +531,8 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -543,14 +541,9 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -662,18 +655,18 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 h1:CqYfpuYIjnlNxM3msdyPRKabhXZWbKjf3Q8BWROFBso= github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -697,8 +690,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -725,12 +718,12 @@ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.1 h1:rfPwUqFU6uZXNvGl4hzjY8LEBsqFVU4si1H9/Hqck/U= -github.com/hashicorp/go-metrics v0.5.1/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-metrics v0.5.2 h1:ErEYO2f//CjKsUDw4SmLzelsK6L3ZmOAR/4P9iS7ruY= +github.com/hashicorp/go-metrics v0.5.2/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= -github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= +github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -803,8 +796,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -819,8 +810,8 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -834,16 +825,14 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.4 h1:ZMsBpPpJNtRLHiKKp0mI7gW+NT4s7UgfD5xHxx1jVRo= -github.com/linxGnu/grocksdb v1.8.4/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/linxGnu/grocksdb v1.8.5 h1:Okfk5B1h0ikCYdDM7Tc5yJUS8LTwAmMBq5IPWTmOLPs= +github.com/linxGnu/grocksdb v1.8.5/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -889,12 +878,9 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -1028,8 +1014,8 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.10.0 h1:62NOS1h+r8p1mW6FM0FSB0exioXLhd/sh15KpjWBZ+8= -github.com/rs/cors v1.10.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= +github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= @@ -1039,6 +1025,10 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= +github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= @@ -1056,29 +1046,29 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= +github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= +github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1126,12 +1116,9 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= -github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -1155,8 +1142,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1178,6 +1165,8 @@ go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= @@ -1195,10 +1184,9 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1210,8 +1198,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= -golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1238,8 +1226,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1302,8 +1290,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1329,8 +1317,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1444,18 +1432,17 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1465,10 +1452,9 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1538,8 +1524,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1598,8 +1584,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1717,12 +1703,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA= -google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a h1:myvhA4is3vrit1a6NZCWBIwN0kNEnX21DJOJX/NvIfI= -google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:SUBoKXbI1Efip18FClrQVGjWcyd0QZd8KkvdP34t7ww= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405 h1:AB/lmRny7e2pLhFEYIbl5qkDAUt2h0ZRO4wGPhZf+ik= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1829,8 +1815,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/x/csr/module.go b/x/csr/module.go index 822d7ba4a..657bd38f1 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -159,24 +159,19 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 2 } // BeginBlock executes all ABCI BeginBlock logic respective to the csr module. -func (am AppModule) BeginBlock(ctx sdk.Context) { +func (am AppModule) BeginBlock(ctx context.Context) { + sdkCtx := sdk.UnwrapSDKContext(ctx) // check in begin block whether the Turnstile has been deployed, if not, deploy it and set it to state - if _, found := am.keeper.GetTurnstile(ctx); !found { - if am.keeper.GetParams(ctx).EnableCsr { // only deploy if csr is enabled + if _, found := am.keeper.GetTurnstile(sdkCtx); !found { + if am.keeper.GetParams(sdkCtx).EnableCsr { // only deploy if csr is enabled // deploy turnstile - turnstile, err := am.keeper.DeployTurnstile(ctx) + turnstile, err := am.keeper.DeployTurnstile(sdkCtx) // panic on errors, (Turnstile existence is invariant) if err != nil { panic(err) } // set the Turnstile address to state - am.keeper.SetTurnstile(ctx, turnstile) + am.keeper.SetTurnstile(sdkCtx, turnstile) } } } - -// EndBlock executes all ABCI EndBlock logic respective to the csr module. It -// returns no validator updates. -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index df1045d78..b1a5494c1 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -1,6 +1,7 @@ package keeper import ( + "context" "strconv" "time" @@ -11,19 +12,19 @@ import ( ) // BeginBlocker of epochs module -func (k Keeper) BeginBlocker(ctx sdk.Context) { +func (k Keeper) BeginBlocker(ctx context.Context) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) - logger := k.Logger(ctx) - - k.IterateEpochInfo(ctx, func(_ int64, epochInfo types.EpochInfo) (stop bool) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := k.Logger(sdkCtx) + k.IterateEpochInfo(sdkCtx, func(_ int64, epochInfo types.EpochInfo) (stop bool) { // Has it not started, and is the block time > initial epoch start time - shouldInitialEpochStart := !epochInfo.EpochCountingStarted && !epochInfo.StartTime.After(ctx.BlockTime()) + shouldInitialEpochStart := !epochInfo.EpochCountingStarted && !epochInfo.StartTime.After(sdkCtx.BlockTime()) epochEndTime := epochInfo.CurrentEpochStartTime.Add(epochInfo.Duration) - shouldEpochEnd := ctx.BlockTime().After(epochEndTime) && !shouldInitialEpochStart && !epochInfo.StartTime.After(ctx.BlockTime()) + shouldEpochEnd := sdkCtx.BlockTime().After(epochEndTime) && !shouldInitialEpochStart && !epochInfo.StartTime.After(sdkCtx.BlockTime()) - epochInfo.CurrentEpochStartHeight = ctx.BlockHeight() + epochInfo.CurrentEpochStartHeight = sdkCtx.BlockHeight() switch { case shouldInitialEpochStart: @@ -35,21 +36,21 @@ func (k Keeper) BeginBlocker(ctx sdk.Context) { logger.Info("ending epoch", "identifier", epochInfo.Identifier) - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeEpochEnd, sdk.NewAttribute(types.AttributeEpochNumber, strconv.FormatInt(epochInfo.CurrentEpoch, 10)), ), ) - k.AfterEpochEnd(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch) + k.AfterEpochEnd(sdkCtx, epochInfo.Identifier, epochInfo.CurrentEpoch) default: // continue return false } - k.SetEpochInfo(ctx, epochInfo) + k.SetEpochInfo(sdkCtx, epochInfo) - ctx.EventManager().EmitEvent( + sdkCtx.EventManager().EmitEvent( sdk.NewEvent( types.EventTypeEpochStart, sdk.NewAttribute(types.AttributeEpochNumber, strconv.FormatInt(epochInfo.CurrentEpoch, 10)), @@ -57,7 +58,7 @@ func (k Keeper) BeginBlocker(ctx sdk.Context) { ), ) - k.BeforeEpochStart(ctx, epochInfo.Identifier, epochInfo.CurrentEpoch) + k.BeforeEpochStart(sdkCtx, epochInfo.Identifier, epochInfo.CurrentEpoch) return false }) diff --git a/x/epochs/module.go b/x/epochs/module.go index 964774686..933e71874 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -152,7 +152,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // BeginBlock executes all ABCI BeginBlock logic respective to the epochs module. -func (am AppModule) BeginBlock(ctx sdk.Context) { +func (am AppModule) BeginBlock(ctx context.Context) { am.keeper.BeginBlocker(ctx) } From ef9937bed1ffd0956cc70e2e017b8766c7841f0d Mon Sep 17 00:00:00 2001 From: poorphd Date: Thu, 7 Dec 2023 17:38:23 +0900 Subject: [PATCH 07/96] wip: error fix in Canto modules --- x/coinswap/keeper/pool.go | 3 ++- x/csr/module.go | 3 ++- x/epochs/module.go | 9 +++++---- x/erc20/client/cli/tx.go | 20 ++++++++++---------- x/erc20/handler.go | 3 ++- x/erc20/keeper/msg_server.go | 3 ++- x/erc20/module.go | 9 +++++---- x/erc20/proposal_handler.go | 4 +++- x/erc20/types/codec.go | 2 +- x/erc20/types/proposal.go | 8 ++++---- x/govshuttle/client/cli/tx.go | 14 +++++++------- x/govshuttle/handler.go | 3 ++- x/govshuttle/keeper/keeper.go | 5 +++-- x/govshuttle/keeper/proposals.go | 2 +- x/govshuttle/module_simulation.go | 7 +++---- x/govshuttle/proposal_handler.go | 4 +++- x/govshuttle/types/codec.go | 2 +- x/govshuttle/types/interfaces.go | 4 ++++ x/govshuttle/types/proposal.go | 21 +++++++++++---------- x/inflation/keeper/keeper.go | 8 +++++--- x/inflation/module.go | 9 +++++---- x/onboarding/ibc_middleware.go | 15 ++++++++++++--- x/onboarding/keeper/ibc_callbacks.go | 4 ++-- x/onboarding/keeper/keeper.go | 12 ++++++++---- x/onboarding/module.go | 9 +++++---- 25 files changed, 108 insertions(+), 75 deletions(-) diff --git a/x/coinswap/keeper/pool.go b/x/coinswap/keeper/pool.go index df4545fc1..1a4e0c888 100644 --- a/x/coinswap/keeper/pool.go +++ b/x/coinswap/keeper/pool.go @@ -6,6 +6,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" errorsmod "cosmossdk.io/errors" + storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -43,7 +44,7 @@ func (k Keeper) GetPool(ctx sdk.Context, poolId string) (types.Pool, bool) { // GetAllPools return all the liquidity pools func (k Keeper) GetAllPools(ctx sdk.Context) (pools []types.Pool) { store := ctx.KVStore(k.storeKey) - iterator := sdk.KVStorePrefixIterator(store, []byte(types.KeyPool)) + iterator := storetypes.KVStorePrefixIterator(store, []byte(types.KeyPool)) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { var pool types.Pool diff --git a/x/csr/module.go b/x/csr/module.go index 657bd38f1..74d5d0d69 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -7,6 +7,7 @@ import ( // this line is used by starport scaffolding # 1 + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -124,7 +125,7 @@ func (am AppModule) Name() string { return am.AppModuleBasic.Name() } -func (am AppModule) NewHandler() sdk.Handler { +func (am AppModule) NewHandler() baseapp.MsgServiceHandler { return NewHandler(am.keeper) } diff --git a/x/epochs/module.go b/x/epochs/module.go index 933e71874..936800e30 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -6,6 +6,7 @@ import ( "fmt" "math/rand" + "github.com/cosmos/cosmos-sdk/baseapp" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/gorilla/mux" @@ -121,7 +122,7 @@ func (am AppModule) Name() string { } // NewHandler returns nil inflation module doesn't expose tx gRPC endpoints -func (am AppModule) NewHandler() sdk.Handler { +func (am AppModule) NewHandler() baseapp.MsgServiceHandler { return nil } @@ -169,12 +170,12 @@ func (AppModule) ProposalContents(simState module.SimulationState) []simtypes.We } // RandomizedParams creates randomizedepochs param changes for the simulator. -func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{} +func (AppModule) RandomizedParams(r *rand.Rand) []simtypes.LegacyParamChange { + return []simtypes.LegacyParamChange{} } // RegisterStoreDecoder registers a decoder for supply module's types -func (am AppModule) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry) { +func (am AppModule) RegisterStoreDecoder(sdr simtypes.StoreDecoderRegistry) { } // WeightedOperations returns the all the gov module operations with their respective weights. diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go index d3f5b0ea5..35ba1a8cf 100644 --- a/x/erc20/client/cli/tx.go +++ b/x/erc20/client/cli/tx.go @@ -12,7 +12,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/gov/client/cli" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/ethereum/go-ethereum/common" @@ -208,9 +208,9 @@ Where metadata.json contains (example): return err } - if err := msg.ValidateBasic(); err != nil { - return err - } + //if err := msg.ValidateBasic(); err != nil { + // return err + //} return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -274,9 +274,9 @@ func NewRegisterERC20ProposalCmd() *cobra.Command { return err } - if err := msg.ValidateBasic(); err != nil { - return err - } + //if err := msg.ValidateBasic(); err != nil { + // return err + //} return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -340,9 +340,9 @@ func NewToggleTokenConversionProposalCmd() *cobra.Command { return err } - if err := msg.ValidateBasic(); err != nil { - return err - } + //if err := msg.ValidateBasic(); err != nil { + // return err + //} return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, diff --git a/x/erc20/handler.go b/x/erc20/handler.go index eabfbec28..41fe6b055 100644 --- a/x/erc20/handler.go +++ b/x/erc20/handler.go @@ -2,6 +2,7 @@ package erc20 import ( errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -9,7 +10,7 @@ import ( ) // NewHandler defines the erc20 module handler instance -func NewHandler(server types.MsgServer) sdk.Handler { +func NewHandler(server types.MsgServer) baseapp.MsgServiceHandler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index 3ef167c0d..4f6cb3195 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -5,10 +5,11 @@ import ( "math/big" errorsmod "cosmossdk.io/errors" - "github.com/hashicorp/go-metrics" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" + "github.com/hashicorp/go-metrics" "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/x/erc20/types" diff --git a/x/erc20/module.go b/x/erc20/module.go index b5ea93fe9..698bd6a65 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -7,6 +7,7 @@ import ( "math/rand" abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -117,7 +118,7 @@ func (AppModule) Name() string { func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -func (am AppModule) NewHandler() sdk.Handler { +func (am AppModule) NewHandler() baseapp.MsgServiceHandler { return NewHandler(am.keeper) } @@ -156,11 +157,11 @@ func (am AppModule) ProposalContents(simState module.SimulationState) []simtypes return []simtypes.WeightedProposalContent{} } -func (am AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{} +func (am AppModule) RandomizedParams(r *rand.Rand) []simtypes.LegacyParamChange { + return []simtypes.LegacyParamChange{} } -func (am AppModule) RegisterStoreDecoder(decoderRegistry sdk.StoreDecoderRegistry) { +func (am AppModule) RegisterStoreDecoder(decoderRegistry simtypes.StoreDecoderRegistry) { } func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/erc20/proposal_handler.go b/x/erc20/proposal_handler.go index e6b6b9fd4..dcceea278 100644 --- a/x/erc20/proposal_handler.go +++ b/x/erc20/proposal_handler.go @@ -1,8 +1,10 @@ package erc20 import ( + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/ethereum/go-ethereum/common" "github.com/Canto-Network/Canto/v7/x/erc20/keeper" diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 83fc0e5fb..665e66458 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -5,7 +5,7 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) var ( diff --git a/x/erc20/types/proposal.go b/x/erc20/types/proposal.go index 45b117b73..2aee5ca63 100644 --- a/x/erc20/types/proposal.go +++ b/x/erc20/types/proposal.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ethermint "github.com/evmos/ethermint/types" ) @@ -30,9 +30,9 @@ func init() { govtypes.RegisterProposalType(ProposalTypeRegisterCoin) govtypes.RegisterProposalType(ProposalTypeRegisterERC20) govtypes.RegisterProposalType(ProposalTypeToggleTokenConversion) - govtypes.RegisterProposalTypeCodec(&RegisterCoinProposal{}, "erc20/RegisterCoinProposal") - govtypes.RegisterProposalTypeCodec(&RegisterERC20Proposal{}, "erc20/RegisterERC20Proposal") - govtypes.RegisterProposalTypeCodec(&ToggleTokenConversionProposal{}, "erc20/ToggleTokenConversionProposal") + //govtypes.RegisterProposalTypeCodec(&RegisterCoinProposal{}, "erc20/RegisterCoinProposal") + //govtypes.RegisterProposalTypeCodec(&RegisterERC20Proposal{}, "erc20/RegisterERC20Proposal") + //govtypes.RegisterProposalTypeCodec(&ToggleTokenConversionProposal{}, "erc20/ToggleTokenConversionProposal") } // CreateDenomDescription generates a string with the coin description diff --git a/x/govshuttle/client/cli/tx.go b/x/govshuttle/client/cli/tx.go index 9967ead7d..124a45a61 100644 --- a/x/govshuttle/client/cli/tx.go +++ b/x/govshuttle/client/cli/tx.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/x/gov/client/cli" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" errorsmod "cosmossdk.io/errors" @@ -102,9 +102,9 @@ Where metadata.json contains (example): return err } - if err := msg.ValidateBasic(); err != nil { - return err - } + //if err := msg.ValidateBasic(); err != nil { + // return err + //} return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -185,9 +185,9 @@ Where metadata.json contains (example): return err } - if err := msg.ValidateBasic(); err != nil { - return err - } + //if err := msg.ValidateBasic(); err != nil { + // return err + //} return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, diff --git a/x/govshuttle/handler.go b/x/govshuttle/handler.go index 0f5d3bf9a..ad5794c70 100644 --- a/x/govshuttle/handler.go +++ b/x/govshuttle/handler.go @@ -6,12 +6,13 @@ import ( errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) // NewHandler ... -func NewHandler(k keeper.Keeper) sdk.Handler { +func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { // this line is used by starport scaffolding # handler/msgServer return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index 26040f2d2..958caae89 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -11,6 +11,7 @@ import ( "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -22,7 +23,7 @@ type ( accKeeper types.AccountKeeper erc20Keeper types.ERC20Keeper - govKeeper types.GovKeeper + govKeeper *govkeeper.Keeper } ) @@ -33,7 +34,7 @@ func NewKeeper( ak types.AccountKeeper, ek types.ERC20Keeper, - gk types.GovKeeper, + gk *govkeeper.Keeper, ) Keeper { // set KeyTable if it has not already been set diff --git a/x/govshuttle/keeper/proposals.go b/x/govshuttle/keeper/proposals.go index b03c00c1e..b8e893579 100644 --- a/x/govshuttle/keeper/proposals.go +++ b/x/govshuttle/keeper/proposals.go @@ -20,7 +20,7 @@ func (k *Keeper) AppendLendingMarketProposal(ctx sdk.Context, lm *types.LendingM m := lm.GetMetadata() var err error if m.GetPropId() == 0 { - m.PropId, err = k.govKeeper.GetProposalID(ctx) + m.PropId, err = k.govKeeper.ProposalID.Peek(ctx) } if err != nil { diff --git a/x/govshuttle/module_simulation.go b/x/govshuttle/module_simulation.go index bf4bd3db8..4ceed0def 100644 --- a/x/govshuttle/module_simulation.go +++ b/x/govshuttle/module_simulation.go @@ -8,7 +8,6 @@ import ( "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/baseapp" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -46,13 +45,13 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP } // RandomizedParams creates randomized param changes for the simulator -func (am AppModule) RandomizedParams(_ *rand.Rand) []simtypes.ParamChange { +func (am AppModule) RandomizedParams(_ *rand.Rand) []simtypes.LegacyParamChange { - return []simtypes.ParamChange{} + return []simtypes.LegacyParamChange{} } // RegisterStoreDecoder registers a decoder -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} +func (am AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) {} // WeightedOperations returns the all the gov module operations with their respective weights. func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { diff --git a/x/govshuttle/proposal_handler.go b/x/govshuttle/proposal_handler.go index 9a05bf341..42f151818 100644 --- a/x/govshuttle/proposal_handler.go +++ b/x/govshuttle/proposal_handler.go @@ -1,10 +1,12 @@ package govshuttle import ( + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) // Return governance handler to process Compound Proposal diff --git a/x/govshuttle/types/codec.go b/x/govshuttle/types/codec.go index 86710fb19..cecbde716 100644 --- a/x/govshuttle/types/codec.go +++ b/x/govshuttle/types/codec.go @@ -5,7 +5,7 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" // this line is used by starport scaffolding # 1 "github.com/cosmos/cosmos-sdk/types/msgservice" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) func RegisterCodec(cdc *codec.LegacyAmino) { diff --git a/x/govshuttle/types/interfaces.go b/x/govshuttle/types/interfaces.go index 7966a328f..b5ce707df 100644 --- a/x/govshuttle/types/interfaces.go +++ b/x/govshuttle/types/interfaces.go @@ -29,6 +29,10 @@ type AccountKeeper interface { GetSequence(context.Context, sdk.AccAddress) (uint64, error) } +type GovKeeper interface { + GetProposalID(ctx sdk.Context) (uint64, error) +} + // BankKeeper defines the expected interface needed to retrieve account balances. // type BankKeeper interface { // SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins diff --git a/x/govshuttle/types/proposal.go b/x/govshuttle/types/proposal.go index 655d2e202..ead5d9db6 100644 --- a/x/govshuttle/types/proposal.go +++ b/x/govshuttle/types/proposal.go @@ -5,6 +5,7 @@ import ( errorsmod "cosmossdk.io/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) const ( @@ -15,19 +16,19 @@ const ( ) var ( - _ govtypes.Content = &LendingMarketProposal{} - _ govtypes.Content = &TreasuryProposal{} + _ govv1beta1.Content = &LendingMarketProposal{} + _ govv1beta1.Content = &TreasuryProposal{} ) // Register Compound Proposal type as a valid proposal type in goveranance module func init() { - govtypes.RegisterProposalType(ProposalTypeLendingMarket) - govtypes.RegisterProposalType(ProposalTypeTreasury) - govtypes.RegisterProposalTypeCodec(&LendingMarketProposal{}, "govshuttle/LendingMarketProposal") - govtypes.RegisterProposalTypeCodec(&TreasuryProposal{}, "govshuttle/TreasuryProposal") + govv1beta1.RegisterProposalType(ProposalTypeLendingMarket) + govv1beta1.RegisterProposalType(ProposalTypeTreasury) + //govtypes.RegisterProposalTypeCodec(&LendingMarketProposal{}, "govshuttle/LendingMarketProposal") + //govtypes.RegisterProposalTypeCodec(&TreasuryProposal{}, "govshuttle/TreasuryProposal") } -func NewLendingMarketProposal(title, description string, m *LendingMarketMetadata) govtypes.Content { +func NewLendingMarketProposal(title, description string, m *LendingMarketMetadata) govv1beta1.Content { return &LendingMarketProposal{ Title: title, Description: description, @@ -35,7 +36,7 @@ func NewLendingMarketProposal(title, description string, m *LendingMarketMetadat } } -func NewTreasuryProposal(title, description string, tm *TreasuryProposalMetadata) govtypes.Content { +func NewTreasuryProposal(title, description string, tm *TreasuryProposalMetadata) govv1beta1.Content { return &TreasuryProposal{ Title: title, Description: description, @@ -56,7 +57,7 @@ func (*LendingMarketProposal) ProposalType() string { } func (lm *LendingMarketProposal) ValidateBasic() error { - if err := govtypes.ValidateAbstract(lm); err != nil { + if err := govv1beta1.ValidateAbstract(lm); err != nil { return err } @@ -75,7 +76,7 @@ func (lm *LendingMarketProposal) ValidateBasic() error { } func (tp *TreasuryProposal) ValidateBasic() error { - if err := govtypes.ValidateAbstract(tp); err != nil { + if err := govv1beta1.ValidateAbstract(tp); err != nil { return err } diff --git a/x/inflation/keeper/keeper.go b/x/inflation/keeper/keeper.go index 4060a6f23..b1eb4e863 100644 --- a/x/inflation/keeper/keeper.go +++ b/x/inflation/keeper/keeper.go @@ -5,6 +5,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/Canto-Network/Canto/v7/x/inflation/types" @@ -18,7 +19,7 @@ type Keeper struct { accountKeeper types.AccountKeeper bankKeeper types.BankKeeper - distrKeeper types.DistrKeeper + distrKeeper distrkeeper.Keeper stakingKeeper types.StakingKeeper feeCollectorName string } @@ -30,7 +31,7 @@ func NewKeeper( ps paramtypes.Subspace, ak types.AccountKeeper, bk types.BankKeeper, - dk types.DistrKeeper, + dk distrkeeper.Keeper, sk types.StakingKeeper, feeCollectorName string, ) Keeper { @@ -62,5 +63,6 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { } func (k Keeper) GetComPool(ctx sdk.Context) sdk.DecCoins { - return k.distrKeeper.GetFeePoolCommunityCoins(ctx) + feePool, _ := k.distrKeeper.FeePool.Get(ctx) + return feePool.CommunityPool } diff --git a/x/inflation/module.go b/x/inflation/module.go index eb6adaad5..a1c718c49 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -7,6 +7,7 @@ import ( "math/rand" abci "github.com/cometbft/cometbft/abci/types" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -127,7 +128,7 @@ func (AppModule) Name() string { func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // NewHandler returns nil inflation module doesn't expose tx gRPC endpoints -func (am AppModule) NewHandler() sdk.Handler { +func (am AppModule) NewHandler() baseapp.MsgServiceHandler { return nil } @@ -174,12 +175,12 @@ func (am AppModule) ProposalContents(simState module.SimulationState) []simtypes } // RandomizedParams creates randomized inflation param changes for the simulator. -func (am AppModule) RandomizedParams(r *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{} +func (am AppModule) RandomizedParams(r *rand.Rand) []simtypes.LegacyParamChange { + return []simtypes.LegacyParamChange{} } // RegisterStoreDecoder registers a decoder for inflation module's types. -func (am AppModule) RegisterStoreDecoder(decoderRegistry sdk.StoreDecoderRegistry) { +func (am AppModule) RegisterStoreDecoder(decoderRegistry simtypes.StoreDecoderRegistry) { } // WeightedOperations doesn't return any inflation module operation. diff --git a/x/onboarding/ibc_middleware.go b/x/onboarding/ibc_middleware.go index fb6c42300..859e6da8d 100644 --- a/x/onboarding/ibc_middleware.go +++ b/x/onboarding/ibc_middleware.go @@ -3,6 +3,7 @@ package onboarding import ( sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" @@ -51,9 +52,13 @@ func (im IBCMiddleware) OnRecvPacket( func (im IBCMiddleware) SendPacket( ctx sdk.Context, chanCap *capabilitytypes.Capability, - packet exported.PacketI, -) error { - return im.keeper.SendPacket(ctx, chanCap, packet) + sourcePort string, + sourceChannel string, + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, +) (uint64, error) { + return im.keeper.SendPacket(ctx, chanCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data) } // WriteAcknowledgement implements the ICS4 Wrapper interface @@ -65,3 +70,7 @@ func (im IBCMiddleware) WriteAcknowledgement( ) error { return im.keeper.WriteAcknowledgement(ctx, chanCap, packet, ack) } + +func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) { + return im.keeper.GetAppVersion(ctx, portID, channelID) +} diff --git a/x/onboarding/keeper/ibc_callbacks.go b/x/onboarding/keeper/ibc_callbacks.go index 0e5f608ef..fabaacb28 100644 --- a/x/onboarding/keeper/ibc_callbacks.go +++ b/x/onboarding/keeper/ibc_callbacks.go @@ -57,7 +57,7 @@ func (k Keeper) OnRecvPacket( // Get recipient addresses in `canto1` and the original bech32 format _, recipient, senderBech32, recipientBech32, err := ibc.GetTransferSenderRecipient(packet) if err != nil { - return channeltypes.NewErrorAcknowledgement(err.Error()) + return channeltypes.NewErrorAcknowledgement(err) } //get the recipient account @@ -75,7 +75,7 @@ func (k Keeper) OnRecvPacket( // NOTE: shouldn't happen as the packet has already // been decoded on ICS20 transfer logic err = errorsmod.Wrapf(types.ErrInvalidType, "cannot unmarshal ICS-20 transfer packet data") - return channeltypes.NewErrorAcknowledgement(err.Error()) + return channeltypes.NewErrorAcknowledgement(err) } // parse the transferred denom diff --git a/x/onboarding/keeper/keeper.go b/x/onboarding/keeper/keeper.go index 1845f5643..4e5e2cfd8 100644 --- a/x/onboarding/keeper/keeper.go +++ b/x/onboarding/keeper/keeper.go @@ -7,15 +7,15 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" "github.com/cosmos/ibc-go/v8/modules/core/exported" "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) -var _ transfertypes.ICS4Wrapper = Keeper{} +var _ porttypes.ICS4Wrapper = Keeper{} // Keeper struct type Keeper struct { @@ -78,8 +78,8 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { // SendPacket implements the ICS4Wrapper interface from the transfer module. // It calls the underlying SendPacket function directly to move down the middleware stack. -func (k Keeper) SendPacket(ctx sdk.Context, channelCap *capabilitytypes.Capability, packet exported.PacketI) error { - return k.ics4Wrapper.SendPacket(ctx, channelCap, packet) +func (k Keeper) SendPacket(ctx sdk.Context, chanCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight clienttypes.Height, timeoutTimestamp uint64, data []byte) (uint64, error) { + return k.ics4Wrapper.SendPacket(ctx, chanCap, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data) } // WriteAcknowledgement implements the ICS4Wrapper interface from the transfer module. @@ -87,3 +87,7 @@ func (k Keeper) SendPacket(ctx sdk.Context, channelCap *capabilitytypes.Capabili func (k Keeper) WriteAcknowledgement(ctx sdk.Context, channelCap *capabilitytypes.Capability, packet exported.PacketI, ack exported.Acknowledgement) error { return k.ics4Wrapper.WriteAcknowledgement(ctx, channelCap, packet, ack) } + +func (k Keeper) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) { + return k.ics4Wrapper.GetAppVersion(ctx, portID, channelID) +} diff --git a/x/onboarding/module.go b/x/onboarding/module.go index fb6818550..85deea094 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -6,6 +6,7 @@ import ( "fmt" "math/rand" + "github.com/cosmos/cosmos-sdk/baseapp" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -112,7 +113,7 @@ func (AppModule) Name() string { func (AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} // NewHandler returns nil onboarding module doesn't expose tx gRPC endpoints -func (AppModule) NewHandler() sdk.Handler { +func (AppModule) NewHandler() baseapp.MsgServiceHandler { return nil } @@ -140,11 +141,11 @@ func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedP return []simtypes.WeightedProposalContent{} } -func (AppModule) RandomizedParams(_ *rand.Rand) []simtypes.ParamChange { - return []simtypes.ParamChange{} +func (AppModule) RandomizedParams(_ *rand.Rand) []simtypes.LegacyParamChange { + return []simtypes.LegacyParamChange{} } -func (AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) { +func (AppModule) RegisterStoreDecoder(_ simtypes.StoreDecoderRegistry) { } func (AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { From 081b7ea3ab2fdd7c894a57d2489151888d9b4b78 Mon Sep 17 00:00:00 2001 From: zsystm Date: Mon, 11 Dec 2023 19:50:26 +0900 Subject: [PATCH 08/96] update ethermint dependecny to hotfix version change ethermint to Canto-Network/ethermint which includes https://github.com/Canto-Network/ethermint/pull/1#event-11194541746 --- go.mod | 21 ++++++++++++--------- go.sum | 43 ++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index dbb862609..8ba4f5f1e 100644 --- a/go.mod +++ b/go.mod @@ -18,13 +18,13 @@ require ( github.com/regen-network/cosmos-proto v0.3.1 github.com/spf13/cast v1.5.0 github.com/spf13/cobra v1.6.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/tendermint/tendermint v0.34.25 github.com/tendermint/tm-db v0.6.7 go.opencensus.io v0.24.0 google.golang.org/genproto v0.0.0-20230223222841-637eb2293923 - google.golang.org/grpc v1.53.0 - google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 + google.golang.org/grpc v1.57.0 + google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -36,6 +36,8 @@ require ( require ( github.com/btcsuite/btcd v0.22.1 // indirect github.com/cenkalti/backoff/v4 v4.1.1 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect + github.com/cosmos/gogoproto v1.4.11 // indirect github.com/danieljoos/wincred v1.0.2 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect github.com/go-ole/go-ole v1.2.5 // indirect @@ -156,13 +158,13 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/zondax/hid v0.9.0 // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.4.0 // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e - golang.org/x/net v0.7.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb + golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -171,6 +173,7 @@ require ( replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 + github.com/evmos/ethermint => github.com/Canto-Network/ethermint v0.19.3-hotfix github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/tendermint/tendermint => github.com/informalsystems/tendermint v0.34.25 google.golang.org/grpc => google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index 70f0b1c06..455da4497 100644 --- a/go.sum +++ b/go.sum @@ -57,6 +57,8 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Canto-Network/ethermint v0.19.3-hotfix h1:rgnuHmM7J09Bnvk92ctyEPOnuFu7D2OqATg8hn4m/Wo= +github.com/Canto-Network/ethermint v0.19.3-hotfix/go.mod h1:nYGorRu7sYGIPKP5NVAx10IYgThdJOpbXur+j3bCdw0= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -174,6 +176,8 @@ github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= +github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= +github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= github.com/cosmos/cosmos-sdk v0.45.9 h1:Z4s1EZL/mfM8uSSZr8WmyEbWp4hqbWVI5sAIFR432KY= github.com/cosmos/cosmos-sdk v0.45.9/go.mod h1:Z5M4TX7PsHNHlF/1XanI2DIpORQ+Q/st7oaeufEjnvU= github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 h1:iKclrn3YEOwk4jQHT2ulgzuXyxmzmPczUalMwW4XH9k= @@ -181,6 +185,8 @@ github.com/cosmos/cosmos-sdk/ics23/go v0.8.0/go.mod h1:2a4dBq88TUoqoWAU5eu0lGvpF github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= +github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.19.3 h1:cESO0OwTTxQm5rmyESKW+zESheDUYI7CcZDWWDwnuxg= @@ -255,8 +261,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ethereum/go-ethereum v1.10.19 h1:EOR5JbL4MD5yeOqv8W2iC1s4NximrTjqFccUz8lyBRA= github.com/ethereum/go-ethereum v1.10.19/go.mod h1:IJBNMtzKcNHPtllYihy6BL2IgK1u+32JriaTbdt4v+w= -github.com/evmos/ethermint v0.19.3 h1:Tc2tIiEK9b+rp1a0aWfzzggRDgecLa8gOHyXT3tH/1A= -github.com/evmos/ethermint v0.19.3/go.mod h1:2A25AF6mes32UL6j+r0wT0FnbzN7tzGYp2URxy+ZNmY= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= @@ -820,8 +824,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= @@ -911,8 +916,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= -golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -925,8 +930,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb h1:mIKbk8weKhSeLH2GmUTrvx8CjkyJmnU1wFmg59CUjFA= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -951,7 +956,7 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1001,8 +1006,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1102,12 +1107,12 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1116,8 +1121,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1177,7 +1182,7 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1267,8 +1272,8 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8 h1:KR8+MyP7/qOlV+8Af01LtjL04bu7on42eVsxT4EyBQk= -google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 20a12874abe40aebf4f0e083e67e09c3925a6cf3 Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 15 Dec 2023 16:49:04 +0900 Subject: [PATCH 09/96] wip: error fix in Canto modules --- x/coinswap/keeper/keeper_test.go | 2 +- x/coinswap/keeper/swap_test.go | 8 +++--- x/csr/keeper/integration_test.go | 5 ++-- x/csr/keeper/keeper_test.go | 31 ++++++++--------------- x/erc20/keeper/integration_test.go | 34 ++++++++++++++------------ x/erc20/keeper/keeper_test.go | 24 +++++++++--------- x/inflation/keeper/integration_test.go | 17 +++++++------ 7 files changed, 57 insertions(+), 64 deletions(-) diff --git a/x/coinswap/keeper/keeper_test.go b/x/coinswap/keeper/keeper_test.go index 460b8089a..7102d7fe9 100644 --- a/x/coinswap/keeper/keeper_test.go +++ b/x/coinswap/keeper/keeper_test.go @@ -20,7 +20,7 @@ import ( "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) -const ( +var ( denomStandard = sdk.DefaultBondDenom denomBTC = "btc" denomETH = "eth" diff --git a/x/coinswap/keeper/swap_test.go b/x/coinswap/keeper/swap_test.go index dfdb7afb7..a0fbb8a5a 100644 --- a/x/coinswap/keeper/swap_test.go +++ b/x/coinswap/keeper/swap_test.go @@ -295,8 +295,8 @@ func (suite *TestSuite) TestTradeInputForExactOutput() { bought := sdk.NewCoins(outputCoin) sold := sdk.NewCoins(sdk.NewCoin(denomBTC, amt)) - pb := poolBalances.Add(sold...).Sub(bought) - sb := senderBlances.Add(bought...).Sub(sold) + pb := poolBalances.Add(sold...).Sub(bought...) + sb := senderBlances.Add(bought...).Sub(sold...) fmt.Println(pb.String()) assertResult(suite, poolAddr, sender, pb, sb) @@ -329,8 +329,8 @@ func (suite *TestSuite) TestTradeExactInputForOutput() { sold := sdk.NewCoins(inputCoin) bought := sdk.NewCoins(sdk.NewCoin(denomStandard, amt)) - pb := poolBalances.Add(sold...).Sub(bought) - sb := senderBlances.Add(bought...).Sub(sold) + pb := poolBalances.Add(sold...).Sub(bought...) + sb := senderBlances.Add(bought...).Sub(sold...) assertResult(suite, poolAddr, sender, pb, sb) diff --git a/x/csr/keeper/integration_test.go b/x/csr/keeper/integration_test.go index 9a6395f61..d2593620a 100644 --- a/x/csr/keeper/integration_test.go +++ b/x/csr/keeper/integration_test.go @@ -125,7 +125,8 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { s.Require().NoError(err) // Register the smart contract - response := EVMTX(userKey, &contractAddress, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) + gasInfo, _, err := EVMTX(userKey, &contractAddress, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) + s.Require().NoError(err) s.Commit() // Track contracts added to NFT @@ -136,7 +137,7 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { s.Require().True(found) // Calculate the expected revenue for the transaction - expectedFee := CalculateExpectedFee(uint64(response.GasUsed), gasPrice, csrShares).BigInt() + expectedFee := CalculateExpectedFee(uint64(gasInfo.GasUsed), gasPrice, csrShares).BigInt() revenueByNFT[1] = expectedFee // Check CSR obj values diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index bf9da7519..f0b19a5aa 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -258,10 +258,10 @@ func EVMTX( gasTipCap *big.Int, data []byte, accesses *ethtypes.AccessList, -) abci.ResponseDeliverTx { +) (sdk.GasInfo, *sdk.Result, error) { msgEthereumTx := BuildEthTx(priv, to, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) - res := DeliverEthTx(priv, msgEthereumTx) - return res + gasInfo, result, err := DeliverEthTx(priv, msgEthereumTx) + return gasInfo, result, err } // Helper function that creates an ethereum transaction @@ -296,28 +296,17 @@ func BuildEthTx( return msgEthereumTx } -func DeliverEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) abci.ResponseDeliverTx { - bz := PrepareEthTx(priv, msgEthereumTx) - req := abci.RequestDeliverTx{Tx: bz} - res := s.app.BaseApp.DeliverTx(req) - return res +func DeliverEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) (sdk.GasInfo, *sdk.Result, error) { + ethTx := PrepareEthTx(priv, msgEthereumTx) + encodingConfig := encoding.MakeTestEncodingConfig() + txEncoder := encodingConfig.TxConfig.TxEncoder() + return s.app.BaseApp.SimDeliver(txEncoder, ethTx) } -func PrepareEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) []byte { +func PrepareEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) *evmtypes.MsgEthereumTx { // Sign transaction err := msgEthereumTx.Sign(s.ethSigner, tests.NewSigner(priv)) s.Require().NoError(err) - // Assemble transaction from fields - encodingConfig := encoding.MakeConfig(app.ModuleBasics) - txBuilder := encodingConfig.TxConfig.NewTxBuilder() - tx, err := msgEthereumTx.BuildTx(txBuilder, s.app.EvmKeeper.GetParams(s.ctx).EvmDenom) - s.Require().NoError(err) - - // Encode transaction by default Tx encoder and broadcasted over the network - txEncoder := encodingConfig.TxConfig.TxEncoder() - bz, err := txEncoder(tx) - s.Require().NoError(err) - - return bz + return msgEthereumTx } diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index 6e79a1d8d..d69a17ef0 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "context" "math/big" "github.com/cosmos/cosmos-sdk/client/tx" @@ -14,12 +15,10 @@ import ( "github.com/evmos/ethermint/encoding" ethermint "github.com/evmos/ethermint/types" - "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/testutil" "github.com/Canto-Network/Canto/v7/x/erc20/types" sdkmath "cosmossdk.io/math" - abci "github.com/cometbft/cometbft/abci/types" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" ) @@ -224,20 +223,21 @@ func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { addrBz := priv.PubKey().Address().Bytes() convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) - res := deliverTx(priv, convertCoinMsg) - Expect(res.IsOK()).To(BeTrue(), "failed to convert coin: %s", res.Log) + _, result, err := deliverTx(priv, convertCoinMsg) + s.Require().NoError(err, result.Log) } func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { addrBz := priv.PubKey().Address().Bytes() convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) - res := deliverTx(priv, convertERC20Msg) - Expect(res.IsOK()).To(BeTrue(), "failed to convert ERC20: %s", res.Log) + _, result, err := deliverTx(priv, convertERC20Msg) + s.Require().NoError(err, result.Log) } -func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) abci.ResponseDeliverTx { - encodingConfig := encoding.MakeConfig(app.ModuleBasics) +func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (sdk.GasInfo, *sdk.Result, error) { + encodingConfig := encoding.MakeTestEncodingConfig() + accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom denom := "acanto" @@ -257,7 +257,7 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) abci.ResponseDeliver sigV2 := signing.SignatureV2{ PubKey: priv.PubKey(), Data: &signing.SingleSignatureData{ - SignMode: encodingConfig.TxConfig.SignModeHandler().DefaultMode(), + SignMode: signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), Signature: nil, }, Sequence: seq, @@ -276,7 +276,8 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) abci.ResponseDeliver Sequence: seq, } sigV2, err = tx.SignWithPrivKey( - encodingConfig.TxConfig.SignModeHandler().DefaultMode(), signerData, + context.TODO(), + signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), signerData, txBuilder, priv, encodingConfig.TxConfig, seq, ) @@ -286,11 +287,12 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) abci.ResponseDeliver err = txBuilder.SetSignatures(sigsV2...) s.Require().NoError(err) - // bz are bytes to be broadcasted over the network - bz, err := encodingConfig.TxConfig.TxEncoder()(txBuilder.GetTx()) - s.Require().NoError(err) + return s.app.BaseApp.SimDeliver(encodingConfig.TxConfig.TxEncoder(), txBuilder.GetTx()) + //// bz are bytes to be broadcasted over the network + //bz, err := encodingConfig.TxConfig.TxEncoder()(txBuilder.GetTx()) + //s.Require().NoError(err) - req := abci.RequestDeliverTx{Tx: bz} - res := s.app.BaseApp.DeliverTx(req) - return res + //req := abci.RequestDeliverTx{Tx: bz} + //res := s.app.BaseApp.DeliverTx(req) + //return res } diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 64af716f6..34ce9d588 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -103,7 +103,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { if suite.mintFeeCollector { // mint some coin to fee collector coins := sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt(int64(params.TxGas)-1))) - genesisState := app.ModuleBasics.DefaultGenesis(suite.app.AppCodec()) + genesisState := app.NewDefaultGenesisState() balances := []banktypes.Balance{ { Address: suite.app.AccountKeeper.GetModuleAddress(authtypes.FeeCollectorName).String(), @@ -111,7 +111,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { }, } // update total supply - bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt((int64(params.TxGas)-1)))), []banktypes.Metadata{}) + bankGenesis := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(sdk.NewCoin(evm.DefaultEVMDenom, sdkmath.NewInt((int64(params.TxGas)-1)))), []banktypes.Metadata{}, []banktypes.SendEnabled{}) bz := suite.app.AppCodec().MustMarshalJSON(bankGenesis) require.NotNil(t, bz) genesisState[banktypes.ModuleName] = suite.app.AppCodec().MustMarshalJSON(bankGenesis) @@ -178,7 +178,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { require.NoError(t, err) suite.app.StakingKeeper.SetValidator(suite.ctx, validator) - encodingConfig := encoding.MakeConfig(app.ModuleBasics) + encodingConfig := encoding.MakeTestEncodingConfig() suite.clientCtx = client.Context{}.WithTxConfig(encodingConfig.TxConfig) suite.ethSigner = ethtypes.LatestSignerForChainID(suite.app.EvmKeeper.ChainID()) } @@ -497,27 +497,27 @@ type MockBankKeeper struct { mock.Mock } -func (b *MockBankKeeper) SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error { +func (b *MockBankKeeper) SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error { args := b.Called(mock.Anything, mock.Anything, mock.Anything, mock.Anything) return args.Error(0) } -func (b *MockBankKeeper) SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error { +func (b *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error { args := b.Called(mock.Anything, mock.Anything, mock.Anything, mock.Anything) return args.Error(0) } -func (b *MockBankKeeper) MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error { +func (b *MockBankKeeper) MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error { args := b.Called(mock.Anything, mock.Anything, mock.Anything) return args.Error(0) } -func (b *MockBankKeeper) BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error { +func (b *MockBankKeeper) BurnCoins(ctx context.Context, moduleName string, amt sdk.Coins) error { args := b.Called(mock.Anything, mock.Anything, mock.Anything) return args.Error(0) } -func (b *MockBankKeeper) IsSendEnabledCoin(ctx sdk.Context, coin sdk.Coin) bool { +func (b *MockBankKeeper) IsSendEnabledCoin(ctx context.Context, coin sdk.Coin) bool { args := b.Called(mock.Anything, mock.Anything) return args.Bool(0) } @@ -527,20 +527,20 @@ func (b *MockBankKeeper) BlockedAddr(addr sdk.AccAddress) bool { return args.Bool(0) } -func (b *MockBankKeeper) GetDenomMetaData(ctx sdk.Context, denom string) (banktypes.Metadata, bool) { +func (b *MockBankKeeper) GetDenomMetaData(ctx context.Context, denom string) (banktypes.Metadata, bool) { args := b.Called(mock.Anything, mock.Anything) return args.Get(0).(banktypes.Metadata), args.Bool(1) } -func (b *MockBankKeeper) SetDenomMetaData(ctx sdk.Context, denomMetaData banktypes.Metadata) { +func (b *MockBankKeeper) SetDenomMetaData(ctx context.Context, denomMetaData banktypes.Metadata) { } -func (b *MockBankKeeper) HasSupply(ctx sdk.Context, denom string) bool { +func (b *MockBankKeeper) HasSupply(ctx context.Context, denom string) bool { args := b.Called(mock.Anything, mock.Anything) return args.Bool(0) } -func (b *MockBankKeeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { +func (b *MockBankKeeper) GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin { args := b.Called(mock.Anything, mock.Anything) return args.Get(0).(sdk.Coin) } diff --git a/x/inflation/keeper/integration_test.go b/x/inflation/keeper/integration_test.go index b73896306..fb4ae33df 100644 --- a/x/inflation/keeper/integration_test.go +++ b/x/inflation/keeper/integration_test.go @@ -42,9 +42,10 @@ var _ = Describe("Inflation", Ordered, func() { s.CommitAfter(time.Hour * 23) // End Epoch }) It("should not allocate funds to the community pool", func() { - balance := s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) - fmt.Println("Community Pool balance before epoch end: ", balance.AmountOf(denomMint)) - Expect(balance.IsZero()).To(BeTrue()) + feePool, err := s.app.DistrKeeper.FeePool.Get(s.ctx) + s.Require().NoError(err) + fmt.Println("Community Pool balance before epoch end: ", feePool.CommunityPool.AmountOf(denomMint)) + Expect(feePool.CommunityPool.IsZero()).To(BeTrue()) }) }) @@ -54,8 +55,8 @@ var _ = Describe("Inflation", Ordered, func() { s.CommitAfter(time.Hour * 25) // End Epoch }) It("should allocate staking provision funds to the community pool", func() { - balanceCommunityPool := s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) - + feePool, err := s.app.DistrKeeper.FeePool.Get(s.ctx) + s.Require().NoError(err) provision, _ := s.app.InflationKeeper.GetEpochMintProvision(s.ctx) params := s.app.InflationKeeper.GetParams(s.ctx) @@ -65,7 +66,7 @@ var _ = Describe("Inflation", Ordered, func() { staking := s.app.AccountKeeper.GetModuleAddress("fee_collector") stakingBal := s.app.BankKeeper.GetAllBalances(s.ctx, staking) // fees distributed - Expect(balanceCommunityPool.AmountOf(denomMint).Equal(expectedStaking)).To(BeTrue()) + Expect(feePool.CommunityPool.AmountOf(denomMint).Equal(expectedStaking)).To(BeTrue()) Expect(stakingBal.AmountOf(denomMint).Equal(sdkmath.NewInt(0))).To(BeTrue()) }) }) @@ -219,8 +220,8 @@ var _ = Describe("Inflation", Ordered, func() { It("Commit block after Epoch and balance will be Epoch Mint Provision", func() { provision, _ := s.app.InflationKeeper.GetEpochMintProvision(s.ctx) s.CommitAfter(time.Minute) - s.CommitAfter(time.Hour * 25) // epoch will have ended - s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) //Get Fee Pool befor + s.CommitAfter(time.Hour * 25) // epoch will have ended + //s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) //Get Fee Pool befor // valAddr, _ := sdk.ValAddressFromBech32(v.OperatorAddress) valBal, err := s.app.DistrKeeper.GetValidatorCurrentRewards(s.ctx, valAddr) From da1936ff9ac3c40d42741c5e9a3e2d1c05f21e34 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 18 Dec 2023 13:50:33 +0900 Subject: [PATCH 10/96] chore: fix staking keeper in app.go, fix proto files --- api/canto/coinswap/v1/coinswap.pulsar.go | 2897 ++++++++++ api/canto/coinswap/v1/genesis.pulsar.go | 878 +++ api/canto/coinswap/v1/query.pulsar.go | 4034 +++++++++++++ api/canto/coinswap/v1/query_grpc.pb.go | 191 + api/canto/coinswap/v1/tx.pulsar.go | 3843 ++++++++++++ api/canto/coinswap/v1/tx_grpc.pb.go | 195 + api/canto/csr/v1/csr.pulsar.go | 826 +++ api/canto/csr/v1/genesis.pulsar.go | 591 ++ api/canto/csr/v1/params.pulsar.go | 641 ++ api/canto/csr/v1/query.pulsar.go | 4963 ++++++++++++++++ api/canto/csr/v1/query_grpc.pb.go | 267 + api/canto/epochs/v1/genesis.pulsar.go | 1594 +++++ api/canto/epochs/v1/query.pulsar.go | 2191 +++++++ api/canto/epochs/v1/query_grpc.pb.go | 150 + api/canto/erc20/v1/erc20.pulsar.go | 2731 +++++++++ api/canto/erc20/v1/genesis.pulsar.go | 1276 ++++ api/canto/erc20/v1/query.pulsar.go | 3136 ++++++++++ api/canto/erc20/v1/query_grpc.pb.go | 189 + api/canto/erc20/v1/tx.pulsar.go | 2268 ++++++++ api/canto/erc20/v1/tx_grpc.pb.go | 154 + api/canto/govshuttle/v1/genesis.pulsar.go | 595 ++ api/canto/govshuttle/v1/govshuttle.pulsar.go | 3495 +++++++++++ api/canto/govshuttle/v1/query.pulsar.go | 1010 ++++ api/canto/govshuttle/v1/query_grpc.pb.go | 111 + api/canto/govshuttle/v1/tx.pulsar.go | 79 + api/canto/govshuttle/v1/tx_grpc.pb.go | 67 + api/canto/inflation/v1/genesis.pulsar.go | 1579 +++++ api/canto/inflation/v1/inflation.pulsar.go | 1467 +++++ api/canto/inflation/v1/query.pulsar.go | 5455 ++++++++++++++++++ api/canto/inflation/v1/query_grpc.pb.go | 308 + api/canto/onboarding/v1/genesis.pulsar.go | 1270 ++++ api/canto/onboarding/v1/query.pulsar.go | 1007 ++++ api/canto/onboarding/v1/query_grpc.pb.go | 111 + app/app.go | 4 +- proto/buf.gen.pulsar.yaml | 20 + proto/canto/coinswap/v1/tx.proto | 3 + proto/canto/erc20/v1/tx.proto | 3 + proto/canto/govshuttle/v1/tx.proto | 4 + scripts/protocgen-pulsar.sh | 2 - x/coinswap/types/tx.pb.go | 96 +- x/erc20/types/tx.pb.go | 64 +- x/govshuttle/types/tx.pb.go | 17 +- x/onboarding/testutil/helpers.go | 10 +- 43 files changed, 49700 insertions(+), 92 deletions(-) create mode 100644 api/canto/coinswap/v1/coinswap.pulsar.go create mode 100644 api/canto/coinswap/v1/genesis.pulsar.go create mode 100644 api/canto/coinswap/v1/query.pulsar.go create mode 100644 api/canto/coinswap/v1/query_grpc.pb.go create mode 100644 api/canto/coinswap/v1/tx.pulsar.go create mode 100644 api/canto/coinswap/v1/tx_grpc.pb.go create mode 100644 api/canto/csr/v1/csr.pulsar.go create mode 100644 api/canto/csr/v1/genesis.pulsar.go create mode 100644 api/canto/csr/v1/params.pulsar.go create mode 100644 api/canto/csr/v1/query.pulsar.go create mode 100644 api/canto/csr/v1/query_grpc.pb.go create mode 100644 api/canto/epochs/v1/genesis.pulsar.go create mode 100644 api/canto/epochs/v1/query.pulsar.go create mode 100644 api/canto/epochs/v1/query_grpc.pb.go create mode 100644 api/canto/erc20/v1/erc20.pulsar.go create mode 100644 api/canto/erc20/v1/genesis.pulsar.go create mode 100644 api/canto/erc20/v1/query.pulsar.go create mode 100644 api/canto/erc20/v1/query_grpc.pb.go create mode 100644 api/canto/erc20/v1/tx.pulsar.go create mode 100644 api/canto/erc20/v1/tx_grpc.pb.go create mode 100644 api/canto/govshuttle/v1/genesis.pulsar.go create mode 100644 api/canto/govshuttle/v1/govshuttle.pulsar.go create mode 100644 api/canto/govshuttle/v1/query.pulsar.go create mode 100644 api/canto/govshuttle/v1/query_grpc.pb.go create mode 100644 api/canto/govshuttle/v1/tx.pulsar.go create mode 100644 api/canto/govshuttle/v1/tx_grpc.pb.go create mode 100644 api/canto/inflation/v1/genesis.pulsar.go create mode 100644 api/canto/inflation/v1/inflation.pulsar.go create mode 100644 api/canto/inflation/v1/query.pulsar.go create mode 100644 api/canto/inflation/v1/query_grpc.pb.go create mode 100644 api/canto/onboarding/v1/genesis.pulsar.go create mode 100644 api/canto/onboarding/v1/query.pulsar.go create mode 100644 api/canto/onboarding/v1/query_grpc.pb.go create mode 100644 proto/buf.gen.pulsar.yaml diff --git a/api/canto/coinswap/v1/coinswap.pulsar.go b/api/canto/coinswap/v1/coinswap.pulsar.go new file mode 100644 index 000000000..abf65a1e9 --- /dev/null +++ b/api/canto/coinswap/v1/coinswap.pulsar.go @@ -0,0 +1,2897 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package coinswapv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Input protoreflect.MessageDescriptor + fd_Input_address protoreflect.FieldDescriptor + fd_Input_coin protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_coinswap_proto_init() + md_Input = File_canto_coinswap_v1_coinswap_proto.Messages().ByName("Input") + fd_Input_address = md_Input.Fields().ByName("address") + fd_Input_coin = md_Input.Fields().ByName("coin") +} + +var _ protoreflect.Message = (*fastReflection_Input)(nil) + +type fastReflection_Input Input + +func (x *Input) ProtoReflect() protoreflect.Message { + return (*fastReflection_Input)(x) +} + +func (x *Input) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Input_messageType fastReflection_Input_messageType +var _ protoreflect.MessageType = fastReflection_Input_messageType{} + +type fastReflection_Input_messageType struct{} + +func (x fastReflection_Input_messageType) Zero() protoreflect.Message { + return (*fastReflection_Input)(nil) +} +func (x fastReflection_Input_messageType) New() protoreflect.Message { + return new(fastReflection_Input) +} +func (x fastReflection_Input_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Input +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Input) Descriptor() protoreflect.MessageDescriptor { + return md_Input +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Input) Type() protoreflect.MessageType { + return _fastReflection_Input_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Input) New() protoreflect.Message { + return new(fastReflection_Input) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Input) Interface() protoreflect.ProtoMessage { + return (*Input)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Input) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_Input_address, value) { + return + } + } + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_Input_coin, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Input) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.Input.address": + return x.Address != "" + case "canto.coinswap.v1.Input.coin": + return x.Coin != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Input) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.Input.address": + x.Address = "" + case "canto.coinswap.v1.Input.coin": + x.Coin = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Input) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.Input.address": + value := x.Address + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Input.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Input) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.Input.address": + x.Address = value.Interface().(string) + case "canto.coinswap.v1.Input.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Input) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Input.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "canto.coinswap.v1.Input.address": + panic(fmt.Errorf("field address of message canto.coinswap.v1.Input is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Input) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Input.address": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Input.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Input")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Input does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Input) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.Input", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Input) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Input) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Input) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Input) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Input) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Coin != nil { + l = options.Size(x.Coin) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Input) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Input) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Input: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Input: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Output protoreflect.MessageDescriptor + fd_Output_address protoreflect.FieldDescriptor + fd_Output_coin protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_coinswap_proto_init() + md_Output = File_canto_coinswap_v1_coinswap_proto.Messages().ByName("Output") + fd_Output_address = md_Output.Fields().ByName("address") + fd_Output_coin = md_Output.Fields().ByName("coin") +} + +var _ protoreflect.Message = (*fastReflection_Output)(nil) + +type fastReflection_Output Output + +func (x *Output) ProtoReflect() protoreflect.Message { + return (*fastReflection_Output)(x) +} + +func (x *Output) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Output_messageType fastReflection_Output_messageType +var _ protoreflect.MessageType = fastReflection_Output_messageType{} + +type fastReflection_Output_messageType struct{} + +func (x fastReflection_Output_messageType) Zero() protoreflect.Message { + return (*fastReflection_Output)(nil) +} +func (x fastReflection_Output_messageType) New() protoreflect.Message { + return new(fastReflection_Output) +} +func (x fastReflection_Output_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Output +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Output) Descriptor() protoreflect.MessageDescriptor { + return md_Output +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Output) Type() protoreflect.MessageType { + return _fastReflection_Output_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Output) New() protoreflect.Message { + return new(fastReflection_Output) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Output) Interface() protoreflect.ProtoMessage { + return (*Output)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Output) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_Output_address, value) { + return + } + } + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_Output_coin, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Output) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.Output.address": + return x.Address != "" + case "canto.coinswap.v1.Output.coin": + return x.Coin != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Output) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.Output.address": + x.Address = "" + case "canto.coinswap.v1.Output.coin": + x.Coin = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Output) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.Output.address": + value := x.Address + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Output.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Output) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.Output.address": + x.Address = value.Interface().(string) + case "canto.coinswap.v1.Output.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Output) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Output.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "canto.coinswap.v1.Output.address": + panic(fmt.Errorf("field address of message canto.coinswap.v1.Output is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Output) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Output.address": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Output.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Output")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Output does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Output) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.Output", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Output) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Output) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Output) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Output) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Output) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Coin != nil { + l = options.Size(x.Coin) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Output) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Output) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Output: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Output: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Pool protoreflect.MessageDescriptor + fd_Pool_id protoreflect.FieldDescriptor + fd_Pool_standard_denom protoreflect.FieldDescriptor + fd_Pool_counterparty_denom protoreflect.FieldDescriptor + fd_Pool_escrow_address protoreflect.FieldDescriptor + fd_Pool_lpt_denom protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_coinswap_proto_init() + md_Pool = File_canto_coinswap_v1_coinswap_proto.Messages().ByName("Pool") + fd_Pool_id = md_Pool.Fields().ByName("id") + fd_Pool_standard_denom = md_Pool.Fields().ByName("standard_denom") + fd_Pool_counterparty_denom = md_Pool.Fields().ByName("counterparty_denom") + fd_Pool_escrow_address = md_Pool.Fields().ByName("escrow_address") + fd_Pool_lpt_denom = md_Pool.Fields().ByName("lpt_denom") +} + +var _ protoreflect.Message = (*fastReflection_Pool)(nil) + +type fastReflection_Pool Pool + +func (x *Pool) ProtoReflect() protoreflect.Message { + return (*fastReflection_Pool)(x) +} + +func (x *Pool) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Pool_messageType fastReflection_Pool_messageType +var _ protoreflect.MessageType = fastReflection_Pool_messageType{} + +type fastReflection_Pool_messageType struct{} + +func (x fastReflection_Pool_messageType) Zero() protoreflect.Message { + return (*fastReflection_Pool)(nil) +} +func (x fastReflection_Pool_messageType) New() protoreflect.Message { + return new(fastReflection_Pool) +} +func (x fastReflection_Pool_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Pool +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Pool) Descriptor() protoreflect.MessageDescriptor { + return md_Pool +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Pool) Type() protoreflect.MessageType { + return _fastReflection_Pool_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Pool) New() protoreflect.Message { + return new(fastReflection_Pool) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Pool) Interface() protoreflect.ProtoMessage { + return (*Pool)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Pool) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != "" { + value := protoreflect.ValueOfString(x.Id) + if !f(fd_Pool_id, value) { + return + } + } + if x.StandardDenom != "" { + value := protoreflect.ValueOfString(x.StandardDenom) + if !f(fd_Pool_standard_denom, value) { + return + } + } + if x.CounterpartyDenom != "" { + value := protoreflect.ValueOfString(x.CounterpartyDenom) + if !f(fd_Pool_counterparty_denom, value) { + return + } + } + if x.EscrowAddress != "" { + value := protoreflect.ValueOfString(x.EscrowAddress) + if !f(fd_Pool_escrow_address, value) { + return + } + } + if x.LptDenom != "" { + value := protoreflect.ValueOfString(x.LptDenom) + if !f(fd_Pool_lpt_denom, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Pool) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.Pool.id": + return x.Id != "" + case "canto.coinswap.v1.Pool.standard_denom": + return x.StandardDenom != "" + case "canto.coinswap.v1.Pool.counterparty_denom": + return x.CounterpartyDenom != "" + case "canto.coinswap.v1.Pool.escrow_address": + return x.EscrowAddress != "" + case "canto.coinswap.v1.Pool.lpt_denom": + return x.LptDenom != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Pool) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.Pool.id": + x.Id = "" + case "canto.coinswap.v1.Pool.standard_denom": + x.StandardDenom = "" + case "canto.coinswap.v1.Pool.counterparty_denom": + x.CounterpartyDenom = "" + case "canto.coinswap.v1.Pool.escrow_address": + x.EscrowAddress = "" + case "canto.coinswap.v1.Pool.lpt_denom": + x.LptDenom = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Pool) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.Pool.id": + value := x.Id + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Pool.standard_denom": + value := x.StandardDenom + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Pool.counterparty_denom": + value := x.CounterpartyDenom + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Pool.escrow_address": + value := x.EscrowAddress + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Pool.lpt_denom": + value := x.LptDenom + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Pool) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.Pool.id": + x.Id = value.Interface().(string) + case "canto.coinswap.v1.Pool.standard_denom": + x.StandardDenom = value.Interface().(string) + case "canto.coinswap.v1.Pool.counterparty_denom": + x.CounterpartyDenom = value.Interface().(string) + case "canto.coinswap.v1.Pool.escrow_address": + x.EscrowAddress = value.Interface().(string) + case "canto.coinswap.v1.Pool.lpt_denom": + x.LptDenom = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Pool) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Pool.id": + panic(fmt.Errorf("field id of message canto.coinswap.v1.Pool is not mutable")) + case "canto.coinswap.v1.Pool.standard_denom": + panic(fmt.Errorf("field standard_denom of message canto.coinswap.v1.Pool is not mutable")) + case "canto.coinswap.v1.Pool.counterparty_denom": + panic(fmt.Errorf("field counterparty_denom of message canto.coinswap.v1.Pool is not mutable")) + case "canto.coinswap.v1.Pool.escrow_address": + panic(fmt.Errorf("field escrow_address of message canto.coinswap.v1.Pool is not mutable")) + case "canto.coinswap.v1.Pool.lpt_denom": + panic(fmt.Errorf("field lpt_denom of message canto.coinswap.v1.Pool is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Pool) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Pool.id": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Pool.standard_denom": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Pool.counterparty_denom": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Pool.escrow_address": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Pool.lpt_denom": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Pool")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Pool does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Pool) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.Pool", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Pool) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Pool) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Pool) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Pool) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Pool) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Id) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StandardDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.CounterpartyDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.EscrowAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.LptDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Pool) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.LptDenom) > 0 { + i -= len(x.LptDenom) + copy(dAtA[i:], x.LptDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LptDenom))) + i-- + dAtA[i] = 0x2a + } + if len(x.EscrowAddress) > 0 { + i -= len(x.EscrowAddress) + copy(dAtA[i:], x.EscrowAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EscrowAddress))) + i-- + dAtA[i] = 0x22 + } + if len(x.CounterpartyDenom) > 0 { + i -= len(x.CounterpartyDenom) + copy(dAtA[i:], x.CounterpartyDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CounterpartyDenom))) + i-- + dAtA[i] = 0x1a + } + if len(x.StandardDenom) > 0 { + i -= len(x.StandardDenom) + copy(dAtA[i:], x.StandardDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StandardDenom))) + i-- + dAtA[i] = 0x12 + } + if len(x.Id) > 0 { + i -= len(x.Id) + copy(dAtA[i:], x.Id) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Pool) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Pool: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Pool: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StandardDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.StandardDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CounterpartyDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.CounterpartyDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EscrowAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.EscrowAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LptDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.LptDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_Params_6_list)(nil) + +type _Params_6_list struct { + list *[]*v1beta1.Coin +} + +func (x *_Params_6_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_6_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Params_6_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_Params_6_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_6_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_6_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Params_6_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_6_list) IsValid() bool { + return x.list != nil +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_fee protoreflect.FieldDescriptor + fd_Params_pool_creation_fee protoreflect.FieldDescriptor + fd_Params_tax_rate protoreflect.FieldDescriptor + fd_Params_max_standard_coin_per_pool protoreflect.FieldDescriptor + fd_Params_max_swap_amount protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_coinswap_proto_init() + md_Params = File_canto_coinswap_v1_coinswap_proto.Messages().ByName("Params") + fd_Params_fee = md_Params.Fields().ByName("fee") + fd_Params_pool_creation_fee = md_Params.Fields().ByName("pool_creation_fee") + fd_Params_tax_rate = md_Params.Fields().ByName("tax_rate") + fd_Params_max_standard_coin_per_pool = md_Params.Fields().ByName("max_standard_coin_per_pool") + fd_Params_max_swap_amount = md_Params.Fields().ByName("max_swap_amount") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Fee != nil { + value := protoreflect.ValueOfMessage(x.Fee.ProtoReflect()) + if !f(fd_Params_fee, value) { + return + } + } + if x.PoolCreationFee != nil { + value := protoreflect.ValueOfMessage(x.PoolCreationFee.ProtoReflect()) + if !f(fd_Params_pool_creation_fee, value) { + return + } + } + if x.TaxRate != "" { + value := protoreflect.ValueOfString(x.TaxRate) + if !f(fd_Params_tax_rate, value) { + return + } + } + if x.MaxStandardCoinPerPool != "" { + value := protoreflect.ValueOfString(x.MaxStandardCoinPerPool) + if !f(fd_Params_max_standard_coin_per_pool, value) { + return + } + } + if len(x.MaxSwapAmount) != 0 { + value := protoreflect.ValueOfList(&_Params_6_list{list: &x.MaxSwapAmount}) + if !f(fd_Params_max_swap_amount, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.Params.fee": + return x.Fee != nil + case "canto.coinswap.v1.Params.pool_creation_fee": + return x.PoolCreationFee != nil + case "canto.coinswap.v1.Params.tax_rate": + return x.TaxRate != "" + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + return x.MaxStandardCoinPerPool != "" + case "canto.coinswap.v1.Params.max_swap_amount": + return len(x.MaxSwapAmount) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.Params.fee": + x.Fee = nil + case "canto.coinswap.v1.Params.pool_creation_fee": + x.PoolCreationFee = nil + case "canto.coinswap.v1.Params.tax_rate": + x.TaxRate = "" + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + x.MaxStandardCoinPerPool = "" + case "canto.coinswap.v1.Params.max_swap_amount": + x.MaxSwapAmount = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.Params.fee": + value := x.Fee + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.Params.pool_creation_fee": + value := x.PoolCreationFee + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.Params.tax_rate": + value := x.TaxRate + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + value := x.MaxStandardCoinPerPool + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.Params.max_swap_amount": + if len(x.MaxSwapAmount) == 0 { + return protoreflect.ValueOfList(&_Params_6_list{}) + } + listValue := &_Params_6_list{list: &x.MaxSwapAmount} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.Params.fee": + x.Fee = value.Message().Interface().(*v1beta1.Coin) + case "canto.coinswap.v1.Params.pool_creation_fee": + x.PoolCreationFee = value.Message().Interface().(*v1beta1.Coin) + case "canto.coinswap.v1.Params.tax_rate": + x.TaxRate = value.Interface().(string) + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + x.MaxStandardCoinPerPool = value.Interface().(string) + case "canto.coinswap.v1.Params.max_swap_amount": + lv := value.List() + clv := lv.(*_Params_6_list) + x.MaxSwapAmount = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Params.fee": + if x.Fee == nil { + x.Fee = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Fee.ProtoReflect()) + case "canto.coinswap.v1.Params.pool_creation_fee": + if x.PoolCreationFee == nil { + x.PoolCreationFee = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.PoolCreationFee.ProtoReflect()) + case "canto.coinswap.v1.Params.max_swap_amount": + if x.MaxSwapAmount == nil { + x.MaxSwapAmount = []*v1beta1.Coin{} + } + value := &_Params_6_list{list: &x.MaxSwapAmount} + return protoreflect.ValueOfList(value) + case "canto.coinswap.v1.Params.tax_rate": + panic(fmt.Errorf("field tax_rate of message canto.coinswap.v1.Params is not mutable")) + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + panic(fmt.Errorf("field max_standard_coin_per_pool of message canto.coinswap.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.Params.fee": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.Params.pool_creation_fee": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.Params.tax_rate": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Params.max_standard_coin_per_pool": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.Params.max_swap_amount": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_Params_6_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.Params")) + } + panic(fmt.Errorf("message canto.coinswap.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Fee != nil { + l = options.Size(x.Fee) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.PoolCreationFee != nil { + l = options.Size(x.PoolCreationFee) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.TaxRate) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MaxStandardCoinPerPool) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.MaxSwapAmount) > 0 { + for _, e := range x.MaxSwapAmount { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.MaxSwapAmount) > 0 { + for iNdEx := len(x.MaxSwapAmount) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.MaxSwapAmount[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + } + if len(x.MaxStandardCoinPerPool) > 0 { + i -= len(x.MaxStandardCoinPerPool) + copy(dAtA[i:], x.MaxStandardCoinPerPool) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MaxStandardCoinPerPool))) + i-- + dAtA[i] = 0x22 + } + if len(x.TaxRate) > 0 { + i -= len(x.TaxRate) + copy(dAtA[i:], x.TaxRate) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.TaxRate))) + i-- + dAtA[i] = 0x1a + } + if x.PoolCreationFee != nil { + encoded, err := options.Marshal(x.PoolCreationFee) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.Fee != nil { + encoded, err := options.Marshal(x.Fee) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Fee == nil { + x.Fee = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Fee); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PoolCreationFee", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.PoolCreationFee == nil { + x.PoolCreationFee = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.PoolCreationFee); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TaxRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TaxRate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxStandardCoinPerPool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MaxStandardCoinPerPool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxSwapAmount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MaxSwapAmount = append(x.MaxSwapAmount, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MaxSwapAmount[len(x.MaxSwapAmount)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/coinswap/v1/coinswap.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Input defines the properties of order's input +type Input struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Coin *v1beta1.Coin `protobuf:"bytes,2,opt,name=coin,proto3" json:"coin,omitempty"` +} + +func (x *Input) Reset() { + *x = Input{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Input) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Input) ProtoMessage() {} + +// Deprecated: Use Input.ProtoReflect.Descriptor instead. +func (*Input) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_coinswap_proto_rawDescGZIP(), []int{0} +} + +func (x *Input) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *Input) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +// Output defines the properties of order's output +type Output struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Coin *v1beta1.Coin `protobuf:"bytes,2,opt,name=coin,proto3" json:"coin,omitempty"` +} + +func (x *Output) Reset() { + *x = Output{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Output) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Output) ProtoMessage() {} + +// Deprecated: Use Output.ProtoReflect.Descriptor instead. +func (*Output) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_coinswap_proto_rawDescGZIP(), []int{1} +} + +func (x *Output) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *Output) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +type Pool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // denom of base coin of the pool + StandardDenom string `protobuf:"bytes,2,opt,name=standard_denom,json=standardDenom,proto3" json:"standard_denom,omitempty"` + // denom of counterparty coin of the pool + CounterpartyDenom string `protobuf:"bytes,3,opt,name=counterparty_denom,json=counterpartyDenom,proto3" json:"counterparty_denom,omitempty"` + // escrow account for deposit tokens + EscrowAddress string `protobuf:"bytes,4,opt,name=escrow_address,json=escrowAddress,proto3" json:"escrow_address,omitempty"` + // denom of the liquidity pool coin + LptDenom string `protobuf:"bytes,5,opt,name=lpt_denom,json=lptDenom,proto3" json:"lpt_denom,omitempty"` +} + +func (x *Pool) Reset() { + *x = Pool{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Pool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Pool) ProtoMessage() {} + +// Deprecated: Use Pool.ProtoReflect.Descriptor instead. +func (*Pool) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_coinswap_proto_rawDescGZIP(), []int{2} +} + +func (x *Pool) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Pool) GetStandardDenom() string { + if x != nil { + return x.StandardDenom + } + return "" +} + +func (x *Pool) GetCounterpartyDenom() string { + if x != nil { + return x.CounterpartyDenom + } + return "" +} + +func (x *Pool) GetEscrowAddress() string { + if x != nil { + return x.EscrowAddress + } + return "" +} + +func (x *Pool) GetLptDenom() string { + if x != nil { + return x.LptDenom + } + return "" +} + +// Params defines token module's parameters +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fee *v1beta1.Coin `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` + PoolCreationFee *v1beta1.Coin `protobuf:"bytes,2,opt,name=pool_creation_fee,json=poolCreationFee,proto3" json:"pool_creation_fee,omitempty"` + TaxRate string `protobuf:"bytes,3,opt,name=tax_rate,json=taxRate,proto3" json:"tax_rate,omitempty"` + MaxStandardCoinPerPool string `protobuf:"bytes,4,opt,name=max_standard_coin_per_pool,json=maxStandardCoinPerPool,proto3" json:"max_standard_coin_per_pool,omitempty"` + MaxSwapAmount []*v1beta1.Coin `protobuf:"bytes,6,rep,name=max_swap_amount,json=maxSwapAmount,proto3" json:"max_swap_amount,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_coinswap_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_coinswap_proto_rawDescGZIP(), []int{3} +} + +func (x *Params) GetFee() *v1beta1.Coin { + if x != nil { + return x.Fee + } + return nil +} + +func (x *Params) GetPoolCreationFee() *v1beta1.Coin { + if x != nil { + return x.PoolCreationFee + } + return nil +} + +func (x *Params) GetTaxRate() string { + if x != nil { + return x.TaxRate + } + return "" +} + +func (x *Params) GetMaxStandardCoinPerPool() string { + if x != nil { + return x.MaxStandardCoinPerPool + } + return "" +} + +func (x *Params) GetMaxSwapAmount() []*v1beta1.Coin { + if x != nil { + return x.MaxSwapAmount + } + return nil +} + +var File_canto_coinswap_v1_coinswap_proto protoreflect.FileDescriptor + +var file_canto_coinswap_v1_coinswap_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x11, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, + 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x56, 0x0a, 0x05, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0x57, + 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0xb0, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6e, + 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, + 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x73, 0x63, 0x72, 0x6f, 0x77, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x65, 0x73, 0x63, 0x72, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x6c, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x70, 0x74, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0xdd, 0x03, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x31, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, + 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, + 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x65, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x07, 0x74, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, + 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, + 0x49, 0x6e, 0x74, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x73, 0x0a, 0x0f, 0x6d, + 0x61, 0x78, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, + 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x53, 0x77, 0x61, 0x70, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x42, 0xbf, 0x01, 0x0a, 0x15, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_coinswap_v1_coinswap_proto_rawDescOnce sync.Once + file_canto_coinswap_v1_coinswap_proto_rawDescData = file_canto_coinswap_v1_coinswap_proto_rawDesc +) + +func file_canto_coinswap_v1_coinswap_proto_rawDescGZIP() []byte { + file_canto_coinswap_v1_coinswap_proto_rawDescOnce.Do(func() { + file_canto_coinswap_v1_coinswap_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_coinswap_v1_coinswap_proto_rawDescData) + }) + return file_canto_coinswap_v1_coinswap_proto_rawDescData +} + +var file_canto_coinswap_v1_coinswap_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_coinswap_v1_coinswap_proto_goTypes = []interface{}{ + (*Input)(nil), // 0: canto.coinswap.v1.Input + (*Output)(nil), // 1: canto.coinswap.v1.Output + (*Pool)(nil), // 2: canto.coinswap.v1.Pool + (*Params)(nil), // 3: canto.coinswap.v1.Params + (*v1beta1.Coin)(nil), // 4: cosmos.base.v1beta1.Coin +} +var file_canto_coinswap_v1_coinswap_proto_depIdxs = []int32{ + 4, // 0: canto.coinswap.v1.Input.coin:type_name -> cosmos.base.v1beta1.Coin + 4, // 1: canto.coinswap.v1.Output.coin:type_name -> cosmos.base.v1beta1.Coin + 4, // 2: canto.coinswap.v1.Params.fee:type_name -> cosmos.base.v1beta1.Coin + 4, // 3: canto.coinswap.v1.Params.pool_creation_fee:type_name -> cosmos.base.v1beta1.Coin + 4, // 4: canto.coinswap.v1.Params.max_swap_amount:type_name -> cosmos.base.v1beta1.Coin + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_canto_coinswap_v1_coinswap_proto_init() } +func file_canto_coinswap_v1_coinswap_proto_init() { + if File_canto_coinswap_v1_coinswap_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_coinswap_v1_coinswap_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Input); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_coinswap_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Output); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_coinswap_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Pool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_coinswap_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_coinswap_v1_coinswap_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_coinswap_v1_coinswap_proto_goTypes, + DependencyIndexes: file_canto_coinswap_v1_coinswap_proto_depIdxs, + MessageInfos: file_canto_coinswap_v1_coinswap_proto_msgTypes, + }.Build() + File_canto_coinswap_v1_coinswap_proto = out.File + file_canto_coinswap_v1_coinswap_proto_rawDesc = nil + file_canto_coinswap_v1_coinswap_proto_goTypes = nil + file_canto_coinswap_v1_coinswap_proto_depIdxs = nil +} diff --git a/api/canto/coinswap/v1/genesis.pulsar.go b/api/canto/coinswap/v1/genesis.pulsar.go new file mode 100644 index 000000000..f04eb99e3 --- /dev/null +++ b/api/canto/coinswap/v1/genesis.pulsar.go @@ -0,0 +1,878 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package coinswapv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_GenesisState_3_list)(nil) + +type _GenesisState_3_list struct { + list *[]*Pool +} + +func (x *_GenesisState_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Pool) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*Pool) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_3_list) AppendMutable() protoreflect.Value { + v := new(Pool) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_3_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_3_list) NewElement() protoreflect.Value { + v := new(Pool) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_3_list) IsValid() bool { + return x.list != nil +} + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_standard_denom protoreflect.FieldDescriptor + fd_GenesisState_pool protoreflect.FieldDescriptor + fd_GenesisState_sequence protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_genesis_proto_init() + md_GenesisState = File_canto_coinswap_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") + fd_GenesisState_standard_denom = md_GenesisState.Fields().ByName("standard_denom") + fd_GenesisState_pool = md_GenesisState.Fields().ByName("pool") + fd_GenesisState_sequence = md_GenesisState.Fields().ByName("sequence") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } + if x.StandardDenom != "" { + value := protoreflect.ValueOfString(x.StandardDenom) + if !f(fd_GenesisState_standard_denom, value) { + return + } + } + if len(x.Pool) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.Pool}) + if !f(fd_GenesisState_pool, value) { + return + } + } + if x.Sequence != uint64(0) { + value := protoreflect.ValueOfUint64(x.Sequence) + if !f(fd_GenesisState_sequence, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.GenesisState.params": + return x.Params != nil + case "canto.coinswap.v1.GenesisState.standard_denom": + return x.StandardDenom != "" + case "canto.coinswap.v1.GenesisState.pool": + return len(x.Pool) != 0 + case "canto.coinswap.v1.GenesisState.sequence": + return x.Sequence != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.GenesisState.params": + x.Params = nil + case "canto.coinswap.v1.GenesisState.standard_denom": + x.StandardDenom = "" + case "canto.coinswap.v1.GenesisState.pool": + x.Pool = nil + case "canto.coinswap.v1.GenesisState.sequence": + x.Sequence = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.GenesisState.standard_denom": + value := x.StandardDenom + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.GenesisState.pool": + if len(x.Pool) == 0 { + return protoreflect.ValueOfList(&_GenesisState_3_list{}) + } + listValue := &_GenesisState_3_list{list: &x.Pool} + return protoreflect.ValueOfList(listValue) + case "canto.coinswap.v1.GenesisState.sequence": + value := x.Sequence + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + case "canto.coinswap.v1.GenesisState.standard_denom": + x.StandardDenom = value.Interface().(string) + case "canto.coinswap.v1.GenesisState.pool": + lv := value.List() + clv := lv.(*_GenesisState_3_list) + x.Pool = *clv.list + case "canto.coinswap.v1.GenesisState.sequence": + x.Sequence = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.coinswap.v1.GenesisState.pool": + if x.Pool == nil { + x.Pool = []*Pool{} + } + value := &_GenesisState_3_list{list: &x.Pool} + return protoreflect.ValueOfList(value) + case "canto.coinswap.v1.GenesisState.standard_denom": + panic(fmt.Errorf("field standard_denom of message canto.coinswap.v1.GenesisState is not mutable")) + case "canto.coinswap.v1.GenesisState.sequence": + panic(fmt.Errorf("field sequence of message canto.coinswap.v1.GenesisState is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.GenesisState.standard_denom": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.GenesisState.pool": + list := []*Pool{} + return protoreflect.ValueOfList(&_GenesisState_3_list{list: &list}) + case "canto.coinswap.v1.GenesisState.sequence": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.coinswap.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.StandardDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Pool) > 0 { + for _, e := range x.Pool { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Sequence != 0 { + n += 1 + runtime.Sov(uint64(x.Sequence)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Sequence != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Sequence)) + i-- + dAtA[i] = 0x20 + } + if len(x.Pool) > 0 { + for iNdEx := len(x.Pool) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Pool[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + } + if len(x.StandardDenom) > 0 { + i -= len(x.StandardDenom) + copy(dAtA[i:], x.StandardDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StandardDenom))) + i-- + dAtA[i] = 0x12 + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StandardDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.StandardDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Pool = append(x.Pool, &Pool{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pool[len(x.Pool)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType) + } + x.Sequence = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Sequence |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/coinswap/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the coinswap module's genesis state +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` + StandardDenom string `protobuf:"bytes,2,opt,name=standard_denom,json=standardDenom,proto3" json:"standard_denom,omitempty"` + Pool []*Pool `protobuf:"bytes,3,rep,name=pool,proto3" json:"pool,omitempty"` + Sequence uint64 `protobuf:"varint,4,opt,name=sequence,proto3" json:"sequence,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +func (x *GenesisState) GetStandardDenom() string { + if x != nil { + return x.StandardDenom + } + return "" +} + +func (x *GenesisState) GetPool() []*Pool { + if x != nil { + return x.Pool + } + return nil +} + +func (x *GenesisState) GetSequence() uint64 { + if x != nil { + return x.Sequence + } + return 0 +} + +var File_canto_coinswap_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_coinswap_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x11, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8, 0x01, 0x0a, + 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, + 0xf2, 0xde, 0x1f, 0x15, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x31, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, + 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x42, 0xba, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, + 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_coinswap_v1_genesis_proto_rawDescOnce sync.Once + file_canto_coinswap_v1_genesis_proto_rawDescData = file_canto_coinswap_v1_genesis_proto_rawDesc +) + +func file_canto_coinswap_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_coinswap_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_coinswap_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_coinswap_v1_genesis_proto_rawDescData) + }) + return file_canto_coinswap_v1_genesis_proto_rawDescData +} + +var file_canto_coinswap_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_coinswap_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.coinswap.v1.GenesisState + (*Params)(nil), // 1: canto.coinswap.v1.Params + (*Pool)(nil), // 2: canto.coinswap.v1.Pool +} +var file_canto_coinswap_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.coinswap.v1.GenesisState.params:type_name -> canto.coinswap.v1.Params + 2, // 1: canto.coinswap.v1.GenesisState.pool:type_name -> canto.coinswap.v1.Pool + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_canto_coinswap_v1_genesis_proto_init() } +func file_canto_coinswap_v1_genesis_proto_init() { + if File_canto_coinswap_v1_genesis_proto != nil { + return + } + file_canto_coinswap_v1_coinswap_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_coinswap_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_coinswap_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_coinswap_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_coinswap_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_coinswap_v1_genesis_proto_msgTypes, + }.Build() + File_canto_coinswap_v1_genesis_proto = out.File + file_canto_coinswap_v1_genesis_proto_rawDesc = nil + file_canto_coinswap_v1_genesis_proto_goTypes = nil + file_canto_coinswap_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/coinswap/v1/query.pulsar.go b/api/canto/coinswap/v1/query.pulsar.go new file mode 100644 index 000000000..8d93c60aa --- /dev/null +++ b/api/canto/coinswap/v1/query.pulsar.go @@ -0,0 +1,4034 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package coinswapv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + v1beta11 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryParamsRequest = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryParamsResponse = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryLiquidityPoolRequest protoreflect.MessageDescriptor + fd_QueryLiquidityPoolRequest_lpt_denom protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryLiquidityPoolRequest = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryLiquidityPoolRequest") + fd_QueryLiquidityPoolRequest_lpt_denom = md_QueryLiquidityPoolRequest.Fields().ByName("lpt_denom") +} + +var _ protoreflect.Message = (*fastReflection_QueryLiquidityPoolRequest)(nil) + +type fastReflection_QueryLiquidityPoolRequest QueryLiquidityPoolRequest + +func (x *QueryLiquidityPoolRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolRequest)(x) +} + +func (x *QueryLiquidityPoolRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLiquidityPoolRequest_messageType fastReflection_QueryLiquidityPoolRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryLiquidityPoolRequest_messageType{} + +type fastReflection_QueryLiquidityPoolRequest_messageType struct{} + +func (x fastReflection_QueryLiquidityPoolRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolRequest)(nil) +} +func (x fastReflection_QueryLiquidityPoolRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolRequest) +} +func (x fastReflection_QueryLiquidityPoolRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLiquidityPoolRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLiquidityPoolRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryLiquidityPoolRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLiquidityPoolRequest) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLiquidityPoolRequest) Interface() protoreflect.ProtoMessage { + return (*QueryLiquidityPoolRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLiquidityPoolRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.LptDenom != "" { + value := protoreflect.ValueOfString(x.LptDenom) + if !f(fd_QueryLiquidityPoolRequest_lpt_denom, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLiquidityPoolRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + return x.LptDenom != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + x.LptDenom = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLiquidityPoolRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + value := x.LptDenom + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + x.LptDenom = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + panic(fmt.Errorf("field lpt_denom of message canto.coinswap.v1.QueryLiquidityPoolRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLiquidityPoolRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolRequest.lpt_denom": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLiquidityPoolRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryLiquidityPoolRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLiquidityPoolRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLiquidityPoolRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLiquidityPoolRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLiquidityPoolRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.LptDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.LptDenom) > 0 { + i -= len(x.LptDenom) + copy(dAtA[i:], x.LptDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.LptDenom))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field LptDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.LptDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryLiquidityPoolResponse protoreflect.MessageDescriptor + fd_QueryLiquidityPoolResponse_pool protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryLiquidityPoolResponse = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryLiquidityPoolResponse") + fd_QueryLiquidityPoolResponse_pool = md_QueryLiquidityPoolResponse.Fields().ByName("pool") +} + +var _ protoreflect.Message = (*fastReflection_QueryLiquidityPoolResponse)(nil) + +type fastReflection_QueryLiquidityPoolResponse QueryLiquidityPoolResponse + +func (x *QueryLiquidityPoolResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolResponse)(x) +} + +func (x *QueryLiquidityPoolResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLiquidityPoolResponse_messageType fastReflection_QueryLiquidityPoolResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryLiquidityPoolResponse_messageType{} + +type fastReflection_QueryLiquidityPoolResponse_messageType struct{} + +func (x fastReflection_QueryLiquidityPoolResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolResponse)(nil) +} +func (x fastReflection_QueryLiquidityPoolResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolResponse) +} +func (x fastReflection_QueryLiquidityPoolResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLiquidityPoolResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLiquidityPoolResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryLiquidityPoolResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLiquidityPoolResponse) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLiquidityPoolResponse) Interface() protoreflect.ProtoMessage { + return (*QueryLiquidityPoolResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLiquidityPoolResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pool != nil { + value := protoreflect.ValueOfMessage(x.Pool.ProtoReflect()) + if !f(fd_QueryLiquidityPoolResponse_pool, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLiquidityPoolResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + return x.Pool != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + x.Pool = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLiquidityPoolResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + value := x.Pool + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + x.Pool = value.Message().Interface().(*PoolInfo) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + if x.Pool == nil { + x.Pool = new(PoolInfo) + } + return protoreflect.ValueOfMessage(x.Pool.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLiquidityPoolResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolResponse.pool": + m := new(PoolInfo) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLiquidityPoolResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryLiquidityPoolResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLiquidityPoolResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLiquidityPoolResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLiquidityPoolResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLiquidityPoolResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pool != nil { + l = options.Size(x.Pool) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pool != nil { + encoded, err := options.Marshal(x.Pool) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pool == nil { + x.Pool = &PoolInfo{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pool); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryLiquidityPoolsRequest protoreflect.MessageDescriptor + fd_QueryLiquidityPoolsRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryLiquidityPoolsRequest = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryLiquidityPoolsRequest") + fd_QueryLiquidityPoolsRequest_pagination = md_QueryLiquidityPoolsRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryLiquidityPoolsRequest)(nil) + +type fastReflection_QueryLiquidityPoolsRequest QueryLiquidityPoolsRequest + +func (x *QueryLiquidityPoolsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolsRequest)(x) +} + +func (x *QueryLiquidityPoolsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLiquidityPoolsRequest_messageType fastReflection_QueryLiquidityPoolsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryLiquidityPoolsRequest_messageType{} + +type fastReflection_QueryLiquidityPoolsRequest_messageType struct{} + +func (x fastReflection_QueryLiquidityPoolsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolsRequest)(nil) +} +func (x fastReflection_QueryLiquidityPoolsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolsRequest) +} +func (x fastReflection_QueryLiquidityPoolsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLiquidityPoolsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLiquidityPoolsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryLiquidityPoolsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLiquidityPoolsRequest) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLiquidityPoolsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryLiquidityPoolsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLiquidityPoolsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryLiquidityPoolsRequest_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLiquidityPoolsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLiquidityPoolsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLiquidityPoolsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsRequest")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLiquidityPoolsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryLiquidityPoolsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLiquidityPoolsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLiquidityPoolsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLiquidityPoolsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLiquidityPoolsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryLiquidityPoolsResponse_1_list)(nil) + +type _QueryLiquidityPoolsResponse_1_list struct { + list *[]*PoolInfo +} + +func (x *_QueryLiquidityPoolsResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryLiquidityPoolsResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryLiquidityPoolsResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*PoolInfo) + (*x.list)[i] = concreteValue +} + +func (x *_QueryLiquidityPoolsResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*PoolInfo) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryLiquidityPoolsResponse_1_list) AppendMutable() protoreflect.Value { + v := new(PoolInfo) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryLiquidityPoolsResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryLiquidityPoolsResponse_1_list) NewElement() protoreflect.Value { + v := new(PoolInfo) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryLiquidityPoolsResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryLiquidityPoolsResponse protoreflect.MessageDescriptor + fd_QueryLiquidityPoolsResponse_pools protoreflect.FieldDescriptor + fd_QueryLiquidityPoolsResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_QueryLiquidityPoolsResponse = File_canto_coinswap_v1_query_proto.Messages().ByName("QueryLiquidityPoolsResponse") + fd_QueryLiquidityPoolsResponse_pools = md_QueryLiquidityPoolsResponse.Fields().ByName("pools") + fd_QueryLiquidityPoolsResponse_pagination = md_QueryLiquidityPoolsResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryLiquidityPoolsResponse)(nil) + +type fastReflection_QueryLiquidityPoolsResponse QueryLiquidityPoolsResponse + +func (x *QueryLiquidityPoolsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolsResponse)(x) +} + +func (x *QueryLiquidityPoolsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryLiquidityPoolsResponse_messageType fastReflection_QueryLiquidityPoolsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryLiquidityPoolsResponse_messageType{} + +type fastReflection_QueryLiquidityPoolsResponse_messageType struct{} + +func (x fastReflection_QueryLiquidityPoolsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryLiquidityPoolsResponse)(nil) +} +func (x fastReflection_QueryLiquidityPoolsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolsResponse) +} +func (x fastReflection_QueryLiquidityPoolsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryLiquidityPoolsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryLiquidityPoolsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryLiquidityPoolsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryLiquidityPoolsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryLiquidityPoolsResponse) New() protoreflect.Message { + return new(fastReflection_QueryLiquidityPoolsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryLiquidityPoolsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryLiquidityPoolsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryLiquidityPoolsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Pools) != 0 { + value := protoreflect.ValueOfList(&_QueryLiquidityPoolsResponse_1_list{list: &x.Pools}) + if !f(fd_QueryLiquidityPoolsResponse_pools, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryLiquidityPoolsResponse_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryLiquidityPoolsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + return len(x.Pools) != 0 + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + x.Pools = nil + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryLiquidityPoolsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + if len(x.Pools) == 0 { + return protoreflect.ValueOfList(&_QueryLiquidityPoolsResponse_1_list{}) + } + listValue := &_QueryLiquidityPoolsResponse_1_list{list: &x.Pools} + return protoreflect.ValueOfList(listValue) + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + lv := value.List() + clv := lv.(*_QueryLiquidityPoolsResponse_1_list) + x.Pools = *clv.list + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + if x.Pools == nil { + x.Pools = []*PoolInfo{} + } + value := &_QueryLiquidityPoolsResponse_1_list{list: &x.Pools} + return protoreflect.ValueOfList(value) + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryLiquidityPoolsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pools": + list := []*PoolInfo{} + return protoreflect.ValueOfList(&_QueryLiquidityPoolsResponse_1_list{list: &list}) + case "canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.QueryLiquidityPoolsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.QueryLiquidityPoolsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryLiquidityPoolsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.QueryLiquidityPoolsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryLiquidityPoolsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryLiquidityPoolsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryLiquidityPoolsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryLiquidityPoolsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryLiquidityPoolsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Pools) > 0 { + for _, e := range x.Pools { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Pools) > 0 { + for iNdEx := len(x.Pools) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Pools[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryLiquidityPoolsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryLiquidityPoolsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Pools = append(x.Pools, &PoolInfo{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pools[len(x.Pools)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_PoolInfo protoreflect.MessageDescriptor + fd_PoolInfo_id protoreflect.FieldDescriptor + fd_PoolInfo_escrow_address protoreflect.FieldDescriptor + fd_PoolInfo_standard protoreflect.FieldDescriptor + fd_PoolInfo_token protoreflect.FieldDescriptor + fd_PoolInfo_lpt protoreflect.FieldDescriptor + fd_PoolInfo_fee protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_query_proto_init() + md_PoolInfo = File_canto_coinswap_v1_query_proto.Messages().ByName("PoolInfo") + fd_PoolInfo_id = md_PoolInfo.Fields().ByName("id") + fd_PoolInfo_escrow_address = md_PoolInfo.Fields().ByName("escrow_address") + fd_PoolInfo_standard = md_PoolInfo.Fields().ByName("standard") + fd_PoolInfo_token = md_PoolInfo.Fields().ByName("token") + fd_PoolInfo_lpt = md_PoolInfo.Fields().ByName("lpt") + fd_PoolInfo_fee = md_PoolInfo.Fields().ByName("fee") +} + +var _ protoreflect.Message = (*fastReflection_PoolInfo)(nil) + +type fastReflection_PoolInfo PoolInfo + +func (x *PoolInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_PoolInfo)(x) +} + +func (x *PoolInfo) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_PoolInfo_messageType fastReflection_PoolInfo_messageType +var _ protoreflect.MessageType = fastReflection_PoolInfo_messageType{} + +type fastReflection_PoolInfo_messageType struct{} + +func (x fastReflection_PoolInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_PoolInfo)(nil) +} +func (x fastReflection_PoolInfo_messageType) New() protoreflect.Message { + return new(fastReflection_PoolInfo) +} +func (x fastReflection_PoolInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_PoolInfo +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_PoolInfo) Descriptor() protoreflect.MessageDescriptor { + return md_PoolInfo +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_PoolInfo) Type() protoreflect.MessageType { + return _fastReflection_PoolInfo_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_PoolInfo) New() protoreflect.Message { + return new(fastReflection_PoolInfo) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_PoolInfo) Interface() protoreflect.ProtoMessage { + return (*PoolInfo)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_PoolInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Id != "" { + value := protoreflect.ValueOfString(x.Id) + if !f(fd_PoolInfo_id, value) { + return + } + } + if x.EscrowAddress != "" { + value := protoreflect.ValueOfString(x.EscrowAddress) + if !f(fd_PoolInfo_escrow_address, value) { + return + } + } + if x.Standard != nil { + value := protoreflect.ValueOfMessage(x.Standard.ProtoReflect()) + if !f(fd_PoolInfo_standard, value) { + return + } + } + if x.Token != nil { + value := protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + if !f(fd_PoolInfo_token, value) { + return + } + } + if x.Lpt != nil { + value := protoreflect.ValueOfMessage(x.Lpt.ProtoReflect()) + if !f(fd_PoolInfo_lpt, value) { + return + } + } + if x.Fee != "" { + value := protoreflect.ValueOfString(x.Fee) + if !f(fd_PoolInfo_fee, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_PoolInfo) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.PoolInfo.id": + return x.Id != "" + case "canto.coinswap.v1.PoolInfo.escrow_address": + return x.EscrowAddress != "" + case "canto.coinswap.v1.PoolInfo.standard": + return x.Standard != nil + case "canto.coinswap.v1.PoolInfo.token": + return x.Token != nil + case "canto.coinswap.v1.PoolInfo.lpt": + return x.Lpt != nil + case "canto.coinswap.v1.PoolInfo.fee": + return x.Fee != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PoolInfo) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.PoolInfo.id": + x.Id = "" + case "canto.coinswap.v1.PoolInfo.escrow_address": + x.EscrowAddress = "" + case "canto.coinswap.v1.PoolInfo.standard": + x.Standard = nil + case "canto.coinswap.v1.PoolInfo.token": + x.Token = nil + case "canto.coinswap.v1.PoolInfo.lpt": + x.Lpt = nil + case "canto.coinswap.v1.PoolInfo.fee": + x.Fee = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_PoolInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.PoolInfo.id": + value := x.Id + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.PoolInfo.escrow_address": + value := x.EscrowAddress + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.PoolInfo.standard": + value := x.Standard + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.token": + value := x.Token + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.lpt": + value := x.Lpt + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.fee": + value := x.Fee + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PoolInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.PoolInfo.id": + x.Id = value.Interface().(string) + case "canto.coinswap.v1.PoolInfo.escrow_address": + x.EscrowAddress = value.Interface().(string) + case "canto.coinswap.v1.PoolInfo.standard": + x.Standard = value.Message().Interface().(*v1beta11.Coin) + case "canto.coinswap.v1.PoolInfo.token": + x.Token = value.Message().Interface().(*v1beta11.Coin) + case "canto.coinswap.v1.PoolInfo.lpt": + x.Lpt = value.Message().Interface().(*v1beta11.Coin) + case "canto.coinswap.v1.PoolInfo.fee": + x.Fee = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PoolInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.PoolInfo.standard": + if x.Standard == nil { + x.Standard = new(v1beta11.Coin) + } + return protoreflect.ValueOfMessage(x.Standard.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.token": + if x.Token == nil { + x.Token = new(v1beta11.Coin) + } + return protoreflect.ValueOfMessage(x.Token.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.lpt": + if x.Lpt == nil { + x.Lpt = new(v1beta11.Coin) + } + return protoreflect.ValueOfMessage(x.Lpt.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.id": + panic(fmt.Errorf("field id of message canto.coinswap.v1.PoolInfo is not mutable")) + case "canto.coinswap.v1.PoolInfo.escrow_address": + panic(fmt.Errorf("field escrow_address of message canto.coinswap.v1.PoolInfo is not mutable")) + case "canto.coinswap.v1.PoolInfo.fee": + panic(fmt.Errorf("field fee of message canto.coinswap.v1.PoolInfo is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_PoolInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.PoolInfo.id": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.PoolInfo.escrow_address": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.PoolInfo.standard": + m := new(v1beta11.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.token": + m := new(v1beta11.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.lpt": + m := new(v1beta11.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.PoolInfo.fee": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.PoolInfo")) + } + panic(fmt.Errorf("message canto.coinswap.v1.PoolInfo does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_PoolInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.PoolInfo", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_PoolInfo) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_PoolInfo) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_PoolInfo) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_PoolInfo) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*PoolInfo) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Id) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.EscrowAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Standard != nil { + l = options.Size(x.Standard) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Token != nil { + l = options.Size(x.Token) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Lpt != nil { + l = options.Size(x.Lpt) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Fee) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*PoolInfo) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Fee) > 0 { + i -= len(x.Fee) + copy(dAtA[i:], x.Fee) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Fee))) + i-- + dAtA[i] = 0x32 + } + if x.Lpt != nil { + encoded, err := options.Marshal(x.Lpt) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if x.Token != nil { + encoded, err := options.Marshal(x.Token) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if x.Standard != nil { + encoded, err := options.Marshal(x.Standard) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.EscrowAddress) > 0 { + i -= len(x.EscrowAddress) + copy(dAtA[i:], x.EscrowAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EscrowAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.Id) > 0 { + i -= len(x.Id) + copy(dAtA[i:], x.Id) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Id))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*PoolInfo) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PoolInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: PoolInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EscrowAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.EscrowAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Standard", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Standard == nil { + x.Standard = &v1beta11.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Standard); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Token == nil { + x.Token = &v1beta11.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Token); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Lpt", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Lpt == nil { + x.Lpt = &v1beta11.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Lpt); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Fee = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/coinswap/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// QueryLiquidityPoolRequest is request type for the Query/LiquidityPool RPC +// method +type QueryLiquidityPoolRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LptDenom string `protobuf:"bytes,1,opt,name=lpt_denom,json=lptDenom,proto3" json:"lpt_denom,omitempty"` +} + +func (x *QueryLiquidityPoolRequest) Reset() { + *x = QueryLiquidityPoolRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryLiquidityPoolRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryLiquidityPoolRequest) ProtoMessage() {} + +// Deprecated: Use QueryLiquidityPoolRequest.ProtoReflect.Descriptor instead. +func (*QueryLiquidityPoolRequest) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryLiquidityPoolRequest) GetLptDenom() string { + if x != nil { + return x.LptDenom + } + return "" +} + +// QueryLiquidityPoolResponse is response type for the Query/LiquidityPool RPC +// method +type QueryLiquidityPoolResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pool *PoolInfo `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` +} + +func (x *QueryLiquidityPoolResponse) Reset() { + *x = QueryLiquidityPoolResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryLiquidityPoolResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryLiquidityPoolResponse) ProtoMessage() {} + +// Deprecated: Use QueryLiquidityPoolResponse.ProtoReflect.Descriptor instead. +func (*QueryLiquidityPoolResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryLiquidityPoolResponse) GetPool() *PoolInfo { + if x != nil { + return x.Pool + } + return nil +} + +// QueryLiquidityPoolsRequest is request type for the Query/LiquidityPools RPC +// method +type QueryLiquidityPoolsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryLiquidityPoolsRequest) Reset() { + *x = QueryLiquidityPoolsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryLiquidityPoolsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryLiquidityPoolsRequest) ProtoMessage() {} + +// Deprecated: Use QueryLiquidityPoolsRequest.ProtoReflect.Descriptor instead. +func (*QueryLiquidityPoolsRequest) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *QueryLiquidityPoolsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryLiquidityPoolsResponse is response type for the Query/LiquidityPools RPC +// method +type QueryLiquidityPoolsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pools []*PoolInfo `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryLiquidityPoolsResponse) Reset() { + *x = QueryLiquidityPoolsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryLiquidityPoolsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryLiquidityPoolsResponse) ProtoMessage() {} + +// Deprecated: Use QueryLiquidityPoolsResponse.ProtoReflect.Descriptor instead. +func (*QueryLiquidityPoolsResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QueryLiquidityPoolsResponse) GetPools() []*PoolInfo { + if x != nil { + return x.Pools + } + return nil +} + +func (x *QueryLiquidityPoolsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type PoolInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // escrow account for deposit tokens + EscrowAddress string `protobuf:"bytes,2,opt,name=escrow_address,json=escrowAddress,proto3" json:"escrow_address,omitempty"` + // main token balance + Standard *v1beta11.Coin `protobuf:"bytes,3,opt,name=standard,proto3" json:"standard,omitempty"` + // counterparty token balance + Token *v1beta11.Coin `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` + // liquidity token balance + Lpt *v1beta11.Coin `protobuf:"bytes,5,opt,name=lpt,proto3" json:"lpt,omitempty"` + // liquidity pool fee + Fee string `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"` +} + +func (x *PoolInfo) Reset() { + *x = PoolInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PoolInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PoolInfo) ProtoMessage() {} + +// Deprecated: Use PoolInfo.ProtoReflect.Descriptor instead. +func (*PoolInfo) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *PoolInfo) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PoolInfo) GetEscrowAddress() string { + if x != nil { + return x.EscrowAddress + } + return "" +} + +func (x *PoolInfo) GetStandard() *v1beta11.Coin { + if x != nil { + return x.Standard + } + return nil +} + +func (x *PoolInfo) GetToken() *v1beta11.Coin { + if x != nil { + return x.Token + } + return nil +} + +func (x *PoolInfo) GetLpt() *v1beta11.Coin { + if x != nil { + return x.Lpt + } + return nil +} + +func (x *PoolInfo) GetFee() string { + if x != nil { + return x.Fee + } + return "" +} + +var File_canto_coinswap_v1_query_proto protoreflect.FileDescriptor + +var file_canto_coinswap_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x11, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, + 0x76, 0x31, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x13, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x38, 0x0a, 0x19, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x70, 0x74, 0x5f, 0x64, + 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x70, 0x74, 0x44, + 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x53, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x64, 0x0a, 0x1a, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x9f, 0x01, 0x0a, 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xfa, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x73, 0x63, 0x72, 0x6f, 0x77, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x73, 0x63, 0x72, 0x6f, 0x77, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x31, 0x0a, 0x03, 0x6c, 0x70, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, + 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x6c, 0x70, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x66, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x32, 0xab, + 0x03, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x77, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x97, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, + 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, + 0x7b, 0x6c, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x0e, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x2d, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x42, 0xb8, 0x01, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_coinswap_v1_query_proto_rawDescOnce sync.Once + file_canto_coinswap_v1_query_proto_rawDescData = file_canto_coinswap_v1_query_proto_rawDesc +) + +func file_canto_coinswap_v1_query_proto_rawDescGZIP() []byte { + file_canto_coinswap_v1_query_proto_rawDescOnce.Do(func() { + file_canto_coinswap_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_coinswap_v1_query_proto_rawDescData) + }) + return file_canto_coinswap_v1_query_proto_rawDescData +} + +var file_canto_coinswap_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_canto_coinswap_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: canto.coinswap.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: canto.coinswap.v1.QueryParamsResponse + (*QueryLiquidityPoolRequest)(nil), // 2: canto.coinswap.v1.QueryLiquidityPoolRequest + (*QueryLiquidityPoolResponse)(nil), // 3: canto.coinswap.v1.QueryLiquidityPoolResponse + (*QueryLiquidityPoolsRequest)(nil), // 4: canto.coinswap.v1.QueryLiquidityPoolsRequest + (*QueryLiquidityPoolsResponse)(nil), // 5: canto.coinswap.v1.QueryLiquidityPoolsResponse + (*PoolInfo)(nil), // 6: canto.coinswap.v1.PoolInfo + (*Params)(nil), // 7: canto.coinswap.v1.Params + (*v1beta1.PageRequest)(nil), // 8: cosmos.base.query.v1beta1.PageRequest + (*v1beta1.PageResponse)(nil), // 9: cosmos.base.query.v1beta1.PageResponse + (*v1beta11.Coin)(nil), // 10: cosmos.base.v1beta1.Coin +} +var file_canto_coinswap_v1_query_proto_depIdxs = []int32{ + 7, // 0: canto.coinswap.v1.QueryParamsResponse.params:type_name -> canto.coinswap.v1.Params + 6, // 1: canto.coinswap.v1.QueryLiquidityPoolResponse.pool:type_name -> canto.coinswap.v1.PoolInfo + 8, // 2: canto.coinswap.v1.QueryLiquidityPoolsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 6, // 3: canto.coinswap.v1.QueryLiquidityPoolsResponse.pools:type_name -> canto.coinswap.v1.PoolInfo + 9, // 4: canto.coinswap.v1.QueryLiquidityPoolsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 10, // 5: canto.coinswap.v1.PoolInfo.standard:type_name -> cosmos.base.v1beta1.Coin + 10, // 6: canto.coinswap.v1.PoolInfo.token:type_name -> cosmos.base.v1beta1.Coin + 10, // 7: canto.coinswap.v1.PoolInfo.lpt:type_name -> cosmos.base.v1beta1.Coin + 0, // 8: canto.coinswap.v1.Query.Params:input_type -> canto.coinswap.v1.QueryParamsRequest + 2, // 9: canto.coinswap.v1.Query.LiquidityPool:input_type -> canto.coinswap.v1.QueryLiquidityPoolRequest + 4, // 10: canto.coinswap.v1.Query.LiquidityPools:input_type -> canto.coinswap.v1.QueryLiquidityPoolsRequest + 1, // 11: canto.coinswap.v1.Query.Params:output_type -> canto.coinswap.v1.QueryParamsResponse + 3, // 12: canto.coinswap.v1.Query.LiquidityPool:output_type -> canto.coinswap.v1.QueryLiquidityPoolResponse + 5, // 13: canto.coinswap.v1.Query.LiquidityPools:output_type -> canto.coinswap.v1.QueryLiquidityPoolsResponse + 11, // [11:14] is the sub-list for method output_type + 8, // [8:11] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_canto_coinswap_v1_query_proto_init() } +func file_canto_coinswap_v1_query_proto_init() { + if File_canto_coinswap_v1_query_proto != nil { + return + } + file_canto_coinswap_v1_coinswap_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_coinswap_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLiquidityPoolRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLiquidityPoolResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLiquidityPoolsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryLiquidityPoolsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PoolInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_coinswap_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_coinswap_v1_query_proto_goTypes, + DependencyIndexes: file_canto_coinswap_v1_query_proto_depIdxs, + MessageInfos: file_canto_coinswap_v1_query_proto_msgTypes, + }.Build() + File_canto_coinswap_v1_query_proto = out.File + file_canto_coinswap_v1_query_proto_rawDesc = nil + file_canto_coinswap_v1_query_proto_goTypes = nil + file_canto_coinswap_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/coinswap/v1/query_grpc.pb.go b/api/canto/coinswap/v1/query_grpc.pb.go new file mode 100644 index 000000000..241ceedf1 --- /dev/null +++ b/api/canto/coinswap/v1/query_grpc.pb.go @@ -0,0 +1,191 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/coinswap/v1/query.proto + +package coinswapv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/canto.coinswap.v1.Query/Params" + Query_LiquidityPool_FullMethodName = "/canto.coinswap.v1.Query/LiquidityPool" + Query_LiquidityPools_FullMethodName = "/canto.coinswap.v1.Query/LiquidityPools" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Params returns parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // LiquidityPool returns the liquidity pool for the provided + // lpt_denom + LiquidityPool(ctx context.Context, in *QueryLiquidityPoolRequest, opts ...grpc.CallOption) (*QueryLiquidityPoolResponse, error) + // LiquidityPools returns all the liquidity pools available + LiquidityPools(ctx context.Context, in *QueryLiquidityPoolsRequest, opts ...grpc.CallOption) (*QueryLiquidityPoolsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) LiquidityPool(ctx context.Context, in *QueryLiquidityPoolRequest, opts ...grpc.CallOption) (*QueryLiquidityPoolResponse, error) { + out := new(QueryLiquidityPoolResponse) + err := c.cc.Invoke(ctx, Query_LiquidityPool_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) LiquidityPools(ctx context.Context, in *QueryLiquidityPoolsRequest, opts ...grpc.CallOption) (*QueryLiquidityPoolsResponse, error) { + out := new(QueryLiquidityPoolsResponse) + err := c.cc.Invoke(ctx, Query_LiquidityPools_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Params returns parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // LiquidityPool returns the liquidity pool for the provided + // lpt_denom + LiquidityPool(context.Context, *QueryLiquidityPoolRequest) (*QueryLiquidityPoolResponse, error) + // LiquidityPools returns all the liquidity pools available + LiquidityPools(context.Context, *QueryLiquidityPoolsRequest) (*QueryLiquidityPoolsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) LiquidityPool(context.Context, *QueryLiquidityPoolRequest) (*QueryLiquidityPoolResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LiquidityPool not implemented") +} +func (UnimplementedQueryServer) LiquidityPools(context.Context, *QueryLiquidityPoolsRequest) (*QueryLiquidityPoolsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LiquidityPools not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_LiquidityPool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLiquidityPoolRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).LiquidityPool(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_LiquidityPool_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LiquidityPool(ctx, req.(*QueryLiquidityPoolRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_LiquidityPools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLiquidityPoolsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).LiquidityPools(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_LiquidityPools_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LiquidityPools(ctx, req.(*QueryLiquidityPoolsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.coinswap.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "LiquidityPool", + Handler: _Query_LiquidityPool_Handler, + }, + { + MethodName: "LiquidityPools", + Handler: _Query_LiquidityPools_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/coinswap/v1/query.proto", +} diff --git a/api/canto/coinswap/v1/tx.pulsar.go b/api/canto/coinswap/v1/tx.pulsar.go new file mode 100644 index 000000000..f561e14d1 --- /dev/null +++ b/api/canto/coinswap/v1/tx.pulsar.go @@ -0,0 +1,3843 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package coinswapv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgAddLiquidity protoreflect.MessageDescriptor + fd_MsgAddLiquidity_max_token protoreflect.FieldDescriptor + fd_MsgAddLiquidity_exact_standard_amt protoreflect.FieldDescriptor + fd_MsgAddLiquidity_min_liquidity protoreflect.FieldDescriptor + fd_MsgAddLiquidity_deadline protoreflect.FieldDescriptor + fd_MsgAddLiquidity_sender protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgAddLiquidity = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgAddLiquidity") + fd_MsgAddLiquidity_max_token = md_MsgAddLiquidity.Fields().ByName("max_token") + fd_MsgAddLiquidity_exact_standard_amt = md_MsgAddLiquidity.Fields().ByName("exact_standard_amt") + fd_MsgAddLiquidity_min_liquidity = md_MsgAddLiquidity.Fields().ByName("min_liquidity") + fd_MsgAddLiquidity_deadline = md_MsgAddLiquidity.Fields().ByName("deadline") + fd_MsgAddLiquidity_sender = md_MsgAddLiquidity.Fields().ByName("sender") +} + +var _ protoreflect.Message = (*fastReflection_MsgAddLiquidity)(nil) + +type fastReflection_MsgAddLiquidity MsgAddLiquidity + +func (x *MsgAddLiquidity) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAddLiquidity)(x) +} + +func (x *MsgAddLiquidity) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAddLiquidity_messageType fastReflection_MsgAddLiquidity_messageType +var _ protoreflect.MessageType = fastReflection_MsgAddLiquidity_messageType{} + +type fastReflection_MsgAddLiquidity_messageType struct{} + +func (x fastReflection_MsgAddLiquidity_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAddLiquidity)(nil) +} +func (x fastReflection_MsgAddLiquidity_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAddLiquidity) +} +func (x fastReflection_MsgAddLiquidity_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddLiquidity +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAddLiquidity) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddLiquidity +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAddLiquidity) Type() protoreflect.MessageType { + return _fastReflection_MsgAddLiquidity_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAddLiquidity) New() protoreflect.Message { + return new(fastReflection_MsgAddLiquidity) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAddLiquidity) Interface() protoreflect.ProtoMessage { + return (*MsgAddLiquidity)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAddLiquidity) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.MaxToken != nil { + value := protoreflect.ValueOfMessage(x.MaxToken.ProtoReflect()) + if !f(fd_MsgAddLiquidity_max_token, value) { + return + } + } + if x.ExactStandardAmt != "" { + value := protoreflect.ValueOfString(x.ExactStandardAmt) + if !f(fd_MsgAddLiquidity_exact_standard_amt, value) { + return + } + } + if x.MinLiquidity != "" { + value := protoreflect.ValueOfString(x.MinLiquidity) + if !f(fd_MsgAddLiquidity_min_liquidity, value) { + return + } + } + if x.Deadline != int64(0) { + value := protoreflect.ValueOfInt64(x.Deadline) + if !f(fd_MsgAddLiquidity_deadline, value) { + return + } + } + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgAddLiquidity_sender, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAddLiquidity) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + return x.MaxToken != nil + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + return x.ExactStandardAmt != "" + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + return x.MinLiquidity != "" + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + return x.Deadline != int64(0) + case "canto.coinswap.v1.MsgAddLiquidity.sender": + return x.Sender != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidity) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + x.MaxToken = nil + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + x.ExactStandardAmt = "" + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + x.MinLiquidity = "" + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + x.Deadline = int64(0) + case "canto.coinswap.v1.MsgAddLiquidity.sender": + x.Sender = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAddLiquidity) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + value := x.MaxToken + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + value := x.ExactStandardAmt + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + value := x.MinLiquidity + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + value := x.Deadline + return protoreflect.ValueOfInt64(value) + case "canto.coinswap.v1.MsgAddLiquidity.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidity) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + x.MaxToken = value.Message().Interface().(*v1beta1.Coin) + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + x.ExactStandardAmt = value.Interface().(string) + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + x.MinLiquidity = value.Interface().(string) + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + x.Deadline = value.Int() + case "canto.coinswap.v1.MsgAddLiquidity.sender": + x.Sender = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidity) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + if x.MaxToken == nil { + x.MaxToken = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.MaxToken.ProtoReflect()) + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + panic(fmt.Errorf("field exact_standard_amt of message canto.coinswap.v1.MsgAddLiquidity is not mutable")) + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + panic(fmt.Errorf("field min_liquidity of message canto.coinswap.v1.MsgAddLiquidity is not mutable")) + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + panic(fmt.Errorf("field deadline of message canto.coinswap.v1.MsgAddLiquidity is not mutable")) + case "canto.coinswap.v1.MsgAddLiquidity.sender": + panic(fmt.Errorf("field sender of message canto.coinswap.v1.MsgAddLiquidity is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAddLiquidity) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidity.max_token": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.MsgAddLiquidity.exact_standard_amt": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.MsgAddLiquidity.min_liquidity": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.MsgAddLiquidity.deadline": + return protoreflect.ValueOfInt64(int64(0)) + case "canto.coinswap.v1.MsgAddLiquidity.sender": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidity does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAddLiquidity) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgAddLiquidity", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAddLiquidity) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidity) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAddLiquidity) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAddLiquidity) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAddLiquidity) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.MaxToken != nil { + l = options.Size(x.MaxToken) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ExactStandardAmt) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MinLiquidity) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Deadline != 0 { + n += 1 + runtime.Sov(uint64(x.Deadline)) + } + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAddLiquidity) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0x2a + } + if x.Deadline != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Deadline)) + i-- + dAtA[i] = 0x20 + } + if len(x.MinLiquidity) > 0 { + i -= len(x.MinLiquidity) + copy(dAtA[i:], x.MinLiquidity) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinLiquidity))) + i-- + dAtA[i] = 0x1a + } + if len(x.ExactStandardAmt) > 0 { + i -= len(x.ExactStandardAmt) + copy(dAtA[i:], x.ExactStandardAmt) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExactStandardAmt))) + i-- + dAtA[i] = 0x12 + } + if x.MaxToken != nil { + encoded, err := options.Marshal(x.MaxToken) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAddLiquidity) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddLiquidity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddLiquidity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.MaxToken == nil { + x.MaxToken = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MaxToken); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExactStandardAmt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExactStandardAmt = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinLiquidity", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MinLiquidity = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Deadline", wireType) + } + x.Deadline = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Deadline |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgAddLiquidityResponse protoreflect.MessageDescriptor + fd_MsgAddLiquidityResponse_mint_token protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgAddLiquidityResponse = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgAddLiquidityResponse") + fd_MsgAddLiquidityResponse_mint_token = md_MsgAddLiquidityResponse.Fields().ByName("mint_token") +} + +var _ protoreflect.Message = (*fastReflection_MsgAddLiquidityResponse)(nil) + +type fastReflection_MsgAddLiquidityResponse MsgAddLiquidityResponse + +func (x *MsgAddLiquidityResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgAddLiquidityResponse)(x) +} + +func (x *MsgAddLiquidityResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgAddLiquidityResponse_messageType fastReflection_MsgAddLiquidityResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgAddLiquidityResponse_messageType{} + +type fastReflection_MsgAddLiquidityResponse_messageType struct{} + +func (x fastReflection_MsgAddLiquidityResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgAddLiquidityResponse)(nil) +} +func (x fastReflection_MsgAddLiquidityResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgAddLiquidityResponse) +} +func (x fastReflection_MsgAddLiquidityResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddLiquidityResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgAddLiquidityResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgAddLiquidityResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgAddLiquidityResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgAddLiquidityResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgAddLiquidityResponse) New() protoreflect.Message { + return new(fastReflection_MsgAddLiquidityResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgAddLiquidityResponse) Interface() protoreflect.ProtoMessage { + return (*MsgAddLiquidityResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgAddLiquidityResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.MintToken != nil { + value := protoreflect.ValueOfMessage(x.MintToken.ProtoReflect()) + if !f(fd_MsgAddLiquidityResponse_mint_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgAddLiquidityResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + return x.MintToken != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidityResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + x.MintToken = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgAddLiquidityResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + value := x.MintToken + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidityResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + x.MintToken = value.Message().Interface().(*v1beta1.Coin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidityResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + if x.MintToken == nil { + x.MintToken = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.MintToken.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgAddLiquidityResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgAddLiquidityResponse.mint_token": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgAddLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgAddLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgAddLiquidityResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgAddLiquidityResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgAddLiquidityResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgAddLiquidityResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgAddLiquidityResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgAddLiquidityResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgAddLiquidityResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.MintToken != nil { + l = options.Size(x.MintToken) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgAddLiquidityResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.MintToken != nil { + encoded, err := options.Marshal(x.MintToken) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgAddLiquidityResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddLiquidityResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAddLiquidityResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MintToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.MintToken == nil { + x.MintToken = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.MintToken); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRemoveLiquidity protoreflect.MessageDescriptor + fd_MsgRemoveLiquidity_withdraw_liquidity protoreflect.FieldDescriptor + fd_MsgRemoveLiquidity_min_token protoreflect.FieldDescriptor + fd_MsgRemoveLiquidity_min_standard_amt protoreflect.FieldDescriptor + fd_MsgRemoveLiquidity_deadline protoreflect.FieldDescriptor + fd_MsgRemoveLiquidity_sender protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgRemoveLiquidity = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgRemoveLiquidity") + fd_MsgRemoveLiquidity_withdraw_liquidity = md_MsgRemoveLiquidity.Fields().ByName("withdraw_liquidity") + fd_MsgRemoveLiquidity_min_token = md_MsgRemoveLiquidity.Fields().ByName("min_token") + fd_MsgRemoveLiquidity_min_standard_amt = md_MsgRemoveLiquidity.Fields().ByName("min_standard_amt") + fd_MsgRemoveLiquidity_deadline = md_MsgRemoveLiquidity.Fields().ByName("deadline") + fd_MsgRemoveLiquidity_sender = md_MsgRemoveLiquidity.Fields().ByName("sender") +} + +var _ protoreflect.Message = (*fastReflection_MsgRemoveLiquidity)(nil) + +type fastReflection_MsgRemoveLiquidity MsgRemoveLiquidity + +func (x *MsgRemoveLiquidity) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRemoveLiquidity)(x) +} + +func (x *MsgRemoveLiquidity) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRemoveLiquidity_messageType fastReflection_MsgRemoveLiquidity_messageType +var _ protoreflect.MessageType = fastReflection_MsgRemoveLiquidity_messageType{} + +type fastReflection_MsgRemoveLiquidity_messageType struct{} + +func (x fastReflection_MsgRemoveLiquidity_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRemoveLiquidity)(nil) +} +func (x fastReflection_MsgRemoveLiquidity_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRemoveLiquidity) +} +func (x fastReflection_MsgRemoveLiquidity_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRemoveLiquidity +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRemoveLiquidity) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRemoveLiquidity +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRemoveLiquidity) Type() protoreflect.MessageType { + return _fastReflection_MsgRemoveLiquidity_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRemoveLiquidity) New() protoreflect.Message { + return new(fastReflection_MsgRemoveLiquidity) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRemoveLiquidity) Interface() protoreflect.ProtoMessage { + return (*MsgRemoveLiquidity)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRemoveLiquidity) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.WithdrawLiquidity != nil { + value := protoreflect.ValueOfMessage(x.WithdrawLiquidity.ProtoReflect()) + if !f(fd_MsgRemoveLiquidity_withdraw_liquidity, value) { + return + } + } + if x.MinToken != "" { + value := protoreflect.ValueOfString(x.MinToken) + if !f(fd_MsgRemoveLiquidity_min_token, value) { + return + } + } + if x.MinStandardAmt != "" { + value := protoreflect.ValueOfString(x.MinStandardAmt) + if !f(fd_MsgRemoveLiquidity_min_standard_amt, value) { + return + } + } + if x.Deadline != int64(0) { + value := protoreflect.ValueOfInt64(x.Deadline) + if !f(fd_MsgRemoveLiquidity_deadline, value) { + return + } + } + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgRemoveLiquidity_sender, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRemoveLiquidity) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + return x.WithdrawLiquidity != nil + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + return x.MinToken != "" + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + return x.MinStandardAmt != "" + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + return x.Deadline != int64(0) + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + return x.Sender != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidity) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + x.WithdrawLiquidity = nil + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + x.MinToken = "" + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + x.MinStandardAmt = "" + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + x.Deadline = int64(0) + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + x.Sender = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRemoveLiquidity) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + value := x.WithdrawLiquidity + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + value := x.MinToken + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + value := x.MinStandardAmt + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + value := x.Deadline + return protoreflect.ValueOfInt64(value) + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidity) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + x.WithdrawLiquidity = value.Message().Interface().(*v1beta1.Coin) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + x.MinToken = value.Interface().(string) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + x.MinStandardAmt = value.Interface().(string) + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + x.Deadline = value.Int() + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + x.Sender = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidity) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + if x.WithdrawLiquidity == nil { + x.WithdrawLiquidity = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.WithdrawLiquidity.ProtoReflect()) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + panic(fmt.Errorf("field min_token of message canto.coinswap.v1.MsgRemoveLiquidity is not mutable")) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + panic(fmt.Errorf("field min_standard_amt of message canto.coinswap.v1.MsgRemoveLiquidity is not mutable")) + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + panic(fmt.Errorf("field deadline of message canto.coinswap.v1.MsgRemoveLiquidity is not mutable")) + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + panic(fmt.Errorf("field sender of message canto.coinswap.v1.MsgRemoveLiquidity is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRemoveLiquidity) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.MsgRemoveLiquidity.min_token": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.MsgRemoveLiquidity.min_standard_amt": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.MsgRemoveLiquidity.deadline": + return protoreflect.ValueOfInt64(int64(0)) + case "canto.coinswap.v1.MsgRemoveLiquidity.sender": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidity")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidity does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRemoveLiquidity) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgRemoveLiquidity", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRemoveLiquidity) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidity) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRemoveLiquidity) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRemoveLiquidity) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRemoveLiquidity) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.WithdrawLiquidity != nil { + l = options.Size(x.WithdrawLiquidity) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MinToken) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MinStandardAmt) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Deadline != 0 { + n += 1 + runtime.Sov(uint64(x.Deadline)) + } + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRemoveLiquidity) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0x2a + } + if x.Deadline != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Deadline)) + i-- + dAtA[i] = 0x20 + } + if len(x.MinStandardAmt) > 0 { + i -= len(x.MinStandardAmt) + copy(dAtA[i:], x.MinStandardAmt) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinStandardAmt))) + i-- + dAtA[i] = 0x1a + } + if len(x.MinToken) > 0 { + i -= len(x.MinToken) + copy(dAtA[i:], x.MinToken) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MinToken))) + i-- + dAtA[i] = 0x12 + } + if x.WithdrawLiquidity != nil { + encoded, err := options.Marshal(x.WithdrawLiquidity) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRemoveLiquidity) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRemoveLiquidity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRemoveLiquidity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field WithdrawLiquidity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.WithdrawLiquidity == nil { + x.WithdrawLiquidity = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.WithdrawLiquidity); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinToken", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MinToken = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MinStandardAmt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MinStandardAmt = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Deadline", wireType) + } + x.Deadline = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Deadline |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_MsgRemoveLiquidityResponse_1_list)(nil) + +type _MsgRemoveLiquidityResponse_1_list struct { + list *[]*v1beta1.Coin +} + +func (x *_MsgRemoveLiquidityResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgRemoveLiquidityResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgRemoveLiquidityResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_MsgRemoveLiquidityResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgRemoveLiquidityResponse_1_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgRemoveLiquidityResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgRemoveLiquidityResponse_1_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgRemoveLiquidityResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_MsgRemoveLiquidityResponse protoreflect.MessageDescriptor + fd_MsgRemoveLiquidityResponse_withdraw_coins protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgRemoveLiquidityResponse = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgRemoveLiquidityResponse") + fd_MsgRemoveLiquidityResponse_withdraw_coins = md_MsgRemoveLiquidityResponse.Fields().ByName("withdraw_coins") +} + +var _ protoreflect.Message = (*fastReflection_MsgRemoveLiquidityResponse)(nil) + +type fastReflection_MsgRemoveLiquidityResponse MsgRemoveLiquidityResponse + +func (x *MsgRemoveLiquidityResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRemoveLiquidityResponse)(x) +} + +func (x *MsgRemoveLiquidityResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRemoveLiquidityResponse_messageType fastReflection_MsgRemoveLiquidityResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRemoveLiquidityResponse_messageType{} + +type fastReflection_MsgRemoveLiquidityResponse_messageType struct{} + +func (x fastReflection_MsgRemoveLiquidityResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRemoveLiquidityResponse)(nil) +} +func (x fastReflection_MsgRemoveLiquidityResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRemoveLiquidityResponse) +} +func (x fastReflection_MsgRemoveLiquidityResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRemoveLiquidityResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRemoveLiquidityResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRemoveLiquidityResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRemoveLiquidityResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRemoveLiquidityResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRemoveLiquidityResponse) New() protoreflect.Message { + return new(fastReflection_MsgRemoveLiquidityResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRemoveLiquidityResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRemoveLiquidityResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRemoveLiquidityResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.WithdrawCoins) != 0 { + value := protoreflect.ValueOfList(&_MsgRemoveLiquidityResponse_1_list{list: &x.WithdrawCoins}) + if !f(fd_MsgRemoveLiquidityResponse_withdraw_coins, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRemoveLiquidityResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + return len(x.WithdrawCoins) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidityResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + x.WithdrawCoins = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRemoveLiquidityResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + if len(x.WithdrawCoins) == 0 { + return protoreflect.ValueOfList(&_MsgRemoveLiquidityResponse_1_list{}) + } + listValue := &_MsgRemoveLiquidityResponse_1_list{list: &x.WithdrawCoins} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidityResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + lv := value.List() + clv := lv.(*_MsgRemoveLiquidityResponse_1_list) + x.WithdrawCoins = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidityResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + if x.WithdrawCoins == nil { + x.WithdrawCoins = []*v1beta1.Coin{} + } + value := &_MsgRemoveLiquidityResponse_1_list{list: &x.WithdrawCoins} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRemoveLiquidityResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_MsgRemoveLiquidityResponse_1_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgRemoveLiquidityResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgRemoveLiquidityResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRemoveLiquidityResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgRemoveLiquidityResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRemoveLiquidityResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRemoveLiquidityResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRemoveLiquidityResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRemoveLiquidityResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRemoveLiquidityResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.WithdrawCoins) > 0 { + for _, e := range x.WithdrawCoins { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRemoveLiquidityResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.WithdrawCoins) > 0 { + for iNdEx := len(x.WithdrawCoins) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.WithdrawCoins[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRemoveLiquidityResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRemoveLiquidityResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRemoveLiquidityResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field WithdrawCoins", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.WithdrawCoins = append(x.WithdrawCoins, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.WithdrawCoins[len(x.WithdrawCoins)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgSwapOrder protoreflect.MessageDescriptor + fd_MsgSwapOrder_input protoreflect.FieldDescriptor + fd_MsgSwapOrder_output protoreflect.FieldDescriptor + fd_MsgSwapOrder_deadline protoreflect.FieldDescriptor + fd_MsgSwapOrder_is_buy_order protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgSwapOrder = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgSwapOrder") + fd_MsgSwapOrder_input = md_MsgSwapOrder.Fields().ByName("input") + fd_MsgSwapOrder_output = md_MsgSwapOrder.Fields().ByName("output") + fd_MsgSwapOrder_deadline = md_MsgSwapOrder.Fields().ByName("deadline") + fd_MsgSwapOrder_is_buy_order = md_MsgSwapOrder.Fields().ByName("is_buy_order") +} + +var _ protoreflect.Message = (*fastReflection_MsgSwapOrder)(nil) + +type fastReflection_MsgSwapOrder MsgSwapOrder + +func (x *MsgSwapOrder) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgSwapOrder)(x) +} + +func (x *MsgSwapOrder) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgSwapOrder_messageType fastReflection_MsgSwapOrder_messageType +var _ protoreflect.MessageType = fastReflection_MsgSwapOrder_messageType{} + +type fastReflection_MsgSwapOrder_messageType struct{} + +func (x fastReflection_MsgSwapOrder_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgSwapOrder)(nil) +} +func (x fastReflection_MsgSwapOrder_messageType) New() protoreflect.Message { + return new(fastReflection_MsgSwapOrder) +} +func (x fastReflection_MsgSwapOrder_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSwapOrder +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgSwapOrder) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSwapOrder +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgSwapOrder) Type() protoreflect.MessageType { + return _fastReflection_MsgSwapOrder_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgSwapOrder) New() protoreflect.Message { + return new(fastReflection_MsgSwapOrder) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgSwapOrder) Interface() protoreflect.ProtoMessage { + return (*MsgSwapOrder)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgSwapOrder) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Input != nil { + value := protoreflect.ValueOfMessage(x.Input.ProtoReflect()) + if !f(fd_MsgSwapOrder_input, value) { + return + } + } + if x.Output != nil { + value := protoreflect.ValueOfMessage(x.Output.ProtoReflect()) + if !f(fd_MsgSwapOrder_output, value) { + return + } + } + if x.Deadline != int64(0) { + value := protoreflect.ValueOfInt64(x.Deadline) + if !f(fd_MsgSwapOrder_deadline, value) { + return + } + } + if x.IsBuyOrder != false { + value := protoreflect.ValueOfBool(x.IsBuyOrder) + if !f(fd_MsgSwapOrder_is_buy_order, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgSwapOrder) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + return x.Input != nil + case "canto.coinswap.v1.MsgSwapOrder.output": + return x.Output != nil + case "canto.coinswap.v1.MsgSwapOrder.deadline": + return x.Deadline != int64(0) + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + return x.IsBuyOrder != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapOrder) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + x.Input = nil + case "canto.coinswap.v1.MsgSwapOrder.output": + x.Output = nil + case "canto.coinswap.v1.MsgSwapOrder.deadline": + x.Deadline = int64(0) + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + x.IsBuyOrder = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgSwapOrder) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + value := x.Input + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.output": + value := x.Output + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.deadline": + value := x.Deadline + return protoreflect.ValueOfInt64(value) + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + value := x.IsBuyOrder + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapOrder) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + x.Input = value.Message().Interface().(*Input) + case "canto.coinswap.v1.MsgSwapOrder.output": + x.Output = value.Message().Interface().(*Output) + case "canto.coinswap.v1.MsgSwapOrder.deadline": + x.Deadline = value.Int() + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + x.IsBuyOrder = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapOrder) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + if x.Input == nil { + x.Input = new(Input) + } + return protoreflect.ValueOfMessage(x.Input.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.output": + if x.Output == nil { + x.Output = new(Output) + } + return protoreflect.ValueOfMessage(x.Output.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.deadline": + panic(fmt.Errorf("field deadline of message canto.coinswap.v1.MsgSwapOrder is not mutable")) + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + panic(fmt.Errorf("field is_buy_order of message canto.coinswap.v1.MsgSwapOrder is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgSwapOrder) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgSwapOrder.input": + m := new(Input) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.output": + m := new(Output) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.coinswap.v1.MsgSwapOrder.deadline": + return protoreflect.ValueOfInt64(int64(0)) + case "canto.coinswap.v1.MsgSwapOrder.is_buy_order": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapOrder")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapOrder does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgSwapOrder) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgSwapOrder", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgSwapOrder) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapOrder) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgSwapOrder) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgSwapOrder) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgSwapOrder) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Input != nil { + l = options.Size(x.Input) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Output != nil { + l = options.Size(x.Output) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Deadline != 0 { + n += 1 + runtime.Sov(uint64(x.Deadline)) + } + if x.IsBuyOrder { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgSwapOrder) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.IsBuyOrder { + i-- + if x.IsBuyOrder { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if x.Deadline != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Deadline)) + i-- + dAtA[i] = 0x18 + } + if x.Output != nil { + encoded, err := options.Marshal(x.Output) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if x.Input != nil { + encoded, err := options.Marshal(x.Input) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgSwapOrder) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSwapOrder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSwapOrder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Input", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Input == nil { + x.Input = &Input{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Input); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Output", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Output == nil { + x.Output = &Output{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Output); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Deadline", wireType) + } + x.Deadline = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Deadline |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field IsBuyOrder", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.IsBuyOrder = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgSwapCoinResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgSwapCoinResponse = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgSwapCoinResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgSwapCoinResponse)(nil) + +type fastReflection_MsgSwapCoinResponse MsgSwapCoinResponse + +func (x *MsgSwapCoinResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgSwapCoinResponse)(x) +} + +func (x *MsgSwapCoinResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgSwapCoinResponse_messageType fastReflection_MsgSwapCoinResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgSwapCoinResponse_messageType{} + +type fastReflection_MsgSwapCoinResponse_messageType struct{} + +func (x fastReflection_MsgSwapCoinResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgSwapCoinResponse)(nil) +} +func (x fastReflection_MsgSwapCoinResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgSwapCoinResponse) +} +func (x fastReflection_MsgSwapCoinResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSwapCoinResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgSwapCoinResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgSwapCoinResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgSwapCoinResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgSwapCoinResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgSwapCoinResponse) New() protoreflect.Message { + return new(fastReflection_MsgSwapCoinResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgSwapCoinResponse) Interface() protoreflect.ProtoMessage { + return (*MsgSwapCoinResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgSwapCoinResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgSwapCoinResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapCoinResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgSwapCoinResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapCoinResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapCoinResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgSwapCoinResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgSwapCoinResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgSwapCoinResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgSwapCoinResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgSwapCoinResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgSwapCoinResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgSwapCoinResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgSwapCoinResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgSwapCoinResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgSwapCoinResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgSwapCoinResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgSwapCoinResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSwapCoinResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgSwapCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/coinswap/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgAddLiquidity defines a msg for adding liquidity to a reserve pool +type MsgAddLiquidity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxToken *v1beta1.Coin `protobuf:"bytes,1,opt,name=max_token,json=maxToken,proto3" json:"max_token,omitempty"` + ExactStandardAmt string `protobuf:"bytes,2,opt,name=exact_standard_amt,json=exactStandardAmt,proto3" json:"exact_standard_amt,omitempty"` + MinLiquidity string `protobuf:"bytes,3,opt,name=min_liquidity,json=minLiquidity,proto3" json:"min_liquidity,omitempty"` + Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (x *MsgAddLiquidity) Reset() { + *x = MsgAddLiquidity{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddLiquidity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddLiquidity) ProtoMessage() {} + +// Deprecated: Use MsgAddLiquidity.ProtoReflect.Descriptor instead. +func (*MsgAddLiquidity) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgAddLiquidity) GetMaxToken() *v1beta1.Coin { + if x != nil { + return x.MaxToken + } + return nil +} + +func (x *MsgAddLiquidity) GetExactStandardAmt() string { + if x != nil { + return x.ExactStandardAmt + } + return "" +} + +func (x *MsgAddLiquidity) GetMinLiquidity() string { + if x != nil { + return x.MinLiquidity + } + return "" +} + +func (x *MsgAddLiquidity) GetDeadline() int64 { + if x != nil { + return x.Deadline + } + return 0 +} + +func (x *MsgAddLiquidity) GetSender() string { + if x != nil { + return x.Sender + } + return "" +} + +// MsgAddLiquidityResponse defines the Msg/AddLiquidity response type +type MsgAddLiquidityResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MintToken *v1beta1.Coin `protobuf:"bytes,1,opt,name=mint_token,json=mintToken,proto3" json:"mint_token,omitempty"` +} + +func (x *MsgAddLiquidityResponse) Reset() { + *x = MsgAddLiquidityResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgAddLiquidityResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgAddLiquidityResponse) ProtoMessage() {} + +// Deprecated: Use MsgAddLiquidityResponse.ProtoReflect.Descriptor instead. +func (*MsgAddLiquidityResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{1} +} + +func (x *MsgAddLiquidityResponse) GetMintToken() *v1beta1.Coin { + if x != nil { + return x.MintToken + } + return nil +} + +// MsgRemoveLiquidity defines a msg for removing liquidity from a reserve pool +type MsgRemoveLiquidity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WithdrawLiquidity *v1beta1.Coin `protobuf:"bytes,1,opt,name=withdraw_liquidity,json=withdrawLiquidity,proto3" json:"withdraw_liquidity,omitempty"` + MinToken string `protobuf:"bytes,2,opt,name=min_token,json=minToken,proto3" json:"min_token,omitempty"` + MinStandardAmt string `protobuf:"bytes,3,opt,name=min_standard_amt,json=minStandardAmt,proto3" json:"min_standard_amt,omitempty"` + Deadline int64 `protobuf:"varint,4,opt,name=deadline,proto3" json:"deadline,omitempty"` + Sender string `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (x *MsgRemoveLiquidity) Reset() { + *x = MsgRemoveLiquidity{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRemoveLiquidity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRemoveLiquidity) ProtoMessage() {} + +// Deprecated: Use MsgRemoveLiquidity.ProtoReflect.Descriptor instead. +func (*MsgRemoveLiquidity) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgRemoveLiquidity) GetWithdrawLiquidity() *v1beta1.Coin { + if x != nil { + return x.WithdrawLiquidity + } + return nil +} + +func (x *MsgRemoveLiquidity) GetMinToken() string { + if x != nil { + return x.MinToken + } + return "" +} + +func (x *MsgRemoveLiquidity) GetMinStandardAmt() string { + if x != nil { + return x.MinStandardAmt + } + return "" +} + +func (x *MsgRemoveLiquidity) GetDeadline() int64 { + if x != nil { + return x.Deadline + } + return 0 +} + +func (x *MsgRemoveLiquidity) GetSender() string { + if x != nil { + return x.Sender + } + return "" +} + +// MsgRemoveLiquidityResponse defines the Msg/RemoveLiquidity response type +type MsgRemoveLiquidityResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + WithdrawCoins []*v1beta1.Coin `protobuf:"bytes,1,rep,name=withdraw_coins,json=withdrawCoins,proto3" json:"withdraw_coins,omitempty"` +} + +func (x *MsgRemoveLiquidityResponse) Reset() { + *x = MsgRemoveLiquidityResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRemoveLiquidityResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRemoveLiquidityResponse) ProtoMessage() {} + +// Deprecated: Use MsgRemoveLiquidityResponse.ProtoReflect.Descriptor instead. +func (*MsgRemoveLiquidityResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{3} +} + +func (x *MsgRemoveLiquidityResponse) GetWithdrawCoins() []*v1beta1.Coin { + if x != nil { + return x.WithdrawCoins + } + return nil +} + +// MsgSwapOrder defines a msg for swap order +type MsgSwapOrder struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Input *Input `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"` + Output *Output `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + Deadline int64 `protobuf:"varint,3,opt,name=deadline,proto3" json:"deadline,omitempty"` + IsBuyOrder bool `protobuf:"varint,4,opt,name=is_buy_order,json=isBuyOrder,proto3" json:"is_buy_order,omitempty"` +} + +func (x *MsgSwapOrder) Reset() { + *x = MsgSwapOrder{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgSwapOrder) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgSwapOrder) ProtoMessage() {} + +// Deprecated: Use MsgSwapOrder.ProtoReflect.Descriptor instead. +func (*MsgSwapOrder) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgSwapOrder) GetInput() *Input { + if x != nil { + return x.Input + } + return nil +} + +func (x *MsgSwapOrder) GetOutput() *Output { + if x != nil { + return x.Output + } + return nil +} + +func (x *MsgSwapOrder) GetDeadline() int64 { + if x != nil { + return x.Deadline + } + return 0 +} + +func (x *MsgSwapOrder) GetIsBuyOrder() bool { + if x != nil { + return x.IsBuyOrder + } + return false +} + +// MsgSwapCoinResponse defines the Msg/SwapCoin response type +type MsgSwapCoinResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgSwapCoinResponse) Reset() { + *x = MsgSwapCoinResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgSwapCoinResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgSwapCoinResponse) ProtoMessage() {} + +// Deprecated: Use MsgSwapCoinResponse.ProtoReflect.Descriptor instead. +func (*MsgSwapCoinResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{5} +} + +var File_canto_coinswap_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_coinswap_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x1a, + 0x20, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x02, 0x0a, 0x0f, + 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, + 0x50, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x18, 0xc8, + 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x61, 0x78, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x76, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x19, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x10, 0x65, 0x78, 0x61, 0x63, 0x74, 0x53, 0x74, + 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, 0x12, 0x68, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, + 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x43, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, + 0xde, 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x53, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x41, 0x64, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x85, 0x03, 0x0a, + 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x12, 0x6b, 0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, + 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x21, 0xc8, 0xde, 0x1f, 0x00, + 0xf2, 0xde, 0x1f, 0x19, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x52, 0x11, 0x77, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x12, 0x5c, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x3f, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, + 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x70, + 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, + 0x6d, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, + 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, + 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x17, 0x79, 0x61, 0x6d, 0x6c, 0x3a, + 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, + 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, + 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x22, 0x5e, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x63, + 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, + 0x6f, 0x69, 0x6e, 0x73, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, + 0x12, 0x39, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, + 0x3a, 0x22, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x52, + 0x0a, 0x69, 0x73, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4d, + 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x32, 0xaa, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2a, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x25, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, + 0xb9, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_canto_coinswap_v1_tx_proto_rawDescOnce sync.Once + file_canto_coinswap_v1_tx_proto_rawDescData = file_canto_coinswap_v1_tx_proto_rawDesc +) + +func file_canto_coinswap_v1_tx_proto_rawDescGZIP() []byte { + file_canto_coinswap_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_coinswap_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_coinswap_v1_tx_proto_rawDescData) + }) + return file_canto_coinswap_v1_tx_proto_rawDescData +} + +var file_canto_coinswap_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_coinswap_v1_tx_proto_goTypes = []interface{}{ + (*MsgAddLiquidity)(nil), // 0: canto.coinswap.v1.MsgAddLiquidity + (*MsgAddLiquidityResponse)(nil), // 1: canto.coinswap.v1.MsgAddLiquidityResponse + (*MsgRemoveLiquidity)(nil), // 2: canto.coinswap.v1.MsgRemoveLiquidity + (*MsgRemoveLiquidityResponse)(nil), // 3: canto.coinswap.v1.MsgRemoveLiquidityResponse + (*MsgSwapOrder)(nil), // 4: canto.coinswap.v1.MsgSwapOrder + (*MsgSwapCoinResponse)(nil), // 5: canto.coinswap.v1.MsgSwapCoinResponse + (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin + (*Input)(nil), // 7: canto.coinswap.v1.Input + (*Output)(nil), // 8: canto.coinswap.v1.Output +} +var file_canto_coinswap_v1_tx_proto_depIdxs = []int32{ + 6, // 0: canto.coinswap.v1.MsgAddLiquidity.max_token:type_name -> cosmos.base.v1beta1.Coin + 6, // 1: canto.coinswap.v1.MsgAddLiquidityResponse.mint_token:type_name -> cosmos.base.v1beta1.Coin + 6, // 2: canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity:type_name -> cosmos.base.v1beta1.Coin + 6, // 3: canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins:type_name -> cosmos.base.v1beta1.Coin + 7, // 4: canto.coinswap.v1.MsgSwapOrder.input:type_name -> canto.coinswap.v1.Input + 8, // 5: canto.coinswap.v1.MsgSwapOrder.output:type_name -> canto.coinswap.v1.Output + 0, // 6: canto.coinswap.v1.Msg.AddLiquidity:input_type -> canto.coinswap.v1.MsgAddLiquidity + 2, // 7: canto.coinswap.v1.Msg.RemoveLiquidity:input_type -> canto.coinswap.v1.MsgRemoveLiquidity + 4, // 8: canto.coinswap.v1.Msg.SwapCoin:input_type -> canto.coinswap.v1.MsgSwapOrder + 1, // 9: canto.coinswap.v1.Msg.AddLiquidity:output_type -> canto.coinswap.v1.MsgAddLiquidityResponse + 3, // 10: canto.coinswap.v1.Msg.RemoveLiquidity:output_type -> canto.coinswap.v1.MsgRemoveLiquidityResponse + 5, // 11: canto.coinswap.v1.Msg.SwapCoin:output_type -> canto.coinswap.v1.MsgSwapCoinResponse + 9, // [9:12] is the sub-list for method output_type + 6, // [6:9] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_canto_coinswap_v1_tx_proto_init() } +func file_canto_coinswap_v1_tx_proto_init() { + if File_canto_coinswap_v1_tx_proto != nil { + return + } + file_canto_coinswap_v1_coinswap_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_coinswap_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAddLiquidity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgAddLiquidityResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRemoveLiquidity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRemoveLiquidityResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgSwapOrder); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgSwapCoinResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_coinswap_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_coinswap_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_coinswap_v1_tx_proto_depIdxs, + MessageInfos: file_canto_coinswap_v1_tx_proto_msgTypes, + }.Build() + File_canto_coinswap_v1_tx_proto = out.File + file_canto_coinswap_v1_tx_proto_rawDesc = nil + file_canto_coinswap_v1_tx_proto_goTypes = nil + file_canto_coinswap_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/coinswap/v1/tx_grpc.pb.go b/api/canto/coinswap/v1/tx_grpc.pb.go new file mode 100644 index 000000000..f5bea987d --- /dev/null +++ b/api/canto/coinswap/v1/tx_grpc.pb.go @@ -0,0 +1,195 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/coinswap/v1/tx.proto + +package coinswapv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_AddLiquidity_FullMethodName = "/canto.coinswap.v1.Msg/AddLiquidity" + Msg_RemoveLiquidity_FullMethodName = "/canto.coinswap.v1.Msg/RemoveLiquidity" + Msg_SwapCoin_FullMethodName = "/canto.coinswap.v1.Msg/SwapCoin" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // AddLiquidity defines a method for depositing some tokens to the liquidity + // pool + AddLiquidity(ctx context.Context, in *MsgAddLiquidity, opts ...grpc.CallOption) (*MsgAddLiquidityResponse, error) + // RemoveLiquidity defines a method for withdraw some tokens from the + // liquidity pool + RemoveLiquidity(ctx context.Context, in *MsgRemoveLiquidity, opts ...grpc.CallOption) (*MsgRemoveLiquidityResponse, error) + // SwapCoin defines a method for swapping a token with the other token from + // the liquidity pool + SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc.CallOption) (*MsgSwapCoinResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) AddLiquidity(ctx context.Context, in *MsgAddLiquidity, opts ...grpc.CallOption) (*MsgAddLiquidityResponse, error) { + out := new(MsgAddLiquidityResponse) + err := c.cc.Invoke(ctx, Msg_AddLiquidity_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RemoveLiquidity(ctx context.Context, in *MsgRemoveLiquidity, opts ...grpc.CallOption) (*MsgRemoveLiquidityResponse, error) { + out := new(MsgRemoveLiquidityResponse) + err := c.cc.Invoke(ctx, Msg_RemoveLiquidity_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc.CallOption) (*MsgSwapCoinResponse, error) { + out := new(MsgSwapCoinResponse) + err := c.cc.Invoke(ctx, Msg_SwapCoin_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // AddLiquidity defines a method for depositing some tokens to the liquidity + // pool + AddLiquidity(context.Context, *MsgAddLiquidity) (*MsgAddLiquidityResponse, error) + // RemoveLiquidity defines a method for withdraw some tokens from the + // liquidity pool + RemoveLiquidity(context.Context, *MsgRemoveLiquidity) (*MsgRemoveLiquidityResponse, error) + // SwapCoin defines a method for swapping a token with the other token from + // the liquidity pool + SwapCoin(context.Context, *MsgSwapOrder) (*MsgSwapCoinResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) AddLiquidity(context.Context, *MsgAddLiquidity) (*MsgAddLiquidityResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddLiquidity not implemented") +} +func (UnimplementedMsgServer) RemoveLiquidity(context.Context, *MsgRemoveLiquidity) (*MsgRemoveLiquidityResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveLiquidity not implemented") +} +func (UnimplementedMsgServer) SwapCoin(context.Context, *MsgSwapOrder) (*MsgSwapCoinResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SwapCoin not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_AddLiquidity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddLiquidity) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddLiquidity(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_AddLiquidity_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddLiquidity(ctx, req.(*MsgAddLiquidity)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RemoveLiquidity_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRemoveLiquidity) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RemoveLiquidity(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_RemoveLiquidity_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RemoveLiquidity(ctx, req.(*MsgRemoveLiquidity)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SwapCoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSwapOrder) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SwapCoin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_SwapCoin_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SwapCoin(ctx, req.(*MsgSwapOrder)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.coinswap.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AddLiquidity", + Handler: _Msg_AddLiquidity_Handler, + }, + { + MethodName: "RemoveLiquidity", + Handler: _Msg_RemoveLiquidity_Handler, + }, + { + MethodName: "SwapCoin", + Handler: _Msg_SwapCoin_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/coinswap/v1/tx.proto", +} diff --git a/api/canto/csr/v1/csr.pulsar.go b/api/canto/csr/v1/csr.pulsar.go new file mode 100644 index 000000000..d53f37896 --- /dev/null +++ b/api/canto/csr/v1/csr.pulsar.go @@ -0,0 +1,826 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package csrv1 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_CSR_1_list)(nil) + +type _CSR_1_list struct { + list *[]string +} + +func (x *_CSR_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_CSR_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_CSR_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_CSR_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_CSR_1_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message CSR at list field Contracts as it is not of Message kind")) +} + +func (x *_CSR_1_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_CSR_1_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_CSR_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_CSR protoreflect.MessageDescriptor + fd_CSR_contracts protoreflect.FieldDescriptor + fd_CSR_id protoreflect.FieldDescriptor + fd_CSR_txs protoreflect.FieldDescriptor + fd_CSR_revenue protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_csr_proto_init() + md_CSR = File_canto_csr_v1_csr_proto.Messages().ByName("CSR") + fd_CSR_contracts = md_CSR.Fields().ByName("contracts") + fd_CSR_id = md_CSR.Fields().ByName("id") + fd_CSR_txs = md_CSR.Fields().ByName("txs") + fd_CSR_revenue = md_CSR.Fields().ByName("revenue") +} + +var _ protoreflect.Message = (*fastReflection_CSR)(nil) + +type fastReflection_CSR CSR + +func (x *CSR) ProtoReflect() protoreflect.Message { + return (*fastReflection_CSR)(x) +} + +func (x *CSR) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_csr_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_CSR_messageType fastReflection_CSR_messageType +var _ protoreflect.MessageType = fastReflection_CSR_messageType{} + +type fastReflection_CSR_messageType struct{} + +func (x fastReflection_CSR_messageType) Zero() protoreflect.Message { + return (*fastReflection_CSR)(nil) +} +func (x fastReflection_CSR_messageType) New() protoreflect.Message { + return new(fastReflection_CSR) +} +func (x fastReflection_CSR_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_CSR +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_CSR) Descriptor() protoreflect.MessageDescriptor { + return md_CSR +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_CSR) Type() protoreflect.MessageType { + return _fastReflection_CSR_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_CSR) New() protoreflect.Message { + return new(fastReflection_CSR) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_CSR) Interface() protoreflect.ProtoMessage { + return (*CSR)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_CSR) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Contracts) != 0 { + value := protoreflect.ValueOfList(&_CSR_1_list{list: &x.Contracts}) + if !f(fd_CSR_contracts, value) { + return + } + } + if x.Id != uint64(0) { + value := protoreflect.ValueOfUint64(x.Id) + if !f(fd_CSR_id, value) { + return + } + } + if x.Txs != uint64(0) { + value := protoreflect.ValueOfUint64(x.Txs) + if !f(fd_CSR_txs, value) { + return + } + } + if x.Revenue != "" { + value := protoreflect.ValueOfString(x.Revenue) + if !f(fd_CSR_revenue, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_CSR) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.CSR.contracts": + return len(x.Contracts) != 0 + case "canto.csr.v1.CSR.id": + return x.Id != uint64(0) + case "canto.csr.v1.CSR.txs": + return x.Txs != uint64(0) + case "canto.csr.v1.CSR.revenue": + return x.Revenue != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_CSR) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.CSR.contracts": + x.Contracts = nil + case "canto.csr.v1.CSR.id": + x.Id = uint64(0) + case "canto.csr.v1.CSR.txs": + x.Txs = uint64(0) + case "canto.csr.v1.CSR.revenue": + x.Revenue = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_CSR) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.CSR.contracts": + if len(x.Contracts) == 0 { + return protoreflect.ValueOfList(&_CSR_1_list{}) + } + listValue := &_CSR_1_list{list: &x.Contracts} + return protoreflect.ValueOfList(listValue) + case "canto.csr.v1.CSR.id": + value := x.Id + return protoreflect.ValueOfUint64(value) + case "canto.csr.v1.CSR.txs": + value := x.Txs + return protoreflect.ValueOfUint64(value) + case "canto.csr.v1.CSR.revenue": + value := x.Revenue + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_CSR) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.CSR.contracts": + lv := value.List() + clv := lv.(*_CSR_1_list) + x.Contracts = *clv.list + case "canto.csr.v1.CSR.id": + x.Id = value.Uint() + case "canto.csr.v1.CSR.txs": + x.Txs = value.Uint() + case "canto.csr.v1.CSR.revenue": + x.Revenue = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_CSR) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.CSR.contracts": + if x.Contracts == nil { + x.Contracts = []string{} + } + value := &_CSR_1_list{list: &x.Contracts} + return protoreflect.ValueOfList(value) + case "canto.csr.v1.CSR.id": + panic(fmt.Errorf("field id of message canto.csr.v1.CSR is not mutable")) + case "canto.csr.v1.CSR.txs": + panic(fmt.Errorf("field txs of message canto.csr.v1.CSR is not mutable")) + case "canto.csr.v1.CSR.revenue": + panic(fmt.Errorf("field revenue of message canto.csr.v1.CSR is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_CSR) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.CSR.contracts": + list := []string{} + return protoreflect.ValueOfList(&_CSR_1_list{list: &list}) + case "canto.csr.v1.CSR.id": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.csr.v1.CSR.txs": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.csr.v1.CSR.revenue": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.CSR")) + } + panic(fmt.Errorf("message canto.csr.v1.CSR does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_CSR) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.CSR", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_CSR) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_CSR) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_CSR) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_CSR) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*CSR) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Contracts) > 0 { + for _, s := range x.Contracts { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Id != 0 { + n += 1 + runtime.Sov(uint64(x.Id)) + } + if x.Txs != 0 { + n += 1 + runtime.Sov(uint64(x.Txs)) + } + l = len(x.Revenue) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*CSR) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Revenue) > 0 { + i -= len(x.Revenue) + copy(dAtA[i:], x.Revenue) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Revenue))) + i-- + dAtA[i] = 0x22 + } + if x.Txs != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Txs)) + i-- + dAtA[i] = 0x18 + } + if x.Id != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Id)) + i-- + dAtA[i] = 0x10 + } + if len(x.Contracts) > 0 { + for iNdEx := len(x.Contracts) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Contracts[iNdEx]) + copy(dAtA[i:], x.Contracts[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Contracts[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*CSR) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CSR: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: CSR: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Contracts", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Contracts = append(x.Contracts, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + x.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Txs", wireType) + } + x.Txs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Txs |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Revenue", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Revenue = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/csr/v1/csr.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The CSR struct is a wrapper to all of the metadata associated with a given +// CST NFT +type CSR struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Contracts is the list of all EVM address that are registered to this NFT + Contracts []string `protobuf:"bytes,1,rep,name=contracts,proto3" json:"contracts,omitempty"` + // The NFT id which this CSR corresponds to + Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + // The total number of transactions for this CSR NFT + Txs uint64 `protobuf:"varint,3,opt,name=txs,proto3" json:"txs,omitempty"` + // The cumulative revenue for this CSR NFT -> represented as a sdk.Int + Revenue string `protobuf:"bytes,4,opt,name=revenue,proto3" json:"revenue,omitempty"` +} + +func (x *CSR) Reset() { + *x = CSR{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_csr_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSR) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSR) ProtoMessage() {} + +// Deprecated: Use CSR.ProtoReflect.Descriptor instead. +func (*CSR) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_csr_proto_rawDescGZIP(), []int{0} +} + +func (x *CSR) GetContracts() []string { + if x != nil { + return x.Contracts + } + return nil +} + +func (x *CSR) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CSR) GetTxs() uint64 { + if x != nil { + return x.Txs + } + return 0 +} + +func (x *CSR) GetRevenue() string { + if x != nil { + return x.Revenue + } + return "" +} + +var File_canto_csr_v1_csr_proto protoreflect.FileDescriptor + +var file_canto_csr_v1_csr_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x73, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x03, 0x43, 0x53, 0x52, 0x12, + 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x78, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x74, 0x78, 0x73, 0x12, + 0x45, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x76, 0x65, 0x6e, 0x75, 0x65, 0x42, 0x93, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x43, 0x73, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, + 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x18, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_csr_v1_csr_proto_rawDescOnce sync.Once + file_canto_csr_v1_csr_proto_rawDescData = file_canto_csr_v1_csr_proto_rawDesc +) + +func file_canto_csr_v1_csr_proto_rawDescGZIP() []byte { + file_canto_csr_v1_csr_proto_rawDescOnce.Do(func() { + file_canto_csr_v1_csr_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_csr_v1_csr_proto_rawDescData) + }) + return file_canto_csr_v1_csr_proto_rawDescData +} + +var file_canto_csr_v1_csr_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_csr_v1_csr_proto_goTypes = []interface{}{ + (*CSR)(nil), // 0: canto.csr.v1.CSR +} +var file_canto_csr_v1_csr_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_canto_csr_v1_csr_proto_init() } +func file_canto_csr_v1_csr_proto_init() { + if File_canto_csr_v1_csr_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_csr_v1_csr_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSR); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_csr_v1_csr_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_csr_v1_csr_proto_goTypes, + DependencyIndexes: file_canto_csr_v1_csr_proto_depIdxs, + MessageInfos: file_canto_csr_v1_csr_proto_msgTypes, + }.Build() + File_canto_csr_v1_csr_proto = out.File + file_canto_csr_v1_csr_proto_rawDesc = nil + file_canto_csr_v1_csr_proto_goTypes = nil + file_canto_csr_v1_csr_proto_depIdxs = nil +} diff --git a/api/canto/csr/v1/genesis.pulsar.go b/api/canto/csr/v1/genesis.pulsar.go new file mode 100644 index 000000000..be04a7910 --- /dev/null +++ b/api/canto/csr/v1/genesis.pulsar.go @@ -0,0 +1,591 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package csrv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_genesis_proto_init() + md_GenesisState = File_canto_csr_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.GenesisState.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.GenesisState.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.csr.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/csr/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the csr module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines all of the parameters of the module + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_csr_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_csr_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, 0x0a, 0x0c, 0x47, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0x97, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, + 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, + 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, + 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_canto_csr_v1_genesis_proto_rawDescOnce sync.Once + file_canto_csr_v1_genesis_proto_rawDescData = file_canto_csr_v1_genesis_proto_rawDesc +) + +func file_canto_csr_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_csr_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_csr_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_csr_v1_genesis_proto_rawDescData) + }) + return file_canto_csr_v1_genesis_proto_rawDescData +} + +var file_canto_csr_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_csr_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.csr.v1.GenesisState + (*Params)(nil), // 1: canto.csr.v1.Params +} +var file_canto_csr_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.csr.v1.GenesisState.params:type_name -> canto.csr.v1.Params + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_csr_v1_genesis_proto_init() } +func file_canto_csr_v1_genesis_proto_init() { + if File_canto_csr_v1_genesis_proto != nil { + return + } + file_canto_csr_v1_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_csr_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_csr_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_csr_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_csr_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_csr_v1_genesis_proto_msgTypes, + }.Build() + File_canto_csr_v1_genesis_proto = out.File + file_canto_csr_v1_genesis_proto_rawDesc = nil + file_canto_csr_v1_genesis_proto_goTypes = nil + file_canto_csr_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/csr/v1/params.pulsar.go b/api/canto/csr/v1/params.pulsar.go new file mode 100644 index 000000000..878d24c1d --- /dev/null +++ b/api/canto/csr/v1/params.pulsar.go @@ -0,0 +1,641 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package csrv1 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_enable_csr protoreflect.FieldDescriptor + fd_Params_csr_shares protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_params_proto_init() + md_Params = File_canto_csr_v1_params_proto.Messages().ByName("Params") + fd_Params_enable_csr = md_Params.Fields().ByName("enable_csr") + fd_Params_csr_shares = md_Params.Fields().ByName("csr_shares") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_params_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.EnableCsr != false { + value := protoreflect.ValueOfBool(x.EnableCsr) + if !f(fd_Params_enable_csr, value) { + return + } + } + if x.CsrShares != "" { + value := protoreflect.ValueOfString(x.CsrShares) + if !f(fd_Params_csr_shares, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.Params.enable_csr": + return x.EnableCsr != false + case "canto.csr.v1.Params.csr_shares": + return x.CsrShares != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.Params.enable_csr": + x.EnableCsr = false + case "canto.csr.v1.Params.csr_shares": + x.CsrShares = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.Params.enable_csr": + value := x.EnableCsr + return protoreflect.ValueOfBool(value) + case "canto.csr.v1.Params.csr_shares": + value := x.CsrShares + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.Params.enable_csr": + x.EnableCsr = value.Bool() + case "canto.csr.v1.Params.csr_shares": + x.CsrShares = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.Params.enable_csr": + panic(fmt.Errorf("field enable_csr of message canto.csr.v1.Params is not mutable")) + case "canto.csr.v1.Params.csr_shares": + panic(fmt.Errorf("field csr_shares of message canto.csr.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.Params.enable_csr": + return protoreflect.ValueOfBool(false) + case "canto.csr.v1.Params.csr_shares": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.Params")) + } + panic(fmt.Errorf("message canto.csr.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.EnableCsr { + n += 2 + } + l = len(x.CsrShares) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.CsrShares) > 0 { + i -= len(x.CsrShares) + copy(dAtA[i:], x.CsrShares) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CsrShares))) + i-- + dAtA[i] = 0x12 + } + if x.EnableCsr { + i-- + if x.EnableCsr { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EnableCsr", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EnableCsr = bool(v != 0) + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CsrShares", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.CsrShares = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/csr/v1/params.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Params holds parameters for the csr module +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // boolean to enable the csr module + EnableCsr bool `protobuf:"varint,1,opt,name=enable_csr,json=enableCsr,proto3" json:"enable_csr,omitempty"` + // decimal to determine the transaction fee split between network operators + // (validators) and CSR + CsrShares string `protobuf:"bytes,2,opt,name=csr_shares,json=csrShares,proto3" json:"csr_shares,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_params_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_params_proto_rawDescGZIP(), []int{0} +} + +func (x *Params) GetEnableCsr() bool { + if x != nil { + return x.EnableCsr + } + return false +} + +func (x *Params) GetCsrShares() string { + if x != nil { + return x.CsrShares + } + return "" +} + +var File_canto_csr_v1_params_proto protoreflect.FileDescriptor + +var file_canto_csr_v1_params_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x79, 0x0a, 0x06, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x73, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x73, 0x72, 0x12, 0x50, 0x0a, 0x0a, 0x63, 0x73, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x63, 0x73, 0x72, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x73, 0x42, 0x96, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x18, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_csr_v1_params_proto_rawDescOnce sync.Once + file_canto_csr_v1_params_proto_rawDescData = file_canto_csr_v1_params_proto_rawDesc +) + +func file_canto_csr_v1_params_proto_rawDescGZIP() []byte { + file_canto_csr_v1_params_proto_rawDescOnce.Do(func() { + file_canto_csr_v1_params_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_csr_v1_params_proto_rawDescData) + }) + return file_canto_csr_v1_params_proto_rawDescData +} + +var file_canto_csr_v1_params_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_csr_v1_params_proto_goTypes = []interface{}{ + (*Params)(nil), // 0: canto.csr.v1.Params +} +var file_canto_csr_v1_params_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_canto_csr_v1_params_proto_init() } +func file_canto_csr_v1_params_proto_init() { + if File_canto_csr_v1_params_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_csr_v1_params_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_csr_v1_params_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_csr_v1_params_proto_goTypes, + DependencyIndexes: file_canto_csr_v1_params_proto_depIdxs, + MessageInfos: file_canto_csr_v1_params_proto_msgTypes, + }.Build() + File_canto_csr_v1_params_proto = out.File + file_canto_csr_v1_params_proto_rawDesc = nil + file_canto_csr_v1_params_proto_goTypes = nil + file_canto_csr_v1_params_proto_depIdxs = nil +} diff --git a/api/canto/csr/v1/query.pulsar.go b/api/canto/csr/v1/query.pulsar.go new file mode 100644 index 000000000..fcbabeaba --- /dev/null +++ b/api/canto/csr/v1/query.pulsar.go @@ -0,0 +1,4963 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package csrv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryParamsRequest = File_canto_csr_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryParamsResponse = File_canto_csr_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCSRsRequest protoreflect.MessageDescriptor + fd_QueryCSRsRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRsRequest = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRsRequest") + fd_QueryCSRsRequest_pagination = md_QueryCSRsRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRsRequest)(nil) + +type fastReflection_QueryCSRsRequest QueryCSRsRequest + +func (x *QueryCSRsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRsRequest)(x) +} + +func (x *QueryCSRsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRsRequest_messageType fastReflection_QueryCSRsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRsRequest_messageType{} + +type fastReflection_QueryCSRsRequest_messageType struct{} + +func (x fastReflection_QueryCSRsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRsRequest)(nil) +} +func (x fastReflection_QueryCSRsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRsRequest) +} +func (x fastReflection_QueryCSRsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRsRequest) New() protoreflect.Message { + return new(fastReflection_QueryCSRsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryCSRsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryCSRsRequest_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryCSRsResponse_1_list)(nil) + +type _QueryCSRsResponse_1_list struct { + list *[]*CSR +} + +func (x *_QueryCSRsResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryCSRsResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryCSRsResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*CSR) + (*x.list)[i] = concreteValue +} + +func (x *_QueryCSRsResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*CSR) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryCSRsResponse_1_list) AppendMutable() protoreflect.Value { + v := new(CSR) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryCSRsResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryCSRsResponse_1_list) NewElement() protoreflect.Value { + v := new(CSR) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryCSRsResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryCSRsResponse protoreflect.MessageDescriptor + fd_QueryCSRsResponse_csrs protoreflect.FieldDescriptor + fd_QueryCSRsResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRsResponse = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRsResponse") + fd_QueryCSRsResponse_csrs = md_QueryCSRsResponse.Fields().ByName("csrs") + fd_QueryCSRsResponse_pagination = md_QueryCSRsResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRsResponse)(nil) + +type fastReflection_QueryCSRsResponse QueryCSRsResponse + +func (x *QueryCSRsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRsResponse)(x) +} + +func (x *QueryCSRsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRsResponse_messageType fastReflection_QueryCSRsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRsResponse_messageType{} + +type fastReflection_QueryCSRsResponse_messageType struct{} + +func (x fastReflection_QueryCSRsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRsResponse)(nil) +} +func (x fastReflection_QueryCSRsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRsResponse) +} +func (x fastReflection_QueryCSRsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRsResponse) New() protoreflect.Message { + return new(fastReflection_QueryCSRsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryCSRsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Csrs) != 0 { + value := protoreflect.ValueOfList(&_QueryCSRsResponse_1_list{list: &x.Csrs}) + if !f(fd_QueryCSRsResponse_csrs, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryCSRsResponse_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + return len(x.Csrs) != 0 + case "canto.csr.v1.QueryCSRsResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + x.Csrs = nil + case "canto.csr.v1.QueryCSRsResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + if len(x.Csrs) == 0 { + return protoreflect.ValueOfList(&_QueryCSRsResponse_1_list{}) + } + listValue := &_QueryCSRsResponse_1_list{list: &x.Csrs} + return protoreflect.ValueOfList(listValue) + case "canto.csr.v1.QueryCSRsResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + lv := value.List() + clv := lv.(*_QueryCSRsResponse_1_list) + x.Csrs = *clv.list + case "canto.csr.v1.QueryCSRsResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + if x.Csrs == nil { + x.Csrs = []*CSR{} + } + value := &_QueryCSRsResponse_1_list{list: &x.Csrs} + return protoreflect.ValueOfList(value) + case "canto.csr.v1.QueryCSRsResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRsResponse.csrs": + list := []*CSR{} + return protoreflect.ValueOfList(&_QueryCSRsResponse_1_list{list: &list}) + case "canto.csr.v1.QueryCSRsResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Csrs) > 0 { + for _, e := range x.Csrs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Csrs) > 0 { + for iNdEx := len(x.Csrs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Csrs[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Csrs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Csrs = append(x.Csrs, &CSR{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Csrs[len(x.Csrs)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCSRByNFTRequest protoreflect.MessageDescriptor + fd_QueryCSRByNFTRequest_nftId protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRByNFTRequest = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRByNFTRequest") + fd_QueryCSRByNFTRequest_nftId = md_QueryCSRByNFTRequest.Fields().ByName("nftId") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRByNFTRequest)(nil) + +type fastReflection_QueryCSRByNFTRequest QueryCSRByNFTRequest + +func (x *QueryCSRByNFTRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRByNFTRequest)(x) +} + +func (x *QueryCSRByNFTRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRByNFTRequest_messageType fastReflection_QueryCSRByNFTRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRByNFTRequest_messageType{} + +type fastReflection_QueryCSRByNFTRequest_messageType struct{} + +func (x fastReflection_QueryCSRByNFTRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRByNFTRequest)(nil) +} +func (x fastReflection_QueryCSRByNFTRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRByNFTRequest) +} +func (x fastReflection_QueryCSRByNFTRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByNFTRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRByNFTRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByNFTRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRByNFTRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRByNFTRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRByNFTRequest) New() protoreflect.Message { + return new(fastReflection_QueryCSRByNFTRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRByNFTRequest) Interface() protoreflect.ProtoMessage { + return (*QueryCSRByNFTRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRByNFTRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.NftId != uint64(0) { + value := protoreflect.ValueOfUint64(x.NftId) + if !f(fd_QueryCSRByNFTRequest_nftId, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRByNFTRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + return x.NftId != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + x.NftId = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRByNFTRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + value := x.NftId + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + x.NftId = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + panic(fmt.Errorf("field nftId of message canto.csr.v1.QueryCSRByNFTRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRByNFTRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTRequest.nftId": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRByNFTRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRByNFTRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRByNFTRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRByNFTRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRByNFTRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRByNFTRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.NftId != 0 { + n += 1 + runtime.Sov(uint64(x.NftId)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByNFTRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.NftId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.NftId)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByNFTRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByNFTRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByNFTRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NftId", wireType) + } + x.NftId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.NftId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCSRByNFTResponse protoreflect.MessageDescriptor + fd_QueryCSRByNFTResponse_csr protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRByNFTResponse = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRByNFTResponse") + fd_QueryCSRByNFTResponse_csr = md_QueryCSRByNFTResponse.Fields().ByName("csr") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRByNFTResponse)(nil) + +type fastReflection_QueryCSRByNFTResponse QueryCSRByNFTResponse + +func (x *QueryCSRByNFTResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRByNFTResponse)(x) +} + +func (x *QueryCSRByNFTResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRByNFTResponse_messageType fastReflection_QueryCSRByNFTResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRByNFTResponse_messageType{} + +type fastReflection_QueryCSRByNFTResponse_messageType struct{} + +func (x fastReflection_QueryCSRByNFTResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRByNFTResponse)(nil) +} +func (x fastReflection_QueryCSRByNFTResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRByNFTResponse) +} +func (x fastReflection_QueryCSRByNFTResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByNFTResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRByNFTResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByNFTResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRByNFTResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRByNFTResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRByNFTResponse) New() protoreflect.Message { + return new(fastReflection_QueryCSRByNFTResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRByNFTResponse) Interface() protoreflect.ProtoMessage { + return (*QueryCSRByNFTResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRByNFTResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Csr != nil { + value := protoreflect.ValueOfMessage(x.Csr.ProtoReflect()) + if !f(fd_QueryCSRByNFTResponse_csr, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRByNFTResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + return x.Csr != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + x.Csr = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRByNFTResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + value := x.Csr + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + x.Csr = value.Message().Interface().(*CSR) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + if x.Csr == nil { + x.Csr = new(CSR) + } + return protoreflect.ValueOfMessage(x.Csr.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRByNFTResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByNFTResponse.csr": + m := new(CSR) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByNFTResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByNFTResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRByNFTResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRByNFTResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRByNFTResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByNFTResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRByNFTResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRByNFTResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRByNFTResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Csr != nil { + l = options.Size(x.Csr) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByNFTResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Csr != nil { + encoded, err := options.Marshal(x.Csr) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByNFTResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByNFTResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByNFTResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Csr", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Csr == nil { + x.Csr = &CSR{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Csr); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCSRByContractRequest protoreflect.MessageDescriptor + fd_QueryCSRByContractRequest_address protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRByContractRequest = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRByContractRequest") + fd_QueryCSRByContractRequest_address = md_QueryCSRByContractRequest.Fields().ByName("address") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRByContractRequest)(nil) + +type fastReflection_QueryCSRByContractRequest QueryCSRByContractRequest + +func (x *QueryCSRByContractRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRByContractRequest)(x) +} + +func (x *QueryCSRByContractRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRByContractRequest_messageType fastReflection_QueryCSRByContractRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRByContractRequest_messageType{} + +type fastReflection_QueryCSRByContractRequest_messageType struct{} + +func (x fastReflection_QueryCSRByContractRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRByContractRequest)(nil) +} +func (x fastReflection_QueryCSRByContractRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRByContractRequest) +} +func (x fastReflection_QueryCSRByContractRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByContractRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRByContractRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByContractRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRByContractRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRByContractRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRByContractRequest) New() protoreflect.Message { + return new(fastReflection_QueryCSRByContractRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRByContractRequest) Interface() protoreflect.ProtoMessage { + return (*QueryCSRByContractRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRByContractRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_QueryCSRByContractRequest_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRByContractRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + return x.Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + x.Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRByContractRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + value := x.Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + x.Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + panic(fmt.Errorf("field address of message canto.csr.v1.QueryCSRByContractRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRByContractRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractRequest.address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRByContractRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRByContractRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRByContractRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRByContractRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRByContractRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRByContractRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByContractRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByContractRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByContractRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByContractRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCSRByContractResponse protoreflect.MessageDescriptor + fd_QueryCSRByContractResponse_csr protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryCSRByContractResponse = File_canto_csr_v1_query_proto.Messages().ByName("QueryCSRByContractResponse") + fd_QueryCSRByContractResponse_csr = md_QueryCSRByContractResponse.Fields().ByName("csr") +} + +var _ protoreflect.Message = (*fastReflection_QueryCSRByContractResponse)(nil) + +type fastReflection_QueryCSRByContractResponse QueryCSRByContractResponse + +func (x *QueryCSRByContractResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCSRByContractResponse)(x) +} + +func (x *QueryCSRByContractResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCSRByContractResponse_messageType fastReflection_QueryCSRByContractResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryCSRByContractResponse_messageType{} + +type fastReflection_QueryCSRByContractResponse_messageType struct{} + +func (x fastReflection_QueryCSRByContractResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCSRByContractResponse)(nil) +} +func (x fastReflection_QueryCSRByContractResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCSRByContractResponse) +} +func (x fastReflection_QueryCSRByContractResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByContractResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCSRByContractResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCSRByContractResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCSRByContractResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryCSRByContractResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCSRByContractResponse) New() protoreflect.Message { + return new(fastReflection_QueryCSRByContractResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCSRByContractResponse) Interface() protoreflect.ProtoMessage { + return (*QueryCSRByContractResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCSRByContractResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Csr != nil { + value := protoreflect.ValueOfMessage(x.Csr.ProtoReflect()) + if !f(fd_QueryCSRByContractResponse_csr, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCSRByContractResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + return x.Csr != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + x.Csr = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCSRByContractResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + value := x.Csr + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + x.Csr = value.Message().Interface().(*CSR) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + if x.Csr == nil { + x.Csr = new(CSR) + } + return protoreflect.ValueOfMessage(x.Csr.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCSRByContractResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryCSRByContractResponse.csr": + m := new(CSR) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryCSRByContractResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryCSRByContractResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCSRByContractResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryCSRByContractResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCSRByContractResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCSRByContractResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCSRByContractResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCSRByContractResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCSRByContractResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Csr != nil { + l = options.Size(x.Csr) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByContractResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Csr != nil { + encoded, err := options.Marshal(x.Csr) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCSRByContractResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByContractResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCSRByContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Csr", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Csr == nil { + x.Csr = &CSR{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Csr); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTurnstileRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryTurnstileRequest = File_canto_csr_v1_query_proto.Messages().ByName("QueryTurnstileRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryTurnstileRequest)(nil) + +type fastReflection_QueryTurnstileRequest QueryTurnstileRequest + +func (x *QueryTurnstileRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTurnstileRequest)(x) +} + +func (x *QueryTurnstileRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTurnstileRequest_messageType fastReflection_QueryTurnstileRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTurnstileRequest_messageType{} + +type fastReflection_QueryTurnstileRequest_messageType struct{} + +func (x fastReflection_QueryTurnstileRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTurnstileRequest)(nil) +} +func (x fastReflection_QueryTurnstileRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTurnstileRequest) +} +func (x fastReflection_QueryTurnstileRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTurnstileRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTurnstileRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTurnstileRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTurnstileRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTurnstileRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTurnstileRequest) New() protoreflect.Message { + return new(fastReflection_QueryTurnstileRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTurnstileRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTurnstileRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTurnstileRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTurnstileRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTurnstileRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTurnstileRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileRequest")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTurnstileRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryTurnstileRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTurnstileRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTurnstileRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTurnstileRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTurnstileRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTurnstileRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTurnstileRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTurnstileRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTurnstileRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTurnstileResponse protoreflect.MessageDescriptor + fd_QueryTurnstileResponse_address protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_query_proto_init() + md_QueryTurnstileResponse = File_canto_csr_v1_query_proto.Messages().ByName("QueryTurnstileResponse") + fd_QueryTurnstileResponse_address = md_QueryTurnstileResponse.Fields().ByName("address") +} + +var _ protoreflect.Message = (*fastReflection_QueryTurnstileResponse)(nil) + +type fastReflection_QueryTurnstileResponse QueryTurnstileResponse + +func (x *QueryTurnstileResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTurnstileResponse)(x) +} + +func (x *QueryTurnstileResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_query_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTurnstileResponse_messageType fastReflection_QueryTurnstileResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTurnstileResponse_messageType{} + +type fastReflection_QueryTurnstileResponse_messageType struct{} + +func (x fastReflection_QueryTurnstileResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTurnstileResponse)(nil) +} +func (x fastReflection_QueryTurnstileResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTurnstileResponse) +} +func (x fastReflection_QueryTurnstileResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTurnstileResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTurnstileResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTurnstileResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTurnstileResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTurnstileResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTurnstileResponse) New() protoreflect.Message { + return new(fastReflection_QueryTurnstileResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTurnstileResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTurnstileResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTurnstileResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_QueryTurnstileResponse_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTurnstileResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + return x.Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + x.Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTurnstileResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + value := x.Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + x.Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + panic(fmt.Errorf("field address of message canto.csr.v1.QueryTurnstileResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTurnstileResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.QueryTurnstileResponse.address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.QueryTurnstileResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.QueryTurnstileResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTurnstileResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.QueryTurnstileResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTurnstileResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTurnstileResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTurnstileResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTurnstileResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTurnstileResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTurnstileResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTurnstileResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTurnstileResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTurnstileResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/csr/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params holds all the parameters of this module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// QueryCSRsRequest is the request type for the Query/CSRs RPC method. +type QueryCSRsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryCSRsRequest) Reset() { + *x = QueryCSRsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRsRequest) ProtoMessage() {} + +// Deprecated: Use QueryCSRsRequest.ProtoReflect.Descriptor instead. +func (*QueryCSRsRequest) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryCSRsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryCSRsResponse is the response type for the Query/CSRs RPC method. +type QueryCSRsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Csrs []*CSR `protobuf:"bytes,1,rep,name=csrs,proto3" json:"csrs,omitempty"` + // pagination for response + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryCSRsResponse) Reset() { + *x = QueryCSRsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRsResponse) ProtoMessage() {} + +// Deprecated: Use QueryCSRsResponse.ProtoReflect.Descriptor instead. +func (*QueryCSRsResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryCSRsResponse) GetCsrs() []*CSR { + if x != nil { + return x.Csrs + } + return nil +} + +func (x *QueryCSRsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryCSRByNFTRequest is the request type for the Query/CSRByNFT RPC method. +type QueryCSRByNFTRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NftId uint64 `protobuf:"varint,1,opt,name=nftId,proto3" json:"nftId,omitempty"` +} + +func (x *QueryCSRByNFTRequest) Reset() { + *x = QueryCSRByNFTRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRByNFTRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRByNFTRequest) ProtoMessage() {} + +// Deprecated: Use QueryCSRByNFTRequest.ProtoReflect.Descriptor instead. +func (*QueryCSRByNFTRequest) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{4} +} + +func (x *QueryCSRByNFTRequest) GetNftId() uint64 { + if x != nil { + return x.NftId + } + return 0 +} + +// QueryCSRByNFTResponse is the response type for the Query/CSRByNFT RPC method. +type QueryCSRByNFTResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // csr object queried by nft id + Csr *CSR `protobuf:"bytes,1,opt,name=csr,proto3" json:"csr,omitempty"` +} + +func (x *QueryCSRByNFTResponse) Reset() { + *x = QueryCSRByNFTResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRByNFTResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRByNFTResponse) ProtoMessage() {} + +// Deprecated: Use QueryCSRByNFTResponse.ProtoReflect.Descriptor instead. +func (*QueryCSRByNFTResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QueryCSRByNFTResponse) GetCsr() *CSR { + if x != nil { + return x.Csr + } + return nil +} + +// QueryCSRByContractRequest is the request type for the Query/CSRByContract RPC +// method. +type QueryCSRByContractRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (x *QueryCSRByContractRequest) Reset() { + *x = QueryCSRByContractRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRByContractRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRByContractRequest) ProtoMessage() {} + +// Deprecated: Use QueryCSRByContractRequest.ProtoReflect.Descriptor instead. +func (*QueryCSRByContractRequest) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{6} +} + +func (x *QueryCSRByContractRequest) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +// QueryCSRByContractResponse is the response type for the Query/CSRByContract +// RPC method. +type QueryCSRByContractResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // csr object queried by smart contract address + Csr *CSR `protobuf:"bytes,1,opt,name=csr,proto3" json:"csr,omitempty"` +} + +func (x *QueryCSRByContractResponse) Reset() { + *x = QueryCSRByContractResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCSRByContractResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCSRByContractResponse) ProtoMessage() {} + +// Deprecated: Use QueryCSRByContractResponse.ProtoReflect.Descriptor instead. +func (*QueryCSRByContractResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *QueryCSRByContractResponse) GetCsr() *CSR { + if x != nil { + return x.Csr + } + return nil +} + +// QueryTurnstileRequest is the request type for the Query/Turnstile RPC method. +type QueryTurnstileRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryTurnstileRequest) Reset() { + *x = QueryTurnstileRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTurnstileRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTurnstileRequest) ProtoMessage() {} + +// Deprecated: Use QueryTurnstileRequest.ProtoReflect.Descriptor instead. +func (*QueryTurnstileRequest) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{8} +} + +// QueryTurnstileResponse is the response type for the Query/Turnstile RPC +// method. +type QueryTurnstileResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (x *QueryTurnstileResponse) Reset() { + *x = QueryTurnstileResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTurnstileResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTurnstileResponse) ProtoMessage() {} + +// Deprecated: Use QueryTurnstileResponse.ProtoReflect.Descriptor instead. +func (*QueryTurnstileResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_query_proto_rawDescGZIP(), []int{9} +} + +func (x *QueryTurnstileResponse) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +var File_canto_csr_v1_query_proto protoreflect.FileDescriptor + +var file_canto_csr_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x18, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x73, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x49, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x5a, 0x0a, 0x10, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x43, 0x53, 0x52, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, + 0x0a, 0x04, 0x63, 0x73, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x52, 0x42, + 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x73, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, + 0x42, 0x79, 0x4e, 0x46, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x6e, 0x66, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x66, 0x74, + 0x49, 0x64, 0x22, 0x42, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x42, 0x79, + 0x4e, 0x46, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x63, + 0x73, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x52, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x03, 0x63, 0x73, 0x72, 0x22, 0x35, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x53, 0x52, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x47, 0x0a, + 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x63, + 0x73, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x52, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x03, 0x63, 0x73, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x75, 0x72, 0x6e, 0x73, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x32, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x75, 0x72, 0x6e, 0x73, 0x74, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x32, 0xd9, 0x04, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x6b, 0x0a, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x73, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x63, 0x0a, 0x04, 0x43, 0x53, + 0x52, 0x73, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x63, 0x73, 0x72, 0x73, 0x12, + 0x76, 0x0a, 0x08, 0x43, 0x53, 0x52, 0x42, 0x79, 0x4e, 0x46, 0x54, 0x12, 0x22, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x43, 0x53, 0x52, 0x42, 0x79, 0x4e, 0x46, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x42, 0x79, 0x4e, 0x46, 0x54, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x6e, 0x66, 0x74, 0x2f, + 0x7b, 0x6e, 0x66, 0x74, 0x49, 0x64, 0x7d, 0x12, 0x8c, 0x01, 0x0a, 0x0d, 0x43, 0x53, 0x52, 0x42, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, + 0x52, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x53, 0x52, 0x42, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x73, 0x72, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x7b, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x12, 0x77, 0x0a, 0x09, 0x54, 0x75, 0x72, 0x6e, 0x73, 0x74, + 0x69, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x75, 0x72, 0x6e, 0x73, 0x74, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x75, 0x72, + 0x6e, 0x73, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x74, 0x69, 0x6c, 0x65, 0x42, + 0x95, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, + 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, + 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x0c, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_csr_v1_query_proto_rawDescOnce sync.Once + file_canto_csr_v1_query_proto_rawDescData = file_canto_csr_v1_query_proto_rawDesc +) + +func file_canto_csr_v1_query_proto_rawDescGZIP() []byte { + file_canto_csr_v1_query_proto_rawDescOnce.Do(func() { + file_canto_csr_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_csr_v1_query_proto_rawDescData) + }) + return file_canto_csr_v1_query_proto_rawDescData +} + +var file_canto_csr_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_canto_csr_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: canto.csr.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: canto.csr.v1.QueryParamsResponse + (*QueryCSRsRequest)(nil), // 2: canto.csr.v1.QueryCSRsRequest + (*QueryCSRsResponse)(nil), // 3: canto.csr.v1.QueryCSRsResponse + (*QueryCSRByNFTRequest)(nil), // 4: canto.csr.v1.QueryCSRByNFTRequest + (*QueryCSRByNFTResponse)(nil), // 5: canto.csr.v1.QueryCSRByNFTResponse + (*QueryCSRByContractRequest)(nil), // 6: canto.csr.v1.QueryCSRByContractRequest + (*QueryCSRByContractResponse)(nil), // 7: canto.csr.v1.QueryCSRByContractResponse + (*QueryTurnstileRequest)(nil), // 8: canto.csr.v1.QueryTurnstileRequest + (*QueryTurnstileResponse)(nil), // 9: canto.csr.v1.QueryTurnstileResponse + (*Params)(nil), // 10: canto.csr.v1.Params + (*v1beta1.PageRequest)(nil), // 11: cosmos.base.query.v1beta1.PageRequest + (*CSR)(nil), // 12: canto.csr.v1.CSR + (*v1beta1.PageResponse)(nil), // 13: cosmos.base.query.v1beta1.PageResponse +} +var file_canto_csr_v1_query_proto_depIdxs = []int32{ + 10, // 0: canto.csr.v1.QueryParamsResponse.params:type_name -> canto.csr.v1.Params + 11, // 1: canto.csr.v1.QueryCSRsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 12, // 2: canto.csr.v1.QueryCSRsResponse.csrs:type_name -> canto.csr.v1.CSR + 13, // 3: canto.csr.v1.QueryCSRsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 12, // 4: canto.csr.v1.QueryCSRByNFTResponse.csr:type_name -> canto.csr.v1.CSR + 12, // 5: canto.csr.v1.QueryCSRByContractResponse.csr:type_name -> canto.csr.v1.CSR + 0, // 6: canto.csr.v1.Query.Params:input_type -> canto.csr.v1.QueryParamsRequest + 2, // 7: canto.csr.v1.Query.CSRs:input_type -> canto.csr.v1.QueryCSRsRequest + 4, // 8: canto.csr.v1.Query.CSRByNFT:input_type -> canto.csr.v1.QueryCSRByNFTRequest + 6, // 9: canto.csr.v1.Query.CSRByContract:input_type -> canto.csr.v1.QueryCSRByContractRequest + 8, // 10: canto.csr.v1.Query.Turnstile:input_type -> canto.csr.v1.QueryTurnstileRequest + 1, // 11: canto.csr.v1.Query.Params:output_type -> canto.csr.v1.QueryParamsResponse + 3, // 12: canto.csr.v1.Query.CSRs:output_type -> canto.csr.v1.QueryCSRsResponse + 5, // 13: canto.csr.v1.Query.CSRByNFT:output_type -> canto.csr.v1.QueryCSRByNFTResponse + 7, // 14: canto.csr.v1.Query.CSRByContract:output_type -> canto.csr.v1.QueryCSRByContractResponse + 9, // 15: canto.csr.v1.Query.Turnstile:output_type -> canto.csr.v1.QueryTurnstileResponse + 11, // [11:16] is the sub-list for method output_type + 6, // [6:11] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_canto_csr_v1_query_proto_init() } +func file_canto_csr_v1_query_proto_init() { + if File_canto_csr_v1_query_proto != nil { + return + } + file_canto_csr_v1_params_proto_init() + file_canto_csr_v1_csr_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_csr_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRByNFTRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRByNFTResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRByContractRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCSRByContractResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTurnstileRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTurnstileResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_csr_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_csr_v1_query_proto_goTypes, + DependencyIndexes: file_canto_csr_v1_query_proto_depIdxs, + MessageInfos: file_canto_csr_v1_query_proto_msgTypes, + }.Build() + File_canto_csr_v1_query_proto = out.File + file_canto_csr_v1_query_proto_rawDesc = nil + file_canto_csr_v1_query_proto_goTypes = nil + file_canto_csr_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/csr/v1/query_grpc.pb.go b/api/canto/csr/v1/query_grpc.pb.go new file mode 100644 index 000000000..b065eefbf --- /dev/null +++ b/api/canto/csr/v1/query_grpc.pb.go @@ -0,0 +1,267 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/csr/v1/query.proto + +package csrv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/canto.csr.v1.Query/Params" + Query_CSRs_FullMethodName = "/canto.csr.v1.Query/CSRs" + Query_CSRByNFT_FullMethodName = "/canto.csr.v1.Query/CSRByNFT" + Query_CSRByContract_FullMethodName = "/canto.csr.v1.Query/CSRByContract" + Query_Turnstile_FullMethodName = "/canto.csr.v1.Query/Turnstile" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) + // query all registered CSRs + CSRs(ctx context.Context, in *QueryCSRsRequest, opts ...grpc.CallOption) (*QueryCSRsResponse, error) + // query a specific CSR by the nftId + CSRByNFT(ctx context.Context, in *QueryCSRByNFTRequest, opts ...grpc.CallOption) (*QueryCSRByNFTResponse, error) + // query a CSR by smart contract address + CSRByContract(ctx context.Context, in *QueryCSRByContractRequest, opts ...grpc.CallOption) (*QueryCSRByContractResponse, error) + // query the turnstile address + Turnstile(ctx context.Context, in *QueryTurnstileRequest, opts ...grpc.CallOption) (*QueryTurnstileResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) CSRs(ctx context.Context, in *QueryCSRsRequest, opts ...grpc.CallOption) (*QueryCSRsResponse, error) { + out := new(QueryCSRsResponse) + err := c.cc.Invoke(ctx, Query_CSRs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) CSRByNFT(ctx context.Context, in *QueryCSRByNFTRequest, opts ...grpc.CallOption) (*QueryCSRByNFTResponse, error) { + out := new(QueryCSRByNFTResponse) + err := c.cc.Invoke(ctx, Query_CSRByNFT_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) CSRByContract(ctx context.Context, in *QueryCSRByContractRequest, opts ...grpc.CallOption) (*QueryCSRByContractResponse, error) { + out := new(QueryCSRByContractResponse) + err := c.cc.Invoke(ctx, Query_CSRByContract_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Turnstile(ctx context.Context, in *QueryTurnstileRequest, opts ...grpc.CallOption) (*QueryTurnstileResponse, error) { + out := new(QueryTurnstileResponse) + err := c.cc.Invoke(ctx, Query_Turnstile_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + // query all registered CSRs + CSRs(context.Context, *QueryCSRsRequest) (*QueryCSRsResponse, error) + // query a specific CSR by the nftId + CSRByNFT(context.Context, *QueryCSRByNFTRequest) (*QueryCSRByNFTResponse, error) + // query a CSR by smart contract address + CSRByContract(context.Context, *QueryCSRByContractRequest) (*QueryCSRByContractResponse, error) + // query the turnstile address + Turnstile(context.Context, *QueryTurnstileRequest) (*QueryTurnstileResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) CSRs(context.Context, *QueryCSRsRequest) (*QueryCSRsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CSRs not implemented") +} +func (UnimplementedQueryServer) CSRByNFT(context.Context, *QueryCSRByNFTRequest) (*QueryCSRByNFTResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CSRByNFT not implemented") +} +func (UnimplementedQueryServer) CSRByContract(context.Context, *QueryCSRByContractRequest) (*QueryCSRByContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CSRByContract not implemented") +} +func (UnimplementedQueryServer) Turnstile(context.Context, *QueryTurnstileRequest) (*QueryTurnstileResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Turnstile not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_CSRs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCSRsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CSRs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_CSRs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CSRs(ctx, req.(*QueryCSRsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_CSRByNFT_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCSRByNFTRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CSRByNFT(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_CSRByNFT_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CSRByNFT(ctx, req.(*QueryCSRByNFTRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_CSRByContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCSRByContractRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CSRByContract(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_CSRByContract_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CSRByContract(ctx, req.(*QueryCSRByContractRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Turnstile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTurnstileRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Turnstile(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Turnstile_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Turnstile(ctx, req.(*QueryTurnstileRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.csr.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + { + MethodName: "CSRs", + Handler: _Query_CSRs_Handler, + }, + { + MethodName: "CSRByNFT", + Handler: _Query_CSRByNFT_Handler, + }, + { + MethodName: "CSRByContract", + Handler: _Query_CSRByContract_Handler, + }, + { + MethodName: "Turnstile", + Handler: _Query_Turnstile_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/csr/v1/query.proto", +} diff --git a/api/canto/epochs/v1/genesis.pulsar.go b/api/canto/epochs/v1/genesis.pulsar.go new file mode 100644 index 000000000..967074feb --- /dev/null +++ b/api/canto/epochs/v1/genesis.pulsar.go @@ -0,0 +1,1594 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package epochsv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_EpochInfo protoreflect.MessageDescriptor + fd_EpochInfo_identifier protoreflect.FieldDescriptor + fd_EpochInfo_start_time protoreflect.FieldDescriptor + fd_EpochInfo_duration protoreflect.FieldDescriptor + fd_EpochInfo_current_epoch protoreflect.FieldDescriptor + fd_EpochInfo_current_epoch_start_time protoreflect.FieldDescriptor + fd_EpochInfo_epoch_counting_started protoreflect.FieldDescriptor + fd_EpochInfo_current_epoch_start_height protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_genesis_proto_init() + md_EpochInfo = File_canto_epochs_v1_genesis_proto.Messages().ByName("EpochInfo") + fd_EpochInfo_identifier = md_EpochInfo.Fields().ByName("identifier") + fd_EpochInfo_start_time = md_EpochInfo.Fields().ByName("start_time") + fd_EpochInfo_duration = md_EpochInfo.Fields().ByName("duration") + fd_EpochInfo_current_epoch = md_EpochInfo.Fields().ByName("current_epoch") + fd_EpochInfo_current_epoch_start_time = md_EpochInfo.Fields().ByName("current_epoch_start_time") + fd_EpochInfo_epoch_counting_started = md_EpochInfo.Fields().ByName("epoch_counting_started") + fd_EpochInfo_current_epoch_start_height = md_EpochInfo.Fields().ByName("current_epoch_start_height") +} + +var _ protoreflect.Message = (*fastReflection_EpochInfo)(nil) + +type fastReflection_EpochInfo EpochInfo + +func (x *EpochInfo) ProtoReflect() protoreflect.Message { + return (*fastReflection_EpochInfo)(x) +} + +func (x *EpochInfo) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_EpochInfo_messageType fastReflection_EpochInfo_messageType +var _ protoreflect.MessageType = fastReflection_EpochInfo_messageType{} + +type fastReflection_EpochInfo_messageType struct{} + +func (x fastReflection_EpochInfo_messageType) Zero() protoreflect.Message { + return (*fastReflection_EpochInfo)(nil) +} +func (x fastReflection_EpochInfo_messageType) New() protoreflect.Message { + return new(fastReflection_EpochInfo) +} +func (x fastReflection_EpochInfo_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_EpochInfo +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_EpochInfo) Descriptor() protoreflect.MessageDescriptor { + return md_EpochInfo +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_EpochInfo) Type() protoreflect.MessageType { + return _fastReflection_EpochInfo_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_EpochInfo) New() protoreflect.Message { + return new(fastReflection_EpochInfo) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_EpochInfo) Interface() protoreflect.ProtoMessage { + return (*EpochInfo)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_EpochInfo) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Identifier != "" { + value := protoreflect.ValueOfString(x.Identifier) + if !f(fd_EpochInfo_identifier, value) { + return + } + } + if x.StartTime != nil { + value := protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + if !f(fd_EpochInfo_start_time, value) { + return + } + } + if x.Duration != nil { + value := protoreflect.ValueOfMessage(x.Duration.ProtoReflect()) + if !f(fd_EpochInfo_duration, value) { + return + } + } + if x.CurrentEpoch != int64(0) { + value := protoreflect.ValueOfInt64(x.CurrentEpoch) + if !f(fd_EpochInfo_current_epoch, value) { + return + } + } + if x.CurrentEpochStartTime != nil { + value := protoreflect.ValueOfMessage(x.CurrentEpochStartTime.ProtoReflect()) + if !f(fd_EpochInfo_current_epoch_start_time, value) { + return + } + } + if x.EpochCountingStarted != false { + value := protoreflect.ValueOfBool(x.EpochCountingStarted) + if !f(fd_EpochInfo_epoch_counting_started, value) { + return + } + } + if x.CurrentEpochStartHeight != int64(0) { + value := protoreflect.ValueOfInt64(x.CurrentEpochStartHeight) + if !f(fd_EpochInfo_current_epoch_start_height, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_EpochInfo) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.EpochInfo.identifier": + return x.Identifier != "" + case "canto.epochs.v1.EpochInfo.start_time": + return x.StartTime != nil + case "canto.epochs.v1.EpochInfo.duration": + return x.Duration != nil + case "canto.epochs.v1.EpochInfo.current_epoch": + return x.CurrentEpoch != int64(0) + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + return x.CurrentEpochStartTime != nil + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + return x.EpochCountingStarted != false + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + return x.CurrentEpochStartHeight != int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EpochInfo) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.EpochInfo.identifier": + x.Identifier = "" + case "canto.epochs.v1.EpochInfo.start_time": + x.StartTime = nil + case "canto.epochs.v1.EpochInfo.duration": + x.Duration = nil + case "canto.epochs.v1.EpochInfo.current_epoch": + x.CurrentEpoch = int64(0) + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + x.CurrentEpochStartTime = nil + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + x.EpochCountingStarted = false + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + x.CurrentEpochStartHeight = int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_EpochInfo) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.EpochInfo.identifier": + value := x.Identifier + return protoreflect.ValueOfString(value) + case "canto.epochs.v1.EpochInfo.start_time": + value := x.StartTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.duration": + value := x.Duration + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.current_epoch": + value := x.CurrentEpoch + return protoreflect.ValueOfInt64(value) + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + value := x.CurrentEpochStartTime + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + value := x.EpochCountingStarted + return protoreflect.ValueOfBool(value) + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + value := x.CurrentEpochStartHeight + return protoreflect.ValueOfInt64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EpochInfo) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.EpochInfo.identifier": + x.Identifier = value.Interface().(string) + case "canto.epochs.v1.EpochInfo.start_time": + x.StartTime = value.Message().Interface().(*timestamppb.Timestamp) + case "canto.epochs.v1.EpochInfo.duration": + x.Duration = value.Message().Interface().(*durationpb.Duration) + case "canto.epochs.v1.EpochInfo.current_epoch": + x.CurrentEpoch = value.Int() + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + x.CurrentEpochStartTime = value.Message().Interface().(*timestamppb.Timestamp) + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + x.EpochCountingStarted = value.Bool() + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + x.CurrentEpochStartHeight = value.Int() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EpochInfo) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.EpochInfo.start_time": + if x.StartTime == nil { + x.StartTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.StartTime.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.duration": + if x.Duration == nil { + x.Duration = new(durationpb.Duration) + } + return protoreflect.ValueOfMessage(x.Duration.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + if x.CurrentEpochStartTime == nil { + x.CurrentEpochStartTime = new(timestamppb.Timestamp) + } + return protoreflect.ValueOfMessage(x.CurrentEpochStartTime.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.identifier": + panic(fmt.Errorf("field identifier of message canto.epochs.v1.EpochInfo is not mutable")) + case "canto.epochs.v1.EpochInfo.current_epoch": + panic(fmt.Errorf("field current_epoch of message canto.epochs.v1.EpochInfo is not mutable")) + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + panic(fmt.Errorf("field epoch_counting_started of message canto.epochs.v1.EpochInfo is not mutable")) + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + panic(fmt.Errorf("field current_epoch_start_height of message canto.epochs.v1.EpochInfo is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_EpochInfo) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.EpochInfo.identifier": + return protoreflect.ValueOfString("") + case "canto.epochs.v1.EpochInfo.start_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.duration": + m := new(durationpb.Duration) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.current_epoch": + return protoreflect.ValueOfInt64(int64(0)) + case "canto.epochs.v1.EpochInfo.current_epoch_start_time": + m := new(timestamppb.Timestamp) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.epochs.v1.EpochInfo.epoch_counting_started": + return protoreflect.ValueOfBool(false) + case "canto.epochs.v1.EpochInfo.current_epoch_start_height": + return protoreflect.ValueOfInt64(int64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.EpochInfo")) + } + panic(fmt.Errorf("message canto.epochs.v1.EpochInfo does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_EpochInfo) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.EpochInfo", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_EpochInfo) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_EpochInfo) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_EpochInfo) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_EpochInfo) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*EpochInfo) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Identifier) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.StartTime != nil { + l = options.Size(x.StartTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Duration != nil { + l = options.Size(x.Duration) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.CurrentEpoch != 0 { + n += 1 + runtime.Sov(uint64(x.CurrentEpoch)) + } + if x.CurrentEpochStartTime != nil { + l = options.Size(x.CurrentEpochStartTime) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.EpochCountingStarted { + n += 2 + } + if x.CurrentEpochStartHeight != 0 { + n += 1 + runtime.Sov(uint64(x.CurrentEpochStartHeight)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*EpochInfo) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.CurrentEpochStartHeight != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpochStartHeight)) + i-- + dAtA[i] = 0x38 + } + if x.EpochCountingStarted { + i-- + if x.EpochCountingStarted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if x.CurrentEpochStartTime != nil { + encoded, err := options.Marshal(x.CurrentEpochStartTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + if x.CurrentEpoch != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpoch)) + i-- + dAtA[i] = 0x20 + } + if x.Duration != nil { + encoded, err := options.Marshal(x.Duration) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if x.StartTime != nil { + encoded, err := options.Marshal(x.StartTime) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Identifier) > 0 { + i -= len(x.Identifier) + copy(dAtA[i:], x.Identifier) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*EpochInfo) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EpochInfo: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: EpochInfo: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.StartTime == nil { + x.StartTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.StartTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Duration == nil { + x.Duration = &durationpb.Duration{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Duration); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CurrentEpoch", wireType) + } + x.CurrentEpoch = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.CurrentEpoch |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CurrentEpochStartTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.CurrentEpochStartTime == nil { + x.CurrentEpochStartTime = ×tamppb.Timestamp{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CurrentEpochStartTime); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EpochCountingStarted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EpochCountingStarted = bool(v != 0) + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CurrentEpochStartHeight", wireType) + } + x.CurrentEpochStartHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.CurrentEpochStartHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_GenesisState_1_list)(nil) + +type _GenesisState_1_list struct { + list *[]*EpochInfo +} + +func (x *_GenesisState_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*EpochInfo) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*EpochInfo) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_1_list) AppendMutable() protoreflect.Value { + v := new(EpochInfo) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_1_list) NewElement() protoreflect.Value { + v := new(EpochInfo) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_epochs protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_genesis_proto_init() + md_GenesisState = File_canto_epochs_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_epochs = md_GenesisState.Fields().ByName("epochs") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_genesis_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Epochs) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_1_list{list: &x.Epochs}) + if !f(fd_GenesisState_epochs, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + return len(x.Epochs) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + x.Epochs = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + if len(x.Epochs) == 0 { + return protoreflect.ValueOfList(&_GenesisState_1_list{}) + } + listValue := &_GenesisState_1_list{list: &x.Epochs} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + lv := value.List() + clv := lv.(*_GenesisState_1_list) + x.Epochs = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + if x.Epochs == nil { + x.Epochs = []*EpochInfo{} + } + value := &_GenesisState_1_list{list: &x.Epochs} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.GenesisState.epochs": + list := []*EpochInfo{} + return protoreflect.ValueOfList(&_GenesisState_1_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.epochs.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Epochs) > 0 { + for _, e := range x.Epochs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Epochs) > 0 { + for iNdEx := len(x.Epochs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Epochs[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Epochs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Epochs = append(x.Epochs, &EpochInfo{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Epochs[len(x.Epochs)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/epochs/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type EpochInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` + StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + Duration *durationpb.Duration `protobuf:"bytes,3,opt,name=duration,proto3" json:"duration,omitempty"` + CurrentEpoch int64 `protobuf:"varint,4,opt,name=current_epoch,json=currentEpoch,proto3" json:"current_epoch,omitempty"` + CurrentEpochStartTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=current_epoch_start_time,json=currentEpochStartTime,proto3" json:"current_epoch_start_time,omitempty"` + EpochCountingStarted bool `protobuf:"varint,6,opt,name=epoch_counting_started,json=epochCountingStarted,proto3" json:"epoch_counting_started,omitempty"` + CurrentEpochStartHeight int64 `protobuf:"varint,7,opt,name=current_epoch_start_height,json=currentEpochStartHeight,proto3" json:"current_epoch_start_height,omitempty"` +} + +func (x *EpochInfo) Reset() { + *x = EpochInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EpochInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EpochInfo) ProtoMessage() {} + +// Deprecated: Use EpochInfo.ProtoReflect.Descriptor instead. +func (*EpochInfo) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *EpochInfo) GetIdentifier() string { + if x != nil { + return x.Identifier + } + return "" +} + +func (x *EpochInfo) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *EpochInfo) GetDuration() *durationpb.Duration { + if x != nil { + return x.Duration + } + return nil +} + +func (x *EpochInfo) GetCurrentEpoch() int64 { + if x != nil { + return x.CurrentEpoch + } + return 0 +} + +func (x *EpochInfo) GetCurrentEpochStartTime() *timestamppb.Timestamp { + if x != nil { + return x.CurrentEpochStartTime + } + return nil +} + +func (x *EpochInfo) GetEpochCountingStarted() bool { + if x != nil { + return x.EpochCountingStarted + } + return false +} + +func (x *EpochInfo) GetCurrentEpochStartHeight() int64 { + if x != nil { + return x.CurrentEpochStartHeight + } + return 0 +} + +// GenesisState defines the epochs module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Epochs []*EpochInfo `protobuf:"bytes,1,rep,name=epochs,proto3" json:"epochs,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *GenesisState) GetEpochs() []*EpochInfo { + if x != nil { + return x.Epochs + } + return nil +} + +var File_canto_epochs_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_epochs_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, + 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8a, 0x04, 0x0a, 0x09, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x11, 0x79, + 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, + 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x68, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x31, 0xc8, 0xde, + 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x12, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x6f, + 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0xf2, 0xde, 0x1f, 0x0f, 0x79, 0x61, 0x6d, 0x6c, + 0x3a, 0x22, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0xdf, 0x1f, 0x01, 0x52, + 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x80, + 0x01, 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x2b, 0xc8, + 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x1f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x90, 0xdf, 0x1f, 0x01, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0xac, + 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, + 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x3a, 0x3a, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_epochs_v1_genesis_proto_rawDescOnce sync.Once + file_canto_epochs_v1_genesis_proto_rawDescData = file_canto_epochs_v1_genesis_proto_rawDesc +) + +func file_canto_epochs_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_epochs_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_epochs_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_epochs_v1_genesis_proto_rawDescData) + }) + return file_canto_epochs_v1_genesis_proto_rawDescData +} + +var file_canto_epochs_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_epochs_v1_genesis_proto_goTypes = []interface{}{ + (*EpochInfo)(nil), // 0: canto.epochs.v1.EpochInfo + (*GenesisState)(nil), // 1: canto.epochs.v1.GenesisState + (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 3: google.protobuf.Duration +} +var file_canto_epochs_v1_genesis_proto_depIdxs = []int32{ + 2, // 0: canto.epochs.v1.EpochInfo.start_time:type_name -> google.protobuf.Timestamp + 3, // 1: canto.epochs.v1.EpochInfo.duration:type_name -> google.protobuf.Duration + 2, // 2: canto.epochs.v1.EpochInfo.current_epoch_start_time:type_name -> google.protobuf.Timestamp + 0, // 3: canto.epochs.v1.GenesisState.epochs:type_name -> canto.epochs.v1.EpochInfo + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_canto_epochs_v1_genesis_proto_init() } +func file_canto_epochs_v1_genesis_proto_init() { + if File_canto_epochs_v1_genesis_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_epochs_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EpochInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_epochs_v1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_epochs_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_epochs_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_epochs_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_epochs_v1_genesis_proto_msgTypes, + }.Build() + File_canto_epochs_v1_genesis_proto = out.File + file_canto_epochs_v1_genesis_proto_rawDesc = nil + file_canto_epochs_v1_genesis_proto_goTypes = nil + file_canto_epochs_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/epochs/v1/query.pulsar.go b/api/canto/epochs/v1/query.pulsar.go new file mode 100644 index 000000000..02960f915 --- /dev/null +++ b/api/canto/epochs/v1/query.pulsar.go @@ -0,0 +1,2191 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package epochsv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryEpochsInfoRequest protoreflect.MessageDescriptor + fd_QueryEpochsInfoRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_query_proto_init() + md_QueryEpochsInfoRequest = File_canto_epochs_v1_query_proto.Messages().ByName("QueryEpochsInfoRequest") + fd_QueryEpochsInfoRequest_pagination = md_QueryEpochsInfoRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryEpochsInfoRequest)(nil) + +type fastReflection_QueryEpochsInfoRequest QueryEpochsInfoRequest + +func (x *QueryEpochsInfoRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryEpochsInfoRequest)(x) +} + +func (x *QueryEpochsInfoRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryEpochsInfoRequest_messageType fastReflection_QueryEpochsInfoRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryEpochsInfoRequest_messageType{} + +type fastReflection_QueryEpochsInfoRequest_messageType struct{} + +func (x fastReflection_QueryEpochsInfoRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryEpochsInfoRequest)(nil) +} +func (x fastReflection_QueryEpochsInfoRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryEpochsInfoRequest) +} +func (x fastReflection_QueryEpochsInfoRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochsInfoRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryEpochsInfoRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochsInfoRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryEpochsInfoRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryEpochsInfoRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryEpochsInfoRequest) New() protoreflect.Message { + return new(fastReflection_QueryEpochsInfoRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryEpochsInfoRequest) Interface() protoreflect.ProtoMessage { + return (*QueryEpochsInfoRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryEpochsInfoRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryEpochsInfoRequest_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryEpochsInfoRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryEpochsInfoRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryEpochsInfoRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryEpochsInfoRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.QueryEpochsInfoRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryEpochsInfoRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryEpochsInfoRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryEpochsInfoRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryEpochsInfoRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochsInfoRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochsInfoRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochsInfoRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochsInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryEpochsInfoResponse_1_list)(nil) + +type _QueryEpochsInfoResponse_1_list struct { + list *[]*EpochInfo +} + +func (x *_QueryEpochsInfoResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryEpochsInfoResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryEpochsInfoResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*EpochInfo) + (*x.list)[i] = concreteValue +} + +func (x *_QueryEpochsInfoResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*EpochInfo) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryEpochsInfoResponse_1_list) AppendMutable() protoreflect.Value { + v := new(EpochInfo) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryEpochsInfoResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryEpochsInfoResponse_1_list) NewElement() protoreflect.Value { + v := new(EpochInfo) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryEpochsInfoResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryEpochsInfoResponse protoreflect.MessageDescriptor + fd_QueryEpochsInfoResponse_epochs protoreflect.FieldDescriptor + fd_QueryEpochsInfoResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_query_proto_init() + md_QueryEpochsInfoResponse = File_canto_epochs_v1_query_proto.Messages().ByName("QueryEpochsInfoResponse") + fd_QueryEpochsInfoResponse_epochs = md_QueryEpochsInfoResponse.Fields().ByName("epochs") + fd_QueryEpochsInfoResponse_pagination = md_QueryEpochsInfoResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryEpochsInfoResponse)(nil) + +type fastReflection_QueryEpochsInfoResponse QueryEpochsInfoResponse + +func (x *QueryEpochsInfoResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryEpochsInfoResponse)(x) +} + +func (x *QueryEpochsInfoResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryEpochsInfoResponse_messageType fastReflection_QueryEpochsInfoResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryEpochsInfoResponse_messageType{} + +type fastReflection_QueryEpochsInfoResponse_messageType struct{} + +func (x fastReflection_QueryEpochsInfoResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryEpochsInfoResponse)(nil) +} +func (x fastReflection_QueryEpochsInfoResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryEpochsInfoResponse) +} +func (x fastReflection_QueryEpochsInfoResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochsInfoResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryEpochsInfoResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochsInfoResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryEpochsInfoResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryEpochsInfoResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryEpochsInfoResponse) New() protoreflect.Message { + return new(fastReflection_QueryEpochsInfoResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryEpochsInfoResponse) Interface() protoreflect.ProtoMessage { + return (*QueryEpochsInfoResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryEpochsInfoResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Epochs) != 0 { + value := protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{list: &x.Epochs}) + if !f(fd_QueryEpochsInfoResponse_epochs, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryEpochsInfoResponse_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryEpochsInfoResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + return len(x.Epochs) != 0 + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + x.Epochs = nil + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryEpochsInfoResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + if len(x.Epochs) == 0 { + return protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{}) + } + listValue := &_QueryEpochsInfoResponse_1_list{list: &x.Epochs} + return protoreflect.ValueOfList(listValue) + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + lv := value.List() + clv := lv.(*_QueryEpochsInfoResponse_1_list) + x.Epochs = *clv.list + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + if x.Epochs == nil { + x.Epochs = []*EpochInfo{} + } + value := &_QueryEpochsInfoResponse_1_list{list: &x.Epochs} + return protoreflect.ValueOfList(value) + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryEpochsInfoResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryEpochsInfoResponse.epochs": + list := []*EpochInfo{} + return protoreflect.ValueOfList(&_QueryEpochsInfoResponse_1_list{list: &list}) + case "canto.epochs.v1.QueryEpochsInfoResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryEpochsInfoResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryEpochsInfoResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryEpochsInfoResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.QueryEpochsInfoResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryEpochsInfoResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochsInfoResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryEpochsInfoResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryEpochsInfoResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryEpochsInfoResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Epochs) > 0 { + for _, e := range x.Epochs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochsInfoResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Epochs) > 0 { + for iNdEx := len(x.Epochs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Epochs[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochsInfoResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochsInfoResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochsInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Epochs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Epochs = append(x.Epochs, &EpochInfo{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Epochs[len(x.Epochs)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCurrentEpochRequest protoreflect.MessageDescriptor + fd_QueryCurrentEpochRequest_identifier protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_query_proto_init() + md_QueryCurrentEpochRequest = File_canto_epochs_v1_query_proto.Messages().ByName("QueryCurrentEpochRequest") + fd_QueryCurrentEpochRequest_identifier = md_QueryCurrentEpochRequest.Fields().ByName("identifier") +} + +var _ protoreflect.Message = (*fastReflection_QueryCurrentEpochRequest)(nil) + +type fastReflection_QueryCurrentEpochRequest QueryCurrentEpochRequest + +func (x *QueryCurrentEpochRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCurrentEpochRequest)(x) +} + +func (x *QueryCurrentEpochRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCurrentEpochRequest_messageType fastReflection_QueryCurrentEpochRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryCurrentEpochRequest_messageType{} + +type fastReflection_QueryCurrentEpochRequest_messageType struct{} + +func (x fastReflection_QueryCurrentEpochRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCurrentEpochRequest)(nil) +} +func (x fastReflection_QueryCurrentEpochRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCurrentEpochRequest) +} +func (x fastReflection_QueryCurrentEpochRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCurrentEpochRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCurrentEpochRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCurrentEpochRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCurrentEpochRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryCurrentEpochRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCurrentEpochRequest) New() protoreflect.Message { + return new(fastReflection_QueryCurrentEpochRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCurrentEpochRequest) Interface() protoreflect.ProtoMessage { + return (*QueryCurrentEpochRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCurrentEpochRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Identifier != "" { + value := protoreflect.ValueOfString(x.Identifier) + if !f(fd_QueryCurrentEpochRequest_identifier, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCurrentEpochRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + return x.Identifier != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + x.Identifier = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCurrentEpochRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + value := x.Identifier + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + x.Identifier = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + panic(fmt.Errorf("field identifier of message canto.epochs.v1.QueryCurrentEpochRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCurrentEpochRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochRequest.identifier": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochRequest")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCurrentEpochRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.QueryCurrentEpochRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCurrentEpochRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCurrentEpochRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCurrentEpochRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCurrentEpochRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Identifier) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCurrentEpochRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Identifier) > 0 { + i -= len(x.Identifier) + copy(dAtA[i:], x.Identifier) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Identifier))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCurrentEpochRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCurrentEpochRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCurrentEpochRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Identifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Identifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCurrentEpochResponse protoreflect.MessageDescriptor + fd_QueryCurrentEpochResponse_current_epoch protoreflect.FieldDescriptor +) + +func init() { + file_canto_epochs_v1_query_proto_init() + md_QueryCurrentEpochResponse = File_canto_epochs_v1_query_proto.Messages().ByName("QueryCurrentEpochResponse") + fd_QueryCurrentEpochResponse_current_epoch = md_QueryCurrentEpochResponse.Fields().ByName("current_epoch") +} + +var _ protoreflect.Message = (*fastReflection_QueryCurrentEpochResponse)(nil) + +type fastReflection_QueryCurrentEpochResponse QueryCurrentEpochResponse + +func (x *QueryCurrentEpochResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCurrentEpochResponse)(x) +} + +func (x *QueryCurrentEpochResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_epochs_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCurrentEpochResponse_messageType fastReflection_QueryCurrentEpochResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryCurrentEpochResponse_messageType{} + +type fastReflection_QueryCurrentEpochResponse_messageType struct{} + +func (x fastReflection_QueryCurrentEpochResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCurrentEpochResponse)(nil) +} +func (x fastReflection_QueryCurrentEpochResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCurrentEpochResponse) +} +func (x fastReflection_QueryCurrentEpochResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCurrentEpochResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCurrentEpochResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCurrentEpochResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCurrentEpochResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryCurrentEpochResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCurrentEpochResponse) New() protoreflect.Message { + return new(fastReflection_QueryCurrentEpochResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCurrentEpochResponse) Interface() protoreflect.ProtoMessage { + return (*QueryCurrentEpochResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCurrentEpochResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.CurrentEpoch != int64(0) { + value := protoreflect.ValueOfInt64(x.CurrentEpoch) + if !f(fd_QueryCurrentEpochResponse_current_epoch, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCurrentEpochResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + return x.CurrentEpoch != int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + x.CurrentEpoch = int64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCurrentEpochResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + value := x.CurrentEpoch + return protoreflect.ValueOfInt64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + x.CurrentEpoch = value.Int() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + panic(fmt.Errorf("field current_epoch of message canto.epochs.v1.QueryCurrentEpochResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCurrentEpochResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.epochs.v1.QueryCurrentEpochResponse.current_epoch": + return protoreflect.ValueOfInt64(int64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.epochs.v1.QueryCurrentEpochResponse")) + } + panic(fmt.Errorf("message canto.epochs.v1.QueryCurrentEpochResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCurrentEpochResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.epochs.v1.QueryCurrentEpochResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCurrentEpochResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCurrentEpochResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCurrentEpochResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCurrentEpochResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCurrentEpochResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.CurrentEpoch != 0 { + n += 1 + runtime.Sov(uint64(x.CurrentEpoch)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCurrentEpochResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.CurrentEpoch != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.CurrentEpoch)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCurrentEpochResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCurrentEpochResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCurrentEpochResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CurrentEpoch", wireType) + } + x.CurrentEpoch = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.CurrentEpoch |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/epochs/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type QueryEpochsInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryEpochsInfoRequest) Reset() { + *x = QueryEpochsInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryEpochsInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryEpochsInfoRequest) ProtoMessage() {} + +// Deprecated: Use QueryEpochsInfoRequest.ProtoReflect.Descriptor instead. +func (*QueryEpochsInfoRequest) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_query_proto_rawDescGZIP(), []int{0} +} + +func (x *QueryEpochsInfoRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +type QueryEpochsInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Epochs []*EpochInfo `protobuf:"bytes,1,rep,name=epochs,proto3" json:"epochs,omitempty"` + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryEpochsInfoResponse) Reset() { + *x = QueryEpochsInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryEpochsInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryEpochsInfoResponse) ProtoMessage() {} + +// Deprecated: Use QueryEpochsInfoResponse.ProtoReflect.Descriptor instead. +func (*QueryEpochsInfoResponse) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryEpochsInfoResponse) GetEpochs() []*EpochInfo { + if x != nil { + return x.Epochs + } + return nil +} + +func (x *QueryEpochsInfoResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type QueryCurrentEpochRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` +} + +func (x *QueryCurrentEpochRequest) Reset() { + *x = QueryCurrentEpochRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCurrentEpochRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCurrentEpochRequest) ProtoMessage() {} + +// Deprecated: Use QueryCurrentEpochRequest.ProtoReflect.Descriptor instead. +func (*QueryCurrentEpochRequest) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryCurrentEpochRequest) GetIdentifier() string { + if x != nil { + return x.Identifier + } + return "" +} + +type QueryCurrentEpochResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CurrentEpoch int64 `protobuf:"varint,1,opt,name=current_epoch,json=currentEpoch,proto3" json:"current_epoch,omitempty"` +} + +func (x *QueryCurrentEpochResponse) Reset() { + *x = QueryCurrentEpochResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_epochs_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCurrentEpochResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCurrentEpochResponse) ProtoMessage() {} + +// Deprecated: Use QueryCurrentEpochResponse.ProtoReflect.Descriptor instead. +func (*QueryCurrentEpochResponse) Descriptor() ([]byte, []int) { + return file_canto_epochs_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryCurrentEpochResponse) GetCurrentEpoch() int64 { + if x != nil { + return x.CurrentEpoch + } + return 0 +} + +var File_canto_epochs_v1_query_proto protoreflect.FileDescriptor + +var file_canto_epochs_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x14, + 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x60, 0x0a, + 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x9c, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, + 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x40, 0x0a, 0x19, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x32, 0x9a, 0x02, 0x0a, + 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, + 0x12, 0x17, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x0c, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0xaa, 0x01, 0x0a, 0x13, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, 0x76, + 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x29, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2f, 0x76, + 0x31, 0x3b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, + 0xaa, 0x02, 0x0f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x0f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_epochs_v1_query_proto_rawDescOnce sync.Once + file_canto_epochs_v1_query_proto_rawDescData = file_canto_epochs_v1_query_proto_rawDesc +) + +func file_canto_epochs_v1_query_proto_rawDescGZIP() []byte { + file_canto_epochs_v1_query_proto_rawDescOnce.Do(func() { + file_canto_epochs_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_epochs_v1_query_proto_rawDescData) + }) + return file_canto_epochs_v1_query_proto_rawDescData +} + +var file_canto_epochs_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_epochs_v1_query_proto_goTypes = []interface{}{ + (*QueryEpochsInfoRequest)(nil), // 0: canto.epochs.v1.QueryEpochsInfoRequest + (*QueryEpochsInfoResponse)(nil), // 1: canto.epochs.v1.QueryEpochsInfoResponse + (*QueryCurrentEpochRequest)(nil), // 2: canto.epochs.v1.QueryCurrentEpochRequest + (*QueryCurrentEpochResponse)(nil), // 3: canto.epochs.v1.QueryCurrentEpochResponse + (*v1beta1.PageRequest)(nil), // 4: cosmos.base.query.v1beta1.PageRequest + (*EpochInfo)(nil), // 5: canto.epochs.v1.EpochInfo + (*v1beta1.PageResponse)(nil), // 6: cosmos.base.query.v1beta1.PageResponse +} +var file_canto_epochs_v1_query_proto_depIdxs = []int32{ + 4, // 0: canto.epochs.v1.QueryEpochsInfoRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 5, // 1: canto.epochs.v1.QueryEpochsInfoResponse.epochs:type_name -> canto.epochs.v1.EpochInfo + 6, // 2: canto.epochs.v1.QueryEpochsInfoResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 0, // 3: canto.epochs.v1.Query.EpochInfos:input_type -> canto.epochs.v1.QueryEpochsInfoRequest + 2, // 4: canto.epochs.v1.Query.CurrentEpoch:input_type -> canto.epochs.v1.QueryCurrentEpochRequest + 1, // 5: canto.epochs.v1.Query.EpochInfos:output_type -> canto.epochs.v1.QueryEpochsInfoResponse + 3, // 6: canto.epochs.v1.Query.CurrentEpoch:output_type -> canto.epochs.v1.QueryCurrentEpochResponse + 5, // [5:7] is the sub-list for method output_type + 3, // [3:5] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_canto_epochs_v1_query_proto_init() } +func file_canto_epochs_v1_query_proto_init() { + if File_canto_epochs_v1_query_proto != nil { + return + } + file_canto_epochs_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_epochs_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryEpochsInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_epochs_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryEpochsInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_epochs_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCurrentEpochRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_epochs_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCurrentEpochResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_epochs_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_epochs_v1_query_proto_goTypes, + DependencyIndexes: file_canto_epochs_v1_query_proto_depIdxs, + MessageInfos: file_canto_epochs_v1_query_proto_msgTypes, + }.Build() + File_canto_epochs_v1_query_proto = out.File + file_canto_epochs_v1_query_proto_rawDesc = nil + file_canto_epochs_v1_query_proto_goTypes = nil + file_canto_epochs_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/epochs/v1/query_grpc.pb.go b/api/canto/epochs/v1/query_grpc.pb.go new file mode 100644 index 000000000..47d1927bd --- /dev/null +++ b/api/canto/epochs/v1/query_grpc.pb.go @@ -0,0 +1,150 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/epochs/v1/query.proto + +package epochsv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_EpochInfos_FullMethodName = "/canto.epochs.v1.Query/EpochInfos" + Query_CurrentEpoch_FullMethodName = "/canto.epochs.v1.Query/CurrentEpoch" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // EpochInfos provide running epochInfos + EpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error) + // CurrentEpoch provide current epoch of specified identifier + CurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) EpochInfos(ctx context.Context, in *QueryEpochsInfoRequest, opts ...grpc.CallOption) (*QueryEpochsInfoResponse, error) { + out := new(QueryEpochsInfoResponse) + err := c.cc.Invoke(ctx, Query_EpochInfos_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) CurrentEpoch(ctx context.Context, in *QueryCurrentEpochRequest, opts ...grpc.CallOption) (*QueryCurrentEpochResponse, error) { + out := new(QueryCurrentEpochResponse) + err := c.cc.Invoke(ctx, Query_CurrentEpoch_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // EpochInfos provide running epochInfos + EpochInfos(context.Context, *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error) + // CurrentEpoch provide current epoch of specified identifier + CurrentEpoch(context.Context, *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) EpochInfos(context.Context, *QueryEpochsInfoRequest) (*QueryEpochsInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EpochInfos not implemented") +} +func (UnimplementedQueryServer) CurrentEpoch(context.Context, *QueryCurrentEpochRequest) (*QueryCurrentEpochResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CurrentEpoch not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_EpochInfos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryEpochsInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).EpochInfos(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_EpochInfos_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).EpochInfos(ctx, req.(*QueryEpochsInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_CurrentEpoch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCurrentEpochRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CurrentEpoch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_CurrentEpoch_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CurrentEpoch(ctx, req.(*QueryCurrentEpochRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.epochs.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "EpochInfos", + Handler: _Query_EpochInfos_Handler, + }, + { + MethodName: "CurrentEpoch", + Handler: _Query_CurrentEpoch_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/epochs/v1/query.proto", +} diff --git a/api/canto/erc20/v1/erc20.pulsar.go b/api/canto/erc20/v1/erc20.pulsar.go new file mode 100644 index 000000000..be69177a8 --- /dev/null +++ b/api/canto/erc20/v1/erc20.pulsar.go @@ -0,0 +1,2731 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package erc20v1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_TokenPair protoreflect.MessageDescriptor + fd_TokenPair_erc20_address protoreflect.FieldDescriptor + fd_TokenPair_denom protoreflect.FieldDescriptor + fd_TokenPair_enabled protoreflect.FieldDescriptor + fd_TokenPair_contract_owner protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_TokenPair = File_canto_erc20_v1_erc20_proto.Messages().ByName("TokenPair") + fd_TokenPair_erc20_address = md_TokenPair.Fields().ByName("erc20_address") + fd_TokenPair_denom = md_TokenPair.Fields().ByName("denom") + fd_TokenPair_enabled = md_TokenPair.Fields().ByName("enabled") + fd_TokenPair_contract_owner = md_TokenPair.Fields().ByName("contract_owner") +} + +var _ protoreflect.Message = (*fastReflection_TokenPair)(nil) + +type fastReflection_TokenPair TokenPair + +func (x *TokenPair) ProtoReflect() protoreflect.Message { + return (*fastReflection_TokenPair)(x) +} + +func (x *TokenPair) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_TokenPair_messageType fastReflection_TokenPair_messageType +var _ protoreflect.MessageType = fastReflection_TokenPair_messageType{} + +type fastReflection_TokenPair_messageType struct{} + +func (x fastReflection_TokenPair_messageType) Zero() protoreflect.Message { + return (*fastReflection_TokenPair)(nil) +} +func (x fastReflection_TokenPair_messageType) New() protoreflect.Message { + return new(fastReflection_TokenPair) +} +func (x fastReflection_TokenPair_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TokenPair +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TokenPair) Descriptor() protoreflect.MessageDescriptor { + return md_TokenPair +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TokenPair) Type() protoreflect.MessageType { + return _fastReflection_TokenPair_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TokenPair) New() protoreflect.Message { + return new(fastReflection_TokenPair) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TokenPair) Interface() protoreflect.ProtoMessage { + return (*TokenPair)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TokenPair) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Erc20Address != "" { + value := protoreflect.ValueOfString(x.Erc20Address) + if !f(fd_TokenPair_erc20_address, value) { + return + } + } + if x.Denom != "" { + value := protoreflect.ValueOfString(x.Denom) + if !f(fd_TokenPair_denom, value) { + return + } + } + if x.Enabled != false { + value := protoreflect.ValueOfBool(x.Enabled) + if !f(fd_TokenPair_enabled, value) { + return + } + } + if x.ContractOwner != 0 { + value := protoreflect.ValueOfEnum((protoreflect.EnumNumber)(x.ContractOwner)) + if !f(fd_TokenPair_contract_owner, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TokenPair) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + return x.Erc20Address != "" + case "canto.erc20.v1.TokenPair.denom": + return x.Denom != "" + case "canto.erc20.v1.TokenPair.enabled": + return x.Enabled != false + case "canto.erc20.v1.TokenPair.contract_owner": + return x.ContractOwner != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenPair) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + x.Erc20Address = "" + case "canto.erc20.v1.TokenPair.denom": + x.Denom = "" + case "canto.erc20.v1.TokenPair.enabled": + x.Enabled = false + case "canto.erc20.v1.TokenPair.contract_owner": + x.ContractOwner = 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TokenPair) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + value := x.Erc20Address + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.TokenPair.denom": + value := x.Denom + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.TokenPair.enabled": + value := x.Enabled + return protoreflect.ValueOfBool(value) + case "canto.erc20.v1.TokenPair.contract_owner": + value := x.ContractOwner + return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value)) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenPair) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + x.Erc20Address = value.Interface().(string) + case "canto.erc20.v1.TokenPair.denom": + x.Denom = value.Interface().(string) + case "canto.erc20.v1.TokenPair.enabled": + x.Enabled = value.Bool() + case "canto.erc20.v1.TokenPair.contract_owner": + x.ContractOwner = (Owner)(value.Enum()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenPair) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + panic(fmt.Errorf("field erc20_address of message canto.erc20.v1.TokenPair is not mutable")) + case "canto.erc20.v1.TokenPair.denom": + panic(fmt.Errorf("field denom of message canto.erc20.v1.TokenPair is not mutable")) + case "canto.erc20.v1.TokenPair.enabled": + panic(fmt.Errorf("field enabled of message canto.erc20.v1.TokenPair is not mutable")) + case "canto.erc20.v1.TokenPair.contract_owner": + panic(fmt.Errorf("field contract_owner of message canto.erc20.v1.TokenPair is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TokenPair) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.TokenPair.erc20_address": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.TokenPair.denom": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.TokenPair.enabled": + return protoreflect.ValueOfBool(false) + case "canto.erc20.v1.TokenPair.contract_owner": + return protoreflect.ValueOfEnum(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.TokenPair")) + } + panic(fmt.Errorf("message canto.erc20.v1.TokenPair does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TokenPair) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.TokenPair", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TokenPair) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TokenPair) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TokenPair) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TokenPair) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TokenPair) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Erc20Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Denom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Enabled { + n += 2 + } + if x.ContractOwner != 0 { + n += 1 + runtime.Sov(uint64(x.ContractOwner)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TokenPair) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.ContractOwner != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.ContractOwner)) + i-- + dAtA[i] = 0x20 + } + if x.Enabled { + i-- + if x.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(x.Denom) > 0 { + i -= len(x.Denom) + copy(dAtA[i:], x.Denom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + i-- + dAtA[i] = 0x12 + } + if len(x.Erc20Address) > 0 { + i -= len(x.Erc20Address) + copy(dAtA[i:], x.Erc20Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TokenPair) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenPair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TokenPair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Erc20Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Enabled = bool(v != 0) + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ContractOwner", wireType) + } + x.ContractOwner = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.ContractOwner |= Owner(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_RegisterCoinProposal protoreflect.MessageDescriptor + fd_RegisterCoinProposal_title protoreflect.FieldDescriptor + fd_RegisterCoinProposal_description protoreflect.FieldDescriptor + fd_RegisterCoinProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_RegisterCoinProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterCoinProposal") + fd_RegisterCoinProposal_title = md_RegisterCoinProposal.Fields().ByName("title") + fd_RegisterCoinProposal_description = md_RegisterCoinProposal.Fields().ByName("description") + fd_RegisterCoinProposal_metadata = md_RegisterCoinProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_RegisterCoinProposal)(nil) + +type fastReflection_RegisterCoinProposal RegisterCoinProposal + +func (x *RegisterCoinProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_RegisterCoinProposal)(x) +} + +func (x *RegisterCoinProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_RegisterCoinProposal_messageType fastReflection_RegisterCoinProposal_messageType +var _ protoreflect.MessageType = fastReflection_RegisterCoinProposal_messageType{} + +type fastReflection_RegisterCoinProposal_messageType struct{} + +func (x fastReflection_RegisterCoinProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_RegisterCoinProposal)(nil) +} +func (x fastReflection_RegisterCoinProposal_messageType) New() protoreflect.Message { + return new(fastReflection_RegisterCoinProposal) +} +func (x fastReflection_RegisterCoinProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterCoinProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_RegisterCoinProposal) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterCoinProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_RegisterCoinProposal) Type() protoreflect.MessageType { + return _fastReflection_RegisterCoinProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_RegisterCoinProposal) New() protoreflect.Message { + return new(fastReflection_RegisterCoinProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_RegisterCoinProposal) Interface() protoreflect.ProtoMessage { + return (*RegisterCoinProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_RegisterCoinProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_RegisterCoinProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_RegisterCoinProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_RegisterCoinProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_RegisterCoinProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + return x.Title != "" + case "canto.erc20.v1.RegisterCoinProposal.description": + return x.Description != "" + case "canto.erc20.v1.RegisterCoinProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + x.Title = "" + case "canto.erc20.v1.RegisterCoinProposal.description": + x.Description = "" + case "canto.erc20.v1.RegisterCoinProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_RegisterCoinProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterCoinProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterCoinProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.RegisterCoinProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.RegisterCoinProposal.metadata": + x.Metadata = value.Message().Interface().(*v1beta1.Metadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(v1beta1.Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.erc20.v1.RegisterCoinProposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterCoinProposal is not mutable")) + case "canto.erc20.v1.RegisterCoinProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterCoinProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_RegisterCoinProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterCoinProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterCoinProposal.metadata": + m := new(v1beta1.Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_RegisterCoinProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterCoinProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_RegisterCoinProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_RegisterCoinProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_RegisterCoinProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &v1beta1.Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_RegisterERC20Proposal protoreflect.MessageDescriptor + fd_RegisterERC20Proposal_title protoreflect.FieldDescriptor + fd_RegisterERC20Proposal_description protoreflect.FieldDescriptor + fd_RegisterERC20Proposal_erc20address protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_RegisterERC20Proposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterERC20Proposal") + fd_RegisterERC20Proposal_title = md_RegisterERC20Proposal.Fields().ByName("title") + fd_RegisterERC20Proposal_description = md_RegisterERC20Proposal.Fields().ByName("description") + fd_RegisterERC20Proposal_erc20address = md_RegisterERC20Proposal.Fields().ByName("erc20address") +} + +var _ protoreflect.Message = (*fastReflection_RegisterERC20Proposal)(nil) + +type fastReflection_RegisterERC20Proposal RegisterERC20Proposal + +func (x *RegisterERC20Proposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_RegisterERC20Proposal)(x) +} + +func (x *RegisterERC20Proposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_RegisterERC20Proposal_messageType fastReflection_RegisterERC20Proposal_messageType +var _ protoreflect.MessageType = fastReflection_RegisterERC20Proposal_messageType{} + +type fastReflection_RegisterERC20Proposal_messageType struct{} + +func (x fastReflection_RegisterERC20Proposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_RegisterERC20Proposal)(nil) +} +func (x fastReflection_RegisterERC20Proposal_messageType) New() protoreflect.Message { + return new(fastReflection_RegisterERC20Proposal) +} +func (x fastReflection_RegisterERC20Proposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterERC20Proposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_RegisterERC20Proposal) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterERC20Proposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_RegisterERC20Proposal) Type() protoreflect.MessageType { + return _fastReflection_RegisterERC20Proposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_RegisterERC20Proposal) New() protoreflect.Message { + return new(fastReflection_RegisterERC20Proposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_RegisterERC20Proposal) Interface() protoreflect.ProtoMessage { + return (*RegisterERC20Proposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_RegisterERC20Proposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_RegisterERC20Proposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_RegisterERC20Proposal_description, value) { + return + } + } + if x.Erc20Address != "" { + value := protoreflect.ValueOfString(x.Erc20Address) + if !f(fd_RegisterERC20Proposal_erc20address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_RegisterERC20Proposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + return x.Title != "" + case "canto.erc20.v1.RegisterERC20Proposal.description": + return x.Description != "" + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + return x.Erc20Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + x.Title = "" + case "canto.erc20.v1.RegisterERC20Proposal.description": + x.Description = "" + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + x.Erc20Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_RegisterERC20Proposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterERC20Proposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + value := x.Erc20Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.RegisterERC20Proposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + x.Erc20Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.RegisterERC20Proposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + panic(fmt.Errorf("field erc20address of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_RegisterERC20Proposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterERC20Proposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_RegisterERC20Proposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterERC20Proposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_RegisterERC20Proposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_RegisterERC20Proposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_RegisterERC20Proposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Erc20Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Erc20Address) > 0 { + i -= len(x.Erc20Address) + copy(dAtA[i:], x.Erc20Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Address))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Erc20Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_ToggleTokenConversionProposal protoreflect.MessageDescriptor + fd_ToggleTokenConversionProposal_Title protoreflect.FieldDescriptor + fd_ToggleTokenConversionProposal_description protoreflect.FieldDescriptor + fd_ToggleTokenConversionProposal_token protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_ToggleTokenConversionProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("ToggleTokenConversionProposal") + fd_ToggleTokenConversionProposal_Title = md_ToggleTokenConversionProposal.Fields().ByName("Title") + fd_ToggleTokenConversionProposal_description = md_ToggleTokenConversionProposal.Fields().ByName("description") + fd_ToggleTokenConversionProposal_token = md_ToggleTokenConversionProposal.Fields().ByName("token") +} + +var _ protoreflect.Message = (*fastReflection_ToggleTokenConversionProposal)(nil) + +type fastReflection_ToggleTokenConversionProposal ToggleTokenConversionProposal + +func (x *ToggleTokenConversionProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_ToggleTokenConversionProposal)(x) +} + +func (x *ToggleTokenConversionProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_ToggleTokenConversionProposal_messageType fastReflection_ToggleTokenConversionProposal_messageType +var _ protoreflect.MessageType = fastReflection_ToggleTokenConversionProposal_messageType{} + +type fastReflection_ToggleTokenConversionProposal_messageType struct{} + +func (x fastReflection_ToggleTokenConversionProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_ToggleTokenConversionProposal)(nil) +} +func (x fastReflection_ToggleTokenConversionProposal_messageType) New() protoreflect.Message { + return new(fastReflection_ToggleTokenConversionProposal) +} +func (x fastReflection_ToggleTokenConversionProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ToggleTokenConversionProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ToggleTokenConversionProposal) Descriptor() protoreflect.MessageDescriptor { + return md_ToggleTokenConversionProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_ToggleTokenConversionProposal) Type() protoreflect.MessageType { + return _fastReflection_ToggleTokenConversionProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ToggleTokenConversionProposal) New() protoreflect.Message { + return new(fastReflection_ToggleTokenConversionProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ToggleTokenConversionProposal) Interface() protoreflect.ProtoMessage { + return (*ToggleTokenConversionProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_ToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_ToggleTokenConversionProposal_Title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_ToggleTokenConversionProposal_description, value) { + return + } + } + if x.Token != "" { + value := protoreflect.ValueOfString(x.Token) + if !f(fd_ToggleTokenConversionProposal_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_ToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + return x.Title != "" + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + return x.Description != "" + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + return x.Token != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + x.Title = "" + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + x.Description = "" + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + x.Token = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_ToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + value := x.Token + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + x.Token = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + panic(fmt.Errorf("field Title of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + panic(fmt.Errorf("field token of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_ToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_ToggleTokenConversionProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.ToggleTokenConversionProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_ToggleTokenConversionProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_ToggleTokenConversionProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_ToggleTokenConversionProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Token) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Token) > 0 { + i -= len(x.Token) + copy(dAtA[i:], x.Token) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/erc20/v1/erc20.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Owner enumerates the ownership of a ERC20 contract. +type Owner int32 + +const ( + // OWNER_UNSPECIFIED defines an invalid/undefined owner. + Owner_OWNER_UNSPECIFIED Owner = 0 + // OWNER_MODULE erc20 is owned by the erc20 module account. + Owner_OWNER_MODULE Owner = 1 + // EXTERNAL erc20 is owned by an external account. + Owner_OWNER_EXTERNAL Owner = 2 +) + +// Enum value maps for Owner. +var ( + Owner_name = map[int32]string{ + 0: "OWNER_UNSPECIFIED", + 1: "OWNER_MODULE", + 2: "OWNER_EXTERNAL", + } + Owner_value = map[string]int32{ + "OWNER_UNSPECIFIED": 0, + "OWNER_MODULE": 1, + "OWNER_EXTERNAL": 2, + } +) + +func (x Owner) Enum() *Owner { + p := new(Owner) + *p = x + return p +} + +func (x Owner) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Owner) Descriptor() protoreflect.EnumDescriptor { + return file_canto_erc20_v1_erc20_proto_enumTypes[0].Descriptor() +} + +func (Owner) Type() protoreflect.EnumType { + return &file_canto_erc20_v1_erc20_proto_enumTypes[0] +} + +func (x Owner) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Owner.Descriptor instead. +func (Owner) EnumDescriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{0} +} + +// TokenPair defines an instance that records a pairing consisting of a native +// +// Cosmos Coin and an ERC20 token address. +type TokenPair struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // address of ERC20 contract token + Erc20Address string `protobuf:"bytes,1,opt,name=erc20_address,json=erc20Address,proto3" json:"erc20_address,omitempty"` + // cosmos base denomination to be mapped to + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + // shows token mapping enable status + Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` + // ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external address) + ContractOwner Owner `protobuf:"varint,4,opt,name=contract_owner,json=contractOwner,proto3,enum=canto.erc20.v1.Owner" json:"contract_owner,omitempty"` +} + +func (x *TokenPair) Reset() { + *x = TokenPair{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TokenPair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenPair) ProtoMessage() {} + +// Deprecated: Use TokenPair.ProtoReflect.Descriptor instead. +func (*TokenPair) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{0} +} + +func (x *TokenPair) GetErc20Address() string { + if x != nil { + return x.Erc20Address + } + return "" +} + +func (x *TokenPair) GetDenom() string { + if x != nil { + return x.Denom + } + return "" +} + +func (x *TokenPair) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *TokenPair) GetContractOwner() Owner { + if x != nil { + return x.ContractOwner + } + return Owner_OWNER_UNSPECIFIED +} + +// RegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +type RegisterCoinProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // metadata of the native Cosmos coin + Metadata *v1beta1.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *RegisterCoinProposal) Reset() { + *x = RegisterCoinProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterCoinProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterCoinProposal) ProtoMessage() {} + +// Deprecated: Use RegisterCoinProposal.ProtoReflect.Descriptor instead. +func (*RegisterCoinProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{1} +} + +func (x *RegisterCoinProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *RegisterCoinProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *RegisterCoinProposal) GetMetadata() *v1beta1.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +// RegisterERC20Proposal is a gov Content type to register a token pair for an +// ERC20 token +type RegisterERC20Proposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposa string title = 1; + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // contract address of ERC20 token + Erc20Address string `protobuf:"bytes,3,opt,name=erc20address,proto3" json:"erc20address,omitempty"` +} + +func (x *RegisterERC20Proposal) Reset() { + *x = RegisterERC20Proposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterERC20Proposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterERC20Proposal) ProtoMessage() {} + +// Deprecated: Use RegisterERC20Proposal.ProtoReflect.Descriptor instead. +func (*RegisterERC20Proposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{2} +} + +func (x *RegisterERC20Proposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *RegisterERC20Proposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *RegisterERC20Proposal) GetErc20Address() string { + if x != nil { + return x.Erc20Address + } + return "" +} + +// ToggleTokenConversionProposal is a gov Content type to toggle the conversion +// of a token pair. +type ToggleTokenConversionProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *ToggleTokenConversionProposal) Reset() { + *x = ToggleTokenConversionProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToggleTokenConversionProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ToggleTokenConversionProposal) ProtoMessage() {} + +// Deprecated: Use ToggleTokenConversionProposal.ProtoReflect.Descriptor instead. +func (*ToggleTokenConversionProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{3} +} + +func (x *ToggleTokenConversionProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ToggleTokenConversionProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ToggleTokenConversionProposal) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +var File_canto_erc20_v1_erc20_proto protoreflect.FileDescriptor + +var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, + 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xa4, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x95, 0x01, 0x0a, 0x14, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, + 0x00, 0x22, 0x79, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x73, 0x0a, 0x1d, + 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, + 0x01, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x57, + 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, + 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, 0x01, + 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, + 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_erc20_v1_erc20_proto_rawDescOnce sync.Once + file_canto_erc20_v1_erc20_proto_rawDescData = file_canto_erc20_v1_erc20_proto_rawDesc +) + +func file_canto_erc20_v1_erc20_proto_rawDescGZIP() []byte { + file_canto_erc20_v1_erc20_proto_rawDescOnce.Do(func() { + file_canto_erc20_v1_erc20_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_erc20_v1_erc20_proto_rawDescData) + }) + return file_canto_erc20_v1_erc20_proto_rawDescData +} + +var file_canto_erc20_v1_erc20_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_canto_erc20_v1_erc20_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_erc20_v1_erc20_proto_goTypes = []interface{}{ + (Owner)(0), // 0: canto.erc20.v1.Owner + (*TokenPair)(nil), // 1: canto.erc20.v1.TokenPair + (*RegisterCoinProposal)(nil), // 2: canto.erc20.v1.RegisterCoinProposal + (*RegisterERC20Proposal)(nil), // 3: canto.erc20.v1.RegisterERC20Proposal + (*ToggleTokenConversionProposal)(nil), // 4: canto.erc20.v1.ToggleTokenConversionProposal + (*v1beta1.Metadata)(nil), // 5: cosmos.bank.v1beta1.Metadata +} +var file_canto_erc20_v1_erc20_proto_depIdxs = []int32{ + 0, // 0: canto.erc20.v1.TokenPair.contract_owner:type_name -> canto.erc20.v1.Owner + 5, // 1: canto.erc20.v1.RegisterCoinProposal.metadata:type_name -> cosmos.bank.v1beta1.Metadata + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_canto_erc20_v1_erc20_proto_init() } +func file_canto_erc20_v1_erc20_proto_init() { + if File_canto_erc20_v1_erc20_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_erc20_v1_erc20_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TokenPair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_erc20_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterCoinProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_erc20_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterERC20Proposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_erc20_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ToggleTokenConversionProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_erc20_v1_erc20_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_erc20_v1_erc20_proto_goTypes, + DependencyIndexes: file_canto_erc20_v1_erc20_proto_depIdxs, + EnumInfos: file_canto_erc20_v1_erc20_proto_enumTypes, + MessageInfos: file_canto_erc20_v1_erc20_proto_msgTypes, + }.Build() + File_canto_erc20_v1_erc20_proto = out.File + file_canto_erc20_v1_erc20_proto_rawDesc = nil + file_canto_erc20_v1_erc20_proto_goTypes = nil + file_canto_erc20_v1_erc20_proto_depIdxs = nil +} diff --git a/api/canto/erc20/v1/genesis.pulsar.go b/api/canto/erc20/v1/genesis.pulsar.go new file mode 100644 index 000000000..611661753 --- /dev/null +++ b/api/canto/erc20/v1/genesis.pulsar.go @@ -0,0 +1,1276 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package erc20v1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var _ protoreflect.List = (*_GenesisState_2_list)(nil) + +type _GenesisState_2_list struct { + list *[]*TokenPair +} + +func (x *_GenesisState_2_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenPair) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenPair) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_2_list) AppendMutable() protoreflect.Value { + v := new(TokenPair) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_2_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_2_list) NewElement() protoreflect.Value { + v := new(TokenPair) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_2_list) IsValid() bool { + return x.list != nil +} + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_token_pairs protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_genesis_proto_init() + md_GenesisState = File_canto_erc20_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") + fd_GenesisState_token_pairs = md_GenesisState.Fields().ByName("token_pairs") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } + if len(x.TokenPairs) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.TokenPairs}) + if !f(fd_GenesisState_token_pairs, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.GenesisState.params": + return x.Params != nil + case "canto.erc20.v1.GenesisState.token_pairs": + return len(x.TokenPairs) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.GenesisState.params": + x.Params = nil + case "canto.erc20.v1.GenesisState.token_pairs": + x.TokenPairs = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.erc20.v1.GenesisState.token_pairs": + if len(x.TokenPairs) == 0 { + return protoreflect.ValueOfList(&_GenesisState_2_list{}) + } + listValue := &_GenesisState_2_list{list: &x.TokenPairs} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + case "canto.erc20.v1.GenesisState.token_pairs": + lv := value.List() + clv := lv.(*_GenesisState_2_list) + x.TokenPairs = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.erc20.v1.GenesisState.token_pairs": + if x.TokenPairs == nil { + x.TokenPairs = []*TokenPair{} + } + value := &_GenesisState_2_list{list: &x.TokenPairs} + return protoreflect.ValueOfList(value) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.erc20.v1.GenesisState.token_pairs": + list := []*TokenPair{} + return protoreflect.ValueOfList(&_GenesisState_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.erc20.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.TokenPairs) > 0 { + for _, e := range x.TokenPairs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.TokenPairs) > 0 { + for iNdEx := len(x.TokenPairs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.TokenPairs[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenPairs = append(x.TokenPairs, &TokenPair{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TokenPairs[len(x.TokenPairs)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_enable_erc20 protoreflect.FieldDescriptor + fd_Params_enable_evm_hook protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_genesis_proto_init() + md_Params = File_canto_erc20_v1_genesis_proto.Messages().ByName("Params") + fd_Params_enable_erc20 = md_Params.Fields().ByName("enable_erc20") + fd_Params_enable_evm_hook = md_Params.Fields().ByName("enable_evm_hook") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_genesis_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.EnableErc20 != false { + value := protoreflect.ValueOfBool(x.EnableErc20) + if !f(fd_Params_enable_erc20, value) { + return + } + } + if x.EnableEvmHook != false { + value := protoreflect.ValueOfBool(x.EnableEvmHook) + if !f(fd_Params_enable_evm_hook, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + return x.EnableErc20 != false + case "canto.erc20.v1.Params.enable_evm_hook": + return x.EnableEvmHook != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + x.EnableErc20 = false + case "canto.erc20.v1.Params.enable_evm_hook": + x.EnableEvmHook = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + value := x.EnableErc20 + return protoreflect.ValueOfBool(value) + case "canto.erc20.v1.Params.enable_evm_hook": + value := x.EnableEvmHook + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + x.EnableErc20 = value.Bool() + case "canto.erc20.v1.Params.enable_evm_hook": + x.EnableEvmHook = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + panic(fmt.Errorf("field enable_erc20 of message canto.erc20.v1.Params is not mutable")) + case "canto.erc20.v1.Params.enable_evm_hook": + panic(fmt.Errorf("field enable_evm_hook of message canto.erc20.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.Params.enable_erc20": + return protoreflect.ValueOfBool(false) + case "canto.erc20.v1.Params.enable_evm_hook": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.Params")) + } + panic(fmt.Errorf("message canto.erc20.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.EnableErc20 { + n += 2 + } + if x.EnableEvmHook { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.EnableEvmHook { + i-- + if x.EnableEvmHook { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if x.EnableErc20 { + i-- + if x.EnableErc20 { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EnableErc20", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EnableErc20 = bool(v != 0) + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EnableEvmHook", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EnableEvmHook = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/erc20/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // module parameters + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` + // registered token pairs + TokenPairs []*TokenPair `protobuf:"bytes,2,rep,name=token_pairs,json=tokenPairs,proto3" json:"token_pairs,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +func (x *GenesisState) GetTokenPairs() []*TokenPair { + if x != nil { + return x.TokenPairs + } + return nil +} + +// Params defines the erc20 module params +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. + EnableErc20 bool `protobuf:"varint,1,opt,name=enable_erc20,json=enableErc20,proto3" json:"enable_erc20,omitempty"` + // parameter to enable the EVM hook that converts an ERC20 token to a Cosmos + // Coin by transferring the Tokens through a MsgEthereumTx to the + // ModuleAddress Ethereum address. + EnableEvmHook bool `protobuf:"varint,2,opt,name=enable_evm_hook,json=enableEvmHook,proto3" json:"enable_evm_hook,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *Params) GetEnableErc20() bool { + if x != nil { + return x.EnableErc20 + } + return false +} + +func (x *Params) GetEnableEvmHook() bool { + if x != nil { + return x.EnableEvmHook + } + return false +} + +var File_canto_erc20_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_erc20_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x1a, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x86, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x66, 0x0a, 0x06, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x72, 0x63, 0x32, 0x30, 0x12, 0x39, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x65, 0x76, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x11, 0xe2, 0xde, 0x1f, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x56, 0x4d, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x76, 0x6d, 0x48, 0x6f, 0x6f, + 0x6b, 0x42, 0xa5, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, + 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_canto_erc20_v1_genesis_proto_rawDescOnce sync.Once + file_canto_erc20_v1_genesis_proto_rawDescData = file_canto_erc20_v1_genesis_proto_rawDesc +) + +func file_canto_erc20_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_erc20_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_erc20_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_erc20_v1_genesis_proto_rawDescData) + }) + return file_canto_erc20_v1_genesis_proto_rawDescData +} + +var file_canto_erc20_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_erc20_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.erc20.v1.GenesisState + (*Params)(nil), // 1: canto.erc20.v1.Params + (*TokenPair)(nil), // 2: canto.erc20.v1.TokenPair +} +var file_canto_erc20_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.erc20.v1.GenesisState.params:type_name -> canto.erc20.v1.Params + 2, // 1: canto.erc20.v1.GenesisState.token_pairs:type_name -> canto.erc20.v1.TokenPair + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_canto_erc20_v1_genesis_proto_init() } +func file_canto_erc20_v1_genesis_proto_init() { + if File_canto_erc20_v1_genesis_proto != nil { + return + } + file_canto_erc20_v1_erc20_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_erc20_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_erc20_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_erc20_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_erc20_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_erc20_v1_genesis_proto_msgTypes, + }.Build() + File_canto_erc20_v1_genesis_proto = out.File + file_canto_erc20_v1_genesis_proto_rawDesc = nil + file_canto_erc20_v1_genesis_proto_goTypes = nil + file_canto_erc20_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/erc20/v1/query.pulsar.go b/api/canto/erc20/v1/query.pulsar.go new file mode 100644 index 000000000..f2b9953b7 --- /dev/null +++ b/api/canto/erc20/v1/query.pulsar.go @@ -0,0 +1,3136 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package erc20v1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryTokenPairsRequest protoreflect.MessageDescriptor + fd_QueryTokenPairsRequest_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryTokenPairsRequest = File_canto_erc20_v1_query_proto.Messages().ByName("QueryTokenPairsRequest") + fd_QueryTokenPairsRequest_pagination = md_QueryTokenPairsRequest.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenPairsRequest)(nil) + +type fastReflection_QueryTokenPairsRequest QueryTokenPairsRequest + +func (x *QueryTokenPairsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenPairsRequest)(x) +} + +func (x *QueryTokenPairsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenPairsRequest_messageType fastReflection_QueryTokenPairsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenPairsRequest_messageType{} + +type fastReflection_QueryTokenPairsRequest_messageType struct{} + +func (x fastReflection_QueryTokenPairsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenPairsRequest)(nil) +} +func (x fastReflection_QueryTokenPairsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairsRequest) +} +func (x fastReflection_QueryTokenPairsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenPairsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenPairsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenPairsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenPairsRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenPairsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenPairsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenPairsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryTokenPairsRequest_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenPairsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenPairsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageRequest) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageRequest) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenPairsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsRequest.pagination": + m := new(v1beta1.PageRequest) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenPairsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryTokenPairsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenPairsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenPairsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenPairsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenPairsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageRequest{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_QueryTokenPairsResponse_1_list)(nil) + +type _QueryTokenPairsResponse_1_list struct { + list *[]*TokenPair +} + +func (x *_QueryTokenPairsResponse_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_QueryTokenPairsResponse_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_QueryTokenPairsResponse_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenPair) + (*x.list)[i] = concreteValue +} + +func (x *_QueryTokenPairsResponse_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*TokenPair) + *x.list = append(*x.list, concreteValue) +} + +func (x *_QueryTokenPairsResponse_1_list) AppendMutable() protoreflect.Value { + v := new(TokenPair) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenPairsResponse_1_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_QueryTokenPairsResponse_1_list) NewElement() protoreflect.Value { + v := new(TokenPair) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_QueryTokenPairsResponse_1_list) IsValid() bool { + return x.list != nil +} + +var ( + md_QueryTokenPairsResponse protoreflect.MessageDescriptor + fd_QueryTokenPairsResponse_token_pairs protoreflect.FieldDescriptor + fd_QueryTokenPairsResponse_pagination protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryTokenPairsResponse = File_canto_erc20_v1_query_proto.Messages().ByName("QueryTokenPairsResponse") + fd_QueryTokenPairsResponse_token_pairs = md_QueryTokenPairsResponse.Fields().ByName("token_pairs") + fd_QueryTokenPairsResponse_pagination = md_QueryTokenPairsResponse.Fields().ByName("pagination") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenPairsResponse)(nil) + +type fastReflection_QueryTokenPairsResponse QueryTokenPairsResponse + +func (x *QueryTokenPairsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenPairsResponse)(x) +} + +func (x *QueryTokenPairsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenPairsResponse_messageType fastReflection_QueryTokenPairsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenPairsResponse_messageType{} + +type fastReflection_QueryTokenPairsResponse_messageType struct{} + +func (x fastReflection_QueryTokenPairsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenPairsResponse)(nil) +} +func (x fastReflection_QueryTokenPairsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairsResponse) +} +func (x fastReflection_QueryTokenPairsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenPairsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenPairsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenPairsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenPairsResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenPairsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenPairsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenPairsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.TokenPairs) != 0 { + value := protoreflect.ValueOfList(&_QueryTokenPairsResponse_1_list{list: &x.TokenPairs}) + if !f(fd_QueryTokenPairsResponse_token_pairs, value) { + return + } + } + if x.Pagination != nil { + value := protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + if !f(fd_QueryTokenPairsResponse_pagination, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenPairsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + return len(x.TokenPairs) != 0 + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + return x.Pagination != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + x.TokenPairs = nil + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + x.Pagination = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenPairsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + if len(x.TokenPairs) == 0 { + return protoreflect.ValueOfList(&_QueryTokenPairsResponse_1_list{}) + } + listValue := &_QueryTokenPairsResponse_1_list{list: &x.TokenPairs} + return protoreflect.ValueOfList(listValue) + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + value := x.Pagination + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + lv := value.List() + clv := lv.(*_QueryTokenPairsResponse_1_list) + x.TokenPairs = *clv.list + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + x.Pagination = value.Message().Interface().(*v1beta1.PageResponse) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + if x.TokenPairs == nil { + x.TokenPairs = []*TokenPair{} + } + value := &_QueryTokenPairsResponse_1_list{list: &x.TokenPairs} + return protoreflect.ValueOfList(value) + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + if x.Pagination == nil { + x.Pagination = new(v1beta1.PageResponse) + } + return protoreflect.ValueOfMessage(x.Pagination.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenPairsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairsResponse.token_pairs": + list := []*TokenPair{} + return protoreflect.ValueOfList(&_QueryTokenPairsResponse_1_list{list: &list}) + case "canto.erc20.v1.QueryTokenPairsResponse.pagination": + m := new(v1beta1.PageResponse) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenPairsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryTokenPairsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenPairsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenPairsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenPairsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenPairsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.TokenPairs) > 0 { + for _, e := range x.TokenPairs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.Pagination != nil { + l = options.Size(x.Pagination) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Pagination != nil { + encoded, err := options.Marshal(x.Pagination) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.TokenPairs) > 0 { + for iNdEx := len(x.TokenPairs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.TokenPairs[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.TokenPairs = append(x.TokenPairs, &TokenPair{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TokenPairs[len(x.TokenPairs)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Pagination == nil { + x.Pagination = &v1beta1.PageResponse{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Pagination); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenPairRequest protoreflect.MessageDescriptor + fd_QueryTokenPairRequest_token protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryTokenPairRequest = File_canto_erc20_v1_query_proto.Messages().ByName("QueryTokenPairRequest") + fd_QueryTokenPairRequest_token = md_QueryTokenPairRequest.Fields().ByName("token") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenPairRequest)(nil) + +type fastReflection_QueryTokenPairRequest QueryTokenPairRequest + +func (x *QueryTokenPairRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenPairRequest)(x) +} + +func (x *QueryTokenPairRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenPairRequest_messageType fastReflection_QueryTokenPairRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenPairRequest_messageType{} + +type fastReflection_QueryTokenPairRequest_messageType struct{} + +func (x fastReflection_QueryTokenPairRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenPairRequest)(nil) +} +func (x fastReflection_QueryTokenPairRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairRequest) +} +func (x fastReflection_QueryTokenPairRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenPairRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenPairRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenPairRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenPairRequest) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenPairRequest) Interface() protoreflect.ProtoMessage { + return (*QueryTokenPairRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenPairRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Token != "" { + value := protoreflect.ValueOfString(x.Token) + if !f(fd_QueryTokenPairRequest_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenPairRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + return x.Token != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + x.Token = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenPairRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + value := x.Token + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + x.Token = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + panic(fmt.Errorf("field token of message canto.erc20.v1.QueryTokenPairRequest is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenPairRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairRequest.token": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenPairRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryTokenPairRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenPairRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenPairRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenPairRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenPairRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Token) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Token) > 0 { + i -= len(x.Token) + copy(dAtA[i:], x.Token) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryTokenPairResponse protoreflect.MessageDescriptor + fd_QueryTokenPairResponse_token_pair protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryTokenPairResponse = File_canto_erc20_v1_query_proto.Messages().ByName("QueryTokenPairResponse") + fd_QueryTokenPairResponse_token_pair = md_QueryTokenPairResponse.Fields().ByName("token_pair") +} + +var _ protoreflect.Message = (*fastReflection_QueryTokenPairResponse)(nil) + +type fastReflection_QueryTokenPairResponse QueryTokenPairResponse + +func (x *QueryTokenPairResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryTokenPairResponse)(x) +} + +func (x *QueryTokenPairResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryTokenPairResponse_messageType fastReflection_QueryTokenPairResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryTokenPairResponse_messageType{} + +type fastReflection_QueryTokenPairResponse_messageType struct{} + +func (x fastReflection_QueryTokenPairResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryTokenPairResponse)(nil) +} +func (x fastReflection_QueryTokenPairResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairResponse) +} +func (x fastReflection_QueryTokenPairResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryTokenPairResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryTokenPairResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryTokenPairResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryTokenPairResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryTokenPairResponse) New() protoreflect.Message { + return new(fastReflection_QueryTokenPairResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryTokenPairResponse) Interface() protoreflect.ProtoMessage { + return (*QueryTokenPairResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryTokenPairResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.TokenPair != nil { + value := protoreflect.ValueOfMessage(x.TokenPair.ProtoReflect()) + if !f(fd_QueryTokenPairResponse_token_pair, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryTokenPairResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + return x.TokenPair != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + x.TokenPair = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryTokenPairResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + value := x.TokenPair + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + x.TokenPair = value.Message().Interface().(*TokenPair) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + if x.TokenPair == nil { + x.TokenPair = new(TokenPair) + } + return protoreflect.ValueOfMessage(x.TokenPair.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryTokenPairResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryTokenPairResponse.token_pair": + m := new(TokenPair) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryTokenPairResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryTokenPairResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryTokenPairResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryTokenPairResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryTokenPairResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryTokenPairResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryTokenPairResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryTokenPairResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryTokenPairResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.TokenPair != nil { + l = options.Size(x.TokenPair) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.TokenPair != nil { + encoded, err := options.Marshal(x.TokenPair) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryTokenPairResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryTokenPairResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field TokenPair", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.TokenPair == nil { + x.TokenPair = &TokenPair{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.TokenPair); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryParamsRequest = File_canto_erc20_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_query_proto_init() + md_QueryParamsResponse = File_canto_erc20_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/erc20/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryTokenPairsRequest is the request type for the Query/TokenPairs RPC +// method. +type QueryTokenPairsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // pagination defines an optional pagination for the request. + Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryTokenPairsRequest) Reset() { + *x = QueryTokenPairsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenPairsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenPairsRequest) ProtoMessage() {} + +// Deprecated: Use QueryTokenPairsRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenPairsRequest) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{0} +} + +func (x *QueryTokenPairsRequest) GetPagination() *v1beta1.PageRequest { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC +// method. +type QueryTokenPairsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TokenPairs []*TokenPair `protobuf:"bytes,1,rep,name=token_pairs,json=tokenPairs,proto3" json:"token_pairs,omitempty"` + // pagination defines the pagination in the response. + Pagination *v1beta1.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *QueryTokenPairsResponse) Reset() { + *x = QueryTokenPairsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenPairsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenPairsResponse) ProtoMessage() {} + +// Deprecated: Use QueryTokenPairsResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenPairsResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryTokenPairsResponse) GetTokenPairs() []*TokenPair { + if x != nil { + return x.TokenPairs + } + return nil +} + +func (x *QueryTokenPairsResponse) GetPagination() *v1beta1.PageResponse { + if x != nil { + return x.Pagination + } + return nil +} + +// QueryTokenPairRequest is the request type for the Query/TokenPair RPC method. +type QueryTokenPairRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *QueryTokenPairRequest) Reset() { + *x = QueryTokenPairRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenPairRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenPairRequest) ProtoMessage() {} + +// Deprecated: Use QueryTokenPairRequest.ProtoReflect.Descriptor instead. +func (*QueryTokenPairRequest) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{2} +} + +func (x *QueryTokenPairRequest) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +// QueryTokenPairResponse is the response type for the Query/TokenPair RPC +// method. +type QueryTokenPairResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TokenPair *TokenPair `protobuf:"bytes,1,opt,name=token_pair,json=tokenPair,proto3" json:"token_pair,omitempty"` +} + +func (x *QueryTokenPairResponse) Reset() { + *x = QueryTokenPairResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryTokenPairResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryTokenPairResponse) ProtoMessage() {} + +// Deprecated: Use QueryTokenPairResponse.ProtoReflect.Descriptor instead. +func (*QueryTokenPairResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryTokenPairResponse) GetTokenPair() *TokenPair { + if x != nil { + return x.TokenPair + } + return nil +} + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{4} +} + +// QueryParamsResponse is the response type for the Query/Params RPC +// method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_erc20_v1_query_proto protoreflect.FileDescriptor + +var file_canto_erc20_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x2a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x60, 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x61, + 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x50, 0x61, 0x69, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x2d, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x58, + 0x0a, 0x16, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x09, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4b, + 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x32, 0x89, 0x03, 0x0a, 0x05, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x09, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, + 0x23, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x2f, 0x7b, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x7d, 0x12, 0x71, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x22, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, + 0x16, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_erc20_v1_query_proto_rawDescOnce sync.Once + file_canto_erc20_v1_query_proto_rawDescData = file_canto_erc20_v1_query_proto_rawDesc +) + +func file_canto_erc20_v1_query_proto_rawDescGZIP() []byte { + file_canto_erc20_v1_query_proto_rawDescOnce.Do(func() { + file_canto_erc20_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_erc20_v1_query_proto_rawDescData) + }) + return file_canto_erc20_v1_query_proto_rawDescData +} + +var file_canto_erc20_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_erc20_v1_query_proto_goTypes = []interface{}{ + (*QueryTokenPairsRequest)(nil), // 0: canto.erc20.v1.QueryTokenPairsRequest + (*QueryTokenPairsResponse)(nil), // 1: canto.erc20.v1.QueryTokenPairsResponse + (*QueryTokenPairRequest)(nil), // 2: canto.erc20.v1.QueryTokenPairRequest + (*QueryTokenPairResponse)(nil), // 3: canto.erc20.v1.QueryTokenPairResponse + (*QueryParamsRequest)(nil), // 4: canto.erc20.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 5: canto.erc20.v1.QueryParamsResponse + (*v1beta1.PageRequest)(nil), // 6: cosmos.base.query.v1beta1.PageRequest + (*TokenPair)(nil), // 7: canto.erc20.v1.TokenPair + (*v1beta1.PageResponse)(nil), // 8: cosmos.base.query.v1beta1.PageResponse + (*Params)(nil), // 9: canto.erc20.v1.Params +} +var file_canto_erc20_v1_query_proto_depIdxs = []int32{ + 6, // 0: canto.erc20.v1.QueryTokenPairsRequest.pagination:type_name -> cosmos.base.query.v1beta1.PageRequest + 7, // 1: canto.erc20.v1.QueryTokenPairsResponse.token_pairs:type_name -> canto.erc20.v1.TokenPair + 8, // 2: canto.erc20.v1.QueryTokenPairsResponse.pagination:type_name -> cosmos.base.query.v1beta1.PageResponse + 7, // 3: canto.erc20.v1.QueryTokenPairResponse.token_pair:type_name -> canto.erc20.v1.TokenPair + 9, // 4: canto.erc20.v1.QueryParamsResponse.params:type_name -> canto.erc20.v1.Params + 0, // 5: canto.erc20.v1.Query.TokenPairs:input_type -> canto.erc20.v1.QueryTokenPairsRequest + 2, // 6: canto.erc20.v1.Query.TokenPair:input_type -> canto.erc20.v1.QueryTokenPairRequest + 4, // 7: canto.erc20.v1.Query.Params:input_type -> canto.erc20.v1.QueryParamsRequest + 1, // 8: canto.erc20.v1.Query.TokenPairs:output_type -> canto.erc20.v1.QueryTokenPairsResponse + 3, // 9: canto.erc20.v1.Query.TokenPair:output_type -> canto.erc20.v1.QueryTokenPairResponse + 5, // 10: canto.erc20.v1.Query.Params:output_type -> canto.erc20.v1.QueryParamsResponse + 8, // [8:11] is the sub-list for method output_type + 5, // [5:8] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_canto_erc20_v1_query_proto_init() } +func file_canto_erc20_v1_query_proto_init() { + if File_canto_erc20_v1_query_proto != nil { + return + } + file_canto_erc20_v1_genesis_proto_init() + file_canto_erc20_v1_erc20_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_erc20_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenPairsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenPairsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenPairRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryTokenPairResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_erc20_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_erc20_v1_query_proto_goTypes, + DependencyIndexes: file_canto_erc20_v1_query_proto_depIdxs, + MessageInfos: file_canto_erc20_v1_query_proto_msgTypes, + }.Build() + File_canto_erc20_v1_query_proto = out.File + file_canto_erc20_v1_query_proto_rawDesc = nil + file_canto_erc20_v1_query_proto_goTypes = nil + file_canto_erc20_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/erc20/v1/query_grpc.pb.go b/api/canto/erc20/v1/query_grpc.pb.go new file mode 100644 index 000000000..6f0b6f704 --- /dev/null +++ b/api/canto/erc20/v1/query_grpc.pb.go @@ -0,0 +1,189 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/erc20/v1/query.proto + +package erc20v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_TokenPairs_FullMethodName = "/canto.erc20.v1.Query/TokenPairs" + Query_TokenPair_FullMethodName = "/canto.erc20.v1.Query/TokenPair" + Query_Params_FullMethodName = "/canto.erc20.v1.Query/Params" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // TokenPairs retrieves registered token pairs + TokenPairs(ctx context.Context, in *QueryTokenPairsRequest, opts ...grpc.CallOption) (*QueryTokenPairsResponse, error) + // TokenPair retrieves a registered token pair + TokenPair(ctx context.Context, in *QueryTokenPairRequest, opts ...grpc.CallOption) (*QueryTokenPairResponse, error) + // Params retrieves the erc20 module params + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) TokenPairs(ctx context.Context, in *QueryTokenPairsRequest, opts ...grpc.CallOption) (*QueryTokenPairsResponse, error) { + out := new(QueryTokenPairsResponse) + err := c.cc.Invoke(ctx, Query_TokenPairs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) TokenPair(ctx context.Context, in *QueryTokenPairRequest, opts ...grpc.CallOption) (*QueryTokenPairResponse, error) { + out := new(QueryTokenPairResponse) + err := c.cc.Invoke(ctx, Query_TokenPair_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // TokenPairs retrieves registered token pairs + TokenPairs(context.Context, *QueryTokenPairsRequest) (*QueryTokenPairsResponse, error) + // TokenPair retrieves a registered token pair + TokenPair(context.Context, *QueryTokenPairRequest) (*QueryTokenPairResponse, error) + // Params retrieves the erc20 module params + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) TokenPairs(context.Context, *QueryTokenPairsRequest) (*QueryTokenPairsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenPairs not implemented") +} +func (UnimplementedQueryServer) TokenPair(context.Context, *QueryTokenPairRequest) (*QueryTokenPairResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TokenPair not implemented") +} +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_TokenPairs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenPairsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenPairs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenPairs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenPairs(ctx, req.(*QueryTokenPairsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_TokenPair_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryTokenPairRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).TokenPair(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_TokenPair_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).TokenPair(ctx, req.(*QueryTokenPairRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.erc20.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "TokenPairs", + Handler: _Query_TokenPairs_Handler, + }, + { + MethodName: "TokenPair", + Handler: _Query_TokenPair_Handler, + }, + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/erc20/v1/query.proto", +} diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go new file mode 100644 index 000000000..31b60fec1 --- /dev/null +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -0,0 +1,2268 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package erc20v1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgConvertCoin protoreflect.MessageDescriptor + fd_MsgConvertCoin_coin protoreflect.FieldDescriptor + fd_MsgConvertCoin_receiver protoreflect.FieldDescriptor + fd_MsgConvertCoin_sender protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgConvertCoin = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgConvertCoin") + fd_MsgConvertCoin_coin = md_MsgConvertCoin.Fields().ByName("coin") + fd_MsgConvertCoin_receiver = md_MsgConvertCoin.Fields().ByName("receiver") + fd_MsgConvertCoin_sender = md_MsgConvertCoin.Fields().ByName("sender") +} + +var _ protoreflect.Message = (*fastReflection_MsgConvertCoin)(nil) + +type fastReflection_MsgConvertCoin MsgConvertCoin + +func (x *MsgConvertCoin) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgConvertCoin)(x) +} + +func (x *MsgConvertCoin) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgConvertCoin_messageType fastReflection_MsgConvertCoin_messageType +var _ protoreflect.MessageType = fastReflection_MsgConvertCoin_messageType{} + +type fastReflection_MsgConvertCoin_messageType struct{} + +func (x fastReflection_MsgConvertCoin_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgConvertCoin)(nil) +} +func (x fastReflection_MsgConvertCoin_messageType) New() protoreflect.Message { + return new(fastReflection_MsgConvertCoin) +} +func (x fastReflection_MsgConvertCoin_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertCoin +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgConvertCoin) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertCoin +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgConvertCoin) Type() protoreflect.MessageType { + return _fastReflection_MsgConvertCoin_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgConvertCoin) New() protoreflect.Message { + return new(fastReflection_MsgConvertCoin) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgConvertCoin) Interface() protoreflect.ProtoMessage { + return (*MsgConvertCoin)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgConvertCoin) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Coin != nil { + value := protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + if !f(fd_MsgConvertCoin_coin, value) { + return + } + } + if x.Receiver != "" { + value := protoreflect.ValueOfString(x.Receiver) + if !f(fd_MsgConvertCoin_receiver, value) { + return + } + } + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgConvertCoin_sender, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgConvertCoin) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + return x.Coin != nil + case "canto.erc20.v1.MsgConvertCoin.receiver": + return x.Receiver != "" + case "canto.erc20.v1.MsgConvertCoin.sender": + return x.Sender != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoin) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + x.Coin = nil + case "canto.erc20.v1.MsgConvertCoin.receiver": + x.Receiver = "" + case "canto.erc20.v1.MsgConvertCoin.sender": + x.Sender = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgConvertCoin) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + value := x.Coin + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.erc20.v1.MsgConvertCoin.receiver": + value := x.Receiver + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgConvertCoin.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoin) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + x.Coin = value.Message().Interface().(*v1beta1.Coin) + case "canto.erc20.v1.MsgConvertCoin.receiver": + x.Receiver = value.Interface().(string) + case "canto.erc20.v1.MsgConvertCoin.sender": + x.Sender = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoin) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + if x.Coin == nil { + x.Coin = new(v1beta1.Coin) + } + return protoreflect.ValueOfMessage(x.Coin.ProtoReflect()) + case "canto.erc20.v1.MsgConvertCoin.receiver": + panic(fmt.Errorf("field receiver of message canto.erc20.v1.MsgConvertCoin is not mutable")) + case "canto.erc20.v1.MsgConvertCoin.sender": + panic(fmt.Errorf("field sender of message canto.erc20.v1.MsgConvertCoin is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgConvertCoin) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertCoin.coin": + m := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.erc20.v1.MsgConvertCoin.receiver": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgConvertCoin.sender": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoin")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoin does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgConvertCoin) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgConvertCoin", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgConvertCoin) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoin) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgConvertCoin) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgConvertCoin) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgConvertCoin) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Coin != nil { + l = options.Size(x.Coin) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Receiver) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertCoin) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0x1a + } + if len(x.Receiver) > 0 { + i -= len(x.Receiver) + copy(dAtA[i:], x.Receiver) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Receiver))) + i-- + dAtA[i] = 0x12 + } + if x.Coin != nil { + encoded, err := options.Marshal(x.Coin) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertCoin) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertCoin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertCoin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Coin == nil { + x.Coin = &v1beta1.Coin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Coin); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgConvertCoinResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgConvertCoinResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgConvertCoinResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgConvertCoinResponse)(nil) + +type fastReflection_MsgConvertCoinResponse MsgConvertCoinResponse + +func (x *MsgConvertCoinResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgConvertCoinResponse)(x) +} + +func (x *MsgConvertCoinResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgConvertCoinResponse_messageType fastReflection_MsgConvertCoinResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgConvertCoinResponse_messageType{} + +type fastReflection_MsgConvertCoinResponse_messageType struct{} + +func (x fastReflection_MsgConvertCoinResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgConvertCoinResponse)(nil) +} +func (x fastReflection_MsgConvertCoinResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgConvertCoinResponse) +} +func (x fastReflection_MsgConvertCoinResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertCoinResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgConvertCoinResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertCoinResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgConvertCoinResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgConvertCoinResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgConvertCoinResponse) New() protoreflect.Message { + return new(fastReflection_MsgConvertCoinResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgConvertCoinResponse) Interface() protoreflect.ProtoMessage { + return (*MsgConvertCoinResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgConvertCoinResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgConvertCoinResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoinResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgConvertCoinResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoinResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoinResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgConvertCoinResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertCoinResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertCoinResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgConvertCoinResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgConvertCoinResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgConvertCoinResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertCoinResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgConvertCoinResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgConvertCoinResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgConvertCoinResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertCoinResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertCoinResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertCoinResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgConvertERC20 protoreflect.MessageDescriptor + fd_MsgConvertERC20_contract_address protoreflect.FieldDescriptor + fd_MsgConvertERC20_amount protoreflect.FieldDescriptor + fd_MsgConvertERC20_receiver protoreflect.FieldDescriptor + fd_MsgConvertERC20_sender protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgConvertERC20 = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgConvertERC20") + fd_MsgConvertERC20_contract_address = md_MsgConvertERC20.Fields().ByName("contract_address") + fd_MsgConvertERC20_amount = md_MsgConvertERC20.Fields().ByName("amount") + fd_MsgConvertERC20_receiver = md_MsgConvertERC20.Fields().ByName("receiver") + fd_MsgConvertERC20_sender = md_MsgConvertERC20.Fields().ByName("sender") +} + +var _ protoreflect.Message = (*fastReflection_MsgConvertERC20)(nil) + +type fastReflection_MsgConvertERC20 MsgConvertERC20 + +func (x *MsgConvertERC20) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgConvertERC20)(x) +} + +func (x *MsgConvertERC20) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgConvertERC20_messageType fastReflection_MsgConvertERC20_messageType +var _ protoreflect.MessageType = fastReflection_MsgConvertERC20_messageType{} + +type fastReflection_MsgConvertERC20_messageType struct{} + +func (x fastReflection_MsgConvertERC20_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgConvertERC20)(nil) +} +func (x fastReflection_MsgConvertERC20_messageType) New() protoreflect.Message { + return new(fastReflection_MsgConvertERC20) +} +func (x fastReflection_MsgConvertERC20_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertERC20 +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgConvertERC20) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertERC20 +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgConvertERC20) Type() protoreflect.MessageType { + return _fastReflection_MsgConvertERC20_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgConvertERC20) New() protoreflect.Message { + return new(fastReflection_MsgConvertERC20) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgConvertERC20) Interface() protoreflect.ProtoMessage { + return (*MsgConvertERC20)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgConvertERC20) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.ContractAddress != "" { + value := protoreflect.ValueOfString(x.ContractAddress) + if !f(fd_MsgConvertERC20_contract_address, value) { + return + } + } + if x.Amount != "" { + value := protoreflect.ValueOfString(x.Amount) + if !f(fd_MsgConvertERC20_amount, value) { + return + } + } + if x.Receiver != "" { + value := protoreflect.ValueOfString(x.Receiver) + if !f(fd_MsgConvertERC20_receiver, value) { + return + } + } + if x.Sender != "" { + value := protoreflect.ValueOfString(x.Sender) + if !f(fd_MsgConvertERC20_sender, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgConvertERC20) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + return x.ContractAddress != "" + case "canto.erc20.v1.MsgConvertERC20.amount": + return x.Amount != "" + case "canto.erc20.v1.MsgConvertERC20.receiver": + return x.Receiver != "" + case "canto.erc20.v1.MsgConvertERC20.sender": + return x.Sender != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + x.ContractAddress = "" + case "canto.erc20.v1.MsgConvertERC20.amount": + x.Amount = "" + case "canto.erc20.v1.MsgConvertERC20.receiver": + x.Receiver = "" + case "canto.erc20.v1.MsgConvertERC20.sender": + x.Sender = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgConvertERC20) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + value := x.ContractAddress + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgConvertERC20.amount": + value := x.Amount + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgConvertERC20.receiver": + value := x.Receiver + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgConvertERC20.sender": + value := x.Sender + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + x.ContractAddress = value.Interface().(string) + case "canto.erc20.v1.MsgConvertERC20.amount": + x.Amount = value.Interface().(string) + case "canto.erc20.v1.MsgConvertERC20.receiver": + x.Receiver = value.Interface().(string) + case "canto.erc20.v1.MsgConvertERC20.sender": + x.Sender = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + panic(fmt.Errorf("field contract_address of message canto.erc20.v1.MsgConvertERC20 is not mutable")) + case "canto.erc20.v1.MsgConvertERC20.amount": + panic(fmt.Errorf("field amount of message canto.erc20.v1.MsgConvertERC20 is not mutable")) + case "canto.erc20.v1.MsgConvertERC20.receiver": + panic(fmt.Errorf("field receiver of message canto.erc20.v1.MsgConvertERC20 is not mutable")) + case "canto.erc20.v1.MsgConvertERC20.sender": + panic(fmt.Errorf("field sender of message canto.erc20.v1.MsgConvertERC20 is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgConvertERC20) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgConvertERC20.contract_address": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgConvertERC20.amount": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgConvertERC20.receiver": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgConvertERC20.sender": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20 does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgConvertERC20) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgConvertERC20", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgConvertERC20) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgConvertERC20) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgConvertERC20) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgConvertERC20) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.ContractAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Amount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Receiver) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Sender) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertERC20) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Sender) > 0 { + i -= len(x.Sender) + copy(dAtA[i:], x.Sender) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Sender))) + i-- + dAtA[i] = 0x22 + } + if len(x.Receiver) > 0 { + i -= len(x.Receiver) + copy(dAtA[i:], x.Receiver) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Receiver))) + i-- + dAtA[i] = 0x1a + } + if len(x.Amount) > 0 { + i -= len(x.Amount) + copy(dAtA[i:], x.Amount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Amount))) + i-- + dAtA[i] = 0x12 + } + if len(x.ContractAddress) > 0 { + i -= len(x.ContractAddress) + copy(dAtA[i:], x.ContractAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ContractAddress))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertERC20) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertERC20: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertERC20: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgConvertERC20Response protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgConvertERC20Response = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgConvertERC20Response") +} + +var _ protoreflect.Message = (*fastReflection_MsgConvertERC20Response)(nil) + +type fastReflection_MsgConvertERC20Response MsgConvertERC20Response + +func (x *MsgConvertERC20Response) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgConvertERC20Response)(x) +} + +func (x *MsgConvertERC20Response) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgConvertERC20Response_messageType fastReflection_MsgConvertERC20Response_messageType +var _ protoreflect.MessageType = fastReflection_MsgConvertERC20Response_messageType{} + +type fastReflection_MsgConvertERC20Response_messageType struct{} + +func (x fastReflection_MsgConvertERC20Response_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgConvertERC20Response)(nil) +} +func (x fastReflection_MsgConvertERC20Response_messageType) New() protoreflect.Message { + return new(fastReflection_MsgConvertERC20Response) +} +func (x fastReflection_MsgConvertERC20Response_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertERC20Response +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgConvertERC20Response) Descriptor() protoreflect.MessageDescriptor { + return md_MsgConvertERC20Response +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgConvertERC20Response) Type() protoreflect.MessageType { + return _fastReflection_MsgConvertERC20Response_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgConvertERC20Response) New() protoreflect.Message { + return new(fastReflection_MsgConvertERC20Response) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgConvertERC20Response) Interface() protoreflect.ProtoMessage { + return (*MsgConvertERC20Response)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgConvertERC20Response) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgConvertERC20Response) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20Response) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgConvertERC20Response) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20Response) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20Response) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgConvertERC20Response) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgConvertERC20Response")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgConvertERC20Response does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgConvertERC20Response) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgConvertERC20Response", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgConvertERC20Response) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgConvertERC20Response) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgConvertERC20Response) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgConvertERC20Response) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgConvertERC20Response) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertERC20Response) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgConvertERC20Response) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertERC20Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgConvertERC20Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/erc20/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// MsgConvertCoin defines a Msg to convert a native Cosmos coin to a ERC20 token +type MsgConvertCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Cosmos coin which denomination is registered in a token pair. The coin + // amount defines the amount of coins to convert. + Coin *v1beta1.Coin `protobuf:"bytes,1,opt,name=coin,proto3" json:"coin,omitempty"` + // recipient hex address to receive ERC20 token + Receiver string `protobuf:"bytes,2,opt,name=receiver,proto3" json:"receiver,omitempty"` + // cosmos bech32 address from the owner of the given Cosmos coins + Sender string `protobuf:"bytes,3,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (x *MsgConvertCoin) Reset() { + *x = MsgConvertCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgConvertCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgConvertCoin) ProtoMessage() {} + +// Deprecated: Use MsgConvertCoin.ProtoReflect.Descriptor instead. +func (*MsgConvertCoin) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgConvertCoin) GetCoin() *v1beta1.Coin { + if x != nil { + return x.Coin + } + return nil +} + +func (x *MsgConvertCoin) GetReceiver() string { + if x != nil { + return x.Receiver + } + return "" +} + +func (x *MsgConvertCoin) GetSender() string { + if x != nil { + return x.Sender + } + return "" +} + +// MsgConvertCoinResponse returns no fields +type MsgConvertCoinResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgConvertCoinResponse) Reset() { + *x = MsgConvertCoinResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgConvertCoinResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgConvertCoinResponse) ProtoMessage() {} + +// Deprecated: Use MsgConvertCoinResponse.ProtoReflect.Descriptor instead. +func (*MsgConvertCoinResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{1} +} + +// MsgConvertERC20 defines a Msg to convert a ERC20 token to a native Cosmos +// coin. +type MsgConvertERC20 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // ERC20 token contract address registered in a token pair + ContractAddress string `protobuf:"bytes,1,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + // amount of ERC20 tokens to convert + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // bech32 address to receive native Cosmos coins + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` + // sender hex address from the owner of the given ERC20 tokens + Sender string `protobuf:"bytes,4,opt,name=sender,proto3" json:"sender,omitempty"` +} + +func (x *MsgConvertERC20) Reset() { + *x = MsgConvertERC20{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgConvertERC20) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgConvertERC20) ProtoMessage() {} + +// Deprecated: Use MsgConvertERC20.ProtoReflect.Descriptor instead. +func (*MsgConvertERC20) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgConvertERC20) GetContractAddress() string { + if x != nil { + return x.ContractAddress + } + return "" +} + +func (x *MsgConvertERC20) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *MsgConvertERC20) GetReceiver() string { + if x != nil { + return x.Receiver + } + return "" +} + +func (x *MsgConvertERC20) GetSender() string { + if x != nil { + return x.Sender + } + return "" +} + +// MsgConvertERC20Response returns no fields +type MsgConvertERC20Response struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgConvertERC20Response) Reset() { + *x = MsgConvertERC20Response{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgConvertERC20Response) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgConvertERC20Response) ProtoMessage() {} + +// Deprecated: Use MsgConvertERC20Response.ProtoReflect.Descriptor instead. +func (*MsgConvertERC20Response) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{3} +} + +var File_canto_erc20_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x79, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, + 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x18, 0x0a, 0x16, + 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, + 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x19, + 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x02, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, + 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, + 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, + 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_erc20_v1_tx_proto_rawDescOnce sync.Once + file_canto_erc20_v1_tx_proto_rawDescData = file_canto_erc20_v1_tx_proto_rawDesc +) + +func file_canto_erc20_v1_tx_proto_rawDescGZIP() []byte { + file_canto_erc20_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_erc20_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_erc20_v1_tx_proto_rawDescData) + }) + return file_canto_erc20_v1_tx_proto_rawDescData +} + +var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_erc20_v1_tx_proto_goTypes = []interface{}{ + (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin + (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse + (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 + (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response + (*v1beta1.Coin)(nil), // 4: cosmos.base.v1beta1.Coin +} +var file_canto_erc20_v1_tx_proto_depIdxs = []int32{ + 4, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin + 0, // 1: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin + 2, // 2: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 + 1, // 3: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse + 3, // 4: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response + 3, // [3:5] is the sub-list for method output_type + 1, // [1:3] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_erc20_v1_tx_proto_init() } +func file_canto_erc20_v1_tx_proto_init() { + if File_canto_erc20_v1_tx_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_erc20_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgConvertCoin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgConvertCoinResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgConvertERC20); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgConvertERC20Response); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_erc20_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_erc20_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_erc20_v1_tx_proto_depIdxs, + MessageInfos: file_canto_erc20_v1_tx_proto_msgTypes, + }.Build() + File_canto_erc20_v1_tx_proto = out.File + file_canto_erc20_v1_tx_proto_rawDesc = nil + file_canto_erc20_v1_tx_proto_goTypes = nil + file_canto_erc20_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/erc20/v1/tx_grpc.pb.go b/api/canto/erc20/v1/tx_grpc.pb.go new file mode 100644 index 000000000..11fc20f48 --- /dev/null +++ b/api/canto/erc20/v1/tx_grpc.pb.go @@ -0,0 +1,154 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/erc20/v1/tx.proto + +package erc20v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_ConvertCoin_FullMethodName = "/canto.erc20.v1.Msg/ConvertCoin" + Msg_ConvertERC20_FullMethodName = "/canto.erc20.v1.Msg/ConvertERC20" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom + // that is registered on the token mapping. + ConvertCoin(ctx context.Context, in *MsgConvertCoin, opts ...grpc.CallOption) (*MsgConvertCoinResponse, error) + // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token + // contract that is registered on the token mapping. + ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) ConvertCoin(ctx context.Context, in *MsgConvertCoin, opts ...grpc.CallOption) (*MsgConvertCoinResponse, error) { + out := new(MsgConvertCoinResponse) + err := c.cc.Invoke(ctx, Msg_ConvertCoin_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) { + out := new(MsgConvertERC20Response) + err := c.cc.Invoke(ctx, Msg_ConvertERC20_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom + // that is registered on the token mapping. + ConvertCoin(context.Context, *MsgConvertCoin) (*MsgConvertCoinResponse, error) + // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token + // contract that is registered on the token mapping. + ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) ConvertCoin(context.Context, *MsgConvertCoin) (*MsgConvertCoinResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConvertCoin not implemented") +} +func (UnimplementedMsgServer) ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConvertERC20 not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_ConvertCoin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgConvertCoin) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ConvertCoin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_ConvertCoin_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ConvertCoin(ctx, req.(*MsgConvertCoin)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ConvertERC20_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgConvertERC20) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ConvertERC20(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_ConvertERC20_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ConvertERC20(ctx, req.(*MsgConvertERC20)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.erc20.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ConvertCoin", + Handler: _Msg_ConvertCoin_Handler, + }, + { + MethodName: "ConvertERC20", + Handler: _Msg_ConvertERC20_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/erc20/v1/tx.proto", +} diff --git a/api/canto/govshuttle/v1/genesis.pulsar.go b/api/canto/govshuttle/v1/genesis.pulsar.go new file mode 100644 index 000000000..80ed05d08 --- /dev/null +++ b/api/canto/govshuttle/v1/genesis.pulsar.go @@ -0,0 +1,595 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package govshuttlev1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_genesis_proto_init() + md_GenesisState = File_canto_govshuttle_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/govshuttle/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the govshuttle module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` // this line is used by starport scaffolding # genesis/proto/state +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_govshuttle_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_govshuttle_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, + 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0xc8, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, + 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, + 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_canto_govshuttle_v1_genesis_proto_rawDescOnce sync.Once + file_canto_govshuttle_v1_genesis_proto_rawDescData = file_canto_govshuttle_v1_genesis_proto_rawDesc +) + +func file_canto_govshuttle_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_govshuttle_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_govshuttle_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_govshuttle_v1_genesis_proto_rawDescData) + }) + return file_canto_govshuttle_v1_genesis_proto_rawDescData +} + +var file_canto_govshuttle_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_govshuttle_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.govshuttle.v1.GenesisState + (*Params)(nil), // 1: canto.govshuttle.v1.Params +} +var file_canto_govshuttle_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.govshuttle.v1.GenesisState.params:type_name -> canto.govshuttle.v1.Params + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_govshuttle_v1_genesis_proto_init() } +func file_canto_govshuttle_v1_genesis_proto_init() { + if File_canto_govshuttle_v1_genesis_proto != nil { + return + } + file_canto_govshuttle_v1_govshuttle_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_govshuttle_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_govshuttle_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_govshuttle_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_govshuttle_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_govshuttle_v1_genesis_proto_msgTypes, + }.Build() + File_canto_govshuttle_v1_genesis_proto = out.File + file_canto_govshuttle_v1_genesis_proto_rawDesc = nil + file_canto_govshuttle_v1_genesis_proto_goTypes = nil + file_canto_govshuttle_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/govshuttle/v1/govshuttle.pulsar.go b/api/canto/govshuttle/v1/govshuttle.pulsar.go new file mode 100644 index 000000000..5c92fb478 --- /dev/null +++ b/api/canto/govshuttle/v1/govshuttle.pulsar.go @@ -0,0 +1,3495 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package govshuttlev1 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_Params protoreflect.MessageDescriptor +) + +func init() { + file_canto_govshuttle_v1_govshuttle_proto_init() + md_Params = File_canto_govshuttle_v1_govshuttle_proto.Messages().ByName("Params") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.Params")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_LendingMarketProposal protoreflect.MessageDescriptor + fd_LendingMarketProposal_title protoreflect.FieldDescriptor + fd_LendingMarketProposal_description protoreflect.FieldDescriptor + fd_LendingMarketProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_govshuttle_proto_init() + md_LendingMarketProposal = File_canto_govshuttle_v1_govshuttle_proto.Messages().ByName("LendingMarketProposal") + fd_LendingMarketProposal_title = md_LendingMarketProposal.Fields().ByName("title") + fd_LendingMarketProposal_description = md_LendingMarketProposal.Fields().ByName("description") + fd_LendingMarketProposal_metadata = md_LendingMarketProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_LendingMarketProposal)(nil) + +type fastReflection_LendingMarketProposal LendingMarketProposal + +func (x *LendingMarketProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_LendingMarketProposal)(x) +} + +func (x *LendingMarketProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_LendingMarketProposal_messageType fastReflection_LendingMarketProposal_messageType +var _ protoreflect.MessageType = fastReflection_LendingMarketProposal_messageType{} + +type fastReflection_LendingMarketProposal_messageType struct{} + +func (x fastReflection_LendingMarketProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_LendingMarketProposal)(nil) +} +func (x fastReflection_LendingMarketProposal_messageType) New() protoreflect.Message { + return new(fastReflection_LendingMarketProposal) +} +func (x fastReflection_LendingMarketProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_LendingMarketProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_LendingMarketProposal) Descriptor() protoreflect.MessageDescriptor { + return md_LendingMarketProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_LendingMarketProposal) Type() protoreflect.MessageType { + return _fastReflection_LendingMarketProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_LendingMarketProposal) New() protoreflect.Message { + return new(fastReflection_LendingMarketProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_LendingMarketProposal) Interface() protoreflect.ProtoMessage { + return (*LendingMarketProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_LendingMarketProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_LendingMarketProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_LendingMarketProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_LendingMarketProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_LendingMarketProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.title": + return x.Title != "" + case "canto.govshuttle.v1.LendingMarketProposal.description": + return x.Description != "" + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.title": + x.Title = "" + case "canto.govshuttle.v1.LendingMarketProposal.description": + x.Description = "" + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_LendingMarketProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.LendingMarketProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.title": + x.Title = value.Interface().(string) + case "canto.govshuttle.v1.LendingMarketProposal.description": + x.Description = value.Interface().(string) + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + x.Metadata = value.Message().Interface().(*LendingMarketMetadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(LendingMarketMetadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.govshuttle.v1.LendingMarketProposal.title": + panic(fmt.Errorf("field title of message canto.govshuttle.v1.LendingMarketProposal is not mutable")) + case "canto.govshuttle.v1.LendingMarketProposal.description": + panic(fmt.Errorf("field description of message canto.govshuttle.v1.LendingMarketProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_LendingMarketProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketProposal.title": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.LendingMarketProposal.description": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.LendingMarketProposal.metadata": + m := new(LendingMarketMetadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_LendingMarketProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.LendingMarketProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_LendingMarketProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_LendingMarketProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_LendingMarketProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*LendingMarketProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*LendingMarketProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*LendingMarketProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: LendingMarketProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: LendingMarketProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &LendingMarketMetadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_TreasuryProposal protoreflect.MessageDescriptor + fd_TreasuryProposal_title protoreflect.FieldDescriptor + fd_TreasuryProposal_description protoreflect.FieldDescriptor + fd_TreasuryProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_govshuttle_proto_init() + md_TreasuryProposal = File_canto_govshuttle_v1_govshuttle_proto.Messages().ByName("TreasuryProposal") + fd_TreasuryProposal_title = md_TreasuryProposal.Fields().ByName("title") + fd_TreasuryProposal_description = md_TreasuryProposal.Fields().ByName("description") + fd_TreasuryProposal_metadata = md_TreasuryProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_TreasuryProposal)(nil) + +type fastReflection_TreasuryProposal TreasuryProposal + +func (x *TreasuryProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_TreasuryProposal)(x) +} + +func (x *TreasuryProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_TreasuryProposal_messageType fastReflection_TreasuryProposal_messageType +var _ protoreflect.MessageType = fastReflection_TreasuryProposal_messageType{} + +type fastReflection_TreasuryProposal_messageType struct{} + +func (x fastReflection_TreasuryProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_TreasuryProposal)(nil) +} +func (x fastReflection_TreasuryProposal_messageType) New() protoreflect.Message { + return new(fastReflection_TreasuryProposal) +} +func (x fastReflection_TreasuryProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TreasuryProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TreasuryProposal) Descriptor() protoreflect.MessageDescriptor { + return md_TreasuryProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TreasuryProposal) Type() protoreflect.MessageType { + return _fastReflection_TreasuryProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TreasuryProposal) New() protoreflect.Message { + return new(fastReflection_TreasuryProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TreasuryProposal) Interface() protoreflect.ProtoMessage { + return (*TreasuryProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TreasuryProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_TreasuryProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_TreasuryProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_TreasuryProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TreasuryProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.title": + return x.Title != "" + case "canto.govshuttle.v1.TreasuryProposal.description": + return x.Description != "" + case "canto.govshuttle.v1.TreasuryProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.title": + x.Title = "" + case "canto.govshuttle.v1.TreasuryProposal.description": + x.Description = "" + case "canto.govshuttle.v1.TreasuryProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TreasuryProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.TreasuryProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.TreasuryProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.title": + x.Title = value.Interface().(string) + case "canto.govshuttle.v1.TreasuryProposal.description": + x.Description = value.Interface().(string) + case "canto.govshuttle.v1.TreasuryProposal.metadata": + x.Metadata = value.Message().Interface().(*TreasuryProposalMetadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(TreasuryProposalMetadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.govshuttle.v1.TreasuryProposal.title": + panic(fmt.Errorf("field title of message canto.govshuttle.v1.TreasuryProposal is not mutable")) + case "canto.govshuttle.v1.TreasuryProposal.description": + panic(fmt.Errorf("field description of message canto.govshuttle.v1.TreasuryProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TreasuryProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposal.title": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.TreasuryProposal.description": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.TreasuryProposal.metadata": + m := new(TreasuryProposalMetadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TreasuryProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.TreasuryProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TreasuryProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TreasuryProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TreasuryProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TreasuryProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TreasuryProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TreasuryProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TreasuryProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TreasuryProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &TreasuryProposalMetadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_TreasuryProposalMetadata protoreflect.MessageDescriptor + fd_TreasuryProposalMetadata_PropID protoreflect.FieldDescriptor + fd_TreasuryProposalMetadata_recipient protoreflect.FieldDescriptor + fd_TreasuryProposalMetadata_amount protoreflect.FieldDescriptor + fd_TreasuryProposalMetadata_denom protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_govshuttle_proto_init() + md_TreasuryProposalMetadata = File_canto_govshuttle_v1_govshuttle_proto.Messages().ByName("TreasuryProposalMetadata") + fd_TreasuryProposalMetadata_PropID = md_TreasuryProposalMetadata.Fields().ByName("PropID") + fd_TreasuryProposalMetadata_recipient = md_TreasuryProposalMetadata.Fields().ByName("recipient") + fd_TreasuryProposalMetadata_amount = md_TreasuryProposalMetadata.Fields().ByName("amount") + fd_TreasuryProposalMetadata_denom = md_TreasuryProposalMetadata.Fields().ByName("denom") +} + +var _ protoreflect.Message = (*fastReflection_TreasuryProposalMetadata)(nil) + +type fastReflection_TreasuryProposalMetadata TreasuryProposalMetadata + +func (x *TreasuryProposalMetadata) ProtoReflect() protoreflect.Message { + return (*fastReflection_TreasuryProposalMetadata)(x) +} + +func (x *TreasuryProposalMetadata) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_TreasuryProposalMetadata_messageType fastReflection_TreasuryProposalMetadata_messageType +var _ protoreflect.MessageType = fastReflection_TreasuryProposalMetadata_messageType{} + +type fastReflection_TreasuryProposalMetadata_messageType struct{} + +func (x fastReflection_TreasuryProposalMetadata_messageType) Zero() protoreflect.Message { + return (*fastReflection_TreasuryProposalMetadata)(nil) +} +func (x fastReflection_TreasuryProposalMetadata_messageType) New() protoreflect.Message { + return new(fastReflection_TreasuryProposalMetadata) +} +func (x fastReflection_TreasuryProposalMetadata_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_TreasuryProposalMetadata +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_TreasuryProposalMetadata) Descriptor() protoreflect.MessageDescriptor { + return md_TreasuryProposalMetadata +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_TreasuryProposalMetadata) Type() protoreflect.MessageType { + return _fastReflection_TreasuryProposalMetadata_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_TreasuryProposalMetadata) New() protoreflect.Message { + return new(fastReflection_TreasuryProposalMetadata) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_TreasuryProposalMetadata) Interface() protoreflect.ProtoMessage { + return (*TreasuryProposalMetadata)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_TreasuryProposalMetadata) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.PropID != uint64(0) { + value := protoreflect.ValueOfUint64(x.PropID) + if !f(fd_TreasuryProposalMetadata_PropID, value) { + return + } + } + if x.Recipient != "" { + value := protoreflect.ValueOfString(x.Recipient) + if !f(fd_TreasuryProposalMetadata_recipient, value) { + return + } + } + if x.Amount != uint64(0) { + value := protoreflect.ValueOfUint64(x.Amount) + if !f(fd_TreasuryProposalMetadata_amount, value) { + return + } + } + if x.Denom != "" { + value := protoreflect.ValueOfString(x.Denom) + if !f(fd_TreasuryProposalMetadata_denom, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_TreasuryProposalMetadata) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + return x.PropID != uint64(0) + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + return x.Recipient != "" + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + return x.Amount != uint64(0) + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + return x.Denom != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposalMetadata) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + x.PropID = uint64(0) + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + x.Recipient = "" + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + x.Amount = uint64(0) + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + x.Denom = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_TreasuryProposalMetadata) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + value := x.PropID + return protoreflect.ValueOfUint64(value) + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + value := x.Recipient + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + value := x.Amount + return protoreflect.ValueOfUint64(value) + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + value := x.Denom + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposalMetadata) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + x.PropID = value.Uint() + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + x.Recipient = value.Interface().(string) + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + x.Amount = value.Uint() + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + x.Denom = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposalMetadata) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + panic(fmt.Errorf("field PropID of message canto.govshuttle.v1.TreasuryProposalMetadata is not mutable")) + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + panic(fmt.Errorf("field recipient of message canto.govshuttle.v1.TreasuryProposalMetadata is not mutable")) + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + panic(fmt.Errorf("field amount of message canto.govshuttle.v1.TreasuryProposalMetadata is not mutable")) + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + panic(fmt.Errorf("field denom of message canto.govshuttle.v1.TreasuryProposalMetadata is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_TreasuryProposalMetadata) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.TreasuryProposalMetadata.PropID": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.govshuttle.v1.TreasuryProposalMetadata.recipient": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.TreasuryProposalMetadata.amount": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.govshuttle.v1.TreasuryProposalMetadata.denom": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.TreasuryProposalMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.TreasuryProposalMetadata does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_TreasuryProposalMetadata) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.TreasuryProposalMetadata", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_TreasuryProposalMetadata) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_TreasuryProposalMetadata) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_TreasuryProposalMetadata) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_TreasuryProposalMetadata) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*TreasuryProposalMetadata) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.PropID != 0 { + n += 1 + runtime.Sov(uint64(x.PropID)) + } + l = len(x.Recipient) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Amount != 0 { + n += 1 + runtime.Sov(uint64(x.Amount)) + } + l = len(x.Denom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*TreasuryProposalMetadata) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Denom) > 0 { + i -= len(x.Denom) + copy(dAtA[i:], x.Denom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + i-- + dAtA[i] = 0x22 + } + if x.Amount != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Amount)) + i-- + dAtA[i] = 0x18 + } + if len(x.Recipient) > 0 { + i -= len(x.Recipient) + copy(dAtA[i:], x.Recipient) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Recipient))) + i-- + dAtA[i] = 0x12 + } + if x.PropID != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.PropID)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*TreasuryProposalMetadata) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TreasuryProposalMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: TreasuryProposalMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PropID", wireType) + } + x.PropID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.PropID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Recipient", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Recipient = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + x.Amount = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Amount |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_LendingMarketMetadata_1_list)(nil) + +type _LendingMarketMetadata_1_list struct { + list *[]string +} + +func (x *_LendingMarketMetadata_1_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_LendingMarketMetadata_1_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_LendingMarketMetadata_1_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_LendingMarketMetadata_1_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_LendingMarketMetadata_1_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message LendingMarketMetadata at list field Account as it is not of Message kind")) +} + +func (x *_LendingMarketMetadata_1_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_LendingMarketMetadata_1_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_LendingMarketMetadata_1_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_LendingMarketMetadata_3_list)(nil) + +type _LendingMarketMetadata_3_list struct { + list *[]uint64 +} + +func (x *_LendingMarketMetadata_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_LendingMarketMetadata_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfUint64((*x.list)[i]) +} + +func (x *_LendingMarketMetadata_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Uint() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_LendingMarketMetadata_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Uint() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_LendingMarketMetadata_3_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message LendingMarketMetadata at list field Values as it is not of Message kind")) +} + +func (x *_LendingMarketMetadata_3_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_LendingMarketMetadata_3_list) NewElement() protoreflect.Value { + v := uint64(0) + return protoreflect.ValueOfUint64(v) +} + +func (x *_LendingMarketMetadata_3_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_LendingMarketMetadata_4_list)(nil) + +type _LendingMarketMetadata_4_list struct { + list *[]string +} + +func (x *_LendingMarketMetadata_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_LendingMarketMetadata_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_LendingMarketMetadata_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_LendingMarketMetadata_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_LendingMarketMetadata_4_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message LendingMarketMetadata at list field Calldatas as it is not of Message kind")) +} + +func (x *_LendingMarketMetadata_4_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_LendingMarketMetadata_4_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_LendingMarketMetadata_4_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_LendingMarketMetadata_5_list)(nil) + +type _LendingMarketMetadata_5_list struct { + list *[]string +} + +func (x *_LendingMarketMetadata_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_LendingMarketMetadata_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_LendingMarketMetadata_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_LendingMarketMetadata_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_LendingMarketMetadata_5_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message LendingMarketMetadata at list field Signatures as it is not of Message kind")) +} + +func (x *_LendingMarketMetadata_5_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_LendingMarketMetadata_5_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_LendingMarketMetadata_5_list) IsValid() bool { + return x.list != nil +} + +var ( + md_LendingMarketMetadata protoreflect.MessageDescriptor + fd_LendingMarketMetadata_Account protoreflect.FieldDescriptor + fd_LendingMarketMetadata_PropId protoreflect.FieldDescriptor + fd_LendingMarketMetadata_values protoreflect.FieldDescriptor + fd_LendingMarketMetadata_calldatas protoreflect.FieldDescriptor + fd_LendingMarketMetadata_signatures protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_govshuttle_proto_init() + md_LendingMarketMetadata = File_canto_govshuttle_v1_govshuttle_proto.Messages().ByName("LendingMarketMetadata") + fd_LendingMarketMetadata_Account = md_LendingMarketMetadata.Fields().ByName("Account") + fd_LendingMarketMetadata_PropId = md_LendingMarketMetadata.Fields().ByName("PropId") + fd_LendingMarketMetadata_values = md_LendingMarketMetadata.Fields().ByName("values") + fd_LendingMarketMetadata_calldatas = md_LendingMarketMetadata.Fields().ByName("calldatas") + fd_LendingMarketMetadata_signatures = md_LendingMarketMetadata.Fields().ByName("signatures") +} + +var _ protoreflect.Message = (*fastReflection_LendingMarketMetadata)(nil) + +type fastReflection_LendingMarketMetadata LendingMarketMetadata + +func (x *LendingMarketMetadata) ProtoReflect() protoreflect.Message { + return (*fastReflection_LendingMarketMetadata)(x) +} + +func (x *LendingMarketMetadata) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_LendingMarketMetadata_messageType fastReflection_LendingMarketMetadata_messageType +var _ protoreflect.MessageType = fastReflection_LendingMarketMetadata_messageType{} + +type fastReflection_LendingMarketMetadata_messageType struct{} + +func (x fastReflection_LendingMarketMetadata_messageType) Zero() protoreflect.Message { + return (*fastReflection_LendingMarketMetadata)(nil) +} +func (x fastReflection_LendingMarketMetadata_messageType) New() protoreflect.Message { + return new(fastReflection_LendingMarketMetadata) +} +func (x fastReflection_LendingMarketMetadata_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_LendingMarketMetadata +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_LendingMarketMetadata) Descriptor() protoreflect.MessageDescriptor { + return md_LendingMarketMetadata +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_LendingMarketMetadata) Type() protoreflect.MessageType { + return _fastReflection_LendingMarketMetadata_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_LendingMarketMetadata) New() protoreflect.Message { + return new(fastReflection_LendingMarketMetadata) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_LendingMarketMetadata) Interface() protoreflect.ProtoMessage { + return (*LendingMarketMetadata)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_LendingMarketMetadata) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Account) != 0 { + value := protoreflect.ValueOfList(&_LendingMarketMetadata_1_list{list: &x.Account}) + if !f(fd_LendingMarketMetadata_Account, value) { + return + } + } + if x.PropId != uint64(0) { + value := protoreflect.ValueOfUint64(x.PropId) + if !f(fd_LendingMarketMetadata_PropId, value) { + return + } + } + if len(x.Values) != 0 { + value := protoreflect.ValueOfList(&_LendingMarketMetadata_3_list{list: &x.Values}) + if !f(fd_LendingMarketMetadata_values, value) { + return + } + } + if len(x.Calldatas) != 0 { + value := protoreflect.ValueOfList(&_LendingMarketMetadata_4_list{list: &x.Calldatas}) + if !f(fd_LendingMarketMetadata_calldatas, value) { + return + } + } + if len(x.Signatures) != 0 { + value := protoreflect.ValueOfList(&_LendingMarketMetadata_5_list{list: &x.Signatures}) + if !f(fd_LendingMarketMetadata_signatures, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_LendingMarketMetadata) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + return len(x.Account) != 0 + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + return x.PropId != uint64(0) + case "canto.govshuttle.v1.LendingMarketMetadata.values": + return len(x.Values) != 0 + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + return len(x.Calldatas) != 0 + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + return len(x.Signatures) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketMetadata) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + x.Account = nil + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + x.PropId = uint64(0) + case "canto.govshuttle.v1.LendingMarketMetadata.values": + x.Values = nil + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + x.Calldatas = nil + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + x.Signatures = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_LendingMarketMetadata) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + if len(x.Account) == 0 { + return protoreflect.ValueOfList(&_LendingMarketMetadata_1_list{}) + } + listValue := &_LendingMarketMetadata_1_list{list: &x.Account} + return protoreflect.ValueOfList(listValue) + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + value := x.PropId + return protoreflect.ValueOfUint64(value) + case "canto.govshuttle.v1.LendingMarketMetadata.values": + if len(x.Values) == 0 { + return protoreflect.ValueOfList(&_LendingMarketMetadata_3_list{}) + } + listValue := &_LendingMarketMetadata_3_list{list: &x.Values} + return protoreflect.ValueOfList(listValue) + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + if len(x.Calldatas) == 0 { + return protoreflect.ValueOfList(&_LendingMarketMetadata_4_list{}) + } + listValue := &_LendingMarketMetadata_4_list{list: &x.Calldatas} + return protoreflect.ValueOfList(listValue) + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + if len(x.Signatures) == 0 { + return protoreflect.ValueOfList(&_LendingMarketMetadata_5_list{}) + } + listValue := &_LendingMarketMetadata_5_list{list: &x.Signatures} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketMetadata) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + lv := value.List() + clv := lv.(*_LendingMarketMetadata_1_list) + x.Account = *clv.list + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + x.PropId = value.Uint() + case "canto.govshuttle.v1.LendingMarketMetadata.values": + lv := value.List() + clv := lv.(*_LendingMarketMetadata_3_list) + x.Values = *clv.list + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + lv := value.List() + clv := lv.(*_LendingMarketMetadata_4_list) + x.Calldatas = *clv.list + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + lv := value.List() + clv := lv.(*_LendingMarketMetadata_5_list) + x.Signatures = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketMetadata) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + if x.Account == nil { + x.Account = []string{} + } + value := &_LendingMarketMetadata_1_list{list: &x.Account} + return protoreflect.ValueOfList(value) + case "canto.govshuttle.v1.LendingMarketMetadata.values": + if x.Values == nil { + x.Values = []uint64{} + } + value := &_LendingMarketMetadata_3_list{list: &x.Values} + return protoreflect.ValueOfList(value) + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + if x.Calldatas == nil { + x.Calldatas = []string{} + } + value := &_LendingMarketMetadata_4_list{list: &x.Calldatas} + return protoreflect.ValueOfList(value) + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + if x.Signatures == nil { + x.Signatures = []string{} + } + value := &_LendingMarketMetadata_5_list{list: &x.Signatures} + return protoreflect.ValueOfList(value) + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + panic(fmt.Errorf("field PropId of message canto.govshuttle.v1.LendingMarketMetadata is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_LendingMarketMetadata) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.LendingMarketMetadata.Account": + list := []string{} + return protoreflect.ValueOfList(&_LendingMarketMetadata_1_list{list: &list}) + case "canto.govshuttle.v1.LendingMarketMetadata.PropId": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.govshuttle.v1.LendingMarketMetadata.values": + list := []uint64{} + return protoreflect.ValueOfList(&_LendingMarketMetadata_3_list{list: &list}) + case "canto.govshuttle.v1.LendingMarketMetadata.calldatas": + list := []string{} + return protoreflect.ValueOfList(&_LendingMarketMetadata_4_list{list: &list}) + case "canto.govshuttle.v1.LendingMarketMetadata.signatures": + list := []string{} + return protoreflect.ValueOfList(&_LendingMarketMetadata_5_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.LendingMarketMetadata")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.LendingMarketMetadata does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_LendingMarketMetadata) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.LendingMarketMetadata", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_LendingMarketMetadata) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_LendingMarketMetadata) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_LendingMarketMetadata) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_LendingMarketMetadata) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*LendingMarketMetadata) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if len(x.Account) > 0 { + for _, s := range x.Account { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.PropId != 0 { + n += 1 + runtime.Sov(uint64(x.PropId)) + } + if len(x.Values) > 0 { + l = 0 + for _, e := range x.Values { + l += runtime.Sov(uint64(e)) + } + n += 1 + runtime.Sov(uint64(l)) + l + } + if len(x.Calldatas) > 0 { + for _, s := range x.Calldatas { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.Signatures) > 0 { + for _, s := range x.Signatures { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*LendingMarketMetadata) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Signatures) > 0 { + for iNdEx := len(x.Signatures) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Signatures[iNdEx]) + copy(dAtA[i:], x.Signatures[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Signatures[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(x.Calldatas) > 0 { + for iNdEx := len(x.Calldatas) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Calldatas[iNdEx]) + copy(dAtA[i:], x.Calldatas[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Calldatas[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(x.Values) > 0 { + var pksize2 int + for _, num := range x.Values { + pksize2 += runtime.Sov(uint64(num)) + } + i -= pksize2 + j1 := i + for _, num := range x.Values { + for num >= 1<<7 { + dAtA[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA[j1] = uint8(num) + j1++ + } + i = runtime.EncodeVarint(dAtA, i, uint64(pksize2)) + i-- + dAtA[i] = 0x1a + } + if x.PropId != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.PropId)) + i-- + dAtA[i] = 0x10 + } + if len(x.Account) > 0 { + for iNdEx := len(x.Account) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Account[iNdEx]) + copy(dAtA[i:], x.Account[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Account[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*LendingMarketMetadata) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: LendingMarketMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: LendingMarketMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Account", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Account = append(x.Account, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field PropId", wireType) + } + x.PropId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.PropId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Values = append(x.Values, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(x.Values) == 0 { + x.Values = make([]uint64, 0, elementCount) + } + for iNdEx < postIndex { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Values = append(x.Values, v) + } + } else { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Calldatas", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Calldatas = append(x.Calldatas, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Signatures", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Signatures = append(x.Signatures, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/govshuttle/v1/govshuttle.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Params defines the parameters for the module. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP(), []int{0} +} + +// Define this object so that the govshuttle.pb.go file is generate, implements +// govtypes.Content +type LendingMarketProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Metadata *LendingMarketMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *LendingMarketProposal) Reset() { + *x = LendingMarketProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LendingMarketProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LendingMarketProposal) ProtoMessage() {} + +// Deprecated: Use LendingMarketProposal.ProtoReflect.Descriptor instead. +func (*LendingMarketProposal) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP(), []int{1} +} + +func (x *LendingMarketProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *LendingMarketProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *LendingMarketProposal) GetMetadata() *LendingMarketMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +// treasury proposal type, +type TreasuryProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + Metadata *TreasuryProposalMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *TreasuryProposal) Reset() { + *x = TreasuryProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TreasuryProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TreasuryProposal) ProtoMessage() {} + +// Deprecated: Use TreasuryProposal.ProtoReflect.Descriptor instead. +func (*TreasuryProposal) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP(), []int{2} +} + +func (x *TreasuryProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *TreasuryProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *TreasuryProposal) GetMetadata() *TreasuryProposalMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +type TreasuryProposalMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PropID uint64 `protobuf:"varint,1,opt,name=PropID,proto3" json:"PropID,omitempty"` // proposalID, for querying proposals in EVM side, + Recipient string `protobuf:"bytes,2,opt,name=recipient,proto3" json:"recipient,omitempty"` // bytestring representing account addresses + Amount uint64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"` + Denom string `protobuf:"bytes,4,opt,name=denom,proto3" json:"denom,omitempty"` // canto or note +} + +func (x *TreasuryProposalMetadata) Reset() { + *x = TreasuryProposalMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TreasuryProposalMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TreasuryProposalMetadata) ProtoMessage() {} + +// Deprecated: Use TreasuryProposalMetadata.ProtoReflect.Descriptor instead. +func (*TreasuryProposalMetadata) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP(), []int{3} +} + +func (x *TreasuryProposalMetadata) GetPropID() uint64 { + if x != nil { + return x.PropID + } + return 0 +} + +func (x *TreasuryProposalMetadata) GetRecipient() string { + if x != nil { + return x.Recipient + } + return "" +} + +func (x *TreasuryProposalMetadata) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +func (x *TreasuryProposalMetadata) GetDenom() string { + if x != nil { + return x.Denom + } + return "" +} + +type LendingMarketMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account []string `protobuf:"bytes,1,rep,name=Account,proto3" json:"Account,omitempty"` + PropId uint64 `protobuf:"varint,2,opt,name=PropId,proto3" json:"PropId,omitempty"` + Values []uint64 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + Calldatas []string `protobuf:"bytes,4,rep,name=calldatas,proto3" json:"calldatas,omitempty"` + Signatures []string `protobuf:"bytes,5,rep,name=signatures,proto3" json:"signatures,omitempty"` +} + +func (x *LendingMarketMetadata) Reset() { + *x = LendingMarketMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_govshuttle_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LendingMarketMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LendingMarketMetadata) ProtoMessage() {} + +// Deprecated: Use LendingMarketMetadata.ProtoReflect.Descriptor instead. +func (*LendingMarketMetadata) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP(), []int{4} +} + +func (x *LendingMarketMetadata) GetAccount() []string { + if x != nil { + return x.Account + } + return nil +} + +func (x *LendingMarketMetadata) GetPropId() uint64 { + if x != nil { + return x.PropId + } + return 0 +} + +func (x *LendingMarketMetadata) GetValues() []uint64 { + if x != nil { + return x.Values + } + return nil +} + +func (x *LendingMarketMetadata) GetCalldatas() []string { + if x != nil { + return x.Calldatas + } + return nil +} + +func (x *LendingMarketMetadata) GetSignatures() []string { + if x != nil { + return x.Signatures + } + return nil +} + +var File_canto_govshuttle_v1_govshuttle_proto protoreflect.FileDescriptor + +var file_canto_govshuttle_v1_govshuttle_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, + 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0e, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x04, 0x98, 0xa0, 0x1f, 0x00, 0x22, 0xd9, 0x01, 0x0a, + 0x15, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x40, 0xe8, 0xa0, 0x1f, 0x00, 0xca, 0xb4, 0x2d, 0x38, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, + 0x6f, 0x76, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x3a, 0x40, 0xe8, 0xa0, 0x1f, 0x00, 0xca, 0xb4, 0x2d, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, + 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, + 0x6e, 0x6f, 0x6d, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x9f, 0x01, 0x0a, 0x15, 0x4c, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x50, + 0x72, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x42, 0xcb, 0x01, 0x0a, 0x17, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, + 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_canto_govshuttle_v1_govshuttle_proto_rawDescOnce sync.Once + file_canto_govshuttle_v1_govshuttle_proto_rawDescData = file_canto_govshuttle_v1_govshuttle_proto_rawDesc +) + +func file_canto_govshuttle_v1_govshuttle_proto_rawDescGZIP() []byte { + file_canto_govshuttle_v1_govshuttle_proto_rawDescOnce.Do(func() { + file_canto_govshuttle_v1_govshuttle_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_govshuttle_v1_govshuttle_proto_rawDescData) + }) + return file_canto_govshuttle_v1_govshuttle_proto_rawDescData +} + +var file_canto_govshuttle_v1_govshuttle_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_canto_govshuttle_v1_govshuttle_proto_goTypes = []interface{}{ + (*Params)(nil), // 0: canto.govshuttle.v1.Params + (*LendingMarketProposal)(nil), // 1: canto.govshuttle.v1.LendingMarketProposal + (*TreasuryProposal)(nil), // 2: canto.govshuttle.v1.TreasuryProposal + (*TreasuryProposalMetadata)(nil), // 3: canto.govshuttle.v1.TreasuryProposalMetadata + (*LendingMarketMetadata)(nil), // 4: canto.govshuttle.v1.LendingMarketMetadata +} +var file_canto_govshuttle_v1_govshuttle_proto_depIdxs = []int32{ + 4, // 0: canto.govshuttle.v1.LendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.LendingMarketMetadata + 3, // 1: canto.govshuttle.v1.TreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_canto_govshuttle_v1_govshuttle_proto_init() } +func file_canto_govshuttle_v1_govshuttle_proto_init() { + if File_canto_govshuttle_v1_govshuttle_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_govshuttle_v1_govshuttle_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_govshuttle_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LendingMarketProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_govshuttle_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TreasuryProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_govshuttle_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TreasuryProposalMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_govshuttle_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LendingMarketMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_govshuttle_v1_govshuttle_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_govshuttle_v1_govshuttle_proto_goTypes, + DependencyIndexes: file_canto_govshuttle_v1_govshuttle_proto_depIdxs, + MessageInfos: file_canto_govshuttle_v1_govshuttle_proto_msgTypes, + }.Build() + File_canto_govshuttle_v1_govshuttle_proto = out.File + file_canto_govshuttle_v1_govshuttle_proto_rawDesc = nil + file_canto_govshuttle_v1_govshuttle_proto_goTypes = nil + file_canto_govshuttle_v1_govshuttle_proto_depIdxs = nil +} diff --git a/api/canto/govshuttle/v1/query.pulsar.go b/api/canto/govshuttle/v1/query.pulsar.go new file mode 100644 index 000000000..f4d4bb243 --- /dev/null +++ b/api/canto/govshuttle/v1/query.pulsar.go @@ -0,0 +1,1010 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package govshuttlev1 + +import ( + _ "cosmossdk.io/api/cosmos/base/query/v1beta1" + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_govshuttle_v1_query_proto_init() + md_QueryParamsRequest = File_canto_govshuttle_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_query_proto_init() + md_QueryParamsResponse = File_canto_govshuttle_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/govshuttle/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params holds all the parameters of this module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_govshuttle_v1_query_proto protoreflect.FileDescriptor + +var file_canto_govshuttle_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x50, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x32, 0x86, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7d, + 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xc6, 0x01, + 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, + 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, + 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_govshuttle_v1_query_proto_rawDescOnce sync.Once + file_canto_govshuttle_v1_query_proto_rawDescData = file_canto_govshuttle_v1_query_proto_rawDesc +) + +func file_canto_govshuttle_v1_query_proto_rawDescGZIP() []byte { + file_canto_govshuttle_v1_query_proto_rawDescOnce.Do(func() { + file_canto_govshuttle_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_govshuttle_v1_query_proto_rawDescData) + }) + return file_canto_govshuttle_v1_query_proto_rawDescData +} + +var file_canto_govshuttle_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_govshuttle_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: canto.govshuttle.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: canto.govshuttle.v1.QueryParamsResponse + (*Params)(nil), // 2: canto.govshuttle.v1.Params +} +var file_canto_govshuttle_v1_query_proto_depIdxs = []int32{ + 2, // 0: canto.govshuttle.v1.QueryParamsResponse.params:type_name -> canto.govshuttle.v1.Params + 0, // 1: canto.govshuttle.v1.Query.Params:input_type -> canto.govshuttle.v1.QueryParamsRequest + 1, // 2: canto.govshuttle.v1.Query.Params:output_type -> canto.govshuttle.v1.QueryParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_govshuttle_v1_query_proto_init() } +func file_canto_govshuttle_v1_query_proto_init() { + if File_canto_govshuttle_v1_query_proto != nil { + return + } + file_canto_govshuttle_v1_govshuttle_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_govshuttle_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_govshuttle_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_govshuttle_v1_query_proto_goTypes, + DependencyIndexes: file_canto_govshuttle_v1_query_proto_depIdxs, + MessageInfos: file_canto_govshuttle_v1_query_proto_msgTypes, + }.Build() + File_canto_govshuttle_v1_query_proto = out.File + file_canto_govshuttle_v1_query_proto_rawDesc = nil + file_canto_govshuttle_v1_query_proto_goTypes = nil + file_canto_govshuttle_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/govshuttle/v1/query_grpc.pb.go b/api/canto/govshuttle/v1/query_grpc.pb.go new file mode 100644 index 000000000..81d29dfa8 --- /dev/null +++ b/api/canto/govshuttle/v1/query_grpc.pb.go @@ -0,0 +1,111 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/govshuttle/v1/query.proto + +package govshuttlev1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/canto.govshuttle.v1.Query/Params" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Parameters queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Parameters queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.govshuttle.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/govshuttle/v1/query.proto", +} diff --git a/api/canto/govshuttle/v1/tx.pulsar.go b/api/canto/govshuttle/v1/tx.pulsar.go new file mode 100644 index 000000000..a3fc79c19 --- /dev/null +++ b/api/canto/govshuttle/v1/tx.pulsar.go @@ -0,0 +1,79 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package govshuttlev1 + +import ( + _ "cosmossdk.io/api/cosmos/msg/v1" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" +) + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/govshuttle/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_canto_govshuttle_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_govshuttle_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x0c, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, + 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var file_canto_govshuttle_v1_tx_proto_goTypes = []interface{}{} +var file_canto_govshuttle_v1_tx_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_canto_govshuttle_v1_tx_proto_init() } +func file_canto_govshuttle_v1_tx_proto_init() { + if File_canto_govshuttle_v1_tx_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_govshuttle_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_govshuttle_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_govshuttle_v1_tx_proto_depIdxs, + }.Build() + File_canto_govshuttle_v1_tx_proto = out.File + file_canto_govshuttle_v1_tx_proto_rawDesc = nil + file_canto_govshuttle_v1_tx_proto_goTypes = nil + file_canto_govshuttle_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/govshuttle/v1/tx_grpc.pb.go b/api/canto/govshuttle/v1/tx_grpc.pb.go new file mode 100644 index 000000000..34eb10691 --- /dev/null +++ b/api/canto/govshuttle/v1/tx_grpc.pb.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/govshuttle/v1/tx.proto + +package govshuttlev1 + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const () + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.govshuttle.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/govshuttle/v1/tx.proto", +} diff --git a/api/canto/inflation/v1/genesis.pulsar.go b/api/canto/inflation/v1/genesis.pulsar.go new file mode 100644 index 000000000..61e24dab0 --- /dev/null +++ b/api/canto/inflation/v1/genesis.pulsar.go @@ -0,0 +1,1579 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package inflationv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_period protoreflect.FieldDescriptor + fd_GenesisState_epoch_identifier protoreflect.FieldDescriptor + fd_GenesisState_epochs_per_period protoreflect.FieldDescriptor + fd_GenesisState_skipped_epochs protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_genesis_proto_init() + md_GenesisState = File_canto_inflation_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") + fd_GenesisState_period = md_GenesisState.Fields().ByName("period") + fd_GenesisState_epoch_identifier = md_GenesisState.Fields().ByName("epoch_identifier") + fd_GenesisState_epochs_per_period = md_GenesisState.Fields().ByName("epochs_per_period") + fd_GenesisState_skipped_epochs = md_GenesisState.Fields().ByName("skipped_epochs") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } + if x.Period != uint64(0) { + value := protoreflect.ValueOfUint64(x.Period) + if !f(fd_GenesisState_period, value) { + return + } + } + if x.EpochIdentifier != "" { + value := protoreflect.ValueOfString(x.EpochIdentifier) + if !f(fd_GenesisState_epoch_identifier, value) { + return + } + } + if x.EpochsPerPeriod != int64(0) { + value := protoreflect.ValueOfInt64(x.EpochsPerPeriod) + if !f(fd_GenesisState_epochs_per_period, value) { + return + } + } + if x.SkippedEpochs != uint64(0) { + value := protoreflect.ValueOfUint64(x.SkippedEpochs) + if !f(fd_GenesisState_skipped_epochs, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.GenesisState.params": + return x.Params != nil + case "canto.inflation.v1.GenesisState.period": + return x.Period != uint64(0) + case "canto.inflation.v1.GenesisState.epoch_identifier": + return x.EpochIdentifier != "" + case "canto.inflation.v1.GenesisState.epochs_per_period": + return x.EpochsPerPeriod != int64(0) + case "canto.inflation.v1.GenesisState.skipped_epochs": + return x.SkippedEpochs != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.GenesisState.params": + x.Params = nil + case "canto.inflation.v1.GenesisState.period": + x.Period = uint64(0) + case "canto.inflation.v1.GenesisState.epoch_identifier": + x.EpochIdentifier = "" + case "canto.inflation.v1.GenesisState.epochs_per_period": + x.EpochsPerPeriod = int64(0) + case "canto.inflation.v1.GenesisState.skipped_epochs": + x.SkippedEpochs = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.inflation.v1.GenesisState.period": + value := x.Period + return protoreflect.ValueOfUint64(value) + case "canto.inflation.v1.GenesisState.epoch_identifier": + value := x.EpochIdentifier + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.GenesisState.epochs_per_period": + value := x.EpochsPerPeriod + return protoreflect.ValueOfInt64(value) + case "canto.inflation.v1.GenesisState.skipped_epochs": + value := x.SkippedEpochs + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + case "canto.inflation.v1.GenesisState.period": + x.Period = value.Uint() + case "canto.inflation.v1.GenesisState.epoch_identifier": + x.EpochIdentifier = value.Interface().(string) + case "canto.inflation.v1.GenesisState.epochs_per_period": + x.EpochsPerPeriod = value.Int() + case "canto.inflation.v1.GenesisState.skipped_epochs": + x.SkippedEpochs = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.inflation.v1.GenesisState.period": + panic(fmt.Errorf("field period of message canto.inflation.v1.GenesisState is not mutable")) + case "canto.inflation.v1.GenesisState.epoch_identifier": + panic(fmt.Errorf("field epoch_identifier of message canto.inflation.v1.GenesisState is not mutable")) + case "canto.inflation.v1.GenesisState.epochs_per_period": + panic(fmt.Errorf("field epochs_per_period of message canto.inflation.v1.GenesisState is not mutable")) + case "canto.inflation.v1.GenesisState.skipped_epochs": + panic(fmt.Errorf("field skipped_epochs of message canto.inflation.v1.GenesisState is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.inflation.v1.GenesisState.period": + return protoreflect.ValueOfUint64(uint64(0)) + case "canto.inflation.v1.GenesisState.epoch_identifier": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.GenesisState.epochs_per_period": + return protoreflect.ValueOfInt64(int64(0)) + case "canto.inflation.v1.GenesisState.skipped_epochs": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.inflation.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Period != 0 { + n += 1 + runtime.Sov(uint64(x.Period)) + } + l = len(x.EpochIdentifier) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.EpochsPerPeriod != 0 { + n += 1 + runtime.Sov(uint64(x.EpochsPerPeriod)) + } + if x.SkippedEpochs != 0 { + n += 1 + runtime.Sov(uint64(x.SkippedEpochs)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.SkippedEpochs != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.SkippedEpochs)) + i-- + dAtA[i] = 0x28 + } + if x.EpochsPerPeriod != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.EpochsPerPeriod)) + i-- + dAtA[i] = 0x20 + } + if len(x.EpochIdentifier) > 0 { + i -= len(x.EpochIdentifier) + copy(dAtA[i:], x.EpochIdentifier) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.EpochIdentifier))) + i-- + dAtA[i] = 0x1a + } + if x.Period != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Period)) + i-- + dAtA[i] = 0x10 + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Period", wireType) + } + x.Period = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Period |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EpochIdentifier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.EpochIdentifier = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EpochsPerPeriod", wireType) + } + x.EpochsPerPeriod = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.EpochsPerPeriod |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SkippedEpochs", wireType) + } + x.SkippedEpochs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.SkippedEpochs |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_mint_denom protoreflect.FieldDescriptor + fd_Params_exponential_calculation protoreflect.FieldDescriptor + fd_Params_inflation_distribution protoreflect.FieldDescriptor + fd_Params_enable_inflation protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_genesis_proto_init() + md_Params = File_canto_inflation_v1_genesis_proto.Messages().ByName("Params") + fd_Params_mint_denom = md_Params.Fields().ByName("mint_denom") + fd_Params_exponential_calculation = md_Params.Fields().ByName("exponential_calculation") + fd_Params_inflation_distribution = md_Params.Fields().ByName("inflation_distribution") + fd_Params_enable_inflation = md_Params.Fields().ByName("enable_inflation") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_genesis_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.MintDenom != "" { + value := protoreflect.ValueOfString(x.MintDenom) + if !f(fd_Params_mint_denom, value) { + return + } + } + if x.ExponentialCalculation != nil { + value := protoreflect.ValueOfMessage(x.ExponentialCalculation.ProtoReflect()) + if !f(fd_Params_exponential_calculation, value) { + return + } + } + if x.InflationDistribution != nil { + value := protoreflect.ValueOfMessage(x.InflationDistribution.ProtoReflect()) + if !f(fd_Params_inflation_distribution, value) { + return + } + } + if x.EnableInflation != false { + value := protoreflect.ValueOfBool(x.EnableInflation) + if !f(fd_Params_enable_inflation, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.Params.mint_denom": + return x.MintDenom != "" + case "canto.inflation.v1.Params.exponential_calculation": + return x.ExponentialCalculation != nil + case "canto.inflation.v1.Params.inflation_distribution": + return x.InflationDistribution != nil + case "canto.inflation.v1.Params.enable_inflation": + return x.EnableInflation != false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.Params.mint_denom": + x.MintDenom = "" + case "canto.inflation.v1.Params.exponential_calculation": + x.ExponentialCalculation = nil + case "canto.inflation.v1.Params.inflation_distribution": + x.InflationDistribution = nil + case "canto.inflation.v1.Params.enable_inflation": + x.EnableInflation = false + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.Params.mint_denom": + value := x.MintDenom + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.Params.exponential_calculation": + value := x.ExponentialCalculation + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.inflation.v1.Params.inflation_distribution": + value := x.InflationDistribution + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "canto.inflation.v1.Params.enable_inflation": + value := x.EnableInflation + return protoreflect.ValueOfBool(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.Params.mint_denom": + x.MintDenom = value.Interface().(string) + case "canto.inflation.v1.Params.exponential_calculation": + x.ExponentialCalculation = value.Message().Interface().(*ExponentialCalculation) + case "canto.inflation.v1.Params.inflation_distribution": + x.InflationDistribution = value.Message().Interface().(*InflationDistribution) + case "canto.inflation.v1.Params.enable_inflation": + x.EnableInflation = value.Bool() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.Params.exponential_calculation": + if x.ExponentialCalculation == nil { + x.ExponentialCalculation = new(ExponentialCalculation) + } + return protoreflect.ValueOfMessage(x.ExponentialCalculation.ProtoReflect()) + case "canto.inflation.v1.Params.inflation_distribution": + if x.InflationDistribution == nil { + x.InflationDistribution = new(InflationDistribution) + } + return protoreflect.ValueOfMessage(x.InflationDistribution.ProtoReflect()) + case "canto.inflation.v1.Params.mint_denom": + panic(fmt.Errorf("field mint_denom of message canto.inflation.v1.Params is not mutable")) + case "canto.inflation.v1.Params.enable_inflation": + panic(fmt.Errorf("field enable_inflation of message canto.inflation.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.Params.mint_denom": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.Params.exponential_calculation": + m := new(ExponentialCalculation) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.inflation.v1.Params.inflation_distribution": + m := new(InflationDistribution) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "canto.inflation.v1.Params.enable_inflation": + return protoreflect.ValueOfBool(false) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.Params")) + } + panic(fmt.Errorf("message canto.inflation.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.MintDenom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.ExponentialCalculation != nil { + l = options.Size(x.ExponentialCalculation) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.InflationDistribution != nil { + l = options.Size(x.InflationDistribution) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.EnableInflation { + n += 2 + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.EnableInflation { + i-- + if x.EnableInflation { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if x.InflationDistribution != nil { + encoded, err := options.Marshal(x.InflationDistribution) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if x.ExponentialCalculation != nil { + encoded, err := options.Marshal(x.ExponentialCalculation) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.MintDenom) > 0 { + i -= len(x.MintDenom) + copy(dAtA[i:], x.MintDenom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MintDenom))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MintDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MintDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExponentialCalculation", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.ExponentialCalculation == nil { + x.ExponentialCalculation = &ExponentialCalculation{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExponentialCalculation); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field InflationDistribution", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.InflationDistribution == nil { + x.InflationDistribution = &InflationDistribution{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.InflationDistribution); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EnableInflation", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EnableInflation = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/inflation/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the inflation module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines all the paramaters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` + // amount of past periods, based on the epochs per period param + Period uint64 `protobuf:"varint,2,opt,name=period,proto3" json:"period,omitempty"` + // inflation epoch identifier + EpochIdentifier string `protobuf:"bytes,3,opt,name=epoch_identifier,json=epochIdentifier,proto3" json:"epoch_identifier,omitempty"` + // number of epochs after which inflation is recalculated + EpochsPerPeriod int64 `protobuf:"varint,4,opt,name=epochs_per_period,json=epochsPerPeriod,proto3" json:"epochs_per_period,omitempty"` + // number of epochs that have passed while inflation is disabled + SkippedEpochs uint64 `protobuf:"varint,5,opt,name=skipped_epochs,json=skippedEpochs,proto3" json:"skipped_epochs,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +func (x *GenesisState) GetPeriod() uint64 { + if x != nil { + return x.Period + } + return 0 +} + +func (x *GenesisState) GetEpochIdentifier() string { + if x != nil { + return x.EpochIdentifier + } + return "" +} + +func (x *GenesisState) GetEpochsPerPeriod() int64 { + if x != nil { + return x.EpochsPerPeriod + } + return 0 +} + +func (x *GenesisState) GetSkippedEpochs() uint64 { + if x != nil { + return x.SkippedEpochs + } + return 0 +} + +// Params holds parameters for the inflation module. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // type of coin to mint + MintDenom string `protobuf:"bytes,1,opt,name=mint_denom,json=mintDenom,proto3" json:"mint_denom,omitempty"` + // variables to calculate exponential inflation + ExponentialCalculation *ExponentialCalculation `protobuf:"bytes,2,opt,name=exponential_calculation,json=exponentialCalculation,proto3" json:"exponential_calculation,omitempty"` + // inflation distribution of the minted denom + InflationDistribution *InflationDistribution `protobuf:"bytes,3,opt,name=inflation_distribution,json=inflationDistribution,proto3" json:"inflation_distribution,omitempty"` + // parameter to enable inflation and halt increasing the skipped_epochs + EnableInflation bool `protobuf:"varint,4,opt,name=enable_inflation,json=enableInflation,proto3" json:"enable_inflation,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *Params) GetMintDenom() string { + if x != nil { + return x.MintDenom + } + return "" +} + +func (x *Params) GetExponentialCalculation() *ExponentialCalculation { + if x != nil { + return x.ExponentialCalculation + } + return nil +} + +func (x *Params) GetInflationDistribution() *InflationDistribution { + if x != nil { + return x.InflationDistribution + } + return nil +} + +func (x *Params) GetEnableInflation() bool { + if x != nil { + return x.EnableInflation + } + return false +} + +var File_canto_inflation_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_inflation_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x12, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, + 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xde, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x2a, + 0x0a, 0x11, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x73, 0x50, 0x65, 0x72, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6b, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x73, 0x22, 0xa5, 0x02, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x69, 0x0a, 0x17, 0x65, + 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x16, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x16, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, + 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x15, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, + 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0xc1, 0x01, 0x0a, 0x16, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_inflation_v1_genesis_proto_rawDescOnce sync.Once + file_canto_inflation_v1_genesis_proto_rawDescData = file_canto_inflation_v1_genesis_proto_rawDesc +) + +func file_canto_inflation_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_inflation_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_inflation_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_inflation_v1_genesis_proto_rawDescData) + }) + return file_canto_inflation_v1_genesis_proto_rawDescData +} + +var file_canto_inflation_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_inflation_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.inflation.v1.GenesisState + (*Params)(nil), // 1: canto.inflation.v1.Params + (*ExponentialCalculation)(nil), // 2: canto.inflation.v1.ExponentialCalculation + (*InflationDistribution)(nil), // 3: canto.inflation.v1.InflationDistribution +} +var file_canto_inflation_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.inflation.v1.GenesisState.params:type_name -> canto.inflation.v1.Params + 2, // 1: canto.inflation.v1.Params.exponential_calculation:type_name -> canto.inflation.v1.ExponentialCalculation + 3, // 2: canto.inflation.v1.Params.inflation_distribution:type_name -> canto.inflation.v1.InflationDistribution + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_canto_inflation_v1_genesis_proto_init() } +func file_canto_inflation_v1_genesis_proto_init() { + if File_canto_inflation_v1_genesis_proto != nil { + return + } + file_canto_inflation_v1_inflation_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_inflation_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_inflation_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_inflation_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_inflation_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_inflation_v1_genesis_proto_msgTypes, + }.Build() + File_canto_inflation_v1_genesis_proto = out.File + file_canto_inflation_v1_genesis_proto_rawDesc = nil + file_canto_inflation_v1_genesis_proto_goTypes = nil + file_canto_inflation_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/inflation/v1/inflation.pulsar.go b/api/canto/inflation/v1/inflation.pulsar.go new file mode 100644 index 000000000..5a90fdd6e --- /dev/null +++ b/api/canto/inflation/v1/inflation.pulsar.go @@ -0,0 +1,1467 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package inflationv1 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_InflationDistribution protoreflect.MessageDescriptor + fd_InflationDistribution_staking_rewards protoreflect.FieldDescriptor + fd_InflationDistribution_community_pool protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_inflation_proto_init() + md_InflationDistribution = File_canto_inflation_v1_inflation_proto.Messages().ByName("InflationDistribution") + fd_InflationDistribution_staking_rewards = md_InflationDistribution.Fields().ByName("staking_rewards") + fd_InflationDistribution_community_pool = md_InflationDistribution.Fields().ByName("community_pool") +} + +var _ protoreflect.Message = (*fastReflection_InflationDistribution)(nil) + +type fastReflection_InflationDistribution InflationDistribution + +func (x *InflationDistribution) ProtoReflect() protoreflect.Message { + return (*fastReflection_InflationDistribution)(x) +} + +func (x *InflationDistribution) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_inflation_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_InflationDistribution_messageType fastReflection_InflationDistribution_messageType +var _ protoreflect.MessageType = fastReflection_InflationDistribution_messageType{} + +type fastReflection_InflationDistribution_messageType struct{} + +func (x fastReflection_InflationDistribution_messageType) Zero() protoreflect.Message { + return (*fastReflection_InflationDistribution)(nil) +} +func (x fastReflection_InflationDistribution_messageType) New() protoreflect.Message { + return new(fastReflection_InflationDistribution) +} +func (x fastReflection_InflationDistribution_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_InflationDistribution +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_InflationDistribution) Descriptor() protoreflect.MessageDescriptor { + return md_InflationDistribution +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_InflationDistribution) Type() protoreflect.MessageType { + return _fastReflection_InflationDistribution_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_InflationDistribution) New() protoreflect.Message { + return new(fastReflection_InflationDistribution) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_InflationDistribution) Interface() protoreflect.ProtoMessage { + return (*InflationDistribution)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_InflationDistribution) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.StakingRewards != "" { + value := protoreflect.ValueOfString(x.StakingRewards) + if !f(fd_InflationDistribution_staking_rewards, value) { + return + } + } + if x.CommunityPool != "" { + value := protoreflect.ValueOfString(x.CommunityPool) + if !f(fd_InflationDistribution_community_pool, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_InflationDistribution) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + return x.StakingRewards != "" + case "canto.inflation.v1.InflationDistribution.community_pool": + return x.CommunityPool != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_InflationDistribution) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + x.StakingRewards = "" + case "canto.inflation.v1.InflationDistribution.community_pool": + x.CommunityPool = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_InflationDistribution) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + value := x.StakingRewards + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.InflationDistribution.community_pool": + value := x.CommunityPool + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_InflationDistribution) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + x.StakingRewards = value.Interface().(string) + case "canto.inflation.v1.InflationDistribution.community_pool": + x.CommunityPool = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_InflationDistribution) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + panic(fmt.Errorf("field staking_rewards of message canto.inflation.v1.InflationDistribution is not mutable")) + case "canto.inflation.v1.InflationDistribution.community_pool": + panic(fmt.Errorf("field community_pool of message canto.inflation.v1.InflationDistribution is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_InflationDistribution) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.InflationDistribution.staking_rewards": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.InflationDistribution.community_pool": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.InflationDistribution")) + } + panic(fmt.Errorf("message canto.inflation.v1.InflationDistribution does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_InflationDistribution) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.InflationDistribution", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_InflationDistribution) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_InflationDistribution) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_InflationDistribution) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_InflationDistribution) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*InflationDistribution) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.StakingRewards) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.CommunityPool) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*InflationDistribution) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.CommunityPool) > 0 { + i -= len(x.CommunityPool) + copy(dAtA[i:], x.CommunityPool) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CommunityPool))) + i-- + dAtA[i] = 0x1a + } + if len(x.StakingRewards) > 0 { + i -= len(x.StakingRewards) + copy(dAtA[i:], x.StakingRewards) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StakingRewards))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*InflationDistribution) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: InflationDistribution: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: InflationDistribution: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StakingRewards", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.StakingRewards = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CommunityPool", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.CommunityPool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_ExponentialCalculation protoreflect.MessageDescriptor + fd_ExponentialCalculation_a protoreflect.FieldDescriptor + fd_ExponentialCalculation_r protoreflect.FieldDescriptor + fd_ExponentialCalculation_c protoreflect.FieldDescriptor + fd_ExponentialCalculation_bonding_target protoreflect.FieldDescriptor + fd_ExponentialCalculation_max_variance protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_inflation_proto_init() + md_ExponentialCalculation = File_canto_inflation_v1_inflation_proto.Messages().ByName("ExponentialCalculation") + fd_ExponentialCalculation_a = md_ExponentialCalculation.Fields().ByName("a") + fd_ExponentialCalculation_r = md_ExponentialCalculation.Fields().ByName("r") + fd_ExponentialCalculation_c = md_ExponentialCalculation.Fields().ByName("c") + fd_ExponentialCalculation_bonding_target = md_ExponentialCalculation.Fields().ByName("bonding_target") + fd_ExponentialCalculation_max_variance = md_ExponentialCalculation.Fields().ByName("max_variance") +} + +var _ protoreflect.Message = (*fastReflection_ExponentialCalculation)(nil) + +type fastReflection_ExponentialCalculation ExponentialCalculation + +func (x *ExponentialCalculation) ProtoReflect() protoreflect.Message { + return (*fastReflection_ExponentialCalculation)(x) +} + +func (x *ExponentialCalculation) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_inflation_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_ExponentialCalculation_messageType fastReflection_ExponentialCalculation_messageType +var _ protoreflect.MessageType = fastReflection_ExponentialCalculation_messageType{} + +type fastReflection_ExponentialCalculation_messageType struct{} + +func (x fastReflection_ExponentialCalculation_messageType) Zero() protoreflect.Message { + return (*fastReflection_ExponentialCalculation)(nil) +} +func (x fastReflection_ExponentialCalculation_messageType) New() protoreflect.Message { + return new(fastReflection_ExponentialCalculation) +} +func (x fastReflection_ExponentialCalculation_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ExponentialCalculation +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ExponentialCalculation) Descriptor() protoreflect.MessageDescriptor { + return md_ExponentialCalculation +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_ExponentialCalculation) Type() protoreflect.MessageType { + return _fastReflection_ExponentialCalculation_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ExponentialCalculation) New() protoreflect.Message { + return new(fastReflection_ExponentialCalculation) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ExponentialCalculation) Interface() protoreflect.ProtoMessage { + return (*ExponentialCalculation)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_ExponentialCalculation) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.A != "" { + value := protoreflect.ValueOfString(x.A) + if !f(fd_ExponentialCalculation_a, value) { + return + } + } + if x.R != "" { + value := protoreflect.ValueOfString(x.R) + if !f(fd_ExponentialCalculation_r, value) { + return + } + } + if x.C != "" { + value := protoreflect.ValueOfString(x.C) + if !f(fd_ExponentialCalculation_c, value) { + return + } + } + if x.BondingTarget != "" { + value := protoreflect.ValueOfString(x.BondingTarget) + if !f(fd_ExponentialCalculation_bonding_target, value) { + return + } + } + if x.MaxVariance != "" { + value := protoreflect.ValueOfString(x.MaxVariance) + if !f(fd_ExponentialCalculation_max_variance, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_ExponentialCalculation) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + return x.A != "" + case "canto.inflation.v1.ExponentialCalculation.r": + return x.R != "" + case "canto.inflation.v1.ExponentialCalculation.c": + return x.C != "" + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + return x.BondingTarget != "" + case "canto.inflation.v1.ExponentialCalculation.max_variance": + return x.MaxVariance != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ExponentialCalculation) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + x.A = "" + case "canto.inflation.v1.ExponentialCalculation.r": + x.R = "" + case "canto.inflation.v1.ExponentialCalculation.c": + x.C = "" + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + x.BondingTarget = "" + case "canto.inflation.v1.ExponentialCalculation.max_variance": + x.MaxVariance = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_ExponentialCalculation) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + value := x.A + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.ExponentialCalculation.r": + value := x.R + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.ExponentialCalculation.c": + value := x.C + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + value := x.BondingTarget + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.ExponentialCalculation.max_variance": + value := x.MaxVariance + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ExponentialCalculation) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + x.A = value.Interface().(string) + case "canto.inflation.v1.ExponentialCalculation.r": + x.R = value.Interface().(string) + case "canto.inflation.v1.ExponentialCalculation.c": + x.C = value.Interface().(string) + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + x.BondingTarget = value.Interface().(string) + case "canto.inflation.v1.ExponentialCalculation.max_variance": + x.MaxVariance = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ExponentialCalculation) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + panic(fmt.Errorf("field a of message canto.inflation.v1.ExponentialCalculation is not mutable")) + case "canto.inflation.v1.ExponentialCalculation.r": + panic(fmt.Errorf("field r of message canto.inflation.v1.ExponentialCalculation is not mutable")) + case "canto.inflation.v1.ExponentialCalculation.c": + panic(fmt.Errorf("field c of message canto.inflation.v1.ExponentialCalculation is not mutable")) + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + panic(fmt.Errorf("field bonding_target of message canto.inflation.v1.ExponentialCalculation is not mutable")) + case "canto.inflation.v1.ExponentialCalculation.max_variance": + panic(fmt.Errorf("field max_variance of message canto.inflation.v1.ExponentialCalculation is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_ExponentialCalculation) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.ExponentialCalculation.a": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.ExponentialCalculation.r": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.ExponentialCalculation.c": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.ExponentialCalculation.bonding_target": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.ExponentialCalculation.max_variance": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.ExponentialCalculation")) + } + panic(fmt.Errorf("message canto.inflation.v1.ExponentialCalculation does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_ExponentialCalculation) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.ExponentialCalculation", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_ExponentialCalculation) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ExponentialCalculation) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_ExponentialCalculation) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_ExponentialCalculation) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ExponentialCalculation) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.A) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.R) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.C) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.BondingTarget) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.MaxVariance) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*ExponentialCalculation) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.MaxVariance) > 0 { + i -= len(x.MaxVariance) + copy(dAtA[i:], x.MaxVariance) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.MaxVariance))) + i-- + dAtA[i] = 0x2a + } + if len(x.BondingTarget) > 0 { + i -= len(x.BondingTarget) + copy(dAtA[i:], x.BondingTarget) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.BondingTarget))) + i-- + dAtA[i] = 0x22 + } + if len(x.C) > 0 { + i -= len(x.C) + copy(dAtA[i:], x.C) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.C))) + i-- + dAtA[i] = 0x1a + } + if len(x.R) > 0 { + i -= len(x.R) + copy(dAtA[i:], x.R) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.R))) + i-- + dAtA[i] = 0x12 + } + if len(x.A) > 0 { + i -= len(x.A) + copy(dAtA[i:], x.A) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.A))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*ExponentialCalculation) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ExponentialCalculation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ExponentialCalculation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field A", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.A = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field R", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.R = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field C", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.C = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BondingTarget", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.BondingTarget = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field MaxVariance", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.MaxVariance = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/inflation/v1/inflation.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// InflationDistribution defines the distribution in which inflation is +// allocated through minting on each epoch (staking, incentives, community). It +// excludes the team vesting distribution, as this is minted once at genesis. +// The initial InflationDistribution can be calculated from the Evmos Token +// Model like this: +// mintDistribution1 = distribution1 / (1 - teamVestingDistribution) +// 0.5333333 = 40% / (1 - 25%) +type InflationDistribution struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // staking_rewards defines the proportion of the minted minted_denom that is + // to be allocated as staking rewards + StakingRewards string `protobuf:"bytes,1,opt,name=staking_rewards,json=stakingRewards,proto3" json:"staking_rewards,omitempty"` + // // usage_incentives defines the proportion of the minted minted_denom that + // is + // // to be allocated to the incentives module address + // string usage_incentives = 2 [ + // + // (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + // (gogoproto.nullable) = false + // + // ]; + // community_pool defines the proportion of the minted minted_denom that is to + // be allocated to the community pool + CommunityPool string `protobuf:"bytes,3,opt,name=community_pool,json=communityPool,proto3" json:"community_pool,omitempty"` +} + +func (x *InflationDistribution) Reset() { + *x = InflationDistribution{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_inflation_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InflationDistribution) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InflationDistribution) ProtoMessage() {} + +// Deprecated: Use InflationDistribution.ProtoReflect.Descriptor instead. +func (*InflationDistribution) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_inflation_proto_rawDescGZIP(), []int{0} +} + +func (x *InflationDistribution) GetStakingRewards() string { + if x != nil { + return x.StakingRewards + } + return "" +} + +func (x *InflationDistribution) GetCommunityPool() string { + if x != nil { + return x.CommunityPool + } + return "" +} + +// ExponentialCalculation holds factors to calculate exponential inflation on +// each period. Calculation reference: +// periodProvision = exponentialDecay * bondingIncentive +// f(x) = (a * (1 - r) ^ x + c) * (1 + max_variance - bondedRatio * +// (max_variance / bonding_target)) +type ExponentialCalculation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // initial value + A string `protobuf:"bytes,1,opt,name=a,proto3" json:"a,omitempty"` + // reduction factor + R string `protobuf:"bytes,2,opt,name=r,proto3" json:"r,omitempty"` + // long term inflation + C string `protobuf:"bytes,3,opt,name=c,proto3" json:"c,omitempty"` + // bonding target + BondingTarget string `protobuf:"bytes,4,opt,name=bonding_target,json=bondingTarget,proto3" json:"bonding_target,omitempty"` + // max variance + MaxVariance string `protobuf:"bytes,5,opt,name=max_variance,json=maxVariance,proto3" json:"max_variance,omitempty"` +} + +func (x *ExponentialCalculation) Reset() { + *x = ExponentialCalculation{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_inflation_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExponentialCalculation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExponentialCalculation) ProtoMessage() {} + +// Deprecated: Use ExponentialCalculation.ProtoReflect.Descriptor instead. +func (*ExponentialCalculation) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_inflation_proto_rawDescGZIP(), []int{1} +} + +func (x *ExponentialCalculation) GetA() string { + if x != nil { + return x.A + } + return "" +} + +func (x *ExponentialCalculation) GetR() string { + if x != nil { + return x.R + } + return "" +} + +func (x *ExponentialCalculation) GetC() string { + if x != nil { + return x.C + } + return "" +} + +func (x *ExponentialCalculation) GetBondingTarget() string { + if x != nil { + return x.BondingTarget + } + return "" +} + +func (x *ExponentialCalculation) GetMaxVariance() string { + if x != nil { + return x.MaxVariance + } + return "" +} + +var File_canto_inflation_v1_inflation_proto protoreflect.FileDescriptor + +var file_canto_inflation_v1_inflation_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x49, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, + 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, + 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, + 0x58, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x6f, 0x6f, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, + 0x75, 0x6e, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x8b, 0x03, 0x0a, 0x16, 0x45, 0x78, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x01, 0x61, 0x12, 0x3f, 0x0a, 0x01, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x44, 0x65, 0x63, 0x52, 0x01, 0x72, 0x12, 0x3f, 0x0a, 0x01, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, + 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x01, 0x63, 0x12, 0x58, 0x0a, 0x0e, 0x62, 0x6f, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, + 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x0d, 0x62, 0x6f, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x12, 0x54, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x42, 0xc3, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x42, 0x0e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_inflation_v1_inflation_proto_rawDescOnce sync.Once + file_canto_inflation_v1_inflation_proto_rawDescData = file_canto_inflation_v1_inflation_proto_rawDesc +) + +func file_canto_inflation_v1_inflation_proto_rawDescGZIP() []byte { + file_canto_inflation_v1_inflation_proto_rawDescOnce.Do(func() { + file_canto_inflation_v1_inflation_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_inflation_v1_inflation_proto_rawDescData) + }) + return file_canto_inflation_v1_inflation_proto_rawDescData +} + +var file_canto_inflation_v1_inflation_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_inflation_v1_inflation_proto_goTypes = []interface{}{ + (*InflationDistribution)(nil), // 0: canto.inflation.v1.InflationDistribution + (*ExponentialCalculation)(nil), // 1: canto.inflation.v1.ExponentialCalculation +} +var file_canto_inflation_v1_inflation_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_canto_inflation_v1_inflation_proto_init() } +func file_canto_inflation_v1_inflation_proto_init() { + if File_canto_inflation_v1_inflation_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_inflation_v1_inflation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InflationDistribution); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_inflation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExponentialCalculation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_inflation_v1_inflation_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_inflation_v1_inflation_proto_goTypes, + DependencyIndexes: file_canto_inflation_v1_inflation_proto_depIdxs, + MessageInfos: file_canto_inflation_v1_inflation_proto_msgTypes, + }.Build() + File_canto_inflation_v1_inflation_proto = out.File + file_canto_inflation_v1_inflation_proto_rawDesc = nil + file_canto_inflation_v1_inflation_proto_goTypes = nil + file_canto_inflation_v1_inflation_proto_depIdxs = nil +} diff --git a/api/canto/inflation/v1/query.pulsar.go b/api/canto/inflation/v1/query.pulsar.go new file mode 100644 index 000000000..c6a3a7a00 --- /dev/null +++ b/api/canto/inflation/v1/query.pulsar.go @@ -0,0 +1,5455 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package inflationv1 + +import ( + v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryPeriodRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryPeriodRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QueryPeriodRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryPeriodRequest)(nil) + +type fastReflection_QueryPeriodRequest QueryPeriodRequest + +func (x *QueryPeriodRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryPeriodRequest)(x) +} + +func (x *QueryPeriodRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryPeriodRequest_messageType fastReflection_QueryPeriodRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryPeriodRequest_messageType{} + +type fastReflection_QueryPeriodRequest_messageType struct{} + +func (x fastReflection_QueryPeriodRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryPeriodRequest)(nil) +} +func (x fastReflection_QueryPeriodRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryPeriodRequest) +} +func (x fastReflection_QueryPeriodRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryPeriodRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryPeriodRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryPeriodRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryPeriodRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryPeriodRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryPeriodRequest) New() protoreflect.Message { + return new(fastReflection_QueryPeriodRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryPeriodRequest) Interface() protoreflect.ProtoMessage { + return (*QueryPeriodRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryPeriodRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryPeriodRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryPeriodRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryPeriodRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryPeriodRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryPeriodRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryPeriodRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryPeriodRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryPeriodRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryPeriodRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryPeriodRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryPeriodRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryPeriodRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryPeriodRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryPeriodResponse protoreflect.MessageDescriptor + fd_QueryPeriodResponse_period protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryPeriodResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QueryPeriodResponse") + fd_QueryPeriodResponse_period = md_QueryPeriodResponse.Fields().ByName("period") +} + +var _ protoreflect.Message = (*fastReflection_QueryPeriodResponse)(nil) + +type fastReflection_QueryPeriodResponse QueryPeriodResponse + +func (x *QueryPeriodResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryPeriodResponse)(x) +} + +func (x *QueryPeriodResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryPeriodResponse_messageType fastReflection_QueryPeriodResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryPeriodResponse_messageType{} + +type fastReflection_QueryPeriodResponse_messageType struct{} + +func (x fastReflection_QueryPeriodResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryPeriodResponse)(nil) +} +func (x fastReflection_QueryPeriodResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryPeriodResponse) +} +func (x fastReflection_QueryPeriodResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryPeriodResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryPeriodResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryPeriodResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryPeriodResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryPeriodResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryPeriodResponse) New() protoreflect.Message { + return new(fastReflection_QueryPeriodResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryPeriodResponse) Interface() protoreflect.ProtoMessage { + return (*QueryPeriodResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryPeriodResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Period != uint64(0) { + value := protoreflect.ValueOfUint64(x.Period) + if !f(fd_QueryPeriodResponse_period, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryPeriodResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + return x.Period != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + x.Period = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryPeriodResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + value := x.Period + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + x.Period = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + panic(fmt.Errorf("field period of message canto.inflation.v1.QueryPeriodResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryPeriodResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryPeriodResponse.period": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryPeriodResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryPeriodResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryPeriodResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryPeriodResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryPeriodResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryPeriodResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryPeriodResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryPeriodResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryPeriodResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Period != 0 { + n += 1 + runtime.Sov(uint64(x.Period)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryPeriodResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Period != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Period)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryPeriodResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryPeriodResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryPeriodResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Period", wireType) + } + x.Period = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.Period |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryEpochMintProvisionRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryEpochMintProvisionRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QueryEpochMintProvisionRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryEpochMintProvisionRequest)(nil) + +type fastReflection_QueryEpochMintProvisionRequest QueryEpochMintProvisionRequest + +func (x *QueryEpochMintProvisionRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryEpochMintProvisionRequest)(x) +} + +func (x *QueryEpochMintProvisionRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryEpochMintProvisionRequest_messageType fastReflection_QueryEpochMintProvisionRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryEpochMintProvisionRequest_messageType{} + +type fastReflection_QueryEpochMintProvisionRequest_messageType struct{} + +func (x fastReflection_QueryEpochMintProvisionRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryEpochMintProvisionRequest)(nil) +} +func (x fastReflection_QueryEpochMintProvisionRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryEpochMintProvisionRequest) +} +func (x fastReflection_QueryEpochMintProvisionRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochMintProvisionRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryEpochMintProvisionRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochMintProvisionRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryEpochMintProvisionRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryEpochMintProvisionRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryEpochMintProvisionRequest) New() protoreflect.Message { + return new(fastReflection_QueryEpochMintProvisionRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryEpochMintProvisionRequest) Interface() protoreflect.ProtoMessage { + return (*QueryEpochMintProvisionRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryEpochMintProvisionRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryEpochMintProvisionRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryEpochMintProvisionRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryEpochMintProvisionRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryEpochMintProvisionRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryEpochMintProvisionRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryEpochMintProvisionRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryEpochMintProvisionRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryEpochMintProvisionRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryEpochMintProvisionRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochMintProvisionRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochMintProvisionRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochMintProvisionRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochMintProvisionRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryEpochMintProvisionResponse protoreflect.MessageDescriptor + fd_QueryEpochMintProvisionResponse_epoch_mint_provision protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryEpochMintProvisionResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QueryEpochMintProvisionResponse") + fd_QueryEpochMintProvisionResponse_epoch_mint_provision = md_QueryEpochMintProvisionResponse.Fields().ByName("epoch_mint_provision") +} + +var _ protoreflect.Message = (*fastReflection_QueryEpochMintProvisionResponse)(nil) + +type fastReflection_QueryEpochMintProvisionResponse QueryEpochMintProvisionResponse + +func (x *QueryEpochMintProvisionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryEpochMintProvisionResponse)(x) +} + +func (x *QueryEpochMintProvisionResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryEpochMintProvisionResponse_messageType fastReflection_QueryEpochMintProvisionResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryEpochMintProvisionResponse_messageType{} + +type fastReflection_QueryEpochMintProvisionResponse_messageType struct{} + +func (x fastReflection_QueryEpochMintProvisionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryEpochMintProvisionResponse)(nil) +} +func (x fastReflection_QueryEpochMintProvisionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryEpochMintProvisionResponse) +} +func (x fastReflection_QueryEpochMintProvisionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochMintProvisionResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryEpochMintProvisionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryEpochMintProvisionResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryEpochMintProvisionResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryEpochMintProvisionResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryEpochMintProvisionResponse) New() protoreflect.Message { + return new(fastReflection_QueryEpochMintProvisionResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryEpochMintProvisionResponse) Interface() protoreflect.ProtoMessage { + return (*QueryEpochMintProvisionResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryEpochMintProvisionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.EpochMintProvision != nil { + value := protoreflect.ValueOfMessage(x.EpochMintProvision.ProtoReflect()) + if !f(fd_QueryEpochMintProvisionResponse_epoch_mint_provision, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryEpochMintProvisionResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + return x.EpochMintProvision != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + x.EpochMintProvision = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryEpochMintProvisionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + value := x.EpochMintProvision + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + x.EpochMintProvision = value.Message().Interface().(*v1beta1.DecCoin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + if x.EpochMintProvision == nil { + x.EpochMintProvision = new(v1beta1.DecCoin) + } + return protoreflect.ValueOfMessage(x.EpochMintProvision.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryEpochMintProvisionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision": + m := new(v1beta1.DecCoin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryEpochMintProvisionResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryEpochMintProvisionResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryEpochMintProvisionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryEpochMintProvisionResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryEpochMintProvisionResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryEpochMintProvisionResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryEpochMintProvisionResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryEpochMintProvisionResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryEpochMintProvisionResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.EpochMintProvision != nil { + l = options.Size(x.EpochMintProvision) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochMintProvisionResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.EpochMintProvision != nil { + encoded, err := options.Marshal(x.EpochMintProvision) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryEpochMintProvisionResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochMintProvisionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryEpochMintProvisionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EpochMintProvision", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.EpochMintProvision == nil { + x.EpochMintProvision = &v1beta1.DecCoin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EpochMintProvision); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QuerySkippedEpochsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QuerySkippedEpochsRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QuerySkippedEpochsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QuerySkippedEpochsRequest)(nil) + +type fastReflection_QuerySkippedEpochsRequest QuerySkippedEpochsRequest + +func (x *QuerySkippedEpochsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QuerySkippedEpochsRequest)(x) +} + +func (x *QuerySkippedEpochsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QuerySkippedEpochsRequest_messageType fastReflection_QuerySkippedEpochsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QuerySkippedEpochsRequest_messageType{} + +type fastReflection_QuerySkippedEpochsRequest_messageType struct{} + +func (x fastReflection_QuerySkippedEpochsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QuerySkippedEpochsRequest)(nil) +} +func (x fastReflection_QuerySkippedEpochsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QuerySkippedEpochsRequest) +} +func (x fastReflection_QuerySkippedEpochsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QuerySkippedEpochsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QuerySkippedEpochsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QuerySkippedEpochsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QuerySkippedEpochsRequest) Type() protoreflect.MessageType { + return _fastReflection_QuerySkippedEpochsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QuerySkippedEpochsRequest) New() protoreflect.Message { + return new(fastReflection_QuerySkippedEpochsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QuerySkippedEpochsRequest) Interface() protoreflect.ProtoMessage { + return (*QuerySkippedEpochsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QuerySkippedEpochsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QuerySkippedEpochsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QuerySkippedEpochsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QuerySkippedEpochsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QuerySkippedEpochsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QuerySkippedEpochsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QuerySkippedEpochsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QuerySkippedEpochsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QuerySkippedEpochsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QuerySkippedEpochsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QuerySkippedEpochsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QuerySkippedEpochsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QuerySkippedEpochsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QuerySkippedEpochsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QuerySkippedEpochsResponse protoreflect.MessageDescriptor + fd_QuerySkippedEpochsResponse_skipped_epochs protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QuerySkippedEpochsResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QuerySkippedEpochsResponse") + fd_QuerySkippedEpochsResponse_skipped_epochs = md_QuerySkippedEpochsResponse.Fields().ByName("skipped_epochs") +} + +var _ protoreflect.Message = (*fastReflection_QuerySkippedEpochsResponse)(nil) + +type fastReflection_QuerySkippedEpochsResponse QuerySkippedEpochsResponse + +func (x *QuerySkippedEpochsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QuerySkippedEpochsResponse)(x) +} + +func (x *QuerySkippedEpochsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QuerySkippedEpochsResponse_messageType fastReflection_QuerySkippedEpochsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QuerySkippedEpochsResponse_messageType{} + +type fastReflection_QuerySkippedEpochsResponse_messageType struct{} + +func (x fastReflection_QuerySkippedEpochsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QuerySkippedEpochsResponse)(nil) +} +func (x fastReflection_QuerySkippedEpochsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QuerySkippedEpochsResponse) +} +func (x fastReflection_QuerySkippedEpochsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QuerySkippedEpochsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QuerySkippedEpochsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QuerySkippedEpochsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QuerySkippedEpochsResponse) Type() protoreflect.MessageType { + return _fastReflection_QuerySkippedEpochsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QuerySkippedEpochsResponse) New() protoreflect.Message { + return new(fastReflection_QuerySkippedEpochsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QuerySkippedEpochsResponse) Interface() protoreflect.ProtoMessage { + return (*QuerySkippedEpochsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QuerySkippedEpochsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.SkippedEpochs != uint64(0) { + value := protoreflect.ValueOfUint64(x.SkippedEpochs) + if !f(fd_QuerySkippedEpochsResponse_skipped_epochs, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QuerySkippedEpochsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + return x.SkippedEpochs != uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + x.SkippedEpochs = uint64(0) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QuerySkippedEpochsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + value := x.SkippedEpochs + return protoreflect.ValueOfUint64(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + x.SkippedEpochs = value.Uint() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + panic(fmt.Errorf("field skipped_epochs of message canto.inflation.v1.QuerySkippedEpochsResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QuerySkippedEpochsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QuerySkippedEpochsResponse.skipped_epochs": + return protoreflect.ValueOfUint64(uint64(0)) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QuerySkippedEpochsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QuerySkippedEpochsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QuerySkippedEpochsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QuerySkippedEpochsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QuerySkippedEpochsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QuerySkippedEpochsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QuerySkippedEpochsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QuerySkippedEpochsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QuerySkippedEpochsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.SkippedEpochs != 0 { + n += 1 + runtime.Sov(uint64(x.SkippedEpochs)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QuerySkippedEpochsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.SkippedEpochs != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.SkippedEpochs)) + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QuerySkippedEpochsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QuerySkippedEpochsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QuerySkippedEpochsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SkippedEpochs", wireType) + } + x.SkippedEpochs = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + x.SkippedEpochs |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCirculatingSupplyRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryCirculatingSupplyRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QueryCirculatingSupplyRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryCirculatingSupplyRequest)(nil) + +type fastReflection_QueryCirculatingSupplyRequest QueryCirculatingSupplyRequest + +func (x *QueryCirculatingSupplyRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCirculatingSupplyRequest)(x) +} + +func (x *QueryCirculatingSupplyRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCirculatingSupplyRequest_messageType fastReflection_QueryCirculatingSupplyRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryCirculatingSupplyRequest_messageType{} + +type fastReflection_QueryCirculatingSupplyRequest_messageType struct{} + +func (x fastReflection_QueryCirculatingSupplyRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCirculatingSupplyRequest)(nil) +} +func (x fastReflection_QueryCirculatingSupplyRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCirculatingSupplyRequest) +} +func (x fastReflection_QueryCirculatingSupplyRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCirculatingSupplyRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCirculatingSupplyRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCirculatingSupplyRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCirculatingSupplyRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryCirculatingSupplyRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCirculatingSupplyRequest) New() protoreflect.Message { + return new(fastReflection_QueryCirculatingSupplyRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCirculatingSupplyRequest) Interface() protoreflect.ProtoMessage { + return (*QueryCirculatingSupplyRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCirculatingSupplyRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCirculatingSupplyRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCirculatingSupplyRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCirculatingSupplyRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCirculatingSupplyRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryCirculatingSupplyRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCirculatingSupplyRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCirculatingSupplyRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCirculatingSupplyRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCirculatingSupplyRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCirculatingSupplyRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCirculatingSupplyRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCirculatingSupplyRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCirculatingSupplyRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryCirculatingSupplyResponse protoreflect.MessageDescriptor + fd_QueryCirculatingSupplyResponse_circulating_supply protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryCirculatingSupplyResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QueryCirculatingSupplyResponse") + fd_QueryCirculatingSupplyResponse_circulating_supply = md_QueryCirculatingSupplyResponse.Fields().ByName("circulating_supply") +} + +var _ protoreflect.Message = (*fastReflection_QueryCirculatingSupplyResponse)(nil) + +type fastReflection_QueryCirculatingSupplyResponse QueryCirculatingSupplyResponse + +func (x *QueryCirculatingSupplyResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryCirculatingSupplyResponse)(x) +} + +func (x *QueryCirculatingSupplyResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryCirculatingSupplyResponse_messageType fastReflection_QueryCirculatingSupplyResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryCirculatingSupplyResponse_messageType{} + +type fastReflection_QueryCirculatingSupplyResponse_messageType struct{} + +func (x fastReflection_QueryCirculatingSupplyResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryCirculatingSupplyResponse)(nil) +} +func (x fastReflection_QueryCirculatingSupplyResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryCirculatingSupplyResponse) +} +func (x fastReflection_QueryCirculatingSupplyResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCirculatingSupplyResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryCirculatingSupplyResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryCirculatingSupplyResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryCirculatingSupplyResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryCirculatingSupplyResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryCirculatingSupplyResponse) New() protoreflect.Message { + return new(fastReflection_QueryCirculatingSupplyResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryCirculatingSupplyResponse) Interface() protoreflect.ProtoMessage { + return (*QueryCirculatingSupplyResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryCirculatingSupplyResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.CirculatingSupply != nil { + value := protoreflect.ValueOfMessage(x.CirculatingSupply.ProtoReflect()) + if !f(fd_QueryCirculatingSupplyResponse_circulating_supply, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryCirculatingSupplyResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + return x.CirculatingSupply != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + x.CirculatingSupply = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryCirculatingSupplyResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + value := x.CirculatingSupply + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + x.CirculatingSupply = value.Message().Interface().(*v1beta1.DecCoin) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + if x.CirculatingSupply == nil { + x.CirculatingSupply = new(v1beta1.DecCoin) + } + return protoreflect.ValueOfMessage(x.CirculatingSupply.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryCirculatingSupplyResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply": + m := new(v1beta1.DecCoin) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryCirculatingSupplyResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryCirculatingSupplyResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryCirculatingSupplyResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryCirculatingSupplyResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryCirculatingSupplyResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryCirculatingSupplyResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryCirculatingSupplyResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryCirculatingSupplyResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryCirculatingSupplyResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.CirculatingSupply != nil { + l = options.Size(x.CirculatingSupply) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryCirculatingSupplyResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.CirculatingSupply != nil { + encoded, err := options.Marshal(x.CirculatingSupply) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryCirculatingSupplyResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCirculatingSupplyResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryCirculatingSupplyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CirculatingSupply", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.CirculatingSupply == nil { + x.CirculatingSupply = &v1beta1.DecCoin{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.CirculatingSupply); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryInflationRateRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryInflationRateRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QueryInflationRateRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryInflationRateRequest)(nil) + +type fastReflection_QueryInflationRateRequest QueryInflationRateRequest + +func (x *QueryInflationRateRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryInflationRateRequest)(x) +} + +func (x *QueryInflationRateRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryInflationRateRequest_messageType fastReflection_QueryInflationRateRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryInflationRateRequest_messageType{} + +type fastReflection_QueryInflationRateRequest_messageType struct{} + +func (x fastReflection_QueryInflationRateRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryInflationRateRequest)(nil) +} +func (x fastReflection_QueryInflationRateRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryInflationRateRequest) +} +func (x fastReflection_QueryInflationRateRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryInflationRateRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryInflationRateRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryInflationRateRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryInflationRateRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryInflationRateRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryInflationRateRequest) New() protoreflect.Message { + return new(fastReflection_QueryInflationRateRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryInflationRateRequest) Interface() protoreflect.ProtoMessage { + return (*QueryInflationRateRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryInflationRateRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryInflationRateRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryInflationRateRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryInflationRateRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryInflationRateRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryInflationRateRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryInflationRateRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryInflationRateRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryInflationRateRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryInflationRateRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryInflationRateRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryInflationRateRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryInflationRateRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryInflationRateRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryInflationRateResponse protoreflect.MessageDescriptor + fd_QueryInflationRateResponse_inflation_rate protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryInflationRateResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QueryInflationRateResponse") + fd_QueryInflationRateResponse_inflation_rate = md_QueryInflationRateResponse.Fields().ByName("inflation_rate") +} + +var _ protoreflect.Message = (*fastReflection_QueryInflationRateResponse)(nil) + +type fastReflection_QueryInflationRateResponse QueryInflationRateResponse + +func (x *QueryInflationRateResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryInflationRateResponse)(x) +} + +func (x *QueryInflationRateResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryInflationRateResponse_messageType fastReflection_QueryInflationRateResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryInflationRateResponse_messageType{} + +type fastReflection_QueryInflationRateResponse_messageType struct{} + +func (x fastReflection_QueryInflationRateResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryInflationRateResponse)(nil) +} +func (x fastReflection_QueryInflationRateResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryInflationRateResponse) +} +func (x fastReflection_QueryInflationRateResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryInflationRateResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryInflationRateResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryInflationRateResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryInflationRateResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryInflationRateResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryInflationRateResponse) New() protoreflect.Message { + return new(fastReflection_QueryInflationRateResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryInflationRateResponse) Interface() protoreflect.ProtoMessage { + return (*QueryInflationRateResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryInflationRateResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.InflationRate != "" { + value := protoreflect.ValueOfString(x.InflationRate) + if !f(fd_QueryInflationRateResponse_inflation_rate, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryInflationRateResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + return x.InflationRate != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + x.InflationRate = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryInflationRateResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + value := x.InflationRate + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + x.InflationRate = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + panic(fmt.Errorf("field inflation_rate of message canto.inflation.v1.QueryInflationRateResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryInflationRateResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryInflationRateResponse.inflation_rate": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryInflationRateResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryInflationRateResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryInflationRateResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryInflationRateResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryInflationRateResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryInflationRateResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryInflationRateResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryInflationRateResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryInflationRateResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.InflationRate) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryInflationRateResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.InflationRate) > 0 { + i -= len(x.InflationRate) + copy(dAtA[i:], x.InflationRate) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.InflationRate))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryInflationRateResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryInflationRateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryInflationRateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field InflationRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.InflationRate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryParamsRequest = File_canto_inflation_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_query_proto_init() + md_QueryParamsResponse = File_canto_inflation_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_query_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/inflation/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryPeriodRequest is the request type for the Query/Period RPC method. +type QueryPeriodRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryPeriodRequest) Reset() { + *x = QueryPeriodRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryPeriodRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryPeriodRequest) ProtoMessage() {} + +// Deprecated: Use QueryPeriodRequest.ProtoReflect.Descriptor instead. +func (*QueryPeriodRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryPeriodResponse is the response type for the Query/Period RPC method. +type QueryPeriodResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // period is the current minting per epoch provision value. + Period uint64 `protobuf:"varint,1,opt,name=period,proto3" json:"period,omitempty"` +} + +func (x *QueryPeriodResponse) Reset() { + *x = QueryPeriodResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryPeriodResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryPeriodResponse) ProtoMessage() {} + +// Deprecated: Use QueryPeriodResponse.ProtoReflect.Descriptor instead. +func (*QueryPeriodResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryPeriodResponse) GetPeriod() uint64 { + if x != nil { + return x.Period + } + return 0 +} + +// QueryEpochMintProvisionRequest is the request type for the +// Query/EpochMintProvision RPC method. +type QueryEpochMintProvisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryEpochMintProvisionRequest) Reset() { + *x = QueryEpochMintProvisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryEpochMintProvisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryEpochMintProvisionRequest) ProtoMessage() {} + +// Deprecated: Use QueryEpochMintProvisionRequest.ProtoReflect.Descriptor instead. +func (*QueryEpochMintProvisionRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{2} +} + +// QueryEpochMintProvisionResponse is the response type for the +// Query/EpochMintProvision RPC method. +type QueryEpochMintProvisionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // epoch_mint_provision is the current minting per epoch provision value. + EpochMintProvision *v1beta1.DecCoin `protobuf:"bytes,1,opt,name=epoch_mint_provision,json=epochMintProvision,proto3" json:"epoch_mint_provision,omitempty"` +} + +func (x *QueryEpochMintProvisionResponse) Reset() { + *x = QueryEpochMintProvisionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryEpochMintProvisionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryEpochMintProvisionResponse) ProtoMessage() {} + +// Deprecated: Use QueryEpochMintProvisionResponse.ProtoReflect.Descriptor instead. +func (*QueryEpochMintProvisionResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{3} +} + +func (x *QueryEpochMintProvisionResponse) GetEpochMintProvision() *v1beta1.DecCoin { + if x != nil { + return x.EpochMintProvision + } + return nil +} + +// QuerySkippedEpochsRequest is the request type for the Query/SkippedEpochs RPC +// method. +type QuerySkippedEpochsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QuerySkippedEpochsRequest) Reset() { + *x = QuerySkippedEpochsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QuerySkippedEpochsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QuerySkippedEpochsRequest) ProtoMessage() {} + +// Deprecated: Use QuerySkippedEpochsRequest.ProtoReflect.Descriptor instead. +func (*QuerySkippedEpochsRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{4} +} + +// QuerySkippedEpochsResponse is the response type for the Query/SkippedEpochs +// RPC method. +type QuerySkippedEpochsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // number of epochs that the inflation module has been disabled. + SkippedEpochs uint64 `protobuf:"varint,1,opt,name=skipped_epochs,json=skippedEpochs,proto3" json:"skipped_epochs,omitempty"` +} + +func (x *QuerySkippedEpochsResponse) Reset() { + *x = QuerySkippedEpochsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QuerySkippedEpochsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QuerySkippedEpochsResponse) ProtoMessage() {} + +// Deprecated: Use QuerySkippedEpochsResponse.ProtoReflect.Descriptor instead. +func (*QuerySkippedEpochsResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{5} +} + +func (x *QuerySkippedEpochsResponse) GetSkippedEpochs() uint64 { + if x != nil { + return x.SkippedEpochs + } + return 0 +} + +// QueryCirculatingSupplyRequest is the request type for the +// Query/CirculatingSupply RPC method. +type QueryCirculatingSupplyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryCirculatingSupplyRequest) Reset() { + *x = QueryCirculatingSupplyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCirculatingSupplyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCirculatingSupplyRequest) ProtoMessage() {} + +// Deprecated: Use QueryCirculatingSupplyRequest.ProtoReflect.Descriptor instead. +func (*QueryCirculatingSupplyRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{6} +} + +// QueryCirculatingSupplyResponse is the response type for the +// Query/CirculatingSupply RPC method. +type QueryCirculatingSupplyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // total amount of coins in circulation + CirculatingSupply *v1beta1.DecCoin `protobuf:"bytes,1,opt,name=circulating_supply,json=circulatingSupply,proto3" json:"circulating_supply,omitempty"` +} + +func (x *QueryCirculatingSupplyResponse) Reset() { + *x = QueryCirculatingSupplyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryCirculatingSupplyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryCirculatingSupplyResponse) ProtoMessage() {} + +// Deprecated: Use QueryCirculatingSupplyResponse.ProtoReflect.Descriptor instead. +func (*QueryCirculatingSupplyResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *QueryCirculatingSupplyResponse) GetCirculatingSupply() *v1beta1.DecCoin { + if x != nil { + return x.CirculatingSupply + } + return nil +} + +// QueryInflationRateRequest is the request type for the Query/InflationRate RPC +// method. +type QueryInflationRateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryInflationRateRequest) Reset() { + *x = QueryInflationRateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryInflationRateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryInflationRateRequest) ProtoMessage() {} + +// Deprecated: Use QueryInflationRateRequest.ProtoReflect.Descriptor instead. +func (*QueryInflationRateRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{8} +} + +// QueryInflationRateResponse is the response type for the Query/InflationRate +// RPC method. +type QueryInflationRateResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // rate by which the total supply increases within one period + InflationRate string `protobuf:"bytes,1,opt,name=inflation_rate,json=inflationRate,proto3" json:"inflation_rate,omitempty"` +} + +func (x *QueryInflationRateResponse) Reset() { + *x = QueryInflationRateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryInflationRateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryInflationRateResponse) ProtoMessage() {} + +// Deprecated: Use QueryInflationRateResponse.ProtoReflect.Descriptor instead. +func (*QueryInflationRateResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{9} +} + +func (x *QueryInflationRateResponse) GetInflationRate() string { + if x != nil { + return x.InflationRate + } + return "" +} + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{10} +} + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_query_proto_rawDescGZIP(), []int{11} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_inflation_v1_query_proto protoreflect.FileDescriptor + +var file_canto_inflation_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x12, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, + 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2d, 0x0a, 0x13, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa7, 0x01, 0x0a, + 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x6e, 0x74, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x83, 0x01, 0x0a, 0x14, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x33, 0xc8, + 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, + 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, + 0x6e, 0x73, 0x52, 0x12, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x1b, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, + 0x70, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x70, + 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x70, 0x70, + 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x1e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x43, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x75, + 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, + 0x12, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x70, + 0x70, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x33, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, + 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x11, 0x63, 0x69, + 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, + 0x1b, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x1a, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x69, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x61, 0x74, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, + 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x32, 0x9e, 0x07, 0x0a, 0x05, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7d, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, + 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x12, 0xaf, 0x01, 0x0a, 0x12, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x69, 0x6e, 0x74, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, + 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, + 0x31, 0x2f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x9a, 0x01, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x70, 0x70, + 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, + 0x22, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x11, 0x43, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x69, 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x69, + 0x72, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, + 0x12, 0x9a, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x12, 0x7d, 0x0a, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, + 0x12, 0x1a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0xbf, 0x01, 0x0a, + 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, + 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, + 0x3a, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_inflation_v1_query_proto_rawDescOnce sync.Once + file_canto_inflation_v1_query_proto_rawDescData = file_canto_inflation_v1_query_proto_rawDesc +) + +func file_canto_inflation_v1_query_proto_rawDescGZIP() []byte { + file_canto_inflation_v1_query_proto_rawDescOnce.Do(func() { + file_canto_inflation_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_inflation_v1_query_proto_rawDescData) + }) + return file_canto_inflation_v1_query_proto_rawDescData +} + +var file_canto_inflation_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_canto_inflation_v1_query_proto_goTypes = []interface{}{ + (*QueryPeriodRequest)(nil), // 0: canto.inflation.v1.QueryPeriodRequest + (*QueryPeriodResponse)(nil), // 1: canto.inflation.v1.QueryPeriodResponse + (*QueryEpochMintProvisionRequest)(nil), // 2: canto.inflation.v1.QueryEpochMintProvisionRequest + (*QueryEpochMintProvisionResponse)(nil), // 3: canto.inflation.v1.QueryEpochMintProvisionResponse + (*QuerySkippedEpochsRequest)(nil), // 4: canto.inflation.v1.QuerySkippedEpochsRequest + (*QuerySkippedEpochsResponse)(nil), // 5: canto.inflation.v1.QuerySkippedEpochsResponse + (*QueryCirculatingSupplyRequest)(nil), // 6: canto.inflation.v1.QueryCirculatingSupplyRequest + (*QueryCirculatingSupplyResponse)(nil), // 7: canto.inflation.v1.QueryCirculatingSupplyResponse + (*QueryInflationRateRequest)(nil), // 8: canto.inflation.v1.QueryInflationRateRequest + (*QueryInflationRateResponse)(nil), // 9: canto.inflation.v1.QueryInflationRateResponse + (*QueryParamsRequest)(nil), // 10: canto.inflation.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 11: canto.inflation.v1.QueryParamsResponse + (*v1beta1.DecCoin)(nil), // 12: cosmos.base.v1beta1.DecCoin + (*Params)(nil), // 13: canto.inflation.v1.Params +} +var file_canto_inflation_v1_query_proto_depIdxs = []int32{ + 12, // 0: canto.inflation.v1.QueryEpochMintProvisionResponse.epoch_mint_provision:type_name -> cosmos.base.v1beta1.DecCoin + 12, // 1: canto.inflation.v1.QueryCirculatingSupplyResponse.circulating_supply:type_name -> cosmos.base.v1beta1.DecCoin + 13, // 2: canto.inflation.v1.QueryParamsResponse.params:type_name -> canto.inflation.v1.Params + 0, // 3: canto.inflation.v1.Query.Period:input_type -> canto.inflation.v1.QueryPeriodRequest + 2, // 4: canto.inflation.v1.Query.EpochMintProvision:input_type -> canto.inflation.v1.QueryEpochMintProvisionRequest + 4, // 5: canto.inflation.v1.Query.SkippedEpochs:input_type -> canto.inflation.v1.QuerySkippedEpochsRequest + 6, // 6: canto.inflation.v1.Query.CirculatingSupply:input_type -> canto.inflation.v1.QueryCirculatingSupplyRequest + 8, // 7: canto.inflation.v1.Query.InflationRate:input_type -> canto.inflation.v1.QueryInflationRateRequest + 10, // 8: canto.inflation.v1.Query.Params:input_type -> canto.inflation.v1.QueryParamsRequest + 1, // 9: canto.inflation.v1.Query.Period:output_type -> canto.inflation.v1.QueryPeriodResponse + 3, // 10: canto.inflation.v1.Query.EpochMintProvision:output_type -> canto.inflation.v1.QueryEpochMintProvisionResponse + 5, // 11: canto.inflation.v1.Query.SkippedEpochs:output_type -> canto.inflation.v1.QuerySkippedEpochsResponse + 7, // 12: canto.inflation.v1.Query.CirculatingSupply:output_type -> canto.inflation.v1.QueryCirculatingSupplyResponse + 9, // 13: canto.inflation.v1.Query.InflationRate:output_type -> canto.inflation.v1.QueryInflationRateResponse + 11, // 14: canto.inflation.v1.Query.Params:output_type -> canto.inflation.v1.QueryParamsResponse + 9, // [9:15] is the sub-list for method output_type + 3, // [3:9] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_canto_inflation_v1_query_proto_init() } +func file_canto_inflation_v1_query_proto_init() { + if File_canto_inflation_v1_query_proto != nil { + return + } + file_canto_inflation_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_inflation_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryPeriodRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryPeriodResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryEpochMintProvisionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryEpochMintProvisionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QuerySkippedEpochsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QuerySkippedEpochsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCirculatingSupplyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCirculatingSupplyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryInflationRateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryInflationRateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_inflation_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 12, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_inflation_v1_query_proto_goTypes, + DependencyIndexes: file_canto_inflation_v1_query_proto_depIdxs, + MessageInfos: file_canto_inflation_v1_query_proto_msgTypes, + }.Build() + File_canto_inflation_v1_query_proto = out.File + file_canto_inflation_v1_query_proto_rawDesc = nil + file_canto_inflation_v1_query_proto_goTypes = nil + file_canto_inflation_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/inflation/v1/query_grpc.pb.go b/api/canto/inflation/v1/query_grpc.pb.go new file mode 100644 index 000000000..5ab51362b --- /dev/null +++ b/api/canto/inflation/v1/query_grpc.pb.go @@ -0,0 +1,308 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/inflation/v1/query.proto + +package inflationv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Period_FullMethodName = "/canto.inflation.v1.Query/Period" + Query_EpochMintProvision_FullMethodName = "/canto.inflation.v1.Query/EpochMintProvision" + Query_SkippedEpochs_FullMethodName = "/canto.inflation.v1.Query/SkippedEpochs" + Query_CirculatingSupply_FullMethodName = "/canto.inflation.v1.Query/CirculatingSupply" + Query_InflationRate_FullMethodName = "/canto.inflation.v1.Query/InflationRate" + Query_Params_FullMethodName = "/canto.inflation.v1.Query/Params" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Period retrieves current period. + Period(ctx context.Context, in *QueryPeriodRequest, opts ...grpc.CallOption) (*QueryPeriodResponse, error) + // EpochMintProvision retrieves current minting epoch provision value. + EpochMintProvision(ctx context.Context, in *QueryEpochMintProvisionRequest, opts ...grpc.CallOption) (*QueryEpochMintProvisionResponse, error) + // SkippedEpochs retrieves the total number of skipped epochs. + SkippedEpochs(ctx context.Context, in *QuerySkippedEpochsRequest, opts ...grpc.CallOption) (*QuerySkippedEpochsResponse, error) + // CirculatingSupply retrieves the total number of tokens that are in + // circulation (i.e. excluding unvested tokens). + CirculatingSupply(ctx context.Context, in *QueryCirculatingSupplyRequest, opts ...grpc.CallOption) (*QueryCirculatingSupplyResponse, error) + // InflationRate retrieves the inflation rate of the current period. + InflationRate(ctx context.Context, in *QueryInflationRateRequest, opts ...grpc.CallOption) (*QueryInflationRateResponse, error) + // Params retrieves the total set of minting parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Period(ctx context.Context, in *QueryPeriodRequest, opts ...grpc.CallOption) (*QueryPeriodResponse, error) { + out := new(QueryPeriodResponse) + err := c.cc.Invoke(ctx, Query_Period_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) EpochMintProvision(ctx context.Context, in *QueryEpochMintProvisionRequest, opts ...grpc.CallOption) (*QueryEpochMintProvisionResponse, error) { + out := new(QueryEpochMintProvisionResponse) + err := c.cc.Invoke(ctx, Query_EpochMintProvision_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) SkippedEpochs(ctx context.Context, in *QuerySkippedEpochsRequest, opts ...grpc.CallOption) (*QuerySkippedEpochsResponse, error) { + out := new(QuerySkippedEpochsResponse) + err := c.cc.Invoke(ctx, Query_SkippedEpochs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) CirculatingSupply(ctx context.Context, in *QueryCirculatingSupplyRequest, opts ...grpc.CallOption) (*QueryCirculatingSupplyResponse, error) { + out := new(QueryCirculatingSupplyResponse) + err := c.cc.Invoke(ctx, Query_CirculatingSupply_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) InflationRate(ctx context.Context, in *QueryInflationRateRequest, opts ...grpc.CallOption) (*QueryInflationRateResponse, error) { + out := new(QueryInflationRateResponse) + err := c.cc.Invoke(ctx, Query_InflationRate_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Period retrieves current period. + Period(context.Context, *QueryPeriodRequest) (*QueryPeriodResponse, error) + // EpochMintProvision retrieves current minting epoch provision value. + EpochMintProvision(context.Context, *QueryEpochMintProvisionRequest) (*QueryEpochMintProvisionResponse, error) + // SkippedEpochs retrieves the total number of skipped epochs. + SkippedEpochs(context.Context, *QuerySkippedEpochsRequest) (*QuerySkippedEpochsResponse, error) + // CirculatingSupply retrieves the total number of tokens that are in + // circulation (i.e. excluding unvested tokens). + CirculatingSupply(context.Context, *QueryCirculatingSupplyRequest) (*QueryCirculatingSupplyResponse, error) + // InflationRate retrieves the inflation rate of the current period. + InflationRate(context.Context, *QueryInflationRateRequest) (*QueryInflationRateResponse, error) + // Params retrieves the total set of minting parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Period(context.Context, *QueryPeriodRequest) (*QueryPeriodResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Period not implemented") +} +func (UnimplementedQueryServer) EpochMintProvision(context.Context, *QueryEpochMintProvisionRequest) (*QueryEpochMintProvisionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method EpochMintProvision not implemented") +} +func (UnimplementedQueryServer) SkippedEpochs(context.Context, *QuerySkippedEpochsRequest) (*QuerySkippedEpochsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SkippedEpochs not implemented") +} +func (UnimplementedQueryServer) CirculatingSupply(context.Context, *QueryCirculatingSupplyRequest) (*QueryCirculatingSupplyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CirculatingSupply not implemented") +} +func (UnimplementedQueryServer) InflationRate(context.Context, *QueryInflationRateRequest) (*QueryInflationRateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InflationRate not implemented") +} +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Period_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryPeriodRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Period(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Period_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Period(ctx, req.(*QueryPeriodRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_EpochMintProvision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryEpochMintProvisionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).EpochMintProvision(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_EpochMintProvision_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).EpochMintProvision(ctx, req.(*QueryEpochMintProvisionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_SkippedEpochs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QuerySkippedEpochsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).SkippedEpochs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_SkippedEpochs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).SkippedEpochs(ctx, req.(*QuerySkippedEpochsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_CirculatingSupply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCirculatingSupplyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CirculatingSupply(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_CirculatingSupply_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CirculatingSupply(ctx, req.(*QueryCirculatingSupplyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_InflationRate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryInflationRateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).InflationRate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_InflationRate_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).InflationRate(ctx, req.(*QueryInflationRateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.inflation.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Period", + Handler: _Query_Period_Handler, + }, + { + MethodName: "EpochMintProvision", + Handler: _Query_EpochMintProvision_Handler, + }, + { + MethodName: "SkippedEpochs", + Handler: _Query_SkippedEpochs_Handler, + }, + { + MethodName: "CirculatingSupply", + Handler: _Query_CirculatingSupply_Handler, + }, + { + MethodName: "InflationRate", + Handler: _Query_InflationRate_Handler, + }, + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/inflation/v1/query.proto", +} diff --git a/api/canto/onboarding/v1/genesis.pulsar.go b/api/canto/onboarding/v1/genesis.pulsar.go new file mode 100644 index 000000000..f8ad2da5b --- /dev/null +++ b/api/canto/onboarding/v1/genesis.pulsar.go @@ -0,0 +1,1270 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package onboardingv1 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_onboarding_v1_genesis_proto_init() + md_GenesisState = File_canto_onboarding_v1_genesis_proto.Messages().ByName("GenesisState") + fd_GenesisState_params = md_GenesisState.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) + +type fastReflection_GenesisState GenesisState + +func (x *GenesisState) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisState)(x) +} + +func (x *GenesisState) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_genesis_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisState_messageType fastReflection_GenesisState_messageType +var _ protoreflect.MessageType = fastReflection_GenesisState_messageType{} + +type fastReflection_GenesisState_messageType struct{} + +func (x fastReflection_GenesisState_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisState)(nil) +} +func (x fastReflection_GenesisState_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} +func (x fastReflection_GenesisState_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisState) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisState +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisState) Type() protoreflect.MessageType { + return _fastReflection_GenesisState_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisState) New() protoreflect.Message { + return new(fastReflection_GenesisState) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisState) Interface() protoreflect.ProtoMessage { + return (*GenesisState)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_GenesisState_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.onboarding.v1.GenesisState.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.onboarding.v1.GenesisState.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.onboarding.v1.GenesisState.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.onboarding.v1.GenesisState.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.GenesisState.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.GenesisState.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.GenesisState")) + } + panic(fmt.Errorf("message canto.onboarding.v1.GenesisState does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisState) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.GenesisState", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisState) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisState) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisState) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisState) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var _ protoreflect.List = (*_Params_4_list)(nil) + +type _Params_4_list struct { + list *[]string +} + +func (x *_Params_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) +} + +func (x *_Params_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_Params_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_4_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message Params at list field WhitelistedChannels as it is not of Message kind")) +} + +func (x *_Params_4_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_Params_4_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) +} + +func (x *_Params_4_list) IsValid() bool { + return x.list != nil +} + +var ( + md_Params protoreflect.MessageDescriptor + fd_Params_enable_onboarding protoreflect.FieldDescriptor + fd_Params_auto_swap_threshold protoreflect.FieldDescriptor + fd_Params_whitelisted_channels protoreflect.FieldDescriptor +) + +func init() { + file_canto_onboarding_v1_genesis_proto_init() + md_Params = File_canto_onboarding_v1_genesis_proto.Messages().ByName("Params") + fd_Params_enable_onboarding = md_Params.Fields().ByName("enable_onboarding") + fd_Params_auto_swap_threshold = md_Params.Fields().ByName("auto_swap_threshold") + fd_Params_whitelisted_channels = md_Params.Fields().ByName("whitelisted_channels") +} + +var _ protoreflect.Message = (*fastReflection_Params)(nil) + +type fastReflection_Params Params + +func (x *Params) ProtoReflect() protoreflect.Message { + return (*fastReflection_Params)(x) +} + +func (x *Params) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_genesis_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_Params_messageType fastReflection_Params_messageType +var _ protoreflect.MessageType = fastReflection_Params_messageType{} + +type fastReflection_Params_messageType struct{} + +func (x fastReflection_Params_messageType) Zero() protoreflect.Message { + return (*fastReflection_Params)(nil) +} +func (x fastReflection_Params_messageType) New() protoreflect.Message { + return new(fastReflection_Params) +} +func (x fastReflection_Params_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_Params) Descriptor() protoreflect.MessageDescriptor { + return md_Params +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_Params) Type() protoreflect.MessageType { + return _fastReflection_Params_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_Params) New() protoreflect.Message { + return new(fastReflection_Params) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { + return (*Params)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.EnableOnboarding != false { + value := protoreflect.ValueOfBool(x.EnableOnboarding) + if !f(fd_Params_enable_onboarding, value) { + return + } + } + if x.AutoSwapThreshold != "" { + value := protoreflect.ValueOfString(x.AutoSwapThreshold) + if !f(fd_Params_auto_swap_threshold, value) { + return + } + } + if len(x.WhitelistedChannels) != 0 { + value := protoreflect.ValueOfList(&_Params_4_list{list: &x.WhitelistedChannels}) + if !f(fd_Params_whitelisted_channels, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.onboarding.v1.Params.enable_onboarding": + return x.EnableOnboarding != false + case "canto.onboarding.v1.Params.auto_swap_threshold": + return x.AutoSwapThreshold != "" + case "canto.onboarding.v1.Params.whitelisted_channels": + return len(x.WhitelistedChannels) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.onboarding.v1.Params.enable_onboarding": + x.EnableOnboarding = false + case "canto.onboarding.v1.Params.auto_swap_threshold": + x.AutoSwapThreshold = "" + case "canto.onboarding.v1.Params.whitelisted_channels": + x.WhitelistedChannels = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.onboarding.v1.Params.enable_onboarding": + value := x.EnableOnboarding + return protoreflect.ValueOfBool(value) + case "canto.onboarding.v1.Params.auto_swap_threshold": + value := x.AutoSwapThreshold + return protoreflect.ValueOfString(value) + case "canto.onboarding.v1.Params.whitelisted_channels": + if len(x.WhitelistedChannels) == 0 { + return protoreflect.ValueOfList(&_Params_4_list{}) + } + listValue := &_Params_4_list{list: &x.WhitelistedChannels} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.onboarding.v1.Params.enable_onboarding": + x.EnableOnboarding = value.Bool() + case "canto.onboarding.v1.Params.auto_swap_threshold": + x.AutoSwapThreshold = value.Interface().(string) + case "canto.onboarding.v1.Params.whitelisted_channels": + lv := value.List() + clv := lv.(*_Params_4_list) + x.WhitelistedChannels = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.Params.whitelisted_channels": + if x.WhitelistedChannels == nil { + x.WhitelistedChannels = []string{} + } + value := &_Params_4_list{list: &x.WhitelistedChannels} + return protoreflect.ValueOfList(value) + case "canto.onboarding.v1.Params.enable_onboarding": + panic(fmt.Errorf("field enable_onboarding of message canto.onboarding.v1.Params is not mutable")) + case "canto.onboarding.v1.Params.auto_swap_threshold": + panic(fmt.Errorf("field auto_swap_threshold of message canto.onboarding.v1.Params is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.Params.enable_onboarding": + return protoreflect.ValueOfBool(false) + case "canto.onboarding.v1.Params.auto_swap_threshold": + return protoreflect.ValueOfString("") + case "canto.onboarding.v1.Params.whitelisted_channels": + list := []string{} + return protoreflect.ValueOfList(&_Params_4_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.Params")) + } + panic(fmt.Errorf("message canto.onboarding.v1.Params does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_Params) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.Params", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_Params) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_Params) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_Params) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.EnableOnboarding { + n += 2 + } + l = len(x.AutoSwapThreshold) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.WhitelistedChannels) > 0 { + for _, s := range x.WhitelistedChannels { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.WhitelistedChannels) > 0 { + for iNdEx := len(x.WhitelistedChannels) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.WhitelistedChannels[iNdEx]) + copy(dAtA[i:], x.WhitelistedChannels[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.WhitelistedChannels[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(x.AutoSwapThreshold) > 0 { + i -= len(x.AutoSwapThreshold) + copy(dAtA[i:], x.AutoSwapThreshold) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.AutoSwapThreshold))) + i-- + dAtA[i] = 0x1a + } + if x.EnableOnboarding { + i-- + if x.EnableOnboarding { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*Params) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EnableOnboarding", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.EnableOnboarding = bool(v != 0) + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AutoSwapThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.AutoSwapThreshold = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field WhitelistedChannels", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.WhitelistedChannels = append(x.WhitelistedChannels, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/onboarding/v1/genesis.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// GenesisState defines the onboarding module's genesis state. +type GenesisState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines all the paramaters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *GenesisState) Reset() { + *x = GenesisState{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_genesis_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisState) ProtoMessage() {} + +// Deprecated: Use GenesisState.ProtoReflect.Descriptor instead. +func (*GenesisState) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_genesis_proto_rawDescGZIP(), []int{0} +} + +func (x *GenesisState) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// Params holds parameters for the onboarding module +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // enable onboarding IBC middleware + EnableOnboarding bool `protobuf:"varint,1,opt,name=enable_onboarding,json=enableOnboarding,proto3" json:"enable_onboarding,omitempty"` + AutoSwapThreshold string `protobuf:"bytes,3,opt,name=auto_swap_threshold,json=autoSwapThreshold,proto3" json:"auto_swap_threshold,omitempty"` + WhitelistedChannels []string `protobuf:"bytes,4,rep,name=whitelisted_channels,json=whitelistedChannels,proto3" json:"whitelisted_channels,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_genesis_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_genesis_proto_rawDescGZIP(), []int{1} +} + +func (x *Params) GetEnableOnboarding() bool { + if x != nil { + return x.EnableOnboarding + } + return false +} + +func (x *Params) GetAutoSwapThreshold() string { + if x != nil { + return x.AutoSwapThreshold + } + return "" +} + +func (x *Params) GetWhitelistedChannels() []string { + if x != nil { + return x.WhitelistedChannels + } + return nil +} + +var File_canto_onboarding_v1_genesis_proto protoreflect.FileDescriptor + +var file_canto_onboarding_v1_genesis_proto_rawDesc = []byte{ + 0x0a, 0x21, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x2b, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x5b, 0x0a, 0x13, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x53, 0x77, 0x61, 0x70, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x77, 0x68, 0x69, + 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x42, 0xc8, 0x01, 0x0a, + 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, + 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x6f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x4f, + 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_onboarding_v1_genesis_proto_rawDescOnce sync.Once + file_canto_onboarding_v1_genesis_proto_rawDescData = file_canto_onboarding_v1_genesis_proto_rawDesc +) + +func file_canto_onboarding_v1_genesis_proto_rawDescGZIP() []byte { + file_canto_onboarding_v1_genesis_proto_rawDescOnce.Do(func() { + file_canto_onboarding_v1_genesis_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_onboarding_v1_genesis_proto_rawDescData) + }) + return file_canto_onboarding_v1_genesis_proto_rawDescData +} + +var file_canto_onboarding_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_onboarding_v1_genesis_proto_goTypes = []interface{}{ + (*GenesisState)(nil), // 0: canto.onboarding.v1.GenesisState + (*Params)(nil), // 1: canto.onboarding.v1.Params +} +var file_canto_onboarding_v1_genesis_proto_depIdxs = []int32{ + 1, // 0: canto.onboarding.v1.GenesisState.params:type_name -> canto.onboarding.v1.Params + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_onboarding_v1_genesis_proto_init() } +func file_canto_onboarding_v1_genesis_proto_init() { + if File_canto_onboarding_v1_genesis_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_canto_onboarding_v1_genesis_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_onboarding_v1_genesis_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Params); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_onboarding_v1_genesis_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_canto_onboarding_v1_genesis_proto_goTypes, + DependencyIndexes: file_canto_onboarding_v1_genesis_proto_depIdxs, + MessageInfos: file_canto_onboarding_v1_genesis_proto_msgTypes, + }.Build() + File_canto_onboarding_v1_genesis_proto = out.File + file_canto_onboarding_v1_genesis_proto_rawDesc = nil + file_canto_onboarding_v1_genesis_proto_goTypes = nil + file_canto_onboarding_v1_genesis_proto_depIdxs = nil +} diff --git a/api/canto/onboarding/v1/query.pulsar.go b/api/canto/onboarding/v1/query.pulsar.go new file mode 100644 index 000000000..666b718a6 --- /dev/null +++ b/api/canto/onboarding/v1/query.pulsar.go @@ -0,0 +1,1007 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package onboardingv1 + +import ( + fmt "fmt" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_QueryParamsRequest protoreflect.MessageDescriptor +) + +func init() { + file_canto_onboarding_v1_query_proto_init() + md_QueryParamsRequest = File_canto_onboarding_v1_query_proto.Messages().ByName("QueryParamsRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsRequest)(nil) + +type fastReflection_QueryParamsRequest QueryParamsRequest + +func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(x) +} + +func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_query_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsRequest_messageType fastReflection_QueryParamsRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsRequest_messageType{} + +type fastReflection_QueryParamsRequest_messageType struct{} + +func (x fastReflection_QueryParamsRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsRequest)(nil) +} +func (x fastReflection_QueryParamsRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} +func (x fastReflection_QueryParamsRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsRequest) New() protoreflect.Message { + return new(fastReflection_QueryParamsRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsRequest) Interface() protoreflect.ProtoMessage { + return (*QueryParamsRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsRequest")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.QueryParamsRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryParamsResponse protoreflect.MessageDescriptor + fd_QueryParamsResponse_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_onboarding_v1_query_proto_init() + md_QueryParamsResponse = File_canto_onboarding_v1_query_proto.Messages().ByName("QueryParamsResponse") + fd_QueryParamsResponse_params = md_QueryParamsResponse.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_QueryParamsResponse)(nil) + +type fastReflection_QueryParamsResponse QueryParamsResponse + +func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(x) +} + +func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_query_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryParamsResponse_messageType fastReflection_QueryParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryParamsResponse_messageType{} + +type fastReflection_QueryParamsResponse_messageType struct{} + +func (x fastReflection_QueryParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryParamsResponse)(nil) +} +func (x fastReflection_QueryParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} +func (x fastReflection_QueryParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryParamsResponse) New() protoreflect.Message { + return new(fastReflection_QueryParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryParamsResponse) Interface() protoreflect.ProtoMessage { + return (*QueryParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_QueryParamsResponse_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.QueryParamsResponse.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.QueryParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.QueryParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.QueryParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/onboarding/v1/query.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryParamsRequest) Reset() { + *x = QueryParamsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsRequest) ProtoMessage() {} + +// Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_query_proto_rawDescGZIP(), []int{0} +} + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // params defines the parameters of the module. + Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *QueryParamsResponse) Reset() { + *x = QueryParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryParamsResponse) ProtoMessage() {} + +// Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryParamsResponse) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +var File_canto_onboarding_v1_query_proto protoreflect.FileDescriptor + +var file_canto_onboarding_v1_query_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x14, 0x0a, + 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x32, 0x8a, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x80, 0x01, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0xc6, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0a, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, + 0x76, 0x31, 0x3b, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x43, 0x4f, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_canto_onboarding_v1_query_proto_rawDescOnce sync.Once + file_canto_onboarding_v1_query_proto_rawDescData = file_canto_onboarding_v1_query_proto_rawDesc +) + +func file_canto_onboarding_v1_query_proto_rawDescGZIP() []byte { + file_canto_onboarding_v1_query_proto_rawDescOnce.Do(func() { + file_canto_onboarding_v1_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_onboarding_v1_query_proto_rawDescData) + }) + return file_canto_onboarding_v1_query_proto_rawDescData +} + +var file_canto_onboarding_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_onboarding_v1_query_proto_goTypes = []interface{}{ + (*QueryParamsRequest)(nil), // 0: canto.onboarding.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 1: canto.onboarding.v1.QueryParamsResponse + (*Params)(nil), // 2: canto.onboarding.v1.Params +} +var file_canto_onboarding_v1_query_proto_depIdxs = []int32{ + 2, // 0: canto.onboarding.v1.QueryParamsResponse.params:type_name -> canto.onboarding.v1.Params + 0, // 1: canto.onboarding.v1.Query.Params:input_type -> canto.onboarding.v1.QueryParamsRequest + 1, // 2: canto.onboarding.v1.Query.Params:output_type -> canto.onboarding.v1.QueryParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_onboarding_v1_query_proto_init() } +func file_canto_onboarding_v1_query_proto_init() { + if File_canto_onboarding_v1_query_proto != nil { + return + } + file_canto_onboarding_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_onboarding_v1_query_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_onboarding_v1_query_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_onboarding_v1_query_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_onboarding_v1_query_proto_goTypes, + DependencyIndexes: file_canto_onboarding_v1_query_proto_depIdxs, + MessageInfos: file_canto_onboarding_v1_query_proto_msgTypes, + }.Build() + File_canto_onboarding_v1_query_proto = out.File + file_canto_onboarding_v1_query_proto_rawDesc = nil + file_canto_onboarding_v1_query_proto_goTypes = nil + file_canto_onboarding_v1_query_proto_depIdxs = nil +} diff --git a/api/canto/onboarding/v1/query_grpc.pb.go b/api/canto/onboarding/v1/query_grpc.pb.go new file mode 100644 index 000000000..0a6ebdf7b --- /dev/null +++ b/api/canto/onboarding/v1/query_grpc.pb.go @@ -0,0 +1,111 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/onboarding/v1/query.proto + +package onboardingv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Query_Params_FullMethodName = "/canto.onboarding.v1.Query/Params" +) + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QueryClient interface { + // Params retrieves the total set of onboarding parameters. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc.ClientConnInterface +} + +func NewQueryClient(cc grpc.ClientConnInterface) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, Query_Params_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +// All implementations must embed UnimplementedQueryServer +// for forward compatibility +type QueryServer interface { + // Params retrieves the total set of onboarding parameters. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) + mustEmbedUnimplementedQueryServer() +} + +// UnimplementedQueryServer must be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (UnimplementedQueryServer) Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} +func (UnimplementedQueryServer) mustEmbedUnimplementedQueryServer() {} + +// UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QueryServer will +// result in compilation errors. +type UnsafeQueryServer interface { + mustEmbedUnimplementedQueryServer() +} + +func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer) { + s.RegisterService(&Query_ServiceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_Params_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Query_ServiceDesc is the grpc.ServiceDesc for Query service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Query_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.onboarding.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/onboarding/v1/query.proto", +} diff --git a/app/app.go b/app/app.go index d32a9e174..77f4577c7 100644 --- a/app/app.go +++ b/app/app.go @@ -469,7 +469,7 @@ func NewCanto( // } // app.txConfig = txConfig - stakingKeeper := stakingkeeper.NewKeeper( + app.StakingKeeper = stakingkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, @@ -670,7 +670,7 @@ func NewCanto( app.AccountKeeper, app.BankKeeper, app.DistrKeeper, - stakingKeeper, + app.StakingKeeper, authtypes.FeeCollectorName, ) diff --git a/proto/buf.gen.pulsar.yaml b/proto/buf.gen.pulsar.yaml new file mode 100644 index 000000000..41cfbe2af --- /dev/null +++ b/proto/buf.gen.pulsar.yaml @@ -0,0 +1,20 @@ +version: v1 +managed: + enabled: true + go_package_prefix: + default: cosmossdk.io/api + except: + - buf.build/googleapis/googleapis + - buf.build/cosmos/gogo-proto + - buf.build/cosmos/cosmos-proto + override: +plugins: + - name: go-pulsar + out: ../api + opt: paths=source_relative + - name: go-grpc + out: ../api + opt: paths=source_relative + - name: go-cosmos-orm + out: ../api + opt: paths=source_relative diff --git a/proto/canto/coinswap/v1/tx.proto b/proto/canto/coinswap/v1/tx.proto index f203a7547..45caa152f 100644 --- a/proto/canto/coinswap/v1/tx.proto +++ b/proto/canto/coinswap/v1/tx.proto @@ -5,12 +5,15 @@ import "canto/coinswap/v1/coinswap.proto"; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; +import "cosmos/msg/v1/msg.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/coinswap/types"; option (gogoproto.goproto_getters_all) = false; // Msg defines the coinswap Msg service service Msg { + option (cosmos.msg.v1.service) = true; + // AddLiquidity defines a method for depositing some tokens to the liquidity // pool rpc AddLiquidity(MsgAddLiquidity) returns (MsgAddLiquidityResponse); diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index 266e99ee1..8b904bd5a 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -5,11 +5,14 @@ import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; +import "cosmos/msg/v1/msg.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; // Msg defines the erc20 Msg service. service Msg { + option (cosmos.msg.v1.service) = true; + // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom // that is registered on the token mapping. rpc ConvertCoin(MsgConvertCoin) returns (MsgConvertCoinResponse) { diff --git a/proto/canto/govshuttle/v1/tx.proto b/proto/canto/govshuttle/v1/tx.proto index 2cfe96ec5..50d3f19a8 100644 --- a/proto/canto/govshuttle/v1/tx.proto +++ b/proto/canto/govshuttle/v1/tx.proto @@ -1,12 +1,16 @@ syntax = "proto3"; package canto.govshuttle.v1; +import "cosmos/msg/v1/msg.proto"; + // this line is used by starport scaffolding # proto/tx/import option go_package = "github.com/Canto-Network/Canto/v7/x/govshuttle/types"; // Msg defines the Msg service. service Msg { + option (cosmos.msg.v1.service) = true; + // this line is used by starport scaffolding # proto/tx/rpc } diff --git a/scripts/protocgen-pulsar.sh b/scripts/protocgen-pulsar.sh index 43c24bab6..93198eece 100755 --- a/scripts/protocgen-pulsar.sh +++ b/scripts/protocgen-pulsar.sh @@ -1,5 +1,3 @@ -#!/usr/bin/env bash - # this script is for generating protobuf files for the new google.golang.org/protobuf API set -eo pipefail diff --git a/x/coinswap/types/tx.pb.go b/x/coinswap/types/tx.pb.go index 2aa499a87..37a704aec 100644 --- a/x/coinswap/types/tx.pb.go +++ b/x/coinswap/types/tx.pb.go @@ -9,6 +9,7 @@ import ( fmt "fmt" _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -281,53 +282,54 @@ func init() { func init() { proto.RegisterFile("canto/coinswap/v1/tx.proto", fileDescriptor_003205f46878c077) } var fileDescriptor_003205f46878c077 = []byte{ - // 730 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcd, 0x4e, 0xdb, 0x4a, - 0x18, 0x8d, 0x13, 0x40, 0x61, 0x6e, 0x80, 0x60, 0xe0, 0x62, 0xbc, 0x70, 0x72, 0x2d, 0xdd, 0x2b, - 0x74, 0x25, 0x6c, 0x41, 0x2b, 0xd1, 0x76, 0xd3, 0x12, 0xa4, 0xaa, 0x48, 0x4d, 0x41, 0x4e, 0x57, - 0x55, 0x45, 0x34, 0x89, 0x47, 0xce, 0x28, 0x78, 0x26, 0xcd, 0x4c, 0xfe, 0x1e, 0xa0, 0xfb, 0xbe, - 0x43, 0x5f, 0xa1, 0x0f, 0xc1, 0x12, 0x55, 0x5d, 0x54, 0x5d, 0x44, 0x2d, 0xbc, 0x01, 0xbb, 0xee, - 0xaa, 0xf1, 0x4c, 0x9c, 0xe0, 0x50, 0x82, 0xba, 0xf3, 0xf8, 0x3b, 0x67, 0xce, 0x7c, 0xe7, 0x7c, - 0x63, 0x03, 0xb3, 0x0e, 0x09, 0xa7, 0x6e, 0x9d, 0x62, 0xc2, 0x7a, 0xb0, 0xe5, 0x76, 0x77, 0x5d, - 0xde, 0x77, 0x5a, 0x6d, 0xca, 0xa9, 0xbe, 0x1a, 0xd5, 0x9c, 0x51, 0xcd, 0xe9, 0xee, 0x9a, 0xc5, - 0x69, 0x78, 0x5c, 0x8e, 0x48, 0xa6, 0x55, 0xa7, 0x2c, 0xa4, 0xcc, 0xad, 0x41, 0x86, 0xdc, 0xee, - 0x6e, 0x0d, 0x71, 0x28, 0x31, 0xaa, 0xbe, 0x1e, 0xd0, 0x80, 0x46, 0x8f, 0xae, 0x78, 0x52, 0x6f, - 0xb7, 0x24, 0xab, 0x2a, 0x0b, 0x72, 0x21, 0x4b, 0xf6, 0xcf, 0x34, 0x58, 0x29, 0xb3, 0xe0, 0xc0, - 0xf7, 0x5f, 0xe2, 0x77, 0x1d, 0xec, 0x63, 0x3e, 0xd0, 0x4f, 0xc0, 0x62, 0x08, 0xfb, 0x55, 0x4e, - 0x9b, 0x88, 0x18, 0x5a, 0x51, 0xdb, 0xfe, 0x6b, 0x6f, 0xcb, 0x51, 0x2c, 0x21, 0xec, 0x28, 0x61, - 0xe7, 0x90, 0x62, 0x52, 0x32, 0xce, 0x87, 0x85, 0xd4, 0xf5, 0xb0, 0x90, 0x1f, 0xc0, 0xf0, 0xec, - 0x89, 0x1d, 0x33, 0x6d, 0x2f, 0x1b, 0xc2, 0xfe, 0x6b, 0xf1, 0xa8, 0x77, 0x81, 0x8e, 0xfa, 0xb0, - 0xce, 0xab, 0x8c, 0x43, 0xe2, 0xc3, 0xb6, 0x5f, 0x85, 0x21, 0x37, 0xd2, 0x45, 0x6d, 0x7b, 0xb1, - 0xf4, 0x42, 0xf0, 0xbf, 0x0d, 0x0b, 0x1b, 0x52, 0x81, 0xf9, 0x4d, 0x07, 0x53, 0x37, 0x84, 0xbc, - 0xe1, 0x1c, 0x11, 0x7e, 0x3d, 0x2c, 0x6c, 0xc9, 0x8d, 0xa7, 0x37, 0xb0, 0x3f, 0x7f, 0xda, 0x01, - 0xea, 0x5c, 0x47, 0x84, 0x7b, 0xf9, 0x08, 0x52, 0x51, 0x88, 0x83, 0x90, 0xeb, 0x0d, 0xb0, 0x14, - 0x62, 0x52, 0x3d, 0x1b, 0xb5, 0x66, 0x64, 0x22, 0xc9, 0xc3, 0x59, 0x92, 0xeb, 0xaa, 0x97, 0x49, - 0x6e, 0x52, 0x2d, 0x17, 0x62, 0x32, 0xf6, 0xcc, 0x04, 0x59, 0x1f, 0x41, 0xff, 0x0c, 0x13, 0x64, - 0xcc, 0x15, 0xb5, 0xed, 0x8c, 0x17, 0xaf, 0xf5, 0xbf, 0xc1, 0x02, 0x43, 0xc4, 0x47, 0x6d, 0x63, - 0x5e, 0xc8, 0x7b, 0x6a, 0x65, 0x57, 0xc0, 0x66, 0xc2, 0x7a, 0x0f, 0xb1, 0x16, 0x25, 0x0c, 0xe9, - 0x8f, 0x00, 0x08, 0x31, 0xe1, 0xf7, 0xcc, 0xc0, 0x5b, 0x14, 0xe0, 0xc8, 0x6a, 0xfb, 0x7d, 0x06, - 0xe8, 0x65, 0x16, 0x78, 0x28, 0xa4, 0x5d, 0x34, 0x3e, 0x5f, 0x13, 0xe8, 0x3d, 0xcc, 0x1b, 0x7e, - 0x1b, 0xf6, 0x26, 0xec, 0x98, 0x19, 0xee, 0x3f, 0x2a, 0x5c, 0x95, 0xc1, 0xf4, 0x16, 0xb6, 0xb7, - 0x3a, 0x7a, 0x39, 0x16, 0x7b, 0x0b, 0xc4, 0x81, 0xd4, 0xe1, 0x65, 0xca, 0x4f, 0x67, 0x59, 0x9e, - 0x1f, 0x5b, 0x2e, 0xc7, 0x27, 0x61, 0x77, 0x36, 0xc4, 0x44, 0x0e, 0x53, 0x0b, 0xe4, 0x05, 0xea, - 0xc6, 0x28, 0xc9, 0x5c, 0x9f, 0xcf, 0x12, 0xd9, 0x1c, 0x8b, 0xdc, 0x35, 0x48, 0xcb, 0x21, 0x26, - 0x93, 0x63, 0xf4, 0x27, 0xe1, 0x9e, 0x02, 0x73, 0x3a, 0x86, 0x38, 0xdf, 0x67, 0x60, 0x39, 0xf6, - 0x32, 0xba, 0xe2, 0x86, 0x56, 0xcc, 0xdc, 0x9d, 0xf1, 0xd2, 0x88, 0x20, 0x56, 0xcc, 0xfe, 0xa2, - 0x81, 0x5c, 0x99, 0x05, 0x95, 0x1e, 0x6c, 0x1d, 0xb7, 0x7d, 0xd4, 0xd6, 0x1f, 0x82, 0x79, 0x4c, - 0x5a, 0x1d, 0xae, 0x42, 0x35, 0x9c, 0xa9, 0xef, 0x8b, 0x73, 0x24, 0xea, 0xa5, 0x39, 0xe1, 0x92, - 0x27, 0xc1, 0xfa, 0x3e, 0x58, 0xa0, 0x1d, 0x2e, 0x68, 0xe9, 0xd1, 0x2c, 0x4c, 0xd1, 0x8e, 0x23, - 0x80, 0xe2, 0x29, 0xf8, 0x0d, 0x4f, 0x32, 0x09, 0x4f, 0x1e, 0x83, 0x1c, 0x66, 0xd5, 0x5a, 0x67, - 0x50, 0xa5, 0xe2, 0x68, 0x91, 0x67, 0xd9, 0xd2, 0xe6, 0xf5, 0xb0, 0xb0, 0x26, 0x03, 0x98, 0xac, - 0xda, 0x1e, 0xc0, 0xac, 0xd4, 0x19, 0x44, 0x5d, 0xd8, 0x1b, 0x60, 0x4d, 0x75, 0x15, 0x35, 0xad, - 0xfc, 0xda, 0xfb, 0x98, 0x06, 0x99, 0x32, 0x0b, 0xf4, 0x53, 0x90, 0xbb, 0xf1, 0xa9, 0xb2, 0x6f, - 0x39, 0x6e, 0xe2, 0x4e, 0x99, 0xff, 0xcf, 0xc6, 0xc4, 0xb9, 0x04, 0x60, 0x25, 0x79, 0x73, 0xfe, - 0xbd, 0x9d, 0x9e, 0x80, 0x99, 0x3b, 0xf7, 0x82, 0xc5, 0x42, 0x15, 0x90, 0x1d, 0x35, 0xa9, 0x17, - 0x6e, 0xa7, 0xc6, 0xd1, 0x9a, 0xff, 0xfd, 0x1e, 0x30, 0xe9, 0x52, 0xe9, 0xe4, 0xfc, 0x87, 0x95, - 0x3a, 0xbf, 0xb4, 0xb4, 0x8b, 0x4b, 0x4b, 0xfb, 0x7e, 0x69, 0x69, 0x1f, 0xae, 0xac, 0xd4, 0xc5, - 0x95, 0x95, 0xfa, 0x7a, 0x65, 0xa5, 0xde, 0xec, 0x05, 0x98, 0x37, 0x3a, 0x35, 0xa7, 0x4e, 0x43, - 0xf7, 0x50, 0xec, 0xb7, 0xf3, 0x0a, 0xf1, 0x1e, 0x6d, 0x37, 0xe5, 0xca, 0xed, 0xee, 0xbb, 0xfd, - 0xf1, 0xbf, 0x87, 0x0f, 0x5a, 0x88, 0xd5, 0x16, 0xa2, 0xbf, 0xc4, 0x83, 0x5f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x59, 0xd2, 0x0d, 0xd6, 0xc9, 0x06, 0x00, 0x00, + // 750 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x4f, 0xdb, 0x48, + 0x18, 0x8d, 0x13, 0x40, 0x61, 0x36, 0x40, 0x30, 0xb0, 0x31, 0x3e, 0x38, 0x59, 0x4b, 0xbb, 0x42, + 0x48, 0xd8, 0x82, 0x5d, 0x89, 0xdd, 0xbd, 0xb4, 0x04, 0xa9, 0x2a, 0x52, 0x53, 0x90, 0xd3, 0x53, + 0x55, 0x11, 0x4d, 0xe2, 0x91, 0x33, 0x0a, 0x33, 0x93, 0x66, 0x26, 0xbf, 0x6e, 0xbd, 0xf4, 0xde, + 0xbf, 0xa3, 0xa7, 0x1e, 0xfa, 0x47, 0x70, 0x44, 0x55, 0x0f, 0x55, 0x0f, 0x51, 0x0b, 0x87, 0xde, + 0xb9, 0xf5, 0x56, 0x8d, 0x3d, 0x71, 0x42, 0x42, 0x09, 0xea, 0xcd, 0xe3, 0xef, 0xbd, 0xef, 0xc7, + 0x7b, 0xdf, 0xd8, 0xc0, 0xac, 0x41, 0x2a, 0x98, 0x5b, 0x63, 0x98, 0xf2, 0x2e, 0x6c, 0xba, 0x9d, + 0x5d, 0x57, 0xf4, 0x9c, 0x66, 0x8b, 0x09, 0xa6, 0xaf, 0x86, 0x31, 0x67, 0x18, 0x73, 0x3a, 0xbb, + 0x66, 0x61, 0x1a, 0x1e, 0x87, 0x43, 0x92, 0x69, 0xd5, 0x18, 0x27, 0x8c, 0xbb, 0x55, 0xc8, 0x91, + 0xdb, 0xd9, 0xad, 0x22, 0x01, 0x23, 0x8c, 0x8a, 0xaf, 0x07, 0x2c, 0x60, 0xe1, 0xa3, 0x2b, 0x9f, + 0xd4, 0xdb, 0xcd, 0x88, 0x55, 0x89, 0x02, 0xd1, 0x41, 0x85, 0x72, 0x2a, 0x21, 0xe1, 0x81, 0x2c, + 0x47, 0x78, 0x10, 0x05, 0xec, 0xef, 0x49, 0xb0, 0x52, 0xe2, 0xc1, 0x81, 0xef, 0x3f, 0xc1, 0x2f, + 0xdb, 0xd8, 0xc7, 0xa2, 0xaf, 0x9f, 0x80, 0x45, 0x02, 0x7b, 0x15, 0xc1, 0x1a, 0x88, 0x1a, 0x5a, + 0x41, 0xdb, 0xfa, 0x6d, 0x6f, 0xd3, 0x51, 0xe9, 0x64, 0x47, 0x8e, 0xea, 0xc8, 0x39, 0x64, 0x98, + 0x16, 0x8d, 0xf3, 0x41, 0x3e, 0x71, 0x3d, 0xc8, 0x67, 0xfb, 0x90, 0x9c, 0xfd, 0x6f, 0xc7, 0x4c, + 0xdb, 0x4b, 0x13, 0xd8, 0x7b, 0x26, 0x1f, 0xf5, 0x0e, 0xd0, 0x51, 0x0f, 0xd6, 0x44, 0x85, 0x0b, + 0x48, 0x7d, 0xd8, 0xf2, 0x2b, 0x90, 0x08, 0x23, 0x59, 0xd0, 0xb6, 0x16, 0x8b, 0x8f, 0x25, 0xff, + 0xf3, 0x20, 0xbf, 0x11, 0x55, 0xe0, 0x7e, 0xc3, 0xc1, 0xcc, 0x25, 0x50, 0xd4, 0x9d, 0x23, 0x2a, + 0xae, 0x07, 0xf9, 0xcd, 0x28, 0xf1, 0x74, 0x02, 0xfb, 0xc3, 0xfb, 0x1d, 0xa0, 0xfa, 0x3a, 0xa2, + 0xc2, 0xcb, 0x86, 0x90, 0xb2, 0x42, 0x1c, 0x10, 0xa1, 0xd7, 0xc1, 0x12, 0xc1, 0xb4, 0x72, 0x36, + 0x1c, 0xcd, 0x48, 0x85, 0x25, 0x0f, 0x67, 0x95, 0x5c, 0x57, 0xb3, 0x8c, 0x73, 0x27, 0xab, 0x65, + 0x08, 0xa6, 0x23, 0xcd, 0x4c, 0x90, 0xf6, 0x11, 0xf4, 0xcf, 0x30, 0x45, 0xc6, 0x5c, 0x41, 0xdb, + 0x4a, 0x79, 0xf1, 0x59, 0xff, 0x1d, 0x2c, 0x70, 0x44, 0x7d, 0xd4, 0x32, 0xe6, 0x65, 0x79, 0x4f, + 0x9d, 0xec, 0x32, 0xc8, 0x4d, 0x48, 0xef, 0x21, 0xde, 0x64, 0x94, 0x23, 0xfd, 0x5f, 0x00, 0x08, + 0xa6, 0xe2, 0x9e, 0x1e, 0x78, 0x8b, 0x12, 0x1c, 0x4a, 0x6d, 0xbf, 0x4e, 0x01, 0xbd, 0xc4, 0x03, + 0x0f, 0x11, 0xd6, 0x41, 0xa3, 0xfe, 0x1a, 0x40, 0xef, 0x62, 0x51, 0xf7, 0x5b, 0xb0, 0x3b, 0x26, + 0xc7, 0x4c, 0x73, 0xff, 0x50, 0xe6, 0x2a, 0x0f, 0xa6, 0x53, 0xd8, 0xde, 0xea, 0xf0, 0xe5, 0xa8, + 0xd8, 0x0b, 0x20, 0x1b, 0x52, 0xcd, 0x47, 0x2e, 0x3f, 0x98, 0x25, 0x79, 0x76, 0x24, 0x79, 0xb4, + 0x3e, 0x13, 0x72, 0xa7, 0x09, 0xa6, 0xd1, 0x32, 0x35, 0x41, 0x56, 0xa2, 0x6e, 0xac, 0x52, 0xe4, + 0xeb, 0xa3, 0x59, 0x45, 0x72, 0xa3, 0x22, 0x77, 0x2d, 0xd2, 0x32, 0xc1, 0x74, 0x7c, 0x8d, 0x7e, + 0xc5, 0xdc, 0x53, 0x60, 0x4e, 0xdb, 0x10, 0xfb, 0xfb, 0x10, 0x2c, 0xc7, 0x5a, 0x86, 0x77, 0xdf, + 0xd0, 0x0a, 0xa9, 0xbb, 0x3d, 0x5e, 0x1a, 0x12, 0xe4, 0x89, 0xdb, 0x1f, 0x35, 0x90, 0x29, 0xf1, + 0xa0, 0xdc, 0x85, 0xcd, 0xe3, 0x96, 0x8f, 0x5a, 0xfa, 0x3f, 0x60, 0x1e, 0xd3, 0x66, 0x5b, 0x28, + 0x53, 0x0d, 0x67, 0xea, 0xc3, 0xe3, 0x1c, 0xc9, 0x78, 0x71, 0x4e, 0xaa, 0xe4, 0x45, 0x60, 0x7d, + 0x1f, 0x2c, 0xb0, 0xb6, 0x90, 0xb4, 0xe4, 0x70, 0x17, 0xa6, 0x68, 0xc7, 0x21, 0x40, 0xf1, 0x14, + 0xfc, 0x86, 0x26, 0xa9, 0x09, 0x4d, 0xfe, 0x03, 0x19, 0xcc, 0x2b, 0xd5, 0x76, 0xbf, 0xc2, 0x64, + 0x6b, 0xa1, 0x66, 0xe9, 0x62, 0xee, 0x7a, 0x90, 0x5f, 0x8b, 0x0c, 0x18, 0x8f, 0xda, 0x1e, 0xc0, + 0xbc, 0xd8, 0xee, 0x87, 0x53, 0xd8, 0x1b, 0x60, 0x4d, 0x4d, 0x15, 0x0e, 0xad, 0xf4, 0xda, 0x7b, + 0x9b, 0x04, 0xa9, 0x12, 0x0f, 0xf4, 0x53, 0x90, 0xb9, 0xf1, 0xa9, 0xb2, 0x6f, 0x69, 0x77, 0xe2, + 0x4e, 0x99, 0xdb, 0xb3, 0x31, 0xb1, 0x2f, 0x01, 0x58, 0x99, 0xbc, 0x39, 0x7f, 0xde, 0x4e, 0x9f, + 0x80, 0x99, 0x3b, 0xf7, 0x82, 0xc5, 0x85, 0xca, 0x20, 0x3d, 0x1c, 0x52, 0xcf, 0xdf, 0x4e, 0x8d, + 0xad, 0x35, 0xff, 0xfa, 0x39, 0x60, 0x5c, 0x25, 0x73, 0xfe, 0xd5, 0xb7, 0x77, 0xdb, 0x5a, 0xf1, + 0xe4, 0xfc, 0xab, 0x95, 0x38, 0xbf, 0xb4, 0xb4, 0x8b, 0x4b, 0x4b, 0xfb, 0x72, 0x69, 0x69, 0x6f, + 0xae, 0xac, 0xc4, 0xc5, 0x95, 0x95, 0xf8, 0x74, 0x65, 0x25, 0x9e, 0xef, 0x05, 0x58, 0xd4, 0xdb, + 0x55, 0xa7, 0xc6, 0x88, 0x7b, 0x28, 0xd3, 0xee, 0x3c, 0x45, 0xa2, 0xcb, 0x5a, 0x8d, 0xe8, 0xe4, + 0x76, 0xf6, 0xdd, 0xde, 0xe8, 0xdf, 0x24, 0xfa, 0x4d, 0xc4, 0xab, 0x0b, 0xe1, 0xcf, 0xe2, 0xef, + 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x03, 0xb4, 0x51, 0xfd, 0xe9, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 4b97af497..d46103f37 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -9,6 +9,7 @@ import ( fmt "fmt" _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -248,37 +249,38 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 473 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0x31, 0x6f, 0x13, 0x31, - 0x14, 0xce, 0x25, 0x51, 0x44, 0x5d, 0xd4, 0x22, 0x0b, 0xda, 0xe4, 0x84, 0x2e, 0x21, 0x03, 0x0d, - 0x42, 0xb5, 0x9b, 0x74, 0x60, 0x26, 0x27, 0x86, 0x0c, 0x65, 0xb8, 0x91, 0x25, 0x72, 0x1c, 0xeb, - 0x7a, 0x2a, 0xf1, 0x8b, 0x6c, 0xf7, 0x68, 0x17, 0x86, 0x8e, 0x4c, 0x48, 0xfc, 0x15, 0xf8, 0x0f, - 0x1d, 0x2b, 0x58, 0x10, 0x43, 0x85, 0x12, 0x7e, 0x08, 0x3a, 0xdb, 0x0d, 0x1c, 0xa8, 0xe9, 0xe6, - 0xf7, 0xbe, 0xef, 0x3d, 0x7f, 0xdf, 0x67, 0xa3, 0x5d, 0xce, 0xa4, 0x01, 0x2a, 0x14, 0x1f, 0x1c, - 0xd0, 0xbc, 0x4f, 0xcd, 0x19, 0x99, 0x2b, 0x30, 0x80, 0xb7, 0x2c, 0x40, 0x2c, 0x40, 0xf2, 0x7e, - 0xf8, 0x38, 0x05, 0x48, 0xdf, 0x0a, 0xca, 0xe6, 0x19, 0x65, 0x52, 0x82, 0x61, 0x26, 0x03, 0xa9, - 0x1d, 0x3b, 0x7c, 0x98, 0x42, 0x0a, 0xf6, 0x48, 0x8b, 0x93, 0xef, 0x46, 0x1c, 0xf4, 0x0c, 0x34, - 0x9d, 0x30, 0x2d, 0x68, 0xde, 0x9f, 0x08, 0xc3, 0xfa, 0x94, 0x43, 0x26, 0x3d, 0xde, 0x72, 0xf8, - 0xd8, 0x0d, 0xba, 0xc2, 0x41, 0xdd, 0x73, 0xb4, 0x75, 0xa4, 0xd3, 0x18, 0x64, 0x2e, 0x94, 0x89, - 0x21, 0x93, 0xf8, 0x10, 0xd5, 0x8b, 0xd1, 0x66, 0xd0, 0x09, 0x7a, 0x9b, 0x83, 0x16, 0xf1, 0xf4, - 0x62, 0x37, 0xf1, 0xbb, 0x49, 0x41, 0x1c, 0xd6, 0x2f, 0xaf, 0xdb, 0x95, 0xc4, 0x92, 0x71, 0x88, - 0xee, 0x29, 0xc1, 0x45, 0x96, 0x0b, 0xd5, 0xac, 0x76, 0x82, 0xde, 0x46, 0xb2, 0xaa, 0xf1, 0x0e, - 0x6a, 0x68, 0x21, 0xa7, 0x42, 0x35, 0x6b, 0x16, 0xf1, 0x55, 0xb7, 0x89, 0x76, 0xca, 0x57, 0x27, - 0x42, 0xcf, 0x41, 0x6a, 0xd1, 0xfd, 0x12, 0xa0, 0xed, 0x3f, 0xd0, 0xab, 0x24, 0x1e, 0x1c, 0xe0, - 0x67, 0xe8, 0x01, 0x07, 0x69, 0x14, 0xe3, 0x66, 0xcc, 0xa6, 0x53, 0x25, 0xb4, 0xb6, 0x12, 0x37, - 0x92, 0xed, 0x9b, 0xfe, 0x4b, 0xd7, 0xc6, 0x31, 0x6a, 0xb0, 0x19, 0x9c, 0x4a, 0xe3, 0xa4, 0x0c, - 0x9f, 0x17, 0x42, 0x7f, 0x5c, 0xb7, 0x1f, 0x39, 0x2b, 0x7a, 0x7a, 0x42, 0x32, 0xa0, 0x33, 0x66, - 0x8e, 0xc9, 0x48, 0x9a, 0xaf, 0x9f, 0xf7, 0x91, 0xf7, 0x38, 0x92, 0x26, 0xf1, 0xa3, 0x25, 0x47, - 0xb5, 0x5b, 0x1d, 0xd5, 0x4b, 0x8e, 0x5a, 0x68, 0xf7, 0x1f, 0xd9, 0x37, 0x96, 0x06, 0x1f, 0xaa, - 0xa8, 0x76, 0xa4, 0x53, 0xfc, 0x1e, 0x6d, 0xfe, 0x1d, 0x76, 0x44, 0xca, 0xcf, 0x4f, 0xca, 0x89, - 0x84, 0x4f, 0xd7, 0xe3, 0xab, 0xc4, 0xf6, 0x2e, 0xbe, 0xfd, 0xfa, 0x54, 0x7d, 0x82, 0xdb, 0xf4, - 0xbf, 0x7f, 0x46, 0xb9, 0xe3, 0x8f, 0xed, 0x43, 0x5d, 0x04, 0xe8, 0x7e, 0x29, 0xd7, 0xf6, 0xed, - 0x37, 0x58, 0x42, 0xb8, 0x77, 0x07, 0x61, 0xa5, 0xa1, 0x67, 0x35, 0x74, 0x71, 0x67, 0x8d, 0x06, - 0xdb, 0x1b, 0x8e, 0x2e, 0x17, 0x51, 0x70, 0xb5, 0x88, 0x82, 0x9f, 0x8b, 0x28, 0xf8, 0xb8, 0x8c, - 0x2a, 0x57, 0xcb, 0xa8, 0xf2, 0x7d, 0x19, 0x55, 0xde, 0xd0, 0x34, 0x33, 0xc7, 0xa7, 0x13, 0xc2, - 0x61, 0x46, 0xe3, 0x62, 0xcb, 0xfe, 0x6b, 0x61, 0xde, 0x81, 0x3a, 0x71, 0x15, 0xcd, 0x5f, 0xd0, - 0x33, 0xbf, 0xd8, 0x9c, 0xcf, 0x85, 0x9e, 0x34, 0xec, 0x37, 0x3e, 0xfc, 0x1d, 0x00, 0x00, 0xff, - 0xff, 0x8f, 0xd6, 0xd7, 0xef, 0x60, 0x03, 0x00, 0x00, + // 494 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xc1, 0x6e, 0x13, 0x31, + 0x10, 0xcd, 0x26, 0x21, 0xa2, 0x2e, 0x6a, 0xd1, 0x0a, 0x9a, 0x64, 0x85, 0x36, 0x21, 0x07, 0x1a, + 0x40, 0xb5, 0x9b, 0xf4, 0xc0, 0x99, 0xac, 0x38, 0xe4, 0x50, 0x0e, 0x7b, 0xe4, 0x12, 0x39, 0x1b, + 0xcb, 0x5d, 0x95, 0xf5, 0x44, 0xb6, 0xbb, 0xb4, 0x17, 0x84, 0xfa, 0x05, 0x20, 0x7e, 0x84, 0x03, + 0xfc, 0x43, 0x8f, 0x15, 0x5c, 0x10, 0x87, 0x0a, 0x25, 0x48, 0xfc, 0x06, 0x5a, 0xdb, 0x0d, 0x2c, + 0xa8, 0xe5, 0xe6, 0x99, 0xf7, 0x66, 0xe6, 0xbd, 0xf1, 0xa0, 0x66, 0x42, 0x85, 0x06, 0xc2, 0x64, + 0x32, 0xdc, 0x25, 0xf9, 0x80, 0xe8, 0x63, 0x3c, 0x97, 0xa0, 0xc1, 0xdf, 0x30, 0x00, 0x36, 0x00, + 0xce, 0x07, 0xc1, 0x3d, 0x0e, 0xc0, 0x5f, 0x32, 0x42, 0xe7, 0x29, 0xa1, 0x42, 0x80, 0xa6, 0x3a, + 0x05, 0xa1, 0x2c, 0x3b, 0xb8, 0xc3, 0x81, 0x83, 0x79, 0x92, 0xe2, 0xe5, 0xb2, 0x61, 0x02, 0x2a, + 0x03, 0x45, 0xa6, 0x54, 0x31, 0x92, 0x0f, 0xa6, 0x4c, 0xd3, 0x01, 0x49, 0x20, 0x15, 0x0e, 0x6f, + 0x5b, 0x7c, 0x62, 0x0b, 0x6d, 0xe0, 0xa0, 0xa6, 0x2b, 0xcd, 0x14, 0x2f, 0x64, 0x65, 0x8a, 0x5b, + 0xa0, 0x77, 0x82, 0x36, 0xf6, 0x15, 0x8f, 0x40, 0xe4, 0x4c, 0xea, 0x08, 0x52, 0xe1, 0xef, 0xa1, + 0x7a, 0xd1, 0xb3, 0xe5, 0x75, 0xbd, 0xfe, 0xfa, 0xb0, 0x8d, 0x5d, 0x9f, 0x62, 0x28, 0x76, 0x43, + 0x71, 0x41, 0x1c, 0xd5, 0xcf, 0x2e, 0x3a, 0x95, 0xd8, 0x90, 0xfd, 0x00, 0xdd, 0x94, 0x2c, 0x61, + 0x69, 0xce, 0x64, 0xab, 0xda, 0xf5, 0xfa, 0x6b, 0xf1, 0x2a, 0xf6, 0xb7, 0x50, 0x43, 0x31, 0x31, + 0x63, 0xb2, 0x55, 0x33, 0x88, 0x8b, 0x7a, 0x2d, 0xb4, 0x55, 0x1e, 0x1d, 0x33, 0x35, 0x07, 0xa1, + 0x58, 0xef, 0x93, 0x87, 0x36, 0x7f, 0x43, 0xcf, 0xe2, 0x68, 0xb8, 0xeb, 0x3f, 0x44, 0xb7, 0x13, + 0x10, 0x5a, 0xd2, 0x44, 0x4f, 0xe8, 0x6c, 0x26, 0x99, 0x52, 0x46, 0xe2, 0x5a, 0xbc, 0x79, 0x99, + 0x7f, 0x6a, 0xd3, 0x7e, 0x84, 0x1a, 0x34, 0x83, 0x23, 0xa1, 0xad, 0x94, 0xd1, 0xe3, 0x42, 0xe8, + 0xb7, 0x8b, 0xce, 0x5d, 0x6b, 0x45, 0xcd, 0x0e, 0x71, 0x0a, 0x24, 0xa3, 0xfa, 0x00, 0x8f, 0x85, + 0xfe, 0xfc, 0x71, 0x07, 0x39, 0x8f, 0x63, 0xa1, 0x63, 0x57, 0x5a, 0x72, 0x54, 0xbb, 0xd2, 0x51, + 0xbd, 0xe4, 0xa8, 0x8d, 0x9a, 0x7f, 0xc9, 0xbe, 0xb4, 0x34, 0x7c, 0x57, 0x45, 0xb5, 0x7d, 0xc5, + 0xfd, 0xd7, 0x68, 0xfd, 0xcf, 0x65, 0x87, 0xb8, 0x7c, 0x17, 0xb8, 0xbc, 0x91, 0xe0, 0xc1, 0xf5, + 0xf8, 0x6a, 0x63, 0xdb, 0xa7, 0x5f, 0x7e, 0xbc, 0xaf, 0xde, 0xf7, 0x3b, 0xe4, 0x9f, 0x03, 0x24, + 0x89, 0xe5, 0x4f, 0xcc, 0x47, 0x9d, 0x7a, 0xe8, 0x56, 0x69, 0xaf, 0x9d, 0xab, 0x27, 0x18, 0x42, + 0xb0, 0xfd, 0x1f, 0xc2, 0x4a, 0x43, 0xdf, 0x68, 0xe8, 0xf9, 0xdd, 0x6b, 0x34, 0x98, 0x5c, 0x70, + 0xe3, 0xcd, 0xcf, 0x0f, 0x8f, 0xbc, 0xd1, 0xf8, 0x6c, 0x11, 0x7a, 0xe7, 0x8b, 0xd0, 0xfb, 0xbe, + 0x08, 0xbd, 0xb7, 0xcb, 0xb0, 0x72, 0xbe, 0x0c, 0x2b, 0x5f, 0x97, 0x61, 0xe5, 0x05, 0xe1, 0xa9, + 0x3e, 0x38, 0x9a, 0xe2, 0x04, 0x32, 0x12, 0x15, 0xcd, 0x76, 0x9e, 0x33, 0xfd, 0x0a, 0xe4, 0xa1, + 0x8d, 0x48, 0xfe, 0x84, 0x1c, 0xbb, 0xfe, 0xfa, 0x64, 0xce, 0xd4, 0xb4, 0x61, 0xae, 0x79, 0xef, + 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x86, 0x95, 0x6c, 0x80, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index 822de4a01..a3f0628c4 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -6,6 +6,7 @@ package types import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" grpc "google.golang.org/grpc" @@ -26,16 +27,18 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package func init() { proto.RegisterFile("canto/govshuttle/v1/tx.proto", fileDescriptor_d69de145343701ce) } var fileDescriptor_d69de145343701ce = []byte{ - // 142 bytes of a gzipped FileDescriptorProto + // 168 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcc, 0x2b, 0xc9, 0xd7, 0x4f, 0xcf, 0x2f, 0x2b, 0xce, 0x28, 0x2d, 0x29, 0xc9, 0x49, 0xd5, 0x2f, 0x33, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x06, 0xcb, 0xea, 0x21, 0x64, 0xf5, - 0xca, 0x0c, 0x8d, 0x58, 0xb9, 0x98, 0x7d, 0x8b, 0xd3, 0x9d, 0xfc, 0x4e, 0x3c, 0x92, 0x63, 0xbc, - 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, - 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x24, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, - 0x57, 0xdf, 0x19, 0x64, 0x80, 0xae, 0x5f, 0x6a, 0x49, 0x79, 0x7e, 0x51, 0x36, 0x84, 0xa7, 0x5f, - 0x66, 0xae, 0x5f, 0x81, 0x6c, 0x63, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x4a, 0x63, - 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x14, 0x0c, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xca, 0x0c, 0xa5, 0xc4, 0x93, 0xf3, 0x8b, 0x73, 0xf3, 0x8b, 0xf5, 0x73, 0x8b, 0xd3, 0x41, 0x8a, + 0x73, 0x8b, 0xd3, 0x21, 0xaa, 0x8d, 0x78, 0xb8, 0x98, 0x7d, 0x8b, 0xd3, 0xa5, 0x58, 0x1b, 0x9e, + 0x6f, 0xd0, 0x62, 0x74, 0xf2, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, + 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, + 0x93, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x67, 0x90, 0x05, 0xba, + 0x7e, 0xa9, 0x25, 0xe5, 0xf9, 0x45, 0xd9, 0x10, 0x9e, 0x7e, 0x99, 0xb9, 0x7e, 0x05, 0xb2, 0x8b, + 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x96, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x79, 0x7d, 0xe1, 0xdc, 0xb2, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/onboarding/testutil/helpers.go b/x/onboarding/testutil/helpers.go index a0d733eac..95afdd823 100644 --- a/x/onboarding/testutil/helpers.go +++ b/x/onboarding/testutil/helpers.go @@ -4,16 +4,20 @@ import ( "bytes" "fmt" - ibcgotesting "github.com/Canto-Network/Canto/v7/ibc/testing" + "golang.org/x/exp/slices" + + abci "github.com/cometbft/cometbft/abci/types" + sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" - "golang.org/x/exp/slices" + + ibcgotesting "github.com/Canto-Network/Canto/v7/ibc/testing" ) // RelayPacket attempts to relay the packet first on EndpointA and then on EndpointB // if EndpointA does not contain a packet commitment for that packet. An error is returned // if a relay step fails or the packet commitment does not exist on either endpoint. -func RelayPacket(path *ibcgotesting.Path, packet channeltypes.Packet) (*sdk.Result, error) { +func RelayPacket(path *ibcgotesting.Path, packet channeltypes.Packet) (*abci.ExecTxResult, error) { pc := path.EndpointA.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(path.EndpointA.Chain.GetContext(), packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence()) if bytes.Equal(pc, channeltypes.CommitPacket(path.EndpointA.Chain.App.AppCodec(), packet)) { From bd97a705efc79deea1e0b7b3495ac0a8b6d41c36 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 18 Dec 2023 15:31:02 +0900 Subject: [PATCH 11/96] chore: add chainid for test_helper newcanto func --- app/test_helpers.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/test_helpers.go b/app/test_helpers.go index 29f396f33..76f559c11 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -6,6 +6,7 @@ import ( "cosmossdk.io/log" sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -60,7 +61,7 @@ func Setup( feemarketGenesis *feemarkettypes.GenesisState, ) *Canto { db := dbm.NewMemDB() - app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome)) + app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), baseapp.SetChainID(types.MainnetChainID+"-1")) if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewDefaultGenesisState() From e04433c8e6e9c9c8851542e7443f61683540ece5 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 18 Dec 2023 15:44:02 +0900 Subject: [PATCH 12/96] test: fix consensus params store type in app.go --- app/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 77f4577c7..0236cf873 100644 --- a/app/app.go +++ b/app/app.go @@ -376,7 +376,7 @@ func NewCanto( // SDK keys authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, /* minttypes.StoreKey, */ distrtypes.StoreKey, slashingtypes.StoreKey, - govtypes.StoreKey, paramstypes.StoreKey, consensusparamkeeper.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, + govtypes.StoreKey, paramstypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, circuittypes.StoreKey, authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, // ibc keys From 2e7a553b62be22b74fd8f677acd79cf9d8b43403 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 18 Dec 2023 15:55:21 +0900 Subject: [PATCH 13/96] test: fix account number, finalize block in suite.commit --- x/csr/keeper/keeper_test.go | 7 ++++++- x/erc20/keeper/keeper_test.go | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index f0b19a5aa..3396404e9 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -162,8 +162,13 @@ func (suite *KeeperTestSuite) Commit() { // Commit commits a block at a given time. func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - suite.app.Commit() header := suite.ctx.BlockHeader() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }) + + suite.app.Commit() header.Height += 1 header.Time = header.Time.Add(t) diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 34ce9d588..171d3933c 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -164,8 +164,9 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { types.RegisterQueryServer(queryHelper, suite.app.Erc20Keeper) suite.queryClient = types.NewQueryClient(queryHelper) + accNum := suite.app.AccountKeeper.NextAccountNumber(suite.ctx) acc := ðermint.EthAccount{ - BaseAccount: authtypes.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), nil, 0, 0), + BaseAccount: authtypes.NewBaseAccount(sdk.AccAddress(suite.address.Bytes()), nil, accNum, 0), CodeHash: common.BytesToHash(crypto.Keccak256(nil)).String(), } From f01ad22d1a32864dc2c2efbf03c80b6e342a1ef2 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 18 Dec 2023 16:14:06 +0900 Subject: [PATCH 14/96] feat: match begin block func with interface --- x/csr/module.go | 3 ++- x/epochs/keeper/abci.go | 3 ++- x/epochs/module.go | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/x/csr/module.go b/x/csr/module.go index 74d5d0d69..3627f0953 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -160,7 +160,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw func (AppModule) ConsensusVersion() uint64 { return 2 } // BeginBlock executes all ABCI BeginBlock logic respective to the csr module. -func (am AppModule) BeginBlock(ctx context.Context) { +func (am AppModule) BeginBlock(ctx context.Context) error { sdkCtx := sdk.UnwrapSDKContext(ctx) // check in begin block whether the Turnstile has been deployed, if not, deploy it and set it to state if _, found := am.keeper.GetTurnstile(sdkCtx); !found { @@ -175,4 +175,5 @@ func (am AppModule) BeginBlock(ctx context.Context) { am.keeper.SetTurnstile(sdkCtx, turnstile) } } + return nil } diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index b1a5494c1..53fdffa7e 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -12,7 +12,7 @@ import ( ) // BeginBlocker of epochs module -func (k Keeper) BeginBlocker(ctx context.Context) { +func (k Keeper) BeginBlocker(ctx context.Context) error { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) sdkCtx := sdk.UnwrapSDKContext(ctx) @@ -62,4 +62,5 @@ func (k Keeper) BeginBlocker(ctx context.Context) { return false }) + return nil } diff --git a/x/epochs/module.go b/x/epochs/module.go index 936800e30..78f00f112 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -153,8 +153,8 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // BeginBlock executes all ABCI BeginBlock logic respective to the epochs module. -func (am AppModule) BeginBlock(ctx context.Context) { - am.keeper.BeginBlocker(ctx) +func (am AppModule) BeginBlock(ctx context.Context) error { + return am.keeper.BeginBlocker(ctx) } // ___________________________________________________________________________ From c9aef01e8856899146d664d5c85f48d2e33e7e52 Mon Sep 17 00:00:00 2001 From: poorphd Date: Tue, 19 Dec 2023 16:40:59 +0900 Subject: [PATCH 15/96] wip: error fix in Canto modules --- x/csr/keeper/keeper_test.go | 10 ++-- x/epochs/keeper/keeper_test.go | 6 +- x/erc20/client/proposal_handler.go | 6 +- x/erc20/keeper/keeper_test.go | 7 ++- x/erc20/migrations/v2/migration_test.go | 3 +- x/govshuttle/client/proposal_handler.go | 4 +- x/inflation/keeper/inflation_test.go | 6 +- x/onboarding/ibc_module_test.go | 18 ++++-- .../ibc_callbacks_integration_suite_test.go | 3 +- .../keeper/ibc_callbacks_integration_test.go | 58 +++++++++++++++---- 10 files changed, 90 insertions(+), 31 deletions(-) diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index 3396404e9..de778c241 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -164,8 +164,9 @@ func (suite *KeeperTestSuite) Commit() { func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { header := suite.ctx.BlockHeader() suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: header.Height, - Time: header.Time, + Height: header.Height, + Time: header.Time, + ProposerAddress: header.ProposerAddress, }) suite.app.Commit() @@ -173,8 +174,9 @@ func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { header.Height += 1 header.Time = header.Time.Add(t) suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: header.Height, - Time: header.Time, + Height: header.Height, + Time: header.Time, + ProposerAddress: header.ProposerAddress, }) // update ctx diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index 41e38a584..749e61184 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -159,8 +159,12 @@ func (suite *KeeperTestSuite) Commit() { } func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - suite.app.Commit() header := suite.ctx.BlockHeader() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }) + suite.app.Commit() header.Height += 1 header.Time = header.Time.Add(t) suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ diff --git a/x/erc20/client/proposal_handler.go b/x/erc20/client/proposal_handler.go index e3bb26027..eb4c6be33 100644 --- a/x/erc20/client/proposal_handler.go +++ b/x/erc20/client/proposal_handler.go @@ -7,7 +7,7 @@ import ( ) var ( - RegisterCoinProposalHandler = govclient.NewProposalHandler(cli.NewRegisterCoinProposalCmd, rest.RegisterCoinProposalRESTHandler) - RegisterERC20ProposalHandler = govclient.NewProposalHandler(cli.NewRegisterERC20ProposalCmd, rest.RegisterERC20ProposalRESTHandler) - ToggleTokenConversionProposalHandler = govclient.NewProposalHandler(cli.NewToggleTokenConversionProposalCmd, rest.ToggleTokenConversionRESTHandler) + RegisterCoinProposalHandler = govclient.NewProposalHandler(cli.NewRegisterCoinProposalCmd) + RegisterERC20ProposalHandler = govclient.NewProposalHandler(cli.NewRegisterERC20ProposalCmd) + ToggleTokenConversionProposalHandler = govclient.NewProposalHandler(cli.NewToggleTokenConversionProposalCmd) ) diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 171d3933c..1f5c8ea56 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -342,8 +342,13 @@ func (suite *KeeperTestSuite) DeployContractDirectBalanceManipulation(name strin } func (suite *KeeperTestSuite) Commit() { - suite.app.Commit() header := suite.ctx.BlockHeader() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }) + + suite.app.Commit() + header.Height += 1 suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ Height: header.Height, diff --git a/x/erc20/migrations/v2/migration_test.go b/x/erc20/migrations/v2/migration_test.go index 26796e371..aae1dd0d4 100644 --- a/x/erc20/migrations/v2/migration_test.go +++ b/x/erc20/migrations/v2/migration_test.go @@ -12,13 +12,12 @@ import ( "github.com/evmos/ethermint/encoding" - "github.com/Canto-Network/Canto/v7/app" v2 "github.com/Canto-Network/Canto/v7/x/erc20/migrations/v2" erc20types "github.com/Canto-Network/Canto/v7/x/erc20/types" ) func TestUpdateParams(t *testing.T) { - encCfg := encoding.MakeConfig(app.ModuleBasics) + encCfg := encoding.MakeTestEncodingConfig() erc20Key := storetypes.NewKVStoreKey(erc20types.StoreKey) tErc20Key := storetypes.NewTransientStoreKey(fmt.Sprintf("%s_test", erc20types.StoreKey)) ctx := testutil.DefaultContext(erc20Key, tErc20Key) diff --git a/x/govshuttle/client/proposal_handler.go b/x/govshuttle/client/proposal_handler.go index 2457f9c3d..ce7435307 100644 --- a/x/govshuttle/client/proposal_handler.go +++ b/x/govshuttle/client/proposal_handler.go @@ -7,6 +7,6 @@ import ( ) var ( - LendingMarketProposalHandler = govclient.NewProposalHandler(cli.NewLendingMarketProposalCmd, rest.RegisterCoinProposalRESTHandler) - TreasuryProposalHandler = govclient.NewProposalHandler(cli.NewTreasuryProposalCmd, rest.RegisterCoinProposalRESTHandler) + LendingMarketProposalHandler = govclient.NewProposalHandler(cli.NewLendingMarketProposalCmd) + TreasuryProposalHandler = govclient.NewProposalHandler(cli.NewTreasuryProposalCmd) ) diff --git a/x/inflation/keeper/inflation_test.go b/x/inflation/keeper/inflation_test.go index 622574bf7..44e44de35 100644 --- a/x/inflation/keeper/inflation_test.go +++ b/x/inflation/keeper/inflation_test.go @@ -57,13 +57,15 @@ func (suite *KeeperTestSuite) TestMintAndAllocateInflation() { feeCollector, denomMint, ) - balanceCommunityPool := suite.app.DistrKeeper.GetFeePoolCommunityCoins(suite.ctx) + + feePool, err := s.app.DistrKeeper.FeePool.Get(s.ctx) + s.Require().NoError(err) if tc.expPass { suite.Require().NoError(err, tc.name) suite.Require().True(balanceModule.IsZero()) suite.Require().Equal(tc.expStakingRewardAmt, balanceStakingRewards) - suite.Require().Equal(tc.expCommunityPoolAmt, balanceCommunityPool) + suite.Require().Equal(tc.expCommunityPoolAmt, feePool.CommunityPool) } else { suite.Require().Error(err) } diff --git a/x/onboarding/ibc_module_test.go b/x/onboarding/ibc_module_test.go index 9c85eab57..2563a9771 100644 --- a/x/onboarding/ibc_module_test.go +++ b/x/onboarding/ibc_module_test.go @@ -121,7 +121,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { // send coins from chainA to chainB // auto swap and auto convert should happen - msg := types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0) + msg := types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") res, err := suite.chainA.SendMsgs(msg) suite.Require().NoError(err) // message committed @@ -140,7 +140,11 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().NoError(err) // relay committed events := res.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swapAmount, ok := sdkmath.NewIntFromString(attrs["amount"]) if !ok { swapAmount = sdkmath.ZeroInt() @@ -171,7 +175,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { // IBC transfer to blocked address blockedAddr := "canto10d07y265gmmuvt4z0w9aw880jnsr700jg5j4zm" coinToSendToB = suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom) - msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), blockedAddr, timeoutHeight, 0) + msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), blockedAddr, timeoutHeight, 0, "") res, err = suite.chainA.SendMsgs(msg) suite.Require().NoError(err) // message committed @@ -194,7 +198,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { balanceCantoBefore = suite.chainB.App.(*app.Canto).BankKeeper.GetBalance(suite.chainB.GetContext(), suite.chainB.SenderAccount.GetAddress(), "acanto") balanceErc20Before = erc20Keeper.BalanceOf(suite.chainB.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, pair.GetERC20Contract(), common.BytesToAddress(suite.chainB.SenderAccount.GetAddress().Bytes())) - msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0) + msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), suite.chainB.SenderAccount.GetAddress().String(), timeoutHeight, 0, "") res, err = suite.chainA.SendMsgs(msg) suite.Require().NoError(err) // message committed @@ -207,7 +211,11 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().NoError(err) // relay committed events = res.GetEvents() - attrs = onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + sdkEvents = nil + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs = onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swapAmount, ok = sdkmath.NewIntFromString(attrs["amount"]) if !ok { swapAmount = sdkmath.ZeroInt() diff --git a/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go b/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go index 9361e4b85..cf798484d 100644 --- a/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go +++ b/x/onboarding/keeper/ibc_callbacks_integration_suite_test.go @@ -5,6 +5,7 @@ import ( "testing" "time" + abci "github.com/cometbft/cometbft/abci/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/stretchr/testify/suite" @@ -167,7 +168,7 @@ var ( ) // SendAndReceiveMessage sends a transfer message from the origin chain to the destination chain -func (suite *IBCTestingSuite) SendAndReceiveMessage(path *ibcgotesting.Path, origin *ibcgotesting.TestChain, coin string, amount int64, sender string, receiver string, seq uint64) *sdk.Result { +func (suite *IBCTestingSuite) SendAndReceiveMessage(path *ibcgotesting.Path, origin *ibcgotesting.TestChain, coin string, amount int64, sender string, receiver string, seq uint64) *abci.ExecTxResult { // Send coin from A to B transferMsg := transfertypes.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, sdk.NewCoin(coin, sdkmath.NewInt(amount)), sender, receiver, timeoutHeight, 0, "") _, err := origin.SendMsgs(transferMsg) diff --git a/x/onboarding/keeper/ibc_callbacks_integration_test.go b/x/onboarding/keeper/ibc_callbacks_integration_test.go index 7d482fec9..ef44e251e 100644 --- a/x/onboarding/keeper/ibc_callbacks_integration_test.go +++ b/x/onboarding/keeper/ibc_callbacks_integration_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + abci "github.com/cometbft/cometbft/abci/types" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -24,7 +25,7 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an sender, receiver string senderAcc sdk.AccAddress receiverAcc sdk.AccAddress - result *sdk.Result + result *abci.ExecTxResult tokenPair *types.TokenPair ) @@ -92,7 +93,12 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "convert_coin")) convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) @@ -121,7 +127,11 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "convert_coin")) convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) @@ -143,14 +153,22 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the difference between transferred IBC voucher amount and the swapped amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(coinUsdc.Amount.Sub(swappedAmount).BigInt())) }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "convert_coin")) convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) @@ -173,14 +191,22 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the difference between transferred IBC voucher amount and the swapped amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(coinUsdc.Amount.Sub(swappedAmount).BigInt())) }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "convert_coin")) convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) @@ -205,7 +231,11 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("Convert: ERC20 token balance should be same with the converted IBC voucher amount", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "convert_coin")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "convert_coin")) convertAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) erc20balance := s.cantoChain.App.(*app.Canto).Erc20Keeper.BalanceOf(s.cantoChain.GetContext(), contracts.ERC20MinterBurnerDecimalsContract.ABI, tokenPair.GetERC20Contract(), common.BytesToAddress(receiverAcc.Bytes())) Expect(erc20balance).To(Equal(convertAmount.BigInt())) @@ -237,7 +267,11 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("No convert: Canto chain's IBC voucher balance should be same with (original balance + transferred amount - swapped amount)", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdkmath.NewInt(10000000000)).Sub(swappedAmount))) @@ -262,7 +296,11 @@ var _ = Describe("Onboarding: Performing an IBC Transfer followed by autoswap an }) It("No convert: Canto chain's IBC voucher balance should be same with (original balance + transferred amount - swapped amount)", func() { events := result.GetEvents() - attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(events, "swap")) + var sdkEvents []sdk.Event + for _, event := range events { + sdkEvents = append(sdkEvents, sdk.Event(event)) + } + attrs := onboardingtest.ExtractAttributes(onboardingtest.FindEvent(sdkEvents, "swap")) swappedAmount, _ := sdkmath.NewIntFromString(attrs["amount"]) ibcUsdc := s.cantoChain.App.(*app.Canto).BankKeeper.GetBalance(s.cantoChain.GetContext(), receiverAcc, uusdcIbcdenom) Expect(ibcUsdc.Amount).To(Equal(ibcBalance.Amount.Add(sdkmath.NewInt(10000000000)).Sub(swappedAmount))) From f2ad9c58b96cea17a005a0402db2c7ee1cf4b2f8 Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 20 Dec 2023 15:07:18 +0900 Subject: [PATCH 16/96] wip: error fix in Canto modules --- ibc/testing/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ibc/testing/app.go b/ibc/testing/app.go index 7af36cad4..0105eb38b 100644 --- a/ibc/testing/app.go +++ b/ibc/testing/app.go @@ -186,7 +186,7 @@ func SetupWithGenesisValSetCanto(tb testing.TB, valSet *tmtypes.ValidatorSet, ge MinSelfDelegation: sdkmath.ZeroInt(), } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), val.Address.String(), sdkmath.LegacyOneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String(), sdkmath.LegacyOneDec())) } // set validators and delegations From a1990b30bd782ad02ae3ffd87427371bedb1937b Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 22 Dec 2023 15:02:26 +0900 Subject: [PATCH 17/96] test: fix tests(finalize block, chain id, check inv) --- app/app_test.go | 13 ++++++++++--- app/test_helpers.go | 2 +- x/erc20/keeper/msg_server_test.go | 2 +- x/inflation/keeper/keeper_test.go | 6 +++++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/app_test.go b/app/app_test.go index e45b6a0b8..fb2d92051 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -11,6 +11,7 @@ import ( abci "github.com/cometbft/cometbft/abci/types" dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/baseapp" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/Canto-Network/Canto/v7/types" @@ -28,6 +29,7 @@ func TestCantoExport(t *testing.T) { 0, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), + baseapp.SetChainID(types.MainnetChainID+"-1"), ) genesisState := NewDefaultGenesisState() @@ -37,11 +39,15 @@ func TestCantoExport(t *testing.T) { // Initialize the chain app.InitChain( &abci.RequestInitChain{ - ChainId: types.MainnetChainID + "-1", - Validators: []abci.ValidatorUpdate{}, - AppStateBytes: stateBytes, + ChainId: types.MainnetChainID + "-1", + Validators: []abci.ValidatorUpdate{}, + ConsensusParams: DefaultConsensusParams, + AppStateBytes: stateBytes, }, ) + app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + }) app.Commit() // Making a new app object with the db, so that initchain hasn't been called @@ -55,6 +61,7 @@ func TestCantoExport(t *testing.T) { 0, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), + baseapp.SetChainID(types.MainnetChainID+"-1"), ) _, err = app2.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") diff --git a/app/test_helpers.go b/app/test_helpers.go index 76f559c11..6994a4552 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -61,7 +61,7 @@ func Setup( feemarketGenesis *feemarkettypes.GenesisState, ) *Canto { db := dbm.NewMemDB() - app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 5, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), baseapp.SetChainID(types.MainnetChainID+"-1")) + app := NewCanto(log.NewNopLogger(), db, nil, true, map[int64]bool{}, DefaultNodeHome, 0, false, simtestutil.NewAppOptionsWithFlagHome(DefaultNodeHome), baseapp.SetChainID(types.MainnetChainID+"-1")) if !isCheckTx { // init chain must be called to stop deliverState from being nil genesisState := NewDefaultGenesisState() diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 278bded33..867a33cb4 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -667,7 +667,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint)) suite.Commit() - ctx := sdk.WrapSDKContext(suite.ctx) + ctx := suite.ctx tc.extra() res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg) diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index b0ee64ae6..ced3a3f1e 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -149,8 +149,12 @@ func (suite *KeeperTestSuite) Commit() { } func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { - suite.app.Commit() header := suite.ctx.BlockHeader() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }) + suite.app.Commit() header.Height += 1 header.Time = header.Time.Add(t) suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ From f173484d003188a4114ff2be035313aab3d98409 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 22 Dec 2023 15:44:03 +0900 Subject: [PATCH 18/96] feat: fix msgs, proto, swagger --- api/canto/coinswap/v1/tx.pulsar.go | 217 +- api/canto/erc20/v1/tx.pulsar.go | 107 +- client/docs/config.json | 123 - client/docs/swagger-ui/swagger.yaml | 55022 +------------------------- ibc/module_test.go | 2 +- proto/buf.gen.swagger.yaml | 5 + proto/canto/coinswap/v1/tx.proto | 10 + proto/canto/erc20/v1/tx.proto | 7 + scripts/protoc-swagger-gen.sh | 9 +- x/coinswap/types/msgs.go | 60 - x/coinswap/types/tx.pb.go | 100 +- x/erc20/types/codec.go | 15 - x/erc20/types/msg.go | 34 - x/erc20/types/tx.pb.go | 68 +- 14 files changed, 1395 insertions(+), 54384 deletions(-) create mode 100644 proto/buf.gen.swagger.yaml diff --git a/api/canto/coinswap/v1/tx.pulsar.go b/api/canto/coinswap/v1/tx.pulsar.go index f561e14d1..da13d0ed9 100644 --- a/api/canto/coinswap/v1/tx.pulsar.go +++ b/api/canto/coinswap/v1/tx.pulsar.go @@ -2,6 +2,7 @@ package coinswapv1 import ( + _ "cosmossdk.io/api/amino" v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" _ "cosmossdk.io/api/cosmos/msg/v1" fmt "fmt" @@ -3589,113 +3590,121 @@ var file_canto_coinswap_v1_tx_proto_rawDesc = []byte{ 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x02, 0x0a, 0x0f, - 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, - 0x50, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x18, 0xc8, - 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x61, 0x78, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x76, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x19, - 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6e, - 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x10, 0x65, 0x78, 0x61, 0x63, 0x74, 0x53, 0x74, - 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, 0x12, 0x68, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, - 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x43, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, + 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, + 0x03, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x12, 0x50, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x42, 0x18, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, + 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x76, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x48, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, - 0xde, 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x53, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x41, 0x64, - 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x85, 0x03, 0x0a, - 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x12, 0x6b, 0x0a, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x21, 0xc8, 0xde, 0x1f, 0x00, - 0xf2, 0xde, 0x1f, 0x19, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x52, 0x11, 0x77, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x12, 0x5c, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x3f, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, + 0xde, 0x1f, 0x19, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x10, 0x65, 0x78, 0x61, 0x63, + 0x74, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, 0x12, 0x68, 0x0a, 0x0d, + 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x43, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, - 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x70, - 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, - 0x6d, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, - 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, - 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x17, 0x79, 0x61, 0x6d, 0x6c, 0x3a, - 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, - 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, - 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x22, 0x5e, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x63, - 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, - 0x6f, 0x69, 0x6e, 0x73, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, - 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x04, - 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, - 0x12, 0x39, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, - 0x3a, 0x22, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x52, - 0x0a, 0x69, 0x73, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4d, - 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x32, 0xaa, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, - 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2a, - 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x25, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, + 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x14, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, + 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, + 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, + 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x25, 0x82, 0xe7, 0xb0, 0x2a, + 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x22, 0x53, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, + 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x09, 0x6d, 0x69, 0x6e, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xaf, 0x03, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x6b, 0x0a, + 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x21, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x19, 0x79, 0x61, + 0x6d, 0x6c, 0x3a, 0x22, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x6c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x52, 0x11, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x5c, 0x0a, 0x09, 0x6d, 0x69, + 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3f, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xf2, 0xde, 0x1f, 0x10, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x08, + 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x70, 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x46, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, + 0x74, 0xf2, 0xde, 0x1f, 0x17, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6d, 0x69, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x6d, 0x74, 0x22, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x53, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x41, 0x6d, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, + 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, + 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x28, + 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x5e, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0c, 0x4d, 0x73, 0x67, + 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x37, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, + 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, + 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, + 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x17, 0xf2, 0xde, 0x1f, 0x13, + 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x22, 0x52, 0x0a, 0x69, 0x73, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x3a, + 0x21, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x8a, 0xe7, 0xb0, 0x2a, 0x12, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xaa, 0x02, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, + 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, - 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, - 0xb9, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, - 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, - 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, - 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, - 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, - 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, - 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x53, 0x77, + 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, + 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, + 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, + 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, + 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xb9, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, + 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, + 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, + 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index 31b60fec1..bb677b55a 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -2,6 +2,7 @@ package erc20v1 import ( + _ "cosmossdk.io/api/amino" v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" _ "cosmossdk.io/api/cosmos/msg/v1" fmt "fmt" @@ -2106,57 +2107,63 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x79, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, - 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x18, 0x0a, 0x16, - 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, - 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, - 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x22, 0x19, - 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x02, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, - 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, - 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, + 0x2a, 0x14, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xdc, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x25, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x22, + 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x02, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, + 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, + 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, - 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, - 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, - 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, - 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, - 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, + 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, + 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/client/docs/config.json b/client/docs/config.json index 9216baecd..e3f3fe43c 100644 --- a/client/docs/config.json +++ b/client/docs/config.json @@ -26,23 +26,6 @@ } } }, - { - "url": "./tmp-swagger-gen/ethermint/evm/v1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "EvmParams" - } - } - }, - { - "url": "./tmp-swagger-gen/ethermint/feemarket/v1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "FeeMarketParams", - "BaseFee": "FeeMarketBaseFee" - } - } - }, { "url": "./tmp-swagger-gen/canto/onboarding/v1/query.swagger.json", "operationIds": { @@ -58,112 +41,6 @@ "Params": "CoinswapParams" } } - }, - { - "url": "./tmp-swagger-gen/ibc/applications/transfer/v1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "TransferParams" - } - } - }, - { - "url": "./tmp-swagger-gen/ibc/core/client/v1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "ClientParams" - } - } - }, - { - "url": "./tmp-swagger-gen/ibc/core/connection/v1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "ConnectionParams" - } - } - }, - { - "url": "./tmp-swagger-gen/ibc/core/channel/v1/query.swagger.json" - }, - { - "url": "./tmp-swagger-gen/cosmos/auth/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Account": "AuthAccount", - "Params": "AuthParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/authz/v1beta1/query.swagger.json" - }, - { - "url": "./tmp-swagger-gen/cosmos/bank/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Balance": "BankBalance", - "Params": "BankParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/distribution/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "DistributionParams", - "DelegatorValidators": "DistDelegatorValidators" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/feegrant/v1beta1/query.swagger.json" - }, - { - "url": "./tmp-swagger-gen/cosmos/evidence/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "EvidenceParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/gov/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "GovParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/slashing/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "SlashingParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/staking/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "StakingParams" - } - } - }, - { - "url": "./tmp-swagger-gen/cosmos/tx/v1beta1/service.swagger.json", - "dereference": { - "circular": "ignore" - } - }, - { - "url": "./tmp-swagger-gen/cosmos/base/tendermint/v1beta1/query.swagger.json", - "operationIds": { - "rename": { - "Params": "BaseParams" - } - } } ] } diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index 42672b583..b95ab125c 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -18,7 +18,7 @@ paths: type: string format: int64 default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -76,7 +76,6 @@ paths: format: date-time epoch_counting_started: type: boolean - format: boolean current_epoch_start_height: type: string format: int64 @@ -86,9 +85,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -108,7 +108,7 @@ paths: PageResponse page = 2; } default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -176,7 +176,6 @@ paths: in: query required: false type: boolean - format: boolean - name: pagination.reverse description: >- reverse is set to true if results are to be returned in the @@ -187,7 +186,6 @@ paths: in: query required: false type: boolean - format: boolean tags: - Query /canto/erc20/v1/params: @@ -205,13 +203,11 @@ paths: properties: enable_erc20: type: boolean - format: boolean description: >- parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. enable_evm_hook: type: boolean - format: boolean description: >- parameter to enable the EVM hook that converts an ERC20 token to a Cosmos @@ -225,7 +221,7 @@ paths: QueryParamsResponse is the response type for the Query/Params RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -271,7 +267,6 @@ paths: title: cosmos base denomination to be mapped to enabled: type: boolean - format: boolean title: shows token mapping enable status contract_owner: title: >- @@ -300,9 +295,10 @@ paths: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -317,7 +313,7 @@ paths: method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -385,7 +381,6 @@ paths: in: query required: false type: boolean - format: boolean - name: pagination.reverse description: >- reverse is set to true if results are to be returned in the @@ -396,10 +391,9 @@ paths: in: query required: false type: boolean - format: boolean tags: - Query - '/canto/erc20/v1/token_pairs/{token}': + /canto/erc20/v1/token_pairs/{token}: get: summary: TokenPair retrieves a registered token pair operationId: TokenPair @@ -420,7 +414,6 @@ paths: title: cosmos base denomination to be mapped to enabled: type: boolean - format: boolean title: shows token mapping enable status contract_owner: title: >- @@ -448,7 +441,7 @@ paths: method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -514,7 +507,7 @@ paths: QueryCirculatingSupplyResponse is the response type for the Query/CirculatingSupply RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -561,7 +554,7 @@ paths: QueryEpochMintProvisionResponse is the response type for the Query/EpochMintProvision RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -603,7 +596,7 @@ paths: RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -694,7 +687,6 @@ paths: be allocated to the community pool enable_inflation: type: boolean - format: boolean title: >- parameter to enable inflation and halt increasing the skipped_epochs @@ -702,7 +694,7 @@ paths: QueryParamsResponse is the response type for the Query/Params RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -743,7 +735,7 @@ paths: QueryPeriodResponse is the response type for the Query/Period RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -786,7 +778,7 @@ paths: RPC method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -809,31 +801,35 @@ paths: format: byte tags: - Query - '/ethermint/evm/v1/account/{address}': + /canto/onboarding/v1/params: get: - summary: Account queries an Ethereum account. - operationId: Account + summary: Params retrieves the total set of onboarding parameters. + operationId: OnboardingParams responses: '200': description: A successful response. schema: type: object properties: - balance: - type: string - description: balance is the balance of the EVM denomination. - code_hash: - type: string - description: code hash is the hex-formatted code bytes from the EOA. - nonce: - type: string - format: uint64 - description: nonce is the account's sequence number. + params: + description: params defines the parameters of the module. + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module description: >- - QueryAccountResponse is the response type for the Query/Account - RPC method. + QueryParamsResponse is the response type for the Query/Params RPC + method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -851,204 +847,81 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the ethereum hex address to query the account for. - in: path - required: true - type: string tags: - Query - '/ethermint/evm/v1/balances/{address}': + /canto/coinswap/params: get: - summary: |- - Balance queries the balance of a the EVM denomination for a single - EthAccount. - operationId: Balance + summary: Params returns parameters of the module. + operationId: CoinswapParams responses: '200': description: A successful response. schema: type: object properties: - balance: - type: string - description: balance is the balance of the EVM denomination. + params: + type: object + properties: + fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + tax_rate: + type: string + max_standard_coin_per_pool: + type: string + max_swap_amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: Params defines token module's parameters description: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method. + QueryParamsResponse is response type for the Query/Params RPC + method. default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1066,411 +939,117 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the ethereum hex address to query the balance for. - in: path - required: true - type: string tags: - Query - /ethermint/evm/v1/base_fee: + /canto/coinswap/pools: get: - summary: >- - BaseFee queries the base fee of the parent block of the current block, - - it's similar to feemarket module's method, but also checks london - hardfork status. - operationId: BaseFee + summary: LiquidityPools returns all the liquidity pools available + operationId: LiquidityPools responses: '200': description: A successful response. schema: type: object properties: - base_fee: - type: string - description: BaseFeeResponse returns the EIP1559 base fee. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + pools: type: array items: type: object properties: - type_url: + id: + type: string + escrow_address: type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). + Coin defines a token with a denomination and an amount. - In practice, teams usually precompile into the binary - all types that they + NOTE: The amount field is an Int which implements the + custom method - expect it to use in the context of Any. However, for - URLs which use the + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - scheme `http`, `https`, or no scheme, one can optionally - set up a type - server that maps type URLs to message definitions as - follows: + NOTE: The amount field is an Int which implements the + custom method - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: + Coin defines a token with a denomination and an amount. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + NOTE: The amount field is an Int which implements the + custom method - If the embedded message type is well-known and has a custom - JSON + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - representation, that representation will be embedded adding - a field + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the - `value` which holds the custom JSON in addition to the - `@type` + corresponding request message has used PageRequest. - field. Example (for message [google.protobuf.Duration][]): + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryLiquidityPoolsResponse is response type for the + Query/LiquidityPools RPC - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - '/ethermint/evm/v1/codes/{address}': - get: - summary: Code queries the balance of all coins for a single account. - operationId: Code - responses: - '200': - description: A successful response. - schema: - type: object - properties: - code: - type: string - format: byte - description: code represents the code bytes from an ethereum address. - description: |- - QueryCodeResponse is the response type for the Query/Code RPC - method. + method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1488,424 +1067,146 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - additional field `@type` which contains the type URL. - Example: + It is less efficient than using key. Only one of offset or key + should - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - If the embedded message type is well-known and has a custom - JSON + a count of the total number of items available for pagination in + UIs. - representation, that representation will be embedded adding - a field + count_total is only respected when offset is used. It is ignored + when key - `value` which holds the custom JSON in addition to the - `@type` + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the ethereum hex address to query the code for. - in: path - required: true - type: string + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean tags: - Query - '/ethermint/evm/v1/cosmos_account/{address}': + /canto/coinswap/pools/{lpt_denom}: get: - summary: CosmosAccount queries an Ethereum account's Cosmos Address. - operationId: CosmosAccount + summary: |- + LiquidityPool returns the liquidity pool for the provided + lpt_denom + operationId: LiquidityPool responses: '200': description: A successful response. schema: type: object properties: - cosmos_address: - type: string - description: cosmos_address is the cosmos address of the account. - sequence: - type: string - format: uint64 - description: sequence is the account's sequence number. - account_number: - type: string - format: uint64 - title: account_number is the account numbert - description: >- - QueryCosmosAccountResponse is the response type for the - Query/CosmosAccount - - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + pool: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - protocol buffer message. This string must contain at - least - one "/" character. The last segment of the URL's path - must represent + NOTE: The amount field is an Int which implements the + custom method - the fully qualified name of the type (as in + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - `path/google.protobuf.Duration`). The name should be in - a canonical form - (e.g., leading "." is not accepted). + NOTE: The amount field is an Int which implements the + custom method + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - `value` which holds the custom JSON in addition to the - `@type` + NOTE: The amount field is an Int which implements the + custom method - field. Example (for message [google.protobuf.Duration][]): + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + title: >- + QueryLiquidityPoolResponse is response type for the + Query/LiquidityPool RPC - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the ethereum hex address to query the account for. - in: path - required: true - type: string - tags: - - Query - /ethermint/evm/v1/estimate_gas: - get: - summary: EstimateGas implements the `eth_estimateGas` rpc api - operationId: EstimateGas - responses: - '200': - description: A successful response. - schema: - type: object - properties: - gas: - type: string - format: uint64 - title: the estimated gas - title: EstimateGasResponse defines EstimateGas response + method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1923,52832 +1224,924 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. + parameters: + - name: lpt_denom + in: path + required: true + type: string + tags: + - Query +definitions: + canto.epochs.v1.EpochInfo: + type: object + properties: + identifier: + type: string + start_time: + type: string + format: date-time + duration: + type: string + current_epoch: + type: string + format: int64 + current_epoch_start_time: + type: string + format: date-time + epoch_counting_started: + type: boolean + current_epoch_start_height: + type: string + format: int64 + canto.epochs.v1.QueryCurrentEpochResponse: + type: object + properties: + current_epoch: + type: string + format: int64 + canto.epochs.v1.QueryEpochsInfoResponse: + type: object + properties: + epochs: + type: array + items: + type: object + properties: + identifier: + type: string + start_time: + type: string + format: date-time + duration: + type: string + current_epoch: + type: string + format: int64 + current_epoch_start_time: + type: string + format: date-time + epoch_counting_started: + type: boolean + current_epoch_start_height: + type: string + format: int64 + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - Example 1: Pack and unpack a message in C++. + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include - Example 2: Pack and unpack a message in Java. + a count of the total number of items available for pagination in UIs. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + count_total is only respected when offset is used. It is ignored when + key - Example 3: Pack and unpack a message in Python. + is set. + reverse: + type: boolean + description: >- + reverse is set to true if results are to be returned in the descending + order. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Since: cosmos-sdk 0.43 + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: args - description: same json format as the json rpc api. - in: query - required: false - type: string - format: byte - - name: gas_cap - description: the default gas cap to be used. - in: query - required: false - type: string - format: uint64 - tags: - - Query - /ethermint/evm/v1/eth_call: - get: - summary: EthCall implements the `eth_call` rpc api - operationId: EthCall - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hash: - type: string - title: >- - ethereum transaction hash in hex format. This hash differs - from the - - Tendermint sha256 hash of the transaction bytes. See - - https://github.com/tendermint/tendermint/issues/6539 for - reference - logs: - type: array - items: - type: object - properties: - address: - type: string - title: address of the contract that generated the event - topics: - type: array - items: - type: string - description: list of topics provided by the contract. - data: - type: string - format: byte - title: 'supplied by the contract, usually ABI-encoded' - block_number: - type: string - format: uint64 - title: block in which the transaction was included - tx_hash: - type: string - title: hash of the transaction - tx_index: - type: string - format: uint64 - title: index of the transaction in the block - block_hash: - type: string - title: hash of the block in which the transaction was included - index: - type: string - format: uint64 - title: index of the log in the block - removed: - type: boolean - format: boolean - description: >- - The Removed field is true if this log was reverted due - to a chain - - reorganisation. You must pay attention to this field if - you receive logs - - through a filter query. - description: >- - Log represents an protobuf compatible Ethereum Log that - defines a contract - - log event. These events are generated by the LOG opcode and - stored/indexed by - - the node. - description: >- - logs contains the transaction hash and the proto-compatible - ethereum - - logs. - ret: - type: string - format: byte - title: >- - returned data from evm function (result or data supplied with - revert - - opcode) - vm_error: - type: string - title: vm error is the error returned by vm execution - gas_used: - type: string - format: uint64 - title: gas consumed by the transaction - description: MsgEthereumTxResponse defines the Msg/EthereumTx response type. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: args - description: same json format as the json rpc api. - in: query - required: false - type: string - format: byte - - name: gas_cap - description: the default gas cap to be used. - in: query - required: false - type: string - format: uint64 - tags: - - Query - /ethermint/evm/v1/params: - get: - summary: Params queries the parameters of x/evm module. - operationId: EvmParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params define the evm module parameters. - type: object - properties: - evm_denom: - type: string - description: >- - evm denom represents the token denomination used to run - the EVM state - - transitions. - enable_create: - type: boolean - format: boolean - title: >- - enable create toggles state transitions that use the - vm.Create function - enable_call: - type: boolean - format: boolean - title: >- - enable call toggles state transitions that use the vm.Call - function - extra_eips: - type: array - items: - type: string - format: int64 - title: extra eips defines the additional EIPs for the vm.Config - chain_config: - title: >- - chain config defines the EVM chain configuration - parameters - type: object - properties: - homestead_block: - type: string - title: >- - Homestead switch block (nil no fork, 0 = already - homestead) - dao_fork_block: - type: string - title: TheDAO hard-fork switch block (nil no fork) - dao_fork_support: - type: boolean - format: boolean - title: >- - Whether the nodes supports or opposes the DAO - hard-fork - eip150_block: - type: string - title: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 - HF block (nil no fork) - eip150_hash: - type: string - title: >- - EIP150 HF hash (needed for header only clients as only - gas pricing changed) - eip155_block: - type: string - title: EIP155Block HF block - eip158_block: - type: string - title: EIP158 HF block - byzantium_block: - type: string - title: >- - Byzantium switch block (nil no fork, 0 = already on - byzantium) - constantinople_block: - type: string - title: >- - Constantinople switch block (nil no fork, 0 = already - activated) - petersburg_block: - type: string - title: Petersburg switch block (nil same as Constantinople) - istanbul_block: - type: string - title: >- - Istanbul switch block (nil no fork, 0 = already on - istanbul) - muir_glacier_block: - type: string - title: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = - already activated) - berlin_block: - type: string - title: >- - Berlin switch block (nil = no fork, 0 = already on - berlin) - london_block: - type: string - title: >- - London switch block (nil = no fork, 0 = already on - london) - arrow_glacier_block: - type: string - title: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = - already activated) - merge_fork_block: - type: string - title: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = - already in merge proceedings) - description: >- - ChainConfig defines the Ethereum ChainConfig parameters - using *sdk.Int values - - instead of *big.Int. - allow_unprotected_txs: - type: boolean - format: boolean - description: >- - Allow unprotected transactions defines if replay-protected - (i.e non EIP155 - - signed) transactions can be executed on the state machine. - title: Params defines the EVM module parameters - description: >- - QueryParamsResponse defines the response type for querying x/evm - parameters. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - '/ethermint/evm/v1/storage/{address}/{key}': - get: - summary: Storage queries the balance of all coins for a single account. - operationId: Storage - responses: - '200': - description: A successful response. - schema: - type: object - properties: - value: - type: string - description: >- - key defines the storage state value hash associated with the - given key. - description: >- - QueryStorageResponse is the response type for the Query/Storage - RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: >- - / address is the ethereum hex address to query the storage state - for. - in: path - required: true - type: string - - name: key - description: key defines the key of the storage state - in: path - required: true - type: string - tags: - - Query - /ethermint/evm/v1/trace_block: - get: - summary: >- - TraceBlock implements the `debug_traceBlockByNumber` and - `debug_traceBlockByHash` rpc api - operationId: TraceBlock - responses: - '200': - description: A successful response. - schema: - type: object - properties: - data: - type: string - format: byte - title: QueryTraceBlockResponse defines TraceBlock response - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: trace_config.tracer - description: custom javascript tracer. - in: query - required: false - type: string - - name: trace_config.timeout - description: >- - overrides the default timeout of 5 seconds for JavaScript-based - tracing - - calls. - in: query - required: false - type: string - - name: trace_config.reexec - description: number of blocks the tracer is willing to go back. - in: query - required: false - type: string - format: uint64 - - name: trace_config.disable_stack - description: disable stack capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.disable_storage - description: disable storage capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.debug - description: print output during capture end. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.limit - description: 'maximum length of output, but zero means unlimited.' - in: query - required: false - type: integer - format: int32 - - name: trace_config.overrides.homestead_block - description: 'Homestead switch block (nil no fork, 0 = already homestead).' - in: query - required: false - type: string - - name: trace_config.overrides.dao_fork_block - description: TheDAO hard-fork switch block (nil no fork). - in: query - required: false - type: string - - name: trace_config.overrides.dao_fork_support - description: Whether the nodes supports or opposes the DAO hard-fork. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.overrides.eip150_block - description: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil - no fork). - in: query - required: false - type: string - - name: trace_config.overrides.eip150_hash - description: >- - EIP150 HF hash (needed for header only clients as only gas pricing - changed). - in: query - required: false - type: string - - name: trace_config.overrides.eip155_block - description: EIP155Block HF block. - in: query - required: false - type: string - - name: trace_config.overrides.eip158_block - description: EIP158 HF block. - in: query - required: false - type: string - - name: trace_config.overrides.byzantium_block - description: 'Byzantium switch block (nil no fork, 0 = already on byzantium).' - in: query - required: false - type: string - - name: trace_config.overrides.constantinople_block - description: 'Constantinople switch block (nil no fork, 0 = already activated).' - in: query - required: false - type: string - - name: trace_config.overrides.petersburg_block - description: Petersburg switch block (nil same as Constantinople). - in: query - required: false - type: string - - name: trace_config.overrides.istanbul_block - description: 'Istanbul switch block (nil no fork, 0 = already on istanbul).' - in: query - required: false - type: string - - name: trace_config.overrides.muir_glacier_block - description: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated). - in: query - required: false - type: string - - name: trace_config.overrides.berlin_block - description: 'Berlin switch block (nil = no fork, 0 = already on berlin).' - in: query - required: false - type: string - - name: trace_config.overrides.london_block - description: 'London switch block (nil = no fork, 0 = already on london).' - in: query - required: false - type: string - - name: trace_config.overrides.arrow_glacier_block - description: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated). - in: query - required: false - type: string - - name: trace_config.overrides.merge_fork_block - description: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in - merge proceedings). - in: query - required: false - type: string - - name: trace_config.enable_memory - description: enable memory capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.enable_return_data - description: enable return data capture. - in: query - required: false - type: boolean - format: boolean - - name: block_number - description: block number. - in: query - required: false - type: string - format: int64 - - name: block_hash - description: block hex hash. - in: query - required: false - type: string - - name: block_time - description: block time. - in: query - required: false - type: string - format: date-time - tags: - - Query - /ethermint/evm/v1/trace_tx: - get: - summary: TraceTx implements the `debug_traceTransaction` rpc api - operationId: TraceTx - responses: - '200': - description: A successful response. - schema: - type: object - properties: - data: - type: string - format: byte - title: response serialized in bytes - title: QueryTraceTxResponse defines TraceTx response - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: msg.data.type_url - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a canonical - form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types that - they - - expect it to use in the context of Any. However, for URLs which use - the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - in: query - required: false - type: string - - name: msg.data.value - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - in: query - required: false - type: string - format: byte - - name: msg.size - description: encoded storage size of the transaction. - in: query - required: false - type: number - format: double - - name: msg.hash - description: transaction hash in hex format. - in: query - required: false - type: string - - name: msg.from - description: |- - ethereum signer address in hex format. This address value is checked - against the address derived from the signature (V, R, S) using the - secp256k1 elliptic curve. - in: query - required: false - type: string - - name: trace_config.tracer - description: custom javascript tracer. - in: query - required: false - type: string - - name: trace_config.timeout - description: >- - overrides the default timeout of 5 seconds for JavaScript-based - tracing - - calls. - in: query - required: false - type: string - - name: trace_config.reexec - description: number of blocks the tracer is willing to go back. - in: query - required: false - type: string - format: uint64 - - name: trace_config.disable_stack - description: disable stack capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.disable_storage - description: disable storage capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.debug - description: print output during capture end. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.limit - description: 'maximum length of output, but zero means unlimited.' - in: query - required: false - type: integer - format: int32 - - name: trace_config.overrides.homestead_block - description: 'Homestead switch block (nil no fork, 0 = already homestead).' - in: query - required: false - type: string - - name: trace_config.overrides.dao_fork_block - description: TheDAO hard-fork switch block (nil no fork). - in: query - required: false - type: string - - name: trace_config.overrides.dao_fork_support - description: Whether the nodes supports or opposes the DAO hard-fork. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.overrides.eip150_block - description: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil - no fork). - in: query - required: false - type: string - - name: trace_config.overrides.eip150_hash - description: >- - EIP150 HF hash (needed for header only clients as only gas pricing - changed). - in: query - required: false - type: string - - name: trace_config.overrides.eip155_block - description: EIP155Block HF block. - in: query - required: false - type: string - - name: trace_config.overrides.eip158_block - description: EIP158 HF block. - in: query - required: false - type: string - - name: trace_config.overrides.byzantium_block - description: 'Byzantium switch block (nil no fork, 0 = already on byzantium).' - in: query - required: false - type: string - - name: trace_config.overrides.constantinople_block - description: 'Constantinople switch block (nil no fork, 0 = already activated).' - in: query - required: false - type: string - - name: trace_config.overrides.petersburg_block - description: Petersburg switch block (nil same as Constantinople). - in: query - required: false - type: string - - name: trace_config.overrides.istanbul_block - description: 'Istanbul switch block (nil no fork, 0 = already on istanbul).' - in: query - required: false - type: string - - name: trace_config.overrides.muir_glacier_block - description: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated). - in: query - required: false - type: string - - name: trace_config.overrides.berlin_block - description: 'Berlin switch block (nil = no fork, 0 = already on berlin).' - in: query - required: false - type: string - - name: trace_config.overrides.london_block - description: 'London switch block (nil = no fork, 0 = already on london).' - in: query - required: false - type: string - - name: trace_config.overrides.arrow_glacier_block - description: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated). - in: query - required: false - type: string - - name: trace_config.overrides.merge_fork_block - description: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in - merge proceedings). - in: query - required: false - type: string - - name: trace_config.enable_memory - description: enable memory capture. - in: query - required: false - type: boolean - format: boolean - - name: trace_config.enable_return_data - description: enable return data capture. - in: query - required: false - type: boolean - format: boolean - - name: block_number - description: block number of requested transaction. - in: query - required: false - type: string - format: int64 - - name: block_hash - description: block hex hash of requested transaction. - in: query - required: false - type: string - - name: block_time - description: block time of requested transaction. - in: query - required: false - type: string - format: date-time - tags: - - Query - '/ethermint/evm/v1/validator_account/{cons_address}': - get: - summary: >- - ValidatorAccount queries an Ethereum account's from a validator - consensus - - Address. - operationId: ValidatorAccount - responses: - '200': - description: A successful response. - schema: - type: object - properties: - account_address: - type: string - description: >- - account_address is the cosmos address of the account in bech32 - format. - sequence: - type: string - format: uint64 - description: sequence is the account's sequence number. - account_number: - type: string - format: uint64 - title: account_number is the account number - description: |- - QueryValidatorAccountResponse is the response type for the - Query/ValidatorAccount RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: cons_address - description: cons_address is the validator cons address to query the account for. - in: path - required: true - type: string - tags: - - Query - /ethermint/feemarket/v1/base_fee: - get: - summary: BaseFee queries the base fee of the parent block of the current block. - operationId: FeeMarketBaseFee - responses: - '200': - description: A successful response. - schema: - type: object - properties: - base_fee: - type: string - description: BaseFeeResponse returns the EIP1559 base fee. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /ethermint/feemarket/v1/block_gas: - get: - summary: BlockGas queries the gas used at a given block height - operationId: BlockGas - responses: - '200': - description: A successful response. - schema: - type: object - properties: - gas: - type: string - format: int64 - description: QueryBlockGasResponse returns block gas used for a given height. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /ethermint/feemarket/v1/params: - get: - summary: Params queries the parameters of x/feemarket module. - operationId: FeeMarketParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params define the evm module parameters. - type: object - properties: - no_base_fee: - type: boolean - format: boolean - title: >- - no base fee forces the EIP-1559 base fee to 0 (needed for - 0 price calls) - base_fee_change_denominator: - type: integer - format: int64 - description: >- - base fee change denominator bounds the amount the base fee - can change - - between blocks. - elasticity_multiplier: - type: integer - format: int64 - description: >- - elasticity multiplier bounds the maximum gas limit an - EIP-1559 block may - - have. - enable_height: - type: string - format: int64 - description: height at which the base fee calculation is enabled. - base_fee: - type: string - description: base fee for EIP-1559 blocks. - min_gas_price: - type: string - title: >- - min_gas_price defines the minimum gas price value for - cosmos and eth transactions - min_gas_multiplier: - type: string - title: >- - min gas denominator bounds the minimum gasUsed to be - charged - - to senders based on GasLimit - title: Params defines the EVM module parameters - description: >- - QueryParamsResponse defines the response type for querying x/evm - parameters. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /canto/onboarding/v1/params: - get: - summary: Params retrieves the total set of onboarding parameters. - operationId: OnboardingParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - enable_onboarding: - type: boolean - format: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /canto/coinswap/params: - get: - summary: Params returns parameters of the module. - operationId: CoinswapParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - tax_rate: - type: string - max_standard_coin_per_pool: - type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: Params defines token module's parameters - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /canto/coinswap/pools: - get: - summary: LiquidityPools returns all the liquidity pools available - operationId: LiquidityPools - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pools: - type: array - items: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryLiquidityPoolsResponse is response type for the - Query/LiquidityPools RPC - - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/canto/coinswap/pools/{lpt_denom}': - get: - summary: |- - LiquidityPool returns the liquidity pool for the provided - lpt_denom - operationId: LiquidityPool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - title: >- - QueryLiquidityPoolResponse is response type for the - Query/LiquidityPool RPC - - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: lpt_denom - in: path - required: true - type: string - tags: - - Query - '/ibc/apps/transfer/v1/denom_hashes/{trace}': - get: - summary: DenomHash queries a denomination hash information. - operationId: DenomHash - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hash: - type: string - description: hash (in hex format) of the denomination trace information. - description: >- - QueryDenomHashResponse is the response type for the - Query/DenomHash RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: trace - description: 'The denomination trace ([port_id]/[channel_id])+/[denom]' - in: path - required: true - type: string - tags: - - Query - /ibc/apps/transfer/v1/denom_traces: - get: - summary: DenomTraces queries all denomination traces. - operationId: DenomTraces - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the - - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the - Query/DenomTraces RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/apps/transfer/v1/denom_traces/{hash}': - get: - summary: DenomTrace queries a denomination trace information. - operationId: DenomTrace - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_trace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the - - source tracing information path. - description: >- - QueryDenomTraceResponse is the response type for the - Query/DenomTrace RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: hash - description: hash (in hex format) of the denomination trace information. - in: path - required: true - type: string - tags: - - Query - /ibc/apps/transfer/v1/params: - get: - summary: Params queries all parameters of the ibc-transfer module. - operationId: TransferParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - format: boolean - description: >- - send_enabled enables or disables all cross-chain token - transfers from this - - chain. - receive_enabled: - type: boolean - format: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - - chain. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /ibc/client/v1/params: - get: - summary: ClientParams queries all parameters of the ibc client. - operationId: ClientParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: >- - allowed_clients defines the list of allowed client state - types. - description: >- - QueryClientParamsResponse is the response type for the - Query/ClientParams RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /ibc/core/client/v1/client_states: - get: - summary: ClientStates queries all the IBC light clients of a chain. - operationId: ClientStates - responses: - '200': - description: A successful response. - schema: - type: object - properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the - Query/ClientStates RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/core/client/v1/client_states/{client_id}': - get: - summary: ClientState queries an IBC light client. - operationId: ClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryClientStateResponse is the response type for the - Query/ClientState RPC - - method. Besides the client state, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client state unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/client/v1/client_status/{client_id}': - get: - summary: Status queries the status of an IBC client. - operationId: ClientStatus - responses: - '200': - description: A successful response. - schema: - type: object - properties: - status: - type: string - description: >- - QueryClientStatusResponse is the response type for the - Query/ClientStatus RPC - - method. It returns the current status of the IBC client. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/client/v1/consensus_states/{client_id}': - get: - summary: |- - ConsensusStates queries all the consensus state associated with a given - client. - operationId: ConsensusStates - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each - height while keeping - - RevisionNumber the same. However some consensus - algorithms may choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as - the RevisionHeight - - gets reset - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height - - field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}': - get: - summary: >- - ConsensusState queries a consensus state associated with a client state - at - - a given height. - operationId: ConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - consensus state associated with the client identifier at the - given height - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - - RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: revision_number - description: consensus state revision number - in: path - required: true - type: string - format: uint64 - - name: revision_height - description: consensus state revision height - in: path - required: true - type: string - format: uint64 - - name: latest_height - description: >- - latest_height overrrides the height field and queries the latest - stored - - ConsensusState. - in: query - required: false - type: boolean - format: boolean - tags: - - Query - /ibc/core/client/v1/upgraded_client_states: - get: - summary: UpgradedClientState queries an Upgraded IBC light client. - operationId: UpgradedClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - description: |- - QueryUpgradedClientStateResponse is the response type for the - Query/UpgradedClientState RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /ibc/core/client/v1/upgraded_consensus_states: - get: - summary: UpgradedConsensusState queries an Upgraded IBC consensus state. - operationId: UpgradedConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: Consensus state associated with the request identifier - description: |- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - '/ibc/core/connection/v1/client_connections/{client_id}': - get: - summary: |- - ClientConnections queries the connection paths associated with a client - state. - operationId: ClientConnections - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier associated with a connection - in: path - required: true - type: string - tags: - - Query - /ibc/core/connection/v1/connections: - get: - summary: Connections queries all the IBC connections of a chain. - operationId: Connections - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to - negotiate the IBC verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will - be append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: >- - IdentifiedConnection defines a connection with additional - connection - - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionsResponse is the response type for the - Query/Connections RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}': - get: - summary: Connection queries an IBC connection end. - operationId: Connection - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connection: - title: connection associated with the request identifier - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to negotiate - the IBC verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can - be used for - - packet-verification NOTE: delay period logic is only - implemented by some - - clients. - description: >- - ConnectionEnd defines a stateful object on a chain connected - to another - - separate one. - - NOTE: there must only be 2 defined ConnectionEnds to establish - - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionResponse is the response type for the - Query/Connection RPC - - method. Besides the connection end, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}/client_state': - get: - summary: |- - ConnectionClientState queries the client state associated with the - connection. - operationId: ConnectionClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}': - get: - summary: |- - ConnectionConsensusState queries the consensus state associated with the - connection. - operationId: ConnectionConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - - name: revision_number - in: path - required: true - type: string - format: uint64 - - name: revision_height - in: path - required: true - type: string - format: uint64 - tags: - - Query - /ibc/core/channel/v1/channels: - get: - summary: Channels queries all the IBC channels of a chain. - operationId: Channels - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}': - get: - summary: Channel queries an IBC Channel. - operationId: Channel - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - description: >- - Channel defines pipeline for exactly-once packet delivery - between specific - - modules on separate blockchains, which has at least one end - capable of - - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelResponse is the response type for the Query/Channel - RPC method. - - Besides the Channel end, it includes a proof and the height from - which the - - proof was retrieved. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state': - get: - summary: >- - ChannelClientState queries for the client state for the channel - associated - - with the provided channel identifiers. - operationId: ChannelClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}': - get: - summary: |- - ChannelConsensusState queries for the consensus state for the channel - associated with the provided channel identifiers. - operationId: ChannelConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: revision_number - description: revision number of the consensus state - in: path - required: true - type: string - format: uint64 - - name: revision_height - description: revision height of the consensus state - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence': - get: - summary: >- - NextSequenceReceive returns the next receive sequence for a given - channel. - operationId: NextSequenceReceive - responses: - '200': - description: A successful response. - schema: - type: object - properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements': - get: - summary: >- - PacketAcknowledgements returns all the packet acknowledgements - associated - - with a channel. - operationId: PacketAcknowledgements - responses: - '200': - description: A successful response. - schema: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - - name: packet_commitment_sequences - description: list of packet sequences. - in: query - required: false - type: array - items: - type: string - format: uint64 - collectionFormat: multi - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}': - get: - summary: PacketAcknowledgement queries a stored packet acknowledgement hash. - operationId: PacketAcknowledgement - responses: - '200': - description: A successful response. - schema: - type: object - properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketAcknowledgementResponse defines the client query - response for a - - packet which also includes a proof and the height from which the - - proof was retrieved - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments': - get: - summary: |- - PacketCommitments returns all the packet commitments hashes associated - with a channel. - operationId: PacketCommitments - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks': - get: - summary: >- - UnreceivedAcks returns all the unreceived IBC acknowledgements - associated - - with a channel and sequences. - operationId: UnreceivedAcks - responses: - '200': - description: A successful response. - schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_ack_sequences - description: list of acknowledgement sequences - in: path - required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets': - get: - summary: >- - UnreceivedPackets returns all the unreceived IBC packets associated with - a - - channel and sequences. - operationId: UnreceivedPackets - responses: - '200': - description: A successful response. - schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_commitment_sequences - description: list of packet sequences - in: path - required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}': - get: - summary: PacketCommitment queries a stored packet commitment hash. - operationId: PacketCommitment - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response - for a packet - - which also includes a proof and the height from which the proof - was - - retrieved - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}': - get: - summary: >- - PacketReceipt queries if a given packet sequence has been received on - the - - queried chain - operationId: PacketReceipt - responses: - '200': - description: A successful response. - schema: - type: object - properties: - received: - type: boolean - format: boolean - title: success flag for if receipt exists - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a - packet - - receipt which also includes a proof, and the height from which the - proof was - - retrieved - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/connections/{connection}/channels': - get: - summary: |- - ConnectionChannels queries all the channels associated with a connection - end. - operationId: ConnectionChannels - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection - description: connection unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - /cosmos/auth/v1beta1/accounts: - get: - summary: Accounts returns all the existing accounts - description: 'Since: cosmos-sdk 0.43' - operationId: Accounts - responses: - '200': - description: A successful response. - schema: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAccountsResponse is the response type for the Query/Accounts - RPC method. - - - Since: cosmos-sdk 0.43 - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/auth/v1beta1/accounts/{address}': - get: - summary: Account returns account details based on address. - operationId: AuthAccount - responses: - '200': - description: A successful response. - schema: - type: object - properties: - account: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryAccountResponse is the response type for the Query/Account - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address defines the address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/auth/v1beta1/params: - get: - summary: Params queries all parameters. - operationId: AuthParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/authz/v1beta1/grants: - get: - summary: 'Returns list of `Authorization`, granted to the grantee by the granter.' - operationId: Grants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: >- - authorizations is a list of grants granted for grantee by - granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the - Query/Authorizations RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: query - required: false - type: string - - name: grantee - in: query - required: false - type: string - - name: msg_type_url - description: >- - Optional, msg_type_url, when set, will query only grants matching - given msg type. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/authz/v1beta1/grants/grantee/{grantee}': - get: - summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. - description: 'Since: cosmos-sdk 0.45.2' - operationId: GranteeGrants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: grantee - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/authz/v1beta1/grants/granter/{granter}': - get: - summary: 'GranterGrants returns list of `GrantAuthorization`, granted by granter.' - description: 'Since: cosmos-sdk 0.45.2' - operationId: GranterGrants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/bank/v1beta1/balances/{address}': - get: - summary: AllBalances queries the balance of all coins for a single account. - operationId: AllBalances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the - Query/AllBalances RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/bank/v1beta1/balances/{address}/by_denom': - get: - summary: Balance queries the balance of a single coin for a single account. - operationId: BankBalance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - /cosmos/bank/v1beta1/denoms_metadata: - get: - summary: >- - DenomsMetadata queries the client metadata for all registered coin - denominations. - operationId: DenomsMetadata - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given - denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the - given DenomUnit's denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a - given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges - (eg: ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the - registered tokens. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/bank/v1beta1/denoms_metadata/{denom}': - get: - summary: DenomsMetadata queries the client metadata of a given coin denomination. - operationId: DenomMetadata - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom - unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a given - coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: denom - description: denom is the coin denom to query the metadata for. - in: path - required: true - type: string - tags: - - Query - /cosmos/bank/v1beta1/params: - get: - summary: Params queries the parameters of x/bank module. - operationId: BankParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - format: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is - - sendable). - default_send_enabled: - type: boolean - format: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - '/cosmos/bank/v1beta1/spendable_balances/{address}': - get: - summary: |- - SpendableBalances queries the spenable balance of all coins for a single - account. - operationId: SpendableBalances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QuerySpendableBalancesResponse defines the gRPC response structure - for querying - - an account's spendable balances. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: address - description: address is the address to query spendable balances for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - /cosmos/bank/v1beta1/supply: - get: - summary: TotalSupply queries the total supply of all coins. - operationId: TotalSupply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the - Query/TotalSupply RPC - - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/bank/v1beta1/supply/{denom}': - get: - summary: SupplyOf queries the supply of a single coin. - operationId: SupplyOf - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: denom - description: denom is the coin denom to query balances for. - in: path - required: true - type: string - tags: - - Query - /cosmos/distribution/v1beta1/community_pool: - get: - summary: CommunityPool queries the community pool coins. - operationId: CommunityPool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool - - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards': - get: - summary: |- - DelegationTotalRewards queries the total rewards accrued by a each - validator. - operationId: DelegationTotalRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}': - get: - summary: DelegationRewards queries the total rewards accrued by a delegation. - operationId: DelegationRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators': - get: - summary: DelegatorValidators queries the validators of a delegator. - operationId: DistDelegatorValidators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: string - description: >- - validators defines the validators a delegator is delegating - for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address': - get: - summary: DelegatorWithdrawAddress queries withdraw address of a delegator. - operationId: DelegatorWithdrawAddress - responses: - '200': - description: A successful response. - schema: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/distribution/v1beta1/params: - get: - summary: Params queries params of the distribution module. - operationId: DistributionParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - format: boolean - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/commission': - get: - summary: ValidatorCommission queries accumulated commission for a validator. - operationId: ValidatorCommission - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards': - get: - summary: ValidatorOutstandingRewards queries rewards of a validator address. - operationId: ValidatorOutstandingRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding - (un-withdrawn) rewards - - for a validator inexpensive to track, allows simple sanity - checks. - description: >- - QueryValidatorOutstandingRewardsResponse is the response type for - the - - Query/ValidatorOutstandingRewards RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/slashes': - get: - summary: ValidatorSlashes queries slash events of a validator. - operationId: ValidatorSlashes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - slashes: - type: array - items: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: >- - ValidatorSlashEvent represents a validator slash event. - - Height is implicit within the store key. - - This is needed to calculate appropriate amount of staking - tokens - - for delegations which are withdrawn after a slash has - occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - - name: starting_height - description: >- - starting_height defines the optional starting height to query the - slashes. - in: query - required: false - type: string - format: uint64 - - name: ending_height - description: >- - starting_height defines the optional ending height to query the - slashes. - in: query - required: false - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}': - get: - summary: Allowance returns fee granted to the grantee by the granter. - operationId: Allowance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - allowance: - description: allowance is a allowance granted for grantee by granter. - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: >- - QueryAllowanceResponse is the response type for the - Query/Allowance RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - description: >- - granter is the address of the user granting an allowance of their - funds. - in: path - required: true - type: string - - name: grantee - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - in: path - required: true - type: string - tags: - - Query - '/cosmos/feegrant/v1beta1/allowances/{grantee}': - get: - summary: Allowances returns all the grants for address. - operationId: Allowances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic and filtered fee - allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the - Query/Allowances RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: grantee - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - /cosmos/evidence/v1beta1/evidence: - get: - summary: AllEvidence queries all evidence. - operationId: AllEvidence - responses: - '200': - description: A successful response. - schema: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the - Query/AllEvidence RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/evidence/v1beta1/evidence/{evidence_hash}': - get: - summary: Evidence queries evidence based on evidence hash. - operationId: Evidence - responses: - '200': - description: A successful response. - schema: - type: object - properties: - evidence: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: evidence_hash - description: evidence_hash defines the hash of the requested evidence. - in: path - required: true - type: string - format: byte - tags: - - Query - '/cosmos/gov/v1beta1/params/{params_type}': - get: - summary: Params queries all parameters of the gov module. - operationId: GovParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: params_type - description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". - in: path - required: true - type: string - tags: - - Query - /cosmos/gov/v1beta1/proposals: - get: - summary: Proposals queries all proposals based on given status. - operationId: Proposals - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - - name: voter - description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}': - get: - summary: Proposal queries proposal details based on ProposalID. - operationId: Proposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': - get: - summary: Deposits queries all deposits of a single proposal. - operationId: Deposits - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': - get: - summary: >- - Deposit queries single deposit information based proposalID, - depositAddr. - operationId: Deposit - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: path - required: true - type: string - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': - get: - summary: TallyResult queries the tally of a proposal vote. - operationId: TallyResult - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tally: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. - description: >- - QueryTallyResultResponse is the response type for the Query/Tally - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': - get: - summary: Votes queries votes of a given proposal. - operationId: Votes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field - is set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': - get: - summary: 'Vote queries voted information based on proposalID, voterAddr.' - operationId: Vote - responses: - '200': - description: A successful response. - schema: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is - set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: >- - QueryVoteResponse is the response type for the Query/Vote RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: voter - description: voter defines the oter address for the proposals. - in: path - required: true - type: string - tags: - - Query - /cosmos/slashing/v1beta1/params: - get: - summary: Params queries the parameters of slashing module - operationId: SlashingParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: >- - Params represents the parameters used for by the slashing - module. - title: >- - QueryParamsResponse is the response type for the Query/Params RPC - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos: - get: - summary: SigningInfos queries signing info of all validators - operationId: SigningInfos - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a - bonded - - in a block and may have signed a precommit or not. This - in conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - format: boolean - description: >- - Whether or not a validator has been tombstoned (killed - out of validator set). It is set - - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the - Query/SigningInfos RPC - - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': - get: - summary: SigningInfo queries the signing info of given cons address - operationId: SigningInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a - bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - format: boolean - description: >- - Whether or not a validator has been tombstoned (killed out - of validator set). It is set - - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: >- - val_signing_info is the signing info of requested val cons - address - title: >- - QuerySigningInfoResponse is the response type for the - Query/SigningInfo RPC - - method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: cons_address - description: cons_address is the address to query signing info of - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/delegations/{delegator_addr}': - get: - summary: >- - DelegatorDelegations queries all delegations of a given delegator - address. - operationId: DelegatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - delegation_responses defines all the delegations' info of a - delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': - get: - summary: Redelegations queries redelegations of given address. - operationId: Redelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation - source operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular - delegator's redelegating bonds - - from a particular source validator to a particular - destination validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a - RedelegationEntry except that it - - contains a balance in addition to shares which is more - suitable for client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except - that its entries - - contain a balance in addition to shares which is more - suitable for client - - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the - Query/Redelegations RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: src_validator_addr - description: src_validator_addr defines the validator address to redelegate from. - in: query - required: false - type: string - - name: dst_validator_addr - description: dst_validator_addr defines the validator address to redelegate to. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': - get: - summary: >- - DelegatorUnbondingDelegations queries all unbonding delegations of a - given - - delegator address. - operationId: DelegatorUnbondingDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryUnbondingDelegatorDelegationsResponse is response type for - the - - Query/UnbondingDelegatorDelegations RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': - get: - summary: |- - DelegatorValidators queries all validators info for given delegator - address. - operationId: DelegatorValidators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': - get: - summary: |- - DelegatorValidator queries validator info for given delegator validator - pair. - operationId: DelegatorValidator - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/historical_info/{height}': - get: - summary: HistoricalInfo queries the historical info for given height. - operationId: HistoricalInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the - - blockchain, including all blockchain data structures - and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the - validator's operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must - contain at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name - should be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message - definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup - results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type - URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of - the above specified type. - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a - - URL that describes the type of the serialized - message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature - (ex. UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height - at which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time - for the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a - fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate - was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to - coins. Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When - coins are delegated to - - this validator, the validator is credited with a - delegation whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the - Query/HistoricalInfo RPC - - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - description: height defines at which height to query the historical info. - in: path - required: true - type: string - format: int64 - tags: - - Query - /cosmos/staking/v1beta1/params: - get: - summary: Parameters queries the staking parameters. - operationId: StakingParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding - delegation or redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: >- - historical_entries is the number of historical entries to - persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/staking/v1beta1/pool: - get: - summary: Pool queries the pool info. - operationId: Pool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/staking/v1beta1/validators: - get: - summary: Validators queries all validators that match the given status. - operationId: Validators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators - RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: status - description: status enables to query for validators matching a given status. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}': - get: - summary: Validator queries validator info for given validator address. - operationId: Validator - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - title: >- - QueryValidatorResponse is response type for the Query/Validator - RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': - get: - summary: ValidatorDelegations queries delegate info for given validator. - operationId: ValidatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': - get: - summary: Delegation queries delegate info for given validator delegator pair. - operationId: Delegation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_response: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the voting - power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - QueryDelegationResponse is response type for the Query/Delegation - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': - get: - summary: |- - UnbondingDelegation queries unbonding info for given validator delegator - pair. - operationId: UnbondingDelegation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbond: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - description: >- - QueryDelegationResponse is response type for the - Query/UnbondingDelegation - - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': - get: - summary: >- - ValidatorUnbondingDelegations queries unbonding delegations of a - validator. - operationId: ValidatorUnbondingDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryValidatorUnbondingDelegationsResponse is response type for - the - - Query/ValidatorUnbondingDelegations RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Query - /cosmos/tx/v1beta1/simulate: - post: - summary: Simulate simulates executing a transaction for estimating gas usage. - operationId: Simulate - responses: - '200': - description: A successful response. - schema: - type: object - properties: - gas_info: - description: gas_info is the information about gas used in the simulation. - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler - execution. It MUST be - - length prefixed in order to separate data from multiple - message executions. - log: - type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted - during message - - or handler execution. - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - in: body - required: true - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' - tags: - - Service - /cosmos/tx/v1beta1/txs: - get: - summary: GetTxsEvent fetches txs by event. - operationId: GetTxsEvent - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: events - description: events is the list of transaction event type. - in: query - required: false - type: array - items: - type: string - collectionFormat: multi - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - - name: order_by - description: |2- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - in: query - required: false - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - tags: - - Service - post: - summary: BroadcastTx broadcast transaction. - operationId: BroadcastTx - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: >- - The output of the application's logger (raw string). May - be - - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where - the key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where - all the attributes - - contain key/value pairs that are strings instead - of raw bytes. - description: >- - Events contains a slice of Event objects that were - emitted during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed - tx ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the - weighted median of - - the timestamps of the valid votes in the block.LastCommit. - For height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante handler. Whereas Logs contains the - events, with - - additional metadata, emitted only by processing the - messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - in: body - required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the - TxService.Broadcast RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. - tags: - - Service - '/cosmos/tx/v1beta1/txs/block/{height}': - get: - summary: GetBlockWithTxs fetches a block with decoded txs. - description: 'Since: cosmos-sdk 0.45.2' - operationId: GetBlockWithTxs - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - description: height is the height of the block to query. - in: path - required: true - type: string - format: int64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Service - '/cosmos/tx/v1beta1/txs/{hash}': - get: - summary: GetTx fetches a tx by hash. - operationId: GetTx - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: hash - description: 'hash is the tx hash to query, encoded as a hex string.' - in: path - required: true - type: string - tags: - - Service - /cosmos/base/tendermint/v1beta1/blocks/latest: - get: - summary: GetLatestBlock returns the latest block. - operationId: GetLatestBlock - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the - - blockchain, including all blockchain data structures - and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - - blockchain, including all blockchain - data structures and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting - - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of - - validators. - description: >- - GetLatestBlockResponse is the response type for the - Query/GetLatestBlock RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - '/cosmos/base/tendermint/v1beta1/blocks/{height}': - get: - summary: GetBlockByHeight queries block for given height. - operationId: GetBlockByHeight - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the - - blockchain, including all blockchain data structures - and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - - blockchain, including all blockchain - data structures and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting - - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of - - validators. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - tags: - - Service - /cosmos/base/tendermint/v1beta1/node_info: - get: - summary: GetNodeInfo queries the current node info. - operationId: GetNodeInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the request type for the Query/GetNodeInfo - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - /cosmos/base/tendermint/v1beta1/syncing: - get: - summary: GetSyncing queries node syncing. - operationId: GetSyncing - responses: - '200': - description: A successful response. - schema: - type: object - properties: - syncing: - type: boolean - format: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing - RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - /cosmos/base/tendermint/v1beta1/validatorsets/latest: - get: - summary: GetLatestValidatorSet queries latest validator-set. - operationId: GetLatestValidatorSet - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Service - '/cosmos/base/tendermint/v1beta1/validatorsets/{height}': - get: - summary: GetValidatorSetByHeight queries validator-set at a given height. - operationId: GetValidatorSetByHeight - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - default: - description: An unexpected error response - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - format: boolean - tags: - - Service -definitions: - canto.epochs.v1.EpochInfo: - type: object - properties: - identifier: - type: string - start_time: - type: string - format: date-time - duration: - type: string - current_epoch: - type: string - format: int64 - current_epoch_start_time: - type: string - format: date-time - epoch_counting_started: - type: boolean - format: boolean - current_epoch_start_height: - type: string - format: int64 - canto.epochs.v1.QueryCurrentEpochResponse: - type: object - properties: - current_epoch: - type: string - format: int64 - canto.epochs.v1.QueryEpochsInfoResponse: - type: object - properties: - epochs: - type: array - items: - type: object - properties: - identifier: - type: string - start_time: - type: string - format: date-time - duration: - type: string - current_epoch: - type: string - format: int64 - current_epoch_start_time: - type: string - format: date-time - epoch_counting_started: - type: boolean - format: boolean - current_epoch_start_height: - type: string - format: int64 - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - cosmos.base.query.v1beta1.PageRequest: - type: object - properties: - key: - type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: - type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: - type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - count_total: - type: boolean - format: boolean - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in UIs. - - count_total is only respected when offset is used. It is ignored when - key - - is set. - reverse: - type: boolean - format: boolean - description: >- - reverse is set to true if results are to be returned in the descending - order. - - - Since: cosmos-sdk 0.43 - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - google.protobuf.Any: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a canonical - form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types that - they - - expect it to use in the context of Any. However, for URLs which use - the - - scheme `http`, `https`, or no scheme, one can optionally set up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along with - a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - grpc.gateway.runtime.Error: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - canto.erc20.v1.Owner: - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. - - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - canto.erc20.v1.Params: - type: object - properties: - enable_erc20: - type: boolean - format: boolean - description: parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. - enable_evm_hook: - type: boolean - format: boolean - description: >- - parameter to enable the EVM hook that converts an ERC20 token to a - Cosmos - - Coin by transferring the Tokens through a MsgEthereumTx to the - - ModuleAddress Ethereum address. - title: Params defines the erc20 module params - canto.erc20.v1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - enable_erc20: - type: boolean - format: boolean - description: >- - parameter to enable the conversion of Cosmos coins <--> ERC20 - tokens. - enable_evm_hook: - type: boolean - format: boolean - description: >- - parameter to enable the EVM hook that converts an ERC20 token to a - Cosmos - - Coin by transferring the Tokens through a MsgEthereumTx to the - - ModuleAddress Ethereum address. - title: Params defines the erc20 module params - description: |- - QueryParamsResponse is the response type for the Query/Params RPC - method. - canto.erc20.v1.QueryTokenPairResponse: - type: object - properties: - token_pair: - type: object - properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: - type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - format: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. - - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - description: |- - QueryTokenPairResponse is the response type for the Query/TokenPair RPC - method. - canto.erc20.v1.QueryTokenPairsResponse: - type: object - properties: - token_pairs: - type: array - items: - type: object - properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: - type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - format: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. - - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC - method. - canto.erc20.v1.TokenPair: - type: object - properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: - type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - format: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. - - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - canto.inflation.v1.ExponentialCalculation: - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - title: >- - ExponentialCalculation holds factors to calculate exponential inflation on - - each period. Calculation reference: - - periodProvision = exponentialDecay * bondingIncentive - - f(x) = (a * (1 - r) ^ x + c) * (1 + max_variance - - bondedRatio * - - (max_variance / bonding_target)) - canto.inflation.v1.InflationDistribution: - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted minted_denom that - is - - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted minted_denom - that - - is - - // to be allocated to the incentives module address - - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - - community_pool defines the proportion of the minted minted_denom that - is to - - be allocated to the community pool - title: >- - InflationDistribution defines the distribution in which inflation is - - allocated through minting on each epoch (staking, incentives, community). - It - - excludes the team vesting distribution, as this is minted once at genesis. - - The initial InflationDistribution can be calculated from the Evmos Token - - Model like this: - - mintDistribution1 = distribution1 / (1 - teamVestingDistribution) - - 0.5333333 = 40% / (1 - 25%) - canto.inflation.v1.Params: - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - exponential_calculation: - title: variables to calculate exponential inflation - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - inflation_distribution: - title: inflation distribution of the minted denom - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted minted_denom - that is - - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted - minted_denom that - - is - - // to be allocated to the incentives module address - - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - - community_pool defines the proportion of the minted minted_denom - that is to - - be allocated to the community pool - enable_inflation: - type: boolean - format: boolean - title: parameter to enable inflation and halt increasing the skipped_epochs - description: Params holds parameters for the inflation module. - canto.inflation.v1.QueryCirculatingSupplyResponse: - type: object - properties: - circulating_supply: - title: total amount of coins in circulation - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - QueryCirculatingSupplyResponse is the response type for the - Query/CirculatingSupply RPC method. - canto.inflation.v1.QueryEpochMintProvisionResponse: - type: object - properties: - epoch_mint_provision: - description: epoch_mint_provision is the current minting per epoch provision value. - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - QueryEpochMintProvisionResponse is the response type for the - Query/EpochMintProvision RPC method. - canto.inflation.v1.QueryInflationRateResponse: - type: object - properties: - inflation_rate: - type: string - title: rate by which the total supply increases within one period - description: >- - QueryInflationRateResponse is the response type for the - Query/InflationRate - - RPC method. - canto.inflation.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - exponential_calculation: - title: variables to calculate exponential inflation - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - inflation_distribution: - title: inflation distribution of the minted denom - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted - minted_denom that is - - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted - minted_denom that - - is - - // to be allocated to the incentives module address - - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - - community_pool defines the proportion of the minted - minted_denom that is to - - be allocated to the community pool - enable_inflation: - type: boolean - format: boolean - title: >- - parameter to enable inflation and halt increasing the - skipped_epochs - description: QueryParamsResponse is the response type for the Query/Params RPC method. - canto.inflation.v1.QueryPeriodResponse: - type: object - properties: - period: - type: string - format: uint64 - description: period is the current minting per epoch provision value. - description: QueryPeriodResponse is the response type for the Query/Period RPC method. - canto.inflation.v1.QuerySkippedEpochsResponse: - type: object - properties: - skipped_epochs: - type: string - format: uint64 - description: number of epochs that the inflation module has been disabled. - description: >- - QuerySkippedEpochsResponse is the response type for the - Query/SkippedEpochs - - RPC method. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - ethermint.evm.v1.ChainConfig: - type: object - properties: - homestead_block: - type: string - title: 'Homestead switch block (nil no fork, 0 = already homestead)' - dao_fork_block: - type: string - title: TheDAO hard-fork switch block (nil no fork) - dao_fork_support: - type: boolean - format: boolean - title: Whether the nodes supports or opposes the DAO hard-fork - eip150_block: - type: string - title: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no - fork) - eip150_hash: - type: string - title: >- - EIP150 HF hash (needed for header only clients as only gas pricing - changed) - eip155_block: - type: string - title: EIP155Block HF block - eip158_block: - type: string - title: EIP158 HF block - byzantium_block: - type: string - title: 'Byzantium switch block (nil no fork, 0 = already on byzantium)' - constantinople_block: - type: string - title: 'Constantinople switch block (nil no fork, 0 = already activated)' - petersburg_block: - type: string - title: Petersburg switch block (nil same as Constantinople) - istanbul_block: - type: string - title: 'Istanbul switch block (nil no fork, 0 = already on istanbul)' - muir_glacier_block: - type: string - title: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated) - berlin_block: - type: string - title: 'Berlin switch block (nil = no fork, 0 = already on berlin)' - london_block: - type: string - title: 'London switch block (nil = no fork, 0 = already on london)' - arrow_glacier_block: - type: string - title: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated) - merge_fork_block: - type: string - title: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge - proceedings) - description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int - values - - instead of *big.Int. - ethermint.evm.v1.EstimateGasResponse: - type: object - properties: - gas: - type: string - format: uint64 - title: the estimated gas - title: EstimateGasResponse defines EstimateGas response - ethermint.evm.v1.Log: - type: object - properties: - address: - type: string - title: address of the contract that generated the event - topics: - type: array - items: - type: string - description: list of topics provided by the contract. - data: - type: string - format: byte - title: 'supplied by the contract, usually ABI-encoded' - block_number: - type: string - format: uint64 - title: block in which the transaction was included - tx_hash: - type: string - title: hash of the transaction - tx_index: - type: string - format: uint64 - title: index of the transaction in the block - block_hash: - type: string - title: hash of the block in which the transaction was included - index: - type: string - format: uint64 - title: index of the log in the block - removed: - type: boolean - format: boolean - description: >- - The Removed field is true if this log was reverted due to a chain - - reorganisation. You must pay attention to this field if you receive - logs - - through a filter query. - description: >- - Log represents an protobuf compatible Ethereum Log that defines a contract - - log event. These events are generated by the LOG opcode and stored/indexed - by - - the node. - ethermint.evm.v1.MsgEthereumTx: - type: object - properties: - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: inner transaction data - size: - type: number - format: double - title: encoded storage size of the transaction - hash: - type: string - title: transaction hash in hex format - from: - type: string - title: |- - ethereum signer address in hex format. This address value is checked - against the address derived from the signature (V, R, S) using the - secp256k1 elliptic curve - description: MsgEthereumTx encapsulates an Ethereum transaction as an SDK message. - ethermint.evm.v1.MsgEthereumTxResponse: - type: object - properties: - hash: - type: string - title: |- - ethereum transaction hash in hex format. This hash differs from the - Tendermint sha256 hash of the transaction bytes. See - https://github.com/tendermint/tendermint/issues/6539 for reference - logs: - type: array - items: - type: object - properties: - address: - type: string - title: address of the contract that generated the event - topics: - type: array - items: - type: string - description: list of topics provided by the contract. - data: - type: string - format: byte - title: 'supplied by the contract, usually ABI-encoded' - block_number: - type: string - format: uint64 - title: block in which the transaction was included - tx_hash: - type: string - title: hash of the transaction - tx_index: - type: string - format: uint64 - title: index of the transaction in the block - block_hash: - type: string - title: hash of the block in which the transaction was included - index: - type: string - format: uint64 - title: index of the log in the block - removed: - type: boolean - format: boolean - description: >- - The Removed field is true if this log was reverted due to a - chain - - reorganisation. You must pay attention to this field if you - receive logs - - through a filter query. - description: >- - Log represents an protobuf compatible Ethereum Log that defines a - contract - - log event. These events are generated by the LOG opcode and - stored/indexed by - - the node. - description: |- - logs contains the transaction hash and the proto-compatible ethereum - logs. - ret: - type: string - format: byte - title: |- - returned data from evm function (result or data supplied with revert - opcode) - vm_error: - type: string - title: vm error is the error returned by vm execution - gas_used: - type: string - format: uint64 - title: gas consumed by the transaction - description: MsgEthereumTxResponse defines the Msg/EthereumTx response type. - ethermint.evm.v1.Params: - type: object - properties: - evm_denom: - type: string - description: |- - evm denom represents the token denomination used to run the EVM state - transitions. - enable_create: - type: boolean - format: boolean - title: >- - enable create toggles state transitions that use the vm.Create - function - enable_call: - type: boolean - format: boolean - title: enable call toggles state transitions that use the vm.Call function - extra_eips: - type: array - items: - type: string - format: int64 - title: extra eips defines the additional EIPs for the vm.Config - chain_config: - title: chain config defines the EVM chain configuration parameters - type: object - properties: - homestead_block: - type: string - title: 'Homestead switch block (nil no fork, 0 = already homestead)' - dao_fork_block: - type: string - title: TheDAO hard-fork switch block (nil no fork) - dao_fork_support: - type: boolean - format: boolean - title: Whether the nodes supports or opposes the DAO hard-fork - eip150_block: - type: string - title: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil - no fork) - eip150_hash: - type: string - title: >- - EIP150 HF hash (needed for header only clients as only gas pricing - changed) - eip155_block: - type: string - title: EIP155Block HF block - eip158_block: - type: string - title: EIP158 HF block - byzantium_block: - type: string - title: 'Byzantium switch block (nil no fork, 0 = already on byzantium)' - constantinople_block: - type: string - title: 'Constantinople switch block (nil no fork, 0 = already activated)' - petersburg_block: - type: string - title: Petersburg switch block (nil same as Constantinople) - istanbul_block: - type: string - title: 'Istanbul switch block (nil no fork, 0 = already on istanbul)' - muir_glacier_block: - type: string - title: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated) - berlin_block: - type: string - title: 'Berlin switch block (nil = no fork, 0 = already on berlin)' - london_block: - type: string - title: 'London switch block (nil = no fork, 0 = already on london)' - arrow_glacier_block: - type: string - title: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated) - merge_fork_block: - type: string - title: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in - merge proceedings) - description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int - values - - instead of *big.Int. - allow_unprotected_txs: - type: boolean - format: boolean - description: >- - Allow unprotected transactions defines if replay-protected (i.e non - EIP155 - - signed) transactions can be executed on the state machine. - title: Params defines the EVM module parameters - ethermint.evm.v1.QueryAccountResponse: - type: object - properties: - balance: - type: string - description: balance is the balance of the EVM denomination. - code_hash: - type: string - description: code hash is the hex-formatted code bytes from the EOA. - nonce: - type: string - format: uint64 - description: nonce is the account's sequence number. - description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - ethermint.evm.v1.QueryBalanceResponse: - type: object - properties: - balance: - type: string - description: balance is the balance of the EVM denomination. - description: >- - QueryBalanceResponse is the response type for the Query/Balance RPC - method. - ethermint.evm.v1.QueryBaseFeeResponse: - type: object - properties: - base_fee: - type: string - description: BaseFeeResponse returns the EIP1559 base fee. - ethermint.evm.v1.QueryCodeResponse: - type: object - properties: - code: - type: string - format: byte - description: code represents the code bytes from an ethereum address. - description: |- - QueryCodeResponse is the response type for the Query/Code RPC - method. - ethermint.evm.v1.QueryCosmosAccountResponse: - type: object - properties: - cosmos_address: - type: string - description: cosmos_address is the cosmos address of the account. - sequence: - type: string - format: uint64 - description: sequence is the account's sequence number. - account_number: - type: string - format: uint64 - title: account_number is the account numbert - description: >- - QueryCosmosAccountResponse is the response type for the - Query/CosmosAccount - - RPC method. - ethermint.evm.v1.QueryParamsResponse: - type: object - properties: - params: - description: params define the evm module parameters. - type: object - properties: - evm_denom: - type: string - description: >- - evm denom represents the token denomination used to run the EVM - state - - transitions. - enable_create: - type: boolean - format: boolean - title: >- - enable create toggles state transitions that use the vm.Create - function - enable_call: - type: boolean - format: boolean - title: >- - enable call toggles state transitions that use the vm.Call - function - extra_eips: - type: array - items: - type: string - format: int64 - title: extra eips defines the additional EIPs for the vm.Config - chain_config: - title: chain config defines the EVM chain configuration parameters - type: object - properties: - homestead_block: - type: string - title: 'Homestead switch block (nil no fork, 0 = already homestead)' - dao_fork_block: - type: string - title: TheDAO hard-fork switch block (nil no fork) - dao_fork_support: - type: boolean - format: boolean - title: Whether the nodes supports or opposes the DAO hard-fork - eip150_block: - type: string - title: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block - (nil no fork) - eip150_hash: - type: string - title: >- - EIP150 HF hash (needed for header only clients as only gas - pricing changed) - eip155_block: - type: string - title: EIP155Block HF block - eip158_block: - type: string - title: EIP158 HF block - byzantium_block: - type: string - title: 'Byzantium switch block (nil no fork, 0 = already on byzantium)' - constantinople_block: - type: string - title: >- - Constantinople switch block (nil no fork, 0 = already - activated) - petersburg_block: - type: string - title: Petersburg switch block (nil same as Constantinople) - istanbul_block: - type: string - title: 'Istanbul switch block (nil no fork, 0 = already on istanbul)' - muir_glacier_block: - type: string - title: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated) - berlin_block: - type: string - title: 'Berlin switch block (nil = no fork, 0 = already on berlin)' - london_block: - type: string - title: 'London switch block (nil = no fork, 0 = already on london)' - arrow_glacier_block: - type: string - title: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated) - merge_fork_block: - type: string - title: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already - in merge proceedings) - description: >- - ChainConfig defines the Ethereum ChainConfig parameters using - *sdk.Int values - - instead of *big.Int. - allow_unprotected_txs: - type: boolean - format: boolean - description: >- - Allow unprotected transactions defines if replay-protected (i.e - non EIP155 - - signed) transactions can be executed on the state machine. - title: Params defines the EVM module parameters - description: >- - QueryParamsResponse defines the response type for querying x/evm - parameters. - ethermint.evm.v1.QueryStorageResponse: - type: object - properties: - value: - type: string - description: >- - key defines the storage state value hash associated with the given - key. - description: |- - QueryStorageResponse is the response type for the Query/Storage RPC - method. - ethermint.evm.v1.QueryTraceBlockResponse: - type: object - properties: - data: - type: string - format: byte - title: QueryTraceBlockResponse defines TraceBlock response - ethermint.evm.v1.QueryTraceTxResponse: - type: object - properties: - data: - type: string - format: byte - title: response serialized in bytes - title: QueryTraceTxResponse defines TraceTx response - ethermint.evm.v1.QueryValidatorAccountResponse: - type: object - properties: - account_address: - type: string - description: account_address is the cosmos address of the account in bech32 format. - sequence: - type: string - format: uint64 - description: sequence is the account's sequence number. - account_number: - type: string - format: uint64 - title: account_number is the account number - description: |- - QueryValidatorAccountResponse is the response type for the - Query/ValidatorAccount RPC method. - ethermint.evm.v1.TraceConfig: - type: object - properties: - tracer: - type: string - title: custom javascript tracer - timeout: - type: string - title: >- - overrides the default timeout of 5 seconds for JavaScript-based - tracing - - calls - reexec: - type: string - format: uint64 - title: number of blocks the tracer is willing to go back - disable_stack: - type: boolean - format: boolean - title: disable stack capture - disable_storage: - type: boolean - format: boolean - title: disable storage capture - debug: - type: boolean - format: boolean - title: print output during capture end - limit: - type: integer - format: int32 - title: 'maximum length of output, but zero means unlimited' - overrides: - title: >- - Chain overrides, can be used to execute a trace using future fork - rules - type: object - properties: - homestead_block: - type: string - title: 'Homestead switch block (nil no fork, 0 = already homestead)' - dao_fork_block: - type: string - title: TheDAO hard-fork switch block (nil no fork) - dao_fork_support: - type: boolean - format: boolean - title: Whether the nodes supports or opposes the DAO hard-fork - eip150_block: - type: string - title: >- - EIP150 implements the Gas price changes - - (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil - no fork) - eip150_hash: - type: string - title: >- - EIP150 HF hash (needed for header only clients as only gas pricing - changed) - eip155_block: - type: string - title: EIP155Block HF block - eip158_block: - type: string - title: EIP158 HF block - byzantium_block: - type: string - title: 'Byzantium switch block (nil no fork, 0 = already on byzantium)' - constantinople_block: - type: string - title: 'Constantinople switch block (nil no fork, 0 = already activated)' - petersburg_block: - type: string - title: Petersburg switch block (nil same as Constantinople) - istanbul_block: - type: string - title: 'Istanbul switch block (nil no fork, 0 = already on istanbul)' - muir_glacier_block: - type: string - title: >- - Eip-2384 (bomb delay) switch block (nil no fork, 0 = already - activated) - berlin_block: - type: string - title: 'Berlin switch block (nil = no fork, 0 = already on berlin)' - london_block: - type: string - title: 'London switch block (nil = no fork, 0 = already on london)' - arrow_glacier_block: - type: string - title: >- - Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already - activated) - merge_fork_block: - type: string - title: >- - EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in - merge proceedings) - description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int - values - - instead of *big.Int. - enable_memory: - type: boolean - format: boolean - title: enable memory capture - enable_return_data: - type: boolean - format: boolean - title: enable return data capture - description: TraceConfig holds extra parameters to trace functions. - ethermint.feemarket.v1.Params: - type: object - properties: - no_base_fee: - type: boolean - format: boolean - title: >- - no base fee forces the EIP-1559 base fee to 0 (needed for 0 price - calls) - base_fee_change_denominator: - type: integer - format: int64 - description: |- - base fee change denominator bounds the amount the base fee can change - between blocks. - elasticity_multiplier: - type: integer - format: int64 - description: >- - elasticity multiplier bounds the maximum gas limit an EIP-1559 block - may - - have. - enable_height: - type: string - format: int64 - description: height at which the base fee calculation is enabled. - base_fee: - type: string - description: base fee for EIP-1559 blocks. - min_gas_price: - type: string - title: >- - min_gas_price defines the minimum gas price value for cosmos and eth - transactions - min_gas_multiplier: - type: string - title: |- - min gas denominator bounds the minimum gasUsed to be charged - to senders based on GasLimit - title: Params defines the EVM module parameters - ethermint.feemarket.v1.QueryBaseFeeResponse: - type: object - properties: - base_fee: - type: string - description: BaseFeeResponse returns the EIP1559 base fee. - ethermint.feemarket.v1.QueryBlockGasResponse: - type: object - properties: - gas: - type: string - format: int64 - description: QueryBlockGasResponse returns block gas used for a given height. - ethermint.feemarket.v1.QueryParamsResponse: - type: object - properties: - params: - description: params define the evm module parameters. - type: object - properties: - no_base_fee: - type: boolean - format: boolean - title: >- - no base fee forces the EIP-1559 base fee to 0 (needed for 0 price - calls) - base_fee_change_denominator: - type: integer - format: int64 - description: >- - base fee change denominator bounds the amount the base fee can - change - - between blocks. - elasticity_multiplier: - type: integer - format: int64 - description: >- - elasticity multiplier bounds the maximum gas limit an EIP-1559 - block may - - have. - enable_height: - type: string - format: int64 - description: height at which the base fee calculation is enabled. - base_fee: - type: string - description: base fee for EIP-1559 blocks. - min_gas_price: - type: string - title: >- - min_gas_price defines the minimum gas price value for cosmos and - eth transactions - min_gas_multiplier: - type: string - title: |- - min gas denominator bounds the minimum gasUsed to be charged - to senders based on GasLimit - title: Params defines the EVM module parameters - description: >- - QueryParamsResponse defines the response type for querying x/evm - parameters. - canto.onboarding.v1.Params: - type: object - properties: - enable_onboarding: - type: boolean - format: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module - canto.onboarding.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - enable_onboarding: - type: boolean - format: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module - description: QueryParamsResponse is the response type for the Query/Params RPC method. - canto.coinswap.v1.Params: - type: object - properties: - fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - tax_rate: - type: string - max_standard_coin_per_pool: - type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: Params defines token module's parameters - canto.coinswap.v1.PoolInfo: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - canto.coinswap.v1.QueryLiquidityPoolResponse: - type: object - properties: - pool: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - title: >- - QueryLiquidityPoolResponse is response type for the Query/LiquidityPool - RPC - - method - canto.coinswap.v1.QueryLiquidityPoolsResponse: - type: object - properties: - pools: - type: array - items: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryLiquidityPoolsResponse is response type for the Query/LiquidityPools - RPC - - method - canto.coinswap.v1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - tax_rate: - type: string - max_standard_coin_per_pool: - type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: Params defines token module's parameters - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.base.v1beta1.Coin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - ibc.applications.transfer.v1.DenomTrace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for tracing - the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens and - the - - source tracing information path. - ibc.applications.transfer.v1.Params: - type: object - properties: - send_enabled: - type: boolean - format: boolean - description: >- - send_enabled enables or disables all cross-chain token transfers from - this - - chain. - receive_enabled: - type: boolean - format: boolean - description: >- - receive_enabled enables or disables all cross-chain token transfers to - this - - chain. - description: >- - Params defines the set of IBC transfer parameters. - - NOTE: To prevent a single token from being transferred, set the - - TransfersEnabled parameter to true and then set the bank module's - SendEnabled - - parameter for the denomination to false. - ibc.applications.transfer.v1.QueryDenomHashResponse: - type: object - properties: - hash: - type: string - description: hash (in hex format) of the denomination trace information. - description: |- - QueryDenomHashResponse is the response type for the Query/DenomHash RPC - method. - ibc.applications.transfer.v1.QueryDenomTraceResponse: - type: object - properties: - denom_trace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for - tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens - and the - - source tracing information path. - description: |- - QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC - method. - ibc.applications.transfer.v1.QueryDenomTracesResponse: - type: object - properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for - tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens - and the - - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the Query/DenomTraces - RPC - - method. - ibc.applications.transfer.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - format: boolean - description: >- - send_enabled enables or disables all cross-chain token transfers - from this - - chain. - receive_enabled: - type: boolean - format: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - - chain. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - ibc.core.client.v1.ConsensusStateWithHeight: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an additional - height - - field. - ibc.core.client.v1.Height: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: |- - Normally the RevisionHeight is incremented at each height while keeping - RevisionNumber the same. However some consensus algorithms may choose to - reset the height in certain conditions e.g. hard forks, state-machine - breaking changes In these cases, the RevisionNumber is incremented so that - height continues to be monitonically increasing even as the RevisionHeight - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes of updating - and - - freezing clients - ibc.core.client.v1.IdentifiedClientState: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - ibc.core.client.v1.Params: - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: allowed_clients defines the list of allowed client state types. - description: Params defines the set of IBC light client parameters. - ibc.core.client.v1.QueryClientParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: allowed_clients defines the list of allowed client state types. - description: >- - QueryClientParamsResponse is the response type for the Query/ClientParams - RPC - - method. - ibc.core.client.v1.QueryClientStateResponse: - type: object - properties: - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryClientStateResponse is the response type for the Query/ClientState - RPC - - method. Besides the client state, it includes a proof and the height from - - which the proof was retrieved. - ibc.core.client.v1.QueryClientStatesResponse: - type: object - properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an additional - client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the Query/ClientStates - RPC - - method. - ibc.core.client.v1.QueryClientStatusResponse: - type: object - properties: - status: - type: string - description: >- - QueryClientStatusResponse is the response type for the Query/ClientStatus - RPC - - method. It returns the current status of the IBC client. - ibc.core.client.v1.QueryConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - consensus state associated with the client identifier at the given - height - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - - RPC method - ibc.core.client.v1.QueryConsensusStatesResponse: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height - - field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - ibc.core.client.v1.QueryUpgradedClientStateResponse: - type: object - properties: - upgraded_client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - description: |- - QueryUpgradedClientStateResponse is the response type for the - Query/UpgradedClientState RPC method. - ibc.core.client.v1.QueryUpgradedConsensusStateResponse: - type: object - properties: - upgraded_consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: Consensus state associated with the request identifier - description: |- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState RPC method. - ibc.core.commitment.v1.MerklePrefix: - type: object - properties: - key_prefix: - type: string - format: byte - title: |- - MerklePrefix is merkle path prefixed to the key. - The constructed key from the Path and the key will be append(Path.KeyPath, - append(Path.KeyPrefix, key...)) - ibc.core.connection.v1.ConnectionEnd: - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings or protocols - for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can be used for - - packet-verification NOTE: delay period logic is only implemented by - some - - clients. - description: |- - ConnectionEnd defines a stateful object on a chain connected to another - separate one. - NOTE: there must only be 2 defined ConnectionEnds to establish - a connection between two chains. - ibc.core.connection.v1.Counterparty: - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - description: >- - Counterparty defines the counterparty chain associated with a connection - end. - ibc.core.connection.v1.IdentifiedConnection: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or protocols - for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - ibc.core.connection.v1.QueryClientConnectionsResponse: - type: object - properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - ibc.core.connection.v1.QueryConnectionClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - ibc.core.connection.v1.QueryConnectionConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - ibc.core.connection.v1.QueryConnectionResponse: - type: object - properties: - connection: - title: connection associated with the request identifier - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings or - protocols for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can be used - for - - packet-verification NOTE: delay period logic is only implemented - by some - - clients. - description: >- - ConnectionEnd defines a stateful object on a chain connected to - another - - separate one. - - NOTE: there must only be 2 defined ConnectionEnds to establish - - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionResponse is the response type for the Query/Connection RPC - - method. Besides the connection end, it includes a proof and the height - from - - which the proof was retrieved. - ibc.core.connection.v1.QueryConnectionsResponse: - type: object - properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the - IBC verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or - protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionsResponse is the response type for the Query/Connections - RPC - - method. - ibc.core.connection.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a connection is in one of the following states: - INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A connection end has just started the opening handshake. - - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty - chain. - - STATE_OPEN: A connection end has completed the handshake. - ibc.core.connection.v1.Version: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: |- - Version defines the versioning scheme used to negotiate the IBC verison in - the connection handshake. - ibc.core.channel.v1.Channel: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - description: |- - Channel defines pipeline for exactly-once packet delivery between specific - modules on separate blockchains, which has at least one end capable of - sending packets and one end capable of receiving packets. - ibc.core.channel.v1.Counterparty: - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - title: Counterparty defines a channel end counterparty - ibc.core.channel.v1.IdentifiedChannel: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - ibc.core.channel.v1.Order: - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - title: Order defines if a channel is ORDERED or UNORDERED - ibc.core.channel.v1.PacketState: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: |- - PacketState defines the generic type necessary to retrieve and store - packet commitments, acknowledgements, and receipts. - Caller is responsible for knowing the context necessary to interpret this - state as a commitment, acknowledgement, or a receipt. - ibc.core.channel.v1.QueryChannelClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelResponse: - type: object - properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets sent - on - - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - description: >- - Channel defines pipeline for exactly-once packet delivery between - specific - - modules on separate blockchains, which has at least one end capable of - - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelResponse is the response type for the Query/Channel RPC - method. - - Besides the Channel end, it includes a proof and the height from which the - - proof was retrieved. - ibc.core.channel.v1.QueryChannelsResponse: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels RPC - method. - ibc.core.channel.v1.QueryConnectionChannelsResponse: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method - ibc.core.channel.v1.QueryNextSequenceReceiveResponse: - type: object - properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method - ibc.core.channel.v1.QueryPacketAcknowledgementResponse: - type: object - properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgementResponse defines the client query response for a - packet which also includes a proof and the height from which the - proof was retrieved - ibc.core.channel.v1.QueryPacketAcknowledgementsResponse: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to interpret - this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method - ibc.core.channel.v1.QueryPacketCommitmentResponse: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response for a - packet - - which also includes a proof and the height from which the proof was - - retrieved - ibc.core.channel.v1.QueryPacketCommitmentsResponse: - type: object - properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to interpret - this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - ibc.core.channel.v1.QueryPacketReceiptResponse: - type: object - properties: - received: - type: boolean - format: boolean - title: success flag for if receipt exists - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a packet - - receipt which also includes a proof, and the height from which the proof - was - - retrieved - ibc.core.channel.v1.QueryUnreceivedAcksResponse: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method - ibc.core.channel.v1.QueryUnreceivedPacketsResponse: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method - ibc.core.channel.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - cosmos.auth.v1beta1.Params: - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: Params defines the parameters for the auth module. - cosmos.auth.v1beta1.QueryAccountResponse: - type: object - properties: - account: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - cosmos.auth.v1beta1.QueryAccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAccountsResponse is the response type for the Query/Accounts RPC - method. - - - Since: cosmos-sdk 0.43 - cosmos.auth.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.authz.v1beta1.Grant: - type: object - properties: - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - cosmos.authz.v1beta1.GrantAuthorization: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the grantee - and granter. - - It is used in genesis.proto and query.proto - cosmos.authz.v1beta1.QueryGranteeGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - cosmos.authz.v1beta1.QueryGranterGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: 'Since: cosmos-sdk 0.45.2' - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - cosmos.authz.v1beta1.QueryGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: authorizations is a list of grants granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the Query/Authorizations RPC - method. - cosmos.bank.v1beta1.DenomUnit: - type: object - properties: - denom: - type: string - description: denom represents the string name of the given denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given DenomUnit's denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' - with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - cosmos.bank.v1beta1.Metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit (e.g - uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given DenomUnit's - denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit of - 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with exponent - = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). This - can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - cosmos.bank.v1beta1.Params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - format: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is - - sendable). - default_send_enabled: - type: boolean - format: boolean - description: Params defines the parameters for the bank module. - cosmos.bank.v1beta1.QueryAllBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the Query/AllBalances - RPC - - method. - cosmos.bank.v1beta1.QueryBalanceResponse: - type: object - properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance RPC - method. - cosmos.bank.v1beta1.QueryDenomMetadataResponse: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit - of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). - This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC - - method. - cosmos.bank.v1beta1.QueryDenomsMetadataResponse: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 1^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the registered - tokens. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC - - method. - cosmos.bank.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - format: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is - - sendable). - default_send_enabled: - type: boolean - format: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - cosmos.bank.v1beta1.QuerySpendableBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QuerySpendableBalancesResponse defines the gRPC response structure for - querying - - an account's spendable balances. - cosmos.bank.v1beta1.QuerySupplyOfResponse: - type: object - properties: - amount: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC - method. - cosmos.bank.v1beta1.QueryTotalSupplyResponse: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the Query/TotalSupply - RPC - - method - cosmos.bank.v1beta1.SendEnabled: - type: object - properties: - denom: - type: string - enabled: - type: boolean - format: boolean - description: |- - SendEnabled maps coin denom to a send_enabled status (whether a denom is - sendable). - cosmos.distribution.v1beta1.DelegationDelegatorReward: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - cosmos.distribution.v1beta1.Params: - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - format: boolean - description: Params defines the set of params for the distribution module. - cosmos.distribution.v1beta1.QueryCommunityPoolResponse: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool - - RPC method. - cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: string - description: validators defines the validators a delegator is delegating for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - cosmos.distribution.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - format: boolean - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) - rewards - - for a validator inexpensive to track, allows simple sanity checks. - description: |- - QueryValidatorOutstandingRewardsResponse is the response type for the - Query/ValidatorOutstandingRewards RPC method. - cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: - type: object - properties: - slashes: - type: array - items: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorAccumulatedCommission represents accumulated commission - for a validator kept as a running counter, can be withdrawn at any time. - cosmos.distribution.v1beta1.ValidatorOutstandingRewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards - for a validator inexpensive to track, allows simple sanity checks. - cosmos.distribution.v1beta1.ValidatorSlashEvent: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - cosmos.feegrant.v1beta1.Grant: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - title: Grant is stored in the KVStore to record a grant with full context - cosmos.feegrant.v1beta1.QueryAllowanceResponse: - type: object - properties: - allowance: - description: allowance is a allowance granted for grantee by granter. - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - title: Grant is stored in the KVStore to record a grant with full context - description: >- - QueryAllowanceResponse is the response type for the Query/Allowance RPC - method. - cosmos.feegrant.v1beta1.QueryAllowancesResponse: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic and filtered fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - title: Grant is stored in the KVStore to record a grant with full context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the Query/Allowances RPC - method. - cosmos.evidence.v1beta1.QueryAllEvidenceResponse: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the Query/AllEvidence - RPC - - method. - cosmos.evidence.v1beta1.QueryEvidenceResponse: - type: object - properties: - evidence: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence RPC - method. - cosmos.gov.v1beta1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1beta1.DepositParams: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1beta1.Proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1beta1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1beta1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1beta1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to an - active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1beta1.QueryParamsResponse: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1beta1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1beta1.QueryProposalsResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1beta1.QueryTallyResultResponse: - type: object - properties: - tally: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1beta1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1beta1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set - in queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1beta1.TallyParams: - type: object - properties: - quorum: - type: string - format: byte - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - format: byte - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1beta1.TallyResult: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1beta1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. In - all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1beta1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1beta1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1beta1.WeightedVoteOption: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - cosmos.slashing.v1beta1.Params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - cosmos.slashing.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - title: QueryParamsResponse is the response type for the Query/Params RPC method - cosmos.slashing.v1beta1.QuerySigningInfoResponse: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - format: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other - configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - title: val_signing_info is the signing info of requested val cons address - title: >- - QuerySigningInfoResponse is the response type for the Query/SigningInfo - RPC - - method - cosmos.slashing.v1beta1.QuerySigningInfosResponse: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - format: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other - configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the Query/SigningInfos - RPC - - method - cosmos.slashing.v1beta1.ValidatorSigningInfo: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in conjunction - with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - format: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other configured - misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - cosmos.staking.v1beta1.BondStatus: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - cosmos.staking.v1beta1.Commission: - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be used for - creating a validator. - type: object - properties: - rate: - type: string - description: 'rate is the commission rate charged to delegators, as a fraction.' - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can - ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - description: Commission defines commission parameters for a given validator. - cosmos.staking.v1beta1.CommissionRates: - type: object - properties: - rate: - type: string - description: 'rate is the commission rate charged to delegators, as a fraction.' - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can ever - charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the validator - commission, as a fraction. - description: >- - CommissionRates defines the initial commission rates to be used for - creating - - a validator. - cosmos.staking.v1beta1.Delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - cosmos.staking.v1beta1.DelegationResponse: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - DelegationResponse is equivalent to Delegation except that it contains a - balance in addition to shares which is more suitable for client responses. - cosmos.staking.v1beta1.Description: - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: - type: string - description: details define other optional details. - description: Description defines a validator description. - cosmos.staking.v1beta1.HistoricalInfo: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the - - blockchain, including all blockchain data structures and the rules - of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: >- - HistoricalInfo contains header and validator information for a given - block. - - It is stored as part of staking module's state, which persists the `n` - most - - recent HistoricalInfo - - (`n` is set by the staking module's `historical_entries` parameter). - cosmos.staking.v1beta1.Params: - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - description: Params defines the parameters for the staking module. - cosmos.staking.v1beta1.Pool: - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: |- - Pool is used for tracking bonded and not-bonded token supply of the bond - denomination. - cosmos.staking.v1beta1.QueryDelegationResponse: - type: object - properties: - delegation_response: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. It - is - - owned by one delegator, and is associated with the voting power of - one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it contains - a - - balance in addition to shares which is more suitable for client - responses. - description: >- - QueryDelegationResponse is response type for the Query/Delegation RPC - method. - cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is - - owned by one delegator, and is associated with the voting power - of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for client - responses. - description: delegation_responses defines all the delegations' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryUnbondingDelegatorDelegationsResponse is response type for the - Query/UnbondingDelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - cosmos.staking.v1beta1.QueryHistoricalInfoResponse: - type: object - properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the - - blockchain, including all blockchain data structures and the - rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which - this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to - be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - description: >- - Validator defines a validator, together with the total amount of - the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided by - the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo - RPC - - method. - cosmos.staking.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.staking.v1beta1.QueryPoolResponse: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - cosmos.staking.v1beta1.QueryRedelegationsResponse: - type: object - properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more - suitable for client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries - - contain a balance in addition to shares which is more suitable for - client - - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the Query/Redelegations - RPC - - method. - cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: - type: object - properties: - unbond: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - description: |- - QueryDelegationResponse is response type for the Query/UnbondingDelegation - RPC method. - cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is - - owned by one delegator, and is associated with the voting power - of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for client - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - cosmos.staking.v1beta1.QueryValidatorResponse: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - title: QueryValidatorResponse is response type for the Query/Validator RPC method - cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorUnbondingDelegationsResponse is response type for the - Query/ValidatorUnbondingDelegations RPC method. - cosmos.staking.v1beta1.QueryValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators RPC - method - cosmos.staking.v1beta1.Redelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source operator - address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's redelegating - bonds - - from a particular source validator to a particular destination validator. - cosmos.staking.v1beta1.RedelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height defines the height which the redelegation took place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: - type: string - description: initial_balance defines the initial balance when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created by - redelegation. - description: RedelegationEntry defines a redelegation object with relevant metadata. - cosmos.staking.v1beta1.RedelegationEntryResponse: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry except that - it - - contains a balance in addition to shares which is more suitable for client - - responses. - cosmos.staking.v1beta1.RedelegationResponse: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more suitable for - client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries - - contain a balance in addition to shares which is more suitable for client - - responses. - cosmos.staking.v1beta1.UnbondingDelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - cosmos.staking.v1beta1.UnbondingDelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to receive at - completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - cosmos.staking.v1beta1.Validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; bech - encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - format: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the validator - to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be used - for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator - can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing results - in - - a decrease in the exchange rate, allowing correct calculation of future - - undelegations without iterating over delegators. When coins are delegated - to - - this validator, the validator is credited with a delegation whose number - of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - tendermint.types.BlockID: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - tendermint.types.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - - blockchain, including all blockchain data structures and the rules of - the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.version.Consensus: - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: |- - Consensus captures the consensus rules for processing a block in the - blockchain, including all blockchain data structures and the rules of the - application's state transition machine. - cosmos.base.abci.v1beta1.ABCIMessageLog: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and value - are - - strings instead of raw bytes. - description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - description: |- - Events contains a slice of Event objects that were emitted during some - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI message - log. - cosmos.base.abci.v1beta1.Attribute: - type: object - properties: - key: - type: string - value: - type: string - description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. - cosmos.base.abci.v1beta1.GasInfo: - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: GasWanted is the maximum units of work we allow this tx to perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - description: GasInfo defines tx execution gas context. - cosmos.base.abci.v1beta1.Result: - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler execution. It MUST - be - - length prefixed in order to separate data from multiple message - executions. - log: - type: string - description: Log contains the log information from message or handler execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted during - message - - or handler execution. - description: Result is the union of ResponseFormat and ResponseCheckTx. - cosmos.base.abci.v1beta1.StringEvent: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. - description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - cosmos.base.abci.v1beta1.TxResponse: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and - value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted median - of - - the timestamps of the valid votes in the block.LastCommit. For height - == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages and - those - - emitted from the ante handler. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and metadata. - The - - tags are stringified and the log is JSON decoded. - cosmos.crypto.multisig.v1beta1.CompactBitArray: - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: - type: string - format: byte - description: |- - CompactBitArray is an implementation of a space efficient bit array. - This is used to ensure that the encoded data takes up a minimal amount of - space after proto encoding. - This is not thread safe, and is not intended for concurrent usage. - cosmos.tx.signing.v1beta1.SignMode: - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: |- - SignMode represents a signing mode with its own security guarantees. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - but is not implemented on the SDK by default. To enable EIP-191, you need - to pass a custom `TxConfig` that has an implementation of - `SignModeHandler` for EIP-191. The SDK may decide to fully support - EIP-191 in the future. - - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.AuthInfo: - type: object - properties: - signer_infos: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' - description: >- - signer_infos defines the signing modes for the required signers. The - number - - and order of elements must match the required signers from TxBody's - - messages. The first element is the primary signer and the one which - pays - - the fee. - fee: - description: >- - Fee is the fee and gas limit for the transaction. The first signer is - the - - primary signer and the one which pays the fee. The fee can be - calculated - - based on the cost of evaluating the body and doing signature - verification - - of the signers. This can be estimated via simulation. - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If - set, the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required - signers for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an - appropriate fee grant does not exist or the chain does - - not support fee grants, this will fail - description: |- - AuthInfo describes the fee and signer modes that are used to sign a - transaction. - cosmos.tx.v1beta1.BroadcastMode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC - method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - cosmos.tx.v1beta1.BroadcastTxRequest: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast - RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - description: |- - BroadcastTxRequest is the request type for the Service.BroadcastTxRequest - RPC method. - cosmos.tx.v1beta1.BroadcastTxResponse: - type: object - properties: - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages - and those - - emitted from the ante handler. Whereas Logs contains the events, - with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - cosmos.tx.v1beta1.Fee: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If set, - the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required signers - for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an appropriate - fee grant does not exist or the chain does - - not support fee grants, this will fail - description: >- - Fee includes the amount of coins paid in fees and the maximum - - gas to be used by the transaction. The ratio yields an effective - "gasprice", - - which must be above some miminum to be accepted into the mempool. - cosmos.tx.v1beta1.GetBlockWithTxsResponse: - type: object - properties: - txs: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs are the transactions in the block. - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the - - blockchain, including all blockchain data structures and the - rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - - blockchain, including all blockchain - data structures and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting - - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of - - validators. - pagination: - description: pagination defines a pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetBlockWithTxsResponse is the response type for the - Service.GetBlockWithTxs method. - - - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.GetTxResponse: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: tx is the queried transaction. - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages - and those - - emitted from the ante handler. Whereas Logs contains the events, - with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: GetTxResponse is the response type for the Service.GetTx method. - cosmos.tx.v1beta1.GetTxsEventResponse: - type: object - properties: - txs: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs is the list of queried transactions. - tx_responses: - type: array - items: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the - key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all - the attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx - ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated - with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante handler. Whereas Logs contains the events, - with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: tx_responses is the list of queried TxResponses. - pagination: - description: pagination defines a pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - GetTxsEventResponse is the response type for the Service.TxsByEvents - RPC method. - cosmos.tx.v1beta1.ModeInfo: - type: object - properties: - single: - title: single represents a single signer - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security - guarantees. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation - - from SIGN_MODE_DIRECT - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum - variant, - - but is not implemented on the SDK by default. To enable EIP-191, - you need - - to pass a custom `TxConfig` that has an implementation of - - `SignModeHandler` for EIP-191. The SDK may decide to fully support - - EIP-191 in the future. - - - Since: cosmos-sdk 0.45.2 - multi: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' - title: multi represents a nested multisig signer - description: ModeInfo describes the signing mode of a single or nested multisig signer. - cosmos.tx.v1beta1.ModeInfo.Multi: - type: object - properties: - bitarray: - title: bitarray specifies which keys within the multisig are signing - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: - type: string - format: byte - description: >- - CompactBitArray is an implementation of a space efficient bit array. - - This is used to ensure that the encoded data takes up a minimal amount - of - - space after proto encoding. - - This is not thread safe, and is not intended for concurrent usage. - mode_infos: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_infos is the corresponding modes of the signers of the multisig - which could include nested multisig public keys - title: Multi is the mode info for a multisig public key - cosmos.tx.v1beta1.ModeInfo.Single: - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security guarantees. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation - - from SIGN_MODE_DIRECT - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - - but is not implemented on the SDK by default. To enable EIP-191, you - need - - to pass a custom `TxConfig` that has an implementation of - - `SignModeHandler` for EIP-191. The SDK may decide to fully support - - EIP-191 in the future. - - - Since: cosmos-sdk 0.45.2 - title: |- - Single is the mode info for a single signer. It is structured as a message - to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the - future - cosmos.tx.v1beta1.OrderBy: - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - description: >- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting - order. OrderBy defaults to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - title: OrderBy defines the sorting order - cosmos.tx.v1beta1.SignerInfo: - type: object - properties: - public_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - mode_info: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_info describes the signing mode of the signer and is a nested - structure to support nested multisig pubkey's - sequence: - type: string - format: uint64 - description: >- - sequence is the sequence of the account, which describes the - - number of committed transactions signed by a given address. It is used - to - - prevent replay attacks. - description: |- - SignerInfo describes the public key and signing mode of a single top-level - signer. - cosmos.tx.v1beta1.SimulateRequest: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: |- - tx is the transaction to simulate. - Deprecated. Send raw tx bytes instead. - tx_bytes: - type: string - format: byte - description: |- - tx_bytes is the raw transaction. - - Since: cosmos-sdk 0.43 - description: |- - SimulateRequest is the request type for the Service.Simulate - RPC method. - cosmos.tx.v1beta1.SimulateResponse: - type: object - properties: - gas_info: - description: gas_info is the information about gas used in the simulation. - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler execution. It - MUST be - - length prefixed in order to separate data from multiple message - executions. - log: - type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted during - message - - or handler execution. - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. - cosmos.tx.v1beta1.Tx: - type: object - properties: - body: - title: body is the processable content of the transaction - type: object - properties: - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required - signers of - - those messages define the number and order of elements in - AuthInfo's - - signer_infos and Tx's signatures. Each required signer address is - added to - - the list only the first time it occurs. - - By convention, the first required signer (usually from the first - message) - - is referred to as the primary signer and pays the fee for the - whole - - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. - - WARNING: in clients, any publicly exposed text should not be - called memo, - - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: - type: string - format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by - chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by - chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - auth_info: - $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' - title: |- - auth_info is the authorization related content of the transaction, - specifically signers, signer modes and fee - signatures: - type: array - items: - type: string - format: byte - description: >- - signatures is a list of signatures that matches the length and order - of - - AuthInfo's signer_infos to allow connecting signature meta information - like - - public key and signing mode by position. - description: Tx is the standard type used for broadcasting transactions. - cosmos.tx.v1beta1.TxBody: - type: object - properties: - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required signers of - - those messages define the number and order of elements in AuthInfo's - - signer_infos and Tx's signatures. Each required signer address is - added to - - the list only the first time it occurs. - - By convention, the first required signer (usually from the first - message) - - is referred to as the primary signer and pays the fee for the whole - - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. - - WARNING: in clients, any publicly exposed text should not be called - memo, - - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: - type: string - format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - tendermint.abci.Event: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - description: >- - Event allows application developers to attach additional information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - tendermint.abci.EventAttribute: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - format: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - tendermint.crypto.PublicKey: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Tendermint Validators - tendermint.types.Block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the - - blockchain, including all blockchain data structures and the rules - of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the - - blockchain, including all blockchain data - structures and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting - - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: |- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.BlockIDFlag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - tendermint.types.Commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: |- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.CommitSig: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - tendermint.types.Data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the order - first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - tendermint.types.DuplicateVoteEvidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting - - votes. - tendermint.types.Evidence: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the - - blockchain, including all blockchain data structures - and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting - - to mislead a light client. - tendermint.types.EvidenceList: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed - two conflicting - - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the - - blockchain, including all blockchain data - structures and the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting - - to mislead a light client. - tendermint.types.LightBlock: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the - - blockchain, including all blockchain data structures and the - rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.LightClientAttackEvidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a - block in the - - blockchain, including all blockchain data structures and - the rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the signature is - for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a - set of - - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + google.protobuf.Any: + type: object + properties: + type_url: type: string - format: int64 - byzantine_validators: + value: + type: string + format: byte + grpc.gateway.runtime.Error: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: + type_url: type: string - format: int64 - proposer_priority: + value: type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting + format: byte + canto.erc20.v1.Owner: + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + canto.erc20.v1.Params: + type: object + properties: + enable_erc20: + type: boolean + description: parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. + enable_evm_hook: + type: boolean + description: >- + parameter to enable the EVM hook that converts an ERC20 token to a + Cosmos - to mislead a light client. - tendermint.types.SignedHeader: + Coin by transferring the Tokens through a MsgEthereumTx to the + + ModuleAddress Ethereum address. + title: Params defines the erc20 module params + canto.erc20.v1.QueryParamsResponse: type: object properties: - header: + params: type: object properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 + enable_erc20: + type: boolean + description: >- + parameter to enable the conversion of Cosmos coins <--> ERC20 + tokens. + enable_evm_hook: + type: boolean description: >- - Consensus captures the consensus rules for processing a block in - the + parameter to enable the EVM hook that converts an ERC20 token to a + Cosmos - blockchain, including all blockchain data structures and the rules - of the + Coin by transferring the Tokens through a MsgEthereumTx to the - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: |- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.SignedMsgType: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN + ModuleAddress Ethereum address. + title: Params defines the erc20 module params description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - tendermint.types.Validator: + QueryParamsResponse is the response type for the Query/Params RPC + method. + canto.erc20.v1.QueryTokenPairResponse: type: object properties: - address: - type: string - format: byte - pub_key: + token_pair: type: object properties: - ed25519: + erc20_address: type: string - format: byte - secp256k1: + title: address of ERC20 contract token + denom: type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - tendermint.types.ValidatorSet: + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + description: |- + QueryTokenPairResponse is the response type for the Query/TokenPair RPC + method. + canto.erc20.v1.QueryTokenPairsResponse: type: object properties: - validators: + token_pairs: type: array items: type: object properties: - address: + erc20_address: type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: + title: address of ERC20 contract token + denom: type: string - format: int64 - proposer_priority: + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) type: string - format: int64 - proposer: + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + pagination: + description: pagination defines the pagination in the response. type: object properties: - address: + next_key: type: string format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.Vote: + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC + method. + canto.erc20.v1.TokenPair: type: object properties: - type: + erc20_address: + type: string + title: address of ERC20 contract token + denom: + type: string + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) type: string enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED description: |- - SignedMsgType is a type of signed message in the consensus. + Owner enumerates the ownership of a ERC20 contract. - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + canto.inflation.v1.ExponentialCalculation: + type: object + properties: + a: type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: + title: initial value + r: type: string - format: date-time - validator_address: + title: reduction factor + c: type: string - format: byte - validator_index: - type: integer - format: int32 - signature: + title: long term inflation + bonding_target: type: string - format: byte - description: |- - Vote represents a prevote, precommit, or commit vote from validators for - consensus. - cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + title: bonding target + max_variance: + type: string + title: max variance + title: >- + ExponentialCalculation holds factors to calculate exponential inflation on + + each period. Calculation reference: + + periodProvision = exponentialDecay * bondingIncentive + + f(x) = (a * (1 - r) ^ x + c) * (1 + max_variance - + bondedRatio * + + (max_variance / bonding_target)) + canto.inflation.v1.InflationDistribution: type: object properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted minted_denom that + is - blockchain, including all blockchain data structures and the - rules of the + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted minted_denom + that - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. + is - NOTE: not all txs here are valid. We're just agreeing on the - order first. + // to be allocated to the incentives module address - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + + community_pool defines the proportion of the minted minted_denom that + is to - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + be allocated to the community pool + title: >- + InflationDistribution defines the distribution in which inflation is - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + allocated through minting on each epoch (staking, incentives, community). + It - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for + excludes the team vesting distribution, as this is minted once at genesis. - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting + The initial InflationDistribution can be calculated from the Evmos Token - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the + Model like this: + + mintDistribution1 = distribution1 / (1 - teamVestingDistribution) + + 0.5333333 = 40% / (1 - 25%) + canto.inflation.v1.Params: + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + exponential_calculation: + title: variables to calculate exponential inflation + type: object + properties: + a: + type: string + title: initial value + r: + type: string + title: reduction factor + c: + type: string + title: long term inflation + bonding_target: + type: string + title: bonding target + max_variance: + type: string + title: max variance + inflation_distribution: + title: inflation distribution of the minted denom + type: object + properties: + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted minted_denom + that is + + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted + minted_denom that + + is - blockchain, including all blockchain - data structures and the rules of the + // to be allocated to the incentives module address - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting + community_pool defines the proportion of the minted minted_denom + that is to - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of + be allocated to the community pool + enable_inflation: + type: boolean + title: parameter to enable inflation and halt increasing the skipped_epochs + description: Params holds parameters for the inflation module. + canto.inflation.v1.QueryCirculatingSupplyResponse: + type: object + properties: + circulating_supply: + title: total amount of coins in circulation + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - validators. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + QueryCirculatingSupplyResponse is the response type for the + Query/CirculatingSupply RPC method. + canto.inflation.v1.QueryEpochMintProvisionResponse: type: object properties: - block_id: + epoch_mint_provision: + description: epoch_mint_provision is the current minting per epoch provision value. type: object properties: - hash: + denom: type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: + amount: + type: string + description: |- + QueryEpochMintProvisionResponse is the response type for the + Query/EpochMintProvision RPC method. + canto.inflation.v1.QueryInflationRateResponse: + type: object + properties: + inflation_rate: + type: string + title: rate by which the total supply increases within one period + description: >- + QueryInflationRateResponse is the response type for the + Query/InflationRate + + RPC method. + canto.inflation.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. type: object properties: - header: + mint_denom: + type: string + title: type of coin to mint + exponential_calculation: + title: variables to calculate exponential inflation type: object properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the - - blockchain, including all blockchain data structures and the - rules of the - - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: + a: type: string - format: byte - app_hash: + title: initial value + r: type: string - format: byte - last_results_hash: + title: reduction factor + c: type: string - format: byte - evidence_hash: + title: long term inflation + bonding_target: type: string - format: byte - title: consensus info - proposer_address: + title: bonding target + max_variance: type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: + title: max variance + inflation_distribution: + title: inflation distribution of the minted denom type: object properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted + minted_denom that is - votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted + minted_denom that - blockchain, including all blockchain - data structures and the rules of the + is - application's state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of + // to be allocated to the incentives module address - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; - to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of + community_pool defines the proportion of the minted + minted_denom that is to - validators. + be allocated to the community pool + enable_inflation: + type: boolean + title: >- + parameter to enable inflation and halt increasing the + skipped_epochs + description: QueryParamsResponse is the response type for the Query/Params RPC method. + canto.inflation.v1.QueryPeriodResponse: + type: object + properties: + period: + type: string + format: uint64 + description: period is the current minting per epoch provision value. + description: QueryPeriodResponse is the response type for the Query/Period RPC method. + canto.inflation.v1.QuerySkippedEpochsResponse: + type: object + properties: + skipped_epochs: + type: string + format: uint64 + description: number of epochs that the inflation module has been disabled. description: >- - GetLatestBlockResponse is the response type for the Query/GetLatestBlock + QuerySkippedEpochsResponse is the response type for the + Query/SkippedEpochs + RPC method. - cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: + cosmos.base.v1beta1.DecCoin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + canto.onboarding.v1.Params: + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module + canto.onboarding.v1.QueryParamsResponse: type: object properties: - block_height: + params: + description: params defines the parameters of the module. + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module + description: QueryParamsResponse is the response type for the Query/Params RPC method. + canto.coinswap.v1.Params: + type: object + properties: + fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + tax_rate: type: string - format: int64 - validators: + max_standard_coin_per_pool: + type: string + max_swap_amount: type: array items: type: object properties: - address: + denom: type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the `@type` + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: Params defines token module's parameters + canto.coinswap.v1.PoolInfo: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: counterparty token balance + lpt: type: object properties: - next_key: + denom: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + amount: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: |- + Coin defines a token with a denomination and an amount. - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + canto.coinswap.v1.QueryLiquidityPoolResponse: type: object properties: - default_node_info: + pool: type: object properties: - protocol_version: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: type: object properties: - p2p: + denom: type: string - format: uint64 - block: + amount: type: string - format: uint64 - app: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: counterparty token balance + lpt: type: object properties: - tx_index: + denom: type: string - rpc_address: + amount: type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: liquidity token balance + fee: type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC - method. - cosmos.base.tendermint.v1beta1.GetSyncingResponse: - type: object - properties: - syncing: - type: boolean - format: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing RPC - method. - cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + title: liquidity pool fee + title: >- + QueryLiquidityPoolResponse is response type for the Query/LiquidityPool + RPC + + method + canto.coinswap.v1.QueryLiquidityPoolsResponse: type: object properties: - block_height: - type: string - format: int64 - validators: + pools: type: array items: type: object properties: - address: + id: + type: string + escrow_address: type: string - pub_key: + title: escrow account for deposit tokens + standard: type: object properties: - type_url: + denom: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: + amount: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular + Coin defines a token with a denomination and an amount. - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + NOTE: The amount field is an Int which implements the custom + method - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + NOTE: The amount field is an Int which implements the custom + method - representation, that representation will be embedded adding a - field + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom + method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: + signatures required by gogoproto. + title: liquidity token balance + fee: type: string - format: int64 - description: Validator is the type for the validator-set. + title: liquidity pool fee pagination: - description: pagination defines an pagination for the response. type: object properties: next_key: type: string format: byte - title: |- + description: |- next_key is the key to be passed to PageRequest.key to - query the next page most efficiently + query the next page most efficiently. It will be empty if + there are no more results. total: type: string format: uint64 @@ -54757,278 +2150,87 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: >- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.Module: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos.base.tendermint.v1beta1.Validator: + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryLiquidityPoolsResponse is response type for the Query/LiquidityPools + RPC + + method + canto.coinswap.v1.QueryParamsResponse: type: object properties: - address: - type: string - pub_key: + params: type: object properties: - type_url: - type: string + fee: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. + Coin defines a token with a denomination and an amount. - Schemes other than `http`, `https` (or the empty scheme) might be + NOTE: The amount field is an Int which implements the custom + method - used with implementation specific semantics. - value: - type: string - format: byte + signatures required by gogoproto. + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Coin defines a token with a denomination and an amount. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + NOTE: The amount field is an Int which implements the custom + method - representation, that representation will be embedded adding a field + signatures required by gogoproto. + tax_rate: + type: string + max_standard_coin_per_pool: + type: string + max_swap_amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom + method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - cosmos.base.tendermint.v1beta1.VersionInfo: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - tendermint.p2p.DefaultNodeInfo: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.DefaultNodeInfoOther: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.ProtocolVersion: + signatures required by gogoproto. + title: Params defines token module's parameters + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.base.v1beta1.Coin: type: object properties: - p2p: - type: string - format: uint64 - block: + denom: type: string - format: uint64 - app: + amount: type: string - format: uint64 + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. diff --git a/ibc/module_test.go b/ibc/module_test.go index 8a2c7ebf4..aa7b6790a 100644 --- a/ibc/module_test.go +++ b/ibc/module_test.go @@ -137,7 +137,7 @@ func (m MockIBCModule) OnTimeoutPacket( func TestModule(t *testing.T) { mockModule := &MockIBCModule{} - mockModule.On("OnChanOpenInit").Return(nil) + mockModule.On("OnChanOpenInit").Return("", nil) mockModule.On("OnChanOpenTry").Return("", nil) mockModule.On("OnChanOpenAck").Return(nil) mockModule.On("OnChanOpenConfirm").Return(nil) diff --git a/proto/buf.gen.swagger.yaml b/proto/buf.gen.swagger.yaml new file mode 100644 index 000000000..d2ff5df92 --- /dev/null +++ b/proto/buf.gen.swagger.yaml @@ -0,0 +1,5 @@ +version: v1 +plugins: + - name: swagger + out: ./tmp-swagger-gen + opt: logtostderr=true,fqn_for_swagger_name=true,simple_operation_ids=true diff --git a/proto/canto/coinswap/v1/tx.proto b/proto/canto/coinswap/v1/tx.proto index 45caa152f..a91047a1b 100644 --- a/proto/canto/coinswap/v1/tx.proto +++ b/proto/canto/coinswap/v1/tx.proto @@ -6,6 +6,7 @@ import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; +import "amino/amino.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/coinswap/types"; option (gogoproto.goproto_getters_all) = false; @@ -29,6 +30,9 @@ service Msg { // MsgAddLiquidity defines a msg for adding liquidity to a reserve pool message MsgAddLiquidity { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "canto/MsgAddLiquidity"; + cosmos.base.v1beta1.Coin max_token = 1 [ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"max_token\"" @@ -54,6 +58,9 @@ message MsgAddLiquidityResponse { cosmos.base.v1beta1.Coin mint_token = 1; } // MsgRemoveLiquidity defines a msg for removing liquidity from a reserve pool message MsgRemoveLiquidity { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "canto/MsgRemoveLiquidity"; + cosmos.base.v1beta1.Coin withdraw_liquidity = 1 [ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"withdraw_liquidity\"" @@ -81,6 +88,9 @@ message MsgRemoveLiquidityResponse { // MsgSwapOrder defines a msg for swap order message MsgSwapOrder { + option (cosmos.msg.v1.signer) = "input"; + option (amino.name) = "canto/MsgSwapOrder"; + Input input = 1 [ (gogoproto.nullable) = false ]; Output output = 2 [ (gogoproto.nullable) = false ]; int64 deadline = 3; diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index 8b904bd5a..b1d22e8c9 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -6,6 +6,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; +import "amino/amino.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; @@ -27,6 +28,9 @@ service Msg { // MsgConvertCoin defines a Msg to convert a native Cosmos coin to a ERC20 token message MsgConvertCoin { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "canto/MsgConvertCoin"; + // Cosmos coin which denomination is registered in a token pair. The coin // amount defines the amount of coins to convert. cosmos.base.v1beta1.Coin coin = 1 [ (gogoproto.nullable) = false ]; @@ -42,6 +46,9 @@ message MsgConvertCoinResponse {} // MsgConvertERC20 defines a Msg to convert a ERC20 token to a native Cosmos // coin. message MsgConvertERC20 { + option (cosmos.msg.v1.signer) = "sender"; + option (amino.name) = "canto/MsgConvertERC20"; + // ERC20 token contract address registered in a token pair string contract_address = 1; // amount of ERC20 tokens to convert diff --git a/scripts/protoc-swagger-gen.sh b/scripts/protoc-swagger-gen.sh index 44d9a2f6d..d75d15533 100755 --- a/scripts/protoc-swagger-gen.sh +++ b/scripts/protoc-swagger-gen.sh @@ -3,19 +3,14 @@ set -eo pipefail mkdir -p ./tmp-swagger-gen -proto_dirs=$(find ./proto ./third_party/proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) +proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) for dir in $proto_dirs; do # generate swagger files (filter query files) query_file=$(find "${dir}" -maxdepth 1 \( -name 'query.proto' -o -name 'service.proto' \)) # TODO: migrate to `buf build` if [[ ! -z "$query_file" ]]; then - buf protoc \ - -I "proto" \ - -I "third_party/proto" \ - "$query_file" \ - --swagger_out=./tmp-swagger-gen \ - --swagger_opt=logtostderr=true --swagger_opt=fqn_for_swagger_name=true --swagger_opt=simple_operation_ids=true + buf generate --template ./proto/buf.gen.swagger.yaml $query_file fi done diff --git a/x/coinswap/types/msgs.go b/x/coinswap/types/msgs.go index 824366760..47132c02d 100644 --- a/x/coinswap/types/msgs.go +++ b/x/coinswap/types/msgs.go @@ -52,12 +52,6 @@ func NewMsgSwapOrder( } } -// Route implements Msg. -func (msg MsgSwapOrder) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgSwapOrder) Type() string { return TypeMsgSwapOrder } - // ValidateBasic implements Msg. func (msg MsgSwapOrder) ValidateBasic() error { if err := ValidateInput(msg.Input); err != nil { @@ -75,20 +69,6 @@ func (msg MsgSwapOrder) ValidateBasic() error { return ValidateDeadline(msg.Deadline) } -// GetSignBytes implements Msg. -func (msg MsgSwapOrder) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgSwapOrder) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Input.Address) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - /* --------------------------------------------------------------------------- */ // MsgAddLiquidity /* --------------------------------------------------------------------------- */ @@ -110,12 +90,6 @@ func NewMsgAddLiquidity( } } -// Route implements Msg. -func (msg MsgAddLiquidity) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgAddLiquidity) Type() string { return TypeMsgAddLiquidity } - // ValidateBasic implements Msg. func (msg MsgAddLiquidity) ValidateBasic() error { if err := ValidateMaxToken(msg.MaxToken); err != nil { @@ -140,20 +114,6 @@ func (msg MsgAddLiquidity) ValidateBasic() error { return nil } -// GetSignBytes implements Msg. -func (msg MsgAddLiquidity) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgAddLiquidity) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - /* --------------------------------------------------------------------------- */ // MsgRemoveLiquidity /* --------------------------------------------------------------------------- */ @@ -175,12 +135,6 @@ func NewMsgRemoveLiquidity( } } -// Route implements Msg. -func (msg MsgRemoveLiquidity) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgRemoveLiquidity) Type() string { return TypeMsgRemoveLiquidity } - // ValidateBasic implements Msg. func (msg MsgRemoveLiquidity) ValidateBasic() error { if err := ValidateMinToken(msg.MinToken); err != nil { @@ -204,17 +158,3 @@ func (msg MsgRemoveLiquidity) ValidateBasic() error { } return nil } - -// GetSignBytes implements Msg. -func (msg MsgRemoveLiquidity) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgRemoveLiquidity) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} diff --git a/x/coinswap/types/tx.pb.go b/x/coinswap/types/tx.pb.go index 37a704aec..06df4e1fb 100644 --- a/x/coinswap/types/tx.pb.go +++ b/x/coinswap/types/tx.pb.go @@ -10,6 +10,7 @@ import ( _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -282,54 +283,57 @@ func init() { func init() { proto.RegisterFile("canto/coinswap/v1/tx.proto", fileDescriptor_003205f46878c077) } var fileDescriptor_003205f46878c077 = []byte{ - // 750 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x4f, 0xdb, 0x48, - 0x18, 0x8d, 0x13, 0x40, 0x61, 0x36, 0x40, 0x30, 0xb0, 0x31, 0x3e, 0x38, 0x59, 0x4b, 0xbb, 0x42, - 0x48, 0xd8, 0x82, 0x5d, 0x89, 0xdd, 0xbd, 0xb4, 0x04, 0xa9, 0x2a, 0x52, 0x53, 0x90, 0xd3, 0x53, - 0x55, 0x11, 0x4d, 0xe2, 0x91, 0x33, 0x0a, 0x33, 0x93, 0x66, 0x26, 0xbf, 0x6e, 0xbd, 0xf4, 0xde, - 0xbf, 0xa3, 0xa7, 0x1e, 0xfa, 0x47, 0x70, 0x44, 0x55, 0x0f, 0x55, 0x0f, 0x51, 0x0b, 0x87, 0xde, - 0xb9, 0xf5, 0x56, 0x8d, 0x3d, 0x71, 0x42, 0x42, 0x09, 0xea, 0xcd, 0xe3, 0xef, 0xbd, 0xef, 0xc7, - 0x7b, 0xdf, 0xd8, 0xc0, 0xac, 0x41, 0x2a, 0x98, 0x5b, 0x63, 0x98, 0xf2, 0x2e, 0x6c, 0xba, 0x9d, - 0x5d, 0x57, 0xf4, 0x9c, 0x66, 0x8b, 0x09, 0xa6, 0xaf, 0x86, 0x31, 0x67, 0x18, 0x73, 0x3a, 0xbb, - 0x66, 0x61, 0x1a, 0x1e, 0x87, 0x43, 0x92, 0x69, 0xd5, 0x18, 0x27, 0x8c, 0xbb, 0x55, 0xc8, 0x91, - 0xdb, 0xd9, 0xad, 0x22, 0x01, 0x23, 0x8c, 0x8a, 0xaf, 0x07, 0x2c, 0x60, 0xe1, 0xa3, 0x2b, 0x9f, - 0xd4, 0xdb, 0xcd, 0x88, 0x55, 0x89, 0x02, 0xd1, 0x41, 0x85, 0x72, 0x2a, 0x21, 0xe1, 0x81, 0x2c, - 0x47, 0x78, 0x10, 0x05, 0xec, 0xef, 0x49, 0xb0, 0x52, 0xe2, 0xc1, 0x81, 0xef, 0x3f, 0xc1, 0x2f, - 0xdb, 0xd8, 0xc7, 0xa2, 0xaf, 0x9f, 0x80, 0x45, 0x02, 0x7b, 0x15, 0xc1, 0x1a, 0x88, 0x1a, 0x5a, - 0x41, 0xdb, 0xfa, 0x6d, 0x6f, 0xd3, 0x51, 0xe9, 0x64, 0x47, 0x8e, 0xea, 0xc8, 0x39, 0x64, 0x98, - 0x16, 0x8d, 0xf3, 0x41, 0x3e, 0x71, 0x3d, 0xc8, 0x67, 0xfb, 0x90, 0x9c, 0xfd, 0x6f, 0xc7, 0x4c, - 0xdb, 0x4b, 0x13, 0xd8, 0x7b, 0x26, 0x1f, 0xf5, 0x0e, 0xd0, 0x51, 0x0f, 0xd6, 0x44, 0x85, 0x0b, - 0x48, 0x7d, 0xd8, 0xf2, 0x2b, 0x90, 0x08, 0x23, 0x59, 0xd0, 0xb6, 0x16, 0x8b, 0x8f, 0x25, 0xff, - 0xf3, 0x20, 0xbf, 0x11, 0x55, 0xe0, 0x7e, 0xc3, 0xc1, 0xcc, 0x25, 0x50, 0xd4, 0x9d, 0x23, 0x2a, - 0xae, 0x07, 0xf9, 0xcd, 0x28, 0xf1, 0x74, 0x02, 0xfb, 0xc3, 0xfb, 0x1d, 0xa0, 0xfa, 0x3a, 0xa2, - 0xc2, 0xcb, 0x86, 0x90, 0xb2, 0x42, 0x1c, 0x10, 0xa1, 0xd7, 0xc1, 0x12, 0xc1, 0xb4, 0x72, 0x36, - 0x1c, 0xcd, 0x48, 0x85, 0x25, 0x0f, 0x67, 0x95, 0x5c, 0x57, 0xb3, 0x8c, 0x73, 0x27, 0xab, 0x65, - 0x08, 0xa6, 0x23, 0xcd, 0x4c, 0x90, 0xf6, 0x11, 0xf4, 0xcf, 0x30, 0x45, 0xc6, 0x5c, 0x41, 0xdb, - 0x4a, 0x79, 0xf1, 0x59, 0xff, 0x1d, 0x2c, 0x70, 0x44, 0x7d, 0xd4, 0x32, 0xe6, 0x65, 0x79, 0x4f, - 0x9d, 0xec, 0x32, 0xc8, 0x4d, 0x48, 0xef, 0x21, 0xde, 0x64, 0x94, 0x23, 0xfd, 0x5f, 0x00, 0x08, - 0xa6, 0xe2, 0x9e, 0x1e, 0x78, 0x8b, 0x12, 0x1c, 0x4a, 0x6d, 0xbf, 0x4e, 0x01, 0xbd, 0xc4, 0x03, - 0x0f, 0x11, 0xd6, 0x41, 0xa3, 0xfe, 0x1a, 0x40, 0xef, 0x62, 0x51, 0xf7, 0x5b, 0xb0, 0x3b, 0x26, - 0xc7, 0x4c, 0x73, 0xff, 0x50, 0xe6, 0x2a, 0x0f, 0xa6, 0x53, 0xd8, 0xde, 0xea, 0xf0, 0xe5, 0xa8, - 0xd8, 0x0b, 0x20, 0x1b, 0x52, 0xcd, 0x47, 0x2e, 0x3f, 0x98, 0x25, 0x79, 0x76, 0x24, 0x79, 0xb4, - 0x3e, 0x13, 0x72, 0xa7, 0x09, 0xa6, 0xd1, 0x32, 0x35, 0x41, 0x56, 0xa2, 0x6e, 0xac, 0x52, 0xe4, - 0xeb, 0xa3, 0x59, 0x45, 0x72, 0xa3, 0x22, 0x77, 0x2d, 0xd2, 0x32, 0xc1, 0x74, 0x7c, 0x8d, 0x7e, - 0xc5, 0xdc, 0x53, 0x60, 0x4e, 0xdb, 0x10, 0xfb, 0xfb, 0x10, 0x2c, 0xc7, 0x5a, 0x86, 0x77, 0xdf, - 0xd0, 0x0a, 0xa9, 0xbb, 0x3d, 0x5e, 0x1a, 0x12, 0xe4, 0x89, 0xdb, 0x1f, 0x35, 0x90, 0x29, 0xf1, - 0xa0, 0xdc, 0x85, 0xcd, 0xe3, 0x96, 0x8f, 0x5a, 0xfa, 0x3f, 0x60, 0x1e, 0xd3, 0x66, 0x5b, 0x28, - 0x53, 0x0d, 0x67, 0xea, 0xc3, 0xe3, 0x1c, 0xc9, 0x78, 0x71, 0x4e, 0xaa, 0xe4, 0x45, 0x60, 0x7d, - 0x1f, 0x2c, 0xb0, 0xb6, 0x90, 0xb4, 0xe4, 0x70, 0x17, 0xa6, 0x68, 0xc7, 0x21, 0x40, 0xf1, 0x14, - 0xfc, 0x86, 0x26, 0xa9, 0x09, 0x4d, 0xfe, 0x03, 0x19, 0xcc, 0x2b, 0xd5, 0x76, 0xbf, 0xc2, 0x64, - 0x6b, 0xa1, 0x66, 0xe9, 0x62, 0xee, 0x7a, 0x90, 0x5f, 0x8b, 0x0c, 0x18, 0x8f, 0xda, 0x1e, 0xc0, - 0xbc, 0xd8, 0xee, 0x87, 0x53, 0xd8, 0x1b, 0x60, 0x4d, 0x4d, 0x15, 0x0e, 0xad, 0xf4, 0xda, 0x7b, - 0x9b, 0x04, 0xa9, 0x12, 0x0f, 0xf4, 0x53, 0x90, 0xb9, 0xf1, 0xa9, 0xb2, 0x6f, 0x69, 0x77, 0xe2, - 0x4e, 0x99, 0xdb, 0xb3, 0x31, 0xb1, 0x2f, 0x01, 0x58, 0x99, 0xbc, 0x39, 0x7f, 0xde, 0x4e, 0x9f, - 0x80, 0x99, 0x3b, 0xf7, 0x82, 0xc5, 0x85, 0xca, 0x20, 0x3d, 0x1c, 0x52, 0xcf, 0xdf, 0x4e, 0x8d, - 0xad, 0x35, 0xff, 0xfa, 0x39, 0x60, 0x5c, 0x25, 0x73, 0xfe, 0xd5, 0xb7, 0x77, 0xdb, 0x5a, 0xf1, - 0xe4, 0xfc, 0xab, 0x95, 0x38, 0xbf, 0xb4, 0xb4, 0x8b, 0x4b, 0x4b, 0xfb, 0x72, 0x69, 0x69, 0x6f, - 0xae, 0xac, 0xc4, 0xc5, 0x95, 0x95, 0xf8, 0x74, 0x65, 0x25, 0x9e, 0xef, 0x05, 0x58, 0xd4, 0xdb, - 0x55, 0xa7, 0xc6, 0x88, 0x7b, 0x28, 0xd3, 0xee, 0x3c, 0x45, 0xa2, 0xcb, 0x5a, 0x8d, 0xe8, 0xe4, - 0x76, 0xf6, 0xdd, 0xde, 0xe8, 0xdf, 0x24, 0xfa, 0x4d, 0xc4, 0xab, 0x0b, 0xe1, 0xcf, 0xe2, 0xef, - 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x03, 0xb4, 0x51, 0xfd, 0xe9, 0x06, 0x00, 0x00, + // 799 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xbf, 0x4f, 0xfb, 0x46, + 0x14, 0x8f, 0xc9, 0x17, 0x14, 0xae, 0x01, 0x82, 0x81, 0xc6, 0x78, 0x70, 0x82, 0x25, 0xaa, 0x28, + 0x12, 0xb6, 0xa0, 0x95, 0x68, 0x59, 0x5a, 0x82, 0x54, 0x15, 0xa9, 0x29, 0xc8, 0xe9, 0x54, 0x55, + 0x44, 0x97, 0xd8, 0x72, 0x4e, 0xe1, 0xee, 0xd2, 0xdc, 0xe5, 0xd7, 0x56, 0x75, 0xec, 0xd4, 0x3f, + 0xa1, 0x73, 0x97, 0x32, 0xf4, 0x8f, 0x60, 0x44, 0x9d, 0xaa, 0x0e, 0x51, 0x0b, 0x03, 0x3b, 0x4b, + 0xd7, 0xea, 0x7c, 0x17, 0x27, 0x38, 0x94, 0xa0, 0x2e, 0x91, 0xdf, 0xbd, 0xcf, 0xbb, 0xf7, 0xde, + 0xe7, 0xf3, 0x89, 0x0d, 0xcc, 0x26, 0x24, 0x9c, 0xba, 0x4d, 0x8a, 0x08, 0x1b, 0xc0, 0x8e, 0xdb, + 0x3f, 0x74, 0xf9, 0xd0, 0xe9, 0x74, 0x29, 0xa7, 0xfa, 0x66, 0x94, 0x73, 0x26, 0x39, 0xa7, 0x7f, + 0x68, 0x16, 0xe7, 0xe1, 0x71, 0x3a, 0x2a, 0x32, 0xad, 0x26, 0x65, 0x98, 0x32, 0xb7, 0x01, 0x59, + 0xe0, 0xf6, 0x0f, 0x1b, 0x01, 0x87, 0x12, 0xa3, 0xf2, 0xdb, 0x21, 0x0d, 0x69, 0xf4, 0xe8, 0x8a, + 0x27, 0x75, 0xba, 0x2b, 0xab, 0xea, 0x32, 0x21, 0x03, 0x95, 0xca, 0xab, 0x0b, 0x31, 0x0b, 0x45, + 0x3b, 0xcc, 0x42, 0x95, 0xd8, 0x84, 0x18, 0x11, 0xea, 0x46, 0xbf, 0xf2, 0xc8, 0xfe, 0x39, 0x0d, + 0x36, 0xaa, 0x2c, 0x3c, 0xf5, 0xfd, 0x2f, 0xd1, 0x77, 0x3d, 0xe4, 0x23, 0x3e, 0xd2, 0x2f, 0xc1, + 0x2a, 0x86, 0xc3, 0x3a, 0xa7, 0xed, 0x80, 0x18, 0x5a, 0x51, 0x2b, 0xbd, 0x77, 0xb4, 0xeb, 0xa8, + 0x0e, 0x62, 0x48, 0x47, 0x0d, 0xe9, 0x9c, 0x51, 0x44, 0x2a, 0xc6, 0xed, 0xb8, 0x90, 0x7a, 0x1a, + 0x17, 0x72, 0x23, 0x88, 0xaf, 0x4f, 0xec, 0xb8, 0xd2, 0xf6, 0x32, 0x18, 0x0e, 0xbf, 0x16, 0x8f, + 0x7a, 0x1f, 0xe8, 0xc1, 0x10, 0x36, 0x79, 0x9d, 0x71, 0x48, 0x7c, 0xd8, 0xf5, 0xeb, 0x10, 0x73, + 0x63, 0xa9, 0xa8, 0x95, 0x56, 0x2b, 0x5f, 0x88, 0xfa, 0x3f, 0xc7, 0x85, 0x1d, 0xd9, 0x81, 0xf9, + 0x6d, 0x07, 0x51, 0x17, 0x43, 0xde, 0x72, 0xce, 0x09, 0x7f, 0x1a, 0x17, 0x76, 0xe5, 0xc5, 0xf3, + 0x17, 0xd8, 0xbf, 0xff, 0x76, 0x00, 0xd4, 0x5c, 0xe7, 0x84, 0x7b, 0xb9, 0x08, 0x52, 0x53, 0x88, + 0x53, 0xcc, 0xf5, 0x16, 0x58, 0xc3, 0x88, 0xd4, 0xaf, 0x27, 0xab, 0x19, 0xe9, 0xa8, 0xe5, 0xd9, + 0xa2, 0x96, 0xdb, 0x6a, 0x97, 0xd9, 0xda, 0x64, 0xb7, 0x2c, 0x46, 0x64, 0xca, 0x99, 0x09, 0x32, + 0x7e, 0x00, 0xfd, 0x6b, 0x44, 0x02, 0xe3, 0x5d, 0x51, 0x2b, 0xa5, 0xbd, 0x38, 0xd6, 0xdf, 0x07, + 0x2b, 0x2c, 0x20, 0x7e, 0xd0, 0x35, 0x96, 0x45, 0x7b, 0x4f, 0x45, 0x27, 0xfb, 0x3f, 0x3c, 0xde, + 0x94, 0x55, 0xf0, 0xe3, 0xe3, 0x4d, 0x79, 0x47, 0x5a, 0x25, 0x21, 0x87, 0x5d, 0x03, 0xf9, 0xc4, + 0x91, 0x17, 0xb0, 0x0e, 0x25, 0x2c, 0xd0, 0x3f, 0x06, 0x00, 0x23, 0xc2, 0xdf, 0x28, 0x95, 0xb7, + 0x2a, 0xc0, 0x91, 0x22, 0xf6, 0xaf, 0x69, 0xa0, 0x57, 0x59, 0xe8, 0x05, 0x98, 0xf6, 0x83, 0xe9, + 0x1a, 0x6d, 0xa0, 0x0f, 0x10, 0x6f, 0xf9, 0x5d, 0x38, 0x98, 0x61, 0x6d, 0xa1, 0x07, 0xf6, 0x94, + 0x07, 0x94, 0x54, 0xf3, 0x57, 0xd8, 0xde, 0xe6, 0xe4, 0x70, 0xda, 0xec, 0x5b, 0x20, 0x06, 0x52, + 0xc3, 0x4b, 0x33, 0x7c, 0xba, 0x48, 0x99, 0xdc, 0x54, 0x19, 0xe9, 0xb2, 0x84, 0x2a, 0x19, 0x8c, + 0x88, 0xf4, 0x5c, 0x07, 0xe4, 0x04, 0xea, 0x99, 0xe3, 0xa4, 0xfc, 0x9f, 0x2f, 0x6a, 0x92, 0x9f, + 0x36, 0x79, 0xcd, 0x6f, 0xeb, 0x18, 0x91, 0x59, 0xb7, 0xfd, 0x1f, 0x0f, 0x94, 0x12, 0x1e, 0x30, + 0x62, 0x0f, 0x24, 0xa4, 0xb1, 0xaf, 0x80, 0x39, 0x7f, 0x1a, 0x3b, 0xe1, 0x33, 0xb0, 0x1e, 0xb3, + 0x1e, 0xbd, 0x5f, 0x0c, 0xad, 0x98, 0x7e, 0xdd, 0x0d, 0x6b, 0x93, 0x02, 0x11, 0x31, 0xfb, 0x1f, + 0x0d, 0x64, 0xab, 0x2c, 0xac, 0x0d, 0x60, 0xe7, 0xa2, 0xeb, 0x07, 0x5d, 0xfd, 0x23, 0xb0, 0x8c, + 0x48, 0xa7, 0xc7, 0x95, 0xfc, 0x86, 0x33, 0xf7, 0x72, 0x73, 0xce, 0x45, 0xbe, 0xf2, 0x4e, 0xf0, + 0xe9, 0x49, 0xb0, 0x7e, 0x0c, 0x56, 0x68, 0x8f, 0x8b, 0xb2, 0xa5, 0x89, 0x6b, 0xe6, 0xca, 0x2e, + 0x22, 0x80, 0xaa, 0x53, 0xf0, 0x67, 0xec, 0xa5, 0x13, 0xec, 0x7d, 0x02, 0xb2, 0x88, 0xd5, 0x1b, + 0xbd, 0x51, 0x9d, 0x8a, 0xd1, 0x22, 0x76, 0x33, 0x95, 0xfc, 0xd3, 0xb8, 0xb0, 0x25, 0xa5, 0x9a, + 0xcd, 0xda, 0x1e, 0x40, 0xac, 0xd2, 0x1b, 0x45, 0x5b, 0x9c, 0xec, 0x09, 0x82, 0xe5, 0x6c, 0x82, + 0x5f, 0x3d, 0xe6, 0x37, 0x5e, 0xd4, 0xde, 0x01, 0x5b, 0x2a, 0x8e, 0x78, 0x51, 0x94, 0x1e, 0xfd, + 0xb2, 0x04, 0xd2, 0x55, 0x16, 0xea, 0x57, 0x20, 0xfb, 0xec, 0xf5, 0x68, 0xbf, 0xb0, 0x51, 0xe2, + 0x0f, 0x6a, 0x96, 0x17, 0x63, 0x62, 0xe9, 0x42, 0xb0, 0x91, 0xfc, 0x1b, 0xee, 0xbf, 0x5c, 0x9e, + 0x80, 0x99, 0x07, 0x6f, 0x82, 0xc5, 0x8d, 0x6a, 0x20, 0x33, 0x59, 0x52, 0x2f, 0xbc, 0x5c, 0x1a, + 0x93, 0x62, 0x7e, 0xf0, 0xdf, 0x80, 0x59, 0x96, 0xcc, 0xe5, 0xef, 0x1f, 0x6f, 0xca, 0x5a, 0xe5, + 0xf2, 0xf6, 0x6f, 0x2b, 0x75, 0x7b, 0x6f, 0x69, 0x77, 0xf7, 0x96, 0xf6, 0xd7, 0xbd, 0xa5, 0xfd, + 0xf4, 0x60, 0xa5, 0xee, 0x1e, 0xac, 0xd4, 0x1f, 0x0f, 0x56, 0xea, 0x9b, 0xa3, 0x10, 0xf1, 0x56, + 0xaf, 0xe1, 0x34, 0x29, 0x76, 0xcf, 0xc4, 0xb5, 0x07, 0x5f, 0x05, 0x7c, 0x40, 0xbb, 0x6d, 0x19, + 0xb9, 0xfd, 0x63, 0x77, 0x38, 0xfd, 0x44, 0xf2, 0x51, 0x27, 0x60, 0x8d, 0x95, 0xe8, 0x03, 0xf5, + 0xe1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0xe8, 0x53, 0x32, 0x70, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 665e66458..3745bb730 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -22,15 +22,8 @@ var ( AminoCdc = codec.NewAminoCodec(amino) ) -const ( - // Amino names - convertERC20Name = "canto/MsgConvertERC20" - convertCoinName = "canto/MsgConvertCoin" -) - // NOTE: This is required for the GetSignBytes function func init() { - RegisterLegacyAminoCodec(amino) amino.Seal() } @@ -50,11 +43,3 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } - -// RegisterLegacyAminoCodec registers the necessary x/erc20 interfaces and -// concrete types on the provided LegacyAmino codec. These types are used for -// Amino JSON serialization and EIP-712 compatibility. -func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgConvertERC20{}, convertERC20Name, nil) - cdc.RegisterConcrete(&MsgConvertCoin{}, convertCoinName, nil) -} diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index 04a4abe92..1a7b596e7 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -29,12 +29,6 @@ func NewMsgConvertCoin(coin sdk.Coin, receiver common.Address, sender sdk.AccAdd } } -// Route should return the name of the module -func (msg MsgConvertCoin) Route() string { return RouterKey } - -// Type should return the action -func (msg MsgConvertCoin) Type() string { return TypeMsgConvertCoin } - // ValidateBasic runs stateless checks on the message func (msg MsgConvertCoin) ValidateBasic() error { if err := ValidateErc20Denom(msg.Coin.Denom); err != nil { @@ -56,17 +50,6 @@ func (msg MsgConvertCoin) ValidateBasic() error { return nil } -// GetSignBytes encodes the message for signing -func (msg MsgConvertCoin) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) -} - -// GetSigners defines whose signature is required -func (msg MsgConvertCoin) GetSigners() []sdk.AccAddress { - addr := sdk.MustAccAddressFromBech32(msg.Sender) - return []sdk.AccAddress{addr} -} - // NewMsgConvertERC20 creates a new instance of MsgConvertERC20 func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, sender common.Address) *MsgConvertERC20 { // nolint: interfacer return &MsgConvertERC20{ @@ -77,12 +60,6 @@ func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, s } } -// Route should return the name of the module -func (msg MsgConvertERC20) Route() string { return RouterKey } - -// Type should return the action -func (msg MsgConvertERC20) Type() string { return TypeMsgConvertERC20 } - // ValidateBasic runs stateless checks on the message func (msg MsgConvertERC20) ValidateBasic() error { if !common.IsHexAddress(msg.ContractAddress) { @@ -100,14 +77,3 @@ func (msg MsgConvertERC20) ValidateBasic() error { } return nil } - -// GetSignBytes encodes the message for signing -func (msg MsgConvertERC20) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) -} - -// GetSigners defines whose signature is required -func (msg MsgConvertERC20) GetSigners() []sdk.AccAddress { - addr := common.HexToAddress(msg.Sender) - return []sdk.AccAddress{addr.Bytes()} -} diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index d46103f37..5f5110062 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -10,6 +10,7 @@ import ( _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -249,38 +250,41 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 494 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xc1, 0x6e, 0x13, 0x31, - 0x10, 0xcd, 0x26, 0x21, 0xa2, 0x2e, 0x6a, 0xd1, 0x0a, 0x9a, 0x64, 0x85, 0x36, 0x21, 0x07, 0x1a, - 0x40, 0xb5, 0x9b, 0xf4, 0xc0, 0x99, 0xac, 0x38, 0xe4, 0x50, 0x0e, 0x7b, 0xe4, 0x12, 0x39, 0x1b, - 0xcb, 0x5d, 0x95, 0xf5, 0x44, 0xb6, 0xbb, 0xb4, 0x17, 0x84, 0xfa, 0x05, 0x20, 0x7e, 0x84, 0x03, - 0xfc, 0x43, 0x8f, 0x15, 0x5c, 0x10, 0x87, 0x0a, 0x25, 0x48, 0xfc, 0x06, 0x5a, 0xdb, 0x0d, 0x2c, - 0xa8, 0xe5, 0xe6, 0x99, 0xf7, 0x66, 0xe6, 0xbd, 0xf1, 0xa0, 0x66, 0x42, 0x85, 0x06, 0xc2, 0x64, - 0x32, 0xdc, 0x25, 0xf9, 0x80, 0xe8, 0x63, 0x3c, 0x97, 0xa0, 0xc1, 0xdf, 0x30, 0x00, 0x36, 0x00, - 0xce, 0x07, 0xc1, 0x3d, 0x0e, 0xc0, 0x5f, 0x32, 0x42, 0xe7, 0x29, 0xa1, 0x42, 0x80, 0xa6, 0x3a, - 0x05, 0xa1, 0x2c, 0x3b, 0xb8, 0xc3, 0x81, 0x83, 0x79, 0x92, 0xe2, 0xe5, 0xb2, 0x61, 0x02, 0x2a, - 0x03, 0x45, 0xa6, 0x54, 0x31, 0x92, 0x0f, 0xa6, 0x4c, 0xd3, 0x01, 0x49, 0x20, 0x15, 0x0e, 0x6f, - 0x5b, 0x7c, 0x62, 0x0b, 0x6d, 0xe0, 0xa0, 0xa6, 0x2b, 0xcd, 0x14, 0x2f, 0x64, 0x65, 0x8a, 0x5b, - 0xa0, 0x77, 0x82, 0x36, 0xf6, 0x15, 0x8f, 0x40, 0xe4, 0x4c, 0xea, 0x08, 0x52, 0xe1, 0xef, 0xa1, - 0x7a, 0xd1, 0xb3, 0xe5, 0x75, 0xbd, 0xfe, 0xfa, 0xb0, 0x8d, 0x5d, 0x9f, 0x62, 0x28, 0x76, 0x43, - 0x71, 0x41, 0x1c, 0xd5, 0xcf, 0x2e, 0x3a, 0x95, 0xd8, 0x90, 0xfd, 0x00, 0xdd, 0x94, 0x2c, 0x61, - 0x69, 0xce, 0x64, 0xab, 0xda, 0xf5, 0xfa, 0x6b, 0xf1, 0x2a, 0xf6, 0xb7, 0x50, 0x43, 0x31, 0x31, - 0x63, 0xb2, 0x55, 0x33, 0x88, 0x8b, 0x7a, 0x2d, 0xb4, 0x55, 0x1e, 0x1d, 0x33, 0x35, 0x07, 0xa1, - 0x58, 0xef, 0x93, 0x87, 0x36, 0x7f, 0x43, 0xcf, 0xe2, 0x68, 0xb8, 0xeb, 0x3f, 0x44, 0xb7, 0x13, - 0x10, 0x5a, 0xd2, 0x44, 0x4f, 0xe8, 0x6c, 0x26, 0x99, 0x52, 0x46, 0xe2, 0x5a, 0xbc, 0x79, 0x99, - 0x7f, 0x6a, 0xd3, 0x7e, 0x84, 0x1a, 0x34, 0x83, 0x23, 0xa1, 0xad, 0x94, 0xd1, 0xe3, 0x42, 0xe8, - 0xb7, 0x8b, 0xce, 0x5d, 0x6b, 0x45, 0xcd, 0x0e, 0x71, 0x0a, 0x24, 0xa3, 0xfa, 0x00, 0x8f, 0x85, - 0xfe, 0xfc, 0x71, 0x07, 0x39, 0x8f, 0x63, 0xa1, 0x63, 0x57, 0x5a, 0x72, 0x54, 0xbb, 0xd2, 0x51, - 0xbd, 0xe4, 0xa8, 0x8d, 0x9a, 0x7f, 0xc9, 0xbe, 0xb4, 0x34, 0x7c, 0x57, 0x45, 0xb5, 0x7d, 0xc5, - 0xfd, 0xd7, 0x68, 0xfd, 0xcf, 0x65, 0x87, 0xb8, 0x7c, 0x17, 0xb8, 0xbc, 0x91, 0xe0, 0xc1, 0xf5, - 0xf8, 0x6a, 0x63, 0xdb, 0xa7, 0x5f, 0x7e, 0xbc, 0xaf, 0xde, 0xf7, 0x3b, 0xe4, 0x9f, 0x03, 0x24, - 0x89, 0xe5, 0x4f, 0xcc, 0x47, 0x9d, 0x7a, 0xe8, 0x56, 0x69, 0xaf, 0x9d, 0xab, 0x27, 0x18, 0x42, - 0xb0, 0xfd, 0x1f, 0xc2, 0x4a, 0x43, 0xdf, 0x68, 0xe8, 0xf9, 0xdd, 0x6b, 0x34, 0x98, 0x5c, 0x70, - 0xe3, 0xcd, 0xcf, 0x0f, 0x8f, 0xbc, 0xd1, 0xf8, 0x6c, 0x11, 0x7a, 0xe7, 0x8b, 0xd0, 0xfb, 0xbe, - 0x08, 0xbd, 0xb7, 0xcb, 0xb0, 0x72, 0xbe, 0x0c, 0x2b, 0x5f, 0x97, 0x61, 0xe5, 0x05, 0xe1, 0xa9, - 0x3e, 0x38, 0x9a, 0xe2, 0x04, 0x32, 0x12, 0x15, 0xcd, 0x76, 0x9e, 0x33, 0xfd, 0x0a, 0xe4, 0xa1, - 0x8d, 0x48, 0xfe, 0x84, 0x1c, 0xbb, 0xfe, 0xfa, 0x64, 0xce, 0xd4, 0xb4, 0x61, 0xae, 0x79, 0xef, - 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x86, 0x95, 0x6c, 0x80, 0x03, 0x00, 0x00, + // 535 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x41, 0x6f, 0xd3, 0x3c, + 0x18, 0x6e, 0xda, 0x7e, 0xd5, 0x37, 0x0f, 0x6d, 0x10, 0x6d, 0x6b, 0x1b, 0xa1, 0xb4, 0x54, 0xc0, + 0x4a, 0xd1, 0xec, 0xb5, 0x3b, 0x20, 0x71, 0xa3, 0x15, 0x87, 0x1e, 0xc6, 0x21, 0x47, 0x2e, 0x95, + 0x9b, 0x5a, 0x59, 0x34, 0xe2, 0xb7, 0x8a, 0xbd, 0x30, 0x2e, 0x08, 0xf5, 0xc8, 0x09, 0xc4, 0x0f, + 0xe0, 0x2f, 0xf4, 0xc0, 0x8f, 0xd8, 0x71, 0x82, 0x0b, 0x42, 0x68, 0x42, 0x2d, 0x52, 0xff, 0x06, + 0x8a, 0xed, 0x15, 0x52, 0xb4, 0x71, 0x89, 0xfc, 0x3e, 0xcf, 0xe3, 0xd7, 0xcf, 0xf3, 0xda, 0x41, + 0x65, 0x9f, 0x72, 0x09, 0x84, 0xc5, 0x7e, 0x67, 0x9f, 0x24, 0x6d, 0x22, 0x4f, 0xf1, 0x38, 0x06, + 0x09, 0xf6, 0x86, 0x22, 0xb0, 0x22, 0x70, 0xd2, 0x76, 0x6e, 0x07, 0x00, 0xc1, 0x0b, 0x46, 0xe8, + 0x38, 0x24, 0x94, 0x73, 0x90, 0x54, 0x86, 0xc0, 0x85, 0x56, 0x3b, 0x5b, 0x01, 0x04, 0xa0, 0x96, + 0x24, 0x5d, 0x19, 0xd4, 0xf5, 0x41, 0x44, 0x20, 0xc8, 0x90, 0x0a, 0x46, 0x92, 0xf6, 0x90, 0x49, + 0xda, 0x26, 0x3e, 0x84, 0xdc, 0xf0, 0x55, 0xcd, 0x0f, 0xf4, 0x46, 0x5d, 0x18, 0xaa, 0x6c, 0xb6, + 0x46, 0x22, 0x48, 0x6d, 0x45, 0x22, 0x30, 0xc4, 0x2d, 0x1a, 0x85, 0x1c, 0x88, 0xfa, 0x6a, 0xa8, + 0xf1, 0xd1, 0x42, 0x1b, 0x87, 0x22, 0xe8, 0x01, 0x4f, 0x58, 0x2c, 0x7b, 0x10, 0x72, 0xfb, 0x00, + 0x15, 0xd3, 0x73, 0x2a, 0x56, 0xdd, 0x6a, 0xae, 0x77, 0xaa, 0xd8, 0xf4, 0x4e, 0x8d, 0x60, 0x63, + 0x04, 0xa7, 0xc2, 0x6e, 0xf1, 0xec, 0xa2, 0x96, 0xf3, 0x94, 0xd8, 0x76, 0xd0, 0xff, 0x31, 0xf3, + 0x59, 0x98, 0xb0, 0xb8, 0x92, 0xaf, 0x5b, 0xcd, 0x35, 0x6f, 0x59, 0xdb, 0x3b, 0xa8, 0x24, 0x18, + 0x1f, 0xb1, 0xb8, 0x52, 0x50, 0x8c, 0xa9, 0x1e, 0xdf, 0x9d, 0x2c, 0xa6, 0x2d, 0x53, 0xbc, 0x5d, + 0x4c, 0x5b, 0x5b, 0x7a, 0x9e, 0x59, 0x3b, 0x8d, 0x0a, 0xda, 0xc9, 0x22, 0x1e, 0x13, 0x63, 0xe0, + 0x82, 0x35, 0xbe, 0x5b, 0x68, 0xf3, 0x37, 0xf5, 0xd4, 0xeb, 0x75, 0xf6, 0xed, 0x07, 0xe8, 0xa6, + 0x0f, 0x5c, 0xc6, 0xd4, 0x97, 0x03, 0x3a, 0x1a, 0xc5, 0x4c, 0x08, 0x15, 0x64, 0xcd, 0xdb, 0xbc, + 0xc4, 0x9f, 0x68, 0xd8, 0xee, 0xa1, 0x12, 0x8d, 0xe0, 0x84, 0x4b, 0x6d, 0xb8, 0xfb, 0x30, 0x8d, + 0xf3, 0xed, 0xa2, 0xb6, 0xad, 0x03, 0x8b, 0xd1, 0x31, 0x0e, 0x81, 0x44, 0x54, 0x1e, 0xe1, 0x3e, + 0x97, 0x9f, 0x3f, 0xed, 0x21, 0x33, 0x89, 0x3e, 0x97, 0x9e, 0xd9, 0x9a, 0xc9, 0x5d, 0xb8, 0x32, + 0x77, 0x31, 0x93, 0xfb, 0xde, 0x4a, 0xee, 0xed, 0xd5, 0xdc, 0x2a, 0x4a, 0xa3, 0x8a, 0xca, 0x2b, + 0xd0, 0x65, 0xf2, 0xce, 0xfb, 0x3c, 0x2a, 0x1c, 0x8a, 0xc0, 0x7e, 0x8d, 0xd6, 0xff, 0xbc, 0x39, + 0x17, 0x67, 0x1f, 0x1e, 0xce, 0x0e, 0xce, 0xb9, 0x7f, 0x3d, 0xbf, 0x1c, 0xec, 0xee, 0xe4, 0xcb, + 0xcf, 0x0f, 0xf9, 0x3b, 0x76, 0x8d, 0xfc, 0xf5, 0xc2, 0x89, 0xaf, 0xf5, 0x03, 0x75, 0xeb, 0x13, + 0x0b, 0xdd, 0xc8, 0x8c, 0xbf, 0x76, 0xf5, 0x09, 0x4a, 0xe0, 0xec, 0xfe, 0x43, 0xb0, 0xf4, 0xd0, + 0x54, 0x1e, 0x1a, 0x76, 0xfd, 0x1a, 0x0f, 0x0a, 0x73, 0xfe, 0x7b, 0xb3, 0x98, 0xb6, 0xac, 0x6e, + 0xff, 0x6c, 0xe6, 0x5a, 0xe7, 0x33, 0xd7, 0xfa, 0x31, 0x73, 0xad, 0x77, 0x73, 0x37, 0x77, 0x3e, + 0x77, 0x73, 0x5f, 0xe7, 0x6e, 0xee, 0x39, 0x09, 0x42, 0x79, 0x74, 0x32, 0xc4, 0x3e, 0x44, 0xa4, + 0x97, 0x36, 0xdb, 0x7b, 0xc6, 0xe4, 0x4b, 0x88, 0x8f, 0x75, 0x45, 0x92, 0x47, 0xe4, 0xd4, 0xf4, + 0x97, 0xaf, 0xc6, 0x4c, 0x0c, 0x4b, 0xea, 0xdf, 0x38, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xfa, + 0x7b, 0xc0, 0xc7, 0xe1, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From d684e3759f23bdb97301467212dc6b88b078c262 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 22 Dec 2023 15:58:08 +0900 Subject: [PATCH 19/96] revert: feat: msgs --- x/coinswap/types/msgs.go | 60 ++++++++++++++++++++++++++++++++++++++++ x/erc20/types/codec.go | 15 ++++++++++ x/erc20/types/msg.go | 34 +++++++++++++++++++++++ 3 files changed, 109 insertions(+) diff --git a/x/coinswap/types/msgs.go b/x/coinswap/types/msgs.go index 47132c02d..824366760 100644 --- a/x/coinswap/types/msgs.go +++ b/x/coinswap/types/msgs.go @@ -52,6 +52,12 @@ func NewMsgSwapOrder( } } +// Route implements Msg. +func (msg MsgSwapOrder) Route() string { return RouterKey } + +// Type implements Msg. +func (msg MsgSwapOrder) Type() string { return TypeMsgSwapOrder } + // ValidateBasic implements Msg. func (msg MsgSwapOrder) ValidateBasic() error { if err := ValidateInput(msg.Input); err != nil { @@ -69,6 +75,20 @@ func (msg MsgSwapOrder) ValidateBasic() error { return ValidateDeadline(msg.Deadline) } +// GetSignBytes implements Msg. +func (msg MsgSwapOrder) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners implements Msg. +func (msg MsgSwapOrder) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Input.Address) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} + /* --------------------------------------------------------------------------- */ // MsgAddLiquidity /* --------------------------------------------------------------------------- */ @@ -90,6 +110,12 @@ func NewMsgAddLiquidity( } } +// Route implements Msg. +func (msg MsgAddLiquidity) Route() string { return RouterKey } + +// Type implements Msg. +func (msg MsgAddLiquidity) Type() string { return TypeMsgAddLiquidity } + // ValidateBasic implements Msg. func (msg MsgAddLiquidity) ValidateBasic() error { if err := ValidateMaxToken(msg.MaxToken); err != nil { @@ -114,6 +140,20 @@ func (msg MsgAddLiquidity) ValidateBasic() error { return nil } +// GetSignBytes implements Msg. +func (msg MsgAddLiquidity) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners implements Msg. +func (msg MsgAddLiquidity) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} + /* --------------------------------------------------------------------------- */ // MsgRemoveLiquidity /* --------------------------------------------------------------------------- */ @@ -135,6 +175,12 @@ func NewMsgRemoveLiquidity( } } +// Route implements Msg. +func (msg MsgRemoveLiquidity) Route() string { return RouterKey } + +// Type implements Msg. +func (msg MsgRemoveLiquidity) Type() string { return TypeMsgRemoveLiquidity } + // ValidateBasic implements Msg. func (msg MsgRemoveLiquidity) ValidateBasic() error { if err := ValidateMinToken(msg.MinToken); err != nil { @@ -158,3 +204,17 @@ func (msg MsgRemoveLiquidity) ValidateBasic() error { } return nil } + +// GetSignBytes implements Msg. +func (msg MsgRemoveLiquidity) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) +} + +// GetSigners implements Msg. +func (msg MsgRemoveLiquidity) GetSigners() []sdk.AccAddress { + from, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + panic(err) + } + return []sdk.AccAddress{from} +} diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 3745bb730..665e66458 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -22,8 +22,15 @@ var ( AminoCdc = codec.NewAminoCodec(amino) ) +const ( + // Amino names + convertERC20Name = "canto/MsgConvertERC20" + convertCoinName = "canto/MsgConvertCoin" +) + // NOTE: This is required for the GetSignBytes function func init() { + RegisterLegacyAminoCodec(amino) amino.Seal() } @@ -43,3 +50,11 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } + +// RegisterLegacyAminoCodec registers the necessary x/erc20 interfaces and +// concrete types on the provided LegacyAmino codec. These types are used for +// Amino JSON serialization and EIP-712 compatibility. +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgConvertERC20{}, convertERC20Name, nil) + cdc.RegisterConcrete(&MsgConvertCoin{}, convertCoinName, nil) +} diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index 1a7b596e7..04a4abe92 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -29,6 +29,12 @@ func NewMsgConvertCoin(coin sdk.Coin, receiver common.Address, sender sdk.AccAdd } } +// Route should return the name of the module +func (msg MsgConvertCoin) Route() string { return RouterKey } + +// Type should return the action +func (msg MsgConvertCoin) Type() string { return TypeMsgConvertCoin } + // ValidateBasic runs stateless checks on the message func (msg MsgConvertCoin) ValidateBasic() error { if err := ValidateErc20Denom(msg.Coin.Denom); err != nil { @@ -50,6 +56,17 @@ func (msg MsgConvertCoin) ValidateBasic() error { return nil } +// GetSignBytes encodes the message for signing +func (msg MsgConvertCoin) GetSignBytes() []byte { + return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) +} + +// GetSigners defines whose signature is required +func (msg MsgConvertCoin) GetSigners() []sdk.AccAddress { + addr := sdk.MustAccAddressFromBech32(msg.Sender) + return []sdk.AccAddress{addr} +} + // NewMsgConvertERC20 creates a new instance of MsgConvertERC20 func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, sender common.Address) *MsgConvertERC20 { // nolint: interfacer return &MsgConvertERC20{ @@ -60,6 +77,12 @@ func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, s } } +// Route should return the name of the module +func (msg MsgConvertERC20) Route() string { return RouterKey } + +// Type should return the action +func (msg MsgConvertERC20) Type() string { return TypeMsgConvertERC20 } + // ValidateBasic runs stateless checks on the message func (msg MsgConvertERC20) ValidateBasic() error { if !common.IsHexAddress(msg.ContractAddress) { @@ -77,3 +100,14 @@ func (msg MsgConvertERC20) ValidateBasic() error { } return nil } + +// GetSignBytes encodes the message for signing +func (msg MsgConvertERC20) GetSignBytes() []byte { + return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) +} + +// GetSigners defines whose signature is required +func (msg MsgConvertERC20) GetSigners() []sdk.AccAddress { + addr := common.HexToAddress(msg.Sender) + return []sdk.AccAddress{addr.Bytes()} +} From 8076ae1faf2a104c2622dcf6a2a88c2bcff7c7a8 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Sat, 23 Dec 2023 00:04:08 +0900 Subject: [PATCH 20/96] test: fix integration test - remove deliver tx --- x/csr/keeper/integration_test.go | 8 +++-- x/csr/keeper/keeper_test.go | 54 +++++++++++++++++++++++------- x/erc20/keeper/integration_test.go | 26 ++++++++++---- 3 files changed, 66 insertions(+), 22 deletions(-) diff --git a/x/csr/keeper/integration_test.go b/x/csr/keeper/integration_test.go index d2593620a..e293793f0 100644 --- a/x/csr/keeper/integration_test.go +++ b/x/csr/keeper/integration_test.go @@ -125,7 +125,7 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { s.Require().NoError(err) // Register the smart contract - gasInfo, _, err := EVMTX(userKey, &contractAddress, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) + res, err := EVMTX(userKey, &contractAddress, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) s.Require().NoError(err) s.Commit() @@ -137,7 +137,11 @@ var _ = Describe("CSR Distribution : ", Ordered, func() { s.Require().True(found) // Calculate the expected revenue for the transaction - expectedFee := CalculateExpectedFee(uint64(gasInfo.GasUsed), gasPrice, csrShares).BigInt() + gasUsed := uint64(0) + for _, txResult := range res.TxResults { + gasUsed += uint64(txResult.GasUsed) + } + expectedFee := CalculateExpectedFee(gasUsed, gasPrice, csrShares).BigInt() revenueByNFT[1] = expectedFee // Check CSR obj values diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index de778c241..fe4535aa7 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -14,14 +14,15 @@ import ( "github.com/Canto-Network/Canto/v7/contracts" "github.com/Canto-Network/Canto/v7/x/csr/types" "github.com/cosmos/cosmos-sdk/baseapp" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" - "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/tests" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -265,10 +266,10 @@ func EVMTX( gasTipCap *big.Int, data []byte, accesses *ethtypes.AccessList, -) (sdk.GasInfo, *sdk.Result, error) { +) (*abci.ResponseFinalizeBlock, error) { msgEthereumTx := BuildEthTx(priv, to, amount, gasLimit, gasPrice, gasFeeCap, gasTipCap, data, accesses) - gasInfo, result, err := DeliverEthTx(priv, msgEthereumTx) - return gasInfo, result, err + result, err := FinalizeEthBlock(priv, msgEthereumTx) + return result, err } // Helper function that creates an ethereum transaction @@ -303,17 +304,44 @@ func BuildEthTx( return msgEthereumTx } -func DeliverEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) (sdk.GasInfo, *sdk.Result, error) { - ethTx := PrepareEthTx(priv, msgEthereumTx) - encodingConfig := encoding.MakeTestEncodingConfig() - txEncoder := encodingConfig.TxConfig.TxEncoder() - return s.app.BaseApp.SimDeliver(txEncoder, ethTx) +func FinalizeEthBlock(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) (*abci.ResponseFinalizeBlock, error) { + bz := PrepareEthTx(priv, msgEthereumTx) + res, err := s.app.BaseApp.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: s.app.LastBlockHeight() + 1, + Txs: [][]byte{bz}, + ProposerAddress: s.ctx.BlockHeader().ProposerAddress, + }) + return res, err } -func PrepareEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) *evmtypes.MsgEthereumTx { - // Sign transaction - err := msgEthereumTx.Sign(s.ethSigner, tests.NewSigner(priv)) +func PrepareEthTx(priv *ethsecp256k1.PrivKey, msgEthereumTx *evmtypes.MsgEthereumTx) []byte { + txConfig := s.app.TxConfig() + option, err := codectypes.NewAnyWithValue(&evmtypes.ExtensionOptionsEthereumTx{}) s.Require().NoError(err) - return msgEthereumTx + txBuilder := txConfig.NewTxBuilder() + builder, ok := txBuilder.(authtx.ExtensionOptionsTxBuilder) + s.Require().True(ok) + builder.SetExtensionOptions(option) + + err = msgEthereumTx.Sign(s.ethSigner, tests.NewSigner(priv)) + s.Require().NoError(err) + + msgEthereumTx.From = "" + err = txBuilder.SetMsgs(msgEthereumTx) + s.Require().NoError(err) + + txData, err := evmtypes.UnpackTxData(msgEthereumTx.Data) + s.Require().NoError(err) + + evmDenom := s.app.EvmKeeper.GetParams(s.ctx).EvmDenom + fees := sdk.Coins{{Denom: evmDenom, Amount: sdkmath.NewIntFromBigInt(txData.Fee())}} + builder.SetFeeAmount(fees) + builder.SetGasLimit(msgEthereumTx.GetGas()) + + // bz are bytes to be broadcasted over the network + bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) + s.Require().NoError(err) + + return bz } diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index d69a17ef0..e61559004 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -11,11 +11,13 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + abci "github.com/cometbft/cometbft/abci/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/evmos/ethermint/encoding" ethermint "github.com/evmos/ethermint/types" "github.com/Canto-Network/Canto/v7/testutil" + "github.com/Canto-Network/Canto/v7/x/erc20" "github.com/Canto-Network/Canto/v7/x/erc20/types" sdkmath "cosmossdk.io/math" @@ -223,20 +225,21 @@ func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { addrBz := priv.PubKey().Address().Bytes() convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) - _, result, err := deliverTx(priv, convertCoinMsg) - s.Require().NoError(err, result.Log) + _, err := finalizeBlock(priv, convertCoinMsg) + s.Require().NoError(err) } func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { addrBz := priv.PubKey().Address().Bytes() convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) - _, result, err := deliverTx(priv, convertERC20Msg) - s.Require().NoError(err, result.Log) + _, err := finalizeBlock(priv, convertERC20Msg) + s.Require().NoError(err) } -func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (sdk.GasInfo, *sdk.Result, error) { - encodingConfig := encoding.MakeTestEncodingConfig() +func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseFinalizeBlock, error) { + txConfig := s.app.TxConfig() + encodingConfig := encoding.MakeTestEncodingConfig(erc20.AppModule{}) accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom @@ -274,6 +277,7 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (sdk.GasInfo, *sdk.R ChainID: s.ctx.ChainID(), AccountNumber: accNumber, Sequence: seq, + PubKey: priv.PubKey(), } sigV2, err = tx.SignWithPrivKey( context.TODO(), @@ -287,7 +291,15 @@ func deliverTx(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (sdk.GasInfo, *sdk.R err = txBuilder.SetSignatures(sigsV2...) s.Require().NoError(err) - return s.app.BaseApp.SimDeliver(encodingConfig.TxConfig.TxEncoder(), txBuilder.GetTx()) + bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) + s.Require().NoError(err) + + res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: s.app.LastBlockHeight() + 1, + Txs: [][]byte{bz}, + }) + + return res, err //// bz are bytes to be broadcasted over the network //bz, err := encodingConfig.TxConfig.TxEncoder()(txBuilder.GetTx()) //s.Require().NoError(err) From 4f9b600d42cc972b0980535d05357fee42b5e3df Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 3 Jan 2024 12:52:33 +0900 Subject: [PATCH 21/96] wip: error fix in Canto modules --- ibc/testing/app.go | 4 +- ibc/testing/simapp/README.md | 47 + ibc/testing/simapp/ante.go | 56 ++ ibc/testing/simapp/app.go | 1049 +++++++++++++++++++++++ ibc/testing/simapp/export.go | 252 ++++++ ibc/testing/simapp/genesis.go | 14 + ibc/testing/simapp/genesis_account.go | 47 + ibc/testing/simapp/params/amino.go | 27 + ibc/testing/simapp/params/doc.go | 19 + ibc/testing/simapp/params/encoding.go | 16 + ibc/testing/simapp/params/params.go | 7 + ibc/testing/simapp/params/proto.go | 27 + ibc/testing/simapp/params/weights.go | 28 + ibc/testing/simapp/simd/cmd/cmd_test.go | 25 + ibc/testing/simapp/simd/cmd/root.go | 372 ++++++++ ibc/testing/simapp/simd/main.go | 20 + ibc/testing/simapp/test_helpers.go | 136 +++ ibc/testing/simapp/upgrades.go | 90 ++ ibc/testing/simapp/upgrades/upgrades.go | 116 +++ 19 files changed, 2350 insertions(+), 2 deletions(-) create mode 100644 ibc/testing/simapp/README.md create mode 100644 ibc/testing/simapp/ante.go create mode 100644 ibc/testing/simapp/app.go create mode 100644 ibc/testing/simapp/export.go create mode 100644 ibc/testing/simapp/genesis.go create mode 100644 ibc/testing/simapp/genesis_account.go create mode 100644 ibc/testing/simapp/params/amino.go create mode 100644 ibc/testing/simapp/params/doc.go create mode 100644 ibc/testing/simapp/params/encoding.go create mode 100644 ibc/testing/simapp/params/params.go create mode 100644 ibc/testing/simapp/params/proto.go create mode 100644 ibc/testing/simapp/params/weights.go create mode 100644 ibc/testing/simapp/simd/cmd/cmd_test.go create mode 100644 ibc/testing/simapp/simd/cmd/root.go create mode 100644 ibc/testing/simapp/simd/main.go create mode 100644 ibc/testing/simapp/test_helpers.go create mode 100644 ibc/testing/simapp/upgrades.go create mode 100644 ibc/testing/simapp/upgrades/upgrades.go diff --git a/ibc/testing/app.go b/ibc/testing/app.go index 0105eb38b..f9549eec5 100644 --- a/ibc/testing/app.go +++ b/ibc/testing/app.go @@ -23,8 +23,8 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + "github.com/Canto-Network/Canto/v7/ibc/testing/simapp" "github.com/cosmos/ibc-go/v8/modules/core/keeper" - "github.com/cosmos/ibc-go/v8/testing/simapp" ibctestingtypes "github.com/cosmos/ibc-go/v8/testing/types" ethermint "github.com/evmos/ethermint/types" @@ -108,7 +108,7 @@ func SetupWithGenesisValSet(tb testing.TB, valSet *tmtypes.ValidatorSet, genAccs } validators = append(validators, validator) - delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), val.Address.String(), sdkmath.LegacyOneDec())) + delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String(), sdkmath.LegacyOneDec())) } // set validators and delegations diff --git a/ibc/testing/simapp/README.md b/ibc/testing/simapp/README.md new file mode 100644 index 000000000..a3488dc0d --- /dev/null +++ b/ibc/testing/simapp/README.md @@ -0,0 +1,47 @@ +# simapp + +simapp is an application built using the Cosmos SDK for testing and educational purposes. + +## Running testnets with `simd` + +If you want to spin up a quick testnet with your friends, you can follow these steps. +Unless otherwise noted, every step must be done by everyone who wants to participate +in this testnet. + +1. `$ make build`. This will build the `simd` binary and install it in your Cosmos SDK repo, + inside a new `build` directory. The following instructions are run from inside + that directory. +2. If you've run `simd` before, you may need to reset your database before starting a new + testnet: `$ ./simd unsafe-reset-all` +3. `$ ./simd init [moniker]`. This will initialize a new working directory, by default at + `~/.simapp`. You need a provide a "moniker," but it doesn't matter what it is. +4. `$ ./simd keys add [key_name]`. This will create a new key, with a name of your choosing. + Save the output of this command somewhere; you'll need the address generated here later. +5. `$ ./simd add-genesis-account $(simd keys show [key_name] -a) [amount]`, where `key_name` + is the same key name as before; and `amount` is something like `10000000000000000000000000stake`. +6. `$ ./simd gentx [key_name] [amount] --chain-id [chain-id]`. This will create the + genesis transaction for your new chain. +7. Now, one person needs to create the genesis file `genesis.json` using the genesis transactions + from every participant, by gathering all the genesis transactions under `config/gentx` and then + calling `./simd collect-gentxs`. This will create a new `genesis.json` file that includes data + from all the validators (we sometimes call it the "super genesis file" to distinguish it from + single-validator genesis files). +8. Once you've received the super genesis file, overwrite your original `genesis.json` file with + the new super `genesis.json`. +9. Modify your `config/config.toml` (in the simapp working directory) to include the other participants as + persistent peers: + + ```text + # Comma separated list of nodes to keep persistent connections to + persistent_peers = "[validator address]@[ip address]:[port],[validator address]@[ip address]:[port]" + ``` + + You can find `validator address` by running `./simd tendermint show-node-id`. (It will be hex-encoded.) + By default, `port` is 26656. +10. Now you can start your nodes: `$ ./simd start`. + +Now you have a small testnet that you can use to try out changes to the Cosmos SDK or Tendermint! + +NOTE: Sometimes creating the network through the `collect-gentxs` will fail, and validators will start +in a funny state (and then panic). If this happens, you can try to create and start the network first +with a single validator and then add additional validators using a `create-validator` transaction. diff --git a/ibc/testing/simapp/ante.go b/ibc/testing/simapp/ante.go new file mode 100644 index 000000000..c64ad04d6 --- /dev/null +++ b/ibc/testing/simapp/ante.go @@ -0,0 +1,56 @@ +package simapp + +import ( + "errors" + + circuitante "cosmossdk.io/x/circuit/ante" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + + ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" + "github.com/cosmos/ibc-go/v8/modules/core/keeper" +) + +// HandlerOptions are the options required for constructing a default SDK AnteHandler. +type HandlerOptions struct { + ante.HandlerOptions + CircuitKeeper circuitante.CircuitBreaker + IBCKeeper *keeper.Keeper +} + +// NewAnteHandler returns an AnteHandler that checks and increments sequence +// numbers, checks signatures & account numbers, and deducts fees from the first +// signer. +func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { + if options.AccountKeeper == nil { + return nil, errors.New("account keeper is required for ante builder") + } + + if options.BankKeeper == nil { + return nil, errors.New("bank keeper is required for ante builder") + } + + if options.SignModeHandler == nil { + return nil, errors.New("sign mode handler is required for ante builder") + } + + anteDecorators := []sdk.AnteDecorator{ + ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first + circuitante.NewCircuitBreakerDecorator(options.CircuitKeeper), + ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), + ante.NewValidateBasicDecorator(), + ante.NewTxTimeoutHeightDecorator(), + ante.NewValidateMemoDecorator(options.AccountKeeper), + ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators + ante.NewValidateSigCountDecorator(options.AccountKeeper), + ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), + ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), + ante.NewIncrementSequenceDecorator(options.AccountKeeper), + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), + } + + return sdk.ChainAnteDecorators(anteDecorators...), nil +} diff --git a/ibc/testing/simapp/app.go b/ibc/testing/simapp/app.go new file mode 100644 index 000000000..5a329c5a0 --- /dev/null +++ b/ibc/testing/simapp/app.go @@ -0,0 +1,1049 @@ +package simapp + +import ( + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/gogoproto/proto" + "github.com/spf13/cast" + + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" + "cosmossdk.io/client/v2/autocli" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/circuit" + circuitkeeper "cosmossdk.io/x/circuit/keeper" + circuittypes "cosmossdk.io/x/circuit/types" + "cosmossdk.io/x/evidence" + evidencekeeper "cosmossdk.io/x/evidence/keeper" + evidencetypes "cosmossdk.io/x/evidence/types" + "cosmossdk.io/x/feegrant" + feegrantkeeper "cosmossdk.io/x/feegrant/keeper" + feegrantmodule "cosmossdk.io/x/feegrant/module" + "cosmossdk.io/x/tx/signing" + "cosmossdk.io/x/upgrade" + upgradekeeper "cosmossdk.io/x/upgrade/keeper" + upgradetypes "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" + nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" + "github.com/cosmos/cosmos-sdk/server" + "github.com/cosmos/cosmos-sdk/server/api" + "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/std" + "github.com/cosmos/cosmos-sdk/testutil/testdata/testpb" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/types/msgservice" + "github.com/cosmos/cosmos-sdk/version" + "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + "github.com/cosmos/cosmos-sdk/x/auth/posthandler" + authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/auth/vesting" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + "github.com/cosmos/cosmos-sdk/x/authz" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" + "github.com/cosmos/cosmos-sdk/x/bank" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + consensus "github.com/cosmos/cosmos-sdk/x/consensus" + consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + distr "github.com/cosmos/cosmos-sdk/x/distribution" + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/cosmos/cosmos-sdk/x/gov" + govclient "github.com/cosmos/cosmos-sdk/x/gov/client" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/cosmos-sdk/x/group" + groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" + groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" + "github.com/cosmos/cosmos-sdk/x/mint" + mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + "github.com/cosmos/cosmos-sdk/x/params" + paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + "github.com/cosmos/cosmos-sdk/x/slashing" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/cosmos/ibc-go/modules/capability" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" + icacontroller "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller" + icacontrollerkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/keeper" + icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types" + icahost "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" + icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" + ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee" + ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" + ibcfeetypes "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types" + transfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v8/modules/core" + ibcclient "github.com/cosmos/ibc-go/v8/modules/core/02-client" + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + solomachine "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + ibcmock "github.com/cosmos/ibc-go/v8/testing/mock" + ibctestingtypes "github.com/cosmos/ibc-go/v8/testing/types" +) + +const appName = "SimApp" + +// IBC application testing ports +const ( + MockFeePort string = ibcmock.ModuleName + ibcfeetypes.ModuleName +) + +var ( + // DefaultNodeHome default home directories for the application daemon + DefaultNodeHome string + + // module account permissions + maccPerms = map[string][]string{ + authtypes.FeeCollectorName: nil, + distrtypes.ModuleName: nil, + minttypes.ModuleName: {authtypes.Minter}, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + govtypes.ModuleName: {authtypes.Burner}, + ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + ibcfeetypes.ModuleName: nil, + icatypes.ModuleName: nil, + ibcmock.ModuleName: nil, + } +) + +var ( + _ runtime.AppI = (*SimApp)(nil) + _ servertypes.Application = (*SimApp)(nil) +) + +// SimApp extends an ABCI application, but with most of its parameters exported. +// They are exported for convenience in creating helper functions, as object +// capabilities aren't needed for testing. +type SimApp struct { + *baseapp.BaseApp + legacyAmino *codec.LegacyAmino + appCodec codec.Codec + txConfig client.TxConfig + interfaceRegistry types.InterfaceRegistry + + // keys to access the substores + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + memKeys map[string]*storetypes.MemoryStoreKey + + // keepers + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + CapabilityKeeper *capabilitykeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + MintKeeper mintkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + CrisisKeeper *crisiskeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + AuthzKeeper authzkeeper.Keeper + IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly + IBCFeeKeeper ibcfeekeeper.Keeper + ICAControllerKeeper icacontrollerkeeper.Keeper + ICAHostKeeper icahostkeeper.Keeper + EvidenceKeeper evidencekeeper.Keeper + TransferKeeper ibctransferkeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + GroupKeeper groupkeeper.Keeper + ConsensusParamsKeeper consensusparamkeeper.Keeper + CircuitKeeper circuitkeeper.Keeper + + // make scoped keepers public for test purposes + ScopedIBCKeeper capabilitykeeper.ScopedKeeper + ScopedTransferKeeper capabilitykeeper.ScopedKeeper + ScopedFeeMockKeeper capabilitykeeper.ScopedKeeper + ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper + ScopedICAHostKeeper capabilitykeeper.ScopedKeeper + ScopedIBCMockKeeper capabilitykeeper.ScopedKeeper + ScopedICAMockKeeper capabilitykeeper.ScopedKeeper + + // make IBC modules public for test purposes + // these modules are never directly routed to by the IBC Router + ICAAuthModule ibcmock.IBCModule + FeeMockModule ibcmock.IBCModule + + // the module manager + ModuleManager *module.Manager + BasicModuleManager module.BasicManager + + // simulation manager + simulationManager *module.SimulationManager + + // module configurator + configurator module.Configurator +} + +func init() { + userHomeDir, err := os.UserHomeDir() + if err != nil { + panic(err) + } + + DefaultNodeHome = filepath.Join(userHomeDir, ".simapp") +} + +// NewSimApp returns a reference to an initialized SimApp. +func NewSimApp( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), +) *SimApp { + interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ + ProtoFiles: proto.HybridResolver, + SigningOptions: signing.Options{ + AddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(), + }, + ValidatorAddressCodec: address.Bech32Codec{ + Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(), + }, + }, + }) + appCodec := codec.NewProtoCodec(interfaceRegistry) + legacyAmino := codec.NewLegacyAmino() + txConfig := authtx.NewTxConfig(appCodec, authtx.DefaultSignModes) + + std.RegisterLegacyAminoCodec(legacyAmino) + std.RegisterInterfaces(interfaceRegistry) + + // Below we could construct and set an application specific mempool and + // ABCI 1.0 PrepareProposal and ProcessProposal handlers. These defaults are + // already set in the SDK's BaseApp, this shows an example of how to override + // them. + // + // Example: + // + // bApp := baseapp.NewBaseApp(...) + // nonceMempool := mempool.NewSenderNonceMempool() + // abciPropHandler := NewDefaultProposalHandler(nonceMempool, bApp) + // + // bApp.SetMempool(nonceMempool) + // bApp.SetPrepareProposal(abciPropHandler.PrepareProposalHandler()) + // bApp.SetProcessProposal(abciPropHandler.ProcessProposalHandler()) + // + // Alternatively, you can construct BaseApp options, append those to + // baseAppOptions and pass them to NewBaseApp. + // + // Example: + // + // prepareOpt = func(app *baseapp.BaseApp) { + // abciPropHandler := baseapp.NewDefaultProposalHandler(nonceMempool, app) + // app.SetPrepareProposal(abciPropHandler.PrepareProposalHandler()) + // } + // baseAppOptions = append(baseAppOptions, prepareOpt) + + bApp := baseapp.NewBaseApp(appName, logger, db, txConfig.TxDecoder(), baseAppOptions...) + bApp.SetCommitMultiStoreTracer(traceStore) + bApp.SetVersion(version.Version) + bApp.SetInterfaceRegistry(interfaceRegistry) + bApp.SetTxEncoder(txConfig.TxEncoder()) + + keys := storetypes.NewKVStoreKeys( + authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, + minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, + govtypes.StoreKey, group.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, + evidencetypes.StoreKey, ibctransfertypes.StoreKey, icacontrollertypes.StoreKey, icahosttypes.StoreKey, capabilitytypes.StoreKey, + authzkeeper.StoreKey, ibcfeetypes.StoreKey, consensusparamtypes.StoreKey, circuittypes.StoreKey, + ) + + // register streaming services + if err := bApp.RegisterStreamingServices(appOpts, keys); err != nil { + panic(err) + } + + tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) + memKeys := storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey, ibcmock.MemStoreKey) + + app := &SimApp{ + BaseApp: bApp, + legacyAmino: legacyAmino, + appCodec: appCodec, + txConfig: txConfig, + interfaceRegistry: interfaceRegistry, + keys: keys, + tkeys: tkeys, + memKeys: memKeys, + } + + app.ParamsKeeper = initParamsKeeper(appCodec, legacyAmino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) + + // set the BaseApp's parameter store + app.ConsensusParamsKeeper = consensusparamkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[consensusparamtypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), runtime.EventService{}) + bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore) + + // add capability keeper and ScopeToModule for ibc module + app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) + + scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) + scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) + scopedICAControllerKeeper := app.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName) + scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) + + // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do + // not replicate if you do not need to test core IBC or light clients. + scopedIBCMockKeeper := app.CapabilityKeeper.ScopeToModule(ibcmock.ModuleName) + scopedFeeMockKeeper := app.CapabilityKeeper.ScopeToModule(MockFeePort) + scopedICAMockKeeper := app.CapabilityKeeper.ScopeToModule(ibcmock.ModuleName + icacontrollertypes.SubModuleName) + + // seal capability keeper after scoping modules + // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating + // their scoped modules in `NewApp` with `ScopeToModule` + app.CapabilityKeeper.Seal() + + // SDK module keepers + + // add keepers + app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()), sdk.GetConfig().GetBech32AccountAddrPrefix(), authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + app.BankKeeper = bankkeeper.NewBaseKeeper( + appCodec, + runtime.NewKVStoreService(keys[banktypes.StoreKey]), + app.AccountKeeper, + BlockedAddresses(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + logger, + ) + app.StakingKeeper = stakingkeeper.NewKeeper( + appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), + ) + app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + app.DistrKeeper = distrkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, app.StakingKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + app.SlashingKeeper = slashingkeeper.NewKeeper( + appCodec, legacyAmino, runtime.NewKVStoreService(keys[slashingtypes.StoreKey]), app.StakingKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)) + app.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[crisistypes.StoreKey]), invCheckPeriod, + app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec()) + + app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[feegrant.StoreKey]), app.AccountKeeper) + + // register the staking hooks + // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks + app.StakingKeeper.SetHooks( + stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), + ) + + app.CircuitKeeper = circuitkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[circuittypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec()) + app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper) + + app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper) + + groupConfig := group.DefaultConfig() + /* + Example of setting group params: + groupConfig.MaxMetadataLen = 1000 + */ + app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig) + + // get skipUpgradeHeights from the app options + skipUpgradeHeights := map[int64]bool{} + for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { + skipUpgradeHeights[int64(h)] = true + } + homePath := cast.ToString(appOpts.Get(flags.FlagHome)) + // set the governance module account as the authority for conducting upgrades + app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, runtime.NewKVStoreService(keys[upgradetypes.StoreKey]), appCodec, homePath, app.BaseApp, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + app.IBCKeeper = ibckeeper.NewKeeper( + appCodec, keys[ibcexported.StoreKey], app.GetSubspace(ibcexported.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + // Register the proposal types + // Deprecated: Avoid adding new handlers, instead use the new proposal flow + // by granting the governance module the right to execute the message. + // See: https://docs.cosmos.network/main/modules/gov#proposal-messages + govRouter := govv1beta1.NewRouter() + govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). + AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). + AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) + govConfig := govtypes.DefaultConfig() + /* + Example of setting gov params: + govConfig.MaxMetadataLen = 10000 + */ + govKeeper := govkeeper.NewKeeper( + appCodec, runtime.NewKVStoreService(keys[govtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, + app.StakingKeeper, app.DistrKeeper, app.MsgServiceRouter(), govConfig, authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // Set legacy router for backwards compatibility with gov v1beta1 + govKeeper.SetLegacyRouter(govRouter) + + app.GovKeeper = *govKeeper.SetHooks( + govtypes.NewMultiGovHooks( + // register the governance hooks + ), + ) + + // IBC Fee Module keeper + app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( + appCodec, keys[ibcfeetypes.StoreKey], + app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, + ) + + // ICA Controller keeper + app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( + appCodec, keys[icacontrollertypes.StoreKey], app.GetSubspace(icacontrollertypes.SubModuleName), + app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, + scopedICAControllerKeeper, app.MsgServiceRouter(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // ICA Host keeper + app.ICAHostKeeper = icahostkeeper.NewKeeper( + appCodec, keys[icahosttypes.StoreKey], app.GetSubspace(icahosttypes.SubModuleName), + app.IBCFeeKeeper, // use ics29 fee as ics4Wrapper in middleware stack + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, + app.AccountKeeper, scopedICAHostKeeper, app.MsgServiceRouter(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // Create IBC Router + ibcRouter := porttypes.NewRouter() + + // Middleware Stacks + + // Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper + // since fee middleware will wrap the IBCKeeper for underlying application. + app.TransferKeeper = ibctransferkeeper.NewKeeper( + appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), + app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, + app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + + // Mock Module Stack + + // Mock Module setup for testing IBC and also acts as the interchain accounts authentication module + // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do + // not replicate if you do not need to test core IBC or light clients. + mockModule := ibcmock.NewAppModule(app.IBCKeeper.PortKeeper) + + // The mock module is used for testing IBC + mockIBCModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(ibcmock.ModuleName, scopedIBCMockKeeper)) + ibcRouter.AddRoute(ibcmock.ModuleName, mockIBCModule) + + // Create Transfer Stack + // SendPacket, since it is originating from the application to core IBC: + // transferKeeper.SendPacket -> fee.SendPacket -> channel.SendPacket + + // RecvPacket, message that originates from core IBC and goes down to app, the flow is the other way + // channel.RecvPacket -> fee.OnRecvPacket -> transfer.OnRecvPacket + + // transfer stack contains (from top to bottom): + // - IBC Fee Middleware + // - Transfer + + // create IBC module from bottom to top of stack + var transferStack porttypes.IBCModule + transferStack = transfer.NewIBCModule(app.TransferKeeper) + transferStack = ibcfee.NewIBCMiddleware(transferStack, app.IBCFeeKeeper) + + // Add transfer stack to IBC Router + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) + + // Create Interchain Accounts Stack + // SendPacket, since it is originating from the application to core IBC: + // icaControllerKeeper.SendTx -> fee.SendPacket -> channel.SendPacket + + // initialize ICA module with mock module as the authentication module on the controller side + var icaControllerStack porttypes.IBCModule + icaControllerStack = ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp("", scopedICAMockKeeper)) + app.ICAAuthModule = icaControllerStack.(ibcmock.IBCModule) + icaControllerStack = icacontroller.NewIBCMiddleware(icaControllerStack, app.ICAControllerKeeper) + icaControllerStack = ibcfee.NewIBCMiddleware(icaControllerStack, app.IBCFeeKeeper) + + // RecvPacket, message that originates from core IBC and goes down to app, the flow is: + // channel.RecvPacket -> fee.OnRecvPacket -> icaHost.OnRecvPacket + + var icaHostStack porttypes.IBCModule + icaHostStack = icahost.NewIBCModule(app.ICAHostKeeper) + icaHostStack = ibcfee.NewIBCMiddleware(icaHostStack, app.IBCFeeKeeper) + + // Add host, controller & ica auth modules to IBC router + ibcRouter. + // the ICA Controller middleware needs to be explicitly added to the IBC Router because the + // ICA controller module owns the port capability for ICA. The ICA authentication module + // owns the channel capability. + AddRoute(icacontrollertypes.SubModuleName, icaControllerStack). + AddRoute(icahosttypes.SubModuleName, icaHostStack). + AddRoute(ibcmock.ModuleName+icacontrollertypes.SubModuleName, icaControllerStack) // ica with mock auth module stack route to ica (top level of middleware stack) + + // Create Mock IBC Fee module stack for testing + // SendPacket, mock module cannot send packets + + // OnRecvPacket, message that originates from core IBC and goes down to app, the flow is the otherway + // channel.RecvPacket -> fee.OnRecvPacket -> mockModule.OnRecvPacket + + // OnAcknowledgementPacket as this is where fee's are paid out + // mockModule.OnAcknowledgementPacket -> fee.OnAcknowledgementPacket -> channel.OnAcknowledgementPacket + + // create fee wrapped mock module + feeMockModule := ibcmock.NewIBCModule(&mockModule, ibcmock.NewIBCApp(MockFeePort, scopedFeeMockKeeper)) + app.FeeMockModule = feeMockModule + feeWithMockModule := ibcfee.NewIBCMiddleware(feeMockModule, app.IBCFeeKeeper) + ibcRouter.AddRoute(MockFeePort, feeWithMockModule) + + // Seal the IBC Router + app.IBCKeeper.SetRouter(ibcRouter) + + // create evidence keeper with router + evidenceKeeper := evidencekeeper.NewKeeper( + appCodec, runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper.AddressCodec(), runtime.ProvideCometInfoService(), + ) + // If evidence needs to be handled for the app, set routes in router here and seal + app.EvidenceKeeper = *evidenceKeeper + + // **** Module Options **** + + // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment + // we prefer to be more strict in what arguments the modules expect. + skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) + + // NOTE: Any module instantiated in the module manager that is later modified + // must be passed by reference here. + app.ModuleManager = module.NewManager( + genutil.NewAppModule( + app.AccountKeeper, app.StakingKeeper, app, + txConfig, + ), + auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), + bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), + capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), + feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), + gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), + mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), + slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), + distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), + staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), + upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()), + evidence.NewAppModule(app.EvidenceKeeper), + params.NewAppModule(app.ParamsKeeper), + authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), + consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), + circuit.NewAppModule(appCodec, app.CircuitKeeper), + + // IBC modules + ibc.NewAppModule(app.IBCKeeper), + transfer.NewAppModule(app.TransferKeeper), + ibcfee.NewAppModule(app.IBCFeeKeeper), + ica.NewAppModule(&app.ICAControllerKeeper, &app.ICAHostKeeper), + ibctm.NewAppModule(), + solomachine.NewAppModule(), + mockModule, + ) + + // BasicModuleManager defines the module BasicManager is in charge of setting up basic, + // non-dependant module elements, such as codec registration and genesis verification. + // By default it is composed of all the module from the module manager. + // Additionally, app module basics can be overwritten by passing them as argument. + app.BasicModuleManager = module.NewBasicManagerFromManager( + app.ModuleManager, + map[string]module.AppModuleBasic{ + genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + govtypes.ModuleName: gov.NewAppModuleBasic( + []govclient.ProposalHandler{ + paramsclient.ProposalHandler, + }, + ), + }) + app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino) + app.BasicModuleManager.RegisterInterfaces(interfaceRegistry) + + // NOTE: upgrade module is required to be prioritized + app.ModuleManager.SetOrderPreBlockers( + upgradetypes.ModuleName, + ) + + // During begin block slashing happens after distr.BeginBlocker so that + // there is nothing left over in the validator fee pool, so as to keep the + // CanWithdrawInvariant invariant. + // NOTE: staking module is required if HistoricalEntries param > 0 + // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) + app.ModuleManager.SetOrderBeginBlockers( + capabilitytypes.ModuleName, + minttypes.ModuleName, + distrtypes.ModuleName, + slashingtypes.ModuleName, + evidencetypes.ModuleName, + stakingtypes.ModuleName, + ibcexported.ModuleName, + ibctransfertypes.ModuleName, + genutiltypes.ModuleName, + authz.ModuleName, + icatypes.ModuleName, + ibcfeetypes.ModuleName, + ibcmock.ModuleName, + ) + app.ModuleManager.SetOrderEndBlockers( + crisistypes.ModuleName, + govtypes.ModuleName, + stakingtypes.ModuleName, + ibcexported.ModuleName, + ibctransfertypes.ModuleName, + capabilitytypes.ModuleName, + genutiltypes.ModuleName, + feegrant.ModuleName, + icatypes.ModuleName, + ibcfeetypes.ModuleName, + ibcmock.ModuleName, + group.ModuleName, + ) + + // NOTE: The genutils module must occur after staking so that pools are + // properly initialized with tokens from genesis accounts. + // NOTE: The genutils module must also occur after auth so that it can access the params from auth. + // NOTE: Capability module must occur first so that it can initialize any capabilities + // so that other modules that want to create or claim capabilities afterwards in InitChain + // can do so safely. + genesisModuleOrder := []string{ + capabilitytypes.ModuleName, + authtypes.ModuleName, + banktypes.ModuleName, distrtypes.ModuleName, stakingtypes.ModuleName, + slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, + ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, ibctransfertypes.ModuleName, + icatypes.ModuleName, ibcfeetypes.ModuleName, ibcmock.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, + vestingtypes.ModuleName, group.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, + } + app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...) + app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...) + + // Uncomment if you want to set a custom migration order here. + // app.ModuleManager.SetOrderMigrations(custom order) + + app.ModuleManager.RegisterInvariants(app.CrisisKeeper) + app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) + err := app.ModuleManager.RegisterServices(app.configurator) + if err != nil { + panic(err) + } + + // registerUpgradeHandlers is used for registering any on-chain upgrades. + // Make sure it's called after `app.ModuleManager` and `app.configurator` are set. + app.registerUpgradeHandlers() + + autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) + + reflectionSvc, err := runtimeservices.NewReflectionService() + if err != nil { + panic(err) + } + reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc) + + // add test gRPC service for testing gRPC queries in isolation + testpb.RegisterQueryServer(app.GRPCQueryRouter(), testpb.QueryImpl{}) + + // create the simulation manager and define the order of the modules for deterministic simulations + // + // NOTE: this is not required apps that don't use the simulator for fuzz testing + // transactions + overrideModules := map[string]module.AppModuleSimulation{ + authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + } + app.simulationManager = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules) + + app.simulationManager.RegisterStoreDecoders() + + // initialize stores + app.MountKVStores(keys) + app.MountTransientStores(tkeys) + app.MountMemoryStores(memKeys) + + // initialize BaseApp + app.SetInitChainer(app.InitChainer) + app.SetPreBlocker(app.PreBlocker) + app.SetBeginBlocker(app.BeginBlocker) + app.SetEndBlocker(app.EndBlocker) + app.setAnteHandler(txConfig) + + // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like + // antehandlers, but are run _after_ the `runMsgs` execution. They are also + // defined as a chain, and have the same signature as antehandlers. + // + // In baseapp, postHandlers are run in the same store branch as `runMsgs`, + // meaning that both `runMsgs` and `postHandler` state will be committed if + // both are successful, and both will be reverted if any of the two fails. + // + // The SDK exposes a default postHandlers chain, which comprises of only + // one decorator: the Transaction Tips decorator. However, some chains do + // not need it by default, so feel free to comment the next line if you do + // not need tips. + // To read more about tips: + // https://docs.cosmos.network/main/core/tips.html + // + // Please note that changing any of the anteHandler or postHandler chain is + // likely to be a state-machine breaking change, which needs a coordinated + // upgrade. + app.setPostHandler() + + // At startup, after all modules have been registered, check that all proto + // annotations are correct. + protoFiles, err := proto.MergedRegistry() + if err != nil { + panic(err) + } + err = msgservice.ValidateProtoAnnotations(protoFiles) + if err != nil { + // Once we switch to using protoreflect-based antehandlers, we might + // want to panic here instead of logging a warning. + _, err := fmt.Fprintln(os.Stderr, err.Error()) + if err != nil { + fmt.Println("could not write to stderr") + } + } + + if loadLatest { + if err := app.LoadLatestVersion(); err != nil { + panic(fmt.Errorf("error loading last version: %w", err)) + } + } + + app.ScopedIBCKeeper = scopedIBCKeeper + app.ScopedTransferKeeper = scopedTransferKeeper + app.ScopedICAControllerKeeper = scopedICAControllerKeeper + app.ScopedICAHostKeeper = scopedICAHostKeeper + + // NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do + // note replicate if you do not need to test core IBC or light clients. + app.ScopedIBCMockKeeper = scopedIBCMockKeeper + app.ScopedICAMockKeeper = scopedICAMockKeeper + app.ScopedFeeMockKeeper = scopedFeeMockKeeper + + return app +} + +func (app *SimApp) setAnteHandler(txConfig client.TxConfig) { + anteHandler, err := NewAnteHandler( + HandlerOptions{ + ante.HandlerOptions{ + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + SignModeHandler: txConfig.SignModeHandler(), + FeegrantKeeper: app.FeeGrantKeeper, + SigGasConsumer: ante.DefaultSigVerificationGasConsumer, + }, + &app.CircuitKeeper, + app.IBCKeeper, + }, + ) + if err != nil { + panic(err) + } + + // Set the AnteHandler for the app + app.SetAnteHandler(anteHandler) +} + +func (app *SimApp) setPostHandler() { + postHandler, err := posthandler.NewPostHandler( + posthandler.HandlerOptions{}, + ) + if err != nil { + panic(err) + } + + app.SetPostHandler(postHandler) +} + +// Name returns the name of the App +func (app *SimApp) Name() string { return app.BaseApp.Name() } + +// PreBlocker application updates every pre block +func (app *SimApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) { + return app.ModuleManager.PreBlock(ctx) +} + +// BeginBlocker application updates every begin block +func (app *SimApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) { + return app.ModuleManager.BeginBlock(ctx) +} + +// EndBlocker application updates every end block +func (app *SimApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { + return app.ModuleManager.EndBlock(ctx) +} + +// Configurator returns the configurator for the app +func (app *SimApp) Configurator() module.Configurator { + return app.configurator +} + +// InitChainer application update at chain initialization +func (app *SimApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { + var genesisState GenesisState + if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { + panic(err) + } + if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap()); err != nil { + panic(err) + } + return app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState) +} + +// LoadHeight loads a particular height +func (app *SimApp) LoadHeight(height int64) error { + return app.LoadVersion(height) +} + +// LegacyAmino returns SimApp's amino codec. +// +// NOTE: This is solely to be used for testing purposes as it may be desirable +// for modules to register their own custom testing types. +func (app *SimApp) LegacyAmino() *codec.LegacyAmino { + return app.legacyAmino +} + +// AppCodec returns SimApp's app codec. +// +// NOTE: This is solely to be used for testing purposes as it may be desirable +// for modules to register their own custom testing types. +func (app *SimApp) AppCodec() codec.Codec { + return app.appCodec +} + +// InterfaceRegistry returns SimApp's InterfaceRegistry +func (app *SimApp) InterfaceRegistry() types.InterfaceRegistry { + return app.interfaceRegistry +} + +// TxConfig returns SimApp's TxConfig +func (app *SimApp) TxConfig() client.TxConfig { + return app.txConfig +} + +// AutoCliOpts returns the autocli options for the app. +func (app *SimApp) AutoCliOpts() autocli.AppOptions { + modules := make(map[string]appmodule.AppModule, 0) + for _, m := range app.ModuleManager.Modules { + if moduleWithName, ok := m.(module.HasName); ok { + moduleName := moduleWithName.Name() + if appModule, ok := moduleWithName.(appmodule.AppModule); ok { + modules[moduleName] = appModule + } + } + } + + return autocli.AppOptions{ + Modules: modules, + ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules), + } +} + +// DefaultGenesis returns a default genesis from the registered AppModuleBasic's. +func (app *SimApp) DefaultGenesis() map[string]json.RawMessage { + return app.BasicModuleManager.DefaultGenesis(app.appCodec) +} + +// GetKey returns the KVStoreKey for the provided store key. +// +// NOTE: This is solely to be used for testing purposes. +func (app *SimApp) GetKey(storeKey string) *storetypes.KVStoreKey { + return app.keys[storeKey] +} + +// GetStoreKeys returns all the stored store keys. +func (app *SimApp) GetStoreKeys() []storetypes.StoreKey { + keys := make([]storetypes.StoreKey, len(app.keys)) + for _, key := range app.keys { + keys = append(keys, key) + } + + return keys +} + +// GetSubspace returns a param subspace for a given module name. +// +// NOTE: This is solely to be used for testing purposes. +func (app *SimApp) GetSubspace(moduleName string) paramstypes.Subspace { + subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) + return subspace +} + +// SimulationManager implements the SimulationApp interface +func (app *SimApp) SimulationManager() *module.SimulationManager { + return app.simulationManager +} + +// RegisterAPIRoutes registers all application module routes with the provided +// API server. +func (app *SimApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { + clientCtx := apiSvr.ClientCtx + // Register new tx routes from grpc-gateway. + authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + + // Register new CometBFT queries routes from grpc-gateway. + cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + + // Register node gRPC service for grpc-gateway. + nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + + // Register grpc-gateway routes for all modules. + app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) + + // register swagger API from root so that other applications can override easily + if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { + panic(err) + } +} + +// RegisterTxService implements the Application.RegisterTxService method. +func (app *SimApp) RegisterTxService(clientCtx client.Context) { + authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) +} + +// RegisterTendermintService implements the Application.RegisterTendermintService method. +func (app *SimApp) RegisterTendermintService(clientCtx client.Context) { + cmtApp := server.NewCometABCIWrapper(app) + cmtservice.RegisterTendermintService( + clientCtx, + app.BaseApp.GRPCQueryRouter(), + app.interfaceRegistry, + cmtApp.Query, + ) +} + +func (app *SimApp) RegisterNodeService(clientCtx client.Context, cfg config.Config) { + nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg) +} + +// GetMaccPerms returns a copy of the module account permissions +// +// NOTE: This is solely to be used for testing purposes. +func GetMaccPerms() map[string][]string { + dupMaccPerms := make(map[string][]string) + for k, v := range maccPerms { + dupMaccPerms[k] = v + } + + return dupMaccPerms +} + +// BlockedAddresses returns all the app's blocked account addresses. +func BlockedAddresses() map[string]bool { + modAccAddrs := make(map[string]bool) + for acc := range GetMaccPerms() { + modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true + } + + // allow the following addresses to receive funds + delete(modAccAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + delete(modAccAddrs, authtypes.NewModuleAddress(ibcmock.ModuleName).String()) + + return modAccAddrs +} + +// initParamsKeeper init params keeper and its subspaces +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { + paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) + + // register the key tables for legacy param subspaces + keyTable := ibcclienttypes.ParamKeyTable() + keyTable.RegisterParamSet(&ibcconnectiontypes.Params{}) + paramsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(keyTable) + paramsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable()) + paramsKeeper.Subspace(icacontrollertypes.SubModuleName).WithKeyTable(icacontrollertypes.ParamKeyTable()) + paramsKeeper.Subspace(icahosttypes.SubModuleName).WithKeyTable(icahosttypes.ParamKeyTable()) + + return paramsKeeper +} + +// IBC TestingApp functions + +// GetBaseApp implements the TestingApp interface. +func (app *SimApp) GetBaseApp() *baseapp.BaseApp { + return app.BaseApp +} + +// GetStakingKeeper implements the TestingApp interface. +func (app *SimApp) GetStakingKeeper() ibctestingtypes.StakingKeeper { + return app.StakingKeeper +} + +// GetIBCKeeper implements the TestingApp interface. +func (app *SimApp) GetIBCKeeper() *ibckeeper.Keeper { + return app.IBCKeeper +} + +// GetScopedIBCKeeper implements the TestingApp interface. +func (app *SimApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { + return app.ScopedIBCKeeper +} + +// GetTxConfig implements the TestingApp interface. +func (app *SimApp) GetTxConfig() client.TxConfig { + return app.txConfig +} + +// GetMemKey returns the MemStoreKey for the provided mem key. +// +// NOTE: This is solely used for testing purposes. +func (app *SimApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { + return app.memKeys[storeKey] +} diff --git a/ibc/testing/simapp/export.go b/ibc/testing/simapp/export.go new file mode 100644 index 000000000..26438874a --- /dev/null +++ b/ibc/testing/simapp/export.go @@ -0,0 +1,252 @@ +package simapp + +import ( + "encoding/json" + "errors" + "log" + + storetypes "cosmossdk.io/store/types" + + servertypes "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" +) + +// ExportAppStateAndValidators exports the state of the application for a genesis +// file. +func (app *SimApp) ExportAppStateAndValidators( + forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string, +) (servertypes.ExportedApp, error) { + // as if they could withdraw from the start of the next block + ctx := app.NewContext(true) + + // We export at last height + 1, because that's the height at which + // Tendermint will start InitChain. + height := app.LastBlockHeight() + 1 + if forZeroHeight { + height = 0 + app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) + } + + genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec) + if err != nil { + return servertypes.ExportedApp{}, err + } + appState, err := json.MarshalIndent(genState, "", " ") + if err != nil { + return servertypes.ExportedApp{}, err + } + + validators, err := staking.WriteValidators(ctx, app.StakingKeeper) + return servertypes.ExportedApp{ + AppState: appState, + Validators: validators, + Height: height, + ConsensusParams: app.BaseApp.GetConsensusParams(ctx), + }, err +} + +// prepare for fresh start at zero height +// NOTE zero height genesis is a temporary feature which will be deprecated +// in favour of export at a block height +func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { + applyAllowedAddrs := false + + // check if there is a allowed address list + if len(jailAllowedAddrs) > 0 { + applyAllowedAddrs = true + } + + allowedAddrsMap := make(map[string]bool) + + for _, addr := range jailAllowedAddrs { + _, err := sdk.ValAddressFromBech32(addr) + if err != nil { + log.Fatal(err) + } + allowedAddrsMap[addr] = true + } + + /* Just to be safe, assert the invariants on current state. */ + app.CrisisKeeper.AssertInvariants(ctx) + + /* Handle fee distribution state. */ + + // withdraw all validator commission + err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) + if err != nil { + panic(err) + } + _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valBz) + return false + }) + if err != nil { + panic(err) + } + + // withdraw all delegator rewards + dels, err := app.StakingKeeper.GetAllDelegations(ctx) + if err != nil { + panic(err) + } + + for _, delegation := range dels { + valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) + if err != nil { + panic(err) + } + + delAddr, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress) + if err != nil { + panic(err) + } + _, _ = app.DistrKeeper.WithdrawDelegationRewards(ctx, delAddr, valAddr) + } + + // clear validator slash events + app.DistrKeeper.DeleteAllValidatorSlashEvents(ctx) + + // clear validator historical rewards + app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + + // set context height to zero + height := ctx.BlockHeight() + ctx = ctx.WithBlockHeight(0) + + // reinitialize all validators + err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + valBz, err := sdk.ValAddressFromBech32(val.GetOperator()) + if err != nil { + panic(err) + } + // donate any unwithdrawn outstanding reward fraction tokens to the community pool + scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz) + if err != nil { + panic(err) + } + feePool, err := app.DistrKeeper.FeePool.Get(ctx) + if err != nil { + panic(err) + } + feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) + if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil { + panic(err) + } + + if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valBz); err != nil { + panic(err) + } + return false + }) + if err != nil { + panic(err) + } + + // reinitialize all delegations + for _, del := range dels { + valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress) + if err != nil { + panic(err) + } + delAddr, err := sdk.AccAddressFromBech32(del.DelegatorAddress) + if err != nil { + panic(err) + } + err = app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr) + if err != nil { + panic(err) + } + err = app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr) + if err != nil { + panic(err) + } + } + + // reset context height + ctx = ctx.WithBlockHeight(height) + + /* Handle staking state. */ + + // iterate through redelegations, reset creation height + err = app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { + for i := range red.Entries { + red.Entries[i].CreationHeight = 0 + } + err = app.StakingKeeper.SetRedelegation(ctx, red) + if err != nil { + panic(err) + } + return false + }) + if err != nil { + panic(err) + } + + // iterate through unbonding delegations, reset creation height + err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { + for i := range ubd.Entries { + ubd.Entries[i].CreationHeight = 0 + } + err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) + if err != nil { + panic(err) + } + return false + }) + if err != nil { + panic(err) + } + + // Iterate through validators by power descending, reset bond heights, and + // update bond intra-tx counters. + store := ctx.KVStore(app.keys[stakingtypes.StoreKey]) + iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) + counter := int16(0) + + for ; iter.Valid(); iter.Next() { + addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) + validator, err := app.StakingKeeper.GetValidator(ctx, addr) + if err != nil { + panic(errors.New("expected validator, not found")) + } + + validator.UnbondingHeight = 0 + if applyAllowedAddrs && !allowedAddrsMap[addr.String()] { + validator.Jailed = true + } + + err = app.StakingKeeper.SetValidator(ctx, validator) + if err != nil { + panic(errors.New("couldn't set validator")) + } + counter++ + } + + iter.Close() + + _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) + if err != nil { + log.Fatal(err) + } + + /* Handle slashing state. */ + + // reset start height on signing infos + err = app.SlashingKeeper.IterateValidatorSigningInfos( + ctx, + func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { + info.StartHeight = 0 + err = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) + if err != nil { + panic(err) + } + return false + }, + ) + if err != nil { + log.Fatal(err) + } +} diff --git a/ibc/testing/simapp/genesis.go b/ibc/testing/simapp/genesis.go new file mode 100644 index 000000000..69fa46b90 --- /dev/null +++ b/ibc/testing/simapp/genesis.go @@ -0,0 +1,14 @@ +package simapp + +import ( + "encoding/json" +) + +// GenesisState of the blockchain is represented here as a map of raw json +// messages key'd by a identifier string. +// The identifier is used to determine which module genesis information belongs +// to so it may be appropriately routed during init chain. +// Within this application default genesis information is retrieved from +// the ModuleBasicManager which populates json from each BasicModule +// object provided to it during init. +type GenesisState map[string]json.RawMessage diff --git a/ibc/testing/simapp/genesis_account.go b/ibc/testing/simapp/genesis_account.go new file mode 100644 index 000000000..5c9c7f9a0 --- /dev/null +++ b/ibc/testing/simapp/genesis_account.go @@ -0,0 +1,47 @@ +package simapp + +import ( + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +var _ authtypes.GenesisAccount = (*SimGenesisAccount)(nil) + +// SimGenesisAccount defines a type that implements the GenesisAccount interface +// to be used for simulation accounts in the genesis state. +type SimGenesisAccount struct { + *authtypes.BaseAccount + + // vesting account fields + OriginalVesting sdk.Coins `json:"original_vesting" yaml:"original_vesting"` // total vesting coins upon initialization + DelegatedFree sdk.Coins `json:"delegated_free" yaml:"delegated_free"` // delegated vested coins at time of delegation + DelegatedVesting sdk.Coins `json:"delegated_vesting" yaml:"delegated_vesting"` // delegated vesting coins at time of delegation + StartTime int64 `json:"start_time" yaml:"start_time"` // vesting start time (UNIX Epoch time) + EndTime int64 `json:"end_time" yaml:"end_time"` // vesting end time (UNIX Epoch time) + + // module account fields + ModuleName string `json:"module_name" yaml:"module_name"` // name of the module account + ModulePermissions []string `json:"module_permissions" yaml:"module_permissions"` // permissions of module account +} + +// Validate checks for errors on the vesting and module account parameters +func (sga SimGenesisAccount) Validate() error { + if !sga.OriginalVesting.IsZero() { + if sga.StartTime >= sga.EndTime { + return errors.New("vesting start-time cannot be before end-time") + } + } + + if sga.ModuleName != "" { + ma := authtypes.ModuleAccount{ + BaseAccount: sga.BaseAccount, Name: sga.ModuleName, Permissions: sga.ModulePermissions, + } + if err := ma.Validate(); err != nil { + return err + } + } + + return sga.BaseAccount.Validate() +} diff --git a/ibc/testing/simapp/params/amino.go b/ibc/testing/simapp/params/amino.go new file mode 100644 index 000000000..d603987dd --- /dev/null +++ b/ibc/testing/simapp/params/amino.go @@ -0,0 +1,27 @@ +//go:build test_amino +// +build test_amino + +package params + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" +) + +// MakeTestEncodingConfig creates an EncodingConfig for an amino based test configuration. +// This function should be used only internally (in the SDK). +// App user should'nt create new codecs - use the app.AppCodec instead. +// [DEPRECATED] +func MakeTestEncodingConfig() EncodingConfig { + cdc := codec.NewLegacyAmino() + interfaceRegistry := types.NewInterfaceRegistry() + marshaler := codec.NewAminoCodec(cdc) + + return EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: marshaler, + TxConfig: legacytx.StdTxConfig{Cdc: cdc}, + Amino: cdc, + } +} diff --git a/ibc/testing/simapp/params/doc.go b/ibc/testing/simapp/params/doc.go new file mode 100644 index 000000000..a2f3620a8 --- /dev/null +++ b/ibc/testing/simapp/params/doc.go @@ -0,0 +1,19 @@ +/* +Package params defines the simulation parameters in the simapp. + +It contains the default weights used for each transaction used on the module's +simulation. These weights define the chance for a transaction to be simulated at +any given operation. + +You can replace the default values for the weights by providing a params.json +file with the weights defined for each of the transaction operations: + + { + "op_weight_msg_send": 60, + "op_weight_msg_delegate": 100, + } + +In the example above, the `MsgSend` has 60% chance to be simulated, while the +`MsgDelegate` will always be simulated. +*/ +package params diff --git a/ibc/testing/simapp/params/encoding.go b/ibc/testing/simapp/params/encoding.go new file mode 100644 index 000000000..8ff9ea04b --- /dev/null +++ b/ibc/testing/simapp/params/encoding.go @@ -0,0 +1,16 @@ +package params + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" +) + +// EncodingConfig specifies the concrete encoding types to use for a given app. +// This is provided for compatibility between protobuf and amino implementations. +type EncodingConfig struct { + InterfaceRegistry types.InterfaceRegistry + Codec codec.Codec + TxConfig client.TxConfig + Amino *codec.LegacyAmino +} diff --git a/ibc/testing/simapp/params/params.go b/ibc/testing/simapp/params/params.go new file mode 100644 index 000000000..b6aa5fb55 --- /dev/null +++ b/ibc/testing/simapp/params/params.go @@ -0,0 +1,7 @@ +package params + +// Simulation parameter constants +const ( + StakePerAccount = "stake_per_account" + InitiallyBondedValidators = "initially_bonded_validators" +) diff --git a/ibc/testing/simapp/params/proto.go b/ibc/testing/simapp/params/proto.go new file mode 100644 index 000000000..4270c2b0d --- /dev/null +++ b/ibc/testing/simapp/params/proto.go @@ -0,0 +1,27 @@ +//go:build !test_amino +// +build !test_amino + +package params + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/x/auth/tx" +) + +// MakeTestEncodingConfig creates an EncodingConfig for a non-amino based test configuration. +// This function should be used only internally (in the SDK). +// App user should'nt create new codecs - use the app.AppCodec instead. +// [DEPRECATED] +func MakeTestEncodingConfig() EncodingConfig { + cdc := codec.NewLegacyAmino() + interfaceRegistry := types.NewInterfaceRegistry() + protoCdc := codec.NewProtoCodec(interfaceRegistry) + + return EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Codec: protoCdc, + TxConfig: tx.NewTxConfig(protoCdc, tx.DefaultSignModes), + Amino: cdc, + } +} diff --git a/ibc/testing/simapp/params/weights.go b/ibc/testing/simapp/params/weights.go new file mode 100644 index 000000000..81400a2fc --- /dev/null +++ b/ibc/testing/simapp/params/weights.go @@ -0,0 +1,28 @@ +package params + +// Default simulation operation weights for messages and gov proposals +const ( + DefaultWeightMsgSend int = 100 + DefaultWeightMsgMultiSend int = 10 + DefaultWeightMsgSetWithdrawAddress int = 50 + DefaultWeightMsgWithdrawDelegationReward int = 50 + DefaultWeightMsgWithdrawValidatorCommission int = 50 + DefaultWeightMsgFundCommunityPool int = 50 + DefaultWeightMsgDeposit int = 100 + DefaultWeightMsgVote int = 67 + DefaultWeightMsgVoteWeighted int = 33 + DefaultWeightMsgUnjail int = 100 + DefaultWeightMsgCreateValidator int = 100 + DefaultWeightMsgEditValidator int = 5 + DefaultWeightMsgDelegate int = 100 + DefaultWeightMsgUndelegate int = 100 + DefaultWeightMsgBeginRedelegate int = 100 + + DefaultWeightCommunitySpendProposal int = 5 + DefaultWeightTextProposal int = 5 + DefaultWeightParamChangeProposal int = 5 + + // feegrant + DefaultWeightGrantFeeAllowance int = 100 + DefaultWeightRevokeFeeAllowance int = 100 +) diff --git a/ibc/testing/simapp/simd/cmd/cmd_test.go b/ibc/testing/simapp/simd/cmd/cmd_test.go new file mode 100644 index 000000000..9216ce75f --- /dev/null +++ b/ibc/testing/simapp/simd/cmd/cmd_test.go @@ -0,0 +1,25 @@ +package cmd_test + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" + + svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" + "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + + "github.com/cosmos/ibc-go/v8/testing/simapp" + "github.com/cosmos/ibc-go/v8/testing/simapp/simd/cmd" +) + +func TestInitCmd(t *testing.T) { + rootCmd := cmd.NewRootCmd() + rootCmd.SetArgs([]string{ + "init", // Test the init cmd + "simapp-test", // Moniker + fmt.Sprintf("--%s=%s", cli.FlagOverwrite, "true"), // Overwrite genesis.json, in case it already exists + }) + + require.NoError(t, svrcmd.Execute(rootCmd, "", simapp.DefaultNodeHome)) +} diff --git a/ibc/testing/simapp/simd/cmd/root.go b/ibc/testing/simapp/simd/cmd/root.go new file mode 100644 index 000000000..58990794d --- /dev/null +++ b/ibc/testing/simapp/simd/cmd/root.go @@ -0,0 +1,372 @@ +package cmd + +import ( + "errors" + "io" + "os" + + dbm "github.com/cosmos/cosmos-db" + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "cosmossdk.io/client/v2/autocli" + "cosmossdk.io/log" + confixcmd "cosmossdk.io/tools/confix/cmd" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/config" + "github.com/cosmos/cosmos-sdk/client/debug" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/cosmos/cosmos-sdk/client/pruning" + "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/client/snapshot" + "github.com/cosmos/cosmos-sdk/codec" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/server" + serverconfig "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" + "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + + cmtcfg "github.com/cometbft/cometbft/config" + + "github.com/cosmos/ibc-go/v8/testing/simapp" + "github.com/cosmos/ibc-go/v8/testing/simapp/params" +) + +// NewRootCmd creates a new root command for simd. It is called once in the +// main function. +func NewRootCmd() *cobra.Command { + // we "pre"-instantiate the application for getting the injected/configured encoding configuration + // note, this is not necessary when using app wiring, as depinject can be directly used (see root_v2.go) + tempApp := simapp.NewSimApp(log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(tempDir())) + encodingConfig := params.EncodingConfig{ + InterfaceRegistry: tempApp.InterfaceRegistry(), + Codec: tempApp.AppCodec(), + TxConfig: tempApp.TxConfig(), + Amino: tempApp.LegacyAmino(), + } + + initClientCtx := client.Context{}. + WithCodec(encodingConfig.Codec). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). + WithLegacyAmino(encodingConfig.Amino). + WithInput(os.Stdin). + WithAccountRetriever(types.AccountRetriever{}). + WithHomeDir(simapp.DefaultNodeHome). + WithViper("") // In simapp, we don't use any prefix for env variables. + + rootCmd := &cobra.Command{ + Use: "simd", + Short: "simulation app", + SilenceErrors: true, + PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + // set the default command outputs + cmd.SetOut(cmd.OutOrStdout()) + cmd.SetErr(cmd.ErrOrStderr()) + + initClientCtx = initClientCtx.WithCmdContext(cmd.Context()) + initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) + if err != nil { + return err + } + + initClientCtx, err = config.ReadFromClientConfig(initClientCtx) + if err != nil { + return err + } + + // This needs to go after ReadFromClientConfig, as that function + // sets the RPC client needed for SIGN_MODE_TEXTUAL. This sign mode + // is only available if the client is online. + if !initClientCtx.Offline { + txConfigOpts := tx.ConfigOptions{ + EnabledSignModes: append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL), + TextualCoinMetadataQueryFn: txmodule.NewGRPCCoinMetadataQueryFn(initClientCtx), + } + txConfigWithTextual, err := tx.NewTxConfigWithOptions( + codec.NewProtoCodec(encodingConfig.InterfaceRegistry), + txConfigOpts, + ) + if err != nil { + return err + } + initClientCtx = initClientCtx.WithTxConfig(txConfigWithTextual) + } + + if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { + return err + } + + customAppTemplate, customAppConfig := initAppConfig() + customCMTConfig := initCometBFTConfig() + + return server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customCMTConfig) + }, + } + + initRootCmd(rootCmd, encodingConfig, tempApp.BasicModuleManager) + + autoCliOpts, err := enrichAutoCliOpts(tempApp.AutoCliOpts(), initClientCtx) + if err != nil { + panic(err) + } + + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { + panic(err) + } + + return rootCmd +} + +func enrichAutoCliOpts(autoCliOpts autocli.AppOptions, clientCtx client.Context) (autocli.AppOptions, error) { + autoCliOpts.AddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()) + autoCliOpts.ValidatorAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()) + autoCliOpts.ConsensusAddressCodec = addresscodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()) + + var err error + clientCtx, err = config.ReadFromClientConfig(clientCtx) + if err != nil { + return autocli.AppOptions{}, err + } + + autoCliOpts.ClientCtx = clientCtx + autoCliOpts.Keyring, err = keyring.NewAutoCLIKeyring(clientCtx.Keyring) + if err != nil { + return autocli.AppOptions{}, err + } + + return autoCliOpts, nil +} + +// initCometBFTConfig helps to override default CometBFT Config values. +// return cmtcfg.DefaultConfig if no custom configuration is required for the application. +func initCometBFTConfig() *cmtcfg.Config { + cfg := cmtcfg.DefaultConfig() + + // these values put a higher strain on node memory + // cfg.P2P.MaxNumInboundPeers = 100 + // cfg.P2P.MaxNumOutboundPeers = 40 + + return cfg +} + +// initAppConfig helps to override default appConfig template and configs. +// return "", nil if no custom configuration is required for the application. +func initAppConfig() (string, interface{}) { + // The following code snippet is just for reference. + + // WASMConfig defines configuration for the wasm module. + type WASMConfig struct { + // This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries + QueryGasLimit uint64 `mapstructure:"query_gas_limit"` + + // Address defines the gRPC-web server to listen on + LruSize uint64 `mapstructure:"lru_size"` + } + + type CustomAppConfig struct { + serverconfig.Config + + WASM WASMConfig `mapstructure:"wasm"` + } + + // Optionally allow the chain developer to overwrite the SDK's default + // server config. + srvCfg := serverconfig.DefaultConfig() + // The SDK's default minimum gas price is set to "" (empty value) inside + // app.toml. If left empty by validators, the node will halt on startup. + // However, the chain developer can set a default app.toml value for their + // validators here. + // + // In summary: + // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their + // own app.toml config, + // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their + // own app.toml to override, or use this default value. + // + // In simapp, we set the min gas prices to 0. + srvCfg.MinGasPrices = "0stake" + // srvCfg.BaseConfig.IAVLDisableFastNode = true // disable fastnode by default + + customAppConfig := CustomAppConfig{ + Config: *srvCfg, + WASM: WASMConfig{ + LruSize: 1, + QueryGasLimit: 300000, + }, + } + + customAppTemplate := serverconfig.DefaultConfigTemplate + ` +[wasm] +# This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries +query_gas_limit = 300000 +# This is the number of wasm vm instances we keep cached in memory for speed-up +# Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally +lru_size = 0` + + return customAppTemplate, customAppConfig +} + +func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig, basicManager module.BasicManager) { + cfg := sdk.GetConfig() + cfg.Seal() + + rootCmd.AddCommand( + genutilcli.InitCmd(basicManager, simapp.DefaultNodeHome), + debug.Cmd(), + confixcmd.ConfigCommand(), + pruning.Cmd(newApp, simapp.DefaultNodeHome), + snapshot.Cmd(newApp), + server.QueryBlockResultsCmd(), + ) + + server.AddCommands(rootCmd, simapp.DefaultNodeHome, newApp, appExport, addModuleInitFlags) + + // add keybase, auxiliary RPC, query, genesis, and tx child commands + rootCmd.AddCommand( + server.StatusCommand(), + genesisCommand(encodingConfig, basicManager), + txCommand(), + queryCommand(), + keys.Commands(), + ) +} + +func addModuleInitFlags(startCmd *cobra.Command) { + crisis.AddModuleInitFlags(startCmd) +} + +func queryCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "query", + Aliases: []string{"q"}, + Short: "Querying subcommands", + DisableFlagParsing: false, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + rpc.ValidatorCommand(), + server.QueryBlockCmd(), + authcmd.QueryTxsByEventsCmd(), + server.QueryBlocksCmd(), + authcmd.QueryTxCmd(), + authcmd.GetSimulateCmd(), + ) + + return cmd +} + +func txCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "tx", + Short: "Transactions subcommands", + DisableFlagParsing: false, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + authcmd.GetSignCommand(), + authcmd.GetSignBatchCommand(), + authcmd.GetMultiSignCommand(), + authcmd.GetMultiSignBatchCmd(), + authcmd.GetValidateSignaturesCommand(), + authcmd.GetBroadcastCommand(), + authcmd.GetEncodeCommand(), + authcmd.GetDecodeCommand(), + authcmd.GetSimulateCmd(), + ) + + return cmd +} + +// genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter +func genesisCommand(encodingConfig params.EncodingConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command { + cmd := genutilcli.Commands(encodingConfig.TxConfig, basicManager, simapp.DefaultNodeHome) + + for _, subCmd := range cmds { + cmd.AddCommand(subCmd) + } + return cmd +} + +// newApp creates the application +func newApp( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + appOpts servertypes.AppOptions, +) servertypes.Application { + baseappOptions := server.DefaultBaseappOptions(appOpts) + + return simapp.NewSimApp( + logger, db, traceStore, true, + appOpts, + baseappOptions..., + ) +} + +// appExport creates a new simapp (optionally at a given height) and exports state. +func appExport( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + height int64, + forZeroHeight bool, + jailAllowedAddrs []string, + appOpts servertypes.AppOptions, + modulesToExport []string, +) (servertypes.ExportedApp, error) { + var simApp *simapp.SimApp + + // this check is necessary as we use the flag in x/upgrade. + // we can exit more gracefully by checking the flag here. + homePath, ok := appOpts.Get(flags.FlagHome).(string) + if !ok || homePath == "" { + return servertypes.ExportedApp{}, errors.New("application home not set") + } + + viperAppOpts, ok := appOpts.(*viper.Viper) + if !ok { + return servertypes.ExportedApp{}, errors.New("appOpts is not viper.Viper") + } + + // overwrite the FlagInvCheckPeriod + viperAppOpts.Set(server.FlagInvCheckPeriod, 1) + appOpts = viperAppOpts + + if height != -1 { + simApp = simapp.NewSimApp(logger, db, traceStore, false, appOpts) + + if err := simApp.LoadHeight(height); err != nil { + return servertypes.ExportedApp{}, err + } + } else { + simApp = simapp.NewSimApp(logger, db, traceStore, true, appOpts) + } + + return simApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport) +} + +var tempDir = func() string { + dir, err := os.MkdirTemp("", "simapp") + if err != nil { + dir = simapp.DefaultNodeHome + } + defer os.RemoveAll(dir) + + return dir +} diff --git a/ibc/testing/simapp/simd/main.go b/ibc/testing/simapp/simd/main.go new file mode 100644 index 000000000..153d84683 --- /dev/null +++ b/ibc/testing/simapp/simd/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "os" + + "cosmossdk.io/log" + + svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" + + "github.com/cosmos/ibc-go/v8/testing/simapp" + "github.com/cosmos/ibc-go/v8/testing/simapp/simd/cmd" +) + +func main() { + rootCmd := cmd.NewRootCmd() + if err := svrcmd.Execute(rootCmd, "", simapp.DefaultNodeHome); err != nil { + log.NewLogger(rootCmd.OutOrStderr()).Error("failure when running app", "err", err) + os.Exit(1) + } +} diff --git a/ibc/testing/simapp/test_helpers.go b/ibc/testing/simapp/test_helpers.go new file mode 100644 index 000000000..a3c4e8764 --- /dev/null +++ b/ibc/testing/simapp/test_helpers.go @@ -0,0 +1,136 @@ +package simapp + +import ( + "encoding/json" + "math/rand" + "testing" + "time" + + dbm "github.com/cosmos/cosmos-db" + "github.com/stretchr/testify/require" + + "cosmossdk.io/log" + sdkmath "cosmossdk.io/math" + + bam "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/server" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/testutil/mock" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + + abci "github.com/cometbft/cometbft/abci/types" + cmttypes "github.com/cometbft/cometbft/types" +) + +// SetupOptions defines arguments that are passed into `Simapp` constructor. +type SetupOptions struct { + Logger log.Logger + DB *dbm.MemDB + AppOpts servertypes.AppOptions +} + +// initSetup initializes a new SimApp. A Nop logger is set in SimApp. +func initSetup(withGenesis bool, invCheckPeriod uint) (*SimApp, GenesisState) { + db := dbm.NewMemDB() + + appOptions := make(simtestutil.AppOptionsMap, 0) + appOptions[flags.FlagHome] = DefaultNodeHome + appOptions[server.FlagInvCheckPeriod] = invCheckPeriod + + app := NewSimApp(log.NewNopLogger(), db, nil, true, appOptions) + if withGenesis { + return app, app.DefaultGenesis() + } + return app, GenesisState{} +} + +// Setup initializes a new SimApp. A Nop logger is set in SimApp. +func Setup(t *testing.T, isCheckTx bool) *SimApp { + t.Helper() + + privVal := mock.NewPV() + pubKey, err := privVal.GetPubKey() + require.NoError(t, err) + + // create validator set with single validator + validator := cmttypes.NewValidator(pubKey, 1) + valSet := cmttypes.NewValidatorSet([]*cmttypes.Validator{validator}) + + // generate genesis account + senderPrivKey := secp256k1.GenPrivKey() + acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) + balance := banktypes.Balance{ + Address: acc.GetAddress().String(), + Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100000000000000))), + } + + app := SetupWithGenesisValSet(t, valSet, []authtypes.GenesisAccount{acc}, balance) + + return app +} + +// SetupWithGenesisValSet initializes a new SimApp with a validator set and genesis accounts +// that also act as delegators. For simplicity, each validator is bonded with a delegation +// of one consensus engine unit in the default token of the simapp from first genesis +// account. A Nop logger is set in SimApp. +func SetupWithGenesisValSet(t *testing.T, valSet *cmttypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance) *SimApp { + t.Helper() + + app, genesisState := initSetup(true, 5) + genesisState, err := simtestutil.GenesisStateWithValSet(app.AppCodec(), genesisState, valSet, genAccs, balances...) + require.NoError(t, err) + + stateBytes, err := json.MarshalIndent(genesisState, "", " ") + require.NoError(t, err) + + // init chain will set the validator set and initialize the genesis accounts + _, err = app.InitChain(&abci.RequestInitChain{ + Validators: []abci.ValidatorUpdate{}, + ConsensusParams: simtestutil.DefaultConsensusParams, + AppStateBytes: stateBytes, + }, + ) + require.NoError(t, err) + + return app +} + +// SignAndDeliver signs and delivers a transaction. No simulation occurs as the +// ibc testing package causes checkState and deliverState to diverge in block time. +// +// CONTRACT: BeginBlock must be called before this function. +func SignAndDeliver( + tb testing.TB, txCfg client.TxConfig, app *bam.BaseApp, msgs []sdk.Msg, + chainID string, accNums, accSeqs []uint64, expPass bool, blockTime time.Time, nextValHash []byte, priv ...cryptotypes.PrivKey, +) (*abci.ResponseFinalizeBlock, error) { + tb.Helper() + tx, err := simtestutil.GenSignedMockTx( + rand.New(rand.NewSource(time.Now().UnixNano())), + txCfg, + msgs, + sdk.Coins{sdk.NewInt64Coin(sdk.DefaultBondDenom, 0)}, + simtestutil.DefaultGenTxGas, + chainID, + accNums, + accSeqs, + priv..., + ) + require.NoError(tb, err) + + txBytes, err := txCfg.TxEncoder()(tx) + require.NoError(tb, err) + + return app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: app.LastBlockHeight() + 1, + Time: blockTime, + NextValidatorsHash: nextValHash, + Txs: [][]byte{txBytes}, + }) +} diff --git a/ibc/testing/simapp/upgrades.go b/ibc/testing/simapp/upgrades.go new file mode 100644 index 000000000..81b4902da --- /dev/null +++ b/ibc/testing/simapp/upgrades.go @@ -0,0 +1,90 @@ +package simapp + +import ( + storetypes "cosmossdk.io/store/types" + circuittypes "cosmossdk.io/x/circuit/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + icacontrollertypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/types" + ibcmock "github.com/cosmos/ibc-go/v8/testing/mock" + "github.com/cosmos/ibc-go/v8/testing/simapp/upgrades" +) + +// registerUpgradeHandlers registers all supported upgrade handlers +func (app *SimApp) registerUpgradeHandlers() { + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V5, + upgrades.CreateDefaultUpgradeHandler(app.ModuleManager, app.configurator), + ) + + // NOTE: The moduleName arg of v6.CreateUpgradeHandler refers to the auth module ScopedKeeper name to which the channel capability should be migrated from. + // This should be the same string value provided upon instantiation of the ScopedKeeper with app.CapabilityKeeper.ScopeToModule() + // See: https://github.com/cosmos/ibc-go/blob/v6.1.0/testing/simapp/app.go#L310 + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V6, + upgrades.CreateV6UpgradeHandler( + app.ModuleManager, + app.configurator, + app.appCodec, + app.keys[capabilitytypes.ModuleName], + app.CapabilityKeeper, + ibcmock.ModuleName+icacontrollertypes.SubModuleName, + ), + ) + + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V7, + upgrades.CreateV7UpgradeHandler( + app.ModuleManager, + app.configurator, + app.appCodec, + app.IBCKeeper.ClientKeeper, + app.ConsensusParamsKeeper, + app.ParamsKeeper, + ), + ) + + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V7_1, + upgrades.CreateV7LocalhostUpgradeHandler(app.ModuleManager, app.configurator, app.IBCKeeper.ClientKeeper), + ) + + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V8, + upgrades.CreateV8UpgradeHandler( + app.ModuleManager, + app.configurator, + ), + ) + + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() + if err != nil { + panic(err) + } + + if upgradeInfo.Name == upgrades.V7 && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{ + Added: []string{ + consensusparamtypes.StoreKey, + crisistypes.StoreKey, + }, + } + + // configure store loader that checks if version == upgradeHeight and applies store upgrades + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } + + if upgradeInfo.Name == upgrades.V8 && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{ + Added: []string{ + circuittypes.ModuleName, + }, + } + // configure store loader that checks if version == upgradeHeight and applies store upgrades + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } +} diff --git a/ibc/testing/simapp/upgrades/upgrades.go b/ibc/testing/simapp/upgrades/upgrades.go new file mode 100644 index 000000000..ff9b65795 --- /dev/null +++ b/ibc/testing/simapp/upgrades/upgrades.go @@ -0,0 +1,116 @@ +package upgrades + +import ( + "context" + + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + consensusparamskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + v6 "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/migrations/v6" + clientkeeper "github.com/cosmos/ibc-go/v8/modules/core/02-client/keeper" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctmmigrations "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint/migrations" +) + +const ( + // V5 defines the upgrade name for the ibc-go/v5 upgrade handler. + V5 = "normal upgrade" // NOTE: keeping as "normal upgrade" as existing tags depend on this name + // V6 defines the upgrade name for the ibc-go/v6 upgrade handler. + V6 = "v6" + // V7 defines the upgrade name for the ibc-go/v7 upgrade handler. + V7 = "v7" + // V7_1 defines the upgrade name for the ibc-go/v7.1 upgrade handler. + V7_1 = "v7.1" + // V8 defines the upgrade name for the ibc-go/v8 upgrade handler. + V8 = "v8" +) + +// CreateDefaultUpgradeHandler creates an upgrade handler which can be used for regular upgrade tests +// that do not require special logic +func CreateDefaultUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + return mm.RunMigrations(ctx, configurator, vm) + } +} + +// CreateV6UpgradeHandler creates an upgrade handler for the ibc-go/v6 SimApp upgrade. +// NOTE: The v6.MigrateICS27ChannelCapabiliity function can be omitted if chains do not yet implement an ICS27 controller module +func CreateV6UpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + cdc codec.BinaryCodec, + capabilityStoreKey *storetypes.KVStoreKey, + capabilityKeeper *capabilitykeeper.Keeper, + moduleName string, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + if err := v6.MigrateICS27ChannelCapability(sdkCtx, cdc, capabilityStoreKey, capabilityKeeper, moduleName); err != nil { + return nil, err + } + + return mm.RunMigrations(ctx, configurator, vm) + } +} + +// CreateV7UpgradeHandler creates an upgrade handler for the ibc-go/v7 SimApp upgrade. +func CreateV7UpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + cdc codec.BinaryCodec, + clientKeeper clientkeeper.Keeper, + consensusParamsKeeper consensusparamskeeper.Keeper, + paramsKeeper paramskeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + // OPTIONAL: prune expired tendermint consensus states to save storage space + if _, err := ibctmmigrations.PruneExpiredConsensusStates(sdkCtx, cdc, clientKeeper); err != nil { + return nil, err + } + + legacyBaseAppSubspace := paramsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()) + err := baseapp.MigrateParams(sdkCtx, legacyBaseAppSubspace, consensusParamsKeeper.ParamsStore) + if err != nil { + panic(err) + } + + return mm.RunMigrations(ctx, configurator, vm) + } +} + +// CreateV7LocalhostUpgradeHandler creates an upgrade handler for the ibc-go/v7.1 SimApp upgrade. +func CreateV7LocalhostUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + clientKeeper clientkeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + // explicitly update the IBC 02-client params, adding the localhost client type + params := clientKeeper.GetParams(sdkCtx) + params.AllowedClients = append(params.AllowedClients, exported.Localhost) + clientKeeper.SetParams(sdkCtx, params) + + return mm.RunMigrations(ctx, configurator, vm) + } +} + +// CreateV8UpgradeHandler creates an upgrade handler for the ibc-go/v8 SimApp upgrade. +func CreateV8UpgradeHandler(mm *module.Manager, configurator module.Configurator) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + return mm.RunMigrations(ctx, configurator, vm) + } +} From 3fbe31ae0b1b6c5ce0caaf2297cbeadb01ccfb2f Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 3 Jan 2024 17:00:36 +0900 Subject: [PATCH 22/96] chore: remove ante test tx fee checker --- app/ante/handler_options.go | 6 +++--- app/app.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 51adb822e..4215347fd 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -85,7 +85,7 @@ func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler { ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), @@ -112,7 +112,7 @@ func newCosmosSimulationAnteHandler(options HandlerOptions) sdk.AnteHandler { ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), // NewParamChangeLimitDecorator(options.SlashingKeeper, options.Cdc), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), // NewValidatorCommissionDecorator(options.Cdc), //ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), @@ -136,7 +136,7 @@ func newCosmosAnteHandlerEip712(options HandlerOptions) sdk.AnteHandler { ante.NewTxTimeoutHeightDecorator(), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), diff --git a/app/app.go b/app/app.go index 0236cf873..c0de75d6f 100644 --- a/app/app.go +++ b/app/app.go @@ -1092,7 +1092,7 @@ func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) FeeMarketKeeper: app.FeeMarketKeeper, MaxTxGasWanted: maxGasWanted, ExtensionOptionChecker: ethermint.HasDynamicFeeExtensionOption, - TxFeeChecker: ethante.NewDynamicFeeChecker(app.EvmKeeper), + // TxFeeChecker: ethante.NewDynamicFeeChecker(app.EvmKeeper), // TODO(dudong2): consider it DisabledAuthzMsgs: []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), From a996e681c318a95181000c65e05991860bd2b1b5 Mon Sep 17 00:00:00 2001 From: poorphd Date: Thu, 4 Jan 2024 15:56:41 +0900 Subject: [PATCH 23/96] wip: error fix in Canto modules --- api/canto/erc20/v1/tx.pulsar.go | 67 ++++++++++++++-------------- app/app.go | 4 ++ go.mod | 3 ++ go.sum | 6 +++ ibc/testing/chain.go | 2 +- proto/canto/erc20/v1/tx.proto | 2 +- x/erc20/keeper/integration_test.go | 48 ++++++++++---------- x/erc20/types/msg.go | 20 +++++++++ x/erc20/types/tx.pb.go | 70 +++++++++++++++--------------- 9 files changed, 127 insertions(+), 95 deletions(-) diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index bb677b55a..cce59c7b5 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -2120,7 +2120,7 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x2a, 0x14, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xdc, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, @@ -2131,39 +2131,38 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x25, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, - 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x22, - 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x91, 0x02, 0x0a, 0x03, 0x4d, - 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, - 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, - 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, - 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, - 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, - 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x1a, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, + 0x91, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, + 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, + 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, + 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, + 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/app/app.go b/app/app.go index c0de75d6f..4dd8ce421 100644 --- a/app/app.go +++ b/app/app.go @@ -10,6 +10,7 @@ import ( "path/filepath" "github.com/cosmos/gogoproto/proto" + ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" @@ -126,6 +127,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v8/testing" ibctestingtypes "github.com/cosmos/ibc-go/v8/testing/types" + erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" evmv1 "github.com/evmos/ethermint/api/ethermint/evm/v1" feemarketv1 "github.com/evmos/ethermint/api/ethermint/feemarket/v1" ethante "github.com/evmos/ethermint/app/ante" @@ -329,6 +331,7 @@ func NewCanto( signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgEthereumTx{}), evmtypes.GetSignersFromMsgEthereumTxV2) signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgUpdateParams{}), evmtypes.GetSignersFromMsgUpdateParamsV2) signingOptions.DefineCustomGetSigners(protov2.MessageName(&feemarketv1.MsgUpdateParams{}), feemarkettypes.GetSignersFromMsgUpdateParamsV2) + signingOptions.DefineCustomGetSigners(protov2.MessageName(&erc20v1.MsgConvertERC20{}), erc20types.GetSignersFromMsgConvertERC20V2) interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ ProtoFiles: proto.HybridResolver, @@ -798,6 +801,7 @@ func NewCanto( ibc.NewAppModule(app.IBCKeeper), transferModule, capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), + ibctm.NewAppModule(), // Ethermint app modules evm.NewAppModule(app.EvmKeeper, app.AccountKeeper, evmSs), diff --git a/go.mod b/go.mod index 7f94001cb..e093178d3 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( cosmossdk.io/log v1.2.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced cosmossdk.io/store v1.0.0 + cosmossdk.io/tools/confix v0.1.0 cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 @@ -74,6 +75,8 @@ require ( github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect + github.com/creachadair/atomicfile v0.3.1 // indirect + github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.2.0 // indirect github.com/emicklei/dot v1.6.0 // indirect github.com/fatih/color v1.16.0 // indirect diff --git a/go.sum b/go.sum index 346a250be..25549de56 100644 --- a/go.sum +++ b/go.sum @@ -207,6 +207,8 @@ cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced h1:l5rW4cKGOGyo2Zinzmuhle cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced/go.mod h1:EdpAqccZXp8XnV2FFMCdEt+Xq+3pbzIb2KzGAyi6GGc= cosmossdk.io/store v1.0.0 h1:6tnPgTpTSIskaTmw/4s5C9FARdgFflycIc9OX8i1tOI= cosmossdk.io/store v1.0.0/go.mod h1:ABMprwjvx6IpMp8l06TwuMrj6694/QP5NIW+X6jaTYc= +cosmossdk.io/tools/confix v0.1.0 h1:2OOZTtQsDT5e7P3FM5xqM0bPfluAxZlAwxqaDmYBE+E= +cosmossdk.io/tools/confix v0.1.0/go.mod h1:TdXKVYs4gEayav5wM+JHT+kTU2J7fozFNqoVaN+8CdY= cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= @@ -416,6 +418,10 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= +github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU= +github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ= +github.com/creachadair/tomledit v0.0.24/go.mod h1:9qHbShRWQzSCcn617cMzg4eab1vbLCOjOshAWSzWr8U= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go index 25926976f..5ad3dce6c 100644 --- a/ibc/testing/chain.go +++ b/ibc/testing/chain.go @@ -286,7 +286,7 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh // GetContext returns the current context for the application. func (chain *TestChain) GetContext() sdk.Context { - return chain.App.GetBaseApp().NewContextLegacy(false, chain.CurrentHeader) + return chain.App.GetBaseApp().NewUncachedContext(false, chain.CurrentHeader) } // GetSimApp returns the SimApp to allow usage ofnon-interface fields. diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index b1d22e8c9..ddceae1ea 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -46,7 +46,7 @@ message MsgConvertCoinResponse {} // MsgConvertERC20 defines a Msg to convert a ERC20 token to a native Cosmos // coin. message MsgConvertERC20 { - option (cosmos.msg.v1.signer) = "sender"; + // option (cosmos.msg.v1.signer) = "sender"; option (amino.name) = "canto/MsgConvertERC20"; // ERC20 token contract address registered in a token pair diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index e61559004..d4ad59a32 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -2,6 +2,7 @@ package keeper_test import ( "context" + "fmt" "math/big" "github.com/cosmos/cosmos-sdk/client/tx" @@ -89,8 +90,9 @@ var _ = Describe("ERC20: Converting", Ordered, func() { moduleAcc := s.app.AccountKeeper.GetModuleAccount(s.ctx, types.ModuleName).GetAddress() var ( - pair *types.TokenPair - coin sdk.Coin + pair *types.TokenPair + tokenPair types.TokenPair + coin sdk.Coin ) BeforeEach(func() { @@ -160,13 +162,13 @@ var _ = Describe("ERC20: Converting", Ordered, func() { BeforeEach(func() { contract := s.setupRegisterERC20Pair(contractMinterBurner) id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) - *pair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) - coin = sdk.NewCoin(pair.Denom, amt) + tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) + coin = sdk.NewCoin(tokenPair.Denom, amt) // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom denom := "acanto" //use default denom for claimsDenom - err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewInt(1000)))) + err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) s.Require().NoError(err) _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) @@ -175,46 +177,46 @@ var _ = Describe("ERC20: Converting", Ordered, func() { Describe("an ERC20 token into a Cosmos coin", func() { BeforeEach(func() { - convertERC20(priv, amt, pair.GetERC20Contract()) + convertERC20(priv, amt, tokenPair.GetERC20Contract()) }) It("should decrease tokens on the sender account", func() { - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) Expect(balanceERC20.Int64()).To(Equal(int64(0))) }) It("should escrow tokens on the module account", func() { moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), moduleAddr).(*big.Int) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) }) It("should send coins to the recevier account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) Expect(balanceCoin).To(Equal(coin)) }) }) Describe("a Cosmos coin into an ERC20 token", func() { BeforeEach(func() { - convertERC20(priv, amt, pair.GetERC20Contract()) + convertERC20(priv, amt, tokenPair.GetERC20Contract()) s.Commit() convertCoin(priv, coin) }) It("should increase tokens on the sender account", func() { - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) }) It("should unescrow tokens on the module account", func() { moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), moduleAddr).(*big.Int) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) Expect(balanceERC20.Int64()).To(Equal(int64(0))) }) It("should burn coins to the recevier account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) Expect(balanceCoin.IsZero()).To(BeTrue()) }) }) @@ -247,8 +249,8 @@ func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseF txBuilder := encodingConfig.TxConfig.NewTxBuilder() - txBuilder.SetGasLimit(100_000_000) - txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewInt(1)}}) + txBuilder.SetGasLimit(10_000_000) + txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewIntWithDecimal(1, 16)}}) err := txBuilder.SetMsgs(msgs...) s.Require().NoError(err) @@ -294,17 +296,15 @@ func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseF bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) s.Require().NoError(err) + test, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) + s.Require().NoError(err) + fmt.Println(string(test)) + res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: s.app.LastBlockHeight() + 1, - Txs: [][]byte{bz}, + Height: s.app.LastBlockHeight() + 1, + Txs: [][]byte{bz}, + ProposerAddress: s.consAddress.Bytes(), }) return res, err - //// bz are bytes to be broadcasted over the network - //bz, err := encodingConfig.TxConfig.TxEncoder()(txBuilder.GetTx()) - //s.Require().NoError(err) - - //req := abci.RequestDeliverTx{Tx: bz} - //res := s.app.BaseApp.DeliverTx(req) - //return res } diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index 04a4abe92..e14103a8e 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -3,8 +3,10 @@ package types import ( errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" + erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + protov2 "google.golang.org/protobuf/proto" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/ethereum/go-ethereum/common" @@ -111,3 +113,21 @@ func (msg MsgConvertERC20) GetSigners() []sdk.AccAddress { addr := common.HexToAddress(msg.Sender) return []sdk.AccAddress{addr.Bytes()} } + +func GetSignersFromMsgConvertERC20V2(msg protov2.Message) ([][]byte, error) { + msgv2, ok := msg.(*erc20v1.MsgConvertERC20) + if !ok { + return nil, nil + } + + msgv1 := MsgConvertERC20{ + Sender: msgv2.Sender, + } + + signers := [][]byte{} + for _, signer := range msgv1.GetSigners() { + signers = append(signers, signer.Bytes()) + } + + return signers, nil +} diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 5f5110062..8104ae818 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -250,41 +250,41 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 535 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x41, 0x6f, 0xd3, 0x3c, - 0x18, 0x6e, 0xda, 0x7e, 0xd5, 0x37, 0x0f, 0x6d, 0x10, 0x6d, 0x6b, 0x1b, 0xa1, 0xb4, 0x54, 0xc0, - 0x4a, 0xd1, 0xec, 0xb5, 0x3b, 0x20, 0x71, 0xa3, 0x15, 0x87, 0x1e, 0xc6, 0x21, 0x47, 0x2e, 0x95, - 0x9b, 0x5a, 0x59, 0x34, 0xe2, 0xb7, 0x8a, 0xbd, 0x30, 0x2e, 0x08, 0xf5, 0xc8, 0x09, 0xc4, 0x0f, - 0xe0, 0x2f, 0xf4, 0xc0, 0x8f, 0xd8, 0x71, 0x82, 0x0b, 0x42, 0x68, 0x42, 0x2d, 0x52, 0xff, 0x06, - 0x8a, 0xed, 0x15, 0x52, 0xb4, 0x71, 0x89, 0xfc, 0x3e, 0xcf, 0xe3, 0xd7, 0xcf, 0xf3, 0xda, 0x41, - 0x65, 0x9f, 0x72, 0x09, 0x84, 0xc5, 0x7e, 0x67, 0x9f, 0x24, 0x6d, 0x22, 0x4f, 0xf1, 0x38, 0x06, - 0x09, 0xf6, 0x86, 0x22, 0xb0, 0x22, 0x70, 0xd2, 0x76, 0x6e, 0x07, 0x00, 0xc1, 0x0b, 0x46, 0xe8, - 0x38, 0x24, 0x94, 0x73, 0x90, 0x54, 0x86, 0xc0, 0x85, 0x56, 0x3b, 0x5b, 0x01, 0x04, 0xa0, 0x96, - 0x24, 0x5d, 0x19, 0xd4, 0xf5, 0x41, 0x44, 0x20, 0xc8, 0x90, 0x0a, 0x46, 0x92, 0xf6, 0x90, 0x49, - 0xda, 0x26, 0x3e, 0x84, 0xdc, 0xf0, 0x55, 0xcd, 0x0f, 0xf4, 0x46, 0x5d, 0x18, 0xaa, 0x6c, 0xb6, - 0x46, 0x22, 0x48, 0x6d, 0x45, 0x22, 0x30, 0xc4, 0x2d, 0x1a, 0x85, 0x1c, 0x88, 0xfa, 0x6a, 0xa8, - 0xf1, 0xd1, 0x42, 0x1b, 0x87, 0x22, 0xe8, 0x01, 0x4f, 0x58, 0x2c, 0x7b, 0x10, 0x72, 0xfb, 0x00, - 0x15, 0xd3, 0x73, 0x2a, 0x56, 0xdd, 0x6a, 0xae, 0x77, 0xaa, 0xd8, 0xf4, 0x4e, 0x8d, 0x60, 0x63, - 0x04, 0xa7, 0xc2, 0x6e, 0xf1, 0xec, 0xa2, 0x96, 0xf3, 0x94, 0xd8, 0x76, 0xd0, 0xff, 0x31, 0xf3, - 0x59, 0x98, 0xb0, 0xb8, 0x92, 0xaf, 0x5b, 0xcd, 0x35, 0x6f, 0x59, 0xdb, 0x3b, 0xa8, 0x24, 0x18, - 0x1f, 0xb1, 0xb8, 0x52, 0x50, 0x8c, 0xa9, 0x1e, 0xdf, 0x9d, 0x2c, 0xa6, 0x2d, 0x53, 0xbc, 0x5d, - 0x4c, 0x5b, 0x5b, 0x7a, 0x9e, 0x59, 0x3b, 0x8d, 0x0a, 0xda, 0xc9, 0x22, 0x1e, 0x13, 0x63, 0xe0, - 0x82, 0x35, 0xbe, 0x5b, 0x68, 0xf3, 0x37, 0xf5, 0xd4, 0xeb, 0x75, 0xf6, 0xed, 0x07, 0xe8, 0xa6, - 0x0f, 0x5c, 0xc6, 0xd4, 0x97, 0x03, 0x3a, 0x1a, 0xc5, 0x4c, 0x08, 0x15, 0x64, 0xcd, 0xdb, 0xbc, - 0xc4, 0x9f, 0x68, 0xd8, 0xee, 0xa1, 0x12, 0x8d, 0xe0, 0x84, 0x4b, 0x6d, 0xb8, 0xfb, 0x30, 0x8d, - 0xf3, 0xed, 0xa2, 0xb6, 0xad, 0x03, 0x8b, 0xd1, 0x31, 0x0e, 0x81, 0x44, 0x54, 0x1e, 0xe1, 0x3e, - 0x97, 0x9f, 0x3f, 0xed, 0x21, 0x33, 0x89, 0x3e, 0x97, 0x9e, 0xd9, 0x9a, 0xc9, 0x5d, 0xb8, 0x32, - 0x77, 0x31, 0x93, 0xfb, 0xde, 0x4a, 0xee, 0xed, 0xd5, 0xdc, 0x2a, 0x4a, 0xa3, 0x8a, 0xca, 0x2b, - 0xd0, 0x65, 0xf2, 0xce, 0xfb, 0x3c, 0x2a, 0x1c, 0x8a, 0xc0, 0x7e, 0x8d, 0xd6, 0xff, 0xbc, 0x39, - 0x17, 0x67, 0x1f, 0x1e, 0xce, 0x0e, 0xce, 0xb9, 0x7f, 0x3d, 0xbf, 0x1c, 0xec, 0xee, 0xe4, 0xcb, - 0xcf, 0x0f, 0xf9, 0x3b, 0x76, 0x8d, 0xfc, 0xf5, 0xc2, 0x89, 0xaf, 0xf5, 0x03, 0x75, 0xeb, 0x13, - 0x0b, 0xdd, 0xc8, 0x8c, 0xbf, 0x76, 0xf5, 0x09, 0x4a, 0xe0, 0xec, 0xfe, 0x43, 0xb0, 0xf4, 0xd0, - 0x54, 0x1e, 0x1a, 0x76, 0xfd, 0x1a, 0x0f, 0x0a, 0x73, 0xfe, 0x7b, 0xb3, 0x98, 0xb6, 0xac, 0x6e, - 0xff, 0x6c, 0xe6, 0x5a, 0xe7, 0x33, 0xd7, 0xfa, 0x31, 0x73, 0xad, 0x77, 0x73, 0x37, 0x77, 0x3e, - 0x77, 0x73, 0x5f, 0xe7, 0x6e, 0xee, 0x39, 0x09, 0x42, 0x79, 0x74, 0x32, 0xc4, 0x3e, 0x44, 0xa4, - 0x97, 0x36, 0xdb, 0x7b, 0xc6, 0xe4, 0x4b, 0x88, 0x8f, 0x75, 0x45, 0x92, 0x47, 0xe4, 0xd4, 0xf4, - 0x97, 0xaf, 0xc6, 0x4c, 0x0c, 0x4b, 0xea, 0xdf, 0x38, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xfa, - 0x7b, 0xc0, 0xc7, 0xe1, 0x03, 0x00, 0x00, + // 533 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x41, 0x6f, 0xd3, 0x30, + 0x18, 0x6d, 0xd6, 0x52, 0x31, 0x0f, 0x6d, 0x10, 0x6d, 0x6b, 0x1b, 0xa1, 0xb4, 0x54, 0x88, 0x95, + 0xa2, 0xd9, 0x6b, 0x77, 0x40, 0xe2, 0x46, 0x23, 0x0e, 0x3d, 0x8c, 0x43, 0x8e, 0x5c, 0x2a, 0x37, + 0xb5, 0xb2, 0x68, 0xc4, 0x5f, 0x15, 0x7b, 0x61, 0x5c, 0x10, 0xea, 0x91, 0x13, 0x88, 0x1f, 0xc0, + 0x5f, 0xe8, 0x81, 0x1f, 0xb1, 0xe3, 0x80, 0x0b, 0xe2, 0x30, 0xa1, 0x16, 0xa9, 0x7f, 0x03, 0xc5, + 0xf6, 0x0a, 0x19, 0xda, 0xb8, 0x44, 0xfe, 0xde, 0x7b, 0xfe, 0xfc, 0xde, 0x67, 0x07, 0x55, 0x02, + 0xca, 0x25, 0x10, 0x96, 0x04, 0xdd, 0x3d, 0x92, 0x76, 0x88, 0x3c, 0xc1, 0xe3, 0x04, 0x24, 0xd8, + 0xeb, 0x8a, 0xc0, 0x8a, 0xc0, 0x69, 0xc7, 0xb9, 0x1b, 0x02, 0x84, 0x2f, 0x19, 0xa1, 0xe3, 0x88, + 0x50, 0xce, 0x41, 0x52, 0x19, 0x01, 0x17, 0x5a, 0xed, 0x6c, 0x86, 0x10, 0x82, 0x5a, 0x92, 0x6c, + 0x65, 0x50, 0x37, 0x00, 0x11, 0x83, 0x20, 0x43, 0x2a, 0x18, 0x49, 0x3b, 0x43, 0x26, 0x69, 0x87, + 0x04, 0x10, 0x71, 0xc3, 0xd7, 0x34, 0x3f, 0xd0, 0x1b, 0x75, 0x61, 0xa8, 0x8a, 0xd9, 0x1a, 0x8b, + 0x30, 0xb3, 0x15, 0x8b, 0xd0, 0x10, 0x77, 0x68, 0x1c, 0x71, 0x20, 0xea, 0xab, 0xa1, 0xe6, 0x27, + 0x0b, 0xad, 0x1f, 0x88, 0xd0, 0x03, 0x9e, 0xb2, 0x44, 0x7a, 0x10, 0x71, 0x7b, 0x1f, 0x95, 0xb2, + 0x73, 0xaa, 0x56, 0xc3, 0x6a, 0xad, 0x75, 0x6b, 0xd8, 0xf4, 0xce, 0x8c, 0x60, 0x63, 0x04, 0x67, + 0xc2, 0x5e, 0xe9, 0xf4, 0xbc, 0x5e, 0xf0, 0x95, 0xd8, 0x76, 0xd0, 0xcd, 0x84, 0x05, 0x2c, 0x4a, + 0x59, 0x52, 0x5d, 0x69, 0x58, 0xad, 0x55, 0x7f, 0x59, 0xdb, 0xdb, 0xa8, 0x2c, 0x18, 0x1f, 0xb1, + 0xa4, 0x5a, 0x54, 0x8c, 0xa9, 0x9e, 0xdc, 0x9f, 0x2c, 0xa6, 0x6d, 0x53, 0xbc, 0x5b, 0x4c, 0xdb, + 0x9b, 0x7a, 0x9e, 0x79, 0x3b, 0xcd, 0x2a, 0xda, 0xce, 0x23, 0x3e, 0x13, 0x63, 0xe0, 0x82, 0x35, + 0xbf, 0x58, 0x68, 0xe3, 0x0f, 0xf5, 0xcc, 0xf7, 0xba, 0x7b, 0xf6, 0x43, 0x74, 0x3b, 0x00, 0x2e, + 0x13, 0x1a, 0xc8, 0x01, 0x1d, 0x8d, 0x12, 0x26, 0x84, 0x0a, 0xb2, 0xea, 0x6f, 0x5c, 0xe0, 0x4f, + 0x35, 0x6c, 0x7b, 0xa8, 0x4c, 0x63, 0x38, 0xe6, 0x52, 0x1b, 0xee, 0x3d, 0xca, 0xe2, 0xfc, 0x38, + 0xaf, 0x6f, 0xe9, 0xc0, 0x62, 0x74, 0x84, 0x23, 0x20, 0x31, 0x95, 0x87, 0xb8, 0xcf, 0xe5, 0xd7, + 0xcf, 0xbb, 0xc8, 0x4c, 0xa2, 0xcf, 0xa5, 0x6f, 0xb6, 0xe6, 0x72, 0x17, 0xaf, 0xcc, 0x5d, 0xca, + 0xe5, 0x76, 0xb2, 0xb0, 0x5b, 0x97, 0xc3, 0x2a, 0xff, 0xcd, 0x1a, 0xaa, 0x5c, 0x82, 0x2e, 0xe2, + 0x76, 0x3f, 0xac, 0xa0, 0xe2, 0x81, 0x08, 0xed, 0x37, 0x68, 0xed, 0xef, 0xeb, 0x72, 0x71, 0xfe, + 0xb5, 0xe1, 0xfc, 0xb4, 0x9c, 0x07, 0xd7, 0xf3, 0xcb, 0x69, 0xee, 0x4c, 0xbe, 0xfd, 0xfa, 0xb8, + 0x72, 0xcf, 0xae, 0x93, 0x7f, 0x9e, 0x35, 0x09, 0xb4, 0x7e, 0xa0, 0xae, 0x7a, 0x62, 0xa1, 0x5b, + 0xb9, 0x99, 0xd7, 0xaf, 0x3e, 0x41, 0x09, 0x9c, 0x9d, 0xff, 0x08, 0x96, 0x1e, 0x5a, 0xca, 0x43, + 0xd3, 0x6e, 0x5c, 0xe3, 0x41, 0x61, 0xce, 0x8d, 0xb7, 0x8b, 0x69, 0xdb, 0xea, 0xf5, 0x4f, 0x67, + 0xae, 0x75, 0x36, 0x73, 0xad, 0x9f, 0x33, 0xd7, 0x7a, 0x3f, 0x77, 0x0b, 0x67, 0x73, 0xb7, 0xf0, + 0x7d, 0xee, 0x16, 0x5e, 0x90, 0x30, 0x92, 0x87, 0xc7, 0x43, 0x1c, 0x40, 0x4c, 0xbc, 0xac, 0xd9, + 0xee, 0x73, 0x26, 0x5f, 0x41, 0x72, 0xa4, 0x2b, 0x92, 0x3e, 0x26, 0x27, 0xa6, 0xbf, 0x7c, 0x3d, + 0x66, 0x62, 0x58, 0x56, 0x3f, 0xc4, 0xfe, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x31, 0x99, + 0xc6, 0xd6, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 942369b1fc3408a69d27351c9b958eaee7cd2a6b Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 5 Jan 2024 17:21:05 +0900 Subject: [PATCH 24/96] wip: error fix in Canto modules --- ibc/testing/chain.go | 2 +- ibc/testing/chain_test.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go index 5ad3dce6c..218a7f8cc 100644 --- a/ibc/testing/chain.go +++ b/ibc/testing/chain.go @@ -23,6 +23,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/testutil" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/Canto-Network/Canto/v7/ibc/testing/simapp" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" @@ -32,7 +33,6 @@ import ( "github.com/cosmos/ibc-go/v8/modules/core/types" ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" "github.com/cosmos/ibc-go/v8/testing/mock" - "github.com/cosmos/ibc-go/v8/testing/simapp" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/tmhash" diff --git a/ibc/testing/chain_test.go b/ibc/testing/chain_test.go index ea0e2cbe6..bf4a5557e 100644 --- a/ibc/testing/chain_test.go +++ b/ibc/testing/chain_test.go @@ -9,15 +9,15 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/types" - ibctesting "github.com/cosmos/ibc-go/v8/testing" + ibctesting "github.com/Canto-Network/Canto/v7/ibc/testing" ) func TestChangeValSet(t *testing.T) { - coord := ibctesting.NewCoordinator(t, 2) - chainA := coord.GetChain(ibctesting.GetChainID(1)) - chainB := coord.GetChain(ibctesting.GetChainID(2)) + coord := ibctesting.NewCoordinator(t, 1, 1) + chainA := coord.GetChain(ibctesting.GetChainID(2)) + chainB := coord.GetChain(ibctesting.GetChainIDCanto(1)) - path := ibctesting.NewPath(chainA, chainB) + path := ibctesting.NewTransferPath(chainA, chainB) coord.Setup(path) amount, ok := sdkmath.NewIntFromString("10000000000000000000") From 40cf33e9c4217f7c96c0e60961f321e4b3faed0c Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 8 Jan 2024 14:37:43 +0900 Subject: [PATCH 25/96] fix: fix ibc middleware register from app.go --- app/app.go | 11 +++++------ x/onboarding/keeper/ibc_callbacks.go | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/app.go b/app/app.go index 4dd8ce421..58a4f47c5 100644 --- a/app/app.go +++ b/app/app.go @@ -632,12 +632,6 @@ func NewCanto( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) transferModule := transfer.NewAppModule(app.TransferKeeper) - transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) - - // Create static IBC router, add transfer route, then set and seal it - ibcRouter := porttypes.NewRouter() - ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule) - app.IBCKeeper.SetRouter(ibcRouter) // Create Ethermint keepers feeMarketSs := app.GetSubspace(feemarkettypes.ModuleName) @@ -756,6 +750,11 @@ func NewCanto( transferStack = transfer.NewIBCModule(app.TransferKeeper) transferStack = onboarding.NewIBCMiddleware(*app.OnboardingKeeper, transferStack) + // Create static IBC router, add transfer route, then set and seal it + ibcRouter := porttypes.NewRouter() + ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) + app.IBCKeeper.SetRouter(ibcRouter) + /**** Module Options ****/ // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment diff --git a/x/onboarding/keeper/ibc_callbacks.go b/x/onboarding/keeper/ibc_callbacks.go index fabaacb28..ff98b0ab9 100644 --- a/x/onboarding/keeper/ibc_callbacks.go +++ b/x/onboarding/keeper/ibc_callbacks.go @@ -7,7 +7,6 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types" @@ -64,7 +63,7 @@ func (k Keeper) OnRecvPacket( account := k.accountKeeper.GetAccount(ctx, recipient) // onboarding is not supported for module accounts - if _, isModuleAccount := account.(authtypes.ModuleAccountI); isModuleAccount { + if _, isModuleAccount := account.(sdk.ModuleAccountI); isModuleAccount { return ack } From 1bf8d5a4359bc9637b21576f5ada9fbb0da7dda5 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 8 Jan 2024 15:49:57 +0900 Subject: [PATCH 26/96] fix: modify SignAndDeliver for ProposalAddress --- ibc/testing/chain.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ibc/testing/chain.go b/ibc/testing/chain.go index 218a7f8cc..48ecbfcf7 100644 --- a/ibc/testing/chain.go +++ b/ibc/testing/chain.go @@ -286,6 +286,7 @@ func NewTestChainCanto(t *testing.T, coord *Coordinator, chainID string) *TestCh // GetContext returns the current context for the application. func (chain *TestChain) GetContext() sdk.Context { + // return chain.App.GetBaseApp().NewContextLegacy(false, chain.CurrentHeader) return chain.App.GetBaseApp().NewUncachedContext(false, chain.CurrentHeader) } @@ -389,6 +390,7 @@ func (chain *TestChain) NextBlock() { Height: chain.CurrentHeader.Height, Time: chain.CurrentHeader.GetTime(), NextValidatorsHash: chain.NextVals.Hash(), + ProposerAddress: chain.CurrentHeader.ProposerAddress, }) require.NoError(chain.TB, err) chain.commitBlock(res) @@ -442,6 +444,7 @@ func (chain *TestChain) SendMsgs(msgs ...sdk.Msg) (*abci.ExecTxResult, error) { chain.TB, chain.TxConfig, chain.App.GetBaseApp(), + chain.CurrentHeader, msgs, chain.ChainID, []uint64{chain.SenderAccount.GetAccountNumber()}, @@ -738,7 +741,7 @@ func (chain *TestChain) GetTimeoutHeight() clienttypes.Height { // // CONTRACT: BeginBlock must be called before this function. func SignAndDeliver( - tb testing.TB, txCfg client.TxConfig, app *bam.BaseApp, msgs []sdk.Msg, + tb testing.TB, txCfg client.TxConfig, app *bam.BaseApp, header tmproto.Header, msgs []sdk.Msg, chainID string, accNums, accSeqs []uint64, expPass bool, blockTime time.Time, nextValHash []byte, priv ...cryptotypes.PrivKey, ) (*abci.ResponseFinalizeBlock, error) { tb.Helper() @@ -763,6 +766,7 @@ func SignAndDeliver( Time: blockTime, NextValidatorsHash: nextValHash, Txs: [][]byte{txBytes}, + ProposerAddress: header.ProposerAddress, }) } From b02883a58ed79696ab4cee2e1f77b311d41dd71b Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 8 Jan 2024 15:52:16 +0900 Subject: [PATCH 27/96] test: fix ibc module test error string --- x/onboarding/ibc_module_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/onboarding/ibc_module_test.go b/x/onboarding/ibc_module_test.go index 2563a9771..1889f61ed 100644 --- a/x/onboarding/ibc_module_test.go +++ b/x/onboarding/ibc_module_test.go @@ -188,7 +188,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().NoError(err) ack, err := ibcgotesting.ParseAckFromEvents(res.GetEvents()) suite.Require().NoError(err) - suite.Require().Equal(ack, []byte(`{"error":"ABCI code: 4: error handling packet on destination chain: see events for details"}`)) + suite.Require().Equal(ack, []byte(`{"error":"ABCI code: 4: error handling packet: see events for details"}`)) // Send again from chainA to chainB // auto swap should not happen From 703e98964d2dbb042e2b3e0381899be832429c83 Mon Sep 17 00:00:00 2001 From: poorphd Date: Mon, 8 Jan 2024 16:13:39 +0900 Subject: [PATCH 28/96] wip: error fix in Canto modules --- x/epochs/keeper/keeper_test.go | 8 +------- x/inflation/keeper/keeper_test.go | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index 749e61184..64686d83b 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -165,15 +165,9 @@ func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { Time: header.Time, }) suite.app.Commit() - header.Height += 1 - header.Time = header.Time.Add(t) - suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: header.Height, - Time: header.Time, - }) // update ctx - suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) + suite.ctx = suite.app.BaseApp.NewUncachedContext(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index ced3a3f1e..c25e6b562 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -155,15 +155,9 @@ func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { Time: header.Time, }) suite.app.Commit() - header.Height += 1 - header.Time = header.Time.Add(t) - suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: header.Height, - Time: header.Time, - }) // update ctx - suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) + suite.ctx = suite.app.BaseApp.NewUncachedContext(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) From 1f19e00fb40bf397f6e020d07b8513335d773f6c Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 8 Jan 2024 17:01:21 +0900 Subject: [PATCH 29/96] test: modify epoch compared info --- x/epochs/keeper/grpc_query_test.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 98e66f8ff..7e43e6926 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -66,36 +66,39 @@ func (suite *KeeperTestSuite) TestEpochInfo() { Identifier: types.DayEpochID, StartTime: time.Time{}, Duration: time.Hour * 24, - CurrentEpoch: 0, + CurrentEpoch: 1, CurrentEpochStartHeight: 1, CurrentEpochStartTime: time.Time{}, - EpochCountingStarted: false, + EpochCountingStarted: true, } day.StartTime = suite.ctx.BlockTime() + day.CurrentEpochStartTime = suite.ctx.BlockTime() day.CurrentEpochStartHeight = suite.ctx.BlockHeight() week := types.EpochInfo{ Identifier: types.WeekEpochID, StartTime: time.Time{}, Duration: time.Hour * 24 * 7, - CurrentEpoch: 0, + CurrentEpoch: 1, CurrentEpochStartHeight: 1, CurrentEpochStartTime: time.Time{}, - EpochCountingStarted: false, + EpochCountingStarted: true, } week.StartTime = suite.ctx.BlockTime() + week.CurrentEpochStartTime = suite.ctx.BlockTime() week.CurrentEpochStartHeight = suite.ctx.BlockHeight() quarter := types.EpochInfo{ Identifier: "quarter", StartTime: time.Time{}, Duration: time.Hour * 24 * 7 * 13, - CurrentEpoch: 0, + CurrentEpoch: 1, CurrentEpochStartHeight: 1, CurrentEpochStartTime: time.Time{}, - EpochCountingStarted: false, + EpochCountingStarted: true, } quarter.StartTime = suite.ctx.BlockTime() + quarter.CurrentEpochStartTime = suite.ctx.BlockTime() quarter.CurrentEpochStartHeight = suite.ctx.BlockHeight() suite.app.EpochsKeeper.SetEpochInfo(suite.ctx, quarter) suite.Commit() @@ -116,7 +119,7 @@ func (suite *KeeperTestSuite) TestEpochInfo() { suite.Run(fmt.Sprintf("Case %s", tc.name), func() { suite.SetupTest() // reset - ctx := sdk.WrapSDKContext(suite.ctx) + ctx := suite.ctx tc.malleate() res, err := suite.queryClient.EpochInfos(ctx, req) From fdfb629bcf9bfa93cbc7dcf11cf1061ee7b8c272 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 8 Jan 2024 18:26:55 +0900 Subject: [PATCH 30/96] test: fix x/inflation CommitAfter for epoch --- x/inflation/keeper/keeper_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index c25e6b562..04a31c599 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -150,6 +150,7 @@ func (suite *KeeperTestSuite) Commit() { func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { header := suite.ctx.BlockHeader() + header.Time = header.Time.Add(t) suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ Height: header.Height, Time: header.Time, @@ -157,6 +158,7 @@ func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { suite.app.Commit() // update ctx + header.Height += 1 suite.ctx = suite.app.BaseApp.NewUncachedContext(false, header) queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) From 8c4da072766706b317b1821d87856c6dd8adad1e Mon Sep 17 00:00:00 2001 From: dudong2 Date: Tue, 9 Jan 2024 19:33:54 +0900 Subject: [PATCH 31/96] feat: fix chain id --- cmd/cantod/root.go | 42 ++---------------------------------------- init.bat | 2 +- init.sh | 2 +- 3 files changed, 4 insertions(+), 42 deletions(-) diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index e94c44cd3..7e0d6f8ff 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -5,10 +5,8 @@ import ( "fmt" "io" "os" - "path/filepath" "cosmossdk.io/simapp/params" - "cosmossdk.io/store/snapshots" "github.com/spf13/cast" "github.com/spf13/cobra" @@ -17,11 +15,7 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "cosmossdk.io/log" - "cosmossdk.io/store" - snapshottypes "cosmossdk.io/store/snapshots/types" - storetypes "cosmossdk.io/store/types" dbm "github.com/cosmos/cosmos-db" - "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/flags" @@ -243,52 +237,20 @@ type appCreator struct { // newApp is an appCreator func (a appCreator) newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { - var cache storetypes.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(sdkserver.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } + baseappOptions := sdkserver.DefaultBaseappOptions(appOpts) skipUpgradeHeights := make(map[int64]bool) for _, h := range cast.ToIntSlice(appOpts.Get(sdkserver.FlagUnsafeSkipUpgrades)) { skipUpgradeHeights[int64(h)] = true } - pruningOpts, err := sdkserver.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - - snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := dbm.NewDB("metadata", sdkserver.GetAppDBBackend(appOpts), snapshotDir) - if err != nil { - panic(err) - } - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - if err != nil { - panic(err) - } - - snapshotOptions := snapshottypes.NewSnapshotOptions( - cast.ToUint64(appOpts.Get(sdkserver.FlagStateSyncSnapshotInterval)), - cast.ToUint32(appOpts.Get(sdkserver.FlagStateSyncSnapshotKeepRecent)), - ) - cantoApp := app.NewCanto( logger, db, traceStore, true, skipUpgradeHeights, cast.ToString(appOpts.Get(flags.FlagHome)), cast.ToUint(appOpts.Get(sdkserver.FlagInvCheckPeriod)), false, appOpts, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(sdkserver.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(sdkserver.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(sdkserver.FlagHaltTime))), - baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(sdkserver.FlagMinRetainBlocks))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(sdkserver.FlagTrace))), - baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(sdkserver.FlagIndexEvents))), - baseapp.SetSnapshot(snapshotStore, snapshotOptions), + baseappOptions..., ) return cantoApp diff --git a/init.bat b/init.bat index d503b2feb..05c67f0c8 100644 --- a/init.bat +++ b/init.bat @@ -68,4 +68,4 @@ cantod validate-genesis rem Start the node (remove the --pruning=nothing flag if historical queries are not needed) -cantod start --pruning=nothing %TRACE% --log_level %LOGLEVEL% --minimum-gas-prices=0.0001acanto \ No newline at end of file +cantod start --pruning=nothing %TRACE% --log_level %LOGLEVEL% --minimum-gas-prices=0.0001acanto --chain-id %CHAINID% \ No newline at end of file diff --git a/init.sh b/init.sh index 1a3a887e2..c439404a8 100755 --- a/init.sh +++ b/init.sh @@ -107,4 +107,4 @@ if [[ $1 == "pending" ]]; then fi # Start the node (remove the --pruning=nothing flag if historical queries are not needed) -cantod start --pruning=nothing $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001acanto --json-rpc.api eth,txpool,personal,net,debug,web3 --rpc.laddr "tcp://0.0.0.0:26657" --api.enable \ No newline at end of file +cantod start --pruning=nothing $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001acanto --json-rpc.api eth,txpool,personal,net,debug,web3 --rpc.laddr "tcp://0.0.0.0:26657" --api.enable --chain-id $CHAINID \ No newline at end of file From bf788678234f94ccbc28e88ae521d94a902d58a6 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Tue, 9 Jan 2024 19:41:30 +0900 Subject: [PATCH 32/96] feat: update ethermint --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e093178d3..d7276f670 100644 --- a/go.mod +++ b/go.mod @@ -248,7 +248,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 25549de56..24487976f 100644 --- a/go.sum +++ b/go.sum @@ -274,8 +274,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780 h1:+kieKYVfRmR2K+w1zruDe5cjFvLvVKGzvIPj05bJIzQ= -github.com/b-harvest/ethermint v0.0.0-20231205112658-c43216049780/go.mod h1:Dar1/5v1YR/latCocqBcwBHFZCL7BkCxkNMbHuJXXv8= +github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4 h1:7S3aOs2/Nzvc8ohgGm5ujSUiiNxuCKu9wbYsHASL2Tg= +github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4/go.mod h1:IB0HAZP7DLOO4vVQB4ro1rCepf6UdfM0zXRuLxEl4jQ= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From 6c7b23220c1345dc4efbf4ef81ddc5d15424a936 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 10 Jan 2024 14:00:25 +0900 Subject: [PATCH 33/96] feat: add tx, query module command --- cmd/cantod/root.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index 7e0d6f8ff..7d75aa55b 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -20,6 +20,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/crypto/keyring" sdkserver "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -152,6 +153,16 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { txCommand(), ethermintclient.KeyCommands(app.DefaultNodeHome), ) + + autoCliOpts := tempApp.AutoCliOpts() + initClientCtx, _ = config.ReadFromClientConfig(initClientCtx) + autoCliOpts.Keyring, _ = keyring.NewAutoCLIKeyring(initClientCtx.Keyring) + autoCliOpts.ClientCtx = initClientCtx + + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { + panic(err) + } + rootCmd, err := srvflags.AddTxFlags(rootCmd) if err != nil { panic(err) From b77f11732dafe5a73c5f8b15ee6a33c9b970d5f8 Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 12 Jan 2024 16:56:29 +0900 Subject: [PATCH 34/96] wip: MsgUpdateParams for coinswap module --- api/canto/coinswap/v1/coinswap.pulsar.go | 164 ++-- api/canto/coinswap/v1/tx.pulsar.go | 1089 ++++++++++++++++++++-- api/canto/coinswap/v1/tx_grpc.pb.go | 45 + app/app.go | 3 + proto/canto/coinswap/v1/coinswap.proto | 2 +- proto/canto/coinswap/v1/tx.proto | 30 +- x/coinswap/handler.go | 4 + x/coinswap/keeper/keeper.go | 11 + x/coinswap/keeper/msg_server.go | 19 + x/coinswap/types/codec.go | 4 + x/coinswap/types/coinswap.pb.go | 83 +- x/coinswap/types/tx.pb.go | 491 +++++++++- 12 files changed, 1707 insertions(+), 238 deletions(-) diff --git a/api/canto/coinswap/v1/coinswap.pulsar.go b/api/canto/coinswap/v1/coinswap.pulsar.go index abf65a1e9..58000e484 100644 --- a/api/canto/coinswap/v1/coinswap.pulsar.go +++ b/api/canto/coinswap/v1/coinswap.pulsar.go @@ -1824,8 +1824,8 @@ func (x *fastReflection_Params) Interface() protoreflect.ProtoMessage { // While iterating, mutating operations may only be performed // on the current field descriptor. func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Fee != nil { - value := protoreflect.ValueOfMessage(x.Fee.ProtoReflect()) + if x.Fee != "" { + value := protoreflect.ValueOfString(x.Fee) if !f(fd_Params_fee, value) { return } @@ -1870,7 +1870,7 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { case "canto.coinswap.v1.Params.fee": - return x.Fee != nil + return x.Fee != "" case "canto.coinswap.v1.Params.pool_creation_fee": return x.PoolCreationFee != nil case "canto.coinswap.v1.Params.tax_rate": @@ -1896,7 +1896,7 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { case "canto.coinswap.v1.Params.fee": - x.Fee = nil + x.Fee = "" case "canto.coinswap.v1.Params.pool_creation_fee": x.PoolCreationFee = nil case "canto.coinswap.v1.Params.tax_rate": @@ -1923,7 +1923,7 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro switch descriptor.FullName() { case "canto.coinswap.v1.Params.fee": value := x.Fee - return protoreflect.ValueOfMessage(value.ProtoReflect()) + return protoreflect.ValueOfString(value) case "canto.coinswap.v1.Params.pool_creation_fee": value := x.PoolCreationFee return protoreflect.ValueOfMessage(value.ProtoReflect()) @@ -1960,7 +1960,7 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { case "canto.coinswap.v1.Params.fee": - x.Fee = value.Message().Interface().(*v1beta1.Coin) + x.Fee = value.Interface().(string) case "canto.coinswap.v1.Params.pool_creation_fee": x.PoolCreationFee = value.Message().Interface().(*v1beta1.Coin) case "canto.coinswap.v1.Params.tax_rate": @@ -1991,11 +1991,6 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.coinswap.v1.Params.fee": - if x.Fee == nil { - x.Fee = new(v1beta1.Coin) - } - return protoreflect.ValueOfMessage(x.Fee.ProtoReflect()) case "canto.coinswap.v1.Params.pool_creation_fee": if x.PoolCreationFee == nil { x.PoolCreationFee = new(v1beta1.Coin) @@ -2007,6 +2002,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore } value := &_Params_6_list{list: &x.MaxSwapAmount} return protoreflect.ValueOfList(value) + case "canto.coinswap.v1.Params.fee": + panic(fmt.Errorf("field fee of message canto.coinswap.v1.Params is not mutable")) case "canto.coinswap.v1.Params.tax_rate": panic(fmt.Errorf("field tax_rate of message canto.coinswap.v1.Params is not mutable")) case "canto.coinswap.v1.Params.max_standard_coin_per_pool": @@ -2025,8 +2022,7 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { case "canto.coinswap.v1.Params.fee": - m := new(v1beta1.Coin) - return protoreflect.ValueOfMessage(m.ProtoReflect()) + return protoreflect.ValueOfString("") case "canto.coinswap.v1.Params.pool_creation_fee": m := new(v1beta1.Coin) return protoreflect.ValueOfMessage(m.ProtoReflect()) @@ -2106,8 +2102,8 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - if x.Fee != nil { - l = options.Size(x.Fee) + l = len(x.Fee) + if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } if x.PoolCreationFee != nil { @@ -2201,17 +2197,10 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x12 } - if x.Fee != nil { - encoded, err := options.Marshal(x.Fee) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + if len(x.Fee) > 0 { + i -= len(x.Fee) + copy(dAtA[i:], x.Fee) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Fee))) i-- dAtA[i] = 0xa } @@ -2268,7 +2257,7 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -2278,27 +2267,23 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - if x.Fee == nil { - x.Fee = &v1beta1.Coin{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Fee); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } + x.Fee = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -2647,7 +2632,7 @@ type Params struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fee *v1beta1.Coin `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` + Fee string `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` PoolCreationFee *v1beta1.Coin `protobuf:"bytes,2,opt,name=pool_creation_fee,json=poolCreationFee,proto3" json:"pool_creation_fee,omitempty"` TaxRate string `protobuf:"bytes,3,opt,name=tax_rate,json=taxRate,proto3" json:"tax_rate,omitempty"` MaxStandardCoinPerPool string `protobuf:"bytes,4,opt,name=max_standard_coin_per_pool,json=maxStandardCoinPerPool,proto3" json:"max_standard_coin_per_pool,omitempty"` @@ -2674,11 +2659,11 @@ func (*Params) Descriptor() ([]byte, []int) { return file_canto_coinswap_v1_coinswap_proto_rawDescGZIP(), []int{3} } -func (x *Params) GetFee() *v1beta1.Coin { +func (x *Params) GetFee() string { if x != nil { return x.Fee } - return nil + return "" } func (x *Params) GetPoolCreationFee() *v1beta1.Coin { @@ -2742,50 +2727,48 @@ var file_canto_coinswap_v1_coinswap_proto_rawDesc = []byte{ 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x73, 0x63, 0x72, 0x6f, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x70, 0x74, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6c, 0x70, 0x74, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0xdd, 0x03, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x31, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, - 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, 0xc8, 0xde, 0x1f, - 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x65, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, - 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x07, 0x74, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, - 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, - 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, - 0x49, 0x6e, 0x74, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x73, 0x0a, 0x0f, 0x6d, - 0x61, 0x78, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, - 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, - 0x73, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x53, 0x77, 0x61, 0x70, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x42, 0xbf, 0x01, 0x0a, 0x15, 0x63, - 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, - 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, - 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, - 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, - 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, - 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x08, 0x6c, 0x70, 0x74, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0xc2, 0x03, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x43, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, + 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x70, 0x6f, + 0x6f, 0x6c, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x65, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x65, 0x12, 0x4c, 0x0a, 0x08, 0x74, 0x61, 0x78, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x07, 0x74, 0x61, + 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, + 0x6f, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x61, + 0x6e, 0x64, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x73, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x53, 0x77, 0x61, 0x70, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x08, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x42, + 0xbf, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x43, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, + 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, + 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, + 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, + 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2811,14 +2794,13 @@ var file_canto_coinswap_v1_coinswap_proto_goTypes = []interface{}{ var file_canto_coinswap_v1_coinswap_proto_depIdxs = []int32{ 4, // 0: canto.coinswap.v1.Input.coin:type_name -> cosmos.base.v1beta1.Coin 4, // 1: canto.coinswap.v1.Output.coin:type_name -> cosmos.base.v1beta1.Coin - 4, // 2: canto.coinswap.v1.Params.fee:type_name -> cosmos.base.v1beta1.Coin - 4, // 3: canto.coinswap.v1.Params.pool_creation_fee:type_name -> cosmos.base.v1beta1.Coin - 4, // 4: canto.coinswap.v1.Params.max_swap_amount:type_name -> cosmos.base.v1beta1.Coin - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 2: canto.coinswap.v1.Params.pool_creation_fee:type_name -> cosmos.base.v1beta1.Coin + 4, // 3: canto.coinswap.v1.Params.max_swap_amount:type_name -> cosmos.base.v1beta1.Coin + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_canto_coinswap_v1_coinswap_proto_init() } diff --git a/api/canto/coinswap/v1/tx.pulsar.go b/api/canto/coinswap/v1/tx.pulsar.go index da13d0ed9..609baf42c 100644 --- a/api/canto/coinswap/v1/tx.pulsar.go +++ b/api/canto/coinswap/v1/tx.pulsar.go @@ -3268,6 +3268,861 @@ func (x *fastReflection_MsgSwapCoinResponse) ProtoMethods() *protoiface.Methods } } +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.coinswap.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.coinswap.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.coinswap.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.coinswap.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.coinswap.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.coinswap.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.coinswap.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.coinswap.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_coinswap_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_coinswap_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.coinswap.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.coinswap.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.coinswap.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -3576,6 +4431,85 @@ func (*MsgSwapCoinResponse) Descriptor() ([]byte, []int) { return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{5} } +// Since: cosmos-sdk 0.47 +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/coinswap parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{6} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_coinswap_v1_tx_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_coinswap_v1_tx_proto_rawDescGZIP(), []int{7} +} + var File_canto_coinswap_v1_tx_proto protoreflect.FileDescriptor var file_canto_coinswap_v1_tx_proto_rawDesc = []byte{ @@ -3673,38 +4607,57 @@ var file_canto_coinswap_v1_tx_proto_rawDesc = []byte{ 0x21, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x8a, 0xe7, 0xb0, 0x2a, 0x12, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xaa, 0x02, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, - 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, - 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, - 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x53, 0x77, - 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, + 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x8a, 0x03, 0x0a, 0x03, 0x4d, 0x73, 0x67, + 0x12, 0x5e, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x12, 0x22, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x64, 0x64, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x67, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, + 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x53, 0x77, 0x61, + 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, 0x61, + 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x77, - 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, - 0x77, 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, - 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xb9, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, - 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, - 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, - 0xaa, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, - 0x70, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, - 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x5c, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x3a, 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, - 0x1e, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x22, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, + 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, + 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xb9, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x76, 0x31, 0x42, + 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x76, 0x31, 0x3b, 0x63, + 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, + 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, + 0x3a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x77, 0x61, 0x70, 0x3a, 0x3a, 0x56, 0x31, 0xc8, 0xe1, 0x1e, + 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3719,7 +4672,7 @@ func file_canto_coinswap_v1_tx_proto_rawDescGZIP() []byte { return file_canto_coinswap_v1_tx_proto_rawDescData } -var file_canto_coinswap_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_coinswap_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_canto_coinswap_v1_tx_proto_goTypes = []interface{}{ (*MsgAddLiquidity)(nil), // 0: canto.coinswap.v1.MsgAddLiquidity (*MsgAddLiquidityResponse)(nil), // 1: canto.coinswap.v1.MsgAddLiquidityResponse @@ -3727,28 +4680,34 @@ var file_canto_coinswap_v1_tx_proto_goTypes = []interface{}{ (*MsgRemoveLiquidityResponse)(nil), // 3: canto.coinswap.v1.MsgRemoveLiquidityResponse (*MsgSwapOrder)(nil), // 4: canto.coinswap.v1.MsgSwapOrder (*MsgSwapCoinResponse)(nil), // 5: canto.coinswap.v1.MsgSwapCoinResponse - (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin - (*Input)(nil), // 7: canto.coinswap.v1.Input - (*Output)(nil), // 8: canto.coinswap.v1.Output + (*MsgUpdateParams)(nil), // 6: canto.coinswap.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 7: canto.coinswap.v1.MsgUpdateParamsResponse + (*v1beta1.Coin)(nil), // 8: cosmos.base.v1beta1.Coin + (*Input)(nil), // 9: canto.coinswap.v1.Input + (*Output)(nil), // 10: canto.coinswap.v1.Output + (*Params)(nil), // 11: canto.coinswap.v1.Params } var file_canto_coinswap_v1_tx_proto_depIdxs = []int32{ - 6, // 0: canto.coinswap.v1.MsgAddLiquidity.max_token:type_name -> cosmos.base.v1beta1.Coin - 6, // 1: canto.coinswap.v1.MsgAddLiquidityResponse.mint_token:type_name -> cosmos.base.v1beta1.Coin - 6, // 2: canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity:type_name -> cosmos.base.v1beta1.Coin - 6, // 3: canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins:type_name -> cosmos.base.v1beta1.Coin - 7, // 4: canto.coinswap.v1.MsgSwapOrder.input:type_name -> canto.coinswap.v1.Input - 8, // 5: canto.coinswap.v1.MsgSwapOrder.output:type_name -> canto.coinswap.v1.Output - 0, // 6: canto.coinswap.v1.Msg.AddLiquidity:input_type -> canto.coinswap.v1.MsgAddLiquidity - 2, // 7: canto.coinswap.v1.Msg.RemoveLiquidity:input_type -> canto.coinswap.v1.MsgRemoveLiquidity - 4, // 8: canto.coinswap.v1.Msg.SwapCoin:input_type -> canto.coinswap.v1.MsgSwapOrder - 1, // 9: canto.coinswap.v1.Msg.AddLiquidity:output_type -> canto.coinswap.v1.MsgAddLiquidityResponse - 3, // 10: canto.coinswap.v1.Msg.RemoveLiquidity:output_type -> canto.coinswap.v1.MsgRemoveLiquidityResponse - 5, // 11: canto.coinswap.v1.Msg.SwapCoin:output_type -> canto.coinswap.v1.MsgSwapCoinResponse - 9, // [9:12] is the sub-list for method output_type - 6, // [6:9] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 8, // 0: canto.coinswap.v1.MsgAddLiquidity.max_token:type_name -> cosmos.base.v1beta1.Coin + 8, // 1: canto.coinswap.v1.MsgAddLiquidityResponse.mint_token:type_name -> cosmos.base.v1beta1.Coin + 8, // 2: canto.coinswap.v1.MsgRemoveLiquidity.withdraw_liquidity:type_name -> cosmos.base.v1beta1.Coin + 8, // 3: canto.coinswap.v1.MsgRemoveLiquidityResponse.withdraw_coins:type_name -> cosmos.base.v1beta1.Coin + 9, // 4: canto.coinswap.v1.MsgSwapOrder.input:type_name -> canto.coinswap.v1.Input + 10, // 5: canto.coinswap.v1.MsgSwapOrder.output:type_name -> canto.coinswap.v1.Output + 11, // 6: canto.coinswap.v1.MsgUpdateParams.params:type_name -> canto.coinswap.v1.Params + 0, // 7: canto.coinswap.v1.Msg.AddLiquidity:input_type -> canto.coinswap.v1.MsgAddLiquidity + 2, // 8: canto.coinswap.v1.Msg.RemoveLiquidity:input_type -> canto.coinswap.v1.MsgRemoveLiquidity + 4, // 9: canto.coinswap.v1.Msg.SwapCoin:input_type -> canto.coinswap.v1.MsgSwapOrder + 6, // 10: canto.coinswap.v1.Msg.UpdateParams:input_type -> canto.coinswap.v1.MsgUpdateParams + 1, // 11: canto.coinswap.v1.Msg.AddLiquidity:output_type -> canto.coinswap.v1.MsgAddLiquidityResponse + 3, // 12: canto.coinswap.v1.Msg.RemoveLiquidity:output_type -> canto.coinswap.v1.MsgRemoveLiquidityResponse + 5, // 13: canto.coinswap.v1.Msg.SwapCoin:output_type -> canto.coinswap.v1.MsgSwapCoinResponse + 7, // 14: canto.coinswap.v1.Msg.UpdateParams:output_type -> canto.coinswap.v1.MsgUpdateParamsResponse + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_canto_coinswap_v1_tx_proto_init() } @@ -3830,6 +4789,30 @@ func file_canto_coinswap_v1_tx_proto_init() { return nil } } + file_canto_coinswap_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_coinswap_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3837,7 +4820,7 @@ func file_canto_coinswap_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_coinswap_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/api/canto/coinswap/v1/tx_grpc.pb.go b/api/canto/coinswap/v1/tx_grpc.pb.go index f5bea987d..adcc0624f 100644 --- a/api/canto/coinswap/v1/tx_grpc.pb.go +++ b/api/canto/coinswap/v1/tx_grpc.pb.go @@ -22,6 +22,7 @@ const ( Msg_AddLiquidity_FullMethodName = "/canto.coinswap.v1.Msg/AddLiquidity" Msg_RemoveLiquidity_FullMethodName = "/canto.coinswap.v1.Msg/RemoveLiquidity" Msg_SwapCoin_FullMethodName = "/canto.coinswap.v1.Msg/SwapCoin" + Msg_UpdateParams_FullMethodName = "/canto.coinswap.v1.Msg/UpdateParams" ) // MsgClient is the client API for Msg service. @@ -37,6 +38,11 @@ type MsgClient interface { // SwapCoin defines a method for swapping a token with the other token from // the liquidity pool SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc.CallOption) (*MsgSwapCoinResponse, error) + // UpdateParams defines a governance operation for updating the x/coinswap + // module parameters. The authority is defined in the keeper. + // + // Since: cosmos-sdk 0.47 + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) } type msgClient struct { @@ -74,6 +80,15 @@ func (c *msgClient) SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc return out, nil } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -87,6 +102,11 @@ type MsgServer interface { // SwapCoin defines a method for swapping a token with the other token from // the liquidity pool SwapCoin(context.Context, *MsgSwapOrder) (*MsgSwapCoinResponse, error) + // UpdateParams defines a governance operation for updating the x/coinswap + // module parameters. The authority is defined in the keeper. + // + // Since: cosmos-sdk 0.47 + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) mustEmbedUnimplementedMsgServer() } @@ -103,6 +123,9 @@ func (UnimplementedMsgServer) RemoveLiquidity(context.Context, *MsgRemoveLiquidi func (UnimplementedMsgServer) SwapCoin(context.Context, *MsgSwapOrder) (*MsgSwapCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SwapCoin not implemented") } +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -170,6 +193,24 @@ func _Msg_SwapCoin_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -189,6 +230,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "SwapCoin", Handler: _Msg_SwapCoin_Handler, }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "canto/coinswap/v1/tx.proto", diff --git a/app/app.go b/app/app.go index 58a4f47c5..670f99a60 100644 --- a/app/app.go +++ b/app/app.go @@ -9,6 +9,7 @@ import ( "os" "path/filepath" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" "github.com/cosmos/gogoproto/proto" ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" "github.com/gorilla/mux" @@ -349,6 +350,7 @@ func NewCanto( enccodec.RegisterLegacyAminoCodec(legacyAmino) enccodec.RegisterInterfaces(interfaceRegistry) + legacytx.RegressionTestingAminoCodec = legacyAmino eip712.SetEncodingConfig(encodingConfig) @@ -658,6 +660,7 @@ func NewCanto( app.AccountKeeper, app.ModuleAccountAddrs(), authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.InflationKeeper = inflationkeeper.NewKeeper( diff --git a/proto/canto/coinswap/v1/coinswap.proto b/proto/canto/coinswap/v1/coinswap.proto index f97541c40..6a6459bce 100644 --- a/proto/canto/coinswap/v1/coinswap.proto +++ b/proto/canto/coinswap/v1/coinswap.proto @@ -37,7 +37,7 @@ message Params { option (gogoproto.equal) = true; option (gogoproto.goproto_stringer) = false; - cosmos.base.v1beta1.Coin fee = 1 [ + string fee = 1 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false diff --git a/proto/canto/coinswap/v1/tx.proto b/proto/canto/coinswap/v1/tx.proto index a91047a1b..924a55ea8 100644 --- a/proto/canto/coinswap/v1/tx.proto +++ b/proto/canto/coinswap/v1/tx.proto @@ -26,6 +26,12 @@ service Msg { // SwapCoin defines a method for swapping a token with the other token from // the liquidity pool rpc SwapCoin(MsgSwapOrder) returns (MsgSwapCoinResponse); + + // UpdateParams defines a governance operation for updating the x/coinswap + // module parameters. The authority is defined in the keeper. + // + // Since: cosmos-sdk 0.47 + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); } // MsgAddLiquidity defines a msg for adding liquidity to a reserve pool @@ -98,4 +104,26 @@ message MsgSwapOrder { } // MsgSwapCoinResponse defines the Msg/SwapCoin response type -message MsgSwapCoinResponse {} \ No newline at end of file +message MsgSwapCoinResponse {} + +// Since: cosmos-sdk 0.47 +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/coinswap parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/x/coinswap/handler.go b/x/coinswap/handler.go index 34c4a760f..47607019d 100644 --- a/x/coinswap/handler.go +++ b/x/coinswap/handler.go @@ -30,6 +30,10 @@ func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { res, err := msgServer.RemoveLiquidity(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgUpdateParams: + res, err := msgServer.UpdateParams(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + default: return nil, errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) } diff --git a/x/coinswap/keeper/keeper.go b/x/coinswap/keeper/keeper.go index 32517f496..93f31df02 100644 --- a/x/coinswap/keeper/keeper.go +++ b/x/coinswap/keeper/keeper.go @@ -26,6 +26,10 @@ type Keeper struct { paramSpace paramstypes.Subspace feeCollectorName string blockedAddrs map[string]bool + + // the address capable of executing a MsgUpdateParams message. Typically, this + // should be the x/gov module account. + authority string } // NewKeeper returns a coinswap keeper. It handles: @@ -40,6 +44,7 @@ func NewKeeper( ak types.AccountKeeper, blockedAddrs map[string]bool, feeCollectorName string, + authority string, ) Keeper { // ensure coinswap module account is set if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { @@ -59,9 +64,15 @@ func NewKeeper( paramSpace: paramSpace, blockedAddrs: blockedAddrs, feeCollectorName: feeCollectorName, + authority: authority, } } +// GetAuthority returns the x/coinswap module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + // Logger returns a module-specific logger. func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) diff --git a/x/coinswap/keeper/msg_server.go b/x/coinswap/keeper/msg_server.go index 53f8622bb..1ad93e70d 100644 --- a/x/coinswap/keeper/msg_server.go +++ b/x/coinswap/keeper/msg_server.go @@ -7,6 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) @@ -101,3 +102,21 @@ func (m msgServer) SwapCoin(goCtx context.Context, msg *types.MsgSwapOrder) (*ty ) return &types.MsgSwapCoinResponse{}, nil } + +func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + //if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + //} + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/coinswap/types/codec.go b/x/coinswap/types/codec.go index c31b136e0..5170b1934 100644 --- a/x/coinswap/types/codec.go +++ b/x/coinswap/types/codec.go @@ -24,6 +24,9 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgSwapOrder{}, "coinswap/coinswap/MsgSwapOrder", nil) cdc.RegisterConcrete(&MsgAddLiquidity{}, "coinswap/coinswap/MsgAddLiquidity", nil) cdc.RegisterConcrete(&MsgRemoveLiquidity{}, "coinswap/coinswap/MsgRemoveLiquidity", nil) + cdc.RegisterConcrete(&MsgUpdateParams{}, "coinswap/coinswap/MsgUpdateParams", nil) + cdc.RegisterConcrete(&Params{}, "coinswap/coinswap/Params", nil) + } func RegisterInterfaces(registry types.InterfaceRegistry) { @@ -31,6 +34,7 @@ func RegisterInterfaces(registry types.InterfaceRegistry) { &MsgSwapOrder{}, &MsgAddLiquidity{}, &MsgRemoveLiquidity{}, + &MsgUpdateParams{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/coinswap/types/coinswap.pb.go b/x/coinswap/types/coinswap.pb.go index 4a52c73c7..8d7add4b8 100644 --- a/x/coinswap/types/coinswap.pb.go +++ b/x/coinswap/types/coinswap.pb.go @@ -201,43 +201,43 @@ func init() { func init() { proto.RegisterFile("canto/coinswap/v1/coinswap.proto", fileDescriptor_b57883b6d1fc5094) } var fileDescriptor_b57883b6d1fc5094 = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xcb, 0x6b, 0x13, 0x41, - 0x18, 0xdf, 0x6d, 0xd2, 0x34, 0x19, 0x69, 0x4a, 0x16, 0x95, 0x34, 0xc5, 0x4d, 0x08, 0x14, 0x72, - 0xc9, 0xae, 0x69, 0x0f, 0x82, 0xb7, 0x26, 0x41, 0x28, 0x16, 0x0d, 0x2b, 0x28, 0x7a, 0x70, 0xf9, - 0xb2, 0x3b, 0xa6, 0x4b, 0xb2, 0x3b, 0xcb, 0xcc, 0xe4, 0xf5, 0x5f, 0x78, 0xf4, 0xd8, 0xb3, 0x27, - 0x0f, 0xfe, 0x11, 0x39, 0x16, 0x4f, 0x22, 0x58, 0x35, 0xb9, 0xf8, 0x67, 0xc8, 0x3c, 0x12, 0x0b, - 0x42, 0x11, 0xc1, 0x53, 0x66, 0xbe, 0xf9, 0x3d, 0xbe, 0x47, 0xbe, 0x45, 0xb5, 0x00, 0x12, 0x4e, - 0xdc, 0x80, 0x44, 0x09, 0x9b, 0x42, 0xea, 0x4e, 0x5a, 0x9b, 0xb3, 0x93, 0x52, 0xc2, 0x89, 0x55, - 0x92, 0x08, 0x67, 0x13, 0x9d, 0xb4, 0x2a, 0x76, 0x40, 0x58, 0x4c, 0x98, 0xdb, 0x07, 0x86, 0xdd, - 0x49, 0xab, 0x8f, 0x39, 0x28, 0x9a, 0xa2, 0x54, 0x6e, 0x0f, 0xc8, 0x80, 0xc8, 0xa3, 0x2b, 0x4e, - 0x3a, 0xba, 0xaf, 0x58, 0xbe, 0x7a, 0x50, 0x17, 0xf5, 0x54, 0x7f, 0x8e, 0xb6, 0x4f, 0x93, 0x74, - 0xcc, 0xad, 0x32, 0xda, 0x81, 0x30, 0xa4, 0x98, 0xb1, 0xb2, 0x59, 0x33, 0x1b, 0x05, 0x6f, 0x7d, - 0xb5, 0x8e, 0x51, 0x56, 0x38, 0x94, 0xb7, 0x6a, 0x66, 0xe3, 0xd6, 0xd1, 0xbe, 0xa3, 0xf9, 0x22, - 0x05, 0x47, 0xa7, 0xe0, 0x74, 0x48, 0x94, 0xb4, 0xb3, 0x8b, 0xab, 0xaa, 0xe1, 0x49, 0x70, 0xfd, - 0x05, 0xca, 0x3d, 0x1d, 0xf3, 0xff, 0x20, 0xfc, 0xc1, 0x44, 0xd9, 0x1e, 0x21, 0x23, 0xab, 0x88, - 0xb6, 0xa2, 0x50, 0x4b, 0x6e, 0x45, 0xa1, 0x75, 0x88, 0x8a, 0x8c, 0x43, 0x12, 0x02, 0x0d, 0xfd, - 0x10, 0x27, 0x24, 0x96, 0xba, 0x05, 0x6f, 0x77, 0x1d, 0xed, 0x8a, 0xa0, 0xd5, 0x44, 0x56, 0x40, - 0xc6, 0x09, 0xc7, 0x34, 0x05, 0xca, 0xe7, 0x1a, 0x9a, 0x91, 0xd0, 0xd2, 0xf5, 0x17, 0x05, 0x3f, - 0x44, 0x45, 0xcc, 0x02, 0x4a, 0xa6, 0xfe, 0xba, 0x88, 0xac, 0x52, 0x55, 0xd1, 0x13, 0x5d, 0xca, - 0x01, 0x2a, 0x8c, 0x52, 0xae, 0xc5, 0xb6, 0x25, 0x22, 0x3f, 0x4a, 0xb9, 0xd4, 0xa8, 0x7f, 0xcd, - 0xa0, 0x5c, 0x0f, 0x28, 0xc4, 0xcc, 0x7a, 0x8d, 0x32, 0x6f, 0x30, 0x96, 0x59, 0xdf, 0x58, 0x71, - 0x4b, 0x54, 0xfc, 0xe5, 0xaa, 0x7a, 0xa0, 0x10, 0x2c, 0x1c, 0x3a, 0x11, 0x71, 0x63, 0xe0, 0xe7, - 0xce, 0x19, 0x1e, 0x40, 0x30, 0xef, 0xe2, 0xe0, 0xd3, 0xc7, 0x26, 0xd2, 0x02, 0x5d, 0x1c, 0x78, - 0x42, 0xd8, 0x7a, 0x8c, 0x4a, 0x29, 0x21, 0x23, 0x3f, 0xa0, 0x18, 0x78, 0x44, 0x12, 0x5f, 0xb8, - 0xfd, 0x65, 0x7f, 0xf7, 0x04, 0xb3, 0xa3, 0x89, 0x8f, 0x30, 0xb6, 0xce, 0x50, 0x9e, 0xc3, 0xcc, - 0xa7, 0xc0, 0xb1, 0x6a, 0xd0, 0xbf, 0xa4, 0xb5, 0xc3, 0x61, 0xe6, 0x01, 0xc7, 0xd6, 0x4b, 0x54, - 0x89, 0x61, 0xe6, 0x6f, 0x66, 0x24, 0xa6, 0xe9, 0xa7, 0x98, 0xfa, 0xc2, 0x56, 0x75, 0xb5, 0x7d, - 0x4f, 0xeb, 0xdf, 0xf9, 0x53, 0xff, 0x34, 0xe1, 0xde, 0xdd, 0x18, 0x66, 0xcf, 0x34, 0x5f, 0x24, - 0xde, 0xc3, 0x54, 0xfe, 0x15, 0x18, 0xda, 0x93, 0xd2, 0x53, 0x48, 0x7d, 0x88, 0xc5, 0x0c, 0xcb, - 0xb9, 0x5a, 0xe6, 0xe6, 0x9a, 0xef, 0x0b, 0xab, 0xf7, 0xdf, 0xaa, 0x8d, 0x41, 0xc4, 0xcf, 0xc7, - 0x7d, 0x27, 0x20, 0xb1, 0xde, 0x0c, 0xfd, 0xd3, 0x64, 0xe1, 0xd0, 0xe5, 0xf3, 0x14, 0x33, 0x49, - 0x60, 0xde, 0xae, 0x70, 0x9f, 0x42, 0x7a, 0x22, 0x1d, 0x1e, 0xe6, 0xdf, 0x5d, 0x54, 0x8d, 0x9f, - 0x17, 0x55, 0xb3, 0xdd, 0x5b, 0xfc, 0xb0, 0x8d, 0xc5, 0xd2, 0x36, 0x2f, 0x97, 0xb6, 0xf9, 0x7d, - 0x69, 0x9b, 0x6f, 0x57, 0xb6, 0x71, 0xb9, 0xb2, 0x8d, 0xcf, 0x2b, 0xdb, 0x78, 0x75, 0x74, 0xcd, - 0xa0, 0x23, 0x16, 0xba, 0xf9, 0x04, 0xf3, 0x29, 0xa1, 0x43, 0x75, 0x73, 0x27, 0x0f, 0xdc, 0xd9, - 0xef, 0xaf, 0x80, 0x34, 0xec, 0xe7, 0xe4, 0x72, 0x1e, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xd3, - 0xdf, 0x6b, 0xcb, 0x24, 0x04, 0x00, 0x00, + // 566 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x53, 0xcb, 0x6b, 0x13, 0x41, + 0x18, 0xdf, 0x4d, 0xd2, 0x34, 0x19, 0x69, 0x4a, 0x16, 0x95, 0x34, 0xc5, 0x4d, 0x08, 0x14, 0x72, + 0xc9, 0xae, 0x69, 0x0f, 0x82, 0xb7, 0x26, 0x41, 0x28, 0x16, 0x0d, 0x2b, 0x28, 0x7a, 0x59, 0xbe, + 0xec, 0x8e, 0xe9, 0x92, 0xec, 0xce, 0x32, 0x33, 0x79, 0xfd, 0x17, 0x1e, 0x3d, 0xf6, 0xec, 0xc9, + 0x83, 0x7f, 0x81, 0xa7, 0x1c, 0x8b, 0x27, 0xf1, 0x50, 0x35, 0xb9, 0xf8, 0x67, 0xc8, 0x3c, 0x12, + 0x0b, 0x82, 0x88, 0xe0, 0x69, 0x67, 0xbe, 0xf9, 0x3d, 0xbe, 0xc7, 0x7e, 0xa8, 0x1e, 0x40, 0xc2, + 0x89, 0x1b, 0x90, 0x28, 0x61, 0x33, 0x48, 0xdd, 0x69, 0x7b, 0x7b, 0x76, 0x52, 0x4a, 0x38, 0xb1, + 0xca, 0x12, 0xe1, 0x6c, 0xa3, 0xd3, 0x76, 0xd5, 0x0e, 0x08, 0x8b, 0x09, 0x73, 0x07, 0xc0, 0xb0, + 0x3b, 0x6d, 0x0f, 0x30, 0x07, 0x45, 0x53, 0x94, 0xea, 0xed, 0x21, 0x19, 0x12, 0x79, 0x74, 0xc5, + 0x49, 0x47, 0x0f, 0x14, 0xcb, 0x57, 0x0f, 0xea, 0xa2, 0x9e, 0x1a, 0xcf, 0xd1, 0xce, 0x59, 0x92, + 0x4e, 0xb8, 0x55, 0x41, 0xbb, 0x10, 0x86, 0x14, 0x33, 0x56, 0x31, 0xeb, 0x66, 0xb3, 0xe8, 0x6d, + 0xae, 0xd6, 0x09, 0xca, 0x09, 0x87, 0x4a, 0xa6, 0x6e, 0x36, 0x6f, 0x1d, 0x1f, 0x38, 0x9a, 0x2f, + 0x52, 0x70, 0x74, 0x0a, 0x4e, 0x97, 0x44, 0x49, 0x27, 0xb7, 0xbc, 0xae, 0x19, 0x9e, 0x04, 0x37, + 0x5e, 0xa0, 0xfc, 0xd3, 0x09, 0xff, 0x0f, 0xc2, 0xef, 0x4d, 0x94, 0xeb, 0x13, 0x32, 0xb6, 0x4a, + 0x28, 0x13, 0x85, 0x5a, 0x32, 0x13, 0x85, 0xd6, 0x11, 0x2a, 0x31, 0x0e, 0x49, 0x08, 0x34, 0xf4, + 0x43, 0x9c, 0x90, 0x58, 0xea, 0x16, 0xbd, 0xbd, 0x4d, 0xb4, 0x27, 0x82, 0x56, 0x0b, 0x59, 0x01, + 0x99, 0x24, 0x1c, 0xd3, 0x14, 0x28, 0x5f, 0x68, 0x68, 0x56, 0x42, 0xcb, 0x37, 0x5f, 0x14, 0xfc, + 0x08, 0x95, 0x30, 0x0b, 0x28, 0x99, 0xf9, 0x9b, 0x22, 0x72, 0x4a, 0x55, 0x45, 0x4f, 0x75, 0x29, + 0x87, 0xa8, 0x38, 0x4e, 0xb9, 0x16, 0xdb, 0x91, 0x88, 0xc2, 0x38, 0xe5, 0x52, 0xa3, 0xf1, 0x31, + 0x8b, 0xf2, 0x7d, 0xa0, 0x10, 0x33, 0xab, 0x8b, 0xb2, 0xaf, 0x31, 0x56, 0x59, 0x77, 0xda, 0xa2, + 0xac, 0x2f, 0xd7, 0xb5, 0x43, 0x55, 0x38, 0x0b, 0x47, 0x4e, 0x44, 0xdc, 0x18, 0xf8, 0x85, 0x73, + 0x8e, 0x87, 0x10, 0x2c, 0x7a, 0x38, 0xf8, 0xf4, 0xa1, 0x85, 0x74, 0x5f, 0x7a, 0x38, 0xf0, 0x04, + 0xdb, 0x7a, 0x8c, 0xca, 0x29, 0x21, 0x63, 0x3f, 0xa0, 0x18, 0x78, 0x44, 0x12, 0x5f, 0x48, 0xfe, + 0x65, 0x13, 0xf7, 0x05, 0xb3, 0xab, 0x89, 0x8f, 0x30, 0xb6, 0xce, 0x51, 0x81, 0xc3, 0xdc, 0xa7, + 0xc0, 0xb1, 0xea, 0xc2, 0xbf, 0xa4, 0xb5, 0xcb, 0x61, 0xee, 0x01, 0xc7, 0xd6, 0x4b, 0x54, 0x8d, + 0x61, 0xee, 0x6f, 0x07, 0x21, 0x46, 0xe6, 0xa7, 0x98, 0xfa, 0xc2, 0x56, 0xb5, 0xae, 0x73, 0x4f, + 0xeb, 0xdf, 0xf9, 0x5d, 0xff, 0x2c, 0xe1, 0xde, 0xdd, 0x18, 0xe6, 0xcf, 0x34, 0x5f, 0x24, 0xde, + 0xc7, 0x54, 0xce, 0x9b, 0xa1, 0x7d, 0x29, 0x3d, 0x83, 0xd4, 0x87, 0x58, 0x0c, 0xaa, 0x92, 0xaf, + 0x67, 0xff, 0x5c, 0xf3, 0x7d, 0x61, 0xf5, 0xee, 0x6b, 0xad, 0x39, 0x8c, 0xf8, 0xc5, 0x64, 0xe0, + 0x04, 0x24, 0xd6, 0xbf, 0xbf, 0xfe, 0xb4, 0x58, 0x38, 0x72, 0xf9, 0x22, 0xc5, 0x4c, 0x12, 0x98, + 0xb7, 0x27, 0xdc, 0x67, 0x90, 0x9e, 0x4a, 0x87, 0x87, 0x85, 0xb7, 0x97, 0x35, 0xe3, 0xc7, 0x65, + 0xcd, 0xec, 0xf4, 0x97, 0xdf, 0x6d, 0x63, 0xb9, 0xb2, 0xcd, 0xab, 0x95, 0x6d, 0x7e, 0x5b, 0xd9, + 0xe6, 0x9b, 0xb5, 0x6d, 0x5c, 0xad, 0x6d, 0xe3, 0xf3, 0xda, 0x36, 0x5e, 0x1d, 0xdf, 0x30, 0xe8, + 0x8a, 0xad, 0x6d, 0x3d, 0xc1, 0x7c, 0x46, 0xe8, 0x48, 0xdd, 0xdc, 0xe9, 0x03, 0x77, 0xfe, 0x6b, + 0xd5, 0xa5, 0xe1, 0x20, 0x2f, 0x37, 0xf0, 0xe4, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x45, + 0xa6, 0x6f, 0x09, 0x04, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -1068,7 +1068,7 @@ func (m *Params) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Fee", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowCoinswap @@ -1078,15 +1078,16 @@ func (m *Params) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthCoinswap } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthCoinswap } diff --git a/x/coinswap/types/tx.pb.go b/x/coinswap/types/tx.pb.go index 06df4e1fb..581f5404a 100644 --- a/x/coinswap/types/tx.pb.go +++ b/x/coinswap/types/tx.pb.go @@ -271,6 +271,90 @@ func (m *MsgSwapCoinResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgSwapCoinResponse proto.InternalMessageInfo +// Since: cosmos-sdk 0.47 +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/coinswap parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_003205f46878c077, []int{6} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_003205f46878c077, []int{7} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgAddLiquidity)(nil), "canto.coinswap.v1.MsgAddLiquidity") proto.RegisterType((*MsgAddLiquidityResponse)(nil), "canto.coinswap.v1.MsgAddLiquidityResponse") @@ -278,62 +362,71 @@ func init() { proto.RegisterType((*MsgRemoveLiquidityResponse)(nil), "canto.coinswap.v1.MsgRemoveLiquidityResponse") proto.RegisterType((*MsgSwapOrder)(nil), "canto.coinswap.v1.MsgSwapOrder") proto.RegisterType((*MsgSwapCoinResponse)(nil), "canto.coinswap.v1.MsgSwapCoinResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "canto.coinswap.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.coinswap.v1.MsgUpdateParamsResponse") } func init() { proto.RegisterFile("canto/coinswap/v1/tx.proto", fileDescriptor_003205f46878c077) } var fileDescriptor_003205f46878c077 = []byte{ - // 799 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xbf, 0x4f, 0xfb, 0x46, - 0x14, 0x8f, 0xc9, 0x17, 0x14, 0xae, 0x01, 0x82, 0x81, 0xc6, 0x78, 0x70, 0x82, 0x25, 0xaa, 0x28, - 0x12, 0xb6, 0xa0, 0x95, 0x68, 0x59, 0x5a, 0x82, 0x54, 0x15, 0xa9, 0x29, 0xc8, 0xe9, 0x54, 0x55, - 0x44, 0x97, 0xd8, 0x72, 0x4e, 0xe1, 0xee, 0xd2, 0xdc, 0xe5, 0xd7, 0x56, 0x75, 0xec, 0xd4, 0x3f, - 0xa1, 0x73, 0x97, 0x32, 0xf4, 0x8f, 0x60, 0x44, 0x9d, 0xaa, 0x0e, 0x51, 0x0b, 0x03, 0x3b, 0x4b, - 0xd7, 0xea, 0x7c, 0x17, 0x27, 0x38, 0x94, 0xa0, 0x2e, 0x91, 0xdf, 0xbd, 0xcf, 0xbb, 0xf7, 0xde, - 0xe7, 0xf3, 0x89, 0x0d, 0xcc, 0x26, 0x24, 0x9c, 0xba, 0x4d, 0x8a, 0x08, 0x1b, 0xc0, 0x8e, 0xdb, - 0x3f, 0x74, 0xf9, 0xd0, 0xe9, 0x74, 0x29, 0xa7, 0xfa, 0x66, 0x94, 0x73, 0x26, 0x39, 0xa7, 0x7f, - 0x68, 0x16, 0xe7, 0xe1, 0x71, 0x3a, 0x2a, 0x32, 0xad, 0x26, 0x65, 0x98, 0x32, 0xb7, 0x01, 0x59, - 0xe0, 0xf6, 0x0f, 0x1b, 0x01, 0x87, 0x12, 0xa3, 0xf2, 0xdb, 0x21, 0x0d, 0x69, 0xf4, 0xe8, 0x8a, - 0x27, 0x75, 0xba, 0x2b, 0xab, 0xea, 0x32, 0x21, 0x03, 0x95, 0xca, 0xab, 0x0b, 0x31, 0x0b, 0x45, - 0x3b, 0xcc, 0x42, 0x95, 0xd8, 0x84, 0x18, 0x11, 0xea, 0x46, 0xbf, 0xf2, 0xc8, 0xfe, 0x39, 0x0d, - 0x36, 0xaa, 0x2c, 0x3c, 0xf5, 0xfd, 0x2f, 0xd1, 0x77, 0x3d, 0xe4, 0x23, 0x3e, 0xd2, 0x2f, 0xc1, - 0x2a, 0x86, 0xc3, 0x3a, 0xa7, 0xed, 0x80, 0x18, 0x5a, 0x51, 0x2b, 0xbd, 0x77, 0xb4, 0xeb, 0xa8, - 0x0e, 0x62, 0x48, 0x47, 0x0d, 0xe9, 0x9c, 0x51, 0x44, 0x2a, 0xc6, 0xed, 0xb8, 0x90, 0x7a, 0x1a, - 0x17, 0x72, 0x23, 0x88, 0xaf, 0x4f, 0xec, 0xb8, 0xd2, 0xf6, 0x32, 0x18, 0x0e, 0xbf, 0x16, 0x8f, - 0x7a, 0x1f, 0xe8, 0xc1, 0x10, 0x36, 0x79, 0x9d, 0x71, 0x48, 0x7c, 0xd8, 0xf5, 0xeb, 0x10, 0x73, - 0x63, 0xa9, 0xa8, 0x95, 0x56, 0x2b, 0x5f, 0x88, 0xfa, 0x3f, 0xc7, 0x85, 0x1d, 0xd9, 0x81, 0xf9, - 0x6d, 0x07, 0x51, 0x17, 0x43, 0xde, 0x72, 0xce, 0x09, 0x7f, 0x1a, 0x17, 0x76, 0xe5, 0xc5, 0xf3, - 0x17, 0xd8, 0xbf, 0xff, 0x76, 0x00, 0xd4, 0x5c, 0xe7, 0x84, 0x7b, 0xb9, 0x08, 0x52, 0x53, 0x88, - 0x53, 0xcc, 0xf5, 0x16, 0x58, 0xc3, 0x88, 0xd4, 0xaf, 0x27, 0xab, 0x19, 0xe9, 0xa8, 0xe5, 0xd9, - 0xa2, 0x96, 0xdb, 0x6a, 0x97, 0xd9, 0xda, 0x64, 0xb7, 0x2c, 0x46, 0x64, 0xca, 0x99, 0x09, 0x32, - 0x7e, 0x00, 0xfd, 0x6b, 0x44, 0x02, 0xe3, 0x5d, 0x51, 0x2b, 0xa5, 0xbd, 0x38, 0xd6, 0xdf, 0x07, - 0x2b, 0x2c, 0x20, 0x7e, 0xd0, 0x35, 0x96, 0x45, 0x7b, 0x4f, 0x45, 0x27, 0xfb, 0x3f, 0x3c, 0xde, - 0x94, 0x55, 0xf0, 0xe3, 0xe3, 0x4d, 0x79, 0x47, 0x5a, 0x25, 0x21, 0x87, 0x5d, 0x03, 0xf9, 0xc4, - 0x91, 0x17, 0xb0, 0x0e, 0x25, 0x2c, 0xd0, 0x3f, 0x06, 0x00, 0x23, 0xc2, 0xdf, 0x28, 0x95, 0xb7, - 0x2a, 0xc0, 0x91, 0x22, 0xf6, 0xaf, 0x69, 0xa0, 0x57, 0x59, 0xe8, 0x05, 0x98, 0xf6, 0x83, 0xe9, - 0x1a, 0x6d, 0xa0, 0x0f, 0x10, 0x6f, 0xf9, 0x5d, 0x38, 0x98, 0x61, 0x6d, 0xa1, 0x07, 0xf6, 0x94, - 0x07, 0x94, 0x54, 0xf3, 0x57, 0xd8, 0xde, 0xe6, 0xe4, 0x70, 0xda, 0xec, 0x5b, 0x20, 0x06, 0x52, - 0xc3, 0x4b, 0x33, 0x7c, 0xba, 0x48, 0x99, 0xdc, 0x54, 0x19, 0xe9, 0xb2, 0x84, 0x2a, 0x19, 0x8c, - 0x88, 0xf4, 0x5c, 0x07, 0xe4, 0x04, 0xea, 0x99, 0xe3, 0xa4, 0xfc, 0x9f, 0x2f, 0x6a, 0x92, 0x9f, - 0x36, 0x79, 0xcd, 0x6f, 0xeb, 0x18, 0x91, 0x59, 0xb7, 0xfd, 0x1f, 0x0f, 0x94, 0x12, 0x1e, 0x30, - 0x62, 0x0f, 0x24, 0xa4, 0xb1, 0xaf, 0x80, 0x39, 0x7f, 0x1a, 0x3b, 0xe1, 0x33, 0xb0, 0x1e, 0xb3, - 0x1e, 0xbd, 0x5f, 0x0c, 0xad, 0x98, 0x7e, 0xdd, 0x0d, 0x6b, 0x93, 0x02, 0x11, 0x31, 0xfb, 0x1f, - 0x0d, 0x64, 0xab, 0x2c, 0xac, 0x0d, 0x60, 0xe7, 0xa2, 0xeb, 0x07, 0x5d, 0xfd, 0x23, 0xb0, 0x8c, - 0x48, 0xa7, 0xc7, 0x95, 0xfc, 0x86, 0x33, 0xf7, 0x72, 0x73, 0xce, 0x45, 0xbe, 0xf2, 0x4e, 0xf0, - 0xe9, 0x49, 0xb0, 0x7e, 0x0c, 0x56, 0x68, 0x8f, 0x8b, 0xb2, 0xa5, 0x89, 0x6b, 0xe6, 0xca, 0x2e, - 0x22, 0x80, 0xaa, 0x53, 0xf0, 0x67, 0xec, 0xa5, 0x13, 0xec, 0x7d, 0x02, 0xb2, 0x88, 0xd5, 0x1b, - 0xbd, 0x51, 0x9d, 0x8a, 0xd1, 0x22, 0x76, 0x33, 0x95, 0xfc, 0xd3, 0xb8, 0xb0, 0x25, 0xa5, 0x9a, - 0xcd, 0xda, 0x1e, 0x40, 0xac, 0xd2, 0x1b, 0x45, 0x5b, 0x9c, 0xec, 0x09, 0x82, 0xe5, 0x6c, 0x82, - 0x5f, 0x3d, 0xe6, 0x37, 0x5e, 0xd4, 0xde, 0x01, 0x5b, 0x2a, 0x8e, 0x78, 0x51, 0x94, 0x1e, 0xfd, - 0xb2, 0x04, 0xd2, 0x55, 0x16, 0xea, 0x57, 0x20, 0xfb, 0xec, 0xf5, 0x68, 0xbf, 0xb0, 0x51, 0xe2, - 0x0f, 0x6a, 0x96, 0x17, 0x63, 0x62, 0xe9, 0x42, 0xb0, 0x91, 0xfc, 0x1b, 0xee, 0xbf, 0x5c, 0x9e, - 0x80, 0x99, 0x07, 0x6f, 0x82, 0xc5, 0x8d, 0x6a, 0x20, 0x33, 0x59, 0x52, 0x2f, 0xbc, 0x5c, 0x1a, - 0x93, 0x62, 0x7e, 0xf0, 0xdf, 0x80, 0x59, 0x96, 0xcc, 0xe5, 0xef, 0x1f, 0x6f, 0xca, 0x5a, 0xe5, - 0xf2, 0xf6, 0x6f, 0x2b, 0x75, 0x7b, 0x6f, 0x69, 0x77, 0xf7, 0x96, 0xf6, 0xd7, 0xbd, 0xa5, 0xfd, - 0xf4, 0x60, 0xa5, 0xee, 0x1e, 0xac, 0xd4, 0x1f, 0x0f, 0x56, 0xea, 0x9b, 0xa3, 0x10, 0xf1, 0x56, - 0xaf, 0xe1, 0x34, 0x29, 0x76, 0xcf, 0xc4, 0xb5, 0x07, 0x5f, 0x05, 0x7c, 0x40, 0xbb, 0x6d, 0x19, - 0xb9, 0xfd, 0x63, 0x77, 0x38, 0xfd, 0x44, 0xf2, 0x51, 0x27, 0x60, 0x8d, 0x95, 0xe8, 0x03, 0xf5, - 0xe1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0xe8, 0x53, 0x32, 0x70, 0x07, 0x00, 0x00, + // 900 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcf, 0x4f, 0xe3, 0x46, + 0x18, 0x8d, 0x37, 0x0b, 0x4a, 0xa6, 0xec, 0x2e, 0x78, 0xa1, 0x18, 0x1f, 0x92, 0xac, 0xa5, 0xad, + 0x10, 0x12, 0xb6, 0xa0, 0x55, 0xb7, 0x45, 0x95, 0x5a, 0x82, 0x54, 0x15, 0xa9, 0x74, 0x91, 0xd3, + 0x5e, 0xaa, 0x6a, 0xa3, 0x49, 0x3c, 0x72, 0x46, 0x30, 0x33, 0xae, 0x67, 0xf2, 0xeb, 0x56, 0xf5, + 0xb8, 0xa7, 0xfe, 0x09, 0x3d, 0xf6, 0x56, 0x2a, 0xed, 0x1f, 0xc1, 0x71, 0xb5, 0xa7, 0xaa, 0x87, + 0xa8, 0x85, 0x03, 0x77, 0x2e, 0xbd, 0x56, 0xe3, 0x99, 0x38, 0x8e, 0x03, 0x04, 0xf5, 0x82, 0x3c, + 0xf3, 0xbd, 0xef, 0xc7, 0xbc, 0xf7, 0xf8, 0x00, 0xd8, 0x6d, 0x48, 0x05, 0xf3, 0xda, 0x0c, 0x53, + 0xde, 0x87, 0x91, 0xd7, 0xdb, 0xf1, 0xc4, 0xc0, 0x8d, 0x62, 0x26, 0x98, 0xb9, 0x92, 0xc4, 0xdc, + 0x71, 0xcc, 0xed, 0xed, 0xd8, 0xb5, 0x59, 0x78, 0x1a, 0x4e, 0x92, 0xec, 0x4a, 0x9b, 0x71, 0xc2, + 0xb8, 0xd7, 0x82, 0x1c, 0x79, 0xbd, 0x9d, 0x16, 0x12, 0x50, 0x61, 0x74, 0x7c, 0x35, 0x64, 0x21, + 0x4b, 0x3e, 0x3d, 0xf9, 0xa5, 0x6f, 0x37, 0x54, 0x56, 0x53, 0x05, 0xd4, 0x41, 0x87, 0xd6, 0x75, + 0x41, 0xc2, 0x43, 0xd9, 0x8e, 0xf0, 0x50, 0x07, 0x56, 0x20, 0xc1, 0x94, 0x79, 0xc9, 0x4f, 0x75, + 0xe5, 0xfc, 0x5a, 0x04, 0x4f, 0x8e, 0x78, 0xb8, 0x1f, 0x04, 0x5f, 0xe3, 0x1f, 0xbb, 0x38, 0xc0, + 0x62, 0x68, 0x1e, 0x83, 0x32, 0x81, 0x83, 0xa6, 0x60, 0x27, 0x88, 0x5a, 0x46, 0xcd, 0xd8, 0x7c, + 0x6f, 0x77, 0xc3, 0xd5, 0x1d, 0xe4, 0x90, 0xae, 0x1e, 0xd2, 0x3d, 0x60, 0x98, 0xd6, 0xad, 0xf3, + 0x51, 0xb5, 0x70, 0x3d, 0xaa, 0x2e, 0x0f, 0x21, 0x39, 0xdd, 0x73, 0xd2, 0x4c, 0xc7, 0x2f, 0x11, + 0x38, 0xf8, 0x56, 0x7e, 0x9a, 0x3d, 0x60, 0xa2, 0x01, 0x6c, 0x8b, 0x26, 0x17, 0x90, 0x06, 0x30, + 0x0e, 0x9a, 0x90, 0x08, 0xeb, 0x41, 0xcd, 0xd8, 0x2c, 0xd7, 0xbf, 0x92, 0xf9, 0x7f, 0x8d, 0xaa, + 0x6b, 0xaa, 0x03, 0x0f, 0x4e, 0x5c, 0xcc, 0x3c, 0x02, 0x45, 0xc7, 0x3d, 0xa4, 0xe2, 0x7a, 0x54, + 0xdd, 0x50, 0x85, 0x67, 0x0b, 0x38, 0xef, 0xde, 0x6c, 0x03, 0x3d, 0xd7, 0x21, 0x15, 0xfe, 0x72, + 0x02, 0x69, 0x68, 0xc4, 0x3e, 0x11, 0x66, 0x07, 0x3c, 0x22, 0x98, 0x36, 0x4f, 0xc7, 0x4f, 0xb3, + 0x8a, 0x49, 0xcb, 0x83, 0x79, 0x2d, 0x57, 0xf5, 0x5b, 0xb2, 0xb9, 0xf9, 0x6e, 0x4b, 0x04, 0xd3, + 0x09, 0x67, 0x36, 0x28, 0x05, 0x08, 0x06, 0xa7, 0x98, 0x22, 0xeb, 0x61, 0xcd, 0xd8, 0x2c, 0xfa, + 0xe9, 0xd9, 0x7c, 0x1f, 0x2c, 0x72, 0x44, 0x03, 0x14, 0x5b, 0x0b, 0xb2, 0xbd, 0xaf, 0x4f, 0x7b, + 0xcf, 0x7f, 0xbe, 0x3a, 0xdb, 0xd2, 0x87, 0xd7, 0x57, 0x67, 0x5b, 0x6b, 0xca, 0x2a, 0x39, 0x39, + 0x9c, 0x06, 0x58, 0xcf, 0x5d, 0xf9, 0x88, 0x47, 0x8c, 0x72, 0x64, 0x7e, 0x02, 0x00, 0xc1, 0x54, + 0xdc, 0x53, 0x2a, 0xbf, 0x2c, 0xc1, 0x89, 0x22, 0xce, 0xef, 0x45, 0x60, 0x1e, 0xf1, 0xd0, 0x47, + 0x84, 0xf5, 0xd0, 0xe4, 0x19, 0x27, 0xc0, 0xec, 0x63, 0xd1, 0x09, 0x62, 0xd8, 0xcf, 0xb0, 0x36, + 0xd7, 0x03, 0xcf, 0xb4, 0x07, 0xb4, 0x54, 0xb3, 0x25, 0x1c, 0x7f, 0x65, 0x7c, 0x39, 0x69, 0xf6, + 0x03, 0x90, 0x03, 0xe9, 0xe1, 0x95, 0x19, 0x3e, 0x9f, 0xa7, 0xcc, 0xf2, 0x44, 0x19, 0xe5, 0xb2, + 0x9c, 0x2a, 0x25, 0x82, 0xa9, 0xf2, 0x5c, 0x04, 0x96, 0x25, 0x6a, 0xca, 0x71, 0x4a, 0xfe, 0x2f, + 0xe7, 0x35, 0x59, 0x9f, 0x34, 0xb9, 0xcb, 0x6f, 0x8f, 0x09, 0xa6, 0x59, 0xb7, 0xfd, 0x1f, 0x0f, + 0x6c, 0xe6, 0x3c, 0x60, 0xa5, 0x1e, 0xc8, 0x49, 0xe3, 0xbc, 0x02, 0xf6, 0xec, 0x6d, 0xea, 0x84, + 0x2f, 0xc0, 0xe3, 0x94, 0xf5, 0x64, 0xbf, 0x58, 0x46, 0xad, 0x78, 0xb7, 0x1b, 0x1e, 0x8d, 0x13, + 0xe4, 0x89, 0x3b, 0xff, 0x1a, 0x60, 0xe9, 0x88, 0x87, 0x8d, 0x3e, 0x8c, 0x5e, 0xc6, 0x01, 0x8a, + 0xcd, 0x8f, 0xc0, 0x02, 0xa6, 0x51, 0x57, 0x68, 0xf9, 0x2d, 0x77, 0x66, 0xb9, 0xb9, 0x87, 0x32, + 0x5e, 0x7f, 0x28, 0xf9, 0xf4, 0x15, 0xd8, 0x7c, 0x01, 0x16, 0x59, 0x57, 0xc8, 0xb4, 0x07, 0x63, + 0xd7, 0xcc, 0xa4, 0xbd, 0x4c, 0x00, 0x3a, 0x4f, 0xc3, 0xa7, 0xd8, 0x2b, 0xe6, 0xd8, 0xfb, 0x14, + 0x2c, 0x61, 0xde, 0x6c, 0x75, 0x87, 0x4d, 0x26, 0x47, 0x4b, 0xd8, 0x2d, 0xd5, 0xd7, 0xaf, 0x47, + 0xd5, 0xa7, 0x4a, 0xaa, 0x6c, 0xd4, 0xf1, 0x01, 0xe6, 0xf5, 0xee, 0x30, 0x79, 0xc5, 0xde, 0x33, + 0x49, 0xb0, 0x9a, 0x4d, 0xf2, 0x6b, 0xa6, 0xfc, 0xa6, 0x0f, 0x75, 0xd6, 0xc0, 0x53, 0x7d, 0x4e, + 0x78, 0xd1, 0x94, 0x3a, 0x7f, 0x18, 0xc9, 0x6a, 0xfc, 0x2e, 0x0a, 0xa0, 0x40, 0xc7, 0x30, 0x86, + 0x84, 0x9b, 0x1f, 0x83, 0x32, 0xec, 0x8a, 0x0e, 0x8b, 0xc7, 0xbf, 0x16, 0xe5, 0xba, 0xf5, 0xee, + 0xcd, 0xf6, 0xaa, 0x26, 0x79, 0x3f, 0x08, 0x62, 0xc4, 0x79, 0x43, 0xc4, 0x98, 0x86, 0xfe, 0x04, + 0x6a, 0x7e, 0x06, 0x16, 0xa3, 0xa4, 0xc2, 0x1d, 0xac, 0xa8, 0x16, 0xf5, 0xb2, 0x64, 0xe5, 0xb7, + 0xab, 0xb3, 0x2d, 0xc3, 0xd7, 0x39, 0xca, 0x24, 0x93, 0x6a, 0xd3, 0xbb, 0x22, 0x3b, 0x9f, 0xb3, + 0x91, 0xec, 0x8a, 0xec, 0xd5, 0xf8, 0x39, 0xbb, 0xaf, 0x8b, 0xa0, 0x78, 0xc4, 0x43, 0xf3, 0x15, + 0x58, 0x9a, 0xda, 0xf6, 0xce, 0x0d, 0xa3, 0xe4, 0xf6, 0x8d, 0xbd, 0x35, 0x1f, 0x93, 0x3a, 0x31, + 0x04, 0x4f, 0xf2, 0x5b, 0xe5, 0xf9, 0xcd, 0xe9, 0x39, 0x98, 0xbd, 0x7d, 0x2f, 0x58, 0xda, 0xa8, + 0x01, 0x4a, 0x63, 0xcd, 0xcc, 0xea, 0xcd, 0xa9, 0xa9, 0xc6, 0xf6, 0x07, 0xb7, 0x03, 0xb2, 0xa2, + 0x4b, 0x76, 0xa6, 0x04, 0xbf, 0x85, 0x9d, 0x2c, 0xe6, 0x36, 0x76, 0x6e, 0x52, 0xc1, 0x5e, 0xf8, + 0x49, 0x2a, 0x5b, 0x3f, 0x3e, 0xff, 0xa7, 0x52, 0x38, 0xbf, 0xa8, 0x18, 0x6f, 0x2f, 0x2a, 0xc6, + 0xdf, 0x17, 0x15, 0xe3, 0x97, 0xcb, 0x4a, 0xe1, 0xed, 0x65, 0xa5, 0xf0, 0xe7, 0x65, 0xa5, 0xf0, + 0xfd, 0x6e, 0x88, 0x45, 0xa7, 0xdb, 0x72, 0xdb, 0x8c, 0x78, 0x07, 0xb2, 0xf4, 0xf6, 0x37, 0x48, + 0xf4, 0x59, 0x7c, 0xa2, 0x4e, 0x5e, 0xef, 0x85, 0x37, 0x98, 0xfc, 0x47, 0x21, 0x86, 0x11, 0xe2, + 0xad, 0xc5, 0xe4, 0xef, 0xf9, 0x87, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x76, 0xfa, 0x2e, 0x4e, + 0x9f, 0x08, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -357,6 +450,11 @@ type MsgClient interface { // SwapCoin defines a method for swapping a token with the other token from // the liquidity pool SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc.CallOption) (*MsgSwapCoinResponse, error) + // UpdateParams defines a governance operation for updating the x/coinswap + // module parameters. The authority is defined in the keeper. + // + // Since: cosmos-sdk 0.47 + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) } type msgClient struct { @@ -394,6 +492,15 @@ func (c *msgClient) SwapCoin(ctx context.Context, in *MsgSwapOrder, opts ...grpc return out, nil } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.coinswap.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // AddLiquidity defines a method for depositing some tokens to the liquidity @@ -405,6 +512,11 @@ type MsgServer interface { // SwapCoin defines a method for swapping a token with the other token from // the liquidity pool SwapCoin(context.Context, *MsgSwapOrder) (*MsgSwapCoinResponse, error) + // UpdateParams defines a governance operation for updating the x/coinswap + // module parameters. The authority is defined in the keeper. + // + // Since: cosmos-sdk 0.47 + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -420,6 +532,9 @@ func (*UnimplementedMsgServer) RemoveLiquidity(ctx context.Context, req *MsgRemo func (*UnimplementedMsgServer) SwapCoin(ctx context.Context, req *MsgSwapOrder) (*MsgSwapCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SwapCoin not implemented") } +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -479,6 +594,24 @@ func _Msg_SwapCoin_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.coinswap.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "canto.coinswap.v1.Msg", HandlerType: (*MsgServer)(nil), @@ -495,6 +628,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "SwapCoin", Handler: _Msg_SwapCoin_Handler, }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "canto/coinswap/v1/tx.proto", @@ -783,6 +920,69 @@ func (m *MsgSwapCoinResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -894,6 +1094,30 @@ func (m *MsgSwapCoinResponse) Size() (n int) { return n } +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1679,6 +1903,171 @@ func (m *MsgSwapCoinResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From e050c967e1d626c98c9616c5c9b0b9a97e2f26cb Mon Sep 17 00:00:00 2001 From: poorphd Date: Mon, 15 Jan 2024 16:41:29 +0900 Subject: [PATCH 35/96] feat: MsgUpdateParams for erc20 module --- api/canto/erc20/v1/tx.pulsar.go | 1123 ++++++++++++++++++++++++++++-- api/canto/erc20/v1/tx_grpc.pb.go | 39 ++ app/app.go | 1 + proto/canto/erc20/v1/tx.proto | 27 + x/erc20/keeper/keeper.go | 12 + x/erc20/keeper/msg_server.go | 19 + x/erc20/types/codec.go | 8 + x/erc20/types/tx.pb.go | 466 ++++++++++++- x/erc20/types/tx.pb.gw.go | 83 +++ 9 files changed, 1675 insertions(+), 103 deletions(-) diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index cce59c7b5..ad719da90 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -1905,6 +1905,861 @@ func (x *fastReflection_MsgConvertERC20Response) ProtoMethods() *protoiface.Meth } } +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.erc20.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.erc20.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.erc20.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.erc20.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -2093,6 +2948,84 @@ func (*MsgConvertERC20Response) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{3} } +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{5} +} + var File_canto_erc20_v1_tx_proto protoreflect.FileDescriptor var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ @@ -2108,61 +3041,84 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, - 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, - 0x2a, 0x14, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, - 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, - 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x1a, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0x91, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x1a, 0x05, 0x80, 0xe7, - 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, - 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, - 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, - 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x24, + 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x14, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd1, + 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, + 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x1a, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, + 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, + 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x96, 0x03, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, + 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x05, 0x80, 0xe7, 0xb0, + 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, + 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, + 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2177,25 +3133,31 @@ func file_canto_erc20_v1_tx_proto_rawDescGZIP() []byte { return file_canto_erc20_v1_tx_proto_rawDescData } -var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_canto_erc20_v1_tx_proto_goTypes = []interface{}{ (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response - (*v1beta1.Coin)(nil), // 4: cosmos.base.v1beta1.Coin + (*MsgUpdateParams)(nil), // 4: canto.erc20.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 5: canto.erc20.v1.MsgUpdateParamsResponse + (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin + (*Params)(nil), // 7: canto.erc20.v1.Params } var file_canto_erc20_v1_tx_proto_depIdxs = []int32{ - 4, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin - 0, // 1: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin - 2, // 2: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 - 1, // 3: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse - 3, // 4: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response - 3, // [3:5] is the sub-list for method output_type - 1, // [1:3] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 6, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin + 7, // 1: canto.erc20.v1.MsgUpdateParams.params:type_name -> canto.erc20.v1.Params + 0, // 2: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin + 2, // 3: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 + 4, // 4: canto.erc20.v1.Msg.UpdateParams:input_type -> canto.erc20.v1.MsgUpdateParams + 1, // 5: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse + 3, // 6: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response + 5, // 7: canto.erc20.v1.Msg.UpdateParams:output_type -> canto.erc20.v1.MsgUpdateParamsResponse + 5, // [5:8] is the sub-list for method output_type + 2, // [2:5] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_canto_erc20_v1_tx_proto_init() } @@ -2203,6 +3165,7 @@ func file_canto_erc20_v1_tx_proto_init() { if File_canto_erc20_v1_tx_proto != nil { return } + file_canto_erc20_v1_genesis_proto_init() if !protoimpl.UnsafeEnabled { file_canto_erc20_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MsgConvertCoin); i { @@ -2252,6 +3215,30 @@ func file_canto_erc20_v1_tx_proto_init() { return nil } } + file_canto_erc20_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2259,7 +3246,7 @@ func file_canto_erc20_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_erc20_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, diff --git a/api/canto/erc20/v1/tx_grpc.pb.go b/api/canto/erc20/v1/tx_grpc.pb.go index 11fc20f48..2e66e65f7 100644 --- a/api/canto/erc20/v1/tx_grpc.pb.go +++ b/api/canto/erc20/v1/tx_grpc.pb.go @@ -21,6 +21,7 @@ const _ = grpc.SupportPackageIsVersion7 const ( Msg_ConvertCoin_FullMethodName = "/canto.erc20.v1.Msg/ConvertCoin" Msg_ConvertERC20_FullMethodName = "/canto.erc20.v1.Msg/ConvertERC20" + Msg_UpdateParams_FullMethodName = "/canto.erc20.v1.Msg/UpdateParams" ) // MsgClient is the client API for Msg service. @@ -33,6 +34,8 @@ type MsgClient interface { // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token // contract that is registered on the token mapping. ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) } type msgClient struct { @@ -61,6 +64,15 @@ func (c *msgClient) ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts return out, nil } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -71,6 +83,8 @@ type MsgServer interface { // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token // contract that is registered on the token mapping. ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) mustEmbedUnimplementedMsgServer() } @@ -84,6 +98,9 @@ func (UnimplementedMsgServer) ConvertCoin(context.Context, *MsgConvertCoin) (*Ms func (UnimplementedMsgServer) ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) { return nil, status.Errorf(codes.Unimplemented, "method ConvertERC20 not implemented") } +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -133,6 +150,24 @@ func _Msg_ConvertERC20_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -148,6 +183,10 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "ConvertERC20", Handler: _Msg_ConvertERC20_Handler, }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "canto/erc20/v1/tx.proto", diff --git a/app/app.go b/app/app.go index 670f99a60..01ad670ef 100644 --- a/app/app.go +++ b/app/app.go @@ -681,6 +681,7 @@ func NewCanto( app.AccountKeeper, app.BankKeeper, app.EvmKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.GovshuttleKeeper = govshuttlekeeper.NewKeeper( diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index ddceae1ea..e5b4ab000 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -7,6 +7,7 @@ import "cosmos/base/v1beta1/coin.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; +import "canto/erc20/v1/genesis.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; @@ -24,6 +25,11 @@ service Msg { rpc ConvertERC20(MsgConvertERC20) returns (MsgConvertERC20Response) { option (google.api.http).get = "/canto/erc20/v1/tx/convert_erc20"; }; + + // UpdateParams updates the parameters of the x/erc20 module. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { + option (google.api.http).get = "/canto/erc20/v1/tx/update_params"; + }; } // MsgConvertCoin defines a Msg to convert a native Cosmos coin to a ERC20 token @@ -65,3 +71,24 @@ message MsgConvertERC20 { // MsgConvertERC20Response returns no fields message MsgConvertERC20Response {} + +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/x/erc20/keeper/keeper.go b/x/erc20/keeper/keeper.go index ee724fe51..f09ae1bd5 100644 --- a/x/erc20/keeper/keeper.go +++ b/x/erc20/keeper/keeper.go @@ -21,6 +21,10 @@ type Keeper struct { accountKeeper types.AccountKeeper bankKeeper types.BankKeeper evmKeeper types.EVMKeeper + + // the address capable of executing a MsgUpdateParams message. Typically, this + // should be the x/gov module account. + authority string } // NewKeeper creates new instances of the erc20 Keeper @@ -31,6 +35,8 @@ func NewKeeper( ak types.AccountKeeper, bk types.BankKeeper, evmKeeper types.EVMKeeper, + authority string, + ) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { @@ -44,9 +50,15 @@ func NewKeeper( accountKeeper: ak, bankKeeper: bk, evmKeeper: evmKeeper, + authority: authority, } } +// GetAuthority returns the x/erc20 module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + // Logger returns a module-specific logger. func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index 4f6cb3195..b84f9a62a 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -8,6 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" "github.com/hashicorp/go-metrics" @@ -524,3 +525,21 @@ func (k Keeper) convertCoinNativeERC20( return &types.MsgConvertCoinResponse{}, nil } + +func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + //if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + //} + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 665e66458..8832a632c 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -3,6 +3,7 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" @@ -26,11 +27,13 @@ const ( // Amino names convertERC20Name = "canto/MsgConvertERC20" convertCoinName = "canto/MsgConvertCoin" + msgUpdateParams = "canto/MsgUpdateParams" ) // NOTE: This is required for the GetSignBytes function func init() { RegisterLegacyAminoCodec(amino) + cryptocodec.RegisterCrypto(amino) amino.Seal() } @@ -40,6 +43,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgConvertCoin{}, &MsgConvertERC20{}, + &MsgUpdateParams{}, ) registry.RegisterImplementations( (*govtypes.Content)(nil), @@ -55,6 +59,10 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { // concrete types on the provided LegacyAmino codec. These types are used for // Amino JSON serialization and EIP-712 compatibility. func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&RegisterCoinProposal{}, "canto/RegisterCoinProposal", nil) + cdc.RegisterConcrete(&RegisterERC20Proposal{}, "canto/RegisterERC20Proposal", nil) cdc.RegisterConcrete(&MsgConvertERC20{}, convertERC20Name, nil) cdc.RegisterConcrete(&MsgConvertCoin{}, convertCoinName, nil) + cdc.RegisterConcrete(&MsgUpdateParams{}, msgUpdateParams, nil) + cdc.RegisterConcrete(&Params{}, "canto/Params", nil) } diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 8104ae818..2b1302b0e 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -240,51 +240,157 @@ func (m *MsgConvertERC20Response) XXX_DiscardUnknown() { var xxx_messageInfo_MsgConvertERC20Response proto.InternalMessageInfo +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{4} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{5} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgConvertCoin)(nil), "canto.erc20.v1.MsgConvertCoin") proto.RegisterType((*MsgConvertCoinResponse)(nil), "canto.erc20.v1.MsgConvertCoinResponse") proto.RegisterType((*MsgConvertERC20)(nil), "canto.erc20.v1.MsgConvertERC20") proto.RegisterType((*MsgConvertERC20Response)(nil), "canto.erc20.v1.MsgConvertERC20Response") + proto.RegisterType((*MsgUpdateParams)(nil), "canto.erc20.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.erc20.v1.MsgUpdateParamsResponse") } func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 533 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0x41, 0x6f, 0xd3, 0x30, - 0x18, 0x6d, 0xd6, 0x52, 0x31, 0x0f, 0x6d, 0x10, 0x6d, 0x6b, 0x1b, 0xa1, 0xb4, 0x54, 0x88, 0x95, - 0xa2, 0xd9, 0x6b, 0x77, 0x40, 0xe2, 0x46, 0x23, 0x0e, 0x3d, 0x8c, 0x43, 0x8e, 0x5c, 0x2a, 0x37, - 0xb5, 0xb2, 0x68, 0xc4, 0x5f, 0x15, 0x7b, 0x61, 0x5c, 0x10, 0xea, 0x91, 0x13, 0x88, 0x1f, 0xc0, - 0x5f, 0xe8, 0x81, 0x1f, 0xb1, 0xe3, 0x80, 0x0b, 0xe2, 0x30, 0xa1, 0x16, 0xa9, 0x7f, 0x03, 0xc5, - 0xf6, 0x0a, 0x19, 0xda, 0xb8, 0x44, 0xfe, 0xde, 0x7b, 0xfe, 0xfc, 0xde, 0x67, 0x07, 0x55, 0x02, - 0xca, 0x25, 0x10, 0x96, 0x04, 0xdd, 0x3d, 0x92, 0x76, 0x88, 0x3c, 0xc1, 0xe3, 0x04, 0x24, 0xd8, - 0xeb, 0x8a, 0xc0, 0x8a, 0xc0, 0x69, 0xc7, 0xb9, 0x1b, 0x02, 0x84, 0x2f, 0x19, 0xa1, 0xe3, 0x88, - 0x50, 0xce, 0x41, 0x52, 0x19, 0x01, 0x17, 0x5a, 0xed, 0x6c, 0x86, 0x10, 0x82, 0x5a, 0x92, 0x6c, - 0x65, 0x50, 0x37, 0x00, 0x11, 0x83, 0x20, 0x43, 0x2a, 0x18, 0x49, 0x3b, 0x43, 0x26, 0x69, 0x87, - 0x04, 0x10, 0x71, 0xc3, 0xd7, 0x34, 0x3f, 0xd0, 0x1b, 0x75, 0x61, 0xa8, 0x8a, 0xd9, 0x1a, 0x8b, - 0x30, 0xb3, 0x15, 0x8b, 0xd0, 0x10, 0x77, 0x68, 0x1c, 0x71, 0x20, 0xea, 0xab, 0xa1, 0xe6, 0x27, - 0x0b, 0xad, 0x1f, 0x88, 0xd0, 0x03, 0x9e, 0xb2, 0x44, 0x7a, 0x10, 0x71, 0x7b, 0x1f, 0x95, 0xb2, - 0x73, 0xaa, 0x56, 0xc3, 0x6a, 0xad, 0x75, 0x6b, 0xd8, 0xf4, 0xce, 0x8c, 0x60, 0x63, 0x04, 0x67, - 0xc2, 0x5e, 0xe9, 0xf4, 0xbc, 0x5e, 0xf0, 0x95, 0xd8, 0x76, 0xd0, 0xcd, 0x84, 0x05, 0x2c, 0x4a, - 0x59, 0x52, 0x5d, 0x69, 0x58, 0xad, 0x55, 0x7f, 0x59, 0xdb, 0xdb, 0xa8, 0x2c, 0x18, 0x1f, 0xb1, - 0xa4, 0x5a, 0x54, 0x8c, 0xa9, 0x9e, 0xdc, 0x9f, 0x2c, 0xa6, 0x6d, 0x53, 0xbc, 0x5b, 0x4c, 0xdb, - 0x9b, 0x7a, 0x9e, 0x79, 0x3b, 0xcd, 0x2a, 0xda, 0xce, 0x23, 0x3e, 0x13, 0x63, 0xe0, 0x82, 0x35, - 0xbf, 0x58, 0x68, 0xe3, 0x0f, 0xf5, 0xcc, 0xf7, 0xba, 0x7b, 0xf6, 0x43, 0x74, 0x3b, 0x00, 0x2e, - 0x13, 0x1a, 0xc8, 0x01, 0x1d, 0x8d, 0x12, 0x26, 0x84, 0x0a, 0xb2, 0xea, 0x6f, 0x5c, 0xe0, 0x4f, - 0x35, 0x6c, 0x7b, 0xa8, 0x4c, 0x63, 0x38, 0xe6, 0x52, 0x1b, 0xee, 0x3d, 0xca, 0xe2, 0xfc, 0x38, - 0xaf, 0x6f, 0xe9, 0xc0, 0x62, 0x74, 0x84, 0x23, 0x20, 0x31, 0x95, 0x87, 0xb8, 0xcf, 0xe5, 0xd7, - 0xcf, 0xbb, 0xc8, 0x4c, 0xa2, 0xcf, 0xa5, 0x6f, 0xb6, 0xe6, 0x72, 0x17, 0xaf, 0xcc, 0x5d, 0xca, - 0xe5, 0x76, 0xb2, 0xb0, 0x5b, 0x97, 0xc3, 0x2a, 0xff, 0xcd, 0x1a, 0xaa, 0x5c, 0x82, 0x2e, 0xe2, - 0x76, 0x3f, 0xac, 0xa0, 0xe2, 0x81, 0x08, 0xed, 0x37, 0x68, 0xed, 0xef, 0xeb, 0x72, 0x71, 0xfe, - 0xb5, 0xe1, 0xfc, 0xb4, 0x9c, 0x07, 0xd7, 0xf3, 0xcb, 0x69, 0xee, 0x4c, 0xbe, 0xfd, 0xfa, 0xb8, - 0x72, 0xcf, 0xae, 0x93, 0x7f, 0x9e, 0x35, 0x09, 0xb4, 0x7e, 0xa0, 0xae, 0x7a, 0x62, 0xa1, 0x5b, - 0xb9, 0x99, 0xd7, 0xaf, 0x3e, 0x41, 0x09, 0x9c, 0x9d, 0xff, 0x08, 0x96, 0x1e, 0x5a, 0xca, 0x43, - 0xd3, 0x6e, 0x5c, 0xe3, 0x41, 0x61, 0xce, 0x8d, 0xb7, 0x8b, 0x69, 0xdb, 0xea, 0xf5, 0x4f, 0x67, - 0xae, 0x75, 0x36, 0x73, 0xad, 0x9f, 0x33, 0xd7, 0x7a, 0x3f, 0x77, 0x0b, 0x67, 0x73, 0xb7, 0xf0, - 0x7d, 0xee, 0x16, 0x5e, 0x90, 0x30, 0x92, 0x87, 0xc7, 0x43, 0x1c, 0x40, 0x4c, 0xbc, 0xac, 0xd9, - 0xee, 0x73, 0x26, 0x5f, 0x41, 0x72, 0xa4, 0x2b, 0x92, 0x3e, 0x26, 0x27, 0xa6, 0xbf, 0x7c, 0x3d, - 0x66, 0x62, 0x58, 0x56, 0x3f, 0xc4, 0xfe, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x31, 0x99, - 0xc6, 0xd6, 0x03, 0x00, 0x00, + // 651 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xcf, 0x6b, 0x13, 0x41, + 0x14, 0xc7, 0xb3, 0x4d, 0x0d, 0x66, 0x2a, 0xad, 0x2e, 0xfd, 0x91, 0x2e, 0x65, 0x53, 0x83, 0xd8, + 0x58, 0xe9, 0x4e, 0x93, 0x82, 0x62, 0x6f, 0x26, 0x78, 0xe8, 0xa1, 0x22, 0x2b, 0x5e, 0xbc, 0x84, + 0xc9, 0x66, 0xd8, 0x2e, 0x75, 0x67, 0x96, 0x99, 0xc9, 0xda, 0x5e, 0x44, 0x7a, 0xf4, 0x24, 0x08, + 0x5e, 0xbd, 0x7a, 0x92, 0x1c, 0xfa, 0x47, 0xf4, 0x58, 0xeb, 0x45, 0x3c, 0x14, 0x49, 0x84, 0xfc, + 0x1b, 0xb2, 0x33, 0xd3, 0x24, 0x1b, 0xd3, 0x78, 0x09, 0xfb, 0xde, 0xf7, 0xbd, 0xb7, 0x9f, 0xef, + 0xbc, 0xc9, 0x82, 0x15, 0x0f, 0x11, 0x41, 0x21, 0x66, 0x5e, 0x75, 0x1b, 0xc6, 0x15, 0x28, 0x8e, + 0x9c, 0x88, 0x51, 0x41, 0xcd, 0x79, 0x29, 0x38, 0x52, 0x70, 0xe2, 0x8a, 0xb5, 0xe6, 0x53, 0xea, + 0xbf, 0xc1, 0x10, 0x45, 0x01, 0x44, 0x84, 0x50, 0x81, 0x44, 0x40, 0x09, 0x57, 0xd5, 0xd6, 0xa2, + 0x4f, 0x7d, 0x2a, 0x1f, 0x61, 0xf2, 0xa4, 0xb3, 0xb6, 0x47, 0x79, 0x48, 0x39, 0x6c, 0x22, 0x8e, + 0x61, 0x5c, 0x69, 0x62, 0x81, 0x2a, 0xd0, 0xa3, 0x01, 0xd1, 0xfa, 0xaa, 0xd2, 0x1b, 0xaa, 0x51, + 0x05, 0x5a, 0x5a, 0xd1, 0xad, 0x21, 0xf7, 0x13, 0xac, 0x90, 0xfb, 0x5a, 0xb8, 0x83, 0xc2, 0x80, + 0x50, 0x28, 0x7f, 0x75, 0x6a, 0x6d, 0xcc, 0x83, 0x8f, 0x09, 0xe6, 0x81, 0x9e, 0x54, 0xfa, 0x62, + 0x80, 0xf9, 0x7d, 0xee, 0xd7, 0x29, 0x89, 0x31, 0x13, 0x75, 0x1a, 0x10, 0x73, 0x07, 0xcc, 0x26, + 0x14, 0x05, 0x63, 0xdd, 0x28, 0xcf, 0x55, 0x57, 0x1d, 0xfd, 0xe6, 0x04, 0xd3, 0xd1, 0x98, 0x4e, + 0x52, 0x58, 0x9b, 0x3d, 0xbb, 0x2c, 0x66, 0x5c, 0x59, 0x6c, 0x5a, 0xe0, 0x26, 0xc3, 0x1e, 0x0e, + 0x62, 0xcc, 0x0a, 0x33, 0xeb, 0x46, 0x39, 0xef, 0x0e, 0x62, 0x73, 0x19, 0xe4, 0x38, 0x26, 0x2d, + 0xcc, 0x0a, 0x59, 0xa9, 0xe8, 0x68, 0xf7, 0xde, 0x49, 0xbf, 0xb3, 0xa9, 0x83, 0x0f, 0xfd, 0xce, + 0xe6, 0xa2, 0x22, 0x4d, 0xe3, 0x94, 0x0a, 0x60, 0x39, 0x9d, 0x71, 0x31, 0x8f, 0x28, 0xe1, 0xb8, + 0xf4, 0xdd, 0x00, 0x0b, 0x43, 0xe9, 0x99, 0x5b, 0xaf, 0x6e, 0x9b, 0x0f, 0xc0, 0x6d, 0x8f, 0x12, + 0xc1, 0x90, 0x27, 0x1a, 0xa8, 0xd5, 0x62, 0x98, 0x73, 0x69, 0x24, 0xef, 0x2e, 0x5c, 0xe5, 0x9f, + 0xaa, 0xb4, 0x59, 0x07, 0x39, 0x14, 0xd2, 0x36, 0x11, 0x0a, 0xb8, 0xf6, 0x30, 0xb1, 0xf3, 0xeb, + 0xb2, 0xb8, 0xa4, 0x0c, 0xf3, 0xd6, 0xa1, 0x13, 0x50, 0x18, 0x22, 0x71, 0xe0, 0xec, 0x11, 0x71, + 0x71, 0xba, 0x05, 0xf4, 0x49, 0xec, 0x11, 0xe1, 0xea, 0xd6, 0x94, 0xef, 0xec, 0xb5, 0xbe, 0x67, + 0x53, 0xbe, 0xad, 0xc4, 0xec, 0xd2, 0xb8, 0x59, 0xc9, 0x5f, 0x5a, 0x05, 0x2b, 0x63, 0xa9, 0x81, + 0xdd, 0x6f, 0xca, 0xee, 0xab, 0xa8, 0x85, 0x04, 0x7e, 0x81, 0x18, 0x0a, 0xb9, 0xf9, 0x08, 0xe4, + 0x51, 0x5b, 0x1c, 0x50, 0x16, 0x88, 0x63, 0xe5, 0xb3, 0x56, 0xb8, 0x38, 0xdd, 0x5a, 0xd4, 0xa4, + 0xda, 0xea, 0x4b, 0xc1, 0x02, 0xe2, 0xbb, 0xc3, 0x52, 0xf3, 0x09, 0xc8, 0x45, 0x72, 0x82, 0xf4, + 0x3e, 0x57, 0x5d, 0x76, 0xd2, 0x17, 0xda, 0x51, 0xf3, 0x6b, 0xf9, 0xe4, 0x4c, 0xbe, 0xf6, 0x3b, + 0x9b, 0x86, 0xab, 0x1b, 0x76, 0xcb, 0xc9, 0xd6, 0x86, 0xa3, 0xd2, 0x5e, 0x46, 0xe1, 0xb4, 0x97, + 0xd1, 0xd4, 0x95, 0x97, 0xea, 0xe7, 0x2c, 0xc8, 0xee, 0x73, 0xdf, 0x7c, 0x07, 0xe6, 0x46, 0xaf, + 0x9e, 0x3d, 0x8e, 0x91, 0xde, 0xbc, 0x75, 0x7f, 0xba, 0x3e, 0x38, 0xaa, 0x8d, 0x93, 0x1f, 0x7f, + 0x3e, 0xcd, 0xdc, 0x35, 0x8b, 0xf0, 0x9f, 0x3f, 0x30, 0xf4, 0x54, 0x7d, 0x43, 0x5e, 0xdb, 0x13, + 0x03, 0xdc, 0x4a, 0xdd, 0x9f, 0xe2, 0xf5, 0x6f, 0x90, 0x05, 0xd6, 0xc6, 0x7f, 0x0a, 0x06, 0x0c, + 0x65, 0xc9, 0x50, 0x32, 0xd7, 0xa7, 0x30, 0xc8, 0x9c, 0x84, 0x48, 0x6d, 0x75, 0x12, 0xc4, 0x68, + 0xc1, 0x44, 0x88, 0x49, 0xe7, 0x3c, 0x15, 0xa2, 0x2d, 0x1b, 0x1a, 0x6a, 0xad, 0xd6, 0x8d, 0xf7, + 0xc9, 0x96, 0x6b, 0x7b, 0x67, 0x5d, 0xdb, 0x38, 0xef, 0xda, 0xc6, 0xef, 0xae, 0x6d, 0x7c, 0xec, + 0xd9, 0x99, 0xf3, 0x9e, 0x9d, 0xf9, 0xd9, 0xb3, 0x33, 0xaf, 0xa1, 0x1f, 0x88, 0x83, 0x76, 0xd3, + 0xf1, 0x68, 0x08, 0xeb, 0xc9, 0xb0, 0xad, 0xe7, 0x58, 0xbc, 0xa5, 0xec, 0x50, 0x45, 0x30, 0x7e, + 0x0c, 0x8f, 0xf4, 0x7c, 0x71, 0x1c, 0x61, 0xde, 0xcc, 0xc9, 0x2f, 0xcc, 0xce, 0xdf, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x7f, 0x41, 0x11, 0x11, 0x45, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -305,6 +411,8 @@ type MsgClient interface { // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token // contract that is registered on the token mapping. ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) } type msgClient struct { @@ -333,6 +441,15 @@ func (c *msgClient) ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts return out, nil } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom @@ -341,6 +458,8 @@ type MsgServer interface { // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token // contract that is registered on the token mapping. ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -353,6 +472,9 @@ func (*UnimplementedMsgServer) ConvertCoin(ctx context.Context, req *MsgConvertC func (*UnimplementedMsgServer) ConvertERC20(ctx context.Context, req *MsgConvertERC20) (*MsgConvertERC20Response, error) { return nil, status.Errorf(codes.Unimplemented, "method ConvertERC20 not implemented") } +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -394,6 +516,24 @@ func _Msg_ConvertERC20_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.erc20.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "canto.erc20.v1.Msg", HandlerType: (*MsgServer)(nil), @@ -406,6 +546,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "ConvertERC20", Handler: _Msg_ConvertERC20_Handler, }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "canto/erc20/v1/tx.proto", @@ -558,6 +702,69 @@ func (m *MsgConvertERC20Response) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -629,6 +836,30 @@ func (m *MsgConvertERC20Response) Size() (n int) { return n } +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1062,6 +1293,171 @@ func (m *MsgConvertERC20Response) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/erc20/types/tx.pb.gw.go b/x/erc20/types/tx.pb.gw.go index caf45d3e0..a1cbef504 100644 --- a/x/erc20/types/tx.pb.gw.go +++ b/x/erc20/types/tx.pb.gw.go @@ -105,6 +105,42 @@ func local_request_Msg_ConvertERC20_0(ctx context.Context, marshaler runtime.Mar } +var ( + filter_Msg_UpdateParams_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Msg_UpdateParams_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUpdateParams + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UpdateParams_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.UpdateParams(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Msg_UpdateParams_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgUpdateParams + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UpdateParams_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.UpdateParams(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". // UnaryRPC :call MsgServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -157,6 +193,29 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server }) + mux.Handle("GET", pattern_Msg_UpdateParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Msg_UpdateParams_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_UpdateParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -238,6 +297,26 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client }) + mux.Handle("GET", pattern_Msg_UpdateParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Msg_UpdateParams_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_UpdateParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -245,10 +324,14 @@ var ( pattern_Msg_ConvertCoin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "convert_coin"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Msg_ConvertERC20_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "convert_erc20"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Msg_UpdateParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "update_params"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( forward_Msg_ConvertCoin_0 = runtime.ForwardResponseMessage forward_Msg_ConvertERC20_0 = runtime.ForwardResponseMessage + + forward_Msg_UpdateParams_0 = runtime.ForwardResponseMessage ) From 55bb10189d57262894f748c7947236968854e051 Mon Sep 17 00:00:00 2001 From: poorphd Date: Mon, 15 Jan 2024 20:07:57 +0900 Subject: [PATCH 36/96] wip: proposals for erc20 module --- api/canto/erc20/v1/erc20.pulsar.go | 1948 +--------------- api/canto/erc20/v1/tx.pulsar.go | 3493 +++++++++++++++++++++++++++- api/canto/erc20/v1/tx_grpc.pb.go | 129 +- proto/canto/erc20/v1/erc20.proto | 38 - proto/canto/erc20/v1/tx.proto | 88 +- x/erc20/client/cli/tx.go | 456 ++-- x/erc20/client/proposal_handler.go | 22 +- x/erc20/keeper/evm_hooks_test.go | 861 +++---- x/erc20/keeper/evm_test.go | 765 +++--- x/erc20/keeper/integration_test.go | 617 ++--- x/erc20/keeper/msg_server.go | 265 +++ x/erc20/keeper/msg_server_test.go | 2617 +++++++++++---------- x/erc20/keeper/proposals.go | 216 -- x/erc20/keeper/proposals_test.go | 941 ++++---- x/erc20/proposal_handler.go | 153 +- x/erc20/types/codec.go | 14 +- x/erc20/types/erc20.pb.go | 928 +------- x/erc20/types/msg.go | 16 + x/erc20/types/proposal.go | 330 +-- x/erc20/types/proposal_test.go | 555 ++--- x/erc20/types/tx.pb.go | 1839 +++++++++++++-- x/erc20/types/tx.pb.gw.go | 249 ++ 22 files changed, 9570 insertions(+), 6970 deletions(-) diff --git a/api/canto/erc20/v1/erc20.pulsar.go b/api/canto/erc20/v1/erc20.pulsar.go index be69177a8..3f0614492 100644 --- a/api/canto/erc20/v1/erc20.pulsar.go +++ b/api/canto/erc20/v1/erc20.pulsar.go @@ -2,7 +2,6 @@ package erc20v1 import ( - v1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1" fmt "fmt" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" @@ -600,1665 +599,6 @@ func (x *fastReflection_TokenPair) ProtoMethods() *protoiface.Methods { } } -var ( - md_RegisterCoinProposal protoreflect.MessageDescriptor - fd_RegisterCoinProposal_title protoreflect.FieldDescriptor - fd_RegisterCoinProposal_description protoreflect.FieldDescriptor - fd_RegisterCoinProposal_metadata protoreflect.FieldDescriptor -) - -func init() { - file_canto_erc20_v1_erc20_proto_init() - md_RegisterCoinProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterCoinProposal") - fd_RegisterCoinProposal_title = md_RegisterCoinProposal.Fields().ByName("title") - fd_RegisterCoinProposal_description = md_RegisterCoinProposal.Fields().ByName("description") - fd_RegisterCoinProposal_metadata = md_RegisterCoinProposal.Fields().ByName("metadata") -} - -var _ protoreflect.Message = (*fastReflection_RegisterCoinProposal)(nil) - -type fastReflection_RegisterCoinProposal RegisterCoinProposal - -func (x *RegisterCoinProposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_RegisterCoinProposal)(x) -} - -func (x *RegisterCoinProposal) slowProtoReflect() protoreflect.Message { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_RegisterCoinProposal_messageType fastReflection_RegisterCoinProposal_messageType -var _ protoreflect.MessageType = fastReflection_RegisterCoinProposal_messageType{} - -type fastReflection_RegisterCoinProposal_messageType struct{} - -func (x fastReflection_RegisterCoinProposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_RegisterCoinProposal)(nil) -} -func (x fastReflection_RegisterCoinProposal_messageType) New() protoreflect.Message { - return new(fastReflection_RegisterCoinProposal) -} -func (x fastReflection_RegisterCoinProposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_RegisterCoinProposal -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_RegisterCoinProposal) Descriptor() protoreflect.MessageDescriptor { - return md_RegisterCoinProposal -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_RegisterCoinProposal) Type() protoreflect.MessageType { - return _fastReflection_RegisterCoinProposal_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_RegisterCoinProposal) New() protoreflect.Message { - return new(fastReflection_RegisterCoinProposal) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_RegisterCoinProposal) Interface() protoreflect.ProtoMessage { - return (*RegisterCoinProposal)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_RegisterCoinProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Title != "" { - value := protoreflect.ValueOfString(x.Title) - if !f(fd_RegisterCoinProposal_title, value) { - return - } - } - if x.Description != "" { - value := protoreflect.ValueOfString(x.Description) - if !f(fd_RegisterCoinProposal_description, value) { - return - } - } - if x.Metadata != nil { - value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) - if !f(fd_RegisterCoinProposal_metadata, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_RegisterCoinProposal) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.title": - return x.Title != "" - case "canto.erc20.v1.RegisterCoinProposal.description": - return x.Description != "" - case "canto.erc20.v1.RegisterCoinProposal.metadata": - return x.Metadata != nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterCoinProposal) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.title": - x.Title = "" - case "canto.erc20.v1.RegisterCoinProposal.description": - x.Description = "" - case "canto.erc20.v1.RegisterCoinProposal.metadata": - x.Metadata = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_RegisterCoinProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.title": - value := x.Title - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.RegisterCoinProposal.description": - value := x.Description - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.RegisterCoinProposal.metadata": - value := x.Metadata - return protoreflect.ValueOfMessage(value.ProtoReflect()) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterCoinProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.title": - x.Title = value.Interface().(string) - case "canto.erc20.v1.RegisterCoinProposal.description": - x.Description = value.Interface().(string) - case "canto.erc20.v1.RegisterCoinProposal.metadata": - x.Metadata = value.Message().Interface().(*v1beta1.Metadata) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterCoinProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.metadata": - if x.Metadata == nil { - x.Metadata = new(v1beta1.Metadata) - } - return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) - case "canto.erc20.v1.RegisterCoinProposal.title": - panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterCoinProposal is not mutable")) - case "canto.erc20.v1.RegisterCoinProposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterCoinProposal is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_RegisterCoinProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.RegisterCoinProposal.title": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.RegisterCoinProposal.description": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.RegisterCoinProposal.metadata": - m := new(v1beta1.Metadata) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_RegisterCoinProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterCoinProposal", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_RegisterCoinProposal) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterCoinProposal) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_RegisterCoinProposal) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_RegisterCoinProposal) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*RegisterCoinProposal) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Title) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Description) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Metadata != nil { - l = options.Size(x.Metadata) - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*RegisterCoinProposal) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if x.Metadata != nil { - encoded, err := options.Marshal(x.Metadata) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x1a - } - if len(x.Description) > 0 { - i -= len(x.Description) - copy(dAtA[i:], x.Description) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) - i-- - dAtA[i] = 0x12 - } - if len(x.Title) > 0 { - i -= len(x.Title) - copy(dAtA[i:], x.Title) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*RegisterCoinProposal) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.Metadata == nil { - x.Metadata = &v1beta1.Metadata{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_RegisterERC20Proposal protoreflect.MessageDescriptor - fd_RegisterERC20Proposal_title protoreflect.FieldDescriptor - fd_RegisterERC20Proposal_description protoreflect.FieldDescriptor - fd_RegisterERC20Proposal_erc20address protoreflect.FieldDescriptor -) - -func init() { - file_canto_erc20_v1_erc20_proto_init() - md_RegisterERC20Proposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterERC20Proposal") - fd_RegisterERC20Proposal_title = md_RegisterERC20Proposal.Fields().ByName("title") - fd_RegisterERC20Proposal_description = md_RegisterERC20Proposal.Fields().ByName("description") - fd_RegisterERC20Proposal_erc20address = md_RegisterERC20Proposal.Fields().ByName("erc20address") -} - -var _ protoreflect.Message = (*fastReflection_RegisterERC20Proposal)(nil) - -type fastReflection_RegisterERC20Proposal RegisterERC20Proposal - -func (x *RegisterERC20Proposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_RegisterERC20Proposal)(x) -} - -func (x *RegisterERC20Proposal) slowProtoReflect() protoreflect.Message { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_RegisterERC20Proposal_messageType fastReflection_RegisterERC20Proposal_messageType -var _ protoreflect.MessageType = fastReflection_RegisterERC20Proposal_messageType{} - -type fastReflection_RegisterERC20Proposal_messageType struct{} - -func (x fastReflection_RegisterERC20Proposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_RegisterERC20Proposal)(nil) -} -func (x fastReflection_RegisterERC20Proposal_messageType) New() protoreflect.Message { - return new(fastReflection_RegisterERC20Proposal) -} -func (x fastReflection_RegisterERC20Proposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_RegisterERC20Proposal -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_RegisterERC20Proposal) Descriptor() protoreflect.MessageDescriptor { - return md_RegisterERC20Proposal -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_RegisterERC20Proposal) Type() protoreflect.MessageType { - return _fastReflection_RegisterERC20Proposal_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_RegisterERC20Proposal) New() protoreflect.Message { - return new(fastReflection_RegisterERC20Proposal) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_RegisterERC20Proposal) Interface() protoreflect.ProtoMessage { - return (*RegisterERC20Proposal)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_RegisterERC20Proposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Title != "" { - value := protoreflect.ValueOfString(x.Title) - if !f(fd_RegisterERC20Proposal_title, value) { - return - } - } - if x.Description != "" { - value := protoreflect.ValueOfString(x.Description) - if !f(fd_RegisterERC20Proposal_description, value) { - return - } - } - if x.Erc20Address != "" { - value := protoreflect.ValueOfString(x.Erc20Address) - if !f(fd_RegisterERC20Proposal_erc20address, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_RegisterERC20Proposal) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - return x.Title != "" - case "canto.erc20.v1.RegisterERC20Proposal.description": - return x.Description != "" - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - return x.Erc20Address != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterERC20Proposal) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - x.Title = "" - case "canto.erc20.v1.RegisterERC20Proposal.description": - x.Description = "" - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - x.Erc20Address = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_RegisterERC20Proposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - value := x.Title - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.RegisterERC20Proposal.description": - value := x.Description - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - value := x.Erc20Address - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterERC20Proposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - x.Title = value.Interface().(string) - case "canto.erc20.v1.RegisterERC20Proposal.description": - x.Description = value.Interface().(string) - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - x.Erc20Address = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterERC20Proposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) - case "canto.erc20.v1.RegisterERC20Proposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - panic(fmt.Errorf("field erc20address of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_RegisterERC20Proposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.RegisterERC20Proposal.title": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.RegisterERC20Proposal.description": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.RegisterERC20Proposal.erc20address": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_RegisterERC20Proposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterERC20Proposal", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_RegisterERC20Proposal) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_RegisterERC20Proposal) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_RegisterERC20Proposal) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_RegisterERC20Proposal) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*RegisterERC20Proposal) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Title) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Description) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Erc20Address) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*RegisterERC20Proposal) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Erc20Address) > 0 { - i -= len(x.Erc20Address) - copy(dAtA[i:], x.Erc20Address) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Address))) - i-- - dAtA[i] = 0x1a - } - if len(x.Description) > 0 { - i -= len(x.Description) - copy(dAtA[i:], x.Description) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) - i-- - dAtA[i] = 0x12 - } - if len(x.Title) > 0 { - i -= len(x.Title) - copy(dAtA[i:], x.Title) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*RegisterERC20Proposal) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Erc20Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_ToggleTokenConversionProposal protoreflect.MessageDescriptor - fd_ToggleTokenConversionProposal_Title protoreflect.FieldDescriptor - fd_ToggleTokenConversionProposal_description protoreflect.FieldDescriptor - fd_ToggleTokenConversionProposal_token protoreflect.FieldDescriptor -) - -func init() { - file_canto_erc20_v1_erc20_proto_init() - md_ToggleTokenConversionProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("ToggleTokenConversionProposal") - fd_ToggleTokenConversionProposal_Title = md_ToggleTokenConversionProposal.Fields().ByName("Title") - fd_ToggleTokenConversionProposal_description = md_ToggleTokenConversionProposal.Fields().ByName("description") - fd_ToggleTokenConversionProposal_token = md_ToggleTokenConversionProposal.Fields().ByName("token") -} - -var _ protoreflect.Message = (*fastReflection_ToggleTokenConversionProposal)(nil) - -type fastReflection_ToggleTokenConversionProposal ToggleTokenConversionProposal - -func (x *ToggleTokenConversionProposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_ToggleTokenConversionProposal)(x) -} - -func (x *ToggleTokenConversionProposal) slowProtoReflect() protoreflect.Message { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_ToggleTokenConversionProposal_messageType fastReflection_ToggleTokenConversionProposal_messageType -var _ protoreflect.MessageType = fastReflection_ToggleTokenConversionProposal_messageType{} - -type fastReflection_ToggleTokenConversionProposal_messageType struct{} - -func (x fastReflection_ToggleTokenConversionProposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_ToggleTokenConversionProposal)(nil) -} -func (x fastReflection_ToggleTokenConversionProposal_messageType) New() protoreflect.Message { - return new(fastReflection_ToggleTokenConversionProposal) -} -func (x fastReflection_ToggleTokenConversionProposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_ToggleTokenConversionProposal -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_ToggleTokenConversionProposal) Descriptor() protoreflect.MessageDescriptor { - return md_ToggleTokenConversionProposal -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_ToggleTokenConversionProposal) Type() protoreflect.MessageType { - return _fastReflection_ToggleTokenConversionProposal_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_ToggleTokenConversionProposal) New() protoreflect.Message { - return new(fastReflection_ToggleTokenConversionProposal) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_ToggleTokenConversionProposal) Interface() protoreflect.ProtoMessage { - return (*ToggleTokenConversionProposal)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_ToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Title != "" { - value := protoreflect.ValueOfString(x.Title) - if !f(fd_ToggleTokenConversionProposal_Title, value) { - return - } - } - if x.Description != "" { - value := protoreflect.ValueOfString(x.Description) - if !f(fd_ToggleTokenConversionProposal_description, value) { - return - } - } - if x.Token != "" { - value := protoreflect.ValueOfString(x.Token) - if !f(fd_ToggleTokenConversionProposal_token, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_ToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - return x.Title != "" - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - return x.Description != "" - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - return x.Token != "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - x.Title = "" - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - x.Description = "" - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - x.Token = "" - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_ToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - value := x.Title - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - value := x.Description - return protoreflect.ValueOfString(value) - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - value := x.Token - return protoreflect.ValueOfString(value) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - x.Title = value.Interface().(string) - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - x.Description = value.Interface().(string) - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - x.Token = value.Interface().(string) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - panic(fmt.Errorf("field Title of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - panic(fmt.Errorf("field token of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_ToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.ToggleTokenConversionProposal.description": - return protoreflect.ValueOfString("") - case "canto.erc20.v1.ToggleTokenConversionProposal.token": - return protoreflect.ValueOfString("") - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) - } - panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_ToggleTokenConversionProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.ToggleTokenConversionProposal", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_ToggleTokenConversionProposal) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_ToggleTokenConversionProposal) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_ToggleTokenConversionProposal) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_ToggleTokenConversionProposal) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*ToggleTokenConversionProposal) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Title) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Description) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - l = len(x.Token) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*ToggleTokenConversionProposal) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if len(x.Token) > 0 { - i -= len(x.Token) - copy(dAtA[i:], x.Token) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) - i-- - dAtA[i] = 0x1a - } - if len(x.Description) > 0 { - i -= len(x.Description) - copy(dAtA[i:], x.Description) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) - i-- - dAtA[i] = 0x12 - } - if len(x.Title) > 0 { - i -= len(x.Title) - copy(dAtA[i:], x.Title) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*ToggleTokenConversionProposal) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Token = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -2391,175 +731,6 @@ func (x *TokenPair) GetContractOwner() Owner { return Owner_OWNER_UNSPECIFIED } -// RegisterCoinProposal is a gov Content type to register a token pair for a -// native Cosmos coin. -type RegisterCoinProposal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // title of the proposal - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // metadata of the native Cosmos coin - Metadata *v1beta1.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` -} - -func (x *RegisterCoinProposal) Reset() { - *x = RegisterCoinProposal{} - if protoimpl.UnsafeEnabled { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RegisterCoinProposal) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterCoinProposal) ProtoMessage() {} - -// Deprecated: Use RegisterCoinProposal.ProtoReflect.Descriptor instead. -func (*RegisterCoinProposal) Descriptor() ([]byte, []int) { - return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{1} -} - -func (x *RegisterCoinProposal) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *RegisterCoinProposal) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *RegisterCoinProposal) GetMetadata() *v1beta1.Metadata { - if x != nil { - return x.Metadata - } - return nil -} - -// RegisterERC20Proposal is a gov Content type to register a token pair for an -// ERC20 token -type RegisterERC20Proposal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // title of the proposa string title = 1; - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // contract address of ERC20 token - Erc20Address string `protobuf:"bytes,3,opt,name=erc20address,proto3" json:"erc20address,omitempty"` -} - -func (x *RegisterERC20Proposal) Reset() { - *x = RegisterERC20Proposal{} - if protoimpl.UnsafeEnabled { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RegisterERC20Proposal) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RegisterERC20Proposal) ProtoMessage() {} - -// Deprecated: Use RegisterERC20Proposal.ProtoReflect.Descriptor instead. -func (*RegisterERC20Proposal) Descriptor() ([]byte, []int) { - return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{2} -} - -func (x *RegisterERC20Proposal) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *RegisterERC20Proposal) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *RegisterERC20Proposal) GetErc20Address() string { - if x != nil { - return x.Erc20Address - } - return "" -} - -// ToggleTokenConversionProposal is a gov Content type to toggle the conversion -// of a token pair. -type ToggleTokenConversionProposal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // title of the proposal - Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // token identifier can be either the hex contract address of the ERC20 or the - // Cosmos base denomination - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` -} - -func (x *ToggleTokenConversionProposal) Reset() { - *x = ToggleTokenConversionProposal{} - if protoimpl.UnsafeEnabled { - mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ToggleTokenConversionProposal) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ToggleTokenConversionProposal) ProtoMessage() {} - -// Deprecated: Use ToggleTokenConversionProposal.ProtoReflect.Descriptor instead. -func (*ToggleTokenConversionProposal) Descriptor() ([]byte, []int) { - return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{3} -} - -func (x *ToggleTokenConversionProposal) GetTitle() string { - if x != nil { - return x.Title - } - return "" -} - -func (x *ToggleTokenConversionProposal) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *ToggleTokenConversionProposal) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - var File_canto_erc20_v1_erc20_proto protoreflect.FileDescriptor var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ @@ -2567,8 +738,6 @@ var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, @@ -2579,47 +748,23 @@ var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x95, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, - 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, - 0x00, 0x22, 0x79, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x73, 0x0a, 0x1d, - 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, - 0x01, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x57, - 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, - 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, 0x01, - 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, - 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, - 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, + 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, + 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, + 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, + 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, + 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2635,23 +780,18 @@ func file_canto_erc20_v1_erc20_proto_rawDescGZIP() []byte { } var file_canto_erc20_v1_erc20_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_canto_erc20_v1_erc20_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_canto_erc20_v1_erc20_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_canto_erc20_v1_erc20_proto_goTypes = []interface{}{ - (Owner)(0), // 0: canto.erc20.v1.Owner - (*TokenPair)(nil), // 1: canto.erc20.v1.TokenPair - (*RegisterCoinProposal)(nil), // 2: canto.erc20.v1.RegisterCoinProposal - (*RegisterERC20Proposal)(nil), // 3: canto.erc20.v1.RegisterERC20Proposal - (*ToggleTokenConversionProposal)(nil), // 4: canto.erc20.v1.ToggleTokenConversionProposal - (*v1beta1.Metadata)(nil), // 5: cosmos.bank.v1beta1.Metadata + (Owner)(0), // 0: canto.erc20.v1.Owner + (*TokenPair)(nil), // 1: canto.erc20.v1.TokenPair } var file_canto_erc20_v1_erc20_proto_depIdxs = []int32{ 0, // 0: canto.erc20.v1.TokenPair.contract_owner:type_name -> canto.erc20.v1.Owner - 5, // 1: canto.erc20.v1.RegisterCoinProposal.metadata:type_name -> cosmos.bank.v1beta1.Metadata - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name } func init() { file_canto_erc20_v1_erc20_proto_init() } @@ -2672,42 +812,6 @@ func file_canto_erc20_v1_erc20_proto_init() { return nil } } - file_canto_erc20_v1_erc20_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterCoinProposal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_canto_erc20_v1_erc20_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterERC20Proposal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_canto_erc20_v1_erc20_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToggleTokenConversionProposal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2715,7 +819,7 @@ func file_canto_erc20_v1_erc20_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_erc20_v1_erc20_proto_rawDesc, NumEnums: 1, - NumMessages: 4, + NumMessages: 1, NumExtensions: 0, NumServices: 0, }, diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index ad719da90..68e417aef 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -3,6 +3,7 @@ package erc20v1 import ( _ "cosmossdk.io/api/amino" + v1beta11 "cosmossdk.io/api/cosmos/bank/v1beta1" v1beta1 "cosmossdk.io/api/cosmos/base/v1beta1" _ "cosmossdk.io/api/cosmos/msg/v1" fmt "fmt" @@ -2760,6 +2761,2925 @@ func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Meth } } +var ( + md_MsgRegisterCoinProposal protoreflect.MessageDescriptor + fd_MsgRegisterCoinProposal_authority protoreflect.FieldDescriptor + fd_MsgRegisterCoinProposal_title protoreflect.FieldDescriptor + fd_MsgRegisterCoinProposal_description protoreflect.FieldDescriptor + fd_MsgRegisterCoinProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgRegisterCoinProposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoinProposal") + fd_MsgRegisterCoinProposal_authority = md_MsgRegisterCoinProposal.Fields().ByName("authority") + fd_MsgRegisterCoinProposal_title = md_MsgRegisterCoinProposal.Fields().ByName("title") + fd_MsgRegisterCoinProposal_description = md_MsgRegisterCoinProposal.Fields().ByName("description") + fd_MsgRegisterCoinProposal_metadata = md_MsgRegisterCoinProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_MsgRegisterCoinProposal)(nil) + +type fastReflection_MsgRegisterCoinProposal MsgRegisterCoinProposal + +func (x *MsgRegisterCoinProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinProposal)(x) +} + +func (x *MsgRegisterCoinProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRegisterCoinProposal_messageType fastReflection_MsgRegisterCoinProposal_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterCoinProposal_messageType{} + +type fastReflection_MsgRegisterCoinProposal_messageType struct{} + +func (x fastReflection_MsgRegisterCoinProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinProposal)(nil) +} +func (x fastReflection_MsgRegisterCoinProposal_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinProposal) +} +func (x fastReflection_MsgRegisterCoinProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRegisterCoinProposal) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRegisterCoinProposal) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterCoinProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRegisterCoinProposal) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRegisterCoinProposal) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterCoinProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRegisterCoinProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgRegisterCoinProposal_authority, value) { + return + } + } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgRegisterCoinProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgRegisterCoinProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_MsgRegisterCoinProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRegisterCoinProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + return x.Authority != "" + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + return x.Title != "" + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + return x.Description != "" + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + x.Authority = "" + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + x.Title = "" + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + x.Description = "" + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRegisterCoinProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + x.Authority = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + x.Metadata = value.Message().Interface().(*v1beta11.Metadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(v1beta11.Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRegisterCoinProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterCoinProposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterCoinProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + m := new(v1beta11.Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRegisterCoinProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoinProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRegisterCoinProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRegisterCoinProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRegisterCoinProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterCoinProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x1a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterCoinProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &v1beta11.Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRegisterCoinProposalResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgRegisterCoinProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoinProposalResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgRegisterCoinProposalResponse)(nil) + +type fastReflection_MsgRegisterCoinProposalResponse MsgRegisterCoinProposalResponse + +func (x *MsgRegisterCoinProposalResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinProposalResponse)(x) +} + +func (x *MsgRegisterCoinProposalResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRegisterCoinProposalResponse_messageType fastReflection_MsgRegisterCoinProposalResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterCoinProposalResponse_messageType{} + +type fastReflection_MsgRegisterCoinProposalResponse_messageType struct{} + +func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinProposalResponse)(nil) +} +func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinProposalResponse) +} +func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinProposalResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinProposalResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterCoinProposalResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRegisterCoinProposalResponse) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinProposalResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterCoinProposalResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRegisterCoinProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRegisterCoinProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoinProposalResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRegisterCoinProposalResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterCoinProposalResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRegisterCoinProposalResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRegisterERC20Proposal protoreflect.MessageDescriptor + fd_MsgRegisterERC20Proposal_authority protoreflect.FieldDescriptor + fd_MsgRegisterERC20Proposal_title protoreflect.FieldDescriptor + fd_MsgRegisterERC20Proposal_description protoreflect.FieldDescriptor + fd_MsgRegisterERC20Proposal_erc20address protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgRegisterERC20Proposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20Proposal") + fd_MsgRegisterERC20Proposal_authority = md_MsgRegisterERC20Proposal.Fields().ByName("authority") + fd_MsgRegisterERC20Proposal_title = md_MsgRegisterERC20Proposal.Fields().ByName("title") + fd_MsgRegisterERC20Proposal_description = md_MsgRegisterERC20Proposal.Fields().ByName("description") + fd_MsgRegisterERC20Proposal_erc20address = md_MsgRegisterERC20Proposal.Fields().ByName("erc20address") +} + +var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20Proposal)(nil) + +type fastReflection_MsgRegisterERC20Proposal MsgRegisterERC20Proposal + +func (x *MsgRegisterERC20Proposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20Proposal)(x) +} + +func (x *MsgRegisterERC20Proposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRegisterERC20Proposal_messageType fastReflection_MsgRegisterERC20Proposal_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20Proposal_messageType{} + +type fastReflection_MsgRegisterERC20Proposal_messageType struct{} + +func (x fastReflection_MsgRegisterERC20Proposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20Proposal)(nil) +} +func (x fastReflection_MsgRegisterERC20Proposal_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20Proposal) +} +func (x fastReflection_MsgRegisterERC20Proposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20Proposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRegisterERC20Proposal) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20Proposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRegisterERC20Proposal) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterERC20Proposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRegisterERC20Proposal) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20Proposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRegisterERC20Proposal) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterERC20Proposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRegisterERC20Proposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgRegisterERC20Proposal_authority, value) { + return + } + } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgRegisterERC20Proposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgRegisterERC20Proposal_description, value) { + return + } + } + if x.Erc20Address != "" { + value := protoreflect.ValueOfString(x.Erc20Address) + if !f(fd_MsgRegisterERC20Proposal_erc20address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRegisterERC20Proposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + return x.Authority != "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + return x.Title != "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + return x.Description != "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + return x.Erc20Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20Proposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + x.Authority = "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + x.Title = "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + x.Description = "" + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + x.Erc20Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRegisterERC20Proposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + value := x.Erc20Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20Proposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + x.Authority = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + x.Erc20Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20Proposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + panic(fmt.Errorf("field erc20address of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRegisterERC20Proposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRegisterERC20Proposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20Proposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRegisterERC20Proposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20Proposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRegisterERC20Proposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRegisterERC20Proposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Erc20Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterERC20Proposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Erc20Address) > 0 { + i -= len(x.Erc20Address) + copy(dAtA[i:], x.Erc20Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Address))) + i-- + dAtA[i] = 0x22 + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x1a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterERC20Proposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Proposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Erc20Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgRegisterERC20ProposalResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgRegisterERC20ProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20ProposalResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20ProposalResponse)(nil) + +type fastReflection_MsgRegisterERC20ProposalResponse MsgRegisterERC20ProposalResponse + +func (x *MsgRegisterERC20ProposalResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20ProposalResponse)(x) +} + +func (x *MsgRegisterERC20ProposalResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgRegisterERC20ProposalResponse_messageType fastReflection_MsgRegisterERC20ProposalResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20ProposalResponse_messageType{} + +type fastReflection_MsgRegisterERC20ProposalResponse_messageType struct{} + +func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20ProposalResponse)(nil) +} +func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20ProposalResponse) +} +func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20ProposalResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20ProposalResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterERC20ProposalResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20ProposalResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterERC20ProposalResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20ProposalResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgToggleTokenConversionProposal protoreflect.MessageDescriptor + fd_MsgToggleTokenConversionProposal_authority protoreflect.FieldDescriptor + fd_MsgToggleTokenConversionProposal_Title protoreflect.FieldDescriptor + fd_MsgToggleTokenConversionProposal_description protoreflect.FieldDescriptor + fd_MsgToggleTokenConversionProposal_token protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgToggleTokenConversionProposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversionProposal") + fd_MsgToggleTokenConversionProposal_authority = md_MsgToggleTokenConversionProposal.Fields().ByName("authority") + fd_MsgToggleTokenConversionProposal_Title = md_MsgToggleTokenConversionProposal.Fields().ByName("Title") + fd_MsgToggleTokenConversionProposal_description = md_MsgToggleTokenConversionProposal.Fields().ByName("description") + fd_MsgToggleTokenConversionProposal_token = md_MsgToggleTokenConversionProposal.Fields().ByName("token") +} + +var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversionProposal)(nil) + +type fastReflection_MsgToggleTokenConversionProposal MsgToggleTokenConversionProposal + +func (x *MsgToggleTokenConversionProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionProposal)(x) +} + +func (x *MsgToggleTokenConversionProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgToggleTokenConversionProposal_messageType fastReflection_MsgToggleTokenConversionProposal_messageType +var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversionProposal_messageType{} + +type fastReflection_MsgToggleTokenConversionProposal_messageType struct{} + +func (x fastReflection_MsgToggleTokenConversionProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionProposal)(nil) +} +func (x fastReflection_MsgToggleTokenConversionProposal_messageType) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionProposal) +} +func (x fastReflection_MsgToggleTokenConversionProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgToggleTokenConversionProposal) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgToggleTokenConversionProposal) Type() protoreflect.MessageType { + return _fastReflection_MsgToggleTokenConversionProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgToggleTokenConversionProposal) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgToggleTokenConversionProposal) Interface() protoreflect.ProtoMessage { + return (*MsgToggleTokenConversionProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgToggleTokenConversionProposal_authority, value) { + return + } + } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgToggleTokenConversionProposal_Title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgToggleTokenConversionProposal_description, value) { + return + } + } + if x.Token != "" { + value := protoreflect.ValueOfString(x.Token) + if !f(fd_MsgToggleTokenConversionProposal_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + return x.Authority != "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + return x.Title != "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + return x.Description != "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + return x.Token != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + x.Authority = "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + x.Title = "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + x.Description = "" + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + x.Token = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + value := x.Token + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + x.Authority = value.Interface().(string) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + x.Token = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + panic(fmt.Errorf("field Title of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + panic(fmt.Errorf("field token of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgToggleTokenConversionProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversionProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgToggleTokenConversionProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgToggleTokenConversionProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Token) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Token) > 0 { + i -= len(x.Token) + copy(dAtA[i:], x.Token) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) + i-- + dAtA[i] = 0x22 + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x1a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgToggleTokenConversionProposalResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_erc20_v1_tx_proto_init() + md_MsgToggleTokenConversionProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversionProposalResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversionProposalResponse)(nil) + +type fastReflection_MsgToggleTokenConversionProposalResponse MsgToggleTokenConversionProposalResponse + +func (x *MsgToggleTokenConversionProposalResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionProposalResponse)(x) +} + +func (x *MsgToggleTokenConversionProposalResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgToggleTokenConversionProposalResponse_messageType fastReflection_MsgToggleTokenConversionProposalResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversionProposalResponse_messageType{} + +type fastReflection_MsgToggleTokenConversionProposalResponse_messageType struct{} + +func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionProposalResponse)(nil) +} +func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionProposalResponse) +} +func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionProposalResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionProposalResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgToggleTokenConversionProposalResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionProposalResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Interface() protoreflect.ProtoMessage { + return (*MsgToggleTokenConversionProposalResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + } + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversionProposalResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgToggleTokenConversionProposalResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -3026,6 +5946,283 @@ func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{5} } +// MsgRegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +type MsgRegisterCoinProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposal + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // metadata of the native Cosmos coin + Metadata *v1beta11.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *MsgRegisterCoinProposal) Reset() { + *x = MsgRegisterCoinProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRegisterCoinProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRegisterCoinProposal) ProtoMessage() {} + +// Deprecated: Use MsgRegisterCoinProposal.ProtoReflect.Descriptor instead. +func (*MsgRegisterCoinProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{6} +} + +func (x *MsgRegisterCoinProposal) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgRegisterCoinProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgRegisterCoinProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgRegisterCoinProposal) GetMetadata() *v1beta11.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +type MsgRegisterCoinProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgRegisterCoinProposalResponse) Reset() { + *x = MsgRegisterCoinProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRegisterCoinProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRegisterCoinProposalResponse) ProtoMessage() {} + +// Deprecated: Use MsgRegisterCoinProposalResponse.ProtoReflect.Descriptor instead. +func (*MsgRegisterCoinProposalResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{7} +} + +// MsgRegisterERC20Proposal is a gov Content type to register a token pair for +// an ERC20 token +type MsgRegisterERC20Proposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposa string title = 1; + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // contract address of ERC20 token + Erc20Address string `protobuf:"bytes,4,opt,name=erc20address,proto3" json:"erc20address,omitempty"` +} + +func (x *MsgRegisterERC20Proposal) Reset() { + *x = MsgRegisterERC20Proposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRegisterERC20Proposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRegisterERC20Proposal) ProtoMessage() {} + +// Deprecated: Use MsgRegisterERC20Proposal.ProtoReflect.Descriptor instead. +func (*MsgRegisterERC20Proposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{8} +} + +func (x *MsgRegisterERC20Proposal) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgRegisterERC20Proposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgRegisterERC20Proposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgRegisterERC20Proposal) GetErc20Address() string { + if x != nil { + return x.Erc20Address + } + return "" +} + +type MsgRegisterERC20ProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgRegisterERC20ProposalResponse) Reset() { + *x = MsgRegisterERC20ProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgRegisterERC20ProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgRegisterERC20ProposalResponse) ProtoMessage() {} + +// Deprecated: Use MsgRegisterERC20ProposalResponse.ProtoReflect.Descriptor instead. +func (*MsgRegisterERC20ProposalResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{9} +} + +// MsgToggleTokenConversionProposal is a gov Content type to toggle the +// conversion of a token pair. +type MsgToggleTokenConversionProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposal + Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *MsgToggleTokenConversionProposal) Reset() { + *x = MsgToggleTokenConversionProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgToggleTokenConversionProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgToggleTokenConversionProposal) ProtoMessage() {} + +// Deprecated: Use MsgToggleTokenConversionProposal.ProtoReflect.Descriptor instead. +func (*MsgToggleTokenConversionProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{10} +} + +func (x *MsgToggleTokenConversionProposal) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgToggleTokenConversionProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgToggleTokenConversionProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgToggleTokenConversionProposal) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type MsgToggleTokenConversionProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgToggleTokenConversionProposalResponse) Reset() { + *x = MsgToggleTokenConversionProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_tx_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgToggleTokenConversionProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgToggleTokenConversionProposalResponse) ProtoMessage() {} + +// Deprecated: Use MsgToggleTokenConversionProposalResponse.ProtoReflect.Descriptor instead. +func (*MsgToggleTokenConversionProposalResponse) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{11} +} + var File_canto_erc20_v1_tx_proto protoreflect.FileDescriptor var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ @@ -3036,7 +6233,9 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, + 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, @@ -3082,43 +6281,129 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x96, 0x03, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, - 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, - 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x05, 0x80, 0xe7, 0xb0, - 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, - 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, - 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x17, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x34, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x21, 0x0a, 0x1f, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xe5, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x3a, 0x35, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x20, + 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x3d, 0xe8, 0xa0, 0x1f, 0x01, 0x82, 0xe7, 0xb0, 0x2a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x26, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x2a, 0x0a, 0x28, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, + 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x32, 0xb1, 0x07, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, + 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, + 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, + 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, + 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x69, 0x6e, + 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0xa7, 0x01, 0x0a, 0x15, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x30, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x12, 0xc8, 0x01, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x38, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, + 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x05, + 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, + 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3133,31 +6418,45 @@ func file_canto_erc20_v1_tx_proto_rawDescGZIP() []byte { return file_canto_erc20_v1_tx_proto_rawDescData } -var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_canto_erc20_v1_tx_proto_goTypes = []interface{}{ - (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin - (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse - (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 - (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response - (*MsgUpdateParams)(nil), // 4: canto.erc20.v1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 5: canto.erc20.v1.MsgUpdateParamsResponse - (*v1beta1.Coin)(nil), // 6: cosmos.base.v1beta1.Coin - (*Params)(nil), // 7: canto.erc20.v1.Params + (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin + (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse + (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 + (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response + (*MsgUpdateParams)(nil), // 4: canto.erc20.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 5: canto.erc20.v1.MsgUpdateParamsResponse + (*MsgRegisterCoinProposal)(nil), // 6: canto.erc20.v1.MsgRegisterCoinProposal + (*MsgRegisterCoinProposalResponse)(nil), // 7: canto.erc20.v1.MsgRegisterCoinProposalResponse + (*MsgRegisterERC20Proposal)(nil), // 8: canto.erc20.v1.MsgRegisterERC20Proposal + (*MsgRegisterERC20ProposalResponse)(nil), // 9: canto.erc20.v1.MsgRegisterERC20ProposalResponse + (*MsgToggleTokenConversionProposal)(nil), // 10: canto.erc20.v1.MsgToggleTokenConversionProposal + (*MsgToggleTokenConversionProposalResponse)(nil), // 11: canto.erc20.v1.MsgToggleTokenConversionProposalResponse + (*v1beta1.Coin)(nil), // 12: cosmos.base.v1beta1.Coin + (*Params)(nil), // 13: canto.erc20.v1.Params + (*v1beta11.Metadata)(nil), // 14: cosmos.bank.v1beta1.Metadata } var file_canto_erc20_v1_tx_proto_depIdxs = []int32{ - 6, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin - 7, // 1: canto.erc20.v1.MsgUpdateParams.params:type_name -> canto.erc20.v1.Params - 0, // 2: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin - 2, // 3: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 - 4, // 4: canto.erc20.v1.Msg.UpdateParams:input_type -> canto.erc20.v1.MsgUpdateParams - 1, // 5: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse - 3, // 6: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response - 5, // 7: canto.erc20.v1.Msg.UpdateParams:output_type -> canto.erc20.v1.MsgUpdateParamsResponse - 5, // [5:8] is the sub-list for method output_type - 2, // [2:5] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 12, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin + 13, // 1: canto.erc20.v1.MsgUpdateParams.params:type_name -> canto.erc20.v1.Params + 14, // 2: canto.erc20.v1.MsgRegisterCoinProposal.metadata:type_name -> cosmos.bank.v1beta1.Metadata + 0, // 3: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin + 2, // 4: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 + 4, // 5: canto.erc20.v1.Msg.UpdateParams:input_type -> canto.erc20.v1.MsgUpdateParams + 6, // 6: canto.erc20.v1.Msg.RegisterCoinProposal:input_type -> canto.erc20.v1.MsgRegisterCoinProposal + 8, // 7: canto.erc20.v1.Msg.RegisterERC20Proposal:input_type -> canto.erc20.v1.MsgRegisterERC20Proposal + 10, // 8: canto.erc20.v1.Msg.ToggleTokenConversionProposal:input_type -> canto.erc20.v1.MsgToggleTokenConversionProposal + 1, // 9: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse + 3, // 10: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response + 5, // 11: canto.erc20.v1.Msg.UpdateParams:output_type -> canto.erc20.v1.MsgUpdateParamsResponse + 7, // 12: canto.erc20.v1.Msg.RegisterCoinProposal:output_type -> canto.erc20.v1.MsgRegisterCoinProposalResponse + 9, // 13: canto.erc20.v1.Msg.RegisterERC20Proposal:output_type -> canto.erc20.v1.MsgRegisterERC20ProposalResponse + 11, // 14: canto.erc20.v1.Msg.ToggleTokenConversionProposal:output_type -> canto.erc20.v1.MsgToggleTokenConversionProposalResponse + 9, // [9:15] is the sub-list for method output_type + 3, // [3:9] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_canto_erc20_v1_tx_proto_init() } @@ -3239,6 +6538,78 @@ func file_canto_erc20_v1_tx_proto_init() { return nil } } + file_canto_erc20_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRegisterCoinProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRegisterCoinProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRegisterERC20Proposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgRegisterERC20ProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgToggleTokenConversionProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgToggleTokenConversionProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3246,7 +6617,7 @@ func file_canto_erc20_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_erc20_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 12, NumExtensions: 0, NumServices: 1, }, diff --git a/api/canto/erc20/v1/tx_grpc.pb.go b/api/canto/erc20/v1/tx_grpc.pb.go index 2e66e65f7..61dbf99e6 100644 --- a/api/canto/erc20/v1/tx_grpc.pb.go +++ b/api/canto/erc20/v1/tx_grpc.pb.go @@ -19,9 +19,12 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_ConvertCoin_FullMethodName = "/canto.erc20.v1.Msg/ConvertCoin" - Msg_ConvertERC20_FullMethodName = "/canto.erc20.v1.Msg/ConvertERC20" - Msg_UpdateParams_FullMethodName = "/canto.erc20.v1.Msg/UpdateParams" + Msg_ConvertCoin_FullMethodName = "/canto.erc20.v1.Msg/ConvertCoin" + Msg_ConvertERC20_FullMethodName = "/canto.erc20.v1.Msg/ConvertERC20" + Msg_UpdateParams_FullMethodName = "/canto.erc20.v1.Msg/UpdateParams" + Msg_RegisterCoinProposal_FullMethodName = "/canto.erc20.v1.Msg/RegisterCoinProposal" + Msg_RegisterERC20Proposal_FullMethodName = "/canto.erc20.v1.Msg/RegisterERC20Proposal" + Msg_ToggleTokenConversionProposal_FullMethodName = "/canto.erc20.v1.Msg/ToggleTokenConversionProposal" ) // MsgClient is the client API for Msg service. @@ -36,6 +39,15 @@ type MsgClient interface { ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) // UpdateParams updates the parameters of the x/erc20 module. UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // RegisterCoinProposal defines a method to create a proposal to register a + // token pair for a native Cosmos coin. + RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) + // RegisterERC20Proposal defines a method to create a proposal to register a + // token pair for an ERC20 token. + RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) + // ToggleTokenConversionProposal defines a method to create a proposal to + // toggle the conversion of a token pair. + ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) } type msgClient struct { @@ -73,6 +85,33 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } +func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) { + out := new(MsgRegisterCoinProposalResponse) + err := c.cc.Invoke(ctx, Msg_RegisterCoinProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) { + out := new(MsgRegisterERC20ProposalResponse) + err := c.cc.Invoke(ctx, Msg_RegisterERC20Proposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) { + out := new(MsgToggleTokenConversionProposalResponse) + err := c.cc.Invoke(ctx, Msg_ToggleTokenConversionProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility @@ -85,6 +124,15 @@ type MsgServer interface { ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) // UpdateParams updates the parameters of the x/erc20 module. UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // RegisterCoinProposal defines a method to create a proposal to register a + // token pair for a native Cosmos coin. + RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) + // RegisterERC20Proposal defines a method to create a proposal to register a + // token pair for an ERC20 token. + RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) + // ToggleTokenConversionProposal defines a method to create a proposal to + // toggle the conversion of a token pair. + ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) mustEmbedUnimplementedMsgServer() } @@ -101,6 +149,15 @@ func (UnimplementedMsgServer) ConvertERC20(context.Context, *MsgConvertERC20) (* func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } +func (UnimplementedMsgServer) RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterCoinProposal not implemented") +} +func (UnimplementedMsgServer) RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterERC20Proposal not implemented") +} +func (UnimplementedMsgServer) ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ToggleTokenConversionProposal not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -168,6 +225,60 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterCoinProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RegisterCoinProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_RegisterCoinProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoinProposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterERC20Proposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RegisterERC20Proposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_RegisterERC20Proposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20Proposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgToggleTokenConversionProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_ToggleTokenConversionProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversionProposal)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -187,6 +298,18 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateParams", Handler: _Msg_UpdateParams_Handler, }, + { + MethodName: "RegisterCoinProposal", + Handler: _Msg_RegisterCoinProposal_Handler, + }, + { + MethodName: "RegisterERC20Proposal", + Handler: _Msg_RegisterERC20Proposal_Handler, + }, + { + MethodName: "ToggleTokenConversionProposal", + Handler: _Msg_ToggleTokenConversionProposal_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "canto/erc20/v1/tx.proto", diff --git a/proto/canto/erc20/v1/erc20.proto b/proto/canto/erc20/v1/erc20.proto index ef5b96f5c..65ff5c9e7 100644 --- a/proto/canto/erc20/v1/erc20.proto +++ b/proto/canto/erc20/v1/erc20.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package canto.erc20.v1; import "gogoproto/gogo.proto"; -import "cosmos/bank/v1beta1/bank.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; // Owner enumerates the ownership of a ERC20 contract. @@ -29,40 +28,3 @@ message TokenPair { // ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external address) Owner contract_owner = 4; } - -// RegisterCoinProposal is a gov Content type to register a token pair for a -// native Cosmos coin. -message RegisterCoinProposal { - option (gogoproto.equal) = false; - // title of the proposal - string title = 1; - // proposal description - string description = 2; - // metadata of the native Cosmos coin - cosmos.bank.v1beta1.Metadata metadata = 3 [ (gogoproto.nullable) = false ]; -} - -// RegisterERC20Proposal is a gov Content type to register a token pair for an -// ERC20 token -message RegisterERC20Proposal { - option (gogoproto.equal) = false; - // title of the proposa string title = 1; - string title = 1; - // proposal description - string description = 2; - // contract address of ERC20 token - string erc20address = 3; -} - -// ToggleTokenConversionProposal is a gov Content type to toggle the conversion -// of a token pair. -message ToggleTokenConversionProposal { - option (gogoproto.equal) = true; - // title of the proposal - string Title = 1; - // proposal description - string description = 2; - // token identifier can be either the hex contract address of the ERC20 or the - // Cosmos base denomination - string token = 3; -} diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index e5b4ab000..d782a2293 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -4,6 +4,7 @@ package canto.erc20.v1; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; +import "cosmos/bank/v1beta1/bank.proto"; import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; @@ -30,6 +31,28 @@ service Msg { rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { option (google.api.http).get = "/canto/erc20/v1/tx/update_params"; }; + + // RegisterCoinProposal defines a method to create a proposal to register a + // token pair for a native Cosmos coin. + rpc RegisterCoinProposal(MsgRegisterCoinProposal) + returns (MsgRegisterCoinProposalResponse) { + option (google.api.http).get = "/canto/erc20/v1/tx/register_coin_proposal"; + }; + + // RegisterERC20Proposal defines a method to create a proposal to register a + // token pair for an ERC20 token. + rpc RegisterERC20Proposal(MsgRegisterERC20Proposal) + returns (MsgRegisterERC20ProposalResponse) { + option (google.api.http).get = "/canto/erc20/v1/tx/register_erc20_proposal"; + }; + + // ToggleTokenConversionProposal defines a method to create a proposal to + // toggle the conversion of a token pair. + rpc ToggleTokenConversionProposal(MsgToggleTokenConversionProposal) + returns (MsgToggleTokenConversionProposalResponse) { + option (google.api.http).get = + "/canto/erc20/v1/tx/toggle_token_conversion_proposal"; + }; } // MsgConvertCoin defines a Msg to convert a native Cosmos coin to a ERC20 token @@ -91,4 +114,67 @@ message MsgUpdateParams { // MsgUpdateParams message. // // Since: cosmos-sdk 0.47 -message MsgUpdateParamsResponse {} \ No newline at end of file +message MsgUpdateParamsResponse {} + +// MsgRegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +message MsgRegisterCoinProposal { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgRegisterCoinProposal"; + + option (gogoproto.equal) = false; + // title of the proposal + string title = 2; + // proposal description + string description = 3; + // metadata of the native Cosmos coin + cosmos.bank.v1beta1.Metadata metadata = 4 [ (gogoproto.nullable) = false ]; +} + +message MsgRegisterCoinProposalResponse {} + +// MsgRegisterERC20Proposal is a gov Content type to register a token pair for +// an ERC20 token +message MsgRegisterERC20Proposal { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgRegisterERC20Proposal"; + + option (gogoproto.equal) = false; + // title of the proposa string title = 1; + string title = 2; + // proposal description + string description = 3; + // contract address of ERC20 token + string erc20address = 4; +} + +message MsgRegisterERC20ProposalResponse {} + +// MsgToggleTokenConversionProposal is a gov Content type to toggle the +// conversion of a token pair. +message MsgToggleTokenConversionProposal { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgToggleTokenConversionProposal"; + option (gogoproto.equal) = true; + // title of the proposal + string Title = 2; + // proposal description + string description = 3; + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + string token = 4; +} + +message MsgToggleTokenConversionProposalResponse {} \ No newline at end of file diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go index 35ba1a8cf..c7782c1e5 100644 --- a/x/erc20/client/cli/tx.go +++ b/x/erc20/client/cli/tx.go @@ -10,10 +10,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/gov/client/cli" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/ethereum/go-ethereum/common" ethermint "github.com/evmos/ethermint/types" @@ -136,229 +132,229 @@ func NewConvertERC20Cmd() *cobra.Command { return cmd } -// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal -func NewRegisterCoinProposalCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "register-coin [metadata]", - Args: cobra.ExactArgs(1), - Short: "Submit a register coin proposal", - Long: `Submit a proposal to register a Cosmos coin to the erc20 along with an initial deposit. -Upon passing, the -The proposal details must be supplied via a JSON file.`, - Example: fmt.Sprintf(`$ %s tx gov submit-proposal register-coin --from= - -Where metadata.json contains (example): - -{ - "description": "The native staking and governance token of the Osmosis chain", - "denom_units": [ - { - "denom": "ibc/", - "exponent": 0, - "aliases": ["ibcuosmo"] - }, - { - "denom": "OSMO", - "exponent": 6 - } - ], - "base": "ibc/", - "display": "OSMO", - "name": "Osmo", - "symbol": "OSMO" -}`, version.AppName, - ), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - metadata, err := ParseMetadata(clientCtx.Codec, args[0]) - if err != nil { - return err - } - - from := clientCtx.GetFromAddress() - - content := types.NewRegisterCoinProposal(title, description, metadata) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - //if err := msg.ValidateBasic(); err != nil { - // return err - //} - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") - if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { - panic(err) - } - return cmd -} - -// NewRegisterERC20ProposalCmd implements the command to submit a community-pool-spend proposal -func NewRegisterERC20ProposalCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "register-erc20 [erc20-address]", - Args: cobra.ExactArgs(1), - Short: "Submit a proposal to register an ERC20 token", - Long: "Submit a proposal to register an ERC20 token to the erc20 along with an initial deposit.", - Example: fmt.Sprintf("$ %s tx gov submit-proposal register-erc20 --from=", version.AppName), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - erc20Addr := args[0] - from := clientCtx.GetFromAddress() - content := types.NewRegisterERC20Proposal(title, description, erc20Addr) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - //if err := msg.ValidateBasic(); err != nil { - // return err - //} - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") - if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { - panic(err) - } - return cmd -} - -// NewToggleTokenConversionProposalCmd implements the command to submit a community-pool-spend proposal -func NewToggleTokenConversionProposalCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "toggle-token-conversion [token]", - Args: cobra.ExactArgs(1), - Short: "Submit a toggle token conversion proposal", - Long: "Submit a proposal to toggle the conversion of a token pair along with an initial deposit.", - Example: fmt.Sprintf("$ %s tx gov submit-proposal toggle-token-conversion --from=", version.AppName), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - from := clientCtx.GetFromAddress() - token := args[0] - content := types.NewToggleTokenConversionProposal(title, description, token) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - //if err := msg.ValidateBasic(); err != nil { - // return err - //} - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") - if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { - panic(err) - } - return cmd -} +//// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal +//func NewRegisterCoinProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "register-coin [metadata]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a register coin proposal", +// Long: `Submit a proposal to register a Cosmos coin to the erc20 along with an initial deposit. +//Upon passing, the +//The proposal details must be supplied via a JSON file.`, +// Example: fmt.Sprintf(`$ %s tx gov submit-proposal register-coin --from= +// +//Where metadata.json contains (example): +// +//{ +// "description": "The native staking and governance token of the Osmosis chain", +// "denom_units": [ +// { +// "denom": "ibc/", +// "exponent": 0, +// "aliases": ["ibcuosmo"] +// }, +// { +// "denom": "OSMO", +// "exponent": 6 +// } +// ], +// "base": "ibc/", +// "display": "OSMO", +// "name": "Osmo", +// "symbol": "OSMO" +//}`, version.AppName, +// ), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// metadata, err := ParseMetadata(clientCtx.Codec, args[0]) +// if err != nil { +// return err +// } +// +// from := clientCtx.GetFromAddress() +// +// content := types.NewRegisterCoinProposal(title, description, metadata) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} +// +//// NewRegisterERC20ProposalCmd implements the command to submit a community-pool-spend proposal +//func NewRegisterERC20ProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "register-erc20 [erc20-address]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a proposal to register an ERC20 token", +// Long: "Submit a proposal to register an ERC20 token to the erc20 along with an initial deposit.", +// Example: fmt.Sprintf("$ %s tx gov submit-proposal register-erc20 --from=", version.AppName), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// erc20Addr := args[0] +// from := clientCtx.GetFromAddress() +// content := types.NewRegisterERC20Proposal(title, description, erc20Addr) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} +// +//// NewToggleTokenConversionProposalCmd implements the command to submit a community-pool-spend proposal +//func NewToggleTokenConversionProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "toggle-token-conversion [token]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a toggle token conversion proposal", +// Long: "Submit a proposal to toggle the conversion of a token pair along with an initial deposit.", +// Example: fmt.Sprintf("$ %s tx gov submit-proposal toggle-token-conversion --from=", version.AppName), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// from := clientCtx.GetFromAddress() +// token := args[0] +// content := types.NewToggleTokenConversionProposal(title, description, token) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} diff --git a/x/erc20/client/proposal_handler.go b/x/erc20/client/proposal_handler.go index eb4c6be33..8b4ffe387 100644 --- a/x/erc20/client/proposal_handler.go +++ b/x/erc20/client/proposal_handler.go @@ -1,13 +1,13 @@ package client -import ( - govclient "github.com/cosmos/cosmos-sdk/x/gov/client" - - "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" -) - -var ( - RegisterCoinProposalHandler = govclient.NewProposalHandler(cli.NewRegisterCoinProposalCmd) - RegisterERC20ProposalHandler = govclient.NewProposalHandler(cli.NewRegisterERC20ProposalCmd) - ToggleTokenConversionProposalHandler = govclient.NewProposalHandler(cli.NewToggleTokenConversionProposalCmd) -) +//import ( +// govclient "github.com/cosmos/cosmos-sdk/x/gov/client" +// +// "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" +//) +// +//var ( +// RegisterCoinProposalHandler = govclient.NewProposalHandler(cli.NewRegisterCoinProposalCmd) +// RegisterERC20ProposalHandler = govclient.NewProposalHandler(cli.NewRegisterERC20ProposalCmd) +// ToggleTokenConversionProposalHandler = govclient.NewProposalHandler(cli.NewToggleTokenConversionProposalCmd) +//) diff --git a/x/erc20/keeper/evm_hooks_test.go b/x/erc20/keeper/evm_hooks_test.go index c3deeb9b6..186635557 100644 --- a/x/erc20/keeper/evm_hooks_test.go +++ b/x/erc20/keeper/evm_hooks_test.go @@ -1,432 +1,433 @@ package keeper_test -import ( - "fmt" - "math/big" - - sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/ethereum/go-ethereum/common" - ethtypes "github.com/ethereum/go-ethereum/core/types" - - "github.com/Canto-Network/Canto/v7/contracts" - "github.com/Canto-Network/Canto/v7/x/erc20/types" - "github.com/evmos/ethermint/tests" -) - -// ensureHooksSet tries to set the hooks on EVMKeeper, this will fail if the erc20 hook is already set -func (suite *KeeperTestSuite) ensureHooksSet() { - // TODO: PR to Ethermint to add the functionality `GetHooks` or `areHooksSet` to avoid catching a panic - defer func() { - err := recover() - suite.Require().NotNil(err) - }() - suite.app.EvmKeeper.SetHooks(suite.app.Erc20Keeper.Hooks()) -} - -func (suite *KeeperTestSuite) TestEvmHooksRegisteredERC20() { - testCases := []struct { - name string - malleate func(common.Address) - result bool - }{ - { - "correct execution", - func(contractAddr common.Address) { - _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - // Mint 10 tokens to suite.address (owner) - _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) - suite.Commit() - - // Burn the 10 tokens of suite.address (owner) - _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) - }, - true, - }, - { - "unregistered pair", - func(contractAddr common.Address) { - // Mint 10 tokens to suite.address (owner) - _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) - suite.Commit() - - // Burn the 10 tokens of suite.address (owner) - _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) - }, - false, - }, - { - "wrong event", - func(contractAddr common.Address) { - _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - // Mint 10 tokens to suite.address (owner) - _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) - }, - false, - }, - { - "Pair is disabled", - func(contractAddr common.Address) { - pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - pair.Enabled = false - suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) - // Mint 10 tokens to suite.address (owner) - _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) - suite.Commit() - - // Burn the 10 tokens of suite.address (owner) - _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) - }, - false, - }, - { - "Pair is incorrectly loaded", - func(contractAddr common.Address) { - pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - suite.app.Erc20Keeper.DeleteTokenPair(suite.ctx, *pair) - - suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) - suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) - // Mint 10 tokens to suite.address (owner) - _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) - suite.Commit() - - // Burn the 10 tokens of suite.address (owner) - _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - - suite.ensureHooksSet() - - contractAddr, err := suite.DeployContract("coin test erc20", "token", erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - - tc.malleate(contractAddr) - - balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), types.CreateDenom(contractAddr.String())) - suite.Commit() - if tc.result { - // Check if the execution was successful - suite.Require().Equal(int64(10), balance.Amount.Int64()) - } else { - // Check that no changes were made to the account - suite.Require().Equal(int64(0), balance.Amount.Int64()) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { - testCases := []struct { - name string - mint int64 - burn int64 - reconvert int64 - - result bool - }{ - {"correct execution", 100, 10, 5, true}, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - - suite.ensureHooksSet() - - metadata, pair := suite.setupRegisterCoin() - suite.Require().NotNil(metadata) - suite.Require().NotNil(pair) - - sender := sdk.AccAddress(suite.address.Bytes()) - contractAddr := common.HexToAddress(pair.Erc20Address) - - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - - convertCoin := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - ctx := sdk.WrapSDKContext(suite.ctx) - _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, convertCoin) - suite.Require().NoError(err, tc.name) - suite.Commit() - - balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) - suite.Require().Equal(balance, big.NewInt(tc.burn)) - - // Burn the 10 tokens of suite.address (owner) - _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(tc.reconvert)) - - balance = suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - - if tc.result { - // Check if the execution was successful - suite.Require().NoError(err) - suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert)) - } else { - // Check that no changes were made to the account - suite.Require().Error(err) - suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn)) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestPostTxProcessing() { - var ( - receipt *ethtypes.Receipt - pair *types.TokenPair - ) - - msg := ethtypes.NewMessage( - types.ModuleAddress, - &common.Address{}, - 0, - big.NewInt(0), // amount - uint64(0), // gasLimit - big.NewInt(0), // gasFeeCap - big.NewInt(0), // gasTipCap - big.NewInt(0), // gasPrice - []byte{}, - ethtypes.AccessList{}, // AccessList - true, // checkNonce - ) - - account := tests.GenerateAddress() - - transferData := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - transferData[31] = uint8(10) - erc20 := contracts.ERC20BurnableContract.ABI - - transferEvent := erc20.Events["Transfer"] - - testCases := []struct { - name string - malleate func() - expConversion bool - }{ - { - "Empty logs", - func() { - log := ethtypes.Log{} - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "No log data", - func() { - topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} - log := ethtypes.Log{ - Topics: topics, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "Non recognized event", - func() { - topics := []common.Hash{{}, account.Hash(), account.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "Non transfer event", - func() { - aprovalEvent := erc20.Events["Approval"] - topics := []common.Hash{aprovalEvent.ID, account.Hash(), account.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "No log address", - func() { - topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "No data on topic", - func() { - topics := []common.Hash{transferEvent.ID} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "transfer to non-evm-module account", - func() { - contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - - _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - topics := []common.Hash{transferEvent.ID, account.Hash(), account.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - Address: contractAddr, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "correct burn", - func() { - contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - - pair, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - Address: contractAddr, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - true, - }, - { - "Unspecified Owner", - func() { - contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - - pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - pair.ContractOwner = types.OWNER_UNSPECIFIED - suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) - - topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - Address: contractAddr, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - { - "Fail Evm", - func() { - contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - - pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - suite.Require().NoError(err) - - pair.ContractOwner = types.OWNER_MODULE - suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) - - topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} - log := ethtypes.Log{ - Topics: topics, - Data: transferData, - Address: contractAddr, - } - receipt = ðtypes.Receipt{ - Logs: []*ethtypes.Log{&log}, - } - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - suite.ensureHooksSet() - - tc.malleate() - - err := suite.app.Erc20Keeper.Hooks().PostTxProcessing(suite.ctx, msg, receipt) - suite.Require().NoError(err) - - if tc.expConversion { - sender := sdk.AccAddress(account.Bytes()) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) - - transferEvent, err := erc20.Unpack("Transfer", transferData) - suite.Require().NoError(err) - - tokens, _ := transferEvent[0].(*big.Int) - suite.Require().Equal(cosmosBalance.Amount.String(), tokens.String()) - } - }) - } - suite.mintFeeCollector = false -} +// +//import ( +// "fmt" +// "math/big" +// +// sdkmath "cosmossdk.io/math" +// sdk "github.com/cosmos/cosmos-sdk/types" +// "github.com/ethereum/go-ethereum/common" +// ethtypes "github.com/ethereum/go-ethereum/core/types" +// +// "github.com/Canto-Network/Canto/v7/contracts" +// "github.com/Canto-Network/Canto/v7/x/erc20/types" +// "github.com/evmos/ethermint/tests" +//) +// +//// ensureHooksSet tries to set the hooks on EVMKeeper, this will fail if the erc20 hook is already set +//func (suite *KeeperTestSuite) ensureHooksSet() { +// // TODO: PR to Ethermint to add the functionality `GetHooks` or `areHooksSet` to avoid catching a panic +// defer func() { +// err := recover() +// suite.Require().NotNil(err) +// }() +// suite.app.EvmKeeper.SetHooks(suite.app.Erc20Keeper.Hooks()) +//} +// +//func (suite *KeeperTestSuite) TestEvmHooksRegisteredERC20() { +// testCases := []struct { +// name string +// malleate func(common.Address) +// result bool +// }{ +// { +// "correct execution", +// func(contractAddr common.Address) { +// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// // Mint 10 tokens to suite.address (owner) +// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) +// suite.Commit() +// +// // Burn the 10 tokens of suite.address (owner) +// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) +// }, +// true, +// }, +// { +// "unregistered pair", +// func(contractAddr common.Address) { +// // Mint 10 tokens to suite.address (owner) +// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) +// suite.Commit() +// +// // Burn the 10 tokens of suite.address (owner) +// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) +// }, +// false, +// }, +// { +// "wrong event", +// func(contractAddr common.Address) { +// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// // Mint 10 tokens to suite.address (owner) +// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) +// }, +// false, +// }, +// { +// "Pair is disabled", +// func(contractAddr common.Address) { +// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// pair.Enabled = false +// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) +// // Mint 10 tokens to suite.address (owner) +// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) +// suite.Commit() +// +// // Burn the 10 tokens of suite.address (owner) +// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) +// }, +// false, +// }, +// { +// "Pair is incorrectly loaded", +// func(contractAddr common.Address) { +// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// suite.app.Erc20Keeper.DeleteTokenPair(suite.ctx, *pair) +// +// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) +// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) +// // Mint 10 tokens to suite.address (owner) +// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) +// suite.Commit() +// +// // Burn the 10 tokens of suite.address (owner) +// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// +// suite.ensureHooksSet() +// +// contractAddr, err := suite.DeployContract("coin test erc20", "token", erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// +// tc.malleate(contractAddr) +// +// balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), types.CreateDenom(contractAddr.String())) +// suite.Commit() +// if tc.result { +// // Check if the execution was successful +// suite.Require().Equal(int64(10), balance.Amount.Int64()) +// } else { +// // Check that no changes were made to the account +// suite.Require().Equal(int64(0), balance.Amount.Int64()) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// reconvert int64 +// +// result bool +// }{ +// {"correct execution", 100, 10, 5, true}, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// +// suite.ensureHooksSet() +// +// metadata, pair := suite.setupRegisterCoin() +// suite.Require().NotNil(metadata) +// suite.Require().NotNil(pair) +// +// sender := sdk.AccAddress(suite.address.Bytes()) +// contractAddr := common.HexToAddress(pair.Erc20Address) +// +// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// +// convertCoin := types.NewMsgConvertCoin( +// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, convertCoin) +// suite.Require().NoError(err, tc.name) +// suite.Commit() +// +// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) +// suite.Require().Equal(balance, big.NewInt(tc.burn)) +// +// // Burn the 10 tokens of suite.address (owner) +// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(tc.reconvert)) +// +// balance = suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// +// if tc.result { +// // Check if the execution was successful +// suite.Require().NoError(err) +// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert)) +// } else { +// // Check that no changes were made to the account +// suite.Require().Error(err) +// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn)) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestPostTxProcessing() { +// var ( +// receipt *ethtypes.Receipt +// pair *types.TokenPair +// ) +// +// msg := ethtypes.NewMessage( +// types.ModuleAddress, +// &common.Address{}, +// 0, +// big.NewInt(0), // amount +// uint64(0), // gasLimit +// big.NewInt(0), // gasFeeCap +// big.NewInt(0), // gasTipCap +// big.NewInt(0), // gasPrice +// []byte{}, +// ethtypes.AccessList{}, // AccessList +// true, // checkNonce +// ) +// +// account := tests.GenerateAddress() +// +// transferData := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// transferData[31] = uint8(10) +// erc20 := contracts.ERC20BurnableContract.ABI +// +// transferEvent := erc20.Events["Transfer"] +// +// testCases := []struct { +// name string +// malleate func() +// expConversion bool +// }{ +// { +// "Empty logs", +// func() { +// log := ethtypes.Log{} +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "No log data", +// func() { +// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "Non recognized event", +// func() { +// topics := []common.Hash{{}, account.Hash(), account.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "Non transfer event", +// func() { +// aprovalEvent := erc20.Events["Approval"] +// topics := []common.Hash{aprovalEvent.ID, account.Hash(), account.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "No log address", +// func() { +// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "No data on topic", +// func() { +// topics := []common.Hash{transferEvent.ID} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "transfer to non-evm-module account", +// func() { +// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// +// _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// topics := []common.Hash{transferEvent.ID, account.Hash(), account.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// Address: contractAddr, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "correct burn", +// func() { +// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// +// pair, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// Address: contractAddr, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// true, +// }, +// { +// "Unspecified Owner", +// func() { +// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// +// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// pair.ContractOwner = types.OWNER_UNSPECIFIED +// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) +// +// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// Address: contractAddr, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// { +// "Fail Evm", +// func() { +// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// +// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// suite.Require().NoError(err) +// +// pair.ContractOwner = types.OWNER_MODULE +// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) +// +// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} +// log := ethtypes.Log{ +// Topics: topics, +// Data: transferData, +// Address: contractAddr, +// } +// receipt = ðtypes.Receipt{ +// Logs: []*ethtypes.Log{&log}, +// } +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// suite.ensureHooksSet() +// +// tc.malleate() +// +// err := suite.app.Erc20Keeper.Hooks().PostTxProcessing(suite.ctx, msg, receipt) +// suite.Require().NoError(err) +// +// if tc.expConversion { +// sender := sdk.AccAddress(account.Bytes()) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) +// +// transferEvent, err := erc20.Unpack("Transfer", transferData) +// suite.Require().NoError(err) +// +// tokens, _ := transferEvent[0].(*big.Int) +// suite.Require().Equal(cosmosBalance.Amount.String(), tokens.String()) +// } +// }) +// } +// suite.mintFeeCollector = false +//} diff --git a/x/erc20/keeper/evm_test.go b/x/erc20/keeper/evm_test.go index 9abb3a236..ca466993a 100644 --- a/x/erc20/keeper/evm_test.go +++ b/x/erc20/keeper/evm_test.go @@ -1,383 +1,386 @@ package keeper_test -import ( - "fmt" - - "github.com/ethereum/go-ethereum/common" - "github.com/evmos/ethermint/tests" - evmtypes "github.com/evmos/ethermint/x/evm/types" - "github.com/stretchr/testify/mock" - - "github.com/Canto-Network/Canto/v7/contracts" - "github.com/Canto-Network/Canto/v7/x/erc20/keeper" - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -func (suite *KeeperTestSuite) TestQueryERC20() { - var contract common.Address - testCases := []struct { - name string - malleate func() - res bool - }{ - { - "erc20 not deployed", - func() { contract = common.Address{} }, - false, - }, - { - "ok", - func() { contract, _ = suite.DeployContract("coin", "token", erc20Decimals) }, - true, - }, - } - for _, tc := range testCases { - suite.SetupTest() // reset - - tc.malleate() - - res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) - if tc.res { - suite.Require().NoError(err) - suite.Require().Equal( - types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, - res, - ) - } else { - suite.Require().Error(err) - } - } -} - -func (suite *KeeperTestSuite) TestBalanceOf() { - var mockEVMKeeper *MockEVMKeeper - contract := tests.GenerateAddress() - testCases := []struct { - name string - malleate func() - expBalance int64 - res bool - }{ - { - "Failed to call Evm", - func() { - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - }, - int64(0), - false, - }, - { - "Incorrect res", - func() { - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() - }, - int64(0), - false, - }, - { - "Correct Execution", - func() { - balance := make([]uint8, 32) - balance[31] = uint8(10) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - }, - int64(10), - true, - }, - } - for _, tc := range testCases { - suite.SetupTest() // reset - mockEVMKeeper = &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - tc.malleate() - - abi := contracts.ERC20BurnableContract.ABI - balance := suite.app.Erc20Keeper.BalanceOf(suite.ctx, abi, contract, tests.GenerateAddress()) - if tc.res { - suite.Require().Equal(balance.Int64(), tc.expBalance) - } else { - suite.Require().Nil(balance) - } - } -} - -func (suite *KeeperTestSuite) TestCallEVM() { - testCases := []struct { - name string - method string - expPass bool - }{ - { - "unknown method", - "", - false, - }, - { - "pass", - "balanceOf", - true, - }, - } - for _, tc := range testCases { - suite.SetupTest() // reset - - erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - account := tests.GenerateAddress() - - res, err := suite.app.Erc20Keeper.CallEVM(suite.ctx, erc20, types.ModuleAddress, contract, true, tc.method, account) - if tc.expPass { - suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) - suite.Require().NoError(err) - } else { - suite.Require().Error(err) - } - } -} - -func (suite *KeeperTestSuite) TestCallEVMWithData() { - erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI - testCases := []struct { - name string - from common.Address - malleate func() ([]byte, *common.Address) - expPass bool - }{ - { - "unknown method", - types.ModuleAddress, - func() ([]byte, *common.Address) { - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - account := tests.GenerateAddress() - data, _ := erc20.Pack("", account) - return data, &contract - }, - false, - }, - { - "pass", - types.ModuleAddress, - func() ([]byte, *common.Address) { - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - account := tests.GenerateAddress() - data, _ := erc20.Pack("balanceOf", account) - return data, &contract - }, - true, - }, - { - "fail empty data", - types.ModuleAddress, - func() ([]byte, *common.Address) { - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - return []byte{}, &contract - }, - false, - }, - - { - "fail empty sender", - common.Address{}, - func() ([]byte, *common.Address) { - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - return []byte{}, &contract - }, - false, - }, - { - "deploy", - types.ModuleAddress, - func() ([]byte, *common.Address) { - ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) - data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) - return data, nil - }, - true, - }, - { - "fail deploy", - types.ModuleAddress, - func() ([]byte, *common.Address) { - params := suite.app.EvmKeeper.GetParams(suite.ctx) - params.EnableCreate = false - suite.app.EvmKeeper.SetParams(suite.ctx, params) - ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) - data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) - return data, nil - }, - false, - }, - } - - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.SetupTest() // reset - - data, contract := tc.malleate() - - res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, tc.from, contract, data, true) - if tc.expPass { - suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) - suite.Require().NoError(err) - } else { - suite.Require().Error(err) - } - }) - } -} - -func (suite *KeeperTestSuite) TestForceFail() { - var mockEVMKeeper *MockEVMKeeper - erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI - testCases := []struct { - name string - malleate func() - commit bool - expPass bool - }{ - { - "Force estimate gas error", - func() { - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced EstimateGas error")) - }, - true, - false, - }, - { - "Force ApplyMessage error", - func() { - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - }, - true, - false, - }, - { - "Force ApplyMessage failed", - func() { - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "SomeError"}, nil) - }, - true, - false, - }, - } - - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.SetupTest() // reset - mockEVMKeeper = &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - tc.malleate() - - contract, err := suite.DeployContract("coin", "token", erc20Decimals) - suite.Require().NoError(err) - account := tests.GenerateAddress() - data, _ := erc20.Pack("balanceOf", account) - - res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, types.ModuleAddress, &contract, data, tc.commit) - if tc.expPass { - suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) - suite.Require().NoError(err) - } else { - suite.Require().Error(err) - } - }) - } -} - -func (suite *KeeperTestSuite) TestQueryERC20ForceFail() { - var mockEVMKeeper *MockEVMKeeper - contract := tests.GenerateAddress() - testCases := []struct { - name string - malleate func() - res bool - }{ - { - "Failed to call Evm", - func() { - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - }, - false, - }, - { - "Incorrect res", - func() { - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() - }, - false, - }, - { - "Correct res for name - incorrect for symbol", - func() { - ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() - }, - false, - }, - { - "incorrect symbol res", - func() { - ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() - }, - false, - }, - { - "Correct res for name - incorrect for symbol", - func() { - ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() - }, - false, - }, - { - "incorrect symbol res", - func() { - ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() - }, - false, - }, - } - for _, tc := range testCases { - suite.SetupTest() // reset - mockEVMKeeper = &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - tc.malleate() - - res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) - if tc.res { - suite.Require().NoError(err) - suite.Require().Equal( - types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, - res, - ) - } else { - suite.Require().Error(err) - } - } -} +// +//import ( +// "fmt" +// +// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +// "github.com/ethereum/go-ethereum/common" +// "github.com/evmos/ethermint/tests" +// evmtypes "github.com/evmos/ethermint/x/evm/types" +// "github.com/stretchr/testify/mock" +// +// "github.com/Canto-Network/Canto/v7/contracts" +// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" +// "github.com/Canto-Network/Canto/v7/x/erc20/types" +//) +// +//func (suite *KeeperTestSuite) TestQueryERC20() { +// var contract common.Address +// testCases := []struct { +// name string +// malleate func() +// res bool +// }{ +// { +// "erc20 not deployed", +// func() { contract = common.Address{} }, +// false, +// }, +// { +// "ok", +// func() { contract, _ = suite.DeployContract("coin", "token", erc20Decimals) }, +// true, +// }, +// } +// for _, tc := range testCases { +// suite.SetupTest() // reset +// +// tc.malleate() +// +// res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) +// if tc.res { +// suite.Require().NoError(err) +// suite.Require().Equal( +// types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, +// res, +// ) +// } else { +// suite.Require().Error(err) +// } +// } +//} +// +//func (suite *KeeperTestSuite) TestBalanceOf() { +// var mockEVMKeeper *MockEVMKeeper +// contract := tests.GenerateAddress() +// testCases := []struct { +// name string +// malleate func() +// expBalance int64 +// res bool +// }{ +// { +// "Failed to call Evm", +// func() { +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// }, +// int64(0), +// false, +// }, +// { +// "Incorrect res", +// func() { +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() +// }, +// int64(0), +// false, +// }, +// { +// "Correct Execution", +// func() { +// balance := make([]uint8, 32) +// balance[31] = uint8(10) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// }, +// int64(10), +// true, +// }, +// } +// for _, tc := range testCases { +// suite.SetupTest() // reset +// mockEVMKeeper = &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// tc.malleate() +// +// abi := contracts.ERC20BurnableContract.ABI +// balance := suite.app.Erc20Keeper.BalanceOf(suite.ctx, abi, contract, tests.GenerateAddress()) +// if tc.res { +// suite.Require().Equal(balance.Int64(), tc.expBalance) +// } else { +// suite.Require().Nil(balance) +// } +// } +//} +// +//func (suite *KeeperTestSuite) TestCallEVM() { +// testCases := []struct { +// name string +// method string +// expPass bool +// }{ +// { +// "unknown method", +// "", +// false, +// }, +// { +// "pass", +// "balanceOf", +// true, +// }, +// } +// for _, tc := range testCases { +// suite.SetupTest() // reset +// +// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// account := tests.GenerateAddress() +// +// res, err := suite.app.Erc20Keeper.CallEVM(suite.ctx, erc20, types.ModuleAddress, contract, true, tc.method, account) +// if tc.expPass { +// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) +// suite.Require().NoError(err) +// } else { +// suite.Require().Error(err) +// } +// } +//} +// +//func (suite *KeeperTestSuite) TestCallEVMWithData() { +// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI +// testCases := []struct { +// name string +// from common.Address +// malleate func() ([]byte, *common.Address) +// expPass bool +// }{ +// { +// "unknown method", +// types.ModuleAddress, +// func() ([]byte, *common.Address) { +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// account := tests.GenerateAddress() +// data, _ := erc20.Pack("", account) +// return data, &contract +// }, +// false, +// }, +// { +// "pass", +// types.ModuleAddress, +// func() ([]byte, *common.Address) { +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// account := tests.GenerateAddress() +// data, _ := erc20.Pack("balanceOf", account) +// return data, &contract +// }, +// true, +// }, +// { +// "fail empty data", +// types.ModuleAddress, +// func() ([]byte, *common.Address) { +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// return []byte{}, &contract +// }, +// false, +// }, +// +// { +// "fail empty sender", +// common.Address{}, +// func() ([]byte, *common.Address) { +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// return []byte{}, &contract +// }, +// false, +// }, +// { +// "deploy", +// types.ModuleAddress, +// func() ([]byte, *common.Address) { +// ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) +// data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) +// return data, nil +// }, +// true, +// }, +// { +// "fail deploy", +// types.ModuleAddress, +// func() ([]byte, *common.Address) { +// params := suite.app.EvmKeeper.GetParams(suite.ctx) +// params.EnableCreate = false +// suite.app.EvmKeeper.SetParams(suite.ctx, params) +// ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) +// data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) +// return data, nil +// }, +// false, +// }, +// } +// +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.SetupTest() // reset +// +// data, contract := tc.malleate() +// +// res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, tc.from, contract, data, true) +// if tc.expPass { +// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) +// suite.Require().NoError(err) +// } else { +// suite.Require().Error(err) +// } +// }) +// } +//} +// +//func (suite *KeeperTestSuite) TestForceFail() { +// var mockEVMKeeper *MockEVMKeeper +// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI +// testCases := []struct { +// name string +// malleate func() +// commit bool +// expPass bool +// }{ +// { +// "Force estimate gas error", +// func() { +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced EstimateGas error")) +// }, +// true, +// false, +// }, +// { +// "Force ApplyMessage error", +// func() { +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// }, +// true, +// false, +// }, +// { +// "Force ApplyMessage failed", +// func() { +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "SomeError"}, nil) +// }, +// true, +// false, +// }, +// } +// +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.SetupTest() // reset +// mockEVMKeeper = &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// tc.malleate() +// +// contract, err := suite.DeployContract("coin", "token", erc20Decimals) +// suite.Require().NoError(err) +// account := tests.GenerateAddress() +// data, _ := erc20.Pack("balanceOf", account) +// +// res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, types.ModuleAddress, &contract, data, tc.commit) +// if tc.expPass { +// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) +// suite.Require().NoError(err) +// } else { +// suite.Require().Error(err) +// } +// }) +// } +//} +// +//func (suite *KeeperTestSuite) TestQueryERC20ForceFail() { +// var mockEVMKeeper *MockEVMKeeper +// contract := tests.GenerateAddress() +// testCases := []struct { +// name string +// malleate func() +// res bool +// }{ +// { +// "Failed to call Evm", +// func() { +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// }, +// false, +// }, +// { +// "Incorrect res", +// func() { +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() +// }, +// false, +// }, +// { +// "Correct res for name - incorrect for symbol", +// func() { +// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() +// }, +// false, +// }, +// { +// "incorrect symbol res", +// func() { +// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() +// }, +// false, +// }, +// { +// "Correct res for name - incorrect for symbol", +// func() { +// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() +// }, +// false, +// }, +// { +// "incorrect symbol res", +// func() { +// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.SetupTest() // reset +// mockEVMKeeper = &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// tc.malleate() +// +// res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) +// if tc.res { +// suite.Require().NoError(err) +// suite.Require().Equal( +// types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, +// res, +// ) +// } else { +// suite.Require().Error(err) +// } +// } +//} diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index d4ad59a32..a314ba3a1 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -1,310 +1,311 @@ package keeper_test -import ( - "context" - "fmt" - "math/big" - - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - "github.com/ethereum/go-ethereum/common" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - abci "github.com/cometbft/cometbft/abci/types" - "github.com/evmos/ethermint/crypto/ethsecp256k1" - "github.com/evmos/ethermint/encoding" - ethermint "github.com/evmos/ethermint/types" - - "github.com/Canto-Network/Canto/v7/testutil" - "github.com/Canto-Network/Canto/v7/x/erc20" - "github.com/Canto-Network/Canto/v7/x/erc20/types" - - sdkmath "cosmossdk.io/math" - authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" -) - -var _ = Describe("Performing EVM transactions", Ordered, func() { - BeforeEach(func() { - s.SetupTest() - - params := s.app.Erc20Keeper.GetParams(s.ctx) - params.EnableEVMHook = true - params.EnableErc20 = true - s.app.Erc20Keeper.SetParams(s.ctx, params) - }) - - // Epoch mechanism for triggering allocation and distribution - Context("with the ERC20 module and EVM Hook disabled", func() { - BeforeEach(func() { - params := s.app.Erc20Keeper.GetParams(s.ctx) - params.EnableEVMHook = false - params.EnableErc20 = false - s.app.Erc20Keeper.SetParams(s.ctx, params) - }) - It("should be successful", func() { - _, err := s.DeployContract("coin", "token", erc20Decimals) - Expect(err).To(BeNil()) - }) - }) - - Context("with the ERC20 module disabled", func() { - BeforeEach(func() { - params := s.app.Erc20Keeper.GetParams(s.ctx) - params.EnableErc20 = false - s.app.Erc20Keeper.SetParams(s.ctx, params) - }) - It("should be successful", func() { - _, err := s.DeployContract("coin", "token", erc20Decimals) - Expect(err).To(BeNil()) - }) - }) - - Context("with the EVMHook disabled", func() { - BeforeEach(func() { - params := s.app.Erc20Keeper.GetParams(s.ctx) - params.EnableEVMHook = false - s.app.Erc20Keeper.SetParams(s.ctx, params) - }) - It("should be successful", func() { - _, err := s.DeployContract("coin", "token", erc20Decimals) - Expect(err).To(BeNil()) - }) - }) - - Context("with the ERC20 module and EVM Hook enabled", func() { - It("should be successful", func() { - _, err := s.DeployContract("coin", "token", erc20Decimals) - Expect(err).To(BeNil()) - }) - }) -}) - -var _ = Describe("ERC20: Converting", Ordered, func() { - amt := sdkmath.NewInt(100) - priv, _ := ethsecp256k1.GenerateKey() - addrBz := priv.PubKey().Address().Bytes() - accAddr := sdk.AccAddress(addrBz) - addr := common.BytesToAddress(addrBz) - moduleAcc := s.app.AccountKeeper.GetModuleAccount(s.ctx, types.ModuleName).GetAddress() - - var ( - pair *types.TokenPair - tokenPair types.TokenPair - coin sdk.Coin - ) - - BeforeEach(func() { - s.SetupTest() - }) - - Context("with a registered coin", func() { - BeforeEach(func() { - _, pair = s.setupRegisterCoin() - coin = sdk.NewCoin(pair.Denom, amt) - - // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom - denom := "acanto" - - err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.TokensFromConsensusPower(100, ethermint.PowerReduction)))) - s.Require().NoError(err) - err = testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(coin)) - s.Require().NoError(err) - }) - - Describe("a Cosmos coin into an ERC20 token", func() { - BeforeEach(func() { - convertCoin(priv, coin) - }) - - It("should decrease coins on the sender account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) - Expect(balanceCoin.IsZero()).To(BeTrue()) - }) - - It("should escrow coins on the module account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) - Expect(balanceCoin).To(Equal(coin)) - }) - - It("should mint tokens and send to receiver", func() { - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) - }) - }) - - Describe("an ERC20 token into a Cosmos coin", func() { - BeforeEach(func() { - convertCoin(priv, coin) - s.Commit() - convertERC20(priv, amt, pair.GetERC20Contract()) - }) - - It("should increase coins on the sender account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) - Expect(balanceCoin).To(Equal(coin)) - }) - - It("should unescrow coins on the module account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) - Expect(balanceCoin.IsZero()).To(BeTrue()) - }) - - It("should burn the receiver's token", func() { - balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(int64(0))) - }) - }) - }) - - Context("with a registered ERC20", func() { - BeforeEach(func() { - contract := s.setupRegisterERC20Pair(contractMinterBurner) - id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) - tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) - coin = sdk.NewCoin(tokenPair.Denom, amt) - - // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom - denom := "acanto" //use default denom for claimsDenom - - err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) - s.Require().NoError(err) - - _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) - s.Commit() - }) - - Describe("an ERC20 token into a Cosmos coin", func() { - BeforeEach(func() { - convertERC20(priv, amt, tokenPair.GetERC20Contract()) - }) - - It("should decrease tokens on the sender account", func() { - balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(int64(0))) - }) - - It("should escrow tokens on the module account", func() { - moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) - balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) - }) - - It("should send coins to the recevier account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) - Expect(balanceCoin).To(Equal(coin)) - }) - }) - - Describe("a Cosmos coin into an ERC20 token", func() { - BeforeEach(func() { - convertERC20(priv, amt, tokenPair.GetERC20Contract()) - s.Commit() - convertCoin(priv, coin) - }) - - It("should increase tokens on the sender account", func() { - balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) - }) - - It("should unescrow tokens on the module account", func() { - moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) - balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) - Expect(balanceERC20.Int64()).To(Equal(int64(0))) - }) - - It("should burn coins to the recevier account", func() { - balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) - Expect(balanceCoin.IsZero()).To(BeTrue()) - }) - }) - }) -}) - -func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { - addrBz := priv.PubKey().Address().Bytes() - - convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) - _, err := finalizeBlock(priv, convertCoinMsg) - s.Require().NoError(err) -} - -func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { - addrBz := priv.PubKey().Address().Bytes() - - convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) - _, err := finalizeBlock(priv, convertERC20Msg) - s.Require().NoError(err) -} - -func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseFinalizeBlock, error) { - txConfig := s.app.TxConfig() - encodingConfig := encoding.MakeTestEncodingConfig(erc20.AppModule{}) - - accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) - // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom - denom := "acanto" - - txBuilder := encodingConfig.TxConfig.NewTxBuilder() - - txBuilder.SetGasLimit(10_000_000) - txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewIntWithDecimal(1, 16)}}) - err := txBuilder.SetMsgs(msgs...) - s.Require().NoError(err) - - seq, err := s.app.AccountKeeper.GetSequence(s.ctx, accountAddress) - s.Require().NoError(err) - - // First round: we gather all the signer infos. We use the "set empty - // signature" hack to do that. - sigV2 := signing.SignatureV2{ - PubKey: priv.PubKey(), - Data: &signing.SingleSignatureData{ - SignMode: signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), - Signature: nil, - }, - Sequence: seq, - } - - sigsV2 := []signing.SignatureV2{sigV2} - - err = txBuilder.SetSignatures(sigsV2...) - s.Require().NoError(err) - - // Second round: all signer infos are set, so each signer can sign. - accNumber := s.app.AccountKeeper.GetAccount(s.ctx, accountAddress).GetAccountNumber() - signerData := authsigning.SignerData{ - ChainID: s.ctx.ChainID(), - AccountNumber: accNumber, - Sequence: seq, - PubKey: priv.PubKey(), - } - sigV2, err = tx.SignWithPrivKey( - context.TODO(), - signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), signerData, - txBuilder, priv, encodingConfig.TxConfig, - seq, - ) - s.Require().NoError(err) - - sigsV2 = []signing.SignatureV2{sigV2} - err = txBuilder.SetSignatures(sigsV2...) - s.Require().NoError(err) - - bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) - s.Require().NoError(err) - - test, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) - s.Require().NoError(err) - fmt.Println(string(test)) - - res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: s.app.LastBlockHeight() + 1, - Txs: [][]byte{bz}, - ProposerAddress: s.consAddress.Bytes(), - }) - - return res, err -} +// +//import ( +// "context" +// "fmt" +// "math/big" +// +// "github.com/cosmos/cosmos-sdk/client/tx" +// sdk "github.com/cosmos/cosmos-sdk/types" +// "github.com/cosmos/cosmos-sdk/types/tx/signing" +// "github.com/ethereum/go-ethereum/common" +// . "github.com/onsi/ginkgo/v2" +// . "github.com/onsi/gomega" +// +// abci "github.com/cometbft/cometbft/abci/types" +// "github.com/evmos/ethermint/crypto/ethsecp256k1" +// "github.com/evmos/ethermint/encoding" +// ethermint "github.com/evmos/ethermint/types" +// +// "github.com/Canto-Network/Canto/v7/testutil" +// "github.com/Canto-Network/Canto/v7/x/erc20" +// "github.com/Canto-Network/Canto/v7/x/erc20/types" +// +// sdkmath "cosmossdk.io/math" +// authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" +//) +// +//var _ = Describe("Performing EVM transactions", Ordered, func() { +// BeforeEach(func() { +// s.SetupTest() +// +// params := s.app.Erc20Keeper.GetParams(s.ctx) +// params.EnableEVMHook = true +// params.EnableErc20 = true +// s.app.Erc20Keeper.SetParams(s.ctx, params) +// }) +// +// // Epoch mechanism for triggering allocation and distribution +// Context("with the ERC20 module and EVM Hook disabled", func() { +// BeforeEach(func() { +// params := s.app.Erc20Keeper.GetParams(s.ctx) +// params.EnableEVMHook = false +// params.EnableErc20 = false +// s.app.Erc20Keeper.SetParams(s.ctx, params) +// }) +// It("should be successful", func() { +// _, err := s.DeployContract("coin", "token", erc20Decimals) +// Expect(err).To(BeNil()) +// }) +// }) +// +// Context("with the ERC20 module disabled", func() { +// BeforeEach(func() { +// params := s.app.Erc20Keeper.GetParams(s.ctx) +// params.EnableErc20 = false +// s.app.Erc20Keeper.SetParams(s.ctx, params) +// }) +// It("should be successful", func() { +// _, err := s.DeployContract("coin", "token", erc20Decimals) +// Expect(err).To(BeNil()) +// }) +// }) +// +// Context("with the EVMHook disabled", func() { +// BeforeEach(func() { +// params := s.app.Erc20Keeper.GetParams(s.ctx) +// params.EnableEVMHook = false +// s.app.Erc20Keeper.SetParams(s.ctx, params) +// }) +// It("should be successful", func() { +// _, err := s.DeployContract("coin", "token", erc20Decimals) +// Expect(err).To(BeNil()) +// }) +// }) +// +// Context("with the ERC20 module and EVM Hook enabled", func() { +// It("should be successful", func() { +// _, err := s.DeployContract("coin", "token", erc20Decimals) +// Expect(err).To(BeNil()) +// }) +// }) +//}) +// +//var _ = Describe("ERC20: Converting", Ordered, func() { +// amt := sdkmath.NewInt(100) +// priv, _ := ethsecp256k1.GenerateKey() +// addrBz := priv.PubKey().Address().Bytes() +// accAddr := sdk.AccAddress(addrBz) +// addr := common.BytesToAddress(addrBz) +// moduleAcc := s.app.AccountKeeper.GetModuleAccount(s.ctx, types.ModuleName).GetAddress() +// +// var ( +// pair *types.TokenPair +// tokenPair types.TokenPair +// coin sdk.Coin +// ) +// +// BeforeEach(func() { +// s.SetupTest() +// }) +// +// Context("with a registered coin", func() { +// BeforeEach(func() { +// _, pair = s.setupRegisterCoin() +// coin = sdk.NewCoin(pair.Denom, amt) +// +// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom +// denom := "acanto" +// +// err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.TokensFromConsensusPower(100, ethermint.PowerReduction)))) +// s.Require().NoError(err) +// err = testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(coin)) +// s.Require().NoError(err) +// }) +// +// Describe("a Cosmos coin into an ERC20 token", func() { +// BeforeEach(func() { +// convertCoin(priv, coin) +// }) +// +// It("should decrease coins on the sender account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) +// Expect(balanceCoin.IsZero()).To(BeTrue()) +// }) +// +// It("should escrow coins on the module account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) +// Expect(balanceCoin).To(Equal(coin)) +// }) +// +// It("should mint tokens and send to receiver", func() { +// balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) +// }) +// }) +// +// Describe("an ERC20 token into a Cosmos coin", func() { +// BeforeEach(func() { +// convertCoin(priv, coin) +// s.Commit() +// convertERC20(priv, amt, pair.GetERC20Contract()) +// }) +// +// It("should increase coins on the sender account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) +// Expect(balanceCoin).To(Equal(coin)) +// }) +// +// It("should unescrow coins on the module account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) +// Expect(balanceCoin.IsZero()).To(BeTrue()) +// }) +// +// It("should burn the receiver's token", func() { +// balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(int64(0))) +// }) +// }) +// }) +// +// Context("with a registered ERC20", func() { +// BeforeEach(func() { +// contract := s.setupRegisterERC20Pair(contractMinterBurner) +// id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) +// tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) +// coin = sdk.NewCoin(tokenPair.Denom, amt) +// +// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom +// denom := "acanto" //use default denom for claimsDenom +// +// err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) +// s.Require().NoError(err) +// +// _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) +// s.Commit() +// }) +// +// Describe("an ERC20 token into a Cosmos coin", func() { +// BeforeEach(func() { +// convertERC20(priv, amt, tokenPair.GetERC20Contract()) +// }) +// +// It("should decrease tokens on the sender account", func() { +// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(int64(0))) +// }) +// +// It("should escrow tokens on the module account", func() { +// moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) +// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) +// }) +// +// It("should send coins to the recevier account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) +// Expect(balanceCoin).To(Equal(coin)) +// }) +// }) +// +// Describe("a Cosmos coin into an ERC20 token", func() { +// BeforeEach(func() { +// convertERC20(priv, amt, tokenPair.GetERC20Contract()) +// s.Commit() +// convertCoin(priv, coin) +// }) +// +// It("should increase tokens on the sender account", func() { +// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) +// }) +// +// It("should unescrow tokens on the module account", func() { +// moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) +// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) +// Expect(balanceERC20.Int64()).To(Equal(int64(0))) +// }) +// +// It("should burn coins to the recevier account", func() { +// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) +// Expect(balanceCoin.IsZero()).To(BeTrue()) +// }) +// }) +// }) +//}) +// +//func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { +// addrBz := priv.PubKey().Address().Bytes() +// +// convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) +// _, err := finalizeBlock(priv, convertCoinMsg) +// s.Require().NoError(err) +//} +// +//func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { +// addrBz := priv.PubKey().Address().Bytes() +// +// convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) +// _, err := finalizeBlock(priv, convertERC20Msg) +// s.Require().NoError(err) +//} +// +//func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseFinalizeBlock, error) { +// txConfig := s.app.TxConfig() +// encodingConfig := encoding.MakeTestEncodingConfig(erc20.AppModule{}) +// +// accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) +// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom +// denom := "acanto" +// +// txBuilder := encodingConfig.TxConfig.NewTxBuilder() +// +// txBuilder.SetGasLimit(10_000_000) +// txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewIntWithDecimal(1, 16)}}) +// err := txBuilder.SetMsgs(msgs...) +// s.Require().NoError(err) +// +// seq, err := s.app.AccountKeeper.GetSequence(s.ctx, accountAddress) +// s.Require().NoError(err) +// +// // First round: we gather all the signer infos. We use the "set empty +// // signature" hack to do that. +// sigV2 := signing.SignatureV2{ +// PubKey: priv.PubKey(), +// Data: &signing.SingleSignatureData{ +// SignMode: signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), +// Signature: nil, +// }, +// Sequence: seq, +// } +// +// sigsV2 := []signing.SignatureV2{sigV2} +// +// err = txBuilder.SetSignatures(sigsV2...) +// s.Require().NoError(err) +// +// // Second round: all signer infos are set, so each signer can sign. +// accNumber := s.app.AccountKeeper.GetAccount(s.ctx, accountAddress).GetAccountNumber() +// signerData := authsigning.SignerData{ +// ChainID: s.ctx.ChainID(), +// AccountNumber: accNumber, +// Sequence: seq, +// PubKey: priv.PubKey(), +// } +// sigV2, err = tx.SignWithPrivKey( +// context.TODO(), +// signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), signerData, +// txBuilder, priv, encodingConfig.TxConfig, +// seq, +// ) +// s.Require().NoError(err) +// +// sigsV2 = []signing.SignatureV2{sigV2} +// err = txBuilder.SetSignatures(sigsV2...) +// s.Require().NoError(err) +// +// bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) +// s.Require().NoError(err) +// +// test, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) +// s.Require().NoError(err) +// fmt.Println(string(test)) +// +// res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ +// Height: s.app.LastBlockHeight() + 1, +// Txs: [][]byte{bz}, +// ProposerAddress: s.consAddress.Bytes(), +// }) +// +// return res, err +//} diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index b84f9a62a..675e15095 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -2,12 +2,15 @@ package keeper import ( "context" + "fmt" "math/big" + "strings" errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" "github.com/hashicorp/go-metrics" @@ -543,3 +546,265 @@ func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) return &types.MsgUpdateParamsResponse{}, nil } + +func (k Keeper) RegisterCoinProposal(goCtx context.Context, req *types.MsgRegisterCoinProposal) (*types.MsgRegisterCoinProposalResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + coinMetadata := req.Metadata + + _, err := k.RegisterCoin(ctx, coinMetadata) + if err != nil { + return nil, err + } + + return &types.MsgRegisterCoinProposalResponse{}, nil +} + +func (k Keeper) RegisterERC20Proposal(goCtx context.Context, req *types.MsgRegisterERC20Proposal) (*types.MsgRegisterERC20ProposalResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + contract := common.HexToAddress(req.Erc20Address) + + _, err := k.RegisterERC20(ctx, contract) + if err != nil { + return nil, err + } + + return &types.MsgRegisterERC20ProposalResponse{}, nil +} + +func (k Keeper) ToggleTokenConversionProposal(goCtx context.Context, req *types.MsgToggleTokenConversionProposal) (*types.MsgToggleTokenConversionProposalResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + token := req.Token + + _, err := k.ToggleConversion(ctx, token) + if err != nil { + return nil, err + } + + return &types.MsgToggleTokenConversionProposalResponse{}, nil +} + +// RegisterCoin deploys an erc20 contract and creates the token pair for the +// existing cosmos coin +func (k Keeper) RegisterCoin( + ctx sdk.Context, + coinMetadata banktypes.Metadata, +) (*types.TokenPair, error) { + // Check if the conversion is globally enabled + params := k.GetParams(ctx) + if !params.EnableErc20 { + return nil, errorsmod.Wrap( + types.ErrERC20Disabled, "registration is currently disabled by governance", + ) + } + + // Prohibit denominations that contain the evm denom + if strings.Contains(coinMetadata.Base, "CANTO") { + return nil, errorsmod.Wrapf( + types.ErrEVMDenom, "cannot register the EVM denomination %s", coinMetadata.Base, + ) + } + + // Check if denomination is already registered + if k.IsDenomRegistered(ctx, coinMetadata.Name) { + return nil, errorsmod.Wrapf( + types.ErrTokenPairAlreadyExists, "coin denomination already registered: %s", coinMetadata.Name, + ) + } + + // Check if the coin exists by ensuring the supply is set + if !k.bankKeeper.HasSupply(ctx, coinMetadata.Base) { + return nil, errorsmod.Wrapf( + sdkerrors.ErrInvalidCoins, "base denomination '%s' cannot have a supply of 0", coinMetadata.Base, + ) + } + + if err := k.verifyMetadata(ctx, coinMetadata); err != nil { + return nil, errorsmod.Wrapf( + types.ErrInternalTokenPair, "coin metadata is invalid %s", coinMetadata.Name, + ) + } + + addr, err := k.DeployERC20Contract(ctx, coinMetadata) + if err != nil { + return nil, errorsmod.Wrap( + err, "failed to create wrapped coin denom metadata for ERC20", + ) + } + + pair := types.NewTokenPair(addr, coinMetadata.Base, true, types.OWNER_MODULE) + k.SetTokenPair(ctx, pair) + k.SetDenomMap(ctx, pair.Denom, pair.GetID()) + k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) + + return &pair, nil +} + +// RegisterERC20 creates a Cosmos coin and registers the token pair between the +// coin and the ERC20 +func (k Keeper) RegisterERC20( + ctx sdk.Context, + contract common.Address, +) (*types.TokenPair, error) { + // Check if the conversion is globally enabled + params := k.GetParams(ctx) + if !params.EnableErc20 { + return nil, errorsmod.Wrap( + types.ErrERC20Disabled, "registration is currently disabled by governance", + ) + } + + // Check if ERC20 is already registered + if k.IsERC20Registered(ctx, contract) { + return nil, errorsmod.Wrapf( + types.ErrTokenPairAlreadyExists, "token ERC20 contract already registered: %s", contract.String(), + ) + } + + metadata, err := k.CreateCoinMetadata(ctx, contract) + if err != nil { + return nil, errorsmod.Wrap( + err, "failed to create wrapped coin denom metadata for ERC20", + ) + } + + pair := types.NewTokenPair(contract, metadata.Name, true, types.OWNER_EXTERNAL) + k.SetTokenPair(ctx, pair) + k.SetDenomMap(ctx, pair.Denom, pair.GetID()) + k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) + return &pair, nil +} + +// ToggleConversion toggles conversion for a given token pair +func (k Keeper) ToggleConversion( + ctx sdk.Context, + token string, +) (types.TokenPair, error) { + id := k.GetTokenPairID(ctx, token) + if len(id) == 0 { + return types.TokenPair{}, errorsmod.Wrapf( + types.ErrTokenPairNotFound, "token '%s' not registered by id", token, + ) + } + + pair, found := k.GetTokenPair(ctx, id) + if !found { + return types.TokenPair{}, errorsmod.Wrapf( + types.ErrTokenPairNotFound, "token '%s' not registered", token, + ) + } + + pair.Enabled = !pair.Enabled + + k.SetTokenPair(ctx, pair) + return pair, nil +} + +// CreateCoinMetadata generates the metadata to represent the ERC20 token on +// canto. +func (k Keeper) CreateCoinMetadata( + ctx sdk.Context, + contract common.Address, +) (*banktypes.Metadata, error) { + strContract := contract.String() + + erc20Data, err := k.QueryERC20(ctx, contract) + if err != nil { + return nil, err + } + + // Check if metadata already exists + _, found := k.bankKeeper.GetDenomMetaData(ctx, CreateDenom(strContract)) + if found { + return nil, errorsmod.Wrap( + types.ErrInternalTokenPair, "denom metadata already registered", + ) + } + + if k.IsDenomRegistered(ctx, CreateDenom(strContract)) { + return nil, errorsmod.Wrapf( + types.ErrInternalTokenPair, "coin denomination already registered: %s", erc20Data.Name, + ) + } + + // base denomination + base := CreateDenom(strContract) + + // create a bank denom metadata based on the ERC20 token ABI details + // metadata name is should always be the contract since it's the key + // to the bank store + metadata := banktypes.Metadata{ + Description: CreateDenomDescription(strContract), + Base: base, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: base, + Exponent: 0, + }, + }, + Name: CreateDenom(strContract), + Symbol: erc20Data.Symbol, + Display: base, + } + + // only append metadata if decimals > 0, otherwise validation fails + if erc20Data.Decimals > 0 { + nameSanitized := types.SanitizeERC20Name(erc20Data.Name) + metadata.DenomUnits = append( + metadata.DenomUnits, + &banktypes.DenomUnit{ + Denom: nameSanitized, + Exponent: uint32(erc20Data.Decimals), + }, + ) + metadata.Display = nameSanitized + } + + if err := metadata.Validate(); err != nil { + return nil, errorsmod.Wrapf( + err, "ERC20 token data is invalid for contract %s", strContract, + ) + } + + k.bankKeeper.SetDenomMetaData(ctx, metadata) + + return &metadata, nil +} + +// verifyMetadata verifies if the metadata matches the existing one, if not it +// sets it to the store +func (k Keeper) verifyMetadata( + ctx sdk.Context, + coinMetadata banktypes.Metadata, +) error { + meta, found := k.bankKeeper.GetDenomMetaData(ctx, coinMetadata.Base) + if !found { + k.bankKeeper.SetDenomMetaData(ctx, coinMetadata) + return nil + } + + // If it already existed, check that is equal to what is stored + return types.EqualMetadata(meta, coinMetadata) +} + +// CreateDenomDescription generates a string with the coin description +func CreateDenomDescription(address string) string { + return fmt.Sprintf("Cosmos coin token representation of %s", address) +} + +// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number +func CreateDenom(address string) string { + return fmt.Sprintf("%s/%s", types.ModuleName, address) +} diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 867a33cb4..57ce14443 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -1,1318 +1,1303 @@ package keeper_test -import ( - "fmt" - "math/big" - - sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/mock" - - "github.com/ethereum/go-ethereum/common" - - "github.com/Canto-Network/Canto/v7/x/erc20/keeper" - "github.com/Canto-Network/Canto/v7/x/erc20/types" - "github.com/evmos/ethermint/x/evm/statedb" - evmtypes "github.com/evmos/ethermint/x/evm/types" -) - -func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { - testCases := []struct { - name string - mint int64 - burn int64 - malleate func(common.Address) - extra func() - expPass bool - selfdestructed bool - }{ - { - "ok - sufficient funds", - 100, - 10, - func(common.Address) {}, - func() {}, - true, - false, - }, - { - "ok - equal funds", - 10, - 10, - func(common.Address) {}, - func() {}, - true, - false, - }, - { - "ok - suicided contract", - 10, - 10, - func(erc20 common.Address) { - stateDb := suite.StateDB() - ok := stateDb.Suicide(erc20) - suite.Require().True(ok) - suite.Require().NoError(stateDb.Commit()) - }, - func() {}, - true, - true, - }, - { - "fail - insufficient funds", - 0, - 10, - func(common.Address) {}, - func() {}, - false, - false, - }, - { - "fail - minting disabled", - 100, - 10, - func(common.Address) { - params := types.DefaultParams() - params.EnableErc20 = false - suite.app.Erc20Keeper.SetParams(suite.ctx, params) - }, - func() {}, - false, - false, - }, - { - "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, false, false, - }, - { - "fail - force evm fail", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - { - "fail - force evm balance error", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - { - "fail - force balance error", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - metadata, pair := suite.setupRegisterCoin() - suite.Require().NotNil(metadata) - erc20 := pair.GetERC20Contract() - tc.malleate(erc20) - suite.Commit() - - ctx := sdk.WrapSDKContext(suite.ctx) - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) - sender := sdk.AccAddress(suite.address.Bytes()) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - - tc.extra() - res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - expRes := &types.MsgConvertCoinResponse{} - suite.Commit() - balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - - if tc.expPass { - suite.Require().NoError(err, tc.name) - - acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) - if tc.selfdestructed { - suite.Require().Nil(acc, "expected contract to be destroyed") - } else { - suite.Require().NotNil(acc) - } - - if tc.selfdestructed || !acc.IsContract() { - id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) - _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - suite.Require().False(found) - } else { - suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) - suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) - } - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { - testCases := []struct { - name string - mint int64 - burn int64 - reconvert int64 - malleate func() - expPass bool - }{ - {"ok - sufficient funds", 100, 10, 5, func() {}, true}, - {"ok - equal funds", 10, 10, 10, func() {}, true}, - {"fail - insufficient funds", 10, 1, 5, func() {}, false}, - {"fail ", 10, 1, -5, func() {}, false}, - { - "fail - deleted module account - force fail", 100, 10, 5, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, - false, - }, - { - "fail - force evm fail", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail second balance", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail second balance", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail unescrow", 100, 10, 5, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) - }, - false, - }, - { - "fail - force fail balance after transfer", 100, 10, 5, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdkmath.OneInt()}) - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - metadata, pair := suite.setupRegisterCoin() - suite.Require().NotNil(metadata) - suite.Require().NotNil(pair) - - // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) - sender := sdk.AccAddress(suite.address.Bytes()) - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - ctx := sdk.WrapSDKContext(suite.ctx) - _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - suite.Require().NoError(err, tc.name) - suite.Commit() - balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) - suite.Require().Equal(balance, big.NewInt(tc.burn)) - - // Convert ERC20s back to Coins - ctx = sdk.WrapSDKContext(suite.ctx) - contractAddr := common.HexToAddress(pair.Erc20Address) - msgConvertERC20 := types.NewMsgConvertERC20( - sdkmath.NewInt(tc.reconvert), - sender, - contractAddr, - suite.address, - ) - - tc.malleate() - res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) - expRes := &types.MsgConvertERC20Response{} - suite.Commit() - balance = suite.BalanceOf(contractAddr, suite.address) - cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) - if tc.expPass { - suite.Require().NoError(err, tc.name) - suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) - suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { - var contractAddr common.Address - var coinName string - - testCases := []struct { - name string - mint int64 - transfer int64 - malleate func(common.Address) - extra func() - contractType int - expPass bool - selfdestructed bool - }{ - { - "ok - sufficient funds", - 100, - 10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - true, - false, - }, - { - "ok - equal funds", - 10, - 10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - true, - false, - }, - { - "ok - equal funds", - 10, - 10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - true, - false, - }, - { - "ok - suicided contract", - 10, - 10, - func(erc20 common.Address) { - stateDb := suite.StateDB() - ok := stateDb.Suicide(erc20) - suite.Require().True(ok) - suite.Require().NoError(stateDb.Commit()) - }, - func() {}, - contractMinterBurner, - true, - true, - }, - { - "fail - insufficient funds - callEVM", - 0, - 10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - false, - false, - }, - { - "fail - minting disabled", - 100, - 10, - func(common.Address) { - params := types.DefaultParams() - params.EnableErc20 = false - suite.app.Erc20Keeper.SetParams(suite.ctx, params) - }, - func() {}, - contractMinterBurner, - false, - false, - }, - { - "fail - direct balance manipulation contract", - 100, - 10, - func(common.Address) {}, - func() {}, - contractDirectBalanceManipulation, - false, - false, - }, - { - "fail - delayed malicious contract", - 10, - 10, - func(common.Address) {}, - func() {}, - contractMaliciousDelayed, - false, - false, - }, - { - "fail - negative transfer contract", - 10, - -10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - false, - false, - }, - { - "fail - no module address", - 100, - 10, - func(common.Address) { - }, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force evm fail", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force get balance fail", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - balance[31] = uint8(1) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced balance error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force transfer unpack fail", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - false, - }, - - { - "fail - force invalid transfer fail", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force mint fail", - 100, - 10, - func(common.Address) {}, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force send minted fail", - 100, - 10, - func(common.Address) {}, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) - }, - contractMinterBurner, - false, - false, - }, - { - "fail - force bank balance fail", - 100, - 10, - func(common.Address) {}, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdkmath.NewInt(int64(10))}) - }, - contractMinterBurner, - false, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - - contractAddr = suite.setupRegisterERC20Pair(tc.contractType) - - tc.malleate(contractAddr) - suite.Require().NotNil(contractAddr) - suite.Commit() - - coinName = types.CreateDenom(contractAddr.String()) - sender := sdk.AccAddress(suite.address.Bytes()) - msg := types.NewMsgConvertERC20( - sdkmath.NewInt(tc.transfer), - sender, - contractAddr, - suite.address, - ) - - suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint)) - suite.Commit() - ctx := suite.ctx - - tc.extra() - res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg) - - expRes := &types.MsgConvertERC20Response{} - suite.Commit() - balance := suite.BalanceOf(contractAddr, suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) - if tc.expPass { - suite.Require().NoError(err, tc.name) - - acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, contractAddr) - if tc.selfdestructed { - suite.Require().Nil(acc, "expected contract to be destroyed") - } else { - suite.Require().NotNil(acc) - } - - if tc.selfdestructed || !acc.IsContract() { - id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) - _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - suite.Require().False(found) - } else { - suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.transfer)) - suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64()) - } - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { - var contractAddr common.Address - - testCases := []struct { - name string - mint int64 - convert int64 - malleate func(common.Address) - extra func() - contractType int - expPass bool - }{ - { - "ok - sufficient funds", - 100, - 10, - func(common.Address) {}, - func() {}, - contractMinterBurner, - true, - }, - { - "ok - equal funds", - 100, - 100, - func(common.Address) {}, - func() {}, - contractMinterBurner, - true, - }, - { - "fail - insufficient funds", - 100, - 200, - func(common.Address) {}, - func() {}, - contractMinterBurner, - false, - }, - { - "fail - direct balance manipulation contract", - 100, - 10, - func(common.Address) {}, - func() {}, - contractDirectBalanceManipulation, - false, - }, - { - "fail - malicious delayed contract", - 100, - 10, - func(common.Address) {}, - func() {}, - contractMaliciousDelayed, - false, - }, - { - "fail - deleted module address - force fail", - 100, - 10, - func(common.Address) {}, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, - contractMinterBurner, - false, - }, - { - "fail - force evm fail", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - }, - { - "fail - force invalid transfer", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - }, - { - "fail - force fail second balance", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - balance[31] = uint8(1) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("fail second balance")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - }, - { - "fail - force fail transfer", - 100, - 10, - func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - contractMinterBurner, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - contractAddr = suite.setupRegisterERC20Pair(tc.contractType) - suite.Require().NotNil(contractAddr) - - id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) - pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) - coinName := types.CreateDenom(contractAddr.String()) - sender := sdk.AccAddress(suite.address.Bytes()) - - // Precondition: Mint Coins to convert on sender account - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) - suite.Require().Equal(sdkmath.NewInt(tc.mint), cosmosBalance.Amount) - - // Precondition: Mint escrow tokens on module account - suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE") - suite.MintERC20Token(contractAddr, types.ModuleAddress, types.ModuleAddress, big.NewInt(tc.mint)) - tokenBalance := suite.BalanceOf(contractAddr, types.ModuleAddress) - suite.Require().Equal(big.NewInt(tc.mint), tokenBalance) - - tc.malleate(contractAddr) - suite.Commit() - - // Convert Coins back to ERC20s - receiver := suite.address - ctx := sdk.WrapSDKContext(suite.ctx) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(coinName, sdkmath.NewInt(tc.convert)), - receiver, - sender, - ) - - tc.extra() - res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - - expRes := &types.MsgConvertCoinResponse{} - suite.Commit() - tokenBalance = suite.BalanceOf(contractAddr, suite.address) - cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) - if tc.expPass { - suite.Require().NoError(err, tc.name) - suite.Require().Equal(expRes, res) - suite.Require().Equal(sdkmath.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) - suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int)) - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { - testCases := []struct { - name string - mint int64 - burn int64 - reconvert int64 - expPass bool - }{ - {"ok - sufficient funds", 100, 10, 5, true}, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - metadata, pair := suite.setupRegisterCoin() - suite.Require().NotNil(metadata) - suite.Require().NotNil(pair) - - // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) - sender := sdk.AccAddress(suite.address.Bytes()) - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - pair.ContractOwner = types.OWNER_UNSPECIFIED - suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) - - ctx := sdk.WrapSDKContext(suite.ctx) - _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - suite.Require().Error(err, tc.name) - - // Convert ERC20s back to Coins - ctx = sdk.WrapSDKContext(suite.ctx) - contractAddr := common.HexToAddress(pair.Erc20Address) - msgConvertERC20 := types.NewMsgConvertERC20( - sdkmath.NewInt(tc.reconvert), - sender, - contractAddr, - suite.address, - ) - - _, err = suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) - suite.Require().Error(err, tc.name) - }) - } -} - -func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { - testCases := []struct { - name string - mint int64 - burn int64 - malleate func(common.Address) - extra func() - expPass bool - selfdestructed bool - }{ - { - "ok - sufficient funds", - 100, - 10, - func(common.Address) {}, - func() {}, - true, - false, - }, - { - "ok - equal funds", - 10, - 10, - func(common.Address) {}, - func() {}, - true, - false, - }, - { - "ok - suicided contract", - 10, - 10, - func(erc20 common.Address) { - stateDb := suite.StateDB() - ok := stateDb.Suicide(erc20) - suite.Require().True(ok) - suite.Require().NoError(stateDb.Commit()) - }, - func() {}, - true, - true, - }, - { - "fail - insufficient funds", - 0, - 10, - func(common.Address) {}, - func() {}, - false, - false, - }, - { - "fail - minting disabled", - 100, - 10, - func(common.Address) { - params := types.DefaultParams() - params.EnableErc20 = false - suite.app.Erc20Keeper.SetParams(suite.ctx, params) - }, - func() {}, - false, - false, - }, - { - "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, false, false, - }, - { - "fail - force evm fail", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - { - "fail - force evm balance error", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - { - "fail - force balance error", 100, 10, func(common.Address) {}, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, false, false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - metadata, pair := suite.setupRegisterIBCVoucher() - suite.Require().NotNil(metadata) - erc20 := pair.GetERC20Contract() - tc.malleate(erc20) - suite.Commit() - - ctx := sdk.WrapSDKContext(suite.ctx) - coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) - sender := sdk.AccAddress(suite.address.Bytes()) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - - tc.extra() - res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - expRes := &types.MsgConvertCoinResponse{} - suite.Commit() - balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - - if tc.expPass { - suite.Require().NoError(err, tc.name) - - acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) - if tc.selfdestructed { - suite.Require().Nil(acc, "expected contract to be destroyed") - } else { - suite.Require().NotNil(acc) - } - - if tc.selfdestructed || !acc.IsContract() { - id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) - _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - suite.Require().False(found) - } else { - suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) - suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) - } - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} - -func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { - testCases := []struct { - name string - mint int64 - burn int64 - reconvert int64 - malleate func() - expPass bool - }{ - {"ok - sufficient funds", 100, 10, 5, func() {}, true}, - {"ok - equal funds", 10, 10, 10, func() {}, true}, - {"fail - insufficient funds", 10, 1, 5, func() {}, false}, - {"fail ", 10, 1, -5, func() {}, false}, - { - "fail - deleted module account - force fail", 100, 10, 5, - func() { - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, - false, - }, - { - "fail - force evm fail", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail second balance", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail second balance", 100, 10, 5, - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - - existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} - balance := make([]uint8, 32) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - // first balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // convert coin - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() - // second balance of - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() - // Extra call on test - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) - mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) - }, - false, - }, - { - "fail - force fail unescrow", 100, 10, 5, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) - }, - false, - }, - { - "fail - force fail balance after transfer", 100, 10, 5, - func() { - mockBankKeeper := &MockBankKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) - - mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) - mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) - mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdkmath.OneInt()}) - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.mintFeeCollector = true - suite.SetupTest() - metadata, pair := suite.setupRegisterIBCVoucher() - suite.Require().NotNil(metadata) - suite.Require().NotNil(pair) - - // Precondition: Convert Coin to ERC20 - coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) - sender := sdk.AccAddress(suite.address.Bytes()) - suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) - suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) - msg := types.NewMsgConvertCoin( - sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), - suite.address, - sender, - ) - - ctx := sdk.WrapSDKContext(suite.ctx) - _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) - suite.Require().NoError(err, tc.name) - suite.Commit() - balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) - cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) - suite.Require().Equal(balance, big.NewInt(tc.burn)) - - // Convert ERC20s back to Coins - ctx = sdk.WrapSDKContext(suite.ctx) - contractAddr := common.HexToAddress(pair.Erc20Address) - msgConvertERC20 := types.NewMsgConvertERC20( - sdkmath.NewInt(tc.reconvert), - sender, - contractAddr, - suite.address, - ) - - tc.malleate() - res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) - expRes := &types.MsgConvertERC20Response{} - suite.Commit() - balance = suite.BalanceOf(contractAddr, suite.address) - cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) - if tc.expPass { - suite.Require().NoError(err, tc.name) - suite.Require().Equal(expRes, res) - suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) - suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) - } else { - suite.Require().Error(err, tc.name) - } - }) - } - suite.mintFeeCollector = false -} +// +//func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// malleate func(common.Address) +// extra func() +// expPass bool +// selfdestructed bool +// }{ +// { +// "ok - sufficient funds", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// true, +// false, +// }, +// { +// "ok - equal funds", +// 10, +// 10, +// func(common.Address) {}, +// func() {}, +// true, +// false, +// }, +// { +// "ok - suicided contract", +// 10, +// 10, +// func(erc20 common.Address) { +// stateDb := suite.StateDB() +// ok := stateDb.Suicide(erc20) +// suite.Require().True(ok) +// suite.Require().NoError(stateDb.Commit()) +// }, +// func() {}, +// true, +// true, +// }, +// { +// "fail - insufficient funds", +// 0, +// 10, +// func(common.Address) {}, +// func() {}, +// false, +// false, +// }, +// { +// "fail - minting disabled", +// 100, +// 10, +// func(common.Address) { +// params := types.DefaultParams() +// params.EnableErc20 = false +// suite.app.Erc20Keeper.SetParams(suite.ctx, params) +// }, +// func() {}, +// false, +// false, +// }, +// { +// "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, false, false, +// }, +// { +// "fail - force evm fail", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// { +// "fail - force evm balance error", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// { +// "fail - force balance error", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// metadata, pair := suite.setupRegisterCoin() +// suite.Require().NotNil(metadata) +// erc20 := pair.GetERC20Contract() +// tc.malleate(erc20) +// suite.Commit() +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) +// sender := sdk.AccAddress(suite.address.Bytes()) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// +// tc.extra() +// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// expRes := &types.MsgConvertCoinResponse{} +// suite.Commit() +// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// +// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) +// if tc.selfdestructed { +// suite.Require().Nil(acc, "expected contract to be destroyed") +// } else { +// suite.Require().NotNil(acc) +// } +// +// if tc.selfdestructed || !acc.IsContract() { +// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) +// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// suite.Require().False(found) +// } else { +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) +// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) +// } +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// reconvert int64 +// malleate func() +// expPass bool +// }{ +// {"ok - sufficient funds", 100, 10, 5, func() {}, true}, +// {"ok - equal funds", 10, 10, 10, func() {}, true}, +// {"fail - insufficient funds", 10, 1, 5, func() {}, false}, +// {"fail ", 10, 1, -5, func() {}, false}, +// { +// "fail - deleted module account - force fail", 100, 10, 5, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, +// false, +// }, +// { +// "fail - force evm fail", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail second balance", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail second balance", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail unescrow", 100, 10, 5, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) +// }, +// false, +// }, +// { +// "fail - force fail balance after transfer", 100, 10, 5, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdkmath.OneInt()}) +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// metadata, pair := suite.setupRegisterCoin() +// suite.Require().NotNil(metadata) +// suite.Require().NotNil(pair) +// +// // Precondition: Convert Coin to ERC20 +// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) +// sender := sdk.AccAddress(suite.address.Bytes()) +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// suite.Require().NoError(err, tc.name) +// suite.Commit() +// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) +// suite.Require().Equal(balance, big.NewInt(tc.burn)) +// +// // Convert ERC20s back to Coins +// ctx = sdk.WrapSDKContext(suite.ctx) +// contractAddr := common.HexToAddress(pair.Erc20Address) +// msgConvertERC20 := types.NewMsgConvertERC20( +// sdkmath.NewInt(tc.reconvert), +// sender, +// contractAddr, +// suite.address, +// ) +// +// tc.malleate() +// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) +// expRes := &types.MsgConvertERC20Response{} +// suite.Commit() +// balance = suite.BalanceOf(contractAddr, suite.address) +// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) +// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { +// var contractAddr common.Address +// var coinName string +// +// testCases := []struct { +// name string +// mint int64 +// transfer int64 +// malleate func(common.Address) +// extra func() +// contractType int +// expPass bool +// selfdestructed bool +// }{ +// { +// "ok - sufficient funds", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// true, +// false, +// }, +// { +// "ok - equal funds", +// 10, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// true, +// false, +// }, +// { +// "ok - equal funds", +// 10, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// true, +// false, +// }, +// { +// "ok - suicided contract", +// 10, +// 10, +// func(erc20 common.Address) { +// stateDb := suite.StateDB() +// ok := stateDb.Suicide(erc20) +// suite.Require().True(ok) +// suite.Require().NoError(stateDb.Commit()) +// }, +// func() {}, +// contractMinterBurner, +// true, +// true, +// }, +// { +// "fail - insufficient funds - callEVM", +// 0, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - minting disabled", +// 100, +// 10, +// func(common.Address) { +// params := types.DefaultParams() +// params.EnableErc20 = false +// suite.app.Erc20Keeper.SetParams(suite.ctx, params) +// }, +// func() {}, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - direct balance manipulation contract", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// contractDirectBalanceManipulation, +// false, +// false, +// }, +// { +// "fail - delayed malicious contract", +// 10, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMaliciousDelayed, +// false, +// false, +// }, +// { +// "fail - negative transfer contract", +// 10, +// -10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - no module address", +// 100, +// 10, +// func(common.Address) { +// }, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force evm fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force get balance fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// balance[31] = uint8(1) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced balance error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force transfer unpack fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// +// { +// "fail - force invalid transfer fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force mint fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) +// +// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force send minted fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) +// +// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// { +// "fail - force bank balance fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) +// +// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdkmath.NewInt(int64(10))}) +// }, +// contractMinterBurner, +// false, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// +// contractAddr = suite.setupRegisterERC20Pair(tc.contractType) +// +// tc.malleate(contractAddr) +// suite.Require().NotNil(contractAddr) +// suite.Commit() +// +// coinName = types.CreateDenom(contractAddr.String()) +// sender := sdk.AccAddress(suite.address.Bytes()) +// msg := types.NewMsgConvertERC20( +// sdkmath.NewInt(tc.transfer), +// sender, +// contractAddr, +// suite.address, +// ) +// +// suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint)) +// suite.Commit() +// ctx := suite.ctx +// +// tc.extra() +// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg) +// +// expRes := &types.MsgConvertERC20Response{} +// suite.Commit() +// balance := suite.BalanceOf(contractAddr, suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// +// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, contractAddr) +// if tc.selfdestructed { +// suite.Require().Nil(acc, "expected contract to be destroyed") +// } else { +// suite.Require().NotNil(acc) +// } +// +// if tc.selfdestructed || !acc.IsContract() { +// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) +// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// suite.Require().False(found) +// } else { +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.transfer)) +// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64()) +// } +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { +// var contractAddr common.Address +// +// testCases := []struct { +// name string +// mint int64 +// convert int64 +// malleate func(common.Address) +// extra func() +// contractType int +// expPass bool +// }{ +// { +// "ok - sufficient funds", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// true, +// }, +// { +// "ok - equal funds", +// 100, +// 100, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// true, +// }, +// { +// "fail - insufficient funds", +// 100, +// 200, +// func(common.Address) {}, +// func() {}, +// contractMinterBurner, +// false, +// }, +// { +// "fail - direct balance manipulation contract", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// contractDirectBalanceManipulation, +// false, +// }, +// { +// "fail - malicious delayed contract", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// contractMaliciousDelayed, +// false, +// }, +// { +// "fail - deleted module address - force fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, +// contractMinterBurner, +// false, +// }, +// { +// "fail - force evm fail", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// }, +// { +// "fail - force invalid transfer", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// }, +// { +// "fail - force fail second balance", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// balance[31] = uint8(1) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("fail second balance")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// }, +// { +// "fail - force fail transfer", +// 100, +// 10, +// func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// contractMinterBurner, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// contractAddr = suite.setupRegisterERC20Pair(tc.contractType) +// suite.Require().NotNil(contractAddr) +// +// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) +// pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) +// coinName := types.CreateDenom(contractAddr.String()) +// sender := sdk.AccAddress(suite.address.Bytes()) +// +// // Precondition: Mint Coins to convert on sender account +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) +// suite.Require().Equal(sdkmath.NewInt(tc.mint), cosmosBalance.Amount) +// +// // Precondition: Mint escrow tokens on module account +// suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE") +// suite.MintERC20Token(contractAddr, types.ModuleAddress, types.ModuleAddress, big.NewInt(tc.mint)) +// tokenBalance := suite.BalanceOf(contractAddr, types.ModuleAddress) +// suite.Require().Equal(big.NewInt(tc.mint), tokenBalance) +// +// tc.malleate(contractAddr) +// suite.Commit() +// +// // Convert Coins back to ERC20s +// receiver := suite.address +// ctx := sdk.WrapSDKContext(suite.ctx) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(coinName, sdkmath.NewInt(tc.convert)), +// receiver, +// sender, +// ) +// +// tc.extra() +// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// +// expRes := &types.MsgConvertCoinResponse{} +// suite.Commit() +// tokenBalance = suite.BalanceOf(contractAddr, suite.address) +// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(sdkmath.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) +// suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int)) +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// reconvert int64 +// expPass bool +// }{ +// {"ok - sufficient funds", 100, 10, 5, true}, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// metadata, pair := suite.setupRegisterCoin() +// suite.Require().NotNil(metadata) +// suite.Require().NotNil(pair) +// +// // Precondition: Convert Coin to ERC20 +// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) +// sender := sdk.AccAddress(suite.address.Bytes()) +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// pair.ContractOwner = types.OWNER_UNSPECIFIED +// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// suite.Require().Error(err, tc.name) +// +// // Convert ERC20s back to Coins +// ctx = sdk.WrapSDKContext(suite.ctx) +// contractAddr := common.HexToAddress(pair.Erc20Address) +// msgConvertERC20 := types.NewMsgConvertERC20( +// sdkmath.NewInt(tc.reconvert), +// sender, +// contractAddr, +// suite.address, +// ) +// +// _, err = suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) +// suite.Require().Error(err, tc.name) +// }) +// } +//} +// +//func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// malleate func(common.Address) +// extra func() +// expPass bool +// selfdestructed bool +// }{ +// { +// "ok - sufficient funds", +// 100, +// 10, +// func(common.Address) {}, +// func() {}, +// true, +// false, +// }, +// { +// "ok - equal funds", +// 10, +// 10, +// func(common.Address) {}, +// func() {}, +// true, +// false, +// }, +// { +// "ok - suicided contract", +// 10, +// 10, +// func(erc20 common.Address) { +// stateDb := suite.StateDB() +// ok := stateDb.Suicide(erc20) +// suite.Require().True(ok) +// suite.Require().NoError(stateDb.Commit()) +// }, +// func() {}, +// true, +// true, +// }, +// { +// "fail - insufficient funds", +// 0, +// 10, +// func(common.Address) {}, +// func() {}, +// false, +// false, +// }, +// { +// "fail - minting disabled", +// 100, +// 10, +// func(common.Address) { +// params := types.DefaultParams() +// params.EnableErc20 = false +// suite.app.Erc20Keeper.SetParams(suite.ctx, params) +// }, +// func() {}, +// false, +// false, +// }, +// { +// "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, false, false, +// }, +// { +// "fail - force evm fail", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// { +// "fail - force evm balance error", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// { +// "fail - force balance error", 100, 10, func(common.Address) {}, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, false, false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// metadata, pair := suite.setupRegisterIBCVoucher() +// suite.Require().NotNil(metadata) +// erc20 := pair.GetERC20Contract() +// tc.malleate(erc20) +// suite.Commit() +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) +// sender := sdk.AccAddress(suite.address.Bytes()) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// +// tc.extra() +// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// expRes := &types.MsgConvertCoinResponse{} +// suite.Commit() +// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// +// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) +// if tc.selfdestructed { +// suite.Require().Nil(acc, "expected contract to be destroyed") +// } else { +// suite.Require().NotNil(acc) +// } +// +// if tc.selfdestructed || !acc.IsContract() { +// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) +// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// suite.Require().False(found) +// } else { +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) +// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) +// } +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} +// +//func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { +// testCases := []struct { +// name string +// mint int64 +// burn int64 +// reconvert int64 +// malleate func() +// expPass bool +// }{ +// {"ok - sufficient funds", 100, 10, 5, func() {}, true}, +// {"ok - equal funds", 10, 10, 10, func() {}, true}, +// {"fail - insufficient funds", 10, 1, 5, func() {}, false}, +// {"fail ", 10, 1, -5, func() {}, false}, +// { +// "fail - deleted module account - force fail", 100, 10, 5, +// func() { +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, +// false, +// }, +// { +// "fail - force evm fail", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail second balance", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail second balance", 100, 10, 5, +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// +// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} +// balance := make([]uint8, 32) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// // first balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // convert coin +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() +// // second balance of +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() +// // Extra call on test +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) +// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) +// }, +// false, +// }, +// { +// "fail - force fail unescrow", 100, 10, 5, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) +// +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) +// }, +// false, +// }, +// { +// "fail - force fail balance after transfer", 100, 10, 5, +// func() { +// mockBankKeeper := &MockBankKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) +// +// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) +// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) +// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdkmath.OneInt()}) +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.mintFeeCollector = true +// suite.SetupTest() +// metadata, pair := suite.setupRegisterIBCVoucher() +// suite.Require().NotNil(metadata) +// suite.Require().NotNil(pair) +// +// // Precondition: Convert Coin to ERC20 +// coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) +// sender := sdk.AccAddress(suite.address.Bytes()) +// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) +// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) +// msg := types.NewMsgConvertCoin( +// sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), +// suite.address, +// sender, +// ) +// +// ctx := sdk.WrapSDKContext(suite.ctx) +// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) +// suite.Require().NoError(err, tc.name) +// suite.Commit() +// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) +// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) +// suite.Require().Equal(balance, big.NewInt(tc.burn)) +// +// // Convert ERC20s back to Coins +// ctx = sdk.WrapSDKContext(suite.ctx) +// contractAddr := common.HexToAddress(pair.Erc20Address) +// msgConvertERC20 := types.NewMsgConvertERC20( +// sdkmath.NewInt(tc.reconvert), +// sender, +// contractAddr, +// suite.address, +// ) +// +// tc.malleate() +// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) +// expRes := &types.MsgConvertERC20Response{} +// suite.Commit() +// balance = suite.BalanceOf(contractAddr, suite.address) +// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// suite.Require().Equal(expRes, res) +// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) +// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +// suite.mintFeeCollector = false +//} diff --git a/x/erc20/keeper/proposals.go b/x/erc20/keeper/proposals.go index d33a458aa..b55569d4a 100644 --- a/x/erc20/keeper/proposals.go +++ b/x/erc20/keeper/proposals.go @@ -1,217 +1 @@ package keeper - -import ( - "strings" - - errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/ethereum/go-ethereum/common" - - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// RegisterCoin deploys an erc20 contract and creates the token pair for the -// existing cosmos coin -func (k Keeper) RegisterCoin( - ctx sdk.Context, - coinMetadata banktypes.Metadata, -) (*types.TokenPair, error) { - // Check if the conversion is globally enabled - params := k.GetParams(ctx) - if !params.EnableErc20 { - return nil, errorsmod.Wrap( - types.ErrERC20Disabled, "registration is currently disabled by governance", - ) - } - - // Prohibit denominations that contain the evm denom - if strings.Contains(coinMetadata.Base, "CANTO") { - return nil, errorsmod.Wrapf( - types.ErrEVMDenom, "cannot register the EVM denomination %s", coinMetadata.Base, - ) - } - - // Check if denomination is already registered - if k.IsDenomRegistered(ctx, coinMetadata.Name) { - return nil, errorsmod.Wrapf( - types.ErrTokenPairAlreadyExists, "coin denomination already registered: %s", coinMetadata.Name, - ) - } - - // Check if the coin exists by ensuring the supply is set - if !k.bankKeeper.HasSupply(ctx, coinMetadata.Base) { - return nil, errorsmod.Wrapf( - sdkerrors.ErrInvalidCoins, "base denomination '%s' cannot have a supply of 0", coinMetadata.Base, - ) - } - - if err := k.verifyMetadata(ctx, coinMetadata); err != nil { - return nil, errorsmod.Wrapf( - types.ErrInternalTokenPair, "coin metadata is invalid %s", coinMetadata.Name, - ) - } - - addr, err := k.DeployERC20Contract(ctx, coinMetadata) - if err != nil { - return nil, errorsmod.Wrap( - err, "failed to create wrapped coin denom metadata for ERC20", - ) - } - - pair := types.NewTokenPair(addr, coinMetadata.Base, true, types.OWNER_MODULE) - k.SetTokenPair(ctx, pair) - k.SetDenomMap(ctx, pair.Denom, pair.GetID()) - k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) - - return &pair, nil -} - -// RegisterERC20 creates a Cosmos coin and registers the token pair between the -// coin and the ERC20 -func (k Keeper) RegisterERC20( - ctx sdk.Context, - contract common.Address, -) (*types.TokenPair, error) { - // Check if the conversion is globally enabled - params := k.GetParams(ctx) - if !params.EnableErc20 { - return nil, errorsmod.Wrap( - types.ErrERC20Disabled, "registration is currently disabled by governance", - ) - } - - // Check if ERC20 is already registered - if k.IsERC20Registered(ctx, contract) { - return nil, errorsmod.Wrapf( - types.ErrTokenPairAlreadyExists, "token ERC20 contract already registered: %s", contract.String(), - ) - } - - metadata, err := k.CreateCoinMetadata(ctx, contract) - if err != nil { - return nil, errorsmod.Wrap( - err, "failed to create wrapped coin denom metadata for ERC20", - ) - } - - pair := types.NewTokenPair(contract, metadata.Name, true, types.OWNER_EXTERNAL) - k.SetTokenPair(ctx, pair) - k.SetDenomMap(ctx, pair.Denom, pair.GetID()) - k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) - return &pair, nil -} - -// CreateCoinMetadata generates the metadata to represent the ERC20 token on -// canto. -func (k Keeper) CreateCoinMetadata( - ctx sdk.Context, - contract common.Address, -) (*banktypes.Metadata, error) { - strContract := contract.String() - - erc20Data, err := k.QueryERC20(ctx, contract) - if err != nil { - return nil, err - } - - // Check if metadata already exists - _, found := k.bankKeeper.GetDenomMetaData(ctx, types.CreateDenom(strContract)) - if found { - return nil, errorsmod.Wrap( - types.ErrInternalTokenPair, "denom metadata already registered", - ) - } - - if k.IsDenomRegistered(ctx, types.CreateDenom(strContract)) { - return nil, errorsmod.Wrapf( - types.ErrInternalTokenPair, "coin denomination already registered: %s", erc20Data.Name, - ) - } - - // base denomination - base := types.CreateDenom(strContract) - - // create a bank denom metadata based on the ERC20 token ABI details - // metadata name is should always be the contract since it's the key - // to the bank store - metadata := banktypes.Metadata{ - Description: types.CreateDenomDescription(strContract), - Base: base, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: base, - Exponent: 0, - }, - }, - Name: types.CreateDenom(strContract), - Symbol: erc20Data.Symbol, - Display: base, - } - - // only append metadata if decimals > 0, otherwise validation fails - if erc20Data.Decimals > 0 { - nameSanitized := types.SanitizeERC20Name(erc20Data.Name) - metadata.DenomUnits = append( - metadata.DenomUnits, - &banktypes.DenomUnit{ - Denom: nameSanitized, - Exponent: uint32(erc20Data.Decimals), - }, - ) - metadata.Display = nameSanitized - } - - if err := metadata.Validate(); err != nil { - return nil, errorsmod.Wrapf( - err, "ERC20 token data is invalid for contract %s", strContract, - ) - } - - k.bankKeeper.SetDenomMetaData(ctx, metadata) - - return &metadata, nil -} - -// ToggleConversion toggles conversion for a given token pair -func (k Keeper) ToggleConversion( - ctx sdk.Context, - token string, -) (types.TokenPair, error) { - id := k.GetTokenPairID(ctx, token) - if len(id) == 0 { - return types.TokenPair{}, errorsmod.Wrapf( - types.ErrTokenPairNotFound, "token '%s' not registered by id", token, - ) - } - - pair, found := k.GetTokenPair(ctx, id) - if !found { - return types.TokenPair{}, errorsmod.Wrapf( - types.ErrTokenPairNotFound, "token '%s' not registered", token, - ) - } - - pair.Enabled = !pair.Enabled - - k.SetTokenPair(ctx, pair) - return pair, nil -} - -// verifyMetadata verifies if the metadata matches the existing one, if not it -// sets it to the store -func (k Keeper) verifyMetadata( - ctx sdk.Context, - coinMetadata banktypes.Metadata, -) error { - meta, found := k.bankKeeper.GetDenomMetaData(ctx, coinMetadata.Base) - if !found { - k.bankKeeper.SetDenomMetaData(ctx, coinMetadata) - return nil - } - - // If it already existed, check that is equal to what is stored - return types.EqualMetadata(meta, coinMetadata) -} diff --git a/x/erc20/keeper/proposals_test.go b/x/erc20/keeper/proposals_test.go index 35171eaeb..eafde8bc2 100644 --- a/x/erc20/keeper/proposals_test.go +++ b/x/erc20/keeper/proposals_test.go @@ -1,471 +1,474 @@ package keeper_test -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/stretchr/testify/mock" - - "github.com/ethereum/go-ethereum/common" - - "github.com/evmos/ethermint/tests" - evmtypes "github.com/evmos/ethermint/x/evm/types" - - "github.com/Canto-Network/Canto/v7/x/erc20/keeper" - "github.com/Canto-Network/Canto/v7/x/erc20/types" - inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" -) - -const ( - contractMinterBurner = iota + 1 - contractDirectBalanceManipulation - contractMaliciousDelayed -) - -const ( - erc20Name = "Coin Token" - erc20Symbol = "CTKN" - erc20Decimals = uint8(18) - cosmosTokenBase = "acoin" - cosmosTokenDisplay = "coin" - cosmosDecimals = uint8(6) - defaultExponent = uint32(18) - zeroExponent = uint32(0) - ibcBase = "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" -) - -func (suite *KeeperTestSuite) setupRegisterERC20Pair(contractType int) common.Address { - var contract common.Address - // Deploy contract - switch contractType { - case contractDirectBalanceManipulation: - contract = suite.DeployContractDirectBalanceManipulation(erc20Name, erc20Symbol) - case contractMaliciousDelayed: - contract = suite.DeployContractMaliciousDelayed(erc20Name, erc20Symbol) - default: - contract, _ = suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) - } - suite.Commit() - - _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contract) - suite.Require().NoError(err) - return contract -} - -func (suite *KeeperTestSuite) setupRegisterCoin() (banktypes.Metadata, *types.TokenPair) { - validMetadata := banktypes.Metadata{ - Description: "description of the token", - Base: cosmosTokenBase, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: cosmosTokenBase, - Exponent: 0, - }, - { - Denom: cosmosTokenBase[1:], - Exponent: uint32(18), - }, - }, - Name: cosmosTokenBase, - Symbol: erc20Symbol, - Display: cosmosTokenBase, - } - - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) - suite.Require().NoError(err) - - // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) - pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) - suite.Require().NoError(err) - suite.Commit() - return validMetadata, pair -} - -func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *types.TokenPair) { - suite.SetupTest() - - validMetadata := banktypes.Metadata{ - Description: "ATOM IBC voucher (channel 14)", - Base: ibcBase, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: ibcBase, - Exponent: 0, - }, - }, - Name: "ATOM channel-14", - Symbol: "ibcATOM-14", - Display: ibcBase, - } - - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) - suite.Require().NoError(err) - - // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) - pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) - suite.Require().NoError(err) - suite.Commit() - return validMetadata, pair -} - -func (suite KeeperTestSuite) TestRegisterCoin() { - metadata := banktypes.Metadata{ - Description: "description", - Base: cosmosTokenBase, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: cosmosTokenBase, - Exponent: 0, - }, - { - Denom: cosmosTokenDisplay, - Exponent: defaultExponent, - }, - }, - Name: cosmosTokenBase, - Symbol: erc20Symbol, - Display: cosmosTokenDisplay, - } - - testCases := []struct { - name string - malleate func() - expPass bool - }{ - { - "conversion is disabled globally", - func() { - params := types.DefaultParams() - params.EnableErc20 = false - suite.app.Erc20Keeper.SetParams(suite.ctx, params) - }, - false, - }, - { - "denom already registered", - func() { - regPair := types.NewTokenPair(tests.GenerateAddress(), metadata.Base, true, types.OWNER_MODULE) - suite.app.Erc20Keeper.SetDenomMap(suite.ctx, regPair.Denom, regPair.GetID()) - suite.Commit() - }, - false, - }, - { - "token doesn't have supply", - func() { - }, - false, - }, - { - "metadata different that stored", - func() { - metadata.Base = cosmosTokenBase - validMetadata := banktypes.Metadata{ - Description: "description", - Base: cosmosTokenBase, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: cosmosTokenBase, - Exponent: 0, - }, - { - Denom: cosmosTokenDisplay, - Exponent: uint32(18), - }, - }, - Name: erc20Name, - Symbol: erc20Symbol, - Display: cosmosTokenDisplay, - } - - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) - suite.Require().NoError(err) - suite.app.BankKeeper.SetDenomMetaData(suite.ctx, validMetadata) - }, - false, - }, - { - "evm denom registration - CANTO", - func() { - metadata.Base = "CANTO" - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - }, - false, - }, - { - "evm denom registration - CANTO", - func() { - metadata.Base = "CANTO" - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - }, - false, - }, - { - "evm denom registration - aCANTO", - func() { - metadata.Base = "aCANTO" - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - }, - false, - }, - { - "evm denom registration - wCANTO", - func() { - metadata.Base = "wCANTO" - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - }, - false, - }, - { - "ok", - func() { - metadata.Base = cosmosTokenBase - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - }, - true, - }, - { - "force fail evm", - func() { - metadata.Base = cosmosTokenBase - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - }, - false, - }, - { - "force delete module account evm", - func() { - metadata.Base = cosmosTokenBase - err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) - suite.Require().NoError(err) - - acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) - suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.SetupTest() // reset - - tc.malleate() - - pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, metadata) - suite.Commit() - - expPair := &types.TokenPair{ - Erc20Address: "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd", - Denom: "acoin", - Enabled: true, - ContractOwner: 1, - } - - if tc.expPass { - suite.Require().NoError(err, tc.name) - suite.Require().Equal(pair, expPair) - } else { - suite.Require().Error(err, tc.name) - } - }) - } -} - -func (suite KeeperTestSuite) TestRegisterERC20() { - var ( - contractAddr common.Address - pair types.TokenPair - ) - testCases := []struct { - name string - malleate func() - expPass bool - }{ - { - "conversion is disabled globally", - func() { - params := types.DefaultParams() - params.EnableErc20 = false - suite.app.Erc20Keeper.SetParams(suite.ctx, params) - }, - false, - }, - { - "token ERC20 already registered", - func() { - suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) - }, - false, - }, - { - "denom already registered", - func() { - suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) - }, - false, - }, - { - "meta data already stored", - func() { - suite.app.Erc20Keeper.CreateCoinMetadata(suite.ctx, contractAddr) - }, - false, - }, - { - "ok", - func() {}, - true, - }, - { - "force fail evm", - func() { - mockEVMKeeper := &MockEVMKeeper{} - sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) - suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper) - mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) - mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) - }, - false, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.SetupTest() // reset - - var err error - contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals) - suite.Require().NoError(err) - suite.Commit() - coinName := types.CreateDenom(contractAddr.String()) - pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL) - - tc.malleate() - - _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) - metadata, found := suite.app.BankKeeper.GetDenomMetaData(suite.ctx, coinName) - if tc.expPass { - suite.Require().NoError(err, tc.name) - // Metadata variables - suite.Require().True(found) - suite.Require().Equal(coinName, metadata.Base) - suite.Require().Equal(coinName, metadata.Name) - suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.Display) - suite.Require().Equal(erc20Symbol, metadata.Symbol) - // Denom units - suite.Require().Equal(len(metadata.DenomUnits), 2) - suite.Require().Equal(coinName, metadata.DenomUnits[0].Denom) - suite.Require().Equal(uint32(zeroExponent), metadata.DenomUnits[0].Exponent) - suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.DenomUnits[1].Denom) - // Custom exponent at contract creation matches coin with token - suite.Require().Equal(metadata.DenomUnits[1].Exponent, uint32(cosmosDecimals)) - } else { - suite.Require().Error(err, tc.name) - } - }) - } -} - -func (suite *KeeperTestSuite) TestRegisterIBCVoucher() { - suite.setupRegisterIBCVoucher() -} - -func (suite KeeperTestSuite) TestToggleConverision() { - var ( - contractAddr common.Address - id []byte - pair types.TokenPair - ) - - testCases := []struct { - name string - malleate func() - expPass bool - conversionEnabled bool - }{ - { - "token not registered", - func() { - contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) - }, - false, - false, - }, - { - "token not registered - pair not found", - func() { - contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) - suite.Require().NoError(err) - suite.Commit() - pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) - suite.app.Erc20Keeper.SetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) - }, - false, - false, - }, - { - "disable conversion", - func() { - contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) - id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) - pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - }, - true, - false, - }, - { - "disable and enable conversion", - func() { - contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) - id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) - pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - pair, _ = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) - }, - true, - true, - }, - } - for _, tc := range testCases { - suite.Run(fmt.Sprintf("Case %s", tc.name), func() { - suite.SetupTest() // reset - - tc.malleate() - - var err error - pair, err = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) - // Request the pair using the GetPairToken func to make sure that is updated on the db - pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) - if tc.expPass { - suite.Require().NoError(err, tc.name) - if tc.conversionEnabled { - suite.Require().True(pair.Enabled) - } else { - suite.Require().False(pair.Enabled) - } - } else { - suite.Require().Error(err, tc.name) - } - }) - } -} +// +//import ( +// "fmt" +// +// sdk "github.com/cosmos/cosmos-sdk/types" +// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +// "github.com/stretchr/testify/mock" +// +// "github.com/ethereum/go-ethereum/common" +// +// "github.com/evmos/ethermint/tests" +// evmtypes "github.com/evmos/ethermint/x/evm/types" +// +// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" +// "github.com/Canto-Network/Canto/v7/x/erc20/types" +// inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" +//) +// +//const ( +// contractMinterBurner = iota + 1 +// contractDirectBalanceManipulation +// contractMaliciousDelayed +//) +// +//const ( +// erc20Name = "Coin Token" +// erc20Symbol = "CTKN" +// erc20Decimals = uint8(18) +// cosmosTokenBase = "acoin" +// cosmosTokenDisplay = "coin" +// cosmosDecimals = uint8(6) +// defaultExponent = uint32(18) +// zeroExponent = uint32(0) +// ibcBase = "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" +//) +// +//func (suite *KeeperTestSuite) setupRegisterERC20Pair(contractType int) common.Address { +// var contract common.Address +// // Deploy contract +// switch contractType { +// case contractDirectBalanceManipulation: +// contract = suite.DeployContractDirectBalanceManipulation(erc20Name, erc20Symbol) +// case contractMaliciousDelayed: +// contract = suite.DeployContractMaliciousDelayed(erc20Name, erc20Symbol) +// default: +// contract, _ = suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) +// } +// suite.Commit() +// +// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contract) +// suite.Require().NoError(err) +// return contract +//} +// +//func (suite *KeeperTestSuite) setupRegisterCoin() (banktypes.Metadata, *types.TokenPair) { +// validMetadata := banktypes.Metadata{ +// Description: "description of the token", +// Base: cosmosTokenBase, +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: cosmosTokenBase, +// Exponent: 0, +// }, +// { +// Denom: cosmosTokenBase[1:], +// Exponent: uint32(18), +// }, +// }, +// Name: cosmosTokenBase, +// Symbol: erc20Symbol, +// Display: cosmosTokenBase, +// } +// +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) +// suite.Require().NoError(err) +// +// // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) +// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) +// suite.Require().NoError(err) +// suite.Commit() +// return validMetadata, pair +//} +// +//func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *types.TokenPair) { +// suite.SetupTest() +// +// validMetadata := banktypes.Metadata{ +// Description: "ATOM IBC voucher (channel 14)", +// Base: ibcBase, +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: ibcBase, +// Exponent: 0, +// }, +// }, +// Name: "ATOM channel-14", +// Symbol: "ibcATOM-14", +// Display: ibcBase, +// } +// +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) +// suite.Require().NoError(err) +// +// // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) +// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) +// suite.Require().NoError(err) +// suite.Commit() +// return validMetadata, pair +//} +// +//func (suite KeeperTestSuite) TestRegisterCoin() { +// metadata := banktypes.Metadata{ +// Description: "description", +// Base: cosmosTokenBase, +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: cosmosTokenBase, +// Exponent: 0, +// }, +// { +// Denom: cosmosTokenDisplay, +// Exponent: defaultExponent, +// }, +// }, +// Name: cosmosTokenBase, +// Symbol: erc20Symbol, +// Display: cosmosTokenDisplay, +// } +// +// testCases := []struct { +// name string +// malleate func() +// expPass bool +// }{ +// { +// "conversion is disabled globally", +// func() { +// params := types.DefaultParams() +// params.EnableErc20 = false +// suite.app.Erc20Keeper.SetParams(suite.ctx, params) +// }, +// false, +// }, +// { +// "denom already registered", +// func() { +// regPair := types.NewTokenPair(tests.GenerateAddress(), metadata.Base, true, types.OWNER_MODULE) +// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, regPair.Denom, regPair.GetID()) +// suite.Commit() +// }, +// false, +// }, +// { +// "token doesn't have supply", +// func() { +// }, +// false, +// }, +// { +// "metadata different that stored", +// func() { +// metadata.Base = cosmosTokenBase +// validMetadata := banktypes.Metadata{ +// Description: "description", +// Base: cosmosTokenBase, +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: cosmosTokenBase, +// Exponent: 0, +// }, +// { +// Denom: cosmosTokenDisplay, +// Exponent: uint32(18), +// }, +// }, +// Name: erc20Name, +// Symbol: erc20Symbol, +// Display: cosmosTokenDisplay, +// } +// +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) +// suite.Require().NoError(err) +// suite.app.BankKeeper.SetDenomMetaData(suite.ctx, validMetadata) +// }, +// false, +// }, +// { +// "evm denom registration - CANTO", +// func() { +// metadata.Base = "CANTO" +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// }, +// false, +// }, +// { +// "evm denom registration - CANTO", +// func() { +// metadata.Base = "CANTO" +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// }, +// false, +// }, +// { +// "evm denom registration - aCANTO", +// func() { +// metadata.Base = "aCANTO" +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// }, +// false, +// }, +// { +// "evm denom registration - wCANTO", +// func() { +// metadata.Base = "wCANTO" +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// }, +// false, +// }, +// { +// "ok", +// func() { +// metadata.Base = cosmosTokenBase +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// }, +// true, +// }, +// { +// "force fail evm", +// func() { +// metadata.Base = cosmosTokenBase +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// }, +// false, +// }, +// { +// "force delete module account evm", +// func() { +// metadata.Base = cosmosTokenBase +// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) +// suite.Require().NoError(err) +// +// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) +// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.SetupTest() // reset +// +// tc.malleate() +// +// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, metadata) +// suite.Commit() +// +// expPair := &types.TokenPair{ +// Erc20Address: "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd", +// Denom: "acoin", +// Enabled: true, +// ContractOwner: 1, +// } +// +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// suite.Require().Equal(pair, expPair) +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +//} +// +//func (suite KeeperTestSuite) TestRegisterERC20() { +// var ( +// contractAddr common.Address +// pair types.TokenPair +// ) +// testCases := []struct { +// name string +// malleate func() +// expPass bool +// }{ +// { +// "conversion is disabled globally", +// func() { +// params := types.DefaultParams() +// params.EnableErc20 = false +// suite.app.Erc20Keeper.SetParams(suite.ctx, params) +// }, +// false, +// }, +// { +// "token ERC20 already registered", +// func() { +// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) +// }, +// false, +// }, +// { +// "denom already registered", +// func() { +// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) +// }, +// false, +// }, +// { +// "meta data already stored", +// func() { +// suite.app.Erc20Keeper.CreateCoinMetadata(suite.ctx, contractAddr) +// }, +// false, +// }, +// { +// "ok", +// func() {}, +// true, +// }, +// { +// "force fail evm", +// func() { +// mockEVMKeeper := &MockEVMKeeper{} +// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) +// suite.Require().True(found) +// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) +// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) +// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) +// }, +// false, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.SetupTest() // reset +// +// var err error +// contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals) +// suite.Require().NoError(err) +// suite.Commit() +// coinName := types.CreateDenom(contractAddr.String()) +// pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL) +// +// tc.malleate() +// +// _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) +// metadata, found := suite.app.BankKeeper.GetDenomMetaData(suite.ctx, coinName) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// // Metadata variables +// suite.Require().True(found) +// suite.Require().Equal(coinName, metadata.Base) +// suite.Require().Equal(coinName, metadata.Name) +// suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.Display) +// suite.Require().Equal(erc20Symbol, metadata.Symbol) +// // Denom units +// suite.Require().Equal(len(metadata.DenomUnits), 2) +// suite.Require().Equal(coinName, metadata.DenomUnits[0].Denom) +// suite.Require().Equal(uint32(zeroExponent), metadata.DenomUnits[0].Exponent) +// suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.DenomUnits[1].Denom) +// // Custom exponent at contract creation matches coin with token +// suite.Require().Equal(metadata.DenomUnits[1].Exponent, uint32(cosmosDecimals)) +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +//} +// +//func (suite *KeeperTestSuite) TestRegisterIBCVoucher() { +// suite.setupRegisterIBCVoucher() +//} +// +//func (suite KeeperTestSuite) TestToggleConverision() { +// var ( +// contractAddr common.Address +// id []byte +// pair types.TokenPair +// ) +// +// testCases := []struct { +// name string +// malleate func() +// expPass bool +// conversionEnabled bool +// }{ +// { +// "token not registered", +// func() { +// contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) +// }, +// false, +// false, +// }, +// { +// "token not registered - pair not found", +// func() { +// contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) +// suite.Require().NoError(err) +// suite.Commit() +// pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) +// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) +// }, +// false, +// false, +// }, +// { +// "disable conversion", +// func() { +// contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) +// id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) +// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// }, +// true, +// false, +// }, +// { +// "disable and enable conversion", +// func() { +// contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) +// id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) +// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// pair, _ = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) +// }, +// true, +// true, +// }, +// } +// for _, tc := range testCases { +// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { +// suite.SetupTest() // reset +// +// tc.malleate() +// +// var err error +// pair, err = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) +// // Request the pair using the GetPairToken func to make sure that is updated on the db +// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) +// if tc.expPass { +// suite.Require().NoError(err, tc.name) +// if tc.conversionEnabled { +// suite.Require().True(pair.Enabled) +// } else { +// suite.Require().False(pair.Enabled) +// } +// } else { +// suite.Require().Error(err, tc.name) +// } +// }) +// } +//} diff --git a/x/erc20/proposal_handler.go b/x/erc20/proposal_handler.go index dcceea278..6d37ea215 100644 --- a/x/erc20/proposal_handler.go +++ b/x/erc20/proposal_handler.go @@ -1,78 +1,79 @@ package erc20 -import ( - errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/ethereum/go-ethereum/common" - - "github.com/Canto-Network/Canto/v7/x/erc20/keeper" - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// NewErc20ProposalHandler creates a governance handler to manage new proposal types. -func NewErc20ProposalHandler(k *keeper.Keeper) govtypes.Handler { - return func(ctx sdk.Context, content govtypes.Content) error { - switch c := content.(type) { - case *types.RegisterCoinProposal: - return handleRegisterCoinProposal(ctx, k, c) - case *types.RegisterERC20Proposal: - return handleRegisterERC20Proposal(ctx, k, c) - case *types.ToggleTokenConversionProposal: - return handleToggleConversionProposal(ctx, k, c) - - default: - return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) - } - } -} - -func handleRegisterCoinProposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterCoinProposal) error { - pair, err := k.RegisterCoin(ctx, p.Metadata) - if err != nil { - return err - } - ctx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeRegisterCoin, - sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), - sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), - ), - ) - - return nil -} - -func handleRegisterERC20Proposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterERC20Proposal) error { - pair, err := k.RegisterERC20(ctx, common.HexToAddress(p.Erc20Address)) - if err != nil { - return err - } - ctx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeRegisterERC20, - sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), - sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), - ), - ) - - return nil -} - -func handleToggleConversionProposal(ctx sdk.Context, k *keeper.Keeper, p *types.ToggleTokenConversionProposal) error { - pair, err := k.ToggleConversion(ctx, p.Token) - if err != nil { - return err - } - - ctx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeToggleTokenConversion, - sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), - sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), - ), - ) - - return nil -} +// +//import ( +// errorsmod "cosmossdk.io/errors" +// sdk "github.com/cosmos/cosmos-sdk/types" +// sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +// "github.com/ethereum/go-ethereum/common" +// +// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" +// "github.com/Canto-Network/Canto/v7/x/erc20/types" +//) +// +//// NewErc20ProposalHandler creates a governance handler to manage new proposal types. +//func NewErc20ProposalHandler(k *keeper.Keeper) govtypes.Handler { +// return func(ctx sdk.Context, content govtypes.Content) error { +// switch c := content.(type) { +// case *types.RegisterCoinProposal: +// return handleRegisterCoinProposal(ctx, k, c) +// case *types.RegisterERC20Proposal: +// return handleRegisterERC20Proposal(ctx, k, c) +// case *types.ToggleTokenConversionProposal: +// return handleToggleConversionProposal(ctx, k, c) +// +// default: +// return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) +// } +// } +//} +// +//func handleRegisterCoinProposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterCoinProposal) error { +// pair, err := k.RegisterCoin(ctx, p.Metadata) +// if err != nil { +// return err +// } +// ctx.EventManager().EmitEvent( +// sdk.NewEvent( +// types.EventTypeRegisterCoin, +// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), +// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), +// ), +// ) +// +// return nil +//} +// +//func handleRegisterERC20Proposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterERC20Proposal) error { +// pair, err := k.RegisterERC20(ctx, common.HexToAddress(p.Erc20Address)) +// if err != nil { +// return err +// } +// ctx.EventManager().EmitEvent( +// sdk.NewEvent( +// types.EventTypeRegisterERC20, +// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), +// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), +// ), +// ) +// +// return nil +//} +// +//func handleToggleConversionProposal(ctx sdk.Context, k *keeper.Keeper, p *types.ToggleTokenConversionProposal) error { +// pair, err := k.ToggleConversion(ctx, p.Token) +// if err != nil { +// return err +// } +// +// ctx.EventManager().EmitEvent( +// sdk.NewEvent( +// types.EventTypeToggleTokenConversion, +// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), +// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), +// ), +// ) +// +// return nil +//} diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 8832a632c..03a36eced 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -6,7 +6,6 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) var ( @@ -44,12 +43,9 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgConvertCoin{}, &MsgConvertERC20{}, &MsgUpdateParams{}, - ) - registry.RegisterImplementations( - (*govtypes.Content)(nil), - &RegisterCoinProposal{}, - &RegisterERC20Proposal{}, - &ToggleTokenConversionProposal{}, + &MsgRegisterCoinProposal{}, + &MsgRegisterERC20Proposal{}, + &MsgToggleTokenConversionProposal{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) @@ -59,8 +55,8 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { // concrete types on the provided LegacyAmino codec. These types are used for // Amino JSON serialization and EIP-712 compatibility. func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&RegisterCoinProposal{}, "canto/RegisterCoinProposal", nil) - cdc.RegisterConcrete(&RegisterERC20Proposal{}, "canto/RegisterERC20Proposal", nil) + cdc.RegisterConcrete(&MsgRegisterCoinProposal{}, "canto/RegisterCoinProposal", nil) + cdc.RegisterConcrete(&MsgRegisterERC20Proposal{}, "canto/RegisterERC20Proposal", nil) cdc.RegisterConcrete(&MsgConvertERC20{}, convertERC20Name, nil) cdc.RegisterConcrete(&MsgConvertCoin{}, convertCoinName, nil) cdc.RegisterConcrete(&MsgUpdateParams{}, msgUpdateParams, nil) diff --git a/x/erc20/types/erc20.pb.go b/x/erc20/types/erc20.pb.go index ec159bc90..69e6aae83 100644 --- a/x/erc20/types/erc20.pb.go +++ b/x/erc20/types/erc20.pb.go @@ -5,7 +5,6 @@ package types import ( fmt "fmt" - types "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -131,246 +130,36 @@ func (m *TokenPair) GetContractOwner() Owner { return OWNER_UNSPECIFIED } -// RegisterCoinProposal is a gov Content type to register a token pair for a -// native Cosmos coin. -type RegisterCoinProposal struct { - // title of the proposal - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // metadata of the native Cosmos coin - Metadata types.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata"` -} - -func (m *RegisterCoinProposal) Reset() { *m = RegisterCoinProposal{} } -func (m *RegisterCoinProposal) String() string { return proto.CompactTextString(m) } -func (*RegisterCoinProposal) ProtoMessage() {} -func (*RegisterCoinProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_5c364669f6882b8b, []int{1} -} -func (m *RegisterCoinProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RegisterCoinProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RegisterCoinProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RegisterCoinProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_RegisterCoinProposal.Merge(m, src) -} -func (m *RegisterCoinProposal) XXX_Size() int { - return m.Size() -} -func (m *RegisterCoinProposal) XXX_DiscardUnknown() { - xxx_messageInfo_RegisterCoinProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_RegisterCoinProposal proto.InternalMessageInfo - -func (m *RegisterCoinProposal) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *RegisterCoinProposal) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *RegisterCoinProposal) GetMetadata() types.Metadata { - if m != nil { - return m.Metadata - } - return types.Metadata{} -} - -// RegisterERC20Proposal is a gov Content type to register a token pair for an -// ERC20 token -type RegisterERC20Proposal struct { - // title of the proposa string title = 1; - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // contract address of ERC20 token - Erc20Address string `protobuf:"bytes,3,opt,name=erc20address,proto3" json:"erc20address,omitempty"` -} - -func (m *RegisterERC20Proposal) Reset() { *m = RegisterERC20Proposal{} } -func (m *RegisterERC20Proposal) String() string { return proto.CompactTextString(m) } -func (*RegisterERC20Proposal) ProtoMessage() {} -func (*RegisterERC20Proposal) Descriptor() ([]byte, []int) { - return fileDescriptor_5c364669f6882b8b, []int{2} -} -func (m *RegisterERC20Proposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RegisterERC20Proposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RegisterERC20Proposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RegisterERC20Proposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_RegisterERC20Proposal.Merge(m, src) -} -func (m *RegisterERC20Proposal) XXX_Size() int { - return m.Size() -} -func (m *RegisterERC20Proposal) XXX_DiscardUnknown() { - xxx_messageInfo_RegisterERC20Proposal.DiscardUnknown(m) -} - -var xxx_messageInfo_RegisterERC20Proposal proto.InternalMessageInfo - -func (m *RegisterERC20Proposal) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *RegisterERC20Proposal) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *RegisterERC20Proposal) GetErc20Address() string { - if m != nil { - return m.Erc20Address - } - return "" -} - -// ToggleTokenConversionProposal is a gov Content type to toggle the conversion -// of a token pair. -type ToggleTokenConversionProposal struct { - // title of the proposal - Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` - // proposal description - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - // token identifier can be either the hex contract address of the ERC20 or the - // Cosmos base denomination - Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` -} - -func (m *ToggleTokenConversionProposal) Reset() { *m = ToggleTokenConversionProposal{} } -func (m *ToggleTokenConversionProposal) String() string { return proto.CompactTextString(m) } -func (*ToggleTokenConversionProposal) ProtoMessage() {} -func (*ToggleTokenConversionProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_5c364669f6882b8b, []int{3} -} -func (m *ToggleTokenConversionProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ToggleTokenConversionProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ToggleTokenConversionProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ToggleTokenConversionProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_ToggleTokenConversionProposal.Merge(m, src) -} -func (m *ToggleTokenConversionProposal) XXX_Size() int { - return m.Size() -} -func (m *ToggleTokenConversionProposal) XXX_DiscardUnknown() { - xxx_messageInfo_ToggleTokenConversionProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_ToggleTokenConversionProposal proto.InternalMessageInfo - -func (m *ToggleTokenConversionProposal) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *ToggleTokenConversionProposal) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ToggleTokenConversionProposal) GetToken() string { - if m != nil { - return m.Token - } - return "" -} - func init() { proto.RegisterEnum("canto.erc20.v1.Owner", Owner_name, Owner_value) proto.RegisterType((*TokenPair)(nil), "canto.erc20.v1.TokenPair") - proto.RegisterType((*RegisterCoinProposal)(nil), "canto.erc20.v1.RegisterCoinProposal") - proto.RegisterType((*RegisterERC20Proposal)(nil), "canto.erc20.v1.RegisterERC20Proposal") - proto.RegisterType((*ToggleTokenConversionProposal)(nil), "canto.erc20.v1.ToggleTokenConversionProposal") } func init() { proto.RegisterFile("canto/erc20/v1/erc20.proto", fileDescriptor_5c364669f6882b8b) } var fileDescriptor_5c364669f6882b8b = []byte{ - // 499 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0xc7, 0x77, 0xda, 0x54, 0xdb, 0x69, 0x1b, 0xe2, 0xd0, 0x40, 0x08, 0x74, 0x1b, 0xe2, 0x25, - 0x08, 0xee, 0x36, 0xf1, 0x20, 0x88, 0x20, 0xed, 0x76, 0x85, 0x48, 0x9b, 0x84, 0x75, 0x8b, 0xe2, - 0x25, 0xcc, 0xee, 0x0e, 0xeb, 0x92, 0x64, 0x5e, 0x98, 0x19, 0xb7, 0xf6, 0x1b, 0x78, 0xf4, 0xe2, - 0x5d, 0xd0, 0x0f, 0xd3, 0x63, 0x8f, 0x9e, 0x44, 0x92, 0x8b, 0x1f, 0x43, 0x76, 0x66, 0x23, 0xe9, - 0x4d, 0xf0, 0x36, 0xff, 0xff, 0x7b, 0x3b, 0xf3, 0xdb, 0xf7, 0x9f, 0xc1, 0xcd, 0x98, 0x72, 0x05, - 0x2e, 0x13, 0x71, 0xef, 0xd8, 0xcd, 0xbb, 0x66, 0xe1, 0xcc, 0x05, 0x28, 0x20, 0x55, 0x5d, 0x73, - 0x8c, 0x95, 0x77, 0x9b, 0x07, 0x29, 0xa4, 0xa0, 0x4b, 0x6e, 0xb1, 0x32, 0x5d, 0x4d, 0x3b, 0x06, - 0x39, 0x03, 0xe9, 0x46, 0x94, 0x4f, 0xdc, 0xbc, 0x1b, 0x31, 0x45, 0xbb, 0x5a, 0x98, 0x7a, 0xfb, - 0x3b, 0xc2, 0x3b, 0x21, 0x4c, 0x18, 0x1f, 0xd1, 0x4c, 0x90, 0x87, 0x78, 0x5f, 0xef, 0x37, 0xa6, - 0x49, 0x22, 0x98, 0x94, 0x0d, 0xd4, 0x42, 0x9d, 0x9d, 0x60, 0x4f, 0x9b, 0x27, 0xc6, 0x23, 0x07, - 0x78, 0x2b, 0x61, 0x1c, 0x66, 0x8d, 0x0d, 0x5d, 0x34, 0x82, 0x34, 0xf0, 0x7d, 0xc6, 0x69, 0x34, - 0x65, 0x49, 0x63, 0xb3, 0x85, 0x3a, 0xdb, 0xc1, 0x4a, 0x92, 0xe7, 0xb8, 0x1a, 0x03, 0x57, 0x82, - 0xc6, 0x6a, 0x0c, 0x57, 0x9c, 0x89, 0x46, 0xa5, 0x85, 0x3a, 0xd5, 0x5e, 0xdd, 0xb9, 0xfb, 0x07, - 0xce, 0xb0, 0x28, 0x06, 0xfb, 0xab, 0x66, 0x2d, 0x9f, 0x55, 0x7e, 0x7f, 0x3d, 0x42, 0xed, 0x2f, - 0x08, 0x1f, 0x04, 0x2c, 0xcd, 0xa4, 0x62, 0xc2, 0x83, 0x8c, 0x8f, 0x04, 0xcc, 0x41, 0xd2, 0x69, - 0x01, 0xa3, 0x32, 0x35, 0x65, 0x25, 0xa9, 0x11, 0xa4, 0x85, 0x77, 0x13, 0x26, 0x63, 0x91, 0xcd, - 0x55, 0x06, 0xbc, 0x04, 0x5d, 0xb7, 0xc8, 0x0b, 0xbc, 0x3d, 0x63, 0x8a, 0x26, 0x54, 0x51, 0xcd, - 0xbb, 0xdb, 0x3b, 0x74, 0xcc, 0xa8, 0x1c, 0x3d, 0x9d, 0x72, 0x54, 0xce, 0x45, 0xd9, 0x74, 0x5a, - 0xb9, 0xf9, 0x79, 0x64, 0x05, 0x7f, 0x3f, 0xd2, 0x5c, 0x56, 0xfb, 0x1a, 0xd7, 0x57, 0x58, 0x7e, - 0xe0, 0xf5, 0x8e, 0xff, 0x9b, 0xab, 0x8d, 0xcd, 0xb0, 0x57, 0x01, 0x6c, 0xae, 0x05, 0x50, 0x7a, - 0xe5, 0xd1, 0x12, 0x1f, 0x86, 0x90, 0xa6, 0x53, 0xa6, 0xe3, 0xf3, 0x80, 0xe7, 0x4c, 0xc8, 0x0c, - 0xee, 0x8c, 0x26, 0x5c, 0x47, 0x08, 0xff, 0x11, 0xa1, 0x40, 0x2f, 0xb6, 0x2c, 0xcf, 0x36, 0xc2, - 0xe4, 0xf0, 0xe8, 0x15, 0xde, 0xd2, 0xb1, 0x90, 0x3a, 0x7e, 0x30, 0x7c, 0x33, 0xf0, 0x83, 0xf1, - 0xe5, 0xe0, 0xf5, 0xc8, 0xf7, 0xfa, 0x2f, 0xfb, 0xfe, 0x59, 0xcd, 0x22, 0x35, 0xbc, 0x67, 0xec, - 0x8b, 0xe1, 0xd9, 0xe5, 0xb9, 0x5f, 0x43, 0x84, 0xe0, 0xaa, 0x71, 0xfc, 0xb7, 0xa1, 0x1f, 0x0c, - 0x4e, 0xce, 0x6b, 0x1b, 0xcd, 0xca, 0xa7, 0x6f, 0xb6, 0x75, 0xda, 0xbf, 0x59, 0xd8, 0xe8, 0x76, - 0x61, 0xa3, 0x5f, 0x0b, 0x1b, 0x7d, 0x5e, 0xda, 0xd6, 0xed, 0xd2, 0xb6, 0x7e, 0x2c, 0x6d, 0xeb, - 0x9d, 0x9b, 0x66, 0xea, 0xfd, 0x87, 0xc8, 0x89, 0x61, 0xe6, 0x7a, 0xc5, 0x1d, 0x79, 0x3c, 0x60, - 0xea, 0x0a, 0xc4, 0xc4, 0x28, 0x37, 0x7f, 0xea, 0x7e, 0x2c, 0x1f, 0x85, 0xba, 0x9e, 0x33, 0x19, - 0xdd, 0xd3, 0x97, 0xf9, 0xc9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x1e, 0x95, 0xcd, 0x30, - 0x03, 0x00, 0x00, + // 326 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0x4e, 0xcc, 0x2b, + 0xc9, 0xd7, 0x4f, 0x2d, 0x4a, 0x36, 0x32, 0xd0, 0x2f, 0x33, 0x84, 0x30, 0xf4, 0x0a, 0x8a, 0xf2, + 0x4b, 0xf2, 0x85, 0xf8, 0xc0, 0x72, 0x7a, 0x10, 0xa1, 0x32, 0x43, 0x29, 0x91, 0xf4, 0xfc, 0xf4, + 0x7c, 0xb0, 0x94, 0x3e, 0x88, 0x05, 0x51, 0xa5, 0xb4, 0x84, 0x91, 0x8b, 0x33, 0x24, 0x3f, 0x3b, + 0x35, 0x2f, 0x20, 0x31, 0xb3, 0x48, 0x48, 0x99, 0x8b, 0x17, 0xac, 0x3e, 0x3e, 0x31, 0x25, 0xa5, + 0x28, 0xb5, 0xb8, 0x58, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, 0x07, 0x2c, 0xe8, 0x08, 0x11, + 0x13, 0x12, 0xe1, 0x62, 0x4d, 0x49, 0xcd, 0xcb, 0xcf, 0x95, 0x60, 0x02, 0x4b, 0x42, 0x38, 0x42, + 0x12, 0x5c, 0xec, 0xa9, 0x79, 0x89, 0x49, 0x39, 0xa9, 0x29, 0x12, 0xcc, 0x0a, 0x8c, 0x1a, 0x1c, + 0x41, 0x30, 0xae, 0x90, 0x0d, 0x17, 0x5f, 0x72, 0x7e, 0x5e, 0x49, 0x51, 0x62, 0x72, 0x49, 0x7c, + 0x7e, 0x79, 0x5e, 0x6a, 0x91, 0x04, 0x8b, 0x02, 0xa3, 0x06, 0x9f, 0x91, 0xa8, 0x1e, 0xaa, 0x0b, + 0xf5, 0xfc, 0x41, 0x92, 0x41, 0xbc, 0x30, 0xc5, 0x60, 0xae, 0x15, 0xcb, 0x8b, 0x05, 0xf2, 0x8c, + 0x5a, 0x5e, 0x5c, 0xac, 0x60, 0xae, 0x90, 0x28, 0x97, 0xa0, 0x7f, 0xb8, 0x9f, 0x6b, 0x50, 0x7c, + 0xa8, 0x5f, 0x70, 0x80, 0xab, 0xb3, 0xa7, 0x9b, 0xa7, 0xab, 0x8b, 0x00, 0x83, 0x90, 0x00, 0x17, + 0x0f, 0x44, 0xd8, 0xd7, 0xdf, 0x25, 0xd4, 0xc7, 0x55, 0x80, 0x51, 0x48, 0x88, 0x8b, 0x0f, 0x22, + 0xe2, 0x1a, 0x11, 0xe2, 0x1a, 0xe4, 0xe7, 0xe8, 0x23, 0xc0, 0x24, 0xc5, 0xd2, 0xb1, 0x58, 0x8e, + 0xc1, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, + 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, + 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x9d, 0x41, 0x6e, 0xd3, 0xf5, 0x4b, 0x2d, + 0x29, 0xcf, 0x2f, 0xca, 0x86, 0xf0, 0xf4, 0xcb, 0xcc, 0xf5, 0x2b, 0xa0, 0x81, 0x5d, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x44, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0x14, + 0x1c, 0x4b, 0x88, 0x01, 0x00, 0x00, } func (this *TokenPair) Equal(that interface{}) bool { @@ -406,36 +195,6 @@ func (this *TokenPair) Equal(that interface{}) bool { } return true } -func (this *ToggleTokenConversionProposal) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*ToggleTokenConversionProposal) - if !ok { - that2, ok := that.(ToggleTokenConversionProposal) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if this.Title != that1.Title { - return false - } - if this.Description != that1.Description { - return false - } - if this.Token != that1.Token { - return false - } - return true -} func (m *TokenPair) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -488,141 +247,6 @@ func (m *TokenPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *RegisterCoinProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RegisterCoinProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RegisterCoinProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintErc20(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *RegisterERC20Proposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RegisterERC20Proposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RegisterERC20Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Erc20Address) > 0 { - i -= len(m.Erc20Address) - copy(dAtA[i:], m.Erc20Address) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Erc20Address))) - i-- - dAtA[i] = 0x1a - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ToggleTokenConversionProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ToggleTokenConversionProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ToggleTokenConversionProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Token) > 0 { - i -= len(m.Token) - copy(dAtA[i:], m.Token) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Token))) - i-- - dAtA[i] = 0x1a - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func encodeVarintErc20(dAtA []byte, offset int, v uint64) int { offset -= sovErc20(v) base := offset @@ -657,72 +281,11 @@ func (m *TokenPair) Size() (n int) { return n } -func (m *RegisterCoinProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = m.Metadata.Size() - n += 1 + l + sovErc20(uint64(l)) - return n +func sovErc20(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 } - -func (m *RegisterERC20Proposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = len(m.Erc20Address) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - return n -} - -func (m *ToggleTokenConversionProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - l = len(m.Token) - if l > 0 { - n += 1 + l + sovErc20(uint64(l)) - } - return n -} - -func sovErc20(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozErc20(x uint64) (n int) { - return sovErc20(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func sozErc20(x uint64) (n int) { + return sovErc20(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } func (m *TokenPair) Unmarshal(dAtA []byte) error { l := len(dAtA) @@ -877,445 +440,6 @@ func (m *TokenPair) Unmarshal(dAtA []byte) error { } return nil } -func (m *RegisterCoinProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RegisterCoinProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipErc20(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthErc20 - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RegisterERC20Proposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RegisterERC20Proposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Erc20Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipErc20(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthErc20 - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ToggleTokenConversionProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowErc20 - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthErc20 - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthErc20 - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Token = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipErc20(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthErc20 - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipErc20(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index e14103a8e..aba5208cf 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -1,11 +1,15 @@ package types import ( + "fmt" + "strings" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ethermint "github.com/evmos/ethermint/types" protov2 "google.golang.org/protobuf/proto" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" @@ -131,3 +135,15 @@ func GetSignersFromMsgConvertERC20V2(msg protov2.Message) ([][]byte, error) { return signers, nil } + +// ValidateErc20Denom checks if a denom is a valid erc20/ +// denomination +func ValidateErc20Denom(denom string) error { + denomSplit := strings.SplitN(denom, "/", 2) + + if len(denomSplit) != 2 || denomSplit[0] != ModuleName { + return fmt.Errorf("invalid denom. %s denomination should be prefixed with the format 'erc20/", denom) + } + + return ethermint.ValidateAddress(denomSplit[1]) +} diff --git a/x/erc20/types/proposal.go b/x/erc20/types/proposal.go index 2aee5ca63..e11329c92 100644 --- a/x/erc20/types/proposal.go +++ b/x/erc20/types/proposal.go @@ -1,166 +1,168 @@ package types -import ( - "fmt" - "strings" - - errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - ethermint "github.com/evmos/ethermint/types" -) - -// constants -const ( - ProposalTypeRegisterCoin string = "RegisterCoin" - ProposalTypeRegisterERC20 string = "RegisterERC20" - ProposalTypeToggleTokenConversion string = "ToggleTokenConversion" // #nosec -) - -// Implements Proposal Interface -var ( - _ govtypes.Content = &RegisterCoinProposal{} - _ govtypes.Content = &RegisterERC20Proposal{} - _ govtypes.Content = &ToggleTokenConversionProposal{} -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeRegisterCoin) - govtypes.RegisterProposalType(ProposalTypeRegisterERC20) - govtypes.RegisterProposalType(ProposalTypeToggleTokenConversion) - //govtypes.RegisterProposalTypeCodec(&RegisterCoinProposal{}, "erc20/RegisterCoinProposal") - //govtypes.RegisterProposalTypeCodec(&RegisterERC20Proposal{}, "erc20/RegisterERC20Proposal") - //govtypes.RegisterProposalTypeCodec(&ToggleTokenConversionProposal{}, "erc20/ToggleTokenConversionProposal") -} - -// CreateDenomDescription generates a string with the coin description -func CreateDenomDescription(address string) string { - return fmt.Sprintf("Cosmos coin token representation of %s", address) -} - -// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number -func CreateDenom(address string) string { - return fmt.Sprintf("%s/%s", ModuleName, address) -} - -// NewRegisterCoinProposal returns new instance of RegisterCoinProposal -func NewRegisterCoinProposal(title, description string, coinMetadata banktypes.Metadata) govtypes.Content { - return &RegisterCoinProposal{ - Title: title, - Description: description, - Metadata: coinMetadata, - } -} - -// ProposalRoute returns router key for this proposal -func (*RegisterCoinProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type for this proposal -func (*RegisterCoinProposal) ProposalType() string { - return ProposalTypeRegisterCoin -} - -// ValidateBasic performs a stateless check of the proposal fields -func (rtbp *RegisterCoinProposal) ValidateBasic() error { - if err := rtbp.Metadata.Validate(); err != nil { - return err - } - - if err := ibctransfertypes.ValidateIBCDenom(rtbp.Metadata.Base); err != nil { - return err - } - - if err := validateIBCVoucherMetadata(rtbp.Metadata); err != nil { - return err - } - - return govtypes.ValidateAbstract(rtbp) -} - -// validateIBCVoucherMetadata checks that the coin metadata fields are consistent -// with an IBC voucher denomination. -func validateIBCVoucherMetadata(metadata banktypes.Metadata) error { - // Check ibc/ denom - denomSplit := strings.SplitN(metadata.Base, "/", 2) - - if denomSplit[0] == metadata.Base && strings.TrimSpace(metadata.Base) != "" { - // Not IBC - return nil - } - - if len(denomSplit) != 2 || denomSplit[0] != ibctransfertypes.DenomPrefix { - // NOTE: should be unaccessible (covered on ValidateIBCDenom) - return fmt.Errorf("invalid metadata. %s denomination should be prefixed with the format 'ibc/", metadata.Base) - } - - return nil -} - -// ValidateErc20Denom checks if a denom is a valid erc20/ -// denomination -func ValidateErc20Denom(denom string) error { - denomSplit := strings.SplitN(denom, "/", 2) - - if len(denomSplit) != 2 || denomSplit[0] != ModuleName { - return fmt.Errorf("invalid denom. %s denomination should be prefixed with the format 'erc20/", denom) - } - - return ethermint.ValidateAddress(denomSplit[1]) -} - -// NewRegisterERC20Proposal returns new instance of RegisterERC20Proposal -func NewRegisterERC20Proposal(title, description, erc20Addr string) govtypes.Content { - return &RegisterERC20Proposal{ - Title: title, - Description: description, - Erc20Address: erc20Addr, - } -} - -// ProposalRoute returns router key for this proposal -func (*RegisterERC20Proposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type for this proposal -func (*RegisterERC20Proposal) ProposalType() string { - return ProposalTypeRegisterERC20 -} - -// ValidateBasic performs a stateless check of the proposal fields -func (rtbp *RegisterERC20Proposal) ValidateBasic() error { - if err := ethermint.ValidateAddress(rtbp.Erc20Address); err != nil { - return errorsmod.Wrap(err, "ERC20 address") - } - return govtypes.ValidateAbstract(rtbp) -} - -// NewToggleTokenConversionProposal returns new instance of ToggleTokenConversionProposal -func NewToggleTokenConversionProposal(title, description string, token string) govtypes.Content { - return &ToggleTokenConversionProposal{ - Title: title, - Description: description, - Token: token, - } -} - -// ProposalRoute returns router key for this proposal -func (*ToggleTokenConversionProposal) ProposalRoute() string { return RouterKey } - -// ProposalType returns proposal type for this proposal -func (*ToggleTokenConversionProposal) ProposalType() string { - return ProposalTypeToggleTokenConversion -} - -// ValidateBasic performs a stateless check of the proposal fields -func (ttcp *ToggleTokenConversionProposal) ValidateBasic() error { - // check if the token is a hex address, if not, check if it is a valid SDK - // denom - if err := ethermint.ValidateAddress(ttcp.Token); err != nil { - if err := sdk.ValidateDenom(ttcp.Token); err != nil { - return err - } - } - - return govtypes.ValidateAbstract(ttcp) -} +// +// +//import ( +// "fmt" +// "strings" +// +// errorsmod "cosmossdk.io/errors" +// sdk "github.com/cosmos/cosmos-sdk/types" +// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +// ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" +// ethermint "github.com/evmos/ethermint/types" +//) +// +//// constants +//const ( +// ProposalTypeRegisterCoin string = "RegisterCoin" +// ProposalTypeRegisterERC20 string = "RegisterERC20" +// ProposalTypeToggleTokenConversion string = "ToggleTokenConversion" // #nosec +//) +// +//// Implements Proposal Interface +//var ( +// _ govtypes.Content = &RegisterCoinProposal{} +// _ govtypes.Content = &RegisterERC20Proposal{} +// _ govtypes.Content = &ToggleTokenConversionProposal{} +//) +// +//func init() { +// govtypes.RegisterProposalType(ProposalTypeRegisterCoin) +// govtypes.RegisterProposalType(ProposalTypeRegisterERC20) +// govtypes.RegisterProposalType(ProposalTypeToggleTokenConversion) +// //govtypes.RegisterProposalTypeCodec(&RegisterCoinProposal{}, "erc20/RegisterCoinProposal") +// //govtypes.RegisterProposalTypeCodec(&RegisterERC20Proposal{}, "erc20/RegisterERC20Proposal") +// //govtypes.RegisterProposalTypeCodec(&ToggleTokenConversionProposal{}, "erc20/ToggleTokenConversionProposal") +//} +// +//// CreateDenomDescription generates a string with the coin description +//func CreateDenomDescription(address string) string { +// return fmt.Sprintf("Cosmos coin token representation of %s", address) +//} +// +//// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number +//func CreateDenom(address string) string { +// return fmt.Sprintf("%s/%s", ModuleName, address) +//} +// +//NewRegisterCoinProposal returns new instance of RegisterCoinProposal +//func NewRegisterCoinProposal(title, description string, coinMetadata banktypes.Metadata) govtypes.Content { +// return &RegisterCoinProposal{ +// Title: title, +// Description: description, +// Metadata: coinMetadata, +// } +//} +// +//// ProposalRoute returns router key for this proposal +//func (*RegisterCoinProposal) ProposalRoute() string { return RouterKey } +// +//// ProposalType returns proposal type for this proposal +//func (*RegisterCoinProposal) ProposalType() string { +// return ProposalTypeRegisterCoin +//} +// +//// ValidateBasic performs a stateless check of the proposal fields +//func (rtbp *RegisterCoinProposal) ValidateBasic() error { +// if err := rtbp.Metadata.Validate(); err != nil { +// return err +// } +// +// if err := ibctransfertypes.ValidateIBCDenom(rtbp.Metadata.Base); err != nil { +// return err +// } +// +// if err := validateIBCVoucherMetadata(rtbp.Metadata); err != nil { +// return err +// } +// +// return govtypes.ValidateAbstract(rtbp) +//} +// +//// validateIBCVoucherMetadata checks that the coin metadata fields are consistent +//// with an IBC voucher denomination. +//func validateIBCVoucherMetadata(metadata banktypes.Metadata) error { +// // Check ibc/ denom +// denomSplit := strings.SplitN(metadata.Base, "/", 2) +// +// if denomSplit[0] == metadata.Base && strings.TrimSpace(metadata.Base) != "" { +// // Not IBC +// return nil +// } +// +// if len(denomSplit) != 2 || denomSplit[0] != ibctransfertypes.DenomPrefix { +// // NOTE: should be unaccessible (covered on ValidateIBCDenom) +// return fmt.Errorf("invalid metadata. %s denomination should be prefixed with the format 'ibc/", metadata.Base) +// } +// +// return nil +//} +// +//// ValidateErc20Denom checks if a denom is a valid erc20/ +//// denomination +//func ValidateErc20Denom(denom string) error { +// denomSplit := strings.SplitN(denom, "/", 2) +// +// if len(denomSplit) != 2 || denomSplit[0] != ModuleName { +// return fmt.Errorf("invalid denom. %s denomination should be prefixed with the format 'erc20/", denom) +// } +// +// return ethermint.ValidateAddress(denomSplit[1]) +//} +// +//// NewRegisterERC20Proposal returns new instance of RegisterERC20Proposal +//func NewRegisterERC20Proposal(title, description, erc20Addr string) govtypes.Content { +// return &RegisterERC20Proposal{ +// Title: title, +// Description: description, +// Erc20Address: erc20Addr, +// } +//} +// +//// ProposalRoute returns router key for this proposal +//func (*RegisterERC20Proposal) ProposalRoute() string { return RouterKey } +// +//// ProposalType returns proposal type for this proposal +//func (*RegisterERC20Proposal) ProposalType() string { +// return ProposalTypeRegisterERC20 +//} +// +//// ValidateBasic performs a stateless check of the proposal fields +//func (rtbp *RegisterERC20Proposal) ValidateBasic() error { +// if err := ethermint.ValidateAddress(rtbp.Erc20Address); err != nil { +// return errorsmod.Wrap(err, "ERC20 address") +// } +// return govtypes.ValidateAbstract(rtbp) +//} +// +//// NewToggleTokenConversionProposal returns new instance of ToggleTokenConversionProposal +//func NewToggleTokenConversionProposal(title, description string, token string) govtypes.Content { +// return &ToggleTokenConversionProposal{ +// Title: title, +// Description: description, +// Token: token, +// } +//} +// +//// ProposalRoute returns router key for this proposal +//func (*ToggleTokenConversionProposal) ProposalRoute() string { return RouterKey } +// +//// ProposalType returns proposal type for this proposal +//func (*ToggleTokenConversionProposal) ProposalType() string { +// return ProposalTypeToggleTokenConversion +//} +// +//// ValidateBasic performs a stateless check of the proposal fields +//func (ttcp *ToggleTokenConversionProposal) ValidateBasic() error { +// // check if the token is a hex address, if not, check if it is a valid SDK +// // denom +// if err := ethermint.ValidateAddress(ttcp.Token); err != nil { +// if err := sdk.ValidateDenom(ttcp.Token); err != nil { +// return err +// } +// } +// +// return govtypes.ValidateAbstract(ttcp) +//} diff --git a/x/erc20/types/proposal_test.go b/x/erc20/types/proposal_test.go index d43cec626..2f9a35aea 100644 --- a/x/erc20/types/proposal_test.go +++ b/x/erc20/types/proposal_test.go @@ -1,279 +1,280 @@ package types -import ( - "strings" - "testing" - - "github.com/stretchr/testify/suite" - - "github.com/evmos/ethermint/tests" - - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - length "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -type ProposalTestSuite struct { - suite.Suite -} - -func TestProposalTestSuite(t *testing.T) { - suite.Run(t, new(ProposalTestSuite)) -} - -func (suite *ProposalTestSuite) TestKeysTypes() { - suite.Require().Equal("erc20", (&RegisterCoinProposal{}).ProposalRoute()) - suite.Require().Equal("RegisterCoin", (&RegisterCoinProposal{}).ProposalType()) - suite.Require().Equal("erc20", (&RegisterERC20Proposal{}).ProposalRoute()) - suite.Require().Equal("RegisterERC20", (&RegisterERC20Proposal{}).ProposalType()) - suite.Require().Equal("erc20", (&ToggleTokenConversionProposal{}).ProposalRoute()) - suite.Require().Equal("ToggleTokenConversion", (&ToggleTokenConversionProposal{}).ProposalType()) -} - -func (suite *ProposalTestSuite) TestCreateDenomDescription() { - testCases := []struct { - name string - denom string - expString string - }{ - { - "with valid address", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "Cosmos coin token representation of 0xdac17f958d2ee523a2206206994597c13d831ec7", - }, - { - "with empty string", - "", - "Cosmos coin token representation of ", - }, - } - for _, tc := range testCases { - desc := CreateDenomDescription(tc.denom) - suite.Require().Equal(desc, tc.expString) - } -} - -func (suite *ProposalTestSuite) TestCreateDenom() { - testCases := []struct { - name string - denom string - expString string - }{ - { - "with valid address", - "0xdac17f958d2ee523a2206206994597c13d831ec7", - "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", - }, - { - "with empty string", - "", - "erc20/", - }, - } - for _, tc := range testCases { - desc := CreateDenom(tc.denom) - suite.Require().Equal(desc, tc.expString) - } -} - -func (suite *ProposalTestSuite) TestValidateErc20Denom() { - testCases := []struct { - name string - denom string - expPass bool - }{ - { - "- instead of /", - "erc20-0xdac17f958d2ee523a2206206994597c13d831ec7", - false, - }, - { - "without /", - "conversionCoin", - false, - }, - { - "// instead of /", - "erc20//0xdac17f958d2ee523a2206206994597c13d831ec7", - false, - }, - { - "multiple /", - "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7/test", - false, - }, - { - "pass", - "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", - true, - }, - } - for _, tc := range testCases { - err := ValidateErc20Denom(tc.denom) - - if tc.expPass { - suite.Require().Nil(err, tc.name) - } else { - suite.Require().Error(err, tc.name) - } - } -} - -func (suite *ProposalTestSuite) TestRegisterERC20Proposal() { - testCases := []struct { - msg string - title string - description string - pair TokenPair - expectPass bool - }{ - // Valid tests - {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", true, OWNER_MODULE}, expectPass: true}, - {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: true}, - // Missing params valid - {msg: "Register token pair - invalid missing title ", title: "", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, - {msg: "Register token pair - invalid missing description ", title: "test", description: "", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, - // Invalid address - {msg: "Register token pair - invalid address (no hex)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19ZZ", "test", true, OWNER_MODULE}, expectPass: false}, - {msg: "Register token pair - invalid address (invalid length 1)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19", "test", true, OWNER_MODULE}, expectPass: false}, - {msg: "Register token pair - invalid address (invalid length 2)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb194FFF", "test", true, OWNER_MODULE}, expectPass: false}, - {msg: "Register token pair - invalid address (invalid prefix)", title: "test", description: "test desc", pair: TokenPair{"1x5dCA2483280D9727c80b5518faC4556617fb19F", "test", true, OWNER_MODULE}, expectPass: false}, - } - - for i, tc := range testCases { - tx := NewRegisterERC20Proposal(tc.title, tc.description, tc.pair.Erc20Address) - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} - -func createFullMetadata(denom, symbol, name string) banktypes.Metadata { - return banktypes.Metadata{ - Description: "desc", - Base: denom, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: denom, - Exponent: 0, - }, - { - Denom: symbol, - Exponent: uint32(18), - }, - }, - Name: name, - Symbol: symbol, - Display: denom, - } -} - -func createMetadata(denom, symbol string) banktypes.Metadata { - return createFullMetadata(denom, symbol, denom) -} - -func (suite *ProposalTestSuite) TestRegisterCoinProposal() { - validMetadata := banktypes.Metadata{ - Description: "desc", - Base: "coin", - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: "coin", - Exponent: 0, - }, - { - Denom: "coin2", - Exponent: uint32(18), - }, - }, - Name: "coin", - Symbol: "token", - Display: "coin", - } - - validIBCDenom := "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" - validIBCSymbol := "ATOM" - validIBCName := "Atom" - - testCases := []struct { - msg string - title string - description string - metadata banktypes.Metadata - expectPass bool - }{ - // Valid tests - {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, - {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, - - // Invalid Regex (denom) - {msg: "Register token pair - invalid starts with number", title: "test", description: "test desc", metadata: createMetadata("1test", "test"), expectPass: false}, - {msg: "Register token pair - invalid char '('", title: "test", description: "test desc", metadata: createMetadata("(test", "test"), expectPass: false}, - {msg: "Register token pair - invalid char '^'", title: "test", description: "test desc", metadata: createMetadata("^test", "test"), expectPass: false}, - // Invalid length - {msg: "Register token pair - invalid length token (0)", title: "test", description: "test desc", metadata: createMetadata("", "test"), expectPass: false}, - {msg: "Register token pair - invalid length token (1)", title: "test", description: "test desc", metadata: createMetadata("a", "test"), expectPass: false}, - {msg: "Register token pair - invalid length token (128)", title: "test", description: "test desc", metadata: createMetadata(strings.Repeat("a", 129), "test"), expectPass: false}, - {msg: "Register token pair - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", metadata: validMetadata, expectPass: false}, - {msg: "Register token pair - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), metadata: validMetadata, expectPass: false}, - - // Ibc - {msg: "Register token pair - ibc", title: "test", description: "test desc", metadata: createFullMetadata(validIBCDenom, validIBCSymbol, validIBCName), expectPass: true}, - {msg: "Register token pair - ibc invalid denom", title: "test", description: "test desc", metadata: createFullMetadata("ibc/", validIBCSymbol, validIBCName), expectPass: false}, - } - - for i, tc := range testCases { - tx := NewRegisterCoinProposal(tc.title, tc.description, tc.metadata) - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} - -func (suite *ProposalTestSuite) TestToggleTokenConversionProposal() { - testCases := []struct { - msg string - title string - description string - token string - expectPass bool - }{ - {msg: "Enable token conversion proposal - valid denom", title: "test", description: "test desc", token: "test", expectPass: true}, - {msg: "Enable token conversion proposal - valid address", title: "test", description: "test desc", token: "0x5dCA2483280D9727c80b5518faC4556617fb194F", expectPass: true}, - {msg: "Enable token conversion proposal - invalid address", title: "test", description: "test desc", token: "0x123", expectPass: false}, - - // Invalid missing params - {msg: "Enable token conversion proposal - valid missing title", title: "", description: "test desc", token: "test", expectPass: false}, - {msg: "Enable token conversion proposal - valid missing description", title: "test", description: "", token: "test", expectPass: false}, - {msg: "Enable token conversion proposal - invalid missing token", title: "test", description: "test desc", token: "", expectPass: false}, - - // Invalid regex - {msg: "Enable token conversion proposal - invalid denom", title: "test", description: "test desc", token: "^test", expectPass: false}, - // Invalid length - {msg: "Enable token conversion proposal - invalid length (1)", title: "test", description: "test desc", token: "a", expectPass: false}, - {msg: "Enable token conversion proposal - invalid length (128)", title: "test", description: "test desc", token: strings.Repeat("a", 129), expectPass: false}, - - {msg: "Enable token conversion proposal - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", token: "test", expectPass: false}, - {msg: "Enable token conversion proposal - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), token: "test", expectPass: false}, - } - - for i, tc := range testCases { - tx := NewToggleTokenConversionProposal(tc.title, tc.description, tc.token) - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} +// +//import ( +// "strings" +// "testing" +// +// "github.com/stretchr/testify/suite" +// +// "github.com/evmos/ethermint/tests" +// +// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +// length "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +//) +// +//type ProposalTestSuite struct { +// suite.Suite +//} +// +//func TestProposalTestSuite(t *testing.T) { +// suite.Run(t, new(ProposalTestSuite)) +//} +// +//func (suite *ProposalTestSuite) TestKeysTypes() { +// suite.Require().Equal("erc20", (&RegisterCoinProposal{}).ProposalRoute()) +// suite.Require().Equal("RegisterCoin", (&RegisterCoinProposal{}).ProposalType()) +// suite.Require().Equal("erc20", (&RegisterERC20Proposal{}).ProposalRoute()) +// suite.Require().Equal("RegisterERC20", (&RegisterERC20Proposal{}).ProposalType()) +// suite.Require().Equal("erc20", (&ToggleTokenConversionProposal{}).ProposalRoute()) +// suite.Require().Equal("ToggleTokenConversion", (&ToggleTokenConversionProposal{}).ProposalType()) +//} +// +//func (suite *ProposalTestSuite) TestCreateDenomDescription() { +// testCases := []struct { +// name string +// denom string +// expString string +// }{ +// { +// "with valid address", +// "0xdac17f958d2ee523a2206206994597c13d831ec7", +// "Cosmos coin token representation of 0xdac17f958d2ee523a2206206994597c13d831ec7", +// }, +// { +// "with empty string", +// "", +// "Cosmos coin token representation of ", +// }, +// } +// for _, tc := range testCases { +// desc := CreateDenomDescription(tc.denom) +// suite.Require().Equal(desc, tc.expString) +// } +//} +// +//func (suite *ProposalTestSuite) TestCreateDenom() { +// testCases := []struct { +// name string +// denom string +// expString string +// }{ +// { +// "with valid address", +// "0xdac17f958d2ee523a2206206994597c13d831ec7", +// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", +// }, +// { +// "with empty string", +// "", +// "erc20/", +// }, +// } +// for _, tc := range testCases { +// desc := CreateDenom(tc.denom) +// suite.Require().Equal(desc, tc.expString) +// } +//} +// +//func (suite *ProposalTestSuite) TestValidateErc20Denom() { +// testCases := []struct { +// name string +// denom string +// expPass bool +// }{ +// { +// "- instead of /", +// "erc20-0xdac17f958d2ee523a2206206994597c13d831ec7", +// false, +// }, +// { +// "without /", +// "conversionCoin", +// false, +// }, +// { +// "// instead of /", +// "erc20//0xdac17f958d2ee523a2206206994597c13d831ec7", +// false, +// }, +// { +// "multiple /", +// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7/test", +// false, +// }, +// { +// "pass", +// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", +// true, +// }, +// } +// for _, tc := range testCases { +// err := ValidateErc20Denom(tc.denom) +// +// if tc.expPass { +// suite.Require().Nil(err, tc.name) +// } else { +// suite.Require().Error(err, tc.name) +// } +// } +//} +// +//func (suite *ProposalTestSuite) TestRegisterERC20Proposal() { +// testCases := []struct { +// msg string +// title string +// description string +// pair TokenPair +// expectPass bool +// }{ +// // Valid tests +// {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", true, OWNER_MODULE}, expectPass: true}, +// {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: true}, +// // Missing params valid +// {msg: "Register token pair - invalid missing title ", title: "", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, +// {msg: "Register token pair - invalid missing description ", title: "test", description: "", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, +// // Invalid address +// {msg: "Register token pair - invalid address (no hex)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19ZZ", "test", true, OWNER_MODULE}, expectPass: false}, +// {msg: "Register token pair - invalid address (invalid length 1)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19", "test", true, OWNER_MODULE}, expectPass: false}, +// {msg: "Register token pair - invalid address (invalid length 2)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb194FFF", "test", true, OWNER_MODULE}, expectPass: false}, +// {msg: "Register token pair - invalid address (invalid prefix)", title: "test", description: "test desc", pair: TokenPair{"1x5dCA2483280D9727c80b5518faC4556617fb19F", "test", true, OWNER_MODULE}, expectPass: false}, +// } +// +// for i, tc := range testCases { +// tx := NewRegisterERC20Proposal(tc.title, tc.description, tc.pair.Erc20Address) +// err := tx.ValidateBasic() +// +// if tc.expectPass { +// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) +// } else { +// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) +// } +// } +//} +// +//func createFullMetadata(denom, symbol, name string) banktypes.Metadata { +// return banktypes.Metadata{ +// Description: "desc", +// Base: denom, +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: denom, +// Exponent: 0, +// }, +// { +// Denom: symbol, +// Exponent: uint32(18), +// }, +// }, +// Name: name, +// Symbol: symbol, +// Display: denom, +// } +//} +// +//func createMetadata(denom, symbol string) banktypes.Metadata { +// return createFullMetadata(denom, symbol, denom) +//} +// +//func (suite *ProposalTestSuite) TestRegisterCoinProposal() { +// validMetadata := banktypes.Metadata{ +// Description: "desc", +// Base: "coin", +// // NOTE: Denom units MUST be increasing +// DenomUnits: []*banktypes.DenomUnit{ +// { +// Denom: "coin", +// Exponent: 0, +// }, +// { +// Denom: "coin2", +// Exponent: uint32(18), +// }, +// }, +// Name: "coin", +// Symbol: "token", +// Display: "coin", +// } +// +// validIBCDenom := "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" +// validIBCSymbol := "ATOM" +// validIBCName := "Atom" +// +// testCases := []struct { +// msg string +// title string +// description string +// metadata banktypes.Metadata +// expectPass bool +// }{ +// // Valid tests +// {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, +// {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, +// +// // Invalid Regex (denom) +// {msg: "Register token pair - invalid starts with number", title: "test", description: "test desc", metadata: createMetadata("1test", "test"), expectPass: false}, +// {msg: "Register token pair - invalid char '('", title: "test", description: "test desc", metadata: createMetadata("(test", "test"), expectPass: false}, +// {msg: "Register token pair - invalid char '^'", title: "test", description: "test desc", metadata: createMetadata("^test", "test"), expectPass: false}, +// // Invalid length +// {msg: "Register token pair - invalid length token (0)", title: "test", description: "test desc", metadata: createMetadata("", "test"), expectPass: false}, +// {msg: "Register token pair - invalid length token (1)", title: "test", description: "test desc", metadata: createMetadata("a", "test"), expectPass: false}, +// {msg: "Register token pair - invalid length token (128)", title: "test", description: "test desc", metadata: createMetadata(strings.Repeat("a", 129), "test"), expectPass: false}, +// {msg: "Register token pair - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", metadata: validMetadata, expectPass: false}, +// {msg: "Register token pair - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), metadata: validMetadata, expectPass: false}, +// +// // Ibc +// {msg: "Register token pair - ibc", title: "test", description: "test desc", metadata: createFullMetadata(validIBCDenom, validIBCSymbol, validIBCName), expectPass: true}, +// {msg: "Register token pair - ibc invalid denom", title: "test", description: "test desc", metadata: createFullMetadata("ibc/", validIBCSymbol, validIBCName), expectPass: false}, +// } +// +// for i, tc := range testCases { +// tx := NewRegisterCoinProposal(tc.title, tc.description, tc.metadata) +// err := tx.ValidateBasic() +// +// if tc.expectPass { +// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) +// } else { +// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) +// } +// } +//} +// +//func (suite *ProposalTestSuite) TestToggleTokenConversionProposal() { +// testCases := []struct { +// msg string +// title string +// description string +// token string +// expectPass bool +// }{ +// {msg: "Enable token conversion proposal - valid denom", title: "test", description: "test desc", token: "test", expectPass: true}, +// {msg: "Enable token conversion proposal - valid address", title: "test", description: "test desc", token: "0x5dCA2483280D9727c80b5518faC4556617fb194F", expectPass: true}, +// {msg: "Enable token conversion proposal - invalid address", title: "test", description: "test desc", token: "0x123", expectPass: false}, +// +// // Invalid missing params +// {msg: "Enable token conversion proposal - valid missing title", title: "", description: "test desc", token: "test", expectPass: false}, +// {msg: "Enable token conversion proposal - valid missing description", title: "test", description: "", token: "test", expectPass: false}, +// {msg: "Enable token conversion proposal - invalid missing token", title: "test", description: "test desc", token: "", expectPass: false}, +// +// // Invalid regex +// {msg: "Enable token conversion proposal - invalid denom", title: "test", description: "test desc", token: "^test", expectPass: false}, +// // Invalid length +// {msg: "Enable token conversion proposal - invalid length (1)", title: "test", description: "test desc", token: "a", expectPass: false}, +// {msg: "Enable token conversion proposal - invalid length (128)", title: "test", description: "test desc", token: strings.Repeat("a", 129), expectPass: false}, +// +// {msg: "Enable token conversion proposal - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", token: "test", expectPass: false}, +// {msg: "Enable token conversion proposal - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), token: "test", expectPass: false}, +// } +// +// for i, tc := range testCases { +// tx := NewToggleTokenConversionProposal(tc.title, tc.description, tc.token) +// err := tx.ValidateBasic() +// +// if tc.expectPass { +// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) +// } else { +// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) +// } +// } +//} diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 2b1302b0e..613c3cbec 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -11,6 +11,7 @@ import ( types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + types1 "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -337,6 +338,342 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo +// MsgRegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +type MsgRegisterCoinProposal struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposal + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // metadata of the native Cosmos coin + Metadata types1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata"` +} + +func (m *MsgRegisterCoinProposal) Reset() { *m = MsgRegisterCoinProposal{} } +func (m *MsgRegisterCoinProposal) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCoinProposal) ProtoMessage() {} +func (*MsgRegisterCoinProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{6} +} +func (m *MsgRegisterCoinProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterCoinProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterCoinProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterCoinProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCoinProposal.Merge(m, src) +} +func (m *MsgRegisterCoinProposal) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterCoinProposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCoinProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterCoinProposal proto.InternalMessageInfo + +func (m *MsgRegisterCoinProposal) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgRegisterCoinProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *MsgRegisterCoinProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgRegisterCoinProposal) GetMetadata() types1.Metadata { + if m != nil { + return m.Metadata + } + return types1.Metadata{} +} + +type MsgRegisterCoinProposalResponse struct { +} + +func (m *MsgRegisterCoinProposalResponse) Reset() { *m = MsgRegisterCoinProposalResponse{} } +func (m *MsgRegisterCoinProposalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCoinProposalResponse) ProtoMessage() {} +func (*MsgRegisterCoinProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{7} +} +func (m *MsgRegisterCoinProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterCoinProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterCoinProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterCoinProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCoinProposalResponse.Merge(m, src) +} +func (m *MsgRegisterCoinProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterCoinProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCoinProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterCoinProposalResponse proto.InternalMessageInfo + +// MsgRegisterERC20Proposal is a gov Content type to register a token pair for +// an ERC20 token +type MsgRegisterERC20Proposal struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposa string title = 1; + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // contract address of ERC20 token + Erc20Address string `protobuf:"bytes,4,opt,name=erc20address,proto3" json:"erc20address,omitempty"` +} + +func (m *MsgRegisterERC20Proposal) Reset() { *m = MsgRegisterERC20Proposal{} } +func (m *MsgRegisterERC20Proposal) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterERC20Proposal) ProtoMessage() {} +func (*MsgRegisterERC20Proposal) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{8} +} +func (m *MsgRegisterERC20Proposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterERC20Proposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterERC20Proposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterERC20Proposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterERC20Proposal.Merge(m, src) +} +func (m *MsgRegisterERC20Proposal) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterERC20Proposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterERC20Proposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterERC20Proposal proto.InternalMessageInfo + +func (m *MsgRegisterERC20Proposal) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgRegisterERC20Proposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *MsgRegisterERC20Proposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgRegisterERC20Proposal) GetErc20Address() string { + if m != nil { + return m.Erc20Address + } + return "" +} + +type MsgRegisterERC20ProposalResponse struct { +} + +func (m *MsgRegisterERC20ProposalResponse) Reset() { *m = MsgRegisterERC20ProposalResponse{} } +func (m *MsgRegisterERC20ProposalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterERC20ProposalResponse) ProtoMessage() {} +func (*MsgRegisterERC20ProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{9} +} +func (m *MsgRegisterERC20ProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterERC20ProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterERC20ProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterERC20ProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterERC20ProposalResponse.Merge(m, src) +} +func (m *MsgRegisterERC20ProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterERC20ProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterERC20ProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterERC20ProposalResponse proto.InternalMessageInfo + +// MsgToggleTokenConversionProposal is a gov Content type to toggle the +// conversion of a token pair. +type MsgToggleTokenConversionProposal struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // title of the proposal + Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + // proposal description + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *MsgToggleTokenConversionProposal) Reset() { *m = MsgToggleTokenConversionProposal{} } +func (m *MsgToggleTokenConversionProposal) String() string { return proto.CompactTextString(m) } +func (*MsgToggleTokenConversionProposal) ProtoMessage() {} +func (*MsgToggleTokenConversionProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{10} +} +func (m *MsgToggleTokenConversionProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgToggleTokenConversionProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgToggleTokenConversionProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgToggleTokenConversionProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleTokenConversionProposal.Merge(m, src) +} +func (m *MsgToggleTokenConversionProposal) XXX_Size() int { + return m.Size() +} +func (m *MsgToggleTokenConversionProposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleTokenConversionProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgToggleTokenConversionProposal proto.InternalMessageInfo + +func (m *MsgToggleTokenConversionProposal) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgToggleTokenConversionProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *MsgToggleTokenConversionProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgToggleTokenConversionProposal) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + +type MsgToggleTokenConversionProposalResponse struct { +} + +func (m *MsgToggleTokenConversionProposalResponse) Reset() { + *m = MsgToggleTokenConversionProposalResponse{} +} +func (m *MsgToggleTokenConversionProposalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgToggleTokenConversionProposalResponse) ProtoMessage() {} +func (*MsgToggleTokenConversionProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_3cff33f93a8dd3e5, []int{11} +} +func (m *MsgToggleTokenConversionProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgToggleTokenConversionProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgToggleTokenConversionProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgToggleTokenConversionProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleTokenConversionProposalResponse.Merge(m, src) +} +func (m *MsgToggleTokenConversionProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgToggleTokenConversionProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleTokenConversionProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgToggleTokenConversionProposalResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgConvertCoin)(nil), "canto.erc20.v1.MsgConvertCoin") proto.RegisterType((*MsgConvertCoinResponse)(nil), "canto.erc20.v1.MsgConvertCoinResponse") @@ -344,53 +681,113 @@ func init() { proto.RegisterType((*MsgConvertERC20Response)(nil), "canto.erc20.v1.MsgConvertERC20Response") proto.RegisterType((*MsgUpdateParams)(nil), "canto.erc20.v1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.erc20.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgRegisterCoinProposal)(nil), "canto.erc20.v1.MsgRegisterCoinProposal") + proto.RegisterType((*MsgRegisterCoinProposalResponse)(nil), "canto.erc20.v1.MsgRegisterCoinProposalResponse") + proto.RegisterType((*MsgRegisterERC20Proposal)(nil), "canto.erc20.v1.MsgRegisterERC20Proposal") + proto.RegisterType((*MsgRegisterERC20ProposalResponse)(nil), "canto.erc20.v1.MsgRegisterERC20ProposalResponse") + proto.RegisterType((*MsgToggleTokenConversionProposal)(nil), "canto.erc20.v1.MsgToggleTokenConversionProposal") + proto.RegisterType((*MsgToggleTokenConversionProposalResponse)(nil), "canto.erc20.v1.MsgToggleTokenConversionProposalResponse") } func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 651 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xcf, 0x6b, 0x13, 0x41, - 0x14, 0xc7, 0xb3, 0x4d, 0x0d, 0x66, 0x2a, 0xad, 0x2e, 0xfd, 0x91, 0x2e, 0x65, 0x53, 0x83, 0xd8, - 0x58, 0xe9, 0x4e, 0x93, 0x82, 0x62, 0x6f, 0x26, 0x78, 0xe8, 0xa1, 0x22, 0x2b, 0x5e, 0xbc, 0x84, - 0xc9, 0x66, 0xd8, 0x2e, 0x75, 0x67, 0x96, 0x99, 0xc9, 0xda, 0x5e, 0x44, 0x7a, 0xf4, 0x24, 0x08, - 0x5e, 0xbd, 0x7a, 0x92, 0x1c, 0xfa, 0x47, 0xf4, 0x58, 0xeb, 0x45, 0x3c, 0x14, 0x49, 0x84, 0xfc, - 0x1b, 0xb2, 0x33, 0xd3, 0x24, 0x1b, 0xd3, 0x78, 0x09, 0xfb, 0xde, 0xf7, 0xbd, 0xb7, 0x9f, 0xef, - 0xbc, 0xc9, 0x82, 0x15, 0x0f, 0x11, 0x41, 0x21, 0x66, 0x5e, 0x75, 0x1b, 0xc6, 0x15, 0x28, 0x8e, - 0x9c, 0x88, 0x51, 0x41, 0xcd, 0x79, 0x29, 0x38, 0x52, 0x70, 0xe2, 0x8a, 0xb5, 0xe6, 0x53, 0xea, - 0xbf, 0xc1, 0x10, 0x45, 0x01, 0x44, 0x84, 0x50, 0x81, 0x44, 0x40, 0x09, 0x57, 0xd5, 0xd6, 0xa2, - 0x4f, 0x7d, 0x2a, 0x1f, 0x61, 0xf2, 0xa4, 0xb3, 0xb6, 0x47, 0x79, 0x48, 0x39, 0x6c, 0x22, 0x8e, - 0x61, 0x5c, 0x69, 0x62, 0x81, 0x2a, 0xd0, 0xa3, 0x01, 0xd1, 0xfa, 0xaa, 0xd2, 0x1b, 0xaa, 0x51, - 0x05, 0x5a, 0x5a, 0xd1, 0xad, 0x21, 0xf7, 0x13, 0xac, 0x90, 0xfb, 0x5a, 0xb8, 0x83, 0xc2, 0x80, - 0x50, 0x28, 0x7f, 0x75, 0x6a, 0x6d, 0xcc, 0x83, 0x8f, 0x09, 0xe6, 0x81, 0x9e, 0x54, 0xfa, 0x62, - 0x80, 0xf9, 0x7d, 0xee, 0xd7, 0x29, 0x89, 0x31, 0x13, 0x75, 0x1a, 0x10, 0x73, 0x07, 0xcc, 0x26, - 0x14, 0x05, 0x63, 0xdd, 0x28, 0xcf, 0x55, 0x57, 0x1d, 0xfd, 0xe6, 0x04, 0xd3, 0xd1, 0x98, 0x4e, - 0x52, 0x58, 0x9b, 0x3d, 0xbb, 0x2c, 0x66, 0x5c, 0x59, 0x6c, 0x5a, 0xe0, 0x26, 0xc3, 0x1e, 0x0e, - 0x62, 0xcc, 0x0a, 0x33, 0xeb, 0x46, 0x39, 0xef, 0x0e, 0x62, 0x73, 0x19, 0xe4, 0x38, 0x26, 0x2d, - 0xcc, 0x0a, 0x59, 0xa9, 0xe8, 0x68, 0xf7, 0xde, 0x49, 0xbf, 0xb3, 0xa9, 0x83, 0x0f, 0xfd, 0xce, - 0xe6, 0xa2, 0x22, 0x4d, 0xe3, 0x94, 0x0a, 0x60, 0x39, 0x9d, 0x71, 0x31, 0x8f, 0x28, 0xe1, 0xb8, - 0xf4, 0xdd, 0x00, 0x0b, 0x43, 0xe9, 0x99, 0x5b, 0xaf, 0x6e, 0x9b, 0x0f, 0xc0, 0x6d, 0x8f, 0x12, - 0xc1, 0x90, 0x27, 0x1a, 0xa8, 0xd5, 0x62, 0x98, 0x73, 0x69, 0x24, 0xef, 0x2e, 0x5c, 0xe5, 0x9f, - 0xaa, 0xb4, 0x59, 0x07, 0x39, 0x14, 0xd2, 0x36, 0x11, 0x0a, 0xb8, 0xf6, 0x30, 0xb1, 0xf3, 0xeb, - 0xb2, 0xb8, 0xa4, 0x0c, 0xf3, 0xd6, 0xa1, 0x13, 0x50, 0x18, 0x22, 0x71, 0xe0, 0xec, 0x11, 0x71, - 0x71, 0xba, 0x05, 0xf4, 0x49, 0xec, 0x11, 0xe1, 0xea, 0xd6, 0x94, 0xef, 0xec, 0xb5, 0xbe, 0x67, - 0x53, 0xbe, 0xad, 0xc4, 0xec, 0xd2, 0xb8, 0x59, 0xc9, 0x5f, 0x5a, 0x05, 0x2b, 0x63, 0xa9, 0x81, - 0xdd, 0x6f, 0xca, 0xee, 0xab, 0xa8, 0x85, 0x04, 0x7e, 0x81, 0x18, 0x0a, 0xb9, 0xf9, 0x08, 0xe4, - 0x51, 0x5b, 0x1c, 0x50, 0x16, 0x88, 0x63, 0xe5, 0xb3, 0x56, 0xb8, 0x38, 0xdd, 0x5a, 0xd4, 0xa4, - 0xda, 0xea, 0x4b, 0xc1, 0x02, 0xe2, 0xbb, 0xc3, 0x52, 0xf3, 0x09, 0xc8, 0x45, 0x72, 0x82, 0xf4, - 0x3e, 0x57, 0x5d, 0x76, 0xd2, 0x17, 0xda, 0x51, 0xf3, 0x6b, 0xf9, 0xe4, 0x4c, 0xbe, 0xf6, 0x3b, - 0x9b, 0x86, 0xab, 0x1b, 0x76, 0xcb, 0xc9, 0xd6, 0x86, 0xa3, 0xd2, 0x5e, 0x46, 0xe1, 0xb4, 0x97, - 0xd1, 0xd4, 0x95, 0x97, 0xea, 0xe7, 0x2c, 0xc8, 0xee, 0x73, 0xdf, 0x7c, 0x07, 0xe6, 0x46, 0xaf, - 0x9e, 0x3d, 0x8e, 0x91, 0xde, 0xbc, 0x75, 0x7f, 0xba, 0x3e, 0x38, 0xaa, 0x8d, 0x93, 0x1f, 0x7f, - 0x3e, 0xcd, 0xdc, 0x35, 0x8b, 0xf0, 0x9f, 0x3f, 0x30, 0xf4, 0x54, 0x7d, 0x43, 0x5e, 0xdb, 0x13, - 0x03, 0xdc, 0x4a, 0xdd, 0x9f, 0xe2, 0xf5, 0x6f, 0x90, 0x05, 0xd6, 0xc6, 0x7f, 0x0a, 0x06, 0x0c, - 0x65, 0xc9, 0x50, 0x32, 0xd7, 0xa7, 0x30, 0xc8, 0x9c, 0x84, 0x48, 0x6d, 0x75, 0x12, 0xc4, 0x68, - 0xc1, 0x44, 0x88, 0x49, 0xe7, 0x3c, 0x15, 0xa2, 0x2d, 0x1b, 0x1a, 0x6a, 0xad, 0xd6, 0x8d, 0xf7, - 0xc9, 0x96, 0x6b, 0x7b, 0x67, 0x5d, 0xdb, 0x38, 0xef, 0xda, 0xc6, 0xef, 0xae, 0x6d, 0x7c, 0xec, - 0xd9, 0x99, 0xf3, 0x9e, 0x9d, 0xf9, 0xd9, 0xb3, 0x33, 0xaf, 0xa1, 0x1f, 0x88, 0x83, 0x76, 0xd3, - 0xf1, 0x68, 0x08, 0xeb, 0xc9, 0xb0, 0xad, 0xe7, 0x58, 0xbc, 0xa5, 0xec, 0x50, 0x45, 0x30, 0x7e, - 0x0c, 0x8f, 0xf4, 0x7c, 0x71, 0x1c, 0x61, 0xde, 0xcc, 0xc9, 0x2f, 0xcc, 0xce, 0xdf, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x7f, 0x41, 0x11, 0x11, 0x45, 0x05, 0x00, 0x00, + // 962 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0x26, 0x69, 0x68, 0xc6, 0x55, 0x0b, 0x2b, 0x27, 0x71, 0x56, 0xcd, 0xda, 0x5d, 0xa1, + 0xd6, 0x75, 0xc9, 0x4e, 0xec, 0x50, 0x7e, 0x18, 0x21, 0x84, 0x2d, 0x0e, 0x39, 0x04, 0x55, 0x4b, + 0xb8, 0x70, 0xb1, 0x26, 0xeb, 0xd1, 0x66, 0xe5, 0xec, 0x8c, 0xb5, 0x33, 0x31, 0xed, 0x05, 0x55, + 0x39, 0x72, 0x42, 0xe2, 0x0f, 0xa0, 0x12, 0x07, 0x38, 0xa1, 0x20, 0xf5, 0x8f, 0xc8, 0xb1, 0x94, + 0x0b, 0xe2, 0x50, 0xa1, 0x04, 0x94, 0xfe, 0x19, 0x68, 0x7e, 0x64, 0xec, 0x8d, 0x37, 0x6e, 0x40, + 0x48, 0x5c, 0x2c, 0xcf, 0x7b, 0xdf, 0xbc, 0xf9, 0xbe, 0x6f, 0xde, 0x3c, 0x1b, 0x2c, 0x87, 0x88, + 0x70, 0x0a, 0x71, 0x1a, 0x36, 0xd7, 0xe1, 0xb0, 0x01, 0xf9, 0x43, 0x7f, 0x90, 0x52, 0x4e, 0xed, + 0xeb, 0x32, 0xe1, 0xcb, 0x84, 0x3f, 0x6c, 0x38, 0x37, 0x23, 0x4a, 0xa3, 0x3d, 0x0c, 0xd1, 0x20, + 0x86, 0x88, 0x10, 0xca, 0x11, 0x8f, 0x29, 0x61, 0x0a, 0xed, 0x94, 0x22, 0x1a, 0x51, 0xf9, 0x15, + 0x8a, 0x6f, 0x3a, 0xea, 0x86, 0x94, 0x25, 0x94, 0xc1, 0x1d, 0xc4, 0x30, 0x1c, 0x36, 0x76, 0x30, + 0x47, 0x0d, 0x18, 0xd2, 0x98, 0x4c, 0xe4, 0x49, 0xdf, 0xe4, 0xc5, 0x42, 0xe7, 0x57, 0x54, 0xbe, + 0xab, 0x0a, 0xab, 0x85, 0x4e, 0x2d, 0xeb, 0xad, 0x09, 0x8b, 0x04, 0xed, 0x84, 0x45, 0x3a, 0xf1, + 0x06, 0x4a, 0x62, 0x42, 0xa1, 0xfc, 0xd4, 0xa1, 0x9b, 0xe7, 0x34, 0x46, 0x98, 0x60, 0x16, 0xeb, + 0x4a, 0xde, 0x77, 0x16, 0xb8, 0xbe, 0xc5, 0xa2, 0x0e, 0x25, 0x43, 0x9c, 0xf2, 0x0e, 0x8d, 0x89, + 0xbd, 0x01, 0xe6, 0x04, 0xcb, 0xb2, 0x55, 0xb5, 0x6a, 0xc5, 0xe6, 0x8a, 0xaf, 0x4f, 0x16, 0x32, + 0x7c, 0x4d, 0xd3, 0x17, 0xc0, 0xf6, 0xdc, 0xd1, 0x8b, 0x4a, 0x21, 0x90, 0x60, 0xdb, 0x01, 0x57, + 0x53, 0x1c, 0xe2, 0x78, 0x88, 0xd3, 0xf2, 0x4c, 0xd5, 0xaa, 0x2d, 0x04, 0x66, 0x6d, 0x2f, 0x81, + 0x79, 0x86, 0x49, 0x0f, 0xa7, 0xe5, 0x59, 0x99, 0xd1, 0xab, 0xd6, 0x9b, 0x07, 0xa7, 0x87, 0x75, + 0xbd, 0xf8, 0xfa, 0xf4, 0xb0, 0x5e, 0x52, 0x4c, 0xb3, 0x74, 0xbc, 0x32, 0x58, 0xca, 0x46, 0x02, + 0xcc, 0x06, 0x94, 0x30, 0xec, 0xfd, 0x62, 0x81, 0x1b, 0xa3, 0xd4, 0x27, 0x41, 0xa7, 0xb9, 0x6e, + 0xdf, 0x05, 0xaf, 0x87, 0x94, 0xf0, 0x14, 0x85, 0xbc, 0x8b, 0x7a, 0xbd, 0x14, 0x33, 0x26, 0x85, + 0x2c, 0x04, 0x37, 0xce, 0xe2, 0x1f, 0xab, 0xb0, 0xdd, 0x01, 0xf3, 0x28, 0xa1, 0xfb, 0x84, 0x2b, + 0xc2, 0xed, 0x7b, 0x42, 0xce, 0xef, 0x2f, 0x2a, 0x8b, 0x4a, 0x30, 0xeb, 0xf5, 0xfd, 0x98, 0xc2, + 0x04, 0xf1, 0x5d, 0x7f, 0x93, 0xf0, 0xe7, 0x4f, 0xd7, 0x80, 0x76, 0x62, 0x93, 0xf0, 0x40, 0x6f, + 0xcd, 0xe8, 0x9e, 0xbd, 0x50, 0xf7, 0x5c, 0x46, 0xb7, 0x23, 0xc4, 0x2e, 0x9e, 0x17, 0x2b, 0xf9, + 0x7b, 0x2b, 0x60, 0xf9, 0x5c, 0xc8, 0xc8, 0xfd, 0x49, 0xc9, 0xfd, 0x7c, 0xd0, 0x43, 0x1c, 0x3f, + 0x40, 0x29, 0x4a, 0x98, 0xfd, 0x0e, 0x58, 0x40, 0xfb, 0x7c, 0x97, 0xa6, 0x31, 0x7f, 0xa4, 0x74, + 0xb6, 0xcb, 0xcf, 0x9f, 0xae, 0x95, 0x34, 0x53, 0x2d, 0xf5, 0x33, 0x9e, 0xc6, 0x24, 0x0a, 0x46, + 0x50, 0xfb, 0x7d, 0x30, 0x3f, 0x90, 0x15, 0xa4, 0xf6, 0x62, 0x73, 0xc9, 0xcf, 0x36, 0xbc, 0xaf, + 0xea, 0xb7, 0x17, 0x84, 0x27, 0x3f, 0x9e, 0x1e, 0xd6, 0xad, 0x40, 0x6f, 0x68, 0xd5, 0xc4, 0xad, + 0x8d, 0x4a, 0x65, 0xb5, 0x8c, 0x93, 0xd3, 0x5a, 0xc6, 0x43, 0x46, 0xcb, 0xe3, 0x19, 0x99, 0x0b, + 0x70, 0x14, 0x33, 0x8e, 0x53, 0x71, 0xad, 0x0f, 0x52, 0x3a, 0xa0, 0x0c, 0xed, 0xfd, 0x6b, 0x4d, + 0x25, 0x70, 0x85, 0xc7, 0x7c, 0x0f, 0xeb, 0xfe, 0x53, 0x0b, 0xbb, 0x0a, 0x8a, 0x3d, 0xcc, 0xc2, + 0x34, 0x1e, 0x88, 0x17, 0xab, 0xef, 0x68, 0x3c, 0x64, 0x7f, 0x04, 0xae, 0x26, 0x98, 0xa3, 0x1e, + 0xe2, 0x48, 0x5e, 0x54, 0xb1, 0xb9, 0x3a, 0xea, 0x79, 0xd2, 0x37, 0x3d, 0xbf, 0xa5, 0x41, 0xba, + 0xef, 0xcd, 0xa6, 0xd6, 0xdb, 0x2f, 0x9f, 0x54, 0x0a, 0x93, 0xae, 0xac, 0x1a, 0x57, 0xf2, 0x64, + 0x7a, 0xb7, 0x40, 0xe5, 0x82, 0x94, 0x71, 0xe9, 0x2f, 0x0b, 0x94, 0xc7, 0x30, 0xb2, 0x1d, 0xfe, + 0x37, 0x9b, 0x3c, 0x70, 0x4d, 0x76, 0xc7, 0xd9, 0xab, 0x52, 0x3d, 0x9d, 0x89, 0xb5, 0xee, 0xe7, + 0x3b, 0xe1, 0x4e, 0x38, 0x91, 0x91, 0xe2, 0x79, 0xa0, 0x7a, 0x51, 0xce, 0x78, 0x71, 0x6a, 0x49, + 0xd0, 0x36, 0x8d, 0xa2, 0x3d, 0xbc, 0x4d, 0xfb, 0x98, 0xa8, 0x47, 0xc2, 0x62, 0xfa, 0x9f, 0xb4, + 0xce, 0xf6, 0xb8, 0x27, 0xdb, 0x97, 0xf4, 0x44, 0x78, 0x29, 0xa8, 0x68, 0x33, 0xd4, 0xa2, 0xf5, + 0xe1, 0xcb, 0x27, 0x15, 0x6b, 0xd2, 0x85, 0xdb, 0xc6, 0x85, 0xa9, 0x22, 0xbc, 0x3a, 0xa8, 0xbd, + 0x0a, 0x73, 0xe6, 0x4a, 0xf3, 0xe7, 0xd7, 0xc0, 0xec, 0x16, 0x8b, 0xec, 0xaf, 0x40, 0x71, 0x7c, + 0x84, 0xbb, 0xe7, 0x9f, 0x73, 0x76, 0x82, 0x3a, 0xb7, 0xa7, 0xe7, 0x8d, 0xe9, 0x77, 0x0e, 0x7e, + 0xfd, 0xf3, 0xdb, 0x99, 0x5b, 0x76, 0x05, 0x4e, 0xfc, 0x50, 0xc2, 0x50, 0xe1, 0xbb, 0x72, 0xfc, + 0x1f, 0x58, 0xe0, 0x5a, 0x66, 0x0e, 0x57, 0x2e, 0x3e, 0x41, 0x02, 0x9c, 0x3b, 0xaf, 0x00, 0x18, + 0x0e, 0x35, 0xc9, 0xc1, 0xb3, 0xab, 0x53, 0x38, 0xc8, 0x98, 0x24, 0x91, 0x99, 0x8e, 0x79, 0x24, + 0xc6, 0x01, 0xb9, 0x24, 0x72, 0xe7, 0xd5, 0x34, 0x12, 0xfb, 0x72, 0x43, 0x57, 0x8d, 0x47, 0xfb, + 0x7b, 0x0b, 0x94, 0x72, 0xc7, 0x5a, 0xde, 0x59, 0x79, 0x40, 0x07, 0x5e, 0x12, 0x68, 0xc8, 0x35, + 0x24, 0xb9, 0x7b, 0xf6, 0xdd, 0x1c, 0x72, 0xa9, 0xde, 0x28, 0xaf, 0x49, 0xfc, 0x95, 0x50, 0x64, + 0x7e, 0xb0, 0xc0, 0x62, 0xfe, 0x58, 0xa9, 0x4d, 0x39, 0x3d, 0x83, 0x74, 0xd6, 0x2f, 0x8b, 0x34, + 0x44, 0x9b, 0x92, 0xe8, 0x5b, 0x76, 0x7d, 0x1a, 0x51, 0x19, 0x1c, 0x31, 0x3d, 0xb2, 0xc0, 0xea, + 0xf4, 0x47, 0x9f, 0xc7, 0x63, 0xea, 0x0e, 0xe7, 0xbd, 0x7f, 0xba, 0xc3, 0x28, 0xf8, 0x40, 0x2a, + 0xb8, 0x6f, 0x6f, 0xe4, 0x28, 0xe0, 0xb2, 0x42, 0x57, 0xce, 0x80, 0x6e, 0x68, 0x6a, 0x18, 0x29, + 0xce, 0x95, 0xc7, 0xe2, 0x87, 0xb4, 0xbd, 0x79, 0x74, 0xec, 0x5a, 0xcf, 0x8e, 0x5d, 0xeb, 0x8f, + 0x63, 0xd7, 0xfa, 0xe6, 0xc4, 0x2d, 0x3c, 0x3b, 0x71, 0x0b, 0xbf, 0x9d, 0xb8, 0x85, 0x2f, 0x60, + 0x14, 0xf3, 0xdd, 0xfd, 0x1d, 0x3f, 0xa4, 0x09, 0xec, 0x88, 0xfa, 0x6b, 0x9f, 0x62, 0xfe, 0x25, + 0x4d, 0xfb, 0x6a, 0x05, 0x87, 0xef, 0xc2, 0x87, 0xfa, 0x48, 0xfe, 0x68, 0x80, 0xd9, 0xce, 0xbc, + 0xfc, 0x13, 0xb7, 0xf1, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0xf8, 0xee, 0x61, 0xc8, 0x0a, + 0x00, 0x00, +} + +func (this *MsgToggleTokenConversionProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*MsgToggleTokenConversionProposal) + if !ok { + that2, ok := that.(MsgToggleTokenConversionProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Authority != that1.Authority { + return false + } + if this.Title != that1.Title { + return false + } + if this.Description != that1.Description { + return false + } + if this.Token != that1.Token { + return false + } + return true } // Reference imports to suppress errors if they are not otherwise used. @@ -413,6 +810,15 @@ type MsgClient interface { ConvertERC20(ctx context.Context, in *MsgConvertERC20, opts ...grpc.CallOption) (*MsgConvertERC20Response, error) // UpdateParams updates the parameters of the x/erc20 module. UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // RegisterCoinProposal defines a method to create a proposal to register a + // token pair for a native Cosmos coin. + RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) + // RegisterERC20Proposal defines a method to create a proposal to register a + // token pair for an ERC20 token. + RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) + // ToggleTokenConversionProposal defines a method to create a proposal to + // toggle the conversion of a token pair. + ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) } type msgClient struct { @@ -450,6 +856,33 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } +func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) { + out := new(MsgRegisterCoinProposalResponse) + err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/RegisterCoinProposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) { + out := new(MsgRegisterERC20ProposalResponse) + err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/RegisterERC20Proposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) { + out := new(MsgToggleTokenConversionProposalResponse) + err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/ToggleTokenConversionProposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom @@ -460,6 +893,15 @@ type MsgServer interface { ConvertERC20(context.Context, *MsgConvertERC20) (*MsgConvertERC20Response, error) // UpdateParams updates the parameters of the x/erc20 module. UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // RegisterCoinProposal defines a method to create a proposal to register a + // token pair for a native Cosmos coin. + RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) + // RegisterERC20Proposal defines a method to create a proposal to register a + // token pair for an ERC20 token. + RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) + // ToggleTokenConversionProposal defines a method to create a proposal to + // toggle the conversion of a token pair. + ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -475,6 +917,15 @@ func (*UnimplementedMsgServer) ConvertERC20(ctx context.Context, req *MsgConvert func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } +func (*UnimplementedMsgServer) RegisterCoinProposal(ctx context.Context, req *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterCoinProposal not implemented") +} +func (*UnimplementedMsgServer) RegisterERC20Proposal(ctx context.Context, req *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterERC20Proposal not implemented") +} +func (*UnimplementedMsgServer) ToggleTokenConversionProposal(ctx context.Context, req *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ToggleTokenConversionProposal not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -534,40 +985,106 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "canto.erc20.v1.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ConvertCoin", - Handler: _Msg_ConvertCoin_Handler, - }, - { - MethodName: "ConvertERC20", - Handler: _Msg_ConvertERC20_Handler, - }, - { - MethodName: "UpdateParams", - Handler: _Msg_UpdateParams_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "canto/erc20/v1/tx.proto", -} - -func (m *MsgConvertCoin) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterCoinProposal) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil -} - -func (m *MsgConvertCoin) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) + if interceptor == nil { + return srv.(MsgServer).RegisterCoinProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.erc20.v1.Msg/RegisterCoinProposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoinProposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterERC20Proposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RegisterERC20Proposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.erc20.v1.Msg/RegisterERC20Proposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20Proposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgToggleTokenConversionProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.erc20.v1.Msg/ToggleTokenConversionProposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversionProposal)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "canto.erc20.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ConvertCoin", + Handler: _Msg_ConvertCoin_Handler, + }, + { + MethodName: "ConvertERC20", + Handler: _Msg_ConvertERC20_Handler, + }, + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "RegisterCoinProposal", + Handler: _Msg_RegisterCoinProposal_Handler, + }, + { + MethodName: "RegisterERC20Proposal", + Handler: _Msg_RegisterERC20Proposal_Handler, + }, + { + MethodName: "ToggleTokenConversionProposal", + Handler: _Msg_ToggleTokenConversionProposal_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/erc20/v1/tx.proto", +} + +func (m *MsgConvertCoin) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgConvertCoin) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } func (m *MsgConvertCoin) MarshalToSizedBuffer(dAtA []byte) (int, error) { @@ -765,6 +1282,231 @@ func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgRegisterCoinProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterCoinProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterCoinProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRegisterCoinProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterCoinProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterCoinProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgRegisterERC20Proposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterERC20Proposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterERC20Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Erc20Address) > 0 { + i -= len(m.Erc20Address) + copy(dAtA[i:], m.Erc20Address) + i = encodeVarintTx(dAtA, i, uint64(len(m.Erc20Address))) + i-- + dAtA[i] = 0x22 + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRegisterERC20ProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterERC20ProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterERC20ProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgToggleTokenConversionProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgToggleTokenConversionProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgToggleTokenConversionProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintTx(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0x22 + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgToggleTokenConversionProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgToggleTokenConversionProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgToggleTokenConversionProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -824,49 +1566,741 @@ func (m *MsgConvertERC20) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - return n -} + return n +} + +func (m *MsgConvertERC20Response) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgRegisterCoinProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgRegisterCoinProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgRegisterERC20Proposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Erc20Address) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRegisterERC20ProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgToggleTokenConversionProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Token) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgToggleTokenConversionProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgConvertCoin: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgConvertCoin: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Coin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgConvertCoinResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgConvertCoinResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgConvertCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgConvertERC20: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgConvertERC20: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgConvertERC20Response) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgConvertERC20Response: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgConvertERC20Response: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } -func (m *MsgConvertERC20Response) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - return n + return nil } - -func (m *MsgUpdateParams) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Authority) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } } - l = m.Params.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} -func (m *MsgUpdateParamsResponse) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - return n -} - -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + return nil } -func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCoinProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -889,17 +2323,17 @@ func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgConvertCoin: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCoinProposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConvertCoin: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Coin", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -909,28 +2343,27 @@ func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Coin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Authority = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -958,11 +2391,11 @@ func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Receiver = string(dAtA[iNdEx:postIndex]) + m.Title = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -990,7 +2423,40 @@ func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Sender = string(dAtA[iNdEx:postIndex]) + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -1013,7 +2479,7 @@ func (m *MsgConvertCoin) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgConvertCoinResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCoinProposalResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1036,10 +2502,10 @@ func (m *MsgConvertCoinResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgConvertCoinResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCoinProposalResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConvertCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCoinProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -1063,7 +2529,7 @@ func (m *MsgConvertCoinResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterERC20Proposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1086,15 +2552,15 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgConvertERC20: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterERC20Proposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConvertERC20: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1122,11 +2588,11 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ContractAddress = string(dAtA[iNdEx:postIndex]) + m.Authority = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1154,13 +2620,11 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Title = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1188,11 +2652,11 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Receiver = string(dAtA[iNdEx:postIndex]) + m.Description = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1220,7 +2684,7 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Sender = string(dAtA[iNdEx:postIndex]) + m.Erc20Address = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1243,7 +2707,7 @@ func (m *MsgConvertERC20) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgConvertERC20Response) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterERC20ProposalResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1266,10 +2730,10 @@ func (m *MsgConvertERC20Response) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgConvertERC20Response: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConvertERC20Response: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -1293,7 +2757,7 @@ func (m *MsgConvertERC20Response) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { +func (m *MsgToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1316,10 +2780,10 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleTokenConversionProposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1356,9 +2820,9 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -1368,24 +2832,87 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF } + m.Token = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1408,7 +2935,7 @@ func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { +func (m *MsgToggleTokenConversionProposalResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1431,10 +2958,10 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/erc20/types/tx.pb.gw.go b/x/erc20/types/tx.pb.gw.go index a1cbef504..76ff48bce 100644 --- a/x/erc20/types/tx.pb.gw.go +++ b/x/erc20/types/tx.pb.gw.go @@ -141,6 +141,114 @@ func local_request_Msg_UpdateParams_0(ctx context.Context, marshaler runtime.Mar } +var ( + filter_Msg_RegisterCoinProposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterCoinProposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCoinProposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RegisterCoinProposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterCoinProposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCoinProposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RegisterCoinProposal(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Msg_RegisterERC20Proposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterERC20Proposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterERC20Proposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RegisterERC20Proposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgRegisterERC20Proposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterERC20Proposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RegisterERC20Proposal(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Msg_ToggleTokenConversionProposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgToggleTokenConversionProposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ToggleTokenConversionProposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ToggleTokenConversionProposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgToggleTokenConversionProposal + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ToggleTokenConversionProposal_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ToggleTokenConversionProposal(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". // UnaryRPC :call MsgServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -216,6 +324,75 @@ func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server }) + mux.Handle("GET", pattern_Msg_RegisterCoinProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Msg_RegisterCoinProposal_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_RegisterCoinProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Msg_RegisterERC20Proposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Msg_RegisterERC20Proposal_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_RegisterERC20Proposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Msg_ToggleTokenConversionProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Msg_ToggleTokenConversionProposal_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_ToggleTokenConversionProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -317,6 +494,66 @@ func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client }) + mux.Handle("GET", pattern_Msg_RegisterCoinProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Msg_RegisterCoinProposal_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_RegisterCoinProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Msg_RegisterERC20Proposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Msg_RegisterERC20Proposal_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_RegisterERC20Proposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Msg_ToggleTokenConversionProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Msg_ToggleTokenConversionProposal_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_ToggleTokenConversionProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -326,6 +563,12 @@ var ( pattern_Msg_ConvertERC20_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "convert_erc20"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Msg_UpdateParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "update_params"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Msg_RegisterCoinProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_coin_proposal"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Msg_RegisterERC20Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_erc20_proposal"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Msg_ToggleTokenConversionProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "toggle_token_conversion_proposal"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -334,4 +577,10 @@ var ( forward_Msg_ConvertERC20_0 = runtime.ForwardResponseMessage forward_Msg_UpdateParams_0 = runtime.ForwardResponseMessage + + forward_Msg_RegisterCoinProposal_0 = runtime.ForwardResponseMessage + + forward_Msg_RegisterERC20Proposal_0 = runtime.ForwardResponseMessage + + forward_Msg_ToggleTokenConversionProposal_0 = runtime.ForwardResponseMessage ) From 183fe4365856985f7caaf5be3372dafb674a48a2 Mon Sep 17 00:00:00 2001 From: poorphd Date: Tue, 16 Jan 2024 16:33:41 +0900 Subject: [PATCH 37/96] feat: proposals for erc20 module --- x/erc20/keeper/evm_hooks_test.go | 906 +++++----- x/erc20/keeper/evm_test.go | 767 ++++---- x/erc20/keeper/integration_test.go | 617 ++++--- x/erc20/keeper/msg_server_test.go | 2671 ++++++++++++++-------------- x/erc20/keeper/proposals.go | 1 - x/erc20/keeper/proposals_test.go | 849 ++++----- x/erc20/types/proposal.go | 168 -- x/erc20/types/proposal_test.go | 280 --- 8 files changed, 2913 insertions(+), 3346 deletions(-) delete mode 100644 x/erc20/keeper/proposals.go delete mode 100644 x/erc20/types/proposal.go delete mode 100644 x/erc20/types/proposal_test.go diff --git a/x/erc20/keeper/evm_hooks_test.go b/x/erc20/keeper/evm_hooks_test.go index 186635557..528188f24 100644 --- a/x/erc20/keeper/evm_hooks_test.go +++ b/x/erc20/keeper/evm_hooks_test.go @@ -1,433 +1,477 @@ package keeper_test -// -//import ( -// "fmt" -// "math/big" -// -// sdkmath "cosmossdk.io/math" -// sdk "github.com/cosmos/cosmos-sdk/types" -// "github.com/ethereum/go-ethereum/common" -// ethtypes "github.com/ethereum/go-ethereum/core/types" -// -// "github.com/Canto-Network/Canto/v7/contracts" -// "github.com/Canto-Network/Canto/v7/x/erc20/types" -// "github.com/evmos/ethermint/tests" -//) -// -//// ensureHooksSet tries to set the hooks on EVMKeeper, this will fail if the erc20 hook is already set -//func (suite *KeeperTestSuite) ensureHooksSet() { -// // TODO: PR to Ethermint to add the functionality `GetHooks` or `areHooksSet` to avoid catching a panic -// defer func() { -// err := recover() -// suite.Require().NotNil(err) -// }() -// suite.app.EvmKeeper.SetHooks(suite.app.Erc20Keeper.Hooks()) -//} -// -//func (suite *KeeperTestSuite) TestEvmHooksRegisteredERC20() { -// testCases := []struct { -// name string -// malleate func(common.Address) -// result bool -// }{ -// { -// "correct execution", -// func(contractAddr common.Address) { -// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// // Mint 10 tokens to suite.address (owner) -// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) -// suite.Commit() -// -// // Burn the 10 tokens of suite.address (owner) -// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) -// }, -// true, -// }, -// { -// "unregistered pair", -// func(contractAddr common.Address) { -// // Mint 10 tokens to suite.address (owner) -// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) -// suite.Commit() -// -// // Burn the 10 tokens of suite.address (owner) -// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) -// }, -// false, -// }, -// { -// "wrong event", -// func(contractAddr common.Address) { -// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// // Mint 10 tokens to suite.address (owner) -// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) -// }, -// false, -// }, -// { -// "Pair is disabled", -// func(contractAddr common.Address) { -// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// pair.Enabled = false -// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) -// // Mint 10 tokens to suite.address (owner) -// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) -// suite.Commit() -// -// // Burn the 10 tokens of suite.address (owner) -// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) -// }, -// false, -// }, -// { -// "Pair is incorrectly loaded", -// func(contractAddr common.Address) { -// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// suite.app.Erc20Keeper.DeleteTokenPair(suite.ctx, *pair) -// -// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) -// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) -// // Mint 10 tokens to suite.address (owner) -// _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) -// suite.Commit() -// -// // Burn the 10 tokens of suite.address (owner) -// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// -// suite.ensureHooksSet() -// -// contractAddr, err := suite.DeployContract("coin test erc20", "token", erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// -// tc.malleate(contractAddr) -// -// balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), types.CreateDenom(contractAddr.String())) -// suite.Commit() -// if tc.result { -// // Check if the execution was successful -// suite.Require().Equal(int64(10), balance.Amount.Int64()) -// } else { -// // Check that no changes were made to the account -// suite.Require().Equal(int64(0), balance.Amount.Int64()) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// reconvert int64 -// -// result bool -// }{ -// {"correct execution", 100, 10, 5, true}, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// -// suite.ensureHooksSet() -// -// metadata, pair := suite.setupRegisterCoin() -// suite.Require().NotNil(metadata) -// suite.Require().NotNil(pair) -// -// sender := sdk.AccAddress(suite.address.Bytes()) -// contractAddr := common.HexToAddress(pair.Erc20Address) -// -// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// -// convertCoin := types.NewMsgConvertCoin( -// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, convertCoin) -// suite.Require().NoError(err, tc.name) -// suite.Commit() -// -// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) -// suite.Require().Equal(balance, big.NewInt(tc.burn)) -// -// // Burn the 10 tokens of suite.address (owner) -// _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(tc.reconvert)) -// -// balance = suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// -// if tc.result { -// // Check if the execution was successful -// suite.Require().NoError(err) -// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert)) -// } else { -// // Check that no changes were made to the account -// suite.Require().Error(err) -// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn)) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestPostTxProcessing() { -// var ( -// receipt *ethtypes.Receipt -// pair *types.TokenPair -// ) -// -// msg := ethtypes.NewMessage( -// types.ModuleAddress, -// &common.Address{}, -// 0, -// big.NewInt(0), // amount -// uint64(0), // gasLimit -// big.NewInt(0), // gasFeeCap -// big.NewInt(0), // gasTipCap -// big.NewInt(0), // gasPrice -// []byte{}, -// ethtypes.AccessList{}, // AccessList -// true, // checkNonce -// ) -// -// account := tests.GenerateAddress() -// -// transferData := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// transferData[31] = uint8(10) -// erc20 := contracts.ERC20BurnableContract.ABI -// -// transferEvent := erc20.Events["Transfer"] -// -// testCases := []struct { -// name string -// malleate func() -// expConversion bool -// }{ -// { -// "Empty logs", -// func() { -// log := ethtypes.Log{} -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "No log data", -// func() { -// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "Non recognized event", -// func() { -// topics := []common.Hash{{}, account.Hash(), account.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "Non transfer event", -// func() { -// aprovalEvent := erc20.Events["Approval"] -// topics := []common.Hash{aprovalEvent.ID, account.Hash(), account.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "No log address", -// func() { -// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "No data on topic", -// func() { -// topics := []common.Hash{transferEvent.ID} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "transfer to non-evm-module account", -// func() { -// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// -// _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// topics := []common.Hash{transferEvent.ID, account.Hash(), account.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// Address: contractAddr, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "correct burn", -// func() { -// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// -// pair, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// Address: contractAddr, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// true, -// }, -// { -// "Unspecified Owner", -// func() { -// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// -// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// pair.ContractOwner = types.OWNER_UNSPECIFIED -// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) -// -// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// Address: contractAddr, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// { -// "Fail Evm", -// func() { -// contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// -// pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// suite.Require().NoError(err) -// -// pair.ContractOwner = types.OWNER_MODULE -// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) -// -// topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} -// log := ethtypes.Log{ -// Topics: topics, -// Data: transferData, -// Address: contractAddr, -// } -// receipt = ðtypes.Receipt{ -// Logs: []*ethtypes.Log{&log}, -// } -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// suite.ensureHooksSet() -// -// tc.malleate() -// -// err := suite.app.Erc20Keeper.Hooks().PostTxProcessing(suite.ctx, msg, receipt) -// suite.Require().NoError(err) -// -// if tc.expConversion { -// sender := sdk.AccAddress(account.Bytes()) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) -// -// transferEvent, err := erc20.Unpack("Transfer", transferData) -// suite.Require().NoError(err) -// -// tokens, _ := transferEvent[0].(*big.Int) -// suite.Require().Equal(cosmosBalance.Amount.String(), tokens.String()) -// } -// }) -// } -// suite.mintFeeCollector = false -//} +import ( + "fmt" + "math/big" + + sdkmath "cosmossdk.io/math" + inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/ethereum/go-ethereum/common" + ethtypes "github.com/ethereum/go-ethereum/core/types" + + "github.com/Canto-Network/Canto/v7/contracts" + erc20keeper "github.com/Canto-Network/Canto/v7/x/erc20/keeper" + "github.com/Canto-Network/Canto/v7/x/erc20/types" + "github.com/evmos/ethermint/tests" +) + +const ( + erc20Name = "Coin Token" + erc20Symbol = "CTKN" + erc20Decimals = uint8(18) + cosmosTokenBase = "acoin" + cosmosTokenDisplay = "coin" + cosmosDecimals = uint8(6) + defaultExponent = uint32(18) + zeroExponent = uint32(0) + ibcBase = "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" +) + +func (suite *KeeperTestSuite) setupRegisterCoin() (banktypes.Metadata, *types.TokenPair) { + validMetadata := banktypes.Metadata{ + Description: "description of the token", + Base: cosmosTokenBase, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: cosmosTokenBase, + Exponent: 0, + }, + { + Denom: cosmosTokenBase[1:], + Exponent: uint32(18), + }, + }, + Name: cosmosTokenBase, + Symbol: erc20Symbol, + Display: cosmosTokenBase, + } + + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) + suite.Require().NoError(err) + + // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) + pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) + suite.Require().NoError(err) + suite.Commit() + return validMetadata, pair +} + +// ensureHooksSet tries to set the hooks on EVMKeeper, this will fail if the erc20 hook is already set +func (suite *KeeperTestSuite) ensureHooksSet() { + // TODO: PR to Ethermint to add the functionality `GetHooks` or `areHooksSet` to avoid catching a panic + defer func() { + err := recover() + suite.Require().NotNil(err) + }() + suite.app.EvmKeeper.SetHooks(suite.app.Erc20Keeper.Hooks()) +} + +func (suite *KeeperTestSuite) TestEvmHooksRegisteredERC20() { + testCases := []struct { + name string + malleate func(common.Address) + result bool + }{ + { + "correct execution", + func(contractAddr common.Address) { + _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + // Mint 10 tokens to suite.address (owner) + _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) + suite.Commit() + + // Burn the 10 tokens of suite.address (owner) + _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) + }, + true, + }, + { + "unregistered pair", + func(contractAddr common.Address) { + // Mint 10 tokens to suite.address (owner) + _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) + suite.Commit() + + // Burn the 10 tokens of suite.address (owner) + _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) + }, + false, + }, + { + "wrong event", + func(contractAddr common.Address) { + _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + // Mint 10 tokens to suite.address (owner) + _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) + }, + false, + }, + { + "Pair is disabled", + func(contractAddr common.Address) { + pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + pair.Enabled = false + suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) + // Mint 10 tokens to suite.address (owner) + _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) + suite.Commit() + + // Burn the 10 tokens of suite.address (owner) + _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) + }, + false, + }, + { + "Pair is incorrectly loaded", + func(contractAddr common.Address) { + pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + suite.app.Erc20Keeper.DeleteTokenPair(suite.ctx, *pair) + + suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) + suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) + // Mint 10 tokens to suite.address (owner) + _ = suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(10)) + suite.Commit() + + // Burn the 10 tokens of suite.address (owner) + _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(10)) + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + + suite.ensureHooksSet() + + contractAddr, err := suite.DeployContract("coin test erc20", "token", erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + + tc.malleate(contractAddr) + + balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), erc20keeper.CreateDenom(contractAddr.String())) + suite.Commit() + if tc.result { + // Check if the execution was successful + suite.Require().Equal(int64(10), balance.Amount.Int64()) + } else { + // Check that no changes were made to the account + suite.Require().Equal(int64(0), balance.Amount.Int64()) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestEvmHooksRegisteredCoin() { + testCases := []struct { + name string + mint int64 + burn int64 + reconvert int64 + + result bool + }{ + {"correct execution", 100, 10, 5, true}, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + + suite.ensureHooksSet() + + metadata, pair := suite.setupRegisterCoin() + suite.Require().NotNil(metadata) + suite.Require().NotNil(pair) + + sender := sdk.AccAddress(suite.address.Bytes()) + contractAddr := common.HexToAddress(pair.Erc20Address) + + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + + convertCoin := types.NewMsgConvertCoin( + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + ctx := sdk.WrapSDKContext(suite.ctx) + _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, convertCoin) + suite.Require().NoError(err, tc.name) + suite.Commit() + + balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(balance, big.NewInt(tc.burn)) + + // Burn the 10 tokens of suite.address (owner) + _ = suite.TransferERC20TokenToModule(contractAddr, suite.address, big.NewInt(tc.reconvert)) + + balance = suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + + if tc.result { + // Check if the execution was successful + suite.Require().NoError(err) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert)) + } else { + // Check that no changes were made to the account + suite.Require().Error(err) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.mint-tc.burn)) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestPostTxProcessing() { + var ( + receipt *ethtypes.Receipt + pair *types.TokenPair + ) + + msg := ethtypes.NewMessage( + types.ModuleAddress, + &common.Address{}, + 0, + big.NewInt(0), // amount + uint64(0), // gasLimit + big.NewInt(0), // gasFeeCap + big.NewInt(0), // gasTipCap + big.NewInt(0), // gasPrice + []byte{}, + ethtypes.AccessList{}, // AccessList + true, // checkNonce + ) + + account := tests.GenerateAddress() + + transferData := []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + transferData[31] = uint8(10) + erc20 := contracts.ERC20BurnableContract.ABI + + transferEvent := erc20.Events["Transfer"] + + testCases := []struct { + name string + malleate func() + expConversion bool + }{ + { + "Empty logs", + func() { + log := ethtypes.Log{} + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "No log data", + func() { + topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} + log := ethtypes.Log{ + Topics: topics, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "Non recognized event", + func() { + topics := []common.Hash{{}, account.Hash(), account.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "Non transfer event", + func() { + aprovalEvent := erc20.Events["Approval"] + topics := []common.Hash{aprovalEvent.ID, account.Hash(), account.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "No log address", + func() { + topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "No data on topic", + func() { + topics := []common.Hash{transferEvent.ID} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "transfer to non-evm-module account", + func() { + contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + + _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + topics := []common.Hash{transferEvent.ID, account.Hash(), account.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + Address: contractAddr, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "correct burn", + func() { + contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + + pair, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + Address: contractAddr, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + true, + }, + { + "Unspecified Owner", + func() { + contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + + pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + pair.ContractOwner = types.OWNER_UNSPECIFIED + suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) + + topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + Address: contractAddr, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + { + "Fail Evm", + func() { + contractAddr, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + + pair, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + suite.Require().NoError(err) + + pair.ContractOwner = types.OWNER_MODULE + suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) + + topics := []common.Hash{transferEvent.ID, account.Hash(), types.ModuleAddress.Hash()} + log := ethtypes.Log{ + Topics: topics, + Data: transferData, + Address: contractAddr, + } + receipt = ðtypes.Receipt{ + Logs: []*ethtypes.Log{&log}, + } + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + suite.ensureHooksSet() + + tc.malleate() + + err := suite.app.Erc20Keeper.Hooks().PostTxProcessing(suite.ctx, msg, receipt) + suite.Require().NoError(err) + + if tc.expConversion { + sender := sdk.AccAddress(account.Bytes()) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) + + transferEvent, err := erc20.Unpack("Transfer", transferData) + suite.Require().NoError(err) + + tokens, _ := transferEvent[0].(*big.Int) + suite.Require().Equal(cosmosBalance.Amount.String(), tokens.String()) + } + }) + } + suite.mintFeeCollector = false +} diff --git a/x/erc20/keeper/evm_test.go b/x/erc20/keeper/evm_test.go index ca466993a..a1ebedb03 100644 --- a/x/erc20/keeper/evm_test.go +++ b/x/erc20/keeper/evm_test.go @@ -1,386 +1,385 @@ package keeper_test -// -//import ( -// "fmt" -// -// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" -// "github.com/ethereum/go-ethereum/common" -// "github.com/evmos/ethermint/tests" -// evmtypes "github.com/evmos/ethermint/x/evm/types" -// "github.com/stretchr/testify/mock" -// -// "github.com/Canto-Network/Canto/v7/contracts" -// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" -// "github.com/Canto-Network/Canto/v7/x/erc20/types" -//) -// -//func (suite *KeeperTestSuite) TestQueryERC20() { -// var contract common.Address -// testCases := []struct { -// name string -// malleate func() -// res bool -// }{ -// { -// "erc20 not deployed", -// func() { contract = common.Address{} }, -// false, -// }, -// { -// "ok", -// func() { contract, _ = suite.DeployContract("coin", "token", erc20Decimals) }, -// true, -// }, -// } -// for _, tc := range testCases { -// suite.SetupTest() // reset -// -// tc.malleate() -// -// res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) -// if tc.res { -// suite.Require().NoError(err) -// suite.Require().Equal( -// types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, -// res, -// ) -// } else { -// suite.Require().Error(err) -// } -// } -//} -// -//func (suite *KeeperTestSuite) TestBalanceOf() { -// var mockEVMKeeper *MockEVMKeeper -// contract := tests.GenerateAddress() -// testCases := []struct { -// name string -// malleate func() -// expBalance int64 -// res bool -// }{ -// { -// "Failed to call Evm", -// func() { -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// }, -// int64(0), -// false, -// }, -// { -// "Incorrect res", -// func() { -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() -// }, -// int64(0), -// false, -// }, -// { -// "Correct Execution", -// func() { -// balance := make([]uint8, 32) -// balance[31] = uint8(10) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// }, -// int64(10), -// true, -// }, -// } -// for _, tc := range testCases { -// suite.SetupTest() // reset -// mockEVMKeeper = &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// tc.malleate() -// -// abi := contracts.ERC20BurnableContract.ABI -// balance := suite.app.Erc20Keeper.BalanceOf(suite.ctx, abi, contract, tests.GenerateAddress()) -// if tc.res { -// suite.Require().Equal(balance.Int64(), tc.expBalance) -// } else { -// suite.Require().Nil(balance) -// } -// } -//} -// -//func (suite *KeeperTestSuite) TestCallEVM() { -// testCases := []struct { -// name string -// method string -// expPass bool -// }{ -// { -// "unknown method", -// "", -// false, -// }, -// { -// "pass", -// "balanceOf", -// true, -// }, -// } -// for _, tc := range testCases { -// suite.SetupTest() // reset -// -// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// account := tests.GenerateAddress() -// -// res, err := suite.app.Erc20Keeper.CallEVM(suite.ctx, erc20, types.ModuleAddress, contract, true, tc.method, account) -// if tc.expPass { -// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) -// suite.Require().NoError(err) -// } else { -// suite.Require().Error(err) -// } -// } -//} -// -//func (suite *KeeperTestSuite) TestCallEVMWithData() { -// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI -// testCases := []struct { -// name string -// from common.Address -// malleate func() ([]byte, *common.Address) -// expPass bool -// }{ -// { -// "unknown method", -// types.ModuleAddress, -// func() ([]byte, *common.Address) { -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// account := tests.GenerateAddress() -// data, _ := erc20.Pack("", account) -// return data, &contract -// }, -// false, -// }, -// { -// "pass", -// types.ModuleAddress, -// func() ([]byte, *common.Address) { -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// account := tests.GenerateAddress() -// data, _ := erc20.Pack("balanceOf", account) -// return data, &contract -// }, -// true, -// }, -// { -// "fail empty data", -// types.ModuleAddress, -// func() ([]byte, *common.Address) { -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// return []byte{}, &contract -// }, -// false, -// }, -// -// { -// "fail empty sender", -// common.Address{}, -// func() ([]byte, *common.Address) { -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// return []byte{}, &contract -// }, -// false, -// }, -// { -// "deploy", -// types.ModuleAddress, -// func() ([]byte, *common.Address) { -// ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) -// data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) -// return data, nil -// }, -// true, -// }, -// { -// "fail deploy", -// types.ModuleAddress, -// func() ([]byte, *common.Address) { -// params := suite.app.EvmKeeper.GetParams(suite.ctx) -// params.EnableCreate = false -// suite.app.EvmKeeper.SetParams(suite.ctx, params) -// ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) -// data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) -// return data, nil -// }, -// false, -// }, -// } -// -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.SetupTest() // reset -// -// data, contract := tc.malleate() -// -// res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, tc.from, contract, data, true) -// if tc.expPass { -// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) -// suite.Require().NoError(err) -// } else { -// suite.Require().Error(err) -// } -// }) -// } -//} -// -//func (suite *KeeperTestSuite) TestForceFail() { -// var mockEVMKeeper *MockEVMKeeper -// erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI -// testCases := []struct { -// name string -// malleate func() -// commit bool -// expPass bool -// }{ -// { -// "Force estimate gas error", -// func() { -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced EstimateGas error")) -// }, -// true, -// false, -// }, -// { -// "Force ApplyMessage error", -// func() { -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// }, -// true, -// false, -// }, -// { -// "Force ApplyMessage failed", -// func() { -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "SomeError"}, nil) -// }, -// true, -// false, -// }, -// } -// -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.SetupTest() // reset -// mockEVMKeeper = &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// tc.malleate() -// -// contract, err := suite.DeployContract("coin", "token", erc20Decimals) -// suite.Require().NoError(err) -// account := tests.GenerateAddress() -// data, _ := erc20.Pack("balanceOf", account) -// -// res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, types.ModuleAddress, &contract, data, tc.commit) -// if tc.expPass { -// suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) -// suite.Require().NoError(err) -// } else { -// suite.Require().Error(err) -// } -// }) -// } -//} -// -//func (suite *KeeperTestSuite) TestQueryERC20ForceFail() { -// var mockEVMKeeper *MockEVMKeeper -// contract := tests.GenerateAddress() -// testCases := []struct { -// name string -// malleate func() -// res bool -// }{ -// { -// "Failed to call Evm", -// func() { -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// }, -// false, -// }, -// { -// "Incorrect res", -// func() { -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() -// }, -// false, -// }, -// { -// "Correct res for name - incorrect for symbol", -// func() { -// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() -// }, -// false, -// }, -// { -// "incorrect symbol res", -// func() { -// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() -// }, -// false, -// }, -// { -// "Correct res for name - incorrect for symbol", -// func() { -// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() -// }, -// false, -// }, -// { -// "incorrect symbol res", -// func() { -// ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.SetupTest() // reset -// mockEVMKeeper = &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// tc.malleate() -// -// res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) -// if tc.res { -// suite.Require().NoError(err) -// suite.Require().Equal( -// types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, -// res, -// ) -// } else { -// suite.Require().Error(err) -// } -// } -//} +import ( + "fmt" + + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/ethereum/go-ethereum/common" + "github.com/evmos/ethermint/tests" + evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/stretchr/testify/mock" + + "github.com/Canto-Network/Canto/v7/contracts" + "github.com/Canto-Network/Canto/v7/x/erc20/keeper" + "github.com/Canto-Network/Canto/v7/x/erc20/types" +) + +func (suite *KeeperTestSuite) TestQueryERC20() { + var contract common.Address + testCases := []struct { + name string + malleate func() + res bool + }{ + { + "erc20 not deployed", + func() { contract = common.Address{} }, + false, + }, + { + "ok", + func() { contract, _ = suite.DeployContract("coin", "token", erc20Decimals) }, + true, + }, + } + for _, tc := range testCases { + suite.SetupTest() // reset + + tc.malleate() + + res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) + if tc.res { + suite.Require().NoError(err) + suite.Require().Equal( + types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, + res, + ) + } else { + suite.Require().Error(err) + } + } +} + +func (suite *KeeperTestSuite) TestBalanceOf() { + var mockEVMKeeper *MockEVMKeeper + contract := tests.GenerateAddress() + testCases := []struct { + name string + malleate func() + expBalance int64 + res bool + }{ + { + "Failed to call Evm", + func() { + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + }, + int64(0), + false, + }, + { + "Incorrect res", + func() { + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() + }, + int64(0), + false, + }, + { + "Correct Execution", + func() { + balance := make([]uint8, 32) + balance[31] = uint8(10) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + }, + int64(10), + true, + }, + } + for _, tc := range testCases { + suite.SetupTest() // reset + mockEVMKeeper = &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + tc.malleate() + + abi := contracts.ERC20BurnableContract.ABI + balance := suite.app.Erc20Keeper.BalanceOf(suite.ctx, abi, contract, tests.GenerateAddress()) + if tc.res { + suite.Require().Equal(balance.Int64(), tc.expBalance) + } else { + suite.Require().Nil(balance) + } + } +} + +func (suite *KeeperTestSuite) TestCallEVM() { + testCases := []struct { + name string + method string + expPass bool + }{ + { + "unknown method", + "", + false, + }, + { + "pass", + "balanceOf", + true, + }, + } + for _, tc := range testCases { + suite.SetupTest() // reset + + erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + account := tests.GenerateAddress() + + res, err := suite.app.Erc20Keeper.CallEVM(suite.ctx, erc20, types.ModuleAddress, contract, true, tc.method, account) + if tc.expPass { + suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + } +} + +func (suite *KeeperTestSuite) TestCallEVMWithData() { + erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI + testCases := []struct { + name string + from common.Address + malleate func() ([]byte, *common.Address) + expPass bool + }{ + { + "unknown method", + types.ModuleAddress, + func() ([]byte, *common.Address) { + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + account := tests.GenerateAddress() + data, _ := erc20.Pack("", account) + return data, &contract + }, + false, + }, + { + "pass", + types.ModuleAddress, + func() ([]byte, *common.Address) { + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + account := tests.GenerateAddress() + data, _ := erc20.Pack("balanceOf", account) + return data, &contract + }, + true, + }, + { + "fail empty data", + types.ModuleAddress, + func() ([]byte, *common.Address) { + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + return []byte{}, &contract + }, + false, + }, + + { + "fail empty sender", + common.Address{}, + func() ([]byte, *common.Address) { + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + return []byte{}, &contract + }, + false, + }, + { + "deploy", + types.ModuleAddress, + func() ([]byte, *common.Address) { + ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) + data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) + return data, nil + }, + true, + }, + { + "fail deploy", + types.ModuleAddress, + func() ([]byte, *common.Address) { + params := suite.app.EvmKeeper.GetParams(suite.ctx) + params.EnableCreate = false + suite.app.EvmKeeper.SetParams(suite.ctx, params) + ctorArgs, _ := contracts.ERC20MinterBurnerDecimalsContract.ABI.Pack("", "test", "test", uint8(18)) + data := append(contracts.ERC20MinterBurnerDecimalsContract.Bin, ctorArgs...) + return data, nil + }, + false, + }, + } + + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset + + data, contract := tc.malleate() + + res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, tc.from, contract, data, true) + if tc.expPass { + suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *KeeperTestSuite) TestForceFail() { + var mockEVMKeeper *MockEVMKeeper + erc20 := contracts.ERC20MinterBurnerDecimalsContract.ABI + testCases := []struct { + name string + malleate func() + commit bool + expPass bool + }{ + { + "Force estimate gas error", + func() { + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced EstimateGas error")) + }, + true, + false, + }, + { + "Force ApplyMessage error", + func() { + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + }, + true, + false, + }, + { + "Force ApplyMessage failed", + func() { + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "SomeError"}, nil) + }, + true, + false, + }, + } + + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset + mockEVMKeeper = &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + tc.malleate() + + contract, err := suite.DeployContract("coin", "token", erc20Decimals) + suite.Require().NoError(err) + account := tests.GenerateAddress() + data, _ := erc20.Pack("balanceOf", account) + + res, err := suite.app.Erc20Keeper.CallEVMWithData(suite.ctx, types.ModuleAddress, &contract, data, tc.commit) + if tc.expPass { + suite.Require().IsTypef(&evmtypes.MsgEthereumTxResponse{}, res, tc.name) + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *KeeperTestSuite) TestQueryERC20ForceFail() { + var mockEVMKeeper *MockEVMKeeper + contract := tests.GenerateAddress() + testCases := []struct { + name string + malleate func() + res bool + }{ + { + "Failed to call Evm", + func() { + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + }, + false, + }, + { + "Incorrect res", + func() { + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() + }, + false, + }, + { + "Correct res for name - incorrect for symbol", + func() { + ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() + }, + false, + }, + { + "incorrect symbol res", + func() { + ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() + }, + false, + }, + { + "Correct res for name - incorrect for symbol", + func() { + ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{VmError: "Error"}, nil).Once() + }, + false, + }, + { + "incorrect symbol res", + func() { + ret := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 111, 105, 110, 32, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + retSymbol := []uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 67, 84, 75, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: ret}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: retSymbol}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: []uint8{0, 0}}, nil).Once() + }, + false, + }, + } + for _, tc := range testCases { + suite.SetupTest() // reset + mockEVMKeeper = &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + tc.malleate() + + res, err := suite.app.Erc20Keeper.QueryERC20(suite.ctx, contract) + if tc.res { + suite.Require().NoError(err) + suite.Require().Equal( + types.ERC20Data{Name: "coin", Symbol: "token", Decimals: erc20Decimals}, + res, + ) + } else { + suite.Require().Error(err) + } + } +} diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index a314ba3a1..d4ad59a32 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -1,311 +1,310 @@ package keeper_test -// -//import ( -// "context" -// "fmt" -// "math/big" -// -// "github.com/cosmos/cosmos-sdk/client/tx" -// sdk "github.com/cosmos/cosmos-sdk/types" -// "github.com/cosmos/cosmos-sdk/types/tx/signing" -// "github.com/ethereum/go-ethereum/common" -// . "github.com/onsi/ginkgo/v2" -// . "github.com/onsi/gomega" -// -// abci "github.com/cometbft/cometbft/abci/types" -// "github.com/evmos/ethermint/crypto/ethsecp256k1" -// "github.com/evmos/ethermint/encoding" -// ethermint "github.com/evmos/ethermint/types" -// -// "github.com/Canto-Network/Canto/v7/testutil" -// "github.com/Canto-Network/Canto/v7/x/erc20" -// "github.com/Canto-Network/Canto/v7/x/erc20/types" -// -// sdkmath "cosmossdk.io/math" -// authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" -//) -// -//var _ = Describe("Performing EVM transactions", Ordered, func() { -// BeforeEach(func() { -// s.SetupTest() -// -// params := s.app.Erc20Keeper.GetParams(s.ctx) -// params.EnableEVMHook = true -// params.EnableErc20 = true -// s.app.Erc20Keeper.SetParams(s.ctx, params) -// }) -// -// // Epoch mechanism for triggering allocation and distribution -// Context("with the ERC20 module and EVM Hook disabled", func() { -// BeforeEach(func() { -// params := s.app.Erc20Keeper.GetParams(s.ctx) -// params.EnableEVMHook = false -// params.EnableErc20 = false -// s.app.Erc20Keeper.SetParams(s.ctx, params) -// }) -// It("should be successful", func() { -// _, err := s.DeployContract("coin", "token", erc20Decimals) -// Expect(err).To(BeNil()) -// }) -// }) -// -// Context("with the ERC20 module disabled", func() { -// BeforeEach(func() { -// params := s.app.Erc20Keeper.GetParams(s.ctx) -// params.EnableErc20 = false -// s.app.Erc20Keeper.SetParams(s.ctx, params) -// }) -// It("should be successful", func() { -// _, err := s.DeployContract("coin", "token", erc20Decimals) -// Expect(err).To(BeNil()) -// }) -// }) -// -// Context("with the EVMHook disabled", func() { -// BeforeEach(func() { -// params := s.app.Erc20Keeper.GetParams(s.ctx) -// params.EnableEVMHook = false -// s.app.Erc20Keeper.SetParams(s.ctx, params) -// }) -// It("should be successful", func() { -// _, err := s.DeployContract("coin", "token", erc20Decimals) -// Expect(err).To(BeNil()) -// }) -// }) -// -// Context("with the ERC20 module and EVM Hook enabled", func() { -// It("should be successful", func() { -// _, err := s.DeployContract("coin", "token", erc20Decimals) -// Expect(err).To(BeNil()) -// }) -// }) -//}) -// -//var _ = Describe("ERC20: Converting", Ordered, func() { -// amt := sdkmath.NewInt(100) -// priv, _ := ethsecp256k1.GenerateKey() -// addrBz := priv.PubKey().Address().Bytes() -// accAddr := sdk.AccAddress(addrBz) -// addr := common.BytesToAddress(addrBz) -// moduleAcc := s.app.AccountKeeper.GetModuleAccount(s.ctx, types.ModuleName).GetAddress() -// -// var ( -// pair *types.TokenPair -// tokenPair types.TokenPair -// coin sdk.Coin -// ) -// -// BeforeEach(func() { -// s.SetupTest() -// }) -// -// Context("with a registered coin", func() { -// BeforeEach(func() { -// _, pair = s.setupRegisterCoin() -// coin = sdk.NewCoin(pair.Denom, amt) -// -// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom -// denom := "acanto" -// -// err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.TokensFromConsensusPower(100, ethermint.PowerReduction)))) -// s.Require().NoError(err) -// err = testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(coin)) -// s.Require().NoError(err) -// }) -// -// Describe("a Cosmos coin into an ERC20 token", func() { -// BeforeEach(func() { -// convertCoin(priv, coin) -// }) -// -// It("should decrease coins on the sender account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) -// Expect(balanceCoin.IsZero()).To(BeTrue()) -// }) -// -// It("should escrow coins on the module account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) -// Expect(balanceCoin).To(Equal(coin)) -// }) -// -// It("should mint tokens and send to receiver", func() { -// balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) -// }) -// }) -// -// Describe("an ERC20 token into a Cosmos coin", func() { -// BeforeEach(func() { -// convertCoin(priv, coin) -// s.Commit() -// convertERC20(priv, amt, pair.GetERC20Contract()) -// }) -// -// It("should increase coins on the sender account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) -// Expect(balanceCoin).To(Equal(coin)) -// }) -// -// It("should unescrow coins on the module account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) -// Expect(balanceCoin.IsZero()).To(BeTrue()) -// }) -// -// It("should burn the receiver's token", func() { -// balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(int64(0))) -// }) -// }) -// }) -// -// Context("with a registered ERC20", func() { -// BeforeEach(func() { -// contract := s.setupRegisterERC20Pair(contractMinterBurner) -// id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) -// tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) -// coin = sdk.NewCoin(tokenPair.Denom, amt) -// -// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom -// denom := "acanto" //use default denom for claimsDenom -// -// err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) -// s.Require().NoError(err) -// -// _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) -// s.Commit() -// }) -// -// Describe("an ERC20 token into a Cosmos coin", func() { -// BeforeEach(func() { -// convertERC20(priv, amt, tokenPair.GetERC20Contract()) -// }) -// -// It("should decrease tokens on the sender account", func() { -// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(int64(0))) -// }) -// -// It("should escrow tokens on the module account", func() { -// moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) -// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) -// }) -// -// It("should send coins to the recevier account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) -// Expect(balanceCoin).To(Equal(coin)) -// }) -// }) -// -// Describe("a Cosmos coin into an ERC20 token", func() { -// BeforeEach(func() { -// convertERC20(priv, amt, tokenPair.GetERC20Contract()) -// s.Commit() -// convertCoin(priv, coin) -// }) -// -// It("should increase tokens on the sender account", func() { -// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) -// }) -// -// It("should unescrow tokens on the module account", func() { -// moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) -// balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) -// Expect(balanceERC20.Int64()).To(Equal(int64(0))) -// }) -// -// It("should burn coins to the recevier account", func() { -// balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) -// Expect(balanceCoin.IsZero()).To(BeTrue()) -// }) -// }) -// }) -//}) -// -//func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { -// addrBz := priv.PubKey().Address().Bytes() -// -// convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) -// _, err := finalizeBlock(priv, convertCoinMsg) -// s.Require().NoError(err) -//} -// -//func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { -// addrBz := priv.PubKey().Address().Bytes() -// -// convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) -// _, err := finalizeBlock(priv, convertERC20Msg) -// s.Require().NoError(err) -//} -// -//func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseFinalizeBlock, error) { -// txConfig := s.app.TxConfig() -// encodingConfig := encoding.MakeTestEncodingConfig(erc20.AppModule{}) -// -// accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) -// // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom -// denom := "acanto" -// -// txBuilder := encodingConfig.TxConfig.NewTxBuilder() -// -// txBuilder.SetGasLimit(10_000_000) -// txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewIntWithDecimal(1, 16)}}) -// err := txBuilder.SetMsgs(msgs...) -// s.Require().NoError(err) -// -// seq, err := s.app.AccountKeeper.GetSequence(s.ctx, accountAddress) -// s.Require().NoError(err) -// -// // First round: we gather all the signer infos. We use the "set empty -// // signature" hack to do that. -// sigV2 := signing.SignatureV2{ -// PubKey: priv.PubKey(), -// Data: &signing.SingleSignatureData{ -// SignMode: signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), -// Signature: nil, -// }, -// Sequence: seq, -// } -// -// sigsV2 := []signing.SignatureV2{sigV2} -// -// err = txBuilder.SetSignatures(sigsV2...) -// s.Require().NoError(err) -// -// // Second round: all signer infos are set, so each signer can sign. -// accNumber := s.app.AccountKeeper.GetAccount(s.ctx, accountAddress).GetAccountNumber() -// signerData := authsigning.SignerData{ -// ChainID: s.ctx.ChainID(), -// AccountNumber: accNumber, -// Sequence: seq, -// PubKey: priv.PubKey(), -// } -// sigV2, err = tx.SignWithPrivKey( -// context.TODO(), -// signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), signerData, -// txBuilder, priv, encodingConfig.TxConfig, -// seq, -// ) -// s.Require().NoError(err) -// -// sigsV2 = []signing.SignatureV2{sigV2} -// err = txBuilder.SetSignatures(sigsV2...) -// s.Require().NoError(err) -// -// bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) -// s.Require().NoError(err) -// -// test, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) -// s.Require().NoError(err) -// fmt.Println(string(test)) -// -// res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ -// Height: s.app.LastBlockHeight() + 1, -// Txs: [][]byte{bz}, -// ProposerAddress: s.consAddress.Bytes(), -// }) -// -// return res, err -//} +import ( + "context" + "fmt" + "math/big" + + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + "github.com/ethereum/go-ethereum/common" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + abci "github.com/cometbft/cometbft/abci/types" + "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/encoding" + ethermint "github.com/evmos/ethermint/types" + + "github.com/Canto-Network/Canto/v7/testutil" + "github.com/Canto-Network/Canto/v7/x/erc20" + "github.com/Canto-Network/Canto/v7/x/erc20/types" + + sdkmath "cosmossdk.io/math" + authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" +) + +var _ = Describe("Performing EVM transactions", Ordered, func() { + BeforeEach(func() { + s.SetupTest() + + params := s.app.Erc20Keeper.GetParams(s.ctx) + params.EnableEVMHook = true + params.EnableErc20 = true + s.app.Erc20Keeper.SetParams(s.ctx, params) + }) + + // Epoch mechanism for triggering allocation and distribution + Context("with the ERC20 module and EVM Hook disabled", func() { + BeforeEach(func() { + params := s.app.Erc20Keeper.GetParams(s.ctx) + params.EnableEVMHook = false + params.EnableErc20 = false + s.app.Erc20Keeper.SetParams(s.ctx, params) + }) + It("should be successful", func() { + _, err := s.DeployContract("coin", "token", erc20Decimals) + Expect(err).To(BeNil()) + }) + }) + + Context("with the ERC20 module disabled", func() { + BeforeEach(func() { + params := s.app.Erc20Keeper.GetParams(s.ctx) + params.EnableErc20 = false + s.app.Erc20Keeper.SetParams(s.ctx, params) + }) + It("should be successful", func() { + _, err := s.DeployContract("coin", "token", erc20Decimals) + Expect(err).To(BeNil()) + }) + }) + + Context("with the EVMHook disabled", func() { + BeforeEach(func() { + params := s.app.Erc20Keeper.GetParams(s.ctx) + params.EnableEVMHook = false + s.app.Erc20Keeper.SetParams(s.ctx, params) + }) + It("should be successful", func() { + _, err := s.DeployContract("coin", "token", erc20Decimals) + Expect(err).To(BeNil()) + }) + }) + + Context("with the ERC20 module and EVM Hook enabled", func() { + It("should be successful", func() { + _, err := s.DeployContract("coin", "token", erc20Decimals) + Expect(err).To(BeNil()) + }) + }) +}) + +var _ = Describe("ERC20: Converting", Ordered, func() { + amt := sdkmath.NewInt(100) + priv, _ := ethsecp256k1.GenerateKey() + addrBz := priv.PubKey().Address().Bytes() + accAddr := sdk.AccAddress(addrBz) + addr := common.BytesToAddress(addrBz) + moduleAcc := s.app.AccountKeeper.GetModuleAccount(s.ctx, types.ModuleName).GetAddress() + + var ( + pair *types.TokenPair + tokenPair types.TokenPair + coin sdk.Coin + ) + + BeforeEach(func() { + s.SetupTest() + }) + + Context("with a registered coin", func() { + BeforeEach(func() { + _, pair = s.setupRegisterCoin() + coin = sdk.NewCoin(pair.Denom, amt) + + // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom + denom := "acanto" + + err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.TokensFromConsensusPower(100, ethermint.PowerReduction)))) + s.Require().NoError(err) + err = testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(coin)) + s.Require().NoError(err) + }) + + Describe("a Cosmos coin into an ERC20 token", func() { + BeforeEach(func() { + convertCoin(priv, coin) + }) + + It("should decrease coins on the sender account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) + Expect(balanceCoin.IsZero()).To(BeTrue()) + }) + + It("should escrow coins on the module account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) + Expect(balanceCoin).To(Equal(coin)) + }) + + It("should mint tokens and send to receiver", func() { + balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) + }) + }) + + Describe("an ERC20 token into a Cosmos coin", func() { + BeforeEach(func() { + convertCoin(priv, coin) + s.Commit() + convertERC20(priv, amt, pair.GetERC20Contract()) + }) + + It("should increase coins on the sender account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, pair.Denom) + Expect(balanceCoin).To(Equal(coin)) + }) + + It("should unescrow coins on the module account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, moduleAcc, pair.Denom) + Expect(balanceCoin.IsZero()).To(BeTrue()) + }) + + It("should burn the receiver's token", func() { + balanceERC20 := s.BalanceOf(pair.GetERC20Contract(), addr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(int64(0))) + }) + }) + }) + + Context("with a registered ERC20", func() { + BeforeEach(func() { + contract := s.setupRegisterERC20Pair(contractMinterBurner) + id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) + tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) + coin = sdk.NewCoin(tokenPair.Denom, amt) + + // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom + denom := "acanto" //use default denom for claimsDenom + + err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) + s.Require().NoError(err) + + _ = s.MintERC20Token(contract, s.address, addr, big.NewInt(amt.Int64())) + s.Commit() + }) + + Describe("an ERC20 token into a Cosmos coin", func() { + BeforeEach(func() { + convertERC20(priv, amt, tokenPair.GetERC20Contract()) + }) + + It("should decrease tokens on the sender account", func() { + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(int64(0))) + }) + + It("should escrow tokens on the module account", func() { + moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) + }) + + It("should send coins to the recevier account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) + Expect(balanceCoin).To(Equal(coin)) + }) + }) + + Describe("a Cosmos coin into an ERC20 token", func() { + BeforeEach(func() { + convertERC20(priv, amt, tokenPair.GetERC20Contract()) + s.Commit() + convertCoin(priv, coin) + }) + + It("should increase tokens on the sender account", func() { + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), addr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(amt.Int64())) + }) + + It("should unescrow tokens on the module account", func() { + moduleAddr := common.BytesToAddress(moduleAcc.Bytes()) + balanceERC20 := s.BalanceOf(tokenPair.GetERC20Contract(), moduleAddr).(*big.Int) + Expect(balanceERC20.Int64()).To(Equal(int64(0))) + }) + + It("should burn coins to the recevier account", func() { + balanceCoin := s.app.BankKeeper.GetBalance(s.ctx, accAddr, tokenPair.Denom) + Expect(balanceCoin.IsZero()).To(BeTrue()) + }) + }) + }) +}) + +func convertCoin(priv *ethsecp256k1.PrivKey, coin sdk.Coin) { + addrBz := priv.PubKey().Address().Bytes() + + convertCoinMsg := types.NewMsgConvertCoin(coin, common.BytesToAddress(addrBz), sdk.AccAddress(addrBz)) + _, err := finalizeBlock(priv, convertCoinMsg) + s.Require().NoError(err) +} + +func convertERC20(priv *ethsecp256k1.PrivKey, amt sdkmath.Int, contract common.Address) { + addrBz := priv.PubKey().Address().Bytes() + + convertERC20Msg := types.NewMsgConvertERC20(amt, sdk.AccAddress(addrBz), contract, common.BytesToAddress(addrBz)) + _, err := finalizeBlock(priv, convertERC20Msg) + s.Require().NoError(err) +} + +func finalizeBlock(priv *ethsecp256k1.PrivKey, msgs ...sdk.Msg) (*abci.ResponseFinalizeBlock, error) { + txConfig := s.app.TxConfig() + encodingConfig := encoding.MakeTestEncodingConfig(erc20.AppModule{}) + + accountAddress := sdk.AccAddress(priv.PubKey().Address().Bytes()) + // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom + denom := "acanto" + + txBuilder := encodingConfig.TxConfig.NewTxBuilder() + + txBuilder.SetGasLimit(10_000_000) + txBuilder.SetFeeAmount(sdk.Coins{{Denom: denom, Amount: sdkmath.NewIntWithDecimal(1, 16)}}) + err := txBuilder.SetMsgs(msgs...) + s.Require().NoError(err) + + seq, err := s.app.AccountKeeper.GetSequence(s.ctx, accountAddress) + s.Require().NoError(err) + + // First round: we gather all the signer infos. We use the "set empty + // signature" hack to do that. + sigV2 := signing.SignatureV2{ + PubKey: priv.PubKey(), + Data: &signing.SingleSignatureData{ + SignMode: signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), + Signature: nil, + }, + Sequence: seq, + } + + sigsV2 := []signing.SignatureV2{sigV2} + + err = txBuilder.SetSignatures(sigsV2...) + s.Require().NoError(err) + + // Second round: all signer infos are set, so each signer can sign. + accNumber := s.app.AccountKeeper.GetAccount(s.ctx, accountAddress).GetAccountNumber() + signerData := authsigning.SignerData{ + ChainID: s.ctx.ChainID(), + AccountNumber: accNumber, + Sequence: seq, + PubKey: priv.PubKey(), + } + sigV2, err = tx.SignWithPrivKey( + context.TODO(), + signing.SignMode(encodingConfig.TxConfig.SignModeHandler().DefaultMode()), signerData, + txBuilder, priv, encodingConfig.TxConfig, + seq, + ) + s.Require().NoError(err) + + sigsV2 = []signing.SignatureV2{sigV2} + err = txBuilder.SetSignatures(sigsV2...) + s.Require().NoError(err) + + bz, err := txConfig.TxEncoder()(txBuilder.GetTx()) + s.Require().NoError(err) + + test, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) + s.Require().NoError(err) + fmt.Println(string(test)) + + res, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: s.app.LastBlockHeight() + 1, + Txs: [][]byte{bz}, + ProposerAddress: s.consAddress.Bytes(), + }) + + return res, err +} diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 57ce14443..9b4c0b034 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -1,1303 +1,1372 @@ package keeper_test -// -//func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// malleate func(common.Address) -// extra func() -// expPass bool -// selfdestructed bool -// }{ -// { -// "ok - sufficient funds", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// true, -// false, -// }, -// { -// "ok - equal funds", -// 10, -// 10, -// func(common.Address) {}, -// func() {}, -// true, -// false, -// }, -// { -// "ok - suicided contract", -// 10, -// 10, -// func(erc20 common.Address) { -// stateDb := suite.StateDB() -// ok := stateDb.Suicide(erc20) -// suite.Require().True(ok) -// suite.Require().NoError(stateDb.Commit()) -// }, -// func() {}, -// true, -// true, -// }, -// { -// "fail - insufficient funds", -// 0, -// 10, -// func(common.Address) {}, -// func() {}, -// false, -// false, -// }, -// { -// "fail - minting disabled", -// 100, -// 10, -// func(common.Address) { -// params := types.DefaultParams() -// params.EnableErc20 = false -// suite.app.Erc20Keeper.SetParams(suite.ctx, params) -// }, -// func() {}, -// false, -// false, -// }, -// { -// "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, false, false, -// }, -// { -// "fail - force evm fail", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// { -// "fail - force evm balance error", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// { -// "fail - force balance error", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// metadata, pair := suite.setupRegisterCoin() -// suite.Require().NotNil(metadata) -// erc20 := pair.GetERC20Contract() -// tc.malleate(erc20) -// suite.Commit() -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) -// sender := sdk.AccAddress(suite.address.Bytes()) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// -// tc.extra() -// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// expRes := &types.MsgConvertCoinResponse{} -// suite.Commit() -// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// -// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) -// if tc.selfdestructed { -// suite.Require().Nil(acc, "expected contract to be destroyed") -// } else { -// suite.Require().NotNil(acc) -// } -// -// if tc.selfdestructed || !acc.IsContract() { -// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) -// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// suite.Require().False(found) -// } else { -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) -// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) -// } -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// reconvert int64 -// malleate func() -// expPass bool -// }{ -// {"ok - sufficient funds", 100, 10, 5, func() {}, true}, -// {"ok - equal funds", 10, 10, 10, func() {}, true}, -// {"fail - insufficient funds", 10, 1, 5, func() {}, false}, -// {"fail ", 10, 1, -5, func() {}, false}, -// { -// "fail - deleted module account - force fail", 100, 10, 5, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, -// false, -// }, -// { -// "fail - force evm fail", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail second balance", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail second balance", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail unescrow", 100, 10, 5, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) -// }, -// false, -// }, -// { -// "fail - force fail balance after transfer", 100, 10, 5, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdkmath.OneInt()}) -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// metadata, pair := suite.setupRegisterCoin() -// suite.Require().NotNil(metadata) -// suite.Require().NotNil(pair) -// -// // Precondition: Convert Coin to ERC20 -// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) -// sender := sdk.AccAddress(suite.address.Bytes()) -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// suite.Require().NoError(err, tc.name) -// suite.Commit() -// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) -// suite.Require().Equal(balance, big.NewInt(tc.burn)) -// -// // Convert ERC20s back to Coins -// ctx = sdk.WrapSDKContext(suite.ctx) -// contractAddr := common.HexToAddress(pair.Erc20Address) -// msgConvertERC20 := types.NewMsgConvertERC20( -// sdkmath.NewInt(tc.reconvert), -// sender, -// contractAddr, -// suite.address, -// ) -// -// tc.malleate() -// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) -// expRes := &types.MsgConvertERC20Response{} -// suite.Commit() -// balance = suite.BalanceOf(contractAddr, suite.address) -// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) -// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { -// var contractAddr common.Address -// var coinName string -// -// testCases := []struct { -// name string -// mint int64 -// transfer int64 -// malleate func(common.Address) -// extra func() -// contractType int -// expPass bool -// selfdestructed bool -// }{ -// { -// "ok - sufficient funds", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// true, -// false, -// }, -// { -// "ok - equal funds", -// 10, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// true, -// false, -// }, -// { -// "ok - equal funds", -// 10, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// true, -// false, -// }, -// { -// "ok - suicided contract", -// 10, -// 10, -// func(erc20 common.Address) { -// stateDb := suite.StateDB() -// ok := stateDb.Suicide(erc20) -// suite.Require().True(ok) -// suite.Require().NoError(stateDb.Commit()) -// }, -// func() {}, -// contractMinterBurner, -// true, -// true, -// }, -// { -// "fail - insufficient funds - callEVM", -// 0, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - minting disabled", -// 100, -// 10, -// func(common.Address) { -// params := types.DefaultParams() -// params.EnableErc20 = false -// suite.app.Erc20Keeper.SetParams(suite.ctx, params) -// }, -// func() {}, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - direct balance manipulation contract", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// contractDirectBalanceManipulation, -// false, -// false, -// }, -// { -// "fail - delayed malicious contract", -// 10, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMaliciousDelayed, -// false, -// false, -// }, -// { -// "fail - negative transfer contract", -// 10, -// -10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - no module address", -// 100, -// 10, -// func(common.Address) { -// }, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force evm fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force get balance fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// balance[31] = uint8(1) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced balance error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force transfer unpack fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// -// { -// "fail - force invalid transfer fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force mint fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) -// -// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force send minted fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) -// -// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// { -// "fail - force bank balance fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) -// -// mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdkmath.NewInt(int64(10))}) -// }, -// contractMinterBurner, -// false, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// -// contractAddr = suite.setupRegisterERC20Pair(tc.contractType) -// -// tc.malleate(contractAddr) -// suite.Require().NotNil(contractAddr) -// suite.Commit() -// -// coinName = types.CreateDenom(contractAddr.String()) -// sender := sdk.AccAddress(suite.address.Bytes()) -// msg := types.NewMsgConvertERC20( -// sdkmath.NewInt(tc.transfer), -// sender, -// contractAddr, -// suite.address, -// ) -// -// suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint)) -// suite.Commit() -// ctx := suite.ctx -// -// tc.extra() -// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg) -// -// expRes := &types.MsgConvertERC20Response{} -// suite.Commit() -// balance := suite.BalanceOf(contractAddr, suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// -// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, contractAddr) -// if tc.selfdestructed { -// suite.Require().Nil(acc, "expected contract to be destroyed") -// } else { -// suite.Require().NotNil(acc) -// } -// -// if tc.selfdestructed || !acc.IsContract() { -// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) -// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// suite.Require().False(found) -// } else { -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.transfer)) -// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64()) -// } -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { -// var contractAddr common.Address -// -// testCases := []struct { -// name string -// mint int64 -// convert int64 -// malleate func(common.Address) -// extra func() -// contractType int -// expPass bool -// }{ -// { -// "ok - sufficient funds", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// true, -// }, -// { -// "ok - equal funds", -// 100, -// 100, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// true, -// }, -// { -// "fail - insufficient funds", -// 100, -// 200, -// func(common.Address) {}, -// func() {}, -// contractMinterBurner, -// false, -// }, -// { -// "fail - direct balance manipulation contract", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// contractDirectBalanceManipulation, -// false, -// }, -// { -// "fail - malicious delayed contract", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// contractMaliciousDelayed, -// false, -// }, -// { -// "fail - deleted module address - force fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, -// contractMinterBurner, -// false, -// }, -// { -// "fail - force evm fail", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// }, -// { -// "fail - force invalid transfer", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// }, -// { -// "fail - force fail second balance", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// balance[31] = uint8(1) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("fail second balance")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// }, -// { -// "fail - force fail transfer", -// 100, -// 10, -// func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// contractMinterBurner, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// contractAddr = suite.setupRegisterERC20Pair(tc.contractType) -// suite.Require().NotNil(contractAddr) -// -// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) -// pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) -// coinName := types.CreateDenom(contractAddr.String()) -// sender := sdk.AccAddress(suite.address.Bytes()) -// -// // Precondition: Mint Coins to convert on sender account -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) -// suite.Require().Equal(sdkmath.NewInt(tc.mint), cosmosBalance.Amount) -// -// // Precondition: Mint escrow tokens on module account -// suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE") -// suite.MintERC20Token(contractAddr, types.ModuleAddress, types.ModuleAddress, big.NewInt(tc.mint)) -// tokenBalance := suite.BalanceOf(contractAddr, types.ModuleAddress) -// suite.Require().Equal(big.NewInt(tc.mint), tokenBalance) -// -// tc.malleate(contractAddr) -// suite.Commit() -// -// // Convert Coins back to ERC20s -// receiver := suite.address -// ctx := sdk.WrapSDKContext(suite.ctx) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(coinName, sdkmath.NewInt(tc.convert)), -// receiver, -// sender, -// ) -// -// tc.extra() -// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// -// expRes := &types.MsgConvertCoinResponse{} -// suite.Commit() -// tokenBalance = suite.BalanceOf(contractAddr, suite.address) -// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(sdkmath.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) -// suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int)) -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// reconvert int64 -// expPass bool -// }{ -// {"ok - sufficient funds", 100, 10, 5, true}, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// metadata, pair := suite.setupRegisterCoin() -// suite.Require().NotNil(metadata) -// suite.Require().NotNil(pair) -// -// // Precondition: Convert Coin to ERC20 -// coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) -// sender := sdk.AccAddress(suite.address.Bytes()) -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// pair.ContractOwner = types.OWNER_UNSPECIFIED -// suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// suite.Require().Error(err, tc.name) -// -// // Convert ERC20s back to Coins -// ctx = sdk.WrapSDKContext(suite.ctx) -// contractAddr := common.HexToAddress(pair.Erc20Address) -// msgConvertERC20 := types.NewMsgConvertERC20( -// sdkmath.NewInt(tc.reconvert), -// sender, -// contractAddr, -// suite.address, -// ) -// -// _, err = suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) -// suite.Require().Error(err, tc.name) -// }) -// } -//} -// -//func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// malleate func(common.Address) -// extra func() -// expPass bool -// selfdestructed bool -// }{ -// { -// "ok - sufficient funds", -// 100, -// 10, -// func(common.Address) {}, -// func() {}, -// true, -// false, -// }, -// { -// "ok - equal funds", -// 10, -// 10, -// func(common.Address) {}, -// func() {}, -// true, -// false, -// }, -// { -// "ok - suicided contract", -// 10, -// 10, -// func(erc20 common.Address) { -// stateDb := suite.StateDB() -// ok := stateDb.Suicide(erc20) -// suite.Require().True(ok) -// suite.Require().NoError(stateDb.Commit()) -// }, -// func() {}, -// true, -// true, -// }, -// { -// "fail - insufficient funds", -// 0, -// 10, -// func(common.Address) {}, -// func() {}, -// false, -// false, -// }, -// { -// "fail - minting disabled", -// 100, -// 10, -// func(common.Address) { -// params := types.DefaultParams() -// params.EnableErc20 = false -// suite.app.Erc20Keeper.SetParams(suite.ctx, params) -// }, -// func() {}, -// false, -// false, -// }, -// { -// "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, false, false, -// }, -// { -// "fail - force evm fail", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// { -// "fail - force evm balance error", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// { -// "fail - force balance error", 100, 10, func(common.Address) {}, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, false, false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// metadata, pair := suite.setupRegisterIBCVoucher() -// suite.Require().NotNil(metadata) -// erc20 := pair.GetERC20Contract() -// tc.malleate(erc20) -// suite.Commit() -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) -// sender := sdk.AccAddress(suite.address.Bytes()) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// -// tc.extra() -// res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// expRes := &types.MsgConvertCoinResponse{} -// suite.Commit() -// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// -// acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) -// if tc.selfdestructed { -// suite.Require().Nil(acc, "expected contract to be destroyed") -// } else { -// suite.Require().NotNil(acc) -// } -// -// if tc.selfdestructed || !acc.IsContract() { -// id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) -// _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// suite.Require().False(found) -// } else { -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) -// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) -// } -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} -// -//func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { -// testCases := []struct { -// name string -// mint int64 -// burn int64 -// reconvert int64 -// malleate func() -// expPass bool -// }{ -// {"ok - sufficient funds", 100, 10, 5, func() {}, true}, -// {"ok - equal funds", 10, 10, 10, func() {}, true}, -// {"fail - insufficient funds", 10, 1, 5, func() {}, false}, -// {"fail ", 10, 1, -5, func() {}, false}, -// { -// "fail - deleted module account - force fail", 100, 10, 5, -// func() { -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, -// false, -// }, -// { -// "fail - force evm fail", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail second balance", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail second balance", 100, 10, 5, -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// -// existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} -// balance := make([]uint8, 32) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// // first balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // convert coin -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() -// // second balance of -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() -// // Extra call on test -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) -// mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) -// }, -// false, -// }, -// { -// "fail - force fail unescrow", 100, 10, 5, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) -// -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) -// }, -// false, -// }, -// { -// "fail - force fail balance after transfer", 100, 10, 5, -// func() { -// mockBankKeeper := &MockBankKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper) -// -// mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) -// mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) -// mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdkmath.OneInt()}) -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.mintFeeCollector = true -// suite.SetupTest() -// metadata, pair := suite.setupRegisterIBCVoucher() -// suite.Require().NotNil(metadata) -// suite.Require().NotNil(pair) -// -// // Precondition: Convert Coin to ERC20 -// coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) -// sender := sdk.AccAddress(suite.address.Bytes()) -// suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) -// suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) -// msg := types.NewMsgConvertCoin( -// sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), -// suite.address, -// sender, -// ) -// -// ctx := sdk.WrapSDKContext(suite.ctx) -// _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) -// suite.Require().NoError(err, tc.name) -// suite.Commit() -// balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) -// cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) -// suite.Require().Equal(balance, big.NewInt(tc.burn)) -// -// // Convert ERC20s back to Coins -// ctx = sdk.WrapSDKContext(suite.ctx) -// contractAddr := common.HexToAddress(pair.Erc20Address) -// msgConvertERC20 := types.NewMsgConvertERC20( -// sdkmath.NewInt(tc.reconvert), -// sender, -// contractAddr, -// suite.address, -// ) -// -// tc.malleate() -// res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) -// expRes := &types.MsgConvertERC20Response{} -// suite.Commit() -// balance = suite.BalanceOf(contractAddr, suite.address) -// cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// suite.Require().Equal(expRes, res) -// suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) -// suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -// suite.mintFeeCollector = false -//} +import ( + "fmt" + "math/big" + + sdkmath "cosmossdk.io/math" + "github.com/Canto-Network/Canto/v7/x/erc20/keeper" + "github.com/Canto-Network/Canto/v7/x/erc20/types" + inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/ethereum/go-ethereum/common" + "github.com/evmos/ethermint/x/evm/statedb" + evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/stretchr/testify/mock" +) + +const ( + contractMinterBurner = iota + 1 + contractDirectBalanceManipulation + contractMaliciousDelayed +) + +func (suite *KeeperTestSuite) setupRegisterERC20Pair(contractType int) common.Address { + var contract common.Address + // Deploy contract + switch contractType { + case contractDirectBalanceManipulation: + contract = suite.DeployContractDirectBalanceManipulation(erc20Name, erc20Symbol) + case contractMaliciousDelayed: + contract = suite.DeployContractMaliciousDelayed(erc20Name, erc20Symbol) + default: + contract, _ = suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) + } + suite.Commit() + + _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contract) + suite.Require().NoError(err) + return contract +} + +func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *types.TokenPair) { + suite.SetupTest() + + validMetadata := banktypes.Metadata{ + Description: "ATOM IBC voucher (channel 14)", + Base: ibcBase, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: ibcBase, + Exponent: 0, + }, + }, + Name: "ATOM channel-14", + Symbol: "ibcATOM-14", + Display: ibcBase, + } + + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) + suite.Require().NoError(err) + + // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) + pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) + suite.Require().NoError(err) + suite.Commit() + return validMetadata, pair +} + +func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { + testCases := []struct { + name string + mint int64 + burn int64 + malleate func(common.Address) + extra func() + expPass bool + selfdestructed bool + }{ + { + "ok - sufficient funds", + 100, + 10, + func(common.Address) {}, + func() {}, + true, + false, + }, + { + "ok - equal funds", + 10, + 10, + func(common.Address) {}, + func() {}, + true, + false, + }, + { + "ok - suicided contract", + 10, + 10, + func(erc20 common.Address) { + stateDb := suite.StateDB() + ok := stateDb.Suicide(erc20) + suite.Require().True(ok) + suite.Require().NoError(stateDb.Commit()) + }, + func() {}, + true, + true, + }, + { + "fail - insufficient funds", + 0, + 10, + func(common.Address) {}, + func() {}, + false, + false, + }, + { + "fail - minting disabled", + 100, + 10, + func(common.Address) { + params := types.DefaultParams() + params.EnableErc20 = false + suite.app.Erc20Keeper.SetParams(suite.ctx, params) + }, + func() {}, + false, + false, + }, + { + "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, false, false, + }, + { + "fail - force evm fail", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + { + "fail - force evm balance error", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + { + "fail - force balance error", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + metadata, pair := suite.setupRegisterCoin() + suite.Require().NotNil(metadata) + erc20 := pair.GetERC20Contract() + tc.malleate(erc20) + suite.Commit() + + ctx := sdk.WrapSDKContext(suite.ctx) + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) + sender := sdk.AccAddress(suite.address.Bytes()) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + + tc.extra() + res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + expRes := &types.MsgConvertCoinResponse{} + suite.Commit() + balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + + if tc.expPass { + suite.Require().NoError(err, tc.name) + + acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) + if tc.selfdestructed { + suite.Require().Nil(acc, "expected contract to be destroyed") + } else { + suite.Require().NotNil(acc) + } + + if tc.selfdestructed || !acc.IsContract() { + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) + _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().False(found) + } else { + suite.Require().Equal(expRes, res) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) + } + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { + testCases := []struct { + name string + mint int64 + burn int64 + reconvert int64 + malleate func() + expPass bool + }{ + {"ok - sufficient funds", 100, 10, 5, func() {}, true}, + {"ok - equal funds", 10, 10, 10, func() {}, true}, + {"fail - insufficient funds", 10, 1, 5, func() {}, false}, + {"fail ", 10, 1, -5, func() {}, false}, + { + "fail - deleted module account - force fail", 100, 10, 5, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, + false, + }, + { + "fail - force evm fail", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail second balance", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail second balance", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail unescrow", 100, 10, 5, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) + }, + false, + }, + { + "fail - force fail balance after transfer", 100, 10, 5, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "acoin", Amount: sdkmath.OneInt()}) + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + metadata, pair := suite.setupRegisterCoin() + suite.Require().NotNil(metadata) + suite.Require().NotNil(pair) + + // Precondition: Convert Coin to ERC20 + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) + sender := sdk.AccAddress(suite.address.Bytes()) + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + ctx := sdk.WrapSDKContext(suite.ctx) + _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + suite.Require().NoError(err, tc.name) + suite.Commit() + balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(balance, big.NewInt(tc.burn)) + + // Convert ERC20s back to Coins + ctx = sdk.WrapSDKContext(suite.ctx) + contractAddr := common.HexToAddress(pair.Erc20Address) + msgConvertERC20 := types.NewMsgConvertERC20( + sdkmath.NewInt(tc.reconvert), + sender, + contractAddr, + suite.address, + ) + + tc.malleate() + res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) + expRes := &types.MsgConvertERC20Response{} + suite.Commit() + balance = suite.BalanceOf(contractAddr, suite.address) + cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) + if tc.expPass { + suite.Require().NoError(err, tc.name) + suite.Require().Equal(expRes, res) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) + suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { + var contractAddr common.Address + var coinName string + + testCases := []struct { + name string + mint int64 + transfer int64 + malleate func(common.Address) + extra func() + contractType int + expPass bool + selfdestructed bool + }{ + { + "ok - sufficient funds", + 100, + 10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + true, + false, + }, + { + "ok - equal funds", + 10, + 10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + true, + false, + }, + { + "ok - equal funds", + 10, + 10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + true, + false, + }, + { + "ok - suicided contract", + 10, + 10, + func(erc20 common.Address) { + stateDb := suite.StateDB() + ok := stateDb.Suicide(erc20) + suite.Require().True(ok) + suite.Require().NoError(stateDb.Commit()) + }, + func() {}, + contractMinterBurner, + true, + true, + }, + { + "fail - insufficient funds - callEVM", + 0, + 10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + false, + false, + }, + { + "fail - minting disabled", + 100, + 10, + func(common.Address) { + params := types.DefaultParams() + params.EnableErc20 = false + suite.app.Erc20Keeper.SetParams(suite.ctx, params) + }, + func() {}, + contractMinterBurner, + false, + false, + }, + { + "fail - direct balance manipulation contract", + 100, + 10, + func(common.Address) {}, + func() {}, + contractDirectBalanceManipulation, + false, + false, + }, + { + "fail - delayed malicious contract", + 10, + 10, + func(common.Address) {}, + func() {}, + contractMaliciousDelayed, + false, + false, + }, + { + "fail - negative transfer contract", + 10, + -10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + false, + false, + }, + { + "fail - no module address", + 100, + 10, + func(common.Address) { + }, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force evm fail", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force get balance fail", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + balance[31] = uint8(1) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced balance error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force transfer unpack fail", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + false, + }, + + { + "fail - force invalid transfer fail", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force mint fail", + 100, + 10, + func(common.Address) {}, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force send minted fail", + 100, + 10, + func(common.Address) {}, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) + }, + contractMinterBurner, + false, + false, + }, + { + "fail - force bank balance fail", + 100, + 10, + func(common.Address) {}, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: coinName, Amount: sdkmath.NewInt(int64(10))}) + }, + contractMinterBurner, + false, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + + contractAddr = suite.setupRegisterERC20Pair(tc.contractType) + + tc.malleate(contractAddr) + suite.Require().NotNil(contractAddr) + suite.Commit() + + coinName = keeper.CreateDenom(contractAddr.String()) + sender := sdk.AccAddress(suite.address.Bytes()) + msg := types.NewMsgConvertERC20( + sdkmath.NewInt(tc.transfer), + sender, + contractAddr, + suite.address, + ) + + suite.MintERC20Token(contractAddr, suite.address, suite.address, big.NewInt(tc.mint)) + suite.Commit() + ctx := suite.ctx + + tc.extra() + res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msg) + + expRes := &types.MsgConvertERC20Response{} + suite.Commit() + balance := suite.BalanceOf(contractAddr, suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) + if tc.expPass { + suite.Require().NoError(err, tc.name) + + acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, contractAddr) + if tc.selfdestructed { + suite.Require().Nil(acc, "expected contract to be destroyed") + } else { + suite.Require().NotNil(acc) + } + + if tc.selfdestructed || !acc.IsContract() { + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) + _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().False(found) + } else { + suite.Require().Equal(expRes, res) + suite.Require().Equal(cosmosBalance.Amount, sdkmath.NewInt(tc.transfer)) + suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.mint-tc.transfer).Int64()) + } + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { + var contractAddr common.Address + + testCases := []struct { + name string + mint int64 + convert int64 + malleate func(common.Address) + extra func() + contractType int + expPass bool + }{ + { + "ok - sufficient funds", + 100, + 10, + func(common.Address) {}, + func() {}, + contractMinterBurner, + true, + }, + { + "ok - equal funds", + 100, + 100, + func(common.Address) {}, + func() {}, + contractMinterBurner, + true, + }, + { + "fail - insufficient funds", + 100, + 200, + func(common.Address) {}, + func() {}, + contractMinterBurner, + false, + }, + { + "fail - direct balance manipulation contract", + 100, + 10, + func(common.Address) {}, + func() {}, + contractDirectBalanceManipulation, + false, + }, + { + "fail - malicious delayed contract", + 100, + 10, + func(common.Address) {}, + func() {}, + contractMaliciousDelayed, + false, + }, + { + "fail - deleted module address - force fail", + 100, + 10, + func(common.Address) {}, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, + contractMinterBurner, + false, + }, + { + "fail - force evm fail", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + }, + { + "fail - force invalid transfer", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + }, + { + "fail - force fail second balance", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + balance[31] = uint8(1) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Twice() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("fail second balance")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + }, + { + "fail - force fail transfer", + 100, + 10, + func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + contractMinterBurner, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + contractAddr = suite.setupRegisterERC20Pair(tc.contractType) + suite.Require().NotNil(contractAddr) + + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) + pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) + coinName := keeper.CreateDenom(contractAddr.String()) + sender := sdk.AccAddress(suite.address.Bytes()) + + // Precondition: Mint Coins to convert on sender account + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) + suite.Require().Equal(sdkmath.NewInt(tc.mint), cosmosBalance.Amount) + + // Precondition: Mint escrow tokens on module account + suite.GrantERC20Token(contractAddr, suite.address, types.ModuleAddress, "MINTER_ROLE") + suite.MintERC20Token(contractAddr, types.ModuleAddress, types.ModuleAddress, big.NewInt(tc.mint)) + tokenBalance := suite.BalanceOf(contractAddr, types.ModuleAddress) + suite.Require().Equal(big.NewInt(tc.mint), tokenBalance) + + tc.malleate(contractAddr) + suite.Commit() + + // Convert Coins back to ERC20s + receiver := suite.address + ctx := sdk.WrapSDKContext(suite.ctx) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(coinName, sdkmath.NewInt(tc.convert)), + receiver, + sender, + ) + + tc.extra() + res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + + expRes := &types.MsgConvertCoinResponse{} + suite.Commit() + tokenBalance = suite.BalanceOf(contractAddr, suite.address) + cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, coinName) + if tc.expPass { + suite.Require().NoError(err, tc.name) + suite.Require().Equal(expRes, res) + suite.Require().Equal(sdkmath.NewInt(tc.mint-tc.convert), cosmosBalance.Amount) + suite.Require().Equal(big.NewInt(tc.convert), tokenBalance.(*big.Int)) + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestWrongPairOwnerERC20NativeCoin() { + testCases := []struct { + name string + mint int64 + burn int64 + reconvert int64 + expPass bool + }{ + {"ok - sufficient funds", 100, 10, 5, true}, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + metadata, pair := suite.setupRegisterCoin() + suite.Require().NotNil(metadata) + suite.Require().NotNil(pair) + + // Precondition: Convert Coin to ERC20 + coins := sdk.NewCoins(sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.mint))) + sender := sdk.AccAddress(suite.address.Bytes()) + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(cosmosTokenBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + pair.ContractOwner = types.OWNER_UNSPECIFIED + suite.app.Erc20Keeper.SetTokenPair(suite.ctx, *pair) + + ctx := sdk.WrapSDKContext(suite.ctx) + _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + suite.Require().Error(err, tc.name) + + // Convert ERC20s back to Coins + ctx = sdk.WrapSDKContext(suite.ctx) + contractAddr := common.HexToAddress(pair.Erc20Address) + msgConvertERC20 := types.NewMsgConvertERC20( + sdkmath.NewInt(tc.reconvert), + sender, + contractAddr, + suite.address, + ) + + _, err = suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) + suite.Require().Error(err, tc.name) + }) + } +} + +func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { + testCases := []struct { + name string + mint int64 + burn int64 + malleate func(common.Address) + extra func() + expPass bool + selfdestructed bool + }{ + { + "ok - sufficient funds", + 100, + 10, + func(common.Address) {}, + func() {}, + true, + false, + }, + { + "ok - equal funds", + 10, + 10, + func(common.Address) {}, + func() {}, + true, + false, + }, + { + "ok - suicided contract", + 10, + 10, + func(erc20 common.Address) { + stateDb := suite.StateDB() + ok := stateDb.Suicide(erc20) + suite.Require().True(ok) + suite.Require().NoError(stateDb.Commit()) + }, + func() {}, + true, + true, + }, + { + "fail - insufficient funds", + 0, + 10, + func(common.Address) {}, + func() {}, + false, + false, + }, + { + "fail - minting disabled", + 100, + 10, + func(common.Address) { + params := types.DefaultParams() + params.EnableErc20 = false + suite.app.Erc20Keeper.SetParams(suite.ctx, params) + }, + func() {}, + false, + false, + }, + { + "fail - deleted module account - force fail", 100, 10, func(common.Address) {}, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, false, false, + }, + { + "fail - force evm fail", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + { + "fail - force evm balance error", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + { + "fail - force balance error", 100, 10, func(common.Address) {}, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Times(4) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, false, false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + metadata, pair := suite.setupRegisterIBCVoucher() + suite.Require().NotNil(metadata) + erc20 := pair.GetERC20Contract() + tc.malleate(erc20) + suite.Commit() + + ctx := sdk.WrapSDKContext(suite.ctx) + coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) + sender := sdk.AccAddress(suite.address.Bytes()) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + + tc.extra() + res, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + expRes := &types.MsgConvertCoinResponse{} + suite.Commit() + balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + + if tc.expPass { + suite.Require().NoError(err, tc.name) + + acc := suite.app.EvmKeeper.GetAccountWithoutBalance(suite.ctx, erc20) + if tc.selfdestructed { + suite.Require().Nil(acc, "expected contract to be destroyed") + } else { + suite.Require().NotNil(acc) + } + + if tc.selfdestructed || !acc.IsContract() { + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20.String()) + _, found := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().False(found) + } else { + suite.Require().Equal(expRes, res) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn).Int64()) + } + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} + +func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { + testCases := []struct { + name string + mint int64 + burn int64 + reconvert int64 + malleate func() + expPass bool + }{ + {"ok - sufficient funds", 100, 10, 5, func() {}, true}, + {"ok - equal funds", 10, 10, 10, func() {}, true}, + {"fail - insufficient funds", 10, 1, 5, func() {}, false}, + {"fail ", 10, 1, -5, func() {}, false}, + { + "fail - deleted module account - force fail", 100, 10, 5, + func() { + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, + false, + }, + { + "fail - force evm fail", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail second balance", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, fmt.Errorf("third")).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail second balance", 100, 10, 5, + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} + balance := make([]uint8, 32) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + // first balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // convert coin + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil).Once() + // second balance of + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{Ret: balance}, nil).Once() + // Extra call on test + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&evmtypes.MsgEthereumTxResponse{}, nil) + mockEVMKeeper.On("GetAccountWithoutBalance", mock.Anything, mock.Anything).Return(existingAcc, nil) + }, + false, + }, + { + "fail - force fail unescrow", 100, 10, 5, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: "coin", Amount: sdkmath.OneInt()}) + }, + false, + }, + { + "fail - force fail balance after transfer", 100, 10, 5, + func() { + mockBankKeeper := &MockBankKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + + mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) + mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) + mockBankKeeper.On("GetBalance", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(sdk.Coin{Denom: ibcBase, Amount: sdkmath.OneInt()}) + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.mintFeeCollector = true + suite.SetupTest() + metadata, pair := suite.setupRegisterIBCVoucher() + suite.Require().NotNil(metadata) + suite.Require().NotNil(pair) + + // Precondition: Convert Coin to ERC20 + coins := sdk.NewCoins(sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.mint))) + sender := sdk.AccAddress(suite.address.Bytes()) + suite.app.BankKeeper.MintCoins(suite.ctx, types.ModuleName, coins) + suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, sender, coins) + msg := types.NewMsgConvertCoin( + sdk.NewCoin(ibcBase, sdkmath.NewInt(tc.burn)), + suite.address, + sender, + ) + + ctx := sdk.WrapSDKContext(suite.ctx) + _, err := suite.app.Erc20Keeper.ConvertCoin(ctx, msg) + suite.Require().NoError(err, tc.name) + suite.Commit() + balance := suite.BalanceOf(common.HexToAddress(pair.Erc20Address), suite.address) + cosmosBalance := suite.app.BankKeeper.GetBalance(suite.ctx, sender, metadata.Base) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn).Int64()) + suite.Require().Equal(balance, big.NewInt(tc.burn)) + + // Convert ERC20s back to Coins + ctx = sdk.WrapSDKContext(suite.ctx) + contractAddr := common.HexToAddress(pair.Erc20Address) + msgConvertERC20 := types.NewMsgConvertERC20( + sdkmath.NewInt(tc.reconvert), + sender, + contractAddr, + suite.address, + ) + + tc.malleate() + res, err := suite.app.Erc20Keeper.ConvertERC20(ctx, msgConvertERC20) + expRes := &types.MsgConvertERC20Response{} + suite.Commit() + balance = suite.BalanceOf(contractAddr, suite.address) + cosmosBalance = suite.app.BankKeeper.GetBalance(suite.ctx, sender, pair.Denom) + if tc.expPass { + suite.Require().NoError(err, tc.name) + suite.Require().Equal(expRes, res) + suite.Require().Equal(cosmosBalance.Amount.Int64(), sdkmath.NewInt(tc.mint-tc.burn+tc.reconvert).Int64()) + suite.Require().Equal(balance.(*big.Int).Int64(), big.NewInt(tc.burn-tc.reconvert).Int64()) + } else { + suite.Require().Error(err, tc.name) + } + }) + } + suite.mintFeeCollector = false +} diff --git a/x/erc20/keeper/proposals.go b/x/erc20/keeper/proposals.go deleted file mode 100644 index b55569d4a..000000000 --- a/x/erc20/keeper/proposals.go +++ /dev/null @@ -1 +0,0 @@ -package keeper diff --git a/x/erc20/keeper/proposals_test.go b/x/erc20/keeper/proposals_test.go index eafde8bc2..1ebc679c2 100644 --- a/x/erc20/keeper/proposals_test.go +++ b/x/erc20/keeper/proposals_test.go @@ -1,474 +1,379 @@ package keeper_test -// -//import ( -// "fmt" -// -// sdk "github.com/cosmos/cosmos-sdk/types" -// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" -// "github.com/stretchr/testify/mock" -// -// "github.com/ethereum/go-ethereum/common" -// -// "github.com/evmos/ethermint/tests" -// evmtypes "github.com/evmos/ethermint/x/evm/types" -// -// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" -// "github.com/Canto-Network/Canto/v7/x/erc20/types" -// inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" -//) -// -//const ( -// contractMinterBurner = iota + 1 -// contractDirectBalanceManipulation -// contractMaliciousDelayed -//) -// -//const ( -// erc20Name = "Coin Token" -// erc20Symbol = "CTKN" -// erc20Decimals = uint8(18) -// cosmosTokenBase = "acoin" -// cosmosTokenDisplay = "coin" -// cosmosDecimals = uint8(6) -// defaultExponent = uint32(18) -// zeroExponent = uint32(0) -// ibcBase = "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" -//) -// -//func (suite *KeeperTestSuite) setupRegisterERC20Pair(contractType int) common.Address { -// var contract common.Address -// // Deploy contract -// switch contractType { -// case contractDirectBalanceManipulation: -// contract = suite.DeployContractDirectBalanceManipulation(erc20Name, erc20Symbol) -// case contractMaliciousDelayed: -// contract = suite.DeployContractMaliciousDelayed(erc20Name, erc20Symbol) -// default: -// contract, _ = suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) -// } -// suite.Commit() -// -// _, err := suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contract) -// suite.Require().NoError(err) -// return contract -//} -// -//func (suite *KeeperTestSuite) setupRegisterCoin() (banktypes.Metadata, *types.TokenPair) { -// validMetadata := banktypes.Metadata{ -// Description: "description of the token", -// Base: cosmosTokenBase, -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: cosmosTokenBase, -// Exponent: 0, -// }, -// { -// Denom: cosmosTokenBase[1:], -// Exponent: uint32(18), -// }, -// }, -// Name: cosmosTokenBase, -// Symbol: erc20Symbol, -// Display: cosmosTokenBase, -// } -// -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) -// suite.Require().NoError(err) -// -// // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) -// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) -// suite.Require().NoError(err) -// suite.Commit() -// return validMetadata, pair -//} -// -//func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *types.TokenPair) { -// suite.SetupTest() -// -// validMetadata := banktypes.Metadata{ -// Description: "ATOM IBC voucher (channel 14)", -// Base: ibcBase, -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: ibcBase, -// Exponent: 0, -// }, -// }, -// Name: "ATOM channel-14", -// Symbol: "ibcATOM-14", -// Display: ibcBase, -// } -// -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) -// suite.Require().NoError(err) -// -// // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) -// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) -// suite.Require().NoError(err) -// suite.Commit() -// return validMetadata, pair -//} -// -//func (suite KeeperTestSuite) TestRegisterCoin() { -// metadata := banktypes.Metadata{ -// Description: "description", -// Base: cosmosTokenBase, -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: cosmosTokenBase, -// Exponent: 0, -// }, -// { -// Denom: cosmosTokenDisplay, -// Exponent: defaultExponent, -// }, -// }, -// Name: cosmosTokenBase, -// Symbol: erc20Symbol, -// Display: cosmosTokenDisplay, -// } -// -// testCases := []struct { -// name string -// malleate func() -// expPass bool -// }{ -// { -// "conversion is disabled globally", -// func() { -// params := types.DefaultParams() -// params.EnableErc20 = false -// suite.app.Erc20Keeper.SetParams(suite.ctx, params) -// }, -// false, -// }, -// { -// "denom already registered", -// func() { -// regPair := types.NewTokenPair(tests.GenerateAddress(), metadata.Base, true, types.OWNER_MODULE) -// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, regPair.Denom, regPair.GetID()) -// suite.Commit() -// }, -// false, -// }, -// { -// "token doesn't have supply", -// func() { -// }, -// false, -// }, -// { -// "metadata different that stored", -// func() { -// metadata.Base = cosmosTokenBase -// validMetadata := banktypes.Metadata{ -// Description: "description", -// Base: cosmosTokenBase, -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: cosmosTokenBase, -// Exponent: 0, -// }, -// { -// Denom: cosmosTokenDisplay, -// Exponent: uint32(18), -// }, -// }, -// Name: erc20Name, -// Symbol: erc20Symbol, -// Display: cosmosTokenDisplay, -// } -// -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) -// suite.Require().NoError(err) -// suite.app.BankKeeper.SetDenomMetaData(suite.ctx, validMetadata) -// }, -// false, -// }, -// { -// "evm denom registration - CANTO", -// func() { -// metadata.Base = "CANTO" -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// }, -// false, -// }, -// { -// "evm denom registration - CANTO", -// func() { -// metadata.Base = "CANTO" -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// }, -// false, -// }, -// { -// "evm denom registration - aCANTO", -// func() { -// metadata.Base = "aCANTO" -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// }, -// false, -// }, -// { -// "evm denom registration - wCANTO", -// func() { -// metadata.Base = "wCANTO" -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// }, -// false, -// }, -// { -// "ok", -// func() { -// metadata.Base = cosmosTokenBase -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// }, -// true, -// }, -// { -// "force fail evm", -// func() { -// metadata.Base = cosmosTokenBase -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// }, -// false, -// }, -// { -// "force delete module account evm", -// func() { -// metadata.Base = cosmosTokenBase -// err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) -// suite.Require().NoError(err) -// -// acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) -// suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.SetupTest() // reset -// -// tc.malleate() -// -// pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, metadata) -// suite.Commit() -// -// expPair := &types.TokenPair{ -// Erc20Address: "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd", -// Denom: "acoin", -// Enabled: true, -// ContractOwner: 1, -// } -// -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// suite.Require().Equal(pair, expPair) -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -//} -// -//func (suite KeeperTestSuite) TestRegisterERC20() { -// var ( -// contractAddr common.Address -// pair types.TokenPair -// ) -// testCases := []struct { -// name string -// malleate func() -// expPass bool -// }{ -// { -// "conversion is disabled globally", -// func() { -// params := types.DefaultParams() -// params.EnableErc20 = false -// suite.app.Erc20Keeper.SetParams(suite.ctx, params) -// }, -// false, -// }, -// { -// "token ERC20 already registered", -// func() { -// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) -// }, -// false, -// }, -// { -// "denom already registered", -// func() { -// suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) -// }, -// false, -// }, -// { -// "meta data already stored", -// func() { -// suite.app.Erc20Keeper.CreateCoinMetadata(suite.ctx, contractAddr) -// }, -// false, -// }, -// { -// "ok", -// func() {}, -// true, -// }, -// { -// "force fail evm", -// func() { -// mockEVMKeeper := &MockEVMKeeper{} -// sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) -// suite.Require().True(found) -// suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) -// mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) -// mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) -// }, -// false, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.SetupTest() // reset -// -// var err error -// contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals) -// suite.Require().NoError(err) -// suite.Commit() -// coinName := types.CreateDenom(contractAddr.String()) -// pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL) -// -// tc.malleate() -// -// _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) -// metadata, found := suite.app.BankKeeper.GetDenomMetaData(suite.ctx, coinName) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// // Metadata variables -// suite.Require().True(found) -// suite.Require().Equal(coinName, metadata.Base) -// suite.Require().Equal(coinName, metadata.Name) -// suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.Display) -// suite.Require().Equal(erc20Symbol, metadata.Symbol) -// // Denom units -// suite.Require().Equal(len(metadata.DenomUnits), 2) -// suite.Require().Equal(coinName, metadata.DenomUnits[0].Denom) -// suite.Require().Equal(uint32(zeroExponent), metadata.DenomUnits[0].Exponent) -// suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.DenomUnits[1].Denom) -// // Custom exponent at contract creation matches coin with token -// suite.Require().Equal(metadata.DenomUnits[1].Exponent, uint32(cosmosDecimals)) -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -//} -// -//func (suite *KeeperTestSuite) TestRegisterIBCVoucher() { -// suite.setupRegisterIBCVoucher() -//} -// -//func (suite KeeperTestSuite) TestToggleConverision() { -// var ( -// contractAddr common.Address -// id []byte -// pair types.TokenPair -// ) -// -// testCases := []struct { -// name string -// malleate func() -// expPass bool -// conversionEnabled bool -// }{ -// { -// "token not registered", -// func() { -// contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) -// }, -// false, -// false, -// }, -// { -// "token not registered - pair not found", -// func() { -// contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) -// suite.Require().NoError(err) -// suite.Commit() -// pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) -// suite.app.Erc20Keeper.SetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) -// }, -// false, -// false, -// }, -// { -// "disable conversion", -// func() { -// contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) -// id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) -// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// }, -// true, -// false, -// }, -// { -// "disable and enable conversion", -// func() { -// contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) -// id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) -// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// pair, _ = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) -// }, -// true, -// true, -// }, -// } -// for _, tc := range testCases { -// suite.Run(fmt.Sprintf("Case %s", tc.name), func() { -// suite.SetupTest() // reset -// -// tc.malleate() -// -// var err error -// pair, err = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) -// // Request the pair using the GetPairToken func to make sure that is updated on the db -// pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) -// if tc.expPass { -// suite.Require().NoError(err, tc.name) -// if tc.conversionEnabled { -// suite.Require().True(pair.Enabled) -// } else { -// suite.Require().False(pair.Enabled) -// } -// } else { -// suite.Require().Error(err, tc.name) -// } -// }) -// } -//} +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/stretchr/testify/mock" + + "github.com/ethereum/go-ethereum/common" + + "github.com/evmos/ethermint/tests" + evmtypes "github.com/evmos/ethermint/x/evm/types" + + "github.com/Canto-Network/Canto/v7/x/erc20/keeper" + "github.com/Canto-Network/Canto/v7/x/erc20/types" + inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" +) + +func (suite KeeperTestSuite) TestRegisterCoin() { + metadata := banktypes.Metadata{ + Description: "description", + Base: cosmosTokenBase, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: cosmosTokenBase, + Exponent: 0, + }, + { + Denom: cosmosTokenDisplay, + Exponent: defaultExponent, + }, + }, + Name: cosmosTokenBase, + Symbol: erc20Symbol, + Display: cosmosTokenDisplay, + } + + testCases := []struct { + name string + malleate func() + expPass bool + }{ + { + "conversion is disabled globally", + func() { + params := types.DefaultParams() + params.EnableErc20 = false + suite.app.Erc20Keeper.SetParams(suite.ctx, params) + }, + false, + }, + { + "denom already registered", + func() { + regPair := types.NewTokenPair(tests.GenerateAddress(), metadata.Base, true, types.OWNER_MODULE) + suite.app.Erc20Keeper.SetDenomMap(suite.ctx, regPair.Denom, regPair.GetID()) + suite.Commit() + }, + false, + }, + { + "token doesn't have supply", + func() { + }, + false, + }, + { + "metadata different that stored", + func() { + metadata.Base = cosmosTokenBase + validMetadata := banktypes.Metadata{ + Description: "description", + Base: cosmosTokenBase, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: cosmosTokenBase, + Exponent: 0, + }, + { + Denom: cosmosTokenDisplay, + Exponent: uint32(18), + }, + }, + Name: erc20Name, + Symbol: erc20Symbol, + Display: cosmosTokenDisplay, + } + + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) + suite.Require().NoError(err) + suite.app.BankKeeper.SetDenomMetaData(suite.ctx, validMetadata) + }, + false, + }, + { + "evm denom registration - CANTO", + func() { + metadata.Base = "CANTO" + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + }, + false, + }, + { + "evm denom registration - CANTO", + func() { + metadata.Base = "CANTO" + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + }, + false, + }, + { + "evm denom registration - aCANTO", + func() { + metadata.Base = "aCANTO" + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + }, + false, + }, + { + "evm denom registration - wCANTO", + func() { + metadata.Base = "wCANTO" + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + }, + false, + }, + { + "ok", + func() { + metadata.Base = cosmosTokenBase + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + }, + true, + }, + { + "force fail evm", + func() { + metadata.Base = cosmosTokenBase + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + }, + false, + }, + { + "force delete module account evm", + func() { + metadata.Base = cosmosTokenBase + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(metadata.Base, 1)}) + suite.Require().NoError(err) + + acc := suite.app.AccountKeeper.GetAccount(suite.ctx, types.ModuleAddress.Bytes()) + suite.app.AccountKeeper.RemoveAccount(suite.ctx, acc) + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset + + tc.malleate() + + pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, metadata) + suite.Commit() + + expPair := &types.TokenPair{ + Erc20Address: "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd", + Denom: "acoin", + Enabled: true, + ContractOwner: 1, + } + + if tc.expPass { + suite.Require().NoError(err, tc.name) + suite.Require().Equal(pair, expPair) + } else { + suite.Require().Error(err, tc.name) + } + }) + } +} + +func (suite KeeperTestSuite) TestRegisterERC20() { + var ( + contractAddr common.Address + pair types.TokenPair + ) + testCases := []struct { + name string + malleate func() + expPass bool + }{ + { + "conversion is disabled globally", + func() { + params := types.DefaultParams() + params.EnableErc20 = false + suite.app.Erc20Keeper.SetParams(suite.ctx, params) + }, + false, + }, + { + "token ERC20 already registered", + func() { + suite.app.Erc20Keeper.SetERC20Map(suite.ctx, pair.GetERC20Contract(), pair.GetID()) + }, + false, + }, + { + "denom already registered", + func() { + suite.app.Erc20Keeper.SetDenomMap(suite.ctx, pair.Denom, pair.GetID()) + }, + false, + }, + { + "meta data already stored", + func() { + suite.app.Erc20Keeper.CreateCoinMetadata(suite.ctx, contractAddr) + }, + false, + }, + { + "ok", + func() {}, + true, + }, + { + "force fail evm", + func() { + mockEVMKeeper := &MockEVMKeeper{} + sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) + suite.Require().True(found) + suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) + mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) + }, + false, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset + + var err error + contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals) + suite.Require().NoError(err) + suite.Commit() + coinName := keeper.CreateDenom(contractAddr.String()) + pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL) + + tc.malleate() + + _, err = suite.app.Erc20Keeper.RegisterERC20(suite.ctx, contractAddr) + metadata, found := suite.app.BankKeeper.GetDenomMetaData(suite.ctx, coinName) + if tc.expPass { + suite.Require().NoError(err, tc.name) + // Metadata variables + suite.Require().True(found) + suite.Require().Equal(coinName, metadata.Base) + suite.Require().Equal(coinName, metadata.Name) + suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.Display) + suite.Require().Equal(erc20Symbol, metadata.Symbol) + // Denom units + suite.Require().Equal(len(metadata.DenomUnits), 2) + suite.Require().Equal(coinName, metadata.DenomUnits[0].Denom) + suite.Require().Equal(uint32(zeroExponent), metadata.DenomUnits[0].Exponent) + suite.Require().Equal(types.SanitizeERC20Name(erc20Name), metadata.DenomUnits[1].Denom) + // Custom exponent at contract creation matches coin with token + suite.Require().Equal(metadata.DenomUnits[1].Exponent, uint32(cosmosDecimals)) + } else { + suite.Require().Error(err, tc.name) + } + }) + } +} + +func (suite *KeeperTestSuite) TestRegisterIBCVoucher() { + suite.setupRegisterIBCVoucher() +} + +func (suite KeeperTestSuite) TestToggleConverision() { + var ( + contractAddr common.Address + id []byte + pair types.TokenPair + ) + + testCases := []struct { + name string + malleate func() + expPass bool + conversionEnabled bool + }{ + { + "token not registered", + func() { + contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) + }, + false, + false, + }, + { + "token not registered - pair not found", + func() { + contractAddr, err := suite.DeployContract(erc20Name, erc20Symbol, erc20Decimals) + suite.Require().NoError(err) + suite.Commit() + pair = types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) + suite.app.Erc20Keeper.SetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) + }, + false, + false, + }, + { + "disable conversion", + func() { + contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) + id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) + pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + }, + true, + false, + }, + { + "disable and enable conversion", + func() { + contractAddr = suite.setupRegisterERC20Pair(contractMinterBurner) + id = suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) + pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + pair, _ = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) + }, + true, + true, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset + + tc.malleate() + + var err error + pair, err = suite.app.Erc20Keeper.ToggleConversion(suite.ctx, contractAddr.String()) + // Request the pair using the GetPairToken func to make sure that is updated on the db + pair, _ = suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + if tc.expPass { + suite.Require().NoError(err, tc.name) + if tc.conversionEnabled { + suite.Require().True(pair.Enabled) + } else { + suite.Require().False(pair.Enabled) + } + } else { + suite.Require().Error(err, tc.name) + } + }) + } +} diff --git a/x/erc20/types/proposal.go b/x/erc20/types/proposal.go deleted file mode 100644 index e11329c92..000000000 --- a/x/erc20/types/proposal.go +++ /dev/null @@ -1,168 +0,0 @@ -package types - -// -// -//import ( -// "fmt" -// "strings" -// -// errorsmod "cosmossdk.io/errors" -// sdk "github.com/cosmos/cosmos-sdk/types" -// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -// ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" -// ethermint "github.com/evmos/ethermint/types" -//) -// -//// constants -//const ( -// ProposalTypeRegisterCoin string = "RegisterCoin" -// ProposalTypeRegisterERC20 string = "RegisterERC20" -// ProposalTypeToggleTokenConversion string = "ToggleTokenConversion" // #nosec -//) -// -//// Implements Proposal Interface -//var ( -// _ govtypes.Content = &RegisterCoinProposal{} -// _ govtypes.Content = &RegisterERC20Proposal{} -// _ govtypes.Content = &ToggleTokenConversionProposal{} -//) -// -//func init() { -// govtypes.RegisterProposalType(ProposalTypeRegisterCoin) -// govtypes.RegisterProposalType(ProposalTypeRegisterERC20) -// govtypes.RegisterProposalType(ProposalTypeToggleTokenConversion) -// //govtypes.RegisterProposalTypeCodec(&RegisterCoinProposal{}, "erc20/RegisterCoinProposal") -// //govtypes.RegisterProposalTypeCodec(&RegisterERC20Proposal{}, "erc20/RegisterERC20Proposal") -// //govtypes.RegisterProposalTypeCodec(&ToggleTokenConversionProposal{}, "erc20/ToggleTokenConversionProposal") -//} -// -//// CreateDenomDescription generates a string with the coin description -//func CreateDenomDescription(address string) string { -// return fmt.Sprintf("Cosmos coin token representation of %s", address) -//} -// -//// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number -//func CreateDenom(address string) string { -// return fmt.Sprintf("%s/%s", ModuleName, address) -//} -// -//NewRegisterCoinProposal returns new instance of RegisterCoinProposal -//func NewRegisterCoinProposal(title, description string, coinMetadata banktypes.Metadata) govtypes.Content { -// return &RegisterCoinProposal{ -// Title: title, -// Description: description, -// Metadata: coinMetadata, -// } -//} -// -//// ProposalRoute returns router key for this proposal -//func (*RegisterCoinProposal) ProposalRoute() string { return RouterKey } -// -//// ProposalType returns proposal type for this proposal -//func (*RegisterCoinProposal) ProposalType() string { -// return ProposalTypeRegisterCoin -//} -// -//// ValidateBasic performs a stateless check of the proposal fields -//func (rtbp *RegisterCoinProposal) ValidateBasic() error { -// if err := rtbp.Metadata.Validate(); err != nil { -// return err -// } -// -// if err := ibctransfertypes.ValidateIBCDenom(rtbp.Metadata.Base); err != nil { -// return err -// } -// -// if err := validateIBCVoucherMetadata(rtbp.Metadata); err != nil { -// return err -// } -// -// return govtypes.ValidateAbstract(rtbp) -//} -// -//// validateIBCVoucherMetadata checks that the coin metadata fields are consistent -//// with an IBC voucher denomination. -//func validateIBCVoucherMetadata(metadata banktypes.Metadata) error { -// // Check ibc/ denom -// denomSplit := strings.SplitN(metadata.Base, "/", 2) -// -// if denomSplit[0] == metadata.Base && strings.TrimSpace(metadata.Base) != "" { -// // Not IBC -// return nil -// } -// -// if len(denomSplit) != 2 || denomSplit[0] != ibctransfertypes.DenomPrefix { -// // NOTE: should be unaccessible (covered on ValidateIBCDenom) -// return fmt.Errorf("invalid metadata. %s denomination should be prefixed with the format 'ibc/", metadata.Base) -// } -// -// return nil -//} -// -//// ValidateErc20Denom checks if a denom is a valid erc20/ -//// denomination -//func ValidateErc20Denom(denom string) error { -// denomSplit := strings.SplitN(denom, "/", 2) -// -// if len(denomSplit) != 2 || denomSplit[0] != ModuleName { -// return fmt.Errorf("invalid denom. %s denomination should be prefixed with the format 'erc20/", denom) -// } -// -// return ethermint.ValidateAddress(denomSplit[1]) -//} -// -//// NewRegisterERC20Proposal returns new instance of RegisterERC20Proposal -//func NewRegisterERC20Proposal(title, description, erc20Addr string) govtypes.Content { -// return &RegisterERC20Proposal{ -// Title: title, -// Description: description, -// Erc20Address: erc20Addr, -// } -//} -// -//// ProposalRoute returns router key for this proposal -//func (*RegisterERC20Proposal) ProposalRoute() string { return RouterKey } -// -//// ProposalType returns proposal type for this proposal -//func (*RegisterERC20Proposal) ProposalType() string { -// return ProposalTypeRegisterERC20 -//} -// -//// ValidateBasic performs a stateless check of the proposal fields -//func (rtbp *RegisterERC20Proposal) ValidateBasic() error { -// if err := ethermint.ValidateAddress(rtbp.Erc20Address); err != nil { -// return errorsmod.Wrap(err, "ERC20 address") -// } -// return govtypes.ValidateAbstract(rtbp) -//} -// -//// NewToggleTokenConversionProposal returns new instance of ToggleTokenConversionProposal -//func NewToggleTokenConversionProposal(title, description string, token string) govtypes.Content { -// return &ToggleTokenConversionProposal{ -// Title: title, -// Description: description, -// Token: token, -// } -//} -// -//// ProposalRoute returns router key for this proposal -//func (*ToggleTokenConversionProposal) ProposalRoute() string { return RouterKey } -// -//// ProposalType returns proposal type for this proposal -//func (*ToggleTokenConversionProposal) ProposalType() string { -// return ProposalTypeToggleTokenConversion -//} -// -//// ValidateBasic performs a stateless check of the proposal fields -//func (ttcp *ToggleTokenConversionProposal) ValidateBasic() error { -// // check if the token is a hex address, if not, check if it is a valid SDK -// // denom -// if err := ethermint.ValidateAddress(ttcp.Token); err != nil { -// if err := sdk.ValidateDenom(ttcp.Token); err != nil { -// return err -// } -// } -// -// return govtypes.ValidateAbstract(ttcp) -//} diff --git a/x/erc20/types/proposal_test.go b/x/erc20/types/proposal_test.go deleted file mode 100644 index 2f9a35aea..000000000 --- a/x/erc20/types/proposal_test.go +++ /dev/null @@ -1,280 +0,0 @@ -package types - -// -//import ( -// "strings" -// "testing" -// -// "github.com/stretchr/testify/suite" -// -// "github.com/evmos/ethermint/tests" -// -// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -// length "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -//) -// -//type ProposalTestSuite struct { -// suite.Suite -//} -// -//func TestProposalTestSuite(t *testing.T) { -// suite.Run(t, new(ProposalTestSuite)) -//} -// -//func (suite *ProposalTestSuite) TestKeysTypes() { -// suite.Require().Equal("erc20", (&RegisterCoinProposal{}).ProposalRoute()) -// suite.Require().Equal("RegisterCoin", (&RegisterCoinProposal{}).ProposalType()) -// suite.Require().Equal("erc20", (&RegisterERC20Proposal{}).ProposalRoute()) -// suite.Require().Equal("RegisterERC20", (&RegisterERC20Proposal{}).ProposalType()) -// suite.Require().Equal("erc20", (&ToggleTokenConversionProposal{}).ProposalRoute()) -// suite.Require().Equal("ToggleTokenConversion", (&ToggleTokenConversionProposal{}).ProposalType()) -//} -// -//func (suite *ProposalTestSuite) TestCreateDenomDescription() { -// testCases := []struct { -// name string -// denom string -// expString string -// }{ -// { -// "with valid address", -// "0xdac17f958d2ee523a2206206994597c13d831ec7", -// "Cosmos coin token representation of 0xdac17f958d2ee523a2206206994597c13d831ec7", -// }, -// { -// "with empty string", -// "", -// "Cosmos coin token representation of ", -// }, -// } -// for _, tc := range testCases { -// desc := CreateDenomDescription(tc.denom) -// suite.Require().Equal(desc, tc.expString) -// } -//} -// -//func (suite *ProposalTestSuite) TestCreateDenom() { -// testCases := []struct { -// name string -// denom string -// expString string -// }{ -// { -// "with valid address", -// "0xdac17f958d2ee523a2206206994597c13d831ec7", -// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", -// }, -// { -// "with empty string", -// "", -// "erc20/", -// }, -// } -// for _, tc := range testCases { -// desc := CreateDenom(tc.denom) -// suite.Require().Equal(desc, tc.expString) -// } -//} -// -//func (suite *ProposalTestSuite) TestValidateErc20Denom() { -// testCases := []struct { -// name string -// denom string -// expPass bool -// }{ -// { -// "- instead of /", -// "erc20-0xdac17f958d2ee523a2206206994597c13d831ec7", -// false, -// }, -// { -// "without /", -// "conversionCoin", -// false, -// }, -// { -// "// instead of /", -// "erc20//0xdac17f958d2ee523a2206206994597c13d831ec7", -// false, -// }, -// { -// "multiple /", -// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7/test", -// false, -// }, -// { -// "pass", -// "erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", -// true, -// }, -// } -// for _, tc := range testCases { -// err := ValidateErc20Denom(tc.denom) -// -// if tc.expPass { -// suite.Require().Nil(err, tc.name) -// } else { -// suite.Require().Error(err, tc.name) -// } -// } -//} -// -//func (suite *ProposalTestSuite) TestRegisterERC20Proposal() { -// testCases := []struct { -// msg string -// title string -// description string -// pair TokenPair -// expectPass bool -// }{ -// // Valid tests -// {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", true, OWNER_MODULE}, expectPass: true}, -// {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: true}, -// // Missing params valid -// {msg: "Register token pair - invalid missing title ", title: "", description: "test desc", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, -// {msg: "Register token pair - invalid missing description ", title: "test", description: "", pair: TokenPair{tests.GenerateAddress().String(), "test", false, OWNER_MODULE}, expectPass: false}, -// // Invalid address -// {msg: "Register token pair - invalid address (no hex)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19ZZ", "test", true, OWNER_MODULE}, expectPass: false}, -// {msg: "Register token pair - invalid address (invalid length 1)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb19", "test", true, OWNER_MODULE}, expectPass: false}, -// {msg: "Register token pair - invalid address (invalid length 2)", title: "test", description: "test desc", pair: TokenPair{"0x5dCA2483280D9727c80b5518faC4556617fb194FFF", "test", true, OWNER_MODULE}, expectPass: false}, -// {msg: "Register token pair - invalid address (invalid prefix)", title: "test", description: "test desc", pair: TokenPair{"1x5dCA2483280D9727c80b5518faC4556617fb19F", "test", true, OWNER_MODULE}, expectPass: false}, -// } -// -// for i, tc := range testCases { -// tx := NewRegisterERC20Proposal(tc.title, tc.description, tc.pair.Erc20Address) -// err := tx.ValidateBasic() -// -// if tc.expectPass { -// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) -// } else { -// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) -// } -// } -//} -// -//func createFullMetadata(denom, symbol, name string) banktypes.Metadata { -// return banktypes.Metadata{ -// Description: "desc", -// Base: denom, -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: denom, -// Exponent: 0, -// }, -// { -// Denom: symbol, -// Exponent: uint32(18), -// }, -// }, -// Name: name, -// Symbol: symbol, -// Display: denom, -// } -//} -// -//func createMetadata(denom, symbol string) banktypes.Metadata { -// return createFullMetadata(denom, symbol, denom) -//} -// -//func (suite *ProposalTestSuite) TestRegisterCoinProposal() { -// validMetadata := banktypes.Metadata{ -// Description: "desc", -// Base: "coin", -// // NOTE: Denom units MUST be increasing -// DenomUnits: []*banktypes.DenomUnit{ -// { -// Denom: "coin", -// Exponent: 0, -// }, -// { -// Denom: "coin2", -// Exponent: uint32(18), -// }, -// }, -// Name: "coin", -// Symbol: "token", -// Display: "coin", -// } -// -// validIBCDenom := "ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2" -// validIBCSymbol := "ATOM" -// validIBCName := "Atom" -// -// testCases := []struct { -// msg string -// title string -// description string -// metadata banktypes.Metadata -// expectPass bool -// }{ -// // Valid tests -// {msg: "Register token pair - valid pair enabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, -// {msg: "Register token pair - valid pair dissabled", title: "test", description: "test desc", metadata: validMetadata, expectPass: true}, -// -// // Invalid Regex (denom) -// {msg: "Register token pair - invalid starts with number", title: "test", description: "test desc", metadata: createMetadata("1test", "test"), expectPass: false}, -// {msg: "Register token pair - invalid char '('", title: "test", description: "test desc", metadata: createMetadata("(test", "test"), expectPass: false}, -// {msg: "Register token pair - invalid char '^'", title: "test", description: "test desc", metadata: createMetadata("^test", "test"), expectPass: false}, -// // Invalid length -// {msg: "Register token pair - invalid length token (0)", title: "test", description: "test desc", metadata: createMetadata("", "test"), expectPass: false}, -// {msg: "Register token pair - invalid length token (1)", title: "test", description: "test desc", metadata: createMetadata("a", "test"), expectPass: false}, -// {msg: "Register token pair - invalid length token (128)", title: "test", description: "test desc", metadata: createMetadata(strings.Repeat("a", 129), "test"), expectPass: false}, -// {msg: "Register token pair - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", metadata: validMetadata, expectPass: false}, -// {msg: "Register token pair - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), metadata: validMetadata, expectPass: false}, -// -// // Ibc -// {msg: "Register token pair - ibc", title: "test", description: "test desc", metadata: createFullMetadata(validIBCDenom, validIBCSymbol, validIBCName), expectPass: true}, -// {msg: "Register token pair - ibc invalid denom", title: "test", description: "test desc", metadata: createFullMetadata("ibc/", validIBCSymbol, validIBCName), expectPass: false}, -// } -// -// for i, tc := range testCases { -// tx := NewRegisterCoinProposal(tc.title, tc.description, tc.metadata) -// err := tx.ValidateBasic() -// -// if tc.expectPass { -// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) -// } else { -// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) -// } -// } -//} -// -//func (suite *ProposalTestSuite) TestToggleTokenConversionProposal() { -// testCases := []struct { -// msg string -// title string -// description string -// token string -// expectPass bool -// }{ -// {msg: "Enable token conversion proposal - valid denom", title: "test", description: "test desc", token: "test", expectPass: true}, -// {msg: "Enable token conversion proposal - valid address", title: "test", description: "test desc", token: "0x5dCA2483280D9727c80b5518faC4556617fb194F", expectPass: true}, -// {msg: "Enable token conversion proposal - invalid address", title: "test", description: "test desc", token: "0x123", expectPass: false}, -// -// // Invalid missing params -// {msg: "Enable token conversion proposal - valid missing title", title: "", description: "test desc", token: "test", expectPass: false}, -// {msg: "Enable token conversion proposal - valid missing description", title: "test", description: "", token: "test", expectPass: false}, -// {msg: "Enable token conversion proposal - invalid missing token", title: "test", description: "test desc", token: "", expectPass: false}, -// -// // Invalid regex -// {msg: "Enable token conversion proposal - invalid denom", title: "test", description: "test desc", token: "^test", expectPass: false}, -// // Invalid length -// {msg: "Enable token conversion proposal - invalid length (1)", title: "test", description: "test desc", token: "a", expectPass: false}, -// {msg: "Enable token conversion proposal - invalid length (128)", title: "test", description: "test desc", token: strings.Repeat("a", 129), expectPass: false}, -// -// {msg: "Enable token conversion proposal - invalid length title (140)", title: strings.Repeat("a", length.MaxTitleLength+1), description: "test desc", token: "test", expectPass: false}, -// {msg: "Enable token conversion proposal - invalid length description (5000)", title: "title", description: strings.Repeat("a", length.MaxDescriptionLength+1), token: "test", expectPass: false}, -// } -// -// for i, tc := range testCases { -// tx := NewToggleTokenConversionProposal(tc.title, tc.description, tc.token) -// err := tx.ValidateBasic() -// -// if tc.expectPass { -// suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) -// } else { -// suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) -// } -// } -//} From 9cd30c957b0967e30a7968c26f9020283d2e0e79 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 17 Jan 2024 05:50:32 +0900 Subject: [PATCH 38/96] chore: fix consensus_params --- Networks/Mainnet/genesis.json | 36 ++++++++++--------- Networks/Testnet/genesis-files/genesis.json | 36 ++++++++++--------- .../genesis-files/plex-genesis/genesis.json | 36 ++++++++++--------- Networks/Testnet/genesis.json | 36 ++++++++++--------- init.bat | 4 +-- init.sh | 2 +- 6 files changed, 79 insertions(+), 71 deletions(-) diff --git a/Networks/Mainnet/genesis.json b/Networks/Mainnet/genesis.json index 7dc452db1..2686d5a53 100644 --- a/Networks/Mainnet/genesis.json +++ b/Networks/Mainnet/genesis.json @@ -2,23 +2,25 @@ "genesis_time": "2022-07-26T17:27:56.407386144Z", "chain_id": "canto_7700-1", "initial_height": "1", - "consensus_params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + } }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis-files/genesis.json b/Networks/Testnet/genesis-files/genesis.json index 2284b0abc..eaf241cc1 100644 --- a/Networks/Testnet/genesis-files/genesis.json +++ b/Networks/Testnet/genesis-files/genesis.json @@ -2,23 +2,25 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus_params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + } }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis-files/plex-genesis/genesis.json b/Networks/Testnet/genesis-files/plex-genesis/genesis.json index d25e1492e..989c48c91 100644 --- a/Networks/Testnet/genesis-files/plex-genesis/genesis.json +++ b/Networks/Testnet/genesis-files/plex-genesis/genesis.json @@ -2,23 +2,25 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus_params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + } }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis.json b/Networks/Testnet/genesis.json index 9c8f45c1d..fccf7cc8e 100644 --- a/Networks/Testnet/genesis.json +++ b/Networks/Testnet/genesis.json @@ -2,23 +2,25 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus_params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + } }, "app_hash": "", "app_state": { diff --git a/init.bat b/init.bat index 05c67f0c8..049d06fa1 100644 --- a/init.bat +++ b/init.bat @@ -45,10 +45,10 @@ cat %GENESIS% | jq ".app_state[\"gov\"][\"deposit_params\"][\"min_deposit\"][0][ cat %GENESIS% | jq ".app_state[\"mint\"][\"params\"][\"mint_denom\"]=\"acanto\"" > %TMPGENESIS% && move %TMPGENESIS% %GENESIS% rem increase block time (?) -cat %GENESIS% | jq ".consensus_params[\"block\"][\"time_iota_ms\"]=\"30000\"" > %TMPGENESIS% && move %TMPGENESIS% %GENESIS% +cat %GENESIS% | jq ".consensus[\"params\"][\"block\"][\"time_iota_ms\"]=\"30000\"" > %TMPGENESIS% && move %TMPGENESIS% %GENESIS% rem gas limit in genesis -cat %GENESIS% | jq ".consensus_params[\"block\"][\"max_gas\"]=\"10000000\"" > %TMPGENESIS% && move %TMPGENESIS% %GENESIS% +cat %GENESIS% | jq ".consensus[\"params\"][\"block\"][\"max_gas\"]=\"10000000\"" > %TMPGENESIS% && move %TMPGENESIS% %GENESIS% rem setup sed -i "s/create_empty_blocks = true/create_empty_blocks = false/g" %ETHCONFIG% diff --git a/init.sh b/init.sh index c439404a8..9c71ac1d6 100755 --- a/init.sh +++ b/init.sh @@ -33,7 +33,7 @@ cat $HOME/.cantod/config/genesis.json | jq '.app_state["evm"]["params"]["evm_den cat $HOME/.cantod/config/genesis.json | jq '.app_state["inflation"]["params"]["mint_denom"]="acanto"' > $HOME/.cantod/config/tmp_genesis.json && mv $HOME/.cantod/config/tmp_genesis.json $HOME/.cantod/config/genesis.json # Set gas limit in genesis -cat $HOME/.cantod/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.cantod/config/tmp_genesis.json && mv $HOME/.cantod/config/tmp_genesis.json $HOME/.cantod/config/genesis.json +cat $HOME/.cantod/config/genesis.json | jq '.consensus["params"]["block"]["max_gas"]="10000000"' > $HOME/.cantod/config/tmp_genesis.json && mv $HOME/.cantod/config/tmp_genesis.json $HOME/.cantod/config/genesis.json # Set claims start time # node_address=$(cantod keys list | grep "address: " | cut -c12-) From 9c374c153d0af60912cd12f301ecf6d5b430e688 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Tue, 23 Jan 2024 15:02:04 +0900 Subject: [PATCH 39/96] chore: ethermint update --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d7276f670..805c91af3 100644 --- a/go.mod +++ b/go.mod @@ -248,7 +248,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 24487976f..2e7341fb2 100644 --- a/go.sum +++ b/go.sum @@ -274,8 +274,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4 h1:7S3aOs2/Nzvc8ohgGm5ujSUiiNxuCKu9wbYsHASL2Tg= -github.com/b-harvest/ethermint v0.0.0-20240108043139-915ed04e8ae4/go.mod h1:IB0HAZP7DLOO4vVQB4ro1rCepf6UdfM0zXRuLxEl4jQ= +github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906 h1:bxyMiyxlfQ9ItahUdDv0Auz7Wgs15MpyqPHF0x2cJyQ= +github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906/go.mod h1:IB0HAZP7DLOO4vVQB4ro1rCepf6UdfM0zXRuLxEl4jQ= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From d0b8d5316d9d1bb0879ed5231e4f3b051685c877 Mon Sep 17 00:00:00 2001 From: poorphd Date: Thu, 25 Jan 2024 15:59:55 +0900 Subject: [PATCH 40/96] wip: fuzz test determinism --- app/state.go | 1 + 1 file changed, 1 insertion(+) diff --git a/app/state.go b/app/state.go index fc2dd9062..2b887b876 100644 --- a/app/state.go +++ b/app/state.go @@ -182,6 +182,7 @@ func AppStateRandomizedFn( InitialStake: initialStake, NumBonded: numInitiallyBonded, GenTimestamp: genesisTimestamp, + BondDenom: sdk.DefaultBondDenom, } simManager.GenerateGenesisStates(simState) From c16284e9a10aba5431880fda8aec14b7146c2d34 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 13:45:06 +0900 Subject: [PATCH 41/96] chore: remove todo comments, implements upgrade codes --- app/app.go | 48 ++++++++++++------------------------ app/sim_test.go | 2 +- app/upgrades/v8/constants.go | 6 +++++ app/upgrades/v8/upgrades.go | 24 ++++++++++++++++++ cmd/cantod/root.go | 2 +- 5 files changed, 48 insertions(+), 34 deletions(-) create mode 100644 app/upgrades/v8/constants.go create mode 100644 app/upgrades/v8/upgrades.go diff --git a/app/app.go b/app/app.go index 01ad670ef..27da869ae 100644 --- a/app/app.go +++ b/app/app.go @@ -74,6 +74,7 @@ import ( authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" "github.com/cosmos/cosmos-sdk/x/authz" authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" @@ -100,8 +101,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/group" groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" - // mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" // TODO(dudong2): consider mint, vesting - // minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" @@ -181,6 +180,7 @@ import ( v5 "github.com/Canto-Network/Canto/v7/app/upgrades/v5" v6 "github.com/Canto-Network/Canto/v7/app/upgrades/v6" v7 "github.com/Canto-Network/Canto/v7/app/upgrades/v7" + v8 "github.com/Canto-Network/Canto/v7/app/upgrades/v8" ) // Name defines the application binary name @@ -236,11 +236,10 @@ type Canto struct { memKeys map[string]*storetypes.MemoryStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - // MintKeeper mintkeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper DistrKeeper distrkeeper.Keeper GovKeeper govkeeper.Keeper CrisisKeeper *crisiskeeper.Keeper @@ -380,7 +379,7 @@ func NewCanto( keys := storetypes.NewKVStoreKeys( // SDK keys authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, - /* minttypes.StoreKey, */ distrtypes.StoreKey, slashingtypes.StoreKey, + distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, circuittypes.StoreKey, authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, @@ -483,15 +482,6 @@ func NewCanto( authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), ) - // app.MintKeeper = mintkeeper.NewKeeper( - // appCodec, - // runtime.NewKVStoreService(keys[minttypes.StoreKey]), - // app.StakingKeeper, - // app.AccountKeeper, - // app.BankKeeper, - // authtypes.FeeCollectorName, - // authtypes.NewModuleAddress(govtypes.ModuleName).String(), - // ) app.DistrKeeper = distrkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[distrtypes.StoreKey]), @@ -774,12 +764,10 @@ func NewCanto( txConfig, ), auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), - // vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), - // mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)), slashing.NewAppModule( appCodec, app.SlashingKeeper, @@ -854,7 +842,6 @@ func NewCanto( distrtypes.ModuleName, stakingtypes.ModuleName, slashingtypes.ModuleName, - // minttypes.ModuleName, ibcexported.ModuleName, evmtypes.ModuleName, feemarkettypes.ModuleName, @@ -872,7 +859,6 @@ func NewCanto( group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - // vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, crisistypes.ModuleName, @@ -901,14 +887,12 @@ func NewCanto( banktypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - // minttypes.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, nft.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - // vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, inflationtypes.ModuleName, @@ -935,7 +919,6 @@ func NewCanto( stakingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, - // minttypes.ModuleName, ibcexported.ModuleName, // evm module denomination is used by the feemarket module, in AnteHandle evmtypes.ModuleName, @@ -951,7 +934,6 @@ func NewCanto( group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, - // vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName, // Canto modules @@ -978,10 +960,6 @@ func NewCanto( panic(err) } - // RegisterUpgradeHandlers is used for registering any on-chain upgrades. - // Make sure it's called after `app.mm` and `app.configurator` are set. - // app.RegisterUpgradeHandlers(app.appCodec, app.IBCKeeper.ClientKeeper, app.ConsensusParamsKeeper) // TODO(dudong2): consider it - autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) reflectionSvc, err := runtimeservices.NewReflectionService() @@ -1099,10 +1077,9 @@ func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) FeeMarketKeeper: app.FeeMarketKeeper, MaxTxGasWanted: maxGasWanted, ExtensionOptionChecker: ethermint.HasDynamicFeeExtensionOption, - // TxFeeChecker: ethante.NewDynamicFeeChecker(app.EvmKeeper), // TODO(dudong2): consider it DisabledAuthzMsgs: []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), - // sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), + sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), }, }, ) @@ -1444,6 +1421,12 @@ func (app *Canto) setupUpgradeHandlers() { v7.CreateUpgradeHandler(app.ModuleManager, app.configurator, *app.OnboardingKeeper, app.CoinswapKeeper), ) + // v8 upgrade handler + app.UpgradeKeeper.SetUpgradeHandler( + v8.UpgradeName, + v8.CreateUpgradeHandler(app.ModuleManager, app.configurator), + ) + // When a planned update height is reached, the old binary will panic // writing on disk the height and name of the update that triggered it // This will read that value, and execute the preparations for the upgrade. @@ -1478,7 +1461,8 @@ func (app *Canto) setupUpgradeHandlers() { storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{onboardingtypes.StoreKey, coinswaptypes.StoreKey}, } - // case v8.UpgradeName: // TODO(dudong2): maybe implement v8 upgrade + case v8.UpgradeName: + // no store upgrades in v8 } if storeUpgrades != nil { diff --git a/app/sim_test.go b/app/sim_test.go index 9d628441f..1445b76f8 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -251,7 +251,7 @@ func TestAppStateDeterminism(t *testing.T) { appHashList := make([]json.RawMessage, numTimesToRunPerSeed) // We will be overriding the random seed and just run a single simulation on the provided seed value - if config.Seed != simcli.DefaultSeedValue { // TODO(dudong2): check it + if config.Seed != simcli.DefaultSeedValue { numSeeds = 1 } diff --git a/app/upgrades/v8/constants.go b/app/upgrades/v8/constants.go new file mode 100644 index 000000000..560838c57 --- /dev/null +++ b/app/upgrades/v8/constants.go @@ -0,0 +1,6 @@ +package v8 + +const ( + //UpgradeName is the name of the upgrade to be associated with the chain upgrade + UpgradeName = "v8.0.0" +) diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go new file mode 100644 index 000000000..8ff66b8a4 --- /dev/null +++ b/app/upgrades/v8/upgrades.go @@ -0,0 +1,24 @@ +package v8 + +import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" +) + +// CreateUpgradeHandler creates an SDK upgrade handler for v6 +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + logger := sdkCtx.Logger().With("upgrade: ", UpgradeName) + + // Leave modules are as-is to avoid running InitGenesis. + logger.Debug("running module migrations ...") + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index 7d75aa55b..b5a33456d 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -144,7 +144,7 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { ) a := appCreator{encodingConfig} - ethermintserver.AddCommands(rootCmd, ethermintserver.NewDefaultStartOptions(a.newApp, app.DefaultNodeHome), a.appExport, addModuleInitFlags) + ethermintserver.AddCommands(rootCmd, app.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags) // add keybase, auxiliary RPC, query, and tx child commands rootCmd.AddCommand( From 52b27532aca7274cdb61cd0f16119326089ae26f Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 13:45:35 +0900 Subject: [PATCH 42/96] test: fix setAnteHandler(pass appCodec, simulation args) --- app/app.go | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/app/app.go b/app/app.go index 27da869ae..7d26c3016 100644 --- a/app/app.go +++ b/app/app.go @@ -991,28 +991,8 @@ func NewCanto( app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) app.SetPreBlocker(app.PreBlocker) - - maxGasWanted := cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted)) - options := ante.HandlerOptions{ - AccountKeeper: app.AccountKeeper, - BankKeeper: app.BankKeeper, - EvmKeeper: app.EvmKeeper, - FeegrantKeeper: app.FeeGrantKeeper, - IBCKeeper: app.IBCKeeper, - FeeMarketKeeper: app.FeeMarketKeeper, - SignModeHandler: txConfig.SignModeHandler(), - SigGasConsumer: SigVerificationGasConsumer, - Cdc: appCodec, - MaxTxGasWanted: maxGasWanted, - Simulation: simulation, - } - - if err := options.Validate(); err != nil { - panic(err) - } - app.SetEndBlocker(app.EndBlocker) - app.setAnteHandler(txConfig, cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted))) + app.setAnteHandler(txConfig, cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted)), appCodec, simulation) app.setupUpgradeHandlers() // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like @@ -1064,7 +1044,7 @@ func NewCanto( } // use Canto's custom AnteHandler -func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { +func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64, cdc codec.BinaryCodec, simulation bool) { anteHandler, err := ante.NewAnteHandler( ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, @@ -1081,6 +1061,8 @@ func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), }, + Cdc: cdc, + Simulation: simulation, }, ) if err != nil { From c4df33de07ba498ba9c63ba22fa3f11ac78864a9 Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 26 Jan 2024 13:50:24 +0900 Subject: [PATCH 43/96] fix: TestDeterminism simulation --- app/app.go | 2 +- app/sim_test.go | 6 ++++-- app/sim_utils.go | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/app.go b/app/app.go index 7d26c3016..54a26c883 100644 --- a/app/app.go +++ b/app/app.go @@ -976,7 +976,7 @@ func NewCanto( // NOTE: this is not required apps that don't use the simulator for fuzz testing // transactions overrideModules := map[string]module.AppModuleSimulation{ - authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), + authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), } app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules) diff --git a/app/sim_test.go b/app/sim_test.go index 1445b76f8..cc469a924 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "github.com/Canto-Network/Canto/v7/types" "github.com/spf13/viper" "github.com/stretchr/testify/require" @@ -244,7 +245,7 @@ func TestAppStateDeterminism(t *testing.T) { config.ExportParamsPath = "" config.OnOperation = false config.AllInvariants = false - config.ChainID = "canto_9000-1" + config.ChainID = types.TestnetChainID + "-1" numSeeds := config.NumBlocks / 10 numTimesToRunPerSeed := 2 @@ -265,6 +266,7 @@ func TestAppStateDeterminism(t *testing.T) { appOptions.SetDefault(key, value) } } + appOptions.SetDefault(flags.FlagChainID, "canto_9000-1") appOptions.SetDefault(flags.FlagHome, DefaultNodeHome) appOptions.SetDefault(server.FlagInvCheckPeriod, simcli.FlagPeriodValue) if simcli.FlagVerboseValue { @@ -289,7 +291,7 @@ func TestAppStateDeterminism(t *testing.T) { } db := dbm.NewMemDB() - app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) fmt.Printf( "running non-determinism simulation; seed %d: %d/%d, attempt: %d/%d\n", diff --git a/app/sim_utils.go b/app/sim_utils.go index 1063d2237..16f729635 100644 --- a/app/sim_utils.go +++ b/app/sim_utils.go @@ -6,8 +6,13 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" ) @@ -80,3 +85,21 @@ func RandomAccounts(r *rand.Rand, n int) []simtypes.Account { return accs } + +// RandomGenesisAccounts is used by the auth module to create random genesis accounts in simulation when a genesis.json is not specified. +// In contrast, the default auth module's RandomGenesisAccounts implementation creates only base accounts and vestings accounts. +func RandomGenesisAccounts(simState *module.SimulationState) authtypes.GenesisAccounts { + emptyCodeHash := crypto.Keccak256(nil) + genesisAccs := make(authtypes.GenesisAccounts, len(simState.Accounts)) + for i, acc := range simState.Accounts { + bacc := authtypes.NewBaseAccountWithAddress(acc.Address) + + ethacc := ðermint.EthAccount{ + BaseAccount: bacc, + CodeHash: common.BytesToHash(emptyCodeHash).String(), + } + genesisAccs[i] = ethacc + } + + return genesisAccs +} From f06e025c3a9b3872ffa928a490ffec8281ff71ca Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 13:51:42 +0900 Subject: [PATCH 44/96] chore: remove swagger check todo comment --- app/app.go | 2 +- app/upgrades/v8/upgrades.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/app.go b/app/app.go index 54a26c883..4ac9c3027 100644 --- a/app/app.go +++ b/app/app.go @@ -1248,7 +1248,7 @@ func (app *Canto) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConf app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // register swagger API from root so that other applications can override easily - if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { // TODO(dudong2): need to check swagger server + if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { panic(err) } } diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 8ff66b8a4..7c582f925 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" ) -// CreateUpgradeHandler creates an SDK upgrade handler for v6 +// CreateUpgradeHandler creates an SDK upgrade handler for v8 func CreateUpgradeHandler( mm *module.Manager, configurator module.Configurator, From e4dd4ac2a2731db00e1af7a71ed8e395bb0f7605 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 14:38:30 +0900 Subject: [PATCH 45/96] refactor: use KVStoreService in x/coinswap --- app/app.go | 2 +- x/coinswap/keeper/genesis.go | 4 +-- x/coinswap/keeper/grpc_query.go | 3 +- x/coinswap/keeper/keeper.go | 47 ++++++++++++++++++---------- x/coinswap/keeper/pool.go | 24 +++++++------- x/coinswap/keeper/swap.go | 14 ++++++--- x/coinswap/simulation/operations.go | 30 +++++++++++++----- x/onboarding/keeper/ibc_callbacks.go | 5 ++- x/onboarding/types/interfaces.go | 2 +- 9 files changed, 87 insertions(+), 44 deletions(-) diff --git a/app/app.go b/app/app.go index 4ac9c3027..f2cae9479 100644 --- a/app/app.go +++ b/app/app.go @@ -644,7 +644,7 @@ func NewCanto( // Canto Keeper app.CoinswapKeeper = coinswapkeeper.NewKeeper( appCodec, - keys[coinswaptypes.ModuleName], + runtime.NewKVStoreService(keys[coinswaptypes.ModuleName]), app.GetSubspace(coinswaptypes.ModuleName), app.BankKeeper, app.AccountKeeper, diff --git a/x/coinswap/keeper/genesis.go b/x/coinswap/keeper/genesis.go index 48c3b7f2a..92aeeed9b 100644 --- a/x/coinswap/keeper/genesis.go +++ b/x/coinswap/keeper/genesis.go @@ -28,15 +28,15 @@ func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { // ExportGenesis returns the coinswap module's genesis state. func (k Keeper) ExportGenesis(ctx sdk.Context) types.GenesisState { - params := k.GetParams(ctx) //init to prevent nil slice for MaxSwapAmount in params if params.MaxSwapAmount == nil || len(params.MaxSwapAmount) == 0 { params.MaxSwapAmount = sdk.Coins{} } + standardDenom, _ := k.GetStandardDenom(ctx) return types.GenesisState{ Params: params, - StandardDenom: k.GetStandardDenom(ctx), + StandardDenom: standardDenom, Pool: k.GetAllPools(ctx), Sequence: k.getSequence(ctx), } diff --git a/x/coinswap/keeper/grpc_query.go b/x/coinswap/keeper/grpc_query.go index b9ba48b75..5aa210c19 100644 --- a/x/coinswap/keeper/grpc_query.go +++ b/x/coinswap/keeper/grpc_query.go @@ -8,6 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" "cosmossdk.io/store/prefix" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" @@ -68,7 +69,7 @@ func (k Keeper) LiquidityPools(c context.Context, req *types.QueryLiquidityPools var pools []types.PoolInfo - store := ctx.KVStore(k.storeKey) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) nftStore := prefix.NewStore(store, []byte(types.KeyPool)) pageRes, err := query.Paginate(nftStore, req.Pagination, func(key []byte, value []byte) error { var pool types.Pool diff --git a/x/coinswap/keeper/keeper.go b/x/coinswap/keeper/keeper.go index 93f31df02..34c5f6449 100644 --- a/x/coinswap/keeper/keeper.go +++ b/x/coinswap/keeper/keeper.go @@ -4,9 +4,9 @@ import ( "fmt" "strconv" - storetypes "cosmossdk.io/store/types" gogotypes "github.com/gogo/protobuf/types" + "cosmossdk.io/core/store" errorsmod "cosmossdk.io/errors" "cosmossdk.io/log" sdkmath "cosmossdk.io/math" @@ -20,7 +20,7 @@ import ( // Keeper of the coinswap store type Keeper struct { cdc codec.BinaryCodec - storeKey storetypes.StoreKey + storeService store.KVStoreService bk types.BankKeeper ak types.AccountKeeper paramSpace paramstypes.Subspace @@ -38,7 +38,7 @@ type Keeper struct { // - sending to and from ModuleAccounts func NewKeeper( cdc codec.BinaryCodec, - key storetypes.StoreKey, + storeService store.KVStoreService, paramSpace paramstypes.Subspace, bk types.BankKeeper, ak types.AccountKeeper, @@ -57,7 +57,7 @@ func NewKeeper( } return Keeper{ - storeKey: key, + storeService: storeService, bk: bk, ak: ak, cdc: cdc, @@ -83,9 +83,12 @@ func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { var amount sdkmath.Int var err error - standardDenom := k.GetStandardDenom(ctx) - isDoubleSwap := (msg.Input.Coin.Denom != standardDenom) && (msg.Output.Coin.Denom != standardDenom) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return err + } + isDoubleSwap := (msg.Input.Coin.Denom != standardDenom) && (msg.Output.Coin.Denom != standardDenom) if isDoubleSwap { return errorsmod.Wrapf(types.ErrNotContainStandardDenom, "unsupported swap: standard coin must be in either Input or Output") } @@ -114,14 +117,16 @@ func (k Keeper) Swap(ctx sdk.Context, msg *types.MsgSwapOrder) error { // AddLiquidity adds liquidity to the specified pool func (k Keeper) AddLiquidity(ctx sdk.Context, msg *types.MsgAddLiquidity) (sdk.Coin, error) { - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return sdk.Coin{}, err + } if standardDenom == msg.MaxToken.Denom { return sdk.Coin{}, errorsmod.Wrapf(types.ErrInvalidDenom, "MaxToken: %s should not be StandardDenom", msg.MaxToken.String()) } params := k.GetParams(ctx) - if !params.MaxSwapAmount.AmountOf(msg.MaxToken.Denom).IsPositive() { return sdk.Coin{}, errorsmod.Wrapf(types.ErrInvalidDenom, "MaxToken %s is not registered in max swap amount", msg.MaxToken.Denom) @@ -246,7 +251,10 @@ func (k Keeper) addLiquidity(ctx sdk.Context, // RemoveLiquidity removes liquidity from the specified pool func (k Keeper) RemoveLiquidity(ctx sdk.Context, msg *types.MsgRemoveLiquidity) (sdk.Coins, error) { - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return nil, err + } pool, exists := k.GetPoolByLptDenom(ctx, msg.WithdrawLiquidity.Denom) if !exists { @@ -342,19 +350,26 @@ func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { } // SetStandardDenom sets the standard denom for the coinswap module. -func (k Keeper) SetStandardDenom(ctx sdk.Context, denom string) { - store := ctx.KVStore(k.storeKey) +func (k Keeper) SetStandardDenom(ctx sdk.Context, denom string) error { + store := k.storeService.OpenKVStore(ctx) denomWrap := gogotypes.StringValue{Value: denom} bz := k.cdc.MustMarshal(&denomWrap) - store.Set(types.KeyStandardDenom, bz) + err := store.Set(types.KeyStandardDenom, bz) + if err != nil { + return err + } + return nil } // GetStandardDenom returns the standard denom of the coinswap module. -func (k Keeper) GetStandardDenom(ctx sdk.Context) string { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyStandardDenom) +func (k Keeper) GetStandardDenom(ctx sdk.Context) (string, error) { + store := k.storeService.OpenKVStore(ctx) + bz, err := store.Get(types.KeyStandardDenom) + if len(bz) == 0 { + return "", err + } var denomWrap = gogotypes.StringValue{} k.cdc.MustUnmarshal(bz, &denomWrap) - return denomWrap.Value + return denomWrap.Value, nil } diff --git a/x/coinswap/keeper/pool.go b/x/coinswap/keeper/pool.go index 1a4e0c888..406b9e960 100644 --- a/x/coinswap/keeper/pool.go +++ b/x/coinswap/keeper/pool.go @@ -7,6 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -14,11 +15,12 @@ import ( // CreatePool create a liquidity that saves relevant information about popular pool tokens func (k Keeper) CreatePool(ctx sdk.Context, counterpartyDenom string) types.Pool { + standardDenom, _ := k.GetStandardDenom(ctx) sequence := k.getSequence(ctx) lptDenom := types.GetLptDenom(sequence) pool := &types.Pool{ Id: types.GetPoolId(counterpartyDenom), - StandardDenom: k.GetStandardDenom(ctx), + StandardDenom: standardDenom, CounterpartyDenom: counterpartyDenom, EscrowAddress: types.GetReservePoolAddr(lptDenom).String(), LptDenom: lptDenom, @@ -30,8 +32,8 @@ func (k Keeper) CreatePool(ctx sdk.Context, counterpartyDenom string) types.Pool // GetPool return the liquidity pool by the specified anotherCoinDenom func (k Keeper) GetPool(ctx sdk.Context, poolId string) (types.Pool, bool) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.GetPoolKey(poolId)) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.GetPoolKey(poolId)) if bz == nil { return types.Pool{}, false } @@ -43,7 +45,7 @@ func (k Keeper) GetPool(ctx sdk.Context, poolId string) (types.Pool, bool) { // GetAllPools return all the liquidity pools func (k Keeper) GetAllPools(ctx sdk.Context) (pools []types.Pool) { - store := ctx.KVStore(k.storeKey) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) iterator := storetypes.KVStorePrefixIterator(store, []byte(types.KeyPool)) defer iterator.Close() for ; iterator.Valid(); iterator.Next() { @@ -56,8 +58,8 @@ func (k Keeper) GetAllPools(ctx sdk.Context) (pools []types.Pool) { // GetPoolByLptDenom return the liquidity pool by the specified anotherCoinDenom func (k Keeper) GetPoolByLptDenom(ctx sdk.Context, lptDenom string) (types.Pool, bool) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.GetLptDenomKey(lptDenom)) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.GetLptDenomKey(lptDenom)) if bz == nil { return types.Pool{}, false } @@ -95,7 +97,7 @@ func (k Keeper) GetLptDenomFromDenoms(ctx sdk.Context, denom1, denom2 string) (s return "", types.ErrEqualDenom } - standardDenom := k.GetStandardDenom(ctx) + standardDenom, _ := k.GetStandardDenom(ctx) if denom1 != standardDenom && denom2 != standardDenom { return "", errorsmod.Wrap(types.ErrNotContainStandardDenom, fmt.Sprintf("standard denom: %s, denom1: %s, denom2: %s", standardDenom, denom1, denom2)) } @@ -131,7 +133,7 @@ func (k Keeper) ValidatePool(ctx sdk.Context, lptDenom string) error { } func (k Keeper) setPool(ctx sdk.Context, pool *types.Pool) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) bz := k.cdc.MustMarshal(pool) store.Set(types.GetPoolKey(pool.Id), bz) @@ -143,8 +145,8 @@ func (k Keeper) setPool(ctx sdk.Context, pool *types.Pool) { // getSequence gets the next pool sequence from the store. func (k Keeper) getSequence(ctx sdk.Context) uint64 { - store := ctx.KVStore(k.storeKey) - bz := store.Get([]byte(types.KeyNextPoolSequence)) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get([]byte(types.KeyNextPoolSequence)) if bz == nil { return 1 } @@ -153,7 +155,7 @@ func (k Keeper) getSequence(ctx sdk.Context) uint64 { // setSequence sets the next pool sequence to the store. func (k Keeper) setSequence(ctx sdk.Context, sequence uint64) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) bz := sdk.Uint64ToBigEndian(sequence) store.Set([]byte(types.KeyNextPoolSequence), bz) } diff --git a/x/coinswap/keeper/swap.go b/x/coinswap/keeper/swap.go index 61301b749..81f7d6f00 100644 --- a/x/coinswap/keeper/swap.go +++ b/x/coinswap/keeper/swap.go @@ -92,9 +92,12 @@ func (k Keeper) TradeExactInputForOutput(ctx sdk.Context, input types.Input, out return sdkmath.ZeroInt(), err } - standardDenom := k.GetStandardDenom(ctx) - var quoteCoinToSwap sdk.Coin + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return sdkmath.Int{}, err + } + var quoteCoinToSwap sdk.Coin if boughtToken.Denom != standardDenom { quoteCoinToSwap = boughtToken } else { @@ -184,9 +187,12 @@ func (k Keeper) TradeInputForExactOutput(ctx sdk.Context, input types.Input, out return sdkmath.ZeroInt(), err } - standardDenom := k.GetStandardDenom(ctx) - var quoteCoinToSwap sdk.Coin + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return sdkmath.Int{}, err + } + var quoteCoinToSwap sdk.Coin if soldToken.Denom != standardDenom { quoteCoinToSwap = soldToken } else { diff --git a/x/coinswap/simulation/operations.go b/x/coinswap/simulation/operations.go index 1bf584964..9e7d7a7e5 100644 --- a/x/coinswap/simulation/operations.go +++ b/x/coinswap/simulation/operations.go @@ -92,10 +92,13 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B minLiquidity sdkmath.Int ) - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "failed to get standardDenom"), nil, nil + } + spendable := bk.SpendableCoins(ctx, account.GetAddress()) exactStandardAmt := simtypes.RandomAmount(r, spendable.AmountOf(standardDenom)) - if !exactStandardAmt.IsPositive() { return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "standardAmount should be positive"), nil, nil } @@ -206,10 +209,13 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank simAccount, _ := simtypes.RandomAcc(r, accs) account := ak.GetAccount(ctx, simAccount.Address) spendable := bk.SpendableCoins(ctx, account.GetAddress()) - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "failed to get standardDenom"), nil, err + } if spendable.IsZero() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "spendable is zero"), nil, err + return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "spendable is zero"), nil, err } // sold coin @@ -350,7 +356,10 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type ) { simAccount, _ := simtypes.RandomAcc(r, accs) account := ak.GetAccount(ctx, simAccount.Address) - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "failed to get standardDenom"), nil, err + } var ( minToken sdkmath.Int @@ -469,7 +478,11 @@ func randBoolean(r *rand.Rand) bool { // Double swap bill func doubleSwapBill(inputCoin, outputCoin sdk.Coin, ctx sdk.Context, k keeper.Keeper) (sdk.Coin, sdk.Coin, error) { - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return sdk.Coin{}, sdk.Coin{}, err + } + param := k.GetParams(ctx) // generate sold standard Coin @@ -510,7 +523,10 @@ func singleSwapBill(inputCoin, outputCoin sdk.Coin, ctx sdk.Context, k keeper.Ke // Double swap sell orders func doubleSwapSellOrder(inputCoin, outputCoin sdk.Coin, ctx sdk.Context, k keeper.Keeper) (sdk.Coin, sdk.Coin, error) { - standardDenom := k.GetStandardDenom(ctx) + standardDenom, err := k.GetStandardDenom(ctx) + if err != nil { + return sdk.Coin{}, sdk.Coin{}, err + } param := k.GetParams(ctx) diff --git a/x/onboarding/keeper/ibc_callbacks.go b/x/onboarding/keeper/ibc_callbacks.go index ff98b0ab9..17b501926 100644 --- a/x/onboarding/keeper/ibc_callbacks.go +++ b/x/onboarding/keeper/ibc_callbacks.go @@ -67,7 +67,10 @@ func (k Keeper) OnRecvPacket( return ack } - standardDenom := k.coinswapKeeper.GetStandardDenom(ctx) + standardDenom, err := k.coinswapKeeper.GetStandardDenom(ctx) + if err != nil { + return ack + } var data transfertypes.FungibleTokenPacketData if err = transfertypes.ModuleCdc.UnmarshalJSON(packet.GetData(), &data); err != nil { diff --git a/x/onboarding/types/interfaces.go b/x/onboarding/types/interfaces.go index 9d71630da..14d9bfc3f 100644 --- a/x/onboarding/types/interfaces.go +++ b/x/onboarding/types/interfaces.go @@ -45,7 +45,7 @@ type Erc20Keeper interface { type CoinwapKeeper interface { TradeInputForExactOutput(ctx sdk.Context, input coinswaptypes.Input, output coinswaptypes.Output) (sdkmath.Int, error) - GetStandardDenom(ctx sdk.Context) string + GetStandardDenom(ctx sdk.Context) (string, error) } // BankKeeper defines the banking keeper that must be fulfilled when From f419b725f9236f8629bb723ec108f31c05dcdf87 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 14:44:53 +0900 Subject: [PATCH 46/96] refactor: use KVStoreService in x/inflation --- app/app.go | 2 +- x/inflation/keeper/epoch_info.go | 18 +++++++++--------- x/inflation/keeper/epoch_mint_provisions.go | 6 +++--- x/inflation/keeper/keeper.go | 12 ++++++------ x/inflation/keeper/periods.go | 6 +++--- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/app/app.go b/app/app.go index f2cae9479..9ae18e5cc 100644 --- a/app/app.go +++ b/app/app.go @@ -654,7 +654,7 @@ func NewCanto( ) app.InflationKeeper = inflationkeeper.NewKeeper( - keys[inflationtypes.StoreKey], + runtime.NewKVStoreService(keys[inflationtypes.StoreKey]), appCodec, app.GetSubspace(inflationtypes.ModuleName), app.AccountKeeper, diff --git a/x/inflation/keeper/epoch_info.go b/x/inflation/keeper/epoch_info.go index a5bc5603b..76592629d 100644 --- a/x/inflation/keeper/epoch_info.go +++ b/x/inflation/keeper/epoch_info.go @@ -7,8 +7,8 @@ import ( // GetEpochIdentifier gets the epoch identifier func (k Keeper) GetEpochIdentifier(ctx sdk.Context) string { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyPrefixEpochIdentifier) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.KeyPrefixEpochIdentifier) if len(bz) == 0 { return "" } @@ -18,14 +18,14 @@ func (k Keeper) GetEpochIdentifier(ctx sdk.Context) string { // SetEpochsPerPeriod stores the epoch identifier func (k Keeper) SetEpochIdentifier(ctx sdk.Context, epochIdentifier string) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) store.Set(types.KeyPrefixEpochIdentifier, []byte(epochIdentifier)) } // GetEpochsPerPeriod gets the epochs per period func (k Keeper) GetEpochsPerPeriod(ctx sdk.Context) int64 { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyPrefixEpochsPerPeriod) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.KeyPrefixEpochsPerPeriod) if len(bz) == 0 { return 0 } @@ -35,14 +35,14 @@ func (k Keeper) GetEpochsPerPeriod(ctx sdk.Context) int64 { // SetEpochsPerPeriod stores the epochs per period func (k Keeper) SetEpochsPerPeriod(ctx sdk.Context, epochsPerPeriod int64) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) store.Set(types.KeyPrefixEpochsPerPeriod, sdk.Uint64ToBigEndian(uint64(epochsPerPeriod))) } // GetSkippedEpochs gets the number of skipped epochs func (k Keeper) GetSkippedEpochs(ctx sdk.Context) uint64 { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyPrefixSkippedEpochs) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.KeyPrefixSkippedEpochs) if len(bz) == 0 { return 0 } @@ -52,6 +52,6 @@ func (k Keeper) GetSkippedEpochs(ctx sdk.Context) uint64 { // SetSkippedEpochs stores the number of skipped epochs func (k Keeper) SetSkippedEpochs(ctx sdk.Context, skippedEpochs uint64) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) store.Set(types.KeyPrefixSkippedEpochs, sdk.Uint64ToBigEndian(skippedEpochs)) } diff --git a/x/inflation/keeper/epoch_mint_provisions.go b/x/inflation/keeper/epoch_mint_provisions.go index b0881067a..ea6127944 100644 --- a/x/inflation/keeper/epoch_mint_provisions.go +++ b/x/inflation/keeper/epoch_mint_provisions.go @@ -10,8 +10,8 @@ import ( // GetEpochMintProvision gets the current EpochMintProvision func (k Keeper) GetEpochMintProvision(ctx sdk.Context) (sdkmath.LegacyDec, bool) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyPrefixEpochMintProvision) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.KeyPrefixEpochMintProvision) if len(bz) == 0 { return sdkmath.LegacyZeroDec(), false } @@ -32,6 +32,6 @@ func (k Keeper) SetEpochMintProvision(ctx sdk.Context, epochMintProvision sdkmat panic(fmt.Errorf("unable to marshal amount value: %w", err)) } - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) store.Set(types.KeyPrefixEpochMintProvision, bz) } diff --git a/x/inflation/keeper/keeper.go b/x/inflation/keeper/keeper.go index b1eb4e863..b82a4b53b 100644 --- a/x/inflation/keeper/keeper.go +++ b/x/inflation/keeper/keeper.go @@ -1,8 +1,8 @@ package keeper import ( + "cosmossdk.io/core/store" "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" @@ -13,9 +13,9 @@ import ( // Keeper of the inflation store type Keeper struct { - storeKey storetypes.StoreKey - cdc codec.BinaryCodec - paramstore paramtypes.Subspace + storeService store.KVStoreService + cdc codec.BinaryCodec + paramstore paramtypes.Subspace accountKeeper types.AccountKeeper bankKeeper types.BankKeeper @@ -26,7 +26,7 @@ type Keeper struct { // NewKeeper creates a new mint Keeper instance func NewKeeper( - storeKey storetypes.StoreKey, + storeService store.KVStoreService, cdc codec.BinaryCodec, ps paramtypes.Subspace, ak types.AccountKeeper, @@ -46,7 +46,7 @@ func NewKeeper( } return Keeper{ - storeKey: storeKey, + storeService: storeService, cdc: cdc, paramstore: ps, accountKeeper: ak, diff --git a/x/inflation/keeper/periods.go b/x/inflation/keeper/periods.go index e8ab07815..f1d264465 100644 --- a/x/inflation/keeper/periods.go +++ b/x/inflation/keeper/periods.go @@ -7,8 +7,8 @@ import ( // GetPeriod gets current period func (k Keeper) GetPeriod(ctx sdk.Context) uint64 { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.KeyPrefixPeriod) + store := k.storeService.OpenKVStore(ctx) + bz, _ := store.Get(types.KeyPrefixPeriod) if len(bz) == 0 { return 0 } @@ -18,6 +18,6 @@ func (k Keeper) GetPeriod(ctx sdk.Context) uint64 { // SetPeriod stores the current period func (k Keeper) SetPeriod(ctx sdk.Context, period uint64) { - store := ctx.KVStore(k.storeKey) + store := k.storeService.OpenKVStore(ctx) store.Set(types.KeyPrefixPeriod, sdk.Uint64ToBigEndian(period)) } From ba522ce014f747b7a6bdc3e344a812d9ffaf24df Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 14:52:43 +0900 Subject: [PATCH 47/96] refactor: use KVStoreService in x/erc20 --- app/app.go | 2 +- x/erc20/keeper/evm_test.go | 7 ++-- x/erc20/keeper/grpc_query.go | 7 ++-- x/erc20/keeper/keeper.go | 12 +++--- x/erc20/keeper/msg_server_test.go | 55 ++++++++++++++------------- x/erc20/keeper/proposals_test.go | 5 ++- x/erc20/keeper/token_pairs.go | 63 +++++++++++++++++++------------ 7 files changed, 84 insertions(+), 67 deletions(-) diff --git a/app/app.go b/app/app.go index 9ae18e5cc..0f8394bb6 100644 --- a/app/app.go +++ b/app/app.go @@ -665,7 +665,7 @@ func NewCanto( ) app.Erc20Keeper = erc20keeper.NewKeeper( - keys[erc20types.StoreKey], + runtime.NewKVStoreService(keys[erc20types.StoreKey]), appCodec, app.GetSubspace(erc20types.ModuleName), app.AccountKeeper, diff --git a/x/erc20/keeper/evm_test.go b/x/erc20/keeper/evm_test.go index a1ebedb03..f8a72ad93 100644 --- a/x/erc20/keeper/evm_test.go +++ b/x/erc20/keeper/evm_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "fmt" + "github.com/cosmos/cosmos-sdk/runtime" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" @@ -92,7 +93,7 @@ func (suite *KeeperTestSuite) TestBalanceOf() { mockEVMKeeper = &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) tc.malleate() @@ -279,7 +280,7 @@ func (suite *KeeperTestSuite) TestForceFail() { mockEVMKeeper = &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) tc.malleate() @@ -367,7 +368,7 @@ func (suite *KeeperTestSuite) TestQueryERC20ForceFail() { mockEVMKeeper = &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) tc.malleate() diff --git a/x/erc20/keeper/grpc_query.go b/x/erc20/keeper/grpc_query.go index c8ffb84db..49108b884 100644 --- a/x/erc20/keeper/grpc_query.go +++ b/x/erc20/keeper/grpc_query.go @@ -7,6 +7,7 @@ import ( "google.golang.org/grpc/status" "cosmossdk.io/store/prefix" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" ethermint "github.com/evmos/ethermint/types" @@ -25,9 +26,9 @@ func (k Keeper) TokenPairs(c context.Context, req *types.QueryTokenPairsRequest) ctx := sdk.UnwrapSDKContext(c) var pairs []types.TokenPair - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPair) - - pageRes, err := query.Paginate(store, req.Pagination, func(_, value []byte) error { + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPair) + pageRes, err := query.Paginate(prefixStore, req.Pagination, func(_, value []byte) error { var pair types.TokenPair if err := k.cdc.Unmarshal(value, &pair); err != nil { return err diff --git a/x/erc20/keeper/keeper.go b/x/erc20/keeper/keeper.go index f09ae1bd5..8449378f1 100644 --- a/x/erc20/keeper/keeper.go +++ b/x/erc20/keeper/keeper.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" + "cosmossdk.io/core/store" "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" @@ -14,9 +14,9 @@ import ( // Keeper of this module maintains collections of erc20. type Keeper struct { - storeKey storetypes.StoreKey - cdc codec.BinaryCodec - paramstore paramtypes.Subspace + storeService store.KVStoreService + cdc codec.BinaryCodec + paramstore paramtypes.Subspace accountKeeper types.AccountKeeper bankKeeper types.BankKeeper @@ -29,7 +29,7 @@ type Keeper struct { // NewKeeper creates new instances of the erc20 Keeper func NewKeeper( - storeKey storetypes.StoreKey, + storeService store.KVStoreService, cdc codec.BinaryCodec, ps paramtypes.Subspace, ak types.AccountKeeper, @@ -44,7 +44,7 @@ func NewKeeper( } return Keeper{ - storeKey: storeKey, + storeService: storeService, cdc: cdc, paramstore: ps, accountKeeper: ak, diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 9b4c0b034..027c9860a 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -8,6 +8,7 @@ import ( "github.com/Canto-Network/Canto/v7/x/erc20/keeper" "github.com/Canto-Network/Canto/v7/x/erc20/types" inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -147,7 +148,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -163,7 +164,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -185,7 +186,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -278,7 +279,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -295,7 +296,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -318,7 +319,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -341,7 +342,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) @@ -355,7 +356,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeCoin() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) @@ -557,7 +558,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -579,7 +580,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -602,7 +603,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -625,7 +626,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -647,7 +648,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to mint")) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) @@ -667,7 +668,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) @@ -687,7 +688,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("MintCoins", mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) @@ -835,7 +836,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -856,7 +857,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -877,7 +878,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -899,7 +900,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1097,7 +1098,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1113,7 +1114,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1135,7 +1136,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1228,7 +1229,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1245,7 +1246,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1268,7 +1269,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) existingAcc := &statedb.Account{Nonce: uint64(1), Balance: common.Big1} balance := make([]uint8, 32) @@ -1291,7 +1292,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(fmt.Errorf("failed to unescrow")) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) @@ -1305,7 +1306,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { mockBankKeeper := &MockBankKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, mockBankKeeper, suite.app.EvmKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockBankKeeper.On("SendCoinsFromModuleToAccount", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) mockBankKeeper.On("BlockedAddr", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(false) diff --git a/x/erc20/keeper/proposals_test.go b/x/erc20/keeper/proposals_test.go index 1ebc679c2..37c2d4ff4 100644 --- a/x/erc20/keeper/proposals_test.go +++ b/x/erc20/keeper/proposals_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "fmt" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -152,7 +153,7 @@ func (suite KeeperTestSuite) TestRegisterCoin() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) }, @@ -248,7 +249,7 @@ func (suite KeeperTestSuite) TestRegisterERC20() { mockEVMKeeper := &MockEVMKeeper{} sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.Erc20Keeper = keeper.NewKeeper(suite.app.GetKey("erc20"), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.app.Erc20Keeper = keeper.NewKeeper(runtime.NewKVStoreService(suite.app.GetKey("erc20")), suite.app.AppCodec(), sp, suite.app.AccountKeeper, suite.app.BankKeeper, mockEVMKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) mockEVMKeeper.On("EstimateGas", mock.Anything, mock.Anything).Return(&evmtypes.EstimateGasResponse{Gas: uint64(200)}, nil) mockEVMKeeper.On("ApplyMessage", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, fmt.Errorf("forced ApplyMessage error")) }, diff --git a/x/erc20/keeper/token_pairs.go b/x/erc20/keeper/token_pairs.go index febe9ec09..f5840f1d3 100644 --- a/x/erc20/keeper/token_pairs.go +++ b/x/erc20/keeper/token_pairs.go @@ -3,6 +3,7 @@ package keeper import ( "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" @@ -13,7 +14,7 @@ import ( func (k Keeper) GetTokenPairs(ctx sdk.Context) []types.TokenPair { tokenPairs := []types.TokenPair{} - store := ctx.KVStore(k.storeKey) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) iterator := storetypes.KVStorePrefixIterator(store, types.KeyPrefixTokenPair) defer iterator.Close() @@ -42,9 +43,10 @@ func (k Keeper) GetTokenPair(ctx sdk.Context, id []byte) (types.TokenPair, bool) return types.TokenPair{}, false } - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPair) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPair) var tokenPair types.TokenPair - bz := store.Get(id) + bz := prefixStore.Get(id) if len(bz) == 0 { return types.TokenPair{}, false } @@ -55,10 +57,11 @@ func (k Keeper) GetTokenPair(ctx sdk.Context, id []byte) (types.TokenPair, bool) // SetTokenPair stores a token pair func (k Keeper) SetTokenPair(ctx sdk.Context, tokenPair types.TokenPair) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPair) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPair) key := tokenPair.GetID() bz := k.cdc.MustMarshal(&tokenPair) - store.Set(key, bz) + prefixStore.Set(key, bz) } // DeleteTokenPair removes a token pair. @@ -71,60 +74,70 @@ func (k Keeper) DeleteTokenPair(ctx sdk.Context, tokenPair types.TokenPair) { // deleteTokenPair deletes the token pair for the given id func (k Keeper) deleteTokenPair(ctx sdk.Context, id []byte) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPair) - store.Delete(id) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPair) + prefixStore.Delete(id) } // GetERC20Map returns the token pair id for the given address func (k Keeper) GetERC20Map(ctx sdk.Context, erc20 common.Address) []byte { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByERC20) - return store.Get(erc20.Bytes()) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByERC20) + return prefixStore.Get(erc20.Bytes()) } // GetDenomMap returns the token pair id for the given denomination func (k Keeper) GetDenomMap(ctx sdk.Context, denom string) []byte { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByDenom) - return store.Get([]byte(denom)) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByDenom) + return prefixStore.Get([]byte(denom)) } // SetERC20Map sets the token pair id for the given address func (k Keeper) SetERC20Map(ctx sdk.Context, erc20 common.Address, id []byte) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByERC20) - store.Set(erc20.Bytes(), id) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByERC20) + prefixStore.Set(erc20.Bytes(), id) } // deleteERC20Map deletes the token pair id for the given address func (k Keeper) deleteERC20Map(ctx sdk.Context, erc20 common.Address) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByERC20) - store.Delete(erc20.Bytes()) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByERC20) + prefixStore.Delete(erc20.Bytes()) } // SetDenomMap sets the token pair id for the denomination func (k Keeper) SetDenomMap(ctx sdk.Context, denom string, id []byte) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByDenom) - store.Set([]byte(denom), id) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByDenom) + prefixStore.Set([]byte(denom), id) } // deleteDenomMap deletes the token pair id for the given denom func (k Keeper) deleteDenomMap(ctx sdk.Context, denom string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByDenom) - store.Delete([]byte(denom)) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByDenom) + prefixStore.Delete([]byte(denom)) } // IsTokenPairRegistered - check if registered token tokenPair is registered func (k Keeper) IsTokenPairRegistered(ctx sdk.Context, id []byte) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPair) - return store.Has(id) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPair) + return prefixStore.Has(id) } // IsERC20Registered check if registered ERC20 token is registered func (k Keeper) IsERC20Registered(ctx sdk.Context, erc20 common.Address) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByERC20) - return store.Has(erc20.Bytes()) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByERC20) + return prefixStore.Has(erc20.Bytes()) } // IsDenomRegistered check if registered coin denom is registered func (k Keeper) IsDenomRegistered(ctx sdk.Context, denom string) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixTokenPairByDenom) - return store.Has([]byte(denom)) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixTokenPairByDenom) + return prefixStore.Has([]byte(denom)) } From 263b96077b96811789134d12f30decc647c51830 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 14:55:47 +0900 Subject: [PATCH 48/96] refactor: use KVStoreService in x/govshuttle --- app/app.go | 2 +- x/govshuttle/keeper/keeper.go | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/app/app.go b/app/app.go index 0f8394bb6..86c35937f 100644 --- a/app/app.go +++ b/app/app.go @@ -675,7 +675,7 @@ func NewCanto( ) app.GovshuttleKeeper = govshuttlekeeper.NewKeeper( - keys[govshuttletypes.StoreKey], + runtime.NewKVStoreService(keys[govshuttletypes.StoreKey]), appCodec, app.GetSubspace(govshuttletypes.ModuleName), app.AccountKeeper, diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index 958caae89..22a0dd6f4 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -3,13 +3,14 @@ package keeper import ( "fmt" + "cosmossdk.io/core/store" "cosmossdk.io/store/prefix" - storetypes "cosmossdk.io/store/types" "github.com/ethereum/go-ethereum/common" "cosmossdk.io/log" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" @@ -17,9 +18,9 @@ import ( type ( Keeper struct { - storeKey storetypes.StoreKey - cdc codec.BinaryCodec - paramstore paramtypes.Subspace + storeService store.KVStoreService + cdc codec.BinaryCodec + paramstore paramtypes.Subspace accKeeper types.AccountKeeper erc20Keeper types.ERC20Keeper @@ -28,7 +29,7 @@ type ( ) func NewKeeper( - storeKey storetypes.StoreKey, + storeService store.KVStoreService, cdc codec.BinaryCodec, ps paramtypes.Subspace, @@ -44,12 +45,12 @@ func NewKeeper( return Keeper{ - cdc: cdc, - storeKey: storeKey, - paramstore: ps, - accKeeper: ak, - erc20Keeper: ek, - govKeeper: gk, + cdc: cdc, + storeService: storeService, + paramstore: ps, + accKeeper: ak, + erc20Keeper: ek, + govKeeper: gk, } } @@ -59,8 +60,9 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { // retrieve the port address from state func (k Keeper) GetPort(ctx sdk.Context) (common.Address, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PortKey) - bz := store.Get(types.PortKey) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.PortKey) + bz := prefixStore.Get(types.PortKey) // if not found return false if len(bz) == 0 { return common.Address{}, false @@ -70,6 +72,7 @@ func (k Keeper) GetPort(ctx sdk.Context) (common.Address, bool) { // commit the address of the current govShuttle mapcontract to state (Port.sol) func (k Keeper) SetPort(ctx sdk.Context, portAddr common.Address) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PortKey) - store.Set(types.PortKey, portAddr.Bytes()) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.PortKey) + prefixStore.Set(types.PortKey, portAddr.Bytes()) } From 8aa615c942dc9a34516bc88c8d374aa7e5972330 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 14:59:40 +0900 Subject: [PATCH 49/96] refactor: use KVStoreService in x/csr --- app/app.go | 2 +- x/csr/keeper/csr.go | 27 +++++++++++++++++---------- x/csr/keeper/grpc_query.go | 6 ++++-- x/csr/keeper/keeper.go | 12 ++++++------ 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/app/app.go b/app/app.go index 86c35937f..9553abef6 100644 --- a/app/app.go +++ b/app/app.go @@ -685,7 +685,7 @@ func NewCanto( app.CSRKeeper = csrkeeper.NewKeeper( appCodec, - keys[csrtypes.StoreKey], + runtime.NewKVStoreService(keys[csrtypes.StoreKey]), app.GetSubspace(csrtypes.ModuleName), app.AccountKeeper, app.EvmKeeper, diff --git a/x/csr/keeper/csr.go b/x/csr/keeper/csr.go index 39e702d12..57a9f1482 100644 --- a/x/csr/keeper/csr.go +++ b/x/csr/keeper/csr.go @@ -5,6 +5,7 @@ import ( "cosmossdk.io/store/prefix" "github.com/Canto-Network/Canto/v7/x/csr/types" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" ) @@ -12,10 +13,11 @@ import ( // Returns a CSR object given an NFT ID. If the ID is invalid, i.e. it does not // exist, then GetCSR will return (nil, false). Otherwise (csr, true). func (k Keeper) GetCSR(ctx sdk.Context, nftId uint64) (*types.CSR, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixCSR) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixCSR) key := UInt64ToBytes(nftId) - bz := store.Get(key) + bz := prefixStore.Get(key) if len(bz) == 0 { return nil, false } @@ -28,8 +30,9 @@ func (k Keeper) GetCSR(ctx sdk.Context, nftId uint64) (*types.CSR, bool) { // Returns the NFT ID associated with a smart contract address. If the smart contract address // entered does belong to some NFT, then it will return (id, true), otherwise (0, false). func (k Keeper) GetNFTByContract(ctx sdk.Context, address string) (uint64, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixContract) - bz := store.Get([]byte(address)) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixContract) + bz := prefixStore.Get([]byte(address)) if len(bz) == 0 { return 0, false } @@ -47,13 +50,15 @@ func (k Keeper) SetCSR(ctx sdk.Context, csr types.CSR) { // Convert the NFT ID to bytes nftId := UInt64ToBytes(csr.Id) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + // Sets the id of the NFT to the CSR object itself - storeCSR := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixCSR) + storeCSR := prefix.NewStore(store, types.KeyPrefixCSR) storeCSR.Set(nftId, bz) // Add a new key, value pair in the store mapping the contract to NFT ID contracts := csr.Contracts - storeContracts := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixContract) + storeContracts := prefix.NewStore(store, types.KeyPrefixContract) for _, contract := range contracts { storeContracts.Set([]byte(contract), nftId) } @@ -61,9 +66,10 @@ func (k Keeper) SetCSR(ctx sdk.Context, csr types.CSR) { // Retrieves the deployed Turnstile Address from state if found. func (k Keeper) GetTurnstile(ctx sdk.Context) (common.Address, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixAddrs) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixAddrs) // retrieve state object at TurnstileKey - bz := store.Get(types.TurnstileKey) + bz := prefixStore.Get(types.TurnstileKey) if len(bz) == 0 { return common.Address{}, false } @@ -72,8 +78,9 @@ func (k Keeper) GetTurnstile(ctx sdk.Context) (common.Address, bool) { // Sets the deployed Turnstile Address to state. func (k Keeper) SetTurnstile(ctx sdk.Context, turnstile common.Address) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixAddrs) - store.Set(types.TurnstileKey, turnstile.Bytes()) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixAddrs) + prefixStore.Set(types.TurnstileKey, turnstile.Bytes()) } // Converts a uint64 to a []byte diff --git a/x/csr/keeper/grpc_query.go b/x/csr/keeper/grpc_query.go index 1da9693f4..e796e2bf8 100644 --- a/x/csr/keeper/grpc_query.go +++ b/x/csr/keeper/grpc_query.go @@ -6,6 +6,7 @@ import ( "cosmossdk.io/store/prefix" "github.com/Canto-Network/Canto/v7/x/csr/types" + "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" ethermint "github.com/evmos/ethermint/types" @@ -29,11 +30,12 @@ func (k Keeper) CSRs(c context.Context, request *types.QueryCSRsRequest) (*types } ctx := sdk.UnwrapSDKContext(c) - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixCSR) + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + prefixStore := prefix.NewStore(store, types.KeyPrefixCSR) csrs := make([]types.CSR, 0) pageRes, err := query.Paginate( - store, + prefixStore, request.Pagination, func(key, value []byte) error { nft := BytesToUInt64(key) diff --git a/x/csr/keeper/keeper.go b/x/csr/keeper/keeper.go index c351d2d87..b4a40d5b0 100644 --- a/x/csr/keeper/keeper.go +++ b/x/csr/keeper/keeper.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" + "cosmossdk.io/core/store" "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" "github.com/Canto-Network/Canto/v7/x/csr/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" @@ -13,9 +13,9 @@ import ( type ( Keeper struct { - cdc codec.BinaryCodec - storeKey storetypes.StoreKey - paramstore paramtypes.Subspace + cdc codec.BinaryCodec + storeService store.KVStoreService + paramstore paramtypes.Subspace accountKeeper types.AccountKeeper evmKeeper types.EVMKeeper @@ -26,7 +26,7 @@ type ( func NewKeeper( cdc codec.BinaryCodec, - storeKey storetypes.StoreKey, + storeService store.KVStoreService, ps paramtypes.Subspace, accountKeeper types.AccountKeeper, evmKeeper types.EVMKeeper, @@ -39,7 +39,7 @@ func NewKeeper( } return Keeper{ - storeKey: storeKey, + storeService: storeService, cdc: cdc, paramstore: ps, accountKeeper: accountKeeper, From f8cef063101c383fbc33f1ae003e53895eba3b60 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 15:48:23 +0900 Subject: [PATCH 50/96] test: fix AppStateFromGenesisFileFn --- app/sim_test.go | 5 +++-- app/state.go | 23 ++++++++--------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/sim_test.go b/app/sim_test.go index cc469a924..78d0d1387 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -67,7 +67,7 @@ func interBlockCacheOpt() func(app *baseapp.BaseApp) { func TestFullAppSimulation(t *testing.T) { config := simcli.NewConfigFromFlags() - config.ChainID = "canto_9000-1" + config.ChainID = types.TestnetChainID + "-1" db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { @@ -83,9 +83,10 @@ func TestFullAppSimulation(t *testing.T) { appOptions := make(simtestutil.AppOptionsMap, 0) appOptions[flags.FlagHome] = DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue + appOptions[flags.FlagChainID] = "canto_9000-1" // TODO: shadowed - cantoApp := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + cantoApp := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) require.Equal(t, cantoconfig.AppName, cantoApp.Name()) // run randomized simulation diff --git a/app/state.go b/app/state.go index 2b887b876..564fbe50d 100644 --- a/app/state.go +++ b/app/state.go @@ -9,7 +9,6 @@ import ( "time" sdkmath "cosmossdk.io/math" - tmjson "github.com/cometbft/cometbft/libs/json" tmtypes "github.com/cometbft/cometbft/types" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -19,6 +18,7 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" @@ -197,19 +197,8 @@ func AppStateRandomizedFn( // AppStateFromGenesisFileFn util function to generate the genesis AppState // from a genesis.json file. -func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (tmtypes.GenesisDoc, []simtypes.Account) { - bytes, err := os.ReadFile(genesisFile) - if err != nil { - panic(err) - } - - var genesis tmtypes.GenesisDoc - if err := tmjson.Unmarshal(bytes, &genesis); err != nil { - panic(err) - } - - var appState GenesisState - err = json.Unmarshal(genesis.AppState, &appState) +func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile string) (*tmtypes.GenesisDoc, []simtypes.Account) { + appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genesisFile) if err != nil { panic(err) } @@ -244,5 +233,9 @@ func AppStateFromGenesisFileFn(r io.Reader, cdc codec.JSONCodec, genesisFile str newAccs[i] = simAcc } - return genesis, newAccs + tmtypesGenesis, err := genDoc.ToGenesisDoc() + if err != nil { + panic(err) + } + return tmtypesGenesis, newAccs } From 676ff7253e417372e5c929dd5ace181f97a92713 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 16:57:54 +0900 Subject: [PATCH 51/96] chore: add config, purning, snapshot commands --- app/sim_test.go | 2 +- cmd/cantod/root.go | 9 ++++++++- init.bat | 4 ++-- init.sh | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/sim_test.go b/app/sim_test.go index 78d0d1387..69afb7bd0 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -69,7 +69,7 @@ func TestFullAppSimulation(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = types.TestnetChainID + "-1" - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, true) if skip { t.Skip("skipping application simulation") } diff --git a/cmd/cantod/root.go b/cmd/cantod/root.go index b5a33456d..01c53767f 100644 --- a/cmd/cantod/root.go +++ b/cmd/cantod/root.go @@ -15,11 +15,14 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "cosmossdk.io/log" + confixcmd "cosmossdk.io/tools/confix/cmd" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/pruning" "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/client/snapshot" "github.com/cosmos/cosmos-sdk/crypto/keyring" sdkserver "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" @@ -118,6 +121,8 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { cfg := sdk.GetConfig() cfg.Seal() + a := appCreator{encodingConfig} + rootCmd.AddCommand( ethermintclient.ValidateChainID( InitCmd(tempApp.BasicModuleManager, app.DefaultNodeHome), @@ -141,9 +146,11 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { tmcli.NewCompletionCmd(rootCmd, true), NewTestnetCmd(tempApp.BasicModuleManager, banktypes.GenesisBalancesIterator{}), debug.Cmd(), + confixcmd.ConfigCommand(), + pruning.Cmd(a.newApp, app.DefaultNodeHome), + snapshot.Cmd(a.newApp), ) - a := appCreator{encodingConfig} ethermintserver.AddCommands(rootCmd, app.DefaultNodeHome, a.newApp, a.appExport, addModuleInitFlags) // add keybase, auxiliary RPC, query, and tx child commands diff --git a/init.bat b/init.bat index 049d06fa1..f8ee4506d 100644 --- a/init.bat +++ b/init.bat @@ -30,8 +30,8 @@ go build .\cmd\cantod @echo clear home folder del /s /q %HOME% -cantod config keyring-backend %KEYRING% -cantod config chain-id %CHAINID% +cantod config set client chain-id %CHAINID% +cantod config set client keyring-backend %KEYRING% cantod keys add %KEY% --keyring-backend %KEYRING% --algo %KEYALGO% diff --git a/init.sh b/init.sh index 9c71ac1d6..f10730dd0 100755 --- a/init.sh +++ b/init.sh @@ -16,8 +16,8 @@ rm -rf ~/.cantod* make install # Set client config -cantod config keyring-backend $KEYRING -cantod config chain-id $CHAINID +cantod config set client chain-id $CHAINID +cantod config set client keyring-backend $KEYRING # if $KEY exists it should be deleted cantod keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO From 5c9651cb0ae2ac2ac93da0178edbfaac4cc1e066 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Jan 2024 17:52:36 +0900 Subject: [PATCH 52/96] test: fix sim-custom-genesis-fast --- Makefile | 3 +-- app/sim_test.go | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 05fe89ffc..d7f2b29e3 100755 --- a/Makefile +++ b/Makefile @@ -390,8 +390,7 @@ test-sim-nondeterminism-long: test-sim-custom-genesis-fast: @echo "Running custom genesis simulation..." @echo "By default, ${HOME}/.$(canto_DIR)/config/genesis.json will be used." - @go test -mod=readonly $(SIMAPP) -run TestFullAppSimulation -Genesis=${HOME}/.$(canto_DIR)/config/genesis.json \ - -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=5 -Period=1 -v -timeout 1h + @go test -mod=readonly $(SIMAPP) -run TestFullAppSimulation -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=5 -Period=1 -v -timeout 1h test-sim-import-export: runsim @echo "Running application import/export simulation. This may take several minutes..." diff --git a/app/sim_test.go b/app/sim_test.go index 69afb7bd0..500b32b04 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -68,6 +68,7 @@ func interBlockCacheOpt() func(app *baseapp.BaseApp) { func TestFullAppSimulation(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = types.TestnetChainID + "-1" + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, true) if skip { From 3ce63882675cfacd6f4d67ddeae78cf321b6b41c Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 26 Jan 2024 19:22:36 +0900 Subject: [PATCH 53/96] wip: TestAppExportImport simulation --- app/sim_test.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/sim_test.go b/app/sim_test.go index 500b32b04..735358c64 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -115,7 +115,9 @@ func TestFullAppSimulation(t *testing.T) { func TestAppImportExport(t *testing.T) { config := simcli.NewConfigFromFlags() - config.ChainID = "canto_9000-1" + config.ChainID = types.TestnetChainID + "-1" + + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { @@ -134,7 +136,7 @@ func TestAppImportExport(t *testing.T) { sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) require.Equal(t, cantoconfig.AppName, app.Name()) // run randomized simulation @@ -174,7 +176,7 @@ func TestAppImportExport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) require.Equal(t, cantoconfig.AppName, newApp.Name()) var genesisState GenesisState @@ -332,7 +334,7 @@ func TestAppStateDeterminism(t *testing.T) { func TestAppSimulationAfterImport(t *testing.T) { config := simcli.NewConfigFromFlags() - config.ChainID = "canto_9000-1" + config.ChainID = types.TestnetChainID + "-1" db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { @@ -351,7 +353,7 @@ func TestAppSimulationAfterImport(t *testing.T) { sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + app := NewCanto(logger, db, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) require.Equal(t, cantoconfig.AppName, app.Name()) // Run randomized simulation From 265ed929992c7bd434c8022945d8292c8db65e94 Mon Sep 17 00:00:00 2001 From: poorphd Date: Mon, 29 Jan 2024 16:31:17 +0900 Subject: [PATCH 54/96] feat: TestAppExportImport & TestAppSimulationAfterImport simulation --- app/sim_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/sim_test.go b/app/sim_test.go index 735358c64..37c38f5f4 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/Canto-Network/Canto/v7/types" "github.com/spf13/viper" "github.com/stretchr/testify/require" @@ -212,7 +213,8 @@ func TestAppImportExport(t *testing.T) { feegrant.StoreKey: {feegrant.FeeAllowanceQueueKeyPrefix}, slashingtypes.StoreKey: {slashingtypes.ValidatorMissedBlockBitmapKeyPrefix}, // In the case of epoch module, the value is updated when importing genesis, so the store consistency is broken - epochstypes.StoreKey: {epochstypes.KeyPrefixEpoch}, + epochstypes.StoreKey: {epochstypes.KeyPrefixEpoch}, + upgradetypes.StoreKey: {[]byte{upgradetypes.VersionMapByte}}, } storeKeys := app.GetStoreKeys() @@ -226,9 +228,11 @@ func TestAppImportExport(t *testing.T) { keyName := appKeyA.Name() appKeyB := newApp.GetKey(keyName) + fmt.Println(appKeyA, appKeyB) storeA := ctxA.KVStore(appKeyA) storeB := ctxB.KVStore(appKeyB) + fmt.Println(storeA, storeB) failedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skipPrefixes[keyName]) require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare %s", keyName) @@ -398,7 +402,7 @@ func TestAppSimulationAfterImport(t *testing.T) { require.NoError(t, os.RemoveAll(newDir)) }() - newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt) + newApp := NewCanto(log.NewNopLogger(), newDB, nil, true, map[int64]bool{}, DefaultNodeHome, simcli.FlagPeriodValue, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(types.TestnetChainID+"-1")) require.Equal(t, cantoconfig.AppName, newApp.Name()) newApp.InitChain(&abci.RequestInitChain{ From 3f2d25f3f2ee1b56e8cbe70e131ff09fa1f68fc6 Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 31 Jan 2024 20:06:40 +0900 Subject: [PATCH 55/96] wip: upgrade handler --- app/app.go | 9 ++++++++- app/upgrades/v8/upgrades.go | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 9553abef6..948aec500 100644 --- a/app/app.go +++ b/app/app.go @@ -1406,7 +1406,11 @@ func (app *Canto) setupUpgradeHandlers() { // v8 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v8.UpgradeName, - v8.CreateUpgradeHandler(app.ModuleManager, app.configurator), + v8.CreateUpgradeHandler( + app.ModuleManager, + app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()), + app.ConsensusParamsKeeper.ParamsStore, + app.configurator), ) // When a planned update height is reached, the old binary will panic @@ -1445,6 +1449,9 @@ func (app *Canto) setupUpgradeHandlers() { } case v8.UpgradeName: // no store upgrades in v8 + storeUpgrades = &storetypes.StoreUpgrades{ + Added: []string{crisistypes.StoreKey, circuittypes.StoreKey, consensusparamtypes.StoreKey, group.StoreKey, nft.StoreKey}, + } } if storeUpgrades != nil { diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 7c582f925..20fbb4b5e 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -3,20 +3,29 @@ package v8 import ( "context" + "cosmossdk.io/collections" upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cometbft/cometbft/proto/tendermint/types" + "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v8 func CreateUpgradeHandler( mm *module.Manager, + legacySubspace paramstypes.Subspace, + consensusParamsKeeper collections.Item[types.ConsensusParams], configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { sdkCtx := sdk.UnwrapSDKContext(ctx) logger := sdkCtx.Logger().With("upgrade: ", UpgradeName) + if err := baseapp.MigrateParams(sdkCtx, legacySubspace, consensusParamsKeeper); err != nil { + return vm, err + } // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") return mm.RunMigrations(ctx, configurator, vm) From 99267ee7cfa7c24af32b5320935efef2c610409e Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 2 Feb 2024 12:54:30 +0900 Subject: [PATCH 56/96] wip: upgrade handler --- app/app.go | 75 +++++++++++++++++++++++++++++++++++++++++++++++++--- go.mod | 41 +++++++++++++++-------------- go.sum | 77 ++++++++++++++++++++++++++++-------------------------- 3 files changed, 133 insertions(+), 60 deletions(-) diff --git a/app/app.go b/app/app.go index 948aec500..e5e74d39f 100644 --- a/app/app.go +++ b/app/app.go @@ -8,9 +8,14 @@ import ( "net/http" "os" "path/filepath" + "sync" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/gogoproto/proto" + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" @@ -287,6 +292,7 @@ type Canto struct { configurator module.Configurator tpsCounter *tpsCounter + once sync.Once } func init() { @@ -1309,6 +1315,27 @@ func (app *Canto) GetTxConfig() client.TxConfig { return app.txConfig } +func (app *Canto) FinalizeBlock(req *abci.RequestFinalizeBlock) (*abci.ResponseFinalizeBlock, error) { + // when skipping sdk 47 for sdk 50, the upgrade handler is called too late in BaseApp + // this is a hack to ensure that the migration is executed when needed and not panics + app.once.Do(func() { + ctx := app.NewUncachedContext(false, tmproto.Header{}) + if _, err := app.ConsensusParamsKeeper.Params(ctx, &consensusparamtypes.QueryParamsRequest{}); err != nil { + // prevents panic: consensus key is nil: collections: not found: key 'no_key' of type github.com/cosmos/gogoproto/tendermint.types.ConsensusParams + // sdk 47: + // Migrate Tendermint consensus parameters from x/params module to a dedicated x/consensus module. + // see https://github.com/cosmos/cosmos-sdk/blob/v0.47.0/simapp/upgrades.go#L66 + baseAppLegacySS := app.GetSubspace(baseapp.Paramspace) + err := baseapp.MigrateParams(sdk.UnwrapSDKContext(ctx), baseAppLegacySS, app.ConsensusParamsKeeper.ParamsStore) + if err != nil { + panic(err) + } + } + }) + + return app.BaseApp.FinalizeBlock(req) +} + // RegisterSwaggerAPI registers swagger route with API Server func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router) { statikFS, err := fs.New() @@ -1353,8 +1380,8 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(slashingtypes.ModuleName) paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) - paramsKeeper.Subspace(ibctransfertypes.ModuleName) - paramsKeeper.Subspace(ibcexported.ModuleName) + //paramsKeeper.Subspace(ibctransfertypes.ModuleName) + //paramsKeeper.Subspace(ibcexported.ModuleName) // ethermint subspaces paramsKeeper.Subspace(evmtypes.ModuleName) paramsKeeper.Subspace(feemarkettypes.ModuleName) @@ -1365,6 +1392,12 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(govshuttletypes.ModuleName) paramsKeeper.Subspace(csrtypes.ModuleName) paramsKeeper.Subspace(coinswaptypes.ModuleName) + + keyTable := ibcclienttypes.ParamKeyTable() + keyTable.RegisterParamSet(&ibcconnectiontypes.Params{}) + paramsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(keyTable) + paramsKeeper.Subspace(ibctransfertypes.ModuleName).WithKeyTable(ibctransfertypes.ParamKeyTable()) + return paramsKeeper } @@ -1448,7 +1481,7 @@ func (app *Canto) setupUpgradeHandlers() { Added: []string{onboardingtypes.StoreKey, coinswaptypes.StoreKey}, } case v8.UpgradeName: - // no store upgrades in v8 + setupLegacyKeyTables(&app.ParamsKeeper) storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{crisistypes.StoreKey, circuittypes.StoreKey, consensusparamtypes.StoreKey, group.StoreKey, nft.StoreKey}, } @@ -1459,3 +1492,39 @@ func (app *Canto) setupUpgradeHandlers() { app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, storeUpgrades)) } } + +func setupLegacyKeyTables(k *paramskeeper.Keeper) { + for _, subspace := range k.GetSubspaces() { + subspace := subspace + + var keyTable paramstypes.KeyTable + switch subspace.Name() { + case authtypes.ModuleName: + keyTable = authtypes.ParamKeyTable() //nolint:staticcheck + case banktypes.ModuleName: + keyTable = banktypes.ParamKeyTable() //nolint:staticcheck + case stakingtypes.ModuleName: + keyTable = stakingtypes.ParamKeyTable() //nolint:staticcheck + case minttypes.ModuleName: + keyTable = minttypes.ParamKeyTable() //nolint:staticcheck + case distrtypes.ModuleName: + keyTable = distrtypes.ParamKeyTable() //nolint:staticcheck + case slashingtypes.ModuleName: + keyTable = slashingtypes.ParamKeyTable() //nolint:staticcheck + case govtypes.ModuleName: + keyTable = govv1.ParamKeyTable() //nolint:staticcheck + case crisistypes.ModuleName: + keyTable = crisistypes.ParamKeyTable() //nolint:staticcheck + // wasm + default: + continue + } + + if !subspace.HasKeyTable() { + subspace.WithKeyTable(keyTable) + } + } + // sdk 47 + //k.Subspace(baseapp.Paramspace). + // WithKeyTable(paramstypes.ConsensusParamsKeyTable()) +} diff --git a/go.mod b/go.mod index 805c91af3..c5e38c653 100644 --- a/go.mod +++ b/go.mod @@ -7,21 +7,22 @@ toolchain go1.21.4 require ( cosmossdk.io/api v0.7.2 cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.12.0 - cosmossdk.io/log v1.2.1 + cosmossdk.io/log v1.3.0 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced - cosmossdk.io/store v1.0.0 + cosmossdk.io/store v1.0.2 cosmossdk.io/tools/confix v0.1.0 cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c - cosmossdk.io/x/tx v0.12.0 + cosmossdk.io/x/tx v0.13.0 cosmossdk.io/x/upgrade v0.1.0 github.com/cometbft/cometbft v0.38.2 github.com/cosmos/cosmos-db v1.0.0 github.com/cosmos/cosmos-proto v1.0.0-beta.3 - github.com/cosmos/cosmos-sdk v0.50.1 + github.com/cosmos/cosmos-sdk v0.50.3 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0 @@ -42,9 +43,9 @@ require ( github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 go.opencensus.io v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 - google.golang.org/grpc v1.59.0 - google.golang.org/protobuf v1.31.0 + google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f + google.golang.org/grpc v1.60.1 + google.golang.org/protobuf v1.32.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -54,9 +55,9 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.30.1 // indirect - cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect @@ -71,7 +72,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft-db v0.8.0 // indirect + github.com/cometbft/cometbft-db v0.9.1 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect @@ -105,7 +106,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/linxGnu/grocksdb v1.8.5 // indirect + github.com/linxGnu/grocksdb v1.8.6 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -131,16 +132,16 @@ require ( golang.org/x/tools v0.15.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.149.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect gotest.tools/v3 v3.5.1 // indirect pgregory.net/rapid v1.1.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) require ( - cosmossdk.io/errors v1.0.0 + cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.2.0 filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -177,7 +178,7 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/golang/glog v1.1.2 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/orderedcode v0.0.1 // indirect @@ -197,7 +198,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.3 // indirect + github.com/klauspost/compress v1.17.4 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -232,12 +233,12 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/zondax/hid v0.9.2 // indirect go.etcd.io/bbolt v1.3.8 // indirect - golang.org/x/crypto v0.15.0 // indirect + golang.org/x/crypto v0.16.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa - golang.org/x/net v0.18.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/sync v0.5.0 - golang.org/x/sys v0.14.0 // indirect - golang.org/x/term v0.14.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect diff --git a/go.sum b/go.sum index 2e7341fb2..f16823b39 100644 --- a/go.sum +++ b/go.sum @@ -197,16 +197,16 @@ cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= -cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= -cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= -cosmossdk.io/log v1.2.1 h1:Xc1GgTCicniwmMiKwDxUjO4eLhPxoVdI9vtMW8Ti/uk= -cosmossdk.io/log v1.2.1/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.3.0 h1:L0Z0XstClo2kOU4h3V1iDoE5Ji64sg5HLOogzGg67Oo= +cosmossdk.io/log v1.3.0/go.mod h1:HIDyvWLqZe2ovlWabsDN4aPMpY/nUEquAhgfTf2ZzB8= cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced h1:l5rW4cKGOGyo2ZinzmuhleebC5OpMEv3qsabKyRXUV0= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced/go.mod h1:EdpAqccZXp8XnV2FFMCdEt+Xq+3pbzIb2KzGAyi6GGc= -cosmossdk.io/store v1.0.0 h1:6tnPgTpTSIskaTmw/4s5C9FARdgFflycIc9OX8i1tOI= -cosmossdk.io/store v1.0.0/go.mod h1:ABMprwjvx6IpMp8l06TwuMrj6694/QP5NIW+X6jaTYc= +cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= +cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= cosmossdk.io/tools/confix v0.1.0 h1:2OOZTtQsDT5e7P3FM5xqM0bPfluAxZlAwxqaDmYBE+E= cosmossdk.io/tools/confix v0.1.0/go.mod h1:TdXKVYs4gEayav5wM+JHT+kTU2J7fozFNqoVaN+8CdY= cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= @@ -217,8 +217,8 @@ cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c h1:EFBlwazEIqkvKV5L1JfQZ6lhUJF9cMguAqQk1xSmbfM= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c/go.mod h1:PELWSey8Y7pq8iSgqEav82APBbgMb/SDbbjyuP8tvWc= -cosmossdk.io/x/tx v0.12.0 h1:Ry2btjQdrfrje9qZ3iZeZSmDArjgxUJMMcLMrX4wj5U= -cosmossdk.io/x/tx v0.12.0/go.mod h1:qTth2coAGkwCwOCjqQ8EAQg+9udXNRzcnSbMgGKGEI0= +cosmossdk.io/x/tx v0.13.0 h1:8lzyOh3zONPpZv2uTcUmsv0WTXy6T1/aCVDCqShmpzU= +cosmossdk.io/x/tx v0.13.0/go.mod h1:CpNQtmoqbXa33/DVxWQNx5Dcnbkv2xGUhL7tYQ5wUsY= cosmossdk.io/x/upgrade v0.1.0 h1:z1ZZG4UL9ICTNbJDYZ6jOnF9GdEK9wyoEFi4BUScHXE= cosmossdk.io/x/upgrade v0.1.0/go.mod h1:/6jjNGbiPCNtmA1N+rBtP601sr0g4ZXuj3yC6ClPCGY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -230,6 +230,7 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25 github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= @@ -372,8 +373,8 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft v0.38.2 h1:io0JCh5EPxINKN5ZMI5hCdpW3QVZRy+o8qWe3mlJa/8= github.com/cometbft/cometbft v0.38.2/go.mod h1:PIi48BpzwlHqtV3mzwPyQgOyOnU94BNBimLS2ebBHOg= -github.com/cometbft/cometbft-db v0.8.0 h1:vUMDaH3ApkX8m0KZvOFFy9b5DZHBAjsnEuo9AKVZpjo= -github.com/cometbft/cometbft-db v0.8.0/go.mod h1:6ASCP4pfhmrCBpfk01/9E1SI29nD3HfVHrY4PG8x5c0= +github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= +github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -388,8 +389,8 @@ github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0 github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.50.1 h1:2SYwAYqd7ZwtrWxu/J8PwbQV/cDcu90bCr/a78g3lVw= -github.com/cosmos/cosmos-sdk v0.50.1/go.mod h1:fsLSPGstCwn6MMsFDMAQWGJj8E4sYsN9Gnu1bGE5imA= +github.com/cosmos/cosmos-sdk v0.50.3 h1:zP0AXm54ws2t2qVWvcQhEYVafhOAREU2QL0gnbwjvXw= +github.com/cosmos/cosmos-sdk v0.50.3/go.mod h1:tlrkY1sntOt1q0OX/rqF0zRJtmXNoffAS6VFTcky+w8= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= @@ -566,8 +567,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -816,8 +817,8 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= +github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -837,8 +838,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.5 h1:Okfk5B1h0ikCYdDM7Tc5yJUS8LTwAmMBq5IPWTmOLPs= -github.com/linxGnu/grocksdb v1.8.5/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/linxGnu/grocksdb v1.8.6 h1:O7I6SIGPrypf3f/gmrrLUBQDKfO8uOoYdWf4gLS06tc= +github.com/linxGnu/grocksdb v1.8.6/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -1191,8 +1192,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1296,8 +1297,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1442,13 +1443,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1458,6 +1459,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -1599,8 +1601,9 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1709,12 +1712,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= -google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo= -google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= +google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1756,8 +1759,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1774,8 +1777,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From a72ac05a297cc36e0aa01e678c71e727daf745cf Mon Sep 17 00:00:00 2001 From: poorphd Date: Fri, 2 Feb 2024 15:18:22 +0900 Subject: [PATCH 57/96] feat: upgrade handler for v8.0.0 --- app/app.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index e5e74d39f..36c6faf80 100644 --- a/app/app.go +++ b/app/app.go @@ -1515,7 +1515,10 @@ func setupLegacyKeyTables(k *paramskeeper.Keeper) { keyTable = govv1.ParamKeyTable() //nolint:staticcheck case crisistypes.ModuleName: keyTable = crisistypes.ParamKeyTable() //nolint:staticcheck - // wasm + case evmtypes.ModuleName: + keyTable = evmtypes.ParamKeyTable() //nolint:staticcheck + case feemarkettypes.ModuleName: + keyTable = feemarkettypes.ParamKeyTable() //nolint:staticcheck default: continue } From a23d84969b8a2e85b832e40bb7bdf5ee231345e4 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 5 Feb 2024 03:11:31 +0900 Subject: [PATCH 58/96] feat: set ibc fee keeper in app.go --- app/app.go | 51 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/app/app.go b/app/app.go index 36c6faf80..9c4438fc0 100644 --- a/app/app.go +++ b/app/app.go @@ -117,11 +117,13 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/ibc-go/modules/capability" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - + ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee" ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" + ibcfeetypes "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types" "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" @@ -203,6 +205,7 @@ var ( stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, govtypes.ModuleName: {authtypes.Burner}, ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, + ibcfeetypes.ModuleName: nil, evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and subtraction of balance using module account inflationtypes.ModuleName: {authtypes.Minter}, erc20types.ModuleName: {authtypes.Minter, authtypes.Burner}, @@ -333,7 +336,7 @@ func NewCanto( }, } - // evm/MsgEthereumTx, evm/MsgUpdateParams, feemarket/MsgUpdateParams + // evm/MsgEthereumTx, evm/MsgUpdateParams, feemarket/MsgUpdateParams, erc20/MsgConvertERC20 signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgEthereumTx{}), evmtypes.GetSignersFromMsgEthereumTxV2) signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgUpdateParams{}), evmtypes.GetSignersFromMsgUpdateParamsV2) signingOptions.DefineCustomGetSigners(protov2.MessageName(&feemarketv1.MsgUpdateParams{}), feemarkettypes.GetSignersFromMsgUpdateParamsV2) @@ -390,7 +393,7 @@ func NewCanto( evidencetypes.StoreKey, circuittypes.StoreKey, authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, // ibc keys - ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, + ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, ibcfeetypes.StoreKey, // ethermint keys evmtypes.StoreKey, feemarkettypes.StoreKey, // Canto keys @@ -621,7 +624,19 @@ func NewCanto( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - // Create Transfer Keepers + // IBC Fee Module keeper + app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( + appCodec, keys[ibcfeetypes.StoreKey], + app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, + ) + + // Create IBC Router + ibcRouter := porttypes.NewRouter() + + // Create Transfer Keeper and pass IBCFeeKeeper as expected Channel and PortKeeper + // since fee middleware will wrap the IBCKeeper for underlying application. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware @@ -629,7 +644,6 @@ func NewCanto( app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - transferModule := transfer.NewAppModule(app.TransferKeeper) // Create Ethermint keepers feeMarketSs := app.GetSubspace(feemarkettypes.ModuleName) @@ -717,14 +731,6 @@ func NewCanto( ), ) - // Create Transfer Stack - - // SendPacket, since it is originating from the application to core IBC: - // transferKeeper.SendPacket -> onboarding.SendPacket -> channel.SendPacket - - // RecvPacket, message that originates from core IBC and goes down to app, the flow is the otherway - // channel.RecvPacket -> onboarding.OnRecvPacket -> transfer.OnRecvPacket - app.OnboardingKeeper = onboardingkeeper.NewKeeper( app.GetSubspace(onboardingtypes.ModuleName), app.AccountKeeper, @@ -740,19 +746,26 @@ func NewCanto( app.OnboardingKeeper.SetICS4Wrapper(app.IBCKeeper.ChannelKeeper) // NOTE: ICS4 wrapper for Transfer Keeper already set + // Create Transfer Stack + // SendPacket, since it is originating from the application to core IBC: + // transferKeeper.SendPacket -> onboarding.SendPacket -> channel.SendPacket + + // RecvPacket, message that originates from core IBC and goes down to app, the flow is the otherway + // channel.RecvPacket -> onboarding.OnRecvPacket -> transfer.OnRecvPacket + // transfer stack contains (from top to bottom): // - Onboarding Middleware // - Transfer // create IBC module from bottom to top of stack var transferStack porttypes.IBCModule - transferStack = transfer.NewIBCModule(app.TransferKeeper) transferStack = onboarding.NewIBCMiddleware(*app.OnboardingKeeper, transferStack) - // Create static IBC router, add transfer route, then set and seal it - ibcRouter := porttypes.NewRouter() + // Add transfer stack to IBC Router ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferStack) + + // Seal the IBC Router app.IBCKeeper.SetRouter(ibcRouter) /**** Module Options ****/ @@ -796,7 +809,8 @@ func NewCanto( // ibc modules ibc.NewAppModule(app.IBCKeeper), - transferModule, + transfer.NewAppModule(app.TransferKeeper), + ibcfee.NewAppModule(app.IBCFeeKeeper), capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), ibctm.NewAppModule(), @@ -860,6 +874,7 @@ func NewCanto( govtypes.ModuleName, genutiltypes.ModuleName, ibctransfertypes.ModuleName, + ibcfeetypes.ModuleName, feegrant.ModuleName, nft.ModuleName, group.ModuleName, @@ -888,6 +903,7 @@ func NewCanto( stakingtypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, + ibcfeetypes.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, @@ -935,6 +951,7 @@ func NewCanto( evidencetypes.ModuleName, ibctransfertypes.ModuleName, authz.ModuleName, + ibcfeetypes.ModuleName, feegrant.ModuleName, nft.ModuleName, group.ModuleName, From 2cfa973ad14ecdc03dd1fac4d2bf7133922eaf97 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 7 Feb 2024 13:17:31 +0900 Subject: [PATCH 59/96] chore: remove x/nft, x/group, x/circuit --- app/app.go | 52 ++------------------------------------------------- app/export.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 52 deletions(-) diff --git a/app/app.go b/app/app.go index 9c4438fc0..5fe93b6ef 100644 --- a/app/app.go +++ b/app/app.go @@ -37,18 +37,12 @@ import ( "cosmossdk.io/simapp" simappparams "cosmossdk.io/simapp/params" storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/circuit" - circuitkeeper "cosmossdk.io/x/circuit/keeper" - circuittypes "cosmossdk.io/x/circuit/types" "cosmossdk.io/x/evidence" evidencekeeper "cosmossdk.io/x/evidence/keeper" evidencetypes "cosmossdk.io/x/evidence/types" "cosmossdk.io/x/feegrant" feegrantkeeper "cosmossdk.io/x/feegrant/keeper" feegrantmodule "cosmossdk.io/x/feegrant/module" - "cosmossdk.io/x/nft" - nftkeeper "cosmossdk.io/x/nft/keeper" - nftmodule "cosmossdk.io/x/nft/module" "cosmossdk.io/x/tx/signing" "cosmossdk.io/x/upgrade" upgradekeeper "cosmossdk.io/x/upgrade/keeper" @@ -103,9 +97,6 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/cosmos-sdk/x/group" - groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" - groupmodule "github.com/cosmos/cosmos-sdk/x/group/module" "github.com/cosmos/cosmos-sdk/x/params" paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" @@ -213,7 +204,6 @@ var ( govshuttletypes.ModuleName: {authtypes.Minter, authtypes.Burner}, onboardingtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, coinswaptypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - nft.ModuleName: nil, } // module accounts that are allowed to receive tokens @@ -256,10 +246,7 @@ type Canto struct { AuthzKeeper authzkeeper.Keeper EvidenceKeeper evidencekeeper.Keeper FeeGrantKeeper feegrantkeeper.Keeper - GroupKeeper groupkeeper.Keeper - NFTKeeper nftkeeper.Keeper ConsensusParamsKeeper consensusparamkeeper.Keeper - CircuitKeeper circuitkeeper.Keeper IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly IBCFeeKeeper ibcfeekeeper.Keeper TransferKeeper ibctransferkeeper.Keeper @@ -390,8 +377,7 @@ func NewCanto( authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, crisistypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, - evidencetypes.StoreKey, circuittypes.StoreKey, - authzkeeper.StoreKey, nftkeeper.StoreKey, group.StoreKey, + evidencetypes.StoreKey, authzkeeper.StoreKey, // ibc keys ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, ibcfeetypes.StoreKey, // ethermint keys @@ -532,14 +518,6 @@ func NewCanto( ), ) - app.CircuitKeeper = circuitkeeper.NewKeeper( - appCodec, - runtime.NewKVStoreService(keys[circuittypes.StoreKey]), - authtypes.NewModuleAddress(govtypes.ModuleName).String(), - app.AccountKeeper.AddressCodec(), - ) - app.BaseApp.SetCircuitBreaker(&app.CircuitKeeper) - app.AuthzKeeper = authzkeeper.NewKeeper( runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, @@ -547,13 +525,6 @@ func NewCanto( app.AccountKeeper, ) - groupConfig := group.DefaultConfig() - /* - Example of setting group params: - groupConfig.MaxMetadataLen = 1000 - */ - app.GroupKeeper = groupkeeper.NewKeeper(keys[group.StoreKey], appCodec, app.MsgServiceRouter(), app.AccountKeeper, groupConfig) - // set the governance module account as the authority for conducting upgrades app.UpgradeKeeper = upgradekeeper.NewKeeper( skipUpgradeHeights, @@ -594,13 +565,6 @@ func NewCanto( ), ) - app.NFTKeeper = nftkeeper.NewKeeper( - runtime.NewKVStoreService(keys[nftkeeper.StoreKey]), - appCodec, - app.AccountKeeper, - app.BankKeeper, - ) - // create evidence keeper with router evidenceKeeper := evidencekeeper.NewKeeper( appCodec, @@ -802,10 +766,7 @@ func NewCanto( evidence.NewAppModule(app.EvidenceKeeper), params.NewAppModule(app.ParamsKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - circuit.NewAppModule(appCodec, app.CircuitKeeper), // ibc modules ibc.NewAppModule(app.IBCKeeper), @@ -876,12 +837,9 @@ func NewCanto( ibctransfertypes.ModuleName, ibcfeetypes.ModuleName, feegrant.ModuleName, - nft.ModuleName, - group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, consensusparamtypes.ModuleName, - circuittypes.ModuleName, crisistypes.ModuleName, inflationtypes.ModuleName, erc20types.ModuleName, @@ -897,7 +855,6 @@ func NewCanto( evmtypes.ModuleName, feemarkettypes.ModuleName, feegrant.ModuleName, - group.ModuleName, onboardingtypes.ModuleName, // no-op modules stakingtypes.ModuleName, @@ -912,11 +869,9 @@ func NewCanto( genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName, - nft.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, consensusparamtypes.ModuleName, - circuittypes.ModuleName, inflationtypes.ModuleName, erc20types.ModuleName, govshuttletypes.ModuleName, @@ -953,12 +908,9 @@ func NewCanto( authz.ModuleName, ibcfeetypes.ModuleName, feegrant.ModuleName, - nft.ModuleName, - group.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, consensusparamtypes.ModuleName, - circuittypes.ModuleName, // Canto modules inflationtypes.ModuleName, erc20types.ModuleName, @@ -1500,7 +1452,7 @@ func (app *Canto) setupUpgradeHandlers() { case v8.UpgradeName: setupLegacyKeyTables(&app.ParamsKeeper) storeUpgrades = &storetypes.StoreUpgrades{ - Added: []string{crisistypes.StoreKey, circuittypes.StoreKey, consensusparamtypes.StoreKey, group.StoreKey, nft.StoreKey}, + Added: []string{crisistypes.StoreKey, consensusparamtypes.StoreKey}, } } diff --git a/app/export.go b/app/export.go index 177b398ea..9aebd281b 100644 --- a/app/export.go +++ b/app/export.go @@ -104,11 +104,14 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s /* Handle fee distribution state. */ // withdraw all validator commission - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { valbz, _ := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valbz) return false }) + if err != nil { + return err + } // withdraw all delegator rewards dels, err := app.StakingKeeper.GetAllDelegations(ctx) @@ -139,7 +142,7 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s ctx = ctx.WithBlockHeight(0) // reinitialize all validators - app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { + err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { // donate any unwithdrawn outstanding reward fraction tokens to the community pool valbz, _ := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) scraps, _ := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valbz) @@ -149,6 +152,9 @@ func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []s app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valbz) return false }) + if err != nil { + return err + } // reinitialize all delegations for _, del := range dels { From 4d5c9210ce6a2b0ca1bae5f87967f80465ffb9d1 Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 7 Feb 2024 16:04:43 +0900 Subject: [PATCH 60/96] feat: legacy proposal --- api/canto/erc20/v1/erc20.pulsar.go | 1977 ++++++++++++++- api/canto/erc20/v1/tx.pulsar.go | 1261 +++++----- api/canto/erc20/v1/tx_grpc.pb.go | 42 +- api/canto/govshuttle/v1/tx.pulsar.go | 3329 ++++++++++++++++++++++++- api/canto/govshuttle/v1/tx_grpc.pb.go | 126 +- go.mod | 2 +- proto/canto/erc20/v1/erc20.proto | 44 + proto/canto/erc20/v1/tx.proto | 36 +- proto/canto/govshuttle/v1/tx.proto | 82 +- x/erc20/keeper/evm_hooks_test.go | 3 +- x/erc20/keeper/msg_server.go | 229 +- x/erc20/keeper/msg_server_test.go | 2 +- x/erc20/keeper/proposals.go | 217 ++ x/erc20/types/codec.go | 18 +- x/erc20/types/erc20.pb.go | 897 ++++++- x/erc20/types/proposal.go | 152 ++ x/erc20/types/tx.pb.go | 464 ++-- x/erc20/types/tx.pb.gw.go | 18 +- x/govshuttle/types/codec.go | 44 +- x/govshuttle/types/tx.pb.go | 1540 +++++++++++- 20 files changed, 9223 insertions(+), 1260 deletions(-) create mode 100644 x/erc20/keeper/proposals.go create mode 100644 x/erc20/types/proposal.go diff --git a/api/canto/erc20/v1/erc20.pulsar.go b/api/canto/erc20/v1/erc20.pulsar.go index 3f0614492..e71627489 100644 --- a/api/canto/erc20/v1/erc20.pulsar.go +++ b/api/canto/erc20/v1/erc20.pulsar.go @@ -2,7 +2,9 @@ package erc20v1 import ( + v1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -599,6 +601,1665 @@ func (x *fastReflection_TokenPair) ProtoMethods() *protoiface.Methods { } } +var ( + md_RegisterCoinProposal protoreflect.MessageDescriptor + fd_RegisterCoinProposal_title protoreflect.FieldDescriptor + fd_RegisterCoinProposal_description protoreflect.FieldDescriptor + fd_RegisterCoinProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_RegisterCoinProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterCoinProposal") + fd_RegisterCoinProposal_title = md_RegisterCoinProposal.Fields().ByName("title") + fd_RegisterCoinProposal_description = md_RegisterCoinProposal.Fields().ByName("description") + fd_RegisterCoinProposal_metadata = md_RegisterCoinProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_RegisterCoinProposal)(nil) + +type fastReflection_RegisterCoinProposal RegisterCoinProposal + +func (x *RegisterCoinProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_RegisterCoinProposal)(x) +} + +func (x *RegisterCoinProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_RegisterCoinProposal_messageType fastReflection_RegisterCoinProposal_messageType +var _ protoreflect.MessageType = fastReflection_RegisterCoinProposal_messageType{} + +type fastReflection_RegisterCoinProposal_messageType struct{} + +func (x fastReflection_RegisterCoinProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_RegisterCoinProposal)(nil) +} +func (x fastReflection_RegisterCoinProposal_messageType) New() protoreflect.Message { + return new(fastReflection_RegisterCoinProposal) +} +func (x fastReflection_RegisterCoinProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterCoinProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_RegisterCoinProposal) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterCoinProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_RegisterCoinProposal) Type() protoreflect.MessageType { + return _fastReflection_RegisterCoinProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_RegisterCoinProposal) New() protoreflect.Message { + return new(fastReflection_RegisterCoinProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_RegisterCoinProposal) Interface() protoreflect.ProtoMessage { + return (*RegisterCoinProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_RegisterCoinProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_RegisterCoinProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_RegisterCoinProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_RegisterCoinProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_RegisterCoinProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + return x.Title != "" + case "canto.erc20.v1.RegisterCoinProposal.description": + return x.Description != "" + case "canto.erc20.v1.RegisterCoinProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + x.Title = "" + case "canto.erc20.v1.RegisterCoinProposal.description": + x.Description = "" + case "canto.erc20.v1.RegisterCoinProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_RegisterCoinProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterCoinProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterCoinProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.RegisterCoinProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.RegisterCoinProposal.metadata": + x.Metadata = value.Message().Interface().(*v1beta1.Metadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(v1beta1.Metadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.erc20.v1.RegisterCoinProposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterCoinProposal is not mutable")) + case "canto.erc20.v1.RegisterCoinProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterCoinProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_RegisterCoinProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterCoinProposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterCoinProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterCoinProposal.metadata": + m := new(v1beta1.Metadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterCoinProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterCoinProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_RegisterCoinProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterCoinProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_RegisterCoinProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterCoinProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_RegisterCoinProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_RegisterCoinProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*RegisterCoinProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &v1beta1.Metadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_RegisterERC20Proposal protoreflect.MessageDescriptor + fd_RegisterERC20Proposal_title protoreflect.FieldDescriptor + fd_RegisterERC20Proposal_description protoreflect.FieldDescriptor + fd_RegisterERC20Proposal_erc20address protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_RegisterERC20Proposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("RegisterERC20Proposal") + fd_RegisterERC20Proposal_title = md_RegisterERC20Proposal.Fields().ByName("title") + fd_RegisterERC20Proposal_description = md_RegisterERC20Proposal.Fields().ByName("description") + fd_RegisterERC20Proposal_erc20address = md_RegisterERC20Proposal.Fields().ByName("erc20address") +} + +var _ protoreflect.Message = (*fastReflection_RegisterERC20Proposal)(nil) + +type fastReflection_RegisterERC20Proposal RegisterERC20Proposal + +func (x *RegisterERC20Proposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_RegisterERC20Proposal)(x) +} + +func (x *RegisterERC20Proposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_RegisterERC20Proposal_messageType fastReflection_RegisterERC20Proposal_messageType +var _ protoreflect.MessageType = fastReflection_RegisterERC20Proposal_messageType{} + +type fastReflection_RegisterERC20Proposal_messageType struct{} + +func (x fastReflection_RegisterERC20Proposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_RegisterERC20Proposal)(nil) +} +func (x fastReflection_RegisterERC20Proposal_messageType) New() protoreflect.Message { + return new(fastReflection_RegisterERC20Proposal) +} +func (x fastReflection_RegisterERC20Proposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterERC20Proposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_RegisterERC20Proposal) Descriptor() protoreflect.MessageDescriptor { + return md_RegisterERC20Proposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_RegisterERC20Proposal) Type() protoreflect.MessageType { + return _fastReflection_RegisterERC20Proposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_RegisterERC20Proposal) New() protoreflect.Message { + return new(fastReflection_RegisterERC20Proposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_RegisterERC20Proposal) Interface() protoreflect.ProtoMessage { + return (*RegisterERC20Proposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_RegisterERC20Proposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_RegisterERC20Proposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_RegisterERC20Proposal_description, value) { + return + } + } + if x.Erc20Address != "" { + value := protoreflect.ValueOfString(x.Erc20Address) + if !f(fd_RegisterERC20Proposal_erc20address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_RegisterERC20Proposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + return x.Title != "" + case "canto.erc20.v1.RegisterERC20Proposal.description": + return x.Description != "" + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + return x.Erc20Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + x.Title = "" + case "canto.erc20.v1.RegisterERC20Proposal.description": + x.Description = "" + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + x.Erc20Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_RegisterERC20Proposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterERC20Proposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + value := x.Erc20Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.RegisterERC20Proposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + x.Erc20Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.RegisterERC20Proposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + panic(fmt.Errorf("field erc20address of message canto.erc20.v1.RegisterERC20Proposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_RegisterERC20Proposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.RegisterERC20Proposal.title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterERC20Proposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.RegisterERC20Proposal.erc20address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.RegisterERC20Proposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.RegisterERC20Proposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_RegisterERC20Proposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.RegisterERC20Proposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_RegisterERC20Proposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_RegisterERC20Proposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_RegisterERC20Proposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_RegisterERC20Proposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Erc20Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Erc20Address) > 0 { + i -= len(x.Erc20Address) + copy(dAtA[i:], x.Erc20Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Address))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*RegisterERC20Proposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: RegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Erc20Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_ToggleTokenConversionProposal protoreflect.MessageDescriptor + fd_ToggleTokenConversionProposal_Title protoreflect.FieldDescriptor + fd_ToggleTokenConversionProposal_description protoreflect.FieldDescriptor + fd_ToggleTokenConversionProposal_token protoreflect.FieldDescriptor +) + +func init() { + file_canto_erc20_v1_erc20_proto_init() + md_ToggleTokenConversionProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("ToggleTokenConversionProposal") + fd_ToggleTokenConversionProposal_Title = md_ToggleTokenConversionProposal.Fields().ByName("Title") + fd_ToggleTokenConversionProposal_description = md_ToggleTokenConversionProposal.Fields().ByName("description") + fd_ToggleTokenConversionProposal_token = md_ToggleTokenConversionProposal.Fields().ByName("token") +} + +var _ protoreflect.Message = (*fastReflection_ToggleTokenConversionProposal)(nil) + +type fastReflection_ToggleTokenConversionProposal ToggleTokenConversionProposal + +func (x *ToggleTokenConversionProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_ToggleTokenConversionProposal)(x) +} + +func (x *ToggleTokenConversionProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_ToggleTokenConversionProposal_messageType fastReflection_ToggleTokenConversionProposal_messageType +var _ protoreflect.MessageType = fastReflection_ToggleTokenConversionProposal_messageType{} + +type fastReflection_ToggleTokenConversionProposal_messageType struct{} + +func (x fastReflection_ToggleTokenConversionProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_ToggleTokenConversionProposal)(nil) +} +func (x fastReflection_ToggleTokenConversionProposal_messageType) New() protoreflect.Message { + return new(fastReflection_ToggleTokenConversionProposal) +} +func (x fastReflection_ToggleTokenConversionProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_ToggleTokenConversionProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_ToggleTokenConversionProposal) Descriptor() protoreflect.MessageDescriptor { + return md_ToggleTokenConversionProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_ToggleTokenConversionProposal) Type() protoreflect.MessageType { + return _fastReflection_ToggleTokenConversionProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_ToggleTokenConversionProposal) New() protoreflect.Message { + return new(fastReflection_ToggleTokenConversionProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_ToggleTokenConversionProposal) Interface() protoreflect.ProtoMessage { + return (*ToggleTokenConversionProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_ToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_ToggleTokenConversionProposal_Title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_ToggleTokenConversionProposal_description, value) { + return + } + } + if x.Token != "" { + value := protoreflect.ValueOfString(x.Token) + if !f(fd_ToggleTokenConversionProposal_token, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_ToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + return x.Title != "" + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + return x.Description != "" + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + return x.Token != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + x.Title = "" + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + x.Description = "" + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + x.Token = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_ToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + value := x.Token + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + x.Title = value.Interface().(string) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + x.Description = value.Interface().(string) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + x.Token = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + panic(fmt.Errorf("field Title of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + panic(fmt.Errorf("field token of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_ToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.ToggleTokenConversionProposal.description": + return protoreflect.ValueOfString("") + case "canto.erc20.v1.ToggleTokenConversionProposal.token": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.ToggleTokenConversionProposal")) + } + panic(fmt.Errorf("message canto.erc20.v1.ToggleTokenConversionProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_ToggleTokenConversionProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.ToggleTokenConversionProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_ToggleTokenConversionProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_ToggleTokenConversionProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_ToggleTokenConversionProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_ToggleTokenConversionProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Token) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Token) > 0 { + i -= len(x.Token) + copy(dAtA[i:], x.Token) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token))) + i-- + dAtA[i] = 0x1a + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x12 + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*ToggleTokenConversionProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: ToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -731,6 +2392,181 @@ func (x *TokenPair) GetContractOwner() Owner { return Owner_OWNER_UNSPECIFIED } +// RegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +// +// Deprecated: Do not use. +type RegisterCoinProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // metadata of the native Cosmos coin + Metadata *v1beta1.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *RegisterCoinProposal) Reset() { + *x = RegisterCoinProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterCoinProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterCoinProposal) ProtoMessage() {} + +// Deprecated: Use RegisterCoinProposal.ProtoReflect.Descriptor instead. +func (*RegisterCoinProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{1} +} + +func (x *RegisterCoinProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *RegisterCoinProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *RegisterCoinProposal) GetMetadata() *v1beta1.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + +// RegisterERC20Proposal is a gov Content type to register a token pair for an +// ERC20 token +// +// Deprecated: Do not use. +type RegisterERC20Proposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposa string title = 1; + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // contract address of ERC20 token + Erc20Address string `protobuf:"bytes,3,opt,name=erc20address,proto3" json:"erc20address,omitempty"` +} + +func (x *RegisterERC20Proposal) Reset() { + *x = RegisterERC20Proposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RegisterERC20Proposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterERC20Proposal) ProtoMessage() {} + +// Deprecated: Use RegisterERC20Proposal.ProtoReflect.Descriptor instead. +func (*RegisterERC20Proposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{2} +} + +func (x *RegisterERC20Proposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *RegisterERC20Proposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *RegisterERC20Proposal) GetErc20Address() string { + if x != nil { + return x.Erc20Address + } + return "" +} + +// ToggleTokenConversionProposal is a gov Content type to toggle the conversion +// of a token pair. +// +// Deprecated: Do not use. +type ToggleTokenConversionProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *ToggleTokenConversionProposal) Reset() { + *x = ToggleTokenConversionProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_erc20_v1_erc20_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToggleTokenConversionProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ToggleTokenConversionProposal) ProtoMessage() {} + +// Deprecated: Use ToggleTokenConversionProposal.ProtoReflect.Descriptor instead. +func (*ToggleTokenConversionProposal) Descriptor() ([]byte, []int) { + return file_canto_erc20_v1_erc20_proto_rawDescGZIP(), []int{3} +} + +func (x *ToggleTokenConversionProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *ToggleTokenConversionProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ToggleTokenConversionProposal) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + var File_canto_erc20_v1_erc20_proto protoreflect.FileDescriptor var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ @@ -738,33 +2574,61 @@ var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xa4, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, - 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x77, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, - 0x6e, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, - 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, - 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, - 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, - 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, - 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x01, + 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6f, 0x77, 0x6e, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x3a, 0x04, + 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x7b, + 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x75, 0x0a, 0x1d, 0x54, + 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, + 0x1f, 0x00, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, + 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, + 0x4c, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, + 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, + 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -780,18 +2644,23 @@ func file_canto_erc20_v1_erc20_proto_rawDescGZIP() []byte { } var file_canto_erc20_v1_erc20_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_canto_erc20_v1_erc20_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_canto_erc20_v1_erc20_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_canto_erc20_v1_erc20_proto_goTypes = []interface{}{ - (Owner)(0), // 0: canto.erc20.v1.Owner - (*TokenPair)(nil), // 1: canto.erc20.v1.TokenPair + (Owner)(0), // 0: canto.erc20.v1.Owner + (*TokenPair)(nil), // 1: canto.erc20.v1.TokenPair + (*RegisterCoinProposal)(nil), // 2: canto.erc20.v1.RegisterCoinProposal + (*RegisterERC20Proposal)(nil), // 3: canto.erc20.v1.RegisterERC20Proposal + (*ToggleTokenConversionProposal)(nil), // 4: canto.erc20.v1.ToggleTokenConversionProposal + (*v1beta1.Metadata)(nil), // 5: cosmos.bank.v1beta1.Metadata } var file_canto_erc20_v1_erc20_proto_depIdxs = []int32{ 0, // 0: canto.erc20.v1.TokenPair.contract_owner:type_name -> canto.erc20.v1.Owner - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 5, // 1: canto.erc20.v1.RegisterCoinProposal.metadata:type_name -> cosmos.bank.v1beta1.Metadata + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_canto_erc20_v1_erc20_proto_init() } @@ -812,6 +2681,42 @@ func file_canto_erc20_v1_erc20_proto_init() { return nil } } + file_canto_erc20_v1_erc20_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterCoinProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_erc20_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegisterERC20Proposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_erc20_v1_erc20_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ToggleTokenConversionProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -819,7 +2724,7 @@ func file_canto_erc20_v1_erc20_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_erc20_v1_erc20_proto_rawDesc, NumEnums: 1, - NumMessages: 1, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index 68e417aef..70650f01a 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -2762,31 +2762,31 @@ func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Meth } var ( - md_MsgRegisterCoinProposal protoreflect.MessageDescriptor - fd_MsgRegisterCoinProposal_authority protoreflect.FieldDescriptor - fd_MsgRegisterCoinProposal_title protoreflect.FieldDescriptor - fd_MsgRegisterCoinProposal_description protoreflect.FieldDescriptor - fd_MsgRegisterCoinProposal_metadata protoreflect.FieldDescriptor + md_MsgRegisterCoin protoreflect.MessageDescriptor + fd_MsgRegisterCoin_authority protoreflect.FieldDescriptor + fd_MsgRegisterCoin_title protoreflect.FieldDescriptor + fd_MsgRegisterCoin_description protoreflect.FieldDescriptor + fd_MsgRegisterCoin_metadata protoreflect.FieldDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgRegisterCoinProposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoinProposal") - fd_MsgRegisterCoinProposal_authority = md_MsgRegisterCoinProposal.Fields().ByName("authority") - fd_MsgRegisterCoinProposal_title = md_MsgRegisterCoinProposal.Fields().ByName("title") - fd_MsgRegisterCoinProposal_description = md_MsgRegisterCoinProposal.Fields().ByName("description") - fd_MsgRegisterCoinProposal_metadata = md_MsgRegisterCoinProposal.Fields().ByName("metadata") + md_MsgRegisterCoin = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoin") + fd_MsgRegisterCoin_authority = md_MsgRegisterCoin.Fields().ByName("authority") + fd_MsgRegisterCoin_title = md_MsgRegisterCoin.Fields().ByName("title") + fd_MsgRegisterCoin_description = md_MsgRegisterCoin.Fields().ByName("description") + fd_MsgRegisterCoin_metadata = md_MsgRegisterCoin.Fields().ByName("metadata") } -var _ protoreflect.Message = (*fastReflection_MsgRegisterCoinProposal)(nil) +var _ protoreflect.Message = (*fastReflection_MsgRegisterCoin)(nil) -type fastReflection_MsgRegisterCoinProposal MsgRegisterCoinProposal +type fastReflection_MsgRegisterCoin MsgRegisterCoin -func (x *MsgRegisterCoinProposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgRegisterCoinProposal)(x) +func (x *MsgRegisterCoin) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterCoin)(x) } -func (x *MsgRegisterCoinProposal) slowProtoReflect() protoreflect.Message { +func (x *MsgRegisterCoin) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2798,43 +2798,43 @@ func (x *MsgRegisterCoinProposal) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_MsgRegisterCoinProposal_messageType fastReflection_MsgRegisterCoinProposal_messageType -var _ protoreflect.MessageType = fastReflection_MsgRegisterCoinProposal_messageType{} +var _fastReflection_MsgRegisterCoin_messageType fastReflection_MsgRegisterCoin_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterCoin_messageType{} -type fastReflection_MsgRegisterCoinProposal_messageType struct{} +type fastReflection_MsgRegisterCoin_messageType struct{} -func (x fastReflection_MsgRegisterCoinProposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgRegisterCoinProposal)(nil) +func (x fastReflection_MsgRegisterCoin_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterCoin)(nil) } -func (x fastReflection_MsgRegisterCoinProposal_messageType) New() protoreflect.Message { - return new(fastReflection_MsgRegisterCoinProposal) +func (x fastReflection_MsgRegisterCoin_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoin) } -func (x fastReflection_MsgRegisterCoinProposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterCoinProposal +func (x fastReflection_MsgRegisterCoin_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoin } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgRegisterCoinProposal) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterCoinProposal +func (x *fastReflection_MsgRegisterCoin) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoin } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgRegisterCoinProposal) Type() protoreflect.MessageType { - return _fastReflection_MsgRegisterCoinProposal_messageType +func (x *fastReflection_MsgRegisterCoin) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterCoin_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgRegisterCoinProposal) New() protoreflect.Message { - return new(fastReflection_MsgRegisterCoinProposal) +func (x *fastReflection_MsgRegisterCoin) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoin) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgRegisterCoinProposal) Interface() protoreflect.ProtoMessage { - return (*MsgRegisterCoinProposal)(x) +func (x *fastReflection_MsgRegisterCoin) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterCoin)(x) } // Range iterates over every populated field in an undefined order, @@ -2842,28 +2842,28 @@ func (x *fastReflection_MsgRegisterCoinProposal) Interface() protoreflect.ProtoM // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgRegisterCoinProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgRegisterCoin) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Authority != "" { value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgRegisterCoinProposal_authority, value) { + if !f(fd_MsgRegisterCoin_authority, value) { return } } if x.Title != "" { value := protoreflect.ValueOfString(x.Title) - if !f(fd_MsgRegisterCoinProposal_title, value) { + if !f(fd_MsgRegisterCoin_title, value) { return } } if x.Description != "" { value := protoreflect.ValueOfString(x.Description) - if !f(fd_MsgRegisterCoinProposal_description, value) { + if !f(fd_MsgRegisterCoin_description, value) { return } } if x.Metadata != nil { value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) - if !f(fd_MsgRegisterCoinProposal_metadata, value) { + if !f(fd_MsgRegisterCoin_metadata, value) { return } } @@ -2880,21 +2880,21 @@ func (x *fastReflection_MsgRegisterCoinProposal) Range(f func(protoreflect.Field // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgRegisterCoinProposal) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgRegisterCoin) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + case "canto.erc20.v1.MsgRegisterCoin.authority": return x.Authority != "" - case "canto.erc20.v1.MsgRegisterCoinProposal.title": + case "canto.erc20.v1.MsgRegisterCoin.title": return x.Title != "" - case "canto.erc20.v1.MsgRegisterCoinProposal.description": + case "canto.erc20.v1.MsgRegisterCoin.description": return x.Description != "" - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": return x.Metadata != nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", fd.FullName())) } } @@ -2904,21 +2904,21 @@ func (x *fastReflection_MsgRegisterCoinProposal) Has(fd protoreflect.FieldDescri // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposal) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgRegisterCoin) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + case "canto.erc20.v1.MsgRegisterCoin.authority": x.Authority = "" - case "canto.erc20.v1.MsgRegisterCoinProposal.title": + case "canto.erc20.v1.MsgRegisterCoin.title": x.Title = "" - case "canto.erc20.v1.MsgRegisterCoinProposal.description": + case "canto.erc20.v1.MsgRegisterCoin.description": x.Description = "" - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": x.Metadata = nil default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", fd.FullName())) } } @@ -2928,25 +2928,25 @@ func (x *fastReflection_MsgRegisterCoinProposal) Clear(fd protoreflect.FieldDesc // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgRegisterCoinProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoin) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + case "canto.erc20.v1.MsgRegisterCoin.authority": value := x.Authority return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterCoinProposal.title": + case "canto.erc20.v1.MsgRegisterCoin.title": value := x.Title return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterCoinProposal.description": + case "canto.erc20.v1.MsgRegisterCoin.description": value := x.Description return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": value := x.Metadata return protoreflect.ValueOfMessage(value.ProtoReflect()) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", descriptor.FullName())) } } @@ -2960,21 +2960,21 @@ func (x *fastReflection_MsgRegisterCoinProposal) Get(descriptor protoreflect.Fie // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgRegisterCoin) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + case "canto.erc20.v1.MsgRegisterCoin.authority": x.Authority = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterCoinProposal.title": + case "canto.erc20.v1.MsgRegisterCoin.title": x.Title = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterCoinProposal.description": + case "canto.erc20.v1.MsgRegisterCoin.description": x.Description = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": x.Metadata = value.Message().Interface().(*v1beta11.Metadata) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", fd.FullName())) } } @@ -2988,56 +2988,56 @@ func (x *fastReflection_MsgRegisterCoinProposal) Set(fd protoreflect.FieldDescri // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoin) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": if x.Metadata == nil { x.Metadata = new(v1beta11.Metadata) } return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": - panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) - case "canto.erc20.v1.MsgRegisterCoinProposal.title": - panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) - case "canto.erc20.v1.MsgRegisterCoinProposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterCoinProposal is not mutable")) + case "canto.erc20.v1.MsgRegisterCoin.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterCoin is not mutable")) + case "canto.erc20.v1.MsgRegisterCoin.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterCoin is not mutable")) + case "canto.erc20.v1.MsgRegisterCoin.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterCoin is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgRegisterCoinProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoin) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterCoinProposal.authority": + case "canto.erc20.v1.MsgRegisterCoin.authority": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterCoinProposal.title": + case "canto.erc20.v1.MsgRegisterCoin.title": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterCoinProposal.description": + case "canto.erc20.v1.MsgRegisterCoin.description": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterCoinProposal.metadata": + case "canto.erc20.v1.MsgRegisterCoin.metadata": m := new(v1beta11.Metadata) return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoin")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoin does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgRegisterCoinProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgRegisterCoin) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoinProposal", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoin", d.FullName())) } panic("unreachable") } @@ -3045,7 +3045,7 @@ func (x *fastReflection_MsgRegisterCoinProposal) WhichOneof(d protoreflect.Oneof // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgRegisterCoinProposal) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgRegisterCoin) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -3056,7 +3056,7 @@ func (x *fastReflection_MsgRegisterCoinProposal) GetUnknown() protoreflect.RawFi // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposal) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgRegisterCoin) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -3068,7 +3068,7 @@ func (x *fastReflection_MsgRegisterCoinProposal) SetUnknown(fields protoreflect. // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgRegisterCoinProposal) IsValid() bool { +func (x *fastReflection_MsgRegisterCoin) IsValid() bool { return x != nil } @@ -3078,9 +3078,9 @@ func (x *fastReflection_MsgRegisterCoinProposal) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgRegisterCoin) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgRegisterCoinProposal) + x := input.Message.Interface().(*MsgRegisterCoin) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3118,7 +3118,7 @@ func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Meth } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterCoinProposal) + x := input.Message.Interface().(*MsgRegisterCoin) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3183,7 +3183,7 @@ func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Meth }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterCoinProposal) + x := input.Message.Interface().(*MsgRegisterCoin) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3215,10 +3215,10 @@ func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Meth fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposal: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoin: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoin: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -3389,23 +3389,23 @@ func (x *fastReflection_MsgRegisterCoinProposal) ProtoMethods() *protoiface.Meth } var ( - md_MsgRegisterCoinProposalResponse protoreflect.MessageDescriptor + md_MsgRegisterCoinResponse protoreflect.MessageDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgRegisterCoinProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoinProposalResponse") + md_MsgRegisterCoinResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterCoinResponse") } -var _ protoreflect.Message = (*fastReflection_MsgRegisterCoinProposalResponse)(nil) +var _ protoreflect.Message = (*fastReflection_MsgRegisterCoinResponse)(nil) -type fastReflection_MsgRegisterCoinProposalResponse MsgRegisterCoinProposalResponse +type fastReflection_MsgRegisterCoinResponse MsgRegisterCoinResponse -func (x *MsgRegisterCoinProposalResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgRegisterCoinProposalResponse)(x) +func (x *MsgRegisterCoinResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinResponse)(x) } -func (x *MsgRegisterCoinProposalResponse) slowProtoReflect() protoreflect.Message { +func (x *MsgRegisterCoinResponse) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3417,43 +3417,43 @@ func (x *MsgRegisterCoinProposalResponse) slowProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -var _fastReflection_MsgRegisterCoinProposalResponse_messageType fastReflection_MsgRegisterCoinProposalResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgRegisterCoinProposalResponse_messageType{} +var _fastReflection_MsgRegisterCoinResponse_messageType fastReflection_MsgRegisterCoinResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterCoinResponse_messageType{} -type fastReflection_MsgRegisterCoinProposalResponse_messageType struct{} +type fastReflection_MsgRegisterCoinResponse_messageType struct{} -func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgRegisterCoinProposalResponse)(nil) +func (x fastReflection_MsgRegisterCoinResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterCoinResponse)(nil) } -func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgRegisterCoinProposalResponse) +func (x fastReflection_MsgRegisterCoinResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinResponse) } -func (x fastReflection_MsgRegisterCoinProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterCoinProposalResponse +func (x fastReflection_MsgRegisterCoinResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinResponse } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterCoinProposalResponse +func (x *fastReflection_MsgRegisterCoinResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterCoinResponse } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgRegisterCoinProposalResponse_messageType +func (x *fastReflection_MsgRegisterCoinResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterCoinResponse_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgRegisterCoinProposalResponse) New() protoreflect.Message { - return new(fastReflection_MsgRegisterCoinProposalResponse) +func (x *fastReflection_MsgRegisterCoinResponse) New() protoreflect.Message { + return new(fastReflection_MsgRegisterCoinResponse) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Interface() protoreflect.ProtoMessage { - return (*MsgRegisterCoinProposalResponse)(x) +func (x *fastReflection_MsgRegisterCoinResponse) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterCoinResponse)(x) } // Range iterates over every populated field in an undefined order, @@ -3461,7 +3461,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Interface() protoreflec // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgRegisterCoinResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { } // Has reports whether a field is populated. @@ -3475,13 +3475,13 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Range(f func(protorefle // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgRegisterCoinResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", fd.FullName())) } } @@ -3491,13 +3491,13 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Has(fd protoreflect.Fie // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgRegisterCoinResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", fd.FullName())) } } @@ -3507,13 +3507,13 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Clear(fd protoreflect.F // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoinResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", descriptor.FullName())) } } @@ -3527,13 +3527,13 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Get(descriptor protoref // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgRegisterCoinResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", fd.FullName())) } } @@ -3547,36 +3547,36 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) Set(fd protoreflect.Fie // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoinResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgRegisterCoinProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterCoinResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterCoinResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterCoinResponse does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgRegisterCoinProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgRegisterCoinResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoinProposalResponse", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterCoinResponse", d.FullName())) } panic("unreachable") } @@ -3584,7 +3584,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) WhichOneof(d protorefle // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgRegisterCoinProposalResponse) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgRegisterCoinResponse) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -3595,7 +3595,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) GetUnknown() protorefle // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterCoinProposalResponse) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgRegisterCoinResponse) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -3607,7 +3607,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) SetUnknown(fields proto // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgRegisterCoinProposalResponse) IsValid() bool { +func (x *fastReflection_MsgRegisterCoinResponse) IsValid() bool { return x != nil } @@ -3617,9 +3617,9 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgRegisterCoinResponse) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + x := input.Message.Interface().(*MsgRegisterCoinResponse) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3641,7 +3641,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoif } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + x := input.Message.Interface().(*MsgRegisterCoinResponse) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3671,7 +3671,7 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoif }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterCoinProposalResponse) + x := input.Message.Interface().(*MsgRegisterCoinResponse) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -3703,10 +3703,10 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoif fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposalResponse: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -3745,31 +3745,31 @@ func (x *fastReflection_MsgRegisterCoinProposalResponse) ProtoMethods() *protoif } var ( - md_MsgRegisterERC20Proposal protoreflect.MessageDescriptor - fd_MsgRegisterERC20Proposal_authority protoreflect.FieldDescriptor - fd_MsgRegisterERC20Proposal_title protoreflect.FieldDescriptor - fd_MsgRegisterERC20Proposal_description protoreflect.FieldDescriptor - fd_MsgRegisterERC20Proposal_erc20address protoreflect.FieldDescriptor + md_MsgRegisterERC20 protoreflect.MessageDescriptor + fd_MsgRegisterERC20_authority protoreflect.FieldDescriptor + fd_MsgRegisterERC20_title protoreflect.FieldDescriptor + fd_MsgRegisterERC20_description protoreflect.FieldDescriptor + fd_MsgRegisterERC20_erc20address protoreflect.FieldDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgRegisterERC20Proposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20Proposal") - fd_MsgRegisterERC20Proposal_authority = md_MsgRegisterERC20Proposal.Fields().ByName("authority") - fd_MsgRegisterERC20Proposal_title = md_MsgRegisterERC20Proposal.Fields().ByName("title") - fd_MsgRegisterERC20Proposal_description = md_MsgRegisterERC20Proposal.Fields().ByName("description") - fd_MsgRegisterERC20Proposal_erc20address = md_MsgRegisterERC20Proposal.Fields().ByName("erc20address") + md_MsgRegisterERC20 = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20") + fd_MsgRegisterERC20_authority = md_MsgRegisterERC20.Fields().ByName("authority") + fd_MsgRegisterERC20_title = md_MsgRegisterERC20.Fields().ByName("title") + fd_MsgRegisterERC20_description = md_MsgRegisterERC20.Fields().ByName("description") + fd_MsgRegisterERC20_erc20address = md_MsgRegisterERC20.Fields().ByName("erc20address") } -var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20Proposal)(nil) +var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20)(nil) -type fastReflection_MsgRegisterERC20Proposal MsgRegisterERC20Proposal +type fastReflection_MsgRegisterERC20 MsgRegisterERC20 -func (x *MsgRegisterERC20Proposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgRegisterERC20Proposal)(x) +func (x *MsgRegisterERC20) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20)(x) } -func (x *MsgRegisterERC20Proposal) slowProtoReflect() protoreflect.Message { +func (x *MsgRegisterERC20) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3781,43 +3781,43 @@ func (x *MsgRegisterERC20Proposal) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_MsgRegisterERC20Proposal_messageType fastReflection_MsgRegisterERC20Proposal_messageType -var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20Proposal_messageType{} +var _fastReflection_MsgRegisterERC20_messageType fastReflection_MsgRegisterERC20_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20_messageType{} -type fastReflection_MsgRegisterERC20Proposal_messageType struct{} +type fastReflection_MsgRegisterERC20_messageType struct{} -func (x fastReflection_MsgRegisterERC20Proposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgRegisterERC20Proposal)(nil) +func (x fastReflection_MsgRegisterERC20_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20)(nil) } -func (x fastReflection_MsgRegisterERC20Proposal_messageType) New() protoreflect.Message { - return new(fastReflection_MsgRegisterERC20Proposal) +func (x fastReflection_MsgRegisterERC20_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20) } -func (x fastReflection_MsgRegisterERC20Proposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterERC20Proposal +func (x fastReflection_MsgRegisterERC20_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20 } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgRegisterERC20Proposal) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterERC20Proposal +func (x *fastReflection_MsgRegisterERC20) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20 } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgRegisterERC20Proposal) Type() protoreflect.MessageType { - return _fastReflection_MsgRegisterERC20Proposal_messageType +func (x *fastReflection_MsgRegisterERC20) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterERC20_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgRegisterERC20Proposal) New() protoreflect.Message { - return new(fastReflection_MsgRegisterERC20Proposal) +func (x *fastReflection_MsgRegisterERC20) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgRegisterERC20Proposal) Interface() protoreflect.ProtoMessage { - return (*MsgRegisterERC20Proposal)(x) +func (x *fastReflection_MsgRegisterERC20) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterERC20)(x) } // Range iterates over every populated field in an undefined order, @@ -3825,28 +3825,28 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Interface() protoreflect.Proto // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgRegisterERC20Proposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgRegisterERC20) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Authority != "" { value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgRegisterERC20Proposal_authority, value) { + if !f(fd_MsgRegisterERC20_authority, value) { return } } if x.Title != "" { value := protoreflect.ValueOfString(x.Title) - if !f(fd_MsgRegisterERC20Proposal_title, value) { + if !f(fd_MsgRegisterERC20_title, value) { return } } if x.Description != "" { value := protoreflect.ValueOfString(x.Description) - if !f(fd_MsgRegisterERC20Proposal_description, value) { + if !f(fd_MsgRegisterERC20_description, value) { return } } if x.Erc20Address != "" { value := protoreflect.ValueOfString(x.Erc20Address) - if !f(fd_MsgRegisterERC20Proposal_erc20address, value) { + if !f(fd_MsgRegisterERC20_erc20address, value) { return } } @@ -3863,21 +3863,21 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Range(f func(protoreflect.Fiel // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgRegisterERC20Proposal) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgRegisterERC20) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + case "canto.erc20.v1.MsgRegisterERC20.authority": return x.Authority != "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + case "canto.erc20.v1.MsgRegisterERC20.title": return x.Title != "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + case "canto.erc20.v1.MsgRegisterERC20.description": return x.Description != "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + case "canto.erc20.v1.MsgRegisterERC20.erc20address": return x.Erc20Address != "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", fd.FullName())) } } @@ -3887,21 +3887,21 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Has(fd protoreflect.FieldDescr // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20Proposal) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgRegisterERC20) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + case "canto.erc20.v1.MsgRegisterERC20.authority": x.Authority = "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + case "canto.erc20.v1.MsgRegisterERC20.title": x.Title = "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + case "canto.erc20.v1.MsgRegisterERC20.description": x.Description = "" - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + case "canto.erc20.v1.MsgRegisterERC20.erc20address": x.Erc20Address = "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", fd.FullName())) } } @@ -3911,25 +3911,25 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Clear(fd protoreflect.FieldDes // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgRegisterERC20Proposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + case "canto.erc20.v1.MsgRegisterERC20.authority": value := x.Authority return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + case "canto.erc20.v1.MsgRegisterERC20.title": value := x.Title return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + case "canto.erc20.v1.MsgRegisterERC20.description": value := x.Description return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + case "canto.erc20.v1.MsgRegisterERC20.erc20address": value := x.Erc20Address return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", descriptor.FullName())) } } @@ -3943,21 +3943,21 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Get(descriptor protoreflect.Fi // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20Proposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgRegisterERC20) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + case "canto.erc20.v1.MsgRegisterERC20.authority": x.Authority = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + case "canto.erc20.v1.MsgRegisterERC20.title": x.Title = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + case "canto.erc20.v1.MsgRegisterERC20.description": x.Description = value.Interface().(string) - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + case "canto.erc20.v1.MsgRegisterERC20.erc20address": x.Erc20Address = value.Interface().(string) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", fd.FullName())) } } @@ -3971,52 +3971,52 @@ func (x *fastReflection_MsgRegisterERC20Proposal) Set(fd protoreflect.FieldDescr // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20Proposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": - panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": - panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": - panic(fmt.Errorf("field erc20address of message canto.erc20.v1.MsgRegisterERC20Proposal is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgRegisterERC20 is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.MsgRegisterERC20 is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgRegisterERC20 is not mutable")) + case "canto.erc20.v1.MsgRegisterERC20.erc20address": + panic(fmt.Errorf("field erc20address of message canto.erc20.v1.MsgRegisterERC20 is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgRegisterERC20Proposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgRegisterERC20Proposal.authority": + case "canto.erc20.v1.MsgRegisterERC20.authority": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterERC20Proposal.title": + case "canto.erc20.v1.MsgRegisterERC20.title": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterERC20Proposal.description": + case "canto.erc20.v1.MsgRegisterERC20.description": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgRegisterERC20Proposal.erc20address": + case "canto.erc20.v1.MsgRegisterERC20.erc20address": return protoreflect.ValueOfString("") default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Proposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Proposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20 does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgRegisterERC20Proposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgRegisterERC20) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20Proposal", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20", d.FullName())) } panic("unreachable") } @@ -4024,7 +4024,7 @@ func (x *fastReflection_MsgRegisterERC20Proposal) WhichOneof(d protoreflect.Oneo // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgRegisterERC20Proposal) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgRegisterERC20) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -4035,7 +4035,7 @@ func (x *fastReflection_MsgRegisterERC20Proposal) GetUnknown() protoreflect.RawF // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20Proposal) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgRegisterERC20) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -4047,7 +4047,7 @@ func (x *fastReflection_MsgRegisterERC20Proposal) SetUnknown(fields protoreflect // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgRegisterERC20Proposal) IsValid() bool { +func (x *fastReflection_MsgRegisterERC20) IsValid() bool { return x != nil } @@ -4057,9 +4057,9 @@ func (x *fastReflection_MsgRegisterERC20Proposal) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgRegisterERC20) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgRegisterERC20Proposal) + x := input.Message.Interface().(*MsgRegisterERC20) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4097,7 +4097,7 @@ func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Met } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterERC20Proposal) + x := input.Message.Interface().(*MsgRegisterERC20) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4155,7 +4155,7 @@ func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Met }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterERC20Proposal) + x := input.Message.Interface().(*MsgRegisterERC20) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4187,10 +4187,10 @@ func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Met fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Proposal: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -4357,23 +4357,23 @@ func (x *fastReflection_MsgRegisterERC20Proposal) ProtoMethods() *protoiface.Met } var ( - md_MsgRegisterERC20ProposalResponse protoreflect.MessageDescriptor + md_MsgRegisterERC20Response protoreflect.MessageDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgRegisterERC20ProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20ProposalResponse") + md_MsgRegisterERC20Response = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgRegisterERC20Response") } -var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20ProposalResponse)(nil) +var _ protoreflect.Message = (*fastReflection_MsgRegisterERC20Response)(nil) -type fastReflection_MsgRegisterERC20ProposalResponse MsgRegisterERC20ProposalResponse +type fastReflection_MsgRegisterERC20Response MsgRegisterERC20Response -func (x *MsgRegisterERC20ProposalResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgRegisterERC20ProposalResponse)(x) +func (x *MsgRegisterERC20Response) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20Response)(x) } -func (x *MsgRegisterERC20ProposalResponse) slowProtoReflect() protoreflect.Message { +func (x *MsgRegisterERC20Response) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4385,43 +4385,43 @@ func (x *MsgRegisterERC20ProposalResponse) slowProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -var _fastReflection_MsgRegisterERC20ProposalResponse_messageType fastReflection_MsgRegisterERC20ProposalResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20ProposalResponse_messageType{} +var _fastReflection_MsgRegisterERC20Response_messageType fastReflection_MsgRegisterERC20Response_messageType +var _ protoreflect.MessageType = fastReflection_MsgRegisterERC20Response_messageType{} -type fastReflection_MsgRegisterERC20ProposalResponse_messageType struct{} +type fastReflection_MsgRegisterERC20Response_messageType struct{} -func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgRegisterERC20ProposalResponse)(nil) +func (x fastReflection_MsgRegisterERC20Response_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgRegisterERC20Response)(nil) } -func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgRegisterERC20ProposalResponse) +func (x fastReflection_MsgRegisterERC20Response_messageType) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20Response) } -func (x fastReflection_MsgRegisterERC20ProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterERC20ProposalResponse +func (x fastReflection_MsgRegisterERC20Response_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20Response } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgRegisterERC20ProposalResponse +func (x *fastReflection_MsgRegisterERC20Response) Descriptor() protoreflect.MessageDescriptor { + return md_MsgRegisterERC20Response } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgRegisterERC20ProposalResponse_messageType +func (x *fastReflection_MsgRegisterERC20Response) Type() protoreflect.MessageType { + return _fastReflection_MsgRegisterERC20Response_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) New() protoreflect.Message { - return new(fastReflection_MsgRegisterERC20ProposalResponse) +func (x *fastReflection_MsgRegisterERC20Response) New() protoreflect.Message { + return new(fastReflection_MsgRegisterERC20Response) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Interface() protoreflect.ProtoMessage { - return (*MsgRegisterERC20ProposalResponse)(x) +func (x *fastReflection_MsgRegisterERC20Response) Interface() protoreflect.ProtoMessage { + return (*MsgRegisterERC20Response)(x) } // Range iterates over every populated field in an undefined order, @@ -4429,7 +4429,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Interface() protorefle // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgRegisterERC20Response) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { } // Has reports whether a field is populated. @@ -4443,13 +4443,13 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Range(f func(protorefl // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgRegisterERC20Response) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", fd.FullName())) } } @@ -4459,13 +4459,13 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Has(fd protoreflect.Fi // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgRegisterERC20Response) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", fd.FullName())) } } @@ -4475,13 +4475,13 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Clear(fd protoreflect. // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20Response) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", descriptor.FullName())) } } @@ -4495,13 +4495,13 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Get(descriptor protore // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgRegisterERC20Response) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", fd.FullName())) } } @@ -4515,36 +4515,36 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) Set(fd protoreflect.Fi // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20Response) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgRegisterERC20Response) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20ProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgRegisterERC20Response")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20ProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgRegisterERC20Response does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgRegisterERC20Response) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20ProposalResponse", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgRegisterERC20Response", d.FullName())) } panic("unreachable") } @@ -4552,7 +4552,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) WhichOneof(d protorefl // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgRegisterERC20Response) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -4563,7 +4563,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) GetUnknown() protorefl // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgRegisterERC20Response) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -4575,7 +4575,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) SetUnknown(fields prot // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) IsValid() bool { +func (x *fastReflection_MsgRegisterERC20Response) IsValid() bool { return x != nil } @@ -4585,9 +4585,9 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgRegisterERC20Response) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + x := input.Message.Interface().(*MsgRegisterERC20Response) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4609,7 +4609,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoi } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + x := input.Message.Interface().(*MsgRegisterERC20Response) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4639,7 +4639,7 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoi }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgRegisterERC20ProposalResponse) + x := input.Message.Interface().(*MsgRegisterERC20Response) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -4671,10 +4671,10 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoi fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Response: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterERC20Response: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -4713,31 +4713,31 @@ func (x *fastReflection_MsgRegisterERC20ProposalResponse) ProtoMethods() *protoi } var ( - md_MsgToggleTokenConversionProposal protoreflect.MessageDescriptor - fd_MsgToggleTokenConversionProposal_authority protoreflect.FieldDescriptor - fd_MsgToggleTokenConversionProposal_Title protoreflect.FieldDescriptor - fd_MsgToggleTokenConversionProposal_description protoreflect.FieldDescriptor - fd_MsgToggleTokenConversionProposal_token protoreflect.FieldDescriptor + md_MsgToggleTokenConversion protoreflect.MessageDescriptor + fd_MsgToggleTokenConversion_authority protoreflect.FieldDescriptor + fd_MsgToggleTokenConversion_Title protoreflect.FieldDescriptor + fd_MsgToggleTokenConversion_description protoreflect.FieldDescriptor + fd_MsgToggleTokenConversion_token protoreflect.FieldDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgToggleTokenConversionProposal = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversionProposal") - fd_MsgToggleTokenConversionProposal_authority = md_MsgToggleTokenConversionProposal.Fields().ByName("authority") - fd_MsgToggleTokenConversionProposal_Title = md_MsgToggleTokenConversionProposal.Fields().ByName("Title") - fd_MsgToggleTokenConversionProposal_description = md_MsgToggleTokenConversionProposal.Fields().ByName("description") - fd_MsgToggleTokenConversionProposal_token = md_MsgToggleTokenConversionProposal.Fields().ByName("token") + md_MsgToggleTokenConversion = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversion") + fd_MsgToggleTokenConversion_authority = md_MsgToggleTokenConversion.Fields().ByName("authority") + fd_MsgToggleTokenConversion_Title = md_MsgToggleTokenConversion.Fields().ByName("Title") + fd_MsgToggleTokenConversion_description = md_MsgToggleTokenConversion.Fields().ByName("description") + fd_MsgToggleTokenConversion_token = md_MsgToggleTokenConversion.Fields().ByName("token") } -var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversionProposal)(nil) +var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversion)(nil) -type fastReflection_MsgToggleTokenConversionProposal MsgToggleTokenConversionProposal +type fastReflection_MsgToggleTokenConversion MsgToggleTokenConversion -func (x *MsgToggleTokenConversionProposal) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgToggleTokenConversionProposal)(x) +func (x *MsgToggleTokenConversion) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversion)(x) } -func (x *MsgToggleTokenConversionProposal) slowProtoReflect() protoreflect.Message { +func (x *MsgToggleTokenConversion) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4749,43 +4749,43 @@ func (x *MsgToggleTokenConversionProposal) slowProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -var _fastReflection_MsgToggleTokenConversionProposal_messageType fastReflection_MsgToggleTokenConversionProposal_messageType -var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversionProposal_messageType{} +var _fastReflection_MsgToggleTokenConversion_messageType fastReflection_MsgToggleTokenConversion_messageType +var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversion_messageType{} -type fastReflection_MsgToggleTokenConversionProposal_messageType struct{} +type fastReflection_MsgToggleTokenConversion_messageType struct{} -func (x fastReflection_MsgToggleTokenConversionProposal_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgToggleTokenConversionProposal)(nil) +func (x fastReflection_MsgToggleTokenConversion_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversion)(nil) } -func (x fastReflection_MsgToggleTokenConversionProposal_messageType) New() protoreflect.Message { - return new(fastReflection_MsgToggleTokenConversionProposal) +func (x fastReflection_MsgToggleTokenConversion_messageType) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversion) } -func (x fastReflection_MsgToggleTokenConversionProposal_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgToggleTokenConversionProposal +func (x fastReflection_MsgToggleTokenConversion_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversion } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgToggleTokenConversionProposal) Descriptor() protoreflect.MessageDescriptor { - return md_MsgToggleTokenConversionProposal +func (x *fastReflection_MsgToggleTokenConversion) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversion } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgToggleTokenConversionProposal) Type() protoreflect.MessageType { - return _fastReflection_MsgToggleTokenConversionProposal_messageType +func (x *fastReflection_MsgToggleTokenConversion) Type() protoreflect.MessageType { + return _fastReflection_MsgToggleTokenConversion_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgToggleTokenConversionProposal) New() protoreflect.Message { - return new(fastReflection_MsgToggleTokenConversionProposal) +func (x *fastReflection_MsgToggleTokenConversion) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversion) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgToggleTokenConversionProposal) Interface() protoreflect.ProtoMessage { - return (*MsgToggleTokenConversionProposal)(x) +func (x *fastReflection_MsgToggleTokenConversion) Interface() protoreflect.ProtoMessage { + return (*MsgToggleTokenConversion)(x) } // Range iterates over every populated field in an undefined order, @@ -4793,28 +4793,28 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Interface() protorefle // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgToggleTokenConversion) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Authority != "" { value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgToggleTokenConversionProposal_authority, value) { + if !f(fd_MsgToggleTokenConversion_authority, value) { return } } if x.Title != "" { value := protoreflect.ValueOfString(x.Title) - if !f(fd_MsgToggleTokenConversionProposal_Title, value) { + if !f(fd_MsgToggleTokenConversion_Title, value) { return } } if x.Description != "" { value := protoreflect.ValueOfString(x.Description) - if !f(fd_MsgToggleTokenConversionProposal_description, value) { + if !f(fd_MsgToggleTokenConversion_description, value) { return } } if x.Token != "" { value := protoreflect.ValueOfString(x.Token) - if !f(fd_MsgToggleTokenConversionProposal_token, value) { + if !f(fd_MsgToggleTokenConversion_token, value) { return } } @@ -4831,21 +4831,21 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Range(f func(protorefl // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgToggleTokenConversion) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + case "canto.erc20.v1.MsgToggleTokenConversion.authority": return x.Authority != "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.Title": return x.Title != "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + case "canto.erc20.v1.MsgToggleTokenConversion.description": return x.Description != "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + case "canto.erc20.v1.MsgToggleTokenConversion.token": return x.Token != "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", fd.FullName())) } } @@ -4855,21 +4855,21 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Has(fd protoreflect.Fi // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgToggleTokenConversion) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + case "canto.erc20.v1.MsgToggleTokenConversion.authority": x.Authority = "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.Title": x.Title = "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + case "canto.erc20.v1.MsgToggleTokenConversion.description": x.Description = "" - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + case "canto.erc20.v1.MsgToggleTokenConversion.token": x.Token = "" default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", fd.FullName())) } } @@ -4879,25 +4879,25 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Clear(fd protoreflect. // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversion) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + case "canto.erc20.v1.MsgToggleTokenConversion.authority": value := x.Authority return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.Title": value := x.Title return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + case "canto.erc20.v1.MsgToggleTokenConversion.description": value := x.Description return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + case "canto.erc20.v1.MsgToggleTokenConversion.token": value := x.Token return protoreflect.ValueOfString(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", descriptor.FullName())) } } @@ -4911,21 +4911,21 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Get(descriptor protore // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgToggleTokenConversion) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + case "canto.erc20.v1.MsgToggleTokenConversion.authority": x.Authority = value.Interface().(string) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.Title": x.Title = value.Interface().(string) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + case "canto.erc20.v1.MsgToggleTokenConversion.description": x.Description = value.Interface().(string) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + case "canto.erc20.v1.MsgToggleTokenConversion.token": x.Token = value.Interface().(string) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", fd.FullName())) } } @@ -4939,52 +4939,52 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) Set(fd protoreflect.Fi // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversion) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": - panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": - panic(fmt.Errorf("field Title of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": - panic(fmt.Errorf("field description of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": - panic(fmt.Errorf("field token of message canto.erc20.v1.MsgToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversion.authority": + panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversion.Title": + panic(fmt.Errorf("field Title of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversion.description": + panic(fmt.Errorf("field description of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversion.token": + panic(fmt.Errorf("field token of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversion) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.MsgToggleTokenConversionProposal.authority": + case "canto.erc20.v1.MsgToggleTokenConversion.authority": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgToggleTokenConversionProposal.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.Title": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgToggleTokenConversionProposal.description": + case "canto.erc20.v1.MsgToggleTokenConversion.description": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgToggleTokenConversionProposal.token": + case "canto.erc20.v1.MsgToggleTokenConversion.token": return protoreflect.ValueOfString("") default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposal")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversion")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposal does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversion does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgToggleTokenConversionProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgToggleTokenConversion) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversionProposal", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversion", d.FullName())) } panic("unreachable") } @@ -4992,7 +4992,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) WhichOneof(d protorefl // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgToggleTokenConversionProposal) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgToggleTokenConversion) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -5003,7 +5003,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) GetUnknown() protorefl // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposal) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgToggleTokenConversion) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -5015,7 +5015,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) SetUnknown(fields prot // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgToggleTokenConversionProposal) IsValid() bool { +func (x *fastReflection_MsgToggleTokenConversion) IsValid() bool { return x != nil } @@ -5025,9 +5025,9 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgToggleTokenConversion) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + x := input.Message.Interface().(*MsgToggleTokenConversion) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5065,7 +5065,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoi } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + x := input.Message.Interface().(*MsgToggleTokenConversion) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5123,7 +5123,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoi }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgToggleTokenConversionProposal) + x := input.Message.Interface().(*MsgToggleTokenConversion) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5155,10 +5155,10 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoi fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposal: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversion: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversion: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -5325,23 +5325,23 @@ func (x *fastReflection_MsgToggleTokenConversionProposal) ProtoMethods() *protoi } var ( - md_MsgToggleTokenConversionProposalResponse protoreflect.MessageDescriptor + md_MsgToggleTokenConversionResponse protoreflect.MessageDescriptor ) func init() { file_canto_erc20_v1_tx_proto_init() - md_MsgToggleTokenConversionProposalResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversionProposalResponse") + md_MsgToggleTokenConversionResponse = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversionResponse") } -var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversionProposalResponse)(nil) +var _ protoreflect.Message = (*fastReflection_MsgToggleTokenConversionResponse)(nil) -type fastReflection_MsgToggleTokenConversionProposalResponse MsgToggleTokenConversionProposalResponse +type fastReflection_MsgToggleTokenConversionResponse MsgToggleTokenConversionResponse -func (x *MsgToggleTokenConversionProposalResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgToggleTokenConversionProposalResponse)(x) +func (x *MsgToggleTokenConversionResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionResponse)(x) } -func (x *MsgToggleTokenConversionProposalResponse) slowProtoReflect() protoreflect.Message { +func (x *MsgToggleTokenConversionResponse) slowProtoReflect() protoreflect.Message { mi := &file_canto_erc20_v1_tx_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5353,43 +5353,43 @@ func (x *MsgToggleTokenConversionProposalResponse) slowProtoReflect() protorefle return mi.MessageOf(x) } -var _fastReflection_MsgToggleTokenConversionProposalResponse_messageType fastReflection_MsgToggleTokenConversionProposalResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversionProposalResponse_messageType{} +var _fastReflection_MsgToggleTokenConversionResponse_messageType fastReflection_MsgToggleTokenConversionResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgToggleTokenConversionResponse_messageType{} -type fastReflection_MsgToggleTokenConversionProposalResponse_messageType struct{} +type fastReflection_MsgToggleTokenConversionResponse_messageType struct{} -func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgToggleTokenConversionProposalResponse)(nil) +func (x fastReflection_MsgToggleTokenConversionResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgToggleTokenConversionResponse)(nil) } -func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgToggleTokenConversionProposalResponse) +func (x fastReflection_MsgToggleTokenConversionResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionResponse) } -func (x fastReflection_MsgToggleTokenConversionProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgToggleTokenConversionProposalResponse +func (x fastReflection_MsgToggleTokenConversionResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionResponse } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgToggleTokenConversionProposalResponse +func (x *fastReflection_MsgToggleTokenConversionResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgToggleTokenConversionResponse } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgToggleTokenConversionProposalResponse_messageType +func (x *fastReflection_MsgToggleTokenConversionResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgToggleTokenConversionResponse_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) New() protoreflect.Message { - return new(fastReflection_MsgToggleTokenConversionProposalResponse) +func (x *fastReflection_MsgToggleTokenConversionResponse) New() protoreflect.Message { + return new(fastReflection_MsgToggleTokenConversionResponse) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Interface() protoreflect.ProtoMessage { - return (*MsgToggleTokenConversionProposalResponse)(x) +func (x *fastReflection_MsgToggleTokenConversionResponse) Interface() protoreflect.ProtoMessage { + return (*MsgToggleTokenConversionResponse)(x) } // Range iterates over every populated field in an undefined order, @@ -5397,7 +5397,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Interface() pr // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +func (x *fastReflection_MsgToggleTokenConversionResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { } // Has reports whether a field is populated. @@ -5411,13 +5411,13 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Range(f func(p // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_MsgToggleTokenConversionResponse) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", fd.FullName())) } } @@ -5427,13 +5427,13 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Has(fd protore // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_MsgToggleTokenConversionResponse) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", fd.FullName())) } } @@ -5443,13 +5443,13 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Clear(fd proto // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversionResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", descriptor.FullName())) } } @@ -5463,13 +5463,13 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Get(descriptor // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_MsgToggleTokenConversionResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", fd.FullName())) } } @@ -5483,36 +5483,36 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Set(fd protore // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversionResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_MsgToggleTokenConversionResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionProposalResponse")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.erc20.v1.MsgToggleTokenConversionResponse")) } - panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionProposalResponse does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message canto.erc20.v1.MsgToggleTokenConversionResponse does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_MsgToggleTokenConversionResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversionProposalResponse", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in canto.erc20.v1.MsgToggleTokenConversionResponse", d.FullName())) } panic("unreachable") } @@ -5520,7 +5520,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) WhichOneof(d p // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_MsgToggleTokenConversionResponse) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -5531,7 +5531,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) GetUnknown() p // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_MsgToggleTokenConversionResponse) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -5543,7 +5543,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) SetUnknown(fie // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) IsValid() bool { +func (x *fastReflection_MsgToggleTokenConversionResponse) IsValid() bool { return x != nil } @@ -5553,9 +5553,9 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) IsValid() bool // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_MsgToggleTokenConversionProposalResponse) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_MsgToggleTokenConversionResponse) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + x := input.Message.Interface().(*MsgToggleTokenConversionResponse) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5577,7 +5577,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) ProtoMethods() } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + x := input.Message.Interface().(*MsgToggleTokenConversionResponse) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5607,7 +5607,7 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) ProtoMethods() }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgToggleTokenConversionProposalResponse) + x := input.Message.Interface().(*MsgToggleTokenConversionResponse) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -5639,10 +5639,10 @@ func (x *fastReflection_MsgToggleTokenConversionProposalResponse) ProtoMethods() fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgToggleTokenConversionResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -5948,7 +5948,7 @@ func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { // MsgRegisterCoinProposal is a gov Content type to register a token pair for a // native Cosmos coin. -type MsgRegisterCoinProposal struct { +type MsgRegisterCoin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -5964,8 +5964,8 @@ type MsgRegisterCoinProposal struct { Metadata *v1beta11.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } -func (x *MsgRegisterCoinProposal) Reset() { - *x = MsgRegisterCoinProposal{} +func (x *MsgRegisterCoin) Reset() { + *x = MsgRegisterCoin{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5973,53 +5973,53 @@ func (x *MsgRegisterCoinProposal) Reset() { } } -func (x *MsgRegisterCoinProposal) String() string { +func (x *MsgRegisterCoin) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgRegisterCoinProposal) ProtoMessage() {} +func (*MsgRegisterCoin) ProtoMessage() {} -// Deprecated: Use MsgRegisterCoinProposal.ProtoReflect.Descriptor instead. -func (*MsgRegisterCoinProposal) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgRegisterCoin.ProtoReflect.Descriptor instead. +func (*MsgRegisterCoin) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{6} } -func (x *MsgRegisterCoinProposal) GetAuthority() string { +func (x *MsgRegisterCoin) GetAuthority() string { if x != nil { return x.Authority } return "" } -func (x *MsgRegisterCoinProposal) GetTitle() string { +func (x *MsgRegisterCoin) GetTitle() string { if x != nil { return x.Title } return "" } -func (x *MsgRegisterCoinProposal) GetDescription() string { +func (x *MsgRegisterCoin) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *MsgRegisterCoinProposal) GetMetadata() *v1beta11.Metadata { +func (x *MsgRegisterCoin) GetMetadata() *v1beta11.Metadata { if x != nil { return x.Metadata } return nil } -type MsgRegisterCoinProposalResponse struct { +type MsgRegisterCoinResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgRegisterCoinProposalResponse) Reset() { - *x = MsgRegisterCoinProposalResponse{} +func (x *MsgRegisterCoinResponse) Reset() { + *x = MsgRegisterCoinResponse{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6027,20 +6027,20 @@ func (x *MsgRegisterCoinProposalResponse) Reset() { } } -func (x *MsgRegisterCoinProposalResponse) String() string { +func (x *MsgRegisterCoinResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgRegisterCoinProposalResponse) ProtoMessage() {} +func (*MsgRegisterCoinResponse) ProtoMessage() {} -// Deprecated: Use MsgRegisterCoinProposalResponse.ProtoReflect.Descriptor instead. -func (*MsgRegisterCoinProposalResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgRegisterCoinResponse.ProtoReflect.Descriptor instead. +func (*MsgRegisterCoinResponse) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{7} } // MsgRegisterERC20Proposal is a gov Content type to register a token pair for // an ERC20 token -type MsgRegisterERC20Proposal struct { +type MsgRegisterERC20 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6056,8 +6056,8 @@ type MsgRegisterERC20Proposal struct { Erc20Address string `protobuf:"bytes,4,opt,name=erc20address,proto3" json:"erc20address,omitempty"` } -func (x *MsgRegisterERC20Proposal) Reset() { - *x = MsgRegisterERC20Proposal{} +func (x *MsgRegisterERC20) Reset() { + *x = MsgRegisterERC20{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6065,53 +6065,53 @@ func (x *MsgRegisterERC20Proposal) Reset() { } } -func (x *MsgRegisterERC20Proposal) String() string { +func (x *MsgRegisterERC20) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgRegisterERC20Proposal) ProtoMessage() {} +func (*MsgRegisterERC20) ProtoMessage() {} -// Deprecated: Use MsgRegisterERC20Proposal.ProtoReflect.Descriptor instead. -func (*MsgRegisterERC20Proposal) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgRegisterERC20.ProtoReflect.Descriptor instead. +func (*MsgRegisterERC20) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{8} } -func (x *MsgRegisterERC20Proposal) GetAuthority() string { +func (x *MsgRegisterERC20) GetAuthority() string { if x != nil { return x.Authority } return "" } -func (x *MsgRegisterERC20Proposal) GetTitle() string { +func (x *MsgRegisterERC20) GetTitle() string { if x != nil { return x.Title } return "" } -func (x *MsgRegisterERC20Proposal) GetDescription() string { +func (x *MsgRegisterERC20) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *MsgRegisterERC20Proposal) GetErc20Address() string { +func (x *MsgRegisterERC20) GetErc20Address() string { if x != nil { return x.Erc20Address } return "" } -type MsgRegisterERC20ProposalResponse struct { +type MsgRegisterERC20Response struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgRegisterERC20ProposalResponse) Reset() { - *x = MsgRegisterERC20ProposalResponse{} +func (x *MsgRegisterERC20Response) Reset() { + *x = MsgRegisterERC20Response{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6119,20 +6119,20 @@ func (x *MsgRegisterERC20ProposalResponse) Reset() { } } -func (x *MsgRegisterERC20ProposalResponse) String() string { +func (x *MsgRegisterERC20Response) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgRegisterERC20ProposalResponse) ProtoMessage() {} +func (*MsgRegisterERC20Response) ProtoMessage() {} -// Deprecated: Use MsgRegisterERC20ProposalResponse.ProtoReflect.Descriptor instead. -func (*MsgRegisterERC20ProposalResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgRegisterERC20Response.ProtoReflect.Descriptor instead. +func (*MsgRegisterERC20Response) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{9} } // MsgToggleTokenConversionProposal is a gov Content type to toggle the // conversion of a token pair. -type MsgToggleTokenConversionProposal struct { +type MsgToggleTokenConversion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -6149,8 +6149,8 @@ type MsgToggleTokenConversionProposal struct { Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` } -func (x *MsgToggleTokenConversionProposal) Reset() { - *x = MsgToggleTokenConversionProposal{} +func (x *MsgToggleTokenConversion) Reset() { + *x = MsgToggleTokenConversion{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6158,53 +6158,53 @@ func (x *MsgToggleTokenConversionProposal) Reset() { } } -func (x *MsgToggleTokenConversionProposal) String() string { +func (x *MsgToggleTokenConversion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgToggleTokenConversionProposal) ProtoMessage() {} +func (*MsgToggleTokenConversion) ProtoMessage() {} -// Deprecated: Use MsgToggleTokenConversionProposal.ProtoReflect.Descriptor instead. -func (*MsgToggleTokenConversionProposal) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgToggleTokenConversion.ProtoReflect.Descriptor instead. +func (*MsgToggleTokenConversion) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{10} } -func (x *MsgToggleTokenConversionProposal) GetAuthority() string { +func (x *MsgToggleTokenConversion) GetAuthority() string { if x != nil { return x.Authority } return "" } -func (x *MsgToggleTokenConversionProposal) GetTitle() string { +func (x *MsgToggleTokenConversion) GetTitle() string { if x != nil { return x.Title } return "" } -func (x *MsgToggleTokenConversionProposal) GetDescription() string { +func (x *MsgToggleTokenConversion) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *MsgToggleTokenConversionProposal) GetToken() string { +func (x *MsgToggleTokenConversion) GetToken() string { if x != nil { return x.Token } return "" } -type MsgToggleTokenConversionProposalResponse struct { +type MsgToggleTokenConversionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *MsgToggleTokenConversionProposalResponse) Reset() { - *x = MsgToggleTokenConversionProposalResponse{} +func (x *MsgToggleTokenConversionResponse) Reset() { + *x = MsgToggleTokenConversionResponse{} if protoimpl.UnsafeEnabled { mi := &file_canto_erc20_v1_tx_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6212,14 +6212,14 @@ func (x *MsgToggleTokenConversionProposalResponse) Reset() { } } -func (x *MsgToggleTokenConversionProposalResponse) String() string { +func (x *MsgToggleTokenConversionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MsgToggleTokenConversionProposalResponse) ProtoMessage() {} +func (*MsgToggleTokenConversionResponse) ProtoMessage() {} -// Deprecated: Use MsgToggleTokenConversionProposalResponse.ProtoReflect.Descriptor instead. -func (*MsgToggleTokenConversionProposalResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MsgToggleTokenConversionResponse.ProtoReflect.Descriptor instead. +func (*MsgToggleTokenConversionResponse) Descriptor() ([]byte, []int) { return file_canto_erc20_v1_tx_proto_rawDescGZIP(), []int{11} } @@ -6281,27 +6281,25 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x17, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x34, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x21, 0x0a, 0x1f, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xe5, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0f, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x36, 0x0a, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2c, + 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x19, 0x0a, 0x17, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, @@ -6311,99 +6309,92 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x3a, 0x35, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x20, + 0x3a, 0x2d, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x22, + 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x3d, 0xe8, 0xa0, 0x1f, 0x01, 0x82, 0xe7, 0xb0, 0x2a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x26, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x2a, 0x0a, 0x28, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, + 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x35, + 0xe8, 0xa0, 0x1f, 0x01, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, + 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x32, 0xb1, 0x07, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, - 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, - 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, - 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe6, 0x06, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, + 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, + 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x14, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, - 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, - 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x69, 0x6e, - 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0xa7, 0x01, 0x0a, 0x15, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x30, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x12, 0xc8, 0x01, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0xaf, 0x01, 0x0a, 0x1d, 0x54, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x38, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x6f, - 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x05, - 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, - 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, - 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, - 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, - 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, - 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, + 0x2a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x05, 0x80, 0xe7, 0xb0, + 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, + 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, + 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6420,38 +6411,38 @@ func file_canto_erc20_v1_tx_proto_rawDescGZIP() []byte { var file_canto_erc20_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_canto_erc20_v1_tx_proto_goTypes = []interface{}{ - (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin - (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse - (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 - (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response - (*MsgUpdateParams)(nil), // 4: canto.erc20.v1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 5: canto.erc20.v1.MsgUpdateParamsResponse - (*MsgRegisterCoinProposal)(nil), // 6: canto.erc20.v1.MsgRegisterCoinProposal - (*MsgRegisterCoinProposalResponse)(nil), // 7: canto.erc20.v1.MsgRegisterCoinProposalResponse - (*MsgRegisterERC20Proposal)(nil), // 8: canto.erc20.v1.MsgRegisterERC20Proposal - (*MsgRegisterERC20ProposalResponse)(nil), // 9: canto.erc20.v1.MsgRegisterERC20ProposalResponse - (*MsgToggleTokenConversionProposal)(nil), // 10: canto.erc20.v1.MsgToggleTokenConversionProposal - (*MsgToggleTokenConversionProposalResponse)(nil), // 11: canto.erc20.v1.MsgToggleTokenConversionProposalResponse - (*v1beta1.Coin)(nil), // 12: cosmos.base.v1beta1.Coin - (*Params)(nil), // 13: canto.erc20.v1.Params - (*v1beta11.Metadata)(nil), // 14: cosmos.bank.v1beta1.Metadata + (*MsgConvertCoin)(nil), // 0: canto.erc20.v1.MsgConvertCoin + (*MsgConvertCoinResponse)(nil), // 1: canto.erc20.v1.MsgConvertCoinResponse + (*MsgConvertERC20)(nil), // 2: canto.erc20.v1.MsgConvertERC20 + (*MsgConvertERC20Response)(nil), // 3: canto.erc20.v1.MsgConvertERC20Response + (*MsgUpdateParams)(nil), // 4: canto.erc20.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 5: canto.erc20.v1.MsgUpdateParamsResponse + (*MsgRegisterCoin)(nil), // 6: canto.erc20.v1.MsgRegisterCoin + (*MsgRegisterCoinResponse)(nil), // 7: canto.erc20.v1.MsgRegisterCoinResponse + (*MsgRegisterERC20)(nil), // 8: canto.erc20.v1.MsgRegisterERC20 + (*MsgRegisterERC20Response)(nil), // 9: canto.erc20.v1.MsgRegisterERC20Response + (*MsgToggleTokenConversion)(nil), // 10: canto.erc20.v1.MsgToggleTokenConversion + (*MsgToggleTokenConversionResponse)(nil), // 11: canto.erc20.v1.MsgToggleTokenConversionResponse + (*v1beta1.Coin)(nil), // 12: cosmos.base.v1beta1.Coin + (*Params)(nil), // 13: canto.erc20.v1.Params + (*v1beta11.Metadata)(nil), // 14: cosmos.bank.v1beta1.Metadata } var file_canto_erc20_v1_tx_proto_depIdxs = []int32{ 12, // 0: canto.erc20.v1.MsgConvertCoin.coin:type_name -> cosmos.base.v1beta1.Coin 13, // 1: canto.erc20.v1.MsgUpdateParams.params:type_name -> canto.erc20.v1.Params - 14, // 2: canto.erc20.v1.MsgRegisterCoinProposal.metadata:type_name -> cosmos.bank.v1beta1.Metadata + 14, // 2: canto.erc20.v1.MsgRegisterCoin.metadata:type_name -> cosmos.bank.v1beta1.Metadata 0, // 3: canto.erc20.v1.Msg.ConvertCoin:input_type -> canto.erc20.v1.MsgConvertCoin 2, // 4: canto.erc20.v1.Msg.ConvertERC20:input_type -> canto.erc20.v1.MsgConvertERC20 4, // 5: canto.erc20.v1.Msg.UpdateParams:input_type -> canto.erc20.v1.MsgUpdateParams - 6, // 6: canto.erc20.v1.Msg.RegisterCoinProposal:input_type -> canto.erc20.v1.MsgRegisterCoinProposal - 8, // 7: canto.erc20.v1.Msg.RegisterERC20Proposal:input_type -> canto.erc20.v1.MsgRegisterERC20Proposal - 10, // 8: canto.erc20.v1.Msg.ToggleTokenConversionProposal:input_type -> canto.erc20.v1.MsgToggleTokenConversionProposal + 6, // 6: canto.erc20.v1.Msg.RegisterCoinProposal:input_type -> canto.erc20.v1.MsgRegisterCoin + 8, // 7: canto.erc20.v1.Msg.RegisterERC20Proposal:input_type -> canto.erc20.v1.MsgRegisterERC20 + 10, // 8: canto.erc20.v1.Msg.ToggleTokenConversionProposal:input_type -> canto.erc20.v1.MsgToggleTokenConversion 1, // 9: canto.erc20.v1.Msg.ConvertCoin:output_type -> canto.erc20.v1.MsgConvertCoinResponse 3, // 10: canto.erc20.v1.Msg.ConvertERC20:output_type -> canto.erc20.v1.MsgConvertERC20Response 5, // 11: canto.erc20.v1.Msg.UpdateParams:output_type -> canto.erc20.v1.MsgUpdateParamsResponse - 7, // 12: canto.erc20.v1.Msg.RegisterCoinProposal:output_type -> canto.erc20.v1.MsgRegisterCoinProposalResponse - 9, // 13: canto.erc20.v1.Msg.RegisterERC20Proposal:output_type -> canto.erc20.v1.MsgRegisterERC20ProposalResponse - 11, // 14: canto.erc20.v1.Msg.ToggleTokenConversionProposal:output_type -> canto.erc20.v1.MsgToggleTokenConversionProposalResponse + 7, // 12: canto.erc20.v1.Msg.RegisterCoinProposal:output_type -> canto.erc20.v1.MsgRegisterCoinResponse + 9, // 13: canto.erc20.v1.Msg.RegisterERC20Proposal:output_type -> canto.erc20.v1.MsgRegisterERC20Response + 11, // 14: canto.erc20.v1.Msg.ToggleTokenConversionProposal:output_type -> canto.erc20.v1.MsgToggleTokenConversionResponse 9, // [9:15] is the sub-list for method output_type 3, // [3:9] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name @@ -6539,7 +6530,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgRegisterCoinProposal); i { + switch v := v.(*MsgRegisterCoin); i { case 0: return &v.state case 1: @@ -6551,7 +6542,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgRegisterCoinProposalResponse); i { + switch v := v.(*MsgRegisterCoinResponse); i { case 0: return &v.state case 1: @@ -6563,7 +6554,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgRegisterERC20Proposal); i { + switch v := v.(*MsgRegisterERC20); i { case 0: return &v.state case 1: @@ -6575,7 +6566,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgRegisterERC20ProposalResponse); i { + switch v := v.(*MsgRegisterERC20Response); i { case 0: return &v.state case 1: @@ -6587,7 +6578,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgToggleTokenConversionProposal); i { + switch v := v.(*MsgToggleTokenConversion); i { case 0: return &v.state case 1: @@ -6599,7 +6590,7 @@ func file_canto_erc20_v1_tx_proto_init() { } } file_canto_erc20_v1_tx_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgToggleTokenConversionProposalResponse); i { + switch v := v.(*MsgToggleTokenConversionResponse); i { case 0: return &v.state case 1: diff --git a/api/canto/erc20/v1/tx_grpc.pb.go b/api/canto/erc20/v1/tx_grpc.pb.go index 61dbf99e6..314ca6635 100644 --- a/api/canto/erc20/v1/tx_grpc.pb.go +++ b/api/canto/erc20/v1/tx_grpc.pb.go @@ -41,13 +41,13 @@ type MsgClient interface { UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) + RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoin, opts ...grpc.CallOption) (*MsgRegisterCoinResponse, error) // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. - RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) + RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20, opts ...grpc.CallOption) (*MsgRegisterERC20Response, error) // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. - ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) + ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversion, opts ...grpc.CallOption) (*MsgToggleTokenConversionResponse, error) } type msgClient struct { @@ -85,8 +85,8 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } -func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) { - out := new(MsgRegisterCoinProposalResponse) +func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoin, opts ...grpc.CallOption) (*MsgRegisterCoinResponse, error) { + out := new(MsgRegisterCoinResponse) err := c.cc.Invoke(ctx, Msg_RegisterCoinProposal_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -94,8 +94,8 @@ func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoi return out, nil } -func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) { - out := new(MsgRegisterERC20ProposalResponse) +func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20, opts ...grpc.CallOption) (*MsgRegisterERC20Response, error) { + out := new(MsgRegisterERC20Response) err := c.cc.Invoke(ctx, Msg_RegisterERC20Proposal_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -103,8 +103,8 @@ func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterER return out, nil } -func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) { - out := new(MsgToggleTokenConversionProposalResponse) +func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversion, opts ...grpc.CallOption) (*MsgToggleTokenConversionResponse, error) { + out := new(MsgToggleTokenConversionResponse) err := c.cc.Invoke(ctx, Msg_ToggleTokenConversionProposal_FullMethodName, in, out, opts...) if err != nil { return nil, err @@ -126,13 +126,13 @@ type MsgServer interface { UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) + RegisterCoinProposal(context.Context, *MsgRegisterCoin) (*MsgRegisterCoinResponse, error) // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. - RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) + RegisterERC20Proposal(context.Context, *MsgRegisterERC20) (*MsgRegisterERC20Response, error) // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. - ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) + ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversion) (*MsgToggleTokenConversionResponse, error) mustEmbedUnimplementedMsgServer() } @@ -149,13 +149,13 @@ func (UnimplementedMsgServer) ConvertERC20(context.Context, *MsgConvertERC20) (* func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } -func (UnimplementedMsgServer) RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) { +func (UnimplementedMsgServer) RegisterCoinProposal(context.Context, *MsgRegisterCoin) (*MsgRegisterCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterCoinProposal not implemented") } -func (UnimplementedMsgServer) RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) { +func (UnimplementedMsgServer) RegisterERC20Proposal(context.Context, *MsgRegisterERC20) (*MsgRegisterERC20Response, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterERC20Proposal not implemented") } -func (UnimplementedMsgServer) ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) { +func (UnimplementedMsgServer) ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversion) (*MsgToggleTokenConversionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ToggleTokenConversionProposal not implemented") } func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} @@ -226,7 +226,7 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in } func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRegisterCoinProposal) + in := new(MsgRegisterCoin) if err := dec(in); err != nil { return nil, err } @@ -238,13 +238,13 @@ func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec FullMethod: Msg_RegisterCoinProposal_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoinProposal)) + return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoin)) } return interceptor(ctx, in, info, handler) } func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRegisterERC20Proposal) + in := new(MsgRegisterERC20) if err := dec(in); err != nil { return nil, err } @@ -256,13 +256,13 @@ func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, de FullMethod: Msg_RegisterERC20Proposal_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20Proposal)) + return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20)) } return interceptor(ctx, in, info, handler) } func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgToggleTokenConversionProposal) + in := new(MsgToggleTokenConversion) if err := dec(in); err != nil { return nil, err } @@ -274,7 +274,7 @@ func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Con FullMethod: Msg_ToggleTokenConversionProposal_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversionProposal)) + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversion)) } return interceptor(ctx, in, info, handler) } diff --git a/api/canto/govshuttle/v1/tx.pulsar.go b/api/canto/govshuttle/v1/tx.pulsar.go index a3fc79c19..787c0f888 100644 --- a/api/canto/govshuttle/v1/tx.pulsar.go +++ b/api/canto/govshuttle/v1/tx.pulsar.go @@ -2,12 +2,2842 @@ package govshuttlev1 import ( + _ "cosmossdk.io/api/amino" _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" reflect "reflect" + sync "sync" ) +var ( + md_MsgLendingMarketProposal protoreflect.MessageDescriptor + fd_MsgLendingMarketProposal_authority protoreflect.FieldDescriptor + fd_MsgLendingMarketProposal_title protoreflect.FieldDescriptor + fd_MsgLendingMarketProposal_description protoreflect.FieldDescriptor + fd_MsgLendingMarketProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgLendingMarketProposal = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgLendingMarketProposal") + fd_MsgLendingMarketProposal_authority = md_MsgLendingMarketProposal.Fields().ByName("authority") + fd_MsgLendingMarketProposal_title = md_MsgLendingMarketProposal.Fields().ByName("title") + fd_MsgLendingMarketProposal_description = md_MsgLendingMarketProposal.Fields().ByName("description") + fd_MsgLendingMarketProposal_metadata = md_MsgLendingMarketProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_MsgLendingMarketProposal)(nil) + +type fastReflection_MsgLendingMarketProposal MsgLendingMarketProposal + +func (x *MsgLendingMarketProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgLendingMarketProposal)(x) +} + +func (x *MsgLendingMarketProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgLendingMarketProposal_messageType fastReflection_MsgLendingMarketProposal_messageType +var _ protoreflect.MessageType = fastReflection_MsgLendingMarketProposal_messageType{} + +type fastReflection_MsgLendingMarketProposal_messageType struct{} + +func (x fastReflection_MsgLendingMarketProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgLendingMarketProposal)(nil) +} +func (x fastReflection_MsgLendingMarketProposal_messageType) New() protoreflect.Message { + return new(fastReflection_MsgLendingMarketProposal) +} +func (x fastReflection_MsgLendingMarketProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLendingMarketProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgLendingMarketProposal) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLendingMarketProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgLendingMarketProposal) Type() protoreflect.MessageType { + return _fastReflection_MsgLendingMarketProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgLendingMarketProposal) New() protoreflect.Message { + return new(fastReflection_MsgLendingMarketProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgLendingMarketProposal) Interface() protoreflect.ProtoMessage { + return (*MsgLendingMarketProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgLendingMarketProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgLendingMarketProposal_authority, value) { + return + } + } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgLendingMarketProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgLendingMarketProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_MsgLendingMarketProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgLendingMarketProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + return x.Authority != "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + return x.Title != "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + return x.Description != "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + x.Authority = "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + x.Title = "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + x.Description = "" + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgLendingMarketProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + x.Authority = value.Interface().(string) + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + x.Title = value.Interface().(string) + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + x.Description = value.Interface().(string) + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + x.Metadata = value.Message().Interface().(*TreasuryProposalMetadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(TreasuryProposalMetadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + panic(fmt.Errorf("field authority of message canto.govshuttle.v1.MsgLendingMarketProposal is not mutable")) + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + panic(fmt.Errorf("field title of message canto.govshuttle.v1.MsgLendingMarketProposal is not mutable")) + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + panic(fmt.Errorf("field description of message canto.govshuttle.v1.MsgLendingMarketProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgLendingMarketProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgLendingMarketProposal.title": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgLendingMarketProposal.description": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": + m := new(TreasuryProposalMetadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgLendingMarketProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgLendingMarketProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgLendingMarketProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgLendingMarketProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgLendingMarketProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgLendingMarketProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgLendingMarketProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x1a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgLendingMarketProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLendingMarketProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLendingMarketProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &TreasuryProposalMetadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgLendingMarketProposalResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgLendingMarketProposalResponse = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgLendingMarketProposalResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgLendingMarketProposalResponse)(nil) + +type fastReflection_MsgLendingMarketProposalResponse MsgLendingMarketProposalResponse + +func (x *MsgLendingMarketProposalResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgLendingMarketProposalResponse)(x) +} + +func (x *MsgLendingMarketProposalResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgLendingMarketProposalResponse_messageType fastReflection_MsgLendingMarketProposalResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgLendingMarketProposalResponse_messageType{} + +type fastReflection_MsgLendingMarketProposalResponse_messageType struct{} + +func (x fastReflection_MsgLendingMarketProposalResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgLendingMarketProposalResponse)(nil) +} +func (x fastReflection_MsgLendingMarketProposalResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgLendingMarketProposalResponse) +} +func (x fastReflection_MsgLendingMarketProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLendingMarketProposalResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgLendingMarketProposalResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgLendingMarketProposalResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgLendingMarketProposalResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgLendingMarketProposalResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgLendingMarketProposalResponse) New() protoreflect.Message { + return new(fastReflection_MsgLendingMarketProposalResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgLendingMarketProposalResponse) Interface() protoreflect.ProtoMessage { + return (*MsgLendingMarketProposalResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgLendingMarketProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgLendingMarketProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposalResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgLendingMarketProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgLendingMarketProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgLendingMarketProposalResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgLendingMarketProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgLendingMarketProposalResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgLendingMarketProposalResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgLendingMarketProposalResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgLendingMarketProposalResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgLendingMarketProposalResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgLendingMarketProposalResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgLendingMarketProposalResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgLendingMarketProposalResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLendingMarketProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgLendingMarketProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTreasuryProposal protoreflect.MessageDescriptor + fd_MsgTreasuryProposal_authority protoreflect.FieldDescriptor + fd_MsgTreasuryProposal_title protoreflect.FieldDescriptor + fd_MsgTreasuryProposal_description protoreflect.FieldDescriptor + fd_MsgTreasuryProposal_metadata protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgTreasuryProposal = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgTreasuryProposal") + fd_MsgTreasuryProposal_authority = md_MsgTreasuryProposal.Fields().ByName("authority") + fd_MsgTreasuryProposal_title = md_MsgTreasuryProposal.Fields().ByName("title") + fd_MsgTreasuryProposal_description = md_MsgTreasuryProposal.Fields().ByName("description") + fd_MsgTreasuryProposal_metadata = md_MsgTreasuryProposal.Fields().ByName("metadata") +} + +var _ protoreflect.Message = (*fastReflection_MsgTreasuryProposal)(nil) + +type fastReflection_MsgTreasuryProposal MsgTreasuryProposal + +func (x *MsgTreasuryProposal) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTreasuryProposal)(x) +} + +func (x *MsgTreasuryProposal) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTreasuryProposal_messageType fastReflection_MsgTreasuryProposal_messageType +var _ protoreflect.MessageType = fastReflection_MsgTreasuryProposal_messageType{} + +type fastReflection_MsgTreasuryProposal_messageType struct{} + +func (x fastReflection_MsgTreasuryProposal_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTreasuryProposal)(nil) +} +func (x fastReflection_MsgTreasuryProposal_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTreasuryProposal) +} +func (x fastReflection_MsgTreasuryProposal_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTreasuryProposal +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTreasuryProposal) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTreasuryProposal +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTreasuryProposal) Type() protoreflect.MessageType { + return _fastReflection_MsgTreasuryProposal_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTreasuryProposal) New() protoreflect.Message { + return new(fastReflection_MsgTreasuryProposal) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTreasuryProposal) Interface() protoreflect.ProtoMessage { + return (*MsgTreasuryProposal)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTreasuryProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgTreasuryProposal_authority, value) { + return + } + } + if x.Title != "" { + value := protoreflect.ValueOfString(x.Title) + if !f(fd_MsgTreasuryProposal_title, value) { + return + } + } + if x.Description != "" { + value := protoreflect.ValueOfString(x.Description) + if !f(fd_MsgTreasuryProposal_description, value) { + return + } + } + if x.Metadata != nil { + value := protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + if !f(fd_MsgTreasuryProposal_metadata, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTreasuryProposal) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + return x.Authority != "" + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + return x.Title != "" + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + return x.Description != "" + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + return x.Metadata != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposal) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + x.Authority = "" + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + x.Title = "" + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + x.Description = "" + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + x.Metadata = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTreasuryProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + value := x.Title + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + value := x.Description + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + value := x.Metadata + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + x.Authority = value.Interface().(string) + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + x.Title = value.Interface().(string) + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + x.Description = value.Interface().(string) + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + x.Metadata = value.Message().Interface().(*TreasuryProposalMetadata) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + if x.Metadata == nil { + x.Metadata = new(TreasuryProposalMetadata) + } + return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + panic(fmt.Errorf("field authority of message canto.govshuttle.v1.MsgTreasuryProposal is not mutable")) + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + panic(fmt.Errorf("field title of message canto.govshuttle.v1.MsgTreasuryProposal is not mutable")) + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + panic(fmt.Errorf("field description of message canto.govshuttle.v1.MsgTreasuryProposal is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTreasuryProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgTreasuryProposal.authority": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgTreasuryProposal.title": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgTreasuryProposal.description": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgTreasuryProposal.metadata": + m := new(TreasuryProposalMetadata) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposal")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposal does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTreasuryProposal) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgTreasuryProposal", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTreasuryProposal) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposal) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTreasuryProposal) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTreasuryProposal) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTreasuryProposal) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Title) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Description) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Metadata != nil { + l = options.Size(x.Metadata) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTreasuryProposal) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Metadata != nil { + encoded, err := options.Marshal(x.Metadata) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + if len(x.Description) > 0 { + i -= len(x.Description) + copy(dAtA[i:], x.Description) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Description))) + i-- + dAtA[i] = 0x1a + } + if len(x.Title) > 0 { + i -= len(x.Title) + copy(dAtA[i:], x.Title) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTreasuryProposal) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTreasuryProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTreasuryProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Metadata == nil { + x.Metadata = &TreasuryProposalMetadata{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgTreasuryProposalResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgTreasuryProposalResponse = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgTreasuryProposalResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgTreasuryProposalResponse)(nil) + +type fastReflection_MsgTreasuryProposalResponse MsgTreasuryProposalResponse + +func (x *MsgTreasuryProposalResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgTreasuryProposalResponse)(x) +} + +func (x *MsgTreasuryProposalResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgTreasuryProposalResponse_messageType fastReflection_MsgTreasuryProposalResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgTreasuryProposalResponse_messageType{} + +type fastReflection_MsgTreasuryProposalResponse_messageType struct{} + +func (x fastReflection_MsgTreasuryProposalResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgTreasuryProposalResponse)(nil) +} +func (x fastReflection_MsgTreasuryProposalResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgTreasuryProposalResponse) +} +func (x fastReflection_MsgTreasuryProposalResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTreasuryProposalResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgTreasuryProposalResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgTreasuryProposalResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgTreasuryProposalResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgTreasuryProposalResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgTreasuryProposalResponse) New() protoreflect.Message { + return new(fastReflection_MsgTreasuryProposalResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgTreasuryProposalResponse) Interface() protoreflect.ProtoMessage { + return (*MsgTreasuryProposalResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgTreasuryProposalResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgTreasuryProposalResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposalResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgTreasuryProposalResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposalResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposalResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgTreasuryProposalResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgTreasuryProposalResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgTreasuryProposalResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgTreasuryProposalResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgTreasuryProposalResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgTreasuryProposalResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgTreasuryProposalResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgTreasuryProposalResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgTreasuryProposalResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgTreasuryProposalResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgTreasuryProposalResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgTreasuryProposalResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTreasuryProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgTreasuryProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.govshuttle.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.govshuttle.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.govshuttle.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.govshuttle.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.govshuttle.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.govshuttle.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.govshuttle.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.govshuttle.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_govshuttle_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -21,37 +2851,410 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type MsgLendingMarketProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // NOTE: All parameters must be supplied. +} + +func (x *MsgLendingMarketProposal) Reset() { + *x = MsgLendingMarketProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgLendingMarketProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgLendingMarketProposal) ProtoMessage() {} + +// Deprecated: Use MsgLendingMarketProposal.ProtoReflect.Descriptor instead. +func (*MsgLendingMarketProposal) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgLendingMarketProposal) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgLendingMarketProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgLendingMarketProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgLendingMarketProposal) GetMetadata() *TreasuryProposalMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +type MsgLendingMarketProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgLendingMarketProposalResponse) Reset() { + *x = MsgLendingMarketProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgLendingMarketProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgLendingMarketProposalResponse) ProtoMessage() {} + +// Deprecated: Use MsgLendingMarketProposalResponse.ProtoReflect.Descriptor instead. +func (*MsgLendingMarketProposalResponse) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{1} +} + +type MsgTreasuryProposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // NOTE: All parameters must be supplied. +} + +func (x *MsgTreasuryProposal) Reset() { + *x = MsgTreasuryProposal{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgTreasuryProposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgTreasuryProposal) ProtoMessage() {} + +// Deprecated: Use MsgTreasuryProposal.ProtoReflect.Descriptor instead. +func (*MsgTreasuryProposal) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{2} +} + +func (x *MsgTreasuryProposal) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgTreasuryProposal) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *MsgTreasuryProposal) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MsgTreasuryProposal) GetMetadata() *TreasuryProposalMetadata { + if x != nil { + return x.Metadata + } + return nil +} + +type MsgTreasuryProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgTreasuryProposalResponse) Reset() { + *x = MsgTreasuryProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgTreasuryProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgTreasuryProposalResponse) ProtoMessage() {} + +// Deprecated: Use MsgTreasuryProposalResponse.ProtoReflect.Descriptor instead. +func (*MsgTreasuryProposalResponse) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{3} +} + +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{4} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{5} +} + var File_canto_govshuttle_v1_tx_proto protoreflect.FileDescriptor var file_canto_govshuttle_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, - 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x0c, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, - 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, - 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, - 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var file_canto_govshuttle_v1_tx_proto_goTypes = []interface{}{} + 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, + 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x02, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x35, 0xe8, 0xa0, + 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, + 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, + 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x30, 0xe8, 0xa0, 0x1f, 0x00, + 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, + 0xb0, 0x2a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, + 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x0f, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xfd, 0x03, 0x0a, + 0x03, 0x4d, 0x73, 0x67, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x27, 0x12, 0x25, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xb6, 0x01, 0x0a, 0x15, 0x4c, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x1a, 0x35, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, + 0x12, 0x2f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x12, 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, + 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, + 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_govshuttle_v1_tx_proto_rawDescOnce sync.Once + file_canto_govshuttle_v1_tx_proto_rawDescData = file_canto_govshuttle_v1_tx_proto_rawDesc +) + +func file_canto_govshuttle_v1_tx_proto_rawDescGZIP() []byte { + file_canto_govshuttle_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_govshuttle_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_govshuttle_v1_tx_proto_rawDescData) + }) + return file_canto_govshuttle_v1_tx_proto_rawDescData +} + +var file_canto_govshuttle_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_govshuttle_v1_tx_proto_goTypes = []interface{}{ + (*MsgLendingMarketProposal)(nil), // 0: canto.govshuttle.v1.MsgLendingMarketProposal + (*MsgLendingMarketProposalResponse)(nil), // 1: canto.govshuttle.v1.MsgLendingMarketProposalResponse + (*MsgTreasuryProposal)(nil), // 2: canto.govshuttle.v1.MsgTreasuryProposal + (*MsgTreasuryProposalResponse)(nil), // 3: canto.govshuttle.v1.MsgTreasuryProposalResponse + (*MsgUpdateParams)(nil), // 4: canto.govshuttle.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 5: canto.govshuttle.v1.MsgUpdateParamsResponse + (*TreasuryProposalMetadata)(nil), // 6: canto.govshuttle.v1.TreasuryProposalMetadata + (*Params)(nil), // 7: canto.govshuttle.v1.Params +} var file_canto_govshuttle_v1_tx_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name + 6, // 0: canto.govshuttle.v1.MsgLendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata + 6, // 1: canto.govshuttle.v1.MsgTreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata + 7, // 2: canto.govshuttle.v1.MsgUpdateParams.params:type_name -> canto.govshuttle.v1.Params + 4, // 3: canto.govshuttle.v1.Msg.UpdateParams:input_type -> canto.govshuttle.v1.MsgUpdateParams + 0, // 4: canto.govshuttle.v1.Msg.LendingMarketProposal:input_type -> canto.govshuttle.v1.MsgLendingMarketProposal + 2, // 5: canto.govshuttle.v1.Msg.TreasuryProposal:input_type -> canto.govshuttle.v1.MsgTreasuryProposal + 5, // 6: canto.govshuttle.v1.Msg.UpdateParams:output_type -> canto.govshuttle.v1.MsgUpdateParamsResponse + 1, // 7: canto.govshuttle.v1.Msg.LendingMarketProposal:output_type -> canto.govshuttle.v1.MsgLendingMarketProposalResponse + 3, // 8: canto.govshuttle.v1.Msg.TreasuryProposal:output_type -> canto.govshuttle.v1.MsgTreasuryProposalResponse + 6, // [6:9] is the sub-list for method output_type + 3, // [3:6] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_canto_govshuttle_v1_tx_proto_init() } @@ -59,18 +3262,94 @@ func file_canto_govshuttle_v1_tx_proto_init() { if File_canto_govshuttle_v1_tx_proto != nil { return } + file_canto_govshuttle_v1_govshuttle_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_govshuttle_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgLendingMarketProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgLendingMarketProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTreasuryProposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgTreasuryProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_govshuttle_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_govshuttle_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 0, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, GoTypes: file_canto_govshuttle_v1_tx_proto_goTypes, DependencyIndexes: file_canto_govshuttle_v1_tx_proto_depIdxs, + MessageInfos: file_canto_govshuttle_v1_tx_proto_msgTypes, }.Build() File_canto_govshuttle_v1_tx_proto = out.File file_canto_govshuttle_v1_tx_proto_rawDesc = nil diff --git a/api/canto/govshuttle/v1/tx_grpc.pb.go b/api/canto/govshuttle/v1/tx_grpc.pb.go index 34eb10691..5c8b0fdc4 100644 --- a/api/canto/govshuttle/v1/tx_grpc.pb.go +++ b/api/canto/govshuttle/v1/tx_grpc.pb.go @@ -7,7 +7,10 @@ package govshuttlev1 import ( + context "context" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // This is a compile-time assertion to ensure that this generated file @@ -15,12 +18,20 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const () +const ( + Msg_UpdateParams_FullMethodName = "/canto.govshuttle.v1.Msg/UpdateParams" + Msg_LendingMarketProposal_FullMethodName = "/canto.govshuttle.v1.Msg/LendingMarketProposal" + Msg_TreasuryProposal_FullMethodName = "/canto.govshuttle.v1.Msg/TreasuryProposal" +) // MsgClient is the client API for Msg service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type MsgClient interface { + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) + TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) } type msgClient struct { @@ -31,10 +42,41 @@ func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { return &msgClient{cc} } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) { + out := new(MsgLendingMarketProposalResponse) + err := c.cc.Invoke(ctx, Msg_LendingMarketProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) { + out := new(MsgTreasuryProposalResponse) + err := c.cc.Invoke(ctx, Msg_TreasuryProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. // All implementations must embed UnimplementedMsgServer // for forward compatibility type MsgServer interface { + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) + TreasuryProposal(context.Context, *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) mustEmbedUnimplementedMsgServer() } @@ -42,6 +84,15 @@ type MsgServer interface { type UnimplementedMsgServer struct { } +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LendingMarketProposal not implemented") +} +func (UnimplementedMsgServer) TreasuryProposal(context.Context, *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TreasuryProposal not implemented") +} func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} // UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. @@ -55,13 +106,80 @@ func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { s.RegisterService(&Msg_ServiceDesc, srv) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_LendingMarketProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLendingMarketProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).LendingMarketProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_LendingMarketProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).LendingMarketProposal(ctx, req.(*MsgLendingMarketProposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_TreasuryProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTreasuryProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).TreasuryProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_TreasuryProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TreasuryProposal(ctx, req.(*MsgTreasuryProposal)) + } + return interceptor(ctx, in, info, handler) +} + // Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var Msg_ServiceDesc = grpc.ServiceDesc{ ServiceName: "canto.govshuttle.v1.Msg", HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "canto/govshuttle/v1/tx.proto", + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "LendingMarketProposal", + Handler: _Msg_LendingMarketProposal_Handler, + }, + { + MethodName: "TreasuryProposal", + Handler: _Msg_TreasuryProposal_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/govshuttle/v1/tx.proto", } diff --git a/go.mod b/go.mod index c5e38c653..cd716a7b8 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,6 @@ require ( cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c cosmossdk.io/x/tx v0.13.0 cosmossdk.io/x/upgrade v0.1.0 github.com/cometbft/cometbft v0.38.2 @@ -56,6 +55,7 @@ require ( cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.30.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/DataDog/datadog-go v3.2.0+incompatible // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect diff --git a/proto/canto/erc20/v1/erc20.proto b/proto/canto/erc20/v1/erc20.proto index 65ff5c9e7..0194689ef 100644 --- a/proto/canto/erc20/v1/erc20.proto +++ b/proto/canto/erc20/v1/erc20.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package canto.erc20.v1; import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; +import "cosmos/bank/v1beta1/bank.proto"; + option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; // Owner enumerates the ownership of a ERC20 contract. @@ -28,3 +31,44 @@ message TokenPair { // ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external address) Owner contract_owner = 4; } + +// RegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +message RegisterCoinProposal { + option deprecated = true; + option (gogoproto.equal) = false; + + // title of the proposal + string title = 1; + // proposal description + string description = 2; + // metadata of the native Cosmos coin + cosmos.bank.v1beta1.Metadata metadata = 3 [ (gogoproto.nullable) = false ]; +} + +// RegisterERC20Proposal is a gov Content type to register a token pair for an +// ERC20 token +message RegisterERC20Proposal { + option deprecated = true; + option (gogoproto.equal) = false; + // title of the proposa string title = 1; + string title = 1; + // proposal description + string description = 2; + // contract address of ERC20 token + string erc20address = 3; +} + +// ToggleTokenConversionProposal is a gov Content type to toggle the conversion +// of a token pair. +message ToggleTokenConversionProposal { + option deprecated = true; + option (gogoproto.equal) = false; + // title of the proposal + string Title = 1; + // proposal description + string description = 2; + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + string token = 3; +} \ No newline at end of file diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index d782a2293..c726a5652 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -34,24 +34,22 @@ service Msg { // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - rpc RegisterCoinProposal(MsgRegisterCoinProposal) - returns (MsgRegisterCoinProposalResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/register_coin_proposal"; + rpc RegisterCoinProposal(MsgRegisterCoin) returns (MsgRegisterCoinResponse) { + option (google.api.http).get = "/canto/erc20/v1/tx/register_coin"; }; // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. - rpc RegisterERC20Proposal(MsgRegisterERC20Proposal) - returns (MsgRegisterERC20ProposalResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/register_erc20_proposal"; + rpc RegisterERC20Proposal(MsgRegisterERC20) + returns (MsgRegisterERC20Response) { + option (google.api.http).get = "/canto/erc20/v1/tx/register_erc20"; }; // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. - rpc ToggleTokenConversionProposal(MsgToggleTokenConversionProposal) - returns (MsgToggleTokenConversionProposalResponse) { - option (google.api.http).get = - "/canto/erc20/v1/tx/toggle_token_conversion_proposal"; + rpc ToggleTokenConversionProposal(MsgToggleTokenConversion) + returns (MsgToggleTokenConversionResponse) { + option (google.api.http).get = "/canto/erc20/v1/tx/toggle_token_conversion"; }; } @@ -118,13 +116,13 @@ message MsgUpdateParamsResponse {} // MsgRegisterCoinProposal is a gov Content type to register a token pair for a // native Cosmos coin. -message MsgRegisterCoinProposal { +message MsgRegisterCoin { option (cosmos.msg.v1.signer) = "authority"; // authority is the address that controls the module (defaults to x/gov unless // overwritten). string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - option (amino.name) = "canto/MsgRegisterCoinProposal"; + option (amino.name) = "canto/MsgRegisterCoin"; option (gogoproto.equal) = false; // title of the proposal @@ -135,17 +133,17 @@ message MsgRegisterCoinProposal { cosmos.bank.v1beta1.Metadata metadata = 4 [ (gogoproto.nullable) = false ]; } -message MsgRegisterCoinProposalResponse {} +message MsgRegisterCoinResponse {} // MsgRegisterERC20Proposal is a gov Content type to register a token pair for // an ERC20 token -message MsgRegisterERC20Proposal { +message MsgRegisterERC20 { option (cosmos.msg.v1.signer) = "authority"; // authority is the address that controls the module (defaults to x/gov unless // overwritten). string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - option (amino.name) = "canto/MsgRegisterERC20Proposal"; + option (amino.name) = "canto/MsgRegisterERC20"; option (gogoproto.equal) = false; // title of the proposa string title = 1; @@ -156,17 +154,17 @@ message MsgRegisterERC20Proposal { string erc20address = 4; } -message MsgRegisterERC20ProposalResponse {} +message MsgRegisterERC20Response {} // MsgToggleTokenConversionProposal is a gov Content type to toggle the // conversion of a token pair. -message MsgToggleTokenConversionProposal { +message MsgToggleTokenConversion { option (cosmos.msg.v1.signer) = "authority"; // authority is the address that controls the module (defaults to x/gov unless // overwritten). string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - option (amino.name) = "canto/MsgToggleTokenConversionProposal"; + option (amino.name) = "canto/MsgToggleTokenConversion"; option (gogoproto.equal) = true; // title of the proposal string Title = 2; @@ -177,4 +175,4 @@ message MsgToggleTokenConversionProposal { string token = 4; } -message MsgToggleTokenConversionProposalResponse {} \ No newline at end of file +message MsgToggleTokenConversionResponse {} \ No newline at end of file diff --git a/proto/canto/govshuttle/v1/tx.proto b/proto/canto/govshuttle/v1/tx.proto index 50d3f19a8..78bd57cdb 100644 --- a/proto/canto/govshuttle/v1/tx.proto +++ b/proto/canto/govshuttle/v1/tx.proto @@ -1,9 +1,12 @@ syntax = "proto3"; package canto.govshuttle.v1; +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; import "cosmos/msg/v1/msg.proto"; - -// this line is used by starport scaffolding # proto/tx/import +import "cosmos_proto/cosmos.proto"; +import "amino/amino.proto"; +import "canto/govshuttle/v1/govshuttle.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/govshuttle/types"; @@ -11,7 +14,78 @@ option go_package = "github.com/Canto-Network/Canto/v7/x/govshuttle/types"; service Msg { option (cosmos.msg.v1.service) = true; - // this line is used by starport scaffolding # proto/tx/rpc + // UpdateParams updates the parameters of the x/erc20 module. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { + option (google.api.http).get = "/canto/govshuttle/v1/tx/update_params"; + }; + + rpc LendingMarketProposal(MsgLendingMarketProposal) + returns (MsgLendingMarketProposalResponse) { + option (google.api.http).get = + "/canto/govshuttle/v1/tx/lending_market_proposal"; + }; + + rpc TreasuryProposal(MsgTreasuryProposal) + returns (MsgTreasuryProposalResponse) { + option (google.api.http).get = "/canto/govshuttle/v1/tx/treasury_proposal"; + }; +} + +message MsgLendingMarketProposal { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgLendingMarketProposal"; + + option (gogoproto.equal) = false; + + string title = 2; + string description = 3; + + TreasuryProposalMetadata metadata = 4; + // NOTE: All parameters must be supplied. +} + +message MsgLendingMarketProposalResponse {} + +message MsgTreasuryProposal { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgTreasuryProposal"; + + option (gogoproto.equal) = false; + + string title = 2; + string description = 3; + + TreasuryProposalMetadata metadata = 4; + // NOTE: All parameters must be supplied. +} + +message MsgTreasuryProposalResponse {} + +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; } -// this line is used by starport scaffolding # proto/tx/message +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/x/erc20/keeper/evm_hooks_test.go b/x/erc20/keeper/evm_hooks_test.go index 528188f24..e1cc54f3a 100644 --- a/x/erc20/keeper/evm_hooks_test.go +++ b/x/erc20/keeper/evm_hooks_test.go @@ -12,7 +12,6 @@ import ( ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/Canto-Network/Canto/v7/contracts" - erc20keeper "github.com/Canto-Network/Canto/v7/x/erc20/keeper" "github.com/Canto-Network/Canto/v7/x/erc20/types" "github.com/evmos/ethermint/tests" ) @@ -163,7 +162,7 @@ func (suite *KeeperTestSuite) TestEvmHooksRegisteredERC20() { tc.malleate(contractAddr) - balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), erc20keeper.CreateDenom(contractAddr.String())) + balance := suite.app.BankKeeper.GetBalance(suite.ctx, sdk.AccAddress(suite.address.Bytes()), types.CreateDenom(contractAddr.String())) suite.Commit() if tc.result { // Check if the execution was successful diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index 675e15095..f180adb16 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -2,15 +2,12 @@ package keeper import ( "context" - "fmt" "math/big" - "strings" errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" "github.com/hashicorp/go-metrics" @@ -547,7 +544,7 @@ func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) return &types.MsgUpdateParamsResponse{}, nil } -func (k Keeper) RegisterCoinProposal(goCtx context.Context, req *types.MsgRegisterCoinProposal) (*types.MsgRegisterCoinProposalResponse, error) { +func (k Keeper) RegisterCoinProposal(goCtx context.Context, req *types.MsgRegisterCoin) (*types.MsgRegisterCoinResponse, error) { if k.GetAuthority() != req.Authority { return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) } @@ -560,10 +557,10 @@ func (k Keeper) RegisterCoinProposal(goCtx context.Context, req *types.MsgRegist return nil, err } - return &types.MsgRegisterCoinProposalResponse{}, nil + return &types.MsgRegisterCoinResponse{}, nil } -func (k Keeper) RegisterERC20Proposal(goCtx context.Context, req *types.MsgRegisterERC20Proposal) (*types.MsgRegisterERC20ProposalResponse, error) { +func (k Keeper) RegisterERC20Proposal(goCtx context.Context, req *types.MsgRegisterERC20) (*types.MsgRegisterERC20Response, error) { if k.GetAuthority() != req.Authority { return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) } @@ -576,10 +573,10 @@ func (k Keeper) RegisterERC20Proposal(goCtx context.Context, req *types.MsgRegis return nil, err } - return &types.MsgRegisterERC20ProposalResponse{}, nil + return &types.MsgRegisterERC20Response{}, nil } -func (k Keeper) ToggleTokenConversionProposal(goCtx context.Context, req *types.MsgToggleTokenConversionProposal) (*types.MsgToggleTokenConversionProposalResponse, error) { +func (k Keeper) ToggleTokenConversionProposal(goCtx context.Context, req *types.MsgToggleTokenConversion) (*types.MsgToggleTokenConversionResponse, error) { if k.GetAuthority() != req.Authority { return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) } @@ -592,219 +589,5 @@ func (k Keeper) ToggleTokenConversionProposal(goCtx context.Context, req *types. return nil, err } - return &types.MsgToggleTokenConversionProposalResponse{}, nil -} - -// RegisterCoin deploys an erc20 contract and creates the token pair for the -// existing cosmos coin -func (k Keeper) RegisterCoin( - ctx sdk.Context, - coinMetadata banktypes.Metadata, -) (*types.TokenPair, error) { - // Check if the conversion is globally enabled - params := k.GetParams(ctx) - if !params.EnableErc20 { - return nil, errorsmod.Wrap( - types.ErrERC20Disabled, "registration is currently disabled by governance", - ) - } - - // Prohibit denominations that contain the evm denom - if strings.Contains(coinMetadata.Base, "CANTO") { - return nil, errorsmod.Wrapf( - types.ErrEVMDenom, "cannot register the EVM denomination %s", coinMetadata.Base, - ) - } - - // Check if denomination is already registered - if k.IsDenomRegistered(ctx, coinMetadata.Name) { - return nil, errorsmod.Wrapf( - types.ErrTokenPairAlreadyExists, "coin denomination already registered: %s", coinMetadata.Name, - ) - } - - // Check if the coin exists by ensuring the supply is set - if !k.bankKeeper.HasSupply(ctx, coinMetadata.Base) { - return nil, errorsmod.Wrapf( - sdkerrors.ErrInvalidCoins, "base denomination '%s' cannot have a supply of 0", coinMetadata.Base, - ) - } - - if err := k.verifyMetadata(ctx, coinMetadata); err != nil { - return nil, errorsmod.Wrapf( - types.ErrInternalTokenPair, "coin metadata is invalid %s", coinMetadata.Name, - ) - } - - addr, err := k.DeployERC20Contract(ctx, coinMetadata) - if err != nil { - return nil, errorsmod.Wrap( - err, "failed to create wrapped coin denom metadata for ERC20", - ) - } - - pair := types.NewTokenPair(addr, coinMetadata.Base, true, types.OWNER_MODULE) - k.SetTokenPair(ctx, pair) - k.SetDenomMap(ctx, pair.Denom, pair.GetID()) - k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) - - return &pair, nil -} - -// RegisterERC20 creates a Cosmos coin and registers the token pair between the -// coin and the ERC20 -func (k Keeper) RegisterERC20( - ctx sdk.Context, - contract common.Address, -) (*types.TokenPair, error) { - // Check if the conversion is globally enabled - params := k.GetParams(ctx) - if !params.EnableErc20 { - return nil, errorsmod.Wrap( - types.ErrERC20Disabled, "registration is currently disabled by governance", - ) - } - - // Check if ERC20 is already registered - if k.IsERC20Registered(ctx, contract) { - return nil, errorsmod.Wrapf( - types.ErrTokenPairAlreadyExists, "token ERC20 contract already registered: %s", contract.String(), - ) - } - - metadata, err := k.CreateCoinMetadata(ctx, contract) - if err != nil { - return nil, errorsmod.Wrap( - err, "failed to create wrapped coin denom metadata for ERC20", - ) - } - - pair := types.NewTokenPair(contract, metadata.Name, true, types.OWNER_EXTERNAL) - k.SetTokenPair(ctx, pair) - k.SetDenomMap(ctx, pair.Denom, pair.GetID()) - k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) - return &pair, nil -} - -// ToggleConversion toggles conversion for a given token pair -func (k Keeper) ToggleConversion( - ctx sdk.Context, - token string, -) (types.TokenPair, error) { - id := k.GetTokenPairID(ctx, token) - if len(id) == 0 { - return types.TokenPair{}, errorsmod.Wrapf( - types.ErrTokenPairNotFound, "token '%s' not registered by id", token, - ) - } - - pair, found := k.GetTokenPair(ctx, id) - if !found { - return types.TokenPair{}, errorsmod.Wrapf( - types.ErrTokenPairNotFound, "token '%s' not registered", token, - ) - } - - pair.Enabled = !pair.Enabled - - k.SetTokenPair(ctx, pair) - return pair, nil -} - -// CreateCoinMetadata generates the metadata to represent the ERC20 token on -// canto. -func (k Keeper) CreateCoinMetadata( - ctx sdk.Context, - contract common.Address, -) (*banktypes.Metadata, error) { - strContract := contract.String() - - erc20Data, err := k.QueryERC20(ctx, contract) - if err != nil { - return nil, err - } - - // Check if metadata already exists - _, found := k.bankKeeper.GetDenomMetaData(ctx, CreateDenom(strContract)) - if found { - return nil, errorsmod.Wrap( - types.ErrInternalTokenPair, "denom metadata already registered", - ) - } - - if k.IsDenomRegistered(ctx, CreateDenom(strContract)) { - return nil, errorsmod.Wrapf( - types.ErrInternalTokenPair, "coin denomination already registered: %s", erc20Data.Name, - ) - } - - // base denomination - base := CreateDenom(strContract) - - // create a bank denom metadata based on the ERC20 token ABI details - // metadata name is should always be the contract since it's the key - // to the bank store - metadata := banktypes.Metadata{ - Description: CreateDenomDescription(strContract), - Base: base, - // NOTE: Denom units MUST be increasing - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: base, - Exponent: 0, - }, - }, - Name: CreateDenom(strContract), - Symbol: erc20Data.Symbol, - Display: base, - } - - // only append metadata if decimals > 0, otherwise validation fails - if erc20Data.Decimals > 0 { - nameSanitized := types.SanitizeERC20Name(erc20Data.Name) - metadata.DenomUnits = append( - metadata.DenomUnits, - &banktypes.DenomUnit{ - Denom: nameSanitized, - Exponent: uint32(erc20Data.Decimals), - }, - ) - metadata.Display = nameSanitized - } - - if err := metadata.Validate(); err != nil { - return nil, errorsmod.Wrapf( - err, "ERC20 token data is invalid for contract %s", strContract, - ) - } - - k.bankKeeper.SetDenomMetaData(ctx, metadata) - - return &metadata, nil -} - -// verifyMetadata verifies if the metadata matches the existing one, if not it -// sets it to the store -func (k Keeper) verifyMetadata( - ctx sdk.Context, - coinMetadata banktypes.Metadata, -) error { - meta, found := k.bankKeeper.GetDenomMetaData(ctx, coinMetadata.Base) - if !found { - k.bankKeeper.SetDenomMetaData(ctx, coinMetadata) - return nil - } - - // If it already existed, check that is equal to what is stored - return types.EqualMetadata(meta, coinMetadata) -} - -// CreateDenomDescription generates a string with the coin description -func CreateDenomDescription(address string) string { - return fmt.Sprintf("Cosmos coin token representation of %s", address) -} - -// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number -func CreateDenom(address string) string { - return fmt.Sprintf("%s/%s", types.ModuleName, address) + return &types.MsgToggleTokenConversionResponse{}, nil } diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 027c9860a..3d5642d8e 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -922,7 +922,7 @@ func (suite *KeeperTestSuite) TestConvertCoinNativeERC20() { id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, contractAddr.String()) pair, _ := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) coins := sdk.NewCoins(sdk.NewCoin(pair.Denom, sdkmath.NewInt(tc.mint))) - coinName := keeper.CreateDenom(contractAddr.String()) + coinName := types.CreateDenom(contractAddr.String()) sender := sdk.AccAddress(suite.address.Bytes()) // Precondition: Mint Coins to convert on sender account diff --git a/x/erc20/keeper/proposals.go b/x/erc20/keeper/proposals.go new file mode 100644 index 000000000..d33a458aa --- /dev/null +++ b/x/erc20/keeper/proposals.go @@ -0,0 +1,217 @@ +package keeper + +import ( + "strings" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/ethereum/go-ethereum/common" + + "github.com/Canto-Network/Canto/v7/x/erc20/types" +) + +// RegisterCoin deploys an erc20 contract and creates the token pair for the +// existing cosmos coin +func (k Keeper) RegisterCoin( + ctx sdk.Context, + coinMetadata banktypes.Metadata, +) (*types.TokenPair, error) { + // Check if the conversion is globally enabled + params := k.GetParams(ctx) + if !params.EnableErc20 { + return nil, errorsmod.Wrap( + types.ErrERC20Disabled, "registration is currently disabled by governance", + ) + } + + // Prohibit denominations that contain the evm denom + if strings.Contains(coinMetadata.Base, "CANTO") { + return nil, errorsmod.Wrapf( + types.ErrEVMDenom, "cannot register the EVM denomination %s", coinMetadata.Base, + ) + } + + // Check if denomination is already registered + if k.IsDenomRegistered(ctx, coinMetadata.Name) { + return nil, errorsmod.Wrapf( + types.ErrTokenPairAlreadyExists, "coin denomination already registered: %s", coinMetadata.Name, + ) + } + + // Check if the coin exists by ensuring the supply is set + if !k.bankKeeper.HasSupply(ctx, coinMetadata.Base) { + return nil, errorsmod.Wrapf( + sdkerrors.ErrInvalidCoins, "base denomination '%s' cannot have a supply of 0", coinMetadata.Base, + ) + } + + if err := k.verifyMetadata(ctx, coinMetadata); err != nil { + return nil, errorsmod.Wrapf( + types.ErrInternalTokenPair, "coin metadata is invalid %s", coinMetadata.Name, + ) + } + + addr, err := k.DeployERC20Contract(ctx, coinMetadata) + if err != nil { + return nil, errorsmod.Wrap( + err, "failed to create wrapped coin denom metadata for ERC20", + ) + } + + pair := types.NewTokenPair(addr, coinMetadata.Base, true, types.OWNER_MODULE) + k.SetTokenPair(ctx, pair) + k.SetDenomMap(ctx, pair.Denom, pair.GetID()) + k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) + + return &pair, nil +} + +// RegisterERC20 creates a Cosmos coin and registers the token pair between the +// coin and the ERC20 +func (k Keeper) RegisterERC20( + ctx sdk.Context, + contract common.Address, +) (*types.TokenPair, error) { + // Check if the conversion is globally enabled + params := k.GetParams(ctx) + if !params.EnableErc20 { + return nil, errorsmod.Wrap( + types.ErrERC20Disabled, "registration is currently disabled by governance", + ) + } + + // Check if ERC20 is already registered + if k.IsERC20Registered(ctx, contract) { + return nil, errorsmod.Wrapf( + types.ErrTokenPairAlreadyExists, "token ERC20 contract already registered: %s", contract.String(), + ) + } + + metadata, err := k.CreateCoinMetadata(ctx, contract) + if err != nil { + return nil, errorsmod.Wrap( + err, "failed to create wrapped coin denom metadata for ERC20", + ) + } + + pair := types.NewTokenPair(contract, metadata.Name, true, types.OWNER_EXTERNAL) + k.SetTokenPair(ctx, pair) + k.SetDenomMap(ctx, pair.Denom, pair.GetID()) + k.SetERC20Map(ctx, common.HexToAddress(pair.Erc20Address), pair.GetID()) + return &pair, nil +} + +// CreateCoinMetadata generates the metadata to represent the ERC20 token on +// canto. +func (k Keeper) CreateCoinMetadata( + ctx sdk.Context, + contract common.Address, +) (*banktypes.Metadata, error) { + strContract := contract.String() + + erc20Data, err := k.QueryERC20(ctx, contract) + if err != nil { + return nil, err + } + + // Check if metadata already exists + _, found := k.bankKeeper.GetDenomMetaData(ctx, types.CreateDenom(strContract)) + if found { + return nil, errorsmod.Wrap( + types.ErrInternalTokenPair, "denom metadata already registered", + ) + } + + if k.IsDenomRegistered(ctx, types.CreateDenom(strContract)) { + return nil, errorsmod.Wrapf( + types.ErrInternalTokenPair, "coin denomination already registered: %s", erc20Data.Name, + ) + } + + // base denomination + base := types.CreateDenom(strContract) + + // create a bank denom metadata based on the ERC20 token ABI details + // metadata name is should always be the contract since it's the key + // to the bank store + metadata := banktypes.Metadata{ + Description: types.CreateDenomDescription(strContract), + Base: base, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: base, + Exponent: 0, + }, + }, + Name: types.CreateDenom(strContract), + Symbol: erc20Data.Symbol, + Display: base, + } + + // only append metadata if decimals > 0, otherwise validation fails + if erc20Data.Decimals > 0 { + nameSanitized := types.SanitizeERC20Name(erc20Data.Name) + metadata.DenomUnits = append( + metadata.DenomUnits, + &banktypes.DenomUnit{ + Denom: nameSanitized, + Exponent: uint32(erc20Data.Decimals), + }, + ) + metadata.Display = nameSanitized + } + + if err := metadata.Validate(); err != nil { + return nil, errorsmod.Wrapf( + err, "ERC20 token data is invalid for contract %s", strContract, + ) + } + + k.bankKeeper.SetDenomMetaData(ctx, metadata) + + return &metadata, nil +} + +// ToggleConversion toggles conversion for a given token pair +func (k Keeper) ToggleConversion( + ctx sdk.Context, + token string, +) (types.TokenPair, error) { + id := k.GetTokenPairID(ctx, token) + if len(id) == 0 { + return types.TokenPair{}, errorsmod.Wrapf( + types.ErrTokenPairNotFound, "token '%s' not registered by id", token, + ) + } + + pair, found := k.GetTokenPair(ctx, id) + if !found { + return types.TokenPair{}, errorsmod.Wrapf( + types.ErrTokenPairNotFound, "token '%s' not registered", token, + ) + } + + pair.Enabled = !pair.Enabled + + k.SetTokenPair(ctx, pair) + return pair, nil +} + +// verifyMetadata verifies if the metadata matches the existing one, if not it +// sets it to the store +func (k Keeper) verifyMetadata( + ctx sdk.Context, + coinMetadata banktypes.Metadata, +) error { + meta, found := k.bankKeeper.GetDenomMetaData(ctx, coinMetadata.Base) + if !found { + k.bankKeeper.SetDenomMetaData(ctx, coinMetadata) + return nil + } + + // If it already existed, check that is equal to what is stored + return types.EqualMetadata(meta, coinMetadata) +} diff --git a/x/erc20/types/codec.go b/x/erc20/types/codec.go index 03a36eced..379ab224f 100644 --- a/x/erc20/types/codec.go +++ b/x/erc20/types/codec.go @@ -6,6 +6,7 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) var ( @@ -43,9 +44,16 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &MsgConvertCoin{}, &MsgConvertERC20{}, &MsgUpdateParams{}, - &MsgRegisterCoinProposal{}, - &MsgRegisterERC20Proposal{}, - &MsgToggleTokenConversionProposal{}, + &MsgRegisterCoin{}, + &MsgRegisterERC20{}, + &MsgToggleTokenConversion{}, + ) + + registry.RegisterImplementations( + (*govtypes.Content)(nil), + &RegisterCoinProposal{}, + &RegisterERC20Proposal{}, + &ToggleTokenConversionProposal{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) @@ -55,8 +63,8 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { // concrete types on the provided LegacyAmino codec. These types are used for // Amino JSON serialization and EIP-712 compatibility. func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgRegisterCoinProposal{}, "canto/RegisterCoinProposal", nil) - cdc.RegisterConcrete(&MsgRegisterERC20Proposal{}, "canto/RegisterERC20Proposal", nil) + cdc.RegisterConcrete(&MsgRegisterCoin{}, "canto/RegisterCoinProposal", nil) + cdc.RegisterConcrete(&MsgRegisterERC20{}, "canto/RegisterERC20Proposal", nil) cdc.RegisterConcrete(&MsgConvertERC20{}, convertERC20Name, nil) cdc.RegisterConcrete(&MsgConvertCoin{}, convertCoinName, nil) cdc.RegisterConcrete(&MsgUpdateParams{}, msgUpdateParams, nil) diff --git a/x/erc20/types/erc20.pb.go b/x/erc20/types/erc20.pb.go index 69e6aae83..e227de644 100644 --- a/x/erc20/types/erc20.pb.go +++ b/x/erc20/types/erc20.pb.go @@ -5,6 +5,8 @@ package types import ( fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -130,36 +132,252 @@ func (m *TokenPair) GetContractOwner() Owner { return OWNER_UNSPECIFIED } +// RegisterCoinProposal is a gov Content type to register a token pair for a +// native Cosmos coin. +// +// Deprecated: Do not use. +type RegisterCoinProposal struct { + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // metadata of the native Cosmos coin + Metadata types.Metadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata"` +} + +func (m *RegisterCoinProposal) Reset() { *m = RegisterCoinProposal{} } +func (m *RegisterCoinProposal) String() string { return proto.CompactTextString(m) } +func (*RegisterCoinProposal) ProtoMessage() {} +func (*RegisterCoinProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_5c364669f6882b8b, []int{1} +} +func (m *RegisterCoinProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RegisterCoinProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RegisterCoinProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RegisterCoinProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_RegisterCoinProposal.Merge(m, src) +} +func (m *RegisterCoinProposal) XXX_Size() int { + return m.Size() +} +func (m *RegisterCoinProposal) XXX_DiscardUnknown() { + xxx_messageInfo_RegisterCoinProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_RegisterCoinProposal proto.InternalMessageInfo + +func (m *RegisterCoinProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *RegisterCoinProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *RegisterCoinProposal) GetMetadata() types.Metadata { + if m != nil { + return m.Metadata + } + return types.Metadata{} +} + +// RegisterERC20Proposal is a gov Content type to register a token pair for an +// ERC20 token +// +// Deprecated: Do not use. +type RegisterERC20Proposal struct { + // title of the proposa string title = 1; + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // contract address of ERC20 token + Erc20Address string `protobuf:"bytes,3,opt,name=erc20address,proto3" json:"erc20address,omitempty"` +} + +func (m *RegisterERC20Proposal) Reset() { *m = RegisterERC20Proposal{} } +func (m *RegisterERC20Proposal) String() string { return proto.CompactTextString(m) } +func (*RegisterERC20Proposal) ProtoMessage() {} +func (*RegisterERC20Proposal) Descriptor() ([]byte, []int) { + return fileDescriptor_5c364669f6882b8b, []int{2} +} +func (m *RegisterERC20Proposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RegisterERC20Proposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RegisterERC20Proposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RegisterERC20Proposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_RegisterERC20Proposal.Merge(m, src) +} +func (m *RegisterERC20Proposal) XXX_Size() int { + return m.Size() +} +func (m *RegisterERC20Proposal) XXX_DiscardUnknown() { + xxx_messageInfo_RegisterERC20Proposal.DiscardUnknown(m) +} + +var xxx_messageInfo_RegisterERC20Proposal proto.InternalMessageInfo + +func (m *RegisterERC20Proposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *RegisterERC20Proposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *RegisterERC20Proposal) GetErc20Address() string { + if m != nil { + return m.Erc20Address + } + return "" +} + +// ToggleTokenConversionProposal is a gov Content type to toggle the conversion +// of a token pair. +// +// Deprecated: Do not use. +type ToggleTokenConversionProposal struct { + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` + // proposal description + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // token identifier can be either the hex contract address of the ERC20 or the + // Cosmos base denomination + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` +} + +func (m *ToggleTokenConversionProposal) Reset() { *m = ToggleTokenConversionProposal{} } +func (m *ToggleTokenConversionProposal) String() string { return proto.CompactTextString(m) } +func (*ToggleTokenConversionProposal) ProtoMessage() {} +func (*ToggleTokenConversionProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_5c364669f6882b8b, []int{3} +} +func (m *ToggleTokenConversionProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ToggleTokenConversionProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ToggleTokenConversionProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ToggleTokenConversionProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_ToggleTokenConversionProposal.Merge(m, src) +} +func (m *ToggleTokenConversionProposal) XXX_Size() int { + return m.Size() +} +func (m *ToggleTokenConversionProposal) XXX_DiscardUnknown() { + xxx_messageInfo_ToggleTokenConversionProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_ToggleTokenConversionProposal proto.InternalMessageInfo + +func (m *ToggleTokenConversionProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *ToggleTokenConversionProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ToggleTokenConversionProposal) GetToken() string { + if m != nil { + return m.Token + } + return "" +} + func init() { proto.RegisterEnum("canto.erc20.v1.Owner", Owner_name, Owner_value) proto.RegisterType((*TokenPair)(nil), "canto.erc20.v1.TokenPair") + proto.RegisterType((*RegisterCoinProposal)(nil), "canto.erc20.v1.RegisterCoinProposal") + proto.RegisterType((*RegisterERC20Proposal)(nil), "canto.erc20.v1.RegisterERC20Proposal") + proto.RegisterType((*ToggleTokenConversionProposal)(nil), "canto.erc20.v1.ToggleTokenConversionProposal") } func init() { proto.RegisterFile("canto/erc20/v1/erc20.proto", fileDescriptor_5c364669f6882b8b) } var fileDescriptor_5c364669f6882b8b = []byte{ - // 326 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0x4e, 0xcc, 0x2b, - 0xc9, 0xd7, 0x4f, 0x2d, 0x4a, 0x36, 0x32, 0xd0, 0x2f, 0x33, 0x84, 0x30, 0xf4, 0x0a, 0x8a, 0xf2, - 0x4b, 0xf2, 0x85, 0xf8, 0xc0, 0x72, 0x7a, 0x10, 0xa1, 0x32, 0x43, 0x29, 0x91, 0xf4, 0xfc, 0xf4, - 0x7c, 0xb0, 0x94, 0x3e, 0x88, 0x05, 0x51, 0xa5, 0xb4, 0x84, 0x91, 0x8b, 0x33, 0x24, 0x3f, 0x3b, - 0x35, 0x2f, 0x20, 0x31, 0xb3, 0x48, 0x48, 0x99, 0x8b, 0x17, 0xac, 0x3e, 0x3e, 0x31, 0x25, 0xa5, - 0x28, 0xb5, 0xb8, 0x58, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, 0x07, 0x2c, 0xe8, 0x08, 0x11, - 0x13, 0x12, 0xe1, 0x62, 0x4d, 0x49, 0xcd, 0xcb, 0xcf, 0x95, 0x60, 0x02, 0x4b, 0x42, 0x38, 0x42, - 0x12, 0x5c, 0xec, 0xa9, 0x79, 0x89, 0x49, 0x39, 0xa9, 0x29, 0x12, 0xcc, 0x0a, 0x8c, 0x1a, 0x1c, - 0x41, 0x30, 0xae, 0x90, 0x0d, 0x17, 0x5f, 0x72, 0x7e, 0x5e, 0x49, 0x51, 0x62, 0x72, 0x49, 0x7c, - 0x7e, 0x79, 0x5e, 0x6a, 0x91, 0x04, 0x8b, 0x02, 0xa3, 0x06, 0x9f, 0x91, 0xa8, 0x1e, 0xaa, 0x0b, - 0xf5, 0xfc, 0x41, 0x92, 0x41, 0xbc, 0x30, 0xc5, 0x60, 0xae, 0x15, 0xcb, 0x8b, 0x05, 0xf2, 0x8c, - 0x5a, 0x5e, 0x5c, 0xac, 0x60, 0xae, 0x90, 0x28, 0x97, 0xa0, 0x7f, 0xb8, 0x9f, 0x6b, 0x50, 0x7c, - 0xa8, 0x5f, 0x70, 0x80, 0xab, 0xb3, 0xa7, 0x9b, 0xa7, 0xab, 0x8b, 0x00, 0x83, 0x90, 0x00, 0x17, - 0x0f, 0x44, 0xd8, 0xd7, 0xdf, 0x25, 0xd4, 0xc7, 0x55, 0x80, 0x51, 0x48, 0x88, 0x8b, 0x0f, 0x22, - 0xe2, 0x1a, 0x11, 0xe2, 0x1a, 0xe4, 0xe7, 0xe8, 0x23, 0xc0, 0x24, 0xc5, 0xd2, 0xb1, 0x58, 0x8e, - 0xc1, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, - 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, - 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x9d, 0x41, 0x6e, 0xd3, 0xf5, 0x4b, 0x2d, - 0x29, 0xcf, 0x2f, 0xca, 0x86, 0xf0, 0xf4, 0xcb, 0xcc, 0xf5, 0x2b, 0xa0, 0x81, 0x5d, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x44, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0x14, - 0x1c, 0x4b, 0x88, 0x01, 0x00, 0x00, + // 512 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x31, 0x6b, 0xdb, 0x40, + 0x14, 0xc7, 0x75, 0x89, 0x93, 0x26, 0x97, 0xc4, 0xb8, 0x87, 0x0d, 0xaa, 0x21, 0xb2, 0x71, 0x17, + 0x53, 0xa8, 0x14, 0xbb, 0x43, 0x21, 0x14, 0x4a, 0xe2, 0xa8, 0xe0, 0x92, 0xd8, 0x46, 0x75, 0x68, + 0xe9, 0x62, 0xce, 0xd2, 0xa1, 0x0a, 0xdb, 0xf7, 0xcc, 0xe9, 0xa2, 0xb4, 0xf4, 0x0b, 0x74, 0xec, + 0xd6, 0x35, 0xd0, 0x7e, 0x98, 0x8c, 0x19, 0x3b, 0x95, 0x62, 0x2f, 0xf9, 0x18, 0x45, 0x77, 0x52, + 0x70, 0xb6, 0x42, 0xb6, 0xfb, 0xff, 0xff, 0x4f, 0x7a, 0x3f, 0xbd, 0x77, 0xc2, 0x55, 0x9f, 0x72, + 0x09, 0x0e, 0x13, 0x7e, 0xfb, 0xc0, 0x49, 0x5a, 0xfa, 0x60, 0xcf, 0x05, 0x48, 0x20, 0x45, 0x95, + 0xd9, 0xda, 0x4a, 0x5a, 0xd5, 0x72, 0x08, 0x21, 0xa8, 0xc8, 0x49, 0x4f, 0xba, 0xaa, 0xfa, 0xc4, + 0x87, 0x78, 0x06, 0xf1, 0x48, 0x07, 0x5a, 0x64, 0x91, 0xa5, 0x95, 0x33, 0xa6, 0x7c, 0xe2, 0x24, + 0xad, 0x31, 0x93, 0xb4, 0xa5, 0x84, 0xce, 0x1b, 0xbf, 0x10, 0xde, 0x1e, 0xc2, 0x84, 0xf1, 0x01, + 0x8d, 0x04, 0x79, 0x8a, 0xf7, 0x54, 0xab, 0x11, 0x0d, 0x02, 0xc1, 0xe2, 0xd8, 0x44, 0x75, 0xd4, + 0xdc, 0xf6, 0x76, 0x95, 0x79, 0xa4, 0x3d, 0x52, 0xc6, 0x1b, 0x01, 0xe3, 0x30, 0x33, 0xd7, 0x54, + 0xa8, 0x05, 0x31, 0xf1, 0x23, 0xc6, 0xe9, 0x78, 0xca, 0x02, 0x73, 0xbd, 0x8e, 0x9a, 0x5b, 0x5e, + 0x2e, 0xc9, 0x2b, 0x5c, 0xf4, 0x81, 0x4b, 0x41, 0x7d, 0x39, 0x82, 0x4b, 0xce, 0x84, 0x59, 0xa8, + 0xa3, 0x66, 0xb1, 0x5d, 0xb1, 0xef, 0x7f, 0x9c, 0xdd, 0x4f, 0x43, 0x6f, 0x2f, 0x2f, 0x56, 0xf2, + 0xb0, 0x70, 0x7b, 0x55, 0x43, 0x8d, 0x1f, 0x08, 0x97, 0x3d, 0x16, 0x46, 0xb1, 0x64, 0xa2, 0x03, + 0x11, 0x1f, 0x08, 0x98, 0x43, 0x4c, 0xa7, 0x29, 0x8c, 0x8c, 0xe4, 0x94, 0x65, 0xa4, 0x5a, 0x90, + 0x3a, 0xde, 0x09, 0x58, 0xec, 0x8b, 0x68, 0x2e, 0x23, 0xe0, 0x19, 0xe8, 0xaa, 0x45, 0x5e, 0xe3, + 0xad, 0x19, 0x93, 0x34, 0xa0, 0x92, 0x2a, 0xde, 0x9d, 0xf6, 0xbe, 0x9d, 0x0d, 0x4e, 0x4d, 0x27, + 0x1b, 0x95, 0x7d, 0x96, 0x15, 0x1d, 0x17, 0xae, 0xff, 0xd4, 0x0c, 0xef, 0xee, 0xa1, 0xc3, 0xcd, + 0xdb, 0xab, 0x9a, 0x61, 0xa2, 0xc6, 0x57, 0x5c, 0xc9, 0xc1, 0x5c, 0xaf, 0xd3, 0x3e, 0x78, 0x30, + 0x59, 0x03, 0xeb, 0x71, 0xe7, 0x2b, 0x58, 0x5f, 0x59, 0x41, 0xe6, 0xdd, 0x35, 0xbf, 0xc0, 0xfb, + 0x43, 0x08, 0xc3, 0x29, 0x53, 0x2b, 0xec, 0x00, 0x4f, 0x98, 0x88, 0x23, 0xb8, 0x37, 0x9e, 0xe1, + 0x2a, 0xc4, 0xf0, 0x3f, 0x21, 0x52, 0xf8, 0xf4, 0x95, 0x59, 0x77, 0x2d, 0xf2, 0xb6, 0xcf, 0xde, + 0xe2, 0x0d, 0xb5, 0x1c, 0x52, 0xc1, 0x8f, 0xfb, 0xef, 0x7b, 0xae, 0x37, 0x3a, 0xef, 0xbd, 0x1b, + 0xb8, 0x9d, 0xee, 0x9b, 0xae, 0x7b, 0x52, 0x32, 0x48, 0x09, 0xef, 0x6a, 0xfb, 0xac, 0x7f, 0x72, + 0x7e, 0xea, 0x96, 0x10, 0x21, 0xb8, 0xa8, 0x1d, 0xf7, 0xc3, 0xd0, 0xf5, 0x7a, 0x47, 0xa7, 0xa5, + 0xb5, 0x6a, 0xe1, 0xdb, 0x4f, 0xcb, 0x38, 0xee, 0x5e, 0x2f, 0x2c, 0x74, 0xb3, 0xb0, 0xd0, 0xdf, + 0x85, 0x85, 0xbe, 0x2f, 0x2d, 0xe3, 0x66, 0x69, 0x19, 0xbf, 0x97, 0x96, 0xf1, 0xd1, 0x09, 0x23, + 0xf9, 0xe9, 0x62, 0x6c, 0xfb, 0x30, 0x73, 0x3a, 0xe9, 0x4d, 0x79, 0xde, 0x63, 0xf2, 0x12, 0xc4, + 0x44, 0x2b, 0x27, 0x79, 0xe9, 0x7c, 0xce, 0xfe, 0x1a, 0xf9, 0x65, 0xce, 0xe2, 0xf1, 0xa6, 0xba, + 0xd2, 0x2f, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0xeb, 0x27, 0x63, 0x4b, 0x51, 0x03, 0x00, 0x00, } func (this *TokenPair) Equal(that interface{}) bool { @@ -247,6 +465,141 @@ func (m *TokenPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RegisterCoinProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RegisterCoinProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RegisterCoinProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintErc20(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RegisterERC20Proposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RegisterERC20Proposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RegisterERC20Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Erc20Address) > 0 { + i -= len(m.Erc20Address) + copy(dAtA[i:], m.Erc20Address) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Erc20Address))) + i-- + dAtA[i] = 0x1a + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ToggleTokenConversionProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ToggleTokenConversionProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ToggleTokenConversionProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Token) > 0 { + i -= len(m.Token) + copy(dAtA[i:], m.Token) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Token))) + i-- + dAtA[i] = 0x1a + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintErc20(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintErc20(dAtA []byte, offset int, v uint64) int { offset -= sovErc20(v) base := offset @@ -281,6 +634,67 @@ func (m *TokenPair) Size() (n int) { return n } +func (m *RegisterCoinProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = m.Metadata.Size() + n += 1 + l + sovErc20(uint64(l)) + return n +} + +func (m *RegisterERC20Proposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = len(m.Erc20Address) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + return n +} + +func (m *ToggleTokenConversionProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + l = len(m.Token) + if l > 0 { + n += 1 + l + sovErc20(uint64(l)) + } + return n +} + func sovErc20(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -440,6 +854,445 @@ func (m *TokenPair) Unmarshal(dAtA []byte) error { } return nil } +func (m *RegisterCoinProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RegisterCoinProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipErc20(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthErc20 + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RegisterERC20Proposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RegisterERC20Proposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Erc20Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Erc20Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipErc20(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthErc20 + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ToggleTokenConversionProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Token", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowErc20 + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthErc20 + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthErc20 + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Token = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipErc20(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthErc20 + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipErc20(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/erc20/types/proposal.go b/x/erc20/types/proposal.go new file mode 100644 index 000000000..ef4620192 --- /dev/null +++ b/x/erc20/types/proposal.go @@ -0,0 +1,152 @@ +package types + +import ( + "fmt" + "strings" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ethermint "github.com/evmos/ethermint/types" +) + +// constants +const ( + ProposalTypeRegisterCoin string = "RegisterCoin" + ProposalTypeRegisterERC20 string = "RegisterERC20" + ProposalTypeToggleTokenConversion string = "ToggleTokenConversion" // #nosec +) + +// Implements Proposal Interface +var ( + _ govtypes.Content = &RegisterCoinProposal{} + _ govtypes.Content = &RegisterERC20Proposal{} + _ govtypes.Content = &ToggleTokenConversionProposal{} +) + +func init() { + govtypes.RegisterProposalType(ProposalTypeRegisterCoin) + govtypes.RegisterProposalType(ProposalTypeRegisterERC20) + govtypes.RegisterProposalType(ProposalTypeToggleTokenConversion) +} + +// CreateDenomDescription generates a string with the coin description +func CreateDenomDescription(address string) string { + return fmt.Sprintf("Cosmos coin token representation of %s", address) +} + +// CreateDenom generates a string the module name plus the address to avoid conflicts with names staring with a number +func CreateDenom(address string) string { + return fmt.Sprintf("%s/%s", ModuleName, address) +} + +// NewRegisterCoinProposal returns new instance of RegisterCoinProposal +func NewRegisterCoinProposal(title, description string, coinMetadata banktypes.Metadata) govtypes.Content { + return &RegisterCoinProposal{ + Title: title, + Description: description, + Metadata: coinMetadata, + } +} + +// ProposalRoute returns router key for this proposal +func (*RegisterCoinProposal) ProposalRoute() string { return RouterKey } + +// ProposalType returns proposal type for this proposal +func (*RegisterCoinProposal) ProposalType() string { + return ProposalTypeRegisterCoin +} + +// ValidateBasic performs a stateless check of the proposal fields +func (rtbp *RegisterCoinProposal) ValidateBasic() error { + if err := rtbp.Metadata.Validate(); err != nil { + return err + } + + if err := ibctransfertypes.ValidateIBCDenom(rtbp.Metadata.Base); err != nil { + return err + } + + if err := validateIBCVoucherMetadata(rtbp.Metadata); err != nil { + return err + } + + return govtypes.ValidateAbstract(rtbp) +} + +// validateIBCVoucherMetadata checks that the coin metadata fields are consistent +// with an IBC voucher denomination. +func validateIBCVoucherMetadata(metadata banktypes.Metadata) error { + // Check ibc/ denom + denomSplit := strings.SplitN(metadata.Base, "/", 2) + + if denomSplit[0] == metadata.Base && strings.TrimSpace(metadata.Base) != "" { + // Not IBC + return nil + } + + if len(denomSplit) != 2 || denomSplit[0] != ibctransfertypes.DenomPrefix { + // NOTE: should be unaccessible (covered on ValidateIBCDenom) + return fmt.Errorf("invalid metadata. %s denomination should be prefixed with the format 'ibc/", metadata.Base) + } + + return nil +} + +// NewRegisterERC20Proposal returns new instance of RegisterERC20Proposal +func NewRegisterERC20Proposal(title, description, erc20Addr string) govtypes.Content { + return &RegisterERC20Proposal{ + Title: title, + Description: description, + Erc20Address: erc20Addr, + } +} + +// ProposalRoute returns router key for this proposal +func (*RegisterERC20Proposal) ProposalRoute() string { return RouterKey } + +// ProposalType returns proposal type for this proposal +func (*RegisterERC20Proposal) ProposalType() string { + return ProposalTypeRegisterERC20 +} + +// ValidateBasic performs a stateless check of the proposal fields +func (rtbp *RegisterERC20Proposal) ValidateBasic() error { + if err := ethermint.ValidateAddress(rtbp.Erc20Address); err != nil { + return errorsmod.Wrap(err, "ERC20 address") + + } + return govtypes.ValidateAbstract(rtbp) +} + +// NewToggleTokenConversionProposal returns new instance of ToggleTokenConversionProposal +func NewToggleTokenConversionProposal(title, description string, token string) govtypes.Content { + return &ToggleTokenConversionProposal{ + Title: title, + Description: description, + Token: token, + } +} + +// ProposalRoute returns router key for this proposal +func (*ToggleTokenConversionProposal) ProposalRoute() string { return RouterKey } + +// ProposalType returns proposal type for this proposal +func (*ToggleTokenConversionProposal) ProposalType() string { + return ProposalTypeToggleTokenConversion +} + +// ValidateBasic performs a stateless check of the proposal fields +func (ttcp *ToggleTokenConversionProposal) ValidateBasic() error { + // check if the token is a hex address, if not, check if it is a valid SDK + // denom + if err := ethermint.ValidateAddress(ttcp.Token); err != nil { + if err := sdk.ValidateDenom(ttcp.Token); err != nil { + return err + } + } + + return govtypes.ValidateAbstract(ttcp) +} diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 613c3cbec..ceb720927 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -340,7 +340,7 @@ var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo // MsgRegisterCoinProposal is a gov Content type to register a token pair for a // native Cosmos coin. -type MsgRegisterCoinProposal struct { +type MsgRegisterCoin struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` @@ -352,18 +352,18 @@ type MsgRegisterCoinProposal struct { Metadata types1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata"` } -func (m *MsgRegisterCoinProposal) Reset() { *m = MsgRegisterCoinProposal{} } -func (m *MsgRegisterCoinProposal) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterCoinProposal) ProtoMessage() {} -func (*MsgRegisterCoinProposal) Descriptor() ([]byte, []int) { +func (m *MsgRegisterCoin) Reset() { *m = MsgRegisterCoin{} } +func (m *MsgRegisterCoin) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCoin) ProtoMessage() {} +func (*MsgRegisterCoin) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{6} } -func (m *MsgRegisterCoinProposal) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterCoin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterCoinProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterCoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterCoinProposal.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterCoin.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -373,61 +373,61 @@ func (m *MsgRegisterCoinProposal) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *MsgRegisterCoinProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterCoinProposal.Merge(m, src) +func (m *MsgRegisterCoin) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCoin.Merge(m, src) } -func (m *MsgRegisterCoinProposal) XXX_Size() int { +func (m *MsgRegisterCoin) XXX_Size() int { return m.Size() } -func (m *MsgRegisterCoinProposal) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterCoinProposal.DiscardUnknown(m) +func (m *MsgRegisterCoin) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCoin.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterCoinProposal proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterCoin proto.InternalMessageInfo -func (m *MsgRegisterCoinProposal) GetAuthority() string { +func (m *MsgRegisterCoin) GetAuthority() string { if m != nil { return m.Authority } return "" } -func (m *MsgRegisterCoinProposal) GetTitle() string { +func (m *MsgRegisterCoin) GetTitle() string { if m != nil { return m.Title } return "" } -func (m *MsgRegisterCoinProposal) GetDescription() string { +func (m *MsgRegisterCoin) GetDescription() string { if m != nil { return m.Description } return "" } -func (m *MsgRegisterCoinProposal) GetMetadata() types1.Metadata { +func (m *MsgRegisterCoin) GetMetadata() types1.Metadata { if m != nil { return m.Metadata } return types1.Metadata{} } -type MsgRegisterCoinProposalResponse struct { +type MsgRegisterCoinResponse struct { } -func (m *MsgRegisterCoinProposalResponse) Reset() { *m = MsgRegisterCoinProposalResponse{} } -func (m *MsgRegisterCoinProposalResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterCoinProposalResponse) ProtoMessage() {} -func (*MsgRegisterCoinProposalResponse) Descriptor() ([]byte, []int) { +func (m *MsgRegisterCoinResponse) Reset() { *m = MsgRegisterCoinResponse{} } +func (m *MsgRegisterCoinResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterCoinResponse) ProtoMessage() {} +func (*MsgRegisterCoinResponse) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{7} } -func (m *MsgRegisterCoinProposalResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterCoinResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterCoinProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterCoinResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterCoinProposalResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterCoinResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -437,21 +437,21 @@ func (m *MsgRegisterCoinProposalResponse) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *MsgRegisterCoinProposalResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterCoinProposalResponse.Merge(m, src) +func (m *MsgRegisterCoinResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterCoinResponse.Merge(m, src) } -func (m *MsgRegisterCoinProposalResponse) XXX_Size() int { +func (m *MsgRegisterCoinResponse) XXX_Size() int { return m.Size() } -func (m *MsgRegisterCoinProposalResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterCoinProposalResponse.DiscardUnknown(m) +func (m *MsgRegisterCoinResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterCoinResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterCoinProposalResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterCoinResponse proto.InternalMessageInfo // MsgRegisterERC20Proposal is a gov Content type to register a token pair for // an ERC20 token -type MsgRegisterERC20Proposal struct { +type MsgRegisterERC20 struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` @@ -463,18 +463,18 @@ type MsgRegisterERC20Proposal struct { Erc20Address string `protobuf:"bytes,4,opt,name=erc20address,proto3" json:"erc20address,omitempty"` } -func (m *MsgRegisterERC20Proposal) Reset() { *m = MsgRegisterERC20Proposal{} } -func (m *MsgRegisterERC20Proposal) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterERC20Proposal) ProtoMessage() {} -func (*MsgRegisterERC20Proposal) Descriptor() ([]byte, []int) { +func (m *MsgRegisterERC20) Reset() { *m = MsgRegisterERC20{} } +func (m *MsgRegisterERC20) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterERC20) ProtoMessage() {} +func (*MsgRegisterERC20) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{8} } -func (m *MsgRegisterERC20Proposal) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterERC20) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterERC20Proposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterERC20) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterERC20Proposal.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterERC20.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -484,61 +484,61 @@ func (m *MsgRegisterERC20Proposal) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *MsgRegisterERC20Proposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterERC20Proposal.Merge(m, src) +func (m *MsgRegisterERC20) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterERC20.Merge(m, src) } -func (m *MsgRegisterERC20Proposal) XXX_Size() int { +func (m *MsgRegisterERC20) XXX_Size() int { return m.Size() } -func (m *MsgRegisterERC20Proposal) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterERC20Proposal.DiscardUnknown(m) +func (m *MsgRegisterERC20) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterERC20.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterERC20Proposal proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterERC20 proto.InternalMessageInfo -func (m *MsgRegisterERC20Proposal) GetAuthority() string { +func (m *MsgRegisterERC20) GetAuthority() string { if m != nil { return m.Authority } return "" } -func (m *MsgRegisterERC20Proposal) GetTitle() string { +func (m *MsgRegisterERC20) GetTitle() string { if m != nil { return m.Title } return "" } -func (m *MsgRegisterERC20Proposal) GetDescription() string { +func (m *MsgRegisterERC20) GetDescription() string { if m != nil { return m.Description } return "" } -func (m *MsgRegisterERC20Proposal) GetErc20Address() string { +func (m *MsgRegisterERC20) GetErc20Address() string { if m != nil { return m.Erc20Address } return "" } -type MsgRegisterERC20ProposalResponse struct { +type MsgRegisterERC20Response struct { } -func (m *MsgRegisterERC20ProposalResponse) Reset() { *m = MsgRegisterERC20ProposalResponse{} } -func (m *MsgRegisterERC20ProposalResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRegisterERC20ProposalResponse) ProtoMessage() {} -func (*MsgRegisterERC20ProposalResponse) Descriptor() ([]byte, []int) { +func (m *MsgRegisterERC20Response) Reset() { *m = MsgRegisterERC20Response{} } +func (m *MsgRegisterERC20Response) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterERC20Response) ProtoMessage() {} +func (*MsgRegisterERC20Response) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{9} } -func (m *MsgRegisterERC20ProposalResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgRegisterERC20Response) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgRegisterERC20ProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgRegisterERC20Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgRegisterERC20ProposalResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgRegisterERC20Response.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -548,21 +548,21 @@ func (m *MsgRegisterERC20ProposalResponse) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *MsgRegisterERC20ProposalResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRegisterERC20ProposalResponse.Merge(m, src) +func (m *MsgRegisterERC20Response) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterERC20Response.Merge(m, src) } -func (m *MsgRegisterERC20ProposalResponse) XXX_Size() int { +func (m *MsgRegisterERC20Response) XXX_Size() int { return m.Size() } -func (m *MsgRegisterERC20ProposalResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRegisterERC20ProposalResponse.DiscardUnknown(m) +func (m *MsgRegisterERC20Response) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterERC20Response.DiscardUnknown(m) } -var xxx_messageInfo_MsgRegisterERC20ProposalResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgRegisterERC20Response proto.InternalMessageInfo // MsgToggleTokenConversionProposal is a gov Content type to toggle the // conversion of a token pair. -type MsgToggleTokenConversionProposal struct { +type MsgToggleTokenConversion struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` @@ -575,18 +575,18 @@ type MsgToggleTokenConversionProposal struct { Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` } -func (m *MsgToggleTokenConversionProposal) Reset() { *m = MsgToggleTokenConversionProposal{} } -func (m *MsgToggleTokenConversionProposal) String() string { return proto.CompactTextString(m) } -func (*MsgToggleTokenConversionProposal) ProtoMessage() {} -func (*MsgToggleTokenConversionProposal) Descriptor() ([]byte, []int) { +func (m *MsgToggleTokenConversion) Reset() { *m = MsgToggleTokenConversion{} } +func (m *MsgToggleTokenConversion) String() string { return proto.CompactTextString(m) } +func (*MsgToggleTokenConversion) ProtoMessage() {} +func (*MsgToggleTokenConversion) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{10} } -func (m *MsgToggleTokenConversionProposal) XXX_Unmarshal(b []byte) error { +func (m *MsgToggleTokenConversion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgToggleTokenConversionProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgToggleTokenConversion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgToggleTokenConversionProposal.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgToggleTokenConversion.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -596,63 +596,61 @@ func (m *MsgToggleTokenConversionProposal) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *MsgToggleTokenConversionProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgToggleTokenConversionProposal.Merge(m, src) +func (m *MsgToggleTokenConversion) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleTokenConversion.Merge(m, src) } -func (m *MsgToggleTokenConversionProposal) XXX_Size() int { +func (m *MsgToggleTokenConversion) XXX_Size() int { return m.Size() } -func (m *MsgToggleTokenConversionProposal) XXX_DiscardUnknown() { - xxx_messageInfo_MsgToggleTokenConversionProposal.DiscardUnknown(m) +func (m *MsgToggleTokenConversion) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleTokenConversion.DiscardUnknown(m) } -var xxx_messageInfo_MsgToggleTokenConversionProposal proto.InternalMessageInfo +var xxx_messageInfo_MsgToggleTokenConversion proto.InternalMessageInfo -func (m *MsgToggleTokenConversionProposal) GetAuthority() string { +func (m *MsgToggleTokenConversion) GetAuthority() string { if m != nil { return m.Authority } return "" } -func (m *MsgToggleTokenConversionProposal) GetTitle() string { +func (m *MsgToggleTokenConversion) GetTitle() string { if m != nil { return m.Title } return "" } -func (m *MsgToggleTokenConversionProposal) GetDescription() string { +func (m *MsgToggleTokenConversion) GetDescription() string { if m != nil { return m.Description } return "" } -func (m *MsgToggleTokenConversionProposal) GetToken() string { +func (m *MsgToggleTokenConversion) GetToken() string { if m != nil { return m.Token } return "" } -type MsgToggleTokenConversionProposalResponse struct { +type MsgToggleTokenConversionResponse struct { } -func (m *MsgToggleTokenConversionProposalResponse) Reset() { - *m = MsgToggleTokenConversionProposalResponse{} -} -func (m *MsgToggleTokenConversionProposalResponse) String() string { return proto.CompactTextString(m) } -func (*MsgToggleTokenConversionProposalResponse) ProtoMessage() {} -func (*MsgToggleTokenConversionProposalResponse) Descriptor() ([]byte, []int) { +func (m *MsgToggleTokenConversionResponse) Reset() { *m = MsgToggleTokenConversionResponse{} } +func (m *MsgToggleTokenConversionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgToggleTokenConversionResponse) ProtoMessage() {} +func (*MsgToggleTokenConversionResponse) Descriptor() ([]byte, []int) { return fileDescriptor_3cff33f93a8dd3e5, []int{11} } -func (m *MsgToggleTokenConversionProposalResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgToggleTokenConversionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgToggleTokenConversionProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgToggleTokenConversionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgToggleTokenConversionProposalResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgToggleTokenConversionResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -662,17 +660,17 @@ func (m *MsgToggleTokenConversionProposalResponse) XXX_Marshal(b []byte, determi return b[:n], nil } } -func (m *MsgToggleTokenConversionProposalResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgToggleTokenConversionProposalResponse.Merge(m, src) +func (m *MsgToggleTokenConversionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleTokenConversionResponse.Merge(m, src) } -func (m *MsgToggleTokenConversionProposalResponse) XXX_Size() int { +func (m *MsgToggleTokenConversionResponse) XXX_Size() int { return m.Size() } -func (m *MsgToggleTokenConversionProposalResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgToggleTokenConversionProposalResponse.DiscardUnknown(m) +func (m *MsgToggleTokenConversionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleTokenConversionResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgToggleTokenConversionProposalResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgToggleTokenConversionResponse proto.InternalMessageInfo func init() { proto.RegisterType((*MsgConvertCoin)(nil), "canto.erc20.v1.MsgConvertCoin") @@ -681,89 +679,87 @@ func init() { proto.RegisterType((*MsgConvertERC20Response)(nil), "canto.erc20.v1.MsgConvertERC20Response") proto.RegisterType((*MsgUpdateParams)(nil), "canto.erc20.v1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.erc20.v1.MsgUpdateParamsResponse") - proto.RegisterType((*MsgRegisterCoinProposal)(nil), "canto.erc20.v1.MsgRegisterCoinProposal") - proto.RegisterType((*MsgRegisterCoinProposalResponse)(nil), "canto.erc20.v1.MsgRegisterCoinProposalResponse") - proto.RegisterType((*MsgRegisterERC20Proposal)(nil), "canto.erc20.v1.MsgRegisterERC20Proposal") - proto.RegisterType((*MsgRegisterERC20ProposalResponse)(nil), "canto.erc20.v1.MsgRegisterERC20ProposalResponse") - proto.RegisterType((*MsgToggleTokenConversionProposal)(nil), "canto.erc20.v1.MsgToggleTokenConversionProposal") - proto.RegisterType((*MsgToggleTokenConversionProposalResponse)(nil), "canto.erc20.v1.MsgToggleTokenConversionProposalResponse") + proto.RegisterType((*MsgRegisterCoin)(nil), "canto.erc20.v1.MsgRegisterCoin") + proto.RegisterType((*MsgRegisterCoinResponse)(nil), "canto.erc20.v1.MsgRegisterCoinResponse") + proto.RegisterType((*MsgRegisterERC20)(nil), "canto.erc20.v1.MsgRegisterERC20") + proto.RegisterType((*MsgRegisterERC20Response)(nil), "canto.erc20.v1.MsgRegisterERC20Response") + proto.RegisterType((*MsgToggleTokenConversion)(nil), "canto.erc20.v1.MsgToggleTokenConversion") + proto.RegisterType((*MsgToggleTokenConversionResponse)(nil), "canto.erc20.v1.MsgToggleTokenConversionResponse") } func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 962 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0x26, 0x69, 0x68, 0xc6, 0x55, 0x0b, 0x2b, 0x27, 0x71, 0x56, 0xcd, 0xda, 0x5d, 0xa1, - 0xd6, 0x75, 0xc9, 0x4e, 0xec, 0x50, 0x7e, 0x18, 0x21, 0x84, 0x2d, 0x0e, 0x39, 0x04, 0x55, 0x4b, - 0xb8, 0x70, 0xb1, 0x26, 0xeb, 0xd1, 0x66, 0xe5, 0xec, 0x8c, 0xb5, 0x33, 0x31, 0xed, 0x05, 0x55, - 0x39, 0x72, 0x42, 0xe2, 0x0f, 0xa0, 0x12, 0x07, 0x38, 0xa1, 0x20, 0xf5, 0x8f, 0xc8, 0xb1, 0x94, - 0x0b, 0xe2, 0x50, 0xa1, 0x04, 0x94, 0xfe, 0x19, 0x68, 0x7e, 0x64, 0xec, 0x8d, 0x37, 0x6e, 0x40, - 0x48, 0x5c, 0x2c, 0xcf, 0x7b, 0xdf, 0xbc, 0xf9, 0xbe, 0x6f, 0xde, 0x3c, 0x1b, 0x2c, 0x87, 0x88, - 0x70, 0x0a, 0x71, 0x1a, 0x36, 0xd7, 0xe1, 0xb0, 0x01, 0xf9, 0x43, 0x7f, 0x90, 0x52, 0x4e, 0xed, - 0xeb, 0x32, 0xe1, 0xcb, 0x84, 0x3f, 0x6c, 0x38, 0x37, 0x23, 0x4a, 0xa3, 0x3d, 0x0c, 0xd1, 0x20, - 0x86, 0x88, 0x10, 0xca, 0x11, 0x8f, 0x29, 0x61, 0x0a, 0xed, 0x94, 0x22, 0x1a, 0x51, 0xf9, 0x15, - 0x8a, 0x6f, 0x3a, 0xea, 0x86, 0x94, 0x25, 0x94, 0xc1, 0x1d, 0xc4, 0x30, 0x1c, 0x36, 0x76, 0x30, - 0x47, 0x0d, 0x18, 0xd2, 0x98, 0x4c, 0xe4, 0x49, 0xdf, 0xe4, 0xc5, 0x42, 0xe7, 0x57, 0x54, 0xbe, - 0xab, 0x0a, 0xab, 0x85, 0x4e, 0x2d, 0xeb, 0xad, 0x09, 0x8b, 0x04, 0xed, 0x84, 0x45, 0x3a, 0xf1, - 0x06, 0x4a, 0x62, 0x42, 0xa1, 0xfc, 0xd4, 0xa1, 0x9b, 0xe7, 0x34, 0x46, 0x98, 0x60, 0x16, 0xeb, - 0x4a, 0xde, 0x77, 0x16, 0xb8, 0xbe, 0xc5, 0xa2, 0x0e, 0x25, 0x43, 0x9c, 0xf2, 0x0e, 0x8d, 0x89, - 0xbd, 0x01, 0xe6, 0x04, 0xcb, 0xb2, 0x55, 0xb5, 0x6a, 0xc5, 0xe6, 0x8a, 0xaf, 0x4f, 0x16, 0x32, - 0x7c, 0x4d, 0xd3, 0x17, 0xc0, 0xf6, 0xdc, 0xd1, 0x8b, 0x4a, 0x21, 0x90, 0x60, 0xdb, 0x01, 0x57, - 0x53, 0x1c, 0xe2, 0x78, 0x88, 0xd3, 0xf2, 0x4c, 0xd5, 0xaa, 0x2d, 0x04, 0x66, 0x6d, 0x2f, 0x81, - 0x79, 0x86, 0x49, 0x0f, 0xa7, 0xe5, 0x59, 0x99, 0xd1, 0xab, 0xd6, 0x9b, 0x07, 0xa7, 0x87, 0x75, - 0xbd, 0xf8, 0xfa, 0xf4, 0xb0, 0x5e, 0x52, 0x4c, 0xb3, 0x74, 0xbc, 0x32, 0x58, 0xca, 0x46, 0x02, - 0xcc, 0x06, 0x94, 0x30, 0xec, 0xfd, 0x62, 0x81, 0x1b, 0xa3, 0xd4, 0x27, 0x41, 0xa7, 0xb9, 0x6e, - 0xdf, 0x05, 0xaf, 0x87, 0x94, 0xf0, 0x14, 0x85, 0xbc, 0x8b, 0x7a, 0xbd, 0x14, 0x33, 0x26, 0x85, - 0x2c, 0x04, 0x37, 0xce, 0xe2, 0x1f, 0xab, 0xb0, 0xdd, 0x01, 0xf3, 0x28, 0xa1, 0xfb, 0x84, 0x2b, - 0xc2, 0xed, 0x7b, 0x42, 0xce, 0xef, 0x2f, 0x2a, 0x8b, 0x4a, 0x30, 0xeb, 0xf5, 0xfd, 0x98, 0xc2, - 0x04, 0xf1, 0x5d, 0x7f, 0x93, 0xf0, 0xe7, 0x4f, 0xd7, 0x80, 0x76, 0x62, 0x93, 0xf0, 0x40, 0x6f, - 0xcd, 0xe8, 0x9e, 0xbd, 0x50, 0xf7, 0x5c, 0x46, 0xb7, 0x23, 0xc4, 0x2e, 0x9e, 0x17, 0x2b, 0xf9, - 0x7b, 0x2b, 0x60, 0xf9, 0x5c, 0xc8, 0xc8, 0xfd, 0x49, 0xc9, 0xfd, 0x7c, 0xd0, 0x43, 0x1c, 0x3f, - 0x40, 0x29, 0x4a, 0x98, 0xfd, 0x0e, 0x58, 0x40, 0xfb, 0x7c, 0x97, 0xa6, 0x31, 0x7f, 0xa4, 0x74, - 0xb6, 0xcb, 0xcf, 0x9f, 0xae, 0x95, 0x34, 0x53, 0x2d, 0xf5, 0x33, 0x9e, 0xc6, 0x24, 0x0a, 0x46, - 0x50, 0xfb, 0x7d, 0x30, 0x3f, 0x90, 0x15, 0xa4, 0xf6, 0x62, 0x73, 0xc9, 0xcf, 0x36, 0xbc, 0xaf, - 0xea, 0xb7, 0x17, 0x84, 0x27, 0x3f, 0x9e, 0x1e, 0xd6, 0xad, 0x40, 0x6f, 0x68, 0xd5, 0xc4, 0xad, - 0x8d, 0x4a, 0x65, 0xb5, 0x8c, 0x93, 0xd3, 0x5a, 0xc6, 0x43, 0x46, 0xcb, 0xe3, 0x19, 0x99, 0x0b, - 0x70, 0x14, 0x33, 0x8e, 0x53, 0x71, 0xad, 0x0f, 0x52, 0x3a, 0xa0, 0x0c, 0xed, 0xfd, 0x6b, 0x4d, - 0x25, 0x70, 0x85, 0xc7, 0x7c, 0x0f, 0xeb, 0xfe, 0x53, 0x0b, 0xbb, 0x0a, 0x8a, 0x3d, 0xcc, 0xc2, - 0x34, 0x1e, 0x88, 0x17, 0xab, 0xef, 0x68, 0x3c, 0x64, 0x7f, 0x04, 0xae, 0x26, 0x98, 0xa3, 0x1e, - 0xe2, 0x48, 0x5e, 0x54, 0xb1, 0xb9, 0x3a, 0xea, 0x79, 0xd2, 0x37, 0x3d, 0xbf, 0xa5, 0x41, 0xba, - 0xef, 0xcd, 0xa6, 0xd6, 0xdb, 0x2f, 0x9f, 0x54, 0x0a, 0x93, 0xae, 0xac, 0x1a, 0x57, 0xf2, 0x64, - 0x7a, 0xb7, 0x40, 0xe5, 0x82, 0x94, 0x71, 0xe9, 0x2f, 0x0b, 0x94, 0xc7, 0x30, 0xb2, 0x1d, 0xfe, - 0x37, 0x9b, 0x3c, 0x70, 0x4d, 0x76, 0xc7, 0xd9, 0xab, 0x52, 0x3d, 0x9d, 0x89, 0xb5, 0xee, 0xe7, - 0x3b, 0xe1, 0x4e, 0x38, 0x91, 0x91, 0xe2, 0x79, 0xa0, 0x7a, 0x51, 0xce, 0x78, 0x71, 0x6a, 0x49, - 0xd0, 0x36, 0x8d, 0xa2, 0x3d, 0xbc, 0x4d, 0xfb, 0x98, 0xa8, 0x47, 0xc2, 0x62, 0xfa, 0x9f, 0xb4, - 0xce, 0xf6, 0xb8, 0x27, 0xdb, 0x97, 0xf4, 0x44, 0x78, 0x29, 0xa8, 0x68, 0x33, 0xd4, 0xa2, 0xf5, - 0xe1, 0xcb, 0x27, 0x15, 0x6b, 0xd2, 0x85, 0xdb, 0xc6, 0x85, 0xa9, 0x22, 0xbc, 0x3a, 0xa8, 0xbd, - 0x0a, 0x73, 0xe6, 0x4a, 0xf3, 0xe7, 0xd7, 0xc0, 0xec, 0x16, 0x8b, 0xec, 0xaf, 0x40, 0x71, 0x7c, - 0x84, 0xbb, 0xe7, 0x9f, 0x73, 0x76, 0x82, 0x3a, 0xb7, 0xa7, 0xe7, 0x8d, 0xe9, 0x77, 0x0e, 0x7e, - 0xfd, 0xf3, 0xdb, 0x99, 0x5b, 0x76, 0x05, 0x4e, 0xfc, 0x50, 0xc2, 0x50, 0xe1, 0xbb, 0x72, 0xfc, - 0x1f, 0x58, 0xe0, 0x5a, 0x66, 0x0e, 0x57, 0x2e, 0x3e, 0x41, 0x02, 0x9c, 0x3b, 0xaf, 0x00, 0x18, - 0x0e, 0x35, 0xc9, 0xc1, 0xb3, 0xab, 0x53, 0x38, 0xc8, 0x98, 0x24, 0x91, 0x99, 0x8e, 0x79, 0x24, - 0xc6, 0x01, 0xb9, 0x24, 0x72, 0xe7, 0xd5, 0x34, 0x12, 0xfb, 0x72, 0x43, 0x57, 0x8d, 0x47, 0xfb, - 0x7b, 0x0b, 0x94, 0x72, 0xc7, 0x5a, 0xde, 0x59, 0x79, 0x40, 0x07, 0x5e, 0x12, 0x68, 0xc8, 0x35, - 0x24, 0xb9, 0x7b, 0xf6, 0xdd, 0x1c, 0x72, 0xa9, 0xde, 0x28, 0xaf, 0x49, 0xfc, 0x95, 0x50, 0x64, - 0x7e, 0xb0, 0xc0, 0x62, 0xfe, 0x58, 0xa9, 0x4d, 0x39, 0x3d, 0x83, 0x74, 0xd6, 0x2f, 0x8b, 0x34, - 0x44, 0x9b, 0x92, 0xe8, 0x5b, 0x76, 0x7d, 0x1a, 0x51, 0x19, 0x1c, 0x31, 0x3d, 0xb2, 0xc0, 0xea, - 0xf4, 0x47, 0x9f, 0xc7, 0x63, 0xea, 0x0e, 0xe7, 0xbd, 0x7f, 0xba, 0xc3, 0x28, 0xf8, 0x40, 0x2a, - 0xb8, 0x6f, 0x6f, 0xe4, 0x28, 0xe0, 0xb2, 0x42, 0x57, 0xce, 0x80, 0x6e, 0x68, 0x6a, 0x18, 0x29, - 0xce, 0x95, 0xc7, 0xe2, 0x87, 0xb4, 0xbd, 0x79, 0x74, 0xec, 0x5a, 0xcf, 0x8e, 0x5d, 0xeb, 0x8f, - 0x63, 0xd7, 0xfa, 0xe6, 0xc4, 0x2d, 0x3c, 0x3b, 0x71, 0x0b, 0xbf, 0x9d, 0xb8, 0x85, 0x2f, 0x60, - 0x14, 0xf3, 0xdd, 0xfd, 0x1d, 0x3f, 0xa4, 0x09, 0xec, 0x88, 0xfa, 0x6b, 0x9f, 0x62, 0xfe, 0x25, - 0x4d, 0xfb, 0x6a, 0x05, 0x87, 0xef, 0xc2, 0x87, 0xfa, 0x48, 0xfe, 0x68, 0x80, 0xd9, 0xce, 0xbc, - 0xfc, 0x13, 0xb7, 0xf1, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0xf8, 0xee, 0x61, 0xc8, 0x0a, - 0x00, 0x00, -} - -func (this *MsgToggleTokenConversionProposal) Equal(that interface{}) bool { + // 938 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xc7, 0xbd, 0x4d, 0x6a, 0x35, 0xe3, 0xaa, 0x2d, 0x23, 0x27, 0x71, 0xac, 0x76, 0xed, 0x1a, + 0x44, 0xdd, 0xd0, 0xec, 0x24, 0xae, 0x00, 0xe1, 0x0b, 0xc2, 0x16, 0x87, 0x1c, 0x82, 0xaa, 0x25, + 0x5c, 0xb8, 0x58, 0x93, 0xf5, 0x68, 0xb3, 0x72, 0x76, 0x66, 0x35, 0x33, 0x31, 0xed, 0x05, 0xa1, + 0x1c, 0x7b, 0x40, 0x48, 0x7c, 0x00, 0x7a, 0xe4, 0x04, 0x39, 0xf4, 0x43, 0xf4, 0x58, 0x8a, 0x10, + 0x88, 0x43, 0x85, 0x12, 0x44, 0x7a, 0xe4, 0x23, 0xa0, 0x79, 0xc9, 0x7a, 0xd7, 0xd9, 0xb8, 0x11, + 0x48, 0x5c, 0x22, 0x3f, 0x6f, 0x33, 0xff, 0xdf, 0x33, 0xcf, 0xcc, 0x06, 0x2c, 0x07, 0x98, 0x4a, + 0x86, 0x08, 0x0f, 0x3a, 0xeb, 0x68, 0xbc, 0x81, 0xe4, 0x43, 0x2f, 0xe1, 0x4c, 0x32, 0x78, 0x4d, + 0x07, 0x3c, 0x1d, 0xf0, 0xc6, 0x1b, 0xf5, 0x9b, 0x21, 0x63, 0xe1, 0x1e, 0x41, 0x38, 0x89, 0x10, + 0xa6, 0x94, 0x49, 0x2c, 0x23, 0x46, 0x85, 0xc9, 0xae, 0x57, 0x43, 0x16, 0x32, 0xfd, 0x13, 0xa9, + 0x5f, 0xd6, 0xeb, 0x06, 0x4c, 0xc4, 0x4c, 0xa0, 0x1d, 0x2c, 0x08, 0x1a, 0x6f, 0xec, 0x10, 0x89, + 0x37, 0x50, 0xc0, 0x22, 0x7a, 0x26, 0x4e, 0x47, 0x69, 0x5c, 0x19, 0x36, 0xbe, 0x62, 0xe2, 0x03, + 0xb3, 0xb0, 0x31, 0x6c, 0x68, 0xd9, 0x96, 0xc6, 0x22, 0x54, 0xb2, 0x63, 0x11, 0xda, 0xc0, 0x1b, + 0x38, 0x8e, 0x28, 0x43, 0xfa, 0xaf, 0x75, 0xdd, 0x9c, 0x62, 0x0c, 0x09, 0x25, 0x22, 0xb2, 0x2b, + 0xb5, 0xbe, 0x73, 0xc0, 0xb5, 0x2d, 0x11, 0xf6, 0x19, 0x1d, 0x13, 0x2e, 0xfb, 0x2c, 0xa2, 0xf0, + 0x3e, 0x98, 0x57, 0x2a, 0x6b, 0x4e, 0xd3, 0x69, 0x57, 0x3a, 0x2b, 0x9e, 0xdd, 0x59, 0x61, 0x78, + 0x56, 0xa6, 0xa7, 0x12, 0x7b, 0xf3, 0xcf, 0x5e, 0x36, 0x4a, 0xbe, 0x4e, 0x86, 0x75, 0x70, 0x85, + 0x93, 0x80, 0x44, 0x63, 0xc2, 0x6b, 0x97, 0x9a, 0x4e, 0x7b, 0xc1, 0x4f, 0x6d, 0xb8, 0x04, 0xca, + 0x82, 0xd0, 0x21, 0xe1, 0xb5, 0x39, 0x1d, 0xb1, 0x56, 0xf7, 0xad, 0x83, 0x93, 0xc3, 0x55, 0x6b, + 0x3c, 0x3e, 0x39, 0x5c, 0xad, 0x1a, 0xa5, 0x79, 0x39, 0xad, 0x1a, 0x58, 0xca, 0x7b, 0x7c, 0x22, + 0x12, 0x46, 0x05, 0x69, 0xfd, 0xe4, 0x80, 0xeb, 0x93, 0xd0, 0xc7, 0x7e, 0xbf, 0xb3, 0x0e, 0xef, + 0x82, 0x1b, 0x01, 0xa3, 0x92, 0xe3, 0x40, 0x0e, 0xf0, 0x70, 0xc8, 0x89, 0x10, 0x1a, 0x64, 0xc1, + 0xbf, 0x7e, 0xea, 0xff, 0xc8, 0xb8, 0x61, 0x1f, 0x94, 0x71, 0xcc, 0xf6, 0xa9, 0x34, 0x82, 0x7b, + 0xef, 0x28, 0x9c, 0xdf, 0x5f, 0x36, 0x16, 0x0d, 0xb0, 0x18, 0x8e, 0xbc, 0x88, 0xa1, 0x18, 0xcb, + 0x5d, 0x6f, 0x93, 0xca, 0x17, 0x4f, 0xd7, 0x80, 0xed, 0xc4, 0x26, 0x95, 0xbe, 0x2d, 0xcd, 0x71, + 0xcf, 0x9d, 0xcb, 0x3d, 0x9f, 0xe3, 0xae, 0x2b, 0xd8, 0xc5, 0x69, 0x58, 0xad, 0xbf, 0xb5, 0x02, + 0x96, 0xa7, 0x5c, 0x29, 0xee, 0x0f, 0x06, 0xf7, 0xb3, 0x64, 0x88, 0x25, 0x79, 0x80, 0x39, 0x8e, + 0x05, 0x7c, 0x0f, 0x2c, 0xe0, 0x7d, 0xb9, 0xcb, 0x78, 0x24, 0x1f, 0x19, 0xce, 0x5e, 0xed, 0xc5, + 0xd3, 0xb5, 0xaa, 0x55, 0x6a, 0x51, 0x3f, 0x95, 0x3c, 0xa2, 0xa1, 0x3f, 0x49, 0x85, 0x1f, 0x80, + 0x72, 0xa2, 0x57, 0xd0, 0xec, 0x95, 0xce, 0x92, 0x97, 0x1f, 0x78, 0xcf, 0xac, 0xdf, 0x5b, 0x50, + 0x3d, 0xf9, 0xfe, 0xe4, 0x70, 0xd5, 0xf1, 0x6d, 0x41, 0xb7, 0xad, 0x4e, 0x6d, 0xb2, 0x54, 0x9e, + 0x25, 0x2b, 0xce, 0xb2, 0x64, 0x5d, 0x29, 0xcb, 0xdf, 0x86, 0xc5, 0x27, 0x61, 0x24, 0x24, 0xe1, + 0x7a, 0xee, 0xfe, 0x2d, 0x4b, 0x15, 0x5c, 0x96, 0x91, 0xdc, 0x23, 0x76, 0xee, 0x8c, 0x01, 0x9b, + 0xa0, 0x32, 0x24, 0x22, 0xe0, 0x51, 0xa2, 0x6e, 0xaa, 0x3d, 0x9b, 0xac, 0x0b, 0x7e, 0x08, 0xae, + 0xc4, 0x44, 0xe2, 0x21, 0x96, 0x58, 0x1f, 0x50, 0xa5, 0x73, 0x6b, 0x32, 0xeb, 0x74, 0x94, 0xce, + 0xfa, 0x96, 0x4d, 0xb2, 0xf3, 0x9e, 0x16, 0x75, 0xef, 0xbd, 0x7a, 0xd2, 0x28, 0xcd, 0xea, 0x46, + 0x16, 0xcf, 0x76, 0x23, 0xeb, 0x4a, 0xbb, 0xf1, 0x8b, 0x03, 0x6e, 0x64, 0x62, 0x66, 0x92, 0xff, + 0xef, 0x76, 0xb4, 0xc0, 0x55, 0x7d, 0xfa, 0xa7, 0xb7, 0xc6, 0xcc, 0x6c, 0xce, 0xd7, 0x5d, 0x2b, + 0x26, 0x5e, 0x3a, 0x43, 0x6c, 0x86, 0xb9, 0x0e, 0x6a, 0xd3, 0xbe, 0x94, 0xf9, 0x57, 0x47, 0x07, + 0xb7, 0x59, 0x18, 0xee, 0x91, 0x6d, 0x36, 0x22, 0xd4, 0x0c, 0xbd, 0x50, 0x5a, 0xfe, 0x03, 0xfb, + 0x76, 0x96, 0x7d, 0xfb, 0x82, 0xec, 0xaa, 0x67, 0x4a, 0x82, 0x85, 0x36, 0x46, 0xf7, 0xdd, 0x57, + 0x4f, 0x1a, 0xce, 0x59, 0x5a, 0x37, 0xa5, 0x2d, 0x14, 0xdf, 0x6a, 0x81, 0xe6, 0x79, 0xb1, 0x53, + 0xfa, 0xce, 0x5f, 0x65, 0x30, 0xb7, 0x25, 0x42, 0xf8, 0x25, 0xa8, 0x64, 0x9f, 0x5e, 0x77, 0xfa, + 0x1a, 0xe6, 0x5f, 0xbe, 0xfa, 0xdb, 0xb3, 0xe3, 0x69, 0x73, 0xef, 0x1c, 0xfc, 0xfc, 0xe7, 0xb7, + 0x97, 0x6e, 0xc3, 0x06, 0x3a, 0xf3, 0x81, 0x43, 0x81, 0xc9, 0x1f, 0xe8, 0x67, 0xfb, 0xc0, 0x01, + 0x57, 0x73, 0xef, 0x67, 0xe3, 0xfc, 0x1d, 0x74, 0x42, 0xfd, 0xce, 0x6b, 0x12, 0x52, 0x0d, 0x6d, + 0xad, 0xa1, 0x05, 0x9b, 0x33, 0x34, 0x68, 0x9f, 0x16, 0x91, 0x7b, 0xd5, 0x8a, 0x44, 0x64, 0x13, + 0x0a, 0x45, 0x14, 0xbe, 0x33, 0xb3, 0x44, 0xec, 0xeb, 0x82, 0x81, 0x79, 0xd6, 0xe0, 0x63, 0x07, + 0x54, 0xb3, 0x97, 0xf3, 0x01, 0x67, 0x09, 0x13, 0x78, 0xaf, 0x50, 0x4c, 0x36, 0xb1, 0x50, 0x4c, + 0xe1, 0x35, 0x9f, 0x25, 0x86, 0xdb, 0x02, 0x73, 0x2c, 0x5f, 0x3b, 0x60, 0x31, 0x77, 0x6d, 0x52, + 0x35, 0xcd, 0x19, 0x9b, 0x99, 0x03, 0x6a, 0xbf, 0x2e, 0x23, 0xd5, 0x73, 0x57, 0xeb, 0x79, 0x13, + 0xde, 0x9e, 0xa5, 0xc7, 0x1c, 0xd1, 0x8f, 0x0e, 0xb8, 0x55, 0x38, 0xd1, 0xa9, 0xb0, 0xa2, 0x6d, + 0x0b, 0x2b, 0xea, 0xeb, 0x17, 0xcd, 0x4c, 0x85, 0x76, 0xb4, 0xd0, 0x7b, 0x70, 0xb5, 0x40, 0xa8, + 0xd4, 0x95, 0x03, 0x7d, 0x63, 0x07, 0xc1, 0x64, 0x97, 0xcb, 0x5f, 0xa9, 0xaf, 0x56, 0x6f, 0xf3, + 0xd9, 0x91, 0xeb, 0x3c, 0x3f, 0x72, 0x9d, 0x3f, 0x8e, 0x5c, 0xe7, 0x9b, 0x63, 0xb7, 0xf4, 0xfc, + 0xd8, 0x2d, 0xfd, 0x76, 0xec, 0x96, 0x3e, 0x47, 0x61, 0x24, 0x77, 0xf7, 0x77, 0xbc, 0x80, 0xc5, + 0xa8, 0xaf, 0x96, 0x5d, 0xfb, 0x84, 0xc8, 0x2f, 0x18, 0x1f, 0x19, 0x0b, 0x8d, 0xdf, 0x47, 0x0f, + 0xed, 0x4e, 0xf2, 0x51, 0x42, 0xc4, 0x4e, 0x59, 0xff, 0xc7, 0x74, 0xff, 0x9f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x3f, 0x22, 0xfa, 0xaa, 0x35, 0x0a, 0x00, 0x00, +} + +func (this *MsgToggleTokenConversion) Equal(that interface{}) bool { if that == nil { return this == nil } - that1, ok := that.(*MsgToggleTokenConversionProposal) + that1, ok := that.(*MsgToggleTokenConversion) if !ok { - that2, ok := that.(MsgToggleTokenConversionProposal) + that2, ok := that.(MsgToggleTokenConversion) if ok { that1 = &that2 } else { @@ -812,13 +808,13 @@ type MsgClient interface { UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) + RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoin, opts ...grpc.CallOption) (*MsgRegisterCoinResponse, error) // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. - RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) + RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20, opts ...grpc.CallOption) (*MsgRegisterERC20Response, error) // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. - ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) + ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversion, opts ...grpc.CallOption) (*MsgToggleTokenConversionResponse, error) } type msgClient struct { @@ -856,8 +852,8 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } -func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoinProposal, opts ...grpc.CallOption) (*MsgRegisterCoinProposalResponse, error) { - out := new(MsgRegisterCoinProposalResponse) +func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoin, opts ...grpc.CallOption) (*MsgRegisterCoinResponse, error) { + out := new(MsgRegisterCoinResponse) err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/RegisterCoinProposal", in, out, opts...) if err != nil { return nil, err @@ -865,8 +861,8 @@ func (c *msgClient) RegisterCoinProposal(ctx context.Context, in *MsgRegisterCoi return out, nil } -func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20Proposal, opts ...grpc.CallOption) (*MsgRegisterERC20ProposalResponse, error) { - out := new(MsgRegisterERC20ProposalResponse) +func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterERC20, opts ...grpc.CallOption) (*MsgRegisterERC20Response, error) { + out := new(MsgRegisterERC20Response) err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/RegisterERC20Proposal", in, out, opts...) if err != nil { return nil, err @@ -874,8 +870,8 @@ func (c *msgClient) RegisterERC20Proposal(ctx context.Context, in *MsgRegisterER return out, nil } -func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversionProposal, opts ...grpc.CallOption) (*MsgToggleTokenConversionProposalResponse, error) { - out := new(MsgToggleTokenConversionProposalResponse) +func (c *msgClient) ToggleTokenConversionProposal(ctx context.Context, in *MsgToggleTokenConversion, opts ...grpc.CallOption) (*MsgToggleTokenConversionResponse, error) { + out := new(MsgToggleTokenConversionResponse) err := c.cc.Invoke(ctx, "/canto.erc20.v1.Msg/ToggleTokenConversionProposal", in, out, opts...) if err != nil { return nil, err @@ -895,13 +891,13 @@ type MsgServer interface { UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - RegisterCoinProposal(context.Context, *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) + RegisterCoinProposal(context.Context, *MsgRegisterCoin) (*MsgRegisterCoinResponse, error) // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. - RegisterERC20Proposal(context.Context, *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) + RegisterERC20Proposal(context.Context, *MsgRegisterERC20) (*MsgRegisterERC20Response, error) // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. - ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) + ToggleTokenConversionProposal(context.Context, *MsgToggleTokenConversion) (*MsgToggleTokenConversionResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -917,13 +913,13 @@ func (*UnimplementedMsgServer) ConvertERC20(ctx context.Context, req *MsgConvert func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } -func (*UnimplementedMsgServer) RegisterCoinProposal(ctx context.Context, req *MsgRegisterCoinProposal) (*MsgRegisterCoinProposalResponse, error) { +func (*UnimplementedMsgServer) RegisterCoinProposal(ctx context.Context, req *MsgRegisterCoin) (*MsgRegisterCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterCoinProposal not implemented") } -func (*UnimplementedMsgServer) RegisterERC20Proposal(ctx context.Context, req *MsgRegisterERC20Proposal) (*MsgRegisterERC20ProposalResponse, error) { +func (*UnimplementedMsgServer) RegisterERC20Proposal(ctx context.Context, req *MsgRegisterERC20) (*MsgRegisterERC20Response, error) { return nil, status.Errorf(codes.Unimplemented, "method RegisterERC20Proposal not implemented") } -func (*UnimplementedMsgServer) ToggleTokenConversionProposal(ctx context.Context, req *MsgToggleTokenConversionProposal) (*MsgToggleTokenConversionProposalResponse, error) { +func (*UnimplementedMsgServer) ToggleTokenConversionProposal(ctx context.Context, req *MsgToggleTokenConversion) (*MsgToggleTokenConversionResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ToggleTokenConversionProposal not implemented") } @@ -986,7 +982,7 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in } func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRegisterCoinProposal) + in := new(MsgRegisterCoin) if err := dec(in); err != nil { return nil, err } @@ -998,13 +994,13 @@ func _Msg_RegisterCoinProposal_Handler(srv interface{}, ctx context.Context, dec FullMethod: "/canto.erc20.v1.Msg/RegisterCoinProposal", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoinProposal)) + return srv.(MsgServer).RegisterCoinProposal(ctx, req.(*MsgRegisterCoin)) } return interceptor(ctx, in, info, handler) } func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRegisterERC20Proposal) + in := new(MsgRegisterERC20) if err := dec(in); err != nil { return nil, err } @@ -1016,13 +1012,13 @@ func _Msg_RegisterERC20Proposal_Handler(srv interface{}, ctx context.Context, de FullMethod: "/canto.erc20.v1.Msg/RegisterERC20Proposal", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20Proposal)) + return srv.(MsgServer).RegisterERC20Proposal(ctx, req.(*MsgRegisterERC20)) } return interceptor(ctx, in, info, handler) } func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgToggleTokenConversionProposal) + in := new(MsgToggleTokenConversion) if err := dec(in); err != nil { return nil, err } @@ -1034,7 +1030,7 @@ func _Msg_ToggleTokenConversionProposal_Handler(srv interface{}, ctx context.Con FullMethod: "/canto.erc20.v1.Msg/ToggleTokenConversionProposal", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversionProposal)) + return srv.(MsgServer).ToggleTokenConversionProposal(ctx, req.(*MsgToggleTokenConversion)) } return interceptor(ctx, in, info, handler) } @@ -1282,7 +1278,7 @@ func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgRegisterCoinProposal) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterCoin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1292,12 +1288,12 @@ func (m *MsgRegisterCoinProposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRegisterCoinProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterCoin) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterCoinProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterCoin) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1336,7 +1332,7 @@ func (m *MsgRegisterCoinProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *MsgRegisterCoinProposalResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterCoinResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1346,12 +1342,12 @@ func (m *MsgRegisterCoinProposalResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRegisterCoinProposalResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterCoinResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterCoinProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterCoinResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1359,7 +1355,7 @@ func (m *MsgRegisterCoinProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } -func (m *MsgRegisterERC20Proposal) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterERC20) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1369,12 +1365,12 @@ func (m *MsgRegisterERC20Proposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRegisterERC20Proposal) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterERC20) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterERC20Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterERC20) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1410,7 +1406,7 @@ func (m *MsgRegisterERC20Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } -func (m *MsgRegisterERC20ProposalResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgRegisterERC20Response) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1420,12 +1416,12 @@ func (m *MsgRegisterERC20ProposalResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgRegisterERC20ProposalResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgRegisterERC20Response) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgRegisterERC20ProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgRegisterERC20Response) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1433,7 +1429,7 @@ func (m *MsgRegisterERC20ProposalResponse) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } -func (m *MsgToggleTokenConversionProposal) Marshal() (dAtA []byte, err error) { +func (m *MsgToggleTokenConversion) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1443,12 +1439,12 @@ func (m *MsgToggleTokenConversionProposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgToggleTokenConversionProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgToggleTokenConversion) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgToggleTokenConversionProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgToggleTokenConversion) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1484,7 +1480,7 @@ func (m *MsgToggleTokenConversionProposal) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } -func (m *MsgToggleTokenConversionProposalResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgToggleTokenConversionResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1494,12 +1490,12 @@ func (m *MsgToggleTokenConversionProposalResponse) Marshal() (dAtA []byte, err e return dAtA[:n], nil } -func (m *MsgToggleTokenConversionProposalResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgToggleTokenConversionResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgToggleTokenConversionProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgToggleTokenConversionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1602,7 +1598,7 @@ func (m *MsgUpdateParamsResponse) Size() (n int) { return n } -func (m *MsgRegisterCoinProposal) Size() (n int) { +func (m *MsgRegisterCoin) Size() (n int) { if m == nil { return 0 } @@ -1625,7 +1621,7 @@ func (m *MsgRegisterCoinProposal) Size() (n int) { return n } -func (m *MsgRegisterCoinProposalResponse) Size() (n int) { +func (m *MsgRegisterCoinResponse) Size() (n int) { if m == nil { return 0 } @@ -1634,7 +1630,7 @@ func (m *MsgRegisterCoinProposalResponse) Size() (n int) { return n } -func (m *MsgRegisterERC20Proposal) Size() (n int) { +func (m *MsgRegisterERC20) Size() (n int) { if m == nil { return 0 } @@ -1659,7 +1655,7 @@ func (m *MsgRegisterERC20Proposal) Size() (n int) { return n } -func (m *MsgRegisterERC20ProposalResponse) Size() (n int) { +func (m *MsgRegisterERC20Response) Size() (n int) { if m == nil { return 0 } @@ -1668,7 +1664,7 @@ func (m *MsgRegisterERC20ProposalResponse) Size() (n int) { return n } -func (m *MsgToggleTokenConversionProposal) Size() (n int) { +func (m *MsgToggleTokenConversion) Size() (n int) { if m == nil { return 0 } @@ -1693,7 +1689,7 @@ func (m *MsgToggleTokenConversionProposal) Size() (n int) { return n } -func (m *MsgToggleTokenConversionProposalResponse) Size() (n int) { +func (m *MsgToggleTokenConversionResponse) Size() (n int) { if m == nil { return 0 } @@ -2300,7 +2296,7 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterCoinProposal) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCoin) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2323,10 +2319,10 @@ func (m *MsgRegisterCoinProposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterCoinProposal: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCoin: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterCoinProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCoin: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2479,7 +2475,7 @@ func (m *MsgRegisterCoinProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterCoinProposalResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterCoinResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2502,10 +2498,10 @@ func (m *MsgRegisterCoinProposalResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterCoinProposalResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterCoinResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterCoinProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterCoinResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2529,7 +2525,7 @@ func (m *MsgRegisterCoinProposalResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterERC20Proposal) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterERC20) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2552,10 +2548,10 @@ func (m *MsgRegisterERC20Proposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterERC20Proposal: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterERC20: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterERC20Proposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterERC20: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2707,7 +2703,7 @@ func (m *MsgRegisterERC20Proposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgRegisterERC20ProposalResponse) Unmarshal(dAtA []byte) error { +func (m *MsgRegisterERC20Response) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2730,10 +2726,10 @@ func (m *MsgRegisterERC20ProposalResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgRegisterERC20Response: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRegisterERC20ProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgRegisterERC20Response: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -2757,7 +2753,7 @@ func (m *MsgRegisterERC20ProposalResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { +func (m *MsgToggleTokenConversion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2780,10 +2776,10 @@ func (m *MsgToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgToggleTokenConversionProposal: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleTokenConversion: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgToggleTokenConversionProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleTokenConversion: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2935,7 +2931,7 @@ func (m *MsgToggleTokenConversionProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgToggleTokenConversionProposalResponse) Unmarshal(dAtA []byte) error { +func (m *MsgToggleTokenConversionResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2958,10 +2954,10 @@ func (m *MsgToggleTokenConversionProposalResponse) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgToggleTokenConversionResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgToggleTokenConversionProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgToggleTokenConversionResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/erc20/types/tx.pb.gw.go b/x/erc20/types/tx.pb.gw.go index 76ff48bce..ec9a839de 100644 --- a/x/erc20/types/tx.pb.gw.go +++ b/x/erc20/types/tx.pb.gw.go @@ -146,7 +146,7 @@ var ( ) func request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCoinProposal + var protoReq MsgRegisterCoin var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -162,7 +162,7 @@ func request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.M } func local_request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCoinProposal + var protoReq MsgRegisterCoin var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -182,7 +182,7 @@ var ( ) func request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterERC20Proposal + var protoReq MsgRegisterERC20 var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -198,7 +198,7 @@ func request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime. } func local_request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterERC20Proposal + var protoReq MsgRegisterERC20 var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -218,7 +218,7 @@ var ( ) func request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgToggleTokenConversionProposal + var protoReq MsgToggleTokenConversion var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -234,7 +234,7 @@ func request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler } func local_request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgToggleTokenConversionProposal + var protoReq MsgToggleTokenConversion var metadata runtime.ServerMetadata if err := req.ParseForm(); err != nil { @@ -564,11 +564,11 @@ var ( pattern_Msg_UpdateParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "update_params"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Msg_RegisterCoinProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_coin_proposal"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_RegisterCoinProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_coin"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Msg_RegisterERC20Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_erc20_proposal"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_RegisterERC20Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_erc20"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Msg_ToggleTokenConversionProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "toggle_token_conversion_proposal"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Msg_ToggleTokenConversionProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "toggle_token_conversion"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( diff --git a/x/govshuttle/types/codec.go b/x/govshuttle/types/codec.go index cecbde716..139543121 100644 --- a/x/govshuttle/types/codec.go +++ b/x/govshuttle/types/codec.go @@ -3,17 +3,51 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + // this line is used by starport scaffolding # 1 "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) +var ( + amino = codec.NewLegacyAmino() + + // ModuleCdc references the global erc20 module codec. Note, the codec should + // ONLY be used in certain instances of tests and for JSON encoding. + // + // The actual codec used for serialization should be provided to modules/erc20 and + // defined at the application level. + ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) + + // AminoCdc is a amino codec created to support amino JSON compatible msgs. + AminoCdc = codec.NewAminoCodec(amino) +) + +const ( + msgUpdateParams = "canto/MsgUpdateParams" +) + +// NOTE: This is required for the GetSignBytes function +func init() { + RegisterLegacyAminoCodec(amino) + cryptocodec.RegisterCrypto(amino) + amino.Seal() +} + func RegisterCodec(cdc *codec.LegacyAmino) { // this line is used by starport scaffolding # 2 } func RegisterInterfaces(registry codectypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgUpdateParams{}, + &LendingMarketProposal{}, + &TreasuryProposal{}, + ) registry.RegisterImplementations( (*govtypes.Content)(nil), @@ -24,7 +58,9 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } -var ( - //Amino = codec.NewLegacyAmino() - ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) -) +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgUpdateParams{}, msgUpdateParams, nil) + cdc.RegisterConcrete(&LendingMarketProposal{}, "canto/LendingMarketProposal", nil) + cdc.RegisterConcrete(&TreasuryProposal{}, "canto/TreasuryProposal", nil) + cdc.RegisterConcrete(&Params{}, "canto/Params", nil) +} diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index a3f0628c4..95adc2b88 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -6,11 +6,19 @@ package types import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" math "math" + math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -24,21 +32,367 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type MsgLendingMarketProposal struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *MsgLendingMarketProposal) Reset() { *m = MsgLendingMarketProposal{} } +func (m *MsgLendingMarketProposal) String() string { return proto.CompactTextString(m) } +func (*MsgLendingMarketProposal) ProtoMessage() {} +func (*MsgLendingMarketProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{0} +} +func (m *MsgLendingMarketProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLendingMarketProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLendingMarketProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLendingMarketProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLendingMarketProposal.Merge(m, src) +} +func (m *MsgLendingMarketProposal) XXX_Size() int { + return m.Size() +} +func (m *MsgLendingMarketProposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLendingMarketProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLendingMarketProposal proto.InternalMessageInfo + +func (m *MsgLendingMarketProposal) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgLendingMarketProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *MsgLendingMarketProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgLendingMarketProposal) GetMetadata() *TreasuryProposalMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type MsgLendingMarketProposalResponse struct { +} + +func (m *MsgLendingMarketProposalResponse) Reset() { *m = MsgLendingMarketProposalResponse{} } +func (m *MsgLendingMarketProposalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgLendingMarketProposalResponse) ProtoMessage() {} +func (*MsgLendingMarketProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{1} +} +func (m *MsgLendingMarketProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLendingMarketProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLendingMarketProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLendingMarketProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLendingMarketProposalResponse.Merge(m, src) +} +func (m *MsgLendingMarketProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgLendingMarketProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLendingMarketProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLendingMarketProposalResponse proto.InternalMessageInfo + +type MsgTreasuryProposal struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *MsgTreasuryProposal) Reset() { *m = MsgTreasuryProposal{} } +func (m *MsgTreasuryProposal) String() string { return proto.CompactTextString(m) } +func (*MsgTreasuryProposal) ProtoMessage() {} +func (*MsgTreasuryProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{2} +} +func (m *MsgTreasuryProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTreasuryProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTreasuryProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgTreasuryProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTreasuryProposal.Merge(m, src) +} +func (m *MsgTreasuryProposal) XXX_Size() int { + return m.Size() +} +func (m *MsgTreasuryProposal) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTreasuryProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTreasuryProposal proto.InternalMessageInfo + +func (m *MsgTreasuryProposal) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgTreasuryProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *MsgTreasuryProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *MsgTreasuryProposal) GetMetadata() *TreasuryProposalMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type MsgTreasuryProposalResponse struct { +} + +func (m *MsgTreasuryProposalResponse) Reset() { *m = MsgTreasuryProposalResponse{} } +func (m *MsgTreasuryProposalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTreasuryProposalResponse) ProtoMessage() {} +func (*MsgTreasuryProposalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{3} +} +func (m *MsgTreasuryProposalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTreasuryProposalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTreasuryProposalResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgTreasuryProposalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTreasuryProposalResponse.Merge(m, src) +} +func (m *MsgTreasuryProposalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTreasuryProposalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTreasuryProposalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTreasuryProposalResponse proto.InternalMessageInfo + +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/erc20 parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{4} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d69de145343701ce, []int{5} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgLendingMarketProposal)(nil), "canto.govshuttle.v1.MsgLendingMarketProposal") + proto.RegisterType((*MsgLendingMarketProposalResponse)(nil), "canto.govshuttle.v1.MsgLendingMarketProposalResponse") + proto.RegisterType((*MsgTreasuryProposal)(nil), "canto.govshuttle.v1.MsgTreasuryProposal") + proto.RegisterType((*MsgTreasuryProposalResponse)(nil), "canto.govshuttle.v1.MsgTreasuryProposalResponse") + proto.RegisterType((*MsgUpdateParams)(nil), "canto.govshuttle.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.govshuttle.v1.MsgUpdateParamsResponse") +} + func init() { proto.RegisterFile("canto/govshuttle/v1/tx.proto", fileDescriptor_d69de145343701ce) } var fileDescriptor_d69de145343701ce = []byte{ - // 168 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcc, 0x2b, - 0xc9, 0xd7, 0x4f, 0xcf, 0x2f, 0x2b, 0xce, 0x28, 0x2d, 0x29, 0xc9, 0x49, 0xd5, 0x2f, 0x33, 0xd4, - 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x06, 0xcb, 0xea, 0x21, 0x64, 0xf5, - 0xca, 0x0c, 0xa5, 0xc4, 0x93, 0xf3, 0x8b, 0x73, 0xf3, 0x8b, 0xf5, 0x73, 0x8b, 0xd3, 0x41, 0x8a, - 0x73, 0x8b, 0xd3, 0x21, 0xaa, 0x8d, 0x78, 0xb8, 0x98, 0x7d, 0x8b, 0xd3, 0xa5, 0x58, 0x1b, 0x9e, - 0x6f, 0xd0, 0x62, 0x74, 0xf2, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, - 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, - 0x93, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x67, 0x90, 0x05, 0xba, - 0x7e, 0xa9, 0x25, 0xe5, 0xf9, 0x45, 0xd9, 0x10, 0x9e, 0x7e, 0x99, 0xb9, 0x7e, 0x05, 0xb2, 0x8b, - 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x96, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x79, 0x7d, 0xe1, 0xdc, 0xb2, 0x00, 0x00, 0x00, + // 617 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x94, 0x41, 0x6b, 0x13, 0x41, + 0x14, 0xc7, 0xb3, 0xa9, 0x2d, 0x76, 0x2a, 0xa8, 0xdb, 0x96, 0x6e, 0xb6, 0x75, 0x1b, 0x96, 0x8a, + 0x31, 0x9a, 0x9d, 0x26, 0x5a, 0x0b, 0x3d, 0x08, 0xc6, 0x93, 0xe0, 0x96, 0x12, 0xf5, 0xe2, 0x25, + 0x4c, 0xb3, 0xc3, 0x64, 0x69, 0x76, 0x67, 0xd9, 0x99, 0xc4, 0xe6, 0x26, 0x39, 0x8a, 0x07, 0xc5, + 0x2f, 0xa0, 0x37, 0x8f, 0x01, 0xc5, 0xcf, 0xd0, 0x63, 0xd1, 0x8b, 0x27, 0x91, 0x44, 0x88, 0x5f, + 0x42, 0x90, 0x9d, 0xdd, 0x6e, 0x62, 0xba, 0x0b, 0xd5, 0x9b, 0x97, 0xb0, 0xf3, 0xde, 0xfb, 0xbf, + 0xf7, 0x7b, 0x7f, 0x32, 0x03, 0xd6, 0x1a, 0xc8, 0xe5, 0x14, 0x12, 0xda, 0x61, 0xcd, 0x36, 0xe7, + 0x2d, 0x0c, 0x3b, 0x65, 0xc8, 0x0f, 0x0d, 0xcf, 0xa7, 0x9c, 0xca, 0x8b, 0x22, 0x6b, 0x8c, 0xb3, + 0x46, 0xa7, 0xac, 0xae, 0x11, 0x4a, 0x49, 0x0b, 0x43, 0xe4, 0xd9, 0x10, 0xb9, 0x2e, 0xe5, 0x88, + 0xdb, 0xd4, 0x65, 0xa1, 0x44, 0x5d, 0x22, 0x94, 0x50, 0xf1, 0x09, 0x83, 0xaf, 0x28, 0xba, 0xd2, + 0xa0, 0xcc, 0xa1, 0x0c, 0x3a, 0x8c, 0x04, 0x03, 0x1c, 0x46, 0xa2, 0x44, 0x2e, 0x4c, 0xd4, 0x43, + 0x45, 0x78, 0x88, 0x52, 0x97, 0x91, 0x63, 0xbb, 0x14, 0x8a, 0xdf, 0x28, 0xb4, 0x91, 0x44, 0x3b, + 0x41, 0x27, 0xaa, 0xf4, 0x97, 0x59, 0xa0, 0x98, 0x8c, 0x3c, 0xc4, 0xae, 0x65, 0xbb, 0xc4, 0x44, + 0xfe, 0x01, 0xe6, 0x7b, 0x3e, 0xf5, 0x28, 0x43, 0x2d, 0xf9, 0x0e, 0x98, 0x47, 0x6d, 0xde, 0xa4, + 0xbe, 0xcd, 0xbb, 0x8a, 0x94, 0x97, 0x0a, 0xf3, 0x55, 0xe5, 0xf3, 0xc7, 0xd2, 0x52, 0x34, 0xfa, + 0x9e, 0x65, 0xf9, 0x98, 0xb1, 0x47, 0xdc, 0xb7, 0x5d, 0x52, 0x1b, 0x97, 0xca, 0x4b, 0x60, 0x96, + 0xdb, 0xbc, 0x85, 0x95, 0x6c, 0xa0, 0xa9, 0x85, 0x07, 0x39, 0x0f, 0x16, 0x2c, 0xcc, 0x1a, 0xbe, + 0xed, 0x05, 0x1e, 0x28, 0x33, 0x22, 0x37, 0x19, 0x92, 0x1f, 0x80, 0xf3, 0x0e, 0xe6, 0xc8, 0x42, + 0x1c, 0x29, 0xe7, 0xf2, 0x52, 0x61, 0xa1, 0x52, 0x32, 0x12, 0x5c, 0x35, 0x1e, 0xfb, 0x18, 0xb1, + 0xb6, 0xdf, 0x3d, 0x01, 0x35, 0x23, 0x51, 0x2d, 0x96, 0xef, 0x6c, 0xfd, 0x7c, 0xbb, 0x9e, 0xe9, + 0x8d, 0xfa, 0xc5, 0x31, 0xd6, 0x8b, 0x51, 0xbf, 0xa8, 0x85, 0xa6, 0xa4, 0x6d, 0xac, 0xeb, 0x20, + 0x9f, 0x96, 0xab, 0x61, 0xe6, 0x51, 0x97, 0x61, 0xbd, 0x97, 0x05, 0x8b, 0x26, 0x23, 0xd3, 0x10, + 0xff, 0xb3, 0x5b, 0x9b, 0xc9, 0x6e, 0xe5, 0x62, 0xb7, 0xa6, 0x7b, 0xe8, 0x57, 0xc0, 0x6a, 0x42, + 0x38, 0xf6, 0xe8, 0x83, 0x04, 0x2e, 0x9a, 0x8c, 0x3c, 0xf1, 0x2c, 0xc4, 0xf1, 0x1e, 0xf2, 0x91, + 0xc3, 0xfe, 0xd9, 0x9f, 0xbb, 0x60, 0xce, 0x13, 0x1d, 0x84, 0x41, 0x0b, 0x95, 0xd5, 0xc4, 0x2d, + 0xc3, 0x21, 0xd5, 0xf9, 0xa3, 0x6f, 0xeb, 0x99, 0xf7, 0xa3, 0x7e, 0x51, 0xaa, 0x45, 0xaa, 0x9d, + 0xc2, 0xe9, 0xc5, 0x96, 0xe3, 0xc5, 0x26, 0x09, 0xf5, 0x1c, 0x58, 0x99, 0x0a, 0x9d, 0x2c, 0x54, + 0xf9, 0x35, 0x03, 0x66, 0x4c, 0x46, 0xe4, 0xd7, 0x12, 0xb8, 0xf0, 0xc7, 0x56, 0x1b, 0x89, 0x34, + 0x53, 0x6d, 0xd4, 0x9b, 0x67, 0xa9, 0x8a, 0xdd, 0x2b, 0xf5, 0xbe, 0xfc, 0x78, 0x93, 0xbd, 0x26, + 0x5f, 0x85, 0xc9, 0x2f, 0x0e, 0x6c, 0x0b, 0x55, 0x3d, 0x5c, 0x50, 0xfe, 0x24, 0x81, 0xe5, 0xe4, + 0x0b, 0x5c, 0x4a, 0x1b, 0x9b, 0x58, 0xae, 0x6e, 0xfd, 0x55, 0x79, 0x8c, 0xbb, 0x2d, 0x70, 0xcb, + 0x32, 0x4c, 0xc3, 0x6d, 0x85, 0xf2, 0xba, 0x23, 0xf4, 0xc1, 0xfb, 0x15, 0xe2, 0xbd, 0x93, 0xc0, + 0xa5, 0x53, 0xd7, 0xa8, 0x90, 0x06, 0x31, 0x5d, 0xa9, 0x6e, 0x9e, 0xb5, 0x32, 0x26, 0x2d, 0x0b, + 0xd2, 0x1b, 0xf2, 0xf5, 0x34, 0x52, 0x1e, 0x29, 0x63, 0x46, 0x75, 0xf6, 0x79, 0xf0, 0x67, 0xaa, + 0xee, 0x1e, 0x0d, 0x34, 0xe9, 0x78, 0xa0, 0x49, 0xdf, 0x07, 0x9a, 0xf4, 0x6a, 0xa8, 0x65, 0x8e, + 0x87, 0x5a, 0xe6, 0xeb, 0x50, 0xcb, 0x3c, 0xbd, 0x4d, 0x6c, 0xde, 0x6c, 0xef, 0x1b, 0x0d, 0xea, + 0xc0, 0xfb, 0x41, 0xd7, 0xd2, 0x2e, 0xe6, 0xcf, 0xa8, 0x7f, 0x10, 0x9e, 0x60, 0x67, 0x1b, 0x1e, + 0x4e, 0x0e, 0xe2, 0x5d, 0x0f, 0xb3, 0xfd, 0x39, 0xf1, 0xfc, 0xde, 0xfa, 0x1d, 0x00, 0x00, 0xff, + 0xff, 0x2c, 0xa9, 0x6b, 0xba, 0x54, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -53,6 +407,10 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) + TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) } type msgClient struct { @@ -63,22 +421,1174 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.govshuttle.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) { + out := new(MsgLendingMarketProposalResponse) + err := c.cc.Invoke(ctx, "/canto.govshuttle.v1.Msg/LendingMarketProposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) { + out := new(MsgTreasuryProposalResponse) + err := c.cc.Invoke(ctx, "/canto.govshuttle.v1.Msg/TreasuryProposal", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { + // UpdateParams updates the parameters of the x/erc20 module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) + TreasuryProposal(context.Context, *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. type UnimplementedMsgServer struct { } +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (*UnimplementedMsgServer) LendingMarketProposal(ctx context.Context, req *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LendingMarketProposal not implemented") +} +func (*UnimplementedMsgServer) TreasuryProposal(ctx context.Context, req *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TreasuryProposal not implemented") +} + func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.govshuttle.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_LendingMarketProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLendingMarketProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).LendingMarketProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.govshuttle.v1.Msg/LendingMarketProposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).LendingMarketProposal(ctx, req.(*MsgLendingMarketProposal)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_TreasuryProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTreasuryProposal) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).TreasuryProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.govshuttle.v1.Msg/TreasuryProposal", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TreasuryProposal(ctx, req.(*MsgTreasuryProposal)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "canto.govshuttle.v1.Msg", HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "canto/govshuttle/v1/tx.proto", + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "LendingMarketProposal", + Handler: _Msg_LendingMarketProposal_Handler, + }, + { + MethodName: "TreasuryProposal", + Handler: _Msg_TreasuryProposal_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/govshuttle/v1/tx.proto", +} + +func (m *MsgLendingMarketProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLendingMarketProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLendingMarketProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgLendingMarketProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLendingMarketProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLendingMarketProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgTreasuryProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTreasuryProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTreasuryProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintTx(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintTx(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTreasuryProposalResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgTreasuryProposalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTreasuryProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil } + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgLendingMarketProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgLendingMarketProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgTreasuryProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Title) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgTreasuryProposalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgLendingMarketProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLendingMarketProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLendingMarketProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &TreasuryProposalMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgLendingMarketProposalResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLendingMarketProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLendingMarketProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgTreasuryProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgTreasuryProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTreasuryProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &TreasuryProposalMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgTreasuryProposalResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgTreasuryProposalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTreasuryProposalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) From f1eaf61df698ac2cf22eafd9628cfdd32a3ed0d4 Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 7 Feb 2024 17:41:44 +0900 Subject: [PATCH 61/96] fix: govshuttle proposal --- api/canto/erc20/v1/tx.pulsar.go | 98 ++--- api/canto/govshuttle/v1/tx.pulsar.go | 191 +++++---- proto/canto/erc20/v1/tx.proto | 24 +- proto/canto/govshuttle/v1/tx.proto | 15 +- x/erc20/types/tx.pb.go | 115 +++--- x/erc20/types/tx.pb.gw.go | 586 --------------------------- x/govshuttle/keeper/keeper.go | 6 + x/govshuttle/keeper/msg_server.go | 57 +++ x/govshuttle/types/tx.pb.go | 89 ++-- 9 files changed, 303 insertions(+), 878 deletions(-) delete mode 100644 x/erc20/types/tx.pb.gw.go diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index 70650f01a..aa9f51a63 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -6329,72 +6329,56 @@ var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe6, 0x06, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x7e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdb, 0x04, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x55, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, - 0x12, 0x1f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, - 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x69, - 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0x82, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x14, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x8e, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x12, 0xaf, 0x01, 0x0a, 0x1d, 0x54, 0x6f, - 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, - 0x2a, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x05, 0x80, 0xe7, 0xb0, - 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, - 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, - 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, + 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x30, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, + 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, + 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/api/canto/govshuttle/v1/tx.pulsar.go b/api/canto/govshuttle/v1/tx.pulsar.go index 787c0f888..7dfe219af 100644 --- a/api/canto/govshuttle/v1/tx.pulsar.go +++ b/api/canto/govshuttle/v1/tx.pulsar.go @@ -225,7 +225,7 @@ func (x *fastReflection_MsgLendingMarketProposal) Set(fd protoreflect.FieldDescr case "canto.govshuttle.v1.MsgLendingMarketProposal.description": x.Description = value.Interface().(string) case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": - x.Metadata = value.Message().Interface().(*TreasuryProposalMetadata) + x.Metadata = value.Message().Interface().(*LendingMarketMetadata) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgLendingMarketProposal")) @@ -248,7 +248,7 @@ func (x *fastReflection_MsgLendingMarketProposal) Mutable(fd protoreflect.FieldD switch fd.FullName() { case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": if x.Metadata == nil { - x.Metadata = new(TreasuryProposalMetadata) + x.Metadata = new(LendingMarketMetadata) } return protoreflect.ValueOfMessage(x.Metadata.ProtoReflect()) case "canto.govshuttle.v1.MsgLendingMarketProposal.authority": @@ -277,7 +277,7 @@ func (x *fastReflection_MsgLendingMarketProposal) NewField(fd protoreflect.Field case "canto.govshuttle.v1.MsgLendingMarketProposal.description": return protoreflect.ValueOfString("") case "canto.govshuttle.v1.MsgLendingMarketProposal.metadata": - m := new(TreasuryProposalMetadata) + m := new(LendingMarketMetadata) return protoreflect.ValueOfMessage(m.ProtoReflect()) default: if fd.IsExtension() { @@ -603,7 +603,7 @@ func (x *fastReflection_MsgLendingMarketProposal) ProtoMethods() *protoiface.Met return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } if x.Metadata == nil { - x.Metadata = &TreasuryProposalMetadata{} + x.Metadata = &LendingMarketMetadata{} } if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Metadata); err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err @@ -2858,10 +2858,10 @@ type MsgLendingMarketProposal struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // NOTE: All parameters must be supplied. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *LendingMarketMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` // NOTE: All parameters must be supplied. } func (x *MsgLendingMarketProposal) Reset() { @@ -2905,7 +2905,7 @@ func (x *MsgLendingMarketProposal) GetDescription() string { return "" } -func (x *MsgLendingMarketProposal) GetMetadata() *TreasuryProposalMetadata { +func (x *MsgLendingMarketProposal) GetMetadata() *LendingMarketMetadata { if x != nil { return x.Metadata } @@ -3119,7 +3119,7 @@ var file_canto_govshuttle_v1_tx_proto_rawDesc = []byte{ 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8c, 0x02, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x02, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, @@ -3128,93 +3128,83 @@ var file_canto_govshuttle_v1_tx_proto_rawDesc = []byte{ 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, - 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, - 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x35, 0xe8, 0xa0, - 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, - 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, - 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x30, 0xe8, 0xa0, 0x1f, 0x00, - 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, - 0xb0, 0x2a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, - 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x0f, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xfd, 0x03, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, - 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x27, 0x12, 0x25, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0xb6, 0x01, 0x0a, 0x15, 0x4c, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x1a, 0x35, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, + 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x35, 0xe8, 0xa0, 0x1f, 0x00, 0x82, + 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, + 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, - 0x12, 0x2f, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2f, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x12, 0xa1, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, - 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x30, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x19, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, + 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, - 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x78, 0x2f, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, - 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, - 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, - 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, + 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, + 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, + 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdf, 0x02, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x12, 0x62, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x15, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2d, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x35, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x10, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, + 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, + 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3237,13 +3227,14 @@ var file_canto_govshuttle_v1_tx_proto_goTypes = []interface{}{ (*MsgTreasuryProposalResponse)(nil), // 3: canto.govshuttle.v1.MsgTreasuryProposalResponse (*MsgUpdateParams)(nil), // 4: canto.govshuttle.v1.MsgUpdateParams (*MsgUpdateParamsResponse)(nil), // 5: canto.govshuttle.v1.MsgUpdateParamsResponse - (*TreasuryProposalMetadata)(nil), // 6: canto.govshuttle.v1.TreasuryProposalMetadata - (*Params)(nil), // 7: canto.govshuttle.v1.Params + (*LendingMarketMetadata)(nil), // 6: canto.govshuttle.v1.LendingMarketMetadata + (*TreasuryProposalMetadata)(nil), // 7: canto.govshuttle.v1.TreasuryProposalMetadata + (*Params)(nil), // 8: canto.govshuttle.v1.Params } var file_canto_govshuttle_v1_tx_proto_depIdxs = []int32{ - 6, // 0: canto.govshuttle.v1.MsgLendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata - 6, // 1: canto.govshuttle.v1.MsgTreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata - 7, // 2: canto.govshuttle.v1.MsgUpdateParams.params:type_name -> canto.govshuttle.v1.Params + 6, // 0: canto.govshuttle.v1.MsgLendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.LendingMarketMetadata + 7, // 1: canto.govshuttle.v1.MsgTreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata + 8, // 2: canto.govshuttle.v1.MsgUpdateParams.params:type_name -> canto.govshuttle.v1.Params 4, // 3: canto.govshuttle.v1.Msg.UpdateParams:input_type -> canto.govshuttle.v1.MsgUpdateParams 0, // 4: canto.govshuttle.v1.Msg.LendingMarketProposal:input_type -> canto.govshuttle.v1.MsgLendingMarketProposal 2, // 5: canto.govshuttle.v1.Msg.TreasuryProposal:input_type -> canto.govshuttle.v1.MsgTreasuryProposal diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index c726a5652..bea0a09d8 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -18,39 +18,27 @@ service Msg { // ConvertCoin mints a ERC20 representation of the native Cosmos coin denom // that is registered on the token mapping. - rpc ConvertCoin(MsgConvertCoin) returns (MsgConvertCoinResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/convert_coin"; - }; + rpc ConvertCoin(MsgConvertCoin) returns (MsgConvertCoinResponse); // ConvertERC20 mints a native Cosmos coin representation of the ERC20 token // contract that is registered on the token mapping. - rpc ConvertERC20(MsgConvertERC20) returns (MsgConvertERC20Response) { - option (google.api.http).get = "/canto/erc20/v1/tx/convert_erc20"; - }; + rpc ConvertERC20(MsgConvertERC20) returns (MsgConvertERC20Response); // UpdateParams updates the parameters of the x/erc20 module. - rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/update_params"; - }; + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); // RegisterCoinProposal defines a method to create a proposal to register a // token pair for a native Cosmos coin. - rpc RegisterCoinProposal(MsgRegisterCoin) returns (MsgRegisterCoinResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/register_coin"; - }; + rpc RegisterCoinProposal(MsgRegisterCoin) returns (MsgRegisterCoinResponse); // RegisterERC20Proposal defines a method to create a proposal to register a // token pair for an ERC20 token. rpc RegisterERC20Proposal(MsgRegisterERC20) - returns (MsgRegisterERC20Response) { - option (google.api.http).get = "/canto/erc20/v1/tx/register_erc20"; - }; + returns (MsgRegisterERC20Response); // ToggleTokenConversionProposal defines a method to create a proposal to // toggle the conversion of a token pair. rpc ToggleTokenConversionProposal(MsgToggleTokenConversion) - returns (MsgToggleTokenConversionResponse) { - option (google.api.http).get = "/canto/erc20/v1/tx/toggle_token_conversion"; - }; + returns (MsgToggleTokenConversionResponse); } // MsgConvertCoin defines a Msg to convert a native Cosmos coin to a ERC20 token diff --git a/proto/canto/govshuttle/v1/tx.proto b/proto/canto/govshuttle/v1/tx.proto index 78bd57cdb..a9599b6d9 100644 --- a/proto/canto/govshuttle/v1/tx.proto +++ b/proto/canto/govshuttle/v1/tx.proto @@ -15,20 +15,13 @@ service Msg { option (cosmos.msg.v1.service) = true; // UpdateParams updates the parameters of the x/erc20 module. - rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse) { - option (google.api.http).get = "/canto/govshuttle/v1/tx/update_params"; - }; + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); rpc LendingMarketProposal(MsgLendingMarketProposal) - returns (MsgLendingMarketProposalResponse) { - option (google.api.http).get = - "/canto/govshuttle/v1/tx/lending_market_proposal"; - }; + returns (MsgLendingMarketProposalResponse); rpc TreasuryProposal(MsgTreasuryProposal) - returns (MsgTreasuryProposalResponse) { - option (google.api.http).get = "/canto/govshuttle/v1/tx/treasury_proposal"; - }; + returns (MsgTreasuryProposalResponse); } message MsgLendingMarketProposal { @@ -44,7 +37,7 @@ message MsgLendingMarketProposal { string title = 2; string description = 3; - TreasuryProposalMetadata metadata = 4; + LendingMarketMetadata metadata = 4; // NOTE: All parameters must be supplied. } diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index ceb720927..67578147f 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -690,66 +690,61 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 938 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xbd, 0x4d, 0x6a, 0x35, 0xe3, 0xaa, 0x2d, 0x23, 0x27, 0x71, 0xac, 0x76, 0xed, 0x1a, - 0x44, 0xdd, 0xd0, 0xec, 0x24, 0xae, 0x00, 0xe1, 0x0b, 0xc2, 0x16, 0x87, 0x1c, 0x82, 0xaa, 0x25, - 0x5c, 0xb8, 0x58, 0x93, 0xf5, 0x68, 0xb3, 0x72, 0x76, 0x66, 0x35, 0x33, 0x31, 0xed, 0x05, 0xa1, - 0x1c, 0x7b, 0x40, 0x48, 0x7c, 0x00, 0x7a, 0xe4, 0x04, 0x39, 0xf4, 0x43, 0xf4, 0x58, 0x8a, 0x10, - 0x88, 0x43, 0x85, 0x12, 0x44, 0x7a, 0xe4, 0x23, 0xa0, 0x79, 0xc9, 0x7a, 0xd7, 0xd9, 0xb8, 0x11, - 0x48, 0x5c, 0x22, 0x3f, 0x6f, 0x33, 0xff, 0xdf, 0x33, 0xcf, 0xcc, 0x06, 0x2c, 0x07, 0x98, 0x4a, - 0x86, 0x08, 0x0f, 0x3a, 0xeb, 0x68, 0xbc, 0x81, 0xe4, 0x43, 0x2f, 0xe1, 0x4c, 0x32, 0x78, 0x4d, - 0x07, 0x3c, 0x1d, 0xf0, 0xc6, 0x1b, 0xf5, 0x9b, 0x21, 0x63, 0xe1, 0x1e, 0x41, 0x38, 0x89, 0x10, - 0xa6, 0x94, 0x49, 0x2c, 0x23, 0x46, 0x85, 0xc9, 0xae, 0x57, 0x43, 0x16, 0x32, 0xfd, 0x13, 0xa9, - 0x5f, 0xd6, 0xeb, 0x06, 0x4c, 0xc4, 0x4c, 0xa0, 0x1d, 0x2c, 0x08, 0x1a, 0x6f, 0xec, 0x10, 0x89, - 0x37, 0x50, 0xc0, 0x22, 0x7a, 0x26, 0x4e, 0x47, 0x69, 0x5c, 0x19, 0x36, 0xbe, 0x62, 0xe2, 0x03, - 0xb3, 0xb0, 0x31, 0x6c, 0x68, 0xd9, 0x96, 0xc6, 0x22, 0x54, 0xb2, 0x63, 0x11, 0xda, 0xc0, 0x1b, - 0x38, 0x8e, 0x28, 0x43, 0xfa, 0xaf, 0x75, 0xdd, 0x9c, 0x62, 0x0c, 0x09, 0x25, 0x22, 0xb2, 0x2b, - 0xb5, 0xbe, 0x73, 0xc0, 0xb5, 0x2d, 0x11, 0xf6, 0x19, 0x1d, 0x13, 0x2e, 0xfb, 0x2c, 0xa2, 0xf0, - 0x3e, 0x98, 0x57, 0x2a, 0x6b, 0x4e, 0xd3, 0x69, 0x57, 0x3a, 0x2b, 0x9e, 0xdd, 0x59, 0x61, 0x78, - 0x56, 0xa6, 0xa7, 0x12, 0x7b, 0xf3, 0xcf, 0x5e, 0x36, 0x4a, 0xbe, 0x4e, 0x86, 0x75, 0x70, 0x85, - 0x93, 0x80, 0x44, 0x63, 0xc2, 0x6b, 0x97, 0x9a, 0x4e, 0x7b, 0xc1, 0x4f, 0x6d, 0xb8, 0x04, 0xca, - 0x82, 0xd0, 0x21, 0xe1, 0xb5, 0x39, 0x1d, 0xb1, 0x56, 0xf7, 0xad, 0x83, 0x93, 0xc3, 0x55, 0x6b, - 0x3c, 0x3e, 0x39, 0x5c, 0xad, 0x1a, 0xa5, 0x79, 0x39, 0xad, 0x1a, 0x58, 0xca, 0x7b, 0x7c, 0x22, - 0x12, 0x46, 0x05, 0x69, 0xfd, 0xe4, 0x80, 0xeb, 0x93, 0xd0, 0xc7, 0x7e, 0xbf, 0xb3, 0x0e, 0xef, - 0x82, 0x1b, 0x01, 0xa3, 0x92, 0xe3, 0x40, 0x0e, 0xf0, 0x70, 0xc8, 0x89, 0x10, 0x1a, 0x64, 0xc1, - 0xbf, 0x7e, 0xea, 0xff, 0xc8, 0xb8, 0x61, 0x1f, 0x94, 0x71, 0xcc, 0xf6, 0xa9, 0x34, 0x82, 0x7b, - 0xef, 0x28, 0x9c, 0xdf, 0x5f, 0x36, 0x16, 0x0d, 0xb0, 0x18, 0x8e, 0xbc, 0x88, 0xa1, 0x18, 0xcb, - 0x5d, 0x6f, 0x93, 0xca, 0x17, 0x4f, 0xd7, 0x80, 0xed, 0xc4, 0x26, 0x95, 0xbe, 0x2d, 0xcd, 0x71, - 0xcf, 0x9d, 0xcb, 0x3d, 0x9f, 0xe3, 0xae, 0x2b, 0xd8, 0xc5, 0x69, 0x58, 0xad, 0xbf, 0xb5, 0x02, - 0x96, 0xa7, 0x5c, 0x29, 0xee, 0x0f, 0x06, 0xf7, 0xb3, 0x64, 0x88, 0x25, 0x79, 0x80, 0x39, 0x8e, - 0x05, 0x7c, 0x0f, 0x2c, 0xe0, 0x7d, 0xb9, 0xcb, 0x78, 0x24, 0x1f, 0x19, 0xce, 0x5e, 0xed, 0xc5, - 0xd3, 0xb5, 0xaa, 0x55, 0x6a, 0x51, 0x3f, 0x95, 0x3c, 0xa2, 0xa1, 0x3f, 0x49, 0x85, 0x1f, 0x80, - 0x72, 0xa2, 0x57, 0xd0, 0xec, 0x95, 0xce, 0x92, 0x97, 0x1f, 0x78, 0xcf, 0xac, 0xdf, 0x5b, 0x50, - 0x3d, 0xf9, 0xfe, 0xe4, 0x70, 0xd5, 0xf1, 0x6d, 0x41, 0xb7, 0xad, 0x4e, 0x6d, 0xb2, 0x54, 0x9e, - 0x25, 0x2b, 0xce, 0xb2, 0x64, 0x5d, 0x29, 0xcb, 0xdf, 0x86, 0xc5, 0x27, 0x61, 0x24, 0x24, 0xe1, - 0x7a, 0xee, 0xfe, 0x2d, 0x4b, 0x15, 0x5c, 0x96, 0x91, 0xdc, 0x23, 0x76, 0xee, 0x8c, 0x01, 0x9b, - 0xa0, 0x32, 0x24, 0x22, 0xe0, 0x51, 0xa2, 0x6e, 0xaa, 0x3d, 0x9b, 0xac, 0x0b, 0x7e, 0x08, 0xae, - 0xc4, 0x44, 0xe2, 0x21, 0x96, 0x58, 0x1f, 0x50, 0xa5, 0x73, 0x6b, 0x32, 0xeb, 0x74, 0x94, 0xce, - 0xfa, 0x96, 0x4d, 0xb2, 0xf3, 0x9e, 0x16, 0x75, 0xef, 0xbd, 0x7a, 0xd2, 0x28, 0xcd, 0xea, 0x46, - 0x16, 0xcf, 0x76, 0x23, 0xeb, 0x4a, 0xbb, 0xf1, 0x8b, 0x03, 0x6e, 0x64, 0x62, 0x66, 0x92, 0xff, - 0xef, 0x76, 0xb4, 0xc0, 0x55, 0x7d, 0xfa, 0xa7, 0xb7, 0xc6, 0xcc, 0x6c, 0xce, 0xd7, 0x5d, 0x2b, - 0x26, 0x5e, 0x3a, 0x43, 0x6c, 0x86, 0xb9, 0x0e, 0x6a, 0xd3, 0xbe, 0x94, 0xf9, 0x57, 0x47, 0x07, - 0xb7, 0x59, 0x18, 0xee, 0x91, 0x6d, 0x36, 0x22, 0xd4, 0x0c, 0xbd, 0x50, 0x5a, 0xfe, 0x03, 0xfb, - 0x76, 0x96, 0x7d, 0xfb, 0x82, 0xec, 0xaa, 0x67, 0x4a, 0x82, 0x85, 0x36, 0x46, 0xf7, 0xdd, 0x57, - 0x4f, 0x1a, 0xce, 0x59, 0x5a, 0x37, 0xa5, 0x2d, 0x14, 0xdf, 0x6a, 0x81, 0xe6, 0x79, 0xb1, 0x53, - 0xfa, 0xce, 0x5f, 0x65, 0x30, 0xb7, 0x25, 0x42, 0xf8, 0x25, 0xa8, 0x64, 0x9f, 0x5e, 0x77, 0xfa, - 0x1a, 0xe6, 0x5f, 0xbe, 0xfa, 0xdb, 0xb3, 0xe3, 0x69, 0x73, 0xef, 0x1c, 0xfc, 0xfc, 0xe7, 0xb7, - 0x97, 0x6e, 0xc3, 0x06, 0x3a, 0xf3, 0x81, 0x43, 0x81, 0xc9, 0x1f, 0xe8, 0x67, 0xfb, 0xc0, 0x01, - 0x57, 0x73, 0xef, 0x67, 0xe3, 0xfc, 0x1d, 0x74, 0x42, 0xfd, 0xce, 0x6b, 0x12, 0x52, 0x0d, 0x6d, - 0xad, 0xa1, 0x05, 0x9b, 0x33, 0x34, 0x68, 0x9f, 0x16, 0x91, 0x7b, 0xd5, 0x8a, 0x44, 0x64, 0x13, - 0x0a, 0x45, 0x14, 0xbe, 0x33, 0xb3, 0x44, 0xec, 0xeb, 0x82, 0x81, 0x79, 0xd6, 0xe0, 0x63, 0x07, - 0x54, 0xb3, 0x97, 0xf3, 0x01, 0x67, 0x09, 0x13, 0x78, 0xaf, 0x50, 0x4c, 0x36, 0xb1, 0x50, 0x4c, - 0xe1, 0x35, 0x9f, 0x25, 0x86, 0xdb, 0x02, 0x73, 0x2c, 0x5f, 0x3b, 0x60, 0x31, 0x77, 0x6d, 0x52, - 0x35, 0xcd, 0x19, 0x9b, 0x99, 0x03, 0x6a, 0xbf, 0x2e, 0x23, 0xd5, 0x73, 0x57, 0xeb, 0x79, 0x13, - 0xde, 0x9e, 0xa5, 0xc7, 0x1c, 0xd1, 0x8f, 0x0e, 0xb8, 0x55, 0x38, 0xd1, 0xa9, 0xb0, 0xa2, 0x6d, - 0x0b, 0x2b, 0xea, 0xeb, 0x17, 0xcd, 0x4c, 0x85, 0x76, 0xb4, 0xd0, 0x7b, 0x70, 0xb5, 0x40, 0xa8, - 0xd4, 0x95, 0x03, 0x7d, 0x63, 0x07, 0xc1, 0x64, 0x97, 0xcb, 0x5f, 0xa9, 0xaf, 0x56, 0x6f, 0xf3, - 0xd9, 0x91, 0xeb, 0x3c, 0x3f, 0x72, 0x9d, 0x3f, 0x8e, 0x5c, 0xe7, 0x9b, 0x63, 0xb7, 0xf4, 0xfc, - 0xd8, 0x2d, 0xfd, 0x76, 0xec, 0x96, 0x3e, 0x47, 0x61, 0x24, 0x77, 0xf7, 0x77, 0xbc, 0x80, 0xc5, - 0xa8, 0xaf, 0x96, 0x5d, 0xfb, 0x84, 0xc8, 0x2f, 0x18, 0x1f, 0x19, 0x0b, 0x8d, 0xdf, 0x47, 0x0f, - 0xed, 0x4e, 0xf2, 0x51, 0x42, 0xc4, 0x4e, 0x59, 0xff, 0xc7, 0x74, 0xff, 0x9f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x3f, 0x22, 0xfa, 0xaa, 0x35, 0x0a, 0x00, 0x00, + // 863 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xc7, 0x63, 0x9a, 0x8d, 0x36, 0x93, 0xd5, 0xee, 0x62, 0xa5, 0x69, 0x6a, 0xed, 0x3a, 0x51, + 0x84, 0x20, 0x14, 0x62, 0x37, 0x59, 0x01, 0x22, 0x17, 0x44, 0x22, 0x0e, 0x3d, 0x14, 0x55, 0x26, + 0x95, 0x10, 0x97, 0x32, 0x71, 0x46, 0xae, 0x95, 0x78, 0xc6, 0xf2, 0x4c, 0x43, 0x2b, 0x2e, 0x88, + 0x23, 0x27, 0xfe, 0x03, 0x7a, 0xe4, 0x84, 0x7a, 0xe8, 0x1f, 0xd1, 0x63, 0xa9, 0x84, 0x40, 0x20, + 0x55, 0xa8, 0x3d, 0xb4, 0x47, 0xfe, 0x04, 0x34, 0x3f, 0xe2, 0xd8, 0xa9, 0xfb, 0x43, 0x20, 0xed, + 0x25, 0xca, 0x7b, 0xdf, 0x37, 0x6f, 0xde, 0xe7, 0xcd, 0x9b, 0x91, 0xc1, 0x8a, 0x0b, 0x31, 0x23, + 0x36, 0x8a, 0xdc, 0xce, 0xba, 0x3d, 0x6d, 0xdb, 0x6c, 0xdf, 0x0a, 0x23, 0xc2, 0x88, 0xfe, 0x54, + 0x08, 0x96, 0x10, 0xac, 0x69, 0xdb, 0x78, 0xe1, 0x11, 0xe2, 0x4d, 0x90, 0x0d, 0x43, 0xdf, 0x86, + 0x18, 0x13, 0x06, 0x99, 0x4f, 0x30, 0x95, 0xd1, 0x46, 0xd9, 0x23, 0x1e, 0x11, 0x7f, 0x6d, 0xfe, + 0x4f, 0x79, 0x4d, 0x97, 0xd0, 0x80, 0x50, 0x7b, 0x08, 0x29, 0xb2, 0xa7, 0xed, 0x21, 0x62, 0xb0, + 0x6d, 0xbb, 0xc4, 0xc7, 0x37, 0x74, 0x3c, 0x8e, 0x75, 0x6e, 0x28, 0x7d, 0x55, 0xea, 0x3b, 0x32, + 0xb1, 0x34, 0x94, 0xb4, 0xa2, 0x96, 0x06, 0xd4, 0xe3, 0x65, 0x07, 0xd4, 0x53, 0xc2, 0x9b, 0x30, + 0xf0, 0x31, 0xb1, 0xc5, 0xaf, 0x72, 0xbd, 0x58, 0x60, 0xf4, 0x10, 0x46, 0xd4, 0x57, 0x99, 0x1a, + 0x3f, 0x69, 0xe0, 0xe9, 0x26, 0xf5, 0xfa, 0x04, 0x4f, 0x51, 0xc4, 0xfa, 0xc4, 0xc7, 0xfa, 0x2b, + 0x90, 0xe7, 0x55, 0x56, 0xb5, 0xba, 0xd6, 0x2c, 0x75, 0x56, 0x2d, 0xb5, 0x33, 0xc7, 0xb0, 0x54, + 0x99, 0x16, 0x0f, 0xec, 0xe5, 0x4f, 0xce, 0x6b, 0x39, 0x47, 0x04, 0xeb, 0x06, 0x78, 0x1c, 0x21, + 0x17, 0xf9, 0x53, 0x14, 0x55, 0xdf, 0xa8, 0x6b, 0xcd, 0xa2, 0x13, 0xdb, 0x7a, 0x05, 0x14, 0x28, + 0xc2, 0x23, 0x14, 0x55, 0x97, 0x84, 0xa2, 0xac, 0xee, 0x5b, 0xdf, 0x5f, 0x1d, 0xad, 0x29, 0xe3, + 0x87, 0xab, 0xa3, 0xb5, 0xb2, 0xac, 0x34, 0x5d, 0x4e, 0xa3, 0x0a, 0x2a, 0x69, 0x8f, 0x83, 0x68, + 0x48, 0x30, 0x45, 0x8d, 0x5f, 0x35, 0xf0, 0x6c, 0x2e, 0x7d, 0xe6, 0xf4, 0x3b, 0xeb, 0xfa, 0xbb, + 0xe0, 0xb9, 0x4b, 0x30, 0x8b, 0xa0, 0xcb, 0x76, 0xe0, 0x68, 0x14, 0x21, 0x4a, 0x05, 0x48, 0xd1, + 0x79, 0x36, 0xf3, 0x7f, 0x2a, 0xdd, 0x7a, 0x1f, 0x14, 0x60, 0x40, 0xf6, 0x30, 0x93, 0x05, 0xf7, + 0xde, 0xe3, 0x38, 0x7f, 0x9e, 0xd7, 0x96, 0x25, 0x30, 0x1d, 0x8d, 0x2d, 0x9f, 0xd8, 0x01, 0x64, + 0xbb, 0xd6, 0x06, 0x66, 0x67, 0xc7, 0x2d, 0xa0, 0x3a, 0xb1, 0x81, 0x99, 0xa3, 0x96, 0xa6, 0xb8, + 0x97, 0x6e, 0xe5, 0xce, 0xa7, 0xb8, 0x0d, 0x0e, 0xbb, 0xbc, 0x08, 0x2b, 0xea, 0x6f, 0xac, 0x82, + 0x95, 0x05, 0x57, 0x8c, 0xfb, 0x8b, 0xc4, 0xdd, 0x0e, 0x47, 0x90, 0xa1, 0x2d, 0x18, 0xc1, 0x80, + 0xea, 0x1f, 0x82, 0x22, 0xdc, 0x63, 0xbb, 0x24, 0xf2, 0xd9, 0x81, 0xe4, 0xec, 0x55, 0xcf, 0x8e, + 0x5b, 0x65, 0x55, 0xa9, 0x42, 0xfd, 0x82, 0x45, 0x3e, 0xf6, 0x9c, 0x79, 0xa8, 0xfe, 0x31, 0x28, + 0x84, 0x22, 0x83, 0x60, 0x2f, 0x75, 0x2a, 0x56, 0x7a, 0xe0, 0x2d, 0x99, 0xbf, 0x57, 0xe4, 0x3d, + 0xf9, 0xf9, 0xea, 0x68, 0x4d, 0x73, 0xd4, 0x82, 0x6e, 0x93, 0x9f, 0xda, 0x3c, 0x55, 0x9a, 0x25, + 0x59, 0x9c, 0x62, 0x49, 0xba, 0x62, 0x96, 0x7f, 0x24, 0x8b, 0x83, 0x3c, 0x9f, 0x32, 0x14, 0x89, + 0xb9, 0xfb, 0xaf, 0x2c, 0x65, 0xf0, 0x88, 0xf9, 0x6c, 0x82, 0xd4, 0xdc, 0x49, 0x43, 0xaf, 0x83, + 0xd2, 0x08, 0x51, 0x37, 0xf2, 0x43, 0x7e, 0x53, 0xd5, 0xd9, 0x24, 0x5d, 0xfa, 0x27, 0xe0, 0x71, + 0x80, 0x18, 0x1c, 0x41, 0x06, 0xc5, 0x01, 0x95, 0x3a, 0x2f, 0xe7, 0xb3, 0x8e, 0xc7, 0xf1, 0xac, + 0x6f, 0xaa, 0x20, 0x35, 0xef, 0xf1, 0xa2, 0xee, 0xfb, 0xd7, 0x87, 0xb5, 0xdc, 0x5d, 0xdd, 0x48, + 0xe2, 0xa9, 0x6e, 0x24, 0x5d, 0x71, 0x37, 0x7e, 0xd3, 0xc0, 0xf3, 0x84, 0x26, 0x27, 0xf9, 0x75, + 0xb7, 0xa3, 0x01, 0x9e, 0x88, 0xd3, 0x9f, 0xdd, 0x1a, 0x39, 0xb3, 0x29, 0x5f, 0xb7, 0x95, 0x4d, + 0x5c, 0xb9, 0x41, 0x2c, 0x87, 0xd9, 0x00, 0xd5, 0x45, 0x5f, 0xcc, 0xfc, 0xbb, 0x26, 0xc4, 0x01, + 0xf1, 0xbc, 0x09, 0x1a, 0x90, 0x31, 0xc2, 0x72, 0xe8, 0x29, 0xaf, 0xe5, 0x7f, 0xb0, 0x0f, 0x92, + 0xec, 0x83, 0x07, 0xb2, 0xf3, 0x9e, 0xf1, 0x12, 0x14, 0xb4, 0x34, 0xba, 0x1f, 0x5c, 0x1f, 0xd6, + 0xb4, 0x9b, 0xb4, 0x66, 0x4c, 0x9b, 0x59, 0x7c, 0xa3, 0x01, 0xea, 0xb7, 0x69, 0x33, 0xfa, 0xce, + 0x5f, 0x79, 0xb0, 0xb4, 0x49, 0x3d, 0x7d, 0x1b, 0x94, 0x92, 0x4f, 0xaf, 0xb9, 0x78, 0x0d, 0xd3, + 0x2f, 0x9f, 0xf1, 0xf6, 0xdd, 0xfa, 0x2c, 0xbd, 0xfe, 0x25, 0x78, 0x92, 0x7a, 0x15, 0x6b, 0xb7, + 0xaf, 0x13, 0x01, 0xc6, 0x3b, 0xf7, 0x04, 0x24, 0x33, 0xa7, 0x1e, 0xa0, 0xac, 0xcc, 0xc9, 0x80, + 0xcc, 0xcc, 0x59, 0x4f, 0x82, 0xfe, 0x35, 0x28, 0x27, 0x2f, 0xc7, 0x56, 0x44, 0x42, 0x42, 0xe1, + 0x24, 0x73, 0x87, 0x64, 0x60, 0xe6, 0x0e, 0x59, 0xd7, 0x4c, 0x77, 0xc1, 0x72, 0x6a, 0x16, 0xe3, + 0x2d, 0xea, 0x77, 0x64, 0x90, 0xfd, 0x69, 0xde, 0x17, 0x11, 0x6f, 0xf2, 0x2d, 0x78, 0x99, 0x79, + 0xf4, 0xf1, 0x66, 0x59, 0xa9, 0x32, 0x57, 0x18, 0xeb, 0x0f, 0x8d, 0x9c, 0x6d, 0x6e, 0x3c, 0xfa, + 0x8e, 0x3f, 0xd5, 0xbd, 0x8d, 0x93, 0x0b, 0x53, 0x3b, 0xbd, 0x30, 0xb5, 0xbf, 0x2f, 0x4c, 0xed, + 0xc7, 0x4b, 0x33, 0x77, 0x7a, 0x69, 0xe6, 0xfe, 0xb8, 0x34, 0x73, 0x5f, 0xd9, 0x9e, 0xcf, 0x76, + 0xf7, 0x86, 0x96, 0x4b, 0x02, 0xbb, 0xcf, 0x93, 0xb7, 0x3e, 0x47, 0xec, 0x1b, 0x12, 0x8d, 0xa5, + 0x65, 0x4f, 0x3f, 0xb2, 0xf7, 0xd5, 0xa7, 0x02, 0x3b, 0x08, 0x11, 0x1d, 0x16, 0xc4, 0x67, 0xc2, + 0xab, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xd3, 0x50, 0x09, 0x2a, 0x09, 0x00, 0x00, } func (this *MsgToggleTokenConversion) Equal(that interface{}) bool { diff --git a/x/erc20/types/tx.pb.gw.go b/x/erc20/types/tx.pb.gw.go deleted file mode 100644 index ec9a839de..000000000 --- a/x/erc20/types/tx.pb.gw.go +++ /dev/null @@ -1,586 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: canto/erc20/v1/tx.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -var ( - filter_Msg_ConvertCoin_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_ConvertCoin_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgConvertCoin - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ConvertCoin_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ConvertCoin(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_ConvertCoin_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgConvertCoin - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ConvertCoin_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ConvertCoin(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Msg_ConvertERC20_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_ConvertERC20_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgConvertERC20 - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ConvertERC20_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ConvertERC20(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_ConvertERC20_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgConvertERC20 - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ConvertERC20_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ConvertERC20(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Msg_UpdateParams_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_UpdateParams_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUpdateParams - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UpdateParams_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.UpdateParams(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_UpdateParams_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgUpdateParams - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_UpdateParams_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.UpdateParams(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Msg_RegisterCoinProposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCoin - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCoinProposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.RegisterCoinProposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_RegisterCoinProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterCoin - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterCoinProposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.RegisterCoinProposal(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Msg_RegisterERC20Proposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterERC20 - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterERC20Proposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.RegisterERC20Proposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_RegisterERC20Proposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgRegisterERC20 - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_RegisterERC20Proposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.RegisterERC20Proposal(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Msg_ToggleTokenConversionProposal_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgToggleTokenConversion - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ToggleTokenConversionProposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ToggleTokenConversionProposal(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_ToggleTokenConversionProposal_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgToggleTokenConversion - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Msg_ToggleTokenConversionProposal_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ToggleTokenConversionProposal(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". -// UnaryRPC :call MsgServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. -func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MsgServer) error { - - mux.Handle("GET", pattern_Msg_ConvertCoin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_ConvertCoin_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ConvertCoin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_ConvertERC20_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_ConvertERC20_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ConvertERC20_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_UpdateParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_UpdateParams_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_UpdateParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_RegisterCoinProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_RegisterCoinProposal_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_RegisterCoinProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_RegisterERC20Proposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_RegisterERC20Proposal_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_RegisterERC20Proposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_ToggleTokenConversionProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_ToggleTokenConversionProposal_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ToggleTokenConversionProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterMsgHandlerFromEndpoint is same as RegisterMsgHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterMsgHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterMsgHandler(ctx, mux, conn) -} - -// RegisterMsgHandler registers the http handlers for service Msg to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterMsgHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterMsgHandlerClient(ctx, mux, NewMsgClient(conn)) -} - -// RegisterMsgHandlerClient registers the http handlers for service Msg -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MsgClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MsgClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MsgClient" to call the correct interceptors. -func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MsgClient) error { - - mux.Handle("GET", pattern_Msg_ConvertCoin_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_ConvertCoin_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ConvertCoin_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_ConvertERC20_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_ConvertERC20_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ConvertERC20_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_UpdateParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_UpdateParams_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_UpdateParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_RegisterCoinProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_RegisterCoinProposal_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_RegisterCoinProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_RegisterERC20Proposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_RegisterERC20Proposal_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_RegisterERC20Proposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Msg_ToggleTokenConversionProposal_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_ToggleTokenConversionProposal_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_ToggleTokenConversionProposal_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Msg_ConvertCoin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "convert_coin"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Msg_ConvertERC20_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "convert_erc20"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Msg_UpdateParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "update_params"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Msg_RegisterCoinProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_coin"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Msg_RegisterERC20Proposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "register_erc20"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_Msg_ToggleTokenConversionProposal_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"canto", "erc20", "v1", "tx", "toggle_token_conversion"}, "", runtime.AssumeColonVerbOpt(false))) -) - -var ( - forward_Msg_ConvertCoin_0 = runtime.ForwardResponseMessage - - forward_Msg_ConvertERC20_0 = runtime.ForwardResponseMessage - - forward_Msg_UpdateParams_0 = runtime.ForwardResponseMessage - - forward_Msg_RegisterCoinProposal_0 = runtime.ForwardResponseMessage - - forward_Msg_RegisterERC20Proposal_0 = runtime.ForwardResponseMessage - - forward_Msg_ToggleTokenConversionProposal_0 = runtime.ForwardResponseMessage -) diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index 22a0dd6f4..1db65c8c2 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -25,6 +25,7 @@ type ( accKeeper types.AccountKeeper erc20Keeper types.ERC20Keeper govKeeper *govkeeper.Keeper + authority string } ) @@ -54,6 +55,11 @@ func NewKeeper( } } +// GetAuthority returns the x/erc20 module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } diff --git a/x/govshuttle/keeper/msg_server.go b/x/govshuttle/keeper/msg_server.go index 77baed455..f8e207752 100644 --- a/x/govshuttle/keeper/msg_server.go +++ b/x/govshuttle/keeper/msg_server.go @@ -1,7 +1,12 @@ package keeper import ( + "context" + + errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" + sdk "github.com/cosmos/cosmos-sdk/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) type msgServer struct { @@ -15,3 +20,55 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { } var _ types.MsgServer = msgServer{} + +func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + //if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + //} + + return &types.MsgUpdateParamsResponse{}, nil +} + +func (k Keeper) LendingMarketProposal(goCtx context.Context, req *types.MsgLendingMarketProposal) (*types.MsgLendingMarketProposalResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + legacyProposal := types.LendingMarketProposal{ + Title: req.Title, + Description: req.Description, + Metadata: req.Metadata, + } + + _, err := k.AppendLendingMarketProposal(ctx, &legacyProposal) + if err != nil { + return nil, err + } + + return &types.MsgLendingMarketProposalResponse{}, nil +} + +func (k Keeper) TreasuryProposal(goCtx context.Context, req *types.MsgTreasuryProposal) (*types.MsgTreasuryProposalResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + legacyTreasuryProposal := types.TreasuryProposal{ + Title: req.Title, + Description: req.Description, + Metadata: req.Metadata, + } + + legacyProposal := legacyTreasuryProposal.FromTreasuryToLendingMarket() + + _, err := k.AppendLendingMarketProposal(ctx, legacyProposal) + if err != nil { + return nil, err + } + + return &types.MsgTreasuryProposalResponse{}, nil +} diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index 95adc2b88..d6d9d8226 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -35,10 +35,10 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type MsgLendingMarketProposal struct { // authority is the address that controls the module (defaults to x/gov unless // overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Metadata *TreasuryProposalMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Metadata *LendingMarketMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (m *MsgLendingMarketProposal) Reset() { *m = MsgLendingMarketProposal{} } @@ -95,7 +95,7 @@ func (m *MsgLendingMarketProposal) GetDescription() string { return "" } -func (m *MsgLendingMarketProposal) GetMetadata() *TreasuryProposalMetadata { +func (m *MsgLendingMarketProposal) GetMetadata() *LendingMarketMetadata { if m != nil { return m.Metadata } @@ -353,46 +353,43 @@ func init() { func init() { proto.RegisterFile("canto/govshuttle/v1/tx.proto", fileDescriptor_d69de145343701ce) } var fileDescriptor_d69de145343701ce = []byte{ - // 617 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x94, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0xc7, 0xb3, 0xa9, 0x2d, 0x76, 0x2a, 0xa8, 0xdb, 0x96, 0x6e, 0xb6, 0x75, 0x1b, 0x96, 0x8a, - 0x31, 0x9a, 0x9d, 0x26, 0x5a, 0x0b, 0x3d, 0x08, 0xc6, 0x93, 0xe0, 0x96, 0x12, 0xf5, 0xe2, 0x25, - 0x4c, 0xb3, 0xc3, 0x64, 0x69, 0x76, 0x67, 0xd9, 0x99, 0xc4, 0xe6, 0x26, 0x39, 0x8a, 0x07, 0xc5, - 0x2f, 0xa0, 0x37, 0x8f, 0x01, 0xc5, 0xcf, 0xd0, 0x63, 0xd1, 0x8b, 0x27, 0x91, 0x44, 0x88, 0x5f, - 0x42, 0x90, 0x9d, 0xdd, 0x6e, 0x62, 0xba, 0x0b, 0xd5, 0x9b, 0x97, 0xb0, 0xf3, 0xde, 0xfb, 0xbf, - 0xf7, 0x7b, 0x7f, 0x32, 0x03, 0xd6, 0x1a, 0xc8, 0xe5, 0x14, 0x12, 0xda, 0x61, 0xcd, 0x36, 0xe7, - 0x2d, 0x0c, 0x3b, 0x65, 0xc8, 0x0f, 0x0d, 0xcf, 0xa7, 0x9c, 0xca, 0x8b, 0x22, 0x6b, 0x8c, 0xb3, - 0x46, 0xa7, 0xac, 0xae, 0x11, 0x4a, 0x49, 0x0b, 0x43, 0xe4, 0xd9, 0x10, 0xb9, 0x2e, 0xe5, 0x88, - 0xdb, 0xd4, 0x65, 0xa1, 0x44, 0x5d, 0x22, 0x94, 0x50, 0xf1, 0x09, 0x83, 0xaf, 0x28, 0xba, 0xd2, - 0xa0, 0xcc, 0xa1, 0x0c, 0x3a, 0x8c, 0x04, 0x03, 0x1c, 0x46, 0xa2, 0x44, 0x2e, 0x4c, 0xd4, 0x43, - 0x45, 0x78, 0x88, 0x52, 0x97, 0x91, 0x63, 0xbb, 0x14, 0x8a, 0xdf, 0x28, 0xb4, 0x91, 0x44, 0x3b, - 0x41, 0x27, 0xaa, 0xf4, 0x97, 0x59, 0xa0, 0x98, 0x8c, 0x3c, 0xc4, 0xae, 0x65, 0xbb, 0xc4, 0x44, - 0xfe, 0x01, 0xe6, 0x7b, 0x3e, 0xf5, 0x28, 0x43, 0x2d, 0xf9, 0x0e, 0x98, 0x47, 0x6d, 0xde, 0xa4, - 0xbe, 0xcd, 0xbb, 0x8a, 0x94, 0x97, 0x0a, 0xf3, 0x55, 0xe5, 0xf3, 0xc7, 0xd2, 0x52, 0x34, 0xfa, - 0x9e, 0x65, 0xf9, 0x98, 0xb1, 0x47, 0xdc, 0xb7, 0x5d, 0x52, 0x1b, 0x97, 0xca, 0x4b, 0x60, 0x96, - 0xdb, 0xbc, 0x85, 0x95, 0x6c, 0xa0, 0xa9, 0x85, 0x07, 0x39, 0x0f, 0x16, 0x2c, 0xcc, 0x1a, 0xbe, - 0xed, 0x05, 0x1e, 0x28, 0x33, 0x22, 0x37, 0x19, 0x92, 0x1f, 0x80, 0xf3, 0x0e, 0xe6, 0xc8, 0x42, - 0x1c, 0x29, 0xe7, 0xf2, 0x52, 0x61, 0xa1, 0x52, 0x32, 0x12, 0x5c, 0x35, 0x1e, 0xfb, 0x18, 0xb1, - 0xb6, 0xdf, 0x3d, 0x01, 0x35, 0x23, 0x51, 0x2d, 0x96, 0xef, 0x6c, 0xfd, 0x7c, 0xbb, 0x9e, 0xe9, - 0x8d, 0xfa, 0xc5, 0x31, 0xd6, 0x8b, 0x51, 0xbf, 0xa8, 0x85, 0xa6, 0xa4, 0x6d, 0xac, 0xeb, 0x20, - 0x9f, 0x96, 0xab, 0x61, 0xe6, 0x51, 0x97, 0x61, 0xbd, 0x97, 0x05, 0x8b, 0x26, 0x23, 0xd3, 0x10, - 0xff, 0xb3, 0x5b, 0x9b, 0xc9, 0x6e, 0xe5, 0x62, 0xb7, 0xa6, 0x7b, 0xe8, 0x57, 0xc0, 0x6a, 0x42, - 0x38, 0xf6, 0xe8, 0x83, 0x04, 0x2e, 0x9a, 0x8c, 0x3c, 0xf1, 0x2c, 0xc4, 0xf1, 0x1e, 0xf2, 0x91, - 0xc3, 0xfe, 0xd9, 0x9f, 0xbb, 0x60, 0xce, 0x13, 0x1d, 0x84, 0x41, 0x0b, 0x95, 0xd5, 0xc4, 0x2d, - 0xc3, 0x21, 0xd5, 0xf9, 0xa3, 0x6f, 0xeb, 0x99, 0xf7, 0xa3, 0x7e, 0x51, 0xaa, 0x45, 0xaa, 0x9d, - 0xc2, 0xe9, 0xc5, 0x96, 0xe3, 0xc5, 0x26, 0x09, 0xf5, 0x1c, 0x58, 0x99, 0x0a, 0x9d, 0x2c, 0x54, - 0xf9, 0x35, 0x03, 0x66, 0x4c, 0x46, 0xe4, 0xd7, 0x12, 0xb8, 0xf0, 0xc7, 0x56, 0x1b, 0x89, 0x34, - 0x53, 0x6d, 0xd4, 0x9b, 0x67, 0xa9, 0x8a, 0xdd, 0x2b, 0xf5, 0xbe, 0xfc, 0x78, 0x93, 0xbd, 0x26, - 0x5f, 0x85, 0xc9, 0x2f, 0x0e, 0x6c, 0x0b, 0x55, 0x3d, 0x5c, 0x50, 0xfe, 0x24, 0x81, 0xe5, 0xe4, - 0x0b, 0x5c, 0x4a, 0x1b, 0x9b, 0x58, 0xae, 0x6e, 0xfd, 0x55, 0x79, 0x8c, 0xbb, 0x2d, 0x70, 0xcb, - 0x32, 0x4c, 0xc3, 0x6d, 0x85, 0xf2, 0xba, 0x23, 0xf4, 0xc1, 0xfb, 0x15, 0xe2, 0xbd, 0x93, 0xc0, - 0xa5, 0x53, 0xd7, 0xa8, 0x90, 0x06, 0x31, 0x5d, 0xa9, 0x6e, 0x9e, 0xb5, 0x32, 0x26, 0x2d, 0x0b, - 0xd2, 0x1b, 0xf2, 0xf5, 0x34, 0x52, 0x1e, 0x29, 0x63, 0x46, 0x75, 0xf6, 0x79, 0xf0, 0x67, 0xaa, - 0xee, 0x1e, 0x0d, 0x34, 0xe9, 0x78, 0xa0, 0x49, 0xdf, 0x07, 0x9a, 0xf4, 0x6a, 0xa8, 0x65, 0x8e, - 0x87, 0x5a, 0xe6, 0xeb, 0x50, 0xcb, 0x3c, 0xbd, 0x4d, 0x6c, 0xde, 0x6c, 0xef, 0x1b, 0x0d, 0xea, - 0xc0, 0xfb, 0x41, 0xd7, 0xd2, 0x2e, 0xe6, 0xcf, 0xa8, 0x7f, 0x10, 0x9e, 0x60, 0x67, 0x1b, 0x1e, - 0x4e, 0x0e, 0xe2, 0x5d, 0x0f, 0xb3, 0xfd, 0x39, 0xf1, 0xfc, 0xde, 0xfa, 0x1d, 0x00, 0x00, 0xff, - 0xff, 0x2c, 0xa9, 0x6b, 0xba, 0x54, 0x06, 0x00, 0x00, + // 574 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0x8d, 0xd3, 0xaf, 0xd5, 0x97, 0x09, 0x12, 0xe0, 0xa6, 0xaa, 0xe3, 0x16, 0x37, 0xb2, 0xba, + 0x88, 0x22, 0xe2, 0x69, 0x03, 0x05, 0xa9, 0x0b, 0x24, 0x82, 0x84, 0x84, 0x84, 0xab, 0x2a, 0xc0, + 0x86, 0x0d, 0x9a, 0xc4, 0xa3, 0x89, 0xd5, 0xd8, 0x63, 0xcd, 0x4c, 0x42, 0xb3, 0x40, 0x42, 0xdd, + 0xc1, 0x8a, 0x47, 0x60, 0xc9, 0x32, 0x12, 0x3c, 0x44, 0x97, 0x15, 0x2b, 0x56, 0x80, 0x92, 0x45, + 0x78, 0x0c, 0xe4, 0x9f, 0xfc, 0xd4, 0x99, 0x48, 0x85, 0x0d, 0x1b, 0x6b, 0xee, 0x3d, 0xe7, 0xde, + 0x7b, 0xee, 0xb1, 0x3d, 0x60, 0xbb, 0x85, 0x7c, 0x41, 0x21, 0xa1, 0x3d, 0xde, 0xee, 0x0a, 0xd1, + 0xc1, 0xb0, 0xb7, 0x0f, 0xc5, 0xa9, 0x15, 0x30, 0x2a, 0xa8, 0xba, 0x1e, 0xa1, 0xd6, 0x0c, 0xb5, + 0x7a, 0xfb, 0xfa, 0x36, 0xa1, 0x94, 0x74, 0x30, 0x44, 0x81, 0x0b, 0x91, 0xef, 0x53, 0x81, 0x84, + 0x4b, 0x7d, 0x1e, 0x97, 0xe8, 0x05, 0x42, 0x09, 0x8d, 0x8e, 0x30, 0x3c, 0x25, 0xd9, 0xcd, 0x16, + 0xe5, 0x1e, 0xe5, 0xd0, 0xe3, 0x24, 0x1c, 0xe0, 0x71, 0x92, 0x00, 0xc5, 0x18, 0x78, 0x15, 0x57, + 0xc4, 0x41, 0x02, 0xdd, 0x44, 0x9e, 0xeb, 0x53, 0x18, 0x3d, 0x93, 0xd4, 0xae, 0x4c, 0xed, 0x9c, + 0xba, 0x88, 0x65, 0xbe, 0xcb, 0x02, 0xcd, 0xe6, 0xe4, 0x29, 0xf6, 0x1d, 0xd7, 0x27, 0x36, 0x62, + 0x27, 0x58, 0x1c, 0x33, 0x1a, 0x50, 0x8e, 0x3a, 0xea, 0x3d, 0x90, 0x43, 0x5d, 0xd1, 0xa6, 0xcc, + 0x15, 0x7d, 0x4d, 0x29, 0x29, 0xe5, 0x5c, 0x5d, 0xfb, 0xfa, 0xa5, 0x5a, 0x48, 0x46, 0x3f, 0x74, + 0x1c, 0x86, 0x39, 0x7f, 0x26, 0x98, 0xeb, 0x93, 0xc6, 0x8c, 0xaa, 0x16, 0xc0, 0xaa, 0x70, 0x45, + 0x07, 0x6b, 0xd9, 0xb0, 0xa6, 0x11, 0x07, 0x6a, 0x09, 0xe4, 0x1d, 0xcc, 0x5b, 0xcc, 0x0d, 0x42, + 0x0f, 0xb4, 0x95, 0x08, 0x9b, 0x4f, 0xa9, 0x8f, 0xc1, 0xff, 0x1e, 0x16, 0xc8, 0x41, 0x02, 0x69, + 0xff, 0x95, 0x94, 0x72, 0xbe, 0x56, 0xb1, 0x24, 0xae, 0x5a, 0x97, 0xd4, 0xda, 0x49, 0x45, 0x63, + 0x5a, 0x7b, 0x78, 0xf0, 0xeb, 0xe3, 0x4e, 0xe6, 0x6c, 0x3c, 0xa8, 0xcc, 0x34, 0xbd, 0x1f, 0x0f, + 0x2a, 0x46, 0xec, 0xc8, 0xb2, 0x75, 0x4d, 0x13, 0x94, 0x96, 0x61, 0x0d, 0xcc, 0x03, 0xea, 0x73, + 0x6c, 0x9e, 0x65, 0xc1, 0xba, 0xcd, 0xc9, 0x73, 0x86, 0x11, 0xef, 0xb2, 0xfe, 0x3f, 0xb3, 0xea, + 0xc9, 0x82, 0x55, 0x55, 0xa9, 0x55, 0x69, 0xa1, 0x12, 0xb7, 0xf6, 0xe4, 0x6e, 0x15, 0xa7, 0x6e, + 0xa5, 0x7b, 0x98, 0xb7, 0xc0, 0x96, 0x24, 0x3d, 0xf5, 0xe8, 0xb3, 0x02, 0xae, 0xdb, 0x9c, 0xbc, + 0x08, 0x1c, 0x24, 0xf0, 0x31, 0x62, 0xc8, 0xe3, 0x7f, 0xed, 0xcf, 0x03, 0xb0, 0x16, 0x44, 0x1d, + 0x22, 0x83, 0xf2, 0xb5, 0x2d, 0xe9, 0x96, 0xf1, 0x90, 0x7a, 0xee, 0xfc, 0xfb, 0x4e, 0xe6, 0xd3, + 0x78, 0x50, 0x51, 0x1a, 0x49, 0xd5, 0x61, 0x79, 0x71, 0xb1, 0x8d, 0xe9, 0x62, 0xf3, 0x0a, 0xcd, + 0x22, 0xd8, 0x4c, 0xa5, 0x26, 0x0b, 0xd5, 0x7e, 0x64, 0xc1, 0x8a, 0xcd, 0x89, 0xda, 0x04, 0xd7, + 0x2e, 0x2d, 0xb5, 0x2b, 0x15, 0x93, 0xea, 0xa2, 0xdf, 0xbe, 0x0a, 0x6b, 0x32, 0x4b, 0x7d, 0x03, + 0x36, 0xe4, 0x3f, 0x63, 0x75, 0x59, 0x1b, 0x29, 0x5d, 0x3f, 0xf8, 0x23, 0xfa, 0x74, 0xbc, 0x0f, + 0x6e, 0x2c, 0x7c, 0xdb, 0xe5, 0x65, 0xad, 0xd2, 0x4c, 0x7d, 0xef, 0xaa, 0xcc, 0xc9, 0x3c, 0x7d, + 0xf5, 0x6d, 0xf8, 0xba, 0xea, 0x47, 0xe7, 0x43, 0x43, 0xb9, 0x18, 0x1a, 0xca, 0xcf, 0xa1, 0xa1, + 0x7c, 0x18, 0x19, 0x99, 0x8b, 0x91, 0x91, 0xf9, 0x36, 0x32, 0x32, 0x2f, 0xef, 0x12, 0x57, 0xb4, + 0xbb, 0x4d, 0xab, 0x45, 0x3d, 0xf8, 0x28, 0x6c, 0x5e, 0x3d, 0xc2, 0xe2, 0x35, 0x65, 0x27, 0x71, + 0x04, 0x7b, 0xf7, 0xe1, 0xe9, 0xfc, 0x25, 0x27, 0xfa, 0x01, 0xe6, 0xcd, 0xb5, 0xe8, 0x76, 0xbb, + 0xf3, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x38, 0x12, 0xbe, 0xe5, 0xb3, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1034,7 +1031,7 @@ func (m *MsgLendingMarketProposal) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Metadata == nil { - m.Metadata = &TreasuryProposalMetadata{} + m.Metadata = &LendingMarketMetadata{} } if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err From 81ac1774f553539677df3541381fd459de610c43 Mon Sep 17 00:00:00 2001 From: poorphd Date: Wed, 7 Feb 2024 18:05:39 +0900 Subject: [PATCH 62/96] fix: upgrade handler --- app/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 5fe93b6ef..ce02c6a05 100644 --- a/app/app.go +++ b/app/app.go @@ -1452,7 +1452,7 @@ func (app *Canto) setupUpgradeHandlers() { case v8.UpgradeName: setupLegacyKeyTables(&app.ParamsKeeper) storeUpgrades = &storetypes.StoreUpgrades{ - Added: []string{crisistypes.StoreKey, consensusparamtypes.StoreKey}, + Added: []string{crisistypes.StoreKey, consensusparamtypes.StoreKey, ibcfeetypes.StoreKey}, } } From d6d1b640bf141c5fc105f12f56f22c4d58c79a97 Mon Sep 17 00:00:00 2001 From: poorphd Date: Thu, 8 Feb 2024 16:31:24 +0900 Subject: [PATCH 63/96] fix: proposal --- x/erc20/keeper/msg_server_test.go | 2 +- x/erc20/keeper/proposals_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 3d5642d8e..7c51eb627 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -711,7 +711,7 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeERC20() { suite.Require().NotNil(contractAddr) suite.Commit() - coinName = keeper.CreateDenom(contractAddr.String()) + coinName = types.CreateDenom(contractAddr.String()) sender := sdk.AccAddress(suite.address.Bytes()) msg := types.NewMsgConvertERC20( sdkmath.NewInt(tc.transfer), diff --git a/x/erc20/keeper/proposals_test.go b/x/erc20/keeper/proposals_test.go index 37c2d4ff4..42e972d8a 100644 --- a/x/erc20/keeper/proposals_test.go +++ b/x/erc20/keeper/proposals_test.go @@ -264,7 +264,7 @@ func (suite KeeperTestSuite) TestRegisterERC20() { contractAddr, err = suite.DeployContract(erc20Name, erc20Symbol, cosmosDecimals) suite.Require().NoError(err) suite.Commit() - coinName := keeper.CreateDenom(contractAddr.String()) + coinName := types.CreateDenom(contractAddr.String()) pair = types.NewTokenPair(contractAddr, coinName, true, types.OWNER_EXTERNAL) tc.malleate() From 8f1c7bf96cc4d6b1704acafb2ee2082ca98a7254 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Tue, 26 Mar 2024 16:09:18 +0900 Subject: [PATCH 64/96] feat: bump up cosmos-sdk v0.50.5 --- go.mod | 105 +++++++++++++------------ go.sum | 243 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 178 insertions(+), 170 deletions(-) diff --git a/go.mod b/go.mod index cd716a7b8..4c7efa53a 100644 --- a/go.mod +++ b/go.mod @@ -5,23 +5,23 @@ go 1.21 toolchain go1.21.4 require ( - cosmossdk.io/api v0.7.2 + cosmossdk.io/api v0.7.3 cosmossdk.io/client/v2 v2.0.0-beta.1 cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.12.0 - cosmossdk.io/log v1.3.0 + cosmossdk.io/log v1.3.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced cosmossdk.io/store v1.0.2 cosmossdk.io/tools/confix v0.1.0 cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.0 + cosmossdk.io/x/tx v0.13.1 cosmossdk.io/x/upgrade v0.1.0 - github.com/cometbft/cometbft v0.38.2 - github.com/cosmos/cosmos-db v1.0.0 - github.com/cosmos/cosmos-proto v1.0.0-beta.3 - github.com/cosmos/cosmos-sdk v0.50.3 + github.com/cometbft/cometbft v0.38.5 + github.com/cosmos/cosmos-db v1.0.2 + github.com/cosmos/cosmos-proto v1.0.0-beta.4 + github.com/cosmos/cosmos-sdk v0.50.5 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0 @@ -30,7 +30,7 @@ require ( github.com/ethereum/go-ethereum v1.10.26 github.com/evmos/ethermint v0.19.3 github.com/gogo/protobuf v1.3.2 - github.com/golang/protobuf v1.5.3 + github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.2 @@ -38,22 +38,22 @@ require ( github.com/onsi/gomega v1.27.6 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 - github.com/spf13/cast v1.5.1 + github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.opencensus.io v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f - google.golang.org/grpc v1.60.1 - google.golang.org/protobuf v1.32.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 + google.golang.org/grpc v1.62.0 + google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.110.10 // indirect - cloud.google.com/go/compute v1.23.3 // indirect + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/storage v1.30.1 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.36.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -68,7 +68,7 @@ require ( github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect @@ -79,11 +79,12 @@ require ( github.com/creachadair/atomicfile v0.3.1 // indirect github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.2.0 // indirect - github.com/emicklei/dot v1.6.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/getsentry/sentry-go v0.25.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -106,18 +107,17 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/linxGnu/grocksdb v1.8.6 // indirect + github.com/linxGnu/grocksdb v1.8.12 // indirect github.com/manifoldco/promptui v0.9.0 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect @@ -127,14 +127,19 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/ledger-go v0.14.3 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect + go.opentelemetry.io/otel v1.22.0 // indirect + go.opentelemetry.io/otel/metric v1.22.0 // indirect + go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/oauth2 v0.13.0 // indirect - golang.org/x/tools v0.15.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.149.0 // indirect + golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/api v0.162.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect gotest.tools/v3 v3.5.1 // indirect pgregory.net/rapid v1.1.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect @@ -142,7 +147,7 @@ require ( require ( cosmossdk.io/errors v1.0.1 - cosmossdk.io/math v1.2.0 + cosmossdk.io/math v1.3.0 filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/zstd v1.5.5 // indirect @@ -156,7 +161,7 @@ require ( github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/iavl v1.0.0 // indirect + github.com/cosmos/iavl v1.0.1 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set v1.8.0 // indirect @@ -168,7 +173,7 @@ require ( github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91 // indirect github.com/dop251/goja v0.0.0-20220405120441-9037c2b61cbf // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect @@ -182,7 +187,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect @@ -198,7 +203,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.4 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -212,20 +217,20 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.17.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.47.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/prometheus/tsdb v0.10.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rjeczalik/notify v0.9.2 // indirect github.com/rs/cors v1.10.1 // indirect - github.com/rs/zerolog v1.31.0 // indirect + github.com/rs/zerolog v1.32.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/spf13/afero v1.10.0 // indirect + github.com/spf13/afero v1.11.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.17.0 + github.com/spf13/viper v1.18.2 github.com/status-im/keycard-go v0.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -233,12 +238,12 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/zondax/hid v0.9.2 // indirect go.etcd.io/bbolt v1.3.8 // indirect - golang.org/x/crypto v0.16.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa - golang.org/x/net v0.19.0 // indirect - golang.org/x/sync v0.5.0 - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 + golang.org/x/net v0.21.0 // indirect + golang.org/x/sync v0.6.0 + golang.org/x/sys v0.17.0 // indirect + golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect @@ -249,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index f16823b39..564035c6e 100644 --- a/go.sum +++ b/go.sum @@ -3,7 +3,6 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -16,7 +15,6 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -32,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -70,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= -cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -111,8 +109,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -170,12 +168,11 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -187,8 +184,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.2 h1:BO3i5fvKMKvfaUiMkCznxViuBEfyWA/k6w2eAF6q1C4= -cosmossdk.io/api v0.7.2/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.3 h1:V815i8YOwOAQa1rLCsSMjVG5Gnzs02JLq+l7ks8s1jk= +cosmossdk.io/api v0.7.3/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= @@ -199,10 +196,10 @@ cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98ok cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.0 h1:L0Z0XstClo2kOU4h3V1iDoE5Ji64sg5HLOogzGg67Oo= -cosmossdk.io/log v1.3.0/go.mod h1:HIDyvWLqZe2ovlWabsDN4aPMpY/nUEquAhgfTf2ZzB8= -cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= -cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= +cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced h1:l5rW4cKGOGyo2ZinzmuhleebC5OpMEv3qsabKyRXUV0= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced/go.mod h1:EdpAqccZXp8XnV2FFMCdEt+Xq+3pbzIb2KzGAyi6GGc= cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= @@ -217,8 +214,8 @@ cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c h1:EFBlwazEIqkvKV5L1JfQZ6lhUJF9cMguAqQk1xSmbfM= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c/go.mod h1:PELWSey8Y7pq8iSgqEav82APBbgMb/SDbbjyuP8tvWc= -cosmossdk.io/x/tx v0.13.0 h1:8lzyOh3zONPpZv2uTcUmsv0WTXy6T1/aCVDCqShmpzU= -cosmossdk.io/x/tx v0.13.0/go.mod h1:CpNQtmoqbXa33/DVxWQNx5Dcnbkv2xGUhL7tYQ5wUsY= +cosmossdk.io/x/tx v0.13.1 h1:Mg+EMp67Pz+NukbJqYxuo8uRp7N/a9uR+oVS9pONtj8= +cosmossdk.io/x/tx v0.13.1/go.mod h1:CBCU6fsRVz23QGFIQBb1DNX2DztJCf3jWyEkHY2nJQ0= cosmossdk.io/x/upgrade v0.1.0 h1:z1ZZG4UL9ICTNbJDYZ6jOnF9GdEK9wyoEFi4BUScHXE= cosmossdk.io/x/upgrade v0.1.0/go.mod h1:/6jjNGbiPCNtmA1N+rBtP601sr0g4ZXuj3yC6ClPCGY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -235,8 +232,8 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= @@ -275,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906 h1:bxyMiyxlfQ9ItahUdDv0Auz7Wgs15MpyqPHF0x2cJyQ= -github.com/b-harvest/ethermint v0.0.0-20240123055858-d654db42d906/go.mod h1:IB0HAZP7DLOO4vVQB4ro1rCepf6UdfM0zXRuLxEl4jQ= +github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a h1:nhd08s7VShhOKzHfFWLwqB+e0QfebgIktk99vrEmqaM= +github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a/go.mod h1:RCk8XMeT47RKxOAeaz35Gct1bYt9nNwrF+Uw913WM84= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -353,6 +350,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= +github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -362,8 +361,8 @@ github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZ github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a h1:X736kLTBU9S4kkBma7KBac16E4UBImQmlHLtvPi4VBY= -github.com/cockroachdb/pebble v0.0.0-20231119032537-b9be64b88e6a/go.mod h1:acMRUGd/BK8AUmQNK3spUCCGzFLZU2bSST3NMXSq2Kc= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -371,8 +370,8 @@ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1: github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.38.2 h1:io0JCh5EPxINKN5ZMI5hCdpW3QVZRy+o8qWe3mlJa/8= -github.com/cometbft/cometbft v0.38.2/go.mod h1:PIi48BpzwlHqtV3mzwPyQgOyOnU94BNBimLS2ebBHOg= +github.com/cometbft/cometbft v0.38.5 h1:4lOcK5VTPrfbLOhNHmPYe6c7eDXHtBdMCQuKbAfFJdU= +github.com/cometbft/cometbft v0.38.5/go.mod h1:0tqKin+KQs8zDwzYD8rPHzSBIDNPuB4NrwwGDNb/hUg= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -385,12 +384,12 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0E= -github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= -github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= -github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.50.3 h1:zP0AXm54ws2t2qVWvcQhEYVafhOAREU2QL0gnbwjvXw= -github.com/cosmos/cosmos-sdk v0.50.3/go.mod h1:tlrkY1sntOt1q0OX/rqF0zRJtmXNoffAS6VFTcky+w8= +github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= +github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= +github.com/cosmos/cosmos-sdk v0.50.5 h1:MOEi+DKYgW67YaPgB+Pf+nHbD3V9S/ayitRKJYLfGIA= +github.com/cosmos/cosmos-sdk v0.50.5/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= @@ -398,8 +397,8 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= -github.com/cosmos/iavl v1.0.0 h1:bw6t0Mv/mVCJvlMTOPHWLs5uUE3BRBfVWCRelOzl+so= -github.com/cosmos/iavl v1.0.0/go.mod h1:CmTGqMnRnucjxbjduneZXT+0vPgNElYvdefjX2q9tYc= +github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= +github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ibc-go/v8 v8.0.0 h1:QKipnr/NGwc+9L7NZipURvmSIu+nw9jOIWTJuDBqOhg= @@ -466,15 +465,15 @@ github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:Htrtb github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= -github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.6.0 h1:vUzuoVE8ipzS7QkES4UfxdpCwdU2U97m2Pb2tQCoYRY= -github.com/emicklei/dot v1.6.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -486,6 +485,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -500,16 +501,16 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getsentry/sentry-go v0.25.0 h1:q6Eo+hS+yoJlTO3uu/azhQadsD8V+jQn2D8VvX1eOyI= -github.com/getsentry/sentry-go v0.25.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= @@ -531,8 +532,11 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -603,8 +607,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -653,7 +657,6 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -667,8 +670,8 @@ github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -686,7 +689,6 @@ github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMd github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= @@ -817,11 +819,10 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= -github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -838,8 +839,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.6 h1:O7I6SIGPrypf3f/gmrrLUBQDKfO8uOoYdWf4gLS06tc= -github.com/linxGnu/grocksdb v1.8.6/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/linxGnu/grocksdb v1.8.12 h1:1/pCztQUOa3BX/1gR3jSZDoaKFpeHFvQ1XrqZpSvZVo= +github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -864,8 +865,6 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= @@ -968,7 +967,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -979,24 +977,24 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= +github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1018,22 +1016,22 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= -github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= +github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= -github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= @@ -1059,11 +1057,11 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= -github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= @@ -1074,8 +1072,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= -github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1084,8 +1082,9 @@ github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5J github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1096,8 +1095,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= @@ -1163,6 +1163,18 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= +go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= +go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= +go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= +go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1189,11 +1201,9 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1205,8 +1215,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1233,8 +1243,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1277,14 +1287,12 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1297,8 +1305,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1324,8 +1332,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1340,8 +1348,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1400,14 +1408,12 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1443,13 +1449,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1467,8 +1473,8 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1524,7 +1530,6 @@ golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -1532,8 +1537,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1592,8 +1597,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.149.0 h1:b2CqT6kG+zqJIVKRQ3ELJVLN1PwHZ6DJ3dW8yl82rgY= -google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= +google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1642,10 +1647,8 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1712,12 +1715,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= -google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= +google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c h1:NUsgEN92SQQqzfA+YtqYNqYmB3DMMYLlIwUZAQFVFbo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1759,8 +1762,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1777,8 +1780,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 4c1059c22c29eefd7025c4cc17f71d1b13f7d35f Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 22 Apr 2024 13:13:19 +0900 Subject: [PATCH 65/96] feat: Add update params for csr, inflation, onboarding modules --- api/canto/csr/v1/tx.pulsar.go | 1091 ++++++++++++++++++++ api/canto/csr/v1/tx_grpc.pb.go | 111 +++ api/canto/inflation/v1/tx.pulsar.go | 1096 ++++++++++++++++++++ api/canto/inflation/v1/tx_grpc.pb.go | 111 +++ api/canto/onboarding/v1/tx.pulsar.go | 1097 +++++++++++++++++++++ api/canto/onboarding/v1/tx_grpc.pb.go | 111 +++ app/app.go | 3 + proto/canto/csr/v1/tx.proto | 40 + proto/canto/inflation/v1/tx.proto | 40 + proto/canto/onboarding/v1/tx.proto | 40 + x/csr/keeper/keeper.go | 11 + x/csr/keeper/msg_server.go | 41 + x/csr/types/tx.pb.go | 601 +++++++++++ x/govshuttle/client/cli/tx.go | 9 +- x/inflation/keeper/keeper.go | 9 + x/inflation/keeper/msg_server.go | 41 + x/inflation/types/tx.pb.go | 601 +++++++++++ x/onboarding/keeper/ibc_callbacks_test.go | 4 +- x/onboarding/keeper/keeper.go | 9 + x/onboarding/keeper/msg_server.go | 41 + x/onboarding/types/tx.pb.go | 601 +++++++++++ 21 files changed, 5700 insertions(+), 8 deletions(-) create mode 100644 api/canto/csr/v1/tx.pulsar.go create mode 100644 api/canto/csr/v1/tx_grpc.pb.go create mode 100644 api/canto/inflation/v1/tx.pulsar.go create mode 100644 api/canto/inflation/v1/tx_grpc.pb.go create mode 100644 api/canto/onboarding/v1/tx.pulsar.go create mode 100644 api/canto/onboarding/v1/tx_grpc.pb.go create mode 100644 proto/canto/csr/v1/tx.proto create mode 100644 proto/canto/inflation/v1/tx.proto create mode 100644 proto/canto/onboarding/v1/tx.proto create mode 100644 x/csr/keeper/msg_server.go create mode 100644 x/csr/types/tx.pb.go create mode 100644 x/inflation/keeper/msg_server.go create mode 100644 x/inflation/types/tx.pb.go create mode 100644 x/onboarding/keeper/msg_server.go create mode 100644 x/onboarding/types/tx.pb.go diff --git a/api/canto/csr/v1/tx.pulsar.go b/api/canto/csr/v1/tx.pulsar.go new file mode 100644 index 000000000..d5bfddd0c --- /dev/null +++ b/api/canto/csr/v1/tx.pulsar.go @@ -0,0 +1,1091 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package csrv1 + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_csr_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_csr_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.csr.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.csr.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.csr.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.csr.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.csr.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.csr.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.csr.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.csr.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.csr.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.csr.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.csr.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.csr.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_csr_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_csr_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_csr_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.csr.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.csr.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.csr.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/csr/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/csr parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_csr_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_csr_v1_tx_proto_rawDescGZIP(), []int{1} +} + +var File_canto_csr_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_csr_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, + 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, + 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x0f, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, + 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x62, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x92, 0x01, 0x0a, 0x10, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x07, + 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x18, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_csr_v1_tx_proto_rawDescOnce sync.Once + file_canto_csr_v1_tx_proto_rawDescData = file_canto_csr_v1_tx_proto_rawDesc +) + +func file_canto_csr_v1_tx_proto_rawDescGZIP() []byte { + file_canto_csr_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_csr_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_csr_v1_tx_proto_rawDescData) + }) + return file_canto_csr_v1_tx_proto_rawDescData +} + +var file_canto_csr_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_csr_v1_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: canto.csr.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: canto.csr.v1.MsgUpdateParamsResponse + (*Params)(nil), // 2: canto.csr.v1.Params +} +var file_canto_csr_v1_tx_proto_depIdxs = []int32{ + 2, // 0: canto.csr.v1.MsgUpdateParams.params:type_name -> canto.csr.v1.Params + 0, // 1: canto.csr.v1.Msg.UpdateParams:input_type -> canto.csr.v1.MsgUpdateParams + 1, // 2: canto.csr.v1.Msg.UpdateParams:output_type -> canto.csr.v1.MsgUpdateParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_csr_v1_tx_proto_init() } +func file_canto_csr_v1_tx_proto_init() { + if File_canto_csr_v1_tx_proto != nil { + return + } + file_canto_csr_v1_params_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_csr_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_csr_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_csr_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_csr_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_csr_v1_tx_proto_depIdxs, + MessageInfos: file_canto_csr_v1_tx_proto_msgTypes, + }.Build() + File_canto_csr_v1_tx_proto = out.File + file_canto_csr_v1_tx_proto_rawDesc = nil + file_canto_csr_v1_tx_proto_goTypes = nil + file_canto_csr_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/csr/v1/tx_grpc.pb.go b/api/canto/csr/v1/tx_grpc.pb.go new file mode 100644 index 000000000..3028d82d7 --- /dev/null +++ b/api/canto/csr/v1/tx_grpc.pb.go @@ -0,0 +1,111 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/csr/v1/tx.proto + +package csrv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_UpdateParams_FullMethodName = "/canto.csr.v1.Msg/UpdateParams" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/csr module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // UpdateParams updates the parameters of the x/csr module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.csr.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/csr/v1/tx.proto", +} diff --git a/api/canto/inflation/v1/tx.pulsar.go b/api/canto/inflation/v1/tx.pulsar.go new file mode 100644 index 000000000..54c2c0e5e --- /dev/null +++ b/api/canto/inflation/v1/tx.pulsar.go @@ -0,0 +1,1096 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package inflationv1 + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_inflation_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_inflation_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.inflation.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.inflation.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.inflation.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.inflation.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.inflation.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.inflation.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.inflation.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.inflation.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.inflation.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.inflation.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.inflation.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.inflation.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_inflation_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_inflation_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_inflation_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.inflation.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.inflation.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.inflation.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/inflation/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/inflation parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_inflation_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_inflation_v1_tx_proto_rawDescGZIP(), []int{1} +} + +var File_canto_inflation_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_inflation_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, + 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, + 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, + 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x6e, + 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbc, + 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, + 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, + 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_canto_inflation_v1_tx_proto_rawDescOnce sync.Once + file_canto_inflation_v1_tx_proto_rawDescData = file_canto_inflation_v1_tx_proto_rawDesc +) + +func file_canto_inflation_v1_tx_proto_rawDescGZIP() []byte { + file_canto_inflation_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_inflation_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_inflation_v1_tx_proto_rawDescData) + }) + return file_canto_inflation_v1_tx_proto_rawDescData +} + +var file_canto_inflation_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_inflation_v1_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: canto.inflation.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: canto.inflation.v1.MsgUpdateParamsResponse + (*Params)(nil), // 2: canto.inflation.v1.Params +} +var file_canto_inflation_v1_tx_proto_depIdxs = []int32{ + 2, // 0: canto.inflation.v1.MsgUpdateParams.params:type_name -> canto.inflation.v1.Params + 0, // 1: canto.inflation.v1.Msg.UpdateParams:input_type -> canto.inflation.v1.MsgUpdateParams + 1, // 2: canto.inflation.v1.Msg.UpdateParams:output_type -> canto.inflation.v1.MsgUpdateParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_inflation_v1_tx_proto_init() } +func file_canto_inflation_v1_tx_proto_init() { + if File_canto_inflation_v1_tx_proto != nil { + return + } + file_canto_inflation_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_inflation_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_inflation_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_inflation_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_inflation_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_inflation_v1_tx_proto_depIdxs, + MessageInfos: file_canto_inflation_v1_tx_proto_msgTypes, + }.Build() + File_canto_inflation_v1_tx_proto = out.File + file_canto_inflation_v1_tx_proto_rawDesc = nil + file_canto_inflation_v1_tx_proto_goTypes = nil + file_canto_inflation_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/inflation/v1/tx_grpc.pb.go b/api/canto/inflation/v1/tx_grpc.pb.go new file mode 100644 index 000000000..adf60bb97 --- /dev/null +++ b/api/canto/inflation/v1/tx_grpc.pb.go @@ -0,0 +1,111 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/inflation/v1/tx.proto + +package inflationv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_UpdateParams_FullMethodName = "/canto.inflation.v1.Msg/UpdateParams" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/inflation module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // UpdateParams updates the parameters of the x/inflation module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.inflation.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/inflation/v1/tx.proto", +} diff --git a/api/canto/onboarding/v1/tx.pulsar.go b/api/canto/onboarding/v1/tx.pulsar.go new file mode 100644 index 000000000..3fc152f7b --- /dev/null +++ b/api/canto/onboarding/v1/tx.pulsar.go @@ -0,0 +1,1097 @@ +// Code generated by protoc-gen-go-pulsar. DO NOT EDIT. +package onboardingv1 + +import ( + _ "cosmossdk.io/api/amino" + _ "cosmossdk.io/api/cosmos/msg/v1" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + runtime "github.com/cosmos/cosmos-proto/runtime" + _ "github.com/cosmos/gogoproto/gogoproto" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + io "io" + reflect "reflect" + sync "sync" +) + +var ( + md_MsgUpdateParams protoreflect.MessageDescriptor + fd_MsgUpdateParams_authority protoreflect.FieldDescriptor + fd_MsgUpdateParams_params protoreflect.FieldDescriptor +) + +func init() { + file_canto_onboarding_v1_tx_proto_init() + md_MsgUpdateParams = File_canto_onboarding_v1_tx_proto.Messages().ByName("MsgUpdateParams") + fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") + fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) + +type fastReflection_MsgUpdateParams MsgUpdateParams + +func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(x) +} + +func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_tx_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} + +type fastReflection_MsgUpdateParams_messageType struct{} + +func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParams)(nil) +} +func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} +func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParams +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParams_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParams) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParams)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Authority != "" { + value := protoreflect.ValueOfString(x.Authority) + if !f(fd_MsgUpdateParams_authority, value) { + return + } + } + if x.Params != nil { + value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + if !f(fd_MsgUpdateParams_params, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.authority": + return x.Authority != "" + case "canto.onboarding.v1.MsgUpdateParams.params": + return x.Params != nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.authority": + x.Authority = "" + case "canto.onboarding.v1.MsgUpdateParams.params": + x.Params = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.authority": + value := x.Authority + return protoreflect.ValueOfString(value) + case "canto.onboarding.v1.MsgUpdateParams.params": + value := x.Params + return protoreflect.ValueOfMessage(value.ProtoReflect()) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.authority": + x.Authority = value.Interface().(string) + case "canto.onboarding.v1.MsgUpdateParams.params": + x.Params = value.Message().Interface().(*Params) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.params": + if x.Params == nil { + x.Params = new(Params) + } + return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) + case "canto.onboarding.v1.MsgUpdateParams.authority": + panic(fmt.Errorf("field authority of message canto.onboarding.v1.MsgUpdateParams is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "canto.onboarding.v1.MsgUpdateParams.authority": + return protoreflect.ValueOfString("") + case "canto.onboarding.v1.MsgUpdateParams.params": + m := new(Params) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParams")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParams does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.MsgUpdateParams", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParams) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Authority) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.Params != nil { + l = options.Size(x.Params) + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if x.Params != nil { + encoded, err := options.Marshal(x.Params) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x12 + } + if len(x.Authority) > 0 { + i -= len(x.Authority) + copy(dAtA[i:], x.Authority) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParams) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.Params == nil { + x.Params = &Params{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_MsgUpdateParamsResponse protoreflect.MessageDescriptor +) + +func init() { + file_canto_onboarding_v1_tx_proto_init() + md_MsgUpdateParamsResponse = File_canto_onboarding_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") +} + +var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) + +type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse + +func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(x) +} + +func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { + mi := &file_canto_onboarding_v1_tx_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType +var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} + +type fastReflection_MsgUpdateParamsResponse_messageType struct{} + +func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_MsgUpdateParamsResponse)(nil) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} +func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { + return md_MsgUpdateParamsResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { + return _fastReflection_MsgUpdateParamsResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { + return new(fastReflection_MsgUpdateParamsResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { + return (*MsgUpdateParamsResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.onboarding.v1.MsgUpdateParamsResponse")) + } + panic(fmt.Errorf("message canto.onboarding.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in canto.onboarding.v1.MsgUpdateParamsResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*MsgUpdateParamsResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: canto/onboarding/v1/tx.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type MsgUpdateParams struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/onboarding parameters to update. + // + // NOTE: All parameters must be supplied. + Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` +} + +func (x *MsgUpdateParams) Reset() { + *x = MsgUpdateParams{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_tx_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParams) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_tx_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgUpdateParams) GetAuthority() string { + if x != nil { + return x.Authority + } + return "" +} + +func (x *MsgUpdateParams) GetParams() *Params { + if x != nil { + return x.Params + } + return nil +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MsgUpdateParamsResponse) Reset() { + *x = MsgUpdateParamsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_canto_onboarding_v1_tx_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgUpdateParamsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgUpdateParamsResponse) ProtoMessage() {} + +// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return file_canto_onboarding_v1_tx_proto_rawDescGZIP(), []int{1} +} + +var File_canto_onboarding_v1_tx_proto protoreflect.FileDescriptor + +var file_canto_onboarding_v1_tx_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, + 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, + 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, + 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x32, 0x70, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x62, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, + 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, + 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x3b, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x43, 0x4f, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, + 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x4f, 0x6e, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_canto_onboarding_v1_tx_proto_rawDescOnce sync.Once + file_canto_onboarding_v1_tx_proto_rawDescData = file_canto_onboarding_v1_tx_proto_rawDesc +) + +func file_canto_onboarding_v1_tx_proto_rawDescGZIP() []byte { + file_canto_onboarding_v1_tx_proto_rawDescOnce.Do(func() { + file_canto_onboarding_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_canto_onboarding_v1_tx_proto_rawDescData) + }) + return file_canto_onboarding_v1_tx_proto_rawDescData +} + +var file_canto_onboarding_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_canto_onboarding_v1_tx_proto_goTypes = []interface{}{ + (*MsgUpdateParams)(nil), // 0: canto.onboarding.v1.MsgUpdateParams + (*MsgUpdateParamsResponse)(nil), // 1: canto.onboarding.v1.MsgUpdateParamsResponse + (*Params)(nil), // 2: canto.onboarding.v1.Params +} +var file_canto_onboarding_v1_tx_proto_depIdxs = []int32{ + 2, // 0: canto.onboarding.v1.MsgUpdateParams.params:type_name -> canto.onboarding.v1.Params + 0, // 1: canto.onboarding.v1.Msg.UpdateParams:input_type -> canto.onboarding.v1.MsgUpdateParams + 1, // 2: canto.onboarding.v1.Msg.UpdateParams:output_type -> canto.onboarding.v1.MsgUpdateParamsResponse + 2, // [2:3] is the sub-list for method output_type + 1, // [1:2] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_canto_onboarding_v1_tx_proto_init() } +func file_canto_onboarding_v1_tx_proto_init() { + if File_canto_onboarding_v1_tx_proto != nil { + return + } + file_canto_onboarding_v1_genesis_proto_init() + if !protoimpl.UnsafeEnabled { + file_canto_onboarding_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_canto_onboarding_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgUpdateParamsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_canto_onboarding_v1_tx_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_canto_onboarding_v1_tx_proto_goTypes, + DependencyIndexes: file_canto_onboarding_v1_tx_proto_depIdxs, + MessageInfos: file_canto_onboarding_v1_tx_proto_msgTypes, + }.Build() + File_canto_onboarding_v1_tx_proto = out.File + file_canto_onboarding_v1_tx_proto_rawDesc = nil + file_canto_onboarding_v1_tx_proto_goTypes = nil + file_canto_onboarding_v1_tx_proto_depIdxs = nil +} diff --git a/api/canto/onboarding/v1/tx_grpc.pb.go b/api/canto/onboarding/v1/tx_grpc.pb.go new file mode 100644 index 000000000..19823a298 --- /dev/null +++ b/api/canto/onboarding/v1/tx_grpc.pb.go @@ -0,0 +1,111 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: canto/onboarding/v1/tx.proto + +package onboardingv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Msg_UpdateParams_FullMethodName = "/canto.onboarding.v1.Msg/UpdateParams" +) + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/onboarding module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc.ClientConnInterface +} + +func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +// All implementations must embed UnimplementedMsgServer +// for forward compatibility +type MsgServer interface { + // UpdateParams updates the parameters of the x/onboarding module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + mustEmbedUnimplementedMsgServer() +} + +// UnimplementedMsgServer must be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {} + +// UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MsgServer will +// result in compilation errors. +type UnsafeMsgServer interface { + mustEmbedUnimplementedMsgServer() +} + +func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { + s.RegisterService(&Msg_ServiceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Msg_UpdateParams_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +// Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Msg_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "canto.onboarding.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/onboarding/v1/tx.proto", +} diff --git a/app/app.go b/app/app.go index ce02c6a05..bfebe22a6 100644 --- a/app/app.go +++ b/app/app.go @@ -646,6 +646,7 @@ func NewCanto( app.DistrKeeper, app.StakingKeeper, authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.Erc20Keeper = erc20keeper.NewKeeper( @@ -675,6 +676,7 @@ func NewCanto( app.EvmKeeper, app.BankKeeper, authtypes.FeeCollectorName, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) epochsKeeper := epochskeeper.NewKeeper( @@ -703,6 +705,7 @@ func NewCanto( app.TransferKeeper, app.CoinswapKeeper, app.Erc20Keeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.OnboardingKeeper.SetTransferKeeper(app.TransferKeeper) diff --git a/proto/canto/csr/v1/tx.proto b/proto/canto/csr/v1/tx.proto new file mode 100644 index 000000000..997b850e7 --- /dev/null +++ b/proto/canto/csr/v1/tx.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; +package canto.csr.v1; + +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "amino/amino.proto"; +import "canto/csr/v1/params.proto"; + +option go_package = "github.com/Canto-Network/Canto/v7/x/csr/types"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams updates the parameters of the x/csr module. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/csr parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/proto/canto/inflation/v1/tx.proto b/proto/canto/inflation/v1/tx.proto new file mode 100644 index 000000000..f611d9a09 --- /dev/null +++ b/proto/canto/inflation/v1/tx.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; +package canto.inflation.v1; + +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "amino/amino.proto"; +import "canto/inflation/v1/genesis.proto"; + +option go_package = "github.com/Canto-Network/Canto/v7/x/inflation/types"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams updates the parameters of the x/inflation module. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/inflation parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/proto/canto/onboarding/v1/tx.proto b/proto/canto/onboarding/v1/tx.proto new file mode 100644 index 000000000..5266fe3ea --- /dev/null +++ b/proto/canto/onboarding/v1/tx.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; +package canto.onboarding.v1; + +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "amino/amino.proto"; +import "canto/onboarding/v1/genesis.proto"; + +option go_package = "github.com/Canto-Network/Canto/v7/x/onboarding/types"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams updates the parameters of the x/onboarding module. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); +} + +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + option (amino.name) = "canto/MsgUpdateParams"; + + // params defines the x/onboarding parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +message MsgUpdateParamsResponse {} \ No newline at end of file diff --git a/x/csr/keeper/keeper.go b/x/csr/keeper/keeper.go index b4a40d5b0..408ceec7c 100644 --- a/x/csr/keeper/keeper.go +++ b/x/csr/keeper/keeper.go @@ -21,6 +21,10 @@ type ( evmKeeper types.EVMKeeper bankKeeper types.BankKeeper FeeCollectorName string + + // the address capable of executing a MsgUpdateParams message. Typically, this + // should be the x/gov module account. + authority string } ) @@ -32,6 +36,7 @@ func NewKeeper( evmKeeper types.EVMKeeper, bankKeeper types.BankKeeper, FeeCollectorName string, + authority string, ) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { @@ -46,9 +51,15 @@ func NewKeeper( evmKeeper: evmKeeper, bankKeeper: bankKeeper, FeeCollectorName: FeeCollectorName, + authority: authority, } } +// GetAuthority returns the x/csr module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } diff --git a/x/csr/keeper/msg_server.go b/x/csr/keeper/msg_server.go new file mode 100644 index 000000000..6ed6eac74 --- /dev/null +++ b/x/csr/keeper/msg_server.go @@ -0,0 +1,41 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + + "github.com/Canto-Network/Canto/v7/x/csr/types" +) + +type msgServer struct { + Keeper +} + +var _ types.MsgServer = msgServer{} + +// NewMsgServerImpl returns an implementation of the csr MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + // if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + // } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/csr/types/tx.pb.go b/x/csr/types/tx.pb.go new file mode 100644 index 000000000..0449cb007 --- /dev/null +++ b/x/csr/types/tx.pb.go @@ -0,0 +1,601 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: canto/csr/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/csr parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_249005a6451fe2d1, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_249005a6451fe2d1, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "canto.csr.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.csr.v1.MsgUpdateParamsResponse") +} + +func init() { proto.RegisterFile("canto/csr/v1/tx.proto", fileDescriptor_249005a6451fe2d1) } + +var fileDescriptor_249005a6451fe2d1 = []byte{ + // 372 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x51, 0x3d, 0x4b, 0x03, 0x41, + 0x10, 0xbd, 0x55, 0x0c, 0xe4, 0x0c, 0x88, 0x47, 0x24, 0xc9, 0xa1, 0x67, 0x08, 0x08, 0x21, 0x90, + 0x5b, 0x12, 0xc1, 0x80, 0x9d, 0xb1, 0xb0, 0x8a, 0x48, 0xd4, 0xc6, 0x46, 0x36, 0x97, 0x63, 0x73, + 0xe8, 0xdd, 0x1c, 0x3b, 0x9b, 0x98, 0x74, 0x62, 0x69, 0xe5, 0xcf, 0xb0, 0xb0, 0x48, 0xe1, 0x8f, + 0x48, 0x19, 0xac, 0xac, 0x44, 0x92, 0x22, 0x7f, 0x43, 0xee, 0x43, 0xf3, 0x51, 0xd8, 0x2c, 0x33, + 0xf3, 0xde, 0xbc, 0x7d, 0xfb, 0x56, 0xdd, 0xb1, 0x98, 0x27, 0x81, 0x5a, 0x28, 0x68, 0xaf, 0x42, + 0x65, 0xdf, 0xf4, 0x05, 0x48, 0xd0, 0x52, 0xe1, 0xd8, 0xb4, 0x50, 0x98, 0xbd, 0x8a, 0xbe, 0xcb, + 0x01, 0xf8, 0xbd, 0x4d, 0x99, 0xef, 0x50, 0xe6, 0x79, 0x20, 0x99, 0x74, 0xc0, 0xc3, 0x88, 0xab, + 0xa7, 0x39, 0x70, 0x08, 0x4b, 0x1a, 0x54, 0xf1, 0x34, 0x63, 0x01, 0xba, 0x80, 0xd4, 0x45, 0x1e, + 0x28, 0xbb, 0xc8, 0x63, 0x20, 0x17, 0x01, 0xb7, 0xd1, 0x46, 0xd4, 0xc4, 0xd0, 0x36, 0x73, 0x1d, + 0x0f, 0x68, 0x78, 0xfe, 0xb1, 0x17, 0xfd, 0xf9, 0x4c, 0x30, 0x37, 0x66, 0x17, 0xde, 0x88, 0xba, + 0xd5, 0x40, 0x7e, 0xed, 0xb7, 0x99, 0xb4, 0x2f, 0x42, 0x44, 0x3b, 0x52, 0x93, 0xac, 0x2b, 0x3b, + 0x20, 0x1c, 0x39, 0xc8, 0x92, 0x3c, 0x29, 0x26, 0xeb, 0xd9, 0x8f, 0xf7, 0x72, 0x3a, 0xbe, 0xe6, + 0xa4, 0xdd, 0x16, 0x36, 0xe2, 0xa5, 0x14, 0x8e, 0xc7, 0x9b, 0x73, 0xaa, 0x56, 0x53, 0x13, 0x91, + 0x76, 0x76, 0x2d, 0x4f, 0x8a, 0x9b, 0xd5, 0xb4, 0xb9, 0x18, 0x80, 0x19, 0xa9, 0xd7, 0x93, 0xa3, + 0xaf, 0x7d, 0xe5, 0x75, 0x36, 0x2c, 0x91, 0x66, 0x4c, 0x3f, 0x2e, 0x3e, 0xcd, 0x86, 0xa5, 0xb9, + 0xd0, 0xf3, 0x6c, 0x58, 0x8a, 0x23, 0x5d, 0xb1, 0x56, 0xc8, 0xa9, 0x99, 0x95, 0x51, 0xd3, 0x46, + 0x1f, 0x3c, 0xb4, 0xab, 0x2d, 0x75, 0xbd, 0x81, 0x5c, 0xbb, 0x52, 0x53, 0x4b, 0x8f, 0xd9, 0x5b, + 0x36, 0xb1, 0xb2, 0xad, 0x1f, 0xfc, 0x0b, 0xff, 0x8a, 0xeb, 0x1b, 0x8f, 0x81, 0xe1, 0xfa, 0xd9, + 0x68, 0x62, 0x90, 0xf1, 0xc4, 0x20, 0xdf, 0x13, 0x83, 0xbc, 0x4c, 0x0d, 0x65, 0x3c, 0x35, 0x94, + 0xcf, 0xa9, 0xa1, 0xdc, 0x94, 0xb9, 0x23, 0x3b, 0xdd, 0x96, 0x69, 0x81, 0x4b, 0x4f, 0x03, 0xc5, + 0xf2, 0xb9, 0x2d, 0x1f, 0x40, 0xdc, 0x45, 0x1d, 0xed, 0xd5, 0x68, 0x3f, 0xfc, 0x00, 0x39, 0xf0, + 0x6d, 0x6c, 0x25, 0xc2, 0xf4, 0x0f, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xe6, 0xae, 0x5a, + 0x3a, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/csr module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.csr.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams updates the parameters of the x/csr module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.csr.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "canto.csr.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/csr/v1/tx.proto", +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/govshuttle/client/cli/tx.go b/x/govshuttle/client/cli/tx.go index 124a45a61..e0db33d8c 100644 --- a/x/govshuttle/client/cli/tx.go +++ b/x/govshuttle/client/cli/tx.go @@ -22,16 +22,11 @@ var ( DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds()) ) -const ( - flagPacketTimeoutTimestamp = "packet-timeout-timestamp" - listSeparator = "," -) - -// NewTxCmd returns a root CLI command handler for certain modules/erc20 transaction commands. +// NewTxCmd returns a root CLI command handler for certain modules/govshuttle transaction commands. func NewTxCmd() *cobra.Command { txCmd := &cobra.Command{ Use: types.ModuleName, - Short: "erc20 subcommands", + Short: "govshuttle subcommands", DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, diff --git a/x/inflation/keeper/keeper.go b/x/inflation/keeper/keeper.go index b82a4b53b..c05e5a4c8 100644 --- a/x/inflation/keeper/keeper.go +++ b/x/inflation/keeper/keeper.go @@ -22,6 +22,8 @@ type Keeper struct { distrKeeper distrkeeper.Keeper stakingKeeper types.StakingKeeper feeCollectorName string + + authority string } // NewKeeper creates a new mint Keeper instance @@ -34,6 +36,7 @@ func NewKeeper( dk distrkeeper.Keeper, sk types.StakingKeeper, feeCollectorName string, + authority string, ) Keeper { // ensure mint module account is set if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { @@ -54,9 +57,15 @@ func NewKeeper( distrKeeper: dk, stakingKeeper: sk, feeCollectorName: feeCollectorName, + authority: authority, } } +// GetAuthority returns the x/inflation module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + // Logger returns a module-specific logger. func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/"+types.ModuleName) diff --git a/x/inflation/keeper/msg_server.go b/x/inflation/keeper/msg_server.go new file mode 100644 index 000000000..b35dea17a --- /dev/null +++ b/x/inflation/keeper/msg_server.go @@ -0,0 +1,41 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + + "github.com/Canto-Network/Canto/v7/x/inflation/types" +) + +type msgServer struct { + Keeper +} + +var _ types.MsgServer = msgServer{} + +// NewMsgServerImpl returns an implementation of the inflation MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + // if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + // } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/inflation/types/tx.pb.go b/x/inflation/types/tx.pb.go new file mode 100644 index 000000000..c8a2c4a90 --- /dev/null +++ b/x/inflation/types/tx.pb.go @@ -0,0 +1,601 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: canto/inflation/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/inflation parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_3cd435bd13fdf9eb, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_3cd435bd13fdf9eb, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "canto.inflation.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.inflation.v1.MsgUpdateParamsResponse") +} + +func init() { proto.RegisterFile("canto/inflation/v1/tx.proto", fileDescriptor_3cd435bd13fdf9eb) } + +var fileDescriptor_3cd435bd13fdf9eb = []byte{ + // 379 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x51, 0xcf, 0x4b, 0x3a, 0x41, + 0x14, 0xdf, 0xf9, 0x7e, 0x49, 0x70, 0x0b, 0xa2, 0xc5, 0x50, 0xb7, 0xd8, 0xc4, 0x2e, 0x62, 0xb8, + 0x83, 0x0a, 0x05, 0x41, 0x87, 0xec, 0x6c, 0x84, 0xd1, 0xa5, 0x4b, 0x8d, 0x3a, 0x8d, 0x43, 0xee, + 0xbc, 0x65, 0x67, 0x34, 0xbd, 0x45, 0xc7, 0x4e, 0xfd, 0x19, 0x1d, 0x25, 0xfa, 0x23, 0x3c, 0x4a, + 0xa7, 0x4e, 0x11, 0x7a, 0xf0, 0xdf, 0x88, 0xfd, 0x51, 0x96, 0x79, 0xe8, 0xb2, 0xbc, 0xf7, 0x3e, + 0xef, 0xf3, 0x63, 0xe7, 0xe9, 0x1b, 0x0d, 0x22, 0x14, 0x60, 0x2e, 0xae, 0xda, 0x44, 0x71, 0x10, + 0xb8, 0x5b, 0xc4, 0xaa, 0x67, 0xbb, 0x1e, 0x28, 0x30, 0x8c, 0x00, 0xb4, 0xbf, 0x40, 0xbb, 0x5b, + 0x34, 0x37, 0x19, 0x00, 0x6b, 0x53, 0x4c, 0x5c, 0x8e, 0x89, 0x10, 0xa0, 0x02, 0x44, 0x86, 0x0c, + 0x33, 0xc1, 0x80, 0x41, 0x50, 0x62, 0xbf, 0x8a, 0xa6, 0xc9, 0x06, 0x48, 0x07, 0x24, 0x76, 0x24, + 0xf3, 0xf5, 0x1d, 0xc9, 0x22, 0x20, 0x1d, 0x02, 0x17, 0x21, 0x23, 0x6c, 0x22, 0x68, 0x8d, 0x38, + 0x5c, 0x00, 0x0e, 0xbe, 0xd1, 0x28, 0xb3, 0x20, 0x2b, 0xa3, 0x82, 0x4a, 0x1e, 0x91, 0xb2, 0x4f, + 0x48, 0x5f, 0xad, 0x4a, 0x76, 0xe6, 0x36, 0x89, 0xa2, 0x27, 0xc4, 0x23, 0x8e, 0x34, 0x76, 0xf5, + 0x38, 0xe9, 0xa8, 0x16, 0x78, 0x5c, 0xf5, 0x53, 0x28, 0x83, 0x72, 0xf1, 0x4a, 0xea, 0xe5, 0xb9, + 0x90, 0x88, 0xdc, 0x0e, 0x9b, 0x4d, 0x8f, 0x4a, 0x79, 0xaa, 0x3c, 0x2e, 0x58, 0x6d, 0xb6, 0x6a, + 0x1c, 0xe8, 0x31, 0x37, 0x50, 0x48, 0xfd, 0xcb, 0xa0, 0xdc, 0x72, 0xc9, 0xb4, 0x7f, 0xbf, 0x86, + 0x1d, 0x7a, 0x54, 0xe2, 0xc3, 0xb7, 0x2d, 0xed, 0x71, 0x3a, 0xc8, 0xa3, 0x5a, 0x44, 0xda, 0xcf, + 0xdd, 0x4d, 0x07, 0xf9, 0x99, 0xdc, 0xfd, 0x74, 0x90, 0x5f, 0x0f, 0xf3, 0xcf, 0x05, 0xcc, 0xa6, + 0xf5, 0xe4, 0xdc, 0xa8, 0x46, 0xa5, 0x0b, 0x42, 0xd2, 0x92, 0xd0, 0xff, 0x57, 0x25, 0x33, 0x2e, + 0xf5, 0x95, 0x1f, 0xbf, 0xb4, 0xbd, 0x28, 0xca, 0x9c, 0x86, 0xb9, 0xf3, 0x87, 0xa5, 0x4f, 0x23, + 0x73, 0xe9, 0xd6, 0x0f, 0x5f, 0xa9, 0x0e, 0xc7, 0x16, 0x1a, 0x8d, 0x2d, 0xf4, 0x3e, 0xb6, 0xd0, + 0xc3, 0xc4, 0xd2, 0x46, 0x13, 0x4b, 0x7b, 0x9d, 0x58, 0xda, 0x79, 0x99, 0x71, 0xd5, 0xea, 0xd4, + 0xed, 0x06, 0x38, 0xf8, 0xc8, 0xd7, 0x2d, 0x1c, 0x53, 0x75, 0x03, 0xde, 0x75, 0xd8, 0xe1, 0xee, + 0x1e, 0xee, 0x7d, 0xbb, 0x8c, 0xea, 0xbb, 0x54, 0xd6, 0x63, 0xc1, 0x55, 0xca, 0x1f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xaa, 0xc5, 0xe1, 0x5f, 0x65, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/inflation module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.inflation.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams updates the parameters of the x/inflation module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.inflation.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "canto.inflation.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/inflation/v1/tx.proto", +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/onboarding/keeper/ibc_callbacks_test.go b/x/onboarding/keeper/ibc_callbacks_test.go index 5e987a6d9..cccb35650 100644 --- a/x/onboarding/keeper/ibc_callbacks_test.go +++ b/x/onboarding/keeper/ibc_callbacks_test.go @@ -12,8 +12,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" @@ -412,7 +414,7 @@ func (suite *KeeperTestSuite) TestOnRecvPacket() { sp, found := suite.app.ParamsKeeper.GetSubspace(types.ModuleName) suite.Require().True(found) - suite.app.OnboardingKeeper = keeper.NewKeeper(sp, suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.IBCKeeper.ChannelKeeper, mockTransferKeeper, suite.app.CoinswapKeeper, suite.app.Erc20Keeper) + suite.app.OnboardingKeeper = keeper.NewKeeper(sp, suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.IBCKeeper.ChannelKeeper, mockTransferKeeper, suite.app.CoinswapKeeper, suite.app.Erc20Keeper, authtypes.NewModuleAddress(govtypes.ModuleName).String()) // Fund receiver account with canto, IBC vouchers testutil.FundAccount(suite.app.BankKeeper, suite.ctx, ethsecpAddr, tc.receiverBalance) diff --git a/x/onboarding/keeper/keeper.go b/x/onboarding/keeper/keeper.go index 4e5e2cfd8..011f7b4c6 100644 --- a/x/onboarding/keeper/keeper.go +++ b/x/onboarding/keeper/keeper.go @@ -27,6 +27,8 @@ type Keeper struct { transferKeeper types.TransferKeeper coinswapKeeper types.CoinwapKeeper erc20Keeper types.Erc20Keeper + + authority string } // NewKeeper returns keeper @@ -38,6 +40,7 @@ func NewKeeper( tk types.TransferKeeper, csk types.CoinwapKeeper, ek types.Erc20Keeper, + authority string, ) *Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { @@ -52,6 +55,7 @@ func NewKeeper( transferKeeper: tk, coinswapKeeper: csk, erc20Keeper: ek, + authority: authority, } } @@ -69,6 +73,11 @@ func (k *Keeper) SetICS4Wrapper(ics4Wrapper porttypes.ICS4Wrapper) { k.ics4Wrapper = ics4Wrapper } +// GetAuthority returns the x/onboarding module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} + // Logger returns logger func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) diff --git a/x/onboarding/keeper/msg_server.go b/x/onboarding/keeper/msg_server.go new file mode 100644 index 000000000..d5eec660e --- /dev/null +++ b/x/onboarding/keeper/msg_server.go @@ -0,0 +1,41 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + + "github.com/Canto-Network/Canto/v7/x/onboarding/types" +) + +type msgServer struct { + Keeper +} + +var _ types.MsgServer = msgServer{} + +// NewMsgServerImpl returns an implementation of the onboarding MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { + if k.GetAuthority() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) + } + + if err := req.Params.Validate(); err != nil { + return nil, err + } + + ctx := sdk.UnwrapSDKContext(goCtx) + k.SetParams(ctx, req.Params) + // if err := k.SetParams(ctx, req.Params); err != nil { + // return nil, err + // } + + return &types.MsgUpdateParamsResponse{}, nil +} diff --git a/x/onboarding/types/tx.pb.go b/x/onboarding/types/tx.pb.go new file mode 100644 index 000000000..93a36e65f --- /dev/null +++ b/x/onboarding/types/tx.pb.go @@ -0,0 +1,601 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: canto/onboarding/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the x/onboarding parameters to update. + // + // NOTE: All parameters must be supplied. + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` +} + +func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } +func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParams) ProtoMessage() {} +func (*MsgUpdateParams) Descriptor() ([]byte, []int) { + return fileDescriptor_245e19fcd2c68f2c, []int{0} +} +func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParams.Merge(m, src) +} +func (m *MsgUpdateParams) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParams) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo + +func (m *MsgUpdateParams) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgUpdateParams) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +// +// Since: cosmos-sdk 0.47 +type MsgUpdateParamsResponse struct { +} + +func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } +func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateParamsResponse) ProtoMessage() {} +func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_245e19fcd2c68f2c, []int{1} +} +func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) +} +func (m *MsgUpdateParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgUpdateParams)(nil), "canto.onboarding.v1.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.onboarding.v1.MsgUpdateParamsResponse") +} + +func init() { proto.RegisterFile("canto/onboarding/v1/tx.proto", fileDescriptor_245e19fcd2c68f2c) } + +var fileDescriptor_245e19fcd2c68f2c = []byte{ + // 383 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x51, 0x4f, 0x4b, 0x32, 0x41, + 0x18, 0xdf, 0x79, 0x5f, 0x5e, 0xc1, 0x7d, 0x83, 0x68, 0x33, 0xd4, 0x4d, 0x36, 0x93, 0x0e, 0x22, + 0xb9, 0x83, 0x16, 0x05, 0x1d, 0x82, 0xec, 0xac, 0x84, 0xd1, 0xa5, 0x4b, 0xcc, 0xba, 0xc3, 0x38, + 0xd4, 0xce, 0xb3, 0xec, 0x8c, 0xa6, 0xb7, 0xe8, 0xd8, 0xa9, 0x8f, 0xd1, 0x51, 0xa8, 0x0f, 0xe1, + 0x51, 0x3a, 0x75, 0x8a, 0xd0, 0x83, 0x5f, 0x23, 0xdc, 0xdd, 0xb0, 0xc4, 0x43, 0x97, 0x65, 0x9e, + 0xe7, 0xf7, 0xfc, 0xfe, 0x3c, 0xfb, 0xe8, 0xb9, 0x16, 0x11, 0x0a, 0x30, 0x08, 0x07, 0x48, 0xe0, + 0x72, 0xc1, 0x70, 0xb7, 0x82, 0x55, 0xcf, 0xf6, 0x03, 0x50, 0x60, 0xac, 0x87, 0xa8, 0x3d, 0x47, + 0xed, 0x6e, 0xc5, 0xcc, 0x31, 0x00, 0x76, 0x43, 0x31, 0xf1, 0x39, 0x26, 0x42, 0x80, 0x22, 0x8a, + 0x83, 0x90, 0x11, 0xc5, 0x4c, 0x31, 0x60, 0x10, 0x3e, 0xf1, 0xec, 0x15, 0x77, 0xd3, 0x2d, 0x90, + 0x1e, 0x48, 0xec, 0xc9, 0xd0, 0xc0, 0x93, 0x2c, 0x06, 0xb2, 0x11, 0x70, 0x15, 0x31, 0xa2, 0x22, + 0x86, 0xd6, 0x88, 0xc7, 0x05, 0xe0, 0xf0, 0x1b, 0xb7, 0xb6, 0x97, 0xa5, 0x65, 0x54, 0x50, 0xc9, + 0x63, 0x56, 0xe1, 0x19, 0xe9, 0xab, 0x75, 0xc9, 0x2e, 0x7c, 0x97, 0x28, 0x7a, 0x46, 0x02, 0xe2, + 0x49, 0xe3, 0x40, 0x4f, 0x92, 0x8e, 0x6a, 0x43, 0xc0, 0x55, 0x3f, 0x83, 0xf2, 0xa8, 0x98, 0xac, + 0x65, 0x5e, 0x5f, 0xca, 0xa9, 0xd8, 0xee, 0xc4, 0x75, 0x03, 0x2a, 0xe5, 0xb9, 0x0a, 0xb8, 0x60, + 0xcd, 0xf9, 0xa8, 0x71, 0xac, 0x27, 0xfc, 0x50, 0x21, 0xf3, 0x27, 0x8f, 0x8a, 0xff, 0xab, 0x9b, + 0xf6, 0x92, 0xff, 0x61, 0x47, 0x26, 0xb5, 0xe4, 0xf0, 0x7d, 0x4b, 0x7b, 0x9a, 0x0e, 0x4a, 0xa8, + 0x19, 0xb3, 0x8e, 0x8a, 0xf7, 0xd3, 0x41, 0x69, 0xae, 0xf7, 0x30, 0x1d, 0x94, 0x36, 0xa2, 0x0d, + 0x16, 0x12, 0x16, 0xb2, 0x7a, 0x7a, 0xa1, 0xd5, 0xa4, 0xd2, 0x07, 0x21, 0x69, 0xd5, 0xd7, 0xff, + 0xd6, 0x25, 0x33, 0x1c, 0x7d, 0xe5, 0xc7, 0x4e, 0x3b, 0x4b, 0xb3, 0x2c, 0x88, 0x98, 0xbb, 0xbf, + 0x99, 0xfa, 0xb2, 0x32, 0xff, 0xdd, 0xcd, 0xe2, 0xd7, 0x1a, 0xc3, 0xb1, 0x85, 0x46, 0x63, 0x0b, + 0x7d, 0x8c, 0x2d, 0xf4, 0x38, 0xb1, 0xb4, 0xd1, 0xc4, 0xd2, 0xde, 0x26, 0x96, 0x76, 0xb9, 0xcf, + 0xb8, 0x6a, 0x77, 0x1c, 0xbb, 0x05, 0x1e, 0x3e, 0x9d, 0x09, 0x97, 0x1b, 0x54, 0xdd, 0x42, 0x70, + 0x1d, 0x55, 0xb8, 0x7b, 0x88, 0x7b, 0xdf, 0xaf, 0xa3, 0xfa, 0x3e, 0x95, 0x4e, 0x22, 0xbc, 0xcc, + 0xde, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x02, 0xa9, 0xfe, 0x6c, 0x02, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // UpdateParams updates the parameters of the x/onboarding module. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/canto.onboarding.v1.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams updates the parameters of the x/onboarding module. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateParams) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/canto.onboarding.v1.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "canto.onboarding.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "canto/onboarding/v1/tx.proto", +} + +func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgUpdateParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Params.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) From 27731d75dd8f59755f60434f8410af63b8c02bf5 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 22 Apr 2024 13:32:02 +0900 Subject: [PATCH 66/96] test: Bump go version from 1.18 to 1.21 --- .github/workflows/build.yml | 2 +- .github/workflows/sims.yml | 8 ++++---- .github/workflows/test.yml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7cb169f2..3f0dd70a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: "^1.18" + go-version: "^1.21" - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: diff --git a/.github/workflows/sims.yml b/.github/workflows/sims.yml index 6684f9493..13f1d7a07 100644 --- a/.github/workflows/sims.yml +++ b/.github/workflows/sims.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v3.5.2 - uses: actions/setup-go@v4 with: - go-version: 1.18 + go-version: 1.21 - name: Install runsim run: go install github.com/cosmos/tools/cmd/runsim@v1.0.0 - name: Display go version @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v3.5.2 - uses: actions/setup-go@v4 with: - go-version: 1.18 + go-version: 1.21 - name: Display go version run: go version - uses: technote-space/get-diff-action@v4 @@ -67,7 +67,7 @@ jobs: - uses: actions/checkout@v3.5.2 - uses: actions/setup-go@v4 with: - go-version: 1.18 + go-version: 1.21 - name: Display go version run: go version - uses: technote-space/get-diff-action@v4 @@ -95,7 +95,7 @@ jobs: - uses: actions/checkout@v3.5.2 - uses: actions/setup-go@v4 with: - go-version: 1.18 + go-version: 1.21 - name: Display go version run: go version - uses: technote-space/get-diff-action@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 297e46b25..3acdf1f25 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.21 - name: display go version run: go version - name: test & coverage report creation From 2ac54ac288bc08d2109a34a018353f4bbc33f873 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 22 Apr 2024 14:56:04 +0900 Subject: [PATCH 67/96] chore: Update gov config - MaxMetadataLen from default value(255) to 10200(gaia's value) --- app/app.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/app.go b/app/app.go index bfebe22a6..f90d7f2a6 100644 --- a/app/app.go +++ b/app/app.go @@ -540,6 +540,8 @@ func NewCanto( govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)) govConfig := govtypes.DefaultConfig() + // set the MaxMetadataLen for proposals to the same value as it was pre-sdk v0.47.x + govConfig.MaxMetadataLen = 10200 /* Example of setting gov params: govConfig.MaxMetadataLen = 10000 From 833ee7927be4f8f0eb4da9c6dc72537be713def4 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Wed, 24 Apr 2024 16:30:57 +0900 Subject: [PATCH 68/96] docs: update swagger docs for cosmos, ethermint --- app/app.go | 13 +- client/docs/config.json | 123 + client/docs/statik/statik.go | 9 +- client/docs/swagger-ui/swagger.yaml | 67842 +++++++++++++++++++++++++- proto/buf.yaml | 2 +- scripts/protoc-swagger-gen.sh | 11 +- 6 files changed, 66869 insertions(+), 1131 deletions(-) diff --git a/app/app.go b/app/app.go index f90d7f2a6..b3a35e7ef 100644 --- a/app/app.go +++ b/app/app.go @@ -56,7 +56,6 @@ import ( "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/runtime" - "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" @@ -1228,7 +1227,7 @@ func (app *Canto) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConf app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // register swagger API from root so that other applications can override easily - if err := server.RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { + if err := RegisterSwaggerAPI(apiSvr.ClientCtx, apiSvr.Router, apiConfig.Swagger); err != nil { panic(err) } } @@ -1311,14 +1310,20 @@ func (app *Canto) FinalizeBlock(req *abci.RequestFinalizeBlock) (*abci.ResponseF } // RegisterSwaggerAPI registers swagger route with API Server -func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router) { +func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router, swaggerEnabled bool) error { + if !swaggerEnabled { + return nil + } + statikFS, err := fs.New() if err != nil { - panic(err) + return err } staticServer := http.FileServer(statikFS) rtr.PathPrefix("/swagger/").Handler(http.StripPrefix("/swagger/", staticServer)) + + return nil } // GetMaccPerms returns a copy of the module account permissions diff --git a/client/docs/config.json b/client/docs/config.json index e3f3fe43c..9216baecd 100644 --- a/client/docs/config.json +++ b/client/docs/config.json @@ -26,6 +26,23 @@ } } }, + { + "url": "./tmp-swagger-gen/ethermint/evm/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "EvmParams" + } + } + }, + { + "url": "./tmp-swagger-gen/ethermint/feemarket/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "FeeMarketParams", + "BaseFee": "FeeMarketBaseFee" + } + } + }, { "url": "./tmp-swagger-gen/canto/onboarding/v1/query.swagger.json", "operationIds": { @@ -41,6 +58,112 @@ "Params": "CoinswapParams" } } + }, + { + "url": "./tmp-swagger-gen/ibc/applications/transfer/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "TransferParams" + } + } + }, + { + "url": "./tmp-swagger-gen/ibc/core/client/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "ClientParams" + } + } + }, + { + "url": "./tmp-swagger-gen/ibc/core/connection/v1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "ConnectionParams" + } + } + }, + { + "url": "./tmp-swagger-gen/ibc/core/channel/v1/query.swagger.json" + }, + { + "url": "./tmp-swagger-gen/cosmos/auth/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Account": "AuthAccount", + "Params": "AuthParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/authz/v1beta1/query.swagger.json" + }, + { + "url": "./tmp-swagger-gen/cosmos/bank/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Balance": "BankBalance", + "Params": "BankParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/distribution/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "DistributionParams", + "DelegatorValidators": "DistDelegatorValidators" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/feegrant/v1beta1/query.swagger.json" + }, + { + "url": "./tmp-swagger-gen/cosmos/evidence/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "EvidenceParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/gov/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "GovParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/slashing/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "SlashingParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/staking/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "StakingParams" + } + } + }, + { + "url": "./tmp-swagger-gen/cosmos/tx/v1beta1/service.swagger.json", + "dereference": { + "circular": "ignore" + } + }, + { + "url": "./tmp-swagger-gen/cosmos/base/tendermint/v1beta1/query.swagger.json", + "operationIds": { + "rename": { + "Params": "BaseParams" + } + } } ] } diff --git a/client/docs/statik/statik.go b/client/docs/statik/statik.go index 6e972a282..d40b7c8e4 100644 --- a/client/docs/statik/statik.go +++ b/client/docs/statik/statik.go @@ -1,13 +1,14 @@ // Code generated by statik. DO NOT EDIT. -// Package statik contains static assets. package statik import ( "github.com/rakyll/statik/fs" ) + func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\x9cT]k\xdc:\x10}\xdf_1Q\x1e\x92\\\"\xfb&\x81p\xf1\xb5\xfd\x90\xa6\xa5\x81\x94\x06\x92}(\xa5\x14\xd9\x1a{\xa7\x91\xa5E\x92\xf7#!\xff\xbdX\xf6\xae\xb7\xdd\x90BYX\x8f\xe7\x9c9\x1a\x1d\x8d\x9c\x1ep\x0e\x1f\x1f>\xddBe,8/<\x95 \xc9yKE\xeb\xc9h(Z-\x15B\xd1\x92\x92\xc0y>I\x0f\xae?\xbf{\xf8r\xf7\x1ef\xbeQ\xf9$\xed\x1e\xa0\x84\xae3\x86\x9a\xe5\x13\x80t\x86Bv\x01@\xda\xa0\x17P\xce\x84u\xe836}\xf8\xc0\xffc\x03\xe4\xc9+\xcc\xef\x97\xa2\xae\xd1\xc2\xf4&\x8d\xfbL\x8f*\xd2\x8f`Qe\xcc\xf9\xb5B7C\xf4\x0c\xfcz\x8e\x19\xf3\xb8\xf2q\xe9\x1c\x83\x99\xc5*c\xae\xd7\xe0-E!\xbb'A\xa5\xd1\x9bbjD\x8d\xf1\\\xd7\x9b\xeaJ,:\x9c_\x9c\xaf.\xce\xa3\x008zB\x97\xb1\x90a\x10\xff\x9d\xde\xd9\xe5\xea\xec\xf2\x17\xbd\x90\x19\xf5\xc2\xc6\xfa\x18\x82\x9bC\xf8<<\x01\n\xb3\xe2\x8e\x9eH\xd7 \x14\xc6J\xb4\xbc0\xab\xff\xb7\xb8Y\xa0\xad\x94Y&\xc0\x1b\xf3\xc4]i\x8dR\x85\xb0\x8e/\xd0z*\x85\xda\xe7\xf2u\x02=q\x83\xbdL\x86\xe0\x9f\xd3M\x90\x14X\x19\x8b\xe3\xbb\xa8<\xda7\xfb#=CK~O\xb40r\xbdW\xd8\x08[\x93N\xfe\x1d\xdb+D\xf9X[\xd3j\x99\xc0a%\xba\xdf(\xd5\xfd\xa7\xf1\xd6\xaf4\xee'\xac\x0b;\xf9\xc1OI\x0b \xb9;\x0e,OcI\x8b|2\x18^Z\x9a{p\xb6\xdc%\xf1~\xc6\xa3\x1f\x8e\xe5\xdd*\x81\x94\xbfY\xe1\xbc\xd0R(\xa3\x91\xcf-:\xf4o\x14\xf7/K\xd2\xd2,#\xa3\x95\x11\x122\xa8Z]v\x17\xec\xf8\x04\x9e7N\xc51\\\x85{&\xc0\xad\x9d\xc7f\xc8\x97F;\x0f-A\x06\xc3m\x99\xde\\\x85\x9e\x8fGG[\xab\x12`Q\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8\xec\xfdyw\xdb6\xf68\x8c\xff\xffy\x15\xd7\xfa\xf6\x9b!kZ\xb1\x9d\xa5\xad\x13\xc5\x93\xc5m\xb3g\xe2\xa4\xcb\xa8\x1a\x1fZ\x82,6\x14\xa8\x90\x90m\xb5\xf2\xef\xb5\xff\x0e.\x00\x12$\x01\x10r\xdc\x99\xf9<\xcf\xc3s\xdaX\\\xb0\\\\\\\xdc\xfdn\xc1tI\xc7,\xc9h@\"`!\xfc\xf9?\x00\x00\xbd\xec\xf4w2f=\x18\x0c\x80\xad\x16$\x9b\x02\xb9\\d9+\xe0\xd6-\xd3\xd3y6Y\xa6\x04\x0e\xe5\x1f}\xf5\xf6\x00X\x10\xc2\x01\xf4T7\xfaG\x132M(\xe1-\x8a\xbf\xfa\xf1|\x02\x87\xf2G0\x1c\xe1\x80\x0e\\\x839T\x7f\xf5\x8f/\xe2\xb33\x92\x7f|\xfedI'));&\xe6'\xffs\x15\xb0YRD\xd5\xf4\xd5\xd4s\xc2\x969\xd5\xc0\xa2\x1e\xf0\xeb<\xce\x81\xc1\x00\xfe\xbcz\xf0?\xe5M\xf5*\xd0 \xd7_\xe6W2\x85\x80\x0d\xf3Q\xa8\xda\xe5?\x14t\x1e\xd4^\xe5mg|t\xc3|\xc4\xbb\xa8=\xc4\xb6\x0e \x8fZw\xd3\x03\xd8\xdak\xdf\x96]\x1c\xc0\x9fW\xb5gW\xf5N\xe5\xa8\x08\x1f\xd58N\xd3 S\x83\x8b \x8b@\xfbEC\xfe3\x85\x01l\xedj\x0f\xca\xd6\xaand\x9b\xb4?\x87\x01\x90\x08h\x7f\xcc\xa7\xc5\xff\x98\xc0\xa0\x8ep\x11\xb4@F\xfb\x99\xc4\xc5\xf5\x1a\xde\xe2\xd2\xf7\x05J\xbc\xcb\xb3\x05\xc9\xd9J~\xd9\x86\xd08\xa3\xd3\xe4l\x99\xc7\xa7)\xb1\x80\x85.\xe7D=\xdfm??#\xec\x00\xf2:\xc4\xc2j\x8e|\x0e\xb46\x87\xe6\xe8\x15\x86 Z\x93\xfe\xc9 )^\xab\xbd\xd1\xc25\xfdR+\xc1\xe7\x1a/SV\x1f\x03\x1c\xf8}\xed\xb1\xd6\xb4? X\x04\xbd\xb8\xc7\x81\x1c\x01\xabO/k.Q\xb3;\xd9\x8c\\\x99E\x9e\xb1\x8c\xef\xca\xfe,.\xde^P\xb5F\x02\x9b\xf0\xfbz\xfb\x0b\x18@\xef\xf6$)X/\x02\x1a\xd0>'\x12w\xef\xde\x13\xaf]\x05\xc3\x06~P\xbd\xff\xde\xb2 P\xb0<\x19\xb3^59\x9d\xdc\xd0\xe0\x1b\xd5T\xd4D\xb5ZS\xf5\x8f\xbe\xbdw'\x0c\xbc\xbe3\x0f\x81\xe9+-\xb6\x08S+\xd9\x05PN#\xb6\x02\x02 -XL\xc7\x9c\xbe\xb10\x046\xcb\xb3\x0b\xa0\xe4\x02>\xac\x16\xe4(\xcf\xb3<\xe8=\x8d)\xcd\x18p\xe0B\x0c\xe34.\n\x88\x0b\x88\xcb\x1ezacG\xde\xcct\xaaG\x1c\xc1\xf3\x08)\x15\x0d\xf6\xef\xef\x87\xf5M\x94\xc0\x00\x82\x1c\x06\x90\x85|\x07\xe4\xf5\x1d\x90\xc3\x81\x01y%\x9cZ\x1bO\x1f\x8f\x01\x96M8\x96t\x98\x18\xc1\x8c\xafd9\x04|\x06|\x13\xef>\x00\n\x0f\x81\xf5SB\xcf\xd8\xec\x01\xd0\xedm\xd3G\xa0f\x8d\xc4\x99\x8e\x1e\x18\xdf\xc8\xfb\x15m\x81A\xfd\xe7z\xcd\x89\x11\xe4}\x9d@I4\xe9\x9d\xc7\xe9\x92\xf4 \xa1\x90s\x88\x05y\xff\"OX\xf9F\x18A\xb0\x1bA\xa2 \x10\xf2\xc9\xe5\xfdOd\xc5igk(\x0djo\xda\xb9%\x009.\x18\x08\xb0\xf6*E*\x16h\xdb\\\x1c\x04\xb9\xbc\xcf\xbf\xd6)H\xbd\xcf+\xbf\x1d\xa5\xef\xc4\xfaHJ\xc4\xa0\xc17\xf7\xef70\xadB,N\xca\xff\x9dX\x7f\xf7\xde\x7f\x0e\xe9\xad\x04\x84\xe8\x14\xe3=\x99\x92\x9c\xd0\xb1\"\x1b\x9c\xd7\x81Y\\\xd0\xbf18%\x84BB\x13\x96\xc4iR\x90 \xec@\xb1\\\x90<\x08kop\x12C&\xbd\xd0x\x86l1\x8e\xd3%c\xb65\x18@p\x9e%\x13\xd8\x85\x01\xe7\xd2\xe0\x10zK*N\xedI\x0f\x0e\x9a(\xcc\xe9\x1bg$+\xaep\xab\xe4\xed\xf8\xc7\x04\x0e\xf4s\xe9\xaf[R\x18@\x1cp\xec\xfa6l\xaci&\x1f\xdd\xb9\xfb]\xf3Q\"\x1f\xdd\xbd\x17\x86&>0n\xb3\x05\xea|6p\x05\xc4\x8d\x1e\xc4\xb6\xb9\xae\x87'\x16\x90\xdf\xba\x05t\x99\xa6\xb8\x92\xccr\xf6\x1cs,\xe1\x8ceN\x8a\x82\xcfs\xbe,\x18\x90\x84\xcdH\x0e\xa7D4\x90\xe5\xdaa\x14\x01?\xacz\xb0\xbd1v4\xd0\x8eT\x04\x88o5d@\xab\xd7\xf9\xe8k$\xca\xc8\x19\x16,_\x8eY\x96\x9b\xa0\x0d\x88\x0f\xe9\x92\x1c\x00i3\x85\xd0d\x1c\x0d\x8c%\xbf\x14\xdd6\xb3\x96\xd0fPw[/5\xc87'\xae\xf2PPk|\x88\xd3\xcfk\xc7\x01\x13\x92\xce\xc9 \xc2\xe0\xe4\x84\x1fT\x1b\xf2\x01\xb8\x1b*\xa0\xe7\xae\x83\xd6\xbc\xd5T+|\x85\x1e\xe7y\xbc\xd2x\xc3\"M\xc6D\xdb*\xa0o\x17f=\xae\xc5\xdc\xeb\x8b/\xf9\xceqNbV;\x99\xc20\xd2\xf1\xa4\xaf-9\xe7\xc7\x1b\xdb\xc8<\x14\x03C\x0f\xd5\xee\xc5}-6\xec\x8b\x80\x84^-\xe6\xce\x16\x97U\x8b\xbf\xfa\xb6\x989[,\xaa\x16_\xfa\xb6\x98t\xcf\xfa\xd6-\xd8J\xab\xa6\x7f\xf0m\xda@\n\xb5\xa6\xb7\x82-\xc1\x1c\x91\xe1t\xe4\xd7\xe0\xd2\xb7\xc1\x85g\x83\x85o\x83\x13\xcf\x06\xd3\xee\x15_\xaf\xb1[\xaf\xe6\xc6\xbe\xe3\x9b\xb5\xc6\xa7\xffbA.X7\x16d\xea\x8fD\xfcA\xfbI\xf1\x9c\x95\x9ck,\xee\xbc$+\xc2\xc5\xf5\xa5|\x81N\xc8%\xde(\xc4\x8d\xc7E\x91\x8d\x93\x98%\xe7\xfc\xa3T\xdc|\x9bOH\x8eo\x8d\xf9\x0d\xd5\x06\xef\xba_\xb5\xc0\x07\xd0?&\xfc\xbcJ\xda\xf4c\xca\x05\xc4\xbf\xff\xfd\xe4\xe4\xf9\xeb\xd7\x1f?<~\xf2\xea\xe8\xe4\xf9\x87\xa3\xf7\xf8\xc7\xc9\xdf\xff\xdekS\xd6E\xfb\x8b\x97G\xbf\x1e=\xb3\xbc>1t\xf0\xe6\xd9\xd1/\xd6\x0ff\xed\x0f\xde\xbe\x7fv\xf4\xde\xfa\xc19\x0c\xe0^\xfb\xf6\x1c\x06\xb0\x07\x0f\x1f\xc2\xb9A\xf1\x00\x03\x98\xc3\x0e\x18\x8e\x96\x15*\x9c\xda\xf7O\x8dZ\"\xa8\x8e\xb2\xad\xbd\xd6SC3'\xd7i\xc6F\xcb/\x9c\xd8J\xfa\xd8$g\xc4\xf6\"O\x92|dn\x91\xc8\xa3\xa1lp\xd7o;]\xf2\xd3\xcc\xf6\xf0\xd8q\x12q\xbee\xbd\x86\xdd\xb6\xf4W\x13*_\xc7l\xd6\x9f\xc7\x97\xfc\x90&R\xb2\x84\x1dT\xb4\xf0c\x88\xb3Tx8\x06\xa8O\x13Rh\x06\x0f\x81>\x80\x8c\x8b\x9f\xf90\x1b\xf1\xe3j\x98\xc160\x83\xac)A\x99{\xcd\xf6\xa9s94\x9e\x8c\xf4\x8b\xe4\x0f\x05S\xfcs\x80\x0cE\xc2\xe9\x02#\xc1cq\xba\xf2'^\x1d\x7f\xb2B\x12\x99P\xba\x9c\x9f\x92\xbc\xc6\x82\xba$o\x8a\xd0\x7f\xf4\xe8\x91 \xfc\xa0\x1a\xe5|&\x15\x1c,_\xa9\xbb\xfb\xdf\xdd\xfd\xee\xfe7\xfb\xdf\xdd\xc3\x19\xd2R\x05\xfb&~cn\x85/2m\xe3\xba\x0d|\x0c\x1e\xc2.\x1c\n o\x03\xab\xc9,\xe0\x00\xcec\x97\n\xaf\xc1\x14\xda\xdaxkb\xe2\x1aM\x05rm94\xe4Zs\xe8\x08\xa1\x1e\x1e\x0e`\x87\xe2\xc9^g\xce\x0d/3x\xc4\x01\xe85\xb0w\xd6\x95\x97\xa3z-G\xee\xb9a?\xf8\xb6\xc7\xfc\xda{\xed\x018}c\xc0!P\xce]\xcb\xc5\xd6\xf77\x83m \x9c\xf5n\x087\x9cC\x12\xef%\xa8di\x9d\xf4\xfa/\x8e\xdf\xcf9\x1dhS\xe6\xdf\xf9y\xd1\xbe\xfd\x06\x06\xb0\xdf\xbe\xfd\x9e\x9fR\x95tW\x19K\x8eW\xf3\xd3,\xe5\xeb(\xfe\xea\x8bM\x9d\x19\x8c \xcf\xc4I\xa7^0\x1cm\xaf`\x00\xef9\x8e<\xb3\x1d\x01\x1f\xcd4\x87\xcd\x92\xa2O\xc9%\xf3f\xc6?\xab\x95\xb2\xe8\xa8\x94\xc1\xa4Z(\xbe\x05\xf7j\xcb6\xe4\xdf;\xa8(\x1cB^\x9e!\x19\x1c \x91v\x9e\x86\x99Y\xb2\x9bd\xd4v\xe2z\xd2\xea\xef]T\xc19$\x81~\xcequJ\x9a\x96A\xfd\xe1\xe6>\xb7~\xf4ec\x9f\xb8\x19\x83\x866H\xb3\xf4!\xcexu\xf1\x93\xb9\x0be\x91\xe1C\xb5\"\x82\xd4!\x08\xa3\x85\xdf\x8c~tw'\x0e\xd3\xf7Hk\x87\xefG|\xcb\x90\xe1\xb3\x91a\x08\x0d\xb5\xcc@?\x13\xd5\xf0\xbcF\xf4\xb3\x07\x8c\xd5\xc9\xabCXp)^]\xbcpv\x81\x1a\xa0\xe6\x91\xa3\xb6cB\xd0 \xab\x84\xe8>\xcb\x8e\xc9g\xbc\xa5Z7\xb7\x0d\x1aP\x0b\"\xc5'\x93M\x18\x95X\xe4\x02\x181\xae4(M\xa9M\xbfut\xb9 cF&\x82A\x83,\x87DIE\xa27\xc8\xa6b\xcb\x15\x11\x7f\xfa \xa5\x1b\xf1\xe8\x00\xb5\\\xb6n\x8d\xab\xc8\xaf+_d\xfb\xf5\xcb\xe0\xdeg\x19\xcab\n\xe2r\x11\x96\xed\xb5 \xfdi\x9e\xcd\x8f(\xcbW\xe5\xcb\xc4w\x94/\xbfl\x94\x86\x81\x11} |\x9cR\x8aT\xb7\x96\xdec\xfb\xc19\xb6\xe0\xcb\x07\xa7F\x13\"4\x19\xdeo\x8cL\xff\xf5QSU\xb1\xec\x98\xe5 =s)\xdd\xb4\xc1\xf6\x86\xcf\xe5\x01=\xea\xd5{\x88\xe0c\xff\xe5\xd1\xaf\xc70\x80\xe7\xfc\xef\x9f\x1e\xbf\xfax\xc4\x7f\xfd\xce\x7f\x1d\xbd\xf9\xf0\xfe9\xfe|\x13\xd5\xfaOh\xc1Q\x1f\x06\xcdQe\xcb|Le\xf2\xd9\xb3M\xd3\xd8^\\\x7fQ\x11|''%\x00{|$\x7f\xf6\"\xe8]\xf5\x9cc\x1e\xc7\xe3\x19yO\x8a\x0e\xeb\xa8\xd6\xd5\x96\xe8\x0b?\xc4sOt-e\xbd\x8f\x14\x1fL\xf0\xfc\xd2\xdf\x1c\x88\x17+\xac\xef\xb3L\xc8\xb2a$\x1eI\xc1Q\xfbH\x9e-\xf2\x05\xd74\xca\xfe\xbb\xac\x18\xdaDR\"\xbdx\x04\xa3\xd8\xd2\x01\x98{\xc8\xf2\x0d\xba\x18wv\xc1\x82_#x\x11F\xf0km\xf1\x15\xbd\xf5\\\x133\xa6\xbf\x14-\xbf\xf4\xc7\xf4\x97\x0eL\x7fY\x1b`EI=\x9b6\x0d\xf1\xe5\x0d#\xfc\x90#\xfc\xa8\x8d\xf0/o\x18S\xf6\xbcz\xf8\"Liw\xc1\x82\x1f\xc4z\xfe\xe0\xbf\x9e?8\xd6\xf3\x87\x06\xe5b_\xb6\x96/\xfaI!Z\xc8\x08\xff\xa5\xb4\xb7\x1c\xbd\xa5\xba\x96\x8f_S\xe4\xbelko\xbf\x8a\xe0\x9f\x11\xfc\x12\xc1?\xdaJ\xd3\xe3\xa3\x7f\xa0\xc2\xd4&9\x12\xe2\x10\x1dOb\xe4\xca\xd0\xa3L'6\x1b\xb1\xaf\xcc\xd2\x83\xe2/\xa5q\xe9\x13Y\x15F\x1eR\x8cDr\x83\xd5PN\xf8\x07\xc2\xc7\xadF\x077\x19\x1auN>\xa9\xf4\xf3\x96\xf9\xa3\x80\xe1\xaf\xa0\xcb\xbb\xbb\x93\x86\xb3\xa8q\xef\xa9<\x0c\x86#\xaf\x8e2KG\xea,\xaa\x0c\x18\xff\xf04\xb0 7fm\xf0+\xdeZ\xf0\x95\xd4\xb5\x12\x12\x0cG\xa1_\xbbq\x07r\x08\xa3fR\x883\x0fy@\xd9\x05 \xdb\\\xf3\x93\xea\x8d\xdc\xfc\xc6\x1f\xd5\x1b\xd4\xfc\x86Q\xca9\xac\x84\x9cR\xf5d\x16*\xbfL\xd2\x19~\x8a\xe0|\x04\xfc\xb8O6\x92x6\x92Y\x97\x1d@/\xcc\xc2\xdc\x97OO\x08r74\x8b\xc2\x8d\xe4?7\xb0\xc5\x80\x1e\x06|(W\xd7k\x08)\xf1T\x97\x11\xc9\x9a\x99\x81\x9a\xd9D\xf0\xd2\xca\x91\xf0\x03\xa2\xb2l\xecE\x10\x0b3F\x0c\x0f\x07\x90<\x80\xd8\xeeF\x07r\x1cK\xde\xc6\x90r\xd1\nv \xe6\xb2\x95\xc5\xad\x0e\xd4b\x0b\xbd\x1e\x0b\x96\xc3\xbdQ\x84\x8a\xbb\xe5pw\xc4\xbf\x8c\x80\x84\xa5\xa6$\x86mh+\xe1\xa0%~\xa9K}\xd6zhU\xfb\x936\xab\x8c\x9et~Df\xfc\x17/\x93q\x85\xac\x90\x15+\xe7\x02\x0c\xc7\xc6\x8f\x81\x93\xa5P\x97r\xfe\xf0_X\x05\xfc\xedmx\x04 \x1c:\x1a\x07?u\xa7\xba\xacjOu]\xc1\x01|F\x07F.\xcaKL\x12\xe8L\x86{\x8d\x93\xa8\xfc\xa8}\xdb\x03M\xb2\xfc\x1ax2\xb5;\xb1*\xca\xa4y\x94\x0b_L\x8eR\x11XQ\x83\xe3M\xfd\x0c\xa3\xd5\xbe\x91\xba\xcf\x0c\x9bx\x19\xd0\xb0?\x8f\x17\xd5\xba\xbb\xda\x05m\xd2\x08Q\x0c\x1d\xa06\x10:Ts\x13b\x1d\xd2\xaf\xff\x81!\xa9-\xd0^t\xb4\xeaD\xd0\xeb\x99|\xcd\xf8\xd5\xeb5=\xf7\xf0;N\xd3\x17\xde*\xab\x85\xfbT1\xf0#/9\x1b\xc1\xa1\xb4 \\:\x7f\x95\x14\"\nfB\xc4\xf3_\xeb\xcf_\xc7\x0b\xa1\xbb\xf2\x1a\xce\xc4=\x1ce=\xae\xf9]\x0d\x14O\xdd\xd4\xaa\xe9\xaf\xf9Acf\xdf\x11\x1cwHe\xbe$\xb0%\xf5\xef\x0c-\xcc%Fm\xd9\x18%\xc1\x82j/\xeem\xa0\xa6\x97N\x08o\xa7V#\x06So\xb8\xb6f \xb8y\xf9f\x10\x868\xa1\x00=\x0f\xf4\xbb\x9bN\x10\xec\x93\xf4\xa7f[f\xc7Q\xd2'\x9f\x97qZ\xa0J\xde\xf4\x02\xd3^\xd8Ro\x07\xcc\x93#?\xf7Z\xf2\xee\xe5\x8d\x03\x11M\xa4\xd9\xb5+\x87\x07\xed&+o\xca\xc7\xda\xcd\xe6\xe7''\xb3\xb8\x98\xb5\x1a\xa8n\x97\xaf\xd4\x1e\xac\xd7B\x7f\xcco.\xe5\xb0\nu\xa3\x907\xc6\xea\xc6\x18=\xa5;\x90\xb2\xe9\xc1!\x0d\xd1\xf8\xdb \x1b\xe5Z\x81\x9e}\xe6\xb6\xf9H\\\xac\x06J\x88})#\x04\x1d\xe6\x8f>9'\xf9*\xe8T\xa8\xa8K\xb1B9\xda\x00\x83P\xec\x82Nv\"\xe3@\x98\x91 CNQ8/\x06\x94\xc3\x15o\xeeb\\\xa1\xed(\x00\xf4\xdf\x97\xfdq.\xc2c\x8f\xa8q\xda\x16\xa8\xe5gc\xee\xbc\xf1\xaaZ@\x0b\xcd\xd1\xd5\xbe\x88m\xda\x0d\xdbB\x90\xb4 \x0exg\x0d\x0f\xf9\xe6\xa5xK\xc7\x12\x10\xa9\x05\x81\x01$f\x08\x1b\xa17\x15\xc10\xc6/\x16 \xb6\x8frE*\xd1\xc7\x14<\xa8_\x1c\x9e\x9c\x13\xdd\xc2\xd8\xb4\x00\x9d\xa43\xfe{\x86<\x01\xe9\x9f\x11\xf4\x8a\\\x85\xfc \xbf\xab\xddB\x1cQ\x185\x95\x1ek\x06\x8a \x885V\xf1q\xaa\x11\x13\xbe\xa8\x0b/\xba7w\xd3\xbd-T4\xea\xf1bsM\x02\xe2\x1c\xbbj\xc0\x8c\x8fB\x9f\xa3\xbc\x1e\x1a\xfa\xa4\x86/\xcb\x1e\xdc\x86\xdd\xd2\x9fE\xfa\xbd\x84\x91zC}\xe8:\xd8\xfeY\x0e\xed\x9ff\xc4\xf9\xa7\xb4\x19tl5\x1b\xb4\xce:\xa0U\x8b\x8c\x11*\x02O_\xa1\x15q9\x0b\x99\x97b\xd5X\n\xad\x0d\xf3j\x9c\x91@\xbaZE\xa0\xe2\xfb\nF\x16\x10\xc3\xfb\x98\x9e\x118]\xc1n/\x8cpo\xe19\xb4\x1b\xd5W \x0d5\xe8[z\x1bv\xc3\x08i\xba\xf6\x02\xc5e\x94K\x18\x9f\x16\xe8z\xc8\xe0\xa1\xe4\xd8\xf8\xdb;T\x99pN\n\x16\xe75\xdd&\xa1\x13M\xb5y\x82C\xc3\xc1\xeaX\xa3\xa3\x07\xfe=&I\x1a\x04\x0cv8\x01\xbe\x0d\x94\x8bV!\x97\xcd7\xc3\x9d_JX\xfeb\xc6\x9d_\xbe\x0cwN\xcd\xbaD\x81/\x9aJ\xe9\xf1i\xc1\xf2x\xcc\x9a\x96 K\xb3'\xc4\xe5fz\xe1|z$\x9f\xea\x0f53\xd6\xf0\x1f#\x15`\x1a\x10\x12\xc1K\x8e\x19z\xdc\xc3\x19\xe9\x0c\x04\x82\x86\x15\x86\x93G\x94\x0f4M\xfb\xf0\x932g\x84\xa3\xb6gc\xa3\xcf\x8dL25\x7fY\xadG\xe9![S-U\x1e\xb2\x03\xc8\x85\x8b\xac\x15W\xa4\x8a\x88\x04t\xc80\xecn\x07=\xba\xb2\x11\n\x7f\xbc\xa3jgf\x1c\x15\xadT;\xf3\x9a\xac\x9fu\xc84Q\xe3\x14Z\x937\xbe\x95\x9956\x9bikJ \xaa7\xbd\\M\xa8/\xf4\xc3CbD\xf9Z\xdf\xb3\xb8p&\x02\x80\xa6\xa5S4\xdd\x08\x93o\xa9\x02\x1a\xbd|\xe9\xc6\x12\x9d\x8a\x9dU\x99\xaa\"\xc9V\xeb;-\x11;-\xe1;-{\x00\x89;\x16:\xe6\xdf\xe3bf\xb0\x03 \x1c@b\xd1\xf35vf<\x8a n\xee\xc6\xc4\xa8\xb4\xb5\n\xa3\x89\x17\xc8\xae\xb3=%\xb8\xac\xfbS\x03\xa1uw\xe6\x9d{8\xb9\x89=\xbc\xd9*(\xc8\xa1\xa65\xfb\xf7\xed\xf9\x98\xef\xf9\xd8o\x8fk\x8b8\x9cU\x87\x1c\x95\x87\x1c5\xee\x8b\xd2[\xc5c\xad\x91\xf7\x0dk\xbb\xb2&4iB\x86\x85{V\xd8\xf2SP7\xcb\x86v\x94\xb1\xe8$\x9e\x04\xd4\"\x83\x96\xbb8{\x00[\x01F\x9cKyT\x08\xa4\x18\x8b\xb7'\xb4\x10A&d\xe2\x08\xf2\xedm\xb9\xab\x1e\xd8\xa5\x91\xbc s#L+}\xf5\x8d\x025\xcb7\x86\xaaE\x9d\xf3D\xd7\x12\x8b\xed\xf2\xbd\xa5Y\xcb\nl\xbe\xd5\x98\xb6\x0e\x1dZ\x0e\\$\xe1\x8c\x8e{@,\x8dX(\xaf\x8d\x10\xe4\x12\xe5\xf3\xff\x02\x94\xaf\x0e\x15\xfd\x14)C\x08D\xca\xa2\xb6\x83\x80~\xa0\x94\xc6\xa8\x07\x1e\xcc[6LF\x11'T\xadC\xc226\xbeK\xa8\xa6%\x12\xbb\xe4A\x17\xdd\xa4.m\x12\x9a\xd8\x86\xc9H\x84C\x96c\x8b\xeb\x03;\xcdI\xfc\xa9\xbd\xa06lk\x1d[\xc6\xe5\xfd\x8f\xed\xbe\xc6\xc2Z \x9ai\xb1\x8d/\xdf\x08\xab\x8a+\x01\x8f\xaac\xb5Ka\xd8\xbdQA\xc1\x0d\x11\xa5\x02\x9eC\xb1(\x82\xf2\xe4\x1e6\xbe\xe6\xb4.+\xf67\x1f\xfa3\xbcsI\x03\xe6\xe4\xfa.v\x0dA\x1b\x0e\xa1\xf7\x9e,H\xcc`8\xea\xc1A\xf5\x0b\xbd \x98\xa6\x16\xda\x86^u\x0f\xbf\xe5wX2'\x05\xb4\x9d\x8e\xe7\xd7g\xcaML\xb8\x18\x82\x81\x01\xaf\xf5\x93\xd0q\xba\x9c\x10o.|Ft\xc5W;*\xab\xd1<\xa6,\xf0\x99Hm\xffpPYQ^\x8b\xd9\x13S\x85\x03\xa5\xad\xab\x8d\xec\x83\xb0\x13\xc3\x8e\x08\xa6k2\n\xcd\x91\xe6\xe4\x9c\xe4\xc5&n\xda\x1dp\x9d\x90\xcb\xb7\xd3\xeb\x83\x15\x0eQc\xb8\xb3\xe7\xec&\x8d\x0b\xf6\xfc\x06\xba\xaa0\xb4\xb3\xcb\xeb\x0bS*UT\xb9\xc4\x98+\xcaJ\xb0\xca\x03\xa36\\\xda<\xd1\xa8S A\xbd\xe6\xb2\xb9\x94\xb3\x11\xab\xba\x19\xb1Vl&<\x04\xaa(N\xc5\x02Q \x89\xd0\x98\xf0F]7\"~xP\xd8\x1a4\xa5\x91\xd2\x13\x0fI]\xf5\x0e\x87m\xcc\xd4\xa6z\xde\xb6\xf7s\xfa\xbe\x92\xf4}u\xc3\xf4\x1dU\xc6\x8a\xbc\x8b\x1f\x1au\x17\xda\xddm\xe8\xf5\xfb\xfd\xea.\xa1\x13\xd8\x86@\x08\x15\xeaE\xb2\xe0\xed\xc1\xe9\xaa\xf69Y\xf0\x86{!\x9e\x07\xed\x93`u\xb3'\x81\x1an\xa5\x8b\x84\xaf\xebCi\x9d\x11\xabk\x9d\x11\x8as\x08\x08\xec\xe8}\x87p[\xeb\xcf\xba?0@zW\x18\xe452!n\xf05B\x9d\xf84\xcd\x0c\xb6\x87\xc6\x90\xbd\xcf\x9d\xc6\xa1Rv\xaa\x1d.\xe8R \x02\xb2\xcb\xa7\x91\xb0\x15\xe0\x19S\xdd\x0d\xe1\xe1\xa0\xf4-]\x91`7\x82\xddP\x1eO+\x89\xdcg\x84\x05\xbaU@\x99\x0c\xf8}f\xb8\x8f k\x9f]\xab\xeb\x1c6\xe7eTemy,\xf6-\xf8\xbf:\x92\x0c\x06|.vi@d\x17p\xaf3\x94\xf6D\xb5\xd0\xb5\xf3 4\x13mp\x89\x03\xed\xc3j\xf5\x85\xe7#\x0eGB\xd4@sV7s\x16V\xd8\x8dz\xc3J$\xe0\x90\x93\xf2`k\x03S\xf8\x1a\xf3\xe0iw\xeb*G\xeaT9\xd6%\xc4\x08\x12\xa3\x06\xd1\xbcl\x19l\x8b\x11\xed\xf0\x01\xe4\xfe\x0b\xd4\x92\xd7\x8c\x00\xdc\xfc\x00\xae\x80g\x1co\x03\xa0\x969\xf9\x02\xd9\x0c\xce\x9b8\xec\x95 \x9d9\xd5!\x0d\xe8\xf3E\x7f\x84\x16\xc9\xbf\x98\x03P\xca\x17\x94\xd7c\x1f\x91kuC\x0c\xc1\x8a4\x16F\xf8}\xc8\x1fe\xb8\x1d\x9aU\xc5\x13\xfegy_\x92,\xf9 \x9eq\xe7ed\x91\x81\x8f8%*\x9d\xd3 \x89\xe0\x94\xe0\x9f\x17\xd5\x9fG\xea\xcfSRF\xf4\x887\xb5@\x1e\xf1\xbe\x0c\xf29jH0|\xa1/\x89-\xbb\x04\x9el\xc9|\x89 &v\xf6\xab\xd3\x8e\xdf\x0b\xaa$,\x11\xec\x87*\x7f\x06\xbe~\xe0\xbfk\xee\xdf\xbbw\xe7\x1e\xdc\xe2\xe7\xd9\x9a\x13s\xfb\xc6)\xdfd\xe2M;\x92\xe3^\xd9F\xb7\xbbG\x8f\x1e\xc1\xde\xfdP\xde\xe1O\x02V\xde|\xf8\x10\xf6\xee\x8b\xdc3!\xac\x9b\xce\xf8\xb6P\xa6\xe3._Il\x1en\xc1\xde\xee7w\xbe\xb9\xbb\xf7\xed\xfe]X\xc3\x9d\xfd\xfd\xbd\xfd\xfd{w\xbf\xe1O\xfc\x9c2\x9fZ:\xd2)&\xac\xd7\x8e\xe0\xeb\x92\x86Z4\xd5\xdd>\x8f\xaa\xa3\xb6\x07\xa3\xbb\xe3\xae\x9e\xb7\x9a#4Px\xc5\x18\xa8qY\xe6P\xa5=\x18\xd8}\xce\x12\xf4)\xdc\x92C\x15\x0e;\xc2\xa7\xc21P\xd0\xf0t\x17\xd66\xe7(q\xec\x8d\xe0\xbd\x80\xf5\x1b\x993\x83`:\x1cxF0\xf1\x19>\xe7T\x1c\x1b\xe7K}\x9d,\x0bp :\xdb\x08\xc7gq1{\x9aM\x88\x06\x19u\xcb\xa4\\\xc4\x96\xaa\x90-\x1d\xa4\x9e \xb43\x9e\x1f\x9a\xbe\xaa\x08\xbfw\xc2c\x8d\x84a\x97\x1a3\xa9\x9c\x0b\xcb\xaf\xc9\xf09\x19y}\xb9\xf5\xd6:n\xb05\xceOS\xb4q?/\x8e\xaaT\xd8\xe8\x0egz\xe25\x16[g\xdd\xe0\xd5\xbf\x96\xa3\xa0\xd9\x84|X-\xf8\x96\xdb\x0d\xa1\xb8H\xd8x\x06Au\xbf\xab)~\x8d\xe3\x82\xc0\xdeA\xe7{\xa0\xd1\xfe\xfe\x92&\x9f\x97\xe4\xf93\xfb\x1c\xd5\x85\xcd\x7f\xb7a\xf3\x93l\x8c\x01\xc3G)\xe1\xff\x88\xc96n\x96cp6mVj\x83\xdcR\xdaj\x19\xdf3\x7f\xcd\x97k{\xfb5\x89\xf4\xa3\xef\x16\xbc\x16{\xff5\xee}G\x88\xc8\x07\x12r\xac/\xa4,z=G\xd7\x06\n=V6\xd5\x01\xfe@\x97\xe7\xa6\xc7`\xefMFw\xc8%#\xb4H\xaa@\xc2\x02\xe2\x9c`\x92\xe38M\xb3\x0b2\x81\xb8\x80OdU\xf4\x9b\x89\xb3\x9b\xdd\xf3\x0de-n\xf1\xdc\x98\xc3X\xbf|\xd2\x11\xab\xab\xbb*\x86~iI\x8c;\xde\x94|\xbay\xf1\x01\xcc~\xb1\xea\xc2\x15j\xac\xc3\xa6$C\xb2\xc9Z$\x89\xc6\xc1\x9b>\x08\xad\x0d\xb9\xd5m\xfa\xa5\xcb\xda\xfe=\xf7\xe3\xc5\"]I6\xde\x12\xd1\xaf_W\x91\x83L\xf23\xb0\x03\xb2\xddD\xb0\xe6\x94^\x91\xbc\x16\xde\x7f\xa4\x08!\x96AA\x18\xc4@\xf9>\xa8 \xa7\xc6\x08\x19\x95{\xc2\x89\xfa\xfc*\xe7`\x9f\xfd\x06\xf4\xc4y\xeaot\xda+\xe5kI\xd68\xc3\xa0e\xb41\xe6\x03h@\xeb'4]\xf1&\x85\xd6\x14\xd5\xa4c\xe1\xd4{J\x80s\x0fd\xd2\xf7\xf4\"\xfdd\xe1\xedKu\x0c\x13\x8c\x92f\xa1 \xf5b\x16\xfc\x85;{\xf0\xb5HU\xd8\x1f\xcf\xe2\x9c3/\x8fY@Q\x98\xb1\x8aG\xc7\xa4\xed#\xad\xff\xe2\xbd?&U\xc6\x84\xa48*ic\x9bj\xbc\xf5\xdaa,_9\xf0V\xa9;\x8d4\xf3\xcf\xab\x08z\x7f\xefE\x82]\xb4\xea\x04\xc6\xb18\xe2]{\\\xf6cs\xf57\xa0Y\xd8\x16\x97\xdf\x91\x08>XE\xe6\x9fI\xfc\xe9u\xdc\xd02\n\x06/xGd\xe6\x02\xf9\x92\xa1qqF\xb6\xa1\xfc\x1c;<9I\xe6\xf3%\x92p\x8em''\x8d\x14\xed\x1d)\"\x03lE\xfc\x0e\x9e\x93&\xd2\xf3\xfe\x7f\xe7o\xec\xdd7$\xa6\xe4\x0f\xf6\xef\x192\x1f\xbf\xb7\x0cY\xb2\xf86)\xfa\x95e\x03\x9c\x91@\xc4f\xa1tV\xb9\xcd/H>\xcd\xf2\xb9P\x7f\xc7\xa2\x8d\x8b\x84\xcd \xa6\x90\xd0iB\x13F\xa0H\xfe \xbe;\xf0\xa3[\x8cw&\x0d\xfbE$\x0d\xfb\x8cMp\xfeb\x1c\x94\xf9\xd3\xf9\xb3>\x1f\xd9\xeb%\x8byO\x85\x16\xd6\xd2\xa5\xab\xce\xad\xe9\xed^\x91\x80*-?\xedO\xb3\xfc(\x1e\xcfj\xf1V\xc6@\x06u)R\x8a\xdc\x15m\xa9\x9b\xd4e\x8a\x82\xf6\x03\xe7g\xef\\ \x7f\x90\x8el\xe6\x1fI\x04'|\x9e\x1f\x89G2\x9d\xd2| B\x8a\xcb\x038r\xa9\x88\\\x8bd%!\x1d\x15\x86`{\x00\xfb]\xa2\x14\xda\x85\xe1Q\x95@\xc6p,\xbfN\x8a\"\xa1g\x82 \xc3^?\x91\x95\xc8f\xc1\x86\xd4\x94fR]\x82y\xe6/E\xfcU\xde\x97-\xdc\xbds\x9d\x11\xfc\xd76_\n\x85\xa7\x96\x01\xeau\xbc\xb0\xa6<\xfb\xf8\x85\x96\xc5\x93<\xcb*\x959\xff\x81\xa2s\x19K#\xf26\x85&\x93b\xad\xebb\xa3\xae\xff\xa1'\x85r\xcf\xa9 \xec9\xdd\xa0i\x9c\xc8r1\x89\x19y\x8e/\xaf\x0c\xd5\x0cm\xdfn\xba\xb29\x99g\xe7\xa4S\xd26\xccz\xe5nxBR\xc2'\xe0\xdbtk\xd6\xbeS^m:e\xd1IsA\xdc\x89\xa3\x85\x08Y\x92\x17\xa5G;\x94\xae \xa12\xce\x94\x13\x18\x92\x91l\xd4c,m\xf4\xb0\x8c\x06\x83]\xd1)R\xc6b\n\x14w\xf8\xc8\x96$\xda'\x91\xc4\xb9\x8c\x03\x15\xa6\x8d\x95]'\x1aw\xfa\xe2qr\x17K?<;Q<\x97)c\x12YM\xcbb\xd6RW\x01\x03\xc8\x82\xa5\x83\x06\xca\xe5*p\x02K\xe9\xac\xdb\x8e!\x03\xab\xd4qF\x82\x04cH\xd0p\xc3\xf7n\x04\xbd\x84\x9e\xc7i2\xe1\x94\xf8]\xccf69\x88\xcf&\x85\x01\xc4.\x0fT\xfe\xd2XNy\xc5\xa7\x8c\xd4*\xe5\xfb\xc9\xfe\x01?\x07I0\xae\x16\xd0\xa9(\x9d\xe2\xec\xc7r\xf6\xe2\xd7\x8a\xff\x92\xbb=H9\xbe\x06I\xc5\xcb\xb0\x10\xcf\x8e4\x82\xa9\x81\x07\x90{\x9eR\xd4\xe9Z\"\x1ee\xdfy\xd9\x9b\xe4\x9aZu\xd0\x1a;`\x9c\x92\xd8Y\x94Hk\xbc\xed\x16\xc3\x84?\x84Ym\xc0:\xea\x8d\xb3\xee\xf6k2P\xe7\x04J\x8b,_\xa9\xb8x-t\x11&\x06@\x8e\x86 b\xb1\xfeE\\<\x16\xf44@\x1f\xb6\xfe\xc9 \xa1\xc52'o9\xbd\x0e\xea\xc4[\xb1R\xce\x81\x97\xbd{\xee\xc1\xd6\xf9P?7\xf4\xd1pQ\xec\xd2\x0d\xb6\xb8x\xae41\x9b\xf5\xaf\xf7\xd3\xb12%\xc86\xebA\x9e[\xce\xb67spR\x1a\x11r\x01/\xfde\x9e\x8d\xbc\xd0\xbe\xd4\x89Y;\xdcKo\x1b\x94\x03\xdb\x99E:\x88\x08\xba3\x93\x80a\x82\x19\x86\x19eL6\xf7H\x94}\xea\x80\x80\xb6\xda\x9d{K\xed\x98\x8a\xc11`+?\xd2\xfeI*\xd6Fgk\xa2*\xaf\x03\xb24\xc8\xe15\x1a\xd2r?\xe8\x0c\xce\x9edp\x0c\xd3I\n.\xb9\x0f\xe0\xb3\xc1s\xe8{\x12\x01\xb2W\x8dd\xc0\xaf\x1f\xbf\xb3TO{\xc2\xdf\xd6\x81dS\x0f\xfedO\xfc\x81\xc3oOH&*j\x19\x1f\xac5>\x9c @,\x9d\x9c&l\x8e\xe0PN\xb14\x13.\xc8\xd4\xab\xcf\x9f\xaf\xd3\xe78[Rv\xed._\\\xa7\xcbOd\xf5\xa3`\x8aY\x0b\xba~\xdd\xfezs\xdd\xae\xbc;}\xd9\xdd\xe9 \x13\xa5FK\xa7\xe6*\xc2\x86V\xbe\xcd\xf1\xf8\x93H\xd3\xa9(\xcaW$\x90\xbf\xfc\xb4\xa1?t\xa6x\x14\x15\x90D\xc6\xaaVRJ[\xb3_u6k\xa6m\x1ce\xac\xe5o\xd1\xab\xf8\xc0\xe6\x8eyr\xb2\xc8\xc9\xb9\xc9\x14\xec\x97\x85\xe5\x9f\xbeIQ\xeb\xc5_\x9f8\xf2\xf6fJ\xaa#\x11d\xa5H\xc7\xf0\x87F\xe9\xa8\xb8!\xa5\xbb\\\xfc\xaa\x13\xbd\xcck\n\xbf8\x93R\x7f\x8fz\xed\xe0{>\xa0\x7f\x92`\xd73\xff\xdd?\x9c\xb8z.k\x92\x9b\x8d\x9c\n\x15-\xab\xadt8\x17\xc1\xa9\xc5\x9d\x12d~\xd8\x8b\xe0\xc4\xa1\xbc\xc1\x04pL\xf5\x86\x91/\n\xbc\x11h\xcaU\xb1\xb8I\x04q\x18\xc1\x96T}T~U\xe6\x0eD\x1e\\\x19~\x18$\xb2P\xd7!\xe7\x02\xa4\xf6`g\x0fK~\x1d4\xab\xc9\xf1\xeb\xcae\n\x17zvl\xc6g\x14{U\xf9\xc6\x9fp\x9bW\x93\x1cZ\xa1'\x8a\x8f\x19\x1f\x9b\x82@m\xc8C\xea*\x8b\xb2>c\x16\x95\xd4\x07Q\x97\xb4\xd5\x14\xa4\xa5\xa3@O\xb8\\p\x08\x19\xee6\x93\xbe\xc2\x82\x8f\xd2\xe9\xa6\xd4/\x89\x05\x8d`\xe9\xe4U\xb8D%$\xb6\xc0\xf8\xe9\x01GD\xb9\x9e\x84\xf3#G\xc12\x8c\xe0(\x881\xeb\xc3\x05?'D\x0e\xd7!\xff\xcc7\x9d;cn\x1e\xaa\x95\xa8\xf4W\xe1\xf6\xd9\xba\xff\xc2\xcf\x13\x976\x80c\xea[l\xcc\xf2\x08\x1b\x0c\xf8\x02h\xac\xf3\x8br\xa6\xb2\xbaP\x04\x99\xc9\x96\x83\xbbW$\xde\x0e\xaa$_U\xcb\x07\xda\xdf\x8f\x1e=\xe2\xf4\xe3\x16\x9c\x99\xf7\xf9\xb2\xde\x08\xba\xe9k\x1fY),\x1f\xef\x8f8^\xaci\x1b\xc3Z\xfc\xb1\xc4qI\xbd\xea\xb0\x82\nl\xc3\xb9\x84\xccH\xe8\x15\x07\xf5\xd5\xcdB\xfe\xe5C\xf1\x1d\xe1+\x0d\x070L\" \xbeK\x9e3\x17\xbd\xac\x12k`\xf5\x82Z\x86\x02Z\x9a\xe8:\x12\xdfph\xd1a2\xb2\xd3\xcc\x02M\xb46\xeds\x1c,\xd1-:\xe0\xaf\x15\xf5\x8c\xc6>~ \xd3V4\xa1\xba\xae\xc2\x90\x1f_\x8be1\x0b\x0c\x9eEV\xf2\x12+\xa0e~@\xce\x9c@.w=zmUj\x95[\xb7\x00\xb3\xb0\xd6\xd4+\"'c\x99\xd8Wl\x7f?\xce\x12\xc1S\x82\xc9h\x87\xbc\xa3QX\xe3\xc8\x98\x0fG\xa6.\xe5l\xc0\x86\xb6\x04x\xea\xca\x10\xab%\xf9'5\x115FEKl\xad\xfe\x01F.J]\n\xd9\xcd\xb4\x99wU8\x8d\xf2|\n\x0b\x90\xd1a\x9a\x82W\xc9\x99\xd6\x8e\xb9d\xb7\xe0\xb8\x85\x14\xa9\xe8\xb2\xf9\x1f\"\x7f\x9dJ\xdb\xff\x0e\xec\xc1!L\xfa\x8bLT\x82\x98\x0cSN\x8dZ7\x86|\xe4\x9c\x1f\x9f\x08\x06S\xfc\x0e#\xec9hh\xff&\x95)\\ \xcc\x11L\xbaX\xd2\xab\x08~\xbc693F\x97!vY6+\n\xf5\\\\ \x82z\xfdp\x11\xf9IP\xf6\xb1hF\x12EC\x84\xa6\xd7J\xd8x\xc3\\\xce\xb9%\xb8\xbb24\x1b\x95\xb3\xc3%\x13\x8f03\xf2H\xc4q \x19\x89\x99\xd8\x89&x\xaeM\x17k\x99\xa1U\x02\xe8\xa7$\xc8m\xa0\xd2\x04D&Y\x1e\x8a@b\x0e\xa9\xb2P\xf0]\x9a\x9f\xa7u\x18\x9a_\x1acL\xe5\xd6\x00\x82\x14n\x81 \xb5\x91\xae!\xa1\xce\x1a\xca\x1c3AUtz\xc9D\x93\x08|s\xe7\x0b5B\\.\xf3;|\xef\x8d\xe1\x10\x16\xc3\xe9\x08\xdc!\xeb3\xa1(\x9b\x08\x0b\x8cX\xe8\xfaZ\x99g'\xd4\x04\x13\x8f\x83B\xc0\x01E\x97\x85F\xde\xc7N\xf2\xeep\xf3\xaaU\xfc\x92\x0c\x01\xdf\xcf\xa2\xde\xcc<\x8c\x103v\x1fHV\x9f>\x80%\xa6\xf9\xe1\xb81\x80\xbd\x10\xe2\xe1r\x84hp\x0b5\x0bl\x98lo\x8f\x1c5\xeb@\x13J\x87\xf9H\xa8\xb8\x84/|\x80 \x05\xb7\xb1\xda\x98\x81\x90\xf0\xc7\x8b\x08\xd2\x08\x96\x11\xcc,\x90\x94\xe79\xff\xbf\x08S/\xa1\xc4\xe5?\x16,\x86{\xf0/\x98j\x9c\x8b\xba\xe3h\x0f?\xde357\xab\xda\x99\x99\x11\xf1tSr\x7f\"\xd1m\x86\x14\xfc\x00R\xf8\x17\x92\xfd\x14\xd6`\xc1\xd0\x0b\xed\x93\x82\x05\x8b\x08\xa6\x11\xcc\"8\x0d\x9b\x01\xf8\x1d\xe2\xc7yY\xed\xa3\xf2\x80\xb0\x1f\xb5B\xbdZ\xa6\xbf\xc9\xb5\x08Z!\xc5P\x80O\xb9\xa7\x1eb\x99=Q\xf3\xacslz\x97\x88\xf6\xf5\x0e\xdd*\x8d\xa4\xfa\xcc1\x06\xb7\xa2#\xe9\x92\x16\xf0%\xb5L5\x00\xa8\xbbn\x19\xa2\x81_0\x80\xafH\x90X\xed\xe7\xe0\x14\x17\xc6\x19e \xdd\xa8\xf8C\xbb\x7f\xedW_\xf8\xccv\xecj\xa8\xb6\xa7mct\xe6J\xb5\xe6Im\x10\x90:0\xf9*\xa7|\x06s\xb8\x0dw\xdb-\x8f\xd5\xb3\xfd\xf6\xb3i\xf9\x9d\xcds\x7fa\xf1\x188\x97\xb1CG\xc6\x80a\xe4\x9b\xbb\xf3XZ\xe4\xea \xe6\xc9+\xa9\x9d\x99/\xa4\x18:\xec\xaa\xe7D\xdd5\x1e\xc4`r\xa9\x03\n^\x89\xe3:\x87G\"kt\x0e\x0fa\x0e\x87p\x81\x99\x07\xf2\x08U\x0c\x18g\x8a\x85 X@\xfb,\x13\xf2w\x88ei\xd9\xc6n1\xe8'r\x9c\xfc!z6\xa4\x01\xe9\xd2\xf4\x96\x9a\xda\x0e\x7f\x13\x93\x17\x89\x9f\xa7\xc5\xc4\xed0\xa2\xe5\x01\x99\xb1\x8e< \x0b\x16\xc1\x05\xe1l2\xf3\xc8\x03\xa2 \x1f\x81=\xc6r\xc1\xb4#\xeeKsZ\xbcJ\n\x06\xc3^\x04\xbdQ;\xa9E\xad'\xcf\xa4\x16\x89\xaa\x15_%\xc5\x0f\xcb\xac\xe4\xa4\x9e\x95\xdcq\x9ar\x01\xb6d-1I3\x8e<\xcb\x93\xb3\xc4\xe6\xd9\xa6d.\xde\x13\xed\x8b2\xa1\x04n\xc1\x99!\x14\xd2\n '\x0c6\xcb\xae\xe1k\xbf@\x901\x04\x99d\xabjU\xf3\x1dE\xa00\xb1\x7f\xe5\xc4\xc6\xe0\xa1\x96\x0dvs\x975\xc0c\xe1!\xec\xc2!|\x92\x19\x0cq\x9b\xed\xca\x08SqsW\xa8\x1f\xf7\xc43f\x8c.\x03\xb0'\xd8c\xe8\xfb\xa4\x16\xd3\xfcNe\xcf9aq\x92\xba\x19*\xe5\xdeo})q\x06\n \x14\xdfb\x94\xc08^\xc4\xe3\x84\xad\x84A|\x00\x97Xo\xbb\x195 \xe4A\x14\xb12\xf1R\xd6x\x89\xf4ORrN\xd2\xea]\xfb\"n%~\xe1\x06\x89\x08\x9b\xa8BL\xcbuV^\xf6b\x14\x1c^\x9b\xb8\xdc;7\xd3\x05\x82E\xac\x14~\xad \xa4\xcf13z\x17^\xb9\xe2,k\xdbj\xb3\xf4-H \xcaJ\x1c\x9aU\x03 \xcb,\x992T\\h2\xaf\xcah\xaf^R\xba\x0d\xf1p\x91&c\xe4\xdb\xf6lQ\xbb\xb5\xc1&\xb4 \xf9&d\xa0\xd1\xcbn'8\xfe\x0d\xc9$tjZ\xfeTK\xab'\x9b\xc0\x15\xe6\xf8\xd3\xc8>!%%\x81j\xd7NE\xc1\x19)'(\x16\xcbb\xd6\x05 %\xbcU\x11\xfa\x96]\xae\xc1\xc9\xca \xe1\x1b\x16\xbai%\xe0\x9f\x90\x11\x91dQ\xd9R-;\xbe\xe6\x16\xbc\x8b2\xbb\x96\x16\x11%w*\xe8*l\xe3\x1e\x1e\xe6^%\xd9\xea`\xcb|\xf3:|R\x87\xecn\x04;{\xeeV\x97\x14wWW\xcb\xad\xf5\xb8\x16\xb0\xad\xa1a\x9f\xf0\xc8\xd9\xf1\x05\xb3#\xfbd\x99HnH7\x07\xb1\x17(\x9a@\xee\x00\xf0&\x89W\x1e\xfb'^i\xf7\xe1\x95\x90\xa3\xd9\x91o\xe2\x95vw\x1b\xe4\x19y\xec\x97g\xc4\xdc\x87\xd7\xb4\xce\xaf\x93\xd7\xe3qg\x9e\x91&\x9fx,\x08\xad\xd7\x89\xa6o\xc2v\x11\x8dz\xcb\xbe\xf5\x97\xce\xbf\xa8\xee_9\"Y\xe2\xaf\xac\xfa\xe7\x1e\xddfI\x19\xca\xedi\x17gOJ\xe4\xb3\xaf\xcd\x06\x05a0\x14\xb1\xabB.\x9e\xa8\xa7\xec\xdfW\x04\x86b\xd1\xd6\x8d)\xd0F\xd9)\x9aur\xa5\xfe\xd8 _\xbc\x02\xa1s@\xa1\x04\xc1\xa2\xd7w\xa6\xd7\xad\xec\xdc\x98\xc8_\x92d\xe2\x82\x05:\x9b\x135\xb8\x9c\x1a\x87\xa3s7\x91\xc6\xdcl\x94\x90\xc2\xb4\\I\x81\x12\xf6\x00&\xac\xad\xc1\x9a\xb1v\xe2\x89W\xcf\x8f?X2O\x9c\xa3\x05]\x83\x9cM\x7f5gV<\xc0\xb1\xa3h\xac%-\xa8f\xd2\x8cn\xd3\x7f\x9d\xb3\xe1\x8c\xa9`\x90sV\x05\x83\x9c\xb32\x18\xe4\x9c\x95\x89\"\x9f\xc8\x9c\x91\xda\xbbx\xbf|[\xbd\xa5~\xe1\x8b\xa5\xfd\xed\x89\xb2\xc5i\xb7\xd5\x17\xea\x17>\xaaR{=)\xf3|U\x0f\xcadOOj\xd9\x9f\xf0\x85f\xe2\xa0'\x0d\x89\x19_\xd2\x93\xf4<\xd1r\xf6\xc8\x87z\x0e\x9d'\xb5\xa4:\xa2\x0b=\x03\xce\x13=#N\x04\xf3\xb6\x08\xf4\x84L\xb3\xdcd}\xb4iZh\xe9\xd0\x84\xde\xcc\x0c#\xdb\xca\x8d\x81\xeb\\\x86^hL\x97Y\xbb\x88\xfaC\xe1\x13e\x0e\xad\x15\x0e\x80\x8f\\\xadK=\xe1p\xc4O2s7\x99\xf4\xbb\x10\xaaHs/LT\xbd\xb0S\xf2\x18\xf4Q\x0c]\x06,,R\x1fs\xba\x15\xd7\xc0\x8c\xb0\x85\x1d\xd4q\x86!\x8e\x06\xdfJj\xa0jSe\xe3\x80\x85\x95,\xf3\x80\xf2\x12\x06p\\\xe5\xce2\xcf\x7f+1\xabTj\x8e\x13\xbb\x0f\xa0\x10.\xa6\x05\xfaIJX\x14\xa3R\xfc\xb2\x12\xe4\x0c\xddD\x96%\xf48\x8d\x0f#X6)\x98\x01G\x1fO\x19i\x1d\xef\x9d(\x1a\xd4q\x14\x83\x8c\xbf\x00S\xa5\xf5\x13\x85\xfa\x0e\x84\xcd\xdc\x08k\xee\xc4\x0b\x07\x93:\x0e\xda,J\x88\x839&\xcb\xe4\xd8\xa5\x83\xd1\x80\x82\xf8Rf\x86\x0c\x1a\xbf6DN\xb5Y\x9c('\x9b\x8ceoRY\x91\xa1\x92/\x92~mq9M\xceD\x85\x11\xc4udi\x1fog,\x82\x15\x8b8\xd3\xe0J\xa3~b?\xad*^]\x1d\xe2F\x08KEay\xb2\x1b_\xc2\x04-,\xc8\x1dQ3Ryf\x87O-\x91\x88d\x1cv\xc3\xc6\xc4\xa0\x16\xf7\xcc\xe7\xb6\x8c\xc0jc\xad\xe9q\x96\xb5rV\x16O\x13u)b\x12K\xff\xa5C\x85`\xe2x?PQ\xee\xf8\xd3\xce\xa3\x82\xf4K\x89e\xe5\xc3]\xf4\x8c\xdd\x81\xd8\xfd \xaa\x18\xf9k\x16\xbe\x11_y\x04s\xc4\x1d\xfe\xf2\xdca\x0f\x95@\xe8\xe4\xe1\xd5\x95\xa0\xe3,\x9fvZ\xee\x87SG\xd1\x11\xd0\xd4\x12X\xedq'\x85\x03N5\xdd\x9f\xc8\x96\xd1\xb3k9$\xe6\\)`\xdcvx\x97/a\xd1t\xcb\xcfPs\xdc\xb1\xac\xc2\xa9\xd5\x7f\x01S$/\xf5\x05L\xe0\xd1#\xc8\xdc\xdf\x8d1\x00f\x9b\x1f\xeb\xea\x03\xc72\x8d\xcb\x05\x1d\xdf\xf0\x82\xe2\xb9\xf6\xc0\xea`\xa1_|\xed\x8d\x19]L\x97Z\xf4\xa5M\xe8k^\x89,\xb2\xc7E\x9d.\x85|\xf3ZJUh\xe7\xcbv;\xbe\xba\xf80\xd2\x86/a\x17\x82\x83.\xf5#\x92\x8f\xe1\x00\xd2.$\x079\xf2X\xb8\xa2\x17\x98y?\x13\x87R\xc2Q\x83\xf2S;\x0b\xedn \xe0\x9c\x92co ]l=\xf6K(qaL\xf6c;D\x96\xad\xec\\\xe7\x0e\x8d\xc2\xb2T\x93\xc3\x0e\x17\x92\x96\x9a\xaa\\\xfc\xd4T\xe5\x0co(=9\xc5_U\xd6\xa3e\xa9$\xcf\xf0\x87&5&\xe2\x86\xd4\x97\xc7\xe2W=\xb9\xd7\xd2\x0b\x14G\xcc\xa5Q;c\x18\x06}\xc6\x07$\xec\xfa\\|\xf34\x85_\xb6\xa1l\x03q,\xfc\xf1er\x1ewL\x05\x11N\xf3\x0f\x15qS\x8a\xd9\xd6\x07\xc8\x0b#^j\xbe\x14\x99kc\n\x96\xb3\x83sK\x1b\xc4u\xb8td\xcc\x19\x0b\x13\x9f\xb4\xe5\x89\x8d\xa1`\xe1\xd4$\x8d\xc5 \xa5\xf2F\x05\x92\x0d\x136\xde\xb2c\x18\xc0\xd8\x1c6h[\xd1\xa2>\xf2\xf2\xf8'\x95[\xa6\xdeUT\x83\x9d\x80<\n;-\xde\x12\x0e\xcb\x9b\xcaD\x16\xeb\xe3l\xc7 \xd8\xf0\xe6\xd8\xce\xd3\x95j6\xf4\x07(c\xf0\x88\xe6\x99J\xa4\x07\xea\x9c\x05\"?\x97dK\x91+\xe5\xa3\xe2\xe2\xa5g\x1a\xc3\xa7\xf6\x91\x94\x16\xf4\x86\xedW\xb7\xac\x9a\xf9A\xf1\xe5C!\xd0(V\x10\xb6\xe1\xdc\x86t5sD\xc9DJ\xbe\x15\xbf~ \xfc\x16\xd0\x15\x07\x0b\xab\x0eJ\x1f\x06\x11\xaa\x95\xa3'\x03\xffhg\x00\xe7N\xc4\xeb*\xf3n\xad\xe8\xe5L\xd2\xa3\x05\xbd\xa8\xa83Q\xeeX\x7f\xa2\xe2\x0f,\xe5\x8d5\xb3\xbe\x9en\x07\xf33\xd8\xd9\xf6\x0e\xf6?\xf1a\xff1\xc6\x03\xb6m\xc5\x19\x96\xa5\xcc\x8c\xd8H\x91\x9b>@\xb3\xd1.\xfe\xbd\x8d!c\xbc\x05\x83\xc7\x02\xc7\x87\xb8\xb9\xbf\x92.2\x15s\xdc[j\xd8\x86\x86_\x13\xa7R\x13\xfb+\xd1#\xd5\x91i\xac\x82N\xb7a\xccG\xfd \xc4\xe7r\x1fa\xf5\xac\xb4\xbe\xe3\x0fa\xa8\x8cG\xe9H\xee*.\xd8\x8da[e\x1f(\xf8\x9f\xe7\x86\x11\x8d\x85L\xc8\x1f\x8f#QF}\xcc\x0f\x00\xf1o\x82\xff\xba&2\x15\xd2X\x82\x11\x04\xf8\xe72|\x00\x0b\x0e\x11\xec\xb9\xe0\xbb\xc9k\n\xb5\xa1\x8b\xf1\x9a\xf1n\xd2\xe5N2\xc3 \x8a\x87\x18#!\xc8\xc6RH\xdc\x07|`x[Soat\xe3\xc4\xbc\xb2X0]|s\xeb\x16\xc6\x01\xa3h6i\xa8 :h\xc5\x1c#X\x90\x90\xa7bz\x9c\xdf(\x1e\xc0\n\x1e\xc19\xff\x87S\x82.Y\xe2\x14\x060E\n\xb22+I\xd4\xc5\xbb\x9bK\x92s:\x12\xfdV\xbf\xad \xa4\xcc\xfc\x9d\xfaP\xf4|\x8e\xb4\x0b\x060\xe9\xa0L\xa0\x18|\x05\xb2\x80/\n\xc6\xac\xcfj\x8a\x93\x1c\xd9\x98e\x88g\xdd\xa3\x01,B\x8898\x16\xb8h\xf8o!\xdc\x16*\x07\x85VSR\x0f(\xda2\x85O\x96\xee\xc8\\8\xce8\xa5B\xfcp\xae\x9c\xdc\x87\xa9S\x98\xe1\x0bs\"\x84\xeeG\x8f\xf8\x81\xeeZ\x18>\x80\x13\xa4\xae\x8b\xea\xf5\x10Ns\x12\x7f\xb2\x7fu\"\x05\xb5\xed\x01\x04bK\x85\xf05\x9c\xe0&\xd9)!#\xf7\xd3\xf0\xc4,\xdc\x9a\x177\x15X\xfdH\xaa\x11E;M\x90\x16|ev`\xcc\x97(\x15\xfb\xe1\xa1\xd8\x0f\xb5\x0f\xca\xe5,8%\x90\xef+\xea\xb2#\xa9\xca\x8e1\x8ar\xe3\x94\xa4KTkT\xc7\x89`\xbbI\x8d\x9d_V\xba\x1d\xc08\xce\xca\xbd*\xd5\xdd\xabf\xbe\xeeU\x9cL\\\xb0 \x16\xe2\x0eFj6\xa3\x1b-\xc7\xf1c\xbf|\x91\xb9\x9e/\xb2\x16A_eY[\xba#B0)\xb6\x93 F \xc6\x9a\xbe'\x15\x10~$\xf7l\x82\xeb++\xfd\xc5A!RJ\x8aU\xbf\xe9\x94\x92\xb9\x88GK7@\x8f\x04\x1e)\xa7\xc9[\xb7D\x82\xa8\xca+9A\x92\xa2 \xdf\xccrcY\xa9\xb7])\xe6\x84[\xf5.*\xe5\x94\xce\xfa\x9co\xcas\xaf\xf6\xdf\xb9\xdbw\x16z|.\xdc\xe1>\xb0\xaa\xbe#\xbf\xb5\xb1\xdf\xcd\xf9\xff\xfa\xfa\x8e\x1f\xdcP,Ka\x8e\x9b\x08gk\xf0\xb5oJ\xbe\xba\xea\xe1\x9dfT\xb1+!\xaa\x14\xe1(\x02\xe1\x8f\x03\xb4\xdb\xf7OD\xea \x91;<\x15\xf6e\x8f\xdc\xe1^sz\xeeT&\xac\x842a\xc5{|\xcd\x02Q\xdd\xe6\x88\x05\xadP?K\xeb\xbf\xbb%\x0ci\xda\x89\x14KoM\xbd\x14K>8)\x1c\xfc\xbcHI\xc1,\n\xff\xa2\xe2\xf8\xf9\xd1\xba\xb4\xa9\x12\x06\"o\x93\x19o\x85~\xa2KQ\x18K\xf28\x10\xda\xd3\xea\xe7>|\x0d\x89r\xdcD\x1b\x910V\xb6\x93\x9fZDXu\xc9\xfe\xb5\xf9H\x15\x0bJk\x96}\x14\xf6Y\xf6\x92\xac\xc8\xe4\x98|\x0e\xc2\xcd)3\x19\xeeZ\xb8\x86\xb0?M\x93E\xc0;x\x1d\x8b|:\x1anr\xa2\x9b\xd7p\xb5\x8e\xb9\xba\x933:\\\xa0\xf1L\x95}c\xa10\xfe)%\x86\xe6\xdc\x1bkj\x0bND\x96J45(/\xb5X3\xabm\xa6B\x80\x18Qi\x19\x0e\xf7F]\x8b\x9d\x0b\xd5\x9eXG9\n\x91j\xdd:\x081?\xe9L\x1f+\x12Z\xb5\x10\xcbB)\xb2\x19+\xc9\xb0\xf1=\xb9\xfc\x9e(\xca!|\xc3%\xe5\xc8\xcc\x9c\x0c\x07\xe3kt\x7f\xf7\xcc\xbc\xfc\xa6\xc3\xeb\x04\xdd\x954\xaf\x93\x93eA^\x92U\x01U)\x0bE\xf1\xdaI|m\x9d\xbe\xb7\xd0tc\x8f\x9b7\xff\xec\xafm\xfe\xd5_\xdb\xfc\xc7\x8e8\xb6\x7f0W\x8aXV\x1bA\xbd{~\x83o\xf1.\xafN\xad9CR\xe6\x08\x8b9\xaa\xe2%\x9d\x0d\x9d\x97e\x92\xe5G\xb2\xfe\x19\xfa^9\x15b\xfe\x83\x05}7\xc9n\x02\x0b#\x12\x99*\x8a\xf09\xcd\xe2\xa2\xd3\x0d\x15\xf4\x8e\x12:N\x97\x13R4\xab\xda\x97-\xaa\x176kv\x16\xdb[\x1c\xc7\xe3\x19yO\x8a%\x86Q\x12\x1aaE3\xe9Q\xf8\x91\xe2\xe3Z\xd9.W\x04\x93\x12C\xcc\xce\x14P\xa7P\xadzV\x9e\x8c\xa1\xf4:\x14\xbc\xa1]\x1da-v\xa5y\xa7n:?\xa1\xef\xe5\x07\xc1\x9b.\xa9^i7UW\xa2]\xbb\x98\xaeXx?'Vu)\xbbf\xee,_\xab.\xe4RHg\x1d[uU\xfb\x0c\xdd\\\x87\xbb\x1d\xd9\x90\x00\xc3:\xd5\xbb\xda\x87{\xa3H\xfb\xbb\xe5^\xd8\xbc\xdcfQ+\x19Q\x97-\x8b\xb9\x1f>\xf2\x95\xc2\x15\xfe\x9d\xcbLp\x00\xbf[\x11\xa9v\xd3F{?ws\xba\x9d\x148o\x12\xdd|s\xd2b\xa7\x01y3\xa4\xd3\xa7\xa82\xc6\x81bbz7\xc5\xadj\xa6d\x18&\x8c\xbe\xf6\xa2\xc4Nn\x14\xedp@N\x02\xe43\xbck\x13\xa0\xac\xc3\xd9\xa6N\x83\xf2\xa0\x9a\x91\xfaXZ\x04mD)\xeb\x98\xb2\x99(\xf9\xcc\xb9\x86\xc3o:\xeb*o@i\x94\xf8\x9atR\x19t\xb4\x93\x04F\xc9\xaf\xf6\xb7\xcf\xa5OZ&h\x83\xdbE\x05}\x13\x9c4H\xc9\xef\x1cZ\xcbHC\xb6\x18)\xd0\x92\xe3\x9bq\x01\xc0\xa2NhUE\xb4\xec\xf1\xef\xbb=\xd7\xdc\x1b\x9c\xea,\x16m\xeev\xba s\xe4\xe2\xb2\x88`\x7f\xd02\xe7\xcd \xa9S\xe0\xa3y\x06\xa0sW\x1b\x8c\x13\xf4\xbd(\xa4D\xdb\x961pW\xa8Yj\x90-W:\xc1\xb2'\xd4\x04\xc8\xbc\x8f;{\xb0cHa\x0d\x92{h\xd2X+WP\xa7\xb1\xb5\xc6--_\x8f\x8d\xeb\xe0\x0e\xa9\x81\x97\xa3\xe6\xe8\x90\xff8\x0f\xd7Q\x8c\xe4*\x82-\x1b\xec\xcc\xb1E\xae\x19\x19\xcfx{\x0f^[\xfe\x0f_\x95_\xc7\xc9\x8e\x9b1k\xa2\x9a\x15\x8f\xcf\xcbD\xbd~\xc7o\x86\xc7\xd4\x8a\xf7\xb2\xb5U\x11\xc4\xccq\xfaf\x7f-;P\x8e\xa7\xcd\x0bH[\xbb\xa1\xb4P(t\x98\x0e\xa6\xc0\xe5My\xae\xc5 \xd8\xcf\x98\xa5\xb9*/t#|\xe2p\xeb\x05%5\xe8|\x02~P%R\xdc\xde\x8e \xe3\x0d\xe5\x12\x02hn\xb6\xe7\xf9\xe4Sm\xfa\x84\x81Z<7\x1f\xe1\x03\xa6&\x1f\x918*/v\x03m\x036\xc3\xd3\xf9S\xe1\\\xdc\xc9\x8d\x80\n\xca\xa8s$\x89\xfb\x0be\x08K|\xb8\x12\x906\xb1b\xb8\xeb\xb0\x9a\xa9\x0b\xb3Y\x1a\x13\x83\xeaW\x1d_\xc6h*\xd4r\x02}\xc6\x8a\x882\xb7:\"\xcf\xd8\xcap\x82U\xf01\xf3;~\xb6\x81'\xbe\xc4\x8fX\"N\xf9\x0c7r#\xe2B\xc4\x1e\xdcF\x1f\x1c\x0cDD\x9f\x1c\xf9\xfe[Y\xc1,\xeb\xcc\x9b\xc4\xd1\xe6\x9d\xa8cf\xb7'|@\ni \xc8\xe1\x04\x0c\x12X\xaf!\xe6\x7f\xc5e\x8f\x1c&}\x96 \x15\xbav\x10\x07a\x05)\xf3\xa0\xa4\x93w\x0c;&\xcc,`0\x10\x9e~\x01\xdfl\x85tD\xda\x85\x03c\xa5\x89s\xe9\xd5\xe8>vR\xc5bV\xe1\x06K\xac\xac\xa5\x8c\xa1\xcb\xca\x80\x18\xc1\x16\x9eR\x992\x8b-\xcb4>A\xda<+<\x8ea\x99\xe1\x86\xc9p\xd3*)\x10\x93E\x15\x15\x93\xb6\xcd\xe9$\xa6\x9b1\xf8\xb1\x85\x11\xa4_\xa6\xa7\xca\x9c\xe09\x96!\xda\xa4\xc2\xbcf!F\x11\xb4\xdd\xe5\xaf\xf45\xbe\x9e\xb2N\xda\xf4x\xff^K\xe4\xd6\xd3)\xb4\xd1Zm\xab\xf8\xec\xeb\xe3\xb1\xbc7|\x96\xaa\xb5z\x10B\xd6yZrxmo\x17\xf0HC\xf9\xae\x93\xd8+\xfa\x1d\xba\"\xe0\xf9u\xe5V\x13\x10T\x13tM\xa1\xe4\xaa1 \x96\xd2\xe2\x11\x0c\xb0g\x91\xa8\xa3\x13\xc9'\xcfU\x92\\\xf4\xc6\xd05\x95\x9b(\x08\xeaXk;0\x7f\xf2=0\xddd\xfb\x86x`;\x19K|\xf6\x08 \x1c.\xef\xe72\xc8\xc2E\xa7\xba\x11\xdd\xc1i\xa7\x9d\xa4J\xa4\xe4\xc6\xd3\xb2\xc9u\xa7aE\xb5\x8a\x16\xdb]\xb8\xd9\xee0\x02C\xa0\xe5\xcd\xf0\xdc7\xb0,Y\xee\xb3.\x9b0\xf7_~\xdel@\xb0p\x93\xe3\"\x19\x12\xb5\xabk\x92uP\xa4De\x1d\\JZ\x11\xd6Y\x7f\xa4\x0cY\x832d\x918\xc2\xb2.\xba\xd0-7L+\xabG\x07\x8f\xcf1\x04+\xf9\x8d\xf1/\xde\x81\xe0\xf2\x8a\x1a\xde\x8ee<\x93\x83\xbd\x87\x8bY\x92\x12\xb0:\xe5\x81\xae\x0e@\xdb\x95>\xf3\x04\xfb\xd8\x88\xe6\xf9 ?\xde\x88\xe1\xe3\x8b-\x01\x0e\xfcE:e\xa9s$\x07P\xce\x86\x04E\x07\xed9WUC\xac[\x99_\x85\x89\xb2e\x1d\n\x04\xd0\xb8\xe7-\xf4\xbcJ\xe1!\x16\xac\xb9\x05q\x80U\xfb\x90(\xa7\x18\xa8\x0d\x07*M7R\x04*\xcb\x01$()\x86\xa5$\xb1\xb5\x8b\xc59\xedxeW\x95\xf3\x85\xe5_\xb7K(\xfd\x15\xa6\x8c\xdc.\xae\x81\\\xc5aG\xa1\xf3\x1b\xa3R\x92\xadJ\xbc\x94\x14\xc4\xcbd\x02\xea\xdc\x92\xa9\xe672\xcf\xa6\xbe\xf4\x06d/\xb9\xa4\x00\xa5\xfb\xf5po\xc4%T\xd4\x10\x06K\x15O\x81\xd8\xc5\x8f\xd18H\xab#\x93\x96\x84#\x8f\xc4\xf9\x99v\x93E~-\x85sn\"K\xa3\xa5\xad\xe5u\xb6\xa0\\\xb4\x90\xac\xa3g\x97\x1di\xbb(`\xd7\xaa\xdd C\xbb\x01E\xf533\xfd\xec\xa4\xa8\xc2#\x13]@M\xf2\x8b\"\xb8Kk\xda\xe8\xccN-\xc5\x9eT\xda\x8d\x9a\x83 \xeb(\xe2$\xe1>\xccq\xe4\x99(\xbdx\x08\xe2C\xe9^\xc6\xac\xee\x83e\x96i\xeb\x11\x91\xf4\x8b,g~\xd2\xacb\xa2\x022\xbc3\x8a\x80\x0e\xef\x8c\x10\xcb\xc9p\x7f\x04;@\x87\xfb\x86\x0c\xc1aU\x90\xbc\x91\x95\xc1j\xb1I\x86l\xa4v\xd2\x00\xf6\xdbm6+\xf4\xb9\x1a\xe2\xa0\x1f\xee\x99\x06&8\xd7_e\x8d\x0f\xe1\xd6\xfdR\xfc\xfa!h(\x04m8\xf5\xc2\x89S\xc2\xdfE\xc3+\x0f\xbb\xd1\x17\xe2 \x1fJ\x89\x1bV\xbc\xc8\xc9d9\xde@\x87![\xff\x15=+\x05;G\xd1\x87S(*,\xf9\xf2\xdd\xb6\x0c\xd4\x8a\xe5&\xdfWG@\xca&\x03\xaf\x0f:\x12\x89\xf9\xcc\xc3\xf5\xf4|\xff\xd5\x8b'\x13\xf5s\xec[N%\x8f\xbfu\x0b\xa8\xa6\xbf\xad\x85M\xae\xd7U4\x82\xf8\x05[\x03\xde\xedz-b[\xbd\xc6\xfb\xb2\x8a\xbf\xf8\x02\xa1Y\xea:\xf91OH\x90\xfbz8\x97k\xd6\xf2\xb3\x04\x81\x84\xf3\x84\x06u\xcb\x14\x0c\xfc\xf6u3\x0b\x9f\xf0\xf3\xac\xce\xc4\xdfE\xbcv&Bx\xb6T\xfd\x0bM\xa2\x81Z\xfa=i\xa9\x10\xe4\x95\xd9\x92\xf0\x81\x06\x94\xf6|\xba\x05Y\xe2\xc1\xb9\xe5\x9e\xc0U\x97\x022_\x1f~2\xc1O\x01\x86\xb0W>\x97\x1c\xdf\x1d\x07\xfe\xf5\xf5m\x1e\xec\xff\x06\x9c!\xaef\xa7\x00\x86\xba \\\xce\xe4\x9a\x80\x92X\xe0\x02\x88H@\xd2/\xb29\xb9N\x07\x1c\xbd\x1c\xcd\xcb\xfaR\xffFFJ\xe5\xc7\x8c\x11\xbb\xa5\xb3\xaf,Gq](\xe2\x00]\xb3\xbcy\x81\xf8\x87\xce\\\x08\xc2\xc4\"jr\x90\xfe8\xa3\x05\xcb\x97c\xd4,\xfb\xd1\xf7\xaf,\x8e\xdeI\x99\xcdFD a\x89\x116\xcb\xb3\x0bD\xf1\x0f\xab\x059\xca\xf3,\x0fzG\x97\x0b2fd\x02\xc3\x97\x11\xfc4\x02\xb6\\\xa4\xe4\x00z\xb0\xdd\xcaHk\x19\xc3?\xdd\xd1U\xaf\x88\x8cG\x08#x\xea\x1b`\xf5\x8b\xbb\xcd\xa5\x00[^\xb1A\x19\x17x\xbd\x9a\xfe\x87\xbb\xe9z\xc4V {\xfaUc\xb88\xb7\x15j\x81\\^\xbd\x12\x8f\xea\x1c\x9c\x14\xd7\\zT\xee\xf6\xd6\x13\xb41\xce\x9aY\xdd\xf1-\xe9\xa4/\xf3\xac\xbf\xd0\xb3\xcbW\xdf\x0bm\x13k\xa7.\xb5\x8c\x9eu\xe6\xba'\xf0Hf\xa3<\x10\xc5>\xe0\x10v\xf8\x0f\xbfs\x9fZ\xb6\xf2\xb9\xf4E\xfb\xc9x\xe0\xa3\x14m\xe7\xa5\xf9\xd3\x9f=0\x1f\x8f\xc0\xd3\x94@\x96\x03\x06E\xef\xa4\xc9\xa7r\x0f\x98I\xbc\x18\x14\x1f\xb5\x81@X\x97\xd9\x0b\x16yG\xe2d\xc1A\x94$\xd0\x99SLX\xb0\x13Z\xb0\x98\x8eI6\xd5*\x9e;\x9c\"\x10r\x88\x1e\xf5Ok\xc9>\xf3\xc0\xa6z.\x9bpr\xe8\xfc\xa2\xa8\x96\xea\xd6\xb2\xc6U(\xe5'\xb2*\xac~\x89\xea\xda\xf2\xe3\xca\xf4\x8b\xe5+\x8f\xb7\xf8\xc5\x8c\x11\xae^\x9d\xa8K\xceeB\xa6 %\xef\xf2lAr\xb6\x92\x9c\xaf\x7f+\xfc:#L\x13-7\x19\x83\xbat\x12$\xc2&7j\xe2\xaa\xdb F\xbf\x8a\xdax;\x8fo\xd3uF\x1a\x89\x98#\xe8=\x8d)\xcd\x18o\x1d2\n1\x85\xa4L\xcf\x9b\x93q\x96O\xfa\xbd\x92d\x8ah;\x07\x8bi\xba\xba3\xb7\xa9\xcb\x12\x8d\xd0\xbc\xae\xfa\xa7 \x9d\x04U\xd4]\xf7gW0\x8e\xd9x\x06\x086\xf7\x80\xae\x02\xe5\x9a\xae\x8e\x88X\xea'\x90\xeb\xa7\xf1\x9c\x94\xa1\xc3\x9fD(^\x8c?&d\x1a/S\xf6\x13\xe7\x960\xe7\x8c\xb5\x1b\xfb\x00\xc4\xea\x88\x80\xc3\x8f\xa4\xa9\x98P\x97\x05q2\x94)\xcaS\xab\x15C\x9d\x99t]\xa5\xe4\xa7\xb1P\"\xda\xb1\xa9h\xd3\x7f\xb1\xe0\x1d\x8b\xe0#gL\xde\xdd\\\x95\xaew7Y\xa5\xebm>!9\x99\xbc\x8e\x17\xf0g/\x82\xdeU\xbbV\xd7\xbbk\xd4\xea:\xd7k\x04\xf0\x95\x125\xfc\xed\x90\xadyh\xc9b:\x18F\x8a\x1f\xd2PT\xa6m\xd5\xd0z\xf7o\xaenS\x96\x9d\xe1S\x92I\x95\"}\xb4\xb5{\xa1\xcc\x88\xe0\x1c\xf5f\x95\xbf~g\xae\xdaG\xef\xae_\xfbHo\xb8]\x06\xb5\xd6p-\xf5\xb8\x0f\xb0+\x90U\x9f\x06\xa8\xb8\xd1 \xa7?rv\xbf\x91nDGD+\xf2i\xa30\xd8\xd2\xba\xdc\xe8E\xbe\xb9\x80\xa1\x0e\x90\xa1\x05\xd6\x12\xde\xe57/\xbf\x12\x17\xed\xa1O\xf3l~DY\xbe\x12\xbaRM\xf9\xd3\x8d+\x9b\x15J\x10\xc2\xdf\xa0U%\xc1#\xbf6\xab\x11\x85Z\xb7V3BEH\xe4\x12\xd5?\xb2.+\xdf\xd5\xaf\x99t\xe5$\xfe\xd5\x16\xd4\xd1\xc2\xf4\x9d-\xf2^\x18$\x1a\x84dRh\x84t\x00\x1fX\x1d\xbe\xc3\x99\xaanP\x83zY\xe7\xc0\xb0o#`\xc1\x1b\x16\xc1\xafa\x04o\xaeA\x81\xdb\x82\x1fR`\x13&\xd4\x9ao\xc4\x0dt\x96K\x13m\x8b\xa2i\xce\x86Q?rL>oD3\xb0q\xf5e\x9b.\xbc\xa9\xc3\xcd+T\xe8\\\xab\xc8l\xc67\x0e\xdf\xef\x159\xdc2%\x1b\xac\x8dQ%\x1b@\xa3\x86\xf74A\xd7\x1d\x89y*+\x87=8\xfc*l\x05\x896\x80 0\xb7\x13;t\xb2h\x06\x02\xa7\x02\x9fk\x87\xcd\x06`\xc8\xaf\x03\x06\xda\x00\xc3<^\x18\xf0\x15$\x18Z\x85_\xde|\xd9\x19\x119B\x94\xda(\xa99\xe0\xd6&\xaf\x99\xf3<\x1c\x97I\xc0l1KW\x9c@\xa9|\xcb\xff\x14\xeb\x10\x8a,=e\x0fV\xd5y\xd9|\x16\xc9|\xcd\x14\x0eD1 SWa'Q\xd8\xechB\x1b\x9f\x0e\x96\xd0\x01Au<\x99\x8f\x0bZ\xd7=\xb5\x0c\x1aV\xd4m\x82\xcd\xba\xa8\x9e\nye\x19\xa2N\xef\x8bRL@\x83\x8aP\x1a\xa2\xa2Y\xac\x02\x16\xc4G\xbf\xb0\xd2\xbcbZ\x0e\xd7RT' \x0b\xde\xb3\x08^\x86\x11\xbc\xd7\x97\xca\x14\x08\xe8I\xc4\xcbh\xc06%\x7f\xffe\x9b\xab\x93\xd2\xd8\xd7\xc7\xb8\xe9\xbcy3\xdca\x08r_\x96\xcc8S?\xbc\xff\"\x84\xbd\x11\x0ce\xbe\x18\xca\x14\x862\x85\xa1\xa2\xda\x96\xc2K\xaf\x9aa,x\xc6\"\xf8!\x8c\xe0\xd9\x97s\x10\x0e\xe4{v#\xc8\xf7Wb\x18\xf3\xc7/\xe3dn\x0c\xbf\xfe\xc3HT\xe1\xcf\x86\x88\xf4Jr\xba\xaft\xe8\x10)\xcct\xf1\x10\xedu\x94,D\xb3\x9fW\xff\x95\x88\x84\xc7\xa5\xed!\xbf\xbeb\x81\xb5\x88\x9e\xe6d\x11;\xdf*\xd1\x15K\xf4\xa30 \xaa\x12\xa3\xd8Z\xdd\xdc\x157-R,\xbf\xdaz9#\xa2\x1b\x81\xfd_\x83\xe8\x1e\x91\xa1~{\x01\xca\xf0\xca\x9a[\xb8\xa3\xa2\x86Z/\xd6\xe5e\x89\xde\x95\xae\x11\x82@\x0eS\x18\xa0~)\xde%\xee|S\x0e\x1e\xf7r\x06\x87\"\x91\x8b@\x89\x1cQ\xa2\xba\xb9'n\xee\xb5\xf3\xe5\xeb\x97\xc5e\xd1\x83&\xd4\xce\xe1z\x1a\x827\xf6G\xcf\xec\x8f^\xd9\x1fa\x8e\xaa \xa7\x11\x9c\x10.ZP\xed\xcd/T\xb0.\xa9\xe4A\xb7\xa1g\xd5\xb0\xd6:\xdc\xf8\xf8\xaci\xd4\xf9\xe7o/he\xf2qw\xe6\xa9L\x10v\xd0YY\x1d\xdd\x85\xe6\xf5\xcd[\x1b\xdc\x90\x18\xe2\x94ks\xe1\xe2\xeba\xf5\xb7\xd2Y\x18b6\x9b3\xf1R\xfeV\x92\x89Qe%\xfa\xbfuK\x1b@M\x9fk\x9eli\x1f\xd7l\x03v\x9dT\xff\x84\xcc\x17l\x85br\xf9c\x001\x95\xa2\xf6/\xa4\x9d\xf2\xb41UO\x8dq{\xd1*+\xb5\xb0P\xffM\xb3j-\xe9'\x9a]P\xf8DV\xd0\xfb\x1bl\x03\x81m\xf8[\x0f2\n\xfc\x97\xc2c\x8b\x91\xbc\x06\xbd\xad\n|\xb2\x98~Y\x8b\xc3\x8c\x14\x1ez\xc3\x9a1\xa1\xbeD\x85\xd2ku\xe0V\xad,\x846\x9a\n\xe7\xe0\xa0Z\x87v\x1d\xe6\xda\x1ax*\xd7\xed\x1b\xc7OCZ\x9f\xa9\xccS\xea\xca\xac\xd8\x9a)\xeb\x9ci\xfb\xe8\xae\xcd\xf4\x86\xb4\xfd\xce>\xae\xcf\x1eX!\x91\x07\x06\\k:jZ:\x00])e1Y_uk\xd8\x8dS\xbc9v\xf3\xdf8C\xe25\xc1\xff\x84 \xa1\xbeA62\x0dT\x1b@\x06\x0d\xf8\x1a\x04\x1ap\xa8w\x82\xcc\x16z\xd7j\xc0\xb1\x15\xa8\x8c\xc5\nuxO\xd7\xed\xd3\xf2\xd7\x19a\xefT\xf3o\xa7\x9c\xb4\xd8\x11E\x1b\x7f\xde\xcc\xe4\xed\x17(\xb2\xec(\x99--\xfe\xebu\xdd\xcb\xb0\xaf\xee\xf6\xde\xa3\x93D\xcf\xab\xb3\xc2\xdd\x993'\xfd9E\xff\xde\x94\xcacgk\x1c\x94\xc9\xe9\xf9\xb3k'\xa7O\xae\x9d\x9c\xde\xc5\xc1\x97\x92t<\x99\xd8\x8b\x11\x18\xb6\xa6\x17 S7 \xb7\x82-\x04\xe1\x16\x19N\x9b9\xa4\xeb,zF+[UFK\x0bUy\x1b\xeb`\x97\x0f\xda\xe5\xb73*Jdk\xd5\xb2\xab\x9b?'\x18\xd4\xa2\x1e\xf0\x9f\xd5\xc3V\xf9m\xf5\xe0\x19!\x8bF\xf1\xed\xfa\xc3F\xb3\xeaV\xfd%c\x01\xef\x8c\x1aJ\x8dg\xd4XA\xbc\xbc\xdd\xae \x9eQ\x8f:\xe0\x19\xed\xdb\xeb\x80\xe3CW\x1dp\x16\x144\x82#\x8ey\x05\xbd1\x07\x93\x82\xa2-Yf\xd0\xf6\x96D\x02Nq\xfb\x9f\x88\xb0?\x9bZ\xbd1\xa9\xaawL\x98U\x9a*\xbeH\x9a\xaa\xb8Vg\xbb\xf1d\xe2\xdb\xee\xa4\xc0\x9aq\xac\xac\xbcC\xb7\xb7CH\x026\xa4\xa3\xb0}\xec85\x8a\xe5\xb1\xcd\x8f\x1d\x8b\xfa\xc6x\xec(\x07\xa9Z$\xc1p\xb7yx4\x96>\xa1\x8c\xe4\x05\x19\xb3\x9b]\xfe*\xa3\x12\xf3\xab\xbd.0\xc4/\xbeC6\x94\x98NeS\x18\x9f\x17\xcb~-,0\xf0\x14N\xbfg\xd6'\xe7$_y\xb4\xac\xae\x12\x1dJ#\x8cE\xf5\x0b\x02 \x90\xcd\x93\xa4\xc5\xa6$\xeefZ\x1aHR,OY\x1e\xff\x7f8\xf2o\xc2\x91\xeb\xc6ry\xa2\x08&\xb2\xbai\x14Q<\xa4\xcf1\x85`\xc43G\xab\xe5\x10\x81\x93\xebi\xf4$9H7I=/K\xaf6\xd1q\xafCM\xd3\x1e\\[\xe7T\xdf!Y\xce|y\x819\x0d~.\xbdw:Nf\xde\xee\x93\x95\x8f^\xc2\xd08\xebn\xff/\xd2 \x15\x7f\xadz\x85iZ\x85\xb61\xcf#3t\x90c\xcc\xb9\xafa\xd88\x1d?\x85Xk\xc4\x9b\xea\x80L\xf9\xb0;\xd5[\xc5\x7f^\xfb\xb3\x99\xc2G\xf65\x8f?\x91\xe0\x0bu>8\xfb\xa48FM|J\xdb*\xa01\x8d`\xcaq\xac\xf7\xf7\xbf\x9f\x9c<\x7f\xfd\xfa\xe3\x87\xc7O^\x1d\x9d\x1c\x1f}89\xf9\xfb\xdf{mG\x90\x05\x7f\xbb\xf0P\x1aM:\x11\x81X\xaa5\xb1f\xb5&\x05\x05U([j\x88\xb1\x1c\x9c<4\xa5w<\xae\xf0|\xc1V\"|\xba\x04\xa3\x9f\"b\xd6\xbd\x17\xebJ\xae\x85#\x08\xa3\xcaf\xdf(_G\xd5\xb4\x88\xc8\xea]\xad)\xf3M\xc2}\xee\xa4Kc\xcc;\x10\x8c\xf9xg40\x99j,\xed\xce\xbf@\xa5u!TZg\xb4\xd2d]\xfc\xbfM\x93u\xe6\x86_\xa9\xee3\x14X\xd4\x7f-\xe8pJ\x95\x03\xddBSj-*\xa5\xd6\xa2\xae`R?\xeb\x0f$k\xb0\xa0\xba\xcej\xe1\xa3\xf0Y\xb8\x14>\x8b.\x85\xcf\x82\xaa}\x08\x038\xa7\xf2\x06\xdf\x8a\x88\x92\x11\xb0`N9q\n#\x98\xdf\x9cFh\xfe\x97h\x84\xe67\xa9\x11\x92\xfe\xf7.\xc5\xd0\x9cV~\xfa\x82r\x9f\x19(\xf7\x8aFp\xca\xf7\xc9\xdc\x83\x16\x9flJ\xd8N\xffC\x84\xed\xc2 \xcd\x95 l+>\xde\x13\x1a<\xf7/\xbby\xf4\x05\x84\xed\xad l\x97\x1aa\xe3\xb7\xfaKZ\xcc\x92){\x9c\xa6\xbe\xd1\xfc\x97\xde\x8a\xee\xa7nE\xf7)\xad\x1clO\xf5\xbdvA\xe5\x0d\xb9\xd7Np\xaf\x1d\xd1\x08.8\xb5<\xba\xb9\xbdvt\x93\xbb\xe2\x98\xc5\xe3O0\xe4\x1bb\xd4\xde\x10G\xd7p\x05\xa9\x1b\xe3g$6\x14\xaaG\xbd\x15\xd1\x92r\x93\xf0\x81H\xbcNvv\x1e\x84\xf8\xbd\xf0\xaa\xb2\xef\x058\x04\x99\x84\xc6\x14\xf7W\x1b\xf9\x82\x90O\x1b\x01\x88\x8f\xba2\x1c\xf2_\x86\xec\x1d\xad^\x96\xc5\xac\xab\x97J\xdbP\xae\xaf\x9f\xd6\xa1\xd4\xf4\x95\xce$\xb8\xfb\xb7[\xedD\x1a\x03\xcc\x07\x1e!0\x9bo\xc1\x0e\xecq\x88?\x12j\xc3\x9d\x9d\x10?\xb3\xf1\x05\x98Y\xa5lcH-\xb9\x0f\xf9\x825\xd7\x82_\x86D\xcbu|\xb4\x04S\x96\x9c6\xae\x87\x16o\xd5\xac\x18*\xef\xd6\xcb\x9f3\xe9\xda\xff\x98\x9a\xc5\x93\xd6\xe2=\xe6\xa4\xc8C0\x91\xead\xb4u\x05$\x0c\x05G\xe4^\xbf*\x07I\x87\xd4\x82\x0c\xb8\x19\xba\x1d\x9b\xaa\xe4\xed\xcb\xf0\xa0\x0d84&\xb2\xe4\xd9P\x00*4pT\xa7\x10\xeb\xdfN\x9d\x0f-2\x8aw\xca\xc0X\xdb\xfa\xb3\xc6\xfa\xd3\xeb\xae\x7f\xdb\xfd\xba\xb5\xfeYge*\x1de\x8b4\x19\x93`\xcf\xdd\xa6<\xa66i\x97\xa3\xa1\xa7:\xca\xd4\x95\x0f\x067\xbb3\x9d\xa2\x8d\xd67\x9fF\xb6\xb8\xce,6\xb12}i|\xb6D\xa9\x06\x06m\x82W\x9c\x15q\x83\x8d#\x89\xcf\x91\xc9\x89\xca[\xe9\xe8Q\x0e\xd6\xc7\x15\x8cbq\x11\xa2\x7fe\xd6p\x7f\x08jM\xd7-TeG\x17\xa49\xfa*M\x8f5\xc6\xaf<\x99\xf2\xda\xc9\x84e\xce\xb2:\xc9\xe2\x07\xcd\x83\x10\xeff\xee\xd3\xdd\xbd\x88yc\x11\xb3k\xad\xdfcj\xaa0\xddX\xc3\xcd\xd4V\xa5.\xa9\xad\xb9\xaa\x10\x94\xe3\xeacZMH\x9f\xcc\x86a\xc8\xfa\xcc\xf6,z\xa8\xa3kkAe\xdc\x81\xbe$\xd5\xd1\xa2y~\xb9\x90\x82\x8a=\x977\x10!\xaf%\x13\xccU0\x08\xd5\x92 \xe27y\x07\x13\xe85Y?\x1d\xa9\xd7l3\xb3\x0e\xb1\x9a\xa9\xf1\xec\xcb\xfdNn\xcf\xc8\x84N\xaf\x7f\xc5O\xe4]\xf1\x03\xb2\xdf\n\xd0\x91\xf0\xec\x17\xcb`Q\xd1\x98g(Z\xead\x1e\xba\xb2\xf393\xf3\xf9D\x05\x1c\xa1\xd6\x15\x85\x9a\x01\\\x1a\xa4\xf7c\x1a\xc1S\x93\xde\xf5\xc3\xe3\xa7/-\x9a\xd7O\xfc\xfd#\x0fi\xffq\xe9\xae\xd7\x91?\xb4.\xf3\x7frf\x94\xa9\x98\xe1L\xe7\x84\xb3\xa6\xa3^V\xd1\xbf\\\xfc\xaaS\x07\xbf\x94\x81o\x9d\xa7\xee\xb1\xd0\x03\x1cs\x80<\xa6A\xcb=\xc5\xd2\xe8\xbbnq\xb1D{\xabYR;\x9c\x86\xa8\xa3cCjH\x84k\x85\xa4\x9e\xbe\x8bU\xbc1\x0d#\xa8\\&\xb5\xd0\x88\xe3\xd5\xfc4K\xb1B\x82\xeby\xb3\xadf}|\xfd\xd7':|Z\xaa\x17?\xf9h\x03?\xb9\xb4\x81\x9f\xba\xb4\x81\xbc\x0b\xdd\xb6\xf6D\xb7\xb5E@\xfb\xcf+\x02\xf91\xe2\xcbDM\xe9\xbfdJl\x8f4_\xafH\xe0bE@.8\x91\xb9qE\xa6\xed\xeah_\xaf\x8d6zh0\x06U\xbe\x07\x8b\xe9\xcdi\xdaV\xd8c\xa61\xad\x15\xc4\xbbm\x9a\xc0\xb2\xe7tB.\xc9\xe4\x98|\xf6\x00\x8cF\xe2\xdf\xcb\xa8s\xbf^^\x1c\xfb\xb7\x8e\xc01\xa6\xc2\xf6\xd1\xccc\x82\xdf\x9e\xfa\xa4\x07\x9c\x85Y-H6\xc5\xfc\xda/\x8eQ\xe7\xc8\xff\x10\x16\x1e\x0b\xf8P\xbb\xc4\xdf\xf1\x9d\xde\xdb7\xff-\x13|\xfb\xa6\x9c\xe2\xdb779\xc9\x97du\x0dAC\xf8\x13\xd8\xfa\xa4\x93F\x8f\x1eU\xa3\x10\x98\xfcS\xcc\x89\x1aX\xcc\x1b\xa0\xebI\x0f1\xa1\x89\xb9<\xb8aXB+\xb4\x19,j\xc8\x125W\x9c\xa1\x84\x8ay\xbbYh.Sc\x18\x08\xe7@|6o\xa3oRZR\x04=\x84C\xe8aE\x028\x80^\xd4\xb3c2\x83\x01\xf4\x0czTu} \xa6\xbbp\x9c\xcaR\xfd[{\xe8\xb2\xba-,%\xfc_t3\xdaR%\xa4\xb4I\xe1\x9a\x96^4x\xe6\xf4\xda\x9c%\xc8\x1d\xe0\xc5\xb7}\"\xab/ ?\xcf\xbdVt^\x93C=\xd0\xaa\xdcb\xf5\x94\x9d^\x9d\x89\xb3t\xc3\x0d\x16A\xe6\\\xe0\x06\xae\xb5\x1cT\x1e\xc2>\xe6G\xe4\x98\x02\x07b\xc3\xb6\xb6\x83\xae\x06\xc0\x9a\xb5\x0e\xe4\xc8\xe0\x10\x82LR9l.\x94\xed\x92\xb2\xf4\xad\xa8\x18\x988\x0b2\xe7\xfe {\x9f\x9c\xcd\xd8\x86pS\x84Ig\x84*C\x94\x9b>I\xaeG\x9a\xdes\xab\xdd\x1dl\x83\xc6^\xfcq\xb7D*=\x19\xaeWWh\\\xbe&\x06?\xb9\xde!\xc1\xb9\x91\xcdz\x14yYD\xac\xdc\x1b\x8a\xa5\xc2LY0L]\xe5^5&\x9a3\xb3\x06\xe4\x80\xb9\x1f\x94\xba\xbf\x80\xd6\xfc\xee\xd5\xcb\xe9\x92\xbd\x8a7Q\x0f\x88}\x8d\x1e2\xbb\x11\xec\xecy\xf5\x92\x14G\xf3\x05\xf3\xb11\xc8^4\"\xae\xcb\xe9M\xc9\xfd@.c\x9d\x19\xf5\xe0EmFH\xaf\xd9\x8c\xb3%m\xee\xfc\x8e\xf9<\x0dH\xa5J\x12\xdb^\n\xb0\xe2\xe3\x0d\xf4*\xd8\xfb\x13_\xf6T\xf6\xefK\xa5@\xa3T\x1fI\x10V\x06)W\x06<%\xe5\x98\x88w\x17\xeb\x8a\xdf\xcb\xbc AU\xa7\\T\x12\xe7\xbbR\xcfy\xec%\xb5i2\x97\x99\xddU\x97\xa3\x94\n\x9e\x05\xba\xb9\xcdR!\xefJ?o}V\x8f|^\xc6\xe9&\xc2\xd69)\xc9\x86W\xfb2k\xa6\xc7V\xd3\x1dN\xcdk\x8b\x81Z\xfd\x13L\x97W+\xceDHu\xdf\xcd)\xd6\xab\xb7\xfeN\xc3\x86\xaa\xd5\xcd'\xd6\xaa\x1at\xf9\x8e5>&\xc6<\xa0\xea\xba\xf2\xe4\xf7\xc4.}\x93m\xb8\xdf\xa5\xf8\x81;|\xa3\xd3\xa5\x14Y6\xe7,,\xd5\";xn\xea']V\xc2%m\n\x97\xbc\xefa\x16\x01\x1d9\x05L/\xd6\x8aO\xff%\xf1%n5o\xf4M\x84=T\x8dQc\xa9]\xf3\x98\x1agd\xc7\x8a\xe8 7\xb3z8\xda\xb2\x99MF\xb1!rx\x0e\xa5\x02\xdc\xa6\xe3\xf1_-\xcf\xa1\xbc$r\x05\xfdF\x91o\xcc\xbc \xe8\x1f\xfb5\x9f\xc6\xec\xf5\xb5\xa51\xdf5\x02m\x13\xffb\xae\x93\xa4\xae&m\xabk\xea\xbb6\xb2\xd6Bn8k]\xc7\xa1\xae\x895o\xf1\x8d%O\xd9\xe2\x06ga \xd9\x1f5)\xc1WD\xd0\x8f\x12\x7f\x8c\xe1\xa7\xdd\xab\x0d\xcc\x90\xf5\x82y\x1e\xd8R\xa1\xa4.\xef\xfa\x14\x1f\x9fa]m\x9b>5\xaa\xfcd}\x07\xfe\x9cz\x0e\xddTnZ\xf8\x03c\xa1MUa:\xabU\x98\xee\xcc\xb6\x9c`\\\x90GV\xe4\x00}\x1a\xb1Z:\xc6-\xa9\xa4\xc4I\x04+\xceJ\xafB\x14\x13V\x95\xbf\xa7\x19D\xaee\xf1:\xad\xce\xf2l\xb9\xf8w\xb0\xe2~6\xbc@f\xbb{\xc7P\xd5\xc5\xf9wO\x06\xde\xc8\xb9w\xe9\\\xf8\x95\xb59w\xfe\x99\xe0\xdc\xbb\xf7\xb5~I\xf0\x04\"\x04r\xbd\x86\xe1(\xc4\x18\x06\xccY>\x8c#HFp\x00\x89\x87q\xd0A\xc7\xec0P(\xe8G\x81\xb3:\xe5\xed4?U\x14\x8cD\x90\x04&\x12\xa9.\xcb\xf87\x165f\xf1&r\x06\xd2!\x99py%b\x08V\x9e\xbd<\xdf\x84\x86\xab~\x9e\xd3M{J\x8a\xe3\xe5\xa9g\x81\xcfR\x06\x1c\xd8|\xc2\xcaJ)\xc2\xea,y\xf4J'\xe4\xb7\xb4\xe5y\\&\xc6\xd9 \x9f\x96y\x8a\x0b\xce\x0bm2\xc9\xc05K 3m\x96ay\xd3\xffT\xfbDVo\xa7\x1b\x0c\xa9<\xd483\xb7\x11$o\xc0H(\"\xce\xfd\x8f\xf8\x9aV\x86\xef\xea\xe7-)\xd5\xa7\xdbts5Z\xab\xe4W\x1f\xf9Y\xff\xfe^^g],\xbc7\xae\xb11\x97U\xbb\xefy|\xb9A\xaf/\xd8F*\x8cy|\xb9\xe9\x99\xfa\xa2\x96\x8f\xc8\xab\x13?\xa3Yk\x06p\x08\xef\xa9pa\xf9\xe8'(\xcd\x13z\xfd\xe9\x88\xee\x98\xe8\xcewn9\xd9\x18\x13\x8d!\x8f`n\xbe\xf8\x94,6\x80\x9d\xd6\xfe\xeb\x98\xcd\xfa\xf3\xf82\xb0T$\xb6t\xd6\x14\xbe}\xa5\x04\xcb\x1e\xe3M\x06D\xbb\xe3=\x90\x9fgI\xba\xa1\x99\xa1\x1c\xccO\xd74l|J\x16\x1f)K\xd2\xcd\xba\x15@WC\xdeL\x05%\x12\x82m\xd6_\xdb\xcaa\xc8\x0c\x06\xe6\xfeX\xfc\x89l\xb0\xbc\xacf\x80\xb8\x06J\xf1\xfen\x18\xa5x\x93\x9b\xa3\x14\xff\xeaKP\xea:\x92\xc4?\xbc\xb8[\xad\x84\xd1G\x8aj\xdeZ\xf26\x8c\xac\xec`x\x15;\xcd\xac\xdaeuq\x91.\xab\xc7\xe6i\x05Zja \xd8\xb1\xbb\xb5sY\xcf\xbf\xa3\xec\x7f\xc9\xb8\x19\x04\x1f\x82*\x91e\xd7\x0c\xb5f*\xe9\xa7\xfc\xf6\xd6-\xd8\xde\x8eQH\x95\x0dZ\n\x95\xab\xeb*\x8c \xb6\xbeq\x15\x81^\x06\xe9\xbfhU\xb2|\x93e!5o,\xfe\x9d[\xae\xe5\xd7\xd2\xe1Q\xa2.9N\xcf(K\xfdB\xdf\xa9e9\xd3\xee\x0f\xc0?\xe2Q\xbf\x9c\xd1\x8f\xfae\x89\x95\xd0/e\xba\x89;\x8bS\xa9K\xe8\xf0kE\xaa<\x1c\x1aUD\xa3\xac\xdf\xeb7\xd1B:\xab\xfa\xbd\x9d\xe2\xdb{\x1d\xae\xad`\xdaki\x04\x05j<\x0f9i\x1b\x0c\xe0\x8d\x14s>s\x8c,\xf0\x05\x91\xe6o)=C\xfe\x0b\x16\xb7\x8b\x088)\x80\xf1\xe1\xe6\x9aW~\xf0\\\x97\xa9(\x0f\xad\xcd\x98\n\x15C\xb0!_\xba\xb9\x186\x8b\x8b\xd9\xd3l\xb2\x81\xa3\x0b\x9bU\xd9\x05\xb0\x8a\xf3L\xcf6\xd0\xcd#@\xb9\xbd\x84\x83\xf2`\x00{p\x1bv\xcb\x8d\xe6 ]\xcaL:\xeeT\xf0\xf9\xb9\xf2\xa36\x16\x0ea\xcf\\\xf5\xb6|M\x0c\xcck\xf1\x1b\xdf\xf0\xd1^\xa2\x90~\xe7\xee\x9d\xfd\xef\xf6\xbe\xbds\xefN\x18\x95\xb7\xe1\xe1C\xd8\xbb\x07k`\xf0\xe8\xd1#\xd8\xd9\xbb\x17\xc1\xdd\xfb{\xdf\xde\xbd\xf7\xdd\xee7\xcd\xf7\xeeh\xef\xdd\x89\xe0^\xf5\x1c\xd3\xb9\x07\x0c\xb6\xe1\xce\xb7\xf7\xef\xee\x7f\xb7\xbf\xf7\xdd}Xs\x98\xfe\x8bo\xe9\x7f\xc9\xcf\xf6\xeeG\xb0\xbf\x7f\xf7\xfe\xb7\xfb\xfb\xf7\xca\xe6\x8f\xe5\xe7\xd8M\xf9\xe6\x9d\x08\xee\xec\xdf\xbf\x7f\xf7\xdb\xef\xbe\xdb\xfd.\xd4\x9bpl\xb9@\xe7\x0f(\xd6\xba<\xdc\x10j0\x80;{\xf05\xe4\xb0\x0d\x9fi\xf0\x94\xe0\xa6yJ\x02\x16\x86|F\xf6\xce\xc1sw\xaaKh\xc5\xaf\xd1K}R>\xdd\x943\xc2\x8e:;\xd8\xacq\xcfvCc9k( \xa2\x89\x14\xd6\xee4\x95\xc1|/~\x10\xc9\xc9\xb4\\\x00\xfa\x1b\x1f\xe8p\xaa\x02\xbc?\xd0\xe1+\xfe\xf7\x07i\xb2(\xf8-\x19:*n\xcb\xc0\xea\xf2\xbe\x1e8\x04\x03xF\xf1IB\x8b\x85\xc8\x8d\x8f\x9f\x1cg\xcb\xbc\x9eW\xc6\x04\xb2\x86\x12I\xba\xb7\xd6g\x87\xad\x8fgqBE\xdb\xd2\x96)ng\x94\xc5 F\xa5\xe3\x10\x84\xee\x12c\xc4s\xd3)9M\x93\x0dB#K\x01\xe5#\xb3\xae\x84I\xed\xb38j\xb9\xf7\xfbZ\xff\xedT1\xb7\xcb\x02N\xe1n#\xc3j)M('\x89a\x12A6\xb2\x17\x9f\x06\x10FU\xcd&\xe9)4\xce\xe3\xc5\xcb\xba\x0f\xb2/\x8c\xae\x01\x04\xbe\xeeMXt\x89\x19-X\x88h\x04\x07\x10\xb0\x93\xeb\xec\xd6\xd7\x14\x93\x9btf\xeexn\x07\x92\xdaI\xf5\xbe,\xed\xfc\xde\xd9\xce\x90E@F^\x8d\xbd\xb1\x90\xc3\xe6\xd9\xdc\xb1\xd9\xb6\x88O2.h\xc3\xd32\xac\xf773\xac\x9d\x1b\x1e\xd63\xf7\xb0z\x05\xd2\xc0\x9a\xf1\x03\x0e\xe1\xc5\xf1\xdb7}\xf1(\x99\xae\x84\xdaVRK\xcf\xdc\xa2\xaf\x9c\x04\xf8\xd8\x9a\xc9\xd3\xd2\xdc\xc7N\x0c\"\xf0\xb0\xe4\xe0\x08<\xc2\xbfw\x90\x9d\xf3\xea\xe0\xb3G\x07\x9c\xf5\xd9\x86\xfd\xfb\xf7\xee\xde\xbds\xef\x9b\xfb\xdf\xc16\x04\x843d\xf7C\xf1\xe7\xa3G\xb0\xdf>}\xeb\x0b%[{M\x87\x0bu$\xbe\xae\x8eD\x19\xa8\xc5\xef5\xceD\x91^\xa0|\xd08\x14;\x89\x9a\xec\xb6\xb1\xb0\x0c\xa3o\x0f0\xfc\x161\xa5>p<\xd82s\xf2\x93/M\xdf\xe0\xa73\xbf\xd1\xc0\xa9=\xbf\x93b\x9a\xd0 JO\x9e\xdd~\x817\xdd!:\xd3\xc1\x01\xec\xb4\xfd\xffLfN>*?\xc3\xd5\xb9\x9e>S\x99\xa8\x9c\xa3\xd1\xd2\x0c\x97{\xc7\xcb\xd53\x8d\x0b\xf6\xfc\x9a#+\x8dq\x7f\xd9\xe8n\"~\xc3\x13qn2~\xc3\xb7\xcb\xc5\x06}*Dm\x86\x15\xd9\x9d\x98\xf9:U\x96\x02.u\x8a\xa0Z\xb1\x10\x98\xf6j_\xfe\x89\x15\x8c;\xb23\xf2\x8b\xa8\xec\x8c\x9c`\xef*\xe7~t\xce\xafRDt\x04\x85VI\x15\x959\xa3\x03{J0\xef\xc9\xd1\x1eB\x0e\x07\x90\xab\xd0\xfdc=\x02x_94\x88\xd61\xc7\x81gP\xb0r\xee\xfc\"\xf2Qz\xab\xfe\x15$\xe4:\x8e\x9f\xa2\x9a\xbdW\xeb7\xe4\x9a\xe8\x89\xfd\x1b;\x0d6\xd2k\x87\x88\x82\xaa\x14]]\x0b\xa5e^\xafG\xd3\xdc\xba%\xf8\x8b\x99\x96dU\xe1\xed\xb5\xfc\x11EUmKV\xa5M\xdd\x117s^j\xc1\xe3\xd1\x00v1\x07\x85%\x90\xc8\x02(d\xbefUt\xd1\xce^\xf5\xa5<\xb4Z\xd5\x14\xc1v\xc61\x92/\xb2b\x13\xd3\xe6\xf5\x93|\xf8\x99\xf5\xaa\x12\x03%\n\xec\xc3\xd7\xea\xd7\x0e\xec\x89\x02\x03\x0e\xcb\x9f-\xf5\xa1~)\xa3\x01s\xca\xe5\xeaJ\xbe\xd8V\xd79 \xad\x8d`+\xc1R\x00b]Eh)\x17\xd1\xb30\xd4\x92\x96b\xb3\xf2\xbe\xb3\xe5+\xde{\xe4\xca\xa3\xa1C\xd4l\xb6\xf3\x06i\x84\xb0\xaa\x19\xd0~\xc7\xfe;'\xefo\x0f\xbd\x86\xfd\xac\x84l\xc6!\x1b\xc3\xff\xe5\xb2\x03\xdfz\x1c\x07\x92\x9a\x0b0\xc6\xfc\x1e\x88w\xe0\x10>\xf3\xb9\xc7\"\x1d)Zm\xd4\xcfL\xa5\x8c\xed\x02\xbf\xd3ZbIU^Q \xefm\x9c\x92\xf8\xdc\x87\xf3Rf\xb9!\xefbd8\x94C\xc7bq\x1e\xe5\xa5 \x00J\xff\x12\xc1\xcb~6EgZ\xebg\"?\x89\xe6\x9d\xef}\\\xc3\xbf\x8e\x1f\xf8\x9e\x11\xaa7\xed\xde\xe3y\xf2\xffq-\xbd\xeaK\xf5\xc7+\x1a\xb9\x90\xcd{\x0c?'l\xe6sN)\x99G\xef\xc5\x8do\x9c\xa7S\x01\x02\xed\xf1\xdbL\x96\xb5;W!\xa7\x08Uz\xd8\x89\xd27\xe87\xcb\xba-\xef\xd0q\xbd=\xfc\x8dy,\xc4 Q\x0bZ\x9a\x95\xbd\xe4\xb4\xeb\xe6\xd31T\x9d\x86\x9b\xd9l\xd8|\x95\xc3\xcd\x03\xda\x89\x96g[\x94\xd0\xaeY \xf4\xc7\x9a%A\xbf]3)\xfc\x1a\xe9J\xda\x10\xef\xbd\xac-\x9f\xb8\xf7C\xadiq\xef\x84\x18>\xbe \x86\xaf\x8fH\xf3\xf36TT~\xb9\x03\xa0m\xb8\"P_\xb4\xef?\xcd\xd2\x94 \xa4\x0f\xe0\xd4\xe0\x03\x81\x01b\x1f\x0d\x0f\xf4\xb4\x92\xefX\xfb\xb9\xc8\xcb\xb70<\x91\xa9\x02\x8f\x8c\xa3d\x07P\x18\x1e\xe8Y%\xe7\x86\xe7\xef\xc98\xcb'\x07\x90\x9b\x9e\xc5\xf4\x8c\x1c\xc0\xca0\x89\xf7dAb\xde\xa4\xe1YR\x1c\xc0\xccp\x7f\x9agsLmkK\x97|\x15\x01\xe9\x93\xcbE\x96\xb3\x02\x93\xc4 \xac\xbcr\xfb\xb4\xf5\x96\x05\x81\x82\xe5\xc9\x98i\xf9i\x94 ]\xdbn\x9a\x0f\x8d\xdeQ\xb3u\x15\xfb\x16G\xb0\x8c\xa0hn$L\xc6\x1e\xb00\x82-\xe3\x1e\xe6]\xa7m\xfa\xa7\xa5\x01C=OX&L;\xca\xf3,\x0fz\xaf\x13\x9aL\x132\x01r9&\x0b> \xc8\xc6\xe3e\x9e\x93\xc9\x03\xe0\x93d3\x024\xa3;s\xf5\xe2\x84\x9c\x03\xa1\xe7I\x9eQNu1\x02\x8b\xbf4]\xa6)\x10\xde*\xccIQ\xc4g\x04b:\x81x2Ix\xb3q\n3\x92.\xa6\xcb\x14.\xe2\x9c&\xf4\xac\xe8\xf7\x0c\x14\x9b\xa4\x05q\x90\xfc1\xe7i\x9a\xc0r\xf8\xf7L\xed\xfcfP\x07\x05\xeb\xe7d\x91\xc6c\x12\xdc\xfe\xbf\xc5\xed\xb3\xa8\x9b\xa8AE\xd8\xc6\xc3\xe9\xf6v;\x84\x17\x90\x8a\x85a\x9f\xc6s\x0c\x8dxN\xcf\xe3<\x89)\x83\x9f\x92,\xc5\xe4\xdb\x86\xfc\x92\xad;l\x96g\x17\x90\xf6\xa7y<'\xc5\x87\xec\x1dV\x91\xd9k\xa6b\xd3\xb0\xfa\xcb\x91\x98\x06w\xee\x86f\xdc\xcd\xaf\xdf\xba#K\xa2L~>!\xd3\x84\x12\x95\xfc\x9c\x8bE\xbd\x93\x13R\xbc\xce&\xcb\x94\xf4L\xa4T:I5\\\x9e0\x8f\x12\xe7\xbb\x9ef\xf3yF\x8f.\x19\xa1\x85\xcc\x7f\x8e\xf7\x1bwH1\x8e\x17XS\xf1UB?\xbd\x8b\xb1\xae\xa2J\x9d\xdf\xba]\xcc\xe24\xcd.\x8e>/\xe3TV#d\xfd\xd3e\x92N\xbe\xcf\xf2\xf9\xb3\x98\xc5\xe2\xb5,g$\x97OY&o\x92<\x89\xd3\xe4\x0frL\xe2|,\xda[\xc4y\xa1\xff>#\xec8\x9e/Rr<\x9e\x91\xb9\xf8\xee\xaf\x17\xc7o\xdf\x88\x9d\xd1\xe9\x01\xc6\xf2U\x07\xb3\x8c\xb6*D5\xab\x8eF\xe8\xa8o\xdd\x82^\x86\xbd\xf6D\x11\xb2\x86\xb1\xa0\xb7\xa4b\x9fNzp\x00\\\x82*\xf8\xc6\x8d\x97)\x0b\x03\x16\x86\x8ex\xd7+\x18\xc7l<\x03q8\xb6\x1e\xcb\xef\x1a\xd9\x1b\xae\xf8^\x16\x03J\xa6\xabNH\xc8F\x8e\x05\xc3|$\xf9f-\xa9<\x1c4\xfb\xc6\x1e\xe2<\x8fW\x1bt@d\xb3\xe8]\xa3\xff-\xeaI\n+\xefp\xd4\xeeH\xb0%\x92O\xd2z\x03b\x0eM\xe3\xabr\x84\x1eT\n\xae\xe6\xb3\x9eAB\x0b\x16\xd31\xc9\xa6\xb0RK\xd2\xe7[\xd2\xf5i /\xc6\x01U\xcf\x86\x8b\xb7\xd2\xb2)\xce\xb8\xcb\xb4\xbc$\xec\x8b\x8c\xce8\xdb\xea\x95\x8a\xd9\xac\xde4\xd5Nd\x98`\xf0Cv\xcc<\x0b\x05)\x15\xa3)\x87\xbb\xd2\xfd\xecF\xb0\xacP\x91\xb4\xb3\xf3v [\xe6\xf0\xc5!3$\xe80\x14\xbe\xeb*\xc6N\x879\x17\x0f\xc90\x1f\x89\xf4\x8at\x99\xa6fMt+\x13&\x82\x8cf\xf9\x1c\x0f\x0f\x81s\x03\xb8\x8c\x90N|O}\x91\xd6<\xc1vOIQ\xd2\x9dc\xd9\xc7\x92\x8eo\xbe\x175\x11\xaff\x9b\x99\x9a\x8dT\xe2u\xbc\xf0A'+\xca4\x93\xfa\xba\xf4\xa2\xf5ue\x01_Y\xa1\x8a5\xe5\xee\x84?\xdb\xa5\x84p\xc8\xef\xb1\xcb\x7f\xdb\xa8K\xc5x9^\xa7\xee$s\x1e\x08Y\xd7\x81 U\xda\xfcn\\\xdd\xa5\x18r\xb1\x01\x98\x8aU\xc1\xc8\xfc\xc3lI?\xbdN&\x93\x94\\\xc49\xf1E\x9c\xee\xfd\xcf\xfa\x93\xa4X\xf0\xb3I2\x8eH\x97\x9cp\xe9n\xd4\xf4\xb2\xd3\x82\x05\x1d[\x08\xcd\x93\x01 0\x959\x0b,\xbel`\x14#\xccw\x0d\xe7\xa0\\#\x0e\x80e\xf14\x9btC\xf9\xbcL\xb2\xa5\xaal[I4+55\xc1\x05?[.\xf8D\xfc\x93\xa8+\xe0\xec\xf7Ty\xd4m\xe8\xf5Bc\x06\xa5\x10\x19pK0\xf3\x95\\f~\x82\xf9l<\x8c\xce\xa9N9\xa5\xc0\xe1\xbc\xa7\xfc3\xd0\x8a)V/\x8a\x13\xb2\x0d\x0eu\x9a\x11\x99\x83\xc0p\xec2\xce>\xb0\x91\x1d\x96\xf5^\xfaI\x81\x9dQ\x91\xf8\xfe\xa05\x88\xf6\xfcg\xc9\xd9,M\xcef\xdd\xdc\xa5Z\xe1I6Fu\xab\x99\x01\xd9\xaa\xf8\x8c\x9e!s\xaf\x08N`\xe4\x92=\xcd(#\x94\xa94\xac\x8f\xe0\x1e\xb9S\xc5\x03\xe9\xafX'\xdf\x8d+\xb5\xec0\xba\xd2@\xa4\x83\xab\xfa\x88\x90\x0b\xdf\x8dP=\xb2\x1c\xee\x8e\"\xd44\xecE\xa8@ \xfd\x84R\x92\xff\xf8\xe1\xf5+\x91q\x18\x16\xa8V\x10r\xb2\xa8g\xbb\x80\x87\xf0\x0d\x92\xc9\xdf~\xc3\xfdJ\xa5\xe7\xdc\xd8\x99m\x86\x03\x84\xf7\x94\xaa\xae\xb7\xb7\x8b\x910\xafM+\xd8\xecE\xb05\x86\xf5\x1a\x16\xf0\x08\xbe\x15\xbd\x08\xaa\x80w\x87\xb7\x7f;\xbe\xddg\xa4`\xc18\x8c\xf8\xdb\xfc\x83\xdb\xc3\xaf~\xbb\x18i\xf7\x83\xdem9\xb2\xf5\xbal\x80\"iN\"\xf8[\xefo\xa0\xdcN\x92\x08z\x7f\xeb\xe9?\x97\xc3\x02v\xe0\xee\x08\xb6\xd1)\x9e\xf2g\xbd\x9d\x9d\xdf.\xefp\x99\xbc\xba\xf5\xf5\xed\xdeh\xb8\x18\xb9\x8de\xb8,SQ\x98\xa1\x1f/\x16\x84N\x9e\xce\x92t\x12\xc4\x9a\xc8}\x94\x12\x8efA\xafX\xc4\xb4\x17\x86\xfd\x82\xb0\xc7\x8c\xe5\xc9\xe9\x92\x91\xa0W\xb0\x15\xaa\x03\x86\xbdq\x96f\xf9\x01\xfc\x9f{\xf7\xee=\x80iF\xd9\xce\x05\x11 qO\xb3t\xf2\xa0\x17\xe1\x8a\xe1\x7f\xfa\xabxo4\\\xc0!\xae\xdd\x1d8\x84}8@\x08\xdf\x87C\xb8+\xff\xe6\xf7\xef\xc0\x01l\xdf\xfeW\x10\x07\xa7\x05\xcb\xe31[\xa7I\\\xac\xe9d\xadL\x0fk\xbeg\xd7E0_\x17$g\xe1\xe1z\xc9\xb2p}\x1a\xc4\x05Y\x93\xb3\x84\xae\xb3,\x0dHL\xc3\xc3uN\xe2O\xeb\x15#\xe1z\x8c\x8f\xf9\x81\xb3\x9e\xc5\xf9\x1aE\xdb\xc9:\x8d\x8bb\x9df\x94\xac\xb3\xf9\"]g\xb4`\xeb\x8c\xb2\x84.I\xb8\x9e\x90\xe0tyvF\xf2\xf58\x99\xc7\xe9z\x9c\xc69YO\x03\xbe\xc7\xd7$\x0f\x0f\xd7 M\xd8:\x0d\xc8Y\xcc\xc8\x9a0\x12\x1e\x86\xebI\xb6\x9ed\xcb\xd3\x94\xacI0\x9ee\xeb\xb48L\xa6\xeb\xb4 A2\x0d\x0f\xf9<\xb0\xf6\xe8\x9a.\xe7\xebsB\xd9\xfa2\x18\x93\x05[\x93\xf1z\x11\xa4\xc98a\xeb,g\xe1\x9a\x91\x80N\x8a5*M\xd69\x0d\xc3\x90w\x9d\xa6l\x96g\xcb\xb3\xd9:N\x0b\xb2Nh\x9c\x06\xe9\x8a\x0f\xe5\x92O'\x8b\xf9\xd7\x01\x89\xc73>\xfb\x84p\xb0e\xf3\xf5\x92\x8e\x03\xbe{\xf9\x00\xcf\xd2\xec4N\xd7g\x19\xcb\xd6g\xcb8\x9f\xac\x93`\xba\x9e/\x02\x81\x03\xc5Z\x1b\x04\x0d\x12\xb6F\x95~p\x92\xd11 \x0f\xd7i\xc2\xa1\xb5dk%\xfa\xacY@\xf2i<&k\x92\xd38\x0d\x0f\xc3\xc3u\x11\xae\xd3 \x9e\x9fN\xe25a\xebl\xfci\x9d\xd1\xb3p=\x0f\x92q\x9e! \\\xa3\x8ai-\xd4\x08\xe1\xfaM\xfcfM\x83xN\x8a\x05o)f\xc99Y\x93K\xb6&\x17\xeb$]gl\xbdL\xd3p\x9d\x05\xc8\x16\xad\x17\xc2\x10\xbe\xce\xd7K\xb6>'y\x9eLH\xb8^\x04\xf1\xf8S|F\xd6q\x1e\xcf\x8bu\x9e\x9c\xf3u\xc93F\xc6\x8cp@\xb0l\x9c\xa5\xeb\xe5i\x9a\x8c\xc3u\x1e\xc4 \xc7\x98 \x9ed4]\xf1\x85\x9b\xae\xcf\x92\x82\x91|\xbd 1[\x7f^&y5\xefb\xbc$k\xa1b[\xb3|\xb5\xe6T1\x0c\xd7Ep\xba\xe2\x8b\x1f\xa7d\xb2&\xe9t=\xcbr\xb6N\xce(\x99\xac\x93?\x10<1K\xc6kT\xe7\xacY\xbe\x1c\xb3\xf5\xf2\xb4\x18\xe7\xc9\x82\xad\x97\x0b\x92\xafWt<\xcb3\x9a\xfcA&\xeb\x8b\x84\x8dg!\x87\xe8|\x91\xf2\xc1\xcf\x08]\xcf\x92b=\xcb\xb3\x8b\xe2p\x9d\xc7\xb4H8\xd2\xe4K\xb2\xceW\xeb\xd5\x82\x041\xee\x8f \x99\xae\x93\xc9\x9a\xc6s\xb2\xce\xa6a\xb8^\x064\x18K4\x9f\x90i\xc0\xd9E\x8e'\x19]\xa7\xa4(\xd6\x85\x18#K\xd2p]\x90u\x91\xf0\x05:\x0f\xe2|\x9d\xe4l\x19\xa7\xeb,\x99\xacQm\xca\xd7\xe7\"\x18\xcf\xe2\xfc\x84\x89\x01\x91\x9c\xacgIJ\xd6 \x9b\x85\xeb\xcb,_\xaf\x12\x92N\xc2\xaf$\x01\x9cr~iw\x14r\x16T'9\x8a\xdc| \x97\xecM6!\xc14\x0cC\x91Al\xc1)\x94\xa0\xeb\x9cF\x1c\xf0\xf3c\xaa\x1d\x00{{\x0f`k\xb8\x17\xc1\xed\xe1o\xb7\xff\xbc\x1a\x06\xbf\xedl\x7f=x\xf8\xe8\xe0\xc1\xfa\xb7\xdf\xfa\xd1\xe1\xd6\xad\xbf\xff\xfft\xfa{{\xf8\xdb(\xac\xdfhPhI\xa0\xc7\xbc\xe3\x0cS\x93sR\xff\xb0\x07[x\xceH\x12=.\xa9\xf3\x98\x1fS\xdb\x90\xc26\x12\xe8m\xd8\x1b\x95\x7f\xee\x8f\x90 \xffvyg\xbc\xb5\xb3\xd3So\xf2{\xb7\xbf\xae\xff\xbc\xcdi\xe1\xff\x11-\x8e\x86;;\x8b\xd1\x03\x87\x07\xcf\x14\xb6\x070\xf6e.\x8d2\xda<^|\xc8\x1a|\x97M\xf5as\xb1\xe4\xc7b#\xc9~\xf9\xcapo\x04\x87\xf5\x9f\x07\xd0\xfbDV\x06\x96D)\x06\x0d\xed\xef[\xdb\xdf\xaf\xb7\xbf?\xaa1[\xaf\xe3\x85\x89\xe1k0\x90\xaf\xe3E?)\x84\x96\x04=\x81\x84\xf7\xc3\x06\x1cd\x9dc\xa4\xa2\x82\x0dE\x0b\x89\x89g\xe4\xfd\xd3*\xef\xfd^\xa5\x11\xea\xcfI~F\x02\x93\x14x.\xa3\xe5\xbbG\xc3\xdf\xe4\x8c\x155V\x07\xe2O\x0bK\xf4\xbc2\xecl\xed\x99\x9fM-:]p*=K\xe6o\x11\xc1\x04\x06(~&\x9a\x96RE\x06\x04!\xa6 \xe4\x83\x0b\xf8\xb6\x9e\xd4\x1c\x85\xc2\x07r\xd8..\x8e\xf72\xe3\x14\xc3'8\xfd\\\x8e%\xab\xc62C\x17Y\xe7Ws\x0e\x83\xceP\xf63|k\xaf\xe3\xad\x15\xe7i\x83\xb3\x08h\x99m'\x82\x9c3X\xc12\x82yS\x0d\xad_mTPB\xc7\x8a\x0b\x1d\xb1r\xfe\xc0\xec\x87\xb1H\x9a\xb72s\x83\x06b\xa1\xab\x86\x8d\xdf\x8c\xa5k\x05r\xe5\x86\xef\xa7\x9c\xfbHm\x18a\xc7\x15~ma \xdeI_n\n\xedo[\xe2\xe6\x8e\xee@\xf1\xf7\xa14\xe0M}\xe1\xd0\xba#\xc7\x14\xb7I)\xb9D\x8e\xf4\xfb$%o\xe29\xf9>\xcf\xe6R\xa6y\x96\x14\x8b\xac@\xe3\xeb\x8f$\x9ex\x94\x95W\"\xde\xedi\x92\x12~l\x0fz\xc1\xf0_\x0fF_\x87\x0f\x0e{\xb7\x93>\xb9$c\xa3\xe1\x00\xcb\x9e\x08\xdb\x00g\xea\xebm\x94MT-\xd8\x88\x93\xaa\x9e\x82\xcdh\xb2\xa1F\xaa\x8c\xf9\x19\x94\x12n\x99\xa6m\x08-\xe2b\x1c\xa7O\xe3\x82\xc0\x00\x9e\xd6\xef|/\x07\xd9 \x1a\xd9\xc3\xd3\x80Tf\xe2\xdf\xfa\xc3\x7f\xf5o\x8f\xbe\xfe\xea6\x17%B\x93\xc6*\xa6 K\xfe \x1f\xf3\xb4\xb3\x07\x0e\x802vlK\x8b\x1d\xe3\xc2\x9a\xd0u\xb8ekM18\xd6{\x0e\x8dG\xf0\x19a\x8f\xc7\x9c\xcb\xe7\xd8\x92gi\x9a\xd0\xb3\xf7\xa4Xd\xb4\xe8\x86F\xe3$\xab\x14\xfe\xfd\xa4\xd0\xb4\xff\x9a:\x84/\x8dMcP?\xf6\xccoV\xfa\xa5\xbaCx\x97Wry\xc2\x15,\xceY\xf1s\xc2fAo\xbfW\xea#u\x15*:\xe9\xf5\xc6b\xf7\xf4\xf04\xfd\xf3*\xac\xb0\xd0V\xa8\xc1LlK\xd5N\xd0\x93]\x88&\x8dv\x12K\x1b|\xcb\x06\xd40.s#a\xa9|\x93\xa6.5v\xa1\x0d2CVA\x887\x9b\xb7\xf1dB\xc8\"]\x1d\xb3\x8e\xbaLmJ\xf3\xdeP\x86\xffye\x0eLi\xe0hf09\xd9\x15\xdaU\x1cQ\x1edC6\xc2\xbdr\x08\x13\x92\x12F\x80\xdf\xe1B\x0d\xff\x87\xf3\x03\xe2\x0dj\xcce`\xcaV\xabl\x03\x06\xb2\xa7\xa2!\xbd\x08\x89)`\xd6\x95\x19HV We=\x95Y\xd7r\xa6X\xad\x16\xa4k\xc1\x89\xb0Z\x94\x87\x12 \x1d\x0c\x84F|s\xad\x89\x08\x84}o\xdf\x00R\xc5\xect\x19$\xcdQ\xc2\xe0\xe2\x13\x88#\x15\x03\xebS\xf4\xbd\xf8\x90\x95\xfe\x1c\x1ek$\xbe\xb1\xac\x91\xd6\x9b\x15M\x1a\xa6\xbf\xfa{\xe7\xb2\x92\xe7I@\x83oL>\x12ctH\xba\xf7\xcd\x9e\xe1\xd9T~x\xef\x1b\xa3{\xc5B\xb9f|\xbbkz<)\x1f\xdf5=\x9e\x95\x8f\x8d\xe3:\x97\x8f\xef\xdf36>W.%\xbb\xf7L\x8f\xcfpV{\xdf\x99x\xff\x95\xfc\xf4\x8eqR\xa7\nX\xfbw8\xe2\xd7\x9e\x97\x04\xfa\xa4\xc3w\xe1\xd6-\x0c\xe1P\xbeU\xd2\xb5\xd8\x8c\x8b\x12\xa5M\xa5\xea\x9bQ\xf3\xfa/\xbe\xb0\x170\x80\xf2\x08lO\xe5\xc8\xe0\xc0\xd3\xad\xd9o\xc9\xc8fsL{\xb06`]ndv\xae\n\x047&on\xfc\xd8\xd9\xf8\xd6\x16q\xdaW}(\x95c\x0dtO\xa9\x89\xfa\xc8\x06\x86\xa7\xce\x91\xf2~\x17U\xbf\xfc\xe7\xd4\x7f\x18u\x07\xaeN\x16\xce\xa1\xf8\xd9\x8c\x8b\x18Z\xc4a\x0b\x8br\xc7\xda\xf8\x9dz\xe3wD\xe3NN\xbcn\xa2\x97} \xefQ\x7f\xc8\xca\x87\xeb5 `\xcfk\xc7\x88\x0e-\xab\xfd\x18\x9d\x84\xab\xfc\xdf\xb4b\xbfM\x9a\x15\xd0\xfd\x00\x86\xd4\x92\xf6\xces\xa3\xc1!h\x02AR\x04\x182\xc5Q\xd5\xcaq\xf9\xa05\n?\xb6\x06|\xfc\x0e\xf0\x08'\xf8i\xd6&\x06\x82{k\xd4l\xeb*`\xb3\xc5{\x99k\xc3\x1cR\xceY\x0d\xa9\xc1\xeau\xd5\xdc\x12\xeds\xef\x93\xc5\xe1\xb1s\x7f\x80\xb2\xa7\xc2#\xa8\xc2\xc4{?\xc5\xe9\x92\xc0|Y08%\x90\x92\xa2\x006\x8b)\xc8\x96\xbd\xca\xd9?\xb68fn0\xa6\x87\xf61\x9d\xa1\xc2=\x97\xc3\x12\x8d{\x0d\xeb\xad\xd9\x85\xb4\xfb\xb4@9\xf3\xf6\xbfv\x0e\x7f\x9bl\x07\xbf\xf5\xf9?\xe1\xa1\xb2\x0chRjc\xa01H\xb6\xc7gp\xef,>\xaf\x9b\x8d\xcecP\x14#\x01\xcf<\x87\xf5\xc1\xe4\x9b\xeb7&<\x95\xb6\x02\xe2\xf0)\xb4Cn\x9a\xa4\xc4k\x80\xaf-\x0e\xc5~c\xec\xb1|Iz\xb2n0?D\xa7qZ\xe87\xb6v\xb5\xbf\xf7\x14#o\x1b\xf5\xa9\xe8\xdek\xe0\xcf\xcd\xce\xd1~\xe3\x16\x835\xa8{\xecc\x93/\xfb\x0c\xedw\x9b3\xb7\xdf\xe0\x92\xe2M\xfc&\xe0\x9f\x95\xce\xc2\x8e\x95V\xcd{\x8d\xec\x8d\xc9\xef\xdcoTJ\xd8S\xa2F\x9fe\xaf\xb2\x0b\x92?\x8d\x0b\x12\x84\x11l\xdd\xfe\xd7\xf0\xcf`t8\xdc\xdd\xf9.\xde\x99\x8e\xfe\xfc\xf6j\xa7\xfc\xfb\xae\xc7\xdf{\xfbW\xc3\xf0j\xe4E\x18\xf8\xc8\xbd&\xfc\xde\xea~\xefOL+\xde\xc4\x8f\xce\x8b.\xbc\x86\xf7\xcc\x1a3\xb0\xf9\xf06 \xf9\x1b\x8c\xf0\x95%\xd2\xc1{|[\x94\\\xc0{rvt\x89\xfe\xc8\xae\xa5\x9dfi\x9a]\xc0Bv\xd2\x83m\x93\x03{\xfd\x0co\xc7et\x8e\xec\xba\x9c\xed\xad[\xb5\xdfv\xae\xd6\xc6\xf1\"\xab\x87\x94\xe74\x9b\xac\xa4RY\xa8\x17\x13\xda\x13N\xf2\xf8\x0b\xcdX'\x97\xf3\xb4\x87\xee\xf2\xda\xcd\x9eEU\x99T\xea\xce\x9c\xa0\x9b\xc2\xc4\xf6j\x0c\xc2;J\xbe^`\x84\x8b\xe8\xc8\xa2\"\x8e\xcb\xd5\xca\xedv\xc7X47\x97|\x8e\xa5\xf3\xb1\xf6\xa6d=,oN\xab79q\xb6\xbd\xb6\xa8^\x9bf\xf9\x8f\xe0,\x82\xd3\x08N\"\xb8\x88\xe0(\x82\xcb\x08\x8eG\x0d\xe1\xd59\xf6J\xdfd|\xc5V\x92\x0eYB\xe4\x9f\x9f\x86\xcd\xb9\xbf\x97\xb4\x1e\xa6 I'\x90\x14@3\x06\x8b<;O&x\x02\x98(\xb6j\xf4\xdc5X>\xf1\x8f0\x80WA\x16\xc1\xb9\xc3%\xe1#\x1a8\xc4x>\xfa\xba\x1a\x80\x1c\xc2\xa4\xda:\x93\xae\xd1|\x86\x01\xbc\xe7\xa3\x998F\xf3Y\x1b\xcd\xe7MG3\xeb\x1a\xc2\xf70\x80g|\x083\xc7\x10\xbe\xd7\x86\xf0\xfd\xa6CXV\x00q\x96\x1d\xe1\xa3\xf9\x03S]a\x91\x11\xfbh\xfe\xd0F\xf3\xc7\xa6\xa3\x19W\xa3\x19w\x8d\xe6 \x0c\xe01\x1f\xcd\xd81\x9a'\xdah\x9el:\x9a\xfa\x91\xd85\x9e\x9f\x1c^K\xeaB\xee&\xf8 5\xe41#;\x8c\xcbQ\xd8\xfc\x02\x0e\xe1\xf7\x00Uh\xbd%\x176\xca\xbbo\xc4\xdd\xe7\x82\x88\xda\xf9\"u\xc9\xd9\xfedsb\xa9\xc8l\xfd`\xeb\x9a\xdf\x8f0\x80\xd7\x81\xab\xda\n\xce\xee\xc7\x0d\xc6\xf8c\xf7\x18k\x87g\xd7\x10\x7f\x86\x01\xbc\xed\x1e\xe2\xcf\x1b\x0c\xf1\xe7\xee!\xd6O\xe8\xae1\xbe\xc0\xec\x8d\x9dc|\xb1\xc1\x18_t\x8fQg\xb0\xbaF\xf8k\xc7\xd0N\x91\xf9)\xd90\x9f\x81\xfe\xaax\xd6\xe74\x18\xf6\x12F\xe6E/\x02\xc1g\x8f0\xc9N\xcb\xcc\xdd\xe5\xe9\x01\x9a`\xd5\xb5\xed\xf8U\xc3\xa4_\xd1E\x82#\x0b\x86\xaa\xd6\x97P=|'\x1f\xeaT\xe0Wd\xc0\xf8\xd3\xe7\\\xa8\x8c\xa4\xb9]\xac\x83{\xb0\xfcJDVKC\xde\x95\xe6\x85\x995\x0e,\x99\xc4\xd4\xe5\xac7\xdb\x89\x13\x1a\x83\xdc\x85\x12/a\x00\x1f\xba\x91\xf6\xa5\x0f.H`\xbd\xf4\xa5\xc6V\xab\xb7\xc1{\xa5\x9dF\xc1\xcd))7\xa3/w66X:Az\x05m*\xf6\xb7\x0cZ\xa6\xf8g\x0e\xef\xdb\x97\xf3T\xea\xae\x98U\xbeK\x84\xcf\xd5\xe5<\xc5m\x8b\x7fa~\x12\xd7\x9a\x0b=\x0f\xff\x86K\xf9\xf2\xdb?\xaf\"\xfe\xfdW_\xe5d\xaa;\x03\xac\x16\xe8\xb4F\xfa\xb8\xaf\xc5\x9f\x0b\x91\xcf#!\xf2w\x95\x16\xe6]\xf5\xe4\x10\xfe\xf6\xf0\x907~N\xf2\"\xc9\xe8\xa0\xb7\xd7\xdf\xed\x01\xa1\xe3l\x92\xd0\xb3A\xef\xe3\x87\xefw\xbe\xed\x1d>\xfa\x8dJ\xb7v\xf8\xe5\xf5+ \x97\xb8\xc40\x8e)g>O \x9c\x11\x8a\xc9\x19' B\x94\xfef\xf5~R\xd7yY^\n\xa7\xd3\x9fsQ \xb8\xfd\xdb\xf1\xd7\xbf\xdd\x0e~;\xde\x0e\xbf\xba\xed@\xf6\n\x88\xb2\x84\x94'*C\xddXx\xa6,\xb5\x93\xa7\xa8/\xfb\xe5\xf5\xab#17\xe1J\xe2\xe3\x01r.\xcb\xaa\xd5\xdb\x13\x9b\xe0\xfb<\x9b\x8b\x8d \xdbk\xcfH)\xc5l\x92]\xd2%\xd9%a\x08\x87M?\x98\xa4\xf2\x83\x81\x83F\x8eJ\xe9\xa3\xa9\xa7?q\xba}\x9d\xcb\xcc\x86\x7f\x1at\x85 \x93\x17V\xe2|\x9a\x8d1\xcbN\xbf\xc0\xc6-\xfa\xa5Joi\xdbZ=\xa1\xa4w)MD\x16\x94byZ\xb0<\xd8\x0b\xfb\xc5\"MX\xd0\xbbe\xd2\xc6\x80\xee\x9f\x9eCB\x81\x86@\xfb\xb3\xb8x{A\xcb\xdc7\xb9pS\xc4(\xc3a>R-\x0e\xb8XE\x86\x132\xce&\xe4\xe3\xfb\xe7O\xb3\xf9\"\xa3\x84\xb2 \x1f\xee\x8e\xc2\x11\x0c \xe7T\xe8\xd6-0\xbe\xb37\x12v\xd5\x9e\x0f>\xa9m\xdd^\xb3v\x1a\x1b7m\xb5Z\xc5\xfd\xca\x97\xab\x81\xd0\xd6\x8cD\xca\xfdA\x0f\xb6MO\xc9\x90\x19\x0d\xb3\xfd\xdf\xb3\x84\xe2\xf2\xb4\xa7&S\xf5\xb8\x07\xa5\xe6S\xcb\xb9\xa1r\x17Sr\x01$`\x9a\xb9\"\x82\xde\x92Mw\xbe\xed\x85au\xb7w\x1a\x17\xe4\xfe]\xd3\x18\xaa\xd4A\xed\xae3\x0c6K2Z\x1c\xe3[6\xaf\x9d8]\xccb\xcf\\\x83\xa0\xbb\x8f)m\xe2\xac\x17\xe2\x16J \x07h\x9c\xf3)i\xcf,G\xb6yc\xce \x9be\x93k\x8fF|n\x1b\x8fz\xea\xcdD\xb4\xc7\xc8\xe2\xb3\xbf\n\x9c\x8d!{\x0f\xd2\x80\x99\x8d\x14S~\xec\x8c\xc9I\xa5\x8a\x8d\xe6\xe4\xc7z\xfa+_^b\xf5\x10\xd1\xd8\x96\x1c5\x88\xbd\xeao&x\xbb!\x8d\xf8\x06\x8dL\xfb3\x0f\xb5\xc4k\xfb\xbb\xb7\xcf\"\xe8m\xf7\xc2\x91\xdc\x9f\xa6%\xb5R)\xe6\xda\xd4\x86\x94]\xb5\x95\xb48\xd6\x94J3N\xb8f\x15\xe1\xa2\x9aSN\x97\xcb\xc8F\x1e#\xf5\x91\xd7a\xae\x94b\x96\xbcd^\x04\xd8X\xa0\x063\x8ektL\x9a\xb31\xa5Q\x9e\xcc\x03m\x91~\xc3\xecx\xbd\x13\xb4\xd8\xf4z\xae\xe1Z\xb2\xaay\x0d\x93\xc3\xec\xb4\x82\xd9\xc7\xb6{Yd\xc8\xe3\xe6\xd54ig\x9b\xe8N\xc2z\xfb_\x97;%s\xdd\xb9l\x915\xf7\xdc_9Bi\xffY\x97\xf6\xa5ui=ZK\xbb\xd8ZZ\xbd\xfc\xa7\xf2?\xd5\x83\xb2\x90\x16\x0d\xee\xdd\x0d\xfbO\x96\xd3)\x91\xde\xe2\xd7\xca\x06hN\x88\xd9\x9cfI\xa9\x8c\x92\x99\xc8\x15\x0f\xff\x7f\xf2\xde\xbc\xbbm\x1cK\x14\xff\xbf?\xc55\xa7_\x8a,\xd3\xb4$\xaf\x91\xedx\xb28\xdd\x99\xc9\xf6b\xa7\xea\xd7\xa3\xf2xh\n\x92\xd8\xa1H\x15\x17;\xae\xb2\xe7\xb3\xff\x0e.\x00\x12\x04\x01\x92rR\xd3\xfd\xde\xe3\xc9\x89E\x12\xc4r\x01\\\xdc\xfd\x9e@\x15\xcb\xf2\x13\xf1\x83\x9c\xc7\xa2\xfc\x17$\x0b(\x81p\x047a\x16\xe6\xb0\xc8\xf3\xd5x{{\xe6\x07\xe4:I\xbex\xf30_\x14\xd7^\x98l\xa7\xf4\xbb\xedi\x12d\xdb\xf8\xf1\x16#\x9fRo\x91/\xa3\xd3P\xc4nd\x94\x86\xcb\xf3\xb9A\n\xc7\x90\x1fA\xba\xb9\xe9@\x0c\x9b'`=\xf1\xd3y6\xb94Q$\x157\x97\xa2\xcb\xaeB\x1f\xb2:\xeaq5ED\xcd$\xed\x1f\x94\xb3\n\xc8\x99uG\xe2l\xa2\x99\xa4\x16\x1dS\xe5\x15\x98C[\xd2\x1a\xd8\x12\xc58j\xc4\xca\xca\n\xef\xbb\xc4\xa8'\x14\xd8\xe7\xa4\x1f\xac\x932\x1a\xf1#\x9a\xacB\x19\xcbcf\x1d\xa8nz\xf5#\xcb\xfd\xe0\xcb#\xba\x80\x11\x98\xd9\xb8\xe9/:r\xfa\xb7W\x9b!\xb7\xd0}D\xb3\xc2\xb8\x17[\xd6\x18\xfd\xf6j?\xc5H\xcfk\xb5^\xd4\xb3\xbd\x88\xa8=\xad\xca\xa8\xf2\x84\xc84'\x04\x8b\xac\xc3\x8c\x102x\x06{p\n\x19l\xc1\x1e\x8c1\xf3R\x00'\xb0w\x04\x01\x1cCv\x04\x01E\xe3\xd1$\xa0\x05.\xe5\xda&AKb\xf0\x1b\xee\xa5n\xb6\xa3\x86R\xdb3\x93\xe9\xac\xd4c\xc1\xb0\x8d\xe2:q\xd1\x16\xd0\xd4\xc4\x9eux\x8a\x03\xb75 \xdb\xe5\xdf\x1c\xdcR,h\x8a\xc3\xa3p\x8afOSzb\xc2\x7f\xd1\x9f\x05\xfd\xf9_\x90\xcc\x90Zd\xcfV\xecYV\xacV\x11=\x7f\xf2\x84=O\xf0\xb9\x0b\xe4\xeb\n\x03\x9c\x80\x1fC\xe9\xd8\xe1\xfd=\xe3\xa1\xbf=\x8d\xe8A\\z)\x19\xc8\xb3\xbch\xe5X\xc4EK\xde \xe7\xb2\xe8H\xe9\xde\xa9\x8b\x16\x97\xb0\x8d\x99\x95\xd9\x03\xdb\xacN\xe4\x0b\x1d\xf3y\x1eJ\x91~h\xb2taQ\xaeo\n9\x8f\xc2pQfP\x88\xda<\xf1\xc5E;?/\xe5W\xf3\xd6\xf2f\xd8\x1a\x82\xc5\xf5\xda\xe4\xd9\xc2_\x911\xac\x9aoD\xa07\xed\xcb\xa5\xbfzY\xbe\xef\x8d\x1ef\x88\x9c\x1ew\x06F\x18\xe5>\xb3\xf5\xe7\xb6\xb6\x87X\xbc\xd9Z\xdb\xf9\x8a\x9f\xf4<+\xb5'#V\xd0<\xeb\xdaN6\xb9\xcd\xae\xb3\xcap2\xb1V\x0dg\x8d\xae\x9f\xbf\xf2~\xfe\xca\xfb\xf9+\xf6\xf3WM\xd9\x94\xc7\xfb\xcfl\x8b\xed\x7f\xcb\xed?\xe1D\x87.\x9b\xb3\xadi6,S,d\xf6\x9a\xc7\x99\xec&&z\n~\xb3\xaf\x82+\x11|t}\xbb\xf2\x11h\x9c\xc7\x84\xfeu\\\x1f\x1e\xb3R\xa5\xef\x85\xfc}\xac\x8e_\xf4\x97\x16\xaa0+r\x1ae\xcen\xbb\x14>\x03\x06F\xac\x05\xdf}\xd0\x8c\xac\xd00]\xe2]\xce\x8f\xe1\xb4\x0c\x9e\xa7\x9b\xb0\xb5N\xe0}~\x02\xefK'\xf0\xbe\xee\x04\xde\xef>\x81\x05\xd5\x00'\x80\xa6+)\x0b\x9e\xc7\x8c\x1c]\xe1\xbd\xcb\xe2\xb3\x9e\x02QQpm`2\xe2\xe5\xc9\xe8\xa5\xe3\xb14u\xa2\xc0\xf6\x1b\xe7\xe3\xad\xcfl\x9f\xb2\x15 \x18S\x16\xc6\xac@\x88\x05<\x94\x97\xb0\x86\xebk\xad\xb1\xa2\x98&A\n\x0f\xbc1t\xb4++\xf6\xc2\xac\xec\x96\xfa\xcd\xa0\x16\\U7\xed\x99\x96\xfco\xd2ar\xf4D\xed\xec\x8b\x89\xa7P6\xa9X\xec\xac\xd5\xe44B\xda\xa6#\x87\x8f\x81X \xdb\x89\x95\xa8/\xb1\xf2_\xa5\xac\xe0\xbft\x14\x8aQ\xec\xd8\x8c;\xe2\xb4\xc2=2\xc9\x1b\x9b\xa0\xaf\xe0\xaeI\n\x02\xf2\xc6\x8b\xb4\x1b/(7^\xc4I\xdfH\"}g\x8c\xf4\x9d\xc11DG0\xa3\x1b/\x98\xcc\x9a\xa4\xef\xcc\x10\xd0i\x85\xaa\xa6\xc44\xe7\xb1\xbdj\x9ds\xbaf\x0b3\xfd\x84F\xd0\xf6\xeaQKB\xa2_3\xcd\x92X\x18\x96D\xd8E\xbf\xa2K\x00#\xd5\xfa,\x10fW\xc1'S\xef\xe7\xa3\x19\x00-#\x1ce\x0d]\xc4y_\xa5\xc9\xea\xa2\x1cS\xd6\xe8{\xb9\xe2\xb4\x99V\xca\x95s\x83\x91\xab\xca\xc8\xf5.\x92\xb8\x03\x97\xd3\xac<\xa1-,\xe1\x18\xe6G\xb0\xa4\x8b\xc4<\xa5\x18ZJE\xb27.,\xcbEL{9\xa1\xfd]\xd2_\x97V\x89t\x03\x13\xb5K\x81x'\x9f\x82\x08\xae\x12\x80w\x1d\xf3\xd0\xb1\x19\x85xC\x17.\xbb\xb9\x1f[\xb7`\xa2\xdd\x82a\xb9\x05\x13\xc7\xe5 \x10\xc1\x87cH\x8e\xc0\xa7\xd0\x0c'~}\xbb\xf9\xe6s\x0eQ\x07vU\x01r\x88:]\x16\x7f \xf3\x8d\xb8r\xb7\xab!\xa2[\xae~\xfe\xcaq\x84\xdaq\xf8\xe58B\x8eJB \x95\x14\x0c\x95\x14p\x0c\xe1\x11\x14t\\\xfe\xa4h\xa2\x92\xc2\xa4E\xe2(\x8cLrC \xe3^\xca\xda\xf6\xd2\x17r\x97]H\xfb\xc9NV\\\x08\x9a\x91 \x89\xa7e\xd7\x9c\xe6V\x8bM[\xad\xc9\xe6\xb6o5\x90\xa1\x8b\xe1~\xe5H=\xe5\xbe\x9b\xb1}G\xb1jP\xee;\x8a\x9cW\x1c9\x9b9T\x81N3u\xef\x05.\xcc\xca\x99G\xa4\xb8\xf5\x8c\x02\xc5\xa6\xe3\x08&\xb3K\xfa\xcc\xa9v\xa1\xdf\xc6s2\x8bi\xe3Nl\x92\xe5\xa0\xc5\x8a\x0fNs\xf5\xea\x0f\x98l\x9d\x9d<3\xd3\xe7\x92\x05\x8bb\xb7U1\x060\xae\xbdk\x9eK\xb1\xa9\"\xb4\xd1\xd2r\x15\xb5:G\x97Z\"\xee\xff\xa5\xd3\xfe\xb1\xc7y\xd1~\x9cO\xff\x87\x8e\xf3\x9b2\xcec%\xffi=X\xbb4\xebK\xc4x7-\x18o\xd9\xb5\xeb\xe9)\xbdTw\xfd\xc2\x85\x9b\xda\x89\x8b\x1c\xe2M\xf7Y\x0b=%J\x9d\xc6\n\xed[u\xd5\xdc\xaa\x95|G\xfeT\xfc\x925\x85\xcc~\xecQ\x8a\xa3\xed\x1f\xcb\x9f\x8c\xc3\xde\xf2\xb3,\x9cWl\x92\x1d8p\x1e\xc6\xd3\x94\xc0y\x92.\x8a\n\x01\xfdk\x14\x06$\xce\x08\xbc{sQ>\xfcq\xbb\xfc)tR<\x8d\xd9\x9c\xe4\x92)\xd7\xf9\xdd\xf2:\x89\xb2\xa6\xae\x8a\x97\xae%\xb9\x94\xbek\xea\xae\x1a\x1fp\xcb\xca\xbb7\xd9Y\\,\x19\xda9\xd2\xc2\xcdH\xc4\xe8=\xa9pS\xf3\xe6\x18\x94Z\xc3\x89\xdcp\xbb<\xba\x83\x85u\x93\x7f\x1d\x98|\x11\xc9\x04\xb1\x8e5%\x96\x0b\xd6\x1e\xb34\xd4\xc2\xee\xbd\xbf$\x99M\x9c\xc9\xe0\xb2\xb5\x0355\xf1\xef\x0fL)<8\x82\x18\x8eaH\xffR\x84\x97O\xac+\xba\x15X\x0f1\x0f\xd3\xcb\x85\x9f\xbeL\xa6\xc4\x8e\xd1t.\xd6\xf7\xd7\x1a\x0cG;\xbb{\xfb\x07\x87O\x99}KK_s\xc5\xa6\xadK\xc4\x95\xabq\x84\x00$\x0b5\xab=\x8c\x8bXw-I\x91\xe8\xc9p3\xb4\xb6\xb2\xd2\xb6\xc2\x94\xd7\xc4\xbb\x9aE\xfe<\x83'PPZ\xe5\xa5\x1f,\x08K\xa5@[\xd1\xcbxo\xcaLG\x154\xe8\x17)\xd1$\x80\x06\x11\xa7\x82%m\xc2\x82M\x9c@\xc6\xb2\xb8\x02\xed\xe7\xb55!zV\xed\xea\xc3Vm\xfb\x0d\x8fx\x1fO\xc2\x8e8\xea\x19\x02\xddw\xbc\xabi\xb2|\xf3\xaa\x9d\xa2f\x16\xb2Z\xaeN\xbepTGU\xd4\xd1\xe4\x08\xa1\x91`P\xfa\xf3\xf0:\n\xe3\xb9Yy..\xda`d'\x94\x8b\xecjP\\3\xdbw\xa1\xcd\xa3K\xbe\x02\x9e\x91FC\x08\xa8\x97Y\xe7L\xaf\xd4\xb6vF\x16\xed\xa7\xb1\x98A5\xdd\\\x12bi\xde\x9f\xe8\xd7\xe6\x9f\xf4\xdf\xeb\xb6\xc0\xb4\xb9\xb5\x19\xd1\x9aU4(\xbd92\xec~&qa\x96\xd7\xb0\x81%M\xc4\x03w\x7f#\x98\xda\xdb[\xf9)\x89q\xc3:\xb2vA\xb3\x01p?U\xc5\x0d\x83\x83jI\x91\xd2U\x11\x87q\x84U\xa4\xde*Y\xd9\x8e\x83\xd8\x8a\xf6Y\x98U>y\x02+z\x96\xaa(E\x90\xac\x7fj\xb6%\xb8\xe3\xfa8\xe7$\x7f\x19%\x19\xc9rq\xc6\xbcN\x93%\xed\xf2\x18\xa6\xaeZ\xb4Y\xa6\x9d\xfc\x12\xf4\xfeT\x1b\x97^\x82 \xca\x0b\x99I\xba\x84\x13y\x18\xc2\x9c\xfb\x87\xd5\x81\xd8\xe8\x1c\xfd\x86vLt\xb2\xabsa=\xfb:\x91Z\xc6\x98\xcc\xd6\xce\x0e\xba\xf2T\xcf%7\xba\xf2Y\x07\xa7\xc3V\x98T\xdc\x11V\xf7\xa4\xaa\xfb#\xae\x13\xd4\x8f\xda\xd6\xce.\xb6\n'\xf5\xb7\x86v\x8e\xca@\xfcl\xc5\xe4b\xc5\xe01!\xf7\xdd\x08\x7f\xa9P\x1b\x84W) \xe8\x96\xadvl\xc3nD\x14\xe1KC!ub\xf9]\xafe\xd3\nf&L\xe7\xd1\xb2\xe9\xc9Y\x1b.\xdd/E\x14\x19\x8d\xa5\xf5<\xf8\x02\x9f\xaa\x04\xa4\xdc\xc5\xea\xb0\xac\xbeR\xce{\xe6\x1d9\x06k\xe4\xedy{\x96\xaeMM\xc0\xe6\xab+\x86\x01\xe8\xdf\x13q^~+);\xd0\x19\xe0N\xac/a<\xa5|}J\xb2$\xba!,\xf7Z\x9ca\xae)z#D\xc8\x1ff\xf4n\x95\x92i\x18\xf89a\x9f\xacR\x92\x91\x18\xcbq\xf3\xffs\x9e\xec\x8de}{\x1e\x85~F2\xeb\xb2I.O\xac,\xf0#?\xc5\xb2\xe4\xd7\x82\xc4\x01~\xb7\xf4W\xab0\x9e[\x97\x1d\x92\x11#y\xe5\x82__ \xe1\x8c\xe5\xb9\xc8\x85'\xac\xcc\xe1\xe6}\xc3\xb4\xd3Z\xb6x\xd8 \x0f\x9d\xc1?\xcc\xd0w\xb7b\x1bS\xfb\x87\xcf\xf1\x978\xb9\x8d\x81\xa9.\xc0\xfa\x81\x13\xa8?X\x10f\xb0$9%\x80\x90KD\x03oHf\xac\x0cae\xfe\xf6\xfc\xdd[\\\x04\xde\x0f\xcaju\\\xc8\x17a\xe6\xe5\xfe\x9c\xae8~G'\x0f7:\xfe\xe0\xf1\xed\xf9;>\xa1\xf8Z\xfc\xbe\xbf7\x8b\x96@b\xd3\x15\xb3\x07^c\xb9.\x98[Ky'\xd7\xda\xea*\xa1\xad\xb5Z`,\xbctu[\x1fO\xb9\xf4\x18f+\xef\xd4Q\xf35\xc9\xc7-\xee\xea\xa5\xe4\xc5\x8a\x05k\x0f\xeae\xe5\x85\x8c\xec\x1cs\x1e\x95\x9f\x96\x1f\xf8B\x9e%hB\x8c1 \xaf\xb7\xb8\xaf\x08'\x9e\x90\xcb\x9eK\x93^\xfe\xa4d\xc6LR\x9f\xc6\x82\xf2\x1d\x17\xf8\x92\x0e\xab%-\xd6\x95ii\xe3Rc\x0b\xbb\\\x82b\x81W\x165\xf4@\xea\\\xd9\xbdx\xf4\n\x85\x8dvG\x8em\xdd~\xc9\xd4\xf8j\x8c+\x1f\xee\x1b\xd8\xf2\x1d\xc7cR\xdd&s\xaeM\xdc+\x99\xe3\xda\xfd\xfc^\xf8\x02G\x91\xdb\xfd=\xd8\\\xf6\xe6\xd3\xd9\x0f\xc5C\x1f\xf5\xb0cH\x1c\xdbb\xfda\xc6`\x92\xb3\xd4\x83\xe3ey\x82\xa9\x92\xd3>\xb0\xd1#\xfd\\\x0e\x15_\x0f\xdc%\x80\x19\xda\xb1\xbd\xb7\x7f\xa8\x06\xacO\xf8\xab\xa7CG+7\x08\x8dC\xef\x1f\xa3\xde\x10\x9f\xfe\xe1O\xcd_\xe5\xbel\x13\x89\x0bmD\xdb\xc1\x00\x1c\x81\xab\xf6}\x15\x11\xa7\x17\x81)\xce\xf1\xa5\xf0\xae\xfa\xb0\xb3Y\x90\x08\x05S\xb0Gz\xa5,_\x96\xf1}\x88!\xe1\xcc\xef\xfd\x8e`*\xed1\xd8J:\xb5`bH%\xeb\x19\xc1\xbck\x98\xe3\xa6@\xd5u-\xef\x1a\xe3V\x18%[\xb0\xbcj\x94EbHW\x8e\xa4\x9e;G|\x9c\x06\xe6\xb5_`\xb7\x90\xa7\x16\xf3\xb5\x88\x0e\xa0_\xbe\xaf\xee\xa0t\x1b\xe8\x18\x9bIi\xc6\xb2\xf64c\xd0\xb3i\xe0\xcb+\x14(\xd67W\xa7\x1f\x9f\xf6\xa9\xe0\xa1\x1a/\x1f\xd8\xea\xd4\xd0\xcd:\x91\xb7\xd0\xe6\xfayN\x96\xab\x1c\xf2\x04\xa6\x84\x1d\xf5E\xca\xbc\xd9\x84\xbdni`\xa0*\x03\xaa\xcdl\xf7\xa2^%:u\xbf\x1d\xc9\x0f\xf7\xb5H~4\xfc\xbf\x16\xc9K\x07\xa0^\x1c=\xdc\xd3\x82d\xf7\xa9F\x1a\x1d\xdb\x0d!u\xc1\x1e\xab\xa9M\xfaz]\xa3\xf2\xc1\x05f\xbd\xb2\x02\x0c\xe0\x0d\x99\xf7Z\x8f\xaa\xa6e\x81\xbf\xe8\x0b,\xca\x02\xe7\xfa\x027e\x81\x8f\xfa\x02\xcb\xb2\xc0\x0b}\x81yY\xe0g}\x81;8\x81)\x9cB\"\x92.\xd1\x99\xe5\xd9\x97~7e\x11\xbb\xc6h&\xa5\xb6W_\xe8\x8a\xd7\x9c\xc2\x18\x16\xf4/\xcb\xecd\xa7\xbc\x95\xdf\x1f\x9c\xaa\n\x03\x9b\x8f\x9a\x9ei)\"\xca\x1d:1\x98\x9a|\x03\xf3\xe0^)\x11\x8a\xae&\x11\xd3\xb1\x14\xf6\x1d\xaa\x7f\xe8h(\xb1\x1d\xc0)\xbe\x841\xaa\x81\\\xb8c:!\xac[k\xbf\x85\xa5O\xb14\x8caI\xcb\xd1JB{\x86&yc\x98c\x07\xb0\x9a\x13\x98\xc1i\x07c\x00\x12\x83_\xd1\xb8z\x0b?\xf9B\x96n\x11f\xb5x\x1e]\xe2\xd3\x0c\xf3#\x83\xad\xea\xd6\xba\xbe\xa3W\xe0g\x04\x06\xe3\xcerP\xb7\x8f\xd1L\xa1za\xcd\xc3\xf5k\xb6u\xf8\\\xbd\xb0\xf2\xd1c*\xd7\xc60\x92\xaf\x0ea\xb1Z\x996W\x99\xb8\xccu\x95b)f5C\xe7\xdc\xad\x94\xa3\xfa\x1a5\xdau\x90\xc4\xa1\xd5\xfebr\xd9r\xc3\xea\x02\x88\xb3d\xd47\xca\x86\xa8N\x91\x19\xae\xfe\xd7\xfc\x0d\xaa5]\xc0of.\xfb\xcc\xb6\xef\xbc\x1b\x96\x14\x1b7^u\x87\xb8\xc4a[n\xe6r\x8c\xf4\x89~sM\xff\xdb\xb8\xa6\xaf\x9e<\x01\xdf\xbev\x01\xab5\xa7(\xc9\xbc\xd7\xcci;\xf3\xfe\x02'0\xa2?\xce\xe1\x04v\xe9\x8f\x8fp\x02\x87\xf4\xc7\x0bZf\x9f\xfe\xfa\x19N`\x07K}\x86\x13\xd8\xc7b\x9f\xe8\xdb\xd1\xa1[\x93\xb70Q\xfc\xbaR09\xeeT\x85=n\xc3x\x9a\xdc\xd2!\xb1_\xde;\x0c2q\x82ZL8\x15\xef\xc7\x86\xcf3\x12a\x10e\xfaW\xfd\x14\xdf\x8dAL\x84m\x89\xd9^\x84\x99\xe5\xc8\xa6_Zq\xdb\x9c\x8b\xdb\xe6\xdf(n\xeb\xe2\xbc\\~b\x8f\xf6\xd5\xd3\x16\x03\x81\xd1S\x9eE\xcaN\xeb\x9cT\xda\xceI\xa5\xa6e\xa1e\xa0\xda=\x1aPBEx`\xb0\xb0\x96\xd9(w\xb5\xc7\x7fT\x901h\xd4\x83\xa44r\x1ak9\x9b \x89g\xe1\xbch)q\x9b\x86\xb9x[\x1f\"\x86\xa0g\x07r\xec\xd6T\xb1\xd0=wfym \xd1\xd8\xde\xdb\xd9Q\xa6\xa8\x9a\x91Z\x7f\xf4M\xeavH\x8d\xfb\xd4\x8b7\xe3>\xfd\xff\xc6\xb5\xa7\x8e\xeb\x8f_z\xe52j\x17\x15\xd6\x94%\xc3#\xc8\xb5\x860\xb9\xde\x10\xe6F\xcd\xd4\xa0\xb5NoDr\xeb\xb0\xea+\x0dUx\x8072I/\xb9\xf7\x94\x89\xe3\x01\xbd\x89\x00=\xa8\xde\xef\xef\x0d\x06\x07\xec\xfd\xfe\xde\xde\xce\x1e]I\xfc\xd7\x13`\xf2&z\xb7\xaby.*\x1c\x94\x95\x1d\xb2\xe7\xc3a\x95]J\x14\x1a\xee\x96\xa5v\x86\xb5\xcf\x87\xa3\x83\xf2\xd5p\xef\xa9\x03<\xbf\xd63\x18\x0e\x87\xbb\xc3\xe1\xd0a\x97\x04\xd3&T4\xbe\xba!\xcf\x02\x87\x9d6\xa11\x8a\xfe\x18\xc06\xc1\xb6 l\x9d`\xf9}\x07\x9e=\x83\xa1\xca\xbe\x8b\x8b\"\xbf\xbd\xfd\x9d\xd1\x80~5\x1c\x8cv\x10&FM\xaf\xce\xac\xb6I\xf5k\xd1\x9a\xeeS\xad)\xf8\x0dw6\xdd~bO\xfc\xad\xdf\xfe\xe5\x92\xfe?\xd8zz\xf9\xfb\xd0\xdd\x19>8G\xdbs\xc5\xe0\x8dR\xc5\xdb\xff\xf9/\xb6}:\xfe:\xf1\xb7f\xbc\xf0\xe1\xc3\xfd\xa4\xfc\xe98\xdb\xcaW,\xe7\xec\xeep_+\xb4n7\xc5R\xc4\xa5|\x88\x89\x1d\xf0\x14\xcc\x01\xe3\xd0w\xf6PO\x92{\x01\x1f\xf1\xf3\xdc\x1e\xe0\xb2\x88Dx.F\xabc|\xab\xaf\xcc\x946\x9f\x0c/\xeb\xb9\xaf\xe0\x140\x80\xea\x9b8\xb7\xf3\xd2D\xcf\x85\xe1>\xa5h\x1a\xaf\x86\xf4\xd5\x00\xe3\xb4\x16v\x8cD\x8f\x01\xcc+\n\xb8\xc9\x93\xe3g\xd6\xe5v\x1d8S\xe9\xcd\xbc\xfe\xaai\x02B/\xeb\x895\x06\xeb\x89\xbf\\\x1diB#[\xc7\xf86\xca\xb5/\x9f\xe1\xcb\xb9\xf6\xe5\x0f\xd6\x0f\xf4\xe5\xafE\x92\x1f5b\xd15\xa7\xed\xc6\x88S\x16\xb2\x11\xb6\xac-\xe0V\xba=\x84x\x93K\x06a\x86\x1eK\x9a\xc1\x85\xe1:\xfa\xe0\xd6dVR2Lq\x0c\xe6z#c\xb4`\x149H\xf8W\x06\xe6\xbeKum\x0coH/2\x89/y\xe4\x1bm\x19]\x0c\x91\xfa<95Z\xdb\xc5l\xc0=\xd2\xe9q\xa0[\x1368\x8e@.y\x04\xf3V \x11\xff\xb4q<\nSW~\xbe5\xcd\xa9\xeb\xdd\\\xf8xN\xd3\x9fE\xcc\"\x1d\xbek\xcfgWJ\x1e\x84b\xd4\xfa\xe5\x17\xcb\x81c\x18p\xcd\x16)\xe3,\x86.X\x7f\x1eZ\x8e\n\x99\x9f\xfc(\x9c\x9e\xc5y\x98\xdf\xbddf(>}\x81x3\x99\x92\x8fI\x88j\xea\xc2e\x9ajZ\x17\x96\x0eI/A\xb4\xd4\xb5'\x86\x9ee\xae\x9c\x18\x08\xbb\xc5\x06\xff\xd7\x1c\x03\x84w\xb6\xb1\x12I\xd80\"\x83\xa8v\xea\xc2\x8d\x0e\x19\xb51Ak\xc9\xd8\xa5\xa0\xd6U\xe0\xcbS)\xc1;\x8c\xf5\xf2\x98\xae\x1e\x19E\xeb\x0dn\x8f1K\xfb\xeai\xcbD\xeb{\x87Z\xd1\xfa\x81Z \x13\xad\x0fGj-\x8f\x93\xad\xbb\x92\xf4\xdc ^_t\x89\xd7o\xba\xc4\xeb\xcb.\xf1\xfa\xbcK\xbc~\x07'L\xb6\x8d\x923.\xe3f\n\x13!A7\x8a\xbc\xcd\xa2\xf5\xc5\xba\xf2\xf8+8\x81kI\xd8G\xbf\xb9\xae \xff~\xd7\xa5Q\xaaD\xechY)\x89\xd8\xd1+\xd3f\x82v\x14\x91\xdfA]\xd0~\x87\x82\xf6S\xb8\x831\xc4\x0eJ\xd4\xe9\xb1\x8c\xc2\xa5\x00\x8fp!&G\xc9\xb9Q\xa0X\x98\x04\x8aw\x8c\xc4\xb8c\xe2@!2\xfc\xec\xb8\x80\xb2\xc2\x0d\x9ee,\xe4\x02\xc3\x15\x06\x08\x10\x02y\xf1\xd6\xbe\xe2\"G\xa301\xf5\x02\xa6\x9eJ\xdc\xffi\xc1\xa2Y\xf5\xa5*\xb3\xb8\xeak\xa0\xaa\xc4\xf8\x06Uw\"\xdd\xa0\xdb\x96J\x00\x15\x9a}hP=\xdc\xf0\xa8\x01\xdc\xcc&\xc4\x1c\"\xda\x85W``KtM0R\xdf<\xf22*\x95\xed\x82\x85\x11\x15~\xec?\x9c\xa0\xe1\x0coH\n\xba\xec\xbb%\xf9\xe4\xa0U\xcd\x0f\x0e\x8fF\xf6\xactu?\xde.}\"\x9e\x19\x03\xfe\xaegP\xa7\xf1X\x8b\x99\xea3\xb7\x0b\xc7\x85\xd4N\xbd\x8f\xb0 \xa9\xf7\x1a~\x84\xa4=\x02\x83\xe0o,\x0b&\xe4\xd2\xa6c0\x02)gF\x03\n\x05}\x7f\x0f9w\x88\xa3_K\xd9\xe0\xeb\xc3u0 #\xc6O\xae\xb15\xddG\x15\x8e\xba\xeaU\xdc\xc3\xfa$_\x84\x95\xd1\xfa\x83,on\x9a\x19\xd0\xfab:\x0c\xa3\xb4\x1aq\xd5\xc0\x05r\xe3G\x8em\xb1\xc7U\xf5F# \xcd\xb1Y\xc9\xdc\x11\x93\xb1[\x1d\xaf\xf6\x9d\xa4\x905Q\xe3S\xdd\xe6\xfc\xfe\xa2\xc6^\x9e\xb37\"\x19E\xa3\x01\x91xb\xacMT\xb1\x08\xb3SV\x160\xf1\xf0j\xb9\xd0\x84\xe7C\x91\xd89\xf6\xb2\x15 \xceIDh/2\xcd#\xbc\xfb\xb7,i\x15\xf7\x89\xa3\xcc\xf4\xad. \x8e\xb8x\xa7}\xbb\xa0\x0cmi \\\xd7\x1e\xd25\xa8XH\xff\xfe\x80\xb1lb\x9d\xa5\x80|}H\xc3\xb1\xc6\xdeF\\\x0f\x18\xd5\xd3\xd4l\xeeB\xd8\xf7x\x85j0\xe2\xd4\xb8\xf5\xd3\xd8\xb6p\x95\xde\xa6\xfejE\xd21\x04I\x11M\xe3\x1fr\x98\x13\x16\x17\xd4r\xdc\xa6\x9fa\xb3 \xad\x17\x99@dt{\x0c\xfe\xa1\x86\xf4\xcd\x86[\"\xe3\xf2\xcdGiZ\x7f\x15\xaa\x9bO0\xae\xcd\x944\xcc\xf9\xae\xbe\xc9v\xbc\x81g!\x8d\x9fW\x0c\xdan\x17\x13f\xe6\xfe\x0f\x9d.\xeeU\x1d\x15:\xc1\xa7h\xe3\xcf\x08\x91J\xde\x8eqCE\x02l?\xe6\"\xf7\x0d\xc3\x88\x1f-R\x1c\x1d\xa8RBLy\xd1\xe4\xd1d*\xa0\xa4\x06\x18\xda\x96\"\xb2\x887M\x8e*\xa5\xfcb\xd2\xcaQ\xea\xa1\xa7\x0f\xcf$\x8f\xa6\x1f\xaco\xfa\xc4V\x16\xae\xbdL\x03[\x03\x03\xed\xba\"\x0d[s\xa9tx?\xd6\xfc\xb2\xdb\xcc\x7f\xae\x8b\xf9E\x92D2\xb3\xd9\xab}I\x90\xac\xda\xa7\x0b\xab\x1bu1\x84\xdcv[uZ\xf2+k\x80\xfa\x99-\x9f\xb23\xa6\xf1\xdc\x95\xa2\xe6\xd4\x0b\xab\xd1s4\x87\x13\xba\xb4\xa3\xeb1\xda\xe8P\xb4\x8a\xe4Qj\xc7\x8ekN\xdb_\x1e\x0d\xa2\xdaZ\x89\x1a\xe1\xfe\xd0h\xcf\x9a\x93\xdcb\x91j\xe8\x9cg\xe2\xae\xb9I\xad\xe7A@\xb2\x8c\x9e\x7f\x18\xab\xb9X\xd19#S\xd36\xb5\x90d\xe1u3\x86\x8c\x99\x87\x95\x0e)kn\xe4~Vb\x0dw\x84\xb5\xac\xc4\x1e\xd7\xa4\xbab\xbe\xa5\xc9N\xb7a\x83\xcb\x81\xce\x88,\xb6w\xf6v\xb5\x8a\x91}Uz[\xf0\xe2\xaa\xe7\x02J\x9f\xecCu\xafD\xac\xd1]u\xe4L\xf1\xaf\x96\x9ei\\\xadV\x18\xb0\xb3\x0eS\xb4L\x9b\x93\xfcc\x92Dd\xaa\xe6\x87Xh\xe4\x1a7%2)\x1f\x97'\xeb\xb2\xc1\x1d\x9cy\x98\xde\xea\x13 \x928\x08#r\x91\xfaq\xe6\xb3\xd2O\x9e\xc0\x0d0'\xff\xe1h\xc72YOP\xeem\xa2l\xdb8\xccY6\xcfq;\xe3\xc5<]\xc34\xbf+i\xdb\x8ce\x18\xc3\xbc\x18\xecX\xae}\xa5\x88\xa54\x82\xabu\x1a\xd98\xa9\x9a\x81S\xb0g(\xb5\x0d\x08%\x19\xcd\x9f9.\xdc\xdaH\xfe\x95\xdf\x9e\x18\xc3\xb0?\xa8t\xe6z\xc0 \xfc(\xba\xf6\x83/\xff\xbb \x05\xf1R\x92\x91\\\x11{<\x16\"\xf5\x9a\xe3$\x0fgw\xcf\xa3H\xad\xbd\x1a\xc8\xa5nI\xdd5\xe3\xff1\x1f\xe7j\x98\xd2\x9a\xb2\x9d6\xb8\xf2\x95\xebj\xfa\xd7\xd8\x07\xa2\x19\xcd\xba=i[\xd5R%\x1b\x83v\xdb\xa8\xeb6\xe35\xe2]-\x93\"\xce1\x15\x06lA.\xdf\xb7V{\xd5F\xdej\xe1\xa2\x88G\xeb\xab\x96\xc5\xfe\x18\x8ev-\xc4\x9c\xe2\xb9C\x7ffI\x9a\xdb\xd7\x8e\x0b\xab\xcd\xcdz%Ud\xba*\xaca\xce\xa3\x1a6\xd7\x0b\x17tR\x04:\x9b\xc4\x06\x0fQ\x1f\xe7\xe8jE\xe2i\x18\xcf_\xf2\xd9\xcb\x9a\x0c\x1c\xba\x156\x0b\x96\xb3_xQ2\xbfHVo\xc9\x0d\x89>a\x88'c\xa0\xa3\x1b\x1e\xbd\xd6\x90\x9e(\xf4\xae\x82\"MI\x9cs\xc6\x0c\xf3\x89c\x9e\x03?\xc8E\x1b?3\x16\x0b\x8f\xe4\x88\x8d\xa2\x11g\xcba\n\x03\x8be\x03,VS?',\xb8WD\x97\xd4{\x7fI\xe8\xaa\x14\x0c\\\x1e.\x89\x9dt\x19\xab\x00\x87F\xe6\xadH:K\xd2\xe5g\xac\xf7\xcd\xec=\xa1\x84\x85\x9f\xde\xd9\xa1\x8bF\x0d\xcd\x85\xcct\xa7 *n\xa5F\xcf\xe2)\x8b\x0c\xae\xe7>{D\xbe#\nf \xf1\xaf\xf4\xaf\xedO\x82K\x97\xef\xc2\xe2:\n\x03\x11\xb8\xc6V}>\xfe\xd4\xfc\x95\xd8\xb2\xdf\x19D*R\x9c\x93\\\x1a\x1b\x9f\x90\xac\x03\x8d\xf1\xad8oC\x87\xc2-4I\xfb\xe0\xc4v\xb4\x14z)\x89\x88\x9f\x11\xbb\x89\xa0\x1c\x03\xd6b_\xb6!\xa4Z\x9d\xba\x99\xee@v]\xa1\x86\xf8\xd2\xea&\xb6\xa1\x02i$\x16$\xcf\xd1\x89>M\xc6N\x88\xc2-E\\\xd0\x93\xe2\xd5R\xa1k\xd6\xf3\xa7S\x8a\x9c\xc3x~\x91\xd8w\x8a8\xef\xb6M\xcc\xc9\xa3\x0b\x95h\xf1\xfe\x1e\x16\xc6(Y\xb3\x0e\xb7:\xa1\x88\xbb\x93\x8f\x1c=\x86!b\xf0\xf6\x95HKO\xd7\xc2]9\xad\xba\xd4v\xdaN\x19{\xc3\xa8<}\xf3\xe2\xe4\xd0\x04\xb5\x03-\xfd\x08\xb9|\xd4\xd7\xd6tWG\x8d\x82\xa4\xb3\x06/`\\\xed,2V}\x81^Sn\x8cL\x19\xee\xcb\x9a\xeb\xb4\xcc\x17\xd3\xb2`\x97t,7^\xbd\xaaf\x05m\xfb\x84\xe3\xb9\xcf\x1c\xb5\x97\xe75\xd1\xdbP\xf2\x16\xc3\xec\x05m3\x8c\xe7\xbcQFFb\xa0\x81\x9c\x0b\xe8PZ\xe0]\xb1C\x03\x8b\xbfGm\x08\x17Ji^\x9c`N\xbc!\xd2\x98\xdaQ\xb5\x8ed\x16\x15\xd9\xe2\x85\x02\xd5[\x85\x19\x8a)G\xceT\xca\xcd\xe5\x88/\xf5\xf3g\x16\xb1\x88\x8b\x94L\xc3\xbe\xe5\xb4\xe2>\xbd\xb6\xb0I^\xb0\xfe\x08@\x9f\xe7\xa9\x9f\x93\xf9\xddz}9\xa0}\xd1gOQ\x00\\\x92T\x87\xf8\xc95\xdd:\xbe\xf2Es\xda\xc5GO\xe9G7\xfa\x91\xb5M\x9a\x9f\xf9\xab\x1e\xa9T\x03[\xb3\xe6\\N\x97\xf0[\x8f\xd5\xf5\xd2\x8f\x7f\xc8\xc5\xb2\x06?\xc6&@\x1cP\x10\xc6\xe0c\xe8E\xf25\x87\xdb\x05II\xc1\x87\xe2c\x08\x85\x1c\xaeI\x18\xcf\xc5\xf6\xf4\xe8\xb8\xa6%5\x80\xfds\x19n2\xb2>z\x81\xd6\x19>]C\xce\xb0\x11\xdb{C\xc7l\xb4\xc3q\xc0\x01\x9d!\xbd*\xe9\xf7\x07\x17,\xbf\xa1B\x02FytP\x06r\x13]s\xeaxU\x9c\x8c\x87G\xa84\xc5\xd3.O9\xcc~@\xc1\xf2T\x17\x1f\x07_\x8d\x86\xea\xab\xd0\x14h\xa2\xd4b\xa0\xcd_\x861!\xe4\xf7\xa5\xf6\xa4\xd3[^\xc8tUSWz=@\xd7\x8e\x95\xf5\x0b\xdd\x1d%U|\xaf$\xe5Q\xcf\xe4\xd7,\xe2i\xa9\xa0\xa9\xcc*O\xab1\x8e\x0d]]\xcf\x83\xe8\xbb*D\xc4/\xd9;\xb1\x1b\x18\xd2\xac\x9d@hW\xfa\xae\xd6)\xe3\xfd\x97\xc3JR\xe8H\x86\x00c\xd4\x03U\xddk\x9d\xc3\x7f\xc4\xfc\xad\xd1\xf7\xc7oG\xb3\xd4\x93\xb3\x97J\xc4O}S&\xfc\xd6 \xd0\x9a^Bgx\xfe=\xc6( T\x0d\x86\xe6\xaa\x84\x94\x0bTu\xf2T;\xb6\x9f:.L\xaci\x98\xad\xe8\x01\xf2\x12=\xa9-\x17\xac\xab\xdcOylVz\x1b\xfbyx\xc3\xfc+1\x96c\xf6\x8a\xcd\xf7\xc7\x94\xd0gd\xca\x9eRT\xee\xcf\xd1\x08\xee\xa5\xa94B\x1f\xca\xdd%j\xd8p\xdf\x18K\xdb\x10\x1d\xad4\xfb\xd3ft\x03\\\xd4\xa7\xd8i\x96\x01\x8e{\xe3Y\x0c\x00\xec`\xf0y \x8f=D\xc5\xecX\xfa&\x9e\xf8\x9a\xdc!\x0d\xe8\x08Y\x1d\xe6B\xf5\xd4Y\x87S\xdd\xc31l\xb08\x8e1\xb7\xde\xfb\xa9i\xbc(i\x84\xbd&\"\x80\x13\xa0\xdcU\xd8\xb0\x9aR\xf6\x1bZY\x89\xc8\x9d\x1a\xc4\x81<\xb1\xbe\xfc\x9f\x9acN\xedL\x96\\\xd5\xa7l\xc5\xfa\xf6J\x9c\xea=$L\xcdAmh&\\H \xd4\xd5\xda,\xc9t\xd5\xc4\xabw\x05}\xa1\xea\x8fl\x87\xd9\xf8a\x88\xcc:7#M\x08\xafM~r\x02h\xadf\x9e\x95\xc6\x8c\xb4r\xa7Y\x9e\xac\xa4I\xe9\x00\xda\xfa\x80P\xeaGH(\xcfZ@\xc1\xb0\xea\x0bD\xbd\xbc\xc2\xda\xa3\x13\xa6\x80\xee\xbd\xb8:\xc1\xb1\"i\x86\x99\xc4\xbb\xd7N\x98}d\x85\x19\xdaj\xb4\xd3\xd6\x8c\xfc\xadv\xbf\xd4J\xf7\x96\x9a\xd6\xa6\xa7\x07\xae\x84z\x0c\x0d\x96\xd1\x0c\xf1\x0f\xd3\x84k\xa3\xd3\xeb\x94\x15\x95\xd0\x9aebB\x146\x89//\xb5\x12\xd1j_;.dU\xe7\x98kc\xe6\xf9\xc5|I\xe2\xfce\xe4g\xbd\x1dNd\xb8\xa8\xbe'5\x1f.\x84\x8d!b\xda\x0d\x8fn\x10\x93[\xf5\x18J\x99\xec\xbf\xfc\xd0\xa9\xdda\"\x16\xf9A\x9d\x98\x06\x8c\xa6.\x8f3E&\x18\xfbR>f<\x9e\x8b\x98\xa4\x19\x908H\xa6a<\xafgD\xc8\x17$\xc6\x8d\x87\xc9\xd2\xca\xc3\x0fD\xe0\x17\x1fx\x03\x06e\xb88c\xb9\xc1@/\xd57\xffF\x18\x19\x18\xcc\x04\xf4S\x13\xb5\x88\x85\xc0\x0cCC\x8c\x9b\x1f\x84}n}\xdc<\x9b\xa6\x0f\xac\xa2\x16gp\xbd\x03\x1d\xae\xdb\x17\x0c\xdb=y\x82LO\xb9\x1e\xe4w\xcdC\xbe\x85P\xc3\xd0>\xde\xf5]N\xde\xf2l\xdd1FWA\xcf\xf3\xea1\x1cWv\xcb\xeaV\xfd!\x99\xcd2\x92\xff@\x97@R\xe4\x90\xcc\xe0:)\xe2if\x9a]\xb5MZ9l\x82\x8d\xb6\xfd\x03\xc7\xd8\x0e\xdbs\xfd\xdb\xc9\xeb\x99\xd1\x99!juO!\xd5@\nuE\x80\xae\x08n\xe0\xb1\xee1\x05\xb3\xbe'\xad\x88)oCD\xb4\x00\xcf|\xd8\xbaU4J\xe2\xda\xec\x8f\xf5\xde,\xdd\x04\xa1\xb84\x9f#@\xcb\xe8\x0e\xf7\xf7\xcc\xed\xde*\xf2\xd9a\xdb\xd4od^\x98\x9dq\xbca\xc7\x8ei\x13 \xd4bIh\x83\x1d\n\xac+%\xee\xd1\xed$\x90\xce\xd3\x01\xdc\xc3\x82M\x9c\xde\xe2\x10\xf8\xe1\x8a\xd3\x81\xc7V\xea8\xdem\x1a\xe63/HX\xa7\xdcL\x8d\xe1\x98\x11\x91\x84rZ$\xb9)\x1bUJi\x08\xfag\xf3\x04\x86t`\x18\xbax\xb4\xb7\x07O \x9f\xa4\x1a=\xd7Z#\xd4$^\x85r\xdd<;\xa1\xbc\x95\x89jy^e\x96\xf1#\x0c\xbfB\xf8\xce\x82\xc8O\xe7\x842\xa8~\x0cK\xffk\xb8,\x96\x90\xa1;\xc7\xe0+\xe5\xb3}9\xcd\xf5p\xdfAWNJ6i)\x9e\x12a\xdf\xf7\x1c\xd4\xa2u%J'\x8b\x9c;JH\xcb\xf5\xdb\xb4\x0f\x92\xd6\xdasHe\xbc0\xfb)$,\xd0H\xf31\x9d\x88\xfb{ \x06\x14/\xf7\xb4\"0\x9b\xbd\xd5\xb8\xd6W\x8c\x9e\xa5\x13r\x80\xb4\x9c\xdb\xa1\xc0\xa9\xcd\xb2'\x9a\xedU[\xbe\x1b\xc3\xa3#\xa7\x14\x0d\x1bOB\x14\x88Z~\x16\x84\xa1\xa5\x17\x8b\xb2\x12\x91\x9f\x87\xf1\xb0\xb5\xc8u\x18\xfb\xe9\x9d\xa1\x08H\x12(\xfdq\xc2*A2\xaf\xad\x95\"\x9fm\xb5\x96`\x84vg/^\xdb\xc41\x02\x1c\xaa\xe6\x82l\xd4\xde\x9f \xdb\xea(\x91\xcf\x86\xfb\x11\xe9*\xb3\xd5R\x08\xaa~\x8f\xe0\xc7v\x08.\xc8\xd7\xeeZbx\xf6\xec\x19\x18\xac\xb6\xf9t\xfa\x19\xd9\xdf\xed\xae\xea\xb7.@\n\xa32cE\xa8\xedpzO\x0cp&\xcc\xc6\x1d\x95;\xf5\xe8f.\xcf\x8f\xd6\xf8T\x95\xbe\xeb\xd1\xd7M\x1b\xc7\"\xf6\x16\xd1F\xc6\xe7riz\xfc\xb9\xe2\x10L{5\xba\x94\x98*\x83\xc6\xa1B\x01\xa4\xa4\x189\xc0\xb64\xd3h\x10\xb7\xc4\x94;L\x99\xf0\x1cOn\xe49\xe1\x99,\x91;\xc575\x11\x1d=\xdd\xb7\xca'\x87 b\xa1I\xcf\x1cV\xe1f\xecB\x98\xbd\xf7\xdf\xdb\xb1S\x16K\xf8\xe1\\\xca\xb7\xb6`\xe8\x08\x91\x80(T\xbe\xdcDZ?\xa6\x07 \xe9p\x84@\xcb\x95V8\x00\x8f\xfe$7\xdd\\\x19@\xa2\x8c`m1\xa3\xd7\xcc\xcdm\xf4k\xafk\xf9A\x8bH\x8c\xd9\xdd#\xcf>K\x93%\xe5\x15S\x07\x15\xc35\xae\xac\xc6J\xe5\x15\xfb\xb45\x841\xcc\x95\x15eX!Z\xe1\x13\xaf8\x87'H\xeb\xb8\x069\x83\xe9\xd0\xad\xc4\x17\x92\xf6\x97\xc7\xd9\xc5\x08\xa4\xa7\xadE*\xf5\x04\xe7Z\xb5\x85#?\xcb\xdf\x18>\xc0\xb1O\xf2\xcb\xb6\xd1ky\x97\x1b?* {\xc1\xae0\x08Q\xce\x843Z\xfd\xe8q\x15\xfe\x06d\x12\xb2\xf0l\x86\xd8o\x85\xb4p\xf5%2\x89\n\xd6O\xb1\x14\\\x95\x89\x14\xd8\x89\xc6\xf8\xef\xb4\x8a\xc6\x99*h\x14\xe9!~\xb8q\xa1\x15>\xe0gY\xfd\xd1\x96\xf4\xcc(/@\xb2\xb6\xa2\xd8GL\x18X\xddw\xee+\x9fEO-`\x9bEQ\xe5\x7fc\xfc\xab\xd9o\x8dG\x8a`\xd6\xd4Q\xde\x8dai\x92FX\x00{\xe2\xa5\xc4\x9f~~\x13\xe7\xc3\xfd\x17gv\x0e?\xea\xdc\x18\xf5\xfb\xdc\xa8E\x16\xce\x8e\xa6A#M\x87j\x98#\x08\xe1\x18\x8a#\x0877\xf5L\x19\xf0\xc6px\xa1\x83\xfdG\xad4OQ\x1cp<\x1c\xc2\x16\x04\xadr\x1dQS\xf9!]9\xb4\x9b\xa1\xe3\xb2\xcfa\x93\x03(+\xe7-\xa0\x001V\xc9\x91\xec\x16K\"\xc1j\x0ca\xeb\x84\xf7\xc6\xe5P0 g3lb\xd8\x84\x0c\x9eAQ\x9e$\x05lA\xe60\x7f`\x84\xda3d\xe6\xc2\xad\xad\xb6!\x97\xc4\xf3\x8c\x07\x0b\\1\x1ep\x05\xc7\x90\x1d\xc1\xaa\x0d\xe8P\x03[{>\x1cCz\x04\x9b\x9b~\x1b\xfa\xa0\xc7\x84\x9c\xf7\xa2\xb8\xce\xf2\xd4\xa6|\x82\xef\x02O\x8d\xa1_X8H\xa4\xd6\x8a\x8a\xa0\xf0\xf5e\xc9\x84\xee4f\xba\xdb\x03\xe9\x89\xcaz-\x9a\xeb\x8eE\xc3+{a\xbf\xa6\x1bJ^\x16\x0e\xaa\xe4\x9a&@\xa6\x96\xae\xfa\xb6d6\x18(\xeb\x94smM.]Y\x14V\xb2\xf2L\"\x963\x87K&8\"r\x02\x94\xb8C\xa2\xafK\xa8\x98\xaf;\xe8\xdb~\x83\xae\xc1\xa6W\xc5g\xfd*~a\xff\xb6~\xa7\xbf\xf6\xad\xbb\x97V\xa3\x92W\x96\xde\xb6|\xd6\xa4\xadF\xa4\xa0\x15\x1b\xb6\x9d\xd3\xd3i\x84i!\x1c\xbe \x19+!\xcd\x9f\xcf\xf9M\xcaO\xc3!\x8f\xdaL\xd1\xc6\xde\xbe\x0b!\x9b\xf6\xc4)\x7f\x9a4yF\x94\xfc\xf0\xad\x0b\xfe\xbc\x8d\x9f\xad\xb3\x10t\xd8q\x8d\xc5\x84SH\x91\x07yq\x97\x13\x91\xf1\x9dbU\xf5!WQ\xe5u\x9b\xae\xb6~\xbdl\xeb\x17\x05\xf3;?_x\xcb0.i\xc6\x1e\"[:\x9f\xe8\x1aq\x04 \x8an\xdb\xd0&\xa5\xbd]\xb4\xafu1F\x07\x99$-\xc9\xe5\x03\x11,\xc1X\x82\x9e\xe0\x11e\xa5w\x9e\xc2)\xec\xc2\x98\xdd\x8dv\xe0\x14v\xf8\xdd\xf0\xe9\x10Na\x04c\x93\xe8\x05iE\xd8\x84\x19\x1c\xa3\xb0O\xc8\xeffm4D\x9f\x04\xb8\x11\x1c\xc3ptX\x12rQ\x8b^ \x04\x9da.\xd2'-.m\x8er\x19\xc3\xa7#x\xc2\x88X2\xa1\x83\x1b^:L8@\xd9\x17{g\x08O r\xe0\xf8\x18\xf6\xe1\x1e\xf6w\xe0 %^\x9f\x89\x0cb\xd8\xdd\xec;t\xd7`\xf6).\xb9\x7f<3>\xde\x8d.]e(!\xf6\xbe\xfe\xcc\x97F4\xdc+G4\x1c\xc1=\xd8bL\xf2\x10}:\xc4\xd1`\xf7\x80\x7fw\xcc\x13\x96\xdd\xdf#9+%x\xfb^\xe3\xdf}\xfc\xf8\x8b\xf2ng\x0dh\xd4\x9f\x15\x06\x08\x1d*\x10\x92@\xe6\xd7AV8\"\xef\x1b\xad\x89\x82\x8c\xa5\x92\x1bI`\xd2\x0eQO\x12\x97\xc6X\x94/\xc2\xcfi\xdd;.\xee\xe4!\xc5s\x81\xdc\x9e\x1d\x94i\xe4\\H\x19>\x0f\x98\x18u\x00O\x00\xf3\xc5\xdd\xb3I\xe4\xdc\x0c\xcb%w\x0f<\x95\x1cer\xc4w\x18\x1bg\xf3\x04fM\x8co\xc2\xd2\xdd\x14\xc9M\x19\xa7\xa9M|\x8a\x8aq\x8a^\xbe\x94$\x9f&\x1d\x1d\xb71>\xe7b\x10\x9d\xde\x02$\xdd\x85\xa5\xc9V&\xaeT\xaf\x0c\x04(\xc3\xa2\xa4\xa8=\xa4\xc7\xeb\xe6I\x9f\xce\xf0\xe3&u\x99j\xeeK\x07\x11\x157\x81l7\x8eO\xf9.\xf7\xb8b\xe9\x84\x1e\x0e\xb9w\x1e%\xb7\xe5\x93\xf6y\xd8$U\x84N\x82\x12V\x0dC\xc0\xba\x95y\xa8\xba\xb37\x1b\x1e8\x90{o\xde\x9f\x7f<{yq\xf5\xee\xf9\xffw\xf5\xe2o\x17g\xe7t=\x0dL\xb2\xb8\x139\x89\x0e1\x98\x05\xe9\x9fwy\xf6\x18\x83\xdf\x0b\xdf\x1a\xc5di\xd8a\xa2R\xb3J2\x9fie)\xbd\x00\xb0\xe5\x18N\x92\x1e\x01\x13\xc4\xc5{\xb5\xdb\x94\x1f\x89K\x8f;\x1e\\\xd8\x1dqZi\x96$\xb6c\x14\x87\x12\xca\x901K\xd3'O\x84'x\xf9\xcc\x1eb\xc2\xbcJ\xa9\xd8\\\xaa\x9d\xd9\x0d\xf8\x1864\xb2\x93\xfa\xbab\xf1u\xbe\xbc\xf3\xbf\x96\x91\xa3|\x1b\x05\xcb\xab$\x89\xce\xc3\xdf\xe8t\x1e\x0e\x9fb\xf2\xa1+\xeea\xd3\xb9\xe2\xb5\x13[sJT=\xbf\xb8`\xbb\x87\x1f\x8cT\x7fd\xf3\xf0EZ\x0b\xcc\x16!\xb5\xec Y\xeb\xa3v]\xd1\x91k\xcb\xb8\x06\xfb\xc9st\xf5\xa7\x0d\xb1_\x18\x1cJ+!\x13\xdetY\xa9Xa_hmM\x98\xe1K\xdd\xd5\xad\xcd\xccAV\xec16\x08\x02ZGc\xdf\xd43\xd0\xc9\xb5\xd5\\j\xb5\xd0B\x0c\x933\x0c\xd2\"\xd5\xa5\xbc\x07\x99\xc4\x97FvK\xc8\xa5j\xc7\x83\xad\xcb\xb3\x0f\xdcV\xdc\x84\xee\xcc\xbd0\x13\xe7>7F1\xb3\x812\n\xf7\xff\xa0\xf9\xa3\x97\xcf\x8c\xb9Q\x13\xce\x19_\xe1 \xdf\xb1\x16\xa1Z\xb7is\x91J\xce\x1e'\xb0p\xa1F\xe9I\xc7\xe7\xc6\xa0\xfe.\xbb\xf5W\xc3\xfd\xb6x\x9d\xa0\x06\x0fh\xd3\x13\x11\xad\x9eH6\xd7\xe4=\xc9(\x89]\x99\x0e/\x8b(\x0fW\x11\xa1\x10\x1c\xeeo]\x87\xb9\xf6X\xac)\x1a\x06Gh\xbeK\x8e\xd8\xf2\x1b9p#\xe2\x9f\xba\x98\xb4R\xc7\x7f e\x82\x1cB\x04\x04\x10\xeb`\xd9\x19}W\xb0\xec~#XvF\x8f\x02\xcbn\x03,;\x8e[=\xa2`b\x7ftZ\xb85\xa0\xb5\xbf\xfb]\xa1u\xf8\x8d\xd0\xda\xdf}\x14\xb4\x0e\x1b\xd0:\xd0Ck_y\x9d\xe8\xda\xf9\x83F0\xcc\xe6LX}a\xfc\x16x&\x8f\xa7\xf2(\xb1\xfa\xd5\x8b~S\xb1Z\x890\x90\x90\x1f\xa2\x19\x1e.\xba>M\xa0\xd9(\x96>>\xa1\xbd\xe5w\x9d\x1f\xe3\xeac \xa4\x89\xe4\xcc%\x19(\x1b\xa5\x1b\xd0\x83\xee\x14\x17\xef\xc5\xc7j1\x9b\x9c\xac\xa0\x0f\xb5\n\xbd(Vq\xf1\xc6_\xae\xd3x\x1b\x9d+.^\xef\xf3u\xeam\xa5\x8e\xa1\x1f\x85,.\xde\xfe\x87u\xda\xef\xb4\x1d\x86\xaa\xe2\xf3u*n\xa1\xc6\xa1\x17E\x0e=\xa9rX\x872\x87j4\x17\xfdF\xd3I\xac\x03\x94v\xd1Z\xc6\xfa3\x8b\x0eUz+\x8e\xb51\x14\xd4\x8b0w\xc4M\xb0\xac\xbef\xd3\xa0\xa5\xc9\x1eD\x0c\x12\x1c\xac)\x0cI\x1d\xa9\x93_\x0b?j\x8f\x1f\x01ZiC\x87lA:\x0c\x85\x8df\xeb\xc1\xc3\xcf\x80\xfb{\x8e,KY\x88\xde/\\\x19E\x18g+L+\xd6\xefd2)F\x98\xffRC\xca\xdf\xdaqq>=\xe3f\xd3%]Q\xba\xf3 \x8e\xe4\xfe\x92\xde\xd2\xcf\x83\x85\xbd\xed\xfd>z\xd8\x9e;\xde\xdf\x930\xb6-\xb0Dx\xb0\xb22\x9e\xec\x89\xa5P\xf7<\x0f,\xc7q\xc1:\xe6\xf4\x06\xae+]6\xf4:\\\x0c\xf2\xa4N\xa3\xf6\xef?\xd5*\x8fW;YU\xcfmf{\x8e\xda\x11\x0e\x90\xb1Z.-\xed\xb6\x94\x17\xcc\xd6,i\x9c\xa8\xb9\xf0u\xa7'pY\xef\xfd=\np\x06,\xd5\x9cr4\xeb)>\xee\x8f\x9e\xd2G\x80\xf6\xd1\xa6\xf1\xa6\xf0\x8c\xf7'\xa7\xbfZ\xdd\x84\xaa\xf2\x9d.\x04Je\xe6RH\x07\xb8\x10\x97\xbf\xd2\xf2WR\xfe\xaa6_/\xf1^\x88\xae\x03[t\xf5`\x0e,\xd8\xa2\xcb\xa9\x90%z\xa1\x0b\xbe\xc3\xcc7\x10\x9c\xa5^0\xe1*\xd8\x9ae\n\xd3\xec\x0e\x8e`\xc6\x0ci77gf `4\x991 `0\x99\xb5J\x00i7ia\xd6KZ\xda\x8c\x83\x1f!\x01\x0c\xe1\x18\x8d\x90Q\x02\xe8\xc31\x84f \xa0\x8c\xa5\x82\xa8\x98\x92>\xb1\xc6\xa4\xb6\xb8q.\x82\x92\x9b\xe3\xdbf z\xd3\xba\x7f\xad\xc6\x96\xf5\x90\x1a\x98:\xaf\xad\x11\xc9\xe4\xff[\x1b\x1a\xb66\x84\x1e\xfaz\x0cf=\xbdp\xdf\xd4E\x10\x86\x1cm}\xa5\x10?X\xac\x0f\xda0@\\X\"\xe2\x87\x984\xd99\xba\xa8\xf1\xe5\x1f\x1a\x03\x03\xa9\x91\xfe\xd4\xd8t\xa6\xeacz&IB\x07s\x1c\xcc)\xf9\n\xb2x\xa1'D\xff\xde\xc1\x0c\xe5\xa5O\x7f\xce\xed\xa9\xf7p\xc2\xf5z\xc9\xda\xeeU\xadud\xaf\x17\x17Fu\xc3\x1d\xee\x8e\x96\\\x02\xea!\x9e`P\x9e\xe3c8\x84\x1f)\xfd{\n \x8ca\x08[\x908\x0e\xdahk^\xf4\x1a\xf0\xfb\xb5\x06\xbc;z\xba\xfbt\xff`\xf4\xf4;\x8dz\xd7<\xea\xbc9\xac\x1d\x1c\x16\x03F\xaf\xc1}\xea\xbd?\xbeea\x99\x96j\x0b>y\xf4\xfa|U\x1bQ[J\xc6\x90\xeeB\x04\xc0\xc0e\xa0v!\xe1<\xae\\\xc7h\x87\xbd\xa3\x10\xd8\xed\xd5\x87\xb7\x8f\xee\xc3\xa1\xa1\x0f{#\xf6\x8e\xf6\xe1P\xe9\x83|\x97\xa9t]\x1f\xfb\x1d\xe1\x15\xd7OI}\x02\xff\xfd\xdf\xc4U\x83`\xe6p\x8a\xa9Z\xfe\xfb\xbfs\x97\x9d\x14,\x0c\xe5&=\xb5\xcb\x1dBD\xc4\x11B\x0f\xf6\xf2Q\xeaT!\xc9\xec\\\xf9&\x17\xdf\xe4\xe57\xb9\xf4\x0d)\x9f\x10\xc7`\x03\xecT:\xcf\xd2\xea\x1aaa\x0c\x90\xb9\x96\xfc\xa4\xa4\xc0`K\x8d\xcb/\xae\xb8\x0c\xf3\x9b\x08q\x86\x81\xbb\xa81\xe7\x9cNH8\x19\x13S\"\x80\x0d\x04)\x00\xd2\x95\n\x07\xaa\x85V\xf7\x80P\xd8\x0f\x11\xd5\xe0\xedYO\xb9\x1a\xe1\x92\x19!\xb8A\xaaM\x90\x13\xb2|\xa3\x05\xf7\x89\xe56!\xdcgoX\x12G\x9b\x9bt\xd89\x17\xae\xffxB\xe9\x1e\xe7\x88\x13\xb5\xec\x1b\xd8\x84\xf0\x12~\xd4\xb9v\xebIY\xfd\x88_\xfccF\x0c\x9b\xb0\xb5\x95\x8bq\x1f\xe1\xd2\x1et\x0c\x97~\xf0\xed\x03>\xec\x83\x10\x84\xc6\xa9\x1c\xe3\xd0U\x15\x1cl\xe2\xfa\xb48\xdco.\xab^\x8d\x8e\x0c\x8drK\x0f\x04\xca\xf0\x12\xcf\xfc~\xfdhN\xf6\xb7\xf5\x03\xa9\x8dZg\xfa\xf4cg\xf4Hx\xec\xaa\xfd\xb0\xcd\x00\x91\x1f\x8d\xf0\x11\x8b\xf37\xdc?88\x18\x0d)\x17Q\xbe\xdf\xe9\xd9\xedG\x82\xaf\xd1\xedF\x1f(gc+#\x18\xee7\x87P\x1b\xd5\xcee\xab\x08\x9fv\xfb\xff:\x8c\x06\xcfN\xf8\xe7\xc3\xd1\xa1\xc3E\xe1[\x9cv\\%\xb76\xa5\x12(X\x1d\xc7\xedF\x07\xff\x10\xf4W\x03\x8c\x84\xdb\xd2\xcb#$/\x9bX0T\xb0`\xda\x0e\xa4P\x03\xa4\xd0\x08\xa4\xb0\x07\x90\xbe\x13\xcaD\xdf\xebr\xc5\xa3:\xefG\xc0\x88\x10[\xd2>@\xaf\xd3\x9e\xd8u\x0d\xe4j\xc4fM8\xde\x88\xd8\xaaF\xe4b\x84\xfd\xce\xe8`\x9f\x0e2\x86S\xc6\x08\x0d\x86\x07\xfb\x03\xb8\x87\x18\xc6\xdd\x14\xc8\x1a8\xfa\xd1\xc3a\x83\xb8\xaf\xa1\xf0?n8\xdf\x0f\xd5\xaf\x87\xe9\xebx\x92>\x1b\xed\xf6\xean?\xe8\xf7\xef.\xb6\xdc\xect\x0f\xe4\xde\xd5\xdd\xd7Q\xe2k\xb0\xfb\xe3\xba\x9b`\x95\x95\xa2ac \xb8\xbe^\xdd\xf8^Pktc\xd8\xb7\x1b\xaf\x92\xe2:\"\x8f\x04\xc7ag?\x06\x82\x01\xed\xd7\x8fG\xc2\xa3\xbb\x1f\xc3>\xfd@\xe6\xd9\xc8\xcd\x18\x848\xc8\x86n\x92\xda\x01\xc7\xacXPm\xfbF5 P\x0f\x93\xd8\x81-\x8a\xf2M\x8e(\x899\xc6_\xd8\xe2\xf4\x81\x1b\"\xafBN\x13AI\xc4\x8dc\x92\x15eD\xc4 \x10\xd8\x86\x84\xc9\x81\x8c\xe8\x8d\x16n\xc5b%$\xb5d\xc2?\x10\x921\x161BSc\xa4$AS\x88\xcfJ\x88nm%\x18 \x8e\x93\n\x1a\x90&\x02\xa4\xe1w\x03i\x83\xa8h\xb7`\xd1\x00U\x85%E\x16{{.\xeaQ\x8c\xf9~pv\x10\xe4\xb3(IP\xd2\xcd\xb1\xb5\xbc\xca\xb8\xc9\x7f\xaf\x81\xe8(\x90o\x1e\xcb\xc8e\x92\xe3\xb6\xd1\x9cj\xb6\x87[\xcd\xd9\x90\xcd\x19\x8aH)M\xf5\xf7Z\x03,G*=|z\x0e\xb27\xa5\xfc\x07\x0e\x92\x8fF\x1d$\x1f\xbbf\x90\xc3\xb5\x06\xa9\xa3V\xbey\x90\xbb\xae$\x12\xef5RF\xb3\x88\xd1\x8ev\xa5\xe1\x8e\xaa\xe7\xc3}\xc3\\k\x963\x85\xcc{\xfd\xf4\xb7\x92E\x12d\xfe\x80\xe9_\x1f2\x06\xa8\x0c\x0dP\x19\xe9\xd7\xccN;d\x86\xbd!\xb3\xe6\x11+\xa4\xc72X6\x8c\x06G\x02\xd57\x8e\x07\x0c\x1d\xad\x97\x9d6\xce\x96\x84\x1d%[\x1a7o\xbd=\x18\x9e\xc5\xfa\x83\xa5#J\xef#Op_:n\x88\x10y3\x89z\xc1~\nsLv\xb6\xd3\x01]\xe2\x97\x05\x86(r\x95s\xdf\xa6\xa7\x94\x0f\xcf\x9e\xc1\x80\x9e\xa3\xc5w9\xaf\xd6\xa4\x00\xfeO\x99\xe8\x16*\xe2\x9b&[\xcc\x85D`\x84\x15\x81\xb1\xf6\x8co\xfecf\xfc\x0f!P\x86\xa3\x03\x17\xb6\x86\xa3\xc3\xb5i\x14R\xd3!Q\xd02\x9f\x84\xe1\xb7\xd0/\x7f \xf9\xb23:\xd8\xa7cE\x19B?\xd4\xfe\x07\xd20\x7f \xf3\x88\x81\xfe\x81t\xcc\x1fH\xc6T\xf9\x10\\%\xedA\x8f!\xb7\xcfm\x0f\x12\xa7F\x12}\x13A\xf3\x07\xd23f\x10\xd5\xb7o\xcdHB\xec\xe2\x1eP\xfc'\"~\x0c\xf2\xa7v(\xbeR\xe6\xac\xcb\xab\xa2ji\xdd\xf9RZ\x1a\xf6j\xc9$Ejo\xea\xedc\x06e\x12\x14\xad\xd5T\xe7\xa8\x82du\xb7\x1e\xddR\xa5\x9b\x1c\xa0Cd\xe9\"X\xd9\xd5\xe7\x8a\xa7\x97\x94\xa5\xa42E\x90\x0b\xd0\x0f\xf3\xb2F\xae\xe2HK\x12\x10\x9d\x17\x98\xf7eWz\xa7\xb0\x11 \xa5\xea\xa0\xdc\xad\x8e*\xf26\xc3\x9b\xdcO\xe7$?\xcf\xfd4\xef\xce\x86Z\x9a\xf1\x003\xd6T\xba\xa1o!K\x8a4 k\xb4\x90\xb6\xf5\x97\xd5v\x16O\xbb\xebJ\xeb\xce\x17%\xf4\xeb3*\xd9_\xe5\x18{iK\x9a\xa8\xda\xcbM\xadU.\x12\xb4L\xbf\x95\xea\xe3\xd6\xe3\x1cTn\xa8\x18t\x99+\x07\xb1\xc5\x96\x904 \xb0t \xc3#HxV\x83\xad-4\x0bK`\x13\x10I\"\xae\xa3w\xba\xb8/\xa5\x93\x11eA\x86d\x07X\x18\xaf\xf5\xb2\xfe\xb105\x8aY\xda\x1a\xedk\xf3\xb9d$\xaf\xf2\xb8\xd4Lubf\xf6\x14:\xfa\\\x98B\xef\xd7\x86\x08fa\x14\xad\x87\x084NWkg\xb6\x16\xe9 0\xa4\x06?6\x95\x1d\xa2M\x9f+\xe1\x85\xe6'.\xcf\xba\xd1\x95\x19 $\xde\xaa\x16\xb0\xdcdy\x04\x18\x80\xe8\x18m\x8c\xc5Am\x88\x8ff\xce\xb7\xaa&\x9b\xd1\xe4\xc33\xf9\xb3\x97\x19\xbf\xfb&\xf36\x80\x1d\xdb\xad\xe7\x02NM^\xc5&\xcf\x8fF{\x95\x12`:-\xc9\x9b)\xcb-\xe2T\xe9\x17a9\x00n\xab\x87>\xca\xb5A\x08\xbc\xe8OB\xf8_P\xaca\xb3\x977b\xe4\xd4\xfb@\x07\xfb\x19N`{\xf2\x9f\x9b\xbfl\x0f\xb6\x9e>\xdf\xfa\x0f\x7f\xeb\xb7\xad\xab\xcb\xed\xb9\xc9\xf5\xe6\xd7\xf6\x10\xae\x80\xca\xd9S\xb0\x06\xe8\xf4_O\x13:V\x1e\xd4\xfbfh\xf0\xb5Q\x01x\xa3\x0f\xd0\x96\x03\x8f\x8a3\x84\xed\xce\x1c\x97\x95\x83L\"\xc2\xf3\xeb\xf2:\xb4\xa7P Y`\x9bFb\x07\x07\x9ea4\xef=qD\xef\x1d\xec\xec\xee\xb6!\xdc\x90\xe7\x873\x97\x80r\x93>\x83\xbd\xfd\x9d\xe1\xd3\xae\xc2\xf4b\x89(vh\x7f\xb6\x86\xb43<\x99\xc4h\xe7\xa9\x0b\xc3\xa7C\x17\x86\x87O[\xd0\xba\xb8\x82$\xce\xc3\xb8\xd0\xe7R\x12\x979{\x10\xf0\xbe\xfb R?\x19\xa5z\xf2\xf5O\xd4{\\$\xed-u\xb6\xd2\x9e] \x97\xc9\xfe\xce\xc8\x98BP\\\xfd\xa0\xe2\xfe\xc1]\x8e\xb9\x8f\xc6>lR\xban\x8b\xa7 8>\x86!3t\xd9\xe2\xa3\xd1\xd6\xc0O\xc5\x84\xf3==\xc6c>\xc9\xab\xfd\x1b\xb3D\x15]\xfb\x8c58d\xd9Y\xba\xd2\x1f\xf0\xce\xc4\xad\xe3\x10\xf37\x1a\xec\xf6l}\xb4^\xeb\xf0\xec\x19\xe62\xc0\x00\xdb\x98\xd0 \xa6w\xa3\xc3^\xdd\xc2y\xea\xd7\xaf\x9d\xf5\xfb\x85I\x17F\xa3]\x16\xc2\x03\xf6\xe1 \xed!\xf6n\x8d\xbev\xa0F\x1c\x07O\xd9\xa0\x8b3 \xd2i\x05\xc9\x94\xc0*1x\x91\xc9U\xb2\xf1\xee>b\xbc\x87t\xbc\xbb\xe4\xeb*I\xf3\x0cN\xe0\xf7\x07\x89v,\xc1\x106<\xd2\x1b\x9b7#\xf9E\xb8$I\x91\xc3\xc2g~\xa0\xd7\x84\xc4 B\xe6W\xf0~\xd04\xe0w7\x10D\xc4O\xbf\xa1\x89\xa2\xb9\xe0\x19n\xc5\x18`e\xef\xab\xe8\xc2\xe5#\n>\x95o\x16T\xe3\xc9 \xf3\xe2\xda`\xf9\x8e5\xf5\xd0C\xb6z\xecv\xd4\xab\xcf\xb7!\xaab_\xd4\x97\x81\xc8\x0f\xa17\x955\xa6\xef\x10U\xb2\xa5SF\xcb\xd79\xfc\xb7\xb6\xd0\xac\xab\x94\xd2v\x07\x0f\xa8&l\xa3Z\xac\x8d\x95\xa0\x1d\x03f\x9d\x11\xdf\xc8\xbc\xa6\xb4\x10O\xe5\x9b\xb1\x8av[\x13k\xd0\xeaU4-\xdf\x19\xe6\xc9\xd4\xa9\xda\xe2=\xad\xdf\x8e\xd5,\x89\xad\x1d\xa3M\xa8Y\x15\xcb_\xb6\xb4\x9a\xe8\x1e\xe7\xa9\xcd&Jb\xb3\x00C\xbf\xd4\x9f\xcdx\x12\xda\xe6\xc6Y5f\x04\xb3\xb7b\x1a\x0b\x9bW\x05\xa5X\xe0\x14[\x14\x01\xc4\xed\x08\xc3\xa7b\xdd.D\x92\xecuj;\xed\xfbu\xdah\x16\x89\x88\xc0\xc4L\xd2\xb3\xad\xb0W\x1a\x8a\x01\xfb\xd8\xc6KR\xa6S\xf4\xed\x083\x11\xe9\xd79~@\xb1d$\xe0\x8aA\xc4x\xf6\"\x9e\xf2cv\xe9\xa5El\x9b<\xfc8(\xe4&;v \xf0D\xcfl\x8f\xea\xe6N\\\xfd\x8ev&T\xa7\x98K^\x86U\x1a_\xe9\xa1\xdd\x16P\x12Q \xab\xc8G\x14\xc8b5h+\xa5\xabV~\xe1\xf6o\xc6\x8c\xc2\xc4\x95\xda\x06\xf9\x12\xf4\xc2^\xe2\xean\x08d\xf2K\xc6\x9b\xe6\xe6a\xad.@\xa3\x01\x8eL;\x1a0\x8f^\xfb\xe6A\x05\xd8C\xebN\\h\x858(\x0b\x9c\x15(9\xe1B{\x96\xe6\xe8D\xcaZ\xaa\xab\xee\x86n\xec\xaa\xc5\xc4\x8b\xc9\xd7\xfc\"\x0c\xbe\xb4\x12\xa7b\x9fR\x8a\x80\xd1\xbc\x8d\xb8\xcdM\x93!\x94W\xa8\xc5\x9e\xc1\xb0 \xce\x12\x17\xc4\xcc'\x93\xb2*\xea\x97G\x10onRr-f\x86XR\xe8\xe8F\x98\xfd\x883\x1b\xe4V\x80\x0fe\xf7\x98\x15Z\xa2\x07\x03\xfa_aO%T\xe8\xc2B\xb6\xabG\x00\x9b\xcfF> <\x1c+[\x8e\xd5\\\xd4\xaaM\xbc<\xcc#\x0cJz\x9d&\xb7\x19I-\xfa\x90\xff\xe6a\xf2\x13\x8f\xc47H\x07\xd2\xdf~:\xbf\x11y5\xbd\x1b\x92ft\xfeX$\x93\xf2>+K\xe3\xbb\x1b\xfcn:}\x1bf9\x89\xb1\xde\x1b\xf6\x12\xdd\xd1\xd9\xef\xd9L\xfcL\xc92\xb9!ja\xf6\xf4y\x14\x89\x17\x99xC\x96a.~\xafR\xb2\"q\xa3%\xfe\xf8C\x1c4\xea\x8d\xa4\xea\xccK\x8d\xef\xc0\xc9e\x1dz\xd7a\xdc\x99\\\xa5A\xb5\xae\xd2$ YV~\xccC\xa4HA\xf1\xea\x8d\x04\xb7\xd3\xb6\xf9\x16\xac\xd2\xb6\xa5|\xb6\x98\x86\xe9\xe3z\xc6>\xed\xeaW\xb1\xf4\xb3/=z6\x90\xb6>h\xb8\x10E\xc5o\x15\x19AEO\x90KL\x9c\xcc\x90\x98G\x84\x1a\xa0\x8a\xd8\xda\x90Uu:}\x0f\x06\xb1\x15\x03\xf5\xcb\x8aU\x19C\x83k|\xc4@\x9aH/\xd5\xe2\xd0\xca\xbe\xe6\xa4\x0bk&f\x94\xd8\xc0p\xc7'0\xa4\x88E\xd2\xdeT\x98jx\xc9\x835\xc8\x8f\x9a\xf4DlLx+duZ\xb0\x19\xd7\x07\xa8\xc2{\xb5\xd7Lt\xcfP{\xea\xa8\x02|\x9fb\xdep\xe2\xd7\xb1\xaeof\x961\x17\xd6\x86\x88\xa2\x19\x0b\xd0 \xc3&\x91\xa1\xa1GnHzW\xcb\"\xdd\x95\xda\x0c\x19\xb7x\x92^j\xf8\x1bts\xb1\x19W\xcdp2\x9b\x04\x17B\xc7a:\xb5\xd05s\xf2Z\xde\xbb1\xf15\xc2\xb5 \xc7\xb8\x84cN\x0f;8\xc5\xe0\x14C\x1e\xd98e\x07\x1c\xcb\xb9 )\x85k3\xa9\x9d\xe4-\xa0\x16\x97\x00]\xfb\xa6\xef\x03}6\xc4Y\x9a,[Yv;4\xcc\xc3\x83\xf1\xb8\x8f\xbc\x94dE\x94\xbf.\xe2\x80\xae%\x17\x9f\x04\xc9rU\xe4~\xce\xd9\x94\xce\xcd&6Z\xe3\xe5\x03\xab/#\xf9\xa7GWJgH[q\xed\xa1L\x0c\x88_\xb9wuE\xb2w\xc9\xb4@\xf6\x8d\xf2i\x98:\xd6/\xa2\xfc\x1dY&,soB\x9f\"\xda$\x02\x8b\xbedH\x94\x11\x1d\xe5\xcb<-\x82\xbcH\xc9\xb4D\xb6}\x18\xefGP\x99\xbeBe6\x99s+\xc1<\xb8F\xea]\xc8\xfeM\x1dg\x87C\x06\xb30\xcd\xf2*^\";\x18\xfc\x18X\xf5p\xbb )\x01\xe2\x07\x0bX\xf1\\\xbb\x94\x11\xf0A\x9c%\x9a\xa3\xc3Gk\xb0\xb2SG\x0d\xa0\xd0\xbd\xc6\xd3\xf8~!wYC\x88UR\x8bq\x1dU\xb5\xf9\xc3\xd3\x0dY_\x0e\x8e\xdb\x93\xe4\"Z\x84\x9cW\x08\x81\xd3~\x03F\xfb\x11N\xfb\xe5\x93\xb4\x9d\xee\x03i(^J\xa6E@l\x85\x13\xea\"\x98\xc9\x84R\xcb\x97\xcc\x18R\xa3\x8es\xe1\xf7\x07E %\xb1\x9fu\x91\xb6\x8f\x04L}\x99\xd3\xf5m'z\xb5\x97\xc2\xa7 \xee#\xb6\x87\xc3\x03\xe5@D\xc6\xc6\x1e\xed\xee8zV4\xb6\x87\x83\x01\xa5\xfc\xda\x1a\x00Y\x84'\xd2'$6Z\xabK\x83\xea\x91TLZ\x12\xcc\x18tM\x96\xb4\x1a\xea\xc1\xaeaD\xed\xcc\xf5\x86\x1c\x0b\xd5\xc4G\x8b=\xb6\xf1H>Z\xedq\xac*$\xeb\xfb\x8e\xc9\x9c\xc6`\x8d\xbc=o\xcf\xd2\xad\x12\x8d\xfd\xe1\xd5\x153\xd4\xa4\x7fO\x84\xdb@o\xf0\x8d\x0e\x0e\xd6\x86\x9f\xcc\x85\xca)\xe7j\xb2\xeau\xa7Q\xbf`\xf7\x0ev\x95\xe7!\x7f\xbe\xa7<\xa7{\xc7\x9ap\x9c\xf8\xbe\x88\xa2K%Tx!\x17\xf8,\xd2\x9d\xab\xa524n?E\x13\x04f\x0fx\xe1\xcf\xcb\xcc\xde\xdf\x01R\xd2\x89Bo\x0b\xcc|2\xe6\n\x16\x08c\x8ev\x99q'\nF\xc6\xc8&?\x16\xb0{OGz\xc8>\xdd\xeb\x9cx\x0d\xbd,\x96q\xc2\xdej\xb7E\xca\xb2\\\xc4%\xd8\x1e\xdb\xf7\xd1Su\x96Y\xdf\xf7w\xd41\xb1Uqp\xd89$\xc3\x0c\x85\x0c\xde)\x83w\xb26\xbc\xf5\xb2> !\xef\x0e4#\x91NXJl\xb4\x93\xd4\x82V\x99h\xce0\x89s c\xa42\x84U\x98\xf9\xbc\xab\xbdx0\xc0\xad>\x96\x90\x1f\x14\xfbR\xb5\xa1\x17\xc6\x0b\x92\x86\xfc\x149\x1c:\xcd3-\xb6w\x06\xeaL\x16\xac\xae\xda*\xac\xea\xb2g.\xf8\xd2\x9br\x80\x19\xae\xbd\xa2\xd2\"\xf0\x14I\x83#\x88\xe0\x18*uFD \x80\xe6\xda\xa5\x04t6\x89\x14\x18\xce\xaa\xfa&\xc1%\x8a\xb9\x94G\x94)\x93\x1f\xb4\xebwg\x86C\x879\xc7\x88@\xda\xc9\x0cfU~IJ\x12\xce\x1a\x84\x96_W\x95\xb9P\xa8\x0f\x10\xfbo\x08\xd7\x89\x94\xf8S\xff:\xe2\xb1c\x17aV=9a^\x80\xf5\xf2\xb7i\x98\xd7\xcb\x97Oxy\xa6q\x89\xa2\xe4\xf6\xaf~4\xfb\xb0\"1'\xd3\xeb\x15\xd5K\x94\xb55>,\xabL\xe2\x80\xd8\x16\x89\xa7\x96\x0b\xabvp6\xb5\xf4\x9a\xba\x85\xc3\xc1\x95\x18\xc0y\xee\xe7\xc4#\xf1\x94L\xe9\xcb\xb4\xd4\xc5\xd9S\xd6\x85.\x1d}c\x0e\xb16[E\x0d\xf4\xe2;\x99\x1d*\x1f9\x19.\xaf!\x17,\xd1\xaf\xbf\x86\xf3\xc5\xcf~N\xd2w~\xfa\xc5r\xd56\xe2bIRZn\xdc\xd0\x85\xcfI>n\xa7\x98\xc5\xe6\xd6\x00b!7[\xdf\xfc\xd5\x80\x1c\xb7\xd7P\xa6$\xcb\xd3\xe4\x8eL\x1b\xdd\xef\xddE\xc9\x9f\x86\xf5V\xacS\xec-]@\x8d\x12\xb5\xf1TK\xac\xfe\xa5W\xf6\x0d\xbd\xce4\x80(\x0b(d\xb9B\x08\xd4\x06\xa2\xc7\xc8\x7f\xfc\x10*\xfd\xb3i\x10\xb4\x88Q\xe1M\x19,I\xe1z\xc5\xbf\xea:\xe4\xb1Av\x80\x14Q$6,\xae}W\xdeGyM{\xff]\x0e\xca\x9d\xe1\xc8\xb1\x1f{\x8a\x93\xca=\xabT\x91t\xd1\xe8k\xf6o\xff@w\x90\xb3\x10\xf7\xfe\xd7G\xf6;\xb1\x07.\xd2\x1e\xdf\x00\xccu\xcbk\xa9\x94\xa1flvl\x1f:]\xf2\xbe\x90;~z\xe2l\xfb\x98$\xc2\x16\xc0\xc4@\x0b\x82\xa6\xf9\x1d*8\xf4\xb2;\x19\xc1 \xc3Pz\n6\x05\xd6F\x0bez\xd0\xd2\xef\x1b\x86\"\x1a\x9a\xb2}\xd4D>\xca\xf1h\xa7\xe7\x8cm\x8d\xf6,t\xb7\xc5\xedVP.\xde\x16\x9bH\x03\x1f8\xe6\x1b.I\xa2\xf3\xf07R\xe2\xad:L\xe8vl\xa4o\xad\xdd\xfa((\xab=*\x1a\\&\x16\x9cNi\x9d\x94\xb9I\xc6\xed\xa8@\\%\xfb\xda:-q\xad\xcf\xdc\xba\"\xf6\xe6$\xa7\xf7\x88\xac\xd0\x01\xca\xa7O\xcb\xf1\xa2czu{\x02\xc3\x81C\x0b\xa4$\"~F\x98\x84\xaf)\xa1}\xd0\xa8oc\"\xd2\xa9b\x83\xe9X\x05\x08\xbd\xf2\xdbD-\xd5\x0b\x06\x8fY\xe4 \xeb\xa6\xd6Y\xe8\xa0[\xec1\x8b\x10\xe0\xe8\xc0\x01\xda5\x0f\xbauO\xab\xe8\x03\xce|\x91\x92\x06@\xbbD;\xe2\xfa\x16h\xa5\xdf\x05Zi\x19G\xa9\x114Z\\\xfd\x01\xd6\x88\xc8\x00z\x98\xcd\x92\"\xed\x02Y\x8bT\xf1[\xa0\x96|\x17\xa8%R\xf4\xa9\xd4Q\xf5\xf9\xe2Z\x0bp\xae\xd6\xf1\xb8\x8e\xca\xf4Gg\x81O\xdb\xe4ju\x03\x7fmq\xb3\x98tO\x95.%\xfcy\xb7l\xc4p\x94\xa7v\xb2\xfe9.\xf7\xe8\xd1-s\xb9\xd1#\xc8\x08\x89\xfa\xda\xd1\xcb\x8a\x0e\xb5\xe2\x96\xe1P}\xce\x98\xfd\xe1\xfe\x81c[Y\x1aX\x1a\x9e\xff5\xefH)_k\xca\xdfX\xfe\xc1\xc2\xf1\xb2U\x14\xe6\xb6%J\xcaR\xd8\xd8\xde\x1f8\"a\xf99F\xca\xe8\x03$\xce=\x93\x9a\x05\x98m\x94~\xe1\xda-tr\x84\xc8d\x0d\xafx4FH\xe4\x87\x14s[\xb1\xbf$\x16\x1a\xd1$\xd5=7\x9fDIxi\xd2cK\x9f\xf9\xd5\x17>/\x87\xf2\xd6M\xf6{\x0c\x19\xb3H\xe0\xde\xcb\xb9\xe3\xb0\xa8b,\xb6\xcbi)c\x871\x14\xe2\xb6\xf64\xa9\xd6\xc4\x18\xec)\x89HN\xf0\xbd+\xbd\x92\xd7\x94c\x97\x93(3\x85\xe54\xb5hu\xf84h!\x87\x04\x14\xa7}&>Ja$a\x87\xdc\xfeZH\xa1sM\x94z:9\xf4\xc1\xa9\xc4A\xc0\xb8\xcb^\xa5\xd76\xeb\xa4\xbe\xf5\x9bo\xb4o\x10\x81\xef\xeckw\xdf\xde\xaeJ\xc53Q\xdb\x81Z<\xe3\xc5UYj\xc4\x9f\xab\x12\xbb\x80?W\xeb\x99\xf1\xe7*2X\xa1\xd0\x8ci\xb3\xce\"B\x0f\xc4z\x81\xa9T\xe0\xb5O\xc9\xe4\xbbz\x81\x05+\x10%\xb1\xbe\x82\x1b8\x81\xb4\xfeh\xd9I\xb47t7\xd0<\xc8\xe7Z\xb2\xf9\xe5\"\x8c\xa6)\x89\xc7\x86sx\xe9\xaf\xc6\x10zK\x7f\xd5$\x0b\x80 1\xcf\xfc`A\xcb\xf0\x9f\xfarAR\xc49-\x85?\xf4e\xf2\x045\x9f\xb4\x14\xff\xa9/\x97\xc4\xd1\xdd\x18f\x8dw\x1a\xca\xe5e\xb2\\%1\xa1M'^y\xd3,\xf7\xb1HI\xadl\xedA\xb3|m\x05\x8cA\x03\x1cy\x86\xc7\xa0\x81J\x98\xfd\xe4G\xe1\xb4,Rx\xf5'\x9aN\xa6\xc9\xea\x82\x99De\xa6.\xbd\x8c\xfc,\x1bC`z\xcf\xd7\xe4\x18\xa6\xa6\x12\xef\xc2\xafa<\x86e\xf3\xfd\xab\x0f\xef\xc6\xe07\x9f\x97J>\x8d\xf1\xe9\xd5U\xb6J\x89?\x1d\xc3M}q\xea)\x829>\xfdc\x90Nc\x93\x87L\x12\xf0\x94\xb2\x1e\xf6h\x7f\xbf\x12\x14V\xe2\xa5\x85\x9f}\xb8\x8d\x85\xc8P\x8b\x9cF\xfb\xaa\x9eO\xcf\xa1~!wc\xd8\xd0XA\xa6d\xa6\x7fqu\x95\x91\xc8\xfc\x0e)\x84\xb1\x9a\xbeX\xeb\x10\x9a\x19O\nI\x9cG\xbc\x94T\xbbJ'?\x8e\xfaU\xf3\x85\xdcI\xd5\x88_BU\xa1\xe1\x1cX2C\x03Y\xd2\xd4*\xd3\xeb\xcf\x7ff'\x96vE\xe6\x98^\x994_\xe0\x1ch\xb6\x16NA\xdc|\xbeJ\x93U6\x86B\x03\xff\xe46\xa6|PhZ\xd6P\x01\xa7\x8a\x0b#\xbd\x0f\xea\xc7\x88\x060:`\xa4\xcc\xd0\xfaw\x1d\x97\x06&\x0b\xf0\x15\xe8,\xc0\xd1\x9b\x96\x11\x04:\xde\x19\xd5S)\x84t\xf1\xe4,3\xcf\nm9R2s\\\x88\xc4\xc3\x19:\x98\xc0&\xa0\xd2\xcfqky\x06=\xb6\x84\x05\xe91.\x9f4\x8b1z\xb7^\x10\x9f!\x1d\x14\x96\x921\xe6\xb5\xb6Q([\xd3\xe6\x99\x87}f\x1f\x93OR5\xe3.\x05\xdfTg\x18\xb5\x05\xa3&d\x98\x0eh\xea\x80\xef\x05\xfc\x8c\x84Fl\x8f2\xe2\xc3\x14\xbd\x944\xcb\xb4T\xf2-J\xc3\x9e)\x85\x11S\xef\xdd\xc01L\x8f\xe0fs\xd3\x81\xc5\xe4\xa6n\xd8s\x83\x811\x9b\\\xee\xc0\xad\xf7\xa9\xee\x8f\xf8\xd0\x18 \n\xdf\x88\xb0?\xa3\xf0\xcat=\xa5\x9d\\\xa21\x87\\\xb2\xd9|\xb5.\x96N\xcd\x96\x8c\x02^\x9a\x81e\xc3\xe0\xfeA\xb77\x02\xba\xdag.\xac0\xa9&z4\x05E\x9a\xd2\x03\x10\xfc\x1aK\x13\xd4\xc9\xaa^Fp\xca&C\xb7\x9e\xd2 P\xbbWs\x8f\"\x0f\xae\xa4P\x9a\xa7G\xfa\xf3x\xfa\x89\xc5F\xf8w\xd2\xa9t\xa8\xc6\xe81\x86\"w\x19\x96\xa5\x7f\xf8>\xa0?\xf8:'\x1e\xc3*\xf4\x17b\x1eu\xfc\x12M\xd1\x13_\xf8\x0c\xb8\x94\xa8\xb4\x7f\x7f\xa8*n\" \xd4\xba\xd0-\xdc|\xb5\x00~8h\xce~\x0cj\xdd2\x16\x8d\x87_\x17\xd2\xf1kHg!\x90\x0e\xdb5\xe5\xf2\x90q\xd0T\xc5A\x0c\xdel\xe1\xe39.\xaf\xe9\x12mi\xde9\n\xb6\xf1\x0d\xd8\x86=\xb7e$F\xf9\xbb\xba~\x8c\xe2\xbd\x15\xf3\x81\x99\xd1?cqG\xcbj\xb0\xd3rM\xec\xb4t`\xd5\x07;-;\xb1\xd3\xbc\xc4NK\xc7\x85;\x86\x9d\xee\xe0\x18\x96GpG\xb1\xd3|rW\xc7Nw\x06\xecT\xeb\xd0\xbc\xd7\xfe\xe7{c\xea\xc2B \x81\x9b\xba\xfe\x9c.\xfe:u\xfch&\xb8\xa6Gc\x0bD\x90\x12\x0c\x8d\xc9\xad\xca\xa4i\xf0'\xe8&M%\xb1\xd3\x81\xe3\x9d\xdf-\xaf\x93HO\xe9\xa6\xebU7:\xd4\x9b\x0d\x0d\x0f\xbf\xcd\xd6m\x83C!\xa9\x0c\xd0q\xc1\x7f\x8b\xdd\xdb\xc8 \x81|\xaa\xaa\x19\x19\xd3\xbf\xdf\xb0#bt\xf5\xfe\xb0sdf\x94+E\x12\xe4f]p\n\x13r\x89\x96g\xfe\xb7\xc8\x131\x1e~cxJ\xf8\xbb~\x13\x11\x1aB\x972\x95\x1b\xa9\xechH\x13W`\xe0b\xd8lD\xe1\x11k\x7f\xc0j\xa4\x93I\xfbF\xe8\xddV\x02\xa7`m\x0d,J_u\x8c\xbf\xc6p\xe9$E\x9cUb\xe7+F\x1c\xea9C\xc4\xcb\x8a\x15I\xaf\xb8yq\xc5lU\xd6c\xacR;\x97eqM\xec\x15$\xb1\xd0E\x9a\xc4\x17\x98\x98_\xcb @\x87]\x8a\xb8\x84\x89\x82\x9e\x0b\x03\xd6\x8dY8/D=\x1a\x9f\x81\xda\x93\x87\xbaU\xf1\xa3\xc0\xd6\\\x0e\xaa\xd7\xb9\xc2\x88\xc45(\xd7\xe0Z\x9f\x80\x98\xdc\xa2\xe9r-.w f\xf8\xfe\xb6\x07\xfb\x9d\x9b\\\xb7kj\xa6\xceJ\x98\xd8\x97~\x1c'9\xd0\x86\x11\xc5%)\x14q\x19sH\xbb[\xbe\xcb\xa0\x1a^\x1f\xcaxyt@\xfb\xa0\x81@P\x10\x91b\x04_\xba_S\xb9\"\xe6\xfb\xdb\\\xdd\x9ch\x19\xab\x99c\xe5\xfe\xf02\x9d\xd0\xec\xe3\xc9\xf4\x87x.\x89\x93\xa8>\x04\xdd\x0c\xd9\x03\x17B1 g\xed\xc3\xa9\xe7\x8c\xb9\x06\xa0\xb5\x18\x0d\xab;M\xf2\x99\x16f\xab\x18\xff\xf7\xc3\x8cr\xa8\x98X\xe6\xfe\xbeK\xceT\xc6\xd6\xe6Lm\xccX*\xd2dj\x1b\x10|\x048\xca\xc7\xa5\x9c'\xed\x92\xf30S\xef\xfb{a\x06\xde\xc4\x0b \xefg/\xcc\xde'\xf9\x82EcH\xdd\xda\x0b\x06\x8a>\x04K7=W\xf5An\x83\x0b\x93\xfb4\xa1\xee\x04NBpjbB\xc9\x079\xd5o\xad\x99\x94\xac\x88\xdfo\xdd0\xcf\x1e\xf5\xe8\xc6\xa5\x133\xda;f^\xd61lb\xd4L\xccP\x85\xc5\\\xefL\xcf\xc1\xe6F\xf4[e\x81\x1a\xcby1\x18/\x8c\x83\xa8\x98\x12\xa1\x95\xe9p\x1fG\xef\xe0\xb2\xad\xda\xeb\x07\xae\xc9\xed[S\xb3\\\x9bEM\xee\xe5\xfe\x9c\x9b[\xd3_O\x9eP\x1e>\xa4\x8b\x88\x89\x92\xe9O<\x13M!a\x1f\xd0\xaeJkJ\x86ofa\x94\x93\xd4n]\x91PAn\x8b\xc7J.\xb1v\xaeV*\xad\x93\xe6\x84i\xa2\x16r\xf3\x15\x9c\x0e\x14:\x88\xdf\xf7\xf7hK\xc6\xde/WQ\x18\x84,\x1dIy#\x97 _\xa5\x12\xe5\x8d\xae\x8e\x9e3\x85\xb2A/J\xfc\xe9\xbfs [Y\xe0G~jq1\xbex%\xd3Y\x89m]\xa0s&\xbac\xc6I\xbc\xc5\xbeA\x84LO\xbc|A\xa0\xec\x7f\x14f\x18\x07\xdf\x87,X\x90\xa5\xef\xc1\x1b\xf1*%Y\x12\xdd\xd0\x13!\x99AV\x04\x0b\xe6\xed\xdf\x08l\xe3Y\xcdIe\x86=\xc9r\x15Fd\xfa\xa6\x82\x9c\xcf]\x08,\xd1\x01\xcb\x85\xc9\xa5\xfa\xc1\xd9\xd7\xe6\x07\x02\x9e\xda\x0f(m\xf9\xce_)\x14v\x03\x9etK\xf2\x1d\xa4\xd5X\xd0\x8b\x01k\xac\x95\xdf\xe3{\xf2kA\xe2\x80\x98K,\xfd\xd5\ns\x1f\x98\n\xcc\xfc(\xba\xf6\x83/c9h\x97\xb8\x1e\x94H\xf3\xd0q\xea\x8b+\x9e\xb0\xadx9\xc1m\x8af\x16\x9eh\xa9z\xa6\xf1\x15m6GQ9a\xa8\\\xe7\xa7|\x84q\xed\xf3#\x16,v\xe8H2'R!!U\xae\x08Fj\xd2\xd6\xae\x16\xc3\x9aP\xc9Jz\x15\xde\xab\xb3\xd7\xcf?\xbf\xbd\x10\xfa\x95R\xc1\xdf\xb6\"\xc4j\xa8w3\xbb\x0d1\xb2\x9c:h\x1d\xdc\x03?#0\x1ck\xe7\x03\x83'\x8a~)p\x9c\x0c\x0c1\x02\x0c\xf1\x96\xb1\x9d\x91\xb9\x1d\xb9b\xb5)\xd5G\\\\\x86\xa6\x04\xd3\xa2\xfd\xa6\x86d~N\x93x\x0e\xcc3\x141\x88h\x12\xd7\xcf9\xc3&|\x16J\xe9D\x9b\xba!\xe4y.SA\x0e\xa2\x83u^{\x92;.l\x90^\xf1_\xc49+[K\x17\n\xa2R\xf0\xe6\xf9\x8a\x04\xe1,$\xd3\x12-\"C\xcfQc\x06v\x92RD\x19\xc6\xf3\x88\xf0\x11r_]\x07\x83\xc6\xfba,pn\xed\xad\xa72\xb5k\x84\xb1\xd1\x0d#\\w\x18\x7f{\xfe\xee-\xc7\xde\xb51P\xbci\x1a\x81\xf4\xae\xd1\x7f\xb1\x8f\xc9-\x14\xb6\xe6\xdcb\xc7\xa7V\xaa#\xf0\xf8X\xf5\x05\xac \x93\xbb\xad1\xd7$\xf6\x86\xc3\x9a\x19\xdf\xa1\x96\x96K\xda\xe4\x956\x81'\xf4\xa5\x1aXLn+\xd4\x1e+\xef>\x9f_\\}>?\xbb\xfa\xf8\xe9\xc3\xc7\xb3O\x17\x7f\x1b\xeb\x92\xa1\xfe\xf5\xf9\xf9\xd5\x8b\x0f\x1f\xde\x9e=\x7f\x7f\xf5\xd3\xf3\xb7\x9f\xcf\xc6\xb0\xab/\xf5\xfe\xf3\xbb\xb3Oo^\x8aR\x87\xfaR\x1f?\x9c\xbfA\xd6@)>2\xd4\xfa\xe1\xa7\xb3Oo?<\x7fu\xf6J\xed\xc6\xce\xa8\xf9E\x18\xd3\x85\xf1\xea\xc3;\xc1\x10\xbfD\x19[\x97\xf3\x12H\xb2\xd1P\x7f:\x02'v\x89\xc7\xab\x0e z8\x98NS\xe0\xe2h\xe2\xbd\xfa\xf0\xeey\x9e\xa7\xe1u\x91\x93\xf7\xfe\x92d+?\xe8\xfe6\xd3\x7f\xdb\xf5Y$>\x13\x00\xe8\xf5U \xbez\xc7\xe3\x9d\xbc#\xf9\"\x99\xf2\xef\xf4\x98\xba\x94W\xccP^\xe1\x85\xd9\xcb\"\xcb\x93e\xd9_J\x18\x16\xdeU\xe3\xb9\xb0\x97\xe4^U\x9a/\x9d\x16\xba\x1f\xf0`]\x95s\xa0\xea\xd7fL\x12f[\xbb\x87\x96\x0b\xb3\x16co\xdaw\xa4\xcd\xbc&Y\x98\x877\xc4X\xa7\x1e\xcb\xf5\xab\xfc\xc3\x0dI)\x07E\xa6\xc6\xe1\x9b\x90b\x93\xc9\x95/\xc3F\x06~\xf2/<\x05\xe2\xb0 \xf8L\x1e\xa5x\xa6\xefd\x19*(\xb5\xad\xbd\x01\xee?\x174[\xb4ms\x03\xdf\x9a7\xe8\x9c>\xeb\x08[\xb5\xf0j{\x02N\x14sA\xf9\xd2\xbbi\x00:\x96k\xb1\x88\xad\xd4\x8e;\x0es|\xcd(\xaf\x17\x19\xbf\x92w\x1b\x9c@\xc4\xca\x07\xc6\xf2\xf5\xcd\x06'\x10\xb0/dD7\x99]6lv\xc4\xa5\xe1\xd7jO4\xbeq\xd6\xf8\xf9\xd6\x7f\\\xf9[\xbf\xfd\xf2K1\x18\xbc\x1cl\xe1\xdfW\xfb\xec\xcf!\xbb}\xcdn_\xb3\xdb\xd1\xeb\xd7\xf4\xcf\xce\x01+\xbcs\xf0\x8a\xfdyMo\x87\xaf\xf1\xedh0x\xb9\xc5\xfe\xbe\xc2?\xac\xf0hx\x88o_\x0e\xd8\xed\xeb3z\xbb3\x18\x0c\xe9\xed\xab\x03\xfc\xf6\xf5S\xf6\xf6\xf5\xab\x97x\xfb\xea5\xbb}\xfd\xfa\x95&|Is\x05\xbdyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw6\x06k\xea\xe7\xfeVJ\xfc \x0f\xa7Vs\xfb}\xfa\xf0\xe1\xa2\xed\xa34Ir\xcdg\xf5/\xae\xce/\x9e\x7f\xba\xb8z\xf9\xd7\xe7\x9f\xb4F\x85Ji^\x0e6\xc1\xfa\xe5\x97-o\xb0\xf5\x14\x81\xfc\xe2\x00\xa19\xe0\xc0\xddg\xd0\xdcy\xcd\xa0\xb9;\xd0t\xa3Z\x1cz\xae\x1e]\x0d\xb3,d\x8e\xd2\xf1\xd4O\xa7\x0c\xff\xeb\x91y\xcbQ=n\xa4\x16\x00\xb4DV\xca\xf7\xa1\xb3\xea\xfa \xa6\xfai'\x13jj!3\xe2\xc00\xf5\x03\xb7\xbd\xb2I~\xe9\xc8\nr\x8d\xd6\x15\x8c\xa8B|3ln7\x13)\x8a\xe6\xcdFS\xcf\xef\xceO\x1c\x1c\xee\xd4\x18\x8a\x1df\xa3\xfc\xd4\xc0W4x\n\x8a\xef\xfc`\xf1\x89\xcc2.\xe1Bi\xc7\x157\x9d\xe264:a\x87\x9e\xcfX&E\x9cK\xf6\xf1\xea\xd8P\x98\x1f\xa2\xb5\x94^.V eZ\xaf\xc6\xae\x7fi\x94\xe7\x10\xb5\xdf\x92\xce\xa7\xf9\xd2K\xc9\x8cI\x91\xe7$\xffD7\xff;\xda\xea'\xe2O\xefl\xc7#\xf1\xaf\x05)\x08z\x04R\xcc\xdc\x86_\xe7$\xffk\x92\xe5\xef\x93i\xe7\x8e(\xbb*}c\xb7:6\x17q+P\xb5\x8dxSRN+3\xb1S&\x94>S+n\x08\xb0\xeb\xfd\xe0\xf1\xf3Z'74M+\xe3\x8c\x94^4'\x12\x95:(T\xc6\xc4\x13!\x97/_\x05I\x9c\x93\xafF\xdfdM\n\x10\x90\xd6S\xeae\x8b\xa4\x88\xa6\x9fWS?'\x08\x14_\x9ft\x18\xf0\xacA-B\x1d\x82\xbe\xc3\xec1\xeb \xb0\xc5\xa8]\xf6\xd5\xe3\x16`\xdcc\x016\x11P\xdbT\xadH:K\xd2%\x1b\xef\x9b\xd9{\x12\x90,\xf3\xd3\xbb~\xfe\xcb\xc4\xbb*\xf0\xcb\x17~\x1e,\x98\x86\x8f'\x8a\xc51\x9ajo\xac\x9f\nk\xe81`\xf8=0\xe0\xc8\x10\xedo\xb8\xfbT\xab?\x1b\x19\xfc6w\xf6\xd4\xf2\x183\xad2\x08\x91\"YN\x93\xa0\x10\xd3\xab J'^{\xe2\xc7\xbb\x84)q\xf4\xb5\xc5\xfeM8\xc7h\x9erf\xe5\x93\xe6{\xaf\xc8H\xfa|\xce\x1b\xde\xfe\xe5\xfal:'\xbfl\xff2\xdd\xf6r\x92\xe5\xb6\xa6\xa0\xf6\x1c\xd0\xf8x\xd0\x8d\xd7\xf0\xa9\x00\xd9\x82\xcc\x8b\x93\xa9\xc1:*\xe69V\x995\xa7~W\x8b8\xedz\x8e\xa5\x16?\x9e\xc7\xb1\x8cK:\x00\xc3Y\xb2,h\x93\xf4\xd2\xc5\x1d\xa5\xd9\xbch\xc5Z\xed\xb6E\xbe\x8c0\x8a\x1c\xda\x8e\xd1;\x07\xc6\xd2{\x8aP(\x1c}V\x00\xf1\x8bi\xfd\xd6\xd6]\x84Q)\xbbv\xd2p\xc8=\x16(\xdc\xf0?\x94db\x02\\\xdd\x0b:\xf7\x95\xd9B\xed=\xa5\xe1\xea2\x0bf\xeb\xc1\x03\xeb\x89\x92\x82a\xf9\xfc\xe9\x0d\xc6\x83\xd2C\xe1\x1c+\x10\x85\x84\xd2\x94A\x8e\xb7\xaf>\xbc\x93\x7f\xb3\xca\xc5\xddE\xf2\x85\xc4\xec\xc6\xcf\xfd\x8b\xd4\x8f\xb3\x19I\xdf\xe4d\x89\x0f_\x87\xbcQ\xba\x9d\x9fG\xd1\xcb$\x8a\x18\xc7\x8bO\x94\xdb\xd7I\xba\x14\x0e\xca\xf4\x9e\x85t\x16O\xde\x91i\xe8ce\xef\xc2%\x1e\x80\xcc\x8d\x9b\x9e\x03S\x8a\xce\xde\xf9+\x97\xfe\xc52\x1f\xfd\x90\x8e\xe1\xd7\x82d\xac\xeb\x1f\xa3b\x1e\xc6\xfc\x0f\xfb\xf2\xfc\xa7\xbf\xbc\xc5\xb5\x8e\x05\xce\x7f\xfa\x0b#\\\xc5\xddG?_\x9c\x93yy\x9b\x84q.n$(\x9c\xff\xf4\x176\xee$e\x83f\xd15^\x14\xb3\x99\xa8\x8b\x82\xfb|A\x08\xfb\x9c\xa2\xa1\x8b\xd4\x0f\xbe\xbc\xe4\x00/\x1f\xb0\xbb\xa4\x08\xb0G\x96\x88\xe7\xe1\xd2y\xcc\x18\x99\x93\xa1(Dl\xd1L\x1f\xb4\x93\xee\xccb\x92iv&\xddK)\xdd\x89\x8d73\xe0\xfb-\xa8,G\x15t\x81\xce\x1b3\xee\x8a\x94`\xc8Q\x17\"\xba\x10'\xd1%\xdd\xee\x1e\xc2\xb5c\xcd\xab8\x91\xa1\xa62\xbcI\x17\x024\x1c\xe9\xb1\x08T\xe2eQ\x18\x10\xfb\xd0\x85\xada\x97!\xafi\xbb\x9b[\xeb\xce3\xd5\x99c\xea{\x04\xc7\xeem\xd8o$xj\xee \xf6\x10\x9e\xd0s\xbf\xb9\\\xea\xee\x07\xf6\xc8PNrd\xb0w\x0de\xb8\xbb\x84\xa2;_\x0fAJ\xb8pG\xe5\xbd8\x0f\xb7o\x8a\xd8\xde;xp\xe5\xe5\xe3B\xd2\xb5\x84\x8c\x1d\xdc\x1d8\xdeL\xd7\xc3=},\xe6&\xee\xee\xda z&\x82E\x99M\xd0\x1e%\xe6&\xc6D\xf6\xc9\x08\xb9\xf6\x93\xa0l\xac\xb92T\x97\x93\xbe3\xb9&\xa4\xba\x98\xf4\xdd\xbd=\xc7\xde\x18\xd4D\x95\xa3\x9d\x03\x87\xc7\xedq\xc1jF\xcf\xd1\x9bG^QR\x8eG\xfb!\xc2\xfe\xee\xaa\x9e\x82\xe3\xa1%\x06\x8f\xb0\xb6\x12\xd1\xc2\xae4>\xfee\xb8\xba\xabPooRK\xfe}\xaa\xa5\xa8\x10\xa8<]L\xe3\xf54\x895\xe1\x18\x90\xdbB\xff\xdb\x9c\xf1Wbl\x9b'\xa5\xaf\x84n\x8e\xcd\xaeK\xbc\x9d\xa1qn\x1d\xed\xe4\xfe\x13!\xf5\x162n#\xb6\x87\x83\xa1c\x1b\xa7\x9a\xb7{@\x11\xbb>\xae\xef\xef\x0f.X~#\x8c/\xf4\n\xe5+7\xd1x\xa9\x88\xe7\x1c\xcf_\x07\xe8\xfd\xe0\xda\x9aQ|c\xa3!Vn\xcf>\xadU\x8ftat#\x89\xddk6e\xb3(\xdd\x01\xc0\x02\xcb\x86\xf1#\x17\x1c\x81g0@\x1e#ET\xf1t08\x18>}:\xda\xdb=\xd8\x1d<}:\xa4,\xc7\x9a4\xfd\xb7d\xb5lM\xa1\x07[0d\xe6\xc0\xd6\xbb0fVs(\x12\x06B\xc9\x0f\xf8\x17\x0cyFi\x90#\xb8 \xb30\x87E\x9e\xaf\xc6\xdb\xdb3? \xd7I\xf2\xc5\x9b\x87\xf9\xa2\xb8\xf6\xc2d\x1b\x15\x99\xdb\xd3$\xc8\xb6\xf1\xe3\xad) \x92)ar\x9f\xd30\xbe\xf1\xd3\xd0\x8f\xf3\x13\xac\xb2\x96:\xa6L\x1bHQ\x8e\xf5\xc4O\xe7\xd9\xe4\x92\x95\x8bi\x15\x9f?\xbd\xa9d\xdfRb\x19\xd8\x84\xa1\xeao\xc4\xea\xc0Qc\xae\xb6\"\x8a`I\xb2\xcc\x9f\x13t\xb4\xcb\x08>\x8f\x93xk)F<%7@\xe2\x9b0Mb\x14\xaf\xd2\x8f\xf1C\x1cG\x06~<\x05\x7f:\x0d)\x80\xfd\x08\x16$Z\xcd\x8a\x08n\xfd4\x0e\xe3y\xe6)n27<,d\x95oHM \xc0\xa8\xbc\x04\x85d\x14\xf6o\x04p\xe0\xa70\x89\x90\x9d\xc2\x8c\xb8\xb3\xd4_\x92\xec\"\xf9\x98\xac\xe0\x84\xceT\xf2\xc8\x8d\xd1\x87\xbe\xe3IC)]CJ\xb7\xeb\x1c\xc9\xd3\xf5Vk\x8bI\xa7x\x03\xedj\xaa\x86\xf7\x998\x03\x1a\x91\x04\xa1\x81\xf4r\xe1\x1d\xd5\xba+\xa4\xc6j.Up\xdat\xb1\x1aW)L\xf0\xd9%\x93\x94\xc6\xcd\xc8\xc0\xd887T\xe9\xdb\xbcu\xcd\xca\x9b\x932\xf2z\xdf\xa3\xdc\xb5_\xa5\x1a\xaf7\xa5\xa6\x0fi\x99\x8ee\xcdJMu2}M\xbf\xaa4\xda\x0bm\xadl\xd6{\xd7\xaaqU\xd7\xd6\x8aa\x0f\xfa\xd7\x8a\xc5;k]\x1b\x9e\xb2\xab\xa2\xae\xc2Od~\xf6u\xd5\xb7\xb6r\x8d\xb2\xcf:\x16i\x0f\xa7F\xb9\xee\xfe\x8e\x8dR\x1b\xaf\x14\x0f\x84^\xbd\xa7\x1fu\xf4\x1dq\xea\xda\x15\xe3WR\xcd\x0c\xcfIf\xe5X@\xd7\x9e0\xea\xe8\xdd\xa4(\xd5\xb9d>\xa6\xe1\x12\x0d\xfc\xfaV]\xedk\xd4\xeb\xe9P\x07\xbe\xd0l/|n\x88\xe5\xa0[\xe2P\xcf\xc4\xa7\xed?\x93O1\x970~S\x16{p\xca\x185\xb1\xbd\xb7\xebx\xec\xbd\x9e\n]\xdf\xfdWs\x8e\xe1\x04J\xc1K9'#\x0e\xd9\xbf=\x7f\xf7\xf6\xeck@V\xfcx\xc5\x97)\xf13\x9cY\xc2\x1f,\xfd\xf4\x0b\x0b\xfc\xc0n9\xe9pR%v\xa1\xe5)\xcc\xec\"\xfe\x12'\xb71\xb0g\x8e\xe5\xc0&/\x85\x95\x9c\x82\xc52\xfe\x89'\xe5)f\xe3\x99b9n\xd9\xe5U^\xa4\xe4<\xf7\x83/\x17\xa9\x8fQ\xc6\x0codk\x19)\xee\x01\xad\x10\x9fe\xb4$\x86\x0d\x14\xc4\x87\xc3\x9f\xd1.K\xe9\xcd\xca_iK|\x0b\xd6 9\xedOj\x8c\xbb\x90\xd6_\x8a\xb1\xb6\xae\xec\x1b9\x1b\x01\xce\xd3&Xc\xd0G\x0c\xc9)e\xd79 .lT\xc1\xfcq\x1e0\xe1\x07\xa3\nM\xd3\xe1(\xa1\xb4\xd6\x8e\x83\xd3%\x8884E\x91\xa0\xd3\x94*>$\xa5\xff\xc8$\xb6wv\x07\x8e\"h\x15\xbe\x83\xf8\xfe`o\x88\x96W\x07{#\xb5\\\xe5j\x82\xe5vx\xb9]\xfew\x8f\xff\xddw$w\xf1G\xecN\xf1T\xe6\xaat\xe9:b{\xd4Hu\x11r\x13\x08\xf5\xb90\x8dP\xa5\\E\x15\x103\xf5\xe6L\x14NX\x0c\xaf&\x92\xc8L\xd2-\xd1\xd3\xb61\xaaeso\x1af+\xca\xc82O\x0fo\xb5\xf032\xfdD\xe6a\x963\x05\x08Z\xeeNbs\x14\x89\xc2&\x8d\xa0\xec\x0f\xf4Y\xdc\xb4\nJ\x99\xaa\xdd\xbb\x12\xcd\x8a\xa1\xa2\x01\x8b\xf6\x05\x8b\x1c/\xbdy\xc3\xcf\xb6\xc6'\xe5\x0b\x17\xeaq\x86\x9a@\xd4\x04\xd4\x14\xe1\xfaz\xc1\x03\xa5\xfc^\x9e\xfa7$\xcd\xc8\xc5m\xf2\x91\x96\xb3\x89w\x95\xfb\xe9\x9c\xe4\xb4+.dJN\x9bf?\x02\xbd\x18}\xad\xbe\x98\xe6\x97\xd9\x99\xc8\x1dj\x14\x03!\x9e\xa3|=\xa6\xd6@\x05\xb8\x00$\xd3M7#X\xd2K3\xfaX\x1d1@]\xe6\xd1\x1c\xff\xcc\xb4H\xd1\xc8\x85\x99s)PH\x95\xf1\xb7-\xef\xce\x8f\xf5 \xa1\xfb\x9a\xafj\xcd\xc0\x1f\xb3\x84\x93o[\xc2\xd0 \xc8U\xdf\x05\xadB\x80\x16\x9a\xa9\x0bw\xa0I\xc6\x04\x1c\xae\xd3\x86\xce\xd7\x0f\x82bYD~^.\x85W\xbcM\x92u\x19pb\xf0\x83\xa8\xd5R\xb2\xad\xfa\xf3/\xe1\xea\x02;\xde\xab!U\x15nj\xe8U\x98\x92 _s\x14\xab\x9e\x95\x9f\xc59I\xdf\x12\xff\xc6\x00\xa6\xd2\xb4W\xd7R\xb5\xed\xaajlf\xcd;\xe3 ]L\xabF\x7fRO\xf1\xe97\x1f\x8d\x86\x93Q\x1fy\xaeyb\xf2\x88\xceC\xdd\xc9\xa8;I3\xc3I\x1aUI\xa6~Ws0a\xcc\xf9\x86\xc9\xd1\xacK\x8c\x04b+\xd9\xa1G\xbe\x92\xa0\xc8\xa5y{\x13\x7fH\xa7\x84\xd3\xedh\xfb\x95}$i\x86\x1b?\xb7\x193&\x13\x94\"\x0f\x91\xdd\xd8\xdd\xf5^\xf5f\x8f\x11\x81n\x0cZ+\xeb\xcd\xb9\xb3\xca\x86\xad\x95-\xfaVfy(\xe9\xf4\xae\xd2$A\x93\xaa7\xaf\xea\xf5\xd6\x17\xd2M\x03\xadH\x1e\x00\xcdF\xd8\xcb\xb3\x1b\x12\xe7\xccl\x01\xe7a\x0c\x89\xa7\x7f\xd3D\xf4\x8dr\xd9\x0b\xee\xde\xa7\xa9\x83\xbfk\x9d\xb2\xa2\xa4\xdb\xfa\x19\x06ku\xe51S@ZOw-\xfcR<\xd6\x1cD7\xdce`\xd1H\xf4I/;\x9a\xe4,\xfbh\xc4\"\x81\xfd\xfe\xe08\x93\x10#H\xe8\xeb\xc2\x94_\x8d\xf3\x81\xd9\xebd\xda0b>\x1a|z\xd3p\xfa\xb1\x1a\xbc\xeeY \x866\x00J\x84o\x0f\xa3|\xa1I\x8b\xb4=\xa3\xe4C\x9f9\x00)6\x84v1\x8b\x0b\x835XI\xfc2\n\x83/\x96>\x90B\xa3\xdcK\xc6\xe6\xf6(\xfe*)\xae#\xd2\xb7r\xa9t\xff&\xde%EF^%\xb7\xf1:e\xd7\xac\xfe]r\xb3V\xd95\xab\xff\xbc\xea_\xb2\xbbj\x90\xf4t\xf6\x06\x92\x8a\xfeu\xc4\x12\xbcbT\xc0\xdc\x05\xeb\xba\xc8s\xb6Cy2H+\x8cWE.?\xc8\xd0\x14K~\x92\x93\xaf\xb9\x9f\x12\x9f?sZ\xbc\xa8[#s\x88K\xf4\xb2\xe98\x05\xa0\xea \xc4\x85\x87s\xe3\xcd\x03\xb3\xceV]'DDJ\xf59\x8bY\xed\xc8b:=\xeeH\x8dx\xa8T\xf2SZ~\x92^\xb6a\x00\x96/\xe8\x11H`=\xb4\xc5\xf9\x8a\xdb0\x8a^\xd5Z4=g\xed\x9bG\xae\xc7AX\x1dO\x81\x94N(tz\x0c\xfey\x14\x95lC\x17\xd5)\x98<=\xe0\xeby\xbc\x15\x12[\\\x14O6\xfcpc\xb4\x82\x89&\xf1\xe5$\xbflC\x8ab\xfcf\xf0\xeb\xc4\x06\xe2B\xf8\xa4\x86i\xd0=\xb7\xb9\xa1<\x87)\xef`\x8f=\xf1\xa0J\x90\xf2\xd4\xe7\xc7{\x7f\xca\xbb\x84g\xe8\xf2\xa3r\xc5H\x83\x9a\xfd\xa1\xdff\x7f(.a\x87\xe8O2\x03|p^\xba@O \xda\xc8\xab\x8dF\x1e\x83\x19\xf2\xccv8D.7\xa4\\\x91~q4\x11K\xf3 \xdf\xdea+\xbc\x99\xebU\x13\xdefR;\xc0\xbe\x05\x1a.X!\xba\xd2$ Y\x86U\xffo\xdaHW\xf5b\xcf\x04M\xe8\x94\xfc\x01d\x88%\xe1\x14V0\x86\xa9\xe32\x80Q\xaa\x0c\x93\xb1\xfa^JP\xd5\xfd\xd2/\xe6\x8b\x9c\xe9\xc2[\xbbyu\xb5*\xd29\xe90\x81\x89*S\x0fc=\x12\x91\xf4\xc2\x8f\xbf\xf4\xcb\x8f\x1d\xd5\xeb,\xef\x0c,!\x0b\x01\xf0\x8d,a#\x85\x97` \xd5$A\xfa\xe8:7!\xb9\xed\x9aK(\x83\xe9\xd1\xd2U\xd0n\xbc\xd5\xaf~1\xfd\x89\x16e\x82\xf0\x99\xf4n\xc3x\x9a\xdc2\xcb\x81\xb2b\x8d\x87%H\x87P\xeea\xe2\x85W\xdcKM_\xb8<\x0eO!\x16!o\x7f\n\xc9-\xc6t\xe5\xfe'?\xb3\xc6\xc7\xc0z\xd1\xdc\x85MffJr?\x8c\xfa\x00\xac\x04\x12\xfb\x84\xb6\xdb\x199\xbb5B\xa6\x0b\x89\xda\x16oCRZIy@\x1bf\xa3\xf8\x85\xe7\x17s\n5\xcc\xa3e\xfb\xcc\x0bT^\x94\xfe\xb7/J\xb5\x93\xcb\xe4\xa6\x13_\x10\xcc\xa7\x1e\xe4o\xe2\x9c\xa4\xb1\x1f \x01\x1d\xdd&\xa8El\xdb\xae=\xc4R\xe5t\xe8\x9bi\xab}\xe1w\"\xd3\xbaF\x9e{\xff\xae\xdd\x90\x92\xbe\xde$#1C\xcah\xd7\xac\xc7?\xbdTS8\xa9\xd5\xf7\xdb?nH\x8d\xbcLVwi8_\xe4`\x07\x0e\x8c\x06\xc3}\xf872\x85\x9f\xfd\xdcT\xec\xefdz\xcb\xea\xabl\xc5\x02\xbaz\xd1E\xb0,\xff\xe3\xf6\xffQ}\xdc0\x1f(\xfa\xcd\x05u\xab\xd6:)\xa9D\xbd,\x91G3t\x02\xc8\x14\x16\xe1\xd9\xbe\xa5\x10\x17\xcdh\x95-\xe1,\xc4\x86\xafl\xeat\xf49plo\xcc\x9f\x0c\x92\x90\x85\xcbaR3Q\xa5$\x958\x81P1Y8\x81\xd0\x01\xc2\x9c\xfe\xda\xa8\xb32}L\xddb+u\xca\xaf\x13\xcf_\xad\xa2;\x9eP\xa9\x95\xbf,+\xaby\xc3\x86z\x82O\\\xe5D`F\xa0\xd4\x11\xc6\xc6\xa9\xc8\xcb\x93rG\x17\xde\x1f\xff\x9b\xe9G\xc2\xf2\xceZ\xd0\x1aKR\xc6c\xacy\x814\xeai0\x92\xd2\x85\x0eGk\xd7\xb4\xa2-x\xb2\x9e\x9e\xfa\x81C9\xc7\xd8\xb4(\xcb\xade\xf7\x95T\x9e\x0f\xf6zV\xc8\xdc.\xb8\x0f\x8a\xe3\x9e\x1b:\xd5\xf3?\x81A\xaf\xda]\x16*\xbc\xde\x9a\xe8i\xea\xc7\xd3diw\xfan\x18\xbak1\xf36\xdb\xf2\x82$\x0e\xfc\xdc\xae\x85\xc4\xc74\xc6cJeX\xce\x95\xe5\x82\xbd\xb9\x19\xc3&\xa4Ne\x0e\xb1\xb3\xff\xf8\xe43\x8dh\x06<\xb5e\xe39Sp\xec6\xe6\xcb\x07\x83\xd5|\x05\x8d\xdcc\xd9o\x87\x83\x81\x03\xa7\xfa\xd2\xd0-ZF\x94V\x06Y\x0d\xe9\xf2\xdd\x188.\xa46\xe5\x9d\x13\xa7\xdd\xd0\xdd\x14\x8c\\\xb6v\x7fh\xb4g\xcdInQ\\\xc1\xacW2q\xd7t\xfc\xb2\x9e\x07\x94aKR%\xdc\xb4\xc9\xf3\xcbBw\x0c^7\xe5\x0cE\xb2i\x0f_P\"\xf1\x11KTsP\x89\"\xeb\x9a\x17\xc7e\xce\x88F\\\x9f>=\xc1\x9d\x11\x9002l\x9aY\x94$iW\xef\x0c]\x0b\xb3\xf7\xfe{\xf4\x81\xd9\xc44\n\x03\xe6\x12\xc3v}\nc\x88\xd7O\xe8!\xe1\xa4Q\xaf\x87J\xe3>\xc3\x99\xa6\x91\x1b\xb4\xc4qn\xf4\xc1 \\R\xcaK\xddh\x98\xd6\x88\xcb\xd4\x93\x9d\xfe=\xd1\xb0n\x9aO\xea\x9d\xa91p\xf2\xa5\xf0\x8c\xba\x05\xd9\xe7\x0c&\xd5\xa9[\x92ofC\x08X\xe3\xd05\xef\x97\x7f\xa0\xe7\xaa\xd9Gr_\x9f\xc8b\xcf\xe4\xc3\xd9\x89\x0eR;Y?\xffZ\x97\x98gO/\xe69\xd0Iy\x98\x87Y\xf3\\\xc4A\xd5\x1f3\xbd\xff\xb0;\xc7\x9e\xd9\x14.cF<\x1ao[\x96\x94\xdeGk%\xcb\x82 \xb9\xd4\xb9\xf7\xa2\\\x7f`\xf0\x06\x8f\x1a\x11\xd8C\xb3\xe7\x1cH\x82']8`!^\x9ad\x97]\x84\xaaT\\\xe3%\xe72\xef<6\xa6f\x02\x0ds\xc21X\x1f,\xd8\x84\xcdMM\xf2oq\xddj\x93l@\xe3\xdc\xc1'\xad\x92\xf9\x99H\xeb\xa2\x8dfB\xaf\x7f?\xfb\xdb\x184\xf6#\xef\xcf\xce^\xe9\xd3\x17\xce\xfc,\xffw\xa2\x86\x873mg\xcc\x1a\x90\xc8A5\xb5n\x0b\xcc[]\x9f\xb6\xf2\x14\xacs\xca\xfdX\x1f\xd1X\x9f\x98e\x1d\x1b!NOk\x04a,\x97\xd5:\xf4\xdaj\x97{lT\xd4\x9bu\xd6R6P]_\xc4\xa5\x9fLq\x86N\xd2K/lNl\x13\xf2s\x92\xffL\xfc/\xeb@\xfeQ\x00\xd90\x84H\x84&<6\x86\x7f\x088zi\x05\x92\xf8uJ\xc8o\x9dBn\xa8*\x8f\xd0\x1e\xd4\xa3\x8b\x9b\xfe\xc2\xd8vO\x9e\x80\x00\x13\xfd\x1d\xd8u\xb6K\\:\x02\xb0\x8d6c\xfc\xee\xef\x0fe\xb8\xe77\xd9Y\x19yC\xfb\xf5Z\xb4\xc9\xef\xdf\"]\xd6W\xadw{\xcf]\xb0\xaa\xc8F\x0d\xf7w\x8e\xf2\xe4xG\x947\xf7^\xbe={\xfe\xe9\xea\xc5\xdfPs\x847\xf8\xeb\xfd\xd9\xcfW\xcf?_\xfc\xf5\xea\xecS\xf5\xe0\xfc\xe3\xd9K\xfa\xe0\xea\xc5\xf3\x8b\x97\x7fm<.\x1f\\\xfc\xf5\xd3\x87\x9f\xdfkJV/J\xc5\x05\xedCLn/(}\x1b\x9f\xa5\xed\x9eg|u4\x97\x0e\xc5A\xda\xa8\xcd+\xff.J\xfc\xe9\xb8%\x83$\xd4\x89y\xb5C\x18/\xf3[z\xa59@\xca^\x91\x8e^\x9c\xafH\xf0\x8d@\xc9\xbe\xbd\xf9o\x06\x81&\xbe^\xef>\xbf\xba\xa6;\xd7j2\x01\x0d\xc4]~\x9c\xadH\xa0i92\x1f\x02\x8dO\xb5\xad\x06\xbac\xa5\xfc\xd4/\xf2\x85\xa6\xd5Y\xedT\xc2\xd2\xb8\x80\x95b\xab\xaa\x18;\xc9\xaa\x92W\xd7w\xcc-\xb37_\xb6\xaf2X\\\xc6\xaeK\xdcY\xba?3\xa5\xc0\xe5\xda\xe1C\xdaH\xed\xfb{\xb4\x0fa6?\xc4\xa1\xef*\xeasMfs\x7f\xc7\xe1\xec\x96\x0b\x16s?5E\xaf\xeaE\x98H5\x0f\xf4\xee\x88\xfb\x0d\x19\x0bO\xf7?\xd03\xb0\xfb\x03\xbd\xf0e\x7f\xb0\xdb7\xdc\xb1\x10nli\x98\xa1\x98[U\x01W\xd3\x0c0\xe6\x16W\xe2\xd6\xd7\\\x92r?c\\@\xb6s\x04\x9b\x9b9\x1cCl\x0c\xb3\x99\x1a3\\3\xafa\x92\xdb)f\xcfK'\xc3\xcbv)\"\xbd2\xd9\x0b\x98\x9f@\xa9[{\xccm\x0fO \xa9?\x9f\x13\x96\xfc\xaa\xf6p\xe1\xa3\xe5J\xfda\x86%\x8b\xbauK\xb6\xde\xdc\x0f\x07{}$c*\xd8$\x93\xd0\x13)_x\xbc\xb5u\xd4\xe4C\xb8\x94~\x12_\xb2\xfc\x83\x92\x19\xb0\xf6\xac\xd8\x1a>z\x8f\x0c\xba\x93\xd1kFS\x0d\xe4\xeaj\xea\xe7\xfe\xd5\x95\xb6_\xa9\x9d;p\n\xf1D\xc3:\xe7\x94u\x16\x8f\xc7`-\xfcla\xd1\x134\xf6\x96\xfe\xea\xd1\xe31\xb8C\xed7\xe2\xf2\x89\xf0v\x06w\xa8]\xfd\xc6\xec\x11\n\xd7\x84\xeeD \x9dlA\xde\xa5!\x85\x86.:\xc6)\xf86*\x93\x12\x9b\xe0\xba tg\x89T\xddc\x94\xb8v\xc0M\xee\xdbZ\xbd'\xde-\xb9^\xf9\xc1\x97\x8fIt7\x0b\xa3\x88\xab\xe4\xa7d\x95\x92\xa0\x99\x17\x14=\xdeW~\xbe\xc8\xb8=I\x15z\x99\x7fY\xde\x9e\xb0\xf4\xb3z\x06\x8f\xb8`\xb1dM\xda\xd8f\xb5p\x91\x9a\xf0tk\xc5>#^\xd4x\xad0\xd6\xad\xfd\x0c\xffG\xfa\xa8\x11\xc64\xfa\xd8\x9c\xad\x13\x18>R_\xab\x9a&\xd4\x07@w\xdd\xf6\x7f\xda\xa7\xe3\xc1\xfdd\xb8\xf5\xf4\xf2\x97\xe9\x8f\xce\x9f\xb7\xbb\xb6\x88\x01\xa3$\x95\xb1\x8f>\xef\xfb\xc6\x86\xfd\xff\xb3\xf7\xef}q\xe3\xc8\xe20\xfe\xff\xbe\x8a\xc2\xe7\x9c\xac=\x18\x03I&\x97\xce\xb0,\x03\x9d\x1d\xce\x06\xc8\x0f\xc8\xcc\xce\xaf\xc3\x971\xb6\xba\xdb\x1b\xb7\xddk\xab\x9b\xb0\x9b<\xaf\xfd\xf9\xa8$\xd9\xb2,\xd9\x86\xb0{.\xcf\xd7\x7f@[\xd6]\xa5RU\xa9.T9\xd3\x18\n\xc9`\xc4*{\xf2\x04\\\xd5EI\xde\xf0A\xb2\xb1\xc7M\x87\x0b\x1e]\x80xX\x80\xc0\x1f`k\x97\xff\xfa\x0f\xf4e\xcfi}\x8c\xc5\xfb\x80\x99\xd2]L\xf5\xcd\x82\xed(\x17\xfa5\x8a\xe9\xa2\xf9z\x8b+\xd8\x18\xf1\n\x86\x03P\xba\x82*\xae}\xc8\xa1\x83\x90\xd2\xb1\xa1`\x1f^Y\xc8\x9dg\xfa\xfd\x99 w\x9e\xe9\x0e\xc6\x05V}\xa6\xd3\x99\xa5\x99*M\xc5%\x81^\x0d^\x18\xb9\x85\xd7&\xa4S7\xf7\xdats\xea&Zj\x8c\xa9\xa1\x96:\xc7\xd4\x95\x96\x8a\xe1\xdd\xea%q\xb9\xe1\x91\xe2m(\xfc9!\xb7W\x08vk\x97\xbb\xe3`\x7fQ\x97\x8c\xbb\xacqw=\xae\xd5\x947\xca\x9e\x84K\xb5X\xee\xf1\xd01j\x96\xf7E\xbeHJ\"\xb3%\x01\x0f*N\\^_\xd8\xc8|A\xa8Z_\x88YV\x8d,\xbf\x90\xf0\x93\xd6\xec\x8ao\x0fw=\x08ZK\xe3=_\xa62\n|c\\9r\xcf6\xfd\xbc\xd8\x9d\x8b\"\xf4\xc1>\xa4n\xc6\xdd\xdbh\xd7~\\\x81P*)\x18/\xf7\xf1Z>\xea\xbc\x967\xac\\\x9b\xa6\xc5z\xa6\xc3\xea\xc1\xe9\xb4T\xb1\x1cVE\xb5\xca\x96j\xe2a\xd5\xe0\xfa[\xaa\x98\x0f\xab\xa2\x82\x8fFn\xa3\x8a\x81\x8235\x05\xf2AV\x0d\n\x89\xfd\xecu/\x95e\xbf|\xce5\xaeG\x88nF`\xb4%\x13}W\xb4arq\xaa\xf49F\xb4v\xbf%T\xe1\xd8\xf2\xd5\xce\x90Au\xf2\x0d;\xdc\xb9>\x1e\x82\xe8[\x97x^\xcdJ\xc8x0l\xf3f\xf0\x03$o<\x94i\x91I\xee\xd2I\xb6\xb9y\xe5]\x19\x07\xcf\x8d\xf2\x90\xd7\x16\xf4\xa8\xa6_?h\x02\xccr\xfb\xfaZ\xb45\xb4\x0d\x1a\xacIQ&\xdc\xef\x92PE\x92IA\x92\xc5\xe4\xf3\xd9\xd4u\xd6;\x81\xe3u\xe7\xd8e9\x9e<\x11\x02:s\x8eW,\xcf~\xcf\x85cF>\xd3\xcb$\xd2n\xb1z\xf4u\xfaUX\x18V\xad\xd5X~\xefDa\x9a\xde\x84\xd1'\xa7\x92\x1eb\xf8Y\xb8!\x8aZ\xcb\xef-\xaa\xc5ka\x07\xc7c(\xb4\x94\xb3\x8de$\x8e4\x06F\x92\x0f\xa2\x85\x9d\x1e+_\x8b\xc2\x97|$*\x08\xe4LZ\x8d}\xa0G}K>\xed\x1a{ie\xf5\x11\x1aT\\]\xdb\xa2X&\x1f=\x10\x89\xfat\xe9w\xc9\xe7Q\xbbjU>\x93Ooo\x9f\xffk{k\xd5N\x93OW\x87\x07\xd9b#.D\x12SRS\xee\n\xb6\x90\xb3 \xb9\xb9B\xc8\xd0\x9e\xdc \x1e$\x93ps\xf3\xaaa\x8d\x10\xf6D\xe5\xfd\xe6YQ\xcd\x03zt\xfd\xbf\x0e\xbd\x81\xd68<\x14\xe3\xd5hL=wU\x07\x89\xdf{f\xcdx\xbb\xa6\xb5\x89\xcc/\x84\x97E\x93<2\xe9;\xb2\x92\x0c\x91\xe0$\xbb\xc2s(S\xfc\xc2u\xd9\xb5Y\x84\x10y\xf5]\xa9F\xfe\xca\x83i\x91/\x00\x9d\x83\x85i\x9aG\xca\xcf\x0fY\x19NI+\xe1\"\xcdo\xb5#\x81\x91\xa3n\xe2\x16\xdc\xa7\x0c\x0d*w\x94\xa1\xe7C\xe2\xe6<~b\xc8\xdb\xea\xa7G\xf0h0x\xce4\x1f\x0c\xceA\xe34\xc8rq\"\x88\n\xcc\x94\x8biRX\x0f\xf9\x1c\xdc\xb3\x8b\xbdg\x97\xd6\xc5\x8e\xeeI\xb0j\x9b{6I\xae\x0d\xc1\x14\x98\xc2\x05\xc2>\x14\xc14\x91Z\xc1\x8c\x86\x13\xaf\xcaoT\xb07\x8c],z\xaf\xf2\xe9?a\xec\xf5\xd2\x98\x16E\x01\xbe\xff\xc2\xce\x15\x01\xeb\x81`G{\x05\x87\x83h=u#e\xee\x8b\x97\xdf{\xae3\xcd\x8bq\x18\xcd\x9dA\xa8\xa8O\xe3\xf5\xd9\xaeY\x10\xf1\xcc\xe2\x06r\xf7\xb5.)\x10\x82\x88W\xaa\x18\xd7\x1dL\x8c#R\xc3\xf8$+T\xcfL\x8d3\xdb\xbaC\xfe\x01\x9e6\\\xe5n4\x84\xban)\x9c\xc3r\x97\xb1D\xb0/\x0c\xc2\xcb\xc6\xd1\xf5T\x04\x8c\x94\x8c\x0dFO[\xa1I\x13\xe7\x0b6\xd0n\x08\x93\xc3J\x7f\xd3\x89\x1c\x11\x93KI#2\x04\x97\x92v\xebx\x9e\xcf\x0d\xe1\x1b\xa3\x82Z\x91\xc6\xe0\xc6\xb0\x19\x96%kgP\xc5\x9fI\xfbs\x1d\xa2G\x8fK\x0c%\xdb\xfen\xee\x96\xac[ld\xb5x\xf6\xab\x17\xcc\x86\xf2\x83b\xa9|\xdd\xef@u\x0di^\x15\x945\xf1@\x06\xe6\xc5I\x1b\x8b\xf3LY\x1c\x86\xceh\xa5\xec\x03#H\xc4=\x88\xf8\x8e\x16\xe8\xcd\xef\x19\xb7qS\x1a\xe5\x1fqA\xd3\xba\x0f\xca\x17\x0d\x18$ \x945 \xac\x0c\x80P\xb6\x00\x01},\x98\x16\x1d\x05\xd3\x86%G\x9bd\xc3J7A\xc1\xa0\x01\xa4\x82B\xa9\xafv*V;\xf5D\x0c\xbd\xe8~(\xa9\xc6\x12\xadp\xb9\x02I<5_\x01={f2\x18\xcb\\\x8b\xb0rwW\x17nrt\xb7\xfbB\xc7M\xdc\xa7D[R\xa9\xaa\xbd\xb8TS\x82\xd5\x87\x88\xbe\x05\x97&\xb8\x8e}\x98\xfb\xb0\xf6a\xe1\xc3\x0c\xf6`\xa9\xaa\x89\xdbhU);n}dD\xa5Y\x94w\x87\xc2\x06\xde\x11\x06\xd9Oa\x04:\xbae\xcf\x0d\x92\xe0\xcd \xb6q\xc6\xb3\x1e\xe3\x8e\x84r8i\x99v\xb0\x1a\x13wf\xd4\x19E\xba3\xe6\xa6\x072F\xef\x1b\x88\xe1\x0fp\xf3\x06n67\xcd\xd46\xab\xd1]\x08G\xacwn\xe8\xce\x91T\xbd\xb9\xf2\xf0\x8em.\xee\xd8\xee\\L\xf3P\x06\x81\xb7_\x0b\x1e\x0b\xb2\xba\x9a]4!\x1a\xcd\x7f\xcd}\\\xc3\x1eTq'\xde\xc0\x066\xb9F\x8e\xc3\xf5\xbc \xce3b\xb8\x14\x06\xb5\xb3\xb9\xbb\xf6\xe1\xce\x879\xb7\xc5\xe3w\xc4\x03\xba\xf6\xd5\x0b~<\x1f\x1f\xfc\x99\xc7j\xa5\xc1\xf9\xf8\xf2\xc3\xf9)\xec\x89\xdd\xf6\x8d\xe7\xb3\xd5'u\x11\x1c\x8d\xdf\x1e|xw \xfd\xfe\xa9ww^\xf5\xf8\x9d~)\xfcL\xbf\x12\xff_\xdf\xdb\xdf\xb4BR<\xb7\xdcm\xec\xe8\xdb<1\\\xf1\xdc\xdf\x94\xd1rH\x85Fm\x8aD1pD\xee\xc5\x0d\xb1\x18\xddd\x83\x00\xad6a&\x1f\xec\x96\xd6+W\xa8\x869O_\xeaGCU\xcchc]}\xb5-\xdc\x0e\xa7}\xd9\x7f\xdep\x05\xa7\x07\x82\xc9\x8cxp\xf8\xda \xb39FQ\xde\xe2(\x10\xa6I\x16\xa6ig\xd7:;\x0eP\xb9&\xeb\xcf\x08r\xa4Q\x9a\x97b\x00\x9d\x05\x9aF\xe6\xdcu\xc5\xe0\n\x86\x0c\x0e\xba\xe6\xde\x93\xa8\x15{\x1a@\xba\xd2\xb0\xd9)\x81d-\xb0\x11s\x03a\xdbu\x8b|V\xed\xab\x05\x90\xd8\x81\xfb\x83GM?\xae\xff\x93U\xbcNh\xe7u*\xcffA$\xa0\xf8\x80\xbaa\xa7+\n\xae\x01\xd6\xa3T\xc5\x88,\xe7\xc9\xdfV9}\xd3\xe1\x8b\x83=7\x05 ?\xd9\xb3\xf0\xd6^\x0di-\\,\x1f\xa5\xb1\xd7C\x1a\xfb\xb7\xcfO_>Fk/:\x14\x0d\xa1j-}\x94i|\xd1\xa3b\xc8\xdb\x9a}k[\x83t\xd8\xa2<\xa3I\xb6j\xdf\x0c\x81\x95\xc5\xe3|0j\xf6\xbb l2\xfcX\xaen\xf8\xb5\xb5\xbb\xf2!\xf4\xe4e>\xe3@\x19+\xbc\xa9#:s\xe5b\xaf\xca\xfa\xf7Y\xc9v\xe50\xd2C\x0c<\x92\xbaH\x83\xea2\xfa\xa67\x851\x0b\x852\xb5\xd9@\xaf\xcd\\\x96\"\xbf\xce@ [\x92\x96FId\xb8\xb5\x9d\xa2p\xa1\x99\xb6l\xa3\xabvx>\xf6\xd0|yp\x93\x17t\x04N\xc8\xfe\x1b\xd0\x1f\xcb\x92%\x0b\x0c\xe11\xce\xe2\x11\x94\xae\x13\xca\x04\x92\xc5\\\xff\xb9\x99\xd4]\xcb1%<\"H\xb3\xaeD&\xeb5\xd6\x1f\xba\xeb\xbd\xa0!\x1b\x89Zg\xc9\x92\xf4\xfax\xa2\xb1\xae\x1f\xd3U1\x02\xe7&]\xe9&\xed\"\xc3a\x98\xbdO\xc3\xbb\x118Q\x98-\xd3\xf0\xae3\xdb\xe5\xbc\xc8W\xb3y\x9d\x9b\xf2\x04K\xa1y\x98\xcd\x08\xcb\x8c?,\x99RT\x01w\"\x8c e\xce\x92/\x96y\x99T\x0b\xe6Du\x82uu\x94Bb\x1e\xd5b\x1dS\xa6\x14\xfc\xb0\x8cQ&\xa0\x96\\a\x9a\xadhF\xc9gzB\xb2\x15\x16\xc2\xb7\x05\xc9V\xb6\xecK\x9c\xf8|i\x9b\xf5\x15v{e\xe9\xa9\x12\x1ek\x04N|\x93v\xcc\xe1Q\x11\xceX\xa6\"\x9c\xd93\xf0\xd9ey\xac\xd3\xca\xb3QRT\x19)\xb1\x80\x16f\xfd\x9cP\x99\xf3sb\x1bG\x11\xce0\xc0\xa3\xc8\x99\xb2\xdf\xf6\xacg\xeb\xaa\xf5|\xdd\xd5\xb8\\w\x96\xb3c\xc1\x8f\x8a|\x89\xb9\xf2\xa5%\xc3\x8ao\xd7\n\x9ec\x91\xd0\x05\xd7\xe3\xc5\x92&\x84\xcd'\xe1\xbf,\xd9\xb2\xa8\xb8[R\x9eQ\xfe\xb6e\x8dE\xb6\xd8\x9a\xa5(r67\x84\xfd7gy\x9bG\xabr\x04\xce\x94\xfd7g9\xce\x96\x08x<\x02\x981\xcb\x9f\xc9\xddQ~\x9b\x8d\xc0\xf9D\xee\xe2\xfc\xd6\x82\xca\xfeL\xee\xde\x17\xa4,y\xbe%\xfbi\xcd\xf8a\xc9s\xad,\xab\xf0\x0e-\x93\x19\x0f2\x92f\xca\x8cs\xe9\xca|Bh\x18\xab\x05\x16\"\xc1^H\xc2\x0c\xcb\xdf\x013U\xe0\xb8\x118\x0b\xf6\xdb>\x07U\x108\x99\x95qW\x1dY\xcfp\xee1gn\x9b~\x9e\x91\xef\x03\x9e\xd3\xba\x11D\x988\x99\xd16\xbb\xef\xc3\x121\xdd\x92\xfd\xb7eY\x95<\xcb\xaa\xb4e\xe1G\x89\xfd\x1ca\x19\x92l&\xf2$\x99\x05\x19\xbd/\xf2\x99\x80\x9b\xa5\xf8i\xcex\x1eRRm\xcb\"\xa4\xa4kKr \xdb\x08\x9c\x12\x7fX2\x11\xf2 \xb7Y\x89?\xec\x99\xf80J\xfe\xcb\x96-\xe5\x91=\xab.\x962\xa5\xb3\x9f4LS\xde\x07\xfe\xcb\x92mU. b\xec\x92\xff2g\xbb$\x9f\xa9\xdc\xd1T\xfe\xb6dM\x16\xa4:\xf3h\xb2 ]\x87\xdde\xbe\x8a\xe6\x87a\x16\x116\xa5\x94\xbdE\xf8\xd6\x91\x9d\x1f0\x98\xd7\xde_\xf6U\xec\x17\xcci\xdf/\x98U\xeeX\xcc\xdb\xb1e\xf1\xda/Q\xa9>Z\xa5\xd4d_3\xcdX\xd1\xcfy\xbaZ\xd4P\xb7\xc6\xd7\xae\xf5\xfc%L(\x87\x96[\xfe\xcb\x92mNp*o\xd9\x7f\xcd\x04\xb4Y`\xcex(\x1e\x85\xa6\n\xa2w|\xe4\xc0\xa6\x90\x18\xb9\x8d8\x04^P\xa6ID\xdc\xa7^\x93\x1dX\xa3j\xdb?\xbe\xa2VE\x93\x94>'2\xd2Z\x1d\xa4\xb0}\x990 p\xad\xa9\xa2~\xf99:\x8f\xf9)\xcc\xe2\x94\\\xe6\xcbwdMRw\x1d\xcc\x1b \x9e\x0f\xeb\xa0]=\xec\xf5{ll\x8e\xa2$t\x9ca@\xcc\xbe\xae\x19\xdb{\xf2\xc4\x98\x1e\xd4\xd5\xb6\\\x01j\xb3X\xb6\x9b7\xb5.5\x88\xdc\x0dc?\xbe|\x01\xe3\x87\xa0\xaa\xdf\xed\x0e1\x97b\x81\xcb|\x80S\xd1\x86\xa4\x98\xfa\xd0\xed;O>b\x00=j}\x95\x16\xde\\D\"\x99\xcc\xaf`\x0f\x96\x9b\x9b>D\x13\xf6&\x82\xfcV\xaf\xed\xe5\xe6\x11 `\x0f\x92V\xc0\xc6#\xc20%\xc9\xa2\x84\x94\x13r\xd50f\xcb\x87\x08\xb3P\xcb\x9d\xed\x1c\xabu[\xa1\xc7\x99\\\x89X2+\x1e\xa7\xd8\x91{\x9d\xcb\x86Wht/v\xbd\x07\xfbfp\xa2E\xb8\xfcqu\xc3\xd6\x11?(\xb5\xf8\x12e\x08\xb3\x9d\xd4\xe5G\xfd7\xd5\xa8\xd4 \xaa}@%Gg'H~\\\x88\xf3\x96W\xe4TGqc\x02\xe4\xa1\x0c\x1b;\x9d}\x16\x01o\x95\xf6\xaa\xea\xeb:\xee\xd9cC\x0d\xc6\xc2\xbf\x1c\x9f\x1e\x9d\xfdr\xfd\xd3\xc1\xe9\xd1\xbb\xb1\x1c\x0bR\xd4r(x\x86p\xbe\xbb\x1e\x9d\x9b\xba\x92\xde\x16\xa3s\xef1\xbc\xb7\xa2dUEf\xc1}\x96\xf2\xd8\x17_\n\x01 \xf3\x04\x90`uI\xe6\x08\x15\xd7\xc1\x93\xd5\xecO\x92\xf5\xf5\xa8U\x81\xec\x10\x96G\x1a\x97u\xca\x87\"\x10\x1f\x85N\n\xbeck\x98\xc0\xba\x1d\x9b\xf7\xd6\xb0\xb6W>\xc4\x93\xd5\x15\xef.n\xc7\xbdVHy\xe8;.\xf4Z\xfb\x03\xd5\x80b\x867\xa8\x9f-\x85bK7\x1aK\xfd8\xfdhB\xcf\x90\x8e\x88\xc86<4\xe9\xfbpF\xfe\xf2k\xcfA\x86\xb7\x17\xfa\xad\x1e+\xdd\xe9Kz-\x9c\x86\x9a\n\xba\x0e\xa2\x19\xfcm\xd2\xe3\x92\xf7$\xaa\xd3\x06UQ\xa0k|$+W\x85\xc0`?\x87\xe9\x8a\x9c\xe4YB\xf3\x02 \xba\xdeq*\xae.\x90T\xc0K\xdcu`\x984\x97\xed\x80\x0d\xcc\xb41\xed:|\xd8$\xac\x82\x82L\x0bR\xce\x95~\x95\x96\xfb@\xd3R/\xf8\x18\x94\xd2\xe8\xebzZ\x87\xecR\x1fm?To_-\x06\x08\x83<\x904\xc5\xd4Ur\xa5\xd1P\xb4\xe6\x94k\xb4^\x17\xab\x94\x94\xd7\xd7\x0d\xdd\xf0\xeb(\x8c\xe6\x04\x13-\xd7\x8b\x85Bp\\_O\x93,\xc6\xdcv\xaa\xa5\xad\xf7W5-\xc8\x04~\x8d\xb7\xb5\xfb\x06\xa8\xd5\xb1`\xb3\xe0ds3\xbbB\x85\x01\xae*s\x0fO\x83\xbe6\x82(_,\x93\x944\x07a\xbaB'\xa2\xfb\x06\x96\x83M\xa1\xe3hT\x0cQ\xc6)\xecI\xddn\xda\x8e\x04\x84\x13\x98\xfc~\xe3\xf5\x18\x07\xa8\x95\xa2\xae\xfe?\xd0\x07q\xaby[ OY\x92\xc7\xda\xe2\xae\xf3:\x86oD\xa9\xec\xc9\xd4)p\xd1!X\x86\x13!\x07G\xf9\xe0\xbe|\xd1Z\xe5#\xcd\x82if\x88M\xdd\x1a\xad\x0d\x1cB:\xd0\xf2\xa5\xa8a\x99o\x01\xa3\x11\x1a^\x12\xb1\xbe\xea>\xa3\x19Doq\xb5\x81B\xb5\x8c\x16V\xd1\xef\xc3\xa2$\x05\xb0\xe9C\xc3\xb2i\xbeB~\x1f6A7K\xd7\xf6Eq\x15L\xa5\xf1g\xebK\x98b$c\xfc\xff\xe5\xcb\x90]\xdf\x9c\x9d\x1b2\xcd\x0bb4\xf7k\xb9\xb1ZK\xcfx\xbd\x93\x94Hm\x9c\x8eI\xca\x1fs\x92\x82r\x89l|\xee\xc3\x8e\xc9\xf5!C+F\x13R\"\xd9K\x93C\xc4if4/\x0dS:\x82\xa4\x9e\xf2\xd6\xb6\xbb\xd7\n\x84SJ\x8a\xff=\x0b\xc0o~\xff\xa7-\x02\xc34\xf7@\x13F\x04\xa0M\x08\"/\xdb$\x18T[z'\xc10q8 \xc5cM\x02\xefA\x9f\xf2\x17\xcb\xd0\x0cJ\x8b\xae` \x8c\x00e\x06\xdc\xe3cs.\x86\x1dy\xf5Y\xd9\xd2\xa0\xe7\x87\xd9\xb0j4\xba\xa4\xda%fU!\xca\xce\x1e\xc3N8g]\x87E\x98\x853R\x8c \xc9\xd6a\x9a\xc4bg0\"\xc5\xb4'\xa0\x8d\xbd\xe9\x95:*=\x84\x13\xe6\xbe\xef:\xc5I\xd9Z(}\"\xdc\xeee\xf2\xfe\x17\xcc\xe5\xeec\xcc\xe5\x8cP\xde\xbb\x01jo\xc2\xcb\xc1\x9e\xdeB\x0d\xef\x15\xe1\xe9\xb6\xfa1!W\xda\x1e\xfd\xea\xdf\xdf\xf3{\xbf\xbb\x93\xce\xbd\xbb\xe6nC\nn1hq\xd6\x8e\x16\xc0\xc12/O\xc2\xcf\xed\xaf+\xf9\xb5\xfd\xa9\xc4OIy\x9c\xbd\x0boH\xda>x\x94\x8f^M\xc7\x9b\xf2\xa5,\xcf\x87l\x11\xd2hN\xe2\x8b(_\x92\xb2\x8e\x0dj\xfc\xbc\xb5\xe5\xb7*C>\x05{\x8bf\xf5x4)\x9d\x10\xa2\x14F\\\xed\xbe\xe1\xa3\x82\x1f 4z\x9ag\xfdz\xcd\x0fN7\x07\xa1\xca\xaf\xea\xecaq\xcf\xf3 \xdb\xdclCr\x15\x82\xfb\xf53\xe1\xdb\x11\xbd\x04\xb2\x9f[[V\xd2\x99\x0b{\xcc\xbc+\xea\x80\xb5\xbe\xb4u\xabP)\xb7$EP~J\x96\x97\xf9'\x92\xd9\xc3\xef\x80\xa2\x11\x0f\xfb\xdc\xc5\x19_l\xcb\xa4\xc3\x1e\xf7\x0cb\xfd\x9a\xc1\x16\x9ft\xbe\x06+}\xfeK\xff\xe1a\x15^\xdb\xa2`r)\xba\xeb\xfc\xdd\xf1\x8cq\xa5\\%\xb6r\xa7V\xaa\xd4w\xbd\xa8=B\x15\x02\x8f\"\xc1C]\xc7a\xc3\x17\x0d\xf6j\xa3\xa9\xf5\x0f\xd3\xb8m\xc8IL\xa1H\x9d\xc30\xfb=\x85(LSX\x10:\xcfc\xc830b\xd4\x96\xcb\x8d{\xcew+&\xa20S\xd8\xf5\x02)x\xd2no\xd0a\x87\x08\xe0\xe2\xe6M%\xf5^\x1f\xa4\x96\xc5H`\x1f\xb4\xaa\\\xf4:\xaf\xd8\xb1\xdd\x7f`}\x9d1 S\x14\xd5\x15jD8\xcdW\xb8\xc0\xb6y\x1b\xc1!\x8dd\xf2\x97\xedr\xedt\x19\xae\x9c\x87]+\x10\xe1\xc8\x18\xd3^\xdd\x9e\xa1\xe6\x8eJ\xd1?\xc7\xd9\xf4\xfeun\xfcs\xbak\x83\xe4<[\x93\x82\x82p\xfbKsX\x16\xc9\"\xa1\xc9\x9ap\xefON\xdf.\xd3\xd6\xb9\xe9\x0c\xec\xfb\x9d\xfb\xfa\xe5\xd0\xadpd\xd4w\xdd'\xb8\xf0\xf4\xf5B\xd7\x1f\x0dE\xfa\xae\xe7:\xc7\xe3\xeb\xf7\xe7g\x97gz\xd0\xd1U+jA\xe3s\xd9%\xc8\x02)\xcc\x12\x8e\x99\xdc\xdd\xef_x\xae\x93L\x8bpA\xf4\x86\xe4S\xe0\x05\xa0\xcdS+\x8f\xc2\x12\xa0I\x10#7\x97ix\x07{\xe0dyF\x1c\x1f\xa3R\xecx\x0d;\x17\xee\xa4\xb0,\"\x96\xed\xaf\xe1:\xe4VE#\xc7\xe7\xa4(\x0dP\xe3/\xa3\xbf$Y\x9c\xdfV\x08\xc3\x0b\xf2%\xc9\\\x1e*\xa0H(q\x9d\x1fx\xd1?T\xc2\xec\xb7{\x1c\xbf\xfe\xf0q[|r0?\x1a\xbc\xba\xc2\x95\x14 \xde\xbe\x81bk\xeb\x8d\x07\"<\x8b\x12oe\x92L\x8a+\xc3\x8d\xa4\x00\xcc\xd2\xd5\x0e\xc4\xaecE\xa0\x1eP\xa3\xb6Zi-#\x02\x16\xa2v\xe9.Kq\x8e\xcf\x8f\x17N\x91\xa0\x03t\x1f\x9a\x9f\x85\x93\xd3I\x88n,\xd1\xfe\x04=\x9fka\xd4\xa5\xe3h7\xfb\xff^D\xfa\x17O=\xd7\xf9D\xeeJs`\xdf\xdd\xdd\xfe83\x96\x8e\x17\x82\x86w\xf1\x07w(\xf9\xe0~>5\xd9$\x17\x13\x871\x11\x05\xd9\xfaky]\xce\xc3\x82\xc4\xd7\xd7\x8el\xd4\xfc\x0d\xef\xfb\x1f8\xa2\\\x8e(\xe7#\xfa\xc7\xd7\xbe\xf1\xd8\x10\xab\xa38\xd2\xf7\x9b\xd7\x90~R\xbe\x97 |6\xf5M\x04\x99O\xf3wy\x14\xa6\x84\x9f#\xbe\xe4\x9e'\xb0u\x82~\x07\xd1\xa1\xacsVG]B\xbb\xb2\x02\xcd\"-T\x18;\\\xc34%8be\xe9F\xc2\x12\x19\x1e\x008\xde5#8773\xd8\x84\xc2\xab\x18\x13F\xc4\xf7\x9dl\xd6\xbd\xf0\xd2\xe2\xea\xf7\xd9\xffx\xb6\xf7y\x0f\xa9\xf4\xe2\xe5C{\xfb\xa8\xa4\xd2\xee\xeeK/\x98\x9a\x899\x93\x07\x17\x13\x9e\xea\x1b\x87\xf9\xbe\x07\x95a6r$V3!='5A\xeeC\"\x03\x84\xa2\x03\xb6\xf6foz\xa25\xdd\xecH\x87\xc6\xcd\x8d~\xcf\xb9\xea\xf5\x80\xf3t\xd74\x03\x18{\xbdw-\x19#b\xcf\x04\n\xcem3X(\x03_\xf2\x18B\x82\xa7!\x0d\xdf\x11\xc6XI\xa0\x13L\x8c\xa5\xf9\xf2Eu\xd4\x9e\x19$a?\x86\xb1\x8cW\x04\n9ju\xcf\xc7=)g\x95\xec]}\xaa\xcb3\x11\xd5J\xa0\xd1*\x11e\x13\xe8\x8eVc\x1d\xbf\x81uy\xfa\xbdY\xd4\xf0\xbdM\xce\xd9\x07\xbe F\xefd\xc8\xbf5W|k\xfc\x9b\x03\x9b\x90\xa1\xbf\xdb8'e\xf6{\na\x14\x91%\x85\x82\xcc\xc8\xe7\x96\xd3[\x01\x11\x02\xa9~\xdb\xa6f[\x14\xa5\xc5\xfd\x9b\xd3x\xc6\xc3\x1el\x07\xdb\x9aH\xc9x\xe2:\xdb\xc1\xb6\x03\x13r\xe5jnu\xaa\xa3\xd6(\x80\xef=\xbe\xe9\xa4\xb8\xe2\xf6\xb8\xb0am\x03z\x8et\xd3\xfcn\xdc3\xe0\x11\xc5\x8d\x8c\xb4\xfd\x90\xec=L(\xb27F\xac\xda2Q\x16\xa2\xad\xd6 \xc9M\xa0\x9f\xefx\xc1\xf4\xa1k\x9b\x07\xfc\xcc\xe7\xec\xa9|\xe1\x81\xa1\xfe\xf1\x15\x83.\xd4\x19\xfe\xa1Gtq\xae\x91\xc4!xAs@\xdd\x1d\xd4\x97'\x90d\x1c\x93\xac0f\x95 c\x0b|\x1c\x06\xd3\xd65I\x1f\xac\xb7\x97DH\x8cf\x84*\xfc0\xef\xb6\xd9\x8d\x07\x0fXz\x7fT\xdf\xa1\xcd\xb5\xfd\xddFs\x90\xdf\xc1\x1fc\xc2\x05iI\x9e\xc19\x89VE\x99\xac\x89\x94\xb8\x92\xcf\x94dq\x92\xcdZ\xc5\xc2\x15\x9d\xe7\x05\xfc\x9c\x84\xd1\x9c\x94i\xb8\x86w9-\x17a\x96\xaf\xe1\x87T\xfe|\xf5\xfa\x8f\xb3E\x98\xa4A\x94/\xfe\xd0\xaa#M\"\x92\x95\x04N\x8e/\xb5oz\xd6\xcb9\xe6\x82w\xa2\x84{r|\xe9\xf5\x949\xcc\x97wE2\x9bSp#\x0f\x9e\xee\xec>\xdbz\xba\xb3\xfb\xca\xd8\xe5\x9e\xaa\xde\x93b\x91\x94\x18\x14,)aN\nrs\x07\xb3\"\xcc(\x89}\x98\x16\x84@>\x05\x06_3\xb6L9\x84\xd9\x1d,IQ\xe6\x19\xe474L\xb2$\x9bA\x08Q\xbe\xbc\x83|\xaaW\xcf\xce\x11(\xf3)\xbd\x0d\x0b\x02a\x16CX\x96y\x94\x84\x94\xc4\x95\x1e/Zf\xc04II .\x9d\x13p.D \xc7\xc36c\x12\xa6\x90d\xed\xca \xc8\x9cp\x9b\xd0y\xbeb(\x9d\x83M\x92g\xbe\xf0s\xcdz(?\xa7\xc9\"\x11\x0d\xb2\xe28\x8b%\xd0\\\xaf{U\x12\x1f\x07\xe5\xc3\"\x8f\x93)\xfbOp\x0e\x96\xab\x9b4)\xe7>\xc4 k\xe9fE\x89\x0f%K\xc4\x05\xf4\xd9(\xb7\xf3\x02J\x92\xa6\xac\x86\x84\x94\xc6\x89\xa9\xfb\x8eE\xf0\n\x80-\x06\x15\xd3\xcbz\x05\xb7\xf3|\xd1\x1cgR\xc2tUdI9'X&\xce\xa1\xcc}\xbd\xfarU\xdd+\xb0\xd2\xd3>\x1a\x1f\x81sp\x01\xc7\x17\x8e\x0f\xbf\x1c_\xfet\xf6\xe1\x12~98??8\xbd\xfc\x15\xce\xde\xc2\xc1\xe9\xaf\xf0\xe7\xe3\xd3#\x1f\xc6\x7fy\x7f>\xbe\xb8\x80\xb3s\xbd\xe6\xe3\x93\xf7\xef\x8e\xc7G>\x1c\x9f\x1e\xbe\xfbpt|\xfa'\xf8\xf1\xc3%\x9c\x9e]\xc2\xbb\xe3\x93\xe3\xcb\xf1\x11\\\x9ea\xfb\xa2\xe6\xe3\xf1\x05\xab\xfbd|~\xf8\xd3\xc1\xe9\xe5\xc1\x8f\xc7\xef\x8e/\x7f\xf5\xe1\xed\xf1\xe5\xe9\xf8\xe2B\xaf\xff\xed\xd99\x1c\xc0\xfb\x83\xf3\xcb\xe3\xc3\x0f\xef\x0e\xce\xe1\xfd\x87\xf3\xf7g\x17c88=\x82\xd3\xb3\xd3\xe3\xd3\xb7\xe7\xc7\xa7\x7f\x1a\x9f\x8cO/\x038>\x85\xd33\x18\xff<>\xbd\x84\x8b\x9f\x0e\xde\xbd\xc3\x96\x0f>\\\xfetvn\xea\xfd\xe1\xd9\xfb_\xcf\x8f\xff\xf4\xd3%\xfct\xf6\xeeh|~\x01?\x8e\xe1\xdd\xf1\xc1\x8f\xef\xc6\xbc\xe5\xd3_\xe1\xf0\xdd\xc1\xf1\x89\x0fG\x07'\x07\x7fb}?\x87\xb3\xcb\x9f\xc6\xe7\x98M\xf4\xfd\x97\x9f\xc6,\xa957\xa7pp\n\x07\x87\x97\xc7g\xa7l\xcc\x87g\xa7\x97\xe7\x07\x87\x97>\\\x9e\x9d_V5\xfdr|1\xf6\xe1\xe0\xfc\xf8\x82\xcd\xde\xdb\xf3\xb3\x13\x1f\xd8R\x9c\xbdeY\x8eO\xdb\x9d>=\x1d\xf3J\xd9\xaa5\x17\xf7\xec\x1c\xdf?\\\x8c\xeb\x9e\x1e\x8d\x0f\xde\x1d\x9f\xfe\xe9\x82uH\xcd\xacC\xcdv\xe3]\x9e%`!\xf7\xa5\xf4\x02\x92\x8c\xc1g\xc4\xe3\xfc\x8a\xf3\xb5J9\x12\x97$\x8d\xc4s2\x1b\x7fn:\xf1S\xe2oAS\xc7\xdd\xd88\xea\x874Z\xb6q\x10R&AE\x04\xaa}\xf9\xab\x0e\xca\x00#dI\xa8\x12\xa6\xc1XU\xa5x\xc26<\x1a\xd0\x19\xbc\x92\xf7w\x95M\x89\xa7\xb2U,\xc1E%\xa4\xcbdA\x1a\xd2.k%|\n\x1b\xd5\xf0$\xa3ZVK\x17\xebCF>/I\xc4N\x992\xa1+\xe1\x83e\xd0\x8a\xe4VI\x97\x14\xd3\\_#o|}\xedT\xf7PUh\x99\x96\xb0\xab9ak\xe1\x94\xcbH%\xda\x00\xc1\x10\xe0h\x17\xad\xccd\xd4\xfa:\xd0G\x1d g\xe7\xaa\xd3\x96\xc6R\xefS\xaf%\xab\x9c\xec\x18\xae\x14\xe5M,7\x9e\xec\xce+*\xe4jz\xb5N\x1aZ$\xf3\xeb\xf3\xaa\xbc\x0f\xbb\x06\x9d=k\x14M\xc3\x04\xa0\xf9]%\xe0\xc4\xb7\xa6~\xe0\nidA\xb2~\"w\xa5\xbb24iu\xa1\x0f\nc\x84\x12\x9f\x90\xfb\xa2G\xe1I\xee\xa2gz\x1e\x19$T\xc1\xc2\xd0S\xd2\xe8\xa9\x8c\x9c\xeb\x86\x93\xb2\xba\xf54h6\xaay*\x90%f\xeb\x06\xf5Y\x0b\xa5\xea\xc9\xd0x\x8cm\x03\ntN\xd5\xdd\n\xa8\x8b\xa2\x85G\xaf\xee\x83\xd9~i\x8e\x0c\xa35\xe5\xe2\xba\x97\x8bw\xb3F\xa2\x90\xf9\x8a\xb7\x04-\xd6\xd5\x94\xb6\xf7-\xf5\xf9\xea\xf9\x90[s|E\xdd\x96\x11?\x06\x9a\x13\\\x88O\x86\xd5\xa3\x8d\xd5\xa3m8\xa3ze\xbc\xd7\xbc\xc2f:\x0f,l\xec\xa0!d%\x1bMhA1\xcd\x80\x94\xcf=\x11Oq\x10\xbf|\x1f\xa5K\x9b\x00\xbb\xbd\xf4D\x89\x92\xc4\xd6\xd6b\x94\x88\xcc\xba\x01u\xb4\xd4{qZ'W(\x11n\xe7\xcf\xb8>\xba\x1et\x9a=\xea\x8e\xa7\x86\x1do\x0d7,Q6\x9d\xe4\x96\xbdc\x0c\xb9\x94\x08\xffqO\x9e\x98\xa6\x85\xf1\xf7[\xbb\\\xc6W[\x08M\xf2+6\xbcb\x92_a<\xf7\xc3\xa4\x88ViX\\90\x92\xa9\x04\xb3\xf9\x90 \x97\x0e;\x08P\xe2\xa3!\x00\xaa)\n\xac!\xf6#\xe56ih\x9f(\xcc\xd3D\xda\xd0\xf2\x0bR\x96\xe1LV!\xdf\xf6\xea/C+*i\x18}\x12\xd5\xf0\xdf{2\xd5P\x85\x14\xc57w\x04\x03\xf0 \x06\x922\xde\x06\xe1m\xca\xe4\xad\xf8\xc2-?\x84\x1f_\xe0~\xd5\xf2\xecn\x91\xafJ\xc7\x83Mpp\xfe\x1f\xacP\xf8\xfd+\xf35\xe3\x0bc\xc8#\x96n\xf2|\xcc\xd2\xf5k\x80\x95H\x7f\xed\x99\xcc'K\xbb\xd8\xc9\xa4\x10\x8d\xda8J\x84\xbb\x1d\xae\xf0j\xd0\x9d\xe2zS\xdc\x19? \x0b\xd7{\x03\x9b\x9b\x14~\x80\xcc\xa8S,g\xa2\x1do \xa4\xec\xbc$\xd4-0\xfeW1\xd9\xbd\xb2\xe9\xed\xd6\xbf\x14\xa5'\xde\x07\x86\xac\xfdF\xb2P\x8f\xc2`\x1ceS\x15\x9em\x94f\xe2{\xe9\xf9\xe0\x9c\x84K\x9b\x10x\x90V\xbc\"Un\x85\xd0\x13\x10e\xf1\xea\xf8\xc2\"\xd2|\xd1\x12\x81\n\x88\xda\xd5E\xf4\xa5H\x7fi\x84\xb4\xd4\x0ei\xc2< \x0ei\xc8\xad\x140\x1a\x99\xd1\xca\xaaL\xfe\xce\xf1\x05\xfbaX\xf4\xd4\xb0\xe8\xb9\xdfH\xae\x16=i\xa6\xf3E\x0f\x9b\x89|\xd1W\xcdD\xbe\xe8es\xd1S\xe3\xf2\xa8C\x1e\xacN\xdb\xf0\x9b\xb2\xb5\xcb\x1d\xa7\xd0\xca\x9c\x98\xeb\xdcK\x1f$\x9b\x9b\x19\xfc\x00\xc5\x1b\x0f\xc8$\x87M\xc0\xf81\xed\xb05\x92o\xd3\xe6l08\xbdx\xaa#\x1c\xa1\xf2\xfcZ\x07\x1bcL6\xa3\xaaS\x0b\xda\xba\x84\xc4m\x18\x0c\xd5\xe0\x8a]\xec\xb9\x8a\xb1\x90,@B\\Q\x1e(\xdc\x90\x1b\xb6[E\xc7Z\x8dj\x10\xb8V\xbe\xaf\xba\x03\x1dF\x83\x9a\xf7\xf4\xea\xbe\x8b`>%\x9e\xebkcZ\x83\xf6t'\x9a\x97\x8c\xf6\x14'\x03\x16\x0eq\xd37\xaa\xb6\x08u\xc7A\xab\x99\xb3\xaf<\xe8L\x15E\x15\xd56\xb8\x87\x92\x8dU;\xbd\xd9\x9ey)\x06!\xed\x0e\x1b\xb1z\x95\x9e\xe9\xab\x015\xf2m!e\x90\xbaB\x16\x8e\x08\xffl\xd0 \xcbcry\xb7D\xd2\xc9d\xfe\x88\xf7Af:\x92;\xa4\xc7zH\xa3\x1e\x83\xe9%\xdfW8\xbb\xd5\xd4\xec\xf1\xab&\x19t^\xb0&&\xbf\xe0l\x1e\xdd\x15\xec\xc3*HJ-7\xb2\xd4\x9a\xde{{\xfeAgPv\x9f=\xf7\xaa\xcb\xd5!z7\xafwv^\xee\xbe~\xfd\xf4\xfb\xe7/\x9f\xef\xbc~\xbd\xfbP6\xc5\xe4\xbf\x1d\xe7\xf1\x0f\x8c(\xc7_\xff\x81\xbe\xf1\xb93\x02\x02?\xec)\xa2\xb0\xfek\xb1{\xf5\xa6\x1b1I\xdc\xde\xba\xd4\xed\xe9\xceC\x80\xfb\xe9K\x9d\xc0\x04\x01\xdd\xdf\x08\xc1l\x13\xe4\x8f\x00\xc1\xd5NH\x1a\x10\x8cU\xa3\xb9cDJ\x83\xc5\x9env\xd0\xca\x00\x9d\xf7\xe0 \xe5]u\xeb\x05\xf9\xdb*)H\xe3\xc5uV4I\x1d/`\x03\xb3xb\x01U\xae\xfc\xe5\x8b\xdc\x8e7 \xdeD6^du\xc6zz\x02[}u=\xfbf\\=`3v(W\x99\xaf\xd6[FT\x0c\x04\xb6?\x06_>N\xdc\xfd\xd1\xe4\xffL>^]}\xf7\xc5\x9d8\xbf\xbf\xf2\xdc\xfd\x91\xbb\xbf\xf1q\xd7\x9b\xfc\x9f\x8f\x1f\xaf\xbe|\xfc\x18x\xdf\xed\x7f\xdc\xf5>\xea\x81Yx\x00\x98\x8f\xb7\xdf\xfd{oH\x07\x8b!S\xc3\x8eI\x17\x8bV\x92t\x01\x98F\"k\xc3\xad\xb0\xc7\xc6\x1ed\x08\xd4%R1JB\x158B\xa64\xdc\x0em\xa0F .?\x8f\x05\xc2\xa3\xc8n$\xea\x9b,A\xf9\xf6H\xa4\xd3<\xf7^\x86\x0e\xf7BD\xf7\xa4\x1f\xcd\xf2\"A\x99pm\xd3\xcaE\x17\xf5\xc1\xb9\xbe&\xe5I\x1e\xafR\xe2\xe8\x1a B\x1bAU\x08AC\x9b\x05Y\xe4\xc9\xdfI|\x11.\x96)y[\xe4\x8b\x8bhN\x16\xa1\x90*\xf0\x8f\x87\xa8,\xf8\x97\x93w\xe3\xcf\x98\x8d\xb3\x10\xf8\xf3/\x8bT+\x94dSR(\xefe\xbbfq\x00\x824\x81i\xd4\xac(z(\xec\x98\x89\x1b\x0b\xdd\xcc}\xf1\xfd\x0b\xcf\xb0\x0f\xf0\xd3\x8b\xd7\x9e\x91\x97\n\xed\xeb\x83\xa0\x10\xd4\xf3(T\xf5\xdaXKFF\xd0\xddZ\xfd\xae\xfdk-|\x19\xb6+\xe1\xa2\x99\xe1qm\xa5,\xa7\x95\xc7\x10F\x8bg\xbd&\x8b0I\xef\xd1\xc2\xaa$\xc5\x1f _\x8c \xca\x17\x83\xda\x12\xfdb,(\xd9\xa2\xc9\x828\xc3[t\xe5\xf5\x95\x17\xd0\xfc\xf8\xe2L\xa8\x84\x19\xf8\x02\x83<\x05\xd1\xc4\xf0\xb6\x06\xc5u\xe3\x95^O\xd3<\xa4\x8f\\u\x92Q2{\xf4\x0e\x0bT\xd8G\xff\x83\xb2\xca*\xf6\x94\xb88\x10 \x8dW\xad\xf2\xa5\xdd~\x13\xdc\xdb\xbcLw'\xa4\xcc\x82mt\x17\x9d\x0frr%\x99\xdeyF\xff3 \xc4f4h3a\xf2AO6\xc14/\x16\xa1\x812\x02\x81\x12V\x13\xd4O\xbcv`\x13\xb8\xa9\xcc\xca\x18\xd5S\xc2%\xf6.)\xdf\xae\xb2\xc8s\x13\xc6c%\\O\xda\xf9\x90}\xca\xf2\xdb\x0c\xb5 \x85K\x1b\xec]\xd7\xd4\xa46\\Xa%\xcb\x0d\x93<2[7\x89\x7f\x00\xa4\xa3\x15U\xd6\xfa\x8ep\xf7\n\xf6\x9b\xaf\xa3\x96)\xa8|r\xd3RP\xcbR \x99\xd9\xb1\x14\xca\x97\"P\xe1\x8035V\xb3Vg\xaa9\xef\x1c[\x16\x00m\xce\xb26\x844\x93\xcf\xa2\xe3\xdb\x0c\xc9\xb0\xcf\x0bC\xc0f\xf60\x1c6\xc3;j\xf3\xf7\x1b\xfc\xbe,\xc841x\xb4b\xcfuU\x03F\xab5g\xba\xe5S\x9b\xad\x16\xe6\xef\xe3\x8aG\xb6\x1c\xe0a\xc7\x01\xceN\x90\xd4C\xa8\xfa\x97\x9c\xe2a\xdf)\xee\xb2Y\xbd\xc3K\xff,\xa7\xe1\x8cM\x8e\xc3\xcd\xa5\xdc\x1b\xd8\x87\x1bF\x96\x8f\xd0>\x16u\x01\xee|\xb8\xe6\xde\xd2\x17\x13\xf6\xdd\xf9\xbcH\xb3r\xc4\xce\x8e\x1b\x96 _\xd1_\xc1\xb5\x85\xc0Q\x0f\x05\xc48\x91\x0d\xf9\xb2\xdc\x11\x83\x07\xd8\x03\xfe\xff\xcb\x17\x98qK\x10\x9f\xa7HU\x0d\xe5\x85\xe5\xe1P\x023\x11\xa9>\xae\x88\xbf\xf5$\x93nn\x9b'\x04\x9e\x0d\xd3\x81ns\xe5\x13\xc9\x1d\xc8\xfd\xb6\xb2\xca\x85\xdf^v\"\xe4V\x9d\xa6\xd6\xf94g\xad\xcf\xef\xdd\xba|\xb6\xac\x8b\xfb\x8d\x0bs\xaf\xf6E\xaeV\xa6\x01\xe4\xb6U;\x91M\xfd\x85\x99\xdc\xee!\xa7\x0f\x199\xad\xec\x19\xb4$\x95\x1b\xf0\xc2N\x9d\xb2\xbe]\xe8q\n\x0e9\xde\xd8\xb8\x98\x1c*\x84\xf7\x97/\xb0T?\xd4$7#\xc6-\xd3\xd5h\x87\x95\xe2H\xa2\xfa){(\xde\x03\x06\xb3h\xa9\xd2\xb5l\xf2a\x03\xff\xd4R\xbc\xc3\xba\x90Jc\x9d\xad\xde&;Wv\x96E}\x0ed\xff:\x0fm\xfd9\x93\xa5\x04D\xd91\xbd|\x16\x93j\xd4\x12\x1d\x1e^UG\x16\x92M\x07l\x04\x07\xd04\xb5\x9dN\x0e\x91\xef\xc1\xff\xcdOg,\xfd\x8c%~b\x7fJ\x9c\x8b\xee\x85\xf9\xdaw\x80\xc9\xa7\xd9\xd9=hw\xbe\xe1\xf3H\x9dA\x8d\x18\x94\x03p\x1byx\xba\x05\xce\xd5\x87\xad\xfa{d\x99.\x86\x15h\x82\xc7{Tw\xe5;\x05\xd1\xa8pa\xf0^\xa2[\x8e\x04\xde\xf7L[\x17j\x94\xcc\xa4h\xa8\x0fQ7\xa9\xcd\x118\x07\xd9\x1d\x9d\xa3\x0dT\x98\xc1\x0dAc7\x0bU\x80\xe1Q\x86\x9e\x08zC\xa5\x8doeH\xee\x11\xcf\x99\x018R\xcc\xdc\xb8 \xffSv\xd4W,\x15&\xcd\xd9\xf9\xdbB\xff\xb7lQo9WV\xa2]\xb8Xa\xc6\xe1M\xcc}\xb7\xf6\xfb\xab\x0fcV\xd1X\xef\xfaW\xe3=\xc8\xd4x\x89'\x05\x8e\x11\xff\xda\x84R\x86\x0d\xb3\x86\x9c+\x97x\xc3s3\x93\x19lL\xa24\x94\x81{M~\x0b\x92,\xc6\xc0*\xceG\xaa\x85c\xd3\xaf\xe1\x00\xcda;.\xa5X\x7f\x92\xba?\xd3\xbe\x1b.-\x7f\xda\xaf&Q\xcd][t\xcf\xd5\xf0\xc8\x9aq\x87\x95V\x9ex\x15\x87\x05O[\x84\x9f\xabxrU\xc6Fb\x85\x1b\x95 hw\xc1`\xd7$\x85\"2OCl\xd8YY~?\x8ds\xd5\xd8\xa0\xbb\xe2\xc4Z\xb1\xeaz\xc5\xb0\xd2\x0dGY>d\x01\x06W\x19/\x12\xca\xdd\xdcc\x9a\x12\xac\xa3\x9ayy\xbb\xd8\xf8\xaaMz\x9dG\xac\xfeI\xf3\xfb\xaeV\xbe$z\x0e\xbb\xd4\x03\xa9&\xe5\x06\x9b*\xc6(D\x06\xa8\x10\xbe\xebL\x1e\x152X\xacJ\xca\xd0g\x08<\x1e\xf2\x9a\x88[)\x8b\x1b\x05#\\\x11\x0eo\xf5\xcc6GD\x16 \xed\xb7\x9f\xe7\xfe\x8f|X\xf9P\xfa`\xf0\xc4\xac\x83\xb9\xabm\x03\x0c!'\"\xe5\n+\x1c$\xc4\xd4l\x01~F\x05'\xb7\x9d\xce\xd5\xd2\xda\xe9\xd2\xd0\xceDo\xb1\x9e\xa1\x8b#U^\xe3\xa9\xc6oc^5\x9f|\x03\xcd\xc3F\x1f eZ\xbe.\xbf\xff\x90E\xe1j6\xa7>\xac\xb2rI\xa2d\x9a\x90\xb8\x1a\x1bv-\x00\xf7\xf7\xb0\x89\x0e\xa2\x1d\xcf\xe4.\x84\xb7\x17\x05\"j5\xa7\xde\xa3&\xdak\xcdq\x82^\xa2\xd4\x19\x98\x90+\xbb\x92\x05\xd7\xc2\xc8<\x0f\xca\xdb\x04UXt9\x97i\xca\xa2\xb0$\xb0k\x8e\xf4/\\\xb0\xa2[t3\xd5\x82>\xa4\xdb\x9f\xb0\xd2\xa7\xbd\x95\xfa\xcdu\xba\x7f\x13\xcf\xee\xd9\x84\xfa\xf6\xf4\x9e\x0d\xca\x9b\x7fc\x99UE\xd4\xf7[\xe1\xb1\xfd\x18.\x97\xe9\x9d\xe8\xe0J\xd7{\xad\x84\xf4\xb9k\n\\\x83,\xd4\xfd\x1a\xc4C/\xc5\xeb-n\xda\xe2y\x95^t\xc9C4r\xc7\xe5Pnnz\x90N\xca+\xad\x8bF\xfc\xa3j\x954\xb1L\x18\xc7J\xcc\xd0N\xe5!\xb6\xe3\xc26$oX\xfc\xce\xa4\xb2\xda\x1aYV\xa7^\x17\x96\xecAU\x0d<\x93\x91[5\x02)~cx\xd3u\x94/\x0e\xfa\xff(\\\x1a\xc8.y(\x90\xaf:8\x02\xaaU\x94\x04\x08/\xa5\x9f\xf6\xae\x074\x87$\x8b\n\xc2\x90\x0d\xfa\xb7\x08\x9c\xd6\x92J\xe4\xea\x9b\xe9/\xd9\x7fZ\x84\x11\x1e\x82\x8d\x04\x0cL\xd7u^\xe7h\xe6\x00\x1b`\x15\xb9&<\xfa\x8du5\xd9\xc3\x03\x88d\x12\x83\xee\x83[\xfd\xdec\x8c\x8dyU\xd0\x08[F\xd8J8M\xf0\xad\xeb\xd4\xbf\x13\xfb\xb7\xdaA\x9a\x0e\xe3\xad\xd6F\x07\x81\xad\xed\xd1\xb3\x156:\xc6\\\x15\xe5\x9ci\xeb\x8ax_g\xf4\xd1\x87\x98~\xe6>y\xd2\xb9/\xda]2\xb7f\x05t\x8a\x0e\xc8\x1a#\xd6\x97G8\x02\x90K\xd8\x9eh\xa3\x0d\xb7J+\x19\x8a\xe8\x8dh\xf0#cC\xaa\x0b\x0eF\x9e\xa6\xb0\xf04\x96\x93!\xb3\xa1\x03\x83\xc6\x04N\xd0\x9bjo\xbc\xb1W:\xa9\xf6\xcc\x16\xb4\xf8\x0e1\x13]\xcbh\x03\xeat\x10,\x9b\xc8\xd26\x8d\xc4\xdd\xf1\xea\xdbx\xbfE\xfc\x19(?I\xe3\xc3H\x8b\x16e\xea\xeba\xbe\xca\xba\x05\x02:\xbboS\xae\xa0\xed\x85m\xc3YRy\x94\x14\xd3`q\xa0R\x87+\x96\x16\x9c\xfd\xf8F\xe3F\xec#4\x1c\xe6\x95\xbaJ\xa3T\xbfI\x80n\x0cD5\x0f4\x99\xfbl\xe7{\xcf\x0b.hA\xc2\x85\xa0H\x82s\x12\xc6\"\x02\x1b\xbe\xffR$T\xbcg\xee\xee\xeb\xefQ\x80y\xb4Z\xa6\xe437\x80\xe3)\x97E\x98\x95\xd3\xbcX\xf0\x8aww0\xf5}X\x96\x97\xf3\"_\xcd\xe6<\xf3\x8b\xe7\x83LMz\x1d\x01\xf28_&T,\xdc9>\xdf\xf1l\xf4\x9fA\xd7\x1e481II\x12\xc6|\xa1|\x84\x07\xaa\xe0\xa7PF\x8b\xbbf\xd24\xc9\x92f\xc0E\xdb9\xbd\xd19\x07\xfa#-\x0f\x08o\xd4~\xb6\x93F\xaf\xec\xf9\x04R*\x8c\xe6\xfb\xea\xb3\x16^d\nd\xe0o\xc2\xc8 \x82P\x1f\x1a,\xb9\x93\xc5\xe8fk\x8b\xf1y\x18v\x1d+`3h-k\xbe\x07\x02\xac1\xca\x8bO$>'\x7f[\x91\x92\x96o\x0b\xf4\xe9mJ\x96\x8bDP/\xcdPlO\xd3\xdb\x92\xcfW\xee\x91\xa5\xf5\xedk\xc7\xeeV\xb7\xd3]\x9b\x0fYq\x11\xc6\x06\x0dn\x8a\xfc\xb6\xe4\xd4\xcb\xc4Y\xef\x04\xbb;\x8e\x0f\xec\xc7\xeb\xc0\xb9\xaa]\x81\x04kR\x94I^y\xf9\xf0\xe1{\x8fk\xd2\n{\xda\x04\x87w\x99\xe8KpW\xed\xd3\x0b\x1a\xa2-\xfc\xac\xdd\x9dT\xd8\xad\xbc\xd0\x8e\x954H\xb29)\x12\x81\x15^\xed\x1aX\xaa\xc8h-\x02(|\x12z\xa6#\xdc\xe0\xcf\x06\x99IL\x05\xfe\xd1=\x0e\x80\xd4uvw\x9f\xefJG6\xed,\\u\xebC\x92\xd1W(i\x025`\x8d\xd7R1e\x03\x98\xfb\xa8\xa1\xc5\x1a}iE\x0d\x0b,l\xf983bg\x10\"6\xee\x82\x8a\xa3C\x0420\x84Q\x05e\x1fSU\xf6k \xd5\x11\x99\xf0\x8b\x8e\x93\xd9\x15\xfc\xeaz\x7f\xea/\x10\x19z\xb7\x0f\xbb/`\x04\xbb/\x9e\xbdzn\x99\x85FW\xd0\xaa\xf4\xcb\x17A\x0c\xe7\xb0\x0f9\x8c\xc4\\\xa4\xf5\x87\x94Q$)\x8c \xf2\xcd\x95\xd4\xb1~\xdc\xf6w\xafF\xe6az\x18\xa62,\xa7/\x0f\x02\x12\x1f\x15a\x92\xa9\x89\x1c\xe7i)\xcdr\xfclh\xa6\xc5\xa4\xa4E~'\x12\xcd+\x82\xf1\xf99\x7fE\x82\x98Dy,\xa2\xc9\xd8N\xaaF\x1eVxZ\xb5\x86B\xb2q\x16\xe5\xa2\xb7\xa4\x95\xf6\xe5\x0b8+:}%\xe5I*\x13\x87 l\xc5\xb5\xa1rD\xab\xe4)\xef\xb2HJL\xd8\xfb\x0dn\xe5\xf7\xdcZW+\x9cg\xa8\xff\xd2\xab\xb8\x0b\xedC\xb3\xef\xc4\xe4A\xdc\xaeoU\xec\xd8\xad\x84RpY\xf4]\x16u\xe7\xe3\x81\xe0\xb0\xe3\xd1\x8d\xfd@d\x14c\xff\xa8\xe4C\xb4\xb9%\xb2\x81\x8a\xc6 \x15\x7f \xf7\x1eII\xe6+\xbf\xd9\"X\x1b\xf9\x8a\x871\xf5\x0c\xc4\x87\x99\xa6\xd2\x9f\xad-\xe5x\xf71r\x80[\x9fJn\xeeC\xe1\xf9\xca9\xe5^\x08\xa6\xdco\xad\x03\x97\x9br\xb9\xa8\x14\xa9\x12\xc1\xd8\xf3+,V\x19\xe3\x15\xdc\xdc-\x1e\\\x81\x0f\x17\x1cT\xecZ(\xe89\x8aO\x00es\xd0A\\\xf5+\xf8\xe0\xad\x01\xec\xc1\xd8\xd5YD\xfd \xf1\xcc\x90{\x07\x7f\xb7\xb6 C\xde2\xb9\xa2dX\xea-gB}\x8cfZ\xba\xd78\xcd\xfcj4gsv\xed*\xef\xf6\x91\x1b\xbfXi!\x05\x01\xa8@Y'\n\xf8kl\xfa\xba\xdb\x8d\xfciX\xd2\x1f\xbb2T`\xa6\xd4\x88\x8a\xcem$\xaa\x03\xc2\xae\xb9\x03\x92\xdf\xdai`-\x8d<\xcc\xc8-\x84\xfcf\xb11\x016\xba\xe0\xce\xbc\xad\xb9\xe6s\x930\xd8p\xe7\xfc\x12\xec\x8ew\x00\x8d\xbe\xd9\x8f\x06-\xe05\x1c\xa0\xdeY|\x9f2n\xf6V#\xfaX~N\xa6(\xe1\xa2ok\x0e\x0e7\x08\x9e\x94f}\x0c\xbe\x86\xca\xc5\x87\xc4\xcb\xe2\x8b\xed\"A|^\xeb%\xd7u\xd1\xb5\xbd\xac8\x01\x95\xc22e\xaf\xfej/\x8eg\xb4R\x98\xbf\xef\xc9/\x9e\xe7\xc3T\xb9-\x1e\xb4\xa67M\xa4\xc8E\xe9\xc6k\x03\x15\xec\x19\xfaP\xf6F(_\x05>\xc7\xcb\x03\xe5\\\xc4\xa8+r\xa6\x18\xe6\xa4\xf2$\xe4a\x87\xf9\x17\x97\xb7^\x7fSk\xd9\x1d4\x9ake4\xa6Ad\xd0\x17\xf0Q>\"\x06\xa3<\x83\x9e<\x01\xaa\x10C\xb8\x06-\xe2Hb\xe4\x98\xa59\x06,\xfc\xd5\x15\x07\x84\xc68\x16n\x8d\xbb\x07\x8d\xf3\xd6\xdawj\xa4?\x0c\xb6\x0c\xeb\xca\xb1\xb2\x86:\xcc\xb2\xa0j\xf9PD\xcfo#\xd8\xc9g\x9b\xbf\x8a\xf87b&;\xc1\x91\x8b\xcd\xcd5\xf4\x8a\x0e\x83AtZi@l\xe6\x93(\xa9e\x05\xe6\x0c\x95R\xf4\x8a\xa3\xcd\x92\xcf\x1b:\xfd\xcb\xf1\xc6\x82k=\xa1w \xbc'\xc3\x1c\xbb2\xd0'\xce\x86\x0f+\xd8\xdc3\xc9\xd3\xd8\x93\x07a\x9a\xf2\x83\xa0\xe4^\xd8\xe4\xee\xe3;\xa6\xf2\x92\xe6\x83\xe30\xd2\x82\x1f\x00Mx\xd9\xdc\xc4\xac\x1dG\n'I\x18\xb9b\x11\x0b$\xa2\xaf\x89*\xe7\xf1\xecb\x04qN`?l\xe7L\x1b\xd6\xbb(\x08)&\xee\x94\xc8T\x9c|\x10\xcdW\x99\x85\xd1\x92\x0f\xea\x0b\x05DP\xf6\xddy\xb99r\xbf\x88\x87\xc1}\xb5B\xbb\x88\x99\x1a\xdc\x1c\x8c \xad\x16-\xf5\x19\x036\xd5\xc0\xc1\x0b\xae\n\xb9\xa3\x81S\xdau\xf4\xca\x83\xbd\xa6\xb9\xf9\x1e\xb2\xd4ZW\xa9\x87\x0bhn\xa4Z\xb4\xc8H^\x86\x06fM\x07\x9d\xc2\xa7\\\x8f\xb4\xbc:\x85*\xf1\x96\xb6\x07xx\xf0\xc9\xd5\x1b o<6\x0c\xb4=\x92\xa28\x9c6\xebJk\xe1\xe9\x0c\xc2\xca>A~\xb7\x171\xb3s$e\x1e|p\xf8pZ.\x92\xf4gF\xe8\x08\x0d\xad\x84\xc8\xb5\xdbI\xa3\xfe\xa8\xb7{\xd5\xd4\x1b\xdc\xda\xa8\xcfW\x1f\x1c\x8d\xe9\xe6}\x85\xa4\xacE\xbfBYI\xcbX//\xe3nH\x18\x07\x8e\x0f\xce\xd1\xf8\xfd\xce\xce\xce3\x8b\x8f3ho\xf0*\xb9\xd7\xfd\x99\x85E\x10\xb1\xb4\x9e<\x11\xbf\x82yX\x1e\x0b~\x0bl\xa1C\xa5\x9b\xe8z\x99&\xed\xd2Wh(\x07{\x03s\xfb\x16X\xb8\xf3\x0d=\xeb\x08\xe0\xd5/O\x92Z\x90\x1bsU\xdf\x94\xd4\xfc&\xdb\xed\x9c\xe3\x92\x0e\xa6\x9a\xbc\xa4\xc2\x8f\xce\xfaN\xcb\xaf\x88\x85\xe6\xbd\xe2;y\xce5\"\x9c\xb4\xee\xe5}P\x15G\x97\xc9\x92\xf4a\x07.\x01h\x1e4uP\x90\xc30\xcbr\n\xac\"\x1f\xd8\xafB\xdcp\xea\xac\x88\xd6r[$i\xbf\xa3C\xb2\x9e\x1b\xf0\x1b\x18s\xbb\x8d\xfd\x86\xc1#7\x88\x0b\x85\x8d\\\xa5\xab\xd01:W\xa1_V\xae8\xdd\x02\x17\xb4P'4\xb6\x1fi+$\x0d\x94\xe2\xdc\xed\xaa;L\xf0**Y\x06\xd3\"_\xe8\xf1\xe3\x00DH\x05\xcb\x16D\"\x85\xebWpT\x8dT\x18\xe3\x0b\xf6\xf1U\"@FmsEX\xbc\xe1\xd1$\xd3\xcd\xdak;\x86\xac\xaa}\xe1\xf9\x90\x0b\xb9\xfb\xfe\xb0\xb3[R\x03\n\xc8\xf0\xa5\x0f\xa7\x94\x14@\xb2\xd8\x16d\xd3D\xdd(G\xb4\xc5y\x86\xd8\x8b\x19\x9e\xdc\xab\x16\xe7m\xe7\xd2A\xb9\x9e1Y-\xc9'\xb4\\$\x80B\xdc\xd4\xa4\xf2>\xf7\nN\x1az\x80'\xe1\x1dn\x15>\x11\x98\x1bQ\x0fF'+Q_\xc0\xf1\x8c\xd1\xa3\xb9,A\xb1\xa3\xc989\xd4\xbc\x8er\x0dm\x1eg\xeb0Mb\xc8\xf2l\x8bW\xbb-N\x1a\xe4s\x1c\x0f\x95\xc5\xb9/\x8e\xe6\xbc\x87\xcdy/xJ.\xf9\xd0v\x10\x10\xb9\x069\x97\x99\xf2\x00\xd2n\xde$\xc0B\xc3\xde\xaf\xa4A\xb6\xf5AU\xae\xdek|S\xd5}\x078\xd1o\xf4\x8c\xd7Axw#\x17E\x8b[\x82{Jl_\xda\xe1\xc2G>F\xf2H}\xbeVz\x18\xf6\x8a\n\xee\xb2\xa4\xda\xa0\x8c\x88\xcc\x95\x0d\xcf\x15\x03,\xce#\xcc|\x9e\x94F\x18\xf8\xce\xc2\x18\xb9@>\x95\xd8j\xd3\xaa\x1b\xc9\xeaF\x0b\xb8:8\x12m\xde\x0c\x9a\xcb \xed\xfd\xa6\xeck\xa7\xc3GR-\x18\xc4\xed\xc1\x05\x0c}p\xc3=\xb6\x19\xd8Z\xfb\xfc\xdb\xb8\xe0n`\xc3\x1d7\x02\xc3\xcd\xbb\xfaH\xb1\xc2\x08\xf4P\x84\xda\x83\x07\xce\x08\xb2\x1eY\x85\x90<\x8c \xe9\xce\xc8v:\x8fgo\x07M\x1f-\x86S)\xca1O\xc3\xc8\xc8\xe4\x1b\xf3Z\x85<\x9b{\xd0vs\x06\xb5\xa4G\x95\x94\xacj\xfc\xd1\x89\x9e\xcb.\x8c\xb5\xf2A\xa2\x8cvL\xa0& \xc3\xa0j\x10\xf1\xa4\x11\xee\x1c\x1a77\xbb\xea^eCjo\xf0l\xcdV\xda3 \x1b\x16H\x9e\xbflm\xf9\xca\xad(:\x82\xac\xef\xcb\x14\xa9\x07\xbe\x19o\xcf\xda\x02\x13\xbc=\x93$q'\x11X\x12z\xd4\xba1\xef\xa6\x95\xd0\xd6\xd2\xe2\"O\xb8\x99\xa2\xf9\xbb\xfc\x96\x14\x87a\xc9\x8d,6\xdc\x893'\x9f\x19w$\xee\xdd\xd9\xff-\xfc\x11\x96Q\x92\xb0\x1f7I\x16\x16w\xf8+,\xc9\x8b\xe7\x98+*\x9f\x8a\xff[OE\xb1\xdd\x17\xe8k\x17k\x90\xbf\x8b\xf0VQ3r l\x82\xe3xZ?P\xcf\xa8\xb2\n\xd0Ng\xe9`\xb2\xde\xf3\xe8d\xb2G]W\x83+\x83\xf2\x81I3\xd7\xca&5X\xe6[\x93\xda\x89\x91\x83&U\x9c\x83\x91\x91\xe2F\xae\xba\x97\x93\xee\x18W\xe3\x80h\xef\xdd\xe6\xe8\xbc&\x84]\xdf\x87\xcf\xc8\\\x85J\x15\xd7C\x1e\xe3\xc4\x19\xb1\x96,\x96)Y\x90\x8c\x92\xb8\x87\xb5\xa9/\xe7\xb8h\\\xfdF\xb2x`g\xaa\xbb\x8c!{\xdb\x1a\x90 \xa9\x02\xc2\x055\xe2\xeeW\x11\xbd\xdf\x8b\x99\xa8\xcd\xbf\xa1\xe9$\x83{\xa8\xaf\xee\xa8\xa5\xcc\xabP\xf1MQ\xab\xb0\xc8\xcbc\x8e\xe2p\x87\x16R6\xcb\xd8\xad\x06\xd2\x192S\x80\x07q\xad\x1f\xb4S 7\xfdJX]\xd5\xb9\xaf\xd2\xb2\x19\xbf \xcc\xb3\x88TB\xb7\x0e\xd2\x8d\xd6*G;\xbe\xa2\x9a\xd5\x16Q\x83r\xa8\x14-Fe\xe0\x16\xacT\x97\x8c\xdb\xee^\xdbJY-\xd3\xd5v\xa5\x84\xae#\x14\xd1\x81\xf6\xd8\xda\xdb\xbcl\xf4\xc7\xca\xe7Z\x9aw;\xdb\xc7\xd8\x8d\xf7\xdc\xf9\xf5%\xf7Z\xfe\xd6\xb6\xe9*S\xf3ToZ\xae:O/\xbf\xcb%%Y\xecz>\xd0V\x0c\xf8\xdf\xd5=U\x03\n~\xcf\xa0\xd4}\xb6\xf3\xcac\xc7\xe1\xf1bA\xe2$\xa4\x04\x13w\x87\x85\x0ex\x8c(\x83F\x04\xf2\xbbf\xe7\xbf\xb9\x1b\x99\xfb\xe2\xf5\x8e\xe7z\x95\xdbN\xc6-a\x98\xc8\x17\xafw\xbfa\xa8\xeb\xcam\xfc\xcb\x1ds\xf0\x84\x17\xa6\x88?\x99\xfb\xea\xa9!\x86\x97n]-\x0e\xf6f\xc6\x95)jSWx\xa0R*E\x867\x9a\xff\xc5\xb4\xa1.y\xdf\x05\\W^\x1b\"_u\xa5\x0f\xb51\xa2\x12\x9f!\xb4\x98W6\xcb\xe1\x85@\x86\xc1W\xb9A\xb0W\x9b\xbaF\x9a\x93\x05~F\xa0sI\xf4p\x11y\"\xce]\x04\x7f\xd8\x83\x1d\xc6&\xb0\xb4\x914H\x96vN[\x90\xba\xa5\x1by\xde\x1b\xe0a\xee`s\xd3p\x1d\x85z>\xaa\x94\x95rq\xc2T\x1c\x8d\x13z\xe5C\xe1N\xbdz\x8c\x1a\xbf&R\x15w\xc9\xdf\x00\xcd\x0d#\x89\xd6i$\x05\x95Z\x07\x86\x11\xb5&\xd1\x1b1\xd3\x8bHaJ\xc2\xc4nD\n\x8aT\xb8\xf1\xe1+\x97\x12tw\xaa\x06,\x967\xce#\\r\x11\xc0\xe1\x92|\xa6\xa7yL\\\xc7\xe9p\x1cn\xd0\x00QT\xaf\x06\xdc\xaf \x83\xd3\xc1\xe6{\xf2\x80\xe7\x97\xeb\xdc=\x16\xb5\x9d\xdfC\xfc_f\xfd\xfe/\xb11\xe3W\xb3D\x05\xad\xd6\x9a\xe4\x94E\x8e[;Z\"B\xf3\xa3\xca\x8f'8\xd1c\xd0\xc8\x077l\x1e\xc4!\xe5\xe1|\xf6`s3\x81\xff\x80\xa7\\\xdd\x01k\x0b\xcay2\xa5.z\xa1\x10\xe2\x17ix-(\\6\x82 \xad\x96qH\xc9\xbb\xf0\x8e\xcd\xf3\x00*\xd7@\xb2cD\x0f\x83\x80u\x19\xde\xa5y\x18w\x84\xfb\xa9;\xf06I)\xe9>\xe5{:`\x10\xc9\x0e\xeb@9\xcfo\xfb\xc9C\xc6\xa0\xb6|B\xf5\xf8>\xe7\xc1\xb4\x94\x04#UE*\x17\xb0\xba\xfby\x06\xc5\xb6\xe1\xae:\x86ke\x1b\xb3\xd9\xc8\x14\xbf\x8e=l\x16\xb2\x91\xe1.\xc5f]\x88s\x17\xcd\xc3lF\x84UW\xff\x0c\xdes\xfe\xda\xbe\xe3\x1d\xe7\x11\xa70|\xe4)\\\xe41\xb9\xd7\x0c\x9a\xb8/c\xd0\xae\xf6\x06vR\xdc\xb1\xd7|\xf7\\\xf37\xa7\xcd\x9f\xb5\x91\x81Vr\x8a\x1b\xcfi\xb3p:Z\xd1\xca\xb1\xc1:m~\xae\xc2J2;\x83+\xee\xa2\xf2\xbf\x1ea\xe2\xf5mH\xc9\x8fd\x9a\x17d\xfc\x99D+\x14l\xd2 \n3\xf1\x8a~.y\"k\x0cOR%m\x1e\x96?\xe5\xe2\x12\xa6\xfa\xfeKB\xe7'\x84\xf2Y[\x86E\xb8 \x94\x14\xe6\xd4\xe3,JW%\xab\x94P\x9ad\xb3\xb7ya.\xf6\xe3\xddqL2\x9a\xd0;\xfc\x1e\xa6i~{Y\xdc\x1d\xd3\xb3\x15\x95\x85\x16\xec\xa8\xafn\x0ddj\xa1\xbf\x96\xcb<+\x89\xb9P\xa9\x16)\x1b\x05\xf8\x1b\x0dg3\x12\x9f\xc9\xb1\x96\xcd\xa1\x97\xac\xbb\x97\xe1\xac\xca{Dh\x98\xa4\xd5\xab)\xfby\x9e\xd3c\xaet\x87r)\xca\xa3Z\x88\xf6\xe6rzo\xc2\x92\xbc\x0f\xd1\xacO\x00@Rw`\x9ad\xf1Q\x95\xc6+!\xd1\xaaH\xe8\xdd\x91\x96U\xa6\xf3i.\xf2x\x15\x89\xa6\xa2<+W\xb2\xdd\xbc9\xc2eH\xe7\xb2\xfcb\xcd\xfd!I\xe3g\xfcM>SRdaz\x94G<_\x92M\xf9^M\xca\xb3\x83\x8bg\xbc\xec\x92D\xd5\x8f\xff,9\xa8\x9c\x932O\xd7$\xbeX\xdd\xd0\x82\x88\xe6Y\x06\xedC+\xbdQS\xf5r\x91\xaf\x8a\xa8\xce|Ay_WE}\x19\x8b,\xaf!>\x82\xa2\x15\x94\xb9\xafLA\xdaQ\xa5'GyA\xd1\x0c\xf1Wt\x87\xf8+\x9aH\xafn\x13cm\xbf\x97\xd0nVa\xb0\x1c\xfd\x08\x17\xecL\x9d\\1\x96bF\xe8q\xe6N\x9c\x05\xa1\xa1\xe3\x83\x83K\xe6T.\x9e5G\xb5\xd4\xf3a\xe2T\xdb\xact\xae<\x1f\x0f\x8d\x12Eh\xffy\xe1\xb9\x93+\xcfC\xc8\xea\xb1\x87\x94\x97\xa0\xc1I\xb8\x0c\x92\xf2$\\\nE%\xec\x93\xeb`\xb0\x06\xaf\xd6\xf4\x16\xc9I&\x12\xb5\xb9A2\x81\xf7\xe4$\\z*9\xea\xab\x98\xe1g\xae\xe0\xd2\x7f\xf7a\x9a\xae\xf7Bj%)\xbf \xb1O\x94\xe7\xf1\x0e+\x93%\xa7\xea]RR\xcf\xf5\xbc\xa0 l\x1f\xb9\x8d\xaet\xdd\xc1\xc8\x08\xa4\xb1\x081A\x959\xd9\x97o\x88\xb8\xaf?/R\x87[5\xd4\x89]r\x19F\x9c\xbbj}\x9b\xe0\x04\x0el\xca\n\xf8r0\xb0j\xce\xbb\xbe\xfc\xffP\xa3\xa87\xa7\xbe<\xe6AX\x8e\xb3\xff\x1a:\x87\xf1\x84|\xf2\x83\xa4d\xffT\x81$ \xca|A\xbe\x11f+\xe0\xd4\x94\x8d\xfbf\xe4\x92\x07\x1d\xba\xf49>\xa5$\xa3,\xc9\x0c\xabz\xc7\x14\x08}\xd3\x9aH6\xd5\xb1K\xbcj\x9f\xf7\xed\xef\xd6~f\x0b\xda&\xd5\xb8\x8b\x92\xfb\"\x8f\x81\x953Tz\"n\xceZ\x1fQ\xa7\xac\xb5\xb5x\\]r+vW\xbb\xd8\n\x1d\x93`1yb]\x8bM\x811\xd2\xcd_Fp\x89\xd1\xf30j\x15\xcb\xe8,V)M\x96aA\xb7\xa7y\xb1\xd8\x8aC\x1a:u\xb6\xbcX\x1c\xb1\x14\xcc\xcapE\x12\xe1q\xb8\xfdy\xeb\xf6\xf6v\x0b\x8b\xac\x8a\x14\xaf\xd7I\xecT~\xda\x8d\x04\xb96U\x06h\x14\n*\x15\xc0\x189\x1aI\x894\xf2\xe5\x9d\x00Z\x1d\xe3\x87\xf5\xe1\xde \x83&dy/\xb0c\xc7\x8a\x9c}\xc3\xa1\xd2\xc6*\xd1\xaa(HF\xdf\x0bR\x84\xd3e'\xcdS\x19A\xc5\xfd^\xbfrY\x99y\x04~1\xf4\xd2k\xd6\xc1\xce\xff\x893#\x14\xe1{\xc5\xff\xe5%\xfe\xe7\x1e\xba\xd8\xaf|\x89D\x0f\xfb9'a,\xf6B4g?\xd0\xcb\xa6\xa3E\xd2\x88z\xc5\xde\x15Wf;\xd7\x00Z\xf7\x9fS\x1e%M\xa5VX\xd1P\x08\xcb/HJ\"\x9a\x17\x9e\x1b\xf5\x05\x82\xac\xb0\"\xee\x8b\xaaBM\x9d\x9fs\x04\x9cHz\x94\x86V\x85\x1e\x15\x9d7Q\xd3d\x8f\xd2\x0c\xab\x8e\xa3\x0cG\xf7\xfc\xef\xeb\x04\xe1\xa35\xc8k\x14\xcdf9\xdd\"qB\xf3\xc2\xd6\x01A\x9e>J\xf3\x7f-\xf3\xac\xa2>8\x18\xe9\xb3\xacm\x86%\x87$\x8dp~\x94\xce\x14\xa2\xbe\x9e\x0e\xf9Vz\xbe\x97\\R\xdbC\xecSh\xccB\xf7\x11\xc5Qr\x8b\xce\x91\xcd\xca\x80\x89\xc3\xe8\x03~M\xa8\xa6d\xdc\x8f1\xce\x05\x8f\xca\x8a \"~b\x19\x9c\x151)H\xccg%X\x90bF\x18\xc3S\xd3\xa9#\xdd\x16K[\xbbx\x08\xb3\xf4mK\xd9\xdd\xd3\xa5\xdf\x00<\xcf\xd7\x97\xbeZ\x87\xf6\xaa7\xde\xe7*\xff7\xa8c\xd3\x96\xbaC\xb3\xc6\xb5\x88#)\xb9K\xf34\xcc\xfd\xee\x0b\x16\xd1\x98n\x0f\x8a0+8\xd8\xfe\x8a\xbb\x86\xf1Wi\xaf#\xc8\xcai\xde\x9e*m\xae\x16|d\x1aG\xfd\x98\xddP\xab6\xac\\\x83\xb57\xb7\xbb\x1e\xd8\xae\xda\xaa\xa8\xb3u,h\xc3\x9f \x84%\xe5\x0c\xe6\x0e,\x06v`{\xbd\xefNv\xb6^_}\xe7}\x0c\xda\xbf\xb6\x93\x80|&\x11#p\xb8\x0b\xb7]\xd3lH\xe9\x87\xb9+\xf1\xc0\xae\x10I\xeb2\x02\xaag\x12\xee\xdaB\x18s\xe3\xb3\xbe\xc6\xf1\x0e\x9a\x07\x0e \xca\xe4\xef\x04~\x80]\xaf\xb9\xfb\x05\x17\xdbf)%\x03\xd7\x93\xad\xb9\xd6\"\n\x1d\xec\x83K\xda!\xe9H\x87\xca]\xdd\xd5\x8d\xaad\xd5Uk\x18bc\x1bV\x83\x1c\x10F\xae\\\xb3\xb6\xf0d0\x15\x97K\xd9\xf0\x9a\xb7\x8f\\W\x1f\xb6\x9a\xbd\x9a\xf2\x0bB\xe7y\xdc\xab\x9f_-\xb7U\xa6.\x9f\x84U\xc6\x18\xfb-\xc6\xd8\x9bU\x07\x80\xc3\x95\xe5J\xdat/\x8f\x87\xf0\xa8\xb9\xda\xfanh\xbc\xdf\xe8r\xc3oCR\xbc\xe1\x0bB=\x974\xd9\xb8\xbe\xe3\xe5Z\x97f>vGd\xd5}\x1d\xb9\x95\xc8\xab\x12\xb2~[O$\xd5)\xeak \x9e\x0c\xc8\xca,\xf8}\xd4n(U\x1b\x89\xfc\x968\xba\x97\xd0\xab]\xbfY)=d\xd3\xeav}\xa0W\xbe\xd031\x82xS\xb0!\x08g[\x15v\xb5\"\xd4 F\x99D\xeb\xa6\xdcoI\xe2\x1fe\x96\xd5.\xda\x85\xa1P\xcd\xb6r3\xf0(\xed\xcb\xfa\x8cK+\xee#\x1e\xa5!V\x97\x99I\xac.@\x1e\xa5\x1dQ\xdd\x006\xa5\xfbf\xc6\xdc\x99;\x1fn|\xb8\xee\xbe\xceku\xac\x11\xd8\xdd\xaa\xc5Qe\xe7\xd7\x8c\xaeSu\xd0\xe9\x9b\x02\xf9\xa0\xd7\xa3\xae\x0c2\xd3FS\x18\xda\xaf\xb5\x06j\x07o\x13:\x97\xaa6\xe5\x80\x91\x19+\xd1p>'Z\xe4\xd0\xab\xf4\xa1#W\x1f\x03b\x17|\x8ekP\x11\xd5\x9f\xaf5\xe3S\x1f\x04\xcd\xdeU\xe9\x8f\xdc;\x83E\xb2\xfe|m\x85\xb6o\xe7\xb0~\xb6\xfbpnt\xca\x80|\xe4c$%\xb4\xbd\xa5\xa1h\xae\x97#\xeeC\x1fe\x8b\xb3\xbaz\x0f\xc7\xc6\xfbg\xd9\x87\xfa\x8a\xb6\xf7\x94\x92S\x82~\x81*\xc4\\]\x02q\xe5\x01W\xd9G\x83\xee\xcf\xa05\x1a\xe5\xc6\xcc\xa0?\xd1\x89\xc6\x9a\x83\xbc\xd0\xd8\x08\xe5z\xda<\xed\xb7>\x8c\xfd\xc1\x13A\x06\xdf{\x81r\xc6+`N\xab\xf3YEl|5\xaflJ\xb7\xf2d\x0e\"\xf4\xab\xcfH\xf8]\xf4\xcc'\xf7\xa2\x10\x02\xe9\xf0\xd0\x07QZ\xfdD\x06\xce\xb2@=\xc6A1\x8c\xbf\xd32\\G\xe8\xd9\x03\xfb\x08C\xfb \xf6\xed\xff\xd5\xea2\xf4^\xcbZuC\xb9w\x94w\x8c\x1d\xfb\x11TPn\xc8\x9fz6\xee!'\xb1\x0d\x8a\x18\x83\x10F\x95i\x10\x9c\xe2x\x0e\xf3l\x9a\xccJ\xb6<\xf6\x85\xc5\xcb,\x06\xb8\x17yAM>\xd0\xe5\xc3\xfd\x10\xd7{\x92\xe7\xef\x04\xf5\x0b\x94O\xe4\x05\xfd\xf1n\xd8\x9a(e\xcd\xee\x00\xba\x02\xd4\xea\x8f\x9c\x0f\xa3\xdej!t\x1fV\xd8?R\x94\xca\x1cL\nK\x14}P\xe9\xeb}\x90]\xe8\xb0\x11\xff\xea5)\xa6>\x0f\x0c\xf2\x9e\xdd\xd8g\xe9\x83\xbc\xee\xb3\xbe\x1a\x93\xbc'^z\x02{8t\x8aU\xb8\x05^\xd0\xf7\x0eV\xc1\xdb\xdd[\xbb>\x96F\xdc\xd9[\xd6\x01z\xa0\x8a\x0e\xca\x11$\xf7F\x04\x86\x9d\xd9\xdc\x82\xbe\xa6\x07e><\x86\xca\x9ck\x192\xaf\xf0~\x17\x1a\x9f\xf0LST\xb4\x1e\xa93\xbc\xbe>&\xa1\xf1~\x80]ik\x90=J\x8f\xb4j\xef\xd5\xb13\x8e#\x9b\xban\xf7\xe0O\x0e\x95\x1b_\x96U\xb2\xc9&\xa8P\xb4\xeb\xee\xd1\xc2\xa7\xc1-\x98\xb4\xfa\xee\xd1\xd0\xc1\xe0\x86\x0c:\x85U;\x1d\x0dh\xc6)M\xbd\x10\xa3\xfa\xe2\x90\xdeK\x04v\xef\xbbw\xa3JW\xf3|5\xa3\x92\xfcA\x8a \x03\x9b\xb4\xcaW\x8a\x81\x9c\xb0\x14E\xe7\xb89\xb2\x06\x9d,\x15\x9c2y\xc9\xe2\xd8\xc6\x08\xe2\xa4\x1eX\x0b\xa6\xcd\xc3r\xce\xc5\xac\xf8\xf30\x8f\x89q@\xa0\xe3y\xc3\xa5\x9aXq\x93\x11\xca\x03Y\x85JQI\xed\xb6Y\xf7NMi\xb7o^\xb7N,\xf3\x9ec\x99\x1ee^\x1d\xda-\xc2y\xe9)+\xab\x16\xc2@\x13\xa9c\x7f8\x98^'\xb2\xa3\x0c\xab\xe6\x0cf7\xf4{\x1f\xe3.\xbe\xffh\xfe\x19\xdb\xf7\x1b\x01\xa5\xb0\x80\xc7P\x90\xb0\xae\xca\x99\x98\x93\xdc0\x95&\xe5\xf0oD\x83\xbc\xd0\xd5c\xa1\xb8\x07T\x97\xd4\x9ah]\xba\xa1\x0d\x04\xd7y1\xa5N\xa4<\xac\x0c\xb8\x02p/Z\xd7\xc1\x8e}\xd0\xf7\x17\xf2i\xcd\x0e'\xfa>W\xf5\x93k\x1d\xff\x07Hj$\xdanH|\x8d:r\x06\x17<\xdc\xcc\xb1V\x1a\xc5\xf8\xcf\xce\xb6\x08K9\xd9Q\x02\x12\xaa\x11\xa2do\xe0\xd2\xde\x9f\xff\x81*\xa9lRz\x95R\x0d\xb3p\xf2\xaf\xd155\\\xa3\xa0\x99\xb2\xf4\xf1\xd2\xb9\xbd\x1f\x88\xd0\x85\xccU(y^y\x9d\xf7A\xb9T7\xe5#\xaa\xe5\xb5;\xbd\x97@x\xff\x83A\xac\x1a\xaa\xa0x\xa7\xd4\\\x8a\xdf\xb5\x7f\xb11\x1e7\xe5p\x95\x05M\x1f\nl\xcc\x8fP\xaa\x0b\x16!\x8d\xe6\xee\xf6\xffq'\xe1\xd6\xdf\xaf\xd8\x9f\x9d\xad\xd7\x9b\x1f\xb7\x82\xab\xef\xbc\xd1\xb6E\x0b\x97\xbb\xa0HJ\x19\x90\x80\xb1\xed\x1c\x92\xb3V\xd0\xc1\xd6)\xcb/P$\x8a\x14\x92\xef\xd6G\xe7Z\xac\x0f\x1f\x9e\xc33\xe6\x9ar^\xc3\xf6\xc1`h\xd47%\xa2s\x13gN\xe9\x12\xd54)]\x96\x8a\xb7\xac\xe3\xaa$\xf7\x90U\xb7\xdce\xf4\xd4)\x0d\xe9\xdd,zd\x8a\xc7\xa1S\xecF\x19-\x8d\x07\xdb\xe6Rp/z\xdf,M\x96\x03\x02\xcfJqj\xe5\xfa\xd1\xa0\x0b\x93\xa9\xeb\xd8\xc65\x7fm\xf7\xc4\x8c\xd6\xf61\xde#W\xf3> \x97\xda\xb6\xf9\xaf\xb7\x8d#\x8a5\x9c\xf8\xddp8\x98\xcf\xd4\xd7\x92p3\xf3\xa6W\xc2\x92\xd0\xd6+\xe7\xc7\xb9E\x12J\x80\xc7\x8b%\xbdC\xfb\x9f\x8az\xc6\xaf\x12N\xf1\x93\xb4\xa8\x92\x89\x9a\x16\xe0a\x18\xcd\xd5:M\x86S\x82O7\x7f\xc2\xb4\x0bi\x9c\xb5\x0c\x8b\x92\\\xe6\x95U\xd5\xc5\xf8\xf2\xfa\xe2\xf0\xa7\xf1I\xc3\x9c\xfa||q\xf6\xee\xe7\xf1\xd1\xf5\xc5\x87\x1f/\xcf\xc7\xc6oj\xda\xd9\xfb\xf1\xf9\xc1\xe5\xf1\xd9\xe9\xf5\xc9\xf8\xf2\xe0\xfa\xe7\x83w\x1fx\x99\xc3w\xe3\x83s\xf6~\x8c\xf9\xde\x1f\x9c\x1f\x9c\\(_\xce\xc7\xff\xbf\x0f\xe3\x8b\xcbF\xca\xc5\xfb\xb3\xd3\x0b^\xfc\xdd\xd9\x9f\x1aYXoO>\\\x1e\\\x8e\x8fZ\xe9\xedw\xa5\"S\x0fD\xdf\xc7'\xef/\x7f\xe5\xe9\xd7\xc7\xa7\x87\xef>\\\x1c\x9f\x9d\xaa\x19\xf0\x93\x9a\xf0\x9f\x17\xcd\x0c\x1f\xce\xdf\xa9\xaf\x17\xef\xc7\x876\x034\xd8\x83\x1b7s\x9f~\xaf\x93\x9d\xb9\xf8\xf2\xea\xb9\xfe%\x91e\x9e\xe9_B\xf1\xe5\xf9S\xfd\xcbJ\x96\xd9i\x15*\xc5\xa7g\xcf^\xe9\x9f\xd2\xea\xd3k\xfdS$\x9b\xfa\xdek\xd0\x8f\x1c&/\xfaT?%\xb6z\xc7\xe8\x8e\x82,\xd30\"\xee\xf6G\xba=\xf3\xc1\x01\xd0\xf1\x96\xcdkc\xad/\xd6Fsh/q\xdd>\x1f+3g\x8d\xaej\x9e\x1c\xcd\xbd\xf5-\xb6\xf9\xa7\x1d]\x18\xe0\x1c\xe0\x03j\xe9?\xb8\xf5\xdbok\x9d\xa1\x85\xde\xc5\xec\xe9\xc2\xf8\xa1]\xe0\x06\xf6\x88\x13\xcd\xbc\xb8! bO_>w\xf4\xc5\xcc\xa9q\x95?\x8b\x86\x9e8P,\xf7?x\xb4\x9f\x86\x0b2\x02K\xf0\xa8%?\n\xac*\x85I\xf9\x97E\xaa[\xfd\x00\x0crL\x80\xf3\xd6)\x89\xb4\x1b\x9b\xfe\x8b\xa6\x0f\x87o\x9d\x1c1\xb9\xddSS\xdcsjR\x12\x16?\xeb\xa7\xed\x83A\xfb\xf8A\xf3q\"\x14D\xdbj\x1c\x03\x96U\x9av\xa1\x91a\x1f)\xdb\xd3\xfd\xbf>\xa8\xfb}\xbb\xc1\xb2\x9c\x9f\xc8\xdd\x08tS\xbd\x87\xcc\x80\xb4\x1d\xfb\x1f:\x03\x1a\x1f{\xcf\x19`\xf0\xab\x10\x96\xdf2\xf6\xcb\xc7\x1d\xbbT{\xbe\x87\x0f\x10eD\x92r\xfe\x96\x01\x9d\xfc\xb7\x18PI\xe8}\xd9[\xdb\x80\x8e\xee= \xce\x9ew \\6^\x0bx\xca\xf1\x1ad\xc3\xb6\xf16\x89\xd9iEd\xbe4\xd9\xa5e\xaen\xd1\x19W\x05Z\xf4\xe5\\|\xda}\xd9\xfa\xb4\x96Ti\x9b\xcc]\x88O/_\xb4\xc8\xdcY\xf5\xa9Ej\xdfI\xc3R\x13\x93{c=\x14dh\x1e\xd51\x04\xe9v\x0ca%w\x1a\xf3xm`\x1e\xd0\x14Q\xfa\x9fA;\xc8\xe6\x18n\xdb\xfcG\xa3\xc8\xaaH\xb5\x12c\x03\x07\xd3(\xc2\x95\xa8\x1be>\x9b\xd8\xa0F!<\xd2\xb5R\x83\xb8\xabF-\x84\xf1\xc9\xbc\xae\xfa\xfaF\xab\xf5\xd0\xc2\xc7\xf1\x8a$\xf3l\xec\xd0'\x13O\xc8\xcb\x95\x84^\xcb\x8bt\xad\xd4\x81\x81\xb3T\x0b!\n\xd3\xca\x9cup\xa9uYq\xe9m\xa9\xe3\xbd\x81\xf3\xe5e\xd3|f)ca\xa0y1D\xb9\xb6Q\x9e\x18\x99\xf1fAS\x8b\xc7\x9d\xec\xbdZ\xbesi\xfe:@\x8a\xd0\x00\x95J\xccz\xbd 4\x14\x87j\xb3\xceS\x8b\xb4\xa2QOm\xde\xda({\xde#\x051\xd6q]r\x81\x8bV\xd7Q\x05\x0c\x95\x80\xc5a\xcb/e\xaa\x8d\xcc\xef\x86\xaa\xb8\xb9;>\xba\xa8\x16R\xc5J\xdc\xa6\x9bH\xab\\zS\xe8\xd3K\xfeV\x19:\xad9\xb8\xc5\xe7\x01\xe6,\xcdGLQe\x937J\x96\x8c\xdc\x99\x10)\x8a\xce\xea\xf8\x95\x9c027g \x85{R\x83\x1c\xd4\x1a\x16\x10\xc3@\xc0\x97/\x90\xb8\x18\xb0\n\xc1\xb6C\x87\xabD\x0bqF\xda\xb1i-\xda$\x1d{\xbez\"h\x91\\\xaa\xa0\x0c\xa7\xe4]\x1e\xc6\xc6h]j4=\xf3T\xf2\xa5a\xf4t\x9e\x8aX\xfb\xe8\xf1-\x0f2r\xcbx\xf6qq\x9fN\x9b\xa7\x8f=)Y\x93t\x042\xa0\x935\xdf\x82\x94e8c\xc4GP\x90\xb0\xcc;\xcc\xe4\xd2$\xc3|\x8b\xb0\xf8\xc4OQ\xf6+`\xc9\xa8\xdb[\xbfmb\xe4 .:\xb3\xcck{\xf2l[\x05\x03\x1d)\xde6\xf7\xc0Uba\x85\xb0\x0f\xce*\xe3\"et\xf2\xc1\xb6VTo\xad\xd0\xe3&\xe0M\xd1\x88\x1bz\xec\xd0\x1fH#}0\xc4\x95\xfb[\xa5\xbf\xa5Hf; a0\xecM\xab\x86d\xe5\x85\xa8\x7f\x7fBus6`\x8f\x82t\x83\xde\xbbO\xa1\xf2\xff2\xed\x00\x8a\x15\xecA\x18L \x8d\xe6\xf6L%f\x12S\xd5\x01`\x98\xed\xe0\xc2\xc0\xe3\xc8'\xaaD\xb2\xb8\xfa)\xec\xc3?\xbe\xc2\x08R{\x91\xa9\xbcT\x14:\xc2f\xb5\xa0\x0fh, 7\xe6mXd\xdc\x91\x84\x98\xa2\xc6:7\xc2tB\x99d\x11\x81\xf5\xb3`w'\xd8\x810\x8b\xe16IS\xb8!P\x90E\xbe&1$\x19\xac\x9f\x07;\xc1\xce\x1bX\x95\x04,r~\x11\xd0s\xc3\xf1|\x0ep\xb6XW\x0c4\x18i>\xedRv\x8e10\xd9\"\x8fI*/ZN\xc2\xa8\xe8\x88*5\xc7\x12\xd5\xcdVO\xee5\xe6\x16C9\xce()\"\xb2\xa4y\x87R\xf5B\x94\xe0\x04\x8cR\xc42\xcaz\x95\xeb8?y\xe5i\xc1\xad\x9dG\xf0\xfb\xf6\xca%x\x1e\xac\x8a\xd4\xaa\xfe\xc5&\x8fq\x15\x11\x83\x88wIFNW\x8b\x1bR\xbc\xcd\x0b\xb4\xcf\xdb\xb7}h\x86\xdd0\x84\xc2\x90\xcf]\xd5\xcd\x0bZ\xd8\\w\xcb\x1b\xb7\x0eT\x8f[\xca\xe8cH>\xac\x8dN3\xe4\x9b\xb0$Gyd\xe5\x1dA\xb8\x00mB\xc8\x08b{\xf6&x\x8c\xa0c\xd3\xb7ac\x04\xeb\xae\xec-\xc0\x18\xc1\xc2\x98\xfd\xab\x17\xd09\xc9\x06\xe8WA\xe3\x8e\x95M\x98\xbd\x03\xec\xe1\xf6\xad\xfc\x1a\xd6\xae*\x9eL\xc1Mz \x0c\xa8$\x02\x0e\xba\xf3\xcf\xcc$\x06\x082\xa3y\xfb\x9f\xe1\x1do\xa6(\xd6t\x0d\x11T\xe5\xbc\x81\xda\x9a\xeac%K\x08?\xcf\xd9\xa4LWi*\xb6\xc8\xcc\xbd\xf3\x95\x14i\x15\xc0\xd2\x96\xdc\xc8\xb5\x91\xbd~ \xfe\x9a'\x99\xeb\x04\x8eZ\x04)\x15FU\xcb\xd8\x93$\xa0\xdcE\x9b\x9c7\x1f\xb5s\x84\x8b iu\xccr\x9a\xef\x93\x89\x0f\x8e kz\xa3?\xcb\xa7\x11\xcf\xaa#\x10\xa8\xfa\x08\xb9! Dc\xbd\x85\x86X\x01\xda\xa1\x8e= #\x13/qV\xc6E\xf1#j\x99\xe4\xdf`9XhWfvS\xaaVr\xcb\xfc`r\xa5\x1dGo\x85>\xda\xa2&\xc6\xd8kZ\xbf\x96\x15Y\xcdh\xc7\nh\x81X\x03\xdfQ5b\xa8\x0f!\x0f\x80\xe2C\xec\xc3\xdc\x87\xb5\x0f\x0b\x1f*k\xdf[\x1f\xc6V\x85\xa1\xba\xed\xdbb\xd0\x86\xc1p\x0bo\xdexP\xde&\x9c\xca\x0f\x96\x05F\xfc\xe2\xc1\xd0\xbb6Z\x14\x96\x04vF\xddk;\xe5\xe7\xd7\xdf\x82\xf2\xae\xa4d1d\xe3\x12\x19\x8c\xf1y7\xdc\xb0\xe7\xa6 a;\x92\x9a\xfa\xd8\xc1\x05lH\xc2\x89\xc9\x8d\x00\x1e\xe9\x05`\x04q\x9e\xfd\x9e\xc2<\\\x13\x08\x81\x0f\x06h.\x0c`\x08\xe4\x99\x0f\xe1M^\xd0$\x9b\x05\xdcaQxS\xac\x96h\xe2\xc1\xda\xb0\x05\x07\x069\x93\xcf\xfbg2\xd3yQ\xc1\xc6\x92\xa2\xa8)d\xc1\xb1N3\x1fi\xe2\xbc\xa2\xf2\xf8P8\xef\x97#E\xaaS\x9e\xa1\xa4\xfc\xade\xee9\x04\x94\xd6\"R\xe8`\xacK\x0dw\xf3\xb6\x87U\x1eb\xe8\xd4\x14\x91\xf0\x12\x91\xf0\xa2\x1fh\xe1\x1bp\xb0\xe9\xf9\x16\xbclz\x86\xe0j\xd3S)\x14\x8au{\xeaw\x99\x1b\x9a\x1el\xf9\xe9\x83[\x0e9\x91K2\xea\x0b\xb6\xbc \xe5*\xa5'\xe1\xd2\x17\xbc5\x83\xf2_\x12:?\xe4\x0e=%\xcaV\xa0\xed\xa5\x0f\x89\x9b\xe2\xf9z\xbfi\x93O\xc5tL9\x1f6\x8c\x96\xd2\x1f\x13[r\xf7\xb0\xaat\x96\xe5\xe6a\xd5\x98\xd8\x19\x83\xa2\xd2\x90\xc7\xc8\xea\xdc\xde\xbb\xaa>bQ\x7f\x10\xbc^>\x18\xbc\"\x05\xbc\x96\x88x9\x9f\xc4\x8f\xba\x88sWP\x04a\x9a\xe2 R\xba\x1e\xf7f\x86\x8c\xcc\x10n\xc9\xf6\x0c\xe4\xa2lO\x9b\xbbZ\"w\xb5\xd4\xcc\x16\\.\xa1\xb8?\xfbdz*l`b\xa0\xe6\xee\xfa\x7f\x1b\x03ez\x1e\xc2T\x99\x9e{3Z\xa6\xa7\x9f\xf92=\xa8Pm`\xba\x16\xd2\xbd\xf6\xac>WW\x885\xe3\xf6\x87\xb4\xfa\xd0\xa2\x83\x1e:\xbd\x15f\xef\x94\x10u=\x96\xa3`\x04\xf6\x08\xf0\xb6\xe7A\x88h\xf7\xfb\xfba\",\xe4\x90,v\xeeW\x0e\xd4\xcdX\xd2|i\xf1\x91cz\xba\xa9g\xf9|\xc5\xe8\xf1&G\xb6\xc6\xdc6\xc9\xa4\xfa\xb4\xae\xf0z|)\xa8O5Xs\xd0\xcf\xde:\xba\x07\xfd\x95Q\xc3\xab\x8an\x13\xb8d\x00bW \xd6\x9d\x9a\x9c\x0d\xbb\x93\xab\xcac\xcfR\x9a\xd0\x074\xff\xcf\x8b!D\x84\x15\x9c\xa7\x8a\xc8X\xd4\xd6=\xc0\xae\xf5\xe1\x90\xdb\xc3~\x8e\x95\x83\x92{-\xafxz\x1f\xaf\x8dx0\x10I&>\xed\x06\x07\xe4\xf1\xfaz\xf4\xba\xbbG5c\xf1\x1aO\x87\x1d\xec!^V\xba\xbb\xbb\x9e\xafK\xfe\x02j\xbb{\x80\x8aL\xed\xa1Sc\xb3\xa1\x83\xcb\xc6>\xae \xd3\xdef\x9e\xd9\x9b\x19\x8a\x11\x86\xec\xfe6\xd0\xab\xbb\xda\x87\x89\xb1\xd4\x841j\xbb\xaf\xafZ\x1f\xaf\xda\x0e2\xe0\xd9\xf7\x0d\x9d{\xab\xb5\xc77^\xec\xffM\xc6\xc1\xf4+\xa8\x03\x0cC\xfaV\xf7LX\xbd}m\xdb\x02\xdc\xd3\x11x\x8fJ\xdcy{\xff~\x8b\x8e\x9fT\xd8l\xaf\x99m\x80\xfe\x10\xdb\x1c+o\xfdO\x1a\xdd\xc4\xe2\xc0F\x0cO\xc5\x83\xf7\x1bi\xcb0\xe9[\xd6\xee\xf0A\xa3\xab\xb4\xa5\xcdC\xe4.\xc1\xef\xbd\x84]\xf6X\xdf\xae'\x7f\xf1\xcf\x18\xe9#\x98\x13\xf0\xb058\xea\x9f\x85\xe9\xc2\xf0iS\xb7v\xd3\xbc\xed\xc1j\xae\x03&\xa5_=\xd7\xfc\xb9`'\xb6\xc9\xcd\x81e\xc9>uAK\xc3\xb8\xef\xbf\xe7h\xffv\xaf\xd1\x1e\xf4\x8c\xb6e\xe0\xf8\xbfa\xd0g]\x83n\x18y\xf6\x1e\x9c\x1d\xe34\x8c\x857\xff\xbe\xab\xf9\x96\xd9io\x17\x86*\xe5\xd9Tn\x8aa*{\xf9P\x95\xbd\x95&\xeb6\xe7\x12\xf1\x06\xc3\xf2YOu)\x12\x96\x0c<\x18\xca3\xe7\xe1r$qW`\xcc1\xc5\x1c\x95\x8e\xa8\x05m\xc2\x1e\xacl\x9c\xc1\xfd\xb4S\xac\x9a)\xe6\xec3\xbc0\xe0\xacD\x9b|M\xa6\xe0\xce\xe0\xc9\x13\x98)\xa1\xc7\xf4w)y\xd2\x93\x85{\xd2~\xf1\x93\xa4iY\x0d\x1bBK\x86{\xc7\xaa\xcf\x89\xf6\x1e3\x98\xa5w\xc6\x0b\xcf;\x1d\x07\xb9\x93\xd4\x87\xe8\x8am\x84\x8c\xad6\xd2X^\x17\x9bJ\xd4)\xd9k\xbe~\xf9b\x8d\x1f\x00\xca\xd6P\xcbLx\xc3\x1d\x1e\x0c\xdd\x0dt\x0e\x8e\xa1\xfcv\x84\x8b\xa52\xf9;w\xda\xe1\x9a\xea\x82=p\x0c\xbe\x97\xc0\xcc#\xa0H\x07\x83\xc8}\xa6\x1f\xaa\xc8Lq-\xfa\x91\xcaH\x01\xcd/\xd0\x12\x96\xb1\xcf\x02<*\x00?\x8eQ\xc8\xa7\xbe\xefi\xdfG\xbcP\xca\xfeD\xa2\xf3\xcd\xfcY\x90/\x8fcw\xc6\xefc<\xd4)\xe5d\x96k]\x136\xa97\xb0\x07)l\x823r`\x13\"\xf3\\2v\xb6\xe0\xb1>\xca\xa0D\x1c@\xe2\x0bLro\x90ko%w\xe8_]\x8bjX\xbe\x9f\xc3\" oR\xd2\xa5\n\x05\x18,\x9d\xe5\x1eU=\xe9\x96\x08\xb0\xa5,\x97aDFpc\xcd\xf8\xb5_\xbap\xfb\x08=\xedo\xbf{\xce\xabv+\xf7>\x15t]{\x12\x91\xec\xc35\x8c\xe0\xd6G5^=R\x1d\x0e\xa2\x9d\xec\"\xa0\xf0\"\xad\xa8u\xa2L+\x9d\x17B\x87!\xdfm\x7f\xe7\xd8\x17y\xac\xb6\xfac\x1es\x9c\xc4\x8b\x9bK\xb1\xc1\xdd\x05I\xf9\x9f\x17g\xa7\\0\xed\xb9cT\x8cW\xab\x81=`\x19\xb86\xbc;\xf6F0f\xfba\x8csi\xc8<\x16\x93\x0c\xa3\xf6\xa7\xf6\x86n\xa5\xb0\xa1|\x163\xaf\xb8\x01\xf9\x07z\xe6m\x8f\xe33\xee\xc4\x9bU\x92J2\xcc\xfd\xec\xf9P(\xc4\xa8\xab\x1c\x90\xf5A\x08\x9f\x0d\xb5\x11\xc3\x11\xa6R\x19\xbd\xfeq\xd7\x0d!\xe0\x84\xea*:\xea\x93\x9bG\x99u\xab0\x16m\xc2\xd32\xc0\xbc\xe1\x9bD>_U\xf8k\x0e\xd3p\x97\xcc\xc6u\x01{p\x14R\x12d\xf9mG\xa8\x9bLRg.\xd1\xd5\x05\xad\xd3F\x83x\xc5Qj\xa3\x0d\xd8\x82\x8bj\x0dyO-c4\xa8O}\xf5\x84\xa0\xad\xbfyuJ{\x1a\xea8c\xb9\xf6F\xd7}\x0b)\n.^\x98\xab~m\xccg\x9ei@\x8d$\x0b\xafI\xdan{\xf4aK\xf5\x04\x83\xa3\xaf\x1d\xab\xa3\xaf\x9d\xa6\xa3\xaf\x9d+T\xe37P\xef\x15%\xda\xfe\x96uR\xa0\x89\xd8\x07\xb9b\x9e\xc3}\xfeP\x0c1\xc9\xcb9Wf\x1fi\xdd\xa4\x9bT\xd2$\xc14\xebR\x9a\x0f+}\xd5\x01\xf4;\xe9\xe7\x07\xca\xea\xf6\xdf\x16\xa5\xce\xed>\x0c\xb9\xfa\x80\xe6\x1d\x8b_K\xd8\xa9\xfc\xb0\x1d_W8x\xednl\x8a\xf7\xc9\xed\x03\xcb\xce\x08D\xa6\xa3\xca\x9c\x9d\xd1J\xdb\x9f\x17\xe9v\x12P\x86\xac\xa6\x96N\xccq\x00\x15\x81\xd8\xe8\xbe\x0f\xb1\xfd\xec\x16\x80\xb0\xd2\xb8C\xd4},\x9a\xb85\xb1md\xa1\xfcm\xd1\xbf\xe7\x8a\xdf\x96\xa5\x96\xd8\xa2\xdfb\xd8V^\x92\xc4V\xednS,\xdc\xa9\xa5\xab\xc2\xb4\xd9b\x9fa\x0c\x97\xbb4\xa0\x1c+\xce\xc1_=\xce\xa8H@>/\xf3\x02\xfd>7\xe7\xbb\xb2\xf1\xcd\xdc\x97\xcf\x9ej\x90P\xdb\x087\xbdO\x19\x9b\xb4\xb57@,\x89\x91]\\n\x00\x12f\x11\xbaUD\nKA\x80\xe8\x11\xb4\x80$\x03\xe2\x01\xde\xea\x03\x9b,T\xb4p\xd1\x1f\xeb\x08\x92,\xca\x8b\x82D\x14\x92l\x9ds\x07x\x1b\x16W\x8e\xe4~3hv\xe7U\xd9(\xb9\xaf\x9f+\xcdT\xc3\x0f\xa6CD\"\x19\xb9\x1d\x805Y\x8f\xda{\x8d\xd15\xc1\xb2\xc8\x17 \x8a4YUdX\x9096\xe9\xca\xfcRm\xbe\xb3\xf6,;?\x861\xbc\x17mEyV\xd2b\xc50\xb3M\x97\x11O \x1f\x0f\x1b\x83\xbc\xd6\xf3y\xe7\xc5\x05*\xcb\x84\xbe\xe5D\"\xa3~1M\x0b.\xf3U\xb5;\x1c\xb4t\xf5\"}\xbfcZ\xa4\x01bB\xd4\xb0\xe3GW\x921\xd8D~\x9aLrv\x16\xe3\xbf=\xa0\xec\xdf\x08\nVG\xee\xe3\xeb\xbf\x04\xf2^>\xdf\xb5\x8c\xaax\x8c\xea_\xbd\xb0\xd4\xce@M\xd7g\"\x9f\x97i\x12%t\x04\x13\xd6\xb1\xe7\x8c\xe0u_>\xff^\xfc\x7f\xe1\xa9\xdeP\x1f\xde\xbb\x0eJR\x99\x97\x17\xbb\x167\x93\xec\x9b\x8e\xea@\xd0=\x9a\xc7\xca`s\xeb\xea\xbb\x91\xb7\xef~\xdc\xfe\xb8\xed\xed\xbb\x93\x8f\x17\x1fK\x0c\xc9\xd9.\x1eb\xf1\xc9\xc1\xd6\xff\x1f+\xe0\xffw\xb6^on\x05W\xdf\x8dX\x05\xdb\xedB\x8c|\xb1\\\xad:\xff\x86\x9e#\xc3r\xae\x87\xf3\xae\xb3\xec\xb3,\x7f[\x91\xe2\xce\x9eg[\xfatDG\xca\xd6l\x7fd\xd9\xc2\x15\x92x\xbb\xb6\\\xa7\xe1)\xeb\x13\x8fH.\xaf\x86w;\nl\x8f\xdc\x8f\xf1\xa6\xf7\xef\xdb\x18\xc8\xbch\x14\xebo\x04{\xac5\xd4*c\xa8\xa6}\xce\xc9\x87M\xe7\x08v\xcd-\xe3D\x8e`\xb7\xf5Q\xf5# \xaa\x9b\x8d\xd4\x8e\xaf3\xaepo\xb3\x94C\x015\xfa\x83s+\xc3m\x1a\xa4\xe2\xd4\xe2\xc2@\x8bp\xd5\xb9I\xf3\x9b\x91#d\x9e\xcb\"\xa7y\x94\xa7\x1e\x87{v\x96\xb8\xab\x8c\x94Q\xb8\x94\xbc\x13\x9bF\xcf7WH\xd2\x92\xe8\x8e\xea\xf6t\xf7\xd8\xf2A<\x981\x1cX\xb7E\xb0b\x1fJO\xeaz\x14\x93\xcc \x91\xac\x1bR-\x99\xad\xda\xd6uS\x84\xa1\xdb$\x03\x94\x90\xba\xacr6_\x93LG\xaf\xf2Ql\x14\x8a\xa0L\xc3rNP\xfc\xec\xd6o\x8c\xb0\xa5\x9cQ\x9f\x17dj\x8a\xfa\xd3J\x91\xbc\xe9\xef\x9a\xd9\xccp\x11u{;\xad\x02\xfaZ\x89g\xf3\xa4\xc8\xb5\x1e\x01\xe5\x0e\x9f\xd9\xbf\x80\xe6\xef\xf2[R\x1c\x86%A)\x8fc\xb1v\x17\xa3\x1f\xc1\xc6\x06\x9d<\xb5\xec\xbe\x82\x94\x94U\xff\xac\xbd\xd1\xf4+V\xf3\xd0\xa7\xb6C\x14*J\x8f\x1d\xf1*\xb17\xad\xbdPW0E\xcd\x82\x176\x83\xdc\xec\xa9\x94\x1a\xf7sn\xc1\xb0\x12\xc1\x91-\xdc\xcc\x02j\x97\xdd\xe6\x1c3\x96c\x9eX\xb8\x8a;\xd8\x83\x9dv\x7f\x10L+\x88f\x84\xd3\x02\xad\xf5\xe5f\xaaR\xb8=\x8e\x8f\xcb\xcf\x1d@s\"B \xfe\xb3Q\xf50\xabJ\xe4\\\xcc\xe7\xf1\x82)RH\xec\x9c\xdap\xd9q\x13\xb9\x84{.\xf6\xbc\n\x0f\xe0\x85H(A\xdd\x87Y\x03\xea\xe5\xef/_ \xe1\x1eu\x95\x8cU\x15\xc8\xf8\xc9\x17DL\xea\x9b\xe3\xf8\\l\xc1h7\xea7ku\xd7\x93\xa7l\x83N\xb6\xdd\xe0;o\xbbq\xf4xo\xe0\x0e~\x80\xb5\x10s\xbc\x81\xbb\xcdM\x0f\x91\xb5\xcbx\xd8\xf5\xe4\xee\xca\x9b\xec\\\xf9\xdc\x12{\xb2{\xe5C\xc9f\xa5\x84}\x98M\xe6\xb8\xef\x19|\xb7]j\xb2\x1c\xff\x8f\x1b\xa3,@\xfaX.=~\xc9\xe1dh\xfe\xa2f_\xb2>\xee\x83++\x15\xa0\xb3#tT\x95\xa4\x1861\xb7\x87A\x87\xb5\xfczf,\xcfs\xc6(\xfc\x15\xbb\x9c\xf7C\x14\x8eq\\z1\xdek\xcf\xf3\xe5@\xf1\x9f\\\xa5\xe5\xe4\xd9\x15\xae\x96Hd+\xb0\x9c<\xbfR\xebe\xff\x9a\xa8\xc0\xb0}8`\xcd\x02<\xe9\x90\x14\x12\xbf=\x84+\x15 @\xf1c?\xab\x8e\x91 \x9a\x87\xc5\x01uw\xc4\xdc\xea\xdfy\xef8GQ\x9f=\xa2\xd5*\xd3\x00?\x11\xa0\x92\xdd\x18\xe9\x0c9\x14g\xdb\xf1\x82r\x99&\xd4\xe5?\xe5\x0cn\xedz\xd2a5Q2x\xbep\"\xc1A\x8e\x1b\xbce\x93\x02\xb6\x18\xfd\xc1\xb7\xd2.7s\xdby\x03\xc5\xd6\xd6\x1b\x0f#{\xe0M\xd9\xa4\xb8B\xcf\x19\xac\xba\x08#\x13\xec\"~\x0d\x9a\x19\xdcf\x0e\x1fB\x06\xd6#\xee\xb7\xc3\xdd\xa9\x03Z\xb8 \xf7j\xe0C\xab\xc4\xd6V\xb7\x94\x19\xd7&\x0bVY9O\xa6\xd4u\x1c\xcf\xc7~\xb2\x89\xceq\xa9\x82\xea\xed\xcb\x17\xc8\xb8\x0e\x1cf\xcb\x84\xce\xfc\xb6)\xa2\x8a\xb2*\xbe\xbabl\xde\xd8\xb7\xbc\xa0*f\xe0\xfa\xa93\x19a\x97\xff\xe0\x85yf~{\xc8\xdeV%)\xc4b\xb36\xca\xf26/b\xfc\xcc\xbe2B\x13\xa7d\x89\xdf\xd9\xab\\\xb5Q\xab\xfcr\xb2S\x81}\xa3.\x86#\x04\x02d_\xf2\"\x99%\x19oP\xc1\x86\xa2\xbb\x88l\x93\x94\x8c*\x98\x95y\xf6\xd5\x97Mp\xb6\xb7\x1d\xd8\x94\xc5F\xe00|\x8dM3b\x01\xab\xaf/3\xb53Q}\x9b\xf2J\x85)B\x1b\xc4KBG\xbd\xac\xa7|\xf0\xe0\x13'\x94\x19R*\xeb\xaf\xae\x0bh\xae2\xca9\x86n\xa5\xd1\xdeX\x17\xd2\xdd\x84\x8b\xd4\xaa<\xa8x\xa0\x85d\x82\x17\xc9=\xe6_C4{9\xd7\xd0c\xee*Zc0K}H\x14p\xdd\x17~1\x12 \xb2I\x05\xb2\xd5\x95/\x0f(o\xc8Q\x8d\xc3\xe92\xd7\x84\xa1#\xa98\x9a\xa1\xa3I\xf8\x96\xe2\x13\xbd\xb9'\xba\xcbS\xd9$\xcb\x1e?\xc64#O7\xb4c\xdb\xa3\x8f\xf1\xe6\xbfos\x1a\x9a\xb2Yv\x85\xffxe\x0b'\x12!\xd0`\x99/\xdd\xaa\xc3bSS\x81\x96F\x8e\xa7\xcc\xbf\xfc\xa8\x14\x7f\x9c\xc9\x97 \xd17F\x95\x08\xa2\xcd\xf3\x94\xf5\xa9\xa6\xa56z\xa2N\x0f\xeb\x95\xa4\x8d\xfa\x94\xbcQ\x0c\xd0o\xf4=\xc8\xd6\x13\x0dW\xd9\xc4V\xad\x0b'3\xfbx\xe0\x8f\xc0\xf97\xcb\xb5\xb6\xfaHhP(\x82\x0da\x16\x1e\xb2M\x05&\xe5V\xf5\xf9*X\xc2\xc7@\x15R\x8c=\x08~\x8d\x99\xccF\x1f\x15\x05Rr\x02\xa1\x84\x1f`U\x91\xaf%;\xe7\xed\xf3\xcd\xca10ZM\xca\x0e\x0d\x9dT\xd2q\xc9$\x9d\xec^\xb1\x1e\x8a_\x1a5w\x8fnK\xa2\xa1>\x11\x93\xc6\x89\x98\x18O\xc4D=\x11\x13\xc3\x89\x98\xe8'b\"O\xc4\xa4\xa1\xde\xd3\x0e\xeei\xba\x9f\x14\x05F=\xb2o@\xd7vMNI\xf1\xa5\x8f\x04\x89\xf0\x8c\x84\xf5%\xd3\xbb\x0e\xcd\x1b\xca\xe5\xd1v>\x0f@\xc6\xc9\x95\xe3\xb7\xd0e\xd8%1s\x85\xdc\x04\x85<\x1c\xb7\x18\xa9\x88B\x07\x81\xb8;\xfa\xc4\xe3\xb4n\"\x1d)\xd0\xcb>\x9f\xf2\x91\x1d\xf9U\x97\xfc\x15\x9d\xc4 \xcc\xcd=%\x8d\x11\x7f\x15\xb9T}\xe7\xc7H\xfd\x05I\x7f\x96\xfeGG\xfe\xcc\xf8J\xf3\\\x92\x10\xcf\x87\x8d4X\xa6\xabY\x92\x95\x93\xec\xaa\x0biR\xb9\x86\xe35\xc9h)\xeby)\xeaQ\xab\xe9>5\xe4)G\x03\xb2\x167\xab\x1d\x1e\xad\x14D\x9fd\x10z\xb0r\xc3Iy\x85\xeb\\z\xb2\x17\xaf\x1c\x94;\x19<_\x82\x11\x17\xab\xd7\xb4\xed\x95\\\xd9h\xfe\x94w\xf94\\\x90\xa3\xa4\\\x864\x9a\x0b\xedd\xb6\x19\xcen\xb3\xcaP\x99{\xc9b]{\xed\xa0*BGY!8m\xceA\xad\x8f\xb1\x9c\x87%\x89\xcf\xc9,))\xd7q`uhS\xc6A\xcd\xb0|\xd5\xfc%l\xfe\xacR]\xaeS\xab\x0d\"\xf1<(\xdd|\x92\\\x89\xe9\xe8\xd9\xe9P\xa3?=\xae\xed\xefLy6HPh\xc3B\xfcR\xba\xed\x0f\xa2\x07>c\xd3;\x17\xaf\xb4/\x9e^'\xbfB/\x19\xf5\xc1\x17kwg\xa7\x02\xe7\x8e\xccH\x06\xb7s\x1c\x91%\xc9b\x92EI\x95M\x01\xf1Iv\x15\xc4J\x0ee\x10\xf2\x97\xa4K\x9a\xfd\x16\xfb\xaam\x95e\x83\xa7\xb6\xda\x91e,\xfd\x19\xd5!\xb5s/\xf3\xb2LnR\xd2\x82M\xe1\x01\xa0 \xa1\x19;\x9e\x10y\xbc\xc7\x11a\x8c\xc9>\"#\xafVf\x97\x9d\x81u0\xba\x8a\x83\xe7\x92&~0\xb0\x95\x0bu\xd6\xbf\xa7\x1b\xe5\x8fw\\)e\xc0M?\n\xa5,\xb2f.\x0e\xc3k\x11\xeb\x0e#m4\xd1G\xa7\xe6\xe2N\xc5\x8e!\x133\xeeI\x10\xadH\xb9\x93\x8b\xafr.\x9f\n\x9c\xc4\xf3\xe0\xad8\x17\x80\x0dD\x9fH\xa1\xf6L\xf4\x8c\x88 \xe6\xc0\xf66/p\xd2\x87\xce3 \xe2\x06T\xb7\xc7\x8flUk\x13V\x17\x16\xf6\x1d\xdc.\x84\xb2*\xb3[g]\x1b\xc3\x86\x8e\xbbNqn83\x08\x8f\xcb\xa7\x02)\xd4\xac1`^\xf9\xe0\xc9\xaeC@\xd1 V\xa0\x80\x96}\x96\xb2Iq\xd5\x01uP\x1f:b\xc2\xdbQ\x85\xe4\xd3u\xfe\xcaG\x92\xcd\xab4\xed\x82\xaa\xeb\x82\x94\xa4\xb1}Gv5Nh\x11[\xb9\xb8\xe4A\x8fg\xad\x8d\xc3\xe5\xe1\xe2\xb2\x94\x91]\xed\xe1Wd\x8e\xe4'\x8c\x97O\x12\x88\xedg~\x1f\x12\xa1\x1e\x0f\x9e\xdb\xde\xd7\xa2{\xd4\x88\x13$Yk]\xd6\x8evC\xbc>\xf6\xa0\xd0\xdb\x0d\xd5v\x8bI\xd8\xbc\x804j\xd9\xaa\xf4;_\xcf\x87S\xe9\xdc\xa3\xa2\x99VG/\xd0\xee\xd3\xdd\xa7\n\xdd+Hw\xf7\xb51\xfe\xc6\xaaC\xdd\xad\xa6\xb9P4\xfc\xe5\x0b8\xab\xecS\x96\xdff[\xb8\x8e\x9a\xf0\x85\x04\x11w\xe9p\x19\x163B\xf1biF\xe8i\x1e\x93\xb7E\xbe8\x16\xf7\xa8n\x81\x97\x84\xfb\x10\x06I\xb6\xce?\x91?\xad\xc2\"&\xf1a\x98\xa67a\xf4 }Cp\x7f\x99\xd8-\x82W\x14\xe6\xbcU\x16\xdf\xd0zc\xef4\xa9\x8a\xb6\xdeER\x8e\xb38)\xe7}\xf8X\xecK\x87\xe6\xcb\x93|U\x92\x0fK)\x94b\xd3C\xf3\xe5e\xbe\x8a\xe6\xe3,6%\x1f\xb2\xf1\xa7\xe2K\xd7\xb6N\xca\x93|M\x1e\xd0\x1dV\xcc\xd4\xb2\x92\xde\xdd\xee\x05\x0d\x0b\xfa\x80\x86\x8f\xf2\xdb\xcc\xd40\xd67\xa0e\xa1\x82{\x94\x14$\xa2\x129\xf4u\xa2>\x1c\xaf\xe5\xe9\xf8.))\xc9\x88M\x0b;k\xe6\x960i\xc0\x03M?T\x94\xd3\x10\x8cXx\xe6\x18\xa1\x8dA\xb4\x19\xde3\xcf\x18\x18\x18\x14\xfc\xc4\nS\x97\xd83J\x95<#\x90\xfb\xc6 0}\xac\xc6[},\x06-\n/M\xca\xe36\x95j\xb9\x16]WV\x80C\x97\xa6\x18\xbc4\xec\x9c\xd5\x9d0w\xe8\x01I4\xb6\xf3\x06r\xf8\xa1v\xd5\xfc\xe4 l\x90 )\x19b\x0fg\\[\x9e\xe6\xcb%\x89]\xef\x0d\xe4\x9b\x9b^\x8d\x1d'\xf9\x95\x0fE[U\x12\xa4\xc2\x10^X7\x90\xa9!\xe3\x03W\xe9!K\xc4Fr@/\x8b\xd5`J\xbe_\xbay\xff\xed\x06\xf7\xdar`\\[\xdaI\xbc)\x84!\xbf\x19\x87\x1f\x1a7\x7f\x1d+\\lnv;\x18B\x8azR\\\xb1Ue\xe4\x9f\xa2\xfd3)\xdajG\xa0\xdc\x15\xa0\x87\xe0'O\xd8\xa6\xe6\xc1\xb3e\xc1n!\xa9\xbe\xd8Xe\x97\xfaU\xe7\xde\xee\x847\xda\x05U\xf3\xb0\xac!\xaa\x0f\x80\x14\xf1E\xbb\xbd\xaeV0\x9e7\xef4C\x98\x0cq\x0el\xab\x08\x0ce\xf5@/\xed\xd6t\xd4|\x9f\xd6Zh\xbd\xbb\xb5\xa4<`k\x81\x0e#{\x91\xa5\xe4\x18\x82\xba\x14\xcf\xdb3\x9ew\xf9-Zw,\x16y\xf6\x90\xe6,U\x0cj\xfb}\xc8\xce\xa1{\xce$6\xd9,\xd93\x8f\xb4\x08\xd7\xa4(\xc9\xe5m\xfe\x9e1\x8c\xc3\x14\x11\xaa\xe6\xf4\xe2U\xa1!m\x8e3J\x8aw$\\\x1bZE\xd7\xe6FYu\xab\xed\xba\x1a\xadp'\xfc\xa0\\&\xc93\x93g\x0f\xfe\xf10_,\xf3\x8c\x11\x03\x05\xe9]\x00\x90'l\x1b\xbf\xb4Q7\xaf\x9fU{\xc9\xc7\x10\xa6C\xea\xcf\xcd\xf5\xff\xce\xfcfa\x8f8\xc6x8{\x042 U\x95\\\xf1:\xb9\x0dd\xcc\xb1\xaah\xcb\xa4\xa33j\x14kUQ\xa1\xc2\xc9\xee6\x86\x02\xe5^M\xe3FL\xccN\xcb\xca\xac\x9b}je/\x08\x1a\xca\x1c\x86\xab\xd9\x9c\n\xd7\xe1\x9d\xb2\x02v\x8aY\xcdr\xd6\xc2&\xd4\x12\x14\x86\xdb\xe4\x14\xf5Y\xf4\xadp\x91<\x1c.\xcc\x164&n\x97S7\x94\x13\xd7_\xbe\x00 \xca\"\x1a\xa7dA2|\xbfM\xb28\xbf}\xa3O+\xdb\xef4@\x9b\xaer\x99gq\x92\xcd>\x94D\x96\x93\xfaG\xd6\x1c\x9e\x0f\xcfxh\x9c \xcbc\x82F\xfd\xfb<\x8c\x1c\xc9\xf0\xe0i\xe8(|\xab5\x8e\xd0-t\x9f\xaa\x163y\x10\x85\xd9\x87\x92\x1c\x9d\x9dT\xe0\x1b\xe7\x11\x1a\xef\x06\xc9b\xc9{\xca/'\x9f<\xb1}\n\xe6a\xf9\x96\x84tUH\x7f'\x1b{\xd6z\x94\xcc\xae\xe3\xf8\xa8\x1d\xdc\x98\xd9\xed\xef\xbekB\xcdwp8'\xd1\xa7\x92Af\x98q\x81?$%\x94\xab%[_\x1e\xc0\x89\xce \x08.IP\xc7\xe82=['E\x9ea7\xb4J\xf56N\xcf.\xc7#\xb8\x9c'%\x8f\x0f\x95\xe5\x14n\xf3\xe2\x13\x08\xa3\xbd\xf4\x0e\xa9\xce,\xcf\xb6f\x8c\xc6I\"\xde\x13\xd6\x8fh\x0ea \xbf\xf1H\xca\xbf\xf9z\xd5\xbf\xa1\xb8\xee7\x1f~K\xf30f\xff\xd1\x08\xfc7\x1f\xa3Q\xfd\xc6\x1ds\xfc\xd6\xd7\xc1\x1f\xf3\xa2\xc8oK\x98\x16\xf9\x02N\xf2\x98\x14Y\xf2\xf7\xa2\xaf\xd4\x1f\xd1^\x14\xfe\xc1\xb5\x0f\xbe\xd6\xd7%\x17\xab\xe94\xf9\x0c(D\x84L\x98\xaf\xcf\x02p\xa24\x89>9z\xbdUE\xfb7y\x9e\x920chq\x89K\x8e\xab\xc3\x16\x07\xd7@$\xa2\x9c\xb7\xb1J\xed\x1a\xa51AU#c\\dE\xedenW\x90\xb036\x0b\xd3\xd6\x874\x89HV\x92z\x9a\xe0Y\xb0\x13\xec,\x0b\x02\xee\xe1\xaa\xa4\xf9\x02~\\%i\xec\xc1\x1789\xbe\xd4\xcao7\xde}\xbb-\x9e\x8eL\xd0~@\xddS_\xbe\xf0[\x82\x0d\xd7 \xe3\x18\xe7Z\xd2\xc8\x0e\x83Z\xb9GjVA\xbfY\x91\x1c\xb5\x93g\x0el\x9a\xfc`\xa1PP\xad\xecM\xbbOF\x92e-\xae\xa0\xab\x8d\x1a\x15$\xa4\x12=\xb9N\x9c\xacM\xea\x1daP\x12z@i\x91\xdc\xac(q3\x1f\x84\xb3\xe47\x8e\xd0\xfe7\xaa\xc2\x84\x93\xcc&2\x05\x85\x9d@Mb\xae\xbdr;'\x95\xd8\x0c\xa4~\xf2\x10\xac\xc2\xef\xe6\x03^\xde\x07\xe7Y\xb0\x83\xaa\xd6\xc9\xa3!\xd3\xd6\xd1}\x90\xd2\x118aJ\xffL\xee\xf4\x90\xbayF\x8b<\x1d\x81\x13\xd1\"m\x7f?!4\x1c\xa1\xdb\x82\xb0\xfd\xf1b\x9eLY\xcd\xa8W\xcd>\xd7C\xb0\xd0:\xb6\x03\x0e\x0dW\xb3\x90&k\x82\xf3\xd3\x86\x12\xf43v\x92\xc7\xc94!\xc5\x05\x0di}\x8d\xd4\xfe\xd4bO%\xa0\x16\xad\x1b\x83\x8aS\xc43dc\x83\xaa\x90PC\xc1\xb0\xf3\xbau\xcd\xf2\x08K\x99\xb9\xaf^\x1b\xd4_2\xf7e+=\xe1j1\xbb\xdcv\xf4\xd9k\xfc\xf7t\xf7\x95\x1e\xfd\x9a\x8b\xe4w\x9f\xeb\xe5W\x98\xfe\xec{\xb3X\xbe4b\x151d\x93h\x92S\x18\x93\xdd+!\\\xa7\xe8\xb5\xf8\"\xb9I\x93l\x86\x1eu\xa6IQ\xd2\xc3y\x92\xc6\x86)_\x8b\xab\xf6\xc4\xedc\xafH\x90d%)\xe8\x8fd\x9a\x17\xc2\xb1D]\xa1q0\x91\xad\xaeB\xd4\xc58\x0dQ_\x8b?3\xe94XM\xb7Z3\xb3ob\xdcl(07+\xeaTaK\xec\x840\x8fI\xa4\xcc\xb8]\xb8\x95\xba\xdc\xee\xba\xe0\xd7\xf7\xdc\x82\xbdCk4\xafh_\xf5\xd1\x88g\x1c\x1cZ$Q\xb4\xdaA\x91s:l2\x97\xd6\x03l\x88\x1c\xae\xba\xcf\x9d\xec\x1a\xee\xdfb\xac\x1b?\xef\\\xf1;v\x12\xf0`\x9b\x08\x89-\x0eK\x0355+\xed\x1eFl\x83\x89\x8e\xe5\xab\xc4\xef\xddK\x87|P\xcfR5\xfbZ\x0cc\xfc\xe6\x0861\xa3\x15\x8b|U\xa6w\xe7d\x99\x86\x11a$?\xe3\xe3N\xc2\xe2\xd3j\xd9DS\xeb\xb6k\x8c\x9e\xf2-\xef \x05\xcfuD\xd2d\x91P\x12_\x92\xcf\x03\x0d<\xe4\x84\x11\x8571K~\xf9\xbda\xe7\xb4\xe6\"\x1c\xe8>\x17\x9e\xa7n\xe1\xeb\x14\x08\xeb\x19\x8a\xf6\x18\xe4\xe4x=\x02\xfb\xe0\xae\xf0\xde\xcf\xf3!v\xf9u(E\xd5||\xeb\x95]-\x8b<\"e\xf9\x01=\x14\x97\x03\xc4e\x0d\xeb\xae\x9d7\x90)\"\xe67\x90\xd9u\xab+\xf0\xb2\xea\xabHS\x98\x02oXm\xf5@\xa5]\x7f|z1>\xbf\xbc>98\xff\xf3\x87\xf7=j\xf6\x88u\x0b\xe9\xd8\xc7\xe7GJ\x11\x84SJ\n6\xa7}\xd1\x0d\x06\xd9\x05\x9c\x9c\xfd<\xbe\x1e\xff\xe5\xf8\xe2\xf2\xf8\xf4O=\x1d\x9a\xf2\x0eL\x85\xb8\xf6\x9f\xd4\xa3\x8b\xf1\xc0\xf9 \x1b\xf3\xf3\x18M_\x8e\xffry}xvz9>\xbd\xeci|\xf5\xe8\x8d\x9f\x8fq-N\xcf\x8e\xc6=m/\x9b\xeb0T\xc9\xe9\x9e\xf2\x9a5\xa6>\x88\x1a\xb3{\x01\x9a\xd3\x05#\x9f\xe7\x94.G\xdb\xdb\xb7\xb7\xb7\xc1\xed\xb3 /f\xdb\xbb\xaf_\xbf\xde\xfe\xcc>kd\xf3\"\xa4s{\x99W\xdb'!\x9d\xe3\x9f\x93wZ\xc9r=3\x16{\xba\xb3\xb3\xb3]\xaeg\n\x01\xfe8C\xed%u\xd5\xe8\xe9\xb5\x0d\xf6\xc9\xc5\xc1r\xc9\x10(\xfe@S\xde\x0f\x19\x0f~\x1f\x85\xe9[y>*\x94P%\x826\xaa\xbfvV\xd3\x1f\xd6N^L\xa9\xad\xb4aI\x17\xac\x8e\x1e\xdb\xdb\x8cQ\x8d=s_\xed\xbc4\xd0\xf1\x99\xfb\xf4\xc5+\xcf\xcd\xdc\x97\xdf{AR\xfe\x1c\xa6I\\\xc9\xe6\x1a\xb9CE\x19\xdee4\x7f{\x12nV\x94\xe6\x99\xd9\xaf_4'\xd1\xa7\x9b\xfc\xb3\xf9k\xb2\xc0\xf8\xfe\xa6O\xf3$\x8e\x89\xa5\xd2\"\x8c\x93\xdc\xf2\x89\xa0\xed\xa6\xe9S\xb9\xbaY$t\xd4\xd2L\xb6i \xe9\xeb\x8d\xe2\xee\x0dv\xc8\xe3\xa0H\xfc.\xc9>10\xac?`x\x04\x99\\\xb8\xce\xab\x97N\xaf\xae\xb2\xde\xcc\n\x95X]\xadR\xa9\x9f\xc8\x93\xf2\xec\x10\xe5mR\xc7\xfc\xd5\xab\x9ev\x0c\xdePZ\xed\x88Q\xf5\xb4\xf4\xba\xd1\x92\xfc\xc5\xc002\x9a\xd2\x8a\x88\x11Ch-P\x18f2\xa1\xa8\x93\x19N\xb8.\xd6\x15\x17N\xcb\xee\xf0\xb7\x82\x84\xf1Y\x96\xde\xf1\xb78)\xc3\x9b\x94\xc4\x8c\xbcb\xfd\x1f\xa1\xcb\n\xe1 \xeb\xd7|%\xc3\x83\xc6\x10\xc2o\xd8\xad\xdfX\xd2\x12h\x0e!\xa3y\x160MH\x1a\xc3mB\xe7\xf9\x8aB\x98\xc1o\xb2\xc1\xdf`\x1efqJ\x8a@\x91\x93\x16$\x8bI\x01!\xb0\x8el\xe5\xac'XC\x00\xc7\\\x90\xc7\xeb+\xe7\xf9*\x8d\xe1\x86\xc0bEY\x171\xd4\xfeo\xc22\x0e\xbd\xf7\xfd\x16\xc0\x19\x9d\x93\xe26)\x19\x99@(\x90\x84\xbd\xab\x1d\xc8\x0b\xf8M\x8e\xf8\xb7\xc0d2n\xd9~$~\xf8\xfc?\xe2\x94\x8b\xbe\xfc\xb7\x98\xf4C\xd1\x97\x7f\xd2\xb4\xcb\xd2#H\x026\xf3\xbf\xeb\xc8?\xb5\xda\x13-\xdb\x9b\x16u\xc8m|\n\xbf\xcb\x99\x11\x94q\xdb\xfc\xbf\xd3J\xb0\xe5\x08\xe95\x9b31\xa9\xdc\xff\"\xe4S\xf8\x8d[~m\x82\xf3[\xd0\x0ckh\x94]::m\x00\xa2Oq\x0b) \x18\xbc/\xf2%\x1aE\x0c\x83\xcc\xa62td\x03^6\xbe\xc8\xa4\n-%\x16\xd1\xa4\xb8b\xc74\xe7\x9a\x1c\x06\x88\x8e/\xee\xeb\xf2\x0e\xcb\xa9D\xf5\x89\x83\xe0\xcd%\xdb\x89\x0c\xfb\xc7\xba5\xedV\xdb\x99T\x99\xafP\xd5\xdeN\xde.u!\x81|zI\xd4&d\xcd\x08\xfdY\xc7\xbe\xa6.V\x9a5\xf5\xf1\xb5\x8f68(\xbc\xa8\x12\xff_\xf6\xfew\xbdm\x1cY\x18\xc4\xbf\xf7U\x94\xf9;\xa7\x0f9\xa6\x15\xc9v\x9cD\x89\xe3\xe3v\xdc\xd3\x997\x89sbg\xfa\x9d\x9f\xc6G\x0f-A\x16'\x12\xa9CRv<\x93\x9c\xeb\xd8o{\x0d{\x01\xfb\xec%\xed^\xc2>(\x00$\x08\x14H\xcaq\xf7\xf4\xec;\xfc\x90X\x04\x88?\x85B\xa1\xaaP\x7f\xc4_\"X\xf5\x8d\x15\xc4\xdf\xee\xfb\xc4\xa6=\x8d\xbd\xeb\xa7\xea\x11\xaa\x8d\x84\xd9a\xf5Z\x1f\x81|\xdd4\x06i)vVn\xc6V\xc1\xb7+$T\x94Ql\xd7/\xe4\xfd\xa9\x1c^m|M\xb3q\xb4\"\xab\xc8vJ\xf2{\xa4\xfd\x10\xce.*\xf8\x1aFI\x10?\x1c;\xd5!\xb1\x08\xe8\xfd\x12|\xa7\xe4\x18\xb7\xcc2\xfb\xe2\x1f*\xf5\x8c\xa9\xc4\xb1]\x88\xa0\xd2f\xa0\xda)cI\xa9\xd5\xa0k7Z\x95T\x15N\xab\xcb\xd26|UO\xe5\x98\xb4/b*\x90\xb3@\x92L\x96\xc8h\x18\xc4\\@\x06\x8f#\x8a\xc4M\xb6\xc1\xc1\xaa\xa7\x95<\xd0X\xf0\x0dv\x06\n\x0bd\xae\xd6\xca%\xabN\x83\xdd\xa6)\x0e\xb9\x8f\x95\x8a2q\x9f\x8e\xcc\x87\x16\x0du\x00\x8f\xb0\x0e\xfeQ\xf0}\x82\xdc*\xda\x1f\xa2\xa0Xa>9\xe5FB\x80N-\xa2\xa4\xba\x9a\xec\xdbwFZl\xb1\x9a\xcf{i\x16#\xec\xc2\xedZE\xadV\xd1z\xff)\xa1\xfb\x89\xdd!%\xb2q\xdc\xa8cjW\x84\x87\x90\xb4\x10\x15\xe1\x04\xc4\x0fg\xcf\x9aK\x08*\x00#\xcd\x8a\xf89\x06Q\xb2\x071\x03\x7f+\xab\xdc\xb3G\x91H\x99\xb9\x95\xfal\xc4\x7f\xa1\xaa\x1e\xffp\xdf\xf8\x96\xd06\xd6\xef^\xc8\xd9y\xc1\x15\x9c\xeb\x0b\xb75\x10\x7f\x132\xa6^\xb7\xd0\xea\x12\x17\x8b\x18\x81'\xab\xaca\x85\xbd\x94\xbd\xceU\xd0I\xd7=\xb7B\x1e\x12b\xf5\x10\x91\x88wUl5\xfe\xe6\xa8^%\xb6\xaa\xc40\x84Z\xfcG\xbc\x8dV\xe9\x9a\xd1T\x07\xff\xc4\x97\x9f\xd8\x9d|\xf7\x89\xdd=\xc4Z\xd17\xcb\"Tf\x1bAV\xac/M\xaa\xbdCo\x08\xdea\xdf\x11y\xd1\x1bb\xf1\xae\x9d\xba\x9bH\xf8\xa3\x80\xfd/\x9c9\xf6=4J\x08\x14u\xf7\x1f\x8d\x0e\x87\x97\x8f\xae\xc3\x0e\xe7\x87\xbaZ\x1e1\"\x96c\xa3._\xc5\x0f\xfdV\xa0\xf4q\xda.\xa0\x1c\xee\xf2\xe2\xe1&@\x11\xe0\xf0U\x8466\xea\xa3\xb7)\x87\x95\xf8\x8dQ1Y/__ D\xf4w\x05\x83S\xbd\x18\x04\x81\x06M\xff\xb0\xff\xe5p7xx\x80V\xf8J\xd3\x8a\x07 \xce\xec\xe2\x8a\xf6\x0fP\x916\x18\xec\x9a\xd7\xe6\xf2z]\xde\xab\xef\xef\x05\x9d=\xda\"BN\xec\xb1\xe4\xbf\xd6l\xcd\x04\xdfP\x8f\xccm\xb7@h\xbbJ\xdb I\x94\x1a\xcf?\xfd\x14+\xe8C\x0csQ\xa9\xb8\xe4\x82\x8ah/z*B!\x11\x014\xb3\x8e@\x92\x04fF\x8a\x8e\xf2\xf7\x0b\xd8\xed\xe3\x95\xdb6x\xe0\xf3&\x86\xc0q5\x93a\xaeB\xf0\x02^\x16x\xa0g\xffs\x87\x16p\x9d\x1fh\xeb\xed\x1a^\xa2\x0e}\xad\x03\xbd\x01\xdb\xed?\xce\xdf\xa6\xeb\xa4h\x97\xa0\xd4R\xd1\xfd\x83n\x86RH3\x94\xdeXH\xfclZ\xdaT\xd77\x89!I d\xaa\xecr\xbb\x08\xed\x8b2\xd9k\xe9\xbc\x88U\xed\xe1\xa9mc\xaf-\x94\x9cEu\x84\xd2\xeeb\xbd\xf1\x8a\xa1\x95\xa9\xea,\x87#\xea\xad\x08\xbf\x88\"\x13\xf5\xcd!\x8c\x8a\xcb\x10\"\xebB\xbb\x11 \xaf\xa51^\x07\x11\x93\x91\x03%\xdej\x03\xa5\xbe)\x07\xda\xecM \x07\xfac\x9aM$-\xe8\x8aM\xf4bH\xe3\xder@Z\xc3(\x98\xf0\x11\x15fJ\x0crH\xf2\xe6\x1e-\xaa\xba!T3\x9aH#\xf4rd\xd8\xf0\x7f\xf0\x9e\x14\xac\xaa2\xbdo9l=\xc1\x82\xa6\xd4\x97\xbf|\x02\x99\x85\xf5_\xd5\x90\x17\x84\x9b\xa2a\xd2\x80\x86\xc9e \xf0\xb0\x0b0\xcfYA\x01\xd2\x05\xc5\xc4 E1[?\xa1\xc0\xf8\xe5\x0b\xd0\x05\x870\xba\x0c\x02\x85\xb0|\xd4\xa6{\"=jy\xe3\xe4\xd8=\x0e,\xa86\x8327\xc7h,\xac7\x96\xc9\x0e\xf9\xf9\xdb\xbe1\xcc\xe5\xec\x0093\xd6\x99.\xf7I]\xc0\xee\xae\x87#\xe7\x07\xea\x86l\xc77x\xc9'\xfe`/\xa0\xb8\x90\xbd}\x9a\x0b\xe1<\x86\xee\xaf\xa9\x8f#\xbd\xff8\xba\xdd\xed\xdeT\xc1\xdeP\x928I\xa7\x8c\x16j&\xf3(\xe3\xa5h/\xccP\x1b\xc0yI_(\xbaU)^M\x0d\x84?ARZ\x06\x0e\xf6\xf8\xde\x92\xc8P\xc0\xcbC\xd8\xdbE\xd5\xc1^\xa9[(`\x08\x1bJ\x9a\x15h\xad<\x15\xd2\xc5`\xf7)y\xdd\xbao\xde\xc2b\x98\xc7\x91`\xa1${si\xb0\xe3k8\x04u\x0d]\xe9V\xeaurB\xfbR\xaf\x81q\x0e\xcb \x80\xf5\xb2 \x86,\xa8+k\xec\xdb\x89\x85\x90\xeae\xde\xc3M\x97[\x18a\xf3\xf7\x18\xaa\x8b\x05|\xdfD\x8dJ\x0fdf,\xf2\x84\xe24\xa15\xe9\xd3\x0c\xe7\xa4\xd4Ex\xb5\x8c8\xa8$\xd2yO\x1a\xf7\xaam~X\x0f\xfe\x9e\xe8w\x01\xc2\x8eK\xf4\x94\x04\xbc\xea\xec\xbe\x08\xb5\xfb\xecI a\x8c>\x83j5\xcff!4\x82\xbe\x93\xbc\xa2\xf7\xe3\xcaJ\xd3\xb2eA&1\xd2a\xe7\xb3\xde\xd5]\xc1\xde\x08u\x12\xcd\xf8b6\x9a\"\xe8\xe5\xac\xf0\xc5\x0f\x0cb\xdd\xe6\xdec\x8e^\x05\x87\xc4\xf5\x9b\xc7yo*\xe6\xa5R \x0e!\xe2EJmm\x16\xba\xc1\xa0\x00\xaam\xfc\x01n\xf2G\xfa\xc6\xff\xef\xbe\xd8\xf8\xfa\xbeG\x94\xc4\xa8\x0b\xc5\xfc\x03\x9b\xac\xb3<\xc6$\x86\xebP\xf8r\xf1\xf7mWB\xb8w\x8d\x8dk\xedX\xc5\x95H\xaabs\xab\x9e\xa7|(\x84s\xb8f\x1c%\xe84z\xda\xce\xd2u\x82~\xbcY\x9a\x16\x8e\x9c\x98\xe6~\xc6I\xce\xa3\xfc\xa3BhmB\xc0\xec`\xf3q\x15\xc4\xb0\x99{\x16&B$fuq\x8e\x01\xcb{ \x94\xfe&u\xec\xc5c\x90\xfc\x1a\x14\xf4}\xe4\xc0\x02\x02\xd9\xd4\xf3\x95\xcc\\V^\x94\xb9\xc6\xa7\xae\xdbb\xdf\xb4u\xd5\x9f\x08\x15\xaar\xd4\xeeyjg|\xd4qV\xe9(\xb9l\x99\x18\xb9\xdb\xaa\xe4w_\xeb\xb2~3\xef^\xa2E\xa1\x19(;\"yH\xc3\x12\x91\x92\xbdL\xf9\xa9l\x9cD\x96,\xe1K\x89\xb9 \x12\xf9\x13\x0fl.\x89\xc8\xdfe.fyh\xf0wE\xc6\x98\xe5\xd8EN\x14\xcd\xb5Y]B\xf0q\xdbh{\xa3\xe8!w)l\xb1:\xc6\xd0\xa8d \xcb7Q\x08\xef\x83\xc7\xa6\xbeD\x08\xefOLY_\xba8\x0e\x1e\x93.\x8e\xcf\x06OZ%\xac\x86k\x04\xce\x06Q\x97\xc0\xbc\x81]G\x19\x17\xf2\xf7\x1ce\\\xc8\xdfw\x94q\xf1\xfe\xc0Q\xb6\x82Cx\x0c\xea:\x9cH\xa2<\x05y\xfd\xbd&iV9\xd9\"\xe4\xb4w\xde\xc8D\xdf\x84\xb0\x0c1\xd1\x1bnKL\xea\x96\xfa\xd7A\x08W\x98kv\x8d\xd9\xe4\xf6\x82\x10\xc6\xfcL\xf1\xef*6\xfbV\x90\x99S\xf4\x05?\x82)\xefo\xccE\xa4\\\xfd\xeaW\x06R\xcfa\x0c/\xe1\xf69\xdc\xba\xb6*\xdf\xa6\xfe\nc_p\xa2,\xa3\xe4/\xe1\x10\xae\xfc\x1b8\x84\xbb\xd1\xede\x08\xb7!\xf0\xc1\x99Z>\xb3\xa1$\x80\xd3\xd1-\xe7\xf5\x974\x11\xe1OI\xc5\x96A\xb7TA\xa0\x18\x9a\xbdf\xbf\x17\xd0\xcfjw\xff\xa0\x9a{\xdc\xb9\xb9\x9b\x0e\xad\x1dtn\xed\xb6Ck\xbb\xed\xad\x9d\ny\xe5\xc6\xbd$\xda\x891i\xe4\x7f\x14\n\xc3\x11\x17K\x86\x80\xd9\xf5&p\x04\x13\x18\xc2i\xad\xba\xe9\xeax/\xcd\xa9\x14\xdb\xc4a^j$\x8a\x10\xbc*\xd3\xb7g\xfa^H\xd3z\x9d\x0d\xe3T\x13Sv\xa5Y\xfcW\x95\xde\x1d\xcf\xdf\xf2\xe5\xf1\x04\xed\xca\xa4-\xda\x0fQ\x1eO\x8e\xd7\xc5\x9c%E\\\xa6bpV\xff1\xcd\x96\xef\xa3,Z\xe6F\xad\xd5jA~\xfe\xbeJ V\xf4V\x19;V\x05\xaf\x97\"!1\x16\x9c\x9c\xbd\xfb\xf1\xf5\xef?~8\x1d\x1f\x7f\xbc\xf8 _\xfd\xf1\xf8\xcd\xebW\xc7\x17\xa7\xf8\x83\xbf=\xfb\xf0\xfa\xff\x7f:>\xe3\x7f\xee\xe2\xcb\xf7\xb2\xbaU\xf0\xe6\xec\xf7g\x1f/\xea\x1f\xe2\xaf\xf3\x9f\xce~\xc6O\xc6\xef\xcf\xde\x7f|\x0f\x87\x8a(|W\x81T\x86\xcf\xf5\x13\x7f\xff\xb1yE\x9f\xca\x92\xdd=\xea\xf2\x1e\xbf\x19\x04\xb5C*\x9f\xa7\xb7\xaf\xf8\xa2\xc6\x1c4\x9d|\x9e\xecm_`\xea\xf9 A\xa1\xa3\xbbE\x1aM\x87\xcdbG\xb9\x16\xdf\xd2;A\xfe\xbb\xf5\xbeH\xaf\xd3u'V\xdf\xd5\xf5\xea\xbe]\x97\x13?\xe3\x7f\xed~\xcb\x18\xa6\xf7\x1d\xc3\x04\xa3=\xaf\x05\xe2\x7f\xcb\x08\xe6\xf7\x19A\x1d\xb1#\x85\xbe\xfdg&\xfe\xaee\xd1\x9ee\x96\x92\x0bV\xa7OZ\x9e\x10nEJn\x13&\x1e\x15\xf5\x92\x8a\x1c{zJ\xacv\xcf\xa26\x89\x89c'{|\xab\x8dW\xe9j\xbd\xf2\xec+\x8c:%\xf0J\xcc0\xaa\xae\xea\xf4\xc3\x13\xc8kT\x9ab\xcaK\x17\xf9\xf1V\x19\x1b\x97\xed\x8fSD=/\xa4\x89\x98gU4\xa0?\x17}i\xc4\xd0S\x17\x97\xd8\xa6E8\xbd\x12\xe1p\x10^\x8d\x1a9\xe8o+NV\x9c\x1c\xc5\x95\x94\xcay\xdcp\xc7X\xb3!\xe2m\xd1cY\xd6XKx\xd2\xf3\xc6\xe8\xf2H\xc4,K?\xb1\x84\xae ,\xa8\xa5[#]e!\xf2RM\xe6l\x19\xd15&\"\xc2E\xb4t\xf8\xfb\x8b\x9b\xb1kV\xf8\xdel\x91\xdeR\xe1\x82d\xc4\xf4uO\xe2x/\xbf\x8d\xae\xafY\xf6\xf1\xf5\x076\xc5\xb8\xcf\x822\x85\xe0E\xe51+t\x063\xcep\x88\x1c;\xbd\x84\xdd\xf2e;\xcd\xcc\xa4\xfe\xea\xe1\x8d\xbc\x9e\x92G\x04\x7f\xf2t\x9dM\xd8P\xe5\x90\xa7\xe1\xc1n\xd8b\x08\xdem\x94%qr\xed\xa8%%\xc1!x\n\x8f\xc4\x91\xbf\x8c\xee\xe0\x8a\xc1\x1a\xddgCXEy\xce\xa6\x90\xa3y\xc5m\x94\x83\x88\x0e\x86J\x8e\x9ce7,\x83\xf7F\x95\xe4\xdf\n\x89ml*\xc2|a\x1eRQ\x9b\xb0C\x0cB\x88z\x18J\x0c\xed+~M\x10a\xafm\x00\xf2\xfb!\xc4j\xdd\x03?\xa2<\x821\x13\x97qH5\x0c\xdf\no\xa8\x1e\xdc C\x88\x88.\\$U\xa7\n\x14\xaf\xf6\xeb\x92\x04\xd6\xb8\x11c\x11X\xc3\xb9\x11\x059(\x13\xab\x91u\xd62\x84\x87\x98\xa0\x9b$Tu.\xac\x8bt\xf5L\x84zu\x11\xb3\xa4x\xedhk\xa6\xd59g\x93\x8c92\x9b\xaf\x9c&\xba\xfc\xb9\xce\xa2\xa4\x18\x8b\xf3\xdfS\x03s`\x1e\x7f\xf2I\xca\xabrp\xa6+\x96K\xfbF |\x16\x01\xac+A\xf5\xa0\xc7\x9e\xa3l.}\x15\xcd\xf7JKy\xc5\xa5 A\xc0\x16p\x04\xf3^\x9dL\x1c\x82\x87\xf2\x06\x9a_\xf2\x1d\x92\xf7\xae\x8a4\n\xfc\xa8\xcc\xf8\xba\xc6\xbbM^\x96V\xbbgEy\x9d\xf3G-:\x89\xfc\xae\x8f\x14 \x87\xb0&\xe9\x8a\xcc\xc1[\xce\xc2\x9f\xa0\x06`*\x97s\x1cs\x08M\x82\x10f\xf5\xf79\xae3\xdf<\xe8\xba\xd5y\xf2\x93r\xf2\xb3\x00\xd3\xec\x99\xf2\x9b\x83&\\\xa5\xd3\xbb\xa1ji\x1d/\xa6\\8{\x15\x15Q\xe0\xaf\x1c\x8a\xcdu\xb6\x18\x8a\xe0\xce\xbe\x87T\xe3c\xb60Y\x0e\xf5\x08\xb8\xc6\x0eD`\xd1\x94e9\xc9\x96\xf2\x07AH\xb2\xcdPR3\xe2N\xdcI\xafB\xb7\xb0\xf9[\"U\xa9\xac\xc1w\xdf\xb7\x10\xb3f\xe2\xb2\xeeH\\l\x93b\xfd\xa9a\xe7\xb0\xcb\xce\xdc\x84\x8a\xd0\xc1\x00\xd4S#lr\xfbL26eI\x11G\x8b\xbc\x9d\xc4\xa5m\xb4\xcdI\xa3\x1eb{M\xee\xb3e6\xd9{r\x83\xb4\xec=\"r~\xc7\x0d\xe4\xd6\xe9\xb4\xdb\x00\xb98\xf3D\xba:\n\xc6\xf6c\xb6hV\n;m\x8f\xb3\xb2\x8fV!\xa1h\xe5\x1b\x8a\x96\xadVt\xd8j\xc57o\xb5\x1a\xbaG\xfa\xbe\x1bO8\xc7\xefF\xf7 f\x08(z\x13g\xd81\xac\xa5\x0e\xa6!8`\xa1\xd5\x12\xc7\xd4\x10\xd6\xee\x9aj\x11\xc7\xeb,\x1e\x12V\x04\xd0\xb8\xc3\xb2\x07\xd8af\xd2U\xf5\xb4\xef\xb0t\x93\x1df'\x9c\xbe\xd7\x0e\xa2\x95\xa8\xff\xdcJ\xb5\xe7a\xb6\xd2o\xe6\xd4\xfa\xbbm\xe3\xbf\xff\xe6\xbc\xff\xf1\xb7\xd9\xe6\xfc\xa5\x8e\xbf\xeaZ\xe4\xc1x\xc7\x99C\x13%\x90\xfe\x9a\x152\xeb\x1f]+\xef\xc6\x7f.:i\xcf\x84\x824\x8d\xf2\xbds\x0c\xae\x9e\xbaR\x15 \xbdh\xbeb\x93\x96\x8a\xabrx-\x15\xa7Ho8\xe68\x96\x0e\xcbQ6\xa0+\xdc\x94W2(}\xcd\xe1\x08\xfe\xf6\x15\x9cR\xc6\x12\xdb\x93\x08AW\xb9\xae\xb7\xb8T-.\xe9\xeaw-\xec\xf9\x95\xd05dD\xa4 \xfe\x8c[4\x97\xb7p\x08\xfeJ\xc3\x07\x1f\xad\xe2\xff\xf65\xe8E\xd3)\xde\x11E\x8b\xff\xe0\xf0\x11\xd6\xfa\x82-\xa3\xdb:%\xae\xaf\xf4\xb2Y/\xce\xcf\x8e\xcf\xf7\xfc\x80\xcb\xb0\xfd\x10\xa2J\xa0\xbe\na\xd2\x13\xb1\xf7\xd9\xf4\x1cul\xbe\xc8\xac\x0cC\xa2\xee\x8c\xcfXV\x08\xeb^\xe2\xbaU\xd1-\x1c\xd5\"\xf6\x89\xa6\xb2\xaa\xa9\xdb@\\\xa6\x9f\xca\xb4\xf4\x87`\x08\xfa\x7f\xfb\x1a\x82,\x0c\xe1\x96\xb2\xe3\xe3[\xee3\x1c\xc2i\xe9\xd1\xe0;\x88\xc89\xd1\xbc\x93\xa8\xf2\xf3|\x85a\xcc+\xd9\xf2\xd1_\xf24 \xa1`\x9f\x8bG\xabE\x14'!\xfc\xee\xd1\xef\x1a\xa8\xbcw\"\x82[\xee\\\xdc\xad\x98g4\xf6y\xe7\xf6\xf6vg\x96f\xcb\x9du\xb6` ?\n\xa6\xb6b\x13\x04\xb5\xba\xa6\\\xb3z3VL\xe6\x8eY }\xfd\xec\xd8'\x18\xd6i\x08\xde*\xcd\xcd\xdb\x0c\xf5\x94d\xf5\x9c.\x97\x12\xfd\x8dc_\xe0i\xe18\xf9e\x9c\x1bt\xf3\xe2`N\xb3!\xac\xfd\xa0g\xbfw}\x9f\xaf\xd2$gD\x03V\x81\xd5\xc0\xd7\xa0\xc7\xf92\xbf\x99[\x02\x8d+\xd3,KYo\xcaO<\xf7\x92#\xf5\x97.\x91B\x1b\xfd\xe5\x0bx\xaes\x0d\xd4\x15\x88\xfc\x02;9\xd5>\xa3\xed X/\xfd\x84\x0e\xcc_\xbe@\x06G\xb0hWw\x83\xa6\xf2v\xd0Z\xe8\xa8\xd2\x86\x8e\xeaqhP\x7f\x13\x16\x85\xa0T\xe0yG\x158\x94\x8c\xc1\xd8=\x00\xa9\n\xb7\xf9zP\xdd\xfd\x03\x00\x8f\xf5\xf2\"*\xd6\xf9\x05\xfb\xec\x9a\x08\x85\xe6\x98\xaai\x03<\xaf\xacQY\xa0l\xfch\x04D\xcb\xc5r\xb7\x89\x9b]\xf5K\xec\x90\x06\xae\xf9\xa6\x0c\x00P\xfb\xc4m\xf2C\xe7\xa6\xd2\x1f%\xdbh!M*\x17\xad#}\x03\x8bL\xa4\xcd\xe6E\x99\xdc\xb9\xc2sp\xfb\x10\xbc\x10\x98H\x16%\xc2\x04\xe0\x0ft\xee\xc5\xbf\xc6S\x96O\xb2x\x85b\x9e\xfe\x91\xf6\xbe\xf6\xa9\xfeA\x93m\x92\x96k\xcb\xf6\x0e\x02\xa0|\x86\x00\xfd\xec\x7f\xf3\x18\xbd\x01\x1a\xd7^\xfd\xf6l\xab\x10\xad\xfe\x14-\x17\x82\x81s\x99\x10\x95\x19\xa7\xc8\xe8\xbb\x98k*\x15!U\xeb&\x12Y\xb3\x89\x84\x91\xbb\xb6v\xb7o\x0d\xac\xd1\xd8\x94\xdedR\xea\x89\xab\x0bk\x0c\x87\x1cM-g\xea\xc6\xc4p\xb2\x19\x91\x0fT\x13X8\xa2^\xcc\xb3\xf46\xe1\xa8\xaa\xd3\x9f 4q\xfe\xb7\xb7\xf4\x8b4\x9a2a\xc8vq\xf6\xfb\xdf\xbf9\x1d\x0b\xeb\x8bs|\xf5\xf1\xfd\xab\xe3\x0b\xfdU3^\x98\x16\xc5\xbf\x14Z\xacUh\x86Flh\xb1=\"\xb4\x11\xa5\xed\x91q\xd2s\x0e\x9e\xd9 *PrH\x16\xe9\xf5\xf5\xe2\x9b\xcc\xd1\x08\xe5\xe5}\xac\xa1\x88e\x93\x064\xf9X@\x8ep\xc9&\x96\xbf\xfcH\xcc\xcc\xd3W\xa0D\x9br\xb2m\xba\x86\x1a\xfd\xbf\x07\xf6\x97\xafK;\xadL}D\x07AG\x03\xfd<\xc3\x8bmi\xae\xcf\x92\x9b\x9aA\x7f!\xcd\x17\x95\xc9?\x92\x1b\xe4e\x95}?\xe7\xbcr\xcd\xe0\x7f\x95\xe6\xc20[\xfdz\x1bq\xc1M\xf5%\xed\xb7e1\x9e\x9e\xd6Z\x90j\xe3\xf1U:\xbd\x1b#\xf6y\xb6,e5&\xb3T\x8d/\xfe\xf4\x9enN2Vx\xbfk4\x18\xd5\x1b<\x7f\x7f\xf6\xee\xfc\xb4\xa9E\xb1\xd3\x9b\x9a\\\xd7\xe1\xc5\xc14\xfe\xe3\xf1\x87\xd7\xc7?\xbc9%\xe6,\xa06\xbe\x91\x08/\xa7\x8d-\xde\xeb\xd8\xbf\xd1\x02\x95R1\xc2\x12\x7f\xb7O\xba\xc2\x0e\x1e\x9b\xf1\xad\x84/\xecc\xb3\xbap\x85}b\xbe\x16\xee$\xfb\x8f\xcd\xf0\xa8\x0b\xe19kjK&b,\xfbf\xf5\x99\x18\xcc\xb3\xc0\xf7\xe2\x82e\x11Fv\xaaWYq\xfe\xdf\x1f]b,\x14\x8c\x9c\x91p\x8e\x1a\xe2\x04\xe4K\xdf\xf4ui\x94\xd2@Sl\xcc\xe3\xbc\xbe-*\xc8:\xdd}Q\xfa\x9a\x87\xca\xd3\xd5l>\xf7\x13\xacdFQ\xe2+u\x17\xc2U\x08c\xe1\xea\xda\xae\xe0\xc50\x10\x98 \x0b\xf3R\x9c\x94\x9e\x8e'V~Z\xf5tr;\x15148\xe4\x1a\xf2\xad\x89J\x88\x9fM\xd5\x80\x96{\x1b\xebk\xdf$\xec\x16\x12\xe9\xa7\xee\xc8\xe7\xa6\x9eMT\xa9\x9b\x8c\xa8\xfbH\xec\xbe\x08\xf3\x13\xf4P\xc4\x10\xb5\xaf\x15B\xdb\x95>K\x07 \x0e[8<\xa4n\xe3\xce\x85\xd8k\xbd?\x11\xdc\x02\x1d#\x8e?\x9f\xe0\x10NF3\xcc\xfas2\xf2\xfe\xfd\xdf\xcb\x8d\x85\xafn8>\x9d\x8cn.\xed/\x8f\xe1\x10>\xa1\xc3\xb4\x7fC\xdc|\x9d\xc1!\xdc\xc0\x11|\x86#\xb8\xf5=\x96\x14Y\xccr/\x80!\x1c\x97~\xd9\xf6g\xe8\xd4\x85\xb1&\x84~\x1f\xfb\xef\xc9\xafyoF\x82@\x8e\xf5\xefQ\x1f?\x86C\x98\xf8\xefeT6v\x0b,\x08\x02\x8c\xe5i\x86\xbc\xe2\xd5\xc7\x98\xb3\x13?\\\xf8\xe3\x10N\xe55\xb7\xb8\x93S\xa8\xa0\xdf1\x8c%\x94\"^}\x16\xc24\x08B\xf8\xcc[\xc0\xbc_\xe5\x02\xf1\x1e?\x89X \xbc\xf5s\x19i\xf4\xb8#\x95\xf9T\x05c0\xb4i8\xba\xef\xbf\x87\xadk\x0c>\x8f[}\xeb\\,\x90\x1a\xda \x0e\xed8\x08a=*\xb8\xa8z\xcc\xff:\xe5\x7fMC |\xa49\xfc\xee\x9c\xf6ObNC\\D\xbej\xb7\xbe\x9a\xa6\xe3\xaeS\xc4Y^V\xd5\x91n8*\xcbU\x1d\xc2\x19\xb1U\xe0\x9a\xdeV(\xd8_I\x1f}\xfc\xff\x84O=\xe6S\xbf\n\xe1ntuI\\\xa8\xa2\x03x\xea\xa7\xbd\xf7\xb0\x0di\xefG\xf8\x1d\x08o\xff\xf3\x00\xe9\xef\x1d\x1d\x80e\xc3(\xf7\xfa)\xb0\x95\xf8\xfb\xfb\xa8\xd5\xddJ\xfc\xc7\x83\xc0\x9dQP\xf6\xf5\x04\xb6\x0e\x1d\x829?\x80\x0f\x02\x99\x9f>\x04/\xb2ds\x10\xc9w\x86\xedDL\xf5f\x83\xdc\xc0\xb6^\xe5\\!\xefg:\x07\xdaxLG\xc9|B\xe5\x85\xe1l\xc1^\xe0[9cd\xb0\x8d\x83A\xe0{\xafO\xc7\xef?\x9c]\x9cy\xf7\x0e\xb0\x11\"g\x92\x92\x894\x84\xc2\xd2z\xbdp\xc5M\xc3P\x82\xeb\x00\x12\x0ci\x89z{\x7f\x8d\xb0\xc0\xa8\x902\xc4/\xf1\xe1\xf32 \x0e\xbc\x84\xfcy \xbf\xe3G\xc0(\xdf\xde\xbe\x14f2\xff\x1d\xfb\x0bl\xed\xcb\x97\xaa5\x1a=\xcd\xa8\xe2\x9d\x17hw\x10\xf4T\nb\x1a\xa4\x99\xb8\x8fP\x95d\xd0\xdd\xcdzq\xa1\x01u\x0bb/\xb5\x8d\x0e&\x1d\xa7GN\x06\xd3\xac\x07\x8btj\xe4$\x8a\x08\xcdy\x8ca\xe8F\xf1%\x0c\xe9\x13\xc1\x0en\xaf\x07 \xad\x97\x1e\x19\x91\xef\xab\xc3hX\xffL\x86\x88:\x82\x08\x86T\xe4\xf8\xce\xd0\xdf\xdb#\xa0\x9f\x8d\xbc\xf1x\x92fl\xe7/\xf98\x9fG\x19\x9b\x8e\xc7\xe2\xa8\xf7]e\x87\xf0\xb7\xaf\xad\x1b\xcf\x01\xd2t$r8\xfa\xa9\xd0\x9c\xfe\xedk\xd02\x1f\x17=\xbd\x9fF\x91%\xeb%\xcb\xb8\xf04\x84-\x7f\x00\xdf\x03E\x01\x94\xf7\xb4\xaa\xb7\xeb\xa8w\x9b\xc5\x85\xaa\xb3\xef\xa8\xa3\x14#\xb5\x82o\xba\xd8\xa9Z.\xb7\xef\xfe\xe3\xc0\xdf\xd2\xb5\xd4\xfc\xddA\xe0\xcbh\xbf\xe0\x89?\xbc\xa6$\x1a\xa8g\x1e\x17p\x08\xd2\xa2\xaeT\xca\x8f\xe3\xfa\xcdG\xe8>U\xf8\x98\x98L}/\xda\xb3!Rj\xe0\xc71I\xc5\x12xyXQ\xc6#b\x15%L]<\xe34M\x98\x9d\xe0\x15\x86\x18\xcc\x0d2\x91\x7f\xa0\x9a\xdb\xf6a\x19V\x8f:Feg\x04\xaf,\xfb\x19\xd4\xfb\xd1\x10z\xc3cr0\xa0\x03R=\xde\xbb\xefv++4\x05\xd3\x8fC\x88\xc4y(\x17>\xf5\x0bS&V\x0f\x1e\x05~\xe2(\x15A\xa6]\xd1\xd2\xe4\x98rx\x01}\xe1\xd7\xfeR\xb8V28\x02\xcf+\x85\x00\xbeP1\xb6\xa4\x05/\xcc\x83\x00^\xc0\xe3\xc7\xbb\xcf\x0e\x90\xbd\x83\x97\xf0\xf8`o\xf0L4\xb4\x0d\x03\xe9\xa8\xc9iKd}\xcc+\x88\x06\x0e\xf6v\xb1\xf3\x887\xf0do\x7fO\xf6/\xeacG0\xc44H\xe2m\xbe\x88'\xcc\xcfC\xec\x04s\xd5D\xb0#\x9b\xd9\xe6\xe3\xdc\x91\x83z\xf1\x02\x06\xfd\x00\xb6\xe1\xe0\xf1\xe3\xbd\x83_v\xb7\x9b\xfa\x11\xa9\xab1\xb1G\x86-3\xe9\xbeT\xd5\x98\x1a\x9c\xb5\x0c\xf1a\x9e\xc6RWs@\xebj\x06\x96ng\"\xeb\x9b\x83\x94\xca\x9a'\xffT\xd6\x10\xcf?\x955\xfa\xf3Oe\x0d>\xffT\xd6\xfcSY\xf3Oe\xcd/\xa6\xacqjj\x06duw\x18\xd1\x03\xc7\xdd\xc9\xe3\xbe\x83o\xd3\xc2\xb3w\x12DQ\xfcL\xdb$\xa5\x0d\xf9\xca\xb7Q1\xef-\xa3\xcf6\xcf J\xe2\xa4\xc3 \xe9\x18\xb0d\xb4\x19\xf2\\}8\xe2b4l\x83\n\xc2\x19\xfb\xcc\x88\xc9\x0f\x1b\xac\x8f\x9e\xc8#4\xb2\x96\xc4\xb9\x9e1c%_\xbf\xceOK\xb9/,\xd27\xe9$Z0)\x1b\x95)Qpo\x9c\xcd\xbc^\xbeZ\xc4\x85\xef\x85\xde\x86\xec\xfb\xde\xde\xaf\xa2Dq\x04\xad\xdd\xa5\x95i\xc8o\xe5+6A\xfa}\x8f\x15\x95\xea\xb2H.hk\xca\x14\xcd\x13,\xc2CH\xfd\x16Q\x923?\nF\xf1e \x13\xef\xa4z\x92\xf3\xeeh-b\x17\x87J)h\xddR\n^v\xff\x89 \xab\\nL\x07/{`\xf2\xc4\x13Zs\xc2Y\xd9\x89\xca\xcdl\xb3\xb0\x93^\xce\x8a\xd7\xcb%\x9b\xc6Q\xc1l~u\xd2\x9b,X\x949j\xcc\xb1\xc6[a4\x7f2\x8f\x92\x84\x19~\x867X\xe3U\x9c\xaf\xa2bb\x98},m\xe5\xe55\x11\xca\xe7\xae\xed@CA\x1e\x0ea\x9b\x9fe6I\xe6'\xcf\xb5\x99:\x85\xce\x90\x01\x9a\xe1\xc5\xb5\x93\x9b\x95A\xd2x\x85\x10\n\x9f\xf0 \xa8\xbd1\xa6s\xd5\xcad\xdf\xc9\\ \xc2Q\xa5\xdeV5\"<\x96\xa7(D\xae\x1a\x9b\xac\xa5\xfd\x18]\n\xad\xed\xe09D\xd95n\xed\xbcR\xec&\xcf\x03\x95C\xa3,\x1d%\xdb\xdb\xe6I'\xf7\xcf\xf5h{{y\xd9\xb6\xd0\x02(\x7f\xe5\x0c&_\x87\x9b^\x92\xde\xb6\xb6\x86\xb5\x9c\x0d\xcd\xe1H(\x13|$\x93\xec\x16\xe6A\x8f\xd3\xbd\xdd\x10R\xfcc\xd0K\x93*\xb4\xf9\x95\x08T\x1f\xf9qo\x95\xe6\x85\xdc\x85Hk\x06\x18\xcfi\xd2\x8b\xa6\xd3\xd3\x1b\x96\x14o\xe2\xbc` C\x9aN.\x86\xd6\x00r{\x93^\xbc\xe4=\x9e\xa3\x17P\xceG\xd6<\xb5\x89>\x06<@=/\x04\xefw\xf54\x07\xf6\x88|ON\xc8C\xaejK\x8c\x1c]\xa5\xd2$c\xd1\xf4\x0e\x03\xee\x89p|(]/|O\xf8&a\xaa\x15\xf7\x88\xf2^\xb4Z\xb1d\x8a\xf9\xe8}\xed\xab\xa0g\xb7\xdc\x86\xc3y/c\xcb\xf4\x86\x89\xc6\x90g\x0e\xcb}\xea\xf4\x1c\x80\xa6\xcc\x959+.\xe2%K\xd7\x85\x86\x11\x9c\xe9\xa8\xbe\x0f\xeaF\xb3\xd6\xf7V\xa4Y\xa4\xd5C\x98VM\xe0_]\xb9\x15\xf7`\x1b\x9doh:\x8a\xeaF\x9a\x1f\xbf\x19\x02k'\x9b]\x1cv\xdc]\x13\"\x1f\xc8\xae\xdb:n\x81\xde\xa6\xec\xce\x13:D\xff\xe0I{V3G\x9e\x8f\x0cie\xea\x17vj8\x91\x90\xa8-\xb5q\xdc\x9b\xb9\xb2\xfe\xfa\xfd\x10\x92^\xc6\xf2tq\xc3\x02\x8cl\x8f\xa9\xfc\x96\xb1\x96\xdfjC\xc0X\x10\x10\x80yF+\x01\x91\x0dDg\x86v&\x90\xe2\x00\xe9|\xf3\x98\xc7\x8f\xcb\xc9Z\xdaT\x91wF\xb2x[[\x9c\xc9\xf3>\xb0\xeb\xd3\xcf+\xa4\x8di-%\xe6\x86s\xb6\xf8<\x95\xb0\x81\x9c\xf3\xe3{\xe1\x82ZN?\xed\xc9\xab7\x11\x9aA^\\\x89w\x9cK\xb10>\"\xc2\"F\xd2A\xc0O\xf0\x161\xeb\x9d\xa3C(\x17ac\xb7\x05\x00\x88l\x9e\xb6\nA&\x8c\xf1B\x88\xee\x0d\xc4g\xae\xdb\x84Zf\x97Nr\xa9\xa6\xeb\xc9\xea\xc9\xc57\x1a\xd1\xee\x9eC\xa69\xd8Cyc\x12\x15\xbe'\xf8)O0\x1dB\xc2\xab\x875\x9e\xd5\xeez5\xbe\xf4]\xb4d\xbf\x8e\x9c\xbdk\"\xa2\xdc\x934~Z\xe6\x0fR\x9aylj\xce\x854c\xdd\x9eKaf\xcf\x14Z\x16.@\xbc\x92\x0e\xc8\xba\xe4&\xe0&lS\x8e`\x01- peF$\xcc\x98'\xae\xf9\"\xbf\x90\xda\xb7\xd2\xccL|`\x1eH_\xad\xaedN\xa5\x92\xf4\xa6\xfeV\xd6\x9bii\xfdB`\xa3\xe2\xb2m\xc5\xcc\xe5Jp\xa7\x96\xb1C\x1el;\xa8D\xae\xf8\xc9\xa5\xe0\x8a-~\xa6\x13R\xb9Y\x94\xd2\xdd3\xf1\x1f\xef\x99\x18Ty\xeb\xd4\xfdr\xbat\xd9v\xed\xf4\xec\x80\xde\xa4O\xcc\xf7\xb1c3\x08\xf4\xb6\xac=\xe4\xbd\x93\x95tGS\x94Ey\x1e_;\xd4Q[\xb8\xb5[L\xaa\x944KE\xb4-\x1c\xef9\x92\x9c\xdf-\xaf\xd2\x05\x15[\x06\xb9\xe9\xe8j2e\xb3\xeby\xfc\x97O\x8be\x92\xae\xfe+\xcb\x0b\x8f<)e:\xd1'!dJ\xbf\xe4\x05\xbdY\x9a\x9dF\xad\xd1\x1a\nq\x86\x18\x0e\xadA(,\xc4r\xe1l\x1b\xf0\x0e\xca\xf3I\xdc\x95\x89\xa2\"\x08d\x98L\x0f\x93\xeeVn\x16_\xeb\xcc~\x9b\xd7\\\x84{\x9e\xc3\xdc\x94rC\xa49\x83PFK\x9f\x85\xa8!\x89{\xb3\xe7\x90\xc3KX<\xb7\xf9\xd2\xb2\xe5\x95\x90=\xd7\x9ap\xbc\xe0\xc2q(\x14!\\\xfe\xf3\xa7\xe510\xf1\xa7B\x98\xf1\xa7A\x88\x8a\x90y9\x86\xa5H\xc2u\x03/a\xf9<\x00I&\xa6!\xead\xe6\xa3eiQ\x95\x8cV\xa8S\x1f\xad\x1c2\xb8\x96a\x0d\x86\xdd\xb2J\xb5\xed\x9eA\x9f\xe6\xd7\x06\xa6nI\xec\x9e\xdd\x03j\xf7\xf8\xbc\xe0\x80s\x8f\xfe`\xf7 \xa8\xd9{<\xc5\xd7\x8f\xf7\x1e\x93)\x1a\xd6\xd4\x98\xa1t\xd7\xcc\xd2U\xae\xb9\xfdV)\xd4\x95_o\xc6f\xb9\xcc\xe2\xc7\x7f\n\xafh\x9c\x19\xea\xef5Jc\xf7\x9d\xff\x1d\xfb^\xd4\xdd\xa8\xd7\x9aof\x9c\x7f`\xd1\xa4\xd0\xf3\x10\xf2\xed\xa2W\xc9e>\xfd6\x9e\xb1\x8c\x85e\xe4\x82wg\x89\xc7\xbc\xbe[\x87e\xca\xf8\xa7\x8f\xbd\xa0>\xbf\x9e\x91\xd3\xbf\xbc\xaf\x0ceD\x05\xa2\xae\xcab\xafR\xb7\x85\xe0\xa9)\xd4u\x06\xfa$gi6a\x1f\xed\x00\x01\xe4j\x19\x1d\xfeX}\xab\x04x\xd6qp,\x04O\xeb\xba>\xbeE-\xab\xf1Z\xcfj\x9c\xd7\xf3#\xb3[X\xd4^\x1a)\x97s.\xd3\xe5z\x03ZkA\xfd\xcb8\x7f\xbf\xce\x98\x85\x15[\xfd&\x95AY\xd3r\xe5\xe2\x8di\xa5\xb9\x86\xa8p_\x82\x92\xf8\xcf\x02\x9b\xbc\x18\x0bc\xf5l\xfe\x90\xae\xafa\x861\x0c\xba\xfe\x07\x91\xcb\x13q\xb5k\x1fjk\x10\xf5+X;nb\xee\xbf\x04\n\xe8z\xc2\xb0\x07n\x9aT'\n^\x84\xef.\xf1\x17\xdf\xb8\xf5_\xbe\x97q\xdc\xed1q\xaf\xe4\xa1\xc9\xf0A\x7f\xd0\xdf\xfb\xc5F\x9a\xf8\x8f\xf7\xefm\x9d\x86\xe2\xd6\xd6`C\xd6\x98\x1eP\xed\x82\xf0\xfc\xf4\xe4\xc3\xe9\xc5\xf8\xd5\xd9\xf8\xdd\xd9\xc5\xf8\xfd\xf1\xf9\xf9\xf8\xe2\xa7\xd7\xe7\xe3\xb3\x0f\xe3?\x9d}\x1c\xff\xfc\xfa\xcd\x9b\xf1\x0f\xa7\xe3\x1f_\x7f8}\xf5\x0d\xees\x0f\xe65O\xc1u\xd7\x12\x0f\xa51\xe0\x01\xed\x92\xf7\xd82\xd0\x92v^\x074\xc3\xbd\xfb\xe4q\xdd^\xf4\xc9\xbe\xfe\xbb\x87)\x13=\x91k\xfe\xbcH3\xe65\x98}\xaa\x05\xed]i\xb3\n\xabV\xd2\xe5U\x9c\xb0\x0fl\xba\x9e\xa0\xd7gkKi\xcd\xdb\xa0j\xe9*N\xa6\"\x8c\xd0 \x1fY\xda\xa9\xb1\xd8\xd1X\xb4Z-\xee\xde\xc6\xd3\xe9\x82\xddF\x9d&\x189Z\x9ap2\x9fwia\xbd\xb1\x1b\x85\xe3 Ps\xe8\xd0g\\\x1bs\xd1\xd3o\xcb\x80\xc9|\xb0V\xf46\x8e\x8aFJO\x92.a\xf4\xb3\xda\xad/\xe7\xb1\x11\xf9\xc4\xb5\x98(38m-\x15\xf1\x16\xff\x88:\x9f0\xa5/\xc5BED*\xe5\xd3\xcf+\x8c\xf9\x00\xc5\x9c\x01K\xe6Q2a\x19\x14)\\1\x88\xca\xe9\xf6\xa8\xe8\x8ajq}\x16\x08C\xd9Z\x0d[+A\x8e\xa9h\x1bS&\xb0\xbf}H72\x99/\xa1g\xc6{j\xfb\xf5\x84pM\xe1\xef\xf1\x9e\xda~\xbd\x92\xa7W\xad\xa0D\x88)\xa9\x8e\x9c\xe1\xda\x8a\x1c(\xe2\xfa[X\xc6\x06&\xb0\xe8F\xe7MVS\x8bNM\xdc\xd0L\x8csAX\xd3\x82,\xd4\xe5]\xebj\x80v}M\xa5O\x95s\x98\xfaA\x08\xb32\x9a\x8dU\x0d\xb4\xa94\xda(\x8a\xd4\xdb\x0d\x15@\xea,\xb6\x06!\xef\xd5\x1e\x91\xfe(\xd9}&\xb23\x9f\xd9W\x14\xe63C\xfd\xc4\x84\xf9I\x08\x03\xda\x8a\x0b\xac]A\xbfu\xad\xe4\xd2\xbd\x92[Y/B;\x02k\xe9d\xf08X\xae\xf3\x82/\x19\xc6\xe2\x05!x\xe5=\xf8\x983\x98\xac\xf3\"]\xc2\xb2\xa4\xe8\xa8e\x88\xf2\xbbd\x02\x91\xf8\x9c\\^#-:\xeb\xa1l`\x0d\xe1\xdf\xca!Dw\x98\xb2}\x1e\xdd0\x88\x12(\x83\x1d\x83\x87jiPvG=\xf8\x89W\xb9K\xd7\xb0\x8c\xf3|\xc5\x16\x0b6\x85\x08PD\x89\x92\xe2\xe8\xdf\x1c\xa3Y\x11\x00P\xa7g\xd9\xfdT\x1a\x804\xce\xcd\x1dFs%E\x1bNSr\x7fA\x9a\xc2~\x85Y\x9cD\x8bEc\x1b\x03\xfb3\x9b|\xe8\xf6\x12\x9c\\\xcd\xc4\xd9 \x93\xa6k\x89\xe1\xb7\xb7]\xc8\x7f#3\xb6\x17\xa3\xc4aD\x92\xb6^\x80\x82\xa6\x92\xfb\xce]m\xe9\x0c\xc8\x15\xf7^\xbf{}Q\xff\x94V\"\xadI\xc3L\xb5hd\xec\xf1|}\x95O\xb2\xf8\x8a\x91\x11\x96\xafKq\x87\n\xf5\"\xe4'\x89$m\x92\x1f\xdc\x9bp\xf2\x93,a\x9f\x8b\x0f]O3\xf5H\x1d\x0f\x05Y\xf58!\xac\x1e*Th})BX\x8f\xd2^\xd4j?sS\xf9)\x11I\xacu+Fz\xb8\xdaJ\xb5C\x1a\x14\xb4 5\x91\x0e\xeb\x8b\xbb\x15\xa3\xe0\x9d^\xc9t\x89\x12\xd8\x8a\xec!\xac\x9d=\x96\xe4\xb6\xddJ\x9f\x95\xf6\xd4\xe2/\x7fn\x9e\xeb\xfaC\x93~@)\xa2\xe1pQ\xa2Ma9\xc3\xeaO\xa3\x0d\x82z\xd6\x89\x06\x7f;l\x90z\xba\x9cQ\xf8&\xe8\x843P\x0d\xcf\xf2&\x01\x81|\xcc\xc2\xc6\xf2\x05\x11)\x87\x0b]\xb4K\xecc\xeb\x0e0&Q\x91\xef\x94!x\xff\xfe\xef\x9c\xb9\xfc\xfc\x88\xff\xac\x07\x93\xff\x06\x89Z\x17\xf1\x1d~i\xd6\x9d\x8d\x14E\x1f\x9bWB\\\x1a(o\xc7\x84\xd8|I\x84\xc2Qfk.\x9f\x87\x9cp\xfa\xad\xd7\x10\x1eh\xa5Mo\xad\x8c\x1f;\xb9a\xb3X\xaf!\x92\xb9\xe2\xb5\x81\xe8\xa6v\xc1\x1c5\xea4\x90{\x89\x91{\x01\xcc\xd7\x8a\x7fm\xa1hS*\xdal^\xbc\xc0\x1b\x93\xc8b\xcbxs\xa8$\xe6\x1cIQ5\xd1\xb7\x9bH\x90\x1d\x17\x8e\x07a\xcd:\xda\xb3mY\xc8\xa3\xca-\xd7%\xba+2\xbe\x91\xf0I\x02^uV\xa1\xf7\x83 \xda\xe3~\xd0\x8bzB\xa3e\x82~cm\xd5\xa6\xf5\x9dkm.u\xc9\xcc0\xf2.\xacP\x97\xc7x_\xa6q9exIq\x19\xa8Y\x83^\xda\x8b/xQ\xc5\x18\x95\x08\xd0|\xda\xd0\xac\x8d\xdd\xf8\x80n\xbc\x18\xf5/I\x04)zBz\xf5k\xb0l\x18AWB\xca\xfc\xa2\x87j\x18\xc9\x80\x87\x15T\x88\x13\xc88\xec\x1fDq\xf8`J\xbc\x10\n\x15\x00\xb9\x8b\xf2S\\\x10\xd5(\xb7&}\xc0\x11xq\x12\x17q\xb4\x107P\n,*\xabr\x91\x82\xae\x9b\x83!\xa6\x1c\xbf\x89\xd3u.\xd3)gl\xc2\xe2\x1b6\x85\xab;]\xffP\x8b\xec\xaakM\xcb\xd1w\x81e\xb5g\x9f8\x9cQ-\xdb{y\xb1i\x1e\x19\xca\x84\x9frG\x1d\xc0#\xd3\x98]\xb8Q\x1cA=b\x02\xe5\x90\x86r\x0d\x1cA^\x1e\x07e\xc5j\xf5)}5GJ\x8a\xba\x13y\x06\n\x97Q \xaf\x1f\xfb5\xcb\x95\x82KXh\xc3kW\x8d\xf4\xaa\x0bL\xee!\xe8y\xc0\x17\xd6\xa3i~A4\xa6\x08z_\x18\x9fp\x1c\xe3@,\xf8\xaf\x9d5\xc7\xaa\x9d>G\x96d\xb3\xadS\xed{\xa7\xbd\x9c\x96\x0f\xa8\x84\x0e\x9e>\xe2\x08\x92\xb6t\x87\xa5G\x1f\xbe\xae\x0f^_\x0cm\x80Ay\xb6%\xfe\x9e2\xf0\xde\xdc\xfc\xb6\xcd\xbcag l\xbf\xe5\xa9\x8b\xb6\xf4}\x18j\xb1\x01\xd2\x92\xb0g\xc1s\xd8\xde\xe64={\x1e@*\xe8y\xe1\xb3Qr\x89\xcaT\x87\x1dh\xba\x19\xd4\xb5\x83\xf1\xc9A\xe0{E\xfaq\xb5b\xd9I\x943\x97\x15'}Hv\x02\x0eqA\xaf\x06\xb0C\xd8\x1c\x8bh\x97\x94\xaf\x7f\x81>_\"%\xc6!\xec\x14\xf0\x12R \xcb\x14\xb6\xd1h\x0b]\x81\x12Y\x90r|\x0c\xca\x8f\x12\xd8>\x844\x10\xe0\xe6\x1f'\xf2\xe3\x04v\xf8\xef\x97/1v7\xff\xe3\xd0\xcczU.h\\.U\x8aK\x95\xc1\x0bH\x9f\x07\x10\x8f2\xb4\xa5\x19e|$\xf4a\x17\xb7\xac\x92\xb9D|.\xc2\xc2\xd5\xf7F\x7f\xfe\xf3z\xb7\xdf\x9f\xfe\xf9\xcf\xeb\xe9\xd3~\x7f\x87\xff?\x9b\xcd\xfe\xfc\xe7u\x7fO\xfc\xec\xef\x1d\xf0\x9f3\xb6\x8b?glw\x86\xdfL\xf1\xe7n\x7f&J\xfbL\xfc7\xbb\xdc\xdc`W\xce#\xe9\x15,/\xdaM\xcf\xbabG\x08\x19\x85 \xa9\x03A\xe2\x86\xbdD\xac\x1a\xdee\xc6\x12\x03\xf8\nmo\xa7\x97\xb8v)\xbc\x80\xf8y h\x9e\xcfw\xd7(\xbdD\x0f0\xc76\xdb\x90\xb8U\xdbl\xf0\x9420\xae\x84\xf1J\xcdA\xc6\xd7\x8fI\"\xe3\xd6\xb3\xa0\xe1\x9a4\x04)\x9c\xf6\"\x05\xad\"H\x89[\x83\xa4M\x84US-\x99,ZQ-v\xde\x11(\xdeLXldhx5\xea\x13\xa6\xcf\xa0\xd6[\x04*\xb7\xc5{<\x0f\xb9\xec\xe5\xa7\xd5A\x17c\x1eHs\" \xc7)r`\xd7\x07`\xd7,q]e\x00\x88{9o\x14/\xb4\xbe|A'\xc1\xdaG_i\x94)\xbfO\xd8\xad\x1f\xf7N\xf0\x17\x97\xe38\x0bo\xe0\x13\x7fT\x15\xcc\x8e\xa0\xef\x9ax3\x94\xb3ng\x05\xfbd\x19\xf5\xc6\xba\x04}\x9c\xdf%\x13%,\x9b\x82tM\xd6vUZ\xeb\x95~\xcf\x12\x116\xc0U;\xd7k\xbf\xcf\xd2\xcfw\x97\x8e\xab\xf7\x16\xf9\x18\xad\xff\xdb\xc4\xe1\xcc\xe5F\x81\\\x0c:\x95\xe2_\xeb\xf2\xaf\xb8\xfc\xab\xcd\xc8\x86\xa2\xdd\xb6\xd6\xa1\xc52\xb8y\x92\xa5i\x17\xb5\x01\xdd\xeax\x0d\x11m\xff'\xfe\xb4d\x86jmY\xf8\x8fm\xd2\xecWj\x11\xf4\xd4\x10\x1b\xa2\xfa\xa0\x1f\xf8\x89\x7f\xb0\xff$\xd8\x88{ih\xd0\xdc%b\xf3\xec?i92\xcbKo\x19\xfa\xc8q\x80\nv\x15\xad\x0c\x95.\x06\x8a\x92h\xab\xa2-\xe53\xb4\x95\xfa\x89\xf0kV\xf4\x1c#\x02&h\xae\xaa\xf7\xc7x\x97m\xa7r\xc3\xacim\xdc\xee3\xda0\xe4\xc0\xca2\x14\xa1\xb1n\xed\x15\xa7\x07\xbbm\xd8\xae\xd8\x80<\x84E\x08\x13\x8a\x19@g\x02\xf8\x9e\x0c \xaf1\x8cv\xa9\xc8\xa8Dq\x07x\x1f\xc6\x019E \xfb3@\x1f\xdd\x97\xb0j&%\xc2\x8f\x9a\x9f0\x94nm\xce[\x11\xc5\x9a\xe85\xc7%\xb6\xdb\xbaq\xf08Kq\x87f\xbd\xbf\x96`\xe0\x12\x17?\xb63B\xf4\x04\xc5\xf9\xa0\xbb\xb8\xa0N\"!k!dE\xce\xfb\xdc\xc0\x0bX=w\x1d\xe5\x98\xa7\x96\x8c\xef\x02\xd2)\xba\x18\xdd\x10we\x1c\x00y\x80M\x8c\xf9\ns)\xd9\xbf\n\xe1\x0eC\x1d\x15\x88\xa1\x13\xcc\xca\xe8\x8b8F7\"\x9d\x13\x7fK\xb7\xa6\x99r\x8c]*\x1f^o\x1c`\xea\x9a8Y;\x92\x0c.\x0d\xcb:\xfd\xb9\xcaX\xf4\xc9*\xb1I!:\xa77\x8db\x0b\xa5\xf1V]V\xed\x93\xd8\xbf\xc6j\x9cA\xbd\x13\x9a\x1a\xbe\xfb\x17\xd2\xcdTl\x8bIP\xe1\xd2\xb50\x06p&\xbdl\xea\xb1 \n\xe0\x84\x04\x90\xd0\xf8*\xe2\xa7\xc4\x18+\x86/\xd0\x15\xee\xa3\x85\\\xdar\xe0\x8e\xe1|\xeb\x82\x90\x87\xc8\xa4'<\xcaQCZ\xfe(\xeaN\xe9\xf8\xd7\xbd\x84\x95o\x92\xf35\xc9\x9e\xc4\xac\x9a\x98\xefT\xcc\x97\x84\xa9e>N2\xbf\xf7$\xe8}\x8c\x93\xe2)\x8a\xb1\x0fr^\xee>\xa3B\x80r\xb1\x87\xbe\xc79\xd8\xbf\xaf\xe8)\xe2\xa5~\x93/\xddSz\xac\xbb\xedcr\xeb2b\xa1\xa5q(g\xf8l\x8e0\xf4_\xe6\xc7!$\x1dp\xa4D8x\xfc8\xf03\xc7\xd6M7\xebc\xd0\xa7\xa3RqN\xcd\xbf\n!'&v\x0d\x870\xf2X\x96\xa5\x99\x17\x827Y\x08\x7f5o\xca\xf2\"K\xef0\xb0N\xb4\x16\xef2\x96\xaf\x97\xcc\xbbt\xb9\x08\xdd9\x11&\x06y\x1b\xc3a\x88\xde\xe0ROf\xce\x154\x1aU\xe8F\x86\xb1]\x0f\xbd\xc9\xc5\xed\xd3\xdbt\xca\x9b\xdc\xdab\xda\x0b\x19Z\xd9\xb7\xeb\x99o\xbe|\xc1O3\xb9\x7f\xce\xca\x12\xc7\x1d\xa40r\x98\xc7\xd7\xf3\x9f\xa3\x82eo\xa3\xec\x93\xbd& id\xd5\xeeO\xed\x1f\xac\x89\xd1\x1d\xc1\xe0\x00\x8608\xd8{\xba\xef\x80Bm(\xfc,\xe0S\x12'\xa42\xa5\x10\xb0\x88\xaa\x82(\x90\xd9c\xd6!\xdd\x08\xc6\xfb\x9d-\xd24\xf3\xedr\x15\x96@\x08\x8a \\\xeeo\xca\x84\xed\x18\xe4R\xcb\xd8\x1e\x8b<\xe9\x9c\x8f\xd5_\x9d\xa4k\xf4\xa5W\xf5f\x8b\xf4V\xa4\x1a\xd7j\xb2D\xa4\xc8/\xf3\xb5\xb3d*\xe8W\xed-\x87\xb2\xf8\xb6|\x85.>\xc2\x9d\x05\x7f'\x8cM\x15\x91\xac5(Z\xa3\x8a\xd4\xda\x89 \x8aF\xfbbC\x9cO\xe6l\xba^\xd4G#\xf7\x8f\xf9\x12-\xe9N\x93I*\x87\xca\xacw\\\xae^\x17\xb3\xa7*\xe3|t\x1b\xc5\xc5\xab,\x8a\x13\x0dNr\xaeo\xd3\x8c\xd5\xdb\x9f\xa4S\x96\x99\xe0+{\x13oY\xf5\x8a\xa3\xc4\x1c/\xb2\xe6\x92\x82<\x0bzBE\xf1J\xb4\x15\xd8M\xb3[\x98\xfbU#\x81\xdd\x8fVX\xc3W\x97\xe7\xd7\x95\xdb\xf3\xcb\xa4\x1c[\x88\x8b:e\xb8\xaa8\x08>\xb4+\xd2\x95\x0dG8\xce\x8c\x03\x92\xd7\x17DK\x04\xa9\xa8\xad\xb8\n\xf1 \x14\"4\x03\xcc\xebV4\x06\xdb/w|\x10\xba\xd8f\x89\x1b\xda\x87\xea\xcdaU\x1a`\x14\nW\xdcx\x07 \xc7\xd5m\\\x16B\xeab\xe9%\x17\xc1\x0c\x88\xd8`\xabL\xcd\xe1\x08\xfc\xc8\xd8c\x9d\xf8\x04\xd4\x8d\x8b=\xac\xd6\xc9\xee\xa7\xaa(\xf1\xcc\xd5\x1ah\x9c{Y\x99\xb7\xde\xe4b\"\x94\x01\x8a*!\xd4%\xddRy\xd3\xc2*\xb1\xd06o\xb8N}aX\xb1\x91d'\xf6\xed\n\xa0\xb9xI\xb9\xfa!\x9c\x93\x97\xf7\x1ct\x11\x86.\xf2\x91f#\xbew\x82+B\x81\x9es&\xa2\xe4,zq.\xd8'?\x13\xce\x07\xfa\xb6A\xcd%e\xbb\nztn\xa5*1NKa\xa8W\xf7Mz\x9d\xdcD\x8bx\nI\x9a\xec\x88f\x1f\xc9\xc3a2_'\x9f<39\x9dz\xf0\xb8wLDnk\x02n\x11F\xb0\n!F\xe1\x93\x13p\xbf\xe4bb\xcc\xc7c\x0cY\x1a\x9c\x96\xf1\x97\xfb\x1c\xa3]\xf37?&\x93\xc5qi\x16\xb3\x0bi6\xc7\x1c6\xcdv\xde\xc6\xdc\x16\xbdY\x96.i\xdc\xc0 f\xfc\x94\xd6\x8f<{\xbe\x9aC\x9e\xe0({\xeb$\x9f\xc7\xb3\xc2\x0f \x9a\x15,\x03\x96L\x81\xdd`\xf0\x8f\x00s80\xb48\x10!\xfa\x10X\x02U\xbb\xb4\x8d[F5|z\xf6\xa3h\xd2\"\x0eQyd`nK\x0em\x8c\x0bXn\xda\xdb,\x96\x97{&\xb4\xa5\x8e\xaeJ\xf5\xa5\x8fw\xc0{\xfbT\xed\x9bz\x99\x0ci\x8c\xe9\x9ej\x03\xa2\xb0\xcfT,\xb6\xad\xd5\x16\x93`\xe2$\x84\xd5\xb9 \xdc$r\xc0/L\xe6\xb0b\xba\x98\x93\x8e|\xf5\xcd\xf8\xe3\x0e\x1a\x7f\xab\xd1xj\xc0E\xc9E}\xff=\xd4\xddEp)\n\xc1\x16\x1d\xf1)\x88\xb5\x9eFE\xc4\x97\x1ac s\xa0\xf9}\xb1\xa6\x1d\x89\xa2@\xd2\x92\xa6*\xe4Kx\x1b\x14\xa5\xad\x01\xee\xfb\xef\x914\x06\xa1XT3\x10d\xed\x17\xed\x94q\xa5\x87q\xf2J\xc6\xeb\xdb\x93\x9f\xea\nc\x82\x7fP\x01\xad\xea\xaf+\xce\xcf^bB\n\xae\x8d\xc7\x89\x80\x8e\xee\xfd\xc6\xfe\xf9 \xdf\xee,\x13\x82\x06\xbf^\xc5\x88,\xd5\xdf\xf5\n\xe3u\xa2\xd7)\x7f\x19\xb5\xaa:\xad\x87\x99\x90\x06\x10;\xd6\x8b\x05G\x10+\xccw\xbdq^\xb7K\xc37\"EE\x06\xe4\xf29\xc9AVG\xf4\x04\xcfoC{Th1\xdb|\xa4kxld&7/r\x15eu\x86\x9b\xa1;\xa1 \xfb\xc2\xba\x07U\xac\x9e\xf4\n\xc3\xa0\xa9\xe3*\x1c\x1a\x126;\xfcH\x1d&r\xcf\xb5\x9e\xe4\x97/_\xc2\xa0\xf6k\xb7\xf6k\xbf\xf6\xebi\xfd\xbb\x83\x10\xd8\xf6v`:]\x83\xe0\xb6\x03T>\xbd\xa8q\x17\x0c\xe7\xab\xa0\xa9\xcf\xbc\xb04\x06\xfd\x10\xfa\x1dc\xdb\x9c\xd3PPW*\xed\xc2\x97\xdd;\x97\xf3-e\x05\xc7\xfa\xa9\xef\xf1\xd7\xea\x9d\x17V\x8b\x1eP\xdfH\x9d\x88\xe2\x04\xd2*\xf5\xc6 \xba\xa3\x0d\xe1\xa4f\xe6\x02\x0d\xf3<\xa1\xe7)\x87\x04j\x92\x9e\xc8\xb0\x80\x0c\x87\xfe\xee\xc2N\xea@\xf7\xf3\xc9}\x82\xd4\xf4!\xc8\x82\x9b\x1a\x92~\xa8O\xf2X\x10\xd6\x8e\x13\xbb\xca!\x864\"\x01\x0bXV\x9c\x16\x17\x10\xce\x9c\xab\\\xeaK8x\x8bx\xf2\x89\x1ag\xa7>\xde\xb7\xaf\xb0\xc2v\xa1y\xa3zB|w(\xe6,eZ\x85\x90\xa8\xd9\x96\xe8\x18\x82\xb9d\xdarn6\xa5\x8bo%\x02\x88bS\xdf\xe3\xe3\xa9m\xeb\xe7\xf5AJ\x0b\x01\xa5|\xf2\x83\xe7\x86\xc0\xe3\x1a\xe1\xdb\xb6C\xc88z\x8eDWH\x1d-F\xa9{\xaf\xe3\x98\xdeu\x13I\xfaB\xfbU\xb9\xb0\x08\x07\x16\x0c7D\xe2\x15_$\x91\x93\xa4\x16^\x8a\xb8g\x92%;\xa6\xf4\xa0\xff\xd2\x15:\x99\xd8\x93\xcd\x1a\x02)Mx\xe2\xecd\x9a\x91$\x9f\xef\xc0\xb4\x95\x02\x0d\x01 \xa5\x0dM 1\x8a\x00\x8d\x9er\xfd\xa4r\x832\n(\xa9\x9b\xd0\xfeZ\x9al\x0d\xc3\x0f-\x99\xee\xcb\x17\xa5f\xa8n\xac\xe5\x8c\x87`\x89\xef\xa2\x9d\xb0\xfc$l\xd4\x01\xbd\x16\x97\xc40\x84s\x95q\x81\x13D\xd7<%\x81>T*\xa8@k-p0\xfe\xdf\x7f\xafzq\xb5\x8d|\xb2\x0c\xd0Q\x03\x8d\x13}\xa6\xbe\xc7\xebUJ\x82\x10C|\x18Q\xae\x04\xe4\xaa\x93\xc6\x96\x97q\xfcS\xe5\xf6\x00\x0b\x96\xe7P\xcc\xa3\x04ny\x8de\x94}\xf2\xc4\xb8P\xb9\xaa\xc0\x86\xcd*\xd1\xeeH\xad\x05\xff\x91\xe2\x95\x19\xde!\xa4b\xe1\x91\xbf\x93R\xf94\xc5\x01{A\xa8}_S\xa9HM\x91\x05@J\xa3T\xd38\x9aJ\xb5@or\x10\x1a\x82\xb0X\xc1\x04WP\xae\x8aX\xdaL\x1e\xf1}8*\x05\xbc\xa1<\"\x8f\x1cz-\xfe\x7f?\xd0u\x7f;\xa8\xec$gQ\x02\xd01\xa3\xa4\xdaJ\x9a\xc2C\xe2\x8f\x1a*\xea\xc6\xcbk\x94\xda]\x14?\xb0\xea\xa7\x9b\xa1 \x1ew\"(Z\xc3\xc4\x85\xa6\x80x\x00q\x8e\x81s\xe3\xe5JdH`6\x1d6n b\xcc2\xd2\xca\x8c\x96\x82\xd6\xf7B\xb8#\x8b\xa7Y\x14'^\x083\xb2T\xed\xcf%Y*g\x17\xc2\"\x109S\x8d\x8f\x13N\xaa'\x0deWd\x99\xa467AX\xc6\xbd\xde\x8au-!^\xeb\x8fo\xb3\xb8\xa8]\xbcn\x99/\x91\x08\x96\x9f\xcc\xa88\xb9_\x1b\xd6w\xe2\xbc\x8a\xc6\xb5E\xceP\x18\xeeM;\xc5\xb2\x8e\xeb\x06#\x1a\xef\x8b\x04\xf2\x8c\xab\x8cQ9^\\X\x17\"\xea!|\xeb\xc9X\xc6\x02\xc6\xd5.\xa0A\xac\xb20Pes 24\x00\xd4\xb2!8O\x05\xc4$1\xc1P\xb6\x14*j\xc5Jk\x1c\x8e\xbeBt\x91\xd1@k\xe4\x12\x1d&%qW\xa1\x0ej\x15^\xc2\x80W\xda\x11\xcd\xbe\xf3+\xfa/x\xcc\xad\x95b\xa2f\xd1\"g\x80\xddB\xc6\xf2U\x9a\xe4,\x04ek\x9e\x98\x17\xb0\xb5%n(\xdd\xde\x96\x93\xeb\x8bl\xca\xbc\xbdMw\xe3\xb2\x05\x88\x8aT\x15A\x08W~+5\x13\x08'\x10L\xbc\x17\xe7\x82\xc1\x98\x10\x11!\x9a\x06y\xed\xdcV-\x84\xf9\x8a\xa4 \xee\x8e\xee\x9ai\x93l\xbb\xf5\xb8\xd8\xb4\xdb\xab\xa6n\xab\xc3.\xe9\x89\xbf\xbb\x9d\xfdJ\x9e\x15;\xb1$\xfed7]o\x07\x00\xac`n\xba\xb1\xef*c+\x96L\x15P*/=\xb3D\xe4\x98iP\xa1\xf7\xc6h\xc2\x97\x0b\xe4\x91?F\xc5%\x1cA\xe4\xeb/\x02\xb4\xe3\xab~\xd7-\xb2j\x9f\x1e\xc2( k\xaf.\xb1\x8a\xf0\\J\x1c\x04OCeu`\x8b\x03\xa5\xce\x1f\x88w\x06W \x90^\x9e3|3\xc7%\xa1\x95w{\xc8\x8aU7r\x89\xbc\xcd\xf3\x03\xebR\xdf2\x82\xb1\x18\xf3&\x9d\xd5F*\x03\xf7\xdaWL\xd4\x90Jz\xc1\x1f\xc2\xc9%\xd6b9\xeb\x1c\xbdR\x11\xce\xe3\x9c\xfeh\xe0\xfe\x88U\xcc\xa5,\x87#lIXq(\x89Q\x96\xe1Qi8f\xd8^\x19\xfa)8\x90\xd6\xf0j\x11KvA\x18\x13%R\x92%p\x18\x9d\xfd\x9c\xfcB\xe9\xf0#\x0f\x0b'\xa8S\xa8\xcf\x9c\xde,\x9b\xce\x8an\xa5\x163\xb4\xff\x1cb\x0c\x15\n\xf1\xf6v\x00\xd9(\xbet\xc1\xa0Qak\x19\x0e\x01I\xa6nd\x9c\xc3w~Q\x9d\x9f\x0d:8D\x89H[l\xf9\x99\xca\xd9\x13\x850\x08\x0c@\xec\xa0\xe4cc\x93d~\x14\x08\xe5_\xa3\xfe\xa5\xb6{]\x0b\xdf\xb49S\xeb\xc6\xb5Ib\xcek_Vn\x10\xd2p\x83\xc60A\xd1\x05g\x12\x94\x82\x98\xdb\x00\xadT=(\x02C\xf0l*FRe\xb3\xa2\xdao\xc1\xe5.B=\xe0]Q]\x89\x9c\x11.G|\xe7R\xef\xc5\x85\x88\xa5\xc9\xc9\x1c\x0eM\x99\xa6\xec\xca4}\xcey\xa9<\xd4\x04\x853\xb9\xa6\x9b\x1c\xabM\xeb\x1fM\xcb\x93\x0e\x0e\x0d\xcc\x08\x0dU1\xdav\xb4\x98\x19\xde\xc8@\xfb\x9d\x00]\x9e\xb9\xc6QS\x9d2\xcc`\xf7[1\x15\xa4YJ\xdd\xd0D\x19\x1fY\xe6'\xf5\x1b\x88\xf7\xa4\x01\x12\xe0\xd9*\xd1<\x08(;CC\x0f\xc5\xb9\xdb6@U\xaaV\xbe\x8b\x04\x87\x0dr\xb2B\xc7\xd1\xb0E\x82\xb0\xe3>\xc2\x83\x1b\x99w\x87\x05e\xfd\x1c\xd1\x14s\xf2\xab\x0e\xd3\xbd\xcd\xa2\xd5F\xa7\xbb\xfb8\xef|\xf6g\x8e#\xa2<\x1eR\x8c\xc7\x83\x0c\xa5\x10\xa7[\xc5^NN\xa6\xbe\xc7g\xb3bS\x90\xc2}R\xf7\x97P\xba\xf8f\xc9\x99 \xcb\x87nnP\xf2\xec\xd6\xaf\x0f\\Z3p^c\x16\x9a\xa9\xb6\x8d\xbc\xa5&A\xf2\xd6%,HW4\xfe\xe8\x90P\xc2i\x0d\x14~Z\x9b\xa3\x90SS\x8e.[\x89\xe17R*\x95QS\xafY\xef\xa7B\xa4\xf7\xcd\x0f\xb0\x9e\xb2JQb?\xce/\x0d\x04\xd1U\xba\xf1R\x90\xa4\xb6l\x806\x93\xba\xcf\xd4<\xceG\xe9%\xd4c7kR\x81,\xf4UE\x0d\xa9\xdb\x1c\xee[\xd1K\xab\xcb8\xf3/B%3=\x85F\xc7\xf5\xfe\xca\xe1\xdc\x80\xfa\x1agt]^1\"\x83\x84Hp=\x8a/\xb5\x9d\xde\xbb\x8a\x93\xa9\xa4n\xbc\xa8\xc1#\xa7\xd0\xbd)\xdb!\xa3\xa1\xd0X\xde\x1f\x16\x81\xf2\xfe\xce\x14\xe7Z\x89\x11\xf6Di\xda\xd3\xc5\xddD\x91\x90\x9ao7\xe9z\xc2\x92\xf5\x92e\xbc.\x97\x13lj\xb3\x91k\nEak\x17G\xf6\x1c\xeb\xb3C\xbf\x8f\xf1,K\x97\xfcT\x86Cx\xfb]UV\xcf\xac\x10b\n\x1eG\x82\x05C0\xae\xe5j\xb0\xe3Mti\xa2-\x1b\x90\x88\x99Q\x16\x94\n\x83\x94<\xaa\x1b\xb4,_\xc9Q\xd7?\x97~,\x1d\x0c\x8f\xee}\xd7\x03m~D\xee\xd0\x02\xe23K;M\xbc\xaeZsn:\xf4\xb2\x8e\x84\x9f\xde\x11:\xe1\x94\xd6\x9b\x1b\xf4\x83p\xae\xb1\xb3%\xd3\x93*yA9Y\x08s\x9d{\xba6i\x17\xa7\xd6\xc0\xfcF\x08\xd4?\x96\xaf\xfd\xf2\x04 ;h\xb8\xb7\xe4=\xce\x11\xe7\xcb\xf5 &bv 5(\xf3e\x1dV8(\xbc~E\xd0\x92\xfa,\x87\x9cU\xfbYzd\xb5\x10\x93{\xc3}@\xf3w\x99\x1d~\xc1\xf2\xa1\x996\xb6`\x84u\xf8\x96\xe5\x1d\x90\xdf\x12#\xb0\xca\xcd)\xd4+\x08]Vs\x1b\xc6\xa2\x9aNU\x06\xf9\xe9\x9ca\x87\x0c\xc8\x96\x95\xa1g\xaa\xfbvDd\xafL>\xabG\xcf\xca\xd9B\x04\xb5\xe4\xff\x7f\xf9\x02\xb7q2Mom\xfa\x92\xd2\xe1\xef\x91\x93p93\xd1Y.\xa0\xc4\xb4xZ\xf9N\xf5\xc6h\x89\xfd#\xd2K\x07x\xf0\xcb^\xce\x8a\x8bx\xc9\xd2u\xd1Q\xccI\xd8-\xc4~*N\xb0\xeak\x8c\x87P1@!\xe0\x00d\xa1\xa5\xb7\xc0~_'\x05\xcbn\xa2\xc5=;V\x9f\xd3=\xabR\xa2k}d\xa8\x80\xa9}\xd0*\xffH.\x1f5\xb1\xbe\xd5|\\S\x97fl\x86\xb6\x91\xba\xec=3\xe6k|\x84\xed\xb6\x81\xa4\xb6\xc6\x02\"YX\xe2\x011g\x96d\xe9b\xd1EA\xa4C\xc7g\xbc\xb9\x05\x93?_OQ\xfc\xd0_\xd9\xf8\xc5{['D\x7f\x0f\xd2\x99i\x0e\xc7{\x1b#\x9c\x8f'E|#\xb4\xaf\x91\xfa\xf3[:\xa7/\x08\xe5M\xaaV\xd5\xaeW\xc0\xcbC\x99S\xc9l\x15\x0e\xa1\xda2~+/\xcaz\xe34Q\x93\x17\x97\x12\xe5o\xea\xb6\x87p\xb9\n1\xa4\xd5n\xa0\xf6\xdcr\xc9\xa6\xb1\x08\xce\xd2N\xc2\xea_Ta+*Rh\xd5\xe08X\xb2.za\xb9\xf36\x1c\x82\xf1\x0d9\x08\xbbNm\x18\xf5\xe2\xea|\xe8\x94\xe0lc\xe6\xd9\x11S-Eeb\x9c\xebq\x88\x9a\xf1SY$\xe1\x9d\x82\xe7\xc16\x17\x82q\xbeE\xfa&\xbd\x15 \xc9|\xa7\xfd7\x1a\x11ys\xf6\xd9\xa3\x8d{D9FBj\xa9\xb0\xd3\\#\xca'q\xdcX\xe3*N\xa2\xec\xae\xb9J\x94\xb3\x83\xfd\xe6\x91L\xf2\xdd\xb6\n;-5\x8a\xd9\xe0`\xc1\xda\xea\xec\xb4V\xca\xa2[G9h\x1e\xda\xfd{\xda\\\x95\x1e\xde\xf6\x16\xaf\xefnG6,\x8a\x931\x08\x95B.\xdc \xac\xab'\xb8\"\x81\xed\x0c\xbc\xba\x90\x92S\x11x\xd6r\x11T<\x7f\x1e\x94\x03s\xb6\x0c]p\x17:\xe1\xafz:\x0c\x12\xba\xa0!tBE\xe8\x88\x8e\xd0\x15%\xd5\xa3M\x03k\xb7\xcdd\x11\x15q2h\xed\xbdq\xf7\xaaG\xf5-\xdbl\xeb\xbaq\xbbC'\xd2\x02\x1dh\x9cz\x94\xba\xae\xc1\xe8\xa9mO\x82r\xb1h\x0e\xb2\xa5\x1eN\xb3}I\xb4\xeb\xf4ZD\xa3\xd0R\xd8\xea\x0f\xa5#\xa4n&\x1d\xd1{\xc5\xe5b\xed\x989<\x94\xd1\nE\x120\xdb+\xc4\xfb\x98|J\xd2\xdb\x04\x14\x15\x18\x82\x18\xb6[{\x88V{uJT\x05v(#\xd3Q,W\x07\xb4\xc7F\n\xf6\x99C)/\xdb\xe4\xac\xd3B\x80\x8e\x88\xd1\x08n#\xd7VR\x81\x1d\xcc\xe2\xc5\xe2M\x84z\xba\xf5\xfd{i\xc4j}^\x93\xda\xbcf\xa2\xc7\xbd\x8dzlDX]\x89),\xc0\x0ea\x15\"\xe7\xe4k\x1d\x9b\x92B\xed\x17\xd6[Dy\xf1\x8e\xa1\xa0\xadB#\xf2W\x17i\x81\x92\x92\xfe\xeed\x1e \x9f:\xdd\x1f\xb0\xa6\x0d,\xff,\xcf\xaa\xc8&\xf3\xa5\xa9\xc5\x8bC\x18\xec>QIb\xe0\xe5Kx\x0c\x87\x87p #B\xe3\x9b}\xfef\xb0\x0fG\xb0\xa7^\xed\xf1W{}8\x82}\xf5\xea\x80\xbf\xda\x85#\xd8\x19\xc0\x10vv\x1b\x87\xb4v\x1c\x9fJ\x1bXM\x7f\xa7\x0e\"[\xca\xdf\xc4\x05\x1a-Ov\x9f\xf2\xbd\xec\x0f\x9e\xed\xc2\xf7\x98\x14<\xd0\xac\x99\xeaK\xe1\xfd\xdf\xff\xd7\xff\xe9\xa0\xb2\xe8cTU\x97\x16\x83\x9ak\xd8\xa0\xe9h\xa5\x062p\x0dd\xd08\x10\xa0\x06\xb3k\x0c\x06\x7f\x9b\x1d\xee\xba:\xdc\x95\x1dv&\x9e\x85T\x88>\xa7\x90L\x93$\x12t\xb0\x1f\x1aX\xffB\xf36\xc3x^\xe8\x97YCy\\V}\x1f\xf0\x0f\x03c_\x94\x89\x0d\xeb\xfcVho*\x11\x17\xac\xa9\xa32\xc2\x99\xbe\x9f\xcb\x11\xefh!\xd0\x9a\xf7^N\xaa\x00\xf8z\x95\xd9T8\x8a\x07\xf0\xaf\xb0\xcb7P\xbfI)_\xa5n\xf4K\xf2\xee\xb6#i\x0e\x04\x80\xd7\x91\x93y\x94\x9d\xa4Sv\\\xf8\x9a\x0f\xac\x199Z=\x18b\x9f\x8b\xdd\x8f\x1f\xef>;\x004\xcc\x7fq\x08\x8f\x0f\xf6\x06\xcfj&_\x06.Y\x04m\xdfX\xb8Q_\xa4-\xd6 \xb2{i\xd6\x19Xu\x06\x97!$\x95\xa3\xfa\xce\xe0\xfeF\x1e\x14\xde\x9a3\x19\x103\xd9m\x9f \x1f\xa5c\xe1*4C\xa87\"\xd2\xc2M1\xeb7\xe2G\xda\x81$n?\xa8\x9c\xec\xf5\x8d\xd4r\x11\xe4&\xc7\x0d\xdc\xcb\xb6ksj\x10\xe8\xdb\x01\xc1\xc8\x95h\x84\xcc\x84\xdcbj\xfc\xd66\xdb#\x89T_z\x9b\x1c\xd5\xd6J\xb2\x1a\xd2\xf1\xcc71b\x0fv !\xb0bOY\xa4%j5\x1a\xf1\xa3\xd6\xf47\xed\x87 t\x0c\xbf\x86iI\x0b\xcd\x9a=\x1c\xaa\x91[\xe9\xa8\x11;\xcaA\xf7C\x04\xb0\x81\xa9\xc3\x16lX\xb9\x99\x1d\xc7\xf9\xd0\x0c\x8ci\x03\xf3\xd4\x06\x0b\xada\xf5WQ\x8f\xe7\x06\x87\x10\xd75\xd3\x8a\x91t\x0b\xff\x95\xcdmy\x06\x95\x82\xa1\x01~\\\xb6\xd0t|\xee\xb4\xff\xe3*\xef%\xfab\x96\xac\x99b\xe2\x85\x9c\xe3\xe8\x18t\x03%\xd5Mhs\xbb\xf5\xbd/\xec\x14\xd1\xe5\x9bD\xa3\x04c\x92V\x00\xd71\x89\xf3\xfc\x9c\x10$\x81\xe2/\xeao\xf0:I[\x91:\xd4\xa5\x88\xd0xK\xf5\xc0\xf8\x8f\x1cV\x1d\x9d\xebc\x92RL\xe3]\xc2\x8d\x99\x17\xbd\x81\x01\xae\xec\x93+\x8aAs\x0e\x19\xbc\xe0M(\xd2hW\xba\x91\xd9\x03\"\xbf\x18e\x97\x0e\xfe#E\x0d}\xd9L\x8a\x8e\xbcB_\xaf\xa1@\x8aG_\x08)\xdd\xc8\xce\x0e\x0e\x86\xaf\xde\xce\xae\x10\xb3\x9b\x06\x86\x8c\x956\xb2\xa0\xf3\x18v\x7f\xfd1\xc8\xb60\xf8\xce\xa1\xca\xd2Y\x1f\xd5\x1e=*\xd5y}\xfb\xb8M\x8bQOhly\x9b*\x96\x01\xfb\x8d\xaf\xad\xf3-\xb1\xa9\x8c\x1e\xa0\x01v\xc0O,\xcaMn\x0c\x9a\x05\xef\x0b\xcfijh\xf5|a\xf5\x0d\xa3\xa9\x17\x9a\xa9g};\xbe \x08\xa9C4h\xe4\x85\x1eT@\xa9C\xeb\xde\xc3\xd1\xc4\x98\xfa\xa45 \xc68\xa5\xeeu5\xa3\x9b\x1ei9Nn\xb4\\Pt\xa63LcS\x164\xa9\xd7\x11\x87\x11\x04\xb5\x84*\xf5\xb4 \xb1\x9d\x01\xabfu_Zc\x14Y\x94\xe4\xb34[\ns\x0c\xca3\x06C\x83_\xa8z\x1dl\xa7\xc0d\x9b\x8d^h\xa9*\xe9\x95\xb5\x9a]9*\xb1\x0d\x0f\x9c\xc9\x95[J\xdb\xca\xea\xf2\x983v\x80\xe068\x84\xae\xa2\xc9'\x15\xaaf\xb9^\x14\xf1j\xc1\xa0\x88\x97,w\x86\xbcW\x03\x99\xaf\x93O\xa5\x9bJ9\xba\xea\x8d\xcc\xfaW\x94W\x852ut\x88Y\xf8\xdc\x93M\xbb\xda\xc5\xf3'5Lw\xfc\xd4\x8al\xaeLd\xe1\x05\xa4D\xe0\x8d\xaa+\xdf,\xb6z\xfcZ\x99\x81Ri\x04\x19\x9bj\x88C\x99I\xeakN\xd7\x90`\x14\xf1.\\\xc5\x1c\xf4\x8d5*u3\xafT?/h\xfb%\xc2\x13\x83\xaa\xa6E\xf3h\xcc-RNT3y\xaa\xde\x1d\xea5\xdc\xa9Ff\x8bu>\xd7\x1a\x10\xbf\x0fU\x89\xb2\xbaG\x9b\xedU\xc6J_\xbd\xa8M1J\xf1S\xca\x1d\xa3\x8eg\xe4\xc8\xf4\xd1\x1c\xe9\xbfj\x99\xd3Hnl]\x12\xd7\xfa\xa2p.r-\xc9U\xb5\x7f\x9a\xe7\xb1v\xb1}\xb5\xab\x14\xc2\x88\xd4\xe6\x12j\x99GY\x15\xee\xde\x8a\x14\xa0\x0eL\xeb\xa2\xe3$Z,\xf86\xac\x16y\x9a&\x0cn\xe7,\x81\xdb2\xa9\xd2\xd6!\xf4\xcd\\\x86B\x8bi\x10\xcd\x1au\xdc\xb0\xbb\xbc\x88\x17\x8b\xdaV3\xbb,!C\xb8\x03TB[j\xa5V\x0b\xb5w~,\xd8\x95x\xc3\xe0\xee:\x816']\xa3 \xa5\xdfS\xbd}\xcb\x9d\xac\x1ay}0\xb5\xfd\xd6&)X\x00\xae\xbev\xc4\x98qvk\x8b\xb2t\x97ug\xb3\xa63\x13\x85\x13\xfd\x80\xe1P\xa9\x1dB\xac|\xa3]\xb7\x17!le\x06\"\xd1\xf2Q\xe7#\xc7\xcf\x8c5\xc2\xf3\xe5\x17:q\xbe:Al:\x174\xdf\xaa4\xc2\xb6t;)t\x88\xe25\x82\x02\xb8\x88\"\\cW0\x0c\x93\xc9\xc0\xf4-.\xcb\xd7\x1b\x0dU\x93\x15\x03\\\xf4\xea\xdc\x960!\xb6\xb7A\xdf \x89\x8e\xa9\x1at\xfe\xccd\x14\xed\xd6\x8c-\xd6l\x90Q\xf8\xc2fZ\x10Y\xe1Cn\x12w\x83\xb8\xdc\x8b\xd7\xd6\x98j3\xeb$G_\xcc#\xa9KEiv\x1aM\xe6\xf5\x8aq\x95\xdf~\x92\xb1\x1a.tK\xdf\xab\xf0*\x16D\x93\xa4\xaa\xd2\x8a\xb4\xb4\x1am\x03 \xe7\x069\x8eug\xb4iV\x10M]\x12\x99`\xbe\xc08\x80\xc0F\xc9\xa5U\xf9\xab/\xf3f\xa3\\`\xaeUX\xd34\xc2}\x97\x8b\x84g\x00\x7f\xfb\x86&5\x0c\xd0Sen\x92\xb7\x16\x89\x1d\xb9jq\xfe.z\xe7c\xfa_\xd4b\x14B\x7f\x817w\xdf\x7f/\xd5\x15;\x98\x9b!\xc5\xe8\xd6\xc32\xfc\n^ \xb5\xa7O\xef4\xc7\xba\x0b\xce\xc1\x93\xa7\x81\xcf\x87$\x916\xca\xf3\xf8:\x81!\x16=\xfbV\x9b\xc2\x10\xd2\x10\xb3\xc9\x85\xb0\x0eA\xf5h\xec\xadNv\xbd\xd6\x85\x05\x7f\xb4\xb8 Evg|E{g-B\x90Q\x00I'\xacI\x9a\xcc\xe2\xeb\xb5r\xc3\xea\xd3\xcc\x7f\xe4t\xd2js\xe2\xc2,\xd8C0\xcc\x80\xb5u\x85IT\xda\x8fU\xa7\x93\xb8\xf4Xhw\xb9\x99%Y7\x0f\xdd=\xec\xfa\x90\xab\x91\x88\xd0\x86$\x14\xc3\x8d\x13\xd4\xa35\x0cJ\xa6\xa5.\x0b\x1d!ez\x0d?\x13\xf9\xc1\x05K\x81\x9eZ\xd5*e\xfa\xad\n^\x17\xc9\xd4\xd2\x83\x83 \xc4\x8c\xa8\xa3\xcb\x10\xe2v\xaa\x1aR\x1ap\xce\xf9\xacG\xec\xb2d\xe6\xf9\x8fz\x15${\x05\xf6\xf3\x1c\xd8\xce\xce\xf3@\xb9\xb9z\x91\x07\xdb\xe0oo'A\xa5\x82\xda;0\xe5zM\x8f\xa2\xdc&|o\x96\x88\x9c\xb9XTJ\x1c>o\xb0\x90Q\xeeC\xf0\x02\xd8\xe6\xff\xfcM\xb51K\xa4\xc3\xa68;+\xc7\x81\xe7\xf0\xf5y\x9de\xec\xbcF\x04\xc5G\xf9\xc6\xb1f\xaeD\xf2 \x9eZE`\xa9\x1e\xec\xbd\xc9\x9f\xc8OB3\x01\x95\x03\xfd\x81\xba^\xfe\xfa\xad\xc4I\x88\x1cT&u\x1a\xe9\xeb\x00\xaa\xaa]\xb3\xe2\xec6Q\xd5^\xb1|\x92\xc5\xab\"5\x0c\xa8#\xd7\x07\xef\xa2\xa5\x19\xd3d\xed\xaa{~\xb7\xbcJ\x17y\x87\x93\x89\\cA\x82\xe5\xd1\x9c\xf9\x85\x89\xa7('\xea50\xca@\xe4\xe7\x81bv*\xf1\x9b\xce-G\xae4\x7fpOg\xa1H\xba\x9eQ>\xb6\xfa\xd2\x93M\xa0\xa1\x86\xfd]\x1d\x81\\\xaa\x0e\xcc\xe7\xbe\xfe\x07\x9b\x89n\xe0SJ\xe8\xb4\x9c\xfd]\xbd\x95o\xdc\x15\x8f)\xfe7\xf1\x07\xfb\xe6n\x89iO0\xce\x9e\xde\x17I\xf9\xc1Fd\xc2\xe3\xfb\xa7\xa4v\xa3\xddK\x12\x0c\x19\x92+\\!\xbd#\xc1\x87\xac\xa9\xe5HF\xd9%\xfa8)_\x8a\x08\x05\x12\xf5\x85\xb5$I\x0b\xa0\xf5>\xba1\xfcr\xe8[[R\xdb'B\x10\xd4\xd3\xc8}\xf9\xe2P\xe0![\xefR\x10\xceY\xdbh;\xa1\x05\xcdH\x15!x\xe31\xcb\xdf\xa6\xd35\x9a\x9c\x98K\x89\x8c\x8e.W\x06\"\xde<\xda}v\x81\x88\xbdX9\x17\xae\xdf/\xd6\xd7q\x92\x0f\x1d{\x8be\x99\xab\x08\xb0\xed\xe9z\xc2\xb2|\x08~\x9f\x0b\xbar\xe9\xcd\xe2E\xc1\xb2\xee\xc4\x80\xf5>\xb1\xbbs\xf6_~\xd0c7,\xd3\xc8\xb4\x13\xb4`u_\xb4d\x0bD\xa9mT4d6Q\xb2?z\xb8f\"\x16aw\xb2\xefDg\xd6[\xb2\xec\x9a\xf9N \x19\xc5T\";\xdc\x06X0\xfe\xe1O\x0f\x8d\x08\x9a\x1e\xa3\xf2 N~\x0dtH\xe8pZ\xbf\x06\x805)\xb2.\xc2\xc5B\xe5\xb6k^\x97\x89\xcb\x0f\xf3m%\x94\x0f:\x0b\xe5j2\xa6\\./e\xec\xc9\x95\xaa\x03\xc3{\xfa;\xfb/>\x83\x85uG\xc5\x19\x9b!\x18WS\x0bv\xc3\x16\xc32`|\xadl\xc9\xf2<\xba\xe6Go\xe9\xe6\x8d\xb5\x8c\x1e\xff\xbe\xa2\xb7K\xaf\xd5\xa4\xe1\xb4`\xfb\x97\xfc|\xc5&C(z\x9c\xc98W\xda$\xfc\xf5\x87\x04\xd6\x91\xb28f\xf35\xe8\xc0\xb1\xaaok\xa2\x80\xd8\xa1\xf8b\x15 \xbe\xc4l\xba\xc2G\x87\xf6\xf0\xc9\xae\xa9\xd4\x7fH\xed!Er\x08\xf7\xf8\xff\x15\xf4\x80 \x87\x8e7\xd3\x11\xd2\xe4]q\x8f\xc6\xff\xdc\xab\xfe\xdc\x0f\x02a:\xf3\xf7'_\xb4!\xa3\xeb\xc0\xe8\x80\xc67e\xb41\xc4ZI\xc7\xbd\xa0\x17'S\xf6\xf9l\xe6{\xd2\xe21\x9dA\x84g\xbd\x9f\x07\xa6\x11)\x947\xd1/a\xc7\xe9\xf6\x7fS:q\x1b] \x07ft \xa3:S\x96\xb6\x98\x05\xa1\xf0\xbd\x90\xea\x1e\xf4i\xe7z\xfb\xa1\xab\xc3>\x92\xd8\xed\x0ebB\xadqq3\xe1\x9b\x88\xd0\x90\xd7\xcdh\"\x91i\xdc*'4\xb1\xab\xe5\xef\x970\xc0\x83}\x1b\xbc4\xc3\x18)\x05\x0c!\x1b%\xb0\x0d\x83K\xa3\xea\xae\xac\x8a\xc0\x0b\xc1\xd3kj%X\x80\xbf\x9c\x03\xfc\x1a\x82\x97\xcf\xd3\xf5b\nW\x0c\"\x97Z\xc3O6\xc9$\xe0&~\xbf\xe9\xfdD\x9c\xbdEO\x1c\xfc$\xa1\xd1nu\x1dD}\xb0\xf7TCZ\x071\x0f\x91_\xfcMC\xe6\x1b(\x8dkw\xfa\x14\xf9\x11&@\x9e\xf2s\xeay\"e\xeaj\x11M\x98\x9f\xb0[\xf8\xc0\xaeO?\xaf\xfc$\x04\xef\x9aW\xf7\xbc\x80\xd2\x1b({\xa2\xdf:\x1e.\xa2\xbc@ss\x11Yr\xb1\xc0\x1fy\x19\x16\xd6@+R\xb4\x10\x98\xf6\xd8|\x1d[M\n\xa5\x8b0{U\x0cl\xd0q\xf5\xea\x80l\xd3\xb1\x94k\xae\x8b}JXU\x9a\x16cm\xaa\xa9\xd6\xc1B\x8f:n\x1aB\xd9=oG\xe3\xc8\xbf\xc5$\xe9A\x97\x9d\x90F\x1cs\xb0a\xdb\xe5\x92}\x11\xdd\xa5\xeb\xa2\xdb={)\x88\xfc\x03\xdc\xafS8\xfeP\x1c2}\xbf\xbe\xdb\xef\xbb\xef\xd7\x9fv\x16\xe5\xffW\xe0\xab\xff\xbe\xdb\xca\xc6\x99P\xaahvM\xa3\xa8HaM\xfc\xd0X\xb3& \xb4\xb0\xab\xe6\x98\xa4\xd3\xb8\n\x96hm\xaen\xe7\xa3J/\x90\x86\x90\xf7>\xbe\x7fu|q:~s\xfc\xa7\xb3\x8f\x17-\x8a\x82\xfaQ+\x88\x00\x9e\xa0R\xb9\xa7S\xc2\xc6\xde~|\xfd\xe6\xe2\xb4M\x91\\\xefM\x08\xde\x9b\xf5v\xfe\xd3\xd9\xcf-\x9dX\n\xca^>Oo\x13\x9b\x0e\xa9\xa3b]j\xed\xabO\x8ay\x9c\\\xbb\x1c\xe0\x94\x16\x1f\xdb\x95\x87T\xd5\xc8\xdf\xf8\xd8;\x1ev\x1c\x0e\x19\xe1\xd8\xd8\n\x07 \xf5\xb7g\xafN7\x06\x07\xce\x8d\x06GUi\x99N\x99c\xfa\x18\xea\xdc\x1fy\xbcJ\xee]\xaa\xfb\xab\x84\x0f5\x13\xb1C\xd0\xc6\xd9\xabO#\xfd\xad\x1c\xa5|\xd9\xce\xd7\xcbe\x94\xdd\xe1\x94o\xe7\x91\xc8\x0f\xc4\x7f\xc4\xf99_U\x11\x86}\x9de,)~D<\xd5\xdf\xb8\x98-u\xec<\xdd\xfbUO\x1d\x82\x95\x13de`Z\x97\xe5\x92\xda\xe8T\xa5\x9aS\x07\xf6\xe8Z#\x13\xda\xf2\x86\x04\xb4\xba\xb6&\xc9\x80S\xdd\xb50\xd6\xa5 {\xb4\xd6\x8brw'i\xb6\x8c\x16\xf1_\x19\xba{\x05\xd2\xfe\x1d\xfb\xd6wp\xae\xef\xe0\x00\xcb\xeb\xaf\xf9w 9\xcc\x1a\x0eu\xda\x8d\xa5\xdd\xab.\xa0\xd7SX\xe9\xa6\xb1pT\xff\xe9\x8e\x9e\xd3>kj\xef\x1a\xea\xe5\"0\xa6jo\x1bA\x94\xbaK\x06\xb6\xfc\xdb\x81\x1d\xdfBf\xc3c\xd3\xb8Hk\x18\xd2\x89\x94T\xf2\xcf\xdeAG\xd7/N\xa5\x8c\xa1\xd0jt9\xc0\x14\xf3\xe6d~\x12\x8c\xfa\x97!$\xa3\xc1%zc\xfa&EoTm\xab\xbb!\xd6\x13\xcd\xda\xc2\xa90\x14\xd7\x90#\x16\xfec\xd2\xc8Y\xa4\x0e\xac\xf7\xf8]\xfd\xaf\xce\xb0zb\xd2\x0c\xa9\x96x\x16\xf8^\\\xb0,\xc2\xa5\xb0\xc9\x9b\xe1K\xd9\x06o\xc7\x8a\x9b\xa1\xf4\xfd\xac\x87\x0dk\xc9\xc71{\xdaa\x8d\x9f\xddp\x8a\x8dsI\x8d\xb0\"\xf6\xfa\xab\xe5\x1a=\xb9\x1ce\x97f\xfe\xbdX.b\x93\xa4\x06\xaa\x1f#*Q(\xa1\xc8)NM^\xa5\x1a\x108\xb1[oA\x83 \xedx\xd3\xd9r_\xc4AB?\xe6*\x84\x93\x19oE\x913\xf3=\xbdi4\xc0\xd1R!?\xccb\x02\xa6X\x86Y\x97\xda\xa0\nMr\xb0z\xa6i\xc2\x86b\xdc\x9d\x83^\x878\xb0\x0d\xba\x8f\xa86\x98\x1f;\x08\x03\xeb\xe0\x1e\xd5\x05\xcb\x7f\x05\xfe\xe9\x97VE\xe4xk\xea^\xbe\xdb,Z\x1d+\xfdBC\xee\xe8\x7fH\x85\xc5\xde\xaf\xcb:.Paa\x99\x94\xaf\xcb\xa2\x81Y\x94\xcb\xa2\xbd\xfd\x03Z\x97AD_\xfd\xa7.\xe3\x97\xde\x97$:\xadHw\x81X\x95\xec\x99%\x91,yj\x954i),!c!\x9b\xd9\xb3\xba\x9eH\xb5\xc6\xc0x?\x93\xefwI\x84j\x08S\xfaK\xd8\xb9\xd4\xf4,\x99\xa6g\xd1\xac\x0f\xb3\x10fJ\x06?\x7f\x7fz\xd2M\xefQ\xe6G\xd0\xa2\")\x81\x1b\xa3\xe9\xa2Z\x04-Ru\xa5\x08\xe8\xa3V\n\x01\xc7`>~x\xd3m,\xb2\xb3u\xb6\xd0\xfb\"\xc4\xf6\x86\xce\xfep~\xf6n\xa3\xde\xfe\x92\xa7\xa6\xb4u\x96MY\xc6\xa6\x9a\xee%\xe8\xdc\xff\x87\xd3\xf3\xb37\x7f<}\xb5\xc1\x18P\xf8\xc9X\x9e.n\xd8\xd4\xbb|\xf8\xb1\x8c\xcf?\xfep\xf1\xe1tc\xad\x0c\xad\x8fI\x84\x13\xbd]\x98J\x13\xdab\xde\xa2\xa4Qs=__\x15\x193e>]\xad\x14\x04\x0ehd\xdd\xa1\xf0\xfe\xf8\xc3\xf1\xdb\x87\x9a:\x9f\x9d{\xe6Y\xb4|\x17- \xd0\xc4U\x85\xd7\x84\xd6o]\x15\xdb\x85y\x13\xcc1\x9cg/\xce\xff\xe7\x92\x88 7!tB\xea\xbd\xf0T\xe6\xe7\xcf\xfc$\x9d\"\xd1\xda\x8a\x05g\x0dG\xb0\x16\xaa\x88$Z2\xa17\xeby\xb0\xad\xde\xc6\x89|\xc7?\xde\x11\x05\xaa\x1d\x1f\xf3\xf7\x97_\xc4\xf61\xca\xe9\xea\x02\x8e\xc0\xc3\x19\x8d?/\x17\x1e\x0c\xe5/Z\x7f\xa0i\xf7\x18\xe6\xf3F\xeb$7\xd6dA\x08#\x0f\xa1\xc9\n\x86Wv\x93\x10f\x97A\x08yg\xac9}\xfb\xfe\xe2O\x02w\xc6\xaf\xdf\x9d\xbc\xf9x\xfe\xba\x95\xb0l\x84EoY1O\x89\x1a\x0f\x83Kq2Y\xac\xa7\xect\xb9*\xee\xfe\xc8Ak\xf3-\xc2\x1cx+.y\x1ee\xc2v\x1be\x89\xef\xfd\x1ce \x06\x1el\x02\x08L\xd0\xe4\"I\x0b\xb8f \x17^\x19D\x80c\xfb\x1f\xec\xae\x87\x16d6\n\xe4\x18\x1d\xd7\x81#\x0f\xb3\xe8c\x04@\xce\xd9g/\x84\x9c\xaf\xfd\xba}\xed\xffx\xfc\xe6uE3\xce\x7f\xbd\xe5\x8e\xf3\xb3\xe3\xf3=z\xad5\x05YGH\x04\x84\xfa\x9f0\"\xe7\xb4\xe3\xd1\xe7\xe5\xe2Q\xdc+X^\xf8\xb1\xd8\xde\x1c\x0d\xd6K\x96\x8f\xc5\x96\xa4\xbe\xe4{x\xd2\xe3\x9ca\xc4\xa1\xf3s\x8c\xf3\x8bd\xcc\x10ArB\x18\xb1\x86!6\xdfcl4]c\xb7_R\xd3\xefx\xfb1S\xd6\x8f\x1a\xed\x10m\x95\x8e\x15\x94\x01\x95K\xecV\x18\"\x8e\xb0\x9bh\x11\xf3\xc9\xbd\xe7\xad\xa3\x91\xfb\"\x84\xb4\x835\x18\x87FAR\xe4\xa2\xa2\xc8!(\x0b\x85Ks\xfe\xa4\xd1\x93\x1d\x15\xa5}\x7f\x08\x93\xfco\xdc%\xdavx(\x1cH\xdaq`t\xd9\x15\x07\xbaX\x03\x81\xc5F\xd6\xacCj\xdd\x12\xb0\xdf\x18\xf0\xe7\xa7\x17\x9c\x9b{\x7f\xf6\xee\xfc\xc1\xb8\xb8\xcc\x8c\x07\x035\x1e\xce.\xc3k\x9d\xde\xd2A\xc8\xd6\x0ef\xc3_\xa3\x13\x1d\xc2\x07\x8e\xc0\xd0\xea\xdb\xa0\x15\xd6\xd2dP,\x8e\xfcC\xd1V/!\xcf\xc6\xd2\x90_T\x92? \x9e\xaa\x88\x8au\xce\x19\x16U\xb5zS_\x9bP\x96g,_\xa5I\x8eY\x02\xb2\xa07g\xd1\x94\xa19\xd2\xba\xfc\xfb\xcb\x17K?\xc0\x17c\x824\\\xe3}\xb1\x1d\x8e*i\x08\x91\x8b\xdd_;(\xe4B\xc1\xae\xf7\xc3\"\xbd\x12\xda\x97iTDzPm\xbb\x8e?A\x8a\xed\x1aD\x08^\xc1>\x17\x9cr\x88\xd6\xf8\x112\xe9\x88\x95\xff\xf1\xf1\xf4\xbc\xedJ\x7f\x03\xa4\xfc\xaf\xcd\x902\xd6\x90\xb2U\xec\xf8\xaf5\xcb\x0b9\xe9\xd8\x05\xf9.\xa2\x05\x9f\xf9\xdb\x8f\x17\xc7\x17\xa7\xaf\xfe\x91 \xb0\\\x17Q\xc1\xa6\x1f\x1e\x0e\x10\x929<{\x7f\xfa\xe1\xf8\xe2\xf5\xd9\xbb\xf1\xdb\xd3\x8bc~B||0:\xd5$r9\xa4\"\x01\x92O\xec\x8e\x96\xa6F\xad,\x85\x83[\xeaz\x1eYN\xa0\xe5J(V\x0e\xb5\x0e\xae\xcf\xf3 \x080{dY\xbd\xd2\x0el\xfcI\xab\x90\x8d\x9f\x1eUX\xe2\xaa\xb7\xe0\x87ll\x9f\xaci\xd0M\x1b$\x98\x87\x87>\xc5\x9a\xb0\xa3qOL\xd9\x82I&C'\x87Y\x08\xe9e;\xde\xab\xc9<\xe8\xd6\x7f\x98\xb9\x94{\xbb\xe3T8-;?\xf9\xe9\xf4\xed\x83\xadI>\x993\xeat\xfe&*\x96\xf2s,\xd6\x11\xd5\x13\xfdTT,\x13\xca\x87/_\xb0\x9e\xbc\xb6\x1dR\x1fxc \x83s\xf1\xe6\xb2\x9e\x97$(\x7fv\xbe\xbf\xdd\xa3c\x99=\xdb'4\xdd\xf2\xb67_\xb1I\xccr\xaf\x8b\x1d\x00\xb9\x16!\xb2d\x99\xcf\xd0_?/\xb2\xf5\xa4H3\x12zZ*\xa8HK\x0f\x7fx\x08~\x82mD\x01\xdf\xdb\x98\xdbh\x08\xa9n+\xd0\xe9*\xe1\xa6\x16\x87\x15\xe7\xb8\xff\x8cV\xd8\xef\x99 \x91\x86\x85\xfb\x94\xce>\xf1\x07V\x948\xa9\xb1\xa7\x14\xf6\x93\xde*K',78\xdbU\xc9\xfd\x94\x89\xf6k\xe5S,\xafg\xc0\xaf\xd7\x98c\x8d\xb7\x82\x9f<\x99GI\xc2\x0c\x85\xdb\x0d\xd6x\x15\xe7\xab\xa80\xc35/1\x1di\xed\xd55\x11\x80\xee\xae\xed*\xf7F\xa67\xd8\xb6\xc3_\x83\xd4\xea\\\x1bWJ>s\xe6\xbeW\x97Z\xd7V(R\xf5\x08\xba\x82\x15B(|B\x92\xa9\xbd1\xa6s\xd5h\\\xc1\x1fu\xe1%x\xcez[\xd5\x88V|\xe7O1\xc6\xc1\xaa\xb1\xc9*G\xba\x8c\xd6\xcaQ{\xf0\x9c2lJ\xaa\xe8\xaa\x95\x11S\xb2\xbd\xed\xb8g\xbb\x1emo/[o\xda\xd7\x8e$\x1a\xf2\x06\xe8\xc7j\xe0\xa1\x15\xae:\x84\xcc_\x06!,\xbf\xd3^5\xc7\x86\xd7VG\xff\xc8\x93[\x00\x87\x90\xf8\xcf\xf6\x02\x7f\x16\xe0\xb5l#\xec\xd0\x94\xe1\"\x9e|\xf2#\xff\x0e\xe3\x94\x0ct\xfe\x0f\x86p\x83\xc6`\xbd$\xbdmm\x0dk9\x1b\xc2\xd0\xc2\xb12\x19N\xd8-\xcc\x83\x1e'{\xbb\xfct\xe2\x7f\x0czi\"\x8578\x84\xab\x10\xbb\x8b\xfc\xb8\xb7J\xf3B\xeeB$5\x03d>&\xbdh:=\xbdaI\xf1&\xce\x0b\x96\xb0\x0c\\\x01\x0b\xb5\x06P\xdb=\xe9\xc5K\xde\xe39\x86S\xcdU\xd0c\xf7\xd4&\xfa\x18|tt\xe3\x07\xca\xef\xea\xa6\x87\xf6\x88t\xa7\xa1\xab\x10\xb6\xc4\xc8y_^\x9ad,\x9a\xde\xa1\x1d\xc2d\x1e%\xd7\xcc\x838\x81\x85\xef\x89 \xaf\x1e_>\xf7\x88\xf2^\xb4Z\xb1dz2\x8f\x17S_\xfb*\xe8\xd9-\xb7\xe1p\xde\xcb\xd82\xbda\xa21\x91 \xa7\xdc\xa7\x06\xce\xd6\x16\xb5a|\xac\xb8\x88\x97,]\x17\x1aF\x84\xd0\xaf\x1f\xb8\xfa\xd1g}?\x84\x95q\x06pZ=\x84i\xd5\x04\xfe\xf5\xedq2\x1bM\xebh:\xea\x08\xc2\xcd\x9f\x9b!\xb0v\xb2\xd9\x18\xc9\xb5\xb5kBQ\x02\xb2\xeb\xb6\x8e[\xa0\xb7)\xb3\xb3\xfb\x94dvv\xfb\x8f\xef\xc3\xe2`\xb2\x10\xa4\x95\xa9_\x88|\x1b:\x9b#\xed\xedJK\x08[\xf1\x82\x91\xa2{3;\xa5\x98\xf8\x82\xf3\xc2\xa8\x05\xe3b\x92\xb4\xa4\xe5\xec\xc32\xce7\x8cs[\x8fu\xffd\xef[\x02\xda\x17\xba\xe5\xc0!l\xb9\xcc\xb9w\xfb\xbf\xa4Q\x8e>\x1eY\xa7\x8b\xa5d+\xf3\"\x9c%\x1d\xa1\xc5]\xa8\x8f\x89\xe1\xd40j\x8aw2\x9a\x13\xd8\xe3\x81\xccOC\x88\\\xb5\xa112\x85zn\xa4\xb3}1J/\xfd\x88\xd0\x10\x98\x8f\xd0\x0e\xa2\x8a\xc2Y\xb7=\x8a\xb3ztF\x9e\x0c$\xa3\x1e\xdb\xe0K=x\xeb\xb7\xeeM\xd3\xa4\xda7%`\xd5N\xf0\xf3\x00c\xfav\xd0\x80\xab'\xf3=\xce\x15\xcb\xc8\x1b\x89\x88\xd7 \xd2'\\\xb6exq\x918\xc2^\nM\xc0\xb7R_\x84\xc9\x8e\xe5\xff\x98\x0d\x87\x8b\xdb\x9b\xa1Q5\xe9\xc1>}\xca>1\xe5j\xa9R\xd83St\xca\xfc\x15\xe6\xa1,\xc4\xf0\xa7\xfd.g2\xba\x1f\xe4\xd4\xc9\xbc\x15\xa1d\xa9TP\xf5\x8dX\nb\\\x84\xdf\x19\x84(\xb2\xa3\xa7|\x8aQ\xe2\x82@Jb\xa1\x90\xdaa\x07\x06!J\xe9\xecy\x99o\x12\xc5\xbe\xed\xed\x05\xbc\x80\xc9s\xd7\x81\xc2%\xa4\xb5_\x8c\x16\x97\x0e\x82\xcc\x05w\xc2y\x81O\x01{\x995I\xc7\\\xa6_\x8d\xa6\x0e\xe9XO\xaf\xcd\xbb\xe1\xc2C\xee\xdf\x840\x0da\xc5\x99{QA\x98r\xceQ\x80\xb9\xe1\x9c\xfc\x0d\x0c!\xe6c\xc6@\x17\xfc\xcd\xe8\x92\x9f\xceT\xf8!\xebM\xe6\xaf\xb0\x83y \x00\xc6\x87\xf7\x9d\xfb\x13\xb5>\xf7E\xc2\xbd\xfdN\xbc\x1bq\x14{\xe31\x9a\xb9\x8e\xc7b\xaf\xe0\x9e\xe0\x8c\x88\xfc\xc0\x86z{V\x9cZ\x12\x19\xa2\\Z\xa1\x12V1Zb\x1a\xc3\xbf\x01\x95\xd7\xa3\x82\x0b\xf7\x1b\x9a\xb5k\xf4\xc9\xe4\xc5\xd261\xab9\x10\x16C\x95\x9c0\xc4\x0d\xc1\xab\x9b\xe2\xb6\xc5\x8f\xc10\x94\\&E\xb3\x07B\x06p\x9b\xf7\x7f\xf5\x1d\x8b\x9dv\x81\xc7/lN\x1cBQ7\xa1\xc8Q\x17\xcd>\xb3\xc9\xba`\xf2N\x0b_ \xfb\x81?\xe4ir\xbeb\x13\xed\x95\xfc\xe9\nJ\x11\xfb\x89\xbfO\x862\xe7%\x83=\x87\xa3<\x91\xecX\xad\xc5/c\x0b\\\x9bL\xa3\x0cU\xa9\xec\xf3\x15\x9bH\x07\x05R\x1aj\xc4VfX\xf6TL{(L\xd1rv\x91rx\xcbz\x89^\xc55\xa1\x90Z\xa9_c655\xa1\xa9\x1b\x0c+\xc71\x14 #\xcc\xe5\x04\x11\xbc\x80\xe29D\xdb\xdb\x01\xc4\xa3\xe8\xb2\x96&$\"\x0e\x08\x13d1\x82*N\x14\x06\x7f\xa8_\xcf\x9dD\x939\xa3\\\x8c\x94\xd4\x11\x8f\xfa\x0e\x07\xa5\xdc\x0eP\xbf\x0e\xab;\xce\x80\xb2K\xe0\x8f_\x8f\xb9I\xe5\xacq\xf2\xe9F\x7f9\x1a{\x05\xbd\x7f\xc9\xd8\x8c\xa3<\xdeb\xf3\xedh\xcc\xd2W\xa3\n\x81]n\xc2\x80\x87\xd4F\x7fh\\!\xcd\xb8\x94\x0c\xda[\xa4\xd7\xb2k\xe1\xb6\xea\x9b\x1a\xdc\xfah-J\xb5\xc1h\xcb\xb0\x8c\xf7\x1f/\xc3`\xc7\xd2\xae\xd0\x8aRcP\x95\xbf?]\xef\xa2c\xb8\xd1c\xbd\x9d\xa4\xcbU\x9a`VJ\x0b\x04e\x94\xb6\xf3\"\xcd\x1c\xd6\x01Z\xa0b\xbb\x02\xde\xaa\xd5z\xb1\xeb\x08\xab\xa6\x8c%S\x96\xd9\xa5\xb9\x0c\x1c\xfe\x89\xbd\x8dV+6=I\x93\"\x8a\x13\xaa\xea\xa2\xdc\xbeK\xb6L\xe3\xbf\xb2\xc0\x8fDvr\x91>:F\x1e\xdcJ\xa2\xe5T\x0bfiZ\xbcN\xf8\xda8\x9d\xd9\xf4\x99\x0d\x810\x1c\xe7\x0f1\xf8\xa19\xd0\xdc\x1e\xe8\x02\xc7J7)\xa05\x84\xb5\xfdYd\xdd\x88\x80\xc5\xcb\xba=\xd5Z/\x9a6r\xf6\x02\x0d\xd9(\xc2\xd9\xe2\xf4\x05\xbf\xa8\xe3\x17Tk\xeft\xfe\x02d\xe58\xf3\xfe\x94bf\xd0=\xea7\xb2\xf1uTD\xfa'p\x04\xff$0\xb0\x81y\xbb\xe6\xcc\xdbcj\xbe\xd7$[\x17\xcb\x12\xda\xe5\x0cK\xac\xd6\xd6\xaa5\xca\x01\x11?1\x0b\x16\xb2\xc0\xead\"\x0b\xac>f\xb2\xe0\xc0,X\xe1\xd2\x99\x97\xe4S\xac\xbe2\xde\xcee#O\x9eXC\xbd\x11\xe2\xffc\xf3\xfa|)?y\xfa\xf8\x19\xcd\xe6^\xff\xbal._W+\x1d\xb4C\xe5k\x13\x81\x06\xa3l \x8eR\xa7\"Y=\x9a&\xb9\xad*\xd4\xaf\x18\xf2\x8aM\x12\x1a\xefL\xda\xe1L\xcc\x02?\xeb\x952\xb3\x8a\xe8\xbf\xae\x19\x9594\xe7n\x0d)\x90:\x04\xfd\xd1F:\xab\x19\x06%r\x98\x8b\xda\xdbQ\xfb\xdc?\xb1\xbb!xb\x1f{\xf4A\xa0?\x9224r\xec\xd4#\x07>-\xf5\xd7\"\xee\xc7\xa9Hl\xcf\xe9\x91a\xbf\xf67\xf4u\x0fdn\xf3U\x96\xaer\xf9\xf7$M\n\xf6\xb9h\x81#\xb4\xc2\xf2\xebe\x10\x12\xe1\xd8\xcbb\x7f\xd5+\x89\x9dK9\x8d\x98KC-\x95\x9c\xc2\x0d\x1fp\xc2&\x85\x16\xdb\xa4-\x80\xeb\x8dL\x8eo\x9a_\x7fE31\xe6S\xd1'\xd5\xa3PD?\xbe\x96\xd1\ns\xd0_\xa4\xfc\x04@\xdb\xe7v\xa9\xc1h\xb0}\x9d\xf1\xde\x9a\xba\xc7\xd4\x1f\xf7\x9a|\x0d\xfc\xa4\x8c\xf1D\x146d\xf6Ij7\xee\x0d\xd4d#J\xb2\x01\x15\xf9\xadP\x107t\x1f\x96rl@5\xeeC1Z\xa8\xc5M\xef}\x96\xde\xc4\x9c\x97\xef\xd0\x18 j\xa6Y+j\x82\xe0\xb16\xa3Qn\xf2t_:\xdf@\x97Zh\xd2W\xb1\x81`h$\x0ci\xb4\xf4j\x8c(]r\xc6)\xe7\x8c\x1b=\xa7by\xd9JS&\xd2\xba'\x1670\xc9(\xbd\x0c!\xc3\x7f\x19\x99\x88\xa6i6c\xbc\xacp\xb0\x9f\xc44\x85\xcdc\x830\xde,\xb1C\x9d0\xb8x\x1c\xf58(\x82\x9b|\xeb\xa4\xff>\x14C\xa4\xac\xc5\xda8\xb6\xf6\x93\xe2\x8a\x03'\x12Z~\x8c\xb2G\xa3^\x13=\xb5\xa9J\xb1)U\x11\x14e\xa2\x90\xfb\xe7x\xb1\xf8\xc0&,\xbeA\xa1%o 2&\x81id%\xf9\xa3M\xb8\xda\xbd\x9b\xd2\xd4\xafM\xa4\xa7#y\xdc\x944\xaa\xcb\x06\x0e\xd8e\x1d7\x14 \x8a\xa4\xd3\x96\xa6\xee\x8b8A\x18\xb9n\xdc\xf4\xa7@a#\x0e\xc1\xcb\xd2\xb4p\xdd\\\xa8\xa7\x9d\xa5\xdb\xd8\xec\xc1A\xfa\x1a\xc8\xde\xd7P\x97B\xc9\xedn\xc5c\x03\x8db\xa9\xaaY\x08\xde\xf1j\xe55\xcc}\xde\xabl/x\x7f\xbek\xe6q\x88\xb7\xa2\x81\xc5\xcc\xb4\x1aUTJ\xb3$Z\x12z\x8e\x16\x90{\xd3\xf8\xc6\x92\xe5\xd5\x93\x17w\x0b\xd6\x14\x14i\x15M\xa7\xe8B\xee\x0d\xd8\xb2\x01k'\xe9\"\xcd\x86\xe0\xfd\xff\xa2(r\xe4\xbd\xb3W0\x04\xef\xff\xf9\xdf\xff\xb7\xff\x03<\xf7\xf9\xea\xc5\x9e\x00\\\x08\xdeI\xe9\xa8.\xd7\x96/\x0c\xe6\xbf>\x84\x02\x8e\xc0\xe38\x0f%\xb5\xf0`\xc8\x17\xd1\x0b!g\x0c\x8a9+\xbd\xe3=+\xe4w}b\xb7\xad\xca(\xb5&\xdd\x18f\xb9B[>\xab\xd8o!oW\xdcx\x9c\x7f`\xd1\xa4h\x17.\x9a\x0dI\xf5\xa7\xf3\xd1\xa5\x9e\xf2\x08k\xa7:\xd0\xc2\xdf&N\xfe6i<\xad\x92{\xf0\xb7\xd0*\xd5\xd1'RB\x9eHI+\x9f\x0b\xdd\x89\xb9z6%\xea\xea\xa9\xae\x02:\x9cI\xea\xe9 \xe1&n\x1a\xdcI\xc2\xc5\x1bwz\xda\xd2\xbd\xa8Dl\x01\xa3\x06\x0d\xa8Y\xb5\xed\xde\x1dZM\xfdJ\x06\x95\x91\xb7\x83Yy;\x88\x96\xa9\xe2v0\x85\x17\xc0\x9eC\xba\xbd\x1d \xd7Y\xbb\x1dt1\xb0\xa0\xdf.\xe9h\x9b9 \xd7\xc9TP\xb6XOG\xc5\x87\xea\"\x92\xe36\x89G:d;VL=\xc27\xbb\xc0c\xc6\x8d\x1f\x8e\x99Q\xd4\xddPgW0\xb4\x94\xc6\xf6\x19\x9d\x86\x10\x9b@\x8ag\xe0\x97\xc6[U\xe2\xbf4\x90A+\x13v\x0b\x17w+v*\x12x\xbdcl\n\x11\x88\x0fB(R\x981\x0e\xfd\xa8:#z\xf0s\x94\xc3u|\xc3\x12\x880\xd5\x8d\xaf\x99\x04\xa5\xfcPY'BM>\xe5\xe7\x89q\xe1\x9aZA08\xd6 \xa3-3*\x84\\U\xce\x8b\xc5\xbc]\xe4(\xb0\x1b\xfe\xf3N\xb1\x9f>\xfa\x14\xe0\xcf[?\xc2\x1f\xb7\x82[\xf3\x99\x1f\xf4\x16\xe9\xb5\x0c\xeeR\x9d\x86\xb38\x99j\xc7\x1e\xe70$\xb3Q\x0e\xa0\xd3%\xa1\xdb|_Nx\x08\x89\xff\xe4\x89i\xc8W\xe9\x8c\xeb\x97\x03]\xba\xa4\xaf'\xdc\x03\x99G9^\xb3\x0bG\x89w\xe9\x94\xe5C\x18\xddX\x12\xc2:\x04\xe1V\xa4\x90\xd5w\x10T4\xdb\x16\xb1\x93\x1c'\x838\x94\xd7x\n$x\np\xc4Jz\xf2,\x80\xa1\x8a_\x87\xb1\x89\x9d:\xee\x05\xca\x11\x92\xfd\xec)\xa4\xc6hl[\xfd\xc6\x03\xd0\x81\x8e\x8dwR4,\x0b\xa1U\xd1\x1b4\xb8@\xd26[g\xd0\x84\x1b\xec7\xf1\\\xf5Q\xcbKC\x93\xceO\xd1b\x8cz[\xc4K\xa2\xc4SE;\x8bt\x12-<\xbb\x06[F\xf1\xc2~\xbdL\x93bn\xbfN\xd6\xcb+F\x8ck\x15\xe5\xf9m\x9aM\xed\x92\x8c\xef\x07\xfbu\xce\xa2lBtP0b0\x9c\xef'\xde\x923^gD\x03\xb7\x8c}\xaak`\xdb\x94tN.W\\N*v\xb6\xfe\xab\xce\xb5\x92\xac\xae\xce\xe5\x16p\x04[[\xd9Hp\xce\x98b\x8e\xcf4\xcaX$+T\xe3}p\xfc\x12\xa9\x03\xcf'\\\x8c|\xc3f\xc5\xd0\x0c\xe1U\xabq\x91\xae\xac\n\x19\x9be,\x9f\x8b\n\xb8m\xf3\xb6}\x98\xf5\xac~Q:\xf8\x1c\x9aE\x17)\xfaK\xf7\xeejm\xb4\xee\xc3\xec\xdb\xe1\xe4R\x83\xfa\x83\xc7\xa6u\xbatM\xb7B\xc1E]\xd4W\x9c\x82\xb7\x86\xd6f\xbdY\x9c\xe5\x05\xaa\xf4\xddZ\x1b\x94\x9f\x12\x112\x06\xd3ic}\xferO\x8aS\x1cC/\xeeV\xd5\x89s\x93\xc6S_\xbc\xc7\xa5\x83\xc3v\x0f\x15@`k\xeaX\x8bU\xd2V\xc5T\xfbvW\xf9r\xae\xba\x15\x82{\"a]918\xe2\xc4]\x04\xd3AMy}j\x15\xde\x04F0\xa6o\xa0\xdc\xdd(\x07}\x1f\xcbz\xb3t\xb2\xce\xcds\x86v^~\xf0\xdd\x1f%\xf1\x12c\xdb\xbf.d\x90\xfb\x93t\x9d\x104\xf6*\xcd\xa6,{\xbd\x8c\xae\xd9\xd9\xba@\x06\xbf\xa1\xca\xf9\"\x9e\x10$Y\xab\xf1s<\xa5\x8e\x95\xab\xf4\xf3\x8f\x0b\xf6\xd9Y\xf0\xfb,]\xaf\xc8\xd2\xb3l\x1a'\xd1\xc2Qa\x92.\xd6K\xd7\xdcDan\x17\xcc\xc8\xa1\xcc\xc48n\xe9\x92\xf7i\x1e\x17\xf1\x0d1{^z>\xcf\xe2\xe4\x13]\xf6\x8e]G\xee/1\\\xb1]t\x9d\xc5\xd3\x0f\xd4Xd\xc1iB\x1c\xc5\xb2\xec|\x15%\xee\xc2\"\xca\x08X\xf1\xd2\x13\x84WS\x99\xb3WQ\xec\xeeX\x96\xd3}\xcf\xd2\xa4\xf8\x99\xc5\xd7s\xa2l\x11'\xecd\x11-\x89\xb5\xe7E?9>KW\xd1$.\xee\x88\x02\x1a\xdci\xb6\x9aG\x14\xaa\x14\xd1\xd5y\xfcWb\xedn\xe3izK|\xf0\xd7\xd7\xc9\x94\xc2\xae\xbf\xa6\xe9\x92\x98z\xbcX\x9c\xb9\xc6:[\xa4\xe9\xd4Y\xca\xb9\xd9\x86\xc2,\xfd\xc4^E\xf9<\xca\xb2\xa8\xb1B:\x9b\x91\xdb^\xd4x\x1b\x17,[\xc4\xcb\xd8Y\xa3e\x0c%A(\xcb\xbe\xda\x17p#\xefgv\xf5).\xbc\x10\xbce\xce\xff}\x9b\xfe\x95\xffw\xe6i\x9a\x1e\xa9\x89\xf9\xc4\xeer?\xeb\xe2\xee\x9d\xdauh\xa7\xe3Q\xeba\x0e\x9a:\x11\x13WL\xe6Qv\\\xf8\xfd\xa0W\xa4\x1f\xb90+5\x99\xbc,__ \xc3\x0b\x7f@\xd9\xa4\xa3!\xe8%gf\xf4\xd0\x97X\xa6\xa98\x8d{\xca\xd8\xa2\xf1q\xfe1\x89\x8b\x05\xcb\xf3w\x92i7\xdcs\xf3y\x9a\x15\xf3(\x99*\xad\xd5\xe9\xe7U\x94\xe4\"'\xa3=\xc5\xabh\xf2\xe9:K\xd7|\x8f\xd3\x00\xa8j\x1c\x17E4\x99/\x19Ev\xed\xda'\xb4\xaccW\xc4#\xa4KEA\x8d\xd3\xe4\x7fnR\xf9O]*\x7f`+\x16\x15C*\x8d)\xa1:\xb1;i\x87\xdd\xfd\xc7\xdeiD\x92\xc29F\x81\xa5\x8eC\xba^\xe9\\\x98\xc76W*W\xb6\xfb\xd0~H\x8b\x82\x93\xc2\xa6\x01\x8a:\x9d\x86)\xaav\x1a\xac\xa8z\x8f!\x0b\xf1\xa9i\xc0\xbcF\xa7\xe1\xf2\x8a\x9d\x06\xcb+\xdec\xa8\x1f\xc4y\xd84V\xac\xd2i\xb0X\xb3\xd3h\xb1\xe6=\x86\x8bbg\xd3`/\xd2U\xa7\xa1^\xa4\xabN\x03\xbdHW\x1b\x0d\x93\xf3&\xae\x11\xf2\xb2\x96Ny\x95?FY\x1c5\x11\xca&\xfeG\xafC3\"\xeaib\x87\xd4\xc3[\xf91Z\xc6\x8b\xbb\xae\xf3O\xd7\x05o\xd8\x05\x02Y\xdc\xb2D\xb2V\x0b\xacd\xad\x86\xe5\xf9\x8e\xfe\xe5P\x15\xc4\xf8\xf6\x9b\x84\xaa\xc4\x7fj\x06\xe3K\x85a\xd0`\x1f\xe3\x02\xee\x89\xf0\x80O\xfb\x96\x83\xbc4 \xc2rv\x0b\x1f\xd8\xf5\xe9\xe7\x95\xef\xfd\xe7\xc8\x83m\xc8z\xc7\x17\x17\x1f^\xff\xf0\xf1\xe2t\xfc\xee\xf8\xed\xe9\xf8\xfc\xe2\xf8\xc3\xc5\xf8\xe4\xa7\xe3\x0f\xb0\x0d\xde%]\xa9,\xfe\xdd\xbfXi\xcd\"\"\x1e\xfbZ\x06\x80(_\x96w\xa5\xb9\xf3\xaetkkmG`\xc7\x00\x81\x11\xf1\x9e\xcb\xfd2\xfb\x1a\x1a\xb4\xf9\xeb\x11\xbb\xc4\xb0\xaf\xa8\xdd\x85!\xf8\x91\xf6\xa6\x16H\x9bNs\xdc\xc5\x9e\x10\xf3\x84\xcc\xa3\xfc\x874]\xb0(\x11:\x80\xef\xbf\x87\xad\xaa\xe8\xddz\xc9\xb2xR\x16\xc5\xf9\xbb\xe8\x1dg\xfeT\x05%\xce\x99\x15\x0bx\x01\x83\xb2\xd6\xd9\x0d\xcb\x16i4eS\xab\xaf\x01\xa9\xc0\x03\x89<\x13[\x1f\x87V\xcbo\xa3\xec\xd3z\xf5c\x9a\xbd~\xd5\xaaJ\x13\xd3\xcez\xaf_\x8d\xeb\x88\xc0q\xe0\x90cHj\x85\xb4\xae#@\xce\x8a\xe3\xa2\xc8\xe2\xabu\xc1\xac>\x1d\x8c.f\x9b(\xbf\xf2\x89\xee\x89\xe0\xefM3\xfd\x90\xa6m\xd7\x95\xe5T?\x9c\x9d]\xd8\x93\xfd\xb7C\xcf\xfb\xb7\x0d\xe6i\xf4HB\xd7\x9a&\xd1uXK\xdcK\xf4k\xccT\xed\x8c\x0ePV\xea?\xbc\xfc\xe6\x1f\xc5,'\xf6\xd7Q\xad\xc2\x08U\xc8\xb4Q\x15j ]\x82\x0bF\x8b\x14.\x1f\xa5~\xd0\xf3huc\xe9\x07\xd6\x8b\x14tl\xb3\x0e\xf5\x94\xf6\xff\xe6n\xfc\xf2E\xbcl\xd8@\xfdRE\x1e\xab5\x86!\xfe\xad\x90\xbb\x93\xbe\xb2\xc4\x9d8?Y\xe7E\xba\xac\x16\x15\x01X\x91\x0d\xbc\xc1\x1a\xa2\xf8V\xf5 \x01\xba\xc1*\x1b\xbdtXl9\xc4\\RL\x15{\xa7\xc00#\xc6`<\xaf\x05\xd1\x11\x80ndk\x880\x92\xb6\xe0[a\xe1[\xd1\x8co\xa4\x1f!h8\x94\xf60cW\x9c&T\xbeD\xf5\xf0\xa6\xe2@hw]\x06~l\x913GgP\"x\x8a\xee\xbd\xba\x02\\\x98}\x89\xabb\x13pb\xb9\xe8\xeeT\x9b|\x02y\xf11/\xed>\xd0$Q\x81\xe8\x8eo\x8cK:@\xabzZ\x06\x0e\x9a\xbdQZ\xdfq4\x93\xa4?k\xfb\xa3|\x15M\x1c{\xb5\xfa\xea\xc8\xa0~\xef\xce\xfd\xb5\xc8\xa2\x877\xbc\xe8.O\xed\xe8\xb4\xd3\x8eN\xac\xf6}l:P\xa9\x8c\x8c\xf7\xd8\xa5s\xc4\x8e+|\x9b0\x08Hc\xd0}\x82\x14\x14\x06^Lz\xdaV\xd2(\x86\xdcA\x1d\xf7\xa0\x8b\x0886a.\xf3\x00\xf8\x8a& P\x89\x84\x15\xfaXmH\x15%\xa4\x1a\xc7V\xc7\xf4Mh\x145\x8c\xee==\xf0\xc9\xb71%r\x9e|\xa5\x85\x7fgJ\x94\x06\x9c\xad\nU\xf0\xe3\x06r\x84\x1d\xdb\x04\xc2\xbd\xd9\xab\xa3U' \xee\xddj\x1f\xabG\xc0F1\xb2\xd3\x03\x0c\xfb\x8b\x7f{\x0e\x9fc1J{a\x8d\x93\x9d8d\xc5\x97\xf4>\x12\x17\xe2m\xc8R\xfer\xc8f\"9\xe77\xcaf\x03*lq\xe2\xef\x0e\x1c\x11\xc6\xcdp\xeb2\xcf\x97\xd9\xca\xba\x92\xdc\xb6\x06\xa4\x91lnq\xb1x\xd7\x8bV\xccY\x9a\xa25\xcd\xebW\x95\x0dv\xcd\xdci\xc5\x92i\x9c\\\x7fD\xa3\"\n]\xda\xbe\xc1\xe5\xb7\xb1\xc6\xf0.\x10w\xed\xf2\xcaU\x06C \xf1\x04\xc3\x9aW\xf6B\x94\xfdL\xc5\xb1|\xff=(\x03>\x89\x98>\xeb-\xd7\x8b\"^-\xa8\xb4P\x15\x1e8\xc5=\x82X\xde\x94\xd9\xd8\"\xcc\x81B\x1b(\xf5\xd2UaGEu\xde\xba\xa3\xbbA&\xc4d\xdd\xe5 \xa9\xbb\x1cd#AhG\xe9\xe5\xff\xcb\xde\xbbv\xc7\x8d\x1b\x0d\xc2\xdf\xf3+J\xcc\xacCF4\xad\x8b\xc7c\xb7G\xd1\xeb\xb1\xe5\x8d\xb3\xe3\xcbZ\x9e\xe4\xeci+Z\xaa\x1b\xdd\xcd\x11\x9bdH\xb6de\xac\xe7\xb7\xbf\x07\x85\x0bA\x12 \xc0\xb6<\x93d\x1f|\xb0\xd5$\x88K\xa1P\xa8*\xd4\xe5\xac\x93\xc0\xa4\xd5\x92\xd2B\xdcn\xc1L\x89X\xd0\xcd\x0e\xb1\x8b\xa7\xf9\x197\xa4\xd2\x93\x02\xacPaLU2\xc7[\xf1\x0d\x9e\"\xed\xe7Gj\x82xQ:\x1a\x13\x137\"A\xc3\xa6\xde\x02O{r\xda\x01R\x907\xb3@&\xa0l\xdb!t\x87\xba\xa3#\xac\xb1\xe2k\xe2\xc7\xd3\xbd\xee\x17F\xcc\x12\x7f\xe9\x05\xef%\xa9\xff\x9cW5\x06Mq8\x9f\x84<\xc1b\x19\x99\xecA\xf3\x8c\xd9\x01Nz\xd6\x8c\xe2\x8d~\xb3q_xv\xb8\xf4\x97k\xf0\xc8]\xe7\x9b\xac\xfe\x1b\xeb\xcba\"\xe2\xa0U\xf6\xb6\x8e\xdd\xed\x8c\xbf\x07>QZ$\xc8\x9c1*\xc9\x92:\x89Sn\xb9*\x08\x07et2\x984!?\xf1\xbdI\x8f\xc9\x12\x8eU\xecs\x83\xaeP\xc2\x7fX\xcc\x17EXw\x8d%\x8e\xa20@\xf2\x10\xceoy\xe7\xec\"\xcf|~\xeb\x0e\x04\xdf\x85\xba\x9b\xd8\x0eP\xcd\xb9\xe3*.|\x1ec\xcb\x18\xd5\xe0\x96\x85\xaa5\xd9\xf9_\xc7\xd5kN\xbc'\x92\xa0\xd7\x0dA\xefch\xa8\xa6\x8d\xa8\xf9\x8eW\x13r\x1eu\x16\x99\xbe\xdc\xa0\xc9\xcfF\xb7\x8d\xc3\xee^e\xc1\xa3\xf1\xd3\xe7\xcc!\xc8\xb6\xc6\x06/\x0f\x15\x13\x87\xfa,\xf2\xaaf\xa0\xd7\xec-\xd3\xc6bVmZD\xb2n\xb1\xd6\xc8\x0cY\xe7\xa1e\"\xd6\xfe\\Y4{_Je8\xd2-\xb1\xbe\xdf\xd2N8\xc4\xde.\x99\x7f\xb6\x8da \xd9q\xaf\x19A\x08%Ztex\xb6i*42\xd3N\x0f\xbb\x8e\x07\x9amW\xa5]\x0c\xd5\x15?D>\x13\xaf\x17)G\xfe\xfa\xaaLm7\xb0m\xae\xe7u\x19O\xfbx\xbf\x1b\x91\x80g\xcdy\xd45q\xdc\xf0\xe7\xdd\xfb\x8c\x8a;:\xd3\x0e\x809<3\xdewx\x13 \x19\x93N<==\xb4\x96m\xd6\xab\xf7\x11\xcd\xfb<\x1c\x97\x91\x8fxz\xa2}\x91/\x8f\xee\x88\x98\xc7\x00\xf1\xd3\x0e^J\xb9\xccc\xd9\x92Zi\x8e\x86\xf4b\x86\xb3\x88)\xb1h\x03z\xb9S\xeb:\x84A\xfc4\xa1:z!=D\x11|\x8bI%\xbb\x17\xc2\x0cv]\xbc@Ax\xf9\x0eU\x80\x16\x0d\xa3\xbcu\xbc\xd6\xe6nP\x0bg\xab\x85\xf2\x18\x9e\xaf\xc8\xec\x12\x03K\xf1\xc05,\xf55\xe4\x0b\xf8\xbf\xe8\xa3\x05\xbb\xe0\xfd\xdfH/\x9a\x82Q\xb1\x03\x8a!\xb5A\xac\xf5\xf3\xe8<\xbf\xceHI \x87\xef\xed\x1f\xeeyMX\x89\x04\xd5\xc9\x13 \xf2\x10f6\xae\x98\x16MV,\xb6\xec\xc8\xb7\x1c\xc1\x86#\xdc\xab\xac&e\x16\xa72|\x8b\x8f\xc1%]<`\xc4\xac\x1a\x8cQ3p\xdd\xbb'NPf\xf5\xda\n\x95\xa5\xffF\x8dfK9\xc3&\xa4\x8c\xcb'%\x0b%(?\xea\x03\xc9g\x10\x088\x082r\x0d\x15\x9b\xae/~\xb3\x1a~\x1e\x04\x11\xe7\xb2)\xa3\x83\x87}\xd6zr\x04\x19C4\xbcr\xcb\xe7]r\xc16\xae)7\x99\xc7\x9c\x12\xba9\x89\xdb\x0b\xc3\x9d+s\x0c\x1c\xe1#\xb5G\xec\xd8\xf7\xc2\x86\x02\xb4q\\\xde^\x9c#\x00\xd1p\x8fy\x8f\xcbGk\x96\xc1\x97\xb9)w\xf3+\xd1\x92\xfb\x95\xea\xbf\x98t\x05\x86s\x16\xc9\xa1N0g\x8a\x1a\xe4l\x02\xcd\xadC7\x81,{\xf3uN\x92\xef\xbay\xd6\x94P\x17}\xd4\xfd\xf3\xdb\xd3\x0f=\xc7\x00Z\x9e\xbf}\xfd\xee\xed\xe9\xab\x0f'\x13\xd0\x88\x02'\xaf\xdf}\xf8?\x138\xe8\xbfY\x92\xfa\xc3M\xe1\xc4\xb8\xb7/~;'\x01\xdd\xe8\x11v\x83\xea\xea\xa4\xfak\x9c&s\x11\x15\n\xd1\xd6\xb0 \xf8\xbeN\"9\x05\x98@\x12\xd1\x99\x8a\xa4g\xa5\xef\x1d<\xd2'o\xec\x88\xd4\x067\xf1/\xb5=`\"x\x1f, f\xc68Y\x17\xf5\x8dD\xa4\x97\xf1\xac\xce\xcb\x1b'\x88R\x92o\x9bR\x1f;\xfa\x8d\xb1]\xe7\xd4\xa5\x90\xa7\xed\xb0l`\x90Dl\xa2\x94k8\x82<\xbcS\xd8\x9a7\x07\xdf\x05,Ve\x0f\nm\xf5\xf3\x95\xd6K\xdcpL\xd8\x00\xc5\x81\x94S\x04\xa7Tk\x9fR-\x86\xa9\xdc~\xc4v\xd5\xaf%\x83\x8e\xddb\x82ZK\xfbI\xf5\x01\xdd;\xc6M\xa8\x15\xc8&\x19l_\xac\xb7\xce\xd2\x88\xbd\xfc\x9f$#e2\x93cx\x9e\xc6\x95\xd5! \xf8\xd2j\xb0\xbeO\x9bX?\xad\x89:w\x92\xb8l-\xf9\xeb\xeby\x19\x9aQ\xfb\xe1#\xc6\xe1\xef\xf7rj\x08YB\x97\x81S\xec \xff\xa0\x9fiD\xd1\x94{\x91\xa7\x11,\xbc\x89\xe7.\x08H\x9c\xa1\xfc\x8b\x86\x7fW\xef\xceItIn\xe0\x18\xe2\x88T\xb3\xb8 >>\x08P\xc5T\xe7,G\xaa\x7f\xf8H57\x12\x7f\x8d\x89\xd9\xd51=\xa2\xc7\xc6\x9e\x92+\x9e\xa7\xa9\na\x16\xea\x13q\xd2E)BLr\xc2gQ\x1b\x04 %\xd2\x1e\xe5\x00\xd1\xb7\xcb\xbb`\x92\xaaxD\xf9\xaa\x9a\x13\xa2&\x94\x9a\x88\x94\xd10O\xbc\xae\xc26\x89'\x0dTy\x17u\xf4\xcd7|d\x18\xf4Or\xf83\x7f\x81 \xf1\x85p\xa2\x07\x8b\xc6\x0e\xa3\xf7\x84\x13\x94U\xeb\x05\x86\xda\xf0\xbc\xae\xb9\xc5\x97\xfaA\xb2\xd0\xa9h\xcb\xb2 \xa1\xc2tn3v(\xeeuo\x7f\x17\xec\xf6\xf7Q'\xe0%S\x7f\xe9N\xad\xc2\xec4\xfe\x92\xd7Q\x04lq\n\xf5\x177k\x02\xe4\x98\xf2\xa9\xf5?\xa2G\xbb\xb4!\xf6\x98\x07\x12\x06\x89\x0c\xa2\x92\x14i<#\xfe\x83\xe9\xc7\x8f\x7f\xff&\xfa\xe3\xee\xb1\x1fL?\x9e\xfdr\xfb\xf9\xec\xc12\x04\xef\xe3\xc7o\xeeyJ\xb5vW\x9f\xa5oT\x10\xfd\xf1\xd8?>\xfa\xf8\xf1\xa3\x1f|\xc6m\x1b\xed\xf2\x07g\x01\xb6\xf4\xcd~\xf4\xc7c\x86\x18\xdft\x03\xc2\xeb\xbd`\x85~\x8d\x8fV\xa7n\x96\x06|hF\xdc\x0d\x10?\x184X\xd8,\xef\xb7\xbf\xf9]\xff\xaf\x8e\xb2\xae\xe1*\xd8\x11\xb3(\xf3\xb5Qm\xf2:\xc6T\xde\x85\xff:.Z\x06|\xaf\xe3\xc2AQ\xd3\xaa\x85\xdbL\xb6\xd6y\x1e\x18\xdb8%5\xfb\xe8\x94\xd4\xad!\x9c\x92\xdaa\x08\xadZ\xca\x10\xfa\xcf{q\xa4\xaex\x92r*#\xbc\x8e\x8b>b\xae\xf8\xcbS\xd2am\x9c\x12\x9a\xcd\xa3\x8a\xd4\xecm{\x0d\xc3v\x0e\xea\xa1\xe5\x9fGK\xd2\xd7@\xb3D\xb8\xc3\x0d\xcc\xb9i\xa0\xe6\xe3\xd8\x16T\x8ew\xde\xe0\x8f?g4\xb4g\xa1\x85l\xf2\xf0@VQ<\x9fkF1\xecx\x0e<\x07\x83a\n\xd6\x98\x94\xfd)\xac\xf4Sh6\x94\x8e)\xba\xe2\x99\xe6\xbb\xee\x07\xc0\xb3\xf2\xe9\x9e/\xad\x13\x03Eg\x1a\xe9C\x1ai\xda\xbd\x19\xd3.&~~\x95\xd5>\xe1\x1e\x9b\xfe>ej\xf74\x8a\x8a-P[\\\xdf-\xb5T\xef\x8ae\xc8\xac\xc7c\xbd8s\xf4\xed\n\xab\x8bi}6~?\x0c7\xcd#.\xe9\x9av\xdd-*\xafq\x15D\xeb\xb8\xf0o\xb6\xd8.\xc3\xe3\\\xb3l\xf8\xddD\xf9.\xbb\xc9 \x00k\x0d\x00\\\xf7\x9a\n\x80\xb5\x1e\x00\xbf\xeb\xffE\x87E\x05\x85\xe9\x99\x8e/97\xf3%yo\x1eF\xf3\xa8+\x99\xc2y\xb6J\xd2\xf9\xab\x17:\x99\x0c\xc3Oe\xd2\xab\xfa|\x8c\xb5\xd7\xb5E\xc8\xf6>f\xd8G\xc6B\xd13\xcd\xffO\xd9e\x96_g\xc8s\xf8h\xc2\x0f~\\\x03c\x80\x16I\xca\xa2\xf2H\xd6\xe6\xef\xd1\x1f\xa7\x1f?~|p\xf6\x80Y\x1c\xef\x827au\xd3$#\xccM\x9a>\x0c<\x14<\xb19\xa69\x9b\xc3\xc5\x0d6\x9b\xc9\xf7\xaa\xf3\x87nB'}\xb8k\xf4\x05\xde\xef\xc9\xba\xa8o\xb0\xc1q\xf7\x1b\xde\xefk\xf2\xa96}(\xd4\xd8\xfc\x8f \xff#\x9a'U\x91\xc6hY\xca\xdc\x98\xf0i\xc6\x7fJ\x80\x0e\xce\xec\x93\x01\xa3B\xc4\x90Sz\xde\xbeh\xba\xd1Z\x97\x94\xa2b\xa3\x91\xefW\xcaE\xa5\xb7\xd7\x19)_\xbd\xe8a\xab\xd4\x8b\xa2\xe5\x8c\xae\xef<\x08B\xb8\xc6\xfc\x91\x80\xb1\xc8\xcf\xab|S\xce\xda\x1cE{'\x9d\xf6\xb4\xb6yvJXH\x9d\x92dcL\xab\xf4\xd6\x92\x14\xd03\xdf\xdb\x7f\x88\xd1\x923\xb9\xa1\xe8\xee\xeaW\x97\x92z\xc9$\xf5\xb2\xa5\xbe(\x87-\nY\x8e\xb9\xd2\x90Z\x1f\xb8\x0e/\xf7\x13\x93m\xa1\x1ck+:\x7f\xdc\x8cY\xaf\x8c\x8b#\xc2\x83\xf9(\xcch\xeb!6\xbaO\x1b\x8d\xa3\xa4z\x9do2\xba\xc9Xo\xdf\xed\xb7;+\xe2\x92d57\x90R~\x1ea\x8cr\xe5\x01^\x8e\xca\xd6\x0f<&\xec\xc9\xf7.\x176\x1d\xd5h\xf6\x03Y\xe4%y\xdd\xbaAu3\xe7/}c\xb8H\x0e\x87 h2\xaf\x03FSc\x03\x9e@\xa6\xaf\xc0\xec\x9e\xcc\xf6oby&05\xac\xbd\x84\xb9\xd9V\x8f\xc55\xe4\xc1s\xc6Z#\n\xc8\xfd\xc4\x1b\xd1\x83n\x9b\xddC1JA\x194\xfe\x91\x98\xd5\x8bb\xd5\x1b\x96y)\x87N|\xfd`\xea\xf6V\xae\x95a1\x97Va\xf1\xa6b\xf0\xc6r\x95\x92g\x030\xdbf\x8c\xa8\xc7m\x01\xac\x8e\x94\xb5\xdd\xdd\xb5\x8c&[\xdf)\xc8X\xa4\xc7\x16\xa4\xf6\xf5\x90\xaa|\xa2K\xc7x!\x82\xf7\x0f\x8d\xbb\xd8\x94K\xc2\x87N\xe6r\xf0\x95\xc5\xd5\x14\xc3j\x9eF\xe7EI\xaeHV\xbf\xdb\x94\xcb$3*j[\xc9\x94\xf6\x9e\x02\x81\xef\xe1B\xd2fb\xa6\xcd\xb4\x9c\xfb\x17Sr\xe6\xaa8\x03\x9c\xf8@\xd0\xfa\xe1[\xdaf\xb7\x7f\xc9\xe2 \x85\xcaN\x17\xa9\x86\xfa^\x92\xfa9\x8f\xecW\xc7\xb3\xcbg\xf39\xc9\xe6\x9b\xb5\xebHtVO\x836L\x82~\x9c\x0c\x86\xaf.\x99\xe5$Z\n\xe9\xcf\xbe\x1av\x8f\x18\xeb@\x1a\xae\x81s\x11\xd2*\xcav\x9e\x80\xa2\xe4Z\x88\x08\x87\x06\x8aL\xc1N\x9b\xcf\xa3\xf39\xb9\xd8,_\xbd0\xae\x00\x8e\x0d\x99\x9d\x16L\x7f\xb8y\xf5B\xc4\x9c\x17EcB\xdb\xfd\xc4\xb6\x14\x12\xcd\xf9z\x00y\x1a\xb0!|B\x8e\x9f\x08\xce\xeb\x1d\xdf\xbcC\xc8\xd3\x15i{\xb8\"\x8f.7\xfc\x18\xc4T*\x124\x12\x0b\xa6\xf5\xb4t\xaf0\x8f\xae#\xe8\xf0\xb1\x83\x839q\xf3)n\x1at\x1d\x84\x03\x18\xc4\x19\xe9\xd4=g\xb9]\xbbw\x87\x01\x12\x0e\xb6\xefpT\xecO\x89\xf2n\xa3{'\x19$\xb7\xe19@G\x1e\xcfk$Gi\xff\x15Y&UMJ\xc2\xe8U\xdc\xe5@\xaa\xd5\x9b<;\xad\xe3l\x1e\x97\xf3\xbf\xc5e\x96dK$\xbe\x0e\\\xb0\xf1FB\xa4>,I(\xf2\xc2N\xaat\xd8\xecH\xa2N2\x94;\xb5/\xc6\x86\xda?\xc5\xa7\xdb\x1b\x010G\x97\xeeu\xbf\xde\x9e\x969\x1b\xba\xe9{\xa09gH\x14\xcf\xe7'T\x80\xfc\x91{+2'\xa8\xeeSn\x1e\xb6\xb3\xaf\xb5\xadn\x1a]\xe7Wc\xd2\x8a\x08\xff{C_c1\x90\xc5\x9b\x881\xa4'6\xc9'\xd3<\xf0=\x8a\x00\xbb\x0c4w<\x959\xd1w\xb3\xcd,L~\xb5\xfd\xed?\x8b\x8bzS:\x06\xee\x80\xedW~\xef\xae\xc15\xb0\xf2\x9a\x8bKQ\x06`f\x1f]\xa9\xff\xd8\x05\xcc%\xe7\xa0^\x88$\xba\xeaL\x8d\xe6\xdf\xad\x84kwA\x0d\x1e\x1f\xe8\xc2\xf8\xd1\xe7\xfaP\x11\x87\x8f\xba\x99\x00\xb8[\xddw\x07A\xbb\xfd\x8d.M/\xf3aM\xf2\xecy\\\xc4\x17I\x9a\xd4\x89=u\xc2\xd5\x97&\xa0\x80\x8e\x14\xe6\xb7SQ\xdc\xbb\xc7\xb2Ox<\x8d\x00^\x1b}\xfe\xdcKI\xc1\x9e\x95\x1b\"*\xceXL\xff\x93yR\xc7\x17]\xa7`\x93\x03o\x92g\xaf\xb2E^\xb2(\xf4\x16\x0c\x17\x1a\xb6x`Jz4\xc5\x18\xfb\x04\xdd>\x8c)\xbe+1\xa0\xf7\xccc\x1c\x03\x1cj\x97\xc8G\xb7\x91M\xa4\xce\xc2'Zy\x1el'nI\xaa:/\x89l\xc7i\xf9\xd9\x05[lJ\xda\xc3tZ\xca\x9c\x0d\x13\xc6j\xedi\xeb\x14\xed;G\x9c\xe9\xc7\xab\xb52\x84\xdc7\xe5l`\xa1\xe30!\x90\x19z%\xd6\xd8D\x95\n\xbe2\x84*\x08!\xf1\xcb\xe1\xd0E*\xcc\x9d`\xa5\xd7\x1azr\xda\x18l\x1e\x13Q\x90\x007\x96\x1e\x83*\x16\x93^\x81\x17~\xa8\x87,\xc9\xe6\xad\xaa'\xd9\xbc\x8f\x15\xfd\x81I\xebP ^\xd9B\x7f\xb3\xab\xbb\xd6\xb4\xf1m\x12a\xbf\x1f\xee'\x87\xb8`\xf2\xf5\xcc\xb8\x8eD\x08*\x01\xf7\xb4\x12\x18b>)8\x10\xefg\x11=1\x10\x80\xbe7[\xc5e<\xabI\xe9\x85p\x9f\xa7\xf9\xe2\n\xee\x01\xb1\x04A\xcc\x1b\xa2\xcc\xe3`3\xdaV4Y\xfa\xb9\xddR-\xd2]\xbd\xc5\x98\xf7\xd5\xb0*\xe1\xf3\xe7a\x941\x98\xb8\xe3\x04F\xaa\xef+\x03\xf2[n\xd0\xea\xa82\xe3*3\xbb$\x99&\xd6\x15E\xc5V\xaa\x7f\x91\xb6\x9b2w\x86\x1d\xd4\xdd \xb4v\xd8\xd9\x0bp\x04\xaf\xe3z\x15\xad\x93\xccG\xa7\xad\xd6b\xfd\xc6\xfb\x02\x1dt\xf86\xf8@>\xd5\x83[!\x89fy\x9a\xc6EE|d\xe1\x12\x13bg\xf2e\x0fYs\xb8\xcf_\xb3Y\xe9\x12\xcf\x8aH[\x95\x82\x93CQ\x94\xf4<\x12\xcb/\xb8\x15\x8f\xe4\x96\xe2\xa6\x830>\x01\xee\x8d\xd9q\\\x11\x02\xa2XO8n\xfe\x14\xdcy\xd0\x84\xe2\xeb+B\xf5\xea\xa5\x86\xf7\x9e\xd5\xc9\x15Q\xf2\x08\x91\xe8\"\x9fwRH \x81z(\xbc\x8f\xee\xbb\xdf\xb5\xff\xda\n\x9cW6\xef\xdb\xc7z\x86\xb3\x17f:\xd6\xfb\xea\xb2(\x0e\xfb\xdfv\x1b\xafZ.^}\x0f\xaf\x94\xf5\xf2\xb0+\x15\xcf\xf8\xf3n?\xcc8\xfe\xf0\xdb\xee\xf3\x82\xcf\xad\x1bub\xce\xfa\x17\xe1\xb0\x1f>\xea\x0e`\xc5:z\xdcy|\x85\x8f\x0f\x0e\xba\xe3Z\x8364\xdb\x92u\xdf\xcb\xdfu\xc3\xb9\xf6n3\x17\xaa\x03\xdb\xfe\xc3'\xddQ\x9d\xf3\xee\xbb\xd3\xb9n\x1c\xdb\x92~\x00\xe4N\xe5\x13\x8cQ\xa6\x8b\x1f\xdc\xaa\xf6 \x8e\xba\x9e\xd2\xa7p\x04O\xda\x8f\x9e\xd3Z\x9dj\x97\xc68\xde\xcf\x8c&h\xcc4L&\xcf\xa2\xbb\xf6\x14\x1fu\x93qMZ)\xc8\xba\xac\xae\xce:\xec\xad\xb9Sz\xb6\xca\xa0\x80\x8c\x84\xabO\xfck\x96\x8ew\xd8\xfa\xec\x9d\xd8n!\xf2\xa4\xdd\xbe\x90\x96\xb7\xa9\x06%O\x8b\xa8\x9f5\xdbtv\xc6\xe6\xe8=\xec.\xd1\x14\xf2\x03\x8e\xc0C/~\x16\x8ck\xc2L\x155w$1\x1cC\x0c\x13\x88\xbb\xf6x1\x9a\xe2\x05\xa1T\x95\xd5\xc9\x9a\xf4\xaet{\x13\xa6\xfb~\xd5\x89\xf3@\xc1\x94\x85<6\x01w\xa9D\x07\x98n\xf8\xa8DU\xcd\xd1\xfe\xe8Q\x95`\xc8\x81s\x16\xbdC1\xa0\x88\xcek\x0eD\x1e\x0e\x89e\x87\xffQ\x8d\x88\xf0*\xabsLa\xbd\xc1\x85\"\xb8P\xd9\xb0\xb5\xe4\x07eUuKJ\xc9\xe3:B\xe0\xbe'\xb3<\x9b%)\xf9P\xc6Y\x153\xfeuI\xeawy\x9e\x92\xb9\xbf\x83\xcc\xc1,\xdaT\xe49\x9e\xe6|\x01;\xb3\xce\xa3\x82\x94T\x02\xf5\xdf \xb1\x11\xe4|\x10\xe1`\x7f%I \xe5)\xf2\xe1i\xbd6\xe9\x8d\xf0*d/\x84U\xb4\xc94\xeb\x86\xd6D\x9d\xed)\xf8\xec\x9e\xf4\x15<\x85\xbaI\xfb\xf74\x80\x9a\xab\x81\xf0\xb7\xaf\xbc\x1b\x1e\xec+\xb3\xa5\xf0\xb3\xf1\x96\xc2U\xa4\xcbj\xae\xf3Q\x13f%t\xe9>\x7f\x86\x9d,:_\xe5\x15\xbf\xdb\x18cC\xfc\xb3\x91\xf4\xec\xf8;\xdc\xdeU\x02u\x07\xfd\xde$\x1f)\x9f\x9dj\x9e=\x1f\x06\xdc\x1b3\xe0\x1c$U\x0e^=\x9b\xce.\x88\xef\xdd\x1b\x0fN\xdc\x06mX\xf20{\xfd\x9bW\x93e-\xbb\xf6\xc2\x16\x9e\xe7Y\x1d'\x19)_e\x8b\xbcO\x05z\x07\x83\xf8\x8bN\xf1}\xffl{a\xb3\x88\xc7\x08R%^\xbe\xc2\x11\xbc\xefZ\xa95\xc3}\xa1\xf8(%U;\x88\n\x0f\xe7\xf9\xa2\x15\xd9\x06\xe3\x11\x0d\xf4.\xe6N\x07\xa0\x10\xfdfn\xb4A\xde\xd3\x87\x1e1T#\x82\xd2\xb9\xff\xd8\x93\x8c;\xdfL\xe0E\x87\xeb\x10A\x11\xaa\x1fn\x18\x01B(L\xe0\xb2\xc3\xd4a\xa2\xd4\xd7y\x96\xd4\xb9K\xc4\xc7\xae\x84\xd1\x112\xcf\xd9\xbd8\xedl\xc0\xd2U\x7f\xe8B\x03\xb6\x1f\xa3\xd6\xb8\xfc2\xb4\xab\xaf\xaf\"\x92\xfdcC6\x82T\x8b\x00\x19\x92x\x86L\x08\x95\xf5\x9e\xc7iz\x11\xcf.\xd5\x8a\xb9F~\xa2\x87\xd8\xe0\x9c\x196\xbc!\xd7\xd6ik\xe7\xfc3\xcf\x19R\xfa\xde\xe1w^\x10\xc2&\"Y\xb5)\x89\x92\x14\x97\x03\x02\x93J\xf77\xab\x10=1\xde<\xc6\x13\xee\xd6XG\x17T`!sf\x0dQ\xf9\x1f\xd0\xacY\x8cJ\xdf$\x0b\x8c+1\x89o$#\xad\xb8\x9c\xc6g\xf4\x8bp8\n\x07\x83\xd6\xe9\xe6\xa2. \x9e\xf2\x92(8C\xacc\xc6\x82\\`\x11\xadbT\xaerH>\xa6\x90\xfcQ0\x1f\xba\xee\xd4N\x1c\xd6\xf7\x8bF|\x15]\xc5i\x82&#\x1c\xeb\xfc<\xe4|\xde\x8b\xb7\xaf9A\x11\x96\xec\xad0C\x0dr<\xf1B\x93\xad\x8c\x07\x94\xaa\x93\x18\x83\xa3\x15qU%\xd9\x12b`\x95!M. \xfca\x9e\\\xfd!\xc4\x97\x80\xfdr=\x85\xe8\x07\xdf\x07\x90\x97\xf0\xfd<\xb9\x82\x07\x7f\x8a\xd0-DL\xd0\xb1\xc7YJ\xdb\xc7\x0e_\xe6\xf9@w/\xf3\x9cu\xf62\xcfEg\x99\x1a\x03Z\x89U\xc6\xf9f\xec\xf5\xc3*\xa9`\x1d\xdf\xc0\x05\x81Y\xbc\xa9\x98W\xcd&K\xf0\x02!\xc9\xb38Mo \xcd\xe39\x1dP}\x9dC\x92\xcdIA\xe1\x9b\xd50\xcb\x8b\x84Tt\xc8lL\xdc\x07\xc7\xb0\xa5\x98\x9fX\xdc\x19\xf9\x0b\xd3m\x1bR\xf8 h\xe2\x9ci:\xb0\x9a\x9fRq\xbb\xe0n\xa7\x06\x05\x122H\xe7E\x99\xcfHU!o\xc6\xc3\x99\xfaUt>c\x7f\x1a\x15B\xf4\xeb\xa5~\xe2T\x92\x7f\xe3\xeb\xf2d`\x12\x8c\xa1QSa?\x1d\x12{\x0cSY\x80\x7f\xee\xcf\xd8\x15\x80Y\x07L{X\xb0\x1e\xfaB\x05\xe5\xde7\x17i2\x93\xf1\xbb-\x96)sa,k=[\xd4\x9237\xf3\x85\xf9\"\x14@\xab\xa1\x17E\x9eq\xba\xc3\xd2O1\xac@\x82\xa4d\x1e\x84\xb0\xd0\xb6\xa3\xbfk\xfd\xb1'\x07<\xc3\xd8xvS\x0e\xe0\xc0]!\x1f\x99\x19\x00\xb7\xa6\x12\"r\x84;o}\x93\x82\xfd\x06\x8e\xe0\x95\xb1\x89\x0b*\x82a\x13)\xfe\xab C\x00\\9\"\x89w\xf7d\xa5\"a\x16\xc2E\x08I\xe0\x88\x08\xc6C\x8b\x1bK\xe3\x92^\x07!\\\xdb\x8f.\xb7\xfb\xfcf\x95\x07N Ud\x1c\xce\x08\xa2_X\xdb%\xd6\xcf\xcd\x81\xf8p\xcfD\xe6j\xdc\xed:\"\x83\x8e\x0c\xc6T\xb5\xaf\xd0n{_Q\x96\x7f\xe0\x01\x020\xd4D\xa3\x9191\xd0/!V\xed; '\xaf\xcb\xddc/\xa7u\x8f/9\x0b\xfb\\\xcek\xa1;@\xeb\x98\x9e\xb7n\xeb\xa7F\xf7\xa0;\xde\x93\x10b\x1dD(\xac\x14N\x8e\xb9\xa5\x0d\x86c\xdd\xe0^\x1b\n\xee3\x8ffq\xf6\x9el*\x9e\x19\x8a\x8eb\xd3\xc92C\xc5\x0b2\x8bg+\xc2v:\xad\xa1oQP\xf6M[_6\x8f\x9e\xff\xf9\xe4\xf9\xff:\xfd\xe95\xaa\x16\x99\xf6Q\xdf\xc2\xa6\x97\x93c\xc4\xc7\xe2t\xd8D\xf9\xa6&\xe5\x9f?\xbc\xfe\xd1\xd4Ke\x1b_\x08\xdd\xa8\xbc\xa2\x88\x13b \xb5Q\xe1\xe2Y\xaf\x16\xe9\xba\x90\xa9\x97O\xe2\xce)\x94\x9e\x94A\xa8\xfaWf\xcc\xb1r\xb0e\x10\x8c\x80H\xf5\\\x06\x9c\xe1\x91\xbf\xe5j\x1b\x1c\xec\x85P\xc0.\x1c\xec\xa1S\xf4\xc7\x0c\xfc\x8a\x94W\xa4d\xd5g\xe6\xea\xfa\x99\xe9tWtg\x1dx!h\xaee\xfb4\x03\xb5K\x86F\x0e\x19\xaf\xdd\xd3\xef\x19P\x81\x07\x98r\xd5\x90\xe9'\x94GIV\x91\xb2\xfeP\x12\xc2\x1c\x1b}F\x9d\xe81`\xe4\xd3.X\n\x80P\xb3\xd3kE\xab>\xf2:\xefG|\xfa\x85\xf7O\x87\x8f\xbe\x0d\xf4\xcd\x9b\x8f\xa5\xc6\x0fH\x03$TM*\x1a\xe37|\xed\x98\x95@\xd9DS}\x1a\xa01\x8fN\xb9l\xd0A\xb1\x060\x00\xeb\xb1\xf6;\x98\xc8Z,\xe4+\xcf\xeb\xd7\xb3\xf8\xfb\x82\xab\xbb::?'\xd5\xeb|\xbeI\x89F\xcd\xc3C\xb2f~\xf7\xea\x0d\xc3\xe7b\xbc|4\x7f)\xd5f\x8e\xa1\xd4Z\xd8\xcd\x859\\\xdb\xb4\xeeV\x1d\x0d\xaf\x83r>\xff;\xaaVqA:f\xd3t\xe7\xce\xca\xe4\x82L\x94\x8at\xfa\xa8\xc2\xfa\xc7&)\xc9\xbc=\xe2yR\x15\xf4,v\xfe\x80\xf9\x94\xd5C=4+\x10\xdc\xe1\x12\x84-8\x98\x11W\x7f\x0b\xcd\xaf<\xc0\x14\x16I\\\x89\x90\xb2\xccK\xf5\x8e\x04\x1f\xf4\xb8.\xfd\xddt\xbd*\xf3k\x8c\x80t\xc2\xbfj/\xa9\xde\xbc\xdb O\x95\xcb\xe4\xc7\xdd\x1bJ~\x9b\xdc\xb3S\x14\xa9\xae\xba7\xa41\xaf\xdf\xc5\xde\x0d\x7f\xdem\xbf\xe2\xcf\xbb\x17\xc0\xfc\"\xb9\x97^\x80_$\xf7\xd2\x0b,\xf8\xf3\xee\xc5/\xbbH>x\xa2\xbbH\xce\xfc\xc3\xc7\xddy\xb1\xfb\xe3\xfd\xc3n\xfbW\xbc\xfd\xee\xb5\xfa\x9a_\xabw\xdbY\xf2\xe7\xddy\xb1\x1b\xe4\xde=\xf4\x05\x07\x7fw\xba\xe7\xbc\x99\xeep\xae\xf9\xf05W\xc4\xb4zw\x94\x9f\xf0y\xef\xda\xfa\xb4\xafN\x7f\x0eG\xddh\xda\x97p\x04\x0f\xdb\x8f\x9eQN@\x04\x00|V.\xf1\x12\xa9:\xebD\x18|\xab\xd6\x12\xa1\xeb\xba\x95\xde\xa9\x950\xf4n\\\xe7\xa5\xa9\xf6\x07\xb5\xb6\x88<\xd8\xae\xf2\x9a\xdfb\xcb\xdf\xd3gg\x94g\x9b*\x03.\xe3\x9b3O\xf7\xf4\x87\xcdbA\xca\xde\xbb\x17q\x1d\xff5!\xd7\xbd\x17<\xc7\x87\xee\x03\xd2{\xf82\xcd\xe3\xfa\xf0@\xdf=\xbe|\xf4P\xff\xf2UV?6\xbe\xd9\x7fd|e\xea\xecu\\\xf4\x9e1\x17\x14\xf1\xf8C\xe7-\x8b \xd8\xfb\xe8\x94\xd4\xfdg\xc8\xdf\xf5\x1f\xdf\xac/\xf2\xb4\xf7\xf8\xa7\xc487|\xf5<\x8d\xd7\x05\x99\x9bk\x98\xa6O\xdf\xb5\xe6O\xc9\xbc\xf2\x1e\xc9\xa8\xf8\xeam\xe7\xe3\xbf\x91\xf8R\x02ig?\xd4262,\xef\xab\x10~\x0e\xe1M\x08\xefu\xb7w/B\xbc\xbb\xc9\xe0\x1e\x9c\xf6\x99\xeb\x9f\xf8\xab\xe7\xfdW\xff\xe0\xaf.\xdb\xe7\x03ei_\xe1%\xee\x0b*\xb5\xc31\xbc\xa2\xe3\x90#\x98\xd0\xdfA\x10\xaa\xda\xd3\x17R\x84x\xd1ol\xe7Z\xcd[\xdaa\x9e\xe8\x0c^\xe2\xbdBWJ\xa5\x9f\xbe4\x89\xc1thW~M%\xee\x1fe\xd3\x18\xd5\xf7E\xf7\xe02\xc4\xbf\xa5\x1d\xff\x13\x8e`E[\xe9\xbd\xa5\xe5\x078\xa25\x8e\xe0-\x15\xb8\xf1\xafwz\x05\xc6\x85:\xc1\x8a\x8e\xe2G\x83\xaa\x03[\xf9 \xdb{F\xff\xfa\x01\xb5ToLr\x81\x98\xeeO\xac\xee1\xfcr\x0b\x13Xv'\xff\x13\x1c\xc3\x82v\xbd\xf1_0\x1d\xe7\x04f\xf4w\xcc\x7f\xf7\x1a7\x82F\xf4\xba\xf3z\xfa\xcf3\xd9\xc1\x1b\xee/\xfb\x8bA\xefH\xc7\xb8\xa6\x1d\xfe\x93N\xbf\xdf\xdb\xef\xcc\xbf\xde\xa3\x0d\xde{`!\x18\xcb\xa0\x8f\"\x7f\x85#x\x8f\x9aj\x1d\x9a\xfcU\x0e\xf2\xaf\xfd\x97\xef16#bF\x88~\xed\x0d*\xca\x08`\x92}\xe9\xd9t\x00\xde\xdcbXC\xbf\x14\xbb\xb1D&\xe7}\xd7\x12<\x08u\xe8\x7fn\xeb\xd2p\x9f\xf3\x02\xc7\x9d\x87\xa0t\x9c\xbbvLa\xf6g8\x82\x7f\xc01b\xc6\x1c&P\xc0\x04\xff\xbe$7\xd5\xab\x0c\x03\xe2\xf6:\xfd\x1b\x1c\xc1K8\x16{{\x02\x7f\xee\x01\\h5\xfd\xbf\xd1U\xab\x15\xde\xcf4\x93\xbf!5)1\xc6\x13z\xe8\x9e\xa1%\xfd\x0b\x9c\x8f\xdb\xec\xe4\x93\x91\x1c\xe7\xc1\x93.\x87$8N}\"\xaa\xef\x1e\x8f\x9669<\x12\xe6u\x81W~;\x18Z\xbc\x95\xeb`\xe4\xb8\xf7\x1f\x1b\x92\xc2\x1ety2\xce)?\xd6g\x85=x\xd2}\xbei\xc2\xf62\x0f[\x11A\x97\x1d\xa0\x15%#\x83\n\xdfV\x94\x8d\xe9\x19\x8b\xb2\x81\xce[\x14\x04<\xcc\xc6\xb0{{{}a\x02\xb1\x1e\xe8N\x06\xc1\xeab\xeb\x81v\xd8cX\xb9{\xd4\xf6\xab\x8d\xcb\x9c\xb4\xaeuG\xae\xf0\xe3\xc7z\xcc<\xec\xc9H|\xb0\x8f\x0f\xb7\x1dl\xe2+\xa9\xa0\x99\xc9\x18&\xec\xf7\xbe`\xf0]4\xcc\xa5\xde2\xfed\x1b\xa6\xfeF\xa3Q\xa3@\xaeZi\xd7\xa8L\xe1Z\xc6\xfb\xb0\x0f\x13\xc0\xe0\xfd}\xe2e\xbdc\x93\xa8KA\x1a\x0b\xb9\x82\xc5\xfd\xbc\xbf\xcf\xaebs?i:c\x1d\xa1\x14\xc9\x82\xf7o\x82\xa7\xb0\xbb\x1b\xc3\xf7\xb0y\x1a@\xc5\xcd\x11\xa65\xecB|\xa6?\x17Y\xe3\xfawr@\xa9\xec\x816\xb5/{\xa9\x9f\x06\x90\x8a^L=\x08\xf6\x87\x05\x0c\xcd\xfc\nS\x8a\x11\x96S3\x04\x9d\xdeo\xfb\x85\xefn%a\x0f\xbe\x1f\xf8\xa5\x01A\xbf\xc0\xf7\x91S*\xa6\x15i\x12\xab\x87\xe05*\x16\xaf{Y\xce\xb3\xd3*w1\xb7\x81A\x05c@B\x0d\xd5\xcbzZ\xae\xa6\xf5\xa7=H\x99\xf7$\xea\xe2\xd9\x0dV3\x05\xc9\x1f\x90\xfe1^w\x04N\xd1\x884M\xe9/\xafr\x9b\xc0\xbc^,q\xdayTs\\\x11\xb4\xdedQ}\xc94;3\xd8\xdb)\xb0\xa4k\xd9\x80\xc2\xcf\xfc\xfd'\x07\xc1\x17h\xcf\xbe\xf6\x92\x1bM \xf54\x03\xc3\x88\x18\xbd\xa4\x92l\x91k3\x87\xd1\x92\xe6Km\xee0\xc0\x94\xb5e6\x81C\xfdKT\xdcM\xe0a\xef\xa5\xc659\xb3\x1ao\x82\xb2nSrF\xb9\xb6\xfb\x9a\xfb\xd0~\xd3\xccOs\x96g\x8bdYEi\xbeDs\xc0~=F\x02J5\xdb\x00\xa8f\xa7\x89\x8d\x91`\x97Z\x92 \xcb[\xafDR\xc5\x12\xfe\x04\xfb\xa8\x87f'\x00\xa5\xca\x94\xb0\xee?\x05J&\xcb\xa7\x10\xef\xee\x06\x94F\xd2\ngjkZ\xb2\x89\xa0\xfa\xd3\x91\x12\x92\x95+M\x83)9\x8b\xe2\xa2H\x11\xe5\x06\x0d\xda\xc5\xe9\x1a\xd1\xb5D\xfd6&)f\x17\xee\x1e}\x88\xf7\xb3\\/\xdb}\x8fOY\x05\x8aD\xbd\xf7\xf4!{\x8d\x18\xd8{\x8fO=\xad[>^Vc\x0e\xa8\xca\xe4\x17\x8f\xa8\x99\xf4\x91\xc00]\xa7S\xc2\x9a\x07\x8e21]M\xe3\xd7\xb9vpc\x8f\xc4\xc6\x978\xae\xa5u\xfa\xb3\xc0\xc0`\x90\xce}\xc4:\xbe$\x7f\xae\xeb\xc2\xa7\xc4\x97\xbc\xa4\xaf)Y*\xf2\xaa\xc6\x1f\x06\xd5\xc3\xc5&I\xe7\xef\xc9?6\xa4\xaa\xd5\xe6\xd4\xe7\x06\xd2\xc1r{\xab\x1f\xf1G\xfa\xfa%\xa9\xf2\xf4\xaaU\x9f?\x1a\xac\xcfMM4\x9f\xf17\xfa\xaf+R&q\x9a\xfc\x93\xbc'\x95\xfa\xad\xfa\\\xffe^\xbc\x9a\xab_\xacHZ\x90\xb2\x8a\xe8\xf3\xbbEc7\xdc\x91\xc4\xad\xd6\xeb\x0c\xf0\x84\x9e\x96\x8d\xfa\x84\xfe\x10-\xf7\xe9\xd1\x15w\x1d\xa1\xb5\x8cGQ2\x81\xd2p\xd2\x98\xa3\xe3\xf2.'\xba\xa8<\x1aM\x8e\xe0C\xe8h\x91+\xc8\xc5\xa0Q>W~\xa1\x97N\x94r\xcd\xa7|a\x00=\xf0If\x1anF2\x15k\xceNDx\x0d\x83\xe7wGp\xd0\xb9\xdd\x00^\xb9\xe5\x9c\x7f\xf9\xfc\xd9\xc0A\xb0\xaf\xf5\x90e\xfb\x7fS\xc6\x17)\x19\x00e\xb6Y\x13Q\xc7\xc0\x10,I\x8f.\x01h\x82\x10C\x1d\xd9On\x01\xb0\x1e\xbf\xa8\n\xe9\x96#\x9f\x88-\xd3\x1f\x138Dl\x11\xad\x8c\xc0\x9d:\x9a\xfbY\x08^\xcc\xfd\x8a\xb3\xfe\xd4s\x17\xfb\x18\xde\x9c+\xef\xdaO\xbdRG\x05KL\x05\xb5_Gt?\x1f\x1c*\"\xaf?\x1d\x1c\x82J\x072\xff\xe1\x81\xf2e8<\xf8\xce\x97\xdfn\xfbek\xb4\xe3\xbe\xdc\xba\xcf\xc3\xc3\xc7\xe6O5R{\xfb\xd0o\xbd\x92$\xb2\xd4c\xb7@-\x0dr\x13c@\x1fy\xf6\xdb\x93T\xea\x07\x93\x1b\xf1M\xec\xb6.\x1f\n\x7f\x82\x83\x8e\xb5x\xc3\\\x1e\x9c\xc1q\xfb\xe7\xc4\x98\n\x8d\xb29\xbe\xa6\xf5Cc\xeb\x87\xed\xd6\x0f\xcfP\xff\x1eDW\x07o\x0bRbL\x9aWh^\x12\xd7 \xc6/\xb9y\x9d\xcf5\x1e\x9f*\xa8[\xa9\xddTE\x0b&kP,\x10&\xe8\xf87\x13\xf4#\xf0I\x10\xb0(Qy\xd39s\x84U\xd2r}\xac0\xc7\x96\x174\x86a\xab\xf6'\x01L \xe1W[\xfaE\x1e\x9e\x9e\x9e\xbej\xfd\xc5\xcc\x02\xc9@8K\xdd\x12\x8dC\x00\xfb\x12\x99\xc8\xad\xc0A\xbfnG\x84\x80]\xf0\xce1}P+QZ\xb5\xf3\xff\xfd\xfe\x9b\xff\xf1\xf7{\x7f\xf4\x83\xf3\xdd\xa3\xe9/\x1f\xcfn\x9fN\xbe\xff\xd3\xe7\xe8\xe3\x83\xe3\xf0\xe3\xc7?x\xde}\x96<\xed\\g\x99\x0b\x0df\xb0\\\xe8\xcc\xf3\xb0\xb1\xa1\xdbo\xfa\xad\x95~}\xff<\xf8\xe5 \xbc\x0dD\xd3J\xe6\x12\xff<\xf8\xa3@\x80\xe6\x83\xe9\xf9Y\xf0\xc7o\xf8s\xcb\xc6UF\x851X\xe7~M\x87\xd1\x0f\xa4nX\xdc\xd8v\xa0\xf0\x06\xbd\xfb\xfdtL\xa667\xb66+N\x1fw\xf6\x90\x03q\xc6\xc4\xcaDWA\xdc\xc1\xb1\xe0Vb\xcf\xeel\xb3g?\x7f\x86\x1d\x12\x15q\xbd\xaa\xfa\x8du\xaa\xb3jC\xb1-@Qs\xf1\xea\xfd\nR\xb6\xcf!\xc9\xa0\xd4\x9b\xa8*\xeaXZi\x9a\x1b\xa2\xcc\x03\x87\x85\xf7\xee\xd9\xfbg\xafO>\x9c\xbc?e\x83O\xa2:\xff\xa9(laSD\xb9\xe2\x0eg\xb4\xa7ibP\xa6\x8aB;\x8c\x07\xe9el\x83}\x1cX\x87\x04\xd0\x18j\xdbk\x8aR\x15df\x8c\x13\xa6+t\x95XX\xd1\xdc\xfd\xa35\xa9W9\n]-(\xbb7 i\xfed \x9c\xa8Z4:(]\xc1\x0c4\xbe\xc9\x06]-(\x85\xa1W\xb2D\xe8\xcd\xe0Gz\xa7\x97\xfe\x9b\xf6\xaf\xadT\x96\xa0U[b\xe3\x9a\x0bp*g\x95~\xe6\xef?\xee\x06\xff\x00n\xb6\x86o\xbby(\xea(\xa9\xde>;=t\x125\x98.$/H\x16\x17\x89\x91\x89\xe0Y\x15(\xae\x17\x0d\xae\xd3\xc9\x1ez\x1a\x16<\xa9N\xaf\xe3\xe5\x92\x94\x07#\xc6P\xb1O\xb6\x18\xc3\x81n\x0cy\xf1j\xce\x12\xf0\xd7Q2\x7fY\xe6\xebwq\xbdz\x8d\xf8\xcd\xdcI\xeb(%\xcbxv\xf3\xaa\xff6\xa6o\x97\xa4\x96\xc7\xf9\xfb\xf8z\x84\xf8\xc2\xd9[F}\x8f\xd9Ib\xd7\xd7J\xc9/\x12[\xd7\xbc5\x18!f\xbb\xd5\\+\x11\x8b\xcb&\xa1\xdf;x\xe2$\x83'Nb\xa3z\x89\x12\x19i\xc7p\xef%H^\xa2\xf2\x85\x83\x0c\xca4\xf7\x13\x19\xf0\"\xf6\xf9\x1f\x9b\xb3\xa8\xca\xd7\xc4\xb7\x03\x14\xba+\xc2\xee\x16\xb5uu\x91\xd7\x0c\xd9\x10\xd0>>\x9bK\xdc\x80#\xd8\xd0\x87$\x9e\xad\xd4\x87\x15\x8b\x93Q\xaeQ\xcb\xc5w\xc4\x98\x0dQ\x90\x99~mY\x005D/\xb3\xd4\xa1\xb3\xd9\xc1\xb5F\x96\xaf\x8e\xbe\xf9F\x8emn\xba\x8b\x82\xde\x89m\x0c2+\x0e\xda\xccx\xca\"\x9f\xbd\x17\xc2\xa2uZ\x0e\xac\x9d\xc0\x18\xcc\x92\x15\xafIMJ\x0d\xdb!\x8a\x1cgE\xc7\x19\x07\xb0\xe3\xb0\xe7D\x91r\xe0\x948\xf0\x08;\x9did\x0d\xf6{\xb3<\xab\x93lC4\xa9a\xd4r\xc5]qs\x9f9\x7f\x99\x9cqE\xa1\xddj\x83\x02uK9\xad\xa8tB\xffc\x91\xca3\x8a\xc6\xf8\xf4\x08\xa6\x99ev\xc0\x87\x86\x87\xcb\xb4r\xa8M\x076k\x84\xa6\xfd\x00f}{'\x13\xbd\xd4\x15\x12\x9d\x9f\xe7e\xb2L\xb28U\xc4)\xe6\x96\xa1}\x83\x12\x8cBT\xc2\xf6O\x96\xb7\x9f%L\xe7W\xed\xd6\x81\xe8\\\xab\xbbE\x86\x00Td\xc4\xac-\xf4\xba\xcd\x98\x02\xbc\x80#\x98M\xf7\x1c\x00NKa\x84\x91\xe9\x0d\x15P\xda0*:0\xaa\xac=\x9b\x19%\xfb[\xe4\xe5\x9bm\xcc\xce\x18\xeb\xb6\x04\x0e\x9d\xb9%U\x84ZV\x06\xda\xd7-\x92^\\QzQ\x07\xe0\x15e>\xdf\xcc\x08\x1f\xdc\x15\n\x02\xb3<\xab6\xeb\xf6\xb3\x8a\xcc6eR\xdf\x88g\x9f?\x83\xbf\x9a^\x9d\xa1\xb1\xdb\xd5Y\x08s\xb6\xf3V\xba\x0ca\xddB\x01\xb3A\xc6f\xa5\x909v\xa64\xed\xd0\xbf\xb97\xa0\x03\xc8\x80\x83m\xcd\x14\xf5N\xf5\x81{\x18\x98\x14\xe1\xbar\x03G\\Ab\x9f'X3pt\x8b\\\xa0\x8b\x10\x9d\x16(\xd1M\x1b\xa2;\x0f\x9e\xc2\x8eO\xa7\xe8_\xc0\x11\x9cG\x19\xf9T\xfbA\x10\xcd\xf3\x8c\x04O\xf9\xe4]\xc1%\n\xed\x8f\xb2z\x17,\x00\xa8\xdb\xbcD\x91#>\xa1(um'3\xdd\xc2n\x90N\xce\xc6\x8eZ\x94\xde.\xa3\x0c\xcf\xc9\xb6\xad\x01\x87\xc7\xa7\x91h\xa4+\xa7#QKW\x9e\x8fD7]\x19\x87\x82\xba\"\x17\xf92D\xa7\x95\x0eZ^\xd3\xe5\xa3\x98I\xa1\xe6_\xc2\x11<\xebb\xe6'\x8e\x99;\xf6\xab\x981\xe5\x8a\x87\"\xbf\xdc\x06uu\x85bb\x87\xd7v>\xc5mE\xde\x1be\x1e\x81\xb7\x19*p\xc4\\\n\xc4\xbcq\xfe\xd4q\x9d\xac\xb5\xb6\x150n\xfdJ\x0f\x1b\x8d\xf9K\xef\x89<\x89T\x85\x08G\x8e\xceMQ_E\xbb\xe0J\xd8\x87\xdf\xe9T\xb4\x85P\xd1\xf6\x82Z\x03\xf7\x17\xb6k(\xf8\xf0\x98\x07\xa4b\x11\xa1\\\x15rs\x08\x8d\x06\xab\xdf\xe9jL\xa7D\xb9w\xfc\xfb\xc7\xeb\xb3\x07\xcb\x84]\xfe\x0d\x80u\x9c\xe9\xc1\xe3'\x036\x16\xffo\x98\x1e\xdc\xcd\xd5s\x9a\xc7\xf3S\xa3\xc2\xb0\x94\x9c3\xd3R\xd0\xe6\x0d\xe9\xdb\xf5\xc9\xc6\xe4\xdb\xcb \x90(\xbf43\xf2\x9b2\xa5U6e\xca\\\xc5\x8c\x15\xab:\xae7\x15\xe6$\xc1\xbfl5Y\x8aPQ\x9b\xfe2\x7f\xb1\"\xf1\x9c\x94\xd5\x04\x12\x9fD\xfc\x87\x81B\xe8\x1b\x89\xe1\x08r\xf1\xe5\xd4\xe3y\x84\xee\xd3\x9d\xe7\x19\xf4\x10\x1b\xccC\xf9\xf93\x9c\xfb\xb1\xd9\x0f\xca\xdf\xa0kKM>\xb1\xf8\xe5\x17i~\xc1\x14X\x17\xe8'\x1e\x88\xcd\x1c\xd5+\x929(\xb9)\xc9\xceY{hH\x97G\xf3\xb8\x8e\xd9\xdf\x9b\xc0r\x00]\xf5\"\x01;(\xea\x84\xa63.\x8a4\x99\xa1\x02\xe9\xc1\xcf\x15\x8bO\xc1\\w\xfer\xfa\xf6MT\xc4eE|LA\xb4l\x8c>\xe3\x05\xf91\x8f\xe7C\x0c\xf4-\x1d\x85\x0e\x84\xa2\xe4\x98\x01\x01\x8e(\x85\xc8\xa3\xfc\xe2g0j\xf5\x9dX\x83\x9c\x8d\xf5\x84\xdbl\xeb\xb9\x01\xfd\xe9\xc3a\x91\xf7\xa9\x83\x9b\xe1B2\x9cT\xaaO\x19\xf6\x8c\x94a\xafM\x19\xf6\x18e\xd0\xe3\xaa\xce\xbf\x04\x94\xa5\x15\xe3SC\x8e\x10\xa1\xd6e\xf6@:\x1d\xaf\xf9r@ \xba9\xcd\xe8@\x85\xbf \x9a\xfaGI\xc5\x1d\xa1\xa6\xd9Y\x00\xc7\xac\xd2\x04\xa6\xf4\xff\xb3\x10\x7f\n\xb9\x8b\xe2\x93\xf0U\xd1@\x1d\xf1\xb7\x1b,s\xc0ld\xe0\xa4\xd0Gfy\x99\xf0#C\xc4\x89\x13\xcfd\x9c\xd1\xa3\xadl\xaeVm\xfb\x0dS\xe0\x17\x12\x15I\xf1\xa5\x06,\xcdM\xe3,Oy\xd6\x9a\x97\x98\xf0\xcc||\x90(N\xd3\xfc\xfad]\xd47\x18;\xd8|||\xd9\xcc\x8fE\xf2\x1dJ\x1f\xf5WX\xdd\x04@es\xfdb\xc8\xc8\x1f\xfb9\xcb\xdfp\xc1\xa2k\xa8 \xcd\xe5\xd7y\xff\xe3+\x91~'\x9b\xe5s\xf2\xd3\xfbW\x86\x80P\xa0p\x92\xa8\xcdM\xb8j\xe8\xa6\x99]\x1eX\x1dma\xd0\xfc\x16l\x81\x19\x95\xcf;\xf7\xe4:\xee0\x08\xcdW\xbe\xb9m\xa9rfd\xd4\xde\xbf8C\x97G\x18\xfe\x1d\x8e!\x8f\xd6q\xe1'A\xf4s\x9ed\xbe\x17zt\xf3z\xebMZ'\x0c}\xd4J0\xe9\xd4\xd7\x03`V]M\xc0\x0b\x0d\x06\x99\x15\xbe\xfd\x1f\x07{\x86\xf75{\xbf\xf7\xc4\xf0\x9en\xbfj\x02\xdeg\xaf\x0fP\xa4^\x94\xe9\xc0\x14\xd0\x9e\xe7\xb4M\xab\xe1{\xe0\xceU#\xda\x02\xce73U'7Dx\x85\xd1\xd64\x1b\xb8>\xa1\x9bvg\xa7\x8c\xaa\xcb\xa48\xa1\x88\x9ed\xcba\xab\x82\x9c\x87\xeb\xefo\x0bc\x88V\xe0l\x95\x1d\x83EQ9\xf6/\xa2)\xc6^ny\xe2\xbf\x9d6\x82v\xa3Q\x88\"6\xf84\xa1\xc7\xcf\xc6\x8f\x8d\xeeJ\xa2pc\x1fC\x1a\xd2\x10\xf2 \xd4\x05v\x0e)Oo$0\xeb\x86\x9dB\xa90Y\xa0\xe1\x91~\x14l\x85\xcc\x0e\x0eI6Of\x14\xa3u\xf1R\xbb9o`\x00\x8f\xd3\xdf\x8e\x95Aq\xc3*\xf9\x08\xee\xd4\xf3\xd0\x9d\\[=\xc7\xd6\xfe\xb1!\xa5!\x8203\xa9Y\xe4\xe5Z\x7f\xd0\x0c\x86fM\xfb\xfb9 \xc6X\xb3@\x83\x04\xb1\x9fL\xc9\x19;)\x07\x10|`3\x168\x15\x83\x8c\xc3d\x12\xf9\xf29\x7f\xf9\x01_\x9a\xed;P\xe8{\x80\xf4\xbb\x88\xcb\xfa\xe3\x03\n\xa9\xfbT\"y\x90D5\xa9j\xbf\xb0\x9a|\xf08j\xa6\xf8\x9d\x80J\x04.\x01d\xe4\x1a\xe6\xa1\x06\xa8=\xf6\xd4*\xd6\xb06\xa3\xb8(H6gAu\x92i}\x86\xf6\xbdC\x00\xd6om\xa6\xf4\x94\xe3\xac\xfc\xc40\x1d\x1ez\x98\xe1T\x7f\x07j\x91L\x1bq\x058\xf8V\x98)\xb2*\xd2\xa4\xf6\xbdco\x00\x01\xae\xa0g\x0b\xbc\n\xa1\x1b\x8aB-K\xba\x9b\xa6{\x03G ^ O\xf7\x07j\\\xa0=\x86\x19\x85nl\xf8q\x8e\xe9\x96\x04 db\xe6\xcd\x00\xb2t\x90#\xd7 \x87\xeb\xa6\xe3\x8bu>%f%6e\xab.ZCl\xa8\xf4\xf9PFmP\xa9u?\x0b\xa7(&\x8c3\"\xc4\xb5-\x9d\x8d(\xf2fSG\xb0C\x96\x0c\x08\xcfG\x12\xb0l\xbf{O!\x83\xef\x81<\x85lw7\x10bYC\xb8\x87\xac\x8d\x04gRG\x8b$\xadI9~1\xccZ\xfb[\xc1O\xde3\xb9@@\xd3LI\x8f\x84c\x0fv\xf1(\xf7\xfal\x1d \xa3p\x11BE\x99^}{L\xe1u\x04K\xd8\x85\xeb\xb0\xd9\xd4x\x928\xecj\xed\x94\xbe\xb2\xc1q\x08uT\xad\xf2M:\x7f\x91_gi\x1e\xcf\x9f\xa1Z\x8deg%\xe9\xc2p\xdd.\xed\xc3\xfc\xcc?\xe8eK\xa4Eh\xc5\xf7\x86\x94\xe2Z\xa3\xe6\xb9\xd0\xa7\xeb^\xae\x1a\x8b\xe7\xfe\xcb+\xf1Rc\x0f\xad\xba\x1a\x0b\x9b`\xf9\xec\xcf\xec\x8c\x136\xc1l\x07Ri\xf8m\xf9\xbf\xe9\xea K\xce5)\x97\xe4U\x86\xcf\xde\x96\xb4\x02\x1cA\x8ao\xb8\xc3\xb7C\xc0\x1bh\xd6Zz\xdf\xd8\x11\xdf,\x11\xb2]Y\x7fq3\xda\xfa\xb2E\xad\xfb\xad(B\xf2\xeeg\x90a \xbaK\xab\x9b\x03\xaa\x8c\xf5,2\x08\x82\xaa\x01\xbf_\xf2\xc8\xe85\xfe\x95\xf9\xa4\x97\xa8[6\xd1F}Z\xf9\xe0;\x8d\xc5\xfdZ\xa0\xb5\x169\x97\x02\xc5\xbe\xd5\xbd\xbd\x11\xdf\xf6Ru\x02?\xf5\xe4\xae\xd2\x83\xa3\xed(op\xda\xe8\x83a\x02\x9a\xf4\xee\xdd\x1d\xc0\x8f\"\xdbI \x88?=2\xaf\x14S+y\x94\xad\xe3\xf2RRj f\xae\nUL,!\x17Kn\xa0\x97\x01\xf6\x8d2\xc0~[\x06\xd8?\x1b\x08C(Ng9\xcc\xeb2.\x1c\x0f\x14\x16\x82\xfdi\x00\xd5u\xc2T\xc5QQ\x92+\xe4\x8d3\xf2\xc9\xca6\xce\xe2\x8a\xc0\xded\xb0\x0e\x08\xd3,\x93\x10[\xdb\x84X\x91\xc2\x1e5\x02\x14\x96u@O\x1c\x0c6\xbf\x92\x04\xac\xf9\xfb\xf3gL.\xa7\xdd6q\x10\xc2N\x1c\x95,\xa4\x04\xa6)\x9b\x91\xa2\xce\x07w\xb9Z\x18`\xe0\x08\xf6\x1d\x0d\xb1.J\x12_Zk\xda\xef\x87\xe5\xb5$\xef\xff\x11\x9d~\x7f\x1e\xda\xfb\x17\xb5\xe0\x9a=r[3\x12\xd5{\xcc\x1c\x9fdu\x08\xf4\xe7h8=\xf9u\xc1\xc4\x87\x1c;\x00\xe1\x89\x1d\x08,\xe3lmYjlm\xdfa\x1f(\xa7_<$|\xc6&\xe13\x1c\x96/y8+\xce\x81\x19\xbb\x90<\x9a\xb1\x1f~\xb8\x88\x08z\x92,\xec\x1f\x86\xca\x0ex\x14\x82\x8f\xf9\x1eJ\x8c\xed\x82\x071\x06y\xa1O\xcbt\xf8\"\x0b$\xe0\x1c\x90Q\xb2\xab*2\x8aa<\xa1{]=@|\x16\xaf\xd4\xadw\x07,\xa0[A\xed\x1a HU\xe4YE\xbe\x84\x82\x1c|\xf7\xebn\x8d.\x0598d$\xa47\x13\xa3\x0eP\x14\x84\xdc\xc1\xa1\x1b\xe4HT\xef\xb7\x89\xc8\xfexP=\xfauA\xc5\xc7l\xc9\x0f\xc3\xc0\xe0\x82\xbe\x8c\x8c\x18\x9c\xc3Da\xcd}goN\x82\xe5\xd0\x01\x83\x10$.\x1d;n\x04I\x0b\x0e\x9e\xe0b\x1e\xb0\xbb\xb4\xb8\x9e\xad\xfc\xfd\xc3\xc0\x10\xafFW\x9ai\x1c\xda\xa7\x01w\xb8\xba\xcc\xc4\x8b\x8e\xdd\x01.\x87\x0eh\xce\x1a\xf4s\xae\x94c\x19%J\xc5Z#\x08\xf8\x8f\xe7\xf9\x1c\xc3\xc5\xf2\x9fL]\xc5L@ \x97{Q\xde\xc6G\xf5A\xa8\xbb\x99S\x0b\x1b\xa5\x03\xda \x19\x8b\xf2\xcb\xd1\xeb\xf3\xd0\x02'Q\xeev}\xf0\x16\xd1\x0d\x9c\x89\x0e\x9c\x89\x04'}\x1cv\x93\xcfw\x0b\x82\xf1\xe1\x81\x1d\x8c\x92\x8c\xc6\x17\xe5\xa6\xa8}\x8f=\xf0\xc2^ \xefna]X\xf0 +y$\x9b{#\x86R\xd5y1`\"\xa9\x07\xf9-K\x93\x871S\xa7\xc6o\xa7\xf4\xcc?x\xa2\xd7\xf9i\x02\x18\xdc\xea\xd4D|\xa0v\x85t\x03\\\x16\x92\x10\x07'%![(\x8d\xdbnVB\xa125*{\x06%B>\x98\x07\xfe\xcfU\x9e}\xfe\xb4N?\xdf\xc4\xeb\xf43\xa6\x00\xfdx\xf1\x80\xf1\\_|\xb9\xd3\x8d\x10\xb2\xad9\xe1\xc3\xfd\xffxk\xc2\x81\xc1\xb4/1I\xa0\x06Q\xfe\x1eCi\xe2\xd5\x97\xf7\x00\x83\xa0\xe0M\xba]F\x16\xe6\x04\x99`\x02\xddkTS\xe3\xb3\x01\x13)#\xa3\x85\xbaR\xba9\xd8\xbc\x9b\x00\xcfti\xce\x95\xa5\x19GZ5S\x991+g\x9d9\xaa#i]\x0c3\x19\xeeW\xa4\xfc\x0b\x85\xf1\xd2\x8d\xcaiL\x85\x9d\xf1\x19i\x94ua6\xca2\x0db\xee0\x08Q\xb9e&\xeb\xd4\xfaJ\xdf:zAY\xf6\xb8\x88\x9b4x!\xe1\xc5\xf3\xb9\xb0\x8a\xff\xfc\x99\xb2#\xeb\xfc\x8a\xb4\x9f0\x06\xc5\x10\x99\xc6\xb8/;\xc6Z\xa6 ^\x0d\x82\x0f\xa7\xff\xf93\xd0\xb9\"$\xd7\x9b:\x16\x90D\xc9\xfb\xc6\xd1\xd4x=\xd8\xcf\x15o\xdfo\xe0AA\xd7\x07\x80|\x8a\xb7\x16\xbag/\x08)\x9a\xe7n8\xb4t\xc0\xa1\xaf\x8e\xc87Fcl\xb3\x87\x06\x1f\xe1\xa9\xbc\xd6Z\x92\x1aM\xaf\x7f\xb8y\x97'\x19\xa5\x08\xfd\x18\xb8\x00.n\x0f\x82\xbcw\xb2\x86\x86\xda\x88\xd1\xbf3\xff\xbas\xa3\x84\xbe\xecz1t\xeb\x7f\xce_\x1ej\x0d\x06\xae\x87\xec\x10N\xc4\xa7\xda\xdb\xdcO\xe26W\xf7\xf2T|\xaa\xb5~x>d\xc3p)>\xd5:\x0c>\x13o\x1f\xf7\x8d\x18\x9a+\xdc>4\xe3\xf9|2,'\x8b2(3\x81\x90\x9b\xe8>\x1d0\x1c\x1c\x92\x9b@\x91\x9d\xb4\x154\x08\xd6o\x89\x93\x85 $\xbaw\x94\x8a\xde\xe9|9a\xb6Ny\xfb !\xf5\xba\xab1S\xba\xe8\x1a'\x8a8\x899\x19\xca\x86\xa3\xe5\xdc\x06\xdd %\xad\xb7!L\x87\xb6\xa3\x89\x9a\x9b\x0e\x1ae=\xdb\x8a\x0b\xdd\x9a\xdaV\xf1\xaa!\xb6\xe6\x11f\xcc\xeb\xf85\xa9c\x1c\x1d\xa9\x00\x83}\xadI\x8d\xaa\xcd\xb5_3\xd5B\xc7\x8f\\\xd0\xfc\xcf\x9f[xEk^\xe9)\xd7U\xc8\x9b\x15\xe9l\xafl00\x9e\x85\xf5Y\x10\xde\xf1\xc8m\xc0\\v\x0e\xc7a<\xbb\xd0\x83`)A0\x1ee\x14\x06\xe0\xc2\xc8\x00h\x9f\x8a\xdd\xd7{\xa9a\xcf\x8a\xb8$Y\x8d\xa1\xba5<\xda\x10\x83\xd6\xf1\xf0\xac\xed\xf1\xaa\x95\x84\x9aG\x98B\x17\xf1\x95]\x9b0\xbf\x97\x92\xf9\xbd\x18aE\xfbE\x9f\x18\xd4\xc3\xa2s\xb0\xa5O\xf1\xba\xef\xfd\xa3\x01\xc6\"\x8d\xeb\x9ad\x13\xd0\x04}Yl\xd2\xf4\xe6\x8d\x08g\x84s\x1e\xe1;\xbe\xf0g~\xea\x93\xae\xf6\x1a\xf4\xe3\xc8:\xddh<1\x93\xea]\x99\xaf\x93\x8a\x8c\x18D\xc1\xb5\x86s\x9f`,\x14\xa7\xb1p\xcf\xae7\xe4\xda\x117\x86\xe3\xa3\xf0\xa1\xe0}m\xa5U\xb5\x01\xb8\xa8\xdb`\x08\xcf\xc1U\xc4j&\xf7\xaeL\xd6I\x9d8kA\xdcg\xb9\xf9\xcdg\x99T\x7f\xa9\xf2\x8c\xcb`+\xdd\xfb\xe7L\xde\xed\x89i\x16\x84\x92jn!/\x9b\xb4\xdc`\x1a\x18\xefQ\xe3\x1b\x9fT\xaf\xb9&b\x02W\xba\xd7\xcf\xe6s\\\xb0\xa6\xdaZW\xed\x7f\x92\x8c\x94q\x9d\x97#\xe6\xf5\\\x92d\xe5\xfb\x97\xcd\xd7ns\x13\x1fL@\x93P \xa9\x18\xdb=\x81B\xf7\xf2\x84\xe5\xaeu\x1eq+x\n~\xdc\x1fc\xeb \x95\xdf\x15C\x1f\xa9\x0c\xfd\x9dRap#t\xa3\x8e}A\xae\xb4'\xdb~\xba?\x94fm\xf8\xd3'{\x03\x86M\xb6O\xb7\xcebw\xb0\xf7\x9d\xf9\xd3\xff`s*q\xbfw\x07\xfeJz>\x8c\xe5o\xe8;\xae\xe8k\x97\xbcv\xcfF]_\x9d\x850\xb8N\xea\xd5\xf3\x92\xccIV'qZ\xc11xI6K7s\x82&`U\xbc&\xf7Y\x9cx\x8d+\xb6`\x03\xc4z\xdb\x14yd@hB\xe7\xbe\x81Pm\"p\x9d9\xbd&`G]XML\x01\xecX\xf5\x1e\xb0\x8cyTA\x8d\x177,\xfc=\x9b\xd1\xb6&\x9a\xd0g\xc6\xcf\x06\xd2\x1b\xcd\x9a\xe5\x99h\"\x88\x01\x8aw\xaea\xe0@\x95c/\xf2\xb9>x\xa7.\xcb\xc9\xef\xcc\xbf~\x85\xdb\xbdd\xe8\xb2,\x1e\xf0\xe9]\xc7\x97,\xb7\xf2_N\xdf\xbe\x11N\xbd\xb3\x94\xc4\xe5\xf3x\xb6\"6\xbb\xd6**\xd2\xcd2\xc9\xaa\xa8$\x8bJ\xf9\xb0cB|\xeb\x9aQ\x1eT\xc2R\x9b\x17J\x10\x97z\x95\x18\x92\x99\x9c\xa0X\xd8\x19\xe0<\x9f\xe1\xf0X\x14]\x12\x84\xdd\x19,TX\xf8\xd7C\xeae\xddf2\x84;\x01\xd3f\xba0\xe0\x97~JB\x8c\x9a\xb6\x07m\xd0i\n\xeb \x01N\xd5\xb0cI\x81\x931MM\xd3X\x13\xf2>\x08\xf5\xdf\xad\xf5\xdf1\x9cN\x08~\xc7\x8f.$\xec\x85\xb6~\x9c\xa6o\x17A\xd8\x8d\xf9n\x06\xb55k\x9b\xbc\x11\x1a\xa6<\x17qE^\xe4\xb3 \x9clCi\xf8\xf0\x07IfW[\xa1\xe5\xbdE\xa1\x82\xfe\x8b\xa4\x9aQ1$c\xec\xaa\x86\xebmj\xf3\xd5y\x1d\xcf\xca\\\xcb?\x8b\xb2\xce\xe7$\x15\x94\x86W\xefGE\x01\x854\x9e\xbb\xe4E\x86\x8eos\xdc\xac]b\xf4mv\xd5\x1b&\xdb\xb8\x1d\x8b\xf2\xa5\xee\xc7\xa2\xb8\xba!\x8b\"\xcf\x8a\x9e\x07\x87\xc9\x16\xb4[\x98\xeb\xa0[\x8fc\x1c:D\x91#\xb48v\x882\xac\xf2\xe6\x8e\x1e\xe6f\xb4>\x1b\xa283D\x9d\x0f\x9c}8D1(\xd2\xfd\x00&0\xeb%\x13\xb3\x9d\xe6\xa0\x90^\xc2N\x083\x8b9\x94pl1\x1cd\x8bE\x92\xa2{W\xff~\xde\xc4\x8fT(\x8c\xbe\xee\xaa\x1d\xb0\x0b3\x17\x19R\xdc\xb1]\xd2\xa3E\xfa\xcak9\xc66}\xd1\xd7^\xf2\xa6U\xc2\xa5\xaf\x89\xf1\xe3\x9dy\xf9\x0b^\xdb\x91\x97?g\xebr\x99\x14B\x97\x87<\xa7\xbe\xf25\x8b\xe7U\xd7\x1a\x19\x1d\xb8\xc1\x13\x89\xf8Ibd\xfai\xad\x13tc\x0e\xb1E\xbc\xd5\xbe\xa6\xffl\x04\x9d\x0b1fN\xed\x97\x18\x91\xd1\xcck\x8c\xe03\x1cy\x8c\xdb\xc0?\xe1t\xbf\x9b\xfa\xbd\xcfZn8\xf7\xa8\xb5\xb4\xe2\xd2\xfc\xbe\xe6\x15K\xbbY\x19Rnf\xfe\xd6\xba\x83\x83\xbd\xad\x93\xbb?\xd9Z\xfe\xdfZ\xfa\x1f\x18\xabU\xf6W\xdf\xdc\xb9\x10a\xe2\xc8\x0d\xfaOy\xa2\x9b\xd9\x03TAE\xb3\xb8\xa87%9\xad\xe3\xd9\xe5\x872\x9e\x1186\xbd\xe1\x04\x9d\xfe\x1b\xcd\xf2\xac\xaa\xcb\xcd\x0c\xdd\xdf'\xecYEkR^C\xfan\x06\xec\x99\xe5\xaaA\x1fx+k\x05\xde*Y\xe0\xad\x92\x05\xde*ww\x03\xc8\xa6e;\xf0Vi\xe0\xacqpkRU\xf1\x92`\xae\xc6\xbd\xb3\x90\x99\xd0\xd4\xad\x93J\xa7l7\x11\x8c\xac\xb9\x8bW\x9dUC\xf5\x05\xcf\xedC\x8f`\xf5\xa9\x02:\xfai\xd8q\xa8\x1a\xad\xf5\xfb\xed\xf12\xa9^\x96\x84\xa47o\xe25\xb1\xe7w\x90\x86\xe4S\xd2\xf2\xc7\xd1\xae\x1d;\xc4\xa5\x0b\x9d\x91\x80\x97Q\x92\xcd\xc9\xa7\xb7\x0b\xca\xa5\xfc \xee\xefS\xda\x9d\xcb\x87Y\xf30q\x0d=)WZ4BX#}$\xb1\x12e\xf4i\xf2\x1a\xb9K\x17M?\xc7:\xb80 \x1dX\xe5\x85\xa0f5\x0b\xc1\x13\xe7\x05\xfe\x10\xf9\xf8^\xb4\xbf\x98\x89\x90\xb4\xd5\x83j\xb6\"\xeb\xb8\xfb\xb4\xd5\x88\xf2\xbc\xdd\x95\xda\x0c\xef\xe8\x946\xa7\x1f{\x82cg\xfd= \x9f\xe2u\x91\x12\xefl\x0c\xc6v\xc8\xf7\xc3/ \xc3\xadW\xff\x96*X$G\xc6\xedp\x07\n\xda\xfe6B\xf3\x86~03\n\x87\x8cG\xf9\xc3`\xef\x8c\x9c\xed \xc5T\xef3r%\x91>\xb9F\xab\x8f~'\x1d!TP\xdd~E\xb1g\x90r\x97\xa4\xca\xd3+\xe2w\xb5\x82\x96}[G\xf3\xa4\x8a/R\xc6]-\xe2\x19\xc1\x00Q\xdd1\x84\x18]\xfb\x92<+\x92\xeaC\xbc\x94\xd9C\xfd:\xd0G)\x1e\xa2A\xb34!\x99\\\xc1Nt\xb7\xdfL\xcbxh\xd62\xfah\xed\xffm\x80\x91\xe4\x1e\x05\xba\x8a\x82\xa1\xd4\xa7\xf3\xa9\xc4[\xad\xb7A\x8a\xbb\xf9;\x03SY\xfa\xa9!\x8cb\xe6\xef?2\x06Q\\\x0cEP\xd4\x86\xb0[17\xf9'\x86\x00\x8a\x99\xff\xad\x8e#^s\xbe\xb7\x0d\xd8\x1ce\x0d48\x94\x82A\xae\x06CL\xe5\x8f\xe8\"\xc9\xe6~\xb6I\xd3\x90\x7f\x16\xf0X\x1f\x14\x9f1m\xad\xd2\x04\x7f|\xba\xb9\xa8KB\xdf\xce\xd5\xb7\xe4\x13\x99mj\xb4\xd0\x11\x7f\xd3\xc7\x9d\x18\x8fi\xebA\xabB\x13\xf01\xed=\xa4\x15\xdbJd\xe5g\xc82\x85\xb0\xb3\xe1\x87M\x92\xf2f\xae\xa2w\xcf\xde?{}\xf2\xe1\xe4\xfd\xf9\x0f?\xbd\xfa\xf1\xc5\xc9\xfbS\xd3f\x82#Xi_\xd0\x0f.h\x9b\xef\x99\xd4\x84\xed\xaa\x0f\x10r$-X\x9f\xfd\xdd\x90\x17\xaf\xe6\x13Xc\xe2\xfb\xf6\x86\xc0q+-\xc8\xac\xd1\xe2\xf1\xffY\xd8\x17\xfe\x00\x9d\xfc\x98 \xc5\xfe4\x99\x8e\xdao [\x14\xa5\xbd\xcbm\x17o*n\x0d \x84`\x1d(.\xe8y4\x96fe/l\xf4R\xc8\xc3xt\xef{\x83\xbe\xbb\x94\x08WRi\xcf\x02\x88\xd7\x06\xed/\x89Vy\x85\xbe\xba>\xff\xf3\x082\xfc#@ 3I\x80\xbf\x17\xbf\x8e`\xca\xc5\xdcY\x9e\xca\xe8(\xde\x84\x8a\x13^p\x86_^\xc4\x15y\x17\xd7+\xfe\xa9\xfcy\x04T\xba\xb3/\x80\xaa\x03\xc9\xc7\n\xca\x16e\xd3\xde\x80\xd01\xfc\xe9\xfe\x17\x98\xb8l\xadW{\xb2\xf7h\xdbO\x0f\x1fn\xad\x1f{\xb27` \xf4\xef%\x9a\xa9\xbf\xee\x9c\x1bG\x9bdv\x01\x89\xb8I \xd5\xeb\xb8\x18\x08.\x9e\xc3@\x84\xf0d\xc8\x1dX\x1a\x0chu\xbe\x9b![\x83j\xc8W8\x15\xedj\x87$\x82\xa1\x1fj\x9d\x85\x17C\x9e\xc42C\xa86h\xb4\xe0\xe5\x0f\xf6\x86\xdc\x81\x87Y2E\x14\xbd\xf6I@E\xc1\x02\x8d\xb6\xad\xaa\x1a\x11n\xfdP+5\x89x\xeb\xda\x81\x8b8\xda\x87\xda\xb7\"\x8e\xf6Cm\xc3\"\x8e\xf6C\xed2 o\xf0\x87Z\xafm\xe1\x0e\xfeP\xeb\x98\xed\x94\x08A\xb9\x00\x1e<\x80;\xf9\xb5\x98\x98K\x82^.\x12\xf6b\x98\xcdd,\x92g\xf1'\x99\x93\x8b\xcd\xf2GrE(\xe7\x98d\x8b\xdcR_\xde\xfaO-\xael\xac\xe2\x9f\x93\xaa\xce\xcb\x1b\xb3\xd5\x9a(\x8cy\xb07+|s\x1d\xaa\x16\xcc:|.Y:\xdb\x07U\x1dSi\xc46\xd4\xc2\xb5\xbd\xc6\x0c\xc3\xd2\"\xaf\xf8\xa1$d\x82\x9b\xea\xdc,4\xa9\xa5Z\xe5\xd7/\xe8\x02\x9a31\x89\x12\xa7\xa93\x1c\xd8\xd2Q2M\xa5 FY-h\x91&\x17\xafI\xbd\xca\xe7\xd5\xa4\x8b\xab\x9dd0\x14u\x035\x10\xbcu\xdc\x1d\xc6\\\x93RJ\x14\xca\xc1\x04\xfc\x06eI$\xb7w\xbe$5S\x16\xf0\xceE\x05n\xf3\xad\xd6\xe3\x8f\xfa\xd5Wq\xf5~\x93\xc9\xaa\xecg\xbf\xdau\x19\x17\x05\x99\xbfk\xce&\xfaT\x98\xfa\xac\xe3\xc2\x97\xd5X\x1d\xa5\x89@\x84\xe4\x91\xc0\x89\x1a\x13j\xd1\x01\xc7>fD\xd4T\x8c\xe7s\x7fz\x166\x1cp`\xf9\x80\xe3\\\xf3\x11\x7f \xbf\xdb\x14\xf3\xb8&\x1c\xec\xbe\xda\x94\xde\xd2`\xd0\x11\x87\"\xc1\xbcA\x02\x12\xc2\xd4L\xbd.\xc9\xcd\x04<\xa4L\x03h\xc7Y\x03\xbb\xee@\x14\xe4\xef\xe94\x1a\x9a\xc7\x8c\xf5m\x1f\x82z\x9bV\x87Z-1\xbbBc\x17j\x19\xaa\x8c\x8f!\x83\xfb\xb0\x0f\x13\xd8\x0bBd?\xf6\x9fB\x0e\xdfC\xf6\x14\xf2\xdd\xdd\x00\xcai\x8e73\xadK\xb6\xdc\xc1%\x17\xdd\xbfy\x94\x95 J\xf3e\x13\x86Jc\xbd\xa1\x16\xb39\x8b\xc1Fd\xe8\x90a\xcbtE\xca\x8b\xbc\x1a\x8a\x04\xb1\xd5B\xc9v\x99\xf3_{\xd9l\x0d\xc0\xbf\xcf\x82M\xbd)\x06\xce\x84]\xf0\xce(C\x7ff\x8b\xca&\xcaWX\xcb\x86*\x8dYNKx\x05P\x04dAE\\lk\xd4\x827\xb9\x83*\x13Qr\x83\x08\xd0-B\xfa\x99*\xf4\x99\x9ex\x98F\xb8d\xd70h\xf4\xde\xab\x10\xc0\x04t\x04\xda\xc7\xb0m9\xbf\xc9Qk0\xe9G\xc4\xab\xca\xad\xdcu\xb7\\m\x93P[\x14>\xd1\x9d^\x889\xcc\xc5G\xaeHy3\xce\xb1Y-R\x86<\xe2I\x98\x9d\xbe4$\x1bkU\xb1o*\xde\xb7T\xd4tL-K?\x0f\xc1\x988\xb1[0\x16D\x08\xb3\x10\x16!\x14\xe8\x14\xbf\na\x8d\xee\xab7\xf6\xb1\x80n\x85p\x1a\xc2\xf3\x10.Cx\x16\xc2\xdb\x10\xde\xb9A\xbe[,+\x11o;~\xd0\xadL,V&\xdeje\xbae\xdb\x95\xea\x16\xcch\xdd\xa7A\xf9\xa8\x00\x16C%\x96\xf9r\xb6[\xa4nq\x0fk1T\xec!*l\x85\xa5b\xb8$7x\xd3\xbf\x98.T#\x9a;\x07\xde\xc3\xff,\xe0\xf1\x9d\xd7L\x0f\xe3D\xe3\xd9\xe9\xa3>\xf9\x92\xdc \x0d1%.u-,\xe2\xff\x97o\x93f\xa4\x8f\xbfl@\xe0\x96\x11\xc4V\\\x93H\xd9\n\x9a\x89)\x98\x1b\xa2\xe2m1\x9d\x9f\x85\xa8G[H\xab+\xd5l*\x08Q\x8d\xa6>\xc2\x93\x1dC\xa9\xcc\xf1\xcfu\x88\x87B\xa2\x0dD1\x9b\xe6\xd17\xdf\x94dq\xc6\xb2\x95\xee\xec\x85\xa8=\xdb\xd9gf\xbf\"\xed\x91\xa4\x99\xfb\x0fC\xb4\x0d\xee\xb8\xbe\xd0\x9fU\xf3\xd3\x98 \xd3\xb58\xa7C\xb2\x15J\x1c0\xce\xc5'8\x82\x13\xc4\x1d?\x08\xa2y\x9e91r.Eb\xe4\xe1\x7f\x18m\xc0\xe8&p\x04\x9fD\x10\xf9\xe7p\x04\xf9\xf4\xf4,\xc4\xf8\x95\x0b!\xf7\x9c\x06!\x86\xac\xd4\x9c^\xcf\x83\x10\xdeb\x96\x17\xc4\xb2\x10\x06\xd3\xfa\x8e)\xf1\xd8\x84H\xb6\xf2\xaf\x04\xf5\x9dg\xff\x0d&K\x91^W:\xb2\xf6\x16\xe5\xb6\xd9\xf4\xed\x19\xd2\xb4\x80Y\xb8\xa5d\x19\xd7\xe4\xff$$\x9d\xfb\xa5\xcf\xd8\xd6\"\x08\xc1\xab\xf7\xbc\x10\x0e\x1e\xdd\x05\xcdr\xc9\x81e+\x18x\x9aJ{\xa7,d\x0c=\x83\xef\x1c\x1f\x0e-)\xb8\\\xcb\xbf\n>P\xa0\xbd\xc3\xcc\x06\x19\x8b\xd0\x96a$\xbbw\xff\x0d8K\xe9r\x80\x87\xfb\n\x0b\xf8\x1c%\xbcK\xcc\xddZ\xdc\xc5\xfe8tt\x15\x1c*\x82Q\x89\x9b\xf4\x8b_62\xb8CV\xf0\xf0Ny\\\xc7\xcc\xaaC\xe5\xce&v\x07\x94M\xb2\x91\x87\x98\xb3\x153\x0b\xc6\"c\xde\xc3\x80\xf3\x9e{\x8c\xf7\x8c\xadi\x02m\x85\xc9\x1cw \x9b\xcbq?Ty\xe1\x87\xfb!\xec\\P2s\x12\xf1]\xa4\xfc\xddM\xc05\xb68\xa5Hs)\x9426c>\x0ca\xe7\xfc\xce\x89\xe2\xc3;\xd8\x81\xf0/D\x14Y\xde\xbd\xeb/\x9b\x14[\xc1;\xd86\x92D/\x92,\xa9V\xfe\xc3\xc3;\xc1-\x87D\x89\xb6\xd2\x1b\xd9\xde\x9d\x8c\xec\xf1\x97\x8dl\x1b?sS\x913t\xf4?7\x95\xedp\xf26\x84\xd8\x9e\x98\xd0V\xa6Tj\xa7$\x97\x92\xaf\x87\x8f\x1dB\x1a\x9b\xca\x94\xd2\xbc\x10\xa9\xc8\xc3\xef\xdc\xee\x0e\xba\xc5\x10\x15r\xa8\xdc\xb2\xc4\xf1\x9d\x8b\x83\x9b D\x9b+\x0c\xc9\xcb\xcf\x8d\x82\xeb.\xe6\x8a\xeeBj\xe2\x1f\x852f\xac\xa2\xba\xc8uw\xf8\xdd8mc\xf5\x19\x88\x81[`1\xa5\xd5\x18\x84x\x8d\x1e\x02w\xa1\xae(%\x97\xb4\xa5zb;\x9a<\x1e\xdf\xf9N[\xc2\x11\xac\x85\xc6\xa1\xec\x88m7\xfeR\xbcZ\xf28\xa3K)\xc1\xed\xefo\xb3J\xfb[p\xa4\x02\xdd$l\xb7\xd0En\xc1\x97\xb1\xf1n\xc1`\xcaq\x1el\xc1Pn=\xd0-N>\xb9W\xf7\x1fQ\xe8\xb2\xd4\xd3\x9cA|\x14\xf0\xfd\xbd\xc7\xf6w9\x9a?d\x12\xfa\x16\xfc\xa0\x1c\xd6\x81JO\x0e(\xff\xb7\xa0<\xdfJ\xe1\xffV[\xf2\x7f\xce\x99\xc4\xbb\x85%3\x16c\xa2\xfc\xdd\xd6\xf7}\xe5\x97j\x8b~-Z\xc1\xf8\xb3\xf9\xb8An\xad\xa0\x91\xee\x8c\x9c\xcb9\x18\xcb\x7f9\xe73\xef\x96^\xcfc\xf9+\xd6\xf3\xc8\x93\xe8K\xf8'9\xe2\x91\xfc\x92\x1b\x0e\xdc\x86P\x8e\xe7\x87\xa6\x8fB$(t\xf7\x1e\x8ca\x7f\xa6\x07\xc8\xee\xd0Mu\xe0\xc8\xee8\xb07\x16k\x8a[\x9f\x04}\x03\xe2\x9c\x99\x1d\x96\x81\xcd\x8a\x18\xa4=\xe8\x9bxM&\xc0\xa3.|\xfe<\x14~Q\x94V\xe8Y\x95!\x92\x8f\xfd\xdc2\xfa\xd1Q\x8d\xecVN\x94(\x8d\xb6r\xb2\xd1@\xbbw\x9b(\x8aE\xe4\xaam\x16\xdb1\x1eU\xbc?\x9c\xcc\n\xa4\xf7\xd6\x92\xd4\x82\xd3\xac^\xe6%k\xce\xaf\xd5\x8c\xae\xbf\x0d\xd0U\x83\xec;\x84\xbd4\xec\xecX|\xb72\xd8J\xc9K`\xa1\x0c\xb9\xd2\xfb\xcc-u\xa7Z$\xe8q\xe8\x16\xe0~\x05\xe8. \xc7hno?\x02\xb8\xd6\xf9\xa9Q\x13\"\xd9\x11\xa5\x06>\xb1\x1c\x1f\xaa\xd7n\xcb\x1f`Z\xf3\xfc3_\x11\x14\xef7\xd9\xf3|\x93\x0de\xb0\x1a\x0d\x0buB]\x98\xfbDl\xb0\xaf8)\xde\xd7\x87d\xc8 \x7f\xf4\xb4\xf4K\xdc\xcc\xcbm\x951\xe2\xcf\xb4V\xedeX\xf2\xaa\xaf\x08\x0fA\xe7^es\xf2\xe9W\x03\xc9\x87\xa4\xc0\xe4\xcbj\xe7N0\xf2\xb2\xcd\xfa\x82\x94\x1e\xec4\xbe\xd9p\x0c\xf7\xf7\xc1\x94&\x0d\xee\x04Lt\xb7\xde%t$\xbdkX\x83\xbb\x1f=w@\xd8\x96\xae9\xd8\xc8\xb6\xcc\x92\xc7\x916_C\xd4\xb2\xb3\xb6\xbf\x87\xf2\x9c\xa7TG\x1f\x8c\xa1x\x91_\x08+v\x80}E(\x0d\x03\xa5a\xf1\xda\xe9;\xe8f\xe1y&F\x1e\xach\x8d\xd7\x0b\xec\x1f@\xc6\xbd\xcd\x19Dm\x8bE\x0bf\xd8\x19NY\xa1\x16\xb4\x9b\xd0\x1aqKV\x025\x82\x19sK\xf0\xbb+\x00\xde\xff\xcck\x88!\xcb\xb3\xfb,\x0f0\xf3\x1b\xf3Bp\x19-\xf0!d\x91\xf4\xf1b\xb1\x83\x1b?.1\xf5\xb0\xc5Ys\x1e\xcb'2=\x91\xf0\xd5\xec\xb19\xcd\xf7l\"\xad\xf7\x1fV$s\x82+h\x8cM\xd5\\\x1a\x1a\x88U\xd2\xcd\xca'\\\xed&\x86\xbb]\x7f\xe2\x14\xd0\xf4\xc5\x96E\xb2\xc3\xba\xcc\x15\xdd\xe2\x96\x93D-\xfd\x8c\xc7]\xfc\xb463,\xb0~\x0d\x8e\xbc\x03\x991D\xc3\x06\x97v\xe6\xebvL\x16\xb1\xd2hO\xd1qJP^!\x19\xd5\x19\xe3\x88Z\\\xf5\xae\xc8\xb4\xbf\xdc6xdA$q\xba+\xfesM\xe2)\xe6BW\xc75\xc1\xf0\xbev\x14p\x0c\x1ebY\xe1\xe1\x11\xb3\xc0\x14\xd8\xaet\x81mvp3dJ\xa7\xbf\x02\xb2\xb0\\\xc6\xdb\npV\x84iq[]:\xd5\xc4\x07\xb4\x81\xe8{\xd8\x13!n8U\xfeP&d\x0eu\xce\xf3;C\xdc\xf6\n\x86z\x15\xd7\x90T\xd9\x1fj\xa8W\xa4$;\x9e\x0c\xb7\xd9\x1dFU\xa4 \x95\x18C\xd8\xff\n\x00\xee\x11\xdf\xaf\x05^'>\xb5\xd9c\xfc\xafN\x14\x19''!\x11eN\xb7M]\xb6\x154S\xcd\xac\x95m\xfb\x070\xbe\x81\x06\x8d\xd9\xfe\xe9x\xbb\xda\xdc(\x03~\x890\x0e \xee\xfdkB\xa5\xaa\xe5k\x1c\x07\xaa\xd2h\x0c\xee90\x90\x8d\x97\x18\xa0\xe6p/\xd4\x0bBH\xe1\x04\x15h\xa8\x1c\x93'\x05\x95k\x9eW\xb8\x1f-\x01\xd8\xbf\x00\x1c\xcf7eI\xb2\xad\xa0\xe2\x08\x11!w\xe8\xb4u\xfc\x15\x1f\x04\x7f\xfa\x95tG\xfd\xfeG\xccu\x14\xf5\x89\xf4\x92\xbb\x95\xb6\x9b\x00\xe6\xd7\xb0\xfbU\xe8q\x17\xf4#\x00b\x83\x87:\x97\x99\xda\xc7W\x99\x05')o\x17\x1fn\x8aQ:\x80\x11\x1b[\xd8<|\xa5\x8d\xf8cr1b\xe0\x8e\x83F\xf07a+\xee~\xe0\xe7K\xf25t\x8f\x0d\xcb\x8a\xc9\xf1\xdb\xdc\xeaW\x80\xbf\x12\x14\xe3+\xcc\x86m\x82&\xfc \x9d\xd4\x90\xb8\xb4\xf54\xaa\xadf\xe1\xbe\x07z\x13\xa9\xe8D\xbe\xce\xd9\xc4\x83\x8f\x8c\x99\xc8\x98Y\xf44\xe8\xc6\xc3\x08\xfe\x04>;\xd1\xbf\xc6,gi\x9e\x8d\xa2X\x8e\x93\xfc\xcb\xe9\xdb7<@\x1feMsE6\xfd\x1a\xe7\xab\x88\x8d5b&\xb6\x89H\x97lb\x9f4-\x84 \xce-\x81W\x93\xcc\x97k.\xda\xac( a\xfbH\x14\xd09\xfe\xedW\xc6\x99sM\x19\xc0\xba\xb9\xcf\xb5\x19\xc9\xa0R\xcf\xc9\x11_D\x8ck:h\xf1\xec\x0e\xc2\x06\xed+\x97\xda\xa8\xdc1\xb8v\xb7\x88}i\x8a\xb0\xa6+}\xe9\xe4\xeb\xf6f\x87\x85\x88\x96\xed6\n5\xb6+\x9ekN_\x89\x00b\xf8\x1d\xfba\xfd\xce=\xca\x04\x1b\x8d\xaa\x8a\xf5\x13\x11\x0eI\xa0I\xa3\x9a\x0dB\xf5\x9e\x99\x07\xb3M\xbed\x131]0\xbbV@\x9a\x8c\x11C\xd5\xdfx\xd3\x16\xb6\x1f\xb2\x0c\x1e~\xef\x19Rl\xca8k\xea\xff \xf6\xf7\xb4\xd7\xe5\xd6\x98\xbc\xa2\xb0\xf5\xcb\\\x17O,\x9cT\x99r?P\x99\xf4\xc3\xf7\xfeF\xfepE\xa0$\xf1lE\xe6\x10\xc3*.\xe7\x90&\xeb\xa4\x86|A\xc7\xcbMT\xa0\xdcd\x95g\xa3V\x0eD\xa2DW\xb9>\x87.5\x93zK\x03\x97}&\x92\x08i\x9b\x19oy\x00\xe3\xac\x0f\xc0\x01\x00\x00\xd0_\xfe8M\xfd\xcd\x97\x8e\x0fi\xa0\x88\x97\x13\x82\x0cmfm\xe56p\xcdN\xd0-\xdb\x91\xb4/\xd8\xa9\xbc\xc3Q\x03\xcd:Xv\x04\xa5}\x89\xc4\xb9\x9aE\x1a]\x85o \xab'J\x8e\x0dtu-p\x1f\x1cla\xc7]\xa6\x95\xaa\xd9\x97\x0bPD\x11\x87\xc7P&_]\x89\x99\xf1\xfe\xa8o6\x8e\xd1\xa3\xd4\xe2\x0e\x06Qdh\xb2\x8a\x99 w\\\x08J\xbf\x0e\xd9\xaa\xfe\x98\\\xf8A\x10<\x85\x1d\x9fB\xc0\xaf0\xa9A\xcb\x8c\xff)\x87M\x00\xc4\xaf\xf8\xe5\x87\xf3`\xc6\xdft\x89\x12s\xcbi\n0;\xc5\x11\xe5\x16\x16I\x16\xa7\xe9X\x80\x8d\x071-; %\xd7\x85bL]Hc\xeaQ\x8dm;l\x10\xeer\x01\xb70\xde\x8c\xfa\xdc\xcd\x86\x15\x9ck\xde\xb2;p\xd2G0\xeb\xe7\x12Q\xac\xe2\xb0(\xed+Q\x8ck\xeeO-\x91A\x9d\x8cQEa'\xfe\x04\xfaY\xfeu\xe56p\xb1\xa4\x1d\xb9\xceRTj\x99K\x95cf\xd12!2%\xec\xee\x16\x97\xf8i\xd6\x1a\xd2,\xc0\xf1`\xbc\x1dxo\x90\x8d1&}\xef\xd5\xad\xeel:1J\x07%YT\x13X\x0b4\xd1\xd3sL\xa1<\x81\xe5p\xad&\x05\xd7\x04n,Ue\x04\x9c \\\x88\xaa\xfd\xa9\xb4O 5\x0c\xf9u;By\x93ay\\<\xf8\xc3\x87\x03\xf1\xe0\x87?=x\xfc\xdd\xb6\x9f>\xde:\xa5\xe4\xc1\xf6\x91\xef\xf7\xf7\xb6\xfdt\xff\xbb\xed\x13\x04\xec\x7fIF\xca\xd6+\xa9\x94\xf9\x8d\xe2\xed\xeb\x07\x93\x1b\x95\x98,2LT\x93\x8aY5\xe9\x07\x80\xb5jq\x80Q\x99\xecm\xebV\x9d\xe5Z\x8a\xa1$i\\'W\x04~z\xffc\x08\xd7I\xbd\xca75\xac\xe2\xab$[B\x0c\"\x13E\x84Y\xbe'\xf0\x07\x19\xf4\xf4\x0f\xf2\x1d\x7fZ\xe3S].Bh\xa0\xf8\xa9'\x97\xd6Z\xf5w\x9f2\x89ep\x82^b\x84\x9e \x9f\x0c \xcf\xf3M:\x87,\xaf%DJ\xb2 %\xc9f\x04.\xc8,\xa6X\x93/&\x80\xb3\x16\xb92\x11\xc3:c6\x0d$\x1e\xc4)\x1f!\xe9\x05h\xa3P\xfb\xde\xef=\xb7V7\xc6\xe9 \x9b\xbfwS\xa2\x89o\x8b\xda\x084\xe09\xd5\x98\x9eeA0\xc0\xb1 \xab\x80\x14\x99\x90\xe1U\xa6\x0c\xc2E\xc3 ,{\x8b>\xec\xbfr~\xce\x15\xabz\x1eA\x97\x91\xc6\xca\x10\xf3\x91\xa9C\xe1v\x81\xee\xb8W\xf9\xa4+\xce\xda\xfaKM\xf8\xed\xb6\xd0\x95\xbe\x03!B\xeaWY\x88\xcep\x0c\xbae\xae\x038\x86\x1a&\xd0_\x96:\x80 \xf8\xb4U8\x82W,G\xf8_N\xdf\xbe\xe9\xcf\xdb\xc8O\xf2\xcey\x1b\xb5>U`\x88\xef\xdd@\x90Zq}\xa6\xbd\x85f\x9a7.\x17\x7f\x0f\xfbR5V\xf7\xeb\n\xdc>\xed\xde\xd1\xe91\x1d\xcd\x18\x9b\xac\xe4e\x87\xca\xf6\x89J\x91'YMJNG\xe8\x9e\x87yN*\xacC>%U\x0dI\x06\xf3|\x86\xa1\xa9\xb5\xf9Th\x91\xadh\xce\x14\xcd(\xf9t\xbb\xc9\x16\xf5P\x9e\xe9\x11\xad\x95\xfe\xb21\xf9 \xea\x8c?\xdc\x14\x84\xeb\xfbN>\x15dV\xa3\xaa\x8f}\x14\xc2\x12\xadi\xe9\xbcU\x90\xd1\xc3\xd3\xdbd,\xaf\xcc\xdc\x03\x96|\xe0\xaau\xa3c\x9e\x92\xf7\x80Y(\x92\xe9\xde\x99\xbc!!Q\xb5\xb9\xa8\xea\x12s\xc1\x80\xe7\xc9~\xa6g0\xc1\x0cXHb\x1fx\x01\xd3\x86\xb9a\xdfb\x90~\xeb@\xc3\xd9\x82\x13\x89J\x9b\x8cT\xb3\xb8 >\x91\xc9\x9f\x1e\xfc\xd7\xfe\x83e\x88\xb9\x9d\x94g{\xf8\xec\xbf\xbazP\xd3\xd0\x8a\xc1\xa15\xfdkzg\x1d\xed\xa9\xbd\x7f|\xc0\x1e\xee\xbbv?\x1fdP~\xf6\xeb\xc6\xa4wG\xa3\x95\x11\x9b\x97D\xb3U\\>\xab\xfdZ\xda\x0b\xe9\xe9\n\xcb^\x86\xa6C\xf7u\x1e\xfe\xbc/\x8e_j\xdac\x8a!;\x98\xb9^ \x0e\xfb\xf1{\xfe\x03k\xd0_;t3;M~%\xf8\xcc\x10\xb4:1q\x0d\xf5\x01\xef\xc5K\xcdpsL\xf5\x95\xf3\xc0\x15\x1f\xf0\xda\xb9\x0cA\x1b2Sh\xd2\xec\xa7\x0e\xf4\x01\xc1)\xe01\xdd\x12\x13\x84\x00\xb22q\xe1\x17A\x93@Z\xdb\xda\xad\x9f\x19V#\x86#\xf0\xf1\xee\xc2\xfb\xbe*\xc8l\x1d\x17\xf7);\xf8'/\xa0\xd4\xed\xf7\xd8\x89\x9ep\xd6p\x84\xce\xfc\x1d\xdb\x81\xe9Y\x80i\xcf^\xe43\x0cZ\xea'\x98\xca\xd0\x86B\x1b8\x02\xcf3Q\xffq\x19\xadi[\x1b:|\x84Q\x81\xb7\xaa\xf9t\x83$\x86\xfe\xef\xda\x9c\xd2$n\x92\x18c\xb6\xcf\xfd\xd8h\xe8\xa1\xe3h\x86\xe7\x9eO\x13\xbc\"\xc2\xff\xb9\x93\n\xbf\x7f\x89\xbb\xfbW\xfdu\xe7 \xbd\xdaC\xa3Kr5\x94\x93k=\x94Xk9\x98\xb0K\xa6\x82\xd2~{1\x94X\xeb\x9c%\xba\xd5e\xb3\xbd\x16}jSH\x9d\x88>\xb5\xcd~\x1aL\xf2{:\x94\x13\xeb\xb9\x18\xae\x16J\x97B&\xef\xbfz\xc6\xd3\xea\xbf'\xcb\x93O\x85\xef\xfd\xdd\x9f\xc6\xf7\xffy\xb6;y\xf0\xe0\xf3\x83\x07\x81\x17\x82\x97x\x9a\xef\xder}\xf5\xf3\xe6\x8c\xf5(k\xf7\x9e,\xf0\xf0\xf6\xec2\xb4(x\x03&2M\xe2\xc7,_\x7f\x87\xebGk\x00\xe0\x17\x9c:\x04\xef\x0f\xf2\x1d#\x87\xbd\xe7\x1f\xf8\xa4\x07\x94?\xaf\x8d\x8a(f\xcd\xf1MI\x16\x06K\x0e\xa1\x91\xec\xce\xdf@\xdbE\xc1\x8b\x00\xbc\x86a\xa7\xd2^\x08\xda\x83I\x14\x94\xc8i\xad\xcb(\xa9^\x96\x84\xa47o\xe25\x99\x07~e\x0d\xeeN\xfb\xc2\xb4sJ\xf6#?\x93\x14\xd3~1\xaag\xe2\xda\xc20\x05\xd1\x04\xd6\x9b\xaa\x86\x0b\"Y8\xf0)\x9a\xdc\x7fO\x16\x81\x913U\x0bk\xc5\xe1\xfe\x98\x8f}\x02\x0e\xd9A\x16\x1b\xbc\xa3_\xd9,\xcamW\xa4\x14\x8e\x0b8B\xb1\xdc\xdek\x81\xa1\xb7\xf7\x1c\"E`\xd8\xee)\xf3\x9b\xb5en\xa3\xe5\xca\xf1\xbe\xca\xed\x02\x85\xb6\x96\xd2\xae\x0b8\x86\xdc/BH\xa9 gL.+\xca\xb8\xdb\x01\x8e, =-\xec\xb5A\x15X\xe6v\x88\xc0\x18\xd4\x01\x8e>\x0c%\xae\xdc>p\xc5!\xd0\x1f\xc8\xad\xd7V$[6\x91\xc7\xac\x9d\xdd8\"\x03\x12\x90\x95?\x0f\xe1*\x84\n\xcd\xbb\x1c\x16\x029\xa1M\x9aR\xb6\xeb\n\x8e\xc1\xbfA\x91y.\xfc\x07\x19\x9f\xe8/\x05u\xf1o\x02\xc62/9\xd1\x1dV\x93q\x99\xf6_\x06%\\)\n\x8c\xc6\x88\x80\xee\xa9%OhD\xe9(Bh\xe3_\x850\x0f\x82\x88+\xad\xe0\x18\x96\xf2\xef ,\xbb&]N[\x0ddl\xa3\x11\xbb\x0d\xb6\x00/\x8c\x051l\x01f\x18 j\xb0o@\xe0j\xa4\xa5\xc6\xc5\x98\xd3\xa9\xe9\xa9\xa2\xdeZ\xe7W\x84\n3\xb0t\xc8\xfaE\xf7\xefEK\x1b$\xa4\xe4\n\xd3\xdf\xb8-\xc77\x1c\xae\xd6\xca\xb63\x0b\x84\xc6\x89\xee\xca+\x14R\xd3f\x96\x17\xa12N\x91\x1b\xd0\x9acT\x14\xb9\x94W\xd6\xea\xb7\x81\x03\xe8\xdc\xce+\x10\xc4l\x9c\xc5\xb6Z\x84\xfa@\xab\x005\x15iST\xc4\xf5**\xc9|3#\xfe\xd6C\x00\xf52\x96ytNk\xbc:\x9d\xd6nA\xa2h\xc1\x8c\xfd\xee\xfb\x08F$\xa55\x15>hU7\xcc\x9d\xe4\xb9\xb2$S\xb5'\x7f:\x82=\xd4U\xec\x85\xcdmn\xe0\xd7AG\x1cv\xf2\xa4\xd3\x15q\xb1\xe3\xd7\xd3\xcc\xe1\xb2\xbf[\x86\xe2\xf2\xe8\xca\xad_\x8f1\xb7\xb9\xf5K\xe1\xa5q\xd1\x88\xe4\x17\xd6o\xed7\x12\xdd\"p\xc9\xc6\xb5\x81\x95\x011\xbf5\\\xf8\xf7\x9ejd\xb0W\\\x80T$\xbc\xd7&23\xcfg\xcf\xe3\xd9\x8aL\xe0\x9d\x1e\xb5\xe3\x8b*O75I\x167\x13\xc8\xf5uf)\x89K\xde\x8c\x9b\xd2\x85\xf33;\\\xf1;')\xa9 \xbb\x8a\x98t\xf1\xf7\xdd6\x91-\x94\x16\xcd 6\xa8x\xf4\x93TE\xf0 \xbc\xd5W\xba.\xe3\x82\xd7H\xf45\x96\xa4F2n0\xbfG\xdd\xf7\x04b\xfd[\xf2\xa9.\xe3Y\xfd\xb2\xcc\xd7\xd8\xc8F_M\xde\x06\xb9.\x87r\x19x\xce\xee\x920\x81\xec0\x88W$\x9e\xa3\xa1\x87}\xd3<\x9b\xcdHQO\xc0\x8b\x8b\"Mfh\x8f\xf3\xe0\xe7*\xcfBP\x9f\xdc\xc4\xeb\xd4\x1b\xde/\xc3\xf47\xcd\xe3\xf9)\xdaF\xef\x98\xe3\xaf\xdd:\xdf\x0c\x8a\"\xe8^\x84G\xf6\x80\x91\xce\xb6-_K\x02_\xc5\x0b\xf2c\x1e\xcf\x07=\xb4F\xe1-\xc7\x19#\x0fH\x97\xe1\x1dcF?\xe4\xe8\xa42\x81\x99\xbe\xaa\xb8\x1f\xf9\x8b\xfa\xc9%\xc9&\xb0\xe8\xd3\xa5\xa0k\xb9\xc3\xa7\x08G\xf0\xaa\xaf\x8a\xfc\xd9\xaa4\x17*V\xa2^\x0f\x10\xf5z\xa0cp\xd0\xeeD5J\xa9{\xe6FcMZ\x1enm\x0ds\xf0\xed\xf6\x9f>\xfa\x02C\x1a\xf5\xcd\xaf\xa0Z.\xad\xeb \xdb\x1a\xec\xc0\xb0\xd1\x0e\xe8\x8fI\x93\xc29\x17\n\\3\xba\xf6\x87\xc1\x14\x95h\x12\xa7Q!\x99\xb5\x94 ^1\xe8\xa7\x85lv\x1c\xadI\x1dS\xa4\xe6\x7f\xb24\\6\xe5\xe6f\x1b\xe5f\xdeUnn\xacZ\nf\xd0\xd4Isk\xfb\x08T\x0dl\xfb\x16\x1a!\xd8\xe813\x88i\x9b&\xc3$\xb5\x08;\x8fH\x88\xabL\xb1m\x89\x003\xf8Vhn],\xdag\x98\xee\x04\xb7\xc3\xf0X7[\xf0.\x80\x1d`B,8\x82Y\xcf\xfe\xa2[\xa8x\xcd\xf8\x1d\xfc\xc0\xdfca\xd89\xfb\xf4\xcbm\x08\xb3 \x88\x10\xd6n:\xd7i\"\xe5\xe8M\x08\xbf\xdc\x062c6\xe9\xf8\xa78\nb\x887I;\xc4\x97\xfd+\xe0_624\xe5\xb8\xed\xb8A\x0b.\xa4\xa3\x8b\x81\xa0W]\x13\x89\x94`\xfeqH2h#*\x8b\xbdT\xb9\xe0)(\xe6\x1d\x1d\\\xb5\x9bU;\x9b\x18'\xd1\x9a\x94K\xf2\x82\x90\x82\xae\x98E`\xba\xb5\xc5n\xe2\xad.\x98\xac\xdci|\x16\x04!\xcc\x18]\xa2\x84J\xd6\xe2\xba\x9b\xa9D\x96M\x08\x1eV\xf3\x02\xfaM\x9fG\x10\xc5Y\xd6i=\xc1XTc\x0eu\xeb\x19\xd9z%e\xf7\xdf\xc8\xd8T\xfd\xf5+\x1c\xd8\xf9\xd0\xadl\xd2\\\x90\x8e?&\x1b\x9b\xf0Qgei9+{\xd9\xd6q\x1d\xec^\x82\xe2\xbc\xec8\xa6O\xcf\xec\xea\x9d\xfe\x1d\xa2E\x1c\xe9wC\xa9q\xd2\xb1]+\xa3\xaa \xb3\x10\xaa\xa1})e\x90\xfey\xe2@\x84\xdd\xb4}\x9bi}\xa6,h\x19\xc9\xa5{\x1d\xcf\xca\xdcO\xed\xa4e\x94.E\xe0]\xe3\x87j\x0bR\x03\x0d$\xf2\x0e9\x1dv\xec\x18P\xb4\x04\xea\x8a\x88s/\x0bac\x10\xb3\xb4O%!\xd64d5\\\xfdoJ\xf6oB\xc9\x9a\xa4\xcd\xa3(\x99i/\xd0\xd1\xc6z\x1aa\xda\x08\xd2\xb1qC\xd9\x122d\x06NK<\xdd\xb4w\xf4:\x9f\x93T\xc0\x9d\xedjZ\xc7\x80\xeaN\xbbY\xe5\xed\xed\xbbx\x14\xe3>~\xaf\xc5\xff\x8f\xef5\xfd`\xcc.*\xd2T@\xdf\xf3l\x95\xa4\xf3\x92d\x13]\x8cq\x16e\xb0v3BM\x86l\x95\xe4\xe1&b\"\xca`\x0b$*\xca\xbc\xce\xff\xca\x9fgp\x8c\xbbe\xd3\xde-\x99R\xab\x89P\x8a\xc6\xc4W\xec\x99\xbf\xa7\x04\x8c\x08|\x12\x89\x99i\x94\xcb\xc6\xd3T\xb5\x84e_Ok\xc3\xa5V\xab\n\x1cAB\x913\x13\xa3\xd1\xba\x19t=\xf9~u\xc2\x19\x0fY\xfcm\xf8\xcbC\xdd\xcbJ\x98\xd7i-\xe8RA\x90\xb5\x0d\xcfTM\x91 \xf2\xae\x17i\x9d\xb4\xf6\xcc\xb0M\x86o-\xf3\x9cR\xc1\xdc7\x9a\xba\x81\x8d\xe8t\x1c\xc9I\x08S\xf3hd\\\xac\x11\x81\x89\\\xb8\xb9\xabnP\xf5\xb8$\x19\xc6\xc2\xda\xb1\xa5\x1bB\x1b\x13[\xfb\xa0\x08\xc5dJ\xd4t\x03v\xd5\x08p\xa3\xe3L\xee\x00;K\x17O\xcb38\x86\xc4\xa7\x7f\x0821a\x8fq\xbd\xe8\x83\xc1V\xb8\xe7u\xe2\xcb\x85f\xcdl\xd2t@\x91\xae_\x7f{\xc0\xa9;\x8e;G\x17\xc5\x97\xb1;\xa7g\x81\xd6\x19FL\xccE\xed$\xd9\x04\x19\x15\x92\x81$S\xd3,*\x7fS\x9ei\xef)\xe4\xf0}c\x87~\xef\x1e\xf8\x0c\x03\xf2\xb3\x10|D\xb8\x86lN\xcb\xb3\xe0)\xe4\xbb\xbb\x01\x0b\x911--\xd7\xfbb\x1a\x18\xe0E\xa1\xd7_eu\xd8\x8e\x18\xb3F\x0e\xdb\xaeu\x03A\x945\x82cfi4Q\x9f\x1e\x888\xc9Hu\xd0\xafE\x11\x1cu6\x0dN\xfb\x12Ui\x8dA\xa8\x05\x0f@\xdd\xc9#6\xa4\x98j9\xcd\xd0\xa8\x9eE\x8e-Y\xfe\x85\x1c\xad\xd4\xd0\xe8?\x04\xfalxg*\xc4w\xf4V4\xfa\xb7\x9b\x99\xf7\xd9X\x06o\xf8\xd6\xe5p\xc0\xf1\xf9\xdf\x8b5T\x7f\xfd\n\xdc\x84\x10\xc3\x1e\x0e\x89aZnB\xf0!\xfbZ\x8b{\xc1\x88\xeck\xe5;\xc9\x89<2q\"\x99\xff\xed\x00\xf6\x0cr\"W<\x03Y\x87\x99\x94\xa2\x1bKs\xab\xf2*\x03\x9b\x1a\xb7%f\x0b\x9e\x85\xb0\x08\xa1\x08a\x1e\xc2\nMF\xd7h\xbdv\x03G\x10\x97Kt5T2m\x1d\xa0uYc@!\xabL\x0f\xe8!\xda\xfaI\xf9v\xfdn\x97Z\x141\xf6\xeb\xd29\xf2\x14\x9e.O\x9f\x06P]'L>\x14\xd9, \x86\xce\xb1\xd11LW\xe8\x90\xd5S(\xce\xe1\x08nx\\\x99\x93\xacNJ\xf2\xa1$\x84\xa5\x18\xbe\x11\x86\xf5,\xb50\xad\xf6\x8f\x0d\xa9\xeaWYM\xca\x19)\xea\xbcd\xc9\x86\xe9\x9b\xaa\xc8\xb3\x8a\xb4^\x15\xf8\xaa\xad\xe7b\xd9Jo4\xb22\xcbGl'\xd2\x80\xa10\xea\xd5\x8b\xa4\x9a\x95\xc9:\xc9X~\xbe\xcc\x8d{\x92\xa6~\x06+\x90n\xe9O\xd9x\x83\xdf-\x1a\x98L`\xe1\xf6m\x1bh\x13(\xdc>\xebCu\x02s\xeb\x97\xb7!\xda\xce3\xf6[\xa6\xbe9\xbd\x8e\x97KR\x06\x0e!\xf3\xa0 {h\xadKe\xb15\x86\xf2d\x8aY\"\xb2\xac~\x1bv%\x8cN\xea\x0d*\x8c\xael\x863\xa2\xb0\xe1\xac\xdd\xc0\xd6\xcf\x80\xe1\x1a\xad\xab\xbaL\n\x11\x85\x14\xedl\x06\xadcD\xb1^\x12\xe1&\xfe\xd6y\x13/\x99\xe3/\xc9\xea\x10vJJ\xc2\xda\n|\xe6\xdb\x99\xa9\xcc\xe7\x12\xc1\xcfW]\x91\xf8\x97|Y2\xf4\xd6C\x16\x9f\xaeQ|Qn\x8a\xda\xf7X\x87^\x08K\x97\x19X2\xad\x8e\xc9\xac*\xb5\x18\x96L\xaaF\xc6\x960VI\xebb\xd8\x9f\x8a\xb8\xa5\x93j\x8b\x81\xc3F\x0e\x0d\x93\xb0p\xb9X\x9e\x14V\x9d\x99\x1f\x8ce\xaa\xfe\xbdX#\xfd`\xf2A&@s2\xef\x19O\xe6\xbd\xf6\xc9\xbcg:\x99{kjSE1\x0b\xe97\xf1z\xc0+\x809d\xaf1\n\xbb\xb9\x16\xc6\xe2\x8d(Yf\xe1\xb2\x0c\xb9\x9a\x9dG\x08|\x94\x89\x1eV\xfbFX\xed\xb7a\xb5?\xc4\xc5\x80\x8a\xdb\xe4\x13\x99mj\x16rZa\xcf\x86\x891#\xc2\x04I\x8ay\xc7\x86]\x1aDB\xf0\xfa\xe7\xae\x87O{G*}\xbc\xa9H\xf9\x92\xd4\xb3\x95g\x8d\xc1&V\xd4\xca0\xb0%\x9d@9\\M\x0d\xcaeI)\xac,\xffP\xa8\xb4\xdb\x10\x12\x831\xb7\xf5\xd6\xde\xac\x1f6\xed\xb6\x9a\x1d\x1d\x94\xe6k\xbb\xe4*\xd9\x0b\xfd\xdbF\xcd\xc1\x03\n\x1c\x03\x95\xd4\x0d\xa0\xcd\xb1-\xbe\xcc\x1f\xe2\xa5\xbeV\xd2n3\x87c\xf0\xf87\x1e\x18\xcd\xa4c\x96\xec\xe7\xe0m\x03\xe4\xe7\xf9\xba\x88\xeb\xe4\"I\x93\xfa\xe6u>7\xec\xe2\x8d\xc1\xdb\x96\x96\x05\xbe3\x92\x12\xc6\xaf\x90x\xb6\x92\xdd\x06\xf4\xa8\xb0s\xfa\x8d\xb6\xdbNb\x18\xd8l$&\xc5Z\x12\xc7\xf4[\xdaO\xa3:^Vp\x0c3\xfeg\x00\x13\x98&gc\xcd\xc0[\xce\xb4G\xaa3\xad]\xbb\x8a1\x1cX`\x1c\xfc\x8f\xddF\x0c~\x06\\\x97\xcd\x00\x9e\x17\xaf\xe6\x81\x9f\xe2\xfd_n\xdb\xf0\xa2\x0c\xa3\xc6\x04bk+:W\xedn)PDv\x1b\x11\xe7\x98\xed\x8d\xc2\x18\xba%\x8a\xa0_\x86\xfd\xd2-\x12q\x9c\xfd\xd9Z\xe4\xccL\xdeE\xb1\xf9wQ\x8c\xdaLgg\x01\xd0\x7fwwCH\xa6\x9e\x07\xbb0\x83]|D\xf1\xa5\x18n\x83\xa9\xa9\x9b\xb0D\xf4\xecK\xb0M\xfb\x8aP\xcc\xa4\xa2)\xed\x8a\xa2\xa4C\x04a\xacz\x04s\x16\x8a|\xfcp\x81wK\xe5^:L{m\xeeyA+\xb7:\x9c\xd3\xde\xcc\x89\x9bAQ\xe2\xb31\x17\xc6\xba\x06\x06Z\x7f\xa9\xd66;\xfb\xcaj\xb0\x10\xea\xa8\"\xe9\xc2\xe0'\xac\xde\xb2\x1d\xf6-\x10\xd6\xf1%9aL\x0c\x1cQ\xb2\xc1\x1e=+\x92\xeaC\xbc\x94\xb4\xa1\x92\x7f5\x95\x9d\xf4Vw\xc0\xb2\xea\xf7\x1dj\xce\xd4\xe1\x1b\x9d\xf63^\xb3hMh\x80\x1a\xd9h\xe2v\x07*t8?s\xad\xd9\x85Ic`\xa2\xb5\xa5\xe1@\x96w29$\x99\xe9>KVJh\xa5r\x9a\x9f\x0d*\x9c$\x81\xab\xb47\xf4\xc0x\xb5l\x9a\x9f\x05\xd8Xs\xf8V,,\x8d\xb9i\xceMO\xf0\xebi\xa2W\xf2\x9b\xf9\x0e}\xc3q\x91T\xba`\x81=\x1b\x0d=\xe6\xffK\"\xfaV \xf8\x8f\xd9\x03nK\xd9\x9e*=K\xfa\x84Q(\xf6\xbf\xd5\x9a T\\u\xdf\x7f\x93\xda\xb0\x02\x9a%\xd1\xbalj\xd6z6\xc6}\xa5g\x89\xca\xb4\x12:\xd7CMW\x0b\x16.\x8d\x1d\x1a\xfa~\xba\xf03:\x17*\x88\xa9\x13\xdf\x9a\xa5\x19w\x07\xf6\xe4` \xce\xf1\x7f\x86\xa6\xe7\x0b\x85O\x85\xd14\x1f\n>\x89*2\xdb\x94I\x9d\x90*\x04\"\xee*0JPV\x7f\xb8)\x08{\xca\x14\x08\xcac\xc3I\xc3\xa4\xaej\xb6\"&\xd9\x8c\x89\x9c\x9a;\x11m\xed\x8a\xd7\xee\xdf\x93h\xab\xcf\x98\xdc\xcd\"\x19\xfcT\x1ax\xf2\x05\xd6\x92\xea\x0f}\xa5\x82\x81\x87\x0f\xf4\x87|~\x13\xa2\xb6\xb8\xbc\"\xa5a\xf2s\xaeP\xa6U\xfe\x1a\x97I|\x91\x12\x83S\xed\n\xab\xae\xea\xdapE\xb1\xe4R\xaeP\x93\xe8k\xdd\xb4k\xfd\xb0I\xd2\xb9\xb1\xb2\x08\xe2\xf5)J\xaa\xb7\xcfN\x0f\x03\xbf\xd6\x1c\x147\xe8\xaeO\x1b~\x0b\xc7p.\xef!\x95\x88\xe8\x86 \x83\xef\x8c\xc4bS\xa6\x13cd\xa3YI\xe6$\xab\x938\xad&\x80Z\xf6Ut\x9d\xd4\xab\xe7\xcds8\x06/\xc9f\xe9fN0\x0ca\x15\xaf\xc9}\x16C\xcc\xd0h\xe3\x08l85gy~\x89q\xdeuF\x84\xfd\xf9\xc5\xa8\xfd\x7f\xa7A[z\xb4\x07!T\xb2B\x0fS\xe1\x08*\xca\xf4\xf3\x1a\x12\xed(=7\x80\xf2\x83\\\xaa%\xa9%\x91}\x1f_\x07CQew>\xa8\x91U\x9f\xfb^\xc3\xa4P\x89'\xc3\xd0\xb1Y^\xc3\"\xdfds\x9d\xab\x10\xed\xfb5F\x9e\x94\xd4C\x0f\xbeWmm\xd3k8\x86_na\x02\xaf\xf5\xd5\x7f\xc66\x87t1o\xb0\x86\x10\xd7\xf5\xf3{\x17m\xca\x14v\x8f\x8c\xa6\xa1\x83\xaa\x01F\x93\xcc\x01\x03$\xcd0\xdeT\xb2\x8dm\xbcU\xec\xec{c\x18\x9dF'\xf1\xc6pdr\x1d\xc4\xcf}\xcc\x0cB\xd8\xc9\xa4\xa5\x8d\x88(\x10ql\x0e\xe1]\x1fr\x12joBx\xc7\xd7\x80\xa2\x17J\xc1?\x07Q\x9d\xffT\x14\xa4|\x1eW\xc4\xc7\xa08G\xb0d\xca%=~\xbc\x97*\xfej\xfa\xe6\xccT\xb3\xe4\xd8\xce7b\x14\xa3\xbb=e\xa7\x0ch\xf7\x02\x8e\xe0\x99\xe2\xa9u\xea\xbfR\xc8_\x104\xcf\xdf\xb7\x9ek\x9a{1B+'4\x8a7S\x12%\xd9\x80-ai\x89\xb3\x85\xaa\xbd\x8b|~\xe3\xc9\x18\xb2\x8ca@\xbc\x8b\xd5\xbf\xa3\xc6h_Z\xb4-;\x11\xb5\xd0:\x8a}\x94\xc5k\xfck9e\x7f\x9fQn\xce\xf0>\xc1M\x1e\xb10\xadX\x19&p\xe9\xb3\xbfCx\x11tn;D\xc2\x96\xeb\xb8\xcc|\xef\x9d\x80+\x8f\xd4\xcf\x9a\xc6p\xfdI\x05\xf1\xfa\"Yn\xf2M%\x83\xdb\xd7+\x02<\n3\xee=X\xc5\x15\xac\xf3\x92\xbe\x893\xc83\xd2(\xfa1;\x00~\x91!\xee\xf7z\x88\xb39\xbe.\xe2\xaa\"\xf3\xfbI\xa6|\x8b\xba\x8d\n\xe6 \x8b#\xc6\xfa\x848\x83?$\xd9\x1f\xd8\xdb\xc8\x0bB\x11\\\xebh8\xf6bG\xd5%u\xeb\x8a8\x86\x91\xb9\x1bsCy\xf2\x85\xbd\n\x8cCHJ2\xa7\xbfvH\x84\xb7\xe2'\xeb\xa2\xbe\xf9+3\xf9nH2\xf7\xe2|/>h&\xd8\x06\x06\x856\x9dgQ\xe6W\xc9\x9chI\xb5:\x99\xb7]L\xf3\x98;\xa8@E\x8ev\xf5M\x81\x88\xa2\xd1@\x976\xaf\x0d\xe0[@I\xa3:\x90.\xdf\xcdK\x03d\xa02\x058M\xb48\xec\x85;\xb6vqA\x84\x97\x8c+\x1c\x91!\x041\x18\x15s\x80l\xf2\xbd{\x90Y\xb4\xce%\xf9\x871\x0e\x8d(rl\xd6@h\"3\xc1p-E\xa9\xfcj\xb8\xa6\xcdz\xc4\xd9\x9c\\\xa7f\xa6\xa4\xf1\xc7\xbe\xa9\xc3/\xcc*@\x0f6u\xe8N\x9d\xa0\x9d\xf1;\xcem\xd2\x9e\xae\x9b\x9e~\x0c\xe1]\xc0\x83\xef\x9ct\x1e\x07\xe2\xcc\xc3M\xda\xb6\x80\x97\xe7a`\xf1\xbd\xa43\xfc\xa9\x9f\x8aM\xf9~l\x98/q\x9c\xc8&\x8c\xde\x18\xa0J\x96\xbb\xe0cP\xfb{\xc8\xdeb\x18\xec&goE\xca\x04M\x8b\x06l\xceoC\xfa\x99\xbe\xa7\xe6\x10~\x8ec\x82#\xf8\xa9\xbf6\xfd\x13\x9c\x0d\xee\x9d\n\xe8>\xc3\xc1\x02#\xa17\xf6\xab\xec\x7foHy\xf3\xb6|\x99\x97\xeb\xc0\x7f\x17\x84\xf0\xeew\xed>Z?m\xf7\xac\xcama#\xb20\xb9\x97\x9e\x80ng\xbbMV\x06)/\xdbo\x14K\xa7\x1b\xc5\\\x11\x02\xcd\xb5\x12'A\x15\xa4\xbc\xec$TB+\x99!\x12\xffXp\xe6\x03\x86{\x15\xdf\x02J\x92\xb6:\x84\xa9\x87<\x9e\x87\xf7\x85~\xc9\x82\xd3Rv\xf1\xc7\xfc\xbaa\x17=6\xb0\xca;\x0bD\x9c\xb7\x81f\x1cj75\xcc\x03N1n\xbb\xf9\xfd\x8c\xc7\xd94sj9\xc5fDi\x97,\xae\x14\x91\n*\xc6\x8dL\x85*\xcd@6\xa59*\xdb\xd0\x0d_!c\xe9\xe5\x01\xfc \xee#\xcf\xe6\xa7\xec&\x86\xce\xb2\x9a\xaaUL>\x93;io\xba\xb2\xa1j\xbawF\xc7'\xda\xdb;\x0b(1\x14\x8dz\xbfxM\xcfn3o9zL\xcf\x98\x87\xc7\x83_\xfc\xe9\xdfo\xcfv\x83\xdb\x07K\xd5\xcf\xe3)\x0bs\x81\x862> \x9e\x06T\xb6\xd8T+\xbf\x9c\xee\x9f\xd9}6\x0d*`?\xdd\xe6f~\x16]\x89\xfd\x85\xbcq\xf3sJ\xac\x97\xa1b\xc2\xed\xaf\x86\x8fo\xe0\xc4g\xc3\xef\xf3\xa5\x0d\x9b\xfd\xb3\xb2\x13\xc9\xfd\x17\x99\x1c\xe6\xd6\x0b\xc1[\xda\x02\x81\xd0\xa5O\xa5\x97j9\xe8\xccd\xba\xdb\xd4\xf7\xd0\xb5\xc6\xb2m\xac;\xb9\x1c\xb1\x85\xcd\xae\xef\xc2\xe2\xcb\xd6 ]\xca\x95<\xb6\x19\x93l\x8b\xdfPj\xbe\xa9-\xdf\xd0\x13\xe6\x9d\xcf\x1dLgy\x8a\xb4\xf4\x9d_\xb6\x1f\xd8F\x9b\xe0\xbe[\xe5\x15z\x1e\x96\xf8\xd7\xf0\x17\xcc\x85\x8e\x92s\x14T\x1c\xfap\xc9\xac\xcb\xf1E\x84O\xf3\xe97H\x9e\x138\x86\x9cb\xf4\xe4\x01\xe6\xd4\xf0\x13\xd8\x85\x18\x9d\xf0\x82\xe9F\xf5\x00\x84c\xd8\xb4\\\x99`b\xc8\xbaz\xeb\xa7!hr\xb2\xdf\xfa\xe8\x9bk\xa7\x15\xe3x\x8a!=8H\x8e\xc2\x85\x0b\xc8\xdb\xc7z)R\xb2XX\x8c.j\xe5\x03\xa8E\x97\xb7}oT\xf3 T\x98\xf4K\xfc`;\x0e\xfd\xad\x8cma\xf4/\x8a!1\xc3\xcd\xa4\x83\x9b\xab\xba.\x06p\x87\x19\xf4\n\xdcL\xe4_C\xf8\x96\xe27\"\xb0\xbb\xad\xf6\xcc\x82\x99]\xac\x9caz\x17>\xc9\xae\x99+\x96\xf6\x89\xf0\x1b\x17&\xc6\xf2\xbfy\xf80E\xdd\xc4n\x98e\x8di&i\xa2\xe6nU\x03\x82\x7flH\xf9\x95V\xc86{ &\xb3\x8e\xbd\x8ep|\x08\x03\xf6\x17\x87\xc0\xce>w{\xbbw\x0f\xbc\x8b'?\xbd\x7f\xf5<_\x17yF\xb2\xda\xcf4\xbe\xa7:\xcb\xea\xbc\\\xbf\x88\xeb\xf8_\x12\x00~\xc64\xc1=\x0b\x16F\xa5\xe8\xd8\x11<\xf8\x87D\x13\xfa\xcbiC\x89-a\x1ee\xa7\xe3I\x7f,\xe6o]\xb6\xab\x1ei\x1d\xfc\x05\xfe\x93\x03\x0d\xa8\xbf\xee\x9c\xc5\xe8\xcb\xf9\xf9\x90\x12P\xc4`\xd2\x8a\xc8B-\xf9\xed\xe3q\x81r\xff\x05\x08\x8e\xb9bC\xa9\xcdu\x10*QU\xdf\xa4\x03\x95P/K\xd14\x1d\xf6\xae\xe9\xabr\x86%\x18\x8c_g\x1b!8moZp\x16\x13HP?_%\xeb\x82\"\xd4\xe0\x17|J\x13\xd8\xd0ol\x990X6\xa0 \xec\xec\x1b\xab\x99$\xcb!\xfa\x9f\x0b\xd2\xaf\x0bL\xf2\x1f\xc9\x98\x99\x19\xb06K5\xcc\x88l\xfa\x91\x0e\xbcM\xc6mF=n\xdb\xa5\x04+\xd2\x99\xb6\x8b\xe2\xcd )\xde*\x86\x8d|Op\xc3\xb1\\me\xa4\xb4\x0f\nq\xca\xacY!\xdb\\$\xc5\x8c\xa9\xbc}?\xf3\x86\x0fAQ\xf8n\x19\xb5\x15E\xc1-\xe9\x98r\x95\xf7\xe3\xe8\xce\xcew\xa7\ni\xb7\x0f\xc5\xb6\xe3\x07\xf6{\x82f\xb4\xf0\xd0IP\xcd\xc6\x1dJ\xee;e\xf4\xa1\xd0\xdf\x1e\xad'\xb7}U\x0b]\xdf\xa9\xc7S(K\xe6\x8c\x12\x9e\x9a\xbf\xec\x9ad\x11\x14\xbb\xa6g\xae\xdd\x81\xeat!\xc1\xb0\xff\xa8\xe3\xe5\xac\xdf`[t\xe2\xfd\x0f\x14\xfcM\xed\xfd\x9c'\x99\xefi\x9c\x13\x95w\xd0E\xd8_]#\x9b\x0cid\xe3F#\xdb\xd5\xb9\xb2[\x90\x17I\x85\\!\x99S\xfc\x88g5;\x01\xf3P\x1f\xc3\xdeb\xb8i8_\xb5VF\xf5X/\xb0Krcc\x04\x9cTl\x16M,3\xfd\xb42D\xcc\xafk\x88\x1e\x00W\xeb\xda\xe7(\n\x87\x13\xe6\xd6\xb2Ku\xe2(\x1c\x8e\xe1h8\x8f\xa0\x7f\xe6\x88\xc2\xa2\\2\xa6\x92\xb15M\xb6\xdc\xf1{lc\xca;/7Qhrv\xc1\x81\xa4\xf1\x05I\xbb\xe3`.\xf2_e4\xd1\xe0h\xd6q]&\x9f\xbe2X\xc6&r\xe1M\xb2,2 \x1c\xd3\x83\x84\xb9\xfbQ\x06\xef)\x05U\xcdX=\x0c#2a\xaa\xce\x10\x7f\xe9\xc70\xe0\x8e\x8a``\x8a\xb4#\x9b\xa7\xbe\x90`\x13\xee\x1c\xdb\x8ccB\xfb73\x9e[\xc0\x15\x1c`\x0b\xcaBkn\x02\xc0(\xed\xb3-Q\xc43\xf2\x82\xa4\xc9:\xa9)\x93\xee4\xfd\x94O_\x99\xf8o;o\x0f\x83\x15\x18RX\x0d\xcc\xbeH\x8a\xd1\x93\x9f\xfd\xcbM\xfe3\xc6\x0eu\x9dh\xde\x0d H\xeb\xa1AE\xc7\x1d\x92\xbe}\xc2\x1c\x92\x1e\xe9\x1d\x92\x985\xf9#]~\xff\xd4i%\x05\xec&\x0f\x8e\x7f?=\xfb\xffv\xbe\xb9\xf7\x07?\xf8\xe3n\xf8\xf4\xc8\x93\xf7\x19\xdcp\xb6?\x15\x8d&~L\xa7\x0f\xfe>\x8d\xef\xffs\xef\xfe\x93\x8f\xf7\xa3\xf3\xff:\xdb\xfd\xe6A\x12\xd5\xa4\xaau,\xd7\xb6~\x01O\x0e\xf7\xb7\xb7\xd1?\xd8\xfe\xd3\xc3/0\xefo\xbd\xfa\xb7\xd4\x8a\xca\x00\xa9f\x95\xa6\xdd5\xb5\xec[ a\xcc\x9a\xc1\x84(\x96\x08\x95\x9a|(\xd8\xe6`\"\x14\xb3\xdb\xef\xa2\xef=\x8bw\xa3\x86\xcbbtR\x8c\x84\xc2\x9d\x18\xdc{\xe7\xed1\x16b\x8c\x06\xdfeLx \x80\x89F[q\xeb\xd7\xd4\x10n\xe4\n\xb3-\xdc\xbb\x07;;\x1d\xfd\xea\\D\xc8\xd2\x7f\xb8\xee\xc7\xc6\x8aC\x98z3a\xf6\xac:\xfd\xde\x9c\xb2\xf0\x00<\xb6\xcfP*)\xe5\xa6l\xd1\xbd\\]H\xe3\xb4E\xdb8\xad3\xf42P\x14\xd8W\xf4\x1f\x16\xd3\xa6s}\xd5\xc0\x0bG\xd5\xfc\x94a\x7f\x8e\xc1_il4\x06X\x13\x19\xe0&\x83$\x1bN\xde\"8\x98\xf9t(\xb6$p\xa4^O\xb3\x01{\x0f\xb4\x07\xb0\x9d\xd3R\xa1\xcb\xf3\xd6\x7f\xfel\xbb\x10\x03\x8e\xfd9zN\x0c\x9b\x9b\xb0!X\x9bCy?.\x92\xffEx4\xcc8\x00\x0f\x17\x93\xdf3\xf2\xe0\x98\xfeB8\x19\xc8\xeb\xf0$\x08\xc1c(\xd1\xab+.\xcf;\xb5\xd9\x9dp\xaf\xb6\x08\xc0\xa6\xd6\x1e\x9e\x1d\xa8>\x18\xcc/^\x8c\xde\xce\xf2\x80\x8c\x01\x1aW\xc9L\x8c\x86\x85\xccp\xfd\x1e\x14\xae \xc1@\xc1\xf6[\xcfnAuYT\xc4Uu\x9d\x97\x03a\xcatE\xc8\xb3\x8a\x7f,\x0buA\xd9\xa3\xca\x01z\xa2\xc8\xb5\x8a\x9e\xa9w\x8ep\x04\xde\x0f\x14\xfcN\xf1\xbf\xbc\xe5\x81*-R\xae>R\xa1\xe0r\xf9\xb9\x87a\xdf\xe9\x06\x8eVq\xf5\xf6:\x13'`{x\xb9-_\xb2d\xb3 \xcf)Bi\xfa\xdeS\xa8\xe1{8\xf8\xf6\xd1S\xd8\xdd\xad\x03 ,\xda&\xf3\xca\xa1t\xff{\xd8\x7fD\xb9\xb1=\xc5\xf2\xb1\xe5\x17\xd4q\x0c2\xab\xef:>:\xbeR\xb3\x8ebJ:?\xe4l\xca\xb6\xb3V\x91\x18\x8e\x00s\xce\xd5Q\x91\xc6I\xc6>\xa7\x9c\x1a\x87\xdd\xac$qM\xfcl\x93b|y\xca\x0b\x96l\xda%|/\x1d\xb8\xe8\xdc\xcb@UV\x91iy\x86\xf8\x98\xd1?\xd8\xef\xee\x92sS\xe9f\xcd1)6)\x97\xa43\xfe,\xec;\x92\xa2\xba\xb6IC\xd9\xe1\xc3\xd9\x0d\x99T\x7f \x9d\x9b\xd6\x03\x81\xd6\xed\xc6\x0e\x96\xeb\xa8\xb3\xa5E*gVDk\xfa%r\x9cS:\x1d\x83\xe8\xe5\xe7\xedE\xf8\xfc\x99\x8a(i\x9a_\xbf\x13\x18\x8c\x0fw\xcah\x16\xa7\xa9\xdfEo\xba7\x18\x11 S\x0cv\xbb\xb37b\xc3\x0fy\x809LK&\xcd\xecBLp\x87D\xbb\xfa\xbd\xa0\xcd}\xef\xdf\x8c\xcd)A'\xd0\x16\x9aS\xdc@m\xa7\xae\x95^#\xc7\xe0g}\xc1:\x0b!\xd1*\xc0\x18\x8c \xbe>\x062M\x10\x9f\x15\xad\xb6\x84\x02}\xc5k\xfc\xff\xec\xbdk\x97\x1c\xc7\x95 \xf6]\xbf\"P3KU\x0d\n\x8d\xee\x06@\x11MAt\xa3\xbb\x014\xd4\xe8n\xf6\x03 \x00a\xa0\xac\xcc\xa8\xaaDge&\xf2Q\xdd\x8d\x11\xe6\x90#\x8a\xc2\x83;\xb3\xde\x91\xa8\x91=cy\xd6$H\x00\xb3^\xdb\xeb\xb5\xd7\xf6\x8e\xf7\x1c>\xd6>Gs\xa8\x99\xbf\x80?\xb0\xfe >\x117\"2\xf3\xde\xc8\xac\x02 R\x9c\x1d\xd59\x12\x1by\xe3\x1d7\xee+\xee\xbdqFcp[\xfcSc\xeeB\x81M\xe2o(X%\xf9B\x8e\x97\xbe\x9cjS\xf7\xf8a\xda\x0e\xada4\xd6\xe1j\xd2\x1b^\xf7\xebc6ms\xc2#v\xf4\x88\x01\xe8t1bT\xde.\x01\xbe\x90\xa6\xfe \x9cDs\xd4\x18\xca\xf3\xcb\xa6\x0f\x13\xd2H\n\x88\x9d]\x0foX\x06\xc6\xd1\xc0<.$\x95F'A\xfb\x8b\x93\xaa7\xa8_\xc9\xb1X\xce.|Tf\x17f-\x946\xc0<e\xbe\x9e\x9e5_O\x7f\xc7|\x9d\x9b\x9f\x97q\xc5G\xf5\xc0\xe4\xa0\xd8\x82\x80\xb2\xb9\xf9W40\x12\xd8\x0e_\xe7gO\x96>\xcf\x9d\x9eg\xb2\xd9\xef\xb1\x97o\xb0\xa3\xe2\xcb\xfc+\xecG\xec\xe5\x13\xec%f\xea\x9c:5\x7f\xfae\xd3\xff\xa9\xef\x9c8y\xb2hb~\xfe\xa4nbn\xbe\xdc\x06\xb4\xca^b/\x9f\xb07\xddND\x0bs]\xb9\xb0/\x9f:u\xe2e)S\xcc\xcd\xce\xcb\"\x1d\xf6\xdd\xef\xb2\xb9Y\xf6#\xa6\xbe\xa0\xb5\x97; C89k\x86\xf0\n\x19\xc2\xdc<\x19C\xf3\xd0:\x0d\xac\xc2\xce\xd5\xddh\x14;ns\x14n\xf5\xcd6\x8aaQ\xefV\xdd\xc5Cd\xbdr\xa0\xe2g\x9cD\xf1\x02kE\xd5\x0c{\x96fI\xeef\x91zH\xbb\xf4\xa1\xe8\xab\x16\"4\x85b|\xdfb_VaU3/\x16C \x1bTS=\xfe\xcf\xe6g\x8f\x0f\x8a\x16\xca\xf7\xc4\xd5\xc50\x97\xb2\xad\xadsK'N\xbf\xf22J\x1f\xd3\x97i\x89\xe1m \x8a\xbd[\xe7\x96\xe6\xbes\xe2\x95ib\x8c\x88\x90\x19uY\xeb\xa8-\xf3\x04\xa5\x13jh\xcf\xd1\xcd\xc4+\xe6j'f\x1e-\xf5W\x8b\xc0a\x00f\x95\x9eo_\xf5\x0e\x02E(6P\xbe\xbdF\xb7/l\x9f\x9e\xc3a4\xbe\xfa>\x8f\xbe\x9b0W\xb5\xbd\x93n\xfdY\xe9\x04H\xef\xc8P\xbf{\x02O\xb9H\xc7\xac6/;\x9b,;\x99<\x13\x19\xf9\xf8\x1a\xe33\x03\x9e\xed\xf8#\xde\xee@\xf5\xd2\xbf\x17T\xbc\xfe\x11x\x19\xcf\xa2!Vt\xa6\xe2\xbb\xcc\xf62\x03\xe7@\xca\x9f0\xb0\x05\xf9\x97\xfcc\x9aY2\xb5\xf0A\x97\xb9\xf5t;oC\n\x97\\\x12h\xb52G,~f\xba\x02/\xf6\x0fhp\xf1\xef\xa9\xea\xfb\xd2\x80\xa0\x0b\x1e\xf1\x85\"\xa03\xe3\xe8\xd3\xd1\x01\xf3\x91\xfag\xd6\xe92\xc7\xcc\xb4\x81\x07\xa5\xb2\xe9z&#\xad\"\xe94\x13ef\xb2\xca\xbc\x083E\xbaDSm\xc9\xd0\x02`bA\xc5\x18\x14\x1c=\xda|\xe7);\xbe\x1e\xdcP,.\xb81U\x87\xba\xc8\xb4\xe9\xfeX\xad~\xa7\x7fc\xf5\xe8W4\xf1\x8d\xd4X\x96\xcaj\\\xf6\xb4\xc67M\xd2\x8c\xba\xe4s\xb5{\xde/v\x88\xc5\xd3n\x90\xdc\x9c\xfeL\x1a%Y\xbb\xd3e\xb1\xf9K\x06\xea\x95\x9e\x88\x14{\xf7=\xd8\xc3c\xc7\xeawM\x0e\x04v\x8c\xc5\xd3l\x98\xc1\x8e/\xd8\x99\x8c\xed\xbb\x1e\xdc\xe8\xb2#N\x9b_wotY&\xff?\x9c\x8c\xdbZx\xd14\xa8\x90yi\xfa\xfd\xbb\xc5\xb1\xab\xc0\xee\x96\x1c\xa6\x8c\x7fR\xde,kHu\x9c\x15Y\x17\xcfT\x1e\xce\xbaki0\xadm\xf0H\x1bH\xab\x95\xa8\x8a\xef:\xffV\xe9\xbbA\x0e\xe9\xcc\xa9;\xa9(\xfb3n\x14\xcb\xb7\xf8j\xc0\x92_I\xf1\xa8\xa0\x0c\xea!d[\x8f\xd7go<\xaf\x04\xa49%=(\xc0\x0e\xe8u\xb3\x8d}\x9e8=ka\x9f\x13/\x98\xd5\xe2Fj`H\xad\xbbK\x19o\xd8\x9e?1[1\xb4_L\xa3pS\x1cw\xfd\xa0\x9b3S\xfc\x13\xacN<^\n\xa2P>*=s\xd3\xfc\xb3*\xee\xe5\xd6%p#\xfe[G\xc8s\xa9+\xd4\x11\xa2\\&O\xa9;\xdc\xf9\x8c\xf8o\xf5@\xd9\x14\xaa\xc0*\xa9Kw\x03\xd0K\xean5\xb5\xd5\x9e.\xa7d\x02\xa2w\x0b\x17P\xd4\x1f\x8f\xab\xfcO\xc3i\xe4Mt\x97\x85\xb0q\xa6\x8cM\x8bs\x95\x93JR\xe3\xa7R ~\xd3\xd2\xcf\x91\xb9\"\xbc\xeb\x8cN|.\x1f\x98?2\xdb\xe9\xaa\x82V--a\xaf\xb1Dp\xc2\xd9.\xe3\xf2\xeeDH[l\x81\xc5\xf2\xa3\xcc\xb8\xdcR\x179\x00\xa2\xab4V\x99\x0d\xed\xe8XAE\x8b\xa5\x95\"=x\xb0{\x9e\xee7\x8a\xcd\xce\xb93\xa5\xe6\xe4\x1d\x8a:\n\x16\x9b\x9dlF\x9d\xc7\xe7jJ\x8bl\xe2T\xd6\xb7,\xa5C\xd3\xacT\xa3\x05\x8eO\xd1\x93D\xd4\x10D\x94.\xc3\x0d\x89\xad\xaa\x0c\xa1S?\x06ql\xca\x1d\xdaw@\x9a@\xe4\x11cg\x04\xf75\x88\xd81Od\x01\xb8\xc3\xb2a\x12\xed\x8b-#\xcai\xbb\xb5#\x1a0\xce\xc1\xac\xef\xf8\x01\xf7Z]\xd6\xdaY\xd9\xde\xb9\xb9\xb1\xb9\xb2\xb5\xb8\xb3\xba\xb1~\xf3\xdc\xe2\xea\xda\xcarK\xa2T\xd8e|\x82\x18\x86\x16G\xac8E\x92\xba\xcd\xad\xae]i\xc5\xab[\x88\xb7:\x0f\xecf^\xd9\xaa<\xef\xb4\xcd\xb0\x90\x18j\xeb&\xcd+h\x1e\x81g?\x8c\xe2\x1f\xca\x8bL\x9ed\x87\xccOY\x18eL\xa8\xf9Q\xbfX\xe2\x94\xa9\xa8J\xe6\x87l\xeb\xdc\xd2\xb1\x97O\xcf\xce\x8b\x05/\xd6zc\xf3\xe6\xea\xfa\xe5\xc5\xb5\xd5\xe6\xf5\xd6\xcbR%V\x95\x7fE\xca\x92\x8fT)\x8eU)m\xe6l\x03=`\x90WW2\xd0\xac\xdd:\xde\xb2\xd8>a\x17\xc8\xe7!;\xc3,\x8f\x16\x8cKv>\x0b\xb31!b\x146h\x80\x1d\xd6\x84\xe3J\xd3\xe2\xa1|\x1a\xae\x8e:\nb\xf8\xaa\xf5\xcaWl\xf9@\xda\x16\x877\x14\x95-\x11a\x08\xde.\xc7\xb3]\x1f\xdc`\xaf\xc9)\xf4\xc18\xd6\x9e\xed\xb2\xa1N\xc5z\\f\xe7\x1b\x8a\xee\xc7\xec\x18\xe4\xe2o\x8f\x98\xa1\xbc\x95\x00^\xd9\xf8aA\xb8G\x82R\x0f\x8f\x1e\xc5\xf7\xc8^\xad\x89_\xe2\xfa1@\xf4AG.\x9e\xa7\xad\xee\xd6\n\x0d\xae\x8aL\xe3\xbf\xb4\xf6\x95\xa5\xd2A\xa7\xf9H\xac\x1c\xc4\xdc\xcd\xb8\xc7\x9c\x90\xe5a\xea\x0f\x04\xba\xf7\x9c\x94\x1f\x9b\x9be\xea9d\xa6\x08\xf3\xc8\xd9\xf3\xc3\x01\xcb\x86\\6\x96\xf0>Ox\xe8r\x0f\nH\x80\xf4\xe9c<\xe0\xf2\xa8\xef\xfb\xd9P~\xbe\xc3\x93\xe8\x98h\xd6\x03\x81\xb5z\x8a6\x17w.\xdc\\][[9\xbf\xb8vsqkk\xf1\xea\xcd\xd5\xf5\xe5\x957\xd4\x99\x02\xed\x8e5\xbd\xe5W\x9d\xb2\xdc9\xb1\xa0\x7f\xfc\xc7\x83iu\x1b\xa6\x96p\xc8\xbew\x86\x8d'\xdd\xcb\xc8\x85\xae\xf2H\xf1e\xc0\xbeg6q\x021\x1fr\x19\xc6\xe1\xf7}\xbd&\xec\xd2\xee\xf6\x0e[\xdf\xd8a=\xce\x06\xd2W7a\xd9\xd0 a\xc5\xa5\xc1V\xd0'\xb5\xb8\xa9\xa0Jf\xc9\xab\x0bzyqmw\xe5\xe6\xc6\xee\xce\xcd\x8ds7\xcfn\xec\xae/oO\xbf\x96\xf2\xde \xd8\x92\xb4\xdc\xa7\xd7\xc5\xf4n\xc0\xedV\xd8e^\x97\x0d\x04\x99\xeb|\xfd<\x8b\xd5\xd1R\xfd\xb3\x08\xccE \xc3@\xb9\xc5\x1c9\xc3\x06E\xaa\x83?n\x15\xf8\xe2\xcc\xe4!\xe4\x9a\xdct\xb2a\xe1)8\x90\xa7\xbb\x113\xf0\xaa\xe5\xdf\x9cU\xab]1\xbaZ\x1e\x032Y\xc3\xa8l\x02s\x7fz\x81\xd9&\x16\x13\x07\xe1\xe6\xa5\x91\x7f\xb3\x94\xdf\xce\x05\xe5a\xa3<\xcd\xc4qq\xc2\xe2\x18l\xaf\xbc\xbe\xbb\xb2\xbe\xb4rs}c\xe7\xe6\xe2:\x10\x14\x1c\xe12-\xbb5\x9e>\xf2F\x9f\xef3\x1d\xd6\xa4\x0e\xb9\xf2\x00\xebB>Msk\x9a\xb3\xef\xb2\xf4U\x96\x1f=\xdaa\xfe\xf5\\\x86`\xcau\xba\x9e\x0bN\x05\xf7\xf7\x12R\x16\x8d\xac\xda\x8bO\x054\xbfqC\xe2 \x1bRw\x0bU\xbd\xf6\xa2^\xf4\xd3IVJ\x96rB\xa6\xba\xa9\x10&\xb5%\x1bg/\xae,\xed\xb4\x00k\xc5z\xbcJFy$\xbf\xce\xc5\x01\x9a\xb6\xdf\xafD\xa2\xab\x1f\x9eq\xbe-_\xd9\x81\x826\xe5xEa:b\x87\xa9\x86-\x0cr\x8aa)\x9f(9\x92\x82\xc4\x1d\x07\x12\xa7>\x177\x81\x8dc\xfdv\xfdX\xe5\xa9K3'Q\x1c\xbeu\xbc\xf5\xed/6\xde\xb2\x1a\xc7\xa9\x1a\xc7\xa5\x02 X\xadm\xb9\xa5\x027\xedr\x8b\xc2t\xb9\xe3\x84\xa7\xe2X\xb5U\x88\\/\xe0\x025~(F\xf5C\xe6\x84\x1e\xfb\xa1\x18\xcd\x0fK(\xd4\xa9n\xcd\xb9\xad\x8dK7\xb7V^\xdf]\xddZ\x994W#/\x98\xa9V\xd4c\xf3\xb5P+\xcd\x02\x94o\xa1\xb5Eq\xca\x99\xcb\xd2\xd3O\xdd\xf1\xbc\x1fv\xd9\x0f\xd5\xc8\xd4\"\x88\x115,\x02\xc8\x1b_\xfd*83C'\xdd\xd5\xc9n\xdaz%\xbeyK\xb1\xb4\xb8.H\xdd\xd2\xc6\xfa\xce\xe2\xea\xfa\xcd\xdd\xf5\xe5\x95s\xab\xeb\x13\x96\xc6r%Q6\xc5\xa8e\xa87cB\xa0\xb4<\xe3\x85:\xd8\x98_\x83)kxD+\xd8E 1\x1e_\xd2\x98\x94\x1d\x05\x15I\xfd\xb3y\x0f\x96\x9cP.4OdT\xb2\xa3\x16\xb7$\xe48\x99\x14f=\x9e\xfa \xf7\xa4u\xcfB\x03\xd5\xba..\x97W\xb2I\xe6\xab\xc1\xad\xb2\xe5\xc2|,\x0c\x0fM+\xed\x83W\x99\xa3\xdc\xac\xa2\xe7\x9a\xb8\x98be\xce\x8e\x9c\xa9\x10\xf33\xe6E\x1c\xf0\x91\x1f\xf8if\x99\xfd\xee\xfa\xd6\xca\xf6\xc6\xda\xe5\xc5\xb3k+\xd3\xce\x7f\n\xfaZ\x8fQ\x81\x10\x07\xdb\x16\xff}\xfdk2\xd0\xea\x1f\x18j\x81\\O\xbc\xa3\xab\xc9}.~wo\xd0c\xa3\x7fb\xaa\xd2\xeb\xbdq\xc9\xe4\x9c\x03\x99\xf9\xe2K\xec\x9a\x98\xc7\xd4\xfb&\xd9\xc3\xd4\xfb\xd6(\xd7yZ\xae\xc3;f\xf7\x8b\x93B\xd4\xf3Iq/J\xb8\xd6\xdd\x87\x1d\xd6oW\xe4\xeb\xb0\xd3\xc5\x02\xb7\xd0\x03~\xf4#\xa1\x11\xd0F\x1aL\x1e\x89L\x19\xf6\xa3\x1f\xd5\xe5\x01\xac\x84t(\xd7\xfc\xc2\xab1\x12\x82y\xd2\xe6\xd7\xa3\x1b\xd2\xb79\xd4\xc6\x9dI1\x0b\xcd\xee\x81\x926\x94\xfdn\xf1\x1a\xd7]\x81\x88\x1f\xecLm0\x99\xf9K:\xed\xca\xf7\x92\xcf\x1enF~\x98I\x0f\xfa\xc0Du\x17\xfc\xee\x0cs\xcdW\xd8\xdb3\xaco\xbel\xc9p\xbd\x04\xc7\xe7\xe2y\xe9\x0b2u\x8bb\x91\xd4A\xebM\xbe>\xc5V\xadaR\xd6\x8c\x8a\x85\x12\x13\x1c;\x81\xef9\x99\xf4\xe9\x8aK\x1f\x84\xd6\xe5}K\x15\x9b\xc6\xb3-l\xcf\xbfR\xea\xbd\xd6w\xdb\xa6h\x1dI\x94\xb72\x9f\xb9\x99\x81{\xac^\x9e\x9d\xc3\x98\xab5Y\x0de@U\xe6\x0b\xa9#\xe1.\xf7\xc7<\xe92\xf3\x96\x84L)\"x\xe2\x11|\xcc4*!\x1c\xf9BQ\x0b_(\xad\x0cM)SN'Sr\ni\xcf\xcfw*\x8ew\x96<25\xbe\x93\xf4\x909\xfd\x8c'k\x91\xe3M\x13a \xafk\x93(\xcaVC\x08\xc4>C?\xe9w\xc9\xd1\xf7\x19?\xf4\xb3\x8d\xc5<\x1bB\xb2\x98<\x1b.\xca\xde\xd2\x197\n\xfb\xfe O\xb8\x80Zj\xc6 7)\xdc\x16e*(is\xee\xf9\xa1\xd7\x86\xcb\x0f\xe94\xdeT\x0d\xf2\x1a\x9dan\xb5\x16%O\x94\xa5\xa6\x99\x93\xf1\xcd \x1f\xf8\xa15\x0eD\xfcD?u0&W_\x12\x87t\x81Ez\xb3\xeay\xb7\x03\xcb\xd2\x185\x96\xf2\x80\xbbY$Z\xb4\xbf\x0fY\x93\x95\x16r\xdd\xd4\x0ft?q\xe2E\xdd\xbf\xfdQ\xae\x89\xee!U\xdaa\xdd\x05\x0c(v\xb5\x8a\xf0\x91B\xf8\x13\xa7O\xe2\x9c\x19>\xbc<\xd4\x9e?A\xb2M:\nt\xe2\xf4)\x0c\xca\x0dH\xe6\xd90\xb0&\xb7c`C(\xdbc\xd3\xed{&\xa3J(iWQW6\xbc#\x89\xea&$\xe80\x91D*\x05@\x06\xd1\xdf\xfczX\x93K\xa2L$x9\xff\xa7M6\nj}\xaf\xa7\xcfzY\x93\xf1\xb2Y(s5\x89\xb5\x18\xdb\n\x9d\xacL;\x0c\nQ|/\x1e\x0d\xd9\xd6\xa7\x85\x16\xca\xa5\xcdR\x14\x12\xdc\xd5r\xfaMz5?\xddX\xdc>\xd1\x91 \xcd&>\xb2\xc1\x16\xd8\xf5\x96%\xd3b\xcb\x12\xa6*\xd4\x82\xbc\xdd\x11r\xc8j\xd8\xben\xd2E\xa4]v=\xbbA\xd2\xc1\xc0F\x04\xec5\xe6\xcb\x07\x99\x13\x94\n\xb3![\x99\xfd\xdc\xebdq\xb5\xae5:u\x9c\xcd\xcf\xd2F0\xc5\"8\x0b,\x98\xc9\xa2\x8b\xdb\xe8=gHS+NB#\"\xf4\xeb\x1c\x8d4U\x98\x1a\x0b\xfci\xb0\xc0\x81\xb7[j\xb1 7O ~eX \xc3\x98-X\x907aA\xca^c\xd1\xf3b\x81\x0d\xcb\xd5\x96\xa5So\x19\xfb\xa6\x89F]\xed\n-\xa5#\xca+$\x84d^r\x14d\x8e<\x00\x90Kq\xf5;\xe8+$\x1b\x9e\xc3\x11\x16\x81\x8a\x87\x98\xb7\xf2\x14\xf7\xeb!\xa7\xfa\xaf2\xa9\x97\xfeT:'kT\xca\xc9\xdae\xc1\xcc\xf6\x85\x8d+7\x17ww.\xdc\xdc\xdc\xd8\xdc\xdd\x9c\x90oY\xfb\x95e3\xb1-\x9f\x9f\x9e\xd1L\xca\xb3v+\x1dF\xfbe\x84\x17\xa8Q\xda;\xfbx\xc4P6\xb6V\xaf\xad<\xefH(B'&Op?\x89F\x17\xb7;BW&\xa5\x80\x90\x0c\xc4\x80\x8b\x1c\xc1-x8CV\xbe\xe4\xc4\x1d\x1c\xf8n\xd4%\x1ef\xc9\xe16\xbf\xdd\x9e6\xe3\xba\x96\x0dP\xbaN\xdee8\xb0U\xff\xe4,\xaf\xcf\xd6\xe46H$t\xae\x06\nIe\x159i\xc1 \x17T*\x939\xcfjl\x0c\x95T\xab2\xc7H\xe9\xa5\x1d\xbf#W,\x92[\x1c\xda\xcdG\x85\xa9\xac\x94\xdf\xd4\x9a\x97\x87\x95\xc2}\x8aq\xca\x93.\x86\xa9\xb9R\xebFC\xfca`\xaf\xab\x19\x96u\x9aLm|\xdb\xccET\x0e\xbbL\xd5ot\x9f.xe^?*H3\xb7P\xce\xa6\n\x8f\x93\xf5\xb2\xc8)?\xdaS\xf7Ls\xa7S\x1e\x96\xda\xba\x1b]\x98j[\x7f\x98\x98\x11B\x066\xc3y,\xa1\xb7\x10\xad\xa6?\x8a77\xc4\x9f\xf3/\xe6D\x86\x92Q\xdb\xcfaX\x97,\xd9\xa9\xf1u2\xe7\x10\xde\xeb!o\xfd\n\xaa\x17u \xcfH\x95\x14$z]$\xd6T\x96\xc6\x81\x15\x96\x88\xd7\xb9\xd1-\xe7\x05\xac[\xaa\xb5\x8d\xf3\x1b\xbb;/f\x81,\xc4hf\xdf\xcf\x86\x97\xf2\x0c\xaeG\xa6\xc8\xa8h\xc9\xe4\xd5\xf8\x8c+\x9f\x81\xc0\xb2\xda\x10^\x0b\x9a\xd5\x98N,\xb8\x96L^\xc0\xa5\x8d\xf5s\xab\xe7w\xb7V$/z\xde\x85l\x1a \x18\x16,\xdcG\x8d\xea\xb7+\xc0t\xc1\xf6\xb8\x04\x83\x94s\xf2\xd3E\xb3x\x90\xd4\xad\xfaO\xaf`\xa9\xe7\xa2d\x0bLY\xe0\xbe\xa4\xd2\x0f\x94\x98\xee\xd9\xc3ug\xc4S\\q'2}H\x90`\xd5a\xa9\x9a\xe5\xb8i\xdbS\xde\x0e\xdb'\x89t\x15)\x08\x95\xa1 o\xc3),D9J\xb4z\xbe8\xe2\xafDV\x1a\xab\x04B\xf5\xc7\x8a\x9a\x05\xcb\x967\xcb\xe2\x01\x19\x82\xec\x90Z\xe5\xe8\x08enr\x1f\x8a\xbc#\xd9\xa9\x83p\xa6v/'\xf7\\\xd3\xf1tb\x0b\xd2\xa2l\x0f \xb4\x8d\xec\xe4\x80\xecT\xfb\xcaQh\xe4\xa05?\xcd\x88\x90\xc5\xca\x96\x8b\xe7\x16\xb4\x18\x12\xb6\xa2\xa9\x84-fD\xaa:\x81\x8b)\x9c\xae\x17\xbaXIYt\xac\xe2c\xb9T.\xc9T\xd2\x95/%\x86\xe0\x1b\x9b\xa7\xc3vn#\xb9]\x9c\x17\x91\x92\x12\xeb\xe1o$\xa7S#@H\x11\x80\xce\xcb\x8d\xc24\n\xf8\xcc\xbe\x93\x84\xed\xd6\x95\xc5\xad\xf5\xd5\xf5\xf3\x0b\xcc>2?e\x1e\x8f\x13\xee:\xe00\xeb\xb1}?\x08X\x8f\xeb0\x1e\xed\x91\x19\xf2\x83\x8c\x8d\x9c[Q\xc2\xc6\\g\x9aB7\xe2;\xd3\x04\xbb\x11\xe7\x99\xce`,I\x98?\xa1W\x1b\x8f\xc1\xbf\xca\x9b\x039PF\xa9\xba(\xd7\x95T\xd0\xbc\x97^b\xed6\xbcp\xa1$\xe3(\xe6i\xab\xd3\x99\xd9\xe3_h%\x99\xf4~v\xa30s\xfc0U\x17N\xb2\x87T\x8bI\xdc\"w\xeb\xdf]\xe5\xc1\x98+I(\x08\xa2}\xeem\xc3\xa8\xba,\xed\xa8\xe46\x99\x84\xfb]f9\xe9\xba\x1d\x1f\x9e\n\x95\xb9\xcd\xec\xf4\xc0\xaf\xa3\x07\xddI\xa2B\xfdbh|u\x92\x81\xbc\x08L\x0b\x07\xb79V\xcd\x15f\x8a\\\x9f\xbb\xc1^\xab\xfes\xa1\xe9TMEtT\xa16\x18\xfa\n\xaec\xe7~e\xc6\xa3\xfa\xecL\x9f\x84\xdc\x1c\xf14\x1a\xf1)\xc5fSG \x1e/\xe1\x9b\x9f\xa4Y\xbb\x06G\xac\xb2t\xd3.V\xe4\xbf\xc9\xfc}\x82da3rh\xa2\x84\xb8 \x92D_$\x13\xa9\xeeg1\xa6\x06\xe2\x0b\x9b:\xe3\xa7\xe2?\x10\x1b|\xe4H\xa6\x8c\x95\xcf\xbd\xcf*\x97#2\x9b\xf2\xce\xcc\xc8\x89\xa7h\xa5\xd4\xd2\x91#!\xec\x7f\xddv\x1b\xaf\xd1#s\xb6\xad\xd7\x87\x0b\x99W\x19E\x84\x8a\xa2\xf0\xa5\x11A+F\xe5]\xff\x16\xfbFhD\xfc\x80\xbb\xb9\xf4,\xb0j!]\x95\xe5f\xfe\x94E\xd7\x90\xd6\xceH2\x88\xa4\xaa($\xcd\x8aB5^\xb8\"\xe1\x17\xe3\x99R/\xad\xa0\xb7]\xcd\xcf\x9a\x04)|\x9aj\x9f\x83\x89\x94\x1a\\\xe7\x8e\xe8\xa8\x0c\xd6\xd90\xaayr,\x97%\xa6x\xc1M,C\x968\x0d\xcf\xc9\xd6\x1f\x95\xe2\x80/(\x03\x90>\xeeb\x9f\xaa_\xd4\x89\xae\x97\x1eJ\xd4\x7f\x81%5*\x88\xdc~+hb\xfb\xe5W\xdd\xca\x1d\xe0VMS\xf6s_K\xc8x\x1b[\xa9\xac\x0d\x80\x93_\xcd\x1by\xb0\xa3\x0b\xcc\xb1\x83K\x0f\xde\xd4\xd8(\xcb\xaf\xe6X^\xbf\x95rJ\x1d-\xfa\x86P\x89/\xe3\xf1\xd2\x0f\xebnB\xd3\xa1\x94\xd8Vn\xe7N\xf0}~\x08(\x86\xbe\xd1\xf5\xaa[*j?\x917G\xdf\x80\x15\xa4#K\xdba\xfb$y\xe7:2>\x16\x13\xfd\x8dj\x05I>\xd3\xb7\x10\x16{\x82\x02\xf1\xf3\xa2\xfd0\x98\xd2\x1d\x89Y\xc8emj\n\xfd+\xf4D\x9e$\xea\x02\xb9Y]aZQ\x9at\x8d\x8c\x7f\x8e\xa94u?\x10\xf8Tp\xfb\xc95\x02I\x9f\xfb\xa0\xc4v\xcc\xddv6\x93 ~'\xf4\x8a< \xda\x9d\"\x93\xbf.\xb6\x9b\x04u6\n\xfdk\x1e\xbbL\x14#8\xac\xea\xa2[7\xc6\x00\xfe ,\xdc\x0d\xb8\x934\xbc\x8d\xa1\x7f\xcf\x83dB\xfe\x0f\xa6h3O\x82\x05[\x9e\x16\xfc\x13\x03\xde\x96^\xd1G\x1a\x1e<\xd4?\xf5 \xe9j\x98\xf1\xc4\xe5q\x16%\x0b2=\x0f\xfe*\x96j:\xf9\xb5\xfc#w\x8du\xbf\x1a\xef\xee\xf2/\xe1i\x1c\x85)'C%\x9f\x7f\xfbcu\x13\xee\xf10\xf3\x9d ]`\xad\xd4\x19qEg\x1b\xe2\xe0\xf4O\x91\xb7&\xa7\xf6\xf2OP\xc98[\xa8\xbe\xe2y+\x8d\xc2\xee\x1f\x1c\xff\x83\xc9\xe4\xad\xf9\x94\xdc\xed\xccdC\x1e\xb6\xfb]\xd6o\xb8$\xb0Bj\x96\xc9r\xc8\xa6\xd5\x8c\xb4@x\x1d\xa2\x1d\xcc\xd1\xec\xb2V\x11*\xa4i\x8a\xf9\x08zG\xab\xe1\x0d\xf4\xaa\x1553&Nx\\N\xdf\x01r\x95\x11G\xfcg\x01\xc4p)\x90Ws h\xdf\xa8\x92\x1d6\xebLdT\xd9a,\xa8\x85\x90\xb5n\xc2\x02\xddT\x93\xbb B\xf8\x04\xbcQ\xae#\xb6\x04n\xfaW\xb3I\xe4\xab\xcd\xff\xb9V\xb7\x0d\xaa\xdbh7\xe3N\xb7\xb9\xc6)\xa2\xce\x8c_\xfe\xddm\xb2\x0c\x97\x7fU+qe\xb8pc@\xcc\xd4\xfag\xbb\xd9\xb0\xda5i\xe7\xd3\x04\xd8L\x8a[113\x8d\xd9!u\x10N3v\xd5\xa3\xd5B\xb3\x0d\xd8\xf6S\xb3\xb6\xbc.g<\x98 \xd1)]\xf0nQD\xe6;m&=\xf5\x98\xdc`\xed,\xa2\x88j\x1e\xa0\xa2\x9b\xfa-\xfb\xbf\x90\xb5k\x82\xe7O\xf5\xab \xca\x99\x9f:&\xe7\xab\xf2 \xfa\xed\xda\xe5\xbe\xace\xf3\x85\x9e\xa4\x1a\xf32\xab\xe2M\xdf\x8e7\xf6\xba\xea\xdai\xbaH\xb9t\xe6EG\xca}\xe9x6j7u\xdba\xfb\xf4 \x12\x9c\xa6\xee\xa8N\x9c\xb0\\R\xc9\x00NZ\xc5Q\xa0\x93\xb3\xb3\xb6P\x04\x00\x11\x0bm\xaa\xc6pr\xb6\xe6\xecXB\xb9\xfe\xe9\xc5\xb3}\xcd\x01\x18c\x95T\xb2\xda\xc8\x80gk\x91\xeb\x04 `-4\x9b\x03\xb5\xf7\x834K\xc4N\x92\xf2\xab\xceHU\xed\xb4\x0bi\xa9q,\xbf}bf\xec\xd8g\x0fw\x130Tk\xfb>|op6\x85\xf3S\xb9v\xc0U'^w7_\xa2\x96\x169\x9b\xe9\x87`C\xef`E\xb9\xee\"^O\xe9\xb9\\#\xac\x06*}\x99[\xb9*\xa0\xf2\xb7<\xb7\xe6\x9cFh9\xda\\)\x1f~\x97\xf96\x03\xbf9\x0d~\xfd\x1dIh5\xe2\x87U#>{\x8d\xb5\xa3&\xfb\xbdR!:\x02w\x9f\xab\xd8n\x12\xb4[\xe2CU\x89\x08KV\xfd\xc2\xa8?\x93'\x81@2x\x81]HH\x99\x8a\x84#\xe7%\x04\x03\x89ED\xfd\x06\x9f\x9f2\xe6\x0fx6%\xa6q\x15\x0d\x83\xdf\xdf\x94\xf6\xfc\x05\x19J\xf8\x0d\x9d\xa5v\xef\xe8*\xe1q\xde\xf6\xda\x9f\xf4\xf0\xf0\xbf\xbc\x87\x07e\xb0u\xb1~\x82U\xdb\xef>e\x00\x91\x8e\xad+\xc5sE]\x96\xce\xecn./\xee\xac\xdc\x84\xd8\x86\xed A\x0df\xef\xe0\xb9\xf1j\xb4J\xa1\x04\xd0P\n\xdc\xeb\xce\xc6\xf9\xf3k\xd3\xf6\xfa\\1)8U\x89\x19\xb2\x8a\x05;\x82\x02=\xa2o\xc2=\xf7\xf3\xc9\xd3\xd7\x0d[\xb5\xd9\x1f\xa6\x91\xad\xa7\x90o+ \x16\xea\x8b1e-\xe0\xf8\x15\x8d\xe7\xd09\x9f\xfb\xbe\x91C&\x1b\x95c\xb4[xtNa\xb2f%\x84\xda\xf7C/\xda/.3\x86NZ\x93\x00\x0d\xff\xb2\x99\xc09\x8c\xf2L\xc7uKJ\xbe\xccy\xbc\xe6\x87{\x17\x9ct8\xcd\xfd\xd2\x04\x1b]-\xf4K\x98|\xc4\xae\x9a\xfc\xb6\xb5\x1b[\xf2\xcc\x99\x90\x06\xc4$\x1d\xdaq\x06\x0b\x85\xbb\x10\x1dJ\xe5\xcb\xdd\"\xd1\xacEUq\xa4\x9a`UU\x00\xf4\xb2-|\x07@\xdf\xb1+\x17\xce\xd7'W\xff\xf6 \x89\xbc\xcc\xd8v\x93(\x08v\xc0\xf5.U\xffPw\xe0\xf2[\xc2\x1d\xefp'\x82r\x8a\xb8\"\x1c\xae\xd45!X\xcd\x0e\x8f\xfd\xda\xb8\xf6\xbe5\xf2\n\x0c-'g\xb1\x97d\xaej\x9c>AR\xa34\x86\xb6c\xde(\xdf\xa0l\x07V\xac\xe8\x7f}X\xc1\xd4*\xc5\xe5e\x9cH/\x0b\xc67\xc9\xcf\x06\x9c5\x81&5\xc4\xbdLKp+\xef\xf8c\x0f{\xd8h-\xafU\xde\xc2\xcfT\xee\xe3\x08r\x1f\x17\x9e\xf6y\x8d\x99\x1e\xb2*V\xa9y\xd4\xe9\xb2\xb0\xdd\x91\x8f0\nT\xf4\xc3Ag\x8aG`\xc5\xfeG\x13#D\\Yj\xae\xe1\xd6 0O@k\xa14\x10Bi \x84\xd2\xa0\xa1\x9eV\xa6\x13!\xef\x8b\xe3#+\x9fK\xa2\xd1j\xba=\x8c\xf6\xc3\xef\xf3C\x89\x88u\x0d\xc8\xdca}\xf4:ls\x7f1\x8d&\xeeO\x8e\xa5\xf1\xd8\x19\x16O\\\xa9\xa1,\xd5\xb4Rr\xc0n\xa7\xac\x9e:B\xcc\x12\x93\xef\xc8\xa4\xa2\xf5u\xe7\xe5\x9d\x8cyX\xf65\\\xbb-\xe3\xd0\xe1\xcaA\xd3\xa4M'\x83v\xd9Q\xe6Iw\x16\xf1\xd7P\xaaTs\xd5\xf6^z\xe9\xb9\x1b\xac\x8b\x84\x98\xea.\xbe\xaa\x07N\xff\xb2Z\x95hT7\xc4\xc3\xf4\xb7\xf9j\xa4\xd6\xd8\xca\x8a\x8b( \x107\xa1\xcd\x9bYTs\xfdd\xae\x9dp\x1eIE\x06\xafs\xfaTW\xe3T\x86\xb5\x0cf\xaa95[GX\x85RV\xe4\xb2z\x0c\x9f\x92`2\x85\xe6`z)\xa8p\xa7J\x9f$\xbbh\xc2\x8f\xb1\xc9\x06\x04\x0f\x90\xcc5\x1c\x8d\xd6\x11\xf08\x13\xc4\x8c\xe9\xcc\xf9\x91\xa9\xd8\xe9J\xc4o*\xd1L4|\x9c\xf9w\xfah\x12\xfd\xd3'\x9e\xebwhT\xba\xdd\xf6\xf1\x9b\xc7\x07]\xd6b\xad >\x1c\x13(\x94#\xe9\xa8o\xe8\xa6\xa0\xa2\xbb%\xaa\xda\xf6\x1b\xe6\x18J\xfe\xdav\xba\xf0\xdc@h\x8eP\xdby!\xe7rl\x95\x9f&2\xf3\xa9,l\xac\xe2\xf7\x8b\xd0S\xe0\x9f\x96\xeb\x043\xa9Y\x03\xd7xi\xf9i;\x01\xfd;0Z:\xef\x80\xe1:D\x1a\x0c\x92\x11%g\xc7e*\x92\xa5-t\xacq\xddF5\xb2\xe8\x8b[\xb9f!A\xca\xbd`&\xec\x87\xc5Zn:\x89\x98/\x17\x92\x8cY9u\xd7-\x0b\xc8G\x1eg\xb2\xa8\x96\xac\xff\xd68\xc4@\xae(\x96\xf7\xa7\xb1\xd7O\xc3%d\xbb\x8aWP\x87\x1340\xbb\xe5\xa9\xda\x8d=\x9e\x01m\xc4\x94f\x04M\xf0\x8d\x97\xaf\xfeC\xe1U3\xe5\x97\x84|\x14\xe7\x19\xf7\xb6\xb3\xc3@\xe6#\xae\xad \xd6\xb4\xe5\xf4\xd2(\xc83\x95S;\x99\x89\xa3T\xc6\xea\xd4W\x93\xf1\xf7\xec5v\xbc\xed\xe4Y\xf4#X\xc7\x1f\x0d}\xcf\xe3a\xe78[\xa8\x02:\xc7\xeb\x99O\xab\xef\x1fp\x0f\xf7\\\xbc\x90f\xafidx\x99^\xf0U\xf9\x1fG\xf0\xe0b\x91^\xad\xa7\xd221\xbdm\xa5\x9cN\x97\xb5\x8f\xc8wTZi\xe6d\xbe\x0b\xae\xd3\xe5\x81\xbd\xf4\x12\xf3eZ\xe0v2\x13\x8dy\xd2\x0f\xa2}v\x94\x15\xff\xb8Z\xf9\xd7\x1b\x9d\xc2\xdd\xde>\x17=\xd3IX\x88\x14\xc5 \x960\xc0\xf3\xdaT\xa9\x93\x8d_\x88\x96-\xb0\x86D\xe7\xba\xec\x02\xab\x89q\x13\xbf\xcaQ^`\x83\x06,.\xb3\x9f\x056\xae/I\xa4\xae\x056\xb4\x13\x1f{\x1b\xa5{\xe9\xfa\x95\xa8r\xa6i\x1d\xbf\x18\xc3\x9e\xccM\xef$\xf5UZ\xac\xed\x01\xb4_\xd4{\xa44\x8b&\xa9\x1e^;\xf1\xbb,\xb7SgDX\xb2\xa1\x9fvY\x9d]\xd5\x08\xc1\xa9\xd5\x90\xed\x1aCv\xda\xe9J\xeb\xed\xec\xab\xac\x0f\x8f\xf8\xf5\x8f\x1e\xed0\xf7z\xbfj\xc8\xee7\xbf\x16/\xd8\x9cO3\xa7\xc2 \xe5\xbb\x83\xc1\xcc\xcd\x9b\xd2\xb9\xec\xe6M\xed\x12]\xf2)\x0f:\x1d\xe9a\xa6L\xe2\xbc\xcb\xae\x8b\xba&\xc9\xb2\xdb\xe9\xc8\xf0\x99(\\\x8b\x1co\xa2\xfdL\xff4\x07\xf6g\xe2$\x8a\xd3\"\x93\xc2L\x16\xc1\xc1j\xca5\xc0\x14\x17F\x92G8\x939\x83\xae|\x04U}]\xf5\x1a8*\xbe2\xadH\xb0\x82?\xd4\xe9\xc4p\xc3\x10\x12G\x02{V\"J\x96K\xe6\xe9\xbc\xb4\xd2\xf06<\x92I\x82.\xaby\xf6hO\x88=\xad\x84\x87\x1eOj\xcc\xa6\x8a\xdaL\xbc]a\xc5\xa0Rdq0Q\xaai\xec\x84\x84\x9c\xd1F\xfa\x0b\xf0\x9c\x04\xe0Cm\xe1\xbb\xdd\xda\x9e\xb8z\x90B\"F\x1d?\xa7\xab|\xa3\xd3E)\x19\xee\xb6\x8b.\xcc\x15\xf37\xda\x87\xe7\x1bG\xfaCi\x176\xff\xfc\x1d\xd9/\xfd~G\xf6\xbf8\xd9\xb7\xe8\x85\x9a\x13d\xce\xe0\x0b\xd3\xec\xf0w4\xfbw4\xfb\xab\xa6\xd9\xcf\xe7\x1ag!?\xb5It\xa28='\x13\xb2=\x87\xe3R10\xc4Kt\xba\xaf\x93\xb3\xa7-L\xe3E\xe5\xfb\xfa\xe6\xeeG\xa3\xb7(\xc9{gy/\xa5TA\xbe\xd5~\x86\x85&`\x13\x87\x0f\xfc\x97\x85\xa1\x93\xcc\xd4l\x8a`\xa8)\xed\x19\xcc\x04\xeaB$\xf9tlD\xff\xa6\xf5\x1e\xc2?U/\x91\x0f\xc0w\x1b\xbc7'\xb6f7\x9a\x19h\xb3\n\x03\x13\xbf\x98F!\x9e\xfc\x146L\xf6%\xe6os\xe3jwf\xa2P\x90\xdc\x80g\x96G!m?\xb3\x8c/\xbd\xc4Zz\x10\xe5@\xcdP^\xec\xa6<\xdb\xf1G<\xca\xa5\xbb3<\xb8\x7f\x86\x1d\x99\xeb|\x95+_\x0b\xad1s\x92\xaf\xd3\xd2Y9\x15\xeb\xa1/\xefF\xf9\xbd\xc6\x96\xe7d\xce\x82?r\x06\xfcx:\x1e\x1c=\x18\x05\xaf\xf6\x9c\x94\xbf|\xb2\xbbya}\xfe\xda\xe1\xd9\x13\xce\x95\xadYgy\xd6\xbftkq\xdf\xbd0\xf0W\x97\xceF\xd7\xae\x04\xa1s\xe1\xf5\xd3\xab\xb7V\xf7/]8{r\xd5_\x1c\xf0\xf3si/\xbctzu4\x9c\xf5.,\xbe\xbcvx\xfa\x84w\xc2\xcd\xbd;\x97\xf2\xde\x89\x8b\xe1\xda\x9d\xd5\xfdK\xcb\x8bc\xf7\xc4\xb5p\xd5?;\xef\\\xb9|\xe2\xf5\xd1\xe9\x93\x9b\xdb\xab\xfb\xab\xcb\x8b\x83K;\x8b\xfb\xab\xcb+\xfb\x97\x96V\x07\xee\x85\x8b\x81;\x7f\xf9\xd0\x1b]>\xeb\x9e8\x1b\\=\xb1\xb5}\xf5\x8d\xad\xb8wg\xd6\xe7+s\xf1\xb5s\xc1\xbas\xe5u\x7f\xf5\xfczz\xf5\x8d\xf5;\x9b\xdb\x17\xd3k\x17.e\xee\xe8t\xda;\x1f\xe4\xd7\x0eW\x07\xee\x89\xadS\xbd\xf3\xbb\xa7WG\x17\x87W\xe7\xb3\xd0\x1d\x9d\x9e\xeb\x8d^\xcf\x9c+s\xc3k\xf3\xbb/\xaf\x9e?5\xee\x8dv\xbf\xb3z\xbe\nw\xcf\x9f\xbe\xe3\x88\xbe\xe6O\xbe\xbcz>\xc8\xc5\xdfW\xaf\xec\x0f\x9c+\xa7b\xef|0\xec-\xa7\x83\xab\xa3s\xb7\x9cy\xef\xb0w\xe2r~mi\xee\xf0\xda\x1bg\x83\xabo\xbc^W\xde\xdf\xbcup\xcby\xe3\xe2\xad\xde\xf9\xdd\xc1\xd5\x13\x83\xd3\xab\xb7v\xf7W\xfd\xb3\xb7\xf8\xce\xac\xbf\xbe\xb3\xe8\xaf\x9e\xbf\x16\xf7\xce\xef\x9f^\x1d\xc91\xf9\xab\xe7O\x85kW\xce\xcdz\x17V3\xf7\xc4\xd6ao>\x0b6\xb7/~\x87\xcf\xaf\x8f{\xa3k\xf1\xb5\xc3S\xb7z\xf3\x07c7\x9c;\xbd\xea\x9f\xcd\xaf\x1d\xce\x0d\xbd\x0b[\x87ko\xac\xcf\xba\xa3\xd3\xc9\xb5\xed9\xb3o\xfcDv\xab7\x7fj\xe4\\qso>\xd8\xf3\xce\x0fO\xf7\xb7W\x07\xbd\x91\x9b]}ck\xd6\xf5\xe7\x0eQ\xdb\x87W\xafl\xc5\xde\x1b\xeb\xb8\xdc\x1d\xef\xc2\xc5\xb13\xbf\x9b];\x7f\xee\x8es\xfe\xdc\xa1;:w\n\xd5\xdd\xbb\xfa\xc6zt\xf5\x8d\x8b\x87W\xdf\x08d\xfdb\xfc\xab\xb7\xd6wv\xe7\xc4\xffV\xfd\xb3\xa6-\x18\x93X\x93\x15\xb1&\x87\x9b\xdb\xabw\xd6K\xf5\xd6\xael\x0d\xdd\xf9\xe1\xd0\x0d/\x0e\xc5z]\xda\xb9:\xbbvk\xef\xce\xa5;W\x0f\xd6\x97/\x1d\\\xba\xf3\xfa\xfc\xfa\xf2\xca\xdc\xea\xf2\xee\xfc\xda\xad\xbd\x13\xebw\x06'.\xed\xbc~g\xfd\xce\xe0\xf0\xd2\xce\xa5\x93\xab\xb7N\xber\xf5\xca\xa9\xb8w\xe5\xdc\xec\xb5\xcb[\x87W\xaf\x9c\xbasmt\xfa\xb0\xb7}V\xae\x99s\xe5\xe2\x9cw\xfe\xf2\xc6\xd5+sb\x8dg\xdd\xd1\xb9\xdc\x9d\xbf6vG\xb3\xfe\xea\x85\xadS\xae\xc0\xa1\xf0\xe2\xd8;\x7fn\xf6\xda\xf6\xea\xe0\xea\xfc\xb9\xf4\xea\xec\xdc\xf8\x9a\xc4\xad\x83\xb87\xbau\xf9|\x90]{\xe3\xd2\xe9\xd5[\x8b\xdf\xb9\xb4\xbd:\xb8v\xe1\xb2\x98\xf3\x81{\xb8:\xb8:\xba\x1c:WN\x9e^\xbdu\xf6\x8eX\x0b\xc0\xab\xade\x81g\xde\xf2\xac\xef\\9\xb5w\xed\xca\xb5\xb87\n\xc4X\x8en.\x9d\x1e\xf6F\x81\xd8\x9f\xe0\xf2\x85\x8b\xc3^\xb8>\xea\x9d\xb8\x98m\xde\xda\x1f_\x9d\x0f\x0e\xaf\xce\x1f\x04\xe2oq\xe66\x07\xd1\x99\xd67D\"X\x8a\x82\xc0\x89Sx\xbab\xcd\x0f\xf7\xe4\x1f\xe0\xcb#\xff\\\x0d\xe3\x1c\xfe\xda\xe1\x07\xd9b\xc2!\x0d\xea\xd9<\xcb\"\xe0\x16[\xd2KX6\xa5\xfe+\xb3}\xcb\xb7{\xeb\x82\x11\xa5\xff51Ch\xcf\xecW\xac\xafS\xf6mF\x10G7f3i\xf4mF\x90T\x01H\xef\x81\x02\x10#\x88\xab\x00\x15#\x88\xf4\x13\xb7\x9b\xbf\xbf&\x87m\xdaqLx\xbd\xb10p\xab\x85!3\x16\x06\xae^L\x98}\x95\x85\xec\xbb\x8c\xbf\xca\xc2\xa3G;L\xc5\x0d\x17\x16\x86\x10\xa9\xe1jb\xd9tI\xa3U\xe9#G\xd0\xac:3\xb7\"?l\xb7X\xab3\x93%\xfe\xa8\x8dEg&\xb5\xfc2f\xd5wd\x96#\x9b\x14\nLl \x99R\xdbSb\x1c\xc9\xa8a\xa4|G\xdc\xe9(\x99\x05\x8a\x17\x12K]\xec+\x1aIPj\x0b\x9e\xdfE6\x85\xccj=\x98`9\x98\xd6j\xa0\x11\xa4\xd0\xd6\xebET\x95\x834\x0f\x82\xd4M\xb8\xed\x81)\xfd\x0bM\xc9\xfa2\x96\\q\xbc\xcb\xae\xb7\x8a\xf6e&\x9d<\x08j\xdf\x1e\x93\xc9\xec\x8cg\x8e[k\xf5\xe0 \x88B4\xaf\xad!\xed\x84\xd4J\xf7\x9d\xc1\x80'\xc7\\\x8dn2\xabN\xc8^c\xadcr(l\x81\xb5\xea\xbc\xc6\xa7\x1fG\x9b>3\xe97\x99e\xdc\xc0I\xd3u\xf9XZ\xdc\xf6g\xcc?+\xafj\x95\x7fw'\xbb>\xde\xe8Tb\xfd\xdb\xae\xc5\xceR\xa5\xde\x1e\xf1\x97\x1bE=?\xe0bI\xaa\xfb\x9c9\xbd\x80g\x0b\xacu\x0c\xfeB`\x8f\xa7{Y\x14\x0b\xb8\xfa\x13\x15\x08\x9cd \x9a=6\xf4JW\xb3\xafV\xe8A\xf0;J\x00\xbf\xdf\x1a%\x18\xfa^CV8\xa0\x01{\x9c\xc7K\x90\x8d\xb3\xa1=I\x0b\xf8\x0c\xa0\x93\xd0\x02\x01m\xba\xd2\x9bB\"\x88\xf8Sb\x05\xf1\xdb\x90DC\x0cE\x90\x8brw\xe2\xdf\xd0\xa2|\xabQ!\"k\x19\x94c-\xd9b\x8b< k\x86%\x93\xf1\xbe\xf4\x12;\x12NAe\xc0\xb6*C\xe8\x9b\xa9\xcc\xf5\x1a{\xb6\xe1\xd89\xf3C\xe65\xbb>z(\xedG;\xefL\xd2\xf6\xf5u\x83W\x1b\xec\xa4\x7f\xa2\x83\x1c\x1e\x0d2F\xdc)L :\xc8\xa9\xa85\xb1'\xa6z\x0b\xd8w\xd9\xdc4}0\x99\xd4Q\xbe\xe5\xd2\n\xa3\x90\x0b\x02=mT\xad\xa0\xea~\x98O\x91hob =\x84^\x10\xb9{0\x86\xae\xf9\xe8F\xc11\xf9(\xa5\xfc\xde\xd8\xd6\xf3\xda%t\x0cW\x8c\x0c%\xd7K\\\xc1\\\xca8u\x88=\x11\x97\xbf0\xa7J\xb3\xc3\xa0\xf6yl\xfd\xf3\xfc4\x0e\x9c\xc3\x05\xe9}\xacv\xd1\xf2nG\xf9\xd7`9+1\xc7\x9a\x14J/\x86\x19v\x8d\xc2\xf3;\xb6\xf3\xe2\xd8\xce$T\xf4\xfc\xb1\x1d\x0dK|jZ\xc9\xa9\xa8R\x16\xa1Z\xfb\x89\x13\xc7<\xa9u\xd2{!\xd8S\x1c\xc4vI\x85\xfe\x1d&}}\x98\xd4\x93\x8b\xfeU#\x93\xea\xe5+\xc5\xa5\x8e\xfe&\x98?\xcd\x91Y\x1af\xabF|.\x19t\xeaQp\xd2\x82f\xfc s\x12\xee\xb4*\xb7\xec2\xb5\x936\x1d}\xf1\xc6}\xd1\x02j\xb9r\x86\x8c\xa1j\xaa3Tw\xa1Ws\x80(\xdb\xd4\xe6\xab/z\xb0dV6(-\xc7b\xe9b\x08\x85lo\x81\xeb\xe8\xcc\xba\x17 \xd4jB\x00\xa7<02\x15&\xfc\xb5\xc0\xf8\xcc(\x0f2?\x96V\xa7\xeb\xad\x96\xf4\x0bo\x89S \xaf\xf6j\xb3\xac\xaa\xa3\x17Q\xa4\xedZ/~\xf5\xef\x1bC\x13\x9e_\xa9Q\x0f\x0d^\x16\x1d4\x14\x06\xedF\xafj}\xb9\xa4hte\x14g\x87\xb2\xdd\xfa\xe2\x91\x1e\xab\xdc\x17\xd8?\xf9<\x12{\xcd\xfe\xbd-\xb3u!\xc8\x17\x15\xfa\xc4\x81jt\x0f)Q\x16+\xf9\xab\xad\xa8\x17\xaa1\xab\xac\xc6\xb6\x86\xe5 \x97\x86N8\xe0\xc6?\x05\xfei-/P\x94\xbdV?\xdd(V\"n\xfdt\xd5\x80Z\xf6d\xd6w\xbb\xacu\xecX\xab\xa3DWA\xf6\xaaq\xca\xd3\x054|\x99\x012}R\x1a\xa2 Y1\x91m\x999\xb7)}\xfd\xddnQ\xe8\xb7\xc9\xc2\n|92\x87\xac\xfe\xd5\xa3T\xbd\xd7\xa8\xda\xab\x86\x93BM\xcb\xd4\x81\x9e\x99\n\x8a\x95\x9b\x9a\x18\xf2\xc9'\x91\x1a\x08\x9e\xd6m7\x93\x83p\n*\xe3K\xab\x02\x84\xd7+N3\x939\xc9\x80g3\x80Ei\x83\xf3\xb43\xe1\xa5\x1b\x01\x8f\xd8k\xcc\x9f\xce\xd0\xaf\x7f\xc6\xb7\x06\xe8\n\xb7\xfb\x91\xdd}\x9e\xe0~\xd3\xa4\xc4\xe7\x9a\xf6\x04=\xd4\x93\x97\xe5\xba\x103\x04\x81!\x13\x0f\xbbS\xd3l\x17\xdc\x1a\x12[\x88>\xc2\xff\xeaR\x8f\x85\xd0`.\xd8\x9a':A\xe8g\xbfe\xc1\x9f\x91\xb9\xb2\x17\xc2\xec\xd9d\x86\xcf\x9e\x83\xe9\xb3)\x88\xab\xf3e\xf4\x00\xe8 X`\xad0\x8ab\x1e\xf2\x84\x85Q\xc2\xfb\x9fCe\xd5e\xb0\xce\xb6\xd1\x8c\x98c\xf3\x04\x9d;\xf4\x03/\xe1\x96\x90\xeeIK\x0e\x9a\xbc}U'\x9a\x8d\x86\xdc\x1f\x0c\xe5c\x13ymR\x18\xf1\xebE\x89\xc7\x93\x05eUj\x10H\x9cd\xe0\x87\x0b\xac\xe1\xa1\x92\xd8\xf1\x95\xfa\xf2O\xc9\x04\xb0\x1ee\x8b\xa1?r2\xee} \xc9_\xdfN\x17'\xccO7\xc4Y\xf5\x1a\x84\xc2\xb1\x8e\x19,\x1fL\x85\xf0\x82\xb1\xd4\xe2v\x18\xa5n\xe2\xc7\x99\xbe\x00\x98@6\xef\xda\xce\xc1oO\xe5Q\xab=I\xdb\xd1\x0b8I\xdb\xa9'\x11\xac\xb41\xec5p:\x0e\x95\x8f1,\xfc\xc4\x9dI:F\xe3!\xe8by\xb3\xe3\xc5\x8b\xa6z\x15,\xa2\xa9\x1a\xc6\x82v\x00d\xec\x9b\xe1\xffK\x9dp\xbcZ'\x1c\xcf\xe6j\xe3\xeb*6\x1f\x1c\xcf\xe6j\x93+\x8057\xa2gs\xb5 \x14\x80\xe4\xecw\x15\xe0\xf4+\xa71\xa8\xaf@sd`\xb1\x86\xd8\xfdt\xbc\xaf\xc7OG\xffE\xb4\x91\xe7\xa5\xf5E\xfcQ\xd2\xb5\xa5 \xc1d\xbc\xd6\x8c5!\xee(\xa8\xc4\x1d\xb9\xe0\x15\xe4B\xdc\x91{\xf4h\x87\x05\xd7\xdd\xaaW\x90k\xb9\xe0SK)\xa8\x866\x99\xe5\x84\x11\x81\xdf\x19aF\x115\x9b\xd5\xc5\x1c\x052\xe6(\x99\x19\xf0\xecR\xe4\xf1@HO\x13E\xec\xd2\xf8\x94\x17?7^\xfc\xad\xdf;^z\x15\xfbxKf\x93+2\x87\xfd\xe1\xcc\x1f\xfc\xde\x0f\xca%~p\xfcx\x97\xb5\xa4\x05\xc0\xd6\x96k\xd2\xd8\x1eO\xdd!\x1f9\xa4\xc9\x9aB\xbaQ\xd0\xca\xc8\x14\xee\xaaIo\xf1\xfe\xb6\xac\xf2<\x93N\x14[\xab\xbc\xbf;\xd3\xf7C\xafx\xde\xdbf!\xb8\xdb\x85\x9c\x14\x84\xa1'\xc4 \xa5V8H\xad\xc2\x81\xf3<\xc2\xc1\xd7\xca\x18Uj!\xb9=\xcdJ:\x9f\x98\xff\x94)2\xca\xa7}\xf9\xd8\x81\xc2r\x83\xebK\xe5\xb2T\xc2o\xe7~\xd2\xc4\x99SY.l4\xd2\xb9\x8a\xcbo\xf1~}\xa1\xbe\x99\xc3f\xeds\xf9L\x11`>\xa3nz\x9b\x8d\x832\x8dd\xbb\x05\xecN\x9e\xe4V\x83\xb9b\x08\xa5%\x95\x9aXx\x0c\x857\x13\x7f\xe4g\xfe\x98O\xac0bgX+\x92#i\xd0\x1e\x06\x82\x04\xc2\xab\x902)\xd0\xef\xff~\xc2\xfbuna2 \xa9|\xccx\x00\xe1\x0f\x1a\x07\xcbt\xab=\x10\xb4\xec\x88S\x14sJ\xc5\xccIo\xa7P\xcc\xb8\xa3\x04\xb5\xd6\xdcI\xa1~\xe5[\xa2\x91\x18\x06\x93\xff\x7f,\xf3\xb3\x80\xd7Z<_`\x7f\xd0\xd3\xcd\x9b\x19?\xc8j\xfb\x8b\x05_\x10\xbc\xa8\xb6c\x7f4h\xec7M\xdc\x05\x16\xb6O\xce\xcd5!\x95V/\xe7g\xe3\x83\x86\x8d\xdf\xf7\xbdl8\xb9\xd8Du\x96\x19\x15t\x8d\xf7E\xbfs|4\xe9\xa5=\x95\xbcL\x92\xc2\xc0\x11\xd8<\xa1F/\xca\xb2h\xb4\xc0Zb\xb0\xb5%k\xe2_\xea\\G\x04\x15=\x94\x89\x1a\xfctcq\xfbD\xbbS:\x07\x1e\x8f\x13\xeeJ\xcd\xad\xa6z\xba\xef\xcbL\x84\xae1:J\xbe\xe9\n\xa5\x8c-\xb0#G\x06]y\x06\xcb\xa7+;\x8c9\xbc\x997j2\xf9\xb8N\xca\xcd\xd9]h\\\x99 \x87\xc7\xa3\xb6\xa1\xc6\xe6\x18Bo5\x86\xc6:\xcfelb*\xc0N\x90\xdc\x05\xd6@\x9d\xf5\xaf\xe0F\x8d\xf7)\xfa\x07\\\xa6\xf1\xa12\xfd\x0b\xe5\x14\xa7xL\xbf\xc0\x85\x05v8\xb9\xb8d;\x0b\xccm^\xb4\xa6\xcc\xb1\xb0\xff\x8e\xe0\x0b_n\xfb\x87_r\xfba\x08/v\xf7\xff\xf1m\xa8\x96I\xea\x1e\x8b\xd3\xbf)\xf6T\xbd\xf8X\xbf\xa9P,\xccG=\x9eL,\xe6\x87\x19\x1fLQ\xae\x17E\x01w\xc2\x86rZ\x03\xfc2\xc86\xfe\x92vh\xa6\x91C\xc9\xa9\x13\xef\x02\xd9\x7f\xe9\xd8d\x85O\x8c\xe7\xac\xb5\x0c\x95\xb0s(\xb7d\xe70\xe6\xd4,\xa4\xd7\xa8o\xf6YZ\xa2\xb9w\xc9\x89\xa5Lm\x93\xd0\xab\x1b\x17\x9b\xaaB\x97i\xae\xa46o\xca*\x15\x95\xa3\\\x0b8Um=\xd8\xcd\xa28\x1c\xc4j\x99\x92\x88?\xa9\xa8\xa2\xf1E!q\xc4\xaaE\x8a}n*\xc5\x0fbG(\xac\xb1`\x87EA \x00hx\xd3\x14*\xf1VS.\xf0\xd3\xf2\xc2\x14\xa8Q\x8d\xa6\x87L\xa5\xbf]\xfb\x9e\x18Q\xea\x08\xdd\xfd\x8e\x0c\x90\n\xa8\xc1/\xb7Y\xd6\x84\xe6\xda\xce\xc1J\xd6\x95EN\xce\x9d\xea\xd8\x8c\x7f\xb2\xd0\xec)\xab\xfdO\xc2\xe6N\xd8\x0dm\xf9\xd7kh36\xb0\x19\xc7\xf3.D\xd1^\xbb\xd5\xe3\xfd(\xe1\xdbjy\x14\xd9M\x1b\xd3:\x9a{\xe6a\xc2\xfb0\xcc\x94g\x8bY\x96\xf8\xbd<\xe3m!\x80\xb7\xba\xf6\xdb\xbfN\xb74LlzM\xa7q\x89;\xfe\x87\xd7\x17\x8f]\xfbA:{\xec\xf4\x91\xd7~0s\xe3\xe8\xef\x1f\x1f\xa8d\xc5Ug8\xba\xda\xf5i\x98\x8a\x85\xd1\x88\"\xf0\x94\xae\xf5\xe2\xf2\xf2\xcd\xc5\x9d\x9d\xad\x05v\xbd\x05\x97\xe8\xadj\x86P\x92\xda\x82\xd5\xe6c\xc2C).\x11\xd3(O\\\x8bE\x00\xee\x19\x1a\xfc\x89\xfcBm8s\x06\xee\x0eZ\xd2w\xbc*B\x08\x95;mgE\xd6\xe6\xa4N{\xac\xbb\x94\xach\xabN\xb2\xe7E\xfbaU\xa4\xbbK\x0d\xac\x10\xbbq\x86\x85|\xbf\xb0c\xd6\x08\x8f\xc3l\x14\x88clg}\xd9a\x1c\x0d\x12'\x1e\xf2\xa4\xbeP/\xe1\xce^Z\x0f\x0f\xfcp\xcf\xef\x1f6\x17\xd8\x91\x9b\xbc\xc0Z7{\x81\x13\xeeY\xd2\xa8w\xd4EK;\xb3(\xd0\xae\xcc\x12\x96\xa3\x850w\xff\xafI\x15\x05\xf8\x9fq\x8d\x91\xe3\x8aa\x7fJ\x86\xa6\x01\x04\xb1FN \xd6\xeb\xd9Gx\xd7\x17/m.\xb0\xd6K\xa4|l\xf9\xba\x18J\xccy\xfc\xe7\xb84|\xbf\xf7!\xfd\xae@\x8f\x7fNA\x00\xf8K\nH\x83H>)\xf1\xec\xf1_P\xe0X\x02\xfe\x1b\x02\x90\xb3\xbbGvDz\xa6\xb6\x9e=z\x9f\x02d\x94\xac\xb5\xca(\x85\xf9`,\x02\x90\xe3\xc8\x16?\xb2\x03{\x12\xf8\xd8\x0e\x94\x07\xf2\xd1\x13;P\xf6\xf9\xe8\xa9\x1d\x08\xb3\xf8\x1b;P\xe2\xfc\xa3\x7fm\x07\xca\x85y\xf4?\xda\x81\x12#\x1f\xfd\x1b\nL2\xb9\x02\xbf\xb2A\xc6r\x8e\x0f\x08]\x01\x18L\xe3\xaf(0\x05\xfc\xbfGhE8HEo\x9f\xfc\x84\x02\xee8\x89\xc0\xe7g\xff\xfc?`T\x8c\x06\xd2\xee\xfa)9\xd0\x1a\x80[[\x8c\xe2>\x1c\xf5\x7fO\xaa(\xc8\xcf\xff%\x86\x88S\xf0\xec\xfe=\xf2Y\x10>\x89\x88d\xe9bID\x1fcJ\xe6\x00F\xdf\x7f@\xbe\xfbr\xc1\xee?$\x80(]`\xado\xe3Y\xc4qpxN1#+\xa9s\xe28\x89\x0ej\xc6-@\xfc\xb6u$\x8b\x89\xf4\xac\xb2l\x83\x06|\x80k\xa4.\x10\xcf\x7fI\x0e\xb1\x81\xfco\xa4N\xea\x0f\xe4\xc0\xef\xff\x8cT\x12X\xf0\x07\xe4\xeb\xe1\xa8f\x17\x04DM\xe6\x9f\xe3n2?\xf0$\x8d&L\xd1@\xfe\x07\\'\x17\x02G\xeb\x13\x82Q\xea;!!\xfbn\x14\xfa!\x1c\x14\xcc2\x9d}\x05\xf9\x08S\xf5\x9e\xe3\xee\xb9\x11\xd0\xab\xfb\xefZ\x80Z\xcf\xee\xbdG\xa0\x89\xa4\xbaO1}\xef9\xc9\x98\xcb\xb1<\xc0\xfd\x9du\x92}.1\xfb]\xcc\xbb{\x05\x08\xa3\x1a\x80\x80dS`/\xd9\x13\x80?%\xf3\xee%{\x99\x06\x92%\xab]\xeb\xb3 s\x90\xfd\x81\xcf\x98\xe7\xf6\xbc\xdby$\x97\x1dK\n=\xee:y*W\x0e\x8f\xec\xac\x04q+\xac\xd7\x08\x1b\xc5\xd9\xa1\\\xf4G\x98\x92\xf4\x04~X\x91\x83'a\x94\x8b:oc>qV\x82\x82\xc0Ok\xc0\x99\x9430\xf9\xeb\xa9\xef\xff\x0b\xfd\x0e\xa2\x0c\x1dB\xb6\xcf9\x1co\xd2\x89\x96\xb4\xc8\xbej\x00f6=\x7f\xe0\x02\x05~\x88\x05O\x01\x02\xd1\xf3\xd9/0 \x16\xb0\x1c\xaa\xe1\xc3\xdf\xf3\x07\x91\x17\xc1\xb9\xc4\xb2\x93\x80\xc5\x01l\xe4GX~\x12\xc0\xcc\x1fq\x80ZF\x93\xdeV}~D\xd0\xdd\x1f\xa4\x99#\xb9\xc5_\x90\xa9\xfb\x83,\xf1\xa5,\"\xf4&Q\xe6=rr\x8b2\xd0\xc3{\x98\xd6\xf4\xfcAnF\x8e\xa9W\xcf\x1f\xa83\xfa\xd02)s\xda\x1e\x92\xe5\xd8s\x92h_\x80\xde\xc7\xd4\xa2\x178\xee^\x10\xdd\xe1J\xb8\xfa\x10\xcb,\xb2@z;w\x12 \x7f\x0f\x0b<\x12\xae'%K`5\xa1R\xc2,\x0d\x968*\xa5\x02\xb8\xb5}\xf6\x0b\xb2;\xe5R\x89\xbaT~\xf6\x1e\x96\x02\xa4\xae- \xff\x023\x86^\xb077/\xeb\x90\x03\x12\xec\xcd\x9d\x94\x10BE\x82\xbd\x13\x00\xc1\xc2\xb2LO !\x98\xa1\xf5B\xb1\x18g\x9e\xfd\x183\xda^\xc8o\xe7\xbe$\x07\xf7\xff\xda\x02^\x07\x94~\x8a%\xc0^\x08\x80w\xb1\xbau\xd6\xc8B\xff\x07\xaebd!2nh\xeb\x01\xe9]_i\xdb@\xfb\x99\x0f\xe8E\xe6\x1a\x1d\xf4@J\xf9\xf0>\x05-\xaf \xc8\xcf\x7fa\x81\x04\x12\x82YT/:\xf0\xa0\x0eV4\x04D\xd6\xf9\x19^\x04\xd1\xda\x96\xac\x83%\x11\x01\x91\x07\xd6\xb2\x08\x07\x1e\xd4!\xa8\x10\x1dx\xb2\xce\xcf\x08O\x8f\x0e.\xc8*\x96\x01H2\xfa3r\xf6\xa2\x83\x0b\xcb\xb2\nVo\x05D\xb2\xce\x9fciD4\x06u\xe8.\x1c\x0ce\x9d\x9fa\x92,Z\xdb\x95u\xb0\xbe\" \x92\x95\xfc\x9c\xf0\xfc\xe8`\x08u\xb0\x02$ \xb2\xce\xcf\xc8i\x8e\x0eF~\x08\x04\xea\x01\xa1\xf2\xd1\x81&^\x0f\x08k\x8d\x0e\x0c\xd5}\x80\x15\xb5^t\xb0\x0b{\x8e\x95\x0d\x01\x01<\xc1\x82i/:\xc8\xa1\xce\x7fk\x81\x00\x9e`\xa5S\xb4\x06{\x8e\xb5N\x01\x01<\xf9\xa5\xa55\xa8ci-\x07<\xb1`\xddeY\x85\xd0\x92\xe8@\x9e\xfd\x9f\x11\xca\x16\x1d\\\x06\xd4\xb2\xec\xece\x89[?'\xb49:\x18C\x1dB\x95\xa3\x831\xe0#V\xb6Dk\xb0j\x844F\x07\x97a\xa5\xb1V'Z\x83:XA\x11\x10Xi\x0b\x0e_\x86U\xb3\xec\xf5eXi\x0b\xfa\x8c\xa1\x8e\x05y\xc6\xb0\xd2\x04\x0b\xeae\xe8\xb3\xca\x98\xf6k\xb2o\xf5\x80qO\xb2\xf7\x8f\xf1a=\x0bZ\x10\x95\xb7zF=\xfa\xdf \x84\x8f\x84p\xf7\xec\xad?#\x90:\xc9>Us!R}/\x8d\xc4:\xff\xe0\x07\x96\xefR\x85\xff\x90\xc8#i\x14\x0c\xd3\\\x02\x7fEHv\x1e\xc8m{\x93lu\x1e@j1\x1bH)o\x7fj\x01HM\xf9 \xb6L\x08\x08\xe8\xcax \xce\xe6F\xdf\xb35\xa7@\xb8\xd6\x92\xb6E~\x8a%3\xd7@~J\xea\x80\xfc\x88\x89\xbc\x12G\xefar\xe9:\xb16ta\xf9\xcbu\xe2^\xa2d\xc3\xc7\x98\xd5\xb9N\xac\x9a|\x8c\xf5\x7f\x01R\xb5\xf0\xe8\\'VB\xecc\xcc9\x96\x9c\xd8\xcf\x9c`\xd9\xef\xf7y\xc2\xc3\xccw\x02\xc9\x14~\x82w\xdaubPY\x1e\xff\xe7\x7f\x8f\x1bq\x9d\x04\xb6\xf3-,1\xbaN\"\x15\xd3_\xd3\x05;\x0c\xf8!h\x17X\nqu_\x8f1\x82.\xe9\xf6>\xc5<\xd35\x10Z\x87{\xbe\xd4\xc7\xc9\xb2\x18\x08\xe6YKJW\xf8\x14\xa3\xb4\xab\x01xc\x96J\xaa=V\xc0\\7W\xf3\xa1\xa3\xce\xe34\x95\xc7\xf41f\xf6K\xb0e\x9fb\xb3\x8b\xab\xbe\x93\xfdW\x93\xf9\x18\xcb\xa9K\x02\x1086\x90[R\x1b\xb1\xce\xe6J\x7f\x86\xd6\xc7\xf8\x84.\xf10\xe3\xc9\xb2\x1c\xc4\xc7\x98\x1c\xb9\x12\xe8\xd9\x81K\xfd\xc4\xbe\xdfZ\x9f\xc3D|\xe9\x02\xa8\xd6x{\xdc\xa1\xfc\xfe\x0fdC\x87\x1c$\xe5\xbf\xc4b\x98\x84\x8c\x9c\xc4\x0e]\x1a\n\x12\xfa9\xedF\xaa\xcd\xa4\x17\xb0\xe4\xfd\x82l\x00\xa0\xc6\xaf \xd5\xf0\x13W\x91\x1a,\x9f\nP\xc0\x9d$\x89\xf6\xb56\xf2\xce\xffY_\xc6\xe8\"\xef\xfc_\xd6B\x1eX\xc4\x9e=\xc0\xb2\x8a\x02k\x0d\xf8\x01\x96K\x14\xdcS\x06\x9d\x07X>Z\x92\xf0e%\xd0c\xd9E\xd5\x16L\xf5cL\x9c\x15l[T\xfcs|\x9a\xa0\xd9KF\xd2\xc3B:\xc07\xb5\xb0\x87%u\x00\xef\x18y\xcf\xb2\xba\x92c|\x88\xb5z\xd7\x07=\xd3\xb6\x1f}}\x8c?\xc2\x07\xd2\xf5\x93\x11\xd8^\x9fb\x0b\x82\xeb'\xa9B\x8b\x0f\xb1\xcc\xb5$\xd4\xb7}?\xe5KQ\x98Ey\xb2\x1af|\x908\x923\xde\xc3\x87n)\x88R\xbe\x94'\xc1\xe1r\x94\xf7\x02\xfez\x1ee w\x90-1%\x8b2dc\x82\xbc'\x97\xe6\x97X\x0c\x93\x90\xdc\xcf\xac\xc0\xa5\x08\xac\x89\xcf\xee\x91\xe3\xad \x0b\xb6\x1ap\x03\x83Ey\xd7\x80\x88\xfd\x16@\xb7k`\xa3\x91 Y]\xdbw1\xec\xff\x8a\x02\x80\xd5\x12\x16\x14\x8d\xe2>L\x07Kb\xae|\x19a\xc4\x15\xdd\xb6\xd5\x0c\xf8\x01`\xd7\xdbx_\x8d\x99\x90p\xca(\x1chv\x8bI\xddR\x14\x0e\x92\\ux\x1f\x0b\xbaK\x05\x0f!\x18V\x80\xf0\x11\xb3\xe1\x15-#\xb5t\xdb,\xb4\xfaNw N\"\xb8\xd6\"\xacI\x82r7\xb3C76\xaf\nR@d\x9e(>\xac\xfb\x9e\x02g\xc0\xe7q)\xca\x05?i%\xa2e\xa6\x90\xec!\x99M\xee9I\"W\xe7}26 \x93\xeb\xf3>^\x1f7\xe7\xb1\x84<$s\xcdy*9\xc7C\xacM\xb9y\xa0\x97\x1b\xdbv\x01$\xa7\xf5>\xd6A\x96\x94\xbd\x95\xf0i\xf8~\x0f\xab\x9an.\x84b%\xf9\x126\x92\xc7J\xfe&\xd7:nn\xe4e\xc2\x96s#/\x13\x11+\xd7\xf2\xf2\x03K\x83\x11\\\xe4\x91c\xaf\x84\xbc{O,\x02rn\x90\x92\x90T \x92\"\xe0\xfbX\x8dv\x05y\xe7\xb7\xe3\x84\xbb5\xdb\"\xe1i\xee\xd6mN\x12\x1cjc.\xd6\x80$\xb00\xe7\x12\\\xcd\x93D\x1a\xe6?\xc6J\xb7\x9b'c$\xb3\xd0\xad\xd7E\n\x91\x85N\xbc~d\xea\xba\x87\x0e\xaa|\x83F\x04V}\x83v\x0f_\xc5\xb8\x87\x81\x9b \xda\xf3\xec]L\x90\x97e\xaep\x01z\x13Sc\xaf\x00a\xc1\xd4s\x02}\xa3\x81\x0f\xd8\xb2\xdeh\xd2\xdc\"\x00~\x8aq\xde\xd35(\x00\xc4\xb171QXv\xd2!\\\xb0\xe1\xbd\xf14\xe4\x01f\xea^\xc9>\x8f\x97\xd5\xeb\x05\xd2\xd3\xe0\xd7X\xc8X6Z\x15\xde#\xcf@pc\xcb \xb3cv\xe2\xc1g,\x1e,\xdb\xb5M\xf0\xf5\xf8 >\xb3\x9e\xd7\xb0]z\x1d\x7f\x8a\x8f\xf3\xf2r\x94%\x0e\x984\xdf\xc7\x94\xd7\xf3\xa2,\x05!\xe41FQ\x8f\x0b\x0e\xff1\xd6\xe7\x969p\x1e\xac\x18,\xf3\x00\xae\xbf\xc8\xdc5\x00\xcf\xde+\xe9_\x18i\xbd\xbe\x9f\xc2\xd1\xf9\x00\xbb\xe0,k\x85 \x8f\xc0\xd3\x00\xb28\x17\xe0B\xe9\x03l\xeb\xf5\x86\x0ep\x8a\x9fb!Y@`=\xb1\xcc\xb0\xec;n\xe2g\xbe\xeb\x04\x8bun[\xa52\xa06\xfc\x1a\x0b\xa7\x95\x12B\xd6\xd5mQ,,J\x9eW\x9eT?\xac/\xb2\xa3\xae\xeb\x7f\x8d\x8dx\x9e\xefH2\xfb\x10[\\\x96}g\x14\x815\x86\xc0\xbc\xc90#Gcs\x9e\x80\xa75\x10\xb9h\xd8 N\xad0\xe4\x00\xf8\x03\x07\x04\xe3\xdf\xe0U\xf2\xfc\xd4\x97b\xeeCL\x18=y\x13\xf4 \xc1n\x7f\xec\x83c\x83\x1d\x12\x85\xc6\x94\xfe\x90 \x9a?\x8e\xc2\x03+h\xf9\"\x9ct\x8c5\xde-P\xda\xb1\x1c\xe3\x05n\x94\xc8\x81\xbf\x8b\xf9\x9b\x17\xb8\x89|b\xe0\xd9\xbb\x98\x0f{Q\x10H\x94\xfe}\xdc\xbd\xb9\xa9\xc2:\xb2gD]\xacH*c\x06\xde\x0e\xaf\x06q\xa3Li\xc2?&(\x16eJ\x9f\xc1$[B\x94Pq\x1f\xd3\xa0\xe5([\xb9\x9d\x83>8+:f\x01S\x0c\xae\x01\xd8Z\xc1\xb5\x9d\xf4\xd9}\x8c\x1f+\xb0hX\x0d\xe5\xb0fX\xca\xe1\xcbJ\xd2 \xaa\xc9\x8a\xba\x05\xc2\x83\xd5Fz\"cpU\x01\x1fR8\x9f?\xc1R\x1c\xef\xeb\x860cZ\xd1:\x066\xc3p\x0d\xc07FR\x8bz\xf6\x04o\xc5\x8a \x8b -\x19\x08fy| \x89\xf7\x132\xedA\xaa\x8e\xca\x13l\xe4\x05e\xed \x96\xe2VJ\x86_\xd2\x7f\xe0\x87\x19OdW\x7f\x86 \x13\x87K\xed\xb71\x93\xe2\x01\x0c\x0d\xef8\x0f\xcc\xd0\xf0\xda\xaf\xe8\xe8\x0b\xbc\xc6\\\x03H'B_\x94c\xc6\x04IBR\xb8\x86%@\x99ky{\xe4\x04\xc1\xb6\x91\x08\x7f\x81\xe5\xe3B\x17\xb5\xd7\xbf\xcc\x13\xdc\xc6{\xd8Y\x84\x8fRI{\xdf\xc4\x9cS\x00\xe6NH\x10V\xa3$H\xba\xbe\xbdI\xfa]?\xbf\xc0Z\x9f\x91\x83'-\xef\x9f\xe1\x0b8\x1e\xaa\xce1G^\xd1.\xfe\x0474\x80`\x87\xd1\"\xb0M\x8e\x1b-\x82\xe0`\x0cT\xf4!\xc1\x80\xd8IR\xe0\n\xd8*\xc3\xb5\xf4\xfe\x18Sx\xe5\xb4\xfb9&\xd6+\xc6\xd9\xfbs\xda\x8f\x01\xe1Z\x02$\xb6\xf67\x04p[_\n\x12\xba\xc7o\xd7\x931~[y\x97\xdc\xc7k\xcdo\xa7\x81\x13f\x83,\xb1\x1fT\x00\x07<\xb5\x9f\x16\xa3\x07=\xa6#\xcd\x1dy\xc4\xce\xd8\xaah\xad\xdf6\xa0\x9c\xc3\xb5\xe8}\xcc\x92Vn\xe7~\xe0\xf7\x12?\x97s\xf9)\x16\x18JN\x946\x08\xd8\xae\x1ec\xa5\x81\xdf\x1e\x17\x1b\x8e\xa5h\xaeY\xe0\x07d\xc3\x13Mq\xf1\xa1_\xd1nA\xd8\x10\xc55\x00\xf3m\xaeI\x0e\xd1&W\xd4\xbe=\xc6\xd7&\xbcnCW\xc0tE\xf8\x06|&|i\xe7\x82\xa0\xdb\xb8[\xb0\x96~\x82'\xb0\xa2\"%\xc8IV\xdf y\xc9\x13\xe9R\xff'\xd8A\x8a\x1f\xb8\xa2\xc2\x11\xf2\xd9\x87\xad\xbf\x87\xe9\xd1\x8a\x80\xa4V\x10?\x88\xb9\x9b9:^\x86\xac\xfa\xca\x01${\xf0\x9d@^/S\xdeY\x14\xb03\xd7\xbe\x13\x04\xbe\xbc$T\x96G\xc2d\xcf\x81\x98\x80\xa5\xe6>\x88 \x98\x82\xf6\xf9Hu\xf5K|\xf3\xd0\xef\xfb\x10\xf8\xf8\x9f\xff\x06\xcf\xb3\xdf\xd7\x10Z)\xd0 \xdc\xd59\xcd\xe4\xb1\x9c\xd6\xd7\x00L\xe2\x8a\x01`5\xe2\x9c\x1f\x04\xdc\xc3l \x13\\(ec>X\xec\xea\xdf\x82\x9e\xfa\xb70 p\xc0B\x87\xc5\xaeb\x9e\x18\xeb\xfbA\x16J\xf4x\x0f\x9f\xd3~\x18 \x06\xf0\x9f\xc8\x96\x19\x96\x81\xf5\xb3\xbea\x19\xf8\x10\x9d\x8b\x92E\x10'\xee\x91=\x88\x12\xa7\x1e$\xfdX\x1eb\xc3\x87\x00\xc0\xbd\x00\xe6g\xe7\xa2<\xf1y\x92%p\x0bL\xe6\x14;I\xa6\xfd\x1e\xb0\x10\xdaO\x1cW\xba\xb3\x7fL&& \x92\xa9\xff\x04\xd3, \x12L\xfdc\xbc\x9f\x12rJV\xc2\xc4_\x82^\x96 <\x01 zE\x82\xb0\xe0.@\xf30\n\xb2 \x02\x04}aF$@\xd2\xe1\xfec\xac(I\x08T\xc2\xfb%A0\nl\xfa\x13\xa0\x93P\x0bK\x19\x02t\n\xa6\x85e` \x82\x06\xb1=W\x80\xbe\x03 l\x13\xe8'\x0e\xb0\x97\xb7\x08%HT\xe8\xc3\xbbX\x08?\xa7y\x05\xd9{\xa3\xfbb\x81p\xa0U\xaf\xff\x07\xf3\xe2\xf3\xca\x08\xfd9\xdevm\x9d\xfe\x1c\xb3\x17Y\xc3\x13\x12\x08^\xb8\x81\x81\xe0\x15\x18\xc0\xcd\xed\x13l\x970\xa2\xc9\x13L\xd6\x00$\xf9\xfb\x13L\x8e\x15\x0c\xe6\x8a\x91~\xc0S5Yz\xf3.`0\xc8'\x988\x9c\xd7\x1c\x0b\xab\x17\x03\x0d\xc0\xec\xf7\xbcTd\x1fb\xda4\x00? ,\xac\x0c\x065\xc5\xfd\x11l\xce\xdbXx:\xaf\xaeN0\xa7\x1e\xa8\xab\x13\x82qpc\x80\x9b\x19Hg\xcfgO\xc8\x1e\x83\xbc\xf2\x04s\xaeApK~\xc7\xd3\x1d\x84\xea\x00\x92\x05\n\x8b\x98a\x0b\x10\x10\x98\xec\xc5\x9ckud]\x96U}\xaf\x82\xcf\xb4\xaf\x01X\xc6\xf0G\x0eh^\xb6\xb6\x06~\xe8$\x87\xab\xf6\xd5\x199\x83@\x9d\xe8\xb71j\x0b`\xec@\xca$\xbaw#\x99\xc5\xb4\xf5)\xd6\xd4\xfd\x91\xb4<={\x80Y\xb8?\x8a\xa5\xc3\xec\x7f\xc2\xf8\xb4:\x8a\x03\x1f\xd4\x1f\xe2`\xe2\x87l\xc1v\xf9\xe5\x87\xae2\xb0\xbd\x8d\xafc\xcc\xde\xdd\xc3\x8a\xb7\x84\xa8\xd0\xfd\x0f\xb1\xbe\xec\x87*\x87\x06\x99\xd1\xaa\xc2\x12\x82q\xea;\xd9\x8d0s\x81\xc6<\xc0B\x9c\xca\x08\x0d\xb1\x1a\x98\x81V\x9c\x97,\x8d\xf2\xa4\xae\xd9Uy\x11\xc8M\xf6$\x92X\xc4\x0f\xb3\xc0I\x86\xd2 \xf7\x11\x16\xda\xfc0\xd3A\x14\x1fa!q5\x1c\xfb\xa9/\x1d\xac\xc0fb![\xba\x88\x89qz\x0bK\xe5\xab\x1b@I\xb0m\xd5\x8f@\xf4!X\xabo\xbc0\xc1\xf35\x00\xdf%\xac\x1a\xae\x86\xf9\x92o \xd8\xac\xb5\n'\xf9s\xcc\x07\xd5 \xff\x1c\x0b\x16~\xed*\xf9Z\xca\xfe\x18\xb3\xf9U\xcd\x15\xc9\xe12\\\x11k?\xdaC\x92\xe2|\xea\x87Z\xf0&49\xf5A\xc8}HF\x9d\xfa`#~\x88\xbd_%DZb\x1fb\xca$@c\xfb 2\xfb\x0e\xeb\xfcS\x9f\xe2\xcbp\xdf@\x08\xc1\xcc\xf7\x00-\xb0\xee\xe1+\xc0?`s\xe8\xaa\xbaq\xc1\xac\xdbW\xdf1V\\\xd4\")\x9e\xfa-\x0d\xc0\xeb\xa8l\x1b\x18%\xc0\xb4\xf1\xf7xm/j\x06\x86y\xff-\x0d\xc02\xca-E6\xff_L\x1d/\x1a4\xc5\x87\xe4\x96\x81`}\xea\xa2\xc1!,\x94\xde2\x10\x8c\x90\x17S\x9e\xc0d\xf0\xce\xde\xd2\x90\x7f\xc0\xf2\xc4E\xbdQ\xd8\xa6uKo\x14\xe6\xf8\xdfw\xe2X\x9e!|\xe6\xf64\x00\x930 \x90\x97\xbfX<\xf9\xbe1\x8abo\xa5=\x03\xc1\xab\xf9}\x18/\xe9\x1d>\xe3\xbe\xbf\xafw\x0b\x0b^{\x1a\x80\x91zo\x90@B\xa8O\xb1\x90\xf5}\x15\x0d\x8cwdOE\x03cn\xf5}\x85qX8\xd9S\xd64,\x7f|\xdf`\x03\xa6\xf1{\x06B\xea\x18l\xc0\x82\xd6\x9e\x86\xfc9&\x9b\xc1\xa2\xd6\\\xf0\"\xae\x99\xfc\x02\xf88\x04\x06\x82W8pJ1\x04\xf80\x06\xce q\xe0\x16\x13\xb3\xff5g\xd4\xf3$\xbe`\xdc\x0f\x0c\x04\xabOk*k\xe6\xaf\xb0\xf8\x14h\x00\xdeM\x01\x80\xfc\x8e\x98\x11\x05\xc6\xb3\xccR \xcc\x8exC\xd7\x1c\xf9\xe2\x9a\xbe\xc4\xc23\n\x1cH\xb8\xf61f\xf0kZ\xab\xc7RK\xa0\xed\x00\x98\x85\x98\x986\x1b@\xc6\xf6\xfd\x14\x8b\x18\x12\xd2\x97\xec\xe0}|\xf9 `\n\x84e#\x01\x02\xe1\x81\xa8\xa2\x02\x14\xc8\x95x\x07\xcfH\x06\xd6I\x81\xe5}\x8a)\x89\xb6\xe7|\x80y\x8f\x80e\xb2\xda;\x98\xcb\xa8\x1b\xd2'\xa4\xa7\xc5\xcc\xf1\xa1'\x8a'\x06\x84\x89z\xe0@D\xf2\x13,\xfe\x0b\x00\x98\xa8\xfe5\xb5\x18\x05g\xd5\xb2\xbf\x8f\xa9E\xd0\xd3\x10|\x98\x03\x9d\xe4\xef\xaf\xb0n\x10\xf4\x12\xb0:\xfc\x91\x0d \xea\\\xa7\x80=9\xecGX\xd1\x16\x904\x00D\xc6\x1c\x12`2\x8f\xd1#\xcc\xac\xd6\x8c\xb7!V\xd0\x03\x03\xc1B\xca\x9a!\xbd\xf8\xf8\x05\x06\x82\xa5\xa4\xc0\xe5\xb0\x13\xefb\xd6\x13\xb82\x16\x15\xaf\xc1\x1a\x90F\xb2\xa5\xf0\x99t\xec\xb9R@}\x1f\xb3\x89\xc0\xe48\xc4\x84QB\xc0\xe2AN\x9d\x97x\xda\xe1\x143\xf1\xc0K\xf2T\x03\xc9.x`\xd2x\x87l5\x18!1 \x06\xf2r\x1f\x9fT\xe9\xf2/\x88\xcfY\x81\x07\xe01GhP%.\x80\x90\x81\xb5\xb2\x0d\x89R\x8f\x8a\x85\xc9V\xb7\xec\xedN(\x89)\x80\"\x04\xb0,g\xba\xd1\xc7\x90\x1cj\xd1\xd2\x12\xf7\x03H\xc7J\x91C\xc0\xc1\xf9\xbf\xbc\x14x\x19\xa1\x94t\xd7.\xf9\x8dc\x0b\x85.Ur\x1b\xc7\xb6\x9ej\x11\xed5\x8ei\x87(u.\x88\xa0\x8dw\xb1\xe9VLZy\xe0\xeb,\x7f\xc4\x1f\xbeT\x06\x02|\xdf!\xe7\x85\xf73\xb3|\xa0\x1ec+5\x0d\xf8 FaQ\xa4j+$\xf6\x99\x80\x14!\xadT\x8b\xa4\xb5[-\xcb\xa8iA)r>t\xa9\xf4v\xee\x0f\x8a\x1e1\x11\xb6\x05'`\x8a[\x8a\x9e!\xa1\xa4\nV,\x8c\x0d\x83\xab\xd8\x82%\x1d1\xd4l\x98p^\x84\x98\xe1\xd9\xc8FJ)\x1f\x1f\xe0S_.\xa0\x90\xe9CL\x9c\xcbe\x8c}\xf2\x01\x16\x93D)\x08\x92)\x0d\x19\x0b,P\xa8:-|\xa7\x0feJ\xa1\x1aXG(\x17\xd0\x07\x00\xeb\x04(\xda\x03\xe3.\x8d\xf4 \x82\xd0\n8\\S\xfc\x80\x0bi\xba\x19p\xc1CD\x1a}\xf3C k\xc9'\x80\x9e\xbe\xb4\xee\xbb\xba\x99#\xf2\x9e\xf1 x\x8c\xd7+(\xf9\x04`\xedM\xc1\xe4\x1a<\xc1\xb4&\xe0\xa9\x9a\xacE\xce\xe0\xa9r\\x\x82o\xd4\x03\x9e\xa6\xa5\xab;,\x81\n\xb0\xb6\x13`\x0dZ\xc0\xf8m\xe5\xf7jYc\x01\xd5`\xb25kO\xaa*\x14\xa1U\xa2\x08\x12\xb0 \xe1\x8a\xeeHrA\x94\x80\"\x95\xb8\x0d&\xcdC$\xc7x\x00k\xd9\xb6|\x06\xd7\x92GD\x18\xd0~:T\x1eOJ\x04\x92X{\x12\xa5\xc0R\x01=1\xb4\x91\xec\x00\xa4\x00z\x93X>\x12E3\x1f\x10\xca\x98:Z\xf9\xc6\xf8\xb9\xa6\xafF\x88dh\x8c\x92X\x98ZS\xaa5\xa1\x95\xb5\xdfk\xa4\x81\xc08}ac\x88\x80\x80`J8vz\xbbg\xb3\xc7\xa4z\x82\x041Rc] B\x92vb\xf8\x8c\xc8\x8b\x06\x82\xed\xbbk;\x0b\xac\xf5]\xfcQ\"\x05\xe5\x9a\x99\xa5l\xa0\x9d\xce\x08\xdd6Ng\x84\x86d\xb5\x82\xa4T\x8c\x16l:QP\xa8K\x84=e\x9a\x9d\x7f@hQ\xc9U\x8d\x98v4K&t$K\xe0:\x97hK\x81\x0e1&\x89\xf3\x83,\xd1\xeerdRy\xe2\x19\xc3\x0e9\xb3ybB\x90\xc9\nV|\xd0>\xb2H\xf3\xda\x07\xcd\x02S\xb7\xfa\x1f\xe3\xdb+\x13.\x83g0r\x80\x16\xfc%\xd6\xec\x04\x80\xc3\xe3\x1b\x04v \xc4\x89\xf71\x91\x1e\xc1\xf7w\xf0\x94\n\xfeT\x032\x96\x0dl\x1e\x03\xb0a)Xa\x03\xb0\xb2y\xe0k\x92\x91\x93\xec\x01\xc5z\x0f\xdf\xfd\x8et\xb6\xc5g\x1fa\x99\xf9\x12H\xa0\xd8\xbc7\x82\xcf\x98\xbd\x8eL\xca*l\xe5\x18\xe9H\xe6{\x98\xb1\x8f\xb8\x93\xe6 \xf7\x8a\x07\xb6\xb0\xf2q\x89{~>2Ndoa\x82{\x89\x07\x81\x1f\xeak\x01l\xf4\xbe\xa4\xd5\x01l\x88\x1bi\x00>\xe2\xa3\xa1\xdc\x9c\xb7\xc9\xea\xfb\xae\x0c?\xfb\x18K:*-\xe8=l(\x19\xf9\x9e\xfd\x8d\xa2\x91\xef)\xba\xf0\x14\x13\xd6\x91\xef\xd5\xa4\xcf-\xb2\xc0`\xb2.!\xf0\xc6\x16^\x1b \x82\xd1a \x0e@R]\xf9\x08/\x81\xcc\xc9\xaa\x13\xaf\xde\xc3\x8cq\x14\xb8\x90\xad\x10\xdb\x8fG\x01\xb3\xb4g\x1e\x1a\xa3\xb0\x0c\x1e9\xf8%\xa6M\x12\x02f\x85:\x18\xf8\xfc`\x1f\xbb\xb0'\x9d\x8c?\xc6\xd4:,R\xcc\xd3\xb1\x97r\xc9S\xa0\xce$\x89\x97}]\xdf\xe5|\x86\xb7*4\x10lz_\xd7w9\x9fa\xae\x11\x1a\x08\x96:C\x93r\x96\xf6S\xce9k\x19\xb9Jt\x89Q|\x1d\xc88\xd6\x14B\xf8\x8c\x15\xca\xd0Pw|\xbaT\x82_\xb2\xd4\\{F\xbd\x8fYU\xc8\xf5\xdd+V*D% y\xc7\nQ\xaa\x02\x85\x99\x88g2\xfdu>p2\x7f\xcc\x11\x1fy\x13KW\xba\xdc\xce\xd0w\xf7\xa6*\x16N.u\x99'\x87\xcd%Ko\xf5`KS\xc8S\xaer\"a[AX\x04l[&\x9cf\xdc\xa3A%$\x82\x02\n\x96-\x7fD\xde]\xe7\xfb\xca1\xf9\x07!\x19\x82 \xaf&\xf4\x86\x17\xf1\xd5\x18\xb6\xae\xf9.6\xb8\x85\x1a\x80\x87\x19\xea\x988\x8a\xd9*,\x0e;\x16\x86:\xce\xcd\x06\xb8]\xdfX9\xd6\xcd\x06O\xeb@:4\xccRI\xef\x13\x96\x1aB\x1d\xd6b!\xc9\x03\x00a\xb95\xd4\xc6[\x028\x9f\x01\x06=\xa5\x030\xd1\x0eX\xb7\x0cM\xb8\x03!\xacCexx\x8a\xd5\xbbPj\x0b\xf7\x08\x0e\xc3Cq\x0f1\xf3\x0b}\x10>\x1eb\xa9/\x04\x8c'\x0d\xad+\x93'V\x11Be\xf2\xc4\xea^h|8\xb0\xba\x19\x1a'\x0eZGI)XD\x0e\xf5E2]Du\x97\x8c\xa5\xb5\xb0z\x13L\xc7P\xb9\n&\x03\xb1\xdc \x92M\xb2\\!\x92\xed\xd278dx\xc5\x15\x8emJ\xe5[\x1c\x1b\x19jM\xdbr\x0e@\x1b\xa3\xddh\xb5\xf5!&W\xa1\xd1[\x1fbkZ\xb8\xa6\xce\xc8\x13:8-\xc1c6\xb5\x1e\x9dM\xb8#Y\xd8[\x98\xbb\xadG\xa1\x04\xfa\xe1@\x13w\"l\xac\xebX\x11\"\x9d\x18\x01\x16K\xec\xfam62|\xd0\n\xf0\xe7\xf5(\xab&\x95\xc7\x86\xc9_\x01.\x06\x81)\x7fQ\x06\xc5b\xda\x86b\xe3\x9d\x0d\xe5\x0c\xf7\xc4V\x9e\xa2\x08\x0e\xcclh\xadX&\xcc2\xd6\xa3\x8c\x86\xe2\xd8ZB\xf18\x14\xe1\xa3L\xb9B\x13I\\@\x8c/\xb4\xbd\xa2r\x87\xb6\x03\xc7N}\xbb\xf0\x10\xf4C\xac\xd9\x02\x0cr\x98c\xe3\xd5z\x94aO\x00r\xe8Q\x19\xe3\x0c`[\x19\xabG\x00\xa1\x15\xb2`\x0d\x8dS\xb0by1\xd5U\x05\xca\xc8c\x1dHY\xea\xb2\x0f\x95^\xac\xd6\x95+p\x06\x93\xd7\xf5(\xab\x93\x07\x9f\xfc+[sT(|\xf2\xd7\xb6\xadV\xa2\x00\xf6\xc8\x93\x10\x85\x04v\x18 \x01\xd6\xa9\x01\x06H\x805\x8f\xf5(\xdbL\xb8\xcb=\xf5\xd2\x0b\xb6\xf3\x95\xe0f\xad\x9e\xfc\x1b\xdb\xe4t\xb1\xea\xba>\xb4P\xac->\xe6I\xca\xcbD\x0fOG\x94\x92\x195\xcb\xc8IdlTHc\xa7EOA%\x8b\xe1Y\xa86\xe4\xc1\xd9\xce{*\xe7\xdb\x03+\xb6\x97K\x15\xcdYX\x84.\x18\x8b9C\x83\xd6\x01V\xcb\x15Mb\xd3\x97(Z\x8c\xedO(k7\x05\n\xb7\x1c\xa2#\x8b\"\xae\xcb\xb9\x07\xbb\x8e\x0d\xfa%x\xb1\xeb\xd4XQ*\x86v\x1d\x1b\x1aK%\x8b\xf3\xf4\x1f\xed\x0d\x96\x16\xea\xc75\xb3Ck\xf4\xc0\xc23\x8bn,\x93\x93\xc0\x82\xccXx\xa2,Qeg\xc4Z\xa4J\x15=Y\x86\x81\x99?\xd1\xd6\xe3\x1a\xa9@\x00\x9c P \xf1mPH\xcd\xf1\xf4o\xe9+\xb4\xa1\x8e\x80\xbbG\xa5\x810\x8e\x02\x1d\\\x88M\xc9!?}\xc7Z &Id\xcc4\x8f\x1b\x88\xb2\x02\xabI\xd6T\xd6\x93\xb4\xf4\x9b\xa9|;D\xc8\xd7qx\x9f\x10\x8b\x96\x81\x10;T\xa6\xbc\xd1h/\xe8yr\xaa\xe2\x96K\xc0d\xa8\xaeK\x9e/\xa7\x07\xbfRD\xb5C\x04\x0dy\xa5A\xec\xc3\xf2+1\x0f\xcb,\x9a\xbfG\xbfrH\xda\xf86\xbe\x13\x0es\x9d-\x96\xd8\xb3\xc7\xfa='\xcb.^^\xd6\xcf\x14\x12+\xd8e\xf3\x82!\xb1\x18\x8cM-B\xe6\xc6\xa6\x16Y\xc6\xb1N\xbbe\x19\xc7\x18\xf2\xcf\xd8 \x17t\xb8\n9\xbc\xe3\"\xfe\x1d\xdf\\\x85cm\xcbz\x1f\xdb\xe9\xc3\xb1\x8ee\xb0\xf5\x06. v\x88\xb9\xc4\xb7\x815\x0b{\x9f\xd0\xdd\xb1\xe1\n\x0f\xfe\x9d\xad\xa6~[\xf8?X\x80\xfb\xc6\xe8Oh\xda\xbe\xe6\x99\x04\x15\xf65\xcf\xb4B\x14W\xa3\xb0P\x9b\xc7\xf1\xd5\xe1\x86I\x11\x81\xef*\"\x03\xc1W\x81Q\xdd\xf3\x99\x91\xba\xac%\xeffn\xe8\xf4\x11XF\x894\x00kc*\\\x1b\xef=Dk\xff=\xd6\x89\xa2\xda\x1797\xf4\x9bM\x9f\xe1k\xed\xc8@05\x8a\xe0!\x98g\x1fa\x9a\x13\xe9\xd7\xce\xb0\x93V\xe4\xa5\x91\n{\xc2\x96\xdd\x8d\x15H\xbd\xf0\x19\xde\xff\x88+\x00Y\xf8\xbeZ\xc6G\xd8\x95iC\x1b\xfeI[\x1a\x80\x0f\xa6\nV\xff5\xde\xa9\x0d\x93\xc4\x824e \xd8\xa4\x1d\x81\xb1\xfdC\xcc\xba\"\x9d\xa8\xe7\x116\xc3DC\x81\xfd\x9fc9&\xaa{\xa112\xa6hl\x06\x8f\x02\xbd&d\xeb\x03\xf3(\xe1#\xec\xb4\x13\xe9\xc4\x12o\xd2Z0\x17,\xcbn(O\x98\xcf\xb0\n\x1bi\x006]o\x8c\xf8\xc0\xb1\xceR\x01~\x83\x19\xe8\x86\xf4\x8f\x90\xe9\xa7\xb1M3*@x\xef#%R=\xc2\x86\x9fhT\xfb.\xec\x861\x9e\xe2+\xd2\xc8@\xb0\n`\\)\xb1\xf1i#\xe6\xa1\xf5\xc5U|\xbdo\n\x16E\xb0_Z\x14sx\xf0\xf0\x11\x96\x11\x8c\xef%y\xc5vC\x0e\xeb1\xa1 N\xe2k\xbf\xc8(\x17\x04)\xc0\xb3\xf01\xa6\x14Q\xe2\x81\xb5\xe7mL\x8b$\x04R\x8a\xd8`2\x13\x17\x16>\xa2\xc4\x13\xb8\xff1A\xe4\xc4\x1f\xa8\xec$d#\x13\xf5b\"\xde\xc6(I\x83\x08D\xb9\xc7\xf8>7J$\xa9zLH\xb1\xfd%\xe1\x0d\xa3\\\x90\x01k\xc7\x0fB\x89u\x8a\xa4O\xc8.\x1a\x08!\x94\xeau\x8f\x07\xb8\xca\x86\x11\xf4\xf0\xf6F\x06\x82\xa9\xc8F\xe1s\x8bq\xb2p\xc7%\x8f\x1a\x03\xc8\x81zx\xa97T\xb6\x06\xb2\xd2\xea;\xd9\x9a\xb1\"q\xefbanc\xccu|\x11!2\x12\xa6\x82k\x9f\xfd\x19fe\x1a\xaa\xc2 \xff\x94\xac\xfb\x98'\x9bN\xc2\xc3l\xc8S\xb86\xfc3|\xd4\xb42\x85M\x06B\xd7\x13\xd8\x87\xe7Q\xd1\x01-\x95\x94\xb8\xf2\x14s\xfc\x92}\x82B\x94m\x02\x016\x9d\xc4<\xcfF\x81\xc0\xc61\xf9\x8b\xe13&}1O\\\xc91\xfe\x19\x05\xf82\x1f\xca\x0c\x05\x8c \xd6\xf3Mlt\xd6\x94\xe7\x01\x99>O2\x1eJ\x81\xecM\xac\x85lj\xfe\x8ayu\xac\x01XX\xde\x84\xa7\xd2\xb1\x96\x1b\xc3S\xe9\x98\x1c\xc7Cxu\x00\x1f\x8ax\xa8^q\xa6\xfeX\xf1P=\x17\xfd\x17\xf8&tS\xf6\x8c\xe9z,;\xc6\xfc.\xf63wX\x9b';\x86Q\xe1S\x12\x07N\x08\xef\xc7\x93\xa4i\x00\x82\x84jx\\\x02\x06i\xb7-\xd5$\xd1?j\xf9\xec(\xc6\xff\x11\x16\x92\x05\x104\x7f|\xb2\x04D\xd7\xc2\xa6\x04\x01\xf3\xa4\x9aE\xde\x81\x93 p\xf3#\xb8\x11\xe4\xe0\xd3\xfa\x18\x0bE\x9bA\x9e\xea\x87\xd9?\xc6h#\xaa\x8d\xc2:\x88:l\x1f\x11\x1c \xf24\xdb\x97c\xfc\x08\x8b\xeb\xf1\xc8\xd6\xdaf\x04\xc9\xa8\xc4\n\xcba\x92\xcc\x83\xb1\x90\xb9\xb4\xa1\x10c\xd9\xa6\xbe|\xc5bml\xa4\x04l\xbf\x8a\xa3\\>\xf6\xf81\xde\x95M\xb9\xecO0\xd3\x05S\xe4}\xcc\x0d\xe3DE\x18a\xc2nL\x94\xf7\xb1<\x1d\xc3[\xf5O\xc8y\xd0\x96K\xfa\xdd\xad\xe9\x9b\xbb\xa50&:\x02\xee\xaaw\x83\xad\xe3(\xdf\xb3\x90\xb6-\x97,5%\xaa\x96\xf6\xda^\n\xab4f2e\xe3\xab\x05T\x8e\xd4\xc2\xb2\x96\x84+;\xce\x13\xccu%P\x87Ya\xe9J\x00\xb5\xc5\x10\x0fh3Q\x16\xc37\xe9\x16i\x08>E\x12\x92\xdaq0\xd1Qht\xf8p\xc1j\x19z\xc3\xc0\xd5S\xed\x98\x02m\x96\x1ej'\xd4)\x89\xfaN\xa0\x04\x00\xac\xb3\x08\xa0V3\xde\xc5\xca\x94\x00\xa698\\\xbfKx\x87z\x7f\xed\x1e\x96D7\x93(\x8e\x12\x9dI\xed\x1e\xc6\xcc\x02\xac\x12\xb5\xe1\xfa\xa2a\xf0\x9b\xb7\x80\xea\xb6-N\xf2\x04\x04\x83\x07\x98en\x1a\xa1\x11\xdb\xc6bc\x91\xc6\x86\xc9Mx\x95\x87\xac\xbf\xfc\xfc\x1b,\x96\xc6y\xe8*\x13\x17\x06\xbd\xae9,&\xd7\xb75\x00\xef\xc8\xed\xbal\x8b\xafk:\x87\xcd\x13\xb7\x0d\x9d\xc3\xec\xe2\xb6\xc1\xd9\xb7\xb0\x80\xf9\xbaY\x15\xact\xdf6\xab\x82\xf9\xfc\xed\xdc\xc9x\x12\xfa*3\x01\xc9\x8c*\xe0z\xf4\x98\xeb\xea\xd8\x94\xd7l\xdf\x15\x91\xc2\x02\xd5\xeb\xbb\x1b;\x0b\xec\xdb\xado\xe3*Qf\xf9\x9c\x98\x84KX\x9b\xd0B\xec\xbd\xbf\xfd;\xcc{\xb6\x8c/5\xde\xa0\xc4@0\xc3I\x1c\x0f\x12\x90\xde\xc3;\x91\x94\xb34a\xfa\xb1\xa5c;1\x1a&\x1a\x80u\xf0\xc4\xa4U\xc2'S@\xe4\x94\x1ea^\x9f\x14 \x97hs*s\x12fo[Z\xd9\xc4R\x97\xb9\xfc\xa2\xfd\xab\x1a6\x00\x10\xbc\x0f0]KLR%:\xe6\"\xa9\x12\x19Bq\x97f\x81\xa8JX\x84J\x8atKXQL\x8atK\x18\xf1\x13\x93n\xe9\x03L\x0f\x92R\xba%\xac\xe9l\x99tK\xefc\xa4O\x8aLLX\xd2(]\x03\x92E7 \x97\xb0\xc2\x94\x14\xb9\x98(\xeae>\x10M\xac5IH\xa8\xfd\xe7q\xbd-\x93\x8d [\x18\x13\x03\xc1\x1c%1y\x9a0\x05HL\x9e&\xb2[:O\xd3]\x1b@\xd4\xb9A\x01*O\x13\xa6\x84I)O\x13\x16\xd3\x93R\x9e&<\xa3-\xe3\xa7\x8f\x15\xfb\xc4@0\x03\xdf2~\xfads\x0d\x04\xd3\xd6\xc4\xe4i\xc2\xc6\xb3\x04\xf24\xe15\xd8\x02\xcd\x91\xe0>8\xc3b\xad'\xd1y\x9a0kM\xbc\xc0\xa4\\\"\x87\xdf\xe4p\"\xf8V\xe4p\xa2 \x15\x17Jh\x19\xc8\xe9\x04?9\xf0t+@g\xc9%\xd4\x99;\x81\xc9\x92k\xab\x08\x88K\xc6\xc6A\xdey\x0f\xeb\xae[+\xe7\x05\x91\xc3|5\x81W\xfe\xf1g\x8b\xff\x0fvV\xd6E\xd03r5\xc5vcT\x90<\xb7\x9a\x14\x890\xb0=\")\x12a\x90\xe6U\x0eh\xb2BZ\x90 \xdd\xe8\xc4\x16\xf8\x16\xdb\x84'\x93\x17\x7f\x13\x9d\xd8\xe2\xa7\x04\xe7\x8a\xc4\x16\x98ln\xc98\xba\xcf\xb1\x8e\x95\xc8\xcf\xbf\xa1]DR+'\x8cX\xc6\x88\xe3|]\x18\x8bQ$9\xe6>\xc8}\x820\xa7\xaa\xf7\x84\xb5v%g\x17fTE\x89J\xd4\xfbO\xf1\xfd_\xd1\x91I\xda\x85\xe9\xbfl\xaa\x9c\xb5\x0b\x93\nY\x80\xa6\xed\xc2*\xb5*\x86\xf3v\xe1\xd3b\x8a\x95\x12wa\xb3\x16*\xa3\xf3\x0ea\xf1G\x16;W\x8b\xa7\xe5\x04V:\xc2\x95\"Z\xa9\x10\xf8\x06P\x8c\x13EP\xf6.\xeb:\x97\xf2\x80A)\xc2.D)\x9c{\x8bPf\x9ff\xd4\xb2.\xa2N\x97\x85em\x0d,\xb0\x13[F,\xcfr\x13Z(\x8a\xa0\x8cYx:\xc4\x17\xf1\x01\xa1\xceVG\xc4\xa6B\x85\xf7\x1a\x96\xdad1\x925\x0bK\x04\xaaTur\x98R\xa9B\xa5\xa4WX\x8b\xab\x94\xd0\xf8\x87\x05s\x94\xd3\x8c N \xae\x9b\xc0\xbak\x02\x87\xee\xd7D\x88\xf2\xd3\xea\x83\x8d\xa4\xa2I\xa6CP1\xd0\xe9 \x08\xfa\x05\x90\xf3\x81HQEf\x1bL\x0c\x93jf\x1b\x02\xd6\x81\x0cO \x933 d0WLL\x02\x19\xbc\xe8\x89I \x83iKbn\xd3\xb0&\xb8\xa5uQ\xc2\x95\x8d.J\x04\xde\"/ \x1duqGB\xf0/\xcaC\xaf\x94\xe0\xfe\x03\xac\xde'0\xc6\x8e\xe53\xdc\xf8>\"\x9a]\\r;$<\xc2d\x03!\x04\x19\x85\xf0\x90\xb3[d\xea\xc0\x06\xb5-};E\xebh]\x1b\xfb\xc6l)\xc9\x8b\xec}\xedw\x99\\\x83\x08\xd1&\xb9\x06\x16l\x93\"\xb9\x06\x01\x15\xa9)\x082\x17t \xc7ni\xdf\xc3\xf7\xb0\xa5\xab\xe4db\x81H\xc2zE:\xe2\xc5\x93\xf7d\xbc\xb5\xe8:\xf2a0\xefR\x88\xdc\xc9'd'G*\xaf<65\x08\x00\x84\xaa\xfd\x0d\xcd\x02\xb5\xbdqn\x07\xce*\xa9\x16\xf538\xadX\x9c\x01G\x9f\xe3\xf4\xab$\xe3\x1fb!_\x00\xd4E\x1aa!F\xf0\xc5rQj d\xc9bG]\xc1\xfe\x92\xa0\x99\x04\xe9w\xfd,\xd0\xc4z\xf0\xd3\xdbJ\x96x@\x98\x9f\x80\x80\xaf\xd1\x9f\xd3\xb5Ko\xab\xdc!\x0f\xb0\xb0,!P\xefg\x965\xbf\xad\xfcg\x88\xd4t[\x076`\xb5\xa7\x08\x94x@(\xce\xedR\xf8\x82\xb5^\xe1\xd7o\xab\x0b3 \xb4\xd4D_<\xc04P\x82L \\\x0dPuH\xebJK\xd9{\x98\xd5\x97^\xae'R@=\x08j\xe1g\xa8\xc8.\xd2p\xc0\x86\x02\x85R\x8f\x17\xcb\x16\x06\xd8X\xa4h\x8a\xb0\x11Yn7\xd4#\xa6\xf8\x93;p\x83L\x1e\xf2Oo\xe75\x80\xda\xeb\xa5msk\x89u\xc8\xd4hR\x98#\xa7\x0d\x02I\x03mJ35\xee\x87\x98jogp\xfa\x08 U\x80\xbf\xb0\x01d[\x7fAD\xc6,q\x04\x9f\xe6q\xea\x07r \x7f\x83\x95$]D9_as\\\x9a%\xd2\xeeE\xb2\xdfm\xc3\x01|H\xf0Z\x1dL\xc2r\xf3\x9e~\xb3\x9b\xa8\x0e&\x16\x89\x02\xe0d\x91\x19\xe7=\x9d\xaa\xe7)\xe1\xbayo\x94\x83\x07\xf3S\"[\xe7=\x90\xfa\x9fb\xbb\xa2\x80@_\x84\xc0\xe6=\xcdE\x9f`\xb2\x9c\xe6=\xc3E\xb1^Z\x1c#\xdb\x1a\x990*+H\x11\x05\xcb\xb4\xcb\x11T\xd6\x0e\x8b\xb3d\xaf\xad\x12\n\xdb\xa6 \xd0\xdbu\xeb\xa3\xfd\x1f\xb1-A\x80`\xd3\x9f\x12\xec\x11 \xc8\xf2F8\x86\n\xf6\xa2\xfaj\xee\x96]\x8f\xb0\xd6*\xc0e\xd7#\x8cL\xe5`_\xd2\xb6%\xd2\xb7\xa6\x04r=\xaa\xeb\xa5\x14\xe1k\x19\xa7\x0eY\xb3\x80\xca\xaeGD5\x15p\xedzD\xd4S\x01\xacUPs\xb7^\x0b\xcd\xdd\xe1\xce\xd0\xb1_Bm\xc3e\xd2=\xc2\xf7j\xbf\x83!\xf0\x97\x98\xb8n\xc3v?\xa4\x15\x80}\xd2\xd3\x1a\xcf \xf2\x82OO\x9a\xc7\xf3\xe2;\x91M\xf3\xf8\x84\xf8N\x84\xc7<\xd6\xe4\x05[ \x05H#(\x11XM\x84 \x05\x009\xa0\xd8\x1e\x1b\xd2\x83\x05\xb8j@w\x0d\xb08\xa0\x96\xa6\x87\xca7\xfcWXQ\x9405 |!\x9c\xe6\xb1I\xdbJOSl\xa8!\xa55\xb1\xa2\x86Dp\xcdcE\x0d)\x1d\x8855|J\xc45#\xed\xd8\xb6\xbfn]*b\x90eI\xca\xe1\x94V\xa8\xa6h\x96\xa1\x96)\x9ae\x8e\x9a\xa2\x11\x9e\x9e\xc7z\xad\x89\xc0!@@\xd1\x08\xbb/b\xd6\x88\x19\xc6\xc4\xacachjb\xd6\xac\x90\x9a\xbc\xd7\xe9~\xa8\x8d'D\xba\xb9\x03\x91S\x9f`=q\xc7\x113\xfaA\x86>gN2\x80\x9dy\x17Oh\xc7\x91!\x9aX\xaf\xc8\xe4\xe7\xdf`\xe4\xcf\x94\x9d\x9f\xf8\xea\xef\x18k\"i\xc9@\xb0\xa6\xb1cl\x80\xd8\xfe\x92\x19\x08\x96\xa9\x94zF+H\xdd\x0c#\xbf\xce\x9c\xfcclw\xcdx\xa0\xbcb\xdf\xc5\xeclG\xdb\x8b\xf0 \xcc4\x00\xdb\xcd\xb3!O\xf8I\xd1\xd8=\xb2,\x02\xd4\x8f@b'\xd0\xac\x11\xba3\xe4\xf0\x06*\xa6g\x99\x06`\xb6)\x01\xe9\xa1\xc0\xf7\xdf\xe0\xc3)ac;\xc4w\xf7J\x197\xf1A\x91\xf0:cJ5\x03\xe2[\xbf\xa2/\xf5gC?T\x9e\x8d\x98\xdeU\xb3\x1dbh6\xdcS\xb1\xbdtD\xf5\xe3\xb9\xb0\xb1\xb5.N\x066\xc7d\xc3(\x11X\xf8 \xe6\x1c\x86\xbb\x93\xb6t<\xce\xaf\xb1%\x1a\xa5\xdb\xc0\xc4\xce\x92k\x03\x8bq(\xd1\x06\x99\xa0\xba!\xf9\x84\xe0\xa0\x00\x80\xec\x8d\x15z\x00\x01\xc1\xf8\x88\xa0\xa8\x00\xc2\xbb\xb9XP\xc9\xea\x1e\xe0\xce\"\x0e>B\xd8n\x99\x81\xd7\xee\x03r\xd2\xa3\xb8\x07\xe7\xed],\xd0dQ\xac\xd3\x18\xe3\xa1\xed\x18\xdb\x06\xa6\xed\x99\x81`\xca! *d\xe3)6\x1bdQ\n\xc3\xc6rSVx_\x93\xa3\xb6\xb5\xb8,\x99\xe4\xdb\x84\xb0$\x0e\xec\x91\x05R\\\x9f\xbf\x87\x15.\x0d\xd4\xde\x0b\xefaA\x0d\xc7\xee\x93\xac\xea4t\x9f\xa4W\xd7E@F\xc6HJ\xe2\xfa\xc9\xa5\x9a%\xac\x9f\\\xafe\x89zU\xe5\xd9/\xb0IL_\xc9\xd9z6\xb6\xc1\x8f\xb0\xdc\xbb\x93\xf8q\xc0\x97\xeb\xe8\xb2\x80\xaa\x9a\x96\xe1\x02\xea\x7f\x88]\x06\xb3\xc4\xcf\xd4\xd6~\x84e\xa3,\x89\xf9\x1d\xe5F\xf5gx\x0fw\x8c-\x00k\xbe\x99\xb1\x05\x10\xa2\xa5nz0\xfb\xcf\xd4U\x0f\x96_v\xb4\xf9\x9f\xa0\xb7\xb6\xff\xe3E\xd81\xcf\x0f\xd0>4\x04_\xc0d\xfb>\\\x8c\xdc'\xdb\xb4\x1f\x0d\xb9\xe3U\xf3K\x12\xea\x08\x85\x90w\x13&1\xbb& \x1e\x1f\xba\xdc@\xf0~\xefj\xd1\x07\x8b*\xb9\x96\x960?\xcau\x0d\x0c\x10M\xe9\x00\xfb\x0f\xf0\xb6\xec\xf6\xd4\x93\xca\xf8\xa67W\x80\x7f\xc0s\xde\xed%\\\xc6y\x7f\x86\x97,7\x10L\x13wu\xb4>\xde\xb3\\\x030\xfe\xed\xc2\xa8\xb0\x1c\x93\xc3\x98\xf0\xa9\xcf=\xed:\x809\xc6\xae \xd6\xc7\x04<7\x10LZs\xe3\xca\x89M]y\xe1?\x88\xf9\xe1\xae\x16s\xb0\xd8\x91k\x00V\xd7vM\xc0<\x16as\x03\xc1\x879\xd7\x9e\x85da\x86N\x02\xeen\x98d\xe6& -\x1ern\xde\xc5\xc2\xdaJ.\xdf\xa7\x12\xa0w1\x95\xca\xcbOWY\x80*6\xe5]l\x1e\xcd\xcdC\x18X\xfc\xda\xd5\x11\xf2X\\\xcf5\x00\xbb\xedC\xb0\xed\xc7\x98\xc1\xee\x86\x9e\x8e\xa9\xc5\xef\xe5\x00\xc8\x84\xd4\xe2Ce\xc0:\xa6\x16\xd3sY\x00\x07\xd5\xe2{(c\x8a}\x88\xf1SBt\xb6\xff\x07\xf8\xa8\xed\xaad\x0b\x9fa\x0c\xc95\x00k\xf4\xbb\x86\xc5c\xcd-7\x10L\x04\x9b.\x1cw\xe3\xc2\xb9\x86\xd0\x95\x02f\xa9Wv\xda|\x1f\xdb\x8c\x15\xb8r'KOh\\\xbd\xb3\xc5\x8a\xc5n,\xa4\x81b|\x18\x9eW\xe1\x96\xfa\xd8+\x98\x9c\xeaX91\x9aw?\xc8\x19\xd2%\x8a\xa7\xa4\xc8a\x8ak\xb77\x8e\xf1[MX\x9b\x94E\xd0\xad1\x96awU\x08\x14^\xe4\\}\xc7\xeb*\xbe\x0fm\x15v\x8d\xc1\xfbs, \xe6\x85-\x9cn\x93v\xbf\xc4\x95$\xa4\x187mSa\x10x\x7fb\x99=O\x0c\xa9\xc1\xe7)/?\x02e\x01jRC\x16\\9\x19~F6Z\x03\xb0\xd8\x92k\x0f\xaa_`\x82\xbbkD\x1d\xc2?\x8c\xa8\x83U\xb7\xdc\xbc<\x84\xeb\xecj\xdd\xe83L\xbbr\x03\xc1\xf2w\xae\x9d\xbb0M\xca\x8d\x0b\x17\x96ps-\x0b\x90\xd5\xdeUy\n\x08\xe1V\xdf\xb1.\x97\xef\x1ba\xfd\x11\x96\x9d\xc6N8\x80;\xc8G\xb8\xb9\xb1\x934\\\xab\x8c\x9dD(\xce\xd2c\x01\xaf\xd0\xd8I\xc2H\xe8\xbe\xf0\x9a\x06\xc6\xc2\xb1\x93\xd4\\\xc6\x08\x88o\x0b:\x17\x80\xfa\xb8\xc6\xb1\x16\xa7,\xed%Vz\"\x00\xe0`\x8f\xe5\x86\xb1\x93\x18O\x0clR\x11\xb0\xea\x1d\x03\xbd\xd2-\x97Q7\x0d5\x85*\xa6\xbd\xe62\xca\xc0g-\xa4-\"\xc4\xb6!`H\xd3\"\xaf\x03\x97\xca\x18\xaaH\xfc\xa1/+\xcd\xfa)f\xe1c\xc53\x9e\xe2\x83 \x002\x8a\xef)>\x08\x97A$\xc4\xe4l\x0c\x9f\xf1\xf0\x8a$f\xb8\xeb\"\x87\x19\xee\xa1HaFFe\xea`]H\xb6&%\xaf\xa7\x98\xe3^V\x9e\x9c\xf8\xa6m\x0c\xdfI\xea\x991\xe7j\xb9\x1e`qx\xcc\xb9\xd2W\xb1\n1\xe6A\xe0\xc3\xbd\x02&w\x97y\xa2\xda{\x93\x1c\n\x0d\xfa\x11\xad\x93\xd5\xd5\xc8j\xca\x97\x13\x9bb\xb9T\xc3\xd5\x13\x17u\xd5\xb7y\xec$\x8e\xf2+\xff+,B\xebR\x85\xe5\x07#3}\x04\x04\x13\xe5\xcbZ\x0c\xc7\xc2\xf6X\x030\xee\x8e\xb5\xc4JQ\xdf\xe4\x8e\xb4dz\x1c\x9b\x9c\x8b\x96\x0c\x89\x97\x8dx\x86\x95\xf1\xb1\x81\x10:[\x1b\xef=6o\x17\x92sg\xd8\x16!R\x86ma\xc5z\\\xba\x01\xb6\x90\x8b\xd2-\xb0\x15j\xeeKj\xa0\xbc\x8eZ].\x0e\x17\xd6\x00\xc6w\xfc\xc1\x1dG\xb2\x82G\x18\xf1\xafh\xbfV\xcc\xfd\xf65\x00\xf3\x9d}\xee\xa9\xf3\xf0\x18+\x00W\xb8\x07Q\xbd\x0f\xf1\xe8\xf65\xe4\x1e\xde\x17 \x81C\x89qj\x9f\xfb*[\xcc\xdb\x18\x97\xafht\xc3\xf3\xd9\xd7\x00<\x9f+\x063\xb0\xa0\xb3o \x98\x94\xec\xdb;\xdfO\xac\xa7g?\xe1N6\xb4\x82\xae\x18D\xc2\x87`\xdf \x12\xd6A\x0e\x94'\xd4C\xcc\x04\x0f\xd4\xce<\xfb\x05\x16\xc0\x0e\x94\x13\x14\xd1\x9c\x0e<-\xfe\xe0k\xe67\xf4za\x9b\xc2\x81\x06\xe0\xfd?\xd0\x0f\xb5\x90\xb7o\x0f\xb4\x8eL\x9e\xbb}Cf#\xc06\x90\x03\xf9\x15\xab\x00\x07:\xbd$y\xcb\xf7@\xdfA\x927|\x0f\xd4\xf3d\xe4!\xdd\x03\xfd\xe2\x0bf\x05\x07:\x99\xe0Gx\xaf\xde0\xe8\x80\x95\xef\x03\x03\xc1,\xef\xa0\x88\x0d\xc1l\xea 2\xd6A\xb2\x91:<\x9d\xbc\xdc{\xa0}>\xc8\x83\xbdo\x18L\xc2\xc4\xea\xc0`\x12&\x8a\x07\xc6;\xee#l\x1f<0\n\xd7G\xf8\xb6\xed\xc0\x88\xcc\xa4\xa7q\x0dK>\xd8\xaf%\x00W\x8d\x8d\x0e\x93\xdfC\x03\xc1\xb8yu\x11\x84\x12\x8c\xe6\x87\x0e\xd8\xaf\xf0\xfe\\\xd5$\x0b/\xda\xa1\x06`\xbc\xbc\n\x1d`\xd9\xe6\x10\xda\xc7\xa4\xfd\x90\xcbdBX5\xbb\xaaO\n\x96\xdf\x0f5\x00\x8f\xe7\xea*\xf4\x8b\xef\xa2\x0f}\xe8\x18+\xadW\x0d\xe2a?\x9fC\x03\xc1D\xff\xaaA\x14L \x0f\x0d\xa2`JxU\xd9\x0b\xb1\x08t\xa8\x0c\x86\xa4<\xe8;\x9f\xe1\x83z\xa8\xf4 l\x00\xb8fBQ0\xc2\xdf1\x10LT\xae\x99\x1b\\\x8c\x1ew\x0c\x04\x93\x90k0\x0d\xbc\x8cw\xe03F\x82k\xea\xe5vL\"\xee\xa8\xef\x98\xa6\xdc\xe1\\?\xe2\x89\x19\xc65\x9eDW|/\x1b\xd6?\xa3vM]\x9fb\xc9\xf0\x8e\xfa\x8eq\xe5\x9a\n\x9b\xc6]\xdd\xd1\xc8E\xa6\xa3,\xfe\xa4\x030\xf8\xff=\xee\xe0\x8e?0!c\xf8l^\xd3ar\xf8\xb6\xed\x8e\xc1;|v\xae\x19\xbc\xc3D\xfa\x8e\xc1;|p\xef\xec\xdf\x92k\x85 \xd7\x9d\xfd\x10\x00\xef\xb6\xcc\xf7\xbb\xf2\xaf\xbb]\xd6\xcfC\xe9g\xda\xe6]\x96uY\xd8a\x7fd\n\xb5\xf2\x94\xb34K|7k\xbdj\xbe\x8e\x9d\x84%\xec\x0c\x0b\xdb'\xe7^\xe9T\xbb\x8a\xe4\xf7\xf9\xeftf\xf2\x90\xa7\xae\x13\xf3K^Q\x93\xcf\xf0\x838J\xb2\x94\x9d\xa9\xf6[\xeeTw\x11v\x99\xdfeN\x97\xe5\xec\x0c\xcb\xaa\xdd\x88\x9fh\x84\xcf\xc4Qz\xc99x\xb5\x02\xf5\xfb\xac\xfd\xf2,;sF\x14H\x13w\xc6\x1d:\xc9R\xe4\xf1\xc5\xac\x9dup_\xe2\xd7\x8f\x12\xd6\xce\x8e\x1e}\x95e\xec\xbb,}\xd5VF\xb7<\x07-\xb7Cfo\xbe\xc3\x12\x9e\xe5I\xc8\x8e\xcc\xbdZ\xdb\xc8\xcb\xf3\xb2\x91\xd0\x14v\xd8\x19\x96\xb4\xa36\xb4\x98\x06\xbe\xcb\xdb9;\xca\xe6\xc4\xeat:]v\xe4\x08\x9f\x89\x9d$\xe5\xc9\xcc\xd8 |\xcf\xc9\xf8\x9a\x1f\xee\xb5\x9d\x0e{\xe9%\xd6\x96+!\x16\n\xea\xf0\x99\xc0\x0f\xf7\x96\xa20\xe3a\xc6\xce\x88e<2\xdb\xb1\x8f\xe7\xb4\x1a\x8bhGV\x17K\xc0^\x13\x7f\x9fa\xf3l\x81eG\x8f\x92\x8aw\xc9\x173\xebo\xd5\x97\x93\xeb\xec\xb33lV\xad\xb4\xe8\xf3\xc4<;\xd2\xb4\xa0\xa2\xcc\x91v\xc8\xbe\xc7^\x11\x7f\x86\xec\xbbl\xeed\xe7\xd5\x0e\x19\x81XX\xebd:j.t\xfe\xfe\x83\xf4\xe8\xf1A\x97\xb5X\xab3\x93E\xf2\x0eg\xc9Iy\xfb\x85\xe0\xf0F\xef\x16w\xb3\x19\x8f\xf7\xfd\x90o&Q\xcc\x93\xec\xb0\x9duY\xeb\xe6M\x9e^\x8a\xbc<\xe0\xad.\xc1\xd6 \xe7\x0b\xec\xc8l1\x82N\x97\xc9V\x9c<\xc8\xca\xd3\xac\x99%\xc5\x147\x1a\xc5Q\xc8\xc3,]`\x8en\x89\"\xfb~\xe2\xc4K\xa5\xa2y}\xd14s2\xbe\x19\xe4\x03?L\x17jXA\x1as\xb7\x0e\xc6Tw\xdb<\x90\xb9&\xd2\x05\x96\xd0^\xf4/-J\xf9\xd6Bw\xedu\x9d<\x1b>\xc7\x08\xa2\xe7i;r\xd2\x13Mm;r\x8f\xd2\x05\x96\xd6\xcf+\xe1^\xeer\xd1\xb5[\xbf\xd4\xfaWZ\x84\xc0>P\xf2\xf5n\xcd)\xbcK\xe9l\xdc\x0e\xdb'\xe7\xe7;\x16\xc9\x14@'0\xc87\xa0\x93\x18$\x88W_\x82NaP\xaeA'H\xadT58\x7f\xe2e\x0c\nt_'\xc9\x08]\xdd\xe0\xc9\x13\x9d\xce\xab\xdf20}JX\xbf\x9e\x1c\x08\x02\xc6g\x8a\xc3\xc8^c\x9c\xd96Um\xce\x02\xe3u+j\xe98\xa6\x1d\x0b\x92Mz-\x88t\x95\xd4j\x0e\xfeGw)\xbb \xf3 `G\xce0N\xe59\xc9P$\xcfc~\xc8xG\x93\xa18\x89\xb2(;\x8c\xf9\xcc\xd0I7\xf6CM\x90f\\'\x08\x04Q\x0bA\xd6\xc9\xae\x877\x04S\xb9\x1e\xde@|N\x0d\xb3L\x8b\x04-,-\x02\xfbF\x90J?\xdd\xdew\x06\x03\x9e\xcc\x0b\x8e7\xe3\xa7\x1b\x8b\xdb'\xe4\x9f)O\xc6\xb7\x1b(\x82\x103y\x91\x942\xc5#KtY.\xddJ\xa4\xec\xaa\x93\xe6\xc7\x03&\"\x99\xb0\x90\x00\n\x17^l\xb1\x97{fz\xaek\xcd\x03\xcc\x9f9o0\xefp\xde\xa4=/2+vD\x00\x01 \"\x80$)Y\xd5}\xb0\x96\xad$\"\x10\xd7\x1d;\xf6}'a\x00\x9b*\xfaf\xe7\xbe\x92\x1bl\xbf\x0d\xf1\xed\xd6\x8e\x12\xc6}-\x8cW[\xd1\xde\x07]=\x1d\x13W\x0d\xd8;#\xc5\xe1U^\x10z\x91R\x1c_aP\xfc\xeb\xbb\x9c6\xa2&\xday_\xf6\xa6\x0b!\xdf\x16\xc7\xce\x1cz\xec\xcb\x85\xcdc\xa7\x851\xd5\xf8\xec\xa3\xcc\x94\xf7t\xc8\xb0/\x9fq\x03\xf4\xc5L\xd94s\xb7\x89\x85\xf1o E\xe3\xdf\x12\xfe\xc6\xbfk\xdc\xce\xfe\xac\xd0\xfe\xddLI,e\xffvUw\x8f\x91C\x1d\x82\x83)\x84\x13\xbcXn\x86\x7f\x95\xb8\x17\x87\xed\x85\xf9K\x1f\x89\x15F\xfe\x18\xcee=\xbd\xce=\xfb\xb9MP\x0c\xed6\x93\xc4_\xbf?=#\xe1\x9f\xa3\xe4IY,\x92,\xfc\x99\x18\x88\x8a\x9cR\xd1JZ\x9e\x96\x8c\x1e\xa8Hy\x05!\xe2+ \x91\xd2D\x88\xe4\x9f\x86\xd8\x16\xbf\xe8\x84#\x0d\xaan.\x95-\xee\xceP\x7f7k\x87.\x83}\x7f\xed6\xccvq\xab\x8c'\xdc\x01\xc2+>t\xdf{\x11\xe6\x85\xd3\x06\xfe\xeav#q\x91]\x1d\x92\xbf\xdb\x8e7O\xb2\x03\x7f\xb60\xcc\x0d\xa4[\x93\x1d\x06\xbe\xee\x0e\x1d\xc7\xd8Q3\xa2\x14R\x8a\xe9\xe6\xb1\xba\x14u\x0e\xd3\x91\xa6\x94\xe2\xdf\x92Q\x01\x94\x0d\xb1\x14g\xd8J(\xcb>\xb6P\xbe\x84bn\xfe\xc1c\x7f\xf6}D\xf7|\xd2\x04\x00m\xfdk\x0d\x03\x11#\x03\x92\x96\xf9\xc2\x8e\xc9\x05\xf8\x14\x81\xf3\x1b\xbd\xda\xd6_\xaeQ\x056\xf3\xe6aT\x90l\x00|@}\x88\x18FE\x91-Q\xd6\xbdv\x1cG\xc1v8.X\x8b\xa2H-\xfc\x14!\xd7\xf2\xd3\xf0\xcf\xe4J\xbc\xa1\x84\xc2\n\xc3/;\xfd\xd0>\xe2?\xc8\x7f\xadt\xe5*\x99\xbfJV@o\x8d\x8a\xad\xf2\"\x12\x9f\x15\x0b&2\x7f\x92e\xfe\x95\x9d\xc1c\x18\xc1>d\xb0\x01#\x98\xc0\xa6\xe3\".\x18=\x82\x10\xbe\x82\xec\x11\x84\xeb\xeb\x0e$\xd3\x90V8\x96[\x9b\x86\xc7\xdd\xcd\xa4}\xfaws\xd9\x97\x155\xe3\xd3\xcb=j1\x8b\xd3\xe2\x98\x92\x8b3\xbf\xb0\x13\x87r\x93mV3\xd1^\xff\xac\xe0\xf7\xbf\xff[\xf2\x8c\x9a\x9a\xbdK\xa1\x82\xdc\x06W\x1f\x0f\xe3\xebVe\x91\xef\x84\x8d\\\x99\x81\xbd3\xd6y \x03+\x13%\xf5\x86\xa1Z\xa7GB\xa0\xd5\xe4E\x1d\xde\xd6\xc8\xd7\xe6m\xbev\x18\xf1\xb2\x12\x8f\xe3\xf6*#\xccK[\xe1\x9fB\x89\x7f\xe2\n\xff\x14\x1c\xff\x14\x12\xfe\xc9\x18\xfe\xc9\xe0+(\x1eAF\xf1O<\xcd\xba\xf8'\xd3\xe0\x9f\x04Ug\xb7\xc6?\x127E\xf1\x8f\xdfB/1\xc59]\xd1\x8e\xe9\x88\xaf\x84\xd7?)+E>gV\xa9\x8b\x07\x99\x0e\xa2\xa3MH\xaa\xa2\xfb*N\x88\x15u\x98\xa4Z\xa9\xf1P\xaf\xd4\xd8T)5X\xd1H%\xcdcEz\xa5\xc6\xd6\xef\xab\xd4\x10\xbfd\x91\x7f\xb3\xa1\xa7~\x14\x9d\xfa\xb3\xf7\xf9\xa4&b\x9as\xf9\xb6(\xd2'\xa8\x88\x8b\xd4\x15\xde\x12Lc\xf5u\x12\\Mj\xfa\xbcY\xe7\x90a#\xad\xfa\x92\x97?M\xe2\xc2\x0f\xd1\xdfL\xa3\xbc\x94:;\x08B\xf4V\xc8\xd55_\xa7\x84%\xff\xa9\xfa\xd6(\xe9\x12Q\xf1E\x18\xbf\x9f@(j}\xe6\x87\xc3\xb7c\xbb\xab\x9fKxI\x07\x90C\xbc\xbe\xec\xd8\xa6p\x8cUF\x14l\x91\xa8XQ'\xf1\xd1A\xb4\xff.%\xa8\xf5B\xc0\xedr-\xb1\xb8\x18*ex\xb7\x0e7\x0cI\xc9\xec\x8d_,\xba\xe5LJbU@TA\xa6\xa5\xb0)\x0b\xe7`\xaf\x15\x95\x1e\xb0:\x03\x9cH\xe0\xe9ul+O}J\xf5\xd0\xdb\xc4\x05\xebU\x02\xd5$\xda\xcc4\x9d'SI-\xfd\xb4\xa6-z\x94@\xda\x8e\x83\xf0\xbc\x03e\xe2yO\xae&\x12c\"\x9ekW\xdf\xdcb\\\xcd\"\xc6\xeb\xaf=\xc8\\\xc7\xaa\xf1\x81Z_|\x91\x91\xb9\x10\x13\xecc[0\xb9\xd9\xf8A\xcc!W\x16_\xab\xc6\x17\x99XI\xba\x9b\xf2\x00\xa3jc\xe90\xd5\x8c-\xf0=\x9bUR\xaaa\x02\x83\n\xf7LZ\n\x0c\xf9\xd1q\xd3\xd0\xbf\xf3\xa5\x0b\n\xfe\x94\x98\xd6\x12pX\x13\x98\x99\xc5\x01\xb8\xe4Q\x8f\xc8\x00\xfd\x86,s\xa5%)\x16I\xd0\xdbV\x8a\xee1=\xa2\x15q\x9e\xe9=\xc3\xd8t\x17r\xba\xdd=\x12\x99(J.\x8e\xb2\xab\xe7\xc5\xeb\xb2\x98\xb4\x8d9\xe5\xe7Z!<\xd0\xbdo\xbfko\xe3\xb0C\xcb\x8eY\xfey\x194uo\xa3Pu\xe7\xd0\xcb\xc8\x0e\xc5\x9d\x13\xf6\xdf9\xe1\xe7}\xe7d5\xf1\xa1\xbbu\xa4*\xdf\xd3\x85\xeb\xd6\x0b\x07\xdfNX'\x9e\x87g\n\xa8/\xab\xfb\xabb \xba\x95\x98\xb1\xf8<\xee\x96D\xec\x0ee\x06\x84GW\xa9b\x9c3\xac\x12\xe6\x07\x97dV\x16\x8a\n\xf3\x9e+4\xc5\xf2$~\xba\xf0\xe33\xc5\xf7\x01\x82\x8d\xf5\xd2\xcf\xde\x07\xc9E\xac\x92?.X\x95e\x12\x90\xe8\xe0\xd2_\xa6\x11QU;g\xd5:\xb4\xa1\xaa\xee\x12\xb85q\xc1\xe4\x01\x01\xc9gY\x98\xd2\xad\xb7*]f\xf7\xb3\xb3\xd6g|\xe9\xf8'\xe4\x02\x12\xefu\x16\x90\x8c\x04/\xfd\xb4y\xce\xe9ZG\xb4\xda\x99\xf7\x9e\x08\xe1w\x98\xe5E\x9bu\xa3\x80v\x05{p\x86]\xa8\x90\xd6)\xec\x81\x95\xe0)fw\xd3U\xcd\xef\xa3\n\xdar\x81\xc9f\xdb\xb6?H\xa2\\\x19n2\xbc\xf5(\xeb\x1b\xce\xf0B\xba\x97\xcc\nRl\xe4EF\xfc%\xbf\x08\xe9$\x98\x91k\xe4\x85q@._\xcfm+\\\xfag\xe4\x1e[\x88N\xa1_\x06a\xa2+<\x0f\x03B\x0bu,\xf0 \xdb\xd6\xe7qZ\x16*m\x03\x9f\xcb\x0c\xf6\xeb\x0b\xae\x85DOt7\x1d\x93f[\xf3\x90b\xecK\xf3;\xc1\x0e\xa1\x82V\x98t\n\xb5\xa3)\\lL;(.'\xd0\x8f*/\xae\"b\xb2^\x07\xf4\x1a\x880\x98\x07\x1d\x9d\xb6b\xf72\x026F\xeb\xdf\xfe\xf5\x8f\x96\x90}\xdf\x14\x07\x81\x0e:NN\xf0p\xea:/]\x88(\xc0\xdf|\x85\x1a\xbdfI\xba\xc1O\xb8v\xba\xf6\x17\xfc^p,\xe7#L7 iFf~\xa1\xdb\x0b\xca\x95\x0b\xbcQ\xd5\xa4\x97\x82\xfc\xb7\xd8\x0d\xd3\xf8nw\x88dj\xb8w\x9c\x12\xe1\xec\x1a\xa9\xb0\x06+\xab\xabta\x1a\xf6<6\xf2\xfeA\x98\xa7~1[<\x8f\xc3\"\xf4\xa3\xef9\xcb\xaa`J\xc4\xc3n\xff (\xf8\x12\xf1H\x13\x9c\xa0\x9f\x94\x05\x1b`\xc1\xbaz\x01\xb4\xcd\xc8\x9c\xde\x04B}E\xcehs\x13\x06\x8a\xcf\xe7\xb0\x0f\x01L`\xae\xffhU*\x15\x18\xa5\x8azu\x83\xfd\x86z\xef\x9d\n\x1f(\xa5\x1dZC<\x18p\x07\xc9 \xb24\x9d\xfd@\x05'yRf32\x81es\x04\x86\x83\xb2P5\xd3\xbbW5K>\x01_\xc1p\xcb\xfc\xf8\x04\xcan\x0dr\x99\xfaq\xf0\x8c\xa4\xc5b\x02#\x85t@\xf0\xdbJ\x01\x9c\x80\xda+a\xb8\x83$\xac\x02\xf8jA\xd8\x9c \xc2d\xe2WQ\x9f\x13&z.\xe4\\w:3Y\xfb\xa3!\x12j M\xd5\x15\x90\xd58B\x96L#\x06\xec\xdd\x19\xe8]\xe9 \xefz\x8c\xa7\x15\xe9\xa2\xad\xd2\x90\xbc\xc5\x14\xeb\x95\xb0\xaf\xad\x9e\x18g\xcc\x89\x9d\xee\xed\x05B\x98\xc8\x996\xedh\xd2L\x12\x03VJn\xf8\x17\x0b\x8dW-\xfa\xaf~\xb2\x19\xff\xd4\xd4\x81\\\xc9zS\x818X=f\xaf\xf2\x83\"i!\x04Y\xdbCQd2\x87Z\xd1nY\xbd\x8a\xd1\xc2\xcb\xd3(,l\xeb\xc7\xd8r\x86)\xd3\x15\xad\xc4\xf0\x186a\x9f\x1b\xb3\x11X\x87\x91\xe3\xfd\x94\x84\xb1m\x81\xe5\xc0:\x14`V\xe0\xf2\xcat\x10\xeaM\xa3\xb8\xaa\xa5\xa9\xf5\xc5\x06\x8d\x1d&/\xfa\xe5z\xd8\xb6\xa8\xa8\xf3\xe6=q\xdc4,\xb4#\xafF\x91\xb2\xe5#\xef\n\xf6 \xc5\xb7\x9f\x1b\xf13S\x918 /\xe8\x908!/\xe8\x908>/Pz\xbb\xcfT$N\xce\x0b:*\xcf\x88\xdb\xe9\xd6c\x9d *gf\xa0rf\x9f\x9e\xca1;e\xf6P9x\xa5\xbb=\xc2\x90U\xa1'L\xce\x18\xd3\xd3k\x88M\x9f\xd0\xcbI\xc1\xbe\xaa\xd5Hx\x06\x14gY\xee\xe3{?\x0b\xfd\xd3\x88\xa0\xc8c\x85\x0e\x85R;\xec#\xc8bn\xb3^(\xfa\xd3\x7f\x951O\xfc2\xcbH\xcc\xbf4\xd3j\xd5\xa4\xcfH\xf1\xa4(\xb2\xf0\xb4,\x88m\x05~\xe1o\x9c\xf3>\xfb\xe8\xac\xe6\xc2\xa9\xaf\x06K,\x8d\x05{\xd5\x8d\x82\x91pb\x83\xa9\x0e3\xa66\xc68AZ9\xd1\x97\x9f\xfb\xd1\x04|e\xf1\xb5f\x8f\xabE\x1f\xb4\xa3\x8c\xe3\xc0\xddd_R.\x97\x04\xac\x85\x8e\xe9/\xef\x04\xcd\xdc:\xdc\x00\xfa\xafh\x90\x08\xb4\xbd7T\x9cE8\x8c\xb3\xa8\\\x8b\x9f\x85\xc1\xcb\xa4\x8c\xdb\xc9\xff\xe0\xa32\x19\xdcB^\x0d'\xa4 \xbcH\xf9\xd3\x96\xebcZ\x08%>#\xc7\xcb,\xb2\xfa/^\x15Y\xd7Z\x8b\x1f\xc2(zKf$<\xc7\xcb2\x1f\xb0&\xbd\xa7|\xc8\xa2\xc4\xb2sJ\xdf\xc9^\x15\x1f$\x955{\xe3+\xf5\xdaS\xba\xaf\x1eqk#\xd0\xb5\xab\xf9\xceD\xc4\xd1\x15@/\x19o\x1e\xc6\x81D\xfc\x0d\xa4\xfc\niwyl\xc5F\xdf\xda6LF{h\x8c\x11Vdl\x0b\xb0b\x15`\xe9\x1b\xb3CVO`\xc9\xdc\xaa<>\xa2\x96:zu\xfa7\xb1[\xf3\xc5o>|\x80\xac\xc7\xb0\x11$\xac\xd9n\xa2\xf7Cf\x92\xda_\x0fqj\xa1P\xb7Zz\xe6\x0e\xd4\x08\xb7\xa7Ha\xb31\xf4`\xdf\xa9\xf8\xc4\x8c\xd3\xee\xfc\x98\x0f\xdc7\xcd\xe9\x1e `9\x98\xcf\xc9\xac\x08\xcf\x89\xf8\xd2\x88E\xd0\xfb\xaa}\x92{\xd5\x1d\xb2k\x94|\x92MgW{\x82\x06\x1e5\xb3\x04\x87\xc7\x14\xf4\xf2\xf0g\x0d\n\xe4c\xceo*\x14\x91\xd5|\xc2\x13L\x0d\xd8\xae\xbe\x93\xc8?%\x91\xb1\x9bE\xb1\x8c\xbeA%\xf3\x8d;aa\xd1\x8c\xbd\xd4\xea\x03\x04\xf0&y\xad\xeb0fT 3\xb7k\xda\xa2\x98\x00\xa6o\xe1\x13&p\xeb3\xa0\xe6g[\x8693:C\\!W\xd7\x03\xa7\xdb\xa8\xa7\xb3G\xf6\x8a\x841N\x8e\x905\xf5\x00\x1374\xbe\x0b\x88\xa3\xb4LY\x90`\x83\x8eP\xb7A\xd6S^\x0b\xde\xbd}1\xb1\x0c]7Dg\xa1\x9d\xe1\x8c\xb4\xb5\x17\xdb\xb5d\x8b\xd3\x0c\xd2y5|\xd8\xb4s\xd2Wk\xd89\xf9\xab\xdd\xa9}\xe0\xd5c\x89\x03z\x7f\x0d\xf1\x98\xce\x1a\xda\x06\xd4~\x1bC\xea\xf1\xdb\x95\xc4\xe5\x12\xcd\x11ns\x8e\xe9\xd3\xe2\xe8z\xaf\xf9\xfa\xec\x13\x13\xcfkZ\x8e\xc6\x14V@\x050`\xbf\x06\xa2\x03\xa8\xe2?\x92`B/\xf3\xbd=Hl$\xa6\xfa\xa9\x1c\x86\x1a\xfa\xeb \x9cc\xacH\xb1\x87\x89\xfaq`\xa2\x9fm\x88\x96\xb8}\x93\xe5\xa6\xb5\x05\xb9T\xf1s\xf2\xc3G\xccW\xa2\xcf&\x0e\x86\x83\x83\xb9\x91.\x0c\x9a\x16D\xeb\xf0Q[Ctj\xf4\x88[\xeb\x05\xee\x13\xbb\xce\xf1\xed\xe7&v\x8dtb\xd7H'v\x8dtb\xd7H'v\x8dtb\xd7\x88\x89]\xebQEL\xc0\xaa\x12\xabF\x9f^\xac:\xbb\x8dXU\x12\xac(\xa4\xa7]\xad\xadVy\xdc\x92Z\xdeJy|+\x11\xcf\x9dr?}\xbcM1\xc4)F\x19\xe9\xa3\xa6Q4\xb7\xa5\xeb\xb5\x10\xb2\xa5\x98\x81I\xdbMk\x1f\xa1w\xee1+\xa4p~\xe5\xd8\xed:\x15\xd2\x17\xb0>GI8\x962\x0fE4\xe5a\xf3\xe8\xe3\x9d\xb9\x8b\xdb\x0fYX\x90\xd7qt\xd5\xc0\xbc\xedG\xa7\xabp%\xb0\x1f\x0c\x08\x83\xa1\xb7W\xcc\xc0\x80\x96\xe9\xee\xaa\xd3g\x02\xd9\x85\x1f\x07\x11y\xbd\xea\x88[\xa0;\x14\xd0(\x10\xdf\xfb)O\xe2{\xa1W\x90\xbc\xb0\x0b\x16\xc0^\xb6\x1d\xe0yf`2\xc8\xa6\x00VY\xbe\xf6\xe17m\xaf\xbc\x91vlX\xc1\"9;\x8b\xc8\xf3\xfc \x08\x8b\xaf\x93K0$\x99\x91\x1f\x19\xbf\xb2\xb1\x0f[y\xe9\xdb~\xb9W(F5\x815\x8c'\xc0\xfe2~\xa7\xb6\xc0\x84\x1e\x98\xc7\xa46\x9d\x08W\xf2#\x8fE\xe1|!\x9e\x0e\x82\xd6W\xe5\xa7A\xa3p\xa4\xc3\xea\x14t'w{f\x1bV\xb2\xa9\x80\x15\xf8o\xfa\x08\x05u\xe3\x16\xaa/\xf1\xc1*S\x1d\xf6[\xdd\x02\x02V\xb1\x82\x001\x85\x16\x9e\xe0\xb6\x04\xf5\xdf_~\xa9\x9e\xaa-Ur\\X\x93\x1a\xab\\N\x18\x11\xd8\xf8\xb3\xd2\xeb\x0f@\x0b2d\xae\x8e\xf1o\xbc\xd4\xcf\xc2\xe0]\x1a\xf8\x85.\x08\xc2M\xd7X\xa2\x11\xf8*\xcbo\xb4\xeb\xac\xda\xa5;\x9a\xb2V\x10\x05+\x1e\x86a\xeaxXA%\x0f\x15ie\x88\xb6\"?\x99P\x9f\x0f\x101A\xa5\x9f\x1fx?\x86\x98O\xce\xfa\xba,\n\xb3c#p\xba+\xb3\xad#rY<\xc9\x88\xd2\x15M~JV}\x11\x9e-\xa2\xf0lQ0\xb0\x9a\xf4T\xe1\xee\xab\x97\x9ef\\zz\x13W\xe0\x81\xd2\xd3\x94U\xcc\x0c\xa3@\xf2\xad\x8f\"\x1f\xaa\xf0\xd5SK\x91M\xcer!9\xee\xd9'\xc7\x85s\x13\xa3a-vk\xab\xe7*o^`\x19XS\xbfo\x99fC\xe6%b\x11\xa8\x82R\xf4\xcf\xe9\xc6c\xab|\x13\xf8\x94\xdfqH\x9bX\xb8Rz\xfe\xb4\x15\x01\x15,\x17\xce\xf1_\n\xa2\x06 \x83y8\xbd|\x1e\xacd\x17\x0b\x9ck 3\x12\xe0\xed&\"b\xf6~\xc5\x08\xa2\xfa\xe0\xf5\x7f\xd1q\xae\xe8\x91\xc7\x00\xdb\xbb\xbb\xdc\xbc7~\x9e_$Y\xb0\xf2\xe6\xfd\x11\x9fO\xb1w7\xdb\x0d\xbf,\x12z\xddG\xa4\xa0\xbb\x12\x93\x8b\x8d\x94\xcfu\xc0\xd7\xb1\x08\"8\xf8\x0b\x0ea+|q\xf3\xdd_\xe8\xfdkz\xc2z\x88\xa7\x07\xdd\xe7C\xf6\x85>\x84^\x9e\x83,\xe4\xa1\nf\xda[\xd5\xe0\"\xc8\x8a\x0dF\xf4\xda\x12\x11\xb6\xe4\x94\xf8\x19\xc9\xf8\xbdj\x82\xf7\xdf\xe9\xc6\xc3\xe1\xdd\xea\xca\xbb\xf1u\x87\xd7B\xf0\xd9]u7\xba\xe6\xee\xf6\x8ac\x16\x89\x16.\xcf\xe7\x86\"\x87_m\xab\"\x9c\xbb@6w\x81h\x86#\x99\x01\x08\xc6\xe8\x7fl\xda\xa9a\x08\x81,\xfb\xeb\xd4\x11\xab\x12\x0c\xf6\xfe\xed\xd1\xd1\x1b\xccLK\xe2\x82\xcbR'P\xc6y\x99\xa6IV\x90\x80IR\x08\xa5\x97\xac\xffh\xc1:\xa4\xb0N\x7f\xddN\xfc[\x0f\xaf\x16\x017W8\xed\xb3e\x919\xf6.{\xd1\x002\xb9)c4r\xc6\xab7-\x98\xf4\x1b\xcf\xb4\xab\xccLH_+D\x0b\xb5\x1e\xd5$3c33\xf1e\x95\x82\x92\xaf\x1d\xcf\xe9\xc3\xc4e\xfd\x02$w\xb3\x00\x9d\x99\xa8\xb2\x92\x1b\xb3\xbe\xd1;'O}J\xe3\xd6\xab\xa7\x96\x1e*s\x9d\xd1\x01\x9d\x99\x00\xca\xb4\x9cd\xc8r2Q\xbby9\xd9\xc5=h9\xd9\xeau\x86l\x17\xd5\xec\x15\x06\xb7\xf54\xe5\x15\x87\x9e\x94\xbf\xe2\x11\xa4E\xefT3\x96g\xbe\x17r\xe2\x95\xa7*\x0f\xdbp\xdbK\xd0\x90\xd5\xd0\xa0\x1fL\x15\xe9G\x0d0tM\xb4k\xa9r\xbc\xfa\xf4\x07q\x05LT-\xa7j\xe4\x03\x82\xc8\x19h;\xe5)T\xc7\xa9Q\x07\x8d\xcb\xebxn\xd2\xd5\xe17\x12\x08B\x87\xa0\xba\xbd\xfa\xf2ws\xf6MZY~\xfbp\x03\x85\x82\xde\xaaYGW\xa7\x06 \x96\xf7\x95R>k\xf1\x80$\xa1\xe7\xbc\x8d+u\xe5;pKo\xea\xa2\x11[p\xb8;t\xdb\xa1\xba\x9eT6(\xc2\x9b\xd6\xa3Z4\xa4*U\xef\xfe\x8d\xe2Yw\xe5J\xffhB\x83\xed-\xbd\xd4`\xab\xc3\xd3\x87UQ\xc7\xad\xd9\xaf\x8a\x1e\xe8d\x07\xdb[\x0fu\xd2\x83\xedme\x8ckV\xf4yX\xf2\xc9\xfb\xd9lHX\x8dHym\x9aSyR\x16\x8b\xe7\x05YJ\xb9\xc7\x9b\x15\xea\xec\x0c\x93ZR\xd0\xacR\xa7\xa26\xa6<%3\x1e\xb6\xd0\x9ba?\x98\x90\xeb\xeb\xab\xe7\x01\x89\x8b\xb0\xc0\xa06b\x08\x7f&W\xa8*\xc2\xbe;\x8db`mQ\xf5i\x12\xe7\xe5\x92\xe4?0\x01\xd1JB\xfb\xdea\x17\x8aa\x8b\x0eQX\xe0\xd8Ek\xd0\x9a\xe12_\xcf#\xfft\xd0\x00\x05\n\x97\xd2\xf2\xb1\xbc\x0f\xb0\x8f\xd1\xe0z-%\xea\x0f\xbf\x0f\xf3\x10\x85'k\x9bj*\x8d>\x14FN\xfd\xd9\xfb\xba\xb2:\x1c\x14\xa2QK\xd4^uP\xdd^\x0cCR\xcd\xc00(FO\xab\xd7\xde\xec\xc2\xa5\x98\xbbzT\xca5U\xf6\xa8A\x1f\xf0\xb9j9\xf4\xbb04z\x04\xd3n%\xf1Qv\x95\x94\x05:\x07\xeb+'\xbc2\xf3g\xee\xa9\x1cr\xbd\x99X{}M\x96\xe5\xd2\x8f\xa2\xe4\xe2(\xbbz^\xbc.\x0d\x96P,\x87e\xc1\xeb\x1d\xc4\xfei\xa4\"\xd5\xc4\x83\xf1\x1f\xbc\xb9A\x0b\x12\xad\x10\x0e#\xa8\xebb\x1ag}\xcd\x05\xd6\x1c\x18L\xf6\xbc\xaa\xdc\x1b\x1fv\xc9\xb6`H(\xd9\xb3\xaa\xea\x80!\\UZ\xce\x97\xa8\xc5\xd4\xd7<\xad\x06\xfb\xc6\xa8\x13=a\xdd\x0b\xad\x8e\xbe\xe2\x05\x86e\xaeQf\x8f\xc3\xd8\x01\xab. \xa5?\xd2\xc8%\xfb\x80\x07\x85;BZZ_\xfb\x90\xd5~Z\xa1\xca\x1e\x0f\xb0\xa7\xac\xfe\xdb\xdaM\xbc\xef\x8b\xf7\xb0\x07%\xa5m\x0c>\x7fO(Q\xe5\x859e\xbe\xf4\xb5^\xc3\x1e\x9c0\x16ArS7\xcd\xee\x0d\xec\xc1\xa9\x97G\xe1\x8cP\x9c\xb51rx\x82\xef\xc6\xf7F\xe5\xdf\x8dS\xad\x1a\xb4oZ\xcd\xcd\xc7\xe8\xacO\x05w'}\x0eP\xf5\xdd\xb8\x9f\xd5\x838T>~\x155\xd3\xcc\x1c\xac\xfdX# \x02\xc5l\xc3\x82,\xc1\x82u\x9e}\x8b\xd9\x93v\xae^\n\xf7\x96\x8f\xaa\x1b]2S\xc3\xca\xac\xa0\x13\x1c\xa6\x04\xd5\xf6\xc4#2W>F\xf5ZQv\x86\x1f\xba\x9a\x9er\x0c\xd9x?\xd1~J\x83\xf9h\xdb\xd9\"\xb9\xfe17\xb3F\xedR\xcce\x17\xcd\x9bu-\x1c\x98\x06J\x18\x0d\xa2\x14\x8b\x88\xa7A3\x193=6H1]r 9K\xb3\xf1\xb4\xdd\x02*\xe5\xf5\xaf\x1b\x1e\x10r=\xf4fI\x19\x17\xf6\xad\xceD\x0b\x1c#2\xa0cmg\"7\xcf\xb0\xee$\xc4\xb8zO\x14\xe7W\xa0\xa6\xaf\x96\x0d\xa8\xb3\x18<\xe2Y\x12\xc1,\x89N\xd8\x85\x03\x8d\xdd\x8aN\xd0IK7\x13\xeb\x15\xbap}\x8aq\xc8nO\xda\xe1<\x93}\xa3\x1c\xe3\xb8\x1a\x99\x94\x06\x99P\x82\x8c:%\x9f \xee7\x9fV]\xbd\xf4S/\xcc_\xfa)\xf3\x17R\xd8\x1f\xd2\xe7\xda\x0e\xa5\x8e\x07&o\xd2\xcd\xe7\xa2\xcf\x8fh\x1e\x1bc\x95@G\xcaj\x88ZB\x1fA\xc1O\xe0\x94\xd1\x80}\xd9\x84j\xb6g\x02\x06\xfe\x80>\x99\x7f\x81W\xe6\x04z\xe2T\xa4\xac\xd6\xa2F]?\x84\xc8\x82\xf8\xb5|\xc9\xbe\xc2\xf4%\xc6v\x98\xdb\x94\xec\x94h\xae\xdf\xcc\x04\xd4\xe7\xa3#\x7f!\xa4H\xf2\x97-QV\xff\xbaK\xb2t\x03\x07%jsNo\x02\xe7}\x8b)\xb8\xb7 \xf4\x04\xd7\xaeBEN\xe0\xbd\xb6\xa2.^h#;\x1c\x06\xd8\xbb\x0b,\x7f\x13\xe31m\xc7i}\xdd\xbfJ m\x90o0\x01\xcbj\xdc\x9bm\xb2\xe6\x8e\xee\xad\x8a\"\xab\xef.\xb8\xcbY\x1e\x1a\x07\":\x9f\xf0\xb0\xe2\x98Z\xb2K\xb8\x1a\x0e\x8a\x8c!\x14,c\x1f\xc1y]-\xf5\x13\xdb\xa1\xa4\xe2\xeb:t\xab\x9e9\xb8\x93\x95\xff\x87d/oJ\x0f\xd7\xe0}\x82w=\xa3\xda_\xd7r\x01\x8c7\x80; \xfd\xa9\xbd\x81\xb9$\x03#%\x1a \x83\xa6\x87\xb1\xae\xda\xa5iN\\\xe6y&\xe2\xfb>\xade4\xdc\xff\xe8\xccmk\x8a\xafL + y\xf2 \xf05\x10\xe9\x00\x1c\xef=\xb9\xc2\x1b\xdfH\xa8\xf3\x8b\xa1_\xd8/\x9e\xa5\x97\x93\xe2mg\x06\x03r\x1c\x8bh\xf8fd\x0dm\xdcn\xacmr\x0f\x1e\xc6\xfeI\xd1<\xf9\xd2m\xa0\x06Zw\xcaM@r\x93\x83t\x17\xb8\xf1\xa9\xd1,\xb7Blo\xf4+\xd2\x08\xfc\xf8zP\xbd\xef[\xe0\\\xbd3\x01s\x9d\xf8\xa1/\xf9\xaf|i\xaf\x06\xc1\x03\xdc\xdc\xb5\xa6T\xedG\xa85W\x9be?\x84\x03W0\xcck\xea\xdb\x8e)\x0f\x19C\xe3\n3D\x9d\x12\x0f'\xb5\xe5sY\x0dr\xc0\xa9\x84\xd5h)\xf1\xf0\xc3\x9c\xd0^\x9f\xc7L5\xd4\xfba_\xa4\x90\xc1\x88g\x95 ~Fh\xa7F\x97\xab_\x03Z|t\x03\x8bo\x95\xa5\xf7\xb9\xe8M\x1dD\xb6%\xa9\xe9\xcb\xb5\xd4\x12\x01\xf5Uoi\xb8\xba\xda\xcd\x86\xbe\xac\xab\x92\x95\x94\xdb\x13\x98\xd6!SZ\xf1h\xe9\xaa\x06\x06\x1b\xaf\xf3\xcf\xd0\xa8\xc6e\xa6\x0b\x1d\x03\x16\xcc)\x95\xc1\x1e$H\xecdM\xd3\x91\xccl:\xd2\xf4\x93k\x81\xac_[\xe8\x89W\xab\x98)\x0e4\x94SZ\x83\x85\x83\x84\x9a\xbaZ\\?\xadod\xe9G\xea$\xedyq\x15\x11\x9de)%\xfb\xcf\xb2\xa4\x8c\x83\xa7I\x84\x19\xdc\xff\x7f\x0f\x1e\x9e\xce7\xb7\xbb\xf7t\xeb\xe4\x19\xc6\x92fj\x19\x9dL\"\x9c3\x1bx\xab\xdd\xa8E\x17\xdf\x92O\xfegj\x0d\xd6\x03E\xd9\x10(\xd2\xd8K5\x0dj?\xcf\xe9\x07\xdax\x16\x81\xce\x18.\xd0\x19\xc3\x05:c\xb8@g\x0c\x17\xacf\x0c\x17\xa8\x8d\xe1\x82\xda\x18\xae\xebd\x93r\x0f\x81-\xa5\xb1[\xf0\xe9\x8d\xdd\xcc)\xfe$c7\x15\xed'\x19\xbd(L\xde:\x9e\xc2\x83M\xdbn\x95Q\xf8\xf31\xbf\xe93\xae)jO\xe0\x1es\x11JPO-t\xde\xd98M.\xadc\x03}O!L\xeb%\xcc\xd7i\x8d\xf9M\x88\xe0\xc2\"\xeeX\x9a\x91\x99_\x08i\x80\x1dsI\x8e\\\xc0.\xd7>U\xda0\x86\x8e\xcd\xa7n}\xe3\xc2\xcf\xe20>3\x89\xffE\xdd\x89uW|e\xec\xfd\x94\x84\xb1m\x81^\xe8\x91\xe8{J\xbd\x97t\x16\x1d\xfa\xf3\x97kW\x86\x01\xc3Pd\xb9\xb9\xc9\xb6\x88\xa4\x94#5d\x0b#\x97\xa9\x1f\x07\xcfX\xbd\xbaoOzO\xcf\x9b:\x01\xd4\xcd\x1c!\xfb\x1c \x19_\xa6\xbf\xb3\x16\x9f\xe75\xf4\xef\x0e\x1a\x9f\xad\x83\x86\xc15C\xaf\xa8\x890\x91c\x97\x89\x02~\x93\x87\xde<\xc9\x96\xbe\xa2_\xee\x92\xc1\x03\x9a\xab\xfd1\x84K\xd7\xda\xde\x1eD\x18\xd9\xfb4\x8c\xfd\xec\x8a\xbd\xc1\xecB\xd6\xa9\x9f\x93\xddm\xf1F\xef\xa9\xc1@_\xef\xd2\xa0\xf4\xe4\xe0\x01\x12\xe7\xa12\xdd\x90\x84\xeaJ\x1eS\n\xf6\xc1\n\xe3s?\n\x03\x8b\xc9\xe0\xbbm\x86E\xd4\xfc\xa2\xd4\xd4\\E$\x9a\xdbU\xcaK:\xda|\xba\xa9\x08\xd2\xaf\x90\x07\x04a\xce\xd9\xdc\xc2\x0b\xf3g\xfc\xaf\xe6a\xf8\xcch{\xb7\xca\xbd\xdfL\xef\x0duR~\xe1\xe8\x9e+\xde\xd5u3\x92\xa7I\x9c\x13I\xea\x01R\xa6\\\xcd\xebJ\xde\xc3\xdbnEN\xd2\xb9\xcb\xc6\xf6}\x05\xd6\xd3\"\xb7P\x8b\xdc\x8c\x84R\x15\xf0\xacP\x06<\x8b\xab\x80g\x94\x88\xccX\xc0\xb3\x0c\xbe\x82\xe2\x11d\xeb\xeb\x0e\xc4\xd3\xac\x19\xf0,\xd3\x07<\xab\x15\xf0&\x92\xadJzwx\x95\x17di;M\xdb\\\xfc\xeb\xbb\x9cN\xc7HW1Z\x96\xd9e:v\xc6r\xbf2j\x96\xad8?\xde\x0d^L<\xad\xdb\xf6\x0f\xdd_\x8a\x8d\x0c\xcd\xd1J\x854\xb6\x80}\xc0\xd4\x18\xcd\x06\xacc`\x81t\x9b/\x95x\x0e)\xd5\xe7\xb1\x1d\xf3\xec\x05-XW\xc0]kl\n\x03\x88V\xd3Sag\xfa\xcc/|\x8b}\xe22\x85\x03\xcbZr\x8c}\xb78YWw\x18\xee\xaa\xffn\xe3\xa6\x81\xa8N\xeb\xdd\x8d\xa4\xd3\xba~(j\x84\xd2?\x14q\x1eT\xae\xcc\x98\xb8\xa1\xbe\xf0\x84\x0f\xb3\xd6\xc9:\x91P\x9b\x9are~\x00Ul*\xc59\xc6\x80\xa2\xfb0\x0d\x11|;s\xc2\x98\xcf.\xc4\x02\x94\xf5\x15\x9a\xe7\x0bH\x94\x13\x15S\x8b\xbc\x96\xa6\x9d\xa2\xdb\x8ei\x1b\xb3a{\x93\x0f?\xc8\x9f\xc9\xa6\xc4C6\xc5\xbc#\x03\xb7#6n\xc7\n{\x11W\xaa\xb4\xcc{\x9dq\x17\xf5\xd4\xb1\x1d\xe5\xd6t.\xed!\xfb\xe3Br\xbb\x9d {w\xc6\xef\xdb\x99\x84\xc5\xddeq>\xf7k\x84\xe2\x9b6\x8a%#\x17\xa8G_M\xb5e\x08Mn\x9d\x82\xa8\xa7\x89G\x9de\xa3\xb4}\xa2\xbcrl\xdah\xac\xd9\xb6\x81\xb1\xbai\xeb\xa5\x97\x914\xf2g\xc4\x8e\xc9\x05\xbc%g\x07\x97\xa9m\xfdb\xc1:`D\xc6k\xcb\x05\xeb\xccr:*9\n\x11\xa5\x04\x1f\xf8\xf3\xf7\xa5+\x95\xca\x8e\xd2\x8e\xedqG\n\x1a\xf2\x92Q'4\x0fSX\x8c\xb7v\x95T]\xf9;\xb2\xac\x14\xfb\xfer\xed\xb6\xa5\x82\x99\x0b\xbe\xf7\xee\xcd\xb3'G\x07'\x87\x07/\x0e\x9e\x1e\x1d<;9}\xfd\xea\xe8\xe0\xd5\xd1\xc9\xd1\xdf\xde\xfc\xfbZ\xaa\x88\xe0\xd5\x16\xf5\xf0\xcd\xebW\x87\x07\xbf\xcf\xaa\xeadR\xaa\x98\xac=\xeb\x91\xb8\x10\xeaH\xf1U\x16\x84a\xaf\x93\xef\x9f\xbc}\xfe\xe4\xeb\x17\x07w{du$\xc4 \x0c\x16{\xef\x89\xc2\xa8\xc5\x17K\xad\x069 \xef)\xef\xfe\xcc\x85\xd0H\x11b\x05\xe3V\x94.\xf8\xcd\xf5\xcdnq%\xd72\x8fQ[\xbd\x97\xf0\xd7;\x0f\xa4\xfb6\xa1\xcb\x82y\xf4\x92\xec\xc0\x9f-l\xbdh\x01\xe9>\xef^\x18\x07\xe4\xd2\xfb)gr?-\xd5Gw4\xb1U1\"\x88G.\xd3$+\xf2)#\x80R?\x9f\xf9\xd1S?'\xdf\x84\x11\xa1\xdb\xe8\xd8\x85s\x8c\x1b#.\xd1}\xe9w\xdbAH\xba~\x07-\\loo\xefR\xb2H\x8c\x03\xd7eg\xb43\xe8k\xc3\xb2\x0b\x1b\x8d\xad\xb1L\xd0\xd4\x11\xbd\xecU\x0c5*Z#\x93\xa6W P\xdfd\xc92\xcc\x91r\x89\xed\xed\x9d\xfb\x8e\x0b\x87H\x91\xd7\xa65^^\xf8Y\x91\xff\x102\x0dIlo?\xd8\x1d4\xc3\xd8~8FM\xef\xc3\x07\x9dU\xda\xde\x19\xd6F\x1fpno?TB\xe7\xf6\x8e\xca\xc0%\xb6\xef\xb7_3b\xef\xfeHZ\xe9\xe6H\xc7[\xf7\x1d\x1b\x05n.X\xf8\xaf\xd5\x83\x87P\xbbt\x82\xd2;\x9b\x08'\xb3\x13\xda\xff\xa6\xf8\xe3=ES\xf5~\x18\x92x4T\xa6'\n!|\x15\xac\xe0Da\xd7\x18W\x85\xe1\xfa\xba\x12{\xac\x11\xdcTxL\x19\x94J\x9cm\xd7s\x10\xa2\xb9\xc4\x1e\xa1MzB\x0f\x9bE\x0f;\x8b\xd3\xc6\x8d\x0cYZ\xd9\xfa\x1d\x992\x99C\xec\xe2O\x89;\xbav\xab\xcah]\xf3D\x08*Q\xd7\xc0W:\xb3Y\x17\x0e\xfe\xac\xabg\xb6E\xe2\"\x0b\x890\x9co\xc3\x8f\xbc~\xf2F\xca\x0b\xac\x8e\xd0\xd8\xfb\xa5j\xaf\xf9*\xaaP\x17\x8b\xb9\xda\xdd\x93 \x89)\xdb\xb2f\xa6\xfdoy.F;\xeas\xf1\xb0\x1d\x95\x91\x1d\x8b\x87m\xc1\xb6\x8f\x9c\xc6#\xe9,\xeflb4\xf3\xd8\x1e=tl+,H\xe6\x17\x98CV\x0f\xbb|q(,\xd5\xb3k\xa1\x82>y\x1b\xa9\x11\x11\xc6\xef\xf6U:\x9e\x98\\\x16\x142Gn;u\x00\xed.\xc4\xb6)+\x0b\xcf\xaba\xaf\xb6\xdc\x12\xc2Q\xdf\x86[\xbb\xeau\xdd\xd5\xe2\x95\xedm\x07\xf6\x95\x9coHr\xe81@N\xecv\xa2\xa1Jk\x10\xbb\xb8y!\xaa\x07\x90\xda\xadT\x079S\x16\x94\xf0\x18\xf2G\x0ed\xde\xdc&\\\x182\xcd\xd7\xd7\x8f](\xa6q[\x08!\xa8\x8c\x9b.\xd8\xfd\x91\x9a|\x18\xa9!q{g[\xb3duw\x1a8\xab)\x0e\x96wFGQ\x94l%\xf4q-#$9\x84\xcaES U\xa3\x14\x1c#\x05iBI\x1cv\xa9\xc2\xda\x9e\xde\xb5\x117\xed\x11D\xf0\x18f\x8f\xf46\xc0\xb45\x9bne>\x9d\xad\xaf\x1f;\xb4\xcd\xd2\xa9\xcdU:\x1f2\xe1S\x7f\x970[_\xef\xe9\x16\xaf\x87\x19\x841\xe4Ho\xe4\xd3\xd91\x0b+\xea\xd4r\x0f\xac\xf2\xe1\x03j\xa2\xaak\xe5\xcb/a\xa3\x19\xbbhE\x1c'a\xb3]\xd5\xa9{\xe9\x17\x0bo\xe9_v\xc1\x88\x95\x84q\x1f \xe9\x11\xba\xcd\xb0\x0dq\x1c\xf8\n6a\x9f\x9e8X\xa7C\xdc\xa4\x97 C)7F\"\xea\xf9P\xac\xbds'\xc0\xaf\x83\xfc\x10\x83\xb8SHbD\x9eM k\x0d|\xb3#\xa2\xf3k\x8dPp\xc8\x0e\x88B+\xc1\xc6\x94\xe3\xda}\xf8\x009%/\"\x14\x87\xf1X\xb4\x9c\x9a\x9d\x80\x8dr8o\xb6\xf0\xb3\xa7I@\x9e\x14v\x8ek\xbe\xb33~\xb8K\xbf\x0d\xe11\xec\xecn\x8d\x1e\xb2\x86\xd6a\x84\xe0\x87\xb6\x04\xb6\xdf\xf9\x98V`\x0d\xecn\x8d\xb1s\x9f6p\x7fk{\x8b\xf7\xcf\xeacGt'a\xc2\xdf2/\xbd\xdc\xc5N\xc6\xb4\xcc\x87\x0d\xde\xcc:\x1d\xe7\x06\x1f\xd4W_\xc1h\xd3\x81u\xd8\xdd\xd9\xd9\xda\xbd\x1b\x08\xef\xdc\x1f\x1c vu\xd8\x90\x02\x8b\x83\x12e~\xa5\x0d\x8a*\xdc\xbd7\x90\x19\x13\x1f\xb6\xc4\xf0\xc5\"K.\x802\xef\x98%\x1dO\x80\x05a\x0eqR\x00R\x00\xa7\x11Y\xd3X~dv\xc1\xa2\xf0\x11g\xc5sB/\x81\x07\xc88\x8c\xb7\xb7\xf1\xdf\xed\xdd\x87\xec\xdf\xfb[\xec\xdf\x07\xfc\xfd\x83\x9d\x0eg\xb1\xbb\xe9\x08\xaefHg\xbd\x84\xd4\xaejgd\xd2(\x99\xc6\xf6\xe8\xbec[E\xc2N\xd5\x91\x7ff!\xdbi\xfdlQVn\x9d\x82\xfc\xda\x1eX\xd3\x04o{\xf8\xf9\xd8b\x0c\xd7\xfd-\xc7\xe6\x14@\xed\xc9\x00UCV?mU\xb5\x89\xe9j\x90l\xa7\x90i\x1dK\x1ah\x0c\xa94d-\xe4\x85\\\xa3\x1c\xfe\xa6\xc32\xac\xd8\xa3\xcdQ\xbf\x0d\xf5}:I\xb5(\x9f\xae\xe3\x03\x87Y\x1e:.X\xbe\xd2\xfe\x10\x83ik{i\xf7\xd6)l\x99\x088\x9e_\xaf\xc1\xa0\xf9KDK?\x11\xa2\xb8;0)\x0d\xbb4\xc4\xd5\xf8\xa8s\x0c\xd5z0Le#\x9d\xc3*\x02\xb6\xcdTG\x02$\xd8\x86d6\x13U\x89\xf3U\xf5\xa7\xd2\xb0\xe9\x1bE\x1e\xe5\xf5|\xf56\xd7>\xcep\xdb\xf8\xc6z\xea\xc7\xff\xb1\x80Y\x12\x9f\x93\xac\x00\x0e\xe9E\x02i\x16.\xc3\"<'\x8c\xcdZ\x95\x9a\xef;\xf3\xdb\xbbm\xc91\xc3\xc6\xe3\xed-%\xcd:RJ\x15Z\xec\xd3\x03\xc1>\xdd\xff\xef\x99}\xd2\xb0\xa5\xdb\xbb\xea\x95\x1dw\xc48>\xc7\xca\x94 }~p\xf2\xe6\xed\xeb\xa3\xd7\xed\x80\x15e\x9b\xdfo\x16\xb7\xc5\x01\x9d\xf58g\xb9+\x0b\xde\x15E\\\xe1<3D\xc6@+\x0c-5\x84$w\xe1\xa1S\x90\x17\x84y\x1a\xf9W\xf4v\x88\x93\x18\xf3E\xdb\xe3\x9d\x11\x9a\xf5\x938x\xba\x08\xa3\x00Y\xb7\xc2\xcb3\xcacX?\xf9\xe7>\xf3\xe9\x9dXU\x16J\xee\xfb\xf7C\x18\x07\xc9\x85\x17$3\x14\xa18^\x92\x92\xd8F\x18\xb9\xc8\xc2\x82\xd8\xd6W\xec\xd3\xc7\xa2\x8a\xf7\xcd\x1eC\xd1_\xfdx\x8f\x17\xa1j\xd7\x9bEI\x8e\xe9\x0ds<\xc1\xdf<\x82lc\xe3\x91\x03\x01\x89HA \xaf\x01i\x1aN\xb3c\xbdMYn\xb7`H\x8dI\xf9E\xc1,8)\x9dfD\xad\x889\x95tF\\F\x11J\x90)\x15g\x97-x'\x0ecpcrA\xf9\xbef1s\xff\x8aYZ^\x82\xa6g\x98\xd5\xc2qei\xab\x90p%v|+\x9a\x7f\xa46\x1e\xec\x9c\x08\x0e\xf9\xdb\x0f\xf4\x94\x1f\xbd\x98\xff{\x90\x1d\x8cF\x0f\xd4d\xf1\xb8\x8d\xa0\xb9\xf0`w\xd7\xb1\xd7\xda\x02\x075\xca\xb8\xc1\xfd\xce\x97\xa8\xe4\x84t\x17\x17\xe0\"u_Sfiz\xacX\xf3\x98\xf2\xd5\xa5\xc3\xa4\x04>\x8a\xf31%<^\x9b\x91\x88,\xa4\xf8\xf0\x11\x14BX\xcb\xf7\x03\xbf\xa3\xa8\x01w\x83\xb9\xa8\xfc\xa7\xd0\x8e\xb0\xb5\x0f\x1f\xea\xd6\xd4[\x14\xddt\x8b\x1e>\xd4\xac$\x83N\xdb\xfa\xd9r\xd0\xd5\x82\xd2\x81\xcf\xf3\x83\xb8\\2\xbe\xc1\x96`\x18L\xe6\xd1\x82\xd2=\xac\x93\x83\xd0s\x8d\xe6;y\x1a\x85\x85ma\x8e}\xde!\xb9\xf9 \xed@\x95\xd0ti.\xa7m\xdd\xdc{'\xd3\xe0\xd6\xff]T\xf5\xdf\x92\xa8J\x83\xb2\xb6w\xdb\xef\xc3\x01\x94\x8c__\x94\xd5\xc5e\xbcN\xcfH\xf1FT|=o^\xab\x1aX$\x02\x9d\x01fp\x0e\xf1dMQ\x1b\xad\xa2\xf0)\xa9\x90\xc4y\x91\x95\xb3\"\xc9\xd0\xe4 \xc28/\xfcx\xd6-\xddo\xfe-\xdd\xbe\x93\xe6g\x1c\x0f\xec\x83\xdf6\x00_q\xfdw\xb6nz&9\xfe\xc8V\x17XT\xf7'g\x1f(;P\xb1\x0c\x0f( \xcd\x98\xca-\xc7\x15\xde\xf0[\xfc\x82E\xc6\x80'\x8f\xb5G\x9bc\xc7\xe5>\xb5\x94Z\xc0\x83\x1b\xb5\xb8\x05\xf6\xaa!kp\xd1s6\x17\xba\xb3\xa0\x13m\xe1\xe9\xe1\xe1\xdb2\"/\xc2\\\x11\xec\xe0\xe9\xe1\xe1!%M\x9f\x91Y\xe4\xb3x\xd3\xdd\x80 O\x0f\x0f\xd1\x14\x817\xd1.\x8dB\x12\x17o\xc9\xacP\x97?{\xfd\xd2X\xc8\xe6\xa2->J\xde\x93X=\xf8g~\xe1\x1fe~\x9c\xcfI\xf6\xbc Ku\x1b\xdf\x84\x91f\xe4\xdf\x1e\xbd|\xf1$\x8a\x9e&Q\xc4\"P\xa9\xab\xf4\x95\x7f\x93dK\xee\x85\xa4\xae\xc0\x9c%\xb4U^\x92 \xf4\xd53|\x19. e\x89qs\xbb_\xbe\xf2\x97$x\x95\x04\xe4\xa5\x9f*J\x93@\xb3\xebo\xfc0\x16\xe1O\xd4K\xf3&*\xcfB\xc5|\xd9{\xcdp\x0e\xbf\xff\xd3\x0b\xbc\x8a\xd4m\x1e~\xff\xa7W\xe5\xf2\x94d\xda\xe27\x98%X\x03\x0b\xb4< c\xcd\x80\x0f\xbf\xff\x93 \x90\x0e\xbf\xff\x13\x83\x94$\xd3\x80\xc9!f\\\xfb\xba\x9c\xcf\xb5\x03\xa4\x07\xe5pAH\xa1^\xd5#rY\x1ce\xfe\xec\xfdS\xddQ\xa9jh\x8a\x93rV\xad]Ur\xed\xa2+zb\x07\x945a\x94\xf89|\x05\x0b\xc1s\xc2\xf9\xfa\xba\x8aZ]\xba\x18\xc9~1=W\x18\xbcQ&4\x98\x9e)JN\x91\xacW\x95\x9c\xc0\x1e\x9cR\xa4\x7f\xaa\xba\x90\x80_\xc5'H~\x9e\xd0\xfb\xf7\xc3\x07(\xed\x13\x17f.\xa4\x8e\x0b'\xd3y\xfdn\xee\xc2\x19E~\xd33\xca\x80\xa5.\xa8\xe2\xd2 r]\xd2[=s\xe0d\xba\xc4\xcfC\xfa\xf9\xd2\x85l\xba<\xae\xc5\x9b0\x14a\xf7\n\x804J\xcb\xed\xfbj\xbe\x03\x11w\xe3\xbd_Q\x94:&n\xbc\xbd\xfb\xefv%\xff8v%z\x82\xef\xbec[e\x9c\xcf\x92\x14\xbdU\xda$\\\"\xfc\xf5T\x07\xa6\x123@2\xcd\x8e\x99R`\xe7\x01\x1a\xaff.\xfc\xa2\x97\xf6u\x98\xfaiv<%\xf4\x18\xc9\xf6\xf0\xca\x99\xe8$\xfeF\xd8\xfb\x0c\xed\\\x84\xb1\xa9/(\xa9\xf1v[\xc2\x92W\xc4V\xe35\xa7\xb0\xc6\xaa\xb8%*\x8d\xcf\x9c5\xdf\x16\xd4\xb0p%\xf7\xb7[\xaf\x03\xdez\x1b\x85,8\ni\xd7?\xe7\xef\xdb\xf6\x10K\xd6\xebN\x1b\xb5\x9c\xf1\xf7[\x8e\x97\x93\xd6\xba_\xb1\xb6\x1elvb\xe1\x9dr`m\x8f\xea\x84\xb7\xd6\x1e\xd5\x05\x7f\xdf\x1e\xd5\x01R\x9a\x95\x8c\xbeYx\x89\x85i\x96\xccH\xde\xf2D?\xc4\"\xae\x98k\x16=\x85=\xb0\xf8Gx\xceg\xf6e\xab\xd7\xf7f\x89\xee\x13\xb4\xb0\xdd\x83So\xde,xM\x0f\xc4\x9aY\xda[dW\x1a\x9eW\xe0\xc8C/#y\x12\x9d\x13\xbb\xbdz\xf2\x83\x1e\x1aM\xf6g\x8f\x1ea\xa1\x1e\xccS2C\xfcr<(\x1b\x96x\x88\xfd\xde\x85\xf7z\xd6\xf7\xba\xcb\xd2\x83d\xc7\xf0\x14\xfdQU|\x1c\xdf\x8b\xb7\xe4'F\xd9\x1e\x9c\x93\xb8p\x98\x0fK\xb1 \xb1\xfd\xde\x919\xb4\xa2\xd3\xcd5\xcc\xfcb\xb6\x00\x9cCK\xf9\xd6\x06\xbf7\xbdsF\x15\xb5V\xa8\xbcf\xaf\xa5\xf4\xbb\xe6d*m\xb5\xcd\xe21\xd0a;8\x85\xe6h[\xe0r\xd4\x87\xed@\xe8\xb9\x88w\xa2\x95\x88\xd02\xc4\xb7\xea\x0d8\xe7\xb6\xcb\xc4;\x99\xa9k\\\xe95\xaa\xf2\xd3\xe0.\x89wr\xcex\xcb\x11`\x8c\x9a\x93\x9c\xb1\x97\x9b\x8c\xb5\xac\x05K}p\xc5\x85\x995\x02M`\x1f\n/y\x0f\x13(\xbc\xb9\x1f\xf6\x84@\x87*A\x14?\x1c\xfd\xd5#^\x9d\x02\\\x7fm\x9649H\x96~\x18\xab\x17P<\xfa\x13,?%\xa5?\x124\x1b\x19\xf3\xb5[PP\xf9 \x89)\xfck\x0fF\x8e+\xe2\xff\x94H\x81\xec\xa1I\xb5\x8d\x81*f\x1e\x89\x0b\x92\xd9\\\xa7P\xda\x19\xf2\xe8\x98\xa1\xd8#\x97aas\x06\x7fm\xd3au\xf6\xd0\x1b\x81\xdbX\xefCd\x1f\xd8\x16?w\x1b\xb3\x85\x1f\xc60\xbb\x9aE\xc4B\n\x08Ma\xde\xd8\x14\x82\xf7!d\xda\xd2\x18\xfdK\"Z\x9cc\xc9\x04\"[\x91\x1dP~\x1a\xe7\xb2wYp\xfck>\x9f\x1f\x9fDd\xf7\x84\xdf\xbc6\xe0#\x88k\xd9t\xf8\xc8\x01\xdf\x8e\xa7\xe1\xfaz[9 ?\xf4\x90\xa0\x90\xdc\xad\x8e\xd5\xc8\x05\xd42\xaf\x89}z\xa9\x1b\x93\"z\xe6\xb5\xe9\xf8\xbf\xec\xc5Egl\xf1s\x03\xfd,\x1eD[(\xc4\xe5f\xfbxB\xb5\x13\xa5[\xfc\xbc\xa3\x80\xa9J\xe7\x14\x08(|\xc0C\xe0\xf0\xa3c\xea\xed\xa7\xde\xdeV\x85_54\xca\x80U-\xfa\xb7l7,\x01S\x05\x87\xa9\xaa\x02\xdf.v\x0b\x9b\x92u\x0e\x00'\x01J\xf4L\x0d>\xfa\xc6\x9dz\xd5\xbbv\xc2T\x8er\xaa\xddu)\xbc\x93\x00\xaf\x10\xfcA1\xbd\xcb\xd6\xa0\xf0N.hA\xe1x'\x94\xa2\xa7d\x85wB/\xc81\xfe\xf2\xc5W\xccG\xfdd\xc6\xed\x0d\xe9Eqd\x17(\xc40\x8e\xfc\xed\xb0\x91\xbb\x15o\xaeV\xf5\xac\xc5\xdeI\xa0\x03\x86\xb8\x9e\x14*\xcd\xf9\x9c4\xd7\xaf\xf9\xda\xa5\x9d\xb1\x1b\xb0:X\xf5\xe5\x073\xb4\xec9\xa5\xa7\x19\x89\x87\x00\xc2\"'\xd1\\\x97?\x8f>\xb8\xceo\xd0\xbcj\x7f(\xf1\x04\x12\xaf\xde\x7f\x17\x9e\\L\xc0\x90l\xb1\xaa\x16h\xd3\xb2\x8aGC\x95\x8bg\x18\xc5\"\x0c(\xe9}\xfc\x16/\x98\x11\xde\xcd\xaf\xf8\xef\xbb$\x03^\xb1\xbe\xb2\xde\xc0\xdb\x86\x9b\xdf\xa1wL\x05\xfe1\x03\xff\x11\x85\xef\xd8\x855\xddx\x87\x8d\x93\x8f\xcf<\x91\x01\xfb\xd7\xb3w\xd7\xda\xf9w\xe7\xdd\"2\xea\x1d\x7f\x8dg\xfd\xd0x`\x17<\x82\xe7\xa1\x0b\xe2PX.X'\x0b\xcbq1\xd4\xa9\x0bY\x9d\xc5\xbau*\xd4\xe0Cl\x04\x13\xd6n\x05)\xe2\xcf\x16r1.\xfa\xabf\xfe\xec\xe6\x97\xd5_\xd7.\xbb\xc4\xf5\x93d\xd2>A\xd9\xb1\xbf\xe4\x9b\x97\xbd\xc9e f h?\xfc\xeb\xbcSy!Wf\x84b= \xa7i\xdeco?\x189\xf6\xa1l[\xdb\x1e\x1f\x89\x07\x84\xfa\x17\xac\xdc\x13{)v\xcd\x9cS\xfc=\xec)\xd9T\xa6\x7f\xc6\xb3A\x19\xacf\xad\x9a3G\xba\x97br\xce\xfd \x19C\xefb\xfe\xe7\xa4\xb5&\xb3*\x07U\xb5\xc6\"Y\xcc\x89\xdf.\xcbi\xd9\x11\x9f\xc7\x1a\x05\x93Xp(\xcd}n\x9e#\x04\x97\xbe(v\x92\xc5\"\x13!\x88q\xeaa\x88kG{\xe5\xd41\xb9\x80\xecQ\x17\xba\x04U\xc8n\\\xfa\x86\xdf(\xa8'}\x8b \xd5GNU\x84Z\xe6=v2\xb0D\x86\xe6SoNwy\x88\xb2\x98\xe0\xcdv\x88\xdb\x89?}JA\x93\x0b\x16\xf4m\x82\n\xf5\xc6$\xe7\xf6\xdc\xfb\x13\xac\xc3\xdc\xfb\x01\xff\xff\x0d\xfc\x11\xd6^\xb7\x01\xf2\x8d \x8a\x0e\x1b\x1f3\x13S[\xc6\x15\xdc\xfe}\xec\xd8\xf2+\xa6v\x90L\xe0Y\xc7\x87\x8d.%|\xd3\x9e\x1b]\x9e\xbeM\x16\x04\xd2\x13\x15f\x02I\xf4\xb4\xe9V\xdc\xbe\xc3\x14\x16j@\xeb\xacS=\\\xbb\xa4+\xbc\xf6\xda1\x8e\x1a\xf7\xbbo\xd8|T\x17v)\x0eG\xb5o\x870\x81>\\\xd7\x19\xda\x9a\xfd\x9a\xc9\xeb\xb7\x1fl\x99\xa2\x85\x1ez\xcc\xea\xd9\xc3\x13d\xbf\x97\xc1\xc24-?\x8a\xfa\xa6$\x93\xaa\xea[\x8fa-\x9d\xf1\x10\x8b\x86`\x14\xdf$\xbc\x8a^d\x13\x0e\xe7T\x05\x1e\x9d\x1a\"4\x03o\xd2\x90$\x1f\xb8~m\xa4\xa7\xb1\xce).\xa7\xd7\xc8p9\xeb9\x0f\xb6\x14\xae\xaf\xf7S\x80\xe8!a\xe8\x1f\x90\x98F\xcc\xcbP =\x9b\xeb\xebn--\xa3\x10\x81(r\xf8\x08\x01;\xa6\xa4E.\x88\xf4iy\xcc0\xdf\xc6\x062\x18\x99\x1d\xf7Q\x85Z\xa6\x198\x98KM)\xeb]\xeb\x8f|\xe8\xa1-Ub\x87\xde\xf9\xd0\x8b%\xf3g\xbdg\xf7\xae\x00]\x0f\xc5\xc9\nP\xbc:luw\xbd>v`\x90\xe6i\x93\x08jw a;\x90\xd9\x89i\x07$\x14\x84?o\xa4\"dB\xaf\xf6\xd4\x91\xc7\xb4\x1b\xb6]\x05\x8a\xed\xb9\xaasmo\x0f\x98\x84\x07\xc2\xb8f\x0dk\xa7\x8f\x18\xd6\xc1\x9a@\x18\xcf\x92,\xa3\xb7u\x18\x9f'34K\xd2\xb9\x9a\xdd\xdc\xbe\xb8\xa3\x02\x14z~\xb5;\xf7\xf6}\x95\x9f\xbc\xc2\x86\xbb\xe4f\x01m\xcdc\xce\x9bi\xdb\x02F,\xb0W\xe3\xdd\xac\xe5C\xc2u\x1c\xa6\xdd\x98\xbb\x90\xaa\x08\xa8\xc0\x85\x85\x0b\xe7\xae\xb0\x07Ia\xbf_2\xd4Y\\\xf1\\\xa30Ze\xff|\xc5|Fq E-p\xeb\xd4;E\x13\x96\x0e\xdc(I\xe6\xb3\x9b\xfa!\xa20\xd5>sT\xf3C\x9dJ\x802|a\x9d\xe0<\x82\x00\x1e\xc3\xe9#8\xd5Y\x9a\xa2\x95\xe9\x92\x07\x8c\xbd\xb2}\x9b2#dzz\xecL7\x8f]XLG\x18+\xf0\xca\xc6wN\xed\xa7\xba\xc4\x9f\xb3\xca\x0cu\xd9<\x8ej\x13X\xa6\xf7\xc1da\xdcq\xea\x11\xaca\x97\xe7^L.\x0b\xdbq\xbc \x89\x89\xc6\x1a\xb7\x1alb\x9f\xbbp\xe5\xc2\x82\x07\x82\x82b\xd8\xd0\xae\x1d\xef\xeb\xb7\x07O\xfeL\xc9ezq\xbd=8z\xf7\xf6\x15\xec\xc1l\xb5C\xb6\xd3o%-\xe07\xe90\x90JFW\xe0:\xd8\x87\xc2\xa6\xf7\x14.\x7f\xcc\x97\xbfh_\\\x15\xafk\x8c,I<\xd6\xacB\xe6\x87\xe0'\xe1\xaf\x90\xa1\xd8\xb0rhs\xdb\xfa\xc6?4\x7f\x0d^\xab\xae!QR\x1b\x99Hf\xa0M@7Y\x98\x0c3\x1f\xe1+*\xcd\x11\xaf\x11;cv3L\x8c\x87\x86W\xd3\xe4\x98\x0b\xf5n&:\x8d\x1c/a\x98\xc3NuY\xa1f\x0b?\xf3g\x05\xc9\x9e\xf9\x85?Q\xba\x94q\xfb\x9c\xde\x85H\xbd\xc0/\xd0j\x8aNe\xde\x03\xdfJ$\\\xf5\xa1\x9a\x85'\xde\xdc.\xd0TOA\xf0a\x82\xb4\x12\xb9\xe0\xaeK\n\xac\x1aX\xa5\x90\xe3M\x88\xa7u\x14nLo\x18\x89\xfc\xa4%U\xed\xde\x7f\x82Y\x9b\xde?\x9ef\xc7m,\x1br\x16\xae\xef\xec'M3y`\x13`,\xd4\xac\xd3q H\x04\xe3\xaaB:\x1d\x1c\xc5\xd3\x12t\xfc\x01\xb8\xf3C#t\\fg\xde\x1bX\x87\xcc{kP1\xcd\xc3\xd8\x8f\xa2\xab\xa1\xd2w\x9f+\x8d\x93*j0\xe5\x88\xc5\x1f\x1a\xd1{\xacSr\xab\x92\xd9\xb4\xd5\xc7\xb1,\xa7\xd4\x1ab\xf3\xcfJ\xcchj;m\xbd\x8a\x89\xcc\xeal\xb4\xfc\xa8\x8c\xcb(\xebF\xa9\x8b\x8f<.\x86`V\x1b\x96^u\xf9\x11\x81\xb7\xebP\"\x02\xf7l\xb7\xc0\xf1\xd0\x00\x88E6\x18\x08\xf1\"\\\x84\xb9\x01\xdcB\xa5}\xad\xd0J\xc7\x1eACwn\x0b0\xa9\x953\x8e\x1d\xa3\xd2\xa4_M=dAc{\xfb\xc1}\xae\xa5\x7f\xc0\xff}\xd8\x8cj\xc7\xc3co?\xe4Q\xed\x1e\x8a\xf7;\xfc_\xfe\xfdC\xfe\xfdC\xf6\xfd\x0e%G\xf0\xdf\x11\xffw\xcc\xff\xdd\xe2\xffn\xf3\x7fw\xf8\xbf\xbb\xfc\xdf\xfb\xfc\xdf\x07\xfc_\xde\xde\x88\xb77\xe2\xed\x8dx{#\xde\xdeh[\x19e\x8f9\xdb\x0eY\x8b^0\x1aw\xc2x\x87U\x90J\xbc\x92\x9f\xf2\x10\x8f]\x94(WJ\x02\x82\xfe\xc1-\xc8CD\x88\xe6\x04k\xcc\xd0}\x84\xf1V\xaa\xa0\x19Ul\x91\x0e\x82\x94\x1b\xed\x83\xd0:o\x9f+\xb4\xdc8\xe9n\n?_$\xed{\x0c\xbeVL\xc0\xa2\xc2\xed\xc1z\x9d\xc8\xcf\xc78; \xc5'\xa3\xd1h{4\x1a9\"v>C\x18o\xfd\xf8\x8c\xebH\nYG\xe2\x03\xa6\xb3\x84Y\x12\x10H\xe9dtv\x96\\i]\xc0W,\xba%\xecc4 \x0cy\xca\xa2_\xae\x83m\x17\xb0\xb1\xc7\xca\x1dx\xfc\x18\x10~\n\xf8\x0f0\xda\x1co\xc3:\x8b\x99\xd9\x9b1\x17$\xfc\xcb\xb3\x0c[\xb7\xc3a\xbd`\xa6\x8b\x1b4\xda\xdcR`+\x0dPd\xfe\xc5pP`\xb15\xbc\xcc\xbf\xe0LiX\xcbnM\xe0A\x81\xa7d`\x12\xc3c(\x1f9\xc0-\xb9x\xe4\xd6bZ\xae\xaf\x1f;\x18F\xe2+&kiV\xa8\xc1\xa6<6X\xab\xf9w\xb3\xf4\xea\xeb\x83\xe2\xacM\xc7\xb6\x8a,\\Z&\x85y\x9b\x9bV-\xaa`\x059\x15\xb2u\xbb\x01\xf7\xc2\xca\x8e&\xd6\xdf\xa6:\xbc\xd4\xf6\xc3\xf6{\xba}\xd6\xd4\x82u\xf0YD\xce\xaeXS$\xdb\xfa\xff\xd3Z%\xff\xcf\xfac\x9b/\x8a\xea\xaau\xa5/\xda\xb5f\x03\xb8o\x90\x85\x12\x8aT\xb2\xc0\xc7\x1d\x0e#S\x04k\xb2\xe6O\xc9\xb1\xcd\xbc\xf3~\xfb\xf5\xff\xf8\xb7\xff\xc2\xe2\x9d\xf2\x9fX\xa6l\xe3Zs\x8b\xd3\xb5I\x98;s\x89J\xbe9\x86\xe3\xed0\xca\x807\xfe\x97_\x82\x9dLcZ;GWnA\xfbR\x94_\xca\x07\xb9e\xf9\xd2Z\x809\xec\xc1\xcc\xa3\xb0\xda\xc7\xa0\x81\x04\x8er0eT\x05\x8e\x803\xef6\xe1jE\x96]-w\xc1\xc2\xbc\xeccM\x85HTh\x11\x1ej\xc1\x82Z\x0b+\x8fT\xaem\xfdX\xfc\x18\xffx\xfe\xe3\xfc\xc7\x0c\xfe\xed_\xff\xeb\xff\xf5\xeb\x7f\xfd\xd7\xff\xf3\xb7_\x7f\xfd\xed\xd7\xff\xfc\xdb\xaf\xff\xc3o\xbf\xfe\x8f\xbf\xfd\xfa?\xfd\xf6\xeb\x7f\xf9\xed\xd7\xff\xf9\xb7_\xff\x97\xdf~\xfd_\x7f\xfb\xf5\x7f\xfb\xed\xd7\xff\xfd\xb7_\xff\x9f\xdf\xfe\xf3\xff\xfd\xff\xfe\xfa\xeb\x8f\xe5xs\xfc\x00\xff\xff\xf0\xc7rN\xe6sk\xc8\x19\xbb!M9\xde\xde\xc1(n-vF\x8f\x91g\xe2\x8a~\xd2{I\x0b\xd5q\xafm\xf3 $r\xc3 \xea\x02\x8a\x8d:\xe1%(n\xb1,\x8f\xc4\x01\xe6_Q1x\x14\xc8\xe9\xa7[\x8em\x89z\x96\x81\xa6\x11u\xfaVJ\\_\xa1X*\x17\xe4\xf6\x95\xe76V\xdcg\xf0\x18F\xb0/\xa5#\x1e\x1d\xd7\x06\xcc\xcaV2\x96\xf1\xc7\x1c\xd3\xacl\xe9Iy\xee\x1b\x11\xf9\xddN\xd0\xe493 \x18~j\x0d\xbc\x82O\xc7\xcdM\xe1\xd1\x0f\xb3DM \xf7\xdc)a\x03\xeaK\xbbd6\x15\xf9\xef\x02O\xf7\xc7J\xde_\x06\x8d0\x9eEe\xc0\x82]\xe8@C\xd4\xe9\x03\x8d\n\xed\xff\xa7D\x02\x8e\xba\x07\x0fS;\xbd\xc6\x08\x91\xab\x80\xc3\xed\x0ecc\x99\x06\xe3\x8e\x8c\xa4\xc4/&x\x83\xef:+v\xd9\xb7_\xa3\x91\x96\xb6\xb8\xa9\xb4\xb8\x0e\xdcO\x99`\x05x\xa3\xc0E\x91\x89>\xe4\xf1P[\"S\xf48\xe5a\xfaC\xd8\xdb\x83\x11\xdc\x83M\x05Ca=M\xca\xb8\xa8\x1d\xb7br\xe6\x17\xe19is\x12\x0f/\xc9\xdd\x0f\xbd(>\xc9\xd8\x93\xb8\x98%\xd1\xc78\xb2\xb4i:|\xd1\xfc\xc7<\xb6\xb4\xaf<\xfc\x99|\xbcY\xf0\xd6?\xe6$\xc2\xc2\x8f\xc2Y\xbe\xd2\x1c\x86L!\xfc\x14\x80\xb42\xf2\x19\xb4\xfa\x88\xf6\x17\x19\x99\x7f\xe4\xa5\xcf\x97~\x14\xad4\xfc!\xa3\x17\xad~\xf4\xc5\xa7\xef\xdf\xaf\x06\xfc\x83\xc6/\x9a\xfd\xf8\x13(O\xef~\xf4\xe5'\xc1\xfey\x99~\x84\xa1\xa7w4\xf4\xd8\x1e\x8d)\xb9\xbc\xf4\x8b\xd9\xc2rad\xae.\x0dfZ\xd5S\x8a?\xd5k\"\x1e\xc1\x19\x10\x93\x921\x91e\x0f(z\xa8\xd2\x99\xc5\xd3B\x9f\x19C2\xafO`_\xd8\xe11/\xaa \x9a\xc0q)o\xecL\x8bc!\xc8\xcf:qA >\xbe\xe1jrQ\xa3\xe5\xc2\xf8\x06\xeb\x99)<4`\xd0\x92\x86}K\xea7\x964\x93\x974\x1b\xb8\xa4\x12?\x91a\\\xb3\x04W\x95\xbd\xe1k\x19:,N\xd3\xdd\xadhN\xfc\xec\xdf\x01\xf4\xee\x963\x8d\xc2B \x9e\x1d\x03K\xfd: \x0dGl\x8fw\xda\xbe& D!\xdd\xd7L\xef\x86J\xb4\xae\x90\xc4\x9a\xa1\xf1\x8a\xe5\x9f\x9e\xce,\x9ew\xe2\x9e}\xea\xfc\xf1\x9eC\x99\xe3\x0f\x1f`\x1bu\x1e\x05\xc9\x8b\xba|\x7f\xe2\xdcsac$\xc2:\xd1zc\xac\xe7\x9f\xca\xb5|lH\xaa\xc4\x1a\xf3\xea:\xde\xbeC\xffkT\x92\xcb\x1d[*\xa3\xdc;-\xaf\x8a\xbd\xfd\xaaP\x05r\xe7\xdc\xf7Y\x12\xa8\xde\xb3\x9d\xfd\xfd{\x1e\xb9$3\xdb\xb2\xe8\x1c\x15P3DO\x02\x92\xad\x9a\xd0]\xaa\xe3\x06@\xd3'gOx!\xf14<\x95%\\;\x95\x8a\xfc\xedZ\"\xa7_\xab\x83\xe8\xe1\xe8\xd4\x9f\x9d3K\xff\xdc\x85\x08\xc3T\xcfY8}\x93\x93z\xc0B}\x86gq\x92\x91\xa7>\xc6\xf6\xb3B\x0b&\xf4\xda\x83uZ\xb6,\xa3\"\x8c\xc2\x18\x8b\x96\x8d\xa22\x0eQ\x11\xbf\x0fV\xd9(\xc8\x8bp\xf6\xfe\x8a\xbe\xbf\xe2\xef\xf5CX\x98}\xe4\xcf\x9b\xbbY\xc0>l\x8f\x1fn?\xdc\xbd?~\xb8\x83\xe6\xfe\x8f\x1f?65\x80\xd1g\xeb\x03O\xbc\x1c\x83\xa3\xbb\x10\xc0:Xg:\xfb\x01\x94\xfea\xd0\x06t\x8e\x90Z`J\xce%o\x876\xf2\x85\xbd\xbf\xf6\xe3\x8f\xb9c\xb9\x10\xa84\xd4\xd5\x83\xfe\xeeK\x06\x8b<\xbe\xe7\x9amG\x18y\x0cE\xcd\xb0\x0e\xf9t\xf3\xb8\x82\xf0\xc7\x80\xf1\xd5\xec\x94\x07?\xe12\xa5\x85+>p\x1c\x17\xd6\xd0\xb6\xbf!\xf1\xc2\xa4!\x9b\xc7\x95F.s\xcd\xe4O\xe3\xc1\xa9\xcf1.\x01\xcc\xe1\xab\xae\xe4{\x03\xc6\x8f`\xbe\xbe\xee\xc8;S\x8b\xd8\xe6h\xe8k\xe3\x8f=\xa5D\xbc\xf1\\;nw\xf0|9\xbe\xaaC0\xa2]\x00s\x14J\xe9\x07l%F\x0e\xcf.!-\x1b\x8b1\x1f\xb9\x90V\xad\xee\xc1\xb9\xe3|\x00\xbec,\xa3O{\xfb\xe8\xa0\xeb\xc1\xc19\xecC\xca\xcb6]8\xc7O:#hY.3\x8f\x06kS\xa0F!\xd3\xdct\xa4\x15\xb3\x07a\xb6\xe6\xa5\xd9FW\xb0\x0f\xd3c\x98\x08\x1cT g\xdb\xdc\xa0Z\xcc-\xd1\x08\x1a\xa2\xeb\x06d\xd5\x8d\x08\x01\x89\xac\x8ak\xb2*\xeb\x90U\xb1\x8a\xac\xcaV\xa5\x03\xcc\xf2\xfa\xd4\x8e\xed\xedQ[\xec\x9c\x88\x92q\xbb$\x14%;\xed\x12\x9f\x97\x8c\xee?h\x17\x95\xbchgk\xb3]\x94\xf3\xa2\xadNO\x11/\xb9?\xden\x17\xcdz\x03\xf7U)\x98\x88wrB\xf2\x97IPFD\x97C\x14$\x99\xff/\nW\x10\x8c\xbb\xc7r\xe2\xe9B\x99\xd5\xf9\xdex\x0c\x86v\x8a!o\xe1\xe7\xaf/b\x91\xbe\xb5\nC\x17s\x95\x0d3\xb6 \xdd\x84oP\x83\x10&\xa6\xf3\xcb\xa8\xe0\xa1\x99\x9a\xa0A7e\xbb\xb3Ts\xae|q\x1e\xfd\xa1z/\x96\x0eR-\x8b\xdaY;\xcc\xf4<\x18Y\xa3.E\x92\xd6Y0\xde\xdd\xd9\xdd\x1c\x05-E\x1b\xbdv\xad-o\xf4\xc0\x1b\xb7J\xe8}j\x9d\xfa\xf1OI\xab\xe0\x8c\x16\x1c\xfa\x85\x0b\xe3\x1dxR\x9e\xc1xs\xf4\x006\xefOv\xc6\x93\xf1.\xfc\xe9\xe5\x91t\x10\x86\xe9\ns\xb1\xf4\xde9\xc9\xf20\x89s\xbc*;/?|\x80_\xae]E\x89\x97_\xf8gg${\x17*\x9d\x97x\xb5 (\x02\xdd\x9e\x85\xc5[r\x1e\xb2\xf2\x85\xb2\xfcY\x98\x15W\x13\x08\xba\x85\xa7e\x18\x05G\xe1\x92\xe4\x85\xbfL'p\xd6\xad\xb2\xf4g\x8b0&\x93v\x0c\x85.\x07Ph\x1d\xaf\x82dy\x12\x06,\xcf\x94\x1ao\x06\xc9\xf2U\x12\x10S\x95<%\xb3\x89\xde\x88*\x8b&J5,/\xccMMG\xfeUR\x16\x13\xb0\xbe\xf6s\xf2\x02\xff\xd0\xb4\x14$\xb3\x83\xcb\xd4\x8f\xd9r[Q\x98\xebj.\xfd\xcbg,\xf5( \x8e\xfc3c\xff\xf30*Hf\xaa\x81\xe6\xa4~\x91d\xefp\x9e\x8b\xa2H\xf3\xc9\xbd{IL)^\x01=^\x98\xdc\xab*j\x86\xc5|\x97r\xfdB\xce\xca\xbcH\x96\xfar\x9eO\xf5uJX\xea\xaa\xe7A7\xa9N\xab.\xcfz\xf4\xac\xd4%\xbb\xaa\xea\x13\x92\xbe\x08\xe3\xf7a|\xa6\xaf\x94\xb1\xd6\x9e\xc7\x05\xc9f$-\x92\xacOc[\x7f\xc9\xb0\x97\xb2\x82f\xba\x19\xc9\xd3$\xce\xc9'\xea._$\x17\xe8\xd3M\x02\xbejj\x073\xa8q\xeb\xcb$ \xd1[\x12\x07$\xc3u\xb3\xc8\xa5\xbfL#\xa2\x83`\xe9+\x04\xe5\xe0\x19I\x8b\xc5\x04\xb4{R\xd7\xcf\x87|@\xa7ppY\x10<#\xb9~\x1fi\xbd\xa7\xc9r\x99\xc4\x83j\x97)\xc5\xc3$8,O\x97a\xc1\xa2M\xe4\x13\x98Zg\x04\xd5.i\xc9\xfeIr\xfc\x97e\xd1\xa5\xbf\x92\x94nU\x8e\xfa\x01\xe2\x07X\x89\xcb8\xad\"\xf3g\xc4\xd20\x9eiFrR\xd0>\"\x81\xb0u51C\x17\xad\xa9\xa9\x10\xc6a\x11\xfa\xd1!\xddX\xfd\xd1\x9a\xc7\x86c\x99,\xd3$\xa6|\xcb\xa4\xed<\x05jp\xa2\xfc?%\xd3\xe7^\xeag99D\xb9Y'M p\x82\x89x\x1c\x057\xf1:OF\xac)\xa5X?\xe5\xdd\xf8b\x8d\x1c\x9b\xdeq\x05\xd2\xde\xb1\xa2\xb7+\xed5\x91_\xe5\x05Y\xaa\xc8\x08\xf1T\xd8+\xf5\xf8\xcfU\x0eW\xb5M\xa9\xc7\xf7V\x03kl\x9b\xda\xb3\xd2\x8eJ\\\x1ff~U\xd4J=\xf6K\xdd\xb7x\xc4\x95\x90z\xec\x97\xb6\xb2f\xaeP\xdf\x98\xc6~X\x1d\xdd\xc5)\x1e\xbc]S\xaf\xcc\"\xfd84;\x01\xa9'C\x7f\x97@V\xc4&\xe8\xfb\xa4\xa2\xa7O)=\xdd\xaa\xdd\xfa\xbbEZ\xdb\xa7HRK\xfdS\x15\x9a\x078`\xb2\xdc#\xa5\xc0\x86\xb0\x073\xc7\x85\x13/'\x05\x1bCn\x97\x8e\x0b\x17\x02;=\xc1\x99\xe7^\x94\xf8\x01 0\x8fI\x9d=\x9d6\xb5\x16\xd3CE\x7fZ \xf2\x84\x16KQ\xb0\xe9BX\x8f\xb2\xc4y3^p\xd3\x85\xa4S\"%|ck$:.\xd3\xc0/\xc8\xbb,\xb2-\x0b\x07\xd6-|\x91\xf8A\x18\x9fQ\xe8/s\xdb\xca\xcb\x19\x06~\xd1\xd4>L\xc9\xcc\xa6\x83\xc8:\x83\xc0d)\xcdo\x82\xe4\"\xa6s\x07\x0c\xea\xc1g\xaa\x1d\"\xd6\xe8\xf4+\xda\xe0\xc5\xe8\x81#6\xc0\x81\x0b/C\xd2\xa7\xde\x14\x17\xac'i\xaa\x93\x97V\x91J\xb0\xfeI\xa8\x0d\xcd\x0f\x1c0s9\xb2\xc6\xdfK\x92] \xf8\xab\x9b\xd0\x8bR\xab\xe1\xe5bXj4\xc9\xa3\x89P\xe0\xc0T8\xbceL\x06\xd0x\x89`\xf7\xe1\x03\xf04\x1e\"k\xc7\xe1\xfb0MI\x00YM\x07\xc6 \xfc\x0bk\xe5_ \xc9\xf07\xfd\xf8_\xe0\xc2\xcf\x11\xed\x87\xf3\x90\x04\xbau\xe2x\xe8\xa2\x8b\x18\xba\xe7\xeb\x92bB\x0e\xf2L\xa6\xc8~\xbf\xcb\"\xa5\xac\x0d\xe5\x98\x8dM\xee\xbc\xa0G\x9b\x9d\xa8\xaf\xaf\xdeq\xb0Y3\xd6\xf8\xf0\xc1\xd8\x82\xe2\xfa\xc6K\xed\xb2;\x1d\nlo\xc92)\x08\xfb^M\x81\xab\xd8\x90\xd4\xeb\xbeU}\xa9`)\xe8\xa7\x9d\xd7M\x1c\xec\xc2\x01fb\xb0\x8d\xf3\xbc\xa4\xd5\\\xb8\xa0\x87\xf1@r\x03\xba\x96\x91,\xe9\xa5E\x1c2\xe1\xd8\xde\x19=\xe88\xf0\x8ev\x1c\x8f\x8b\xfd\xde\x93\xab|HC\xf5\xcau\xac\xa0\x99\xb6\xf5\xe1\xae4\xe1\xd8\x1e\xef\xdcwx\xbaM\x03\x95\xd1631\xbb\xed4\xb3s\x03\xacnX\"/C\xb3\xa3J8\x18\xdb;\x9d\xc0\xb0\xb5pq\xd2\x9fb\xb3\xb3\x03\xdc\x83\x1b\x1d\xbe[\xfbp\x7f\xdb\xf1\xe6rL\x94!-\x0e\x9cD{\x9bn7\x89\x9d1\xf3\x07\x1f\xdd\xe7~\xe4c\xeeW>\xbe\xaf\x04\xaf\xc3\xab\xe5i\x12\x0di\xbb\xd7J_\x9d\x8e\xb7\x13\n\x83G\xe9m\xe7\xb2\xe4\x913\xda[\xca\x83\xf4\xee\xb4\x83\xf1\xf2\x19\x8c\xb7\x1d\xef\xcf\x07\x7fk\x96\xb1\xd4\xa1;\xed\xf1\x88\xcc\xa1\xed\x011\x81\xf6\xc3vX\xa1\x94{\x87\xb4\x8d\x13x\xea\xd0\xb6O\xc2\xa2\x82\x94\xe6\xfbs\xfe^\x9d9tg\xdc\xae/2\x87\xb6'\xcc\xb2\x86n\xb5G\xc3R\x86\x8e\xdb\xb5Y\xc6\xd0N\xdc\x87\x0b\xbe\x9a\xed\xb9\x1e\xb0%h\x8f\xf1\x92Wo\xcf\xf5\x90\x8f\xbd]\xff)\x1bL'X\xca{\xb6\xe5\xed\xd7O\x04Bj\xbe~\x0d{\xf0\xb4\x9d$\xf4\x0d\xec\xc1\xfb\xf6\xcb#\xcc\xfb\xd9z\xf9\x12/\x08\x06\xd7\xcd\x92\xe7\xd5\xd5\xd1|\xff\x13\xec\xc1sJ.<\xafQz\xb3\x06\xbd`\x02\xdb:Y\x84A@\xe2\xb6\xca\xff-+-\x927Y\xb8\x0c\x99\xbfM\xb3\xc63\xd4\x03y)g(\x9f\xe7\x07q\xb9d!\x91\x9b\x15_\xd0\x1b\xd2\xb6r\x1c\xfd\x06c\x05\xb3\xabvs\xef\xe4Z\x9dd\xc6\x7fg\xa5I\xba\xa1\xa9\xf0\x0d\xecu\xb4I\xcd\x1a?\xeb\x02\xc2\xbcl\xd6\xfb\x1aW\xf4/\xac\xb1f\xd1\xf7\xb0\x07k_cf\x88\xaf\xa5\x8c/\xad\xbf\xbdy\x18\x07O\x17a\xd4R4|\x0b<\x82odvr\xe6w\xce}X\xdb\x83K\xfb\x0d\xf2fh\xd7\xab&\xd0\x87\xc5\xd8\x82\xba\xe17\xb2\xad\xb0Y*\xc2\x93,\xdf\xd7V\xbav\xbcn\xd0#P\x8aA\xae\x9dv\xddkG\x0eg\xa3\xb1]\x03 !\xbf\xb6\xbfQ\x9b\xd3d\x92\xac\xe2\x9biq\xec\xc2\x9b\xaa=\x1e\x10\x92 \xb7\xf9\x0d\xfd\xf9\x06\x9b\xe9\x04\xc0\xbf\x86 \xbcin\xd9\x0f\xbd|\xbb\xe0\xd9\xdf1\xaf\xf1K\xfbe\x0d\x08&\x1d%fL\xef\xaa'\x9b\xdd\x7f\x07{\xf032\xc5\x0c\xea\x1bP\xeb\x89\x9b\xbb\xb1\x88\x06\x80R4B:\x0b0\xa8\xa5F\x94\xfd\x97\xa6\x19\xfcm`l\x80\xaa\xe1=\xb1I\x7f\xb3\xff^m\xe0\x15\xcb\xe2\x02{p\xc13\xd6\xd1w\xb4$\xb1\xdf\xa1\x91\xc4>\xc6\xd7\xa9\x10\x10f\\\xa5\xfd\xbdby\x85\xa7\xaf\x8e\xa7\x053s\x11\xbf\xf7x\x0e\"\xdc\xb4Xw\x10\xea&)\x17\xb1\x89\x89\x8bT\x90\x0d\x93\xba\xc3\x0f\x1f\x18\xf4\xbdr\xe1\xc0\x1ea6uJ\xa6\xd4\xfd\xd2\xe1\x7f[\xad\x06\xfd\xb6\x86V\xd3b\xfey\x88q\xc8\x95\xd2\xf5\xad\xd6\xbc\xb3\xe0\x1fK\x9e\xe8\xb3\xa0CKXj+\x16e\x97IP\x98\x1fe\xf2\xc8\x81\xbf\xa1\xfe\x1d\xc3\x05&\x18\x06\xa60j\xdf\x8d)7\xfe4\xf88=k\x18\xaf\xe0\xc6\x13\x96\xaaP\xdb\xf3\x1a\xd6\xae\x01\x08A\x83\xe5\xf7\\K(0\x11f\xc1e\xaf\xd9\x05\xa2\xec\xda\x17\x9f\xff\xf9N\xfc\x16%\x0cz\xe8o\xbay\xe4\x18\x0b\xdbv4\xcd)~1d\x8f\x98\xdd\x05]\xff.\\\x0b)\x11\x89\xa9\x9e\x94\xff\xc8\x11{\x82\x87\xcd\x17\xb3\x8a9\x04\x7f#v+dSz7-\x0c\xe70l\xce\xaa\xae\xf73nmi\xdb/M\x81\x0d1\x08\x14=N2\xa2\xef&\xc4\xb0\x18IZ\x87{\x92\x92\xd0w\xf2b\x9c\xf3\x8cj\xa9\xca\xebw\xb3\xe1\xf5\xbb)\xf9\xe6\xbb\x9d)6\"B*\xaf\x13\xe0Y\xdajl\xc0SZ\xfe\x9d](\xcd\x03\xce\xfe\x9a\xbe:\x16\xf8\xc2\xae\x8f\xbc\xb8'\xbe\xad\x0d\xe9\x10\xa9\xab\xd2\x1d]+\xa5|H\xf2}O\xff\xf7-\xdd\xc3N.@\x18\x14I5\xa7T^\x8bXp\\\xf8\xa1\x99\xeeM\xce8h\x15I\xe5\xe3\xdd'\x04)0C\xdf\xfb?\xc8M?\xc5\xa4t_\xb8\x94E\x81=\xf8\x1bF\x90\xdby\xe8\xe0_\x87\xf8\xff\x7fF\xae|\xbc\xc3\xde\xfd\x89\xf1\xe8\xbb\xec\xaf\xbf\xf2\xfc\xc6k\x94\xdf\xdc\xc6e-\xe9\xfc-\x15\xc3`\xb9\xf4kD0\x0b\xfc\xbaWR\xf5\x83\x1d4$2t\xc4\xbe\xedc\xaa;\x1fS\xdd\xf9,[\xda\xcf\xed\xf5f ;\x91\xe8\x16Y\\V\x1d\xe7\xbfPva\xe1\xe7\xcf\xf9\x01p\xc3\xfci\x12\xcf\xfc\xe20\xcd\x88\x1f \x9b#(0\x17\x9d\x85\\n\xbd\xeb2\xd7\x0c\x97\x07\xe8u\xd1\xde\xd3\x958)W\xec\xcc\x91\x7f\xe6\x96q>KR\xda\\.LC-\xd7\xa2\x17\x01a8\xe2/\xf5!!\xe4\x91\x03\x81\xfd\x97)!\xcd\xb4\xe65\x12\"\x98\x8f*\xf0\xf2\"\xc9\xe8\xe5\x12\xf3V\nR7\x13\xd3f\xce\xed\x82L\xe3V;t\x05\x0f\x1bk\xc7Ox7B]\xbf\xfdG%;{Ao\xb5\xf5=\xb47\xdf\x87\x17\xf4TM\xd8?{\xdd\xe4\xea-\x04\xfc\x9e\\}\xd3\xdf\x15Z\xe0\x7f\x87\x16\xf8\xc6\x9c=>0\x1a\xb8\x83\x9b\xa0\x19<-\x8c\xe1\x85ZCA{z\x81t\xdc\x9e\x9c\xba\xc3H\xc6\x9799$\x05\xaa\xb1\x8d|\xda\xf7\xaa\xf0\xc0\x9d\x96\xc2e\x1a\x91!-5\x93\xcd^w\x8eJk\xa3\x19\xc3\xdb\x8dq\x84A\xd4\x07$+\xedZ%\x17\xb0\x0f\x976\xa6\xa5\xfc\xb3}\xc9h\x1d\xe3f\x07d\x1e\xc6D\xa8\xa8'\xf07CqH\xf2 \xfc\xb9Y\xe1\x8c\x14\x92\x8a\xfb\x19\xc9gY\xc8\xd4\n_\x98*\xbe\xf2\x97\xb4\xb1\x7f6\xd5a\xc7 \x9f\xc0_\x1b\xeb\x88\"\x96\xe6b\xdakx\xc5\x1a\x98|q\x11\xbel\xc7<\x16\x8c\xda4.\xa3\xe8\x18c\x99\xfdd\x0b\xba\xd3\xfa\xe5\x9a\xbf\xe9\xae\xbd\xdf1,m}\xc26\xb7\x851\x1d\x17\xac\xef\x0e_\xbfR\x04\x01\xa9\xb4\x0c+\x10?\x9cd#\xc7\x8c\xa3\x18=R\xc5\xe0\xa1,\x05\xa7\xc9\xea\xeb>ib!\xf1\xf0L\xde\x9c \x1a\x1d\xbb`\x9f\xda\x9d\xa4n\x9c\xc4\xffN\xf6\xbf9\xe3\xd5\xecb\x089.\xfaRJ\x87X\x987\xa44;\x06\xf5\x8eK\xfb-\x1c\x0d\x1a\x00\x0e$t\xect\x1a.\xfc\xc4\xb5*\xcf\xbb\xc2\x87\x06XIB\x84\xe9[$\xc6c{g\xd3\x91\x85\x0b.\xbcm\xd4cI\xb6^\xcf1_\xe8\xcb\x1aq\xb3\xbf\xfdb\xe1\x82E\xff\xb1\xf8=;\xe7j\xa6\x1a\x06\xd66\x07\xa9\x00j\xe9xG\xca)\xa2B\xa9\x93\xd8QBaU\xbd\x94\xe0\x073e\xda\xb7\x98\xc5\xe5\xed\x1a\xce(2HV\xa0\xea\xbb\\\x00O\xf1\x11\xed=\xf4\xe6,/\xcb\xe6#(kH\x8d\x1e9\x90W\x16\xe8\x94`/\xa7\x11\x12\xe5HN2\x10V\x1f`Ia\xb8\xda\x8av\x84\xdb\xc2\x9b\x90\x92]\xdd5\xfd\xe5\xda\x13\xa4D\xb3\x10\x83\x03\xd5\x86\x14\x02\x96/\xc28H.P\xc9\\\xfd\xe2BS\x05F\x84}C\xa1\xcdZ\xa0\xb8]v\x8b\xab\xb5\xa3\x83\xa88\x0c\x8akM\xd9H\xe1\x07l\xf2\x18G\\\xe58\xeb\x95n\xe9\x93\xd5T\x04\x88\xca\xda\xaa7\xf9\xbb\x18\"w\xf4Q4\xd1<\xc06\xcf\xbf\xdc\xd4\x14\x0e\x02\x00\xa6K\xb1-?\xbf\x8ag\xcfWR\xc8\x89OY\xfa\x12\xa4\xa5\x07}\xa7\xd6|\x15\xde\xe9UA^\xb0#0\xe4\\F\xdas\x89\xe9\xa5:%\x19\x96\xb4}:\xf9Ro\xd1\xdb\x13\x83/9p\x0f\xb6aC\xe2\xcd\xaf](\xbc\"\xf9\xfa\xaa <3\x9catm\x9e\xfd\xa4\xb0\xe7\xce1|\xf5\x15\x8c\x1e\xc0\x87N\x11\xac\xc3\x88\x17\x8f\xd5\xc5cV\xbc\xab.\xddr\xe8JL\xf3\xf5u\xbc\xa60\xb2\xf2.| \xe3\x9d\x9d\xf6\xfb\x07\x9d\xd7\xe3\x9d\x1d\xf8\x12Z\x89\xa4\xc6<\xc5\xb5\xb8:\xd5\x93\xd1\x0c\x96\xce\xe5\xf1c\xd8\xeev\xd2\xc2\xb6\xa3A\xbd\x8c6\x8dK\xb6\xad_\xb1\xc7\x8fa\xa6\x87wZ\xb0u\xfd\x12v\xb7\xe8\x0bko\xcfB)\xf7\x98\xb7\"\xf6\xcbf\xed\x8cq\x1f\x1e8\xb0\xaemx\xb4)Z\xa6\x80Q\xb5\xcc\xbb\x1aK]Y\xed\xa1\x0b)L7\xdc\xf4\xb5\x82\x7f\x16B\xc7D\x12>Ze\xcc8\x8f@N\x0f\xfb.\x8c\x8b\x07l\x1f\xf7\xe5?&,\x9f\x0b\xdb\x14\xeb\xc9\xd7O\x9f\x1d|\xf3\xa7o\x9f\x7f\xf7\xe7\x17/_\xbd~\xf3\x97\xb7\x87G\xef\xbe\xff\xe1\xaf\x7f\xfbg\xfft\x16\x90\xf9\xd9\"\xfc\xe9}\xb4\x8c\x93\xf4\xefY^\x94\xe7\x17\x97W?o\x8e\xc6[\xdb;\xbb\xf7\x1f<\\\xbfg\xf1h\xdc\x0c\x8f\xf8\x95t\xbe\x84\xaf \x7f\x04\xeb\xeb\xa5\x03\x19K\xc6\xedOK:\xf0\xa9/\x83r\xe9`,c\x95[[\xa4\xc7\xea\x02\xd8\xba\x84U\x01\xff\x01\xb6)\x1a\x13\x8c6E\x9e\\\x16\xf8\xc1vn\xc2\x84!f:^9mfw\x1df:\x8c_g\x8cB\xf7S9:z\xc1v \xa6\xff\xac\xef\xc1\x96\x83\x00c\x13\xba\x13\x14\xe5P\xec9\xda\xbd?\x1a\xed>\xd8d>\xf6\xd3\x92\x9e-\x06\xe9\x14\\w\xc6\xbc\x84\xa1\x0fV>>\xa6\xac\xb9\x80|;\xc4\x8cZ\x08\xff\x0f$\x98\x0f\xf1\xcd\xb8\xfdfWz\xb1\xbb\x05_B\xd8\xe6\xa9*\x8a\xa6{\x14\xaa_\xc9\xd4\xda\xb0d\x08\xdaD\x08\xda\x1dS\xd0\xb2NTE[JzC^\xcd\xc2\xcb\x88\x1f(T\x81<(\x8a\x02\x0cCW\x10\xea\x0f\xe0\x8f\x90PZ\x80b\x06\x85`\x94.\xfc\x88\xaek\xe9\xa8k\xa0\xbf>\xaeY\xb7\x8c^\xcb\x1b\xf7\xbb\xef\xd1~\x06\xf6\xb1\xe3\x11LT\x01\x0bR^e\x83\x96+\x9a\x0e\x10QR2a\xde\"w\xb8\xc3\xfe\xfa\x1e\xa4\x0c\xc3\x04\xf0%\x9f\xc3\xc6\x8cM\x02\x02x\xfcx\x0f6f\x94rX\xa7'\x18f\x18\xd8\x14\xeb\x8fwv\xe1\x8f\x10\"\xc2d\x1d\xb8 \xda\x9b\xc1\xc6\x1e\xcc_\xf9\xaf\xb8\x8c\xa7\xc0\xb6\x18x\xec\x83\x8dY\x04D1o\x92!\xef\x19j\xe9}\xd1\xd6R5\xcf?\x85\x0dX\x1c\xc3\x87=\x18\x8d\xe9\xc1:o\xddp7b\x8a\xb9\x10\xa4)\x9c\xb6\x0b\x17\xac\xda\xac\xb5#B\xe5\x96S\xb2\xb1\xab4bAj^)\xa3G$\xbcd\xac\x8c+\x81%[\xaa\xb8\x12X\xa2\x8a*A\x0b:_\xe4\xbc\xa0\x13l\x82\x99\x9a\x8e\xef\xb7U\xaf\xcc\xd6\xb4mf9\xc7ff\xad\xb7)o\\\x11\xe6\x82\xd9\x9a\xee\xec\xb6\x03]/\xaaO\x1e\xb6?\xe1\xf6\xa6\xe3v\xdfK1\xb7\xce\xac\x99\xc5\xa9&\xa0\xc3\xd5\xa7\x0f\xe8p:D\x1a&%\x1bm\x82\xca\x89IU_M\x8b(UA\x92t\x9e\xb15J\xe5{\xed\n\xb8\xd6\x88\x0d\xb4y\xdc\xd5\xcb\xab\x82\x7f\xb4\xdc\xc9\x84a\x8d\x8b\x05i\xbb@-p\xcb\xcd^\xc1\xbd\xce\xc5+\xb8\xcd\x9a\xbc\xe3L\xde\xc7\xd0\xf1@\xd6\xd7\xcb\x92\xa4x\x1eS\xd4\xd1S\x11\xe7\xfdF\xccN\xe1\xd4\x0c]M\x99xN\x932\x0e\x0e\xc5\xc45\x95\x8a$\x89N\x93K\x8d\xc34bz4\x00\xa8\\\x18\xe9\x1d\x81\x16\x01\xd5\x1b\xef4\x8c\x03\x1e\xf0\x87\x95\xa1\x82\x99\xdd<{p\xeaVn\xd63\x14r|w\xc8\xf6\x9ayUr\xe1[\xb3\x93\xfe\xb0\x85\xe2\xa9\x18s\xda\xfe\x99\xc7\xf6\xf9hQ\xc6\xef_\x86A\x10\x91\x0b?#\x8e\x1d;\x86\xc0i \x06\xf2\x12\xe1FNN\xde\x1e<{\xf7\xd7\x93g\x07\xdf\x1f\xbd~\xfd\xe2\xf0\xe4\xe0\xafG\x07\xaf\x0e\x9f\xbf~u\xf2\xf4\xf5\xcb7\xaf\x0f\x0fNNP\x87\xc7\xbcGsE$\x1c\x90\xc8\xc6M\x97\xd6D=\xe9!\xaa\xdd\xf9\x84\x12;b\xfa\x9ez\x98\\\xffS\xa5*wTf$6?\xaf\x8eXk\x0cO\xc2\xbdK\xd1\x1a\x05\xdfVN\xb5\xf8\x17?\x1e:\xadRk\xbce}$\x89\x0b\xd3\xee\xba\xbf'W\x13\xb0\xe8f\xd1\x19)\xdc\xa2\xf9\x05gTCC\xcb\xc2\x04a\xa6;\xdf\xe6\x90U\xe8\x81\x8dFLx\xc0hz}l\xd7\xd4\xa9\x07txp\xc4t\xb0\xf2\x0b=\xb0\xc9y\x80\x81\xd8&\xd0\x16\x0f\xe5}\x18t\x879\xa37\x1cJ\x91b\xc09\xfe\x1a\xc5JNC\xdb\xa8\x06KU\x9b\xdf\x94\xf1\xac\xf1-\xb1\x0b4\xa0\xd5y\xf9\xaa\x1aQ\x8c\xc0[\xfai-:\xd7jW\xe5\xa7\x1e@\xc7\xde\xb5\xfd\\;^F\x82rF\xec\x0b4\xa35\x0f\x957\xacA\xa0\xc0t4mTg\xeb\x02\x00^p\xfc\xc5qU\x8c,\x01\xb7\x06m\x1cH\x85\xfe\x03\x9a\xd7r\x1f\x00\x08\xfcF\x9b\xd6O\xf1\x9c\x07\x17U\xc0\xedX\x0b\xb7\xe3\xe6\xfd=>\xeeq\x0d\x07Nd&\xde\xc2\xcf_\xa0\xb7\xb6yD(T\xd0W\x19\n\xd3\xa8\x07T\xa9\xdf\x0b\xcf\x9f\x17${\xc1\x9d\xa7\x91\x83X\xdbt\xe1\xc0\x96J\x1cY3\x1f\x9bB:\x9a\xcf\x84\xdc\x0c?\x1e}\x1e\x12\xd52M\x14\xd9\x9f\xc5c\x82\xdc\xbb=`\xcd\x99dB\x18\xd1\x7f*\x07\xcd\x03\x00TY\x80\xeb\"\xfd4\x85\x95\x18\xb0z\xd3\xc5\xbb\xa1\xad\xf0\x18T\xba\xe3\xd13\x02\xceG\x16\x82K\xe2o\x06u\xfe|9\x81\xb9XZ}\xb5\xb7\xc4\x9f\x15\x93:H\xa2\x1as\nn\x8cqi\x12\xcf \x18\xc6\xe5\x96p\xce\xa7u{p\x92\x07\xa9\x8bX5xdw9\xb0\x01\xc2\x82!c\x87\xce\xf8\xbbo\x0c3\xcaW\x99\x91\x96\xb7Q\x0c\x14\xf6\x14q\xf7\x06\x0f\xab\x894\x07\x0c\xcdxE2b\xc4p\xef {(b`\x0bLmW\x97\x18\x9f\x99,.a\xbea\x8c|JN\x7fz\xe9\xa7\x0e\xbdA\xfa\x97\ndZ\x89\xf1\x18\x99fW\xb9\x87V+\xd6\x0f\xa9X\x93\x9a8\x1bB\xe6\xf7RH<\xc6-F\x82&\xd3\xf8x\x85H\xe0\x82\x10Y\x91\x0c\xe9J\xf8br\x013\xef\xa5\x9f\x9a\x19\x05\xe0\x84\x89\xcc\x15\xf7s\x93k\x99)\xc2\xb0\xfc\x08\x93\x80lZx\x94\x1d\x18\xd0x/\xa3\x0d\x12'u`\xc7\x8e\xc9_N~\xf8\x88\xab D \x97\x0c'\xc6/\xf5\xac(\xa8\xc4\xbe\xed\x07aO\x0d\x95\xc8\x0f\xbbm\xa8,\xe4\x08X\x9b.\x04\xde,Y\x9e\x86\xb18M\xb9\xc3r\xea\x9f\xf6&\xc97\xa3\xdf\xa3\xabt\x88L\xa8W\nC\xa6\x9b\xc7^\x91\xbcKS\x92=\xf5sb\xa3\x11P\x15+\xbeW\xec\x86\xa7\x9e\xcd\xcd\xb1\xf5H\xa2\x1aP\xacH\xe7!?\xe7<\xb6y\xac\xcc\xf8-\x1eTT;\xf28\x92&}\x9c\xc1:\xc5u\xa1\x9aU\xba\xcd\xa5L\xc9\x13A+\x0f\xd8\x80!\xb72\xdfN\xdb\xca\xab\x86o7@N\xef\xdfbx\x02\x915\xc7\xe7\xf3v\x07\x82\x05^\x06d\xc5\xcb\xa0\x03T\xc4`\xd6\xa2z\x1a\x02\x06\x8a^\x1c\x13\xa0\x14\x9dL\xe0\xf2\xa3a\xb5o ?j\xeel\xc0n\xf5\x9ef\xba]\xc3\x98\xd1\x06_\xa8\xf2W\x07\xdd\x86\xc6\xcd\xfd\xe8\xbfpi\xaf*\xac0\x8d\xeb\x0c\x0e\x1b\xf7\x9dc\xef\"\xf3S>\xa4\xdeK:\xe3\xf8U\x03h\x03\x04\xbe\xe2\x0e\xca\xa6q\xcf\xb5\xc6\xbbD\xe3K\x14\x10 A\x91\x9d0\x1f\x17\xb4UL\x8e\x1d\n]m\x9ad\xc8P@Z\xaa\xde\xa3\xd9~\xc4\xbd\x88\x87\xa3!\xaci\xa9:\x14Q\xc4t\x8fB\xbf\xd8~\x90\x90\x90\xcfY\xe6\xc8\x16\x89\x92\x87\xb2\xb4\xad\x10\x13\x12\xe4P$\x954\xaa\x96\xd2\x16\x0b\xbf\xe0\xafs\xf0\xb1\x91\xaa\xcc\x0e \x14\x0b\x02\x17\xec\xe4\x00CD\x8e\x0e\x11\xc9\x0f\xef\xe8\xc0\xcez$\xdd<\xf0\xe67\xbcO)\x88\x08\xbd\xafM$\x82\xb6\xf8n\xf1\xc4*\xd7\x8e Q\n\xa2\xce\x8c,\xb26\xb2\xa8%D\xfd\x01\x0e\x9a'S\xce\xa5\xa3J\xe7%?\xe2TN3 9<4)\x16A\xb87)qL\xc2\xd0J5\xf8^\xc4\x12v\x10K\xb1\xc2\xf0A\x16\xcaO\xb3a\x88\xc5\xef\"\x16\x9f!\x16\xb4x\xf5\x99M\xaa\x82\xd9\xe9\x1d\nH\x14\xd5\xca\x88\xa5\xb2\xbe\x0d\x15\x1c\x0d3Mb\x83\x0d\x1dn#\xcdlr\xc3GP\xae\xaf;h\x0e\xdd\xe0M\xca\x9e\xe5\x10\x8f@\xf1\xc8\xcf\x990\xda\x94\xcb\x8b\x9e\xc7v\xe2\x1cS\x8e{\xe6\x17\xb6\xaf \xad\xdb\xcfM\x10\\hBp\x02\xc0~?\x0c\x17\xf6\xa1\xb7\xc2\x80\xde\xd4<\x0e\x08\xf4\xa6a\x81n\x87\xdeP\xca7\x08\x99\x0d\x90\x94fM\x0b\x17\x15.X]^\xd0\x14\x08\x10\njL\xec\xad^\x0e\xf7v\xe2\xbe\xa6|\xfd\x1fg]\x06#\x16\xc1m\xb3C\xabr\x11\x15\xcf\xf5G\\\xe3o\xe2\x01K{c\x99\xe5\xc4+\x93\xc7z\xeaV\x83\x92\xaa\xb05<\xb6\xf9\xbe~\xf4\xd0\x96,\x8b\xb2[m\xce\x9d\xd2jJz\xaa\xd2\x98T\x14\x99\xb3\xa2\x84EEa\xf5RFz6\xb0\x97\xc1\xe1-\xf4\x1e/\xf9ix\x84u\xc9\x8f\xb0\"?2\xa7\x8a\xe6\xe4\xc3W\x90=\x02\x9f\x92\x1f\xe1\xd4o\x92\x1f\xfe\x00\xf2\xe3\x9c\xa7C=\xb0cAl`*$\x0d\xa9\x11\x1a\x93W\xf2\x87O^i\\\x81\x89(m\xd6c\xe9\xd8\x85\xcd\xa2\xca\x1b\xdb4X\xd7|\x14q\xc5] )\x08\xc6\xe6\xfa\xf0\xa1\xa3\xf1\x13jt\xf5R\xcah\xca\xab\x85[\xed\xc8\x1d\xe2Q\x9f\x18\x99\x84\x1f\x80nl4(<\x0d\xc5\xbc\x9ff\xc4\xa7\x07\xcd\xa9\x10\x17\x90\xc1\xa6 \xd2\xc6\xd7\xce\x8b\x85\x99\xcd\xe8k\x1a\xe4\xeb\xb4\xe8\xb3\xe1\x82\x017\x9b\xfc\x08\xe9\x1f\x05\xfd~\xf8\xd6\xbb\xff\xb7\x1f\x94(\xdeB*!\"\x06\x0cZ\x1e\xe0\x1d\x0e\xabI\x1f\xba5\x138\xf7^\x1d\xfcpr\xf4\xed\xdb\xd7?\xbc:9x\xfb\xb6_\x03#\x1e\xcc\x80\xa0\xcf\x92\xa5zR\xff*J\xfc\x80\xa5\xf8Y\xc8j\x84AM\x98\xb5\x1bX\x03\xe6a\xecG\xd1\xd0-\x12@\xd5[\xd9\xdc\xb5\xc9\x02\xb0p\xb42\xd7[b\xaa\x97~\xca(\xe8\xe4M\x96\xa4C\x90\xd5\x10\xf9\xb7\x11\xcf\xf4\xb6\x04M\xac\xd2\xb2\xe3!\x03H\x9a\xdb.\xc93\x8e^\x87\xaf\xca \x92q\xd8\xb2\x0c!\xee\xec\xa6\x87\x02\x8a\xe5\x0dVL\xc8\x81\xd5VG:P\xea[\xb6c\xfam\xf5\xea\xdaV:\xaa\\hCG\xddZ\xc5\xab2\x02-\xd4\x0d\x9b\xac\xa2\x1b\x0d\x8fT\xde!\x0dA\x860\x03\x95\xb4\"\x83\xea\xcbF\x9a\xcd\xea\x05\n\xd8j\x96\x04)\x9a\xd6\xd5\xd6\xaa2\x80Z\x15T*\x91\xc8r\xe6\x1a$\x91\xf0*\xf9\x1a\x067\xe8H\xe9\xf7\xc1n}\x89&\xb6\x9c\x8c\x9b\xc6\x14\x18x\xf4\xea\xf6`\xa7\xd91\x86\x95\xc1yu\x1b\x99&.\xc4\xc7\xc6\xaf\x9bp\xa7\xd0\x19\xb7\xbe\x91\x13\xfdk\x9a\xd5\xba\xee\xcb\x8c}w[\xdb\xbb\xaa\x8a\xa1Y;\xddC\x18\x9b]B\x98\xa261$\xe5ow\x18V\xa9\xa3\x1aoe\xd5\x8f6\xc2.\xc8\xb2\xd5a\xca\xa2j.%\x9d\x8b\xdfG6\x9c\xf3,K~\xaf\xa8\xb2 `9\x93\xd6\xd2O\xa7\xf9\xb1+$\x9fye\xb1\xde\xd8\x96\xee\x9bir\xac|)O\xb2\xb7\x02\xed\x13\xe3z\xf4Ub\xf3\x13\xb0\xdfW\xdd LU_\xf2}\x88W\x8d\xf4I#2\xa1*J\xc4\x81>Z\xc6\xaa\x9e$*\x9c\xe9xQr\x86\x02]\x850$\x96\x93\xa9\xef1Ij\xcb\xf7\xc3D\xec\x0b'F#\xb1\xa0'\xa3\xa5\xb0\x98*N8\xab8\xe1B\x84\x12\x7f\x04 |\x05\xc5#H('\x9cQ\xf8\x92W@wb\x05\x82GcpN\xa7\x13\x17\xa6\xf4\xba\xaf\x00&SY\xae\x0c\x8d\xe5\x85\x11C\x9a\x19\xc3\x08\xcfE\xd7\x036\xd7\x7f\xe8\xfe\x92\x13\x8d\x9f\xe0\xdb\xdeX];[c\x85\x17\xb0\x9c\x14\xa9.U\x07\xc8S{\xca \x9dE\xdbI\x99\xb4\xa3\xca_\x0f\x19g=\xae\xf1\xa64\xdc\xcc\xce0\xcce\xc6b\x86\xb2|7\xda\xb8\xa1\xedX\x9e\x98+\xc5\x9b\xd7#q\x86\x0c\x85.\xd9\xb6)\x87\x94\x9f\xe7\xe1Y<\xa4\xa9\xfeY\xe9'\xc3z\x99`\"\x98-g\xc59\x98\x93\x0c\xc9\xa7\xf2Z\xbd\xfb\xd9\xed{\xa1\xeb\xd8\xf6\x9ef\xb1\x055\xc1\x1a\xb7\xd4\xb9\x8cv\xb6\xdaYyJ\xcc\x1aP\\$O\xf8\x01\x7f\x93$\x11i\xa5{\xc3Yx\xf3\xa4\xccL\xb5\"\xd8\x83{?\xde[\xbfw\xa6\"\x86gZ\xbfi\xdb\xb2`\x1d\xd0\"\x13MG\xed\xc8\x05\xeb\x8b/\xefYf\x94>W\xca>Q\xd0C\xeb\xf0\xfc\x1c\xf4\xcfY\x12\x17\xe4\xb2`1<\xf9\x9b2\xa6\x7fo\x1a{Hu\xe7Ul\x0b\xc1\x9e\xba\x18_\xd0\x9e\xd8m\x0b\xd33_\x99\x84\x19\x0f\xb1\x81\xac\xaf\x9bg\x1aHaI\x94\xf3\xcdH\xce\xf0\x98\x98\xf1{r\xf5&#\xf3\xf0R\x9a3_\x94\xb8\xb3(\xd9J\x8b\xb2\xe8_\x146\x9c\xee\xb2\xf8XZ\x8d\xad[\xa14\xaci.\xafi\xb7\x98\x02_\xc9\xd66o\xadms\x03\x9a\xc4WD\xa9\xfbs\nq\x19\xaeo\xe8\x15\x0b\xbfx\xcb\xd4\xac\x02\xd8)\x05\xcf\x13\x9e\x02\xcb\xe1\x98xa\xfe\xbd\x1f\x85\xc1ADh\x0d\xda\x0e}\x1f1\xc6 Jb\xf2$\x0e\xde2x\xfe3\xb9\xa2\x1d\xf8\xb0\x0e\xf6ZD\xe7\xcf\xe2\x9e MF\xff\xa2T\x01{\xbf\x0f\x96\x05\x13\x98\xd9\xf8\xa7\x03\xeb`\xdd\xb3\x1c\x0cU\xe8\xb8\"\xf0n\xe4\x98\xc1\xe5\xdc\xee\x0f\xcf\x04{`Y\xcd\x85\x113dq\xb9h\x8d\x19e\xc0\xd9\x10\xba\x1c\x03\xdd\xab\x802\xd2\x88\n\x02\xbb\xc0([\xd8a\xb3\xb2O\x87\xb3p\xa1\xa4\\\x92\x97\x91\x88\xf89\xb1K\xf3\x1c\x96=We\xe3\xce\xaf\xef\xf4\xb9\x14P7 \"\x95\x81I\xcd\xd88\x1a(\xaco\x9d\x8e\xc6\xcb\xce\x01\xa1\x9b\xe2\x07\x01]\x830>;J\xec\xb9\x98\xe8\x8d\x06R\x1dd\xa9W\xf9,K\xaf\xefp\xcc\x81\x0by\x8b\xae9\xeb\xc8>\xe7Iv\xe0\xcf\x16\x93^b\x06\x84-7\xb3\xb5\x96\xa2\xac+\xec\xc5\xabk\xb4 I*\xb7f\x84\xa3\x94\x85\x84\x9aWp\xd4\x8e\xc3\xdc\xc4\x0cK?\xfdH\x03\x9e*\xa8`\xfe\x15\x9e\xbf\xcc\x15\xbb\xc0\x9c\x8f\x8diJ\x96~\xfa<.\x92\x1f\xc2b\xf1g\xb1\xdb\x98?5\xf6\xa3 \x9c7+\xe3\x8e\x0e\xd0\x00\xf2\xd1\xe0\xb2-\xd9h\x8ckU$\x88\x12\xfb$y\x82\x95\xe8[\x80B,\x80\x1a\xa5vRg\xd5\xf0\xa9\xa6\xa2\xce\xf0\xed-\xa9\xa8\xd1f\x9b.\xc2\xc0\x7f\xb1\xfd\xc0\xe9\xb34\x16)U<\x91R\x85B+g\xa3\x86H<\x9b\xdf\xa5I\xda\xa3\x83b\xa7\x17\xfdjY(\x16Epr\xdd\x06\xc4\xe4\x02\xbf\xef$gP\xd0\x8a\xe6Y7R\x85\xd1&1)\x8fm\x8dw0\xc7\x85\x84\xdb*\x1fN\xc5\xfaPv\x92\x16\xa5I\x12\x1d\x86?\xd7n\x9d\xcd5\xa1\x97\x9b9\x9d\x04\xa5 \x92.\x01\xdb\x1d\xb7\x8c\xdf\x06\x9c\x15\x90\xc5`\xc6m\x89\x1bc\xe61%\xe3\x1a{\x01g\xf0}\xfa\xb6\x9a/K\xc7T\xfd\xb9\x07#L\xc6$\xb0\x18\xec\xd1\xbbS\x91\x9bIAZ\xc6\xa4I\x83O\xda\x0bB\x9f\x0e=?p\x0dn\x02\xe4 \xad\xddJ\x80\x0e*`\x8fyl~\xd5r\x80\x12\xe6A\x05\xf7\x9dT\x15\xa0^\xceb\x91\x91\xce\x82\x0e\xb90\xe0\x96\xab\x95\xdd\xc9je\xae\xf0\xcb\xeb\\1\xe2\x19\xbe`\xcax\x1e\x8a5\xeb\xf2\x81\xdd%3\x98\x91\xdcf\xd5\x92;Y\xb5\xa4Z5FM\xa8\x9d\xc0VZ\xb8NB\x88n\x0b\x9a{\x8d\x99k|\xac{m\x9b\xa5Z\x1e\xef\xdeW\xc5\xa2\x8b\xed\x9d\xadv\"]\xbf\xbe\x10c{g\xbb\x13^\xaed\xe5\x0f\x1d\x17,\xaf\x9d\xc6\x95N\xc8\x9aX\x9ax\xc5\n\xc4#\x08-\x0c \xd2\xcdx\x80\xef\x05cB8\x8b\xe4{$\x9f\xf9)\xb1 c\x92&\x18Z\x9e\xe5Q\xb0\xb7v\xdb\xd22\xb8\x990\xae\xa2\x06y\xdc\xccj\"\x84\xc7w\x9a\xb90\xd7\x11H\xa9\x8bq\xf2\x84\xb9F\x1761_I#05\x86\x91\xfd\x12\xacSz\xa2\xfcX\xbc\x12YP\x90|sk\x07F\xbcd,\x16\xab\xd9\xc27X\xd7\x8a\xcb\xe5)\xc9\xe47\xf5\xaa\xf2.\n\xef\x8b/\xf8\xc8\xd0\x15\xb2\"wg\x94{)\\\xca\x83\xb2\x00\xcd\xfbP\xc2: \x05\xb2\x89L\xb0\xe3\xc2HM\x13/0\xc6\xa5\xf2\xc8\x9c#\xb3)59\x81\x18\xd6A\xa1y\xa1\xab\xd2\xe4\xcf\x0b\x8d\x06\xa1\x92j/\x99\xc4zII\x8c*\xbc\xf6r}\xdd\x81\x05\xac\xef\x01\xb1S\xba\x0f\xd3\xe5\xb1\x0b\xe78\x97\xd4\x85\xa5\xc3w\xaf;\x02Ml[\x90\xd8\xa2P\x99\x8d\x10\xf8\xf0\xcf\xfaP\xd8\x95\x8b\xd1\x04\xcf8m\xd7\x13Z\xe6\x0c\xc1\xa0\xf0H\\d!\xe91s\xa9\x16\xe5\x84-\xca\x9a}\x05{p\xea\xc5\xe4\xb2\xb0\x1d\xc7\x0b\x12L\x1d&-\xcc\x15K;#\xad\xcd\xc9\xfa\xba~u\xc4CW\xa9\x7f$\xda\x01\xe8\x17H\x91i\xd2\x8e\xe1\xae\xcdSU(\x92P\xdd\xc1\xca4\xc7\xca\x0e\xc2P\x0e_\x0d\xc6\xd6\x9e5\x01koS\x03\xc1\xd6\x04\x8b\xc7V\x17J\xb4\xf2\x02\xeb\x0b\n\x93\x1d5\xc0\xbd\xe9\xde\xe4\xf8\xdeY\x1fc.5TL\xc9q\xb7_#GY\xc6w\xb3(\x9b8m\xdd\xa2\xec\x8di\xf1d\x95Ea\xcba[\x1e;\xccd\xba\x89\x1az\xbaV\xeco\xd4D\x13//O\x19\x15`\x8f\xd1\x97Pz1r\x1ci5\xed\xbd\xcd\x0f{c\xe7\xee\x17\xb4\x86W\xf5\xd9\xb9\x13\xfd\xd7\xfd]\x87\xc7\xe8\xfc\xc6\x9f\x15Iv\xd5=\xc5\n)\xc0\x84\xa2H\xbfM\xa5b\xd1\xe9i\xc6JOO3e\x85 \xc8H\x9e\xb3:\xec\xb7\xb2ZFx/\x19Qw\x94\x15\xe1,\"\xbc\x0e\xfeVV\xcb\xc3\x80W\xa2\xbf\x94U\xca LX\x15\xfaKU\xe5\x14\x8bO\x95E~\xce\xda\xa7?\x94\x15\x82\x90\x95\x07\xa1\xba8\xe1\xc5\xea\x9e\xc33V\x1c\x9e)\x8b\xa3d\xf6\xfe\xefeR\xf01T\x7f*+'\xc1\x15\xab\x96\x04W\xca\nl\xeb\xd4\x1bwZ\x16E\x12\xb3\n\xf8SUi\xe6\xc7\xe7>\xdb\\\xf6S])\xa5\xe0\xcak\xe1oe\xb5\x90\xcf\x8a\xfePVH\xf8\xd6\xd2\x1f\xea\n\x11/\x8f4\xc5gYR\xa6\xa2\x0e\xfe\xa1\xaa\x18\xf8\x05\x03F\xfaCW!\n\xf3\xa2\xaaD\xffPV\x0cX\x95@YH\xd8p\x03\xa2\x1cn@\n?\x8cr^\x05\x7f+\xab\xcd\xd9\xca\x06s\xe5\xaa\x06\xa1\x1f%\x0c\xa6\xd8Ou\xa5s^\xe3\\Y\xcc\xc7\xa9\x1e&_\x05\xe5\xfc\xc9\x12\x0b\xc9R]xJ\x02^~J\x94K4\x0fI\x14`\xd2\xe7\xcc\xb6\xc4\x1f\xea\x8ag2\x98\xd5\x7fj*\x97\x19\x11\x15\xcbL L\xf3$\xc1\\\xb5\xff\x1f{o\xda\x1d7\x92$\x08\xbe\xdd\x8f\xf5+\x9c\xf1\xaa% \x03\x0c1H\x89\x94B\xa2\xd8J%\xb3[\xdd\x99\x92FRVMw0\x8a Fx0PB\x00Q8xdQ\xef\xf5\xcc\xec\xdc\xf7\xee\\=\xf7\xd9\xb3;\xf7\xb1\xc7\xec\xce\xf4\xf4\x87\xce\xfc#\xf3\x07\xf6/\xecs3w\xc0\x017\x07\x10$\x95U\xbbo\xf1\x81D\xf8\x05wssss3s3Q\x08^\xe9B\xc9R\x16I\xc81.\x86\x90\xbd\x18\x92\x99\xdb\x98\xb9Mf\xee`\xe6\x0e\x99y\x1f3\xef\x93\x99\x0f0\xf3\x01\x99\xb9\x8b\x99\xbbd&\xf7qB\xc4\x8b\xad\x80\x04\n\xbe\x92\x85\xcaU\xb6\xb0\xae\xb1\x85l\x85n![\"\xca\x89\x17\xaa\x00\x92X\x92\xc0\x06\xf3\xc4_\xe2\xe4\xe2+Yh\x89K\"X\x92\xeb!\x88V9\xe2\x1c\xbc\xd1ERY\x80\\\x95\xefO\x10\x90\xefOH8\xbe\xe7\x97\xa7\x1cQ\x15_\xa9B\xa1\x7f\")\x04\xbc\x91E\xf8)\x8f\xf0K\xf8J\x16Bh\x85$\xb8\xc2 z/\xb3\xa3\xf7T\x81\xa5\x1f`G\xc5\x0b]`%\xf3\xc9\x89^\xfa\xc9{\x99\x9f\xd0\x1f\xe0Q\x8e\x05x\x94\xdb\n\x04\x99$%\xea\x07]P\xd2m\xf1b) \xb1\x17\xde\xa8\"\x91\x8f\xa40\xf2IR\x18\xc5\x18M\x19\xcb\xc8\x1fTA<0B1y\xac\xa5\n\xe1\xf4\xd2\xdbU\xbc\xca\xca\x85\xa4~X\n*\xba\x17[i^\x9cg\n\xa7\xf1\x95*\x84\xdf\"?\xb2\xf2\x13\x1fg\x00\xde\xc8\"\xc14StU\xbe\x93\xc5T\x11[v|Zp\x8c\xea\x07U\xf0gP\xe2gTV\x82\x03I\xc8\x91$\x08\x85\x84\x84@\x92\x9f \xcf$^\xa8\x02\xd8/\xb2C\xa9\xbf\xc4\xef\x8a\x17\xb2@\x89:v\xc4I\xf9\xb4\x98N\xf9N\x17\x0b\x15~\xe1+Yh\xe9\x87\x88b\xf0F\x16\x89\xf3d\x8a\x13\x82\xafd\xa1\x95/;\xb4\xf2\xe9\xdedI\x1c!I\xc5W\xba\xd0\xa5d\xe0\xe1\x8d,\x92#\xeb\x9d\xe6$\xf3\x9d\xe6\xcb\xa5\x9f\\\xca\"\xf0N\x17\x93\xf3@\xaf\x97\xcc?\x91\xfd\xc80R,Q\xa4\xe0\x9d3\x1b\xf3\x9c!\xd9\xcdH\x92\x9b\xf1\x8b\xac8\xd2\xa8\x1fdA\xc1[`)\xf1F\x16Y`\xfe\x82\xceT[vf\xdb\xb3\xb3@n\x87\xe2\x85.\x90)x\x887\xb2\x08R\xcd\x8c$\x99Y\xe2O\xdf\xcb|\x7fJ\xd2x$\xf0$u\xcf\x11As\x12;\xcf|\xfc\xf0\x99O~\xf9,\x98qW\xfc\xfa\x9c$\x11<\x0c\x83\x95<@\xcaw\xaa\x18\xae$\x9a5Y\xfa\xa7\x92\xbb\x11oT\x910\x88\xb0\x84x\xb1\x15\xf0\x93_K\xfcY\xc0\xa3\xac(Z&Q\x95\x96~\xaa\xf6\xf1\x94\x9c\xe3\x95\x82\xd0\xca\x02\x9d\x95\x9fe<\x89T\x19\xf1N\x16\x8b\xc3\xcbSI\x00\xe5\xbb\xadX1R\xf5\x83*(\xc6\xe4\x87\x95\xd1V\x93\xc8J\x8a\xb8&6\xd2\x9a\xc5\x92\xc8d1M\xec\xcf$=<#\xe7Q\x10\x85\x82:\x90\x05\n\xa2\x9b!\xd5\xad\x94\xb0\xc8\x88P\x05{\x0b2\xa2\xaa]f\xb5w2\x1a\xfb\xae\x1e|\xac\xd2 eMv\xc3~\x18\xc6\xd7\xf8\xe1\xba\xe95j`)\xfdk\xe4\x0c\xeb\xe1\xb5r\xd9\xf7zq\xb4\xa8\x7fp\xff\xbeeL\x8df\x1f\xcal\xe3&\xf2s&\x8doi\x19\xba\xfa\xcaT\x94x\xf2\xc4\x8f\xe2\xe8r\x19\xe7\xe9\xd3\xa7\x84\xa8tn\x95\xaf\xfah\x99v\xe6\xf4\xe0\x8dB;\x06\x82#\xc1\x98\x9e9\x85\x12\xd5RN\x0c\x17\xca\x15\xe3\xb6\x14Dm*\x14\x95\x8aUKA\xc55\x9f5q\xcd\x0c\x19\x8e@0\x1cg\x8eR\xde\xda\n\x02\xd0\xb1 \xbc\xda\n\xfa\xd1\xe5\x88-\x9cD7\xb3{ \xdab;(_\xcd\xdb\xe4\xdd\xeaQ\x9a\x9c\xaa\x7f\x1fk|\xcc\xfaS\xd3wh\xb7\x9a\\\xdd\x94b\xe6\xf4\xd4U\x13\xf6u\x8f\xf5!8j\xefk\x16\xcf\xcbx]\x98\x91`\xc6\xc2OY \x03\x16\x8b\x9a\xef.W\x9cEq\xe6\x83\x8a>\x88\xd2`\xc6\xd5P\x07m~\xb0\xce\xe4\xbd\xc0\xac\xd5\x99#\xdcn\xad;[k\x83\x01\x93\x9f\x00+F\xc7\xef\xee\xf4CBF\x05f\x16\xc3\x8f\xc5\xf0\xeb \x12 \xc5\xb4\x14\xd3\xd2|\xb5\n\x03>cY\xacC\xcdc\xfcb\xc5\xa7\x19\x9f1?B\xe8\x0c\x08g\xb1\xfa\xd3|Q\xbfP8\x87\xa8p\x0e\xd9\x13-\xc8u\xd8\xefw\x05\x0d\xdc\xd6p|\x8f\x85\x05f\x89\x1e\x8fE\xdfC\xf16\xe9y,\xef\x0091AS\xddf\x11.\xe5\x95\x16\x0e7\x18,ey^\x7fl>T\xe8\xa5\xc8q\x93\xea\xe0Q\x80\xdd|%\xae\x89\xe4|\x0d\xc4\xce?>b\xe7\x9d\x11\x9b\xa5At\x1ar\x8c\xbf \xd9\x80\x9ba\xf9M&\xde\x16^Ja\xe8\xf7J\x887\x1cp\xba\xa6\xad\x0e\xdey\x8e\xf1\xeeN\xe4/\xc1\x98\x95\xb8\x9fC=y\xab}\xb1\xedA\x1c\x1cL\xe3\xa8\xb8;qu\xc5\xaa)\xd0\x9bri\xb7c\x9fz\x94\xd1\x99\xd1X\xa7\x16>\x00\x14\x7f)\x90]\xcd\xa4\xa8\x0e%|(\xf1\x8bCw\x0b\x17\x05\xfa\xafk\x12\xb9\xc6\xbbL\xf5\x07\xd0f\xe9\xf0q6q\xeb\x0c\x86>\x01I9\x01\xb1\x05\xd8\x91IY\x80\xa4\xbc\x8cg\xbc\x95\xa3\xb8 \x0cm$\x03\xf9\xca\xef\x95`\xfc\xc2875\xd6V@\xeb\xbbZ;M\xea\xc6\x81UL\xba6*\xf1\xec\xd7_\xcb\xebpd\xf8\xcd\xd61k\\\x17\xf8\xa5h\x1d\xb6\x18\x90?X\xf8\xe9\xab\xf3\xa8\xb8[\x1ev\"\xfd\xac\x99A\x1b\x00\x83\xd6\x8d5c7e\xcf\xd8/\x80t\xc5\xd1\x1a[4q:\xd0<\xe5\x18\x07\xb4\x06\xbb\xbe\x9b-\xdd\x02A\x8a\x95\xa1{X\xe6\x05\x83\x9e\xeb\x17\x8fm\x8f\x18\xd4J\xcc<\x07\x7f\x1e:\x8c\xdb\x97\xa6Xp\xbf\xf1\xf6\xd5\xcb\x01\x9eu\x83\xf9\xa55\\\x80z\xd6\\i`\x1f\xaao~\x1d\x96Z\x1c\xc1\x8eY,\xcf\xa6\xfd\xf2\x1a\xe8\xf2\xee\xb2\xdd\x9cL=\xb7\x862\x157\x1f[\x8fYV\x99\xe9\xac\xfd(\xa6dAb\xef\xec@\x1f\xa9\x9d!*:\x1e8\x1bC\x8f\x15\xb3\xa7\x9c\x87T\xe6\xa6\x80\xd5\x80\x1d\xd6\x8f\xa5\xb0},\xf8\xf4}\x01\xc6\xd4c'y\xc6\x12>\xe5\xc1\x19\x9f\xb1_I\x99\x9f\xb1 \x9a\xf1\x0b\xf6+\xe9\xa0\xe7\xb1\x13\xf4\xed\x05\xf7\xa4k`\xb3\xcf\xee\xf7\xb2\x04\xa5o\xd1r:\xfc\xf6\xe9`\xda\n\xe2\x9d\xbc\x8f\xeaWX\xd3jo\x05\x81v;QG\xd6\x99\xc6vY\x9f\x96\xa5x{\xeb-]t0\xddT\xcf\x0d\xa7\xf4\xff;\xac\xc6\xd7\xf8\xc5\xaf\xd7\xe44:\x1d\xe0\nfa\x1cv\xc4\xd9i\x97f\x99lz\x0en n\x85\x0f\x99\x17\xa0\x9e\xb7\xd6i^\x12\xdd\x16\xcc\xed1%\xfc\x02BK~oX\x9fv\xc6\xfa\x10\xb0\xbe\xee`\xae\xfe\x18X\x1f\xde\x00\xeb\xc3[\xc7z\x85\xc2>:\x93\x04\xfe\xa9\x8dk)V\xca\\\xac\x94N(-J\xaf`\xa5\xcc;\xae\x94\x8d\xd5zpz\xcf\xe5\x99l\xdeL\x8e\x8f\xa2O\xfdY\xa1\xc2\x10\x195\x9e\x0da\x80\xd7\xf9{L^\x139\x8a@\xd3\x06\xb7J\xc8Z\xfa%\x13\xe5\xa7K\xd6\xef\xb0L\xcf\xe4\xa5\xb2\x95\x93zln\xae\xf6y\xb7\xd5.\xe0\xb6(\xc0\xb6\xf8\x05\xadc#\xf5\x83vE\x92\x99>\x87(\xfcQR+y\xfd\xef\xa0pR\x7fu\xc5\x86\xec\x1ed\xc0K\xc6F\x8c\xc3\x85I\xb8\xed\x07\x0cZ\xa5\xb5\x0f\x96o\xcfhJ\x02\x17g\x97J\"\x81\xe8\x84\xe2=\xf0\xd8\x1c`\x92\xa37\x1ep\xb1\x13#+\xfa\xdc\x0f\xc3 :-D\x0e)\x83\x95\x03\x8e\xb9\xd9,H\xf84\x0b/Y\x90\xb2(F65N\x04\xd18\xb9\x84\xc0*_\xaf\x92x\xb5)\x88N\xfa5[\xf9\xd3\xf7\xfe)\x1f\xb0\xafR\xce\xbe.\x1a\x1c\x00\xc3Z\xfct\xdc\xaf\xc5:\x9b\xfaa(\x9aX\x0e\xd8\x1b\xee\xcf\xd82N\xb8\xe0\\\x17Y\xb6\x1a\xdd\xbb7?\x19,\xf9\xbd<\xe5\x9bP{\xb3\xfc\x8eu\x91hx(f<\x19\x07\x13v\x007+\x8b\xcb\xa1*\x0d\x89\xc4\xbb\x05/\xcf:\x15\xa2\x19\xa4`\xe5(\x18\xef\x94%\xfcgy\x90\x80TQ?O!\xdf\x1dd\xa9$\x067b\xdc\xa9\xe0H\xdb\xa5k\xa6+\xe61\xbc3\x92\xa1\x0d*\xb4^\xba\xd6B\x1co\x10\xd7\xdd\xd5#\xc6\x10c,\x91\xa4\xdbm\xee\xa4v\x9b\xbb\x8b\x10\xe11\xdb\x80\x10\x91A\xed\x16ucMV\xeaBb\xbcB\xadM\xe4\xd0\x0e\x9a5nvS}\xea\xc8\xf5\x82\x17\x9f\xae7\xbbAx-\xf0cc\xe9\xf8\xe3\xe1\xa4\xd3@X\x17\xd9\x8e\x0d\xa3\xa5[\xd8\xf6\x05k~\xbf\xeeu\x96&s\xa7\xcdWL\x95\x9e\xc5\xba?\xd5\xe5\x85\xec\x80I\xbb(\xe0\xfc4\xf1\xfa\x1b~zx\xb1*\xef\x81\xf7XGG@\xf2K\xca\xf4\x08\xaf\x9c\x82;\x89\xb7ZJ6\xee\xfd\xea\xaf*\xd7\x1b\xef\xfc\xd3\x1e,\xe0\x16k\xb2L\xef &\x9bpD\xa7W\xa2\xe3\xaa\x07\xf58r6\xe0^\xda\xddwiN\x98a,\x05\xb5+UZx\x07\xd9\x84\xbc\x9a\x9bSR~m8\x01ht\xb0T\x99\xa1\xcf\xfcL\xfb\xfa\xcc\xcfx\x8f\xc6J\xa3&\xcemY7\xe1\xa7\xfcbE\\1\xb6\xa1Q7x\x9e4#+-\xd0/v\xec\xe6\xad\x1a\x91\xb6i\x1bn\xdd\xf6\xd4\xe8\xfd\x088\x9b\xc6=\xb4y+\xc620\x03M\x05$\x98;\xf4\xa8\xa9C]iL\x9b\xd3\xb7\xea/YIs>\xc9\xf6Q\xc5V\xa6xl^;\xa9\xb0}\xc1J\xcf\x07z\xc2\xdc\xd3\xa4b7\xf0C\xd0\xe4x\xa7P\xe9\xdfR\xfb\xbd\xe1\x83\xc1\xee@z\x1e\xb8Vkg\xa5\x8f\xe9\xdd\xfb\xee\xa0\x88\x98@Y\xf3\xb6\x19\x1b\x07\xb2\x9d\x07\xa4}\xef\x83\xfb{\x16\x83]\xdfQ\x92\xb9\xdb\x18\x87aG\x8c\x9d\x1fn\xd3n\xa3\xeb&\xca\xa2\xb3\xbdep\x11Di\xc7I\xad/xuf\x19\x13\xd2\xc3\xd4j\xef\x8b\x9f\x1c\xb1\xdeg\x87\x9f\xbfxyx\xfc\xe5\xb3\x97\xbfe\xf1\xad\x90f~\x16L\xbb\x95])\x0c\xefTZ\xfaS]\xa3\xc2\"\x08g\xcf\xd7\xadu\xca\xb3\xcf\x90\x1a@\x84\x9dj\x9d\xe3/\x0f\xdf\xfc\xda\xe1g\xf6\xaa/\xa2 \x0b\xfc\x10\"\x17\xadY\xf5\xb9\xd6\xddu\xaa&<\x82\xbb\xb4\xaa\xc6\xab\x97\xcf\x0f\xad \x94+\xe8\xc7A\x18~\x89\x8eK;\x80\xa4\xa8\xf6Y0\xbbF-\xf1\xb17\xa8($@j\xc3\xa3E\x9c\x0bp\xc86\xbeZ\xcd*\x10\xed:\xc8z\xbd.\xfd\xfd,\x98]\xa7\x1a|.Zv\x86\xcfW/\xdf>\xfb\xfc\xf0\xf8\x9asB\xd5^\x1b\xc8T#k\x0c=\x87\xa2\xc5\x1c\x8dX\xef\xd5\x8f\x0e\xdf\xbcy\xf1\xd9\xe1\xf1\xa7\xcf\xde\x1e\x12\xbc\x8f\xd9Nh%:\xb0\x10\x93\xe0\x8c\xcf`5}\x9e\xc4\xcb\x86\x15\xd9\xe5[S\xeb\xb7fA\xba\n\xfd\xcb\x97p\xe3\xbb\x13G\xce\x80\xf0j\xf5X]\xac\xab\x1e\x8b\xd6H\xd1\xd4\xce_\x13\x1cgK(\xb9B\xed\x11\xa1\x9a;\xaa\xb8a\x8b\xfa}W\n\xb4\xc7\xd1d-\x15\x17AJ;\xf7\x9b\x0f\x8c\xda\xe2\x88.C\xa6\x19y\xa4\xabP\xd6\xd0\xb5k\xf7\xca\xd2\xa1\x1b\xf4\xc5\xd8;\xd6\xe8N\xad.8\x13\xaa\xa7\xed\xb3\x85c\xa4B\xcb#\xb2\xf4Z\x08\xa9\xed\xc6kt{\xa5q\xa9\n\x84E\xda\xba\xf0+\x98\x87\xce\x1d\xd8\xe8^\x94u[C\xac\xba\x8e\x82\xa8\xbdU\xf5(>\xaf\xdd\xa6_=\xd0\x9f\xba)`\xd4\xd9\x14\x90)\xb1\x97\xe0\x16A\xd3\xd9\xed\xb3\xe2 \x9c\x8d\xd8cw\xc1\x88\xf6y\xe8\xa7\xe9\x88\xfdV\x9c3\x1f\xf4!\x19_\xae\xb2 :eY,C\xcf0\x9f%<\xe5\xc9\x19\x9f\x01\xa6\x88\x9ez\xec\xeb_I\xbf\xf60\x16>n\xd8\xd1\xd1\xdd\x8c\x9dp\x06\x11\xf2A\xb4\x0b3\xdac\xef\xf9\xe5\x80}\x86M\x05\x19\xf3S\xe6G\xa5\xc1\xb4j\x11R\xb8?{,\xca\x9c\x07a\xc8\xd2L\xfc=\xe1\xcc\x9fNy\x9a\x06'a\xd1\xb8n.~\x97vRo{\x94\xd8\x0b\x80\xd6A\xea\xa5\x1e\x90~\xad3;L\xe3\xb9Cs\xa2\xd9\x01\x0b\xc7\xd1D\xca\xe9\xbb\xf7\x83\x95\xa7\xcb\xc0\xa1\xb6C\x10{\xe4\x1e\xebu\x9e_1\x95\x02\xb2\x97q\x9eh\xb6\xc2\xa0 \xcb\x16~\xc4\xe2h\xca\x07\xec\xdd\"H\x05\xe4\xe7a0\xcd\xd8\xd2\xbf\x14s3\xcb\xb9h\xc9\xc7Mm\xd0C\x07\xc8gq0s8\xc6\x95_\xc0\x8b\xc7\xa8\x80S\xb6\xa7Y\xff\xab?\xf2#\xb4\xc7\xe5\xfa\xd3\xde\xac\xbd\xc4\x07\xa42\xeb\xd04?\xcf\xe2\x93 \x9aU-\xee\xd7PA\xd3\x81u\x98f#\x98\xd6\x11+\x13\x88\x95\x8e3;b\x9d\x10U\xee\xdc\x11\xc8Te\xe1\xd0Ml\x05\x8f \x12\xc2\xdc\x9fr\x1bB\xc5g`\x87Q\x9a#\x86eXj\xc9\xb3ENDg\x9f\xe5Y\xfci\x10\xcd^\xfbAb\x89TY\x8dR\x19\xd5\x97\x99\x0f\xcbl:@\xee\x1f\xa6T\xbe\xbb\xa4\xbfw\xf5\xc0\x1c\xd7\x1bC\xbb\x8a\x1cC\"\xb6\xedJg\xf2^h4\xce;X\x8e\xad`\xd8\xc6\xf7\xda\xf5\x80sg\x85!w\xa6fm\x97M\xc7\xf9D\x0c:li\xa9\xc1\xef\xb3\xfe\x881\xcd(\x02\xd8\xd6S\xd6d7\x0d\xc6+\xe0\xac{\x05\xb7\xdc\x86H*\x06\x8a\x92w\xdb\xc1\xc0P\xbfmR\xf4\xe7L\xba\xcfN[\x03\x96\xeaO\xe0\x80\x13q;\x13\xb0\xac\x13@\x99\\_\x81_E\x85\x11\x81 \xd1l\x15\x87\xc1\xf4\x92\xfdJ\n(\xfd\x9e\xc3\xeb\xf9\x82G\xb8\x02O\x81\xdd,\x96\xa6\xa8\x02\xc4x\x89\xb3\xdf\xd0\x9d\x03\x96`\xe4\xd2\x85#^\x042\xb0\x11\xd5C\xf4\xe0\x8be\xcf\x8a\xb2\xdd\xa0/\xddA\xcb\xda\x1d8+(\x1ec\xd0\x93\\|\xc7+*7\xd6m\xe0\x15\xcc-\xbe\x13\xa1\x9fY\xf7\xfb\xea\xb1$p\xa4AY\x83\xaf~\"=\xf3Xo\xc9\x93S\xaeB\x1c\xbd\x8c?\xcbW\xa1\xd8\x90\xf9o\xf2\xcb\xd4qG\xec\xb9\x1f\x89m\x17\x8a\xb1(\x8e6\xb1\x99\x14\x08x\xe62\xe2\xc8\x82Q\xca*:=`\xf8Z\xbf\xf5.\x91\x06-\xf8\xb5\xec<\x96\xf4;\xc5\xed^p\xfa\xa9\xbf\xe4\x18\x06]l\xbd\x9dv\xd6\xc7\x02D+\xf0\xf0*\xf6\x044\x92SE\xa7~\x9eJk\xb2\xf3\xb8.\xb6u\\\xb1\xc5\xd5\x0e\xd3\x8e\xab8\x0e\xc9w\x8b\x15P\xe9\xa7\xd8\x1c\x17\"\xf5=\xbfL\x15\x0b,\x19S\xcb\x0dUeB\xd8 -\x16m\x96\x88:{i\xdd\xf70\xb04F\x83\x15\x10\xf1\xcaH\xb2\x96{\x8e\xe2\x81C\xad\xa5\x96]=\xaaL\xe2\xca{(I{\xe1\xd2\xd6#\xb2\xef\xde\xe0^\x98\xf0\xd5\xcc4\xa5\x9b\x13\xe3\x14\xc0\x0b\x1dV\xa4\xdbz<\xbb1\xe0\xad\x00\xb7\x02\xf5\x9a]]\xb6\x1e\x1524\x9e\xa3\x94\xc4\n\xec\xb5/\xd5[1C\xd1\xa9\x87P\x13\xb4\x82\x86)\x83\xd6\xe3\xe3 \x85J`\xe3\xb7\xb1E\x96&H\xaa\x89\xb4\x97\xed\x1d\xac\x88\xea\xaf\xddG\xda\xde\xa5S\x1fO\xac}\x94\xfe\xc1\xa5\x02\xa9\xb3p\x0b\xfa\x87\xf2\xf8d\xc0\xa3\x9f\xe5<\xe7o\xb4\xa6$\x86\xad}z-\x06\xdc\x11N\xca\x16g\xa3\x0e\xb0\xeb\xc3\xea\xd8\x1e\xd6\x97iF\xa2\xce\xb1\xaeT\xd7y{vB\x90\xb6\x12\xb2M\xe42\xab\xa9T\x93\x06sPV\xa2\x89yXP\x91\xd7\xee\xdc\xe9\xf0e\xf5T.\x11r\xb2]\xcf\"\xeag\xfd}\xb6\xdd\xd6>\xab\xc9,\xdb\x8f\x05L\x9e\x88\xb2q\xc4\xfal\xd8\x81O\x85\xe0\x0b\xfbH\x99\xe2\xeb\xfaA\xf8\x00\xe8\xab\"\xda\xad\xa4t\x9b[C\xe7&|\x0e\x0e\xc4\xbc\xca\xbaP6\xeaQi1\x9fq\x19\xcb\xc7>\x90\xc2\xcaWT\xa9\xb1\n\xec\x80Lv\xdcV\x81^\xe0\x10\xacY\x0evuUs2`\xa6\x7f\x85\xf8\xc4\x88-\xc5\xc9W\xa2\x7fq]]\xf0.\xe2\xd3=\xb1\xb9\xe8\xea)q\n@~_P\xc14\xd0\x14w=\xb7\x06\x91\x9c^\xad-'\xde\x04\x84\xe5\x15c\x97\x88\x9f\xb3cOO\xac\xf8\x10\xc1h\xc8Z&\x85\xe22\xa8_>\x90!O\x9d\x95n\x00\x9e\xb9\xae\xc7VN\xe6\xb1S\xf5\xc2\xd5\xcb%\xec\xb0u\xb5\x08\\EP\xc1\xe6\x0bMI\xbd\x98\xe3\x82\xacB\xef\x1c*\xda=\xd6\xc3\xc0\x07pnr\x06\x83\x81`\x98M\xd1\x16NO\xb0\\\xa15\n\xf3\xd9\xd7\xd8\xc0\xd7\x92\x93\x04f:u\xf5\xf1\xcb@%N-I\x86\x9bj\xe4w\x9a,\x93n`\xd0s\xd6\x12\xd3\x0c\x0co\xca\xe2\x91cs\xe6g\xa7zr\x00F\x0cg\xee\xca\xe0\x96\xc3\xfb;\x10\xdd\xf2v\xc7\xb3\xbdG\xdb\xe2)\x1b\x00\xb1\xd5\xc5.Ek\xfd\x12*5Z\x0b\xc1X\x1f\xeby\x96#$\x8f\xf2%O\xd0\x01\xfe\x86%\xd0\xe8)\xef*]Q[\xf3\x80\x96\xb5\x13b\x82\xc6\xbe\x07\xdf{\xbf\x83[\xe9\xb7D\x93\x8e\x9d'\x1b\xcf\xea\x08\xc4\xf6\xd9\xd0Bv\x18uz\xb8\xc1\xfao\xa3E\x80\xb7\x9e\x14A\xe3M\xa3*\xca\x927\x95\xe0&\xf5 >Iyr&\x86.\xce\xdcp\x0bXK\x1a\xc9\xa0\xbc\xe2P\xad\x12{\x10\xd1]+\xb4\x8fvr\x19:\xc7\xd6\n\x92;\xf0\xf7\x02\x91\x8a\x80\xc7\xf0\xcf\x00Bn\xa4\x98[\x8fYP\x11\xf0\x04\xb4\xcb\xa2\xb3\xc2)N@\xc8f\xb6<\x1a\xc4|\xecO\xf0\xe2\xa7xA\x07G\xb6\xbd\x8ai\"\x11\xbd\xc7u\xeb\xab-\x93\xd8\xa6\x16F\x8a\xe6\xbc6:\x08\xca\xaa +\x04\x04E\xc5F\x91\xe9\x99\xe6a\xabY\xf2\x85\x07C\xec\xbamm\xeaO\x06\x1e\xc7\x04;\xfb\xe2\xe5\x8bw\x8d\xc5?\xb4\\Q\xd5No\xb1\xcb\xb2E\x12\x9f\x83P\x05n\x119w\xdf\xf0Y>\xe5 \xeb\xdde}\x96\x81\x1b\x90\x9e\xc4`>c\xc5V\xc9fy\x82*[\x90 \x05\xdfH\xe3\x9b\x17sT\xaf\x81\xd8g\xe5\xa7)j\xe2DZ\"[\x0e\xd2\xb2\x19\x8f]\xc69\xca5\xf8\xc5*\x0c\xa6A\x16^\x16\x0bf\xc1U\xfb\xd8\xe0\x80\xbd\xab'\x81\xfe-\x8a\xc1B\xb0h\x15\xba!\x1a\x9e\xc5\xd1\xdd\x8c\x9d\xfbQ&:\x91\xf2\x8c\xf9\xd2\x01\x81X'\xa0\xbf\x93\xbd\xc2\x8eL\xfd\x08\x0c?\x80\xb9\x91\x86\x83,\x9ek-7\xb9\x96\x11\xd3\x1f -\x10\xad^\xdc{\xfd\xe6\xd5\xa7\x87\xc7_\xbd\xfc\xcd\x97\xaf~\xfc\xf2\xf8\xd9\xf3w/^\xbd<\xee\xb1>\xfb\xd2\xcf\x16\x83\xc4\x8ff\xf1\xd2q+\xa1\xcd\xb5\xe0\x9e{\xee ]\x85A\xe6\xf4z*\x80o\xe3\xe7k\x93\xdb\x15\xbd\x10\xb5\xe8\xed\x86\x01>\xdd\x00K@\xbb\xbfJ\xe2\x13\xf1\x1ed\x0b\xe63\x1c6|v\xc0>\x83 \x12\xcb5\x8b\xd9\xc2\x8ff!z\x99P\x98\xce\xfa\xec.\x8b\x13\x16g\x0b\x9e0\x1f\xd6 \x88\x18z\x08\xe1Ozh\xd6\xb5\xf2\xd1<\x8a_\x82\x8d\xd54\x06/\xa3 X\x96\x06g\x80:\x85yO\x81q\x1a\x9aM\xf3$\x01\xa3\x03\xc0)\x81\x1c~t\xc9\xf2\xe8}\x14\x9fG\xea\xbb\x1e\xcb\xa3\x90\xa7)\x0b\xb2\x1a\x12\x07\x11;_\x04\xd3\x05\xde \xa4>PAZ\x8f%\xfc\xd4Of\xd0X\x8c+\x06\xbf!\xc1\xd2\x0d\xcd\xd1\xa9\x86\xc0\xd9\x13D\xd9\xc1]\x8b&\x86\xd0\xfe95\xd3\xa0\xca\x01\xd3(\x0e\xc2\xf1\x06\xfa\xddEo)\x96\x87\xd83\x0b\x9d\xa4\xd2`\xc6\xb2\x12\x14\xc9\x80\x8f\xb2\xf8*/\xbd\xbc\x88\xceb4\xdcz\xed'>\x84u\xff\xb2\xf0\xb1\x9b\x15\xac\x84\xf4\xf4@\x124\xf0\x16$\xb6\xae]\x97\xd8\xbbD\xd6\x83]#+(\xb2\xf6\\\xf2X\xeb[\x95\xba\xd2v\xa4\xb2\xfey\xf3\xfa\xb7\x1e\xc0\xb5\x05_\x1bj\xa2\xe6\xd8[\x0bd\xb1^\x8d\x82\xff/1\xe9\x15\xbds\x04\xe5%\xa61P3L\xcdU\xf0}\xcf\x15E\x9c\xed\x8e\x9f\x82\x1a\x89\xa6\x0e\xb5\x1b\x81\xa4\xb9\xa5'\xbb\xb7Y\x9cp6\x8b9zc^\xf8g\x1c%\xf3\xc1L\xc9\x1c\x06\xecK\xff=g\xf2*//#\x8c\x94J\x85\xfa\xe6\x1b\xa4\xday\xf7|\x11\xa7\x1c\xa7&\x05\x99\xb0l7\x1d\x10\xc1k}I'\x0b\x14s\x0d\xed\x13\xba\x0d-\xb6\x84\x17\x19\xaaM\x07A\xaa^\xf5\xb8.\x85\xbbd\x1f$\xd8A\x8aB\x91\xe2\\\x9e\xd5\xa2\xa2\xa8\xc1e18&\x88*\x81\xdf^,\x979\xc4\x83/\xbeZ\xdec\x9a\xc7a\x18\x9f\x07\xd1\xa9rx\x10\x80S\xaa\xbb\xac\xcf\x02T\x1a\xdc\xedy\xacw\x17eL\x83\xbb\xe6\xd8\xe1\xc0%f\xef-\xff\x19(#\xf0\\\xe8\x0e\xe6A\x98\xf1\xa4\xe5\xa8 \xc7\xbba\xdc\xdf\xaa\x1da\xeaZ)Y/\xd7e\xc0\x07\xac\xa7]\x19\x04\x81\x04^\x94,J\x1d\xb0\x9e\xf2\xeb\xd0c\xa3\xe2G\xc0S\x14\x97\xe1\xc0ss\xe0l\x1e\xe7\x118\xa5\xbe\xab&E\x03\x7f\x16\xb3y\x10\x15a\x83\x04\\Q\xf0\xaf\xe4_\x853 \xbcC.\xc5\x1a\x0dp\xd6\xef>\x96\x9dD\xff\x13'\\J\xeaf\x83\xbbuw\xca\xb7\xbf\x1b\xde\x1aE\xf3\xd6\"\x0euo\x9c]tH\xa4d\x13UH\xa0\x1a\x12X\xaed\xa7\x97+)\x0bEQ\xe7\xad\xc8?\xeb\x02(M\xb6y+\x13\xa4W\xacB\xab\xa0\xd0b\xd7\xae\x07\x00/\xe7\xa9:#]>\x199\x8fP\xc4\xfd\xe8\xa1[\xedy\xe4<\xd8\xdb\xead\xe0Y\x1e\xa1\x87\x86\xafC\xe9l\xf0\x91\xeb\xf4\x8a\xd8\xe0\xa4\xad\xf3\xde\x96\xc5\x8a;r\x86\x0f\\\x8d\x8a\xaeq*\xb0\x1d\x084ER6\x8e\xd1c\xad\x16\xbb\x1c\xee\x14@4\x81:\xcdJ\x1c]~\xd7 \xc0\xcdV\x86\xf7~\xe2\xfc\xca\xf6\xd6\xd5Q\xea~\xe2\xfc\xd4?\xf3\xd3i\x12\xac\xb2\xab\x99\x9f\xf9\xee\xbd`i\xc2\xf2\xde\xf8'G\x17\xdb[\x9bG\x17{\x87\x93{\xa7\xf5\"\x01\xb69\xfe\xc9h\xd2wG\xf7N\x97\xe6qk\xdc\x1b\x08Bt\xaf7\xa1\xe1]\x05h\xeaGA\x16|\xc3\xbfJ\xc26a\xd5\x99\xb4\xb5\xf1\xe4\x8e!\xaf\x95\x89cA\x8fRKw\x12\x10j\x05\xfd\x010\xec\xaf\xe6\x0e\x1foM\\\xf6\x94m\x12\xee\x97\x9d\xdc\x95&\xe7N\x04\x12\xc0\xa5\x9fM\x17N\xe0\x8ad4\xd9\x11\x873\x96\x0c2\x9ef\xe8\xb6\xa4\xe7\x9f\xc4y6: \xfd\xe8\xbd\xd86r\xb8\x1d\xae'V\xbe\xb3\xa6\x15e\xb9<\x1e\xd8\xec\xff\x1f\x0e]#\xdci\xc3f\n.\xa2\x07Y\xfcE|\xce\x93\xe7~\xca\x1dpG\x02\xfa\xa3\x03&\x90\x94\x8d\x0c\x1f\x1f\x96\xe5\x15\xaf7\x84]\xca\x9e>r\xb6\x1f\xda\x96\xaf}z\x95\xb0\xdbI\x1c\xeeVG\xb3\xe6\x1a+\xbb\xb7W\x17]|/\xa6\xe4`H\xdelF\xde\x0d$g\xff\xbf1y1\xc7\xf5 \x8e\xba\xd9\x8cw\x03t!d\xb9\x96\xe5\xb8\xbe\xa2)\x84\x13\xeb\xc1r\xa3g\x8f\xf2\xaf\x0b\xcb\xea\x9aCh\x96\xf5\x80\xc5\x03\x19\x94@\x814F\x12\x18 \xd1\x90\xe2y\xa34\x93\xa8\x0e\x96\x91hd\x91\x0d\xa6\x0b?y\x969[\x16%L*\xcb'N\xe4\xb1\xa1\xb2P\x82\x08!\xd9 \x0d\x83)w\x1a\"\xb0\xe4c>\x01\xc5wU\xd8\x7fm\xda\xbb\xfd\xb0\x1d\xc4\xf6cl\x0c;\x9a\x14\xdf\x93\x98T,2\xe9\x02\xea\x80\xc5\x82w\xf7\xd8\x06\x98\x01D\xec\xe9>\x8b\x95Ux\xf1\xa9\xeb\x8e\xe6\xc1^\x9d l\xc1\xbb\x9b\xd0g\x8e\x08\x02\x97\xb4\x92\xf6\xc5b\xe3h[\xbf\xc4Ks\xb65>\xa1\x10\xb97>:\xcag\x0f\xb7\xb66\xc5\xff\xf9|^\xbf\xf4\x96\xa8B[;Xhkgw~t\x94\xcf\xf96\xfc\x9c\xf3m\xf1s{k\x06?\xb7\xb7\xcc&\xe0\xc6\x00|fg:\xc6\xcf\x9c\xd8>\x07\x86~\xe3\x9f\xb4t\n.\xf49\x07#\xbd\xd1\x19\xdf\x85\xe2\xb3\xf9|\xe2\xfe|\xfb\x03y\xc5Oo\xf7d>\x9f@\xc2\xd4\xfe\xa1T~\xa8\x08\xe1sU\x84\x01r\xc5[\xef\xa0V!T\x9f\x99\xf3-\x8e\xff\xe6\x93\x03\x15\xe1\xc9\x91\x9d\xde\xde\xda\x9a\xc9V\xc7\x18\x93)\x9f\xc8\x95~\x85A\xe2\\k\x1b=\xf7\x93\xfaY`\xaa\xf5r\x1c\xa8\xae\x1e\xf4\xf0\x1a<(\x08\xa3z\xfb\xb5~\xcf\xd9\xbe\x0c\x8c\xe0\xc0\xe8\x9c\x83\xfdr\xa40\xe8)F\x8a\xec\x9d\xf6\xae\xbb&\xb8\xe4*\xe7p_t<\xb9\xee2\xde~hc\x08m\xcb\x98\xf2%/G\xdb\x1b\xdf\xfdo\xbf\xf3\xbb\x93\xde\x8dF\xd6\xbc\x9d\xa8\xdd\xdd \x1c\xb1o\x14,\xbe\x0f,\xbe\x0b\xce\x1ez\xbd\x1b\xdd9\xd2h\x9c\x058\x06\x0b\n\x87\x9e\xf1\xd1\xc5T\x1c\x8bf\xbbG\x17\xb3\x87\x9bG\x17\xf3\xdd\xa3\x8b9\xbc\xcc\x8f\xf2\xad\xa1X\x19\xf9\xd6po>\xb9w\xda\x00\xc2u\xc9\xc3M`\xed\x80\xd0\x1a\xa4\x82 \xa9U\xd0\x0c<\x96\xd4a{} \xdew\x9d\xea\xd7{\x7f\xf8;\xbd\x11\xeb=\xab\xad\x9b\xde\x1f\xfe1:\xf9\x8f\xd3\xc9\x7f\x82N\xfe\x1f\xe8\xe4?I'\xffC\x91\xec\x1b\xc9\xff\x88N\xfe\xc7t\xf2?\xa1\x93\xff)\x9d\xfc\xcf\xe8\xe4?-\x92\x9f\x1b\xc9\xff\\$O\x8d\xe4\xbf\"\x92\xeb\xde\xf1{\x7f\xf8\xefD\xf2\xccH\xfe3\"\xb9\xee;\xbe\xf7\x87\x7f\x96N\xfest\xf2\x9f\xa7\x93\xffg\x91\xcc\x8d\xe4\xff\x85N\xfe\x17t\xf2\xbf\xa4\x93\xff\x82H~a$\xffE:\xf9/\xd1\xc9\x7f\x99N\xfeW\"90\x92\xff5\x9d\xfco\xe8\xe4\x7fK'\xffU\x91\xfc\xd2H\xfe\xf7\"92\x92\xffG\x91\xfc\xcaH\xfe\x9f\xe8\xe4\xbfF'\xffu:\xf9o\xd0\xc9\x7f\x8bN\xfe\x0f\"96\x92\xff#\x9d\xfc\xbf\xd2\xc9\xff\x1b\x9d\xfc\xbf\xd3\xc9\xff\x89N\xfe]\x91\xfc\x95\x91\xfc\xb7\xe9\xe4\xbfC'\xff]:\xf9\xff\x14\xc9\xb9\x91\xfc\x7f\xd1\xc9\xff\x99N\xfe/t\xf2\xdf\x13\xc9\xf5\xd8\x01\xbd?\xfc}\x91|i$\xff\x01\x9d\xfc\xa7D\xf23s9\xfc\x9eH\xf7\xcd\xf4\xbf/\xd2\xdf-\x8c\xf4\xff*\xd233\xfd\x1f\x88\xf44\xad\xa7\x7fK\x93\xe5oi\xfa\xfb-Mh\xbf\x05\"n\x90\xb7o\xff\x04\x9d\xfc'\xe9d\x80\x80A\x0c\xbf\xfd3t\xf2\x9f\xa3\x93\xff\x02\x9d\x0c\x84\xd6\xa0\xa8\xdf\xfeY:\xf9\xcf\xd3\xc9\x7f\x91N\x06\x12d\x90\xe5oij\xfd-P&\x83Z\x7f\xfbW\xe9d \x13\x06\xfd\xfd\xf6\xaf\xd1\xc9\x7f\x83N\xfe[t\xf2\xdf\xa6\x93\x81\x04\x19\xf8\xf6\xed_\xa7\x93\xff&\x9d\xfc\xbbt\xf2\xdf\xa1\x93a\xcd\xfe\x9a\x91\xfc\xf7\xe9\xe4\x7fH'\xffc:\x19\x16\xe7\xa9\x91\xfc\x0f\xe8\xe4\x7fD'\xff\x13:\x196\xfb_7\x92\x7f\x8fN\x06\x1e\xc0X\x98\xdf\xfes:\x19\xb6Xc\x07\xfb\xf6_\xd0\xc9\xff\x8aN\xfe7t\xf2\xbf\xa3\x93a\xfb66\xb6o\xff%\x9dLo\x9a\xdf\xd2\xbb\xe3\xb7\xff\x9eN\x86\xed\xe47\x8cd\xd8N~j$\xc3v\xf2\x9bF\xf2\xff!\x92\xdf\x1b\xc9\xff\x89N\x86\x9d\xe0\x0b#\xf9?\xd3\xc9\xbfO'\xff\x01\x99\xfc\xdd\x1f\xa3K\xc3.\x13\x1a\xc9\xff\x85N\xfe\xafd\xf2w\xbfC'\xffq:\x19H\xaf\xc1\x8d|\xf7'\xe9\xe4?M'\xff9:\x196\x01\x83\xa5\xf9\xeeO\xd1\xc9\x7f\x86N\xfe\xf3t2\xd0o\x83I\xf9\xee/\xd1\xc9\x7f\x85N\x06Bm\xf0\x17\xdf\xfde:\xf9\xaf\xd2\xc9@c\xdf\x18\xc9\x7f\x83N\xfe[t2P\xcd\xc4H\xfe\x9bt\xf2\xef\xd2\xc9@\xa8\xdf\x1a\xc9\x7f\x97N\xfe\xfbt\xf2?\xa4\x93\x81\"\x1b\\\xc1w\x7f\x8fN\xfe\x07t\xf2?\xa2\x93\x81\"\xbf3\x92\xff)\x9d\xfc{t2\x90\xde\xccH\xfegt\xf2?\xa7\x93\x81\x98\x1aL\xe1w\xff\x82N\xfeWt\xf2\xbf\xa1\x93\xff\x1d\x9d\xfc\x1f\xe8d\xa0\xb1\x06\x0b\xf9\xdd\xbf\xa4\x93\xff5\x9d\xfco\xe9\xe4\x7fO'\xffG:\x19H\xef\x8f\x8dd \xbd\xe7F2\x90^\x83\xc7\xfd\x0eH\xaf\xc1\xcc~\xf7\x9f\xe8\xd2@z\x7f\xdbH\xfe\xcft\xf2\xef\xd3\xc9@L\xbf1\x92\xff\x0b\x9d\xfc_\xc9\xe4oav^\x98\x1b\x0f\xc0*0v\x9e\xef\xf0\xb8fp.\xdf\x01\xb3\x14\x9b\xe9\xc0X\xde5\xc9\x1b\xec\x1bi\xa9\xd9\xb5)Hi\x8f>\xd7\x16rw\x12\xb0\x11\xce\xd4F`\xa3[\xa9p\x03\xc9Z=\xf6\xa3\x12;R\x96\xdf\x84\xc4M\x9am?l\xf7\xbcG\xabT\n\x0b\xc5}\xd0+x\xba\xea\x04u\xf4\xfa\xc0AA%\xd5\x10~\xa9\x86\x80\x00T(\x87\xcd\xba\xc9a)\xb5\x01\x18Tlmm\x1e]l\xcf\x8f.v\xfc\xcd\xa3\x8b\xfb[G\x17\x0fN6\x8f.v\xb7\x8e.\xf6\xc4\xcb\xde|\xd2\xbfw]%\xa3\xeadt\x93N\xfa\x9b\xdfL\xc6\xcf6\x7f{r\x05\x7f\x7f\xbe\xed}\x80\xb4\xab\xf1\xd6\xe6\xa3\x89x\xc5L\xf9\x02\xa9W\xe3\x9f\xe0\xcf\xad\xcdGlr\xef\x9a\xdd\x8f\xd0Pb-\xb5O\xa1\x939:\xba\xf0\xa7GG\x17'\xc3\xa3\xa3\x8b\xd9\xde\xd1\xd1\xc5\\\xfc\x01\x01\xab\x008B\x1c@\x8e0\x07\xa0#\xd4\x8f.NP\xe0\xba%\x05\xae\xbbsvt\x94\x89\xea'GG\xa2\xae\xbf\x05r\xd9\xf9\xfc\xe8(::J\xa0\xd0\xf6C\xfc\xf7\xe8\xe8(\x1f\xee>\x14%\x86\x0fA\xf9 \x1a\xc2\x7fC\xfc\xb7\x8d\xffv\xf0\xdf}\xfc\xf7\x00\xff\xed\xe2\xbf=\xfc\x87mn=\xc2\x7f>~\x01;\xf7@\xfc\xdb\xd9\xda\xda\xaa\x11\x18\xd46\xf5X\x9fE\xac\xcfz\x16M\xd2\xac\xdf3\x17\x1cH\xa1\xb7\xf7\xe4\xb0\xf7Nh\xa5\x91\x98j\x01\xd4\xb9\x80\xd4|\xf7\x08\xa5\xddG\x17\xa6\xea''5Q\xaak\xa0\x18\xa9}\xd0\xda\xf4\xb3\xcd\xdf>BA;H\xdaQ\xd4~t1\xe36u\xd3\x1az\xad\xf0Zz-\xd0\x18\x8d;\xf7k\xae)\x98\xfcB\x0d\x96S\x8a\xa4\x95Vt\xda\\t&\x8b\xae\xa9>\xb8\xb2\xa9\x12\xdd\xba2naU\xc6\xcd,\xca8R\xf5\xc8R\x8f\x85\x9d\xf4s3Z?wV\xd1\xcf\xd1\xed\x89\xbc\xda}\xcbe\xa9b\x19OQ\xa3\xa7\xe0\xdf\x17`\x03\xc5\x95s0\x9a]\x85\xe1\xd5\xf2*\xe1W\xe9Uvu\xc6]\xf7@\xaa\xef\xc6\x89\xc7\xa6\x1e\xeb\xfd\xb0g\xaa\xff\xd8\xcah\xe8\xb3\xab/\xbe\xb8\xfa\xf2\xea\xcd\xe1\xd5\xdb\xabwW?:\xac5\xc4\xfalnk\xac\xec\xdf\xbcK\xffT\x8d\xb6\xcf\xf79\xc0\x1d\xeb\x87\xd7\xa6\xec\x1b\xce\x06\xd8t \xea\xa6l\x10\xc0\x14\x97\x1d\xb0\x15\x18A#\xe3\xef\x17\x0eG\xd9Z\xa8S\xdc\xb5~d\xbdk}o\xfc\x93\xc1\xa4\xff\xc3{\x03~\xc1\xa7N,z\x10\xc35\xb1\xf2m\xf0\xe2\xf0\xf8\xf5\x9bW\xef^\x81\x91~\x0f\xac\xb8{\xe8\xc8\xd1I\x93\xa9{<\x1c\xa0E\xd3\x88\xf5z\xd7\x85\xc4F >\x18@`\xd6k\x8c\x14\x91~\xcf\x1d\xf7\x8e\x8f\xa7q\xc27\x7f\x9a\x1e\xa7\x0b?\xe1\xb3\xe3c\x9b\x95\xfdu\xa5\nv\xdf6\xed2\x83\xf6s[7\xb0\xa9\xad\x01\x88\xcb\xc2\x87\xcd\xe3\xce\x1de\xde[!JcN{\x05)\xe9\xd2\xe6>\xcb\xd8\x01\x1b\xb2\x11l\xda\xd7\x05\xbf\xa0\x9e\xc4 \xeb\xf88\x8cg~\xba8\x16{\xfdqqg\xe8\xf8\x988v\xb5\xb8OX\x17\xb9*PR\xf0\xa8\x02#\x983\xc7pZ\xcc\xb4\xf3sf\xc0\x8fULN\xf7\xd1\xa6\xb4\x98\xee\xa6@J\xb2VPx\x15\x86\x95.\xbeP\xd8\xfd\xde.\xf0\xbf\x7fx\x16\xc6\xe7\x07\xd5+>0\xc4X\x1b\xf8\xed\x0e\xb4\x01\xcb\xda\x06\xd9\xe4=\xacu\x9c\xe5\"\xeaW\x17#rdC\x8fEb\xe8\xfbh\x8d\xaf\x89\xd82i\x9d\x9c!\x83pS\x02\xd1\xc6\x96\x8c'\xb7\xc4\x88\x0cw(\xf6\x18\x83\xd7h\xcc\xd8*\x0c\xa6\xbc\x0d\xf2\x9d\xd0\x8bf}\x13D\"rN6\x9c\x88=A\xc7\x11N\x04\x9e\xa0\xd4\xd5\xd4M6\x14\xebm\xb0\x8a\xd1WD\x89\x8f`\x1e\xef\xb1\xcd\xcd\x02H\x1e\xdb\xba\xd6\x9e[@\xe9\x174z\x1c\xbb.\xba\x1dG\x93\xf1\xb0m\x0b\xba\xd5\xa1\x146\xaa\xd5\xb1\x08rW\xb91\xf6\x11\xba\xd2u5\x9b\x80\x8d\x01\xb0\x91\x15\xb0\xb1\x04\xac\xd3\xefkH\x12a\xec\xd0\xb1\xf8\xf0\xc4\x85\x08P\xe3X\xc0[F9j_\xdb\x0d\xc3\xddn\x1d\xae\x0d\x89\x12\x15\xf9\xcd\x95G+\xdb-\xa1\xebr\x01\xad\x14\xc9\x8e\xdf\xd2S\x1d\xd9\x9d\x1e\x9e\xe8\xd1\x81\x1b\xf0\x9bQ\xbe<\xe1\x89\x96\x90\x02\xe7\xa9%\x9c\xc4q\xc8}\xe9\xf4M\xf0\xa6\xc7\xc7@\x89\x8e\x8f{2\x10\xc0Hs\xce\xf7}\xceFe\x1d\xc0d\x9c\xf2\x0eb\xfc\x8f\xdc\x07\xdc\xa1>f\x1f\x1a\x16a\xd9\x0fz\x05F\x80\x8c4e\x03\xc1\x034\xeeU7\xdeHnk\xc8\x8a\xc9\x8d\xf7fK\x8f\xb6{7\xae\x8eI\xe5\xdc\xfdV\x90X\xa6\xa5(\x80{\x10\xe9u\xef\xac\xe2w\x9d\xbcI\x06\x8e/b's\xa9\xfa\xaa\x8dT\x11\xb8\x1d\xa2\x05&o\xaa\x05\xe0{(j\xec\xbb\xfe\xc8q\xa4N>\xe6\x13\xb8|\x90wu3k\xa6\x9cI\x8f\xbc\xbc\x00\x87\x95\xf3\x0ea'a\x07,\x1f\xa7\xc0C\x87\x82\xc1\x0c F\x9a\xb1\x1bH\x03w\x87\xf5[ \xf2\x02\x84!`AL\xd8~\xd4*A\xb2\x12\xc6\xd8F\xa3\x87\x15&\xe6\xce\x1d\x96\x8d\xb7&\xe3\xed \xde\x19\x14\xef[\x82\xbd\x13/\xc3\x89\xd8\x82\x8ao5\xdd`\x8e\xa4\x13Q\x88\xb6\x16QAB\xaf\x0d\xb5\xa1qwF]\x8d\xa3\xa064%U\xdbm0\xc4\xaf\x0bd#\x80\x99\x02\x1d\x91n4\x8d\xe1\x0b\x04K\xcd\xe4)\xdbg\x1b\xb9y8,\xce\xf4\x85\xdf\x98\x8dZ\xfc\n\x10\xb0\xf2\x8a\xc7\x03\x96nnZ\xa5\xabs\xd1\xbdqjq}=\x85`\xa18\xbbs\xc1G\xc0\x166\x9e\x8f\xb7&\x02\xb97\x1c\xf1\x06b\x92\xd2\x93\xcdFS\xac\x0f\xe8\xdec\xd6\xef\xa7\xec \x0b\xad\xbdZ\xb1}\xe6\xa8\xae\xb9V\xe7i3\x10\x0d\xaf,\xb9\x0b1IV\xaf\xde\xc5\xd0l\x04\xa5\xe6\x90\x04B\xdco8\xab\xe6\xd1\x8aG\xc6}\xb7\xd3\xbe3\x86Q)\x1bBQ\xe7.\x94\\\xb2}\x96;3\x8f-<\xb6\xc2U\xe1\xb13\x0b\xc5\x04\xba\xabwy f\x12\x0b\x8f\xcd<\x16\xb0+y_\xeeL,\xcae\xf3\x08\x1afP\xd5\xba\xc1\xa1\xad\xf5\xeai}J\xea\x07HT\xd1\xacu\x86\xbc\x01\x8b\xd8~\x04\xca:\xf3\xb5\xa2\xac\xe4\xd5o\xbd\xc3\xfa\xc7T\x7f\xbb\xf1x\xb7\xf4\xad\x9b\xf2r\x16\x8d\xe0C\xea~\x9fH\xaf\x97\x07b\xbd\xd5\xead\xa1\xeb\xa9\x8c \xbfLy\xd9\x8a\xe7ft1\xa6\xb1G\x91\xa5\x15V\xf0Gb\xab+\xdcT=a>\xdbd\xc3bM\xe6\x95\x83\\\x15\xd3\xfb\xfdH\xa2\x90H5\x9b7\xc6!\x17L\xe0\xe4\x1d\\M[\xf8Z\xc5\xd6\xde\x90\x93\xb5n\xc5u1\x9ade\xb7\xa9x\xa7\"\x9d\xd2\x1c \x14\xaa\xab?Sl\xbf\xaeq\x08ew\xea\xcdL%\xdfTO\x9f\x9b\x9c\xc1J\x0f\xac\xfaLy\xf0\xac\x9b\x97\xcc\xaa\xa5\x12\xff\xb2^b\xa1\x97\xc0M\xbb^\xe4\xec\xe6\xc2S\xc5\xa2,=v\xea\xb1K\n\xffO\x04+\xe2PG\xa1c\xc8\xc9\x88\x9cs\xb6\xcfN\xd8\x01\x9b\xb1\x11\xcb\xc9\xba\x87l\x9f\x1d\x17%\xa86.\xc4^/\x1a:\x17\x9c\xcd\x8a\x1d\xb0\x05\x1b\xb1sW\xfc\"8\xa6\xb7\xa2\xb8h\xf5P/~h+\xfe\\5|h.\xe7\xe7bK\x0fA\xd7e\xaedX\xa5!\x9cb\x8a\x8d\xd2\\l'\xe0+\xc5\x83A42>\xc5\xf76.\x8a\x06/A*x\xa964\xd7c'\"e\x8a\"\xdb\x98\x98\xb5\x11\x0bd\xeay%\xc3\x1c\xdb\x86\x13\xb1;lN\x0eM\xcc\xf6{\xb6\xcf.@\x0c\\\xb8\x96\xe9\x1d\x1f\x9f'\xfej\x05\x82jb\xa2\xc4\xf3\x8c\xed\xb3\xb7Z\xb5\xac^\x8d&w\xef\xc5\xb8\x9e5\x9d\x07_\xb1}\xf6\x9e\x1d0>\x00Wr \x11mp\x9a\xfe\x9a\xed\xb3g >-\x8bg4[d\x05\xf6\xa9\xf3\xcac\xaf\x15\x1c/\xdb|^\xd3l\xd0\x06L\xaac\xb6\xee\x9b\xd3w\xfd\xad\xd1\xd8\xea\xe4\xc1o\x9b6\x96\xd9\xdd\x1ev\xf5\xe3zv\xcbf\x1du.M\xb7\xef\x80\x02\xfel\xe6\x80w\xe1\x1a0\xc4\xe3k\xf4\xcd\x9f\xcd\xc0\xabP\x99\"\xb6D4\xca\xf0\x0d\xfb\x8b\xa0jj\xe1\x93\xf0\xad\x037\xba\x99\xae\xa6\x13O$w\xd3\xc8\xed\xb4s~\x9f\x8cX\xfb\xb7\xec\xbae\x00\xbb\x93\xb5}\xc2\x8a\xd06/I\x86\xb9\x93d\xf5\xb6(7\x17\x14\xdf\x90K\xfc\xafo\xf8\xa9L\xaf\xb7\x13\x9a\x1b\xbb\xe0\x01\xb6\xcd\xed\xbf\xd8\xa3?E o}\x93\xae\xf0\x03\x9f\xf9\x99aiZa\x05\xc0\xa3e#+\xf0\xa5\xbf\xa2\xf8\x00-\xd8\xfb\xf2\x84\x1bM,\xf5\"h\x97R/r\xaa\x17y\xcb\x0dn\xe3\xb2\x92\x0f\x12\xf0z\x91\x93J\x11\x10\x81\xd7\x8b\x1c\x1b\x8c\xcf\xa7\xf9|nv\xf8\xbc\x066\xffG\x01?\xaf\x17:,\x9c\xaa\x15\xeb\xde\xe2\x9b\xea\x02\x18\x83\x03v\x88\xfb\xc2\xabyg\xd7k\x8aX'\x1e;\xf4\xd8[\x8f=\xaf\xe3~z\x1e\x80\x0f4R\x8e\x05q\xdc\xceGF:\x93; \x1f\x9c\\f\xfc\x0bd\xf77\xc41P\xfb}u\xc50\xff\xd5|\x9e\xf2\xac\xcc\xc7\xdf\x8d\x1c\x88x8x\xa3:\x01\x00{\xd2\x1b \xfe2\xcbCG\x8f\xe9\x8e\x16:\xcb\xb6\xden\xbcu\x04u\x8f1\x18\x0c\xbce\xaeKl\xfe\xf0\xb5\xb9\xf95H_Y\xd2\xcf\x1a{\x178}\xee\xb1>%y\x86\xda\xb3\xc6\xda|\x10\x81Oq1&x\x03O+K\xe53\x1c\xc2\x9d\xe0\x0fK\xf3KK\xa7/\x9b?\x8b\xfa\xa0~\xc5(\xa9R\x7fA\xd7W\xbcZn\xa9vj\xaf\xf6\x0c5\xfd,\xb4\x8b\x8b\x80/sD\xfb)x{\x85\xb3\xde\x86\x12R\x00\xbb\xfa\xac\x15\xfb\x14\xfb\xf6\\\n\x1b\xec\x9f{U\xb4\xf5\n\xe0aa\xd8\xd8\xd5>\x9bz\xecyy\x14\xb5\x7f\xf858\xb4{\x0f\x88\xf8\x1eC\x15\x94\x0b\xb8\x91!|^\nm<\xf6\xda\x02\xde\x13\xfb\x8a.\xf9\xf8\x0b\xe55P\x0cJ\xfe\xb0J\xaf\x99\xb6\xce\xda\x94\xcf\xed[\xf4\xba\xec\x9c\x0c\xe1\x04\xd3K\xcb\xaa\xb8\x195\x82\n\xa5\x0e\x0d\x8e\xfb\xfdl\xc2\xf6\xc1\x86\x9e\xd7\xee\xa2\xb9\x1fC\xc4\xf5q\x86\xd786\xbe\xf6\xb0\xecv\xb3\x8f(\xf1\xc7\xd0\xe4xn\xe9\xb0\x8f\xf2\xde\x94\x02\"\x08@\xd8\x1d\x16\x9bp\x9c\x82f\x8e:\xcb\x0b6hJ\xf2\xffb=\xcc\x05\xe1H\x9c\xcc\xd5tC\x1b\xa1\x95z\x14\xd1\x8a\x04\xe34\x7f\xccV\x0dJ\n\xc1:M\xc7+\x8b$\x7f\xc3 A\xc0\x00^\x9aG\x9aA\xdb\xcc\xed\xa8\x95\x10\xdfX\x80\x190E\xc1\xc47`4\xa9\x0c\x87R4\xba \xa8\x98\x12\xf0o\xd4\xbc\xab\xa6\xba`-U\xf1P\xea\xdf*\xa0\"\x18\xb9P\x1c\x9eV\xec \x9b[!s\n\x1a\x10\x05\x1f\x8b\"\xe4\x12,\x07g\x16\xf0\xf9n!\xfe \xe1B\xe5%\x1cWg\x80E\x1c\xf0g\xc4|G\x9c`!\x15\xd1+\xb5)~u\x05\xc4 ;\x10=\xdc\xdf\xc7\xd3w.\x1bA\xd4\x84vO\xecJb\x90\xa8\xd0\x14\xfc$\xe1\xfe{#\xc7T\xe1.a{\x03\x9exZ\x1a\x92\x83m\xc6\xac\x89>\x83\xea\x07\xf0wi\x03\xfc1\xb0\\Z\xab4\xe8\xcf\x81\x17\xd3\x8a\x99\x03:\x16\xeb\xe6\\|\xad\xda\xc9@F\xec0R3\xd4D\x91\x01\x06\x8fE\xde\xb1.\xa6\x86\x14\xb2,|\xf3\\/{\x8eF\xdf\x08\xfa\x0e\x1bX\xaao\xa1\xc5\x0f\x81\xe0g?\xa8V\\\x9f\xf4\x13\x87\xcfJ|\xc7\xcd!F\x83\xb5 (\xd0\xdc|\x0b\x03>\x8e'b)E\xec K\xacK\xc9\x87\xa5T\x8fZ(\x9e\xcc\xf1\x01i\xd1\xac\xd9 \xc6q\xbf\x0f\xb1\x0e;\x80(\xf8\xde\x00\xa1\xa23\xaa\x91\xf2\xc7.K0(cf\x04'\x91\xbdKZzg7E\xa0\x05\xf9\xf7\xa9\xfb\xe2\x94\x94\xbcm\x0b\xb3\xc8\x1dbiZ\x9eHf\xeb\xc6\xd0\xb5|\xa7\x953[\x170C\xcbMz\x03`>\x84)-\xc1\xe3\x8f\x0b\xf0}\x1e\xc6~\xb6\xb3-\xb5\x08\x80\x80\xb5\xcc\xdd\xfbt\xe6\x8b({h\xcd\x19\xeeZ\xb3l\x1f\xfb*\xb06\x08Y\xcfC\x7f\xb9\xe23{ \xdb7E^\xe5\xa3\x1b[\x9e\x9e\xafaP\xad&\xdd^E\xf0P\xcb+\xe48\xb5\xf4R\x08afp#Q\nr\xea\xb3!q\xc5\xc8\x00\xa9N-MIrj\xc9J\x17TKVB\x9dZ2\x08r\xeaiRxSK\xfe1\xf7\xdf\x17\xfd\xd8\x18z\xeb-\xc1@.\xc1\xd8\xe1E\x94&\xb1\x1fm\xf8c\xb1*o`\xdaK\xfb\xa0\xd85\xac\xdfn\x81C\xae\x8f\x0dc5\xe9\xf1\x98L\xfb'u\xf6\x18O,,[$6\xe7\xc2\xec\xc6\xd5\x9c\xf6G\xae\xb9\x91o\x00\x03~\x87e\xa8\xea\xb5\x10\xe86\xcb\xd7\x86\xb3\xc6\x9e\xebh\x81\xb6<\xd93\x8b\xe9\x05}\xfd\xc8N\xe5v\\\x07\xae8y\xac\xa7\xd6\x8b\xed\xe2\xd9\x0d\x9a~\x9d\xc4\xcb \xe5\x1f\xa1\xe5\xb7<\xfb\x08\xad\xca\x95uK-o\x1b\x97v\xe5\x8aX\xdf\xc0\xb3\x12\x856.B8gE\x00\xda\xa8\xe1\xf4\x15\xc0\xf1!\xb2\x1c.\x90m\n(\xb6 \x99\x0f\xe9\x06\x96\x95\xd2E0\xcf\x9c\x06D\xd5.\xfe\x03k\xd1\xb64E\xf9\xc0\x89\x8b\xbd\xcb\xde\xb2x\x00\xf8q\xc3\xa2\xa2)-\x99\x8aS\xe1$\xec\xa9\xf4%\xa6\xf6\xbc\x91\xd8\xc0Y\x9f9\xd2\xc8\xfd\x80\xf5\x9e\xdc\x13TM\xfe\xee\xb3\xde\xd3\x9e^Jn\xa0\x82\xa1\x8aD\xe9\xa3Hf\x83\xa6\x10\xe4\xa0\xd4\xc2\xb3\xcfb`\xdf\xc2\xd4)kC\xc7\x138J\x96\xbf\x07\xfej\xc5#\xf0\xef\xe0\xe9\xf84\xc0\xc4\xb8\x92\xa8\xcc\x18\x9c\x0dq\x06\xdd\xd8\xeaB\"\xe0N\x06br\x01\xb5*\xbc4pi\x80*W\xbf2s=`=\x86e\xb5\x072\x0e\xd6\xabN/\x8a3\xe6\xa7ip\x1a\xf1\x19\xcbb\xe6\xb3\x95\x9f\xf0(\xdb\xa0\xf8\x07\xf5\x9ci\xfe\x91\xe8^\xaa\xa7\xf4H\xa3 f\xec\x0d\xe7\x8e\xd6[IT#\xaf\xd2\x02\x8a\x80\xfa\x82\xc1P\x94\xd6\xf5\x9agE\x7f\x14{\xe9P\xbc\xa2zlT\xca\xc2f\x08\x9a\xd7uJ\xb4\x0d\x17\x0d<\xc4\xd0\xe0\x84\xcb\x95\xd7\x1d\xc1\xe7\xaa\x1c\xd1\xd3\xce$\xd3*\xfa\xac]d+~}pK\xc7\xc3\xce\x83\x07\xf2\x80\xdd$\xe8W\xdbyu\x80\xbd;\xbd\x11\xeb\xdd\xf1\x97\xab\xc75\xa2x\xb7wW\xe4\xfc,\x8f\xb3zV\xef.VZ\xc5\xa9\x91\xf5\x04\xb2B\xb3\xceS\xc88\xcd\x1ek\xc1\xfa\xda\x04\xe3\x16\xa9\xb8$^\x92\xb2\x01\xf1*\xc4=\xce\xf8N\xef\xc9\xd3\xbb\x18c\xa1U\xd8\xa6\x04\xccFP>\xe0\xd9\xca\x8e\x92\xd0\xad\x91G}\x08\xf1\xe3\n\xdc\xa5\x19\xc1\xa3\x1dwpx\xc6\xa3\xecp\x19d\x19O(o\x1f\xe6A:\x913\xbd\x08\x0cu\xb5x\"\xe7\xe1\xd0ub\x0f\xfc\x97\xc4\x837%\xc5\x14_\xbc\x0f\x89?N\x82\xacH\xdc\xdd}\x00\x89\x9f\xe5\xab\x90_\xc8\xa4]Hz\x97\xf8Q:\x8f\x93\xa5L\xdd\x83\xd4\xd7~\x9a\xbe[$q~\xba\x90\xe9\x0f!\x1de\xe2x\xb0\x8bu\x97\x1f\xc1\x8a\xb7\xe97\xce4\xdf]6\xc9yL\x9fF\xf9\xe0\\\x0d\x07U \xb8\xd5\x88D.j\x80\xd5\xd8\xca\xcfS\xae\xbd\x1a\xc7&\xfa\x93\x01I\x85\xa2r\x1f\x82\x16\x13\x9e\xe6\xcb\xca{\xe3\xa9,\x1a\xc4Q\xc1\x92\xc5`,\x08 \x89\x1fD=\x8f\x05\x90r\x1c\xa4o\xb3Y\x00r\xfcL\x1b\x18\x1e\x9e\xc1\x119\xd4\x12l\x9c\xc7r`\x88\xc4od\xdb<\x96\xd6\xa5xg\xd2Ztch\x83oN\x0e\xd6\x87\x8f\xf9r\xc7\xe5H\xc7\xbaA/\xed\xd0 y\xa9\x8d\x0ff<\xcd\x92\xf8\x12\x17\xb6\xfc\xd1\xf5\xb3!M\xb7\xc5\x16:u\\OZ\x02$\x830H3\x1e\xf1\xe4\xb9\xd8\x87\xa4\x13\xe1\x1e\x17\x9bi\xcfU\xfbk\x9d\xde\xd2_\x9cZ\xd1d\x19\x9f\xf1/\xe4wjsndj\xf3oV\xd5\xe7\xb9\x9eW\xce9Y\x13F$\x98%\xea\xabz\xae\xed\xab\xd3\xc6\xafN\xc9v\xcb\xdc\x86\x95\xa0\xc8-br\xa5\x9f\xf5\x14\x1d\xdb\xa7\x06\xb6O\x8b:\xd5\x14<\xca\x08\x02\x04gL\xaf\x95\x86\xbb\x10`\xa9\x89\xac\xf7\x04!I\xb3$\x98f=\x92\xaa\xdf\x1f\xba\x03\xbc\xadDZ\x08\xec\xb6z\x9c\xaf\xe3R\x81f\x9cD\xb3\x8d\xf6m\x8d\x15\xa6\x91\x9ci7E3Wg#\xdf]\xae\xb8d%\x9f\xfb\x91\xe0&\xc5>\xc3|6\x0d\xfd4e~\xca\xfc\xe2K\xc4\xb9\xf0C\xe9\x86\x1b\x19\x9e\x05\xf7g\xd2LK\xa6d~\x10VS\xe4y`\xdf\xea\\\x99i\xbb\xbc\xe9E\xaa\x99QS\xbc\xad\xe5h\xe9g\xbe\xd5;Y\xc4/2\x94G\x99\xe34y3}(O\xc1\x16\xa9\x18.\x88}@Q>\xaa@%\xab\x82$\xf3\x98\x8c\x01\x80\xcdT\xa1\xe1U\xc6\x9eG \xfc\xfe\xf8\xc3/\xfa\xdb\x05\x062\x06\x89\x06 \x10\x06\xebc\xac!\xc6:c6Fl#\xf0R\x00V\xb6\xdat`\xe5\xeaH#z4\x10\x10\xa1\xcf3\x12\x01\x87\xc6\x10\x0f\xaa\x03\xaa\xe1x}\xca\x8b/ \xf0\x16\x91A\x949\x05a\xce\xde\x04\x11\x15\xf5\xae\x11\"M\xbdkY\x81\xd5\xaf\xfd4\x0e\xda\x1d\xb8#\xfc\xf7\xeb\xf0\x97\xd0\xa3|\xe6Tn4\x15\x9d\xc5kM=\x14\xc7\xc3\xacHoH\x02n\x8f]\x16\xb1\xfe>\xe8\xc03\xcb\x9c\xd1f\"5\xf8\xc5\xd1\xd4o_D\xcdcJ\x06~\x18\xc6Sg\xcbb\x8an`LQ\xb3\x0d\xedJ\xc8\xc0\xb19F\xb3)\xf9\xbd\xaf\xa2\xd4\x9fs\x87\xb3\xa7O\x9f\x82x\xd2\xaf\x82/\x17\xd3\xf9\x98\xf9\x8f]\x00\x9c\x0f\xdf@\xa8\x06x\xa3>\xf7@\x97\xb6\xbaD\x9b\x1fQ\xa5\xaf\nV\x0c||\x04\xba\x0d\xc4\x81\x01\xe2\"\xe1\x83`\xb5d\xf4\xb7 JW|\x9aU~\x0c\xa6y\x9a\xc5K \x13\xa5t\xa6\x98\xa0q\xbd\xe0\xa4 \xd9\xd5j.*\x11r5\x1c\xd6\x88YI\x8e\xe5\xf2\xa6(\xae]\xfa,to\xa0/\xd2\xc6k=rw6H\xa2\xb6\xef\xea\xeeN+nH\x8eD=\xb0\xefC0\xcb\x17\xcb%\x9f\x05~f\x95jH\x05\x0d\x1a\x19I\xbf3\xe6}7\xfd \xe1\xa2\xbb=\x7f\xda\xa0\x9baRw\xc3\x07\xb3x\n\x922{\xb9Uitt\xca\xb3\xd7\nI^\x81R\x83\xcc\xb0\xba\xb0\x12M\xad\xc0\x92D\xc0\xe4]\xb0\xe4q\x9e\xc9\xe8\x88\xdc+\xfd\x1c\xac\x92x\xca\xd3t\xd2\x835\xfc\xf3\x0fEpIy!x \x0b\xa0\xb1m\x1b\x1dQ\x8f\xa6\x07j\xa4\xdc\xfa\xb3p\x88\x0b_\xea\xb1 \xb8\xd8HG\x9d\xa6O\x80\x12u\xb0\x8a\xd3\xecK\xe9@M\x9c6\xf9 X\x8a%\xf9v\x9a\x04\xab\xccj\xef\xa3\x1eE\xc47\xb6\x9a\xa5\x88LJ\x12\x05\xb3nu\xd1\xa6?\x05\xf3W\x94o\xdb\xf4\xeaOF\xeb\x10\xf4\x07\xf7\x86\x12\x02N\xaf\xe7\xb1\xde'=y\xaa(?\x1c\xd5o\xd9UZ\xa1g\xc2qA\"%\x9b~\xbe\xf0\xa3\x88\x838\xdb\x01{J~\xce\xaaY\xee@\xc0}H\x0f\xb8\x11\xb9\x16\x0e\x07\nn\x93y\xae\x81\xa7\x01tb\xbb\x02\x14\x0b\x16\x82l\x0c\x16b/\x8e\x12\xee\xcf.\xd3\xcc\xcf\xf8t\xe1G\xa7\x1c|\xdd\xcc\x07\xd3\x84\xfb\x19\x97\xa2w\xa7\x97\x02R\xf5\x04`\xc0\x8eq^\x90\x00Yd\x9d\xae*\xd4\xb3~\xc5\x8e`\xd9\xc0\xec\xf1:\xe8%E\xbdt+\xc8d\xc5\xf2d\xfc|\x11\x8430s\xced\x9e\x1d\x8fD-\x94m\xabZv\xc0w\x87SI\xed\x9c\x85\xc7\xb6\x8c\x1bF\xea\x11\xa4\x03\xc43=}\xcf\xf8\xa1\xd8\xed\xe0\x16P\xe2G\xb3x\xe9\xc8@\xb5\xc8m\x14=h4a\xcc\x06i\x9c'S.ob\x08\x8c\xd1\x83sI\x1b\xa5\x812\xe9\x93|\x172%A4\xe3\x17\xaf\xe6\x8e\x0f\x02\xbd\x85\xd3\x97\xe9\xa0pq\x14\xd3b3q\x14\xeb\xd8\x9f\xcd@\xd8\xaad\x14\xb0*\xeb\x89NO.\xba\x1el\x7f\x1bC\x10\xfc\x0e\xfc,\xf3\xa7\x0b(\xe9\xf4\x8a\x85)\x052Ig\x00T\x89\x8c/XX\xa43\x96\xf9\xf5p\x93*&\xa1\xf3\\kR\xb5\x8d\x9a\x19/\x97DGy7q\x80\xd1\xe6MF\x7f\x156\xbd48.\x14\\\xea\x10\xb1 \x11\x0f#\xe4>#\xf6DwM\xd0\xef\xbb\xca\x97@Qo\x0c\xaaA\x8b\xdd>\xd3\xec\xbe\x9aW\xa1\xd8\x8fO\xfc\xe9\xfbF_\xe3\xe2\xf1\x93\xd3\x942\xb8S\x0fq\xacU\x8f\xdc\x86\xc2q:A\x01w\xe2\xa4\xae\xc7\xd2~\xdf\x86p+<\xa2\xe9sG\x1c\xa4\x1b\x8c\x08f\x0d\x16%\x18\x947\xac\xdfhd-M6\x18\xa9\x80t\xd4\xa5\x88\x04\x0d\x94\x86\xe88L#\xca!\x19\xebV=p\x85\xad\x8d\xc8N ?|\xf5'K.;p\x02\x1b\x1dW\x8f\xfe\xa8\x81\xa0RW\xa0Y;\x83\xa3\x9e\x04\xea \xack\xee\xbdz\x94\x91u\xd2\"\xbb\xa0\x1e0\xbc\xde\xb2\x1b\xdfRO\xa3\x01%\xf5\xb4\x98i\xd7\x1f\xe8\xd3p\xdd>%\xe3-\xeajw\xd3s\x9d~m_\xa7_\x1eK\xc6\xc3\xef\xa3w;\xd7\xef\x9d\xf8\xbb\xfd\x91\xfb\xd8j\xebM=\xa0\xb0\x0fA\xe4@\xd8{P\x0f\xcdQWJ\xd8\x98\xa3\xa2\x00\x9b\x07\x91\x1f\x86]\xe8\xc3\x0c\xd8\xb9i\x87\xf3\x825\xb7\xab\xe1oM\xb6\xe7\xf4\x8a\x98\x05:/\x94\xf2p^^aW\xf7W\xb3E\x90\xc2\x0d\xd7\x11\x14\xd0\x94\xc0\xba\x11\xc0\x0e\xec\xc5v[\x80\xee\xd7\xa2\x8a\xed\xc3B6\xed\xc4\x17\xadV\x06a<\xf5\xc3\xb7Y\x9c\xf8\xa7\xbc9\xe6\xda\xd4\x07\x02\xd8\xe6\x15\xa45\xda\x19\xd3U\xca\x95\xef7\xc6^\x97>#\xc0\x9c\xac\x97%9\xc7\xc3?\x9e\xfb\x9d\xc8\x1dd\xf1\x17\xf19O\x9e\xfb\x84\x06Y\xff\xd5\xf9^\x1fS\x97a\x9c^\x14\x7f\xc6W \x9f\x82\xe9ZO\xbb\x97g\xf6Wi\x9b(\xd7\xaa\xf5\x9b\x82M\x1b\xfe\x06ycS/\x119=\xd0\x10\xd5\xbaV7>\xb29\xf7f`\x90\xd0\xcb\x12\x7f\xca+M\xb0\x036\x8d\xa34\x0e\xf9\x002\x1d\xf0w\xa4\x92\xce\xfd$B7\xe0\xb0\xf7w\\SL\x17\x17 \xa9\xc9@%UZb\xb5\xadC\xebR\xea\xb4\x86hA\\\xc5\xf9N\x99\\j\x0cw\x86\x96+\xe5[\xbbd\x00\x98\xc0\\\x1f\xa8\xdc\x03\xc2\xa0\xe9\xf7\x82\x12\x890v\x98\xe1N\xbb4%!\x02\xe8\x8b'\x1e\x04\xd1\x82'A&\x1d\xc1\x0c\xc1\xd2C\xa59\x01\x9a\x99\x04\x9a`\xfd8\xd3\x8cF\x9a\xa0\xc5\x007\xf0\x94\xdc\xea/\xa4\xc1\xb6&r\x86\x8f\x1et\x9a\x9fj\xad\xdd\xebT\x1a>\xba\xef\x96f1\xd7\xac\xaf\x19\xd0ti\xa1M\xe3\xbc3\xa4\x02\xe8\x8bt\x8bK\x82\xbd\xf6[\xea\xf5\x89\x92\xaa\x08\xbc\xac]\x1e\xe0\x0c^H\xa2\x9b?\x88\xe2d\xe9\x87\xc17<\x81k\xa9\xa0\x96s2\xed\x8678.+\x95\x0d\xa5G\x0c\x7f\xe0\xa7\x97\xd1\xd4E\xcf\x04\xfe`\x95\x04\xcb \x0b\xce\xc4\xd6\xa7\x8c`\xd8A\xf5\x13p\xb1z\x0b\x0e\xeb\x19\\\xb3\xc0\xaaF\x89m\x17<\x7f\x8f\xea\xb5\xb5vE\xb1\x1d\x17bQU\x13\xf70Q\xbc>\x84f\x8a\xae\x82\xe5\x8f\xb3\xb7\xf5\xc8\x95Q\x8d\x96\x8146r\xf6\x86\xa0\x9f\x19\xcc\x82t\x15\x97\x89\xbb\x90\xb8\xf4/\x9e\x9d\x16i{*M&lc\xcd\x84\xcf\xc1@\x85'*}[\xac8\x81(\xfe\x9a\xab\xa6\x0d\x91v\xf7(D\x02\xa1\x8f\x7f\x92\x9a\xa8\x049\xf30\xd6\x1dbwC'\xa5>J_\xfa/\xd1_\x05\xba\xe8\x00,\x11Get\xa7\nN?\xee\xdcaA\xfay\x10\x05\xe0\xa2\x1a\x1c\x0dq\xf0\xf2\xe1\xc4\xd2\xdfP\x9bQG'0\xd4\x88\xc3\xde\xb6\x0b\x82[\x18c\x1a\x9cF0\xf5\xbb{;\x9d\x88F\xfb'\xac\xfb\xb3Re\x15\x1f&\x17\x18m6\x05h/\x0d\xe0\x9c!z\xa5\xdbT\xbf7\xb7\xb7\xd6u\xe7\xb1\xc60\xec\xb6\x99\xdadz\xe5\x8c\x03Q\xd0=\xb2pi:\x81>pn\xa3\x9f%b?\xa0\xbd\xd2\x0e\xef\xd7\xfd\xdaH\x02Y\xf7\x98$\x03V\xee\xd1\x01+\x05\x9dm\x86\x0e\xe3\xb4\xb3\x81\x08oCUgX\xec\xe5\xe8\x10\x03n^I\x97\n\x15\x9a\xebjtG\xd1\x1b\xc2\"\xfc\xd5J|\x1d\xf3 l\xe8\xca\x9f\xf4\xb4\xe6\xce\xa8\xe5\xcc\x9bbEt\xd8z\xa0\xda =6\xf7X4\xe6\x13\x88\xe9\x81Nx\xc8K\xe5\xb6\xe3\xea\xad\xe0\xf2\xae%\x16\xe0\xce\x90\xf6K9\xbco\x89 \xfcp\xcf\x1d,y\xb6\x88g)Ejw\x0d\xff\xc0\xa9\xe4\xec\xeaG\xa8\x90^\x0cp,\xac\x96\x9cv]6\xf3re\xa0\xa6\xb1\x9a\xad\xd9(\xa0(G\x12\xcb\x80\xd7\x86\x82!1\xe3\x9a\xdf\x80\x05\xa4\xf2e\x90uXX\xc4Q\n\xec\xbb=vVD*\xf5\xd8\x89\xc7\x8e!\xc8\xec\xa1\xc7.0\x9a\x96\xc7\xde{\xec\x99\xc7^y\x10tk\x0e\xe7/\x9a\xe2c\x00\x11y\xa1\x14i\xb9\xdc\xbd\x0b\xf14\xee\xd6\\#\xe8\x1aW-\x10\xff\x02\x9cu\xea\xc9\xae\x07Qq.\x06\xa7<\xf3 \xf2\xcd\xc5 \x15\xaf\x97\xf0\x8a\x9a\x0d\x0f\x02\xd9\\\xa0\x06\xc5\xf5J\xc1\xcc \xe1i\x1c\x9e\xf1$\x85\xe6_\xc9\xad\xa5H\x15\x8b\xfa\x19SA\xf3\xed\"-Vn\xc0\xd2\xb4\xaa\xa0 &\xf9\x10\x1b\xf2+\xf8\x1e\xf8\xbeq\x02\xb7\xec\xd2>n\xd2K\x91\x08\x8aIb\x9b|-f\xab8\x89C\xe0]_Z&\x9f\xf2\xac\x07\xab6@s<\xd7c\xaf\xc9\xe8%\xa2\x0f\xe8tO\xf0LAi\x808-\xe8 \x9e\xe2\x83\xf1\xd6DP\x80\xb0\x9e\xae\xfa\xbc\x8f\x9e\xa1\xecB!bd\x8a\xb7H\x9c\xde\xf3 \x99\xe6\xa1\x9f\xb0 :\x8b\xa54\xc7c\xbd\xe7/\xde<\xff\xea\x8bgo\x8e_\xbc\xfc\xd1\xab\xe7\xcf\xde\xbdx\xf5\xd2\xa6x\x17\xad\x9e:\x01!\x8bA\xa5\x92\xe8C\x03\x18o\xa9'r6^\xa3J2\xf6\xd8s}^R5/R\x89/\xf8\x90*\xfd\xf4\xd8\x99[x\x15\x14\xeb\xa3Q\xe0\x06\xc7gzV-C\xc5\xbb\x02\x8dh\xa3\xae\x13\x14\xa8[\xe2\x90\xc5\xaa\x10\xf4m:\xb2\x97xT\xc7\x97Rf\xc6F5$s=\x1b\x9a\x17\x9d\xbe\xe5IB\x93\x000\x19&\xa6\xa9\xb8C\x8eV\xad\xa6'l\xdd\x93\xfa\xed\x92\x02\xfd\x8e'lyRT\x0c\xab\xd0\n\xa6\xb8qZ\xe3*5\xa0\xfc\xda\xc12\xbd)5h\xe8\xdc-O\xdf8\x16k,\"'/V\xf3\x16U\x82\xf21\\c>\xa9\xfc\x8f\x93\xe04\x88\xfc\x90T\xf8+n}\xc4\x9e\x99\x99\x92\xd5\x7f \xde\x83`\xb7W?\xcd\xb2\xa7<\xebr\x15T\x0e\xf2U\xc1\xe8\xbdr\xb8\x0b\xbb\xdc\x01[\xa2\xb3\x07\x89\x14\\L\x86I\xf5\xcc//\xfct\x8d/[\xe6\x91r\x12o~\n\xf7\xdb._\xb3\x900\x86\xfd\xa5{\xc00\xaa\xfa\x9d;\xec\x12-\xa5\xd8>{\x0d\xbc\xaa\xb4`\xc0\x1f\xefu\xb4\xc0\x9c\x1e\x86\xa8\xa3\x1cE\x99\x83\x006a\xd4\xae\xf2P\xa2\x15\"N(\x83\x80\xc8w\xee\xb0\x13q\xe6\xd3X#\xaf\xe8\x18|\xa5\xd7\x15\xb0q4j?\xb52M\xa0#\x16\x7f!\x10y\x0bz\x0f6\x02\x1b\xac2\xf9y\x91,\xa1TZRA\xfcW\xf0\xe41\xab\x08\xf5i\xdf\x15f\x7f\xc5\x18Glaf\x14\x87\xe1\x0e\x00\xe6\xc8\xd9\xca\xe5i~\xb6\xbe\xbc\x8fMV\xcd~\x95\x05-\x8b\x1a\x883.A8\xe5\xe1\xf1\xae\xe4d2\xe0d\"\xe4\xd1\xfc2\xc6]\xbdC\xeb\xec\xe9\x85\xa8[\xb6&7\xbfj\x93\xacmi\x11\xe4\xa3\xdcTp\x17\xf1\xcb\x00}\xf5\xfe\x9e\x83\x14\xbd\x95\xf5\xe0\xad\xb0\x93\xdd(\x87.\xf7\xdc\x91\xda\xef4\xb0r9k\x02\xa0%u\x8b\xb0\xb3bE\x9b\x82\x97\xc3\x8f\xd6O\x1f\x82\xd8K\xd8\x93\xdd-\xb1\xa0\xa1\xe3\x1210\xe6\xbe\xd9\xff\x95\xf3\xcc#\xfa\xac\x0b\xbfF,\x00\xd7UV\x12\x1b8\xc7D\xae\xa4]\x81\xe3\xab\xd3\x8e\xf9\x15\xd8\x89\x02\xe7\x9c\xca\x83\xbd\"p\x0e\xcd>\xfbE\xca\xad\x1c\xf1w\x86T \x10q$\xb7h\x99\xea\xe2-\xb1\x97\x83`r0\xf5WY\x9e\xf0\xb7\x99?}\xff.\xf1\xa7\x9a(\xa9\xe2\xab\xa3U#\x15I{D\x94wR\xd1n\xf3\x8aphH\x88\x90\xd2\x9a\x90\x89<\x0b\x07N*\xddm\xe5\xb8\xa9I\x8f\xa4\xca\xa9=hdR\x19\xd50\xc2\x9b\xb8\x81*\x1b\x0d\xa6\xf1L\xe0^\x0eWu \x08D\x84\x8c\xea\x9a\x0e\xa8\xd7\x90\xc7\x93j\x05\xdc\x81\xa5\x90\x02}\x85t\xd7.H\xf7n\x0e\xed\x15e\x1e\xc7#\xd6K\xfcozu\x1ae\x96=\x11\x18\xdf\x9b\x9d\xfb\x1d\xcaf\xc97\x97#\xd6\x13\xffz\x06\x8a\xf3\xc1<\x8eY\x9f\xf1\xc1\x89\x9f\xc0\x7fQ\x0eh\x83\xe8\xca\xec\xdc\x87z\xb7,\xb8\xdd5\xa2B5Hn\xd7\x08\x9c`\xd1\x10\x94\x17q\x02\xc3\xe4\xd6c\xdb5\xbe\x1blu\xb9.\xe9\x04n\xb4b\xa4M\x8a\x1a\xedV<|\x9c@\xfc\xd1qBX\x9b\xb6\x9a\xecD\xe8\xac@\xac\xebV\xf3\x0bd\xf8\x87\x8f\x99\xcf\x9e\xb0\xf41\xeb\xf7}y\x85\xadX\xa0\xfe\xc4\xc3\xf8\xd4\xca=Q\xee\x9a\xea\x13\xcd5KT\xe8EHL\xff\x18\xaa\xc3\x87CT\x1dj\"vT\x1e>\xdc\xfe\xd8\xcaCz\x12\x15\x8f\xa1\xf9\x96\xed\x15Z\xf5\x1ex[\xac\xceC\xe3\xa4\xd26X\xb7-P\xa6\x94#\xda\x00\xda\x96S\xbd\xe3\xb2\xd31x\xc3-\xe6\x06\x8fg\xeb\x1a\x9f\\\xab\xef\x04\xc5\x94\x9f\x18\x91\x97\xa6\xf0\x16\xda\xc8\x98\x9ak\x0e\x1c\x86}\xe7\x0e\x8b\xc7J11\x11\xebr\xdd\x10\xb9\xed\xa8)\xd0\xfc\x01\xe2\xbf\xbc.W\xb9s\x9b\xf9A\xa4V\xc3\xee\x0dV\x83\x82\xb6N\xe6\xd7\\+M{]R\xf6Ulz\x1b\xcae\x88Ju`\xf7R\xbe\xeb\xeby\xf38\xee\xdd\x8e\xaa]\x0d\xd3\x00\xa5\xbc\x0es]l\xa8\x1d\x11+\xcae\xf6\xf46\xf5\xef\xb5\xeb\xa4\x9er\xc8N\xe9\x80\xe6\xb4^t\xd5Y\x953\xeb\xaa\xcaY4\xabr\xce,\xaa\x9c\xda\xe7\x96]5>\xa7\xed\xc1n\xab\x15.I\x8a1\x8d\xa3yp\x9a\x83\xf6\x95\xa6\x1a\xbc\xd0\xce\xd2\xae\xaf\x95\xa7\xa4&\xba\x92\x1b\xdf\x164*i\xe3V\x98\xe2X\xac\x87\xb69\x185\x9c\xea\xb8\xd7;>\xe6\x1c\x0c\x07\x0e4\x07s\x90&\xcer\"\xe9rp\xe6\x87\xb9\xe0h\x16J\"sV\xab\xed\xb1K\xd7\xd3\n\xcab\xd1\x98O\xd8\x01\xe5t]\xe6\x88\x7f\xe8\xb1\x0d\xacO!u\x9f\x8dQ\x9b\x9aM\xca$\xe9\xad\xa3\n\xb1\x1a\x8d\x8f\xa6|\x04\x94\xbe\x1b\x94<\xdd'\x98z*\x80\x8a\x95[>c\xb9F]\xee(J5u\x8c5\xe0*\x992\xdah\xb7\x8a\x05\x07;\x02\xba\xaf\xa2i\xe1\xd4\xe7\xf8\xb8#(\xe6\xf3\x11\xf0\xbe]!!\x89\x04-\xe7F`l\xd0hS\xf1\xa7@\xd7\x97q\x80J\xc4r\xc7|\xd2\xa1\x9e\x896\xe8`T\xd46!\xc6\x14\xeb\x1d\xe0\xed71y\xc98\x98\x08\x1e6pY\\\xfa\xe5\x8d)\xb8b\xae`\x94\xb7\x95s*%\xd2\x97(\x98\x8c\x03i%7\x14\x88\x99\x0c\xd2\x15\xdc|\x0c<6\xa4\xee\xee\x81*-)?\x9b4~V\x8ac\xa3&\xeb\xf8\xb6iG \xa2\xdfzG\xf1\xac\xf0j\xd18\xef\x16:!\xb6\xe3\xb8:\xa1\xf6\x19\xa1\xe7\xb1\xd9\x19<\xccbD(\xc9d\xac6-\xde\n\xdew\xcc\xf0\xc8\x92\xb1',\x12\xd3\x9d\xb9,\x18g\"\xb3z\xd91k\xb8\x08\x07\x1f\x8d\xc1\x81\x05^h\x95\xedn=\x06\xc2\x1b\x8b\xca\xd8\xb4\\\xc5I\xa9\xc9!\x1b\x95\xbaTu\xa3\xac>\x96&\x00t\xb9\xb55+\x88\x0b\xe8\xa9\xec\x03c\xedw\x8b\xba\xdc\xc6\xaa~\xaf\xc6\xb0\xdc\xfc\xeb-\xb7\xad\x9a\xbe\xeeU\x84G7\xebK\xa7[U\xbf\x10\xfc\x14\xcf\xaa\x06\x05\x1b\xe6\xfd\x80\xfe\xf5\x81\xf2\xc6,8\x8b\xa9S\x17z\xe2^:u\xe2z\xba\xd8X\xa6N\xe0R\x84g\xea\xe8\xe6\xd0hG\xb8t~\xfe\x01\x85q:{\xdc\xec\xf5G\x19\x8bi\xa1*\x17N\x88\xce\x88\x8bSc5T\xa4\xc72e\xb4\xc4\xf6Y\xfe\x03vS\x8eY\x9e\xa3\xea\xb1~\x1b\x04\xab\x04\xdb,\xf88\xd2=q\xf9\xbdf\xe7\x01\x1a\xdd\x1f,\xfdU\xbb#hU\x81\x1d\xb0\xcc\xe1\xe3\x08T\xcf\xe2\x7f\x15%\\\xe9|\xc9\xc9+Zi\xf3\n\xff\x07o\xbdc\x0d\xc8\xbd@\xe0\xd516O O\xc5\xbe\xa1Zq\x05\xd7u\x12D\xb3\xf6P\xb6\xddg\x16\x8f=\x8f(S9\x9c\xa8 \x85\xff\xd7<\xd5\xc5(\xda\xe0\x10\xce\xfdv\xba\xdd\xe9 \xadD\xcb\xc8\x98\xe2H\xe6I\\\x0b\xc8\xd5t\xdcF\xff\xed\xe0]\x00\xe6p\x0c\x82d\x0fe\xc4\x13\xd7c\x9f\xc6q\xc8\xfd\xc8\x01V&+}.C\x01\xd4\x05\x81]\xf4m\x8cY\x13\xe4<\xdav\x07A\xc6\x13?\x8big\x8e\xc6\\\xca%\xfa\xc8fAN\x1a\x90\x1bK7\xa5\xe5\xc9!\xbd\xfe\xa7\xf2\x9bur1\xaf\xe3U\xa7c\xb5yX\x9e\xdd\xc6a\x94\xc8\xd7\x0f\xa3f.\x1c\xe6\x08\x1f\x8c\x1f\xac'\xf9\xeaQ}\xddET\xb2\xa5V\x13\xcaV]\xd2\xdbF]\x128Z*%\xf3)J\xe6C\xe7B\x06\x08\xbf\x90\x0e\x12\x99t\x19\x0eh\x0e\x13'R\x02\xf4\xf8\xec\x16\xbe\xf2\xaa\x8d[\xfc1\xc0 \xe8\xc2zF\x9c3y\x89F\xaeN4\xf7tN\xb5\x10\xc5\x82\xa4 \x16\xc9\xdb\xdb\xf2\xc2\x9e8\x9f;\xcb\n\xc71t!b\xd9>\xe3p\x19}i\xe1\x86\xf0T'\xbe\xda\xc2\x85W[\xaft\xaa\xe2f\xe4T\xb05\x91\xcb\x96h\xcc\xc7I\x0bJ\xf5\xc8\x91.\xc9\x02\xe6\xa5R3e !\x03\x7f`/\x040\x9f\x1bzdf*'\x9cs\xe8n2\xb1\xc2\x02\xe0p\x02f\xae\xe7\xf2J*\x1a\xd2\x08\x82\xa9\xe0#\x0e\xc8\xe2l~\x02\xce\xc5\x9c\x128\x1b\xc7\x83Y\x1c\xf1\xc7.(\xe0/\xd8\x81b\xe2\xd0\x1a\xf8\x18%&\xd2\x90\xbd\xf8%\xf6ogVHS\x0e=\xb6p\x96\xb02fp\xddJ\x82\xf9\xb0\xfe\xd1~\xdf\x125K\xcc\x1c\x11\"\xa84\xf7\x9c6`\x03@\xe0\xb4\x123\xdb\x1c=\x8c\xd7\x03\xb9]\x0d'\x0e%B\xc8Py\"GZ%\xed\xb3\xc3\xc1t\xe1'\xcf\xe3\x19\x7f\x969[\xae\xcb\x9e\xee\xb3\x07\x0f\xb6\x1f\xed\x82\xc5\x12{\xb2\xcf\x1e\xec\xee\x0c\x1fA\xf9Cp:9\xee\xf7\xa3\x89\xb4g0\xc0y(\xedG\x0e\xad <+Ax&A\xd8\xef\x9f\xd9\x81v\xd6\x82\x8e\x1a:\x89=\xf0\xd4D\xb8\x02z\xbe\xa3\xad\x9d\x1a\x00\x9dS\x97^P\xe40%4\x15o\xd7\x1d_H~\x00\xbb2\xab\xc8\xee<\xb6,/\x89B\x8c\x90\xa2\xe6\x0d\xf6\xf5\x9a\x96\xe2\xd1\x8e\xd4R\\.O\xe2\x10U\x12\x8f\xee\xdf\x82J\xa2v\xc2)\xf48\xb5-\x1e>[\x91\xc3\xb6\xe9vH\xbe\xcb\xdcb\xc8{(8J\xcd\xf9Bm\xf7`\xfb\xb2\x88\xd3\xcbx\x9a\xc9\xee\xd5\x8d:i\xf5\xa22o\xac\x9b>\xddD\x89\xa8\x97\xd9H\xc6\x95Q\x14,\xd9\x04\x953F~\x16\xbfV\xdaM(B\x95\xc0N\xbf\xf3O'\xb7\xc74\xea\xba\x0e\x8b\x8aC!_\xfdZL\xd8\xac\x90\x98v\xd54\xcc\xbbi.V\x84B\xc2d\xfa\xc2\xfa\xed\x90\x1az\xed\x1b\xe8U;\x97\x14X\xb5\x06\x1a%\x8e+=\xda6i\xa5\xeb\xeaf&\xe7`\x81\x9b\x80\xb3(\xbb\xef50}57\xbb \x92\xc0\xc5\x98c\xac?\x8c\xa1q-wF\xe3\xca)\xb4z\x98\x8f\xbb\\\x8f5\x89[\xbd\xb3\xfc\xd6:\xeb\xc3\xcdrP\x04\x01\xf4CG\xf3j!\xc5h\xda^\x0b\x01\x1a{\xa5\x15\xa1\xe0B\xa6ND[ \xce8\xfa\xa2\x0c\xe2\xe8\xf8x\xc4r\xf0/\x9aQ\xe6|\xc7\x91\xbf\xe4e\x993\xa7n\x02\xfd\xa1*\x1f\x99:q\xfd\x93\xf38\x11\xd5\x9b\xb1L\x0ez\x86\x8a0\xf87\xc2\x7f\xfb,v\n\x8anHE*\xbf\xdf\xf3\xcb\xcf\xbb|\xccb:\x0e\x8b/cA\xc4R`jgv!\xfel\x9cM\xd0\xd6\xb9\xd4\xdc4vm\xe1\xa7/$\x96(X&\xa8\x06\xd1r\xd0\xa2\xaf\xa7\xa5\x18\x01\xd3\x83\xf49\xc8\xaa\xde\xaeT\xc8\x97Zsf\x01\xd9\xaa\x99a6.\xf7\xb1z\x932Y5$\x7f\x1a\xd5\x97\x82\x1c\xd6\xeaB\x9a\xac\x08\xefF-\x19\x19\xa9VO\xc5N\xc2\x9a\xf2\x97Q7\xe5~b|\x12\x13eM\xfcaV\\\xf1i\xc0\xd3zMLUU\xf1\x17Q7\x0c2\xa3f\x18dE\xbd0\xc8\x8cZ\x1a\x0fP\xab\xab\xe5\xc8\x16\xb4\x14\xa2\x9d\x82S0\xda)r\x8av\x8a\x14\xa3\x9dW\xddS\xdfoT!\xeb\xc2_E\x95j+\xae\xd6\xb1\xd8\xde1\xfd\xcb]\xbe\xaa\xc8\xb7\x031\xdcQ\xf01\xa8\x91Q\xd6g=\xd70 \xad\xfc\x863\xc5\xaby\xd7\xaf\xa6\xb5\x98Z\xcc\x1c\xe5\xbc:\xcaXG&\xaf\x0d\xac\xea\xfa\x89\xfc\x0e-\x1e\x95\x8cw-B<8\xc8(0\xce\xd1;E\xf7\xaa@D\xe8\xd5\xb4\xe7)\x98\xf6\xb0B\xd0^!\xae8\xe3\xafp\xcct\x13UHPM\x94l\xf9M\x1cj\xe9\x02\xda\xdd\xb5=\x19\xa1\xdf3\x108P\x9c\x03\xba\xf6/\xf8\x06\xfa\x1c$'\xeb\xd6\x8dG[E\xfc\x1b\x1bx\xd9\x87D\x93\xab+\x91\xaf\xc7*\xc0\xb2o\x8b\xb2\xe0\xc6\xb4\x1e\xca\xe0\xce\x1dV-2\xae\x16\xaa\xce\xfcm\x0cYM\xa0a\x12\xa5>U]\xc6`K\x81\x12\x88.\xcb\xb8\x10\xc0V\x17\xb2\xe3\xae\x8d*Uk9\xee\x02x\xe2_,\x04\"gg\xb8}\xed\xa1\xd8\xdd\x06\xfdR\x0d\xb2\x12\xf2|\xbd\x01\xa6\x86CqX\x18\x88\xe6\xa6)\x88\xf2\xcf\xa1\x1d)\xb0o\xa2R\x0d&\xee\xedY\xcc\x9e\xe9^`\xd6\x1d*\xc1N7O\xef\x01\xb1XR\x9e\x91\xd7g\xe1\xaeQ-\xea\x9d8\x12\xd1\x91\xa4\xa0t\xe2\xf0\xc1)'.\xd3i\x01R\x07)\x071a\x06/\xfbP'\xe5\x10\x9d\\\xdenC\x15\xa0\xfa\x81%\xf0\x07\xdc9\x93\x01\x8f\xb0\x90\n~$\xca\xe0\xad)\x88\xd1\x0d\xfd\x94\x1f\xc8\xd0\xc1Dv;\x14k\x8d\x89)\x04 J\xdej\x1eb\xb5\xa0\xff\xbd\xff\xbeW\xcd\x97\x87\xa2\xfd\xf2\xd20\xc8e'\xeec\xb6\xb9\x99@D\x9f\xfe>\xeb\xfdw V\x00q4\x89 \xd9\xf77j\xb5\x19\xea\xf7%Ik\xbfB\xd8\x12\x95\xc3\xcb\xf0\xd6`\x82\xf2{A\x02\xb8\x18h\xac\xc2<\xe1@\xb3q\xbf\x9f48\xf61\xd0\xb5\xcb>Q\x8b'\x7f\xcb\x17\x18\x86\x86\n8\xae\x8b\xf8Z\x00mc\x1f ]i\x06*)3=\x82\xd3\xbc\xdd\xc5\x8beA7\x9f\xe6\x99f\xc2JwG=\x01\xd8\x8bZ\xb3}\xeb\"QOPD\xdf\xf2\x8b\x15\x13\x8c}\xb8\xba Fe\xaf%>-J\xda\x06\xc0\x14>>f1{\xc2|\xb6\xc9\x86\x8f\x9b\n3\xd9\xb0t\xa7\x07\"\"\xb9?\x04\xa0\xed\xe4\xe3x\xe2j\x0eW\xad\xdd+Z\x83.\x0e'\xa0C\xe9\xf7ckaS\x05\xa9\x1e\xf9\xad\x96>\xb1\x03\x15\x8eN~N\x81\x8fl\x97\xfe\x9a6*#\x9f\xb8M\x9eV\xd0\xc8jo)\xd0(@ao\x03\x1a\xe5\xcdh\x04\xd2\xc4\x8eh\x94\xba,\xc7\x10\x0e\xfd\xbe%\xf0PK`\x03@\x1ah\xe3\xeaJ\xbe\xec\xb3q\xe3DS+\xb3\x9ao\xcd\x9e\xc8\xab{\xe2;\xf2V\x9c\xc4\xd4M\xe9\xfc\xc3 \xcaI\xcfa\xd2c\x81\xf6h(\x1b@\xd5-i\xe4\x0e\x19\xa2\xa2\xc7\xf2\xf1P&~\xc4\xae\x17}\x1fN\xc6\x01\xe0\xb8\xff\xf8F\xfdv=\xd5\x18N\xe05\xf0WJ8\xc9p\x8b\xe6P\xd7\xf3\x8e!\xdd\xc74`\xb2\xdf\x8c\xc9\xb9\xb4/o\xc6\xf5\\\xe9\xc1\xad\xa5B\xd8\x0e:\xac\x05\xc9l\xf9\x02\xbb\xec\x8bAT\x81X\x80\xe3\xb4\x0b=\x0d4,\xedNO5\xee\xdf\x07t\xc8\xc7\x81FO\x9bIi\x88\x88\xe2\xa3\xa7&\xec\xebp2\x8e\x01\xe9\x82k\x10\xd6[\xe9Yq\x15\xb7\xe8\x8c\xa8\xaf\x0c\xf7c\x0f\x10Z\xe4U\x92\x1e\xb3\x0d(&\x15\xe0w\xee\xb0P\x117\x176\xdcp\xb0\x8aW\x8e\xeb\xe1\xa4\xc8_n\x87\x96\xd7X.\xda}\x80.\xeb\xa4\xab\x03\x16\xc9\xa7\xe8|\x89\xd9\xfc\x0f\xe8_7\xe0\xca\xaa\x9a\xff\xbd-y?\x11\xdd\xd2\x0e\xc0\xa9\x9dt\xec|\x93+\x89k1q\xfa\xb7\xd79\xca\x81\xc2\x9b;?\xff\x00\x84\x92;/\xfd\x97x\x0b\x91;;\xf7\xbf\xcf\xb3N\xc1\xf5o\xec\xdf\x8e\x1c\xac\xca:_\x13\xack\xf2\xc6u\"y\x1bl\xb1F.2\x0f,\xe1,fpU\xe6-.\xb9\xb4h\x1cwZuU&\xab\xcd\x7fh\x8642\xc1\x03W\x84\xbf\xfa}\xee~\x9c\xbdP\x93XA\x10)\xd8\xf87`\xa0x\x86\xaf\x12\xab\xa8\xf2\x9b\xa0\n\xb7Ct\x08~\xe5#\xd0\x9b\xdb<\x05\xd2B\x06\x1a\xd5#++j\xe3\xe3\x08x\x10%\x83\x1b\x1e#\xad\xbe\xaf\n\x89@\xc1:\xa1\xa142\x11\xbc\x95\x89h\xdc\xa6\xb3\xca6\xddr \xeb\xc434\xb2\x96-\xfd(\x97\xb7\xfc\x8c\xf5\x10\xd6\xba\xd2\xad\xc7\xa9\x02\x9c\xd2\x00i\x0b\xaf\xdcD\x8fY\xae\x81\xb3\xe0\xc0\xfd\xb2\xa7\xa9\xe4\xc0s\xc5\x81\x8b\xbcT\xe3\xc0surH;\x9c\x1c\x9aN\x0d\x96\x13\x03\x9c\x16R\xf8\xe8p\x02N>\xfa\xfd\xbc\x0b\xdd\xbc\xce(\\O}\x06\xce\x11\x99\xc7\x02\xb0/\x10hHxN\xee@\x0b;a8\x1es\x91\xcb\xc7\xc1\n\xb2\x14\x82\x18 \x93\xc7\xbbk\xe3<\x9e\xa1B8C\xb5\xb3\xa6)B$W\xc1\xbf\xe5)\x0d\x91\xdf_\x03\xf9eo6\x1a{\xd3rd\xc8\xf4\xcf\xe7&#\x9b\x13,r^e\x91\xd3*\x8b\x9c\x16,r^\xfe\"Xd\xb3ekO%G,f\xaa#xn\xb0e\xd9 9\xbb\xe6\xf2\xf2t\"nv\xf5\x07\xf4\xaf[\xda\x03m\xbe\xc1\xe9\xcb3;C\xfa\x82\x9b\xe9K\\\x1aY\x1a\x17_R\xdb\xcd\xb7j\xb1\xf5\\\x84[6m\x88\x16!\xe3\x18\xb4\xdcx\x97B\xd3\xb9\xc7V\x1e\xd8WN\xa5\x81\xa21\x1f\x8b\xa6\xcc3\xd0n(\xc7sf\xfe\x12\xf2\x95\x13\xc6*F\x97\xf5\xc0$\xbc\x99\x97S\x9cF\xe9_\x98\xc4\xad\x04|C\xa9\xa8\x0ep\xaf\xd4*\xa9\xa7\x9d\xad0\xe5\xb1/A3\xbb\xb4`\x9f\xb7<\xb69\x14[\xc3\x99\xbc}2/\x9c\"\xac\xc4\x9b\xa9s\xead\xb1\x1c8\x1a\x00\xd9Y\x83\xe1\xf2\x87\x1a\xf8\xe2H\xb9\xe9m\x87]\xe3\xf5v\xf2\x02%+\xcc\xdd4\x17\x05$\xcct\xc3\xbd}6\x9e\x81\xcb\x8aH\x19\xf1!u\x8f\\\xd4\xc1\x01h \xeeM= nH`\x91\x89tb%}L@\xa8|e\x93\xdfbD\xa3\x1e\xe0?\xect\x94\xf2\x15\xbb\x901\x0d`\xbf^\xa0\xf7\x8d\xd2%2\xac-\xf4\x07\x1b\xe0~%\xbd\x19'\x10M!\x8e2~\x91A,\xa6\xe44u\x0b\xfb\xcd\x04\xe3G\xc4\x88)A\x89BbNlq\xa2[I#\x86\xfb\x96k\xab\xcd\x0d\xc7\x19^\x8c\x94F\xe1\xd6E\x11\x89\xa1\xf3jd-\xe9\xffC5\xcf\xb8\x1da\x14\xff\x8c,\x05\x1f\x043\xbb\xe4O\xfa\xc2d\x8d\xf1\xfc\x01\x03q\xbb\x13\xadaOf\xe3\xb4t\xdb\x8b?\xe2R'ct>\x03W\x9a\xa9t\x80\xc8\x0e\x98\xd2\xec:\xe0P\xdcY\xa0\xe0\xdc\xde \x86\xf6lbnG\xb8\xe2\x1b\x8bbh\xe7\x06Q_\x89Ri\x89R\xa9G\xaf\xaeXF6\x88\x8b;\xc9nCI\x14\xc3\xd5/\xc7C\xf5n\xd7\x90\xf5Gk\x8c\xb7\xdc\xb4gr\\\xe8)\xdc\xc2\xb5\xa1\x087wBy\x9b\xd9\xf4\xfeB\x1d\xb6q+\xa6\xa8\x00\x97\xbc\xb4\x94\xb3\xca\xae.U\xb3\x1c\xe2\x03NOp\xc9E\xb8\x00}\xcd\x05\xf9\xb2\xc5\xfd\xcc\x07OR\xd9\xb4\x03\x95\x85\x95#I\xe1\x1adr0=\xa9Q\xca\xc1\xf4\xc4-\x0d\xa0\xc5\xcf\x02\xd7\xf1G4\x08\xc4\x96)\x9d\xef\x001e\xa3\x12\xa9\x89\xeb\xe38\x8a\xc2\x9bu\xfbvA\xb0\xeb\x14\xb1\x9c\x01\xb1\xbc\xba\x02BY\xec\x9c\x0b\xdd\xabv\x95\x84b\xa2FEU$\x19 \x98 n\xb1\xf5^\xb9\xbcn\xa7r\xa2\x0bD\xff5>\xa6\xe8\x0f4\xaa\xba\x13\x0b\x8cl_\x1d\x92\xce\xc8\x9e\xf3\xa2\xe7&\xea\x1ac)~\xde\n3k2\xad\xc8\xcc\xee\x191\x18\x03\x99^\xbf\xc4\xed\xcb\xf4\xba7]\x15K\x8c\x0epc2\xb9\x1dn\x0c\xc5N/[p\xf0\xd8/\xfe\x8fd$d\xb8X\x1fG\\\xfd/\xd2\xdd:[\xabB\x19val\xb5\x0b7\xc6\xac\xc4M\x99s\xea\xa6\x11S\xa62[\xca\xec_]\x0e\xac\x96)\x14T\x1c\xfc\xa3\n\xf2\xb3\x01\x91\x96\xe8k!w{\xac\x0f\xde\x1eX\x9f\xf5\xee*3\xcf3?\x0cfL\x0dv\x19\xcf\xb8q\xf1\x8d\"I \xee\xeb\xb65\x11Z\x02\xf4\xc2\xb0r\xc7/ES1:X\xf5\xa5\xc9\x14\xb1Q%\xf4\xe14\xc2\x8aC\x8f\xcde\x13f\x19\xd1\x95i\xabS&\xbd4`\xee\x98\xb2\xb7Q\x8f\x18BH\x04\x9c\xfb\x12yj\xce\xb8\xf8=b\x9f\xf1\x8cO3>cy\x14'3\x9e\xf0\x19\x13\x88x%\xb0\x8e\xdd)\"sC\xf8\x9e\\t\xcec\xe7\x8b`\xba`A\xc4\x002K\xff=O\x19F\x1fc3hMpC\xf1\x9c\xa5\xf9t\xca\xd3\xf4\xde\xdc\x0f\xc2<\xe1,X\xae\xe24\x0dNB\xce\x9c\xf3\x05\x8fD\x13wu\xec\xbe\x0b\x13\xeb\x1eE\xcf\xe3(\x0df\x80N\x04m3*?\x1c7\x1f\x1b\xc6 \x15\xbd\xc8\x02\x89\xb5N\x0e\x84'T\x9dc\xac\xf0\x96:\xbbh9S$k\x9d)H\x13\x97\x8fz\x8a\xa8\x8b\xa6\xa5\x90\xe0#\xe9\x89\x9b\x14\xb7JOY\x06\x90k\x06[\x86\xe7\xe3\xfa\xc5\xfc\xea\xe5\xf3\x9b\x03\x88p}\xa5NYm\x91\x96\xad\x86*\xe8\xf9\xfdV\xe7Q\x9c\xca\xd6\xbf\xbd\xd1\xe8\xa2\x1f\xaf\xe28\xe5\x15\x19p\xe8\xa6]\xfc\xd3\xa2\x895H\xad\xcd\x89\xa3\x0eC\xaf\xfd4\xe5\xb3B\x10\xa3\x05\x84\xc6K4\xc1\x9c\xcf\xea\xf1\x8cn\x17~{\x86JG\xcc\xf3\xbd\xf1Qt\x94\x1c\xe5\xdb[\xdb\x0f\xe1\xef\xa3\xc9\xbd\xd3u\xc1\xac\xd0_\xcc:\x89\xfb\x85\xc2\xe2)\x1bnm1\xe5\x80.\x93\x0eX\xb7<\xf6\xe8\x11\x1c\x13\xff\xdb\xef\xfc^O\xde\xff\xcf\xd4=iAq\x9b\x97\x8a\xfc\xcao\xbc}\xf5r\xa0\xc0y\xe9pW6?\x04\xc5Fm\x19\xdd.p\xff_\x83\x9cJ\xcf1~\x19G\x9b\xd3\x98'S<\xc6e\xb1DD\x17o\xf2N>\xea\x85\x8d\xdb\x88\x11o\xd3&\x96\xdf\x0b\x06\xb3 ]\xc5\xa6L\x85p\xa9)\xfaV\xb3\x81\x08 6\xa5\xa2\x9dg\xa7]W\xe0\xcc\x03\xa7B\x1e\xab\xf93\x05\x89#\xf8\xe4AY\x0b\xdbg+\xc5\x96.@\x89P,\xd0\xd4\xb2@\xd3\xe2\xc7\x01\xeb\xe1za#\x06\xbea\ny#\xeb\x8b\xcf\x17\x1d%\xf1u\x86\x0e\xd6R\x9e\xbd\x0b\x96<\xce\xb3\xf6sO!\x00\x8aH\xe1\n\xb7\xe9\xbb\xc4\xa7\x06y\x94\xf0\xb9\x18@\xf9\xcb\x81\x88\xa7\xe0UNt\xe6\xce\x1d\xd6\x8b\xf8E\xf6.\x98\xbe\xef\x81u\x90J\x86\x05\xa4\xba)\x12E\xc5\xf5\xfb/\x8f,\xcb\xbasa\xd9\xff3[\xff\x97\x95\xfe/\xb5\xfe\xb7hpj\xf3@.\xfb\xca\xd8f\x18\xef\xbf\xd0\x98\x8a\xb3\x15B\xc8\x80\x0c\xa7 \xa3\xd7^\x92A\x15\x05.\xf1\xcf\xb9\xd8XE\xb3g\x18\x1ct\x7f\x7f_\xcf\xb9\xba\x92Q\xdb\xcb4\xb1m\x0fvvv\xd8\x88M\x9d\xb9\x83\xa6\xe8z>\x1aGmI\xcc^\xb2}\xf6\xf3\x0f\xd2\xaf\xd6\x90m\xb23\x97}\x82\xd2M%\xaa\xa8\x03\x07t\xde9\x05\"\x18\xec\xd5\x15\x83\x01\xb2}\x0dK<\x16\xb4O\xbbE\xda!\x1e\x0d\xaa\xfb\x1aT\x1d\x0d\x84\x9e\xae\xb0\xabl\xa1h\xbb\xe6\xc4\xae\x8b\nA\x08\xe8W\xb1\xb3\x91\xc6\x03\xd2b\xae\xb2\x8c}'@Hu\x12O\x84\x1e\x0b5 \x05\xfc\xa4$\x9c\xa6\xdf\xa7\xea\x1eT\x839\xbd\x0d\xcd\xdaP\x96\xd5\xd1\x96\xdc\x8b\xd0\\I \x01bp\xec,\xbb4\\Ctn`\xb9\xe5c\x88q\xc6\xf8\x8b\xdf\xb7\xb2\x05\x1a\xbe\x98\xd5\x11\xf3\xd1\xda\\\xb3\xe0\xca\xa4\x01\x87\xd8\x0e\x9e\xb2\xb8\xc9\xb7\x08\xbf\x98r>K\xd9\xd2\xbf\x08\x96\xf9\x92\x15z\x8b\x0c\xa1\xf2}9\x1b\xd9\x1e\xde\xdf\xbb\xffpg\xf7\xfe\xde\xf5\xdbk\x07\xe76\xad\x17\xdd\xd5\xafx\x04bG\xee\xb8\x1d\xcb8R\xc4^\x9c\x14{q.\xdd\xc0Kk\xf258\xe5\xe6\x8d\xd8G\x13\x9bf\xc4\xd7\xdd\xfb\x02\x8b0X\x04\x99\xeaZ\xbb\xc1\xc0i\xf9)b\x0b\x12\xa3W^\x11\x0cr\x00\x99\xd2\x1d\xc2m K\xcb\xe46(\x9f\x83\xf6xW\xeb\xae\xb1\xb32\x044q\xf3\x01\xc2F\x9a\xc9y)\xff23\xd3\xa6\xcc\x10\xda*R\x1f\xed\x15\xa9\xc3\xedm\xb8\x0f\np\x02\x18 \n\x8e]\xae&\x02\xdcz\xff\xf7\x1f\xfc~\xafq\x1d\x9av\xef\x84\x1d\x85\x8e\xb1 \x82\xc178j{\x15D\x96a>\xabK\xb5\xea\xbe;\xd1\x05\x87\x1f\xdc\xe2\xc2N\xe4\xec\x0co\xe2\xdb\x93\xf4]/\x1a\xee\x1d\x1f\xf3\xf4\xcbx\x96\x87\xbcW\xa7\xda2T\x90\x1eJ\xc1EY\x0f\xc4\xd3k\xb2UQF\x00\x89*\xec\xb1X\xbd\x96\x1b\xd0\x07\x93\xdd\x08\x1cq\xb8}Pw\xf3\x1b\xcb\xac\xfb\xdb\x10\x95\xb3\xc8S\x1d\xc0\x90cd\x1f8\x12\x99r\x9c\xd2\xef+\xb5Ca\x9c\xc0\xba\x9f\xbe\xf5\x88\xe9/\xc7\x04\xa8}\x87&\x8b\xd3x\xb9\x8a#A\x0e)8\xa8\xe7\xd9j5b\x97\xc5\x0cZ\xcb\xf9y\xb6\x88\x93\xe0\x1b_\xf4\xe4u\xbc\xcaW#v\xd2\xbd\x1a\xff4\x8bF\xecx\x8d\n\xafV<\x81\x8fA\xcd\xf3n5\xd3\x11;l/\xf9,\xcf\x16/2\xbe\x1c\xb1\x8b\xf6\xc2\xa2\xd9C4{{\xdb^:\x16\xc5\xb7G\xecY{Q\x7f\x15\xfc&\xbf\x14}\x19\xb1\xe7\xed\xc5O\xfc4\x98b\xe9\xf7\xed\xa5\xe5\x91\xe4U{\xc908\xe3ox\xba\x8a\xa3\x94\x8f\xd8\xeb\xf6\nA4\x8fG\xec\x8f\xb4\x17|\x11\xcd\xe3\xe7\x18\xd8\x9d'#\xc6y{\x95\xdf\xc8\x97\xabw\xf1k_\x8c2\xebP>\x8e\xc2 \xe2?\xf2\xc3`\xe6gq\xf2\xa9?;\xe5#\xf6\xaeCE\x85]\xe9\x88}\xb9F\xf1\x11\xfbi{\xe9\x02u\xdf\xe6\xcb\xa5\x9f\\\x8e\xd8\xcb\xf5+} A1G\xec\xcd\xfaU\x11~\x9f\xb5W\\\x04\xa7\x8b08]d\x82\xe1\x18\xb1\x9f\xb5\xd7H$\xa6\xa4#\xf6y\xf7\xd2#\xf6M\xf7\xc2\x9f\xc6\xb3\xcb\x11\xfb\xb4\xbd\xc2\xcaO\xfc%\xcfx\x92\x8e\xd8\x8f\xd6(\xfe&>\x1f\xb1\xdfh\xaf\xc0/\xf84\xcf\xf8\x88\xfdV{\xd9\x05\xf7g\xd0\x91\xdfl/\x0bF\xb4\xe9\x88\xfdZ{Q\xb8\xc5\x17e\x82y\x1d\xb1\x1f\xb6\x97\x8f\xcfxr\x16\xf0\xf3\x11\xfb\xed\xf6\xc2\xf38\xce\xc4\xc2\x8c:,\xb4\xcf\x830\xe3\x89\xb6\x9a\x93\x0e\x95^\x0b\x88\xe3t\xc6\x1d\x8aO\xf3$\x1c\xb1\xa0C\xc9t\xba\xe0K\x81\x83~\x87\xc2o\xb1\xb0\xd6\xf7\xbcC\xade<\xe3\xe1\xe1\x85\xbf\\\x85|\xc4\xc2\x0e5\xbe\x145~\x9c\xf8\xab\x95\xf8\xc6\xb4k\x8d\xe7q\x18\xfa+\xb1F\xd2\xaeUFl\xde\xb5h:b\xab\x0ee\x0f\xa3|)\x9b\x9eu(\x8e\x8c\x8e\xac\xb0\xe8P\x01\xcc6e\xf9\xb3\x0e\xe5\x0bg\xf7\xb2\xce\xb2S\x1dd\xb8F\xec\xb4C\xe9w\xc9\xe5\x8b\xecU\x9e}\x9ag\x99 \xeb\x97\x1d\xea|\xe9'\xefg\xf1y4b\x17\x1dJ\x7f\xea\xa7\xfc\x0b\xff2\xce\xb3\x11{\xdb\xa1\xfc\x8fx\x92\n\xde*\xf1O\x97>\xae\xb7\x11;\xe9^\xf1m\xe6/W#v\xdc\xa1F\xb1a\x1c^d#\xf6\xc5z\x15\x80|~\xd5^\xe7\xb5\xa2\xb7\xf0\x91__\xa3\xc2\x8bh\x1a\xe63~\xb8\\\x89\xd9\xfcq{\xcd\xa2{\x10i\xe4\xc5\x1a\x154\xaap\xda^\xed3\xceW_\x04\xd1\xfb\x11;\xef\x00e\xc1\xff|%H\xda\x1f\x1d\xc8\xd7\xe6\xb2\x02ap\xeb\xc6\n\xeaw\x03i;;}\x96\xa6\\p\xf8\x87E\x87\xc8\xd2\x9d\xe4\xd8\xb4\x9frV;K<\xef\xa4F\x88:\xb5\xf5\x9eh\x8b\xd4\x1c\x8dg\x05\xbc\xd9\xbc|M\xcbW\xbf|\x0d\xcaW\xeal\x8az@\xf9\x8a\x87\xbb\xb0L\x88<6-\x7f\xad\xca\xd7E\xf9zV\xbe.\xd5k\xe3\x89\xf7\x15\x87\xe0\x03\x8f\xa8#/\xe6m\xef\x1a\x11\x8e\x8a\xbc\x9d\xedz\x9e_\xe4\xdd\xdf3\xa2\xe5\x14y\x0f\xef\x1b\xf1\x80\xca<\xe3\xf8\x1d\x96yF_\xa6E\xde\xa3\x9dz\xde\xbc\xcc3\xfa\xb2*\xf3\x1e\xd6\xf3fe\x9e\x01\x97\x85\xca\xbb\xbfe|\xef\xac\xcc3\xda\\\x16y\xc3\xadz\xde\xa9\xca{\xb4c\x8c\xef\xb2\xcc3\xc6pR\xe6\x19\xdf;.\xf3\x8c1\x9c\x17y\xf7\x8d\xbe\x1c\x96y\xc3z\xdeE\x99g\xcc\xfb\xdb2\xcf\x80\xcb\xf32\xcf\x98\xf7\xf7e\x9e1\xef\xcf\xca<\x03.\xaf\xca\xdaq\x07\xdc\xebv\x11G\xab6\xcd5\xd9\x1amW\xc7\xceQzs\xa8\xc5\xe8=}\x10\xa0\xad\x1a\x04D\x10\xa0\xadj3b\x1a5w\xc9\x807\xbfU5\xb2\xf5x\xfd]ugDN48\x81\x1eD\x837\xf0\x03tX7#\xd7\x12\x8e\xa3\x00X)\x8d\xb3\xdb\x87.>\xaa\xdd\x02\xb2\xaaM\xf1\xc1\xaf\xf3\x14Y\x11\x8f\x84)\xc3\xf6\xd4j\x82\x10\xaf\xb4F\xf5\x98\x06z\xc2\xff\x8c\xf9H\xf5-\\j6\xaf\xbe&\x13\xc9\xd0\x19\x14&\xc5\x1b\xd3\xd1\x0c\xc6\xc2\x82D\xff\xda\xaalar\xad\xaf\xb54\xe7\x05ab\x9b\xe7\xac5\xd6\x1a\xec\xe4Y\xe5\xae\x1d\xb1s\xdd\xc7\x01n\x96\x06\xb8\xa9\x0c\x106]\xb7_$\xa9\x86;\xb8\xbfg0\x14.\xe7\xac\xa9\xcc\xb93D|\xc1\x83\x0c\x83\x9b\xd1\x1b\x98\xa3!G\xe2\xac\xf3\x00x\xcf!\x85\x97\xb0|\x0e\xcb^\xcf\x05\x8c\xea\xbe\xec\xc3\n&p\xed\xac\xa7\xcbY\x1f\x96\x8c\x8c\xb0\xaf\x86\x10+\xe6^\x99\xf4-\x0e\xc6\xb5p\xf7\xc7A<\x87\x0e:f,\x06!\xbdM\x1d\xd7E\x0f\n\xcd\x10\x88\xb3@\x17\xadi4\xc0\xab\xe8>\xb0\x01q\x8b)Q\xa4\x19\x944b\x924}\x9f5W\xc9%\xa6\xe0\xfd7!\x1b\xd5\x8d\xcd\xc9\xc6\xb3\x9d/<\xc10{6;\xc9\xe3\xc1B\xd4\x89\x9c!\xab\xc8\xa6NyT\xeb\x07\x12\xef\xd0\x19\xed\xed!)\x15\x14\xf5\xd9\xa6 \xac[\xe2\xef\x9e\xf8\xfbTKh?p\xf3\xc46]Y\xc0\x95\x87\xcd\xec\xcb0\xbf\xb5\x88i\xbc\xcb\x9a\x83A\xa0'\xd0\x92$VI\xe8BO\xb8\xd7\x82u\xa9\x14\xcf\xf9zU\x87r)\x1a\xa9\x96_\xf3N\xb7\xab\xe5+A\xe7\xab\xe5KQ\xbe\xe3\x0e\x12ZQ\xcb\xde Z\xbf\xe3:U^_\xf4^\x9d\xda\xb9h\xad*Y\xde\x88\xf2*;u\x88\xb1ws+\xb3\xf2\xc3[\x1eI;\x8e<\x9aT\x82q\x9e\xe0#\xb1\xee\xe5G\xaf\x18\x05\x17/!\x01\xf7\x9c\xdb*w_1\x0f\xa9(b\x0f`\x1fw\xc9\xc5`Q~p\xcc\xd8\x97\x8e\xdd\x04T\xef\xcf\x0e\x8a\xdd\xc9\xc9\x00\xa3\x8f]S\xa7\x8aG\xea\x87QC\xa7\x9cZ\x17\xed\xa6\xa6\xa13z\xe6*\xb9\xcbg\xad\xac\xfd\xe4\x87:W}\xb82\x1b\xc3\x1b\xa2\xe1\x08\xc2\xe5\xbcb\xf4]{>\x8a\xb5\xf8H\xff\xe0\x11\xd3\x0e\xafi\xc8M\xdb(w;\xbbr\xd5\x94\xa7\x9a\xa0\xf7\xe6 \xc8\x9f\xab\xe8\xf7\xa1q\xce\xd7\xf5\x8c\xa5P\xcc\xa3\xe3t\xd6\x0e\x8fi\xa9\x8b\xea\x84G\x11\x1f\xb6p\xa2)\x0f\xa7<\x98\xd3\xa6`\x85 M\xf0\xe9\xe0\\\xebM\x0bH\x83\xcfCt\xa7\xd4/\xc0\xb5\x08xH\x07\xe7\x9e\xbe\xc6]\xb3\xc5-\xa8\xd2#O\x18z~\xcd\xcd.\xd1\xd0\x91\x0e\xce\x93RZ\x8c\xbcE\xa37\xb9\xfc\x08c\xd8\x82|F\x18\x817\xba\xc2\x98\xa5\x0b\xe2[nq\xe4'\x11\xf1.ps4W\x0fDu\x86p\xcd\xb5=\xac=\x8fV\xc4oH\xede\xde\xc1\xea'c\xf2\x0c\x1at:\x9b\x02v\xe8\x14\xfb\x07\xda\xb5\xe2\xaf}tj\x15\x0e\xb2\xac>\x97\x83\xc6\xe0\xa0\xb9\xbd7\xa0aJcG\xf0\x1f\x19\xba\xbap\xdfPo@o\xfd\xd4\x11\xeed\x9d\xa1\xcb\xeb\xb0\xdd\xa6\xd8\xe2\x07\xce\xa1\xd3\x15\xfbn\xc3\xbb$~\x08\xde\x9d\x17\xd0.\x0fI\xcd\xd6\xf1\x83\x13rk\xd8<1N\"\x9cA\x13\x87\x9f\xd8\x81\x13\x9b\xa9\x01T\xf7e#Xp\xfc\x1d\"\xe6'&\x11\xe8\xdc.\xd5\x8f\xde\x95\x07\x9f\xd4\xf8\x8d\xc8\xb7\x08\xaf\xec\x89 O\xec\xa08uR\x94D\xad#\xff\xd8n\xe4\xfch\xd2\x0f\x9e{\x15\x0e\xce\x8d\x01=\xc3bR(`\x8b9\x19\x8e_\xfb\xb1\x8b:q\x19\x98\x99o\xac\xe2\xf0\x03\x8f\x84\x8f1\x8c\x98`\x1e\xe6\xe0\xa7 \x0d\x16\xb60\xba\x08\xe7\x0f\xe8&=i\xcb<\x81\"Z7\x9f\x85\xe77c\x08\x9b9\x93\xf3\xf9X\xcd\xf1\xaf\xfb\x18\xb8r\xf9i\xc7\xb1\xa4\xf9E@\xe0|\x14\x01\x9e\xd9\xf7#\xf1\xfd[\xb2\x01Gy\xbe\x8c/?\xf9]v\xc6\xe4\xe8\x1fr\xf4\x1f1\xfc\x0e\xfb\xd01\x8d\xb7\xdd8\xc5\xf8\xec\x13i\xb1~\x0dk\xf7\xd98\x7f\x8deQy\xbb*\xfe\x11\xb8\xd7O\xac\x1b\xf6RD.>\xe9\x83\xdc\x14\xdd>t\xcf/\xbbn\x1f\xe6\xdc\xd5Jx\xcc\\\xfaU\x17;=\xfaP\x07\xd1\x84\xb7\x9bc\x8a\xfcY!.V\xa0\x1f\x15=\xd7\xe0\xa1\xa8\xbb\xfa\xfc\x107O\x925Ppv\xfc\x97z\xf2\xf2\x92\x84\x8b/\xfc\xc7\\\xf2~\xf8\xeb\xbaV\xf9R\xad\xcc\x19\xc5b@nq\xa5&\xd4\x1d\xbb\xaes\xa2\xc4\x8c\xaa\x8d\x8f\x86\xe3fQP\x8ar\x07\xceJ\xae\x9ak\xd3\x15FWe\x9dtGI\xce\xca\xcey\xb67\x98\x80e\xd4\\\xe3\xd9\xc9jq\xe9\x07\xd9\x18v\x16\x8b\x9f\xe3\nL\xbc\"\x97\x8f\x841k\x80\x7f\xad>K\xd8\xb3S1\x8f\xceH\x0dTS^\xe7\xf2>Bti\xd2\xdc\xcb\xebH\xd6\x11\xaa\x10\xe48\xcd8$\x82\xe8\x18\x89\xb9\xd4\xc1\x84\xf4\xa6\xea\xb8\x89\xdd\x14\xe9\x07\xa8\x98\xa18Q0\x04\xecG\xbc\xaf\x1a\xb9\xf9#\xc6\xa4\xe0\x93#\xf1D\xc5\xe6\x8b\xc1\x82\xad\xb2\x15\xa5\x8b\x08\x0f\xfb\xfb\x80>r\xfc+a\x1c4\xbd\xe1\xbe[c\x0c-R\x9a\xe4\xc2Y\x0c~\x82\x1e,\x06\xbf\xe1\xffx\xbfr\\E\xc8\x0f\x92):)\xbd\x1c:\xcf\xf6\\G%\x15B\xbb\xba\xeb:j\x11\xa9*Xy\xbf'\xa5\x1e\x15rS\x9d\x1a\x83N\xd3\x1aK\xfe\xe8@G\x98@\xd1<1\xf4\x14\x10w\x1d\x1e\x8aD\x8bg50\x15\xc3u2\x06\xe0\xce\xb1k\x1d5.w\xd3\xb0\xc5\xa8n\x9cL\xee\x8d|\xd9Nro_+\x9aV \xe9\x1c\xb3\x86\x1ao\xc8N\x06x\x84\xbb\x03\xdc@\xce\x95\x8a\x15\xb6i\x91 h\x9a\x92\xca\xa9\xea\x0f=N\xb4R\x83\xd2\x92\xbb\xf2Z\xb57\x91\xa8b\xd6\xd8\xf8\xed\x05UIFm\xb9 A4iI\x90\x0f2\x96\x8b\x99\xc5\xbaf\xa4\x9c\x9d\"\xed\xd5\xac\x18|\x01\xf6\xc1\xef\xf5\x9a\x19\xc0\xc4\x90\xb6C\xfd\x88\xec\xc9\x9c\x02\xb2\xbd\xd9\xeb\xf5\x0be\x19\xc3\x88\x96\xa9\x0e\xd4O\x82\x9cE\x92'q\xc8D\x12\x89\x8d\x0d\x94/b'lb\n\x8d23\x084W\x9a\xd2\xd6\xd3eG\x90.\xc6\x03\x1e}\xc2\xf1\x07\xd7m\xcf\x95\x98x\x8d{\xf7[!\xba\x19\x8b\xa3\x07`\xf1\xc3q\xab\xbe\xea\xc5\xb6\x03\x8b2O#\xdd\x82}\x05\xa2\x81\x08\xc0\x1b\xd9V@!A\xf8\xf5KmMtgu\\\xdcuc\x94\xc1\xf2P\x93\x1b\x1f\xb9\xce4\x8f\\P\x87\x9cG\x12\n\xc3\xb1~%e\xb8\xa1 P\x8c%L\x85\x9aT\x03\x12lg\xd4\xa2\x9dt:\x9c\xa9m\xf5!\xd5gd\xc7\x167[\xb6\xc8Z\x19i\xda\x15\xe5\x86\xd6\xb7\x1e\xd4:\xfb\x7f\xd3\xd8\x87xj\xe8i\xfb\x0bzb\xffo5\xf4'\xea\x180N\xe9B\xc4=\xc66\x94SQ\x8b\x91f\xbb\xb1\xea\x8d\\d\xb9\x1d\xc5\x14\x84\x83\xf7Y\x8a.1\xc7\x17 \x8d\xaf)\x06v\x88\x07\xbf\xd1\x8b_\xfc\xb4\xfa\xac\xfc>O#\xad\xbd\xde\xcc\xf0\x91\xf6z3\xa9^o\x86\xce\xb3-\xd7!M\xd7\xf9ZNX\x1ay\xb5\xca+\x19\xf7ui\x13\xf0> \xa5\x00\x94\xde\x88\x90*\xa4\x06\x16o\x00\x9e\x035&\x98\xe6J\xeeE\xd8G\xbe\x9c\xa2\xdd\xc5\x97(\x88\"M\xd2\x0cPEScl4\xc8\xa3\xd5cl\x1c$\x04\xa9\")\xb6\x8d>V/)\xb5\"\x00\xc2\xaf|\xca\xf8\\\x9e\xaf\xbf\x00'qy\"D\xdb\x9a\x90\x81\x0cv\xe9\x04\xd6\x06\xf3D\x1e\x1d\x9fcgH\xae\xfd%I\xa5n<\xff9HR\x12\xceI\x10\x85\x1a\xad\x05\xc6\x7fC\x83\x1ey\xda\x98\x00z-\xf2\x7f\xe5\x15\x1d\x83\x1a\xaeq\x8a\xf2\xe3\x89\xc8\xa5\xadu)|\xce\xad\xda\x8frU\x95.M\xb5\x06\x92\xfa\xdd\xb1\xe0\\\x94\xb6\x8b5\xec\xc3<\xf2x\x94\x1c\x1e\xff\xeb\x94\xde\xa6G\xd1\x9c:]\x9d\x8e\x92\x8b~\x81;\x888\xe5p\xd6\xba\xb0Q\xec\xe3]\x92\x98x)\x8d_\x93\x94\x8c\xaby2@J|m\x00\xb1\x1e\xccI\x8a\xb7\xbel*\x8b\x06\xfc\xd6\x12\xe1\xbc\x0f\xedf\xbb\x16A\x08\xf5\xdd/\xc21\xc4\x06~\x0cS\xb2\xf2\x9d\xd4\xb4D\x80\xfb\x8e\xc7\xb2b\xef\xc1>\x86\xcf\xa5<\xfe\x0c\xcf\x0e\x1a\xa2\x9e\x1c\x1f\x19\xe6\xd4\xea\xdch2\xbd2\x9c&5\x93J_o\xa8\xc5\xc5\xef\x9a!\x8fLA\xae\xda\x804\xd0\xfe\xdaN\x95,\xb0>\xc1,\x8f\xa8\x15\xf1\x88Zq-D!W\x07\xe1ej\xcaD\x06\x8cf\xbapR\x0c\x93\xaaa\xc0\xa2p\xe1/\xb3\x98\\p#\xdb\xfa\x12/i\xda\"\x0c\xa0\xa2\x0djB\xcd\x07\x9e\xff\x8d\xeb\xa87\xa13\xaccm\xd5\x89\xc1\xf2*\xcbm\xa2\x8aNc'\x1e|\x80\x1e\xc4\x83\x8f\x16i^\xa4\xf7j+\xe8\x10\xa1\x9e\x8b$G\xc1\xf6\x82/\x7f\x18\xa4\x9c\xd0\x84\x1e\x9a\xa0c5E]\x08\x93blF\x93\x17\xf1\x1aOH\xe0\xb8U\x11\xd6v H\xe5\xa8\xb6\x82\xee\x1a\x8f1\x99}\xf8\xee\xe3\x12\x91\xd3\x1e4,\xb3\x96\xe8;\"o\xddt\xcf\xcfM\xf7\xca\xe8xbA\xc44n\x8d\x84\x11#\x11\x987\xda\x88n\xbe\xd6\x92A*\x00\xc3\x01E\x93\"\xa1u\x1d\x17r\xb0\xeb\x84(\x9f6k\x04\xdb\x00T\x82\xce\xba\xde&b\xf4\xd9A\xa32\x99_\xc2\xe9*\x15\xbb5+J\x0c\x01?\x88\xe9\x92\x864f\x0c\xd8\xc7,L\xfd\x15\n\xdd\xc2\xa9gIS\xc5\x95\xe7\x88\xach\xe2\xc4\xee\xc0\x0f\xe7\xf4\xf6x\xc1\xda\xaf\xbe\xdcu\xe1eM\xe3\xe5\x83\x08c\xa7\xeb\xae\x809&{\xd1\x0d\xa8\xe0c\xcb\xd6\xb7{\xec\xd4\xc2\xb4\xec\xfa\xb7\x94\xc8\xf9\xc8;\xd5yx\x11}S\xf7~\xb1p\xc6\xeb%\xeb`\x8b\xf7\xb5\xeb\xae\xb6\xa5\x18u\xd6\xeel\xf4;\x0c\n\xa37tU\xaf\xf8`\xd5\xb1\x9c/v\xd95\xab^\xcb7\x91\xdd\x93\xbb\xd5E\x14\xc0D~\x19\xd7\xccVA\x9c5\xfe\xc0O9@\xd0\xbe\xf1?\xffS\xfe\xec\xd6\xeb\xa3\x8e\x92\x87}}[~\xa9T\xa6y3\xc17e\xb0\xc3S\xb2\x14\xef)%\x9a\xb7\xf0\x92*BX\x95\xce\x94zMOX\xf7\x99\x91\x15\x04\xc2z.\x04\xc8\xf0\xa9\xa8\xe9\xb9\xad8w\xc7\xd4\x0d\xecC\x80\xb9\xa6d\x93\x0c\xde\xee\xe0&&\x8c\x99?\xaf\x93))\x03t\x93,Y\xd3pN\xe7')\x89S\x0d\x0c@H\x04E\xcd\xbf\xfa4\x98\x1bj\xa2C\n\x8f\xa9\xe4\x87:\x90\x820\x06\xefz\xd1j\xcd\xf6\x92\xa9\xa5k\x9ePA\xfbl\xa5qC\xc4\xf2)\x995\xd1Bhb\xce\xf4\xc0Z\x16\xbbfI\xd3\x0fr\xe3\x1c/\xf4#\xbc\x83}X\xb2e^:K\xe7\xbd3\x9d\xb9\xbaKS\xf48\xb9C\xb3(\x14n\x85pw\x87I\xb3ej\x91;\xcd\x8blD\x17h\x9c\xad\xde\xf9\x1e\x96~\x95\x028;+M+\xb7\xa5\xfa\x17\x15\xeb\xed\x93>\x9cT\x8an\xfbp2M\x18\x88o1MW@\x90\xc6\xb3\xe5\xfcIb\xa4(\xbf\xf8\xa5\xcf\xd7mp6\xc3\x83\xd2\x19\xb2\x0fW8m\x8c'\xaeu+\xb5!j$n\xe8\xaf\x9cs\xf5\x0d{dh\xed\xde`\xa7\xf9\x04\"t\xca\xe2\x1e]\x0f\xb9'\xcbU\xcb\"\x9f\x0e\xe5\x8e]Jk\xfa%\xd0\"\xf7+\xc4\x8f\x8b*vuY\xd97 \xb2}\xb8\xc8O\xe3\x074\xd6\x9d\xf2\xd3\x18\xf2\x01Ur\x1e\x82\\\xe0+z\xd7\x9c\x8a\x04\x14R35\xa46\xa8\xf9\xaf\xa7\xd2\xa8\xc4\xba\xbe\xec\x94\xbe\xa6qB\xab\\\xb4\xfa\x91\xa3\x83f;>\x91\xd9@\xde\x1d\x19\x15\xd4\xeaG\xca\x06\xe9`\x1d\xadMZM\xf5\x83\x0c\xb5\x98fn\xd0\xc3\x91\x08\xd3h\x84\x1c\xb5\xb8\x91\x92^l\x94\x1f\xb3\xa5\x1c(\x02q\xde\xde\xd0\xd6\x9e\x96Hx|`l\x91\xdf\xf7\xe1\xb4D\xe8\xf4\xa0Q\x0e\x8c1\x9c\xeaW%\xa6 m\xb4\x02\x91\x1f\xccz\xc1\xedp\xe8\xb5b\x9a%\x14y\xf2gBCy\x81;8\x17?B\xf1L\x81'\xffM\x03\xba$\x18\xa5\x84'\x92\xc4\xd2\x15\x86 \x95\xd9\xc0\xba\xa2\x94\xc4K\xa5\xa54\xbe;\x0c\xd3\xd8\xa7\x89\xcc\x97\xec|p\xfb\xd0i\xb0h,\xa2\x9d\xb3uG\x91\x17\xbaiWxo\x88P\xdbCW\xe1N\xb8v\x86;Kux\xea\xb4\x9eL\n;\x12 \x86X\x1d\xe1[i :z\xf0'i\xb4n\xa1\\\x03i\x00\x95\xa3\x8f\x19\xb7\xa5\x0dU\x05H\xd3\xe1l XP?\xb2\xb8\xd8`*}\xd4\x93p\x98\xd0\x01\x1eJ\xf2\n\x86-\x82\xf9eU\xd3\x14_\x93zb\x020\x83\x821\"L\x8c<\xbc\xf5\xe8:\xc5\xa8\xb4\x0f\xc4J\x06\x9c|\xa0v\x00\x156\xdf\xcd\xb4*vL\xa9\xf6\xd5\x8f\xd4J\x0d\xc4\x96\x140\xecC&\xf0\x16m\xc4\xc5NA\xef\x11\xae\x04\xaf\xa3\xba\xc4s\x86\xcc\x1d\x8b_\x85y\xe4\x12\xc5\xfd:\x1aHg\x9d\x0d\x18=\x07\x1fU\x11\xcfacC\x1b\x17B\xfd\\\x8b\x1c\xffU\xac\xf2\x1b\xcc{@H\xb1\xa4\x15\xf2\x81D\xc08\x8a\xc4\x9e$\xac\xb7w\x91\x97\x13\xe8\xd8\xe9\xd2pn3\x1d\x97\xad\xc8W\xe1\xc5>\xe4d\xabi\xa2 &\x8b\xb9kD6\xf4>tQ\xc3\xf1.\xf2\xba\x96\xd3M\xfd\x04\xe5\xd7\x85J\x18\x1bhw,\xe1\x9dm\xd0f\xb4P\xa3\xcc/0=/\x1f\xb0\x02\xb7\xa2\x10\x1d\x10\x9a\xc7\x01\xda\x96\x8b\xb9\x94\xdaV\x8a\x1b\x1b\xfe\\\\z&\xdfs\x8a\x8d\x0d\x7f6i\x1et\x1f\xbc\xa3\x0d\xd4\xfc\x1b\"\xf7F\x1a\xdfA\x92\x92\x94b\xd6\xf4\x1b?\xbd\x8c\xb2T(\xc5\xa2X\xde\x07\xb4Yy\xf8n\x10\xb7\xd6\xb0\x98\xf9?\x84\x84\x93\x8b8[\xa7-l\xac\xe5G\xe15\xed\x94*\xcc)\x95\xf1Z@~r&\xb0B\xa9B\x03\xbf+?\\\xb9\xaa\xa1\x18\n+\x10W\xb6rny-\x96*.-U3VI\"m\x10\xe8\xd5\xcfEL\xc9\xd57]D@}&\xa6)\xc5\xc6\xc5y\x8f\xfa\x02\x99>\xac+}z\xf0\x16Q\x01\x0e\xc8\xd4%\xbe2el\xcc\x17\xac\x9c\x05\xdb\xe5a\xe2s\xd7\xd7\xfc`@-^#wA\xe4\x11K\xfb@\xc4a\x99\xf6\xb11\xc7\xc2=\x8a\xa3W\x1do\x1f\xae]a\x0e,GA\x1d\xf2 \x06N\xbe\xf6\x00\xa4\xff\x16\x1cVi\xc58<4\xcb\xc6\x1fLJ\xf3\xc7\xf6a\x0c\xe2\xea\xa3R\xd3\xc9Y7\xb9\x83\x04\xf3\xc2\xfe\xd6\x98s\xd1D\x19\xc0\xfctf=\x84Q\xbc\"A\xa9\x07y5\xed\xa8o\xa4n\x1f\x0c\x1e\x7fz\xa0/\xfc\xd0O\x1a\xfd\x13\xf2\xda\x05\xc7o'2iNd\xda\xf9\xd3k\x88L\xda\x82\xc8\x84\xea\x8e\x11\xdbKe\x9csL\x0c\x95\xad\x81\xc9\x89\x17)\x8d\x19e\xe9\xa3\xe3\xb8 h\xf0P\xb2\xdd\xca\xdbC~\xfe\xfd\xa0)\xa8\x92\x80d;\xa2\xcb\x8d\x84\xdb\xb2\xa4\xa0\xd9\xb5\xb1\xd8\xb5\xcd\xfd\x81\xa26\x8b\xed\xbb[\xfd|0\xd9d\xab\x1f\xfb\xb1\x0e\x05\xc10\xcb\x11\xf0\x85GG\x8d\x0b\xf2\x03&\xca\x07\x82\xef!iJW\xeb\xb4\xfb j*\xb5\x01x\xe32\xae\xea%\xad&\x82\xea\x0eR\x94\n\xf6\xe5\x91Woc\x8c7`\xe7\xecc\x9adAzDVt\x0c\x0d\x01-\x18]{\x17yc\x83m\"p\x85\x0e?\x9d\xb8\xe2A\xa1\xab9u,\xc4@\x03q\xac\x95VM\xc0J?sy\xf6\xbcA\xcd+q\x95\x9f\xf1\x8a\x9eI\x89\x0fs(\xf2\xe6\x1d\xea\x01Q\xcb\xa7\xe9D\xaa\x82[\xfb\x0e\x11Z\xe5S\x07\xef8\xa7:[f\xb1\xc8\xfe\xe0\xdc\x0f\xaf#\x8c\x02j\xb3\x15P?\xb9\xdd\x80U\x8b\x99\xb7f\x8a\x95(?\\s\xc8\xd6n\xae\x11\x08rm-\xf8 \x90 \xa6d~\x07q\x16\x86~\xb8\xb4\x89\x01E\xabZc\xf9jU\x95\x1e\xe5\x19\xc6\x0d\xd9\xf0\xe5GL\xf4\xadA9\x0e\xcd\x9a\x85\xb0\xe0\x00\"<\x96\x10O\xfd\xe7\x8d*Z\xc9\xf6\x85\xf9\x06m&\xef\xa4\xa9Q\x10\x0dg\xe8\x14B\x18\x064\xd3W4\x96m\xd32\xc8\xca\x08\xe3\xeb\"\xafns\x1f\xa0(\x85\x1a+\x7f\xa9x\x06\x12\x13\nZ\"\x97\xc7\x85Pjb\xc3B\x0d\xdb|\xfe\xe4\x92\xb9\x8a]E\xa3\xcd0+\x90x!q\x92m\xbc\xcb~\x9b\xde\x01\x9d\xa9j\xba@\x07_m\xf0v\xe2C/1\xb6\xa1BU\xc3\x01\x97O\x9d\x82o\xe5\xad6l\x18\xd8\x87\xb9\xbd\x8a\xd4\x17\xdd\xe4D\xa8\x19\xb1K\xdcq\xd2\x9a\x99\x10\xc0\x957 \x13\xb8\x841\xac\xfb \x8e\x8b\x87\"i\xe3u\xa6\xfa\x11I\xfd\xb0\xabvZ06\xc6\xb1\x18k\xe3\x0b_\xb3\x07T\\MrQ\xc3\xc9\xf1\xae\x90Y\xa4ZV\xd2\xad\xc4\x8eX\x06F\xbaV\xfa\x99-}\xd8\x07\xe2\xf6+\xc97M\xc7\xf0\x8d\xed\xc42;S4\xaeX\x8ai\xb5$z\x99\xd7\x89\xc4\xcb\xdc\xb3\x07\x87\xd1v\xa6\x8d\x11\x1c\xda\x0eQ,E\xc3\x08\xdb\x0e\xab\x15\xd0\x0f1\x9e\xa0\xe1\xe1\xad\xed\xe1\x89\xed\xe1+=0\xa6R\x01\x91c\x9d$=\xb3\xfc\xce\xcal\xd8&?\"hg;\xf1Le\x83\x05\x93\x84v\xb2\xadW\xb7j\xee\xaa\x9f\xf0\x95\xc5\x9a\xb4Nu\xd4\xd1\xa83\xb1\x19\x1a\xe4]\xf9\xad,\x8d\xe9\x8dt\xa7W \xda\xc0\xc3A\xc9\xb2\x90\x07\xbc\x8ey\x90\xbc\xa6\xd7@\xe1:n\x1c:\x0dg\x18a n\xc9{Hr\xd5\xd9\xdf\x177Fm:\x04\xe5\xa8\xc9\xda\x13a\x10\xd7\x11 \xbf@n\x1e!\x14pE\xcb=\x8dE`\xa0(E\x03L\x05\x8bV/]\x17&r\x1dr\xef\xa2` \x9e>\xc8\xb8\xa3\xfaI\x1d\xb9\x99\xa8X\xa2V\xaf~~\x88\xeb\xae\xfaI\x9d|\xd3>\xacC\x17\xc6u\x10|\xd5\xd4\x93\xdc$\x01C\xc9'-\x07\xd2j\xc8\xcd\n\x04\xe2d-x/\xb1w\xd2Z\xb0\xf8R\xad\xb6T\x08\x14J\x06\"K;\x87\xa0\x8f{z\xcc\xa8B\x9dv\xb5\"]\x07\xd6\xc8/<\xec\xa6\xd4\x0bL\xe5\xfd\xacF\x11U\xb0\xb9F\x99\x13or\xea&\x0e*\xb3\x92\xb6`\xac}L:/\xc74\x10\x80\xa9^\x1f\x17\xca\xd8\xc2PB\xcc\xd5\xd0e\xaev\xbc6\xd3\x84T\xc3:\xe5\x1d\x943\xd0\x9f^\xd2\\\xa1\x02\xf3\x88&\x10F)\xac\xe3\xe8\xda\x9fS \xf0\x18\xdf\x7f\x0c\xbcA\x93b\xc8\x86\x0b\x9aH}\xdaE\x8c\x90*\xc7}e%\xc5\xa85\xf4\xb9&H\x0bz,\xf1\xcf\x02\x80Hh\xc5\xebK\xac\x81\xa8\xbc\xeb\x89\xf4B\x90Tm\xe0\x95\x88\xe0\xed\x9dt\x8a4D\xe8\x9dfx}!\xe2\x99\xa7\x85B_\xa8\x9b\n\xee\x02\xcf\x95\xb4\xa4P\xb2\xdb\x19\xe8f\xc0\xb3\xcd\x8f\xcb\xef6\xa0@\xbe\xfc|\xd0\xe0s\x1c !\x88#\xc4\xd4W\xab\x9d{lwa\xd1o \xae\x1d\x1e\x03\x9d\x0egu\xf4\xa9\xaf\xc3\x88\x9b\x9ar\xa0\xc9\xcbd\xcc\xc72\x9a\xb9}\xd8T\x1f\xabz|\xa0\xdc\x1d>\xd7\xd2c\xd1\xd6\xcc\xad\x9b+\xa19]\xdan\xce\x1f\xecs\xa6\xea\xed\xd9\xfd\xbd\xf6\xfa,\xcdMR\xa4L \xbd:R\x8e\xbf\xa5F\xf6\xab\xd1\x94\x0d\x03;\xd5\x0f\xac2W\xd8\x87\xa9}]\xb8\xa9G}e08\xacd\x92\x8f9\x10\x8b\xc8N M\x9d\xea\xfd\xbei\xa4\xef\xf5#E\xaaj\xd3\x16\"|\xa7\xc4p\x07\x81\xb4]\xa1\x12|\x7f R\x9fom\x8fJ\xcf_\x1d\x7f<,?/eU\x1a\xbc>|s\xf0\xe9\xdd\xe9y\xb5\x9fQ\xa5\x1fY\xef\xcd\xa7w\xefJ\xf5\xb6wJ\xf5\x82\x88\xcc\xf1\xc2\x94}\xa9>8\x08\x82\xfc\xd9\x01\xe3 \x8a\xc7 Y\xd0w\xf2]\xf9CWA\xb6\xa1\xfcV\xab\xcd\xb3\xd5\x1a\xb95\xf6\xa5\xfa\xfek\xf9P\xfeP+\xfc\xf5\xe0\xfd\xbb\\q-`\xb0W\x9a\xdb\xfb\xb7Go\xdf\x1f\xbc\xb3-G[0Z \x98x\x84\xbb\xedv\xd9\xb7n\xe9\xd9\x9a\xc4\x18F\xd1w\xba\xf8\xb5\xfc\x14\x93\x19\xcb\xe7\xe2G\xb9\x06\x99\xcf_\x95<\xa5|\xa7[.\xeb~\x93M\xfc\xb4\xea\x06\x1d\x15\x00-\x95\x8b\xb4Z\xdb\xfaDq\x08\xbdRyV\x80\xacT\x9eh\x9cE\xad^\xa1\x01F\xbd-\x15y\x18\x07\xbaL\xaba\x1f\xb6\xcaE\x0c\x81\xb6\xcbE\xf3z[\x97\xf5\xb6\xae\xebm\xad`\x1f\x9eL\xcfn\x87\xc3\x8d\xb3\xdb\xe1\xd3\xb3\xdb\xe1\x8fg\xb7\xc3Wg\xb7\xc3\xc3\x8d\xb3\xdb\xd1\x9b\xb3\xdb\xbd7\x1bg\xb7O\xb7\xcfn\x9f\xeen\x9c\xdd>{s\x96\xbdy\xf3\xe6\x10\xff\x7f3\xbb\x9f\x9ee\xaf\x9f\xb2\x97\xb3\xd7?\xbey3s&\x1dV\xf2\x8a\x97\xb0\x1a\xee\xbd3\x19O\x7f/W\xbb\xff\xdd\xadT{R\x1e\xd6R\x0c\xeb\xe9\xceY\xb69\xdc|\x8a\xff?\xab\xd6\xba\xc3Z\xfd\xb3\xe9\xd9\xec\xec\x1fg\x9f\xab\x8f/\xd8\xe3\xdf\x9d\xc9\xb8s\xdf\xe9\xdcw\xa6d\xe3\xefg\x1b\xb3^\xc7\xfd\xf3\x13\xbf\\\xf3\xbc\xa89\xfd\xbdh\xcfu&\xe3\xff\x98\x0e7\x9e\x91\x8d\xc5\xec\x1f\x9b\x9f\xef\xf9\xf7\xbf\x9fm\xfc_\xcf\xcf\x9e\x9cM\xc6\xff\xf9h\xff\xacw\xf6\xe7\xfe\xf9\xd9\xa0\xf3?g?<>s\xce\\\xf6\xf6\xcc\xfd\xe1\xcfO|\xddYqc<+F\xc3\xc2\x8an\xb4\xc5\xbf+\xd4\xbc\xde\xd4\xa1\xb1\xa9gEK[\x9b-Z\xba}HK8\xbe\x87\x8e\xf5\xc4\xd8\xc3\xf6v\xd1\xd4\xb3\x91\xf2}K\xe9b\xb3\xf4c\xa7E\x87\x1a\xbd\xbaF\xc5,\xc7\xf0\x14^\xec\x0bgI\xf6mg\x0f\x13Zn\xb0\x07cx\xb6\xc7\xca0\xaa\xf8\xd6&\xdc\x0b\x9bF4a\x1c\x0d7\xd1\x9ca\x83U\xea1\xb0\x8cacd\x1d\x98F\xff]\x8c\x82Or\x02\xdd\xb3a\x97\xf7\x9c\x97\xfc\xff\xb0@\xadr\xc1JF\xa3]\xa5(\xc5J\xd5\x82Q\xbe\\\xac(\xe4EjK\xd7X4\xdcT\x8a\x16\xbc\xd6\xb6R\x14\xf3Z\xa3\xa2\xe8\xff\xcfJ\xb6\x94\xd7\x00\x0b\x8a\x97\x1ew\x1f\xc3\x18\xb6\x95i<\xc1\x11\xaa=\x9d\xb1\x92=e8\xff\xe7\x7fc\x9d\x1d\xa5\xe4\xff\xc6:\xeaL\x91*\xb0\xd2\xa7\xc3J\xe93V\xda\xedZ\x17\xe1\xc0\xb8\x08\xb8\xfe\xbb;;[;0\x01\xeet\x87y\x0b_]\x92\xf8U4\xc7\x9c\xa8c\xed\x83\x9d\x9d\xcdg\xbb\xd0\x03\x87!\x0eka\x17^\xbe\x84\x11\xe3uvv\xb76\x87\xe5G\x8f\x18\xbc\xb7\x14o\xd9\x82_\xcb\xed\xe4\x8e\x85\x9a\x043\xee9\x9b;\x8c5\xfb\xa0);\x054\x97;\x85\x17\xb0\xb9\xb3\xfb\x1cN{=\x17\x8e\xa7\xa73\xd8\x87+\xe7\xd4\x85 \x8c`\x0c\xc3>|(\nu\xc4\xe9\xbdV\xc1\xa9\\\x94Dx\xdf\xc7\xc3\x17\x0f\x16~@C\xb2\xa2\xa8,\x0b\xd7Y\x8aN\xb4Q\xe2\xa7huH\x07\x81\x1fR\xb5\x0c6D!:\xd0\x97\xe6^\x1f\xcb[\xedX8\xcf,\xc6i}\xff\x0f\xed\xfbt\x10\x85\xbf\x918\xf4\xc3%w\x8d\xce\x7f\x8a@\x85\xa8U\x12\xed\xeb\x16\x87\xad\xcbQMe\xc4\x18\xb7\x9a\xd1\x99V\xb9{]$\xa4\xab\xcb\x8e\"7\xf0>\xd0\xc15\x8d\x136\x8dG\x8f8$\xba\xf3l\x1d\xf8\x1eF\x1d\x84h\x01\xff\xc1\xba\x84\xb9\x1fS/\xf5\xaf\x91\xc7\xe2IC\xf2\xa4:\xf9\x9b\xe5\x9a@<\xc6`&@o\x89\x97\x06w\xc0d]\x99\x03\x12\xe3E\xb3A\xb0-\x85w\xe0O~w\xd8\xa17\xeb\xb9g\x03\xf9\xed\xcfO\x06\xf4\x96zN8\x1d\xce\xb8\x17\x1b\xef\xc8\x0f\x82\x8dE\x14\xaf\x98\xa4\"\x1a\x04L\xb0I\xa1>Z\xc6\x8e!\x03\xf96L\x9d\x18\xc3B\xe2^\xf1\xcb\xe5\x9b\xb2\x9c\xcf.*z\xcbB>\x13r\x11\x88\xf6%\xccD\x9f20\x1b\xe7?\xe5\xc3}\x081\x12%\x1dx\x97\xd4\xbbz\xe7\x87\xf4\xc7\x98\x92+\x0c{\xc1v\x90\xec\n\x0d\xdc7\x8b\xaf\x7f\x88^\x93l\xcd8Y:o\xe8\xb4\xb4\xba\xd5\xccb\x07?=\x0c]\xea\xb8\xb2iX\xed\xd3\x83\x9f,\x8b\x9d\xdeDE\xc2O\x06\x988\x07\x08\xf2\xc7\xb8\x0e\x17\x83\x94&\xa9\x13\xa3\xa8][\xda\x94,\x81'o\x01g\xe1\xc7I\x9a7\xe8J \x94\xc6\xc0zI\x84\xeef\x90\x92\xe5{\xb2\xc6\xcb[9\xe2\xc7\xe9%\x8d)\x9a\xbb\xc1:\xa6\xd7~\x94%\xc1\x1d\xcc\xa9\x17\x90\x98\xce!\xc9\x16\x0b\xff\x16\xa9b\xf71\xf4 \x86\x1e<\xee*\xc3x\xec\xf6\xe1\x9c\x0f92\x0fy\x1dS\xd6\x8c\x93P/\n\xe7-\xc6,\x07;\x8dg\xb6xr::\xfa\xd1b'\x89\xb7\x0cy>\xb5\xf2\xba\xa2f\x10^\xe8QA\x18\x93Ib+\xdcH\x11q\x8c\xd1\x81\xf1(\x89\xb8\x83\xad\x8fw\xbfB\xed\x06\x11\xbc\x00\x9f\xfd\xe9\xed\xc3\xc8\x15<\x83C\xb0\x8e'\x8e\xb4\x03\x06PW\xf0~/\xf6y|8\x82|\xcfh\xb4=\x1a\x8d\n`\xd3\xdb5\xf5\xd8\x9e\xb8&\x81?\x87\xbf\x9c\x1c\x1f\x15\x11\x0cuv\x8bhp\xb5\xe2\xab\x96)4\x84-E\x92\xc6\x94\xac\xd0\x16\x89\xf8a\x02a\x14n\xacc?\xe4[=o6\xd1\xb6+n=\xd8\xbc2\xd3\x9ai\x96\xecu\xb1d5\x87M\xbc\x7f\xe1\xeb\xd5\x87\xa0\xdc'B8\x1e\xf8 \x17\xfd\x9cP\xc1@\xa1\xaaY\xd1xIaE\xd6k?\\&\xcf\x11\xdb\xc4\xdd\xd6\x1c\x92(\x8b=*.9\xd8&P\xc9\x1aC\xc3\x8c\xaf\x1e\x13\x16\x1d\xc58\xf6\x8a\xdea\xa2\xb7|A3x\x01\x01\xfb\xc3\x17\x14\x9dd\xa6\xd9,\xdf{)\xda&`r!\x1e\x95 \x9c\x12\xb6\xeb\xf9\x0fU#\xae\x03\xcf;\x05\xa3\xd5t\xaa:P\x05}\xf0\xeax\xcd\xb0\x90\xb3MN\xa4\x9e2y\xc4\x11\xf8\x07\xe6\x83N\xc9r|GV\xc1 \x8a\x97\xfd\xcd\xe1ps\x8c\xf0\x13\xa6\xf3u4gm\xf3\xf4\xd2~\xc2\x99\"\xdf\x96\x958\xe0\xe0\xf4\xf0BL\xc2.\x80\x17\xe0\xb1?\x1cv\x12\x17\xfci0\xd3\x9b\xe4!\xf6\xe6\xd5\xeau\xf09\x1d\xfc\x91\xf0\xbb\x95$\x8f\x82\xcc T\xa7X\x13^\xe0p\xbe\x08\xd8\x1e\xc3\x0c_5\xd6i\x1f2\xfe\xa4`\xb0\xca|\x01\x9dK\x14\x83+z\x87!M\xd2i\x84\x17\x7f\xf9\xadM8\x8dfZ\x01(\xb5.\xfe\xa7V\xb2\x94\x102D\x8aMN\xa3\x14JR\x8c\x1c\xf32\x15?{=&Vl d\x98\x80\xa3>\xea\xe7\xa2\xa6\xb5E\xce\xcb\x15\xaf1\x1e\x9d\x83\x87\x00\x02\x16\x9d\x9e\xd8\xf6\x92\x84\x8aSx|\xd6\xc3\xe4C\ng\x8a\x13\x90\x8dY!\xf37\xd3\xd9]J\xc69\x94\x19\xfflSx.\xb2~GZchqyr\xe8D\xees\xd7\xd4Z\xaf\xa7\xb6\xa7\xdd)\xb8\xdb\xb6\xb8he\x08\xf0?\x8f,\x979mz\xd6\xbe\xfc\x19n.}\xc62\x8c\x86\x05#7\xda*\xbe\x8bb\xc3\xb8;7x\x14\xe12\xd6k t>a\xf2\x90f@\xf7!fx\xc5\xd7\xfbm8\xe7\xe6\xcd\xc3\xe7R\x90e\x0b\xa0>d\x95\x1f<\xed\xcf\xba]\xb6!8\xf4b\xba1G\\e$/\xf8c\xcel\xce\xe9\xc2\xf7|V\xec\xe3S\xe4\xfe\x91k\xb3b\xe5\x1b\xc3~\xed\x8bD\xb3r\xc8ZR\xd0q\xb6wpl\xa6\x8d,2\xe7n\xefr[\x01\x0c\xfd$\x84\x96z]\xe81\x82\xdaTe\x93\x13\xc1\x90m\xc5\xad\xbe\x80MC\xff\x9d['u\x1bd\xc8\xbfke\xc0QNjTf\x81\xeb.R\xcc\xda\xcfc\xce\x15\xcf\xe2AL\xd7\x94\xa4N\xf7\x0c\xcdd`\xa3\x94(K\xd7\xf5\x8f\xda\xae\xafE\\A\x89Q)\xd1X\xe2\xf9\xdck2\xf4.\xaby\xb3A\xa8\xa5u\x99Q2M\xae\x11\xeetQ\x08\x95\xbcM1=\xfe\x831\xb8\xf2;;,\x88\x90 \xda\x11+lk\x9b\x93\x13\xfc~\xebX_Dtp5\x97\xbe\x92\xb9\xed\x0c\xfbP\xa6\xffHbY\xf1\xc6\xc8\xad\xef\x96}\x06c\x99\xbb*\x0b\x82v\xa3\xafu\x9f{.\xf0\x0d\xc2O\xdf\xdf\x04q_\xf0<\x1e\x1d\xcc\xce\xc2\xbb\x92\xc8\xe1\x96\xc7\xd7\xa6\xf3~q\xd8#-\xc8\x8f{1\xa5\x97\"^\x8c\x00\xb0+\xce\xb1\x0b2W\x89\x00\x93Z\x08$\xf4o\x19\x0d=\n4Lcm\x94\x80|b\x15\"\x93ji\xa9$\x01\x9dL\xe0\x08\x13\x9c\xd0W'\xc7\x1dd'\xe8\xe0\xca\x0f\xd1\xaaG\x8e\xa0\xdb/6\xd3>\xe3\x0c\x9b\x18\xca_\xcd4*g1\xf95\xbev\x07T1\x9dMq\x8b\x9f&N\xf3\x11P\xd8\x0f\xe8\xdaQ6\x0c\x9b\xbfI\x03C\x84X\xc9\xafv\x18U\xde\x15\x1cP\x9b\xd3\x82\xf1@\xc8\xcfw\xcc\xdcA\xe5\x851lq.)b\xef\x12%\x01g\xb7\xd3\xe9\xb6o\x85\xbf\xd1\xedC\x99\xd11\x98<\x1b\xd9\x816\xdd\xd5^\xcc\xd9\x00\x85\x0b\xd8\xdd4\x1e\xfd\n\xe5(lF\xd8\xecc\x9d \\\xdaem\x86W\xb0\x89Y\x98K\xb04\x9cK\x9d\x80\x10Do\xfc\xf4\xd2\x0f\x81\xc05\x8d/H\xea\xaf\xd8\xcaW\x15<\xa6p \x82sS\xe6\xdb\xb9\xe5\\\\\xbe\x9al\xaf\x11\x98H \x98,\xa5\xceC\x08\x90B\x10\x06z\xeb\x05d\xc5\x11pE\xe2\xab\xa4\x9b\xa7k\xae\xc0\x82\x1dP%\xf1\xa1\x87\xc9\xed\x84bG\x95QCR\xd1\xe9T\xfaL2\xef\xb2$r\xcb\xcc\xe5U\xf4\xe1\xa4\xbd\x1d\xdc\xeb\x0b\xdd\xbc\x9ew\xb9R\xaa\xd0\x15\x18!\xb5\x08\xa2\x1bF.\xd9v\x8d\xe2\xd2\xf8\xcb\xab\xa6#\x7fx\x90u\xce\xf5\xfd1x5\xc0h\x8c\xf6\x1b\xb1\xcb\x03KH\"\x1a\xc3\xb8\xae\x06\x0b]\xa5F\xaep\ng\xa8\xe6\x1a\xb3]*N\x89\xa2\x16+\x93Ou\x8f\xeb\xf2\xb3\xac\xcf\xb5mY\x98k\xd6\x94UG\xcdZ\x88\x9a\xb5\xc7\x98\xda\xdeJ\xbc\x7f6\x13o\x0dY~\xca\xc9r\xf8\x15d\xd9\xcc\xc8\xe8Is\x08\xa2\x86J\x9e\x0d\x03(af\x15\xab\xe5\xc6\x0d\xc5\xc6\xe5\xa2f\xe7\xc4 \xd9\x0en\xd3\xa2\xf6\x84U\xb6M\xae\x03)\xf6cy\na4\xa7\xb0\xca\x92\x02\xdfH\n\x01%I\x8a\xaa{E\xcbV:\xa6\xed\xbb\xa9a\x81\x7fS\xb4a\x9as\x01\xddqQ\x1b\xb6\xea\xc3\xb2\x0fw}\xb8\xe8\xc3y\x1f\xae\xf8e\x94\xe6\xd0~o8\xcc\xff0\x1c\xe6\xcab\x07~\x92\xd2\x90\xe6\xb2\x12\xff\xe5t\xa35\x0d1\xbfx?\xc7~~}\xa3@A\x16\x08~E\xfe\xcc9\x15^\x80jO\xd8Gc\x88u\xc1\x97-\xf8W\x11q\xad\xca\x88:\xefs~\xb5\xcc\xbe\xc1\x84\x03\x01\xd3_\xa9B\xa6\x90:\xf0\xba\xae\xfa\xf0\x85P\x84\x9d\xa2\xf1\xa5\x8b\x17\x1e\xec\x85\xd3\xfa\x19*N\x14\xe4\xa0\xee\xefq3>w\xcb\xc3\x9b\x14\xa3[q~\xec\xbb\x0c\x12\xc6\xd8\xbcn\xfdV \x832\xbfg\x83\xf4\xf3\x1b\x9cS\xf6`-6\x15\x93\xfa\xce1\"w\x0et/'i\x98\n\x80\x1d+}\xb8*\x1f5\xa5{\xc4\x1cR0\x01\xde+\xca^W\x08\x9c\x87\xdc\xb1\xf4\x0b%ob\x96\xce@X\xee\x98%4\xf6YXBr\xcf-\xcf.%Nj\x9f^[\x9f\xae\xacO\x97\x86\x0d\x08\xc2\x8eF\x97\xa7\xf2\x0b\xe4\xc7\x85PY\xb7\x93\x1f3\xa3\xe7\xbf\xf4Vn\x16'\xfbB`\xe6B\x1b\xa9\xf0\xb4\xbb\\(@\x81f\xe7\xa9\xf8~\x7f\xcfhyl\xb5\x84F\xad\x13\xd2\xc1\xb0\x0f^.\x02\x1auP\xea{\x8a\x80\xd7\xe8F\x880n\x03\xb1C'c\xfb\xdcP\xb5\x81\xbfR?l\x84;\xdc\xde\"s\xe1\xd6\xd4y\x85S\xce9F\xc2X\xf8\x94&k\xe2)\xa7\x8f\xaa[\x05td@\x0e\xfa\x8a\xdemp\xd3\xea\x84\xae \xf7\xf0\xc8\xd9\xe9\x8b \xf2\xae\xa4\xd6\x9a\x1d_(l9x\xd7\xb0\xe8\xc3\xbc\x0f\x97}\xb8\xe6w\x05n\x1f\xf7\xc6\xb5\xa0\xd2\xa2\xe8N\x109\x81\xdc\xc8|\xb2\xbf\x97\xf9\xfe\xc57$\xc1\xb7\xc3\xa5e\xf2+\xa6\x04\x88\x97vF\xe9\xba\x91Q2\xe5'a\x80\x17\xe6\xa0\xce\xba\x19\x17\xf8\x9d\xd8\xb3\xad\xbe\xd0\x83sM\xac.P\xbd\x85\xf2\xb1>G\x9b\x9caX\x1beQ\xf9a\x1d\x8e6wD\x8fC\xde\xe3?\xda8\xf4|\x01[\x15\xbb}0\x80\xa1|\xf2\x0b\xfc_[\x19\xab|\xab\xb1\xbd\xda\x06\xbc\xe2\xbe\xb0.\xbe\xf2\x9b4\x8e\xbb\x97%\xdc\xbdVp\x97\xd1\xdb\x1c\x7falR\x1b\xc7\xe6\xc3d^\xf0\x1f\x9c>\x82\x17\xadV\x04.hzC\xa9P\xf8xQ\x10P.\xc0R\xeeD\xc8H\xa3\xc7\xb6\x95H~\xc9\xc5=\x1f\xef\xd99\x9a\x88\x13a\x0dm//@F*%\xf6\xeb\x8a\xd4\xcdU\x0e\xe5\xeb\x84@\xb9N\xf0\n>%Q(h\xa9\x19\xe3\xc2\x97\x05z\x02\xf9\xe5H!\\ \x8ew\x8d\xe4Xj\x9b\xdb\xe0Qe\x04\xba\xb1/\xca$\x9f\xad1\xd2\xb8\x18\xe9\xbc\x874d\xc1]\x81'\x10\xf3{\x13\xac\xc0\x17A\xa9\xc3*\x89\nI\xb5ga\x1e\xde\nI'\xe0\xcc\x1f0G\xd6-\xd6\x1f\xb5\xd8\xb3\x0fQ\x13W\x90\xb1\xaasd-\x9d\xb3\xd1\xa2\xee\x83 \xd9<\xfdn[R]\x15T\xe7f!\xd5$\xf0y\x96g\x0b\x0c\x8a\xab}\xb4\x86Z\xfe9\xf9\xd1\xe9\x01 \xa7\xa9b\x11I\xf3\"\xba\x82\x87\x7f0\xe1\x16\xb7\x08\xa4\x15\xddntP\x04I\xa6\x95\xab.\x8f\x04$.S\xacnW\x12\\b\xf0deC\xdb\xde\xb2N\xbf.h\x89\x1bU\xe22\xfc\xdcg\xe4k\x82+-\x1a\"\xc8\x7f\x8d1\x80\x17\xc7K~=\xcd\x99\x1b\xef2Z!w\xb3B\x86\x92q-\xfe\xc2\xd7[\xe1A\xb3\xd8\x83b\x80\x83\xc4\x83\xbbI\xa0\xbc\xc8\x93ne\xb9\xb3D&\x9d%6F\xbfF\xf1`\xdf\x18\x11\xbe\x8e5\x0c^\x87\x0e1\xea\x16\xac\xe65m0D?\x0ey\xaf\x86]\x9b\xf9\xfe-\x89Y\xc6!X\xc7\x07_3FP\xc7\xd9\xb9q\x88r\xcf\xad\x19\x90aC*\x1b\xce0P\xc5\x1a\xa8j\xe4\xd37\x8d\xbe\x9d\xf2\xc4\xe9x5Y\xe9\x05;\xe4\x1e=\x92\xd6CDc=\xd4\x06b\xe6%\xebxP5{x \x0bdC\x169{\xc1\x1f\xb8}\xb8A\xd4[\xf7z_\xbc\xd9\xeb\xb3\xb3\xe3C\x82\xf3\xbe\xae\x98\xd3TLf\x02\xf4A\xe9\xc1\x1a\xc6\x8c\xb5\x1e\x8b\xb70\xc4\x88\xcc\xf1\xa8\xd8\xe2\x9c\x85M)\x0f\xecA\xed\xcd\xaa\x0fa\x11=\x01\xb6Q\x18\xc7\xb0\xca\xd9\xb8\x96\x83\xe7Zo\xf9\xe6\xc8\xfa\xe6Z\xf0\x8ccA\xed\xd60\xd1M\x17\x90\xee\xd8\xdaix^\x1e!\xb7\x16\xee\x0c%\xe9\xea\x8b\x83\xbbj\xfe\x05\xd5M\xf8\xdc\xfd\n\\e\x9f\x8fB_\xaaj`;\xa3\xb6\xa4\xd3(@W\x8ek\xc9A=P\xbc\xd53'[\xcf\xbe\xfez\x12\xdar\x0bUi!\xc6\xec\xbd\xfb\x9a\x0b\xc76\xe3\xb1\xb0\x1c[\xdc\xa0\xdf\x9a\xf2\x82\xd5\xfb(8\xf6\xd2\x821\xee\xbe\x01,e\x9e\xa5\x00\x8cE\x17\x18\x97\xe6Y\x85D\x19\n\x863\x0e\xa9\xd7\x8d\x83\xb7\xe6\xf9\xd0#1b4\xf6\xe3\xb2\xc3H\x88_u\xf0\xf2}\x94Kt\xfb\xfb\xfb%\xc3\xdfG\x8f\xb8\xf1\xe4\xc4\xca\xefK\x1f\x9f\x82\xe3O\xfcp\x19P\xf8[\x16\xb1\xaab\xedEBJ\xf3,5\x1b\xe9!b\x86\xbe\xd3o\xb1ST\x01\xc3\xb0k\xb69z\xb4P\xd3}\xfb]\x13\xa29\x85v\xd7\xb4\x18\x8fU3\"|W\xb3|\xd0Z\x8a6t\xabC2!>\xaa\xb16e\x9b-\xf6\xa2\xae\xab\x9bvW4\xae\x8a\xfd\xe6}\x98\xeb53\xee/\xca\x90\xfex\x9a\xcd\xdc\xd2\x01\xf3\x01}G\xd4I\xb6h\x11%\x9c\xd1\xa60\x83\xc3`\x93l/m\xa2+\xf1^.\xcal\xc3\x18\x9e\xee\xe4?\x99\xd80t\xe1%\xfb\xaf\xc5]Y\xc4/\xb4}n\xb4\x1d\xb1\xf7\x9eC\xb4\xb1\xe1b\xef\xaf\xda\xc2\x8a )0\xc1f\x1c\x1f^\xbc\x80m\x17z@r\x91*\xdf\x81\x97\xf4\x96\xcc\xa9\xe7\xafH`wiR?*(\x0f\x1c\xbf\x82/f\xbe\x85\xc3RR\x81\xab0\xba \x81&\x1eY\xd3\xdc\xd8\xd3\xd6u}g\xd8)iVPR\xbe\xf5M\x94\xb4\xde\xf0w\xa2\xa4\xf3(\xbbhCI+\x83i\xc1K<\x84\xb4\xeaG\xa1%\xad\x8a\x1aG\xc95o\x0e\xbd\xc6!\xad\xa7\xaa\xdb\\\x87\xd1|\xf1\xdd\x86\xaa\x1a\x1aie\xee\xc4M\xe0n\x85\xf5[\xe7\xc4\x89\x19\xd9l\xd3b}0\x0f2y\n|\x92<\xc8\xe2Ic\xfc\xd8/\x9b:)*\xf5J8\x16\xd5\x10\xf2q\x16\xe6j\x80\xb9\x18G\xc5(N9\x93T5}8\xab\xde]\xd5\xd9U\x86&_j\x8a\x82ZWO\xea[\xd9IiV\xce\x99/\xba\x19z\xdd:^3b1\x88\x9c8\x1ew\xfb\xe4D\x1a\x85\xde\xad\xa7\xc5\xf7\xedM\xa5|\xab\xf8.\x15}\xf8cW\xad\xf4L\xf9\xae\xd4\xd9\xdaS\xea+\xe5\xcfx\xa8\x07\xcf\x8a\xe5x\xe2\xec*\xdd\x0b\xb5\x99\xc7u\xf4\xb7\xcd\xdbHHg\xf7\xf7\xdc\xbe\x8f\xa1y\x8b\x8d\xd5\xcc\xaeD\xe8K^fw\x85\xd5\xba\xd8`\x9e\x95\x0b\x11\xd6\x19\xd6Dp|A\xbfh\x8a\x16\xe1YI\xaf\xb8\xb5\xd3v\x10\xf6\x01\xa0\xafL\x8b>\x9b\xb4\x12\x8dGM1G\xafY\xfb\xc8\xda\xbc\xc1\x8a\xcdV\x10Y\xaef\x91\xd74\x8a\xf1Y\x90\x17p\x95\x89rrn\x8cjw\xd4\xfb\xf6\x04o\xf2C\x14\xf9\xfd\x8b\xb5U\xe2#S:X+\xda\x839\xab\xc0\xe7\xfe\x1f\xdcx\x80\xd1'u%\xc4\xfduI\xe7\x16|{=\x8e\xbe\x14/\xc08/\xc3\xe9gg$y\x191\xde\x0d\xc8\\\xdb\xe6t\xfbp((\x9fS\xae!\x0c\xcd\x0c\xcb\xd1\xe0\xf2`:\x11\xabC\xedtr2\xc2]\x82\x05\x99Y\x94\xe8\xcb\xba\xaeQ\xe1\xacH_ZQr\xf2\xf7\x87@\xa1\xdc\xd1:\xf7f\xc9\x8d\x0d\xba\x93.\xea\xa6,u\x95\x12q\xb3[\xd8\x81\x15gur\x19e\xc1\x1cmu.\xc95\x05\x12\xdeI\xcbk\xbc\x84\x95\xfe\xde\xad\xaf\xbb\xf3{\xc5Buv\x9a\xcf\n\x8d<\x85\x8dg\xa5i1\xean\xa7[\x14\xe8\x9d\xcd\xba\x93n1S\xab&y\xc9ugw|\xed\x85\x11\xd2\xe9\xdd:OZ\xf7\x1c\x96\xf0\x02\xee\xd8\x1f\xf4\x1f\xb7\xd2\x1c\xe7\xa2\xde\xcet9s\x072\xe0\xbb2u;\x9dPp\xe2b\x90'lW]\xd3\xe4:_\xf0\x1b\xe6/\\\x82o\xbb\x7f\x05\xb1/\xb1t\xe7\xb6`T\x0b\x86N\x19\x13\xbfw\x16\xc7\xdb\x91\xf0\xf0;\x9a\x863\xa9cc\xf4\xf4\x0f\xa1q\xe0\xf44W\x82\x15hZ\xd2<\xfc\xc9\xdcy\x99\x1e\x0c\x15\xd1H\xec\xf7\xc2=\xdfN(\xdaV\xe4\xf1\x1c\xdaW\xdet\xcb\x11]D\x84\x07u\xdc\x0c D\xb3W\x13T\xd0\xadH\\\x8b\xdb\xf2[\xc1\xd3\x8bi\xa2\x9d\xc6Z1N+\x03\xa6N\xa4\x1f=\x82%w\xf0,\xaf\xbd_^{\xc8Cq\x84Q\xb8qp\xf2\xea\xed[%\x9eL\x02$\xa6\xe0\x87)\x8d\xd71E\xc7\x87\x04\xc5\xad<\xe8\x9c\\\xda\xa4\x166\xa0\x85<;\x81\xed\xddf \xbb\x82\x15h\x80\xb0RA\xf1\xa4\xdeP\xa9d]\x1f\x1a\xc5\xa8\x0b\x15\xe8Yxp\x94\xd6\xc3z\x18\xff\xd5\xd1Fa,bAQqv\xa0\xcc\xc3\xce\xc8\xa1\xe4\x17\xf2\xb8v2d\x0c-\x03\xa0\x98\x02\x82@\xc4\x92\xb1Wrhn^\xd0\x87\xdd\x9d\xcd=\x11+U}i(k\xb2r\x8e\x15#\xb7J\xfb\xaeE\xde\xe9\x90\xde4\xdf\xaca\xe6 \\B\xc0DL\xf8[F\xcfds/~\x08\x96G\xd4Id\\\xf6T~\xbd\xbfg27>,\x02Y\xb2\xe7\xc5\xafr\x13\x9c\x13\xc1*\xe2\xeb\xfd=W\xeb\xb3\xa7\x18\xa0\x8a=\x93\x91\xaa\xf2'9\xbb\x86o\xca\x1f\xe5\xb6KB\x8cL\xc2\xcd\x07\x8a\x81\xc0\xfd\x80\xce\xdf\x8a:2\x97 \xe7\xdf\x0d\x95O\xf9\xd3|\xe8\xb8v\x052\x88rE\x171\xccG\x8b\xea\x08\xf5\xa7\xd4H\xa8e\xaa!\x10O\xf7,\xf7'\xf2\x17eB\xcb\x97S\xc3\x04\x86b-\x11\x93\x86\xdd\xaev\xe5\x97s\x93t\xf2\xdc$EZ\x12_3#%$V\x11\x82-\x86\x17\x10\xb1?<\x04[\xea\xf8\xd3xf\xa7-?i7\x9c\xdc\x99\x7f\xd5\xad\x1f\x1b\xb1p\xe8\x96\xd9P4\xfb\x95\xd5\x1a\x89%\x95\xb5$X\xa7C\x8dOA\x91\xc9!r\x8a\x8b\xc3\xfc\x86>\xa7\xa0~\xa8P\xd7>\\d),\xa2\x8c\x9drQL\x1f\x94\xc9\xa1He\xf0K\xbf\x9e\xfa\xe0\xa7\xbe1kA\xd3-D\x8b5E\x94\x89\x07\xf46\xa5\xe1\xdc\xa9\x83\x8fo\xea1\x90\xf2|Xg\x95\xe5\x90\xc8\xf7\x85\x8d\xfdI\xf9\xa9M\xe3`\xa5\xccb6?}\xe9l\xea\xf1\x81\xbf>c\x81.\x98h\xe4\x94B/V\xa7\x81tL\x1c$\xf2l\xb9\xc8\x16\x0bN\xba\xeb$3,\x93\xccX\xfc\xf4\xa2 [\x85\xa5@\xa7\x05\xde))\xd8\x07K\x9a\x9e\x84\xfezM\xd3&\x00\xd7\xcc\xd5\xeb{\xb1\xa3\x0c\xd7U\x95\x06:\xd9\x1bD\x00\xf8m\x85c\xd8\xdb\x11\x11p\xc4\xadKi\xb6\xc2:\x80\x1d\xe7\x1b|?w\xcf\x86g\xf1Y\xf8\x7f\xfe\xb7\x9aU\xa0;\xf0\xc39\xbd=^8\xcah\x90\x8a\x1f\xa4N\xc4\xef/\x0c!\xab\"\xd8@2^\x06\xf2\x06\xf6\x9b\xc2\x13\xd8\xe4\x9c\x87^X\xc3q\xc3`0\x00\x1c|o\x1fv\xf4RJ\x1bw3\x04\x91/ A\xea\x90 \xf0B\xc5\x0d\x85\xbd\xfab\xd0\x10#X\x1c\"\xc8\xf8F\x052-\xa0\xe2\xabP!\x0c\xbe_\x01\x15\x81Q\x99\x84\x87\x98\x00\xe7\xea\"\xee\x8aX\x98R\x02\xaa\xa1\x84\xe4\x95\xa1\x01x\x8f\x07\xcc\xefUkAO\xb3\xe6=\xe5\xbc\xe8A\xf7\xf7\xaeJ\xa0\xd4=\x94F\x9c\xfb\xb5\xe6\xe6UB\xf6u\xbb\xda3\xbe\xd8\xfa\x8caE\x0e\xe2\xb1\x1fr\xe1\xb1x\x86\xd1\x92\x1f\xe3U9\xe3XH\xca%\x186)\xa7\xa0\x04(\xd7\xf5\xd8\xdc\x04%(\x9e\x8b\x02~\x05\x82;\x10\x85r|VP\x03G\xa8\xa8x/c\x0e5\xd4]j\xc9tNi\xbe\x92h\x8ev\x953Em\x9d\x9d\xc6\xb1\xa3 \x87\x93\xa4q\xb7_\x81\xf5\x95\x1f\xce\xc7\xc5}n\xe9Y\xae\x90\x1d7\x98w\xd4t\x9e\x98D\xa2\x94\x8b\x00\xca\x07\xbb\xfb/\x82\x00\xfd\x9b\x11\x02\xb9c\xde\xb7\x85A\x95\xb9\xfe\x97\xc3`E\xd6&\x18\xe4\x8e\xb6\xdf\x16\x04\x15\xd7\xd0\x7f=\x08\xd8\x08\x1f\xb4\x13\xc4\xedA\x13\x00|\x19\xbe\x07Ek\xabm\xf0u\x9e\x8cR\xc8\x01&h\xca\x98\x9d\x8f\x1eA\xf7\x7f\xc4\xcd\x1d\xf2\x02E\xb9\xd3\xc5 \x15\xcf\xbaG\xd5\xdf\x9f\xde\xbd\x13\xbf+\xbcv\xf3R7\xac\xb4\xad\xb9uL1\x10Y#\xe0T\xcc\xc1Q\xdaZ\x8d\xe9:\xa6 \x0d\xd3\xb1\xa6%\x8f\x84Q\xe8{$h\x98\x01\x14\xbdv\xffG\x93J\xb3~5\x12D74\xf6HB\x1f\xd02\xaeK\x9b\xc6\xb3\xf5\xfa\xc1\x8d\xe3\xa2\xb6i\xdc#+\x1a<\xb4q\xfd\xc8m\xeb2\xa7\x0b\x92\x05\xe9Iz\x17\xd01tsxu\xff\xe5\xfb\xfd\"\x8a\xfe\xa9\xfb]c?\xd5z\xbf\x97\xf6u\x1agT\xdd\xc7\xa7\xd5\xdf\x1f?\x1d\xca}\xcd\nv\xd4\x97\x17$HJ\xb5\xdf\xd4\n\x0e\xde\x9d\x1c~)]\xb0m\xe4\x87\x0c\xfc[\x12\x90\xeeT\xa4\x13\xf81\x8a\x02J\xc2\x19\xef\xa3\x96\x9cN\xb2\xa12\x03\xed\x17\x93\x1b\x1dQ0&\xc8\x95\xf6\xa00\x91\x00\x1a\x83X\xa56\xdbXG#Z\xf5\xc5\x81=\x96\xeb\xdd\xa6/\x1d\xc9h\xd7\x97\x9c\xd7\x1b\xc3\xbc\xfe\x1d(\x88)C\xe2\xee\x03\x93\x9c\xd6\xb2\xa7\xed\x14\x03\xd54D\xda7\xb4\xa74$\xbfUI]\xa4#u~\x98\xfe;P:\xae\xb4Q5\xd8Z\xcc\x89\xccn\xf5\xba\xa8\xde \x95'q\xa3ylw\x83\x1bB\xf1[\xd4i4C\x19\xad\xdb\x13y\xdesY\x8eN{\xbdh\xe6\xf6\xa1;\x14\x99\xfe\x8d\xe29j=z\x82!\x8b\x1b=\xbfp\x14\x17\xbcQ\xb5+S\xfb\x90\xbby\xf4z\xa4\x9fb\xe6\xb7\x959\x8ev\xddA\x1a}b\x02\xe9+\x92PG@\xa2\xb1\x9a\x0526\x1c\xab\xc8\x85b*\x15I&aO\x0f\x02\x9f$4\xb1\xe1\xe2t\xb3\x0f\xdd\x0b?\xecjR \xe4\x98>\xedC7\xf2R]\x95\x1c\x8e\xd3\xd1\x10\x13Uy\xbaZ%\x88OG\xbb}\xe8^\xd2\xdb\xee\xf7\xbd\x0b0\x8b\xb5\xe5b_\x08\x90\x1f\xe9\xf2\xf0v\xedt\x7fw&\xe3\xe9Fo6q&\xe3\xe1\xfdt\xb4\xf1l\xc6\x8e\xd8\xf3\xd9\x0f\xae3\x19\x9f\x9d\x0d\xe4/VaJ\x0fgXY\xa4\xc4\x9d\xdc\xe7\x15z\xda\xc7\xc5/\xd1\x8c3\x19\x97\x0f\xf2\xa2\x07^\xf9\xecl\xe0L\xc6~\xb8\xb8\x7f\xcb\xfe\x1d\xbdq\xefyQH\xc2\xfb#rt\x7ftp\xe4\xba\x7fV-\xef1.?&\xedU:\xa7O\xcczB\xad\xf0\xbc\x08\"\xf2]\xc4gU\xbf\xcdoF\x18\xa5u:\xbe\xe0`\\\x95\xf9\xa1S\xd5zo\xf6\xcdy\x1am@\x189B\xd8\x07\xc9G\x08\x03\xe4\x1a;2H\xa3w\xd1\x8d\xdc\xd2\x8c\x97\x80 ;\xc8\xc7 b\x00Og}\xe8\xf66\x94+tdX^\x8a\x13\x86\xdf\xa1\x16\xccH\x1fX\xcdE\xc1{\x08\x0b$\x98\x88\xc3l\xf0\xe1\xf8\xe4\xed\xe9\xdb_\x0f\xcf\xdf\x1e\xbdy{\xf4\xf6\xf4\xaf0\x96\x8f\x8e\x0e\x7f:\xa8>\xea\x0eB\x12\x16\xcd\x1d\x91#\x18CZf1\x04is\xd2/\xe33\xa22\x9f\xf1\x86!\x8e\x95\xd3\x10\xb6w1\xe74\xa2\x07t\x95JN#f\xaf\x9b9\x8d\x10~`|\xf3\x18\xbf(\xa3J\xff\x9dx\x0d\x873\x1b\x9d}\xee\x8d\xa1\xe15\xda2\x1b%Bi\xc2\xf8P\xaf\x1c\xf2\x93#r\xc4\xfa\x82\xe4\xc6O\xbdKp\x8c\xca\x03\x8f$T\xd5D\x8e\xb5\xb5@\x01\x0e\"\x9f^<\xe2\x8d\xe5z\xdc6\x8d\x1d\x1d\x1cY\x1b\xcb\x15\xb5\xad\x1a#G\x1a\x8dl\xe1\xf8l\xdcnB\xeb\xf7=\xa0\xc5v\xfe7\x83\xd6\xdb\xa37\xdf\x0eZo\xc3E\x1bh\xd5)\xd0\xf7\x83\xd6\xc67\x05\xd7\xc67\x85\xd7F#\xc0t\xbb\xbdx}8\x18j\xc6\xa2\x9cKe\xbe\xb7\x0f$\xcf\xe95\x810?\xa6\xba\xb4\xcb\x0e\x14\x1e\x083\xb4\x11\x93\x7f\xd6mC\x8d\xff\x8aj\xfcW\xce\x1e)\xff\xb9\x1b\x8e\xe9\xc7\x9f\xbb\x8d\x1c]c\x8b\x93\xca/\xc6\xbb\x9d\xa6\xb3\xfb)\x9c\x9d\xa5\xb3\x9e[z8V{/\xfd\xe0\x0c\"/\xf9\xc1\xe5\x1c\"\xb6\xf0\x83\xf3\xdf\xf7\x0ec\xc6\xdcj7\xa5\xf7\xdd\x89\xebNJ\xac\\\xab\x1b\xdd\xd4_\xd1$%+\xa3)\xcb7\xe7\xd6\x8a\xb0\xe5\xd1\x80\xdeRO0my\xa9/K\xbf\x03\xbf\xa6\x89\x87b\xb85Y\x0b\xf7L\xfd\xb9\x97\xdf\xe0 \x0b\x96\xcf\xc3\xcd\xb9\xb2b\x12j\x9erW1\xf3>\x8c\xe3(v\xba\xafIJs\x9fZ\xca\xcat\xc1\x99|\x91W\xb4\x97NG3\xce\xfc\xf4\xd2\xe9\xe6\x8c{-\x11\xfesk\xd6\x87N:\xdd\x9e\x15f\xb0\xf4\x06X\x07\x0e\xfbo\xf0\xe9\xf4\x95#\xc0\xa0\xf3\xc3\xf3E\x98\x8a\x1ek\x82G\xa9\xe8\xa5\xd3\x9d\x19\x8fO\xd1K\xa7\xbb\xb3>\xa4\xd3\xbd\x99\x89\n\xa3\xca\x15\x03\xdfN\xf7f\x82+\x1d\xf6a\xcb}\x0e\x8b\xc2\xa7r\xeb\xb9\x0b\x0b4\xf0\xd3Q)l\x87u\xb7\xa8\xd3?\x13z\xa5\xd3g3\x04<[\xb3]\xba\x0d?\x80\xb3;\x84\x1f\x10Z\xc3\x19\xf4\xa0\xe7\xa4\xd3\xd1h\xc6\xd0l(\x95\x80\xb8 \xea\x9b\x1bkW\xc4g0\x82M\xc1\x9e\x85\x8bQ\xd5\x1f=\x02o\x90\xd0\xf4\xd4_Q\xc7\x1b,\xc57\x1760\x88\xa6gCa?LR\x12z\xf4x1\xc6\xeeZph\x96M\xc6\x88\xfa\xdb\x93cA\xd7\x8d\x8e\x00\xdf\x8a\x10?\x90\xcc\xf0\x04\xfc\xdf\x8f\xc4t_\xbcP\xac\"L\xe6O\xdf\x0e\x0c\xc5\xcf4\xbe\xab\x0c\x8b\xc3hg\xdb\x1d\xfc\x88\xb6\xc2E\xaf\xe0\x11dd\xd8L>\x97\x1a\xb4(\x18\xba\x07?\xbez}\xf8\xe6\xa7\x9f\xdf\xfe\xe5\x97w\xef\x8f\x8e?\xfc\xd7\xc7\x93\xd3O\xbf\xfe\xf6\xbf\xfe\xfa\xdf\xe4\xc2\x9b\xd3\xc5\xf2\xd2\xff\xe3*X\x85\xd1\xfaoq\x92f\xd77\xb7w\x7f\x1f\x8e6\xb7\xb6wv\xf7\x9e>\xeb=\xd9?\x0b\xcf\xe2\xee\x03%x\xae\xe4\xf9\x1e+\xf6\xc57\xe0\x06J\x1d5^\x8e3\xfa\xe8\x1b\xae\x88B\x1e\x030\xe4\xbeC\xa1\xed\x9e\xa8\xe3 i'\xb9\xfcK\xa5\x19;\x8f\x06\x08\xbb\xdb\x8d7G)\xbc\x80a\xab\xdb\x1f\xd4\x8b\xefj\x1f\x1b)a\x0c\xff\x01OQ\x01]\xc6\xfb\xaf>:\xa3\xb2\x02cz\x16\x9f\x85\xfb3\xa1\xc60\x03=\xb2.K\x86\x91\x80\xb4\x8f\x12\xf3r\x07\x86;\xa1\xdc\xd3{\xf8\x1c\x18\x94\xc9sH{=\x17R\xf8\x0f4\x05\xe3*\x13~\xa5\x13\x88L\x11\xf0\xf2%\x8cv\xe1\x11l\xee\xec\xb8}P\x8b\x9fVK7wv\xe0\x11$\x8c\xec'\x98\x0e\xe4\xc5\x0b\xd8\x85{\xc8rt\x88$:\xa4\xba\xe3U,\xd1\x10dH\\\x82\x03\xfb\x01v\xf1\x9a\xe6\xab\x86\x04c\x18=\xcdu=\xe5\xb6\x86\xda\xb66E)\xbe*|\x0f\x19h\xd4:\xdb\xf9\x9b1\xa6\xdfX\xc4\xd1*\xff\xe2\x04(\x16 \xbd\xc7\xaf\xdf\xd4~\x15C|0)\x87S\xd0\xf67'm\x11:\xe6n.F\x82b@>\xd2Hk2\x0b\xad1`\xe7V\x05;q\xe7g\xd3\x08\x97\x8f-\xfa\xee\x16\xf2|J\xe9\xa6\xaet\xb7R\xb8\xbb\x05\x8f\x00Mr\xd8\x8c\x9c\x88a\xecS\x17z@\xa7\xa9\xf9R\xb5\x8c\xa0[\xfc\x0e\xf1\x1b\x8f\x08\xc6\xb0Y\xa0k\xa9\x9d\xa1\xae\x9d\xedZ\xe1\x8b\x17P\xedqw\x1b\x1b\x1e\x15\xc8\\j\xb9>\xc0\x17/j\x0d\xefn\x97\xdb\xebC\\F\xbc\xfc\xd7Ws\x10f\x89\xb6\xa6\xff+\x87\x9c\xacs\x08F\x85\xe1\x03\x99\xb4\xc8\xe2\xd1`\xf0\xea\xf8\xca3\xdfd\xcf_\x91\xd7\xb8*\xdcx\x1cP\xdb~\xe3\x97\xd2A\xee%\xccv_\xf8\x9c+\x83\xcd\x1ed\"uh0MgE>\xb0\\]\xcb\x01>\xeb\ny\x15\xd5\xb2q\xb3Q\x87\x88\x89\xe3\x87\x10\xdb\xadx\"\xd1$Jj\x16\x8eB\xd6\xcf\x1a\xbb\x96\x9f/\xb2\xd6A\xe6\xa7\xb9\x0fVM\x98!$\xf9\xa1H\x9a\xc1\"\"[\xb4\xca\xdf\x91#Ny[~!\x83S\xd7O\xfc\xb3\\\x8dZ\xec\xfa/\xdc\xc4k\xe2\xc7\xc9\xbf\xd7.\x16\xbe\xbb\x96\x9dJ\xc4\x8c\x0e\xe2\x98\xdc9\x99t\x81\xcco{\xd8\x16\xce\xbel\x0bg\xb8\x85\xf5[7j\xbdu}\xf4\xe7G\xc3!\x85\xe2^\xd1\xbb\x84\xbd]u\xf17\xb5B\xa6\xe9\x8c\xd12\x7f:d\xe7\x0c\xfe\x9d\xcd\xfe\xe9hoXG\x1dW}]\x0d{&R\xd1\x18\xd6\xd1/\xad#\xd1\xae#1\xad#[-\x82\xab\x15\xd5@\xdc\x07_\xc0.\x12\xb0\x8b\x10vF6\xc6\xff7\xd8\xc1\xe5s\xfb\x81\xfb8\xa1\xc6\x0bt\xbdw\xe1\xf7\xdb\xc4\xd6#\xd6\x0f\xc1\x10\x08L9\xc9\xc2\xbe\xb0D\xccIm8Mg\xd6\xfd\xf2mQ\xdeD\xe9\xff\xed<*\xffH\x9ed\xe1\x9c.\xfc\x90\xce\xbfR\xfbb\x81\xc3\xc3\xa1\xea\xd6\xf2\xcd?T\xa6\xbb\x8e\xfc\xb9\x8c/f\xeb]'\xcd\xd94\x7f\xffn\xae\xd1\x7f$Ob\xba\xa4\xb7\xdf\xe5F\xe5\x01\xca3\x1f\x03\xd5`\xbd6\xe7S\xeeW\xa7\xe7\xb3\x19\x11xr\xf6\xc4\x99.\xfd\xd5\xec\x07\xf7\xcfO\xe4\x05\x87\xbez\xac 9\x00\xd2z\xfa\x89\xd4\xbe\x0f\x8dw \xfc\xc2C\x9a\xf2\x86\xd3\x11\xcab\xf2\x16\xe1%\x93K[\x9c\xd8\xac'4\xeb\x9d\xa6\x85!P\\\xb2 *\x9a\xa9\xb5\xf2\xbd\x8f\xe1\x7f\x0e\xc4\xe56Q\x80\xceo\xe1\xaa\xd0-\x19\x13\xf5\xc1\x001\xbc\xd0*.H\xd3~U\x96\xf9J*\x913j\xbc\x83\xb6&1\x0f%(\xd6\x05a\xb0\xea\x01\x1d$Q\x16{\x14z\xac\xc0\x08X:X\x06\xd1\x05 \xc4\xd5_o\x1f\xbaK\x1e\xb9\xaf\xc8D_\x11\xf5\x9fV\xca3\x9b\xd2\xaf\\5i\xd6.\x94_\x08`\x1f\x9eU\xc8 \xec\xc3\xa8r\xad\xb5\x80}\xd8\xda\xac`\x03+\xdb*\x97\xcdY\xd9v\xb9\xec\x92\x95\xed\x94\xcb\xaeY\xd9^\xb9l\xc5\xca\x9e\x96\xcb\x96\xac\xac2\xbe;\xd8\x87\xed\xcaX.XY\xa5\xdfsVV\xe9\xf7\x06\xf6a\xa7\xd2\xc7!\xec\xc3n\xa5\xbd[VV\x99\xdb +\xab\xf4\xf1\x8a\x81\xaf\xe2\x93x\xc5\xca*\xef\x1e\xb0\xb2\xddr\xd91\xe6/\xacT\xfc\x80\x85\x95^N\xb1\xb02\x95\xf7\xb0\xafA\xfa\xe1\x18\xbaggC\xcdQ\xb4\x87O\x88\xe6\xc9S|r\xa1y\xf2\x0c\x9f\xa4\x9a'#\xdeQ\xa8{4\xc2G\xd7\xbaG\x9b\xf8h\xa1{\xb4\x85\x8f\xaa\x0c\x1d\xfbl\xf2\xa1Wu\xd1\xec\xb3\xb5=\x86\xc7gg\xdd\xc7\x9a\xb1\xf3\xbe\xce\xce\xb4\x9d\xf1\xde\x8et\xcfv\xf9\xd4\xceu\x90\xda\xdc\xe2\xad\xbe\xd3?\xe4\xad~\xa8(\x1a\xcaU\xdf\xb2\xf3\xba{\xd7\xedC\xf7\xaf\xec\xbf;\x9a\xe0w\xf1\xe7\xf0\x84\xfdA\xb6\xb7{\xcc\xff?b\xff\xe3W\xfe-\xc2\xaf\xfc\xffc\xac\xbdX`E\xf1\xe7\xcd\x9b\xeeL\x17U\xe3\x8f:\x9d,\xb4\xb6\x95\xabhn\x82\xb2ou-\xeb\xf3\xc8\x19\x9b;;.\xe7\x85n\xbb<\x80\xeff\xb9\xad\xdc\x1a\x19\xab\xef\xee\xecl\xc9\x172\xf1\xc2\xb6\xe6\x05=\xd7\xde\xe1\x8dlo>\xdb~\xb6\xbb\xb7\xf9l\xc7u\xcb\x11q\xbdhNa\x1d\xf9\xa5\x8c\xb9<\x00\xe2\x8a\xdc\xc9L\x0c\xcb\x98\x92\x94\xc6<\x19\xc3\xf0\xf6\x8d\xf8\xe8X\x07\x1c\xe8'1\xd0\xa7\xe5\x95-\xfd\x92\x87\xde\xd9YW\x84u,\xe28\x0e\xf1\xfd\x8d\\Vv\xa1\xa7\x08p\xba\xc8%G\xf5\xc5R\xa2X\xf3x\xe1y\x98n_\x06\xc9\x961\xa7\xdf\x93\xf4r\xb0\"\xb7\x0e\xa6\x0c\x17\xc5\xf7\xf7\xb0\xe9\xcah\xdfW\xfe\xfamxM\x02\x7f\xce\xdbR~\xab\xa1\xb9\x17At\xf3\x8e^\xd3\x00\x99X?9\x8a\x18L\x97\x0e-\x9e\xb8\xd2\x17I)\x93\xbd\xa4w\x81\x08\xc1]:YMLu=%p\x93Ym\xe1\xdb\xff\x8f\xcf\x06\xcds(\x12\xa2pk\x0d\x9e\x845\xae\xdc\x1b\xa4\xf9\xd5\x0c\x8f\x04\xe0?\xe7ARG\x90\x89\x86X?\xac=\x91\xe4!\x18\xa8>\x97}\xc8xg\x19^\\\xab\x8f\xa6\x19\x1b_8%3\xd8\xaf\x06\xc3\x05E\xcd]\xc6gGA1\x868\xd8b\"\x0d%s\xdc\x89\xe2\xf4\x17z\xc7\xb3\xcf\xe4?\xca\x01\xddC\xfa\x9b?\x97\x01\xd5\xf3_\xf7\xf7\xf0T\x86C\x0f\xa3\x8ft\xc1\xdb\x10_\xd5\x16\xc2\xe8U\xb4Z\x93\xf4=\xdb\xce\xbc\x8eR\xa0\xd6\xf4\"\x86\xdd\xe8zu#@\xa9\x14\xa85\xbf \x84\xbcLOd{\xe5\xf0\xb6\x1cu\x1e\xd3`\x85E\xe4\xfaR\xb6F,\x99g\xec\x0d\x92Ra\xaf\xc0K\xb3\x84\xce_\xabOJ\xb1\xfet4\xe2\xa3v3!\xd2\x8b\xdd\x14\xc1~%\x9al\xea\x8at\xc6\xfc~nc\xc4\xf1\x9a\x8d-Q\x83\xa5\x81\x0f/ y\xeeb\xda\x064`\x97\xd9\xfa\x85K\x1f;\xfb\xc1w\xd1\xec\x87\xfb\x8a\x88\xac\x16\xa2\x83\x04\xb3\xbd\x95\x9e\xb0.ydW\x1f\xad\x86\xf8\xf7P\xd5C\x9c Q0\x14x\xdd\xdb\x87\xc8eC\xec\xedW]\xcb\x04\ngV\x10\xbd\xb6\x85\xe3\xd6\x87\xdb\x95\xe4\xf2\x07H]k\xdb\xef\xea$Z\xca\x1c\x08\xb1\x05\xc3>\xfe\xd5\xbe\x8e\x9f\x8c\x0dmm\x96\xa3T\x8d6wQ~\xdf\x1dU\xc3`m>\xdba\xbf\x18\x87RxP0\x96D\xfc\xba\xbf\x87\x9d\xbd\xad\xed\xed\xf2{\xec0\xdeb\xbfx~\x8a\xbc*+\xdf\xadt=\x1am\x8fF#\xebD\xfef\x9c\x08N\xb1\xd2\x0f\xb6\xcc\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebM\xf1\xf5\xd2:\xac7\xc6a=\xf9\xfd,\xfc\x01dT\x13u\xb9\xe57\xb6\x91\xfe^\x0f<\xf2#cs\xcaE\xbf2Y\xa5\\\xf43\xe3m\xcaE\xbf\x01\x06\x99\xae\x0f\xf2/\xf6\xd0\xebl\x1c\xbej\xe7\xd4\xd1\x84B \x0c\xe5\x0b\xdc\xe9<\xeeG\xfd\xe9{N\x07j\xe5\x8cS\xfd$\x12\x92\x96r\x96TV\x12\x83\xf3t\xde9\xfc0\xca\xb0\xec\xbc\xf8z[|\xbd)\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebe\xf1uU|\xbd+\xbe\xae\x8b\xaf\x1f\x8a\xaf\x87\xc5\xd7e\xf1u^|\xbd.\xbe\x9e\x14_\x0f\xc4\xcc\xcc\x89^49\x1f\xd2\xbaJ(7y\x18r\xba\xaaP\xd9^\xcfv\xb3\xd5\xf9$\xc8\xae\xd2\xbf\xafD\x05\xfaM\xaf\x04f+\xf7\x96\x8d\xfdoZc)\x13\x83\xfd\xc5\xc3\xd4\x0e\x12 \x9f\xe7rd\x1d\xf6a\x01hQ\xcdX\x15\xe4Ya\x03\xde\xe3\xe9\xf2\x92[\xf1vA$\xd2\x9c\xbeg'\xc3\xac\x8f\x88\xe9\x1b\xf4\xdc\xb9P\xc1@\xf4\xb5\x00\xd1n$\x1c%\x0e\xbaq\xa8\x7f2\xb7&\xc6\x85\xdcM\x00\x13\x08\xe1%<\x83\"\xed\xd2o0\xc6\xf2\x9fa\x0c\xbf\xc2\x98\x8f\xb2\x13\xf1\x87\x7f\x871\xfch%m\x7fU\xa8Fu\x85\xe8`\x9e\xadJ\xbc\xb7\xe9.\x84\xdf\xfe\xa6\xd5\xdb\xdf\xee\xe3\xc7\x86\x9b\xd9N\x85!\xe3\xa1\xfd\x19H\xde\x16!\x08\x14W\xd3\xc7\x18\xa0\x1dz\xec\x9b\xfeF\xd9\xcf\xb9\x0b;\xe9\x94\xfc\x17'\xed\xf3$\xc6\xbeH\xdeL\x14\x85\xa3\xd1eY\x80\xb0Q~\x92\x1f)G\xe97\x02\x94\xdcYd\xc0H}\xa6\xd9\x90\x87D\xe3\xd9\x82\xccv\xa8 p\xa2\x9ah6\x9c\xe5\x19H\x15T0\xc5n\x04\xeb\xbd\x0d@\x9e$\xa9\xbe{\x8d\x96\xaf\xe8Q\xfd\xf7F?jM\x06{\x90o\xff\xd8\xf8\xb6\xc0\xed\xc2\xe7\xe51z\xbb<~\xdcuM\xf8\x0e\xb2\xf5_\x9b[\xbfg\xad\xff\xc2\xf3\x04r\xbca\xcd\xfe\xe4|dE\xbe)M\"\xb6\xfess\xeb/\x8d\xad\xb7\xc67(\xcb\xee\xb0\x0fO\x9c\xb3\xb0\xe7:\xd3\xdf\xcf\xc2\xd9\x0f\xee\x93\xa5~W\xa9\x1f\x94\xc9\xb3\x9a|\xe1r\xd9DP\x96\x0c&\x90\xa1\x9aA\xb8U@4\x08H\x92\xbeeo\xf0\xfc\xe0\x7f\xce#\xd3\x0d\xfb\x98\x7f;u\x0d{Z\xfd\xa0\xa8~\x16\xcaP0Ct\xffd$^\xfe6c,\x88\xc9k$l\xf5#b\x0c\xc6\xaa\x0b\xb01\xc1\xa7\xfaam'\xc0\xc3\xbc5O\x04\xc4\xc9\x15O7\x1b\xc6\x0cyJ\x18>\xcb\x00o\x80|\xb6\xd3\x13\xe81Y\x0f\x13\xdc38\x88\n0a_\xc7<\x9f\x1d\xf4\xe0\xcfN\xc0\x85I\xbc\xb5\xb0vf\x8ey \x05*\xfa\xc6J\x9f\x19z\x12\xb7 \xdb\x7fk\xc4\xf6\xc7\x98\xac\xa4\xf9~O~rA\xba\xe0\xca\x85\xa4l\xe4\x91\x84\xce\xb4\xc2\x08\xbd\xe4\x02\xda.\xa0\xe7\x0e\x13\xd7v\xb7F\xc8\x04\xd4\x83\x95\xfa(\x15\xf3wv\xb76\x87PD.\xdd\xda\xdeb\xc26*\xa6\xfepF\xc3Mt`Na\x83\xb7\xce\x93\xc9l\x88\xd7z\\\x86c`c\xbc\xdb\x98\xeb\xbc\xde\x0b\xab\xd9\xde>t\x90\x93\xf9\xe4`Zh:\xf5g0\xe6\xa7\xdc\x1fz\xb74\xf5#\xafSmk\xe6\xf2\x8c\xa2\xfa\x86D \x08\xf3\x92\x95t\xba\xfej\x1d%\x89\x7f\x11\x08\xc7\xf71\xf8BU\xc9\x8d@x \xb2n\x13c\xf7\xd9\xb1\xcb\xf3\xbf\x983K\xc1\xbe\xe4\xd7\xa4\x02\x10\xe3\xafin\x01\xe221)\xc5\x95\xd2\xea/B\xb6\xdfx\x8em\xfd{\x9b\x9c\x1e\xe5\xcf\xd8(\xba\xbd..\x97\xdc\x94\x1b\xfc\xb09\x0b\xbb\xd6\x19\xfed\x14\x84MCf\xb8Q\x90\xd4\x8d\x11\xa6\xf7\xb4\xf6\xf1g-\x14\xd1\x1aAq\xbcV\xc9k\xce\x1bTl\x87UE\x96\xe2CY+:\xae2\x90\x85*\x9d\xc0\x0b\x08\xd8\x1f=\x07\x89\xa2\xa3\xe31)oJf\xee\xa0\x88s\xc0P\xc4\x1b\xe4\xf6\x06\\\xcb\xdd\xf1*5\xba\xdc\xbc\x80aR\x9e9\x90\xd3XY/Z\x80\xfaR\xdeN\xder\xa5#F\xfal\x82.\x95\xea]\x98\x80\x87\xdf\xc7\xd0\x9dt\xfb\xe0\x0dr\xbb\x04\xdb\xb1\xc2\xdaXp\x95\xa8\xb8\x1a\x99b33>\x0e5>N\xdfh>\x91\xf1\xbb\x00\xb5K\xee\x13\xa1\x94\xb03sa\xa1\xe2\x06\x0d\x80\xfaA9/\xa9\xf5\x85\x11-\xca\xf4\x99'\xe8\xf7D\x82\xfe\xc7/1k\xbf\xe0\xfdc \x9eG\xd7i\x82Wo\xfc\x04\xe6i\xc2\x10\x02\x8f\x9bN\x9a\xf2\xb4\xa6\x8b\x19\x9f\x99\xf9\xe41OY\x8a\xc3\xb1\xb6\x8a5\xfe\xb4\xc6&K+\xe6w\xec\xfa\xd1\xffU\xd2\xf1\xf1M_\x95\xd9\xd5\xfb\x83|\xc8a\x9fo\xe5\xb0\x0f\x9d\x11F\xc1\xc9\x7f\x0e5\xd9\x82\x13\xc8\xb1\x847Q\xcd\xdb\x9a\x13?U\xa4}\xc1#\xc4\x95\xa5\xdcjVS\xd6|\xd0\x87E\x1f\xed?\xea\xdeR\x0cAQ\xd9\x91?B\x17\x1f\xf9\xa4\xae.C\x85\x9d\xa3h(\xc5\x8dXqI\x92\xcb\x04\xa1\x8b7f\x85o\x06\x02\xeb\xd1#\xb6\x05\x95\x02T\xdb\xdc\xdf\x83P\x84K\xa5\x02\x12\x86\x97 R.\xfb\xa8*u\x85Z\x8aVn_\xa6\xc1\xcc-\xa0\xdf\xfd!\xa6\x8bs\x86\xe3\x15\xf1\xderQ\x8d\xd3\xc2\xb6;\x9a\xc6q\x08\xba\xf2}\x9eR\xdc\x00W\x97\xaf\x1c\xcf*\xab\xde_\x8aU\x96\xc7\xcd\x04\x9cN\xcd\x96I\xa3!\x92\x9f\xb2r\xb9\xaf.\xb0\xc5\xa2\x95\xdf\x1c\xa7\xc4\"\xe0]V\xeeYM\xb9\xf1\x91\xd6H\x1f\x04y\xa5\xe8\xc2%~w\x9aT\x80J\x0e\xd9\xe2$\xd0\xb4\xa3\x145\xb4\xa8\xbe\\\"u\xf9u\xe7*K\xd0\x92\x80\xc0\x05O|\xc3\x13\x98\xdb\x8c\x10\xa1\xa4b\xe5,\xc4e\xe9\xbe\x8d<\xe72\xd8\xc8E\x95=\x135\xc4\x823\xc8\xf8\x0c\xa9\x1d\x0c\x89$\xae\xb5D\x88\x89p\xca\x18\x9c\xcb\xa9?\x9b\xf5\x05\x8d\xe1\x96\x80\x19O\xcb\xce\xffq\xbc\xc7\xdd\xd5b\x07 \xe4\xc7\xbd\xc1\xbe\x15\x1e\x15L\xf0\x90\x89\xe0e\x1dO,\x1d\xd6,\xe77\x9f\x88 N\x13\xc6\xa8\x8a\xaf\xd0\xc5\x8d\xd7\x93\xaf0\x0e\x83S\x81\xd2\xdc\xd4\xa9$|\x1a\xc1\x17\xf4<.z\x1eC\x97\xe1uo_\xed\xdd$\xedHZk\xa2\xee\x89}&g\xe4K\xda\xe2\x14t\xe4QNG\x90\xc9\xe3\x9d3\xd9\xac\xbe[m[\xb5b#\x914\xec\xd3\xa0y\x9fz-\xf7i5\xa7\xb6\x97\xa3o%\xa7vV\xbf\x8a\x9f\xa0\x00\x8eR\x93\xa0`\xfc\x18\xc2\xbb\xddn\x1fq\x02\x95 S\xb6?\xbci\\`3N\xb63\xe2\x87_\x01\xd22N*\x8dq\x04\xcb\x8a%f2\x96q8\xc8x\xa3eF\xbd\x0e\x17\xaf\xb099\x14R\x1e\n\xb2\xe6Y{lR\x8f\xf5\xee?X\xaf \xeb\xbf\x11\xa3\x9a\xd0\xa9\x0b]\x05\xa9\xeac(\xa8\xa5\xf6`.\x1d-e\xf0~\xc9iRx\x00\xdb03\x93\x98i\xc16\xc5l'4\xd9\xe8\xa8\x84\"D[\x1d\x95\xe4)$4B\x12J\xcad\xa6%1\xc1\xb7\xba\x1b\x0c!\xc4W\x9e5\xb8Xy\xfb\xc2g\xca\xc2\x13\xce!\xcd\x9a\x16\xfd\x9fAF\x1a\xd6\x88\xb4X#\x85\"\x84&\x8a\x90\xf3\xbe\xd3xV\xdeA*1\xf091h\xd8\x8c\xae\xd0U\xb6\x82;Q7\xdc\xb4+S-7\xc2\xbe \xf0\xad6\x9cY\x94\xcc\xb7!\xd7(\x89@\x03I\x93\xf4X2\xd5k\xf4m\x84\xaa*-\x0b\xb98F.\x02\x8a\x9eT\x10-\x801/|,i\x048W$Kz!K/'\x95\xf9\x87G\x8f\xf8\xc5\xa4DbT\xe0\xd6\xc1]+i\xe2K\xca\xab\xc1\xc5N*\xc4\xce\xeeKu=\xfed\xee\xa8.\xd2\xe9D\xb5\xff2+\x03sm\x94.\xd4\x8c\xce\x1d\x87\xc7\xbb\x94-\xa3\xfb\x97\x89~*\xb4\xb3\xbe\xa2\xb9\xe5c'O \xa6\xd1\x80\x98}\xec7\x94\xc0\x14\xa1zO[Xy\x15ia|\xdc\x9c1\xf7ui\xbc\x85\x0fy\xbd\xd4\xed\xf3ce\xe0'<\xb4C\xaa\x89\xce.?Uf851\xc3\xd4I\xa7\xfeL@\xcd<\x12{G\xd5X\x11\x15K\xb8\xc8\xd6y\xc4y\xeb\xb0\xee\xc4\xca\xd0$\xe2dZ\xb9R\xf5\x0d\x97\xa8\x90\xaar-\x82,\x9a\xfa\xd3p6\xabL+\xd5\x98\x03\xe6\xe12b\xbb\xd2\x8fR\xab\"\x9b\xb5s\xc43\x02\xb0S\xe8\x1fUOB\xa9\x97V\xcc2q3\x84\xc8\x03\x85}6GZ\x9c\xb0\x13\x08%\x8b\x85\xda\xcbR\x0e\xf2b\xe7\xe5n\x9fr\xfbR\xaadh\x1f$dA_W\xac\x15,\x96{|\x8a\xf1\x80\xde\xa64\x9c;\xf5}\xc4m4\xc7@\xca\xab\x85'~et_\xe4\xf6\xa3z\xb1Z\x07,\x0d\xe9\xd5\xac\x07x\xd9\xd6q(\xecC\x8f\x9aC\xcaX\xa3\x99\xf3h\xe1\x97i\xba\xd6\x04\n\xe7\x0fo\x12C\x0cq\xd1\xdfS\xc1\xec\xd57T\xd1\xb8\xae \xd9zC\xf3\xdb\xdb[\xf6\xf6\x17\xda\xb1+-l\x8e\xec\x0d,\xa3\xf5%\x8d\xedm\xec5Lr\xe1\x07\xa6P\xebzs\x04\xeda\":\xf9\x16\x98%\x1d\xca\x1a\x83\xc4\xd47~d\xbc\xde\x99S/\x9a\xd3O\x1f\xdf\xbe\x8aV\xeb(\xa4a\xea(Q:\xcfzh\xb2\xc0\x18+\xcd\xceM\x07\xdc\x7f\xc2_\xdc5!{NT\xaa\xf1\x05$\xed\xd1\x9e\x8c\xdcQ\xdc\x0f\xa1\xcb;R\x9d\xcd\xf95\x0dZOO\xd0#\xde\x85X(6\xd1H\xf2\xd1#\x10G\x0f\x0dkS\x8cP\xb2\xdbG\xb6\xa0\xfe\x94'\xf03\xd0\xbe\\\xf4I\xd1O\xf2\x8f\xc8\x0f\x9d\xee\xa3\xae[!o}H\xb9go 2U\xb0\x94.\x92\xd1@b\xfa\xfb\xfe\xe4\xd1\xac\xe7\xeeO\x9c\xe9\xef\x8f\xb8\x95\x04\xae\xfa?>?G(\x86V3\x01i0\x159\xe8\xb4i6\x8fb\x156\xabg\x0b \x9b\xe2\x87\xfc\xba\xd7\x89\xa7\xfe\x8c\xb1\xc9-x\xa6\xf8a\x08^\xf8FnU}\x1a\xb9o\xe4\xde\xee\xb6\xd67rk\xb8\xa9\xf1\x8d\xec\x1e\xde\xae\xa9\x97\xd2\xb9\xaag+W\xcb\x14\xdf\x97\xf2\x93$\x7f\xe2\x87-\xc8\xb8\xe1\xcaL\xdc\x94\xf5a\xdd\x87y\x1f.\xfb\xe8\xc9\xa8\x89\x01\xba2X\xe2.\x0d\xe5w\xa8\xf9-\xafSE\xb5Yl\x8a\x92?\xf4\xe9\xdd\x9ar\x9fh\xa2\xe6R\x06\x950\\\xe8\xcf\x10\xb9+\x03=\x02\xe1\xddK\x1du\x04.\x04\xec)\xec\x8bh=\x1c\x10)W\x1a\xd3\x01Y\xaf\x83;'\xeeW#>}6\x0c\xf0\xdc\xech\x8f\x16\x12\xb0\x01\xe6\xfc\xedJ\xbc\xa0Kn\xb7\xf2R\x90\xa1P\xdei\xa0\xe8\xc0Z\xb9f\xcf\x16\xad\xc6t\xa35\x97dC\xa2\xb8\xb3t\xbbj\x01\xce\xb9\x9ac\xe3\x90\xed\xe0Z\xb59\xec\x83\x08\x05\x1fe\xa9s\xd3oa\x94\"A\x91\xc2\x068\x08\x0f{\x00\x88%L a\xdc\xdaB\xbep\xed\xd6\xf3s\x00ga\xabn\xdf\x06\x88\x1cZ\x1d\xad\xe7\n2\xa0Av\x00\x13\xb8`\xaf\x8c\xf9\x9d\x8e\x8a-5 M\xdf\xe3m\xd3\x1a\xe81\x97\x01\xea\\\x0bz\xb6Bl,$^f+\x1a\xa6 \x0f\xe4\x9f^\xfaI\x1fo+\xa8Ei\xc2^V\x90\xad\x10\xbf\x9b\x97\x0f\x14t\xe5\xbd\xd4\x91\x80 $\xab\x02fkmC\x9f\x1d\xd3\xc2\xb3\xd1-]u5\xea\xcd_8\x97m\xe4\xf0\xfa\xc6BSyG\xd7\xa8\xdb\xaf\x8cT{r`\xaa\x0bF\x85\xee\xefQFrB\xae\xfbA:\xd9a\xe7-\x99\xfb\xe1\x92g\xdap\x18\x95\xec\xae\xc8\xedo\xc4O\xbbty\xbb\xb5PS\xe5~p\xa2{#\x97u\xff@ *\xdd\xeb9\xe1-]B\x0f\xab\xac\x05\x82\xe43\xa1\xaf\x0f\x9d\xd8\xa9\xc4\xcd\xccs\x08\x15\x0c\":`\x8c\xc1#\xe1\xe3\x94\xcd\x0dH\x02\xb9|\xd9\xa9\xd8O~\xd6\xef\xd0\x1a\x80\xc6\xa0]\x14\x14-\xba\xe7\xe7\xd8\xfe\xf99R\xe4\x7f|\x86I\x15LZ-\xa89\xe8\x16\x8fC\xe7l?s\x1di\x15\x85\xe2`\x9f\x81vw\xe8\x0e\x16NUp\xee\x832\x0c\\\xbc>l\xba.\xeb\x7f*\xc3\xd9u\x1c\xaa\xda\x8c\xa1\x9aM\xe78\xd5\x14y*\xd5G\xcd6\x9e\xb0*0\x8cl\x87\xa8\xebK%\\\x8aFx\xf9\x9c\xd0\x1cM\xd0@\xf6\xb8\xae\x06\xad\x9a\xc1\xfe\xe33\xbf|\x19\x8b\x83\xa6\x82z\xde%\xf5\xae\xc6\x8aEv\xebM\xab\x92\xf5\x02\xe5\x8b\x8d\xdb\x82\xe8\x1b\x8f\x1d\x0fC6\xf0:\x0f\x1b\xd9\x97\xed}\xde\xdf\x18\xc7\xff\xcc}\xe0~oV\x1a2p\xed|E[\nx\xab2\xb4\x90\xad\xf7\xb4I\x88\x9d\xad\xbd-m\xdc\xa1\xa7\xba\xb0C\xa1\xb3]\xad\xcd\x07\xfft\xbbZ=\x10\xe5\xd5\x83\xc0\x13\xbdVG\xb9\xe0\xf5w\x86\xa5\xd3\xf0\x99\xf2+\x1a\xf8![\x1a\xa7\x82U\xeb\x1a\x19Z\xf8\xe1\xfc\xf5\xf1\xfb\xa3hN\xc7Ui6\xa6\xe1\x9c\xc6c\xf0\x07\xfc[e\x92\xe1*\xca\xc24\xd7\n\x1d\xa4\xbc\x11\x7f\xa0\x7fR~\xfb\x9a\xc6\x89\x1f\x85cH\xaa\xad&x\xc3v~\xc1\xe8\x05\x9d\x7fZ\xcfIJ\x931d\x83r\x89\xe15>\xd2\x93\xec\"\x8d)}\x1b\xa6\xd1\xab(L\x89\x1f\xb2y\x14\xc2\xabB\xa1\xf5\x91\x1a\xcf\xcf?\x1e\x1e\xbc:=\x7f}\xf8\xeb\xe9\xf1\xf1\xbb\x93\xf3\x9f\xde\x1d\xffx\xf0\xee\xfc\xe7\xe3\xe3_\xce\xd1CWk9e\x7fM,\n{\xbbU\xc5\x8ar>\x87\xe7iL\xa9.i\xf8\x92\xa6\xaf\x82(\xa1I\xfaV\x10\xe47q\xb4\xe2\xab\x12\x0f\xccO5\xba\x16\x8aK\xc6*\xc8\xcaM1\xc3@\xb9b\x18\x88e\xa0\xf3|\xcc\xfc\x02\x921\xfbR/\n=?`\xcb_\\h|\xaepH\xeboAL\xf6\xf6\xaa\xd1\xca$5\xa9\xeewNM\xf6\x9e\xea4u\xac\xbc\x1a\xdd,\x13\xe5U\xaa$\x88\xe1\xd3j\xbf\x81(\xaf\xf6\xcb\xe9\xc9\xde3==\xa9\x11\xc35'3\xa3*Y\x9a\xf3\xf2\xcd\xea\xe1w)\xcaG\x95\xf2kQ^\x9d\xeeJ\x94W\xc9\xe4R\x94W\xc1p'\xca\xab`\xb8\xe0\xe5[\xd5\xf6\xcfEy\xb5\xfd\x1bQ^\x9d\xef!*\x18\xdb\xf0n|{6\xc4\xce>D>\xeeP\xb8p/\x07\x87\xd74L\x0fW~\x9a\xd2Xl\xf0\x8f\x94x)\x96\xbf\xf3\x93\x94\x864vVn^\xf7C\x90-\xfd\xf0\xe7\xecB\xd4V\n\x8f\xe39\x8d\x1dR\xad\xfb)\xf5\x83D\xd4.Q\x0bga\xab\xcaj\x9c\xc6\x84\x91d\x12\xa0\x80\xde<\x82\xe4\xc7\xbb#\xb2\xa2\x9a\xfbC\xf69\xf1W\xeb\x80*\xd5\xc7pS\xa72\xecs\x18\xa64~G\xc9u\xb9v\xa6\xaf\xfd\xea\x92\x84\xcbrMCv\xb3\x13\x1a\x94\x07<\x86s}\xcd\x1f\xe9\"\x8a\xe9\xdbp\x9d\x95\xab\xd7]\xb4>#d~\x8e\x92\x02\xb8\x020?\xb1\xb5\xf3\xbd\xbc\xf8U@\x92\xc4\xf1\x8c\xf5O\xe9mZ\xa9|\x89\x95_\x1f\xbf\x97\xd7T\xa2\xaaR\xf2*\n\x17\xfe\x1235\xb4\xab\x99\xb4\xaey\xc1\x17}\xb5f%\xe5\xb1\x96\x0b\xdf\x10/\x8d\xe2\xbb\x16\xb1>\xa5\xc2\x81\xde\xc0\xba\x1a\x98\xb2\x80\xa68\xcd\xf3\x0d!\xc8\xf5iL\xc2\x84\xf0\x1e\xee4\x15\x7fd\xbc\x80\x1f.O\xd2\x98\xa4ty\xe7\\c\xa5\xda\xd8\xc3k?\x8e\xc2\x15\x0dS'0K\xf3\xf8\xed\x8b\xc8\xbf\x99F\x08\x00\xfb\x8cw\xa9\x03\xa8Kb\x9flxY\x1c\xd30\xed\x8eu\xf7 \xbc\xca\x9c\xa6\xc4\x0f\x12k\x15?a\xac\xcf\xdcV\xe7\xd2\x9f\xcfih\xab!\xfc\x02mU\xae\xe8]r\x19\xc5\xa9\x97\xa5\xd6\x01\x05\xe4\x82\x06\xb6\nq\x14\xd09M\xbc\xd8_#\x07e\xa9J\xb24\xf2\"FMRj\xab\x87\x92\x97\x1d\x06\xf4vM\xc2y\x03\x9cH\xb2\x8e\xd6\xd9\xda:=zm\x9f\xde*\x9a\x13{\x05\x19\xb5\xbc\xb1R\x82d\x8c-\xaf\xadj\x14\xfb4LI\x13,\xf1\xce\xfa2\n\xe64\xb6V\x8bi\x92\xd8\xc1\x14S2\x8f\xc2\xe0\xce^\xe7o\x99\x1f\xdb\xdb\xe1\xd3k\xa8\x13\xc5\xd6\x1drM\x82\x8c\xae\xc8ms\x1d\xdf\n\x1d\xac\x13F7\x8duRzk\x1d\x10I\xa3\x95\xef\xd9j\\d\x89\x15t\x81\x7fm]\xef\x98\x06\xf4\x9a4\x10\x0eF\x7f\x16\x0b&\x9f[j-crqa\x87?\xa3\xc2\xd7\xb8]i8o\xe8\xd4\x8b\x02\x8f\xf1\xe1\x0du\xd0P\xae\xa1N\xb2&\xd6\xe5\xf2\xa20\x8d\xa3\x06\xca\x884\xe6\x82\xce/\xac\xe0F\xcf\xe8\x15M\x12\xb2\xb4\x82}\x11D7id]8F\xf9\x82\xa6\xfe\xa2\x9b\xd0:\xecu\x94\xf8aB\xadP\x8c\xa3\x9bFH\xc7\xd1M#\xa4\xe3\xe8\xa6 \xd2 M\x13\xff\xef\x08\x99R\x8d\x8a\x00\xf6\xfa\xf8\xfdA\x9a\xc6\xfeE\x96R\xc6\x1a\xb2s\xaf^E\xf2\x1dy\x8d\xbc\xc2W\x9c\xc2\x8aFgX\x95V\xc4\xd5\x81^\xa3\xb3\xb7W\xad.e\xb0\xaap#e\xb0\xaap\x83q\x08\x9f\xf5a\xb4\xd5\x87\xcd\xbd>lmV,[\x990\xb6\xb9\xa9 \x14\x1d\x0d<\x12~J\xe8\xeb\xe3\xf7\xa8O@\xde%\xf1\xd9\xcc\x91\x0fE\xbd/O\x11Q~\x19\xc5\xb5R\xda\xfcjS\xf3\xc8\xc3+\xda\xf7\xd1\x9cb3\xb2\x00\xa4\xc3\xa0,\x18\xa8U\xab\xca\"~\xd3Zm\x9c\xf1\xae\xd5\x01\xb2\x07\x1d\xee\xb2\xe7\xd4\x0dk1\xf5\xbbHv\xc1V\x9f\xb8F\x05\xcaz \x14C\xac\x06\x9a\x07\xbd\x0dS'/u\xdc>\x8c\x86.\x8f\xe7\xa7\x11?+cu:\x1e\xc8HT\x0b\xc0\xec\xbe\xec\x0b\x86\xe4\xabL\xf6Z\x13\xa6{\x95G-\xc5t\xbc\xaf\x84W\x03\xe35K\xf5\x96\xdax\xd2\x17\x85\\\xa1\xe3\x00\xd9g}I\x12:\xffH\x97~\xc2\xf8X?\n\xe5\xb6\xd0Vg\x9f\x8b\xec\x82\xf1zc\xe8F\xa1\"\xb9X\xbc\x10<\xb2N\xb3\xb8\xfe\xca+^^\xb7\xe5\x87\xfa\xde\x96\x9f9]\xd3pNC\x0f\xd9\xdai7\x8d\xd6*\xda\x86\xf3n\x1fX\xe1/\xf4\xee\x03\xe3\"\xc4O\x862b\x98\xf8\xfb\x03IR\xda\xd5$\xe5\xab\xf7\xea\x95\x9a\xffN\x80\xac\xce\xa1\x1d,\xcbo}#p\xfe\x18d\xb1\x80\x92 \xb2\xaf\xa3\x9bP\x0f\xe7_\xe8\xdd\xa7\xb5\xf8\xfe>\xca\x12\x8aU\x1f\n\xe7\x93\x94\xc4\xdf\x0be_U\xba\xf9\x02X\xe3{\xdf\x15\xdabd\xff,xs\xc9\xf6\xfb\x03\x9c\xf7\xf3\x05\x10\xe7/~W\x90\xcb\xb1}C\x98\x97J*\xe3\xbb\x13\xaa\xbe\xbc07\x9b\xba\xd0^\xa5I{r\xad\xb2\x83[C\xe7C\xb3ZD\xd7r\xf7\xa2G\xc5\xab\xf2\xe1\xabk\x18gim:o {\xd0D\xd3S\x9b\xe3\x105\x19\xa8\x97@k\xa9\x84ki\xb7\x00\xd7\xc4\xac\xb3F0j\xb2\x1c\xd7ymhL \xafe\xde\xb7\x01W\xa0\x94G!:1\x05A\xe9\xceIJ\x90\xbbIa\x02\xe9\x80\xfd\xac\xdeI\x14#b]\xdd\xe4,Y}t\x87\x92\x8f5\x84\xa6\xcd\xfa\xba\xd8\x0e\x1e\x86l\xb3\x99FC\x13^\x82\xbaT5\xf2\xd6\x18\xf3k9\xa8\x9e z\xe39]\x17\xec\xbczX\x07\x87\xe1\xbc}\xf3\x82Z<\xac\x07\xfeR\x13\x9d\xe0\xd7O7\xdc\x96\x10\x85\x8fG\"J|u\xb8h=\xd7df\"1M\xd9\xc4\"\x92\xd3\xa3G\xca\x8e-\x07\xba\x16\x031\xf7\x8e\xab\xe1\xf6AI\x18^\x16\x08\x00\xf9a\xf6.\xc6q\x17\xe1{kMp\x1c\xab>:\x0c\xd1j\x8f\xe7\xa9c\xf2\xcd\xcd`I\xd3\xd7$%\x8e\xcb\x81\xb3\x0f>\xdawEQ@\xe7NTu\x05`X\xbd\xc0,\xc4E\xa5\xac\xd8\x03udO\\X\xf0]V\x8bsbp\x05\x95\x97\xd9\xe7Z\x7f\xfb\xdc\x92GDH\x91m\xb7qn\x8c\x07\xc4\xf3\xb2U\x16\x90\x94\x9e\xdeD\x1f\xd8\xf1\xfb\xdaO\xd6x\xf9\x9c\xe0E\xca\xc2J\x8dn\x1b\xf6;\xa9\xcf\xbf\x83\xd1\xa2\xe6U\x13\x9fo\xb6\xe3[m\xc7s\xa7\x1a\xb0F~\xda\x1c\x1c\xf2\x93\x1fF7\x97\xbew\x89\x8bp\x0d\x13\xbe\"cp\xee\xc4u\xd8\xaa\xa9\xabBd0\xf7\x95\x1bv\xe3\xfa\xea\x1b\x04\xe5&\x02Q\x1dc_\xdf\x15C\n\xf5\xef5\x86\xd9S\xf6]3M\xc1\xad\xdc\x82\\0d\xb81\xad,:5\xd4\x17\xb6\x88\x0c\xd7\xf1\xd8\xdc\x04\x07cj\x05\x14\xc0)\x1b\xbb\x11z\xfe \xa6\x01% un\xdc~~\xe0\xf5\x0d\x01,\xf5\xae\xce\xeda\x06\x0fBu.O\xb6Z\xabo\x8e\xe1\x8f\x1eA\xa7\x85iD\xe5m\x87\x0e\xbc4\x0e~\xa1w\xb8\x1ayJ~\xd8\xd0\xd1\xa2\xcf\xd1s\x80\xf2\x83\xf7\xba\xf9\xbe\xb9t<]XD\xa8\xb1\xa8\xf8*\x1b \xba1\x8b\xdcQ\x1a\xda\xd6HX\x01J\x810\xc1\xaa\xac\x96\xbc\x0d\x1d\x9c\xdf\xc4d\xbd\xa6\xf1I*\xb2~\xa4\xe5\"\xf3\xd5\x01gT0\xd0\x980\xd7\x0d8\xaf\xd3\x0d\xb3\xd5\x05\x8d\xf3\x95c\x0b`\x19\x0b(\xacw\x97\xe7\x8c\xc3\x03\xcc\xdc3`\xf4\xb5%Ms\x93TG\x9cyn\x112\x17\x1d\xefk\x15\xb4+\"?\xfa{\x8dz)\x9eB\x81\xd1\xe1D\xafp}\x8f\xa5_)*\xef=\xd595\xab)\xde#q\xa4\x8a$\xe2V\xb4i\x197\xd5@\xe0\xf8\xe5\\L\x17\xf5\x85\x928\x18\xd60\xd7\xe2\xce\xaf\xcfV\x00\x13\xa0\x0e\x0f8\x92]\x04\xbe\x97SMd\x02\xe2\x01\x99\x17n\xa8\x07\xc9G\xba8\x8d0m_\xbf\x1ab\x0bp\xe1B.\xc8\x0d\xce\xa3\x9b\x90Vc\x96\x16K\xc8\xc4\xb7\xe42\xca\x02!\x06\xb5\x81\xa6\x84I]r\x03\xa9\xae\xac]a\xe4\xd0\xa7\x06\xe8c\xb9\xc8\x86\x16\xd3\x85LL)\x86_\xbf\x0f\x89\x8c\x03\xf0\xb5\x03P.W\xecX\x90\x13\xcb\x94\x8f\xc3\xc7\xafb\x1c}\x08\xf1m\x0c#\x9eG+,\xde\x8e\x90\xc0\xf1\xbdY\x062g\x89\xdb\x80\xf7\xff5\xc8\x8a<;\xe2fLW\xd15-\xa3';\xf9\xbf \x82~\x075\\)\xe2\x80Q\x03iP\x8a\xfc\xe6\xc1^\x0b\x13G\xedR\xa7\x91Xh\xf3\xfb\x1e\xe6\\\x9a@d\x89\xfc\xe2\xac\x8d\xc1V\xd8\xe73_\x81 W8z\xe6!\x8b\xf0\xa0\xfb\xfb\xe0\xb5\xc4\x94\xb9h\x16D\x92\xe4\x04\xc6|\xb05\xf5G`\xb8\x96\x07\x19uD\xb4\xe2Y[\xf1,\xad\\WlZ\xc9\xa0 P\x88\xd0\xb8S\x0ds\xc9ov\xf0\x9d\x80S'V\xcc\x17\x0c\xd3`]WVq_\x17\x95\x17\x04dV\xfa\xd1 \x81\xc60\xca\x96\xd1\x08\xd0\xaf\xca\x83\xa2\x9c\xb6\xb3\xe2\xbc\x7f\xf6\xab:\xa8y\xd9\xce\xa98D\x95{\xa9\xeb>\xac\xf8&w\xfb0e\xbf\x1a \xa9\xfe\x8c\xcf\xb0\xf4+\x0f\xd2Z\xf4\x1bv\x8e\xca\x00+~\x14\x0e\xde\x7f:9=\xfftrx\xfe\xe1\xe3\xf1\x87\xc3\x8f\xa7\x7f\xad\x9f\xafj\xf5\x9f\x0fN\xce\x7f<>~wxpt\xfe\xeb\xc1\xbbO\x87\xf5c\xb7Z\xfd\xe8\xd3\xfb\xc3\x8fo_\xe9\xaag\x9a\xea\x1f\x8eO\xde\x9e\xbe\xfd\xf5\xd0\xf6^\xa2y\xef\xf8\xd7\xc3\x8f\xef\x8e\x0f^\x1f\xbe\xb6\x0d0\xd0\x9eR~\xf2*K\xd2h\x95k;\xc6\xf0\x91.\x0fo\xd7J\x94\xfc\x94&\xe9\xe0\xc2\x0f\xe7NHo\xc4c\xa7\xfb\xbb3')\xb9'\xb1O\xdc\x0d\xcc\x01\x14\x0f\x0eNO?\xbe\xfd\xf1\xd3\xe9\xe1\xf9\xd1\xc1\xfb\xc3\xf3W?\x1f|\xc4\xbc@?\xfc\xb9\xab\xcb\x1ao\x0f\x85\xc1><\xb3\x8e\xd6\x07\xb9x\xfc\xea\x92\xc4\x185\xd1R+I~\xa1w\x96\x1a)\xc6\x1c3=\x0e\x82\xe8\xe6M\x16\x04'^L\xa99\xb6\x0c\xd6\xc3\x08%xjx\x96\x0e\x03\xcbp\x13\xcb\xa3\xbb\xd03w\x9f\xa5\xd1+\x11\x12\xc3\xdcD\x96F\x1f\x02rglE\\\xec\x9b\x9f\xd3 \xf8@\xe6s?\\\x1a;auN\xd6\xc4\xb3\xd6\xb9$\xf1\x89e\xd5\xbcK\x12\x04\x14-\x1c\x8c50\xb4\xc7\x18\"\xb87\x8e\xd6\xb7\xc0\xc2\x0bH\x92\xbc}m\x7f\xceYLS\x8d(H\x8cA\x89\xbc\x88\x01\xc1\x8cV^\x14\xa64\xb4@\x80??\x9c\xfb\x18\xe8\xc3^\xef6}O\xc3\xccZ'\xc6\xc1\x9a\x00%*\xbc\xf3\x13\xdb\x88\xa2xnFO/\x8e\x92\xe48\xf61L\x92\xa1\x0e\xb7\x0c2?\xa4\xa7\xbe\x05\xdey|\\\xc3,\xe6t\x81\x81 \x0dO\xfd\xd8\xdc\xb2\x08\x96c~9\xba \x83\x88\xcck\x91 \xf3\n1Y.\xad\x0bEC\x8f \x04\xc6\xe7\x8b(^Y\x1f\x1e\xd8\xe9\x14\xabr\xd8\xa2\x8f\xf74\xbd\x8c\xe6\xd6*G\xd1\xaf$\xf0\xb9\xff\xa9\x01 \xac\x1a\xe7\x0f\xcc-\xc5dE\x7f\x8cb\x8c\x16i\xa8sI\xc9\x9c\xc6f\xa4\xba\xa4\xfe\xf2\xd2\xdc\x05\x0f`d\x1c\xe4\xa5\xbf\xbc4\xbf\x1b\xd3\x85\xf5\xe1;b!`\x97\xe9*x\x13Y&\x96\xa6\xeb\xc3\xbfe\xfe\xb5\xb1\x86\xefY\x16\xd37/\x10\xden\xbd\xc7\xf0\x8d\xc6\x1a)]\xc6~j>\x81|3\xc4\xaf\xe8\xdd\x07\x12\x93\x95\xb5\x86\x15\xc9\xae\xfc\xd0d\xeet83ov*nd\xd9$e\xba]D(4\x7f2\xec\"~]\x19\x95\xea3\x08a\x08|\xda\xd7\xed\xbe\xca>3$WK\xbe\x052\xd5\xd0C\xe4\x87xVE2\x11\x9b\xf4\x99>?\x84.\xd9L\xac\xac\xe8\xa40\x9d\xe7\x89x\x04\x85r\xbas\xff\xfa\xffa\xefM\xdb\xdb\xc6\x91E\xe1\xef\xf3+`\xde9ij,)\x96\x9d\xc5Q\xe2\xf6u;\xce\xe9\xdc\xc9\xf6\xc6N/\xa3\xf6\xf8\xc0$$\xf1\x84\"8\\d\xbb;\xf9\xef\xef\x83\x02@\x82d\x81\xa4lgf\xeey.?\xd8\"P\x00\xb1\x16\xaa\n\xb58\xfa\xbe\xb7\xb9\xf2\x1e\xfe\xfd\xb7\xf4//\xdc\xdf\xae\xb6\x07\x0f\xf1Q\xe8\xa5\xdbX\xbb\xca\xcf\xc5\x9a\xa2\xee\xd6\x04\xd1DL:\xfd[\x91\x8ab\xf8\x8af\xde\xd2M\xdb/>\x01Ug\xb3\xc9yU\x1f\xbc9\xf1\xa8yVH\x94np\xe0\xd6u'\xe1\x82\x1bkd4\x0e\xa2\x88%b\xbb\x08\x9c<\x9b\x9c\x93m\xc2\xc86 g\xbb\xc8\n/B\x1a{\x00\xbds\xfe\x9cx\xa3\xd1\xf3\x81\xd4\x0c\x1d\x874\xcd`\xe1V\x17\xa6\\\xda\xd5O\xb1\xe6\x90\xce\xb5B\x98\x9a\xf4\xf4\x87\x9b3\xba\x80H\x0d\x8e\xf4\xb7^?a\xe7:`\xb3\x8c\x16\xadgkH\xb8;\x1f\x8c\xe7<9\xa1\xde\xd2\xcd\xeaF\x80E/br \x83~\x81\xfa\x89\x1b\x8d=\xd1x\xb1m\xd3\xc1s\xb3?\xa2\x87Z\xdfQn\xe42\x0f7\x99,\xf1\xfc\xd7\xfb\xd8\x7f\xfb\x96\xcdm_\x82\xaa\x1d\xedkT+7nI\xcd\x1cTC\xb7\xaa\xd0x`\x86#~\xf0\x808r\x06\xc05\x03T\xb2\xe5:)\xcb^G\x19K\xd64\x94\xe9\x83\x8a\xde\xbc\xa9\x13)p\xb3 \xcd\xe1\xf3r*\x82\x14\xfe\x8b\x06\x8bO{4\x0c\x19S\xf5\x83\xa9G\xc6V\xaa\xda\xea2\x13%\x0eI\xa3\x12 \xa2\xc0\xf6\xbf\xdb\x98\xa3\xdc\xaf6\x7f b'\xe1\x0d\xd5c\xb7U\xd5n\xb6\x85r\x86\xc3\x08\x16+20\x99\x91\xad\x0c.\xc1x\x81\x8c\xc8\xa4\x18 ]\x1c\x9d\x9c\xb1\x1c7\xa3\x9ez(\xf9AK\xbc=\xb5.d?\xcb[v\x18F\x15\x87\x1d\xc1Jf\x9c\xbc&UX\xec\xbaH\xef:7\x13[U\xfa\x9e\xe0\xe4\x05\xc9\x9e\x13\xbe\xbd= \xd1\x8c\x9f\x8bI\x98q\x04\x05i\xf5\x9c\xe6\xdcO\xc9\x8c\x9d\xdf\xef\xb6\xb3\x1c{XP\xa4\xbb\x1ec\xa0\x13\x89h\xed\xcd&C\xf2\xdd\x0b\xc9\x1f\x16\x02\xec\x03'Kr\xe6|\xff\xdd\x908/\x1e\xca\xcc\xef\x9d\xf3\xe6\xc1(J;/\x80\xb1\xfc\xde\x01`\xf5\x1b\xf1\xf4=\xdb+a_d\x97\xdc\xbf\xf9\xfeE\x96\xe8b\xc9\xf7/\x1e\xaaDK\x1d^\xd9\xda\xf5\x82\\\xaf\xc2(=\x00\x8eo\xfa\xf0\xe1\xd5\xd5\xd5\xf8jo\xcc\x93\xc5\xc3\xdd\x9d\x9d\x9d\x87\xe9zQ\xb4~\xbdhT5G\xa9x\xe7/\xceT\xf6\xe8\xf0\x85\x1f\xacU\xcb\xe0\xd7y\xf38\xa4 \xa3\n\xfc\xc5\x8a\xc6\n\x1a~!\xd0\x1e\x0f\xa7d\xb6\xdb\x1c\x01\xddi\x8f\x87\x8b\x84\xe7\xba\x9e\xe2\xd56\x1a\xe2 \xd9\x82E\xben\xc4<`\xa1\x9f\xb2L\xd5P\xbe\"%c\x9a\xd0\x95.(1\x8b*\xa6_\x90BY\x82vAM`\xeb\xdc\x11y\xb7\xb0\x90\"wDn\xcacy\xad\x8bdyT\xe5!l\x92\x1e&4\x13\x9a\x84\xe7\xcc9\xcf\xf0\x9c%\xb3\xdcog~#\x08\xa0,0\xad\xbb\xa7,w\xfa\xcc\xf1\x82\xc4\x0b\x81\xc5\xf5\xc2 \xfe@\xb3\xa5\xf8\xed\xb39\xb8n`a\x18\xc4)d/\xc4\x9f`E\xa5\xaf\x07\x08\x80\xa2\xfe\xd3\xe4?\x13\xea\x07,\x02-\xdd\x15M\xc1\x03D\xac\xaaR72\xf0\x93\x877\x0b^\xfc\xd4u\x88\xc244\xebHddJ'\xcd\xb8\xf4\x0d\xc1\xae\xa5\x060\x84;8/(\x1b\xfba6\x07\x0f>\xc4\x1b\x12*\x7f\x99\xc1xk^N:i\x88@\x9c6\\\x9e\"\xf3\xda)\xa2N?p!\xe4\xfcEpV\xd4\x02\x11T\xe8?\xe7/\xa5m\xb5\xf3\"\x0c\xa2\xcf\xe4\xe1\xf7\x0e\x99\x12\xe7\x85\xa3HP\xe7\xfb\x17\x0f\xcb\xdfN\xd9\x95`<\x0f\x12M}\xa9\xe4C\xd9e\xd4\xd3\xed]\x0f\x01T\xc8`Qwoe~q\xe1BO\xeeW\x1f\x9d\xb8\x82(\xe6\x83\x99\x80\xab\n%\xfb\xd0\x0e/\xa2>\xac$Nl\xde\xc1<\xa2S,\xd1p@\xa3\x19\xc9z$=-\x97\xa8\xcfI\x8eK7R5\x85x\x9c\xc1\x86\x02\xa6\n[\xfa\xa4\xce\xbe\xaa0\x83\x0dW>\xb1\xaa\xbe\x9e.\xe3\x0cN\x1e\xd7;+\xe3\x0c\xee=\xae\xc3\xaf\xf1\x15\xa5\xc2\x0c\xee\xd4;\xab\xc2\x0c\xee\xd4 \x91\x1b\xd5\xfc\xfa`\xaa0\x83\x0d\xbb\x8d\x0b)\xb5\xd9{6\x18B\xb8\xc4\x9d\xba\n\xa4\x8a7\xd8\x18\xbe\x13U\xf0\x11\x14\x9c\xf8\xeb\xebB\xa2`r\x0b\xa2\x85\x16{\xf7\xa8\x10\xf9;\xe4l\x19\xa4D\xd0\xf6\x82c%W4%:L,\xb9\xbc!\xff%\xce\xa9H\x9cS\xff5Fn6\xfed\x7f\xd3\x1f(Ka./\xde\xa1'\x83\xb4Z\xfd?36\xbe\xc8\xe8\xe2\\\x1a\xd7(s\xcfl\xac\x97\x85\x1e)\x99jY\x0c\x8a\x1fu&{O\x1dA\x1d\x88\n\x87\xf6\xc1?$\x0e\x81\x0btA\x8f\xa9\x91P\xaa;\x84\xcf \x9c\xda\x96\xb2\xe5\xc0\x8b\xe1\x1a\xc3\x91\x0f\xf6\x89]M\xb4uO6\xfc\xc9\x0eHu\x11\x9b\xd9\xb6\xfa\xce\xc0\xa3\xa4\x15B\x8a\x94\x9fL\x9cA\xa5\x81p\xcf^1\xd158\xf72W\x14\xddu\x86\xb0\xec\x07\xed.M>\xb6x\xdc\x90N\xb6\x133P\xfd\x15\xea!\x19\xf1\x88\xa8m\xa6\xd9\xf8b \xa1!\xda[\xe4\x05\xac\xf2\x07\x0f\xf4\xcfRN#h\xb6\xd7`\x99#a\xa6\xe2W\x87 \xd3\x91\x9b\x0dI\x00>\xb2\x16L\x06\x8e\x85\x88\xc7\x1f\x19\xf5o\xdc\x81v\xa6\xe5\xbe\xc4\xee\x0e\xa0QQ\x9aM \x12\xeb\x99\xa0\xb6v\x16\x97\x9a\xa1:3\xa6\x88\xdf\xe7\xafVKQd\xb6^6\\ \xcd\xc7q^\xc6\xc1\x05\xe7\x92\xa2\xcd\xca\xcfd\xbd\x85*Y\xb7\xa7}i\xbci|l5\x8ey*G\xf0g\xe9\xca\x02\xbe\xd8^\xcd\xa7F5\x97\xb7\xa9\xe6\x1f\x8dj\x16\xdd\xd5\xe8_b5\xbej\x1ca\x19\x8f\x8f.y\x02w\xd3\xe2\x7f\xed\xcc\xcbx|L#i\x0e\xe0x4\x8aCzc\x05)\xfc\xe1h\xc8L&4\x0b\xbc\xcc\xe5|\x1c+\x0f\x85\x8e\xaf\x12<\xcc\xab`\xc6\xe3\x93U\x9c\x05\xe0K\x90\xc9_\x08H\xe4%7q&\x81\xf4o\x0c\xccW >\x9a\x9d$p\xa3\x0e\x91\xfd\x9a\xd9o8\xf5\x99/\xfd\xd6:!\xbc@\xc8\x0f\x0b\xe0[\x96Q\xdf\x04^\xa9\x04\xbc\x80\x8a\x9f\x04\xb0)\x12\xe4\x08\x1c\x96\xe7\xa9\x18\xb0X\xfcG\xb2\xe5L\xe1\xd3$2\x81\x88\x80\xfc Z _$\xa0X\xe6\xc4\xeag\x13\xe8#\xcdX1s \xcd\x98m\xd6N\x19\x03\xf3\x0b'\x85\x1f8\x80lQ*\x7f! \x19\x0d\xa5\xcf\xc9T\xfeB@\xf24\x06I\x8f\x93\xca_M\x90\xb3`\xc5t\xb4$'\x0bV,\xc7B\x1ae<\xfe\x89\x87\xf9\xaa\xec\xdd\x1a^m\xfd\xfb\x99\x06\x99l\xfe\x95\xfce\xd0\x11\x18 \xf6{c\xff^\x8f\xb3\x84z\x9f{\xec\xfd\x1f\x1aeK_\xcb\x82\xe0~\xfdR\x1f\x98{\xf5\x8b\x1a\xb1\xf3\x199 \xea3\xd5\xcc\xc2W\xbe.\xfe\xc8)<\xf4ft\x81\x1du\xd2\xd3{\x00\xba\xfb\xd6 ?\xeap\xc6\xdd\xb5\xcb\xeaMW@\x05>\x06\xb9\xa9/\x86%\xfeA\xba\x1bU\x0e\xdc\xd4\x1e\x01\xb9\x8f\xfc\xcf\x06\x96k\xe0\xcb\x84\xd1\xcf\xcd,\xd9\xb0u\xe03nm6\xcd\xfd\x00\xcb%\xa6\x0c=+]a\xdb\xfbp>$\xaf\x06\xe4U]\x1e\x93\x01\xb1\xd7Vx\x1c\xe7\xe9\xd2E\x86 \x1b\x92W\xb3\xec\\t\xdcB7\xb7v\\j\xac\xdd\xef\x8c\x9cH4Y\xe0\xcb[\xceI\xb0Z|\xf3v\x0d\xc9\xb7\\Us\x9e\xac\xee\xb7\x0b\x1f\x19h\x88\x11'Q?Z\xbap\x9a_\xae\x02)\xb4\xd4\xbfn\xd7\x8d\xc0\x128E\xad \xe9*\xce\x1a\xd7\x8b]g4a\xf4~\xc7\xe1\xb5\n/>\x14\xad\xd3?\x99=$\x01\x82;\x7fj\xe0\xce\x1b\xa0\x9b\xe4\x89\xd0\x87p\xfa\x11\xe5\xfd\xe5%\x07&k\xb8\xa4\xe2\x94Fs\x12<\x1d\xae@\xb0\x0c\xb6\xba\x14\xc7\x1f\x96\xb5\xb4\xd4\x15\xac,\"\x90@\xc6\x14\xc5\xb2>\xb3\x9b\x05\x8b\xf0\xbc0\x88>\xe39\x82\x9e\xc1s\xd4\x1d\n\x96\xa5Ug\xb1<8\x0e\xf1\xac\xab\xcbN\xe1\xcd\xcf\xe84\x89Uf\x95\n\xc5\x89\xad%j5w}\xf3\xff\x80\xff\xbe\xe6WW,\xca\x83\x8c\xad\x90\xf2\xe4\xc7\x9ap\xedW\xd0\xa2\x99\xd1\xd1\xefG\xa3\xbf\x9d\xab\xff\xd3\x8b\xdf\xc6\xbf\x8d~\xf3\xcf\xff\xf2\xe7\x87U\xf0\xbf\"\xb7\x95\xff i\xb5\xd3\x06#B\xfe\x8cJ3\n\xedJ\x1d^\xd0\x199\x03\xf2\xfd\x01\xd9\xa9J0\x02[\xa4\x92\xbfA\xb0\x01\xe4{\xbf\xb4\xc5\xd8\x13|{\x15\x17u\x85\xc4\xf9Oy\x03\xfeW\xf03\xfb\xe5\x0bq\x7f\x05\xf3su\xcf!\x08\x98\xc7\nW\xfeU\xdf\xbd4\xdc\xbc\x16\x04NUFb\x86\x03\xc9\xe8\x824\\C\xea\xcc\x88\xaeX\x1aS\x8f}\xfa\xf8\x9aT\xe3ph\xb9\x94\xbee\xa8e\xc7 [\x07r\x9e\xb9e\x9dRZ[\x1a\xa4\x05,u%\xa99\x17\xb4\xbe\xa5\x9d*\xbcv\xee\xc6\x16\x08\xd5s\x18\x92\xd7Q\x90\x054\xd4t\xbb\xa0%\xe7C\x92\x0c\xc9\xd5@\xfa\xd8o\xfa\xf4\xfb\xda\xe6fP|\xfd\xa4\\\x98\xf0\x8d\xf71\x8b\xce\xe8B\x9a\xdd\x1cE\xfe\x87\xf2\xda*\x85\x0f\xb6,\xf6\xebZ]JA@\xd6\xa5[k\xe9\xa7h\xfe\xd6\xb5@)?\xce\x8a]yN\x0e\xc9\x89X\xdeR\xf3\xebD\xaet\xb2M\xae\xc5/\xb9\xfc\xadKC\x02\xf7@\xe0\x1b\x92\xaf]\x14O\xc7\xc9\xf2\xa68\x82\xe6c\x9ag\x1c\xc2\x88H\xd3\xba\xd6r\xc1x. M\xfe\xe3\x9fr\x14w4\xeb\xd3\xbfSwZ\xa9\" r\x99gY+-\xf7o\xd0\x8dNz\xb3\xa3Q\xff\xe8O\xbc(\x99J\xab\xbeN\x0f\xcc\xd0CCQ+\xd6\xc8\x03l\x83\xb3\xb0\xb8\xd2H\xe0J\x03?\xc7@\xa7\xa7~\x8f\x91t\xc6\x89\x06/\xee\xb3\xa4\xc5T\xcf\x0c)\x11\xd8\xcfP\x0d\xfa\x1ek\x03x\xa7\xfe\xa8N\xa1\x04\xe2\xa2\xd8\x0e\x04\xfdt8\x87\xd5\x8f\x03\xba$\x92\x96\x01\xcb.7P\x7f5&\xc6$6\xdc\xfd\xe3\xebP+\xa2\x08\xa2-\x80x\xf6r\x9a\xe5\xfc\xbe\xe2 \x94H\xdd@-\xa6\x8e\x06\x135\xa29\xc1\xdc\xeccOA'\x9b\xf4\xe4\x9fK,\x0c\xeb\xe8\x90\xbcm\x8e(\xc8\xd4\xc4\x87\xbcz\x9bk~ ]1\xd8\x10(\x01\x85.\xab\x94\xda'\xb9\xd4 \"\xdb\x07\xc4\x01\x15\xa5\xbc}\xc2\xfb\xc6\xcb0\xcc\xc2#\x9f%g\\\xf0\xf9\x81'\xdbA\x0eID\xa6\xfa\xf4\xa9\xd2\x1cf[\x1a\xad\x07\xfa\x03\xf4\x8eZ\x80^\xbfT\x15\x83\xech\xd0\xea\xd3\x1d;\xb5\xfb\xf9s_\x17\xe1Kp\xe2\x80\x93\x16\xb5\xad\xe6J1\xf7\x1c\x1f\x14\x0b\x85\x8f\xa5\xce#\xccRB\xca\x04divP=b\xc1\x7f\x98\x15\x1aYZUL\xd0\x1b\x86\xe2\x98M\x01R?T\xadu\xc0\x0df\x84p]\x83\x9d_)Q\n\x0c\xdc\x89\x1b\xb4\xd1\xc5f \xda\x86\xd3\x12\xbd\xef\xa5\xfcQ\x13\x8aT\xc5[\x18\xff7\x0f\"\xd7qng\xa7O\xca\xa5\xfc\xb3I\xa3 \xce\xf37\x15\x02,\x19{K\x9a\x1ce\xee\x8e\xd8\xbb\x90\xbcM\x1225\xe2^\x10\xeb\xca\xab\xd1\xb7\xbd\xa5\xa6Z\x89\xed~\x97X>\x86\xd3T\x94\x17\x08\xe2\x7f\xc6bs\xa4\x83\x89\xc0\xe8 \x84\x86\x06\x0c\xd8{\x05Z\x1bY\x9c\xd5i\xfbB\x94\xec\xca\xces\x12\x92\x17$\xd5\xb6\x94$\xdc\xde\x1e\xe8fI\x0e6\x19\x92t\x16\x9ew\x912\x8d\xe8\x14\x1e\x0b\x8c\xf0\x14\x9ba1\x8c6i\x0e\x0d\x06e\xdc\xceHv\xb0h\x81\x9b\xc1\xc9\xdf\x8czR7\xe8\xab\x16\xbb\xc5\x16\x00\x19=\xbe\x8c\x82o+\xd7\xefb\x8c\xb8M\xdc\xcb\x15 \x82f\xda\x96%\xb9\x17J\x9a\xdb\xa4\xb3\xbaMh\xe6\x9d\xda\xd4)\xba\xe56\xf1\xacn\x13\x9ay\xa76\xf5\xe0\x03\xb9M\xec\xaa[\x85f\"$\xb3\x9d\x01\x7fW\x14j\x13\xaapE@7`\n,\xa3 \xc4V\x19v\x8b\xf8\xfa-\xde\x95\xda\xd1\x15M\x8c!\xb9\xc6\x83\xe3\xde\x95\x03\xec1\x1f\x97X\x83\xee\xf0\xc9\xcee\xd9\xc1t\xfe\xd4\x8f\xe9\xac\x9f\xfc\xc8\x0co\x80\xade\x8cI\x0b\xcf\x98 >\x00\xf4\x03:\xf3\x08\xc3(Y~4Y\x1f\x7fl\x96 \xe7\x91Yq\x85+\xeb#YN\xed\xecZ;\x1f\x05\xfd\x0cD?\xd3\x01I\xeb\xed\x0e\xa4\xec\x1fX%pU\xf2\xc7\xd7\xc1,8\x07B\xbd\x83\x9d\xb33\x8f\xedW\x8e\x92Z@\xb8`r\x08\x03G L\xad\xdc\xe6\x89`\xcc*\x0c\x1fka\xf8f\xd8A\xecB\x11\xd1\xed9\x90\x81q\xc5dfn\xaa\xd1\xc4\x83M\xd6x\xebZ\x12\xe0\x10\x98\xa6\x87Pb.\xa6\xb0}\xf1\x0dI\xdc\xb5\xa7Hek\xc4\x03\xb2\x15#{\xe3\xcb\x172\x87\xb1\xc0\xf3n\xb5o\xaa_\x9e\x0f\xd0\xca\x1f< \xb1\xa8OL\xc1\\\xfc\xb0\xecR\x91\xd7!\x81\x90\xfbM\x14E\"\xfb\xe9\xa7\xa0\xe0Q\xe9\x94\x98\x1aC85\x07|;\x95k\xa3\xdc\xaa=j\xaf\xc9n\x06\xf6\x9d\x9c\xb2\xacm\x1b\xb7\xdf\x8d\x17\xdf\xdb`\xa3w\xa3`\xdf\xa6|^\x7f\xca\xddrX\xedI\xd1K_u\x81L\xed\xd8\xc5\xdf0\x10k3\x05\x84U\xd4l\x80\x12\xd8\x15\xe3\x98c'\xb2\xf5\xfc\xbd5\xd7]\xb0\xb6\xac\xc2\xda\xb2~\xac\xed\xdd\x99c\nZz-6|\xd6L\xc5\xd1\xe3\xd5\xe6m\x02\x05\xd0\x8f\xbfU\xb5\xa9\xc1\xc6\xf3\x92\x8d/G\x0b/\x16vq\xffx1\xaf\xf25\x03\xbd[\xbc\x07\xcf+\x9f1\xe0\x11\x1aKg\xa5\x05q\xa4B]e\x06\xff\xabIr\x89\xb8#uF{\xa2\xc8\x16 _\x03\xf8\x8c]gJ\xf8\xe8V,>\x03PF(\xe4\x16\xd6\"d\x9b\x04\x03\xe3\x98\xcc\xc9!\xa1P.\xaf\x95SW\x92\x8e\x14\xf2\x1aE\xc2\x1a`\xd1\x81\x10\x0bg]\xdbL\x8a\xffy\x07\x0e\x85\x8b]\x84\xed\x1d%F\xab\x1b\xd5 u\xe6\x91]\x95\x10\xabyC\x9e\xfd\xff\xe9\xe2\x19\x8f\xd6\xf9\x95c\x87[\x01\xd8\x0f\x07iV\xdezvT<\\\xed<'\x11yA\xb2B\xfa\x15mo\x0fH6\x8b\xce\x95\x0e\x87\xcd\xf2\x9c\xf4a\xe7\xda\xf8\xd9\xde<\xe6\xf58\xcdx|\x96P\xefs\x10-\xbaN\xc7\xce6\x81\xc3\x82\xb6&-\x19\xf5\xdboo\xb9\x7f\xd3\xd2\xde\xc4u\x9e6\x1f\xe93\\\xf6\xd9i*C\xea\xa7\x8f&\x8bA6\xe0\x07\xa2\xf4h|\xc7\x03\xf1\xe9\xb3\xba\xcb2\x0e\x86\x87\xa3U:\xea\xf4\xdc]_\xeaj\xeb&n\xe1e\xdd\xe5C\xe2\xac\xd2\x913\xa8\xe3\xda;\xb5\xfb\xe1\xc8\x1d\x0f\x1e.n\xd9\xbe\xb2u\xc9\xb0\x1b\x85kW\xe0\xe3\x8c\x7f\x12\x14$\xe2\x02\xfc\xeb\xbdv\xceF\xa5(\xaa!\x19\x07\xe9\xa7(\xc8B\x96\xa6\xef\xc0\x7f\xd9\xa0k\x1cZ]\x19iQ\x02h@9\x97\x9c\x87\x8cV\\\x17\xcb\x0c\xa5\xc0_z\xe0\xaa\xed\x04\xady\x11\xa4\xef\xe8;7\xab\xa1\x07\xbd2DU \xe80\x9c(s\xc4?\xe5\x83\x07\x84K/\x922\xd2\x05\x99\x82\x08\xbc\x11!\x80HG\xe3`\x96\x99\x04+\xd0\xcf\xca\xc4y\x13_7N\xf7;N\xca\xfe\x0e6)\x0f\xff~\xb7\x8d2\xa8\xec\x94\x11l\x95\xfbl\xf7Cwv4\xfa\xdb\xf9=m\x16g\xf4\xe7\x893\xb08\xc3\xbfCk\xfb\xb5H\xcb\x0b\xfe\xf8\x8a.\xae\xa2 z\xe6\x17\xdb\xb8\xb6\xd8\"y\xf9\x90\xcd\"pq-M\x89\xa5\x14>\x82\xd54\x8b\xec~\x05\xc8m;lpg\x8fw:\xf7\xafej\xbes\xbe#\xdb\xb0\x88\xc8\xb6x\xb9\xe7\x86M\xcc\x86i\x92\xa9\xda\x10q\x08\x87\xecL\xd9\xfcb\xa2l\x8e\xcdE\x97A7\x01?\xa9\xea\xa6\x1b\xdc>\xa4 !(|\xa7B\xda\xff\x07\xf7\xe0[\x13\x84\x9ft\x931\xbb\xce\x12\xeae\xbat\xd9\x1e+s\x8e\xcf\xc2\xbd\x84~\xd9}2\xc0\xec\xe09z\xe8h\x9e\xc1\xb2\xcc\xa3\x19\xabn\xc0s\xcc*=\x9a9?\xb3\xcb\xcfA\x06\xae\xff\x80\x1c\xb9*\xde3\xc8\x7f\xcb\x7f/3W\xf2E\xe6\xac\xd22\xe3\xedi\x99\xfe\xbeL\xe6\x90\xda\xf8jm \x12\xe3`hN3\x8d\x82\x15\xb8\xf8\x02OM\xdcu\x8et\x823$\xe5\xcbI\xe4c|KQ:\xc8\x98\xf4\x14\xd6R\xc7k\x0d\xd3Z\x93\n\xf5g\xad\x05\x9cqa5d\x89\xa0?\xcd\xae\x9c\x15)\xa2\x86\xf2\x0d:S]\x81My\x02\xe6v\xde\\\x0d\xa6k{q\x00\xe6\xfd\x18\xf6\xca\xa0\x8a}\x01Q\x1b\xae\x82\xc8\xe7W\x80\x04\xa5\xa8\x8d\x04csf\xca\x97!i\x02\x14\x83\xdf\x0e\x06#[\xbe\x0e\xaac\x82\xb4\xa5\xa8\xa22\xb4\xc6[o\x9f\xd9\x82\xc6\xa13v^P.\xe2\xe5y\x03d+0a\x90h(\xe2\xe4 \x1aE\x0d\x113\xce)\xa2\\b$5\\D\x91\xbc\xd2.P`\x88\xce\xd1\x8d_qIJ\xee\x8e\x946s\xfc\xdct\xc1,%_\xbb\x93\xba\x0f\xe3\x1c\x97:J\xc7\xcf\x8f\xf6\x8cCE\xbb#~\x86b\xc7\xb0\xdb\xbd\x19h\x13 zY\xc6@5\xeb\xf5\xac\x07\xaa\xe3-\x99\xf7\xf9\x92_\xebHU:,\x1c\xb8\x84\xe7\x95\xd4\xc3R;d\x0c\xc5\x98oj\x8c\x8c!R\x9b\x05\x1d6\xa3)\x98\xaa|\x1b\x88\x95\xe8x\xa1$ nf\x11\xed$\x1a\xecX6\xb2A\x9a\x93\xb2\xff\x98\xcf\x1a\xf1\xc8\xb0\x9aR\xe8f\xb9f\x850\xa8m\x10\x10(\xba\x15\x80^k\x80F\xfeWX\xddx\xe3Tx\x7f\xd5\xbd\xf6o(\xd8\x9fd\xd8\xc16H\x15\x99P\xcfg\xa4\xccFX\xed\x9e*\x90*\xf4P!^\x91\xa7\xdb\xa5\xabJ\xc8!h\xe8[\xaaR\xfd\xc0++\xddc\xd6K\xeb\x9c\xe6\xd0\xb5\x9e6\xa6\xd9\xff\x06\xeb.\x1b\x9b#\xd9\\O\xac\xa7\x8b\x8dj\x9f\xcb1\xca\x8a-uh\xfc\x9e\x96\xdfm\x1d%sR\xcc:aN\xa1F\xf9kJl\xb7\xffU\x8f\x1f]s\xd1M\xcc\x92\xc6m'\xa6\x11\xde.\x9b\x95\xfb\x9d]3/\xcf\xd8{\xf5q7k\xb7mK\xc74\xa5\xb1\x1bv\x1aI\xae\x0b\x85\xf6\x88\xaeZ,\xe4Azh`Ce\xfbk\xe8k\xa2\x14\xbf\xf9\x14G\xa68Xr\xfb=\xd1\x10\xee0\x82\xe7\xc43\xc2\xf7=\x1f@j%\xa9\xdf\xd7\xe6P\xec\x1f9KnNA\xf7\x96'Ga\xe8\xca\x9b\xdb\x99\xe8\xf5\x81\xa0i\xff\xcf\xe9\xfbwc)i\x08\xe67Re\x01D\xd8\xdf\x9d\x83\xda\xcc\x81\xea\xfd\xf9w\x03\xe9\x02`\xe79\x89\xc9\x8b\"\xf4\xd9s\x12oow\x0d\x01Q#\xee\x83\xd6Y\xdc!\xb3$j\xdc\xfdR'\xc3\x1f\xcfy\xb2\x82\x19\x08\xe0g\x9f/\x12\xf5\xd5\xa5\x1ew=\xdeb\xec\xe1\xd2\xb5\x1e;\xcd\xf6,\x95c\xadg\xe0\xe4\xbb\\d\xcbn\xc9*.\xfa\xec\xce\xb5\xe7\xa0\x01\xa8\xf4\xf3u|\x19D>\x1a\x9eO<\x1e\x8f\xb2\x84Ko\xb2\x1e\xa6N\xd0\xaaM]\xa1<\xba\xf0\xc0\xda\xea@\xbfe\xf3Kd\xab\x10`sn\xca\xe3\xe9\xc1\x03\x12\xa0\xdaq\xf8\x06\x13\xdc\xb4\xa3\xaa\x85;\x1b\x88}\x8b\xcc\xbe&\x17\xad\xd5\xe0\xb8\xb1N\x9b4+\xaeZ\x84\xe1x|N\\)'\xe4pG\xa1M\xde\x00{\x0f\xf4\x0f\xc1\x8d\xeeX\xc4\xf2\xc5MD\x11\xd2\xad\xc4Y]\xb8\x1aD\xec4I\xe5]\xa1\xab\xbe6$\x93\x1d\x90\x18\xb5\xdc\xc9\xb8\\\xeai)\x8f1RcK\xb7VbH0\xa9,\xdb/\x91\x0c\xbe\x80e'\xca\xe2\x1a\x1c\xaf\x039\x8b!\xd6\xa3\x16\xf2*x\x03_W\xcfr\xd9\xd4JJ\xf1\xc9&\xa4[\x03E\x01\xb5f\xd9\x81y\xaec\x0d8.\xf3\xca\x8au\xe2\x01\xd9\xda\xaaC\xb6\x926u/\xe8\xdfl\x7f\xda\xb6Fs*\ne\xb1\xd6\x05\xa8\xf4\xab\xa4\xd7\xd66\xed\x1c\xe9\x05\xb6\xc5d\xa5KA\x08\x02\xbd\xb7~\x02\x9a\x06\x1a\x85\xdc\xa3\xed*I+\x1ee\xcbv=\xaa\xae\xaf]1f\xd3n#\x10a\xb5\xdc2C\xe3-\xea\xa0i\xf5\xd32\xaa\xaa\x82>\xdf\x8ej\x0c\xa2~\x9a\xc7\\\xc1\xb0[(3eb*\xdd\x11H \xa99?,\xbbdl\xa2zZ_(\xfc3u\x05\xcd\xe2\xcd\"M\x9dC\xea\xad\x04\x17f5\xce\xe9\xc9\xf1\xc7\x93\xb3\x8b\x97\xef/\xde\xbd?\xbb\xf8ptzzq\xf6\xe3\xeb\xd3\x8b\xf7\x1f/~}\xff\xe9\xe2\xe7\xd7o\xde\\\xfcpr\xf1\xea\xf5\xc7\x93\x97\xce\xed\xbfi\x08K\xeaR\x11\x15o\xb9\x1e\x0d+\xc0\x85\x1f\x94\xe0q\xa0\xf2\xf2^\x0f\x8e\xdf\"\xb3\x90V\xa4\xf6{\x90\xfa\x15\x9c\xe6\xe2\xc7Z\xad\xae\x88K\xc7\x86\x1d\xc8\xaf\x90[\x10\xe9\x9f\xacq\xd3&\xc5 \xe5)Z\xa6\x1f\x92\x8cl\x8b\x92SiN\x01\xd2\xc8\xad\x9d\xba\x9c}0$Y\xb9:*#\x1c\xe2\xee\xd9\xb8\xe9K\xc2\xd0\xa5\x96\x94\x8b2\xf6\xab\x17,d3\x92!\x01\xc4\x03\xea\xd5\xd7\x99[\xbf\xa8 V\xe4\x10\x0c[\xbc\x80\x98=\xb7X@\x08\x90\xc0PDo2\xca\xdbb\xf7OI\xea\x96\xfa\xef\x03\xf9\xd1\xad\xc9\xb0\x16\xe0\xb7]7\xa9\xe0\xc6\x0c{\xf4\xa4b\x8fn-J4\xf7 .\x0ef\xe1\xb9\xe4~\xfa0>rEv\xb36\x80\xda[\xa1,\x8a\x1b\xa5Y\x90l\x9dl\xda\xed\xe5\"r\xbd\x08\xa6$\xefX\x04\xdf\x96\xe8\xb1s\x1c\x06!\x19X\xe8\x9f\x8a\x037\xd7\x01xg\xa8K\xb6\xd2n\xb7\x14\x87&\x16\xf9e9\x9cm\"\xbf2l[\x8b\x14\x12\xa1\xeaJ\x99oU$\xa7\xbf\xaaN\xcc\xe2\xd5\x0ei\xe1\xbf\xc0\xe7\xa3\xb9\xf7\xec\x02\\\xf5-\xaft5\xcd+\xd7r\xa4\xcf!-U\xee\xeez`nt\xbb\xd0\xbcE\xa0\xf8A\x9aoz\x8b\x90\xf6\xbaE\x08;n\x11\xf4/\xfc\xb8\xdap\xb9j\x81E\xc9\xff\xd8\xad\x9e\x12\xd7y6q \x82\xfe\x1fmRp%\xaf\xbe\x1f\xe1w\xb9\x13\x1c\x159nC\xa1\xf7\xbf\x8b\x9c:\xe8\xbe\x1f\xb1\x9c\xf8\xa6fT+\xc5@\x1b\xe2p\xbb\x187$\x07\x9d\x0ed*\x96QnE\xd7V\xac\x85]\xb1\x16\xaa'n(\xc5 \xa1:F\xc9\x8b\x032\xd1\xf2\xb9=G\xf9~ g;\xe7\x03\xe9\xdc\x16\xe644\xb8r\xa9\xc8K5\xd7\x00\xc2\x9b\xe6\xfc4R\xfa\x1efUq\xbc\x94S\xfc_&w\x0f6\x95\xbb\xab-\x9eK\xc9hZ8m\xec\x10Rv\x8c\xfa\xbfD\xfcH7\x92\xfc%\xf5]\xd7E\x92v\x10\xe3\x92\x9e\xc2\x07Z\xda(F%%\xe2\x96\xfc5\xafH\x9d\x1ar\xab\xa8.\xb7B\xa4o\xcd\x15o\x17\x995+\xac\xc9\xc0\xda\xe6\xf1\xb6D\xdbf3#E\xc9Yi\xc1\x89P2\xea\x82\xdb\x8e\xee\xa1\xafY)\xc5\xd8\x90\xfd\xff\x96\x94\xc5\xee.f\xcf\xe4\n\xf8]\x19\xe4X\xda\xf2l\xaeg\xa3A\x9f*v\xc3\xa85\xfd\x90\xf0\xa1\x9dQ\x04Y\xbfv\x90\xd6\xd6\xec\x14\x1cGgC8;i\xdd`\x99\x0dE-\xc5\xe7\xa4\x06\xa9\xbd\x86\xf28B\x17V\xc7\xaa\xe0bU\xd0\x86\x05q\x04\x12T\xd8\x0fQ}M\xf0\"\x9a\xf6d\xdffg\xa5\x95\xbeg\xaer+h_DR\x1d\xca9;\xf9\xe5\xec\xe2\xf8\xfd\xbb\xb3\x93wg\x16G\xacD]1\xc3\xd0X\xa2 \x8bg\x0e\x07\xb8\xcf\xae\xbb\xbcR\xce\xd5M}\x17\\\xc6{UG\xe7\x19K\xca\xfaP\xb8\xaf\x03\xcc\x1d\xa4m14\xdd\xd8\xfe\x8f_\x07\xa7'g\x17o\x8f>\xfe\xf5\xd3\x87\xff\xb7\nH\xdeq\x1c\xdbVCf\xf8\x16\xbc\x1dIp\xdb/\xd7\xcf\xc9\xea\"\xb4\x8f\x1aG\x14\xb5\xcd\x87v\x9c\x809r6W\x89\x19Wz0\xa5\x92\xa0\xb0\x9f\xcf\xe2\x1c\x84\xab\x97V\xe7wp\x0c\x0d\x0b\x973\xed'\x1f(6\xb5\x83\xf8\xdd \xcbn\x90\xb5\xf5\xe6B?\xb0\xe1=\xa9*\xddZ\x15\x0cC}\xcb{\x9d\xe4\x00Qc\xb3\"\xeav3\x99y=\xe8\x02\xf1,\x04E8\xf3z\xa8oIU\xad\x059$\xee\x1c\xa4\xb9su\xe4\x97\xc1cVC\xb2\x1eB$\x9e\xc1@\x86\xe3yK\xb3\xe5xE\xaf\xdd\x95y\xc0\x0b\x80!Y\xd5\xce\xfc\x18|\xf1\xad\x80\xb1h/\xabB:\x95M\xb8(\x11\xe8\x91\x04s\x17CBg\xcbs\xdd\xa2L\xd9B-\xb7\xb7\x07C\x12\x0b\xf2b\xad\xf9|\xed\x81\xc7E\x9c\x7f\x98\x8f]\x7f\xab\x9c`>h\x1a\x03zR\xbaUk\xb2\x89\xf5]\x980\xc2g\xde\xf9\xa0\xcdm>\xf8?\xd2\xe8}^\xfa\x0fi\xd2\xb5\xcdK\x17\x82\xf6\x00\xc3\x7f\x91\x95\\o=\x087<\x05\x9b\xe7^f\xfah\xb5\x84\x9c\xec\xd3\x81bA\xf6vLF\n7\x05\xe6\x92|!\x80\xeb\x96y\x1d\xa8\x98\x94\xf4g\xfb\x9eU'\xef\xdb\xf7?\x9d\\\x9c\xfc\xf2\xfa\xf4\xec\xf5\xbb\xffl9|\x89y\x00w#?\xe3\x1c\xae\xf4\xa9\xbb\x94{\xcd\xae\x11\xaf\xac\xc7E\n\xb1L\xed}\xcd\xeb\xc7\x13\xd8\xc3\xef\xde\xbf<\xe9;\xab\xdd\xe3\x7f\xd7\xfd\xdbB\xa2\x93\xfeT5\xe9IY\x93\x8em\xdbkV\x9bg\xf8-$a\x85\xc5w\x95\xb4H\xd4\xa9b\xe0\x05Qe\xd4\xbbm\xe6Q\xd5s\xcd\xe9\x0b<\xf8\xb0\x19b\x8f\xe1w\xf0\xc4\xde\xfcH\xbaBl\xb6\xf4O\xf8\x9bEt\xedA\xea\xadD\xd7\xa5\x9b'\xd4\xd6W\xb9\x17\xa8\xfb\xe1 \x86\xa7\xae\xfa-8)\xa5\xdb\xbb\xbb{ \x97\xde\xdd\xdd\xad\x0b\xb4\x89\xa1x\xb6_\x1b\xb4\xdau91\x85\xccy\xc7\x81\xbfV\xb6\x1b\x86\x17&\xd60Z$\xe6} \xa8\x89H\xa1\xb7\xb4\xb3\xe7\x82^i*\x89U\xc7FV\xbfu\xa0*x\x0fN \x11\x15\x0f\x81=.N\xde\xfd4%N\x9cp?\x87^ \xe8\xe4\xe7\x93\x1f>\x1c\x1d\xff\xf5\xe2\xf5\xbb7\xaf\xdf\x9d\\\x9c\x9e\xfd\xfa\xe6\xe4tJ\xb6&\xd5F\xd4FJ\x8b\x0b\x9b\xdfE\xa4\xd8\x1b\x13M\xfa\x8e\x8a\x0dL\xb5\x80v\xb9j\xdd0\\?Z\xbc.>\x9d\xcb@\x01\x1b\x88\xf1\xda\xba@\xa1\xc2\x14\xa2U{\xe0k\xd7\xde#\xf0\xe9\xd1y#+\xf8\x9c\x0e\x9e/n\xf1\xbd\xa4\x1f\xd4\xba6\xee\xcd\xf3 \x06\x15\xd8%\xb8\xd8b\xb3\xf8\x1c\xb8\x0d\xbf~G\xda\x8f\x1d\\\x83\xf5n_k\x1e\xbd9@?(p\x97C\xb2\x1e\x0cH2\xae\x07Sq}`\xc3\xf2!\xf8b\xca\xa4\x1f\xa2\x96\xb1\xd3O\x0f\xbfJ\xfa\x91*JTV\x9dT\xa8W\x1f\xdc.\xd4\xbd\xa2\x8a6mM\xfa\xc4(#\x06w\xcd\xdd5l\xfa~\xa5TOW\xfd\xa0\xc57\x16\xd0\xfaZKW\xf5\xa5\xdb\xaf\xbeH\x8a\xcf;\x98Z\xd2\xca\xd8\xb6\xe7\x96k\x9c\x0d\xc8V\xc3\xc7[\x0cV&\x80\xf8\x90\x05.\xcd\xf5\xc1[[|.\x98\xf5\x8d\xa7\x0em\xd7]Y\xdc\x96\x13\xbdj(o\xf1vG\x88\xc5\xe3]\xd4\xb9\xa55r\xc4O\"\xf3A\xc6\x84\xa3\xb4\x8c~\x90Q\xa9\xa4\xd4\xd0\xb1I5\x94\x17|_\x07\xca\xb5\x8c8\xac\x1f?V\x13p+z\xa2\xf3*\xdc\xa2d\xd7PV\xa7\x96\x8bs\xa5dW\xf7\x89\x99*U\xbd\xba#\x80P\xb5\xa5\x9e\xeeU|h\xee=y\\'P\xe68\xe5\x13\xcb\xfa\x1a>9}Y\xdf\xbe\xa2w&\xf5\xea\x96\xaa;\xf5v\xacK%\xfbzO\x05Z\xaa9\xce\x14Xd\x17\xbb\xd2\x07\xc7T\x7f`\xb7\xf2\x97\xe8\xca/\x15H\xcb\xe5rS:\x7fU\xd1 M\xdf\x15\x18u\xc8\xc8\x01 \xc5\xbe\x96:\x89xX\xe8\xc6\x02\x85\xbb\x0b\xe9\x94Z\xaa\xf7(\x12^*\x97Wbf\xd5c\x0d(*B\xf5\xa9\xa2\xb5_]\x82\x17\xcd\xb1\xbbB\xe9$\x8fGi\x96\xe4^\xaf\xebALM\xcb\x88\xf3eq\xf7\xeb\x89\xad\x9c\x06\x19;\xbb\x89YA\xf4\xcb\xbc@i\xc6\xd4\x92\x8d\xd0\x8f\xcd\x8c\xca%l-_\x0e\xdb\x0f4\xf3\x96\xd2\xffZ-?f\x91\x1fD\x8b\xb2\xedH&h\xd6\x80\x03#<\xff\xa3\xf4\xb9\xa5\x15\xeb\xb6&\xb5\xfcW<\xf1\x98\xbc-\xa8dk\xc1\x9f\x18!d(\n\xb9\xa0\xc6|\xb5|\xb5>j\xa9\x80,\xdf'r\xb1\x16C\x9e)\xafOJi \xef\xc71\x0d\xc3K\xea}N\xeb\x1f\xa2ah4\xe3\xe7 \x0c?I\xa4\x0c\xddi\xac\x0c\xabZD[\xe46\xab%z\xbd\xb3\x1c\xed\xe9\xc5\xf66\xbaV\xb2\xd6\x85b'\xdd\xe9\xd0\xb8\xf3\xe9\xaf\x83G\x14\xe6U\xe3\xaa\x14}\n+\x11{!\xcf\xf61\x1ce\xe8g\x0eJ\x82\x0b\x96\xc9\xe5%\xbdl\xb5|\xc6o\xf5\xbeS\x7f\x14v\xd9r\xb7X\x89\n\xc1\xfa\xd8x\x1f\x07)\x04\xbe*f\xb7\xe5lv\xbd\x96\xb6-\xcb!\xd08\xa8B\x08I\xca\xd0F\x13\xfafD\x86%1LV\x97\x1ay\x1f\xf6\xf2eF6\xe8\xf8\x87\x9d\xe9\xb3tl\xb2\xeb\xb6N\x05\xd2\xb8!\x91\x1e\x06b\x1eD\x99-\xa0\x07\xee\xaa^?E\xd4Vl\xa5V\x9b\x83#f\xed\xda>o=\x0e\xc6 \x97\xa4\x91K\x07u\x1c\x86\xee=7o\xd9\xf9\xa0\x96]\xadC#\xa7\n\xdd\xf0\xc1(Y/`2\ne\xaa\xc2\xc2\x83\x016\xbeV\xba\xb2\xc9bo\xed\x808\xa2\xd2\xeb;\x0fu\xdbZ\x0dn\xb9\x1ao\xb5\xf8\x8aq\xd6\xe3f\xa7IZ4_\x83\x12\x83 \x8a\xb8@|.\x96\xe1v,\x87\xa0\xc7\n\x08\xf4\xa4\x07\xe5<\x0f\x86\x15\xc1~\xa1\xaan\xce4\x90\x0543&\xdc\xb5 \x03\xd7\xca\xe5\xbd'\x90\xb78\xecQ\xcf\x18\xa4\xa1flp0H0,b\x08\xe6\xcd\x81\x07a|\x95|\x02i8\xdc\"x\xe3\x93\xb7\x1f\xce~m\xbf>\xb2,hI\x85\xcc\x11\x15\xdeD/\x92*\x81\xbe\x0cB\xdf\xa0\xd2\xb1(\xde\xc8z\xec\x1f\xd2\x8a\x187\xb3\x15\xb1\x9f\xa5\x03\xbd>\xbfi\xf4+\xa2E\xf0\x96ov\\\x02d\x8dmc\x97\xdcII\xbf\x87q\x8c\x0f\x1e\x90\xad\xac\x8d\xa7\xecs\x87\xd0\xc1\x92\xee\x0c\xdb\xef4\xf4S\xb9\xb8, \xbam\xe2\xa0mw\x07\x1d\x01\x05\x08\xe8w\x07\xd1\x9a\x7ff\xff\x99\xd3\xc4g\xbe\xe6\xa9A\x05\x00\xadU\x9a\x93e-!E )\xac\xd6\xf1*\xda\x82a\xd9\xb6\x08\xe8i51\xbf\x05\x1c\xd3W\xba\xa5\xd8\xa2&\xe1\xf9\xf6\x14r%\xdb&\xe3h\x95\x03\xe1\x92\x16\\\xb8e\x93\xb4\x84:p\x99\x8dE\xec\xb3\xe5/V4\xfd\xac\x10U\x9f\xed\xben3\xa7\x04\x1eVuM\xcc\xa3%\xec\x07\xf8\xdb-C \xc4v\xfc\x8e\xf9\xc1\xd6O5~N6 \xd1,9o\x0d`c\xf5\x14\x87\x8dKU\xd2\xb2\xf9\xd0\x18\xe3j=\xf2\xf4\x99\xb3Q\x83\x8c\x93\xa5w\xabL=\xfb\x8d\xa4AM\xca\xc6>\xa5\x81t3[6\x8f\xe8\xe8\x0c\x8d\x1c\x19\xa8\xa1\x0d\xa1VC\xf0 \\\xb5\xf2rpl\xac\xb6\x82\xa5~\xba9K=\x90\x1f\xc2j\xd5B\x8f\xfd\xcdj\x15g\xbe\x1d\x89\x96.w\xbf\x02\xdf\xdb{\x0f\x13\x83\x1d\xeb\xb5n\x80`7;\xd4_\xab\x0f\xf3\x81\xd1H\xaa_X\xf7\xaf~]Q\xbd\xef{\xe5\xceM\xa1\x9e\xe8T\x1b9\xd9\x86\x84\x95\xdeCyP\x011\xc7@I\xaa\x9f\xaa\xa4b\x1f\xe4\xd9\xf0z\xfe\x8e\x89\x0dJ\x93\x9b>\xfb\xb2P\x8e\xc1\xdayH\xe6ME\x80\xcc\xb0\x14\xab\xc2\x0f\xcb\xfb\x11M\xc7\x97\xce\xa8\x0f\xac\xa7\xe1\x97/\xf6\x83\xee\x10\x1f\xa3\xf2;\xd5\xd9jO\xad\\;\x99M\x94 \xb6\x1b\x95>SPk z\x0f\xd0a\xfdI{\xe2\xb8\xc8\xf4\x97 0\xc2\xde\xa6\xa2\xbb\x16\x16i\x08\xbc\xcc\xd6\xa4m1\x17D\xc3\x81\x0c\xd2\x9b\x83\x11\xb8N\x9dJ\xd7[jF\xab\xf7\x04\xc1@\xd5o\xd3\xbeX+\xc7&\x9dW\x11\x10\xe2\xd8\xe6\x1d\x88\xc0\xd5#X\xe5\x03\xeeW\x9f\x1cJ\x17\x98\xb4Ji~\x94\xeb\x1b\xbc\xa6td\xbb\x9e=\xa6\xd9Z\x07\xfe7\xfb]\xe1r\xa1\xb0\xbdGq\x8bw(\xeb\xf6\x80\xf8h\xe3t\xc9\xf3\xb0$K\x8b\xad\x13\xc3\xc4\xa0\xb9\xa25\xf3\xa1\x8c\x82\xacg\xb5\"\n?8 \xd2\x8c\x03\xda\xe5\xbb\xe1\x90x\xb0\xac\xb6|\xf1E\xd1\xa3!\x99\x03\x9f\xde\xbe{\x86$&\x87\x9a7\xeb$e\x01\x91\xd5\xdb\x1aI\x9d\x19\xb8(ab\x17\x81\x95 \xb6\xd5\xc57\x9b\xb4m0$\xb4\x10\xea{\xe2E\xcb$\xe6Cc\xe5\x1e`\xa6=-$\x909\xbb=\xd5O*|Y\x0f)My,5\xd0f\x1fb \xe1,\xect\x93\xb5\x08\xc6m \xcc\xccVii\x11\xb5]dHGo\x0f\x1e\x90\x89r\xa4+\x1d\xc6\x14\x85\x93\xd9\x8e\x85p6\x88\xb1\x03E\xb2\x08\xfc#\n\x88sF~T\xb9\x84\x13\x19\x132%;\xcfI^\xf1\xee\x96\xb7\xfb\xc5^\x1bf\xd9v\xb2\x89\xbbtH\x1c=\xe5\xa6'\xc2\x94\x1c\x92T\xea\xd8H\x8dE\xb9\x1c\xa6$\xbd\x05e\x85\xf8\xbf\xc1\x96#\xbakn\xa1y\xad\xaf\x87\x87\xda\x13A\xdfe*\xb0\xf1\x0f2d\x9b\x1bV\xee?d[,8\xd3#\xda\xe3O\xa8%\x809\xbc(\xf4\x02\xbe:\n\x91\xe0\x90\x845\x19\x81D \xe07\x0b\xc9(\xee\x03p\xaa\xc0\xd4\xe6\xa8\xa0\x8a\xb0@\x15\xd9P\xb7E\xe2\x95\xd0@\x15I\x15\xef}\xac\xcb\x06\\\x18\xe8\xa1\xec#o\xbf2\xc2\x86L\nO\xc2B\xe9Ut\xbf\x1fv\xb24\xe8V\x18\xaa).iEU\xd1m\xc8g\xbb,\xb7\x1d\xc5\xd9\xa4\xd7s\xe2.]\x10\x95\x0f0\xf2URb\xacMP\x9a\xd9\xa4\xc8\x1d\xca\xac\x1a5U%\xa16{Y\xf1 r\xaah\x88\xbb@\xd7OS\x92\x8d\xb9\xdb\xd6Ou\x1a\xbb\xa5\xd9d\x03\x896\xef'\xd1&-\xb2\xba\xd6\x90\xac\x9a\x18\xc4\xc4\xdd\xc5\xfc\x95:1fJ\xcd{E\xdbT\x8bm\xda\xddp8\x0d\xc5\xf0\xfd\x1cdK\xe9]@\x1c\x01!\xca\xa2\x91\xdeR/\xb4\xe2\xfe\x9c+\x1d\xe3-c\x1b\xd8\xd9Y\xf7\x9fy\xb9\xfb>i\x8az\xda0\x08\xeb\xc9\xcb\x14\xc62\xb2\x11\xee\xddZ\xdc\xb7q]4P\x95\x14\x16+|\xd1F2\xe4c\x85\xf4T\xa7[VS\xeb\x95\xafx\xba\xaf\xb8\xd0iA\x06N?_\xc9<\x88h\x18v}\xd9\xec\x05\xca\xf5\xea\xa7\xd5\xf9\xec\xad\xdb\xdf.*\xd5\xdaA\xcc\xd0\x0eb\xa8v\x10+\xb5\x83\x9em\xc8\x16\x0f\xfbI\xb2h\x96Qo\xf9\x91\xcdos\xa2.X\xf6!\xbf\x0c\x03\xafp\x94f\xe9\xb9\xe6\xf2#\xcd\xe5Ov\xda\x18w\x194\xa7w\xedn\xa4\x14\x99\x0e\x0e\x80=\xd3\xaf\xe4\x8f\xaf@I\x8b\xb7\x81\x0c\x04\xd7\xcbv\xc7g\xc8\x98\xd8\x06D\x05\xd5\xb3\x8d\x07||\xc6\xce\xfb|W\xcdl\xdf\x8d\x7f;\xe1s\xf3~\x10\xcc!*)\xe3B9\x86[\xdcQ\x15\xa8\xae\xa6\xae\xa6l+j\xa9\xacPbS\xf9\xfa\xb5\xaf@\xaa1\xb0\x1b\x8fQ/\xcc\x8d!L\xedc\x02\x96\xf0\xb4\xdf\xa6\xb2\x93\x19\x88\xcd\xaa\xc56R*X\xdd\xc9\x96a\x82\xd7l\x1d9\xcd\xb2no\x17\xc9_\xef\xde\n\x94\xb1<\xbdY]rp\xc7*\x7f\x8d\x057\\ys\x9dD\x8c\xdc\x98\xc9U\xed\x00\xba{\xb23\xd9\xd9\xc3{\x95\xfc\xb3Z*\xa3s\xf2\xa4:\xed\xe0W\xf3\x7f\xffo\x9dy\xeb8\xcc*\x04\x0c\xa8\xe6\xcd\x92s\xd8=3~^\xc3|\xe0\xb3\x1dkmy\x01X\x0f\x0cp\xab\x91i\xb1\xb2\x95V\xb2\xcf\x1b\x9d\x90F4\x9b\x19\xc7\xf2\x0e%;0_\x12CR\\Y\x19\xc1\x12\xda\xf6?\x18/\xb53^\x86^\x0e\xb7\x9a9\xed\x0c\xa5\xa9md\x1a\xdf\xba\\\xda\xddvG\xb8\xaa\x0e\xd2\xbf\xca\x04\xd7\x16\xdc\xd5r\xda\xe3\x96\xb4\x08\x02m\xbbS\xd6(\xc5\xd57@-\x8e\xd3\xbf\x891\x17\x1eb\xe4I\xdd3\xba\x0e1\xf2\x14\xb1\xe6*\xcd\xad\xf6'\x0d\x07\xa79x\xa4\xaa~\xbai\xd9\xacd#\xd5S\xabb\x1e_\xfc.6E\xd8D\x12p>%L9\x8f\x0d~g\x10\xef\x97\xaa\x1a\x87:_\x90\xaag\xfc4\xa3Y\xe0I\x1e\xca\x10\x0f\xe5);6\xa3\x19\x9b\xf2\xd0\xbc\xb4NP\xea\xe5\xb4\xd5k{\xd3\xdd\xa9\xe0\xe2\xcb6)\xe5\x8a\xb4\xe3\xb4V\x8b\xa4\xea!\xa8v\xac6EN\xfd*M;*5\x0c2\xfaUX\x1f\xa8\xb6\xfa}\xa6\xa9\xa8\xda\xccW\xc1J\xed\xcfV0\xad\xe6\xd9\xb2\x8a\nP7,\x0d \xc03\xaa7\x18\x12>\xa6\xbe\xff\x81\xf30\x88\x16g\xdc\x0dk\x18\xe1^\x1c \xef\xee>2\x10\xbfD\xfa&\x14o#@\x8a\xb5\xcf\x9a\xe7\x0d\xa9\xc5\xb8o\xe1Q@\x15\xc6eD\xd3|p.\x0eH\xb6L\xf8\x15\xacjA\xd8I\xfd_\xe7\x98F\x11\xcf\x88\xc0<\x84\x12/\xa4iJhJh\xf1%\x07\xc1\xee\xea\xd6\xb8\xd0\xb5\xca\xca%/\xce\x83\xea\x92\xa8\xce\xa1\xa6\x9bM\xf3\x14X\xd3\xac\xdb\xe6G\x9b\xbb\xd4\x10\xfb\xb0R\x9dB5Z\x81\xaa\x8e\xe9-\xf2\x97z7\xc6A\xfa:\xaa`\x17\xe0\xdc\xea\xb5\xe3\xb2\x19\xbcE\xd5k\xb2\xf6\x9en\xd8\x1c\xa3\xea\xba\xc3w\xbc-\xb5\x0b\xa1\xceU\xb5a{\xcc\xea\xdd\xa6\x1e\n\xde\xa6S\x96}\xab\xf6\xe8\xaa-m)1\x88\xc9a\x9b\xa8\x81\xdf\x07j\xb0\x9c\xc5\xfb\xb6\xb3\x189\x8a{\xac\x1a\xe4\x0e\xb5f\x87\xfa\x8e\xfbu\xa5\xc5[\xdb\xad\xfa|%\xf5\n\xab\x83jbbjb\xe2j\xa3\xbb\xcd-\xad\xbeb\xa8\xbc\xa0\x08\xfcc@\x1e\xc9\xf6v\x93\xf8\xaa6\x91\xa2\x9d\xdd\xd4\xf0R\x0b\xec\x1d\x02\xec\xd9\x88\xad\xe2\xecfJ B\xa5\xf1\xb9m\xe2\x10D\x0bW\xfa!\xa8\x93 m\x14|*\xfb\xc9\xaf\"\x96\xbc\xe4^\x0e\x12\x0e\xe55\x89\xaf@HfSb\xd06\x0b\xe38a\x1e\xf5\x96\xacP\xe5\x967P\xdcEn1\x9b\xf2\xc0\x9aT\xb7FX\x1d\xca0^\xceo\xd7{\xde\xd6h$\xc6!\x17\xbd\x1f\x8d~\xbb\xdecNm\xaf\xd5\xce\x02\xab\x8eW\xf3\xf0\xef\xaf\xc4^t\xdb\x1a\x04\xba\xadQ-\xda\xea(\x930\xce\xa3\xea\xd8\xd6j/qK\x8d\xda\xa0\xf7\x82R&\x15b\x03\x0f\x1b\xc0Q4\xea\x14\xb8\xc0\x01\xe7\x19J\xd0\xba\x07\xd1]j\x99\x99\x91Y]k\x86\x07\x0eP.\x06\x86\xf39\xe1\xcfI3\x80\x1d\x89\xea\x9b\xb4\x12\xb5{G\x1a\x03e\xcf }\x0e\xbfh\xb5t\x80\x96~N\"2\"\x01\xf9\x9e\xec<\x1f\x80\xbc\x8bU\xaf\x91\xa2\xd1\x08-\x16\x90\x11\x89T1@\x04\xd5b\x01ZL\xef\xfe\xe89\xc9G\xa3\xe7v^\x1dB\x02\xb71\x8dHK\x1b\xad\xb0\xac$R\x15\xa5\xff\xa9 a\xae\xb3j\x0b\x83\xf4(\xf2XZ\xa5\xc8m\xa7\xacm\x89$\xc9lr\xbe\x89\x96W\xdb\xdc\xf5gIk\xea\n\x06\xea\xb5\x88\x08\xda8\x07i\xe8\x88\xec\x0e\xbcS\x05\xd1\x01*\xf1v\xa6x\x1c\xb1\xeb\xec4\xb8\x0c\x83h\xf1\xdcJ\xa7\x93\xda\xc5X\xa6\x14Z\x9e\x14\xd6q\x12\xe9\x0e\x86d_2A\xe3H\xab)>x@j\xf8\xcc\x80\x90\x11\x0d[\xbeJ\xcaE\\\xc7 \x16c-\xfd\xb4G\xe0\xb6;\xd3\x94\x04\x981,=\x17\x8d\x9e:A\xe1U\x0fx\x1c\xab\x9d[\xcedVWa\xba\x9b\xa8\xe2vD\x81\xc0\xd0\xb7\x15q\xdc\xcb\x85\x8aEj\xfa\x08'\x07\xf1\x1bL\x19h\xb1:x\x16\xef\xcb\xfafqJh\xf3\xb0\x15\x83\xd7\xb5\xd7 (\x02\x07)\xd8\xce\x04\xd1B\x85M\xb4\xb8\xa0k\x9b_Qfv\xdb6\xf2\xf1<\xcc\xd3%\xb4\x82)-\xf4T\xaa\xa1\xf3\x86\x04Gv%+\xbb!e0\xc9`\x08\x85A\x17m\xee\xd6<\x91}%W\xcb d\xc4\xadKT\x8cX\x82 \x97\xe1\xe4E\xa5n-b\xe1 \xa1\x81\xc5Qd\xce\xf8\xf9\x90,\xc7\xcaC\xd7\x99\x9a\x03\x97U\xa6C:\xb53\x87j\xd8\x18;\x1c\x17\xc7v.\xde\xa6\xa9\xd1\x18&lu\x18$Du\x81\x18\x19\xf5\x01h\xde\x19\x96M\x06n\xb1\xa2\xaa!\xf8\xc5qv\xc5\x8f\x92\x05\xf0\xb5\"\xa7\xe2dx\xad\x1c\xefW\x1b|\xc1\"z\x192\x7f*0d5\xa7:\xc4X\xdc\x95\x9f_\xbf{\xf9\xfe\xe7\x8b\x1f\x8f\xde\xbd|s2%\xc1\xd8\xa3\xd1\xa7\x94\xbd|\xff\x96\x1c\x92\xab \xf2\xf9\x15\xc1\xca\xa5,\xfb\xb1Vy\xbb\xe4\xa81\xe1bQT\xc7\xa6\xf1\x85\x13\xdd\xb1\xce\xaa\xd5\x10\x88Sb\xab\xb5\xd6 mV\xdar\xfc\x96U\xb7U\x9a%4\xfeAJ\x1faQ\xf4\x13V\xeb\xdb\x0drH\xf8X\x06\xf0W\xb1\x89\x96\xa0Z-\x0e@\xa8N\x124r\x99\xb1\x81\x16\xd7v5\xe8X\x892o\xdb\"%\n\xbd\xaf&\xadx\x14d<9\xf5\x12\x1e\xca\x88\xe8]\xd3\xaaQf;\x94x\x98\xeb\xb9r\xad\"\x8e\x9b\xbeV\xdb\xda$<\x8a\xc1\x97U\x0c\x89\x93B#\x1dD\x8d\xa2\x8aN\xcc\x11\xe9)\xd3(\x17T\x1b\xd1$0f\x0c\x86\x06\x02\x05\xb4\xc6\xeei\xb7\xcfI\xc7U\"\xce\xf5\xedr\x81\x1eF7\xf18a!\xa3)so+\\(\xde,$\xd7\x12RoEr\xf5S\xc1.\xc4`?K\xe4\x067\x1d\x86\x0eY\x91q\x88\x8c\x03\xc4\xc5\x8a\xe9\x82\xfd\xf2~>O\x99\x0c\xd82\xf6\xb5\xc6\x82\xfe\xa1m4\xe4:z\xc3\xe6\x88\x00\xf5FW\xf5\xeb\x06U\x9d\xf1\xaaX\xf0+\xc1\x82\xceC+;\xbfm\xa9\xf1O\xd5_\xb7\x9a\x89\x92\xf8\xdd\xaf3\xaa\xea\x9acb!~\x1b\xd7\"\xed\x81\x16\xf6\x9e\xe0\x91\x16&\x8f\xeb\xf5\x84\n\xbe\xde\x1e\x0f\xa7\x97q\xbe\xc9\x10B\xd0q\x10\xfd7\x83qi\x8e\xef\xcb\xf7ou\xfc\x8d)I\xda OVqvcT\x9b\xb7\x02\x0b<\xf3!\xcc\x17A\xf4c~)\xb8\xdf~\xc0\x9f\xb2 L\xc5\xd9\xde\x05~\xb2\n\xb2\x8c%S\xf0\x9bg\x05\xfd\x11t\x88\x8a&\x87m\xb0\x05\xef\xe8\x95P\xd5\xf5\xf6/\xe0\xbc\x1e\xd7\x99\xa6\x00g\xb1\xa8e-\xa9\xb5\xf7\xb4\x9e\x9eV\xd4\xc8'\x8f\x9e\xd6\xd5\xc8\x15\x17\xb6[\xff\xbe\xd7-\x03\x01\x8e\xe0\x94\x85r\x08_G\x82\xd9\xa5\xf8\x98+\xd9H>N\x80\x16eE\xa9\xea\xc0c\xf1\xb9\xcd/v\xca\x7f\xb4\xbc\x97\x8e\x0b\xa2\xaa\xc3&\x92\x8eK\xa2\xce\x85X\xe3\xbd\x0c\xad\xea\x02)+\x1dP\xa9\x1f \x94S\x17D\xddu\x04\x94\xa4\xa8\xa2\xb0.F\x9da\xc6\xad=:\xb6\xd1w\"\x9e\x05\xf3\x9b\xa30\xc4\xbeU\xed(*\xf8B\x98\xfbv\xc9W\xbb\xe5Aa^Pk'\xa8Q\x94\x94Ldx\x99D\x8c\x14\x0c-\xd5\xca\x86\x8e\xef\xd5\x06\xc1\xab\xad\x83z\xc5\xb7\xb2A\xc0:\xdf\xf1\x9d\x8d\xcd\x12Z)l\x9b\x81\xc1&\x0d\xae\xf8\xa8n\xfb\x18b\xa6`W\x18hl\x11\xed\xca\xba\xa1\xc6]y\xed\xcd\xae\xf3\x82,\xc5>7\xb0.\xcc&\xcfR.\xbf\x12\x91%\xee\xdc\x14)\xa4C\x12\x0f\x86$\xa8\xf2\xee\xf3\xba\xe1\x15\x14\xbf\xe3\x01\xd6\x90\x05*]\xea\xddz\xdc\xa7@\x1dl{\xa8\x18\x8f\xb6h)\x94\xd78\xdap[*\xa8%\x96\x8d\x98KO\xe6\x85\x90\xe0\xc1\x03\xe2\xa4\xfa\x80\x01\x85/M\xb9\x8a\xac-\xd71\x8f-\xc8W\x8cZ\xf3\xe8l\xce\xeb\x82e\x928N\xa7$'\x87=N\x00\xcd3\x16tt\xd16u}\xff\x91F\x8b\xd6\xa0,`\xdb1\xce\xd8u\xa6d8vP\xb8\xb3\x1d\xfby\x1c\x06\x1e\xcd\xac\xd7\xb5 \x84\xaa?\xe3\n\xcb\x9dI\xb7\xa6C\x92\xc8\xd3\xca\xff\x00\xbb\xcd9\x89|@\xaaI\xe6\xd8\xb9=-rK\xcc\x16\xb6\x9e\xb9-\xbc\xa1\xf8VC\xed\xcf|X\xe4OA\x03\xa5\xe9\xf7\x95\xe0\xcc\x1e\xe9\xc2\x07\xc4\x98$\xb9\x12*\x84\x8dX4H\xb2mh\xe5-\xb1`\x9dv\xd4-k\"\xe6\x174mz\x86\x05\x95\xf3M#o\xc9!\xdep\xd7tKH\xb9,\xed\xb0\xd2\xb7\xc1\x9c{y\xda^iP\x02v\xd5\x99k\x7f \xb0\x86\x8f2\xd7\xe6\x91\xb0]$\x90\x8fa\xe2\x0b+\x80\xe2\xeazH\xf21\x8b\xfcf\x06>\xf9:XC\x9f\xd8=\xa8\x07\x00\x82.!b\x98\x04P\xb723\xf5\xd1\xaf\x8cpu\x14\x07\xe4\x90\xec\x10A\x04g\xfc\x14\xd40\xdcA\xe7~\x0eA\xf2\xee\x85<\xd2h\x02\x1f\xdfPa\x15\xf1]p\x06\x12e)\xec\xe8P\xedh\xb7>\xc6C=\xea\xaau\xf6\xe5\xe8)\x0d\xa7z\xf9\xd0,/^\xcd\x99R\xef\xd5\xae\x87\x9bt]\xf0\xbb\x1e\xd9&-\xee+c\x13\xadV\x90)\xde\x9bX\x0c\x06\xe03W\xb94\x8b\xf5\xf0p\xbb\x03#\xad\xd2\x14\x8f=\x1e\x864N\x99%`k_\xf4\xe6\x8bs\x83L\x89\xd7\x81\xe6\x04\x9c'\xd0W\xcfu\x8a\x90\xf3\xa9\xf5\xb8\xear\xb52\xd4\n\xcb]\xe7V\xf7icX\xbagbQ\x90CIL\x00\xf2\x801!\xd3\xe2\xd7\xf7\x05\x8c+\x01X\xe4\x0f\x15\xa2\x03\x08\xf0Zi\x94\xd5\x99,\xf2\xc1\xd4\x14?\xd9d\xba\x9c{\xc7[\xd2\x84z\x19K\x1ci\x19\xce[\x8e=^\x14\x16\xcb\xa4R4!\xa3\xa2\xb8\x18\x1a\x8c\xeb!=\x84\xb0D\x1d\x1b\xc8)\xd3\x86\xc8\xf4Q\x81\x1eN\xf6\xa5E\xd4\xb9\xc1f\x81;8\xef\xdc\x86DI\x1d\xde\xd2l9^\x05\x91[\x0e{\xc7G\xf2\xaa\x93\x03=\xad\x94L\xcd\xca\xe4\xf4\xb6\xa9\x95\x89\x035\x1a\xb3\xebL\x94\x7f\xf0\x80P\xf2=i\x0d\xc7C\x0c|\xdd\xe2\xa0\x8d\xa86Ri\xff\x92Z\x01\xed\x9aJZ9\x15\xb4\xd6i\xc7xx\x1a\xd0f7FTo\xc1\xe9\x87\xd7\xa7\x87\xf3\x0d\x11\xa0~\xe6%\"\x0c\xe1L\x15\xe8\x9aK\\=\x04\xc7Eb\xc1\x1f\x85!\xd4\x96\xba\x10/\xe8{\xc0 n$\xb8\x0c\xf9\x959\x00\xcb\x99q=U\x91\xa7+\x82\x8d:\xd7\x08\xb6\x91-\x8a\x1a5\xe1\xc2{b\x1d\xfeN\xb1>.\xc5\x93\xb3\xbc\x11\x13T$\x17\xdcKbWB\x00\xe1\xfdx\x1e$\xa9t\x91_(\"\x18I\x95\x82\x9a\xdb)\x12\xb1\xdb{n\xff\xa0\xdd\x16\xca\xd4\xa0+\xf5\x1a+\xea\x86\x8d\x82\xb2\xad\xa5\xeaCuH\xff\xd4\xfc\xd5\xdb\xb3G\xc5`-\x01\x9cl\x18\x9f\xed<'\x91\xb5'{\x92\x13,\x88\xbf6\x1cJ\xc1i\xed6\x89\x80\x1bQ\xa4\x90Fr$ /\x94\xea$%\xdf\x9b\x86b\xf6\xad\x16\x81\x96)\"\xd3\xd4\x8f\\\xceS\x92\x91\x11\x12\xa6\x8a\x90FHi\xfd\x04\x851b\x05\xb8\x91\"\x07\x8c\xbb\xd1\xe0\x9b\x9a\x7f\xec\xef\xedX\x8c\xb0\x8be(\xd5\x9c,\xfc\xfa\x96b{\xb6\"\xb0\x01WVe\x11$%n&\x13\x137\x1a\x14\xfaR\xc6:\x13\xb8\xc2\xf1$\xf1\x98*\xbb\xb6C\x88f#\x93D\xb1)\xd9\xda\x92\xf1mhR(\xda\x7f\xe0i\xa0\xb9\xb4\xad-w\xf2\x84< V 1\x84\x0d\x15\x8d;\x0f\xdb\xa4c\xd8\xac\x17~\x80F\x1e< {\xe0\xe9\xa6\xc9\xdb\xdc\xa1}\xfd\xda\xa1\xb9^\x97\x899\x19W\xec+\xe0\xf2\x8fL\x8b\xe3e0\xf6\xd9\x9c\xe6a\xf6S\xc0\xaeD\xa6$;Pd\xb6\xe5nI\x17\x83\x16_Qc0\xba9\xac\xder\xaa\xd4)\xeak \x84:\x118D\xaf\xa4W\x95\x9c\xa5v{\x13\xe0\x1d]\xb1\xfb\x9dwg\x99e\xf1\xf4\xe1\xc3\xab\xab\xab\xf1\xd5\xde\x98'\x8b\x87\x93g\xcf\x9e=\xbc\x0e\x83\xe8\xb3\xd3\x94\x90!\xf0\xbf\xbc}#\xca\xec?\x8c\xe8\x8a\xa51\xf5\x98\xd3\x94\xa05\xf1\x12\xf5<\x16e?\xb2`\xb1\xcc\xa6\xc4\x91\xaf\xa3%\xbc#>\x9a\xa8\xe7\xe5\xab<\x04O\xd6;H\xb6\xef\x07Y\xb0\xb6d\x86\xc1\"\x12s\xff\x03MY\x18DL|O\xa7\x8d.U\"\xf6\xd10\xe4W\x1f\x19O|\x96@\x99\xf2\x15\x85\x8e\x97\xf4\x92e\x81\x87\xb7b\x15\x87A\x96\xfb\x966&\xf42\xf0^\xf1d%>\x04/\xa39OV\xd8wR\x0fn\x07\xb1Z\xb2, .\xf3\x8cI7\x88N\xe5\x1d\xabJ\xe7\x8b\xa5g\xc2\x8bw\x0c>\xcf\xf8G\x06\xc6\x92\x02\xba|\xc3`\x7f\x0fVy\xb6D\xdb)\xc6\xfcU\xc2\xfe\x91\xb3\xc8\xbb\x99\x12\xa7\xf2\x8e\xd4%\xf2?$|\x1e\x84LA\xab7\x0b\xac\x98\xcf\xd3e0\xcf\x14\xb4x\x1f\xa5\"\x01+p\xc9\xaf\xf1V\xb2E\x10\xe19\x01M\xf1\x8c\x1b4\xd9\xa3\xa1\xf7\x16\x0e`G\xffD\x1a\xe2\xd1\xb8\xd8\x0f\x1e\x8d\xed\x9b\xc1\x0b\x83\x18\xffN\x18\xc4\x1f\xa8\x18tG\xfc\x1c\xc54[Z\xca\x7f\xcca,\x01,\xc9\xd1\x91\xd4\xb5}\x8a\x02\xc1w;\x95w\x0c\x9e\x87\xb3#\x1b?\x98\xcf\xf3\x94\x1ds\xe9\xabsJ\x9cZ\n\xd2\x1b?H$go\xa9\x11\xbc\x9eZ\xf2\xd6\x81m |\xbe\n\"Z\xc1\xef:\xa9\x0d\xbd\xfb\xb9\xa5:|\\}\xbca\xcc_0\xb5\xb7\xf5O\xe4[,dkj\xed\xb8\xd4[\xfb\x81z\x9f\x17 \xcf#_\xd4\x05I\xa3\xcb\"\x0d\xab4\xc2'U\xd0L\x91m\xda\x04\x9b\x9bD4\xfc\xc8R\x9e'\x1eK?\xb2\x7f\xe4A\xc2\xe0\xa3\xb6<\xe4\xe3\xf3 \x0c\xd1\x0f\x88\x8c\xf71\xf5\x02\xf0k#\xdeF\\\xbeZjQ\xa8\x08 -\xa8H\xeew\xdb\xe72\x96|d\xa9\xacB\xfe\xb6V\xa1q\x99\xf1\x86\xc1\x86\x9c\xfb\xc7\x02\x13\x08P\xf12\x02\xbc`\x035\xba\x0b\xc0-\xfd\xe5^\x9e\x8a\x99\xc5\xfb\xc2\xa3\xec\x15]\x05!T\xc5\xa3l4\x877\xb4\xa2(;\x05]\n \x98\x06\xbf\xa3\x03\xa7\xc0\x8e\xfc\xff\xce\xd3\xcc\x04\x1eQH\xb2\x95\xc9\x12\x96y\xcb\xa2\x80|\xb5\x02\xdf\x84eC\xc4\x8b\x05\xf0'\x9a\x04\x12U\x00\xe8Z\xbeZ\x80\x7f\xd6g!\xc0^\xd9\x0eC\xa9\xae\x83\x0fg\xc2Wx\x06\xbe\xc3\xe7\xf8\x0e_L\xf0\xe4]<9\xbc\x89\x97\x8a\xfe\x82\xdf\xa3\x08'\xbe \xf3}\x12\xb0(\x03\xcc\xf0#O\x82\xdf\x05\x9f\x18\x16%y\x99;Z\x16\xd9=\xea\xfa\x89%Y\xe0YjZ\xabL[=\xe0\xb8\xdb\xd1?1\xa8\x84\xfa\xa2:\xd0\x12\x99K\x9a\xb5\x91\xd6RNo\xc2\xca;\x02\xbf\xa4\xd1\x02Ned\x98a8\x8e\xfc\xf5/S\xe2\xc0\xef\x11\xf5\xd7\xa3k\xac\x16\x91\xfb> \x16AT\x02sxG\xe1\x03\x9f\xf1EB\xe3\xa5\x85\x90\x0fVt\xc1L\x92\x01\x12ZI\x86 \"xU\x11\xbe\x86\x80\xd8\xf1X\x8c/\xeb\xcfx*\xbeJ?\xe3_\xf8\xbc\x87'?\xc2\x93Y\x12\xb1\xf0-\xcd\x92\xe0zJ\x1c\xf3\x15\xe9\xad\xcc\x16\x93\xfa\x06\xe4UE\x892\xc9R\xca6\xd9\x9f\xd9\x0d\xdci\xa4P\x95\xfa\x8d\xd6qs\x1a\x8b\xd3^\x01\xaa\x17\x1c\xf2,Xi8\xf8\x89@Iy[\x81;\xcdW\x14:\xcbXr*p?\xac\x0b\xf9>Je\x02V@\xa040\xa6\x95'\x8d~\xb7\x1e6`\x8f\x0e\x05\"v\x14-\x00\xe96\xd2\xb0r\x1cp\x012\xb2+\x9a|f\xc9 \x90\x1c\xf2\xf7\x88\xa1\xb4\x86\xcc|\x1b\x18\x80\xab\xc0\x0ex*\xaf\x085h*o\xa1,\xc0\x05\xd7c\xbeZ\xa15\xf60\xde\xac\xb0?\x07>\xac?\xe3\x0d\x85M\xf1=U\x84\xcb-qV=\xc9R\x9d n\x87\xcb\x96lE\x15\xa2\xc6>\xcf-\xd2\x82(_\xbd\xf72\xba\x86\xf5[\xbe \xdf\xd0R]\xa4\x12\xae\x89\x164O\xbaa\xc73\xa5<\x04\xcd ld\xa7q\x00\xd9\xf2m\xdc6_\xb3d\x1e\xf2+k\xa6\xd8\xe4Z6:%\x8eN\x1a\xc5*\x0d\x1b\x17\x05s\xb6\x0c\xbc\xcf\x11KS\xb3\\\xa6\x13\x91\x821\x0d\xa2\xec\xbd\x92\x08\xc1\xcb\xc8&\x10\x8ai\xc4S6\x018\xf1k4A\x81\xb2e\x81&\xcb\x17\x1cRP\xe7\xb5\xf5\x88\xa4\xda\xcb\x9a\x07v=\xc9^\xaa\xf6)\xeb78\x1c[\xa0\xee\x0e\xe0\xf2}\xc4 \xc1V\x00\x97\xa3\xc8\xac\xa3\xec\x17]\x8f\xf8m\xad\xe2(\xfb\xd5\x80\xfb\xb5\x05\xeeo\x06\xdc\xdf0\xb8\x84\xa5,Y\xb3\xa30^R\xf0\x1bo\xbc\xb7\xc1\xa71\xf3\xb2\x8fby\x9b\xa5\xcaT\xb4,`\xee5+\xc6\xb7\x92\x80\x94\xc07\x9d \xa2r|\x18\x136\x17#(\xfea\xd5\xb1\xf9\xaf2\x17\x1b\xb2\x82\x9ey\x0d+\x0b\x00U\n\x08cP\xba=a1\xa3\x19(\x89A\x81\xe2\xcd\n\xfbR0\xe1N\xf1\x1b\x85\x93<\xe8\xc9u\xc6\xa24\xe0Q\n\x05\xea\x89-%_1\x9a\xe5 3\xcb\xe9$\xb4\x94\xd2oA\x074\xcdCK\x16\xcflR\x94\x04g7\x12\x1c\xf7\xa6\x1e\xb5\xb0\x87)c8\xc3\x9f.i\\!I!\xa1\x95$MC\x1e[\xbe\xa2 \x184\x8fyyH\x13C\xe8SO\xc2\xbe\xa5@N\n\xb9\x84SO\xc2K\xd9\xba\x1b'\x8c\xfaoY\xb6\xe4>\xd4U\xbeb\xf5\x94\xda]\x02\xb8|Ca\xfd\x97l\x1dh\xe1\xa5\xf9\x8aB\xb3\x15.\xe0\x169kKN\x90y\xcb\xb3 \x84\xe5h\xbc\xa1\xf5\xf3X\xd3\x86\xe2\xb7\x95.\x14\x99\xa5\x0c\x02@\xed\"\x884K\x82\xcf,[&<_,\x8dc\xb3\x92\xdevvV\x00\xcd\x03\xb4ZC\xdb)*o\xb8,\x03\x94\xf0\xcf\x96\x95 Y/i\xba\xa4IBeWE\xca\xc8\xd7I\xf8\xa7T!^\xae\x81\xa2\x14\xb7\xaf\x04\x01\xf3&\x88\x98G\xe3\xb2L(\x13Z\x0b\xfc7\x0f\xa2j \x91b-\xf26\xc8\x04\xdd\xb1\n\x8c\xa6\xad\x8a4k1s\xbe\xa1L\xeb\x8c\xf3\xcfL\xd3\xc2\n\xfc\xcaB\x0c\xa7y2\xa7\x1e;\x95X\xc81_1\xe8\x1b\xb1\xd4\xdf\xd0h\x91\xd3\x05\xc0W\x12\x90\x12\x19\xbd\x0c\xa5\xb7&\xb1d\x8c7\x146Y0 \x02\xd4/+\xcc\xaf\x05\x0cv\x96e\xec:;\x02\xfdV\x01\xc6\xae\xb3\x91\xd4v\xb5\x80\xbed\x1eO4\x0e\x00p\xbfH\xb1\x141\x91/\x94h\xc3\xbd\x02\xa0\xa0\xf9\xca\x17\x0c\x92\xa3\x1b!+\xe98$7\xc7%\x019. \xc8E;k\x14t\x91\xd6\x86\x06\n \x13\x05\x94%\xdb\xb6\x7f\x1e\x05\x9e\x8d\xb7Qy?\x04~\x00\xf5\xc1\xdb\xe82\xf0\x03{E\xa0|e@\x83\xaa:\x0e\x9e\xa5\x1fXr\xb2\x92\xc0Y:\x8a\x05\x85\x8a\x11\xbf\xeb#\xe3>\xd7Y\x8f\xca\xeb]\x0c\xf8G-\xaar\xd6#%\xb6\xc2\xc0^\x9b\xb2%g=2dM\x18\xf8\xdb\n\x87\xe8\xacG&\xcb\x88\x15P\xdb\n\x19\xd65\xf32\x9e\x9c\xcc\xe7\xcc\x13xF\xbe\x8e\x18\xbcc5\xb1$\xb5\xb1jk\x96dG\xfe\xfaW\xa8&\xc9@\xf0\x86\xa1\x1d\x91Y\xca\xdd\x00\xb4E\xecVB\xffZ\x83F\xeb\x0e\xd8\xd5\x0f\xfcZ@\xca_\x16\x983\xc0 \nL\xbe\xa0\x90ip\x19\x846n\x18P%>\xacW<\xf1K\x89\x8fxk\x91\xf7\\% \xa9Q\xb7E\xeam\xb4\xc2o\x8cp\x9a\xf1\xba\x90\x95\\\xdb\xef\x87\xafq\x04p\x8d#\x80\xeb\xe3%\x8d\"\x16J\xad[@\x91\xf5$\xec\x1ba\x10}>\xf2\xb2\x1c\x88^\x07^\xa7T\xbe[\xc1\x13/\xe1\xa1\x01.\xdfm\xe0?& \x88\x96\xb0\xcb\x04\x15EC\xe6G\xb3\xd2\xb6\x1aO\x97\xfc\xaa\x00L\x97\xfc\xca\x06x\x16dF\x95\x99x\xb3\x82\xca\xab\\\x05\x89_\xe2^\xaf\xc2\x1f\xc0\xd3\xb6s\xbd\n\xa7\x97\x14U\x98\xb8^\x85\x11\xbe\xc8 \xe7\x17\xf8\x00\xd4\x10\xa5SLAG\x81\x8a\xb3W})\xa4\xe8:\xbc^\x85b\xcd\xea\xf6`J;D\xfa2@\x1as\x83/\xae\x1b|q\xdd4\x17W= \xf9\xf2\xefh]\xbfs\xbe:\x8a\xfc\x0fT\x1cQ\xe5K\xab\x7fT\x8a*\x1f)\x17\x02\x81\xc0\x95\xf5@\x11Dz\x1982Ug`\x84R\xcc!\x04il\x85\xa4Y\x1dil\x806 \xb9\xec\xdb >v\xd6!\x17z\x1b\x84Z\xe1\xad \xb0\xb2m\x10zI[\x8c\xdc\x8a\x85h\xcfWk\xb0WH\xd9\xc6\x8cL\xcd\xc8]\xa4\xaa\x9d*#\x02\x8e?\xb3\x9b\xd4\x0d\x06\xe39ON\xa8\xb7t\xed\n\x84t\\\xae\x08\x19\xe7vgH\x02\xf1\xeb\xc1\x03\xe2\xd2q\xe3\xeb\x12H@\x18\xeax\xdf$@\xc7N\xddu\x02\xc7\xedW[\x82\xfe`\x0e\x15\xa4\xa3\x85Guk\xd7T\x81\xef\xe2>>\x1e\xe3>>vw\xeb\xd5\xcf\xc16\xbdj\xcb\xaa50\xdf\xea\xf8\x05\xa69k\xc3;\x8b\x80\"/\x0e\xc8\xa4\xe6=\xb1i\xaeN@2\x12\x02]\x83o\xd0xIS\xe6\x7fd\x8b \xcd$\x15\xaf\x97\x10\n.\x1e\xe5\xf1~J\x1c\x1eID\x85\xa0)\xfdh\xd7\xf6\x06\xb4r\x11\xe5\xa0e\x90\xf5M@\xd9&\x16LC\xe4\x01^\x9a9\x19\x8f\x7f\x08\xf3\xc4\x19\x12\x07\x04\x01\x10\x1b\xfb-\x8br\x95\xf2\x8a{y\xaa~\xff\x95\xdd\xbc\xe4WQ\xf9\xf6)V\xbf\xdf\xf2\x06\xe8I\xe47'\xab\xa9\xa2\xbf\xa1EV\x8b\x05q\x87\x0b\x12\xfbf*\x0dM\xa7=\x0d\x82Mc\xd4io\xd3\xe0\xc2du\xda\xcfB\xd8\xb0j\x9dV\x8d\\\xf1m\xdb\xb17\x88\x1a\xed\xa6\xa5a\xab\x85b\x0f\xdb\xc4[\x8e\xbb\xb4KP&\x84\xd3\xc2PA\x07\xc7o\xb1\xf3\x92Q\x12\xa4\xf1I\x0b\x14\x8f\x05\xd0%\xcf#\x1f|5\xc4v\xd8\x90\xcd3\x13\xf8\x0d\x9b\xdfn\x94\xbf\xba~m<\xc0\xb2n\x0d\x8a\xfa\x9e\xbb\x16\x07,6\xde\x80~\x9a\x03\xa9\xcd\xfes\xc3\x93J\xac\xe6aH\x96Cbq\x10\xa7\x06\x9fC\xb4xr\xa0]58C\x91\x04|\xa6\x98\xd7!I\xc6\xa5\xea\xba\x8e\xb8\xf3Ry\xb7c\xa9\x0bf\x99\xd5\xfe\xfd \xf9\x8c%N\x93h\xfce3X\xee\x9aE\xa0\x84\x9aNImF\xd8u\x96P/\xd3wtu\xca\xa4%|\xf4\xd6\xa2\xc3\xea_\x0fdF\x0em\xb1\xd3\x06d\x8a\x9a[\x88'\xbd\n\xdam\xde=\x9a2\xe3\xd8\x9bZW\x9a\x1b\xba\x1c\x82\x9d;Y\x923\xe9#\x9e\x8f\x95\xaa\xed\x89\x1f\x80\xc8Q\x9a\xf1\xf82\xb6\xc7R\xfa\xa2\xd5\x07T\x8b\xd1!\xb8\x82\xc7\xb3\x8b\xf6\xc1\x99mo^qd\x96\xc7d\xf1\xe5\xbb}\xb8<\xe9\xed_\x87\xe3\xd6\x12\x17\x8b\xf4\xfc\x8eI\x89\xe0_\xaa6\xe9S\xdc\xd2 \xb5\xa6\x14\x19@n\xa4E{G\x0b\xeaT\x8b\xbdz\xb1t\xe7\x83^\xdd\xd2$TG\x97$m\xd5\xd9!\xd5\x91\x0edFZ\x1c94\\b\xfa\x1f\xf2\xec\x0d\xf8\xd3d\xf5\xe8k\x16\xaf\xa3%\xf1*M\x97a\xd1\x03u\xb5c\xb5\xc1\xc3\x8d\xaf.!\xf5\xae\xcc\x0c\x1e\x99\xc9\xe6\xaf\xbb\xc9\xfbP\x9c\xc9\xc9\x95\x05\xdbc\x94\x9b\xd9\xdf\xab\xf3J!\xce\xfc(\x8f\xdd{u&g\xae\xd2\xeb\xf0\xb1jM=\xdd\x97\xf0\x8f\xea\xbdZ\xaa\xf4\xfa(\xacUz\x9d\xe9Z\xa9A\xab\xc3/\x14|\xdd\x07\xdf\x8d\x1c\xcd\xfa\xe8\\*\x1e\xad>\n\x17e\x84\xaa?\xbe\xd6\xf2\xaej\xe1\xe8g\x0e\xbd\xe4\xe0G\xc0\xa1Q \xdd\xe3\x9dD~\xe5\xfdu\xc6\xf4\x15\x89\x91\xaa\xfd\x0f8\x97\x8a\x95\xf1h\xf4!\xa47\xc6\xcf3ya\x08)a\xe0}\x86\x1fUn\xc7\xe3\xb1,\x91C]>\xcf/Cv\xac\x81\xfd\x84.\xf4\x7f\xd5*\xf9S\xfa7\x90/\xd7A\xa6\x7fC\x8c7\xfd\xf2~]\x02\x15\x8d\xf5\x13\x0e\x1c\x92\x9f\xcb.)<3$\x0e[\xc5Y\x00Q\xcc\x1c\x16y\xc9M\x9c\xe9\x17_\xfdH\x12\x0e\x15\xce5{\x16D\xb1lv\x10\xadi\x18\x00\xd4\xe7\x92_\xfb\xccn>$pO\x02\xbf%k\x16r\xea\xeb\xff\xcc\x7fI3Z\xbe\xbde\x19\xf5\x8d\x94\xa2\xd5+\x93\xd5\x83\x97\xb7\\v\x14^\xde\xe7%\x94\xee\xf5\xaa\xe4\x06c\x9afL\xfe\xc8S\xf9C\xcd\x93\xf8\x0f\x12m\xe2\xc4 _\xe8\xc6&4c\xe5\xc0\x80s>\xc7t\xf1\xeb\xa4\x8c}\x96\x83\"~\xa9\x1a\xd2\x8c\x86\xa1J\xcd/WrV\xd2<\x8d\x99\x9c\xb9,X\xa9P\xd4\xf0\xc6soy,\xc8\x87\xb0xUS\x0c\xbfu\x07\xe1\xa5\x18\x08\xb8\x1f\x0b\x8cE\xba\xe6a\xbe2\x1a{EA\xf6\x0e?\x97\x8c\x85\xcey\x0f)\x91f\x8d\xd8l\xe7|\x9c\xf1Oq\xcc\x92c\x9a2w@\xb6\x05c\x16\x06\x1es\xeb\x9b\x95(\xcbg\x87G\x10\xe3\xb7\x99\x0bv\x98\x19\x8f-\xd9\x1c\x15x\x90;\x8a5Z\x0c\xc1KiFD\xb6\x89s\x0f\x92\x8c\x04\x91*T\x0f\xe3\x0b)P\xe3Cr5K\xce\x8b\x80\xd9\x00Y\xf3\xd2~\xa2PS\x91X\x08\x07\xae\xad\x16\xca\xce\x18\xe2P\x8d/\x12\xce\x81.}\xfd\xb2\xac\x1f\xa9\xe9\xd4^\xd3e\x9ee\xd2\x0c\xf8@\x06\xe0T\xdb\xdbHH\x8d#W\xa6\x08TF\x13FU\x9a\xf1m\xfdK\xf4\xec\xb8\x95\x92\xbf\xd8\x90\x92\xe7(\x13D\x13B\x87pR\\\xcd\xd89.-\xd8\xba\xe9 \xf5\xfb\xd3\xeaGpjtPT\xc7\xeaD\xe8\x07\xa6O\x8b\x0e\xe8\x97U\xcc\xdd\x01}\xa2\xb0z\x17X\x81\xf1;\x01\xfd\x1e@pRt\x00\xbd\x86\xd5\xd5 $\x0f\x96\x0e\xb07\xe2P\xe9\x01\xa3\x0e\x9c^\x90\xc5a\xd4\x03Z\xe2\xe7\x0e\xc0\x0fp\xfat\x01\xf5X/\x1f\xd4\xa9\xd5\x05\xa6O\xb4\x0e\xb8\x8f\xe5i\xd7\x05 'a\x07\xd0\xa9<\x1b{@\xf5\xe8\xc3\xa9:S\xbb\xc0\xe4y\xdb %\xcf\xe2\x0e\xb0\xb3\xf2\x9c\xee\x80\xfc\xc9<|;`\x7fV\x07\xb3\x9d\xbf\x12<\xc0\x1d\x19\xe5\xbfj\x8a\xab\x9do\x94\xfe\x9e.\xdd\xa8M\x82\xac\x9f\xfbf#!\xb8\xd3\xdd\xba\xd9\"\x88(`\xba\x84)\xa2\x19\xde\xdd\x9a!\xc9\xf4\xf6\xa1\xdeU\xaeq\xe4\xe9\xba\xc9p\xbf4X\x81\x8e\xbev\xc9G\xaa\x80@Y\xf6\x01\xb4Nc\x15\xec}7\x1a\x7f[P\xe6\x1d\x80\xdd\x12\x18\xa2\xe6.\xbe\xdb\xdc\xbd\x14\x9cUGc^*\xae\xab\x17X\xd6\xdd\xb9\x97\x9a[\xeb\x01'9\xb9\x1e\x80}F\xf5e\xc1\x01v\x02\xf2\xae\xadkq\xadHz\x8e\xfb\x99\xc1\xf6t\xe1a\xcd\x12\xf5\x81\xeb\xb3\xa8\xcfJV\xaa\xbd\x8f\x16\xef\xb8\xa4g\x1f\x8fLABG\x9b\x8e\x9aB\x86\xbe%\xfa\xf4\xa4\xc5\xbb^\x9f\x9e\x9cU\xd8\xcd\xf6O\xad\xef\xf6)\x19\xe4\xa7\xe3\x1b\xab\xbb}\xe3g\xe0\x88\xdb?\x81\xf8\\\xd3O\x9fO\x1c\xf3\xb8\x93~;\xeeF\x98\x1f@d\xd1\xde\xd2\xa6?\xc4\xa6\x08\x96\n.-q\x9d\xfd'\x0e\x1e\xc8H\xf0M\x17\x10\x90\xa1\xbc%\xba)9\xadf\x01u\x80\x05\xed\xb7?\x17\x83!\xb9\xa8\x94\xbd\x07\xa1/\xdcV\xf3H\x1e\x89\xa5\xdcw\xeb\xd4e\xe3\x8b\x8c.\xd0\xdb1b\x08j\x05\x1fm\x17\x0f\x04z\x18\x90`\x83\xf8\xac\x9f\x08\x96\xfe\xcb\x17\xe2\x9e(\xde^G\x85\n\x0c\x89\xdf\x0d\x16_\xaamh\xae\x820|\xc9B\x961\xcb\xf0\xdc\xfb\xd8Djll\xbd\x8c\xce\x95\xc3Iw0$>4\x0dR\xbb\xfaU\xbcYd\xef\xc7\x90zG\xd9\xfb\xa3}\xd4\x81=o\x11\x18h\xf7nc\x8f\x86\xa1\x8a\xacn@\x97\xcd.~%c\x9aC\xbc\xf8\xe3\x90\xa6\xa9\xcb\xeba@\n\xa9\xb0\xf4\x8f\xd0\xd4\x06a\xd2/\xb1\xe0-\xb0\xec8e\xb9\xcf\xcb\x0b\xed\xca\xadhM\xfd\x8a\xdf\xd3\xa85o,\x9a+\xc4\x0b\x83\xf8\x92\xd3\x04\xf8\xe6>~\xda\xb54\xa9RP\xe9\x94\x1c\x126\xae\xa4\x17\xb7\xa6\xd5\xe4\xaee\x85Mw\xf0-\xa7;\x90^\x86\xcdI\x08\xeec\x12&\x93\xc9\xbf\xc1\xdaM\x98@\xe2\xbeV(\xff\xf6k\xafy\xf1\xc3-79\xb8\x87\xbd\xcf\xecf\n\xf7V\xf5[4\xa2<\x02d\xa0\xe0\xdf\xdce\xe2\xf1\xb2$\xfc+T\x80f\x83/\xb5\x96|\x1a\xb6\xe5\xaeXF[\xb2\xa51\xa8-\x17|\x19\xa0\xd8\x81\xc8\xb8\x16o\xb9\x1f\xcc\x03pA\x90 8wwR\xbf\x18\x14\x8f\xb7\xa4\xc9q5\xf4~\xe7v\xfd\xccnb\x10\x1cH9\xae\xd4\xfd8\x94nm\xa7\xb5x\xa4\x04\x17\x8f\x7ff7\xb7\xf8\xaa/\xb8V\xf3\xa3_\xbe@z\x1e\xd7\x9a\xc2\xc6\xea\x03}\xdbs\xb5\x0c\xbc\xe5\x86\xadi\x19\x83\xfbll%\x05Eg\xf4[b\x00:$\xc1\xb7P\xe9m\xee_\xfcP9I\xbd)qNR\x8f\xa26\x05\xa0=}I\x93)q\x08\x92\xfd\x06\xf4\xad\x9c\xa3$\xe1W\xe27\x02\xf2)\xd6\x00\x9f0\x83\xc6\x8f\xca\xd0\x04 >ZLM^\xf2\xabH\xc3\xc8\x9b\xc7&\x08\x0b\xa7\xc4\x91\xa4\x1a\x92\xfd3\x18K\xbe?E\xb2\xde\xb2(\x9f\x12\xa7\xa2\xf9\xda\x00:\x8a\xe3\xb4\x13H\xb2MS\xe2\xc8\x1fo\xb8\x87\x19O\xbc\xe5\xbf\x7fH\x82\x08\x14\x84\x00?9\x9f\xa2\xc0gQ&\xf0\x89\xdfjg\x80\xa3\xe0\xfd)q~\xa0\xdeg\x9b\x85\xc5\xb3)q\xce\xe8%\x923\xd9\x15}\n\x19\xc5\xcc#&{ba\xc8\xdb\xedf\xe6\x13\xd1M\x8b\xaf\xcb\xc9S5T \xc7\xec\xc7&\xa2\xc1G!ZR\xb4U\xca\xe6\x9b\x99\xbb;S\xb8(L-\x03\xbb\xfb\xb4m%\xef\xedZ\xd6\xf0\xde\x1e|s\xc1\xd0\xf5\xb9\xf7H\xe5Z\xd6\xdd\xdec\x18%\xcc$|O\x8c\xd1\x8f\x1cu\xcb\xb5\xf7\xb4c\xdb\xec\xed\xb7n\x9b\xbdg]{\xe6\xd1N\xc7\x8ey$Z\xfe:J\x19\xea3\xe7\xd1\x93\xb6\xed4\x81\x95\xf3\ns52\x81u\xf3j\x17\xcd\x12\x83\xf9j\x0f\xcd\x12\xady\xf5\x08\xcd\x12My\xf5\x18\xcd\x12\xc3\xf8\xea \x9a%\x06\xf0\xd5S4K\x0c\xde\xab}tC\x88Q{\xf5\x0c\xcd\x9a@\x97w\xd0<9\x1c\xe8x\xec\xc2xL\xd0\x01y$\x06\xe4]\xbe\xb2\xac\xe8 \xccQ+6\xd9\xdd\x15U\xbce\x19\xada\x0e\x9c\xcb\xb3\x9f\xc0\xd2\x0b\xfegvc\xbb\xd1\xcd\x04\xc99\x03\x90s\x19\xec\xf63\xbbir\xa9\xc0\xfcV0\x1ah\xc8\x97\xde\xe3\xab\n\xb9_\x1b\x8d@\xcf~[\xa3\xb4\x7f|\xabld\xa2\xfc\xe1\x93C\x8d\xcc\xc8\x94\xc8\xb0:\xe3y\xc2W\xc7\x8a@\xab\x07DF\x15d7\xa2;\x82YAy\xc0x\xd5\x06eJ\x9cr\xc6\xee\xc1\xc9\xb6\xd4\x11\xfb\xd7s0>\xcd\xa8t\xf7\xc3\x92\x7f\x1d\x03\xd3\\-\xa0\xbb\xc3R\x1bI/\xb5\xa9\xcf\xda\x81<\xb8]\xf4;\xa0\xee\xc4\x96\xdc\x91%\xb2q&\xd5\xb5\xfd?\x86i\xff\xb7X\xf1\xb1\n\x15\xfd\x7f\x8b\xb8\xe9\xdf\x04O\xb00\xa3\xbft\xf1\x84\x1a\xf1JhCv%\x13\x04\x16\x05\xd5\xba\x97\xd5\xfc\x11\x1b\x1b\xc9\x0d\xc6\xaf\x11\xa74\xcc\xe8\xaf\x1b5\xe5\xd7zS~\xad6\xe5W\xbc)5(\x1c\xa8Ws\xff\x86-%\xc8\x91\x86\xff\xdfj\x19 \xce\xf2\xf1\xa0\xb9\xac\x9eu\xd1\x1b\x88\xac\\\x1f\xe0\xcd\xb1\xbe\xc8x\xfc\x86\xadY\xa8\xe2\x02O b`u\x11\xf8\xe0\xf5KdO\x90\xecJ\x84\x8e\xa9\x8a\x91R\x84\xc0\x80 \xa9\" \xc2\xa9U\xa3y\xd8\xb0\xeb\x85\x8co\x83\xe8O^dta~B\xe0\x82q\xc6\xdf\xf0\xabB{\xd3^\xa9\xb6\xfd\xfe\xf4\xf1uQ\x87\x91F\xa6\x88\xda\xfesl{F\xb5}x\xab\x196\xa7\xaf:3\xf5x\xcfS\xb2U3\xa0\xcfS\xf6*\xb8\x14\x13\xb25\xb9\x8f\xb6\x18\x91c\x1e\xd5\x15\xe6\xc51\xff\xf0\xb7\x87\x87\xdf?\xac\xa6\x0b&\xf9\xe1\xdf_\xfc\xb6\xf5\xdb\xe8\xb7Q-\x0f7\xd4?\xfe\xf1\xe4\xf8\xaf\xa7\x9f\xde^\x1c\x9d\x9d}\xbcxw\xf4\xf6dJ\x1cA\xc7\x8c \xe4\xf0\x08b*\xa79\x1a&\xc3\xf7\x8fU\xee\x19\x97\xb1\xb4\xbb\xf0\x081\xe8i\x9ct%\xe6\xd5^\xc6\xd2LTt\x08\x01f\xd88aqH=&\x10\xaaC\x1c\xb2M\xe8\xb8\xd9~\xb2M\xbe;p\xbe#\xdb$\x13?\x9d??\xf8\xae_@s\x1a}dy\xca\x9a=\xe9\x8a\x80\xa8c\x9b\x16\x16\xec.\xd6\xae\xf6\xce\x8aJ 6QL\x93\x94\xbd\x8e \xf0\xe4dg0\x94\xc1\x7f\x80\x8eo\xf6\xc2\xb6/\xeeY\xa4\xf6\xe4\xf1\xe3\xddI\x17\x92\xab\x0fQ\x11\xc7KL\xf6d\x08=\xdc\x91\x91\"wdH/V\x84\xdb\x12ks\xf4\x88< \xc1s\xc2\xc9\x0bB\xd1\x10_E\x8d\xb9\x19f\x90\x93m\xf2h\xe7\xd9\x93!\xa1\x03Y:\x17\xff\xb6\x0f\xc8\xa3\x01\x89\xc4\x7f7\x13\x7f\xd9X\x0b\xa4\x8f2\x97\x0f\x06d\x1b\xcd \xdbd\xd2\x96\xb9\xdb\x96\xb97@f9#\xffq@\x121\x00\xffa\xc6\xa6&\x8d T\x91\xdaD\x17\xc48lo\xab\xf6c\xcdGq\xa0+?5 _\x88\x1b\xa9\x9f/^\x90\xc9\x93\xfb\xc0G\xe6\xac;\x93\xc7\xe3'\xe3]\xe7\xf6\xb5u\xd8,\xb9\x91\xfb\xe8\xc9`(m\x91p\xdb\xa5I\xdd\x9aG{bx40\x8f\xec}\xa8\xe5\xd9\xc6\xa1\xb7\x04;\x1e)kw\xd6\xa2/'\xe0&\x8a\xfb-\xe3\xce)pV\x85\xd5\xbb\x01\xac7\x1b\xe8O\xd4T\x8a\n\xdcL\x06\x11\x1e\x08\xf4\xc7\xed\xe6\x9e\xcd\x16\xa1\xa1\xb4\x04\xf2\x8c|&N\xfd\xc4u\x1e=rDY\xf1\xeb\xb13\xac\xb8\xf3\xb8\xe7\xf8WbB\xf6,\x83\x9f\xa86\x9d\xe6\x97Y\xc2\x04\xd2\xe3EX\xe0\xdb\x7f9\x1b_\\\xb0\xf4-\xf7\xf3\x90\x81!\xdeP\x86\x87\x8b\x98\x97\x01\xa6\xfe\x90\xf0u \x86BG\x1dm\xb6:p#w\xff\xf1n}\xe5\xf1\"\xeb\xd1\x00e#\x02\xabY\x83\x8a\xf7h4M\x1ejM,\xa7\xa2\xa7MIwL\xc5J_\x12\x1dw\xad\xda_\xae\x93\xefyDU\xad-\x83\x18\xb9u\xfb<\x0eK:r'\xd8\x96\x16\x19{O\x1f\x9b\x18T&=\xc1\xc7\x9a\xfes\xc7Z\x9f;-\x07\x9en\x99\n\x1a\x8d|o\xab\x1fU\x016\"n5\xe8\xdd`@\xb2e\xc2\xafH\xc4\xae\x88@2`\xdc\xe0:\xc74\x8axF\x04oJ(\xf1\x04\xc3IhJh\xf1%\x07\xa1~\x14\x17\x8b\x99\xdd\xaf\x95\x95y\xff\x862\xb3e\x1f\xd9\x9c%,\xf2t\xf3\xc4\x87\xc8\x92\xa6\xd1w\x19\xb9d,\"A\x14d\x01\x0d\x83\x94\xf9dD\xd2\xd3\x05\x1b\x93O)+\xeb\x1b\x83\xb4\xa2xu\x07$\xe3\xf2d\xcc\x96l5&\x1f\x19\xf5\xc9J`m\x9a\x11\x15hu~9^\xb1\x87y\xca\xa4\xa8cT~\xc5\xa9\xdf\x8a\xe1\xa3\x91\xb5-~\x1b]A`\xd0\xcb\x95 \xb8\xe1&\xaf\x80\x0b\x08\x95kn\x04C^r\x1e\xa2\x19\xa2\xb1h\x86\x8c\x94\x8bf\xc9\xa3\x15\xcd\xd2\xce\xc5\xb1\xac\x9b\xd5\xa5\xa5\x114\xc2[\x0d\xfdy?Ge\x8bLK\xdb\x90r\x9a:\xb2\x14\x95\xf2Jk\xc7,\xa5xd\xab\x0fr\xa4\xc7F$\x17\xe2\x01\xe0]\xb8\xa6b\x18kW\xbf(\xff\x1e\xd5\x160\x91r\x83\xb1\x99 \x0e\xec\xa2\xec\x1d\xf0F\x83\xa8o\xa2\x14u\x82\xd14\x0d\x16\x10\x9e\xbb\xaf\xb0\xe79\xc9\xc8\x0bB\x93\x05\x88\x94S%\xe6yN\xb2\xedml\xaf\xe8\xa5^\x14\x98e\x88\xe1t\xf1\x89\x84\x04\x91\xe8\xa1j^y,-i\xfa\xfe*R\x8e&o$-')qqN3\xa9\x1b\x1f\xcd\x92\xf3\x1e\xd7\xdd\x86 9~\xe8\xb4\x8d8Q\x9d\xf2\xccN\xa9Q \xdf\x93=\xd1\x1e\xc95\x01\x8e,\xfb\xbdwN\x0e\xab\xaf\xb8\xfb\xd4\x159 ?p\x1e2\x1a\xa1\xa6\x04\x0b\xa2\x0c\xe3\xe7\xcd\xbc\x1b\x84e\xd3\xe9x\x14n}S@\x0e\x89\xbb#\x0e=5\n\x03)\x81\x88\x9b\x88\x0b<\xa2\x80\x8b\xc0\xe6\xf7\x05\xbd\xe3\x8d\xe3H\xf2z\x1dNb\xdc\x99^u\xcd]Y\x8a\xe6\xd58\x00\xe5\xdb\xbdp\xd4\xeeJ\xcb\xd3\xe8\xcb\x17\xb2%\xe8oZ\xd2\xdf\xba\xce\x12j e$\xf5\xb2\x07\x82\x0d\xa8\xbb\xb2\xd5\x0f: \x95\x11\xbd\x8f1\xa9N\xd1\x1d\x87\xc5\xaf\xe0\xad\x96\x91\xa9\x00\x9a\x83\xe3\xd70\xdf\xa6\xe3\xf3\x96%\x0b\xe6\xdfit\xba$OX9\xb1_/\x8b\x02\xed\xacf\x8b\xf3j\xd2\x85\xa1H\xc1N\x1a\xcb\x08\x1b\xd3\xcd\xa6oKV\xb9*\x07O\xcc\xc8)L\x0b>\x81\x06\xa89}f\x0d\x9bL^\x90\x9e\xe6\x97\xa9\x97\x04\x97\xfd\xe7K\xb5\x1d\x97\xa9\x89\xc6\xe4Q\xaa+\xed\xd3\x86,\xb9)\x1a\xd1\xb7\x0d+p\xbeQ\xffZ9\x1ef\xe2\x81q\x1f8.\x92%\xdc\x92F~\xa8\xa8\xe2\xf1e\x10\xf9\x90<\x18\x0cI#\xdbE\xfc\x8c\x10\xb47\x9f*\x1f\xef\xd5\x9f^=qu\xb3\xaa\xbd\x13\xecd\xaf\xa6\x15\x92\x83\x97\x81\xff\x96\xe7Q\xe7]\xab~\xe0\xa3\xe64\xb9\x9b}\xef\xe7 \x0c?2\x8f\x05k\x84\x93h\xfb\xf0U\xcbN\x90[\x0c\xdc\xc3\xa8\xb9j\xf2@M\x7f\xe5\xfaik\xea\xa7hu\x9b\xd1\xf9\x84\xcc\x94)\xb3\xe8\xd5\x8e\x02~\xa3\xaf\xd7\xb17h\xa5\xd7\xcf\xc2jz\x15c\x18\x19\xb6q,\xb2\x9b\xecd5\x7fm\x9c\xf7?0\x16}H\x98GC\x0f\\\x19\xf9\xca[\x7f\xadi\x06H\xc0#\x10\xa3T\x1b%o\xe6\x99\xaf\xb4\xd4\xab\x99v\xa2\x0b\x01\xaa\xf1%\x0d-|\xfd\xd4&\xc6\xc4\x04}\xa7\x06\x14\x1fk\xfb\xb5\xcf\xa1VCY}\xf9[\x02:\xb9\x07\xc6\xd8\x8eK\xe9Z\xfb\xd9\x07\xec\x8b\x14'\x00\xd1\xd9\xd9L]\xe8\xaa\xc4\xc3m\x1c]\x9f\xea\x08&\xcd\xef\xa2\xf2\xebO\x96\xdcl\x00M\xcc\xab \x1a\xc7\xe1\x8dk\x11\xe2`\xcfW\xe2\xd1vo\xc6\xb6G}s9\x06y\x9a<\xb0\x97\xbdk\xb0\xcb\xb3\xccGQ+6r^\xee\x8a\x0e\x8aI?\xb0<\n\xe7\x9a\xfd\xcaDp\xd3\xb5\xc4\xc8o|\xb7\xab\xd1\x18\xf4\xc7#\xedb?\xd2k\xa8z\xe1\xb4T\xef\xc0~\xd3l\xca\xb4q\n\xc8|\xbe\xb6\xaf\xb8\x16\xe9e\x1f\xbc\xb5`\x99\xb4\xb7\xf2\xb5zu_\xec\xa59\x8c\xea\x15\xc7\xf5\x908g\x9cP\xcfci\n\x97\x12W\xb2\xfa\xe2\xf6kHnxN\"\xc6|\x92q\x88\xe0\x1f\xcco\xc8\x1fD]kNI\x96\xe4\x8c|%T\x16\x9f\xf3<\xc9\x96\xc5\xe50\x01\"\x12\xeeF\xe0~q\x00\xf7HcgP\x1c\x04\xf3t|U\xedQ\x9fq\xe8\xa7\xda\xa5\x1f}\xcdi;\x10\xdb\x11qT\x96l\xae\xab\xf6\xa2\x81\xf9\xd1\x96\xe5\xdf^\x0b\xad\x9c\x02\xb6=\xd7^G\xae\xeb\xa8\x1d\xbd\xf6\xdd_\x1cw\x16\nb\xd2AAL\xfa\xef\xfc\xcd(\x08\xaa\xefih\xbb`-\x95{\xbeuX\xc2\x8e0Hp \xe6\x80\xf5R\xad, /e\xba\xce\xc8!\xd4m\xc2\xb6\n\x88:\x84\x84\x1e\x12\x1d\xb1\xfe\xccU\xb4D[~@\x0ee=;dJ\x803u=\xbd*l\xe7\x8a+x\xa7\x10`\xe7UXT\x82\xe2\xb6]\xc5\x16L\xf2\xd6\x96\xeb\x81\xd6\x07\x8c\xe6\xa0\x18\"\xab\xe8\xc1\x95\xbcqN\x0eIN\xa6jY6i\xc8k\xa5\xf9\xc1\xd5\xf5\x99\xca\x01\x1e#q\xff\xf8\xda$\x95\xbb\xee\xd3d\xe0\xe9\x1a~\xc2#`\x10\xc0\xfd\x03\xd1\x88TX\xc7j\xc5\xd5U\xb4l\xac^um^\xb5\xdf\xaf\x16Z\x93\x03\xe5!\xe0~\xb4\x1e\x87v\xa5\xbez'\xc1K\x90ti[\xdcR\xd5\x8f8\xcd\x98U-\xea\x9a\xc7KR\x83\xa9#\x19\xb0>\xd4\x1a\x83\x82\xd3L\xd4K\xf9\xe5\xda\x81T\xa8G\xf2\xb2j\x9bj\xa44\xbf\xddyN\x02\xf2\x82D\x85zf\xb0\xbd\xdd\xc4\x91\xc0\xd3p\xa5\x194$\xd1,8\x07a\x12\x9b\x89\x9f\xe7\xf2\xeeE\xfe\xb6\xb6\xad\x18\xac\xda\x0e\xf9\xb6Sh\xd9\xe7\x05\x00\xca0\x1b\xd4|\x02\x82\xce#\x00\x06\xdb\x7f\x9e\xa4\xf2\xbc\xe9\x89&\x957\xc2\xa7J\xb4\xd6\xd1[(QV\xd0J\x83\xe3#C\x0c\xb9\x08\x8e\x04\x1a\xd6\nv5\x12\xaf\x17\x94\x1aw8v[\xa0\xcaS\xd2\x0e\xb4`\xd9\xcb^\xb5\x01`\x12\xac\x99\x0fd\xd5\xab\x84\xaf:J\xac\x82\xeb j\xc9/\xceS;H\x06\x8a\xdf\x08+\x8dh\xe7f\xd6\xf1\x8fZG@\xee\xc3\xd6f\xca\xed\xdc2k4\x0c\xc1\x05E[~K\xf9B\xf7\xb8\x0d$\xc8n\xfa\x0e\x85\x81\x0b}6\x0f\"V\xa0\xa0\xe6\xce+A\x17,3\xb0\x15\xc4\\k\xc2s\x1b\xfc)\x98 %\x02[\x89\x97,\xf5\x92 \xce0^\x8fV\n\x19\xdaMMPA\xcaPAEP\xa5'\x85[\xe9\x17\xb4H\xea\x86C\xe2\x0d\xc9\x1cCD\xa0['\x0d-L\xcd:\xcf\xc6\x8e\x0bx\xd4\x0eG?\x023\xc4`g\xeb\xb5\xf0\x12\xb1h\x7f\x0cX\x1d\xb83hc,\xda\x88\x16\xc1e+\xe2S>\xb8\xf8\xb0}\x8a\x13\x1d\x1d\xd8\x17\x84\xb1G3\x97\xbb\xde\xc0\xc6\xe5\x14\x87\xdbR\x9e[K\xf2\x82\xf8\xc5\xb9\xb5\xbd\xbd\xec\xea\xb8 \x1b\xfc\xd9\x121+\xd0\x8fRN\x9e\xad\xc1a]\xa6\xfe\xcfE;\xe7\xb3\xf5\xb9\xd5o\xbd~\xc4WV`\x1f\xee\x0d\xc9\xbaC`\xd8O\xfc\x1a\x89\xb1_\x0f\xc9\xaaC\xf2e\xcaW7\x16\x83\xa1\xa9j\xa56%\xfeMp\x14\xd48\x12\xab\xde\x97\x12\xb7\xd7Y\xd8\xed\x81\xa2^\x1aL\xd1\xf8\x90\x04\xb8A\x9a\xd6\xdcn\x0e:\x084\x9a\xb3%\n\x18\x96\x08\xd9@\xc6\xbaeWD)\xaf\xbe\x0d\"\xf0fH\xd8\xb5\xc7b\xd8\xcf\xdc\xf3\xf2$a\xfes\"\x9a\x9f-\x19\x89x4Zi@\x9f\xad \x8b\xd6A\xc2#\xe0\xab\xc5\xa2\x06\xc9^\x1e\x86\x04\x82\x9a\x92\x15KS\xba`\x84F>\xa1\xbe\x0f\x11OhH\x96,\x8c\xe7yH\xaeh\x12\x05\xd1\"\x1dc\xda\xe2,L\x99eQ\x89>\n\xcehV\x1f\xa6s\xbb\xe0\xc3\x83\x9d\x86f\xbb\xd5\xa1\xc8\n\xbf<\x0f\xff#}\xb8\x18\xf6\x13\x1d\xeau3\xf3\xb6\xb7\x9b\x01\x1c\x88d\xfa\x07\xd2\xee\xe1\x808\xaf\xa35M\x02\x1ae\xe4\xa7\x80K\xe1\x15b\x00\xd1H\x91\xf2\xact\xd2\xec\xcc\x1f_\xf1\x1d\x828Hi\x02\xea\xd5\x87\x89\xd0\xa4#\xa8l\xd8A\x95\x13C}L\xbaE\x91\xf6\xd1!\\k\x83<\xb04\xaf\x9a\x0c\x86\x98\x8d\xff`Hr\xd1QO0d\xa0h,\xc5o\xa2\x7f\xdc\x8d\x86\xe4\xe9\x90\xa4\xd8\x01T\x1c>s\xe3;\xcf\xc9|4z> \x01\xa8\xfc\xcd\xe6\xe7-R\xa2\xeaR\xb3\x99\xdd\xa2\x0b\xcf\x1c\x8c\xde\xbe\xe5\x8a\x06\x8b\xae\x8d&C\xa2E\xbc0U\xe4\x90\xec\x80Nvy|F\xe4\x05I\xe0\x86R\xe9\xd2\xb9l\x16\x9dK.~\xf0\x1c\xa7b\xea1V{o\x99\xc6\x9a\x96;\xe6\xc9\xa3.{d\xac\xab\xa6\xec\x06\xd6\x11w\xb3AE\x90u?\xad\xdb{\xba\xffo\xd1\xbcF\x88t\xd9\xbcI#\x02\xbbB7O\xea\x88\x82vK\x07\xba\xfa\x89\x9e\xad\x89\xcb\xca \x8eA\xc3\xb7\x91\xbe(\xe2\xa84D\xac\xd3\xd9\xb9E\x9e\x91\x835\xd0\xc0u\x0c\x1b\x0c\xa0\x88sP\xe0\x83\x8b\x00*\xe5\x13L\x9c\xfc \xd1\x8e\xc6q\x9e.\xdd\x1c_\xbb]\x06\xb4\xdd\xbb\xae>\x06\xba\x7f\xf5^\x14Hr\xeb\xa0.]%\xd5\x9d\x1aDj^` 3\xd9\xfe\xba\xaa\x9e\xc6\x81\x9b-\x9f\x8e\x88\xdb\xdaM\x1321\x1c\xe2j+c\xb3\x83\xaay\x8f\x8c\xebdx\x95\x14i8\xd3\x05\xd4>R\x8f\x14\xb9B=\xacR\x0ff%N\x943\x81\xa0\x9c\x90\x03Q\xf5!I\xc6?\xe4\xf39K\xc8T\x99}\xdaX\xb3CB\xc74\x0c\xb9\xf7)J\xe9\x9c\x15\xf0\xd5A\xee\xbd\xbb \xa9;\xed\xd21\xca\x91\xc3`]h\xa4+e\xe4\x06\x04QL0\xdc\xc6\xb8\x11h\"\xb3+\x02z\xdez\xe1\xa3\xba\xe3\xc5\xc7=\x1e\xdf\xb8\xc9`h\xf52\xf7uP\n\xf2\xdc\xc9\xde\xa3A\xe1\xeek\xf3-\x80\x0c\x88q\xe64\x1bi\xf4\x1d\xd9\xe9\x99TP#\x07\xe4(I\xa8\xe8\xc5\xa08\x99\x9e\x0fH6\x8b\xce!0|t~\x1f;\xa2\x13\xdfO\xf6\xefr\x1c%\"\x13P\x9d)+\xbc\x9f\x96\xed=\xedt\xdcqO-\xab7+\xba\xff\xa3C\xa3M\xfb\xa6H\x14\xabQ\xdd\x05\x16\xc9\x8a4\x82\xd5B\x13\x03\xcf\xccv\xce\xe5\xa9\xa0\x8f '\x88|v\xedH\xcd\xe0d\x0co\xd0\x0e\xf85$\")\xce3\x95\x14\xe7YeSm8\x93\xbb\xbb8\x93\xb0\xff\xb4N\xae\xabS\xfb)\xee\xdap\xff\xe9\x1e\xca%\xec?\xad\x9f\xf2b\xd4\x9d\x99D\xb8\xdaQ\xc0\xb9\xd3d\x19\n\x98\x974cu\x00\xcf\x04xK\xe3z\xfe\xdc\xcc\x7f\x07\x8eD\xea \xb1 \xf2\x91-N\xae\x1b\xb5\xf8&\xc8)\xcb\xea\xf9\xcbJ>Lm\x1dd]\x01\x01\xe9_\x1dde\x82\x00\x86\x91GF\x1dnQ\x1b\x14\xfaS\xc0\xae\xea@7&\xd0\xab\x90\xd3lo\x17\xea\xac\x03^6\x00\x9f\x01\xd4\xb1\xbbA\x1d\xe2\xef\xc4Z\xd3\xde\xc65\x89\xbf\xbb\xbd\xbc\xe7j+a1\xd6\xb7]\xa9\xfb\xb6\x1b\x90G\xf8R\x9d<\xc3tk\x04\x1b\xdbzH\x90\x9aL\xcd\xc9\xb8\x143;-\x91\x0c*^\xf5\x9aHH<}<\xfb)\x83\x07\xc1~\xe0\x00\xa6\xbb\xbf\x06@\xcd\"V\xb0i\x01\xbe\xf3\xf0\x18`\xdd\xbb\xc5\xb2O[93\xbd\x04,\xab\xa4{\xe3j\xd6h\x7f\xa76\xb2bYL\x9e4\x97\xc4K\x9a\xb1q\xc4\xaf6\xc5:\x9a\xdeA&0hj\xbf\xf5\xe9\xfbZ;\x02\xb5\xf9 \xc8\x01{\x8e\x88K\xc9\x08\xf5O+\x98L\x88\x86#\x0e\xa7\xef\xc9\x0e\xf6\x15\x0d\xb7\xbd\x9d\x91\xef\x0fHapnx\x8e\xdei\xaa\xd4}\x95\x1a\x82\x19\xae\xd7W\xdb\xb8\x9a\xcd,j\xbc'\x89\xe1\xe4\x11.\xe3hluEn?\xc3\xc9\xed\x06S\x9a\x93\x03T\x0d&\x85\xf4\x86\x16L\xd8}\x95Y-\xe0\x011\xde\x89G@ \xdb\xcd\xe0\xf0\x92\xb1\xbb\x80\xc6L\x95\xd6Os\xd8\xc5\x94\xa0\xf3[\xd5\x0c\xc9\x06$,\xf1\xb1\xe6|\x80D\xcafQ\x1d#[\xa8+o\xb3\xa9\xda\x7f\x86\xc7\x93\xd8\xdb\xe9\xbe\x1a\xb7R\xbc\x05\x08v\n\x13\xe3\xfb\x18iG\xf4\xbahU\xa1\x90\xfc\xaf$\xbf\xa2YPeL\xec\xbbR\x14\xd9\x85\"\xbb\xe7\x16\xc5\x10\xa2\xe7\x85\x1aW\xd6\xda\x9f;\xea\xe6Ip\xdan0\x1a\x81mu\xd1\x06\xa9Y\xcf]\xf3`\xcd\xe5U\xb4l\xfc\x0b\xb2g2\x06T\xdak\x81^c\xb1p\x05\x95A\xb6\xb7\x13\x08\x16h\xc3\x12\x9aP\x8ef\x89E\xf5\x1d\xcc\x95\x81\xdcNe4\x8f\xa6\x92\x92U\xb8V\x0bip\xeb\x83\xbeyp\xab\x95fa\xc2\xf7\xf6m\x11\xe5\xfap\x83\x81\xab\x83='bS\x92m\xe28\x1b6\xbd+\x12\xcb\xfe3\x1c\xcb\xed?{j \x1bWo+\xd8/\x03j\xf2xH\xaa\x8e\x8aB\x9a.e(\x882\x91\xe6\xd9\xb2\x9a\xb2\xe4i\xcd\xfd\x8f\x18\xa4&\x8cR\xb0\xae86Jku\xa5\x8c&^-\xed\x1f9Knj\x1f\xa0\xd9\xb2Y\x9dH\xad} asRs)T.\xb2l\x0c!P\xc9\x01\xb9\x1c\x92l\x9c\xb0\x94\x87\xebN\x97\xaejr\xc1\xc7\xdd\xd6\x04\xfc\xba\xe9\xa2\xa6\xaf\x9a\xafF\x95r\x1f\xf5\xac\x98\x91C\xb4\xf2b3V<\xac\xc3g\xe6\x0eRIl*y\x16H}.\xad\xd7D\x15\xdf\xf9\x01D\xe0\x96_\x81\x18\xcb\xa6\x1f\x0f\x99\xac\xafZ\xaa\x0d\xfb\x94\x88%\x15TW.\x85\xd0\xc1\xee\x8c\x8e~\xdf\x19=\x1bo\x8f\xce\xb7\xa7\x83\x87A\xf3\x98}8\x9d\xed\x8c\x9e\x9d\xff\xe5\xcf\x0f\x9bG\xed\xc3\xbf\xbb\xbf=\xfc\xed\xe1\xa1{\xb8\xf5\xdb\xc3\xc1\xec\xef\xbf\x1d\xfe\x96\x9e\xffe\xe0\xfev8\xfb;\xfc:\xac\x97\x02\xb3\x04\xe7\x0fgH\x9c\xaf\xe2\xcf\x17\xf1\xe7\xb7\xdf\xc4\xdf\xbf\x8b?\xff\xe5\x9ck\x03\xa1\x99\xf3B\xa4|\xef\x0c\xc9w\xcew\x90\x07q\x80E\x81\x04\xfeF\xf07s\xce\x07\xcd\xd3{\xe6|WV\x15\xd6\x00\xe6\x00\xf0\x1f\xa2\xf8C\xf1\xe7P\xfcy.\xfe\xfc\xaf\xb2\x90W+\x14C\xa1\x12\xfe\x7f95s\n\x1fFd\xb6-\x87\xf4h\xf4\xb7\x8b\xd1\xf9\x1f;\xc3'{_\xeb\xa3\xb0T\x83\x8f\x80\x0e\xdc\xf1_\x06u\xf85ja\xf8\xdftM\xa5!\x1b\xce\x958\x06\x80\xd3\xe0(j\xd6{\xabo\xff\x89\x05\xfa \x88\xcb\x84V.r,\x86\x89s[\x99\x05\x8f\x976\x83\xc8y`\xe3\xdf\x1ch\x84\xd3\x92\x99Zs\xe7-%Uk\xacEE\x83:\x87\xedF\x9d%\xfb\xe8Yri\x93q\xfc\xff\xec\xbd\xeb~\xdbF\x928\xfa}\x9e\xa2\x84\xec8@\x08R\xa4\xe4+mZ\xeb\xc8\xcaF3\x89\xedc\xd93\xbb\x87V\xf4\x87\xc8&\x89\x18\x048\x00\xa8K\xc6\xdeg9\xcfr\x9e\xec\xff\xeb\xaa\xeeF\x03\xe8\x06@\xdb\xc9dv\x07\x1fl\x11\xe8{\xd7\xbd\xab\xab\xe8\xfa:\x17<\x06a\xa6\\\x8d\xc9\xbc\xa2S\x95\xa6\xe4\xb5\xd2\x1b/4R\xa7\x94(\xb7\x1a@\xdde\x0e\xc7\xa1Q)I\xe9\xdb\xec3\xe2\x12\xbaF,-)\x05^\x05i\xb0f9K\xe1\xebm\x1a}M\x19\x05.\x19\x04\"gU-\x81\x80\xc9Q=,<\x01_.\\\xe7\xc81(s[\x94Q\x8b\x14g\\h\xd3\xea|\xe5xp\xc4\xe9\x02\x8c9a\xa8\xd7\x8f(S\xc6&\n\xf3\x9a\x97z4\x1d\x9e\xc3\x04\xff+\xaeV\xbd{\xb7\xbfD\xf2d\x18\xf0%\xa6\xfb\x99@4\xf89 \xe3Z{|\xf5x\x91\xcbA\x9e\x86k\xd7\xf3a\x0fS\x8d\xcb\xb4\xc54\n>\xe6\x06\xf3\x17\xef\xe7\x02&\x90\x91#\xc3\xa5Ew\xbd(\x07\xf0\x16\xcc\xff\xb2\xcc\xf9/\xeb\x02\xc3\x05J\xc1\x17\\\xf8>\x92\x81\xd0\xa4\xd4\xc1\xdfV\xa4\x8e\x1c\x8e\xe0V\x80\x9bV\x18\xc3\x96\xe6\xa9;\xf2T\x10n\xe3\x07(\xa2\xad\xc9N\x1c\xa7\xd2\xc5\xdf?\x8a82e\\\xac-\xfe5\xd7\xd6\xcd\x8b\x82\x91\xffl\x8by\x02\x13py\xe5\xeb\xe9\xf0\xdc\x1b\xe4\xc9\x0f\xc95K\x8f\x83\xcc\xe8>^\x15\x08O|\xa0-\x15\x13\xbb\xaey\x1f@m\xb4x\x19\x81\xab\xa6\x18\xc1\xf0r\xb0\xc6H\xea\xfb?q\x96=\xfd\xe9\xdf\xdf\xed\x9f\xf7\xfe]\xfc\xbfo\xbc\xef\xca\x87\x8dn\x83\xfb\xfb\x0e\xc2\x8e\xea~\xe8\xc3\x81a\xd4{7\xd4\xdd\x9d;\xb0\x9e^\xe3\x8dZ\xb74\xec\x03\xaf&\xd5V#\x91\xd6\xe7\xb0\x87m\xf1-,\x9a\xdf[N\xaf\xcd\x97t\x95&}\xe6\xc3\xb1\x8f\x9e\x87\xfd\x91\x8f\xde\x82\xc3\xc7\xf0\x0c\x9e\xc0F]\x85zfNP\xc6\x1f\x81\xec\xeeK\x1c\xbeD\xf4\xcd\xf4\xd9\xb9\x88/\xdc'tz\xcf\x87\xf4\x12\x9e\xc0{z\xcd\xfb{iP\xaa\xb8^J-\x1e\x13)\xa1\xcaGpY8\xffpJ\xf2\xef\x98\xa9\xbb\xf6\xd2\x87\xf7\xa2\xdf3ZO\xbcw0\xf4\xe1\xd8S\x90\x81\xaf\x8e1\xa1}YM\x98\xb3Y2go_\x9f\xaa E\xee\x99\xe7\xc9\xb5\xb1(\xbd\xda\x82-\xba,\x18_\xf2\x97\x8f\x8bi\x96\x17n\xf1y\x0bG\x15d\xb1K \xfce\xddG[\x95\xf7\x95Uy\xef)\x12\x94f\xec\xfb$\xcb]\xaf\xae\x14\x95\x7f\x7f\xf8\x00\x8e%\xb3\xd6+<\xd7&\x9c(U\x12\x8e\xe7\xce\xb9\xe9[\xe9\x974'\xf4adP\xd5\x11\xec_\x99\xef\x81+\x00\x7fS\x1d\xb2\xa0\xec\xfb\xef\x06\xfb\x9e\x0f?r\x82\x83\xbb\xe8\xc3\x1b\xb9b\xb4\xa1?6\xee$\x88Y\x9e\xc2\x04\xdeL\x9f\xb5\\\xa2?Et<\x15\xd4e\xdezq^\x0d\xffgA\x85_\xd0\x10_\xc3\x04N\x15\xa0\xbd\x80'\xf0\xfa1\xbc\xe0\xa3<\x1d\xccVAz\x9c\xcc\xd9\xb3\xdc}\xe1\xc1S\x18\x1d<\x80#\xf8\x19z\x13pn8\xcf\xc5?O\xa7/\x1a\xc6\nrY\x7f\xee\x97\x8b~ \x19\xc2\x198\x1e\xf4\xe0\xd2\x80\x15\xcf\x8b\x12\xedc\xb9LY\xf0\xbe\xb1T\xdd\xbc\xd4\xfc\xa5\xfe\xd6\x88GO\xe1\xe0\xde=\x99\xeeA\x1b\xbd\xe3H\xc9\xc0\x86\xe8eV\xec\xc3+-vvQ%\x1d\xe4\xc9\xb3\xb3\xe3\xd3\xd3\xf2\x17\xd3\x05b\x0e2\x7f\x93\xbd\xa0\x15\xe6\x08\x9c1\n\xa1\xea\xcd\x98\x83\xbeq\xbe\xdfu%D:\xe9\xfb\x0ez\xf07]\xe8\xeai\x8d\xf0))\x01\xc8\xba\nRb\xf2\xcd\xeb\xdb\x07\xce\xbb9\xccp\xea~)\x08\x9d\x06H\x97^+\x1f\xbf\x9a\x9e\x9c[.E\n:\xc5i\xd6\xac\xe06\xad\xa4\x8a/\xf5/\xbc\x8e\x95L\xf1\x8e\x05//\xb8\xd1/\x8d\xa8\xcf\x1b\xfd\x96\x8b\xd8q\x8dm\xfe\xd2\x80\x02\xdf\"\xc9\xff\x05\x97\x05\xabg\xb3`\xc3x_\x8a\x17!y\xfe\xc5#\x84\xfa\xd6L\xde\xeb\xf0^\x97A\xffR\xe2\xad\\\x92/\x18\xef_\xb4\xbd&\xcb\x9e\x92\xbe\xfeR\xe1\x8aC\x1f\xfeR\x05`\xde\xfc\xf7\xe5\xe6\x8f\xaa\x88\xaf\xad\xe9\xf7u\xf1]u\xf7\xbdW\x11\xb1\x8b/RH)\xc6*\xcb\x94\xa4||\xe9\xd5G\xfd\xfd\x8eb\xfdeQR\xd3A8\xb1[NO\x10\x90\xcb\xb8\xa1\x82w\xab\xd2\xa6\xfa\\9\xabj62\xbb\x18\x0d\xc8\x04e\x05e\xd0\xea\xd8\x04\x8d\xbf\xaa\x88\xb54\xc1&R t\xaf\xbfA\x0f\xfe\xda\x80\x89\xba\xba&\xf43\xfc[\x1a\x16+JP%^p\xdd\xc8i:eU\xd4\x05\x05P\xc3\xa0\x992~\xe2?\x06Lc\x9e\xa7\xc5\x199|\xb6\x1f\xfa\x9c\x88\x92 \x7f\x02\\N\xae\x03\xae\x8aM\xac4'\xec\xbbNhc\xf3&\xd4\x0b\xa6Z\xcc\xe2\x95\xadPh *\x1b @\x96\x87YP\xed#2\xcb\xdd!\xf5\x14+\xe6\x18#\xc1*\x9c\xd1\xb0.\x86\xe0p\xberD\xc0\xc7r]\x0ex\xfc[\x0f\x8f\xad\xb6r\xe2\x18\xa8\xabR\x94/\x14-\xca\x16ij\x0fB>Ht7/phz\xf4\xd5y)ZOSLQ#B\x96\x89\x8a\xc7\xe5E\xec{\xab:q\xber|p\xfexp\xe8\xe0\xd7\xd4FEL\x87<\x96\x83\x18\xdc\xa2\xf2\xe1\x8b~.\xe3)\xba\xd5\xd2\x97\xe1\xf4\xc7du\xac\x18\x1d\xcd6\x91\xdcl\x16\x85\xe24K\x1b\xa1O\xd4\xb0\x81\"\x97\xe2\xb7`\xbb\x14\xc2\xa5\x8aQ\x9e\x8f\x14e\xf8\x18\x02x\xa2\"\x84>\x86\xc0\x9ef\x1d\xfdO\xa6\x81\xc9\x83q\xba=\x17\x086\xdd\x9e7\x8c\x8eB\x93\nQ\x02\xbd&V>\x97\xaa\xc9\x96\xc89H\x11\x0cH\x1d\xf5i\xdc$\xae\xcb\x0eL\xe1\x1c\x85\x82\x90\xd4\xba\xd1\x9c\x93\xd5\xc3\xac\xa2Uu\xf8\x18\"x\x02E\xd6\xf9\xa8Y\\\x9c\xc1\x04\xb2id\x11\x17\x1d9\x16B\xb5\x19\xe1\xf1tF\xd1\x08f\x06\xf1\xd5z\\\xbe\x9c\xc6jf\xe2:zI\xc0\x88\xcb\xd2E\xacNN\xeb2\x86ya[6\xadXW@g_\xf5\x8bHU\xd3\xa2\xa3\xb4\xbe\x9c\x16u\xcem+Z\n\x96T\xdd\x9e\x0dm\xcf\xa6dB\xda\xb4\x1b\x1e0\x04\xf1t\xd3\xa0\xcc\xc7\xd39\xed\xc8\xdc\x12K\xcc\xf8\xb6\x11L;l,\xa1\x82f\x95-\x16\xc8\xe7\xb8\xc09\xf8\x87\x0f\xb0./\\i?\x99\xfaQ\x9f\\CD\xb7R@D\x97U\xc4\x16O\x9a\xf4\xf7\xb9\"\xb0\xd2X\xee\x9e\xcb\xa4\x8a\xb8\x1a\x90=\xc0\xabEx\x92O1\x83\xa2\x162*V\xd2E]V\xd6\xaf=$\x07\x1c\xa8VB+\\)\xe3\x03~]\xe9\xfe\xf8\xf5\xcf\xa5\xf5Y c\xc3\xbe!\xdf\xbbmC\x94\xf0\xcf\xc4\x9f\xbcM)\xff3\xfa\xcb\x17\xd8G4LL\x93+\x0b\xb14\x922\xfc\xc3\xd7\xb1tR\x999\x13\xeat,}+\x18\xfeQ\x9a\xc2\x87\x0f\x107H\xff @\xfc\xaa\x8c\xe8\x16\xc1R>x\x04\xd8\xa2\x03\xf0G\xd1\x90+\xe8\xc1m\x87\x05T\x18\xa1y\x99\xe8\x02\x91\xa2\xd4\x9f@\x83\xe4IU\x99\xce9\xe2(\xa1x[H3\xf5\x05\xb8(\xed\x173\xb6\xc4:\xb5t\x0d\x13\xb8\xe0\x8d\\\xd2\x16a\x9bD\x17E\xedz\x9d\x13\x98\xc0u\xfd\xf5MmR\xdad\nL\xe4\xfdL\x0d\x11\x17\xcf8\n\xafJ\xb4\xa0<\x90z\x1b\x1a\xb9\x06:\xfc\xd0X\x8bA9?\x13\x1c\xa5\x84\xa7\x1a\xdc\x92sN\xb1\x08\xae\xe0\xe77\x1c\x81\x8f\xe8\xbf\x89\xfc>\x86\x1b\x85\xb0\xf4\xca\xf34t\xe2\x0d\x97YM\x99@P_\xac\xdc5\xabu\xbd\xa2\xaeW\xd45\x93]\x17\xb4\x82\xa9\xae\x15q\xc2\x0c\x7f>n\xedu\xad-D\x135+^\xef\xc23\x13\x01)\xca\x90R\xa6\xba\x8e\x15\xb6[ B\xa9.\xbe<\xd2\x7f\x8c\xb5\xba>t%T\x1c\xbc*WY\x903\xf0\x8d]\xa9\x13[<\nso\xe8*\x8b\x0f7\x83M\xb2\xe1\x18\xc9\xdf\xdcH\x17\x96\x95\xd7\xb5[K\x7fx\x08\xffb\x1bE/\xd3\xb71Et\x9e\xbb\xb2\x19\xa3|\x8c\xe0\xe7\x95\x17M\xad\xfa\x8d\xe4A>\xb8\xaf\xb8\xd2\xbc\xe7\x16@H\x7f\x15\n\xed\xbf;\x1eyD\x17\xdf\x04b\xfc\xbb#\x8e\x92\x14\xf1~U4\xac:+\x0d\xe1U\xc1\xfd\x1a\x88`\x87\x85\xf2A.\x89[`=\x8eF{/\xe9?\xdf\"E\x93\xb5\xf2p\xa4\x13\x901g\xa2\xa8\xb1\xc9\x11\x1c\x15\x83\xc1\x8f\x9f*\x02\xee\xdd(xQ\x93\xdcT\xbd\xf6J\xbd\x8a\xb1\n\xad\xb5\x18D!\x9dJ\xd2\xd1*\xe9+\x99\xe5\x98v\x1e\x8dw\xfd\x91\x87^\xb0\xefiA\n\xca.\xff\xba)\x0c\xfaB_w\x06\x84e\xc7\x88q\x03\xf9\xcb\xd3\x10\xf0X\x9c\xef\xfa\xf0\x12\xfb\x92\xb2\xe6Kx\x8a\x12\xe8\xcb~\xdf\x03\xd9\x0e\x1e\xc0\xdeL_\x9e{\x9c\xd4!L\xcd\x98\xfbR\xdc\x7f+:\xe0J\x7f\xf9\xb3O\xa6\xe81<\xc3\x81\xd5>\xf6\xfb\x06Z\xbcG\xe7\xd5'\x16\xc3\xf7c^\xed1<\xf34*\xcb\xc7Pi\x89\xb2\x10\xead\x9a\xaf\x95\xb8\xfb\xf0\xf0\xfe\xdd\x07fM\x8ck\xfc\x87\xf7\xcd\xdff\x18f\xdc\xf8\x89\x83\xf9\x81\xa5\xda\x867\xf9\xd0\xfcm\x0e\x13xP\xbd\x13'\x1f\x8ez\x0f\x0e\xcc\xdf\xb8n9:\xb0\xb4\x8a\x91\xf1\xfa\x16]s\x89~\xc97q\xbf\xbfo.\xc0\x05\xa1\xfd\xe9O\xefn\x0e\x86\xfdw7\x0fN\xce-\xe5.\xb1\xdc\xbb\x9b\x83\x93w\xdb\xc3\xe1\xf0\xe0\xdd\xf6\xbb\xef\x86'\xfc\xdf\xfb\xa3\xf3\xfd\xa5\xb9\xd2\x855\x8f\n\x7f\x92+\x96.\xa2\xe4z\x0c\xceK\xf5'Em\x8c\x19\x9bgp\x1d\xceY\na\x9c\xb3%K3\xc8\x13\xd8\xa4\xc9\x8ceY\x83b\xed\xc4I\xde\xbf\x0c\xb2p\xe6\x8c\xc19\x8d\"\xb6\x0c\"\xd1*\x17\x1dn\x1e\x0e\xc1\x8d\x93\x1c\x02\xc0R\x80h\xb4I\xc28\xf7\x9a\x9a\x0d\xe3\xab \n\xe7}l \x9b\xa6\x17\xd4\xb49\xf1\x9d!\x9d\n\x08\xc55\x82>\xcc\xcc\x9f\xb9\x8e\xfac\x90\xaf\x06\x8b(\xb1\xe5\xae\xe4:\x01\x19\xb5\x07\x8b4Y\x1f\x0bo\x1a\xcd\x9dX>\xca\xad\xf8\xcc|<\x00*\xc6\xfe\xeb ^\n/\xdc\x8b)3\xdaE\xed\xad\x1f[o\xd4A\xd5\x1e\xaeB\x85\xa2I|z\xfe\x18b\x0c\xc4\x9eR\x84X\n]n1hI?\xe5\x9d\xc6\xf6\xbeql\xc5\xb0\n\x89\xc2\x0e\x07\xa9\xe1\x00P}\x93\x02y!\xef\x82<\xf8\x89\xb98\xd5\x03\xf4\xfbC\xceON=)\xf4\xe0\xd8\xa5\x13Su\xe6r\xe9s\xc9\xd6S6@\xca \xeb\x15N;;\xcd\xfe\x99}\xdf\xd5\xb6P\xac\x06\xda\x0e\x1f\xaf:\x0d}\xe1D-\x05\xef\x84\xae\xa9\xb9\xa4jk\xee[I\xaf\xe7y\x1c\xb5\xee\xdd;xt\x9f8\xc7\x93 \xdc\xbb\x7f8z\x84R\x0b\xaf\x08G\xfc\xc5\xc1\x10\xe3\xa2\xdc\xbf{ot\x00\xe24\xad\xde\x96G\x01\xce\xb8\xbc\xea\xba\xa3\xe1\xc1!\xdc\xe1\xbb\xf7\xe4 \x8c\x86(\xc5\x88w1\xffq\xff\xde\xbd\xc3\xfb(X\x89*9\x17\xa0\xb8r0\x06\xf5\xe6\x0b\xc2\xd2K\xfbj\x8a\xf6\x10\x13\x9a\x8f\xe4\xe4#O\x9el\x00\x05\xfa\xbd\xa1\xa78\xd7{\xa0\x0e}\n\xa3!\xdc\x01\\\x9e\x0f\xb4\x1dB\xa0\xa1\xb5\xff\x00b\xe5\x18\x1d*\xf2&\x0c!\xcd\x01\xcf\x02\x05\xb4\xed\x08l\xaf\x1aQM\xcd\xa5\x07\x07\x07\xd0\x83\x07\xf7\xe0\x1bp\x19<\x81\x83\xfb\x1e\xf4\xc1u\x87\x18\xcd\x0c7\xfb\xden=\xbf\xb1\xdd<\x90\xcf\x95\xb8\xfd`I\x89\x82\xb8\x80\x98 Gp\xe22\xd8\x879\x06\x95\x03\xbe\xae\xc2G\x81\xde\xe7\xdec\xdc\x8fk\xf8\x06\x16\xf8\xf91G\xe4 D\x1e\xae6\x95\xban\x06\xbb\x13\x97\xe3\xbe{\x8d~3\xf0\x0d\xf0*._\x99\x8d\xb7\xdb\xc4\x7f\xb4\xc3\x98\x86\xdaz\xce\x18L\x075\xf7a\xe9\xc3-9\xe2\x98\x8c\x9a\xf2\xb9\xd0I\xb6\xb5\xd4\xb5\xf9\x16\xbe|8\xbf\xba\xb2\x7f>\xae\x1b\xc8\xe4\x83\xfb\"(\x85\xeeA\xbd\xf6f\x82\x82\xd0\xf3\xe1\xc4\xbdF<\x86\xa7\xc0'xc\xe8\xea\x86\xf0\x9d\xca\xf1\x89\xfe\x11\xb3\x03_J\x0b\xd1u\xaf\x87\xa1\xa7n\xba\xfa\xfcA\x81\xfb/\xdd\xcb\xddp\xfc\xf4sq\xdc\x87\x0b\x9fC\x9b\xb8>QMr!\x1f\x04\xccK\xe9\xc3\xf5\x0c]\xb6\xa4\xb0\x96#\n\xa3\xa8$\x84\x83U\xc9{\xe1\x92c\\\xe0\x11tN\x83s\x8e\x9e\x02\xd5\xde\x13j\xdd\xb85\xaf\xa0R\xc7)\x06{\x99\xc0{\xd5g\xa2\xd5^{\x84\xd9\x97\xed\xa8\xc5\x91)k\x19\xdcS\x91\x81\xfc\x16\x9e\x88,\xe6\xbc\xd6m\x837\xa8h\xba\x0fy\x81\x1a1G\x0d\xf7\x02c\x82pBn\x02\xda\x98C\x12U\xe4\x84\xfe\x82\x96rk\x1a\x9f\xb5o\x10\xa6\xc7\xd2\xea\xe2\xf8{\xbd\x18\xa1\xb8\xde\xef-P\xda3\xfbb\xc9\x07g\xc6IK\xec\xa3\x8e\x1a=\x96\xc8\xcc\xd1q\xce\x919\x14\xc8<\xe7\x0b\x17j\xc8<\xc70(\xdec\x98\x0bd\xe68\xb8\x81>\x87<\xa9\xe8,\xfd\x02\x04^\xb9K.\xf3\xc2\x1f98\x0e=O8\x15\x9c\xb8\xc7\x0dF(O\xf9\xb4\x13OAj\xafW\x97\xf0\xf4\xe7c\xaf\x17\xf3R\xf5\x84S\xd0\x86\xc7\xef\x9b\x84\xa4\xea\x9b\xadU\x17\xbebi\x16&\xf1\x18\x1c4\xe6X\xb4\xd0\xed,;0\xe5\xb2\x96\x0f] \x1a\xc33;\x9b%\x1f\xb01\xbc4O\xd5b\xb4\x10\xed\xfeh\xfe,\xdb<5\x7f\x16.\xf6\xe3\x8e\x12\xb1\\\xd8\xee2\xb4V\xebv\x90\xb3,\xa7\x98|\xceM\xdc\xef;\xd0#\xd2iJ\x99-\x9f\x8f\x16\x02n\x9b\xcf\xdb8\xa4\x19w\x1b\xdfg\xcdh\xa9\xcd\xe8GW\xe6\xa6\xb9[\xb9k\xf8i\xf3\xab\x83\xac\x0fZ\xbeD\x94n\xac\xa6Y\xf9\x88qn\xeb\x8d\x15\xc1nP,g\x14\x02\xd3\xd5c}$\x15\xffC\xdd\xe3\xcf\x90\xe6\x86\xffy8\xb2d\xbb\xe9\x14\xdfC\xef\xbc<\x1f\xe9\"\xd8\xb6\xabb\xbe\xa6\x0c%\xe5\xb9\xf8\x95\xe6\xc9\x91\xaak\xf3\x16K\xab\x88\xf58i\xeb\xec\xc56\x8a:v%\"\x85vjR;1\xde\xad\xf5\x1dC\x89u\xda\xcb|@\x84 \x0d\xf8\xf2\x16z\xec>|\xf4\x88+\xb7\x03\"Kd\xdd\x97\xde\xc9@q\xaa\xba%\xf3.\xf7\xaa^+\x91,m\x8a5\xd2\x12\x99J%\xb1\xa9e\xf0\x81\x96\xb0\x87>\xd4l\xf8x\x84\x81G\x89w\x1cbzxC\xd8\x99\x18\xf2\x8a\x07\x86L\x90\xa19M1zC\x0c\x853D\xe5\xc89\xa8\xb7\x8cqE\xde\xf5\xf6+\xc29\xd3\x0ckU;\x8ct\x01\x1d\xb1\xc3\xca\x888\xac;1\xe6\xa3\xd1q \x1c\xac\x83\x9b?\xb3[\x14v0\x85\xa9zch:\xd2\xcdW\xa5\xaf\x99\x0c\xf5\x19I\xc9 \x13PV\x1bQ\xd61J\xa4\n3\x8c,\n\xbd\x9e1\x833zLJ\xa9{\xe5\xa3\xc9\x9eMg\xc5\xfd\xff-\xfaQ\x0fm\xc6\xc55\x17\xaf\xd5\x81\xa7)5\xc6\x1a\xed\xd7p\x04\xee\x02\xcb\x16gTk!D\xa9wk!\x8c\x8eEY\xfa\x8c\xc7\x94s\xf3\xed\xe1\x85\xe7\x83\xe5b\xf1\x86k\xd6n\xe0\xc3\xdc\xa3\xb0\xd3\xd39\x1e\xb4\xf3\xffI\x16[a\x1cTr\xe0\x9c\xf2\xff}X\x9d\x17\xafV\x16\xec\x87\x02a\x82\x02\x0f\x8a\x89\xe3\xf9\x97\xcc'6\x083\xfc\x9f\x83e\xab\x8by9Q\x90\xb8\xba[CJ\x19&\xb2\x1ecgw\x02\xa1\x8f9m\xf4IWYld\xf8\n\x030atO\x89\x94\xcdA>\xebpB\x95/)gTKm.)\xe5\xe9\x96a\x94\x8bE\x10e\xcc`\x8a\xa4\x06\x05>6\xe7B\xc9\xbe\x0b\xe30g$\xb1\xd0\xc1s\xbd\xbd9[\x04\xdb(ol\xc9q,@\xf3\xd1\xcc\xce\xeb\x84\xb2\x16sX\xb4l\xa7\x97\xbe\xc6\x0dA\xdef\"\x91\xc8\xb3\x1c\x7f\x1eA\xe8\x06(\x9b\xa8\x01\x046\xea\xc0I\xa4\xe1\x16F\xea\x06x\xb5\xc2\x90wW\x8c8qI\xe3\xe3\x9d\xf1\xbf\xba\x08\x92R0\x83\x9e\xb9Of\xb22\n\xa3/\x86\xc2\xb2\xd7\xe4c\xa9\xde\x1c)U<2W\xdc\xd24\x1bF\x84\xf0\xf2\xfb\xa2\x04\xe6`o&\xd6O\x0e\xfa\xeb`\xa3\xe5\x92\\\x07\x9b\x1a\xdb+\x9d\x85M\xcfKV\xcb\xe2\xb8%\xed\xf5<\x99\x035w\xd94\xe5\x05-\xfe*\xd5d\xa8\xa0q{\xcd\x81\xbfy\xbd\xae,\xf9O\xcba,\x99\xd7Y\xb6\xa1 \x97\xbfR\x1a\xd4\xda\xea\xef5\xeb*fb-\x9fn!0\xe5#\xc6\xee\x96\x82.\xe5\x82\xde\xc5\xec\x1ar\xb7\x80(\x97S\x8e\xcb0\x0e\xd2[\xc7\xf3\x8a\xd7\xcee\x90\xb1\xfbw[-\x07V\xa5\xe8\xde]O$M\xed$\xce^iY)\xcdA\xdd\x0f, \xcf\x0f\x87\xe6\x84\xe7\xf7;\x05\xf47\x1c\xc8(\xde3\x01\"\x9d1\x14\x19\x0bb\x91\xb1 uC7\xf6\xd0\xc2\xaa\xc4O_$ \xc6P\xacB\x17\x8e\xd1\xbeV\xb8\xe6 un\x81*}@\x9f6p\xc9 \x84\xbe\x8c\xd7o\x14\xc7`\xf0\x84\xe6\x81\xf0\xe0)\xad\x1a\xaf.j\xa5\x9eN\x14\xd4\x90\x13\xf4n\xc8p\xa5%\xfe5E\x84\x1f\xd57\xf3n\xdb\x86YfL\xb9\x16\xe0\x03\x84m2\x92\xde\xc0^C\xc3\x16\xed\nt2\x9b\x9bQ\xd0\xaa\xaf\xc8\x95-.\xfb\xf9\xb0?\xfd\x89\x02\xf2\xbd\xeb\x7f\xf5o\x7f\xbc\xf3\xf57\xbd\xc1\xbb\x9f.\xfe\xcf\x87\xff>\xdf\x0f\xa5m\xc5\x12\x88L\xfaw\xccVA\x1a\xccrtD\x81\x15\x0b\xe6,\x85E\xc8\xa29\xc4\xc1\x9a\x99\"h(\xf2_\xb2\xd2\x94\xd1\xda2\xe7\x8ef\x87\xb6iW\xf5msg\xa9\xb93\xc9 \xcc\xd4/f7\xba\x19\xc3F$Ak\x88I\x7fK\xbbqWL\xd0\xde\x16\x7f\xe6I\xcc\xc6\xba\x8d\xca\xe0\x10\xa8?\"6\xbb\xd9\xb0\x0b5Rk\x7fkH'%\x06\xbc\x1a\x849\x85\x88\xa7s\xf9)%/\xa5\xb7y\x92\x9e\xef`D\xab\x8f\x13\xe3\x97u\xda\xca\xc4\xbc\x95\xe8\x9f\xb8\x0e6\xa8\xf6\xfb\xe50\x81\x89\x0c>z\x12\xccV\xed\x81\xb1Us\xc1f\xc3\xe29%\xbb\xa9\x8f\x98n`\xa3G\xb5.\xab \x85\xc0\xd0]\x97\xbe\x18:\x98\xb3\xe9\xc8\xe4\x94T\xf4\x88{ \xc4\x93%\xcb5\xa1\xe4E\xb0f\x99\xcb\xbcz\xff\x9d\xe7:\xcd\x1b:\xef\xb4G\xa1\x9d\x9e\xb1\xc1e2\xbf}\x9b\xb1\xb9\x12\x1e_\xa5\xc9:\xcc\xd8 exC\xbaB\x9c\x9eE)\x0b\xe6\xb7\xc0\xffuL\x87jE\x8b\x18\x90\xad\xd3\x00\x83f[\x1e\xbb\x96\x83j\x0f\x02\x0e8\x84$\x8e\x92`\xde\x05\x05\xf8\xc3\xc5\xa6\x94e\xdb(\xb7Y\xe4\xb1I\xc6W\xa0k\x9b\xb1\xcb\x06X\xa1\xb3\x11\xbc\xdb^n\x9bI'_\xab\xef\xc2\x88\xbdFva\xa6R1\xca?&\xe7$I\x0f\x06|w\x9feZ\xb2c\x12\x97:\x8d0k\x826\x94\x9dj9\xef\xabn\xfdP\x99Q\x91b\xd8-\xa5\xe9l\x98A\xc6\x08t\xf5\xaa\x18\x82B\xa4j\xec4\x95\xa8)K\x05\xe2\xa9\x0e\xeb2\xdc\xd1E\x18\x87\xf9\xb7\xc9\xfc\xb6\x93P\xcf\xd7\x85\xaa\xf1\xb6N\xe3\x10\x19\x97\x91\xc6\xe9UL\x07\x01\x1e\x14\x0d\xbda7\xd8\x90\x9d\xf3i\x17\xc1.\xa3\x04\xc3\xda|\x1b%\x97\x9a~\x15f\xaf\xe4\xdf/\x17B^\x91\xed\xf3\xa2\x9d\xdb_$\xe9\xfay\x90\xa3\xf3\xf4w\xe2\xef\x8e\xfd\xc8\xe2\x9d\xfb\xa2\xcb\x05\x18\xcc\x15-\xaco_\xffp\xa6\xbd\xea\xd8\xad\\>M\x9d\xea\xd4{P\xa0\x0c\xe0\xf5d\xb9\xb4\xebJ\x07\x1an\xc1\x84\xe3\x8cL'\xeaC\x0d\x1a8\x1c\xf3\xf5v\xa7\xc6\xfa6\x97Uh\xbe\x07.\x1f\xbcXT\x1e\xf9\x87\x0f\xb0\xa7u\xd0\xb0f\x80WH+\xb2\xac`\x15\xdb8\xdbn\xb8\xa8\xcf\xe6\xf0\xad\x9c\x0d\xaf\xd9\x16\xfc\xada\x95\xecH!s\x94T\xb7\xd0\xe6\xe2H7(\x90Lf\x9ci\xbb\xce,\x89s\x16\xe7}\x1a\"\x1e\x1a\x9a\xb0LE\xc6\x11u\xb3Z]\x1f\x9c\x9c\xdd\xe4\xfb\x9b(\x08\xe3\xc7\\\x8c\xcfX>y\xfb\xe6\xbb\xfeCG\x05\x97-\xb0H\x86\x8cRo\x06\xbc\x95.\xdd\x18\xaayx\xd1\xf5\xd3\x91@\x8d\xa6qz\xc1f\x13\x85\xb3\x80S\xb6\xfd\x9b\xfe\xf5\xf5u\x9f\xa3x\x7f\x9bFda\x9bWgm\x94`\n\xec \nxI4\xa5\x95\xbf\xca\xeb9!\x8521\xef/\xf2\x1b[@j\xbdPy\x11\x0db\x90\xc8\x04P.\xd6\xa5=\x0dz\xad\xcd\xb6\xe2v\xa7\x9e$\x954`\xe1,\xd9r\x8d1\xc9QdS\xe4\x17x5\x082\xe0\x8bnC\xc8\x1d\xc6\xcc\xb1\xadj\x9d\x85BP-\x91\x97\x0e[\xac\xf3\xd8\x1a%8\x92;\xcfq\xd4\xbeO\xa5\xe5\x17X\xc7g\xebz\x83|\xc5bwk2D\x8b\xe1\xe6D\xfeZh\xd2m \x8ak\x05\x06\xc1Q\xda\xfb\xd85i\x88n^\x98\xf74Kx^\xb1\x84OQ\x956\\yq\xf3i#\xeb\x95\xda\x8b\xddU\x0b*+\xa6/D\xa7\x95\xfb\x0c\xb4\xe7\x00\xbe#\xda\x97\x91\xddB\xd1uQ\x8fj,\n \xae\x15\x9dt\xb4\xe7#\x94\xa8\xbah@\xd5\x9f\xb3$\xfe\x9c\xb6\xfft\xf6\xf2\x05\xf9qX\xa9W\xe9\xbdMY\x98Y-\x18\xf2\xcc\xc5U'\x80\x7f\xff\xe8\xa1\xeaP_\x7f\xa4\x15\xba\xb5\xc4x\xe6\x0f\x06\xf5\xddhK,\xab\xeb\x0d\x92\xd06%\xb7\x85m*S\xed\xccR6gq\x1e\x06QFn\xdf\xc5o\xaeF \xf9\x00\x8a\x00\xb7\xe2\x05\xa1X\xe22\xf9FE\xfe[\xb3|\x95\xcc\xb11\xfaS\xbe'\x87\x19\x86\x7f\xf8t*\xaa\x1cx4I\x18\xef\x1cC\xe9\x9d_\xb57\x18\xf6P\x13\x0ci\x96\xca`i^~\xc3\xec\xf3\xd2o\x19\x98\xb3\xf2\xceI\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedfc\xcf\x04\x00\x05\x1a\xdc*\x8f\x0ftF\xef\x8f\xb8\xbcit\xe7\xfb\xe8\xe6r0r\xe2\xc5O\xe7?N\xde\xa8\xe8\x87k\xe9\xf8\x84\x7f\xa8\xc2\xe2\x87\x96\xc5)e\x0b\x96\xa6( \xd0[\x17\xdb)BRj\x1d|\x7f\xf2\xecy\xed\x0b]\xc7\xb7\xc0<\xaa\xdex\xd12\x8a\x92k6G\xb6\xf0\x1f'o I\x81\xb7\x06)\xfb\xdb\x96eyfB\x08\"rR\x83w\xe3nV\x99E\x07\xab\x8c \x83MV{L\xb1!/\xdf\xddq\x0cV\xc3F3B\xabxP\xbam8i\xbam\xc8\x9f\x94.\xdd\x93\x05]\xcb&\xd2\xc3l\"\xd0V\x1d\x0f\xf7\x04\xf3\x9b8\xc6\x06\xec\xcc3\x97\x16P\x83[\x10\xd7\x91\x0d\xaf\x13\x83\xf4 \x16S[W\xeb\xf6\xa6}_\x93\x86\x0d\x951\xf4\xd3\xa3w\xf1\xfe.\xbbY\xdb\xacq\xdb\xd5\xd0b\xa3\x08\x8a\xec\xe2C\xed\xb6\xbf\xfeH\x7f\x07\xb9qc\xa7\xb9A\xd0\xf7*\xf5\xab\x9e\xb5\xf2\xf9\x9c=\x98[\xf9*q\x84\\O\xb8B\xaa\xf3\x04\x1c\xe1\xea#\x95\xe4,\x0f\xf2-'\xb7\x0e\xfd\xe5`jLN\xf3\xe4\xa71\x1c\x0c\x87\xa2t\xf2^\xc5\x8b\xa5\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\xe8\x95\xb49\x14\xbfj\x1da\x9118/\xff,\xc7f\xe7\x05\xbe\xce\xb5r\xfc_\x84\x9a\xab\x90\xa9j@\xd5\xd2/4\xf0\xb0\xc1\x82\xe5\xe68rW\"\x16\xa0\x19*tS\xc2\x18\x9c\x8a%\x01\xa7g\x08w\xc6\x1fy@5\x06\x87\x0e\xa7\xa80\xfaX\xcac*|E_\xcd\x8dp\x85m\x0cN\xa1\xd0h\x8dp\x0d\xa3\xf8\xd9*\x00\xf2'Oo[\xcca\xda\xa1\x03o\xdf7eO\x96\xcfG\x98\x05\xe8R\xd7\xd5\xad~odo\xcb\x8c8\xb6l\xc0R\xaa\xe6k#\xfel\xda\x0bM\xfd\x1e\x83\xa3)\x1aT\xa9\x8e\x9ef\xd1\xa8d&\xf4\x10r\xae0\x95\x9dtv:\x95\xfa\xd6\xb9\xe3\x17.P\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83\xe5z\xea\xba\x93\\\x06\xba\xeb\xc6\x9d;\xc07\xe9/!\xbbn0\xbf\x99\x81\xc0<\x88\xa5\xf4K\x13V\xda0\xe3\x8d7;[\xe9\x8f>\xb4\xc2\x01\xb8\xd5E\x8d\xc4E\xf3@\xebP\x93h-\x11\x9b\xa8\xf8\xbbX\xd9\x11\xa3\x90\x0cB;\x8f\xdd\xd4\xc2\x82$\xcb\"\xf10\xd8L\x99\xe5\x8e\xa1V@$wO\xa0\x07\x8e\x8f\x81\xb1al\xba\x8f\xef\x97\xc6?g\x11\xcbY\xa7\xad\x17EU\x97|\"\x86\xbc\xda\xe5\xf6\x97,\xef\xd4\xb8\xda8\xb9@\xc4F\x82\x8c\x0e\xbb\xf5y\x8e\xcb\xa9R-\x1d\xaf\x82\x9d\x1c\xd0d\x07\x15\x07<77;w\x96\xfb\xca*\x93l\x80\x80\xf2\xea hk_\x08Ym\xb9Y\xe5SI\x96-z\xf4\xacs$\xe7B\xa6\xfc\xe1\xd4\x18\xe3s\xbaqT;\x957\x8c\x11\x9d\";\x98,\xa4u\xd1vkV\xdf\x8f\xba\x83A\xc3 9\xe0)\xb9p\x904\xa32\xfa\xde\x9bM\"\xfaT\xd0\xd5\xe57\x98L\x87\x99\xd8N\xef;\xce\x84\xc5y\x1a\xfe\x16S\xe9\xb6/S\x0eL\x06\xcf\x0fh\x99R\xc51H\x9b\xa1\xc9E\xc8\xb0\x00\x96\xb3\xf8[\xe4\xf3\xcfO~8ys\xc2\xf9%W\xd8}\xa1\x9e\xfb\xe0\xbc|\xf5\xe6\xf4\xe5\x8b3\xfe\xe7\xab\x97g\xf8\xe9\xd5\xdb7\x8ea\x81fZ\x97\xb3(\x89Y\x97\x15\xd7\xa4\xb2\x19ZP\xfc\x86\x15\xbcL\xe6\xb7\xfa)\xdbi\x1cZ\xee\xd8\x1aWP\xa4\xcb\xd7\xc6\xe9\xa9\x97\xf3\xd2\xcb\xf9gNe^9\xf9o\x9a\x14i\x0fc]\xdb\xb0k\x84\x85\xaa1\xae\xaa'\xf6JB\xeb\x18K5D\xd3M\x1a\x94\xcfm\x1a\x8d\x95\x9a\xb2\xc3*\xcf\x07\x9d\xfdi$\xba\xd1\x92\x91\xc5\xa8}\xa1\x1a\x82\x82\xe8\xcb\xe3X\"h5\x9b\xcf\x98R4q\x16N\xd5\xf3\x11\xcc\xd2\xd0\x95\x88c==\x1c\x8e|8\x1c\x1e\xf0\x7f\x0e\xf9?\x0f\xf8?\x0f\x0d\xe82\x1f\xa4l\x1e\xa6\x1d\xd2\x8d\xcb'\\\xa8\xfc.\x97\x9a\x95O\xb7\x96i\x11\xb7\x94\xbb\xa9Pjg\xc9\xdcz@_\x02\xdd\xae\xfb\xd0\x05\xe2\x9a\x95\xa7(\xa1\xa3\xe6\xc6\xcb\xc6;\x80\x1e\x1b|\xafT\xee\x84\xff|M\x06A\x98\xc0\x8c~f\x9b$\xc6{\x9ds\xfe\x1b5\xe7\xae\xab\xaf\xadQ\xcdi-n\x10v@\xb7\xbe \x99\xc3^\x9aml\xa1(\xfc\x9f?\xfe\xf0}\x9eo\xc4<\xec\xa6\x9apG\xcf8\xd0\xb0\xaf\xb9\x14h;\x1e\xb6\xd2\xa7r\x0dB\xc4\xb0\x13\x91\x92\x8f\x02\x9d\x8d\x1br\xc1\xf9Y\x14\xc9m\x13\x9b\xeb\x8a\xa8\xbev\x97\x110#\xa9\xfe0a|qR\xd1\xf8\xdb\xd7?\xa0\xca\x1c\xc2\x11\x84\x03\xed-\x8c\x81\x95\xfdI\xfe\xb3/\xf6\xa3\xcf+\xb5\xf8\xbcH\x93\xa2\xea\xc8\xd0\x0b\xe6\xe9\x97?\xf8257\x19\xbb\x82\xc7\xe0%x;\xe6\xf8\x08\x16\x9d\xa9\xb1|\xd2\xaak\xe8\x0b\x96_'\xe9{i^\x87E\x10Fln\xf2\xfd\x90\x8f\xe8:\x0f\xd7,\xd9v:o\x97\xcf\x17\xeb|\xc3b7Q\xc7Q \x9d\x7fa\xaa\x1d'\x8cg\xd1v\xce\xe8\xf0!)\x9d\xf6p\xc9*\x1c\\\x87\xf9\xea\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|\xb8$\xc9+\xc5sWsoO\xb4C\xb7#:\x8a\x1b\xeb/mR\xa9\x99\xd8\"\xf9\x1cl\x92\xe8v\x11F\x91\xc9+X\xfd\xe5:[y\xd1_\xbfk\x90\xb1h\x01G\xf4\xdfXS\xb1>\xeb\xa2l\xec>\x1a\x9a\xae\xaf\xf0\xf7\x0f\xcd\x17\x92\x1e>\xb2\xdc<*\xef\n\x85!\xe6\x84\xb0\xdc\n\x1e2\x8f!)\xbfUQ\x02\xc6\xb5\x9c\xf7\x9f9\xbf\xc3\x87\xd5y$j\x1e\xf5\xf9\xd5!\xeb2\x0df\xef\x19\x9fHg\xd3\x00f\x84\x9b\x9e\xd7e*\x83\x0d+\x8c\xe7\xe1\x8c\x95Zo\xe7\xab\xd4\x01f\x96\xa3\xe4s]zJ\xd9\x86\x05\xad10@\xeb\xa5\xdej\x19d\xeb\xf7\xd2\x9e\x079+Y\xcdN\xcf^\x92\xe1\xac\\\xd6\x1c\x8dg\xce\xa2p\xcd\x15\xb31\xde\x0e\xae}\x97\xc1n\xf6\x0cR-}K\xc7\x90\x8a\xe0\x13\xb6\"\x7fA]\xfde\x1c\xdd\x8e\x8d9\x063\x96\x86A\x14\xfe\xc2\xf8\\vX\xad\xa0v{U>\x86\xbd\xc8\xde\x87\x9b\x17\xdb(\xca,c@p\xe6\x05\xbe\x0f\xe2y\x84\x91Q*V\xf3J\xa3\xba\xc6\x0eL\x04~Q\xf1\xc82\x1f\"\x9f\x8buE\x88\x04\xd3l\xa4%\xdb\xc0R\xd1\xdbZv\xa0{\x82F\x1eV\x89\xb8Xwe\xba !\xdd\x82\xaft\x7f\x0e\xbe\xb6Tq\xe36\xd6RW\xc2\xaf\x9a\x04\xfdP\xb9LQ\x06\xb4\x15\xa7\x93|D[\x01\x0c\xe8\xfbf\xb8\xe2\xcd\x9f+\xf4\x8fm\x81u\xb0{\x9c_\xa1\x84U\x8f\x97A\xefe \x80\xea\x87t\x10f\xe2V\xc1\x95\xa7\x0d\xff\x08\xa6s\x17#\xc4\xc3\xb8:\x07\x8f#\xfb\x84\xa3\xfd\xdc\xcd\xdc\xab\xd2\xa7s\x18\xf3\x9a\xb1^F\xb8x\\y\x9eA\xa5\xe2\x9b\xbd\xf6\xd1~n\xb2\xe0\xe0\x96\x15\xcc\xf0J\x0d\xd1\x10\xff\x8f\x97-\xdf7\x8a<\x0f\x8f\x07\"\xcb\xd6\xdaU\xdc\xdbJ\xda3\x13t\x808|\x98\xc1\x11\xdc\x0e\xb2$\xcd\xdd\x19\xdf\xe0. \x9a\x94\xa9\xf3\x92\xbc\xdd.\xe1 \xac\x95\xb7[\xafw\xd9\xa4\x7f_\xc0\x04\xd6\xd3K\x8b\xc1\x0b\xdd\xbd\n\x80\x9d^`&\x07wY\xbd9\xef^yp\x04K\x99S\x86\xb9\xbc\xa8\x0f FP\xf3Z\xd0\x96\xcf\xb3V5\x86\x1e\xb8\\8p\x06|\xe7/T\x9e\xd2\x0b\x95\x9b\xb4\xb9Q\x03\xd1\xaa\xbd\x91\xfb_&CfQ\xa0\x91\x99\xa9s\xfd:\xe1\x0b\x80n\xe5\xa6\x83 \xcb\xc2e\xec\xfe\xfd#606\xc6\xcdQ\x01\x99\x02\x89\x07x\x8aS\xdc\xf7-\xbd\xd7\xc8W!T\x05\x05\x810\xba\xd1\x9c\x88\xfa\xab\x00\x03\xa0_2\x08\xd4\xe4j9E\xaeD\xdc\x1b\x0do\x82\x81bjp\x04[\xed\xd7X\xffV_\x89\x19\n\xc4u\xe2\x11\x0c\xea\xcc\x01\x8e\xcc\xaf\xc7\xb05\xbc\xae\xf7\xb5\xb0\xf7%\xf9\x14u\xa1~a\xcb\xf2W\xbd\xc1\x8d\xb5A\x11\x18\xea\xa8\xf8s\xac\xa8X\xbd\x1d\xae\xa2\x1b\xb9N\xb1\xb1G\xda\xdfES\x86\x05]\xd9\xdb\xca(\xa5\xbc\xf8\x83N\x8b\xea\x0d\\\x15;K\xb0\x85\x9eU\xcf\x93\x1cy\x8e\xf6\xb3^u\xdd\xd0\xb7.n\xd0 Jop\xa5\xf57\xf5\xd6\x97-\xab]H<\xdaji/\x8be+^\xd6\x91\xad\x04\xd4$\xdc{\xea/4\xa2\x0bo\x93r\xd5\"\xf3U\xa7\xc8\x15\x89h0gi\xe6\x17\x1dY\xb0\xf3m\xfc>N\xaec\xa1k@\xb2A\xf1g\x93&W\xe1\x9c\xcd\x8d\xf8)\xc2\xb1\xe2\x80\x8b\xae\xa6\xb2\xa7\ni\xb7l\xda\"\x8c\x08\xa1\xd1\xa1\x95s\x12\xf9\xces1/\\\xfd\x06\xae*\x80\xba/&o\xd7\xab\xd5\x07z\xedc*\x82*oF!D\xc6\xc2)\xe8\x98\xee.:\xe1\xfd\x0bj]\xbd\xf8s\x8d\x9d\xa2\xff\xc2w\xb4h\xc2\xc0R~9\xe6\x8a?*&\xa8\xba\x07X@\xbc\xe1lF}\x1csE\x9f\xeb\x15\x8e^\xa7>\x9b\x1b\x98@8\xbd\xaeL\x06\x83\xc8\xb8U\x96\x1f{\x18\x0d\xeb\xce\x1d\xc9\xdc\xabw\x1c\x15\x0f?#\x1e~\x06O\xe0V\xe3\xe1g6\xe1\xf6\x18&p;=3\xf0\xefE\x89w\xc7\xd3c\xe2\xdd|\x07N$\xb7\xcd\\\xfe\x1e\xa3\xf8\xde(\x0e\nG0\x97$\x83C\xd6\xca\x87+\x9f\x0bV\x17>,\xab\x8c\xf5cm]\xdec\x07\xe8f\x16\x19\xcc\x9c\xcf\xd0P \x90.\x98\xcf\xff\x9f-Ko_\xa5l\x11\xde\xf0m8r\x0c1\x9e\xc4\xce\xbf/\xf2 \x0c\xe1\x08\x9eA\x0f\xdeW\"\xfc\xe0_\xbf\x8az\xdd\x82\xeb]\xf4nEN\xcd*\x12~Vn#\xb6B\x1c\xa4\x7f\xe0,v\x0c\x07\x06\xa5\x91\x1c(Qi\xa4?ME\x9au\xd29\xdb\xe4\xab1\xdc30\xc1 \x0d\xd6,g\xa9\x18\xc0\x88\x1d\x1a\nEA\x18\xd3j}1]0\xe8\x10L\x05\xda\xbce\xd5\x0ekl\xeeH\xcb\x92\xb1\xffn\xe0N\x7f\x1aL\xcf{\x1e:\xb2N\xffmt\x8e\xf7\xfa,\xbeW 6z\xdf}7\x9d\xfe4}w~\xfe\xcd\xb9gK\\\x03b\x16\xe5\xc2\x94h*m:\x86\xe3\xd4\x0d\xc5Gq\xa5\xda'\xb2\xc5n0!\x85\xbdb\xd6p\x8e\xcd\x97\xa9\x16\xcd\xacZ`/\x1e\xe8[ \x98/\x0c9Z\x15\x1504\x1a\xa5\xab\xae\xc0\xb0$\xdav\x83vF\xa7\xe2\x86;[`=\xfdQ\xc4R\xe4\xf6VB\xb3\x1b`\x08G\xb1\xa88\xa6\x08\x9e@<@\x90n\x0c\xf3\xcdg\x1cA\x0fC\xe7\xef2\xf3`::\x17[3\xf2\xa1/\x02v\x7f\xc6J\x04\xc6\xa0\x14`]\x0ci\xab\xe1\xdd\x8a&HQ\x92\x10\xa3\xc0E\xe8M\xd6\x01tA\xb0Ry\xb9\x0d\x1c\xa9r\xca\xf2\xa2%7\x1b\x89\xe4\x03\xc3\xc7\xd0\xef'm\x8d\x81@\xd0\x90\xa2\x98\xb3i\xd2\x90\xda[>(9LE\x0c\xb6\xc0Cl\xc44\x08\xd3sO\xb28\x9b{\x99\xfet\xb8M-\x1f\xb4\x18\x97\xc1\xe3H\xf2\x86Y\xca\x82\x9c\xa1\x0eg\xd2\xefl\xcf\x95\x08\xe5\xc7\xb7\x8d\xd8b\x91\x9f\x91+y\xe7\x95\xd7\x81\xb6\xc6\x1e\xc9\xd7\x1a\xfcq-\xcc\xbe\xc7\xd5\x87S 4_\x9f\xc6\xb9\xbb\xf5ad\n\xd9`z\xf6\xc2\xecE\xf0\xc2\xcdp\x88\x01b\x1f\x06\xbd\x17\x06\x9a\xcc\xc31\xe3\xab\x8c\xc2\x8c\x8a\x1c\xc8i\xc6P|\xcc\xe8\xd3\x13\xa4\xc7\x8a\xa9\xc1\x91\xda\xc0iv\x8eQ\xf0\xc7\x10N\xb7\xf8g\xeb\xc0\xcc\x18\xa2?\x1cT\xc3\xc6R\xcdm\x08l\xb3\x0f\xe5\xa3\x9b \xec\xa9\x15\xa9\x98\x9a?\xc3\xcc\xf0 \xf6\x84X\x88\x03U{B\xe9\xbd\xd1\x9e\xa0JX4\x96\xe7l\x07{\x02\x8ei\x10.\xe3$e\xba\xe4\xa7dB\xc3G\x1f\x87 \x8d\x0c\x13S\xacl\xbd\x80\xb0D\xbef\xcb\x93\x9b\x8d\xab}\xf10I\xa5n\xae\x085s\x85\xe4\x12\xbc\x83\xba\xe5S~\xc3?eI\x8c\x83=\x11\x9eZ\xc1\xa0\xf8\xe9#f\xb1\xcd\xb1\xf0B\x0e\x06\x17\xea'f\xa5\xc8f\xc1\x86\xbd\n\xf2\x95\xba0\x8b\xa5\x0c\xefy\xf1ml\xab`\xfcR\x1e\xfe\xd6\x90\xd7\xaf\xd5\xad^\xc0c\xbb\xcf\x01]\xd0\xbc\xccXzE\x1e\x9c\xd3syk\xf3\xf2g\xa8f\xfc\x80\xba<]\xbdQ\x17\xed<\xb4\xb6@\x95\x9cv]\x06\xb3\xf7\x14\xc8\xad4`\x98\x98\xa2mV\x07h\x8a\xfd=\xab/I)\x8b*\xe5\x9cJ1-\xb9\xa471<\x81\xf41\xc4\xbd^]\xcb@\xdb\xce4>\xa7e\xc3H\x0bd[\xb7N\x0d\x19VlQ\xb7/S\x16\xbco\x99\xd9\xc2\xcd\xe9\xbe\x88\xaf:\xe3\x7fm8\x14s\x11\x0b\xd3D\xa8\xdfR{E\xabJ\x81\xaaz\x1b\xa2\xa4\xe1\x08\x81R\xc8\x8a\xefF#q\xa8\x1b\x891\x94\xad,.`\x8a\x15\xfb\xa8n\xfc\xf0_n\x88\x89\xbf4jY\xdf\xac\x85\xab\xb2\x01\xd4,\x1a\x18b\x82\x92\xe9\x98\x96\xda(\xa4\xe7\x83<\xf9\xd3\xd9\xcb\x17@9X'\xea\x85k\n\x14\xa3\xe0\"D\x9epAK\xfdg\xce\x9ar\x8f\x84\xa1\xf2[\xe6\x91\x98\xb37\"\xde\x17\x94\xac3\x99\xb0\xced\xfd~\xa3X\x83\xe6\x18\xe4T\xd3\xec\xbc\xc1\xa2\xb8\x97\xd6.\x8e\xf9\xb0\xf1*\xd2g>\xdd\x9cWt\xd0\x08Mf$\xc0\x94\x8f\x98rO\xc5\xac\xb7\x9bg\x92\x0d\x1e\xd9\xac\x93+\xd6\x90o{\x13\xe4\xab1\xdd\x0c\xdc'\xf3\x98\x81\xe0\xb9\x1b\xfb\xc5\x1c\\HK\xae\xd7\x16\x03\xd2\x95\xc8\xf9\xc2\xe7n7\xaf\x18\xf2ADP$i\xa2\x1f\x86B3\xbd\xd0\x8c\x0b\x89.\x89\xa2\x1cJ[\xe7\xcb\x85\x1d2\x11`;\xee\xde\xd0o_r(\x96\x1d\x05\xf3\x86u\x87\x1d\xd6\xbe\xb9\x15\x11}9\xd5X\xa0;kr\x81\xedjF5\xfbEm9\xe0*j\xb2W`\x8f\xb9YDNMm\x08\x15\xb5\xcez\xbd&\xeb'\x07\x8e\x0d\x9e%f\x0d\xc0Q\xc3-f\xc3-\xae\xfau\xde\xbf`>\xff\x87\xed\x1d\x1fm\xd3\xf6u\xd8=\xcd\xc5X\xfd\xc5\xa5\x1c\xc1\x96\xdb\xeciZQ=+\x02\x97\x94:\xb6\x80\n,\x99\xbe\x9bE\x9cR\x08\xb3!\xf1\xf5\x82\xa1\xe7\x94`871tPL=\xd7\x98\xba\xd2\xe1\xf9\xeb\xf2\x9a\xd4\x02 \xf1\xda\x898\xdao\x95vJz\xb9\x90?\xb9bq\xfeC\x98\xe5,F\xfb\xa3\xed\x93\xeb\xac\x93m\xc6\xb6\x1b\x87\xac.\xd6b\xef\xd9m{!lk\x9e\\\xc7m\x05\xdf\xb3\xdb.\xc5f\xab ^2,\x85\x807Of\xdb5\x8b\xf3\x81\xfc\xe3$b\xf8;\xc8\xf3`\xb6\xc2\xda\xae\x93\xc4\xe59u\xad\xa5O\xb1k\x9d\xea\x8c\xbb\xd6+/@\xd7Z\xfazt0A\xc4\x15\xb9;\x16\xaa\x01iO\xb1\x99J\x9b\x80z\x86y[\x8c m\x84\xddV\x12\xa7\n~!R'\x1f\x03\xc9+\xf4\xc3\x12\xc9C\x9e\xadw%r\x80\xc7>\x8c,\x08\xc9 _\x87\xaehH\x02\xb1\x0d\x13\x0d_-\xc8h,i\xc0G{\x8bu\\\xb3\xb5\xa9J6\xe3\xdb\x9c}\n\xbeUju\xc27SO]0\xa7\xdeW1\xb5\n\xeap\x8eT\xc0\x01\x85n`\xd7@I\x99\xbcRD\xd6\x8fd\xad\x8aYJ&\xa8\x19\xff\x8dv\xbe\xb4\x9b\xa0bp \x91F\x90B\xb1Em\xbd\x9a\x01\xac\xc9h\xa8\xb4\xe3\xcfI\x02\xd69\xadW)\xe1\xafQ\xa9\xd63\x94\x1d\x95~\x8d!\xf6\x06\xd9*\\s\xf6\xdd:/\xb9dZ\xc6\xb7%\xeer\x86'\xf2v\xa2%\x06\xdd\x12q'\x90\xadi\x92\xa7\xd9DdH\xab#}!-Ck\x0d\xf6\xa3mo\xbd?C\xee\x17uK\xcb\xac\x82\xd2\xfb\xfa\xb1\x19\xd3\x8c=\x9d\x9ce\x99\x0f\x0e\xff\x831\x87\x1cij\xb56\xa2\xfciv\x12o\xd7\x14\x11\xc3P\xf7\xc3\x07\xdd\xa5\xec\xa3Kq4\x0b\xc8\x89\xe1\x08}\x0b\x12oPD\xb3\x9f@JVR\xfdUb\x04\x94\x9d|\n\x8d`JQ;p\xe12\x11F\xad\xfaQ\x85\xf4(\x1d\xa8Y\xf6F.y1ih\xba\xebU\xda\xd1\xe6\xf1\xb1\xc1,\x89\xb3<\xdd\xce\xd0\xc0=\x99\xe8\xdf\xd0t \x86\xabv \x8e\x8aI\x8d\x0d#3A\xb9\x1d\xea\xb4\x93\xcc#\x0ee\x11\xb6\xaa\x9fh\xf2\xf7\x1a_\x1c\xeb0:)9z\xd7\x8bR\xa2\xc8#Sz!\x07\xcf\xe5K\xed\xb5\xf4\x9b\xb6\xe1\x96!g\x8f\xc4e}\xc8 \x0d\x00\xb3\xc2\x8c\xd58\xb4/\x81[\xc9Bo\xea\xcc\x90\x7fG\xe9\\\xeb`\xe3\x86\xcdc5\xe4\xa4\x91\xf4\xdcz$,\xe9y\x15\xbdE\x80%7\x9f\xc6\xe7\x18W\x9dM\xe3Z\x10\xfc:\xb57\x8c\xca\x90\x87\xa6\xa4\\+\xbaZ\x18\x82G\x15\x83\xa3*2\x1d\x9d\xf3\xb5\xd4\x7f\x8eIX5;\xf0bT6\xb6\n\xae\xc2d\x9b\x8e\xc15\xf4u`\xed\xeb\xa0\xdc\xd7\xc19\x1e3z\x83r\xabx\xc5N\x9a\xd5J#Pg\xe4|\xeb\x9a\xad\x0d\n\xb91&u\xb9\x15\xcf'+:}\xf3\xa5\x13e\xc4\x85\\%\xf2F&Y\xb7\x94\xbf:\x9dF\xe7t\xda\xad\x1f\x91\xceD\xe2\xe8\xe1c\xd8\xc0\x13X\xa8\x067v#\x18o\x11#WL7\x0d\xa7\xe6+.\xf0L\xe7\x0d%\xae0\x97\xe3\xaa\xc1\x12\xb5\xc6\x12\xe1tn\x8b\xef^\xba\x8a\x80W\xde\xec\x12?\x96- \xe3\x13X7\xa9\x1b \xe6\x8a\x0e z'k8\x02>\xa8\x0e>\x83!%\xc0\xce\xd0\xebk\xba\xf4a\xeb\xae\xbcs\xa3\xbb\x99|D\x9clQs[\xbbz \x1fu\xadE\xa76m\xf3\xd7\x8av\x9a\xfb-\x1ex\xdb\x86 \x1f1V\x07O\xbd\x1d\xe1\x17VA\x13Z2\xe9+pk\xbe,)\x9f\xf2\x1a\xd8\x07\xa0\x97Z\xd5J\x18\xd5\\\xfd\xc0H5\xd3)\x17f#\xd5\"\x12$NA\x90\x84\x1dA\x8en\x1ecL\x1e\xcd)\xc1Hd6(R\x1a\xf0\x02\xe7zk\xd3\xd4,\xefg\xe4\x16Q\x8c\xdd/\x06=\x88\x93\x1f\xb7y\x907*\xe6j\xf0\xcc8\xf8\\\x0d^\xe6g\x18\x92\x1e\xcdH\x8f\x06\xc1\x07\x8a\x81V\x0f \xd5@\xc9\xbf\xd1<\xd2\xeb0_\xbd\xc4+R5\xdfI{\xba\xd5L}\xafl]\x8b\x8cg\x0f\x0c!\xf3\x8fC\xec>\x1a\xdd\xab\x10\xa0\x8b\x0b\x96\xfd\x98\xcc\xb7\x11^\xf3\xdf\xad\xcb\xd8\x1d=x\xc0\x17\xd0}t@\xff\x8d\xee\x8b\x9f#\xf1\xff\xa1\xe7\x97\x05[wt\xcf\x1b\xfc\x95\x05\xef\x7f\x0c6]\xfah\x10]}\x99\xc9\xf7p\xe4\xb9U?\x8ePtV\xbd,C^\x0e\xa3\x83\xbb\x95\xf7[j\xea~5Y0\x0d\xfa\xd1\xa8\x1a\xbb\"\xa2\xf2\xd5\xe6g\xf8\xfa^\xd5{d!\xbcG\x0e*\xef\xf1\xdcr\xb0d9_\x91\xf2\xa7y\xc1\xbb\xc2\xec\xe4&gq\x16^F\x95\xcb\x1e\x9c\xedd\x83\xed\"\xcb\x93\xb4\xf2\xe9\x8a,\xca\xa5w\xed\x01d\xab^\x076\xaa)Y\xb8\x88\x8ag\x904\x86%qbx\xaed\xd3V\xd7\xe3\xf2\x98\x97FYg\xc9:\x05\xd6\xc0{\x13(A\xdb\x89\xbf\xa4q\x1bcj\x06\xf9\x88 \x0b?\xe0\x1c\x8e`\xe5.\xc4\xec\x1d\x01\xcf\x8e\xe7a\x0c&\x94}1\xfa\xb6HU\x14\x16\xb37v`8\xf4\xab\x8b Yy\xca\xedAK\xb2\xc1\x9c-\x0c\x83\xf4\xd1?d\xc7m\xb8\xadj\xa8\xee\xa3\x83\xa1\xe7\xaaV\xf1\n\xde\x12o\xbb\xef\x0d1\x96Q\xb1\x963\xb7\xcd\x18\xf1\x00\xf6&\x80\x96\xa5[\x0fs\x7f\xc9\xbb,\x8b\x94\xb1_P\x18\xa4\x17\x9e{\xe5\xf9\xf0\x80\xd6Yc\xff\x1fI~\xdf\xba.\xa6l\xe3\x9f\x8f\x0b\xad\xd0]\x977I\xbb!\xb3\xf4|\x08\x06/NN\x9e\xe3\x01\xba\x0f\x89;u(\x8e\xae\xe3\x83\xb3\n2\xfe\xdf\x92\xe5\xfc\xbf\x8c\xe5\xce\xb9\xdf\x00w\x12\x96n\xb5.j\xeb\x8c>\xf2\xb5x\xc1!\xc6L\xd2\x1a\xcf\x0d^\x1c\xa0`:'\x03\xc4\x1c\x9d\x10\xcc`@\xb0\xb7(\xd2\x7f\\,\xc4\xe1TSP\xe3P\x065\xbeXL\xd99\x8d\xc2\\Zj\x86|U@\xe8\x9b\xbc&\x8c\x0d\x97\x18\xec\x0e\x91\"\xa8-\x02i^\x8b\xe5\xffQ\xdfc\xfa\xbbs\xa2\xf0G\xa3\x87\x96\xc8I\x8dh$\x07\xc6\xae]\xd4\xbe\xf5\x10\xaf\x9d\xf8b1\x82\x1a\x7f\x10\x1c\xab\xc6\x96\x04\xbbz\xe4\xb9N\xb6a\xb3\x90\x95\xd2\x84t\x93\xd8\x10\xf8\x8cb\nj\xe5\x1c?LW(\x84\xf1I3\xa2\xa0}\x8a\x9c\x85PJBHK\\\xcd\xce\xe5\xa9\x1c\x08\x82\xa6\xfb\x90\n\x90T\xe6\x10\xf2\x18\x9a\x86\xe7\x9e\xf2\x1f\x12\x85\x8b\x1c\xf1\x92\x96R7\xe3\xd6T\xf6\xdd\x85\x03Z\xe7\xe1}\xe3\xfas\xf6o\xe6\xba\xc2\xcd\xb3Z-0\xef\xa6\x10\x1a\x86UaBH:w\xab\xef#%\xaf\x18\xa5\x86\xaat\xd0$5DnU\x92\x9b\xe3\xdb\xea\xc8WxxT\x86\x93\xaeR\x00\x1b\\`\xea\x07\x17\xff \xd2\xb1\xae\x1e\x10\x94~\xae\xdbN\xcb\x90\xb2\x04hrojg\xd9\x86\xa3P\x8cr\xe3\xb2A\xd0D\x94+\xe5\x19\x17F\x10\xf0j\xa5\xaa\xd9\x90\x0b\x98Zk\xd6\xc3\xaa<\xd2A\x16\x91|a)\xe8\x9c5 \x94:\x83\xcb\xa7\xa3\xc6\x15Z\x05\xad\x01\xd2\xa4\xc8\xb2W\xf4\xda\xd4b7\xf9B\x1e;4\xcd$F\xe7yT\xf5r\x99\x021\x10\xf1\xa5Y=\xbete\x1c\xc4|\xdb&'WT\x043\xd6\x01\xa0M.\xca%\x00\x18\x9cv\x0d\xb3\x11\xb5\xfe;\x07\x99\x88%\x90\x07\xa2\xb9\x8f\x97\x08\xf6\xf6\xfe\xbb\x9aTF\xfd\xe57(fe!e\\#u>\x84\xb6\xa9\xa3\xdbc)J\xa35\xc4\xeb\x96\x7f\x8d\xb0E\xe7\"$g\xd7\x8b\x9c\xdcE\xd8\xe0\x82S\xbcU\xaf\xe7\x83@r\xa2\xcc~a$\x04\xbc|\x97\xb9)\x8e\x88M\xc3ss*|\xfb\xd2\xa5n\xa4\x8b\\\xe6av\xdbv\xf9\xa0Gg\x80\x92\xbd\x04\xf3\x91]x\x97@\x9b\xec \xe2s \xbeR\xd2s\xeey\"\x11\x03I\xf71_\x93\x99\x1b\xab\x9c8\xc8\xe4D\xfe\x85X\x89\xfd\xc6\xbe,\xee3\x1d0Z>\xff\x88\xd9\x8bD\x0f\xa6\xa9\x9bgi\x80\x10\x1f\xa2f\xcc_\xd4\x91\xc0\x86\x01)YK\xd1\xb7x\xcft/\xb8<\xa1\x14'\xc4H\xbb\xc8\xc5\xa5\x9bt\xcaP9\x9b d7\x0dM\xa8\xd8c\xb8*P\xfb\x0f\xf0\x05$\x94\xaa( \x04D\x8b9\xa3f\xb6\x08\xcc\xf6\x06\x12L\xeeU[\xc9,RQd\x91Wf\x16\xf9fa\x16\x876$uW\xc3\x9b\xce\xf1\xf5\xdd\xa17X\xd4e\x13\x8b\xf9\xe6\x8a\xea\xdcm\x15\x82%\xa5$\xed\xf3\xd6$\x13_\xe2y\x003\xd8\xe6/`\x02\x97\xf5\xd7\xd7\x9c\xbf\xe1!!\xa30;f?\xd4\x13\x98\xc0\x05G\x86\x8b&m\xef\xc6p\x1e%@\xf3\xcaz\xba\x89\xcd\xba\x18\xad\xe7D\xe5\x16\xe1Rx`W\xa5\xf9\x83*\xf4\x85'\x93*\xb8\x1ez\"\xb9U\x95\xca\x83#p/0\x91\x8b\xaen\x1aqm\xc6\xbf\\\xa0j\xea\\\xcc0\xeb\xe2\xe0b&\xa4\xc1K\x9dO a\xc0\xebsK\x1f\xf2\xe9\xf5y\xcd\xca\xc0)\xc0\xca\xe5\xcb\xe9\xa3\xc3\x94O\x04\xd3\x173\xf4\x97,\xf7WA\xe6g,\xf7\xdf\xb3\xdb\xcc\xa7<\x1f\xbe\x98\x8eO\xb7\x0f\x1c\x99\x9e\xce\xe7\xa3\xe9&&\xe0\x16\x82\xbcnZ\xa8\xacu\xb2\xc1 \x8c\xe1\x84\x9c\xcdq\x03\x1c\x1c**L\xa4Em]}\xc3K:{S\xa8uN\xb4e\x16 \xbe\x9e\x9cn\xa1LA\xfa\xd5\xc2\x8d\x0br\x8e\x06\x07\x1a\xae:\xaf\xb3\xab\xec*\x0f\xd1\xc5\x8c\xab\xec\x05\x05\x1frr\xed[\xd5})\x0f\x15z{R+W\x15\x89=\x9f\x82H\xcd\xcb\x8b\xe0d\xe1/\xcc1\xf1\xf6\xb2t\xdc&\x9a\xd1,\x06\xbc\xb5\xfaPjP<&(^W\xcd=dIY\xfap\xed\xf9\x90\x95G\x1a\xe3\xadOe\xf0\xf1|\xd8\xb8b;n(G\xd3\x85\x0f\x89\x9b\x0c\xfe\x03z\x90\x0c\xfe\x8a\xff~\xe7\xc3\x8d\x9c\xf9\x9a\xb3\x90\xb3\xc9J\x98\xa4\xcd\xb0\x16\xa1\x1eTy\xaf\xec#\xe72=O\xb5\xe7\xc3\xfe\xf4\xa7\xa0\xff\xcb\xb0\xff\xe8]\xff\xab\x7f\xfb\xe3\x9d\xaf\xbf\xe9\x0d\xde\xfdt\xf1\x7f>\xfc\xf7\xf9~8\xc8Y\x86\xb9\xd7\xcc\x81Wd\x82\x97\xd9*H\x83Y\xceR\xceW)\xcd\x00,B\x16\xcd!\x0e\xd6\xc6\x9c/\xca\xfa\x94'?$\xd72\xaftyq-sn\xb6\x84t\x9e6\xeb\xd4\x99\xc1\xf1\x11t'$#p\xc5\x98u\xa4\x95\xac\x82\xd6\x10\x93Iv[\x957{[\xfc\x99'1+9\x88\xb5$<\x11\xb7\xa2\xccI\xac\xc0\xa8\xe2\x99\xdf\x1a\xbcF\xc4\x80+i\xc3rS\xb2\xb0\xd6\xb5\x92\xb2C\xbd\xdf\xce\xd9~\x0d\xde}\xa0\xa5\x02\x14\x97sJ\x19\xf2\x13\x0c\xfd\xb1S\xbe\x0c2\x1eQ\xd6bs\x82\x0c\x91\xf9\xbf\x1e\xcd\x14\xbd\xeaL\xddu\xe9\x8bM\x87\xe7>0c\xe86\xadG\xdc\x03q\xee\xb6d\xb9\xe6\x1e\xf7\"X3\xae\xfd\xef\x90!\xaf:\xd7\xa9)\xab\xdcGS\xe6B\xdb\x1e\x19|\x13A]k\x90\xd9\xf8\x95\x04-\xb2 \x0dR\xc6\xe7S\xcd\xdb\xf2,JY0\xbf\x05\xfe\xafc\xba\xcc\\\xc9\xef\xdfi\x80\x06\x7fF(K0\xb5\xd4LM\x81\xec\xd8\x8eY\x93r\x97\xcf6\xdbF\xb6D)x\xff}\xb7\x8c;\xb1\xcb(aZw\x1bO\xa7\xa52\xf8n\x82F\xf1\xf8Z\x15\xb9\x97\xcdT*FW\xa9\xdc\xce?\xf2\x01\xdf\xddg\x99\x96\xac\x96\xdc}:\x8d\xd0\xe0\xc7 \n\xda0\x86\x8cvCP\x04\x9f1\x8cE\x9fQ\x91\x8f\x98\x03\xecm\xce~\xa0\x0b\xbb\x0d3\xc8\x18\x81\xae^\xd5C\x15\xfc\x12'\xd4i*QS| \xc4S\x1d\xd6G\xd54\xdf\xad\xa7E \x0f/JY\x05\xe9\"UC\x12\xa0\xd0\x9c\xdd\x81yZ\x0eE\x91\xd9\xdc\xa0\xa6\xcbG\xf9\x05\x16\x89\x8e\xbe\x8d\x92K\xcd%\xbf\x9a\xecXo\x9f\x17\xed\xdc\xbeL~\xcd\xfb\x90\xe1g:\xf6#\x8bw\xeeK\xcf\x7f\xce\xfb\xab$@\xef\xd8\xad\\>u\xc1\xa2I\x86\xd0z\xd7\xd2mC)\x87\xd4\xba\xd2\x81\x86[\xe8\xf7\xc9\x04\\\xca\xec\xc0:4\xc4\"\xb7\xb9;5\xd6\xb79\xbdB{\x00\x03\x90&\xf1\xf2\xc8?|\x80==S\xb5}\xcd\xd0\x00\xb3\xac\xc8\xb2\x82U\xe8\xd7-\xbe\x95\xb3\xe15\xdbr\xab5\xac\x92\x1d)\x84+hm\x0b\xab1\xa7\xe5\x83\x05K\xf9\xdffI\x9c\xb38\xef\xd3\x10\xf1\xf8\xd6\x12\x04\xadT7\xab\xd5\xf5\xc1\xc9\xd9M\xbe\x8f\x01\xa9\x1es1>c\xf9\xe4\xed\x9b\xef\xfa\x0f1\x04W\x05\x8b\xe4\xe1\x98z3\x10W-Z\xbb1T\xe3\xed\x7f\x0e\x12\xa8\xd14N/\xd8l\xa2\x90\x92<\xee\xdf\xf4\xaf\xaf\xaf\xfb\x1c\xc5\xfb\xdb4\xa2\xe8\xfc\xf3\xea\xac\x8d\x12\x8c\x96a\x8d\x88)\xd1\x94V\xfe*\x8d&!i\xcc\xe6\xfd\x0d)d\xb4\xe44\xf6B\xe5E4\x88AY\x12]\xb1j\xb1.\xedi\xd0km\xb6\x15\xb7;\xf5$\xa9\xa4\x01\x0bg\xc9\x96k\x8cI\x8e\"\x9b\"\xbf\x98t\x17\x82\x0c(\x93]\xa3e\xa2\xcb\x989\xb6\x9d\x9b\xb7\x99\x04\xda\x12&\xb7nq\xc9\xaaY\xa5\x04Gr\xe79\x8e\xda\xf7\xa9\xb4\xfc\x02\xeb\xf8l]o\x90\xafXl\x8aM\xfdQ\x92\xdf\x9c\x88G\xeb8\x7f\x13Pl\x17\"`G\x11P>vQP>\x15\x91\x90o\xb3A\x16\x94\xcf\xc7_\x0bM\xba-A\xc9\xf3\xbe&\xfd\x91\xbfzaS\xcde\xdc\x17\xf2\xba\x1f\n\xaf{u\xb5E:\xdf\x9f+\x1b\xc7`\x91&\xeb\xe3U\x90\x1e's\xe6\xe6\xd3F\xd6+\xb5\x17J\x99`\xcbk\xfa\xd1\xb2\x10\x9dV\xee3\xd0\x9e\x03\xf8\x8eh_Fv\x0bE\xd7E=\xaa\xb1($\xb8Vt\xd2\xd1>\xc7\xf37B\xd5E\x03\xaa\xfe\x9c%\xf1\xe7\xb4\xfd\xa7\xb3\x97/(\x06\xaf\x95z\x95\xde\xdb\x94\x85Y\xab\xe7\x0f\xf9\xf5\xd1\xfd,\x0fU\x87\xfa\xfa#\xad\xd0\xad%\xc6\x08\x94`P\xdf\x8d\xb6\xc4\xb2\xba\xde Q\xda\\F\xf9T\xf1\xcd\xac\x94)\x95\xe9\xbf\xb9\x1a%\xe4\x83\xc2Gv\xa5r4\xc7\x98\x8f\\e\xd7\xf5\xe4NQ\xd6VlL&p\xa5\xf7\xc9\x9c\xd1\xdbd\xce\xfcR\x82\x18`\x9a$\xcc\xbb\xc2l\\z\x06\xf6\x8a\xbd\xc1\xb0\x87\x9a`H\xb3T\x06K\xf3\xf2\x1bf\x9f\x97~\x7f\xf8P_\xa1\x0f\x1f\xc0I\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedf#\xed\xbe\x8d\xc8}\xabe\x1a\x87\xa7\xd0\xa7{H\xa6\x8c\xdd\x1f\xdd\\\x0eFN\xbc\xf8\xe9\xfc\xc7\xc9\x1b\xc7+\xefcN\x7f\xa8\xc2\xe2\x07\xe5\x9d\xc1W)[\xb04EI\x80\xde\xba\xd8\x0e\x99V+\x1d|\x7f\xf2\xecy\xed\x0b\xf9\xcbZ`\x1eUoN\xf90&4\x9b#[\xf8\x8f\x937\x90\xa4\xc0[\x939\x873\x13B\x10\x91\x93\x1a|5\x8e\x8f\x0d\xf7\x17\x1d\xac2\x82\x0c6Y\xed\xd3p\xedz\xf2\x8c\xfe\x8ec\xb0\x1a6\x9a\x11Z\xc5\x03B\x1e\xd1~cxb\xfe\xe0\xf6H\x0b\xba\x96M\xa5\x87YT\xa0\xad:\x1e\xdc \xe67q\x8c\x0d\xd8\x99g.-\xa0\x14d\xf8\xed\xeb\xd3\"&\x19\xd7\x91\x0d\xaf\x93\xeeq\xe1:[\xb77\xed\xfb\x9a4l(\xad\xf4\xfe\xbb\xf4\xe8]\xbc\xbf\xcbn\xd66k\xdc\xb4\xda\xe5\x8d\"(\xb2\x8b\x0f\xdd2\xda\x8b\x8d\x1b;\xcd\x0d\x82\xbeWi\xed\x0e\x82|>g\x0f\xe6V\xbe\x9a+_\xfa\xbf\x17\x82\xbbH\xd0-\xae\xeeI%\x99R\xd5SXs\xfe\x17\xe6\nC\xf7\x0d\xf9i\x0c\x07\xc3\xa1\x8c\xfe\xfa^\xfa\x85\x88\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\x8a\\\xf8E'\xfcW\xad#,2\x06\xe7\xe5\x9f\xe5\xd8\xec\xbc\xc0\xd7\xb9V\x8e\xffc\x8a\xfc\xaa\xa1\xb1j\x17)/7\x1axDZo\x1b4\xaf\xac\xc7n\xba)a\x0cN\xc5\x92\x80\xd3\xb3\xe4Q\x92\x07Tcp\xceD\xcc\x88P\x06\xa6\x90\xc7T\xf8\x8a\xbe\x9a\x1b\xe1\n\xdb\x18\x9cB\xa1\xd1\x1a\xe1\x1aF\xf1\xb3U\x00\xe4O\x9e\xde\xb6\x98\xc3\xb4C\x07\xde\xbe_=\xc3\xd0\x9f\x8f0\xc3\xe0\xd4\xcd\x94\x174\x97\xca\x91\xbd-3\xe2T\xa3\x1f\xcbGJ\xd5|m\xc4\x9fM{\xa1\xa9\xdfcp4E\x83*\xd5\xd1\xd3,\x1a\x95\xcc\x84\x1eB\xce\x15L`\xaa\xe2\xd5\x9cJ}\xeb\xdc\xf1\x8b(6\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83%,A\xfbuP\xf9H^\xc0!\x94o\xd2_Bv\xdd`~3\x03\x81y\x10*[\xaf\xb0\xd2\x86\x19o\x9cS\x88\xdd\x87v\xa5\xc4\xc1\xd6\x10C$.\x9a\x07Z\x87\x9aDk\x89\xd8D\xc5 \xd5\xca\x8eP\x94D\xb5\x9d<\x83\x9a\xae\xde)?\xbeu\xb0\xb1:Di\x05`\x82\xa7\xd0\x18\xfd\xd4\xc7\xe8\xa706$\xff\xc1 ^\xc5\xf8\x85\x93z\x97\xad\x17EU\x97|\"u\x9f\xf6J\xfbK\x96wj\\m\x9c\\ b#\xe4f~T\x9a'\xa5{l\xebx\x154\xfbFU:\x96\x1d\xd4\xc2Bs\xe8h\xeb+\xabL\xb2\x01\x02\xca\xab'\x80\xa0\xad}\xe9\xf3\xdb\xe1\x1a\x14\xd4\x02\xdc\xc8\x1e=\xeb\x1c)\xdc\x8d\x88L\x95\xfb\xc5\x18\xe3st\xfc\xcak\xa7\xf2\x861b\xd0\xb2\x0e&\x0bi]\xb4\xe5\xfb\xd3\xf7\xa3\xee`\xd0\x92\xea\x8d\xc9\xc8lfT\xc6\x8b\x89f\x93\x88>\x15\xf23\xfe\xf5'\xd3a&\xb6\xd3\xfb\x8e3\x11\xae\xd2\xbf\xfeT\xba\xed\xcb4\xae\xdf\xf7\x92O\xd3\x94*\x8eA\xda\x0cM.B\x86\x05\xb0\x9c\xc5\xdf\"\x9f\x7f~\xf2\xc3\xc9\x9b\x13\xce/\xb9\xc2\xee\x0b\xf5\xdc\x07\xe7\xe5\xab7\xa7/_\x9c\xf1?_\xbd<\xc3O\xaf\xde\xbeq\x0c\x0b4\xd3\xba\x9c\x89\xf4\x17\xad+\xaeIe\xd2\x13\xdc\xbe\x82\x97\xc9\xfcV?e;\x8dC\xb3+\x96!\x16\xf5G\x1f\"Bnm\x9c\x9ez9/\xbd\x9c\x7f\xe6T\xe6\x95\x93\xff\xa6I\x91\xf60\xd6\xb5\x0d\xbbFX\xa8\x1a\xe3\xaazb\xaf$\xb4\x8e\xb1TC4\xdd\xa4A\xf9\xdc\xa6\xd1X\xa9);\xac\xf2|\xd0\xd9\x9fF\xa2\x1b-\x19Y\x8c\xda\x17\xca\x90D\xb7\\\x84\x96\xc7q,\x83nDm\xa6\x14M\x9c\x85S\xf5|\x04\xb34$/\xd5L\x0f\x87#\x1f\x0e\x87\x07\xfc\x9fC\xfe\xcf\x03\xfe\xcfC\x03\xba\xcc\x07)\x9b\x87)\x05\xd8\xed\xc4\xd2\xb8\xa0.RK]jV>\xddZ\xf6:\x88\x97UwS\xa1\xd4\xce\x92\xb9\xf5\x80\xbe\x04\xba]\xf7\xa1\x0b\xc45+OQBG\xcd&\xeb\xa4|,\xea\x93\x11\xf4\xd8\xe0{\xa5r'\xfc\xe7k2\x08\x02\x86^\xe5?\xb3M\x12g|{\xe7\xfc7j\xce]W_[\xa3\x9a\xd3Z\xd3%\x17\xd0\xad/H\xe6\xb0\x97f\x1b[(\n\xff\xe7\x8f?|\x9f\xe7\x1b1\x0f\xbb\xa9&\xdc\xd13\x0e4\xeck.\x05\xda\x8e\x87\xad\xf4\xa9\\\x83\x101\xecD\xa4\xe4\xa3@g\xe3bN\xa7gQ$\xb7Ml\xae\xeb\x91\xb1\xc4\xee2\x02f$\xd5\x1f&\x8c/N*\x1a\x7f\xfb\xfa\x07G&\xa2\x0f\x07\xda[\x18\x03+\xfb\x93\xfcg_\xecG\x9fWj\xf1y\x91&E\xd5\x91\xa1\x17L\x0f(\x7f\xf0ejn2v\x05\x8f\xf1\xc1$\x97\xcb\xe7\xa3\x8f`\xd1\x99\x1a\xcb'\xad\xba\x86\xbe`\xf9u\x92\xbe\x97\xe6uX\x04a\xc4\xe6&\xdf\x0f\xf9\x88\xaes\x8a\xfe\xfd\x0f\xe9|\xc3b7Q\xc7Q \x9d\x7f\xe1\xe5&'\x8cg\xd1v.\xe2\xd4%\xa5\xd3\x1e.Y\x85\x18\xa5\xec\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|0j\xe4 c\xf1\\\x0f\xa6\x9ah\x87n*}\xa0\xf6\xd2&\x95\x9a\x89-\x92\xcf\xc1&\x89n\x17a\x14\x99\xbc\x82\xd5_\xae\x9e\xc1\x163[\x90lQ\x8d\x85\xf6\x07\xd1xiqv\xbai\x94\x9bn\x19\xdd\xbb\xeb\x0d\xc8\x98b\nd\x1b\x1a\xb7\xc0lQ\x14\\\xc0pLQ5\xd5J\x13\xa2Q'\x10\xcd\xa4*\x8d\x9b\xf4\xc6\xe5\x03\xd1|\x13m\xeb\xa9\xfe\xaa\xb6\xd0\xc6\xcd\n\xb5\x18\xef2\x89\xec\xdd\xf2`W\xf9Ml\xe9\x9eQF\xffE*KN\x910\xdc\x9a&\xe7J\xc4\x1b\xcd\xe0I\x11N\xfa\x88k\xd6\xc2\xbf\xe2Y\xee\xa2s\xfd\x8b\xe0E\x9d\xcee\xd7!\xae\x9a5\xdb\xfd,\xc8\x18\x0c\xc7V\xc0\x97\x0dX\x8f\xd7\xe5\x83\x0d\x1d>\xb0\xb7$\x1f-\xd9\x80\xb8z\xd5\x10Y@>\x98\x86\xad\xb9\x18\x0e\xe0\xeea\xfb\x00\xf0J\xac\xcb\xd7\xf4\xf0\xa0\x85\xdb\xc8\xc0\x86\xadm\x06\xd3\xa8\xd73'\xea\x94\x8fY\xf2\x82\xe6\xc9\xe1\xa4F\xf6\xfe\xb9\x0c\x1b\x92<6\x83\xa7\x13\xb8\xfb\x90On\xc6!\xeb\xde\x03\x0f\xd7z\x06}\xb8\xfb\xd0>O\xe5\x95\x8b\x0d\xdc\xbf\xa7\x1ax0,\x1a\xb8\x7f\x0fz0\xb2\xdc\x10\x86\x1d\x1ch\xa9\x97G\x0fT/\xa3\xe1Ac\xf0<\xf9\xa8\x15>|\xe0k\xcb-p\xab#\x045\x96\xb2o\x10\x08\xb0\xe5+\xf1\xe8\x01\xae\xc4'l3\x1f\xe8\x81}\xa0mPp\xd0\x0c\x05\x82\xc4\x98\xa0 \xfd\\(H\x7f\xe7P\x10\xea\x10\xf1\xeb\x83B\xfa\xd9\xa0\xa0F;\xba\x0f\xdf@\x0c=\x93Q\xfd\x0f\xf6_\x82\xdf\x05ER\xe2\x08\xfaz\xea\x94\x8f\xbe\xc6\xca\xf8\n\x15\xab\xa2XVP\xf2\xf2;\xb8w_2\xaa\xc7\xb0\x85'pp\xef\xfec\xe8\xf5\xb6\x1e\x04\xd3-\x86#\xfe\xa3\x03=p]\xfeqt\x1f\x8e\xc0\x19:\"]r\x0f\xb6\x05\x97\x1d\xdd\xf7<\x9b\x87\x8d\xcc\x9e\xd6hFo\xb8E\xd9\x9b\xf0\xfe\xca[\\\xf2ft\x9cR\xceP\xe1\xac\xc8\xb4T\xc5F\xcdRj\x94%\xb6j:I!\xf0=<$\xf9\x8fkNw\xefi\x7f\xdf/\xfe~\xa4\xbd\x1f\x1dh\x1f\x12\x0e\xfb\x87\x8f\xf8\x8c\x12\x0e\xfbw\x0f\xd4[B\xdc\x84\x10W\xbd%l\xc4\xb7\x8f\x86\xea-a\x0f\xbe\x1d\x1d\x1cX\x04xtd\x80>\xc4*\x1dh\xce\xd7P^(BE\x9b\x8b\xd3|K\x0f\x1e\x12\xbdO9T\xfb\x80\x05\x83ib\xb1\xdd*\x82\xc1\xeb\x1e\x0c\xef\x1a+\x8f\x1e\x1d\x00\x0e\xf7)\xdc?\x87\x1e\x7fs\xf0\x10>\xc0\xfdC\xb8\x03\x9dZ\xbew\xef\xe0\xd1}5\xe7{\x0f\x0e\xef\xde5utppWv4:\xd0{\xa2\xbe\xe1\x0e\xdc?\xdcm\x00\xcd\xd6\x87\xb0\xc1v\x80\x10\xd2\xeb\xe9pW2*\xbd}}*\x94\xb1\xb7\xafOa\x1dD\x8b$]3\xab\xdb!\x08\xfb\xc5hx\xc0\x07]\x81P\xdf\xb4\x18w\x87\xf0\x81\x12\xc5\xdd\xbfw\xef\xf0>b\xad\xa8\x9ex\xf0\xe4 \x8cx\x81\xd0\xf3p\xbd\x1e\xd6\xd6ktP[\xb0\xe6u4\x0e\xbc\x03\x01+\x02\x890\x8c\xfbT\x12qs\xe8\x15\x80\xea\x95c7\x96\x15\x95\x96\x88\x05\xd4\x97\xe5\x8e\n\xef\xd8\x94\xb9\x85#K\x98}\x17\xc6!E\xe4:\x02\x87\x93?,~\x99$\x11\x0b\xe2zSG\xe0\xe4\xe9\x96!Y\\\x04QF\x7f9\xfa\xb8\x0b:,\xf5\xa5hw}\xc9\xae\x1e5\xc51,8\x02F\x1e\x18vQ\x87h\xd1\xc2\xc5-&\x0c\xa4[+U\xa5\xc8\x9c\x0fX9\xf1:w\x04MF\x87UgR\xb9ht\xa5\x12\xfa\xd2\xd8\xca_\x89\x0e\xd8\xa2\x18%bD\xba\xe6H\x96\x03<\xb3\xa9\x7f\xe4\xf8B\x99b'\xf6d>\xa6%,qM=\xe3\x83\xcc1\x1c\xa8\x88$\\\xbd\xdbrvL\xd9\xf29GZ\x10+Z\xc0\x13\xd8r\x1e\xb4h2\xe1S\xaa\xe1EC\xa6\x879\xa5$n\xc9\x16\x11\xba\x19\xe6\xb7\xedU\xd3A\xca\x87\xafm\xf9\x12\xf8\xbcQ\x08Skp\x05\x13\x98\xab\xf9\xaea\x02W4\xdf%\xcds O\xe0\x8a\xcfs\xe9\xc1\x8c\xd3\xa4\x15\xf4p8\xf3\xe9\xf2\x9c\xf3\x1b^`-\xd4\xb0\xde\x04\x9a.V`\x08+\xbep\x91^\xdeLp\x88r\x97{\xe4\xdd\xb5W\xaf\x8bj\x02gf\xedDL\xc7o.v\xa1\x8f<\x024\x995\xbe<\xba\x04\x86\x88_\xa1-\xea\xc6\x87\x0f2[\x8fdFJ|,\xb7`\xa8\x9d\x17\"CM\xec\xba\x12)\xf1c \x08\xb5%$\x8fp\xdbW\x8e\x1b#vXn\x94P\xbdN\x8e\x93\xc1:\xb8\xf93\xbb\xcd\x94\xee\xae\xde\x18\x86\xc5\xd1m\x04\xfbU\xb5p\xa6\x84 ^`f\xa8\xb8\xc1m\x93T\xd2443\x15\xaa\xdb\xaf\xb0\x9b\x0d\x8e\xb3\xfe\xd1&\xc0r\xbc\xde m\n}D\xe1\xe9\xb9\x8f\xc86$,\x1b\n\x0c\xf3\xf1\x94\x99\x13\x96K\xf1\xff\x05\x9d\xc1\\\xd3\x7f'T\xe8\x86\xb0\xf1\xa6\"\x00\xdf\xd8\x04\xe0\xb3\xaa\x00|c\x11\x80\xcfp\x8c\xb9^tm\xa5\x1c\xbc\x82\x18<:]\xb9\x87\x0f\x10\x1c\xcf\xe0\x08\x07:\x821\x9c\xa8\x9d9+\xc4\xe0\xb3B\x0c>+\xc4\xe03RJ\xd5[\x12\x83\xcf\xa4\x12 G\xc0es\xe8\xf5(\xc2\xda5Y\x9b\xb1\x8f \x86\x91\xe6\xb4\xc7j\x0e\x035CJ\xba\xa2\xcdp\xd9\xaa\xa0\xf2\x8a\xbd\xde\x12\xabn=\xb8\x82'\xe0\xbe\x87 \xdc@\x1f\x96\\B\xa38\xd5\xb7\xba\x04~\xe5\xc3{N\xa2\xc4\x96]a\xf1^\x9bIl\x96\xc4y\x18ow=\xe6\x03\xe1\x0d7\xe4\x00\xf3\x9bo\xc5Ee+\xcc4\xdc\xf8\xf6\xee\xa1\x18'o\x077\x10\x8e\xc0\xe5\xebz\xa5\x86[]\xd6\x1b\x0f\xe3\xa9q\xd2\xf5\xc7\x83\xa1\xc0\x11\xea\xbfR\xf3\xd2T\xf3R\xaby-\x8f,\xd4\xf6\x188H\xa1\xb7\xf4zk\x1cn\xd6\xc4\xe5\x8f}\x90\xb0\xb1\xb6o8oN\xce\x97\xc3\xd3{\x1b\x04\xc1X\xfb^\x9d\x10B\x98\x8c\xf88\x81\xc8\xbd\xf5a\xc3\xdf]\x8b\xe2\xfc\xdd\xa5x'\x8e\xc4W\xeaH\xfc\xd6\xf3 \x98\xde\x9ec(KXMW\x82\x96\xf0\x17\x86\x9bY 4(\xf7\x18\xe5\x98\xdbsO\xbf\xa6\x85r\x06\x1c\xc1\xf1\xf4Xk\xe6\x12\xc6\xb2\x8b\xe9\xb1\x0f\x97\x16\xc5\x8c\xaf\x06\x06\xf5\xea\xf7\x17^\x93\xc1\x8cou\x99\x16\xdeb/D,\xd5.\x12UE\x8c\xa8\xef\xe7\x1f\xec\xbf\x16\nt\xaet\x95\xe5\xc3\x07X\xf2/^\xfd\x93\x0e\xb7\xe5\xdd\xe3;\xb7\x86'\x90\x19v\xce\xfb\xcc}\xe3Hb\xdd9D\x84\xcf\xd9\xa3\ns\x90B\xc5\x1f\xcak\xd69\x93\xc1#K*\x83\xc3\x87#\xaf\xfdtO\xba\x13\xc8\xebpp\x04\x7f\xffH \x0dAB\x8b\x91\xeb\xc7e\x9d2]\xea\x03\xaeF\xd5\x13\x03\x1e\xb6GI\xb4'\x85HE\xa7\xad~p\xa2|\xe2\xb2Z\xfa\xb3\xd6\xc8p\xd69\x8d\x0e-s\xba[M[D\x81\x05\x1f<\xea2U\xc3\x0cJ\xfaT\x7fD:\x94\x12\x16Qt\xfc\xfbG.\xad\x04\xa83\xd9D\x16\xbc\xf01\x0d,\x9a\x10\xe6\xe9\xe3#\x88\x0c\x82L\xec\xce\xf8\x07\xa0\x98\x81>\x84nDA:g6\xbd\x18\x8aU\xcfv[`\xf3\x19\xeb\xfe7{E\xdb\xdf\xc0,I\xde\x87L\x7fs\x9cln\xd3p\xb9\xca\xdd\x99\x07\x07\xc3\xd1A\xff`8\xba\x0b\xaf\x93u\x10\xc3\xd9*\xbf\x8d\xd6A\xdcT\xe1\x1e\x1d\x9e#\x0f\x99\xa3*O\xfcf\xc4\x99H)w\n\xc4\xd3\x0d\x95\xc3?&\xb0u\xe7>d\xed\xa1)M8SI\xe4\x9d\xb14\x0c\xa2\xf0\x17\x93~\\],E\xa0\xc4v\xd7WZ7O}\xf8P\xbdm\x88pY\xa8n\x05d\x86\x16\xc8L0\xa9\x1e\x88\x06\xc3\x0cB\xf2\xfe\xab\xee2\xeep\xd0\x12\xa8R\x81y\x1c\xac\x9b\x1a\x93\x1auX\x8b4A\x07|\x18\x9e\x9b\xfa\xda\xb6\xf6u\x15D-]\xe1uu\xe8\x813q\xa0\x07\xdbz\x8f\xc2R\x06)W\xb5\x9f-\xadW<#(\xca@\xdft\x18\x8b\xc7\xd4\xd9\x8b\xe0\x85\x1b\x99\" \x89\xaa\xd9\n\x831 \x0dxA&\x00\x03\x14g(\x98?\x86\x1f\x83\x9b\xfe\xb3%\xc3\xc1\xff\x18\xe4\xab\xc1\"J\x92\xd4\x8d\x9a\xa87\x1e\x87\x0c\xe6\xc9:\x08\x8d=\xe8o\xb0\xd7\xe4\x15$'(\xfa\x98\x9cUe\x9b\xea\xd3\xe6\xdd\xe0D\xc1\x8d\xb3C\x87?\x047\x9f\xd3\x9b\x90\xc5v\xe8\xf0sf\xd8\xeaF\xd4\x04\xf4j\xbfu\xa8\xaf\xb5\xd4\x81\xffj2k1L\xc9Y\xebF\xca\xba\x1aP?N\xa9\xab\x04\xfb\x8f\xe1\x9b\xfd\xf2k.\x9a\xed\xff4}\xb7\x1d\x0e\x87\x8f\xf8\xbf\x07\xc3>\xff\xef\x01\xe3\xff>\xa4\x1f\x8b\xc5y\xef\xdf\xf6M\xc7c\xdb\xdf\xeax\xac\x1a\x93\xb9\xfc\xd7'I\xf8\x1dC\xaa\x8b\xfek\xcb\xeb2-\x1c\xc4t\xefk\xd7\xfb\xe6|\x7f\xd9\x16\x8b\\\x1eK\xa0\xbbF\xc9\x9e;\xf4J^\x1ae'\x8d\xf2\xec\xdb4H\xbd\xe3n\xb3,\xb9i\xc8\x1c\xf32+\xb2\x92\xc7c\xbb<\x9eV\xcd\xd3\xb1E\xe4N\xd1U\x00\x1d\x07\xee\xdc\x81\x14m\x97\xf7\x0fG\xe8q\x11C\x0fF\xfa\xc9|\x83X^s\x08\xc1\xca\x16\xc1\x9a\x0e*\x9fbW\x07h\x1c\x12n\x1c\\un0\x1c\xcb\xe3\xcf\xd1\xf0\xe0.|C\xde\x1a8v\x0fz\x90\xf0\x1f\xd8^\x8f\x8e\xf2\xed\xe4'\xa7\xebp\x07w\x87ey(\x84}\xb8\x7f\xb7\xf8\xc7\xf3at\xf0\xd0Z\xc6\x83?\xc2\xfd\xbb\xd62\xe5\xcf!\xfeB\x1f\x84^\xa3\x1bg\xa3\xbd\xban\xf25\x9c\xc6Qh\x89\xbb\x0f1B\x04\xcd\xf4\xe0ny\x84i\xf3$S\xc3\x04R\x9a\x00\xe7\x97\xbc\x03\xfeR\xb5?zt`l\xa0^WTH;\xd8\x0d\xda\xd2O\xea\x90\xb2gw\xf3\xe7@\xc3la\xf9\xedF\xb2J\x91\x86\x0b\x96(\\\xa6z\xfe/\xcb\x19\xb2\xc4\x93\x86[d\xa1\xddAs\x9e\xb4`F\x80V!v\xc3f\x8d\xa9\xc5\x94\xb62\x99L h4\x0d\x83\xd2\xcbCx\x02\\\xbao)\x9c\x90S\xcd\xf0\\\x19\xa7\xc2^\xcf\x0c\xc8p\xbd\n#\xa6\x14'>\x14s\xbb\xd2v\xc7\x81N\xf3x\xe9\x8f\xcc\x19r\xfe`\xdfIK\x8a\x00\xd0\x9d\x04\x85v\xbaS\xbb\xc2\xach\xa3\x8eZz\x8d;\"\xbd\xc1\xd4\x99\xfet\xee\x9c\x97\xcd\x07d;\xe0\xa2l\xcd\x9e\xa3\xda\x12\xa4\xbd\xed\x92\xf0\x0ea\x81\xb0\x1a!%\x1bd\xc96\x9d\xd9\"Fx\xbe,\x18\xca\x82\xe48\x98\x0efI<\x0bD\x10Gv\x0d\xaf\xd9\xf2\xe4f\xe3\xa6\"\xe0\xcf\x07\xc7\xab\x99]\xc1H\xba\xd8`\x11\xc6\xf3\xe3U\x90\x9e\xc6sv\xd3fB\x93\x0f\x87\xd1\\\x87\x0f\x85\x89\xfd\x86\xb3\xa22\xceZ.>\x95,i\x89\xeb\xf9\x02E\x0b\xd7\x98X\xa2\x1c\xda\x1c\xdcx\x10\x05YN\xc3\x7f\n\xb9\xf7\xd8\xe38\xd0\xb8]\x86\xfc\xcc\xbeX\x8aoos\xb6\xd3R\xc8\xd9\xf0\xd5\xc0\x1b\xb4\xb4 \xe4\x95\x858\x83\xf5q&\xe6x\x8b\xc4\xc5\x9fu\xbe\x1a*\x17\x87n\xa6\xebc\xa6j\xf6\x0d\xe0\xd2\x0c\x9e\x88\xc6\xc6\xbd\xb3EY.\xe4\x1b\xe5\x98\xc9\x85\x8d\xea\x89\x88\xfe$\xe8t\x84\xfb\xd4\x92~KQ\xc6\x84\xeb\x8c\x94)?\x99\x0e\x8dq6tyg\x97\xd5j\xbd)\xa3?r\\Hc\n\xdc\x92(\xe8#\xb50\xee%\x7f>\xb6\xedA\x8a\x06W\xd9\x8b\xf1^\x0c\xd8D\xbc\x96\xa5$\xa9\xf2\xc9\x84\xbcA\x92B\xb4+\xcd\x89\x8f\x15}?\x87\x9e\xafdN\xe95\xca<\xa7\xd0=\xa8\x07\xee\xa2Q\xe0\x10\xde$\x9c\xf4\xbdJ\xc2\xb8\xc5\xe6!\x9f.\xb6\x0f\\\xdb\x99lW\xae\xb1\xc6=DjIU\xc4\x13\xd6\x12\xa1~j\xef\x1b\xa7o\xe1\xfajBo\x84\x85\xe8\x8bM\xac?\xb9\xcf\xd7\xf2\xf9w\xdf\x9d\x1b_\xeek\xbb\xfeQ\x1c\x16t=\x13\xf8\xba\xdf\xef\xbf\x8b1\x00\x96\xb3\xca\xf3M6\xde\xdf\xdf\xb0\x1c\xf3\xdd\x0f\xb2\xeb`\xb9d\xe9 L\xf6\xaf\x0e\xf6\xe5\xaf\x9f\xb3$v\xde\xc5\xf3d}\x11\xce\xc7\xe0|%>\xf4\xb7\xa1\xf3\x8e\x0e\xc1\x82\xd2>\xab\xa60\xf2\xc15-\x07\xf4a\xe6\xc1>$\x1dg\xa5?ie{\xb4\xa3\xc0\x0cz\x10\xc17d\xee\x1d\xdc\x83#8\xc08\x0e\xdf`$&\xfe\xbf{\x17\xfa\xf4\xd2C\x95\xd2\xa6\xe0\xd8\x9e\x02Py\x17#\x0e\xac\x08\\\xdf3t\xef\xf5\xf0\x00\xf2 \x10`\x0f\x88L\xd37.\xb1\xa0\x0b\x90\xbe\xd2\x81\x0f\x8f\x1eiPo\xc7\xce\xea\xf3\xd1\x87G\x1d\x8b\x7ft\x9b\xcb\xd9/%5\x90\x84h\x07S\x85|2wK\xf1\x9e\x8dG4\xf2\xb1\x84\xb4\x93\x8c\xc8N\xa4X\xbe\xdd\x8c\xbb[\xbb\xa1h\xd4\x1571\x91*y\xeap\x8c\x8fU|B\x87\xe6\xdcS\xc6\x9d\xdck\x8a\x1d)\x1f\xe1`\xf4|\x9b\x8a\x00\x90q;\xb8\xb3\xf9\x92\xbd\\,2\x96\x9bBz\xeb\xcf'\xed[\x9e\x8c\xc1\x92\xab\x80>\xff\xd7\xb8\x89\xd6\x85q\x9e\xfc%d\xd7\xe5u6]\x9c\xad>\x92Wc\x9c\xf0o\x93m<\x0f\xe3\xe5q\x14\xb28\x7f\xcdf\xb9\xeb\x0dV\x88'\xed+\x14H\x8a\xae\xf8Z\x0f\xc2\xf6j3YM\xe2j{\x95\xc5N\xbcc\xc3Q\x02zm\xa1n0\x05\xf2\x13Xp\x88\n\x91^<\x85\x19\x1cQ\xbc\x01Z\xc91\x04\xe2\xc3\x06\x8e s\x03N/\xf9\x9b\xa2\x00\xb1\xd2\x06\xccn\x80\x81\x19\x8bs\x96\xd6\xb60\xed\xb0\x8b\x99\xdb$]\x94I\xe1>\x1c@\x8f\xa3\x0b\xc7\xaa\x96]\xe7\x85=OL\xefS\xe6\x94\xe5\xc9f\x0c\x81\xbd\xc0:\xb9\n\xe3e\xc7\x0c\xfcP\xd0\x86\xbd\xbd\xfa!\x90|\x1a\xc6\xc3\x81f,\x80\xa7\xb1\x14.\xdfX[Jca\x833N\xbdUN\xb3\xa4\x14?\x90\x7f\x9cDl]s \x04\xc1G[\x17C,\x82\xd0E\x88\x9f\xfd\x17\x1a\x91\xc5\x8f7\xc9\xa6\xcb\xd0\xd0j\xef\x9a\xfb\xa0x\xd7j\xe0\xd4n\x18/\xc5\xc8yo\xea#/k^N\xa4\\\xddd\xe5\xd2l\xde$\x1c\x92wL]\x81\x9bkIN\xa9P\xa0#\xac\x95\x978\x8cc\x96\n\x89\x01\x97y\x86\xc8Bov\x1c\xa3\x00\xadn\x8b\"\xf5T+\xa2\xe6\xc9\x86\x93 \x14\xde\xe2A\x82,\xca\xb4\xfb`\x06W\x83\xb75\x06%\x0drv\x86\x1bQ\x8b\xeah\xa3G\xd2N\xd5\x08N\x96D2e(i \xcb\xaf \x9c\x03\xef\x8ek\xff_\xbb\xed>k@'h\xec\xe8S`M\xc9\xe7\xac\x04^~' \xdc\x15S>\x0d\nw\x86/\x01/\x7f\xa8\xbct\x82\xf9\xfc\xe4\x8a\xc5\xf9\x0fa\x96\xb3Xd\x0c*L.{b\xcaq\xf2\xff\xb2\x98\xcc/\xf8\x9a\xb9%\x9ac\xbc'&E\x1ag\x15fy\x92\xdeV\xad9\x9bm\xb6:\xcb\x83\x9c\xcc<\xa2\x90y\x9d\xb8L\x13\x92 \x08\xe1\xe05\xe3\x85Qj\xd4+\xd7%\x0b\xcaT*>\x0fj\x95\xf9\xe8\x82m\x9e8\x9e\xda\xdc\xea\x82\xb8N\x94\x04s\xc7o\x87 \xeakWE\xb1ql\xeb \xde\x06\x91%\x86=Wq\x1a\x86\xbdI6\x19\xaen\x9b\xe7\xb5|\x18\x86\xe8&K\xdc/,\x16\xdc\x8cRH\x15\x9f\x12T\xf1\xc4\x8bAQ\xce\x06\xf7\xb0\x87\x97\xf3\xc40e\xb0\xf7\xc1*\xc8\x10\x92v].iUL\x06\xa8\xd0\xb8\xde\xa0\xd0\x08\x9aO\x0dZ\xedC\xd2h\xa7 {\xc9\xa4x\xf0\xed\xed\xe9\xdc\xadM!e\x0b\x99\xc1\xef+\xc7\x9b\x8e\x9a\xf2\x05\x83t\x8ek\x1b\x05\xd4\x0c\x05$L&\x850\x99s\x1e\xc3:\x88\xdc \xe4\x98D\x08\xe9\x9c5\xb5+\xf4Cx2\x81\x14\xc8 \x1d\xd0\xff\xdc \x124\xa8\xa8\xd0\xac}\xd9\xa1\xd9D\xb6\xf6L\xae\xebW2\x8aO\xe1\x86\xe5\xb8?}x\xf7.\xf34J\xe5\xbe{\x97}\xf87\xcf\xe4\xc2i\xc5\x9aY\x14\xce\xdewB\x99\xd2\xb1!\x1b\xe4A\xbad\xf9c:\x89q\x9e9\"\xd8L\x1e,_\x04k\xf6\xd8\x13G\x9f\x9b eq\xfe\"\x997$\n\xdfs\xf7\x90\xb1\x8c(\xe0\xd7\xe0z\x15\xceV\xa4&`\x1a\xc8?\xb3[\xfa\xb5fy\xa0~\xcc\xf24R?\x82\x88\x97j\x8c\xfd\x82\x16\xc86h\x94\x90\xa8\xa8\x94\xa2\x10\xf5\x08d\xe52G\x95\xdf\xe3\x9a\x91\xbc\xfa\xc4\x1a5\xd1\x80\xb6\xb9R{\xca?\xd0\x88\xac\xb8\x96\x82\\\xc7\x8d\xeb\xe7k\xd5\xa7\x94\x02pW\x90\x06\xdd\xc5\x0b\xb3\x18\xe4y\x1a^ns\xe6:\x9cv8\"\x85A3\xd9\x12\xc6\xfe\xe2\xce\xf6W\x0e\xf9\xb7n\xc9C:\x1f\xcc\xa2 \xcb8\x90\xb5\x86\xfa\x91\x06\xdf\x06\xb7w\xf9D\x0d\x840-\xdcZ\xdcQ\x9b\x89\x10\x8fW\xber\xc4\xd1j\x87\xbdB\x0c\x88\xe4\xd1J;\xb9\xca$\xac\x10q\x8c>\x95.\x01egJ\x19'\x08\xcf\xc94\xd5\x06}W\xe2\xcac'\xd6\xa5?\x15^\x02\x93\x16c\x164\xab\xd3\xf2Y\xec\xcc\x19\xa9\x16]\xff,3\x9c\x0c\xfa\xb0@/\xeb;\"x\xd9N\xb3\x94(\xa7\xa4<\xf7\xef\\\xdet\x8c>^\xfa\xf3\x11C\xbb\xa2\x94\x91\xf9\"\x83\xf4\xac\xc1\xe8af'\x16V\xf2\x07{!\xe9\x07\xa7^~t\xcb\xdea\x18\x9e\xd1\x18J-\xc5[\xad\xc1f\x13\xdd\x92\xa7 \x8c9\xac\x7f\xf8\x00\xae~\xa2\x1c\x9a\x0f\xa0;\xdd\xc9\x13\xc1\x1b\xe9\x94\xb2\xc8\xc9\xe7\x83sq\xc1\xb2\x1f\x93\xf96\xe2\x92^y_0}\xdbX\xcf\xc8\xa0\xeb\x99\x926m\xdc\xd8\xbd\xeb\x19\x02\xa8\xf0\x0f\x07\xd5\x0f\xa1\xf8pX\xfd\x10\x88\x0f\xf7\xaa\x1f\xb6\xe2\xc3\xfd\xea\x07L\xf6\xe0\x0e+o#,^MJ\x85'G\xbc\x15\x94&\xf1\x0f\xb2\x88\xb9\x87\x0f\x1fT\x1b^P\x94\x17\xcft1\xd3\x90\xf4Y?\x83f\x83b=E\x9c\xd5:\xac\xcb\x9b\xb1-\x97/A,2E\xbdX\xb1h\xc3\xd2l\x90lN\xe7\xe5\xe1\xb6;\x02\xaa\xd1\x0b\x7f:\x0b\xfe\x91\x9c(F\xe7\x89Lj6\xcf:\xa9\x9e\xf1JA\xb5\x92\x9b\x0f..0\xfd\xd9\x05\xc5\\\x1b\xfa\x18\x19R\x16\xf2<\x91#\x11K\x93{g\xe3\xc1D8\xc8\x93\xe52bg\xab\xe4:\xeeJK\xa4\xb0\x1f\x0e6i\xb2i9c\xcc\x85\xd3\xeem\xb2\xcd\x9fa\xdb-\x15b!\xb7-\x9b\x8b\x91\x97\x1cG8$\xd5\xd5\xcd\xab>\xc25;\xc3\x896\x17E\xad\x96s\xae\xd7,K\xa2+6?\xdb^\xe6)k<\x0f\xc53P\xcd?'@;\xf9@$\xc6\xa95\x84!KV\xc9\xb5;u\xd4\x0c2\x87\xec\xd9\xe7>\xec\xd9\x9c\x9a)u\xcfq\x10\xcfXt\xccE\xe2\xae[\x869j\x04\xbdo\xde\xae\xf4\xf64\x7f\xb9\xcdO\xe2\xe02b\xf31\xec\x85B\xa7\xac|\xb1\xb6b\xc8H\x03\xc5\xd8\xdf\xa4\x1c\x10v\x1a\xfb'\x80[\xb6a\xb3\x1d\x80m\x13\x98b\x8a\xea\x0fA\x1be,j\x10\x0c\x7f\xcbU\xe60\x84.\x1b\x7f!\xbf$F\xc9\xc11\x87ejs\xab\xa3M8\xb9a\xb3m\xde)q\"\xec2-F\xed\x9e\xc6\xaf\xd2d\x99\xb2,\x1b7&\xf2n\x18c\x1d\xfb\xba\x0e\xf6\x13\xa1\xe5\x8cEl\x96'\xe9\xaf\x00/]\x08\x13\x1f\xc2\xab _\xd9aK\xdd\x07\xc0\xac\xf6\x1b6\xab\x12\x15.\x9b\xfd\xe9\xcc\xf5\xe8\x12\xb1\xa9\xc4\xd4\xe1\x03Wt\xa6a\xf9\xcdt\xebW\xde\x82_\x0da\x7f\x85\x0d\xb0\x10\xf6\xf2\x1eX\nu\xdf\x06R\xd1\x9b\xb2\x00\xd6 \xc9\xc8>[\x13zZr\x8a\xfb\xa6;\x97\xb57\xca\x11\xc1\x87\xad&\x85\xf8\xc2\x07\x81OA\x7f;5\xcf\xe3=\xbb\x1d\x83\xb3\x0e6Hb\xde$\\\x8c\xce\x1c\xf34\x84\xe8\xdc\xd9]B\x1aJ\xf2A\xb2i\x07\x98\\\xc8)\x1d\x89A\"\xc4\xb4\x9c\xdc\x1d\xe3E\xb8\xcc\xbc\xb63w\n&?Of'7\x9b \xce\xc2\xa4\x834\xc2\x85G\xb6\xf9!\x8c\xdf\x87q\x8bX\xb4\xa5\xe2a\xb6\x89\x82\xdb\x97]\xa5\xa3L\xaf%R\xd9I\xff\x8f\xe6\x9a\x11\xa9\xb6\xdb\x0d\xd7\xa6\x10\xc6\xd7a\xfe#\xa2]\xcb\xeaa'OO\x16\x83\x1f\x83M\xab\xd2\xfe\xb3\xd0\xf4\x17x\x13\xfcOg^\x0b\x8b\x03T4\xc6p\xda\xdc,\x7f\xf2`\xd9\xe9\x86\x05\xa7\xdfV\xef]\xfd\xc9\xa4\xee\x91[\x14-\xfa.\xf4,\xc7\xc2\xdd\xf4g\xce6)\x9b\x059\x17\xf1OI\xf3-^9B]3\xf6\xa5\x15\xa3\xee\x9a\xccS\xf2!\x0e4\x86\xa4\xbdh\xa1\xa7t\xb8JQ\xd6UZTi\xa8\xaa\x8a-j\x19\x96\xaf\xdb \xc4\x82u\xb7X\xb4\xf7R\xd2/;\\\xf0SzU\x8b.\ne\x15\xaaE\xf6\x80\xbaN\xd9B\xf2AW\x81Z\xf4O\xb0\xe8\xc6-\xda(4\xe8\xc7-B\x12X\xd5\xfd\x16\xce\x0ff\x89\x96\x04b<\xd2\xa9}mo\xb0f\xd6\xd5\x9a\xebzB\x04P\xf7_\xd7\x1fa-\x89\xa4\x89V\xb8\xb5\x0b\x8f\"\xf7\xc7\xb6\xabb\n\x9c\xc7\xf0s\xf3\x8c\nm\xba\xcdh\xdf\x11<\xba\x82\xb4v\xb6-\x96P{\xd3\\\xb5tR)*\x97\xde\xb5U\xd7\x0eiUu\xed][uqD\xa7\xaa\x8a\xdf\xcd\xd5\xa4<5\x86\xcb\xf6\x82\x82\x95\x8f\xe1\xba\xbd\xac\xe2\xe3c\xb8h\x19y!$\x8c\xe1e{Y\xad\xe5W\xcd\xa5K\xf2\xd0\x18\x8e\xbb\x94\xd6Z?k.\xaf Och\xd9\x9d\x92\xe44\x86g\xcd\xa5u\xc1r\x0c'\x1d\n\xa3T9\x86\x9b\xe6\xa2\x8bx\x0co\xac%l\x87\xab\xb5\xb7\x1f\xcf=\xbfrO\xe4\xa3\x9b\x0d^mSfJ1\xb9\x92\xe4\x02-\x1d\xb5\xb3\xa9\x12s\xda\xab84\x16t\x00\xdd\xc7J\xdf*\xbc\xa4Z\xd5\xc4\x0c\xaa\xb2\x84\x8d\xf2k\xc6\x05\xcc\x15#&\x00\x13\xa0\\\x14\xbf7\xc7\xaf\xc8\xe6\xf8\x15\xd9\x1c\xbf\"\x9b\xe3Wds\xfc\x8al\x8e_\xfc\xc3Pw\x1a\x8a\xc8\xb9\xcb\x92k\xfa\xb7\xf6\xd9\x9a5\xfadi\xfeX&k\x8cv\\ip\xc7\xf2?\xd9\xe5Jx\x18bq\x992\xa7\x9a\xd6\xc8\xe8\xd4\xf8\x19\x07\xa7d\xa0Z\xb2\xfc\x07$t\x06)\xbe\xab}j\x17\xdbT\xbe\x83\xaa\x1c\x9b\x14\xdf\xc1l\x9b\xa6\\\xbch\x10t\xd1>\xe9\xc6\x98T\xbc\xd1y\x0d\xef\xe8\xb6\xceO\xab\x90Yd\x1dg5r\xa4O\xeb\xd7\xf0\"\x11\xdc\x03D\xf0\x19\xbcS\xe0|\x8d\xe7\xf5_;\xf0ug\xd2Z\x86\x00\x93@\xd5bg\xfc\xa4=T@a\xb3\xe6\xb6\xac\x06\xa3\xa50\\\xfb(\xcf\xa7\xcc88\xd3\x90\xed\x99\x18\x87Nwg>\xccj|\x84Z\xff\x171\x16\xcf\xfftb\x8c \x8b(\x15\xfa\xd5|a\xb0\x8b\xd3\xac\xba\xf0\xc3WL\x91_\x15_?\x82 \xe5 u3\x8fr\xe8\x0f\x1f\xc3\x0c\x9e@\xf6\x18f\xbd\x9e\x07\xd1tv\xae\xd7\x9c\xce\x0ca\x01\xc5R\xc6x\xe1\xd1\xe6\x9c\x8b\x18\xd8\xca-fA\x14 \x96\xc1|\x98\xf2\xba\xe72\xf4b\x84IZ\xc3\xc1,J\xb2N\xeeV\xc2\xc5J\xb7\xfd\xa11\xfc9G\x85\x10\x7f\xbbU\xffz 4\xc3\x8bZ5\xa6\xc77\xe3\xb7\xe0\\_\x96\xe4ub[\x1d\x0d\x9eqwcj\xba\x03;\xa4\xd3\x15\x96\xa6\x1d\x86\x10\xeeb\xf1\x0e\x84\xf1t\xf0\xec\xec\x8d\xbd\x14\xdfm\xed\x04-\x90)m\x1b\xcc`\x98\x0e\x15\xa1)\xd6\xc1\xa9\x81sS\x8aT\x87\xaf]f\xcb\xd0\xd0\xc6\x8a\xe7\xe1U\x8dT\xeb\x8f\xbaV5\x06g\x1e\x06Q\xb2\xecoo\xacWq\xbfH7\x97\xc1\xec\xfd\x1f\xea\xe57Z<9\xa5>^\xcf\xff\x8d\xfaZ\xb1`\xfe)\x9d\xad\x0e\x95\x1c\xe8<\xbb\n\xc2(\xb8\x8c\x18\xea\xfbI\x1a\xfe\"\\\xb8\x9a6\xfbr\x9b\xe7h\xe0\xb5\x0f8\xbf\xdd P\x89\x92\x9d&\x86\xfc\xa0\x8f\xd3k\xa8\x91\xc4\xba\xb9 \xeb\xec\xbc\x02\xd9\xd5\xb2q\xf4\xd7\xe1<_\x8d\xc19\x186\x0cd%\xa2;\xf0R;\x8f`\x9b\xd5e5\xfdY\xa5l1\x06\xe7+\x9c_\xc3 n\xa20~\xff}\xa9\xb0\x05y\x91\xe9~Y\x00\x9c%q\xce\xe2\xdc:\xfbh\x80|\xee\x8c\xfd\xcd\xf5\x06\xeb`S\xcaI\xdex\xfd\xb7\x85~\xce\xda\xcc\xb6\xc8~[\x0e?\x9e\x9d\xbdi=\xf0\x98\x17,\xc1\x1a\xb7D>e\x13X\xcb\x19\x96\xce\"[\x0f\x81*\xa6\xb8\x96\x93\xdb\x92\x91\xaf\xc5\x00\\1{\xd6\xdd\xa1\xe5c\xb3\xb4y\xf8\xd4\xbe}9%\n\xdf\xfeK_\x12\xcf\xbf\xf4\xa5\xff\xc5\xfa\x92\xe0|]4\xa6\xce\x97S\xf2\xeez@\\\xd7/\x06\x1a}|\x93\xa8\x83g\x9bI&\xafim\xe6\xd4\x15\xffR\xda\xccO,\x80\xac\xac\x8dy\xa4\x8b(\xd9\xedU\xb2\xd9n\x1c4,6+u{{\xbb)>\x89\xa8\x13\x14\xee\xce\xde \x0b\x7f\xb1D\x13\xf9\x92:\x10\xef\xb2\x7f\x9d\x06\x9b\xcd\xa7\x08\xbc\x1d\xe4U\xad\xb3\x04\x8e\xc0\xb9\xccc%\x113\x88\x92\xd9{6w`\\\xfd\xb0\x8d\xc5\xa7\xae\xf2\xaa\xf8\xb5\xf3\x14\xb2M\x10kR\xbb\x1c@\xa3\x98\xfe\xcf\"\xe5\xe2\x82\x7f\xa5\xad\xf1W\x1d\x96U\x13|\x1b\xea\x9bG\x8c\xf4\x14\xddkm#\x8f\x85u\xf8_\x92\x0d\xfcK\xb2\x81\x7fI6\xbf\xbddc\xbd7\xc0\x06Y\x9el8\xd4\x07\xcb\x80\xf8\xb0\x99\xff\xc8\xcb\x05\xd2z,:\xb1\x88&\xe8lop\xa9\xff\x9f(\x8e\x94\x1c\xd5?\x8dy\xef\xc6R9\n\x96\x85\x94\x8b\x0b\xceH5\x9am\xf8\xda\x81\x0b8A\x1a\x06\xfd(\xb8d\x91c\xea\x06h\x9c\xd6\x8e\xe4\xf7\x0e]}!>\xfeO\xc2\x93\xd9g\xf2\xe4\x86\xfa\xe6\x11\xff/\xb4\"\xcc8K\xad\xf1\xd4D|\xa9q\xe1PV11\xdb\x99\x89\x0bo\xc5\x87\x1a\x17\xce\xc4\x87\x1a\x17\x8e\xc4\x87\x12\x17\x9e\xc9\xc8G3\x11\xf9\xc8\xc4\x8fg\xbf=?^t\xe5\xc7\xb6\xb0EU*l\xe5\xb9W\"\xafz\x95\x98[}g\x92:\x0fl W$\x16+\x18$1\xa7\xcd\xc7\xab ^\xb6g0\x02\x8d\xcf\xb1A\x1c\xac-\xbaXP\\[\xab\xb0\xe8\xbf\x7fDL`&\xf4\xe3\xfc.\xc3\xbb\xee|H\x9d\x06S\x0fb\xc7\x1b\xa9\x1f\xdf*\x15\xca\x0d\xc8\xe3\xd7\xd2}\x94,M\x91tv\xe8\xbfY8\x08\xda\x14t\x8a\xab\xd0\xc9@B\xc1\x154\x93H\xcd\xe6\xdd\x1a\x80U@\x819\xa25 \x1d\x19\xe4 \xc9w\x96\x99\xc5b\xcd\\s:\xd3\xa0~\xec\xbe\xc3b\x9a7\xb3\xe3Y|P\x84\xfa\xe0\xbf,8\x0ee\xd9)3\xcaN\xc1?@vj6\xe2t1\xf6\xc4U\x00i\x83\xa5\xee\x87\xeeyW\x1bR\x88\x85\xbb\x9d\xd0\x07t\xd2\xcd\x91\xff4g\xeb\xa6\xabH[*Jy\xe0\xda\x8cO\x19\x15\xfe\x96d\xc8\x96\xa3\xf6\xa4do\xb2\x97\xa5\xc0\x19\x8b0\xcaY\xfaIH\xb7\xb77\xc3k?\x96(\xea\x80\xd8g\xef\x7fc\xee\xbfc\xe7r\xe5D\xd4]\xbc~\x94\xdfnXC\x8c\xd8\xa6\xc1\xcc\xbf\xcc`&;\x0c\xa6Q\x8f\xb0\xdd\xbf\xd8\xdd\x088K\xe2<\x08\x9b\x0e\xd9\xf7\xf66h\x95\xe4b\x87\xb5\xdfE\x92\xae\x1b;Nb\x8a\xf2\"o\xa5(6h\xebvS\xa6\xf6mI\x97Z\x16&\xe8t\xc2\xd9v\xba7[\xb1u\xd0z`\x18\xe3\xf2\xb6\xb4\xb5\xd3\xe9\xa6.\xc3\x8c\x81\x95d\x9a\xe6\x9a\x81vy\xad\xe5\xdeK\xf9\x08\xf5\x13\x8e.\x0bN\xea\x7fA\x00\xbd\xcc\xe3VK\xb5\x00P\x8e^\x0b\xfa\xf3\xc8:\x82\xack\xef\\e\xa6\xa3yi\xa3\xee\xac\xcdjR\x96m\xc8\xce\x0fX\xc6\xf1`\xfciC\x15\x1e!\x84H\x1d=B\xeaS*\x00\xc4\xba\xb8e\xeb\xf8'\x8d\xb5e\x0c|\x8b\xe7I\xdc\xe4\x97\xb1\x83\x97\x8as\x8cn\x1bh\n\x9bs\xa25o\x03 \x01\x94t\x18\xf0E 7\x9b%\x1b\xd6\x9f\xb3E\x83/\x87\xa5\x9bMq,q\xc6[\xc9 H\x19l36\x87<\x81e\x1a\xc49\x041\x04\x9bM\x14\x8a\x80\xd3\xf3p\xb1`)\x8bs\x88\xd8\x15\x8b2H\x16\x10\xccf,\xcbx\x95y\x90\x07\x90\xc4p\xc9VA\xb4\xe0\xdf\xf2\x15\x03\x16\xcfy\xa3\xe9\x00N\x82\xd9\n\x9e\xbd:\x85up\x0bs6\x8bx\x7fI\xcc Ia\x9d\xa4\x0cp2\xd9\xa0i\xf7\xf5Q\xf3\xa6R\xf6\xb7m\x98\xb2\x0c\xbbZ$Q\x94\\\x87\xf1R\xb6\x04Dg\x80b\xe1'1\xcb\xe06\xd9\xc25\x9f\x9a\x9ac\x9e\xc0\x19\xa5\xd1\x85\xb7\xa7\x03\x07\xe3\x03\xef\xc6\x81?\x8d\xfb~\xac\xbb\xd64J<\x9f\xcb\x91A2\x9f\x06%\xc5\xbe\xf0\xdb\xb6\xa6w`\x00\x92\xbd\xb5\x05\x8dA\x10oR\xa9\xda\x19\x04\xa7z\x9ft] \xeal\xa3\xa2\xe4b\xbf7\x1b\xd5\xef\xf2<\xc8\xa7?,\x96\xa8\x7f\xb6\x93\xa1\xffy\x17\xb6\xbe\xa8\xda\xdd\xa6T\x8b\xd0\xaaH\x0b\x9aUo2\x905\xeb\xdc\xbb9\xbaw\x93kC\xe5\xe3\xd1\x16\x1a(\xd8\xc1}^h\xdc\xc1&\xfc3\xbb\xe5\xc3hR\xa4#*|\x19d\xe1\xac\xad\xecL9\xd17+\xdb\xb9\xce\x9a\xcc\xda_v\x1db\x06\x93E\x13C\x9a\x05\x19\x031\x0fgl-\x06bh\xb6\x83\x8dV\xce\x02\x1d\xb5&\xe8\xae9AW\xed j\xfaJ\x87\xc8\x1c:+\xec\x10\xf9c'\x0d\x0dHF\x15\x1a\x9a=\x8d&4\xe8\xf6\xf2\xb9LY`9V\x05\xb5\xbf\x08z\x9f\xb1\xbd\xd1\xbf\xb6\xf7\xf7\xb9\xbd\x92U~\xf2\xcev\x928A\xedn\xf3\\|p\xde\xc6\xef\xe3\xe4:Vas4'nTB\xc1\xf1a\xd1\xf5v+t8\x0bo\x1b?\x8d\x1bz\xe0\xf4\x7f\xde\xae7V\x15\xcb\x90h\xe6\x7f\xf8 \xe8\xefR\xba\xfc\x97L\xf9\xbfD\xa6\xe4\x82V\xd2@HU\x1c\x00\xd7A;E\x93\xd0\x14\x17e\xd7,\xcb\x82%k*\x9d\x16\xa5\xb3d\x9b\xce\xac\x02\xd4\xe7\x92\x1e\xdd\xc6\x83\xb3\xb5\x85m\x05\xcc\xd3}\x1b1\x13\xe4\xea\xcfe0{\xbfL\x93m\xd4)\xd5\xe7\xfbm\x80\x1e\xf5\x07\x97\xe7\x1f\x16\x98\xbay\xa7\xa1t#\xaa\xc9\x95\x16t\x7f\xea;w\x8a\xd4\x10\x9c\xe0\xe14\x1c[z\x9c\xfa\x92\xdbX\xd8\xef\"\x94w\x1b\xdc\x83.(u0\xb2\x81\x12\x95\xba\x99\xc4@\x19\xe6\xda\xf7.\xc44\x8d\xcei\xbc\xd9\xe6m1v\x03*\xfb:\xb9n+\xb9\xa5\x92\xc7I\xa3\xb0\x08*\xff$\x1e\x19\x9fp\xc1\xac\xad\xfc\x8c\xca\xff\x18\xa4\xef\xe7\xc9ukX`\xcaB\xe9\xfc C\x9d\xbe\n\xf2U\x9bO\x0e\x08\x17\x96\\\x04W\x12\xa4\xa9\xb9\xc2\x1c Y\x10E8\x85\xcc\xf5v;\xf0\x92\x8fdo$\x11\xf3%9\x9d;\x1e\x9e\x7f}\xba\xe9\xa2\xdb9W\xcb\x19\xea\xean{\x99Y2g\xaaT\xa2\xe2\x04\xbb\x0e\x07B<\x07t\xfe\xff\xff\x0f\\2pz\x8e\xbd\xa5E\x9b\x11\x84\xa2#OU\x16\x19\xcd\xe7\xce\xf1!9\xb7V\xc6\xb4\xb6\x9bF\x87\x98\xd5}\xc3\xf5\xb2y\xd3\x19j\xd0\xb62\xad\xb7\xf4I\xf7\x19\xcb\xf5\x9a\xb3l\x96\x86\x9b\x1c\xa3^7\xcf\xe5\x93\xc7\xa4\x1f\xfc\n\xbd\xa8\xeb\xd6\x96w\xf5\x8b\x8d\xe24\xde}\x0ca\xfc\xd9#\xa0;\x13j\x14\x88\xeec\x07\xc1\xa4\xc1\xf1\xa04\x18\x07\xbe\xc1\x07\x1a\x9dB\xb6mC \xdb\xc0Dx\x8ep\xe5\xabE\xcd*L\x9e\xf2\x92\x06\xfel\x82%\xcf\x87yS\x98\x8a\xae\xde\x83\x9f\xe4g\"\x1fT\xcd[\x0f\xb2\xa1\xfd\xe4\x1d\xc0\xea\xefD\x9f:\x0b\x1a\xa6\x80\xa9\xa6\xc3\xec\xf2\x907m\x97\xd3u\xc1\xa2N\xbbK\xbb\xa67e\xdd\x85+\x91\xfa\x8e\x15\x97\xbcZN\xe3\xc8[6\x0f\xd2%\xcbi\xe3\xede\xe5\xdd\xb7\x8a\xbf<#\x91\xbcmg\x85\xc0ega6\xf6\xc5\no\xfd\x10\xd3L\x87\xadz\xfc\xbf|\n\x8a\xe7\x93\xac\xbe\xffd>\x05\xb0\x9bN\xde\xe9f)\x88\x9e\x7f\x83\xc4\xdc\x0b*\x186\x8cb\xdb%|\x05\xdf\xd1m\xab\xde\x11a\xa9f\x9d`&\xf3a\x0b\xc1w\xb0\xcdXj\xbfP#v\xbfK\xf6RR\xce\x1b4o\xa9\x9c7\xccS*\xe7p\xd4Bs\xe4\xa8m\x8a<\x7f>r\xf0\xb4\x9a\x19\x7f\xeb\x94\xa8\xffp=\xbf\x8bc\x06\x94\\HZ\x95\x0e\xbaM,\xf5\xfcX\xd3\xf39\xda\xd8\xd6\xbe\xbe\xf0\xffK\xb5\xfdv\xed}\x978\x93\xf0;\xd0\xf6\xa3O\xd3\xf6wS\xdf\x17\xbb\x99\x08\x0c\xda\xbe\"z\xedj\x7f\xf2\xab\xaa\xfduc\xa3\xfetP\xfb[N\xccH#\xb1GH,\xd4~\xe7\xdb \x0bg\xe5\xe8\x88\x8e\xbdj\xab\xce\xdb\xac\xc3\xa7]tx\xfb\xb0\xad:\xbc\xadJ\xd0\xb6\x14\xad6\x89O\xd7\xe1?yLU\xdd\xf5\xad\xe4yR}\xb5V\xac\xa8\xaf\x8e\x0f\x1b\xfc\x9f\xeb\xaf\x0d~e\xcd\xc3\xf9\x82\xfa\xabpC\x9f#q\xa7?[j\x10\xafw$\xde\xfe*\xfa\xf1\x17\xdb\xa8WA\x96]'\xe9|\xe7\x8d\xd2\xed\x0c\xbf\xde>\xed\xbe\xfa\xc16O8g\x8bX\xcew!f\xd7\xfd\x8d\x98c\xb7}\xebXZ@P\xc7\xd2\x9f\xb6\xcb_\xc4\n\xf2Y\xde{\xff$V\x10\xd3\x11yy\xc8\x8b\xdf\xbf\x15$\xd5\xac \xf6R \xda\xf7;\x18I\xd2\x16\x99\x8d\x1c\x9b)\xb5\x176gf\xe0\xc14<\xe7\xb2\x85\xaf\x9b@\x9a\xe4V\x94q\x03\xf3n\xa2\xe5\x84Y\xa3\x0b\x94w\xf5\x9f\xc9\xc7aa\x8d\x1b\xb2\xb0\xf98,l>\x0e\x0b\x9b\x8f\xc3\xc2\xe6\xe3\xb0\xb0\xf98,\xc8\xb2R\xfe\xc0\x05Yw!M,\xfc\x8fGw\x1fxf#\xcb\xe2\xb77\xb2l\xbe\xa4\x91\xe5\xf7\xe6\xf80\xff]:>\x04\x9d\x14\xee\x85*\xd9A\xc3\xe3\xbb8\xe3 B\x17\xf8\xb3\x06\xc5\x07\xa3\x98\x0c\x8a\x04d\xae\xd0\xc8\xed5\xae`Bb\xf7\x86$\\%j\xb5f\x16]Wj\xce\xa2\x90\xc5\xf9\xa9H&\xba\x1a\xc8\xdfm\xed,\x8d\xed\x9c\xb1Y\xca\xf2r[\xf4\xae\xad\xbd\xdbJ{R\xacx\x8379\xb0\xb6\xc8Q\xd8\xbfL\xe6\xb7\xceg\xbb\xa7\x04\x9b\x0d\x9d\xb5\xad\x06\xe2O\xfb\xe0\xbe\x84+\x0b]\xdb\x1c\xc3\xf4\xbc\x01\x14\xc5\xe27\xa6\xdb\xd4W\xb51\xb9favkH\xea(\xd7y\xdc\xb8;\xfan\x8c\xe1\xd6X\xee\x1f\xe0\x8e\xf3\xab\x18\x9b\x9a%\xbd\xaeaU@\x85Vi\xa3?\x00\xbbEV\x81]\xa3\xab\xc0\x8e\x11V@\xb0\xe1\xbc\x83\xcdkKS\xec\x96/\x05\x8a0+\x9d\x8c^\"\xa9I\x07\xa3\xd7\x82Jv0zm\xba\x86y\x01\xe9J\xb2\x83\x85lE\xe5w\xb3\x90]Q\xa5\xae\x16\xb25\x9e\x1b\x84\xd9\xcbgg\x87\xcd%9\x89^\xbb^-\xfe\xe01\xd7c1\xea ^o\xc7\x9f\xcd-\xdd\x16-\x11\xf59N\xd9\x9c\xc5y\x18D\x19\xb5T\\\xa4oi\xea\xff\xb2\xf7\xef\xebm\x1b\xc9\xa28\xfa\xffz\x8a\x12fN\x06\x1c\x93\xb0(\xdf\x99(>\x89-\xef8c\xc7\xde\x96\x9d\xcc\xda\x1ao} \xd0$\x11\x83\x00\x02\x80\x944\x89\xdfe?\xcbz\xb2\xdf\xd7\xd5\xdd\xb8\xf6\x0d\x94l\xcb\x19c\xd6r(\xa0\x80\xbeUW\xd7\xbd\xe6\x98\x04\x06I\xfc\"6/\xeci\x0d\x8eu*I\xc8\xe2\xf9\xd9\x91\xc0\x9f\x14\xfc\x96\xfeSg\x98)\xba\x9d\xb9\x07\xdf\xf7\x0d/\x1e\xa1\x15\xe6Cj\x16\xe5\xc2\x82\xb8t9u\x80W\xc5\xdf;\xbaT\xa7\x9c\xad\x1fG![\xbff\x88\xbf\x08\x040\xf4\x0fsC\xe8;y\\/dK\x1dgT\x9a^\x99\xaf\x94?\x06\x07\xdc\x17\xdfm\xca\xd5\xc1\x18\xe8\xed\x16\x1a\x823\xd2\xb9\xbc\xacL\xca\x02\xbd\x0e\xd57\xe8P\xcb\xba\xca4\xe7Ft\x1e/\xab;\x0d\x9dj\xbd\xf5\xd0g\xa7\xff\xa5J\x9b\xc8\xde8\xd6\xb9\\mM\xc3\x14\xaaU\xd9Zj\x868\x86\xb3\x1d=\xbd\\'Z\xd3\x11F%\xc3\xcc9\xdd\xf8s\xfc\xb9\x1ci\xbf\x99\xf5?\xc9R}\xbcy\xf5l\x80{SRo\xd8\xea\x13o\xf2\x98\xe5F\xa9\x19\xd5~\xef\xea\x9f\x17\xd6\x1d}\x9d\xbe#\xac\x83\xd6\xfds\x1a\xb8\\\xd2\xd7\xab\xcei\x1b\xd4/s3F\x077\x88zm\xc7\xe0<\x89\xd3\xb3\xe13\xca6\x1e\xfa\"\xd6\x93\xb8\x87\x93\xf8\x10!5\x0e\\\x81i\xe7\x1b\x01*=\xb0~\"V\xe5:~\x82AB\x98\x01\xe5\xb4\x92\xb4\xb4\x13\xb2ij\xff\xcf\x068\xaf\xb57pe\xf9\x12;X\xf5\x19\xa3E\xa4\xf4\xe71\x15\x17\xa6\x9a\xf8y@UE\xf1\xaeL3\n\xa8\x1b\xa0r8\x11\xf2u\xa6\xdeDa\x7f>\x0dl\xb7\xb5\xb9\xc2 \xfd\xd2\x9f\xe0'/a\x83@\xfe\xd4JE\xfd\xb1\x11\xb0\xda*Z\x04\xcc\x9aV\x8d!\x08h\xe3=\xf9\xf9b\x9b\xa5\xb1b\x98i\xa3\x8dq\x96/}\x16\x18'\xc6r\x8a\xf94\xb4\x08\x87S6\x14\xd9\xda\xd4\xae\xa9d\xf8|(^\x81r\xafqR\x11 \xdb\xf3\xb9\x0bV\xbd6\xbf\xb8\x1bfiF\x98f\xdc\xbf@?B\xaeoi\xab\xe9\xb48\xf3\x8aA\x02B\xea\xf8\x95\x81=`i=\xb4M\xd7\x0e\x14W\xd9\xf0o\x1b\x92\x1b\xc6\xfc\xbf)\x08d~\xee\xafII\xf2\x02}\xe6)#\xc99E\xd4t\xaa9^|\xdce9\xbf\xfaJ\x8c\x19\xd9'\xc5\x96B\x1e\xd4\xdd;\xa3\x9f@f\xbc\x01'\x14\x8fZ>\xf5\xea\xe9\x0bk\xf642\x1cf\x15\xd8`\x02\xf3g=\xcd\xea\x89\xb3:\xc8,\xd8\xa6\x86\x9fA\x07\xbd\x0c\xda+\x86\xfa\x12\\\x1aB\xde*+\xc4\x87 m\xbd\xfduE{\xe9\xa3\xef\x93\x82YWl\xf6\n\x03\xfd\xb2_\xda\xfb\x85O\xe0n\x18\xcd,.W\xb5\xdfd\xf8\x7fl\xd3\xbdK\xec\x81=$\xfb\xa7\xf8\x8fe:W{-\x01W\xc2\xee\xb4\x92\x98\x9d\x9d\xe3 \xd3\xef\"\xe6\x9e\x0e\xcb^\x0df\xa5\xa1\xd1\x13\x12\xacS:]j\xe2\xa03y\xc1\x8a\x04\xef\xe6\xa9\xa2 \xb8\xb84\xadZEt1\x9cc^\xdfV\xe9\xc3\xe8\xdea9\xa2\x1c\xb8\x01s\xfc%\xba\x8a\xb7\x84\xfb\x8c\xd9PD\xaf0*(i\x08gpf\x06\xe6[\xa9\x9a\x19\xf3\x1b\xf5\xce ^\x9a \x1e\x19\xb6\x05p\xdd\xe4% 54\x89\xb5\xf5|\xed\xba\xd4\"\x9d\x8a\xb9OM\x0c\x8bJ]~\x170M\xc4.H\x8dTp\xe7Q\x9au\x94\xd0iO\xaf\x96\x03\xd6^r9\xbd(t\xdal\xea\xbfMM\x97\xf2\xb2\xd4\x15\x84$\xb5\xef\x18\x8e\xae\xc2\x03R5\xe0\xd0f\xb8\x1f\xcf\x03\xf2\x92\xf87<\xeb=\xb0\x859G\xc9H\xc7'eC\xda\xd6&\x887\x1e\xee\xbd\x0c\xf8\xba\x9e\xdb$\xc0\xff4}\xaf\xde\xd2v\xbf\x91\x15_\xb3\xfa\x97\x1d\x81Ej|\x18\x90\x1e\x1fx\xe7\xab\x14\xf9R(K\xc7\xddz\xcc*\xc7\xdd\xf0\n\x1cw{\xe5\x95\x94\x94\xa3\x94\x94W\"\xbb\x97Wj\xe3\x82i$\xc0GS\xd6n\xc3\xea%\x1b\\\x04\x8b\xe4\xb9\x112\xad\x1dq\xd0\x15O\x0d\x19\x0dq\xc1\xf1\xe1\x10R]\xe2\x92\x8d\x88\xf4\xac\\\x00\x15\x0en^\x10\x13?\xd7\xf8\x1f3\xc7\x82\x19\xe8Y2\xce]\xf9\xfa\x82\x1c\xc2\xd8\xcb\xe0\xe4h\xce\xbd\xb6\x02\x81\xc7#C\xdffU\xa4\xba\x16\x8c\xaf\x94\x96M\xad\x17T\x9b{6`S\xaa\xcd\x7fK\x9b|$\xe06\x8a\x91*\x11\xbc\xc5mZm3\xe1\x1covw\xcf\xd1q\x02\xb9H\x9doj\x8a`\x94\xc1/D\n\x019\x06E\x0bp\xb1\xcc\xf4d\xca==\x18K\xca\xcbJDIH\xce_,\xdctd\xf2\x97\x8b\xa0\xf72\xaf\xa0{\x92\xbe\xd5\xf8uXy\xd1C\xc3crx\x15\x1d qA`/g\x1e\xda\x8a\xf1\xc1\xb7t\n\x18\x84\xb9C\xa23\x9d\xcf\x0dv\xba\xa9\x9c\xc7\xf7\xb4\x89\x84\x94\xf5\x8148\xd8P\x04\\1\x0e\xb6\x91KOY0\xaa\xd5\x14\x9e\xe1\xcbsX\xa4cPE\xdf7\x16\xc9WO\x02\xe3\x98\xacF\xdf?\xe8\xd4\x1e\xe9\x89\xcdy\xc46\xaa\xd5y\xc4\xe6\xd3\xe6_\xfb\xe7\xca\xbf\xbe\xf2\xb2M\xb1r\x9d\x9c\x14Y\x9a\x14\x04\xed\xca\x87\xa8\xd3WP3E\xde|\xd6^ev\x1c\xd2\x1a\xba\x9c\xed\xd4\\\xdf\x95\xf8C\xcca\xcf\xf3y\xc8\xe0\xd8T\xb6^hS0\x87R\xa0d\xe9\xc0\xe1!\x92\xd1t\xc1\xa2X\xc4\xe7*C\xdd!\xaa\xff\x12\xfa\xc17\xaf\x9eV\xb2\x9e\x9bu\x03\xa5(A\xd9b.\x03Vr\xeb\x15 \xa3\x9c\x04\xe5\x9bZ\x9f\xd1\x13\xe8t\x0c+\xfe\xd1\xaf\x9c\xd1[\xf6\x93\x8bS\xa7\x95\x84\xe1\x8b\"9\xa6@\xb09\x8b\xe5\xd4\x19\x89\xba\x06\xa2y\x99Lp\xee \xcd\xe6q\x1a\xbc\xc3\x12\xeey\x1a\x9f\x9e\xceK]\x08c\xdbF\xc4\xff\x92B3\x0b\x11\xf1sI\\\x94\xb1\xde\x89\xa9\xce\xc9\xf5\xcc\xa1\x8aD_\x9a\x03\xe4Z\xd69\x19\xb3\x1f\x07X\x15\xd9\xbd\xf7y\x9c\x05\xd0\xd29\xad\x88\x1f\x92\\b\xf53\xed\x19\xbb\xe0\xc9F\x98\xa1\xa0=\xc0\x9b\xd4\x17\xb2\xce\x1b\xd9\xc1\xbb\x12L{\x81\xcc\xc9N\xea\xd1\x86\\d\xfc(\xc3e\xae\xe9\xa2I\xfb\xe1\x8e\xc1\x81u\xe1\xe8G\x1d\x1aGm8\xf3\xa1M\xa0%Y^\xc6;gr\xb1\xa9\xa7\x06=*\x06W\x9c\xdb\xa1X\xa5\x9b8\xac\x08\xe1\x9b,\xf4K\xdb|\xac6\x15\xcd\xeb$\x0e\x9e\xd0\xf9\xa0tI\xea?\xff\xf8\xa3 E\x0fq\x0e\x81?\xdbO\xd9\xf1\xcd\x9f\xf3?\xda\x10aTd\xb1\x7f\xc11\xeb\xb1P\x7f\xb07\xe4\x0f\xa5c\xf8\xdcR\xb2\x8a\xe9\xd4\xc3\x0eM\xca\x9a\xd6\xf0\x06C=T\xd5\x8e\xe5\x93\xac\x7f\xd3\xafx=\x0b3?T\xcax=\xc7\x07\xfc\xc8\x12\x98\xa2\x87\x0c\x98\xf3\x00\xba\\<\xdfPi8\x14\xe4\xe9!\xf8\xde\xbau\xebI\x9a\xbb\x9b1\x14#\x98\x81\xef\xe5\x9d\x9b\xfa\x86B\xa8\n(S\xa1{cL\xa9\xb0\xa2\xa7+\xcf@$\xd7\x974\xafm\xfd\xf9\xea\x10\xf1\xca\xf4\xc7cSE\x97u\xfdb\x92\x96\x8f\xd3\x00I\x12\x86\x87k\xdf[\xd6\xef\x11\x9b\xf4\x1d\x175<\xfa.\x1a\xc0\xe75x\xe3\x98\xd0\xber\xda\xb7{n-\xd2VlO\x1c\xca\x9f\x92\xa4\x9c`\xe4\xd8[JZ\xb6'\xce#~\x13\xa3\xc24y\x85\x80\xeb\x94\x12\xd7 ,\x16\xea\x9c\x81\x8a\x8d\xfb=\x0b\xcf\xd2\xber\x0c\x87]wm\xa3)\x1c,\x0enk_W\xe8p\xf9\x0c\xc3\xe2\xc8\xe8\xf5%.\xa4\x95z\xa7\\\xe0l=8\x98\xe3\xcc\xc1\x90\xf7\xed y\xcb\xa2\x15\xb5\xef\x9a\x92x<\xa2\xe24\x1e\x06\xc7\\\xe0\x96\x8b\x82`1iMn'\xd0E\xaa\x1c\x99f\x96\xd3\x0fm\xe2\xf6\xd1\x18V\xda\xf4\x06v\xcc\xd7\xed>\xf3\xf5\xe6\xd53-\xdf5\xd4)TD&\xd2-\xa0\x1e\x8f%\xa3\xb7\xd2\xa7Xh\x8e\xe7\x98\xe4[\x92\x83\xd8O\xda1a\xf0\xcc\xc0Q\xb1\xcf\x16\x13\xf6\xeeN#+\xe9~1\xafR\x99\xef\xd85\xb6\x1dw\xec[8\xa8\xd1 \x8d!H\xe3S\xd6d5\xeb\x13z\x8f\x1fk\xban8h$\xd4.\xd1\xd5\xf5\xc7\xca}\x9cv\xea1)\xfd(.\x0cy=J\x8c\xa4\xfdP\xab\xf8\xd1Vo\xe8\x92\x85cX_e(S\xd5\xfe& kfc\xa7\xd1G\x8d\xe0\xba7\x8d\xaf\x81S\xf9\xf8_1\xaa\xed\x84_K\xdd\xf4\xb5\xca\xf7\xb6\n\x8e\xc1\x0d<\x04\xe1\x86\xb8]\x95\x99\xae\x03\x18.4\x9f>7\x0e\x8e183\xb80\xb0\xc8\x0c\x8e\xa5'4\x04\x17m\xf2x\x06\x06\xe6\x9c\xf3\xa7\xda\xcc\x89\xf4j\xca+\xba\x98\xb1\xf7\xf5|<\xd2\xcc\x871\xb4\xb2\xea\xd7\xb1MS\x11=\x96\xe7\x97 k\x10|\xed\x0c\xe6\xe6\x06\xd5\xe1-\x97\xf0\x85\x97\xeb?C\xbc{\xdd\xf4\x9f+\xa5\xfe\x13\x9f\xf4\xb4\x96\x91x\"S\x80\xaed\x9a\xd1\x0d\x7f\xd0\xd3\x8c\x16\xfcA\xaf\x8d\x98?\xe8iF\x03\xfe\xa0\x97\x1dy!\x1a\xdf\x7f\xd0}\x94Q\xf1e%\xb4\xa7h}\xec@\x84\xa2\x83\x8a\x9aU\xab\x8f\xafO\xdd\xda\xda\xd6T\xa9\x94\xa5&*\x99\xfd\xac\x99B\xb9\xb0Q\xbcEm\xc5\x9bE\ne\xac\xd0\\\xc7]\xbc\xc9\xe3!\x96-\x9eU\xb9\xad\xce\x90\xcb\x19\xc2LG\xce`!z\xe9\x12o\x93\xc7.\xe6\xe5\x17;5N\x99\xa3\x00\x95\xe4\x99;\x87+\xd1\x14\xca\xe7*\xe5s\xd5\xd4\xe3\x8c\xdc\x91\xc7\x1d\x8f\xd2\xbc\xe7\xf3\x04`\x9d\xe3\x17\xc9|\x7f\xbaT\xba\x86f\x9b\xb3\xa6\xabd\n\x0f\xc1Y\x95eV\xccn\xdeL\x13*Q\n\xbf\x06/JoV\xef9 \xab\xaa\xd7K\x8a\xab\xb4\xb1\xc5\x0d\\\xa8\x15\xa6m\xcb\x9b\xd2\xc6\x16\x08z\xf9K\x14\xc7\xafH@\xa2-\xd2\xb6\xc2\xc2\xec\xa6\x94\xd3\x85\xe2}\xf8\x12\x81\x88;\xb2p\xac\xc7uB`\xdb\xa5\x02\xddr\x95\x03\x96K\x1eZ'\xf3\xb1o/\xa1\xec\xd4\xbc\"[\xa7\xd8\xa9t\xce\x1b\xba\xe3\xf6\xe4\xd3\xed\xab\x9e\x1a\xb1d\x99W\xf8t.\xffM\xde\xe41\xa3Bu\xb1\x83j\xf2TqF^\xb0\xc9s\x92\x94OXj\x08s\x85\x93-%I{\xcc\xf9\x03\x7f\xbb\x1b,4\x97f\x05\xff\xc6f\x0c\x18\x9f\x88~\x16{Q\xf1\x93\xff\x93\xbbB\xfd\xca\x8a)0\xc4K\x1b\xaf\x88\xa3\x80\xd0M\xb2\xd2U\xc9m\xf9dlzy\xc5|\x13\x9fDw\xc3F \x87\xeb\xa4\xd5:\xea\n\xba@=dU\xbf\xac\x12\x92\xb1\x9d]\xb5\x89\x89\xf5\x0c\xf5\xb5\x00\xb5 \xcb\x17\xf3_\xad\x12\x99\x95\xfeR\x9b-F\\\x9d\xdd\xa7\xcdB\xd3~\xa7\xca[\x93\x9a\xdf\xa8\xf7\x9f6\x8bC\x0b\xdc\xc2& \x8c\xe7\xe8\xae\xbei\xe9\xa1!,\xf0\xe5\xcf|L\xa3m|\x0d*\xb2\xc5\x8d\xc5\xe5*5:\xf1\x89+\xc5@M\x816\xcf\xa2\x82\x9e\x8b\xb4ez\x98&c\xc8u9g\xc4\xc5\xd1\x8f\xc7j\xba%\xaf\xa3\x85\xa5\xad2\x98\xc1bTi \xf3Q\xad\x16\xdc\xb9\xb0\xba\xb8XJ\xd1*3\xa4\x05\x9a\xd0\x8b\x9e\x1e/\xb1\xac\x90\x05\x96\xd0+\xcd\xac\xd0\x1b\xaarE\x169@\x01\x83\xb9\xe9JY\xa17T\xdb\xc7\x08\xaa\x91\x8c\xd8\xe3F>D%d\x13\x8a\"3\xa6\xb5\xfd\x06\xa6\xbaB\xde\xab[\x0d\xaf\x8c\x9fR\xa8\xc9\x17p\x856D \xce\xfe^]8\xe9R\x96mYy\xe6\xcf\xc9\xb2-\xad\xe1\x9b\xaaj\xf8F\xaa\x1a\xbe\xbe\xaa\x86\xefFU\xc3\xb7P\xd5\xf0\x8d{5|Y \xcf\x82K\x05m\xe8@\x04\xcb~\x16%~\x0d\\\xfb\xa7\xe4\xd8\xafi\x88\xe0\x10\xee\x9cq\xe6\x8c\x1bPC%\x02J\x0d\xc2\x8e\xb2`\x15\xc5aN4\x944\x1d\xc6\xa9GC\xb8t\xdf\x9aC\xdf\x0c\x90/\xb0p\xb2\x8e%_\xb0\xc38\x0d\x8e\xce3?)\xb4Q\x14\x19?\xb8I\xf6,J\xdeE\x89fFCQ\x04\xd8Y\xf8qAX\n\xfeL\x0dO\xb9\xf4\x0d\x96\xfd\x8c\xfd\x0c\x1dk\x95\xa0[\x06jSes\xcd@\x1f\xf3\x1e\xeb@\x97\x0c\xd4\x04V\x05\x164\xa1\x1aJ1\x9cb\xab\xb7\x15\xb5r\xc8\xe7yz\xa6\x19\xdcY\x14R\xd2\xe0\x1c\xec\xeb\xbccH\xb4\\\x95\x0cjpo7\x85>\x14\x88\xed\x08\\\xab\xbf\xc4\x14\xcf&\xd8\xe7 r8t\xa9\x9aw5\x9d<\x8f\xa3\xe4\xdd\x0f\x83>\xa6\"6:\xad\xa3\xb6\x86rT\xbc\xc8HB \xf6\x91j\x9er\xa3\xf9@\x92JC'xg\xe2)\x1a\xe6{\xce'BcX\xab\x9d\x16y\xba\xfe\xf1\xd8\xfd\xbd\x1b\xcd\x87\x1a\x0f\xa7\x9e\x94\xf7\xe3k\x97\xd0\xb4/\xd4g*\xa1>S \xf5\x99J\xa8\xcfTB}6,GS\xe6vc\x94\xa9\xe4\xeef:\x97\xf3\x05~\xed^sY\xb96@&\xecg\x1f_\xd8\xd7\x9b\xe9\xbe\x08\xfb\xe2\xfap\xc2\xbeP\xa4\xaa\xe1r\xcbT\x05)\x87\xc3@R\x0dc\xc9\xb4\x07\xe9r\x19\x13d1\xd5\xa0L\x82O\x93\xd79\x15\xf8\xf1\xb8T\x03o8\xf0#? Hl\x00.8\xf0\xd19 6\xba|\xfb\x0b\xa3\xe1.\x1b\xa0<\x08\xadU\x12\xabjq\x8cz\x8e\xed\x10s\xea\x1a\x81\xad2q/+P\x8b\xef^\xb0 \xf5\x8b[\xc6\xef\xce+P\x8b\xef\x9e\xb6\xdd\xce*\xc6J\xc3z`\xb8\xbd)w\x02\x15\x9f\xcf\xbc\x90d9 \xfcRW=\xe0\x1c!\xb98\xa4\x06;F0}n\x8bG\x08c\xcak\xf1\x0e\xa1R\x8dn\xe7;\x84\xd0*\xe0^\xf0\x8f\xf0\xe9\xd2\x95\x9c|\x89\xa0~\x1c\xa7g\xaf\xf3\x8b\xa7\xe5\x8b\x8d\x06\x83_\xb3y\x1b\x98-\xe49\xeb0\xff\xfa\x11\x13?\xd5\xe0O\x11\x9c\xb0\xbd\xf94y\x99\xa7\xcb\x9c\x14\x1a,\xf9\x15\x0e\xe1\x9d\xd7P\xea\xa8A\x7fB\xd0\xa6\xeeF\x0d\xfb\na1\xdd\xb7,\xa3\xb7\xb8\x1e#\xc6 %Q\x9ai\xb5@\xcf\xe0\x10\x1e3#_\x15\x02\xae\xd3\x8f\xbd\xa9\xe1\xb3<\x0d7\x81\x1e\xfc7\xee\x8f\x8c\xa9G\x9eEE9r\x1f\x8f\xe1\xc4iT\xd5\xd5\xf5\xee \x1c\xc2\xb6F\x9bc\x1c\xba{<\x86G\x9a\x97\xfe\xddQl9c\xf8n\x0c/4\xca\xab\xef\x9b\xbd<:/ \xeaI\x8b\x91\xfbX\xd3\xcc\xcf\xc8\x04\xd9\xcd\xda\x0f\x0c\xb6YKX\x0d\xfc\x0b\x03\xe6\xf8\xa6\x83\xfc\x91A\x06,w\x9d\x1a\xee\xbf\x19\x9c\x8d\xf2\xf5\x1f\x0c\xd4F\xf9\xfa\xbf\x18(\xc7G\x1d\xe4_\x19d\xe5\xd5\xc1\xb2,h_\xf9?\x9dW\x8e\xf4I^\xfe\xd9ma\xb3^\xfb\xb96\x17\xca\xfff\xaf\x98\x14\xc2\x84\xf2/!\xcf\xe9S\xe3\x86\xda\xa5\xf7\x19f\x8fe)d\xd1\xc4\xf9-\xec\x9b\xdc\x95\xd0\x9d~\xef\x19\xee+\x1e\x9a\x97{\xad\xec>,F\x87\x838\x9c{\xd3\xb9p\xe4\xe8\xe0R\xf43\xf1\x8c\xa1$\xb6\x16R\x10\x1e\x04\xb4\x7f't\xdfI\xd2\x84\x02\xd8\xe69\xb1\x12\xe6\x9b\xaa\xdb*\xe7c}2R\xf9\xf6\\\x06\xe2\xc0\x0dx\x047\xc0\x91\xe9x\xdbP\xea\xd5\x8e\xc2\x99F\x03\xfe\xefZ\x01\xaa\xd4\x80\xaa\xa6\xe0\x9fZ-\xb1\xc0[\x94ngp\xaa\xeea\x83S\xd5\xfa\x98\xb4}K4\xa7w\xab\x84\xd3Z\x0f\xd7\xf0\x9f\xd1\x1c\xf6\xb53\x84\xca!W=M\xffm\xa7x8\x1f:\xfdC0\xb0R\x8d\xab\xeb\xe2\xbf\x1f\xc3c\xba!\x1f\xb3-\xfe\xc7\x1f\xcc\xff\xe4\xf0\xf0\x10\x1e\xd7\xce(\xea\\\x13\x06?\xe8J\x15u\xeb \xd3\xd5S\x15z-\x03\x18\xbaU'\xee\xed\xe9TC\xe8d\x13\x10\xa7~\x18%\xcb\x89\x9fDk_c\x1f\x19\x8d\xe1H\x9bX\xc8`%\x91\xb5\x8d\xea\xcd\xd3$\xcd\xd7\xbe\"\x07\x10&x\xfa\xc5\xcf\x93(Y\xce\xe0qM\"Fc\xf8\xd5\"\xcf\xd1\xb0\xfe4\xd89}\xa9\xca\xab\xc6Bcf\x10M\x83\xff\xb01G\xfc\xaaX\xd4\xd1h\x0c?\xd1y\xfc \xc3=/\x91\xb6E6,\xc1\xf3N\xc24(v\x9f\xd1\x0f\x86YO\xa2$\x84u\x9a\x13\x08EF\x9f+^\xd8\xd6\x0c\x0c\x1f\xb91\xd0\xd5\xd8\xe6\xa99\xeb\xcceq\xeb\xa7\xa6\x18\xa4\xc23u\x1b\xff[\xd7\x86}\xb0\xac\xc5L\xc4\x91\xf6\x0bJ\x8b\xd6O\xda\xe8X\xf6\xb4\x91c\xa7yj\xa87\xd4\x0f\xbaa\xd7R\xc4\x0c~\xb3:\x85yA\x10;\xf1\xa3\xe2Ef\xf0X\x03\xc5+x\xff\x03\xdd%uj\xb8\xa6\xbaL\xeb\xaa\xdb\xd2\x95I\xeb]\x89\xab#\xb9\xcf\xe0\xb9\x86mi*\x12f\xf0R\x0d\xb9H\xa4Ev\xc4e\xcdP5\xb4d\xda\xecE-\x15\x996\x7fQ\xe6\x97\xab\xe7\xdc\xb1\x93q\xe1\x86nr\x17\xe4P\xb1\xe1*l|\xae\xc1\xc1\xbf\xeap\xd0z2\x98M\xfeX\x0d \x1cV5Ly\xda\x91\x1bgB\x03Q\x98\xe5H\xda~\xf5\xda\x16\x15b\x85;\x12\xda\x91\xe31T\x1f\xd1\xe9!\x96\x84\xbb\x83\x91\x90}l\x06s\xafh\xdd\xd1\xacs\xff\xe5\x0b\xafw\xd3\xf0>\x05\xf9\xd9\xcf#\x8a\xf0?3\xed;\xffH\xef\x89a\x18Mx6\x8ca_8Z,HPF[\">\x85\x9d\x11\xdf\xa9\x9e\xe2}3\xfe}\xf5\x15\xbc\xa4\xff\xbc\xc2\x7fLtq\xa7cV((T4Z\xd5\xd8\xff\xd2\x9eo\xec\xa33x\xf5aq\xdf\x96\x98\xf0H\x16\xa6!\x9b\xc1\x13\xc5\xcc\xd7S\x7f\x15S\xfc\xbcRu\xbc\xa4\x12\xf9\xbcL&\xcb<\xddd(ys\xfd\x95\x91\xb3{.\xdeW\xf5\xe8\x17+\xc9Y{Z\xd9\xce\xe20\x92|\xd9\xb5\xad\xec=3(\xacvJn\x9a\xaa\x1f\xb5(k9 \xf6C\xd3wz4\x86\xa7W\xb5\x97\x85 \x1aT\xc1dCw\xf3.\xcd)]'\xaaey\xa6\x19\xe0\xcf\xba\xd6*\xb5\xf1\x0c\x9e\xa9g\xbaJ\xea\xab\x89*\x11\xcc\x90(\xfb\xa0\x8d\xfd\xb0>\xb7[l\xc4Ul\x98\x86-N\x9b#\xd2\x1aK\xb9\xf5a\x06o\xcc@\xfc\x90\xda\x8a\x80\xbf\x97\xfc\xfe\x934w\x19C\xa59\xfc\xfb\x8c\xb4\x95\xce\xdf~\x1b\xa9A\xe4\x86\xad\x19\xbcV\xbf\x82\\\xac\x89\x9a\x10\xf4\xa0\xf8\xdet\xdc\xfe\x1f\x1d\x06\x93J\x17>\x83\xef\xad1\xce@2vq\x1bz\xb9\xc9\x89\xcce\xa8\xca|'w\x19j\x9c\x1c8)\xad\x87y\xb5\x99d\xcf\xf8\xa6\xec?\xaaQ\x85J\x8a\x0b\x8fY\xbc\xba>5\xcc6\xa1\xf3B\xfa\x12Z\xd4\x9e1\xa5\x17\xd2B\xee\x85\xb4\xa8\xbd\x90\xee5S\x19-4\xeeF_b\x8b\xfe\x03\xdd\x8d\xac\xfc~\x86\xc4\xfb\xe7\xf6\x0e-\xe9\x10\x87\x16\xe6\xa6\xd4\xb6\x13\xa9\xa1}K_\xaa\x0d\xd6\xd039\xa7\x14,\\\x9d\x91-5X\x80`QQ\x95=\xd5\xf0\x0d\x0b\x845\xb9\x9ed\x08\xa5s= Y\xd7V\xe9\xd9\xb1\xa9{+\xfe1\x0b\x17\x94-\x03\xcd\xa3e\x94\xf8\xf1\x0b\x9bW0\x12I8\xa2X\xbd\xb1\x84C\xc8\xcc\xb3z\x81K\xc4\xd5\x1d\xc1&\x8fJ\xadU{\xce\x12(Tu`\xab\xae|_j\x8d\xf9\xa7\x9d\xc4\x0b|:\x9f\x1b\x03\xbf\xcf\xe4/\xbe4\x04\x9a\xf3\x1a'?n\xd6\xd9\xeb\x14\x811;\xc4\x07\xb7.\xd7Z\x01\xd6O\xe8\xfc\x8d\x06b\x8d\x16\xb0\xae*(\x05\xd1\x08 \xa7\xba\x1e\n^P\xc5\xb9\xa9?{f\xaf\xa6\xd3\x05>v\x0c\xd0\x1a\xc3r\xcd\xe3\xc8\xe3\xc6ig\xc3\xab\x92\xfb\xba\xabcc\xafX\xd2\x83\xad\xa8\x99],\x8a\xedn\xe9\xdd\xd5\xc8\"{\xfen=\xab\x93\\D\x8a\x02\x04\xef\xc7 :Qg\xdc\xff\xea+\xb8\xf0\x82t\x93\x94\xae\xaeos\xbdY\xbc&\xb93\xd0d\xcc\x1a\x1e\xe3!N\xd4\x941\x94\x98\xef\x97JMT\"\x89r\xec[\xe1^\x982\x89 \x81\xae\x13\x06\x17\xae\xc2\x01\x05z\xacEu\xd7\xac\xb8\xd2V\xc8\xc9\xb4\x08{\x85B\x87!N\xa1\xbb\xcfL\"D\xb0\xb3\x08q=\x03\x19>i\xa6\xb2\x01\xc5\xa6?\xa32\xa3_\xc4\x04q\xed.&hK:\x9b\xb8\x8fK\x1d\x1b<\xb3\x8e\xf4\xdd\xf7c\x94P\xded\x19\xc9\x1f\xf9\x05\x91%W\xd9\x99P-\x86\x13\xaa\xfa\xbb\xe3\xcf\xa0\xc4\xf1g\xaa\xad\x10\x91S_\x94\x16\xff\xb1\xd4H\xcd\xc0\x95\x034\x11\x89Dc`\x14\xf5\xe9\xc6I\xac\xe2PR\x844\xc6\xa1D\x08\xa6\x8fC\xf1\x11F\x1b?\x82u\xf1\xed\x84\xf7\x82w\xecq\x9d\xc6\xc4\x18\xe1AO\xd8\xb2\x99G\xe4\xc3\x9f\x04y3'\x838\x0d\xe8<\x9d\x9e\xb6\x9d\x9d\xa5@\x83\xcd_\xdazUU\x02\x06\x9d\x02J$`\xd0\x98\xa2\xb2\x06\xdf\xca\x9ao\xfbO\xfbXy\x80J\xd8\x1b\x0d\x0e\xb2,\x0d\x91|\x84Wy\x04^7v\x99\x9e\xaa\xcd\x80\x078\xe4\xe5R\xfa\x87[D\xcf\x84\xfb\xb2\xd3-\xea\x96\xd0\x8f\xd8\xe9\";=\xa2\x8f\x7fz\xf8\x98\xc1\xa63J\xf5q\xb2\xad*\xca\xd7\xe6\xa6>\xe6$\xed\xd27b\xa5\xdb\xe1#\xaf\xd2\xb3\xee\xbe\xe6\x83M\x87j*\xa4\x0c\x9d,\x81\xcc\xfb\xf1\x95~\\Z\x9bS\xd7F\xb3\xb4i\x1d\xbb\xe2P^\xe3R\xfd\xc2\xf2\xa5*c\xbc\xaeC\xa2f*\xeb\x93\x1a\xacU\xe3T\x0d\x96[\xc0\xc8\xeb2\xaa\xcb~\xf6\x06\xe3<\x89H\x8cN\xe5\x1f\xb2\x114Q\xb3\xa2\xa1\xeafZECK\x8f$e~qL~\xc3\xec\xb7\xa6\xcc\xa0\xdbF\x8d\xa8f\x9d\x9f1\x1c(\x881=\xbb\xcb\x93}\x85\xb3!\xee\xe4\x93\xa9$ \xc8\xb0\xad\x12\xd5Q\x84\x0cUT\xa5\xdeT\xb8\x8a\x9e\xa3\xcb\xa9BAy\xfe\xb3\x1f\xcb\xf4<\x9d\x04\x96\xef\xdb\x05\x10\xdf\xcb\xcf\x04\xf6\x99\xebu&\xbcJ\xcf\x0c\xc7\xc2\xed\xe9\x9f\xe2X`\x03\xb59\x19(B\xc8\xcf\x04\xe2Q|\xe8?C\xa6\x14\x1eR\xa63\xfd\xf1\xb8\xfa\xe1\xa2\x92\x91+\x1a\x87\x9d\x14\xd6\x94\x88o]#1ap\x9d\xbd\x1a}&H\xdbG\xcc?Q\x02\x13\n\xf0\xe0\xee\xfe\x9f#g \n\x9f\x98\x949\x1a\xc3\xa6O\xca\x15\x82z\x1fp\x91\xe6\xe0\xd2\xaf\xd1 \xaf$p^Bn\x8c\x13\xceR\xff\x16\xa31N\xf4\xfe\xd7\x10\xc07P|\x0d\xc1\x8d\x1b#\x88O\x82\xb7\xcd7O\x02\xf5\xc1B\xb7v\xc4O\xb2\xbe\xb2\x00ei\xa3\xc2 \xf0\xe3\x98k\x0d\xc8\x18N\xe8\xbboE\x11\x87\x18O\xe1\xc8Cs\x85\x1fG\xff\xae\xa5\x07c\x19\x07zE\x1e\xa1\xe3\xed{?\xbfG\xadBz\x865y^\x936\xef\xab\xfa\x1a\xf3$\xaai\x00\xd7X\xe2\xbe\xa3\xdfc\x7f.\xa2\x98PN\x03S-\n\xef%\xaf|\x0b)Z\x0dY E\xac\xce\x9c\xc07\xacVa\n7 \x82o\x0f\x99;n\xc2\xe2\xbbqs\xf39}\xcc\xd6JV]u\xcc4\x19=E\x17\xdd}\x1fC[u\x95\xb5\xcf\x98\x9c\xbf\x8a\x96\xab\x98\xce9\xaf[I$\xc1P\x1d ]\xc6\xff\xf5\xbb\xf7&\x0b\xfd\x92\\\xaf\xfe}\x02e\xdfV\x1f\x90\xc1vV%h\xe87\x14\xa9\x88\x0f\x15\xc3\xb4:.,0\x86\xc4\xc4\xb9\"\x9f\xeaj!&A\x1a\xaa\xca2\x8eQ/v%\xed\x89\xa1Nx\xc5yY57q\xd5^\x1dt]\x9a\x14Z\xd5M\xe71\x07r\xcc\x96i'\xcb\xf5\xc9\x01YYN\xda\xb4\xe4\xc8\xd1\xf5\xfa\x97\x15!qU\x04KG\xd0\xd5_i\xcc\x19\x96=\x80uD\xbf\xa0\xae{\xfa\x9er\x00\xc6M\xd4W\xc3\x99Tpr\xa7\xd7\xe6N\"\x1e9\xcf\xd2\xbc,Z\xc7S\x9f\xbd\x85\x06\xe7\x99\x903\xf8>N\xe7\xee y+[\x83\xf2\"\xc3\x91ST\xa7\xfc@\xc4\x8ad\xdfL\x83\x92\x94\x93\xa2\xcc\x89\xbf\xeeH\xeb\x1d\xf6'ZT\xf5v\xf7\x0e\x0f\xe1,J\xc2\xf4\xccK\xfcm\xb4\xf4\xcb4\xf7\xd6\xc5\xb1\xbf%\xb4\x0f#\xddC7\xefsV$.\x88\x82k\xa3\x87\x1e\xff\xda\x9bW\xcf8\xc61\x0e\xfe\xcd\xabgn\xae\x91\xe9C\x9e\x0c\xa4\x8b\xa6\xbeL\xef\x1dyX/W\xb8\xb6\xc1!8I\x9aP|\x8e\xbcUN(G\x9c\xd2\xdf\x05)\xbf+\xcb<\x9aoJ\xe2V\x9b\xcfa\xb2N\xa3\x1cq\xcd\x00\xd13\xb3\xfb\x1ec$\x9cq\x15\xd3;\x1a\xd7\xdd\x9d\xa7\xe1\x05\xe5\xd9H\x12>ZEq\xe8F\xc8\xa6\x05t\xeb\xba=\xc0\x9c\xac\xd3-\xa9\x01\x1b\x93\x95\x93m\xfa\xae1Y\xa9\xea\xe8}/E\xc9\xeb L\xc9\x95\xbfR1+R\x89Y\xbeJ\xcc\xda\xa8\xc4\xacB%f\xc5\xfcAOb\nx\xca\xc7\xbe\x1cUKZYU\x12B\x98>+\xe0?\x81`\x95\x8f\xc1\x97\x0bV\xd1u\x14\xacr.Xml\x05\xabt\xa8`\x95{\"x\\\x84\xe1\xfc\xc2B\x04\xad\x84\x0e\xde\xd5\\T\x88\xac\xc3\x85\xbc\xa0\xf5QT\xa8\xba'\x02\x10M\x90\xd5k\xcc\xed\xe2-\xe5\x9f{\xad\xbcg]\x14\xf1T\x8f\x18\xfb\xf0\xfa\"#\xac\xd7V\xdd\xace#\xca~\xe4i\\|\x17\x04$+\x7f@\xf5\xaf\x89\x9f30})\xe6v2\xb0\x8f\x11\xba\xedY\xa5@\xf4\x11To\xa4\xdd \x8c\xceO\xa6\xac\x08\xbad\xea4EZ9\xd1\xd3\xe5\xb4d\xde{j\x00\xe1>\xbb\x91BH\xaa\x17\xbd\x1f3\xabs\xafp4\xdd\xad\x96\x82X!\x15\xc4|;A\xacX\xa5\x9b8\xacX\"ka\xc7\xb4/\x1a>M\xdd\xc0@\xe4NH\xff\xb6(\xbf\xcf\xde\xaab\xdb8x\xfdw\x1bN\x84\xd6q\xb0\xeaO9\x14n\xc6\x0e(\xbb\xd7\x86\x97\x07\xbc\xf1\x17\x15\x0f;-\xfa\xe5J4D\x7f\xb6\x9f2D\xe1\xcf\xd9\x1f}\xdch/\xffG\x92\x06\xf5$\xc1F^d\x1e\x19\xd5z\xe9)C\xd2\xc3\x03=yH,\xbdN65\xac!\xa5,\xf3\xd3\xb0\xcc\x13\x8bl\x841\xefm\xd2\xc6-5p\xc8\xdc\\\x06\xa6\x0d]U=\xd6G\xd5l\xf9\x11Zi\xed\x8e1\x89\xdf\xa34$#7\xd5x>\xac\xb1\x98\x8f\x13\xd4d\xd3T\xd1\xc6w\x9d8\xda\x12\xb1\x86\xa6\xca6~\x1d\xbbj\n\"\x91m\xf5\xaf\xbe\x92\xdd\x16Q\xa4\xb27f\xb5\x84\xf7\xb2\xf5D\xdd\xf8)\x1cB\xd1\xac\xf6\xc7\xa6rIJv\x82>b\xe7)\x95p\xc5\xb0\xe9\xacJ\xcd6\xe229\xee\x0c\xd1+T\x1b\xcc\x98\xd9\xe0J\x9a\xb3q\x01\x10\x971O\x16w\x05x\xd5\x88_n\xcf\xb5)q]\xec\xcfI]3\xc4\xe4\x08\xd5i\x0e8b\xa3\xcc\xad\xcb\xa6\xa5\xad\x16\xc3\x89\xab&(L\xb0\x97\\1\xa2\xe065\xc4\xa6\xde\x7f\xc5\x0c\xe6\x1a\xc0\xc6:\x89t\x17\xfc\xe5 \x8eQ\xbeJ#]\xc6\xabA\xc8Q\xe3b\x94\xe8\x92\"Df\xa5\x9a~E\xb5\xd5^\xea`i\xeb|\x94\x1a^\xae\x99y@\x93\x03\xaa\x93y@CP\x18\xf7\xd8a\x11\xcc\xbcd\x8fk\xd0\x1c'\x8a0}U\xfe\xa5\xe1\xdb\xd4B\xc9(\\k\x86b\x0e{o0=i\xbb\xe8\xa8\xc1\xf2\x1d\xba\xb4+\x8dS\xb8\xe1\x88K\xed\x8eS\xa1\xf0\x84\xde\xe39wU\xcd;\xf4 \xd7&\x03\xbc\xa2~\xd8\x04\xbb9\x8f\x1b@]j\xfe\xa1;\x18G\xc9;\xcd<=\xc3\xc7un\x07\xdd\x8c\xb5<\x9bR\xa5gS\xa9b\xa5\x81\xb3\xd3I\xdf\xc3\xa9T{8\x89\x0bYg\xa5\xa7\x93\xb8\xb0|\xc9\xc9\xd4\x00\x15\x027\x18F\xed\x0c\xcepx\x08)<\xac\xf1\xfc\x94'#A'_G\xce\xb8\x80\x99y\xb9\xd0\xad$\x08a\xc5P\x96\xb8\x8e:[\xb1\x1c':6\x15\xd0\x1d\xf8\xb1\xd0\xa6mQ\xafkh`\x91h#\x13\xa1\x8du\x1aZ\x8b\x90iH\x8cC\xaaO%M8/\x0c:I\x803\x07]u\xce\x8c\xa2\xc6\xe1\xa1.m30\xbe\xa4\xabK\x9aa\xd9\x0f\xa5\xaa\xc9\xdc\x15\x0e\xae\xe5\x87\xc0\xfeT\x85\xfeI\xad\x84U\x14\x85n\x15\x83\xde!\xa1K\x8d\xe7;$u\xe9'C\xeaGX\xd6\x99\x83\x98\x85\x98U\x8a\x1a\xb9'-\xfb\xcf\xaf\x85\xa4\x16\xa7\xea\xa0\xdf\x9b\xd6\x03\xf8\x1c2\xb9\x84*w\xacP\xe5\x8e\x15\xaa\xdc\xb1B\x95;V\xa8r\xc7\n\xa5\xe6\x8b\x98?\x91Z\x10\xdcP\xd8\n\xc2\xcaV\x80\xbf\xa6\xb7z\x05\xa4\x17R\x8b\x03\xaa\x07Te\xa5\xc3\x8fo\\X\xd9\x1a\x17\x88\xc4\xb6 C<\xb3hkjo);O)\x0e\x8d}\x914\xc1'+\xf2N%$n\x90\xba<2)\xb9\x12\xe6\xeb\xd3oF\xfd\ns%\x92\xd1m\xf9\x99\x8b*\xec\xe3\xd2/uJ\xeb\xbcO\xb2\xbbK/\xae\xf7h\xd82\n\xb4\x9a\x11\xc8\xcf\x9c\\\xd1Z\xef6\xfa{Q6\x84\xf4\xe8\xa5\xb8\xa4\xc3q\xfa\xac\x1d\xfd\x94\x02\xbf\xe1\n\xdd\x94\xaeF\xb3\xca\x08-Z\xe0RK\x1d*3\x9aP\xfeB\x0d\xc3\xac%\xe6\x02d\xccbb\xe1\x9a\x13\"\xa0Y\xaf\xb8B8\x9d\x12t\x8b\x10v\x9a\xdau\x0dk\xd0\xd4.\xab\xfeYhj/\xf8\x0cVx\xa4\x06\x9dW\xa0\xf6\xf6\xb1S8\x84\x95\x17%\x0b\x92c\xaeS\x8d\"\xe1\x0c\x0ea\xc9\xc5!5\xd4\x11\x1c\x82\xcf8u&\xe2h\x93\xfa\x9d\xd7\xd0\xe4\xdc_g\xb1>\x07\xe0q\x0d\xced%\x0d\xec#8\x84\xadU'\xdeqH\xe1P\xc5\xe5Q%\xfcw\x0c~\x9d\x86$>b\xbd\xd6\x81\xbf`\xe06%\x80^2\xd0*.\xd3TL\xe75\x83\xb7Tp?\x17\x9b\x16i\x97'\xa1Q\xf4\xc8\xbaPP\xf1\x05\xb8g\xee\xc8$/>\x15+\x84\xc5\xb2x\xc7\x9c1<\x7f;\xe6\x8a\xe7\xe7~6r\x7f\x7f\xdfe3\xba\xd7\xafp\x08O\xb9\xc4\x87\x88\xe9\xf4>\xa0\x16\xf1\xeaP?4M=ma\x98#\x94\xe0\x99W`m\xa0hq1r\xbb0T\xccf@KR\x1e\xe3M\xb6AF\xee\xaf\"\xec\xd70\x9b&A2J\x82x\x13\x92W\xc4\x0f_$\xf1E\x8b\xcb\xec^\xf4\xd0\xa3\xc7\xcd\xaf\xf0\x10\xcaJy\x95\xf0;\xa7U\x9fj\xc5V\xce\x9f\xb9\x8d\xcc\x89\xcd\x151\xf5]L\xfb[\xfaI\x85\xe6\x8d9T\xd1^\x9c\xba\xbe\xe8\x01k\xda\xf7V~Q\xad\x1d\x9d\xf2\x90g\xfb\xacnQ\xb9\x14\x07\x95T\x0b\xd2\x9b\xebd\x0c\xcfu\xf3(\x99C\xcdi\xc4\x80\x7f\xc9\xa3\x92hg\xfc\xbd\xde\xfcq\x8e\xbe\xcc\x94v\x9d[\x04\x8a\x89K\xb0\xc0\x94\x1d\xa2l/+&\xf5\xd7\xbf\xe6d\xe1\x08\x97.\xda\xae\x8a\xebQ\xe0;\xddu?Y8\xf05/a\xdcF\x0bTeo\x1a\x16\xff\xd6\xbc\x9a\xb1p\x0d3\xbe&\x16\xaey\xe5\xda\xb8\xb8\xe6\x95\xf2\x1893\xa4\xe0\xd0[{<5%V\xba\xa4YK\\\xc8t\xc9\xd9IqiMKw*\xcd]\xaeQ\xf2)\xe3\xfe\x9aW\xdb\xa4\xc2h\x9by\xf68[(\x8f\x19\x17\x97,v\xbc~V+-(J_\xd6^b\x1c\xeb\xf0q\n1A3\x06A\x05\xe4\x1b\x92\xa2\xf7\xf9\x18\xde\xed\x98\xdc`\x07M>8p\x03\xdc\x0ds#\xd7l,'\xf4K\x9f\xb9\x85+\x03\xff\xafN\xdd>D\xd7\x1f]\xa1\x9a\x7f\xb0n\x7f\xe7}-[\x8bn\xab\xa7\xa7z\x93\xa1\xaa\xf1\x17\xba\x86E\xd5\x1f_\x94)l\xd8&T\xa7\xc4\x18\xce\xcc\xbb\xcdj\xacL\x9dWQ\xf3\xe6\xd0\x1b6Y\xd3\xcet\x84@2\xf1Q\"\x11\xd6\xa8\x19\xcc5[o\xe84\xbe\xb60q\x1b8\x1e\xf5\x94\xb4\xec\xd7|-\x04#E9\x9b\xee-\xef\x1da\xc7(\x88\xc4\xd5\xc7\xe4\xb7^\xd2\xb9\xe6\xd51\xb1\xcb\xf4>\x8a\xf5\x1e\xc3\\\x9b\x83q\xed\xc7\xb5\x83\x81\xc3\x9d=\n\xd0E\xa1 \xe1\xa8^ar\xa43\x1a\x83\x03l\xe9\xbc\xda\x06Uq\x9b?i:\xf1\x9d\x16\xc5+K\x89u\x9a}MV\xfc\xa6Z^S{\xb1c\xa2\xd0\xd5^D>T\x88\x02L\xb5\xfd\"\x0fIN\xc2\x91\x9bhV\x94\x1fB3\xf8I\xb1p\xd5\xd4\x1di\xa6\xee\x91n\xea\xb8h;\x83#\xeb\x99\xd3\xf7e4\xae\x04\xfc+\xb5w\x0e0r\x1e\xc3C8\xf6\xcaT\xc6\x85v\xa2W\xba\x97\xe1\xc0}i\"T\xc8\xb5i\x14<\xf4JpP\x06 :B\xad\xfe\x11,\x17\x064\xa4p\xa4\xad\x87Yo\xdf\x9fR\xe0\xaa\x92j\x95{\x1f\xbc\x94\x05i\xa5\xb7 \xd5fCF \x85u\xe8\xf7\xf7]s\x89\xcc\x9a\xd7TL6T\xffm\x9b\xd0\xea\xbf\xf8\xcdke\x13Z)sG\xacTQ%+UT\xc9J\x15U\xb2RE\x95\xacTQ%+\xa5Mh%lB+\x8c\xc8\xbf-\xb5\x04\xb1g\xbd/W\xe6\xa0\xf6\xedP\xf4]\x91no\xf5\xf1\x0dE[[C\xd1\x97(\x94\x8e\xd1\xca\x14\x85\xa2\xb7\x88d~^\x90\x90oq\x85X\x85\x91\"\x1bt\xdd\x7f\xd9\x04\x1fd\xf2\x12!)\x9c\x1bSk3\x99\xff|\xa9\x16b)\x10S\x91@\x94\x14\xa5\x9f\x04$]\x00\x0b<4\xebC\x12\x1e,\xf9$\x8aQ=\xa52\x8f\x89+\xf1R\x16\xc6g\x91\xc3\xa0y\xe56\xe6\xb5\xe6\xd5] \xca\x0cobydn\xf3R\x9cD\xd5\xe31~\xca\x0f\xbf+^\x93\xf3\xd2\xd5L,\xd7\x1bZ\xf7\xbc\xd3\xe3\x92\xf2\x07\xac\xaa\xbbN\x03!C\xafO\x1b\xa4r\x95\xd9\x02PN\x90\xec\x15\xd7\xea\x88W\x07a\xec\x942@\xb9)\x95\xbd$b\x7f^\xa2\xabWc\xd5\xb4\xb4d\xd6\xc1g\x16YB\xad\xccu\xac^\xc9&\x97$T\x12\x17\xabR\xc2\xf9|5\x98_\x9b;Xz\x8d\x87\xf0\xfb{\xd0\xba\x0fo\x06d>-\xdav\xa3\xd6nT\xbf\x85\xf5A\x06X\xd5\xe8\xc1\\\xfb\xf2\xa1\xa6\x8b\x92\xcf\xc7~I\xb0\xbe\xe8\xebhMt\"\xf4\xba\x9a\x04\x8d4$\xc9\xf5\xd5\xbc(\xc5\xa7\xcb\x92\x8aL\x0d7\xffo\xc3\x87\xe9_\xad \xf6\x9b\x91W\x92\xa2t\x93\x11\x05\xf6O\x1c>#\x93\xc7Q\x91\xa5\x05f\xe6w\xde\xd2\xe3\xe3\xa6_\x96~\xb0\xa2\x07\xb5xI\x05.\xbe%4,\xa1\xdd\xb7\xa4\xe0\xbd~5\xb4G\xec[\xf4h\x82\xd7\xb9\x9f\x14\x0b\x92\xcb\xba\xd6|\xa3\xd75\xeb\xcfI\xdf\xd0(\x8f\xe9*8\xf4\x98u Jx\x9c\xb9\xe9$\xa4[\xf9\xa2\xca\xb1Q\x92\xf3\xf2\xe6\xaa\\\xc7\x16\xban\x0c\xce\xe9\x1e\xf0\xc2\xcaV%;(\xa5\xc9\x0ed\x17K\x80pa\x84\xed\xca?\xb2\xebT\x9f\x94`n\xf1\x8938\x84\x93\x0b\xca\xd0\x15\x9byQ\xe6n\xea\xc5~Q>MBr\xfeb\xe1:7\x9d\x11\xdc\x80\xe9h\x0c\xa7o\xbd_\xd3(q\x9d\x99n\x9b\x8a\x0b\xed\xfc*D\xd5l\x08=\x13\xd4\xc9\xfdpdZv\xe0K\x7f^\x99{\xc8y\x99\xfbA\xf9\x84\xe7oz\x92\xa7k\xde\x8fF7\x98W\xc4\xc8=2\x18\x84\xe8\x85!<\xb43\xcc\xeaG\xe7\xf3\xdc\xc0 i\x9fR\x1aTy]\xd6\x99+\xe8\xc7%\xb7yB\x8b\x17\xf9\x8b\x8c$\x1c3/eIq|\xa3\xc6\x16\xaa\xfa\xec\x06\x07\\\xd8\xa9\x06\x8a\xb88We3hw>\x863\xfd\xa4\x83q\xe2\x9bYf`\x11 #\xff\xb5\x9aM\x91\xcbc\x06g\x83\xc7\xa2|\x81\xb3\xdb\x14\xf1\x94\xe3`)u\xb8\xce\xa8\xfa2\xe7< $%\x96\xd6\x86\xf9\xa6\x84\x8bt\x93\xc3\xd7r/\xda\x99f\x96k\xda\xe7\x06'\x84\xa2\x81\xdbN~\xc8x\xd7\x9b\x14\xe8_7\xb3\xd8\x8f\x92\x9b\x8d\xd9\xff\xc8\x036\xf0k\xc2\x88\xa7\x181\xcc\xe0\xe6\xff\x8d\xd6\xfe\x92\xfc\xebf\x0b\x87\x12\x8f\xbb\xfd\x14\xaeSl\x97\x8e\xd6\xb0\xd1\xa4\xf9\x0e8\xa8Fv\xc0\xd1+\xdb\xd7K\xed!\x80\xf9\x9ed\x9a\xcb\xe6\xb5\xf6\xcf\x7f\x89\xc2r5\x03g\xba\xbf\xff\xff\x93c\" \xe5W7\x94\x073\x1d\xbb\xa8\xd0\xc8\xf0\xb9\xf37a\x94v\xe6\xce\xea\xb8P\x9f\x8d\xf4\x8bzC\x117G\xaa\x1d\xb1tA\xd1h\x1c\xd7O=\x9d\x11]\xado\x96\xacL\xb5\x89\xe8\xc48\xcc\x7f\x88n\x1f\x04O\x17P~\xfc\xbdQ\x9e\xcbtE\xe22o\x0d\xee\xe4\xf5-\xec\xc3C(lw\x80z\xf9\xad\xcd\x7f\x91:\x9c\xf1M\x92\x93 ]&\xd1\xbfIX\x99\x89p\x8e\xbf\x16\x81A\x94\x89\x10A\xee~\x81\xd4\xdd\xd3E\x8a~\xca\xd9/4\xa4\xf8\xd3M\xe4\x06K\x91@\x99\x8a)\xad\x8d\xf7Z\xb7\xa5\xe5\xa5q\xa4\xe1\xc5Vg,\xc0\xb0Tz\x9e*]\xab\xacm\x916UH\x98Yu'\xcb`\x95\xef\xd0}p\xf7\x8e\xc4\x88\xa7\xd7}\xd6\xbe\x9eY\x1c\x95\xeeM\xf7\x9b\x7f\xdd|x\xf2\x7f\xbf}{\xe3\xdb\xd1\xcd\xe5\xc8[DqIr\x0b\x0fK\xfe!\xc7\xa9\xb2\x0dEkY\"\xdc\x8e\xfa\xba\xdd\xdf\xc8\xb6\xbf7\xbf\xf9\xd7\xcd\x1b\xac\x9b\x9c\x11 \xda\x0f\xfb\xf6\x1f\xc6\xaf\xfe\xeb\xa6\xddw7\xb6\xdf\xb5\x9e@\xec\xc0\x9er\\\x80\xc8E0\xef\xf0^$~\xf8\xbdn\xd6\xf8!\xcf\x9d\xd9\xed\x850JuM|\xf0-Li\x13\x0d]Gm\xcb\x9b\xbe\x85\x87\xed?g\xf0\xbb\xe4\xdcg\xb1[\x82\x83\xed?G\xbd\xad'a\x89\xfb\xa01\x1c\xca\xf4\xa6\x01\x1c\xc2IGeSg\xb2\xa5\x7fu\xe2\xac\xe9x\x17c4\x07\xbb\x0b8\x042\x86\xd4]\xd8\xb8\x13\xf3uR)\xeau!]\xec\x14wK\xd6^\xe4\x96\x94uq\x1e\xc5i\x11%\xcb\xd7\xfe\xd2\x81\x19l\xf8\xdd\x17\x19I\xea\xbb>\xbf{L\xe2E\x1b\xdeyM\xe4\xb9\xbe\xe5\x01\x81\xed\xa3\xf7\xfdH\xe2\xba2\x86TeR\x8eLI\xeaX\xfdq\xa4\xe8\xbd\xe7\xad\x81R\x1e\xdf\xa7\x88\x15O&\xf2\x9e\xd2\xad\x95\xbb\xc9\x18b\x85\x92\x0fK\x89\xc3\x0d\x88\xfa\xef\xa3b\xb69\x83us7n\x8c\xa1\xd0\xd9Y(J\xa4'%L@\xe7\xbe\x1dVP\x07\nM\xa1|\xb8l\xb9\xf0\xef\x0c\xe7 ov\xbb\x1aV\x8f\x109\x1d\xac\x9c\x057 ds\x0f7 \xab~ET\xe8\xc4\x80\x05\xec\xcd\x18\xb0\xeb\xc6\xf0kh\xd0\xa6\x0eN\xb4\xc7\xc3\x81\x02o\x91\xe6G~\xb0\xb2\xdb\x1e\xd9 yK\xf7_\xf7\xe4\xa42jfw\xaa\xf0/\xed\xedu\xfc%F\\\xfb\xfb\xaf\xa6o\xe9%\x12\xb6\xde\xfc\xfb^\xdd\xc0\xdf!'\x19\xf1\xd1vB\x99\xbaoVe\x99\x15\xb3\x9b7\x97Q\xb9\xda\xcc\xbd ]\xdf\xfc5M\x8a`\x15G\xc9;\x92\x977[\xf0\xdf6\xbe\xd4\xfc\xe8\xa34\xbb\xc8\xa3\xe5\xaa\x047\x18\xc1\xc1\xfe\xf4\xf6\xe4`\x7fzg\x0c?\xa6 \x1cW\x1f\xf3\x9a\xef<\x8b\x02\x92\x14$\x84M\x12\x92\x1c\xca\x15\x81\xe7O_\x8b\xdbM\xd0\x9b\xd5od\x06X\xd4c3\xb3\x842\x7frw\xdeq\xe3\x08Ab\xaf\x12$\xc8\x08\xcaU\x9e\x9e\xa1\x9d\xe1\xf5EF\x8e\xf2<\xcd]\x87\x9cgL\xdd\xe6\x03\x7fI\x92\"y\x8a(]\x8e*^\xa3\x0fr\xd0\x05\x81\x1b]0\xe1\xa9@\xc4\xc1\xf4w(\xfb\x1f\xca\x19\xf7A\xa9~\xc3\xce\x98\x8fX\x16\xf4\xfe\xc4@S\x9d\x97Vg\xde!\xc5\x1b\xde\x97\xca\x1e\xb1O\xb1\xa9\xfd*z\xc7|\x8d\xa5\x00\xaa\x97\xd1\x0d\xe3[\x98~=\xa2''\x0b]qS\xb8q\x88F\xf8\x12\xbe\xfd\xf6\x10\xa6c:\xc4\xc3\xee\x18E\x8b\xf4P\xe2o\xb4\x1a\x1f\x86\xed5cxw:2\xe1\x82\xc2\xbb)w\xc9\xc8+\xd3g\xe9\x99\xa8D;\xac\x0f\x1f\xdd\x99\xed3,\xfe\xba\xa82\x1b\xd0_\xf7F\x7f\x8e\x82\xaf\xdb/\x05f\xd4\x05f\x84\x17\xfd\x80h8\x81\xe0\xb9\xaa\x8a\xf6\xa8\xe2\xa8\x8e\xceKM1\xef\xb4[\xb2;U\x97\xecN?\xbeZ\x88 t\x9d\xb1\x98-\x8b\xe6z\xddReh>t\xb7Jy\xa7\xd3Sr^\x92\xa4\xe8\x1d\xf6\xef\x99\xe7\xd4\x0c\x9c1\xf0\xa3)1\xd7\xda\x8e\xae\x1bB=e\x9ecG\xeb\xac\xbc0\x94\x89\xef\xc5\xd4\x8a*\xf1\x98S\xb5~'\x12\xfa\xc9\x88\xeb'\xafU\xc5x\xd5\xc8m\xf0\x10\xb1B\x85\x88Q\xc1\xbf(9\xea\x98\xf9S}\x02\xfb\xfc\x0b\x8f\xa3\x02)\x9d\x14\xa1\xf9\xb9\x8f4\x0f{\x8d\xda-\xf4\xf6\xbb\x0c\xaew\xf4\xa9-\xd4\xa7\xad\x9c\"\x0e\x9d\x96\xe9r\xa9\x11>B\xdesY\xfa\xe7\x9e\xeb\x86\xba\xbfQ\x92mJi#\xcc\x04\xee\x04+\x12\xbc\x9b\xa7\xe7\x12MY\xa3\x0b\xfd\x87\xf8\x1e\x1e!\xa8t\x90(tj^\xc9\xac\x9c\x8c\\Q\xc1\xda\xe3\x1f6\x1e\xb7\xa318\xc7$ \x01'\x95mL\xa7\xe7#\xf4Y\x95\xe8\xff\xa49\xa1\xe5&\x93Pj2Q\x94\x93T\xa4\x88\xbeu\xd0\xcb\x0b\xf0%\x17\xb4\xdc\xb0ag\xd4\xb0\xcd\x05-v\xe0.f\x82\xa1\xeeG_}\xd5\xfa[-F$&\x1bD\xc3\x02\x90TC\x18\xb9\x89'$\xc618\xcc9\x03\xad\xcb\x88\x13\xcc\xbaLD^\xc2\x84\xd5PB\x91\xbfOG\x9a\x96\x14\xebCK\\\xdbai\xb2\xad\x94\xc8y\xad\xc2W\x03\xa5\xd6\x9af\x1fS\x1aX\xc9\xb4\x9b\x1a\x94\x8a\xc4\xda\x05IxT6\xce\x15.\x04N\x1e\xe5\xe4\xdct\x0c\xfe\x186*S\x10\xe6\xf3\xe6\xd5*X\xcdA\x8b\x8c\x05\xc2\x00c\x9ci\xc6KX\xea\xf6\x13\x10u M\xd3\xc8\xca\xb5WHg\\\x18\xb5r\"\x19C\xae\x98\xdbF\xf4\"\x96\xf0`k!\x0e\xb3\xaf\xbe\x02\x07\xb5Y\xb8\xdf\xd2z\xa1t\xfa$\xc1\x9a\xe9\xa2\x96\x01\xcf\xc3\xa88>\xf3\x97K\x92\x1f\xa0N\xd6\x87\xaa\x8d\xf3I\x9d\xf9\xf6\x8f?\xd8]L\xcf\xcbi\x11\x8f\xed\xad\xefW w\xabT\x8aj\x88\xc67f\xd8\x0b\x9e=\xea\xab\xaf\xc0m\xf4A\xd1\x83\xddZ\xaa+`\xef \x07\xb0\x1e}tY8h\xb2Y\xcfI\xfe\x9a\xeb\xc7F\xae\xaf\x88\x93\xeb{q\xc90\xdd\x1d}\x9c|\xedU\x12\x86_\xa28~E\x02\x12m\x91;\x91\xd5\xdc\xb7\xce\xc5Ps\xea\x9fxw\x99R\x88G\x97\xda\x83Hd\xa2\x02 \x1b\xee\x84\x1cf*3\x9a\xcd\xeeJ\xab\xed\xe4F\xad|\xd4#q\xa8\x07,%\xf5h\xc4Q=\xd9\xac\x91w\xf5\x81\xe5b\x88:\xf7u\xad \x17\xcd\xc6{53lJoP\x18\x86\xd2\xd84\x1b\x8c\x03\xa1\xff\x9d\x893#'\xbfm\xa2\x9c\x84\x8cT\xe1\xae\xf2\xd9\x19L\xf72\xba\x89x\x8b(/J\xb7\xb3\x01\xb1\x90e\xc1?+jZ\xdam\xc7bTe\xd1\xee\xee\xb4\xfe\x86lo<\x99\x18\xf4\x01\xbc\x05\xec\xce+\xc3q\x9fX\xee\x8f|@V\x8e\xb4\x865\x98\xcb#.?sm\xaf\x9e\xd7 Z{\xfe\xa6%\xaa\x0b\x95\xb7\x1e#\xad\xe9M`Mo\xc2\xea\xb3\xe6\n\x0f\x85\x91\xde`\x95\x07cj\x11\xafX\xa5gGB\xdde(\xef\xc0\xa0\x1f\xa5\xebu\x9a\xd8\xbcs\x81^\xd9\xce\x8fE\x9a\xb0\xcc\xe7O\xd2|m*)\x9b\xbb\xcc\x98\xfc=\x0b\xaaQ\xc2\x9e\n\xc7\n\xc6n\xa8\x01\xcf\xe0\xb0\xc9\xa2\x9c\x9a\x0b\x98\xceM\xf6\xac\xb6\xc1\xc9`\x15Y$Zk6\xd4\xf6#\x83\x95)\xa8\xec3\x85W\x15S\x10\xd8\xea\x06\x06\xbbP\xd0\xf4\x8f\xa2\x9fh\xa4\xf3\xc1{\xf4\x135\xcd$E\xd9\xc8\\hot\x92\x91I\xbbwk\xf3\x93\xa1\xf4X\xc3\xc2\xa3\xc9\x05\x04\x83\x8b\xb65\x8dL\x81\x12R\x97\xe1\xe4\x88\xe1\xafm\x0d\x8ds\x06nSC\xe3\xb8\xb13\xb8\"\xddT&\xa4 \xde\x94!MEC\n-\x93\x12P\x89^\xfd\x81\xef\xea]\xb9H\xf3\xb5\xaf\xed\xe5\x0b8\x04\xf4\x81^!7Rv\x18\x11\xed\x86x \x87\xf0\x82\xbdP\x1a\x10\xf45%\x00\xb47\x8f\xfd\xd2wL5\xf8\x9eS\xe8'\x15t\x94\xd4\xa1\xe5\xea\x97\x9e\xd6\xc3\xae\x19\x0e5\xf8\xaf\xa2\xf3(\x0cD%Y\x17T\x16\xc0\x81t\xab\xc95\xaf\x9f\xe0\x10\xde\xc1Cx\xd7\xe5\xa1\x1cM$\xe7+8\xc4\xc0GW\xd4\xa2\xe8\x12\xf0\x91[Vy{\x95_y\x0c\x87\xb0n~e\xe0\xfb\xcf,\x12Y\xbd\xb1\x80\xf9\xcd\x02\xe6 \x1c\xc2\xdeT\xab)h0z\xcc\xe9\xfeY\x8dOl=:\xec\xe03:v\xda\xc1gM\xbew\x8c\xfd\xe1\xb7\x84(\x87\x86\xe37\xf5\xf7\x04h\xe3koh\x9bo\xea\xf0e\xda\x03\xec\xf5~\x1b\x8e\xf5\xed\xb7\xfa[U\x1b\xe3f\xccB\xd9\x15G\xb1\x02FWL\xd6z\xa4\xe8\xf3\xf6\xb3\xdc\xfbH\x17&\xa8\xb0\x99\xd9\xba$4\xdf\x8c\x12\xa7\xe5\xde }\xe9\ns\xf8\x0fq&\xba\nC\xffSx\xd82#\xd2\x06\xa1\xa2\x070\xeb=T\xf6\xa6=\xb9\xf8au\xc6\x00VF]\xddC\xabT\x0dA\x1ac\xbe\x10\xdaS\xf5\xd9\xa7\xea\xaf\xf3?\xff\xef\xefN\xc3\x8f\xee*f\xb39Y\x9a:\xe9cx9\x86_Q\x0fu\xe2\xc0\x0d\xf8\x15n\x80\xf3\xd6\x19\xc3w\x18\xc2\xb7\xf3\xac\xb5z\x92\xa7\xd9\x84\x9fg\xca)p\xffJ\x1b\x1d\x833\xd2o\xb5\x1d\xa7 $YN\x02\xbfT\xad\xcf\xfbq}\x96\xd6\xdb\xbf\xf1\x16\xc6\x846\xfe\xfep\xab\x15i\x9c\xe4\\g\xdcb\xdbq\xba\xc6\xb0\xa4}~%\x94\xe3\xaf\xae4G\xfa\xb1\x89\x9dgnW\x14o&\x14\x83\x0c\xeeR\xe7\xff\xb0H\xa9~\xfe\xb3\x1f\xeb\xcb\xb0\xc8g\xa8N\xa0\xbf\xa63\xf2X\xcc\xc8\xe3\xff\xf8\x19\xb9\xc2\x1a+;8wV\xdb\xa9\xe1\xe2\xa9!\xca\xe7Zz\xcc\xeb\x9f\xc8\xbei\xc2\x8a\xbd3\xd4\x0b\xc3\x1f\x7f\xc0\xde\x13\xb3$\xab\xed\x87\xca\xf9\x85\xb2+\xea\xb5\x14\xbdw\xbe\x89\xbe\xfdn\xebG1\xa6\xe2@V\xb4\xf8\xe6f\xf4-=\xe6\xe0\x06\xbc\xb1\x88\x8eo^\xc2|\xaa\xc1\x8f\xda7\x8f\x07\xf5\x8eU\xc9\xcd\xde\x8fZ3\xd5\xe0\x94~\xfb0s&\xd82\xbbi\xe3*A6i\x8d9\xfbM9\x98\xd7t,{\xcf\xb5'Z+\xcb\x13\xc6\xdc\xce\x0cY\xed*)\x07\xcb\xebP\x94\x8a\xcc\xd3\xa3\xad$o\xd0uX\xebM\xb8N\xf3'5\x84`\xabf\xf0T\x0d\xd4\xd8Z\xf2\xedVK\x9d\x8c\xd5\xa2\x14\x0f&\xd0p\xb9m\x83\xcfXx\xbd%\xef\xbb\xabV\x84\xd0\xc5+fB\xccc\x7f\xea\x1a\x12\xf5\\^(\x11\x087\xc3\x0b\x0d\xc5:\xd2-\xab\xf5\xba\xd5\x0e\x96\xdd\xba\x88\x06\xa4\xe0\x0e\xd9\x9a\xacVvZ\x1f{\x8d\x8f\x98\xb3\x8e\xd6A\xb3*\xa2\xf6\x8d<\x89\xa5\x84H\xefX\x01G\x816M\x1d\x8en\x9a\x84K\xda\xac\xa9\xc9\xa9\xec\xe0\xc7\xa4,\xa3d\xf9$\xcd\xdd\xa0'g4\x183\xcdD\xd4>k3\xf8\x89\xb96PY\xf5'\xe4U\xd4\xaf %\xa7~\xf6\xae\xca\x89\xf9\xfa\x97R T\xaeT\x81\xca\x95*P\xb9R\x05*W\xaa`\x98+U\xe0\x16\x8d\x8e\x06jO\xe2\xe0\xe3\xfb?-l\xfd\x9f\xbe\x04\x98\x0b@\xfb\x00\xf38\n\xde}j\x87\x17k?$R[?4goevS\xc30\xcb\xe0\x1aU\xferma\xe2m\xfd8\xe2\x85\x1e\xfcu\xe1\x9e\xa4c\xf0\x91\x02UO\xbe'\x8b4'\xfcp\x12\x00\xa8\xb7\xe3\xb3\xe4\xa5 \x7f\xca|::7\xdd\xd1\x18\x12\x8f\xf0?4\xc7\x82\x18\xb4\xf6\x04\xce\xf0\xf4\xd5\x9c\xa3kn\xe1\xe8\xfb\xec\x02\x12*\x837\xda\xcb<\x0d7\xc1\xb0\xb8\xfe\xca\xdb\x8f\x8d\\\x92r\x80\x7f\x94\x19\xc9O\x04 \xae^\xf5\x1a\xeb\xf8\xdb?i,\xbf)\xf6y\xce\xa2\xabme\x93y\x99\x00G)\x10\xe1G\xfc\xd8f\xa9\xa6\xae\xdb\xb1\x8d\x19X\xee\xab\xb2\xc6H+\xa0I\xd3\xc9\xf8\xaat2\x1bU:\x99B\x95N&\xe6\x0f\xe4\x15\xd0Z\xb9c\xaeY\xc6\x98\xfeG\x84\x1e\xfa/\x0f\x1e<\x90 \xe9\"M\xcac\xa6\xcfv\xa2\xd2\x8f\xa3\xa0\x1b\xa2\xd3\xfa34\xd2'\x03\xe3\x00m\x1a!)\x83\xd6\xab\xbb\xa4\xf6\x93\xee\x94\x1fc\xc72\x03\xaf\x18\x02#\xff\xdb\xe9\xd1\x8e\xa5\x9b\xc0L\xb9`\x00\xf5\x82\x81\xfeEP\xb1\x08\xc62@\xc0\x19\x04:\xac\xb6\x17\xd1\xc8u\xc4\xd6V\xf9\x05C#\x94\x06\x9ae\xe1wVyC\x87\xd0\xf2\xfe\xeb\xe39\x01\xf46&C>\x06\x90\xb7yz\xaaI\xca\x00\x9c>\xff\xc0\xcb\xa9\xea\xe3\xe4\x8dI\x06@\xde\x85\xdd\x86;$\xd3\xc0\xd0.M\xf2\xf4l\xd7^\xed\xd2\\\x90\xc6\xfa\x05\xb8l\x92\x02\xd8\xb1\xddV6\x82\x8f\xdf<\xf3\x1a\x1a\x90\x05\xa1\xf4HR\xe6\x17\xb2\x12\xb9&\xdd\xb1\xf0\x01\xee\xc8?d\x0c\x07\x06\xbf%\x10\xee\xbb'\xfb\x9ax\x10q\xa1\x0b\xef\xc9\xd4\xa2\xda\xcf\x9e$\x1f\x83\x1b\x8d\xaa<\x81\xeaL\xd5\xe2\x12N\xbc\x91\xd7\xf1\x19\x7f;\x12N\xb4\x1dOr\xee=\x02\xb3\xc6S\xa3G\x89\xb86\xb2\xa6Z\x0e\xec\xfa\xee\x9a\xd8W\x8b\xbd\x0c\xe2HJ\xb5`\x97\xf0\x0f\x10\xd7P|\x06\xd6lz \x13\x94\xb8vl:\x92(\xa3?]o|^Fb\xa39H\x13\x9b\xf6)\x97\x80\xb6CGx\xcb\x991\x95\xbe\x83\xa6D\x83\x97\xa0\x80\xe5\xdcb\xa6\x1f\x94F\xfdX\xc3t\x93CHS\xbd\x83\x94c\xeb\x88?x\xcbP\x82\xba)\n\x85x\xf7\xba\x89B\x9fT\x83\x19\xc8\x04\x1e* \xb9\x81\x10xP\xdc\xf93\xa8/\x1b\xfc\xbeDK\xd9g\xf9m#5m$\x90k\xaa/\x19\"m0I\x83\x84Q\x99\xe6F\x0d#SF\x92<\xb7P\\2md\xec_\xa4\x9b\xd2\x02\xbf\xb3p\xb9#\xcc \x884\xdcH\x18\xe55\xf8\xf3\xd5\x07\x84\xcaL\x04\x82gv\x8a\x8c\x04\xe6\xe1\x84W9\x9c+\xeb<\xf3\x0b\x93#\xc8h\xa7tj\xb6\xfc\xfc\xa2\xcdL\xeb\x93\xa7C+\xcc\x19gA>\x05\x0c?u\xc7;\x9e\x95\xa5\xe1h\x14\xec}\xd9<\xa2\x94V\xea\x9d\xf6jo\x9f\xaa\x8f\x9f\xf7c,Mgh\x86\xe9\x90\xf4\xa7\x87\xd031\x7f\x1fVg\xaf\xe9+\xcd\x99\x0fx\x08+\xb7\x03\xc5\x1c\xc3\x1a\xae_\x02\x16Co\xc4\xcd\xcc/W\xf8\xbe\xb2\x1f\xc5\xda\x8f\xe3F-F\xbf\x84\xee\xeb\x0d\x7fW\xf5gt\xce\xebFw\xff\xb3UT\x92\xe3\xcc\x0f\x98k;\x99\xe0\n\xabw\x95U\x15Gi\xaa\x01>\xb05)\n\x7fI\xb4\x07\x8b\x16]\x8cC\xc2\x8a\xa0\x93\x90\x04)3\x91;3p\xb0\x12\x8aah\xc1&/\xd0\xdc\x94\xa5QR*\xb9\x1f\xd9\xd8\xb0\xb6\xb5\x8e\xe6i\xaa(W\x07\x7f\xe2\xcd\xa3$t\x19:\xe4R\xbb\xb6\xf3\xe3f\x9dA\x99\x02\x1d\n\xc5\x96\xbc\xd6U\x88\x1fm\xb24\xd4\x04\xb6\x13m\x91C\xe5\xbc\x8c\x8f\x92ZtwJ\x8e%h\x9fEE\xe9E\x05\xfd\x8f\xdb\xd9\x0c\xf6\x9bI\xb2\x97\xb8\x9f\xb0\xc7v\xd5%>\xc4\xd2\x804\xc8!\xfa\xe3&\xe8\xe5\x91c\xcc\xa4\xdd\xa7\xd3\xa4Z\xc6\xd6\xe7v\xde\x19\x9f\x90\x90Z\x13I\x0c\x0fB\xc4\xfd\xc8$\xcd~3\xff\x99 \xd5\x95\xd2\xa86\xd6Z\xd1\xab\xf6+\x06\xda%\xd3\xd6\xad\x94\xda:\x17\xd3k9\xce\x88W\xa4t\xc0\xb1\xb1\x1d \x11\xfcd\xff\xadW\xa6o\xe8va\xf5\x8a\xe0\x06\x10\xaf\x88\xa3\x80\xb8\xd3N\xc7\x04-\x81^\x1d10\xa7\xccm\xf2\xa4-\xa51\xfb\xc2\x17\xbd.\xbf,\xf5\xbaA\x95\xbb\xefO\xa3\xe1\xfd\xe2\xa0jQ\x01\xe9\x12>\x87\xe2\x13u\x12O\xdc\n\xd7\xd0\x93\xb0\xca\x92\xf58\n\x9f\xa7\x9bD\x16Td\xab$\xaf\x95\xe3\xcdl\x1fE\x95\xce\xa837\n\xf0*?R\x7f\xb2\xda\xf3!;J>`\xea/\xd2\x1bT\xfbN\x9d\xe6\xa9s\xbf*\x9d\xcf+)0\x9dH\x13G\xa4\xc3\xbf\xc4\xf8?\x81\xb9\xa39\x04\x93\xb5\xa3\xe2\"M\xa6\x0e\xec\xaeV%\xddv\xb3\xda\x89\x89\x82^\xc8&\x8edR^dD\xb0\xb7\xc8f\xba ?\xfe\xa5\x9f\xd1\xe9\x11\x0b4\xd6\xec\xd4\x03s\xcd\xf4\x9c\xf5J\xab\xf7\xd5\xc4\x85\xa9\x06SZp6\xe22\xe9fR\xe6C`\xa5\x953\xe8\xdb\xf8\xa05\x81\x9bR\x8fm\x80\xaeE}\xc7\xda\xe9z\xa5\xdbB\xcf\x98I\x12@\x8fzU\xa9\xf9\x08\x93^~\x93\xe6\x16cI\xb5co\x91\xa7\xeb\x1f\x8fG\xee\x89C\x0f\xb5(@.\xff\xe6\xafE\x9a8o\x1b\x9c\xe3\xf8\xday:\xd3\x1e\xbd\x10!\x06\xcf\xa2\xe4\x9d&5\xfcug\x10\x13\xf7\xb6* \xfdg\xc9\x18^\x05?\x98H\xf9\xc1\xa8\xe2\x07\x93\x11\xe3|\xf6\xbf\x86\x0d|\x03\xc9\xd7\xb0\xa1\xfc`t\xb2i\xf3\x83\x1b ?(\xf8\xcd\x0f\xc5\x08F#M\x12i\xcc\xb2\xf8\xda_\xa2\x05\x17u1\xa7\x8d\x1bLx\xa5\xccn\xa1X,\xb8B\xe6\xad\xd9\xb2\xc5i\xaf3:5\x98\xb1\x96\xc7\x003\xfd)\xf2F\xb7\x87\xa8\xe6G\xe87^d\xd7\xb9\x87\x9f\x80c\x1a\x14\xadf\xed\xf4\x91\x0fq\xfaH\x07\xa4\xcad eK\x7f\xb9$aE\xb8\x0b]\xc6G\xcc\\lv 11\x0f\xf6\x8aB;\xee*\xdd\x92|\x1b\x913S\x8d\xc1\x17\x1c\xceA\xa1p\xb0\xf56\xad\xad\xb7U(\x9d6\xaa\x1e\xf8$\x9f4z\xe8/\x0bg\x0c\xa5\xc1Y\x98y\xcf\x08\xa7\x92\x08\x1dI\x8c\xb6\xe2\x9dye\xa86M\xd5OT\xc2*_\xb8\x84\x9f\x05\xec\xe4\xb6\x00\xf5(sF\x1d\xe8\x9cl\xd4\xee\n\x00=;F\xf7jbPL\xd9\x95\xe6\"\xe9}\xd3\x85\xef\xaa3A\xa7\x87\x1b\x0e\xf3\xa2S\xcd\x89o\x9a\x90\xda\xef\xc1\xe0\x93j\xf4}\x00\xd6\xc3t\x00\xab\x0f-\x0bN\x992\x86PG\x06\xc4U\xa7\xeb7\xc32b\xb36d\xb0\x15\x17\xf33\x8b, \xe9N1$G\x05\xce\xde%\x0d/\xad\xc6\x06\x1e\xc3\xc6\xd29}g_\x0b\x10\x1b\xcc\xa2\xa7\xc6\xf8[q\x898\\C\nSzE\xe1\x0c\xd2*\x19\x93\xc5\x0bt\x8b%Z/\x9c&\xe4\x8b\xec\xa9\x19u\x9b\xc0/s\xb2\x88\xce\xb1\xb0]\xbd\x0c\xc6\xb7W9Y\xcc\xc0\xf9K\xf5\x12\x8e\xc6\xa2\xd9\x8a\xde0\xda\xa1'\x1a\xb6\xfe\xdbR\xb0&\x08&\xca\x8f\xfeM\xe0\x1bVUDM1o5\x0c\xfa?\xa5u\x9cv\x01L*\x0b!J01\xc9\x1eHm&\xad;\x03\xe5[\x83SI_\xa4\xb3\x12D\xa4\x04\xc7Z\xe4\x10\xd2\xc6\xae^\xc9\xcd\xfa1\x1a\xbe?i$.H\xbcS\xfe\x077VQ!\xb0=\xaf\xff%\xf9\xc4\xe5\xf9}\xde\xea\xc7\xe5S\xf964\xb1\xa8\xed\xed*'\x91\xcc\xc3\x98\x8fb\xe4\x9e$\xc8\xdc\xc0\x1e{[V\xe4\xbf=\xab\xd7\x8a\x81\xd7\x1d8I#\xd7\x83\x89Y\xc7\xa1\x9b\x98tJ\xcev\xe2\x9fc\x8fnE\xdd\x99\xc3(\xa5\xe6\x0c1\x9a\x99\x81\x87J\xffB\xa2\xe5\xaa\x9cAN\xb9\x9dy\x1a\xb3,\xa4I\x9a\xaf}m\xfc\x9ez\xec\xb2\xe4\x00j\xf0\x96wl\x9c\x06\xef\xaad\x04\x94e\x1b\xee\x05l%z\x08\x9f\x0b;\xe9\x83\xce\xca$\xf6\xe7$\xc6\xf3HQ#|\x0cI\xdbT\xbc\xb3/\x03(\xdbW'\x1f\xb4\xb0=\xd8\x1c\x1b\xff\x05\xd7B\xcb\xf84Y\xa4o\xf2\x18\x8f'\xfa\xfb{\xbf /\xfdr\xa5Q8JS+\xa4\xaa\xd4\n\x91*\xb5\x82\xafJ\xad\xb0Q\xa5V(T\xa9\x15\xe2Vj\x05\xb4C\xb7\x01\xea\xdc\x0b\xdcR=\xdd\xbf\x16\xa9\x17zsn\xc5\x11h\xdc(\xbeD%5\xe1\x86\x9eY\xab\xb4\xd0\xe8x\xd8\xa95\xe7\x8b\xb5\xd3q3(\x16\x84\xb64\xd9\xe4jR\xe4\x9c\x00E\x1dx\xf3\xea\x19\x96\xc1-\xd1g\xc1\x81\xb7\xbb$\x80\xd11\xb6vn\xd1\x06\x0c\x85O\x8c\xa5\xd0\x9b\x05\xb8\x12l\x053\xc6\xc2\x00\xac\x85\x81\x98\x0b\x15\xf6\x86~i\x90\x89\x93\x01\x1aM\x00h:\x9e\xf3\x94\x9c\x7f\xfc\x01N\xb9\"\x10\x92-\x89\xe9\xc9c\x905\xd3\xfa\x0b\x14\x93-\x14|\x1c\x9a\xac\xfd\xc8\x08\xefc\xf2<\x87\xb2p\x16\xf1\x1fV\x8cL\xaa\x15/mX\x1e\xa3\x86\x8aq\x94.\x96\xf5*\xfc$*\xa3\x7f\x937y\x99%r\x90\xfb\xbb\x9d8\xc5\x14\x9e\x945\xd4\xb1\xf3L\xb5\xb9\xc9c\x1d\x10\xb3\xd3\x08\xee\xc4\xe4\xe5^\xa2\x0c\xa9\x83bR[S\xca\xd3A\xc7\xcc\xea\x83L\xee\x15x\xcdc\xee\x98\xbc\xcaV\xa8\xa6\xe1\xb1\x8e\x86\xd3\xdeh\xf99\xe4\x984\x829c\x085\x06\xbc\x9a\x19\xd4\x9cZ\xcd9\xd4\xba\x91\xb6\xcfA\x85\xa3\x8d\xfa\xa4\xb8\x949\xb9y8\xb0\xda\xfe\xd7\xedp(T\x87C\xa1:\x1c\n\xd5\xe1P\xa8\x0e\x87\x82\x1d\x0e2\x92_||\x92\xaf\xd7\xa0\x7f!\xf9\xe2\xb2%\xf9\xc2/v\x97 Z\xc6\x1cXo\xa1\xf8Zn\xa1\xeb\xc1_\xf5\xf7\xd6\x17v\xea\xcf\xb2\xb7v\xd6/4u\x0b\x8b4Ugp\xfa\x8f;\xf7\xae\xc7\xa6\x157\xffDB\xd1\x97\x94B\xda\x94BO0\x9f9K\xff`4\xe5\x03\x9fO\x1ed\xd7\xc8 $\x17\x06\"i\\\xf4&\x0b\xfd\x92\xb0\x86e\xc6\xdbO\x9e{\xe8\xd2d\xf2\x03K\x9d\x83\x82\xae\xa5\x96\xfdG\xa9\xd6\x90B\xe9\x8e\x13\xa7~\x18%K\x96\xd5\xb8\xf4\xf8\x9f\xc7\xa5_n\xb4B\"\xc5[g\xe1G1 \x07\xbf\x8bn\x85^\xb0\xc9s\x92\x94\x1cC\x0c\xd2\xeb\xef\xef\xb5\x82(\xba\xde\xb9\x1b\x0f\x0b\xea\xd1\x9e\xe5$tF\xdc\xdb\xb0y\xff/\xbe\xefk\xb3\xa07%W\xfa/\x8e\x0dmw{S\xfe\xbb\xaa\x1a\x7f5\x07$\x8e\x1f\xebU\xfaQ\xb2CN\xfa|XK rf\xaa'|\x9d\xce\xa3\x98\xcc`z0\xb4/N\x94d\x1b\xfbTCut$\x9f\x05\xfe\xba\xf2\xe5,\xf6\x03\xb2J\xe3\x90\xe43p\x18\xea\xc0\xfc\x02J\x7f\xa9y\xab\xbc\xc8\xd0\xbeE\xceu\xdf\xee%*j\x12M\xf5k\xd5\xc1_c\x8aS\xe6\x1b\xe2T\xd8\xe28\xa0U<\x84U\x81qs\x14\x94\xdcn\xf6\x81\x13x_O^*S\xf1R\x99\x8a\x97\xcaT\xbcT\xa6\xe2\xa5\xb2a%\xc53\xca\x15\xb4\xeeb`L\xa6\x89\x9cY\xe0\xc7\xa6\xfbR.,\xfb\xf8\\X\x08\x87\xf0\x84\xb7\xef!\xebAwO\xbb\xcf\xfa@\x1a\xe8\x84\xd7v\xf0\xa4yYse\xc0{\xa7\xe6\x96\xec8%\x11iK\xfb\xa4Wmn\x19|\xc4B\xa3K\xbf$\xd2\n\xae\xe2\x8a\x8a\xa30*\xbfO\xcfg\xb075\x12\x0bGI\xe4#\xc3.\x86+a\x80`P\x02F\x18\xc0\x13\x81H\x95\xc3\xd8?\xacq]4\xa7\xbef\x96\xac\xcdc\xaa\xd3dx\xb6E\x90\x8cD\x9boB;\x14U\xa2\xb7\xa1#\xf8d\xfel\x8c\xcf\x14\xe7\xde\xa34)6k]\xfeD\xa8\x9c\xd62?\xf7\xd7z@\xe6\xb5\x16\x15\xbcf\xb6\x1e8\x1a\xc2\x1eC\xe5\xb7\x96\xf9\xe5\xea\xb9E\x9a\x8e\xcd\x003\x0ep\n\xbfq\x9d\xefYE\x1c\x0dk\n\x9c\x82o\\\xe759/\xbf\xcb\x89o\x02\xcf\x18\xf8*Z\xae\xe2h\xb9*\x1f\xa5\xa1\xd1\x81,d\xef4R\xf0\x99\xde@\xef\xed\x08\x8bg\xe2Z\x91\x92\xe4\xbfD8[\xfe\xf7\x17OC\x92\x94Qy\xe1\xfa\xdc\xe7<\x1fyu\xd9\x94\xc2\x19s\xd3\xf7\xb3\xa8(Gn\xf7\xc8\xea^[,\xa7\xd9\xe8\x1c\xdb*\xae\xcf?\x9a\x93\xdf6\xa4(\x1f\xd9\xf7~\xddBb\xfai\xc4\xccN*Wq[\xf8,\xc8\xde\x98\xd5\x8c\x0c%\n\xd5\x03}\xfbK\xd1>\x12~=\xec\x05\x1c\xc2\x92\x89\xc7z\xc09\x02V\x07\x85\xd1[\xed\xca\xaa6\xcf\xd3\xf0b\x82X`\xf0zpB\xbf\xf4\x19\xe4\x04c6f\x907#8\xec\xdf\x8e\x92\xfa\xdd(\xd1\xd5\xfc\x1a\xc3\x9c.k\xaa\xa9\xae\xb9\xd8m\xb0\xa7\xa7\xc8\xf0\xc3\x0dpW\x0d\xeb\xa3\x03Q\xb2\xf5\xe3\x88e\x070\x0d\x8a\x93\xdf\x0b\x03\xadk\x8b\x0e+? c\xf2\x82\xdfT\x8f\x9d\xee\xbc\x0b:z\xd5\xc8\x8d\xce@\xaa\x91\x13\xab\n\xa3bp\x9a\x1ej\xca\xae\xee\x8e\x86\x13\x96\x91U_P[\x87\x11\x97i\x9b\x84Q\xa9mX\xd5h1\xa0\xc19\xa6\xa0(\x13\x08\xfc$ 1H\xd6\x86u\x04D%\xb50*\xd5PF\xeck\xa4\xa9(\xd3\xe52&O\x05\x99\xd1\xef\xbc\x87\xe0<\xc2\x1ebG\xe8+u\xd5\x02\xcd\xd2\xb3\x0c\x0e\xa6\xf9X\x95\xeb\xf8 \xd6q\xd8i\xbe\xdb\xf1N\xceKq\x8c\x89L\xb4\xc0\xca\x92\xa9?`\xf4U\xe3\xf8\xbf\xd5Oo;\xf1\xad\x89\xeb\xa9(\x81\xc1\xf9Z\x81\x9d\xad\xe4\xcb\x9a}\xa9L\xea\xd4\xbb\xab\xf0.k\xc7\x9c\xd4\x87\xd1\xaay\\\xf6D\x1eq|\n\xdf8m\x02\xe0\xf6\x04\xe0\xf8\xba\xef\xfd\xfe\xbe+\xbfW\xf3\x17\xca\x1f<\xaaz\x10V\xcf\xdf\xb7\x95\x03\xdb\xa6x\xda\xe5\x97\x9b\x98y\x05\x89\xd9\xfdY\xcdLDU\xde\x10T/\xa5B\xbd\xa4\xd0\x1cQ6\xf9\xe6\xf9:\xbe\x19y%)J*\xceJ\xe1(\x83\x8c\xcbf\x02D\xab\x08<\x84\x84\xc7\x80\xd0\x9e\x9e\x9e\xafYu\xb0\xe6M\x99\xe7P\xb4\x00\x97w~\xef\xf0\x10\n\x9db=\x86C\xd8C\x8e\x0f\x93\x17\xfe\xfe\x9e\x8e\xb2\x903M\xc4+HyLY5W'\x1c\xe1fW\xd4\xb0\x1e\x8d\x9b9\xf1\xf5\x9eH\xc5?\xd7\xb1V\xa1\xd7P\x06(\x12\x9cK\x94u@\xe2\x82\xe0\xdc\xb6\x92\xf3\x17x\x0c\xb8\x0e\xce\xb1\xaa[\xfa.i\xbb\x83L\x88\xacEMc\xda\xcf\xb5)\x0d\x17\xf8\xd97\xad7\x14\xd1I\xafXvK\xb7\xe3R\xae$J\xbcE\xe2E\xc9\x82\xe4\xc7X\xe2\x7f\xe4\xe6<\xdaF\x9dg\x8d\xbe\xb7\xa0h|\x8c=\x16/\xa6\xa8\xefT\xcc\x07+\xb0\xf0K\x1e\x95\xe4E\x12_H\xf3]*\xe6EL{kf\x14\n3\xa1\xf7Lj\x19B=~\n\xf4\xcf\xb5\xa44\x99q\xaf\xf0}\xa2\x90\x90\x0d\x8bOw\xd1i]bc\x0c\xa9|\xdc\xa7C\x06\xee\x92N\xed\x0e\xf8\xe3\x0f\x08G\x0c^\xfa\xf96\x03>\x14\xedl\xe8p\xde%\x98\x89\x82`\xa6\x1d\n\xac\x82\xa3\x84=\xa7Bl\xcb\xe0\xea\x95y\xb4vYA6\xbd!\xb6\xb1\x85\x95ek9\x99\xe8\xc7\xba(\xb0\xb3\xc3J\xea\x8eUh\xa8\xa6k\x0c3+\xd9\xf8;v\x8aURc\xbe\x14^\xc2\xfc\xa8\x0c\xc9\xef\xe5\x96\x8e\xeb\xe9J\x7f\xdd+\x10\xd0\x1f\x0f\xee\xdf\x1a\xfd9\x8a\x10\xfc\xf9\x1c\xc2\x189|\x92\x06\x9bK\x96 \xe2$\x88\x15\x94\xa1\x1cB\x98\x068\x0e\x8f\x9c\x93\xe0Q\xba^\xfbI\xe8:A\x9a]\x98Sd\xc9\xa8\xd4\x07\xf3\xcc\xf0\xb8\x12R\xcd\xb4\x95\x9ck\x88\xeb9%W\xe0\xfd\xae\x0e\xce\xac\x8bK:\x8fX\xee&\xd3\x17\xd5T\xb2]\xbf'\xa3\xd2dQ\xaa\xb3\xcb+\xdb)\xc9y\xe9\xe7D](\x11P\x14CTj)\xbb\xf0\x8ezrs\xe2\x87\x8c7b\xb6q5dk$tZ\xd4\xa0V\x89A[\xc52/\x91\x0bT\xb0E\xf2)\xfd\xa0\xe6\xf7\xebP0\xa7\x7f(m\xe8\xa14\x95\x9dJ\xf4\xc9\xf4\xbe\xecX\xa2O\x1eLUqlj\n$\xbc\xd1N$\xa5\x08(\xe3&\xab?U\xd9|\\gE\xfc\x90\xe4EW$\xa5\xe2h\xe9e\x9bb\xe52T\xc3\x84\x9d\xec\xef\xc9?\x9d\xb1x\x9d\xe5\xd1\xc5\x18N\xfe\xf8o\xce\xdf\xb0zf\x9d\xa1\x08n\xc0\xdf\x9c\xbf\x8dx|\xf4\x06M\x12*V\x93\x9e\xaa{\xfbrTC\xb1Wa@\x0e$9C\xc5U\xe6\x17\x8a\x8dP94.\xc6h{\xea\x9c\x1b\xdd)\xf2HR\xe6\x11)\xa8\x90\x04{.\x16\xba\xa1\xc7i\xe6%\xe4\xbctG#/L\x132\xfa\x9a\x8f\xc2d\x8e\xc4L`6\xd6\x91\x15\xefZ\xe3\xc8\x0d\xc7p`R\xcfS\x9e\xedd\xdfP\xa1b\x8dPS\x89#\xa6\xb8(\x12\xad\x1b\xab\xff\x038\xdd\xd5\xde\xc2\x0dpf\x98?m\xcdW[N\x0b\xfa\x84\x00\x02\xbf\x0cV\xa0>Yc\x86\x11\xb8\xc2}{\xc1{XD\x89\x1f\xc7\xaa\x15V\xaf=\xbd\x98\x12%\xf3\xf8\xa1\xd5\xf8\xed*\x06`h\x0e\xf8\xd6\x89GP\xae\xf2\xf4\x8c\xbb\x07u/\xc9<\xfc\x97\xfa/\xfaA\x8e\x8a\xf34\xbc\x90\xa5\xd6\xa1 \xcez\x13\x97Q\xe6\xe7\xe5\xcdE\x9a\xaf'\xa1_\xfa\xcc\xd1\nG\xe6\xbc|q\xfc\x9a\xfd\xdd\xdd\xbb\x1aNa\xa9\xd9\x8f\xc0-|:\xa7\x8e\xb9f_\x82q}\xaa\xfdy:\xc6\x8c\x1c\xf2\xfd\xc9&\x057\xe7\xc51\xf9\x8d\xefN\xdas\xf7\x14\x0e\xe1\xac\xbb;\x97\xc6\xdd |\xf4G\xfd\x8dw\xca7\xacq\xfb\x01\xcf\xf5qd\xdc\x82\xc0\xb7\xe1\x91v\x1b\x02\x9e\x08|\x0f>q0h>J\x8a\xd2O\x02\x92.j\xae\xdb{\x12\xa1\xb0\xd0\xda\xa0\xe7t\x83\x1e\xfe\xffq\x83z\x89\xbf&\xf4\xef\xaf\xcb\x8b\x8c\x1c\xb2{\xf4'\xdf\xb9(P\xf7\xde5\xeem\x90\xe25X\xedq\x10\x98\xb4?F\x8c\x91\xdb\x05m6\x9f\x1e\x9f\xe8\xb5\x87\xc1\xfcg\x8d=\x7f\xa6\xdf\xf3`\xd94\xf0}x!\xf6\xfe|\xe8\xabe\x0f\x1b\x94\xb7#E\xb5 \x84\x97\x13t\x07uo\xfe\xeb_\xc9\xcd\xe5\x18\x1c\xa7\xab\xd8\xe3\xe3/e\xe5\xac\xdb\x1c\x8d\xcf\xb9\x93[\x8aJz\x9b\x8f'\xc4^7F\xefK\xcc\xca\x97\x98\x95O\x11\xb32 Z%B\x95c\xb0\"k\xab\x9a\xd7\x0dp\xab\xcf\x0b\xf1#29\xd5 c\xa0.K\x1b\xb3\x072\xbeD\xc1/\xa0#\\U_\xb0\x1e\x19\xe2J~\x0dCiZ>\x98\x97\xad\xe3-Q\xde\x148\x01\n\xeb\x1f305\xd6\xff\x9aV\xf0n\xba\xa7\xb1\xd0\x17\x8e\x82H\x9b\xf8\x10\xebr\xdd*p\xcc\xa3\xdb\x1b\xb3x\xfd\xf2c\xff\x00\xca7\xbd\xd2\xad\xea\xbc~_\x91\xf64\xec\xa6\x993;\xae\xd4N+\xbcW\xc3\x95h\xc6\x94\xa3M\x1d\x17o\xc5T\x0e\xf2\x98wF[\x89\xc5\\\xe7[Q\x8c\xdb\xa8\xf6R\x16\x8a\xe1d\x16E\x92\x01u\xfcL\xebdY\xb2\x9b\xf7\xce\xa0Z`\x85\xbd\x95 \xb6%\xbbM[jw\x05\xdf\xf5\x8c\xaf\xf9\xc2\xf7} \xbe\xef\xcfg`\xfa\x14gF\xcd\"\x99\xce\x0d\xcb\xb0\x82|@\x90\x00s\xb1\xa8\xc2\x17\xf91\xac\xd1\x96D\xf8\x02'\xf6\xe6\xd8\xd8\x82\x04\x9b<*/\x1e\xd3}\x1d\x95\xa6Z\xc7t+\xe5\xc6x\xdf\x98A\xf9\x9br\x95\xe6\xd1\xbf\xc9\xf7%\xa5\xb0{\xdd@\xb6\xe6\x15\xb0W\xc4Qx\x05\xf60\x8c\xd4\xe5\xc5&\xff\xf8\x03\xfd\x9d\xae\xc4\xea\xc5\xbax\x890\xda\xcd\xb0\x96\x8a+\x89\xa3m\xce\x86z\"\x02m\xd7\x9a\\\x91>\x84\x94u\\\x9b\xdf\xaa\xb1\xad\xd4\xc6\xae\xcaAX\xb7z<~\xbaJq\xf5\x1f\x9b\xeb\xea\x93zo\xc8\xe3T\x03\xb7ht4P\x1f\xad\xd7\xd9wC\x15Xj\xad6\xd9~\xf8\x80\xd2\x88\xfbP\x89*\xf4\xa1\xc9\x87\n\x1a\xf94\xd2\xe45\xbe\xcchD\xfb\x9e+n\xac\xd3\x90\xc4\x942\x8da\x8f\x07\xaaz\xe4<\xf3\x93\x90\x84#\xa1\xea0\xb8\xc6\n\xf8Y\xff\x13\n\n\xd0\xdf\xc3\xf2\xe9\xdd\x98\xb4&\x18iW\xb5&\x87\x89\x11&\x10S\xc8\xe3\xc8\x94\x1a*S\xb8n=ZE\x9f\xba-\xcd F\x99[\xac\xfeK\xee$\xd8\x86\xeaOI7\x9a\xf7\xc3\xf0^6\x11\xbc\x1f\x8e\x0d[E!9&\xf1\xe2Er\x84\xd3j\xe2\xc5\xf4+\x0d\x15\x1bV\xa1\xb5B\xe7C\xf7D\xd2\x89\x07\xac\xf6F\xdes\x0c\x85!\x1a\x90\x0f\xad\xfd\x11s\x80N\xf0\xf5\x94T\xa3\x19\xb4cw\xd8\xaa\xb6\xf3\xf0 \xb8z\xd4\x82\x98p\x08\x991\x956P\x98|\xaa\xe8\xcd\xfe\xfc\xb2U\xe8b\xae.\xdcl\x88F'\xc1\x0c \xea\xf2\xb6\x0d\xb5\xde*\x8a\xc3\x9c$\x943\xfa(M\xebB\x0d\xcd\x0d\xc9\xc2\xcc\xaasM\xc3Q\xdaxi\x05\x9b\xbc@\xa5[\x96F\x892_\x1c\xf4\xb0\xb7\xba\xcb$\xe7?\xed\xe0v\x1fX\xab\x92\x04%\xaa\x1368\x8c\x8b\x95\xed\x12\x1eP\xe4\xd4\xc7\xa0\"|\x17S\xf6\xcb\xbf Ar\x985a\xbb\x87\xa7\x91J\xf5\x85\x02\x990\xb0h\x1d\xd1\x92\xe8\xb5\xee\xc1\xee\xfc\xeey\xde\xfb\x0e\x89k\xb0C\x1d\xaf\x0f$O\\\xf8i=\x10GO\x9b(v\xdc \xbb\x14\x87~\xbf\x1e\xd2\xf83\xf0\xf9\xbb\x96*\xc11\xfb\xa10\xdc_g\xe5\xe0\xe7!\xc1\xf8A\x19m\xc9k\x7f>\xc8VZ\x99aC\xbf\xf4\x0bR\xa2G\x8e\xfc\xc8\xb6\x92Q\xaa^\xa8\xd5\x12\xbd\xdb\x97\x13JP\x13\x98,\xa2\xa5\x02\x8a\x89%\x86\xc0\xce\x00\x13QW\xb9\x86\x9fS\n\xfc\n\xf9\xaa(Y*E\x18G\xc4\xef#\x8b\x18\xa0k\x1b\x12\xef\xc6\x0d\x97~\xba\x02\xb4HS\xd4\x98\xc1\x98R\xf9\xaa\x8d\x99\xc4\x83\xefc\x0b/W\xc9j7\xb2\xce\xb0-^\xffIg\xafq8\xb5\xe0ly\xef\xc6XG\xee\xc4\xd1\x90\xefG%Y#\x9fY\xd3\x9a\xc3\xc3ff\x9d\xc6\xd9\xf2\x10\x1c\xbe\xb3x^\x96\xc1}\xd3\x07\xadt\xba\x16G\xc9;U\x860\xa8\x92\xd9\xf0$8\x8e9\x9dJ[~\xa8\x86\xa5\x1aDD\xc7{\x14F%`\x8c)\xcb\xbe\xc1\x1a\xe1wX\x154\x8dqd\xd7\xa5\xe0\xe7\xc8\xf5Z\x08\xda\xb3\x88'\xe7i5n\xbbBlTW\xb6>l\xc7\xd6\xb9P\xcc\xb1Y<\x92\xcb\x8c\xe8_}\x05\xe9\x18\x8c\xcb\xa0\xa9\x84\xa65\x071b\xab\xad\x94\xd2.M\xa2\xa1\xf55 \xd5\xa6;h\x1d\x06\xda\xc4'\xa4\xa6\x993\xd0\x14\xb3\x14\x14Y\x97\xef\xb4\xf7\xc0(1~\xdef\xa4\x05\x15\xb1z\x12S\xca\x9f\xf4\xa4\xb2H\xbc\"\x13\xbe\x162\xa9l\xc3\x1f\xf4\xda(\xf8\x83\x9eT\x16K\x0dL(\xfe\xb8qS,W\x1b\x98\x16\x1f_<\xcbl\xc53\xbd\xcfn>\x06\xbf\x7f\x92wy\xdfk\xe3\xb3+\x92\x84ozb\xa2\xc2g7\xed\x8b\x8az\x9f\xdd\xbc6X\x1d\xb6\xb7\x8e\x8aG\xcde\x89\xe3\x01\xabE\xc92\xca\x17\xab\xf4\xcc=a\x94\xb3p\xc6@\xde\xd2o\xf7\xe9\xc0\x989Q\x8c\xbb\xe3\xa5+f\xe9\x0dSH\x85\x1a\xdfN\xa8\xb9\xe6\xbc\xbb\x0dc\x9c6\xf8V\xdd!\x1c\x19B\x9f\x9a\xda\xf8\xe6\x92V\xc7\x05J\xb2Q\xdb\xdb\xb7\x03\xe2E\xc5\xf1*=K\x9aK\xdf\x80\xa6\x1c\xc0[\xccB\xa0?\xa0\xed8\x12\xa6\"\x9d\xa7\xe7J\xdeX\xd5L:\xeejX~o\xa9\xfbu=h\x1e\xb4\xc6\xe3\x93\x84Z\x0f\x8e\x90\x9d\xae\x9ax\xb5ZYY2'P\xf6\xa7\xa9]~l\x97]C\x16\xde\xa7T\xa3\x9f\xf5\x06v<\xabc\xe3\x19\x9d\xe1]\xc3\x19\xed\xea\x1e\x82\xf2\x10\x07\xbe\xad\xd0^\xe2\xf06)g\n%\xc6\x9c\x89^\xcc\xa0c\x84\x16G5\xe7\x02\xfc\xa2\x88\x96h\x931\xeb,\xaa\xe3\x806<\xfd\x1aJ\xf8\xa6w*|\x0d%\xa5\xfcj4\xda\xf2<6\xf5\xa1Pj\x82\xed\xaa&s:\xb4d$\xba]%\xfd\xf6V~\xf1\xe2,\x11l\x0c\xd3\x16b\x04\x02\xeeZr\x92\xd3\x13(9\xc9\xdf\xdaF\xc2B\xe3x\xef\xe3D\x1f\x01S\x1bw\x89\xea\xc4&\xda\xc3\x06\x9aCN\xd8\x81\x9a\xc07PV\xb3\x9b\xe8g\x17\x1a+\\\x9e$\x860\xc6\xdc#\xc9fMr\x7f\x8e\xe7a\xebO,&1\xc6\x9a\x88t\xd3o\x04\xd0\xde\xfe\x18x\xf64\xba$X8\xd1\xcd\xbd\xb3<*+\x88\xd1X\xc1d\x12\xfa\xc1w\xe4B\x1a!\".\xdb\xa0<\xa8\x17\xaa\x9a\xff\x92\x87\x9fh\xa6\xa8\xe27(\xeb\xe66P\x89\xee=^ \x12\xd3B\xe5\xbd\x9c\x84\xe2\xea\xf7\xe5\xbd;\xeao\xb3\xc8\xa8\x8c\xae\xd0\"2\xd5\xb9\xb2\xe2U\x80G>\xee\xb9\xa4\x19\x92Z\x8eD$dB\xce\xe0\xf5EF\x8e\xf2<\xcd]\xe7\x91\x9f$i t\xcf\x80\xcf\x8e\x18\xf0\x0b\xf0\xab\xd6T\x825g\xcbT \xf8\xa014c\x87At\x9a4{\xf9\x8a,HN\x92@t\x956\x08+\xbfH\xfeV\xc2\x9c\x90\x04\xd0\xe5\xd4\x8f\xa3\x82\x840\x81b\x93\x91\xdc\x1d\xb5 \xe8\xb0H\xa8+\xb9\x0f\xf5\xfc\xee\x95h\x97N\x11m\x1d\xd8;\xc4\xcc\x9dt\xf2\x90\xc0V\x13\xd2z\xc2\x98}9\x8e@c\x9e\xdc\xa8\xcd\xba\xf2\xcd\xb1$\xe5K\x81|/\x16nd\xe9\x1e\x0dR\x0c\x1c\x82'\x18\xa5.\x1f\xd2W_\xb1\xc21\xa8\x84V\xa0\xcd1\x9dlz\xe0\xe6\xa4((\xf6\xae7E $*W$\x879a\x1fH\xf3\x06\x1e\x8d\x81\xe2\x99\x037\xaa\x86\x14\xabB\xea\xedX\x9fQ\x8c\x87q\xb1s\xad\xfd\xaaa\x97\xd2\xa4(\xf3\x0d\xe5\xcdL\x96o\xbb\xf8\x8c\x9a2\xea\x8b'\xd0K\xd0\xc2\x996b\x1fX7+\xda*M\xc9'.\x05M\x1cq\x87 \x97\xcfT\xd1\xc2(x\x08\xd2\xfb\x1c7f(\xb9\n\xb4<\x94\x8a)n4\x86\xa62b\x0c)\xbd\xa5-\xd7P\xac\xd2M\x1cV\xef\xbc\xc1l\xa5\x96\x95\x03\xb4\x019\x82\xf5\xc0\xed\xa1\x9d\xd7T\"\xaf\xc2\xb70\xa5s\xd5H\xeeY\xf3 \xd3\xb7\xf0\xb0\xfd\xe7\xacg\x1a\xef^Q+\x01;\xdd\xd7\xaa\x02P\xd0\xa03\xcc\x9f\x81\xa5p}\x910\x1f\x80\x9a$\xbc#\x17\x85\x9b#WNZu(F#\x8flI~Q\xb3\x8b\xdaC\xae\xd1b\xe2E\x05\xf2Ac\xb6y\xb2B\xc9\x0c\x01\xe2\x14\x1e\xfd\xedn\xa2\xb9I\xd1\xcf\x94\x9e\x03\xfd\xeeiW\x12:\xddKO\xa8\x9c\x1c\x9d\x10m\xc7\xe4{\xa0\x8f\xb4\x94S\xef\x18\x06\xbb\xc73\xf1\x9e\xae\xd7\x1b\xdc\xa5\xad$\xc3p\x08\xd1\x18H\x83\x89\x8f4\xbc\x8cNa\x06R\xa5\x19\xb4\x07\xf2\x9e%\x88t\xf7E\xdd\x1d|r\xdd\xb4z\xa14WR\xca\x9f\xdc\xef)\xe9\"\xfe\xa4\xa7\xef\xf3\xf9\x83\x9e\xbeo\xc3\x1f\xf4>U\xf0\x07=}_\xcc\x1f\xf4\xf4}\x81T\xdf\xb7@\xf0\xa0s7\xe3\x1f\xb9\xd7t*\x08\xd5\x8a\xc0\xf0\xe3+\x02\xf5e\x8c\x86(\x02\x15\xc1\xfb=\x97\x0c\xad\"0\x96*\x02\x83J\x11\x18\x8f\xc68\xd7\xfb_\xc3\x02\xbe\x81\xf8kXP\x81%8Y\xb4\x15\x81\x0b;E`a\xab\x08\x8c\xec\x15\x81\x01W\x04.yd\xb2\xff=\xaf\xa9n#\xc7\xf1>\n\xdd_\xcb\xaa\xe0E\xc5\x8b\xef\x8eoa\x01\x87\x93\xdak\xa0p\xc6<\x1e\xc7/\x1cz\xae\x9c8a\x1d1\xe5\xbc\xed\xb5\xf3\x9e\xf7\xeeQ\xc7\x13l@\xff\x1c\xe8\xab\x86\xf0\xb3,\x11\xde\x15h@\x15\x8aN\xce\x8f4\xe7G\xbc\xc0\x93\x1b\xbe\"E\x1aoIx\xbc\x99\x979!\xeeI\xb50\x1d\x85\xaed\x85\\\xbar\xf4\x900\xa5\x17(Z\nU\xdb\xf4\x02\xb1T\xa1\xba\xf9\x04\nU\xbd*\xd5F\xe5\xca\xb2\x1d:\xfaa3<\xcf\xfd\x80\xa0\x8d\x18\xb8#\xb9\xaa=F\xb8,\xa9\x90\x1dE\xb4\xebb\x94$$\x9f\x18z\xa7l\n\x1d&\xad\xdb\xda\x0d\xe1\x9c\x12k' z}\xa4\x99#\xa7\xcc\xb5\x9d\xb1\xcb|\x96\xc6\x98\xf8\xec/w\xef\xde5h\\\x17iR\x1e\xb3o:Q\xe9\xc7Q\xb0C\x9a4\xf5`\xc2\xfa\x90jp\x893GG\x99\x1a/\xa9`^h\xa7(\xdd\xe4\x01\x99\xc1\x91\xbc\xbb\xa3Q\x8d\x80\xe7\x94H\x9f\x8b<\xd0\xe7J\xc3\xb4\x95\x0fw\xc7i\xcf\xa2\x8e\x1b\x0bi2\xd9\xae\xd1=\xe9dj\x80\xa2\xf2\xe4\xa9\x8b\xa7\x8e/\xd8\xf2,'\x81_\xea\x99X\xe0\x02\xe6\nm\xa9^T\xa0I\xf5\x1d~\xe8\x9d\xc7\xad&\x85\x9b\x1b>\x91)\xf3\x1f5\xaf-\xe5\xdc\x03?\xfe.\x8e\x96\xc9\x0c\x9c2\xcd\x0c\xf8I\xaf\x8cr\xff\xc9\xf2\x15\xf7\x9c\xd8\xf7\x0e\xc8\xda\xc03\x1amQ,\x026\xf3(\xfe\xff\x82>\x19p\x08\xce<\x8dC=n\xeaw'\x08\xad\x84&\x0d\x04\xb4I\xca\x86G;Vk\xa5\xde~\xa6=\xa3\xef\x17\xa7\x1c\x99\xee\xfb9\xe7dv'\xcc`K\xa3\xa0A\xa7r\xdd\xb0AIy\x80\x1f<\x7f\xd7s:\xf6sc\xee\xb1\x0c\x81w\xef\xb9\xaa\xcb/\xc7\xddT\x00\x16(\xc7\x03\xbd\xd0V\x99\xc0\x0dp\xf0WN\x7f\x9d\xd2_\xbe\xae'F7\x07!\x0f\x1b-\xf1m\xbf\x00\x83\xd5\xab!\x9b\xf1:\x84\x0d\xcd\x00\x86+\x9a\xdb\xe2\x0e\x02\x81\xa1%\xeeIa\xf0 \xe0Q\xdc\x0b\xb8\xa1\xb3\xa8\x8dd\xd62\xf6\xa46\xa8U\x87\xcc\x99\xf1\xb8\xe7'\xe4\xff\xfc?\xa7\xfdV\xf9\xb1\x0f\xa4\xc4\xea@J\xf9\x81\xa4&\xb2\x18\x8dw>\xe1%b\xbd\"\x8e\x02B{s\xa0,\x08+\xae-/\n\x99\xc2CH\xbd2\xfd\xf1\xb8\xfa\x81S\x9a\xf2 \xb2\x8a\x80\xbc\x0c\x19\x07\xb1\xaf,\x1cU\xac\xc9\x074\x99\xb3{\xf7\xee\xe9i\x07h\xe9\x07\xd8\x1c \x0c\x97\x92K\x92G\x18:\xc6\xc1d\x12l\x86\xda\xf1\xfc\xf3U\xbb\x10\xd4\xbc\xaal\x7f\x1e\xd3\x13\xefX0\x816;\xd5f\xce\x9do\xe0\xef\xf0\xed\xa59]\xc9Q`\"\xd75\xa9\xd6EuZ\xd3\xe9>\x8d\x1e\xaa\x8c\xb5$\xd3\x82D\x1f\xabA\x8c\xe4\x19Is\xb5\xb2\xbf^\xe5z\xa2\x0e\x0c&\xdf\xda\xae\xe8\xaf\x1d\x8am\x88\x197\x91,\x1b\x1f)\xa4W\x9a\xd8\xed+E3\xb0F5\x18\x82n G9T@\xa2\x89\xd2\xdc\x8c\x19\xd5\xa0\x81n\x06\xa7 #\xca\x01(\x92\xad@W\xda\xfc\xe9*\xd1\x11U\xaa\x03\xd0\xf1\xa7/\xe8\xd8\xb8.\x89\x8eL\x9f\xfd\x99\xa3\xe3\xab\xabD\xc7$-\x07 \xa3\x01\xad>\xbf#\x11\x0d\x14Wv\x02\xbe\xba\xec XW\xff\xba\x94 \xa0\xaf\x08\x0e\xe2\xb4\xd0\x94K}\xef\xec\xe0G\x98\x19\xfd\x08\x99\xe1\xee\xba9Pe\xca\xcc\x90\x99\xd4M*\xe2O\xa41\xe4\x99*\x86^z\x971\xa8\xdc\xbc\xac\xdc\xc6\xa0\xf2\xf42\xbbR\x01W\xe1G\x83E\xffd&\xf4\xb7^\x94\x84\xe4\xfc\xc5\xc2\x95\xa4\x12j^\xa6\xd8\xa0%\xcf\xeci\xe1\xfa\x03\xdci\xac\x1c\xe0\xd6\x03\xdcw\xcc&y(p\xe7\xb1\xd2u\xc4\x81h\x02?\x83C\xd8R\xd2~\xb98\x17\xd8\xc5\xbb\x02\xe0\n\"l`wg\x06`\xedo/\x13\xe0d\xd5GK;3\xe8\xe7C\x1b\x9d\x0b\xb5\xeb\x82!\xc4\xaf\xf6L\xf0\xe1\x9bC\xd8\x18\xc8L\xbf\xc2\xd3\x89\xe7yo\xb5#pN\x9c1\xac\x85\xdem\xbd\x9b\xae\x1b:\xfa\xeef\x90\xa9Y\xdf\x0d\xd6:o\xa8\xcc\xb5:\xbd7\x98q\xc1\x18\x97\x05\x95\xe2\xb96\xe2\x98\xfbF\x8f\xd0\x7fX\xaa\xab)\xec\xcf~l\xb4R\nX\xceB\xc9+\x1d\x8aK\x91\xcb\x8a=\xaad\xce\x0c\x1e\xee\x1ej+\x0c\xfb\x1a\x13&m\xa9B\xa9K\xc5\x1b\xb6v\xa3\xa0\xda6C4\x11\x01=\xd4\xfc\x12\xe9\x8c\xc1>\xa51\xb4\xa4\xd8\x80K\xb1V\x078\x0bvN\xb4\x9ex\xd0\x10f\x0d\\\x87\x9dh\x0e\xb5\xe8\xeb\x1bU\x1fcpZ\xf17\xad\xe7\xbd\xbb\x1dy\x14o}\xb6\xb1mr\xc93UI\x9e\x91J\xf2\xf4U\x92\xe7F%y\x16*\xc9S]\xad \xeb\xc5qRy\xd4\xcd\xea0\x9c\xe9\xfe\xe7\"\x80\xde\x9d\xd3\xff]?\x19TR\x14\xa1/\xf4)e\xd0\xf4\x03\xc8\xa0;\xe6\xf8\x87\xeb\"\x83\xdaH\x89\xc9@i5\xddAZ5\xcb\x8a\xfe0Yqc+\xda\x16\x18D\xdb\x0d\x15\xd1{\x03\xb0d\xc4{\xe8\x9f\\E\xa4\x18J\x07\xa0\x06S\x9f\x0d$n\xc4yP\x81\xce\xc2K\x8d\x83/\xd2|\xedk\x95\xb6\xc0\xb7#\x7f\xe1|m\x94\xaa\xb654F\xaa\x1a\xc0\xd7\xd2 \x15\x9f\xfec\xc8\xa7\xb1\x1c\x1c|\x03\\\xa8d\xe1vKR\xd6\x0bG\xf7\xb6\xfeE\x94,\xafL\xf2\xc6\xa9\x19C%\x81\xf3\x95\xb8\x02\x11\x9cw\xf1\xa7\xb4\xdc\xb9\x97\x17\xde\xca/\xcc-\xe9\xe7\xeb\x14\x8fe\x18\x83i.)Y<_\xc7\xe8\xfa\xb7\xfa\x0f\xd9\x13vS\x07;m\x0c\xe3\x84\x83\x81\xf1h\xae\xbd\xf3?\xff\x8f\xfe\xcf\xc1\x14\xe2\xce\x0c\x9c1\x1c\x97y\x94,\xddT\xe7M\xdaL\x94T!\xe8Vw\xe6\x9e\x99&\x83K\xaa[\x03\xa7\xdf\xf2II4=\xbc\x9c\xc2\xcb\\\xfa\xeb:(\xbc\xc6Pz\xe2}I <}\x86\xa7k\x91\xe0I\x14Qj\x8d\xc3&\xd3\x13?\x1e\xfa\xd8\x92T\x8f\x7f\xf6%*\xd9\xb4z\x8c\x87\xc0\x15ef\xe2{\xb2\x97\x0d\xc9*\x05S\xd9\xd9yI3W\x92\x1c\xf9\xa2k\x80|}<\x8be:\xd5\x94?\xe8\xe9T#\xfe\xa0\xa7S\xf5\xf9\x83\x9eNu\xc3\x1f\xf4t\xaa\x05\x7f\xd0B\xf2X\x8d\xe4\xf1\xc7G\xf2\xe0\x8a\xb2\x14\xa5*\x05f\xcf\xbbF\xa6\xc0\xcc\x87+0\x95Y\x8a6R\xc5edR\\~\xb2,Ei\xf2:\xbfH7%\xa6\xdfV\x03'\x1c\xf8\x91\x9f\x04$6\x00\xe7\xcc\xab%\xf1\xe71 \xb5\x01\xfe\x86\xba\xdd\xea\xb3\xb1U\xa8<\xbf\x98\xa4\x1buT\xb7\xb6R\xfb|S\x96\xf6Y\xd1\x9dy\x99\x00o\xef\xf4\x94\xfe\x11\xe0\x84\xd8\x147\x97\x1f\xcb\x94\x0fd\x93\x8aa]\x1f\xaa\x9f6\x1dT\xd4\xfc\x1b\x83\xf3:\xbf\x80\xa8\x84tS\x82\xccdfp\xdd\xd4\x17\xf7\xaeX#V\x12\xaak?i\xe1\xe7\x0c\x9e\xf0\x1d\xd0\xa8\x86\xd6\x01o`\xa8\x19\x9c\xe3\xe8\x0c\xf6jc!&\xc8\xa8\x0f\x95\xebYp\xfc\xcb\xa1\xf2\xe5P\xb9\xbe\x87\xca\xfc\"\xf3\x0bC\x91\x16\xe2E\xc5\xf1\x99\xbf\\\x92\xfc\xc0t\x94\xb0\\?\x1a\x12\x86P~\\\xa4\xc7\xab\xf4L{\xe2\x94\xba\xc3\xa0\x19XP\x8f\xd6\x0bVQ\x1c\xe6$A\xa1\x0e\xcb\xfc\x98?bG\xa6\xb7$/\xa24\x99d\xb9\xbf\\\xfb\xca\x13,\x1d\x7f\x88\xe6NO\xd7\xa4(\xfc%\x01\xc5\xfd\xc9\xc4_\xcf\xa3\xe5&\xdd\xa8\x0b~X\xcd\xa5\x12hu\xab\x0e\x0ey\x83\xb4\x18\xca\x14\x18\xc6\xe2\n@]\xea\x06\x13\xc7\xa8>\x94\x99\xdb\n\xd2\x90\xd4\xad\x15\x0c\xf5X\"V? \xa9\xa4a\xf9j\x9a\x91\xc4\xcf\"\xf6\xea\"\"qXP6 IK\x98\x13\xc8rR\x90\xa4\xc4\x8a\xd4+\x02\x85\xbf&\xc0\xf1\x1c\xd2\x1c^d$\xf9\xee\xe5\xd3\xc6\xb8\xeeY\x8e\xdc9\xdedY\x9a\x97$\x14\x0b*z\xe7\xe7d\xc0\xf8\xf8\xd4\xa0\xf0\xf57\xe7\xc0\xdbw\xfeV\xcdR\xb9J\x0b\x02\xe5\xca/a\xed\x97\xc1j\xc0g\xf9\xb4\xcd\xe0\x96\xb7\xef%l\xf6\xdcE\x9a\x039\xf7\xd7YL\xc6\xbb~k\x1f\xbf5\xf2\x1c\x11\xd3BI\xb0\xc5\x16\xd5\xee\xf3\x0f\xb0\xdf\xae\xdf\xf6^GE\x11%\xcb\xcfgs;\xafWt\x87\xa5\xdb($a\xe3u\x08SR`\xad\xdd\"#A\xb4\xb8\x00\x9f\x1eoQg'X\xef$\xbe#\xa3$\x8c\x02\xbf$\xd5\xd7$\x1b\xb9\xdd\x00|\xd9\x83\x97\x11\x10Z5I\xed\x85\x04q\xf2\xcb<\x0e\xc5\xa6\x96=c|\xca\xe7\xc7\xfd_c\xd5\xe5\xe0\xdc\xf4l\x97\x0c\xd48\xae\xfd8\xae0Q \x96\xe5\xf2\x9cm\x12\x9a\xd9u\xb7\x03\x07\x13\xb6\xe3\x7f\xafY\x92v\x8a\xa0\x8f \xc9\x9eE\xc9\xbb\xcf]\xbd\xdd\x18\x87\x0d\xb2pq]\xa9\xde\x96F/1\xe1\xa0$\xe7\xe50$\xf3\x8d\xb8\x93\xa4\xa8\xe1\x96\x88V\xb5N\x05\x1e\x1a<5\xa11\xd9^\x96\x93-I\xca\xc7\xacG\xae\x84\x92*\xf3\x9b\xae\xb0\xa2[\x89\x15\xddn\xb2\xf4N\x0c\xb4\x8b\xd9&=>\xdbT\xe9g\xa9n\x1f\xe3j\xf7\x1d\x89)\xb6\xb9\xb8+F\xacLk\x0b\xa1s=B\xe7\xed\x19\x94O\x86R\x8a\xe6k\x1b\xd9\xb0RJ UU\xc1\xf3u\x9c\x143pVe\x99\xcdn\xde<;;\xf3\xcenyi\xbe\xbcy\xb0\xbf\xbf\x7f\x13_\x93\xbf\xf4\xcf8J\xdeI\xdf\x9c>x\xf0\xe0&\x16 \x94\xbc\xabM\xf0\x93\xa5\x05rc3p\xfcy\x91\xc6\x1be\xf9{^\x05QQ\xbcF\x94?\xdc\xef\xa3\x7f\x17\x99\xd5\xd3J\x16\x85\xc5\xbc^\xac\xe7i,\x9d\xdamD\xce\xbeO\xcfg\xe0\xec\xc3>\x1c\xd0\xff\x93\x0c\x06\x0bNm\x928\x0d\xdeu\xd3\xd3\xe9z\x97\xb1<\xe0\x12\xa4\x9b\x81\xf3|z\xc7\xbb\x0f\xf7\x7f\x98\xde\xfe\xf9\x8ew\xf7\xd1\xf46\x1cx\xf7\xf6o\xc1\xf4\xc0\xbb{\xf7\x0eLa\xba\x0fS\xb8\xe7\xdd\xbau\x1b\xa6p\x97?\xbd\x0bw\xbc\xbb?\xdf]\x1dl'\xde\xfd\xfd\xe9\xa3\xfbp\xcb\xbbw\xe76\xdc\xf7\xee=\xb8\x07\xb7\xe8K\xb7\x82\xa9w\xb0\x7f\x8b\x0e\x07\xf0\xd9\x01\x1cx\xd3\x07\x0f~\xbe\xff\xc3\xed`\xe2\xdd\xb9s\x0b\xf6'S\xf0\xee\xde\xbe;\x99\xc2\x14\x1fM\xef\x05\xfb\xe0\xdd\xb9\xfd\xc0\xbb}p\x9f\xde\xbb\xf5\xc0{p\x87>\xbd\xb5\x7f/\xa60\xf7\xbc[\xf7\xef=\xba\xe3\xdd\xbdw\x00\xd3\xfb\xde\xfd\xbbS\xb8\xeb\xdd\xb9\x03\xd3\x07p\xcf\x9b\xc2\xf4\xc1\xea\x8ew?\xa0\x9f\x80}\x98\xd2\xcfL\xe8W`J\xbf3\xa9>swB\xbf\x13xw\x0enO\xbc\xe9\xdd{\xde\x83;\xb7&\xde\xbd;\xec\x07m\xee\xee\xcf\x0fh\x97\x1eM\xef\xc1}\xdaG\x98\xde\xf5n\xdd9\x80\xfb\xc0&\xec\xdf\x9d\xf9\x1f\x8d>\xf8\xca_\x9bu\xff\x93\xac\xe0\xf3\xe9\x01\xdc\xff\xe1\xfe\xcfw\x10l\x10\n\x7f\x82\xd5\x97\xe4\xb9\xb8\xc4\xe2\xdf\xf6n\xdd\xbe\x0f\xd3\xdb\xde\xfd\xdb\x0f\x82\x89w\xfb\xee\x03\xfa\xff\x93\xa9wp ~\xdd}p\x0f\xf6\x9fQ4\x98z\xf7\xa7\x0f\xe2\xc9\x81w\xf7\xce\x94\n`\x07\xdaW\xf0Q\xe3\x1f\x04\xa0\x98B\x1f\xc7\x07\xde\xbd;\xf7'\xb7\xbc\xe9\x9d \xfd\xf9\x00\x7f\x1e\x04\xb2\x97\xee\x8b\x97\xaa\xdb\x80\xb7\xc5\xcf\xaa\x83\xf7\xbd\xe9\xfd[1vor\xcb\xdb\xbf5\x0dto\x80\xe8z\xf5\x9ca\x1a\xed\x1d\xf6\x89b\xc2\xf4\x0e]k\xf1;P\xbe\xf2)0AY,\xf7\x12\xf8p\xcb;\xb8\x03\xd3\xfdgw\xbd\xe9\xfe\x038\xf0\xee\xdc\x0f&\xde\xc1\xdd\xfb\x13\xef\xe0\x1e\xffqo\x1f\x17\xf7\xc1\xbd\x07\xe2\x81wo\x7f\x8a\xff}p\xf7\x01\xec\xc7\xf7\xbc\xfb\xb7\xe0\x9e\xf7`\xff~@!\xbc\x83{S\xfc\xef\xbd}:[\xf4\xc5x\xd2\x80\x99\x08 \xfa\xe9)\xb6\x83\xdf\x11\xed\xd2\x15\xec4\xfcL\xf4\xf3\xd3\xce\xfa\xa4\x1fyy\x89\xa9\xbf\xe7\xdd\x9e\xde\x07\x9c\xf8\xc0;\xb8w0\x11\x93\xc6~<\xb8\xf7\x00\xf6\x0b\x9c\xcc{\xfbS\x9c\xc8\xbb8\x91\x0f\xf6\xef\x03\x9d\xce\x00\x97@\xcc\x14\xfb\x81/q\xa0I\x05\xd4XQ\xfc\x14N8[\x81~\x93\xb8\xf3\xe9t\xc7\xd8\xc1\xc9=oz{\xfa\x81\xe6\xfd6\x1c\xdcV\xcd;/\xcbqe\xd3\xfd\x00\xeemo\xffp\xc7\xbb\x7f+\xbe\xe5!)\xba\xf3\xe0\xd9}\xb8\x1bO\xee\x02\xfb\xdf\xd4\xbb=\x9d\xd0\x7f\x9eQ(\x98\xde\xfa\xe1`\xfa\xf3\xbdO0t\x16\xf1~e#\xdf\x87\xe9\xfd\xd5\xed\xed\xe4`5\xb9\xbd=\xf8\xf7\xf3[pw{\xb0\x9a\xde\xff\xf9\xee\x0f\xb7\xfe\xbd\xbe\x05\xf7V\xd3\x83\xed\xe4\xe0\x87\xbb\xdb\xff\x8f\xbdw[r\xe4F\x16\x04\xdf\xfb+\x90l\x9d*\xb2x\xc9d\xd6E\x123\xb3\xb2\xd5j\xe9\xb4\xd6T\xdd2\xa9\xfa\xcc\xce\x90\xacj0\x08\x92\xa1\x8c\x9b\x10\x08ff 5\xd6\x0fk\xfb\x03\xbb\x0f;f\xbb/\xfb0k\xf3\xb2f\xfb\x0b\xf3)\xfd%kp\x07\x107D0\x98U\xea\xd3\xe7LS\xb2\xca\x08\x04.\x0e\xc0\xe1\xeep8\xdc\xcf\xeb\x9d\x1d|\x1c\xc5\x84Q\x18D\xfd\xf3O\x07\x13\x9a\xa6\xfe6\xaa\x9f+G\xfd\xe9\xd9Y\xd5\xa6\xd47\x1f\x9e9\xce\x95\xd5\x87\xe9s\xc7\xb9\xb2\xfa\xf0\xb4\xbaCK\xf1\xc3\xf3j\x13\x81\xf3F\xa5\xdd\x9b\xa9\xba\x9e}\xee0u\xdddA\x80\x9f\x9f\xbb\x82\xedxq\x18\xc6QH\xf9\x8d\xce4\xad\x1c\xc5\xba\xd4$\x9ekP\xd5\x0f\xce\x10R\xee\x91+\xf5\x19\xdeX\x04\xd1\xbb\xf5[\x0c\xd7\x95\xd0}\x8b~\xd6_D|\xc3\xe0\xc3|\xa9S\xfc(\xf0#\xf6*^3rEN\xa6\xa5T<\x0d\x85G\x9d\xbeR\"(\x1e\xba\xaa'\x9d\x8aJv\x86\xa7\xa7\xe6\xc5\xb4x\x9f\xc4[N\x93\x9d\xfe\\x/\xa0S\xbd\xf7\x1b\xe7-\xa9^\n\xe6y=rrE\xc4}\xc2\xe2\x0d\xea\x8c\xfa\xa0\xb1\x19\xc1\xc1qOOWoP\xedL\xc4nIV\xe9\x89J\xa3:\xcd\x8b\xb9\xc9\xe6\xd7\xbb\xa6\x92c\x93\x9c\x056-\xad\x8d\xba\xbd\x1e\xef\xc1\xd5\xc9\x8c\xb3~0gK\x03O\xcaD\x1f\xae\x1e\xfe\xfc\xbe\xba\xa4`\x08r\xf3\x11\x95\xb5UY\xc5\xfb\xc5\xa6G\x84\x15*\x1c\x95j\xb2\xa0tR~\xa9Z\xcb\xfa+\xb80\xc9\x06D\xecx|\x0b\xfd\xfe\x8a\xf3\x98\xf7{\xff\x81\xc7\xd1\x96\xfc\x993\x85\xdet\x15\xb0?\xe3\xa1\xa4\x18\x11o\xc7\xbc\x1b\xb8\x9c\x7f\xea\xa1\x13\x8e\xea\xbd0\x8b\x9f\x18\xabF\x8d\x8cM\x1a\x8c\x88\x02[\xab\xe7!\x87V\xe4\xdc\xb0\xfb\xb4_\xfc6\x98lb\xfe\x15\xf5v\xb9-{m\xd5`sy\x99y\xb4\x84i\xc4\xa6\xcd\x1b\xd7Z\xbf\xbe3+\xc4\xd2\xaa\x10\xc6\xa6\x01W\xd4\xef\x8a\xb4\xde\xf93\x8a\xb8\x82\xc1\x87zj\xaa1\xa1\xfcp\x9dj\x06#\x8d\x99\x9e\xae\x18\xf29\xd5\x91\x16\xedU3\x1eK\xd3~4\x18\x91H\xd3\x89&@\xf4\xa1Z\xb7\xde\x01:!\xb6W\xd6\x94~@\x14\x86\xcea=\xe5\xf5\xa4RZG\xe4\x1b\xb3\xbc?\xe2\xb8D\x15\xbax6\xfa\xa0\xa1\xea\x06\xe2\x03\x06\x0c+\xee2l\xe0\xf7+\xe6B\xd1\xa7M\xe1u\x92 ?H\x0dC\xfe\x15\xf9(|\xbd\x81\xa1?u\x1e\x07\xf85%\xa6%\xb1)D\xfeE!\x01\x9c\x8e\xc4\xa6\x97[&~\xcb\x19U\x14<\xb6/\x0ebZ\xec\xb6\xaf$\xa7nS\xe3\xe0\xba\x9b\x98\x93\xbe\xe9e\x0e\xe1Hk\xfc\x03\x16m\xc5n\x04B\xca\xd9\x08D\x92^\xef\x82\xc4\xe3\xf1\xc5\x80P2\xbc\"|\xce\xe6\xfeR1@\xb6T\x8d\xf8\xc3!\xb6\x84]r#\"-\xcea\x1d\xfa\x8f\x0b\xf7x\x9a\x03>\x1c\xfa\xe4\x92\xc4\x17\x03\xd2\xc3\xa5\x80\x8e\xf3m\x17\xc85\xf6\xaa\x80\xa0\x06\x19U\x16s\x0ej`\x9a5\x8c\xc1Q#\xf0\x91\xb0s\xb2\xa3\xa9\x0bC\xd5\xa7,b\xa9G\x13\xf6j\xed\x92=U\x0e\xce\x92\x80z\xec\xabH\xf8\xc2g\xa9K\x12U\xd9\xb0\x9a\xdf\x8b0\xa8\x8b\xa4?\x17\xb4\xfa\x19J\"?e\xb1`o!\xa6\xd5a\xed~\xef2/\xf3rQ\xd8\x88\xbe\x1f\x95\xeb\x03\x95QG\xb2\xd3\xbb<-\xd4\xda#C\x92b\xf6r\xed\x1eR\xc4.5\xb2\xb9Xj9\xeb\x9a\xf4.\x13\xce^^\xaa\xe2P9\xed\xc3g-\x17\xc0u\xe6\xcbS\xf8zy\xaar\x16\x00 3\xd2\xebR\xb02\x0e\x1b\x16y\xae\x85=R2`\xe0\xe2\x0f\xdeH\x91F\x08\x1d;\x17\x8ekjkX\x1b\x8e\xc305\xeb\x93\x80F\xdb\xef8\xdb\xf8wu\xc9)Q\xe4\x9a\x86\xa9K(Q\xdf\xc1\xc9\x0c\xf8\x9f\xd1\x19'i\x12\xf8\xa2\x7f\xbaH\x87\xa7\xdb\xc1@\x87\xf2\x86H\xde\xbc\x1f\xe0\x12\xc6\x1e\xbe\xf5\xb2T\xc4\xe1\x88x\xf3\xb3\xe5\xc0\xfa\xb1p\xe5\x99\xab,\xcb\xca8\xd4\xed\x17U7\x1f\xe3\xd1\xe3U\xef1\x19\x92\x1d\x0c\xbb\xdf\x8f\xfb\x9b\xc1@\x8d\xf8\xe3\xde\xe3R)\xa7)ia\xc6\xd5\xbc\xad\xd5L\xc1\x0c\xf6\xa3\xc9\xce\xdf\xee\x02\x88p\xf4\xe8\x11)\xbcj\xc3\xd5B\xca\x88\xcc\x133\xd90\xeb\x1e\x15}o\x80n)\xfa\xf6\xd3\xa0\x15\x83\x1c\x88\xa1\x87DK\xeb\xd9d\xc7\xe8\xda\x8f\xb6\xb5%\xd8\xbabv\xaa\x0d@\xc7\xdd\xb7l\xcf\x02\xecb\xb95S\xf1\x91k\xd1Yum\xad\xef\xbap\x00c\xda\x1bM\xeev\"\x0c\xfe\x98\xc1\xb1\xed\xe5\x8e\x93\xd3\x97=X\\;\xfe\x12<\n8\x87k\x95\x05\x01\x13o\x03?\x15\xdd T\x168\x08S\xa1\xa2#G#\x0b\x9a\xa7\x13\xea\xf3\x05\x0b\xbbC\x17\xf8\xd5Y\xca+\xa9A\xd6\x0cU\xe0\xd7;\x19s%\xaa\xad\xdd\xc3\xd5&\x98\xaa\xb9v2\xc0\xdee\x1c\xe8e\x03\x95\x93\x97dJ\xae\xc9c\x92\n\xca\x05\xaeP\xf3 \x96&FTu#L \xbc#'!n\x99\x04E\xb5`[\xdf\xa9\xcfE\x06!\x80\x0c\\\x93\x1e\xa2bR\x9d\x99\xbc\xe6N\xe0\x9a\xe1<\xe9\x17jW;\xe659\x07\xe1\xf1%\x05\x1b\x10\x03\x07R*\xce6\x06\x06\x0c\xf3\x15\xbb(\"\x8c\xc1\x11\xcb\x8cV+\xf0C\xba\xed\"\xb2\x9b\x01|LR\xee\x95 M\xb9\xa7\x01\xad\x8fS\xf6\xd0!oX\xbd~\xb85Q\xcf\xfa\x8f \x0d\xf4hc-4P\xf3\x80\xcc\xd5$\xa0]1.\xe1\xc7\xbd\xc7\xeaO\x86\xeb\xbfH\xbf\xc9i\xaf\xb0\xd0+#\x04\x11D\xbb\xd3C\xc8^'\x16X\xcb\x113\xd5T\x8f\xe2\x81G@\xa3\xb27\xd5r\x0c4\x0d\xf5\xac\xe2\xf5\xfd\x11\xd0\xa8\xecM\xb5\x1c\x03MC=\xfc\x08Pxm\x9e\xf9Q p\xd7\xa8v\xa2\xd8\x1d\xb8\x94\xd8i.E\x03\x7f\x1bi\x0eu\xaf\xd6\x8d`wb\x0c\xa93\xa43\x98\xa3\xca\xac\xea\x90\x1d\xd3\xb7]\xad|\x1d\xe5\x1e\xda\xb3\xf5G\xee\xd9qh\xbc\xae\x96O\x05\x8f\x1d\xa2jc\x15\x98\xbf\xa1\x96# q\xd7s\x8c\xe0\xc5BG\xe9# \xa8\x97_\xb3\xa0{\xf3k\x16\xb8\xca\x1f\x01\x80\xa3\x06?J\xbbC\xe0G\xa9\xab\xfc\x11\x108j\x08)\xaf\x0b\x15\x8d5\xa8\xdc\xce\x1a\x8e\x00\xc2UG\x9a\xad\x0e\xad\xb5\x1c#\xb3U\xf3f\x1e>V\xebN\x8e\xa8;i\xab\xbb&`\xee(_\xaf\xb4.\xf1\x90D\xa1\x1b\xa9\xec\xa4Vj'\xb5\x88P\x12\\9\x88l\x1ao\xc4\xd1M@\x81\x94\\whM=\xd6);\xbb\x13\x1d\x07\xad2T\x95\xf1\x11a`N\xcb\xbaTV\xac\xaa^\x93\xa0\xdb\x0f\xae\x87\xaeVu\xae\xd9R\xd3\xe3KU\xe2\xa0\x14\xf7\xf2\xb1\xa3\x99#\x16\x85\xca_SB\xc5\xb1\x88b\xc1\xder\xb69\x04\xad\xe1D\x7f\xc8\xc2\x15\xe3\x08\x9f\xbf&C2\x1dLD\xac\x1d\x938N\x97\x95\x88\xdb\xdbD\x9cm\xc0\x10\xdb\xc9\xc4P\xea\xcdV\xdf\xac\xc9Kr\x06G\xa6\x9c\x0c\xafHof\xf5\x0c\xf0u0\"\x8f\xd5\n2\xea\x1f\x03\xffX\xd5\xfe\xd2\n\xfd\xbf\xdeD\x8fuL\xdf\xc7=\xe2\xaf\xaf\xac\xc4\xff\xb8\xf7rn>\xf5\x96Jxw.:;.\x80Y]wD\xba3eI\xf8\xf1\xe5\x8eW\xc1M\xc7)Kz\xb0N\x14\x1fn\xce\xa22\xc0\xec_\xa6\x0c\x9a\xaeeSY.\xe3\xa0^\\m\xa1\xa1|k\xcf\x8e\xc0\x9f8PM\x9dj@\xeaT\xc4\xd6|\x14\xea\x07>\xcc\x0fNX;j\xe1l\xd6\xa6\xde\x17,\xac-\x0e\x0b\xcc\x11\x1dt\xe9Kl=4\xf2v\xf1\xc1CE\xb3Fr|o\xefR\xd7\xc5\x105-\x06\x92\xe3|\x01\xe3\xabC\xb4\xa2\xde\x0d\xac\x90\xbf\xfe\xaf\xffM\xe1|e\xb0\xd6\xc7\xc8(\x0e\xcd\xd9\xfa\x08\xcd\xdbZ\xd4D\x9c#\xf6^\xeb\x9a\xb0\xb9>N>rC\x7fL\x0d\xc2Q\xc3Q\x02\xf3\xba\xb2\xe9+\x1f\x03\xa5\xe4\x8ad\xc5\xf3\xc3.\xcb\xa8_\xe4\xa4\x84\xf5]\xc4\xa9\x90}8\x8c\xc8\xcb+\"\xf4\xe9\x1a\x19\x93s\xc5\xc7\x15\x9b.+\xcaP\x13\x05\xd6\x07F\x0b\x85/FmU\xd2X\x89\xb9B\xbf\x82\xc6\xea\xac\x9c\xac\x99\xa5iU\x15\xafh\xcf\x8a\xf5\x9c\x97\xda\xd4 Z\xab\x85=Tip\xc5\xb9\xd4\xcf\xf78P\x03ri\x8f\x0f\xa1\xa9\x8a\n\xd5*\xd9\xecya\xaf.\xa7\xe4SS<\xa8\xcd \xf5\x03\x0f\xfa\xea\xc6]1\xb9\"\xf3\xda\x94\xcd{@\xa8{\xe8\xdb\xff\xec\xf9\xc0q\xf03\xef)\xden\xb2\xbcpg\xe1l\xc38\x8b<\x08\x13\x0f\x19?ug\xd4S\xaa3}\xe6\xced\xe9\xa2\xa0~`\xf2~\xde\x0c\xdc\xb9\xce3=k\x82\x0e\x8e-C\x16 \x03\xdft\xea\xce\x9a\x86\x94\x0b8\x06\xb49\xcf\xdd9\x03?\xba\xf17\xf7&\xd7\xd3\xc1\xb2\x94iy\xc4q\xbf\xc3z\xaahd\xc5\xcb\x84\xdc\x1ej+\x92pvA\x18\xb9$\xb1F\xc6\x0b\xc2\x86\xc3A\xa1\n\x8c$\x12\xcf\xd9r~\xb6\x1c\x11x\x98.]\xa6W\xc5\x03vm\xe5Q\"\x10.n\x84Gi.\xf8\x04\x9a\x02D\xe66X\x01\xa2-\x13\xdfg\x01K\xfb\xbd\xde``\xe1\x16\xe4\x92D\x17D(\xf0\xf9\\,\xfb\xac\xd1\x84\xe3\x03n\xc3\x95,A\x1a\xbb\xc6\x8a\x160\xd7\x84i;\x17\x1c\xcb:\xe1SC6\xb3\xd4\xcae\x01\xa9\x830\xb1I\xca=s\x88\xde?]D\xa7[\xbc\xf6:\x11\xdc\x0f]\xe2m\xc0\xf6,p\xde\xdeRm\xa532?\x1b\x91\xa9\x03?\xf3\xbb\xd8\xf32^\x82CWm\xc2h\x0c\x8f\x14X\xa3\xa2\xbd$\x9b\xb0h?\xb2\x1d\xff\xd8\xc6\xafO\xab\xb6\xaa\xdaJ\xe6y\x93\x91\x0c3\xa7\xb6\xbe\x0b\x0b)\x9c\xe6\xa6#\x12\x8c\xe0\x18\xbb~\x04\xfd\xec\x9c\x9c(\x82<\xf1v\x94\x7f\x19\xaf\xd9\x17\xa2\x7f\x96\x9f\x17\x8f\xa7\xf5\"\x9fO\xebE\xa6\xedE\xb4G}f\x1d\xe4\xf7\x96\xb3^{\x11j\x96x\xa1\x8b#2_\x0eF\xa4\x9f\xc1\xd5b:\"S\xe07gDJ\xf2\xfc\xb3:T\x19\xc8}\x8d\xcd\xc0r\x0c\xc8\x15\xa1\x93$N_\xd1\xbb\x11\x8a\x01\x8a\xc1]\x90\x94\\\x92@\xb1\xb0\xe9\x19\xd4L\x01E\x0b\xb5\xa7\x83\x0b\x92\x0e\x87naR\x873\x0c|\x8f\xf5\xcfG$\x1b\x8c4[\x86C}\xf3\x05\x9a\x1a\x91\xd4\xa0\xb9Y\xf4\xe4\x9a\x8c\xa7dF\xfa>l7\xd9\xde\xa7H\x07\xa5\xac\xa7)\xda8\x18\xe9;\xd8\xd0F%\xc7\x1c%Xo 2m\xe3\xc7+\xb2\x19(X\x1c\x14\xb0\x1bq(\xd0=\xf0'\x82Q=p\xa1\xb8\xccF\x0b\xb4\xa4~\xc9\xd8\xd2\xca)\xd2J\x9aKM\xd3\x12M\xac\x954\x0d8\x85*Z=\xde+\x89R\xd4\xca%\x8dR\x92\xaa\xc0J[.a\xcf\xfc\xa0\x03jY\xd3\x82\xc6\xe2\x82\xf0\x82pt\xd2\xef\xab\xf5\xed\xf7\xf9\xa8`R]\xa56\x88\xe3\x83\x8b\x01\x10 \xaeQ'68S\xb7\xd40\xbfb\xc3\xaa\xe4(o\\\xe1Q>\x14 \xde\xa1=c\xde=\x9bx\xc8[\xef/N\xf9\\6W\xcf\xa6U{B\xaa\xd3\xab\x86\xf8h\xed\xff\xec\xfc\xccIA\xd3\x9c\xbc\xd4\xccp\x14t\x9apB\xe4\x80\xf5\x88\xecFd?\"\xe1\x88l\xbb\xd1\xc5\x03\xa4\xf4\x01t1\xa8\xd3\xc5\xd4\xd0E\x0f\xe8b0\"g\xedt\xd1\xeb@\x17\x13rE\x02K\x17\x15\xd1\xf2\x90.n\xc8%\xc6p\xe8?=G\x8a\xb6\x86\xac\x15\xea\xb8Ac\x9c)R\xa4\xf5\xe0\x82lj\xb4\x12\xc8\x80\xaf\x00\xde\x1c\x80f\x0fM(\xc1R\xc7m\x1ca\xfc)\x03\xa4\x82px\xa5(\xc3G\x04\x0fZ\xb6\xf5\xed`\x1c7\xea\x91\"\xc8\xe4\x9a\xf4\xc3:`\x16(%O@\x86^\x0fSw\x83\x02|\x1a<\x07d\x17\x03\x05\x8c\x93\xad\xd8\xd2\x9a)9J[\xde\xb1U\xbc\xacoX\xcdtD\xbcA\x99M\xa4\x93|s2\xdf\"w\xa8\xa6\xb9.\xbe\xe8\xb8\x9c\xa1\xc3\xe4\x0d\xfc?\xecK\xe9\x8a7m>\x1eS\xf1[\x99\n\x10\xccB\x17\xb4\xc7\x8eR\x92\xb6\xa1>\x92\xff\xf8\xc7\xf3\x9f\"g\xf1\x1b8K\xce\x99\xfc\x1agr\xf2\x1f\xffh\xfe\xe3\x1f\xe2?\xe9/\xc4\x7f\xfcv\xfe\xe3\xbb\xf8\x8f\xff7\xe5?\x0fA\xc1F\xfc\x83\x01\x8fpw\x07n>\xec\x0e.\"\x97\x84_\x90H\xed\xe0JX\x01\x08\x16\xcf\xa3\xe5\xc0\xce\xba\x99\x07\xbd\x03\x11f\x00]\xbb\x10\x91{\x8b\xfb\xd7\x1a\x0d\x90\xcaK\xdb\x0c\x18\x80\xfar\xc2{d\xb5\xf4\xa4b\xf8LJ\x0b\xd9\xaa\xd5\x816\xb1\xfc\xa2\x9a\xddx\xd6B}\xb5\xe8\xdfz\xc5c\x17\xa4\x06\x85\xf5\xc7\x8cB\n$t\x85\x8b\xe6F\x1cF2\x0f\xe8\x8a\x05#r2\x053\x1cGUE\xfdV\xb9\xae\xe9\x88$Z\xce\x0e\x14IMM5}`'z\xfb\xcc\x06#r\xb2\xa9^$\xd2\x93\x9d\x0f\x05\x18%\x0e\\\xdd\x04\x04\xa4\x96\xe4\x95K\x8c\x0en\xd6I\xbeaw\x9c\xc348Q\xd1\xdbpo8\xac}\x06/Q\xb9\xb2\x83:\x15\x1an0\xa0']\xe0%\x0e\x98[\xa0%\xfa\nmK\x90\xc3\x96\x0e\x11\xdd)\xdc% *^\x93>lG\xe7\xcbAG8+\xb4\xbf\x19\x12\x81\x0eh\xda\x82\xcdv\x006\xeb\x08V\xa3\x8e\xc6\xfc\xac\xae\xc6eEh~\x06\xa0\x96j\xac\xfa\xa50\x8c\x1f\x0c}\x95U~\x8cQ\x1d\x8f\xbd\x06\xb8\xe0\xe2\x8a\x82\x1eh\x02\xd0&\x886\xab\xd7x\xfei9\xc8\x97]\x91ji\x83\xf5l\x80\xf2\x8c\x9b\xd3\x9b\xdcs[,\x97@\xac\xf6<_$q\xd2\xcf\x03\xbe\xc4\xf9\xbe3\x8b\x04\x9cg]\x17\x13fJ\xac\xe1\xa8%\xe5p\xa3\x87p\xb5\x1c\x1f\xba\xe6\xf0\x98\xee\xe1\xab\x0e\x0e\xd6Z\xc3|\x1b\xccj\x98\x12\xb7\x14\xe2#G-\xf6\xc9\x1ft\xa3\x84\xc4\xd1\xcbC\xb8u\x10q\xea4\xb2\x96\xd2\x0567\x95n\x83\xae\x05\xb2\nT\x1f$W\xd9d\xbb\xbf\xe6\xcd^\xfdruo\x7f>\xee\x0f\x16\xf3\xc5\xf2\xe7\xf7\xc3\xeb'\x93O\x16o\xe4h\xf6\xeb\xcb\x93\xc5b9\x00E\xf0b\xf1\xc9\xb4\xf71\xf6\x10\x0ey\xa5\xb8\xbb\xef\xb0\xb7()\xcf\x1a\xb6\x0dy\xce\xef\xd9\xf6\xab\xbb\x04\xc4]\xb8&\xd4\x7f#\xe7=\x08\xd2\xb8\x88\xfa\x83\xf9\xf2\xf1\xa27\x19\x9d\\\x8f{\xfafO\xaf\x87\xc1\xb7\xb8\xb9\xdb\x83\xa6\x82\xcbA_\x95*_t\xaeC\xd31n\x97\x9d\x804[\xa5\x82\xf7\xa7\x0e\xbc\x1cL\xd2\x98w\x0cN\xaa\xeb+\x9ck\x9a\x13@W\xbd\xa5\xeeI\xec\xdf\xa0\xff\xc9\x03\xc7\xa5g\xe4\xa3\xc2h\xa3\x82\x04_\xfa\xeb\x11\xe9m{j\xe7\xbb\xb1\x92Q\x9e\x17E\x933$\x98\xbb\x92\xc0\x1e\xa3\xc0\xee\xa6+\xd5\xed\xdd\xce\x9c\xd5\xba\xf3\x93\xe2\x86\xb2\xafH>\x14\xb0\xd2{eo\xf9\x12\xe8\xb2\x18\x8f\x9bk#\x06\n\xc1\xee\x84\xdeLP\xbd\xd9\x1b\x1c\xdc\x1b\x9a\x9f\xd5\x80\x9f\x8d@OF\xf3\xdd\xc6f\x12\xd0T|\x13\xad\xd9\x1d~\xf7\xb4\x0c\xb7g\x81\x11\x8d/@|\xdfL\xd8\x1d\xf3\xfa\x19\xe8-\n\xa5^\xa2\xfa\xfc \x95-\xfe4e\x83N5\xd3\xd9\xe2\xcf\x8a%\x99\xde\x98\x06#\x92\xa0>\x8d\x0cI2\x9f.\xf5\xe0v\x08EG\x0e\xf1\x99\xe2\xef=\xb8q>\xbeo\xd6L\xadc\x07\xb5\xb6\xc5\xb1\xde\xb5\xb8\x91\xcc\xcf\x97\x1d\xa2\xe7\x91\xc3\xf2b\xf1\xf7\xd0\xee=d\xeaT\x0f\xba\x15\xf9\xdb\xcc\xce!>_\xfc\x1d\xe0\xf9\xc5\x9f\x82)\x80\x05\x93/\x921I\xe6O\x0d\x8a6\xabR\xcc/-ho\xfa\x01\xb9$Y!\xe1!\xfd}\xc8t\xd9\x95\xf6K,\xa9\x12aT\x04\x0d(\x8d\x91\x98}\xdd\xf4\xd9\x08\\\x1b\xa4#bR\x04\xea\xb4\xdb)\xe6\x07 7&\xd5\x1cZ\x9c.\x86c\xb9\x98,&rq\x8d\xff\xc9\x93\x93\x93\x139\x1a\xc9\xf1\xf8\xb4~\x98q\xba\xe8\xf7=)B\xc9e2X\x0cN\xb7~\xfd`\xa3>w\xde\x8c\xf4\xfe\xfb\x7fsL\x11W\x1f\xfe_\xc7\x87D}\xf8\x7f\x1c\x1fD8#\xbd\xbf\xfe/\xffw\xaf\xf4\xa5\xc1\xda\xa6\x8b4\x95\xcbQ.iIk\xab\x8a\xbe}\x1a\xe4\xa5\xd2\xde\xa8\xc8\nS\xcd\n\xd3&VXc\xc4v\xd3\x94v\xe7\xc7\x19)\x97;\xcc\x96I\x91\xed*,\xcd,\xdb\x85\x95 gQ9/U\xafx\xd0<\xc8Oz\xfa=<\xa3\xb9&\x01\x99\x91\xc0J\xc3\xf1\xa8\xdd\xf6\xac\xfa\xd3\xd2\x97?\x17\x13\x11\x7f\x1b\xdf2\xfe%MY\xbfbtS\xfc\xa9e\xc6'\x82\xa5\xa2O\x07\x16^Z0\xbf\x18\x8eA\xec\xfe\xef\xff_oPH\x9d\xfc|>z\x0f\x1f\xfe\xfa\x97\xffZ\xfc\xd2\x9f_\x9f,\x07\x7f\xfd\xcb\x7f\x85\x8f\x9fL'\x93\xfa\xd7\x9f\x9f\xe9\xb2\x9fL\xd5\x7f\xc5\x0c#[\xef\xa8T\xee\x8d\x9c\xbf\x19/\x07\xe3\xf1\xb8\xaf\x1e\xe4'\x83\xd3m\x085\xfc\xf5/\xff\xfb'\xe7\x95\xbc\x8bt0\x1e\xf7\x17i)\xdb\xffV\xcb6\x7f3^\xa4\xaa\xd2>>\xd5\xb3\x83\xff\x96\\mM?\x8an\xd5\x12\x8d\xf9\xe3\xde\xd2E\x1c }[\xa7\x08\xa7\xf3\xf1\"\xc5\xdd\xd1\xf2\xd4\xb5\xc3\xa2m\x16\x8a'}a\x0e\x02\x01\x7f\x8d`\x0e\xd3~\xe2#\x120\x85\xbc\x85N\xd6\xdb\xc8\x0e\x98^\xdb\xad\x04\xd0em\x10k\x13\x914WF\x91<\x80\xde\xf8\xceM\x9b=\x92\x1d\x91\xfb\x11Y\x8d\xc8\xdb\x11\xb9\xfd0\x82t\xab5\xbf\xab&\xc2\xb4\xd2\xc4`u.\xc5\x9a\xccFaK\xaer\x88a\xe8\xb60tx\xfct;\xdf\xea\x9c\xe4\xf2\x8al\x06\x17d;\x1e\xb7\x9c(\x99_a\x0c\xb6\n\xb9P\xae\xd2\x9b\x14\xd8_\xd9\x15<\xe8,[\xb1\x19v\xe1\x82(\xc1\xca\x03\xc2\x18\x97vAz\xe3\x13\xe3\x86\xc7\x1f\x0c.\xda\x87\xd9\xfc\xc0\xd7\x07\xb9\"'\xb4\xafPX\xefN\xc6d\xaa\x05\xc2\xd4\xeeW\xa6#rO\xaeH\xef1NL\n\xa6\x89\xa0:\xc0\xb2\x01\x1e[']\xe6\xc3\xfcT\xeb{U\xc3zDB\xf57\xe9\x06\xb5\xf9\xc1\xa0\xb4\xcdc_\xcd\x83\x9a\xcaQeJ\xc9f\xa0\xa7\xf4\xa8\x06\x89\x06z7I\xfdh\x1b0\x18\x8a{\xd5R\xa1r\x95\xb69f\x18\x8a\xbf\x1c\xe0{rM\xfao\xe7;\\j\xc5\xe3\xca\xcc\x91<\";\xb46\xc8\x89 Z\xc4\xce\xcf\x97\x15\xb6\x91\xf5\x0b\x02\x80\x9e`G\xb9\xa7K\xd0&\x7f\x0c\x10\xce\x1e\x08\xc2t\xa9X^qI\x1d^+\xae\x9fj\xca\x8f2V \xbe\xd1\xe5WW\x836\xfd\xf6\xe4\x9a\xdc\x1e\xb3\xcf1?\x18\xc5V\x1d\xb4\xeb\x97\xc4\xe9\xcc\x0e\xddQ%\x11ug\xc4\x11\x07\xbb\xed\xa7\xf7J\x9b\xce\x85\xc0j5T\x8b\x03VH\xff0\x02\xf4\xfe\xfa\x97\xff\xe2\x8a\xa0\xea\xfa\xbd',H\xd9G\xad\xfa\xa3\xee\xc1\xc0\xc0\xbc\xea\xf8\x15\xe4\xa9\xdb\xdb[\xf9\x1b\xb9\x98-N\x17\xa7N\xb9\xc9o\xd4L\x9f\xbe\xb9\\\x9c\xd2E\xfa\xe4\xe5\xa9\x91\x90\xda\xc5#Z3^7F\xe8s\x87^CX\x0b.7\x06\xab\xce&\xe82\xaa\xf9\x9c*\xe3\xc1\x8c\x9c4\xc4\xae`!\xf5[>\x8b[_\x08\xc6\x9b+\xd7\xf2\xf2\xd7Q!0g\xd3\xdd\x16\xf3Ko}\xe1\xed\x14\x92l\x99x}\x9f\xb0\xfeA\xa1\xc1\xa3)#\xbd\x8c\x07\xbd\xd9Add\xc7\xacy%\xb2\xccH4\x81\xc8dl\xfd\x9a\xddu\\\xf60\xaa\xd0\x83?\xf1\xc0\x11\xf9\xa6\xfak:w*\xfe\xe0\xc2n{6\x1c\x08\x98\xb5\xbf\xaf\xa1\xe8)\x90D\x0cjF\x18\x96\xafTB\xbf\xb0\xa3z\xa3s\x9c\xfa\xa3\x92[\x9b\xa6\x9f\xe3\x0c\xcc~j\xfcb63Sg\x8ez\xb9\xea\xb4\xe8\xf2\xf5\x11\x0b\xfc\xe8&\x9d\x11V\x1f\x12\x9a\x89X}U\xcb\xa4\x1c\x93\xda\x15L\xea\xd8\x8d\x0co:\x80*\xeee\n;\x80:|jg\x12eA\xab\xe2E\xdf\xc3i\xd8\xe3\x14,\x95\xee]\x96J\xce\xb1\xaemk\xee;\x1e|\x14\xb6+\xa0o\xb9\xffX\xe7\x1f\xb9\xdb\xa0\x1eXD\x822);\xea\x14\x04\xea\xd1\xb7\xd0\xb5\xdc\x9d\xabr\xb6 \x9f[Vw\xfa\xe6\x92\xce_.\xd2\xa5a\x0d\xdb\x01\x1a\x87\xea+\xa3\xbb\xf1xD\xfc~\x9a;\x18P\x89\xc3\xe1@\xc9\xc6\x90\x0bR\n\x9b\xaf\xbc\xad\x18k\xcc\xcbv\x01\x9e\xe8\x0e\xac\xe0\x90Q\xc9\xf9}\x85\x1b\x14.\x13(\xf4F\xa1\x7f5\xc91\xda\xee:l\xaf\xf6\xa5=e\x08\x05\xfb\x81\x82yo\x15\x06F\xbc;L\xf1\x88\x99tOo\xa3\xd7\xd0\x9a\xde\x11np\xc7\xba!\x97\xb6Y4\xbe\xcdM\xdf \xce%\x15\xec[\x05\xc6~\xbeYN2\x1e\xa0\xa6J\xdb%\x1b-\x1a|\xd4;T\xf5Y\xb5\xb4\x1e\x11\xef\x18\x12I\x1e\xa4\x0d'E\x8dx\x90\xab\xa5\x93\x8eJq\x92\x0b{\xebN\x05 \xb2\xc0C;f\x1d\x8c\x1d\xd1;m\xcc\xab\x87\xbf{9}`\xd5f&T\xfd\x99\x81\xe8p.E\xb4\x02\xf3\xa1#\xf1\xd0)\xb6\x98\xd6\xbd\xec\x91\xd3\xfb\xf0>\x15h\xe0\xd1\xd0\x8d\xc7\xdd\xe1\x0b\xd0\x92\x1eP=!\xc3|L\x0c\x91\xe8 \x0e\xa9_P8\xb4zh\x9f\x1f:\x8fG \xf2\xd1\xf3w_9\xbb\xcaJgWY\xf9\xec\xca\x1b\xd9\x834}vu\xb0\x9d\xf6m2\xee\xd5\x0eV\x82\xe7\x1e\xe3\xf1\x05pI\xadM9\xb9\xb2\x14\x9a\xe0\xadmC/\xe0Sf\xac\xd7/\x06\x8a-\xdb6:\xed\xe0\xf6:(\xe2\x88\xf89z\xc4\xfa\xe6+\x1a\xc0\xd9\xe2U\x8ew\xfa\xe4\xa4\xdc\xa1'\xe4\x0b\xcb\xc7&?\xa6\xd5\x8fg\x93\xe9\xf3\xc9\xd3Jj5\xd3\x97qr\xcf\xfd\xedN\xf4\xbd\x019?\x9b>'\xff\xcc\xd96\xe6\xf7\xe4\x7f\xa2^\xbcJ\xc9\xe5\x96\xb3\xedo\xd4?\xe3\x1f!e\xe2\xc5\xe1\xcbj5\xaf\xbeyM\xbe\xf5=\x16\xa5l=!\x85\x18\x86j\xdc\xd28\xe3\x1e\x83X\x86\x01\xe6IOC_\x8c\xf5\xcb$\xd9%\x07\xa0T\x15\xa6\xb3\xd3\xd3\xad/v\xd9JAp\xaa B\x80N\xdbF\xe1\xb4\xf4\x0e[\xd1Q\xd9\x80\xbd\xddF(\x9e\xfcI\xf8\x81q\xb0\xae\x9d\xe2W\xac\xc4\x9c\x02v\x9c_\x94v\x9fe\xc6Q*x\xe6\x89\x98\xcfH\\_\x88\x19\x0fR\xf7\xb6\xb5eG\x9b\xeff\x1d\x1f#v\xfb\x1f\xfch\x1d\xdf\xba?\x97\xb7\xda\xae\xcay\xa6\xd6.\x9b\xe9{3\xf5\x1c\xc5X\xac.'\xd0\"\x0c\xbe\xa3\x14\x9d\xf8\xe9\x97A\x9c\xa2\x13\x9ck\x18\x89WT\xec&!\xbd\xebGj\xaf2R\xd2\xfc\x0cvK#\xa2\x1d\nT\xfd\xd5\x17\x7f\xa0KC0\"\xe1\x8b{\x0b\xc51e\xf1\xeeV\xab.\x86\x98\xcb\x8bfz\xf5N\xf0\x07\xc1[\xdbP?\x0dJ\xd0\xb2OGX,\xcc\xce\x8cnV\xa5\xe9\x04\xb7F|\xb5\\\xef\xddX\x8d\xc0w\xc1mc\x8c\xa8\xb1\xfaU\xbe\xb6\nj\x0bf\x02w@\xa0,\xc8\xf3=\x94\xfb\x17\x1a\xe8\xa8\x03] s\x15\xef\x02#,=\xf74\x14\xc1\xb7j8bb\x19\x95\x93'\x1e\x0d\x02\x13%FS\xe9\xc1(\x8f\x86te\xa3! rM\x04\x99\x91\x13\xbco\n\xbe\\\xec\xe8\xa0V\x08\x8c\xc7\x05\xf1\xa3T\xd0\xc8S\x85\xe2\x89\" \xaf\xe9V\x15.\xfa\x83\x9a\xd9\xd1}m\x89R\x7f0Y\xa9\xa7>+\xfaY\xea2\x88%\xd23k\x16\x05\xcc\xcf\xa8V\x01\x86\x9c\xbc\xb6\x0e'\x83\xcd\xb1\xa3\x94 \xe0TH\x9a\xe4\xd0\x0cF\x8e\xb3\x0cw\x17^\x15i\xf8q}(\x90\xffc:Q(f{QH\x9b\x141\xbf\x99T \xcb\x85\n\xd5c3\xa9\xd5\x1c\x18r\xc2ssV\xcb\x91!\xb3~k\xce^b\xc2P\xa4\x90\xe2&.\x83#f\xe6u\x81q\x1e719\xcb=f^\xf2RvZ\xbe\x80\xdb\x11\x85\xc5\xd2<\x1f\x05\x81\x05j\xb3\xef-\xc3me\x14l_\xbf6\x17(\x88,H\x05\xcd\xfbQ\x83]Jy?\"1p\x99C\x9e\xb3H>n06}\x81j\xaa~U\xc0\x1c\x19t\xd6\xbe\x7f\xe2\xf2\xaa\xfd9\xcfPIS\xb2\xabS\xfa\xa4\xabTp\xea\x89WL\xec\xe2u\x07d\xc0\xa0f=S\xae\xd7\x05\xe1Ph\x9e\x1d\x1e\x04R\x94\xc3\"\xe2G*\x9b\x98\xech\xfa\xc7\xdb\xc8F\xa3\x8fP\x14a\xf3hI\xd0#X\x03\xfb6\xb8\xd8\x05Fv'X\xb4\xee\x08#\x80\x87\xf2\x1f\xcb\xc5\xfbf\xe4\xaan\xe7\xde7\xdc\xcc)m\x15\x1a\x16\x98\x91\x18AW]\x1b\x9b^a;\xd1\x1b\x00\x93*\xa4\x90\x0e\x13L@\xde)\x14\xd2\x81F\x90\x99R\xbe\xcd\xc01V\x83\x843(u\x01\xc2\x03\xb6\xce\x0d-\x81\x07q\x19\xe9$\xcd\x12\xc6a\x01\xe2\x0d\xe95\x0b\x98`\xe5\xae\x8c*;2\x8a\n\x84\xa8\xd3\\\x07\x81\x9f\xa4~:k\xdd\xa2\x17\x7f\xd6\xa4K\xebh^b\x90\x04\x98\x83(\x0b\x02%VD\xe4\x9a\xf4&\x93\x9e\x12~1\xbc\xa21\xf6Rl\x1f\xf4\xfcc\x12Y\xd5\xf1\x90D] \xb6V\xecvDN%\x0f\x7f\xc19\xbd/x\xe8\xd25\x0c\xf2\x8e\x18eq5r\x83\xf9\x15\x96\xa1\xdd\xeb\xb0\xceG\"\xc4\x9c\xbb\xc0\x1aU\xd2\x95m:j\xc5\x87q\xfd8\xcb1 p\xff\xe5\x8bh\xfd%MD\xc6\xd9\x11\x03s\"&\xdb ^\xd1\xc0\x11\x9e\xf1\xcfP\xed\xf7l\xcb\xee\xfeL\xc2,\x15dG\xf7\x8c\x88\x1d#\x8f\xb7\x8f\xc9&\xa0[\x92\xb2Z`F\xf3\xcbG\xac\xb23\xbc \xb8T\xc1@\x8a\x81\xcf\x00}\xb9\xb9\x80\x1f\xf1\x08\"\xe9\xad\xd9\xdd \xdf7Eh\xbf\x82\xe1(\x8c9\x94Jl\xb5\xdf\xb2\x1b\x8az#Pw}\x84\xeb\\\xc6H\xb9Wf\x99!}\xec\xe3m+W\xdc\xdc\xdb\x9d/X\x9aP\x8f\xc1\x08\xce\x08\x04dr\xec\x0f\x8a\xfa\x8e\xc3\xdb\x02\xb7\xde\xc5\x86+\x8d\x18W\xa0\x1a9#O\x90\xb2\x98\xf2\xfa\xd5\xb7\x9d\xf0\xcanw\xbb\x80V\xdc\x96\x08,\x86\xa1UE12\xa5\xf95\nb\x95\xe6\x8eiMJ\xd2\xeb\xc4\x81S&\xbe\x10\xe5\xbdb\x87\xbbkzC\xa3J\xa6\xfd\xc1\x9c-\xf30\xba]\x1a\xdd\xd6\x1b=\xba\xc5.\xed\xe8\xce\xa5]\x1a\xaa*xtK\xad\x0b\xa9\x82\x829\xfeu\x01n[\x07\xae\xcb PU\x06d\xe8\xc2\xebU)\x0c\xae\xf9\xb9G\xe4K\xc5>\xbb\x8cH\xb1U=\x92\xfd\x1e0\xdf^M\xc3I\x1a\xe4\xbb\xf5\xbass\xb9\x9a\x0d\xd5hf\"\xa0\x82\xfe`\x94\xc7^\xac\x10\x14\xd4\xaf\xe9\xb9\xd0\xdc\x0bo\x11D\xe0\xf8\x1d\xefDr\xb5\x13W\x94\x17\xef/\x98\xc4\x0b\x98\xf4l\x92\xee\xfc\x8d\xe8+\x12<&\xb8\xed\xf7QrP\xdc\x9c\"\xc1l\xe2\x88n\x1c\x9d\x189\x85\x16\x03\xcfu\xc5\x0e\xce\xc2x\xcf\xfe\xee\x07\x8f\x16oX\x95FR\x0de\xbbv\x13\\p\xe2 _\xc0\xa8\xc3\xb1\n\x8e\xb7j\xc1c\xfdtD\x1c\xd7m\xc9!\x8d\xd9G\x9d\x89m}\xc9tY1\xb5\xe6;\x93\xe4\x1dM;\xcf\xbb\x15\x8e\xd0\x9a\xa3GzdX\x9d|\xb8(\xdc+\xdc\xa5\x81LL'w\x81(e\xe2\x1b\xc3?\x8f\x80\xaa\xc6\x89\x8f\xe3\x80\xae&\x8fk\xb1\xf3\x90\x1b\x1d\\\x87\x96J:\x8f\xa2\x16\xbcE\xe5`\xb2\x83\xce\x0f\xb0\xe2\x07\xc1\x0f\xf0\x96y\xef\xb2\x87\xd1\x95 \xaa \xf5\xdcb`2\xd2{\xd9\xcb\xa3\xf8\xda\x91R+\xbdwy\x8a\x05{/{\xcb\xa3T\xc7%\xf0:\x0c\x05\x8a\xcd\x96\x0bYA\xbe\x1a\xc5\xcb\xfc\xaaC\xa7\xd7G\xfb\xc0\xcd\x97\x87\x84j\xe2G\x84\x0d\x08sk\x03\x84\x16\x98\xc9\x90<\xc6\x08\x0b\xb0\xf5\xc0\xa8`\xed\xf4<\xa7\x16\xf5\xd1+\xa5\xbcW\xa2xMou\x84\x88\xfcQD\xdf\xceS\xdc\xa5\x89\xa2\xd6\xc9\xc8\xfcm\xbe?\x8c\xb4\xda\xa3-f\x06\x14\xe5\x1d\x98\x7f<\x0d@\x14`\x85\xd3+T\xb5\xe3X\xfe\x9e\xb3M\x7f\xd0\x82 ~N\"\xa0R\xedoZ\xcf\x04\xbb\x13\xfdBm\xa8\xb7oROt\x19\xbd\x02\xcc\x1d\x05f\xb3On\x1e9bm\x87Dc\x1e\x07(\xe6g\xf9:\xc2\xf6e\x8a\xbcC\xed&\xdb\xe6\x95\x1b\x13u\xa3K1\x1b'\xabA\xd5\x190\xb6!\xb9\"\xbd\xb7\xab\x80F7\xbd\xae\xaa\x942<]P\xae$\x81[-k\xfb\x12\x85\x93\x9a\xa1\xa5\x8dC\xd2\x1b#s\x9bu\xa4\xfc5\x8c\xe9\x02\xa9Uek`\xd7\xf1k\xadF\xae*f\x89\xbb\xd5\xbc\xc0\x11\xcd\x19b\xa2uT\xf6X\xce\xa8\xb0\x15\xbb\xc3@\x1e\x93\xef\xfe\xf8\xc37\xaf\xbf\xf9\x97\xaf\xde~\xf3\x87\xaf\xbf\xf9\xc37\xaf\xffc7\n\xe6<\xd69\x82\x8c\xa9\xf2z\x8f\x0f\x1a\xfe\xd3\xfe\xf5\xac7\x7f\xd3[>\xb9\xee\xc9\xc7\xf37\x8f\x97O\xae\x1f\xcb\xf9\x9b\xc7\xbd\xab\xcb\x97\x7f^\xa4\xcb\xe1\xe0\x14\x19\xdc\xe9\xfc\xcd\"]\x9c\xf5\x1e\xbf\\\x9c^-\xee\xce\xa6\xe3\xc5\xdd\xf4\xeb\xc5\xdd\xa7_/\x87\xa7\x134\x0fQ\xb3\xdb\xbf\x9e-\x16\xe9\x93+\xf5O\x0foM\xdao\x83\xeb\xde\xa8\xe8\xcbd\xaer+Vy\xd9?\xf9\xdd\x1f\xbf|\xfd\x1f\xbf\xfbj\xa0^u\xeab\x91\x0e\xf3W1\"= \xeeQ\n\x15\xaa\xcf\x83'\x86\xdb\xe2\xbb,Tq\xd9?\x85F{\xe0o\xe6t~6\xfe\x9c\x8e\xdf}1\xfeO\xcb\xfcq\xb6|rZ\xad\xb3\x0c\x81\xb0\xad\xa8^\x9d^\x17\xda\xcb\xf9\xf7\x88\xf4\xb6~\xcfE\x0b\xd5\xa0\x7f\xb9\xa3\x9cz\x82q\x13Q\xddhZ\xfa\x8f\xa2U\x9a\\\xc8G\xbf\x9e\xbe8\xbb\x90\x8f\x02\xa1\x9e\xe1q\x8b\x8f\xe7\x17\xf2\xd1OY\x0c/O\x9f\xc1\xbf\x9f_\xd4\xaf\xdb\xab\x1f\x989tA\xd8\xd2n\xa4\xb0\xf7\xb0\xf8Q\xb2\x8c\x98//PUzb|]\x82\xf2g\xfe\xf4@nE\x10ON\xc4A7\x1bAE\x93\x1b\x8f\x88\xd0\x9a\xbaf\xab\x81\xc0\xaa\x87\x91c\xa91Ut\xe7\x8bh\x0d\x93w\xff\x87x\xcdR0'\xf6At\xd1Zv\x7fD\xa2\x81M\xec\x17h\xfeWh\xa4\xa1\xca\xf5\xb5\x8f\x81\x81\xd6\x0d\n\xab\x1b\xa4M>\x86H\xe3fJ\x89wq!@\xc9\xa1\xa9\xf0\xaa\xc3\xd12\n^\xb7Q\xf0\xdc\xa3pD'4\xed\xf4\xbbP\xe5\x06(\x8e\xc3x\xad\xdf\x8dr\xb2Y\xd1I[\xba\xdd\xbcp\xf5~]\xaf\x8f\xc8*\xd79Z\x0eA\xd0\xb1\xf3C\xd3\x01{\xf89\xef\xb02\xa29\x07/\xb2\xcd\xd3E\x0b\x92t\x01\xf3\xd4X!\xda)\x84\xcb\xdc\x99\xf2\x91\xecg\x0f\x99\xba\xbaX\xd4(m\x14V\xc2\xd1'85\xc3\x86\xe2\xb2j\x11|Adh9\xe1\xb3\x92q\xc5\xe1Ds \x0f\xad\xa8\xaa!\x83\xcc\xef\x18Q5\x1f\xfb.H\xdc8\x12\xf9\x0c\x1e\x1c\x88\x0f\x06\xd9\xe0\xd4\x87\x00l\xf1\xf2\xe3\x81\xfb\xabr\x06\x87\xb4\xa4\x1a^\x9e\x8e\xb4S\xb0I\xffz\xe6G\x82\xf1\x08\xbc\xf4\xd1@Z\xf2\xe7\xc7\x91z\x01\x92\x14\xf3T2\x95-\xe1~\xcaR\x99\xecb\x81^i\xeee\xc2\xe35fO\xe5&\xce\xa25\xd4$\xfd0\x8cW~\xe0\xb3H\xfa\xd1:S}`\xa9\x0ciD\xb7\xb0VU\xb9\x84q%tI\xc1\xbc]\x14\x07\xf1\xf6^z;\xee\xa7\"\xa4\xa9\xf4\xe20\xcc\"_\xdc\xcb\xb5\xcf\x99\x82\xe1^\xb2u\xe6a\xf5\xec\xa7\xccO\xa0\x1e?J\x85/2\xc1dH\xf9\x0d\x13~\xb4\x95i\x1cd\x08\xd1\x9eb\x81T\xae(\xdfR_=\xc4\x99\xf0\x7f\xca\x98\\\xa1\xa20\x95j\xfb\xaedf\xe9\x05\x8cF\xf8\x10\x8b\x1d<\xc4a\x92 \xc6\xe5\x9a\x85\xb1\xc7\xa9\x90k\x9f\x86q\xb4N%\xf4\xdf\xf7R\xb9\x8b\x83\xb5\x1fmS\x19\xf8\xdb\x1d\xb4\x9fP.\"Us\x12d\xe1\n \xca\x92$\x80\xber\xeaC\x13{\x16)y4\x95\xd4\xa3k\x16\xdeK\x8fr\x06\xd0\xc4aB\xa3{\xe9\xf1\x0c\x06{\x1d\x87\x007\xbbK\xe2\x94\xad\xe5\x06\x9aI\xe5&\x88\xd5X\xc9-\x0d\x02\xc6\xef\xe56\xf3\x05\xe5\x00\x8e\xbf\xa6\xf7\xf2\xc6WX\x11\xc9\x88e\xa9\xa0\\\xc67~Do\xa9\xe4\xcc\xf3\x13\x96J\xce\"A\x03\xf5w\xef\xb3\xdbT\xa6;\xff&\xddQ\x89\xce R\x009\xe6B\xa6\xf7\xa9`a*\xe9\x96E\xde\xbd\\1\x1e\xf8\x91\xf4h\xc88\x95\x1e\xa0\x85\xf4\xe2\xcd\x861\x85/\xeb8\x95\n\x05\xa2\xadd\xa9\xa0\x82I\xa6z\n\xe03.\xe4&\x13\xab8\x9074\xdb\xb0H\x06\xd9]\xc6\xefeH\xfd4\x8ed\x18G4\xdd\xc90KY\x16\xca\x88n\xe3{\x8a\xb8\xa6\xa0L\xa8\xcf\xd5\x1f\x80)\xf6|\x1a\xe0\xa8\xdeKA\x85\x88c)|\x16\xad\xa9\x1a\xe1=\x0b\xe4\xde\xa7?\xb2T\xee\xfd \xa0\xeaO\xaa\xd0f\x1f\x03d\xfb\xf8\x9en\x99\x04\xccF4P\xa3\xbfN\xa5\xb7c4\x91\x9e\xdaw\xc85\x8d<&a\xd1\xcam@S5\xb2Y\xaa\xd0,\xda\xc62\xf2\xa3\x1f)L\xb4^\x0e2\xdd\xc5j\xd4\xe2\x80r)b5\x03\"\xbe\xb9\x8f\xa5\x88\xe3 \x95\xb7j\x8d\xca\xdb\x98\xdf\xa4\x922\x1eK\xca\x13*i\xeaS\xb9b\xa9\x90+\xff\x86\xc9U\x00h\xf9\xee\x9d\x1a\xdeDzA\xb6\x92^\x1c\xabU\x19'rCy(7~\xba\x93[\x7f#\xe46\xe3\x99\xf4\xa3M,\x7f\x8cW\xa9\xbc\xf1o}y\xc3\xd9Z\x064Z\xcb\xc0\x0fc\x19\xf8\xd1\x8d\x0cY\x94I\xb5\x18e\x18\xaf\xa9\x8ch\xc8d\xa2\xf06Q_\x938\x15\xf2\xa7$\x8e$\xf7\xbd\x9d\xe4\xd9\x8e\xcb\x94\xdd\xddK\xe1'\xa9\x1a/\xa6\xfe\x89\xe5-\x8d\xb6\xf2V-\xe7[\xff\xc6\x97\xef\xe2\x88\xa9%%W\xfeZ\xae|\x05\xf0J\xad#\xe9\xb1Xa\xb0Z\xaar\x1b\xef\xa5\x1f y\xe3\x872\xf4\x03\x191!\xe3(\x901\xdf\xaa\xe5/\x93l%\x15\xc0\x82\x052\x8bby\xcb\xd6\xf2\xee\xeeN\xde\xdd\xbf\x93\xd4\x93t-)\x93t#\xe9VR_\xd2@\xd2P\xd2H\xd2X\xd2\x9f$\xe5\x92\xa6\x92\nI3Io%\xbd\x93\xf4\x9d\\Q\xb9Z\xc9\xd5Z\xae\x98\\m\xe4j+W;\xb9\xf2\xe5\xeaG\xb9\n\xe5*\x92\xabX\xae\xb8\\\xa5r%\xe4j/W\xb7ru/W\n|\xe9y\xd2[Ko#\xbd\xad\xf4v\xd2\xf3\xa5w#\xbd@z\xa1\xf4\x14)\x94\x1e\x97^&\xbd\xbd\xf4n\xa5w'\xbd{\xe9\xbd\x93k&\xd7?\xca\xf5\x8d\\\x87r\x1d\xcb\xf5;\xc9<\xc9\x98d[\xc9\xb8d\xa9dB\xb2Ln|\xb9\xf9Qnn\xe4&\x94\x9bXn\xb8\xdcR\xb9]\xc9\xedZn\x99\xdcn\xe4v+\xb7jb\xe56\x90\xdbPn#\xb9M\xe4\xf6'\xb9\xe5r\x9b\xca\xad\x9an\xb9\xbd\x95\xdb{\xb9\xbb\x91\xbbP\xee\"\xb9\xe3r'\xe4.\x93\xfeZ\xfaL\xfa\x81\xf4C\xe9G\xd2\x8f\xa5\xff\x93\xf4\xb9\xf4S\xe9\x0b\xf9#\x93?\x86\xf2\xc7X\xfe\x98\xc8\x1b&o\xb6\xf2f'o|y\x13\xca\x9bH\xde$\xf2\x86\xcb\x9b[ys/o\xde\xc9\x80\xca`%\x03O\x06\xbe\x0cnd\xc0e\x90\xca@\xc8 \x93\xc1^\x06j\xa9\xca\xd0\x93\xe1Z\x86L\x86[\x19\xeedx#\xc3@\x86\xa1\x0c\xd5\n\x96a\"\xc3\x9fd\xc8e\x98\xcaP\xc80\x93\xe1^\x86\xb72\xbc\x93\xe1\xbd\x0c\xdf\xc9\x88\xca\xc8\x93\x11\x93\xd1FF[\x19\xf92\nd\x14\xcb(\x91\x11\x97Q&\xa3w2\x0eeBe\xc2d\xb2\x91\xc9V&;\x99\xdc\xc8$\x90I(\x93H&\\&\xa9L\x84Lner/\x7fR4M\xf2X\xf2T\xf2L\xf2[\x99R\x99\xaed\xea\xc9t-S&\xd3\xadLw2\xf5e\xfa\xa3Lod\x1a\xc84\x94i$\xd3X\xa6\\\xa6B\xa6\x99L\xf72\xbd\x93\xe9\xbdL\xdfI\xe1I\xb1\x96b#\xc5V\x8a\x9d\x14?Jq#E E(E$E,E\"\x05\x97BH\xb1\x97\xe2V\x8aw2\xa32\xdb\xca\xecFf\xa9\xcc\xeee\xf6N\xee\xa9\xdc{r\xcf\xe4~+\xf7\xbe\xdcGr\x9f\xc9\xdb\x8d\xbcM\xe5=\x93\xf7B\xbe\xa3\xf2](\xdf\xdd\x0e\x16\xab\xd3\xaa\xe6\xb47\"\xe8\xffoq\xbb\x1c\xfc\xa6\xbf\xb8\xfdy:\x9a>\x7f?0\xba\xcc\xb2:\x14r_\xcf\xe6\x8b\xf1\xc5\xec\xd1\xd5b\xb8\xf8d\xb4\xb8]L\x96\xc3\xdf\x14\nD\xf6\x897Ub4\xa3\xb6B\x94\x19\x96\xf3\xf1dh\xc5\x87\xe5p\xd6\xbf>i\xfa\xb48]\x9c\x0e\xfa\xd7'\x8b\xf5pqz=\xe8_c\xca\xb5\x13\x90\xbaJ\xb7?\xb9>E\xa5\xaej\xff\xf6\xf6v19\xbadsG\xad\xf6\x17\xd4\xc5\x8b\xb1\x05|\xf8\xe87\xbf^\x9c\xfe\xd3\xd5\x7f~\xdb\x1f\xc8\xc7\x9f\x80@Tg\xe1O\xbc\x0du\xc8\x11\xb3@\x8c\x0f\xaf\x03y\x12=\x1a\x7f\xe2\x81&-''Y\xb7\"\xdf\xb3\x80\n\x7f\xcfl\xb9\xcd\x81S\xc8\xa3/\xfa\x117\x99$\x87NX\x9a\x87\xd0\xd2\xf7\x19I\x9a\xa1\xb54\x7fF\x1cZc\xf3\x0b\xb1\xdf\x0d\xc1~\xba\x10\xf7vj\xd4E\x08\x81\xdb\xe4\x03\xe3bX!\xf9\x17\xa2_\"W\x87\xf8\xb4\x00$\xc6\x95r\xba\xe8\x9fn\x0f\xdc\xb7\x8fJ\xf9\x07\xa7\xdb\x03<\x1b\xb9\x80\x0d\x0e#%9\x1b\x90K\xd2\x07\xf2\x14\x95\x92-!?9\xeb8\xa6$\x9fs\x87w8\x976\xf2UU0\xeb\xaa\x84\xf4#pK\xd5(X\xce\x17\xb7\xcb\x06\xc1rG\xd3\xaf\xb3 \xc8\x8b\x9a\"-\x12\xbf\xa3\x9a\x8c\xfb?x;\x16\xb2\x83\x15\xb8a\xf8\x0f1_\x7f\xa90d#\x18\xaf\x023\x9b\xbfY\xa4\xcb'\xd7\xa6JG\x15E\xe6\xdb]\x1e5\xd3S\x94\x06tM\x7f2\x1dR\xec\xca\xdcb\xc94!\xfa]\xcc\xd2?\xc4\xe2\xf7to)\xf6\x1f\xf9\xefb\xa1\xad\xd3Z\xb2\x7f!\xbee4\x15\x7f\x8c\x98\xe9q\xa5\x8c\x9f~S\x9b\xcc\x9c\x92\xf5]\xe7\xf1\xce\x13\x89r'\xba,\xd7\xea\x82\xd3](\xce\xeb`~\xb6,\x1f\xac\xb6J\xf1\xbd\x1f\xe9\x9e\xa6\x1e\xf7\x131Cg=0\xce\xbd\xfd\xaa\x9c\xd8\xa5G\x87\x86\xbe\xa3\x89\xa0\x9d\xf1\x13\x86\x8e\xe7\xd5\xfa\x07\xfb\x00\xc7:@\x9fw89c\x13A\xdb\x1avO\\\xded\xbbA^\xc7\x82\x87\x81\x7f\x827&NL\x0f\x9aWQ\xcdW\xac\xf99\x91\xa7\x0d\x05\xbb\xa0\x92\x01\xf3\x84\xd9\xf1m#Q\xcd\xc09\x88$\n#P\xf8\x08\n\xf9Q\xf6\xcf]\x06\xef\x01\xc7\xbc\xaf\x8abS\xd7C\xae\xc2\xbe\x18Jv\x84-7\xf5=\x06\xc2\xa2\xc1\xa6\xb3T\xe3<\xc1\x8e\xc3q\xf6W\x98\xc5\x8fs\xe6\x87\x1ej;\x8e\xc2W\xb8\x7f\xe9Zy\xbe\x1f\xecX\x7fq\x94\xbb6R\xf4g\xfb\xc0\x06\x1f\x80A\x0d\x8d4\xce\xa7\xde\x8a\xfd-fT\xef\xd5\xba\xce\xe9\xeb\xf2\xd6\xaek3E\x0d\x00\x96\xed\xd8\xde\x83\xe6\xd88N\xd3\x0d\x82\xe74;\xe1\x0f\x87\xe2\xb8\x89\xef\xfd\xa6k\x93\x8dh\xf0'\xfe\x80E\x9d\xf1\x00\xf7S\xb9\xc2\x13\xc6\xc3(\x8d\xfb\xa8\x00\xbe>uY\xc3VX\x91\xad\xa2A\x1e5\xf9\xbf\xe3,a\xd1\x9a\xad?\x96\xedI\xc6;S\x99?\xf1.4\xa6tO'\xe3\x0dJ\xa2\"\xb6:\xf7\xb8V\x80\xacn\x9ak\x1f\xec\x90\x94}\xc3d0\xa5=\xed+\x10\xcc\xbdGM\x05!\xf4}G\xaf \x0f\\*\xd0\xb2qv\x9e\xfb\xf4~D\xc3\xe4\x02\xe21=\xeav\xcd\xea\xd85R\xbd6\x05\xed?tN\x8c\xbe\xae\xa8P(\xe7\xc3\x05\xd1\x07\xe7XU\xb5\x83\xa3\xf8\x9f\xcc\x12\xc2\x12\xf6#^`}\xcd\xa9\x1f\xf8\xd1\xf6\x87\x80B\xcc\xf6.\xe3S\xae\xb6\x8bl\xe4V\xd1\x97\x17\xb7\xdb\xe1zS\xf3\xeeAy8,Nb\xd1\x19$\xc7X\x1e\x01J\xef\xb4M\xe1Q\xd4\xe0\x1a\x87\xab\xe3i'/F\x8a\xfa\xda\x94\xf7#\xedh\x11c$\xf16?\xa5\x1a\xb0x\x92\xfb\xe5\x84\xbb\xc0\xf9`\xbc7\xbeeFd\xbe\xc4(>\xfd\xa2\xdbx\x1d\x8a\xeaC\xa3a\x1b\x8c\xc8<\x0fa\xde\x1b\x91\x1e\x04\xa4\x86\xf02\xea-\xf0S\xd1s\x85(\x9d\x973Bm\x9f\x7f@m;\xaek9?\xfb\x80Z\xe0\x93\xaeg\xdaZ\x8f\xbb\xbc \xcbm\xea8\xaf\xd4\xd1\x00;\xa3k?\xda\x9aBO\x1f\xd0pP\xa9\xe3\x99{\xf6v\"\x0c\xa0.\x93\xef\xf9\x03\xda\x12t\x15\xd8\x1e~\xda\xa9\x87k\xb6)\x0em\x15m\xdc\x85\x8aPA\xb1\xcf+\x81\x0d\x97\xee\x98x\xd5\x05\x8a\x14<\x0b\xacW\xb6\x8a\xcb){\xdd\x81\xa1\x1b\x1bF.\x89o\xaf)\xb0\xe1pP\xa8BG\x92\x9f\xb3%\xc4\xe7\x82\x87\xe9\xd2%\x8e\xd1@\xcc\x08\xe6<\x87\xf3\x85\xf9r\xa0\xa9\xd2\xa0BzrJa\x9fh\xc1\xad\x11\x04\x82\xf0\xdf\xb1\xaa\x835\x87\xe6\xcd\xf6E{\xfb-\x00\xbee\xe2\xfb,`)\x1e\xa3\xa3\xa3\x04\xec$\xbaH\x10\xe8\x10\xe1dzA(\xb9\xd4GHl\x12\xf8\x91j\x98\"Q\xbd\xf1\x93\xaf\xc2D\xdc\x7f\xebG,\xedS\x08m@\xc9\xcb+\x12\xa1\x17\xfe\x93>\x9b\x88\x1fv\xfeF\xcc\xe9\x12\xae\xdb\xac\x82\x9bo\xa25\x8b\x84\xfb\xfa\x13\x00\xccq\xe0\xe1F\x08\xd4\x12\xcf\xf9Ru\x91\xc2\xf1\xe6\xc9tpA\xf8p\xe8\x90\x130\xea\x85\xf0\xb7;\xa1`\xcfF\x84M\xfc\x14@4\xb0[\xbe\x90\x19\xb9\xaa\x8f\x9dQ_\x07\xa6\xa7y1\xda\xa86W\x8da%#2\x1c\xdaAB\xaa\xa1\xb9RB9\x8b@\xe8\xad\xd7\xda\x12\x0e&\x1f\xe7\xda\xe7\n\x9f\xcaq\xa5\xcc\x0420S]D\x0bQ\x8b%\x99\x82q*W\x1f\xb3\xb3\xb3\xcf\x9e/\xe5|\x91\x9d?;\x7f\xb6\xc8\xce\xcf\xce?\xd3\x89\xd5R\x01\x94\xca\xce\xce\xe8\xd9i!,X\x111\xe1\x8e\x91\x03+G\x84W\xc7P\x81\xe8#\xa2\xb9<)\x03\x02\x94\x92\xe1>>\xb3\xc7\x02\xd5\x9b\xf3\xc0\xe55\xab7\xc2I0\x02'\x10\xb98\x9b\x8eHo\x11\xa9\x14\xabU\\\x88\xde \x8f^W.\x9f\x15\x18p\x93Z\x1b\xd6V}\x0e5\x94\xd3\xb3\x82p\xf2e\xbcf_\x88~4 \xd7:,,F\xf9\xf3t<\x14\x08\xfe\xa6P\xbf\xa7j\xe8i\xda\x00\xee\x85)\x19\x13o@\xfe\x89<3\xc7\xb5\x90\x08\xc5y\x95z\xe8\xd5\x8c>\x15\x99\xf1\x07k\xe6\xc1\xdc\xab\xd54\xa4\xef\x8f\x14q\xf3#f\xfe\xbe\xa2w\x05\x024*\x05\xb4Al\x1fz\x1epZ\x86U?@e\x18kM\x9a\xeb\xae\xae\x96\xab\xdf\x8a\x00\x9c\x0dj\xa8X\xac;\xdf7\xfd\xaa\x0e\x08/\xbaUD\x1e\xd6\x1a<\xa0\xb8Y\xc7\xfa\xe7li\xd5`(\x11\xb0\xa5\xa2\xbc\x85.\x14=\x9f\xbd\x1f\x95\xda,K\x1a\xadM\xd7]\xda\xeb\xfe\xa2(\x87g\x8f\xfdC\x90]V\x00\x1b\xa0\xe8w\xe1\xea%k\x83\xfa\x87\x84zGC\x9cr/\x978\x0d\xd0z\x15\xd9\x0c\x85%\xc8\x1e\x0c\xde\x97;\xca\xd3C\xaezKn1\x9d\x00F\xf6\xe4\xa9\x06\x19\x02\xfdA\xf0\xfd\x96z5w\xc2\x0e\x86\x0c\xd2\x1f\xb9\x04\x97\xf8\xa6n\x07\xdfP\x10\xbf$\x91#b/Z\xaa\x9d4\x0c\xf2x\xccr\xbb\x04\xa6\x96\xedq\xdd\xd92Q\xc7\xdeV \xa9j\x19\xa98]],b\xb0\x8c\x1a=\x14\xa9,\x81\x82\xb6\xe2\x92\xd4/\xaf\xffy\xa0V\x01F5\xf0\xf1\x10\xce,\x87`9\x02\xb7\xad\x8acpr]Z\x19Pjj\x1c\xc1\xdb\xc4Q>\x82(\xc7\xa8~\x0c\x1c\x93\x91iQ\x05|\xb7\xf6\x05\x19\x83\xe1\xac\xf6 \x1a(\xd4\xbf \x81\xa2\xbc\xf1p8\x80\x88ne\xc8\x06j*Ax\x03&?\x18\x01\x07;\xb3)gZ\x1c\xaa\xf54\xc5\xfe\xe0\xc8\xa8\x15&e\xf7\xcee\xf3xY\\\n\x8d}\xd4c\x9d\xd5}UUD+\xb4\x8d;J\xb42\xa9\xee\x90\x83\xee%b\xf6\x82\x0e,2c*\x96j\x12\n\"\xcd%y\x96\x9b\xe3L\x1ds\x18\x03^\\\x81\x8f\x9a)\xee\xdb\x9aVW\xbe\x03\xe2j-\xb9x~\x8b\xdd\x1fl\x02rHy\x15\xd2\x97W\xe4Y\xfb\xc6J\x81:\x1c\x1er\x06k\xf5\x9cZ\x86\xe3\xa3<\xf6{C\x8c*\x1d\x8b\nUf\xb5\xaf6\xe6TN\x05\xd4\x96\"\x1e\x91g\xe0\xe8\xc5va\x04[\xd2ZyP\xc2\xb8\xaf'*\x10\xd3\x19\x99\x8b\x91\x86\xd7\xa1<\xd1\xe1\xab\x18\xca\x8c\xa5\xcf\xef\x95\xf0\x96\x8bI\xef\x7f\x194\xecN\xdf\\\xc7F\xe8|C/^\xb1\x84\x11\xb3\xc8Z\xcf\xbe\x81\xec\xccd\xaf\xa3\xbaG\x86\xe4)yI6\x8dh\xadrM\xcf_\xa0\xd7\x96\x18u\x1def\xe0\xa1\x82\xe3s\xcc\x13\xb7\xd6\x04\x92\xf7\x08%\xe7\xbeg5'\xc0\xda\xfa\x9e\xda\x03\x0d\xc8\x98\xa4\x03rI\x9e\xb6V\xa45\x159\xc5\x01C\xf9\x89\xe0~\xd8/\xeej\xff\xac7\xb5\xad\x95\xf1\x82\x8d]\x03a\x16\x17\xe4\xa4?\x1cf\xa8\xd1A\xc1 :\x90\x16g$+\xcdH\xb6\x04\x9b\xbe\xd2$\xa84P\x7f\xd8<5]P\x03\xb5\xa8\x8d:0\xb1\xb8\xa2[\xca\\\x84\x00\x04\xf8\xe6\xd1\x06\xe5R9\x0b\x8aj0\xb5\x10\xb0\xbe\x81\n\x01\x9a\x9e\xb9\xe9\x0b\x90\x9en\xd4\xc5\x87vs<\xce\xc9MF\x86\x8ae_\x03\xeb\x81\x93\xbfn\xc4\x07\x94\xf1\x0e\xea\x93PN\xc3tFhG\xc2\x84\x8a\x85\x0c\x16\xa7\x93\x1c\xfd{\xa29\xf5\xb0\xbb\xc7Q\x9b\xf0\x10\xb5\xd9\x93\x97$l]\x89/\xce\xb5\xb1[\x05\xdb\xf7\xc3\xe1\xa0\xb5\xa0\x1e\\\x85\xeey\xac\xdf\x90\xde\xfd\x81\xa5\xc2\x8f\xb6\x1f\xb2\xfc\xf5f\xa3\x0e\x13\xac\xe4\xbd\x92\xc84\x11\xc8Y\x17\xab\xeaA \xeaaa,\x01\xc9\xf3\x91\xbd\"{\x14\xce X\xed\x9e\\\x92\x10\xc2\x11\x15\xd6\xe2~@fd\x0f\xd4,D\x81m^\x98\x0d\xa8/\x17[T\x1d\xe3b\x0b#\xcd\x0bP-TS|\x17\x8e6\x8cO)\x94`b\xb3\xa39\xe9\xf7K\xe8\x10\x97\xd0!^\x02`\xfd\x12\n\xc4\xcb\xc1\x00\x03\xa09IZ\xfb\\7\x8b=~\xabXc\x03+\x9fLGpW\xe7\x0c\xaf\xa6l\xec&-!\x97d}A\x92C\xb1\x0b6\xf3d\xa9/eE\xb0\xfa\xdbt6\x04\xaeA4SC\xf3sSE\xf3k\xf6\xd0\xb5k\xedtf\\\xfd\xdb\xc9Q{\x14\x93\x98\xcf\xd1\xa88c\xa0A{\xfa\xf4\xd3:\x8dF\xc1\xb3\x03\xde;\xdb-\xa2\xc8\xf1x}\x18\xe8\x12f\xc7K\xc7\x8a\x0dH\xf9\xc0aT>~\xb8\xaa\x9c{v\xe4)y\x99\xa6\xa0\xc1\x9a\x19@\x84g1\".wue^P \xed\xfb~0\xca\x97\xa8\xd5K#\x11\x8f\xbb3\xbf\x02\xa0M\xf1om\x9c\xdb&\xa6T\x190\xc5\x1b\xe6\xd3\xa5=\x1d\xd2K\x0b\x17\x13\xcd\x97\x16F\xac\xd6s\x93\x90!\x01Z\x94\xcd\x93\"}\xb2\xe9t\x9e,\xdd\x8a\x83\x12\xf9L\xff.xd\x99\x17:\x0cJ\x0eq\xbf~F\x86%9Gm\xd8\xd3V\xce\xf4\xec\xbcE\xee\xce\x80N>zD\x9e=G\xc9\x1b\xa4\xf0\xe7\x07\xa4pX jEN/HF.I\xea<|\xac\x88\xd8\xb5Vm{O\x11B\xda\xd8\x1e\x01\xbfrVT\xf5\xab(\xef\x9a\xfe\x93\xbe\x8f\x1b\x80G\x8fH\xff\xe4\x84k\xbb\x10-\x13j\xa1\xac\xe3b\xd8\xf1\xe6\x85\xfaaR\xdb\xa0z:}\x14N\xda\xe4\xcai\x90\x0b \xf5\xf9\x90s\xa9\xf4y\x9b\x90\x86\\9.\xa3\xe6\x80\\\x93\xb1\x12\xa8\x0dzE\xae\x89\xe6\x15\xf4\x02)\xe0\xd9S\xfd\xack\xe0\xe4\xb2\x84\x07\xf5Zlc\xbc0Z\xf5\xce\xc7\xad\x9d?N\x0e\x8d\x0f\xadD\xf0\x83\xa8F&_&c\xd7\x1e\xb3e\\.\xc9\xb3\xcf\x14ZF\xe4%y\xfeic5\xa8em\\b\xbc\x1d\x08b\x15=m\xa0\xa8\x1d\xdegj\x0e\"ry\xa5\x80i\x13\x9e\x9e\xa1\xee3R\xb0?{a\xa2\xa6\xb6\x88\x16\x16\xb4\xda\xd7\xa6\xe3\xf7B\xa9\x07\xa2\x87yj\xa7\xd7\xb534p\x87\xd9\xb2\x9b\x19)\x01c;\"\xf7#\xb2\x1a\x91\xb7#r;\"_\x8d\xc8\xdd\x88\xfc0\"_\x8e\xc8\xcd\x88|\xe1\x10\xe1\x00\x15\x94\x08\xa9q\xd4(\x14\xb6\x8e\xbc\x0d\x1a;=\x89\xaa\x12^\xaa\xa4\x95lB\x03\xd3\x96Q\xfe\xd0\x8dO\xe8B\xaa\xb5\xbe\xcf\xed\xb7\xef\x8aV\xb8gG\x12l\xace\xb6\xe4\x1a\xef\x017\xafV\xd8T\xa2\xffj\xad\xd4\xd07\xca\xd5<\x911I\xf0~fg\xfa\x1e\xf35\xe3l\xfd6\xf0S\xd1$\x97A\x9e\x19\xd972\x82\xdb\x87KlJz\xed\x08\xea*\x0b\x02&Z!\xfdpx\xac\xc9\xd2[\xbd\x07\xbak\xdb\xf7\x81\x81\xce\xe0\x82\x9c\xf4O\xfa`\xb6\x836\x98\xb0\x81\xea\xdfW\xd5AkD[K[\xe9Rkf\xee\xc9\x98\xac\x958\xf3\x0cX\xb6*\xadPhG.\xc9\xb4\x94\xa2\xa4\xa8uQ~\xa7\n?v\x9dg\x1b\xc6\xce\x17,<0\x80_}\xc8\x00\x06\xd5\xdd<\xea\xc5\xc0H\xc1\xec\xf5\x0b\x08\xbdq\xec6\x8a;\xf1\xfb\xeaN\xbc,\xdd\x82e\x965\x808\xab\xefU\xb4}`\xd3\xc6\x00\xf7\xa6y%j\xaf\xfe\x16f\x11\x88\x99\x1a\xf5\xb7Vn'c\"\xc8K\x9c\x14\xa7=X\x15\xba\xa0\xda\x9b\xb4\x08\xaeW\x83v\xf3\x80\xa9|\xf0&\x050\xbd\xb0'\xf9\n\xb7(tD\xee+\xd2:\xd1\xa6xj\\\x8a\xa6g\xf8~\xbc]\xde\x8d^\\?\xa0\x82\xe1KrE\xee\xec.\xe8\x07rI\xbe\xbc ?4)\x18\x14\xe9\xbd\x9b\xffP\xb4\xe3kW.\xdc\x1cP,4+\x15\xea\n\x05\xd5\xf8M#\xc7W_\xb7m\xf2C\xce\x08)HAg\x83&Eo\xeev#\xe7{\xe52\xee\xe6C\xb7\xa4\xb0\xd6\xf7\xf6\xeb\xad5\x1cXuAB\xc5\xaf\xca\x1c\x04q\x91T\xa8\xf5\x831\xf4\xd6bdn\xc7\xa8\xa4\x8cG\x8f\xda\xcd\x0cHY\xf2G\x1c\x07>?$\xe7\xf5q\x03\x9c\x8c\xf4\xde\xe8\xdc\x08\xcc%\xe6L\xc6\xe4\xbc\x14\xb7\xd3f\x98GKcAevi\xb9\x851\xd2Y\xad\x08\xca\xf3\x0bm\xc6\xd9\xcf\x13U\xcb\xcb\n!+\x14(\xa4G\xe8\xd8\xbc1k\x97\x82\xa1\x7fO\x9b\x8bv$\x08\x99\xb6g\x1b\x92sT+\xf43\xb3\x0b\xf4\x14\x17x\xfe\x99{\x08\x87\xc3lPVDd\xc3\xa1\xc2m\x16\xed'\xe6VCjn\xae\x94\xd2 \\c-\xeb\x84\xb3\x8d3?~\xd0\x85R+\x9a\xe3\xf1f\x80\x0b;S\xcb\xb8\xa1\xcey\x0f\xae\xf0\xa6Km\x1a\xd9\x8d\x04\xda\x9b\x19o9\xdb0\xce\"\xafY\xbdIW\x8a\xda9\xe2\xe1\x1f\x14\xa9\xe2*?\xae\x1d\xf9\xd1\x03RTI\x10\xcd\x06d\x8c\x82S\xf1\x08%+\x0b/\xc3+\xf2\xac.M\x15.\xa2\x14\x1b(1~C\xd9\xec\xd7\xe1U\xedx\xc7\xb6;.}k\xd1\xe0\xe6\x82Z \"Z\x86z\xac\xa1.\xf6\xdd\xaf\xf64\xfe\x90\xd9}03SR\xca\x07\xe9\xbcL\xea\x07Q\xe7\xe3\xe8\xf2A\xad,\x9c\xe8\xb7ka\x9f>o\xd3\xc2\xe2\xb5\xb5\x03\xd5\xe4ZW\xb3\x16\x1cd\xe6\x82<}\x9e\xf3`P\xce\x82\xca\x94\\^\x91\x17\x17\x03\xe2\x83\xf1Wci\x17\xd5;\xe9\xfb\xe4%y\x81\x10\xea\xfa\xb4.&.S\xb5\xd4\xae1kg\xd8OG\xe4\xa9\":\xf9\xcd\x90\xfa\xf7\xe7\xea\xbb\xda\xfae$7\xcc\xac\x01H\xf3\xcb&`=?(\x08DG\xeas\xf1:W\x13\x8d\xda}\x8bX\xec\xb8\xc9\xfd\x11\x94\xbev\x0c;\x02\xebG\xaa\x9dv+\xa8\x9c\xc6CH\x1fm\xc2r\x084\x18\xb3\x07u\xd1\xdb\xf9\xc1\x1a\x1ci\xcd\x97\xb5\x0ev\xec\x97\x99\x84&R\xd26\x0b\xbf\xacZ\xdd\xa4>\xc4\x12pd\xee\xe1\x88F\x8bV{\xa7K\xcb\x10\xcd{GG\x86\x8aa\x8e=\xe0\xe8\xf7K\xec\x91\x96\x88\x1a\xd5:|\xbfH\xc8\xe8R\xcb$\xfdg\xcf\xf3\x8b\xb8\xb5U\x17#mz\x81:_\x8eE\xe2\xf2B\xee\xc7x\x17\xc6BQ`\xb31l\xd7\xfcb\xb9F\xb5^\xe1>\xdc/\xb0\x9cM\x17\xb4\xbe\xe9\xfca\xa8\x7f\x00\xf7:\x82|\xdc\xa2\x06V\x9d\x1f\xbd|\xdc\xe5\xad\xa8\xea\xbf\xf2\x12\xef03\x87W\xfc\xe0# \x16\x85;\xdfg\xe7\xd5\xbb\xdd\n\x81O\xdf\\\xf6\xe7:x\x9fvu=_\xa4\x8b\xd3\x97U\xd7n>f^\x9c:\xb2\xbf\\\x9ev#4#B]\xb4&?\xa0\xa8H\xc5\xb5\xa1\xab\xd8o\xd63$e1\xba.\xbbxJvMF\xe4$\xdf\xdc\xedD\x18\xb4\xca;\x89\xa2M\x8apx\xb0[zyu\xc0<\xf4\xc5\x99{\xeb\xe4\xb5\xef<\x9f\xe2\xa6\xae\x9f\xb9H\x97\xa7w\xae\x8a|a\xbe\xaci_Y8{._rz\xdfv\x1c\xf3\xecS\x00\x1a\xa4\x96\x93\x96\x1b)\xe6g.\xa5<='\xb2z\xf5\xc0\xfc4\x18`t\xf9\xf9\xa7\xaaf\xa1d\xb7\xe9\xf9y-\xfb\xfb.\xdb\xdeg\x9f6\xf7\x9c\xd8c\xa5\xeaV\x11-a\xd1\x95\x9e?(\xb6R\x87\"W\xd2\xb5\xd7\x13\x0f\x0eC{\x82h\xc0\xe7\xe9|Zq\xd6\xb7o\x0b\xd5m\xfcm\xc6\xa1U\xb5\xb3e\x1c\x9fx\xa8\xfe\xee\xa6\xf0\xef9\xfc\xfb\x14\xfe}\x06\xff>\x87\x7f_\xc0\xbf\x8c\xae\xb1\xd4\xce\xc2\x03\x1e2z\xfe\x86\xd3P\xbb\xc1P\xff\x86\x14>\xc6\xe0\xd9\x0f\x9e\x00\xd28\x13I\x06\xef\xf09A`\x12\x1eo9K\xa1\xf3\xe8b\x12\x9e\x98g\xe0N\xc5=\x8e\xa6\xf1\x11\xd1\x13f\xd8\x04tY\xb0;A9\xa3\xf0\xbc\xc1\x0b\xaf=\x01~'\x04\xc7gF!g\x06p\xec\xfd5\x8b{\xcb\xc9&\xe6_Qo\xd7o\xb9\x808g\xcb\xf2\x0dP\xad\x95\xfa\x90\x1b76\xb9\x8b\xf9\x8aCr\xcc\x95)\xb5u\xc0\xdb\xb6\xecv\xf9\x16N\x8e\xc1BdL\"\x97\xb7\x88v\xf6\xdc\xf5\xcau\xd1\x8a\xa0\xce\xc8\x04\xb2\xc9\xc2];\x17\xbb\x0bJ[]\xe4\xd8Am\xd7\xd0RA\xbf\xa4\xfa\x08J\x12x\xb0,\x9f\xcc\x06\xcd\x14\xd7\x87\x0b\x1d\xa80\xd6\xbb\n\x87J#\xb7\xfb\x81\x1b\xbfZ;\xea\xb7\xd6J\xady\x030\xef\x1199}3\x1f\xcf$Y\x0e?9EW\x9b\xb4]$\x80\x1b\x08\x14C\xa9\xf6{\xb2\xa7\xf6\x1f\x10\x03\xb5M\xad\x92\xe8\xeb\xe7)Z$\xa6\xe4\x92\xe472[no\x9f\xc0\xb9\x947O\x97\xe6\xdaH\x1b\x9fE\xff\x05\xa0\xb8M\xe1\xd1+\xb9W2\xd7\xb2[\x05\x83\x83\xde\x98\x89\x01\xed\xf4\xcd\xecz<\x9c]\x9bq[\xb7\xb3\xdf\xe7\x9f\x01H\xeb\xd2\x81Y \xbek\x92 {se=S\xdf{\x18b\x0b\xce\xbe\xb8\xbf\xdd\x89\xde\x80\xcc\x9c5\x9f\x15\xaa\xeb\x05l\x839MB\xaf\xed\x06\xb7\xea\xdc\x18w\x0c\x05tq\xdc\xdb\x81\xb9o\xc1\x14D\x14\xeb\x9d\xed\xcdB\xca\x85\xfc\x04\xfc\xb3\xf5\x06\x05\x04\x1a\x91\xc4\x8c\xc3Ia\xd2Z\xeb\x8e\xdb-_:\x8a\x0b@\xe8\x0f\x98)\xec>\xc4L\xa1+\x1c\x8ao\x1c\x80C\xc1\x00\x8b\xf6\x97\x84\x83\xff\x92@4/\xfe\xae\xe0\xed\x9a\xc0\xa3\x81\xbf\x8df$\x99\xa7.\xc0>\x02\xec\x1d!<\xacw(\xd0\xb2\x8f\x00\xe9/\xa3W\x10\xbb\x87\x1e@|\xc0R\xe4\x0fm\xf3\x88n\xa9U\xf6\x8b\xb7\xa2d\xc6\x03\xcbh\x0f4\x05\x8f\x0b\x1fDW\x8c\xa0r\x8e\xdb+}\xfb\xa7Efy\xf4\xc88)\xcfiz\xe0\xa6\xe9p\x83\xbd\xd1\xaa\xa6;Q?4^\xa4\x0b\xdd!\x87F\x83|0q!\x058\x1a\x8909DdHW@7F\xa0\xc9\xc3\xf3+Q\x0f\xc4\x15\x95\\e\xe2p\xabrD\x9a\xf2\xc0{Y\x8a\xa8$\x91Y1\xc5j7\x8f\x19\x97F\xb2F\x8a\xa4\xad!\x8a\xca!\x8aE\xda\xa8\x16\xe9\xb8\xf8Hi\x12\x9b\xd689\xb4\xce\x89\x83\x8a\x11\xd8\xa2to\xbe\x99\x90\x91n\xcd\x97W{\xe9\xcdn\xad\x8e E\xbf8\xc1\x03!\xea\xc1\xad\xec\xd0\xfcj\x8f\x7f\x82QI\xed\xf3a\xea\x13\x9b\xdce\x03\\\xb0\xe2\xea|r\xedw\xd8\x06\xc7j\xd3\xe7\x1b\x13z{M\xdf}\x18d\xees\xe8\xbd\x1c7\xc5b\x14\xc7#\xd7\xe9\x8f\xce\x12\x95\xda\x89*\xe3F~\x91}\xb6\xb5\xd6o\x15\xd0\xfb,\xf7\x08\x06\x96\x85\x8f\x1e\xd9\x89x\xe9t\x9d\xb7)\xee\xc3\x8d\xaep\x03\x05\x87\xc3\xcd\xc1m\xbc\x9d\xb3\xcdQ{w\xdf0\xc6\x8d1\x81lm\x03\xd0\xf9h\x9b,m\xa7\\4\xfb\xeb\xbc\xd2\xd6\xc1\x01\xb9\"\xf8\x90\xbdJ\x866\xe9J<\xa8\xf8\xafc\xb3\xb6K2\xf0\xe9^\xdb\x0dn\xb5\xd1\xed\xa1\x1e\x91B\xaf\x1a-\xedIA$\xceF$\xfb\x10\xb6{\x04@\xdd\xb8]A\x03\xac`3\xd8Z\xf4\x8d2m>J$\x1d\x8f\x13I\xb7!\xf8\x98\xfcs\xddlKK\x0e\x11t\x82\xfc\xd3\x89'$_\x9d\x07A!\x05pZe2\x92\x8f\x8f\"k\xf3\x8d\x1b\xf9m\xd6C\xa8B\xf4x\xe1\xb5\x1b}\x9d`\x0d/\x86\x86\x8d\xf4\x89^a\xa6\xf7\xc5#>\xba\x1c\x81\xd2\xa0j)W4\xd9gE\x1f\x89E\xfb\x03\xd8\x12\x14\x13\x14M/\xdd\xc5\x18\x91\xf6\xab\x08\xb9\xb7b\xa7\x91\x1bu\xdfF\xd8\x82\x81\xd1\xbd\xb9\x8d\xb0\x05\xb0\xf4\xf15=x\x1b\xa1\x08\xee\xbe\x08`X\x83oW\x1d\x8adT\x1e\x8du7d%%\x0ciCX\xd2\x05i\x89\xd9F\xa0\x18\xb2\xb1\xfdW\x02\xfb\xcb\xfc\x02^\xd3\xb1\xe2\x01\xb6s\xb0\xac\x83\xf9\xb4\\\xf8\x03\x1a]_x\xb5\x14\xe4\xa5/\xdb\xee\x0f\xfa\xda-\xf0\xa6\xc8j\xb3f\xb7T\xa5\x8e\xd6<\xe3\xb4\x95\x82\x8d'\xd0\xc9\xc1a\x90J\x17@\x1e=\"t8\xcc/\x88t\x01\xadn\xec\xd3\x06\x9a\xef\xbe\xfdP\xca\xfc!\x92\xf8:x\xb8\x80\x1ch\x94,H\xc6\x9b\x11\xb9\xff\xc7\xfd\x04\xe7\xfd\x04\xef\xa3\x1d\xba6\x8a\xcb-\xdb\x87\xe2\xfd\x04\xb7\x91\x9a\x0f\x1e\xb6.\x8d,\xaf\x8f\xc5\x07\x95s\xf1\xd4\x11=\xceZ\xf37\xde\x14\xcc}\xce\x0fP\x13\x12\xd5\xaaE\x9dH#\x19*\xe8\x90R\x971\\\xdb\x0d(\xeb\\O\xc9\x7f>^\xba\x82%o\xd51>\xb9$\xf4\x82\xf8m^]\x88\xa1Is\x1f._\xa5]._\x99_\xdc\xc1\xbb\x0b9\xe8\xe1\x858i\xa9\xf9\xe9\xcdM\xd7\xfb\\\x9aN\xe0j*\xda\x0c\xa4\xcd\xd2b\xbe\xd0\xd3\x11\xe1f\xf1\x15\x97\xca\x01rSYzu\xa2\x03K\xc9\x1d\xf5\xa8\x8b\x19DY\x8c\xaaQ\xac\x8eP\x1eV\x96\xf3CMw\xb4\xc1\xfb\x85\xec\xef\xf2an\"\xeem\xe3\xdc6\x86\x1f\x8d\x88\x1d\x8e\xb0r\xfe\xf4\xb9#\xc0J\xd4?\xff\xb4\x92L\x1b\xe2\xae\x08vgbc<\x9d\xba#wD\xec\x16\xa7\x1as\x9d\xbbs\xb1\xd4\xa3\x89\xcd\xf4\xd4\x9diE\xbd\x1b\xe1{7&\x8a\xcb\xd3\x86`!k\x16\x98\x1c\xcf\xdd9\xfc\xc8\xd6\xf1\xc2\x9d#\xa4\xdc\xc4\x1ay\xda\x10Q\x86\x85\xc9\x8e\xa6\xbe\xad\xe93w\xb64[\x99\x1c\x9f7\xe5Ht\x8egg\xee\x1c\x81\x1f\xd9^?k\x18h{\x95\xc4\xac-\xcc\xdd0\xe0\xc5\x8b'&k\xc3\xb0S\x1d\x1e\xc8dk \xd1\"\xa8 \xe4\xf2\xaca\\Y$|qo2}\xd6%0J\xf6Q\x02\xa3\xe4^\x90\x9c\x81Q\xa8 \x8cB10JE\x11\x0c\xd9\xf7\x18\x81\x99}\xebG7\x8a@\x17\x16i\x1d\xea\xb4n\xe9\xb3\xb7\x81t\x91\xd8\xb7E\xcc\xd5\xbc\xc3\x1c\xc6\xabb\xbe9z\xf9J\x8d\xa1\xafXI\xf1\xf8f\xd63\xf1hU\x89\xb9\x0d\xa6\xdb\x1b\x15\xe3\xed\xf6\xc0H\x0bM\x9c\xd6T\xd0\xde\xd2\xd6 \xcc\x11\xce\xac7\x98\x9f-]\xe6:Y\xc5\xe7\xf5kE*[=\x86C\x9fG\xc6KLa\xd4KQ]j\x88\x02\x8ez\x8d\x8e\xac\xf6\x15u\xafI\x9c:4y([y\xd4\xdb\xb1\x7ff\xa2\xef\xc3\xe5\x97\xb3\x01\xe6W\xe8R\xd1o\xb9MP1l\x03b\x8f \x97$\xbe \xa2Mx\xe2s\x01\"\xcbI\xc1g\x08\x04\xe2\xd2\xa0\xfc\xa0@\x19!\x10\xce3\x86$N\xf1\xdeb={)w>\x17\xefG\xa5\xe90\x1b\xfd\x8e\xfe\xdb\x0fNIy\n\xf2!G\xf7\xf40\x98\x97\xc4o\xd6\nF8x\x91q1s\x02\xc3\xc9\xe7\x11\x8e\xd3t0\xc0}\x84{W\xd6\x18\xe8\x187z\xaa\xf5\x97`\xef\xd4z\xbb\x9dM\x12\x16\xad\xfdh\x8b7\x04S\xee\xcd\xf5H/\x1b\x06\x95\xe0d\xe8R\xa0\xf7P\xe4\xe1;L\xe8\x0f\x9aF\xff\xd8\x802\xcdaO\x1ct\xc7\xeap\xfcF\xa7\xdc\xd9\xaf\xc8\xb1bB\x9dd\xf1:\xc2\xa4\xb7\xbe\xf0v\xc4mw\xed\xd1\x94\x91\xe9\xd9\xcc\xfd\xe1\xf3\xf3\xa6\x0f/\x1a>m\x1a\xad\xa7\x9f65\xdf4(\xd3\xf3\xc6\x91o\x82\xebE\xd38>w\x8c\n)\x98\xd29vbk\xb6\xa1Y \xda\xcb5\xf9S\xeap\x94\xd5H\xec\"\xcb.\x80\x1c\x192\x06T\x89\xd7]7G\x83\xc1\xc5@\xd1&'G\x8e\xf4e\nE\x82\xd4\xb6L\xe8\xbb\xe2UJ\xa3\xad\xf4!\xa3Z\x87\x83Q\xce\x82\xca\xf6\xe2\x1f \xe2w\x1e\x8b\xaa2\xc8\xc9;\xa7\x0d\x17E\xe2v[?=\xbc\xd8\xff\x82\xf1\x81\xd1#\xe1h\x8f\xc8\x89p;\x9a\x85\xd3\xcb\xb3\xd2\xf5TSYyV\x9c\x88ck\x98\x1e\xacA\xbb(9\xa0\xc6\xb0\xf4\x19U^>\x9eS\x12\x7f<>\xac\xb9\xb0~\xd4\x1c\xcd\xfb\x9d\xd4\x189\"\x15\xab\xc9\xedE\xce\x14+\x1e\x92iC\xe8\xd9\xe2\xefC4\x1d\xec\x90\xfe\x9d\xe4[\xe1\x1d\xe5kh\xabE O\xdaw\xbd\xc5\xdf{\xf70\xd7Xzi|\n1SG\x87\x81\xd7\x80\xa7\xf1F\x1c\x02\xbc\x03\xd0N\xa3\x11\x0d\xeb\xc1\x13\xb7C0\x1ch\xdfiv\x17\x0f\x87\xe8\x19\x9a\x93\x96;\xdf\xb1\xa2rq\xe3\xfd\x1b$U\xf1\xc7RF\xd8\xa5\xc5\xb59\xb8\x0e\x9c\xa2\xc0<\x7f\xfe\x02\xfdP\x13\xbd\x19;+\xf4\xaa\xb7X\x9c,z\xbf\xfe\xe4\x9f\x1e=\xee\x0f\x9e\x0cG\x93\xd3\xd9\xc5\xe5\xd5\xcb\xeb\xdf\xcc\x97o\xde\xfe\xf9g\xf9\xfe?\x8f{f\xe3\xd2\x1bt\xbboQ6\xb4Z\x92\xabb$\xa9\xca\xe5\x8b.d\xd5\xd2\xd4\x96\xad\x8a\x92\x9bk\xa4\xf3\xf3\x06\xbf\x8b\x07(\xeep\x18\xe3\xc5\xdf:j\xf9\x8d\x8e1\xf1\xb6\xf0\xf9\xf3\x17\n)\xcc]\xb0(\xbf\x88\xd0\xc4\xc8\x8c\x8fg\x85\x10\xc3+r>r2w\xcd?\xb4\xc3J7\xca\xebM\x15\xf8\xf4\xea\xb6B\xbb\x90\x96N+\x14\xa2\xf2 \xb6\xf9\xc7/\n\xf3k]\x1c\xb6\xb1_5\xbf5\x0fuo\xb1\xe8\x99aV\x1b\xc1\x8f\xb3\xea\x8eE\xe4\xd29F\xb3\xa0\xa0c\x89\x1c\xe3*\xc8\xee \xb3\x11\x01\x0f=\xbc\xb4\xa1\xcc\x0c\xb5\xfa\xfcE\x93+\xa1\x8b\x81*\xe8\"w\xa4,rE\xe8\x12\xc3\xd7\xc1_\xb3\x0b\xb0\x84\xac\xdc\xa7)D \x81\x93\xbf\xe6\x8d,\x85sx\xb8\xceH\x0fAIU=\xd4\x85>>\\\xc0\x19+\xa8\xae\xf2\x00\xb6\xe5\xc5\xd7\x85_4\x84\xed!\xa4\xd9i\x85_\x08\x93?'\x8bh9\x04\x93]\xd2k7Q1\x91|\x9a,S\x0e1\xa6\\\xde\xa5\xb5u\xd2uU\xc4E\xca\x93G\xfd\xfd;Z\x1cJ\xb2\xadu>m\x91\xb1\xcf\x1b\xd6N\xdaN\xf2\xdb\xed\xd7R\xf4^\x06w\x91[\xb257\xfe\xcb9\"\xf3u \xce\x94\xbc$g\x18\\\xa0\xda6\xd8.\xcf\xc0)\x96\xd3\xa7\xb9\x82\xee|0\x02\x03\xca\xab\x83\xd7\xdcL\xaef\x9f\xe7~\xee\xed\x8c*\x9c\xd3|\xab\xb9\x00\xd0\x01\xaeC`\x9ec\xdc0\xb8\x99n\xda\xaa\x81\xcc\x15!\xa8\x05\x0d\xf3\xd1\xa74T\x93\xc7O\xb2\x08\xce\xc9\x98\xa4\xa3FF\xacWt:\"\x1c\x0f\x89\x1c@\x9a%\x97\xe2A~\x8c\x8e\xe4u\x0b\x10>.k\xf4v\xdd\xd8\x19TC\xb6\xf6\xd7\xb6\x80\xceH\x9c\xf7\x161\x0f\xda\x0dY[Xj\x96\n\\\xd2T\xc3\xea@\x11\x9b\x01\xd1\xc4\x82b\xef?\x9a\x8d\x17\xbc\xd8P\xa8\xd7$\x1e\x8f\xc9\xcc:\xc1/|\x84\xe7\x18\x1d6]\x82\xa7\xe7&\xa1%\xfa\xc0\x18J\x04wSxjou\xe6}\xd6\xc1\xd4;\"\xd7zF1\x06\xaa\xd6%T\xe6\xd8\xa2K\xbb\x15\nk6 m3\x8c{\xef\xf6\x98\xd6\xb6\xcb*\xb4\xf8@\xc3\x97\x02\xef\xb0\xdd\xd7\xd6qv02P\xa2\x90Y\x01\xe7A\xad\xfco\x963h\xdf\xfd\xff*\x8c\xa1\xb1\xed\x7f\x13|\xe1\xd9\xd3\x0elAg\xfa[p\x85g\x0d\xee0\xdb\x98\xc2\xc9\x95\xae\xe7\xef\x8e-4\xf5&\xe7\n\xad9\x8e`\n\x1a\x0b\x1f\xce\x13t\x05\xff` \x9dX\x82\x1f\xa5\x7fc\x96\xa0Z\xfc\x07K\xa8\xfcZX\xc2\x8b\x06w\xc3\x7f\x0b\x96\xd0\xd8\xf6\xbf \x96\xa0\xdd\x9e\xb5\xb3\x04\x9d\xe9o\xc1\x12tS\xffNXBSor\x96\xd0\x9a\xe3\x08\x96\xf0b\xfa\x81,AW\xf0\x0f\x96\xd0\x89%\x84\x94\xdf\xfc\x8dy\x024\xf9o\x8c)\xd8\xe46\xd3 \xb3f\x89\x0d\x00\xc50\x00\x14\xa8\xfaT\xea\x8b\xe76\xf5\xf33\x9b\x8a\x9e\xe9X\xd53\xdd\xd1Q\xb9\n\xfeR\xeb\x03\x9b\xa1-}-=mH\x0fZY\x98\xe7Z\xc6\xc2u4\x85\x97\x0c\x1a\xc8\xbb\xc8\xc9;\xeaZ\x03\x18\x89j6\x8a\xa1\x95=\x97\xaaU\x0f:\xdc\x16\x81\xd2`5\x0f\xf7\x9a\xfa\xa8\x10\x1e\xeb\xab\xa7\xcf\xc85\x8c\x02\xf4x\xaa\xf0\xe3i!\x9a\x1f\xb6\xee\x80\x91\x16U\x10H%bt;o\xda\xd1\xd5D\x85\x1c\x91u\xe1\x0c9>G\xa7\xb0\x1e\xc0\xc7\xfb\xda[\xad\xad\x80\xf7\xe3\xdc\x15\xf3\xc9t\xa0\xd0\xbc\xbe|<\x1a\xc1J\x9d\x91\xcc1!4\xc25\xe5t\x07\xbff\x81\x1f\xa63\xe27\x10\x97\x07\xd8Z\xe4RO\xf5\xdap+\xe2l\x9a\x0f\xce\x12\x17Nm\x06uF\xa9C*&\xb0\x01\xc0\xb1O>@\\\xfb\xbb\xdcW>z\x84\xfd\xd3s\xa4\xbax]7\xb7\xb0\x01\x05\x90\xad\xa3C\xea\xd3\xfe\x1b9\x7f\xb3X,\x07\xfd\xc5b\xb1\x18\x00\x83>9\xcc\xf9U\xb6(?K\xd5\xb1\xf8\x80\xcc\x18s\x08\xe3\xdc\xd4\xde\x07}p\xfc\xe1\xc0O\x9du\xe0\x87+2_\x0e\xcc\xee\xac\xfe\xbd\xe0V\xd4E\x0e\xe2\xc3\xe8Xv\x0cR\xa7\xcb\xeb\x87\x84\x8d\xac\xac\x1b\xdc=\xd6\x1c\xa1\xba\x17S\xbd\x93s\x7f\xa9\x06\xaf\xde\x03\xa8p\x96W\x9d&\xb8\x9d\xa9H\xfe\x95%ZXCqm\x07\x90\xd9\x08x\x1fc1\x1d\xbbhJa/\x9b\x17M\xcbU\x1d\xc5\xba\x9e\x92\x97\x07\x8c\\N\x1c\xf8ZM\x83 \xd6\xad\xb54EGo\xb9\x16\xd4\xa60\xc8~9K#k\xa7\x93\xe5v:\xf4\x82\xf0\xe3\xa3\xa3\xf3\xc3\x81\xd7\xa6\x0d\x02}\x87\xa2M\x81\xd5y\xf7\xc0\xeahG\x04\xfd\xd4\xe4\x8e\xab\xe1B\xd7\x8a}\xae\x96cT\x11k2\xe3\x05\x10\x05#-\x12\xe1\x1c5\xc65\x8f\x96\xcd\xe4\xaf\x1bMk\xaf\xfc\x12D9\xad\xaah%|\x0e\x82\x11\xbb \x86\x8e\x98\x1e\xb9\xb4\x08Y$f\xe4\xacN8\xda`\x84\xa8\xcd3\xe2\x82\xb1\x94\xb1\x99~\xcf\xe3\xe5\x04\xdan\xec\x08~\xd6\xd2\xc7\x87R\xf2\xd8\xc1\x80\xb3\xd57\x0f\xa0\xf1\x05\"\xcaK\x04\x94~\xc4\xc0\xe4\x05Y\xe4\xecY\xd5u\x99\xd1\x99|\xe6\xd0\x99\x14\xe2\x8a\x9e\x8d?\x9f\x9c\x80\xf2\xf4\xc9pqzum\x15\xa6\xc3\xdf\xe49\x96\xfd\xebY\xfe6^\xfe|6z1}_\xf8>\xb8\xee_\xcf\x16\x93\xa3J\x0c\x9e\x0c^\x9e\xd6\xf56\x05\xd8&\x8b\xf1\xf2\xe7\xe9\xe8\xfc\xf9\xfb\xc1\xac?\x7fs\xf9rqwv6^\xdc\x9d\x9f-U\xd9\x87\xf3\x91\x92n\xa7U\xc2z\xd1\xa8}\xd0\xd4\xa3_\xa5\x16\x9b\xa2\x13\xaa\x97\xbd\x82(\x04\xaa\x90H\xab\x0f)\xb8\xab?\xe9s\x9b9\xab\xc5\xa1,\x94U\xbb\xa1l~\xb6\xd4\x8dL\xf5\xd5~\x0f\xac\x08\x02\xb5\xe7:\xb1\x02C\xd1/W?(\x8ba\x1dd\xef\xd6\xfd\xc3\xc1]Be\x1d\x1c^\x96\x02|\xe69(\x8e\xd6[\xba\xc2S\xb2\xaa\xe3\xc3\xa3[\xed\xb2\xcb8\xb0\xb2\x87zF\xf2[\x98\x03E\xedN04i\x94\x874\xb5\x13\x986M`/\xa4~ b \x87m\x93\xe9\xfdc2K\xbf\x8f:\x99iu2?\x0e\x91.\xd2\xa6y\xcf\x8b1N\xe7:\xf6\xeb\x8e\xe8(\xa5\xfa\x0fD\xe6\xa4\xab\x18CwR\x0f\x0b\x99?>\x04\xd6\xf48\xfe\x05\xb7u\xf0\x17#\x94\xfa\x18\xffs\x0d>\x1d\xads\xbb\x8d\x80\xb2[\x16\xc3\x1f\xfdo\xb2\xd3\xd1E\x9f\x9ec\x04R\x81\xd9\xd4_(\xee\xd3;\xf8\xa3\x9b\xf6C\xfcW\xbfE\x1b\xa8\xc7O\xf0\x95\xfb\xa9\xf9;Y1f\x13'w\x89W|\xces\x05\xb7\xef\xd4s\xb0\xc6\nq\x19\xc0\x13\xf6-Lyb\xfeB\xa9P\xfc\x84 Y\xa2V\x85z\x8c\xd8-|\x8a6\xf8\xc7\xc7\x7f!\x16i\x14a\x7f\xe2\x84\xfe\x94\xb1 \xf6n`+\xa4\x92\x92\xd8DD\x85b\\\xa4\xf0\x9e2\xbe\xf7=\x86\x8fij\xe2\xa1\x9a\x81I}\xb6\xc7\x8f\xbe~G\xb8\xd2\x10\xffD!&\xc74\xb1C`_ \x0b\xfa\x84\xec p\xca\xa9\xfeD\x188V\xe8\x19\x12;?\x0dY\x9a\x82\x06\x8a\xf4D\xf4\xf4\xfc\xd33x\xc2\x16\x05\xccr\xc6\x01\xae=\x0bC\xe8/\x0e\xc1-\x86t\xbd\xf3\x10j\xf5w\x9c\xa5L#\xca]\x18\xf0\xc4\xb3`\x15^\xb1T\x88\xd3\xf8\xee\xe9\xe7\x93\xe7g<\x7fDd\\\xfbYx'8b\xe8&\xc1?\xf8 \xb1\x82j$\x16\x82z\xbb\x90E\xf8v\xab\xfe]\xb1tG1\xf4\xec\xca\x17^\xeccX\xde8\x80\xb9\xf6h\xa0g\xdd\xdb\xf1\x18\x83\xda\xe2\xd3\x98\xdd \x16\xa566o8f{\x16\x89\x15\xf7\x05\x1bS!X\xb4f\x98\x1d \x0c<\xee\x01\xa8u\x10\xd1q\x12\xd0\xfb\xd4\x8f\xb6\xda\xbf\xa3IR\xb9\xa9\x1f!\xea\xaf\x05T\xbe\xde\xaf\xd4\x1f\xb6>\xbfQ\x7f7\xd4c\xc2GX6\xcc\x84\xf9\x8d\xb6:\x84\xaf\x9f\x02zma*\xb7\xbe\xc0?\xef\xc28\xe1\xb1 \xc0\xbb\x154\x80\xbav\x1e\xae\x04=+~\x82\x7f\xb8^\x13\xde\x0b\xfd\x17\x97\x85@L\xfa\x91BK?\xe2\xdb\x0d\xbbO(\x16\x08h*60\xe0j\xd5\xe0\xa2\xa0[\x8dD\xa1M\xe17:%G\xa5\x10\xeb\n\xd3\xf1\x8e\x05zYE8wa\x16\xea8\xbf\xe1\x1e\xa0\x03\x19[=\xc4\x88; \x0dB\xfc\x9bPN\xdf\xbd\x03\xa4K\x02*L4\xe3\x84\xc7w\x10\x1f8I\xef\x01\xce\x9f2\xc6!\xc1,0\x96\xc6\x19\xc7\x95\xc5\x11iyz\x1fA^.\xf4\xb2a^\x1c\xad\x03\x7f\x83KL\xaf\x88t\x8bk\xf0\xe6>\xc1\xf4\x10\xa6*\x8d\x835\xc5\xc0\xc5I,\xfc\x0d4\x96\xe2\xc4\xa4\x82Q\x00+\xc5\xee\xa8\xd74\x01\xc7)\xb0\xc2\xa2-\xc0\x94\xad\xa1\x81,\xe2\x8c\xc2r\xcc\xc4\xf9\xd9\x19DaVx\xc6}D\xd0\xbd\xcfn\xc79\xf4\xb7l\xe5a\xf6[Aq\xf5\xdd{\xfe\xed= \xc3\xdd\xc6GD\xbf\xe3\xf0\xe9>L\xb7\xbc\xb7|8\xff( \xf9\x9f\x0e&\xbf\x7f\xfd\xea\xdb\xb7\xaf\xbf\xf8\xe7\xb7\xdf\x7f\xf5p\x01\xb8\xa2Eq+\x17+A\xf8I~CE+^\xc8Ic0}\n\xc7\x1aE3\x05\x14\x97\x9f\xea;\x8dN\x97\x0e\x06\x17\xa7\x15\x8d\\\x8a\xe5@u\x04\x98\xac3?\x9d\xbeW\x99\x1f\xce*\x8b\x97v\x1c\x04\xab\xc0\x0f\xeb\xfa\xf8\xa7\x9f\xb9\xb9\xa3w(Z8\xde8\xdd\xb8/\xa9<}\xee\xd6Iy\x9a}\xbai\xa6\xbf1f(9\x93\xf1\x0c'+\x1cI\xa0rA\xf1\xe7\xde\x1dF\xaa \xe6\xd3\xa5b %\xdd\x14\xb9&\xa0\xa1\xf8&\x12}\x95\xc1\xe85\x06#2}\x01\x01\xd6\x8b_Gd\x8aa\xb6\n\x97\x81\xfc~\xa4j\xa1}\xa0\xcc\xb4\xff\xe2\xf9\xf3\xa7OK;\xf2\xa0\xcc\xb6\xea\xc4\x1am6\xc0p\xa8\xb1k)2\xe9X\xf1\x01\x05J\xb5\xa7%\x98\xf8\\eY\xb6\x00\xe1\x14\x95\\\x0e\xec\x1e\xfd\xc2\xfe\xeb\xca\xb3\xac\x05\xb5\x99c\xf2\x95\xe0\xe1\xf6[v\xa7>\xfd1k\x88\xca\x01\x07*iC\xc4\x0e\x1am\xbf\xe3l\xe3\xdf\xcd\xd4\x8e$\xdaft\xcb\xc6.\xed\x8b\x1f\xdd\xf8\x9b\xfb\xc6\xf8*7\xaf)\xdf21sJ\x03\xe2>\x89!\xa8\x08\xe3\xee\n\x809\xa63\xd2\xfb\xeb_\xfe\xcf\xbf\xfe\xe5\xff\xfa\xeb_\xfe\x8f\xbf\xfe\xe5\xbf\xb8\xd4]\xfev\x17`\xfc\x91(\x0b\x1cJ\xa8\xfc\x8clF\xce\xab\xa7\x1c\xa5W/\x0e\x938b\x91p\x8e\xb5\x17s\xe6JW?\x9e\x05\x10\x8a\xa5\x07\x9e\xe4z\xa3<\xea\x8b\xda\x1c\x19+\x19|\x03\xc9E1\"x\xd7\x83\x88{\x1f\xca\x05v\xbb^\x8e\xaeV\xfc\\=\xd8\xa3\x0eA\xfd\xa0\xe7\x08\x83\xe8\x98mto\xd7\x05th\xbe72\xce\xf7\xd4\x06\xd9@`\x1aV\xcf;F\xd7\xc8 {;T2\x890\xb0}\x0f\n\x9fu\x90\xbeB\xd0\xa6\x91\x8e\xa5\xdb\x0dv\x1c\xc7\x83\xc0\x17\x02w\x94b\xa7\xe8\x00)\xc5\x00&y\\\x8e<\x14K5FH!\xc2\x87\x0dHR\x08\xef\x82\xbaP\x07\xfc\xbfr\xbf\xfd\x83,\x14?\xfe\xbb$\x0b-\xcb\xae\x0d\xab\xff\xce0\xc6q\x1d\xbe\x801\x8e\xaf\xff\xc0\x18\xf8=\x04cj\xe9\xe4(F\x82\x0c\xa1\x13\x0d\xfd8\xf4\xffCh~'0?\x94\xd4\x1f\xa2\xf1\xff\n4\x1d\xb6]\xf9\xd2\xe4\xc5}IU\x98w\xaffS\x0b\x83#&jf\x1e\xfez<\x8e\xeeQ?\xbf^s\x86\x07\x04\x943\xcc\xc5\x85\xef\xa1\xde\x97\xa6>N&\xcd\xd6>h=A\xc9\xbaZ\xfb\xf8\x07\x93|\x18\x99\x95\x1d\xda\x12:\xac\xe25\x8c&\xb6\xbc\xca\x84\xd0z{\x1a\xed\xf1D\xcb\xa3\x890\xca|\x16 T\xa6{~\x19\x9b\xbc8\xd0\x7f\xb6<\xce\xf0\xc4+W\xef\xe7\xa7]\x82\x1a\x1cZ\xe39\x18\xf3bNE\x8cZ}d\xe9k\xa6$ d\xf2\x1b\xd4\xf3\xfb\xf8\xdd\xc7\xc32\xcc\x05\xb5\xb0\x80\x99S\x0b\x06\x03\xb6\xf1Y\xb0N\x99\x8e\x11\xb5-\x00\xbf\xf1\xb7\x19\xd72\x01\x96P\xb2\x81>\x1b\xd0\n\xf1\xdd\x14\xfe\x05yl\x87\x87k\xa0X\xde=\x87\x7fA\xe9\xaf\xd6\x83\xf9\xab\x0f\xe2l\x9f\xf3\xf5\xa3\xfe\xc2,\xf8!\x0c\xbf\x1f%x.\x88a\xdbz7+\xa8\x04\xacw\xe0\x81mY\x84IP,\xa4x\xde\x12\x9aC6\x08\xe5\xa6\xfe\xfe\x94\xe1\xf1I\xc8\xa2\xcc\xfc\xf5\x05\xf6>d\xbaC\x11\x9e+F1\xce+\xceN\x9c\x08\x0bil\xc7%\xce\x84\x06\xcd\x9c\xad\xe1\x9fxk0\xef'\xf5\x0f\x9e\xe9q\xc8\xc8\xb3\x15\n\xb6\xf0\x0f\xb5\xe7\x00\xa6\xca\x94\x05\xfa<%\xdd\xd1u\x0c\xc7IiH\x03\x80\"\xd7\xc9\xa7 \xf5\x10\xdc4\xa1XPp\xff\x86\xe9\xa7\x18\x89N*\xee\x11\xdb1\x08]/\xcd\xc2\x90\xe2)\x05\x06\x9d\xd3R\xa7z0\xd8,`$\x05\x0b\x93@\x1f8*\"`V\x90P\x13\x0f\x0f(\xb4\x9a\x195gG\x82\xe3\xbf\x14)\xa0\x80\xbc0\xd6\x19\xf4`\x8f\xc7<{\x7f\x8d\x07\xb3\xb7+\xdes\x04\x8a\x03\xa3\xb0^\xba\x87^\xe0\xd2\x0d\xc46\xb8GQ\xd9<\xafQ.5\xaff&i\xe4\x87T0/\x0epm\xe8\xf706c\xac\x13\x04\xa7Qj\xd0\xd7\x92\x81\xc2\xea\xf5\xb9&\x16^\xe0' \xc5.\xaf\xd9F\x0b\xd1)\x9c\xe5\xb0 \xf0\x93\x14\x17\x87\x1f\xd8E\x81\xcb\x04\xcf\xcb\x0c\xdc\xf0`\x84\xe9\x1b\x86G\x9a\xda\xf6\x1e\xe8\xaf\xfdK\xf9\x96\xd3\xb5\xaf\x97'\x9cnq|J\x11\x97\x99\xa0\x862\x84\x06\xb2\xc2_\xa1+O\xe2\xe0~\x1b\xdbG\xcb5\xe9\xda\xa7A\xb1 n\x90N\xe01q\x8e9\x10\x01\n\x9e\xee\xc3U\xac\x0fq\xef\x84\xf9k\x1a\x05\xabzx\xd0\x1d\x14\x061\xed\\\xef}\x06\xe8\xbc\x87\xae;f=\x82Y\xdf\xb0\xdf\x06z=o\xd8\x97j\x12_Q\xc1\xfd;\x93\xa0\xc5\x88\xd70{z\xb819\xd5\x94U\xbdF\xfb8\xd8\xb3b\xc9\xdf\xf9\x9bM\x96\xb2o\x958\xa3\x99\xb2JL\xed\xde\xf3\x15\xd2\x0bH\x144\x12\x90\x13S\xbe\x0e\xe2XC\xf4u\x16y_\xe4\x8f\xbf\xcd\x1f\xff9\x7f\xfc\x1e\x1f\xff\x99fi\xea\xd3\xe8\xb7A\xa6\xe1|\xc5\xf8\x96\x15\x1e\xff`E\x8aW1Ovq\x10o\xef\xf1\xfd\x8f\x9b\x8d\xa1\xc5\xa87,\x80\xf3C\xc2\xbc,\xa0\xbc\xdc\x97\x1f\x92\xb8\x98\xe9\xb5\xb1\x84`\xaf3\xbe\xca\x02%\xb4\xb8F\x1d\"r\xf4B=\x8f!\x8b\xb4e\x89z\xe6\x1c\x97P\x08\"\x0f\x9a(l8\x05\xc4\x0f-^\xe3\xe9f\x08\x04\x99\xad\x91\x04\x84a\x16\xf8h\xea\x81\xa7\xb0H\x92\xd1\xd8!\xdektN\xe8z\xad\xabMv4\x121\x92b\xae\x89L\xc8\x91\x00\xea\x83\xdc\x04\xa8\x1e&\xfc\x84\xe44\xbc\xb7\x98\x1aj\"\x17j\xd2\xa6\xde\xcd\xa3%s!\x92\xb7\xd0\xa0p\xa8\xa1\xcd\"\xcd\x90\xf0 \x00t\x8cU\x0cc\xf5k\x14\x8b\x1c\xd2\x1a\n$\x9e\xc7\xb4m\x80%\xeb4\xf0\xb7\xfa\x01\xbfd\"V\x12q\xc0\xb4,A\xbd\x1b\xc5`\x10\xefW[K\xbcV1\xd7\x90y,\x08\xd4x\xe9\xf9V\xafj<\xcc\xeb\x8ey78\x94V\xc0\x08(2!/`Hvm\xad^\x8cB\x82\xfa\xab\x97\xa9\x17\xc7|\x8d\x89\x9a:A3\x8a!\x8cW4e\x86g\xd2\xd436>\xe6L\xcf \x84M00\xd3w~\x98!`\xaa\x8a\x8d\x9a \x16y\xf7&A\xd59Nw\xfe\x06\xea[1\xbd\xd2V>\n\x1e(!\x16\x96/ZB\xa9\xbfc\xc3o\xe1E\xed\xffz\x95u\x1d\xf3\xb1Z <\x89\x03j7\x1f\xf5\xe41\n+i\xfe9\xe1\xb11\x9e\xc3\x04\xce\x14)4\xf4\x05f\x07\xbb\x80\x8b\x1d\x12Pf\\#k\xf5\xe2\x08\x18'&\xf1\\\xa8]\x03\x97\xd5Y\xf7~\xaa\xf7,\xc8\x14\xd9z\xcbB\xcd\x06Y\xc0\xf6\x16j#\x04\xf8(\xfc\xaa\xbf\xe3XQ<\\\xf9\xf0nF\xa0 z)V=\xb6#\x82\xaf\xc5bq$\xc6\x1b\x1a\xfaA\xfejP\xdb\xbe\x8c\xe9\xfa\xc7,\x15y\x9a\xe0L\x8bA\xfa]c1\xbc\xed)\xf7i\x94\xe7\xbe\xb5h\xb6A\xd9\x03Z\xda\xc2\x06i\x0b\x1b$`\x9dc\x83?E\xb9\xd0\x08eY\xe4#\xe34 %i\xb5@8u9M\x1a\x950Y\x9e8D-?\x82va\x99\xdf\x00 7\x98\x00;\xb5\x1b\xd8\xa9)\xb1L\x17\xbaa\xf7\x89\x929R\xfd\x92&\x10X]\xbf)n\x00\xcf\x96\xd4\x02%\xcd\xc7,`\x8a\xd6\x8d\x0b\xecI\xd5\xcd\x82\xd0\x8ac\xf8\xae:\x99S\xe1@K3\xf9\xe4\x05\xb16P\x1c\xb3\x84\xef\xbc\x1d\x8d\"\x16\xa0\x00\x84=\xbdw\xa4Asw\xd0\x8f;\xe8\x07\xca\x1f*7\xfc\x03_\xee\xe1\x0b\x18|\xbf\x8b\xe3\x90Fk%09d\x94\xac \xa3\xf4P8\x81U\xaa\x97\xb4\x15{Vl\xcf\x02-k\xdbM\x9a\x17\x07Y\x18\xa56\x13\xbe[r\xad?kQm\xcd\xa28\xb4Y\xd7,\xd1:\x0d+\xcb\xe7l\x1a\x1es>\x07\xbbG\xf5\xc05ykbA\x81\xc2\x1f-q\x17H{\xc4\xc4\xce\xf7n\"\xad\x17\x0b\xecV.\xb0\xfaT\xb5\x05-\xef\x83T\x8a]g\xea\xc50j\xf5\\\xe0\xba!\xbd\xb3_\xfc\xc8>\xc6{\xb55\x81U\x03\x8dFqNL\xa3,\x1f\x07#\xad\xf3\xf8\xd6\xa6\xf1\xf8\xd6\x8e!\n\xcc\x06w\n\xe23\xb7\xbd\xe0\xb6\x17\xb8\xe7\x05\x03\xc5\xfc\xb5\x00\x95\xde\x13\xfb\xef\x98\xde[\xf8Z\x8f\x07\xe8e\xb5\x80 \xb5L\xc2\xbeh\xe2\x03\xa2\x88V\xe2\xe9 \xffV\x96L\xb3\xa4\x9ar\x1f\x86Lp\x1f\xe4\xf1}N}\x0e\x8b\xcex\x83\xe3.\xf0\xa3\x9b\x99\x99\xe3\xbb0\x98i\xebzH\xb7\xe2\xba\xfa`G\x03\xaa\x9cA\x8e\xde\xb2`?I\x8a&\x8f\x81\xd3\n\x89T#7\x9b\xab\x9d\x17$\x1a\x8f/\x06\xa8\xe8\x8c\xb6=ru\x05\xa6\xa6\xf1\x86\x88\xb9\xb9}:\x87[\x98\xeaO\xe5f\xd9\x88\xb0\xb9J^6x\xdf2\xa6\x9b\x95\x83\x0d7\xe4^\xbb-\xae\xebp\x93h\xf5\x16^\xa6\xad\xb7\xaf\xbdc\xfb\x11a\x03\xf2\xc7\xd5\x8f\xcc\x13\x85\xf0\xf2;\x9a\xfe\xf16\xfa\x8e+\xd1A\xdcO<\x1a\xc0\xe0i\xcf\xd1\xba\xd7l\x1e-\x1d\x9eT\x8c\xc9N\xc3\x91\x0d\xd1\x80o\xc0\xbb\xdc\xcf\x8b\x9f\xe7\x8bt\xf1\xc3\xf2\x89\xd4\x7f\x17\xef\x17\xefO\xb7a\xbdG\x89*p\xf9O\x95\xec\xff\xf4\xd2\x99y\x0d\xd6jk*\xe8x\xbe\x18/n'\x8b\xec\xec\xec\xb7\x9f\x8e\x17\xd9\xd7_\x7f\xfd\xf5\xf2\xd4q\xf2\x08%\xd4\x12\xc7\x12\xcb\xe1'\x8e\\{\xc8\xd5\xbf\x9e\xe1\xff\x1b\xb9\x13\x03\x91\xa4\xd7\x12o\xd6H\xc1\x02\x89\xd7-\xa4\xe7\xaf\xe5]\x98$\x83\x99\x9c\xbf\xa1\xe3wK9\xa7\xe3w\xc3\xc9b\xbc\x1c\xf6\xafg\x90\xa6\xdefK\xf9\xc9`P5\xb7#\xda\xb3\x154\xb6\xb8\x1d\xe2\"\x93`\x829se\xde\xaa\xccs\xd5\xcd\xb3\xb3\xb1\xfas~\xa6\xfe\xfd\xe2l\x91M_|\xa6\xfe\xfd\xec\xec\xabEv\x8e\x9f\xcf\xcf\xce?W\xff>\xdf,\xb2\xa7ggg\xcb\xd3m\xbd\xca{rEz\x06 \x8b\xf8\xff\x03hf\x15.\x18%m\xed\xe3D\xc9\x0f\x8a\x86\x90\xeb\x03\x16\xe5\xa4\x803XC\xdd\xa9\xee{2\xeb^\x0b\x03\xc0\xda\xe1f\x13\x10\xd1x\xa6\x18,\x18\xe1\x15\xbe\x81M\xa1\xee\x86]\x13\xe4:\xef\xec\xac\x05\xd2&\xea\xb3r\xc3\xedoH\xff\x0b%\xb5M\xfc\x14\xfe\xf6Y\xa3\x85\xa1%Sj\xd1\x9f\xe1=z]\xc6\x98\xb0_\x10\x01\x11\xe7\x0d \x13\xc3\xe1\x80Ds\x81\xebU,\xeb\xcb\x95\x14\xdc\xf5\xd5{\xd3\xb4\xba\x11\xe4\x0d\x8f\xc3vG\x80\n\xda\xb7m\x07\xae\x85:{J\x00\xd9\xf8\x11[\x17\xe7\xec\xd6\x8f\xd6\xf1-\xb9\x06{\x002\xd3\xef\xe5&\x9d6\x83v\xe4o\x9d\x8d*\xc8\xbe\"W\x84\xf2m\x06\x86`&\x92\xfcK\x8c\x0d_\xf0B`\xb3\xcc\xcf\x96\xe4\xba\xfc:#o\x9b\x02\x9a\xde\x95\x0c`\x9b&\x95\xe4\x10\xdfV\xc7\xd2\xfc\xde\xbb\xbd5\xdcM\xf6\x8c\xa7\xaa\x8bW\xa47\x9d\x9cM\xd4\xae\xfan\xc2Y\x18\xef\xd9Z\xc7\xbd>\xf9\n\x9ck|5Y\xc7\x1e\x80\xad^?\x87~\xe5i\x93(^\xb3\xd7\xf7 \xb3\xb6\x9bw\x13?\xfd!K\x92\x98\x0b\xa8\xead:\"wu0\xd4(\xfe@\x8aU\xb9\xc7\xe2\xcb\x06\xbf~\xeaw\xd3\xf2\xed\x8b\x0eu\xff\x11\xf2\xfcN\xe7\xf9\x9a\xd3ms\xde\xef \xef\xef_\xbf\xfa\xf6\xb5>p\xfc\nO\xa5\xdd\xd9_C\xf6?\xd4,\xad\xcd\xef\x95\xfd\xfe5\xe8\x83\xdc\xb9\xbe\xc1\\4dk\x95\xf5\x15M\xdc\xf9~\xb4\xfc\x1a(\xd27\xe4\xbaRLM\xddW\x93W\xf1;H\xfcB\x08\xae\x12g\xe4\x1bw}\x7f\x80v_\xb3\xbb\x86\xde}\x0f\xdf\xbfD\x8b|w\x96\xdf\xe1\xd8\xfe\xf1\xd5wp[\xda\x9d\xe9[\xc8\xf4?\xbf\xfa\xf6\xf7B$\xdf\xb3\x9f2\x966T\xf7\xa7r\x0f\xbf\x85\x1e\x96\x0b\x92\x19\xf9\xd6]\xf8'h\x86Ej\xff\xf6\xa7\xef\x1b\xfa\xfcu\xb9\x85\x9f\xa0\x05[\x86\xcc\xc8O\xee\xb5\xe4\xe4\x17\xdf5-Z\x85\xf6\xef\x14\xf5\xfd\xff\xd9\xfb\xda\xae\xb8m%\xe0\xef\xf7W\x0c~zR\xfb\xe05\x90\xa4\xb7\xed\x06\xc2!\xb0ii\x03\xe4\x02i\xdaK\xf3p\xcc\xaev\xd7\xc1k\xed\xe3\x17^z\xcb\x7f\x7f\x8eF\x92-\xdb\x92\xec%iz?\\\x7fHXk$K\xa3\x91\xe6E\xa3\x99`\x9c\x92\x8a\x88\xdc\xea\x18\xdb\x10\xc4\xff\x8f@\x98D\xd8\x16S\xfe\x08\xe8mBRI\xc1(c1\xc27\x94\xdb.\xd5\xc8\x87u\xf0\x15\xeb\xa0\x1eK\xbf\xc0\x0e\xbc\n\xa2\xc5\x92\xf7\x1b\x95\x14=\xe4\x8f\x08\xc9G\xc9\xa8\xf0P\xb0u=\xf4{\x84\x9e\x91\\ ${u\x7f\x1e\xce\x18\xb5\xea\xe1\x7fRZ\xef\xb7\x80\x7f\x83\x1d8c=\xa7in^\x97?\xa3T\xdc\x9e\x82\xe6\xae\xf6Kc\xa7\xffE\xf4\x85m\x10\xeat\xf0\xfdr\xaf\xdc\x88\x8e\xe8Ds\xf7\x8d!\xfd\x07\x8c\x8c\xa6\xed\xd4W\xb0\x03\x86\x95\xffo\xd8\x81\x89\xbe\xe8W\xd8\x81\xb9\xbe\xe8_\x18wM[D\x08\xec\x80F\xa4cON0(\xa0\xb6,aez\xcf;@F\x05;\x10\xbb\xffy\xf0\xe1\xe2\x03\xa3\xceq\x98\xbbW\x188\xeb\xca\xcd\xf1\xdf\x04\xffM\xf1_\xeay\x06\xdeH\xed\xdf\x89\xf4\xdf\x89\xb0\xd5\x10\xff-\xf0\xdf\xcc\xf8\x85\xd0\xfe\x85\xc2^\x9c\x11Cb\"\xc0[\x81\x96\xc21\xb1\xb0\xb3\xa9\xadpi+\x9c\xd8\n\xe7\xb6\xc2\x1b[\xe1\xc2V8\xb3\x15\xde\xdb\n\xafl\x18\xba\xb4\x15\xde\x12\x8bB;R\xc8\xa2r\xa0\x91.A\xd2\xa3\xa0\x8a\xf7PZ\x93T\xef\"\xe1\xe4\xc3\xbdD>\x98d7\xed\x97J\xcf\x12\xe1(V\xb9Gq\xa7\x1aSkg\xb5\xd6\xb8a\xb99}uh\xf8\x98R\xc6*\xb1\x97\x85ZI\xfb)\xa5LVB\xfaw\xde\x9d\x8d.\xdf\x9e\x9e\xbc>|3\x92\x9fz\xf2\x04\xa6\x81\xfa\xde\x17\x9b\x14\x0f\x82'\xfa}\xb9wz\xb8\x87\x0d\xfab\x9b\xaa\x17\x1f\xec\x9d\xcbb\xdc\xa8\xe4\xfbw\xc7?\x1f\x9f\xbc?f\x8d\x9f\x9f\xec\x9f\xbc9C\xa5a\xcb\xe7;\xd648\xdb{=\xba|}rz\xf9\xd3\xbf\xde\x8dN\x7f\x93\xa5\xcbF\xe9\xf9\xe8\xe8\xed\x9b\xbd\xf3QY}\xc2\x01\xde\xffx\xf2ftyp\xb2\xff\xeeht|.\x0b\x17\xbc\xf0tt\xfe\xee\xf4\xf8\xf2\xe0\xe4H\x16\xcc\x9a\x05\x97\xafO\xf7~P\xab\xde\xb7 \x0e\x8f\xde\x9e\x9c\x96\xe57\xbc\xfc\xf5\xc9\xe9\xfe\xe8\xf2\xd5\xc9A\xd9\xe3\xab\x1aR\xce\xf6\x8e\x0f\xcf\x0f\xff\xcd\xbav\xe4\x8b\x8dI\x96\xfd<\x1a\xbd\xbd\xdc?9>\x1f\x1d\x9f\xfb\x9ciV\xc4\xf1\xee\xf4\xf0\xf2t\xf4\xc3\xe8\xd7\xb7\xac\xe1\x9c *0\x0c\x11\x91i\xd5f\xfc\x05\xdfa7=\x9cZ\x0c\xecI\xb4\xbc\x0dy%\xa7OT\xdb\xf8Z\xb8%Uh\x80\xd8M\x88\x0f\x8c\xd7\xc6.%>D<\xb3\x97\x84\xcbnf\nX^\x82\x85\xe5_Y\xab\x02\xd7Z2\xa5^\xd2]\x8f\xed\xb3Gj\x97\xd2\x12\xb2P\xebx\xb8\x9a\x0e\xf8\xa2(\x87\xbe\xb3\xc3\xa4\x88\x12\x11c7!\x1e\xd6b-U\xf0UmF\xad\x08Oy\xed\x88\x94\xbf`\xecRQ\x9b\x12\x15\xbe\xaa\xcd&\n\xc9S6\x13\xbbgD[\xe8!\x01\xf0\x8e\x95.Wr\xee\xb8\x85\x94\x1b\x96RB\xfe \xb8*\xab\xb7\xc2\x82\xca\xcb\xdc\xa9\xe7\xf3\xadu\xaa\xdd\xfd\x0c\xdc\xed\x84\xf46\x18\x94J\xbe)&\x82\xfa\x08\xbf\xeb\xa1\xc6Z%\x9f\x07K\xce\xb1<\xbd\xb7\xf4\x04dv\x08\x92\xa0<.:\xb6?\x8f\xe2\x89\xc9\x9c\x01h\xd1\x1b\x87\xf9x\x8ey8\xbaZ\xa7ENR&\x92c\xe8rs\x93\xab \xfb-\xe9\xba\x9e\xac>\xdd8XiF\xd8S\xfa\xf0\x0c!g\x1a\xd3\x9e\xfc\xcd\xb0\xc8$\xea\xce\x16\xa6)]\x0c\x1bv\xf6\xe6\xf3\xd0c\x06\xac\x94\x06\x9f86\xb3p\xa1>\x9f:\x14\xf3\xc4\x89\xae\x97\xd85\x9a\xd8\xf4\x9d<\xef\xbf&\xa5a\x96K2\xf61\xdbNf\xe4\x13M\xc1\xbd\xe1\x1b\x12\xca\x04\xdb|$/\xb77\xc4\x1f\x0e\xac#7\xb8\xee\x9a\xbfn\xeae\x0f\xfb\xc8k\xdb\x92\x85&\xd1\x98\xd1\x0ej\xb4\x03r\x0b\xef\xcc\xc3dO\x1a\xa4$[\xd2$C\x1b$\x1b\xacT\xb4\x1d\x1f\xd2\x80.I\xe2:?\x8c\xce\x1dq/e\xc86\xe7\x0d\xc6\x18_\x8c\xe7a\x9a\x91|\xa7\xc8\xa7\x83\xef|D\x89/\xd2\x9a\x06\x19I&.#@\x8fGE\xa9>\xf3\x08Jb\xd3\xb1\xef\xf5\xc0%\xfb\x92\xcb\x06}\xe0\xf1\x18\x83\xafS\xba8\xc33D\xb6\xcf8e\xdf\x9d\x9ek\xd3\xdc\xa7\xf2v\xfc\x93'\x90\x97\xc6 !\xa8\xe3\x95y\x9e^\x94uIg\xdap\x1d\xc7\xf3\x82+:\xb9\xf7L[x\xa2\x16L\xa34\x93\xcdc1\x13\xc4k\xdb3\xa3\xc7\xf7\xfc\xbc0G\xe9oW\\\xb1\x81\xa1\xb8\xbf\xe4]l\xb6\xefw\x81\xde\xc8]7\xd70 \xd8v\x8c\x00\xca-\xads\xe2~\xbd\x9d\xdd\xcc^n\xcf\x80\xa2\x8f\xf0\x0e\x06~k\x0f\xd3\xf5\x9c\x97\xdb\x1b\xb3\x97\xdb\x1b\x0c\xfck\x03#$\x01\x86\xdb:\x13.\x19.j\x91\x18\x82\xc9\xbd\xe62\x82\xbe\x9e\x9d\\\xdczW\x97/\xb7Qo{\xb9\x1d-f\x90\xa5\xe3\x1dg{\xa3\xf1\xe6\x0eh\x82^\xf2;aL\xd2\xdc\xdd\xf266\x9c\x97_{\x9e\xa6\x83\xc0\xd4T\xae7\xed\xf3N\xea\x11o'\xb6\x07W36\x86\xe7\xa3\xfe{\xa3 \xd4\x1f\xc5Ir\xc3\xde\xf9\xe7\x9fl\xd1\x12\x1f\x8e\x82\xb3\x1fO\xde_\x8e\xde\x8c\xb8\xac/_\xec\x9f\x1c\xd5_\x9c\x8f~=\xf7\xbb\xa9\xa1\xf1\xf9\xa3\xe0\xf5\xe1\x9b\xf3\xd1\xe9\xe5\xde\xfe\xfe\xe8\xed\xb9y\xf5\xd5s.\xd5\x8b\xb4\xaf\x0fWFE\xa9\xfd\xee4\xb4\xdfs\x8d\xf6{\x8e\xb1l D\xe8U6&t\n\xe70\x14\x07\x9d\xa6\x86\x88\xa6!\xc2\xd5h')\x16W$UM\xdd\xa4<\x02\xe2\xc7\xba-\x9f\x07\x0ep\x1c.\x0c)O\xf5\x88\xf9\xd8\x12\xb3\x1a\x973\x9b\xcf\xcf\x17\x04]+\xd8\xff\xc1\x94\xa6\xa3pN<\x95\x0c\x8eQ\xfdT\xdf\x9cb\xe8/\x8d\xcfJ9\x7f\x86 \xce\x03\xc6\x99\xf6\xab\xe3 \xed\x91H\xaer\x07\xcewJi/S\xfb\xf1\xb1\xb3\x89R&\xb3@f\x8a`\\\x05\x969\xe1\xb9\x1al\xf9\x7f\xa5\xf4Q\x91m\xddA\xa7{J\x8a%M\x1a\x13\xc2\xe7\xa3\x83\xfd\xf3\xf3\x8e!\x18\x8eH\xe4\x13\xc61\xbd%\x93\xf3p\x96\x0d!\xb1\xa9f>\xac%\xe4\"\xfd\x80\x01\xff\xd8\x1f]\x8b\x80\x8d\x80\xab\xb2k#\xach\xc2/ \xa2$#i\xbe7\xf9\x18\x8eI\x923&\xdeG\xc4\x01\\i\xed\xba\xae\xb37\xcdI:Bg:\x06\x90p\xc1\xe0\xb3\xc9\x94\xcd\xf97c\xadk\xff]\x9b\x12\x1eT\xb0%\xd3\xf0\xd7\xca1]\xf9C\x0f\xbb\xb6\xb1\xbd1\x0br\x92\xe5.Q\x97\x10\x97\x0eV\xd2\x9d*M=\x18\xc74\xe1\xaa\xa0m\x03\xaba\x99'9\xa9:P\x06\xe8c\x1d\xf4\xc1y\x12\xe7/\x1c\xcf\x93\xa6*\x99\xeaA\xdd\xf7\xb9\xb8X\xfeS\x1fO\xd9\xde\x0f>8\xc0$G\xf9\xe2+\xfe\xc2\xafW\xa8\x82J~\x01,\xa8\xdf\xdd\x81\x84\x0d\x93-\xe2\x90\xd1\xa3}[\xddZ\x85\x0b\x9c\xae\xc8\x05V\xd6\x07\xedpiO8\xda\x13.\xea \x17\xf6\x84+\x1e\xcd\xf2\xca]\xbe>;<\x82j\xc5a\xba\xb6>\x86\xf4v\xcc\x15\xdd\xc3\xda\xe4\x1b\xb5.\xa0\x89\x0e\xfa\x970.z\x82_\x13\xb2d#\xd2\xc7ki>\x82\x15T(\x18\x0253\x04\xd0\xebJ\xea\x83\x8ebl.\xc2\xd2\x11\xac@_\xd6n\xb4\xc8\xec\x92(k\x84\x17\xc5\x07/H\xc2\x05\xf1\x91\xf4\xf2\x00\x0f\x98\x82<\x8d\x16\xae\xe7\xf3\xa0\x85u\xbe\xeaC\x16H\xd4\xf2\x04P\xfc7\"\x8f'\xeb\xc8\x02\x89\x1e\x91J\xb3\xc9m\xf7\x94\x18\x96hJ\xe6_W\x1a\x92\x07d\xb8\x85Q\xe4o\x87G?8\xca\x8e&\x05\x9d0\x88&\x1e\xd29\xfb\x8b\x13\x14w^\xab\xbc]1\xa0]\x10.\x97\xf1=\x1e.\xbf%.?\x8e#\xfcG\xc2\xff\n\xcbL\x12\x91\x07/\xa1\xe0\xbcA\x95PD\xb5\x88\xa3\xc9\"c\xc8\xc7\x90\x12Q\xf7\xa0\x93\xca\xe1\xf1\xdbw\xe7\xbaa\xf2\xbb\x0e\n:\xf0f\x1d\xb7\xb6\x0bs\xf9\x05E b\xad`\x7fy\x1eF\xc5\x8d\x92B\xe3\xc7\xa0{\xd8\xc8\xb0\xb9D3\xec\xc4\x07\xc7Qp\xd5\xd9\xa2\x9d\xcb\x83\x18\xaeB(\x18)\xf8\nY6\xf6d\xad\x1c(\xa7\x03\xfe\x9b\x0d\xcfM!J`\x8f\xfd\x8d\x7f]\x13\xcf\xe8P\xd9|\xd8G\x05#d\x04\x87\xff\xa4\x9dl\xcf\xc3\xa3\xb6'O\xe0\xdf\\\n\xa0^\x8f\x99\x079\xfb8P\xac\xfe\xebc\xaa\xf7\x1b\x18\x88\xc1\xad\x95d\xc0\xa9`E\"\x00\xd1\xcc\x19V\xee_\xa7\x1chN\xf8\x18+\xa4\x12\x82\xb4\xd3w\xcc\xa0\xb6\x86\x97~\x15RPn\x0eT\x04\xc1\x1d{\xaa,0\xdc\x80\xc8m7kw\xe4\xc2\xa4 |\xe8\xa6b\xf5\xc1\xb0\xa2\\\xe6\xfe\xd7g\x18#\xa8\xe3L\xaby\xea\xd5@\xf7\xea\x82N\xd3T\xf3i\xaf\xf8\xd4\xf3\xd5\x93\x01\xba\xb4\xc8h\xea\xb3\x82\xb8\x0f\x9d\x83\xb1\x97\xb6$@\xad\x94alb\xa5\x03\xa5\x03U2\x04b?\xd7\x92wM\xfa\xc8Tl\x13:b\xed\x99\xa9\x07\xf9}[\xa6:\xc3\x80>\x07'G\x0e7\x87\xb0\xc1\xbe\xc0\xef\xa6AB\xeer.X\xbf\xf0Z\x0c\x98W\x14\xa1B\x92R\x18;&n\xc2\xb5\x9a\xa4\xd4\x8f\x14\x8d\xff\x049CU\xe6\xf9p\xcajX:\xde\x9a ]\x97\xf5\xb3`\xbcxr\x17d\xa2\xb1\xbe'|}g\xa3\x8f\xf4\xddG\xf2\xee#u\x87\x1d\x924f#\xe4Qqa\x07\x9c\xdf\xef\x9e\x8d\xd7\x06\x83\xdf\xef\x9e\x11\xc6\x88K\xf3\xceZ\xa5\xeb\xe3\xdetH,\xf7\x0b\xa0\xed\x0b\xab\xd4\x0fr\xcaO1<\xc8\xe7)\xbd\xc5\x83\x1d\xa68\x8e\xd2\x94\xa6\xae#\x8b!\xca \xa19\x84%\xf2M\xce\xb0\xe5\xf7Z\xbd\xc5AU_t\x19\x0b\xd7~t\x12\xa5\xf9}\xf5E\xde\x90\x0f\xe1\x15M1N\x8d\x81x\x8c(]\xab\x1d9t\"J\xb5\xbd\xde\xbb#\xecp\x98GcnHa\xc2\x8a\xce\xec\xd2\x84\xeb\xb6\xe6\xe8\xec\xb1\xa55\xac\xde\x9c\xdb%w\xb2\xf6\x04\x19\x18\x1a\xa8NtV\xdd\x1b\xc1t\xb3M>f\xcc\xcf\x91\x9a\xf7\x08\xba\x916/1\xd4M\xdf\x1e\xf0,\xbb\\HK\xf8\x19J} x\xf5#\x06\xc5a\x98\xed\x04k\x9b\x9eW\xb7w\xbf:9\xf8M\x88\xcb\x95\\\xbd\xcb\xf7J\x18B\xc2\xb4\x03\x92L\xf8\x99Xj:$\xb2\x0bdH_\\\\_\x9b\xe0\x7f\x03\x99-\xb8\x14N\xb6\x1d%\x7f\xb7}\xd5\xac\xc9\x91\xa3\x80+\xea\xf0^\xf3\x9b2\x06W \xfd\x14\xf0\x93\xe6\x13\xb6}\xa3\x95\x8b\x1f\xef\xe9{P\xdeC*8kJ\xbc\x17\xb8\xef\x15u\xae\xc2\x0dL\xb4\x86h\xca]x\xd8T\x1f\x13\x97rnB\x8d\xdc\xe4\x80T\x85\x9c\x9dP\x91\x8c\x98\x1a\xfa\xc60\xb3\xb0\xdae\x18\xc4\xacCG\xc1\x11\xb2-\xf8'~\x9e\x904<\xf0_\x80\x8a\xa6\x17\x1e\x845\x02\xe9\x81C\x90\xf4\x82A\xfb\xcd0b^\xef\xb9V\xc2\x80\x7f\xe3]:\xf3e\xaaK\x1f\xc2\x15&Z4\x88G\xb3\xea\xd9-#\xf2\xd2\x94\xd8\xaa\xf9\xc0\xd6dF\xf2}\x9aL\xa3Y/\x1b\xd8\x1e7\xd2r\xdfdMly\xd6\"\x06\x8aj\xb7ij\xb2rW\x95.\xcf\xfaf\xc3\xc9\xe4GJ\xaf\xfb\xf2\x7f\xfd\xd9\x03\"\x1c\x8f\xa3v\xf8\xa9\xd4\x9f\x7f\xe2^\x84'Sh\xc6\xcc=\xcdU\x8cj\xf3ju\xc1\xf4\xfd\xda\x99\x97^\x90n4\x9b\xad\xd4\xae\x1c\xc5\x85F\xa7Q\x1a\xde\x8b\xe3V\xdb\xc6\xa6\xd1\x0fW\xdbZ\xed\xe5\x832\x16\x9e\xce\xb6\x0c\x8b\x9c\x8a\xa2G\xc5W\x16\xfev\xfcpS\xdeSvs\x1f\x9c\xcbK\x92\x1d\xd1 \x0f\xd3S\xef\xfc\x0d7\xe0\xa9\xa9\x02\x94\xd5)O\x8cb7q\x9f7o\x15PQ\xf0\xb4Y\x10\x89\x82g\xcd\x82P\x14|\xd3,(D\xc1?\x9b\x05\x99(\xd8T%f\xf6b\x8b\xbd(\xdf\x94:F\xdc\x9ey\xf5\x06, *T\xe0\xe9\xb1.\xa8\xaf\x88\xaf\xd6\xf4\x0dlF\xd8\x05\x81\x9f\xb1\x95\xee\xca\x9e\xe5\xb6k\x9e\xee\xa6\x0f4\x10\x1f\xf6\xdc|\x1ee\xdc]\x95\x15\x84\xcd\x027\x0f./\xd1Twy\x89\xccb\xd3\x87T\x01\xf2;\xd3\x88P\xd0%\xbb>\xba\xaf\xab\xe0\xc5\x82\x93\xb4\xb4\x88\x99 \"[/\xaa\x8554]\xc3\xe4`lM\x0dM7<\x01\x0f\x0e3z6\xa7\xb7f\x92[Zmh\xe6\x01,;\x87\x18\xf7Et\x94Li\xba\xe01 ;\x88\xc2\xd2\xa1\xb1\xeds\x0bz\x15\xc5d\x08[OWm\x96\x8aqz\x96\x91N:q1\xed\x84\x98wB\xc4rg\xf8D\x0cXx\x08\xc9\xaes\xba|\x0c\x9a\xc2\x1eh\xfa\xaf\x1e@Q\x0e@\xa7\xb3\xd5\xde<|\xf0|\xe5*\xc2\x83[\xb5Y\nS\n\xa3\xcbe)\xec\xc0\x18\xdf\xfe\xbd\n\x8d\x0fy\xf0SF\x13\x14\x15\xc2Kn\xa1D&\xad\xbc\xbd\xa24&a\xd2|\x8d\xe1\x03\x9b/\xb9\xe9\xb1\xf1\xf65M\x17\x1a.-u\xa8{\xa6*\xb5T\"*KZ:Q$JZzW(\xab\xe8\xb4\xa8{\x9d\xde\x95\x89\x82\xd67bQ\xd0\xd2\xbb\xb8\x94\xd7\x14\x88\xa6\x08>n\xbc]\x8aF\xb6\x9a\x8dp\x01\xed\xdb\xc6\xdb\xb9\x04\xdfj\xf5\xf3F\x16\xb5\x86\xb6\x90%\x9b\xdf\xb4\x061\x13\x89\x8a\xb5\n\xe1\xfd\x97U\x08\x97\xe5\xba`=\x08\xa2\xecT\x84\x85\xf6\x95\xa20\xb9\xf7\x1b\x90\x96bN\xad\x86\xa6x\xa1\x0f7\xe5\x9b8\xcar\x15\x82\x91\xb5\xedw\x98\xdc\xd7i\xf5\xaa\xe5*t\xa3w\xf2\xa1\xc9\xfe\xf9\x86\xb6]\xcd:\xff\x1c:\x7fK\xb5\x97:\x7f\xd6,\xd0\xe9\xfc\xaaF\xfe\xa9:\x7f\xac\xb4U\xe9\xfcuK\x80Q\xe7/\xd3J\x1dD\x93#\x1eG\xb6\x05\xf9\xd7\xa9\xff\x93([\x86\xf9x~\xc8t\x860\xe6\xceP\xc6:\xdc\npc\x07\xe2^\xd2\x92\xc0\xf5\x1a\x17\x1aCS7\xe9\xe4\x9d:\x16\xff\xf7\xd9J\x90\x84\xbb\xd0\xc3\x97Z\x17~:\x90\x18\xd5\x90h\x91\xd8W\xb0\xcb\x14\x08;5\x1c\x0e\xe4AN\x7f\xe2\xd7\xaa9{g?]\xd3a\xbb\xf4\x8b\xb4|.F\x17\xbb\xfc~i\xe9\xfe\x18a\xb8\x9a\xbf\xe0\xa6\x80>*\xa9\x0f\xb4=\xe3\x06\xc6\xd3\x06\xac\x9di6c\x02\xfa\xb88x\xa8\xc5\xc2\xe3\xf9\xaa7_\xc0\x18\xb6\xa1x\x01\xe3\xf5u\x0f\xe2\x8b\xf1\x07\xb5\xe6\xc5X\x13kQ\xc6Y\xc4S\xe5\x1d\x03\xf3\xc3=\xae\x93\x01\x8e\xc38\x16\\\x90\xf8p\xc1\xea\x96\xc1$\xb8\x9e\x96\x96\xdbQ\xaf\xc3\"\xe9\xae\xaez\x8er\x92\x17\xfbh \xa2`\x92\x80G\xec\x0e\x18\xa0\x88\x81X\xbeC\xba4,<\xd1\x9a\xec\x15\xe3\xb2\xf2\x9d\x90\x90\xb4\xc7Sl\x1c\xa3\xa4X\xac0\x16\x81\xe7\xd6\x17\xf5\x1f@\x9bvK\x14a\xf4\xf4%\xe4\x89\xbf\x81/\xf6c?+\x08\x0f]\x8c\x96\xf6b\xb4\x9c\x87J\x99\xb8\x8b\x87N\x08\x8f\xf3d\x8c\\\x07\x82\x85\xa6\x01I\x8a\x85\xd92\xcd:G93\xdd\x15\x7f\xb8\x1e\x0c\xf1\xac\xb7\xe82U#Ou\x1d~\"c\xf3s\xea`;V\xbe\x02u\x8b\x1a\x95\x91Jw\xc1\x89\x12\xcc\x07\x84\xd7\xab;\xee%`\x90\xa8Zm\xda\xa3\x96\xb8\x9b\x80\x82ff\xe5]P\xd1\xaceF@\xb69Z,\xf3{q\xa5b\xcd\xc2\xa2\xa0\xc6\xcb\x90\xc8\xd5\xfd\xc0X\xcft\xbb\xd3\xb8\x86b\xdc\xfch\xba8\x08\xf3Pn\x80\x11\xba\xbb\xaf\xb9\xce\xeb\xb2 JD\x0c\xda\x8e\x83\xa3\xdcu\x0e1\x91\xa4]\x10\xa9\xed\xb7b\x8b5Q\x89\xd5\x82\xc6\xea\x0eEs\x96\x9e}\x12\x1d\xadNC\xad\xa9\xeb\x92\x90e~\xaf!\xc4\xfa dk\xd3\x84\xa0\x85|\xdf\x03Q\xcb0\xcbni:\x91\xb8\xe7R-CFU2\x94\xb9\x07\xffk\xf0\xd9\xbd\xc2\x16Q\xf2\x06[\x1b\xda\xfcK'\xe4\x8a\x16\xc9\x98\x9cG\x0bB\x8b|\x08\xcf\xbe\xb1@+\xa1\xe7\xacb\xe9_0\xdb\xad\xd7\x9fU\x02\x95\x16\xcf^\x02(1\xdc]\xef-dJ\xf3\xe8c\xad\x1e<\xae\x06Bc_\xcc\xd1\xf7\xf5\xc2\xdf\xaa\xf2R\x1ady\x98\x0b!\xc0(\x9c\x1d\xe6D'\x9cY\x1c\xae\xd2 #\xf9\x19k\xba\xba\xdao\x8d\n :hg\x91ri\x88Kj\x19\xc9\xb98f\xacd\xf2\xefW\xb0g\x184w\x98b\x03\xef'\x8fj\xc6k\xbd\x1f\xb0\xcax\xe5\xa5<\x11\xce\xe4/\x19o8\x994\x07\xbb\xcaX\xfb\x04\xc4\x10T\x06;p\xe9J\x8a\xeb\x12\x8a\x04\x06\x048w\xcaslau\x1e\x8d\x80\xd5U\x10\x0d\x1az`\xa1\xdfx\xff\x82\x01\xe2B7^\x9c\x15\x1f\xaefF\xdbH\xed\xe5_\xa3-\x95\xd6\xd7\xf7Q\x1c\x9f\x921\x89n\xf0\xb4,\xeb\xa1@\x19\xe7J\x92\xde\xda\x8e\xd0\xa2\x94]\x8f\x89\x7f\xfc\x9d\x9cN\x9bB\xa0\x92\xa3~*:\xf9\xd9\x17\xb2\xa0\xdau\xc4>\xba$?=\xec\xa7KR\x84\xedV\xed\"\x84\xebR'C\x84\xeaR'\x0b\x842\x99OC\xbc\x11,\xb4\xbeP\xd5\xfa\xec\x06\xd4\"\x88\x92)I\xb9\xf8\xe0FA\x94\x93E\xd6\xedhV?Q\xe9\xe1s\xf6\x8ag\xf7\xef\xf0\x1f\xcbP\xb7\xb5\x88W\xd0\xa6h\xb3&\xbc\xec\xd2v\xe7\xd2\xd3\xed\x13\xb5\xddy\xd7\xc6\xaeH\xd5\xe1\xeaR5T\x92\xb5R;\xecQKf\xdf\xed\xbe\xb7/\xd6\x9c\x85\x96\xa1\xad=\x1b\xa2\xbf\xd7\xa0kz1\xfd\x9b\xf5\xe2\x8ey\x14\x0eW\xdc\xedc\x8dGC\x99\x04\x98]\x91\xfd-\xfet=\xd8\x86\xad\xea^\xca$X\x84KE\x10\xf2\x81v\x11^$\x84\xe6\xb4n\x96\xcf:.\x96\xc9\xd9\xb75\x0f\xe2\x13K\xdc\x10xZ\xd7\x9e\x92\x8b|J \x06\xaf\xf1\xf0[/\xd6J\xb6p\xab\x80'\xeb\x82j\xe5\x9d\x8f\x8b\xe5\xc5\xe6\x07\xbe\xe3\xc1:P\xcb\xdd\xe4\xce{Y\x1dsi\x1f-2\xa2\x0e\xa2T}\xbf>f4\x19\xf0\xed|\xc0\xf4\xeb\x01\xdb.\xad\x0e\x81\xa6\xeeY\xdd\xcd\xa0\xfbd\x05Z\xa7+\x1dF*)]\xf7]\x81\xfd\x04{\xf9\x94$\xa3\xaaO|)\xd8)\xc7\xde\x1dy\x9e\x13Y\x96\xbf\x19\xc7V\xf3\x124\xa6\xf6*O\xe0*O\x06\xd9\x02\xb4\xb3<\xe0\xfaH\xc7\x86K\x93\xfd8\x1a_\xf7\x10^\xd4\xa7\xc4^\xa5\x87\xb9]\x88\xb3\x11\x9d\x03\x03pL\x9e\xa8^\x90S~\xf4\xf3X\xd4\xad\x84\xb6p2\x01\x07\xd6\xab\xcd\xab\xc1\xf8\xb8\x1b\xa1\xf1[%B\x91#\x08\xbdM?06\xee\xbd\xc9\x04\xd8g\xb5\xc3\xef\xb4\xb4\xbc-R\xb2\x8a\xb5\xa5r;\xebeo\xf9\xdf\x81\xdf\xca\x07~\xabj\xa9\xff;(\xd3?\x7f\xd1AY\x97\xceB{\x1d\xa7\xd5\x0f\xca\x0c\xa7\x0bx\xf2%\xf4\x9b\xb4\x9f~\x13\xf69\xcc\xea\x10#\xc2\x9e\x1ba\xba\xbaX/Dz\xa5f\xda\xcfX.\x82\x08$\xb6\xdbFuA\x9d\xbb\xc6MS\xba\xf8\xe9\xccs)jYx\xff\xd3\xc9S\x9e`e\x1a\xc6\x999\xe1\x0b\xe8\xa5\xf9\xb2\x1d\xdb\x81\xd7\xaaB}\xb7I\xe1\xd3L\xe4\xa5\x07\xf1\xa3\xf7\xec\xde{\xb2\\\xa1\x9fl\x1f\xb7X\xc6\xd9\xc2\xc9H\x8esrN\xcf\xc2\xc52\xeee#\xaf\xbc\xbb\\\xf6\xe5\x19\xdb\x1cxm\x8e'\xcf%5w \xfd\xdd`\xa2\xb5\xcb\x1bEF\xd2\xf2\x990\xb4:\x0f\x93ILNVi\xfb\xa6\xccw\xdc\xed\xbb\xa1\x0c^\xe7\x03\xe8\x1b\xbd\x85\xe132\x80\xcf\xe9y\xb9V1\x81\x86\x9dO\x9d\xc3\xf2e\x9bdtw\xb4\xeb8\xf8B\x86\xbc\xffbN\x96\xbb\xce9\xb9\xcb\xf7R\x12>\x92\x9b\xd4\x0c\x0c& \xda\x93\xe50R\x9b+\x06\x04c\x1d\xf6\x08\x9e\xc4\xd8M\x16\xfda\x0d\xcfkF\xbddX\xac\x05d\xc3\x1fi\x94\xb8\x8c}x\xfd8\x97EGm\xb0\x89\xfa\x06\xa0\xad\xf5(w\xbe.\x11\x1f\x81\x1fu\xe3E\x1e\x86\xe2E\x87\x7fz\xc1\x818\x91F\xa7\x89\n,\xad\x17\xf0\x10\x92\xb58\x02\x8f\xef\xc2g\xbdt\xd3\xec\xa6\xe9n\x8c\xf8h\x98e\xd1,a\x8c\xcc.\xa6\xd7\x92>o\xf1\xfc\xceMuE\xe4y\xb6\xef\xf3\x95\xa6bJ\x03]~\n\x03'&=\xf3\xc2c(8\xb4Ta\xac\xe9\x1dH.R]\xa0\x89\xd6\x1b\xc9\x90\xeb$X\xa7x\xda\xc5\x9aK\xd1\x83XO\x9ck\x19\xfe7_@\x02\xdbj\xa2\x7f3\xf6@\x99\xb9\xfc\"1`\x0e\x90P\x99tG\xd2\xf0\n\x05\x8a\xdaO\x91|,e\n\xdb4\x9a\x15\x12hm\xb3L\xda\xc7P\xce\xe3\\\xa6\xc1m\x1a\xe5%D\x99}\xaaI\xa7\x845xM\xee\x19\xfe\xf5\x0b\xbe\xff$\xa8\xd6X>\xa1V\x85\x91\x07\x01u\x15\xd2\xe0\x99\xc3R\xf1\x9eG\x07l{\x157\xb6\x9b\xe6\xc5r\xa6\xd8\x14<\x02F\xbd \x14\x05[\x9b\xdf|\xab\x0f\x86Q|\x91\xbbOn{\x99\xf7\x92\x8a\xb5+{\xad\x9f\xb3\x04\x8f\xf5T\x8b\x80\x95\x9b\xc2\xa1\xed\x87IBs`\xeb\x12B\xce\xfb \xccj\xa1\xd8\xdas\xd2!\x90'}\xbd:\xb0\xa3D\xed\xd9)\x99\x92\x94$\xe32D\xdc<\xca`\x1ef\xc9\xd79\\\x11\x92@\xc4\xaf\xb1D\x19\x99\xc0\x00\xb2bIR\xd7\xabA\xb0\xa1\x90I\x87\xf8\xb0\x86\xc7\x0dJB\xc9Z\x10\x1fm8\xbb\\P\x81\x86F\x0d\xfa\x86X\x843\xc2\x98\x1f'\xfa\x93i\xcb-\xc7\xa2y$\xab9d\x93`I\xd2,\xcarSX\x05\xc9\x14\x92\xee\xd3\xbdd\xa5\xe3kU\x1f\xd0o,=s\xaf\xb0\x1e\xd2~=dO\xe9\x06\xf7\x92U\xe1\x82x\xe9\xcd\x86\xe1\xaa\x12\x9aGS\xbc\xe68,\xb7oxYU|\xf2\xa4\x02J\xf1\x88\xa8G\xbe\x066\xd8!\x08p1\xf8\xaeZP\xe1\xcb\x92\x91\x0e\xf4\xeayUd29\xb7\x89\x12\x13-%?\x93\xfb\x03zk7\xa0\xca\xa7\"\x0f\xa9C\x8a\xda\xfa pFI\xceS\xc20\xf1\xfe\x9a\xdcsdNi:&\xc7\x12\xed\xbe\xc85e0\x10\xb2.\xbe\x8a\x8b\xf4\x91\xfdcUM\xf4\xbbb?\xb8\x86\x80\xf0\x11\xe9\xd7\x1f\x1eQs\x1b6\xbd\x92\x86\xba\x84\x0f\xf9\xc8\x05^\xc4\x06/F\x83V-\x03\xfc\x8a\x84=\xb5\x0f'\xc1\x84\xf2\xf1Z*\xdb\x97^.L)\x8a\xed\xa5\x1b\x0d\xf2I\x82(\x13\xbc\x8e\xdf\xd1a\x02L\xd5)\xab\x9f\x19\xdb\x07\xcd\xcb\\\x87\xddGtg\xd3\xd7\xcf\xbf|\x90\x0e\xa6q\x91\xcd\xfbN#TS\x99\xf3\x9a\xb6\xb4\x13Hf\x8c!\xc7\xab\xb4\xafEk.\x1a\xb2}NOXz\xea\x97\x93\xd4\xa7cI\xc3\xc4$\xce\x18D|Z\xe5r\xad\xfeS\xca\xba\xec5\x9f\x98_\xa0\x86\x03\x1b\xc6J\x0c\xe3^$\x91d&--K\xec8\x81\x04\x0d\xb31\x7f!Wx\x14E\x9e\xa4\xac\x08\x0c\xa2X\xfe\xfeR\x0c\xe8\xf1i3{\x07\xdf\xc1\xa9\xee\xe5\"(\xdd\xe6\x98<\xd6f\x8c\xd8\x8en_\xa9Aj\xcd\x87\x9d\"\xa81r1\xb2\n\xf4=A\x07?\x83\xe8|\xc6\x84O w\xcb\x94d\x19\x93\xda\x17E\x96\x03\x89\xf29I\xe1\x8a\xf0\x06h\xaa\xc8\xd2>\x06\x1dv`\xbd\xfc\x90\x862I\xa5\"U\xba?\xe7N\xae\xc8\xdb\xa8\xe8Pz\xd4\x8ei\x92\xe5i1\xcei\xaaS[\xe4#g\xc0L\xef\x95F\xda\x8e8\xa0>R\xff\xb4\xbbA\xa9\xba\xec\xd0\x94\x8cICK\x92{\xbb\x02\x1bYM\xa2\x86]\xd0\xbe\x17\xf3>DUN\x8a\xe5l:\xeb\xa4\xc3t\xcf\xf2T\xa0a\xbd\xf2\x81\xf630\xbf\x8f\xe2\xf8S-\xcch\x95\xab\x8b!\xaeb`n\xdc\xbf\xe8\xb2\x97X\xac\xc9\x7f\x89K\xac\xdcH;\xb7\xd0D\\\xc6\xab\x8dF\xbf}\xe2\xe8k\x8b\xff\xcf?\xcb\x8c\x85\xb84+g[\xc5\x01\xb7Q\xd2[\x8f1\xddi\xf6!\xa9<}\xb5\x93Q~\xac1}I\xb7\x01\xb5\xe74\xbdK\x16\x9f\x83\xbc\xb8t#{k\x92Xzw\xf1o8\x97\x10\xb9\xbe\xec\xf4\xe5*\x91\x15J\x8a\x04R\xb1k\xbfM\x82\xec\x95\"\x9b\xbc\xbaG\xf5\xc6\xe68\xc3\xa3-TUNP\x1f\xb1\x9c\xef\x8a\x90\x0fB\xab2\x03\x16\x02\xd0\xde\\\x86PQ\xb2,\xf2S25\xc3\xc5}\xcd1\xf2\x916\x9c\xff\xf4I\x1aUZ\x7f\x89\x07y\x19\x96<\xf5\x98\xb8\xb3\xa9XA\xec&aR\x9a\x84\x13n\x12\xc6\xac\x85\xf6\xcfK\x1d\xca\x08\xf4\x80~/\x8e\xa0\x18\xc7\x07G\x12\x85S\x1aQ}pJ\xa2\xc0d\xd1u\xa2\xc0\x83\xfb\x16Q4\xde\xf2y\xe7\xed\x8b\xb9\xe5?\xe4k9G\xd6\xd3\xffqG\x0cKt\xf3\x86]\xcb\xdc\x95_/\x1d\x01\xc4o\xfd\xbe\x06C\x08\xfb\xb6g\x88\x17\x0eC#\x910\xba\x98v\x0c\x89\x95\xd3\x8e.0\x1c\x96\xe3a?\x8c=)z\xb5T\xadB\x99\xba\xb4(r\xaeueb\xe8\xba\"\xf3=\xd8\xd6\xdd\xd7\xad\xcd\x06D{\x93h\x8b\xc2\xad-\xa3\x0d\"w\n\xd9\xc1\n\x97\xf8W\xc7\x99\xa5\xe5\xae\xa0\xdc\xd3\x9d\xd1\xdd\x92\x8cs2QM\xfcmBIa\x07\x8e\xc3\xe3v\x01cz\xce\x85\xf0\xf09\xbb_\\\xd1\xf8\x83\xa6~\x04;\xb0\xf1\x7f\x7f\xcf\xd6\xff\xfc=[\xffjc\xd6\x86\x08\x11\xe2b\xb0\xfea\xf3\xeebs\xf0}8\x98~X\xffjC\xe3\xe6T \xe4\xe6\xd5\xc5\xe6\x96\x01\"\xe3\x10\xf4bs\xf0\xad\x01\x841A\xcc\xad\x7f\xa8\x93\x1d\xd8\xde\xaa\xa4f\xa9\xe9\x81B\xe7:\x11NM;R'\xc3\xd7\xed\xa6\xa6\xfa\xa62\x12OY\x0d\xf5\x7f}\x9b\xac\xa4\xdd,\xdb\x80\xc6x\xf6\xcb\xfey-\xe7\xd9\x91\xd6\xa7y\x949\x9e.\xec\xf2\xa4R\"+\x16,\xd3\xe4\xb4\xc1\xe7\xb0\x03Ga>\x0f\x16\xe1\x9dF\xac+K#\x8d\xf8\xd2\xef\xb6'\xef\xf028`\xdbNBou\xf2\xa7r^\x07\xea\xb9\xd8L\xaf\x7fH\xddC&\xba1\x1e\xa8\xac\xad\xf1\xac\x18\xb5 \xd2d\xddiz\xa7\xea{\xa3\x89\x9e\x08\xd2\xac\xa0\xc9\x97nK\xd3\xc2\xeat\xebX\xa2\xbe\x93\xe1\xba\xab5\xde\xed\x16\xd0hD\xa0BC\xaa\x066\xc0Z}\xf2\x04&B`\xf3@{i\xe5AM\x13\xa4\xb1\xcdc.\x15KF\xa9\x9b2\xa8PmBdF)\xdc\xbdQ\xe5/\xffF'U\x93\x17\x1a\xec\xc0\x8cm\x86\xbb\x90\xc3:\x8f)\xd6u\xc6\x0c\xcd\x0cJk\x9a)\xac\x12\xe6\x13\x18\xc2\xba\xe6\xf3D\xb8\xdc\xf2\x84~\x11\xe6\xf33\x1f\x97\x16\"\x1d\xb4\xe5,\x90\xcdp&\xc1`\x17bW\xe4!u\x9f\xa2\x86\xba\x0bOa\x08\xdf1l\x84\nX\x8a\xfdk\xd0\xb3\xfaK\xf5\x8ci0\x17\xed\xa1>\x1e\xd1\xf9\x10a6\x99\xc2\x87\x0c\x85\x13\xf4w\xd7\x0b\x1cSn\xb2\xd3\x96--e\x13\xb4\xd9\xebIH\x9fpLo\xa8K\xbc\xc6v\x02\xea\"\xbe\xea\xf6w\xb4\\_b|2\xb2Jv\x8ca*\xe9\xdbx\xa0\x17_\xa8x\xdcr\x9e26\xae\xa1Js\xa75\x91;\xe5#;M`\x00\xb1\xb5gJ\xc0\xbd\x98\x11W\xc2T\xb6\x9c\xff\xb5\xcdu\xb7%zB\xc0\x00\xc6\xac\xac\xad\x04\xd8\xfax\xdb\xa9\xf4/l\xe1\xff/k\xf9\xc6\x8c9\xca\x18\xd5f$\x17\x82\x99{\xeb\xf7\xdc\x05K_V\x18\x80\x8b\xb8\xea\xbe\x9c\xba\x84]\xb8q\x13\x1fBYi\xec\xa1\x05\xdf\xb8a\xae6\xab\xa3\xce\x9d?S\x08i\x02\x98\x1dk\x17\xae\xf89\x82\xdb\xa4\xb4b\xb5\xaf\xdf\xf5\x99/\xf3JHx\x1c\x06\xcb\x8cR\xd5\xa5\x8c\xe7\xe4\xe2.\x10L63EJQ\x1bP\x086\xf3\xdaV\xfe.\xb3\x86\xa80\xe6_k\x13N\xee\xf90\xad\xf0\xa9W\x14\x01g\xd6F,\xe2^\xb42c\xed\xcf\\\xb9\xa6\x00\xfb=\x17l\x86b\x8c\xaeq\xcf\xd7\xf4\xdc\xe8\xc5\x95c\xe4\xe8\x1ccbn\xfa0s\x85\x15\x06\xf7\xec\xb54\x88 \xe6f\xe0Y\xb0]\xb6[;\x8b\xf0\xee}\x18\xe5\xdc\xfd\x8cq\x98\xb9{\xef\xa6\x81x-[B\xc3{\xe8\xe3&\xee\xe4i\x18\xc5\xc8K\xd1em\x17\x9b\x96/a\x08\x13L\xe0\xd7\xffhT\xb1\x00#\"0)\x98\xc4B&o_\xf1\xebG\xb1X\x15\xd5\xd2ic\x87}\xbd\xf7\xb9\xafn2v\xa1\x80!\x8c\xdc\x85kH\xf0U{\xa9\xb8\x87IW \x1f\x12\xf7\xd9\x96\xa8\xdc\xa1\xe5I\xe7\xc2z\xf7\x9c`#\x8c\xe3\xe0c\xe6\x0c\xe1\xf9\xf3\xe7~\xab\xb0\xc8\xe7\x1b!6\x9aq\xa8\xa7\xcf\x9e\xea\xa1\xd0\x88\xc7a\x9e}\xffL\x0f\x93\x92I1&i&\xc1\x0c\x1f\xccd\xe2! \xf7\x8d\x01nI\xc6\x83\xdb4\\\x0ej]|\xf6\xfd?[\xf0\xfc\x10)k\x8e\xa5\xdd\x01 8'\xf1\xb2\xec\xe9\xd3g\xed\x01I\xc0\xda\xb8\xbf7\x82\xd5\x87\xfe|\xb3\x8dE \xd9\x18\xfd\xf3\xcd-3(C@mH\xcf\x9b&\x06'\xd8\x98\x10\xb2\x1c\xc4Qr\x1d%\xb3\xfa\xb8\x9eo\xb61[\x83V\x06\xf7|\xb3\x8d\x83\x1al\x1c\xde\xd3\"\x97\xc0m\xcc\xd6\x80\xcb|K\x83<\x9c\xe1\x1c.I\x1a|\xcc\xee\xb0\xf2\xb7}+7+\xb6'~Bo\x93\x98\x86\x93A\x91\xc6r\x96\xbekA\x914\xad\x93\xc6\xd6\xd3v\x1f\x18\x10\xdeG\x18\xe4i\x98dS\x9a.H\x9am\xcc)\xbd\x16-?mO\x95\xa1R\xedGB\xf3\x01\x9d\x0eP\xc9\x16\x0d\xb5\xc9\xa3OC\xcb0\x0d\x17$'\xe9\x80&\x84Nec\xed\x89\xeb\xd3\x18\xd3d\x96\x03\xe9\x0e*\xdbj\xcf+kK]\x04[\xedE\xc0@\x1ak\xffi\x9bN\x19Ts\xe9?m\x13(\x8f\x9dP'\xcd\xf6\x8c\n(\xba\xccxV* \xd9\xee\x1c\xa7\xdb\xc6\xce\xa0YF\x02N\x1d\xea\xd36\xbd \xa8\xe6h\xdb\xd4$\x00[\x03n\x0f%\xa6\x8dm\xe6\xbb6Rh\x98=knn\xed\xceq\xa8\"\x9f\x0f\xc8]N\x92\x8cAo\xe0\x06\xda\xdct44\x83\x95\xcb\xe3\xc5l\x83\xf1\xa0\xabp|\x9d\xc9\xd5\xa7\xc1F\xb3\xce<\xcf\x97\x03\xd6\x01YG\xc3M\x9au\xd4\x89\xd6\x90C\x13\xbc\xda\x1c\xd8vQ\xf6\xad\x8dVs\xc5\x8c\xa7X+\xfb\xd8\x8d\x8b\x94\xfc\xbf\x82d\xf9\xe0\x8aN\xee\x07d\x12\xe5\xb4\xdc\x93\x9e\xb5\xf7\x04[\xed\xb2\xc3m\x8aiV\x13\xdd\xac\xb2\x1d\x95\x9fl\x13\xaf\xa1n\xf9\xb5\xf6\xb2\xc0\x1a5n\xf1\xcc\x80\xfc\xda\x04\x19F\xdb`\x7f\xcf\x0d(m\x92\xe1s\x03y \xe3Sh\xb8E\xbe\xedmJ[OO\xfb\x86\x8f\"\xb0\x82C\\HQN\x16%\xde\x0d\x0b\xa0YQE\x98F\x04\xd1\xd6Q\xa38p\x1b\x93D\x91\x01\xe3\xcd\x06\x16az\xcd\x98\xa1\xfc\xaea2[\xd5\xe8\x84\xc4r\x80\xcf\x0d\x84\xd5\xacD\x938J\xc8\x00\xaf\xb6\x859M\x07W\xe1dF\xe4\x97\x0d\xb4\xd6l\xa4df\xd5B4\xac\x89f\xcd\x1b\x9e\x02r\x90\xe5\xe1bYV\xd6\xec\x00 \xd6\x8aINjs\xb2\xd5\x1ef\x86\xb71\xb3\x8d\xa9\xc0\xdf\xd6\xf7m\"\x910\xb5\xad\xba=\xbd\x8c\x06\x9b\xdcF\xd3\x18\x83R[\xd2\xec\x94\x08\xd3\xe04\x9a\xcd\n\xc1\x1aD\xfeT#U\"\x9cF\x9c~\xde&k\x99\xd5\xeecc\xb4m\xc8\"\x8f\xe2\xba\x8c\xdc\x9e\xc4\x9b\x88\xdc\xd6`\x9e\x1b`RJ\xf3A\x94|$\xe3\xbc\xec\xdcw%\xa46]\x0d5^\xd8I\xdc\xa8fly\xd0\xd4\x8e\xda\xb5\xa5\xad9\xbd \x8d[Z\xfc\x06M\x0e\xeb\xb0U\xbb8S\xbf43\x8d\x92 ,\xf8\x0d\xa1\xaf\x1dX\x07\x02\xeb\xe0|\x1d4\x0d\xbdR\xd7V\xfa'\xff\xa2\xc15\xb9\xb7\xe6O\x16\x95\xc5\x11\x0e\x83v\x95\xcb[\x0f>\xd0 %\x19\x8do\x08St\xeb\x17\x1d)+\x8d\x98\n\xbe\xb5\xf9\x0d\xc7\xee\xc3\x07\xef\x1f\x0f\xde\x8b\x7fll\xfc\x1f\xc8h\x91\x8e\xc9Q\xb8\\F\xc9\xec\xdd\xe9\x9b\x9d*\xc3\xe1\xe0\xaaH&1[\xe7\xc1\"\\\xfe\xff\x00\x00\x00\xff\xffPK\x07\x08-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8\xec\xbdys\xdc6\x9a0\xfe\xff|\x8aG|w\x152M\xd1\xdd\xad\xc3:,k\x1d\xc7\x9e\xf5\xbb\xf1Q\x963\xf3\x9b\xb7\xa3UQl\xb4\x9a1\x9b\xec\xe1!Y\x13i?\xfb\xaf\xf0\x00 \x01\x10 \xd9\xb2\xb33\xbb5\xacT\xac\x06A\xdcx\xeec\x0b\x16U\x1a\x95q\x96\xba\xa5\x0f\xc4\x83\xdf\xfe\x00\x00\xe0dW\xbf\x92\xa8t\xe0\xf4\x14\xca\xbb5\xc9\x16@\xbe\xac\xb3\xbc,`{\xdb\xf4v\x95\xcd\xab\x84\xc0\x19\xff#\x10\xb5O\x81\xb8\x1e\x1c\x83#\xba\x91?\x9a\x93E\x9c\x12\xda\"\xfb+\x08Ws8\xe3?\xdc\xd9\x05\x0e\xe8\xb8k0g\xe2\xaf\xe0\xfc6\xbc\xbe&\xf9\xcfo\xce\xcb0\x9d\x87I\x96\x92\x0f9)HY\x0f\xa1\xec\xab\xf3\x87\x07\xb7\\\xc6\x85\xdf,\x89X\x8e\x9c\x94U\x9eJK%^\xd0\xe7&\xcc\x81\xc0)\xfc\xf6p\xf2\x87\xbaPT\x85\xd4\xcd\xe5\xca\xf4\x89\x17\xe0\x92Y~\xe1\x89v\xe9\x0f\xb1b'JU\xdavLG7\xcb/h\x17\xcaKl\xeb\x18r\xbfU\x9a\x1c\xc3\xd6\xa4]\xcc\xbb8\x86\xdf\x1e\x94w\x0fj\xa7|T%\x1dU\x14&\x89\x1b\x8b\xc1\xf9\x10\xfb \xfdJ=\xfa3\x81S\xd8\x1aK/\xea\xd6\x9anx\x9bi\xb0\x82S(}H\x83\x88N\x8b\xfe1\x87S\xf5\x10\xfa\xd0Z\xb24\xc8\xf8\xf9\xbc\xbf\x87\xf7x\x1c\x02vL>\xe4\xd9\x9a\xe4\xe5\x1d\xff\xb2\xbdBQ\x96.\xe2\xeb*\x0f\xaf\x12bY\x96\xb4Z\x11\xf1~\xdc~\x7fM\xcac\xc8\xd5\x15\xf3\x9a9\xd29\xa4\xca\x1c\xf4\xd1\x8b\x13R\xd2\xa3^\x06\x97\x97\xa4x+\xeeK\xeb\xac\xc9\x8f\xd8 :\xd7\xb0JJu\x0cp<\xec\xeb\x01{\x9d\x06s\x97\xf8\xe0\x84\x0e]d\x1f\x88:\xbdL\xdf\"\xbd;\xde\x0c\xdf\x99u\x9e\x95\x19\xbd\xa9\xc12,\xde\xdf\xa6b\x8f\xd8i\xc2\xef\xd5\xf6\xd7p\n\xce\x93y\\\x94\x8e\x0f\xa9\x9b\x06\x14pL\xc7\x07\xac\xda\x83;\xd3\xceG*\xf7\xefT\x05\x81\xa2\xcc\xe3\xa8tN\x94[\x99\xc3)\xa4\xee\xfe\xd4S\xf7\x94^\xa8\x99\xf39N\xe7\x8e\x0fNN\x8a,\xb9!\xf4\xcf(K\x8b2\xaf\":\n'N\x8b2L#\xf2~A\x7f\xads2\x8f\xa3\xb0$\xec\x935\x05\x1b)\xd6\xe3[s^\xde%\xf8\xb2\xa0\x7f\xbcH\xe2\xb0 \x85s\xa1\xf6\x9ca\xcfE\x14&a\x8eu\xc9_+\x92F\xf8\xdd*\\\xaf\xe3\xf4\xda\xb9h\xe6PJ`\xb4s\xf9\xe9dS\x1f\xaa\x936\x9c\xa1\xb7\x8c^\x9a\xdf\x1e|\xb1=\x9f\xc9]\xe1\x12/Xd\xf9\xab0Z\xbau\xd3\xadvE+;\x138==\x858\x88\xd39\xf9\xf2~\xe1\x12\xcf\x83r\x99g\xb7\x90\x92[\xc8\xdd\xef~N?\xa7\xd9m\n\xd9\x1a\xa1\x9e\xf3\x1d\x8c\x80\xc0\x08\xbes .`EJ\x88S\x06\xd8c\xac\x90-X\x9d\x92\xd5\xf9\xcb\x8b\xb7?!l\x0f\xbe\xf3\xb4\x8b\xe6\x03\x05\xcaA\x19^3\xc8\x81\xbf\xe8\xe6\xd1\x99\xb1?\xee\xef!\xad\x92\x84\xbf\xe3\x1b\x8a\xaf\xc5\xdf\xf7\xf7\x83\xae\xca\xd6X\xed\x9c\xb7X\x9f\x0bl\xb3\xf9%\xb7\xda\xba\xf4`\xbd\x81\xbc\xd5\xe6\x80a\xb3\xd2Ou>\xf5\xd1\xc3j\xcd/}\xd6\xfcL\xf2y\x8b_j-\xf9\xb0bE\xa5@\xad+\x1fd8\x057\xc5\x0f\x94\xd2\xfa\x83\n\xf1\x9f\x8f\xbf`\xeb\xf4\x14R\n\xea\xe4\xf3\x96\x1a\xce\x9bq\xcd\xd2Yy1\xf0h\xd2\xa7\x9a\x9d\x97y\x9c^\xbb\xc4\xa3\x18\xb2lUzh\x1f\xa8\xca\xf3\x81\x1f\xe9\xac>\xd2\xf5\xb9\xb2\x1dm\xd0F%\x1e:\xba\xc8\x87\x85\x0f\x89\x0fk\x1f\x96\x8c\x06\x81\"x\xdd\xa6r\xe83\xaf+\xfc\xd1\\\xe1\xa6\xaepn\xaepWW\xf8`\xaep]W\xf8\xc1\\\x81\x12\x88\x94\x0b\xc8\xe1\x18n\xe8\xbf3\"N\x17A\x1a\xf8\x81\x12\xf3\xae(\xfe\xed\xc1k\xe8\x0ds\x8b\x97\xbc\xc5\x98\x9eB\xd1Z\\\xb7f\xfe\xe8\nN\xe1\xb2i\x19\xbf\x91\x7f\xe3\xa7'\xadO\xe9\xf5w#Dvx\x98\x10hz\xb8?\x94Lv]\n\xec\xb7\x96\xf4\xdd\x8a\xfe\xef&\x8b\xe70F\x90\xb9\x9aE\x17\x1e\xe5\xa0\xe0\x18Ro\x16]\xf8@\xe9\xa2kZm\x01g\x10\xba R\xc6\xc7p\x87L\x98\xe9\x0e'X\xef5\x7f\x83\xf4\x96\x0f \xfd&\xf1Y\x87\x95\xbb\xf2\xe9\xa1\xa0P\x1e\xb7\xe1g\xcf\x87\xcbYt\x01[\xa7\x90\xe0\xcdu/\xb1\xc6\xda\xf3YOW\xf2[\x17\x7f\x9dB\xa2\x81\xd5f)\xf2 bw9\xf6\xe9I\x83S\x98\xd0?\xfeHI:\xfa\xc79\x9c\xc2\x1e\xfd\xe3\x03\x9c\xc2!\xfd\xe3\x07Z\xe7\x80\xfe\xf5g8\x85]\xac\xf53\x9c\xc2\x01V\xfbH\xdfN\x0f}\xe5\xc6\x17\x9b\xdd\xce]\xe3\xed\xdc\xd3\x8b\xf9\xed\xd4\xef\x1b\xbd\x9dO\x9c'\xd7\xed\xcb\xa9\xf7n`]@b\xe38\xaa\xca\xdc\xd2\xb3\x1c;\xda\xa8\xf3\x8c\x02H\xd2>\\\x1c\xde:N\x83b\xdd\x10F\xa7\xe0\x00\xfd\"\xa5\x18\xe7\x14\x91\x0f\xef(\xf7(%\x90\x84\x11q+\x1f\x9c\xed\xbfVYy\xe2x\x88\x99\xbe\xf3|\x08a\x04\xces\xfamL\xffz\xf6\xc4\xe1d\x9b\xf3\xdc\xb1m\xeffD)\xe7\x8b\xe5\xf2\x94a \xe2\x86\x9e\x0f\xb9\x9b\x07\x1f`\x04y\xf0\x1a\xbe\x87\xd8\xed\xa4\xd2\x04\x1f\xe580+/\\:\x07\xeb\"\x11\\#\x12\x94\xd9O\xd9-\xc9_\x86\x05q\x91{$A\xb1N\xe2\x12\xbf\x0e\x12\x92^\x97Kx\x0e\xbb\xeat=\x1f\x1c\xb6\x86\x94!\xe9C\xdc}\xe8\xc9\xa9R\xc6\xac\xce\xe9\xce\x89\xbbz\x1b\xa7\xf3\xec\x96n\"\xfb+x\x1b\x96Kz\x97\xf1\xdf3\xf1\xfe\xd8\xf2yA\x92\x05\xfd\x98\xfe\xab\x7f\x8a\xef\x8eA\xc0\x01\xd7\x11\x84\xe82.\x1c\xcf\xf5z\xf0\xe05\xc7\x83\xd7\x8f\xc0\x83G\x9d\xa4\xca\xbe\x8e&\xd9\x8d;\xfa\xdfC\xaa\xd8\x89\xb8\x03\x9d\x16\xa0Kb\x90m\xc9\x1b[o0#\xa5\x91d\xe5\x7f\xf27\xed\xe5\xcc\xe9\\b\xfa\xbf\x01\xfb/\xaf^6\xf8p\xbf\xc8\xf3\xf0.\x88\x0b\xfc\xd7\xdcX:\xb8\xb1\xff\xe57E\x9e\xf2\xb0\xb3J9nN\x17\xd0\xbe\x04;\xf2\xe9nM^\xe5y\x96\xbb\xce\xcb0\xfd\xae\x04\x8a\xdd)k\xbd\xcc\xe6\x90\xa5\x00\xec\xac\x9aey\x9bB\xb0\xa6\x15E\xb4e\xb9Vt\xb5\x9a\x1e\x94\xf3\x95\xdfi\x9f\xd0\xf6\xd2\xce\xd3\x89wq\xec\x03\xb9 \x13\xcfuXq\xd3\xfee\xd9\xc7\xbf\xcc\xfb\xf8\x97\x9b>\xfe\xe5\xae\x8f\x7fi\x18\x9c?\xdb\x19\x9c\xe5\xa6\xec\x08\xe5aV}\x8c\xce\x15o\x99\xb2Ns\xc1:\xd9x\xa5.\xdee\xa9\xf1.\x8ckY#3\xa0q-W\xc8\xb5loC\x88\x8c\x05\xbb\xbc\x94\xd5\xa1,\x0b\xf2\n\xc7\x90\"3\xb3b\x8c\xc3Rc^\x9a\xd3\x8f\xb5\xcf\xb0\xb6`rh#Y\xcd\xf7\\\xd7\xdc\xc8\xe9)\xb2:\xdd\x92$\x90H\xc6F\x90d\xa7\xd2\xc5C\xaf'\x05: Dr\xecf\xda?\xa0Oq\x1b#T\n\xf3\xebjE\xd2\xb2\xe0\xb4e\xdfw\xf4\x89\xc2\x82\xc0\xf8\xb8\xb7\x1eH\x02{r\x0be{\x0b\xf5\x07[\x9el\xde\xb2K\x0c\x94\xb5\xfe`\xe3\xd3\xc74\xae\xd0\xd4\xa6\xe7\xa1\xf3m\xab1\xba\xa1\xd6/\xecm\xd5\xea\x95p\xbdN\xee\xb8\xf2\xaf\xde@s\x8b\x0f\xe6u\x11\\\x87\"!\x904!\xb2J\xa5n\xcaE\xce\xfc\xa6\x93\x9b\xcfl\xdc<~\xe6\xba\xab\xe0&\xce\xcb*L\xf0\xe25\xbf\x10\x96x\x9cW\x17\xbc\xfeG\xfa\xcd%\xfd\xdf\x16\xb2\xfc(\x0f`\xdc~\xe2yV\x8e\xfe\x1f\x85\x8b\x9f\xeab3.dk\x953\x1cu\xa8#4\x8a\xa2\x8c\xca\xc3f\xaa$X\xb06\xf7=83W\x96\xd5n\x16\xccE!H\xee\x96\x9e\x8f\xb0'\xa3gtk\x8c\xdc.jL=\x03Y\x04\xcd!\xaa\xeaf\xd5\x0d\x91 \x9f\x87V\x7f\xce5)\x1d\n\xbc\x91\xb8r\n\xf1\xcb@>\xbe\x88\"R\x14Y\xce\x08\x8a\xa2Z\xd3\xfd \xf3-\x0bA\xe1\xdc\x84IEx\xdb\xf4\xd0\x95\x0cY\xa5\x01\xbe\xf0\xfcMI\x0e\xf9\x08l\xa5\xee\xf4\xc8\xb3\xf3\xfd|\x0cO)\x9e0+~\x7f{\xe0\x8a\xcb\xf6\x82\xa2\xe6\xb6S\xa4 w\xd1\xbe\xa0\xea\xfa{A\xd8\xcc\xb3\x9f\xd8o\xe4\x1f\x9a\x1a\xb4\x8f\\\xb4\xebWS\xa3\x06u\xc8\x92K\x82j\xcb%\xda\xdd\xb3\xb0\x85\xa9\xbb7\xf5\x14dk>\xf4\x82\xc5\x0e\x16\xbcF\xecNh5\x99t\xef\xbf:\xb5\xf1\x01;b\x1b\x9f-I\xe67\xb1L\xa8\x9b0\xdf\xa2\x17\xb7}iT\x1a<\x05\xc6k\xd8\xaeL\xdf\xa0\xfb\xf8`uX\xff\x8d\n\x8dne\xba\xb2rCd\x82\x88\x9bc\x1f2\x1f*\x1fB\x1f\n3\xa8\xa4@d\xcbHc!\x03\xd0\xc6\xb9\n\x8fL\xc9T\x88\xe8\x1c\xc9-p\x18\xf76N\x99B\x8e|\x89\x08SJgQT\xe59\x99\x9f\x00\x9dd\xb9$\x90f\xe9\xceJT\x9c\x93\x1b \xe9M\x9cg)\xc5\xffH\x0e\xd3J\x8b*I\x80\xd0VaE\x8a\"\xbc&\x10\xa6s\x08\xe7sTe\x87 ,I\xb2^T \xdc\x86y\x1a\xa7\xd7E\xa0\x9f\n\xfa\x90\xa4 \x1dD*E;3}\xb1.\xcct>}(\x86\x1f\x9bi\x11W]\nR\xcb\x80\x9f\xfck\xf1\xe4\xda`\xdedz\xf8A^\xcc\x92\xd1\xe8\xc2X\xeb\xc1\xf3\xbc \x0dW(\x91}\x93\xde\x84y\x1c\xa6%\xfc)\xce\x92\x10)\x99\xd6WmJ\x8c\xdd\xb2(X\xe4\xe1\x8a\x14\x9f\xb2\x0f\xd9\x9aQ\x1a\xd1\x1f\xcc\x1f\x0e\x82\x01}\x16!OM\x9c\xae\xa4\xac\xeeW\xec\x0b\xb6bvaa\xa3\xd8\xa5\x8eS\xca8\x90`]\x15K7\xed\x10V\xab\xb35_\xacD\x9d\nW\xf2\xca@.\x0b\xe2tI\xf2\x98\x83\xed\xdd}O\xfd\x84\xb1\xe8\x93C\x1d\x03p\x1e}\xf2\xd4\xd8\x16e\xbf*\xe9M=?\xdaK\xec\x86\x0d\x91\xeb\xf9x\x0b\xc7'\x10\xc13\x10\x1c\xd0 D\xa3\x91\xbe\x88\xe2\xc8\x17\xb3H[\xc2\xa4io\xb6`\xcc\xb1Vt\n\xa1R \xa3\xc2f\x94|\xff \xb1\x80\xf9\x16\x8b\x97x\x9e\xccY\xd0\xef\xd4\x91U\x1c\xfb\"\x9b@\x89\xbbP/@\xa9\xec\x16\xb3,(\x83\x9c\x84\xf3\xf0*a@\x98\x1bi\xf0\x92S\xd8\x9a\xb4\xea\xdf\xe6q\xa9\xd6\xafKD}Z\x18&Iv\xfb\xefa\xb2x\xbf&)7\xbdS\x1bRk\xd4\xad\xb5>\xac\x9b\xcc\xd2\x88\xb8\x0eA\x83\xa8u\xf7r\xae[P\xc3\xd0\xf6\xfd=+\xbd\x14\x138/\xc3\x92\x04$\x9d\x13\xb4\xd6\xc9\x83\x94|)?\xc5\xd1gw\xc9\x86\xd0\xdd\xe9\xb2\xbd\x87%m\xcd5\x89\xf2\xccTb\"\xf3b\x8e\x18\xd7\xbf\xc7\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\x16 \xa9\x18\x06j\x86\x83\xfd\xa4\xa5$\xd5\xd4\x17b)w\xab\xde\xfdfB\x9e?h*sR\x94yvG\xe6\xad\xe1\x0f\x1e\xa2$\xcea\xa3\x15\xe7\x14G\xab |\x0c\xf3i\x8e\x98\xfaeP\x8f\x8d\xd60-D]Acu4a\xa12\x113@\xfe\xfd\xa7\xd0X\x9f\xd9&A\xabx\x1d\xdb)m\\p\xc9\xbf\xea\xa3\xfc\xb1C\x86?\xaa$\x11\x17\x16\xcf\xbe/\xdf#\xe2\xcb}\x7f\x13499\xda\xb3\xea\x8a\xec\xbb!\x8e=\xaetN\xd7\xb56\n\xeb\xa3\x8a7\x1c\xdf\xde\xc1\x9e\x01\x8f\xbf\x0d\xcbe\xb0\n\xbfv\xeds7\xde|\x02\xd2\x80\xcc\xe3\xd9\xb73\x88LZ2\x90\xb5\xfb\x87a\x10\xa7\x87\x1b/\xf0\xdf\x85A\x1c64!\xaci+\xc1J8\x93\xee\xa0\xcd\x19\xe3\xdb\x8f\xa8S\xc8\xb5\xb5U\xba\x1d\xf2-\xebg\x9a\x85\xeec\xf7\xdeb\xaeg\x16$\xee\xeb\x06\x96\x8c\x90>:\xf4\\\xa7\xc8#\xdd\xd4\x81\x92\xd3\xb5\xd0\xb6\xcc\x98\x1dI[\xfd\xe5:\x0e\x8c \xf4\xb8=\x8a#j\xca'\x06-\x08\x838-\xd6$*\xcf\xb3*\x8f\xc8\x90C \x08S\xe9f\xf96K \xc1\xa5\x87&\x12=\xb2Y`\xa4\xea\xa9\x8e\x10\x7ffn\xea\x83CYB\x07\xf5@q\xf3\x9b\x1e \x8a\xbc\xe8\xadm\x8c\x97\xa4\xcf\xaa\xe6\x8b\x8a\xd7;\x03\\\xa1\x92i\xb1\x8a\xe0\xd7,N\xdd\xda\xda\xd7\xc3\xf6\x90\xe2\xcd\xe1\xac\x86\x07p\x0c\xa1\xf8\xa9\x94\xc6\xcd\x818\x06wN\x12R\x12|\xefK\xaf\x14K\x8fF\xf2.\xd3[\xf56u0\xd2\xe2.\x1a\xef\x19e;894\xab\x90\xc1\x91\xf8\x08\xb9\xffot\x0d\x7fo\xc0\xb01\xd66_\xbd\x03\x93\xa2\xd9M\xdd\x83\x03\xcf\xc7\xf7\xe3\x86 \xb69\x98\x18\xaf\xe9\xe4@7\xf3\x0b\x8d\xaeT\x9f\xc9\x9d\xd9\xff''\x0b\xf3\x8b\xcb\xcb\x82$\xf6wx]\x8f[ \xcb\xe4%VX\xb7M&[\x83\x9c,\xa4\xcdh7\x13\x0dk\xe63\xb9\xd3\xf6\x14$\x96\xbc\x0d\x1ar!\x962\xc2\x88\xb6\xbc\x92>\xff\xf2/\xec\xf8\x1cC\xd5^\x1c\xfa\xea\x18\xca\xf6\x0b\xdc\x03\x83v\x1b\xb7 m\x97\xaf\xf3l]\x1cChX\xff\xec6%\xf917j\x12\x8f\xd9\xfbI\xb2]\x91\xc4\x1cA\x94\x93\xb0$\xaf\x12\xb2bn\x15}\x94 \x9e\xf1\xda\x17\xa25\xa2\x84\x9e\xc6*I\x0c\xb3\xe0o\xd4\xc1QZ\x83\xdfNY\xdc/\x1e\x14\xc3\xe4\x10\xd3\xc3CP\x03\xef\xae\xb9\xef\xc7\xc2\xf3!\x12\x85 3\x98\x1c\x01\xa1\xfb\xee\xf9 \x8bM\x03v\x84\x05\x1c8\xaeK\xda\xd5\x18\xf2Q+b\x19\x02\xa5\x8c\x810\xe6\xbb\xb7\xbd\x0d[\xa1v5]V\xeeV\xcc\x93\x11\xfd\x1fOZ\xcb\xb7\x84S\xd05\xe8\xb0\x03\xd3\xf6\xca0Y\xc7\xd2\x83*\x88\x96q2\xcfQ\xa4\xa1\xa1%\x94\xb9\xd2\xdaKx\x0e\x13\x13YQ\x0b\xb3\xe6\xc2\xac\xcd]\xd25bb\xac\x1bx\x06\xcb\x13\xb8\x19\x8d<\x98\xcfn.\xe4\xd1\xcdn`\x04S\x83\xfco\xec\xabc\x9a\xab'\xb05\x13\xee\x15\xc8=q\xe8z\xb5\x84\xe4\xc0\x97\x07\x8dO\x94\x9a\x16\xf1#\x9e\x8b;O\xdeD\\xi\x07\xee\xe8\x0et\x0cM\x08\x80\xe9ig\xee\x03c\xfc/\x0eP\x8a\x9e\x96\x14g7\x17\xc7\xaf/\xcc\xeb0*\xb3\xfcn\x90G\xa4v\xc9\x82\xab8\x9d\xbb\xdc\x07\xc9L8\x93@(\xd75/\xc5E\x10%YJ^\xa4\xf3\x8fL\xdc\xfd\x1f\xa4\x97\xb9n\xe6\x18p%\xbd\xcf\xa0,\xfd\x87\xdf\x03\xfa\x07?\xe7e\xc0\xa0\x8a\xcf4\xfb\xebB\x9f?\x1d\xc0f\xf0\xa2\xaa\x0d\x9brTd\x8a\x86\xdb@\x02m\x9b\xe8\x15n\xbfB\xc1\x03\x0e\xbb}j(\x12\xed\x9a\x8b\xb79\xd0\xa9\x14\xa03\x17@\x87\xdd\x9a\xfax\xc80h\xa9\xc3 \xb6\xde\xec\xe0#\x1e\x97\xcft\x0d\xb6\x0c\xef<\x0d\xdaT\x16h\xc3\xca\x15\x15\x11%\xb6T9P\x02g\xb0\xa6\xc5\xa7\x90\xd0\x7f\x8e\xc5/Z\xd7\x00\x9d\xee6\x84Nw\x1e\xac\x87@\xa7\xbb^\xe8t]C'\xbaz+\x06\x9dV\xf0\x0c\xeeN`E\xa1\xd3\xf5l\xa5B\xa7\x95\x05:)\x03\xba\x1et\xff\xf9\xddX\xfa0\x17@\xe0F\x95\x13\xd3\xc3\x1f\x17\x7f\n\x93xn:\xfe\x9bP\xa4\x8a\xbc\x88\x1d\x10AJ00&\xf7\xaa\x10\xc0\x7f\x80~\xe2T\xd2\x0e\x1f\x98Y\xc0\xdd\x83~\xa9@\x87\xb3\x03c%\xcc\xa0+wS\x8f\"P8\xe6\x87\xb0\x99\x8aq\xec\xfa\xc09%\xa6\xab\x8a\x8d\x04ef\x10\xd3\x0b\xc3R\xae!-H\xf9)^\x91\xac*a\x192\xb1\xc5\x15!\xdcK\x97\xcc\x9dn\x91|\xd5\xdfA\x94\x900\xff\x8a.B\xb3\xfc%\xc5s\xd0\x8c\xbe\xd6\xda4Et\xf9\xc6\x06\xc8\xc6\xbf\xcd(\xd3\xb5\x95\"\x880\xb4C\xf7\xb1)\xf6{\xda\xed\x94r\xa4\xec\x0b\xf5\x9a 9\x87\xd1\xa7\xd5\xdc\x1c\xb4l@8\x92l\xb5\x0e\xbd=\xb4\xdb\xe2\n,s[\x16\x10\xf1\xb0eg\x7f\xcdsHm\xb2\x04\xe9 \x9e\xc9?Z\xc4{\xa7\x80(\xad=\x18\xea\xfa\x03\x06\x95\xdb\x06\xa5\x1c\xde3\xf5\xe7\xb1\x04\x85\xa0w`\xb4\x8b\xca\xb6\x8a\xae\xa6\xa2-\x98\nu\xa6i\xfe\xd1\xfeV\xd3@Q\x0c\xb931]\xfe\xb6\x8e\x8e\xf9? J\xe4M\xd5\xeaY:9z\xe0\x83(K\xa3\xb0t#\xb4/\xc4\xb6}\x88D\xa5\xedmX\xba^\x9f\x96\xcet]\xb7\x166j\x96\"\x89\xd0]\x1b\xd4\xe28F\x83uC\x8d\x0f)\x01\x18\xd5\xfaerb;\xe7\xf8\x01\x85\x92\x91X\xd7\x13\x18\x8d\x12x\x86\xdf\xe0\x82\x14\xb3\xe4\"\xc8\xab\xd4\xb5X\xbc\x8a\xa5\x90\xbb\xec\xb9%\xc0%|\xec\x8e\x9a\xf6N\x865\xbc\x92\x0b[Jk\xbd\x1d\xdeP\x85 \x90\xf1d\xc6F\xe9\xa9\x95_\xf8\xc3\xbb\xb1\x830\xf1\xe4n\xd9\x864\xe2\xe9\x87^\xe2\xe9\xef\x08d\xb5\x83\x0c7\xed\xdd\xc3FC\x80V\x07\xc2\x1a\xa0\xbb\x03\xfb\xec\x8do\x1e\xf4\x05{\xe8\xbc\x89s\xbb*qQ\xa5\x92&3\xa44%%x;\x9b\xbbq\x15\x8b\xd3\xb8\xd6:\x0e\xe2\xf1(E\xc0hW\x03\xed<1`\xe9V5J\x1d\xdba\x01\x9d\xcf\xe4\x04Rx\xd6\"\xceO \xa5\xc41\x99\xa5\xb4+\x95@N5\xe28\xe2ZVr+\x96\xcf\xf3a\x82th\x0d\x05\xef\xef\x01\xa3s\x84\xeeR\xa1~\xe7\x92D2\xaf:=\xa6\xc4&p\x9bs)\xde\x06\xee\x85\xd2l\x1c\x94q\x89\xd6\x1f\xceU\x9e\xdd\x16$wh!\xff\xbb\x89\xba\x94\xde\xf0\xf0\x1bq\x10\xe6\xd77\x0c\x7f@\x1cp\xbbAd\xbe\xa4\xdfE]\x1b\xdf\xdd\xe0w\xf3\xf9OqQ\x92\x14\xdb\xbda/Q\xd9\xc0\xfe^,\xc4\x9f9Ye7D\xaf\xccJ_$\x89xQ\x887d\x15\x97\xe2\xefuN\xd6$m\xf5\xc4\x8b\xdf\xa7Q\xab\xddDj\xae\x97\xa1\x98]\xa8\xabw\x15\xa7\xf38\xbd\xeeVR\xe9T\xeb:\xcf\"R\x14\xf5\xc7\xb1f%\xedh[\x14\xdd\xce\x07x\xc89O\x1c\xed\xb3\xe5\x0f\x18\xd9&\\\x88\x91R\xe22y&\xc8\x81\xb3\xe1\xbd\xf9\xd3\xab\xcb7\xef^\xbfy\xf7\xe6\xd3_\xb0\xc6\x04\x9e\xd8V\x9a|)I\xda\x8a\x8bh[\x02\xa6\x9dk\xd3Q6\xf9-.\x0d[:7S-\x9f]\xe2y\x0d\xed\x04\xcf o\xd6\xae\x9c\xc5\x94\xc5\x9e\xa5\x17LD\x1a_|\xfb+$J%9\x9d\xd9]\xa5\x15\xd4\x8fYj\x8c=\xd35\xac:5v\x063n1\x95 N\xa3\xa4\x9a\x93\xa1\xa1\xcb(\xa7_\xf7\xa5\xbc~\xe0\xc6\x0fC[2D@3\x8c_<\x84\x85\xc7C\xe5.\xfdk{[\x84\xc6ce\xf8\xe7\xf66\xe4\xc2\x12\xbd\xd5\n\x1d_\xca\xde\xea\x9c\x06\xbeY\xc4IIr\xb7\xf3-IN(\x11\x17\xa2\x17\n\xfb\x06\xc11z\x0d, \xd4\xe3\xa740d\x0b\x08\xa1\x88\x96d\x15\x06\xf0F\xbcb\xf1\x0d)>\xc8\x16PT\xd1\x12[(Z\xc4a\xe0\x18\x8e\xe3\x12C\x1b\xae\xd6qB\xe6o\x9a\x95\xab8\x0b\xeb\x88\x018>\xcc.\xf4\x0f^}i\x7f \xd6\xd3\xf8\x01E\xcco\xc3u\x17E\nB0\xc4n\x90\xd1\xae\x80>l\xb1\x8e\x8dZv|\xcf\xc3j\xdak\xf0`\x9b\xf6\n\x8b0I\xae\xc2\xe8s+V.}d\x89{\xfdA\x07\xce\x17O:cW\xf1b\x86\xd7\x94\xf9P\x8a\x9e\x9a2C\x0c\xc3vw\x14\x90\x97\x0c\x90\x13\x83Z\xea\x04J\x86\xf9J\x0e\xbd\x1b\xc6W\n\xaf\xa8k\xff@\x12\x0d\xab\xe7\xc55\x9e\x16\xcb\x99\x90/\xb7\xf8+\x0c~|\xf5\xfa\xc5\xcf?}\xaa\xe5b\xa1`\x19:N\x848\x0d\xea07\xf1\xb5\xef\xf2\x80G\x01\xa4\x18\x97\xb6\x8e\xb3\xb1AyF\x9f\xab\x9c\x84\x9f\xdb\xaf\xba\x9c\xe1K\xada\xbd\xab\xc9f]q}\xa8\xa5/\x19\xc8\xfc9\xcf\xd2k`\x9e\x81\x08AD\x97x~\xce\x194\xe1\xbbP\xb3v]F\x01\xcc^\x81\x02vN\x0c\xd6N\xceM \xf3\xe5\x0b\xc8\x0d\xc9\xefz\x80\xa7\xc0\xb3\xb2\x1bN\xa8\x01*\x0dn\x9e\xd7\x916\x05XDn\x88\x83\xc6\x02\xdc,\xa7\x802N\xaf\x13\xc2g\xc8Mq=\xca\xa0\x95a\x9c\n\x98\xab\xbcm\xf9\xec!wA\x1e=\x8dl\xd3i\xd4\x81B\xb59P\xb8i\x9b\x81\xf4\xae5~q\x8f\xc9-\x84\xae\x01o1\xf4id\x89\x05\x1c?\xd6\x1d\xd3\x14\x11\x83\xcc\xa4\xb1M\x1bj\xab\xf8\xdb \xcaP2Ho\x05\xc6\xe4\x81Om\x16\xe9\x83}\xf9j\xcdl\xe9C\xac\x83\xad^},s\xee\x16\x06\xa1\x9b\xb2\xaf\x9a\x0e\xce\x0b\x8a$\x8e\x88{\xe8\xc3\xce\xa4o(\xdd\x0e\xf5{\xbb\xff+\x1d\xea\x87-\xeb?\x80\xd5\xf9\xb7:\xf7\xfb&?U\xe6\xdf\x12\xa7\x8f\xa3\xec\xb3\x9eC:@/+\xb7=\\7+\xf5\xf1\xa3&F\x1d4z\xfaQ\xcf\xd8\x91\x86\xda\xb8a\xfcJj\x19\xc3\xc1\xc8\xb21\xac`\xeaO8\xdc\x0e\xeeR\x81\x9e]G\xe6C\x1e\xaf\xe22\xbe\x19\xbcL*\xa1i\x04\x1d\xf8\xc2p\xbdX\xfc\xc5\xf6\x05a\xe5\xed#\xaeS\xb2FPW-\x16x\xe9\xcb\xfaG]\xed\xc1\xab\xddaR\xf7\xe0\xd0\x0b\xd8{\xb3@es\x0b\x06\x03\xe9\x8e\x1b(9-s=\x80\x08\x06\xf6\x97\x17o\x7fz%\xc2\xae9u\x82\xaa\xb0\xc8d\xdb\xc3U\x98\x7f\xe6\xa6?\xf8\x93\xc7V;mb%\xd1\xfat\xcd\xdc\x8a\xa7`be\x1ef\xb0p\x9bF\xcex\x02\x8c\xba\xa4\xc6b,\xf7\xa4\xe3\xf9\xf5\x90\xd7e\x95\x93\xf32\x8c>\x7f\xcaCth\xb4\xbc\x11\x86\x9cK9\x01X\x86q\x88\xb1\xac\xa05\xd1EYXhy\xbc\x8c\x0eY\xb2\xf6\xaa\xff\xca;,\x9c\xd8 \xe4HZ\xb9\xd5\xf2&W_\x8a\xb9\x0e\xa3U\xea}\x1a\x81s\x0c\x8e\x91f!h%\xd1\xb7 >l1\x07\x9dz\x1f(\x85C\x9a|$\xa6\xed\xd0s\x0b\xca\x94\xd6\xa0\x84\n\xbd\xf6\x026\xf7\x1d\x96\xcdK]\x95Z\x08>K\xdd\xe9x\xeaiV\xf7B\x01\x8a\xef\xf7w'\xe8\x88\xbe\xbf\xdb\xaa\xd7\xc8\xcb\xb1\xde.\xaf\xb7\xc7\xff\xdd\xe7\xff\x1ex\x92\xc5\xcbc\xc5\x9dv/\xc66(S\xcc\xda\xdc lCip,\xd4\xcc\xd6\xdc\xa9\xa5\x9ed\x00\xe7\xeeY\xeap3;Mm\xa0\xdd\x85!ru\xcd\xc4.\x17\x82\xcf\xb8\xa3Q\n#\xc8\xbd\xe6\x00\xef\x1e<>\xae\xce\xe3\x03\xfapV\xea\x11a\x89$%\x8a\x1e\xc4\x84\x87\xf7oE\x1f\xcax\xb9\xce\xb0n\x10=\x99\x05\x8c\xfdg\xf4\xe4\xea\x9bDO6\xdd\x8f\xbfOPa\xd3H\xf0ZF$N,7v\x91dY\xde7:\xcb\xd0\xe2\xe2]\xf8\x0e\x15\xce#\x14#\x8c\xe1\x18\\\xa1\xc1\xc81OZ\xbfD\xc1.\xaa\xe9\x0f\x10\xdcw@\xd5\x10\xb4|\xd4\x9a @X+\x18\xad\xb7\xba\xcc\x13xs\xf5h\xac\xe6_R\xe5\xb2!\x05\xdb\xf27\xfa\x18D\xd7]\xa6\x0b\xad1\xf4\xe4Nh\x0f\xc3\x1a\x9b\xdf6\x92\xdd\xe1#Ah\xb0\xe1`\x14E\xaf\xfc\x0c\x90N\xd6\x9dw0\x0e\"\x9b\x00\xb1\xa6\x12\xd8\x04\x1f\x0e\xbb.qoB\x99\xded2\x8f\x0dTf\x8f\xaefQ\xdaO\xc6\xbd\xb7\xce\x02\x0d\x1e\x15\xd6\xae\x8f^l\x85\xfc\xe2\xf2Z}\xf0\x0c+\xb62\x06VbNm\x19m\xea>\x16\xbe\xdc\xf0\xa8:\xa1k\xa4\xd7\xb0\xed\xca\x87\xc2\xe7\x99\xf0\x0c\x95(\x1e\x8efcC\x00\xe9\x04\xdf\xe8&G\xd9\xb0\xcc{\x1d\x9a/2+.\xba4\x9fZu\x83q\x80\xcf\x8c\x12xv\xbf\x96\xc5(\"\xcf\x98\x07\x00S\x1c\x17|X y\xc0\xe41\xf2\xab\xc2\x87)\x93\xb5\x9eu\xe3BhF\x96\xd4\xf8\x90q\x80\xfa@\xa0/\x16\xa9\xb1\x1d}6}\xc7Xn\x98\x91U\xbf=\x18\x15\xd0\x8f\xbf\x04\xc3.\x9f\xa2\xeb5y\xf01\xedo\x13p\xfd# \xa3\x92\x07L\xff?\x0e\xcf\x84\xec\x9c\xc0M\\\xc4%,\xcbr}\xfc\xe4\xc9\"\x8c\xc8U\x96}\x0e\xae\xe3rY]\x05q\xf6$\xa7\xdf=\x99gQ\xf1\x04?\xde\x99\x93(\x9b\x93>\x81\x9c\x999\xe6\xa3\x91\xc7,\xd5\x9d\xed0\xbf.f\x17X\x8f\xa4\xb4\x89\x9f?\xbey\x99\xad\xd6YJRY\xaf\x96\xc3\x08&\xba\xf2\x8c\xb5\xa1\x06\x7f\x17\xa2\x89,\x1f\x1e9\xbe\x89\x1a_\xf4\x87\x8b?i]\xff\x18\xe4\x10\xee\xba\xaa\x8e\xc1\xf4\xb83\xfa\xba\x0fq;\xacz\xdcs\xea\x06\x9d\x1b\x89\x82\xb2q4\x8f`\xe5\xebb\xf1I\x87\xf7\xcc <\xac^\xb8?\xb4\xff\x12\xeb,\xb7&\xc1\xb78(\x97a\xf9\x11[+\x98\xd8E)z\x1d&\x05Z>\xba\x18H[y\xf7)\xaf\xf8\xab\xb1\xfe\x8a+\x17r\x11\xcfW\xfdn\x19w\x9a\x8f\x88\xb9)\xf9\xf6\xb46^\xf0\x03>\x04\xa5\x9a\xfdO\xe0\x94\x1f\x94\x8d6P\x94v(\xa5\x9e|\xbf\xa5n\xd7\xf7\xf0iI\xe0\x8a 7W\xd9\xbcJ\x08,\xf2l\x05i6'\xc1\xaf\x85__D\xee\xf4\x1ah\xdf\xeb\xcd\xfd[X\x95\xcb,\x07\x80\xd7$\xcf\x8a\x02^\\e\xd5\xe7e8\x8f\x7f%Kx\xb6\xc0\xc2\x7fc\xff\x04Y~\xfd\x1c\x9e \x88\xd4\x94\xb5\x1a\x15\xf6H\x8aA\x12{\xf9\xa4uu\xb9\x1c\xaa\xc5?CC\\\xb4\xb2\xe4A\x93X\x0f\xef\x94\xf2\xb2\xbe\x10\xed\x98+\xd0le\x11|\xfa\xcb\x87W?^\xbe\xf8\xf8\xf1\xc5_.\xcf\x7f\xfe\xf0\xe1\xfd\xc7Op\x06\xd3\xc9\xde\xd3\xbd\xc3\xdd\x83\xbd\xa7p\x0c\x93\xf1\xd3\xdd\xa7{\x93\xc3\xa9\x96\xef\xd6\xd2ah\xc5\x95\x94\xe2\xa4\xc3yF_7\x86\x17\x1f\xc3\xf4Z\xf0\xc9\x14(%\xf1\x1cI\xd190Os\x865:\xcc+l\xb3p\x85\xbd\xd3\xcfqZ\x1e\nCc/\xb8\xbcDl\x7fy\x89!,\x1a\xf9\xea\xb1b*\x82l7o\x00}\x9c\xe8a\xe7\x18\x8c\xe5\xb8\xd3\xa1\x85y=\n\x1b\xc5\x06\xc2\x88\xcb5O\x80\x07\xc4\x97\x95 \x85\x9an\xa0i\xba\xbd6H\xde\x1b\x14\x0d6\x12\x0b\xeb\xb7\x15\x10\xcaN\x89MZ0\x1c\xc9=\x9d\x8b\xda,\xb9\\\x12\xe6\x86\xb2\x88\xf3\xa2\xac\x11?\xac\xaa\x02\xedgB(Z\xd1j\xe5G\x10A\xf6x\x08\x0f\xb63\x105\x01i\x0cr\x1c\xcb\xd6Db\xfd,\x0c\xaae\x0d\x89\xd9l\xe8;!\xb5Q\xe7\xcdm\x87BnR\xdf\x91~\xda\x9c\x89\x16\xcf-W\xe5lo\x03\x91\xcf\x83\xfc\xae\x1dK\xbb\x83\xedFW\xbf\xe0\xea\xae$?\xe1\x89\xf6\xd1\x0co\x0c\x98\xeb\xba)\x86g\x8d4K\xbf\xaa\xdfe\x8bEA\xca\xef\xe8\x11\xc8*4G\xbf\xca\xaat^\xd8vW\xef\x936\x0e#p1\xf7\xf0\xd8\xb3\xf6\xc3\xee\xdc\xf0~0\x00A#cI\xa5\x00n\xa7<\xf0o\x0b(\xd4F.\xd6*x\x81\x8fM\xc5t\x99\xcd#\xe9\x04L\xa4\x0b\x10\xd1\nk\x06H;\xaf\x8a\xc1\xd0O\xd9\xfdc\x93R\xb1\xc5\xd8tx \x1a>\xc7\x05\xad\xf3\xc9\xdf\xdf3\xe7P\xa7*\x17\x87][\xbfU\x04q\xf1\x8a\xc3\x0d7\xb58`\x7f\xe7\x08\xd0\xe2H`\x83!\x056\x94\x1a\xf6\x98n\x12H\xf8t\x0c\xf70g\x1bg\xf6\xd7\x02\x8e\\]\x16T\xa8d\x86\x8e\xb7y\\\x12\xd7\x02U\xd9'u\x96\x02\x97\xf9\x042#\xfc\xb1\x0f\xb1\xf7\xe8\xed\xf2\xfaL\x1f\xc5C\xd7\xb2\xa8\x15\xba\x141uH\xb3j\xd5\x08\xdc\xc3\xd2%\xc2\xe7\xc9\x166c\x08\x906\x9a]Iu\x82\xb8\xf8SLX\xda\xfdv\xb1\xc9\"L\xaa%\x8f\xb4!0\xdb\xa3\xad\xa9\x99-\xd5R\x0e\x11\x1dK\x1caX\xe2\x9b:\xd9f\xd7*pj\xb3\x1eIW(\xc2\x1c\xc3\xfb\x9d\x9cx\xb5\xa2\xcf\x8a Q\xbd\xe5\x84E\x14\xc7\x8eY\xc9\xc5j$a\x19\xa7\x93\xce*Wq\x1a\xe6w\x96* )w\xcd\xe8\x845\x82d^W/U\xb9\xd8\xe9\xac\xc1\x08\xed\xdeQ\xfc\xec\x96\x9eu\xc1\xa1\xe9.*\xa6\xdd\xe3\x89\x8a\x9d\x9e\x1a\xe5br\x90\x90\xbe:;\x1d\x95\xa0\x19\xf7\x14\xbe\xef^\xc1%\xf9\xd2\xdfJ\n\xcf\x9f?\x07\x83?\x114\xdb\x19\x16\xe4`\xaf\xbf\xa9\x1f\xfa\x16\xb2\xd37\x1c\xa0v\x0c\x19\xba1\xc0\x990\x96\xac\x86Ph\xf6SvK\xf2\x97aA0\x03\x19F\xa1k}\xaa\xebR\xcd\xe0\xeb\xa6\x8bc\x11w\xab\x9c\x11\x03\xec\xe7F\x14\x14\xfd\xf9\x02 \xe6\x83:\xbd\x93\x98*\x8b\xfe\xb8\x01\x01eM1\xf2\x05\xdb1l\xa3E\xdc\x92R\xee\x10\x85\x81\xdc?\x0eyNx.K\xe4\xce\xf0\x8d\"\xa2\xa3\xd8}\xa7.9D\x90F+Ie\x1ekp\x94\xfa\xdcB\x82\x852\xc6j1G\xce\xa5\x1ccQ\x88\x04D\xa5\xfa\xe5\x08i\xfd\x94\"\xc0\xb2#\x88\x82\x98e\xdc\xb9\x0e\xc0C\xe0\xc8]\xb7OF\x13\xf6h\\\x99\xc2J\x91\x86}\xda\x99\xc01\\k'\xcarB\x8c\xc2'\xde0\x81m\xa4u|\x8b\x9c\xc1\x86t\x1b\xf1\x85d\x10\xcac\xee\xc0\x19\x1e\x86\xae*\x8d\xe5\x0f\xe7Z\x8d\x95\x93\xb0(\xdfX>\xc0\xb9c\x12%\xfb\xec\x8d\xbc\xcbM\x98\xd4\x84\xbd`WD\xa0\x8a\x9c\x93W\xadP\x14\xe6\x1b\xad\xaf\xbf\x05\x98d,5\x8b%\xbc_(\x1d\\s\x8dB\xa2\x82\xcd[,\xa5\x16`\"\x05\x86\xd1\x18\xffM!\x01'\x04s\x0d\x8c\"=\xc4\x91\x1b\x17Za\x01\xc7ej\xd1\x8eTf\x95\x17\xc4,*\x91\xa0\xd8\xa7L\x18\xd8\xfc\xee\xbdWt\xa5\xa6>\x84\xf0\x04\xff-\xf8\xbf)\xfek\xb8o\xad\"M0k\x1b(\x1f\x06\x0b\x17U\x89\x8c]\xc7<{\xee\xcfo\xd2rr\xf0\xc3+\x97\xc0\xf7r\xb6\x11\xf1\x98\xef\xb9\xd5&H85\xda&\x8d4\x1d\xaaaN \x83g\x10\x9e@6\x1a\x99\x992\xe0\x9d\xe1\xf42\x0f\xc7\x1fQ\xf0\xc1C_-8\x1c\xce`\x07\x16\x9dr\x1d\xd1R\xfd\xa1\x88\xd2\x9dy>\xfb\x1cF|\x81\x8az\xdf\x16tA\xacMr \xbb\xc3\xc2\xd7\xb2\x163\xd89\xe5\xa3\xf1\xf9*X\x80\xb3}mR\x18A\x01\xcf!\xac1I\x08;P\xe08\xf9\xaa=Gf.\xdb\xd9\xe9\x9arM<'<\x88\xed\x9a\xf1\x80kx\x06\xc5 \xac\xbb\x16\x1d\x94\x85\x87\x11\xac=\x16\xa4\x97.\xfe\xbaw\xa5\x81\x9b\xc0\x98\xfc\xbb\xf5\x07\xe3\xeft\xd62\xcbq\x80\x0f1\xa9\xb7+3\xd6\xb3j@vt7k3\xe0[\xf5h\x07\xe8\x061o1J!\xdc\xdf\x9b\xf8\x18\xa1\x04\x97\x90\xb6\x81\xe2\xcd\x05-\xc3\x9b\xa3\x90\xe79\xc4x\x0chqLq\x01\xfea\xee!\xeb\x85\x9d\x19\xfc+L)/7\xb68r\x0bu\xe2\x92|\xe9P=\xe5\xf0\x1c2x\x02\xd3zh\xf8\xabK\xfeP\xb1\xb3W\xb1h\x87\xa3Q\xd5\x05>(\x9aX\x87yA\xde\xa4\xa5K\x82\xa2\xba*\xca\xdc\xa5|B\xe5\xc3\xd4\xf3ar\xd0!7g\xd4\x9a$(\xac\xccu\xcb\x19\xbdi\x98\x8a&\x1c\x00\xf4Dc\x83\x0e\xcde\xcf\xa1\xe1\x8d\xfd\xd5\xfd\x19s\nK\xc7\xc2C\x95\\\xdb\xa0\xd3\xd6\xd3\xd5\xd0\x9e\xec\x06\x03u\x9b\xb2\x11\xd2\xecB 8Q\xb3\xf2L\"\xc6\xb3\xed3\xc1Q\x19D<\xe4\xc4\x8b\xd2M{$\xfam\xc0\xf7\xc0dy\x9bL\xfav\xd8\xa4\x95\xb5\x19\xd4\xf0\x97a\x0d\xff\xd5\xfda\xf3A\x9f\x0fm{\x90VC\x0e\xec\xc0\x83\x93\xf2]\x93\xaeZ}\xb0\xb6\xb7a\xcbu \xc5NS\x0f9\x02~ \x19+!\xed_\xc5\xf9M\xcaO\xc3!\xcb\x84\x93R\xb0\xb1\x7f\xe0C\xc6\xb6=\xf6\xea?m\x9a<+H~\xf8\xda\x03\xff\xaa\x8b\x9fUY\x08\xf4\xe9TXL\xf4\xd5\xa7<\xc8\x0fw%\x91<\xa2[\x85\\E\x85\xfd\x0c\x1b\xd7\x8b\xaeq\xa5RL\xa1\x9af\x1c \xb2\xc5\x10\xf3\x18\x83\x1ab\x14\xddv\x81\xcd\x8c\x85\xf8\xf0E~\x93r\x16\x1bLS\xc5\x83N$\xc6L\x89\xe2A#V\xcaJ\xef\x1e\xc1\x19\xec\xc11\xfb5\xdd\x853\xd8\xe5\xbf&G\x138\x83)\x1c\xdbD/\x08\x91a\x04 \xad\x87[|\x83\xe1Z\x8c\xf8\xc5#\x8f\x8f\x81\x05\xf6kz\xe1kS\xc9p\xf4jY%\xcdh\xb2_\xcfh2\x85{p\xc5\x9c\xe4)Vt\x8a\xd3\xf1\xdeS\xfe\xdd3\xd8\xdf\x9f\x1e\x1dP\x92\x88\x92\xb3\xfbOw\xf7v\xbdo:\xff\xbd\xc7\xcf?\xac\x7f\xedn\xb0\x1ajYhY\xa1Cm\x85\xa4%\xab\xd4%\x0b\xe9\x92\x1d\xec\xef\xef\xee\x03\x06\xf4x\x06\x93\xc9do2\x99J\xcbd\x9c\xa2\x99$\xae\x8d\xb1(_\x84\x9f\xd3\xb6w}\xbc\xc9\x18tl!\xf7\xe7.(>\xa0?\x0f|\x11\xb5x\xc1\xc4\xa8c\xd8\x86\xc9x\xba\x0b\xf7l\x1397\xb3\x7f\xb0;\x1d\xc3={\xb5\xcd\x0c\xc2\xf9w\x1e\x05T\xa3SH\xda\x10\xdf\x06\xa5\xfb)\x12A\x8c\xd8\x15 \x14\xe3\x14\xbc\xbc\xafI>C8,\xee1\xc2\x13\x85\x1b\xf5\x16 \xe9.\x1c\xc7\x0e\x18s\xb32\x10\x04\xf4\x16\x06\xd3\xdcXz\xc0`8\xba\xc9}\xa6\x9a{\xdfCD\xa5\xedEv[\xe8S\xfeE\x82\xda\xb7\xbd\xf0\x81\x04\xe7Iv[\x97t\xef\xc3\xa8l\"\xab`,\xdc.\xbbBT\xdd\xb9#S\xa0\x837\xef\xce?\xbcz\xf9\xe9\xf2\xed\x8b\xff\xef\xf2\x87\xbf|zuN\xcf\xd3\xd8&\x8b;U\x93)\x9b\xcd\x82\xcc\xe5=\xb1\x13\xed\xf9\x8cn\xa4\x88o\x92\xc9\x92\x9e=G<\xb5\x02M\xb6J\xb2\xe3\xb4\xba\x96Y\x00\xd8\x81\xa8\xb3l@8H\xf1\xf0Q\xed\xb5\xe5G\xe21\xc3\x8e\x07\x1f\xf6\xa6\x9cVZd\x99\xebY\xc5\xa1%e\xc8\x98\xa5\xe9\xf6\xb6p\xeb\xad\xcb\xdc\x89\x0f\x13OR*\xb6\x8fjg\x0c4h\xe6\xb0e\x90\x9d\xa8\xe7\xca\xf5\xe8\xc9\xfa\xfc6\xfc\xc2-\xe4P\xc5L\xcf\xd4:\xcb\x92\xf3\xf8o\x14x\x1cN\x8e\xa6\xb4\xe82\xac\xae{M\xb6\xc1\xb6\xb1\x85\xe2\x0c\xa3\x1fo&\xd8\x1e\xe0u$\xb5\x1f5\xe9\x05\x0d\x16\x98\x1dBjW\x1a\x8b2F\xe3\xb9\xa237\xd6\xf1-\xf6\x93<\x9c\xcc\xf66\xff+@{U\xc2\xf3\xb8\xa9e\x17LbF_\x99\xc3\x9c\x16\xbe\xd6\x8a)\xe0)wh7S\xa3\x9d _\x1e\x98\x1a\x01\xc1\xcef\xab\xbf\x81\xed\xa7\xf8\x02Y>D4ca\xd6$\x1bB2\xf3\xbe3\x93\x05`\xde\xd4\x0f\x161\x0b\xea\x86\xc6\x86j\xa1Tb\x00\xf0}\xa7\x05\x17\xe1\xe7\xb4\x08\x17\x83\xe3\xafX2\xb5\xe9\xcdQl\xf1-\x9a\x94\"\xac\x0cjk\xcbmb\xa1\xdd\xdf\xc3V\x19\\\x8a&\x0c\xadG\xd9j\x1d\xe6\xa4\xcf!\x1bd\xf3\xca\xdar\x03\xdb\xd7\xf4QF \xd9\x8b:\xba\xb7P\xac\xb0/\x8c\xb6&\xcc\xf0Eu\\\xee2s\x90\x15{\x8c\x0d'\xf5\xaf\x98\xc5\xa1\xcfdN\x92\x99\xd2\"k\x98Q\x86\xde\xe2t\x8b\xc3\x98\xc5\x17xD\xc9,\xbe\xe8B\"\xa9\xe0\x1cY\xff\xad\x0c$\xf2c\x97\xddZ\x89>\xccw\"\x94zh\x8e\x04g0Q\xe2\xe1Bs^\x84\xf9k\xef\x89\x11l%W\xfe\x94-\xe5\x8fy\xc2}\x06\x06\xdf\xca\x84\xe3\xbf\xc1\x1ee\x80\x8d\xc3?\xa8\x01\x88) )\x0c1\xb3\x18L'\xf8u\xe6\xd5\xc1\xd0!\xb3\xa6\xbc\xfa\xceI\xe2\xa24\x99N\xf2\xe0{\x90-\x04P\xb0YQZ\x0c\x1f\x04\x01m\xa2\xb1\x11>\x98[S\x02$\x18W\x0b!\x0ca\x10\xa4C\xaa\x8b!\x89f\xe9\x85\x95\xdd\x12r)\x05=P\xbch\x86;f>IO\x1d\xa5\x8d\xc2N\x9cW\xdc\x18\xc5\xce\x06\xca \xbc\xfa\x9d\xf6\x8f>\x153\xe6FM8g|E\xf4\xd6\x9e\xb3\x08\xcd\xb9mEg+dg\x8fS\x98\xfb\xa0Pz\x12\xfa\xdc\x1a\xab\xef\x8a\xdbp=9\xe8\xf3\x0c\x17\x0c\x0e\xc6\x8c\xea\xd2\x13\x95F=\x91l\xae\xc9GRP\x12\xbb1\x1d^UI\x19\xaf\x13BWpr\xb0s\x15\x97F\xb4\xa8(\x1a\xc6'h\xbe[\x9e\xb0\xe37\xf5\xe0\x86\xbb&\x11Jm\x8dZ\xd9KA\"\xd1e\x17M\x10\x8b\xa8.\xcb\xee\xf4\x9b.\xcb\xdeW.\xcb\xee\xf4Q\xcb\xb2\xd7Z\x96]\xcfo\x8a\xe82\xb1\x7fLZ\xb8\x0dV\xeb`\xef\x9b\xae\xd6\xe1W\xae\xd6\xc1\xde\xa3V\xeb\xb0\xb5ZO\xcd\xabu\xa0\x15O\xd9?\xfbZ\xf1.\xfbg\xef\xf1kk\x8a\x1f\xd7\xb5\xbah\x9e\xdc\xb5\xc2\x8a\xa6\xa3\x8e\xaa\xc5~\xb6\x02\x08\x9c\xc1\x0b>\x9b1\xa5\xcc\x07\x84\x87\x92\xc7\x93wh\xf2\xe9F+\xf8\x07\x8d`\x98\xcd\x99\xb0\xfa\x1a#\xdb\xf4\\\x9eO\xe3Q\xe2\x0ck\x17\xfd\xa6R\xbd\x91\xda\xd4N*D3<\x8a7\xcda\xb69Y\xc1\x10j\x15\x06Q\xac\xe2\xe1\x9d\xbf\xd8\xa4\xf3.:W<\xbc\xdd_7i\xb7\x93:\x86a\x14\xb2xx\xff\x9f7\xe9\xbf\xd7v\x18\x9a\x86_m\xd2p\x075\x0e\x83(r\x18H\x95\xc3&\x9494\xb3y;l6\xbd\xc4:4v\xd1F\xc6\xfag\x1e\xf9Rx+\x1e\x83\xcd\xbd@~J\xe6\x8e8\x02\xc7\x19j6\x0dF\x9a\xec\x81\x8b\xe4\xd9dmA\xa5T\xa0N\xfeZ\x85Iw`\x170J\x1bzd\x0b\x122\x146\x9a\x9d\x88\x87\xe3\x80\xfb{\x0e,kY\x88\xd9/\\\x9bE\x9c\x16k-xr\x17f\xb2)F\x98\xffRK\xca\xdf9p\x81\x9f\x9es\xb3\xe9\x9a\xae\xa8\xddy\x10Fr\x7f\xc9`\x15\x96\xd1\xd2}\x12\xfc6}xr-2l\x80#\"\xe3\xd6\x8d\xf1\x10\x80,\xc8L\x10\x04\xe0x\x9e\x0f\xce3No\xd4\xe1r\x9e;]\xebb\x91'\xf5\x1a\xb5\x7f\xfb\xad\xd6y<\x05\xb3\xea\x9e\xdb\x0c!\xa2v\x84/\xc8\xb1^/\xaf\xed\xb6\xb4\x17\xcc\xd6,naT\"|\xdd\x11\x03\x8bv\xef\xefQ\x80\x83/b\x1d5\x9b)>\xee\x8f\x9e\xd3\"@\xfbh\xdb|sx\xce\xc7C\xe8_\x9dnBM\xfd^\x17\x02\xad1{-\xa4\x03|H\xeb\xbf\xf2\xfa\xaf\xb8\xfe\xab\xb9|\x83\xc4{\x19\xba\x0e\xec\xd0\xd3\x83!\xcd`\x87\x1e\xa7P\x96\xe8e>T\x1e7\xdf\xc0\x00\xc8B/\x18s\x15\xacb\x99\xc24\xbb\xe3\x13H\x98!\xedh\x94\xd8%\x80\xd1,a\x12\xc0\xc5,\xe9\x94\x00f\x18\xbc,\xe1:sZ\xdb\x0e\x83\x1f!\x01\xcc\xe0\x19\x1a!\xa3\x04\xb0\x82g\x90\xd9%\x802\x94\xc2(\xc2C\"\xbbI}q\xe3\\\\J\x91%\xd7.Ao[\xf7o\xd4\xd9\x9d\x1aR\x03\x03\xaavu\"\x99\xfc\x7fmG\x93\xce\x8e\xd0C\xdf\x0c\xc7l@L\x8b\xb9Y\x93\xb8L|$\xddt\x9f\xf3_\xadVj\x0f\x14\x1d@\x99\x83\xa6\xe4,J\xf9F\xad\x9b\x8f0\xc2\xe0\xb8x\x1d\xa7\x18\x97\xc03\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0f,P\xc7\xcc\xe7\x91t.<\x16\xc9\x11\x92,\xbd\xa6\xfc\xaa\x88Fk\x0f\xa8q\xcf\x00\x85\x18D\xea\xc1\x19\x05\xcc\xac\xd8\x08\x899\x07Ay3\xd9\x9f\x89\xd5\x1db\x94_\xdb\x18K\xa8pGO\xea\n]\xacU,98\xc9\xc1{\x9e\xd7NM\"\xe2 \xe3\xef\xf0\xafA`_r\xeeeg1\xab\xca\"\x9e\xd7A\xa9\xec\xf1I\xf2:\xae\x805^\x86\x02^U'Q\xabJo\x08\xff\xc5/\xdbJ\x0b\x94c\xde\xf2^\xd6k\x18\xdb\xc5\xfb\xbc\xdc\xa0\xcf>\x8e\x8b7y\xb5A\x93_\xab\x8a\x80\xa6\xdb\xdb\x0d\xba\xed\xe5\xb1x\x9b_6h\xf3\x1fN\xd9q>h\xf0\xbd\xdc\x14Z\xf3o\xc4I\xd9,u\x01\x98A\x13s>\xd5\xbd\xa6\x98\xc2\xb1\xdf\xf9T\x97v\xfd\xdf\xf3\xf7\xef\xfa8\n\xbe\"\xe6\x1bJ\xdb9\x06\x11\x0c\xc4\xccr\xcc\xc32<\x06\xdd\x93\x0e\xe9\xa3&oFp\x19\xe6\xb9\x88\x0d\xe6\xf7\xc3R-\xf8*\x05,\xef\xe1\x14\xf6\xc6G\x07\xb6\x90q\xbfv\xe1l!A3I\x92\x1ec\x16\xac\x98\x03\xa3\xce\x97\xd9\x8c\x992@\xa2\xc1)js\xed\x0c\xe40\x87\xde\xcf\xff\xa8S\xfc\x16\x93{3drv\x1bDw\xcb&\xf5t\xb78r\x95\xd8\xa7\xbc\xc1\xb2\xa6+\xa9,\x82\xe3\xb0\xfbG\x98\xab\x1c.F\xe61}\xd3k\xb7\x9ce\x1dS\x8f\x07M\xfdm\xd7\xd4\x15St\x8d\xf1\x90\x877f\xc3\xcbk=^\xc659\xb1m\xd7\xf2Yv\x01#\x98\xee\x1f\xc0\xf7\x90\xcf2S\x90X\xd8t.\x9f\xba\xe6\"4\x12\x13\xd4H\xb0\xd8\x18\xf6H6\x0e#\x01E\x04\xef*NK\xbb}\xc7\x08\xc9 k\xdc\xb7O\xf9]\x9c^c`\x13Lj\x00W\xe4.K\xe7\x82\xf6ak6\xd0\x0b\xf7\xa5*\x82@\xa7\xc8\xc7K!\xbes\xd8\x18\x8ca\x80\xb8\xb0D\xc4\x0f\xb1i\xb2 \xba\xa8\xf1\xe3\x9fY\x03\x03\xe9\x91\xfe\xf4\xd8t\xb6\xe615\x88$t\xb0\xc7\xc1\x9c\x93/ \x8b\x17\x06\xae\xe8\x87\x1ef\x88\xd4>\xfd\x84\xdbS\xef\xe3\x86\x9b\xf5\x92\xca\xed\xd5\xadud\xaf\x17\x1f\xa6\xaa\xe1\x0ewG\x8b/\x00\xf5\x10\xdb\x18\x94\xe7\xd938\x84\xef)\xfd{\x061\x1c\xc3\x04v \xf6<\xb4\xd16\xbc\x184\xe1\x8f\x1bMxoz\xb4wt\xf0tz\xf4\x8df\xbdg\x9f5iOk\x17\xa7\xc5\x16c\xd0\xe4\xde\x0d\xbe\x1f_s\xb0lG\xb5\x03\x9e<\xfa|\xfe\xa4\xcc\xc88\x9dZ\xaer\x7f\xcf\x16`\xec\xb3\xa5\xf6!\xe6<\xae\xdc\xc6t\x97\xbd\xa3+\xb07h\x0c?>z\x0c\x87\x961\xecO\xd9;:\x86Cm\x0c\xf2\xafB\xa7\xeb\x86\xd8\xef\x08\xaf\xb8aJ\xeaS\xf8\xaf\xff*}=\x08&\xe1\xb9O\xfe\xeb\xbf\x88\xcf0\x05\x0bC9\xa2X\xbb\xbe!\xa5\x888RR\xc4^\x17\xe5^\x13\x92\x8c\xe5\xea\x92\xbe!\xe2\x1bR\x7fC\xa4o\xca\xba\x04\x93\x1d\x1b\x03\x985:\xcf\xda\xea\x1a\xd7\xc2\x1a s#\xf9IM\x81\xc1\x8e\x9eeE3\x86\x11\xec\xec\x101\xef\x13<\xda\xe3\x9e\xe9\xd2\x0f\xbe~\xc2\x87C\x00\x02o\x90\xd4s\x9c\xf8\x9a\x82\x83o\xdc\x90\x1e'\x07\xedc5\xa8\xd3\xa9\xa5Sn\xe9\x81\x8b2\xb9@\x9c?l\x1c\xed\xcd\xfe\xbaq \xb5\xa1\x0cf\xc88v\xa7\x8f\\\x8f=}\x1c\xae}A\xe4\xa2)\x16\xb18\x7f\x93\x83\xa7O\x9fN'\x94\x8b\xa8\xdf\xef\x0e\x1c\xf6#\x97\xaf5\xec\xd6\x18.D\xe2Li\x06\x93\x83\xf6\x14\x94Y\xed^t\x8a\xf0\xe9\xb0\xff\xd7A4x~\xca?\x9fL\x0f=.\n\xdf\xe1\xb4\xe3:\xbbu)\x95\x00\xdf\x03\x06\xf3\xec\x05\x07\x7f\x0f\xf0G\x94\x85\x91`[~q\x82\xe4e\x1b\nf\x1a\x14\xcc\xbb\x17)3,Rf]\xa4l\xc0\"}#\x90\x89\xbe\xd7\xf5\x89Gu\xde\xf7\x80\x11!v\xa4{0\x11\xa9\\\x07@\xd7\x0d\x80\xab\x15\x9a\xb5\xd7\xf1F\xf8UX\x81\x8bu\xedw\xa7O\x0f\xe8$S8c\x8c\xd0x\xf2\xf4`\x0c\xf7\x90\xc2q?\x05\xb2\x01\x8c~\xf4t\xd8$\xee\x15\x10\xfe\xfbM\xe7\xdb\x81\xfa\xcd \xbd\n'i\xd9to\xd0p\x87\xad\xfe\xf0\xe1b\xcf\xedA\x0f\x00\xee}\xc3}\x9dd\xa1\x01\xba?n\xb816\xd9(\x1a\xb6\xc6\x82\xeb\x1b4\x8co\xb5j\xadaL\x86\x0e\xe3\xc7\xac\xbaJ\xc8#\x97\xe3\xb0w\x1cc\xc1\x80\x0e\x1b\xc7#\xd7\xa3\x7f\x1c\x93!\xe3@\xe6\xd9\xca\xcdX\x848<\x9d\xa7\x82\xe0\x98\x15\x0b\xaam_\xea\x06\x04:2I=\x96t\xcc\xe6\x88\x12\xdbc\xfce\x1dN\x1fx!H\x13r\xba\x14\x94D\xdaB\x93\xac*#\"N\xa1\x84'\x1039\x90\x15\xbc\xd1\xca\x9dP\xac^I#\x99\xf0w\\\xc9\x14\xabXW\xd3`\xa4$\xad\xa6\x10\x9f\xd5+\xba\xb3\x13c\x808N*\x18\x964\x16K\x9a}\xb3%m\x11\x15\xdd\x16,\x86E\xd5\xd7\x92\x02\x8b\xfd}\x1f\xf5(\xd6|?\xb8;M\x06\\\xb7\xf4\x04\xb4\x96O\x197\xf9\x1f4\x11\x13\x05\xf2\xd5s\x99\xfaLr\xdc5\x9b3\xc3\xf5\xf0\x9b=\x9b\xb0=C\x11)\xa5\xa9>(\x1dl1\x1b\xfb\x91\x166\xd2>\xc9\xc1\x94\xf2\xef8I>\x1b}\x92|\xee\x86IN6\x9a\xa4\x89Z\xf9\xeaI\xee\xf9\x92H|\xd0L\x19\xcd\"f;\xdd\x93\xa6;m\xca'\x07\x96\xbd6\x1cg\xba2\x1f\xcd\xdb\xdfI\x16I+\xf3;l\xff\xe6+cY\x95\x89eU\xa6\xe63\xb3\xdb\xbd2\x93\xc1+\xb3!\x8a\x15\xd2cyY\xb6\xac\x06G\x02\xd4\xb7\xd0\x03\x86\x8e6\xcbN[\xb8%f\xa8d\xc7\xe0\xe6m\xb6\x07C\\lF,=Qz\x1f\x89\xc1+\x19\xdd\x08\x917wJb\x7f\nsL\x86\xdb\xe9\x84.\xf0\xcb\x10C\x14\xf9\x1a\xdew)\x96\xaa\xe0\xf9s\x18S<\x1a~\x13|\xb5!\x05\xf0?e\xa3;\xa8\x88\xaf\xdal\xb1\x17\x12\x81\x915\x04\xc6\xc6;>\xfa\xfb\xec\xf8\xefB\xa0L\xa6O}\xd8\x99L\x0f7\xa7Q\x14\x1d\x12]Z\xe6\x930\xf9\x1a\xfa\xe5w$_v\xa7O\x0f\xe8\\Q\x860\x0c\xb4\xff\x8e4\xcc\xefH\xc2\x04_K{0`\xca\xdd{;\x80\xc4QH\xa2\xaf\"h~Gz\xc6\xbeD\xea\xf5U\x8c$\xc4-\x1e\xb0\x8a\xff@\xc4\x8fE\xfe\xd4\xbd\x8a?i{\xd6\xe7U\xd1\xf4\xb4\xe9~i=M\x06\xf5d\x93\"uw\xf5\xe3c&e\x13\x14m\xd4U\xef\xac\xa2l}\xb7\x19\xdd\xd2\xa4\x9b\x1c\xa3Cd\xed\"\xd8\xd8\xd5\x97\x9a\xa7\x97\x94\xa5\xa41E\x90+\xd0\x0fI\xdd\"Wq\xe45 \x88\xce\x0b\xcc\xfb\xb2/\xbdS\xdc\x8a\x84\xd2\x0cP\x1eVO\x13\xa4\xcb\xf0\xa6\x0c\xf3kR\x9e\x97a^\xf6gC\xad\xcdx\x80\x19kj\xc30\xf7PdU\x1e\x91\x0dz\xc8\xbb\xc6\xcbZ{\x95\xce\xfb\xdb\xcaU\xe7\x8bz\xf5\xd5\x1d\x95\xec\xaf\x08\xc6^\xda\x916Jy92Z\xe5\"A\xcb\xf4[\xb99n=\x12\xc8\x8d\x1b*\x06]\xe6\xcaA\xec\xb1#$M\x0c,]\xc2\xe4\x04b\x9e\xd5`g\x07\xcd\xc2b\x18\x01\x03\x92\x14\xd6\xd1_\xa6\xb8/\xb5\x93\x11eA&d\x17X\x18\xaf\xcd\xb2\xfe\xb105\x9aY\xda\x06\xfd\x1b\xf3\xb9\x14\xa4\xac\xf3\xb8\x94\x8a\xa9N\xca\xcc\x9e2\xcf\x9c\x0bS\xe8\xfd\xba\x00\xc1\"\xc6\xf4\xf6\x1b\x00\x02\x83\xd3\xd5\xc6\x99\xadEz\x02\x0c\xa9\xc1\xd1\xa6vC\x8c\xe9s%\xb8\xd0\xfe\xc4\xe7Y7\xfa2#\x81\xec\xe2$\x07,\xb7Y\x1e\xd1\x87n\xe9t\xff\xa0F\xd4\x96\xf8h\xf6|\xabz\xb2\x19C><\x9b?{\x9d\xf1{h2o\xcb\xb2c\xbfj.\xe0\xdc\xe6Ul\xf3\xfch\xf5\xc7s\x97\x98\xf2\x9d\xf3\xc5b\xa9\x92\xacF\xbf\x1cF\xca\xe0\xe7\x19\xc3\x0dj\x91\xd5*\xfa\xfd`O`\x0c\xe7\xd1\xc4\xcf\xa3\xed\x9b\xa1Tf\x1bl\xe3\xcc\xab%\xba>SF{\xcc\x93\xc8\x8d}h\"{P,gL\x0bo\x87'\x06\x8b}\x04\"L\x93a\x01\"viB\x85\xb6|r\xacB\x96Q\xf8g7\x15)\xeds)\x01\xa6\xd7\x91\xbc\x99\xb2\xdc\"N\x95\xf9\x10\xd6\x13\xe0\xb6z\xe8\xa3\xacLB\xc0\xc5j\x96\xc1\xbfB\xb8\x81\xcd^\xd9\x8a\x91\xa3\x8e\x81N\xf6op\nOf\xff9\xfa\xe5\xc9x\xe7\xe8\xc5\xce\xff\x0bw\xfe\xb6sy\xf1\xe4\xda\xe6z\xf3\xba;\x84+\xa0r\xf6\x0c\x9c1:\xfd\xabiB\x8f\xb5\x02ul\x96\x0e\x7f\xb6*\x00o\xcc\x01\xda\x08\xf0\xa88\x13x\xd2\x9b\xe3\xb2q\x90\x89Ex~S^\x87\xee\x14*1\x0bl\xd3J\xec\xe0\xc1s\x8c\xe6\xbd/P\xf4\xfe\xd3\xdd\xbd\xbd.\x80\x1b\xf3\xfcp\xf6\x1aP_\xd2\xe7\xb0\x7f\xb0;9\xea\xabL\x1f\x96\x88b\x97\x8eggB\x07\xc3\x93ILw\x8f|\x98\x1cM|\x98\x1c\x1eu\x80u\xf1DYZ\xc6ie\xce\xa5$\x1e{\xf6 \xe0c\xaf@\xa4~\xb2J\xf5\xe4\xe7\x1fi\xf4\x98\x10\xaa\xb3Jo/\xdd\xd9\x95\xf0\x98\x1c\xecN\xad)\x04\xc53lU\xfc\xdfy\xc8)\xf7\xd18\x80\x11\xa5\xebvx\n\x82g\xcf`\xc2\x0c]v\xf8l\x8c-\x88\xb4\x89\x9c\xef\x190\x1f;&o\xeeo\xca\x12U\xf4\xdd3\xd6\xe1\x84eg\xe9K\x7f\xc0\x07\x93v\xcf\x83\xef\xdft\xbc7\xb0\xf7\xe9f\xbd\xc3\xf3\xe7\x98\xcb\x00\x03lcB\x83\x94\xfe\x9a\x1e\x0e\x1a\x16\xee\xd3\xb0q\xedn>.L\xba0\x9d\xee\xb1\x10\x1ep\x00\xdbt\x848\xba\x0d\xc6\xda\x03\x1aq\x1e(\x14!\x92\xb4&V\xd2\xdar\xf6\x99p\x86\x19X(i+\x93\xab\xfbu\xd6\x7fy\x8cw\xa6\xe3t'\x13>\xb5\x07\xbfS\xb8&h\xa8\xd4}\xea\x05,\xe8|\xd3q\x19\x90/\xeb,/\x8b:\x85\xf1\xe0\xd6\xf6\x0e5\x8a:f\xc5GZ1\xa5\xd3\x9cY\x86a\xf0y\xd0\xfb\x0b\xc7<\x02\xfb\x89\x15'\xa7\xc0\xefU\xc6\x8c\xae6\xfdb{\x1b\x90\x0d8=\x95\xee\xdd\xc3f\x93\xda\xdd\xf5\\\x16\xb1\xdf\x07'\xcaIX*~m_\xb1\\\xbbOw\x8d\xeb\xb5\xfbt\xcf\xb0`\xb4|_+\xafx\xf9\x81V\x1e\xf2\xf2\xa7\x9e\xc4\x0d\xd4\x07\xbbh/\xe6\x0d\x8f\x0e\xbac\xd0}\xa6\x1c?\x03\x0f\x9f)\xa7sV\xcfk\xad\n\x0d\xa2\x84\x84\xb9\x8b\x87\x9cX\xb3q\xddt\xa7\xd4FQ\x10)\xdd|6\xbe\xf0!\x9fMt\xbb\xff?\xb4\xffRd\xc0t\x0ctWT\x89\xd0\x9c$\x04c\xfc\xc4j\xf95\xa1\x102S\x0b\x97!\xdd\xd7J-,\xb0f\xe8+{_l\xb6\xf7O\xf7,gH\xf9\\_5c\xf8\xfb\x13HwvN\xda\xf0\x17\x05\xa8n9K/p\x01\xa5\xbc\xd1\x1aU\xc9K\xa5,\x9f\xe6+\"\x8ff\xf0\x90\x1b5\x92\x88y\xdad\xc9!\xf4/\xf2\xe8\x8b\xf9\xf4\xe81k\xd8,\xdf\xe5\xe5<,\xc3\xcbK\xe3j\xe4.\xf1\xe0\x0c\xd2\x99E\xbeW\x17\x1f\x83\xb3\x0c\x8b\xa5s\x01\xc7\x90\x06\xabp\xfd\xd8\xf9\xec\x8d-\xe0s\xa2_{\x06\x0e\xf0v\x8b\xa2\x8d`f\xc6D#9\xcb\xe8G!\xe5c\xc7<\xb1\x80\xb0\xc9d\xf7\xb1\x83CP#NH\xec6\xd2N\x8aY\xf3\xaf\x18\xeb\xd3\xb1a\xa8\x9a\xa8a\xd8Hmbbz\xbaY\x0c\x01q\xea\xdbb\x1bT\x12a\x14N\xe3\xb1s\xc6\xd8\"\xaa\x04\xe8\xd8\xe8\xbd\x81\x9d\x98\x1e\xb8\x9d1=l\x1b^\x17\xa7*XB\xf3\xa8\x94:lh\xc6\xd6\xf5\xd8\"\xc1\x0d\xc9\x0b\x8a'j\x0dS]TG\x86sn\xc6\x81\xe3u\xd7\x98\xd0\x1a\xb5]\x8b\xb9\xc6!\xads\xa6,{\x1bO\xa4\xe4K\xf9)\x8e>\xab\xb1\x98;bK\x82\xd8#Q_\x96B\x97\xb6\x08\x0f\x94\x8e\xba\n\xa3\xcf\xc6\x18\x0f\xa2%[\x98\xfb\x9b&\xab$\xb4\xc3J\x9b\xbf\x11\xb1\xb7\xc2.b\x1c\xa3&\x8d{\x02\xd5\xf6$\x80\x14\x16@\x81XI\xb7+X,\xb6\xd8\x93\xdf\xb1\xddb\xbd5}\xe2\x0f\xc0k\x86D+\xe7\xfa\xcd\xac\x83x\x1e\xfa\x86\xda\x93\xdb\xf1\x9b\x0e\xb5\x95{U\x7fzG\xdb\x93\x89\xf1[\x8f\xd6\xb7ir\xc4\xd35\xe0\xde\xd8Z \xcb\xc1\xe9}b\x1ci\x88\x16|\x8a\x1c6\x137\xc1\x83lV\x8dF\x17\xf2-\x99U\x1dq3\xe1[\xac\n\x8bX\xcc\xa5\xc4}\x0bb|\xdd\xc7\xe2? U\xdc\x801 N\xcb,\xda\xee\xde\xa6,\xda\x81\x89*\xc8y\x96B\x13y\x9f\xf5\x91\x8eqJ\x81 \x99q\xae3m\x14\x13\x0f\x86\xe6*\x9by\x86\xe0L\xeb\xf7R3\xe2\xaf\x98e{\xa3\x98\x9c\xa7\x1ek\xfe\xe4 \xb8\xf4\x02L\xa1\xa5\xa2\x84\x1c\x8e\xc1\xcd\xdc\x9cN\xcb\x9734V\x9e\x0f\x99\x1b\xb3H\xb0\xd5\xd0\xccr\x88\x1aL\x8a\xaa!\x01\x88\xd3\x8cc\x04\xde\x80gD\xe3\xa6E\xa1#\x1c\x9a~M\x19b/\xee2\xc5H6\x0fO\x1c\xab\xb8\x85\x01\xf8\xc0%5.1ghKYf\xe8\x98\x9fh\x9e\x13\x1a\x7fJ\x7f\x8f\x15?\xe4f\xee\x03\xb2\xae\xfd^so\xb6\xc6\xb4)\x03\xf3\xb7\xfd\xce\x83\xcb\xa5|\xa3\x1b\x93\xbafZO\xbeH\xa9\xbbwp\xe4\xb9\xce\"\xcb_\x85\x91\x08\xa5\xf5\xa8f%\x1e\xe0H\x17?p\x1e\xe0H\xe7\x0d2\xce\x1b\xe8\x10\x8d\x891\xf6\x9e\x1eJ\x8b\xe2n\xc6\xd0\xf9\x94\xfa\xe2 \xbd\x8d+\xdb\xca\xf4\xf1\x0c\xa6\x94~5\xd8)\x94p\xc6r\x15s\xf3\x8d\xd2g\xc9N\xab$\xa1'\xbcPP\xd7\xf4\xc2W\xa4#\xa8N\x0cy\xe2!\x16g\x15#\xd5\xa6\xa8P\x16v.N\xe4\xf0\x80\x91R\x19\xa1e\xa1Zv\x8b\x01\xd9##]\xcc\x93A\x1a\x12\xa2\xaa\x99 \xd3v\x05\x92V+\xc2_g\xed\xd7\xb7y\\\xb2\x97\xa1\xf2\xee\xc1\x87\x02\x19\xc7\xd8-\xe8\xb0\xe8\xcc\xa2\xe6\x90z\xc1\xf5\x90\xa8\xd3t\xc3\xf8V\xf9\xb00\xb3A\x96]\x89\x1a\xd3\x18\xf3\xe6D\xca\xe6\xecJ\x9bC\xc1\x99\x14\xba\xe8\x182\xce\xe1\xf3\xf7\x14\xae\xa5\xea\xfb\x149\x1c\xb9S\x1e\xc1\x87nh\xd4\x8cAz\xa3\x1d\x06q\x10\x8a\xe6 \x84\x86\x83P\xb4\x0e\x02\x8fa\xde\xde\xf4kR\x1a\xb7\xbc\xa0\xe5\x86\x9dV\x8fB\xd8}\x14Z\x89y\"\xbe\xdb\x11\x1d\x0ff\xc3\xf9\x16 I\x92\xe1\x1c\xdaD\xa9\xc1\x8f\xaf^\xbf\xf8\xf9\xa7O\x9c\xb0\xcc]\x0d\x0e\xb3 \xe7\xc70K\xdd\xfd]O\xcb\xdeO\xbe\xac\x938\x8aK\xfe\xfa)\xdd\x16w\x7f\xf7\x90\xff{\xe4I$\xcf \x18hgP\x05\x8d\x0c\xa9;m p./I\xf16\x9bWZ>\xd6AKG\xdb\x93\x05\\\x8a\xf5C\xea\xd6\x1abwz\xc0AI\xea\xee\x1eq\xaa;u\x0f<\xd7\x11&\x1b\x9f\xc2k\x01Z\x9c\x97\xe7\xe7\x1f\xab\x84\xfc\x14\x17\xa5\xff\xf2\xfc\xfc\xbc\xbcK\xc8\x8f$J\xc2<\xa4#\xa1e\x7f\xa2p\x85UHb\x92\x96\x1fIT\xe2\xcf\x1f\xdf\xbf\x95\xfff\x8d\x8b_\x9f\xb2\xcf$e?\xc22\xfc\x94\x87i\xb1 \xf9\x9b\x92\xac\xb0\xf0u\xcc;\xfd\xf7Oo\x7fz\x91$/\xb3$!8y,\xd1~\xbe\xce\xf2\xd5\xab\x84\xd0[\x8c\xbf\xcf }+J\xde\x92y\x1cbco\xe3\x15\xa1\xe8\x96\xa5\xe9}\x17\xae\xc8\xfc]6'o\xc3\xb5O\xff\xc5:\x1f\xc2\x98\xce\xe1\xaf\x15)\xd8\xd0?$\xd5u\x9c\xf2\x7f\xd8\x97\xe7\x7f\xfa#K&\x87\x15\xce\xff\xf4\xc7w\x88\xa5\xc5\xaf\x0fa\xb9<'\xd7\xf5\xcf,NK\xf1CZ\x85\xf3?\xfd\x91\xcd;\xcb\xd9\xa4\xcf\xd1D\x95\xa1sV@\x97\xfb|I\x08\xfb\xfc\x13eg\xf20\xfa\xfc\x92/x]\xc0~eU\x84#r\x82b\x9d\xc4\xa5\xeb\xf8\x02Z\x8cO0 ~X\xcb\x80\x8b\xd1\xc8\x04g\x11\x1e\xce\x8a\x8b\xf6\xbd\xa7\xe0%\x9fE\x867h0I\xe9\xf2E#\xf4V\xa14\xe6<\xdeJf\xd5\x05\x13\xd2%(\xf9\xa0@\"\x9bE\x94\xab\xc8\x02\\\xd7\x9e\x13\xaf3<\x14\x8e\xfe\xf6P[\x1am*\x96\x13\x02D\x0eH=\x1e\x86\xf5\xd0\x87\x9dI\x1f)e\xbb\xec\xdd\x94`m\"\xd7\x10\x80\x12\xf1\xf72L\xbf+\x81\x0e\x06V\xa4\\fs\xc8R0\xe6\xeaii+7\x1b$\x07-\x83Y\xca\xa9\x0d\xeav\xd2Y\xa8\xc7\xef\x13o\xa6\xbe\x1e\xa1\x87\x19\x16ZR\xa4s\xe3+\xb1\xe3B\xc8\x8b\x80Mlc\xd3\x9f\xa1\xe5\x8eF\x91\xbe\xff\xf4\xde1h\x1aeY\xcc\x83\xfa\xba\xd0^\xb7`\x0d\x1dl\xc9\xa9(w2=\xf4\\'^\xe4\xe1\x8a\xe8\x1d\x89'G\xe8b\x13\xab\"\x92$AA\xc1l0\x8f\x8bu\x12\xdeQ\xac\x97f)q|\x9c\xfb\xa1\x17\x84\xeb5I\xe7/\x97q2g\x99\xca\x83\"\xa7\x80\xd2\xf95\xbc \x8b(\x8f\xd7\xe5\xb1\xe33\xabV\x12DYZ\x92\xb4\xfcs\x9c\xce\xb3\xdb`\x9eEH\\zA\xb6&\xa9\x8bn\x03,j\xa7\xf3\x8c}\xfa\\T ^\x9f2\xc5\xf1\xb3_\x9e\xf0W\x98\x81)\x88\x92\x8cE\x8c/\xf08\xbd>\x81|g\xe7\xc4\x03\xae\x9a\x94t\x8d\xb3l\x96_\xd8\xad\x02\nWS\x89\x9a\xaf5O8\xcf\x94\xd7\x94\xa4\xed\xe7\xa7\x8c\xf0\x89\xabf\x04m\xdb\x0c\x93\xa2\x12\xb7\xf4\xfc:\xdce\xe8\x83\xfa\x9aK$)\xc68e\x0eX\xb4j\xe1\xaaY\x95\x08\xd2\xe0\xc7\x10\xbb\xa9/'\xe8\xed\x07\x87\x02}\xa0\xf7hDb-=~\xae8\x96\xf6\x01?\x9b\xa4\xabx\x17\xbe\xe3\x0e\xce\x1eW\x84\xbb%\xfa\xf5\xb0\x10\xa8\xa9\xb71\xcf.\x11t\xbb\x9e\xeb|&w\x85~\xf2\xd9\xa5U,\xcc7\x1av\x8e\xe1\xa3\xee\xc1\xc5?\x98\xec\xe7\xf1\xa34 #g\xce\xe5e\x94\xe5d\xe7\xd7\xe2\xb2X\x869\x99_^:\xa2O\xf3;\x8a\xe8\x1f;\xa1XL(f\x13\xfa\xed\xa1o:6\xc4\xe9DYZ\x94y\x15\x95Y\xee/\xc3\xe2\xfdm\xfa!\xcf\xd6$/\xef\xfc\xb8\xf8 \xce\xef\xfb\x85\xbf\xe6\xc5o\x8aW5\xbf\xe4\x97\xd9OY\x14&\x84a\x03_\xa0\x05\x9fc\x1e\x99j\xdbl\x95'{^\xb00\xcaTtQKf&\xf6\xfbV\xd6\xcc\x98\xa3\xcau+\xc6#\x9er\xdb\xf9\xb2\xb9\xc6\x18\xd0\x98\x99\xd4\xa0\xb8\xa5\x0d\xcdUfs\xcb\x10PA\xc8,\x94\x17\xbd\xfb\xb7!W9\x9d\x1cy\xee\x96\xec\xeeBq\xcb\xbe\xc7s\xde\xfb\xe0\xb0?\x1c\xbf\xe3\xb0\xa1\xfd\xc9%]\x8a:S>\xf7O\xbaD\x83\xaff\xc8\xbe\x1d\xc5I\xe8\x8d\xb7g\xb6\xaf\xe1\xed\x9a\xa1\xaebHvf\x17\x041@\xda\xee`\x9e\xa5*\xffI\x9f\x07\x06\xbc(\xe0\xc6\xe5m\xe66\x92\x8d\xeb\xad\x9d\x19&\xc2\xfb\x99X\xf7v\xc3[\xb071\xcb\x15[\x9cm\xebF\xd4r\xd7\x02\x89\xb7\xbc[]\xa4K\x08\xd5\xf1\xbb^\xefm2\xed:A\xfd[\xd5%d\xaf\xf3\x11\xff\x9c\xce\xc9\"N\xc9\xdc\xa1H\x84\xc9\x8f\xf8\xabwU\x928Fg1\xa4E;\x119\x0e8\xbf3\x94Jc)g\xc4\xe0\x98\x02QX\xa7\xe6\xd5\xf4\\\xe8\xd1\xca(\n\xbc\x12\xb1\xe7q\xac\x9d\xa1\xb0\x08\xb5\x00\x0e\xab\x80\xc3u+v\xca<\xcfFV\x03KBCP\xe3 m\xdd1T=\x80\xc1D\x02\x8c-\xa8?\x0f\xd3y\xb6r7\xdeM!\x92d\x86\x8a\xaeC \xc2(,]}\x17\xe9xK\x1f\x1c\xef\x92\xd2\x8e\xa3Q*\x92\x04q\xf8\xb1{\xf0x\xb4\xbbk\xbe\n\xfb^M\x8f\xb6/A\xee\xc6\x1c\\\xc7\x9c\xf4\xe3\xf2\x93\xc7\xae\x00\xdd_\xad)fA\xf4\x9bn\x8a7x^\x93\xddn\xaa\xe7\xa8\x9fS\xfd\xef\xa0z\xf6\x9fZ\xf0\xf1\xbe.\xf1\xcb\xcc \xaao\x12\xff\xbb\xf1\xf1\xc1\xc4\xb4\x00\xc1b\xc8>Rn\xc2^ $h\xdb\xe6\x92\x10\xa3\xad\xf3l\x15\x17\x843&\xa5+O\xc4\xea\xc5\xa4y\xb4\"\xd3$\xfdN\x0d\xd2\x9e\x1f\xc29|\xe0}Id\xa5=\xf3!\xea.\xd2\xdalX~\x1e\x04:\xceI\x91%7\x84\x03\xd0\xba\xf0W\x96\x858\xd7\xddZ\x1e\xbe\x82\xff\x98\xec\x99\xa5\x05\x93\xf1#O/\xb3?m\xb2JJk\xc5n\xc6\xffq\xd0L~\x04\x0e\xcc3R\xa4\xdf\x95\x98\xf7g]BN\xae\xc9\x97-\x8b\x8e\x94\x83\xd3\xaf\xba\xd0\xf4\x82b\x8e\xe4\xfe\xabiD\xeep\nO\x82'\x9a|\xc7\x88j\x9d'\xc1\x13\x07f\xe5\x85K\xb4\xbd\x128\xb6\xb5p0\x04o\x93Y~\x81J%\x1f\xb6\xac}@\x0f.7-\xef\xa6z\n\xf3\xe5'A\xa3\xfb@ e\x1b.Tn\xeaN\x0f\x0ft/\xdc\xb8~u\xa8\xbfB\xd2\xceD?\xc4\x01W\xc3 \x85\xd1\xf6\x08\xc8\xeb\xf7g=\xc0DPE\\\xe7\xa8\xed\xd8\xf1\xc0\xaf\xad\x84\x8e2\xd02\x90\xe0\x04\xcb*\xad\xbcFPS\x17I\xe2\x94\xb3f\x8e\xc7\x96\xa1\x9a\x0c\x83*+\x90\xe5\xc3\x91\xb6\x8c!\x9b\xf6\x0ckuWi9I\x0f\xd2\x11\x10\x93\xd9p\xd7N!s\xeb\x1d\xf3:\xb7\xccBPW2A\x9d)@\xb1s\x0f\xff\x1e\xfb\xb7\xc1\xd8\x87\\G\x82h5u\x0f6d\xb6L\x82\x9d\xd4\x9d\x1a\xc9\x9bC\xb3\x01\xc7dl\xf6CAi\xc6c\xc1l\xcc\x1d\x94\x98\xc0G\xfc8Eb\xf4\xb7\x0748j*\xfc\xa6[3:\x97l\xf7\xd0\xbd\x1bC`0\x0f\x84\x98\x87\x9f\x0e)\xf3[v\xb0\xb9U\xb0p\xb5\x08\x06\xbd\xd4Q{;\xb8\x00\xf6\x9a\x94\x92\x84\x89\x0d{C\xbf\x91\xdd\x03}K\x84\xcf\x90\x99\x12\xdd=\xd4\xad\xde\xb9\xcf\xd0\xa1\xceQp\x9f\xa1\xc3\xe9?}\x86\xfeA}\x86(\xaf\x94\xbaO=\x1f\x9c\xb7\xe1\xfa[9\xa1\x1d\xea\xde%\xdc\xebdj\xf6:\xd9\xdb\xd5\x0f ;P\xfa\xf1\x0by\xedG\xfb\x81\x18\xe1o\xc9\x11\x93|\xb628\x06'k\xe4\x0dR\xd5\x8a9\xba\xc4n\x89\xe7\xa1\xa4\xe7\x81\x82\x0c\xc6\xb6\x86\xfd\xc0U_3z\xae\x8f\xc6\xe3\xa7\x93\xa3\xa3\xe9\xfe\xde\xd3\xbd\xf1\xd1\xd1\xa4-nx\xf2\x9f\xee\xd9\xf1\xf8~6\xd99\xba\xf8e\xfe\xbd\xf7/O\xfa\xd6\xc0\xa2\x86\xc1\x10>|:FZxk\xcb%\xd2U\x13\xfa\x13\xc2\xb2\x9f\xc8F\xae13v\xe3hg\xeb\x94\xf9\xee\xe7AI\x8a\x12u\xba\x88\xb1\x84\x0b?\xcb\xffy\xcaC\x97\x96\xf0\xac\xd7\xefd\xc8J\xf5\xad\x82\xed$Xb\xeft\x0c\xf7T\nu:\x08m6\x17\xc2\xec\x84\xd5r\x1e\xa2\xb7\xe1\xc9/\xc1\xfd/3\xf7\xecx\xf6\x9f\xb3_..\xbe\xbfwg\xcew\x17\x9e{v\xec\x9em\xfd2\xf1f\xff\xf9\xcb/\x17\xf7\xbf\xfc\x12x\xdf\x9f\xfd2\xf1~\xb9x\xd2\xbe9O\xfe\xf3\x97\xdb\xef\x1fu@\xb8\x7f_\xa3o\xde\xd2\xc2\xdf\x8bm\xe8>A\x8a9k\xaa\x90bu\xc1U\x96%$L\x9b\x12\xc5Ik\x0bY1z\xbe*q\x9c0\xbaX&\xff\x12_\x10\xb6Cq*d\x88\x1b\xa9\xf9j|\xd4\x96\xe42\xf15\xb9!).\x9d\xf2\x13I\x03!\xe1^\x85_~\x8a\x8b\x92\xa4$o**\x855\xb3/\x8d\xac=\x84|C\xd0\xd5\xd9Xlo\xcc\x04\xda\x9a-8\xedi8\x1bD4k[\x00\xda9L}H\x83Wt-_\xad\xe2\xb2D\xdb{,k\x10\\\xb3\xf2\\\x0d\xa1\xbe\xd5\x16\xbd\xa9\xc3\xa9\xe3\xb7\xea\xfb\x89\xf6}A\xf4\x1av\xa8a3\xd1\x06\x91\xc9\x18\xdd\xc3\x99.\xd7$\x9cH%c\xeduV0K\x8cN\xabm\xf3\xb9\xf2\xd50N\x0f\xea\x8c\xc8*\xee\x8e\xc8 )\x11,\x96\xcd1\x8f&(\x1fsW\xbb\x06\xbf=Pr\x81\xd0\x999M\xd4AwK\xae\x16\xe0k\xee4\xdf*gF.\xedr\xe1\x97i\xa2\xd2x|\x0e\xd9\x14\x97b^\x91!9[\xb0\xb0\x1fb\xf1\x0dY7\xe9\xec\x17\\f\xc7\x1d\xf4~N\xa3\xb0\xba^\x96>Ti\xb1&Q\xbc\x88\xc9\xbc\x9e\x1b\x0e-\x00\xf7;\x9e}\xd7\xf1L\x927\xd6\xdf\x82\xd9t|)\x99 \xefB\xa9\xf6\xd0Z\xe3\xac\xc9\"\xcaW`V^\xd8\xc1.\x83\xcb\xa9\xe75\x0e~\x9a\xed\xb9i\xc9\xba\xfc\xf8\xd2&G\xbfE\x9ah \x7f\xd2\xe5\xca'5\xea\xab\xfb\xb4y\x17\x16\x17r\x82\xde\xb8\xaa}\x92\xb7,\"\xdcD4\xdb\xf6\x91\xed\x84\x92=\xa0J\x813)\xb9\xadG\xbf\xcd2\xe8!\xdct\x1d\xe9\x8d\x83\x0c|\xee\x92@\x0c\x89\x92\xfc\xcd/$\x87}\xfd\xfa2\xae@\xbb\xd2\"\xcaaS\xc4\xc2\x06\x11\x91\x9aOn\xe0\x14fZ\x91\x0f\xe4\xc2X\x91\xf8\xa6\xcet\xb0J\xbb\xbb\x0d\xf3\x94\xcc\x81\xa5\x0b8\xa5\xc8\xbb\x85ZP\xdbjD\x9b\xc7\x06D\x84\xddT\"\xf6\xb0\xde\x1d\xb7)x\x0e\x15vi\x19\x0dsa\x88\xb2\xb4\xc8\x12\xc2\x80\xbf\xeb\xb8i6'\x1e\xd0*\x18>s\x9d\x15E|\x95\x10P\xc8\x84\x15Ye\xf9\x1d$$\xfc\x0csR\x92\xa8$\xf3\x00\xfeu\x0eI=\xeap>\xa7e?\x17\x04\x08\xfbJ\xc7\xf6\xae\x07e\x06q\x1a\xe5\x84\x02\x9b$^\xc5e\xe0\xb4\xb6\xb4\x89\x93j\xa4\xbf\xc4\xf8\xcb<\x8c\x90\x08U\n\\\x91\x0e\xc9v\x932\x14i\x98\xaf\x96^\xb3?\xf9\xf67\xbaY\x82\xc2\xa7(Hy!\xd1\x95&dS25\xd2*\xbb!b\x0et\x98\xb1\xc7\xe3\xbb#\xc2\xa3\x9bNT\xf0#\xa0Y+\x82\x92\xfcKXi57\x10o\x00\xf6\xc9\x96#\xeeYkud}kyS\xfb\x7fQB\xe9w\x81`\xd8\x8c\x0e\xbf\xf4\xcb\xdb\x11w5^\xb0\xfbl$$j\x0c\x901a\x1a\xddQ\xa1s\xcc\xddT\x02k\x94\xea\x97V\xf5\x14\x83\xbdr\xd9T\x0b\x16)\x90T[Q\x15\x98\xaa/\x19<\xd5\xe3-\xab\xb8\xd0p\xa4jlX\x9d@\xb8\xb3C!\x8e!&\x0d\xf0\xc5Hg\xe1E3K\xfa\xab\x99\x17\x9d\xa5R\xc0'\xda\xeeS\xf5\xdf\xc4\xfe\xab\xf6\"I\x86\xf1Vf]{\xebz\xf4\\\x85\xad\x8e97!\xecYf\x1c\xddm\xf3Lg\xf4Q \xa0\xe3\xdc\xed\xed\xce{\xd1\x1e\x92\xb97\xebA'\xe8D\xaf\xccX\xdf\x1en8 \xb6\xb0\xbd\xd0nGLs\xdb'z'\xda\xf9\xc1\xe5\xd0`+\x18y\x9a\xdc\xc2\xd3X0\x83\x1e\xee\xbe Oi\xa1\x8bO\xea\xbbqbotV\xdf\x99\x1dh\xf1\x1d|%\xba\xb6\xd1v\xa8\x93Ag\xd9D\x96\xb6i$\x16'I\xbf\xc6g-\xe2\xcf@\xf9 \x1a\x1f\x8eav\xd17\xd6\x97Y\x95v\x0b\x04tv\xdf\xa6\x1e!\xed\x8dm\x9f\xb3\xc68\x83/\x83!u&z\xee\xd4\x15\x84\x05j?\xbc\xd1\xb8\x11\xfb\x0c;\xc2\x85\xa9_\xf5\x0b 5q.\xcf\xc5!{\xbeO\x0e\x9fz^p^\xe6$\\q\xd7\xdd\xe0# \xe7\xe1\x15Z(\xe0\xef?s\xbfg\xf6\xc1\xe4)\xfa\x86\xfcX\xad\x13\xf2\x85\xa9C1MLP;\xf9\xb1zGS,\xfd\x10\x16\xc5\xa7e\x9eU\xd7K\xa6\xfb\xd8?\x1c\xa4\x83\xed\x0d\xd1d\x0ett#\x92\x99\xb9\x18\x07MyW\x93\x7f\x06\x95?h\xc7\xc4$$\x89\x0b\x8c\xb4\x02\xc2o\x83!\xa1\xb4\xcc\xef\xd4\xa2E\x9c\xc6\xc5\xb2\xcf\xc7\x87>[\x9dK\xa0?\xb5\x96\x8fujG\xed\xa52*{=\x0e\x93r\xa3NQ~\x84\xd6%\x0fD8({\xa3\x80\xfa\xdd5I\xe7qz\x1d]\xed\xecP6\x8f't\x81\x1cW\xd0\xfam\x9b\xf2\x10\x0f \xa2,\xffL\xe6\xdcc\xb5x\x9d\xa3]\xac\xa9XlRIy\\\xd3g\xa7\x86\x00\xa8\xf4y@\xb5\xb7\xc1V\xa8\xe3r\xcb\xb7i\xd5fCB\xee\xe4N\x82\xab<\xbb-\x18\xf12sn\xc6\xc1d\xec\xf8@\xff8\n\x9c\x8b:\xfaW\x13\x0f\x8cA\xc9\xb1\x0f\xfb\x1e\x8f!\xcd\xbci\xb2:\xda\x8f\xda\xdb\xaa\xbe\xa6\xe7e\x88Z\xd9\xeb\xf6pP\xc8\xe2\xee\xeby\x04\xa3 N\x97$\x8f9L\xd8\xd5\xd36\x08\xb1\xa3\xf9\x90\xcc\xc9:'QX\x92c\xbc\xdeO\x0d\x0b\xd8V\x85'\x1c\xfa\xe8z%\xfa\xac\x99\xc6i\xec\xf1\x906\xed\x1aK4\x81h\xf2\xa6(\xde[\x1e\xfcfH\x0c0\xf7\xe1\x86\xf7i\x07\x0cw\xf8\xb1\xe5\xe5\xb5\x114\x03\x97\xaf\x85H\xb23X\xc8N\x1f\xaaW\xda\xf7D\xdcb\"\x0b~\x0dt:\x82\x12\xa6\xe5x\x9b\xcd\xd1\\l\xab\x94\n|\x16V\xd7m\xd7\xd3K(W\xb6\xc5\xfc\xf1\xe8\xf9x_\xbf1PZ\xb5~5X\xc6\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\xf6\x16\xd0'\xc2\x8a\xa2\xdd\x7f\xef\xff`a\x18\xdd\x19L\x0e\xe0\x18&\x07\xbb\x87{\x96UP\x86\x02\\k\xcbh\xd3\x18\xce \x86c\xbe\x16Q\xf3\"\xa2\xe4H\x04\xc7\xb0\xf0\xcd\x8d\xc8\x19\x15[\xef\xbd\x06\x94\x87\xc9\xcb0I\x98\xc0g\xe2\x0b4@\xe6?\xe6a\x9c\xca\x85\x0c\xe2i%\xeaw\x0c3\xa8esR\x94yv\xc7\x0b\xcd;\x92\xe0;\x9e\xe7fN\xa2l\xce\xbd\xablxJ\xa9C?N\xea\xdePB&R\xc1\x00kP-\xbb\xbf\x07\xa7*\x17\x87B\x98$spX@w\\\x9b*\x03\xb3R\x9d\xe2.\x8d\xb8\xb8\x04\x7f_\xe1U\xfe\x90g\x11)\n\xed\xe3,E_\xd1N:O<[\xdd\x94\x92\xfc\xdc41Moe\xd8h>\x9b\xe2\xc9\x99 \xfa.\x8d\xba\xeb1\xf7f\x1cxteG\x87\x94\\\xec\x9f\x95xJ}mE\x07\x0d\x85Q3\x07\xe2\xee\x91\x84\xa4\xbe\xf4\xb7\xe2\x86\xa5?\x0f\x88\x8a\x89g =\xba#G\x8aggGB\xee>\x1a\xe0\xbb\x0dNrc\x1fr\xcf\x97\xb0\x94\xfb\x8as\xe4~k\x1f\x98\xd0\x94 E\x85<\xb5\xe4\\=\xd3_\xd1\xc60f\xbfO\xc5\x1b\xcf\xf3!\x91T\xc5\x83\xf6\xf4R\x05\x8aL\x8en\xdae\"\x1f{\n>\xa4\xbbQ\x89\x9f\x1c\x9e\xa3\xe6@\xc2\x8b\xe8\xbc$V\x8aBN\"0!K*\xc1\xde\xb8\xac\xf7\xe6\x9d\xdc\xcad\xd0l\xae\xa4\xd9\x98&\x91B_\xf4\x03\xf1\x88\xb8\xc6\x1c\x07moc\xf4QA\x0ca\xda\x9b6q\xc4!\xf2\x9c\x969\x06(\xfc\xe0\x96\"\x86\xa5\xc26\xe6n\x03\xbb\x07\xcd\xf3\xd6:vb\xa4?\x0c\xd9\xb4\x04\xcd@t\xd0a\x16\x04\xd5\xdb\x87\xf2y\xa6\x8a\xa0\x98\xcf\xb6~5\xf1o\x84Lv\x82#\x069\x92ln\x89\x02\x02\\\xeao\xe2z\xcd\x98(k$\x05\xe6\nu|\xad\x90\x81\xcd\x82\xad\x1b\xda!\xc7\xa8\xae`&O\x98^\x0e\x95d\x05\x0b\xea\xc6\xa3^\xe0j\xf8\x10\xc2\xe8\xd4$L\xa3\x0f\xc69e\x88\x00\xcd\x7f\xfd\xfa\xf6\xb1\x1bSg4\xf3\xc1q(i\xc1\x10\x80z^F#\xac\xda\x81R\x18IB\xc9\x15\x8bP \xe3c\xcdd)\x8fg\x17\"0<\xc1\xce\xad\x0d\xcf\xb4\xcfz\x17\x05!d\xc4\x9d\xf2\x98\x9a\x8f\x0f\xa2e\x95Z\x18-\xf1\xa0\xb1P \xd29v\xd7M@\xc4\xeb\xe9\x16\xf0\xd0s_\xef\xd0\x04!\x93\xc2\xcd\xc11D\xf5\xa6E>e\xc0\x12\xed8\x98\x17\x8c\xde\xf9\x1a`z\x1b)\xa8\xe8S\xbb\x88\x0b@d?\x0d}2\x1e\x90@\x86\xf2\xado\x81$\xc3\xe0\xf0\x97n\xff(\xc1Abtx%\xab\xb10ld\x85\xfa\xb8\xd0d\xa2\xe1-\xd9O\xbe\x8c\x83\xc6un\x85\x9b%G\xa7\x0d\x0bc\x95Pj\xc0\x1b7A'\xc6SviU\x1aN\"\xda\xeb7\x8e\x05\xf2\xd3\xe7a\x182xe\x9d\x94\x80\xf1_\xbatM\xec\x10\x0d\xe46\xd59\xdd\xdf\x03Q$\x07\x14,Z\x88\x17N\xad T\xd2\x80\x99&{\x18+\\\xd59\xe7\xaa\x90;\x1a\xb8\xa4]\xa8W \xf6\x86\xe6fw\xc8\xd2j\xd3\xa4/\xd9\x94C\xeb\"5\x92EJ\xf2R0p\xad:\x8a\xd4A\xab;e\xe55\x16*\x85\x00I\xbb\x03,\x98\xc8\xec\xe2\x04\xca\x13\x8fN\xa3*\x96,4 \x12\x82t\xd9\xac;\xadyy\xb7\x81d\xaf\x18\xdf\xee\x96J\x1f\xee\xe6\xc4\xfc\xd7\x84\x9b\x93{-{\xac;l:\x8e\xc9\xe5J~0\xcc\xe9\"\xa8%\xae\x9b\x05|\x97U{\xf5\xd2\xbbv\xde\x10\x18\xc7\xe7hL7\x1b+\xc4E#\xf9\xe5\x96JZ\xc5f{)wC\xc2y\xe0\xf8\xe0\xfc\xf8\xea\xc3x<\xde\xb5\xa4F\x83\xf6\x05\xaf\x8b\xed.\xbb\xf8\xda\xb5\xb1\x08\xdc\x13n{\x9b\xff\x15,\xc3\xe2\x0d\xe7\xb7\xc0\xe6\xd3\xf8\x9a\x97IQ\xc7\xda__\xd0\x8bK\xef\xc6\xb0\xda\xbe\xe5,\xac|\xc3\xc8:\xdc\xef\xfa\xe5I\xb5#\xcc\\66-\x1b~\x93\xde\xf6\x15\xf0T\xcd\xdb-\xc9\x8a\xcc\x8f^\xf7a\xcb\x07\x84B\xf3^\xf1]\xedG*5^\xb6\x94\xf2>\xac$\x10\xb1\x8e\xd7\xa4\x0f:0 \x80\x8ah\x9a\x1c\x8a/\xc34\xcdJ\xa0\x0d\xf9\x18\xa7>\xe7\xeaM\x9d\x15\xd1zn\x8b$\xed\x1a:$\xebY\xe4Y\x03cn&\xbb*\xc6\x1e\x19\xdfa\x80\xe4X\xa6\xab\xea\x84\xfb>\xac\x9b\\\xce9nh./\xe8\xd2\x8e\xd2B$\x0d\xd6J*h\x91\xd9|\xf0\x91Zc>\x01\xdd\xfb\x13\x80\xe7\x10\xb4\\A6\x81T\n\x0eM\xa90\xca\x17\xb0\xf0\xd3\x02\x00Rj\x1b\xd1%sr\xd5$\xd3j\xeb[R\xf0}\xd1\xfa\x9d\xe7C\xcc\xe5\xeeg\xc3p\xb7\xa0\x06\xa4#\xc3\xb6>\\\x94$\x07\x92\xcem\xc1*L\xd4\x8d\x84\xa2\xf1\xb0\x98V \xefb\xca\xc3^\xeb\x9c\xb7\x9dK\x07I=c\nZ\"\x9e\xca\xa2H\x00\x89\xb8iH\xe53\xe6\xa9\xa8\x06\xe8\x7f\x1b\xde\xe1Ua\x0b\x81\xb5\x11\xf4\x14PfP\xa0\xb1\x80cM\xd6\xdf\x04\x05a= 9\xa4\xaa\xa3\\C\x9f\"\xd7i\x9a\xa5;\xac\xd9'\x1c\xd3 \x9f\x83\xc1\xbf\xb9A\xae\xb6\xee\x95\xba\xee9+\x89\x05\x1f\x1a[\xf7 f2S\xe6\xe6\xe7\xc6*\x01V\x19\xee~-\x0d\xb2\xed\x0f\xdaq\xf5*\xf1MM\xf7!\xf0R\xd7\xe8\x19\xd5A`\x8e\xdd\xdf\xdc)~}\xb1\xc7\x1e\xe9\xb4\x91<\x92\x9f\x87\xda\x08\xc3\xdeP\x8e\x06_U}A)\x11\x19K\x17\x9e\x99\x05T\x16\x8co\xbd\x03!J9Z|g\xde\x99Y\xaa\x16[\x8d\xac\x86\x91\xb4\xed\x02$ \xd73 \xaaf\xd0\xfc\x1d3\xdd\xd7d_c\xcb\xba\xa0\x05Q-\x18\xc4\xeb\xc1\x04\x0c}\xe7&b#k\xb3\xb5\x1d\xfa\n\x0b\x17\xdc}\xd8\xf0\xc6\x1d\x83A\xf3.?B\xacp\x0cq\x8f\xaa\x8c\"\x1cc\x1c~\xf9\x11\x92\x07c\xee\x05\xf9\xa17\x9d9;\xdb\x8f&\x0b\xd2\x1f Q\x8ey\x19\x8e\x8dL\xbe\xb1\xaeU\xc83:\x85\x89\xf9\xf02I\x8f,) \x1b\xf8\xd1 \x9e\x8b.\x88\x152\xce\x0f/\xb0/\x85\x82\x836 CO\xd5 \xe2I#\xdc\xd9i\x1c\x8d\xba\xda\xae\xd2!\xad+<\x9b\xda\x8bA\xa7!4a\x0c\xc8\xb3\x1f;;\xbe\xa4\x15\xa5\xe4\xab\xa4/\x93\xa4\x1e\xf8\xcb\xa8=k\x0bL\x98\xf6\x8c\x93\xc4\x9dD`A\xca\x1f[\x1a\xf3nZ)\xb6\xa5A\x14\xa4V\x19\x94\xd9O\xd9-\xc9_\x86\x05\xf3\xb0\xd8rg\xce\x92|\xa1\xdc\x11\xd7\xbb\xd3\x7fw\xf0\x8f\xb0\x88\xe2\x98\xfeq\x15\xa7a~\x87\x7f\x85\x059\xd8\xc3ZQ1\xe5\xff\xeeL\xf9g\x93\x83\x84\x88\x16\xc4\xdfyx+\x19\x19\xb9,\xd3\xa2\xa7\x8d\x03\xad\x8cp0\xb59\xe2\x90\xbbm\x8d[\xc1,\xae\x9bt5\x12{@ \xccM\x98 )\x10\xf7\xf6\xb6\x1c\x98\x8e\xb1\xb8\xb5\x8eZ\xc8\xbcr\x19\xde\xe4\x8d \x8bP\x1e3\x10\x8774\x17\xb2Y\xcan)@g\xc8J\x01\"\xe2\xc6>h\\\x0b7\xfdZX]\xb7y&\xd3\xb2)\xd3\x04fiDj\xa1[\x07\xe9F\x1a\x93\xa3\xb1/\x99f\xb5E\xd4 !\x95\xbc\xc5\xa8\x0c\xbc\x82\xb5\xe9\x92\xf1\xdamt\xad\xe4\xdd2\xa8\xb6k\x0bt\x1d\xa0\xf0\x01\xb4\xe7\xd6\xbe\xe6\x852\x1e+\x9fk\xe9\xde\xed\xec\x9f\x9e\xe1~1\x89z\xd3\x1a%\xf7\x8d\xf8[\xbb\xa6U*\xd7\xa9\x7fi\xb5\x9a:\xbd\xfc.\x93\x94\xa4s\xd7\xf3\x81\xb4\"8\xfd\xa1\x19\xa9\x9a\x9b\x11\xb3\xe8\x1f\x8d=\x8a\x0e\xdf\xacVd\x1e\x87%\xd9$\xb5~\x7f\x0e6\xfb\xbe\xf0\x03\xd2\x1b=\xe2\x9b\x0c#u\xf7\x0e\xf7<\xd7\x833\xee\xbf\x8c\xc9\x13\xd1\xb0\xf5p\xff+\xa6z\xd3\x84o>2\x87R\x99\x9a\xd3\xc2\xed\xea\xc1\xc3*\x83k5G\xec\xedPC\xfc\x1275\xb5h\xee\xca\x07\x850\x8a\x0c\xaf\n\xf5M\xf4Uy\x02n\xea\x90\x0d\x0b\x1f4k\xf4\xb8\x95=\xa5\xb2\xf8V\xaa\xdf\xa1B \xc5\x00\xb6\xcc\x1b\xd8k\xfc\\\x17Z\x84\x05\x86#h)\x0bo\xb1\x10Y\n\x16\xf0\xfc\x14\xb3\x14D\xee\x82\xa7\xfc^\xc6\x8d\x93\xd3\x0eDn\xe1.<\xef\x04X\xe4-\x18\x8d\x0c\xea(\xb4\xf3\x91\xa5\xac<\xccP\xc2Q\xe3\x8c\\\xf8\x90\xbb\x89\x94\x02E\xc3\x8f\xbc\xb47\xd3\xfc\xa0\x93\xa6xH\xb4\xb0\x91\x10Tj\x03\x18F\xd4\x9aDo\x96\x14\x8fHa\n\xc2\xc4\xeeA\n\x12]\xa5\xbcx`R\x82\xeeA5\x07\x8b\xd6\xad\xf3\x8b\xb0P\xcc\x9f\xc8\x97\xf2]6'\xaec\xcb\x99\x92ah\x01\xdbx\xb4\xb0\xb8]\x029\x0b\xfb\xcd\x1d\x858\x82g\xcau\x16#\x9bX\xf1w\xb7u\xa1\x90.\xb1!v0\xfdp\xaai\xe5\xc4c\x96\xa8\xa0\xcb\x9aJNY\xe4\xb8i\xe3\xc3\x08u\xfa?V\x1f1x\xe9Zf\x86\x176\x0e\xe6a\x19b\x98\xc2S\x18\x8d2\xf8W\x982s\x07l-(\x96\xf1\xa2t1\x04\x05\x17\xbf\x08\xafkN\xe1\x95\x06m\xd5\x83\x17dW\x05\xc9o\xd0R\xca\xbcx\xd12\xcc\xc3\xa8$\xf9\x8fa\x19\xb6\x82\xfe\xb3V,\x16\xeb\xbd\xf4\x02}X\x9a\x17\x0cai&X\x99\x94{F|(/P\xec\xc0\x15\x94\xa8\xbde\x04\xb0iq\x86\x88\xc5\x1e|3\x1c\xb6^\xe3v\xe4$$p\xec\xaa\xb0&\xc1\xb4\xe4\xf6f\xf6B\xe9\xe8D\xdcO\xdaM\x9d.\xa8C\x8cj\x1c\xca\xdb\xaa\xc4\x84|\xef\xd9\x8e7~\xb1\xb1\xdbze\xbf\x95\xc6\xa6\xffL\xae\xfe#.;:\xb0Th\x1f%\x1bH1\xdf\xa8\xde\xe0\xbb\x80\x8c_\xee\xea\xa2\n\x00\x16\xb8\xd5\xd8lA\xcaO\xf1\x8ad\x15J;\x0c\xdb!U\x182\x80\xa6\xba\xcb\x0e\xfb\xd8<\x98\x96T\xeeA\xba\xb2\x83\xe8\xcaoBeY3h\x9a\xb2f\xaay1\xa7l\\\xfb\xd3}\xfe\xef\xc1\xc6y1;F'\xd2S\x1e\x9a\x92\x8d\xa1\x86\x8f\xa7'P\xc3\x0e\xe7\xdda\x87\xd5X\xe9\x96|WV\xc8 \x84t\xed\x0e\x92,\xc2\xc3~\xdcJaF\x9fe\\\x94Y~g~\x99\xadI\xaa\xb2\x7f\x86J\x98\xf2\xab\xb7\xd6\xeb8\xd1+\xd9\xe6\x0b\xe2\x86K\xf1\x82\x9b3\x7f\x8b\xc9\xcal\x89\xfa\xccV\x1cta\xd8wmxr\xc3\x1dFm\xda\xb8\xb4C\xc5\x9b\xd7\xf1\xde\x0c\x82P\xab=Im\x08\x13\xf3\xb0Ih\x15$\x82B\xbb3\x87\xae\x95\xe3\x83\xf3C\x92]\xd1\x7f_g\xf9\x8a\"=\xe7\xc2;\x01\x16\x16\x13\x13\xf3U\x08\xc0]\xcf\x0b\xe6YJ\x90\xc4E\x8dE\x07\x92\x13z\x97\x98\xe5\x10\xb4\x93\x1f!\xc4)_3\xc693;QV2\x0b/\x86`5,\x91\x0d>\xec\x0b\x93;\x8c\xee\xe0P`\xe0\xd0k\xcb\x0b]=\xc9@\xaf;\xbb$\x1eW\xcf\\\x9f\xb8@h\xd6\xe7>\xdc\xf8p\xe7\xc3\xb5\xde|\x81y\x0f}\x98\x1b\xdc\x92W>\\\xfap\xe5\xc3m/\xbb\x08\x82\x83Z\x83\x08\xb6\xfa\xa2\xc6\x05/\x8c\xf1 \xe8#\xc2\x15v2\x00\x18\xef\x8fe\xec1\x87\xe0k*1C\x8a\x8ej\xd0\xacf/\xfbi\xf8\x86R8i\xad\xdd\xea\xfc\xca\xe2\xfce,\xdddD\xc3Gb\x00vmt\xf9\x05\xbd\xa5G\xe0\xc0\x1bq\xa0\xdb\x95\xce\xe1\xb4^[\n&n\xdaU^Y\xd0\xf1\x0bT\xca5\x82\xedV\x85\xf7p\n/f fNz1s\xfe\xed\xdf\xea\x8b\x85E\xe8\xfc\xf1bvcH\x1a\xfd+\x05\x86L\xdfxc\xe00?S\"\x00\xce\xe0\x1c\xce\xe0\xd6uHZ\xe61)\x10\xa2\xfd\n\xf6\xd4uoX2\xb7<\xbc\xc3\xa9\"\xa2z\x11\xf0\xafio\xef\xdb\x14\xd1\x1bD\xc5W\xf4\x96\xb8o\x18\x19\x8e\"\x0e\xcf\xf3P\xea\xae\x8b\ni\xf5+\xa6>G\xcfj\xf7\xca\x87/>%\x11(\xba\xa5<\x85\x89\xed\xb8\xe2\xabT\xd1\xea\x89\x0fK\xcf\xf3\xe1\x9c\xb6\xf0\x1e\xe1\x8c\xd8 \xec1H\xc3\x15\x93\xad\xbf\xe2x\xfc\xd7\x81P\xe6\xbd\xd5\x9f\xcb\xe3n\xf1[L\xf7\x8bW}\xeb\x15\xdb 1\xb4\x178\xb4_=\x1f\xc2\x19\xa1\x94\xc9\xaf\xf4\xaf/\xf4\xaf\xa5\x0f7f\x11\xdf\xcaj4\xc1\xe6t\x8c\x9bHw\xed\xd6\x15\xd3\xb4\xc8\x14(\x988\x86\xbb\xa6\xba)\xd3\x97x\xf8\xae\x1e\x83A\xb1\xe8\x9bl3A\x90\x89\x97\x14\xc2\xad<\xc0\x7f_\xd0\xa9gt\xea\x97>\xacf\x97\xa6\xf0\xa2,|\x91\x1b\x07\x1f`\x04q\xf0\x1a\xbe\x07wM\xbf{\xe5!\xfc]\x99c\x11\xad\xea\xc2A8\xf7FJH9\xb5\xd0\x0f]\xdfC\x1d\xa7\xa7\xd4\xd2\xe4\xda\x08{\x01\xc1\x8d\xba\xb9\xae\x08\xb3:\xcc\xeb4\xd2\x12}7,\xae\x05\xe4\xb5\x17\xbe+ mk\x0c\x1d\xd6\x81`\x1c\x06\xfd`\xa3\x91X\xe2\xd6\x9aF\xd2\xe30n\x1c\x8c\xd5\x1f\xb9+\xce\xca\x10\xf4S\xf7\xc64\x08DV\x1fX\x9a\x1etb\xe5\x93\xb9\x95\xba\x93}\x16\xa54u\xa7G\x9e]B\xccG\xf3\x14\xb6N-\xcaT\x91\xda{\x1e\xdf8\x9e\x0fN\xf8\xf5j\xd4\xa7m \xa1\xce\xdc\x0b\xc2f\xf2\x1b\x92\xfbS35|\xf4?3\xdd\xa2\xaa\xf6\x9bn\x9a\x19\xa8\x95s\x98\xab\xf1\xcc\xf9A\xa6\x93}\xcf\xdd\xd2)uc&\xf9\xbeu\xb1\xc7\xfa\x0cyB\xc76\")\xda @\x813\x163\x8d\xec\xe5\x9a\xb58\x85\xd0\x83\x94\x1e\xde\x8a\xed_\x88K\xb1\xbd\x0d\x11\x13^\xeb\xc1\x0d\xb8\xf3\"i\xc2\xe7\x16'\x1e\xff\x8e\x12p\xb3b4b\xf1}\xdd\xff\xca\xdc\x08[\xbb\xbfoZ3#\x97h\xb3M\xed\xdd\x9f}s\xaa\xe8\xcel\xfe\x95A\x93\xda\xc5\xf7\x06\xd7\xa4\x94\xb2d\xabV\"\x96c]\x8a\xbd\xe3y+\x91\xc5\x9de\x176\xf9\xae\x9ae\x8b\xf33\x8dW\x85\xf2\xf6L\xfd-\xd1x\xc7\xeag\x9c!?\x83J\x97\xe4n\xb8\xf8\x87\xe6\xc5o%\xe4no\xc5?s\x14\xd7\x03\xee\xcbu\xf8?;G\xb1\xf5\xec\x98\x12/\xfd\xcf\xcd\xa5\xdf\xb9\xcd\xbc\xb7\xf6.+\x16\x8b\xee\x04\xb6\xc1\x04\xd5\xb5<\xb6\xee\xd4RO\xd8,\xd1:{\x96:\xe6\x8c\xb7\x9b\xeda\x9f4m\xb2{\xd0N@\xbf\xfb\xf4\x9f \xe8\xa5\xe7\x7f@\x02\xfa}sR\xc4\x01\x19q-\xe7\xbf\xae`\xb3\x9f\xa4}\xf3@\xe6\xcd\xbe\xc7\x14.\x99y\xe6\x82g\x016\xbf\xa5TOhu\x14\xe1c*DJ\x9c\x82ns\x84 \xd6x6s\x8e\x03\x8e\xc1\xc5\x08\xdb\x98D\xf1e6'/J\xb7\xf0\xe4\xee\x9d\xe7\xc3\xdd\x1f\xa4\xa2e\xe7t\xa5\xdd\x91?r\xf8\x15\xc0!\xa4\xee\xde\xc4s\x13\x0f-i\xbb\x1aK\x1a\xd7\xcb\n\x83\xf4\xfa0\x91\xcc\xae\x1f(eI\xf7\xe1&H\xb3\xdb\xde\xd6\xb0\x96\xb5\xa19\x86\xce\x16\x06\x99\x94\xa2\x9c{\x01\x05zS\x1fb\xfcc\x12d\xe9\x8a]68\xa5\xd4\x07\xc6\xcap\xb3`\x9d\x15%\xbf\x85\x08h&\x18\x81i\x11\x84\xf39&\x1a\x94Se\x197Cj\x00\xc9\xbcE\x10\xafh\x8f\xe7Q\x1e\xaf\xcb\x82\x8e\xac{j\x0by\x0c\xdc\xa1\xdc\x07\xe7{)\xac\x17\x85\x94\xad\x11\xb9\x0e\x9f\x90\x83\xe4\xd4\x16\x1b9\xed\xcb\xc9\xd2\x9c\x84\xf3\xbb\xa2\x0cK\x12-\xc3\xf4\x9a [\x1d\xb9N\x81\xa3r\xbcNK\xf5\"\x08\xd7k\x92\xce_.\xe3d\xeeJ_yA\xbb\xe5\xbe3,\x123\xb1\xc6J\x16MY\xdcS\xab2\xb9\xd3\x94Q\xb2\xa0oN\x84bG\x8f\x99>%\xc4\xd7\xfa\xfe\x18\xd6\x1af\xa0\xb0\xfa\x18\x9a\xecC\x9b\xd1)\xf6\xc1\x9a\x95\x0fVy5},\xce\xf5\xf4\xb996{\xee\xa8\xeb\xd8i\xd7\xda\xdb\xb5\xc5\x04\x9bv\xdd\xd7q\xcf\xeamJ\xe9\xb4\x0c29\xa53\x1ed\xed\xa2O\xbe1u\x89]\xe6YH\x14\xe5\x1e\xea\x9bl\x9e\x857<\xb6U\x16,ZQ\xc4\x05!\x8c9\xc5sRd\xc9\x0d\xf10\x9c-F\xb1[\xc5\x05y\xec\xc2\xb4V\x80-\xcc\x9e\x9d\x04\\\xd1\xad\xef'\x00M\xd4\x9f\xd9\x99\xb2\x0en&9\x963O+N\xdemmQ\x02\xcf\xf9H\xae_}Y#h\x8c\x15\x0f\x9bAS\xb6\xdf\xd6\xda5#u\xa7\x87:A\xd7\xb8v(\xf2\xffA]\xca\x12V\xe3*\xeb\x9dq\x03\x84\xa3\xde\xc5\xb5Q\xd7\x88\xa1\x02\xae\x1b\xc6\xa46\x1eW\x8f\xb12J\x16\xb5\xaeX\x85\x84\x9d\xba5\x15\xcf\xfb\xcb\xb2A\xb9yp\x0e#\xc8\x91Y\xce\xba\xf5\xbc\xf4\x90(\x85\x98\xbf\x9dk*}9|\xd4\xa054\xcb\xae\x89\xecr#\xc2\xb5\xf3}\xec[(\x14\x8e\xba\x8a2\x9d\xd8B\xa9\xf0\x80\x84\x14\x97@\x08Q\x12\x16\x05\x84\x85\xe2%\xfb\xbbLG\x93\xd2\x0bO\xa4\xc9\xbe\xe9\xc4|{W$\xe3Z\xb6\xc8\n\xfe\x02J\xab^\xbc&oS\x96\x1a<\xc5\x18]\\\x9d\x03\xe9h\xd4E\xe8\xe7h\x89\x92Z\x08\xfd\"\xd2\x84\xac\xa0s\x01\x0f\xad\xaeB\xf6\x89\xe4\x95\xbd\x95\x07\x0b\xce\x97\xb1\x80J\xe5\x8c\\l\xb8_\x8f\x03%8WJY\x1d\xea\x1a\xdf\x98\xbf\xda\x1dO\xf5W\x19\x7fE\xe1\x8f\x9c\x86\xb0F|\x86\xdc\xa4\xb5\x89 \x0b\xd4,\x83\xa5\xb2\x1b,iA5\xfe\xd0\xfek#\xf8d\xb9\xea\";\xc1\x163\xc27\x12=\xe7\x14:\x01\xf9\xb2\xceIQ`\xd6\xa4\xaa(\x81\xc4\xe5\x92\xe4p\xc5c\xccf\xb9D\x05\xb1`\xcd\x0e\x8c6\x86J\x1a\xb8\x935s\xccc6\x96\xaa3\x8eJ\xc2\x8d\xed\xe5\x94\xd8-\xd3jC\xa7\xf5\x0d\x0c\x08@\x07\xaa\x91\x96\x85\x95\xd5\xcc\xbd\x0c1,\xd4\xdd\xc6\xfb\xc8\xa8\x11\xb1\xc7g8\xfd\\\xa1CD\xb2\xa1K\\\x83\xcbKJ!}\x93\xfb\xa3\x1aX\xef\x8e\xbfM\xfc\xa4\x03\x93}`\xea\xee\x99\xedz'-\xc5\x12zMS\xe09f\xe1\x07\x0e&\x9eb\x906e\xe5\xbb\xe3\x03\xe3\xf5\x0cMc\x06a\x97\xb6\xce\xb3u\xd1\x845\xa4\x98\xaa\xe4\x01HyIN\x16\x05K\x0d\xc5B\xcc\xad\xe7a\x89\xf9\x0f0Nr&\xad{\xbb\xef\xe2\xef\xd8w\xa4\xba\xdd\x87r\xf4\xa9\xe2# \xa3\xf2e\xb6Zg)\xc1\xbc7\xbf=\xf8J\x95\x82\x94\"EY'\x90\x91\x88\x11%n\xa69\xf4\x90\x04x\xd8\x8f\xdcu\x0e\xf7\xeb\xec\xef|~\x01I\xffZ\x91\x8a\x9c\xf31\xd4V\x15\xbe\x94\x87^\xab\xfb\x92\x87\xa2\x15\x11\x9d|p\xc4\x14T\x01\xa7<\xc9E\x96G\xe4gl\xa8[\xb6f\xe8\xf0u\xf3\xad\x906\x96\x03\x07W\xfa\xe0H]\xab\xe3\x8b\x14\xd8\x17\xcap\xaeP^Qp\x1d)\x85\xaa\x94 \n\x1fb\xb7\x90\x1b\x90Z\xf3\xd4/\xe3\xe2C\x95\x93\xd6\xa9\xe0 D,\x8cB]\xf3\x18B\xf5\xca\xd2\xc6\xa4\xb7\xc5\xb7\x00N\xa9{ ;\xaf\x0b\xf8\xa2\xe1\xbc\xe2mV\xa5%\x99\xf7\xc5\x0d\x14\x14\xb5fc\xa9NC\xdb\xbe6ae\xae/\x1d\x0dm\x18\xe6\xfa\x1f\xc9: #\x16\xa0ph\x1f\xe2n\x18\xea7\x8bm\x86\xec\xf9\xe3\xf7@,\xba\x1c\xac\xfe\x1b7\xfd\xdb\xb7\x1f\xb5\xfd\x04GU\x9e\xe3 \xdd\xdcu\xa2{\x16\xc3\xb2\x9a,\x98#H\xf3\xcburz\x05\x03\xc2\xd4\xf8\x0e\xfa\xdb\x1c\x8c'\xe3\xdd\xdfuQ\x9c\xf3W/?\xbe\xfat\xf9\xe3\xfb\xcbw\xef?]~xq~~\xf9\xe9\xdf\xdf\x9c_\xbe\xffx\xf9\x97\xf7?_\xfe\xf9\xcdO?]\xfe\xf0\xea\xf2\xf5\x9b\x8f\xaf~t\x86\xf4\xa9Q\x12\xd3\x897L*\xd1\x17!\xafu\x97\xcd~z\x14\xfc7T\xb7\xd1I\x8f\xd3\x7f\xba17\xa6\xbb\xba&\x14\n\xae\xb2\xf4\xd5\x97\x92\xa4\x94\xf8-0\xca\xf85)\xb5\x12RD\xe1\x9a\xfcH\xc8\xfa\xa78\xfd\xfc!\xc4\xa4\xcb\x84;\xbb\xb5\x8a\x8be\x98$\xd9\xed\xab\xbfVa\xf2\x1f\xe4\xae\xe0i\x05\xe3d.\x82\xbe\xb0jY^\xb2\xccz$\xb8*3^H\xf28L\xe2\xbf\x91s\x12\xe6\x11ko\x1d\xe6\x85\xfc\xfb\x9a\x94\xe7\xe1j\x9d\x90\xf3hIV\xec;L\xd1\x10\x96\xe4C\x98\x87+\xad\xa4,I\x9e*eo\xe3\xf4'\x91;Z*\x0d\xbf\x18J\xffX\xc5s\xa5\xe0\xc7\xb0$\x9f\xe2\x15Q\n\x99%\x8cR\xf4C\x96%$T;~\x1d'\xeawo\xd2\x92\\#\xad\xd3\x94\xbd\xabVWZ\xd1\xdb8\x8dW\xd5J\x1fn]Fi\xac\x97K\x12}\xe6\xdf\xad\xc8*\x8b\xff\xc6\xba\x8a\x8b7\xabU%\x84~\xa6\xd0>\xe2:_Q\xd6p\xfa\xd4d\xbd\x1e\xd7\xaf\x8fL\xaf3\xfe\xfap\xcf\xf4\xb6\x12\x1f\xef\xee\x9a^\x87\xf5kc\xd7\x05\x7f\xcd9S\xf9\x15\x9d\xdc\xff=\x7f\xff\x8e\xeb\x00\xfa\xec\x19\xec\x9eK\xc2*\x816\xc6\xce\x9b1\xb9-p~\x93\x85\xa4kb\x97\x0d\x11P\x15*+X+\xc6Z\x9d\xf4\xa4\x93\xb2\xa1\xf4:\xedD\xbc\xb8\xeb] \xde\xc8+\x17C\xd6|qy\xe4\x9a2\xfb\xbf\xe7.\xb2]\xaa\xdfj\xdd\xc3\xff\xcf\xde\x9fw\xb7\x8d#\x0f\xa3\xf0\xff\xcf\xa7(\xeb\xc9/C\xb6i\xc5r\x96N\x9c(\x9et\xe2\xa4\xdd\xd9z\xb2\xf42\x8a\xc6\x87\x96 \x8b\x1d\x89TH\xd0\xb62\xf2\xfb\xd9\xdf\x83\x02@\x82$\x00\x82\x8e\xbbg~\xf7^\x9e\xd3\x1d\x8b\x0b\x96B\xa1P{\x85i\x1a\xae;t@E\xb3\xe8\xd8\xaa\xfe\x8d\xbd\xbc\xf70@v4nv4K\x93\xe5O\xef\xdf\xa6S\x92\x125\xef7PO\xab|g\xabr\xe1\x11c*S(VN\xb1\x84,\xe5\x92\xf4\xd9\xbe\xb4}Z\xc0\x8b\x94\x19x\xa3\x8c\xcf\x04oM\x8a\xa6\xde\x93/\x1e\xf1\xfb\xcbp\xe5Q\xccd\x1fe\x14g[\xbe\"\xa6\xf5:\\\x95oB#\xc6 +;D\xf1\xf4C\xe2$\xa2\x80b\x16\xab\x1b\xb8\xa0jV\x0d\x159\xdb\xef\xcf\xa2\x05%J<\xa3\xb1 \x91hA\xefD\xa3\x8d\xf9\xf3\xd9i\x7f\x18N\xe6e\xeb\xc6\x1c\x01\xd2*0J\xc7h\x0dM\xc78{O\xe4^\xd7X#\x9a%\xfe\x18\xc8\xe2$]\xe2 \xc2qn\x08\xef\x03\xa4\x13\xcfcW\xa4m\xc9\xe8\\\xf4\x14e\x05\xdd9\x14}\xe4X\xfd\xf8\x9a{\x91\x13qj\xb6\x8a\x9bu\x97\x10A%^\x87+\x17t2\xa2LJ\xa6\xf9D)\xf2g\xcb\xfdP]W\xe2\xb1\x95\xe5\xa6\x9df&\xd8\xcb\xa0\x12\xd1\x08\xca\x90\xdfa\x97\x7f\xd9\xa8\xcfD=\xabr\xbc\x06\xcb\x9cP\xf7Z\x0f\x84\xa8\xed@\x88D\xa5\xa7\xdd\x00\xf2\xf2n\x1c@\xd4 L\xd9:\xa3d\xf9a\x9e\xc7\x9f_G\xd3\xe9\x82\x9c\x87\xa9]\xe4\x07\x9d\xe5\xce\x04\x13\xd2\x9fJ\xf7I\xc1\x85\xe9K*@\x97Fu/7\xf4H\x86\x0f\x8cyKc\x8fz\xe8\xbfE\x9c$\x8b\xe9\xc3\x1e/_\x8f\xff\xa9\xaf\xe2\xbd\xf1h\x05\x07\xb8v\xb7\xe1\x00\xf6`\x1f!|\x0f\x0e\xe0\x8e\xf8\x9b\xdd\xbf\x0d\xfb\xb0}\xeb_^\xe8\x9dd4\x0d't\xb3\x88\xc2l\x13O7\xd2y{\xc3\xf6\xec&\xf3\x96\x9b\x8c\xa4\xd4?\xd8\xe44\xf17'^\x98\x91\x0d9\x8d\xe2M\x92,<\x12\xc6\xfe\xc1&%\xe1\xe7\xcd\x9a\x12\x7f3\xc1\xc7\xec\xc0\xd9\xcc\xc3t\x83\xf2\xedt\xb3\x08\xb3l\xb3Hb\xb2I\x96\xab\xc5&\x893\xbaIb\x1a\xc59\xf17S\xe2\x9d\xe4\xa7\xa7$\xddL\xa2e\xb8\xd8L\x16aJ63\x8f\xed\xf1\x0dI\xfd\x83M\x14Gt\xb3\xf0\xc8iH\xc9\x86P\xe2\x1f\xf8\x9bi\xb2\x99&\xf9\xc9\x82l\x887\x99'\x9bEv\x10\xcd6\x8b\x8cx\xd1\xcc?`\xf3\x88\xb3<%\x9b8_n\xceHL7\x17\xde\x84\xac\xe8\x86L6+\x0fS4o\x92\x94\xfa\x1bJ\xbcx\x9amPs\xb2Ic\xdf\xf7Y\xd7\x8b\x05\x9d\xa7I~:\xdf\x84\x8b\x8cl\xb0l\xf9b\xcd\x86r\xc1\xa6\x93\x84\xeck\x8f\x84\x939\x9b}D\x18\xd8\x92\xe5&\x8f'\x1e\xdb\xbdl\x80\xa7\x8b\xe4$\\lN\x13\x9alN\xf30\x9dn\"o\xb6Y\xae<\x8e\x03\xd9F\x19D\xecEt3Y\xe4S\xe2\x1d'\xf1\x84\xf8\x07\x9bE\xc4\xa0\x95\xd3\x8d\x14}6\xd4#\xe9,\x9c\x90\x0dI\xe3p\xe1\x1f\xf8\x07\x9b\xcc\xdf,\xbcpy2\x0d7\x84n\x92\xc9\xe7M\x12\x9f\xfa\x9b\xa5\x17M\xd2\x04I\xe0\x06\xf5L\x1b\xaeK\xf07o\xc27\x9b\xd8\x0b\x97$[\xb1\x96B\x1a\x9d\x91\x0d\xb9\xa0\x1br\xbe\x89\x16\x9b\x84n\xf2\xc5\xc2\xdf$\x1e\xb2E\x9b\x15\x8f\xaf\xdc\xa4\x9b\x9cn\xceH\x9aFS\xe2oV^8\xf9\x1c\x9e\x92M\x98\x86\xcbl\x93Fgl]\xd2\x84\x92 %\x0c\x104\x99$\x8bM~\xb2\x88&\xfe&\xf5\xc2\x88a\x8c\x17N\x93x\xb1f\x0b7\xdb\x9cF\x19%\xe9fEB\xba\xf9\x92Gi9\xefl\x92\x93\x0d\xd7\xb3mh\xba\xde0\xaa\xe8\xfb\x9b\xcc;Y\xb3\xc5\x0f\x17d\xba!\x8b\xd9f\x9e\xa4t\x13\x9d\xc6d\xba\x89\xbe\"xB\x1aM6\xa8\xd3\xd9\xa0\xa9a\x93\x9fp\x97\x84M\xbe\"\xe9f\x1dO\xe6i\x12G_\xc9t\x83\xb1\xc4>\x83\xe8r\xb5`\x83\x9f\x93x3\x8f\xb2\xcd\xf7|L\xd1\xce\x06\x87\x11^\xf3z\x8a\xf6\xcc)E\xfb\x14\xab\xfc\xa2AB\xefGR\xbc\xdc\xf4\x86\x99\x06Pw\x06\xae_X\x8b\x8c1\xa6\xd6\xb7N\xf1\xadA\xcb[K\xc6\xd3z\xa7\x01\xc4\"\x83\xc9\x00K\xede\x84za\x00k[\x81\xe2&*H\xa1c\xc9\x84\x8e\\: .1\x19\n\x0fq[\xea\xb9A\x0d\xb1hMU\xdb(\x9a([0\x11\xa7\xc2\x9b\x8d{\x87\x95\x84\xbe$U\xa3\x81\x86\xb8H%\\\xa3\x08J\x80\xf6\xb5l\x12.\x9e\x86\x19\x1b\xd6\x93\xea\x9d\xe7b\x90\xad\xa0\x91\xeaG\x8f\xf6Sn\xe8\xf7n}\xea\x8f\xfe\xd5\xbf5\xfe\xee\xc6-&J4K\x7f\x92~\x16\xc6\x11\x8d\xbe\x92\x8f\xe9\xa2\xb5\x87H\xad_\xabz\xdb0a\xadW\x8b7\xd2\xc9\xd6\x8abp\xa6\xf6\xeck\x8f\xe0SB\x9fL\x18\x97\xcf\xb0%M\x16\x8b(>}G\xb2U\x12g\xed\xd0\xa8\x9dd\xa5\xc2\xbf\x1fe\x8a\xf6_Q\x87\xb0\xa51i\x0c\xaa\xc7\x9e\xfe\xcdR\xbf4\x8b\xe2\xa9\xd7\xaa\xac\x91Wq\xc2e4Li\xf6kD\xe7^o\xafW\xe8#U\x15*\x83\x89\xd7\x9b\xf0\xdd\xc3\xad\xf6\xff\xbe\xf4K,lz\xfe\x01\x98+X\x15\xaa\x1d\xaf'\xba\xe8\x89\xc4\x9b\x1a;\x89\xa1\x8d\x14\x9d\xe64\xe3\xd27\xe2\x17\xca7a\xea*\xb3\xa4\xc5\"O\xa2Y+\xc7\x9aM\x9bx2%d\xb5X\xbf\xa7i\xb4zI\xd65~\xcd\x927\xecZX\xaab\x99[\x94\x81:\xa7L=\xb6ut\xbb\xafZ51\x99N]K\xb7\xd9\xa8\xe4\x8f\xf1q\xb1\xcd\xd4&5\xef5e\xf8\xbf\x19\xb05d\xb1\x86\xa3\x91\xc6\xe4dVh\xe3\x98b\xee\xa1\x17a=D\xd4*\x8a\xc8mv\x87 5<\xa1\x0c\x15o\xe8\xd3V_\x9aU\x90\x91\x86\xec!\x15s\xb1\xa3F\x86\xa2\xdd\xa6\x94\xe2\x80^)\x0c\xb9A-\xeb\xcdp\xddp\xa6\x18\xad\x16\xb4m\xc1)\xb7Z\x94\xd5\x8dMn\xf5P%\xbeU7_n\xdf\xd3T\x94+\x98\x9d6\x83d\x91o\xb1\xd9\x84iM\x18L\xc4g\x1a\xd2\x1f\xa3\x03\xc6\x87\xa4p\xeapX#\xfe\x8da\x8d\x94\xde\x8chR3\xfdU\xdfc\x9bb\"\xfd \xee5\xfc\xfa\xa1\xc8\xbaq\xfbN=<\x05D\xee\x0d\xf4\xb0\xb83\xd0}\xba\x92-\x7f\xbf\xab{\xaa\x0f\x89\xaf\x16_e\x0f\xcf*\x07\x89\n-\xa3\x05\x19\xb3\x16\xf4\xa3\x18\xf5\xe3\x99\x17\x97\x0c\xb8N\xb7\x02\xaa'\x809:\xd7m\xa3\xc1\x01(\"A\x84A\x13\x11\x16Z5\xf2\\.hm\x8d\x95t\xf1<\xc0C\x9c\xe2\xa7Q\x93\x18p\xfe\xad\x9f%K\xd5s\xa2\x8d\xddd\xbd\xac\x95a\x8eb\xc6[\x8db\x8d\xdd\xeb\xb2\xbe%\x9a'\xdf[\x83\xdfc\xeb\xfe\x80\"\x10\xf01\x94\x02T\xef\x97p\x91\x13\x1e\xe8uB`A\xb2\x0c\xe8<\x8cA\xb4\xdck\x8e\xb1\xb9;\xfe0\xf8gv\x18\xd3#\xf3\x98NQ\xe5\x9e\x8aa\xf1\xc6\x9d\x86\xf5Y\xefI\xda~Z\xa0\xa4y\xeb_;\x07\x9f\xa6\xdb\xde\xa7>\xfb\xc7?\x90\xb6\x01EN\xad\x0d4\x04\xc1\xf8\xb8\x0c\xee\xc8\xe0\xfa\xdamt\x0e\x83\x8a!\xe2\x8d;\x0d\xeb\xb5\xceE\xd7mLx*\xd5\xf2+\xd4\xbc\n\xcd\x90\x9bE\x0b\xe24\xc0\x0f\x06\xbfb\xb71\xf6h\x9a\x13N\x1aD\xccR\xb8\xc8\xd4\x1b[\xbb\xca\xdf\x03\xc9\xca\x9bF}\xc2\xbbw\x1a\xf8S\xbd\x8f\xb4\xdb\xb8\xf9`5\n\x1f\xf3\xd8\xc4\xcb.C\xfb\xd9\xe4\xd3\xed68^\xb1\x9f}V\xb8\x0b[VZ6\xef4\xb2w:\xf7s\xb7QIqO\n\x1b}\x9a\xbcJ\xceI\xfa4\xcc\x88\xe7\x07\xb0u\xeb_\xa3\x7f{\xe3\x83\xd1\xee\xce\x83pg6\xfe\xf7\xfd\xcb\x9d\xe2\xef;\x0e\x7f\x0f\xf6.G\xfe\xe5\xd8\x890\xb0\x91;M\xf8\x8d\xd1\x0b\xdf\x9d\x98\x96\xbc\x89\x1b\x9d\xe7]8\x0d\xef\x951t\xa0\xfb\xf0:\x90\xfc\x0e#|f\x08xp\x1e\xdf\x16O\xebpzx\x81\x1e\xc9\xb6\xa5\x9d%\x8bEr\x0e+\xd1I\x0f\xb6u.\xec\xd53\xbc\x19\x9e\xd1:\xb2\xabr\xb67oV~\x9b\xb9Z\x13\xc7\x8b\xac\x1eR\x9e\x93d\xba\x16je\xae`\x8c\xe2\x1ew\x93\xc7_h\xc8:\xbeX.z\xc7\xd0\xf9LyS\xb0\x1e\x867\x17\xe5\x9b<\xc9\x85\xfe\xb5U\xf9\xda,I\x97!5\xbd8\xaf\x8cQ\xec\x00\xc3\xbb\xd3\xca(\xed\xef\x9e\x95\xef\n\xc4\xad\xa7\x1e\x01\x01G\xeet\x950\xa67\xb2f\xe6\\3\x91\xbdT\xcc\x0d\x01\xbf\x8c\xf4\xfd\x83Pe\xf4B\x99\xe0[\xbc_\x15\x9ay\x82\x97H\x16\xd306u\xackJot\x94MN\x92<\xa6&-:\xbbN0\x9c\x8fq$\xcal\xccl\x8d\xb9!\xd4eH&\xa1l\xcb\x8bx\xa6\".\x96X\x06r\xc1\xbe/\xb5i\x95\xcfw[\xbf\xc6\x94\xf1\x92\xf9\xeb\xfe\xf9\xa1\xc1\xc8\x0e\xd2\x00\xd7\xd0B,\xcc\x9e|V\xed\xaa\x9bdvhp\x08\x90\x17O\xef\xad\xd7\x11G6u\xac\xbc\x94\x80\xa7\xc8\x0fD\x7f\xc6/\xda\xed\xcf\xf2\x92\xb4\x88\x1b\xb8{H\xf7 ;\xde\xf88y\\bq\xf6\xe1\xf1\x80c\xe9\xf9\x81\xa1\xfc8h\xf5\xb9 \xb6\xe3\x13F\xd2\xd7\x01\x9c\x16\xb5#0\xb5\xfd\xfb\x00\x0e\xc75\xe1\xd5:\xf6R\xdf\xa4}E\xa7\xe6\x07\xb1\xd4 \xf2\xcfe\xf9 9\xf7w\x82\xd6\xc3,\"\x8b)D\x19\xe6\x0fY\xa5\xc9Y4\xc5\x13@G\xb1e\xa3g\xb6\xc1\xb2\x89\x7f\x85!<\xf3\xa2\x00\xce,N _\xd1\xc4\xc1\xc7\xf3\xd5\xd5\xd9\x00\xc4\x10\xe6\xe5\xd6\x99\xb7\x8d\xe69\x0c\xe1\x0d\x1b\xcd\xdc2\x9a\xe7\xcah\x9ew\x1d\xcd\xb4m\x08\x1fa\x08\xaf\xd8\x10\xea\xa5E\xd4\xeb\xa32\x84\x8f]\x87\x10\x96\x00 \xdbF\xf3\x03\x0c\xe1-\x1bMh\x19\xcd\x0f\xcah~\xe8:\x9aY9\x9aY\xdbh\xbe\xc0\x10\xfe`\xa3\x99YF\xf3E\x19\xcd\x97\xae\xa3\xa9\x1e\x89m\xe3\xf9\xdd\xe2\xb7$/\xe4n\xbc\xdfQC\x1eR\xb2C\x99\x1c\x85\xcd\xaf\xe0\x00~\xf6P\x85\xd6\xcb\x99\xb0Q\xdc}\xc7\xef>\xe5D\xd4\xcc\x17\xc9K\xcc\xf6w\x93\x1bKIf\xab\x07[\xdb\xfc~\x85!|\xf0\"\x0b\xb0qv\xbfv\x18\xe3\xaf\xedc\xac\x1c\x9emC\xfc\x05\x86\xf0\xb9}\x88\xbft\x18\xe2/\xedC\xac\x9e\xd0mc| C8j\x1f\xe3\xcb\x0ec|\xd9>F\x95\xc1j\x1b\xe1\x8b\x96\xa1\x1d#\xf3S\xb0a.\x03}!y\xd6\xa3\xd8\x1b\xf5\"J\x96Y/\x00\xceg\x8f\xfd\x00\xa2\xa6\xa1\xbb\xcd\xd7\x03\x14\xc1\xaam\xdb\xb1\xab\x82I/\xd0I\x82!\x0b\x06\xabV\x97P><\x12\x0fU*\xf0\x02\x190\xf6\xf4)\x13*\x03ap\xe7\xeb`\x1f,\xbb\xa2xJ.\xf6\xa1\xc5g\x90]$M\x93t_\x13/\xa7^\x97\x96x\xb0v\x9cP\x18\xe46\x94\xb8\x01Cx\xdd\x8e\xb47\\pA\x00\xeb\x86+56\xda\xbd5\xfe+\xcdl\nvNI:\x1a}\xbb\xbb\xb1\xc6\xd2 \xc2/\xa8\xab\xd8\xdf0h\xe9\"\xa0\x19\xbco],\x17BwE\x8c\xf2]\xc4\xbd\xae.\x96\x0b\xdc\xb6\xf8\x17\x166\xb2\xad9\xd7\xf3\xb0o\x98\x94/\xbe\xfd\xf7e\xc0\xbe\xbfq#%3\xd5\x1d`\xbdBO\x18\xda\xc7}\xcd\xff\x14%WD\xb9'\xda\x0f\xa7S\xf4M\x0c\x17?\x97O\x0e\xe0o\x8f\x0eX\xe3g$\xcd\xa2$\x1e\xf6\x06\xfd\xdd\x1e\x90x\x92L\xa3\xf8t\xd8\xfb\xf8\xe1\xf9\xce\xfd\xde\xc1\xe3O\xb1pl\x87\xdf^\xbf\x02r\x81K\x0c\x13\x9e\xe2\xf7\x84\xc0)\x89I\x1aR2\x05\x1e\xa4\xf47\xa3\xff\x93\xbc\xa4!LL\xa7\x8f\xa9\xb1\xbd[\x9f\xde\x7f\xf7\xe9\x96\xf7\xe9\xfd\xb6\x7f\xe3\x96\x05\xd9K \xc2\x10\xa2\xd1\xa0\x19\x8c\x08F\xc6B1\x16\x9eJK\xed\xf4)\xea\xcb~{\xfd\xea\x90\xcf\x8d;\x93\xb8\xf8\x80\xb0\x89$\xc2\xc3\xa8l\x8fo\x82\xe7i\xb2\xe4\x1bA\xb4\xd7\x9c\x91T\x8a\x99$\xbb\xa4M\xb2K\xb0\xbcm\xcd\x13&)=a`_\xc9y\x06Pxi\xaaYP\xac\x8e_g\xa2\x0eI=\xa9\x92\xbc\xd8\x12\x94\xe2\xfc\"\x99\x84\xac\xa9~\x86\x8d\x1b\xf4K\xa5\xde\xd2\xb4\xb5z\xa8\xa47\xee\x11y\xf0\x90~\x96\x9fd4\xf5\x06\xbe\xac\x17tS\xa7\x8d\x01\xd5C=\x85(\x86\xd8\x87\xb8^>%\xe5\x8e\x8a\x18g8J\xc7\xb2\xc5!&[\x1bM\xc9$\x99\x92\x8f\xef\x8e\x8a,]^:\xda\x1d\xfbc,\xdd;@u\xa1\xf6\x9d\xc1\x98\xdbU{.\xf8$\xb7us\xcd\x9a\xd9l\xec\xb4\xd5h\x15_\x86+\x07\x7f6\xf19\x12\x83\xea\x8c\x88\x0f\xdb\xd0\x1b\xa2\xb6\xb6\xf9\xb4\x9a\x99T^\x97~\xff\x8f$\x8aqy\x9aS\x13\x19{\xec\x83\x92\xf3\xa9d\xdd\xa0\"n\x17K\xd5yD1W\x04\xd0\xcb\xe9l\xe7~\xcf\xf7\xcb\xbb\xbd\x930#\xf7\xee\xe8\xc6Pf\x10jv\x9d`\xb8Y\x94\xc4\xd9{|\xcb\xe4\xb5\x13.V\xf3\xb0%\x97\xacz\x154\\j\x13\xe7=\x1f\xb7\xd0\x02S\xc1\x85)\xf1\x88\xfa\xccpd\xeb7\xe6\x92\xd0y2\xbd\xf2h\xf8\xe7\xa6\xf1\xc8\xa7\xceLDs\x8c4<\xfd\xb3\xc0Y\x1b\xb2\xf3 5\x98Y\xcb4\xe5\xc6\xce\xe8\x9cT\x94\x8c\xeeQ\x0cF\xbd\x91\xf4\xe6\xa5F\x0f\x11\x85m\xe1\xa5oz\xe5\xdf\xa2\xcc\xd1(\x0e\xd8\x06\x0dt\xfb3\xf5K\x9f\xfa\xff\xd9\xdb\xbdu\x1a@o\xbb\xe7\x8f\xc5\xfe\xd4-\xa9\x91J\x11\xdb\xa6\xd6d\xee\xaa\xac\xa4\xc1\xb1\xa6P\x9a1\xc25- W\xac8\xe5\xb4\xb9\x8ct\xf2\x18\xa9\x8e\xbc\ns\xa9\x143\xa4's\"\xc0:\x8f[d\xcaT:&\xcc\xd9\x98\xd4(\x8d\x96\x9e\xb2H\x9f2\\\xa3c\xb4\xd8\xf4z\xb6\xe1\x1a\x92\xab9\x0d\x93\xc1\xec\xb8\x84\xd9\xd7\xa6{Y\xa0I\xe7\xe6\xd44m\xe6\x9b\xb0\xecd\xf1\xd1\xad\x7f]\xec\x14\xccu\xeb\xb2\x05\xc6\x14t\x7f\xe6\x08\x85\xfdgS\xd8\x976\x85\xf5h#\xecb\x1ba\xf5r\x9f\xca\xff)\x1f\xf0\x94\xdfl\xa7x\xf7\xee\xfb\xfd\x1f\xf2\xd9\x8c\x08\x7fq[\xf5\xa3\xb3\"sSq\xf2\x95x\xa2\xa6\x19\xacX\x8c\xc0%S|o\xc49U\xfe\xe9\x18\x91:nT\x8cr\xca\x06\x89\x94\xae\x1cWjcD\xf59\x0eAaO\xf9T\x94d\xbc\x8bhBL^\x97\xc4\xb8\xbc<\xa4\xaa\x9aL[\xe4K\xe4\x14@-1\xe1c)+S.\xd9zZr\xfdP\xecx\x99\x97\xbe\xaf/\x9b%\xb9\xf4-\xa6\xd6\x16\xc3\xb2\xc5\x17\xae-F\xd6\x16\xb3\xb2\xc5\x1b\xae-&\xed\xb3\xbey\x13\xb6&e\xd3?\xba6\xadI-\xaf4\xbd\xe5mQ.\x87\x8f\x16c\xb7\x06C\xd7\x06\xeb\x898L\x0df\xae\x0d\xce\x1d\x1b\x9c\xb4\xaf\xf8f\x83\xdd:57s\x1d\xdf\xb41>\xf5\x17\xf1R^\x83\x85x\x91\xfc#\xe1\x7f\xc4\x8a3+\xcf\xd5\xcd\xee\xbc$kL\xcf\x17\x8a\x17\xe2)\xb9\xc0\x1b\x19\xbf\xf1$\xcb\x92I\x84\x99!\x00s\xb8\xc4e\x00\x1c`x~\xdc\x97m\xb0\xae\xfbe\x0bl\x00\xfd\xf7\x04k84\xe9\x07\xa6\x19\xf8\xfb\xdf\x8f\x8f\x8f^\xbf\xfe\xf8\xe1\xc9\x0f\xaf\x0e\x8f\x8f>\x1c\xbe\xc3?\x8e\xff\xfew\x8dji\xd5\xfc\xe2\xe5\xe1\xef\x87\xcf\x0c\xaf\xcf5\x1d\xbcyv\xf8\x9b\xf1\x83i\xf3\x83\xb7\xef\x9e\x1d\xbe3~p\x06C\xb8\xdb\xbc\xbd\x86!\x0c\xe0\xd1#]\xb5\xf3S\x18\xc2\x1av@\x93\xaa\x7fi\x90\xf7\x8f\xed5\xae\xf7\xeb\x89$A\xcf\xf9\x9f\\\xa5\x19\x13-?o9\xd8\xb9q\x18\x0b\xbb;\x92\xe4\x0b}\x8bT\x1c\x0dE\x83\xbbn\xdb\xe9=O*\xaf\x7fxh9\x89D\x84\x9bF\xaf^\xa9\x0e%\x0bH{\x98x\\\xa88w\xb0JH*r\x9e\xcb\x94\x05<\xd3\xc6\xeeCLw\x11?\x84h{\xdb\x87t\x14\xf1$\x89\x11\x13\xe8\xcd\xee\xf5\xa9\xd3l\xed\x01\x0d\xaa;:\x06\xa2\n\x98f<\\\x82\xf6\x8f\x8fy\xe9|\xe2\xfd\xc1OW\xf6\xc4\xa9\xe3\xb7\xd6Tb\x85\xf5A)\xe9a\x13\xc1P\xb9\x04\x8f\x1f?6\x995\x84\x92j\x1bb\x11C\xbd\xd9\xc0\x9d\xbd\x07w\x1e\xdc\xfb~\xef\xc1]\x9ca\x19\x99\xf8&|\xa3o\x85MZ\x93\x92\xcf\x04>\"\xcax#\x90\xb7Q\xf1\xe1\x06\x9c?l\xc5\xf2\xeb\xf9\x9c\x0dm|v\x90\xda<\x19jP\x16\x9d\xde\x92Q\x91\x14\x1e\x0da'\xae\x14,\x1cJ\xd0\xd5_&\xf0xXW\xc0\x9a\x06v\xd4\x96\xbd\xf1\x83\x18\xb9\xe3\x86}\xed\xda^\xbd\xaa\x8f\xa1\xbd\x0f\x0e\x80\xab\xc5i\xc4\x986\x97/\xb6\xba\xbf l\x03\x1a\xc5j\xb1\xb4\x8cC\x92\xe5\xe2\x99\xbc`\xac\xde\n\x02\xbf\x9f6\xabT\x83pd\xd6\x9c\x07\xef`\x08{\xcd\xdbo\x9c\xb3\xb6\xf3M\x9d\xa4\xcd6^\xf1\x93N\xbe\xa09\xda\x9e\xc1\x10\xde0\x1cye:\x02\xbe\x1a\x08\xf6<\xca0\xbb\x8833\xfe\\\xae\x94!\x99\xa7\xb4Z\x94\x0b\xc5\xb6\xe0\xa0\xb2l#\xf6\xbd\x85\x8a\xc2\x01\xa4\xc5\x19\x12\x89\xb2\xc0\xd6\xd3\xd0\xe0\x078Mb\xd3\x89\xebH\xab?\xda\xa8\x82uH\x1c\xfd\xac\xe3j\xad\xdcc\x18\xd4\x0fv\xees\xebWW6\xf6\x8b\x9d1\x00S\xd5h\x8a8\xe3\xd4\xc5\xefv5\xe0\xaf\xda\xf4\x1d\x05-\xe7Un\xb5\xc5\x96\xf5\xdd\xfdj\xef\x8e3(o\x90\xd6\x8e\xde`\xedR:ze\xcaM\xa4\x9d\xbb\x92\xb7\xdaiD\xbf8\xc0X\x13\xcc,\xb8\x14\xa7.^Z\xbb(\x92\x01\xa8G\x8e\xdc\x8e \xcf\x95-\x85\xe8>M0]\x83\xb5\x80\xb5\xbc$P\xd1y\xbd\x12\x167\xac\xd5\xe6!\xe7@\xa85\xc3\xfb\x96\xa9^\xd8\xe1\xc5\n3\xd3q\x06\x0d\x92\x14\")\x15 5K2\xe3[.\x0b\xd8\xd3\xcf(\xdd\xf0G\xfb\xe8.o\xeaV\xbb\x8a\xecj\xa6\x083\xc0\xfd\xc5\xb7\xc1\xbdO\x13\x94\xc5$\xc4\xc5\"\x84\xcd\xb5\xa0\x98\x9f\xfd0\xa6\xe9\xbax\x99\xba\x8e\xf2\xc6\xb7\x8dR30\xa2\x0e\x84\x8dSH\x91\xf2V\xe8<\xb6\x1f\xadc\xf3\xbe}pr4h\xe0\"\x14\xef\xd7F\xa6\xfe\xfa\xaa\xa8\xaa\xa8&\x1f\x81e\xb0\xbd\xd1\x918\xa0\xc75\x05t\x00_\xfb/\x0f\x7f\x7f\x0fCx\xca\xfe\xfe\xe5\xc9\xab\x8f\x87\xec\xd7\xcf\xec\xd7\xe1\x9b\x0f\xef\x8e\xf0\xe7\xbb\xa0\xd2\x7f\x14g+\x9e\xed\xbc6\xaa$O\xab\x99\xb9m\xf4\x85\x1d\xf0\xe6\xdc\x0bJ\xcb\xa3g\xe3\x0em\xd6\x1b\"\xdeK\xae\xb7x\xd9Of\x8e\xed\xbc\xf4\n'\x92\xc6\xc0^V\xa7L\xbe8\xb6\xa9\x1b\xdb\xcb\xab/*\x82\xef\xf8\xb84\x8e\xb2\x91\xfc\xbb\x17@\xef\xb2i\xcfQ\xfb\x99\x84\x939yG\xb2\x962\xc7JW[\xbc/\xfc\x10d\xc5\xafB\xd6\xfb\x18\xe3\x83)\x17\x06\x957\x87\xfc\xc5\x12\xeb\xcb\x8a\x0f\xa2\xfc\x99\x14\x1c\xcb\x8f\xc4\xd9\"^\xb0M\xa3\xe8\xdf%\x86HLdB\xcb\x82d\xbc\x02\xa8K\x0f\x89S\x00\xbe\xe8b\xd6\xda\x05\xf1^\x04\xf0\xd2\x0f\xe0Ee\xf1%\xbdu\\\x13=\xa6\xdf\xe0-\xdfp\xc7\xf4\x1b\x16L\xbfQ\x19`II\x1d\x9b\xd6\x0d\xf1\xc65#\xfc\x88!\xfc\xb8\x89\xf07\xae\x19S\xea\xb5\xdd\xf5=|\x13\xa64\xbb \xde\x8f|=\x7ft_\xcf\x1f-\xeb\xf9c\x8dr\xd1o[\xcb\x97\xfd(\xe3-D\x94\xfd\x92\xda[\x86\xdeB]\xcb\xc6\xaf(ro4\xb5\xb7?\x05\xf0\xcf\x00~\x0b\xe0\x1fM\xa5\xe9\xfb\xc3\x7f\xa0\xc2\xd4$9Rj\x11\x1d\x8fCQ+\x83\xd6\x88M\x17\xf6\x95\x18z\x90\xfc\xa50.}&\xebL\xcbC\xf2\x91$\xb26\x88\x1c\xca\xf1gQ\x0b\xab:4\xd2eh\xb1u\xf2Q\xa9\x9f7\xcc\x9f{\x16:+\xe8\xd2\xf6\xee\x84\xe1,\xa8\xdd{*\x0e\x83zm\x1fCG\x91\xa1#y\x16\x95\x06\x8c\x7f8\x1aX\x90\x1b36\xf8\x13k\xcd\xfbI\xe8Z)\xf5F\xe3Ff\x16}\xbby\x0brh\xd2\xe0\x88.\xa8\xdf\xe4\x9a\xbf\x94o\xa4\xfa7~(\xdf\x88\xf5oh\xa5\x9c\x83R\xc8)TOf\xcf\xbe\xabK:\xa3\xcf\x01\x9c\x8dAd\x8a\xed \xf1t\x92Y\xc3\x16\xa0gza\xee\xdb\xa7\xc7\x05\xb9k\x9aEfG\xf2_j\xd8\xa2A\x0f\x0d>\x14\xab\xeb4\x04v\xc29\xa9\xcb\xa8`\xcd\xf4@\x8dL\"xa\xe5H\xd8\x01QZ6\x06\x01\x864\xef>\x84\x1c\x1e\x0d!y\x08\xf9\xf6\xb6\xa9\x11\x10\xe3\x08\xd1S8f\xa2\x15\xec@\xced+\x83\x7f\x15\xc8\xc5\xe6z=\xe2\x85\xa3\xc18@\xc5]8\xda\x1d\xb3/\x03P\x02\xdas\xd8\x86\xa6\x12\x0e\x1a\xe2\x97\xbc\xe4g\x8d\x87\x96\x04s\x0dV\x99g\x83tZ\xa6\xd9\x9f\xbcL\xda\x152B\x96\xaf\x9c\x0d0\x0c\x1b\xbfzV\x96B^\xd2\xf9\xc3}a%\xf0\xb7\xb7\xe11:W\x9b\x1b\x077u\xa7\xbc\x8cjOy]\xc2>\xc7\xcc\xb9P\x1f\xa9i8s\xfbp\xa4E\xbe\xe2w5\x94r}\x8e\xf4z\xa8\xe9\x93j\xbe,\x03\xb8\x05\xbb\x85?\x8b\xf0{\xf1\x03\x89\xce\xf2C\xdb\xc1\xf6\xcfbh\xff\xd4#\xce?\x85\xcd\xa0e\xab\x99\xa0u\xda\x02-\xaa\xaa \xb8\x8a\xc0\xd1WhIm\xceB\xfa\xa5X\xd6\x96BiC\xbf\x1a\xa7\xd4\x13\xaeV\x01\xf4\x9e\xf2(\xde\x8c\x92\x15\x84\xf0.\x8cO \x9c\xaca\x17\x83\x1eAX'w\x83\xea*\xc9\xba#\xb8V~\xa0$\x01\xe0\x9eo\xa2\x1a#.ax\x92\xa1\xeb!\x81G\x82cco\xef\xc4\xd2\x84s\x8c\xc5\"T\xbd\x1f\x89\xa7\x8aj\xf3\x18\x87\x86\x83U\xb1FE\x0f\xfc{B\xa2\x85\xe7\x11\xd8a\x04\xf8\x16\xc4L\xb4\xf2\x99l\xde\x0dw~+`\xf9\x9b\x1ew~\xfb6\xdc9\xd6\xeb\x129\xbe(*\xa5'\xa2\xfaa\xdd2ah\xf6\x84\xda\xdcL\xcf\xadO/\xc4S\xf5\xa1b\xc6\x1a\xfdc,\n\x01\x11\x8f\xd2\x00n\xb0\x95S\xe3\x1eN\x89SIW\xc9\xb5\xb3U`\xe4\x91\xdb\xb4KM\xfb\xe8\xad4g\xf8c]\x05\xf3J\x9f\x9dL2\x15\x7fY\xa5G\xe1![Q-\x95\x1e\xb2CH\xb9\x8b\xac\x11W\x84\x8a\x88z\xf1\x88Q\xae\x14v\xd0\xa3+\x1a\xa3\xf0\xc7:*wf\xc4P\xd1H\xb5\x1bu\x1d\xb4\x93u\xb3\x0e\xe9&\xaa\x9dBc\xf2\xfa\x89\xea56\xdd\xb45\x05\x10\x1e\xa3\xfa\xc3\xc6\x819i\\\xac\xda\x16\xaei\xa1\\\x02/Wf{\x9b\xad\xcd\xf6\xb6C\x14 CuB\x03x\xc1\xe8\xd6\xd5Q\xbd\xee\xe5\xaaC}\xae\x1f\x1eQ-\xcaW\xfa\x9e\x87\xee\xf1lJ\xd3\xf5(wM}\xa2\xeb\xdcX\xbcS\xbe\xb3JSU \xd8ju\xa7%|\xa7%l\xa7E\x0f!1+q\xcfDY\xbc\x14\x173\x82\x1dH`\x1f\x12\x83\x9e\xaf\xb63\xf31V!\xae\xee\xc6D\xab\xb45\n\xa3\xcd\x14\n\xd7\xb5=\x05\xb8\x8c\xfbS\x01\xa1qw\xa6\xad{8\xb9\x8e=\xdcm\x15$\xe4P\xd3\x1a\xfdu{>g{>w\xdb\xe3\xca\"\x8e\xa6\xe5!\x17\x8bC.\xd6\xee\x8b\xc2[\xc5a\xad\x19*\x96\x121\xaeeEhR\x84\x0c\x03\xf7,\xb1\xe5w\xafj\x96\xb5\xd4\xb02\xe8$\xbex\xb1A\x06-vq\xf4\x10\xb6\xbc\x08O\x05\xb5*#(\xb9\xbc\xbdHT]\x84t{[\xec*]\xfdR1\xe5F\x8e -LK}\xf5\xb5\x025I;C\xd5\xa0\xce\xf9\xa2j\x89\xf9v\xf9hh\xd6\xb0\x02\xdd\xb7\x1aQ\xd6\xa1E\xcb\x81\x8b\xc4\x9d\xd1q\x0f\xe0\xd2\x08\x15\x9e\xd3F\xf0R\x81\xf2\xe9\x7f\x01\xcaW\xea\xc8\x17$\xb0\x08!\xe0\xb6\xaa\xa6\x83\x80z\xa0\x14\xc6\xa8\x87\x0e\xcc[4J\xc6\x01#T\x8dC\xc206\xb6KbEK\xc4w\x89\xb1\xf2\xbc\xa4\x9b\xb1M\x9b\x84&\xb6Q2\xe6\xe1\x90\xc5\xd8\xf2\xea\xc0NR\x12~n.\xa8 \xdb\x1a\xc7\x96vy\xffc\xbb\xaf\xb6\xb0F\x82\xa6[l=\x10\xafc\xef\xe1J\xc0\xe3\xf2XmS\x18\xb6oT\x90p\xe3En\x8b\x8dkQ,\xf2\xa0<\xb1\x87\xb5\xafY\xad\xcb\x92\xfdMG\xee\x0c\xefZ\xd0\x805\xbd\xba\x8b]M\xd0\x86\x03\xe8\xbd#+\x12R\x18\x8d{\xb0_\xfe\xe2^\x10\x8aZh\x1bz\xe5=\xfc\x96\xdd\xa1\xd1\x92d\xd0t:^_\x9d)\xd71\xe1|\x08\x1a\x06\xbc\xd2\x8f\xac\xf4\xe3\xca\x85O\xa9\xaa\xf8jFe\xd5\x9a\xc7\x94\x05.\x13\xa9\xec\x1f\x06*#\xca+1{|\xaa\"U\xd2\xba6\xb2\xd7\xa2\xba\xe4\x0e\x0f\xa6\xab3\n\xf5\x91\xa6\xe4\x8c\xa4Y\x177\xed\x16\xb8N\xc9\xc5\xdb\xd9\xd5\xc1\n\x07\xa81\xdc\x19X\xbbY\x84\x19=\xba\x86\xaeJ\x0cm\xed\xf2\xea\xc2\xd4\xeeC\x88\xe1\x91\xb2\xc4\x10;i\"*\xc3\x8d\xeb'ZlUB\xc4Ns\xe9.\xe5tbU\xbb\x11k\xc9f\xc2#\x88%\xc5)Y\xa0X@\xc27\xd6\xd9\x83\xeb\x12?\x1c(l\x05\x9a\xc2H\xe9\x88\x87\xb4\xaaz\x87\x83&f*S=k\xda\xfb\x19}_\n\xfa\xbe\xbcf\xfa\x8e*cI\xde\xf9\x0f\x85\xbas\xed\xee6\xf4\xfa\xfd~y\x97\xc4S\xd8\x06O\x08\x15\xf3B\xcd{\x00=8YW>'+\xcc{\x84I\xe74'\xc1\xf2zO\x029\xdcR\x17 \xdfU\x87\xd28#\x96W:#$\xe7\xe0Q\xd8Q\xfb\xf6\xe1\x96\xd2\x9fq\x7f`\x80\xf4.7\xc8+d\x82\xdf`k\x84:\xf1\xd9\"\xd1\xd8\x1ejCv>wj\x87J\xd1\xa9r\xb8\xa0K\x01\x9e!\xe5\xd3\x80\xdb\n\xf0\x8c)\xef\xfa\xf0hX\xf8\x96.\xa9\xb7\x1b\xc0\xae/\x8e\xa7\xa5@\xeeSB=\xd5* M\x06\xec>\xd1\xdcG\x905\xcf\xae\xe5U\x0e\x9b\xb3\"\xaa\xb2\xb2B\x0d\x85/\x18\x031.\xc3\x1c\xd4r\x07V\x87\x03\xe1Z\x89N\x96\xece\xeeSa\x19((x\xba\x0b\x1b\x93s\x14\x1e\xa1qY\x8d\xd3\x8b\xe1_C5G\xd1w@\xfd\x87\x0c1\x94\x9b\x0f}\xc0\xd7(\xdcR\xdf\xb5\x12\xdcC\xea9\xa5J\x8f\xea%]\x145b\x99\x9a\xffg\xaax\x99\xeb1\x0d\x94UxEG\xd4\x9e(\xb7\xea\xb1\xf2\x96ao\x00o8\xac\xdf\x89\x9c\x19\x14\xd3\xe1\xc0+\x9e\xe8\x1c\x9f3*\x8e\x8d\xb3\x83\xef*Y\x16`\x9fw\xd6 \xc7\xe7a6\x7f\x9aLU\xc8\xc8[:\xe5bT\xaf\nV~\xe8\x08B3\xe3\xf9\x9a\xd6\\M\x11~G\xdccM\xadPji\xa3\xfe5\x1d=\xa5c\xa7/\xb7>\x1b\xc7\x0d\xa6\xc6\xfb\xa2\xea\xc1\xfa(;\x8c\xf3\xa5\x08\xc0Bw8\xdd\x13\xa7\xb1\x98:k\x07\xaf\xfa\xb5p\x98\x8c\x93)\xf9\xb0^\x11@\xd2\x9e\x9dG\xbc\xfeYq\xbf\xad)vM\xc2\x8c\xc0`\xbf\xf5=Ph\x7f?\x8f\xa3/99zf\x9e\xa3\xbc\xb0\xf9\x07\x1d\x9b\x9f&\x13\x0c\x18>\\\x10\xf6\x0f\x9fl\xedf1\x06k\xd3z\xa56\x88-\xa5\xac\x96\xf6=\xfd\xd7l\xb9\xb6\xb7?\xd0@=\xfan\xc2\x07\xbe\xf7?\xe0\xde\xb7\x84\x88\xbc\xa6>\xc3\xfa\x8c\x18=\x1c\xc1\xc1\xd1\xb5\x8aB\x7f\xc8\xfa\xc8C\xfc\x81.\xcfu\x8f\xc1\xde\x9b$\xde!<\x95q\x19H\x98A\x98\x12,\xfa\x86\xd9\xb5\xc9\x14\xc2\x0c>\x93u\xd67\xd5=\x90\xdd\xb3\x0d%\xa2\x8dy9\x89\xd2#$\x80\xa7\xd4\x14W\"/R\xec\x9b}\xd8\xb2\x04x\xb1k\x92\xc4\xb3\xe84w|\xfb<\x8d\xa8\xdb\x9b\x82O\xd7/>\x80\xb9\xa4\x1e\xa8\xe5\x0d+N\xf5\xddH\x86`\x93\x95H\x12\x85\x83\xd7}\xe0\x1b\x1b\xb2\xab\xdb\xd4K\x95\xb5\xdd{\xee\x87\xab\xd5b-\xd8xCD\xbfz]\x06\x162\xc9\xce\xc0\x16\xc8\xb6\x13\xc1\x8aSzI\xf2\x1ax\xff1F\x08\xd1\x042B!\x84\x98\xed\x83\x12rr\x8c\x90\xc4bOXQ\x9f]T\xce\xc1<\xfb\x0e\xf4\xc4z\xeaw:\xed\xa5\xf2\xb5 k\x8caP2\xdah\xf3\x01\xd4\xa0\xc5\xcb)\xb3&y\xfddT\x93\x96\xa5y\x18\xf7@\xa6}G/\xd2\xb7\x06\xde\xbeP\xc7\x10\xce(\xa9\x16\niiG\x03\x05\xbep{\x00\xdf\xf1T\x85\xfd\xc9\x829\xf3Ld\x15\x16\xd6\x97)\xdc\xbdu\x9d\x11\xfcW6_r\x85\xa7\x92\x01\xeau\xb82\xa6<\xfb\xfa\x8d\x96\xc5\xe34IJ\xcd,\xfb\x81\xa2s\x11K\xc3\xf36\xf9:\x93b\xa5\xeb\xacS\xd7\xffP\x93B\xd9\xe7\x94\x11z\x14wh\x1a'\x92\xaf\xa6!%G\xf8\xf22h?c\xcd\xdc\x92}p)Y&g\xed\x92\xb6f\xd6K{\xc3S\xb2 l\x02\xaeM7f\xed:\xe5e\xd7)\xf3N\xea\x0bbO\x1c\xcdE\xc8F\x89\xcb\x03\xe1\n\xe2K\xe3L1\x81\x11\x1d\x8bF\x1d\xc6\xd2D\x0f\xc3h0\xd8\x15\x9d\"E,&Gq\x8b\x8flA\xa2]\x12I\x9c\x898P.\x80-\xcd:\xd1\xbc\xd5\x17\x8f\x91\xbb\\\xf8\xe1\x99\x89\xe2\x99H\x19\x93`\xf0Hk\xc5\xd8\x0c\x86\x10y\xb6\xb2\xdcb\xb92\xbe\\\xc2Y\xb7\x19C\x06F\xa9\xe3\x94z \x03\xb2\xc8\x1b\x9c\x11\x1a@/\x8ay\xb5\xfb\xcfd\xfd3V\x883Cf\x82%\x80-\x1e\xa8\xec\xa5\x99\x98\xf2\x92M\x19\xa9\xd5\x84\xed'\xf3\x07X\xa0\xd4\x9b\x95\x0bhU\x94r\xd6e&f\xcf\x7f-\xd9/\xb1\xdb\xbd \xc3W/)y\x19\xe2\xe3\xd91 `\xa1\xe1\x01\xc4\x9e\x8fc\xd4\xe9\x1a\"\x1eE\xdfi\xd1\x9b\xe0\x9a\xea\x96\xd9\xfa\x0e\x98,Hh-J\xa44\xdet\x8b\xa1\xdc\x1fB\x1c8\xc9yL\xd2\xa3gp BaE\x0c\xe3n\xa0\x9e\x14CQ\xb4S|\x83\xc1\xfb\xc3\xf2\xac\xe0w\xc3\x05\x15\xf5N\xb6\xc4M_pw\xd6\xc9,Iz\xda\xaat\x90\x90\"\x02\xae\xb2ks>\xc0f\x1f\xbfF\xd5\x92c\xb6\xf3\xa4\xe8\x08\xfd\x97\xea|\xd2\xa0\xe9\xc8\xd1\xec\xaeJ\xa0\xec\x86pM\x0fFl\xa9\xd2L\x12 \x84\x03\x07\xad\xaf\xf8\xde \xf0\xf3e8\x90\x7fI\x1d\x0d\x12\xd5}\x88Gj4^\xb3\xa8m\xcb\xf1\x81M>#\x18,\xdbi\x9d#\xd2m\x8dY\x1fN\xeb|%\xd0\x17\xc3J\x88\x87b\x85\xe3\x88\xfe7\xa2\x02\xae\xd6\x81\xfa\xebzQ\"KR\xea\xca\xe7\x1c\x11\xef\x17R\x98\xfd\xdb\xdb\xfda\xdd\x81uT\x1b'\xed\xedWd\xa0\xd6 \x14\xb2\x16[\xa90{\xcdu\x11:\x06@.)\"\x16\xe9\x9f\x87\xd9\x13NO=\x1f\x8f\xa1\xe3c\x12gyJ\xde2z\xedU\x89\xb7d\xa5\xac\x03/zw\xdc\x83\x8d\xf3\xa1zn\xa8\xa3a\xa2\xd8{;\xd8\xc2\xecHjb\xba\xf5\xaf\xf6\xd3\xb22\x05\xc8\xba\xf5 \xce-k\xdb\xdd\x1c\x9c\xa4F\x84\x9c\xc3\x0dw\x99\xa7\x93\x17\xda\xb7:1+\x87{\xe1m\x83r`3\xb3H\x0b\x11\xe1\xc1v\x1e\xc1\x043\x043\xca\xe8l\xee\x01/\xfb\xd4\x02\x01e\xb5[\xf7\x96\x9cI\xc9\xe0\xe8\xb0\x15\x0e\xe0\x9f\xb4dmT\xb6&(\xf3: K\x83\x1c^\xad!%\xf7\x83\xca\xe0\x0c\x04\x83\xa3\x99N\x941\xc9}\x08\xcf5\x9eC\x1fi\x00?\xd0f2\xe0\xd7O~6TO\xfb\xc2\xdeV\x81dR\x0f\xfenN\xfc\x81\xc3oNH$*j\x18\x1f\x8c5>\xac @\x0c\x9d\x9cDt\x89\xe0\x90\x90\x8f\x13\xee\x82\x1c;\xf5\xf9\xcbU\xfa\x9c$yL\xaf\xdc\xe5\xcb\xabt\xf9\x99\xac\x7f\xe4L1i@\xd7\xad\xdb\x17\xd7\xd7\xed\xda\xb9\xd3\x1b\xed\x9d\x1eS^j\xb4\xdc9E\x84M\\\xfa6\x87\x93\xcf\xc8\xbc\x14\x14\xe5'\xea\x89_n\xda\xd0\x1f[S<\xf2\nH\xa6}\xac\x0b\x025!\x0f\xad\xa9,$fGAA}\x10u\xa9FM\xd1\xd4Q\xf8X\xe4\x0c9\x84\x08w\x9bN_a\xc0G\x11%^\xe8\x97\xf8\x82\x06\x10Zy\x15&Qq\x89\xcd\xd3~\xba\xcf\x10Q\xac'e\xfc\xc8\x85\x17\xfa\x01\\x\x0cU\x18\xc4_\xc8\x1c\xae#\xf6\x99k:wB\xec;\xbeVy6\xf74\x9eEF\xf2\x92K\xa0En@\x8e\xac@.v=zm\x95j\x95\x9b7\x01\xb3\xb0V\xd4+<'c\x91\xd8\x97o\x7f7\xce<\xb1\xef\xeeR\x9433\x15\x002\\\x0cu\xf8Ue\x1a\x8e\xb7\x92\x8c\xba\xf2\x9c\xab\x84\xcc\x9ax<\xb9\x8a\xce\xadjx\x9e\x8d2\xf2\x85\x1e>jY9\x13@r\x97e\xe1\xdb\x1c-Cq\x7f\x16\xb1\x93\xc1\x01\xfd\x8a\x8f\xcb\xc4\xb9\xcdA\xfa\xbeb\xedb\x07\xb2\x9af\x17\xe9jy\x8am\x18\xa9\xc0\x94\x87\xca7W7\xb5\xa7\"\x1a\xaa\xf8\xc4\xb6\xe2\x80&pq\x1e\xa5U\xabi\xab\xf7pE\xfe^\x8a\x1a\xa3\x08x\xec\xd2\xf8\xad\xc6e\x02o\xabA0\xa6\xa5\x93\x17\x95n\x19\x86\xf4\xb1\x97\xd5z\xd2\x05A\xc3\xb2\xd2\xf1(\x1a\x17\x0e!\x9a\x81bf\xf2\xca\xd1\xe7\xc5\xa3]G\x89#l9iA\x84\x86x\xf7\xef\xde\x7f\xf0\xe0\xf6\x9d\xbb\x0fx,\xcf\xce\x10\x03ax\x1c\xcc\x9d\xdb\x83{w\xef~\x7f\xef\xae\xef3f\x0f\x1f\xec\xc1M(\xbeQ\xee\xdfa'\xd3\xde\xdd\xbd{w\xee\x0en\xdf\x0d\x80\xc2\xb6h\xea~\x00\x83\xbd\xefy\xf3\xf2\xde\xe0\x9e\xdb42\xe2(\x85\xa4\x02\xc5\x0fm\x15E\xa3\x11\x19\x0b\x01\xa3\xd6\xbb\xfa\xeb\x0b\xba\xba\x08\xde\xec\x0b\x15\xe6p\x18\xb2\xbf\xb9\x15.(\xffD\x9dz\xf1\xd2Q\x1c\xc0\xef-N\x11\xe6\xb9T\x0eCUz\x17\xc7\"g.\xa2\xf2X\x84G\x90\xf3\xd3\xd1HH\xa7\x88\x9e\xd1(\x193\xd4)s-\xb2\x1b\x03\xe7R\xe6\xb5Y\x19\xcd\xf0*\x1fi\x9d!\x16\x1b\xe1;6\xc0\xd3\xb9:\xdd \x9f\xee\x0c\xcfc9\xdd <\x02\x8cm\xda\x9abB\xe0l4\xc1I=\x84\xc9\xf6\xb6\x81![\xc0\x90\x7f\xa7\x17\xc8\x16p\xc0\x9b\x19\x8cq0\x11\xec3\xeeWQN\xea\xbf\xe3|\xb0\x17\xa2g\xd4\x02]\xc9.\xbc\x84IQaIH\xb3\x96\xec8\x18\xc4\x81\x0e~[!\xfb\x7f\xe1\x9a\xf0x\x08\x13]\x98\x8a\x15y\xe4\xc5\xa5Z\xe9\xb1\xf8\xdebp\xaf\xa0\x9b\xe0\xfah\x00\xe8\x88\x1a\xc0\x88u4\xf6+\x1c\x19q\xe1\xc8\xe4%\x9d\x0d\xc8\xc8\x94\x00O^\x11b\xb5 \xff\xb4\"\xa2\xe6\xa8h\xc9\x8d\xd5?@\xcbE\xc9K\"\xbb\x9e6\xb3\xae2\xabQ\x9eMa\x05\":LQ\xf0J9\xd3\xd81\x93\xf7V\x0c\xb7\x90\"em6\xff\x03\xe4\xaf'\xc2\xf6\xbf\x03\x038\x80y\x7f\x95\xf0J\x10\xf3\xd1\x84Q\xa3\xc6\x8d\x11\x1b9\xe3\xc7\xe7\x9c\xc1\xe4\xbf\xfd\x00{\xf6j\xda\xbfyi\n\x97\x02s\x00\xf36\x96\xf42\x80_\xafL\xce\xb4\xd1e\x88]\x86\xcd\x8aB=\x13W<\xafZ?\x9cG~R\x94}\x0c\x9a\x91D\xd2\x10\xae\xe95\x126\xd60\x93snr\xee\xae\x08\xcdF\xe5\xec($\xfc\x11fF\x1e\xf38..#\x11\x1d;Q\x07\xcf\x95\xe9b%3\xb4L\x00\xfd\x84z\xa9 T\x8a\x80H\x04\xcb\x13#\x90\x88E\xaa\xcc$|C\xfd\xf3I\x15\x86\xfa\x97f\x18S\xb95\x04o\x027A\x87\xdaH\xd7\x90PGue\x8e\x96\xa0J:\x1d\x12\xde$\x02_\xdf\xf9J\x8e\x10\x97K\xff\x0e\x1a\xdd\xe1\x00V\xa3\xc5\x18Z\n\xb1sE\xd9\x9c\x9b\xc5\xf8BW\xd7J?;\x1e%>w8(8\x1c0\x94|\xa5\x90\xf7\x99\x95\xbc[\xdc\xbc*\x15\xbf\x04C\xc0\xf63\xaf7\xb3\xf6\x03\xc4\x8c\xdd\x87\x82\xd5\x8f\x1fB\x88i~\x18n\x0ca\xe0C>\n\xc7\x88\x067Q\xb3@F\xc9\xf6\xf6\xd8R\xb3\x0e\x14\xa1t\x94\x8e\xb9\x8a\x8b\xf5\xc8M\"\x98\xe3A\x1f\xcc\xcf\x1e\xaf\x02\x98\x04\x10\x0605@R\x9c\xe7\xec\xffj\xb9z\xb5H\x7f\x93*\x11\xb4x\xb2\x04\xb6\"\x12\x0df\x81c\\\xeaWxS^q\x0eRQp.W\x88?{k\xe03V4\x1fc\x9ck\x0e\xdb\xc6\xd4\xb8\xd0~xs\xa8iA\xd6\xc2!\x15\x1c\xb6\x84\x9a1M \x14\nu\x84\xda\xb6@\xaa\xa8\x84\\!P\xb8\x80.\xa9\x80\x8e\xab\xd6\x10tb\xcf\x86\xf0\x08\"\xdc\xb1>\xbb%h\xbb\x97\xf0-\x1b\xf3\xd7w\x06\xa8\x9d\xe5\xf7\xe8(\x84m\x97rn\x86\xc2\x1f*\xee\x19\x8f\xcc\xe3\x82\x9d(\xac\xa8'5\x93\xe6y\x95\xbb\xe0&\xda\x93\x00\xce\x1b\xe7\xe5/\x7f-;aa$Z\xf8\x08\xce\x10Df\x11)\x81\x03Ht,\x82\xceo\xf2\x97\xffel\x82\x94\xcd\xb4/L\x1cNa\xc6&LF\xa1\x81Lg<\xf8\xc6\x911\xa0\xc4\x9bu=\xa2\x85#\xadC\x0f\x05O\x81\xf6z\xc3\xb1\xd2.\xc3\xed\xec\xac\xe0\x11,\xae,\xb7U\x08\xecn\xa0?\xe0cy\xc0s\xa1y\xc0%\xe5R,c\x14d\"\xce\xfc\x0c\x1e=\xc2#\xbf]L\x9b\xa1\x98\xa6[\xac\xca\x9beT0\x1e\xb3!\xfe\x89\xb4\xd1\x8b`3d\xc2T\xce\xf9 \x06yc[\xad\xf2ZIB\"-k\x01\x92\xbd\x98 \x87\x11\x1a\xcd\x8c\xab\xedm\xfd\x9a\xcf\xbb\x9e\xf2\x8cS\xcc\x88\xc7\x99\x99\x05\x93\x9c\x8cta^\x90K\xe9\x00\xb2\xaaQ\xcbi\x95ZrNj\xc5\x98\xa4:\xd9xyej\xf9\xdf\xacKz\xf9\x9f#\x86\x82\xae\xe9wy\\\xe6Z\x14\x86\xbab\x8e\xa1\x92\xc0\x8f+\x7f\xb8\xbe'&\x8a_\x1d\x0eZH\xe1\x9a1\x14K\xf2\xff }WXr\xee\xb3\x8a\xd5\xf4E\x99\x97P\xc0\x92M\x80\xb1\xee\x13\x93\xf1\xb4\xb3\xa6\xa5]\xcb\xf2\x1f\xd4\xb0\xbc\xd4\x00`\xde\xd8\xe0/\xae\xbc\xc1\xa5\x18\xc3\xa3B\x0b\x9f+\x86 2\xa2\x8e\xdf\x18\x8cu\x0c\xc9\x8b\xeb\xd9\x835U\xaev\x99\x90\xe4!\x06W\x87i\\./\xc3\xea\x19\x05\x12(\xf3\x08\xfd\xc6F\x0ce\xc0\n\xc3H\xd8\x87\x0c-\x01Z4\xaa\xac\x1a\xb68,\xca\x10\x89e\xd3\xe1\xadXv\xde\xa5f\xd7#\xd1)w~c\x91+\xba\xf3\xd2\xb9\xf6\xa5\xfeve\x0d\xac\xa4=n\xd0\x91\x94\xd3\x91\xa8V\xb6\xe8!\xa4\xa2\x84L\xea\x94\"9.\xea\x97\xa0\xe7\xc1X\xadwY\x9f\xdc\xaf\xfaY\xfcrm\x93\xe3L\xa6\xdb\xd4\x0c\xbcN!|\xd5\xe6\xa5\xe7w\x18(\x12(\xb3\xcf$\xfdJ9\x06\x13,@\xa7=}qE0H\x8a\xac\xa0k\x03\xad\x88w\x83\x06\xf0\xd5\x0f\xe0\x86\xdaKL.ZS;\x14P\xa6\x12\xca\xe8_\x19\x94A\x02\xdc\x99\xf2!\xd8\x8b6\x88\xfa\x13\x04\x17\xc9\xac\x0e\xc7\xd4\x98<\x0b\xaa\x8e#\x03)f\x8b\x89Z8\xd6\xa8\xa8\xadZ\n\xe1\xdcg3\xd5AI^\x97en\x9bT\xee\x96\xb6n\xb0\xbe\x99\xa8b!>Q\xf0\xce\xd7v\x1f\x91l\xc4\xc1'\xddS\x0f\xb0\xcc\x1e\xafy\xd6:6\xb5KD\xfbj\x87v\x95FR~f\x19\x83]\xd1\x91\xb4I\x0b\xf8\x92\\\xa6\n\x00\xe4]\xbb\x0cQ\xc3/\x18\xc2O\xd4K\x8c\xf6s\xb0\x8a\x0b\x93$\xa6Q\xdc\xa9\xf8C\xb3\x7f\xe5W\x9f\xfb\xcc\xb6\xecj(\xb7\xa7ic\xb4\xe6J5\xe6I\xad\x11\x90*0\xd9*c\x1e\xea5\xdc\x82;\xcd\x96g\xf2\xd9^\xf3\xd9\xa2\xf8\xce\xe4\xb9\xbf2x\x0c\x9c\x89\xd8\xa1\x0bc~=\x87<\x96\x9a\x88Z\xf6\xe5\x9cxJ\xcaI\x8d\xf0-O\x82\xc8\xa3\x96\x0c\xa3\xb1\xbd\xc6\x03\x1fL*t@\xde3~\\\xa7\xf0\x98g\x8dN\xe1\x11\xac\xe1\x00\xce\x89\xb7\x8b\x0c\xcfY \xe2L\xb1\x10\x04\xf1\xe2>M\xb8\xfc\xedcYZ\xd2\xd9-\x06\xfdD\xdeG_ \xf6\xacI\x03\xd2\xa6\xe9-4\xb5-\xfe&:/\x127O\x8b\xb9\xddaD\xc9\x032%-y@\xd8ArN\x19\x9bL\x1c\xf2\x80(\xc2\x87g\x8e\xb1\xe49\xbc\xc4\x11\xf7\xad9-^E\x19\x85Q/\x80\xde\xb8\x99\xd4\xa2\xd2\x93cR\x8bH\xd6\x8a/\x93\xe2\xfbEVrZ\xcdJn9M\x99\x00[\xb0\x96\xe8+\x83#O\xd2\xe842y\xb6I\x99\x8b\xf5\x14\xf7y\x99P\n7\xe1T\x13\ni\x02P#\xbbF\x05\x06\xdd\xb2k\xb8\xda/\x10d\x84\x83\x8c\xb3U\x95\xaa\xf9&\xbfo\xf4\x0d|\xac:\xb1\x11x\xa4d\x83\xed\xee\xb2\x06x,<\x82]8\x80\xb7\x82\xc7\xc3m\xb6+\"L\xdfJ\xa7\x04\xb4\x00\xf0gD\x1b]\x06`N\xb0Gp=\xe5b\xea\xdf)\xed9\xc74\x8c\x16v\x86J\xba\xf7\x1b_J\xac\x81\x02\x08\xc5\xcf\x18%0 W\xe1$\xa2kn\x10\x1f\xc2{t\xc2\xabG\x0dpy\x10E\xac\x88\xbf\x14\xd5^\xa2\xfd\xe3\x059#\x8b\xf2]\xf3\"n%\x8e\xe1\x06Q\xfa\xd0Z\xee\x00\xf8\xd8\xd6\xba\xd0\x13\x8e\xc6\xec$\xd3w\x13 \xbf\x0b\xae\x8a\xd4\xf7\"\xaa^\x98)y\x0e\xea(F6\x03\x16\x16\xa9\xcf\x19\xdd\xca+`F\xd8\xc2\x0e\xea8}\x1fG\x83o%\x15P5\xa9\xb2v\xc0\xdcJ\x169@9\x84!\x1c\x96\xb9\xb3\xf4\xf3\xdfJ\xf4*\x95\x8a\xe3\xc4\xeeC\xc8\xb8\x8bi\x86~\x92\x02\x16\xd9\xb8\x10\xbf\x8c\x049B7\x91\xb0\x80\x1e\xa3\xf1~\x00a\x9d\x82ip\xf4\xc9\x8c\x92\xc6\xf1\xde\x8a\xa2^\x15G1\xc8\xf8\x1b0UX?Q\xa8oA\xd8\xc8\x8e\xb0\xfaN\x9cp0\xa9\xe2\xa0\xc9\xa2\x848\x98b\xb2L\x86]*\x185(\x88/Ez\xc8\xa0\xf1\xab#r\xca\xcdbE9\xd1d.z\x13\xca\x8a\x08\x95|\x81\xf0k\xcb\x8bi2&\xca\x0f \xaf\"K\xf3x;%\x01,I\xc0\x98\x06[\x1a\xf5\x13\xf3iU\xf2\xea\xf2\x10\xd7BX(\n\x8b\x93]\xbf\x0c\x80J\xbe\xd4\x165\xc3\x0f}3|*\x89D\x04\xe3\xb0\xeb\xd7&\x06\x95\xb8g6\xb70\x00\xa3\x8d\xb5\xa2\xc7 +\xe5\xac\x0c\x9e&\xf2\x92\xc4$\x17\xfeK\x07\x12\xc1\xf8\xf1\xbe/\xa3\xdc\xf1\xa7\x99G\x05\xe1\x97\x92\x8b\xca\x87\xbb\xe8\x19\xbb\x03\xb9\xfd\x93 F\x9a\xee@n\xe0\x1b\xf1\x95\xc7\xb0F\xdca/\xdb\xec\xa1\x02\x08\xad<\xbc\xbc\"t\x9ce\xd3\x9e\x14\xfb\xe1\xd8Rt\x04\x14\xb5\x04V{\xdc\x99\xc0>\xa3\x9a\xf6OD\xcb\xe8\xd9\x15\x8e\xa8>W\nh\xb7\x1d\x80\x0c\xab\xab\xbb\xe5G\xa89nYV\x11 \xea\xbc\x80\x13$/\xd5\x05L\xe0\xf1c\x88\xec\xdf\xcd0\x00f\x9b\x1d\xeb\xf2\x03\xcb2\xcd\x8a\x05\x9d]\xf3\x82\xe2\xb9\xf6\xd0\xe8`\xa1^l\xed\xb5\x19]tW\xa1\x8b2 }\xf5+\x12E\xf6\x98\xa8\xd3\xa6\x90\xaf_\xa1P\x85\xb6\xbel\xb6\xe3\xcb\x8b\x0dcR\xf3%lCpP\x08&G\xf2\x19\xec\xc3\xa4\x0d\xc9A\x8c<\xe7\xae\xe8\x19f\xde\x8f\xf8\xa1\x940\xd4\x88\xd9\xa9\x1d\xf9f\xb7\x04\xb0N\xc9\xb27\x90.6\x1e\xbb%\x948\xd7&\xfb1\x1d\"a#;\xd7\x99E\xa3\x10J59;\x9b\xd98UU9\xfeTT\xe5\x04oH=y\x8c\xbf\xca\xacGa\xa1$\x8f\xf0\x87\"5&\xfc\x86\xd0\x97\xe7\xfcW5\xb9W\xe8\x04\x8a\x0bb\xd3\xa8\x9d\xa2i\xd0C\xc5\"\xb7\xeb3\xf1\xcd\xd1\x14\xfe\xbe e\x13\x88s\xee\x8f/\x92\xf3\xd8c*(w\x9a\x7f$\x89\x9bT\xcc6>@^\x18\xf1R\xf1\xa5\x88l\x1b\x93\xb3\x9c-\x9c\xdb\xa4F\\G\xa1%c\xce\x8c\x9b\xf8&\x1c\x0e|cHXX5I3~B\xc9\xbcQ\x9ed\xc3\xd0\xc6[t\xccXi}\xd8\xa0iE\xb3\xea\xc8\x8b\xe3\x9f\x96n\x99jWA\x05v\x1c\xf2(\xec4xK8(nJ\x13Y\xae\x8e\xb3\x19\x83`\xc2\x9bC3OW\xa8\xd9\xd0\x1f\xa0\x88\xc1\xa3\x8ag*\x15\x1e\xa8k\xe2\xf1\xfc\\\x82-E\xae\x94\x8d\x8a\x89\x97\x8d\x02P\xfa\x91<1\x8f\xa4\xb0\xa0\xd7l\xbf\xaaeU\xcf\x0f\xf2/\x1fq\x81F\xb2\x82\xb0\x0dg&\xa4\xab\xfarJ&R\xf0\xad\xf8\xf5C\xee\xb7\x80\xae8XXuX\xf80\xf0P\xad\x14=\x19\xd8G;C8\xb3\"^[\x99wcE/k\x92\x1e%\xe8EF\x9d\xf1r\xc7\xea\x13\x19\x7f`(o\xac\x98\xf5\xd5t;\x98\x9f\xc1\xcc\xb6\xb7\xb0\xff\x89\x0b\xfb\x8f1\x1e\xb0m*\xce\x10\x1623bc\x8c\xdc\xf4>\x9a\x8dv\xf1\xefm\x0c\x19c-h<\x16\x18>\xe4\xf5\xfd\x95\xb4\x91\xa9\x9c\xe1\x9e\x12s\xc0\x0d\xbf:N\xa5\x1a/Q\x88\x1e\x13\x15\x99f2\xe8t\x1bfl\xd4\x0f}|.\xf6\xd1\x84\x8dkR\xdd\xf1\x070\x92\xc6\xa3\xc9X\xec*&\xd8\xcd`[f\x1f\xc8\xd8\x9fg\xba\x11q\x99\x90=\x9e\x05\xbc\x8c\xfa\x8c\x1d\x00\xfc\xdf\x04\xff\xb5Md\xc1\xa5\xb1\x04#\x08\xf0\xcf\xd0\x7f\x08+\x06\x11\xec9c\xbb\xc9i\n\x95\xa1\xf3\xf1\xea\xf1n\xde\xe6N2\xc5 \x8aG\x18#\xc1\xc9F\xc8%\xee}60\xbc\xad\xa8\xb70\xba\xd1pda\x905\xff\xe6\xe6M\x8c\x03F\xd1l^SA\xb4\xd0\x8a5F\xb0 !\x9f\xf0\xe9-a\x08\xd9CX\xc2c8c\xff0J\xd0&K\x1c\xc3\x10\x16HA\x96z%\x89\xbcXwkAr\x8e\xc7\xbc\xdf\xf2\xb71\x81\x94\x9e\xbf\x93\x1f\xf2\x9e\xcf\x90v\xc1\x10\xe6-\x94 $\x83/A\xe6\xb1E\xc1(\xf6iEq\x92\"\x1b\x13\xfax\xd6=\x1e\xc2\xca\x87\x9c\x81c\x85\x8b\x86\xfff\xdcmaR8(4\x9a\x12z@\xde\x96.|\xb2pGf\xc2q\xc4(\x15\xe2\x87u\xe5\xc4>\x9cX\x85\x19\xb60'\\\xe8~\xfc\x98\x1d\xe8\xb6\x85a\x038A\xea\xba*_\xf7\xe1$%\xe1g\xf3W'BP\xdb\x1e\x82\xc7\xb7\x94\x0f\xdf\xc1 n\x92\x9d\x022b?\x8dN\xf4\xc2\xad~q'\x1c\xab\x1f\x0b5\"o\xa7\x0e\xd2\x8c\xad\xcc\x0e\xcc\xd8\x12M\xf8~x\xc4\xf7C\xe5\x83b93F \xc4\xfb\x92\xba\xec\x08\xaa\xb2\xa3\x8d\xa2\xec\x9c\x924D\xb5Fy\x9cp\xb6\x9bV\xd8\xf9\xb0\xd4\xed\x00\xc6q\x96\xeeU\x13\xd5\xbdj\xea\xea^\xc5\xc8\xc49\xf1r.\xee`\xa4f=\xba\xd1p\x1c\xff\xe1\x96/2U\xf3EV\"\xe8\xcb,k\xa1=\"\x04\x93b[\x99\xe0 Z\x01M\xe9{&\x1c\xc2\x8f\xc5\x9eMp}E\xa5\xbf\xdc\xcbxJI\xbe\xea\xd7\x9dR2\xe5\xf1h\x93\x0e\xe8\x91\xc0c\xe94y\xf3&O\x10Uz%'HR$\xe4\xebYn\x0c+\xf5\xb9-\xc5\x1cw\xab\xdeE\xa5\x9c\xd4Y\x9f\xb1My\xe6\xd4\xfe\x91\xbd}k\xa1\xc7\xa7\x9ce~M\xca\xfa\x8e\xecVg\xbf\x9b\xb3\xff\xf5\xf5\x1d_\xdb\xa1X\x94\xc2\x9c\xd5\x11\xce\xd4\xe0\x07\xd7\x94|U\xd5\xc3\x91bT1+!\xca\x14\xe1(\x02\xe1\x8f}\xb4\xdb\xf7\x8fy\xea \x9e;|\xc1\xed\xcb\x0e\xb9\xc3\x9d\xe6\xf4\xd4\xaaLXre\xc2\x92\x8d\xeb\x03\xf1xu\x9b\x0b\xe25B\xfd\x0c\xad\xffl\x970\x84i'\x90,\xbd1\xf5R.\xf8\xe0(3x\xfdb=6LIA\x0c\n\xff\xac\xe4\xf8\xd9\xd1\x1a\x9aT C\x9e\xb7I\x8f\xb7\\?\xd1\xa6(\xcc\x05y\x1cr\xedi\xf9s\x0f\xbe\x83D:n\xa2\x8d\x88\x1b+\x9b\xc9O\x0d\"\xac\xbcD\xff\xca|\x84\x8a\x05\xa55\xc3>\xf2\xfb4yI\xd6d\xfa\x9e|\xf1\xfc\xee\x94\x99\x8ev\x0d\\\x83\xdf\x9f-\xa2\x95\xc7:x\x1d\xf2|:\nn2\xa2\x9bVp\xb5\x8a\xb9\xaa\x933:\\\xa0\xf1L\x96}c\xd4%\xc2\xc3\x9c+1\x14\xe7\xde\\Q[0\"\x12J\xd1T\xa3\xbcTb\xcd\x8c\xb6\x99\x12\x01rD\xa5\xd0\x1f\x0d\xc6m\x8b\x9dr\xd5\x1e_G1\n\x9ej\xdd8\x08>?\xe1L\x9fK\x12Z\xb6\x90\x8bB)\xa2\x19#\xc90\xf1=\xa9,\xb4\")\x07\xf7\x0d\x17\x94#\xd2s2\x0c\x8c\x1f\x90\x93s\xcc\xbc\xfc\xae\xc5\xeb\x04\xdd\x95\x14\xaf\x93\xe3<#/\xc9:SJYH\x8a\xd7L\xe2k\xea\xf4\x8d\x81\xa6k{\xec\xde\xfc\xab?\xb7\xf9g\x7fn\xf3_[\xe2\xd8\xfeAl)b\x89:\x02R\xed\x9e\xdd`[\xbc\xcd\xabSi\x8e6\xb1?\xc0b\x8e\xb2xIkCgE\x99d\xf1\x91\xac\x7f\x86\xdeg\xb6\xbe\xdd\x07\x0b\xean\x12\xddx\x06F$\xd0U\x14as\x9a\x87Y\xab\x1b*\xa8\x1dE\xf1d\x91OIV\xafj_\xb4(_\xe8\xd6\xec<4\xb78 's\xf2\x8ed\xf9\x02\xf9\xdf8\x00\xc5\xa3\xf0c\x8c\x8f+e\xbbl\x11L\x85ZO\xebL\x01U\n\xd5\xa8g\xe5\xc8\x18\n\xafC\xf4\xb5\xa7fu\x84\xb1\xd8\x95\xe2\x9d\xdau~\\\xdf\xcb\x0e\x82wmR\xbd\xd4n\xca\xaex\xbbf1]\xb2\xf0nN\xac\xf2\x92v\xcd\xd4Z\xbeV^\xc8\xa5\xd0\xd6:\xb6\xf2*\xf7\x19\xba\xb9\x8ev[\xb2!\x01\x86u\xcaw\x95\x0f\x07\xe3@\xf9\xbb\xe1^X\xbf\xecfQ#\x19\x91\x97)\x8b\xb9\x1b>\xb2\x95\xc2\x15\xfe\x99\xc9L\xb0\x0f?\x1b\x11\xa9r\xd3D{\x9f\xb7s\xba\xad\x148\xad\x13\xdd\xb4;i1\xd3\x80\xb4\x1e\xd2\xe9RT\x99\x97%O\xcd\x85~\x0b\x19{(r\xd0G\x18&\x8c\xbe\xf6\xbc\xc4N\xaa\x15\xedp@V\x02\xe44\xbc\xab\x12\xa0\xa8\xc5\xd9\xa6J\x83R\xaf\x9c\x91\xfcXX\x04MD)j\x99\xb2\x9e(9\xcdY\xc5\xe1w\xe6\x14\xce\xdd)\x8d\x14_\x93V*\x83\x8ev\x82\xc0H\xf9\xd5\xfc\xf6\x99\xf0I\x8b8m\xb0\xbb\xa8\xa0o\x82\x95\x06I\xf9\x9dA+\x0c\x14d\xcb\x91\x02\x85\x0c\xdf\xb4\x0b\x00\x06uB\xa3*\xa2a\x8f\x7fl\xf7\\\xb3o\xf0Xe\xb1\xe2\xfan\x8f\xbb0G6.\x8br\xf6\x07-s\xce\x9c\x90<\x05\xbe\xeag\x00*w\xd5a\x9c\xa0\xeeE.%\x9a\xb6\x8c\xae\x8c\x07\x83J\x8dl\xd9\xd2 \x16=\xa1&@\xe4}\xdc\x19\xc0\x8e&\x855\x08\xee\xa1Nc\x8d\\A\x95\xc6V\x1a7\xb4|56\xae\x85;\x8c5\xbc\\\xac\x8f\x0e\xf9\x8f\xf3p-\xc5H.\x03\xd82\xc1N\x1f[d\x9b\x91\xf6\x8c7\xf7\xe0\xb4\xe5\x7fpU\xf9\xb5\x9c\xec\xb8\x19\xa3:\xaa\x19\xf1\xf8\xacH\xd4\xebv\xfcFxL-Y/[[%A\x8c,\xa7o\xf4\xe7\xb2\x03\xc5x\x9a\xbc\x80\xb0\xb5kJ\x0b\xf9\\\x87ia\nl\xde\x94gJ\x9c\x80\xf9\x8c \xf5Uy\xa1\x1d\xe1\x13\x8b[/H\xa9A\xe5\x13\xf0\x832\x91\xe2\xf6v\x00\x91\x87~ \x1c\x02hn6\xe7\xf9dS\xad\xfb\x84\x81\\<;\x1f\xe1\x04\xa6\x1a\x1f\x91X*/\xb6\x03\xad\x03\x9b\xe1\xe8\xfc)q.o\xe5F@\x06eT9\x92\xc4\xfe\x854\x84%.\\ \x08\x9bX6\xda\xb5X\xcd\xe4\x85\xd9,\xb5\x89A\xd5\xab\x8a/34\x15*9\x81\x9ecED\x91[\x1d\x91gfd8\xc1(\xf8\xe8\xf9\x1d7\xdb\xc0\x17W\xe2G\x0d\x11\xa7l\x86\x9d\xdc\x88\x98\x101\x80[\xe8\x83\x83\x81\x88\xe8\x93#\xde\xff,*\x98E\xady\x93\x18\xda\x1c\xf1:ff{\xc2k\xa4\x90\x86\x80\x1cF\xc0 \x81\xcd\x06r\xf6W^\xf4\xc8`\xd2\xa7 W\xa1+\x07\xb1\xe7\x97\x90\xd2\x0fJ8y\xe7\xb0\xa3\xc3\xcc\x0c\x86C\xee\xe9\xe7\xb1\xcd\x96 G\xa4]\xd8\xd7V\x9a8\x13^\x8d\xf6cg\"Y\xcc2\xdc \xc4\xcaZ\xd2\x18\x1a\x96\x06\xc4\x00\xb6\xf0\x94\x8a\xa4Y,,\xd2\xf8x\x93\xfaY\xe1p\x0c\xcb\x0c7\"\xdc\xb4L\nDDQE\xc9\xa4m3:\x89\xe9f4~l~\x00\x93o\xd3SEV\x1e'*\xb2\xea\x95\x8eY\x06B\x87\xd6\x81J8Nu\xfd\x95S\xc3\xa2\x03\x92\xd4\xd7\x12E\x9cqW\x02\xe3\xf3I+1\xbe\x12\xcb&|o7\x1b\xd8\xc2r\x90\xf9\xf66<\x82\xa4\xdcl\x13F\x83\n\xad\x9c8\xc7b,\xf8\x80\xe7X\x84h3\xe1\xe65\x031\n`\xa2\xa3G\x93oT\xd6 \x9b\x1e\xeb\xdfi\x89\xecz:\x896J\xabM\x15\x9fy}\x1c\x96\xf7\x9a\xcfR\xb9V\x0f}\x88ZOK\x06\xaf\xed\xed\x0c\x1e+(\xdfv\x12;E\xbfC[\x04<\xbb.\xedj\x024P\xb5N\xa1\xe0\xaa1 \x96\xd4\xe2Q\x0c\xb0'\x01\xaf\xa3\x13\x88'Oe\x92\\\xf4\xc6P5\x95]\x14\x04U\xac5\x1d\x98\xbf\xbb\x1e\x98v\xb2}M<\xb0\x99\x8c%.{\x84x\x16\x97\xf73\x11da\xa3S\xed\x88n\xe1\xb4'\xad\xa4\x8a\xa7\xe4\xc6\xd3\xb2\xceuO\xfc\x92je\x0d\xb6;\xb3\xb3\xdd~\x00\x9a@\xcbk\xe2\xb9\xbf}Y\x92\xd4e]\xba0\xf7\xdf~\xdet X\xb8\xc9q\x914\x89\xda\xe55MZ(R$\xb3\x0e\x86\x82V\xf8U\xd6\x1f)CT\xa3\x0cQ\xc0\x8f\xb0\xa8\x8d.\xb4\xcb\x0d\x8b\xd2\xeaa\x7f\x99q\xa2\x0b\xac\xe47\xc3\xbfX\x07\x9c\xcb\xcb*x;\x13\xf1L\x16\xf6\x1e\xce\xe7\xd1\x82\x80\xd1)\x0fTu\x00\xda\xae\xd4\x99'\xd8G'\x9a\xe7&$\xfcz-\x86\x8fo\xb6\x04X\xf0\x17\xe9\x94\xa1\xce\x91\x18@1\x1b\xeae-\xb4\xe7LT\x0d1oeve:\xca\x16\xb5(\x10@\xe1\x9e\xb7\xd0\xf3j\x02\x8f\xb0`\xcdM\xc8=\xac\xda\x87e\xf2'\x18\xa8\x0d\xfb2M7R\x84X\x94\x03HPR\xf4\x0bIbk\x17\x8bs\x9a\xf1\xca\xac*g\x0b\xcb\xben\x96P\xfa3L\x19\xa9Y\\\x03\xb1\x8a\xa3\x96B\xe7\xd7F\xa5\x04[\x958))\xa8\x93\xc9\x04\xe4\xb9%R\xcdw2\xcfN\\\xe9\x0d\x88^RA\x01\n\xf7\xeb\xd1`\xcc$T\xd4\x10z\xa1\x8c\xa7@\xecb\xc7h\xeeM\xca#3.\x08G\x1a\xf0\xf3s\xd2N\x16\xd9\x15r\xe7\xdcD\x94F\x9b4\x96\xd7\xda\x82\xf0\x8eJ\x90\xac\xa3g\x97\x19i\xdb(`\xdb\xaa]#C\xdb\x81\xa2\xba\x99\x99~\xb1RT\xee\x91\x89\xd1\xaa:\xf9E\x12\xdc\xd0\x986:2SK\xbe'\xa5v\xa3\xe2 HZ\x8a8 \xb8\x8fR\x1cy\xc4K/\x1e\x00\xffP\xb8\x97\x11\xa3\xfb`\x91e\xdaxD$\xfd,I\xa9\x9b4+>!\x1e\x1d\xdd\x1e\x07\x10\x8fn\x8f\x11\xcb\xe9ho\x0c;\x10\x8f\xf64\x19\x82\xfd\xb2 y-+\x83q\x97\x96;i\x08{\xcd6\xeb\x15\xfal\x0d1\xd0\x8f\x06\xba\x81q\xce\xf5\x85\xa8\xf1\xc1\xdd\xbao\xf0_?z5\x85\xa0 \xa7^Zq\x8a\xfb\xbb(x\xe5b7\xfa6\xed\x82,u\xe0\xdcRG\xe0\xcaK\x02\x99\xad\x0f;\x99\xe0w\x0fC\xd8K\x9fK\x86\xef\x96\x03\xff\xea\xfa6\x07\xf6\xbf\x03g\x88\xab\xd9*\x80\xa1n\x02\x973\xb9\"\xa0\x04\x16\xd8\x00\xc2\x13\x90\xf4\xb3dI\xae\xd2\x01C/K\xf3\xa2\xbe\xd4_\xc8H\xc9\xfc\x989\xe6\xc7\x14\xce\xbe\xa2\x1c\xc5U\xa1\x88\x03\xb4\xcd\xf2\xfa\x05\xe2\x1f[s!p\x13\x0b\xaf\xc9A\xfb\x93$\xceh\x9aOP\xb3\xecF\xdf\x7f28zGE6\x1b\x1e\x81\x84%F\xe8(6j\x0d\x810\x01\xc9\xcd\x818mI\x9c\xcc9\x88\x82\x04Zs\x8aq\x0bv\x14g4\x8c'$\x99)\x15\xcf-N\x11\x089D\x8f\xea\xa7\x95d\x9f\xa9gR=\x17MX9tv\xc5\xa8\x96j\xd7\xb2\xe6e(\xe5g\xb2\xce\x8c~\x89\xf2\xdar\xe3\xca\xd4\x8b\xa6k\x87\xb7\xd8E\xb4\x11\xaeN\x9d\xc8K\xcceJfQL~N\x93\x15I\xe9Zp\xbe\xee\xad\xb0\xeb\x94PE\xb4\xec2\x06y\xa9$\x88\x87Mvj\xe2\xb2\xdd F\xbd\xb2\xcax[\x8fo\xdduJk\x89\x98\x03\xe8=\x0d\xe38\xa1\xacuHb\x08c\x88\x8a\xf4\xbc)\x99$\xe9\xb4\xdf+H&\x8f\xb6\xb3\xb0\x98\xba\xab=s\x9b\xbc\x0c\xd1\x08\xf5\xeb\xb2\x7f\x12\xc5S\xaf\x8c\xbak\xff\xec\x12&!\x9d\xcc\x01\xc1f\x1f\xd0\xa5']\xd3\xe5\x11\x91\x0b\xfd\x04r\xfdq\x88\x81\xbcK\x93\xe5aL\xd35\xd7\x95*\xca\x9fv\\\xe9V(\x81\x0b\x7f\xc3F\x95\x04\x87\xfc\xda\xa4B\x14*\xdd\x1a\xcd\x08%!\x11KT\xfd\xc8\xbc\xacp\x00\x1f\x88p\xe5\xecPmA\x1e-D\xdd\xd9<\xef\x85F\xa2AHF\x99BH\x87\xf0\x9aT\xe1;\x9a\xca\xea\x06\x15\xa8\x17u\x0e4\xfb6\x00\xe2\xbd#\x01\xbc\xf0\x03xw\x05\n\xdc\x14\xfc\x90\x02\xeb0\xa1\xd2|-n\xa0\xb5\\\x1ao\x9b\x17M\xb36\x8c\xfa\x91\xf7\xe4K'\x9a\x81\x8d\xcb/\x9bt\xe1]\x15nN\xa1BgJEf=\xbe\xb1&>Jr\xb8\xa5K6X\x19\xa3L6\x80F\x0d\xe7i\xaa\xcd\x88yJ+\x8798\xfc\xd2o\x04\x89\xd6\x80\xc01\xb7\x15;T\xb2\xa8\x07\x02\xa3\x02\xcf+\x87M\x070\xa4W\x01C\\\x03\xc32\\i\xf0\x15\x04\x18\x1a\x85_\xde}\xdb\x19\x11XB\x94\x9a(Y\x1e\x13\xd5\xc9+\xe6<\x07\xc7e\xea\x11S\xcc\xd2%#P2\xdf\xf2?y7>\xcf\xd2S\xf4`T\x9d\x17\xcdG\x81\xc8\xd7\x1c\xc3>/\x06\xa4\xeb\xcao%\n\xdd\x8e&<\x1eT\xb0\xf8\x16\x08\xca\xe3I\x7f\\\xc4U\xddS\xc3\xa0aD\xdd:\xd8\x8c\x8b\xea\xa8\x90\x97\x96\xa1\xd8\xea}Q\x88 hP\xe1JCT4\xf3U\xc0\x82\xf8\xe8\x17V\x98Wt\xcba[\x8a\xf2$!\xde\x1b\x12\xc0\x0d?\x807\xeaR\xe9\x02\x01\x1d\x89x\x11\x0d\xd8\xa4\xe4o\xbems\xb5R\x1a\xf3\xfah7\x9d3o\x86;\x0cA\xee\xca\x92ig\xea\x86\xf7\xdf\x84\xb0\xd7\x82\xa1\xc4\x15C\x89\xc4P\"14\xe5\xa6\x10\x81\x97N5\xc3\x88\xf7\x8a\x04\xf0\xa3\x1f\xc0\xabo\xe7 ,\xc8\xf7\xeaZ\x90\xef\xcf\xc40\xe2\x8e_\xda\xc9\\\x1b~\xfd\x87\x91\xa8\xc4\x9f\x8e\x88\xf4Lp\xba\xcfT\xe8\x10!\xcc\xb4\xf1\x10\xcdu\x14,D\xbd\x9fg\xff\x95\x88\x84.1\xa6\x87\xec\xfa\x89x\xc6\"z\x8a\x93En}\xab@W,\xd1\x8f\xc2\x00:vr\xb1\xb5\xbc\xb9\xcbo\x1a\xa4Xv5\xf5rZD\xd7\x02\xfb\xbf\x06\xd1\x1d\"C\xdd\xf6\x02\x14\xe1\x95\x15\xb7p\x8b\xf3\xa4\\/\xd2\xe6e\x89\xde\x95\xb6\x11\x02G\x0e]\x18\xa0zI\xde%o}S\x0c\x1e\xf7r\x04\x07<\x91\x0bG\x89\x14Q\xa2\xbc9\xe07\x07\xcd|\xf9\xeaepYt\xa0 \x95s\xb8\x9a\x86\xe0\x9d\xf9\xd1+\xf3\xa3g\xe6G\x98\xa3\xcaK\xe3\x00N(\x13-b\xe5\xcdoT\xb0\x86\xb1\xe0A\xb7\xa1g\xd4\xb0V:\xec||V4\xea\xec\xf3\xb7\xe7qi\xf2\xb1w\xe6\xa8L\xe0i\x9e\xe6Eut\x1b\x9aW7oep#\xaa\x89S\xae\xcc\x85\x89\xaf\x07\xe5\xdfRg\xa1\x89\xd9\xac\xcf\xc4I\xf9[J&Z\x95\x15\xef\xff\xe6Me\x00\x15}\xae~\xb2R\x99\xa0\xda\x06\xcc\xd3\xec\x1f\x93\xe5\x8a\xaeQL.~\x0c!\x8f\x85\xa8\xfd\x1bm\xa6<\xadM\xd5Qc\xdc\\\xb4\xd2J\xcd-\xd4\x7fS\xacZy\xfc9N\xcec\xf8L\xd6\xd0\xfb\x1bl\x03\x85m\xf8[\x0f\x92\x18\xd8/\x89\xc7\x06#y\x05z[%\xf8D1\xfd\xb2\x16\x87\x16)\x1c\xf4\x86\x15cBu\x892\xa9\xd7j\xc1\xadJY\x08e4%\xce\xc1~\xb9\x0e\xcd:\xcc\x955pT\xae\x1b7\x8ey\xa6\xc48\xfb({\x8f\x9a\xf8I\xdcT\x01\xcd\xe2\x00\x16\x0c\xc7z\x7f\xff\xfb\xf1\xf1\xd1\xeb\xd7\x1f?<\xf9\xe1\xd5\xe1\xf1\xfb\xc3\x0f\xc7\xc7\x7f\xff{\xaf\xe9\x08\xb2bog\x0eJ\xa3y;\"\x18\xaa5\x91z\xb5& \x05Y([j\x88\x91\xcd\xe5\x87\xa6\xf4\x8eg\xa0^\xae\xe8\x9a\x87O\x17`tSDL\xdb\xf7bU\xc9\xb5\xb2\x04a\x94\xd9\xeck\xe5\xebb9-\xca\xb3z\x97kJ\\\x93p\x9fY\xe9\xd2\x0c\xf3\x0ex36\xdei\xec\xe9L5\x86v\xd7\xdf\xa0\xd2:\xe7*\xad\xd3\xb8\xd4d\x9d\xff\xbfM\x93uj\x87_\xa1\xee\xd3\x14XT\x7f\xad\xe2\xd1\"\x96\x0et+E\xa9\xb5*\x95Z\xab\xaa\x82I\xfe\xac>\x10\xac\xc1*VuV+\x17\x85\xcf\xca\xa6\xf0Y\xb5)|V\xb1\xdc\x870\x84\xb3X\xdc`[\x11Q2\x00\xe2\xadcF\x9c\xfc\x00\xd6\xd7\xa7\x11Z\xff)\x1a\xa1\xf5uj\x84\x84\xff\xbdM1\xb4\x8eK?}N\xb9O5\x94{\x19\x07p\xcc\xf6\xc9\xda\x81\x16\x9ft%l\xc7\xff!\xc2vn\x85\xe6\x92\x13\xb6%\x1b\xefI\xec=u/\xbby\xf1\x0d\x84\xed3'l\xef\x15\xc2\xc6n\xf5\xf38\x9bG3\xfad\xb1p\x8d\xe6\x7f\xef\xac\xe8~bWt\x1f\xc7\xa5\x83\xed\xb1\xba\xd7\xcecqC\xec\xb5\x13\xdck\x17q\x00\xe7\xd4\x0f\xe0\xe2\xfa\xf6\xda\xc5u\xee\x8a\xf74\x9c|\x86\x11\xdb\x10\xe3\xe6\x86\xb8\xb8\x82+H\xd5\x18?'\xe1\xb4\x89\xcf\xa8\xb7\xa2JRn\xea?\xe4\x89\xd7\xe9\xce\xceC\x1f\xbf\xe7^U\xe6\xbd\x00\x07 \x92\xd0\xe8\xe2\xfe*#_\x11\xf2\xb9\x13\x80\xd8\xa8K\xc3!\xfb\xa5\xc9\xde\xd1\xe8%\xcf\xe6m\xbd(9\xbe\xe5\xfa\xbai\x1d\nM_\xe1L\x82\xbb\x7f\xbb\xd1N\xa00\xc0l\xe0\x01\x02\xb3\xfe\x16\xec\xc0\x80A\xfc1W\x1b\xee\xec\xf8\xf8\x99\x89/\xc0\xcc*E\x1b\xa3\xd8\x90\xfb\x90-X}-\xd8\xa5I\xb4\\\xc5GC0e\xc1i\xe3z(\xf1V\x8d\x8a\xa1\xfcn\xad\xfc\xb9p\xed\xff#\xd6\x8b'\x8d\xc5{\xc2H\x91\x83`\"\xd4\xc9\x98\x1f\xda\xa3\xbe\xcf9\"\xfb\xfa\x959HZ\xa4\x16d\xc0\xf5\xd0m\xd9T\x05o_\x84\x07u\xe0\xd0\x08\xcf\x92gB\x01(\xd1\xc0P\xf5\x18\x8a\xf5o\xa6\xce\x87\x06\x19\xc5;E`\xaci\xfdIm\xfd\xe3\xab\xae\x7f\xd3\xfd\xba\xb1\xfeIke*\x15e\xb3E4!\xde\xc0\xde\xa68\xa6\xba\xb4\xcb\xd0\xd0Q\x1d\xa5\xeb\xca\x05\x83\xeb\xdd\xe9N\xd1Z\xeb\xdd\xa7\x91\xac\xae2\x8b.V\xa6o\x8d\xcf\x16(U\xc3\xa0.x\xc5X\x11;\xd8\x18\x92\xb8\x1c\x99\x8c\xa8|\x16\x8e\x1e\xc5`]\\\xc1b,.\xa2V\xe95h\xb8_{\x95\xa6\xab\x16\xaa\xa2\xa3sZ\x1f}\x99\xa6\xc7\x18\xe3W\x9cLi\xe5d\xc22gQ\x95d\xb1\x83\xe6\xa1\x8fw#\xfb\xe9n_\xc4\xb4\xb6\x88\xd1\x95\xd6\xef\x8fXWa\xba\xb6\x86\xdd\xd4V\x85.\xa9\xa9\xb9R\x10\x14\x0e\xf0L*\xa8\xbd2\x99\x8ea\xc8\xea\xcc\x06\x06=\xd4\xc5\x95\xb5\xa0\"\xee@]\x92\xf2hQ<\xbflH\x11\xf3=\x97\xd6\x10!\xad$\x13Le0H\xac$\x13\xc4o\xd2\x16&\xd0i\xb2n:R\xa7\xd9&z\x1db9S\xed\xd9\x97\xba\x9d\xdc\x8e\x91 \xad^\xff\x92\x9fH\xdb\xe2\x07D\xbf%\xa0\x03\xee\xd9\x8f\xcb`\xb2\xfa\xeag\xc8[je\x1e\xda\xb2\xf3Y3\xf3\xb9D\x05\\\xa0\xd6\x15\x85\x9a!\xbc\xd7H\xef\x87q\x00Otz\xd7\x0fO\x9e\xbe4h^\xdf\xb2\xf7/\x1c\xa4\xfd?\nw\xbd\x96\xfc\xa15\x8f=kF\x99\x92\x19\x8eTN8\xaa;\xeaE%\xfdK\xf9\xaf*upK\x19\xf8\xd9z\xea\x1er=\xc0!\x03\xc8\x1f\xb1\xd7pO14z\xd4..\x16ho4K*\x87\xd3\x08ut\xec\x9f&J\x18!\xa9\xa6\xef\"%o\x1c\xfb\x01\x94.\x93Jh\xc4\xfb\xf5\xf2$Y`\x85\x04\xdb\xf3z[\xb4\x06\x11\xf5\xd7\xdbx\xf4\xa4P/\xbeu\xd1\x06\xbe\xb5i\x03\xdf\xb6i\x03Y\x17\xaam\xed\x8b\x9aE%\x80\xb8\x7fT\x12\xc8\xaf\x01[\xa6X\x97\xfeK\xa4\xc4vH\xf3\xf5\x8cz6V\x04\xc4\x82S\x91\x1b\x97g\xda.\x8f\xf6\xcdFk\xa3\x87\x1acP\xe6{0\x98\xde\xac\xa6m*\xb0GOc\x1a+\x88w\x9b4\x81&G\xf1\x94\\\x90\xe9{\xf2\xc5\x010\n\x89\x7f#\xa2\xce\xddz\xf9\xe9\xbd{\xeb\x08\x1cm*l\x17\xcd\"W\x87pa\x84p\xefn\x1d{!\xa7,\xd2\x94]\xd2I!\x17;\xf6\xde\xa9\xdb\xec:\xbb\xed\xbcI^u\"\xa6\x9d\x9a\xcf\xaa\xb3R >\xce,\xac?/WY\xaa!\xe4\x9c\\ \x052\xae\xee#\xbc\xb86\xd0\xbf\x8a\xb2\x0eK\xbe\"\xd7\xd5/7C\xb8\xf7\xdc\x1b!\xc7r\xb2 \xe3\x9eK\x0f\xa5\xa9\xc3\xb1\xfc\x85Y\xbb\x04\xdb&\xc6\xf2\xba\x9f\xbe\xf2\x12\xc3\xcc\xb91\x8f\x97\xd9e\x94?\xc5\xb0\xc7}\xce\x14\xc2\x01\xe4\x98\x92|\x1fB\xea!\x7f\xd8\x8f2\xc1'J#\xe0\x88\x8e\xb5\x94[\xbd.}wOo\xf5*\x10\xc0\xe2\xf5\xad^\xa6\x8a\x1dP1\x16D\x0d+\x8f\xfd\xabA\xed+\xfb\xb8\xcfD%\x84h\xb4\xebP\xe79)\xed\xad\xb8\x08\xa1\x97\xa0\xc7\xae\x0c\xc4\xcd<\xa5\xd0j\xb3\xde\x96\xbc\xcc\xd9W\xcfD\x95(Q\xfdBW\xd7X^\x92\x92ci\xe9!L\xeaT\x14\xc7\xc4$N\xf9T\xd2S?\x90\xf7f\x8b\x90R\x12{[\xbb\xc2\x12\x83\xdaEM\xd1\x13\xebV\x00\x01\x1c%\xcd\xa8\x13\xba\xc8-\xc4\xfd\xa0\xec\xc0\x87f\x1fJ\x85X\xd86XN\xe4e\x06\xf8%\xaf\x8d\xd6,g\x8b\x0f\xa5\xfaV\xe3\x0e\xed\xc6\x8eH\x8f^\x97\xb4\xc9*\xbbV\xf5 v\x897\x98\xda\x12#k\x0b!4n\x91\x98\xa6Qe\xac.CU\xf4{\xef\xdc\xba9#\xe9\xda\xf1Lq\xe4\x82cK*\xf2\x16.8\x0d\xc0V\xf2\x13\x8a@s\x8e\x03\xbc\xd6\x11~\xa1\x14Z\xe3Z\xa2\xad\x81\x01\xf8uG\x12\xd0\x03\x86\x13]G\xc8\xd4O\xae\x1f\xd4|\x82\x9a\xf0'0\xf5\x19Ok=\xbaT\x8db\xc0d\x9fbNT\xcf`\xde\x00UOz\x80 M\xf4\xe5\xc15\xc3\xe2Z\xa1n\xb0\xa8 KP_q\xeei\x89y\xbb\x89\xaf/S\xa3\x19\x08\xe3@\\6o\xbd\xef\xc2\x92\xc2\xe9!\x1c@\x0f\x19\x1f\xd8\x87^\xd03c2#\xc1=\x8d\x1eU^\xdf\x82\xe96\x1c\x8fE\xa9\xfe\xad\x01\xba\xacn\xa3\xd2\x14\xffE7\xa3-YBJ\x99\x14\xaei\xe1E\x83gN\xaf\xc9Y\x82\xd8\x01N|\xdbg\xb2\xfe\x06\xf2\xf3\xd4iE\x97\x159\xd4\x01\xad\x8a-VM\xd9\xe9\xd4\x19?K;n\xb0\x00\"\xeb\x02\xd7p\xad\xe1\xa0\xf2\x08\xf60?\"\xc3\x14\xd8\xe7\xf9\x90\x1a\xdbAU\x03`\xcdZ\x1b\x01\x84\x03\xf0\"A\xe5\xb09_\xb4K\x8b\xd2\xb7\xbcb`b-\xc8\x9c\xba\x83\xec]t:\xa7\x1d\xe1& \x93\xca\x08\x95\x86(;}\x12\\\x8f0\xbd\xa7F\xbb;\x98\x06\x8d\xbd\xb8\xe3n\x81Tj2\\\xa7\xae\xd0\xb8|E\x0c\xfer\xb5C\x82q#\xddz\xe4yYx\xac\xdc\xbb\x18K\x85\xe9\xb2`\xe8\xbaJ\x9djL\xd4gf\x0c\xc8\x01}?(u\x7f\x03\xad\xf9\xd9\xa9\x97\x93\x9c\xbe\n\xbb\xa8\x07\xf8\xbeF\x0f\x99\xdd\x00v\x06N\xbdD\xd9\xe1rE]l\x0c\xa2\x17\xf5dR\xe4\xf4\xba\xe4\xbe/\x96\xb1\xca\x8c:\xf0\xa2&#\xa4\xd3l&I\x1e\xd7w~\xcb|\x9ex\xb4T%\xf1m/\x04X\xfeq\x07\xbd\n\xf6\xfe\x83+{*\xfaw\xa5R\xa0P\xaa\xaf\xd4\xf3K\x83\x94-\x03\x9eD\x0d\x1d\xf1nc]\xf1{\x917\xc1+\xeb\x94\xf3J\xe2lW\xaa9\x8f\x9d\xa46E\xe6\xd2\xb3\xbb\xf2\xb2\x94R\xc1\xb3@5\xb7\x19*\xe4]\xaa\xe7\xad\xcb\xea\x91/y\xb8\xe8\"l\x9d\xd1\x82l8\xb5/\xb2f:l5\xd5\xe1T\xbf\xb6\x18\xa8\xd5?\xc6ty\x95\xe2L\x94\x96\xf7\xed\x9cb\xb5z\xeb\xcf\xb1_S\xb5Z\xcf$\x0e\xc6A\x0b\x1d3\xc3@\xa2\xa0\x1b\x05\x8e\xaa\x94\xb7\xd5\xfc\xa4P\xb0\x00\x12OG\"\xe5e\x18\x7fgQc\x1ev\x913\x90\x0e\x89\x84\xcbK\x1eC\xb0t\xec\xe5\xa8\x0b\x0d\x97\xfdp\xaf\xd1.=E\xd9\xfb\xfc\xc4\xb1\xc0g!\x03\x0eM>aE\xa5\x14nu\xe6<\xba\xa2\x13r[\xda\xe2<.\x12\xe3t\xc8\xa7\xa5\x9f\xe2\x8a\xf1B]&\xe9\xd9f)`\xa6\xcc\xd2/n\xba\x9fj\x9f\xc9\xfa\xed\xac\xc3\x90\x8aC\x8d1s\x9d y\x0dFB\x1eq\xee~\xc4W\xb42lW?mH\xa9.\xdd.\xba\xab\xd1\x1a%\xbf\xfa\xc8\xcf\xba\xf7\xf7\xf2*\xebb\xe0\xbdq\x8d\xb5\xb9\xac\x9a}/\xc3\x8b\x0e\xbd\xbe$\x9dT\x18\xcb\xf0\xa2\xeb\x99\xfa\xb2\x92\x8f\xc8\xa9\x137\xa3Yc\x06p\x00ob\xee\xc2\xf2\xd5MPZF\xf1\xd5\xa7\xc3\xbb#\xbc;\xd7\xb9\xa5\xa43&jC\x1eA\xdf|\xf69Zu\x80\x9d\xd2\xfe\xeb\x90\xce\xfb\xcb\xf0\xc23T$6tV\x17\xbe]\xa5\x04\xc3\x1ecMzT\xb9\xe3<\x90_\xe7\xd1\xa2\xa3\x99\xa1\x18\xcc\xefW4l|\x8eV\x1fc\x1a-\xbau\xcb\x81.\x87\xdcM\x05\xc5\x13\x82u\xeb\xafi\xe5\xd0d\x06\x03}\x7f4\xfcL:,/\xad\x18 \xae\x80R\xac\xbfkF)\xd6dw\x94b_}\x0bJ]E\x92\xf8\x87\x13w\xab\x940\xfa\x18\xa3\x9a\xb7\x92\xbc\x0d#+[\x18^\xc9NS\xa3vY^L\xa4\x8b\xaa\xb1yJ\x81\x96J\x18\x08vlo\xedL\xd4\xf3o)\xfb_0n\x1a\xc1\x87\xa2J$l\x9b\xa1\xd2L)\xfd\x14\xdf\xde\xbc \xdb\xdb9\n\xa9\xa2AC\xa1ry]\xfa\x01\xe4\xc67.\x03P\xcb \xfd\x17\xadJ\x92vY\x16Z\xf1\xc6b\xdf\xd9\xe5Zv\x85\x16\x8f\x12y\x89q:FY\xaa\x17\xfaN\x85\xc5L\xdb?\x00\xf7\x88G\xf5\xb2F?\xaa\x97!VB\xbd\xa4\xe9&o-N%/\xae\xc3\xaf\x14\xa9\xb2x\xa9\xcaKF4R\x11\xc3\xdb\xfa\x01\xbb2\xe1\xac\xea\xf6\xf6\x04\xdf\x1e\xb4\xb8\xb6\x82n\xafM\x02\xc8P\xe3y\xc0H\xdbp\x08\xef\x84\x98\xf3\x9cad\x86/\xf04\x7f\xa1\xf0\x0c\xf9/X\xdc6\"`\xa5\x00\xda\x87\xdd5\xaf\xec\xe0\xb9*SQ\x1cZ\xdd\x98\n\x19C\xd0\x91/\xed.\x86\xcd\xc3l\xfe4\x99vpt\xa1\xf32\xbb\x00\xd6e\x9a\xab\xd9\x06\xday\x04(\xb6\x17wP\x1e\x0ea\x00\xb7`\xb7\xd8h\x16\xd2%\xcd\xa4\xb3V\x05\x9f\x9b+\x7f*\x8a\xdf\x0e\xf4Uo\x8b\xd7\xf8\xc0\x9c\x16\xbf\xf6\x0d\x1b\xed{\x14\xd2o\xdf\xb9\xbd\xf7`p\xff\xf6\xdd\xdb~P\xdc\x86G\x8f`p\x176@\xe0\xf1\xe3\xc7\xb03\xb8\x1b\xc0\x9d{\x83\xfbw\xee>\xd8\xfd\xbe\xfe\xdem\xe5\xbd\xdb\x01\xdc-\x9fc:w\x8f\xc06\xdc\xbe\x7f\xef\xce\xde\x83\xbd\xc1\x83{\xb0a0\xfd\x17\xdb\xd2\xff\x12\x9f\x0d\xee\x05\xb0\xb7w\xe7\xde\xfd\xbd\xbd\xbbE\xf3\x87\xe2s\xec\xa6x\xf3v\x00\xb7\xf7\xee\xdd\xbbs\xff\xc1\x83\xdd\x07\xbe\xda\x84e\xcby*\x7f\x10c\xad\xcb\x83\x8eP\x83!\xdc\x1e\xc0w\x90\xc26<\x8f\xbd'\x147\xcd\x13\xea\x11\xdfg32w\x0e\x8e\xbbS^\\+~\x85^\xaa\x93r\xe9\xa6\x98\x11v\xd4\xdaA\xb7\xc6\x1d\xdb\xf5\xb5\xe5\xac\xa1 \x88:RX\xb9SW\x06\xb3\xbd\xf8\x9a''Sr\x01\xa8o\xbc\x8eG\x0b\x19\xe0\xfd:\x1e=c\x7f\xbf\x16&\x8b\x8c\xdd\x12\xa1\xa3\xfc\xb6\x08\xac.\xee\xab\x81C0\x84W1>\x89\xe2l\xc5s\xe3\xe3'\xef\x93<\xad\xe6\x95\xd1\x81\xac\xa6D\x12\xee\xad\xd5\xd9a\xeb\x93y\x18\xc5\xbcma\xcb\xe4\xb7\x93\x98\x86\x11F\xa5\xe3\x10\xb8\xee\x12c\xc4S\xdd)9[D\x1dB#\x0b\x01\xe5+1\xae\x84N\xed\xb3:l\xb8\xf7\xbbZ\xff\xcdT15\xcb\x02V\xe1\xae\x93a\xb5\x90&\xa4\x93\xc4( \x1a\x9b\x8bO\x03p\xa3\xaab\x93t\x14\x1a\x97\xe1\xeae\xd5\x07\xd9\x15FW\x00\x02[\xf7:,\xda\xc4\x8c\x06,x4\x82\x05\x08\xd8\xc9Uv\xeb\x87\x18\x93\x9b\xb4f\xeexj\x06\x92<\xd5\xaa}\x19\xda\xf9\xb9\xb5\x9d\x11 \x80\x8e\x9d\x1a{g \x87\xf5\xb3\xb9e\xb3mQ\x97d\\\xd0\x84\xa7aXo\xaegX;\xd7<\xacW\xf6a\xf52\xa4\x81\x15\xe3\x07\x1c\xc0O\xef\xdf\xbe\xe9\xf3G\xd1l\xcd\xd5\xb6\x82Z:\xe6\x16}f%\xc0\x87\xc6L\x9e\x86\xe6\xbe\xb6b\x10\x85G\x05\x07G\xe11\xfe\xbd\x83\xec\x9cS\x07\xcf\x1d:`\xac\xcf6\xec\xdd\xbb{\xe7\xce\xed\xbb\xdf\xdf{\x00\xdb\xe0Q\xc6\x90\xdd\xf3\xf9\x9f\x8f\x1f\xc3^\xf3\xf4\xad.\x94h\xedCT\xaf\xc2h`\x95\xcb\xe5\x95|\xb3\xad\xaeu@J\x1b\xdeV\x82\xa5\x00\xf8\xba\xf2\xd0R&\xa2G\xbe\xaf$-\xc5f\xc5}k\xcb\x97\xac\xf7\xc0\x96GC\x85\xa8\xdel\xe7\x0c\xd2\x80[\xee*1~\xd8\x7f\xeb\xe4\xdd\xed\xa1W\xb0\x9f\x15\x90\x8d\x18ds\xf8\x1f&;\xb0\xad\xc7p \xa9\xb8\x00c\xcc\xef>\x7f\x07\x0e\xe09\x9b{\xce\xd3\x91\xa2\xd5F\xfe\x8cd\xca\xd86\xf0[\xad%\x86T\xe5%\x95p\xde\xc6\x0b\x12\x9e\xb9p^\xd2,7b]\x8c5\x87\xb2oY,\xb6/op\x02 \xf5/\x01\xdc\xe8'3t\xa65~\xc6\xf3\x93(\xde\xf9\xd6s\x96\x14\x1b\xdf+\x88\x81\xb8\xc7\xe8\x80\xc8H\x13\x94\x94\xc8\xcd\xc7\xa9\xab\xcb\xdd\x92z\xbbj\xcaj\x97>\xae\xe0_\xc7\x0e|\xc7\x08\xd5\xebv\xefq<\xf9\xbf^I\xafzC\xfe\xf1,\x0el\xc8\xe6<\x86_#:w9\xa7\xa4\xcc\xa3\xf6b\xc77\xc6\xd3\xc9\x00\x81\xe6\xf8M&\xcb\xca\x9dK\x9fQ\x842=\xec\\\xea\x1b\xd4\x9bE\xdd\x96#t\\o\x0e\xbf3\x8f\x85\x18\xc4kA\x0b\xb3\xb2\x93\x9cv\xd5|:\x9a\xaa\xd3p=\x9b\x0d\x9b/s\xb89@;Q\xf2l\xf3\x12\xda\x15+\x81\xfaX\xb1$\xa8\xb7+&\x85\x17\x81\xaa\xa4\xf5\xf1\xde\x8d\xca\xf2\xf1{?V\x9a\xe6\xf7N\xa8\xe6\xe3s\xaa\xf9\xfa\x82\xd6?oBE\xe6\x97\xdb\x87\xb8 W\x04\xea\xcb\xe6\xfd\xa7\xc9bA\x10\xd2\xfbp\xac)\x90\x81\x01b_5\x0f\xd4\xb4\x92G\x1a\xe7 \x9e\x97o\xa5y\"R\x05^hGI\xf7!\xd3\xe5{\xbb\xbb\xd3O\x9f\xf2\xe9\xfd\xdd\xdd\x1d\xf6\xefl6\xfb\xf4)\xdf\xbd\xcd\x7f\xee\xde\xbe\xc7~\xce\xc8\x1e\xfe\x9c\x91\xbd\x19~3\xc5\x9f{\xbb3\xfet\x97\xf0\x7ffc\xd3\xe0\xcc\x14\xad\x100(\xc9\xa8J\xc7.\xbb\xc1i\xb0\xfb\xa0\xc6\xeb0.\xb2wx\xb1\"\x13J\xa6\x10\x16\xed\xf4\x14c\x8f\xbc\x07\x89\x96\xb0G3\xf0\x94\xf8\x88-\xc5D\xb0\xd9\xc8\xecA\x1cE\xb4\xaf\x11\x1f\xe8\x9e\x864<>\x16\xd9F\x9bX\xa9h\xf1\x84\x14[\x83\x0c\xbb&\x9a\x1aTQP\xb9]\x14\x82M\xaa\xf7yQ\xc4\xbcz\x933\xc4a\xf5f\x86ofUB4\xe9\xb6:\xb7\x1f\xe8\x97\xe7\xce\x83\x96\xe3\x18\xa8\xc8\xcb\xc1Co\x1b\x8e\xeb\xca\xe6\x15\xc6\x0eOT\xe6\x04R\x9c\x80\xf2\xd1V\xc4\xb8\xab\x9b7\xd9\x1f\xb1\x8fJay8\xc6\xec\xaf\x98\x1dA\x95\xfe(\xeb\xf2\xca'\xfe\xed\x07\xb7\xb5\xb3\x1e|_G>\x81\x94\x0f\xeei\x90r\xd0\xc4\xc7\xbd6\xd2!k\xb9pG\xe1\x99\x0e\x15\x17\x98\xb5\xf8&\xe4\xcd\x03\x17\x0b\xb2\xca\xb2\x8c\x8d\xa7s\xc4H\x9dY\x8a\x11\xa8\x15\x03\xe4\x1c\x81\xec-\xd8?sx\x0c+;]F\x9d!\x0f\xd0\xf5\x9b-bAK\xfeX\xa9-6\xc5%n\xb6u\x06C\xd8\x194G\xbd\xe62t\xe3\xfe\xa9\x00C\x08\x07|'\x82\xf4\x8e\xae\xb6\x8dy\x01fx\xfc#\xa9\x0f\x80\xff \xbc\x06\xe8\xf6\xf6\x19<\x82\x956\x11\x00\x1b\xd6\x92\x81ttf\xe0n\x8e\xb1(\xcc\x99\xc6Q\x9c\x01 \xf3\xb1\x89\x13\x18\xc2\x02\x0e \xf3\x8e\x03X\x06p\xc6\x03\x91py\xf7!\xf3\x96\x01\x1c\xe3]\xbe\xfa3\x0d?SK\xe2{b\x92\xae\xd9{'>0\x018\x8aM)\x0b\x10\xa2\x03\xfd\xb3\x93\x94\x84\x9f\x1bO\x9a\xe7\n\xeb\xe8\xd46\n\xb6e;\xd8\x0c\xf0\x93\xc4;\xc5\xd7n\xde\x04oY\xe6\x8c\x9e0\x08Q\xb9-f~\x89K\xa7<\x16\xdf\x18\xdel\xeb\xd1\x06\x050B\x02\xb4\xd0\xb8\x04\xb2\xc8\x08Nb\x89\x0bt\x8c\xfbh\"\x96\xb6\x18\xb8a8\xdf\xba \xda\x13y&N\x10t\xba-~0\xfc_\xff\x9f\xea\x876n\xc8H\xa5\xeas\xa9\xd4_\xdb\x11 /%\x11\xa7\x98&o\xbf\xa0Ml\xdb\xc5\xf0\x08\xd2\x87\xcd\x95C\xd3\xb8GG\xf1\x18\x01\xa7r\x86\xbbZ\xfeOI\xef\xd4\x91\xcc\xdf\x19\xd4y\x83\xe2pkRyQ\x91\xa98^\x9b\xf4\x1e%\x19\xa5\\S\x93\xfc\xa3*\x08\x9f\x1de\x87q\xbe\xe4\x8a\x9f&{\x92\xda\xad\x1db\xe2\x85\xb8VE\x06\xcf\xf7\x85 \xde\xae\xec\x13\xad0\xe6\x9bak.X\xcc\x00z\xec\x0fBz\xfc\xc4\x0d\x9b\xf7\xab\xfd\xe9\x8f\xb4\xcce),\x99\xf2\x15\x06Qch\x10\xeb4\x18h\x9e%m*\x97-\xd2\x8f\x93)aB3\xdek6\x81\xab\x89\xa2w\xb3\x1d\xca\x8d\xd4\xac\x1dZiG\xa3sbk\x9es\xe0\x16\x90A\xc1\xe4\x00\xd2\xfe\x0f\xf9lF\xcaS\xab\xf95\x03\xa3\xc7\x8e\xb7\xb0\x1fe\xb5\xb7Q\x8a\x8d\xccJ\"E\xe2\xa9(\x89\xee\x0f\xfc\xc2X\xdc}\xdf\x1b\x988\xda?''\xabp\xf2\xf9\xe7d\xb1\x9eE\x8b\x05\x0fY\xe9O\xc9*%\x93Z\xedG&O0\x96t\x15\xd29k}4\xc6L\xf1\xf3h1MI,\xbe,~\xb2\xe7e\xb9\xb4)\x99E1\x91\xfb\x0bqr\x91\x84S2\xed\xe9\x14\xab\xa4\xd8a\xfbz\x0e\xa2K\xd1\x19\xda_4\x1e7\x95\xd4\xe6qF\x7f\xc9\x18#\x8716Wk\x08\x83J\x02\x9b\xced\xd4 #\x0c\xea\\t\"\xee\xdf\xd1p\xcb\xb8\xdf\x92~\x94\xb1\xfd4\xe5Q\n\x95\x97\xf8f:\x80\xc8\xcbQ\xe5\xa4\xa7;a\xb7\xb1\xdf\xdd\xbd\xaaZ\x91\xf2\x83\x8d\xd1\x81\xb4]\xb9\xd8\xbe\xb74g\xaa<\xc9\xe5;Z\x87\x17\xa9!\x10\xfa\x05\x91E\x90\x8e\x85;_\xcd\xdf\x84p\x8f\x92H\x16'\xf4\xe2\x9a\xa9\xeb\xf2\xaaX0\xb8_\x97\x818\x16|\x7f\xbf\x15\xc2m\xec\xc4.\xf72\xf0\xb8\x1a\x88\x07\xf1\x17\x9cD\xa1X\xe1\xd2\xe0#H\x1e\xfa<\x85\xe8(\xf2\xc8(\xde\xde\x1e\xfbc\xbdv\x8f\x7f!\x082-h\xebU!\xa0\xd7\xd9\x0d\x1a\xd8.v\xc1^\xfd`\xe3\x8a\x8c;\xdf_\x05^bJii\x18\x8c\xc4{\x07\xc0\x90a\x1f\x12/\xaf\xb8 9M\xae\x97g\x042\x9aF\x13\xaa\xa8\xf6*^X\x0d?\x11\xe9j\x13{\xdf?\xa8\xebF\x94\xe9\x1c7E@&\xbas\x98\xdd\xfb\xbe\xf6\xe5q\xff\x1d \xa7\x8cN\xbe\xa7\xfc@YV_`\x80\xbe\xeb\xf7\x0f\xcfHL\x0f\x97\x11\xa5$mv\x10\xb6\x81Q^%\xd1\x8f2Jb\x92b\xd1M\x8er\x8d\x0ft\x96{\xb1%\xea(\x01\"\xb88\xf6\xee\xef\xfa\x82\x03h\xbe1CA\xfdc\x14\xd3\xfbH\x07\xd9\x9e\xad\x9c\x9f\xcd\x99-85\x1b\xd4\xc0\xb6\xe8G\xf1\x9c\xa4\x11\x15J\xaf\xbb\x1a\xf3\xc0\x8a\xa3\xdd\xdd:\xb1\x06\xa12\xd0 \xd5\xec\xfe\x8am\x9fU\x7fJN\xf2\xd3Er\n\x07\xca\x0f\xaf\x97\xd1\x94\x84\xcb\x9e\x0f\xfbmC\x9f\x06(\xfb\xb3!\xd4w\n\x08\xe1\x88\x81\xb2\x8eK\xe5\xd4\x98X]7\xf9\xb3\x86O\x19\xf7\xd0#i\x9a\xa4=\xc6\xbd.\x92\x8c\xb0?\xa6$\xa3i\xb2f\x7f\xae\xc2\x9c\xdfKI\x96/Iol\x8a\xd6Y\x1a\xd1%\x01\xa1i\x8e\xbd\xbd\x81\xa8a\x81b\xab\xae\xbe\xa0$\x16\x04\xa28\xa3a\x94w\x86\xe5S\xdf\x0f \x13j\x85F\xb6?\x13 OJ\xe5\xb8)\xdaS\xe1!h\x0d\"M\xb0 \xdd\x147i{ym\x8f9q \xa8\xaa\xe2{X\xae\x93^\x89\xc7_\x14xfSJ\x9e\x15\xc5\xdd\xc4\xcb\xacu[*\x15\xce\xc3J\xaa\xc4\xa0N\x04\xdd\xe2\xaa\xd1\xd8\x0f\n\x9d?l\xb3\x86\xab\xd4\x17\xf6\x8b\xaf\x0dJT\xed]RR\xae\xdd\x00\x0e\xb5\x86I\x06\xba\x1c\xeb,zH\xb3\x11\xdf\x9d\xe0\x8aP\xd0\xcf9\xe5Uy&\x85F\xc4KQ\x15\x92\xaa\xdbf\x86\x94\xa6\x19}I\x94\xb8\x83a!\x0c\xd5NK\xcc\x12\\u\xaa\xe8\x1d\xc5g\xe1\"\x9aB\x9c\xc4;\xbc\xd9[\xe2p\x98\xcc\xf3\xf8s\xcf\xb7\xc5\xd3\x18&\"\xb6\xb5\x06n9: \x06\\*A\x02\xee\x15\\L\xc2\xe0\x99\xd7\x86,\x1c\x89\xc4*?\xc6\xc8\x1f\xcf4\xff\xfa\xc7e\xa5\xf9\x9f\xa5j\xf3\xed\xcc#<]\xb1bND\xd8\x10\xa7\xe4#bn\x13\x0c%\xd7\xe3\x06N0e\xa7\xb4z\xe45\xe7\xcb\x16B,\x02\xe7(\xfby\x9c\xcd\xa3\x19\xf5|\x08g\x94\xa4@\xe2)\x10\xc6\xf5\xf7\x10\xd7\xce\x11\xedd:;\x04\x16GU\x97\xb6q\xcb\xc8\x86\x0f\xdf>\xe7M6\x88C^\x1c\x19L\xfa\x8f\x19\xb4 &>\x92\x9b\xf6<\x8d\x84\xae\xbd\x0em!\x85\xcb\xb5:\xa8\x8cw\xc0z{[\xee\x9b\xea3\x9fW\x8fb\xcbP\x1d\x90\x0e\xfb\xea\xaa\x83\xb6\xb5\xda\xa2\x02LH\xb8\xab\xdc\x04n\x92\xa2HV\x8d9,\x99.j\xa4#\x97^\xeeF\xe3\xcf\x15\x1a\xaf\x1b0)\xb8\xa8\x9b7\xe5\x1eVh\xdf\x16\xe1l\xd1\x01\x9b\x02_\xebiHC\xb6\xd4\xa8\xf7b@\xf3v\xf9\x9a:\x12E\x8e\xa4\x05M\x95\xc8\x17\xb36t\x94\xb6\x02\xb8\xff?{\xff\xbe\xdc6\x924\n\xe2\xff\x7fO\x91\xc2o\xc6\x03|\x84h\x92\xba\xd8\xa6M\xeb\x93e\xb9\xc7\xd3\xed\xcbH\xb6\xbb{\xd8\xfa\xa9!\xb2H\xa2\x05\x02l\\(\xab\xc7:\xd1gw\xcf^#\xf6\x01\xf6\x9f=o\xb0O\xb0\xb1\x11\xe7MN\xef\x03\xec+lTV\x15P(T\x01\xa0,\xf7\xec9\xdf\x87\x88nS\xa8B]\xb2\xb2\xb22\xb3\xf2r\xef\x1e\x92F\xc7e\x8bJL\x9a\x16\xfa\xe85\x87\xe7\xd2}C.\xb8\x18\xd4\x9d\x1b\xa9\nU\x17$\x85\x7f\xb8wO\xf7\xba\xe0\xfc\xaaK\xac\x91\x81\xdb\x05\x0c6to\xd7\xf6OO\xf86F\xc3\xe7%\x83\n\xc1\x88\\\x8b\xdf\xe5\n\xe7Y(\xd7\xc9\xffRj\x15u\x1a\x0f3&\x0d vdA@\x11D\xe3\x06.7N\xeb\xb6ix]\x8es\xdf\xc8\xec\x08\xf5P\x19\xd1C\x91\xebN\x1b\xa9\x80.\x02\xd25f\xf1\xa6r\xf3,Hv\\f\xb8\xa9\xc0#\xc8>\xbbl'\x98\x99\xd1qyg\x8eK\x19\xb9\x92SB\xc5\x9fC\x81 \xdfs\x8d'\x0f\x9f\xa3\xd4<\x93 (\x87\xa2z\xc4+]\xf8\xc9[/K\xca.P5]l\xf5\x8b\x94_\n\x86r\xfaT\xd7YBd)\xa9\xd5\x9c\xda\xc91\x95\xcd\xa2\x885\x86z\xb2p\xc3j\x94G_U\xac|\x84\x11<\xdcy\xf8p\xbf\xf7\xd0\xa4/95\xa2n\xae>\x7f2b\xfe\x8dU:N\xf2#\xbb\x87d\xb6B\x9dS\xa6\xf0=(\x1f\x08\xd2\xa9\x9a\x93\xe6\x05\xf1\xa6]z\x08\x88\xb2aQm\x88a%\x80(\x07\x1ac\xa2U\x8dA3!\xcb'\xf6t\x04\x1fQ K\xff\xa5\x9dloSY\xeb\x13\x1d2F\xf7*\xfd5(\xfd\xb5[\xfa\xeba\xf9\xbb}\x17\xd2NG\x9bk\xe0\x86\x9d3\x08U \x0e\xe8!\x92CS\x9e9\xa9h\x0cz\x98\x9f\xb9\xd59}\xac\x87Bn(\xd7H\x8f\xaa\xbd\xf7\xe9\xe9\xa9*+(\xd6/l\x8b\xbe\x16\xef,\xb7XtG\xf7\x0d\x9bI\xce \xb0|\x1f\xef\xfc\xc9\xa5}\xc8#/\x1eV\xdceM\xf3<\xd4\xcf\x93\x0f \xc4$-\xe4.\x18\xc3!\xbf{\xd56\xa0\xcb\x1b\xe3n!%}\x08\xb2\xe0\xaa\x86\x04\x9d\x8e\xf2I\xfe\xa4u`2u\xfc\x93\xb1\xe3\xd2\x05Ln5FY,\xc1z2\x86K\xda\x7f[\xa4\xe0!I\xc10\xea\xf6\xd7\xc2\xb6\x96\xde\xf5\x05\xa1\xab\x86\xf3@\xf5B\xcf\x92\xd94\x17m\xfb\x8a\xce\x9d\xc7Ny0\x0d\xc0\x1a\xa9\x89\xbfL@\xb84\xaer\xae/\xa1\xe0M\xfd\xc9\xa5n\x9c\xad\xfax\xd9\xbc\xc2\x02\xdb\x99\xe6M\xd7\x13\xe2\xbb^1G\xaa\xca\xb4\x1c!Q\xb3\xcd\xd1\xd1\x05u\xc9\xa4\xe5\xdclJ\xaf>\x97\x08 \x8a-l\x8b\x8e\xa7\xb4\xad\x1f\x97\x07\x99\xa7R\xe6\xe3s\x1e+\x02\x8fi\x84\xef\x9a\x0e!\xe5\xe89`]!u\xac0J\xf9\x91\"\xc4\xcf!l\xa5\xec6\xf5i\xa9\x0d\xbb\xa4\xc0\x91\x0f\xa3\x9f\"?\xb4-\xbc\x13\xe9\xf3\x9eyI\xcd\xc1%\x0b\x1a\xdc\x9f\x92\x14>\xb1EQ@\xbc\xd8F\xd9&\xd4X\x94\xd6\xa9Z\x0c\x1a\x8a\x94\xed]\xf5\x00=\x00Lu$\x97H\x91B\\\xb9@[-u\xf2,\xc8\x1c\x06\x9a.\x88\x04\xe5p\x93\xf0\x96\x05\xc5\xa2\xad\xea/\"\xc4\x13Wmt\xd5\x07\xef1qlf\x15\\\n\xdb#\xf0\x8dDI<\x88\xed\x8f\x81\xc5r\xa4\xf4\xa46\xf7\x14\x08uf>\x80\xfa\x81\x82\xb8\x91\x81\xa7\x10\x15p\x8c\x8a\x13\xbf!\xb2\xb2?\x03;c\xd6I\xc5\xe7>\x95\x8e#\x18\xf2\x1f\xe5\x85f\x9b\xc7\xc6\xe9g\xb5\xa6\x96\xe2\xa9\xb4ow:\xb1\xcb\xc1\x81\xab\xbe`Zf\xfefX\xbc!\xdd\xd4\xf3\x03\xae\xe7\xe7\x02\xbc\xa8\xecr\x08A1\xc4\xcc\xa4\x91\x93\x1f\xb3\x85\xa7xn:\x1d}xc0jFA\xb2m\x17\x13\xddFw\xa0\xaam\x0e\x085)q6\x89\xab*p|\xd2\xf5\x82 \x9a\xbc\x0f\x13oF\xdaE\xe1m\xb1+(\xca\xd7\x98\xc5\xc6l\xa7N\xa2\xd55\xaa\xde\x04\xe7c\x97\x83\xe4\x8b\xe0\xbc\x1eSaS\x9c\xf7k\xc2]\xb8M\xc1\x974\xb9\xee\xf0+~\xde\xb9\xc5 K\x19E\xc3ev\xb9{\x13\x9bp\xf4\xb9\x8c\x0c\xbb\xde\xe1\x13\x7f\n=\xd95\x93)\x98\xffd\x910\x17Ql\xc7\x024\xa5\x9dB\x14\xe2\x9d\x02Y\xae\xd2k`J\xe8?i\xe6Bd%9\x13\x02\xe4\xfb\x17\x89\xfd\x7f\xabMrb\x8c\x1dj\xd6\\)=rU\xa1\x98$\xb3\xd2,_V\xf7\\\xce\xcbVD:\x9b\xce\xdej9\xa6\x93v\"I\x8fk\xbfr\xc9\x84\xd9\x93C\xd8\xe9\xe8/\xb20\x1a\xfa8\xe4vq\xc5\xbd\xaaQY\xb6\xadJ\x0f\xf2_\xb2B'f{\xb2^C\xc0\xa5 \x8b\x9d\x9d)\x8c`\xe5\xc5 y\x19\xa2[J_\x17\"e]\xf2;+\xe1\xa0\x9e\x12b\xa43=z\xf2\xf5\xe3\xca\x0d\x9dQ@N\xdd\x98\xffyE\x93-a\xf8\xa8\"\xd3}\xfa$\xd4\x0c\xc5\x8d5\x9f\xf1\x10*\xe2;k\xc7\xcd?qku@G\xec\x92\x18\x86pl\xf3\xcblJ\x10M\xf3\xe4\x04z$TP\x8e\xd4\x9ac`\xfc\xef\xdd\x13\xbd\x98\xdaF>\x99\xa5\x13-\x83\xc6\x88>\x0b\xdb\xa2\xf5\n%\x01\xe6\x15\x11#$\xd2N\"\xd2IS\x95\x97q\xfc\x0b\xdb\xe2u\x02\x92$\x90.\xbc\x10\xaeh\x8d\xa5\x17_Zl\\\xa8\\\x15`\xc3f\x85hw \xd6\x82\xfe\x11\xe1\x95\x19\xde!\xf8l\xe1\x91\xbf\xe3R\xf94\xc2\x01[\x8e+}_R\xa9pMQ\x05\x80:\x8dRI\xe3\xa8*\xd5\x1c\xb9\xc9\xbe\xab\x08\xc2l\x05C\\A\xbe*lic~\xc4\xf7\xe0 \x17\xf0\x86\xfc\x88<0\xe8\xb5\xd0\x0e\xc7\x91u\x7f\xdb\xa8\xec\xd4\xce\"\x07\xa0aFa\xb1\x95$\x85\x07\xc7\x1f1T\xd4\x8d\xe7\xd7(\xa5\xbb\xa8\xb8\x92w\\Q\x10\x9f\xb7\"(R\xc3\x9a\x0bM\x06q\x07\xfc\x04\xc2(\x05\x7f\xb9\n\xc8\x92\x84)\xa9\xd2a\xe5\x06\xc2_\x91\xd67\x10\xb5\x01\xd5\xa2\xb6\x97\x13\xc9\x95\x8f\xae\xc6\x91d8eb\xad&^B\xa07\xd4\x96\x01:\xe0\x0b{\xac\x1af\x0f\x99 }1\xb6\xdfo\xd3\xfe\x98\xfft!\xad\xc9\x13S\xd3\x15\xbfOi\xec\x8b] 5^wI_0\xd3\xb3\x0e\x95n\xe9\xce\xc7%\xc5 \xa0\xa3?N!Z\xa5\xc9\xe8\x8f?Yn\xa9\xb6\x9e\x1f\xa3\x8b\x8c^([\xcc\x90\xb0\xcf\x15r$\x9c\"YJ\xf9\x1dP\x92N\xa3,U\xde\x908\xa6\x92;\x0c\xe1\\\xb9%\x80\xb2\xc3\xb5\xce\x88X<\x0b\xdb\x8a\xc2,\xa4\x03\xb5\xd8m\x92\x08\x88\xca.\xdf\x99\x1e%\xee.\xbc\xe4=\xd6b7\xd8\xa5\x17\x8c\x06,lk\x12\x10/\xccVB\xa7\xb6\x8c\xd6\xdc\xf6\x8d\xc4vn\x1e:\xd7\x96\xce\xfc\xd0O\x16\x96\x0bKm\xf14\xf6\xfc\xd0r!\xd0\x96\x8a\xfdy\xad-\xe5\xb3saB\x89G\xf5\xe3\x90\x92\xeaYM\xd9\xb9\xb6\x8cS\x9b\xb5\xe3\xa2\x85/\xde\x82E\xb2\x96\x10\xaf\xf5\xcf\xafb?-]\xbcn\xa9/\x91\x08\xe6\x9f\x04\xfa\xa8\xf8\xe6\xf5\x9d\x19\xaf\xa2qm\x913d\x86{\xd3\xc68P\x808^2\x18\x91x_\xe4\x11\xc2n\x14N\x88\x00\x0dZ\xbeu\xa3\xb0\x04e=\x9e\x07\x8d\x14\x174v\x15Mrz;\x01B<|\xb3\xbe \x9fs|\x92\xd5\xba\x8e\xa2\xe5\xc5\xf3\xa7\xf8{{\xbb8\xcf\xca\xb58\xfc\x8c+\x8cQ1m\x886~(h\xc1\x7fc\xeb\x84-\x06\xe3b\x17\xe8A\x8cx\xa8\xd1-\xac\xb9+9-3#\xd2\xda\x9c\xab\x171\x89M\xd0\x05\xa1\x12\xe7\xd4*\xcd\xadq(\xfa\xb2\x83\xdd\xees\xa9\\\"\x97\xe8}\xc4\x89\xbb\xf0<.Ux\n}Z\x89\x87_=\xb1\x0b\xfa\xcf\xe3t\xae\x04\x135\xf3\x82\x84\x00v\x0b1IVQ\x98\x10\x17\x84\xady\xa8^\xc0\x96\x96\xb8\xa6\xb4\xd3\xe1\x93C.\xa4\x8b\xedm\xba\x1b\xaf\x1b\x80(H\x15q\\8\xb7\x1b\xa9\x19C8\x86`\xec=;\x17\x14\xc6D\x17L\xb1f\x90s\xe3\xb6j \xcc\xe7Z\nb\xeehYO\x9bx\xdb\x8d\xc7\xc5\xa6\xdd\x9e\xd7u[\x1cva\x97\xfdnw\xf6\x0by\x96\xed\xc4\x9c\xf8k\xbbi{;\x00P T%\x1b\xfb\xaeb\xb2\"\xe1T\x00\xa5\x08P\xae\x96\xb0h\xcd5*\xf4\xee9\x9a\xf0%\x0cy\xf8\x1fcr\x06\x07\x90\xd9\xf2\x0b\xf4n\x92\xfe.[d\x95>\x1d\xc18tK\xaf\xce\xb0\x8a\x08\x1e\xad'x\x12*\x8b\x03\x9b\x1d(e\xfe\x80\xbdS\xb8\x02\x86\xf4\xfc\x9c 1f\xa1 \xb4\xfcn\x0fY\xb1\xe2F.\xe4\xb7y\xb6S\xb9\xd4\xaf\x18\xc1T\x18\xf3Z\x9d\xd5&*\x03\xf3\xda\x17L\xd4P\xbdL\x15\x8f\xc6\xc9\xa5\x90\xc3I\x89\xa3\x17\xd8\xa1\x0d_O?\xea\xd7|T0\x97\xbc\x9c\x07\xccfV\x1cBb\xe4exT\x96\x1d3H\xc5+\xa3t\n\xf6\xb95\xbcX\xc4\x9c]Hy\xc4YnH\xaf\x1f\xf8Vmp\xd2\xb8\x18\x98Y\x83\xedCy\xe6\xfa\xcd\xb2\xe9\xac\xf4\xad\xe4\x8a4\x16\xe7\x1a\"x\x02\xfec\x88:\x1d\x07\xe2qtf\x82A\xad\xc2\xb6b8\x04Z2\xb5\xe61\xdcNlR\x9c\x9f5:8D\x89LZl\xfeY\x97eg\xb03\x17\x9d\x97K\x80\xd8F\xc9\xa7\x8aM\x9c\xf9\x11 \xe4\xbf\xc6\xbd3i\xf7\x9a\x16\xbensF\x95\x1b\xd7:\x899)}Y\xb8Ap\xc3\x0d=\x861\x8a\xce8\x13'gm\xcc\x06h\xb9\xeaA\x10\x18\x8dRY\x84,)lVD\xfb\xf5\xb8\xdcJ\xa8\x07\xbc+*+\x91c\x8d\xcb\x11\xdd\xb9\xba\xf7\xecB\xa4\xa2\xc9\x89\x0d\x0eM\xb1\xa4\xec\x8a%}\xceq\xae<\x94\x04\x85K\xbe\xa6\x9b\x1c\xabu\xeb\xefM\xf3\x93\x0eF\nf\xb8\x8a\xaa\x18m;Z\xc4cL\xdb\x02:?s\x95\xa3\xa68eR\x85\xddo\xc4T\xe0f)eC\x13a|T1?)\xdf@\xbc4GP.\xa2\x9c\xeb\xec\x0c\x15=\x14\xe5n\x9b\x00U\xa8Z\xe9.b\x1c6\xf0\xc92\x1dG\xcd\x16q\xdc\x96\xfb\x08\x0fnd\xde\x0d\x16\x94\xca9R(\xe6\xf8W-\xa6{\x15{\xab\x8dN\xf7\x9a\x1b\x80\xb6g\x7fl8\"\xf2\xe3\xc1\x07?\xe4\xa2\x1d\xd7B4\x89\xbd\x94\x9c,l\x8b\xcefE\xa6\xc0\x85\xfb\xb0\xec/!t\xf1\xf5\x92s\xca,\x1f\xda\xb9A\xf1\xb3[\xbe>0i\xcd\xc0x\x8dI$S\xed*\xf2\xe6\x9a\x04\xce[\xe7\xb00&\x1e\x94!!\x84\xd3\x12(l\xbf4G&\xa7\xfa\x14]\xb6B\xc5o$W*\xa3\xa6^\xb2\xde\xf7\x99Ho\xab\x1f`=a\x95\"\xc4~\x9c\x9f\xef0\xa2+t\xe3\xb9 \xa9\xdb\xb2\x0e\xdaLJ>S\x14\xbb\xc6\xfe\x19\x94\xe3\xd2JR\x01/\xb4EE \xa9\x9b\xdc\xed\x1b\xd1K\xaa\x9bR\xe6\x9f\x87\x81\xadM\xe5\x07\x065\x86\xaf\xbb.\xd7qF\xf3\xfc\x8a\x11\x19$D\x82\xf98:\x93vz\xf7\xc2\x0f\xa7\x9c\xba\xd1\xa2\x1a\x8f\x9cT\xf6\xa6l\x86\x8c\x84B\xe7\xfc\xfe\x908\xc2\xfb;\x16\x14\xa7\x10#\xaa\x13\xd5\xd3\x9e6\xee&\x82\x84\x94|\xbb\x9b\xa3\xd8hL\xaa6rM\xd1Q\xd8\xd2\xc5Qu\x8e\xe5\xd9\xa1\xdf\xc7\xf9,\x8e\x96\xf4T\x86\x11\xbc\xfb\xa7\xa2\xac\x1c1\xdb\xc50\xd8\xed\x02g\x97bpW\xa3M\xb4iB\x1fNc]\x84\xbaz\xa4\x8dI\xeakO\xea\x1a%\xcb\x8dv\xd0\xe5\xcf\xb9\x1bK\x0b\xbb\xa3[_\xf5@\x93\x1bQMd\x01\xfc\xac\xa2\x9c\xd6\xbc.Z3\xee9t\xb2\xce\x98\x9b\xde\x01\xfa\xe0\x14\xc6\x9b\xed\xfbA8\x97\xb8\xd9\x9c\xe7\xf1\x85\xb8 |,\xd0Z\xc7\x00\x91F\xcf&\xe9\xde\xb420\xbb\x16\x02\xe5\x8f\xf9k;\x8f(\xee\xb6Ppo\xf1$\\\x07\x94-\x97'\x18\xb2\xd9\x85\xbaA\xa9/\xcb\xb0\xc2A\xe1\xed+\x9e\xccZu\x96A\xcc*\xfd\x99;d5\xd0\x92[\xc3\xbd\xafg\xef\xe2j\xf4\x85\x8a\x0b\xcd\xb4\xb6\x05%\xaa\xc3\xe7,o_\xfb\xadf\x04\x95ru\n\xe5\nL\x95U\xdf\x86\xb2\xa8\xaaO\x95B~>?\xf6\x9f\xec\xa4\xc8\xb0\x12#H\x84\xec\xd4\x9a\xca\xe1\xf0\x13\x12\xcch\x15\xfc\xf7\xd3'\xb8\xf2\xc3itU\xa5/\xbe>\xb272\x12&_&}\x00\x7f\xc81\xcd\x9f\x16\xaeS\xdds4\xc4~\x816\xc8\x06\xf0\x00\xf2\x9a I\xdf\xf9K\x12eiK)'$W\x10\xd9>;\xc0\x8a\xaf1\x1cB\xc1\xff\xb8\x80\x03\xe0\x85\x15\xb5\x05\xf6\xfb2LI\xbc\xf6\x82[v,>\xd7\xf7,J5]\xcb#C\xfdK\xe9\x83F\xf1\x873\xf9\xa8\x88\xad&\x96\x8fJ\xda\xd2\x98\xcc\x94\xec/\xec\x8d<_\xe5#l\xb7 $\xa55f\x10\x89\xdd\x1c\x0f4s&a\x1c\x05A\x1b\xfd\x90\x0c\x1d;\xa5\xcd\x05\x84\xff\xf9r\x8a\xd2\x87\xfc\xaa\x8a_\xb4\xb7,\xd4\xf4w'\x9d\xa9\xd6p\xb4\xb7s\x84\xf3\xe1$\xf5\xd7\xe8'\xda\xf5\xc4\xcf\xcf\xe9\\\x7f?\xc8/R\xa5\xaa\x1a\x8dV\x91bQm\x15FPl\x99\xe6\\ri\xf7<\n\xc5\xe4\xd9\x9dD\xfe\xb7\xee\xb2G\xe3q\xe5bD\xab}G\xec\xb9\xe5\x92L}\x16\x9b\xa5\x99\x84\x95\xbfP\xb2e\xb2\x01\xa95(\x0e\xe6\xac\x8b\\\x98\xef\xbc\x0d\x87\xa0|\xa3\x1dD\xb5Ni\x18\xe5\xe2\xe2|\xb8M\xde\x9a&\xde\xd9\x14P\xcdGU\xa2\x9f\xc8Q\x88\xea\xd1S\xd8#\xe1\x8d\x82eA\x07R~\xab\x99F\xdfDW,W\x8em\xb4\xfeF\x13\"kA>Zz\xd3\x1eV\x8eq\x90\x1a*l\xd7\xd7\xf0\x92\x89\xef\xd7\xd6\xb8\xf0C/\xbe\xae\xaf\xe2%d\x7f\xb7~$\x93d\xd0Ta\xbb\xa1F:\xeb\xef\x07\xa4\xa9\xcevc\xa5\xd8\xbb2\x94\x83\xe4\x9fm\xc8+\xd9hq\x95\xfbwWwxys\x1b\xf2\xfc\xe8\x18\x19Ee+\x90\x0b\xf7\x07i\xeb\x07.(`3\xff.\xae\xa3\xf8T\x18\x9e5\\\x03\x91\xc7\x8f\x9db`u\xca\x97F\xdc\x85V\xf8+\x9e\x16\x83\x846h\x08\xadP\x11Z\xa2#\xb4EI\xf1H\xd3\xc0\xdaM3 \xbc\xd4\x0f\xfb\x8d\xbd\xd7\xee^\xf1\x88\xbey\x9bM]\xd7nwhEZ\xa0\x05\x8d\x13\x8fP\xe9\x98\x87\xd5\xb8'A8X\xd4\x87\xd8\x12\x0f\xa5\xd96'\xdaez\xcdbQl\xf5\xb4\x9f\xeb4\x84\xba{I\xbc/\x13\xd12\xb6\xca\xc1\xc5\xed\xd213\x1a\xf1X\x85,\xbdQ\xd5'\xc4z\x1f^\x86\xd1U\x08\x82\n\x0c\x81\x0d\xdb\xa8\xc7`\x07l\x99\x12\x15a\x1d\xf2\xb8t:\x8e\xab\x05\xdac#)\xf9(\x92\xc6\xb06)\xe74a\xa0\xd3Dh\x04\xb3\x89k#\xa9\xc0\x0ef~\x10|\xe3\xa1\x96\xce\xbb}/\xb5X-\xcfkV\x9aW\xc0z\xdc\xd9\xa8\xc7Z\x84\x95U\x98\xcc\xfek\x04+\x96f\xdc\x96:^\x98$g\x10\xe3\x0d\xbc$}MP\xce\x16\x81\x11\xe9\xabwQ\x8a\x82\x92\xfc\xeeh\xe11\x8f:\xd9\x1b\xb0\xa4\x0c\xcc\x7f\xe6gUV\x13\xd6\xfa\xc9\x08\xfa\x83\x07\"c\x03<}\n{0\x1a\xc1>\x1c\xc0@\xbc\xd9\xa5o\xfa\xbbp\x00;\xe2\xd5\x0e}\xb5\xd3\x83\x03\xd8\x15\xaf\xf6\xe9\xab\x01\x1c\xc0v\x1f\x86\xb0=\xa8\x1d\x92g8>\x852\xb0\x98\xfev\x19DU!\x7f\x13\x07h\xb4;\x19<\xa4{\xd9\xee?\x1a\xc0=L\x0f\xebH\xb6L\xe5\xa5\xb0\xfe\x9f\xff\xeb\xff4PY\xf40*\xaas{A\xc91\xac_w\xb4\xea\x06\xd27\x0d\xa4_;\x10\xd0\x0df\xa0\x0c\x06\xffV;\x1c\x98:\x1c\xf0\x0e\xdb\x13O\xae\x0f}\xacC2I\x90\x08\xd1\xbd~\xa8`\xfd\x13\xc9\xd7\x0c\xa3y\xa1Wf \xe5qY\xe5}@?t\x94}\x91\xa7l+\xf3[nuS\xb1\xa8`\xb5\x1d\x89\xcb4y?\xe7#\xde\x96\x02\xa0\xd5\xef\xbdD\xab\x01\xa0\xebe\xa7\x85'\x10q0!\xf9\x08\x1dWjt\xf2\xc5\x0cs\xf2n\xb6\"\xa9\x0f\x03\x80\x97\x91\x93\x85\x17\x1fESr\x98\xda\x92\x07\xac\x1aWZ<\xb4\xd1\x98J\xdd{{\x83G\xfb\x80f\xf9OF\xb0\xb7\xbf\xd3\x7fT2\xf8Rp\xa9B\xd0v\x95\x85\xe3)\x9a\xc7\x12D\x06gj\x9d~\xa5N\xff\xcc\x85\xb0pS\xd7\xe6\xd9\xae\xbc\xd1\x9bxh\x89\xa32\x93\xbef&\x83\xe6\x99\xf41\xe5\x85v\xe1\n4C\xa8\xd7\"R]\xaa:\x90\xef\xc3\x0f\xa4\x03\x89]~X\n\xe5@jQ\xdaH\x0d\xf7@fr\\\xc3\xbdtL\x9bS\x82@\xaf\x1a\x0eL\xb7\x12\xa4\x1623\xed\x16\x13\xe3\xafl\xb3\x1d-\x91\xeaq_\x93\x83\xd2ZqV\x83\xbb\x9d\xd9*F\xec\xc06\xde\x94\xa8X\xb1#\xec\xd1B\xb1\x1a\xb5\xf8Qj\xfa\xb3\xf6\x83\xe3\x1a\x86_\xc2\xb4\xb0\x81f\x05w\x87j\xda\xadtP\x8b\x1d\xf9\xa0{.\x02X\xc1\xd4a\x036\xac\xcc\xcc\x8e\xe1|\xa8\x07\xc6\xa2\x86yj\x82\x85\xd4\xb0\xf8E\xca\xd1\xdcX\xc6\xc7\xa8d\x1b\xe4\xa7\xf5\xc2\x7faq\x9b\x9fA\xb9`\xa8\x80\x1f\x97\xcdU\xdd\x9e[\xed\x7f\xbfHB\x87\x9e\x989k&\x98x&\xe7\x18:\x06\xd9\xba\xf12u\xbd\x84\x02>\x1e}\xae\x9a\xdeJ4\xb2\xbd\x8d\x83\xa1\xab\xb7=`bv\xdd\xc0\x90\xb1\x92F\xe6\xb4\x1e\xc3\xe0\xf7\x1f\x03o\x0bC\xef\x8cD\xca\xbc\xf2\xa8v\xf4\xa3\x12\x9d\x97\xb7\x8f\xd9\xb0\x98\xe9 \xcb[\xbeJ\x15E\xb8~\xf5\xeb\xca\xf9\x16V\xa9\x8c\x1c\x9e\x01\xb6\xc1\x0e+\x94[\xbf1\xb4,x\x8f\xf9M\xeb\x86FKL\x1bFR/\xd4S\xcf\xf2v|\xa2!\xa4\xfaq\xd5\xf3Bw*\xa0(+p\xeb\xe1\x14bLy\xd2\x92\x04\xa3\x9cR\xb7\xba\x99)e?/^\x17\x176\x035y\x1f\xcfq\xae\xcf\xcb\xac\xd1\xae#\n#\x04J\xd9T\xca9\x13\xa2j\xda\xf0\x92\xc9}n\x8b\x91\xc6^\x98\xcc\xa2x\xc9\x8c1tn1\x18\x17\xfc\x9d\xa8\xd7\xc2r\nT\xaeY\xe9E/T\x85\xdd\xbcV\xbd\x1fG!\xb5\xe1y3\xb90\x0bi[qY\x1c3\x06\x0e`\xcc\x06\x85\xd0\x857\xb9\x14qj\x96Y\x90\xfa\xab\x80@\xea/Ib\x8cw/\x06\xb2\xc8\xc2\xcb\xdcG%\x1f]\xf1\x86\xa7\xec*L\xadx\x1aWW\x93O[<\xe2\x80apl\xe1}\xe0+\x86;\xb6_ k.\xecc\xe1 \xf8\x9a\xa8\x1bEW\xb6Z\\\xe9\xf1\xa6\xb0\x01\xd58\xdd\xd1\x8e%\xc4\xd1\xd9H\xcak\xae\xaf\xc1\xc1\xc8\x82]\x98\x8a)\xe8kk\x14\xdafZ\xa9|\\\xe8\xad\x97t\x0154\xd5\xa4P\x1e\xb5\x89E\xf2\x89J\x06O\xc5\xbb\x91\\\xc3\x9cgd\x16d\xc9Bj\x80\xfd=\x12%\xc2\xe4\x1e\x0d\xb6W1\xc9\x1d\xf5\xb2&\xbd\xa8\x8e\x9d\x12\xbe\x18e<\xd3\x8fL\x1a\xcd\x81\xfcW)g\x9a\x96\x19\xf3r\xdaZ^\x14\xcaDz\x9c\\\x15\xfb\xa7~\x1e\x9e\x89\xeb+\xdd\xa4hLH\xabLB)\xb1`Z\xc4\xba\xaf\x84 \x10\xe7e\xe5\x9e\xe3\xc8\x0b\x02\xba\x0d\x8bE\x9eF!\x81\xab\x05 \xe1*\xcf\xa8\xb45\x82\x9e\xa5\xe9?U\x89f\x89:n\xd8]\x92\xfaAP\xdajj\x979d4\xbe\x00\x85\xcc\xe6W\xf2\xaa\xb9\xd2;;b\xdcJ\xb4adw\x99@\xab\x93.Q\x90\xdc\xe9\xa9\xdc~\xc5\x97\xac\x18yy0\xa5\xfd\xd6$(T\x00\\|m\x080c\xec\xb6*\xc9\xea\xbb,{\x9a\xd5\x9d\x99(\x9b\xc8\x07\x0c\x85J\xe9\x10J\xf37\xd2m;qa+V\x10I/\x1e\xb5>r\xecXY#<_\xbe\xd0\x89sc\x04\xb1\xeaYP\x7f\xa9R\x0b\xdb\xdc\xe7\x84\xc8\x10\xc5[\x04\x01p\x16B\xb8\xc4\xae`\x0c&\x95\x81\xe9U\xb8,[n\xd4\x15M\x16\xfc/\xe9\x96\xb9-f@\\\xdd\x06=#$Z\xe6i\x90\xf93\x95Q\xac\xb6\xa6l\xb1z{\x0c\x96{=\xe4D\x969\x90\xab\xc4]!.\xb7b\xb5%\x9eZ\x97\x89\x17sH\xcaBQ\x14\x1f{\x93E\xb9\xa2\x94\xe2|\x12\x93\x12.\xb4K\x8b+\xf0*bDSKU\xb9\x0din3\xda\x04@Lgz\xef\xde\x06\x8c\xb6\x9e\x15DK\x97\x10\xbd\xd9\x1c \x18\x04\x10\xd2qxV\xa9|c\xf3\xb4\xb8\x18\xc9X]+\xb7\xa4h\x84\xdb.\x97\x16\x9e\x0e\xfc\xfd3\x9a\x940`\xc7iZ93\xcd\xf5\xf5\xab\x96\xbc\xf6^\xdb\x98X\x16\x95\x18\x84\xa9/\xf0\xe2\xee\xde=\xae\xad\xd8\xc6\xc4\x0c>\x86\xb6\x1e\xe6\x8e\x95x#\xd4\x9c\x1d\xb9\xd5\x1c\xcb\xfe7\xbb\x0f\x06\x8eM\x87\xc4\x91\xd6K\x12\x7f\x1e\xc2\x10\x8bv>\xd7\xa2\xd0\x05\xdf\xc5Tr.x.\xcf\xe6:P\x13\xa4N\x9aH\x0b\xe8\xee+\xe8#\xe7\xcc\x8f\xaf\x95\xaf\xf4\xaeY\x13\x17x\x08@\xad\x07\xd6$\ng\xfe<\xab\xc9$.\x985\xbdl\xd1\xe4\xc1\xb5\xf6\x82\x8c\x0cA1\x02\x96\xd6\x15&^n>V\x9cN\xec\xcec\"]\xe5\xc6\x15\xc9\xba~\xe8\xe6a\x97\x87\\\x8c\x84\xc55\xd4B\xd1\xdd8\xa12\xa5h J\xa6\xb9*k\xc4s\x06\xa60\xa4\x87>B\x86\xb1\x14\xe8\xa7U\xacR,_\xaa\xe0m\x11\xcfn\xfc\xe8\xa1\xe3b:\xd4\xf1\x19\xcbl\xdd@U]\x9d\x02\x9cr>\xde8=\xcb\x99y\xfaG\xb9\n\x92=\x82\xfd<\x86t{\xfb\xb1#|\\-\xcf\x82\x0e\xd8\x9dN\xe8\x14\x1a\xa8\x9d}U\xae\x97\xf4(\xc2i\xc2\xb6f!K\x98\x8bE\xb9\xc4a\xd3\x06 \x0fq\xef\x82\xe5@\x87\xfe\xef\xef\xa2\x8dY(\xbc5\xf1\xec,\xdc\x06\x1e\xc3\xcd\xe32\xcb\xd8z\x8d4\x14\x1f\xe5\x1b\xc3\x9a\x15b\x8f\xc2\xe7\xe0\xa9E\x9c\x8a\xea\xa1\xba7\xe9\x93\xd9\xe8\nU\xde z\xf4\x07\xdd\xed\xf2\xcd\xe7\x12'&r\xe8\xb2\xad\xeb\x91\xbeTM:\xe7\xe7$}s\x15\x8aj\xcfI2\x89\xfdU\x1a)\xf6\xd3\x99\xe9\x83\xd7\xdeR\x0dh\xe2\x99\xea\x9e^//\xa2 iq2i\xd7\x98\x91`~4\xc76Q\xf1\x14\xe5D\xb9\x06\x86\x18\xc8\xec\xc4\x11\xccN!~kC\x0d\xeaW\x1a\x9b\xb6\x99\x87M\xc4\xc2\x14j\x14?\xf2\xd2k\x9b@\xee\xb2\xfa]\x19\x81L\xaa\x0e\x0f0\x82\xdb\x7fY3\x91\xed{r ]/g\xffS\xb9\x95\xcf\xdc\x15}\x1d\xff\x1b\xda\x0fUUs\xa4w\x03\xa3\xdc\xe9mq\x94\x9ek\x9a,xt\xfb\xe4\xc4n<8\xd3B!Fj\x85\x0b$w\xc4\xd8\x10O\xb7\x1a\xe18>C\x07'\xe1H\x91\xa1<\"\xbe\xa8\xacH\xd8\x00g\xb9\x8fv\xfc>\x1f\xfa\xd6\x16W\xf6\xb1\xf0\x03\xe5\x14r\x9f>\x19\xb4d\xc8\xd5\x9b\xf4\x83\x0b\xd24\xdaVX\xa1\xe7\xa3\x88\x0b\xd6\xf99I^E\xd3\x0c\x0dN\xd4\xa5D>G\x16+Yt!/N\xc8\xf7\xde28BnE\x93\x16\x7f]D\x88\x0e\xed\xbdAO\x83q\xc8\xfc\xb0\x80\x0dq\xb7\x18\x04\x1c@\x0cC\xcd\"\x0bSS5\\p\xd1\xa9n`\xb5\xa8\xaa'\x0f|-#\x91\xe3\xaf\x9bx3\xf2M\xe4M+ \xacjID\xce3\xb1\xd0\xc8q|\x88\x03I\xba!\xb9zG\x89@x\x1c\xc7v\xa1IB*\xad\x1c\x97\x1bz\x916\x11\x84\x9d\x87\x06q\x88\x8e\"\xb6\xcbs\xf0\xc3I\x90M\xc9\x10\xc6\xa1=\xe8\xed8g\x12\x12\xfcC\x07\xd3\x1f\x0c\x9c3\x85\xb0-W\x81?\xf1S,\xdf\x1b<\xc0P\x06{\x83\x87\xfc\xdfG\xec\xdf\x9d\xde\x1dM\xe2N7S\x10y\xcc[\x99t\xdf\xbd\xf9\xea\xabo\x8e\xcf\x8f\xde\xbc~\xf1\xf2\xabS|\xf5\xfe\xed\xf3\xc3w\xf2\xab\xda\x9d6\xe8\xed\xfdN;-[M\xbd\xaa\xf6\xd2@\x165\x07\xf3\xf5\x8a\x0c!\xab\x9e\x10+\xef\x9a\x02d\x08v\xcf-\xb6\xa0c\xff\xfdF\xd5\xe2\x02(\x9a?\xd2M\xa3\xf9<\xa87\x0ej\x18\x91&\xabJ>\xa2\xd4\xd4uy12\xfd\xbaYL\xb2K\xce\x19\xe4\xac*\xaf\xa8Y\xff\xfc#63K^\x81\x1cod\xad\x89n\xaeU\xad\n|\x1eA!2\x12\x8dJ\x0ef%l\xec\xef\xa9\x0c\xc8\x97\xc2F^\xa7\x85b'\xa7\xca~\xc8\xe2:\x94\xd1\x8c}U\x1d\x04\xdf\xbca\x83\xae@\xa3i\xd8H\x17\xa1\x18\xac\xa0\xa9\x16\x8b\xde\x19\xba\x9br\x87\x94\x1a\x10\xf9\x1c\x18\xdeQy\xa1\x8f\xb7\">\xdd\xd1\xd6%\xb9N\x90\x91&\xdc\xa3\xc2\xc2\x1d\\\xbc\xc3\xe47C\x16\x14w\x1c\x9e\x9d\x95t.\xa22\xdeZ\x1e\ny\x05%\x0c\x0e\xe9\xd8f]\xa0\x91\x86T\x1d\xc3\xd0\xa7\xb1O\xff\xd2\xe2O\xa3haT}7~\xb9\xd1\x01\xcc \x9a&\x18\xde4\n))\xda2\x1ew\xb7\x1c\x9d:4\xbf\x1cJyK\x96\x87\x98\x90\xfc\xeezE8o\x0c\x1d\xb0\xc4\xed\xaa\x977\xbae\xba\xafn\x18\xec\x86\x9b\xf8\x91~\x0f\xef\xedj\xb7\xf0#\x95\x05\xcbP\x18.\x1a\x0e\xed\xc1\xbecg\x94\xf2\xec;\xb6\xe5\xa7$\xf6\xd2(\xa6\xe8\xd3t\x94\xa7r\xf0\xb2\x1b\xa7F;\xa8\xbb\xba.h&\x8c \xa6#\xa8\xe2EH>\xa6t\x13i\x12\x91\xd3\xdd\x80m\xe3b\xbc\xcc\x87\xbd\x19\xb0%\xf5\x84\n?N\x1a\x1fh\xc1\xba\xdb3\x93\xc0=\xe9\xea\xa3\xc4\x94\xfb$i\xca%\xe8W\x14\x9dEf-\x17\xd7.B}\x04\xe5\xd02N\x81\x98\x06\xae\xf7\x18\x85\xbd\x07;\xbb;\xbc\x7fV\x1f;\xa2\xc8\x82\xce\xdf\xf4-\xf3\xc2L\\\xecd@\xcb2\xd8\xe6\xcdt\xe88\xb7\xf9\xa0\x9e<\x81~\xcf\x81\x0e\xec\xef\xed\xed\xec\xdf\xcd\xa6\xaf\x1c\xa9\xfc\xe0\x18\xf4\x8dg\xea\xc0\xe9\xceI*\x0e\xf9\xe6[Y\xa4\xf3\xeaIjd\xf1H\x03\x8b\x87<\xd1E@L\x0c^l\x13n{\xe4\xdcz'\xf6w\xf4\xd7#\nOV\xa10(\xa4\xb5\x03\xdb+\x92.\xa2z\x034\xc9\x8dl\x0b\xa3\xcd\x0b\x9a:\xf6\xcf0\xc0\xc5\xd8\xfa\x97\x7f\xc9\x87\x83\xaf\xa21\xa5Ng\x9b\xcd\x9b\xae\xf6\x0eJ\xbb\xfd\x1d&\xf5\x0evv\xf9\xbfLM:\xd8ej\xd2\xc1^\xaf\"\x0e\xf7\x1f9B\x14o\xd3Y#C\xad\xc3G\x99E\xf6\xc7\xa1\xddwlK\xdc\xc6\xbf\xf3\xe6\x96s\x06#\xb0~\xc1L\x8d\x1d\xba\xcf\xb7F`\x8d\xd9E\x0b\xfcrf1\x1d\xc1N\xcf\xe1VK\xa5\xe8\xbd\xa2\xa1\xba\xb0\xdd\x1c\xf2y\x9b\x16t\xe89\x80\x01L;`\x9d\x95\x9c\xe3\xb6\xda\xe9\x07d0n\x85\xf6\xee\x80%G\n\xed\xdd\x1d\xc7\x1cx\x8d\x8f\xe4\x01\x9d\xa2^\xd7\x1c\xda\x8f\x1e9\xb65\xf5\xd7Tl\xb0<\xad\x19\xccF\x81\x86\x1fT\n\xd5\x9b\xcc\xaeW\x00\xa0\xd5\xe4%]\xbf\x89\xd0\xd4\xb3\xe6\xe8\xaa\x81'\xb1\xdeV\x813\xe9~\x95\xea\x10\xd3\x95\x9a]\x8e\x13\xc0\x96#\xe6\xb1\xc7\x05I)|\xd1j\xe9\x99\xda(\xca\xd4of\x9b\xb7\xb9\xf5e\x86\xab\x92X\xeb\xc8\x0b\xff\x94\xc2$\n\xd7$N\x81\xa3y\x1a\xc1*\xf6\x97>\x06+\xc4)l*\xd25m\xf7\x81\xe1\xfc\xe9\xef\xe8%\xe8~O\xe5_\xaa\"t\xff\x01\x17\xa1\xfb\xff\xaaE\xe8\x87\x86\x83]}\xcf\x01\xbb\xab\x03,\x05x\xcf\xb1\xad\x97\xc7\xe7oO\xde\xbc{\xa3\x1ez\x9e\xaa\x9e*\x17\xab\xda\xab\n\x15U\xba/F\x8c>?\xf9\xe1>/b9FxXV&\x1e\xa7\xdd\x17\x8f!F\x8b\xb3) HJ\xe4\xac7\xe3h\x1c\x9fir\xa6\n.W\x8d\xed\xaa\xa7\xa3%c\xe5rP\xc7v\xa6b\xbc\xbb\xdc\xca\x1d\xefF<\x05\xdd\xd1\x80\x1b\xd8\x0d\xad\xe7B\xb9\x98{\xe3\x8c3\xb4'\xc6\xec\x93hzVX\xc0\x8c$}\xac\xcf\xb2\x19\xdf\x16\xf1\xf7\x0c\x14\xc5\x80\xf75\x1c\x1b=\x92\xff5(\x8f\xf6\xf4\xa4b_wEG\x99\xc2\xbeco\xb5\xa3\x16\xb78\xd99\x80<.5T\xe9\x00\x82\xa8\xfaz\xc2\xcc7\xab\x10Gsv\xcfaJ\xa2\x8c\x19Z{\x08\x8b{\xf7`\"\xfc\xb44\x1f>\x96\xa3@\xe1j\xe0w\x94,\xe0Z\xb0d!\xff.\xb2'\xd8\xda\xa7OEk\xfa\x05\x9a\xdcv\x81vM<\x12\xb7\xe3\xb3~\xb1\x1c\xba\xe1\x90\x01|\x99\x1c\xe7\xf7\x8ev\xaf\xc0\xe0\x12\xc2\x9a\x18\\\xce\nS.#f\x96\xec)&\x10Km\xcb\xa2\xfb6\xb7\xfa\xbf\xedT*H\xc5pmWg\x9c@ \xb6I\xb5\xdb8\x95\x92^\xe2\xdf\xf4\x94\xff\x15\xe9)\x0d\xe4j\xb0\xa3\xfa\x1dD-8\x18\xc9j7?\xb1j\xcf\xd19I\xdf\x8a\x8aof\xf5A\x92s\x90pZF\xf7\x94\x0b\x11n\xabqt\x06C\x93i\xdf$\n\x934\xce&i\xc4r\xe3\x83\xe4\xb7_.=(\xff-\x1d\xbb\xc3\xf2g\x9c\x08\x1c@\x06\x8aG\xf3\x86\xe0\xef\xdfzK\xcaV\xc7\x9b\xf5\x9e\x1f\x9d\xc2w\x07\xfdH\xf3\x03\xdc\x15\xda\x97\x9e\xe3\xf2\x93h\x8f\x1f\xad(\x0e\x08\xcf\x94\xdd]\xc7\xc5\xfdLe\x03\x177\xed\xa4,\"\x04\xecUI\xb9\xc0\xf2\x82'\xe2~wQq\xcc8:==\xc9XN\xbe\xaa\x19\xc7\xd1\xe9\xe9)eH\x9f\x93I\xe0\xc5\x1e\x9da\xd5E\xe3\xe8\xf4\xf4\x03\x15\xafx\x13ji\xe0\x930=!\x93T_\xfe\xfc\xcd\xab\xdaB6\x17c\xf1\xbb\xe8\x92\x84\xfa\xc1?\xf7R\x8fy\x11\x92\xf8eJ\x96\xfa6^\xf8\x81a\xe4\x7f~\xf7\xea\x9b\xc3 8\x8a\x82\x80L\xf4S\xa7U\x9a\xca_D\xf1\x92k\xbb\xf5\x15N \xfd\xdeX\xe5\x15\x99\xfa\x9e~\x86\xaf\xfc%\xa1b0.n\xf5\xcb\xd7\xde\x92L_GS\xf2\xca[iJ\xa3\xa9a\xd5\xdfz>]\xb1\x9f3\x92\x18\xd6\xe5m\x90\xcd}\xcd|\xd9{\xc3pN?|\xf5\x0d\x1eC\xfa6O?|\xf5:[^\x90\xd8X\xfc\xd6K\x17\xa7\xc4\x80\x0b\xb4<\xf2C\xc3\x80O?|U\x87H\xa7\x1f\xbe\xca\xfdM\x0d5\xa2,\x9e\x10\x16z\xdeP\x83n\x94\xd3\x05!\xa9\x1e\xaa\xef\xc8\xc7\xf4]\xecM.\x8fL[%\xafa(\x8e\xb2I\x0e\xbb\xbc\xe4\x86\xa5\x0b\xf7m\x0cY\xc98\xf05<\x81\xa9\x904a\xdd\xe9\xe8\xf8\xd4k\x17\xe60\x82\xe9x\xad\x18\x9d\xd2g #X\x8c\xe7\x9a\x92sd\xe7u%\x170\x82sJ\xf1\xcfu\xa7\x11\xf0c\x18\xdd\x89\xed\x0bz\xf6~\xfa\x04\x9e}\xe1\xc2\xcc\x85\x95\xe3\xc2\xc58(\xde\x05,\x07s2\x9e\x9f\xb1\xe8\xbaK\x8d/\x03R\xd6kz\xa2\xc7\x0e\\\x8c\xaf\x99\x1a\x99~~\xedB<\xbe>+\xf4\x99\xd0\x96Z7*}\xb4>9\xf4\xbd\xe1~_\xd5\x05e\x82\x954In\xfd\x9d\x07\xfff\xf9\xf4_\x8e\xe5\x93\x99\xd7pl+\x0b\x93I\xb4\xa2\xd2L\xa22o\x1a\xa7m \xdf\x84f\x01\xfcq|\xc6\xae\x00\xfa\x0f\x1c\xdbG\xef\x8f\xbf\x9b\xf5{\x15I~\x1c\x9f\x8d\xd33\xc5\x89^;\x11\x93~\xbf\x16\xf5\xf8\xa2\xea\xc4\x93\xbb5\xc4j\xbfMe\xb7^\xbe\xa1T\xa6;\x11lV\xe9-c\xae\xf6U\xab\xa8\x19\xbe\xae\xdc\xed\x04\x8ckS\xde\xae\xd8[U\xc3\xb0`M\xab\xaf\xa7\x9ct\xa8\xd6\x91k\xf6~W\x1d\xca5\x17,\xd5^\xe7\xfc\xfd\xae\xd3M\x88\xb2e\x97\xbc\xad=\xc7V\xbe:\xe7,\xb1*\xd5^\xf0\xd6T\xf8\\\xf1\xf7*\x01\xfc\x88\x1cf\xae\x8fW\x8eE\x91\x0c{B\x12\xc5\x91\xf0\x18\x8b\xf8\xfd[\xb9\xe8\x10F`\xf1\x8fp\x87\xcf\xecS\xa5\xd77\xf5\xea\xdb\x9f0\x92\xde\x08\xce\xbb\xb3r\x01\xa5\x84[[\xf5\xaa]\xb3\x7f\x9d\xa0\x8e\xc7\xdd\x98$Q\xb0&\xb6\xba\xa6\xf2CX ZY\xe6\x19\xd1\xdd\xcb\xaf\x01\x93\x15\x99 a9\xab\xdd\xc3\xea\x93\xdao\\xc\x96v5\xd9\xfaA\xb2\x0394zl\xf1\xa58!?1\x86\x163_\x8a\xac8\x0b\x12\xdao\x1cY*\xab\x8a\xe55\x1e\xb27*\xf6\xbdl\x9c\xf3\xba\x9aX\x05\xa4s\xc4\xde\xc2\x98\xaf\xe5\xc9\xe4w\xf1,p)\x0e\xdb\xc1)\xa8\x89\xb4J\x7f\xbej\xa2s \xae\xb4\xd2\xee\xb9Q B\xcb\x14\xc7\x01\xf9Y\xe7\xe1\xbc\xcf'\xfa\x1a\xcb\xe6\xa4U\xa0J\x94i\xf7|\xcd\xe4\xc9>.e\xf7\x1c\x00\xe9F\x97\x18\x94e\xe6\xf9\x9ahc\xea\x93\xe0\xc5\x03\xdf\x1b\xcd\xd5'\xbc:E\xb8\xe6\xda3\xac=\x8d\x96\x9e\xdf\x94 \xc4\xb8\x81\xe5\xc7c\xc1.>}b19)\xec0\xdc\xd8[\xc6E\xd1\xbfF\x18\xa4t\x8b)\xf9=d=Fh\xedoc\x0e\xadY\x97\x84)\x89m~\x81\xe0\xd91\x8a\xe6\x94\xc5\x9du\xc9G?\xb5\xb9P\xbf\xd5sX\x1d\x8c\xb4\xb3\xe2\xe6\xff\x070\xb1?\xda\x16\xdfw\xdb\x93\x85\xe7\x870\xb9\x9e\x04\xc4b\xa1\xea\xe9:\xbe\xb4)\x06\x1f\x087\xd0\xd0\x85\xc4\x85 -N\xb0d\x08\x13;6S\x03P\xf7e#Xp\xfc[\x19\x9f\x1f\x9f\xc4\xc4\x94f[<75\xf4\x08\xc2B\x19\x1d=v \xb3\xc3q\xd4\xe9\xe8\"\xc8\x8a\x87n\x12\x1e\xe1&p\xd4p\xad\x9a\xde\xde6\xf6\xb6)\xfe\xea\xb1QF\xac\x1c\xe8\x7ff\xaba \x9c\"\x1c\xa7\xf2\n|\xb9\xd8)\\\x83Rm\xd0I\xa0\x12\xddS\xad\xb7~\xedJ\x9d4\xc2n-\x05S\xab\xc2\x85t\xcf1S\xb4\x8d?X\x184\x84\x01\xe9\x9e_\xd1\x02\xe2t\xcf\xd7,F\x1d\xe9\x9e',{\x04\xe1+l\x13\x86y\xa4{>\xe1\xc6\x94\xf4\xa0xe\x13\xd4]\xd4\x8e\xfcu\xbb\x91\xbb\x86\xc8g X\x9a\xb0{\xae\x0d\x05\x0f\x18\xec5\x9f\x14\xde\x90\xf39\x19\x8e\xdf\xfac\x17\x03M\xb2\x00\xf6bc\x15\x87\x1fL\xd0\x88\xe7\x82\xeefd\x1e\xa6\xe0\xa7 f\xaa\xa9\xa4\xfc \x9c_\xa2%\xd5A[\xe6 $!\xbd\xf9,<\xbf\xd2zGV\xaaM\x87\xba\x84\x82\xf2c\xe0\xca\xc5\xd3\x8ec\x11\xe6\xa1\xf4<~\x8d\x07L\x1f\xcf\xe6\x13\xfe\xfb.\xd9\x80\x93\"\xf3\xed\xadO~g\x88y\xc39\xfa\x87\x0c\xfd\xfb\x14\xbfC\x17\xb6L\xe3m7N>\xbe\xfa\x89\xb4X\xbf\x86\xb5\xbb1\xce\xbf:o\x85\xc9(V\xfc\x12\xf7\xfaq\xed\x86\x9d\xf2\xa8I\xc7.\x88Ma\xb9`\x9d/,\xc7\xc5t\x14\xae\x1c\xd5\xbaU\x14\xa3\xd4F4a\xed\xe6\x98\"\xfeT\x88K-\xd0O\xca\xf1\xb4\xcb_\xe6\x7f\xdd\xb8\xec\x107O\x92\xa9\xf9r\xce\x0e\xff\x92O^\xf6&\x91U\x97\xe5l\xe5\xebJ\xe5\x85\\\x991\x8a\xc5\x80\x9c\xb2-\x8f=\xd8\xddw\xecc\xd9\x86V\x1d\x1f [\xc4\xfc\x16\xa2\xdcO\xb6\x88uu\xac\x0b\x97-\xac\x8f\xa8\x0c5\xd2\x8a\xa9\xec\xca\x19\xf7\x06\x15\xb0\xca\xb5F\xe5\xd4\x83\x94\x92s\xe9\x07\xd9\x18z\x16\xf3?\x87\nL&R\x08_\x0e\xe3<\xf0\xa8\xa7\x96a*\xdfW|\x1e\x98\xb8>\x14\x12Jy\x9d\xcb\xfb\x08\xd1\xa5\xce.\x03\xca\xd6\x89L\x85\x90\x8f\xd3\x88C\x8e\x12.\xcd\xa4\xa0\xc6x\x1a\x8f\xab\xd8%\xb8\xc2\"];?Q\xf0z\xf45\xc6[\xc8\xb3\xf33&\x05KNx\x89\x8c\xcd\xe7]*s\xfe\xd4\xe6\x828\xc5\x93\xed\x18\x97\x13\x7ff\x94\x83\xe6\xc1\xe9Q\x8d-\x1b\x9e8.\x04v\xd0\xfd\n:\x10t\xbf\xc5\xff\xbf\x80\x7f\x86\xadK\x15!\xdf\n\xa6\xe8\xb8\xf41\xb3&\xb5eZ\xc1\xad\xdd\x1f8\xb6\xfcJD\xa3\xcb\x0d\xddY\xc7\xa7\xa5.%z\xa3\xce\x8d\x82\xa7i\x91\x05\x83\xf4\x93\x8e2\x81\xa4z\xea\xb9\xb9\xb4\xef\xb0\xe8\x9bzD\xab\xc0\xa9\x18\xae\x8dl\xd3\xd6\xa5S;j\\\xef\xa6a\xf3Q]\xd9\xf9\xe6\xc8\xd7\xed\x98'\x93i\xc0S\x05\x92\xf6%\xd3\xd4\x0fv\x1fJV\xf0\x95\xbe\x8f\xbb\xcc\xc0\xb9\x8b;\xc8~#\xa3E\xdd\xb4\xbc h\x9a\x92\xcc\xaa\xeaO=F\xb5L\xf6BxsQ\xaf\xbe\xf1y\x15\xb3\xca&j/\xa9\n::\xd6\xdc'\xcaO\xa4\xb7\x9b\x93\x1f\x8a\xe8\x86\x14\n\xf4YSZN\x8f\x91\xf6zV\xb4\xb0\x82\x11D\x9dN3\x07\x98\xd4\xa4p\x10O\xc8(/#\x81tov:n\xa1-\xa3\x18\x81$\xb2\xfd\x08\x01;\xa6\xacE\"\x98\xf4\xb1w\xc6(\xdf\xf6vFKb;l\xe2\n\x8dB3p4\x97\x9a\xd2\xd6\xbb1o\xf9\xa8\x8bG\x97oG\xddu\xdb\x83%\xf6&\x8d{\xf7\xae\x10\xdd\x8c\xc5\xfe\x06X\xbc9nUW\xbd\xd8vP\xa3\xcd\xd3\x88\xb7P\xbf\x02>[\x81\xd8\xf6\xebV@\"A\xf8\xf3V\x97\x83L\xe9\xa5N\x9dgp)\xdd\x1c\xa0\xda^\n \xc84<S l\xc4\xe5\xb6\xa6m\xef\x97m\xe2\x81\x8d\x9fIN\xb38Z\xdaQ\x83\xad\x0c;7\x07F\x90\xe8ma[[\xd6\x17\x01T\xb6\x8a\xb4\xe3\xaa\x86Y\xe8\xcf\xd5\xf7z~A\x02\x9c\x9e\xd8\xa0g\xbf\x06\xa6\x90\x1f\xb9MP\x85:\x9f\x00\xf10\x0f\x80\xb0\xba\x00\xe2\xd1\x9cj.\x0el\x83\xee3]\x1b\xa9\x1d\xd5\xdczk\xe9\xfa\x9d\xa4\xa9\x90\xc8\xa5\x9e\xcbV=\x00\"-u\xe2\xf4\xa6\xa2.\xe4~\x0e\xbb\xfb\xd2\xba\xc5v\xdc}\x0b\x1d\x88\xbb'5wJ3?\xf4\x82\xe0\xba\xad\xba=\xe3\xb7\xc4~\x1e\xc1\x9aJ\xc2\xe2\x0f\x83\xae=4\xddjk\x98\xdd\xca}q(\xab&\x8d\x96\xd7\xfc3\x8fRGT\x84\x95/R\xea\xf8\xab\xca2\xcb\x8f\xce\x9a\x8c\x8al\x94\xad\xf8\xc2\xe3\xe2 u6\x1a\x96\xf9\xae\xf2\x0b\xa2n\xc5\x7fD\x84?\xd8S\xb0\xf1\xb4\x06\x0f\xd3\xb85\x0e\xd2C0\xd5g\xe0\x86<\xd1\x97\xce\x9eV\xdcB\x87]\x82\x86\xed\xfc\xee\x7fX\\\xc68v\x88\x97$\xcd\xd7\xd2m\xe0\x19\xda\x83\xbd\x01\x8f=\xb7\xc3\xff\xdd-\xc7\xaa\xdb{\xc0\xff\xe5\xb1\xea\xf6x\xac\xba\xfd\x1e\xff\x97\x7f\xbf\xcf\xbf\xdf\xe7\xb1\xed\xf6\xf9\xf7\xfb\xfb\xfc_\xde\xce>og\x9f\xb7\xf3\x80\xb7\xf3\xa0\xcf\xff\xe5\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=x\xa4\x8d\x9d\xc7|j\xdb\xc0\xa2\x11\x8b*\xbeNQ\x1ep\x13\x8f\xe3#\x1e\xae\xb2J\x10\xe5J\xd1\x94\xa0\x17\xb0\x82xH\x06\xd1z`\x8b\xd9\xb5\xf71\x9eJ\x1e\x16#\x8f\x1dR!\x8fr\xa3M\x08\x9a3\xb4\xdc\xe4r|\xe6\xe2\x9c\xf3\xccPy\xa4\x9c\x8c\xf9\xe9\xc6\xf0\x142\xb3v\x80g\xb9\xeb\x14\x99\xa52\x8c\xa2\xe3Sj\xd2\xef\xf7w\xfb\xfd\xbe\xc3r\xf7\x8a;\x91\x13/\x9c\xf3K\x11R\x8e-\xbe\xf6\x02\x7f\n\x93hJ`E'c2\xab\xe4w\xd4\x04\x9e\xb0H\x9dp\x80\xb1~0B,\x8b\xe4\xd9\x01\xdb&\xb0=b\xe5\x0e<}\n\xfd\x1e\xca\x14\x7f\x84~o\xb0\x0b\x1d\x16\xffS\x97|\xcc\xb4'C\x9eSP\xcd\x9c\xbb\xe1\x8ek\xc22CT -\xa52`D\xec]\xb5\xc7\x03\x16;\xa3\x1b{W\\\x10\x8d\num\x1dnP\xcc\xf1\x18\x8e\x84\xf0\x14\xbc\xc7\x0edl]x\x08Z2\xf6:\x9d3\x07\xe3D\xdc\x87\x9eF\x8a\xb0\x8e\xa2,L\x0b\xe7\xac\x90\xcc\xbd\xd4_\x13U|\xe0\xc1\xf8\"x\xaa\x1ar\xf1\xc7\x8e\xe0\xe9\xd3\xa7#\xe8;\xdc\x9b\xb53B\xc3#zb2\x07\xd7\x90\xbdz\xac\xac\xd3\xef\xa7\x84\xdb\x948\x17 \xda\x9a6aQ\xb3n\x1b\x16\xb5\x9a6\xa2\x8eD\x97\xfa\xd0\xad\x00\xe2\x88o\xe7\x84r\x93\x1d\xea\xe6\xe1DM\x99/\xe2[\x10\xd6\x18\x97\xad \xac!\x15\x92(\xec\x84E\x0b%\xac\xf1g\x11\x07\x93dBW\xc5\x0b'\x8b(\xdeH2\xa9\xe5\x06\xf9b`\xd4z+\xf4\x96\xc4\xaaK\xec\xf9\xd9\xc3\xbf\xf0\xe7\x1b\x8d\xbd\xcd\xd0Y\x9b\x16\xfe\xf7\x05G\x1e\xf8\xe1\xe5\xdd\x8f\x9d\xb7\xfa\xc5G\x1f\x05\xd3\xbb\x1f\xfc\xef0\xf0\x99\xff\x91\xdc\xfd\xc8\xd3\xf4\xf7\x18z\x14\xa6\x93(\xf8\x12\xbb\x956MG/\x9a\xff\x82;\x96v\x95\xf8\xbf\x90/7 \xde\xfa\x17\x9c\x83\x9fz\x81?I6\x9aB\x9b\x19\xf8\xbf\x03\x16mLvZ\xc1\x1e\xc9\xfd\"&\xb3/\x0b\xf8d\xe9\x05\xc1F\xa3o3x\xd1\xea\x97\x06=}}\xb9\x19\xe2\xb7\x1a\xbeh\xf6\x8b\x8f?\xbb\xb8\xfb\xc1g\xbf\x07\xd5O\xb2\xd5\x17\x18\xf9\xea\x8eF\x1e\xda\xfb;\x8em-\xbdt\xb2\xb0\\\xe8\xd7\xd7\x96\xc62\xce\xebi\x15\x9dz\x88\x88GH\x02i\xddE\xa2/+\x1aP\xcf\x90\xe7_\x0b\xc7\xc4\x9c\xdaB2\x9b\xf7\xe1@\xd8\xd81\xcf\xa8!\x9a\xb7q}n\xe8\x8c\xc9\x99P\xd8\xc7\x95X\x1f\x10n\x9a\xd5\x9f\x03\x93\xeb\x14-\x17\x06\xb7\x00g\xecV\xdd.\xa0\x15D\xa3&\x88f%\x88\xc62D\xe3\x96\x10\x95\x04\x88\x18C\x95\xf9\x08T\xf6\x86\x832rX\xe8\xa5;\x03hB\xbc\xf8\xdf\xd0\xf3\xce\xa0\xb9\n\xfcT\x8b\x9c\x15\xcbI3\x98\xc4EFh\xf7wUc=\x10z\x8f\xeakv\xb9\x867eU\x8d\x885A\xe3\x14\xcb\xbb\xb8\x98X\x92\x89mYt\x8e\x1a\xa4is\x1d\x02\x92%\x9a\xd0\x01\xe8\x03\x01@\xd9\xd7f$\\\x8bx\x12\x9d\xdc\xceMM\x86\"\x7f\xbb\xe5\xcb\xa9\xd3\x8a\xa8x8:\xfdgkf\xc2\x9f\xb80\xc1p\xd3\x01\x0b\x8b_\xe7u\xbe`\xa1;\xfdy\x18\xc5\xe4\xc8\xc3`}\x96o\xc1\x90\x1ey\xd0\xa1e\xcb,H\xfd\xc0\x0f\xb1hY*\xcaB\x1f\xaf\xda\x0f\xc0\xcaJ\x05I\xeaO.\xaf\xe9\xfbk\xfe\xde<\x84i\xbd\xd3\xfb\xba\xbc\x9a\xb4\xb3\xdd\xc1\xa3\xddG\xfb\x0f\x06\x8f\xf6\xd0\x8e\xff\xe9\xd3\xa7u\x0d`4\xd9b\xbf\xa7\xdd\x04\x83\x9c\xbb\xb0\x80\x0eXs\x93\x85\x00\xaa\xfaX\xf0\xaa\xb8\xdc\x02\xbb\xcb\xbc\xe6\xed\xd0F\xfe`\x1fl\xfd\xf0C\xe2X.,t\xd7\xd0\xf9\x83\x0e\xec\xd7\x0c\x17y\xc0\xce-\xdb\x9e`(1\xd4*C\x07\x92q\xef,\xc7\xf0\xa70E\xad\xe1\x8aG3\xe1*\xa4\xa9+>p\x1c\x17\xb6\xd0h\xbf\xa4\xe0\xc2\xc4\x1f\xbd\xb3\xfc\xe2-v\xebY\x9f\xd2\x83S\x0f0\xd0\x00\x04\xf0\xa4\xaa\xe4\xde\x86\xc1c\x08:\x1dG^\x99B\xa3\x16\xa0\x15\xaf\x8d?FZ\xe5w\xe9\xb9q\xdc\xea\xe098\x9e\x141\x15\xf1\xf2\x9f9\x00\xad\xe8\x07\x0c\x12}\x87g\x89\x90\xc0\xc6b\xc5O\\X\xe5\xad\x8e`\xed8\x8f\x1d\xb8\xee\x06^\x92\xbe\xc4\xb6\xf1>\x83\xf7s\xef\x9e\\\xa4\xc6\xf4\x16\x0f\xdf\x8cSv%S\x84\xf5\xde\x9a\xb1\x06(\xc9\xc4,<\x9f>\x01_1\x96\x93G]>:\xe8bp\xb0\x86\x03X\xf1\xb2\x9e\x0bk\xfc\xa42\x02\xc5,\x99\xb9*X=A\x1a\x85\n\xb3\xe7H\x10\xb3[Q\xb6\xf2\x99\xa9\x92+8\x80\xf1\x19\x0c\x05\x0d\xcau\xb1\xaa\x14\xa8\xd7iK,\x82\x81\xe5\xba\x05Su+>@b\xaa\xc2\x82\xa9\x8a+LU\xa8c\xaa\xe2M\xd9\x80z\xe5|f\x87\xf6\xe0a_U3\xfb\xbchg0P\x8b\"^\xb4\xd7\x7fHIL^&\xc6\x80A\xf1\xf5\\\x1a.f\xda=?'\xc9\xabh\x9a\x05\x18G\x1e\x86\x9a\xa5\x98\x92\x99\x97\x05\xe9P\xbd\x9f\xff\xa7\xea/q\xd2\x8e\xfd.\xff\xca\x85\xa8\xf8i\xa46|L\xd5\xbe'\xd1r\x15\x85\x94\x80\xe8F\x06\x98{B\xf8.}\xe3]GYJ\x17\x8fw\xd8\xb4Y\x8a H\xa8\"_Ny\xb7_S}\x8eW\xe2\x82U@\xbcr\x0b\xc2\x03\xc7\xcb\xe1\xea\x9d*\x9aLl\xca\xf9=\xd4\xa1 \x16\xed\xf5th\xc2\x8a*\xc8\x95\xe5E;j\x91\x97\x17\xed\xabEI^\xf4@>\xda\xf0\xd5\xfe\x9e\x1e\x15'\xbf?*\xcej/\x18\xf3\x91\x91:\xc1\x9f\xd2\xde\x1c\x9b\x1dN\xe8\x88\xe3bA\xa6\x16\xd8\xa4{~\x8e\xce\xe7\xe7\xe7\xc8&\xf4\xdc\x02\x1f\x1d\x9b8\x0e?\xadX\xf5\xfcxTE\x0c\x1d\x98h[\x9e\xd4\x96\x0b)\x1fFTz;\xae\xce\xe5\x92\\\x0f\xc1\x8aI8%\xb1\xe6\xa6\x94\xe3]#3\xb0\x96\xf3c\xac\xe2he\x88?\x03\"UFwN\xd2#\xb1\x85\xcduYd\xf0dE&,!P\x14\xd74\x1c\xb3\xd0\x1fq\xdc\xa2.\xdd\x13\xc4\xb6\x8e\xa20\xf5\xfc\x90T\x1cn\xe4'buO\xa2\xab\xbaZ\x99h1\xa8\xab\xe5\xb1Z\x18\xb57\xb10\x9c\xa9\xb9\xf2\x84U~\x17\xad.\xbc\xb8\xa9\xf2\x8cU~\xe6%\x9c\xde5}\x10\xb0\x0f\xa2\x90r\xeb\x1f\xbc\xc0\x9fzi\x14?\xf3\xa6s\xd2\xf4)&t\xe8\x06\x917\xf5\xc3\xf9i\xea\xa5Y\xa2F\xb2\x97\x9f\x05z/S~\x89\xdd\x9f7\xb0\xf7\x94GZP\x04\xb1\xad%I\x12oN\x90+\xb24J\x01(6A\"P\x9d;T\xf2\xdcQ\xb6o\xf2\x94\xa4\xcf$\xf0\x92\xe4\xb5\xb7$C\xb0\x92+o>'\xf1v\xe6[\xda\xfa7.L\xe0\xc0\xd8\xcf\xc4\xc5$l\x0eO\xc6\xe6\x82\xc5\xe1c!_\xb4b|\xaa\xfe[\xcc\xed\xddv\x9c~8\x8b\x8c#\xbc\x93\x1e\xf8\xc0\xb7'\xf9\xee\xf8=\xba3t\xe2`\xf8\xb7\x99\xe7\x07d\xfa\xaf\x12\x94\x8b\xdd\xd6\xbd\xa5~\x1a\x10c\x0f\xd6\x0b\x04\"\xa4\x11\xd0a\xc1\xe1\xdb\x97\x80l\x88Oi{\xd7r\xcc\x83\xf08rKkq\x84\xae\x95_dE\xcc\xe4\x013A\x9b\x18>\xf1,\xbd\x8f\xdf\xfa\xd3t1\x04\xeb\xe1\xc3\xde\xeacM{\xacz<\xf7\xc3o\xc8,\x1d\x82\xe5ei]\xffE\xfd\x13\x7f\xbeh\xf9AJ>\xa6\x87\x81?\x0f\x87`M\xd0\xdf_\xbfDP9\xdf\xf3\xb7\xff\n\xb01&\xcb(%\x85\xc7n#NZ+\xcb\xe5\xa4v\x8a\x88\xb9\xb5B\xe5_\x92MD,\x8c\x06\xcc\x9cq\xac6\xf7\x11\x89\x1eL\x15\xb2\xa6\nA\xbes\xaa:\x0dE\xea8+\x85H\xba\xb1\x8b&sNIb\xa9\x89(m\x1bl\x8a\x8a\x90;\x15\x8f\xa5\x81\xd3\xd5\xe6Am\xd3\xa2d\xdc\xa7\xcf\xff\xd6\xdf\x91\xad\x96\xa9p\xf2\xc8\xb1\xadrGV\xb3\xf4g\xe6\xd4\xa5J\xbe\x92\x86\x14\xe06\x17o\x83\x87{\x1a\xc1J\x02\x93^\x1ely\x01\x12\xabb\x9f\xa8^\x8c\xb3\xcd0\x8ba\xf5U\xeb\xce\xc2\xabk\x8b\na\x94\\\xb3qWvmy$C\\\x1d\xa7;\xdb\x10b2\x10*\xed3\x89\x8c\x02U\xbd\x8d($\xbaas\x0e\xb6\xca\"=b\x0ey\x0f\xf7\xaa\xfew\xbd}\xa7;\x93\xfd\xe8\xdb\xb4\xd8r\x12\xaa\x01\xeb\xe7Mb\xf0\x88\xbb!>\xe2n\x86|V\x83G\x0ft\x9b\xf4\xf4zy\x11\x05m\x9an\xb2\xf34\xd8\xe1\xaa;\x98\xdby\x1a\xbc\xad\x0d\xce\xd6\x03\xb5q>\xfeG}\xa7\xfb\xf5\xf1\xf7\xe5\xb2 /S>\xe1\xa9\xe5\xd4\x1eXj\xb9G\xeaxXn\xb9=\xf55\xcf-\xa7\xbc\x9d\xe6HR~\xbf\xe6\xefU4\xbd\xe6#T=\xe4\xe6\xfc\xbd:F\x9eV\xae\x82\xed\xec\xb5\x1a\xfe\x92\xa5\x94\x1b\xe83\xcaU\xb0\xed#\x9b\xa8\x1a\xfb\xee\x94\x81E\x95\xd6\x8e\xf9\x08\xd5\xea\x87|U\xd5N\xdf\xb0\xf7j\xf5\x9f\xf0u\xc5\x0d\xf5\x12Fp\xa8\xe6\x90{ #x\xa3\xbe|\x85i\xe1\x94\x97\xefP\x1ed\x18].9\xc2\x92\xbf\x9c\xbey]~\xff\x16FpD\x8f\xf2\xa3n\x82\xaaW\x7fv]\xaeqB\x05G\xdb:_\xf8\xd3) U\x11\xfc5+M\xa3\xb7\xb1\xbf\xf4\x99\xadv\xb9\xc67\xe8\x00\xa6\xcd\xb9_\xae\xf8\x9c\x92{\xdbJp\xf4\xdb1\x99\xfbI\x1a_\xab\xcd\xfd\"\xd7\xaa\xa4\xb9|\xc1J\xa3\xd5\xb6\xa1\xc2{M\x12\xf3r\x8dg\xa6\xf8\x01\xef\xca\xf5~F\x88\xfe\x955V.\xfa\x1eF\xb0\xf53F\x0e\xffY\xca\x08\xa0\xfc\xdd\x9d\xf9\xe1\xf4h\xe1\x07\xd3\xf2\xd7\xdf\x02\x8f\xf18\xa9w\x8d\xe3G\xdf\x03\xd8\x1a\xc1\xa9\xfd\xd2\xfe\xfb\x0d7\x0f\xd33\x91\xed\xe2\xb1@\xd1\xf0K\xd9\xe4\xac^0\xe0\xda\xac\x07\xc6J7N\xd7\xd3\x16V\xd9\xf2\x1bG\xad{\xe3\xc8\xd1\x0f\x0c\x8c\x00H\xa4\xf8\xd2~\xaf\xbf\x9dE\xd7\xd5) HJ\xe0\xfd\x98\x9c\xb9t\x92\xbc=\x1e8,\xc5;\x8a\xf7\xf4\xe7Kl\xa6\x12 \xf9\x06\x86\xf0\xb2\xbcd\x1fj\xb5\x9e \xd9\xd0\xff\xc2|\x0dO\xedw\x05\"\x98\x0d\xd8 K\xa5\x9bV\"|\x96\xbb\xff\x1aF\xf0\x8c\x8e\x98o\x8b\x12\xd6v\xc5\x91]\x02b\x0dBi\x1aI+\x00h\xd5R)\n\xf3\xbb\xba\x19|\xd5\x82\xd5+5<\x12\x8b\xf4\x95\xfd\"_\xc0%\x8b\xf2\x0f#\xb8\xe2\x19\x8d\xe8;Z\xe2\xdb\xbf\xe0\x9d\xdb\x01\xc6c\xc8 \x10f\xe4\xa3\xfd\x9d\xb0\xbc\x93\xe3\x93\xb31a\xb7\xa6\xe2\xf7\x88\xe7\xa8\xc0E\x0bM\x1b\xa1hr\x08\x1f\xed\x1e&\xb6\xd0a6\x0c\x8b\x0e?}b\xd8w\xe2\xc2G\xbb\x8fyv)\x7fR\xf4K\x87\xffm\x0e\x0d\xfa\xed\xcb*_\x0bU`\xfe\xa1\xcd]\xe3R\xeb8\x91;\x93\x87\xcca\xfc\x9a'\x82#th>K}\xc2\xa21\x8a|\xdf\x11<\x05\xff\xb1\x03_\xd9)\x83R<\xf61n\x00\x19\x87\xba\x10\x96b\x05\xeb&\xf0\xe7\xd6\xdb\xe9\x9b\xd2](.|\xcaRY\x19{\xde\xc2\xda\x05\x02!j\xb0\xbc\xa3[>E\xa6\x94\x19\x04\xd8[6#\xd9\x85\x0b'\xff\xf3\x17\xf1[\x94p\xecY\xf8 ]\xbc\xf4\x0c\x0b\xd5k\xd9\xf2\x14\xff\xd2f\x8d\xfc\x19s\xdc\xbd\xd0\xe0\xb5\xa0S\xf9\x90\x08\x1f\xd2\x0b\x16bY\x8f\xa7\xc2n\xe6\xd2\xae\xb1_\x11\x80\n\xab\x8dW\xb6\xca\xa7O\xca\x8e\xe2x[\x8d$sS\x07\x8e\xbf5\xae\xb8\x1a\xee\xe2\x95}\xc1\x9c\xa0c\x1e\xc1 \xe2\x11\x0c\xba\xa5\xdc\x8fl\xf4\x94\xd9b) qe(e;\xc9\x7f%,T#\x0bDa\xc6\x9b\xb8n\xfc\xdfm<~N\xc2\xd8\xf8_a\xe0\xa1\x170\x04>\xa9\x88OJ\x84\xee(&\x95=v\xc4\x9a\xe0f\xcb\xc4\xacB\x8e\xc1\xef\xc5jElJ\xbf\x8cI\xcd>\x8c\xca\xb3*\xea=\xc3\xa5\xf5l\xfb]]\x14,\xc4P\xba\x9ddB_\x0d\x99n1\x96\xb4\x88\x0f\"\xe5(\xaeDN\x17W^+\x9d\xcfX\xaf\xe43\xd6\x93\xbc:\xdd\xca\x14\x89\x94\xd3\x01\xc9\x19\xa9\xac4\xca=\x04\x9b\xf4E)K\xc4\xffOr\xd3\x87\x98\xb4\xe8/.\x15Q`\x04_a\xc4\xa1\xbd]\x07\xff:\xc6\xff\xff\x8d\xbe\xdb\xe7\xaf\xfe\x8c\x15z\x0f\xd9_\xdf\xf1\xf4\x97[\xa1\xfd\xf0!\x02\xd5\xa3\xb3\xb7t\xe2\x82\xe5\xd2\x8f\x91\xbcL\xbb\xf5\x17\xcd|\xbc\x1f\xecEIuE\xc7\x9b\xd9\x19&B\xca0\x11R\xc6T:\xcfTh3\x84\x1dJ\\\x8bl\x17\x90o\xe6\xbfRaa\xe1%/9\xfa\xbb~r\x14\x85\x13/=]\xc5\xc4\x9b\xa2\x90#\xf8/\x17\xcd\xce]n\n\xe623_\x97\x87rt\xd1x\xc8\x95\xe4(W\xac\xcb;o\xee\xca\x99\xfd\xb9\x9d\x91\xe5Z\xf4\x18H\x19\x85\xf8k\xb1E\xd2\xf4\xb1\x03\x0b\xfb\xaf\xe34-'\xbd-HP\x8a\xd9J\x16\xdd$\x8dbB\xa95o\x85\xa4E3!mfm\x93t\x1c*\xedP\x08\x9e\x96`\xc7\xf7w5\xa0Q\x14\xb7d\x15}\xfb9=\xd3:#4^<\x80\xe7tO\x0d\xd9?\xa3j\xea]\x85\xfc^\x92\xeb\x17\xcd]\xa19\xe7\xd7h\xceY\x9b\xd3\xc1\x03\xc6\x01W(\x13\x94\xc3\xed\xf8!<\xd7\xdb\xd3\xd1\x9e\x9e#\x177\x92\xe3\xbb\xd72\xf1YBNI\x9a\x92\xb8AJ\xfb^\x17I\xb2\xd2\x92\xbf\\\x05M\xf6\x05\xdf\x97\xb3\xd7\x01\x94\xf5\xba\xaen\xa1\x0d:O\xa6\x9ao\x91\xca\xaej\xe2F\x99\xf0S\x1b\x93\x96\xfd\xc1>e\x9cN\xedb\xab\xfa\xd5\xafj\x8a}\x92\x0c\xe1\x0f\xe5\ns\x92\xbe\xb9\n\xc5\xf7\xcfI2\x89\xfdUJ\xd1\xe7/u\x15_{K\xda\xd8\xdf\xea\xea\xb0m\x90\x0c\xe1\xbb\x12\x1cQ\xc1R\x06\xa6\xbd\x85\x07l\x8d\x88/\x8e\xc1wjxL!\xa6\x8d\xc3,\x08\xce0\xfe\xcd[[p\x9d\xd6\xdfo\xf8\x9b*\xec\xbd\x8a\x11\x8f\xf2 [\\\x85b:.X\x7f9}\xf3Z\xe3@\xce\xf5EM\xfb\xae\xc4\xfap\x86-=\xe3Y\xe4\x1f\xebb7P\x81\x82sd\xc5a\xef\xebSx\xf3<\xaf\x9c\x1d\xea\x9f\xb9`\x9f\xdb\x95\x94?\x9c\xc1\xffZ6\xe6\x9e\xf3j6i\xc3\x8c\x8b\xbe\xb4\xba!\x16\x1a\x08\xf9\xcc\x8au\xa6\xe3\xd2~\x89c \x03\xc0\x91\x84\x8e\x9dN\xc3\x85\xb7\xdc`\xe9\xa8\xaaz(\xa1\x95\xa4B\x18\xbfFV<\xb4\x07\xfb\x8e\xacZp\xe1u\xa9\x1eK\xc2\xf2f\x86\xd9\xe4\xde\x15\x84\x1b\xff~\xe5\xa5\x0b\x17,\xfa\x0f\xb7S\x81\xc0\xe6J\xc3\x1c\x07\xb6z\xad4\xff\xd2\x0d\xd6\x9ec[K\x92z\xba\xd0\xbb\x1a\xe5m\xa4\xd7\x9a\x8b`\xa4\x8e\xaa\xf3\xf4\xaav\xebI\xa1\xe4\xf3\x93\xe3\x8f) \x13\x9f\xca&\x9f>\xd5\x13D!\xf8\xd4R\xd7 \xa5\x9a\xa8]o\xa5\x9eK\xec\\\xddH\xd6$L\xf9p\xa20\xb1\xa9\xc0\xaf\xec\xc7rW\xf5<\x0e\xe0Q\x9c\xa2\xf7\x91I\xdaC\xb5\x9c\xbe\x90>\xfe\x10\xac7\x16t\xa0\xd3\xf1\xaa\xbc\xa4x\xae\x86j\xb0Z\xf1\xe8\xb4wu\xb0\x0b\x94\x1cR\xd5\x91}}\xfc\xbd68\xf9\xeb\xe3\xe3\xe7C\xd8\xeaWKf^\x92~M\xae[\x9c=\xa0u\xe9\xd0\xa9\xbb\xb85$s$e\x86Fr\x99u\x8a\xde\x14o\xd1\xcd\xc2\x90C\x81e\x01\xc0\xe51J\xe3y\xbd\xa44\xa0\x17\x06{\xac\xbcz\xe1\xb9b\x1d\xd7\xd4\x9d\xa9\\\x93x\xf4\x8b)x\xfcq|\xd6\xad\xe6\xce\xd7\x84p\x9b\x93\xf4[\xe2]n\x02\xf9[\x01dK\x1f\xe3\xa5\xa8M\x8c\x11\xab\xe5\xe73\xc0q\xd5\x06\x1cQ\xf8\"&\xe4\x97\xc6d\x82P4>\xa1\xc7F\xd0\xa5\xc8\x8d\xe6\x146?\xa68\x98\xe8\xef\x19rD\xed\x0c\xab[\xd3\xe4\xca\xbd\x93\x08\x19\xa4'\xc6\xfb\xa6\xe4G\xe6\x89\n\x05]\xac\xcd\xd4\x16\xb2\xc0\xba\xe5\xb5\xc2\x83\xbc\xbaB9\xf7\x90\xb9\xfc2\x94\x02\x84\xf6\x1eug,\xa1J\xef1x\x05\xf30y\xec@\x92g.\xa7\xe7\x867\x9e\xa0\x96\x04\xe5{\xe4*2=O%\x19\x89l\x06\xd0\x87\xfb\x06\x08\xb1\x08\xef~\xc2RY\xc9\x07\x90If\xb5\xb0*\x92\x9c\xd8\xbe}\xa6\xab\xca\xed'_\xe2\xbd\xea \x1a\xb1\x1b:!oV\xcf]+b\\\xbfD\x06\xaf\xfcp\x1a]Q\x88\x16\xbf\ns\x17\x95m\x86\x83\x9aB\x9b\xb5@\x05\x80\xb1\xce+\xa0\x9d\xa8\x8f\x81v\xad1\x1b)|\x8bM\x9e\xe1\x88\xf3Di\x8d\x17 \xe6\xbc7\xb9\x94\xaa!!\xcd\xf9\xe3\xc5\x10\xb9kQ\xa3\xbd\x92\xcdS8\x97\xedn\xf4\x08\xe0\xc0\xdf\x1b-\"\xfa\xbd\x07\x8emy\xc9u8y\xb9\x91\xfd\x86\xf8\x94%GA\x1dL\xab\xef\xda\xd9}<\xba[\xbb\x8f\x9d^\xaf\xc6\x08+\xf9\x0c#\xac\xaa1\x90Y\x12.\xf73\xc4q\xf51\xa7U1\x9fV0\x94\xb6\xb2J\x95}\xbd5D\xd4F\x8c\xa1T\xd6G\x12\xba\x15S\xf9\xe7\xde=4\xa3+\x07v.\x14#\x84eCe\x11\xd9\x12\x92\x82\x97@.Ml\xa9\xe1\x18\xf44\xb0\x02\xa0!h\x17\x05e1+w\xe6\xb0\xc0\x0f\xe1\xef7\xd5\xbb_m\xca\x1b\xf3\xde\xb5\xf9\"R\xd1\xe8\x05o I\x82\xcb\x0d6\xba3\xbbb\x12\x00\xd28XF2\x188\x0e\x1d\xc0\xf8\x8c\xdf\xc5(Yf\x91l\xdf\x86:\x10}f\x8a*W\xc2\xc9\x88\x0c\x0d\xa3V[(\x95Y%\x96\x0f5\x95\x1ceF\x10\xc2\x90\xe5\xc0 \xdb\xf0\x17h]\xb0\xd5wL\xfa\xf6\xc9\x82L.\x87\xd2uB\xabM\xdb\x8aN\xecT\"\xe2}.\x9d\xd8\xfdlKD\xc3!\x14s\x1bUVg\xb3\x81\xdd\x8e\xdc\x08\xc5\x1bZ*\x15\x1d\xb6\xa20M\xf6l\xbb\x06\xdb\xd3==\x97\xb8S\xb1\xf2b2\xfbN_\xb5\xf2bl\xdc\x8e\xfa:\xe1\xd5u\xe9\x89\xe9{\xb5\xf9\x19\x7f\xaf\x0e'\xe0\xcd\xab8\xba\xc2Li%+\xe2r\x85\x85T\xe1\x857I\xa3X\xb1\x85\x9a\xb2\nA\x14\xea\x1bXW\xe3@\\7\xca\xf0mn\xc4\xe7Za\x19\x8d\x87b\x12\x9aD\xfc\xa5\xb7\x1aB\xd4]z+\xbdp?\x8b\xe2co\xb2\xa0u\xf8O}\xbdI\x94\x85):\x1e\xd3\x1f\xfa:i\x84\x04\x90\xd6\xe2?\xf5\xf5\xa20\xb8\x1e\x82&\xe7Y\xb5zn\x9c=\x04\xbf[\xe3\xd3\xf66\x8bI\xa9n\xe9E\xb5~ \x03\x86\xa0\x01\x8e\xbc\xc2C\x98V+\xf8 \xfau\xe5U\xbcn\xf9\x8df\x90q\xb4\xa2\xc7j2\x04\x8d\xf7\x1c\x1b\xd2Q\xe0%\xc9\x10f\xa6r\x8e\x93C\xd0\xac\x13\xab\xf1\xca\xff\xe8\x87C\xd0\xc0\xfe\xf9\x9bWC\xc8\xaa\xef\xd7$N\xfc(\x1c\xc2\xa4Zv~\x9e\xe05\xd6\x10\xd6e\xe4\xd4S\xc8V\xa99\xea\x89\x8e\xacQ3\xf4\x12\x7f~/\x94V\xe9y\xaa\nM\xe2\x02\xb0\x81\xb2\xf5T\x0e\x96\xa5\x13M\xaf\xa2C\xae\xb6~\x1bE\x81\x9a\x8e\x14g\xd1\x9dEY\\W\x8bR\xbd\xfb?\xdc\xef\xdc\x9f\xeb\\{gFA\xc8\xb6,\xe8@\xea\x94\x82\xbd\xff\xe1\xde}K>\x8f\xaa\x0d\x06\xdas\x0d/|i\x1df\x85\x86\x7fN\xa20e\xb9\xb9H\xfe&c7\x88\xb5=\xact\x0b\x05\xd2\xb2\xa4\xd8\x93f\xb3a\x19\xefV\x91\xdb\x99l\xe7c\xc3)\x1b\x88\x9c?]7\x8e\x85\x18\x87\x86\x93\xc4\xe9\xc4$a\xde\x1fb\xc6\x97\xe4\xfamLf\xfeGi\xce\x1c(a\x05(\xf1F@\x996\x03\x85\x0d\xa7\n\x96\x0cK\xf3\xb1U+x50Md\x98j\xa8 ;\xe8(l\x13\x05\xb6\xe5\x05(\xe97\xec \x95\xb1\xd7\x14\xe3b\x84o\xd4M\x17^z\x82\x88\x99\x08d\x17\x8e\x9c\xb05b\n0\xdbW\xa8'm\x87\xbe\x9f\xa0\x9a\x08\x89\xf1a8=a\xf8\xfc5\xb9\xa6\x1dd\xd0\x01{kB\xe7\xcf,yP\xb9C\xff\xc2\xe4\xf2\xf8\xeb\x00,\x0b\x860\xb3\xf1O\x87\x8a2\xf7Qg\x1b\xa2\xe1\x10S\x05M\x9cztYK\xe8\xe2V#g\xacy\xd4\x0c\xd5\x89V\xcc\x90\xdd\x0c\xa1hf\x87b\x08U\x83\x17\xbaV\xe8\x9a\x8b\xa4`j\x13\x8c\x8c\x81\x1d\x96+\xa3\xc6\x7f\xea\x82\xe7\xb8\xb0\xe8\xc6$ ^Bl\xaf~\x0e\xd7&,\xe34\x83\x0eVj@\xfc\n\xa4\x8b\xa3)\x11\x06;u\xf6@\xa5\xad\x81\xee[\xca\xee(\xbd\xacl\x10\xba(\xdetJa\xe0\x87\xf3w\x91\x1d\x88\x89\xdej \xf9F\x96z\x95\xf7\xb2\xf4\xfa\x0e\xc7\xbcp!Q\x04\x8c*\xfb\x96\xb3^u\xa7\x98xP3J\xf1\xa9dM\xa0\xb9x\x10D#(c\x92.\xc9:\xe2\xd1\nS\x17@\x90\xe3\x91z\xdfX\xa6\x0c\xc8O~\x91\x01\xeb\"p S\x01\x9b]q\xb1U\x10\xa6\xda\x0d\xc3|\x19\xa6\xd1\xb7~\xba\xf8Z\xac\xf6\xcb0%q\xe8\x05CX+\xc7,\xe3m\x1b\xf5&B\x87G+\\s\xd7\xc3\xbaA\xe4\xfcp=\xf3/\xf4\xe4M\x00 \x02\x00z\x92Z1\x10/\xf0\xf3\x8b\xf1j\xa1\xbd\xaf\xd31\xdb\xa1M%\xaf\x86y\x0b\xc3\xc1\xae\xd0\xa0Pl\xad (\x07\x12\xac\xaa\xdf\xad\xa2\x95)\xf3\xb5\xc0=\xdc\xbd<\x12|\x15^P\xa7p \xc9\x15~_1B\xaa\xd5\xbfi\x95T\xb2\xc2\x08\x0d\x0f?}\x82\xd8\xb6\x06{h\xcb%\xd16\xdbq5\xf3\xe4w\x1cOx8\x90(\nN\xfd_\x880>V`B\x0f\xb7z\xb3\xa9\x0c\x934\x97^yZAS\xa6o-\xf6\nH\x96\xc6\x86\xebQ\x01\xda\xd2\x98\xb9\xd1kXP/\xb4\xeb\xf8\xf4 2\xfa6\x9f/3:\xce\xff\x1c\xb1\x8cp\xa1\xa0b0\xa2g\xa7\xc6\x02\xb9\xca\xe7P\xce\xa2\xc4\x83\x0fU\x80\xd0\xa7\xc2\xcf\xb7\x84\xc1m\x90\x1cd\xd8m\x82\xe8\xa0Cv\x11\xa8P\x07\x0e\xd0\xe2<\xe8\xf0\xbeb\x92\x05zp\xa6\x8b\x98T\x00\xda\xe6\xc0\x80\xcf\x84V|'\xd0\x8a\x19\xb4tG\x8cx\xda\x03\xac\xe2\xa5\x01z\x98U\xe5\xc0*\xc8\x0c:o\xf8L\xa8\xf9w\x025?\x87\x1a\xe3&\xaa\xb6\x03\xb0)\xe0*\x86O\xd5\x16\x0c\xe7\xdag\xc4\x0fk>\xd7\xfa\x05\x1f\x15?f${\x1f^\xd7\n\xb3\xe5\x05\x89\xe57\x05Ty\x17\xa4\xfb\x87?\xf0\x91\xd1wE\xfe\xf4\x99\xcd8V\xcb\xca\x93\x87y\xd0\x81 \x9dp\x0f\xc5`\xc7\x05\x8d\xc5\n\x9dqM8\xd65\x8a\x9bR\x93CLd\x93\xe8\xa1R\x96\xd0\x89\xc6\x1f\x01d+\x8bkfOq\x0dO\xf2$<\x8f\xe1\xba\xd3q`\n\x9d\x11\xa4\xf6\x8a\x9e\xc9\xe3\xeb3\x17\xd68\x97\x95\x0b\xd7\x0e_\xbd\xea\x0808\xa6\x99C\x98\xb3,\xa5\x06rC\x87?o\"bK\x17\xdd\xc0\xe7\x9c\xbb\xab\xa1\\\xd8\x1c\xbb\xe8\xec\x920\x8d}\x92\xe8\x81!\x9e\x1c(\x17\x0c([\xf6\x12Fp\x8e\xa9\xe9m\xc7\xe9N\xa3\x90<.\x01f\xc9\x0c,%\xd8\\t:f\xe8\x88\x87B\xa9y$\xc6\x01\x98\x01$\x1e:\x89\xabb|\xe6\x91\x88\x07\x0d:lifWhZ\xbbF\x03fN.\xae\xc6\xbd3\x87\"\x9e\x98kO\xcc\xb4\x1e\xac\x06[B\x86+\xb8\x91K[\xac \x01>\x1a\x92\x91\xc9\xcfi\x11+\xba\x0eCb\xdb\xda\xe9[naG\xc2n\xdd\xce\xd8HN\xe1@\xec~\xb8\xf2\xd3\x05\\\x92\xeb\x04\xfenAG\xdcg\xd3\x176qx\x9a[\x17P\xd9d\xddX0\x84S\x17>\xb65?3J\"\xd3R\xc1\x0d\xa5\xb8\x96\xa5\xf2\x1a\xadn\x1b\xeb\x8f@\xad\x8d3\xf7\xe1\xbaw\x8f\xff\xca\x1d\x8b\xabg\xa5\xf5/\xff\x92\x07\n\xd1\x9f\xd3f9)\x97\xf2\x80\xc5\xcdEg\xc3\x18\xcd\x9b\xd3\xb1\xafZ\x80\x1b-\xb2\x89\xc6\xdc\xfa\x0e S\x1e+\xdb\x08me|=\x1a[#k\x08\xd6\xa8g\xc0`k\x88\xc5\x83j\xb8\xa7\x1b\xa3\xc6\xc0\xfa\x03\xc5\xc9\xcaE\xc0\xfd\xf1hxv\x7f\xde$\x9aK\x0d\x91qzV\xed\xb7^\xa6\x0c\xef\x06(=\x9c\xb6 (\xa3\x01-\x1en\x02\x14\x06\x0e\xdb\xea\xb2\xcd\x9c\x8e{\xe8\xe8Ma\xc5\xfe\xee\x9f\xa1\x8dD\x92]0.\xc0\x1e\xd0#Z~\xd1w\x1c \x9a\xf6\xa8\xf7i4p\xee\x1e\xa0\x05\xbe\xea\xf7\xce\xdd\xdc\x80\x0d\x9c\xba\x9bn_\xaf\x07\x18R\x12Y\xb1\xe4\xc7\xa2\x8b\x8b\x98\x95^\\h\x83~z\xd3iL\x92\x84\xd5a\xbf\xb5\xd5b\xc2{\x89\x89\xbe\xa38\xf5'\x01\xe1u\xf0\xb7\xb6Z\xe2Oy%\xfaK[%\x9b\xfa\x11\xabB\x7f\xe9\xaa\\`\xf1\x85\xb6\xc8KX\xfb\xf4\x87\xb6\xc2\xd4g\xe5S__\x1c\xf1b}\xcf\xfe\x9c\x15\xfbsmq\x10M.\x7f\xce\xa2\x94\x8f!\xffS[9\x9a^\xb3j\xd1\xb4\x12P\x05+\xb0\xa5\xd3/\xdcE\x96\xa6Q\xc8*\xe0O]\xa5\x89\x17\xae=\xb6\xb8\xec\xa7\xbe\xd2*\xf5yS\xfc\xb7\xb6\x9a\xcfgE\x7fh+D|i\xe9\x0f}\x85\x80\x97kc\xc6N\xa2`\x1eG\xd9J\xd4\xc1?t\x15\xa7^\xca\x90\x91\xfe0U\x08\xfc$\xcd+\xd1?\xb4\x15\xa7\xac\xcaT[H\xd8p\xa7D;\xdc)I=?Hx\x15\xfc\xad\xad6c\x90\x9d\xce\xb4P\x9d\xfa^\x101\x9cb?\xf5\x95\xd6\xbc\xc6Z[\xcc\xc7\xa9\x1f&\x87\x82v\xfed\x89\x85d\xa9/\xbc S^~A\xb4 \x9a\xf9$\x98\xa2\xe9`l[\xe2\x0f}\xc5\xb9\x8cf\xc5\x9f\x86\xcaYLD\xc5,\xd6\"\xd3,\x8a\xd0+\x93V\xc2\x9f\xfaJ\xf1\x92W\x89\xb5s\\\xf4\xb1x\xd1\xd7\x16\x0eX\xe1@[\xb8\xc3\nw\xb4\x85\xbb\xacpW[\xb8\xc7\n\xf7\xb4\x85\xfb\xacp_[\x88V\x1f\xb4\x98x\xda\xf5\xa0\xef9P\xd8Om\xa5b\x97-\x8c{l\xc1[\xd1\xb7\x90.\x19\xca\xd1\x1f\xba\n\x8c\xc4j \xac?\x8b1\\&-\xc7\x9f\xdaJK\xb6%\xfc\xa5v?\xf8\xe1*c8\x87\xbf\xf4U\x12^A\xbb+//\x18 //\xb4p\xbc$\xd7s\xc2P\x95\xfd\xd4U\n\xbc\x0bN!\xf0\x97\xb6\n\x99\x93\x90\xf5\xc4~j+1h\x05Zp\x05~x\xc9\x8b\xc3K]\x85\xa5\xe7\xb3\x81\xd2\x1f\xfa\n+^\xae]\xe8\xa5\x17_\xf2\xf2X\xdf\x01 3V\x81\x84\x99\xa9\x82\x9frR\"\xfe\xd0W\xe4t[\xe7w\xc8+p\xec\xc5_\xba*\xa1\xc7Ha\xe8iIa\x181\xbfaV\x87\xff\xa1\xab\xc8\x04F\xac\xc6\xc5Z]%\xb6\xbc\xfa\xe3*Z\xa5\xc5F\x12\x7f\x18*\n\xba\x17\x19i^\x94\xa5\x02\xa7\xd9O]%\xd6\x97\xb6\x93\x95\x17{l\x05\xf0\x97\xb6\x8a?I\x05]\xe5\xbf\xb5\xd5D\x15Sq4\xcf9F\xf1\x87\xae\xe2\xcfX\xe3g]Q\xcc&\x12kg\x123(\xc4Z\x08\xc4\xd9\x05\xe3\x99\xe8\x0f]\x056.\xed\x80\x12o\xc9\xfa\xa5?\xb4\x15\n\xd41#NB&\xf9r\xf2\xdf\xfaj\x81\xc0/\xf6S[i\xe9\x05\x0c\xc5X\nN]\x15L\xa3\xc4\xea\xe0Om\xa5\x95\xc7\x07\xb4\xf2\xf4\xa3I\xe3(d$\x95\xfd\xd4W\xba\xe6\x0c<\xfe\xd2V\xc9\x18\xeb\x9ddZ\xe6;\xc9\x96K/\xbe\xe6U\xf0\xb7\xbe\x1a_\x07\xfd~IY\x1c\x95\xd8\xb6R\xe6\xdb\xa2\xa9\x92\xf3\xce\xa9\x89yN\x19\xd9M\xb5$7%\x1f\xd3\\\xa4\x11\x7fh+R\xde\x82\xd5\xa2\xbf\xb4U\x16\xac\\\x9br=\xcd\x8f\xec\xd4tf\xa7>?\x0e\xe9\x0f}\x85T\xc0\x03#L\xeb\xaa0\xaa\x99jIf\x1a{\x93K^\xeeM\xb44\x9e\x11x-u\xcf\x18\x82fZ\xec\\{\xac\xe3\xb5\xa7\xedy\xedO \x13\xa7\xf0\x97\xae\xca\x15\x17r\xae\xf4R\xce\xc4\x8f\x85T\xc9~j+\x05\xfe\xea\xad\xc7\xd7A\xfc\xa1\xab8%3\xc1\xaf\xcf\xb4$\x82\x04\x81\xbf\xe2\x02$\xff\xad\xab\xc6v\x92\x9e5Yzs\xce\xdd,1\x93C\xb5J\xe0\x87\xac\x06\xfda\xaa\xe0\xc5_\xc5\xde\xd4G3f^\xb5x\xa5\xfbh\xe9%\xe2\x1cO\xb4k\xbc\x12\x10Z\x19\xa0\xb3\xf2\xd2\x94\xc4\xa1\xa8C\x7fk\xabE\xc1\xf5\x9c\x13@\xfe\xdbT-\x9f\xa9\xf8CW\x91\xce\xc9\x0bJ\xb3-\xbf\xd2~$\x88kl\"\xadi\xc4\x89L\x1a\xe9\x89\xfd\x9a\xd3\xc3\xb5v\x1d)Q\xc8\xa9\x83\xb6BNtSFuK5\x0c:\"v {\x07:\xa2:\xbbvn3\xdd7\xb9\x07\xfb\xc2\x9e\xecs\xc7\xd1\xdf\xdb\xd8\x01Yx\xe4\xd0\xfe\xe4`\x8cw\xa0\x03\xd6\xd8\x83s\x8f<\xf5\xf6\x97[\x8f\xebcYT\xdckx\xa8\xe7}5V\xb0\xf0\x8b1\xf9\x18\xd7\xda\xa2\x08[\x92\xcfQ\xe9\x03\xb7\x08\xd6\xab\xf5E/3Z\xe3\xc9\x13/\x8c\xc2\xebe\x94%O\x9fj\xb4\xb7\x81Q\xe5\xeb1s\xb9\xb5m\xe1/\xddN\x00\xd4eQ^ym\xe7\xf7\xba\x86zt\xbaX/\x9f\xb7\xa1\"\xbb\xe0\xc5\xaa\xfc\xae\xd7PQ0\xf2\xeb:F\x1e\xf2\xc08X\x91\xdf'\x9b*\xf2 ck\x11\xcf\xd8T\xd1\x0b\xaf\x870\xb5c\xd9\xf6\xef5^`\x9bA\xf9f\xd6\xa4\x82\x17\x8f\xb8\\*\xe2\x99\x14\xe6\xce.DM\xf7\x8b\xca\x15\xccVal\xe0\xc8\xf6\x1d\x0b\xdb\x12n\xdf\xf0\xa3\x05\x1d\x88\xa0\x03\xd6\x8f\x10\xcd\x8a\x94s\xac f\x05\x0b/\x01?\\S\xea\x93{\xcf@\x18\xa5\x98\xc0\x82\x8a\xdd\xfe\x94\x88\xa9vM\xe9C\xc5C\x11\x14\x13I\x8dCC\xb2W\xf1`D\x89\xf2\xa5yV\x1b\xb0B<\xb4\x0b4\xad\xacD\x17\xd0=e\xc8\xbc\xe4\xf3\xa4\xd3\xf71\x16\x99\x02\"\x0c \x8d\xef\x12\xf6.\xc9V\xab\xc0gi>$\xa8\xb9@>\xae\xc8$%S\xf0B\x06\x9d\xaeu\x9b\xebX\xf1\xe4w\xe0<\xd0\xc2\x04\x9e@\x96\x1b\x06L:\x9d\xb6\xa0\x99aj\xc9\x0c\x93\xe2r\xcc\xa2#\x1e\xd3\xb1O\xe8\xaf3\xcb\x05\xaf\x05\xe4\xe8\x02\xcddCJ\xf4T.\x8c.>c\xb2:sx\xf5\xb91\xdc\xe2\xea\xb7\"\x11\x1eb\xf9\xde\xfa\x82;qC$O7@l\xef\xcb#\xb6\xd7\x1a\xb1!\xf1\xc3y@\xe0\x84x\x93\x94s&\x9f\x87\xe5\x9f\xb3\xf0\xa6\xack\x02C\x7fWB\xbce\xd3\xc5/\x99\x19\xb7^c\xe6P\x14zK\x16)K?+\xf5\xf1\x1a\x8d\x9eM\x0f\xc3\xc1\xae\x14\n\x16\xe3\x0d\x97\xde\xe0h\x8a\xad\xdd\x8c}\xe2\x11vp\x95\xc6Z\xb5pc\x1b\xa2W\xab\xcf\x97Gv\xb1\x92\xf4s\xac\x91a\x8d\x7f\x1c\xba\x1b\xb8(\xbc\x92\xbb%\x91\xabu\xb0R\x1fD\x9bk;\x1d\x933Ge0\xe4\x05\x88\x8b\x05\xf0\x0d\xc0\x0e\xab\x94\x05I\xca\xebhJ\x1a9\x8a\xcf\x81\xa1\x89d0\xbe\xf2w%\x18\xff0\xceM\xcc\xb5\x11\xd0\xf2\xa9\xd6L\x93\xdaq`%+\xb3\xad\xd1\x08\x92:T\xbaC\x8e\x8c\xf5\xd98g\x89\xeb\xf2C\xc8\xea\xf7:\xf0 e\xdd\x85\x97H\xd1\x95\xecI+\xd2\x0f\xf5\x0cZ\x17\x19\xb4v\xac\x19|.{\x06\xff\x00\xd2\x15\x85\x1b\x1c\xd1\x1a\xe9@\x8aTW\x11\xd0jL\x0d?o\xeb\x16Q\xd1\xc4\xce`\x810\x1f\x83\x07O \xcd\x19tO\xf6\x866=tR+\xba\xf2\xe9\xd8\x93\x89j\xed\x04@\x12y\xfer\xfa\xe6u\x91?H\x9bYB~6\xdcih\xb2*\x1f~-\xb6Z\x14\xe2\x89\x99o\xcf\xba\xf3\xf2\x16\xe8B)\xda\xef\x8e2R\xe8i\x16\xad\xbb\xb4\xd2\xa4Y\x14\x13\xba\xa0T\x9b\xa9_~\x8c'C\x98\x0f<\xb2\xb7\xfa.\xe4\xab'\xe2\xf4\x96\xd6&\x87U\x17\x8eU\xb1\x14\x8f\x8f\x05\x99\\\xe6`L\\\xb8\xc8R\x88\xc9\x84\xf8k2\x85?&\xe0\xa5\xe0\x87S\xf2\x11\xfe\x98t-\x17\xce1\x99\x0bA\xe7m\x05l\xe6\xd5\xfd]\xb6`\xef1d\xa5\xe5\xc8\x9a\x97\x03\xa4\x1d\x94\x8e\xb3\x86%\x01(\xfb\xd5&\xe5\xd1R\x02\xed\xb4\xa2\x8e\xd0\x9a\xc6\xb6\xd9\x9f\x86\xadxw\xfb-Y\xb4\xb0&\x15\xcfg.\xe9\x7f=\xac\xc6\x8f\xac\xc7\x1f7\xe44Z p9\xb30\x9e\xb4\xc4\xd9Y\x9bf\x817\x1d`\xac\x84;\xe1C\x82\x1c\xd4\xf5\xdb\x01\x1a\xb7D\xbb\x0dswL \xf9\xe8M\xd2\xdf\x11\xeb\x93\xd6X?A\xacO6\xc5\xfa\xc9g`\xfd\xe4\xce\xb1^\xa0p\x86q\xed\x18\xff\xd4\xc4\xb5\xe4;%\xa0;\xa5\x15J\xd3\xda+\xdc)A\xcb\x9d\xb2\xb5\xda\x0cN\x97\x84\xcbdA=9\xfe!|\xe6M\xf3+\x0cZ\xa0\xf0l\x0c\x06,\xc6\x80\x05\xdcs\xe5\x87\x10/\xff\xd0\xd1E\xfb\x95\xec\xf7\x92:\xa5\xef[l\xd35\xf7s[\xd9\x89\x0bAu\xb7\x07\xedv;\x85\xdb4\x07\xdb\xf4\x1f\xb4\x8f+oo$\xafM\xa8\x06B\xd2\xe1\x8f\xd0Z\xe5\x891x\xf2\x02\xf8\xf4 \xfap\x1f\x0b\xf0\x07\x81!f\x00c^2\x84\xfeR\x03@\xe8\xfb^\x18\x02\x13,\xfc\xa4\xbb$I\xe2\xcd\x89\x14\xf8(I\xbd\xc9%\xbaW\xb5j|j\xc8\xff \xcaC\x9b\x11\xa5\xc8\x85\xcc\x85\x04)\xbc\xd6\xe5\x93>6=\x883\xa6\x89D\xa23\xc1\xa4V.\xb0X\xa5\x9e\xc3S.`b&dE\x8f\xbc \xf0\xc3y\x11j\x0dp\xe7xi\x14'0\xf5c2I\x83k\x91\xe4\x85n\x94(\xa6D\xe3\xe2\x1a\xd2\x05\x81\x1fWq\xb4\xda\xa6D'\xf9\x11V\xde\xe4\xd2\x9b\x93.\xbcO\x08\xfc\x987\xd8E\x865\xff\xd3v~\xa4\xfbl\xe2\x05\x01mb\xd9\x85\x13\xe2Ma\x19\xc5\x84r\xae\x8b4]\x0d\xef\xdf\x9f]t\x97\xe4~\x96\x90m\xfcz\xbb\xe8\xc7\xb8I$<\xc48\xd0\xe3\xe8\x0c\x0e\xd0\xd93\xf7W\x15\xef\x18\x91x\xb7 \x85\xacS\"\x9a~\x82\x86\x97\x94\xf1N &?g~\x8cZEY\x9eb|\xb7\x9f&\\\xd4\xf2\x13\xf8\x91vD\xe9(\x0c\xbf\\\x1f\xb9\xbf\xae\xe8\x88Nn\x08\xa9]\xc2\x91&Op\x90\xaf\xe6\xbb\x17~8\xb5\x19\x19\xda\xeak\xc0\x9b\x8b]~r\"F\xaa~\xd7\xabF\x981`\xfc\xba6\xa4\xa3\xe9@v!3a\xbd\xb8k1_\xe1\xf0\xb6\xe7\xb6\xe7p\xe2p\xd0\xee\xa8(\x1d\xa9K\xfay\xdbS\x95\xbeM\x05[\xcf\xd7\xa9\xba(\xaa\x17\x93\x1eb\xd7\xb6\x96\xf2%W>\x8b\x92\x9b{\xef\xe9\xe13\xf1\x12\x92;e\x0fk\xaa\xf0\x9b\xf7\xba*\x85\xbb\xb8\xbe\x16\x14\xd06\xa5 `\x0d S\x84\xe6f\x0c\x9e\xb7\xac\x19\xce.\x99[\xd1\xbas\x8b\xb6I\x97\xacI|m_7x@\x97=\xdeS\xb9\x89\xbaD\x0bk5Bc\xa3\xa8\xb0.9r\x86\xcc\x913\xe4\x8e\x9c\x93\xa6\xdb\x95\x8d\x1c;\xd5\xe7\xa6\xd1\x0f|+n\x953\x82\xce\xc1\x17)O[9\x98\xc7\x8a\x83y\x1b%\xc2c\xd8\xb2}LhPv\xec\xae\xfd\x12\x8a\xbb\x10\x9fyuK\x0b\xd97\x83f\x03gs\xdd\x98Zr\xbd\x18Z\xa8\xad\xb39*\xaf1\xf1\xc5\xb5\x9d\x8d\xfbg\xad&\x02mt;&\x8c\x16\xe1\xa5\x1b\xbf\xaf\xf6\x7f\xd3\x8a\xcc\xcd\xeb\xbd^\xc5=\x8b\xf1|R\xf5\x85p\x00\xdc.\n9?I\xbd~B\xe6\xc7\x1fW\x85k\xba\x05-\xa3\x13\xf1\x9e\xa4\xfc7\x9c\xd3\x14I\xa1\x18\x95\x18[\xff\xf2/R*B\x0b7p\x835\x19\x91\x07\xc8^W\xe1\xc8\"q\xd1\x81\x8b\x11T2W\x1a\x80\xbb4\xc7\x14\x93\x12\xcb\xe1\\rjW\\i1\xb7\xe8*\xe4\xc5\xda\xcc\xb5\xfa\xebJ\\\x82\xfa\xa8O2\x00\x9e{\xa9\x94\xb1g\xea\xa5\xc4\x90\xb4\xa7\xf2%[\xdb\xe2\xdb\x98\xcc\xc9\xc7\x95\xc6\xeb\xd9\x84F\xed\xe0y^\x8f\xac\xfaT\xd1\xe2\xc4n8\xaa\x19\xd2\xd6\x1d\xc3\x8d\xc7\x9e\x98\xbd\x17\"gS{\x86\xd6\x1f\xc5\xac\x0e\xae@]\x05\x0e\xe6\x16#\xaa\x1bP[\x1a\xd3\x14\x89\xae\xfc\x17\xffH\x8a\x88 #v\xc5&g/\x08\x14I\x05F\x94\x95\x0e\xba\xf2\x8b\xc0\x055\xe8\xe7\xad\xccb\xebb\x01\xe5W\xfaw\xd4\xbe\xd5\xdf\xeb\xeewy0\x84[\xb5\xb6.\xc2\xec\xef=tLa\xc5\xfdV\xf6\xcf>\x7fu\xf8\xfa{C\xbc\x87$\xf5R\x7f\xd2\xae\xee\xaa\x08\xb4\xde\xa26\x8f\xf2\xba\xc1\x07\x0b?\x98\x1em\xfa\xd5\x9c\xa4\xcf\x199\xa0;P\xf9\xe6\xfc\xd5\xf1\xc9W\xc7\xcf\xcd\x9f\xbe\x0c\xfd\xd4\xf7\x82\xd3\x14S=l\xf4\xe9\x914\xdcM>\x8dI\x88\xfe\xbd\xe2\x8b7\xaf\x8f\x8e\x8d \xe4[\xe8[?\x08^\xb1p\xaa-@\x92\x7f\xf6\xdc\x9f\xde\xe2+\xda\xd9 \xbb)\xd4\x80\xd4\x84G\x8b(\xa3\xe0\xe0m\xbc_MK\x10m;I\xf5\xbb6\xe3}\xeeOo\xf3\x19v\x17.[\xc3\xe7\xfd\xeb\xd3\xc3\x17\xc7\xe7\xb7\\\x13\xdd\xd7\x1b\x03Y\xd7\xc8\x06S\xcf\xb0\xaa\x94\xcf\xc1z\xf3\xe1\xf8\xe4\xe4\xe5\xf3\xe3\xf3g\x87\xa7\xc7\x1a\xe6\xa7\xda\xce\xc4Htp#\xc6\xfe\x9aLq7\xbd\x88\xa3e\xcd\x8el\xd3\xd7\xcc\xd8\xd7\xd4OV\x81\x87I\xceZ\xb2\xe4\x80\x84W\xfa\x0eT\xbd\xaex\x0c\xd7F\x82\xa6\xb6\xee\x8d\xb2\x9c\x9a\xd8\x9e\xf2\x93\xdf{\x84\xec\x9e;,\x85\x86\x0b;\x1d\x87k\xb4\xc7\xe1\xd9Fw\\\x1aR\xdaz\xdci\xb7\xf25f\x1b\xfc\xfb\x8d\xab+\xd3\x060\x85\x9a\xa1\xddzT\x86\x01}\xc6X*g\xc7\x06\xc3Q\xbe\xc5\x00G\xea\xbb\x11L\xed\xca[ly\xa8\xad\xbd\x11BJ\xa7\xf1\x06\xc3^Il\xaa\x00a\xfenS\xf8\xe5\xccC\xeb\x01l\xb5\xaf\n\xed\xf6\x10\x94\xf7\x91\x1f6\xb7*\x1e\xc1\xe85\x1b\xf5\x8b\x07\xc7\xa3\xda\x02\x86\xadm\x01A\xe8\xbd(\xbb\x88W\x9d\xed\xba\xa5Odo\xf9.\xfc \xadhy6\x9b\xef\xa3\x0c<\xbc\x10I\xc9r\x95\xfa\xe1\x1c\xd2\x88gi\x07\x0fb\x92\x90xM\xa6\x88)t\xa4.\xfc\xf8\xc7\xe4G\x17\xd2\x85\x97\xf2\x03;\xfc\xe1O)\\\x10\x88B\xbc\xa9\xb1\xf8\x8aZpI\xae\xbb\xf0\x9c5\xe5cn:/,,\xa6E\x8b\xf8\x86x\xd3\xc7\xb4\xce\x95\x1f\x04\x90\xa4\xf4\xff\x17\x04\xbc\xc9\x84$,94o\\\xb6\x17\xff\x93>t\xbe\xe9\x11z/\x04\x9a!\xee\xb5\xeeA\xf5\xd7&\xab\x03\x12\xcf=\xa9.4\x1c\xc0d\x1c\x9eqE}\xfbq@!^F\xb6\xee8D\xbd\x87\xe7\x82\xd5z}\xe9RR\xc8^GY,\x19\x0b\xe3\x0dY\xba\xf0B\x88\xc2 \xe9\xc2\xbb\x85\x9fP\xc8\xcf\x02\x7f\x92\xc2\xd2\xbb\xa6k3\xcd\x08m\xc9c\x87Z\xd7ba\x99\xd7\x91?\xb5Q\x8f\x8ct\x0bo\xad\xe3\x86\x80\x93\xf2S\x7f\x01,?\xbc\x13}\x1ch\xf5in\xd6\\\xe3\x86Q\x99Mh\x9a\x97\xa5\xd1\x85\x1fN\xcb&\xf7\x1b\xdcA\xeb\xd3\xfd\x80d$\x98\xa8\x88E(b%cbF\xacs\xcd'\xf7\xeeQd*\xb3p,tm \x8f0?\xc3\xcc\x9b\x10\x13BEk\x12\xc7\xfe\x94\xa3\xd4,\x8e\x96\x1c\xa9\xe8\xd7\x90\xac\xc8\xc4\x9f\xf9\x13\xb40\xef\xc2q\x98d\x0c\xc3RVkI\xd2E4\x85\x10\x93\xd1N#\xbc\x01\xa6-\x06\xde\x8a\x85\xf2\xc4\x91\xf0jhjH\x1c\x97\xdd\\\x94\xb7\x82\x08\xbb\xfb\xe9\x93\x96a\xbc\xcd\xcc\xbe\xc8V!\xedn\xe3\x90q3\xa7\xf00\x11\xa5\xc8`\x1cZ%\x0d\x7f\xaaL7K(\xd9/&\xc8\x160\x8a\x8bAQ2\xceg\x02/\x19\xe9v\xe1\xa7,I\xf9\xb71\x99g\x81\x17\x17\xb6\xf4.=w\x08\xda\x86n\xde\xff\xc6\xbd\xe9 \xea:\xcf\xd7T\xa8\xe1\x8c;\xde\xc7\xfb\xa4\xf3\xf3\x98\x0e\xf60K\xa3g~8}\xeb\xf9\xb1&\x863\xc8\xac\x83G\x8f\x96P\xddf\x19\xcb\x14\xdee\xdc?.)\xff\xedh\xa3\xd0\x8b\x07\xd7Xm\x8c\x19Vxx\x8d\xd5x*\xad\xb9ch8\xf6Z\x98\x8e\xadp\xda\x95\xfe\x9a/\x02\x03{\xc5\x12\x01\xcd\xaa_;0\x1b{gt\xd2\x93\x86\x96jbQ\xcb\x0f\x9d\xd3BG\x00\x9bF\nu\x86\xd3h\xbd\x82\x01\xc4W\xe8\xe6\xd6g\xa4\xa2+(y\xbb\x13\x0c-\xf5\x9b\x16E~\xd6<\xa4w2\xf6Zr\x8f\x80\xfb\x1b\x03\x9b\x9b\x99\x80k\x95\x00\xf2\xd7\xea\x0e|\x1f\xe6V\x04\x94D\xc3*\n\xfc\xc95\xfc1A\x94\xbe$\xf8\xf3jAB\xb6\x03\xe7\x14\xbd\x8b\xadI?Ab|\xcdV\xbff8\x07\x10\x8f=\xc6\x13\xd0\x1f\x14\x19`\xa8\x1b!\x8b*\xcc\xea\xae\xf3\xba\xed\xa0\xcfCT\xf3\xaf'\xcd\xf0d\x11\xadY*\x16\x8f\xf6\xe3\xe6\x1f\xd7~[\xc3+T\x8f\xf8V\x84~a<\xef\xcbbIds\x8b\xb2\x9a\xfc\x01\x9a\xf7\xc4\x05kI\xe29\x11\x89\x97^G\xcf\xb3U@\x0fd\xf25\xb9Nlg\x08G^H\x8f]\xac\x06a\x14n\xb3f\x12$\xe0\xc4\x01\x8d\xc8\xc2r\xa7\x95.\xf5\x90\xe1k\xec\xeb]\xcc-ZXo\xe9U\xc4\xe9w\xc2\x8e{\xca\xe9'\xde\x92P\x14\x1c\xe2\xd1\xdb\xead}LA\xb4\xc2\xa8\xb3\xf4L`Vr\xa2\xea\xc4\xcb\x12nNv\x15\xa9j[\xdb\xa1G\x9c\"L\xdb\x8e\xe088\xdfMw@i\x9c\xf4p\\\xd0\xb7\x97\xe4:\x11,0gL\x0d.\xaa\xc2\x86\xb0\x15ZL\x9bL\x11e\xf6\xd2x\xee\xa1OI\xd7[\xad\x82k\xccE\xe2\xe6\xde \x89\xc1\xd1\x91>(\xd4\x1a\xbe2\xdf\x8f\n\x9b\xb8\xc2\x11%n\xae\\\x18{\x84\xe6\xd3\x1bC\x1ek\xe2G\x83t\xebf\xfbl \xf0\x87>\xd9I\xbb\xfd\xb8\xfel\xc0\x1b\x01n\x04\xea-\x87z\xdd(*\x10f=\xa7\xbb%\x16`WzR[\xd1\xe77\x06\xfd5A#h@X\xb4\x9e\x9f\xfb ~\x84F~\x9a$\xeb\xa0'\xa9U\xa4]6\x0f\xb0\xa4\xaa\xbf\xf5\x18\xf5\x06/\xad\xc6xn\x1c#\x8fY\xce/\x90Z+\xb7p|L\x1f\x1fwI\xf8sF2r\"5\xc51lc\xe95\x9fpK8 c\x9c-\x15`\xb7\x87\xd5\x859\xd90HV\xa2\xf6\x85|\xab.\xf3\xf6p\xae!m\x05d\xeb\xc8%Q\xaeT\xe3\x1a{P(\xd0\xa4*,\x88|p\x94\xf9o\xecY<%/\xc2T\xdb\xaekP\xf5Cg\x04\x83\xa6\xf6A\xd1Y6\x8b\x05\xc0%\"2\x0e\xa1\x03\xfd\x16|*&\x84\x181\xca\xe4\xdf6\x10\xc2\x0d\xa2\xaf\xc8\xb3\xb7\xe2\xda\xedj\x96c\x91\xd07&3\x0cj\xe6\x96\xf6\x850R\x0f\x0b\x93\xf9T\xe4\x172ODh\xef\xf0\x13\x85U\x80\x03\xedk\xdbiT\xe8E\xb6\x865\xf3\xd0\xb0\xaelO\x86\xcc\xf4\x1f5]\x0caI%_\x8e\xfe\xb9\xbf:\xe5]h\xd7\x16=\\\xe4\xeb)*\x050~\x9fR\xc1\xc4\x97.\xee,G\x81\x88\xa7\xdf\xad\x0d\x12o\x8c\xca\xf2\x92\xb5KH\xae\xe0\xc2\x95_\x96\x82\x88`\x8ef\xb9P\x87\xe2<\xd5\xa0'\x12\xdf\xdb+\xd9\x02\x9c8\x8e\x0b+\x9b\xb80\x17?R\xf1c\x89'\xacz-\x82\xbe\x08\xdd\xa9rS\xa2V\xb3\x1d\xd4U\xc8\x83c\x17\xed.XR\nx\xbb\xdb\xedR\x86\xb9\xaa\xdab\xcb\xe3/W\xcc\x1c\x05<\xf8\x915\xf0#\xe7$\x91\x99N\x1cy\xfe\xd3E\xa64'\x13\x8fJ\xb4\xfc\x83A\x14\x92\xffJ\xcb~ \xca\xad\x8d`p5\x80e\xd1\n5\xa9\xd3Y\x80BM\xc1\x0c#\x12j\nD\x04BM\x91p\xd8\xd3\x14\x89(\x83\xba\"\x1eWPS\x84\x91\x04u\xefE\xc8@\x8d\xd62\x8fa\xa6\xf9N\x0er\xa5\xf9\x94\x85\x052N\xcc\xf0\x15\x8f\xc8a*a\xc1\x174\xa5\xdcU\\7\x05\xe6N\xab\x98\xc3jy\xbe\xb0j:\x19\xbb\x10\x96L'C9\x9f\xeag\x10\x0e\xee>\xc9n\x00\x8a[\x13\x17\xac\xf3s\x92\xbc\x8a\xa6Y@,WA?4\xaa\x1f\xca\xd2\xcc\x0d\x1eI\xfc\xf0\xa9\xa3\x1e|\x8aUt\xce\x85\x98dh`\xef\xdeE\xab\x0b/\x1eB$\xfa\xa9\xd42Y\xad\xde(\x84\xd2\xcd\x89\xfc\x8e\x86*\xda\x94\x90\xfa\xa8\xf9\x89\xbb\x05\x14\xe0\x00b\xd0\x8dMX\xd9V\x1c\xb6\xe0\x1f\xbe(\xd5\x03be\x87v\x7f\xf7\xa1\x9a\x03\xd4\x17E{=]^QVT\xc9\x1c\x9a\xe5E\x95l\xa4^^\xb4\xaf\x16%\xdcfU=\xa8&\xcc\x0fWy;\xa3+\x82-\xed\xef1\x9e\x88\xae\xdb\xae\xa3\xb6\x1a\xf0\xf3l\xdf\xd1\xa5*]\x19\xcfg\xd4'\xa6\xe5uN\xeb\xd7\xd9D\xcdoJ\xd0^\xd4r\x07\xd2\xb9a\xba\xff\xb2{.\xf8\x02\xd7\x1d.\xe9\xea\x9c\x7fho\x88\xb8=\x172\xf5\x03\x9br\x9f\xc8v\x9d\x9f#\x13\xd6s!.*\x11\xc7a^E\xb9 \x1d\xea\\B\xc5\xa5|7\n\xdf\xc7\xc1\xd1\xc2\x0b\xe7\xa4\x95+V!\xe6\xa5^<'i\x9dCN\xd4MH\xca\xc4\x00\xb3\x80\x97\xc5\x81JE\xc5\xa3\xf1\x8b\xbeq!\xea\x06\x917=]\x91I\xab\x01GL\x0e\xebR\xa6\xf7\x10\xeb\nA\xeb}\x1c\xa0\x87\xb9\xae\xc64\xba\ni7j\xba\xf3|\x0c\x08\xb7S\xcc\x8e\xd0j\x18z\xb8\xa1\xe7\x9ax\xb3\x88\x89\xc1.\xa6\x98\xb2Mp\xc0\x14\xae\xd87\x99\xd2Y\xe0\xcdrw\x15\x935 \x85t`\x1b\x06.f\xf6>\x0eZ\x0d\\\xea;b\x82W7\x8b\x83\x0d:\xc4\xb1z\xf1\xa4~\xff\x88G\xc0\x89\xa2u\xd0]yqB\xd8\xd7\x8e)\x834\x19[Y\x1cPq\xdb_z1\n\x91\xd6Y\x1ew\xd2\xac\x9c\xa5\\\xd8\x95\x1fN\xa3\xabn\x10\xf1k~\xdcW\x93\x08#\x1f\xdc\xbfoA\xa7Rc\x11%\xa9\xe6\xf5\xcaK\x17\xe6\xeeXmJ\x98\xf8w\x0b?I\xa3\xf8\xba\xfa\x06/v\x98\xcc^-\x93un\\\xac\xb4,\x97\xc5\x1c<\xa0\x83e@KH\xec{\x81\xffK\x0e8]\x86\xde\x9b*\x1am\xb4>b\xd3\xccIz\x14\x853\x7f\x9e\xd8\x0eE\x8c\x84\xa2\xf4\xd8\xa0p\xc1I\x11I\xc7\xc4n\x86r\x899\xef^\xe7\x12Pj\x88v\xc5]\xb2\xf0B\xa7\x0d\xa5\x81<\xb5 \x99\xbe\x0c\xa7\xe4\xe3\xd0\x90\xc2\x1e8\x03$\xe1\xae1\xcb\xb1\x89FE\xe1\x0b?HI\xfc\xc5H+\x03\x7f\xe0]GYZ\xa6k\xacc\x9d\xfd [t\xae<\xd1\x0f\x02\xc9q\x8a\xb4\x90\xa1F\x14'\x14\xd8\xa6\xf8\x92\n@\xab\xfap\xdag\xe9\xa5\xd6\xf9\x88b\xae'\x9dbL;B\xdfF\xa5\xb7\xe3\xea\xa8\xf1\xbe\xcd2\x1a\x98kl\xc29g\xd5\xbc\"L\xd9\xd4\x8cYf\xa0\xb5\xc6\x992\x88T^\x10\xf4\xf3D\x9du\x8b \xd6a\\\xcau\x86f\xa5*\x11Z\xc5\xea\x8e7\x7f\xc4.q\x9a\x08\x02\xde\xa8\xd1\x1d\x1cr\xa2P\xb7\xe9\x0b\x15\xb0\x86\xe0\x9bU\x981k\x7fc\x1a\x03Hg0v1F\xc7`|e\x0bl\x10OkZ\x03z\x9ch(j\xbc\xb7o\x81D\xe2\x06\xec\x8ep\xe86g\x02\xe7\xd7\xa53\x816\x94\xf3\x1c\xe9\xb8\xd0\xf8vK\x10=C>\xe4\xf6@`Z\xce;\x9dy\xc3\x1eb\x80\xd1z\x07\xca\x0f\xbb\xfb.\x11\x13s\xe5\xb8h\x18!n\xae\x89\xf7!\xb6\xf5\xcc\x98pU<\x11\xab\xf8\x8d!i\x9fx\xd0\xc9\x8f\xae\x93\x1f\xce\xb9\x95b\x97\xffIwHVK\x1e\xbc\x9a\x9bqk\xe6\xf9\x01\x99\x1a\xda\xc4\xf3\xde\xebN\xa2\x00\x15\xf3V\x8c\xd9=!S\xdf\xff\xff<\xcf\xab\xb3\xac\x0b\xd0\x11\x80\xe1\xa7y\x9c+\x83\x0f\xa2x\x16\xb5\xf72<`\\=I\x9bb\x17f\xfa\x15TIW\xd3-+}\xa6\xccFh\"\x8eO\x9e\x9aYh\xadE:?\xdd\xfeP\x1f\xdc/5\xb6\x87\xe2\xe1\x1b'\xa50\xad'v.\xe7\xcek\xac\xa4(\x03\xb6j\x98\x03\xcb]\xd94\x054\x07e.S<\x9f\xdd6\xff\xb0\xf6\xb3E\xba\x0c^Dq\xfeQ\xd5uK<7.\x18\x87\x88\xf9\x95\xf2(f\\`\xf4\xf0\n\x86\xa2\xad\xf9;\xd6g\xd3\xdc\xfci1\xbe\xfa\xe9L\xfd\xc4\xbb\x08\xc8t\x08Y}\xc5(d<\xeb\x90\x116I\xd0\xad\xff\x8e\xaf~PO\xb0\xeb\x808uLL63{[\x08b+\xc9\xb0\xcdH\xc2\xd2\xac\xd6\x01RF\x10\xd1\xf4v\x16\x07\xdb\xfcS\xe3\x87)\xaa\x8dY\x9a\xad\x1az\xaa\x01({c\xfeFl\xa5\x02\x94Y\x1c\x98\xab\xb7Z\\\x9e#\xd1pi\xea4\xef7\xffV@\xe4\x19\xbek\xe1\x13\xf8\x93\xcbaem\xf5\x03u\xc1:\xfe\xb8\n\xa2\x984\x05;3\xa2\xc4\xd4_\xb7F\x88\x14\xb5\xd4\xfa\xcd_\xb7\xf17\xe9\xe3*\xf6V+\xf2\x85;a\x13\xd9\xbem_\x91 b\xe6\x8d\xb6\x9c\xd7\x0efA\xfc\xf9\"\x1d\x82\xb5\xd3\xab\xc1\x86+\x7f\x9a.\x9a*%\xf1d\x0831\x90\x1a6#\xa0\xfd\x9d^y\xf39\x89\xe1\xfdK\xc3\xack q\x89\x80'\xac)\xcb\xa9\xfb\x04\x13v\xb7]\x96\xd2^\x11\x8bS\xb7YN\xb3\x8b\xa5\x9f\x0eaaZ\xc1Uw\xe9\xad\xda3\x0b\x92\x04\x9et'A\x14\x8a\x898\xf4\xd3\xfa\xe3\x87q\x06f\x9an\x92\x7f\x1d\x1d\xa5W8\xf73\xc7\x95\x9a\xbe\x91\xa8R\xceCK\xdb_\xbe\xacb\x90Qojd\x18\x94\x02\x80`J~\xccxy\x7f\x15\xce\x1f_x \xd9\xdfu\xfd\x0f\xcf\xde\x9c\\\xf5\xbe\xfej\x1e\x1d\x1e\x1e\x1e\xbe>}\xbf8~??<<|\xb6K\xff&G\x87\xaf\xe8\xbf\xaf\x1e\x04\xfb\x7f\xa5?\xbe\x7f\xf1\xec\xd5\x87\xe3\xf7\xb4\xc2\xfb\xd9\xd5\xad\xfe\xeb\x05\xbf<\xbb\x1f\xf6\x9e\xcd\x16\x1f\x9f\xad~\xba>\xea}\xdc\xbd\x7f\xff\xfe\xfd\xce\xcf\xeb\xdd\xa3\xbf\xac\xfa\xcf{\x8f:\x9dY\xbast\xff\x97\xbd\xfb_\xf7\xf7\xef\xbf\xdfy\xf0\xe8\xfd\xec\xea\xf9l\xef\xe1\xfd\x9f\x1f<\xea\xbc\x8f\x07\xcf\x07'G\x97\x8f\xe8x\xfe\xfc\xdd\xc9\xe9\xbb\xe0\xd5\xe1\xf1\xf1\xe1U\xf8\xe8\xfe\xfd_v\x0e\xe7\xeb\xdd\xfb\xeb\xef_>\xbf\xaf>\xef_\x91\x9f\xfc\xfe\xe5\xe1\xe1\xe1\xf3\x87\xa7\xefO\x9e}\xf8\xf3\xfcY\xf0\xb7W/\x0e\xa3\xbf^=?|w\xf2\xf1\xe2\xbbg\x0ff\x9d\xf5\xdb\xaf\xc3\xe0\xbb\xc3\xbf\x85\xfb\x97\x83\xc9l\xe7\xf0\xd1/\xf7\xdf\xce\xde\x1c=|\xf9\xf2\xfb\xd0\xdf{\xb1\\\x1e>{\xf5\xf0\xc5\xab\xc5\xd5\xbb\xfe\x83\xc9\xa3E\xb8\xf0\xff\xf6M\xff\xe8j}\xfcM?]\xbe}\xde\xfb\xf9\xf4\xeb\x9f\xf7\xe7\xdei\xfa\xed\xfd\xcbW\xdfy\xe1\x87\xe5\xe1\x87\x93\xe7\xef\x83?\xf7\xdf\xac\xb3\xec\xdd\xcb\xd7\xd1\xfe\xe5\xa3\xde\xe9\xc7\xd9\xc3\x9f\x937\xe9\x8b\xfd\xf9\xeel\xd6\x8f\x92\xb7;o\xc2W\x93\x0f\x0f\xa6\xbb\xab_\xa6/\xdf\xa7Y?:\xdc\xfd\xd0{\xfe\xb7\xe8\xeb\xe5\xc7ep\xfc\xfd:}\xfe\xfe\xa7\x9fNw\xd2\xe5\xd7\xcb\x9f\x9fuV\xdf_?\\=\xef\x7fx;{\xf0\xd3\xdb\xe3\xde\xcb\xdd\xde\x9f\xff<\xf1\x9e]\x85\x19\xd9\x9f}\xf5\xcb\xfc\xfat/\xfd\xee\xe5\xfbG\xfbo?<\x88/\x9f\x7f\xfb\xe7\xd7\xdf|\xe8=\xffz\xf7\xc5e\xf4\xf5\xf2\xc5\xea\xf5^\xf4>\\\xfb\x0f\xbf\x8e\xc8\xe1\xe0\xfe_\xbeK\x96\xdf\xfd5\x8b.?\xf6\x12\xff\xa4\xff\xd5\xc3\xf4\x9b\xcb\xd7\xfb\xe4\xd9\xa3\xe4\x9b\xab\xbf\xac\xee__/'\xd7\xde\xdb\xfb\xef\xe2\xb7\x9d\x93\xb7\xcb\x8bW\xaf\xfc\x8f\x93\xbf|\x98\xbf;\xe9{\xef\xff\xf6h'\xfa\xea\xbbd\xfe\xdd_\x0f\xbd\xaf\xf6\x8f\xaf\xe8\xb2\x1c\x9e\xbe\xff\xf0\xe6\xe4\xeb\xbd\xa3\xef_\xbe\x1c}F\xd0\x19\xd2\xbd\xb8N\xc97Lj\xae\xd3.\n\xad\xe2\xc4N5\xf2\x18\xaai\xc6=\x8d\x84\xc34-\xaa\xe9\x1c'\x16;\xf0\xcf`\x87\xd0\x81\xd8\x81\xfb\xb0\x0b\xdb\xd2]\xe9\x8d\x0b\xa4\x9bF\xcf\xaeS\x82\xa6a\xf5\xd7f\xb9\xe9 \xb3\x10\xc4Q2\xcb\x17:*\xe6\xfc:\xee\xf3\\\x14!\xb9\x82\xa8\x92\xe4\xa7\xc6N\x03\xc7I\xa0C+\xb1q*f\xc3x{\xe6BF\xe99%\x06=\x97\x05q\x86\xa7\xd0\xc3\x0b\xe2m\xd8\x85!\xad\x120\xfb\xc5\x00\x9e\xc0\x8c\xfe\xd3\x19\xc1\xae\x83\x90\xf5\xc7iw\xb2\xf0\xe2\xa3hJ\x0eS;p\xce\xe0\xc9\x13\xe8?\x84O\x95\"\xe8@\x9f\x17\x0f\xf4\xc5\x03V\xbc\xaf/\xddq($\xc6I\xa7\x83\xe6\xfa\xf0\xf4)\xf4\xf7\xe1\x1e\x0c\xf6\xf6\xd4\xf7\x0f+\xaf\x07{{pO\x0d-5@)\x9bI\xcf\xe6\xc9\x18\x06K\xe7\xf2\xf4)\xecV;Q\x18\xb3~\xab^\xfa\xbdZ\x90\xed\x9a!\xf6\xf4)\x0cZ\x03\xc0\xd1\xa2\xb4WF\xe0Y\x1c-o\x87\xc2B\x97\xc5\x8d\x12\xe0\x8f\xb0\xc3\xc2=\x8e9>\xf782\xc36\xf8,\xc7\x83G\xff\xe9\x8c\xa0\xbf\xbf\xf3p\xc7\x81\x88\xb1\xe13\x8a\xe0\x99\x8b\xd1n\xb1\x04\x9e\x82\x07\x07\xe0\xc1\xb0x\xa7\xb2\xc0\x0c\xd2>\x1c0@\xa7c\xda\x0d\xdd?\xbc\xd1x\x8c\xc0\x19\x9c\xd1\xcd;&\x0c\xae\xf7`\x7f\x87\xbe\xb0F#\xcbq`\xc8\xb1\xc2\xcf\xd7\xcbf\xed\x0cp\x1d\x1e:\xd016\xdc\xef\x89\x96)b\xe4-\xf3\xae\x06RW\x15\xee=\xbf\x93\xfe)\xf2C\xdb\x92\xec\xb4$E\x91d\xc5\xc9 \xea\xf3\x7f)\x84\xa5\xf8\xab\x92\x9f\xdc{?L\x1f\xb2u<\x90\xff\x18\xb2\x90\x88lQ\xac\xc3gG\xcf\x8f_|\xf5\xe7\x97\x7f\xf9\xfa\x9bW\xaf\xdf\xbc\xfd\xeb\xc9\xe9\xbb\xf7\x1f\xbe\xfd\xee\xfb\xbfy\x17\x93)\x99\xcd\x17\xfeO\x97\xc12\x8cV?\xc7I\x9a\xad\xaf\xfe_\xea\xde\xb4\xc9\x91d9\x0c\xb4\xdd/k\xf6\xfe\xc2~q\xa4\x86\xdd\x99\x83\x04\n@\xdd\xa8F\xd7\xeb\xd7\xd3#55\xd3\xfdl\xaa\x1f\x9fH\x00S\xcaJ\x04\n9\x0dd\x82yTW\xcdT\xafQ\xd2R\xa2H]\xdc\x95(R\x07\x0f\x1d\xe4.IQ\xa4\xb4\x07wy\x99\xed\x9b\xf9#\xfa\x03\xfb\x17\xd6\xc2#\"32#\"\x13\xa8\xaay\xd4\xc2\xac\xbb\x00\xcf\xc88=\xdc=\xdc=\xdc\xafo\xbe\xec\xf5\x07\xbb{\xfb\x07\x87G\xc7\xed\x1d\x8b\xa7\xcbat\xa4\xc8g\xe9\xc1\x13HN\xa0\xdd\xf6\x1cqS+\xc3+b\xc18\x93Q\xd9s\xe8#O\xe7\xec\xe0\x9b\xa9z\x9e\x1d\xa4\xf4\x14\xc35\xc0O\xc0\x1e%c\x0e\xa4\x8b8z\x87\xc4\x13\xa3\xba\x15Q}\x99\xc3W\x178\x1bAO\xd0\x0b\x02\x1e\xac\xb2e\x1a\xac\x97\x98\xf0f\xaf\xaaE\xbb\xca\xef\xe7`\"\x95\xd7s\x9b.\xa6v-;\xfcN\"\xb0x\xad#\xbc\x03=\x0eq\xa3\xe4\xf1\xc8\x87\x8c0\xd3\xfeN\x8b%\xd7\xcc\xc3\xdcD\xf1s\xa4\xe0\xa1\x90\x85+.m\x90\xad@H\xff\xb4G\xb0\xeb \xc2\xd8)] Jr(\xf5\xec\x1f\x1c\xf6\xfb\x07G=\x8a\xd7\xf4 \xba\x8c#\xa6St\xdd\x1f\xf0'\x8c|\xb0\xe7\x03*\x9df\x02\xf3\xed\x88y\x18Q\xfc?\x92p>B\xc8\xa0\n9\x90\x00\x07\xbb\xf0\x08\xa2\xea\xad+>}\x99f+\xe4\xdf\x82\xb1\xd5\xb1d\x0c\xea!\x06\x1d\x0c(jY\xe7\xbaG\xbbZyC\x9eM\xd2\x8d\x897\xab\x0b\xbb\xa7\xa0\x02\x0b\xabM\xe7\xfa\x08>\x84\x80\xca\x02\x942\xa8\x12\x05\xdd\x17v\x9f\xce\xab\xe7\xe8K\xf80\x82\x04\xe7L}F\xd9r\xe7P\x85\xa3\x9f\x10\x9cb\xc3}\x18BO-\xb2\xe6E:\xf4\xb9\xa6\xea\x05K`\x04m\xa8\xe6T@\xc4B^\xbff\x14f\x01\x8f\xf8\x18:s6\x08X\xc0\xd3\xa7#\xe8\xcc\xa9\xe4\xd0\xa6;\x18\xe6t\xdb\x9d`\xf9\xc1\xfe\x01|\x88\xe1\xb2E\x03.\x88\xfa\xe6\xd0\x19\xc1\x91\xa3i\x91\"p\xa4\xb6\x14\x95[\x8a\xf3\x96\xb2\xbc\xa5l\xf3\x96(\x91`7 #\x07\xfb\xda\x87N\xf5\x06\xaa\xe1~3}5\xc2W\x8b\xcc3\x19\x9c\xc2+\xef\x15\x9da\xd8\x81\x1e\x15\xbc\x16\xf9\x9ck\xf44\xc8\xf0>\xf5\xd2Ew\x1d\xbd\xb3\x07\xec\xee[D;Z\xbe\xc8\xaa7\x17KU\xe3\xa8?,U\x15Q$\x94\xf6\x0ce\xe8\xef\xe2 \xad^\x93\xa9\xcdiBq\x9b\"6\x0b\x19\xcf\xd1\x9b\xd6\x1c\xe8\x91w\x9e\xa3\xb7o@o\xf4\xb00\xa07\xc5\xd1\xc1n\xce\xbc\xe5\xd1t\x06{\xb4\xc2\x12\xe8\xf0\xd0\xd1\xe3:\xc5\xe5\x98\x93\xd5H\xdf\x8d\x19/B\xa7\xaf\xa3y~\x85\x12\xd4\x13\xe8\xc1\xed-\xbf#\x8b\x8e\x1b,K\xc4\x13\x14\x8cq\xa7i0\x97\xce0v\xd4\xbbH\xd0-)H^y\xafl\x82>\xf2\xcc\x90\xca\xd0\xe3\x14lJ2\xf2\xc7\xbcJF\xbc\xe7tp\xb8\x0b\xb0\xae\xf92\x8ab\x1b\xbf.\xa3KZz\x87=\xf8\xe4\xd5\xc0q\x81P\\K\xa0\x8cM\x9d\xccq\xe0 \xf4\x91\xf3d\x9d\x0ee\xcb\x1f\x8e\x80\x96\xa7\x07\x82\x11\xee\x94%<\xa5\xfd9\x855\xec@\x02CXW\x10\x89n\x89\xa5CQ,\xa1E\x07\xac\xb6v\x9b\xd6\xb6\xc3j\xcb\xeb\x99\x8b1\xc9\x83(\xb5\x82Om\x82\xb5u\x18\xe6\xca\x8d\x05\xac\xb6\x11,q\xf8\xc8\xbd*E\x96\xe6\xf7F\xd0s\x9c\x13\x08hcG'(\x9f\xb5aQ\x88\xbd\x1e\xa5T\xed\x11\xcc(\xad\xdeAzA\x85\xa7:\x12\x94Qd\x0e\xe0\x96\xbe\xeb\xd3w\x83\x13\xf0\x19\xc5Q\xaa\xcf\x8a\xea\xb3\xbcz_W=\x7f\x15:0\x9b\xc2\xed\x08\xfa\x03\xba\xb1\xae*\x1c\xae\xe1P,+p\xca\xdb6\xf7\xea\x0c\xed\xdd\xc1Q\xe5\xc8[x\x85\x96\x1dk7i\xb2\xb8\x921\xd08\xdb\xc6\xdd\x9f<{\xfd\n\x1d2\xf9W\x9d\x87M\x9e\xe6fXI{S&yMW8\xccwS\xf2\n\xf9\x85\xdd@{[w\xa3\xf1\x9a\xf4\x0e\x92g\xed\xa8\x14\x0d]LPd\x87\xf6\xee\xae\xe2w\x1c\xf0GG{\x8e\xd6\xa57\xfa\xf1\xba\xf4n\xe3\xdd\xde\xa8KU\xd3(H\xf9\x185q\xbbh\xf9\x8a\xe3.\xf3\x11\xa7\xef9\x1b7\x0b\x924^g\xa5\x8eq\xa5j\x94\xcaxM\xd8\xfc\x9c\x12\x03\x161\xc1\xe0\xc3\x11\xdf\xd4(\x8a\x8bP3\xeclT\xf5\x83vN\xa0\x85>\xfaH\xf2\x92Rv\x00f\xee\x0fy\xbc\x0b\x9e\x94\xc0\x85\x16z\xce\n\xa7!\x96\x1f\xc19\xe1\xe34\x18\x85\xde\x83\xef\xb1\x84 u\xda\xf0\x88M\x15\xcb\\n\xa8g\x1e\x84\xderY7\xe4\xfa \xa1\x9f\x16\xfa\x13%]\xbe\xd4\xd2w\x83\xd3\x18l\xd84\x08\xf9L\x9c\xfb2su\xfa\xf1i\xa1\xda[\xf7X\x9ca\xa7:\xe7\xc5\xa9\xf3\xcd\xcd\x9aTN\x9e<\x80\x12\x0bV\xc5\xeeYf1\x8b\xe1\x11\xa4$\xf6.\x96E\xc0\x7f\xe5\xc2V\xd14{\xf2 \xbcb\xb7\x1a\xdb\xfa>\xbc\"\xb4\x8f\xf6\x1d\x17B\xfb\xf8\x00=\xa5\x8b\x0e\xd0\x96\x06\x1bu\xbb\xe07\xfd]\x1d\xc7 \xed\x03\xc7\xb6p\xb6\xd2(\xaez\xea\xb0\xeb\x80\xbb\xa6x\xe1\x94\x89u\x83\xe4\xa5\x98\xebM4\xc89\x85\xd2\x9eUyD\x15\xdc\x8a\xe3\x80\xa5t\xf8\xeew\xf3\xee\xe1\x9d[L\xb7U\x8d\xc9\x12\x97|k7\x9a\xde\x0dWt\xefAWtww_Y\xcb\x81\xd3\xe5w{\xbc$ .\xc3Mj\x92\xd7U\x9a\xca\xd8\x8e\xbbg\xd0\x86\xb8\xfb\xb1\x0b\x16\xabU1\"\xb2V\xd8\xe8\x0e\xa4I\xdb\x08\xa1\x9an\x9a\xeeU\xaf\x94\xf2\xa8\xef\xbd\xaa\x14\xc5p\xeb\xa0:\xbd,F\xfd~5v\xbc\xc7j\x19T\x8b'9J\xf1\xc9\xd3cj\x0b\xbd\x07C{p\xec\xd8F>-\\\xf1\xbe\xd2\xc4e \x068e\x9a,\x91\x88\xceQ\x0d}\xc8t\x9a?K\x8b\xfd<\x80\xce!e\xe9\xc9z\x19\xa4\xb6e9\x1a\xc7-\x1d\xeb!\xe3t\xaap\x9b\xf7\x8e\x0b\x87\xd0\x1aA\xc2\x82\xd5:<\xcf\x91\x9c\x1e\x91=\"\x8e\x93\xab\x89\xe8\x0b\x92%\x86\x1e\xabj\x85\x88R \xe6\x0cm/t\xces\x911We\xd3\xf3o\x9f\xd9F\x82\xee\x9cYC\xa2\xee\xfc\x84\x9e\x8b\xc0\xd7\xe4\x15\xcak^\xbbx&\xf5\xec\xbc\xd2\xb1\xdfnO\x1d\x17\xcf\xa1\xf4\xd0\x14\xdb\x0b\xa7\xebG\xa1\xef\xa5\xf6\xdc^\xa0\x02\x9a\xc2\\<\x89\xce\xf2>\xdc0\x0b\xcc\x15<\x85\x9b\x13\x07\x96\xec\x9e\xd3\xc2\xc5\xb3\xf3l|Cke\xe2\xc2xM't1^\x1b\xf4j\xd2MK\x18B\xb2\xc9\xe6\xd9\x90\xe4<\xe4\x81\x83\xd6w\\Cr(\x0elRO\xb1\xc3\x95\xbd\x19\x88\x8d\x7f\"\xb5\xda\xdf;vl\x8b\xd6n\xb9[\x88\xc65f\xb8\xc0\x8e\xa9`[Fp M7\x19E=\xf5\xda\xf9\xdc\xfe\x89A\xefv\x928\x1f\xda_xW^\xe2\xc7\xc1:\xbd\x9dy\xa9\xe7\xec\x04+u\xd4;\xe3\xcf'\xd7\x83^gr}\xf8b\xbasY-\x12\xb1:\xc7\x9f\x0f\xa7mg\xb8s\xb9RI\xdd\xd8\xeaZ.X;\xb2\xef\xb9\x19K\x12/\x0c\xd2\xe0K\xf2\x83x\xd9t\xf3@\xd8\x92\x98R5\x15\xd7~\xe8Y\xce\xd2y\xb4n\xb4\x12 k\x95\x85\xde>\x1d\xf7\xa6\x0e<\x85\x8e&'\x95\xed9\xdc\xd6\x84\x8a{\xaf\xbb\xa2\xd2\xb3\x1d9\x8e\xb0-1\x0bm\xdcMI\x922\x15\x8e\xe5]DY:\xbcXz\xe1[\x0b\x86\xe0a\xc4<\x19hB\x81M0\xa0\xc0\xe3\xdd=\xbd@\xb4\xbb\xbf\xeblc\x1e\xc6`\xf8\xdd4\xfa$zG\xe2\xe7^Bl\x0c\xd1\xda\xa6C\xa6t \x03\x96W\xe3\x9e\x1a$\xaa`\xbb!\xec\xe9\xc3:\xf4\x0f\xef\x1e\x98\x027Yy4[\xcaUE\xf7\x0e\xaa h\xf8\x04\xefU\xb98\x93\x05\xaad\x8f\x89\x02\x87U\x81\xc2\x03\xae\xfeS%\x81\x98N\xb8\x14\x93e\xc8\x05\xcarIf 8\x85\xa4+\xf2\x87\xe5\x05\xebg\x0d\xb3\x12V\xe6\x0d\x03k\xf2\xa4\x8e\xfal\x80\xaa\xc2<\x92\x93\x1b\x06<\xdfX\x1b,K-\x9a\xc9E}8\x05_\xa4\xfb\xa3\x9b\xa2\xf2\x82\xe0\xc1DS\x19\xaf\xc2\xeaa/\xc3B\x15;\x1aA\xc7\xa3\xdb\xae\xd3\xa3\xbb\xad)~\x80\x89\x9dm.!t\xfa\xdc7\x83\x07\xc1K\xb9\xa2\xb9l\xf2f\n\x90\xd89\x81v;\x84'\x10\x9f8\x10\xf0\x00\x83<\xbcv\xa8\xe6\xc6\x16s\xfa\xa0\x18\xcb9\xa5!~.Z\xed*\xc7\x11\x15\x8f\x83\x1c\xd7TdfX+\xe5\xb2\xdb\x10\x1d\xcd\x87\xac\x88\xdf\xde\xc6\xf0\xa4\xa5\x12 \xae\x86(qW\xf5\xda\x86\x94G$5\xe8m\xc4\xccUB\xd8\x95\xb4$\xef\x95.\x06h\xdbf]\xd4/`\xcc\x9d\x06NE\x07B\x18\xc2\x8c,IJ\x10R\x8ap\xd8\x8c\xa8\x02\xf5\xaa+\x99O\xfa\xb6\x13-D@1\x88\xbb\xe2\xdb\xee^\x95\xe8 \n\xaeO\x92\xb5\xbb\xaf\xcb\x92\x85\x8c\xe0\x8eC\xc8\x0bhu\x83\x04%zSx\x01:\xa5\x01c\xda\x11\xa3H:r+>\xcc]\xe5\x149>\xe5\x88hZF\xb3\xb2\xbe|\xc2\xcb\xc7v\xe8B_:\x9e\xd0w\x93e\xe0\x13\xbb&\x91\xb27N\xa76\xa5\xaaI\x193\xef\xbeR&-H\x93\xa8 0^\xefe!0)\xdfd\xdc\xd7\xe1\x14\x02J\x8dQK\xf9\xe8\x11\x84\xf0\x94\xd9\xf4R<\xd7\x88\xa6\xb6\xd8\x03\xdbv9f\xa4Z\x99_\xf3P\x98YOx\xfbt\x08<\xc5\x1eS\xda\x1e@\x1b\xbd6P\n\x0c\xf9\x03\x1c\xa0\x93\xbf\x84a\xfc\x02\x87\x91\x7f\xfar\xc8_\x0e\xa1\x83\xceXO\xa1\xe7\xb2/#\xad\xd9\xf0\x8aG\xbc`\xac#@\xd6\x11\xc3\x13\x08N\x1c\x88Xh\xb1t\x1c\xd3\x9e\xe8\xfd\x11\xa3;\xe3\xc6~u\xb76\xed\xe2A#.\x19\xe5\xb3\x94m\xb7\x94\x1dp\x1bIO3\n\x18ZJ\x0b\x15\xc4\x16M\x08\xb2`\x8d'\x93lv\xd4\xebu\xe8\xdf\xf9|>\xad\xb8\xa3\xc7\xa2Po\x97\x15\xea\xed\x1e\xcc'\x93lN\x06\xf8sN\x06\xf4\xe7\xa07\xc3\x9f\x83\x9eZ\x05\x9dd\x0b\x9b\xd9\xf5\xc7\xac\x99\x0bSs\xe8\xd85\xfe\xbc\xa1S\xe8\xc3e\x9f\x0e\xe5Jg\xe4\x00\x8b\xcf\xe6\xf3\xa9\xf3\xd5\xe0\xbd\xa52\xf0\xf2`/\xe6\xf3)\x02|sC o(\xcfk~\x9b\xe7Fw,\x16\x89A\x95Y\xb1\x999\xe9\x11\xf6g>=\x15i\xefm\xde\xe9A\xaf7\xe3\xb5\x8e\xb9G\xcd\x94\xd3\xcd[\x0bEL\xc7X\x87\xe5|XU\xff\xce\xa5^\x8e#\xd1\xd5S+\x0f\xed\xe6BX\xad\xbf\xd2\xef%\x8cx\xb6X\x1bGg\x9f\x8e\x8a\x91\xe2\xa0\xe7\xd0\x06\xdf\x05\xeb\xd2\xba\xeb\x9eH\xf9\xa9r\xe9\xb0+\xc2w\xdf\xc6\xd5s\x898\x10V\xa3\x01\x8am\xac;\xb1\xf0\xd1Z\xe3\xc7\xff\xe5\xe7~mj\xddkd\xf5\xccY\xc8JvdS.\x9c\x1f\xf13<\xe2;\x18\xb7\xc72\xdb=\x1a\xf7rC\x02U\x13\x9f\xd31\x8d\xa8F\xde\xd7Pr\x14\xff\xa2\xdc\xdf/\x1d\xb7\xdb\xc1\x14\xe9y\x00O :q\xd81\x87\n\x06\xe98\x98\xa2\xeb\x8dA\x92l:\xcf\xd4`\x83A\xcfU=s\xa3\x96g<\xb9\xf6{\x9d\xc9\xf5\xec`r=;\xeaL\xae\xe7\x07\x93\xeb9~\x99O\xb2^\x9f\x92\x82\xac\xd7?\x9cOw.kpf[zx\x1f\xe4\xb2S\x14\xdfR\xc7a\x96q\x81>\x11]\xdb\n2\xdd}\x12\x0f\x9dJ\x90\x03\xebG?g\x0d\xc1zV!\x14\xd6\x8f\xfe\x96\x1e\xfc\xb7\xf5\xe0\xbf\xa3\x07\xff\x8fz\xf0\xcf\xeb\xc1\xbfI\xc1\x9e\x02\xfe-=\xf8\xdf\xe8\xc1\xffV\x0f\xfewz\xf0\xbf\xd7\x83\xff\x1e\x05?W\xc0\xbfC\xc1\xbe\x02\xfe'\x14\\M\x91j\xfd\xe8\x0f)x\xa6\x80\x7f\x81\x82\xab D\xad\x1f\xfd}=\xf8\x17\xf5\xe0_\xd2\x83\xff\x17\n&\n\xf8\x7f\xd5\x83\x7fW\x0f\xfe==\xf8\x1fP\xf0K\x05\xfc\x0f\xf5\xe0\x7f\xa4\x07\xffc=\xf8\xf7)8P\xc0\xffA\x0f\xfe\x03=\xf8?\xea\xc1\xbfL\xc1\xaf\x14\xf0\x1fQp\xf5\n\xab\xf5\xa3\xff\x89\x82_+\xe0\xffY\x0f\xfe\xa7z\xf0?\xd3\x83\x7fE\x0f\xfeU=\xf8?Qp\xa4\x80\xff\xb3\x1e\xfc\xbf\xe9\xc1\xff\xbb\x1e\xfc\x7f\xe8\xc1\x7f\xac\x07\xff\x1a\x05\xff@\x01\xff\x0b=\xf8_\xea\xc1\xffJ\x0f\xfe\xbf(8S\xc0\xff\xb7\x1e\xfc'z\xf0\x9f\xea\xc1\xff\x9a\x82\xab d\xad\x1f\xfd\x19\x05\xdf(\xe0\xbf\xd0\x83\xff.\x05?S\xb7\xc3oS\xb8\xa7\xc2\x7f\x9d\xc2\xdf,\x14\xf8\x9fSx\xaa\xc2\x7f\x83\xc2\x93jH#\xebk=Y\xfeZO\x7f\xbf\xd6\x13\xda\xaf\x91\x88+\xe4\xed\xeb\xbf\xa3\x07\xff\xbc\x1e\x8c3\xa0\x10\xc3\xaf\x7fA\x0f\xfeE=\xf8\x1f\xe8\xc1Hh\x15\x8a\xfa\xf5\xdf\xd7\x83\x7fI\x0f\xfe\x87z0\x92 \x85,\x7f\xad\xa7\xd6_#eR\xa8\xf5\xd7\xbf\xac\x07#\x99P\xe8\xef\xd7\xffT\x0f\xfe\x15=\xf8W\xf5\xe0\x7f\xa1\x07# R\xf0\xed\xeb\x7f\xa6\x07\xffs=\xf8\xd7\xf4\xe0\x7f\xa9\x07\xe3\x9e\xfd\xab\n\xf8\xd7\xf5\xe0\xdf\xd4\x83\xff\x8d\x1e\x8c\x9b\xf3R\x01\xff\x86\x1e\xfc[z\xf0\xbf\xd5\x83\x91\xd9\xff5\x05\xfc\xdbz0\xca\x00\xca\xc6\xfc\xfaw\xf4`d\xb1\n\x07\xfb\xfaw\xf5\xe0\xdf\xd7\x83\xff@\x0f\xfeC=\x18\xd9\xb7\xc2\xd8\xbe\xfe==X\xcf4\xbf\xd6s\xc7\xaf\xffH\x0fFv\xf2\x93\n\x18\xd9\xc9\x17\n\x18\xd9\xc9_W\xc0\xff'\x05\xbfU\xc0\x7f\xac\x07#'\xf8D\x01\xff\x89\x1e\xfcgz\xf0_h\xc1\xdf\xfc-}i\xe42\xd5\x981\xd6\xd7\x7f\xaa\x07\xff\xb9\x16\xfc\xcd\xcf\xe9\xc1\x7f[\x0fF\xd2\xabH#\xdf\xfc\xbc\x1e\xfc\xf7\xf4\xe0_\xd4\x83\x91 (\"\xcd7\x7fW\x0f\xfe\x05=\xf8\x97\xf4`\xa4\xdf\x8a\x90\xf2\xcd?\xd2\x83\xff\x89\x1e\x8c\x84Z\x91/\xbe\xf9\xc7z\xf0/\xeb\xc1Hc?S\xc0\xbf\xa2\x07\xff\xaa\x1e\x8cT\xb3\x1a\x93\xc1\xfa\xe6\x9f\xeb\xc1\xbf\xa6\x07#\xa1>S\xc0\xffJ\x0f\xfeu=\xf87\xf5`\xa4\xc8\x8aT\xf0\xcd\xbf\xd6\x83\x7fC\x0f\xfe-=\x18)\xf2\x1b\x05\xfc\xef\xf4\xe0\xdf\xd6\x83\x91\xf4VC\xe4X\xdf\xfc{=\xf8w\xf4`$\xa6\x8aP\xf8\xcd\xef\xea\xc1\xbf\xaf\x07\xff\x81\x1e\xfc\x87z\xf0\x7f\xd2\x83\x91\xc6*\"\xe47\xbf\xa7\x07\xff\x07=\xf8?\xea\xc1\x7f\xa4\x07\xffg=\x18I\xef\x0f\x150\x92\xdew\n\x18I\xaf\"\xe3~\x83\xa4W\x11f\xbf\xf9c}i$\xbd?\xa3\x80\xffD\x0f\xfe3=\x18\x89\xe9\x97\n\xf8O\xf5\xe0?\xd7\x82\xbf\xc6\xd5y\xa92\x1e\x9c\xab@\xe1<\xdf\xb0\xe3\x9a\"\xb9|\x83\xc2R\xa4\xc2Q\xb0|\xac\x927\xe4\x1bI\xe1\xcab\xf2\x08a\x8ex\xdb\xab\xe9\xee\xa3Q\x945u\xdc(5\x84tL\xa6\xa5\x17\x9aT\x895J!\x83_\xc8\x81>\x1d\x89\xa2q\xcbx\xf1~\xa3\xeaKo\xde\x12zc\xbcK\x92\xf2\xe4\xdd\xdc\xf2\xc6\x9c\x92\xe4\x81\xa3}\x93\xdb]\xb2\xc2\xee\x82\x1aL\xa6x&\x9b)\x9euv\x12\xf4 \xeb\xf5:\x93\xeb\xc1|r\xbd\xebu&\xd7{\xbd\xc9\xf5\xfeEgr}\xd0\x9b\\\x1f\xd2/\x87\xf3i{\xe7\xae6j\xd1\xc9\xf0>\x9d\xf4:_N\xc7\xcf:?3\xbd\xc5\xff\xbf\x1a\xb8\xef\x11v;\xeeu\x8e\xa7\xf4+{\xc8\xbf \xf4v\xfc9\xfb\xd9\xeb\x1c\xc3t\xe7\x8e\xdd\x0f\x99g\xd8Vv\xae\xdc\x085\x99\\{\xfedr}\xd1\x9fL\xaeg\x87\x93\xc9\xf5\x9c\xfe\x87\nV:\xe1l\xc6q\xca\xd9\x9c\xe3\xa4\xb3Y\x9f\\_0\x85k\x8f+\\\x0f\xe60\x99\xa4\xf4\xf5\x8b\xc9\x84\xbe\xeb\xf5P/;\x9fO&\xe1d\x12c\xa1\xc1\x11\xfbs<\x99d\xfd\x83#Z\xa2\x7f\x84\xd6\x16Z\x11\xfb\xd3g\x7f\x06\xec\xcf.\xfb\xb3\xc7\xfe\xec\xb3?\x07\xec\xcf!\xfb\xc3\xea\xec\x1d\xb3?\x1ek\x81un\x9f\xfe\xd9\xed\xf5\xaaq\xae\x98y\xcd\x826\x0b\xecm0\x9d\xcd\xda\x96\xba\xe1P\x0b=8\xe4\xc3>\xbc\xd0[\xc9\xe8R\xd3I\x9d\xd3\x99\x9a\x1fL\x98\xb6{r\xad\xda\xba<\xad\xe9Mt\x0d-A\x95\x06\x8dU?\xeb\xfc\xcc\x84)\xdaQ\xd3\xceT\xed\x93\xeb\x191\xd9\xd7\xb60\xe4\xf9w2\xe4\xa1\x89l\xbcq\xbf\x96\x92E-\xcb\xed~\x9e\xcer\xb6\x96\x8a\xce\xeb\x8b.x\xd1-\xcd\x07\xb7&\xdb\xa9S\xb5>\xce\x8c\xd6\xc7\x85\xc1\xfa\xa8\xb5\xb5\xe2\x1d\xe8\x8d\x0c\x92\x0b\xbdA\xf2\xaad\x90\xd4\xd7G\x9f\xcd\xca\xaf\xdd\x14&\x96\xf1<\x8fs\x8f\xf3\xdf\xa6\xd3\x86\x96:\xfbt8\xbb].oW\xb71\xb9Mn\xd3\xdb+\xe28\xa7\xdc^9\x8e]\x98\xbb`}`\xa9\xf6NX+\x15}t\xfb\xc9'\xb7\x9f\xde~\xf6\xe2\xf6\xec\xf6\xcd\xedO\xbd\xa8T\x04mX\x9a*+\xfa\xb7\xdc\xa4\x7f\xe2\x8d\xa6\xe6-\x17\xf7\xfb\x87\xf6\xe9\xb0\x7f\xf6\xe6v\xf0\xea\xa3\xdb\xdd\xcf>\xba\xb5O[\xe3\xfe`w\xeaL&\xb37\x7f\xcd\xb1OG\x93\xc9\x05\x92\xf1\xf3\xa9#\xbf\x93\xa4\xb7\x83pv\xbb\x1b\xcfJ\xef\xa4\x8b\xfc\x9dg\x9d\x9fa\xef\x04.\\I\x03\xbb\x97\x8dJ0\xaf\x9b\xcd\x98\x97Y\xe48\xa8\xe6\xf4a\"\xc7a\xd5\x05\x98'@\xeb7:\xd0V;\xcc\x82l\x06_\x12vw\x9b\xe7\xc6\x9cy\xa9w\xae\xcf\x7f\xba\xf0\x92\xc5\x10o\xb6\xc5\xae\xf2p\xe5\xad\xf1\x99\x1d\xd1q\x07\x1a\x0f)\x91f\x0b+(=\xbd\xbb\\\xa6\\\xc6\x11rYU^\xe3\xf6o\xc55\x97\x0bf\x8a\xdb\x8b\xc7\xe1\x03\xed\x9d\xdd\xc4\xec\xc8\xa8\xb3%\x87\xdb\xd9\x92Y\xd6\xcc%\xf1b\x1b-\xc8\x04\x03\xb9\xe8\xa4_1\x13T\xd2U\xfd\xcaD\x18\x7f;f\x1e\xeb\xe3\xfe\xb4\xde\xb4N?\x89\x9c\x0b\x92\xf6\x81e\xed\x92\xc1\xdc\xab\x11\x13x\xca\xf0K\x82\xf2i\x19\xb8\xf0(\x12fe`\x82%\xbd\xf2\x1d\x8f-/u\x1c6\xca\xd2Z\x84\x970\xb5\x9d\xf1d\xfa\xd5\xfb\xdb\xe9\xce%\xd2\xf1\x0f\x1eYR\xb1r3\xb7\xf9}\x07\xa7\xfb\xe1)R\xf4\x89\xed\xdc\xe2\x06\xea\xb69`\xea`M\x1f\xf4\xbb\x1f\x9e2~\xf5\xc1\x9d\xe9z\xcbn\xa1\x0b\x1b%n\xc2\x03\x01o\x1e`\x18\x8d!x\x0e\x13\xfb\xb3\xd2\x8d\x9f\xcdQ'\xcf\xe5\xa6$\xbe\xccs\xb9\xed\x8c?\xefN\xdb\x1f\xect\xc95\xf1m\x8cR\x16\xe0m\xa8\xe2[\xf7\xe5\x8b\xf3\xef\x7f\xf6\xfa\xcdk\xbc\x87j\xe1\xa5\x15\x8b\xdf\xf6Kb\xdf9\xefw\x99\x03W\xd9\x15\x7f\xbb\x99hE\xcc\xd9%\x08\xb7M\xfa)\xed^gl\x9d\x9f\xfbQL:_$\xe7\xc9\xc2\x8b\xc9\xec\xfc\xdct\xa7\xe8\xae*\x05\x8dc\xff\xc6\n\x83\xe6C\xdbf\xb3&\x18\x03\xd2\x96\x85\x87\xac\xe3\xd1\xa3\xdc5\\\xa6I\xe3T\xef\xe6Y\x90\xa5\x0e\x0b\x1e\xc6c\xc6\x90;\xcf\xbe\xce\xfb\xd3:?_F3/Y\x9cSF\x7f\x9e\xc7\x94;?\xd7\x1c\xb9\x14\xbf\xf4\xf2\xf6\xdc\x16\xb5J\x93$\xa6\xa3<\x17\xc1\x1cl\xc5\x83\x0b\xa4\xb33Q\xa6\x0fJ\xde\xca<\xc4P\xbe\xdau\x99\xf4\x85\x7f-\xbf\xba\x82\xd7]N\xd9\x8dU\xe12\xfe\xa0s\xff\xe3\x9f\xce\xfc\xda\xc2i\xf9\n;\x8e0\x90\xc6\xfd\xa0\xe3\xac\xc1\xb1\xa61j\xf6\xb2X\xf9\xe6a\x16;\xa8]\xde\x89L\x18\xeb\xbb\x10\xb2\xdb\xc8\xe8\xc7')\xd7\x08\xf7\xfa&L8\xb8/uh\x12I\xc6\xd3\x07\x12B\xb42\x08\x0b\xd5\"\x89a\xebe\xe0\x93\xa6\x89\xdf\x08\xb9\xf4Bo\xccPH\xbb$-;\x14\xc1\xb6l\xba;\x8b\x04i\x1d\x8c\x1aE\xba\xebh\x8d\xa9\xda\x0bl\xc4k\x15.t:\xf9\x1c\xb9\xd0\xbb\x13\xbb\x15\x93\xf4\x974\xf8\x90\xc7\x13+T\xb6\xe3p:\xee7q\x9f\x87\x1cI\xee\x8b[\x1e\n\xa5t\xa5\x9b\xb1\x0f\xdf\x93Mw\xb2:\xad\x18q\xca\xae\xb9E\xc7\xa7\xd5n\xb7%\x0c\xe1at\xc6\xb4\xe1)^\xb3\x0f\xc7\x01\x9dm\x96\xe0~\x83}m\x1e\xed~\xe3hM\x18\x14\x8bT\xa5\x0e?P\x99n\x96\xdd\x95\xfb7\x12#3r\xb3\x1b\xa1\xa9\xb6;\xf2\xd5Q\x8clb\xb1\xac\xdb\x12\x80e\xcd\x96\x00\x17Q\xb4$^\xc8!\xa7\x94\x0d\xf0T\xae\x16\xb2\x9d\x94\xae \x93\xc8F\xf7\x90)\xb7_\x8c\xd2&\xc0\xb5\xb8$\x1b\xa8\xee\xbf\xdd.0\xd6\xf4-v\xa1f\x03\x16\xdd\xd0\xef\xbe\x101QO\xd3P\xd7\x80\x95\xbbe\x86\x1brv6\xcaoW\xf5\xef\xb7\xedv\x8f\xf6\x1c;\xb4\xf7v\x0f\x9c\xad\x8c\x90\xe63{_\x7f\x1f\xeaPw\x18\x0b\xed\xc3\x83\xc696,s^\x80q\xb3\xcc$\xd0zE\xe0!\xdd]F*\x0c\xb7\x02\xbci\xad\xbe/\xeaH\x04\xb5\xdc\xd5\xd4\x00\xfc\xaed\x84\xe1*\xc3\xda\xbe\xcb\x1f>\x8e\xc4\xf6\xc6\xe9\x14/lx\x86l\x17\nT\x85\xd0^\xfa\x94\xe0\xe4\xd3a\x14\xe0}\xe4Jp\n\xde8AQ\xdc\xa7\x82\xaa\xaf\x91\xc7\x01\xee\xa3Q<2\xdc\xa1P\xe2\xf8p\xbd\xeb\xd1\xde\xd6\xa8 \xc8l`\xa2\xf8\xfd\x928\xf4\xe8\x11\xa6*\x18\x0f\xa6\xec\xd6*\xfd\xde\x9b\xba\x0c\xd8\x9fR~\x96\xb7\xa5\x18\x8e\xa1z\x04J)Af<\xd4Ub<\xdcu\xd6\xfa\x87\xd5\xfbF\xe2:\xa1N\xe5\xd5W\xd5]\x83\xa69\x14wx<\xddd&H\x98\xf8]|e\xf8\x18\xba+`i3b=\xe5\xa3\x0d{\x0e\x96\xbc\xc1(M\x0b\x17f.\xac\xd9\xaep\xe1\xca@1\x91\xee\xca]\xbeAO\x8b\x99\x0b\x0b\x17\"\xb8\xe5w\x0c\xaf\xe8\xa6\xbc\xa9\x1fA\xcd\n\x8a\xb7\xee~\xfak\xbc\xad[]\x91\xeaA\x94Yy\xb6:\x8b\xdeC\xdel>L\x91\x8d\x85dZ\x96\xcb\xfd\x0f\xdea\xb91\xd1\xdf\xcd$\xc6\x07j\xeb\x9e\xa2\xa1>|P\xbf\xaf\xf7b\xea\xf7\xaaV4$\xd5\xbd\xc6 \x1f\x9b\x1e\xf04\xc4\x17D\xf4\xcbh\xae\xde\xd7\x04I8\n\x0d\xb5@.\x1dQF\xe7 &\xfa\x042\x16C\x9aO\xabW:\x13\x96\x11\xbd\xdd\x0e9\x06Q\xa8Z\xbd2\x0e\x10)z<\x13?\x85F1YH\xc9\xf7\x13\x8c\xcd\x8cX/\xc8\xee\x1e\xeb=\xd5\xf6zz\x83\xe8^\xbf\x8a\x12\xc8{\x95@H>\x17\x8e\xaa\x885\xe7\xf0*\".U\xb1\x00\xbdI\x84\xad\xeb\x99\x08\xa2WuOY\x94K\xc5\xdeM\xb5\xc4L.\xc18v\xb5\xc8\xd5\xfd5\xb0B>\xb9q\xe1\xd2\x85\x95\x0e\xfd)\x9a$\xdalT\x17\xf8\x84h\x9e\xbc\x83\x11\x9c\xc3),`\x08\x9e\xf6\xddk\x18\xc1E^BW\xc7\x19e\xf4\xb4\xa2wT\xacY\xc3)\xcc`\x08\xef\x1c\xfak\xa6\x16\x7fA\x8b\xd3Z\xaf\xe5\xe2\xd7\xa6\xe2\xcfD\xc5\xd7\xean~F\xf9\xb9\x8f\xd62u#\xe3&\xf5\xe5`Q\xad\xbe\xba\xd7\xcey\\\xe23\x0c\xd5\\\xb3\xbb\xf2\xf6Zgy\x85+T.\xae\x04;s\\8\xa7\x909S\xfc\x06\x9aU\x1bB\xc4\xa1\xefJ\x0f\xd4\xb1\xb5\xec\x10\x1ea\x90|=\x8dz\x0d#8Cer\x1e\xd9\xc8:?g\x89\x0eg\xe7\xe7\xa6\x0c\xd3_\xc0\x08^H\xaf\x91\xeakzj\x87\xf6\xbe/\xea\x0e\x83o)\x8e\xc3)\xa4,\x984*Vk2H\xbe\x84\x11|\x81Z\xd8\xa28\xd1\xcbD\xc6\xc9\xbe\xb4\xdf\xba\xf0R\xcc\xe3J=&n\"\x03\xb5pQm\xb5\xf6L]\xbe;3F\x95\xd3qc\xec\xb1\xfe\xd4\xb7{\xbc\xaf\xf5\x0b\xc9\xbe}\xbf\x90\xaa\x8c&;\x88`\x01o6\xb3\xd31\x99V'\x83~2\x89\xbey\xb3\x19\x06\xb5* \x94#2\xaf\x8eLq\xe0\x88\xca\xbe\x1a\x99v~\xab\x93\x1b\xde\xcf\xe2\xb3\x91D\xc4\x99i\xe8l\xc48\x7f\x9cbXs[f\xf3t\x8aM\x90\xa6&\x8c\x08m\x8acx\xac\x8fi\xac\xb8\x9ad\x06\xa9\x81\xbbE\x1d\xeb\xa5\x80\xbd^\x95\xdf\xfb*_\xa7\"\xc0@\xe5\xfe9\x8b\xfe\x1e\xd3\x15WytI\x1c\xf8\xc8K\x15G\xd5\x92$\x80a\xd7k%\x81O\xbd\xb5N\x0c\xc8\x9f\xbfB\xa5v\xb5\xc8\x8d\\\x849\xb6T\x8b\\\xcaE\xce\x88\"l\xacJ\xcfQ\x97^-r^*\x82\xca\xf4j\x91\x0bE\xee\xf9^6\x9f\xab\x1d~W\x996\xef\xa7\x02\xf2\xaeZ\xe8z\xe3@\x94g(\x17\x9c\xc25c\x0b\xaf\xe7\x1b\x07\xfe\x13\xb4:v\xe1\xda\x85\x17.<\xab\xa2~\xf2.\xc0\x08|Z\x1d\x96\xef%\x04\xde\x0d\x158p\x06\x98\xcayA[\xa3r\x9e\xd0\xdb[`\xcf_\xcf\xe7 I\x8b\xe7\xecw\xad\x00B?)\x06\x10\xbb\xc0 vy\xf4T\xf6K-\x8f\x1d\xbd\xd0w4\xb7|6\xf5\xb6\xf5\xc2\xa6\xc4=\xc0\xab\x1e\xec\x1bqtY\xbf\xb1\xb5\xa5\xda\x1a\xc2\xd7\x06\xf8Um\xef\"\xbb\x9d\xba\xd0\xd6i\x9d\xf1\xedE\xed\xdbi7\xf4V\x84\xe9/\xf1\x1b\x06jY\x91$\xf1.9\x98\xff0T\x7fc\xe8\xf4\xaa\xbeYfYR\x83\x88\xe6\xef\xcf\xf4\xef\x0bQ\xcd3\xbcvi~\xed\x0b\xe6.P\xcd\x1d&>\xb9Xf\xd3\xfa\x13\x0ch\x8d'\xbd\x96\xd0P\xa0\xb4\xfaE#\xf6 \xe9\xed\x19\xd74\x98\x9b{\x9b\xd7\xf5\x16\xe7\xc3 \xaf\xc1\xed\x08\xe6.<+\x0e\xa2\xe6\x86_b8\xc5\xd7\x88\x88\xaf\xd1T m\xe0Zy\xf0Y\xa1\xb1q\xe1\xa5az\xcf\xcd;\xba\x10\xe3\xcfD\xccJ:\xa83\x11M\xb6\xf4\xa2^v\xbc\xbb\x11\xdb\xe9\x16 3\xf5\x94\xed\xae.i\xdb\xca\x87<\xad\x0e\"\x8cA\xf5\xa5\x89\xb7\xaf v\x85\x15\x8e\xdbm2\x85\x11:\xf5\xa7\x95\xcbq\xce\xb7\xa11\xfbv\x86W;65\xa1@\xd3\xb0\x8cx\xb0\xd7\xd3i\xcc\xfa\xaa\x08\xf5@\xda\x03\x9ewO7\x89\xa8Q\x81G\x10\xa8\xf38gv[\xcd\x89\x123\xef\x19S\xa5.1m\x82M\x1c\xc9\xd2\xd4\xf2\x8d\xf4\xa8Hm\x00#X\x9e\xc0\xba\xc6\xe4\x81\xb9\xb9\xc7k\x83]\xa0e\xfb\xa8\xb1\xc0\xdc(C\xc9\xcbn\xe1lh\xe3\xa0m\xcc\xd03YG\x13i\x1b3\x96[\x88>\x96T\x0c3\x0d]\x14\xe6\x82V%Bg\"+\xea\xd8\x0f\x8dCO>+T4\xf4\xe9il\x0dO`i\x9c\x99K\xb4\xa7\x88\xf91\x98UV\xe8\xce\xb80L_\xe6\xe4\xfa$\x1fox\xae\xf0\xfc\xbb@,J\x11\x7f\x86\x90\xd9\xf4H\x8cP\x86^\x89\xc9\x8c,\x9b3\xce\xe1\x94\xf6p4b\xc7y\x8fW\xc2P\x13\xeb=7\x9b\x9cQE\xa3\xe7 \x171\xf1\xde*OT\x83\xf0\x0d2L\x94\xb2\xfd\xc2\xb7\x1d\xfdF\x16u\x14\x1f\x0dI\x88\xbf7\xa6\x89\xbf@!N\xaaU?\xf5\xefP\xba\x93\x8a\xa9\x03\xba\xa0\xfb\xe6\x1dm\xad\xdc\xc9\x80\xa7lS\xa0\x8c\xd3\xdb\x96\xd8\xf0r\xd8\xf5\x0b\xfa\xecBV{#D[\x16\xdb|'\x97}\xc7\xfc\xd0\xd9\xd4o\xc0\x12\x13\x99)\xe7?(\x82o\x99\x88P\xa6\x91\xfa\xeb\x0e{=}\x0c\xca\xbb\xfbN`\x10\xe1\xc8\x85\xe0\xce\xc7\xe2\xbd\x9e\xfe\xbe\xd0Qc\x97\xd4ZE\xcd\x11\x8b\xefnpHc\xaa\xc6\x08o`G.\x84\x1b\xdc\x0ehf\xb2\x1a\xbd\x816^=)\xc5\xa7\xcf5KR|\xfat\x1c@\x1bX\x8c\xfaqh\xf0>\xbf\xfbl\x9b\xf2\xae\xe8\x8c\x11\n\x0b]s\xe6\xf92y\x11f+\x96\xb0K\xd5R\xf0\xd7.I*\xf1[vfNT\xddEV\xca\x0c\xa4#\x15\xc2J#\xa9\xe5\xc6S\x18V\x0c\xfe.\xc46\xcb\x1b\x94\xd7\xa6\x0dO \xd5XD\xb8'\x1aMh5K\x0c\x0c!\xd0\xe3\xa4\xf7-#M}\x92\x83\x9e\xc8\xe9/c\x91\x9e\xe0f,\x0f\xbf\x86\x89a\x8cN\xf4\xe2D\xea\x15\x8d\x83v\x1b\x13\xc4o@\xc1\x9aB^7N\x84\x81\xb8\xdc\xfd\xa6\xe6\x9eAy\xdc?\xd4_B\xd4'\x0dQme<\x81X\xbf*\x82&\x06\x1b\x9a\xee.\xd7\xf6r\xa8\x8e\xc4\x85\"\xec\x84\xb2\x92\xe8D\x83\xa99\x02\xa3\x00\xca\x9e\xb7\xd0\x19$\xd3\x96ZWJ\xb5\x96(\xbci\xcb.P\x0e\xbe\xbd\x859\xfdoI\xff[\xab\xa5f\x98\xb3\xfc\x94\xb2\x8c\x1c}\x99\xae\x8d\xca0\xba\x9c\xa1r\xce-\xa3\x84\x87~)<\xbe}\xcb\xcf74\xbb\xeb\x8b\xf2\xb3m\xb1*\x90m\xdf\xb0.\"8BUS\x01\xb6\xd6^LB\x0e\xc0\xf7\xd7\xac S,I\x05\x0b\xd5P\x05\xf8Z\xaa\xd2a\xe2\xda\x8d\x0bW\x0e~\x9f1\x03\xf7\x8d\x9e/\xcd\xee\xbb\x8b6&'\"-\xac\xa0\x17\xe9\x89\x03\xb1\xc8\x8a\x12\xea{\x17\xdfy+\xeasS\xec\xe96\xa2\xce\xb6\xdc\xb4?\x0c\xb4#\xe0w\xbab\xae\xa3\xf8\xb6h\xd4\xdd\x15\x1a\xa6\xa4\x1d\xfd\xaa\xec\x16\xe9',\xc3d\x82\xc5\xf4d\xe3|\xfa>^F^\xba;\xe0\xb6w$\xe3\x95\x87\x07{\xfa\x87/\x85\x86E\xf7\xa4\x7f`|dj\xacP\xd9\xe8\x1f=_z\xab5\x99\x99K\x98\xda\xa4\xcfJ\x8db\xa6\xdc\xb1\x0e\x83*o\xea\xeb+\xe9\xeb+\xcfr\xf3G\x05^\xe8\xee\xd5\x07D\x01r\xfbGu58\xae(\x0f\xd0\x18R\x81 \x03H\x05,<(*`a\x0b\xa9\x80\xd1\xfeQ\x85q\x9bG\x05\xfcC\xe2\xbd\xcd\xfb\xd1\xea\xbb\xdbm\xc1\x88o\xc1 '\xf8\xf8\xb3\xd5\xca\xc6tW61\xf7\xc6\x1d\xd9\xec\xcf]#L\xa6fu\xe5F\xfb\xb8F\xf3Ul\xf1\xbeb\xf3\x03\xbe\xcf-6\xc3\xa5d_tr\x18\x1b#\xdd0\x9a\x9177k\x06S\xab\xc0tQx&U\xeba)\xca\xb1\x9e\xb4T\x8f\xc6\xb5\x80\xd2\x10vs\xb8\x98\xe0\x11\xaf\x1a-O>I4~\xba^\x1da\x14\x9f\xfa\xc4\xd3W\xb6+\\Q\x95\xfe\xb1\x98S\\\x8b\xb3\xfbG}'?Zn\xce\x15\xfa\x86\x03Z\x7f\xa3\x03\xdav\xb2eu\xe9P\xf7\x14\xcb \xe3U\x7fx\xa1=\x1eO\x0d\"YHE\xb2\"\x85\xbct\xc8\nq\xff\x97U1-\x9eF\x8e\xb9:\x98\xa4\x8fm\xeeU]\x19\xd2tm;\x19b\xa0<\xe5\xbfQ\xfd$\x99\xbbF\xa0W(\x11>\xc2\xdc\x92{{\xdb\x9cv\xa9\x06E\x8eD\x8e~\x0c0\xe0\xf2\xa1nu\xed\xa6\x99\xba\x9a=!\xf22uW\x1bR\x9b\xca\x92\xf7\xa2\xb1\xd2\x90\x07\x86\x84\xd0\x067\xd9\xbdA\xd5W\x92\xfbP\x0e\xaa'4\xeeC9\xa8\n]\x89^F\xe3N\x94\x8as\x06=t\xf9v\\\x81b0\x0e\xbb\x1axg\x8d\xd0\xa8\x02] 4\xab@g\x08\xad\xe6\xdf\xa3\x07#\x89 \xb2L'\x1a\xb1\x84\xee\xae+4[\xc7\xf8\xbf$\xe4\xd8}\x87\x1dJ\x82\xd2\xbb\xc8\xed\x8b\xd7\x02,\x12\x95\x8a|?\x8eVABD1J\xae\x93hyElV_V*\x8c\xc2FQ_\xc6\xceD\xa5\"\xb9\x90Q\x14\xf3\x9cB\x87\xda\xbcA\xf5\x87\xd2P\xe7c*.;\x96\xb6sM\xc69\xc4>8\x05\x9f\xa2\xba\x9a*\x93\xc7?\x10^\x12Z\xfb\x1e\xdaT\xe7\xb5\x96r\xcd\xca\xa9\xdc\xce\xe4V\xa0\xab\x07\xa7\xd3P\x85\xc6\x03AWE\xbe\xca\x86j\xea]\x0e\xca\xebo\xa8\xc2`\xfe\xafV\x91\xe3\x87\x81\x94\x80\x96MT\x92U_mGovw\x1d;\xb4\x0f\x1d\x17,\xb1&\xa6(5[\xdej\x94j\xe6S\xfc\xf0\x15\x9f\x91\xf4\xe1+\xe5\xcb\xf0@\x15\xf7\x8f\x0c\xa1\xd4\xb6\xb7D\xe4\x82\x87\xb8\xbf\xe7\xf2\xdb)B\xb5\x1e\xd6\x18E#\xaeeW\xb7>p\xa6\x91\x8e#\x9d\xba\x94\xa9Kx~\xb4\xd8\xce\x1cSX[\xd8\\\x8a\xa9\xb9B`\xba\x01\xa9\x0f_\xb57\xd0)\x0b(\xbb\xd4\xc5\xaf\xd2\xad\x86PhV\xcb3\xfewXe\x8bs\xd5\x04\xbf\xdc\xf0\n\xa1A\xc6\xc8\xf8\xe1\xd1c\x99A\x13\xdb\xc7\x95%\xcdW+\x85\x9e;\xd0\x05%\x90Z\x90L\xac\xec\xd4\x90\x07\x17\x89\xd8\x9bh \"\xb8\xc0s\xb8\x85\xe5\x03\xc92\xfd\xa3\x8dn\x83\x1bL[\xb8\xf0\xba@I,\x9d\xa7^|\x96\x86\x1a\xc0)\xa6\xc1mJ|k\xe8\xfe\xce\xf8\xf3\xeex2\x9d\xb6o'c\xfbthwN'\xb3\xb6}:\x9ct'\xb3\xb6s\xea\xdc\xdac\xeb\xf1\xd4\xb1\xe9\xb3\xd3\xd6d\xe0\x8c?\x9fL\xa6\xb7\x93I\xd7\xf9\xf0\xd4\x99\x0c\x9c\xc9\xf4\xd6>\x1d\xe1\x1b\xb7\x93\xf1d\xea\x14_o?p\x9cj^3:\xdc\x9d\xc9\xc4\x9eL\x9c\xd3\xea3\x81\xebGN\x83\x1b\x8a\xe9\xc8\x02\xc5\x0c\xed\x1d\xb0\x9b\xb8\x98N\xf6y4#\x98RV:\x98X\x16r\x14\x11\xfa,.O\x17s\xa2\x8cLGa^GLq\xab\x94C\xff\x83>f\xa2E\xe5y\xaa3A\xc9!%\x18D\x8f:\xd16\x8bH \x8a\xce\x89f\xbf\xf9\x1a\x99I\x06C\xec\xab_\x05\x90,y\"\xf8\x00W5\x84\"\xb4\xa2[\xf1\x14\x026 \n\x8c\x11x\xdf\xf3\x17\xfa\xb8\x07w\xa6\xb4{\xbb\xfa\x83\xc6\xdench\xc3\x1ab\x86\x1b\xb6\xc5\x8f\x92\xe2\x8eK\xdct\x00\xbc\xcf\x11\xad\xd4\")\x9d\xc8\xef:5}\xc35\xfc-mj\x8a\xedL\xd8\xd4\xf4,\xe8\xf0\xae~\x00\xb9X\xe0s\xcb\x07\xe5Q6)\x82\x009\xb9\x15j\xc9\xbcd\xa0\xdd\xf6\xe1 \xcck\xafg'6\x19\xfbS\xa3\xdf\xceR\x90g1\xf7\xd8\xbf5=k\xa1\xbf\x8d\xfa^\xca/s\x97\x1eh\xc5\x074\xac\xd1>\xb6F0\x87SX\xc2\x10Z-{\x0ef\x031g\xa1s\xfc\x9b\xd9k\x17\xe6\xdc\xbekKq\x13\xef\x8d\x87\x06$\xbc\xbb\x97\xc2\xae\xde'doW\xef\xbf\xa2\xca5\xd9\xa6\xc8c\xe8z\xc4\x9cD\x98G\x01\x06\xbcj\xde9w\x9e\xa7\xbc@\x9d\xc2Z,1)\x87\xa8\xaaz\x8c\xdeu\xca7\x91J\xee\xd3\xfd\xb8\x12\xb9\x0e\xee\xd3\xd9\xbd\xdd\xaa2T\xa8\x83\xf4\xa9\xb2\xf7vu\xc4\xe8S/]tW\xdeu\xd3\xb0\xcd\xc2\x98W\xb3\xf5TMA\xcb\xcb\xd5\xaa\x9d\x8aO\xde\x95\x88\x98\xc1+\x13I\xcb#\x93B4\xc9\x13\x9e'\xe8\x0d\xeeA\x1b\x12\x0c\xbc\xe62^\x1c\xd0\xf9\xdeu\\H\xee\x8f\xb6\xc2\x15V\xd1o\xe44V\xf6eb\xde(!\xb4\x01\x05\x9e>\x0c\xa1\xd3wN\xf06K\xd4\xe9\xc0\x10\xda\xed\x88%TW\x90\x85N\x13\xb1\xe9\x91\x0b\xbd\xca$Et\xa4\x9d\x86\xbb\xc7D\xdb\xdbm\xce\xc4_#\xec\x98d\x12\xf8 \xe8\xeb%\x12\xb1w\xe9\xd2\x12\xe8\xa0\x10N`\xd8\x18\xc2\xc1<\x82=\x9d\xa8\xd2\x87\x9d\xaa\"\x0b\xe3\xbbt\x0f\x8f\x0f\x0f\x8ew\xfb\xbb{G\x07\x83\xdd\xfe\xfe!\xd9\xed\x1dm;\x01\xb9\xaa\xfb\x94\xf9^1S\x01\x13\xe3\xa8\x04\x8b_;\x01{\xcc\xc2\xbeu\xe8\xfa\xf7\x1d\xf8\x10\x1d\xeeR\xb1SR:r\xfc7\x92!w\x9d\x0b%^3\xd7&\xe8\xb4\xc3\xaf\xbcW*-\xd8\xf9|\x92\xb4o'I\xfb\x83\xea)\x83Ex\x1ew\xda\xd3\xde\xf5\xb8\xd79\xf6:\xf3i\xfb\x83\x9d@\x15Vv>\xef]\x8c{}\xcdS\x9f=\x8d\xc6\xbd\xce\xa1\xe61\xe5\xe0k/N\xc8\xcb0\xddvI\xe8\x8e\x91\xa3\xbd #`\xbeqR\x95\x10\x05\xb6yc\xa1J\xd3p=\\\xe0\xbf\xd6\xc6\x91\xe6\xd7\xcfN\x8b\xef\xecJ\xb3^\xe8\x89\xd9\xc9\x9e\xdd\x10\xa2\x9b\xa1T\xea\xbd:J\x11\xe4\xae\xa5\x19e\x19\x8f\xda\x95&\xd9e\xb1r2j\x95\x00\x87,\xac6K\x14\xa3\xdd\xc4xN\xf3E\x118\x85\xb9\x9dv\x93e\xe0\x13{\x80j\xa7S\x18\xc0\x10\x8e\xe8\xa8=\xa9X\x84}\xba+r\xf7\x15uK\x03\xb7\xdb\xab\x8a\xd8\x99V \xe7\xa6\x8f\xbdf!\xc9\xcc\x01\x19\xf7a\xb2\x12\xe5W\x86iC)4\xaf\x86\xb2-\x8aGL\x8c\xa1VE\xf1\xfcc\xd3\x172.\xdaf\xf0\x04\"\xe6\xe8\xd4\xc7\xb8q\x81\xed\x8d\xb3)\xbbH\xe6\x9c\x98\xf5\xd1\xa6\xd8\xe7\xdb\xae\x84\x9eN\x18\x82\x0d\xa9\xea\x98L\x08T\x1b\xac\xa7\x86)\xe0\nd\xf2\nT\xef\x1f\x89\x83\x93\xf0\x8d\xd0\xd2\xdeV\xab$\xd5x\x18\x1b\x86\xb1\x8e\x08\xf7e\xae\xe0\x18\x96\xa2\xdfz\xb9\xbe+\xe4\xee\x9f\xe1\x98L\xb7\x8f\x99ne \xc1\xec8~*\x99/\xb9\xd3\x05\x0b\x97!\x9clx<\x18\x92|\x1a\xcd\xb2%\xb1\\\x85\xc1,32,E\x8es\\\xbcs\xbd\x8a\x82/\xc9\xec\xcc[\xad\x97\xe4\xe38Z\x9d\xf9\x0b\xb2\xf2`$=|\x1e\x13/%\x7f\xe3\xd3O^\\c1\x16J\x0d\xbf\xfe\x8d\xd5\xb2\xf2R\x10\xceI,\xfdN\xd4\x9a\xb9\xa1\x1bH\xd7Wk^\x9eh\xf0\xa9\xaf\xa4H \x90\xe7\x87\xf6\xde>=n*H\x85\x8f\x0ev\x9dM\xa3\xb1\xc8|\"\xed\x16\x13\xc9e9\x95\x1a\xcc\xc8\xdc\xcb\x96\xe9\xb0z\xab\xf4;\xea7\x81kj%\"\xf3Q\x8e\x04&\xaa\xcc\xbb'\x90L)\xf3^= \xb2\xa2\xe7d\xe5\x05\xcb-Z\xc8\x12\x12\x7f\x97\xb0\xd5\xe8\xfa\xd1j\xa3\xb6x\xbf\xceg^J:i\xb0\"\xd6\xe6-\xa2\xaf\xc5G^J\x9cn\x1a\xbd<{\xcd\xbc@m\x8d\x1dBs\xda\xc5\xcd\xb9y[\xbd\xcd+=\x9f/#/}\xe0\xaa\x830%\x97\x0f\xdea\x1eD{X#T\x88\x8fX\xe5<\xee\xb6t\x8c\xe9r\x94fQ1\xf8\x0f\xb5\xfd2\xba\xab\x07\xd0\xfaN\\\xe5\xfel#\xb0{.\xc4]\xe6`\x11\xcco\x1c\xadB\x03rC\x8b\x9a\x82H|\x02|>\x8f\xe2\x95g\x88\\EI\x827\xc6\xfc\x91\xe7\x16\xb4!\x98\xa2\x0b\x90\xf6\x12\x92\xc0K\xec]\x90|\x9c\x85\xbecGx\x82\xb2\xd1\x1ek\xfd |\x1bF\xefBxs\xb3&C\xa0\xf5\xa5\xd8\xbb\xba\xa9\xf1M\xc40\xa7J\xa9^u)\x0e\x85\x9e\xf0%\x17\x97\xb2\x9fB\x1f\x8a\x9c\x14\x94\xc9\xe7E\xc6\xfd)\x15\xde\xe4\x9f\x98\xc7\xca8{\xcaR\xe8\xe2\xc5\x81\xf0\xf9\xadY\n\xb4yw9\xfd\xd0\x17\xf1\xb0\x08\xbf\xc4\x17\x10\x8dg/\xf0\xf9\n\xba\xdel\x16\xd0\xc9\xf1\x96\xdfo(?\xc7\xf2AJV\x86\x02h\x14\xe9\x06\xa1\xbf\xccf\xe43\xe2\xcd^\x87\xcb\x1b}\xd1\xb5\\\xf4\x87q\x90\x12ZV/\xe8I\xd3\x9f9e\xdc\x99\x11\xb2^\xdePz\xb6\xfe\xeb\xe4\xc6\xc1#\xff\x07\x1f\xc4dnma\xa5\x94\xe5\x8a\x92ou7\x08g\xe4\xfa\xf5\xdc\xb6\xfe\x8aU\xc9\xcc >\xefM\x16\xa2H\xef\x7f\x1c\xb0\xe0\xb7\x91\xe4\x1a\xae\x176kb\xec\x82hc.f\xc3 \xaf\x8a\xdb6^\x1c{7*\x97\x01\xedy\x01U0\x85\xb7\xf9\xc8l\xed\xbe\xe2\xc1\x06\x14\xcc\xae\xba1\xca\x9fY\xe56\x8b\xfc\xc9E\xf5+*\xd8-\x1cX\x8c\xaf\xa6t%\xe8\xdf\xee\x8c\xacc\xe2{)\x99\xe1\x8d/\xf9Q\xccq\x0d\xd8\x05\xb6\xea\xe3w\x02\xbf\xf0\xf9\x1a\xef\xb9\xcfh\x81\x11\xa46-A\x85B\x83\xd0\x8f\x13\xcd\xb4N\xbe\x03\xb3\xcav\xe9\xd7\x8c\x06W\x90\xbe\xee\xebQ\x01\xaa\x11\x0c\x94y\xf4\x1d\x97\xc5,\xb0o\\\x8c\xb2\xb6\x82\x11\xf4O`\x05O`\xef\x04V\xed\xb6\x03\xb3\xb1U\xee\x12\xa5\x95+:\xb4K}\xb78\xd2\xcfTT6\x91i\x8e?\x0c\x19\xe0\x94\xa7\xb2 \x12v\xbdl\xde\xf5\xc2\x9b\xd7s\xd4\x92\xb1\xaf\xdd\x95\xb7.<5\x9a\xee\xe6\xb2\xf8\xf3:\x9f\x08\x18*ME!\x11M\xe1\xd7\x07lj\x9c\xdas\xfa\x94\xd2q\xd2%a\xb6\xc2\x10\x8c\x82c\xcb\xdf\x87|\xa9B\xca\x0e\x97\xc1\x97\x04\xbb\xe7\xd8\xec5g\xdc\xa3uX\xf3`IX\x8a\x8d\x08\x1d\x9b\xd0\xa5I\x17/_U\x12\xdbU\x19\xbf\x9e\x96\x89\xe1u\x13V\xfe\xd1#\xa6\xb6\x17\x00\xf4h)\xb8\x01{\x8e\x1cF\"C\x8aO\xc6{\xd7x\x04\xd9\x88\xa1\xb2K\xcb\xdf\x1aO\x8d\xb6\xe1\xa9x\xff\xa5\x86\xa7z\xf8|\x13\x86\x19m\xc90\xa3&\x86\x19\xd5\xb3\xf25c\xba\x9b\xf0\xd4\x85\\4\xe7\xa9\xfa\xb23l\x99#\xb4\xbe\xc8\x15\xd26\xfd\xb3\x9b\x9ag\x97(\x86]\xaf\x96\xfa\xc7\x94\x86]b|2\xfd\xf3s|\xbe\x8e\xc9<\xb8\xd6\x97\xb8\xc8kH\xd6\x9eo\xa8\xe6\x1d\x9b\xda0[\xe9\x9f_\xe7\x87d\x03\x03\xcfj\x188\x9a\x07\x1c\x96\xda\xfc\xc7\xc1\xc5\xb3&.\x8e\xd1Y1l\x8c\x15F\xa9wI'\xc7b\xfe\xb1\xf69\x9c\xc29\x15\xcb\x87\x16\xba\xb6;\x94A\xb8p\xc1\xf4\xf37c\xfa\xdc\xba^-\xc3\x043e\x9f\xd3B\xf8\x13o\x03^\x18\x04\x1c\x99)\xa0[\xe5\xdcD|i\xe99\xc5\x07J8\xf0\xef\xed-\\\xd2\xff\xbez\xef2\x08\x0f\\'\xff\xa0e\x18\x96\xc0e\x97\xc7\xe0\xcd\x85\xbf+\xee\x95;u+\x1cbIy\xc3R\x8dZe\xe4\x0c\xf43\x17;\x90\xe5\xa4\xa2\x953?>\xe4\x08U\xfd\xbe\xf8h\xf8\xd3\x8c\xb6>\xdb\xbau\xc1V\xb6n]L\x03/9u\x01%\x9c\xa2\ns\xab\xe7^\x9a\xc6C\xb81T\xee\xc2\x95\x1e\x1b)e?3\xb8XB\xc1\x8a4\xabb\xdfsY\xce6\x9a\x15\x17\xce\x0c\xebb\xdfsa\xb6j\x9f\x97R\nm nk\xd3\x12\x01\x9f\xfa\x17zq\xbbA\x9c~F\xc5ii\xcf\xd0\x9d\xb8\x14\x1b\xf0\x85Y:\xa5}{Q\xb9jh?ct\xa3\xf5b\xfcL\x12\xbcooa-?(Dn*\x8c\x1b\xa6\xab\xd4\x0e}\x8b\x11\x89\xfc\xab\xe8!\xff\xdd\xa58\x1b\\di\xed\xb2\x89\xcf\x15\x8f.YF\x05\xac\x0b\xa54\xda\xd9\xfc\x971\x05K\xf5\xf3\x85\xe8_-\xd3\xae~\xde\x8a\xb78F\x99)\xbd\xf8\xdc\x8c\xf3Q\x0br\xf8l\x9a\xb3,\x14\x9b\xbe\xa0#\xf8\x82>\x91\x80\xcb\xf13<\xf7\xe0\xdf\xf2\xa3\xb7\x14\xfe\x96\x0214f\x82sQ\xbf0\xb5\xa9^\xe4O\xb9\xb3#P;\xef\xca\xce\xe9\xf2\x0cV\x84A1\x00\xbbT\x86\xc1Mv\x19\xe9s\xc5\xe3f\xa6lt\xcd/\x94\xd1\xe3%\xa5\x14|\xa7 \x19\xf5\xa3\xd0\xf7R\n\x1fJt\xf5e\xc3\xb4\xd5\x91Fq\x98\xe4\x0d5\x11\xea\xb2\xb49\x04\xebYx\x93.\x82\xf0\x12|/\x84\x0b\x02\x0b\x12\x13\x83T@;\xedo\xca\x11\xaa\x0d%\xa6s+%r\x0f\xc8g6\xa0\x91|\xe6\xae\xcb\xf8\xbf\xe4\xae\xb1\x12h\xc63&\x94\x17\xf5\x1d]\xd4w\xecT\x96\xb0\x80kl\x85o\xe0\x14\xc6\xfa\xbe\x1b\xfb\xfd\xde\x85kZ\xd1u\xb5\xeb\xef\xb5v\x90\xa5\xd9\x17\x81\xca;\xeci\x19K\xd1\x08Z\xd2s\x05\x82n8vX\xb5:\x01\x1aJ\xfc\xa5\x17{\xb4\xc1!\xb44\xd7\x1b\x83pF\xc2t\x08\xd6$\xad\xdc\xae\xab\x9a\xcb\x00o1\xd4X\xa5h\x7f\xa2\xa2?\xcb&\x13W\xa5<\xc7\xa9\x06\xab\\\x0d\x87\x96<\x05\xf6\xabn1PxK\xec\x0f\x9c\xeeY\x1a\x13O#\xfe\xa3N\x8c~\xb1\xa4\x15\x83\x8a\xf5Jo\xf5\x04\x919\x80\xd24\xcd\xc9\x01=\x05\xd0\xa5\x11\xc7\x1e0\xd1!\xbf\x92k\xb3\xf7\x9c\xee\x17Q\x10\xda\xe8KgYU\xdb\x9a\xf8$\x94\x8c\x19\x84oC4\x08\x1b\xbdD\xd3\xb1\x142\xe0-\xb9I\xec\xd4\x19\xf7\xa6SdyI\xf7\x9c,\xc9\xaa0\xdbr\x80\xa0\xdc\x91\x9bC\x02?\xcaB*\xfd\x84\x12\x0c1\x89\x0d\xab\x0c\xa3-{20%q\x9c\xadS\xcc\x00'\xc0\xfa\x19\xf3\x99\xd3\xbe.4\x14\xf0S2\x957\x95\x87\xf9z\xad\xcd:\xde\xf24l-\x02\"y\xab\xf5m\xa8~r3g\x1b\x1e\x8f\xac\xc7\xd0f\x0epmxl=6\xbe\xf8\x1e\xbd\xa6\xc7dj\x14,7 \x93\xe2z2\xc7\x08%\x94\xad\xf8\xe0\xa5\\\x81B\xfa\xbb\xb9Pv\xc6\x18\xd1\xca\x0c\xf7\x1a\xc4'\xe9\"\xcd\xa48\xb6\xb6\xf9\x0f\x0cty\xee\xcf\xbc\x14\x95RK6\x9d\xb6\xf5\xa45~\xfe\xd1\xb37\xcf\xc6\xf4\xc0)J8\xb9\xe3\xde\xced:\x99>\xdd\xb9t\xc1\x9aN\xa7\xd3\xa7y\xf1\xa7xx\xb5\xa6\xd3\xa7\x16V\xcdW\x13Q\xdf\xe7\xa1k\x96\xd2=\xaed\xc3\xf8\xc5\xf2G\xbb\xb7N\xc1\xc2\x01!T\xd9YpJ1\x90\x0f\x19\x86\xa2\x0b9\x15\x816\xf4\xf1r\x81\xbdd\x89\xb5]T%\xb5zyo\xd1\x13\xd3,T\xbc\xc77no\xa5\xc1\xd5\x8865\x0b%L\xea\xc6w\xf3\xfe$\x9a\xee\x189\xb3~F)E\x19B\xa4\xdf\xd49}\x18\xd2U\xd3\x16\xc9\xc5\xfdd\x08s\x83F.\nS\xe4l\x06e\x13#aC\x08M\x9d@\xca5\x04\xaf\xeey\xd5e\x15\x94\xa9xo\xe0#^\x1d\x1f)\x11\xf2\xc2HL$\x97&\x8a\xcf\xba\x08\xf1\x82 \x12\x89\xcc2\x0f|\x0c\x9fK\xa7$\xbf\x9d`\xa6\x9a\x81\xd14\xce\xd3X*\x95\xd5\xed\x1d\xe1$W\xbc\x94,\x82yZ\x0d\xa8#\x7f*\xc6=\xadKX\xb5|d\x07N\xb3\xc2\x8c~p\xf25gp\xf1\xd1K\xe9z([\n;F\xed\xf5)\xce;\xe3yB\xa1f\xf3\x94\x0b\xa7`=\xd9\xa1T\x8d\xffn\x83\xf5\xd4\x92Kq\x06\xfa\xe8\x11\xb4BZz\x12\xf2\xc7\xe8W\x8c\x17\xc9t\x1b\xcf\xbc\x8aQ\xa3\xd9\xa3\xd5\x92\xf1\x04\x9dr\x8b\xdf]o\xbd&\xe1\x8c\x8a\x0d\xae\x8cO]\x06\x0cJ@\x11\x1d\xccn\xf5\x1c\x17Z\xbdMH\x04]4\x8e\xc9\xf9\xac\x95\xe7K\x9a.i\xa2\x8a\xdd/,\x07\xa7`\x01++=CI\xca\x02\xcb)\xde\x8dq\x85D\xf5|\xfaqo\x08\xd8\x8eiM\xc4\x02\x97\x96\xa5\x15W\xb7\xa4xC.\xa8\"#\xae\x0c\xde\xbd3]\x87\x82\x1a\xa7;-\xcd\xd0\xd0\x0bD\x1a\xf4H6\xa8_9\x0d\x0b\xd5\xb52Q\x16\xf41\xc5\x08\x00\xdd\x04eh8e\x99Px\xaax\xb3\xb5\xc3\xb2\xcc\"\x9c\x89\xcc\x0bW\x00>\xa3\xfc|,A\"\xda\xac\xf894\xb6\xb1\xe0q\xe4\xcd[ef\xe6\xfe\x0b\x863\xe4:}\x13\xf8o\x99\x13J\xba\xe5N\xbc\xaa\x95\x0f+\xc4\x0e\xf5\x1e\xf6\x1c\xda#\x96\x8c\x12\xf2\xd8\xab(\xc9 \xb7\xc79\xe7\xd7V{\xa2\xd0\xb2\x89\x08\xe3\xc1\xd2L\x1agv\xa3g\x94\xf8\xf8]\xb2\nR\xdb\xa2\xd2\x99\xa5\xb5\x9c\x8a\x0f\x15P\xd8\xfaoHT\xeb\xe6\xf1\xa6v\x1e=\xfb\x8a'\xa0[\xbb\x98\"\x91\xb2\xbd\x9e\xa3\x0f\xed\\\xd3\xca\xa5q\xf8\xccf\xdf0\xcb\xe9\xb75\xcb)\x95\xf58\x88\x843\x0b\x7f\xc6\xc4\x9by\x17x\x00\xa7\x04H<\xf7\x97QB\x0c\x91\xee@\x7fl\x00\xc3rT!\xc2M\xa0y\x1c\x0b5=$p\x94\x08\xbb\x92j\x02q\x1b\x8f\xee2\xd4\xc5s\xae\xbe\xe6+\x12'\xa8\xd3\xb0\xfa\xdd\x9ea\xd7\x93\xd0\x8ff\xe8\xe1\x19w\xc5wFr)\xbd\xfa^\x8a\xd9\xd4%K\xb2b*\x85\x02\xf6\"\x87\xd5b\x9f\xd8\x87\xfa\xe1\xa2\xc2a\x08\x99\xcd\xb4\x81E\xecD\xbc\xc8\xc5\x82\x15\xe6\xbe\x06&%\x0c=\x0dm\xe2\xf5 \xc2\x9a\xcb\xf2@\xa2L\xe5@\xba\x88\xa3wH\xc61(\xacm\x85Q\n^\x92\x04\x97!\x99A\x1a\x81\x07,\x14uK'?\x88\xcf\x95\x94\xaa\xbb\xde\xdePdG\x96\x143\xe6\x8a=[\xea-'\xaa\xa1[\xaa\x81\xa9\x80\xdaT\xc0\x10\x94V\x0e\xbc\xdfD\xdb\x08\xaf\xdc\xd6\xc9\x8a\xe2c\xa2R\x86#\x1f\xa5y\x9b.\x89\xc4p\xd9\xee\xa1Ccv<\x91\x01\x9a\xca\xb9\xe2 \xed\xe9\xc6$S\x9dW!$\x96\x91=\xffU\x8a\x1a\xba\xbbg\x88\x18*\x0fG\xb0\xf3\xf2\x00\xadG\xd6\x10\xacG\xdej}R!\x8a\x8f\xad\xc7\xf4\xc9\xcffQZ}d=f/\xad\xa3Dy\xf4\x04\x1f-\xd5w\x9e\xe2\x83\xcb\xf4\xa4\xa0\xa3\xd2\xb0\xb7\xbal\xc5\x89\x17\xa7lH\xbcru\x8f=~d=y\xfax\xea\xec\\\xd6LF\xa5\xc2pL\xaaI\xb4`\xb8m(\x8a\xd2%\xba\x93\xd2\xbc\xf3[\x11\xfd}\xa7\xfb\xe2\x8a\x84\xe9\x8bU\x90\xa6$\xd6)\xf9\xd5\x83t\xccc\xa1.\x02\xe5Z>\xfd\x84\xf6\xee\xbec\x07.&\xd3\x0d\xba\x9f\x15\x14\x93\xb6x\x80\xc0\x1f\xc6A\x9a\x03\xf7\xf6\x8f\x11\xf8Q\xb6^\x92k\x06:\xe8!\xe8M\xec\x85\xc9<\x8aW\x1c\xdaG\xe8\xf7\xbd$y\xb3\x88\xa3\xecr\xc1\xe1\x03\x843\x9d8;\xd8\x05r\xc2\x8f\x00\x9d\xc1j'\xffJ\xca#o\xd2\x9c\x07\xfa\xd3h\x8a\x06a\x1c\x0e\xbb0\xc5X\x0dZ\x89\xe9\x1b\x18\x1bh\xede \x91\xbe*\xc7&}\x93\x91\x96\n\x85\x05\x1f\xc2\x1ac\x92d\xab\xd2\xf7\xdaSY\xd8\x8d\xc2\\$\x0b\xd0\x81\x0e\x01\xb1\x17\x84\x96\x0b\x11B\xce\x83\xe4,\x9d\x05\x11\x957\xe4\x81\x11$*\xb7\xb7`\xb3j\xa8\x18\xe7\x82\x87\x02\x11\xfd\xcd\xc46\x17\x92\xaa\x16\xef\x8a\x874k\xf5M\xf3\xebi\x07\x9bac\x19\xe7\xb8)\xa3c\x9b\xcd^\xb2A\x85\x86{\xe03\x92\xa4qt\xc366\xff\xb1i\xb3\xbe\x9en\xa3\xaf\x90\xed\xb8\xdcN\x1cw\x97A\x92\x92\x90\xc4\xcf)\x1f\xc2\xfd\xe4\x82E(3\xb5\x1c\xc1_\xab\xf4V\xdf\xe2\xdc\x88&\xab\xe8\x8a|\xc2\xdb\xa9\xac\xb9\xf2PZ\x7f\xf5Uy\x9d\xab\xcf\x8a5\xd7\xbe\x89#\xa2\xc2\x92\xaeU\xf9\xa9\xa9\xd5ym\xabsm\xbd\xc5\xd3\x9a\x9d \xc8-\xc3\xe4R?\xab\x10\x19\xdb\xe7\n\xb6\xcf\xf3w\xca\x10v\x94\xa1\x04\xc8b^\xceM4\xdca\x8ec5d]\x7f\xab\xaf\xa0\xeaG=\xa7\xcb\xc2\xe3\x96\x19\x9e0\x1e6\x86\xc8\xa9\xa2R\x8ee\xa9\x16\xcbZ\xcd\\\x0d\x84\x00i\xa7 %\x19#\x8e,E\xbe\xb9Y\x13.I>\xf7B*LR6\x03\x1e\xf8K/I\xc0K\xc0\xcb[\xd2\x1c\x0b\xdf\xf3\x0d\x94\xcb>\x0b\xe2\xcd\x80E\xa3\xe1\x90\xd4\x0b\x96e\x08?\x0e\x8c\xaa^\xcb:$I\xd5\x8c\xe6\xf5r\x9a\x10m\xf5\xf3A\xb7\xa21S~H\xaeS\xa6\x8eR\xc7\xa9\x8af\xf2P\x9eb\xc0\x92|\xb8\xa8\xf5\xc1\xdb\xc0\xc3\xd2\xac\x90\xf2\x94\x10\x17\xdam\xa9\x9a\xf2l\xb8\xa5\xb1g!\xea\xbe\xbf\xfd\xe1\xe7\xfd\xddd\x0ex\xec\x0ci&\xd0\x11\\\x1ec\x051\xb6\x19\xb32b\x13}\xe7\xe2xQk\xddy5\x15'\x1a\xda\xa3.\x9d\x91Z\xbf\xc3\xbe2\xc4\xd3\xd2\x80\xaa8^Y\xf2\xa2%:\xbd.t:RU\xda\x98\x85u3\x82\xb1\x0e\x9bf\xa4\xaew\x0d;\xb0\xdc\xda\x17Q\x106\"\x1c\x9b\xffQu\xfe\xc5E\x0f\x8d\x17s)\xean\xdeY\xe6Zl1m<\xae\nO\xcdM\xe7\xed\xc4\x81\x10\xda#4\x81\x13\xc3\x9a \xaeR;\x7f\xe8{u\xcf1\xc5]o\xb9\x8c|\xbbg\xf0cV0\xa6\xd0\xf57\xa0]13xj\x0eXl\x08\xde\xde\x0f\xc2\xc4\x9b\x13;\x85\xa7O\x9f\xa2v2+O\x9fG\x97\xf3\x04\xb2\x13\x07'.\xc36\xd8\xacF\xfc\xe2\x04^\xde\x8e\xd67,\xb0\x01}\xa5-\n\x96\xa2\x18dl\xd2MS\x1c)S\x9c\x03\xdeSI\x0b\x03s\x06\xdd L\xd6\xc4OK?\xba~\x96\xa4\xd1\x8a\x91\x89\\9\x93/\xd0\xb8ZpZ\x87\xecb7\xe7/i\xd4jlXC0\x92\x1c}\xb8\x1e,.\x05z\xcfMo\xec\xe2h1^\xe3\x89{c\x7f$\x1d\xfb.sw\xbd\xddF+\x90\x88\x0fS\x1cu\x13\x92\xbe\\\xad\xc8,\xf0\xcc\x1e\xae\xdc>\xc3|\x8cx\xcab5&\xb3\xfc\xf1k\xaej\x007\xdb\x98L3\xc0M7iw\x16\xf9\xa8(3\x97[\x97\x12B~_ \xc9k\xcc*\xa7}`\xcc\xa7N\xab\xc2\x8clk:'o\x82\x15\x89\xb2\x14NaM\xc9\xb5[D\x8c\xe7yk\xa6\xccq\xfa\xab\xf7\xdd4bW\xdb\xf9\xe9[$\xb6aQ\x8b\x9a\xe8\x88\xf8Hf\xa0Z\xca-\x7ff\xb6&\xaa\xaf\xf8\x98\xf4[0\x94Q\xa7\xae \xb4\xa1v\xd7Q\x92~\xca\xb3\xf9\xb3\xac?\xc1\x8an\xc93?\x0e\xd6\xa9\xd1\xddG|\x04\x11\xd79\x08V?x\xcc\xefF\xe1\x8a5Woh\xcf\x85\xbf\xbc|\x13\xd3\xab~\x88\xde\x84 \x7f\x18o(f\xc0\xb6,\x17\xac\x0f-~\xa8(\x1a\x0e\xab\xa1\x94K\xb5\xe8W\xc2vP!\xc5\xab~\xbe\xf0\xc2\x90,\xe1\x14l\x1b\xa3\xa7\x90wP~\xe4t\xe9\xbc\xf7\xf5\x03\xaeE\xae\x99\x9d\"\x057\xa9<\xb7\xc0\xd3\x08;1(M\x8a\x01\x0bQ5\x86\xc6E+\nc\xe2\xcdn\x92\xd4K\x89\xbf\xf0\xc2K\x82i\x92\x97\xa3\xddvD\xbe\x8b\xe2\x0e.Z\x06\x0d\x97\xbd@r\xfb\xaa\xdf\x85\x94\x1f_x\xfe[\xe3qV|\xbc\xf82\xd1\xf9\xdb\x89\x8f\xe1\xae=\x14l\xc8\x1f'S\xa6\xdf\x8e\xed\xc4q!i\xb7M\x08\xb7fG4y\xed\x16J\xd9:\x1f\x82\x85y\x89Yzw\xf0\xab\x81\x9b\xa1\xa1\xca\x1a\x1f\x15T\x8e::\"\xa1\x9f\x94\x86\xbb;\x02[h\x17\xeb}\xf4\x1a}\x9e\xe7\xdc\xf5\xa6\xaeL}\x9a@\xf1im\xb8{\xe4O~:\xed\n4k\x16p\xc4'\xc6\xf7(\xd6\xd5\xf7^|\xf2\x14P\x0d\xba\x0b\xdd\x07\xfd\xae{f\xdf[\xdd\x87\xd4\xf9O\xea>\x0d^\xda\xd5\x0f\xf6\xa9\xbfm\x9f\xe2qo\x93\xbbU\xf2\xe7.\xfd\x1a\xdc\xa5_.\xc4\xe3\xfe\x8f\xa3w\xbbw\xef\x1d\xfd\x7f\xf0-\xf7\xb1\xd1\xd5[\xf7A{\xfd\x12U\x0e\x1aw\x0f\xddG/Q\x97J\x98\x84\xa3\xbc\x00\xcc\x83\xd0[.7\xa1\x0f\xccp?\xdf\xe0\xbc`|\xba\xa9\xdfoE\xb7g[Y\xc8\x02\x02\xcedY(!\xcby\x11\xa9?\x0fN\xbc\x08\x12\x0c\x83=\xc4\x02\x92\x0d\xb8\x949\x14y\xb1\xd9\x15`\xf3[Q9\xfb0\x90M3\xf1E\xdd\x03\xe9.#\xdf[\x9e\xa5Q\xec]\x12)\xa2\xa3:)r\xfeTm\x855\xef*\x10aQ.\xb7\xaf\xe5GBa\xc8sn\xa07\x99\x95\xc6\x19a\x87\x7f\x1e\xd2.t\xbai\xf4I\xf4\x8e\xc4\xcf=\x8d\x01Y\xfe\xb5q\xf0R\x10wal+\x8c>\xe2A\x88\xd0\xc0b\x8a\xbd\x0d\x92\xb1\xa9\x1a\x15\x13\x8a\xb14\x9eapm\xb4ai\xe5\x12\xa1m\xa1\x85\xa8\xd2\xb5\xaa\xef\x91\xee\x1e\x81\xf8\xd0*b\xcf'\xa5*\xe0\x14\xfc(L\xa2%\xe9\xe2C\x16\xc0F\x80\xdeyq\x88g%\x1c\xa4\x1aD\x0f\x8c;-W\x170R\x93\xa2I\xaap\xc4j\xda\x87\xc6\xad\xb4\xd1\x1e\xd2+\xe2J\x19\x96\n\xb0\xe4\x06r\xac\xcb\xa3\x14\xda\xfb}\xed\xad\xcfH\xdd\x1e\xdc\xb6G\xe9\x82d\xde\x8b\n\x1c\xa2+\x15\xa9\x01\xc9\x0bG\x12MpS\xac\xb8\x1b\x84\x0b\x12\x07\xd8yt,q%\x98\x1d1'\x93H\xd2\xab\x9f\xa7\x92\xcbH\xddd\x01\xa2\x06\xb7DT\xdb\xde\xc2\xb3\x86.\xcf\xe1F\xcbS~k\xd0\xbf\xc3K\xfd\xfe\x81S8\xc5\xdc\xf1}\xc9}f\x93\x1a\x9a\xec\xcd\xfdc}\x16\xc4\xfe\xb1>\xcf\xcd\xdeAs\xac\xf6\xeaBqK\x04\x0bH-\xc7P\xd2\xeb\xcc\xb3\"zU\x8c\x97R\xd1*g\x13)\x8a5\xe6\xd6\xcb\n\xebWau\xe8z\xc9M\xe8\xf3\xe4\xadYw\x1d\x07\xab \x0d\xae\x08\x9c\xe6.0pZn\x02\x87u\xbc\xef`6\x0c\x1e\x03\xca\xd6\x948pl\x82w\xe5*\xcf\xa4zi\xb1C\x07S\x0e\xc8\xc0\xfd^\x9f\x01\xe9\xd7\x01V\x93w\x15\xfd~\xec\xfd\xde.\x82\xd6,!\xa7\x00\xee!p\x16$\xeb(\x07\xf6\xd1f\xd3]y\xd7\xcf.sX_\xc0\x04\x80\xbd\x19\x939\xba\xa7\x90X\xc0\x0f\xe8\x8e\xa3\x88\x92m\xb9k\x9a\x10i\xef@\x17\xb9\x1du>\xdeE\xa2\xa2\x12>\x99/#9\x97\xf5f\xe8\xc4\xd1$H^y\xafl\x8c\xfb\xcf\xd2x \x96\xa40\x82W\x18\xc3\x153H\x0d\xd8\x9e\x92\x07\xc6\xcb\xc9l\xfd\xe4\xe8\x02\xd9]\xb1 v\x89\x0b~y\x81\x03L\x9dBe\x1f\xbb\xc8?_&\xb9\x8eDv\x04\xb9\xd1\xb8\x83\xbf^\xd3\xc6\x13x\x8c\xa5\x1f\x83\x17\xce\xe01/\xfe\x18|\xe6\xe2sA K\xd0]\xfc\x92\xa4\x0b\x12W\xb5\xe5|\x19\xcbazr\xd1\xc8:?\x17\xd1\x19\xce\xcf-\x16\xaf>\xec\xce\xa3\x18\x9dp \x0cYf)\xcf.B\xe3\x93\xfc[X\x0c#\xe24\x9f]\x0c\xcbh\xd5 s\xd7\n\xa8\x8c\xd1(A\x87c\x82q]R\x1e\xa8\xddW\xee\x13\xb1T\xce\xe7\xe7\xeb8\x9a\x07K\x12\x9f\x9f\x03\x8f\x14^@0$\xa6\xdf\xcd\xd63/%/\xc2+\xbcJ\x9d\x87\x9fx\x90\xbd\xd3\x88\x93\xbb\xba\\\xbcBU+\x89Y\x17A8S\xb1TS\x90.\x95\x8a\xb6r\xe2\xff\xd2\xc3\xa4x(y[\xf1u\x7f\x99\xbc\x08\xb3\x15\x89\xbd\x8b%i\xa2\x07\x9b%j\xd0\xde\x84\xa2\x934g7\xd3\n\xbc\x1f\x18\xe27\xacK\xa5vk\x0ew\xc5n\n\xec\x90\xa58\xf3\xf9q\xdf\xb3)\xae\xa1Ux\xdeM\xa28\xb5\xb5\x04v\x8d\xa9W\x11\xf9\xd7\xb8\xdc\xc3\"\xfbL\x83\xc6}>N\xa7\xc8\xcf\x99\xc4\xed\xd2\x01\xca\x93e<\x88\xf1\xde'\xecE\x96R\xf8T\xd4\xe3\xbb\xb0t!\x1c\xa7S\x17R\x91gD{\xa3\xdctX}\x10\\\xde;\xacRR!\x81\xea\xf3E\x1c\xe9\xd3E\xec\x1d\xf5\x9d\xee\x8a\xa4\x8bh\x96\xe8(\xed\x9e\xf2\x1eg\xd6\xc7\xba\x04\xd3\x9a\xbd\x80g\xc2r\xc9\xf9\xa6\xbbfYl\x0cff,?\x96\x1c\x14J\x89\x1d\x94\xf0\x9d\x0b\x94\x81\xa3J\xcc\x80\x19B\xc9*hL\xdd\xa5?H\xa1o\xb7\x0bW.\xdc\xb8p\xe9\xc2\xca\x85s\x17.\\x\xe7\xc2\xb5\x0bg.\xbcp\xe1\x99\x0b\xaf]\xf8\xc2\x85\xb7.\x86\xb1Z\xe2\xe9KO\xf0\xaf\x98T\xdc\xe2\x020%\xe5\x9cw\xe7\xbai\xc6\xabS\x89\x9eK25\xc5\xfb3\xcct*\x831\xb8\xd3\x08\xce\xba\x97$e\xd1\x87\xcf\xba \xfd\xba\xc2\xaf\xcc\xac\xe1b\x94\xce3f>q\xdcB+\xd3\x8dI\x12-\xafH\xcc\x82\xcc\xbe\xe5\x9c%\x87\xd2=\xfd\x05\x8f\xbc\x144\x04a\xe1\xfc\x97\xfbU\xe5\x04D\xa5\x1e\x94\x1fcp3\xb4\xd6\xbf\xb5#\xa7\xe8\xd2\x88\xf1\xe8\x1b\n\xa4Et\\\xf2%]\xad\xfc\x1c\xfe\x82\x16\xcb\xb8W\xf2%I-\xdc\xb4\x11\xf3\xc5s\\x\xa9\x8dhO\xfb\xc0\xd2\xf2a\x94\xe4\xc2\xfbp\x9e\x93\x13v\x86\x8f\xc6\xbd)\xeaQ\xaap\xd1\xe7\x11\xcb}c\xd6\x08iF&D\x8b\xd8\xb6\x9e\x07\xb1\x9f-\xbd\x18\x82\xf0*\xe2\xaa\x1c\x17\xac\xe7/?{\xfe\x83O\x9e}v\xfe\xf2\xd5O\xbd~\xfe\xec\xcd\xcb\xd7\xafLVwZ\xeb\xa5\xad\x89_\xfe\xbe\x08i]3\x8d\x0f\xd4\x13\xbe\x1a/\x99=2p\xe1\x99\xbc.\x89X\x17n\xc1\xa7bH\x99|\xbap\xe5\xe4y\x07\xe9\xfe\xa8\xd5\xb6\xe1\xe1Y\xbf\xaa\x86\xa1\xb2{\x02\xb5h#\xae\x12\xe4\xa8[\xe0\x90\xc1\xa5\x10\x8dm\xba\xa0\xc9\xa7\n\xbe\x14\n3\x18V\x90\xccqMh\x9ew\xfa\x81\x17\x89\xf9\x03\xa0\xbf\xb0f\x99\xf2\xfb\xe3\xb8VD\xcdu.\xa7\xfa\x7fXR \xdf\xefD\x8e\xc7\xf5\xc4\xb8\x0b\x8d\xd3\x14\xd4.kP\xa6\x06\xba\xcc]\xb8M\xefK\x0dj:\xf7\xc0\xcb7\x0e\xe8\x1e\x0b\xb5\x8b\x17\x88u\xa3\xe2\x97\xe2\xae\x9bi-\xffQ\x1c\\\x06\xa1\xb7\xd4Z\xfb\x85\xb0>\x84/\xd4\x87\\\xd2\x7f\x85\x91\x83\x90\xdb\x8b\x9fj\xd9K\x92nr\x0d\x94\x0f\xf2m.\xe7\xbd\xb5S\x07\xb9\xdc)\xdc\xb0@\x0f\x1c)R\xba\x18*\xd5S[^x\xc9\x16-\x1b\xd6Q\xe3\xda\xa3i\x8a\xf1\xdbMZ3\x900`\xfd\xd5\xf7\x00\xe7\x04\xfd{W\xccM\nF\xf0\x12EU\xee\xbe\xc0~\xbc\x96\xd1\x82=\xb1P\x9a%\xba Q\xea PL\xd8 #\x8fP\xac\xbc\xd4\x0f\x03\xcf\x83\xe7\xf4\xc8'\x89Fn\xde1l\xc5\xdatb\xa3R2\x9f\x9aK9B\x9dC7\x7f\xae\x0ey\x81F\x0f\xccI&\x83\x9f\xe5`>K\x85\x1b\x95\xfdZD\xf1X\x94T\xfa\xfa\xb8\x15j\x7f\xe9\x18\x870S\x1f\xe4g\xe1\x0d&8e\x92-\xdf\x9ej\xb3\xd5\xed}\xa1\x8aj\xe6{,n9\x87\x8e\xba\x86l\x0b\x86\xb8\x05\xc3\xb2\x8cFP\x92 \x99\x8c\x96q)\xb3j7\xde\x92\xa7\xe7\x8an^\x1bg~\xe5*\xa1iki\xc8G\xc1T\x18\x17\xc9[\xa8\xa6=w1\n}P\xefF\x8cH\xdf8w\xbc\x1b\xc5\xd09\xcf\x1d\n~'Mk\xcaW\x8dNhA\xddB\xd6Y\xba\xa3U\xbd\xcb\xf5\xb7\xd6\xcf\xac\xbb\xf0\x121\xf7\xda\xee\x16XP\xd3q\x8e\x18\xb4\xaeT\x93pum\x7f\xa1\x0b\x8c*\xeb\xbe\x86\x10a\xd8*#\x89\x8d\xec\x0b\xcdSN\xbb\";\x13\xa7\x1d\xb5\x15\xe4D\x91\xfdN\xf7\x0cyEd_\xab}\xcer\xc8\x83\x9c\xf0\xfb\xc7\xba\xfc}\xf4\xe4\xaf?\xe1\x0ft'|\xd4Kv}o\x9df19K=\xff\xed\x9b\xd8\xf3%\xb6B\xe48\x1d\x8d\xf6\xa8\x90;#2u\xa7.\xf7\x98\x07\xe5\xfc\x1fj\x89\xa4\xa2c\xd2\x9e\x85#;\xe1\xa1\xb6<\xc6\xd4x4R\x91\xb8\x1f\xed1\x89\xc8\x14\xc9n\xe1F\xa2l\xd8\xf5\xa3\x19\x8a\xddxO\x87\"\x1a-CJ\x02\xcf=\xd6hs\xa3\x02\xe3\xc0\\I\xc1\xe2\x84ln[`\xb1l\x88\xad\x8f\x882\x8f\xa2!X\xb1\xf7\xa5U\xa5Qj\xd9\x0b\x8a\xf1\xd6\xec\x9d\xb7A\xd94\xfe\xf2f\x08\x16\xfdS\x0d-\xecb\x80\x9a\x08s\xb7]x1\xcb\xe1\x16\x7fy\x83\xb4\x81ve\xf6\xce\xc3\xf7\x1eXo\xbbgH\x8d\xaaU\xdc\xa2\x11g\xe5]o\xa0\xd41\x18\x08\x8a[8\x91\xe2o\xeb\xc2\xa0\"w\xa3\xa3n*+:Q\x1a-yhk5\x8df\x17\x9et\x1cS\xf9\x9d\x8cc\x8d\xabi\xa3\xbfN\xc8\x02\x15\xd0}\xdd\xe8{\xc1\x04\xfe\xfe d\xf0\x04\x92\x13h\xb73v\x7f\xad\xd8\xa0\xd9\xd4\xc5\x80\xb7yh\xa2jv\x82J\x1c\xb407\x8bh1\xfd\xdb0\x1c\x1e\xee3\xc3\xa1\xa4ag\xa6\xc3\xc3\x83o\xdbt\xa8_D>V9\xae\xac\x95\xdb\xd4-\x8c\xb4X^\x87\xdaE\xd5;`=\xb0>Y\xe1\x1eA\xd9d\xd1\xb4\x9d\xaa\x1d\x17\xe6f\x8c\x84\x9b\xaf\x0d;\x9em\xebzr\xa7\xbek(&oB\x1fR\x9d]A\x1b*Ks\xc7\x81\xe3\xb0\x1f=\x82`,\xec\x12\x98\xbe\xa1\xf5 f\xd6*\xfe\x1f3\xfc\xe7w\xe5J\x17nS/\x08\xf9n8\xea\xddc7\x88\xd9\x96\xc9\xfc\x96{\xa5\x8e\xd7\xc5E_1\xe7\x88\x08\x17\"\xa06r/\x91\x9d\xbb\xfal\x1eE\xd6\xc3\x18\xda\xc50\x95\xa9\xe4wa\xee\x8a\x0d\x95#b\xc9\xb6\\NDy\xdf\xceW\xee\x92\xba\"\x18\xbb\xc6\x04\xb4\xd4[E\xd7\x1b[r\x16\x9bZrf\xf5\x96\x9c+\x83%\xa7\xd2\xdc\xcd\xa6\x06\x9fK\x9dE\xb5\xac4)\xbf\xb0\xd2\x12\x0c?\n\xe7\xc1e\x86\xb6W=\xd1 \xb9mV\x1f\xf5Z\x04I\xaa#+j\x9akJ\xa2\xe2&a\x05\x84\xc0b<\xb3-\xd1\xa5\xe1RF=\xeb\xfc\x9c\x10t\x1b8\x95b\xcb!\x8c\x1e\xe5(h\xd5\xc5\xbc\xe70\x82\x99P\xc8\\U\xdeva\xe5\xb8RA^,\x1c\xa7S8\xd5\xc5[\xe7O\xe8\x1f\x16\xac\x0d=O\x11:\x821\xb3\xa5\x92i\x01\xe2\x91:\xca3V\x11\xf5B\x9f\x0c\x91\xd0o6K\xae\x1c\x0eL|J\x13\x15\x88\x88|\xcan\x0d7\xb9\x9f\xc8\x8d\xd4\x01{\x03\xaf\x91 \x97\x8df\x8fX\x8c\xadCg\xf7u\xe8\xe7\xf1|\xce\xcf7\x9c\x8a\xf9|\x88\xa2\xef\xa63\xc1i\x84^\xcd\xcd&\xa3\xa5G\x9bR,\x05\xfd\xfb-\xbb\x82X\xce8\x9dn\xf0\x9e\x8a6,\xb6(}[\x9d1\x10\x92w\xc4n\xbe\xd1\xc5\x8b\xc7\xd1\x94\x8a\xb0\x91\x03A\x11\x927\xd0\xcd+{J\xe5\xe4\x81\x88K%4\xfa\x1c\x05\xe3q\xc4]\xe40ie\xdcM\xd6x\xeb1r\xa1\xaf\xbb\xb7\x87\x96\xb4\xb8h6\xaem\x96kc\xc3:\xcf\xf8\xa6eg\n\xc4\xac\xf1~\xe2U\x1e\xd1\xa2v\xdd\x0dt\x82r\xe3\xa0\xbc\xa0\xe6\x15\xd1\xafc}\x1cx\\\xc5Pc#c\xb6!9\xd5\n\xbb\xebH\xd8\x89\x85\xc0\x13\x08\xe9r\x13\x07\xa21\xa1\x0f\xcb\x17\x1dI\xcd%8l4\xc0\xe0\x15\xec2+\xaf\xb7w\x82\x847\xa0/\xb3\xaa\xf9.\x8e\x0bC\x8e\xb6RnJ\x15\xb7\xc9\xaac\xa9\x9b\x80Mnl-\n\xe2\xb2\x08\x92\x86{F\x0d\xf7\x8a6\xb9\x89Un\xaf\"\xaf\xdc\xbf\xf5\x86\x9bVu\xad\xbb%\xdd\xd1\xfd\xfa\xb2\xd1\x8d\xaa\xbf\x14\xfc\xa4\x9fue\x16L\x98\xf7\x1d\xfd\xaf\xf7\xba@\xcch$\xb1\xab:O\xc6K\xe7vP\x85S\xc62\xb7#GGx\xe6\xb6\xec\x0b\xcd\xbc\x08o\xec\xaf\xde3]\x9c,\x1d\xd7_\xa1\x16\xaeb\xccU\x02\xad.3\xdbgq\x88\xf3C#\xadTn\x8c\x08\x9f%:\xa3\xdf\x81\xfb\n\xcc\xdc\xd5\xa9\xea\xd3_\xa3W\xd5\x88\xcd^\x9e\x9b\xb0\x12\x99\xb8h\xaf>p\x80D\xf7+i\xb05\xdeG\xd2\x0b\xe8,d\xa7\xe3\x10-\xcf\xf4o\x19%\x1c\x91\xf4\xce+\x19\xa5\xd5\xeb\xfb\xef\xdd\xedN5\xa8\xf6B}\xd7\x86iy\"~(\xce\x14\xcb\x8aC\xa5\xae\x8b ,\xc5]\xb9\xefQ\x88\xadS\xffX\xa3\x1d(%\x94\xbb\xe3\xa1.`\x9a\x8d\x94\x8a\x07\x0f\xd4\xed\x8d\xce\xd1B\xb3\xcc\x04S6\x92y\x1cUrq\xd5\x9d\xb6Y\xe8v\x14\xddq\x0d\xc7\xa8Gv\x99\x8ax\xea\xb8\xf0\xbd(Z\x12/\xb4Q\x94!E\xb8e,\xc0LA\xe8\x15\xfd\x10c\x96\xf4\xbcG\x07N7HI\xec\xa5\x91>\x90\xe3\xb1\xde}|O\xb9\xcd\xc5\xf6\xe8\xa0\xba\xa3=\xfd\xd6M\xf4\xead_\xbf\xff\xe7\xbc\xcdj\xe5\xcb*^mt\xacV\x0f\xcb\x8b\x878\x8cj\x9e\xcb\x87Q\xf5)\x1e\xe64\xf1\x17\xdf\x1bO\xf2\xe5\xa3\xfa\xb6\x9b\xa8\x10K\x8d\x1e\x94\x8d\xa6\xa4\x17\xb5\xa6$\x0c\xb2T(\xe6\x13\xa6\x98\xf7\xed3\xa4A\x9e}\xc6\x83#\x02\x8f\x16\x8eh\x8e\x0bG!\x11\x0b\xf6\xec\xe4q\xf2\xca\x95\x1bb1\xe0 \xe8\xcc$\xee\xa1S!\xde\xa0\xe1\xbb\x93y{\xda\x97P\xc4\xe9\xa7$\x85a\x11\xbf\xb9\xcdo\xeb\xd1\xf3\xb9}S\x928\xfa\x0e&+\x1bA\x8a\x17\xd1o\x0c\xd2\x10;\xd5\xd1V\x1b\xa4\xf0r\xed\xa5N\x95B\x8c\\R\xb1&t\xe0\x86\xf9\xf2\xa5Z\x07J\xf1\xe1#5$\x0cU\xa0*\xe4\x06\xb3\x05~\xc7\\\x08\xe7|\xa9\x98\x91A\xb5M\xd8\xef\xb0\xbb\xf1\xd48\x178\x0f\xe7\xe8\xe5\xfa\x8e_Ge~4\x94`\x8a\xf9\xa1\x07\xe4\x0b\x18\xc19\x06\x16\xb3\x8b\xc9i]tgQHN\x1c\xb4\xbf\x9f\xc1\xa9\x10\xe2\x983\xf0\x05\xd3\x98p7\xf6\xfc\x17\xe5\xdf\xf6\"\xd7\xa6\\\xbb0\xb3opg,\xf0\xae\x15\x9f\xe6\xebj\xa3\xed\xb6!a\x16]9Mv\xa0\xc2\xdbs^\x83\x0d8\x03\xf2\xda\xebF\x8f\xe3uQoW\xc1\x89k\x8e\x10\xbfz7\xa4\x82]#\x05\xbb*\xc7\x92\x1c\xa9\xb6\xc0\xa2\xd8vx0\xdb:\x9bt\xd5\xd8\x0c| f\x8c\x07\xd8\xb3\xa2\xfbn\x8d\xccW\x89\xb0\x1b3\n8\x1b\xa7,\xcb\x1f\xcb\x9e<=q\xa0\xdd\x8e\xb5\xd4\x0b\x8b\x8e\x80\x17\x9d\x8a\x9c\xab\xf6\x9a\xa9]\xac\xef~\x17\x03\xab\xb9\xe0u/\x13.:\xd5\x1fI\x0bo V\x13\xd3\xb5\x10\x17<&.\xe2\x93~\xf5\xb4Zry\x97\x83\xd8F\xb52/J\xa4J\xc4\x08}y\xfa\xf9\xf9\x8c\xb00\x94A\x14\x9e\x9f\x0f\xc1\xc3\xd0\xa2D\xe7\xccw\x1ez+R\x94\xb9\xb2\xab\x0e\xd0\xef\xcb\xea\x91\xb9\x1dT\x9b\x9cG1}\xbd\x1e\xcb\xf8\xa0\x17\xcc\x0e\x86\x7f\x86\xec\xcf\x08\x02;'\xe8\x8aR\xa4\xf4\xfb-\xb9\xf9x\x93\xc6\x0c\x8e\xe3\xb8\xf9\x08\x04!$(\xd3.\xcc:\xfc\xc5\x98L\x99\xa7s\xce\xc1Hm\xd7\x16^\xf2\x92c\x89\x98\xcb\x98YA\xa4'\xcc\x9f\xcf\x92 J\xaa\xf4 y\x8e\xaa\xaa\xb3\xb5H\xf6R\xa9N-\xc0kU\x1f\xa8\x95s6V\xad\x92\x83EE\xfc\xa7\xf2\xfa\x8a\x92\xc3\xca\xbb\x08\xe3/\xe2w\xe5-\x9e\x13\xa9\xf2\x9e\xc8\x9a\xc4\xde\xe4\xbf\x94w\x13\xe2\xc5J\x93\x0c\xc8\xdfd?\xd4\x17\xd7\xc4\x0fHR}\x93A\xc5\xab\xec\x97\xe6\xdde\x90*o.\x834\x7fo\x19\xa4\xca[\x92\x08PyWz\xc2k\x90 \x9azrAA\xa9'\x7f\x92\xd7\x93C\x94z\xb20\xf1\xa35E\x83\xea,HOx=\x12\xa4\xe4E\x82$F\xa2J\xd5\x9d/\x119\xdaFU{.\xba'\xda\xaf\xb5 \xcb\xba_A\x95*;\xae\xd2\xb1\xc0\xdc1\xb9\xe5MZ\x15\xe4\xdb\xc6\xec\xedL\xef\xd1\xad\x90Qh\x83\xe5(\x0e\xa1\xa5\xdfx\xa4x=\xdf\xb4\xd5\xa4\x92M\x0b\xd4Q.\xcb\xa3\x0cddr\x9b\xa6U\\>\xe1\xed\xe8\xb5\xa3\\\xee\xae\xe4\x86\xc7\xe0\x189\xc6\xd9r\xa7\xf4\xbd\xca\x11\x11{\xe5[\xae\x98S\x8b\xbd\x105\xbf\x10\x94\xe2\xf0\x97\x04f}\x15\xe5\x99\xd0UQH\xe5\xf7\x89\xa5%\xe9g\x8f{[G1b!\xcfP\xdf\xa0\x93\x1cR\x8c\xea\x9f\xcb\x0d\xfac\x90\xd8\x1c\xc52\xdc}4\x9b\xf5:?\n\xb1\xab>Z4\xb9\xbd\xa5\xcf\xe54\x05\xac\xecY^\x16#\x98V\xb3\x18\x9e\xf2\x8b{\xb4\x1d~'\x8ecj\x87\x87\xfe\xb0\xa3b\xd1=\\\xf4\x80\xa2=\xf3\x93\xc5X&\xe3\x1e\xf7q\xc7\x07\xf4E\x17\xbcq\x9f\x03\xbf\xc5\xae\xe7}\xefO\xc7\x11\xe2xvr\xaf~;\xae\xa8\x8c-\xe0\x1d\xf0\x97k8\xb5\x99\x16\xd5\xa1n\x17\x1b\x83\x07\x8f\xa9\xc1\xe4\xac\x1e\x93=\xee^^\x8f\xebyn>c)\x1f\xd9\xc1\x06{\x81\x0b[\x19\xc5.\xf3f\xa0\xaf`\x1a\xc0q\xb2 =\x8d$,\xdd\x9c\x9eJ\xd2\x7f\x86\xe8\xe0\x8d#\x89\x9e\xd6\x93R\x9f!J\xc6\xe24\xb1\xbe\xf6\xa7\xe3\x00\x91.\xba\x03a}\x90\x9e\xe5\x17q\xf3\xce\xd0\xf7\x85\xdf~\xe0\"B\xd3g%\xd0 \xb4\xb0\x18\xb7\x7f?z\x04\xbe n\x0e2\\\xbf\xbb\x8e\xd6\xb6\xe3\xb2E\xe1\xbf\x9c\x0dj\xdeb\xbbH\xd7\x016\xd9'\x9b\x86_\xe1r\x8a,\x97\xa8\xd5\x7fG\xff\xeb\x1eRY\xc5\xf0\x7f\xcco'\xb2\x90\xb4]\x0ci\xc7\x83:\xdf\xe7B\xe2VB\x9c\xdc\xf66G9\xb4w\xa7\xf6W\xef\x91P\xa6\xf6+\xef\x15\xbb\x83\x98\x16I\x1e\xe0\xe1fk\x03\xa9\xbf5z\x18=XYt\xbe\xe3\xb4n)\x1bW\x89\xe4C\x88\xc5\x12\xb9 .:\xc2\x19\xbc\xe0\xca\xc2[PHi\xe18\xd8h\xd7\x95\x85\xac\xa6\xe0\xa1,_6K\xac\xe3B\xc8~\xb5\xdb\xa9\xf3\xed\xf0BIc\x85\xf9\xa3\x90\xf1\xb7p\xa0\xec\x0c_&Va\xe9\xb7\x86*<\x0c\xd1\xd1\xc8+\xdf\x02\xbdy\xc8S\xa0^\xc9\xa0G\xf5\xd0(\x8a\x9a\xe48\xcd|hJF\xf7\n\xc7\x15\xcd\xe09\x82\xb8\x10\xa1\x7f\x01ECM\xd8\xe4\x0dh\xe1F\x18\xce\x8e\xb9L\xcag\x83\xa5d\xc9G5\x00\xe1\xc7\xbb;\xe3<;C\xf9x\x86j\x16M\x136#\x9e\xcb\xf3~\xf3S\x1aC\xfel\x0b\xe4\xe7\xbdi\xd5\xf6\xa6\xe1\xc8@\xe4\xe6=U\x90\xf54\"\xb2W\x16\x91\x93\xb2\x88\x9c\xe4\"\xb2W\xfc\xd2\x88\xc8j\xcd\xc6\x9er\x89\x98\xae\xd4\x86\xd3s\x0f\x96e&\xe4p\xc7\xed\xe5\xcaD\\\xed\xeaw\xf4\xbf\x1e\x86\x07j\xef;\x85v\xff\xb8\n\x8f8\xfcH\x7f\xbfM $..\xcfT\xef\xe0$\xa6\x8bo\xe5b\xdb\x05\x0870mL\x15\xc1\x93\x184\\x\xe7J\xd3\xa5\x0bk\x17\xfd+\xe7\xdcAQ\xa5/u\x0f\xaf\xd0\xba!\xc2\xce\xa9\xcfo\xf0\xb9\x08\xc1X\xc6\xe8\xe2=\xf4\x08\xaf\x97\xe5\x84\xa4QD\x17\xd6\xe2V\x8c\x91\xa1DJ\x07\xbcVj\xd4\xd4\xebC\xad\x80\x88\xd7\x1737\xbb$\x17\x9f{.t\xfa\x945\\\xf1\xcb'\xcb<&\xc2\x9a6\xab\xda\x9c6rX\x8eli\x02\xe1\xaa\xc6o\xf9}e\xfa\xa2P\x04\xe9m\x9e\xbb\xda\xdb\xed\xda\xfb\x93\x90\xbb\xbbI\x11\n\xb4s&;\xee\x8d`\xbc\xc0\x88\x15\xa1p\xe2c\xd4=t\x98\x0d\x0e\xa7V#\xbd\x89O\xcc\x18\x12\xdd\x95KF'\xd6LZ^b\x96|\xe1\x92\xdf\xe0D#>(\x7f\x98\xe9\xa8.R\xec\x8c'4@~=c\xc17\x8a\x80\xc8\xb8\xb7X4\xd8\x88\xf1+\x1e\xcb8\xc6T\nQ\x98\x92\xeb\x14\xf30\xc5\x97\x89\x93\xfbo\xc6,yD\xc00%*P\x88\xae\x89)Et#id\x99\xbe\xf9\xdej\x8a\xc2q\xc5\xeeEr\x9fp\xe3\xa6\x08\xe9\xd0\xd3rV-\x1e\xfeCT\x0f\xa9\x19a\x84\xfc\xccD\x8a\xb4\x1b\xcc\xcc\x9a?\x1e \x13jS\xf9\xd3\x82\x9c\xdd\xd1\xdaXO\x16\xe3\xa4\x08\xda\xcb~\x04\x85MF\xe9>\xbf3\x86X\xa1\xf4\x8a\xffX\xe2\x8f\x9cq\xc5\xdb\xf5e\x81\x0eZZ\x94\xc6\x1b 6-\xc0\x88\x8e\xc3\xa9\x0es*^8\x90u\xe9\xcf\x0dD\xa1\xc4\x9esa\x85\x8b\x14Z \xa5qJ\x12{\xad\xe3\x0fj\xefs\x1a\xc2\xa8\xa2\xe8\xaf\xf9x\xa6\xbd`\x9b\xe1M\xfb\x0d6\xc5g$\x8d\x03rE\n\x8a3\x8b\x08#D\xc1j\xbd$T(\x12h(\x90\xf8\xb1\x96*\x89\x0fk\xda\x9e\xbb\xa0\x1bqe|9\xb5\xff\xafq\x9c\xe5\xcdj\x1aoM\xdf\xf8\xfb\x0f\xd6\xbd\xbc?\xdb\xf5P\xac\x08\xe6n\xe0oh\xd1\xb1\x04)\x04\xaf\xaa\x8a\x81\x85\xca3q\x1a\x93\x8a\x01\xf9`\xbb\xad\x0f\xeaW\xe3\xe7D\x19\xc0R\xfb\x12\x88\x03\xfe\xa64I\x7f\x8e\xc7\xc1\xe8\xe9\x8e\xbeM\xcf\x8e\x1c\x93\x8c\x1f\xe1\\cVF\x9ct\x84x\xb3\x03I\x1elH\xf2\x7f\xd5\xefa\xe9\"\x1asj*\xee\x84y\xccO\xb1\xd5\xe9x\xe2\xe4R:\xac\xb4z\x98\x9fP{]L\xc3\xbf.I\xfa\x19G\xd0\x1f\xd38z\xc5 <\x16LV\xb3\xfd\xef\xa7\xd4\x92\xd2\x0f\xe96X\xe8B%DsXD\xecm\xf1\x88\xbd\x04\x86\"\xa5b#s@\xaf\xb2\xee\xf3\xb33\xba\x1c\xf8\xa5K\x12\xdf[\x17\xfaT\x19\xa8N\x95`,\xcd,H\xc4dP2z\x19\xbc\xd8\xfef\xd1\xec\xdf\x84\x98\xfcl\x16\xc4$\x01\xaf\x08}g\xf4X*\xc5\xbb\x96\x82L\xf1\x10La\x9ea\x81\x12\xcfN\x9f\x1d\x83)ya\xa2t)[\xc2 \xb4\xdb\x01<\x81\xf8\xc4\xc1\x19\xe6\xf9{\xe4B\x01\xde{\x8c\xa0Mg\xff\xe9\x08\xfa(\x05S\x01d\xb7\x8ftgp\x08\"\x03!N@\xc0\n<\x1d\xc1\xdeQ^v\xff\x10\xcb\xd6=\x7f\xf4\x08\xf6\xf6i\x81\x8c\x12\xc6\xc9\x04\x83F\x15\x96\x89\xfe\x01Zr\x80\x12K\x1b\xfb\x1a\xb0*[\xfdJ\xd8\x01\x82uup\xc4\x1f\x88\x0e\x1e\x17_\xf5=D\xe8\xc1~\x0e=\xee\xe5\xd0\xe3\xc3\x1c\xda\x1f\x0c\xf02(\xce\x13\xce\x11\xa5\xe0\xac\xcbe \xce\x9b\xf5\xff\xfe\xc5\x9fY\xb5\xfbPuz\xd78Q\xc8\x18\x8b\x1a\x18\xf6\x0dO\xdan \x91Y\x8a\xcfJt\xe5r\xec\xeeX\xd6\x1b\xbew\xf2\xdb:\xa1\xdd\xef\xdf'\xb0\xa76p=\xad\xd8:?'\xc9\xa7\xd1,[\x12\xabJ\xb5y\x9a 9\x8d\x82\xc3T=\x98K\xaf\xceQ\xc5x}9I\xbd\x94|\x7f\x99]\x06a24l\xdadM|\xd33\xfa\xf1\xb0\xcdd\x08\x99Y\xc8O\xc8\x92\xf8i\x14'C0\x04c\xd2\xbf\xcbR/\x19\xbb\x068\xb6Y\xe6\x13Zs\"\xa6\xc2\xdc\x8f\xbc\xaf\xd1F}\xf5\xf4}U\xf1\xf0;\xfa_\xefU\xf9mn\x87\xf6~\xffX\x89\x90\xcd\xed\x0c:\xbb\x84o\xd3'{J\xa0e\xfeh\x7f\xaf_}\xe4\xe5\x8f\x06J\x90i\xd1\x87\xbd]\xc79\xf9N\xfeL\xe0\x0e\xf8z\xc5O\xca\x98C\x81\x9f\x05s8\xa9\xa0)\xe3\x06_U6\xa7|+G\xa3\x10\x93b\xe6\x05!=\xb65\x1c\xac\x0bC\x1d\xa7eEF$\x93\x19\xbc\xd8(i\xd9\x8fC\x9d\x84\xb9\xd1\xbdB\x99\x07\x1e\xb4X'a\xb1\x1c\x97\xd5 \x93\xdfQ\xbf\xd1q/\x95[B\x97$\xfd$\xf2\xbd\xe5s\xdc\x04\x9b\xc5\xfa\xb3{\x18\x8c\xd8\x8b\x13\xf2\xd3\xde\x8a\xbf\xea\xd8\xb1\x18\xfcv^\x0erC2]|\xdc\xe9t&a\x16/\x87`-\xd2t\x9d\x0cwv\xd6$M\xd2(&\xdd\xe4\x9dwyI\xe2n\x10\xed\\\x0dv\xc4\xaf/\x92(\xb4&\xe1,Z\x9d\x07\xb3!X\x7f\x85?\xe8d\x815 \xd11\xddK\xa3\xf8\x07\xa5:\xa3p\x19\x84\xe5\x1aEAk\x12F^\x96.\x06\x9f\x91Y\x10\x13?-\xde\x1c\xee\xec,\xe9\xbc-\xa2$\x1d\xee\x0ez\xbd\x1dV\xb2\x13\xf3\xa2\xddE\xbaZZ\x93\xf0\xb1v\xd0\x1bQp\xc9\xb5c\xd07hR\xe3\x87\xa9^\x7f\xdc\xdb\xdf\xebi\xb7od\xc4\xdcZ\xf4Q\xbcH\x85\xb5\x120\xfe\xa6\x88\x15=#\xeb\x98\xf8^Jf\xe0\x853\xc9\x91&K\xc8\xac\xdb\xe0C\x03\xf2\xfct\xa9\x98\x87#\xe9\xc9IK\xbbg\xfe\x82\xac\x98uu\xf7\xa8\xf4\xe4\xe3g/?9{\xf6\xf1\x8b\xf3\xb3\xe7\x7f\xed\xc5\xa7\xcf\xb8\xc1vP*\xf3\x93g\xaf_\xc9\xcf\x07\xbd\xdd\xd2\xf3\xe7\xaf?{Q~^~\xff\xa3\x17\x1f?\xfb\xc1'o\xce\xab\xed\xec\xefj\x8b}\xfc\x83O>\x91\x8b\x1d\x95\x8b-#o\x86\xa1\x02\xe8\x97\xea\x83g\xf4P\xc1\x9f=c\x17\xce\xc4\xe3\xc4\x9b\x93O\xc4\xbb\xe2\x87\xae\x80\xa8C\xfa-\x17\x9be\xab5\xc6\x0c\xa4_\xaa\xef\x7f$\x1e\x8a\x1fr\x81\x9f~\xf6\xe9'/\xae}\x82!\xe89\x1e\x96\x86\xf6\xe9\xcbW/?}\xf6I\xddZl8\x87\xe6\xe9K|/D\xd5\x81E\xbfY\xa5gH\xe1\xd8C\xfcZ~\xeaG+\xee{\x12\xd9\x16\xffQ.\xe1\xcdf\xcf\xa5\xf0\xe1X\xb0\x0c\xb3\xee!\xdfI\xfe}\xd5\xab\xfcA>\x9b%0\xbfD\xa5h\xa0\xb3|\xeaJ`/\x9f\xaf\x128iVH\x97_\xf0U\x85\xf2\x1cF0(\x83(\x92\xed\x96A\x14u\xf6\xca\xa0\x85Z\xd7L\xad\xebJ\xad\xeb\x86\xb9\xc2]\xf7z\x9d\xc9u\xefhr\xdd\xfb\xde\xe4\xba\xf7|r\xdd{\xd1\x99\\\xf7?\x9e\\\x1f~\xdc\x99\\\x1f\xedM\xae\x8f\x0e:\x93\xeb\xe3\x8f'\xd9\xc7\x1f\x7f\xfc\x02\xff\xffxz;\x9ed\x1f\x1d\xd1\x97\xb3\x8f\xbe\xf7\xf1\xc7S\xfb\xb4E!\xcf\x19\x84\x96pn\xed\xd3\xe1\xf8\xf3r\xb1\xdb\xcf\x9dJ\xb1\x9dr\xb7.y\xb7\x8e\xf6\xcb\x1ez\xe5R+,\xe5N\xc6\x93\xe9\xe4\xab\xc9\xfb\xea\xe3s\xfa\xf8s\xfbt\xd8\xbam\xb5n[c\xaf\xf3\xe5\xa43m\xb7\x9c\x0fv\x82r\xc9\x8b\xa2\xe4\xf8\xf3\xa2>\xc7>\x1d\xfe\xc4\xb8\xd79\xf6:\xf3\xe9W\x83\xf7\xb7\xec\xfb\x97\x93\xce_9\x99\xecLN\x87\xdf}4\x9a\xb4'\x1f\xb8\xe7\x93n\xeb\x7f\x98|\xf8xbO\x1c\xfa\xf6\xd4\xf9\xf0\x83\x9d@\xc7\"\xde\x19YD\x9f_B\xc33\xe3.\xfb.\x11q\xb5\xaakcU\xc7EM\xbb\x83\x0dj:\xdb\xa6&\xec\xdf\xb6}}alao\xaf\xa8\xea\xb8/}\xdf\x95\x9a\x18\x94~\xeco\xd0\xe03\x83yG+\x9e\xee\x1d\xa1\xb9\x02\xa5K~\xd2>\xc5 9{G0\xa4\xc7\xea'\\\xef\xb0;\x80[`\xc9\x9c\xd91\xbb7@}O\x87\x16j\xd3i\x19B\xa7_\xdb\xb1\xd7\xe6\x998\xca\x15]\xd6\xa4g\xb1\x96s\xc8\x7f\x87\x00\xb9\xc8\x05\x85\xf4\xfb\x07\x12(\xc5BU@?_.\n\n\x19H\xae\xe9\nA\xbd\x81\x04\x9a\xb3R{\x12(f\xa5\xfa\x05\xe8\xbf\xa7\x90]\xe95\xd4}\xec\x16/=\xb6\x1e\xc3\x10\xf6\xa4a\xec`\x0f\xe5\x96&\x14r(u\xe7\xff\xf9y,\xb3/A~\x13\xcb\xc8#E\xaa@\xa1G\xbd\n\xf4\x98)\xabk\x17\xe1\x8b\x9a#\xc6\x93\x11\x1c\xec\xef\xef\xee\xc3)W\\a\x96\xe9\xe7\\\xdfd\xa7\x85\x03j\xf9\x01K\xe9\xd9\xa6\xa7\xb5\x0e\xd6p\x00O\x9fB\x9fJX\xfb\x07\xbb\x83^\xf9\xd1#:\xdf\xbb\x8a\x11\x15\xe4\xd3\xd8[\x90\x13\xd3\x0e\xf6\x0f\x1c\x17^j`\x9f\xb2\x84r\x9f\xc2\x13\x18\xec\x1f\x9c\xc0\xa7\xed\xb6\x03o\xc7\x9f\xd23\xd9k\xfbS\x87\xc7\x19\xe8\xb9\xf0\xb2\x00\xea\x88\xd3\x1b\xad\x1e_hb\xc9;\x08P\x01C\xdeQI\xb7;\x0f\x96$\xf4V\x84\xb2\xf6 \\g)\xde\xdb\x8f\x92 \xc5;\x96i\x97\x9e\x1fd\x18t8\xf0,\xf5\xe2\xb2\x9b\xbc\xda\x97\xe7\xda\xbe0Q\x99\xf7\xb3\xf6\xfd\xef\xeb\xdf\xefF\xe1\x0f\xbd8\x0c\xc2Kv\x96\xcc\x7f\xf2\xeb\xea\xe8y\xca\xeb\xd7-\x0e]\x97\xcf\x94\xd3\"\x15\xd9\x86\x8d\x16\x1a\xf1\xbe1d\x0b?\xa2\x8f \xed^\x918\xa1\xc3x\xf4\x88\xcd\x845\xcb\xd6\xcb\xc0\xf7R~3\xf5'h\x93\xc0\x8eT\x98Q\xca\xe5\x91\x0fC)`\x15{\xb3\\\x12<\x9f\x8a\x96 \x90k\xcfO\xf1b*\xc9U\xba\xb4\x9a\\\xe3n\xc7\x8c+R\xa67m;\x93\xae\xf8\xf6\xc1N\x97\\\x13\xdf\x0e\xc7=\x1e\x03\x8d5\x14,\x97\x9dy\x14\xafdw\xffh\x0e\xe9\x82\x80\xda[*\x8b\xa1\xf4\xf82L\xedx\xdc\x9f\xbal\xafDe\xf8@\xc0\xa5\xb8\x8e\xac\xb5,d#\xc1lhX\xbf\x983\xde\xe6,\xf2\xf3A\x15\x13:\x82\x90E-\xef\xfa\x0b\xe2\xbf\xfd$\x08\xc9\xf7b\xe2\xbd\xa5\xe2[Dw\x90h\n\xef\xdc\x0e\x8a\xaf\xdf\xe7\xad&\xd9\x9a\x8a\xb1d\xd6\xd0hiu+*\xb67\xcf\xfe\xeav\xe8\xa2\xe2\xca\xc0\xb0\xdao\x9e\xfd\xd5\x9a\xc5N\xdfE\x85\xfe\xdf\x12\ny\x16\xd1\x0e\xbf\xd1u8\xef\xa6$I\xed\x18\x03@(K\x9bz\x97\xb0\xf0\xc2\xd9\x92\x80=\x0f\xe2$\xcd+t\xc4$\x94\xfa@[\xc9C*\xa4\xde\xe5\xa7\xde\xda\x85\xb8@\x9b\xc7\xe9\x82\xc4\x84\x1ep=X\xc7\xe4*\x88\xb2dy\x033\xe2/\xbd\x98\xcc \xc9\xe6\xf3\xe0\x1a\xa9\xa2\xf5\x18\xda\x10C\x1b\x1e[R7\x1e;.\\\xb0.\x07\xe6.\xafcB\xab\xb1\x13\xe2G\xe1l\x83>\x8b\xce2\xbf\x87r\xe0\xfc\x92\x96Q\xa5=\xaf\xc4\x92\xe2@U)\xa4\xc8\xdf\xaa\xaa\xe9\x08<\xd1\xa3\x02\xbac\xb0\xd8;\x94\xd8\xf2+\x1e\x888\xb4\x19\xa5<\x08V\x120sz$E\xf5f\xf9\x08\"\xfa\xa7=\x82\xbe\xc3e\x06t\x0e\xf0\xaa\xb6\x15&\xfb=\x19AF\xd7,C\xb9\xa7\xdf\xdf\xeb\xf7\xfb\xc5d\x93\xeb5\xbb\x83\xcf\xa2\x1c\xfc\xe4\xd9\xebW@\xab\xf1\xfc\x94(\xb90A\xdc4\xbca\xab\xe6I4\x84.E\x92\xc6\xc4[\xa1\xc3\x81\x17\x84 \x84Q\xd8Y\xc7A\xc8\xb6z^m\xa2\xab7\xed\xc6$\xc9\x96\x98/\xd53\xad\x99f\xc9>)\x96Lqo\xb9\xe2 \x04\xd0-\xac\xe2,\x833\x1cw\x83\x84\xa7\xdb\x0f%\x0c\xe4\x1a\x9a\x15\x89/ \xac\xbc\xf5:\x08/\x93\x13\xc4\xb6u\x1c]\x053\x8a\xddQ\x16\xfb\x84\xe7o\xa6\x9b@&k\x96\x93\x87\xd8\xa4\x87E[\xf2*xKn\x12;t\x9c|A=x\x02>\xfd\xc3\x164\xc3\x80\x8f\xde\xd4\x95\xe2\x9ce\xd87\x9b\xb0\x90\x94!\xfa\xdb\x04\xecG\xabW\xcfM?\x920Z\xce?\xac\x9b*\xdf\x85\xb9\x8a\xd7Aa\x08\x0cd.\xc3S\xf2\x08#\x91\x95z\x97\xc3\x1bo\xb5\xecF\xf1\xa5;\xe8\xf5\x06C\x9c?\xe6q\xabAsZ7\xbb\xeb\x18$L(2E>\xc0\xa5\xe2\xae0\xf4\xa0\x1d\xe5s\xe7\xc3\x13\x98\xd3?l\xee\x04.Dc\x1fS\x90\x1b\xb07/\xa6\x96\xc1\xe7)\xea]\xe9\x94'y\x8cb\x9e\xde\xa9X\x13\x06\xb0\x99\\\x04t\x8f\xdd\xde\xeaD\xa7\x11x\xecI!`\x95\xe5\x022\x13(\x06o\xc9\x0d&\xe0#\xe3`\xcaB$\xe5\x97~\x83\xe6D>\xea\xe2\x7f\xb9\xd1Y\x8a\x1f2p)\x05\x8d\x92(I\xd1s\x87\xdd\xe8\x12?\xdbmz\xac\xd8\xe5\xc8p\n\xb6\xfc\xc8\xcd\x8f\x9a\xb552Y\xaex\x8d\xca\xe8lz<\xc0\x89\xbd\xa0,\x9en/A\xa8\x18\x85\xc7gmt3\x92$S\x1c\x80\xa8\xacvf>6\xf1\xee\\\x86\x97s\x0e\xd5\x0e\xe1\x84;\x10\x04\xda\xb8\xac\xdc+\xeb\xda\x0e\x1c\x1e}TS[\xbb-\xd7\xa7\xdd)\xb8\xdbv\xd9\xd1\xca\xe0!7\x8bj\x0c~\x9b\xb4\xac}\xf9=\xbc[\x04Td\xe8\xf7\nA\xae\xbf[|\xe7`C\xbf[\xef\x90\x15\xe12\xaa%pv\xbeD\x07\x83\xe6\x89v!\xa6x\xc5\xd6\xfbe8\xa3R*\x9e\x9f\xf8A\x96.\x80\xfc\x90\x16\xdez\xd8\xefu\xbb\x8c\x87\xb0\x0d\x8b\xe1\xc6\x0cq\xa5\x9e\xcd\x0c\x99\x06\x8f{\xc16\x08\xe3\xbe?\xc5\x89\xfb\xd2\x85V\x1f\xbd\xe3\\\xd1\x94@\x0e\xa7\xdc\xbfM\x1aw\x0bf\x8f\xb4 g\xf7|HO\xb9\x83\x10\x9f`\x87\xf3\xb1\x0bo&\x13\x01zj\xf1 !?\x9b\x91\xd0'@\xc24\xbe1\x8a\xd9\xcc\xc7\xacDd\x88\x96\x96\n\x12\xd0\xf28\x8e\xd0\x83\x13Kd$p\x07\xc5\x89\xb4\xfb6\x08g0\x02K\xf4\xc0r\x8b\xcd\x841\xc6\x9a\x04\xca\x9f6\xd3\xa8\\\xc4D\x8c\xd6\xef\x80*\xa6\xd3!\xee\xee\x16\x11\xc2\x1b\x04\x90\xdc\x7fBW\x8f\xb4a\xe8\xf8M\x1a\x18\x8f\x1f+\x99i\x87R\xe5\x03.\x01m\xc2-0\x12m\xc41~\xb3\x17\x86\xb0\xcb\xa4\xa4@D\xb1\xc58\\t\x19Z-k\xf3Z\xd8\x1b\x16\x0b6 \x0b\x94\x91N\xf20\x8a\x03\x9b4\xa7\xbc\x98\x8b\x01\x92\x14p00\xb2~\x89r<\xc9\xb3\xf8\xd1\xd1\xc7\xba\x83pi\x97m\xd2\xbdBL\xcc\xc2\xfc\x04K\xc2\x99\xd0 \xf0\x83\xe8\xbb ]\x04!xpE\xe2\x0b/\x0dVt\xe5\xab\n\x1eS\xa8#.\xb9I\xe3m\x9d1)._M\x96D\xe0T\x9c\x80\xbdK\xa1\xf3\xe0\x07H~\x10\x06r\xed/\xbd\x15C\xc0\x95\x17\xbfM\xac<\x0eqe.X\x16\x85\n\xdd\xcd\x15;\xf2\x195\xf4*:\x9dJ\x9bI\xe6/JGn\xe6\xa5I1\xaf\x8c>\x8c\xb4o6\xef\xeaB7\xaf\xe7*WJ\x15\xba\x02\xe3L\xcd\x97\xd1;J.\xe9v\x8d\xe2R\xff\xcb\xab\xa6#\x7f\xc8\xc8Z\x17\xfa\xf60\x99u\xfd\x1c\x0d\xd1m#F]\xe6)\x08\"\x1a\xc3PU\x83\x85\x8eT\"W8\x85STs\x0d\xe9.\xe5\\\xa2(Ea\xe2\xa9\xee\xb1z~\x16\xe5\x99\xb6-\x0bs\xcd\x9a\xb4\xea\xa8Y\x0bQ\xb3\xf6\x18=\xc1k\x89\xf7\x0f\xcd\xc4[C\x96\x8f\x18Y\x0e\xefA\x96\xcd\x82\x8c\x9e4\x87\xc0K\xc8\xe4\xd9\xd0\x81\x12fV\xb1Zl\xdc\x90o\\v\xd4l\xbd\xb0C\x07\x93\xc76\xd7\xa8\xe5\xb0\xd2\xb6\xc9u \xc5~,\x0f!\x8cf\x04VYR\xe0\x9b\x97\xc2\x92xI\x8a\xaa{I\xcbVb\xd3\xf5\xbb\xa9a\x81\x7fJ\xd2\x86i\xf8\xc2U~I\xf2\xc6\x85K\x17V.\x9c\xbbp\xe1\xc2kf\x8c\xd20\xed7\x06f\xfe}\x033\x97\x16{\x19$) I~Vb\xbfl+Zc\xd4\xd9T\xe8j\xa1\x88\x1e\x9d\xcf\x82\x00pyE\xfc\xcc%\x15\x06@\xb5'\x8c\xd0\x19b]\xc8eLA\x85A\xeb\x1f=R\x04Q\xfbM.\xaf\x96\xc578e\x93\x00\xc3\xca!\x93\x9f:\xd0\\W}\xf8\x84+\xc2>E\x97x\x07\x0d\x1e\xf4\x85O\x0d\xde\x9a'L\x82\xba\xbd\xc5\xcdx\xe2\x94\xbbwZ\xf4\xee\x86\xc9c\xdfJ'a\x88\xd5\xeb\xd6\x8f\x07j\x80\x11\xbc\xa1\x9d\x8cr\x0b\xce\xa7\xf4\xc1\x9ao*z\xea\xbb\x80\x11\xf8\xc5\xa4\xcfs\x92F\xf0<\xd6\xa6\x9c\xecu\x99\xd5\x94\xec\x88\xf9L\xc1)\xbf:\x8eg\xaf\xd789\xdb\xd8X\xdcB\xc9\x9b\x98Og\xc0=w\xcc'4\xe0^;_\xd5\x8475=\xcb\x91T\xfb\xf4\xaa\xf6\xe9M\xed\xd3K\xc3\x06\x04\xeeG\xa3\x0b\"|\x87\xf3\xe3\x92\xab\xac7;?z\xc6$D\x18\x84\xa8\xa9\x1e.\xd6D\xd2\xa1-\xab\xc8\xb4\x07\xecP\x80\x07\x9a\xfd#\xfe\xfd\xf6\x96\xd2\xf2\xb8\xf9\n%\xd2\xc1\xd0\xc5[\xaf\xec\x08h\xd4A\xc9\xefI\x07<\xadL-\x7fX\xaa\xdf\xa6\x91:'pm{t\x9f\x1b\x8a6\xc8W\xf2\x87\xf6p\x9f\xf9[x\x0e\x9c\x99\x1a\xafH\xca\xb9\xc4\xe8Q\x11\xfe\xffc\xee[\xbb\xdb\xb6\x95E\xbf\xf7W\x8cx{\x1c2\x92\x15I~$Qlk\xa5i\xd2z7ur\x9a\xa4\xfbt\xcbj\x16-A6\x1b\x89T\xf9\x88\xed\xbd\xdd\xf3\xed\xfe\xb1\xfb\xcb\xee\xc2\x0c\x00\x82$@\xd2N\xd2\xd6k\xb5\xa1@\x10\xcf\xc1`\xde\x93\xb2d\xe3\xcf\xb5\xdbG\x97\xad\x82\xbf\xe4%\x9c\x82\xfe\xc0\xae\xb7\xd1w\x02\x12\xb6\xf1c\xa4\xc6\x149}\xb6\x8a\xe6\x1f\xa4\xd4\x9a__\xc8l\xb9\xa8kX\xf5\xf2\xa88Z\xc4\x9b\x8f\x02K\x8b\xa2\xb5@r\x02\xb8\x91\xf8\xe4\xff.\xd4\xf9\xc5/$\xc2\xaf_\x97\x86\x9c\xcc\xf2\x0f\x01c\xad\xb9g\xd1\xd5\x93\x14\xee\x9d9\x07\x96\xfa\xee\xf8\x9f\xd2\x13aD\xd8\x98\xf9\x0b~\xf1\x07kN\xcd\x04\xa9\x12\xe8o\xfc ~\x02>\xcc\xa3U\x14\xf2\x95^\x07IR \x9bW\xfe3\xbbKC\x1d\xb3\xa2\xff}\xaey\x9a\xe6X\xdcz\x12_\xf0 \xae\xb3U\x1a\xe0\xd9\xf9\xc0\xaea\xed_\x830q\xd6W\x05\xd5\x1b\xf6\xb9\x19\xdf\x88\x19\xef\x13\xcb\xe5\xf3\x0b\xf2\xd3\x80Mp\xed\xe42yN\xedi08\xc8Y\xcb \x9cG\xeb\x0d\xea_\xd8\x95ec\xf9l\x91\xceS{\xfb\x04\xa2\x18\x96\xd1j\x15]\xb2\x05\x9c]\x83\x8fj\xd0\xd4?\xcbV\xa8\xeca\xebMz\x8d\xca\x0d\"\xfcr\x9c\xa8\xbc\xa6c\xf3\xc6P(\x11\x0dEYeP\xae\xa4\x037DZ\x04T\xca\xa7\xab\x1f+A\x06hB\xb1s\xbc\xd9+k{-b\xd9\x1b\x97\xb7(Hk\xc6\x88\x9e\x81\xa8Qr3\xbfVnV\x80;\x9b\x17c\x93\xe8\xac\xf2Q\x15\xf2\xc4\xd1AH\xb3\x01\xda\xba j\xab\x9c\xae\\\xd4&\xf1d\x81~\xc5\x16\n\xfd\xfe\x81\xc4O\x0f\xce\xbc*\x01d\xa3~\xcaZ]\xccY\xb3\xd4\x93\x88u,\xf9\xc6\x17\xf5\x84\xd2\xc7FB\xe9\xda\xe0\xad\x04\x02H\x859\xa8\xbbi\x86\x05\xd2\x89=\xde\xe9 98IbM\xe9\xc9k0\x1f\xefs8\"\x82ac\xe5EUmN>\x8f\xf6D\x8f\x03\xea\xf1?M\xfeip7\xb2*\xf6(\xc3T\xd3=- \xabM-a\xa5\x8e\x1a\xf3z\xad\x96W\xe8\x0b\xab\xec+i\xd2\x08v\x17\x05\xd8\xfd\xa8\xc1.\xc7\xb7\n~al\x13\x1b\xc7\xf6\xcb\xe4\"\xa7?\x08?\xc2>9\xc5\x9f\x04\xe1\xf9\x8a\xc1\xefY\xc4\xab\x8a\xbdGZ\xa2n\x96\x86\x83t\x1b6\xc3\xdc\xe9\xe78):\x83a95\xbb\x04\x1e-\xc4t\x9f\xff\xd4`\xe2m\xf3\xa9i1\x9eZ\xc9\x88\xf0]\xf5\xd5\xa0\x8d\x18m\xe0\x95\x87d\x03|\x14c\x8dd\x9b-\xce\xa2\xa9\xab\xcbv*\x1aO\x87~\xfb9TrM\x9f\xfcE9\xd0\x7f\x98\xfa3\xafp\xc1\x1c\xa3\xef\x88>\xc9\x16-Rp\xd1\x910\x83\xe3\x1c\x8b\xcf\xcf\xd2\x08]\x89\x1f*Vf\x17\xc6\xf0hO\xfd\xe4l\xc3\xc0\x83#\xfe\xbf\x16\xba\xb2\x80\x14\xda\x11\x19m\x07\xfc\xbb'\x10lo{\xd8\xfb\xd3\xb6k\xc5\x99\x14\x0c\x1b\x87~5\x07\x07\xb0\xebA\x172\xc5R\xa9\x13x\xc1\xae\xfc\x05\x9b\x07k\x7fU\xef\xd2\xa4\xff\xe9K\xf9\x9b\x1b\x95\xe0\xc5N\xb7\xd0ZJ,\xf0!\x8c.C\x10\x11\xd3\x94\xcc\xac\xa6\xeb\xea\xc9\xa8\xc7\xa4~\x8eI\xe9\xe8\xdb0i\xb5\xe1/\x84I\x17Qv\xd6\x06\x93\x96\x06\xd3\x82\x96\xb8\x0dj5\x8f\xc2\x88Z51NGC\xb26\x0c+\x0c\\\xcdXu\x97d\x18\xcd\x8a\xef6X\xd5\xd2H+s'2\x81{#\xac\xdf:\xcf\xdd\x98\xa3\xcd6-V\x07s+\x93\xa7U\xe0'\xb7\xb2x2\x18?\xf6\x8a\xa6N\x9aH\xbd\x14\x8eE7\x84\xbc\x97\x85J\x0c\xb0\x10\xe3(\x19\xc5iw\x92.\xa6\x0fge\xddU\x95\\\xe5`rWS\x14\x94\xba.\xa5\xbc\x95\xdf\x94v\xe1\x9c]\xd1\xcd\xc1\xeb\x8d\xbbl\x06,\xbe\"\xcf\xdd%\xb9}\x12\x92F\xa6w\xe7Q\xfe\xbc;\xd2\xcaw\xf2g)\xe8\xc3\x1f\xfbz\xa5\xc7\xda\xb3Vg\xe7\xa1V_+\x7fL\xa1\x1e\x96\xb5P\x8e7\xce\xbe\xd6\xbd\x10\x9b-IF\xff\xa6\xf9\x18 \xee\xec\xe6\x86\xec\xfb8\x98\xb78X\xcd\xe4J\x80\xbe\xe4ErWX\xad\x8b\x03\xb6\xac\xa5B\x84u\xc6\xb2\x89b\xb8\xe3\x14k\x98g-\x8f\xef\xce^\xdbA\xd4\x0f\x00}eZ\xf4\xd9$\x95h\xbcj\xf29.\x9b\xa5\x8f\xbc\xcdK\xac\xd8l\x05\xe1+1\x8bT\xd3h\xc6gsU@\"\x13\xed\xe6DdP\x14\xdc\x1c\xda\xb3t\xe9\x7f\x99\xc6\xbf\xdfYZ%\xfej\xe3\xb6\xcb?\xbb\xc0\x04\x8af\xf8\xc2\xff\x83\x8c\x078~\xd2wB\xe8\xaf\x0b27Kr\x01\xf9w\x179\x8e\xb9\x14\x15`D\xcb\x10\xfe\xec\x0c%-#\xc6\xbb\x0d\xbeWw8\xbd\x1e\\ \xcc\xe7\x16k\x08C3\xcbv4\xb8<\xd8n\xc4\xf2P;\x1d\x85F\xc8%X\xa0\x99\xa2\xc5\xea\xa6*Q!R\xa4'\xad( \xfd\xbd\x16 \x94\x07\xd0\x96\xde,\xca\xd8\xc0\x998(\x9b\xaa\xa9\xab\x95\x08\xcdnn\x07\x96\xdf\xd5\xc9E\x94\xad\x16h\xabs\xe1\x7fd\xe0\x87\xd7\xd2\xf2\x1a\x95\xb0\xd2\xdf\xbb\xb5\xba[\xe9\x15s\xd1\xd9\x8fjVh\xe4)l\xe1h\xf5\x91\xb9\xda\xd4\xeb\xf1\x84\x06\x13\xef\xfbs\x19;OwM\x93\xfb\xfc\x9e4\xccw\xdc\x82\xcf{~\x05\xb2\xcf=!\xae7\x8c\xbaFh\xbf\xb9\x01g\xe9\xafVg\xfe\xfc\x833\xeb\xc9\xed\x99\x80X\xb7\xda\xeaS\xac=+\xccT\xac\xd1\xd6\x16\xbc\xa7O\xa8\x18\x1f\xcd\xa1d\x10\xa2\xf1=\xdf\xfe\xce\x01\xc6\xe0\xc4\x95\xec\xc2\xbd#H\xfds\xd4< \x98?\x13\xbe\x13\xa2uN+\xf6\xf0 `i\x9a\x97\xdeC\xff\x9b\xca.\x93\xc3{\xd3N\xdeq\xebr#4\xa1'\x13\xdd\xa31\xd9\x82!\xbfS\x9a\xa1s\x94+\xe1\xd0\xcbI\xf7\x91\"~\x94W,\x7fdI(\xd5\xc2\x8a\x7f\xbe\x8a\x12&\xcc\xf8K'\x99_\xe8\x95\x89\xdf\xdc\xc0\xeb\xafr\xf8R\x8f\xcaw\xe1\x87v\x9e\x85\x1a\xfa\xaf\x00\xa9\xc9\xc3P\x90~Z\x18!\xe1KP\x0d#\x94\xf6W\xec\xdc\x9f_\xf7\x94K\x8f\xc8l\xa6m\x18\x99=I\xb1U\x0b\x97E\xdc\xf1\"\x9f\xd1\xfcU\x0f:nIs4\x10tw\x07-z\xcc\xd20\x9ck\x06\xed\x9d\x13m|d\xc1\xdf\xadMC5\xbc\xect\xd63\xfa\xba\x15\xd8=\x19\x0f\x05\x0e\xc8\x8d[\xb8\x07\xa9xH\xc8k\"kiR\x1b\xeb\xe6\xcc!PKNCd\x06\xf8L\xd1\x19\xa0\xa8\xa1\xad\xcd\xb1\xd4\xa8\xa3m3\x04;\xd26\xf8hR\xfc\x05\xfbUPC\xdd[gZ\x1b\xd2\x01\xe4\xb2~1\xc0\xe2\x7f\xb1t\xe7\xae\x81\xa8\x16\x04\x9d6&\xd2;\x8b\xeb\xed'\xe1\xe1\xf7\xd34\x9cI\x19\x1b\xc7\xa7\xaf\x85\xc4\x81\xf0\xa9\x12\x82\xe5`Z\x90<|e\xef\xbc\x88\x0f\x06\x1ak$\xce{\xee\x9e_\x8f(\xdaV\xa4x\x0e\xed+\x8f\xbcbD\x17\x11\xe1A\x1f7_\x90\xccpV\x13\x14\xd0\xad\xfd\xb8\x12\xb7\xe5\xe7\x9c\xa6\x17\xd3D;\x8d\x8df\x9cV\\\x98*\x92\xde\xda\x82sr\xf0,\xee}T\xdc{P\xa18\xc2(\xdc~\xfa\xe6\xd9\xf1\xb1\x16O&\x01?f\x10\x84)\x8b71C\xc7\x87\x04\xd9-\x15tNnmR \x1b\xd0\x82\x9f\x9d\xc0\xee~\xf3\"{\x82\x14hXa\xad\x82\xe6I\xbd\xadc\xc9\xaa<4\x8aQ\x16*\xc03\xf7\xe0(\xecG\xede\xfc\x9dk\x8c\xc2XL\n\xc3d\x86(~G\x0e$\xbd\xa0\xe2\xda\xc9\x901\xa5\x05\xc8\xa7\x80K b\xc9\xd4Wrs\xf3\x82\x1e\xec\xef\x8d\x1e\x8aX\xa9\xfaG\x03Y\x93\x97\x8b<\xfa^\x19\xf7Q\xb2\x04\n\xc5\xd9\xa8YK/\x82\x84\xb6\x100\xfd\x01\xfe\x96\xd131!\x92\xfa!H\x1eQ'\x91\xf1\xd8\x99|\xbc\xb9A\x9e\x9b\xbf\xcc\x03Y\x1eb\xda*\xf9\xab\xd8\x04Q\"XE<\xde\xdc\x90\xd5\x02\x7f\x8b\x01\xaa\xf8;\x19\xa9J\xbdQ\xe4\x1a~)\x7f\x14\xdb.01|j\xf9\x981\nx\xb0b\x8bcQG|\"\xe8wK\xe5\xb7\xf4V\x0d\x1d\xf7.\x07\x06Q\xae\xc9\"\x06j\xb4(\x8e\xd0\x7fJ\x89\x84^\xa6\x1b\x02a\xa1:\x9fH_\x14\x11-m\xa7\x81\x08\x0c\xc5^\"$\x0d\x1c\x158(\xac\x1e\xd3P\xbb\x80<\x08\xf5A\x90\x9bFX8\xb7&\x92\xf3\x89^\xe7 \x0f\xf8\xb8\x0d\xc3'\x1e\xfc\xe0Z<\x8c\xc3|n\xb5\x07\xf4k\x9b8Z\x13E\xc3!\x9d\xe3rW\xc8G\xcb\x96\x1c\xcc-B\xf9\x88\xf3\xfc$\x91aFZH\xac<\x04[\x0c\x07\x10\xf0\x7f(\x04\x1bs\xa3i<\xab\xc7-\xdf\x1b\x0f\x9c<\x99\xdf\x99\xf6/XJ\xaa&T\xc9\xaf\xaa\xe7\x95\xd7\x1a\x8a-\x95\xb5\xe4\xb2N\x07\x06\x9f\x82<\x81C\xe0\xe6\x8aC\xa5\xa1W\x184\x085\xec\xda\x83\xb3,\x85e\x94\xf1[.\x8a\xd9\xad\x128\xe4I\x0c\xbe\xeeU\x93\x1e|\xdf\xb3\xe6+h\xd2B\xb4\xd8S\x04\x99\xb8\xcf\xaeR\x16.\xdc\xea\xf2\xd1\xa1\x1eCV\x9c\x0f\xef\xac\xb4\x1d\x12\xf8\xee\xd8\xd8W\xdaOc\x02\x87Z\xcc,f\xf3\xfd]gS\x8d\x0f\xfc\xe9\xe9\nL\xc1D\x03\xb7\x10z\xb1r\x97r<&.\x12\x89e\xcf\xb2\xe5\x92Pw\x15e\x86E\x94\x19\x8b\x9f\xf3h\x95\xad\xc3B\xa0\xd3\x1c\xee\x02-\xa3\xc19K\xdf\x84\xc1f\xc3\xd2\xa6\x05\xae\x98\xabW\xcfbG\x1b\xae\xa7\x0b\x0dL\xbc7\x88\x00\xf0\xbb\x1a\xc5\xf0pOD\xc0\x91\xf1o\xf4\xd9\n\xeb\x00~\x9do\xd3yvN\x07\xa7\xf1i\xf8\xff\xfe\xaf\x9eU\xc0\xe9\x07\xe1\x82]\xbdZ\xba\xdah\x10\x8b?M\xdd\x80\xf4\x17\x96\x90U\x01lS\xf0\xc0\xc2\"oc\xbf\x0c\x1e\xc0\x88(\x0f3\xb3\x86\xe3\x86~\xbf\x0f8\xf8\xee!\xec\x99\xb9\x946\xeef\xb8Dz\x1e\xbd\xd2Jd\x9c\xec\xd3\xa6\x97\x93Ww^\x9a\xcc\xba,n&\xd0\xf8vieZ\xacJ\xa4\xafJ\xc6\xd7\xf7\x13VE@\x94/\xd7CL\x80\xa8\xba\x80\\\x11sSJ@1\x94\xe0\xbc|4\x00\xefR\xc0\xfcn\xb9\x16t\x0d{\xde\xd5\xee\x8b.8\xbf::\x82\xd2\xcf\x90L\x19\xd86\x1b\xb5\xe3\x18\xef\xf8\xfc\xe8s\x82\x15)\x88{A($\x8f\xea\x1dFK\xbe\x87\xaarN\xb1\xf8)q0\x0e\xc6\xa3W\x98\x00\xf9\xba.\x9f\x9b\xc0\x04\xf9{Q@*\x10\xd2M0\xb9\xa096p\x85\x88\x8az\x19\xd3\xaa1\xde\xad\x11M+L\xf3\x89Hs\xa0])z\xe3\xfc2\x8e]C4\x9c$\x8d+\xd9\xfd>\x04\xe1b\x9c\xabs\x0b\xef\x94\xf7\xd7lu\xdb\xc6\xcd#\xaf\xdb\x17\x91\xe7\xf1Mz\xbdbcp\xd4z9\x7f\xf5q?\x8b\xa2?\xf5\xb8\x1bL\xa7Z\x1f\xf7\xc2\xb1N\xe3\x8c\xe9\xc7\xf8m\xf9\xf7O\xef\x9e\xcbc\xcd\x0b\xf6\xf4\x8f\x97\xfe*)\xd4~Q)x\xfa\xf2\xcd\xf3\xbb\xa2\x85\xbas|\x9b\x81\x7fN\xfc\xe1LE&\x81o\xa2h\xc5\xfcpF}T\xf2\xd2I\nT\xa8\xe1k\xe7^\x8bmL8\xc1\x9a\x82\\\xd2\xad0\x91\x0b4\x06\xb1KmN\xb1 E\xb4\xea\x8b\x16{,\xf7\xbbM_&\x8c\xd1\xae/9\xaf\x17\x96y\xfd\x1d\x10\x88%3\xe2m\xb3\x9aV\xf2\xa6\xed\xe5\xe344\x94\xb5o\xe8\xa1\xd6\x90|*c\xba\xc0\x84\xe9\x820\xfd; :\x12\xd7\xe8\xb2k#\xe0\x04v\x87zS\xc3\xca\"\x17\xee\xe4FU\xe8\x1a_\xe7\xbfD3\xeed\\\xbc\xc7\xf3\x1e\xa8\xf2\xe9i\xdf\x9d\x8c\x83pys\xcc\xff;y\xe1\xddPQ\xe8\x877'\xfe\xc9\xcd\xc9\xd3\x13\xcf\xfbZ7\xb9\xc7\x80\xfc\x98\xadW\xeb\x9c=\xb0K \x8d\xbc\xf3r\x15\xf9_\x84{\xd6\x85\xdb\xa4\x15\xe1\x88\xd6\xedD\x82\x80\xf1t\xda'\x9d\xeaf{\xb3\xcfN\xd2\x18#\xc1\xc8\x11\xc2!H2BX\x1eW\xa8\x91~\x1a\xbd\x8c.\xe5\x89\xe6\xa4\x04L\xf8=>\x06\x11\xfcw:\xeb\x81\xd3\xdd\xceu\xe7\x0c\xe9\x95#q\xc1\xb8d\xf2\xa7h\x91\x1e\xf0\x9a\xcb\x9c\xf4\x10\xa6G0\x11wY\xff\xf5\xab7\xc7o\x8f\x7f~\xfe\xfe\xf8\xe4\xc5\xf1\xc9\xf1\xdb_`,_\x9d<\xff\xeei\xf9\x95\xd3\x0f\xfd0o\xee\xc4?\x811\xb0\"\x85!0\x9b\xcb\xeeFf\x04E2\xe3\x05\x07\x9cZBCX\xe7\xc5Dh\x04\xb7\xe8\x8aIB#\xe6\x9f\xdb \x8d\x10\xees\xb2y\x8c\x0f\xda\xa8\xd8\xdf\x89\xd4p\x89\xd6\xe8\x1c\x92\x1b\x86\x81\xd4hKk\x14\xf0\xa4\x0d\xe2C\xb3l(HN\xfc\x13\xde\x17$\x97A:\xbf\x00\xd7*;\x98\xfb \xd3\xe5\x90cc-\xd0\x16\x07\x81\xcf\xcc\x1dQcJ\x8a\xdb\xa6\xb1\x93\xa7'\xb5\x8d)1m\xab\xc6\xfc\x13\x83<6\xf7x\xb6\x1e7!\xf4\xfb\x12\xab\xc5O\xfeg[\xad\xe3\x93\x17\x9fo\xb5\x8e\xc3e\x9b\xd5\xaab\xa0/\xb7Z\xdb\x9fu\xb9\xb6?\xebzm7.\x98\xe9\xb4\xe7\x9f\x0f\xfa\x03\xc3X\xb4{\xa9H\xf6\xf6 S\xc9\xbc&\x10\xaak\xcaa\x0e\xbfP(\x02fX\x87L\xfe,]C\x99\xfc\n*\xe4\x97\xa2\x8e\xb4\xffy\xdb\xae\xed\xc7\xd7N#A\xd7\xd8\xe2\xa4\xf4\x8b\x93no\xd3\xd9\xcd\x14NO\xd3Y\xd7+\xbc\x1c\xeb\xbd\x17~\x10}H%\xf7=\"\x10\xb1\x85\xfb\xee\xbfn\\N\x8by\xe5n\n\xdf{\x13\xcf\x9b\x14(\xb9V\xea\xdc4X\xb3$\xf5\xd7V+\x96\xcfN\xac\xe5\xe1\xca\x83>\xbbbsA\xb3\xa9\xd2H\x96~\x01r\xcd\x10\x07\xc5\xa23\xd9\x08\xb7L\xf3\xb5\xa7\xf47H\x81\xa9yx\x8a(\xcb'\xa1\xe7'\xf74\xf3\xee\xe7q\x1c\xc5\xae\xf3\xad\x9f2\xe5K\xcbx\x99)(S \xf2\x89v\xd9t8#\xda\xa7\xcb\xa6\xa3\x19y+e\xf4sg\xd6\x83\x0e\x9b\xee\xcer\xf3Wv \xbc\x03\x97\xff\xaf\xff\xee\xed3W,\x83\xc9\xff.\x10\xe1)\xba\xbc \x8aN\xd1e\xd3\xbd\x19\xc5\xa5\xe8\xb2\xe9\xfe\xac\x07l\xfapfC\xc2(p\xc5\x80\xb7\xd3\x873A\x94\x0ez\xb0\xe3=\x81U\xeeK\xb9\xf3\xc4\x83\x15\x1a\xf6\x99\x90\x14\x88\xa8\xd1\xddU\x15\xfd\xd9\xc0\x8bM\x1f\xcfp\xe1\xf9\x9e\xed\xb3]\xb8\x0f\xee\xfe\x00\xee\xe3j\x0df\xd0\x85\xae\xcb\xa6\xc3\xe1\x8c\x83\xd9@\x8a\x00qC\xf4/\xb77\x9e\x88\xcb`]6\x0dzV\x1eFS\xdf\xda\x82e?a\xe9\xdb`\xcd\xdce\xff\\\x93?\n\x0d\xda\xa5\x0b\xce\xd3o\x9e}\xfb\xfc\xc5w\xdf\x1f\xff\xe3\x87\x97?\x9e\xbcz\xfd\xdf?\xbdy\xfb\xee\xe7\x7f\xfe\xcf/\xff\xf2\xcf\xe6\x0b\xb6<\xbf\x08~\xfb\xb0Z\x87\xd1\xe6\xf78I\xb3\x8f\x97W\xd7\xff\x1e\x0cG;\xbb{\xfb\x0f\x1f=\xee>8<\x0dOc\xe7\x96\xec; x\xbe\xc4\x86\xddY\xfbm\xc1\xd3A\xa3b\x9cc\xc7\xc8\xa2\x1e\n)\xf2_H\x1eCa\x9d\x8e\xa8\xe3\"b\xcfr3vi\xbcN1\x00a\x7f\xb7Qk\xc4\xe0\x00\x06\xad4?(\x13\xdf7\xbe\xb6\xe2\xc1\x18\xfe\x0b\x1e\xa1\xf0\xb9\x08\xf6\x9f|q\x06E\xe9\xc5\xf44>\x0d\x0fgB\x86a_\xf4\xa0v[|\x8c\xffc|\x95\xd8\xb7{n\xd1\x07)\xff\xee\xc1\x13\xe0\xab\x9c=\x01\xd6\xedz\xc0\xe0\xbf\xd0\n\x8c\xe4%\xa4\xce\x99\x8b\xfc\x10pt\x04\xc3}\xd8\x82\xd1\xde\x9e\xd7\x03\xbd\xf8Q\xb9t\xb4\xb7\x07[\x90p\xa4\x9f`\x12\x90\x83\x03\xd8\x87\x1b\xf0\x158\x04\x12\x1c\x98\xe9r\x15[4\x00\x19\x087\xc3\x81\xdd\x87}T\xd1|\xd2\x90`\x0c\xc3GJ\xd0Slk`lk$J\xf1S\xe1q\xc8\x97F\xaf\xb3\xab\xbe\x8c1\xe9\xc62\x8e\xd6\xea\xc1\x9d#O\x80\xe8\x1e\x1f\xe7u w[\xa9\x08\x06\xf6\xe0,\x0e!\xd0\xf6Z\x93\xb6\x00\x1d\x93s\x8b\x15\xa1X\x80/k\xc45~\x0d\xae\xb1@\xe7N :\xf1\xe4\xfb\xd3\x00\xb7\x8fo\xfa\xfe\x0eR|Z\xe9\xc8T\xba_*\xdc\xdf\x81-@s\x1c>#7\xe0\x10\xfb\xc8\x83.\xa4SfW\xa8\x16\x01t\x87\xf4\x87\x9fyD0\x86Q\x0e\xae\x85v\x06\xa6vv+\x85\x07\x07P\xeeq\x7f\x17\x1b\x1e\xe6\xc0\\h\xb9:\xc0\x83\x83J\xc3\xfb\xbb\xc5\xf6z\x10\x17\x01O\xfd\xfad\x02\xc2\xca\xceVd\x7f\xc58\x93U\x02\xc1*,\xbc%\x89\x16\xd5x2X\x9c9>\xf1\xca\xb7\x19\xf2\x97\x985\x12\x83[o\x03C\x80\xca\xfc\xb8\x91>z\xae\\\x83\xf9\xe1\x0b\x9f\x90 \xd8\xea6\x16\x88|\xa1\xf3)\x9b\xe5I\xc0\x94\xa8\x96\x16|\xe6\x08f\x15E\xb2q\xb3=\x87\x08\x84\x13\x84\x10\xd7\x1b\xf0\x04\xa2Id\xd3j\x08\nY\xdfo\xecZ\xfe\xdd\xc9P\x07i\x9f\xe6>x5a\x81\x90\xa8;1k^\x16\x11\xce\xa2U\xd2\x0e\x058\xc5SyG\xfa\xa6*\x9c\xf8\x93<\x8cZ\x1c\xfa;\x9e\xe1\x8d\x1f\xc4\xc9\xdf\xeb\x10\x0b\x7f\xdd\x9a\x83\x9a\x89\x19=\x8dc\xff\xda\xf5\xa5\xdb\xa3R\xf4\xf0\x13\xec\xdf\xed\x04\xfbx\x82\xcd'7h}r\x03\xf4\xe1G\x93!\x0d\xe1~`\xd7 \xff\xba\xec\xd6ok%\x9b\xb2\x19Ge\xd1t\xc0o\x19\xfcw6\xfb\xd3\xa1\xde\xb2\x8f&\x9a\xfac9\xd4\x99\xf0\x06\xb6\xeccT\xd8\xc7\xcc\xb8\x8f\x99m\x1f\xf9ne\xb8[Ae\x89{\x10\x89\xb5\x0b\xc4\xda\x05\xb8vV\"&\xfa\xeb\x0fp\xf1\xd6\xbe\xe51N\x98Uun\xf6)\xfcrg\xb8\xf6\x82\x0dB\xb0\xc4\xfe\xd2\xee\xb1\xb0'L\x10\x15\xa2\x0d\xa7lV{\\>/\xc4\xdb\xf0\xfc\xdf\xcd\x8f\xf2\xb7\xe4A\x16.\xd82\x08\xd9\xe2\x13%/5\xcbp\xfbE\xf5*\x19\xe6o\xcb\xcf}\x8c\x82\x85\x8c(V\xd7\xbb\x89\x93\xab\x13\xfa\xfd\xcd\xbc\xa1\x7fK\x1e\xc4\xec\x9c]}\x11U\xca-\xe4f\x01F\xa6\xc1zm.'\xe5Mg\xa6\xb19\nxp\xfa\xc0\x9d\x9e\x07\xeb\xd9}\xef\xeb\x07R\xb3a\xae\x1e\x1bb\x0c\x80\x18\x94\xf3@\x8a\xdd\x07V%\x02i:\xa4\x05o8\x1d\"\x1b&\xd5\x07G\x9c%mq]\xf3\x9e\xd0\x9aw\xcar\x03\xa0\xb8`\x0b\x947Si\xe5K\xdf\xc1\x7f\xce\x8a\xcbS\xa2-:\xa9\xdf\xca\xab[0\"\xea\x81e\xc5P\x93\x95kFY\xaf\xcc\xc7|\"\x92PT\x1au\xd0\xd6\x14\xe6\xb6\xf8\xa4vC\xf8Zu!\xed'Q\x16\xcf\x19ty\x81ua\xd3\xfe\xf9*:\xf3WB\xe7\xd7=\x04\xe7\x9cB\xf5\xe5\xa9\xe7\xf3Wkz\x15\x9c\x87Q\xcc\x9e\xf9\x89\xfe.\xe0\xef\xd8\x97BfO\xb4J\xea~\xd1\xa21]\x06\xe1\"\xbaT@A?\xfb,\xd9\xc4\xc1\xda/\x19\x06\x06\x8d\x98\xd1\xa8N\xf8-y \x07\xff\x17\xe3\xc6\xaa\xbaF\xfe)\x18p\x11\x06\xf8\xe6{\x16\x11!\xc8\xf48}4\x0e\xe3g\xa1\x9eM\x8f\xfd\xf0\x9c\x8dkyo[TQq8^\xc7\xd1y\xec\xaf\xe9P\x84\x18\xfb\x8e\xef\x98\x0c-v\x16-\xae\xb58<\xce\xf3+\x0e\xf9I\x10\x85oR?ek\x16\xa6\x8eVu:\x98\xa9&\\\xe7i\x1cG\x97/\xc4\n\xe7_\x96?`\xea\x0d}\x8bN\xcf\xb7\xfd\xca\xc0\xe6\xebZ\xb1\xba5hD\xd4\x9f\x84\x8eEt\x9c\xe6\xcd\x0f\xb4\x8d\x0f\xeb6\xbe~\xd3\xff\xb0`s\x9b\xc3\x0b\xdej\n\n\x88\x81\x95\xdb0\x14\xbfu(\xe0\xbbc\x84\x82\xbc\xaa\x82\x02^\xd7\n\x04\xc5\xfae \xe0\xc0v\xeb\xaf\x0cf\x10/\xfc`\xc5\x16\x90F\xca\x16B!\x0c\xbb6\xc5\xd8\xc1\xc6\x8f\xfdur\x0b\xab\xd0H\x06T\x0d\xfd\xb5 >\xc5\x0di\xec\x0cW\x1c7\xba\x07\xce7\xabh\xfe\xa1t\xde\xec_\xe1\xf2Mp\x0d\xe4\x02\xbaQ\x0fB\x199x\x8a\x96\x0b\xfc>\x9e\x0egt\x01\x0b\x95\x8b^\xdd\x91\x08\x02#F\xe5\x9f\xd2g\xf5&4w\xbe\xa1\xe5\x00\xfe\xd4;Z\xdd\xba\xcat\xed\xcb\xda8X<\x00\xf6F&\x8b1\xf7\xd1N\xa98\xa3\xda\xe5b\xbfN\xdaW\xac\x9a4\xcb\x15J\x08\x0f\x0e\xe1q\xb1h \x870,i\xb3Vp\x08;\xa3\x12(\xf0\xb2\x9db\xd9\x05/\xdb-\x96-x\xd9^\xb1\xec#/{X,\xbb\xe6e\x8f\x8ae\xe7\xbc\xac4\xbe5\x1c\xc2ni,\xefyY\xa9\xdf3^V\xea\xf7\x12\x0ea\xaf\xd4\xc7\x15\x1c\xc2~\xa9\xbd7\xbc\xac4\xb7\xe7\xbc\xac\xd4\xc7S\xbe|%7\xc4W\xbc\xac\xf4\xedo\xbcl\xbfX\xf6\x01\x93\x15\x96*\x1eca\xa9\x97\x1f\xb1\xb04\x95\xb7ph\x80\xf8\xc1\x18\x9c\xd3\xd3\x81\xe1\x1ez\x88o|\xc3\x9bG\xf8\xe6\xcc\xf0\xe61\xbeI\x0do\x86\xd4Qhz5\xc4W\x1fM\xafF\xf8jiz\xb5\x83\xaf\xca\xd4\x1c\xff\x1b\xd1\xd0\xcbBh\xfe\xb7\xb3;\x86{\xa7\xa7\xce=\xc3\xd8\xa9\xaf\xd3Scg\xd4\xdb\x89\xe9\xdd>M\xed\xbdi\xa5F;\xd4\xeaK\xf3Kj\xf5uI\xc6P\xac\xfa\x8c_\xd6\xce\xb5\xd3\x03\xe7\x17\xfe\xbfk\x96\xe0\xb3\xf8\xe7\xf9\x1b\xfe\x0f\xd2\xbc\xce+\xfa\xff \xff?>\xd2S\x84\x8f\xf4\xffWX{\xb9\xc4\x8a\xe2\x9f\x17/\x9c\x99)\x90\xc6\xeb*\x92\xcc\xc5\xb5%\x0d4Y\x9e\x1c\xd6z\x93\xf5(X\xc6ho\xcf#B\xe8\xca\xa1h\xbd\xa3b[\xca\x02\x19\xab\xef\xef\xed\xed\xc8\x0f2\xf1\xc1\xae\xe1\x033\xc9\xde\xa1FvG\x8fw\x1f\xef?\x1c=\xde\xf3\xbcb\xf8\xdby\xb4`\xb0\x89\x82Bz\\\x8av\xb8\xf6\xafe\xda\x85\xf3\x98\xf9)\x8b)\xf3\xc2\xe0\xea\x85\xf83\xd1\x0d8\xd0wb\xa0\x8f\x8a;[\xf8%o\xbc\xd3SG\xc4p\xcc\x836\x0e\xf0\xfbm\xc5'{\xd0\xd5\x987S\xb0\x92\x9f\xaa\x9b\xa5\x85\xac\xc6\x9d\xc9crG2\"\xb6\x0c0\xfd\xa3\x9f^\xf4\xd7\xfe\x95\x8b\xf9\xc1E\xf1\xcd\x0d\x8c<\x19\xda\xfbC\xb09\x0e?\xfa\xab`Ami\xbf\xf58\xdc\xcbUt\xf9\x92}d+\xa4`\x83\xe4$\xe2kz\xee\xa6\xf9\x1bO\xfa\x1fie\xb2\x97\xf4z%\xe2m\x17\xaeU\x1bE]\xcd\xffkH\xdfU\xe0\xdcrw\xfe\xff\xfca\x919\x87\"\xfb \x19iP\xc6\xd5\xb8\xa40`J'C\xce\xff\xd1\x13\x8a\x88:\xa4\x8c\xe4\xf14\x10Z]q\x16\xd84C\x0f\xeeN\x87\xc8\x99,7]\x1d\x91A/\xff\xcc\xc0\xd5r\xd0\xc8\x94\xff\xb6\xd7\x03\x97\x12\xb8\x95B\x90\xf7eV!\xde\x0foOdt\x98\xf7u7\xcb\x1e\xf8\xd4\x99\x8f\nk\xfd\xd5\xd4\xe7\xe3\x0b\xa7\xd9\x0c\x0e\xcb\x91oA\x13p\x17\xe1\xd9\xd5@\x8c\x03\x0e\xb6\x98H\xf3H\x05;Q\x9c\xfe\xc0\xae)\xd5\x8c\xfaQ\x8c\xde\x1e\xb2\x7f\x06\x0b\x19=]\xfd\xba\xb9\x81G2\xf6y\x18\xfd\xc4\x96\xd4\x86x\xd4[\x08\xa3g\xd1z\xe3\xa7?\xf2\xe3Lu\xb4\x02\xbd\xe6<\xe2\xd0\x8d\xeeV\x97b)\xb5\x02\xbd\xe6\x1d\xe2\xc5\xcb\\Du\x9f<\xbf*\x86\x98\xc7\x9cWa\x1e\xa6\xbe\x98I\x9a\x97,2\xfe\x85\x9f2a\xa7@\xa5Y\xc2\x16\xdf\xeao\n\xc1\xfdL8\xe2\xc4x\x98\x10\xe8\xc5i\n\xe0\xb0\x14:\x96y\"w1)\xe6\xb6\x87\x04\xd7|l\x89f\xaa\xf4\x04\"8\x80\xe4\x89\x879\x1a\xd0j]\xa6\xe6\x17n|\x98\xf8?\xf2\xd0\xda\x87\xfcCD\n\x0b\xd1A\x82\xa9\xdd\nox\x97\x14\xc65Bc!z\x0eu!\xc4\xa9\xe0\x03C\x01\xd7\xddC\x08<>\xc4\xeea\xd9\x9dL\x80\xb0_\xbbD/\xebbo\x9bc\xebJty\x1f4\xce\xce\xd4\xf6\xb7U\x14-\x19\x0e\\\xb1\x15\x87>z\x9c\xd76\xf4okC;\xa3b`\xaa\xe1h\x1f\x99\xf7\xfda9\xf2\xd5\xe8\xf1\x1e\xff\xc5)\x94\xdcm\x82\x93$\xe2\xd7\xcd\x0d\xec=\xdc\xd9\xdd-~\xc7/\xe3\x1d\xfe\x8b\x92Q\xa8\xaa\xbc|\xbf\xd4\xf5p\xb8;\x1c\x0ek'\xf2\xc2:\x11\x9cb\xa9\x1fl\x99?\xbe\xcf\x1f\x9f\xe6\x8f\xaf\xf2\xc7\x0f\xf9\xe3\x8f\xf9\xe3e\xfe\xb8\xa8\x1d\xd6;\xeb\xb0\x1e\xfcz\x1a\xde\x07\x19\xc8D\xdfn\xf9\xc4\x0f\xd27\xd5X#\xbfs2\xa7X\xf4\x0b\xe7U\x8aE\xff\xe4\xb4M\xb1\xe8g\xc0\x88\xd2\xd5A\xfeP\x1fg\x9d\x8f#\xd2\xed\x9b:\x86\xe8'sK\xf9\nO:\x85\xfa\xa8\xbe}Kx\xa0R\xce)\xd5\x7f\x8b\xec\xa3\x85\x04%\xa5\x9d\xc4x<\x9do]\xba\x8c|,;\xcb\x1f\xdf\xe4\x8f\x97\xf9\xe3\xfb\xfc\xf1i\xfe\xf8*\x7f\xfc\x90?\xfe\x98?.\xf2\xc7\xeb\xfcq\x9d?n\xf2\xc7\xe3\xfc\xf1*\x7f<\xcf\x1f/\xf2\xc7\x8f\xf9\xe3\xf3\xfc\xf1713{V\x17C\x82\x07\x839\x8a\x97\xbf\xed\x10\x0bb\xf2\x06\x0e[\xff\x13a\x05c\xdd\xef\xd7\x9a\xcdS\xff\xe3m'@\x91\xdd\x9a'\x02\xe2\xe6\x8a\xa7\xa3\x861\x83\xca\xffB\xb3\x9c\xa3\xfa'\xe2'=\x81.\xe7\xf50\x9b=_\x07Q\x01&\xfcqL\xc9\xeb\xa0\x0b\xffp\xe7\xc4L\xa2\xd2\xa2\xb63{\x98K\xc8A1\xb2V\xfa\x83\x83g\xe65A\xfb\xcf\x8d\xd0~\x0f3\x934+\xf7\xe4\x9fb\xa4s\xaa\\p\xcaV\x1aI\xc8LK\x84\xd0\x111h\xfb\x80\x0e;\x9c]\xdb\xdf\x19\"\x11P\x8dO\x1a!WL\xdf\xec\xef\x8c\x06\x90\x07+\xdd\xd9\xdd\xe1\xcc6\n\xa6^\xbb\xc3\xc1\x08\xbd\x96\x19lS\xeb\x949f[|\xd6%\x1e\x8e/\x1b\xa7\xdd\xc6$\xf3z+\xcce\xbb\x87\xd0AJ\xe6\xdf\xfc\xe2\x99@:\x8df0\xa6[\xee\xb5\xd9\x1bM\xff\x93\xba\xd4\xba=\xf3(}\xa8\xb9!\x11\xfc\xc1\xbee\x05\x99n\xb0\xdeDI\x12\x9c\xad\x84\xb7\xfb\x18\x02!\xaa$\x0b\x10\x8a=\xe64\x11v\x7f\xb8\xf5\xfc\xfc\xd7\xf64Rp(\xe95)\x00\xc4\x90k\x06-@\\D&\x85XRF\xf9E\xc8\xcf\x1b%\xd46\x7f7\"|\xa4\xde\xf1Q8]\x07\xb7K\x1e\xcam\xbalNC\xa7v\x86\xdf[\x19a\xdb\x909l\xe4(u{\x88\xb9/\xa9\xf4\x85a,\x8a\xf8\x99\xb2\xf1/E6\xfe{G\x98\xa2_\xd0\xfe1\xf8\xf39\xdb\xa4 \xaa\xde\xf0\x06^QN0\\\x81{M7MqZ\xd3\xd5\x8cff\xbfy\xecW\x8ad\x87cc\x95\xda\x90\xd3\x06\x83,#\x9b\xdf\xa9\x97\x8f\xfeOA\xc6G\x87\xbe\xcc\xb3\x17\xf4\x07r\xc8a\x8f\x8er\xd8\x83\xce\x10C\xdf\xa8\x9f\x03Cj\xe0\x04\x14\x94P\x13\xe5$\xad\n\xf9\xe9,\xed\x01E\x85+r\xb9\xe5\x14\xa6\xbc\xf9y\x0fV=\xb4\xff\xa8\xbaIq\x00Ea\x87z\x85\xbe=\xf2MU\\\x86\x02;W\x93P\n\x8dX\xae$Q\xbbM\"@-al~\x13\x18\xda\xd1\x8a\x1aZ\xd4?.\xa0:\xa5\xee\\g Z\x12\xf8pF\xa9n([y\x9d\x05\"\x14D\xacDB,\n\xfa\xb6\xec \xf1`C\x0fE\xf6\x9c\xd5\x10\x1b\xceW&\xe2@\xedb\x1c$\xa1\xd6\x12\x91%\xc2)'p\x16\xd3h6\xeb \x1cCf\x80>\xe5`\xa7\xff\x08\xee\xf1t\xb58A\x02\xf8\xf1l\xf0\xa7\xdc\x9b\x823\x1e2\xeb\xbb\xac\xb3\x14[\x875\x8b\xc9\xcc'\"r\xd3\x84\x13\xaa\xe2\x11\x1c\xe5\xf1MS-\x1d{?\xf1\x97\xec\xdb\x92\xb5B\x8d\xe5\x1eM1\xee\xb3\xab\x94\x85\x0b\xb7z\x8e\xc8Fs\x0cYq\xb7\xf0\xc6/\x8d\xeeN>?\x02\x90\xc85V\xba\xd6\xf0\x83\xed\xbc\x7f\xcf\x92\x1f\xa3E\xb6\xaa\xc6.\xfd\xe8\xaf\xb2\xa2w\x1f:\x8a\xf5\xcfY\xfa,\n\x97\xc1\xf97\xd7\xefb\x0c\x86\xdb_D\x97\xe1*\xf2\x17T\x0e\x87\"\x1eB>\x80\xdc\xe9h4\x18j;h\xf8\xd4\xae\xf1*\xdb\x16\x18\x15\xbd\xa2\x92;\xe0C]\x86\xfd%K\xe7\x17^\xc5E+\x9f\x93qJmvU\xd51\x92-\xca\x97\xb8\x9fl\xd8\xfc)\xd6L\xccH2\xf7\xe7\x0dJ\xcb\xe1\xa6^?\xbd`\xe8\x07\x17\xe9\xe9F\xe5\x9f:E\x91y\x14\x80\x9aSM\xbe\x8c\xce\x88\xa8.\xed'\xa9\x9ff \x1c\x1d\xc2\xee\x00\xd3[\x04\xfdl\xb3\xf0S\xf62\xf2\x17Ax\xfe\x06\xdf\xbb\xce\x12\x1d\x17i@\x9c\xb3\xb8e\xb5w\xf1\xcaux\xc1<\n\x93h\xc5\xfa\xa8\x14se\xffo\xd9U\xaa\x91'Y\xbc\xe2@\x86\x17\x07R\x89\xcc\xe5[)\xdcQ\x7f\xf1\xd7+\xea\xc1s\xc3~\xca\xae\xca!\xb4\xa1\xaaF\xfb[\x9d\x1f\x1d\xf2\xcfY\xda\x12\xd2R^\xf78t\xcbw\x15L\x80\xc1\x18\xa6l\xf6\xf7\xc2\x12\xa5s\xaf\x08w~\xfa\xf7\x0c^\x84H\x91\xcb\x1b<\xef\x0b&\x10\x83)9\x93\xd4\xc7\x96\x83\x17\x16[F5\x9a;\xdc\x7fT\xea1\x11#\xd9-\xe2!j\x93\x02I\x92\x0b\x06\x07\xbcL\xbe\xf0\xdc\xa0\x07I\xff\xdd\xebo\x9f\xbe}\xfe\xfe\xd9\xab\x93\x17\xc7\xdf\xbd\xe9\xb5\xdc>\x0c\x0e\x8d\x80\xeccp\xd1\x7f\xbc\xf1\\\xd6\xdf\xf8\xd7\xfc\xa8\xeb(\xde3\xf7\xfa\xf6\xd5w\xdf\xbdl\xdb\xab\xbc9U\x07f\xb5/\x02UEt\xa2\x86\x9c\xf0\x97=\xe8\xc4\xc5\xd1\x05\xc2\xf3t\xe6}\xc5\xf7\xf9\xc1\x83\xff\x03\x14J\xe2G\n\xdb\xf4\xee\xa7\x97\x87\xc9\xa5\x7f~\xce\xe2\xed,\xd8\xe6xg\xe1\xaf\xa2\x90m\xa3N$\xed\xff\x96\xf4\xd7\xfe\xe6\xff\x07\x00\x00\xff\xffPK\x07\x08v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00swagger-ui.cssUT\x05\x00\x01\x80Cm8\xec\xfd{s\xdb8\xb27\x8e\xff\xff\xbc\n=\xbb\x95\x9a\x99\x1dS!EQ\x17\xabf\xeb\xc8\xb1\x93q6r\xc6\xcem\x92\xad\xad)\x8a\x84$\xda\xe0\xe5\x90\xd4\xcdz\xf6\xbd\xff\x8aw\\\x1a $;s\xf6\xf7\xad\xb3\xd9dl\xe2\xd3\x8dFw\x03h4\x00\xb2\x9bl\xed\xe5\x12\xc5\xda\xda;\xfc\x9fN\xe7\xe5\xdf\xfeo'\x08c\xdf\xc6\xde#\xea:I\xd2\xd9\x0c\xbbzW\xef\xfc\xbf\xce\xec\xfac\xe7\x9d\xe7\xa0 A\x9d\xff\xd7Yz\xe9j=\xef:\xa1\xff2@N\x88\xed\xe4%M\xf7\xb7\x97\x8b0H\xb5\x85\xed{x\x7f\x9e\xd8A\xa2%(\xf6\x16\x13'\xc4a|\xfeWs\xde7,\xe3\xdfD\xfd\x9dU\xea\xe3\x03\xf6\x02\xa4\xad\x90\xb7\\\xa5\xe7F\xd7\xb0&\x9a\x9fh)\xda\xa5Z\xe2=\"\xcdv\xef\xd7Izn\xe8\xfa\x8b\x89\xb6E\xf3\x07/\x85K)\xce\xf3\xd0\xdd\x1f|;^z\xc1\xb9N\x95\xd8q\xea9\x18\x9dQ\xcf\x12\xcf\xa5\x9f,\xc20E1\xf5h\x85l\x97y\x14\xd8\x1b\xea\xf7\x049\xa9\x17\x06\x07\xd7K\"l\xef\xcf\xe78t\x1e\xe8\x16\x1b\x87\\K\x99\xf0\xe7=\xe4OJ\x19\xbb\x83!\xf2;\xb4\xa4\x0bo\xe9\xd8Q\xc6\xf0\x8cy\xbc\x8eii}\xdb\x93UZPT\xea0\x90\xdf\xe9\xeb\xd1\x8e\x96+>T\xca\x9d\x87\xbbL\xe4\xdd2\x1f:\x16a\xec\xf3\xca\xfbg\xba\x8f\xd0/1JP\xfa\xaf3\xbe Y\xcf}\x8f)\x01*\xcbf\xb5\x92\xa2(\xfdW=\xb6\xdaQ\x84\xec\xd8\x0e\x1ct^\x14\x01\xd5\x974\xe7\xe7\x9a\x1f>j\x8b\xd0Y'\x9a\x17\x04\xcc\xd4C\x8a\xaa\x04-\x85o\xc1\x16\x95\xf3 \xde\xeb&\x91\xed\xba\xd9l\xa0K\xda\xd0\xb0\x89\xbd`)n@+\xae\x92^\x02,E\xa7\x11\x87p\x9df\xbevnD\xbbr\xec\xed\\\xe4\xc0\x8fh\x972\xb3$\xc2n\x82\xd2C\xd5\xb0\xaei!\xbf\xd3\x1d\xe6\xff\x0e\xb8a\x01\xa3%\n\\h\xda\xac\xe7\x14j\xd6$\x9e\x16\x83a5\xacW\xdd>\xb5\xe7\x18M|{\xa7m=7]\x15\x1d\xa5\xd6\xf2d\xbb\xf2R\xa4\xe5\x83\xf4y\x11y1Sl\xb8\x8cQ\x92\x80\x83\x8f\xd2(Xw\xe1\xbaw\xd9\xeb4\x04\xac\xeb\xac\x90\xf30\x0fwP\x1f\x89m\xd7\x0b\xffu\x92Vd\x0e\x15\xac\xfd9\x8a3\xef-\x19\xe7^\xa9%\x91\x17h@\x17\x14\x10\x85\xeb\x94&:\x94C\x90\xa0\xa1 \xb2cg\x05v\xdfLY\xb9\xc7LJ\x0f\xd3\xc2\xc5\"A\xe9\xb9\xd6cB+\x8aU#K\xf1@s2nX\xdc\x06\x11]\x13\\@\xd2q#[C\xbf\xf00\xd2\xd6\x11\x0em\xb7R\x82pt\xcaG\xed\xcaO\xe9X\x00\xa5\xb6\x87\x13:\nE\xc1Z\x12\x85&k\xdf\xb7\xe3}\x8d\xc0^\x92j^\xca\xf4*\xc7\x0e66\xec\xc4\xb4V\x8b \xed_\xcc$\xe4G\xd8N\x115\x93Rd]\x17\xcd\xd7\xcb\xce\xdf\xa8q! \xb1\xe7v\x96!v\x01\xac\x96\xf7;\x90\xe2\xaf\x8b\xc5\x02\xa2\x98c\xdby\x80)\xd8\xf8\xa7\xa4X\xc6\x9eK\x04Ndx\xdbY\xc7\xf8G\xd7N\xeds\xcf\xb7\x97\xe8e\x14,'Y\xf7\x1d\xf4\xcf\xbc\xcf\x17\xef\xef\xb6\xfa?\xde,\xc3\xe9t:\xbd\xf9\xf0iu\xf5i\x99\xfd\x98\xffs\xfdj\xfau:\x9d^^]\x0e\x07\xef\xb2\x07o~\xbf{\xfd\xe5\xd7\xbb\x8f\xf3\xde7\xdd\xed\xbd\xde\x7f\xbb\xbd\xb8\xf8\xf6f\xec}\xfbp\xf1v\xfe\xe5u\xf0\xed\xf3[\xfc\xf5\xcb\x9d\xe58\x18\xff\x96\x11\xecW\xd1\xe7\xd7+\xfd\xcb\x951{\xef\xdfl\xe6\x1f\xacU\x81\xb7\xfa\xf3\xdf\xa7\xc5\xff.\xb7/\xd1\xaf\x17\xab\xaf\xbd\x14\xbb\xaf.\xbco_\xdch~\xaf{\xc3\xe1\xfa\xe5\xb5w\x11}\xbb\xd4\xbd\xcf\x8f\x9fofW\xc6\xf6\xb6\xf79\xb4?\xad\x06\x8e\xff\xf9#z\xb0>}5\xa3\xf8\xeb#~\xb8\xbe\x1f\xfd|}\xb9\xeb\xbf\x0fV\xa9\xf3\xc6\xc0\xee\x9b\xab%zc$\xf3`6@\x97\xba\xf7\xf5\xcb\xdd\xe6\xab\xffi\x90\xfd>\xff\xf2Y\xff\xfaa\xe4]\xff\xba\x1c\xa07\xc6\xd6}\x93\x8c\xaf\x1f^?\xcc{o\xf1\xf5\xeb\xd5\xcd\xa7W\x17\x97s\xf3-\xbe\xbe\xfc\xb4\xbe\xf1\x8c\xfb\xd9\xc7\xab\xdd\xf5\xa5c\xbd\xbb\xbf2\xde_\xce\xf67\x1f\xb6\xcb\xd9\xfdtw\xf3a\xb4}\xffa\xb4\x9b\xbd\xd2\xb7\xb3\x8f\xe1nv\x19\xeeg\xaf\xa6\xcb\xeb\xea\xef}\x7f\xf9\xdb\xafo\x1f\xbe\xddG\x1f\xee\xae\xbe\xd6\xf28\xfe\x9d\xff\xdb\x87\xb7\xa1\xfb\xeb\xdd\xf6\xbd7\xda\xb8\xa6k\xbe\x0b\x9c\xc7w\xfex\xffm?\xda\xbd\xff\xf8`\xbd{\x9c\xee\xdf=^\xef\xdf\xfd\xfe\xf6\xe1\x9bg<\xa2/\x96\xfe\xf5\xf7e:\x0ff\xf7\x04\xdf\xabo\xbf\xdf\xdc;>\xde\xbao\xf0f\xee]\xec\xbf\xbd\xf9:\xf8\xfa\xe5\xed\xc6\xfd\xfdv|\xed]7:xcl?~\xd2\xc7\xd7\xfeJw\x7f\x9d\x0e\xde\xed\xc7kg_\xdb\xe2~\xde\xd37\xe8\xcd\xeb\xed\xbb\xc7\xab\xf5\xec\xd58\x9d\xe7\xfaY\xa5\xf37\xd6\xe3\xfb\xe0F\xff\xe4\x7f\xa6d\x9e\x07\xb3u\xa9\xd3\xf5\xd7\xde8}g\xaeV\xce\xab\xd1\xee\xdd\xfdt\xe3\x18w\x96\xf3\xe6\xd3\xe6\x93\xff\xf9qn~\xde\x7f\xed}\xfe\xf0\xed\xcb\xd7\xfbk\xef\xa2?\xff\xb2[;\x8fQf{EY\n9\x9c+\xe3\xe6\xfd\xc3\xdd\xe6\xab\xf99\xfd\xf6\xc5\xd2?|\xba\x1d_g\xb6~e=\xd8_n\x07\xb3\x8fw\x97\xef?~\xed\xdf\xe8\x9fz7\xfa\xe7\xd7\xb3\x8f\xaf_\xdf\xdc/{\xb3\xc7o\x97\xb7\xf7\x0f\xdb\x9b\x87\xdb\xfe\xec~\xb9\x9d]]\x13\xfc\xf0\xda1\xefVs\xff\x06\x13\xfc\"\x9a\xdf\xad\x1a\xbf\xcb\xe8\xd2\xf1?\xaf\xdc7\xe3\xfd\xe77\xe3\xcd\xfcR\xf7n\x0b\xfd,?\xbdYm\xdc7\xe3G\xfb\xcdx{}usy}y\xbd\x9d}\xfc\xb4\xfc\xc7\x95\xb1\xfa\xda\xc3\xeb\xbc\xec\xd5\x83\xf7\x9b7\x1d\x95v\x1a\xdc\xbd\xf9\xbc\xb7\x7f\xff\x86\xbf]}\xdb\xcf{\xfa\xd21\xef2\x1d\x0e\xec/\xd6\xa3\xfb\xe6\xf5\xfak\xef\xf3\xdb\xbbK\xdd\xcb\xf0\xef|\x1c}\xbb\x0c\xcd\x9b{g\x7f\xfbpk\xde\xdc\x7f5o\x1f?\xedf\x9f>\xf5n\xef\xdf\xbe\xba\xd5?\xedo.\xa7\xfd\xd9\xc7\xe9vv\x7fe\xce>\\\xd7\xfc\xbe\xbd\x19\xdf\xbb_\x0c<\x0f\xee\x08~w4\xbf\xc7V~\x9bL\xf6w&\xe0\x93\x99\xaf\xbe\x1a\xe7~\xf9\xe9\xe1\xeeM\x81+\xfa]\xde\x0f?\xf6\x97\xbf]\x8e\xfb\xce\x9b\xd7\xf7v\xef\xb3~\xfd\xe6\xf3:\xeb\xef\x8ew\xfd\xf2\xb7\xe4\xe2\xc3\xcfof\xd9\x08q\xff\xe1\xd3\xdd\xc5\xe7_\xef\xed\xaf\x9b\xc7\x97/\x1fG\x97\xef\x92\xcb\xfe\xd2y\xf3\xbb\xf7\xf5j\xfa\xe6\xe2\xfa\x1fo.\x02\xf4\xf2\xe5\xe2u\xb4\x9d.\xb7\xd3\x8b\xf1hj\xbf\xeeE\xf7\xf8\xd3mF~\xf1\xf6\xee\x93u\x15?\xbc].\x97\xbf\xfc\xf2S'F\x11\xb2\xd3\x8e\xde\x11\x8e\xa4\x9a1x\xc6\xc1\xf4\"\x1f\xe6n\x8b\xc1t\xba\x18\xbd\x1c\xaf\xfew0\xfd\xdf\xc1\xf4?u0}\x7f\xf9u\x7fw\xbf\xba\xba\xbb\xcc\x06\xd3\xaf\xfb\xd6\xc1\xafe0m\xf8\xdd\xaa\xf1\xfb\x0f\x1aLo?\xb6\x0e~G\x0d\xa6\xb7\xed\x83\xf3\xf7\x19L7\xaf>\xe8\xc6u6\x18\xcd\xea\xc1\xd4\xbf\xeb\xbf\xb4~\xbex\xfd\xdb\xc5b:{\xed\xbf\x9c],w\xa3\xbb\xe9\x9b/\xaf\x02c:\xf5?,\xcd\xfe\xed\xe0\xe1\xe2\xf2\x1f\xb37\xb3\xcbW\xdb\xebWhv\x8d\xfc\xd7/\xad[{{\xe5E\xd3/\xdbO\xab\xed\xd5\xfd\xecr3\x9f~\xc1_\x1e6\x9f/\xb6\xeb\xd1\xe6\xf6zz1\xbd\xda^\xbc\x8aV\xa3O\x03G\xcf\xc7\xa5+\xfc\xfa\xe3\xc3\x87\xf5\xad\xff\xea\x95\xd2\x00<\xd2\xf2x\x97\x1c\x85\xb3`\x99\x1d~\xef#T\x8f\xbf/\xc7\xf7/\xfb\xb7\xd3\xafw\xbf\xaf\xa2o\xcb\xe9\xf4\xc3\xa7\x87\xff.\x03\xd9\xe6\x7f\xbf\xbdL\xa6\x17\xaf\xaf\xdc/71\xba\xcdF\xe6\xdbj\xe0|\xd9\xbf\x9d\xed\xec_\xeft\xe72\xdc\xbc\xebY\x8f\xef\xfcb\x1c{\x97\x8f\xb5\xe3\xfe\xd7\xdf\xa7\x9b\xd9\x87\xfe\xf6\xddv:\xfa\xcd\\m\xbf~\xb9\x89\xbf\xfd~\xbb\xfc\xea\x7f\x0e\xec/\xfd\xf1\xf5\xfa\xe7\xe1f\x7f\xbd\xb4\xbf\xdc\x8e\xaf\xb1c|\xfcxq\xe3\\\xdd`\xfb\x0d\xbeF\xc1[\xfc\xc9\x8c\xde\x7f~s3\xb0{3\xeb\xdb\xab\xeb\x97\xb9\x8f^f\xfd\xf7\"\xfd\xf6\xfb\xdd\xaa\x19#\x96\xe3\xeb\xb2\xee\xf7\xbe\xf5\xf8\xde\xcf\xc7\xe0M\xd6\xe7\xf31\xf9\xd7\xbb\xf8\xb7\x0fo\xab\xb9\xe2\xeb\xc7\xcf\xd3\xe5mo\xbc\xff\xf6aj\xbc\xbb\xff\x9a~}\xbc\xda\xcd>L\xcd\xf7\x1f\xfa\xbb\x9b\x8f\xcb\xc7\xd9\xfd\xa7\xa4\xec'\x9b\xd9\xe5\xc3f\xf6q\x9a\xce.\xaf\x06\xb3\x8f\xd3\xc1\xec\x9e\x18c_]g\xe3~\xed_\x8d<\x99/\xea^\xad\x1b\xd35\xdd\xbde\xce\xf6\xd6\xc6\xf1\x9d\xcd\xec\xe3\x83\xf5\xfe\xc3h;\xf3F\xfb\x99gd\xf4\xa9cf}\xf1u\xff\xdd\x17\xeb\xf1z\xdf\xf0\xbd{\xf3\xf9\xf1\xab\xf96r~\xbd\x8b\xe6\xbd\xfe2\x1b\xbf\xdf\xfb\xaf\xbd\xb9\xf9Y\xff\xed\xc351Nf\xe3\x00Q\xa7\xcc\x1e\xfb\xff\xc0\xb1\xf9\xf7\xe9\xe0\xd6|\x8b\xbf\xfe~\xb7q\xf0\xddf\xde\xdb\x12\xf3\xe2E87\xef6No\xb5q^]\\\xde\xee\xa7\xfb\xd9\xe5\x95q\xfdju\xf3\xf5\xcbM4\x0f\xb2\xb2eT\xf0\xb9\xb8\xf9\xf81z;\x0fn\xf4\xaf_\xac\xfbo\x9f\xf0\xd5o\x1f\xdef\xfc\xd7\xf6\x17\xfc\xf0\xfe\xe1z7\xbb\xbf\xd6\xdf\x7ft\x1eo\xee\xddW\xb3\xc7\xab\xdd\xdd\xc7o\xaff\x0fo/\xef>^\xeb\xb3\xcb\xe5nv9\xdd\xcf>:;\x82\xdf\xd5\xbcwc\xcc\xbf|^\xbbW\x0d\xbfoo(~z+\xbf|\xee\xac\xe7\x13\xec\xf8\xb8\xf7\xed\xcb\xdd\x1b\xc7\x1f\xa7\xd7\xbf\x16\xba|\xef\x8b\xe7\x85\xdb\xfb\xab\xfd\xec\xfe\xd6\xbay\xbc\xea\xdd\xe8\xd7\x8f\xf9\xbc\xf0p\xbd\xbf}\xb8y=\xbb\xbf\xdd\xbe\xbf\xbc\xda\xce.\xafw7\x8fW^\xc3O\xde\xfa7\x97\xa3\xf0\x1f\x97\xe3_\x7f{\xfc\xf4\xb2\x8d\xa6\xfd\xef\xe2\xe5v:\xbd{5\x9d^O\xa7\xcb\xcb\xe9\x87\xeb\xe9tuu1\xdd]]\xbc\x1c\xddN\xbfd\xe3\xe6\xed\x14\xf8\xdf\xd7\x8b\xe9\xed\x15\xf0\xfc\xfa\xeajzu1\x9d\xce.\x98\x82\x8b\xe9\xe5\xd5\xab\xa9~u7\x9d^]^\xf0<\xef\xae?\xbe\xbe\xf8\xf4\xe5\xea\xc3\xf5\xe6\xa5=\x9dn/\xa7\xb7\xd3WW\xb7\xb3\xbb\xe9\xe5h\x1a\xbe\x0f>~6n?^\x0e\xdf\xbeMV\xbf\x99\x9b\x0f3\xf3\xb7\x97/\xbf)\xcd/\xc6@m\x829*\xbe\xcf\xe6\xd7W\xb7\x0f_\x96\xbd\xe9\xff\xc6\xf7\xff\x7f\x1d\xdf\xab\xce\x01t\x1c\x9e\x8d\xad\x8asV\xcfH\xc9y\xab\x8c!U\xe7\xad\xc7\xcf\xbf\xe2\xed\xb7\x0f\xe3\x0f\xdf~\xbf\xd9\xb8\xbf\xbf\xbd\xcf|\xe9\x9b7{\xb6\xf8Y%\xae\xbfy\xfcj\xce\x1e\xde^\x15I\x97\x99!\x1f\xbf\xdb\xd7\x1d\x0d\xbf\xaf\xad\xfc\x9e-\xbeoOn\x1c\x15\xdf\xdf]\xb6\xf2\xfbN\xf1=\x1a\xbc5\x1f\xb2\x11\xe2\x91M\x96\xe8\x9f.\x93\xd9vv\xff\xe1.\xfc\xfa\x9b\xf5\xe6\xbf\xfb\x1f~\xbb\x99\xdf\xdd\x7f\x9e]\xdd\x1a\x8bWw\x97\xcb\x9f\xbd\xe0\xe5\xe0\xe7\xb7\xc6\xf4\xed\xa7]\xb2\x9c^\xbd\x99NM\xe3b\xfav\xf6A\x7f\xf3\xb5\x18\xcf?|\xfa\xfc\xfe\xee\x1f\xd6\xab\xaf\xd7\xd7\x92\x04J\xb3\x15C\x1f\x8e\xa1\x7f\x03\x8e\xcf\xccCwO=\xe0N\"\xb8\xf4A\x04\xd7\xa3\xcf\xcd\xb8\x98\xfe\x95\xdeZ\xae6\xe6\xe8\x87\xfc\x01\x9dE\x18\xfb\xf4F\xacA\xff\xda\xa3\x7f5\xe9_\xfb\xf4\xaf\x16\xfd\xeb\x80\xfe\x95?\x0b\xb4J}\xba\x15\xf9Nu\xb1\x89\x83|\xdb\xc3\xff\x12\x95\x96\xdbT\xa2\xe2\xc8N\x92m\x18\xbbB@\x8a\xc4\xbcS\xb4K\x85\x85\xeb\x98!,\xb64\xe9G\x1e\xbd\xc7c{\xf4.UH7\x9a>'\x101\xe7\x94\xca\xf3Q\xd4\xb3|\xd7\x93~BKPmK\xd2\x0fW\xf4\xaf\xb4-\xd6\xf8\x94\x0dH\xba7\xd8I\x84\x9cT\xcb\xf7\xd8\x0e\xe2\xf3%b\"M3\x06\xbbq\xb5\x9b\\\x9d0\xb2\x06\xdd\x9e\xf5BF5\xde\x19\x03\x96\xca\x18\x0e\xbb\xc3\xa1\x94\xac\xbf3Y\xaa\xa1\xbc\"s\xd7\xe7\xea1\xcd\xaeiJ\xa9\x06<\xd5`\xd0\x1d\xb4\xc8\xc6\xb7\xc8\xd2\xa5$\xa3\x9d\xc5U\xd3\xeb\xca\x1bd\xedF\\5\x03y5C\xbe\x9a\xa1\xd1\xed\xf7Z\xea\x19r\xf5\xf4\xe5\xf5\x18;\x83#a\xcf,2$\xc5\xc9\xb5C\xedq\xf6< \xf1:E\x934\x8c\xce\xf5I\\zd\xc9M\x9f`\xb4\xc8~'\xce\x0eT\xe7k\xb2\x9f\x1f5/p\xd1.\xfb\xe5\xdf\xff\xe5#\xd7\xb3;\x89\x13#\x14t\xec\xc0\xed\xfc\xe8{Ay\xea\xc0\xd4\x91\xff\xd3A,W\x90<\xa17d\xd4'u\x08\x80P\xadO\x00\x84\xed\xdd\x02\xaaM\xa9g\x00\x84*\x9d\x03\xaa\xaf\xbd\x7f@\x95)t\x11\xa8\xb2\xf6^\x02\xe9Q\xa5\xa3@\xb5\xb5\xf7\x15\x88J\xa9\xbb\xe4\x84\xcf\xdfc\x14\xbaL\xf9\xb0>\xbd3h\xe9G\xfeS\xba\x91\x7fb/\xe2\xe8\x14;\x11G\xa7\xd0\x87\xf8\xba\xd4\xba\x10G\xa7\xd4\x83\xf8\xda\x14:\x10_\x95J\xff\xe1\xabR\xe8>\xbc\x06\x95z\x0f_\x97B\xe7\xe1\x89\xd4\xfa\x8e\xff\xe7w\x9d\xb6^\x82\x9f\xd2K\xf0\x89\xbd\x84\xa3S\xec%\x1c\x9dB/\xe1\xebR\xeb%\x1c\x9dR/\xe1kS\xe8%|U*\xbd\x84\xafJ\xa1\x97\xf0\x1aT\xea%|]\n\xbd\x84'R\xeb%\xf8\xbb\xf4\x12\xb2^\xcf_\x1e\xe8c\xa0\xb4XN\xb8A1y\xce>?W\x9d?\xfd\xbf\x9e\x1f\x85qj\x07)K\x12\xa4\xb6\x17\x00D\xf9s\x82\xac}\xa6;\xf0\xc2d\xd3\xee)\xf2\xc0t\xacH\n2)\xcc\xbe\x85\xa0\xfeirBd\xc7\x89)\x94\x08\x9f&\x11D\xc6IDQ\xce\x97\x9a\x83\x82\x94v\x9d\"\x19t\x1e\x84\xe5O\x13\xa2\xac\xf6sn\x90\x98/\xb54\x8c\x8e\xe6\x93\x86\x11\xc7'\xef4Gs\xe2;\xc5\xbc\xea\xc7G\xf3*\xc88nY\xe7=\x9a\xd7\xf1\x8b\xab\xda*L_P\xaaN`\x98SX ms\n3\x89yNa'\xb1\xd0)\xec\xda\x82\x12\xd5\x11\xa51\xdd\xf1N'\xb2\xdc\xf1\x9c\xc4\x86;\x9e\x97\xccn\xc7s\x93\x99\xedxnmV\x93\x1a\x08\x1f]\x9d\xc8@\xc7s\x12\x1b\xe8x^2\x03\x1d\xcfMf\xa0\xe3\xb91QL\xb7<\xfe\xce\x1f\x83\x07a\x1aqL\x1389O\x94\xc2\xe4zMt\xfc\x18\\\xf1\x08\x92\x13\x84\x05\xa9\x14\xe4%\xe9\xda|[uD\xaa\x98\xfb\xa7\xb4\x03 Ri\x86\xaf\xdc\n\x89\xc0\xf8\x14\x81\x01\"\x15\x811)0\xed\xfb6}\xcf-g9)\x1f\x95\xd18s\xbb\xa7;O+\x9alt\x00\xe8\xb2\xc7\"\xda\xfa^]1\x1e\x00\xd4E\x81\x88~N\xdf_\x86\x18\x94%\"\x0e\xb8\xe2\x90wz\x80>\x7f.\xa2\x0e\x80{\x81\x94\xba\x8e\xef\x8bs;\x9f\xd2\x8f7\x03Av\x8a%\x08\xf2S\x8dA\xb08\xdd\x1e\x04\x93\xd3L\xc2\xa9\x0f\xb2\x8a\x82Y\x14\x86\x9b\xb9\x9d\xcd\xe3'\x98\xca\x7f\x92\xa5\xfc'\x1b\xca\x7f\x06;\xf9O4\x93\xffT+\xc1\x06\xc1'\x19\x04?\xc9 \xf8\xc9\x06\xc1\xcf`\x90'\x0ee\xac\xe6@\x83\xd04Zq\xd5\xaf\xa2\x13\xbc\xe3 \xc3\x05\xc8\x8eA\xb0a\x18\x1c\xd8\xb5\xe3\x07m\x19\xdb{\x06k\x9a&\x87\xf5=\x17\x82Z\x96\xc5A\x01\xd8p8\xe4`\x89\x877\xcd\x85\xef\x128\x1e\x8f9 .\x8c\x0d\xc1m\xdb\xe6%\x0d\xc3\x00\x92\xc1q\x1c\x01k\x00\x8c\x10\x82u\x9b\xdf\xd2d\xc0\x8b~\xf6\x87\xc3\x83P\xf6&g\x85\xd3\xc6:\x0d]%\xd8\xfeQ?\xd3_\x9ce\xb1\xf8Yw\xfc\x93\x80p\xd4B8\x12\x11\x0e[\x08\x87\"\xc2A\x0b\xe1@Dh\xb5\x10Z\"\xc2~\x0ba_Dh\xb6\x10\x9a\"\xc2^\x0baODh\xb4\x10\x1a\"B\xdd\x92\x13\xeaB\xed\xe8\xbd6\xd2\x9e\x98\xd6h%6 \xea|\x8c\xe1\x9c6^\xces\xda3\x1dt\xd8\x82\x88uX\x92\x08p\xd6\x82\x88uV\x92\x08p\xd4\x82\x88uT\x92\x08p\xd2\x82\x88uR\x92H\xa8\x08\xd6AI\"\xc09\x0b\"\xd69I\"\xc01\x0b\"\xd61I\"\xc0)\x0b\"\xd6)I\"\xc0!\x0b\"\xd6!I\"\xc8\x19K*\xd6\x9f(2\xb1+\xf1\x8eH\x11\x82N\x98O`1r\xd9\xc1{\xa8\xf7u~\x9c\xe5\x81\x8bE\xdf0\x07\x82Y\x01\x82\x0f{\x16?\x89\x84\xb1\x1d,\xf9\x81~`\x02\xf3\xf32\xc4<\xd7\xf9\x10@\xee\x11\xc6\xe1\x96\xc6\xf2\xaf\x0e\xa8\xa5\x85\xe0\x7f]\xcc\x17\x86\xcdO\xa8\xd1:\x8e0+\xb0\x85z\x8e\xcdO\xe6\x05w\x90\xc2\xee\x0f\xccE\x0f6J\xe4\x05l\x04\xe2Z\xba>\xe2\xad\xb2\nS\x08\x9d\x99f\xce\xcf\xa9 r\xa4\x0b\xa7v\x10o\x9b.\x1f\x8e\x94\xc1\x10B\x01\x837\xcc\xe1\xd0\xe2\x9b B\xc7\xf6x\xc8\x0b]E\x19<\xc1\x18\xa1\xb9\xc3\xeb$\xb07l@\xa2\xeb\xc6\xbc\xcf\xb3\xce\xa5\x9e\xe35k\x1b]\xef\xf7\xc7|\x08\x03 Mk\x88\\\x91W\x01\xf8\xf1\xc0q\x80 &\xc7\xa3\x04$q\\\x04\x91l\xedd\x85\\\x88`1X,\x16\xbc\xf4%\x01\xa4H4Z\xb8\x0b\xde{K\n\xb8s,\x16\x0e\x9a\x8bH\xa0\xde\xef.\\\xbe\x15d:\x91\"\x10f\x88\xe6\x9aV\xbe\xea\x84&\x80\xde\x7f\xd2\x9d\xc7\xf5\xd0\x1d\xdb\xae\xb7N\xce\xd9\xa1\"6\x18@\xd7\xe8Y1b\xd3\xadq\x8f\x85\x81(\x93EA\xa0>\x032\x00\x8cf\xe8\xac\xe4@R9\xd6\"\x0fc\x067\x1e\x8f\xc7\xc0\xea\xaf\xdew+\xc0y\x92<[iUz!\xd7\x90\xc5:P\xa41\xad\xd8U,\xe0UV\x1bbU\x96\xb5q+\xf7\x16[\xe4\x82*\xe2y\x15\xdb\x81\xa2\x96\xc8\x05kO\xb6\x1cX\xe7\"\xd3Q\"\xff\xe21\"\x17\x03\x90\xb0\x97\x01@\xd0\xd1x\x9c\xc8\xd7\x00\xa4\xc8\xddx\xa8\xdc\xe3\x98\x8c\xdfS\x9c\x8eO\xdd=\xd9\xefT\xa4Sw=\x86\xdb1\xde\xa7\xe0~*\xb9\xbeX'\x12oB\x97d!B\x8f\xe4\x80\x02\x87\xe4p\xb0?\xb20\xa1;r@\xa17\xb2\xc8\x16g|\xb6\x01\x90\xcbN>\xdd\x15\xdbe;\xc2\x13\xfd\xef\xe3\x88\x02\x9fc'!\xc0\xe7X\x88\xd0\xe78\xa0\xc0\xe78\x1c\xecs,L\xe8s\x1cP\xe8s\xc7M\xb9,\xbc6oc \xa2\xa0<\x9e\x06\xfb\x1c\x9b\x80}\xba\xcf\xe1\xe7\xf49|\xb2\xcf\xd1\xfc4\xadx d\xc5\xaeH\xf5\x02/\xe5-\x82\xf8,\xe4d\xa0\xf93\x0eZ\xdeF&\x91\xc0&f\xb6\x84\x08\x03D\xe3\xf2w\xd4\xb5\x0f\xd1\x07\xb8!\xdcn\x8f\xb4-\xd8\x92a\xb5\xc8(\x1cDd\x17\x1e\x08\x9b\x86\xc7\x81\xd6\xe1`\xa0\x818\x14l#&\xee\x15\x9a\x89\xdb\xbe\x17Z\x8a\x0f\xf5\x85\xc6b\xf7\xe2\xebm\xc0v\x83\xa9\x0cl[\"\x1a\x15\x1a\xd1W\xb4!\x8b\x13\x98\x90\x85\xc1\x16\xf4U\x0c\xe8+\xd9\xcfW3\x9f\xafj=68\x16\x1b\xcf?\xc1v\x023\xe1V3aE3\xb18\x81\x99X\x18l&\xacb&\xacd&\xacf&\xacj&6\x9e\x14\x9b \xc3f\xa2\x80\xc9\xcav\xc3\xadf\xd0\xd7\xba\xf3\x87\xe7zG\xef\xf4\xa3]\xa7\x17\xed:\xf4\xa6\xcbD \x05\xd6\xd4\x13\xd54R\xaa F\x815\x99PM\xbd\x92\xbe\xbd]r$Xc_Vc&\xb9\xaeP\x1f\x84\x03k\xb3\xa0\xda\xfa\xa5\xc4m\xb5\xc9p\n\x83\xf0\x01t\xa2lT\xff\xd3\xfcHR\xd9\xf3\xbb\x92\xa0\xb2\xef\xebM-\x95\xb6\x99\xf8x\x87\x12T\xf8,>\xa5\xe0T\n3{\xedi\xfe\x9f\xe8h\xc2\xba\xbe\x83\x9f\x81u}g7\x93\xd6\xd9f\xf4\x13\xbc\x0c\xac\xefOp2\x99?\xe1?\xd1\x9f\x84u}\x07\x7f\x02\xeb\xfa\xce\xfe$\xad\xb3\xcd\xbe'\xf8\x13X\xdf\xf3\xf8\x13Ua\x14\xa3\xfa\x0b\x1e\xda.\xff\xb4E\xfdq.m_~\x08\xa8\xf9\\W\xe2\xc4!\xa6?%\xd2\xcdb@=\xff\xe6\x11\x13\xb0\x15Q\x9f~\x80S\x89E\xa4\xa7W\x9fRb\x8a\xf3\xf0N?\x14\xe9I\xbe>#\xaf\x8f\x0fa\x8b*\x8d\xb2J \xc4-j5\xaaZyD^\xb1QT\xcc\x97fu\xf7\xf2\xba\xf9\xc8\xb8\xa8\xbbW\xd6\x0dD\xceE\xdd\xbd\xaan\x1e\x91\xd7\xdd+\xea\xe6K\xb3\xba\xcb\x86k\xa2\x96\xd7M\x07\x10e\xfdM\xe3\x01L.A\xd5|\xa0<\x97\xa1P\x80&\xd2@\xad\x02\x00Q\xc9P+\x01\xc0\x142\x94j\x00\xca\xab{\xd4\x9a\xb6\xf00>HoS+\xcc\xd0\x07\xde\x99\xb3\x98\x01\xf0\xe7\xc2'\xb3B\xc8-Ko\xcf\x8a\xa5\x0e_\xa4 \x9f\xcf\x1d\xbb\xaa[\xe4\x99u\xf5B\xe7o$\x10\xfb?!\x84\xc0\xc9+9D^Z\xcb!\xec\x08\x8d\x1c\xe2\xbe@\xc8!r\xf8J\x10\x89\xcf75\xc9\xdc\x9e\xa8K\xec\xf9u\xb3\x84\xce_\xcb#\xf6\x7fB\x1eI\x17 \xe5\x11\xf6\x82F\x9e\xb6\x8eP;\xad\xb0/(t\x06\x85p\xb5\xe8!\xbe\xa4\x83\xf8\xd2\xfe\xe1\xb7t\x0f_\xda;|y\xe7\xf0\xdb\xfa\x86\xdf\xde5\xfc\xb6\x9e\xe1\xcb;\x86\xdf\xd6/\xfc\xf6n\xe1\xb7\xf6\n\xbf\xb5S\xf8*}\xc2W\xe8\x12~[\x8f\xf0[;\x84\xaf\xd2\x1f|\x85\xee\xe0\xab\xf6\x06\xffI\x9dA\xe8\xf7X\xe2\xf7X\xea\xf7\xb8\xc5\xef\xb1\xd4\xef\xb1\xdc\xefq\x9b\xdf\xe3v\xbf\xc7m~\x8f\xe5~\x8f\xdb\xfc\x1e\xb7\xfb=n\xf5{\xdc\xea\xf7X\xc5\xef\xb1\x82\xdf\xe36\xbf\xc7\xad~\x8fU\xfc\x1e+\xf8=V\xf5\xfb\xb6\x80\x88&v\x16\xe7\xf6\x82}5j\xf6t\x8e\x16a\x8c\x0e\xe5\xc7{\xcf\xff\xd2\xf9\x0b\xfd\xe5A\x98\xcd\xc1\xc1\xc8\x8e\xcf\xe7a\xbab\x01\x87\xbf=\x86\x99o1\xcfqI\x92I\xc7\x14U\xdc\xf2\x960esqMAYt\xd2N\xb9\x93O\xa3b\x91\x9aRP\xaa\xa6\x18\x12\xac)U\xd8 V\x9d\x8e\x9dl\xa8\x93\x08\xecK\xe5\xf5e\xe2\xfa\xea\xd2\xc2\x82\xc9\x8c[\x17\xc2\x82a\x99`\x98\x12\x8c*u\x03\xd9\xe7\xfc<\xe6S\x81L\xf1\\\xf2A\xc2\xae\xeb\xcd\xdb?4\xd8u\xbd\x94E\x01\xfd\xc5m@`\xa9C\x17k\x0eb\x17\xddn\xaa\xc5\xe1\x96\x81\xc5\xe1\x16Bi\xcb8\\G<\xb6x\xceQ8!^\xfb\x01+A\xfeP\x80\x05+ \x8b8:m\xe1\xed\x90{(\x90\xd8\xde\x87\xeb\xf4<\x7fD\xbc\xfeJ\xa1\x7f\x1c\x18\xdbg=Lf~\xb2\x1c\xf6\x00\x12\x01;\x01\xcfC\xe0\x07\x00\x1046\x89\x83\xbd\x81C\x08\x1d\x82GJ}\x02\x84K\xdd\x02\x10\xa5\xdd3DDR\xe7\xc8\xd73R\xffPp\x10\x85\x01\xd4\xcd\x06:\xa9\xd3\xf8m>\xe3\xb7\xb9\x0c\xcbA\xe41\x1c\x0ev\x18\xbf\xcd_|Uwa\x81ro\x01\xd0rg\xe1\xe4P\xf0\x15\x98F\xee*\xfe\x93<\x05v\n,w\n\xdc\xe6\x14\xb8\xcd)X\x0e\"\xa7\xe0p\xb0S\xe06\xa7\xc0\xaaN\xc1\x02\xe5N\x01\xa0\xe5N\xc1\xc9\xa1\xe0\x140\x8d\xdc)p\x9bSPt\x0b\x8cvu%D\xee\xbd\x0e{5?\xd12\x10\xf9,\xfb\x9dfS\x9a\x08\xe4V\x99\x99aJ\x90\x90E\xc4c^R\xcd^\xa7!\xb5E\x90==7&\x95\x94\xe7F\xc7\xe8\xe4\xd9|\xfa\xb7\xc6\xeb\xf5\xfc\xe7\xea\x85\xa9@\x15\xf9\xe1S\xae\n\xbd\xa9\"\x7f\xe7A\xfd\x13\xc0\xa1\x8c$H\x1ea\xece\xeb\x89\xea\x0b\xe3\x13\xb2\xcc\xf5\xe2\xe2\x95\xff\xe5\x17\xcb\xeb\x9a\x88\x92\x82\xe5\x04|\nH\x90\xc5H@\xf5\xab0\xf6\x1e\xc3 =A\x808\xdc\xb2\xb5s\xfd#/\xdf\xc6vt\xa8\x19d\xbf\x9dg\xffL\xe8_A\xbd\x03\xa4\xc5\xc3 \xfb@P\xaf\x16\xa3\x0d\x8a\x13\x04\xd4_\x15M\xe0\xc7B+6,\x8f\xb6fU\xa3\xd0\x9c\xb4L\xa2R\xd8\xbc2\xb9Z\xcd,\x91\x8c`\x0d\xd8\x1b\x96\xc9K\x91\x9fhIj\xc7)%N\xf1\x19\xfd\xfcyS\x15\xf90\xff9\xff\xbcy\x92\x8f)\x05\x0f\x889\n\\\x805\n\\\x96q\xf6\x88c\x8b\x02\x17bZ\xbe\xe8\x93\xe7[\x14\xb0\xac\xcb\xa7$\xf7\xe2\x11\xc4{n'(\x1b\xc8\x00\xeeU\x11\xcb\xbf~N\xd6P=\x845\x1e\xa3\xd4Y\x81:\xcfKx\xad\x17\x8f\xc9\n\xcag4\xff\x04\xe1Ee\xd0\x8aE\x06\x07\xac\x97A\x85\xc6\xcb\xf9\xe4\xb6\x03\xb84\xa6jxp\x96\xca9T\x86\x02\x98PF\xc9\xf9@6\xc9\xb94&\x01\xf80\xca\xcf9\xc1\xba/uS\xaa\x1e\xd4\x0e\xa9\xe5\x9c\x13\xa8\xe4\xfbu\x92z\x8b=\xd0q\"\xdby`\xfb\x0d\xf1\xac\"\xac\xb2T\"\xedW8\xb6\xf3\xe4\xac\xa8\xbeS?\x01YsF\xa9Q|\x07\xca9\xb1\xfd\x87|\xc8\xd6\x00\x99\xab\xc2\xccQ\xbaE(\xe0+(\x01L\x0d\xd5S\xb6\x8a$\xb2\x1dT1\x83k\xb2\xf3\xd74\x1eh~\xae\x97\xa4\xb17_\xa7H\xc0\xb2\xa0\xa29\x96\x08\xb6\xf7\xe4A\x0da\xc3\xc29\xda,X1\xa3\xbaP\xc3\xaa\xe9Ar{Ul\xd8~\xd4p\xa2\xba\x91\xcc4\x15\xab\xda4<\xaf\xca\x0c43\x89\x11*\x9e\xac\x11\x1a\x96\x84% \xaer;0=\x95\xb4\x04\xd9Qk\x96P_-\x0e\xdf\xea\xccl\xebz\x81\x8d\x8bh\x9c\x88A\xb5\x1c|\xaeO\xca\xffB\x9c\x0c \xa7\x1e\xcb\xc9(9\x19\x10\xa7\x9e\x84\x93\xc9r\xea\x95\x9cz\x10'S\xc2\xa9\xcfr2KN&\xc4\xa9/\xe1d\xb1\x9c\xfa%\xa7>\xc4\xc9\x92p\x1a\xb0\x9c\xac\x92\x93\x05q\x1aH8\x0dYN\x83\x92\xd3\x00\xe24\x94p\x1a\xb1\x9c\x86%\xa7!\xc4i$\xe14f9\x8dJN#\x88\x13\xb6\x93T\xe6\x9cz\xf6?\x96\xe38\xfb\xdf\x84\xf8\x19\x085\x97Y\xd4\xa7\xcb\xd6C\xe5\xbbm7\xe8\\\x9f\xd4$\xe0\xca*\xe7e\xc8\x96o\x0d/\x83\xe0e\x00\xbc\x92U\xec\x05\x0f\x99d\x15i\x80\x966)F\x81\x00\x05)\x89\x0d\x80\xd8\xa0\x88\x0d\x85\\\xdb\x81\xe7O\xe4\xfd\x88\xc6\x9e\xbe\xa4\x86\x18>\xf7\xaaZc\x0e\x0c/\xbe\xcb\xc2\x1a\xac\xe5\xf8\xb55\xcbFmA\xf6\x9c\xcbk\x81\x04\xadK\xafgZa\xe7\xd5W<\x8e^d\xf3\xd4\xa7\xad\xb3a)\x9e\xba\xd4>\xcd\xb8\x7f\xcaj\xfbT\xab\x7f\xbf\x057+\xd1\xf3\xae\xb9a\xee\xcf\xb2\xec\x86Y?\xe3\xca\x1b\xae\xe0\xb9\x17\xdf\"\xfd?\xd7\xfa\x9b\xeabOY\x82\x8b\x18\x1d\xbb\n\x17\xf19a!.bu\xdaZ\\\xac\xa9\x13\x96\xe3\xacY\x9f\x7fE\x0e\xd6\xf0|\x8br\x90\xfd3\xaf\xcb\xc1:\xbe\xd3\xd2\x9c\xb2\xee3\xad\xce)\x9eO^\xa0\x0b\xb8\x9d\xb6F\x170;u\x99.`\xf7\xc4\x95\xba\x80\xeb\xd3\x17\xebB\xc3\x1c\xbb^\xe7\xe7\xeb',\xd9\xe5\xcc\x8e\\\xb5\xcb\x99\x1d\xb9p\x973;r\xed.gv\xe4\xf2]\xce\xec\xc8\x15\xbc\x9c\xd9\x91\x8bx9\xb3#\xd7\xf1rf\xc7/\xe5[\xfc\xf6\x89\xaby\x96\xfb\xe2i\x0bz\x90\xddS\xd6\xf4T\xf7?aY\x0f\xd3\xb3+{\x85\xa5\xbd\xc21\x9a\x9c\xa7\xff\xcc\xcb}\x9e\xdf\xb3\xaf\xf6\xfd?c\xb1\x0fTr\xc2Z\xdf?a5\xf8\xacK}P\x80\xd65\xdfs\xad\xf4\xfd\xa7,\xf4Y\xe2\x13\xd7\xf9\x90\x0cO^\xe6\x9fb\xd7?g\x95\x7f\x9a\xc1\xbf\xe3\"\xdf\xff\x9ek|\x88\xf9\xf3,\xf1!\xce\xcf\xb9\xc2\x87\xf8?\xfb\x02\x1f\xd6\xfd\xb3\xad\xef\xfdgZ\xde\xc3|\x8e^\xdd\xc3lNY\xdc\xc3\x9cN\\\xdb\x8b\xb4t\xca\xd2\xde\xff\xde+{\xa0\x82g\\\xd8\x03\xdc\x9f{]\x0fT\xf1\xbd\x96\xf5\xfe\xf3\xaf\xea\xfd\xe7\\\xd4\x83\xccN\\\xd3\x83\xbcN^\xd2\x83\xdc\x9e\xba\xa2\x07\x99>\xc3\x82^`\x93\xa3\xd7\xf3\xec\xcc\xfc\x94\xe5\xbc\x8c\xd7\xb1\xaby\x19\xafc\x17\xf32^\xc7\xae\xe5e\xbc\x8e]\xca\xcbx\x1d\xbb\x92\x97\xf1:v!/\xe3u\xec:^\xc6\xeb\x84e\xbc\xd4]\x9f\xba\x8a\x97\xae\xae\x8e^\xc4K\x17\x84'\xac\xe1\xfd\xa7-\xe1!\xf2\xe3V\xf0\xa2\xc5:~\xe6\xc5:\xcf\xef\xd9\x17\xeb\xf8\xcfX\xac\x03\x95\x9c\xb0X\xc7',\xea\x9eu\xb1\x0e\n\xd0\xbav{\xae\xc5:~\xcab\x9d%>q\xb1\x0e\xc9\xf0\xe4\xc5\xfa)v\xfds\x16\xeb\xa7\x19\xfc;.\xd6\xf1\xf7\\\xacC\xcc\x9fg\xb1\x0eq~\xce\xc5:\xc4\xff\xd9\x17\xeb\xb0\xee\x9fm\xb1\x8e\x9fi\xb1\x0e\xf39z\xb1\x0e\xb39e\xb1\x0es:q\xb1.\xd2\xd2)\x8bu\xfc\xbd\x17\xeb@\x05\xcf\xb8X\x07\xb8?\xf7b\x1d\xa8\xe2{-\xd6\xf1\xf3/\xd6\xf1s.\xd6Af'.\xd6A^'/\xd6AnO]\xac\x83L\x9fa\xb1.\xb0\xc9\xd1\x8buvf~\xcab]\xc6\xeb\xd8\xc5\xba\x8c\xd7\xb1\x8bu\x19\xafc\x17\xeb2^\xc7.\xd6e\xbc\x8e]\xac\xcbx\x1d\xbbX\x97\xf1:v\xb1.\xe3u\xc2b]\xea\xaeO]\xacKWWG/\xd6\xa5\x0b\xc2\x13\x16\xeb\xf8i\x8bu\x88\x9c[\xac3\xf4\x87\x05\x0e\xed4\x7fG\xce\xe4\x0fz-\xcc@\xe3\x12\x9a\xbf1\xa7\x05\x1b\x94\xd8\x93\xde\x82\xb4\xc8\xdf\x82\xa4.W\x83V\x12\xad\x81+\xbcYH\xfd\xfc\x81\xe6\x1f#\xb2\x7f\x94\xc4\xbe\xba\xc0\xb0l\xc7\x98\xb9\x06\xab\xc9\x86)\xd9\xa8\xd2\xc4\x0e\x12-A\xb1\xb78,\xc2 \xd5\x16\xb6\xef\xe1\xfd\xb9fG\x11FZ\xb2OR\xe4\x9f]`/x\x98\xd9\xce\x87\xfc\xd7\xd7a\x90\x9e\xd9\x1b\x14xq'@\xbb\xea\xe7\xb3\x15\xc2\x1b\x94-r\x9b\x9f:\x01Z\xa3\xb3\xf5|\x1d\xa4\xeb\xb38\x9c\x87ix\x16d\xff$h\x19\xa2\xce\xda;\xb3c\xcf\xc6g\x8d\x14\x8ct\x9c`K\x14\xc6K\xcf>\x83\xc0\xb9t\x9a\xa0E\xc2*J*\x9e\x80\xc7:\xa1\x8b\xa8\xf7\xa0e\x0f(\xa2Wa\x90\x84\xd8N\xce\xfc0\xb0\x9d0\xfbO\x98G\x13,\xa3u\xec\xa1\x98!\xcd\x9fun2\x95\x96\x00\x11}\xad`\x8a\x03\xa3\xf6\xc6\x1e\xa2\xb6\x17\x86\xa3x\x00v\x15R\xa7+\x84\xed\x84&/\x9e\x9dI\xccT\x16\xa9Z5\xf5|D\xd7\x91?\x81\xa0\xf3\xd0\x0d\x03\x8f\xc2^\xe4\x8f:\xb3\x8f\x10\xde\xb1\xb1\x97\xa4!m\x85\xe2\x99\x80bi\xc7\xb6\x1f\x06.-|\xf9\x10\x14\xc9N\x1eP\xbc\xf10\xa6\xfd\x84x\x0e\x91\x95\x8d(>\xa1\xe5\xa56\xf6\x98\x0f_/\x12\xad\xc8\xc3\x91\xc0\xe2\x89\xc2`I\x8f=\xf9;\xafT\xebc\xb0e\x95\nu*\x0c\xd0^6\x88\xaa\xca\xe1\x1f-\x06X#V\xaf\x11\xd25\x8d%M\xb2-r\xc8}\xee\x93\xefT1\xf7E\xf8\xc5\xd6\xa0\x00\x06\x0f\xe8Q\x80\x1e\x0f0)\x00\xf7y\xfa\xc5\xb6/\x17q\xb1\xb5(\x80\xc5\x03\x06\x14`\xc0\x03\x86m\xcd\x1cQ\x80\x11\x0f\x18S\x80\xb1~\xfc\x9b\xba\x19\x8f\x15Z\x84E@Fa1\x90]X\x0cd\x1a\x16\x03Y\xa7U\xe2E\xf1\xb9\xb36\x1b\xb1\x18\xc8L\nm\x1f\xb1\x18\xc8X,&\xb3\x97\x82\xc1\x14F\x05\xba\xbf\x8b\x8d\xe8\xb7\xb5\xc3` \xa0 \xfdv\x0b\xfa\xed\x06l\x11v\x91\x7f\xed\xac\xd5|~\xbb\xf5Z\x1b=b \xa0\xed\xfc#M'\xb6R\xdb\xe0\xc7\x00@+\xe1v+\xe1v+\xe1v+\xb5\x08\xbb\xc8?v\xd6j%\xdcn\xa5\xd6F\x8f\x18\x08h%\xcc[\x89\xc2xA\xb4N\xb5\x18%\xa8\xb9\xdfnG\x11\xb2c;p\x8a/qN4?|d\x1f2&Z\xa7i\x18\x14l\xce\xcfs\xfc\"t\xd6\x89\xe6\x05\x01\xfb\x16`\xa2F\x1eZ~\x86\xed\\\x9fD\xb6\xebz\xc1\x92]\x18\xaf\x8cC\xb9\xd1\xca\xbf>y\xd5\xab\xca\xf8\xd7\x19\xaf\xcc\xaa\xac\xcf\x97\xf5\xab\xb2\x11_f\xd5\xf5\x0d\xf8B\xadW\x17\xf7\xac\x17l\xa1\xa5W\x85\x16\xfb\xa9\xe5\x956\xac)\x87<\xa5\xa1\xd7\xa4\xfcg\x9a\xf3\xcd\xe6\x1cBl;\xf3\xb0\x0d-\xddf\xc5\x15\x93\xf2\x01\xc5\xa4\x84@1-#\x0b\xc8D\xdb@R\xb2\xc0U\xf1\xce\xb9\x12\x90\xfd\xcc\x96{\xc1\n\xc5^ZA\xca_\x15\xe6\x89\x03\xe39\xd9t#q\x1e\xa2\x18\xf2\x1f\xa2\x18r!\xa2\x18\xf2\"\xb2n\xd8\x91\xc8\xea!_\"\xcaAw\"\xcaa\x8f\"E\x10;U\x86j\xf7+JX\xd0\xb5(qA\xef\xa2\x04\x86\x1d\x8c\x16Y\xecc\xbc\xd0\xb0\x9b\x11\xfc$\x9eF\xa0*gS\xf06\x85\xa8d\x95E\x132\x0f\xf4\xa5\x0e\xe8K\xfd\xcf\x97\xba\x9f\xdf\xe6}\xbe\xdc\xf9|\xb9\xef\xf9-\xae\xe7\xabx\x9e\xaf\xe2x~\x9b\xdf\xf9mn\xe7\xb7z\x9d\xaf\xe6t\xac\xbc\x02\x9f\xf3U\\\xce?\xce\xe3`\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2m\xce\x85\xe5\xce\x85\xe5\xce\x85[\x9c\x0b\xab8\x17Vq.\xdc\xe6\\\xb8\xcd\xb9p\xabsa5\xe7b\xe5\x158\x17Vq.\xcc9\x17\x05Lc\xdby@\xee\x01\xa34E\xb1\x96D\xb6\x93E^]\x83\xfb>E\x01\xd4\xd2\x8c\x19\x0b\xd7\xba\xba%\"\xf0\xd1\xd2\xe6\xd8\xf72x\xfb\xb8z\x009\xe6\xdf/:F\\\x80\xa2Mb\xa8\x92\\h\x05\xa9\x15f\x83\xba\xaac[\xc2\x11\xb46\x84\xafB\xa1\x1d\x12\x91\xf1\xb1\"s\x04\xad\"\xf3U\x14\"S\x14x\xa5%!\xf6\xdcC\xbe\x8f^u\x16\x0e\x93z)F4\xa6\xdb\xb38\x98\x13F{\x06e)\x98\xfa\x00\x8a\x94;O\xbbT\x1cL$\x18\x0f\xb4\x9e\xc9\x0fk\x89}%\x81}EyY\\\x9b\xb82\xc9\xb0\x92dXQ2\x16g\xb1^\xe5\x05\x0f\x87\x14\xedR\xcdEN\x18\xdb\xe5 Vv\xd1\x9b\xc1\xce\xb8'\xe7\xb6\x93z\x1b\x04\x14\xe4\xcb\\\xe0\xf9*\xdc\xb0k\xe4\xfc\xb9\x80\xff\xc6K\xbc\x145o\x1cMc;H\xbc\xea\\g\x18w\xba\x86\x95t\x90\x9d \xcd\x0b&\xd2R\xbe=\x85\x90\x87p\x9df*:7\xa2]\xc7\x0d\xd3\x14\xb9\x1dg\x1d\xc7(H_eLX\xba$=d\xff\x14Yn-\xddGP\x8e\xc0\xdf\x16\xab\xc1\xda\x15\x81\xd9zk\x90\xe5\\,\xe1o{D9\x1f\xc6\xf8[\x93(\xe7\x03\x19\x7f\xdb'\xca\xf9P\xc6\xdfZd\xfd|0\xe3o\x07\x04\xc0\x84$\x18\x92\x12@U\x8c\x08\xc0\x00\x92qL\x00\xc6\x90\x0c\xc5+\xd4\x1b\xd0I\x9b\xf1\x859\xf2\x85\x93\xdc\"\x0c\x042\n\x0d\x01\xedBC@\xd3\xd0\x10\xd0:\x8c,\xa0\x81h\x0cl#F\x1a\xd0L4\x06\xb6\x14\x8d\x11\x1b\x8b\xc6)\xec\xf6\xab\x8e\xdd\xa5\x15\xfdV#\xfa\xad6\xf4[M\xe8\xb7Z\xd0o5\xa0\xdfn?\xbf\xdd|~\xbb\xf5\xfcv\xe3\xf9j\xb6\xf3\x8f3\x9d\xd8J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xddJ\xb8\xddJ\xb8\xddJ\xb8\xddJX\xcdJ\x98\xb3\x12\x05\xdb\x1a\x07\x91Z\xb7\xbd\x83H\x9f[\xf3 R\xe4\xb6\x7f\x10ipk\x1d\x84\xaa\xcb<\xa1*e=`\xab\xf5\xaa\xb2\x1ePVq\xe5\xd6\xd0[\xcd\xac\xe8L\x9e\xce\xac\xda`\x9a|Y\xd5\x08\xb3\xcf\x95\xf5+\x9e}\x9e\xa7U\x95q\x0b\xf6\xad6\xa8\xca\x06|\xd9\xb0*\x1b\x02eU\xfb\xb8U\xfeV\x1bUt#\x9en\\\x95\x8d\xf9\xb2,\xe0\x10\xf5\xb7\xad\x96\xae\xbc\xd8\xad\x95\xd35\xb3\xff\xf1\xa0mX\x00\x93\xaaY\x83\xee`0\x18\x0c9d\x9e\xc7.0\xf9b\xbc}\x80?0.\x9aM\x13b/mJ!GmJ!_mJ!w%\xea\x85=\x96\x00@NKH\x06\xf9-Q\x0c\xb9nS\x0cz/Q\x0c90Q\x0c\xf90\xa1\x16\xc8\x8d\x9bb\xd0\x93\x9bb\xd0\x99\x9bb\xd0\x9f\x89b\xc8\xa5 \x9b@^\xdd\x14\xc3\x8eM\xdaD\xe0\xdb\xa4\xeaZ\xdd\x9bh\xab\xcc\xc3\x1bX\xee\xe4\n^\xae\x10\xc6\xe4\x01\x8a\xc4\xf3}\x99\xe3\xfb2\xbf\xf7en\xef\xb7x\xbd/uz_\xea\xf3\xbe\xd4\xe5}\xa9\xc7\xfbR\x87\xf7\xa5\xfe\xeeK\xdd\xdd\x97z\xbb/uv_\xea\xeb\xbe\xd4\xd5}\xa9\xa7\xfbrG\xf7[\xfd\xdc?\xc2\xcd}%/\xf7\xd5\x9d\x1c\xf6g,\xf3g,\xf3g,\xf3g,\xf3g\xdc\xe2\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xee\xcf\xb8\xd5\x9f\xf1\x11\xfe\x8c\x95\xfc\x19S\xfeL!\xc2\x0d\x8a\x178\xdcj\x1b/\xf1\xe6\x18\x1d\xaa\x07\xe7\xe5\x03\x01|\xe5\xb9.\n\x1at\xf1\xbb\x00\x9c8q\x88q\x03.~\x17\x80\xf3H\xaa\x86\xf2;\x1b5p\xc7\xc9\xac\xedZ\xa4\xde\xb1rk;\xb9\xe4;Vvm'\x97~G\xcb\xaf\xedd-\xd8\xf3-\xd8\xb7\xb4`\xcf\xb5`/o\xc1\x9ek\xc1^\xde\x82=\xd3\x82\xfdi\x01-\xebXY\xe8p\x94oQ\x04\n\xeeE\xe1[=\x8cB\xab8\x19I\xa0\xecg\x0c\x91\x92\xab14\n\xde\xc6P\xa88\x1cE\xa2\xeas\x0c\x91\x92\xdb14\n\x9e\xc7P(\xcc\xc1\xaa\x81&\xe7\x92\xfe\x91\x1e\xe9\x1f\xe7\x90\xfe1\xfe\xe8\x1f\xe9\x8e\xfe \xde\xe8\x1f\xef\x8c\xfe\xb1\xbe\xe8\x1f\xed\x8a\xfe \x9e\xe8\x1f\xef\x88\xfe\xb1~\xe8\x1f\xe9\x86*\x1e\x87\x8f\xf48|\x9c\xc7\x1d3\xc7\x92`%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dki\x02%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dsi\x02 XKR;\xf5\x9cCq\x055\xcc\xdf\x8d\x91\xb2\xb7Ob\x84\xf3;\xa2\x0d\xaazB\xe3\xecy\x12\xe2uJ\xe0\xaa'4\xae\xf8\xa8~\x0d\xca\x7fU\x18\x8e\x0f\x80\xe0\xd9\xc8\xae$;\x05\x94\x8bOA%-\xa0pE#\x14Z\xa10\xa9\x94M\xf3\x15[\xe6+7\xccWk\x97\x7f\\\xb3\xc4-\xc0\x8a-\xc0\xca-\xc0j-\xc0\\\x0b\xe8N\x92'r\xc3\xc8v\xbct\xcf\xbdu@\x1b7e\xdd1[8\"\n\xd9\xbb\xe9\xda\x90(d/\xc1k\x03\xa2\x90\xbdm\xafYD!{\xad_\xeb\x13\x85\xec\xfb\x034\x93(d_T\xa0\xf5\x88B\xf6\x8d\x08\x9aA\x14rJ\xd0\xad\xa6P\xe7$\xd2{d1{0\"\xd4\x1a\xce\xccy\xfb8L\xed\x14i}\x8b>o\xb0\x08c\xff\xbc(\xfb\xb1o\xb9h\xf9\xd3D\xf0\x1cd7\xd6\xc5\xec\xc6:\xcc\xaex\x0e\xb23L\x89x\x86)\x90\xaf,\x809\x8e$\x12\x1a#\x81\x88e\x01\xc8\xb1\xd7\x93\xc8\xd8\xeb d,\x0b`\x8eC\x89\x8c\xbd\xa1@\xc6\xb2\x00\xe4h\x1a\x12\x19MC cY\xa00\x96\x1e`\xd7\xd2\x88\x0f\x1c<\x8fwI9\x9e\xe6`R\x96\xa7\xfa\x98\x9c\xe9\x89n&ez\xaa\xa7\xc9\x99\x9e\xe8lR\xa6\xad\xfe\xa6\xe0p\n\x93w\xe3\x85\xfes;\xa1\x84\xe1\x89>(\xe1x\xb2\x0b\xcax\x9e\xea\x81\x12\x9e';\xa0\x8c\xe7\xa9\xfe'\xe1\xf9D\xf7\x93z\x1a~nO\x930<\xd1\xd3$\x1cO\xf64\x19\xcfS=M\xc2\xf3dO\x93\xf1<\xd5\xd3$<\xdb=\x8db:\xc7\xb6\xf3\x90EP\xf9y\xce\xf3x9\xb7\x7f\xd4\xcf\xb2?\xdd\xf1O\x10t\x04AG t\x08A\x87 t\x00A\x07 \xd4\x82\xa0\x16\x08\xedC\xd0>\x085!\xa8 B{\x10\xb4\x07B\x0d\x08j\x80P\xdd\x02\xa0:\xdb\xae\xed\xca+\x02\xde\x02\xbbJp\x8e}qf\xe8\xfa\x0b\xded\x05|$\x82\xb3f+\xe0C\x11\x9c5]\x01\x1f\x88\xe0\xac\xf9\n\xb8%\x82\xc3M\xed\x8b\xe0\xac\x19\x0b\xb8)\x82\xb3\xa6,\xe0=\x11\x9c5g\x017Dp\xd0\xa4%\xf6\xaf:{\x93:@v\xacQ\x10\xc3`V`\xae\x1d?h\xcb\xd8\xdeW\x08\xd3dVw\xbe\xe7R\x00\xcbb\x96ad\xe1p\xc8\xacG\x13\x0foP\\\x15s\xefB\xc3\xf95\x0b\x1ad\xdb6#A\x18\x06\x94\x08\x8e\xe3@lH\x08B\x08\xd0E\xae\xdd\n\xb2\xe8g\x7f\x00\xf5\xd7\x80\xc5\x02PV\x8c\xdc\xba\x92\xa1\xde\xd7\x19\x0cQ\xbcX\xf4\x0ds\x00IJ\x81\x86=\x8biN\x18\xdb\xc1\x92\x10c\xc0]\xe9_\x86\x98\xe00\xe7\xae\xd9\xef\x11\xc6\xe1\xb6Dd`H\n\n\xf4\xd7\xc5|a\xd8\x8cy\xa2u\x1c\xe1Z\x10\x0b\xf5\x1c\x9b\xbd\x9c\x90s\xa2qv\x7f`.z\x80\xea\"/\xa8=\xd1\xb5t}\xc4\xe8n\x15\xa6\x14&S\xe0\x9c\xb1\x10]>\xd2aW\xa0Q\xb6\xe9\x0eA\xb7G(\xa8{\x869\x1cZ=\xd6\xb3I\xc0\xd8\x1e\x0f\xfb\xb0\xdf\x11\xb01Bs\x87iW`o\xf6M'5\xe6\xfd> \xcd\x1c\xafQ\x03\xea\xf7\xc7\xec\xcb\n\x88r\xd3\x1a\"\x17\xb4)\x89\x1a\x0f\x1c\x87u\xe1\x1c\x85\x12\x1a\xe8\xb8\x88\x03n\xedd\x85\\\n\xb6\x18,\x16\x0b\x04\xc2(\x15\xa0\xd1\xc2]X \x8eq\xb9\xc5\xc2As\x10H\xf5\x10w\xe1ro'\xc3a\\_\xb1/\x80\xd5-AZkK\xad\x8e<\xe6\xb6\xf3\xb0,\xde\x91ZPH\x83\x90\x8ap\xd4B\xc8\x85$\x15\xe1\xb0\x85\x90\x0bP*\xc2A\x0b!\x17\xaeT\x84V\x0b!\x17\xbcT\x84\xfd\x16B.\x94\xa9\x08\xcd\x16B.\xb0\xa9\x08{-\x84\\\x98S\x11\x1a-\x84\xdc\x0cY\x11\xea\x96\x9c\x90\x0b\x81\xe6K\xad\x8e\x828\xca\xb6\x80\xa8&\x86\xdc\xa7-<\xaa\x89!\x17j\x0b\x96jb\xc8\x8d\xdaB\xa7\x9a\x18r\xa5\xb6@\xaa&\x86\xdc\xa9-\xac\xaa\x89!\x97j\x0b\xb2jb\xc8\xad\xdaB\xae\x9a\x18r\xad\xd6\x00\xact/\x9e\x92\x0f\xc7\xe6K\x8d\x88\xc8x\x02.8\x9b/\xb5&>\xe3\xf1\\\xa86_ju\xb4\xc6\xc3\xb9\xc0m\xbe\x14A\xb90n\xbe\xac\x824\x1e\xcc\x05u\xf3\xa5F\xc5u< \x17\xe2e\x92\xd7Q\x1e\x8f\xe7\x02\xbe\xba\n\x01\x01\x17\xfeU\xba/\x02<\x9e\x00\n\x06+\xc7\x80\xe0\xect9_\x16+\xe4\xc8\x8eQ\x90\xf2\x14D!l\xe3l\xc2\x03\xda\x01D\x98\xf3\xa5\x00\x0c\xc5\x9b\xb5\xa2D$|\xf49_je\x00\n\xe1\xf9X4s\xa3,\x1c\x85\xd0|d:_VA\x00\x87\xe7\xe3\xd4Zz\x11 \x18\xb5\xce\x97U@\nt\x02 \x86\xadk\x11RA\x11me\xb8<\xd4\xe4I\xa0\xf8v\xbe\xd4\xea\x10\x176\x1f\x1b\xedfM\x11\xa1\xf9\xd8\xb7i\x88\x88\x86\x8f\x84\x9b1&\x8b\xe0\x80A \x88\x8b\xf3\x81C\x00\x07\xa2d\xa2\xb3\xc2DP\xcc\x9cu\xd8,l\x86\xc6U>\x82\xaeZ\x91\x87\xab\x10 \x10O/Eh(\xba\xae\xdb \xa0\x81b\xed\x8a\xa6\x0e\xb7\x81\x81\x0d\x88\xbc\xb3a\x87\x08\xbe\x013\x02qxC$R2\x14\x957T\xe2\x0e\x06\xc4\xe8\x0d\x99hT\xe1#\xf6\xf9\xb2\x0e\xd79\x020r\xcf\xef\x97\x17s%t\x07\x9d,\xce\x7fn\xd6N\xec\xbb\xd7rd3\xf3\x8a\xb9\x11\x18\x8a%71\x17\xf0zn\x16sl \x14Cn\xe6.\xd0\xd5\xe4-\xe6W#(v\xdc\xcc^\x80\xe5\xacx6\xdc\xac_\x00\x8bY\\\xcc\xa8,\xa7Xq1A\x01%\xc3\x021C\nE\xb1\xe5\xe2\x86R+U\xe8 Q\\\x0d\xa1\x18r\x81\x05)\x81\x9c#\x81\xa1Xr\xa1\x07\xe1[y8\xd1\xe2\x7f\x05\x86b \x05'\x05E\x0bC\x88\x17;\xdc\x10\x1dI\x1b\xeb-]-C\x90\xecd+h\x92l\xd4\xcax$f\xcc.\x8fH\xb2a+\xe3\xa1\x981\xbbt\"\xc9\x06\xad\x8c\x07b\xc6\xec\xb2\x8a$\xb3Z\x19[b\xc6\xec\x92\x8b$\xeb\xb72\xee\x8b\x19\xb3\xcb1\x92\xcclel\x8a\x19\xb3K5\x92\xac\xd7\xca\xb8'f\xcc.\xe3H2\xa3\x95\xb1!f\xcc.\xf1\x88\xae$\xed 5\x82d\xdc\x96' Ie\x9d\xa4F\xc8\x98\xc3\x1d\xa5J%\xb41\x1f\xca\x99\xc3\x9d\xa5J5\xb41\x1f\xc8\x99\xc3\x1d\xa6JE\xb41\xb7\xe4\xcc\xe1NS\xa5*\xda\x98\xf7\xe5\xcc\xe1\x8eS\xa52\xda\x98\x9br\xe6p\xe7\xa9R\x1dm\xcc{r\xe6p\x07\xaaR!m\xcc\x0d9s\xb8\x13\x95\x81\x9e\x98w\x05 Y\xcb\xa2\xc3e[HW#\n\x8e\xd0\xd2\x00\x0c\x17\xa9\\\x8d\x94=\x174\x02\x8b\"8~$\xd3;\xd2*\xd8(\x12X\xb2\xc0\x01%\x91\x10\x92V\xc0\x84\x95\xc0\xb2\x19\x8e0\xcb\x0c\x92\x94\xb7\x94\xaf \xe4\xac\xd3MR\xceT\x84\x08,\xc9\xe0\x18\x94\xc9NIk\x00\"Q 9\x00\x07\xa5dJK\xae|&4\x05V\x89p\x94J%\xc1\x14\xda!\xadC\x10\xb6Ry\xb3\xf6~@\x06\x9c\xc0\xbaP\x18\xc7V\xa96i\x0d-\xcc\x05\x81-\x95\x98\x93\xf2'q\x82Z\x84i\xbc\x9a\x89B \xbddci\xae\x1a\x85\xb0z\xa9\x12Y/\xd9\xe0ZZ\x93 \xce^\xaa\x84\xdaK6\xda\x96\xd6$\x08\xbc\x97*\xb1\xf7\x92\x0d\xbf\xa55 \"\xf1\xa5J0\xbed\xe3qiM\x82\xd0|\xa9\x12\x9d/\xd9\x00]Z\x93 V_\xaa\x84\xebK6b\x97\xd6$\x08\xde\x97*\xf1\xfb\x92\x0d\xe1\xa55 \xa2\xf9\xa5J@\xbfdcziMpdBl\xf6\xb5\x8fA\x92\x9e\xab\x16\xef\x13\xbb\x83\n\xb5\x89{\xaf\xda\x02\x80\xd8NT\xa8M\xdc\x83\xd5V\x04\xc4\xfe\xa3Bm\xe2^\xac\xb6D 6,\x15j\x13\xf7d\xb55\x03\xb1\xc3\xa9P\x9b\xb87\xab-\"\x88-Q\x85\xda\xc4=ZmUA\xec\xa1*\xd4&\xee\xd5j\xcb\x0cb\xd3U\xa16q\xcfV[wT;l\xe2\xaajDQO\x15\x14\x01\xdbo\x05^\xca\x8c\xe3\x03\xed\xcc\x15\xd0zsN\xcc\xad\x810<\xf9\xad\xbb\x82\xa0\xd8\xbd\x133,\xcb\x19n\xfc\xc6^\x81^\x86X\"\\^\xcap\xe27\xfd\nl\xb1\xc7 \xe6U\x96\x93\xdc\xf8-AR'm\x0c)\x14-$\xb0mX\xd0\x14{\x80b\x9ee9\xc5\x0d\xdaT$%h\xe3I\xa1(\xce\xd0\xc6#\xe1\xb0\x91\xe0\x05\xbd,\x84\xe2 \x9f\xbc\xcb\x08\xaa\xcdI1\xcb\x1a\xc1\xb97\xbbsYjK\xca\x0d\xe2\xc4\xefjR:\x92\xf2#0\x0cW~\xdf\x93PQ\xbec\xd6\xa2\xc6\x02Cq\x85vF\xcbN!g\x08\xf1\x02\xb6M\xc96\xb5p$A\x14_hg\xb5 \xec\x8dd\xcd\x98\x97R\x9c\xa0]WB?s\xbc\x968x\x03ax\xf2\xdb\xb2\x05\x81\x9c\x1d\xcf \xda\xb2%U#\xe7G`h\xed\x01\x9b\xba\x04E\xb5\xaf\xdb\xc2\xb8\x86Q\xbc\xa1\x9d\xdf\x82\x88\xd8\xfc\x15s&A\xb4\xaf\x03\x9b\xc3\x14I\x8b+Q(\x8a3\xb4\x81L\xd1\xb4\x0d\xc74\x8c\x96\x1a\xd8e\xa6\x88\xa43$\x81a\xb8\xf2\xfb\xd0\xa5\x07-\x15b\x02\x12T\xf0\x05\xd2&\xc2\x08\xa18\xa6#\xe5.c,\x0e\x19\xc8#=R\xf6l\xe0\x00U\"\x8a!\xeaC@\xd2\x1a\xa8H\x02b/\n*\xca3CR\xe6Dh\x01\xb1\x16E\x19\xf5\x01#)s\xca 9\xf6\xa2\xb0\x839\x8f\xa4\xa0}y=\x928\xa4>\xc4$\xad\x84\x8a\x19x\xf6\xe2\xc0\x849\xf3\xa4\xd0\x92\x96\xaa\xc4\x91\nyP\xaa\xbd\xb3\x11\xb37_\x898t!\x8eVI\xeb`\x02\x18\xb8\xdf\xc1\xb1Ly\x16Kn\x0f9kQpC\x1d\xdcR\xb1\x85\xbc\x1aQ\xb4C\x9d\xf5j7\x059\x07\xf0\xd5\x88\xc3\x9f\xeax\x98\xbcw\xcb\x99\x0b\xe3!\xfa0\x99\x82\xae\xe4\x15\x89\x03\xa4\xf2\x00\x9a\xb4\x06\"L\xe2Y\x8b#&\xf2\xb4Z\xbb\x19\x889\x1e\xaaD\x18B-\xdb\xf9KY\x8bc*\xea0\x9c\x82 \xa4\xd5\x88\x83,\xf6\xfc\\{ML\xa8\xc5W&\x8e\xba\xe8Sw\xd2\xaa\xf8\xd8\x0b\xe8\x84\xc20\x8c9\xa9\xa7R\x93\xdc\x85\xc5q\x19{\xbcO\xa5\xae\xb6 K\x18\xa8Q\x87\x02Uj\x92\x07&\x92\xc8\xadu\x17\x99\xc0\x08*\x00\xf7\x94#[?\x08\xbe\xdf\x1a\xd9F]\xd4\xedY\xdc{j#\xbb\xd7\x94C\xc5f]\xcc\xbfY7\xb2\xfbu)\xffj\xdd\xc8\xb6\xeaR\xfe\xdd\xba\x91=\xa8K\xf9\x97\xebF\xf6\xb0\xa9\x97\x7f\xbbn\x84\xeb\x06k\x18-R\xae\xd5\xd8\xa0\xcb\xc1\xa6\xe3\x1e\x03\x820&\x8d\x01\x94\x80\xfb4\x04\xd0\x04\xb6h\x08\xa0\x0e<\xa0!\x80N\xf0\x90\x91\x05PL\xdc(&\xce\x06\x16N3\xb1\xc1\x00@\xd5\xc4=\x16\x05\x81L\x06\x04('\xee3\x18@;\xb1\xc5`\x00\xf5\xc4\x03\x06\x03\xe8'\x1e\xb2\xf2\x00\n\x9a7\n\x9a\x87i\x1a\xfa\x9c\x86\xe6\x06\x8b\x00U4\xefq0\x08e\xb2(@I\xf3>\x0b\x02\xb44\xb7X\x10\xa0\xa6\xf9\x80\x05\x01z\x9a\x0f9\x99\x00E\xa5\x8d\xa2\xd20\xe2\xb4\x94\x1aT1\xa8\xa2\xb4Gc \x88IA\x00\xe5\xa4}\n\x01h&\xb5(\x04\xa0\x96t@!\x00\x9d\xa4CZ\x0e@!\x1bF!\x93\x16?\xda@\x1ab\x89@\xbdm\x00\xbdq\x84\x10\x1d\xafL\x96\x0cP\xf0\x86W0K\x05(}\xc3+\x9d\xa5\x02\x0c\xb1\xe1\x0d\xc1R\x01\xc6\xd9\x00\xc6\xe1\x1a\x06Xl\xc5\xce\x125\x11<6\xae\xc0Y\x83!\x02-\xb6\x82\xa6\x12\x96\x10\xa2\x03\xa6\x17\x86\x0c\xb0\xd8\n\x98q\x18*\xc0b+`\x12b\xa8\x00\x8b\xad\x80y\x89\xa1\x02,\xb6\x82\xa6*\xb6a\xc0\xc7\x85l\xfd\xe0\xdb\xf1\xd2\x0bX\xdb\xf8\xb6Q\x95@\x06\xf0\xed^]\x0c\x95\x9aU)\xf0\x95'\xbb_\x15\x02\x9fU\xb2\xad\xaa\x10\xf8Z\x92=\xa8\n\x81\xaf-\xd9\xc3\xbaN\xa0\xa1\xb8j(\x18\xbf\xf8\xd8\xa0\x8a\xc1&\xe3\x1e\x8d\x81 &\x05\x01\x1a\x8f\xfb\x14\x02\xd0\x00\xb6(\x04\xa0\x06<\xa0\x10\x80.\xf0\x90\x96\x03PH\\+\x04\xec\x9b~l\xd0\xe5\xa0J\xe2\x1e\x03\x820&\x8d\x01\x94\x12\xf7i\x08\xa0\x95\xd8\xa2!\x80Z\xe2\x01\x0d\x01\xf4\x12\x0f\x19Y\x00\xc5\xcck\xc5\xc0\xf3\x8c?7\x18\x00\xa8\x9ay\x8fEA \x93\x01\x01\xca\x99\xf7\x19\x0c\xa0\x9d\xb9\xc5`\x00\xf5\xcc\x07\x0c\x06\xd0\xcf|\xc8\xca\x03((\xad\x15\x04\xc4)~j\x90\xa5\xa0j\xd2\x1e\x05\x81\x10&\x89\x00\x94\x92\xf6I\x00\xa0\x91\xd4\"\x01\x80:\xd2\x01 \x00t\x91\x0e)\x19\x00ElhEL\xe4n\xb3\x01\x143Qp\xa4\x0d\xaf-\x96\x0c\xa2\xe248i\xf5\xb4\x0d\xa7\xd4I\xab\xe7m8=OZ=q\xc3\xa9~\xd2\xea\x99\x1b\xde\x1al\x83\x00\x0b\xad\x98Q\xbf\"\x81\x87\xbc\x154 \xd0$\xa0\x85V\xc0\xc4\xc0\x90AT\xfc\\A\x13\x01\x16Z\xf1\xb3\x07M\x03Xh\xc5\xcf'4\x0d`\xa1\x15?\xc3\xd04\x80\x85V\xc0\x9c\xc34(\xb7P\xfb[-\xe9\xd7\nFv\xfer\xce2\x96\x01\xf2-d\xa9 \xe5BA \x84I\"\xc0\xc4\x0b \x00s/$\x00L\xbf\x90\x000\x03C\xc9\x00&a\x08\x84(\x0f\xc3A\x04\xa9\x18\x1e\x07\xc1L\x0e\x06&d8\x14\x98\x93\xe1P`Z\x86C\x81\x99\x19^.09C\xc2D\xf9\x19\x1e#H\xd1\x00@\x08g\xf280Q\xc3\xc3\xc0\\\x0d\x0f\x03\xd35<\x0c\xcc\xd8\x00\xb2\x81I\x1b\x12'\xcc\xdb\x00 A\xea\x06BB@\x13\x00\x82 \x1c\x00\x07\xe6p\x00\x1c\x98\xc6\x01p`&\x07\x92\x0fL\xe6\x90@8\x9f\xc3\"\x04)\x1d\x0e\x06\xa1L\x16\x05&vX\x10\x98\xdbaA`z\x87\x05\x81\x19\x1eN&0\xc9\xc3)\xaa=\xcf\x03kN1\xd5\x03\xeaS-\xdb\x03)Y)\xe1\x03)^)\xe7\x03\x19C)\xed\x03\x19H)\xf3\x03\x1aM-\xf9C\x92*\xe6\x7f8\x92cR@<1D\x0b\x91\xc2\xd3\x9aJ\"\x88#T\xcd\x05q\x84\xaa\xe9 \x8eP5#\xc4\xb7Q9)\xa4\xe5\xdfs\x8f\xe1\xbc\x10Q(H\x0d\x91\x08\x08`\x12\x000AD\x94\x839\"\xa2\x1cL\x13\x11\xe5`\xa6\x88\xac\x1fL\x165\x00Q\xbe\x88E\x08RF\x1c\x0cB\x99,\nL\x1c\xb1 0w\xc4\x82\xc0\xf4\x11\x0b\x023H\x9cL`\x12\x89@\x89\xf2H\x1cD\x90J\xe2q\x10\xcc\xe4``B\x89C\x819%\x0e\x05\xa6\x958\x14\x98Y\xe2\xe5\x02\x93K\x04L\x98_\xe21\x82\x14\x13\x00\x84p&\x8f\x03\x13M<\x0c\xcc5\xf100\xdd\xc4\xc3\xc0\x8c\x13 \x1b\x98t\"pp\xde\x89\x01\x08RO,\n\x02\x99\x0c\x08L@1\x180\x07\xc5`\xc04\x14\x83\x013Q\xac<`2\x8aUPk>\nT\x98ZJ\n\xd2\xa2RV\n\xd0\xacJb\nP\xb6Jn\n\xd0\xbfJz\n0\x89J\x86\n\xb2\x92R\x92\x8a T\xcbS\xb1\x04G\xa4\xaa8R\x80\x12\"\x04\xe7(\x85\x84\x15K\xa6\x98\xb3b\xc9\x14\xd3V,\x99b\xe6\x8ak\x9b(y\xa5\x90\xbdR\xf8&Kd\xeb\x9a_\xc5fPF\xab)\x14%\xb4\x08\x04\x040 \x00\x9c\xcej\xca\xe1lVS\x0e'\xb3\x9ar8\x97E\xd4\x0f\xa7\xb2|f\xad\xc0\"\x0c\x16!Jd\xb10\x08e\xb2(8\x8d\xe5\xf3\xb1=\x0b\xb2X\x10\x9c\xc4\xf2\xf9\x98\x9d\x05\x0d9\x99\xe0\x14V\x83\x12f\xb0X\x88(\x81\xc5\xe1 \x98\xc9\xc1\xe0\xf4\x15\x8b\x82\xb3W,\nN^\xb1(8w\xc5\xc9\x05\xa7\xae\x1a\x988s\xc5aD\x89+\x1e\x08\xe1L\x1e\x07\xa7\xad8\x18\x9c\xb5\xe2`p\xd2\x8a\x83\xc19+^68e\xd5\xe0\x04\x19+\x1a JX1(\x08d2 8]Ec\xe0l\x15\x8d\x81\x93U4\x06\xceU1\xf2\xc0\xa9*FA\n\x99*Hc\xaa\x89*@\x8f\x8ay*^\xb9ji*^\xe1jY*\xde\x08jI*\xde0j9*\xc0X\x8a)\xaa\x86R5C\xc5P\x1c\x95\xa0bi!R\x88\x12\x9c\xae\x94\xd2S\x0c\x9drv\x8a\xa1SNN1t\xca\xb9)\xb6}\xea\xa9)\xbf\x8c\xd4\xa0\xccT]&JL5\x00\xa8\xdcl\xca\xe1\xb4T]\x0cg\xa5\xeab8)U\x17\xc39\xa9\xa6n8%\xe5\xd3k\x04\x16`0\x00QB\xca\xe7\xc3\x7f\x16d2 8\x1d\xe5sq=\x8b\xb1\x18\x0c\x9c\x8c\xf2\xb9\x88\x9d\xc5\x0cYy\xe0TT\x0d\x12f\xa2\x18\x84(\x11\xc5\xc2 \x94\xc9\xa2\xe04\x14\x03\x82\xb3P\x0c\x08NB1 8\x07\xc5\xca\x04\xa7\xa0j\x948\x03\xc5BD (\x0e\x07\xc1L\x0e\x06\xa7\x9fX\x14\x9c}bQp\xf2\x89E\xc1\xb9'N.8\xf5T\xc3\x04\x99'\xaa\\\x94x\xa2A\x10\xc6\xa41p\xda\x89\x82\xc0Y'\n\x02'\x9d(\x08\x9cs\xa2e\x81SN\xb4b\xda3N\x80\xa2\x14\x13N\xbc\xf6\xd4\xf2M\x9cF\x95\xd2M\x9c\x92\x95\xb2M\x9c\xde\x95\x92M\x9c)\x94rM\xbcu\xd4RM5\x9db\xa6\x89\xc6\x1f\x93hb(\x01B\x88\x0e\x9a{T\xd2L4\x95j\x96\x89\xa6RM2\xd1T\xaa9&\xa6]\xa7\xa5\x98\x04\xd9$\\\x85SP6\xa9)\x14e\x93\x08\x04\x040 \x00\x9cMj\xca\xe1lRS\x0eg\x93\x9ar8\x9bD\xd4\x0fg\x930\x13\xd7\xb3\x08\x83E\x88\xb2I,\x0cB\x99,\n\xce&a>\x16gA\x16\x0b\x82\xb3I\x98\x8f\xb2Y\xd0\x90\x93 \xce&5(a6\x89\x85\x88\xb2I\x1c\x0e\x82\x99\x1c\x0c\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12\x8b\x82\xb3I\x9c\\p6\xa9\x81\x89\xb3I\x1cF\x94M\xe2\x81\x10\xce\xe4qp6\x89\x83\xc1\xd9$\x0e\x06g\x938\x18\x9cM\xe2e\x83\xb3I\x0dN\x90M\xa2\x01\xa2l\x12\x83\x82@&\x03\x82\xb3I4\x06\xce&\xd1\x188\x9bDc\xe0l\x12#\x0f\x9cMb\x14\xa4\x90M\x824\xa6\x9aM\x02\xf4\xa8\x98M\xe2\x95\xab\x96M\xe2\x15\xae\x96M\xe2\x8d\xa0\x96M\xe2\x0d\xa3\x96M\x02\x8c\xa5\x98Mj(U\xb3I\x0c\xc5Q\xd9$\x96\x16\"\x85(\xc1\xe9J)\x9b\xc4\xd0)g\x93\x18:\xe5l\x12C\xa7\x9cMb\xdb\xa7\x9eM\xc2eP\x06e\x93\xea2Q6\xa9\x01@\xe5fS\x0eg\x93\xeab8\x9bT\x17\xc3\xd9\xa4\xba\x18\xce&5u\xc3\xd9$L\xaf\x03X\x80\xc1\x00D\xd9$\xcc\x07\xf9,\xc8d@p6 s\xf1;\x8b\xb1\x18\x0c\x9cM\xc2\\l\xceb\x86\xac{U\x1fl?w\x15\x1fV\x00w\x17\x1f\xd4\x00w\x19\x1fR\x01w\x1b\x1f\xd2\x01w\x1d\x1fR\x02w\x1f\x1f\xd2\x02w!\x1fT\x03}\xe7\x1e\xd6\x01}\xe9\x1eT\x00}\xeb\x1ej=}\xed\x1ej:}\xef\x1ej7}\xf1\x1ej4}\xf3\xbelq\xfb\xc1\xcb\x033f\x90\x17UD\xa3\x1d\x05\x01\x07<\x12\x01\x8ey$\x00\x1c\xf6H\x008\xf2\x91\x00p\xf0\xa3d\x00\xc7?\xf6\x00\xabh\x08\xe4q\xe0(\xc8\xc1\xc0\x81\x90C\x81c!\x87\x02\x87C\x0e\x05\x8e\x88\xbc\\\xe0\xa0H\xc0\xe4\xe3\"\x00\x04\x87F\x1e\x07\x8e\x8e<\x0c\x1c y\x188F\xf20p\x98\x04d\x03GJ\x02\xd72XBHp\xbc\x04\x80\xe0\x90 \xe0\xc0Q\x13\xc0\x81\x03'\x80\x03\xc7NH>p\xf8$\x80\xb2\x11\x94\x83\x81\x83(\x8b\x02\xc7Q\x16\x04\x0e\xa5,\x08\x1cMY\x108\xa0r2)l5\xaa\x9ef\x0f\xc8\x83W\xc2\x81\x96@\xc0\xe3l\x03\x80\x87\xd9\xa6\x1c\x1ee\x9brx\x90m\xca\xe11\x96\xa8\x1f\x1eb\xe9\xfd[\xe1\x08\xcb\xc2\xe0\x01\x96A\xc1\xe3+\x03\x82\x87W\x06\x04\x8f\xae\x0c\x08\x1e\\Y\x99\xe0\xb1\xd5gF\x1b\xd1\xd0\xca\xe1\xe0\x91\x95\x85\xc1\x03+\x8b\x82\xc7U\x16\x05\x0f\xab,\n\x1eU9\xb9\xe0A\xd5g\x07\x18\xd1\x98\xca\x03\xe1!\x95\xc3\xc1#*\x07\x83\x07T\x0e\x06\x8f\xa7\x1c\x0c\x1eNy\xd9\xe0\xd1\xd4\xa7\xc6\x1a\xd1`\xca\xa0\xe0\xb1\x94\x06\xc1C)\x8d\x81GR\x1a\x03\x0f\xa44\x06\x1eG\x19y\x14\x86Q\xc1\x88\x89\xeb\xe1F4b\x12\x08x\xc4l\x00\xf0\x88\xd9\x94\xc3#fS\x0e\x8f\x98M9\x96\xdc\xca\x05\xfajr\xc1\xa8\x10\xa6\x95C\xdb7\x12Kf\xae\x1d?\xb4\xf2\x92}I5\xe3\xf3\x80\x0e)\xda\xa5\x9a\x8b\x9c0\xb6S/\x0c\xce\xb1\x17 -]\xc5\xe1z\xb9\xa2 \xd6\x81\x8b\xe2\xac\x98\xa3\xa9K\x18\xc7\x0b51M\x10\x06Ha\xe9s\x00d\xce\xd6Q'\x88\x0d\x91)H\x0e\x91\xe5\xc2+H\xaf\xb0p+\x9b\xe4\x9f\xd4\"\x9eJ\xa5A<\x95B{\xc4\xa2\xe3\x93D\xe7\xa9TD\xe7\xa9\n\xd1)\x8a\xb4D\xd9\xd8[\x06\xe7YT\xc0\x94\xc7dy>Q2\x00\x87\x048(HQ\xac`\xed\x03#E\xed9bA\x18\x08(\x0b\x83)\xc5Q\x90G\xc1\xfbR\\y\x83DF\xbf]D\xffh aaZ-G#`a0$\x0c\x0d\xaa,\x9c\x7f!~\x11\xc6\xfe\xb9cG^jc\xef\x11\xb1P\xccBq\xb8E\xb1c'\x1cr\xcd\"\xd7Q\x04#\x03\x16y\xd2p\x98\x12\xce\xa1\xd4\x12\x00-n\x0c\x00\x16\xb7\x07\x00+\x0c*\xcan\xda\xb8\x98Z;9\xb0\xa4\x99\x1cV\xd2J\x0e\xab\xd0HA{8\xb7\x92\xb5\xe7\x08\x1f\xe4\xb1\x92\xf6pX`8]h\x833\xe6\xc1\n\xd9n>\xab/\xc2 \x8b\xf5\x1e\xd19\x1fR/4\x8b\xa5K\xd6s\x80\x94\x0f\xa1\x17\x06Ql\xf2\xc5=\xa2\xb8\x07\x05\xea\x0b\x93@\x18@\x90\xbe\xe8S\x00\x88\x85E\"\xf8\xe2\x01Q\xdc\x1d\x0d\x01\x06C\x12Q\x00\xda{\xc3\x81\xd5\xbd\x16$\"\xf5g\x9d\xae\xc5\x02\x005a\x04\x9a\x01d\x07\x1a\x01\x99\x82F\x08\xacA\x83`\x83\xb0\x18\xd0&\x0c\x080\x0b\x8d\x10X\x86\x01\x15\x18\x05\xeb(\x8cU\x99\xc9|\xa1\xc5\xfcV\x83q\xb4\xa4\xbd\xfc6s\xf9m\xd6\xf2\x15\x8c\xe5\xb7\xdb\xcaW0\x95\xdff)_\xc1P\xfe\xb1v\x12\x98\x04\x0bM\x82[M\xc2\xd1\x92&\xc1m&\xc1m&\xc1\n&\xc1\xed&\xc1\n&\xc1m&\xc1\n&\xc1\x80I(\x8c\x8f\xecd\x1d\xa3C\xd3O\xb2\xce\x03b\xb2r\n\xd8\x17\x01\x03;\x8e\xc3-\x01\xedq<\xbd\xc0EAZLi\xc5\xcf\xe7Fs\"+m?\xcf\x98\xf86\xc6\x9acG\xe5\xe8\xb0\xb1c\xcf\x0e\xd2\xf3\xe69\x8dO\xe3u\xe0\xd8):\xe4\xc9\x81<5\x82\xce\x83p\x1b\xdb\xd1$\xdc\xa0x\x91\x7f\x9c\xcfs]\x14Lr\xa9\xea\x87\x08c/J\xbcDa\xcc9\xc0\xeaH\x94\xd5\xcb`[4L\xa3EJ\xae\xe3\xbd'\xea\xb9\x1e\x88UU\x9d\x11\x9c\xaem\x05u+\x0c\xf1\x95\xc2|u\x13\xf8\xc7X\xc0W1\x80\xff<\xfa\xf7\x8fT\xbf\xff\xdd\xb4/Q4VW4>F\xd1XE\xd1\xf8y\x14\x8d\x8fT4~\x8a\xa2)\x96U\xb9\xe6\x84Aj{\x01\x8a\x0f\xf5\xa3\xfdy\xe2\xc4!\xc64E\xb1h\xa6\xb7\x12\xecu\x1aN\xc8\x9d\x96\xec\x01\xa3\xddX\xcb\x1e\xf2t\x0c\x0cS\xb0\x86Y{\xe7<\x00bj\xec\xd9\x1buIARPX\x8d9\xf4\x94\x03\x15\x04V\x18M\xcaV\xf8'7\x02\xa0\x84\xdb\xe0\x1f\xdb\x04\xb1\xb4\xf8di\x01JXZ\x0cHK\x8b\x82\xbd\xe8\x10\x85\x89\x97'\x02\x17\xde\x0e\xb9\xff\xd7\xf3\xa30N\xed \x9d\xfcQ\x97\xd8\xf3$\xc4\xeb\x14\x11\x85\x19\xe9y\x8c\x9c\xf4G#\xdau\x88\xbf?\xd1Eg\xc4\xdf\x9f\x14\xcc}\xe0\x04\xcc\x1c\xe7\xcf\x94QAH\x15\x9f\xcc$\xf7\xff\x83\x04\x17\xc9\x88\xff\\\x19)\x01\xb6\x89\x16\x84\xb1o\xb3#u\xf6\x88F\x16\xa370\xa0\xd3\xb0(\xa6#\xc9(>>'X\x0b\xc5\x07J\"\xb9\xe0\x90\x8a\x13\x8d\x85e\xd2)\x88\xa7\xe0m\x8d\xcclt!\x14\x19\nCx\x89\xfd#\x05\x96\xca\xa6jfp\xe6\xe6e\xc3\xbcl\x14f\xa3\xcd\xed\x04\x1d6(N=\xc7\xc6e:;{\xc6\xef\x91l4\xdfsY\xa8\xef\xb9.\xe6\x80i\x18\xb1\xc04\x8c\xb8\xaaS\x9f\xab9\x0fp\x14\x0c~\x00\x9a\x91\xf9\x8ezK\x00\xb4\xb01\x00\x16n\x0f$B\xd1$\x856)8q\xd9P^o\x92vr`q39\xa8\xa0\x95\"\xbb\x1d\xed\xf8e{\xf01\xed\xe1\xc0\xe2\xf6pPA{\xf8\xfa\xcb\xf6PX\xd7\xf3\x0fad;^\xba?7\xb8\xa23\xf6\x01\xf41\xfa\xecq\xf1\xfdym\x8b\xe6\x0f^\x99\x15/f\x90\x92w\xa7kXI\x07ez\xf1\x82IK9'\x86\xbc\xd6J\xfc\xae\xc5\x13\xdaN\xeamP\x03\x19M\x94d\x0c\xd7\xa9\\\xc8p\xcd\xec\x9e-q\xb8=\xe3\x9e@\x82\xe7\xcf\xbf\xa3\xbe\x14\xea\x15\x18|\x95-\x03\xf3S\x11\x9dn\xfe\x9f\x1a\xa8\xab\xa9\xedXQ\x9b\nKC\x95\xf5\x9e\x89Py\xb3\xda@y\x1b\xd9\x16\x18\xdf\xa7\x05\xcd\x06{^+\xa4w\x16R\x98 _\x7f\xb6\xef\xe1/\xe3p{\xd0\xfc\xf0Q\x0b\x93\x9dVd\x0f\xfd0LW^\xb0<_\xc6\xf6>ql\x8c\xea\xb6\xcdm\xe7aa;H\xdbx\x897\xf7p\xd6\xf2r\xc1+)\xa24\x93of\xe5?a;E\xdf~\xd4\x7f\x9a\x88\x9e\x03\x1a\xe5Xu\xba=A\xa7:\x02z:\xe4\xac\xa5\x16^\xdb`\xd7\x89\xe1.\x9b\xeb$\xb7\xc0\x8fFW\xb7HM\x11O\x81:\xcaaI\xc4\xac;\xe6Yu\xc7\x00#\x0d\xdb\xf1\x12\xfd\x7f\xc5A\xbc\xe0\x18\x1f\xe1\xd1OEI\x9d\xa5\x80\x88L \xf2\x9a\xb2\xb4\xcdwz\x90\xeb\xf4\x84\x06o\xf7\x1f\xc0\x17\xb3\x87L0\x1dzAZ\x8fH\xce:N\xc2\xf8\xbc|H#\x93\x95\xed\x86[\x0d\x02N\xea\xc5b\x8c\xb0\x9d\x89\x05\x99\xdd\xc6\xb8\xd3\xb5\x92\x8e\xb3\x9e{\x8e6G\x8f\x1e\x8a\x7f\xec\x1a\x03\xeb\xac;\xea\x9fu\xfb\xfd3\xe3\xa7\xc9\x91x\xb1\x88\xe7\xf6\"\xcd\x04\x0d\x83\x14\x05\xe9\xf9_\xfe\xd2\xf8\x7f\xb8\xd3\n\xe4\xb9\xde\xd1;\xc6 \xdauz\xd1\xaeC\x9e\xf7\xeb\xfd4Q\x86\xe5\x07;c\xdb\xf5\xd6\xc9\xb9\x17\xacP\xec\xa5\x93f\xd2\xe4\xd6\xd1\x93\"\xf3\x99\xe7e\xf4I\x11A\x1a\xba\xfeb\xb2ByN'\xff\xf91\xcf\x98\xee\xce5\xf9\x9cu\x846Ui$\x1a\xcd\xfd\xbb\xd0\xeb\x99\x18Ej_\x10d\xcc\x97\x9a\x1dx\xbe\x9d\xa23\xc1s\xa8/\x11\xa5\xc2\xd0\x89=\xc4IM\xdb\xec(\xd0\n\xa6\xa5~\xd4\xf4Ce\x17\x9d-2\xea\"\x83-\xea\xd5E=\xb6\xc8\xac\x8bL\xb6\xa8_\x17\xf5\xd9\"\xab.\xb2\xd8\xa2\xf1x\\\x17\x8e\xc7c\xa0\x98*\xe7\x00\xbe\xbdk\xa45\xfa\xc3\xfe\xc8\x1c\xf4\x87,\xaa\xf4\xf2\x1aY\xfe\xce\xc3\xbc\xd4\xb3q\x0d\xe3\xb3\x95\x8f\xda:HP\xc3(\xff\x8d\x86\x04(IQf\xa0h\xaf\x15\x11T\xdeM:!\xb3\xaf,\xc2Ej\xb05>\x10\xbf\x9e\x1b\xecB\xa2\xa4k6\xae \xda\x95\x01\xd6\x01c{G`\xcd#\xb0\xfd#\xb0\xd6\x11\xd8\x01\xa3\x17\xe8`\x7fA\x8f\xbd$\xd5b\x94 \xa1q\x08\xc4\x9a{\xf1\x1c\x99\xaf\xd6'94I\xf7\x18i\xe9>B\xc5\xd1*\xa1%\x8b\xed\xa5N\xf4sDm7u\x8f\xdbo\"9&(B\xb1\x9d\x86q\xce\x94\xe0at-A\xfb=\x7f\xd9\xf1\xfc\xe5\x81\x18\xd2\x9b\x9cG\xfe\xab\xeb%\x11\xb6\xf7\xe7s\x1c:\x0f\x02\x1d\x06\x0fI\xc7>\x94\xe7\xe1Mk\x88\\\x17\x9a\x02\xf8\x01k\"-\x95\xd5\x06\x0d\xb6\x0c\xa2\x9c\xf5\x0b\xa9\xc6\x03\xc7Y,\x9e_\xaamlG\x11\x8a\x05\n\xec\x0f\xf4hW\x1a\xf0\\\xef\xe4\x9b&\xa5\x0b\x9d\xeb\x9d^VH\xcd\xf0\xdecVRN\xcf\xf3p7\x01\x9f\xd2\x12\x84Qn\x1a-\xb5\x97Z\x82\x9cL\xeaCe4\x82ymH\xcdO\xb4\x05F;\xf2Y\xf6;%I\x18{\x993V\x99\x18\xaa\xcc\xf5\xe2\xa2\x9a2%:\xa98\x12%N\x88\xd7~0\x01\x9f\n\xc5\x7f\xba\xd8\xe4 \xe0F,\xeai\xfe\x8b\xe6\xa5\xc8O\xaaG\x95E\x0c=\x0b\x97\xb2\x7f\x8c\xea\x9f \x134\x8aB\xc4^\xc2E\x81\xbddR\x9b,\xef\xb9F\xb4\xeb$!\xf6\xdc\"\x1c\xb3\xc6g\x03\xebld\x9cu\xcd\x9f\x84*)\x9d\xb8\x99\xf5\xa9\x1b\x1e:\x1bj\x93\xca$\x8e\x18\xf5I'\xd4;V\xb4\x9b\xe4\xa5\x0b\xdb\xf7\xf0\xfe<\xb1\x83DKP\xec-&U\x1f\x9e\xf7\x0d\xcb\x10\xf2\xee\x06\xa1\xe6\xa2\xc4\xe9$\x91\x1d\x1cH\x03d\xfa>7j\xd5\x9f\x1b\x93\xe2?BV\x9dd\xb3\x84\x82\xa2\\\x85}^\xab\xfdD\xc2\xca\xb71u\xde\xa9_5t[\xcc\x04}]\x9f\xa8HK\xf4\xd1\xdc \x8eWVd\xc7\xb6\x8fR\x14\xff\xf1G6\x15\x90B\xf5\xa2]\xcd\xdf\x8av\x1d\x9db\xef\x87A\x98o\x10P\x82\x0ft]V\xdb\xc6C[\xad\x9a\x06\x1f\x0e\xfc\xca&\x9b\x04\xcch7\xa9\x0e>\x90\xfe`\xa9{\xb9\xc5\xdb\xc3\x82\xedq \xdc\xcd\xc8j(\xba\x02\xd1\x07\xfe\xaa\xeb:\xb3\x10\xe9\xb3\xc3a\xb3\x921\x99E\x8c1\xe6\x16;\x00\x04\x14\xad\xd3M\xedy\x1e8\xa0\xf8\xe9#\xceQ\x0eOV]\xfc\x9c\x8dC\x87\xc6\xdb\xfa\xfc\x90s\x04\xa3\xf3\x85\x17'\xa9\x16.\xf2\xf0\x83a\xdb\xd1;\xfa\x11\xbc\xbaebs\xd5/:9\xe7S\xa7\xf3*\xd7Y\xfc\"\xb3\xbe\xad\x999L\x1eSY\xfa\x8bj\xb5\xd9kV\x9b\x99\x9f\x00kd \x9b\xf3\xfb\x8f\x9a\xa5\xbf\x00\x13=U\x111\xb4.c{\x0f6\xab\xeb%Z\x18\xa1\xa0\x19n\x92\xb5\xef\xdb\xf1\xfe \x1a\xe13\xef\x16h\xa8fQL\x8a\x95'V\xd6\x1a\x95s\xd0\xc4\xf7\x82*\x82\xb5\xb2\xdf A\xd9\x1b\x83\xa3\x9f\xe0~c\x00\xcb\x7f\x83\xe980\xe6(\xd9\xcf\x8e\x01w\xb0=G\xf8\xe9\x1d\xef\xa4\xa9\xfe\xa8f\x95\x922C79,\x0fu\xbd\x1eG\xb9\xc30'\xcc\x1aJ\x02\x95\xfd\x91\x9a\xa1$\x9d[\xc0j\xd5g'J\x95Q\xadi\xeds4\xae\xe8C\x9a\x8f\xd2U\xe8\xca\xe6\xed\\\xcf\xf5\xd6\xe5H'f\xd0A\x16\xa8e\xe3\x05w\x03\x8c\x99\\L\xba\x0b\xe5\xd3ONC\xf5\x04\x9d\xed+\xf2v.\x16\x0b\xc5F\x86\xf9\xd2,3\x80\xe7\xb6\xf5\x97\x92$\xb2\xd3\xd5\x11\xd0?\xfepQ\x14#\xc7N\x11\xa5\xccAD\xf4\xacS{[n~\xbdq\x08\xbdc\x16\xab\x19\xfa\xb7'w\xd0\xc96\x8c]m\x1e#\xfb\xe1<\xffW\xb31\x96\x85c\xaa\xf1R\xb9\x19N\xec\xe8\x0f\x07\xa3h\xc7l\x81\xff\x07\x9a\xaf\x17\xed\xd8\xd3\x9d\xcal\xd8\xcd:,\xbc\xa6\xab\xd4p\xa6\x8b*r\xc8\x16\n\xb1\x17\xe5\xebR\x82\x81\xa9:\xe4<\xdfH\xf3?4\xe9\x90\xd1\xbeZp\xc7\xc8\xad\x18\xe0\xf7\xea\x00\x9f\x98\x95\x9e=\xb2\xe7\xa4\xab\xf6\xad\x19\x19\xcb\xb0m\xc4,5\xe0\xf8\xaab\x19\x85IJ\xbc\x8f\"3p\x7f\xec8c}\xc2\xae\x80\x87\xe6YO\xef\x9f\x19\xfd\xbe0\\\xa1\xb8\n\xa7\x1drN(\xea:\x81\x19(\xb3\n\x1f\xf5p\xf9h9\xd7\xac&\x17\x8em\x98\xbc&{V\xef\xcc\x18\x18g\xfd\x91\x82&\xd7j\x8a,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2\xdeE\x18\xa5\x88\x95kl\"\x13\xf1\x9a\xec\x8f\xcf\x06\xbd\xec\xff\xad\x8a,\xd8\xaa\xe92\xaf\xec$v\xa0\xd8j\x9cN\xd4\xa8B\x0dK\xc4:\xe6\xc0\xb0\x17\x0b^\x9d\xe3\xe1\x991\xb4\xcez\x96B\x17_\"5\xc7,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2>\xb2Sg\xc5\x88e\xe9\xc8tz\x9c\"G\xfaY\xaf7<3\xc6\n\x8a\xcc\xd9*\xa9\xb2\xa8\xec\x14n\xa0\xd4J\x8cNS\xa7J\x05\x19WF\xae\xb1n\xf4\x00\xb7\xcc\xa6\x1cc\xa4\xe6\x96\x19W%e\x16u\x9d\xc0\x0c\x94Y\x85\xcfi\xaaT\xe1\x1f\xe6\xb1^\xc2H\xa6\xbb\x96m\x0fym\x9agc\xfd\xcc\x18\x0c\xdb\x95Y\xf2U\xd2gQ\xdbi\xfc@\xc1\x15Y\x9d\xa6U\x95*\x88\xb0\xbe>\x15:\x98\xd0\xa2\xa2y\xf6\x07\xce\x14\x8d{\xc0\xab\xa5\xc4\x95(i\xb9\xa8\xefd\x96\x07Hzun\xa7\xe9ZR\x0b!\xa0\xb3B>J\xb8\xa4\x9c\x1aY\xa7[\xfe\xa0\xa5^\x8aQk\xaef\xe1\xe14kD\xb3\xd6*\x9eh^\x90Eq\xd4\xd6b\x1eI\xe7{T:\xb5oU%\xd8{M\n\xd2\x1d\xb9.b\xbc*\xb5\xe7\xa7\xad\x82\xa8\x9a\x8bex\xdd,b\xe3\x1b\xd8\xf3N\xedy\x07{l\x1a\x8d<\x89N\xf1b\x16,\xc7\xaf\xfe\x8a\xfa\xd8\\8\xb7bbv\xf2\x99\xcf\x96\xf5X[C\\\x85\x89\xecb\xdf\xbe`5\xa8WeF\xb4\xa3\xceK\x11)l\xc1\xfe\x1e\xbb\xbdW\x08Q\xfa\xf8\x81\xc9\x90\x81\xbeI\xae\xbe\xb5r\xaf\x1aLJhh\x97\xa28\xb0\xb1\xe6\x86N\"\x87\xe6^\xfdGy\x13\x8a\xb5+\xbd\xcdX\xbb\xa8U\xa5\xb5\x8f7\xa8\xa4)\xdc\x11\x12ik\x84h\xb2ALf\x14h\xd3\xf3\xb6 :\xa6\x01\x020%\x7f\xc4fR\x9f\x9e\xb3\x15\xaa\x939\x0fC\x13\xa3\x1dr\xd6)\xaa\xe0\xf50\x98\xbb\x81\xfc\x9d^\x0ci\xa7;O\x03r\x1c$\xc7\xe5>7.\xcfCw\xaf\xe5;\xb0u,r\xd2\x98\xf7?s \x82\x97\x9ez\x86\\/=P'\x16\xf4V\xfab#\x83T\x9a\"M'A\x189i\xb5\x9bkB\xb3W\x8c\x92(\x0c\x12\x94h^\x100f\x96\"\xb9\xee\xc8\x95[\x82\x9eXN\xa3\xa7u\xc6\xaa\x96,\xec\xf8#I\xedt\x9d\x80{\x0fOeJ<\\\x07n\xe8\xac}\x140\xb9]\xe3\xd8d\xf6X\xcf\xfeH\xaa\xce\xcf>1\x9f\x0f\xcd\xcf\x93UY\xef\xbe\x8e\xfc\xc9\xf36\xb78o\xf5?\xd1Zb<\xfd\xe3\x8f\xc2g\\o\xd3\xf5\xed\xf8\xc1\x0d\xb7\x01\xec]2\xca\x18\x05.\x8a\x91;+9\x80\x9b\x7fE\xa0\x93\xbf\xb9\xcd\xa1\x8f\xc75C-\x10\x9a\x91\xa7\x1c\xa8d\x9e\xd1\xef\xf7\xd1q\x9a\xe1\xf6\x9dT\x1aW\xa9\x85\x9dEThY\xc5t\xa2\x038\xad|g\xc9\xedg\x90\xdc>\x1c%\xf0h<_\xe8\xfd\x89\xe2\xbd'\x15\x89\x9a\xd6\x14\xa9\xf3\xe7h\x13}\xd8qd\xcc\x0d\xddy\x82d\xec\xce\x95\n1'T\xba:N\xd3\x8b\xc5BxbN\xb8\xd3\xaaeSW\xf3\x1b\x0e\xed|\xe4+\x0e\xdd\x93G!\xa9\x0ej6gl\x9b\xfd\xfa\x96\xb7TP\x15F1w\xa6\x0b\xee\xfb\xcc\x95\xef<\xa2)69\xb3\x9f\xca=\xce\xecwx\xe7\x93{\x98C\xab\xe0c\xb5\x8fV(H\n\xf1\xb3\xa0\x83z@\xfd\xa24\x06\xd5/\x89ae;\xd6\x8er\xcd\x15'\x18\x1at\xf3\x96\x86\x16\xban\xb1\xdc\xcf\xba\xddAr.y\xe5-W\xc5{\xc0\x9d\xd0\x05\xd6~2\xf4\xdf\xbb\xbe\xe7\xc4a\xfe\x80|iN\xe9!\xbb\xeaHN_g\xce\xe8\x0c\xd8\x13\xd6Y\x1f\xc8\xdcQ+\xd7y\x89\xf8\xc4S\xee)\xe5\xca\x138tJZj\xe8\x8ezc\x138\xed@n2\xf2\xc6&\x0d\xf8\xd1K=\x8c\xbd\xb5\xdf\xf9\x82\xe6g\xc4\x84/\xe9\x97L\xc4P\xb6\xd9\xd4\xeb\xc5\xed\x90\xdb\xdb+r \xc4+\x88\x88eT\x8f\\\xf3\x9bE6\x83\xdaG \x8ej\x83\xa7\x95\x98s\x1a\x96\xe0P\x13\x07\x93\x8bX'n\x9e\xbe^8i\xa7XQ\xba\xbf+\x1dLzr\x13\xbe\xe7\x92\xa7\x1a-\xb5\xe2\xb8\xb5U,,N\x88D[\x94T/`\xeat\x93a\xd6\xcb\xcf\xe6T\xa0\xe0\x85\xb9\xd5l\xd2\xf8p\xe5\xb3\xe5\x89J\xe2x\x7fq\xd1\"\x9bW\x9a1\xc1x\x8e\xa37\x91\xed\xbc_'\xa9\xb7\xd8W\xe3L\x8d}\xaa7\xfei\xce\xd0\xa2\xf4\xfaQ\xdbH.\xa6,3uD\x8f\xd1\x81\x1e\x03'\xf2,\xfdEs\x18\xb5\xce\xd9\x95\x8c\xa5\xa7O\xf3\x13\xa6g\xc2\x13\xa8T\xb1\xc0\x1fO\xe8\x11\x12-\xcc\xd1\"\x8c\x91 aI\xb5\x93\x8e\x9a\x88Dm5\xdb\x11G\xc8\xb5\xbcG\x01\x07r\xeb \xec<\x0e\xd3\xfc\x87\x8e\x91t\xbc`\xe1\x05^\x8a:\xd94n\xc7g\xc4%\xcf\xc9\xf1\x14\xcd{\x12\xb8\x04x\xb1\xf7i\x9d\x15\xff/\x0e\xbe\xe6\xf3b\x1aF\xe5\x9e\x039;\x0c\xd8{\xb1y\xa6\xa9\xf6\xf3S.\xa0\xff\xfb\xbf*\xf2\x07\xb4_\xc4\xb6\x8f\x92N\xd5\xb0C\x1a\x02\xf7\xa0\xf3R\xf4\xa3\x91\xae\xe3\x80t\x1a\xea\xf9\xbf\xff\xfd_\xcf\xccO\x14\xec\xe7&\xa5N\x93W\xc3\x9c\x02I7\xfb%\x0eq\xa2\xd9\x8e\x83\xa2\xb4\xda\xac)\x87dj\xf3g\x19#\x14<\x85g~\xf5\x83\xe0ED,\xdd!\xf2!K\xcc\xb1\x17<\xa0\xf8`\xe9/\x9a\x17\x86P\xba\x15 H1\xcbc\xb5\x9d\x95y8\xba\xab\xda\xdd \xcc\x93 u\xb8\xe1\x05\xdc\x92\xb2\x06\x9d\x81O\xcf3\xa7\x83\xce\xfaU\xb7\xba\x8b\xea\xeb\xdf$\xc7\xcf6(N\xbc0\xd0\xa2\xd8^\xfa\xf6\x81\xdc\xaa\xa8\x83K\xe4\xb3\xe9?\x9a\xea\x8f?|\x94$\xf6\x12==\x82:u\xde#\xe5&\x06\xfcn\x0f\xf9@\xd8\xcc\\\xa0E>q\xd8\xb4\xcb\xc5\xf4\x82\xc6\xfe\xdd\xf56\xc4\x8bE-\xcbY)\x9dmTb\xde\xc9\x171Mt\\m\x97\xba(\xfbS\x8b\xdb\x8fv\x9d~\x11\xf6\xb2\x8bN\xba\x9ay\x1a\xb4\x9d\xb5&\xaf'\xf5\xc8\x83\x9a\xec\x19A\x93?6h&\xfcH\xbc\x8c\xed\xbd|\x05\x9as\x89\xec\x18\x05\xe9s_e8a\n\x9d\xa7A\xf6WK|\xd1\xc5\xad~\xa9\x19\x8e\xee\x9f\xae\x97\xd8s\x8c\xdc\x7fU\xef\x9b\x08\xc2\xcc\xe5p\xb8En=[uM\x8e\x90y?\x00s\xb9\xc9b\x9aer\xd7\x9fx\x04\xdf&\xc7\x0e\x1c\x84\xd9Sa\x8b\x81> \x97_e\x01i\x12\xb9\n\x0b\x0e|u\xf6:]\x85\xb1\xf7\x88\xe8\xeb\xd8\x13z\xb4\xab\xb8T\x07=\xe5\xa7?y\xe1$\xf5\x16\x89\x86\x05\x0e\xed4\xff\xb6\x0cm>p/\x9e\xa1\xdf,\x0f\x0b\x0fc\xf8\xc8e\x86-w\xaa\x80\xfe\xd9\x1f\x8fu\xd4\x03\x92[T9\xc7Q\xcb\xb8D\xa7\x0d\x9f\xe4\x8aZ\xc0\xb8\xe8\xff\xc7\x0fN4\x83r\x1f\xbcxU\x15\xd7\xb13\xadv\xb8\x03\xe2\x0c\x07l\x0b\x18\xe4\xa4\xf9_F\xdd\x95Y\xec\"\xf3\x98\xb5\x83\xb9\x18P\x0e\x0e\xca\xa2\xd3\\3\x0f\x95s\xce}\x98\xb8\xf7Y\xf6B~w\x8ef\xcc\xa8V\x06-\x0f\x80\x13}E\xcf\xfe\xb4\x89-\xbc\xf5\x0bO*\x05\xeb\xa1\x9e\xfd\xa1X\xcf\xd7i\x1a\x06\xec\xdb}\xc2u\x9a\x0d.\xbc\x02\x0bx\xd7\x0b66\xf6\xdc\x03\xbfVIV\xf6\x03\xeat\xfbI\xc7\x98\xc0O\xdb\x0e\x03\xffu\x81\xb83Fe\xd0{\xc4\xc4\x9b\xa7\x18\xac\xea\x1e:\x7f\xbc\xa7\xcc\xd9\xca\x13\xbb\x8ba\xf6\xa7\xb3\x8e\xf1\x8f\xae\x9d\xda\xe7\x9eo/\xd1\xcbd\xb3\xfcy\xe7\xe3\xc9\xdcN\xd0\xa0\x7f\xf6\xdb\xaf7\xbdo\xfb\x8b\xfe\xfc\xcbn\xed<\xea\x9e\xfd\xeb\x9d\xee\\\x86\x9bw\xa6k\xba{\xcb\x9c\xed\xad\x8d\xe3;\x9b\xd9\xfdt;{5~t}\xc7\xbb\xfe\xf5[\xf4\xedw\xf7\xd5\xdc\\\x8e\xaf\xef\xa7\xcb\xd9\xab\xe9\xbe\xf8{\xfd\xf3\xf5\xab\xe9\xf2\xfar\xb7\xfd\xfa\xfb]x\xfd\xe6v|\xfd\xa0\xeff\xfb\xbe>\xfb\xb8\\\xde\xec\xfb\xfd\x9b\x8f\xf8\xfe\xdd\xfd\xb59\xfb\xa0\xafg\xf7_\xfb\xef\xee\x9d\xed\xfb\xfa\xe7\x07\xf3\xfd\xab\xe9\xf6\xfaU\x7f\x7f\xb3\xef\xefo\xee\x97\xeb\xd9\xbd\xb3\xcf0\xb3\x0f\xf9s\xeb\xe6\x1e'\xef>\xce\xd6\xef?N\xfb\xd7\x97\xb3\xf5\xfb\xcb\x9b\xfbw\x1fj|\x9aa\x9b\x9f\x1f\xcc\xf7\x1f\xa6\xdb\xf9+\xfd\xf1\xdd\xfd\xc3\xf6}\xfe\xdf\xe5\xe3\xd7}V\x9f\x93\xbe\xbb\xbf\xee\xdd\xd4?\x17u\xbc\xfb\x90\xd5\xf1\x90=\xdb\xe5|\xef\x97\xeb\x9b\xc7\xa9U\xfd\xfc\xfe\xa3\xd3\xbf\xbe\xbc\x98\xcd>N\x97\xb3\x8f\xaf\x93\xb2m\xe9l\xdf\xdf\xdd\\\xbe\x1e\\{\xa3\x9f\x7f+\xf4\xf4\xf3O\x9d<\xaf[\x9c\xfc*b\xceN\x10j1\x8a\x90\x9d\x92\xf3ZqS\x9f{#\x84<\xa3\xd9SK|f0\x95(\xa8Y\xb9G\x11\xb2\xe3,Z(F\xa4\xfcEm\xecC\xe6w\xc0\xdd\xff\xe9\xafq\xeaE\x18\xfd\xabJ\xfeZ\xd4\xc15\x0b\xf4V\x80\xd1\x9f\xde]\xe9\xbd\x07.\x89\xd8\xcbg\xd8\xa3\xee\x94 8\x19#\x9d\xbd\xe0\xa5\x94\xdd}\xea\x99\xa4\xfch\xe1?\xb3%\xf5/\xc8\xb7=\xfc\xaf3A\xe9\xc2\xc3HX\x18\xd9I\xb2\x0dcW\x08H\x90\x1d;+aq\xb6\x1e\xa3\x0b\xb3'v\x8clRE:\x91l\xa2\x1dh\xc4\x0c\x8f\xc4\x86\xa1;\xce\xfe\xb4\x0d\x8f\x8b\x85\x9a\x15\xff\xf3\xd5\xd5\xbct&\xdf\x8a\x91\x1b\xbb\xeaO\xd2V\xb4\x81\xea\xd6\xb4\x01\xcbV\xb5\xc1\xf2\xd6\x81\xa0\xaa\x95\x7f\xca0\x00d\x8ar6\x07C\x7fq6\xd6_\x00Y\xb6:\xa5k\xba?jF\xb4\xcbF]0\xe5K\x96\xff\xbb\xa7\xbf8\x1b\xb5\xf2\xeb\xc9\xd9U\xc5\xff6\xf5\x17g\x96\xfe\xe2l\xd8\xcaQ\xeb\xb7HX\x95\xff\xbb\xaf\xbf8\x1b\xb4\xf2kaWs#3k\xff\xab\xd1g\xd1(8\x1403\x07y|\xbc\xd9\x9a\xeaQ\xb7\xe8\xf9\xd5\x137l\x92\x01u\xcb\xbb(\x8e:-\x00\xccMUK\x8aw|\x1d\xf8\xd0\x17\xb8\x1fU\x0f\x11\xce:\xe6\x0f%\x13[r\xe4d\xc2\x9c\xd5\x88QN\"P\xc0\xb3\x9f\xd9rV\xc8y\x98\x87\xbb\x03\x19\xf5\x97+Y`mD\xeez\x08\x1eW*\xd5\xb3?peOx\xfd\x86\x80aD\x1dD\xef\xeb:\xf1\xd1\x8d\xc2\x0e\xe4y\xb9J\xf3,HU\x8bP\xba\xae\x16\x85\x98L\xaag\xff\xaa\x9b\xca/\xa5\xa5t?\xe7\x8a\xfa{\xb7xC\x8f\xf0\x8dJt.K#\xf7\xcb\xf27/Tn7 \xcf\x91\x8f\xca\xedn2\x0ef\xcf|\xd0[Q\x8c\xff\xa1Q\xf6G\xf4\xb2$=_\x02T i!\x97\x08\"\xde\xf1\x90\xf7\x83\xfa\xa7\x13U\xd7\xfe\xca_\x85WFKk;\xcf\x7fB.e0^Y\xf9\x1a\xf8/\xc0\"\xd8Y\xd9q\x82\xd2_\xd6\xe9B\x1b\x9d\xbd0_%\x9be'\xb7\xe0/?\x18\xfa\x0f\x9d\xc2\x82\xbf\xfc0\xfa\xa1\xb3\xf1\xd0\xf6\"\xdc\xfd\xf2\x83\xd9\x19v\x0c\xbd3\xfa\xa1\xb3\xf3q\x90\xfc\xf2\xc3*M\xa3\xf3\x97/\xb7\xdbmwkv\xc3x\xf9\xb2\xa7\xebzV\xc7\x0f/\xcc\xab\x17\xe6\xab\xc8NW\x9d\x85\x87\xf1/?\xbc\xe8\x99}\xa3?\xec_\xfd\x90?\xd0\xe25F\xbf\xfc\x806(\x08]\xf7\x87\x8e\xfb\xcb\x0f\xb3A\xd74\xcd\x8ea\xbd3;\x86\xd1\x1d\x0c\x86\xd8\xc8\x9eh\xd9\xbf\xfdN\xaf\xd3{W<\xce\xc40;\xa3\xac\xec\xf1\x87\x97EMY\xa5/\xcc\xab\xbf\xfc\xd4\xb1\xf4\x17\xcdZ\x93\xd6\xa8\xeb\xd98\\j\xeb\x1d\xf35\x9d \xf9\xa2U\xea\x1e\x8b^\x1dV\xaa^\x03,`\xd8\xe9f\xbaw\xe30\x02\xb8K\x19\x8an\xc1\x8c~\x12V\xe5\x87\xae\x8d\xa9z\xea-m\xae!\xd4\xfe63)\x16\xbf\x9a\xe5\xdcP\x7f\xf3\xc3\xe2\x86\xe2\x937\xf8\xf9\x05JuY\xafm\x81\"\xc8\x07\xe8\xd1\xaeS\x9c\x9c\x92\xbe\x04Z\x8ckUj\xb5\xb1&;\x06g\xf5\xc90\x82O*J\xd8\xd2\x17U\x80{6U\x9e\x9c\x9fk\x95V\xb8\xd2\xba\xe9K>#f\x81=h\x16\xd8O8\x9a\x04\xd5\xff\x94\xd7\xce\xd5\xb1J\xaf8/':*[:\x16\xe96'\x9d\xffQmM\xa7\xeb\xe00AZ\xfe\xf8\x88\x94\xfc\xf3e\x9bd\xc2\xad\xc8\x0f\x83\xf7\xd8c?\x03\xf2\x0d^\x8d\xe8\\\x1eN\xb4Ir\x82[\xf8\xa1+O\xef\x98\xfa\x91g\xea\x85\xb5t\xba\xc4}\xd9$\xb2\x99\x1b\x11<&u\xabc\xb9\xb6\x9e\xfd\x11\x9d\xcc\xe5(\xff\x9e\xba\xcc\x8dK\xf5w\x0f\xe5\xcc\xb44\\.1b\x8fh\xc1\x81\xd7@\x14x\x95\xa6\xccF\xa9N\xd7D\xbe\xc2\xebo\xb8\xe1]\xf8*`u\xe4\xa9\x08\xe8C\x0e$\x03~**\xcf\xf1\x8cu\x17-\x81\xf3=\xe5s\x8eN\x0bc/\xcf\xa6\xe9/\xb2(a\"*\x10\x1b\xaa\xeb\x84\x18\xdbQ\x82\\\xf1\xa9#\x81P\xf9c1\xe7\xf2\xac\x1et\x02\x8d\xdd\xc0\x12\\\xa1=*\xd2k\x0f\xe0\xaa`\xb0\xd7o\x82\xc1\xec\xe7:\x1a\xcc\x83\xea~\xa7\xd7'c\xbd,\x8c3\xf4\xce\xe0\xdd\xa8k\x8d;\xc3n\xdf\xe8\x18f\xd7\x18v\x8c\x1e\xd6\xfa]k\xd4\xe9w\xad\xf1;C\xef\x18#<\xd0\x06m\xf1\x1b\xb7W\x90\x05/\x90\x16\xef\xd7~\xa4\xa5a\xfe60`\xe1\";\x01\xc43\x10\xbfz\x8a:;\xa8u\xfb\\g\x03-\\\xdc\x87\x97\x1f\xe3$\xa0\xd5\xbb\xa5\x8aG+/H\x0f\xc4!\xbb\xfcG\xf6cc\x04T \xab\xd1\x1d!\x7f\xc2\x9f\xe3\xab\x86\xff\xae\x81\xfcN~\x14\x08\xf8\x1eo9<\xaa\x04od\xb85\x84\x1c\x9e\xb8D\x95\xad\xfb\x99\xc3F\xe5\xc9\xb2\x02\x9a\xd4W0ub\xf2\x97\xbdR\x9a\x97M\xc2\xbdz\xc1)1{\xeb\xfc\x0b\x0f`\x9a,\x96b\"7Qh\"\x7f\xef5\xcd\x9e \xd1\x9e\xe5-\x86'\x85Ap\xb2\xe8Y\xdf\x13.\x0f\"\x06:w\xbc\x86S\xd5\x13_\xa3\x0d\xf0;\xe9\xcd\xde\x1c\x9f\xe3\xde_\xce\x92[\xac\x07\x90\xddEo\xdd\xf6\x02\x0e\x0b05\xa8\x0d\x99\xf9\xeaQ\xda\x17*F\xc0e\x97\xfa\x82\xc3Q\x1f\x1c\x02\xde\xc6\xa7>\xd8\xb0\xdf\xeej\x91\xb5\xc5F\xc3\xe3\x98\xd1Q \xf1\xda\x90\xa3\xb8\xe4\xa7\x83\x18&\xad#\x12\xc7\xa6|\x90\x08\x0cLM\x0b\xa3\xfa\nVf\xab\xe6\x15;\x96B\x85\xf3pw\x90\x1e\xdai`T\xc2\x19\x8ca\x95\xcd\xcc\xbe\xcc\xa7\xae\xe4\x08\xb7\xe6Ni\xd5L\xba\xd0\x0b\x87,\xf1\xa4\xce\xf4Ty\xcf\xb4\xf4\xec\x0f\xc4\xac\xa9U\xdb\xdaq\xe0\x05K\x903\xb7|\xab^\xdcR\xddn\x17\x1fV\xe4_Q\x97\x8du\x7f\xcf\xfe)\xa7\xe5\xee<\xb6\x1d\xa4\xe5\xabZjF\x84\xceBEq\x18i\x81\xed\xb3\x87\xb8\xa9\x15I#\x1d@\x9c\xfbx\xa5\x18\xcb\x06\x10(X\xfb\xb2\x0b\x8f9(\x0b\xb1\xed\xf4 \x9e4\xba \x8a7(\x16\\\x1f{\xb6\x0bYd%\xa2\xebW\xf47f@\x06\x9dU\xbf[\x9d%\xaf\xee\x1e\x94\x01E\x8fUcE\x92\xdas\x8c:i\xf55\x16So\x01\xba\"\x9b\xd5\xd2eQ \xf8\x85\xdb u\x1f\x82H\x82i\xc4\x9dNy\xe5\xf0\xeb\xfaKWik\xa3\xdb\xe1^\x0eE\x1c|\x87I\xbbN\xe8G\xeb\xack\xadc\\\x0f\xcd\xfc\x91~\x10_\x1cC\x07\xf5E\x9c\xaa\x9d\x88&l\xce\xf5\x978\x9c\xdbX+\xea\xfa\x8f\xbe%*\x90\xb4\xd6S9\x00\x92g\x9c{\xd50$~=S\xf5\xaa/\xc0\xdd\xcb1C\xe0\xed\xb9\x03@/\xc3\xa12nZ\xb5>?\xaf~\xe0\x99\x94\xc3]\x9a\x9fLJ\xe3\xac?\xd4\xbcX\xafg?\xd6,`\xc0\xf8tu\"\xa5O\xbe\xe2\xab\xd8\x84\x82ZU\xde\xefN2IZ\x12dp\xa7|j\xda\xac\xec\\\x80B\xaa7\xb7)\xe9E\xa2\x91fl\xe9Q{\x0f\x03\xe2\xe6 \xf0V\x9f\x92m\xfe\xea\xc6\x9c\xed\x99\xact\xd5vz\x8cI%\x13\xd7b\xf2c\xf2\x8a\xeb\xb7\x9e\xda\xa9Bf\xae\xaa\xbe\x8c\x93\xb0/\x93\xe0\xce\x02\xc1\x1f\xd52\xf9\x17>Ix\xd2\x97\xcdJ\x86B\xfa?\xfe\xc8grI\xc4\xd1\xd7O\x99\x14\x99\n\xba1\xfa\xef\xb5\x17W\xaf\xc7\x11\x0d\x12\"*\xf86+\x1c\xe0i\x03\xfasCM\xca\xac\xe2\xf6\x97R\xf0\xf2e\xd0V1\n\x0e\xd8o\xae6\xb2\xa0]\x8a\x82\xc4\x0b\x99l2\x81\xf0\x14^\x9csLW\xe5?\xccBT&|m\xfe\x13+\x8d\x91+V\x81\x1f\xa5\xfb?66^\xa3?\xf8\xc4\xb5ID\x03\xe5\xda\x91\x8b\x0e\xb8\x17\x0cJ\xb9\x97\x93=\x15L\x0e\x8f\xe2\xd0\xad\xee%5\xc1<\xffjH\x8c\x80\xab\xee\xfc\xa6^\x1aFs\x9b\xfeb\x0dpE\xa7|s\x0eDZ\xfd\x17~\xcd`\x89\xb1O\xdb%{r\xbe\x07\x14\x98:U\x95\xe7\x06\xd9!U%WB\x8eb\xf9^3\xbbIR\x1c\xb9\x90\xaf_\xd8cD\x95\x84E\xca\x06\xd8\xcc\xe2#\xd1\xca\n\xf5+J\xd61\xae_\xd3\xf7d\xad\xe7m5\x9b\xd6\x9b\x93\xea \x01\xca/r\xa2\xc0e\xaevfO\xd8{\x9dy)\n\\\xf56\xb4\xcc$\xa5\x86\xf8seV\x7f\xb8\x80\xbeJV]h\x12\xdf*\x91\x8b\xd3-f!\xed\xf4\xb3WOw\xeb 8\x99\x0e\xa8\xe3p\xa76\xa9\xbcgG\xcf\x9aJ\x1d\x82\xf6\xd2<\xc0\x92\xbf\x19\xf2\x18\xa1\x8a\xa9\x9f\x93\xa3\xd7\xc8\xd1\x9b\x94\xff!\x94#t\x0b\xea\x04$\xb0\xee(\xcf\x0dR\xbf\x1f#<\xf5\xb4\xbc\xd5$\x89D\xc88\xae_\x1e\xf2\x90\x9c\xe1$\xae\xd5Q\x8b\xa8\xb2qG\x0e:^\xb0\x08\xeb;\x1d\xc0K(\xb3\xf2\xce*\xbf\xee\xd7\xf5m/`\x97urt\x87=\xc4\n\xc0\xb1w\xc6?\x8c\x80g\xc5z\x89\xe0w\xda+\x0f\x0b\x19\x0d\xa0\x02\xf6\xf3\xc8\xc5C\x13z\xd8\x87\x1eZ\xc7\xbf9\xa0\xa0,\xdenU\xad\x8f\x8b\xdbb\xea\xe9C\xdd:\xf2\xa4.\xf4\xee\xf7\\\x0e\x9b\xd5\xeeQ\x1b\x11-\xb6\x80\xae\xc9\x16\xb5\xd2\xef\xbc3\x16\x83\xb1\x03xay7\x9f\xdc\x9f\x02\x98u\xe7v\x824\xe0\xe80\xa9\x0b\x93:\xdbZ\xcf#G)Qh\xcc.\x9bF5\x07O{w/\xc1\x95\xff2\xaad\xc1`\xb5\x1c\xae(\xd6\xef\xe4\xcb\x9d{\xc5\xc0\xc2.\x8d\x93u\xc4\x1dd\xb5\x86\xcc\x01\xb7\xa1;\xea\x8f!\xf3\x92\x92\xe7\xaf\xdbST\x057T\xd9\xebt\xa5\xcd\xd3\xe0i\x01\x0e\xbd6\x7f\x8e\x17U\xc8\xa5,\xeeK\xbba\x80\x0e\xf2\x14rN\xf8\xa4\xa6)M\xd4\xcf\x1a\xbb\x912w\x88\xd7\x040)\xd0&4\xd1\x9a\x97\xe3\x01\x9c\xc0\xe4\xa1\xc1\xdeo(\xd2\x89-\xa7\xe6d\xdc\xe1M)a\x1dl8E3#v\xcd\xcbc\xffV\xb4\x13\x1d\xb7bH\xeb\x8f\x8e\xf3\xc1\xbe\x94\xae\xf5&\x9a\x84\xa0\x08\xa3\xd9\x1b\x90R)Q\x1c\x87q\xc2\x0e\xa8\xd4\x06\x18?Y=y0M\x9c0BIg\xd5{\xfa\x94\x9f\xb3\xd2\\\xb4\x90\x1f\x8b(\x1b\xaa1V\xe9\xc1\x0eXu$\xe2\x92\x9acc\xf4)b^\x80E>\xe5C\xd2\xea\xfaZ\xebd/\xf9&\x15-v\xf9;\xdb\nx\xd3\x0b$e\x8fl\x08\xdf=\x7f\x92]\x05U&\xc4\x8b\x9f\xc0M/\x86\xae\x882\x9f>P\x9e\xb4\x06S\x90\x8c\xd6a\x8f\xba\xac\xa44P+\xb99t\xc7\xb1\xf0\xb7\x03x9\xad\xbc\x971\x02\xeej\x8c~\x9a4\xaf\xc6\x02\xdfAV\x00\x0d\x9e\xd6hH\x0d\xfav\xe0\xff\xb4,\x94\x9d\xee\xf2kaq\xb7\no\x9aTZ\xe5\x1d\xf9J\xef\xff\xbc\xfc\xdb_;I\xb8\x8e\x1d4\xb3\xa3\xc8\x0b\x96\x9f\xee\xde\xfd\xd20\xea:I\xd2\xf5\xed\xe8o/\xff\x7f\x01\x00\x00\xff\xffPK\x07\x08_;\x94/\xe8Y\x00\x00\xa8X\x02\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xfd[\x97\xdc6\x96&\x0c\xdf\xfbW`t\xd1\x92\xbaS\x91>\xf6\xd7\xa3\x19\xf7\x1a9-We\x7f\xb6\x94oJ\xaaygj\xd5J#\x18\x88\x08t2\x880\x01\xe6\xa1\xdc\xfe\xef\xef\xc2\x81$\xc8\xc0\x89\x0c\xa4\x94.\xef}Q%g\x908l\xe2\xb8\x9f\xe7\x01\xf8-\xdelH\xfd\x12=\xfdr\xf1\xf9\xd3\xcfh\xb5f/?CHPQ\x92\x97\xa8\xc0\x95`\xe8l\x8bi\x85^\xa0\xcd\xe5\xc5\x19\xfa\x13\x16\xe4\x16\xdf\xa3\x15+\xf8g\x08\xad\x08/j\xba\x17\x94U/\xd1+t\xf9\xfa\xdd{D+A\xea5.\x08Z\xb3\x1aq\x81\x05A\xbf4\xa4\xa6\x84#\\\xad\x90\xa8q\xc5q!\xdf\x91I\xdc\x90\x9a\xab\xd7\xbfX|\xbe\xf8\xfc\xb3=\x16[.\xcbp\xaar?%{Vl\xf9\xe9\xcd\x17\xa7ES\xd7\xa4\x12W\xea/\xf2 \x846D\xe8\x7f \xc4\x9b\xdd\x0e\xd7\xf7/\xd1\x99~\xec\xb5|\n\xedkvCW\x04\x99w\x91z\x17\xb15\xe2{R\xd05%+DW\xa4\x12\xf2\x9f\xb5I\x89\xedI\x8de\xe9\xceW\xc3\xd4\xcc\xef5\xe1{Vq\xc2\xdb\xac\x11z\xfa\xe5\xe7\x9f?\xed\xff\xf3\xc0/\xbc)\n\xc2\xf9\xba)\xbb\xb7\x17\xd6\xd3\xbc\xd8\x92\x1d\xb6\xdfGH\xdc\xef\xc9K\xc4\x96\xffI\n1\xf8a_\xcb\x02\nj\xe7\xaf\xcd\xe1 \xdbt\x8a\\\xd4\xb4\xda\x1c\xfc\xb8f\xf5\x0e\x8b\x97\xf2\xe3\xfd\xeb\xd7\xdd\xaf+\xb2\xc6M)\xfc5\xabPS\x91\xbb=)\x04Y!R\xd7\xac\xee*\x98\xbf~*\xfdI\xf5*\xd8\x8a\xf8^\x90\xcdt\xd3}\xf4\xde,O|\xf5\xe5\xe8\xd7\x1d\xe1\x1co\xbcI:\xcb\xb0\"\x02\xd3\xf2\xa02\xed;\xb8\xae\xf1\xfd\xc1oT\x90\x9d\xe3\x95\x80\xdb\xb4\xf9\x9d\xd7\xbf~\xd5\xd4\xa5\xfb\xd7H\x1b\x91v\x83\xcb\xc6Q\x7fm\xd1\xb7{\xef.\xefE\xdbB\xf6\xb8\xc6;\"Hm\x95\xf9\x05\xaa\xf0N~\xa4q\xe7\x94F\xab\x97j@\xb1\xddV\x93_\x1aZ\x93\xd5K\xb4\xc6\xe5\xa0\xf19\n%\xf0f\x90\xd7\xffc\x12;\x18r\xf4\xbf\xfcc\x8d\x1a\x16\xce\xab5\xe3\xddHS7UE\xab\x8d\x1ei\xd4O\xe6\xa5\xc1\xb0\xf2z\xfc\xeb\xa3\x1dTl\x17\xd8\xf6)Zo\xdf\x1af\xb7@.p-\xae\x04\xdd\xe5h\xc4+,\xc8\x0b\x99\x96\xf3\xb9U\xa3\xbf\xf7\xec\x8c\"\xe3\xb9\xb6h*\xbe\xb1\xdd\xb6ANW\x1f\xd1G:\xc3\x825\x95\xa0\xd5F\xe7LV\xe1l\x97\x8c\x95\x04W\x91|CO\xb9\xaa\xbb%t\xb3\x15\x19*\xec\xf2\xf2\x1eoh\xe5i\x0c\xc1>\x11\xee\x11\x15\xb9\x13W\xd7\xe4\xde?\xd6\x07\xcb\xec\x18\x8b\x87f\x96\x81\xff\xf5\xc2S\xe56\x7fD9\x12[\x82\xe4?\x05CK\x82\xf6\x98s\xb2\x92\xffq\x817\xe4\x92\xfc\xd2\x10.\x16\xfawObjDW\xc9\xc8d\xa5\xcb\x08\xda1.\x10Y\xafiAI%\xca\xc3\x91\x06!\xc1\x04\xf6Lg\xc9\x0eh\xfc=\xc3\xb8\xe0\xdf}.P\xd9\xab\xfa\xab\x7fT\xcdnIj\xb9\xc0\xac oJ\xc1\x11\xbe\xc1\xb4\xc4\xcb\x92 \xba\xf6\xa4a\xbbHu\x85+\x95\xd8g\x9e\xc7o1G\x9c\x88\x13D\x05\xd7\xf3\xb1\xcc\xbf\xa9VdM+\xb2BLlI}K\xf9\xe17\x1dL \xce*\xe9\xa2\xe8\xc9D\xd7J~M\xb2[\x92\xd5J\xae\x95+\xbd\x0bh\xe7\x9bvA\xc4\xd1\xed\x96\xd4\xaeF$\xb6\xc4U\x8f\x82\xd5:\x8d\x95\x9c+k]\xf965\xb4\xc5\x1c5\xb2\xfd\xd8\x9eq\xba\xa3}\xe3\x1d\xdb\xf5\xe5\xfe\xd5\xe38e5\xd9\x13,W\xab\xdf\xe1\xba\xfbH\xdf\xa2/\xfeG\xe8\xa5\x81[T\xcb\xfc\x16}\xe9|\xe3\xb7\xee\x8f\xb0v\x1e\xfe\x06k\xe7\x8f\xbcv\xee'\x1d9\xf0\xfa\x9a\xe1hp7\xa396\x03KMDSW\xba\xe7\xdb\x9d`\xd1\x0d\xfdj\x84\xd8\xd0\xe1D\xab\xc6r\xd9\xb3\xc3\xc3\xf9\x02\xbd\xad\xca{\xc4*\"GL\xb6^s\"\x10\xab\xd1\xb0\xb8\x08\xf1-k\xca\x95\x1c\x898\x11\xf6\x1a\xf7\xe8\x9d\x00\xf2M\x83\x0e'\xea\xf2\xf9\xfc8\x1aNMe\x94+\xabfGjZ\xb4\x7f\x13[,P\x81+Y\x1f5\xca\xddnI\xd5:\xbe\xa9\xba c4\xe2\x9d\xab\xd4J\xc2y\xefB\x99V\x85\x1a.]}M&\xfas\x98\xfc\x03;w4\xc5:\xdc[\xd2\x1dM\xf5\xaez\xb6]u\xf8f^=w\xd9-X>\xad\x7f\x1d\xa4&\xdb\xe6\xd8\xd9kT\x92\xb5@d\xb7\x17\xf7\x88\ntK\xcb\xb2\x1d\xd2e\xcam\x07\xd1\x99H?/\xef\x11\xc1\xc5\x16\xe1\xfd\xfe\x13z\xd1^?\xf4\xef\x87|i\xbd!=\xaaZ(C\xa2n\x88\\\xdd Z\xadh\x81\x05\xd1\xcd\xb6\xf7\xa0z\xd04$;9Z\x15e\xb3\x1aM\xfaX\xe7\"\xbf\x8e\xeb\x8b\xa9\x11\xdbZ)\xadYm\xd5 \x8d\x06\x97\x0f\xe7|\xf4\xb5FU`\xb2\x13\xc8\xa9TO\xad\xaa{\xf5\xfdQv\xb9\x85\xe9MtS\xb1\x9a\x0c+\xd0\xf6\xc6a\x16\xda3\xc7~\xd8\xc3M\x89o\xbb\xe2\xf8\xb45\xb9!\xf5 \xd1\xd0g5O\x8f?)\xb5V\xa65q\xf7\x91A:2\x0f\xa2\x97i\xac^\x91z\xf1\xd9\xd01\xefhU\x90\x97\xa8`|\xc7\xf8\x0b\xbe\xbaF\x9f/\xbe\xfe\xea#\xf9)\x16\xc8\xa9\x8b/??\xbd\xf9\xe2TM\x93\x818\xce\x85\xfa]\xfa\xa1\xa6\xe4\x86\xe8qE\xbd\x8dvl\xd5\x94DO\xb4\xeeP\xce\xe5\xd9\x97\x9f_\xd8??\xdaX\x8e\xed\x06\xdb\x8e\xd8\x82\x92J\xf6\xd8+\xe5\xab\xd0.,\xb4\x1dO\xd9\xb2\xc7\xb7.\xc8^\x0e\xc9\x86\xad\x8b\xa6>e\xc1*\x033\xc8\xe1\xe6L\xb5UT0Zq\xf4?_\xbc\xf8wOj\xea\xcb\"\xc1\xaeI\xc5\x17\x81\xba\xdf\xec\xae\xb6\x8c]?\xde\xea\xbf\xfe\xcbOH\x96\xd0,=\x943\xe4\x00P\xe9*zRS\x15\xd7s\x9d\xf6\x98oCz\xc6h%\xa7?\x05\xec\xacI]\xb7+\xbf\xf7\xcauHlk\xd6l\xb6\x08\xa3\x9f\xf8\xe6\xb5\xdc\x9d\x92f\xf7\xfe\xce\x1f\n\xf0l\x1a\xa5\xfd\xa4\xba\xe3\xab\xd5\xaa\x96\x0b\xa161\x84\xf5\x1f\x0e\xbf\x92\xd9\xbf\x9b\x0e\xae\xb7\xc8\xb1\xee\xad-\xb4JFz\xa4\xd1\xa9\x0e\xf6\xcbz~\xd4\xff-?\xbd\x9a\xcb\xe4_\xd5\x0b\xa7\xa6\x1c\x97\x17g\xa3\xf4vDl\xd9\xaa/?\xec\x1e\x87\xbf\xc1\xee\xf1\x01v\x8f\xa9\xd3\xa7\x1a \xae\xf6\x98\xd6\x819Tu\xf6\x0b\xf9\x8c5\x8f\xd6dC\xb9 \xb5\x8a\x05\xca\xe1D%b^\x1dL\xa3\xfd\xeb\xe6\xd7G;\x8b\x1exc\xf0\xe3'hZ\xea;]\x99!\xf0\x88\x16b\xc6J\x93\x90\x9c)\xf5\x0cX\xb0J\xd4\xb8\x10\xba\xe6\xce\x97W\xa4b\xbb\xe3\xb3\xd6\xabH\xb4\xc4\x9c\xe8$\xdb-\x80^\xa7\xee\xf0~\xafZ\x92\xdb\x0dj\xc2{p\xf0\xa0+,\xdf\xb2[n\x9a\xb5,\x99B\xfd\xf4\xa4\xcb\x05\x16\x0dw\xbe\xde:\xf3\x8a\xddV\x01\x1c+\x12vn\x17'*\x91\xee\x8b\xbd~\xf3\xe1'\xf4\xecsD\xab\x1b\\\xd2\xd5 \xfa\xa2\x9d/\x0b\xb5E:A\xe3a\xb57r'H]\xe1\xb2M\xec\xf9\xfc\x8fI\xaa\xc6\xdb\x16\xe40\xf3\xf6\x7f\xbfy}y\xf5\xe1\xcd\xbb\x8b\xd7g\xe7?\x9c\xbf\xfe>\xfa\xecOo\xbf\xff\xf0\xe3\xeb\xe8c\xaf\xff\xdf\xf7\xaf/\xdf\xbc\xfa\xd1\xf3`;\xa7&\x17 \xbc\x04\xe8\xed\xad\xfa\nD\xc5y\xb00\xeb\x0b\xf5i\xf8\x96\xeeeG\xc2\xa3\xae\xe4\x8efks8\xc8Q\xe4n-\x83\xab\xf6{\x9fZ\x18\x80\xcc\xdc\xb5f\x1d\xe5\xa1\x1d\xfbr\xf0_fe$7\xd2\xb72\xad\xe5\xfd\xe1z \xeb\x06\x95\x90C\xfbM^\xa2\xf6_\x8e\xf4qe\xb5?\x7f\xd2)\xab\xe0n\x1e\x19:\x88\x0b\\\x15&\x88Q\x93\x82\xd5+\x8e\xb0\x9a\x8d\xbc\xe8+\xab8\xe5Bm|\xe5\x07\x94#\xd1\x8d\x1b'kw\x14j!\x8c\xabU\xb7\xb26\xa3\x83gu\x1aB\x05\x07U\xb5b!\xf6\nv\x10\"\x19,=\x1d\xeb\xe0\xf9[<@\x19\x01eLE\x19\xc3=T\xad/\xfb\x85^\xd2\xc6\xc9\x95\xc4\xa9\xb5\xd6\x94[\xa9\xd13\xb0\x97\x82\xbd\xd4G\xdfK\x01\x1279\xca\x0bH\x1c q\x80\xc4\xf5\x06H\x1c q\xffhH\xdc\xd3@,\xf1\xf4W\xf5\x1f\xbf=M\x08*Z1E\xec\x8e*\x9aW\xddA\xc5\xcf\xda\xda>\xfa\x98\xa2o\x855k\xeb\x96\x10\x19\x8c\xaevfG\x05\x031\xc1\xd4L\x8f\x88\x07\x06\xa3\x81\xf1X`J$\xf0\x888`J\x140\xb6)\xcc\x1b\x01L\x8b\xffE?\\(\xf6\x97\x1e\xf9K\x8a\xfb%E\xfd&\xc6\xfc\xd2\"~9\xe3}\x0f\x1f\xed{\xe8X_\xfeH_<\xce\x97)\xca\x97\x1e\xe3\x9b\x13\xe1\x9b\x12\x0c\xc9\x10\x0b\x81P\x08\x84B\x9c\xbf?\xa6P\xc8x\xb1\x10\xea#\xbak\xf5\xa2\xafv\xabN\xa8\xd8\x12\xcd\xaa\xd8\x92\xbb~!b-Q\x14\xeb\xe5\x80\xdbbz\xd1\xe0og\x9e%\x86\xf5\x10U!x\xb1\xb5\xfe\xd4/\x9b\xe5Z\xde\xfa\xc1\xe1\xb1\x08\xcaN\xabu\xa9rT\x1agZ\x17\x8d\xfc\xcfjs\xc5\x9b\xfd\xbe\xbc\xf7\xaf\x8d\xad\xe9\xe9\xac\x7f\xed\x9dzkDe\x1bo\xf3DK\xcc\xc1Bm>\xac}]W\x02V\xa1gtA\x16\x88\xdc\xc9}\xa4\x1c#\x9b\xea\x86p\xd1\xae\xba\xf9\xf3v\\\x19*\xa6\xc7e1\x0f=\xda\xb5\xb7\xcf\xe7\xb6\x99\xb5\x98\xf6#\xde\xb5[hM!\xa3\x95\xed\xb5\xc3w\xe7\xaf\xdf\xe7/\xa1u\x19g\xbc\x1a\x9f{\xbf'\x85\x9a\x06\xbb\x99\xd7t\xd4[*\xb6\x08\x0f\xd7\xe9j\xaaD+R\xd0\xdd \x0c\xd2\x9a.\xe6x'\xab\xed\xcd\xdb\xf7\xaf_\xa2\xf7[\xd2:|MI\xb9R\x81\xbcJ\x16\x02\xddni\xb1Et\xb7/\xc9\x8eTB7\xf5\xa2\xe1\x82\xed\x1c\xc9\xe9\xa9\xd0\x95\x11\xa7\x9b\n\x8b\xa6V|\x15\xdd\xaf\xe5Re\xc36l_3\xc1\x02\xb3\xba\x9b\x17v\xd0\x05\xe6\xcf\xee\x87=\xfb\xf2\xe2\x0c\xa6u\x98\xd6?\xfe\xb4>e\x1e\xd3\xca\xda\x1d\xad\xc4\x95\x12\xc6\xf3\x0e\xe4\xf6\xca\xe8\x7f\xa2\x95\xb8h\x9f\xb5\xe6\xaf\xf6\xe8\x0e\x99X'\xacG]\xaa\xba\xa6\xce\x99\xe80Y\xf3\xd4\xa3\x9d\x8a\xfcn\xb3->D\xbb\xd2i\xc7\x9e\xb1?\xf7r+k\x1dob\x9b\xc7\xcb\xbd\xfd~\xe6\xb6\x84a\xfb\xb0\xbd\xcc\x1f\xb7\x1dM\x1a\x06nm0p?\xe2\x81\xbb\xfb\x8f\xab\x1a\x0b\xe2\x1f\xb2\xcf\xdb\xe7.\xb1 \xa3\xddF\x97\x06\x92i\xb4\xdb\xb1v\xdc\xd9\x93\x9a\xf6]`0`\x0f\x125\x0f<\xda\xb1\xda\xe5)\xdb\x82\xdf\xca\xec'\x94\x7f\x96\xf7f%\xdb\xef\xd4\xf46\x04\xd1\xaa\xa8 \xe6\x84\xab\xb55\xad\x14\x9e\xac\xfd7H1!\xd04p\xed\xfcam\xf8\x85F\x8f\xc0\x00\xa7\x0d\x06\xb8G<\xc0\xcd\x92\x02\x9a^I\xd4\xa6\xbf[8ua\xae\xf0`\xf6\xfb\xd6\x06\x8e\x88\xa8\x072\xaa\xde\x0b\xed@\xafa\x83\xackE\xb5\x92\x9d\xbf`\xec\xe37r|3q\x1b$\x98J\xd7\xf1<\xb9\xdb\xb3\x8aT\x82\xe2\xf2\xaa\xc0e\x1b\xd9\xf1\xe4\xad\x93\xbe\xc15\xc5\xcb\x92(\xb6K\xfb\x12\xb1\x93\xeag\x8c@\x1d\xbc\xfd2\xe6\"i\xd8\xf7C\x82\x87P_\x15ZQU^\xd5S=\x0f{\x95\x0b\xd3\xb2\xaa\xc9\xaaQ'A\xa25.\x04;\x1cK\xb5\x15yr+Y\xb5A\x82\xd4\xbb\xc8\xa7@h\xa9O\xa6\xb9\x12\xb8\xb6\x06\x89C\x9b\x92\xbbI\x13\xe94=O\xef\xf0\xdd\x95jJU\xe1\x1d$\xa7e\xbb\xc3w\xa8M\xd1\xf1l\xbf\x8cYQ\x99\xe0\xb2\x896\xf5~}g\xbf\xd2u\x7f9-\xae\xf4\xf6\xee\xa1\x1a:\x17\xf8Z~\x9e\x9a\xdc\xe2z\xe5}l\x9a\xa3\x02b\x9b\x83\x1c\x87C`\xcd\xf6\xac>\xf4A 9\xfd\x80\x1e\xd2t\x18\x9ez\xe5\xb5\xd24\xdf\x01\x97%+\xd4\xe1E\x98\xb7%B\xa6D\xbe\x9e\xc3v\xbb\xa6\xa2\xe2\xfej\xcf\x98w\xd2\xce\xe8\xa8\xd3S\xd4\xc8\x15\xce\x15\xad\n9\xee\xc9)4\xe8\xac\xa8\x97\x0e\x9d\x15\xf2T\xd8\x8f\xa7\xa7\x07\xae\x14\xcclZ\xba\xe2\xb6\xb8\xb7\x86\x93B\xc9i\x7f\x1dV\xf8[\xf4%\xfak\xe0=\x84\x9e\xf5\xd1e\x1d\xb1\x96\x1f\xe09\xfa\x16=\xd9P\xb1m\x96\x8b\x82\xedN5\xfd\xe5\xb4gt\x9d\xca\xa7\xf8\xe2{R<9IM\xbejJ\xc5\xe5\x93\x89\x8f9^c\xfb\xdb\xff\x08\xd5v\xd8\x96\x1e\xa2\x0b \xc1B\x05p}\xb7\xaePH\x16\xca\xf1\xb2Q\xe9w\x83Vh\x05\x91\x89\x114I\xa0\xdf\x8f\xa6\xb8Z\xa1-.E\xbb\xef3\xb4m\xdf\x18xM\xf7{\xb2\xd2\x87\x18\x06\xa4\xeb\xee\xfd H\xd7a\xcb\xd7Zl\xbe\xfd\xddo\xf9T\xc4D?\xed\xdc\xf2\xa9\xdf\x1d\x90C TuaGa\x1e\xef\xa6\xce\xaa\xb9mA\x9fG\xf4j\xc3\x0d\xa1v]\x0cZ\x08\x03 )\xc3\x95\xcag\xd2p\xa5K\x06\xc3\x15\x0cW\x8e\xdf\x1f\xf3p5\x9c\xd8\xfd\xc3\xd6;\xfd\x9cB\x9a\xdc\x01\xab\x9e\xf0c\xd24\xa7y;G\xb4Ar\xe6\x81G;\xb0\xb9|d[\xb6\x01\xaew\xa1\xce\xaa\x17\xdf\xf4\xeb6\xb3_\xd8b\x8e\x96\x84\xa8]\xb1\xe2\x9eO\x1e\xe5\x06\x9f i\xb0s\xa5r:\xfc\x92\xa3G H\xaf\x0d\x86\xc0G2\x04>=%bKj\xb9f8%7;9\x02\x1ab\xf8\xe9\xaff\x0b\x1eR\x08\x19a\x83u\xc3\x8cu*\xd8\x90`>\x18\xee\xcc{\xe6\xa7G;\xd0-q\xe9\x0e\x05\x06?\xc2\xa0\xa8&\x89v\x1ci\xff\xb3e\xc9\xfe\xe5\xa7\x01eo\x1c\xb7\x97}\xebj\x8b\xf9\xd4\x0be\x06E\x90\x89\xc8\xf1q\xdb\x16bK\xee^\xe86\"G\x14\xf5\xb3l*\x1c\xadk\x15\x0d \xe8\xf5\xdbW\xe3\xa2Tl\xba'&\x8d\xf5\xccr\x93i;O9\xe2\xe4\x97\x86\xc8_\xf4\\0yT7--i<7#\xf8\xb0q\xb6\x06C\xb76\x18\xba\xc3\x83o\x9c\x1f\xa6\xed\x15\xfap\xf9\xe3iM8kj\xd9\xbc\xf1\xceHg\x9a\x8a\xfe\xd2\x90\xf2\xbe\xe7\xde\x9bU\xa5\x86\xcf\xbc \xcag8\xa9).\xe9\xdf\x89\x93j\xabM\x05&\x0bV\xa2e\xb3^\x93\xba\xfdh\x0b\xf4~Ky\x1bT\xdd5\\\x9dU)0\xad\x10\xf6\xe1%\x08\x95\x04\xf3@D\x98U\x04=9}\x82\x8a-\xaeq!H\xbdP\x94\xe2\x12s\x818\xd9\xecH/\x86\xfep\xf9\xe3S>f\xfa\x0fM\x15\xaa&\xfb\x9apR\x05r\x95\xc9\xad\x9b\xb2\xbcG\xbf4\xb8\xd4\x17\x8d)\xff\xb6\xbak\xe9\xc9g\x98#Z\xf9\x13\xf9Y\x16\xe5t\xc3\xd8\xa6$\x0b\xe5\xb3e\xb3^|o\xae\x95\xf9\xf9\xb9\xae\x89J\xb6?\x97\x81\xfa -\xa5\xfd\xc6\x15\xabh\x81K\xd5\x87\xfc9?#\x8b\xcd\xe2D\xbaV!VO\x16O\xe4\xa8U1!\x87E\xb2\x17d\xf5\xdc\xcd\xd9\xd6v^\xa1\xbdt6-\xc8 \x12\x04\xef8jx\x83\xa5;\xf65)\xd8nOU\xe0\xd3\x84p\x97\xb4\xc2\xb5\xeb\xd4\x1dm\xb8,\x95\xbf\xfa\xb5\xf7\xbd?k=\xd4!\xaat\xd6\x8d\x1cm+\x13&\xae\x04\xb9S\x9f\xfaUu\xbf@\x7ff\xb7\xe4\x86\xd4'\xd2\x11\xde\xc4>\\\xfe\xc8\x0d7G&\x158\x96\xd4\x8c\xa0\x04\xfd\xbc\x15b\xff\xf3\x89\xfe\x7f\xfe\xf3 b5\xaa\x98\xf9\xf5D\xb5\xc6\x02W\x88\xa9\xde)=\xe2O\x90\x08\xd4\xec\x11Vu\x0f\xe4K\xea\x1b%\x86\xc1\x02\xed\xf0\x9e\xeb\xa6\xa5J.Xw?\x86\x8a\xd5S\x99'G\xd8\x87\x15\xc9\x91\xb5,\xd9-\x7f\x19\xf8\xb6\xff\x8c\xce\xd7}\x8dd\xb307_\xad\xbaJ+\x8a>\xe7\xcdNn\x81\x02 \xbd\xaa\xd0\x9f\xdf\xbf\xbf@\x7fz\xfd\x1e\xb1\xaa\xed\x82\xba\x8f\xdd+\xae?\xf6\xbe\xfd\xd7q\xb7x\x7f\xbf'\x7f\xfb\xeb\xdf\xbc/\xa0\xf6\x10\xa3\xca\xb473\x8d\xa8/\xb4\xaf\xd9\xaa)\x88R'\xca)\xec\x90\xbc\xd0\xda?\xa3W\xfb}I\x0bl|YkH\xe2V\x03\x12\x05.\xe4\xd8\xc2\xd8u\xb3G\xad\xba\x7f\x89y\x00\x08a\x87B\xff\xa1}\xb8\xfcQ\x95q\x8boT\x13\xdcY}h\xa5;\x11n\xab$\xff}\xc3\xe8\n\xe1\xca\xdf\xb0\x90)\xa0\x1a>j\xb2f59i\x13\x90\xe9bA\x97\xb4\xa4\xe2\x1eU\x84\xac\xda\xd3;\xd4\x90W\xdf\x04!\x1dV\xc9a\xb6\xdah\x12\x84\xea\xb3\x0b\xf4\xec\x03'\xed%\x8f\xd2K\xb2y\xca1K\xb7O\\\xe1M\xa8\xf6\xcb\x9ah\x98\xd3$\xbcx\xeeoQo\x98 /\x91\x90s\xc8\xba\xa9\n\xdd\xc3d=\xcc\xd8e\xc2\x93\xe5\xbd}\\\x96\x7f\xb8\x94\xed\x91\xa9\xf3]\xfc\xa7d\x99\xb9l\xd9\xacQM\xe4LDN\x14\x8c\xa3\xcfD\x91\x99\xaase\xd4\xea\xae\xed\x97\xde\xa4\xd4\xe9=\xea\xf2\xb8[*\xb6\x81\xc9\xe5~O\x16\xba\xfd\xe3=\xe5\x8b\x82\xedB\xa3\xf1;\xd5S\xb9>\xb1K\x9fS3\x1a\xa5\xd03\xb3\xfa\xd4\x87\xac\xe8\xae\xed;\x00\x12\xa1\x1d\xddl\x05Z\x06\x06%}\x98\x0e\x15\x96:G\x87J\xcc\xb5\x9b\x05\xe2d\x87+A\x0b\xe7\xc1\xda\x0f\xb2\xff\x1c[\xea*\xe9'9\x1c-\x89>g\x86\xae\xac\x05\xce\xc1:\xc6L\xeex\xc9|\x07\x05\xca\x01\xbb\xbbyT}G\xc7s)%\xfb\xf9Uu\xffs\xbb\xa3\x1a\x9fr\xeb\\\xaf\xcaD\xce\xb5S\xbf\x7f\xfd\xee\xec\xf2\xfc\xe2\xfd\xdb\xcb\xe7\xbeI\x02\x99luC\x0dg\xac\xb3\x0e\xbb\xf3\xeb\x88;\xff\x14b\xaeHW\xbe\xfc\x16\xfd\xd3~\xb9\xf8\x81\xb1_\x17\x8b\xc5o\xfe\x87qu\x7f\"\x97\xa1\xf2\x8d\xbd^D\xfd\x84k\xbe\xc5\xa5tr\xb8\"!\x17\x8eK\x11(\x02]\x8f\n\xf0\xa1\xda\xf5EP\x05T\x1dD=\xf5\xdf\xbeE\x15-\xc3\xb7\xee\x05\xcb\xe5i\xc9\xef\x15\xbb\xb8\xb8\xee\xc6\xe2v\xa3\x81\x96\xf7\xfd\xb2\xab\x9d=\xd4\xb1pK\xf7\xaa\xb7=-\xae\xe1\x9e5\xcbS\xc7\x92\xeaT\xee\xdf\x17\xea\x07\xb9\\}\x8a\xb05\xdb\xc9\x99P\xdde\xee\x99\x1bt\x0bqg\xd6M-Uy\xdf\xee+\x0f\x82\x05\xdd2\x19\xe1\xb5 .\xacG\x9b\x8ac<=}\xea\xce\xca\xcc\x89m\x91\xd5n\x17\x11\xd3\xa2\x9f\xac\x19[,q\xad*{wz\xbf\xf8\xfb\x13\xedE\xb5\xf7r\xa6\xe7\xdf\x8a\xaa\xa2>\x91i\xc8\xe9\xd0\xf9\xc8\x7f\xbc{\xfb\xc6\xfd\xcb\xb7\xdf~\xfb\xad\xbf\x0d\xc8\xf7\xfa\x98\x8b^G29\x1c\x98E\x90\xde\xd75\x9c\xb4q\xd5MS\xe2\xda\x9d\xdea2\xf2\x95\x15\xe9\x97-'\xfdm\x97\xa6w\x9f\xe8\xe5\xb8+9\xec\x89\xdeXK\n-Z\xff\xf9\x7fI\xd7\xfdl\x82 \xdd\xb2\xcd\xfe8\xee\x0eb\x86\x9f\x97\x81\x0d\x08.\xae\xe5\x18\xd4o\x88\xd7\xb4$\xfey\xa3\x1d\xb3.H\xcdY\x15\xec\xb6&\x12\xb7\xa65\x17W\xea\x0bG.\xca4/\xc8F\xd9>\xef\xbe&S\x99o\x06C(X\xaa'\xca\x97O^\xa2'\xae^;t\xc3B\xd72\xc8\x96|\xa2\xea\xf7\x06\xefd\x9a\xffSW\xe1\xdf\x83/\xc8\xfa\x8d\x9e\x9fZ\xc9\xf3\xb5\xd9p\x0d\xdb\x9an\x0d\x94\xa3[R\x96/\xae+v\xdb\xd2\x029\xc2\xfe\xb3\x0dB\x9dk\xd8\xe4O\xda\xc3\x91\x06\xfd@\x0f\x9eVqd\x03\xf6l\xae\xb0n\xd2\xee\xcc~V\x9d\xb1m\xe7[V\xae\xecS\x19tW\xa6U\xd7?\x0c\x89\xd3\x9d\x94\xee2\xee|T\x11\x16\xdd\xe4\xfcL\x8ek\xad\x0b\x0fBCm\xc4\xf4o\x7f\xfd\xdb\xf3@G\xca\xd1\xe6\x86\x19\x86\x9b\x9dr\x95L\xf2\x8b\xc5\x97_|\xc9\x9f\x04\x9a\x90\xfe\xff\xd0\xb9:-Y\xb9\x7fk\xb0\x8bl\x8f\xc61\xd8\x13i\x11\xd2-\xb9\xeb~\x13\xcc:\x1d\xdd\xc0_r\xc2\xb0\x07\xa6\x07:\n\xc7\x81\x01\x1b\x98\x92'\x81\xc0\x96\x9e\xfb;\x03o\xb6x\xf0\x08\xf2\xc4\xc8\x05z\xaay\x11#N\xabM\xd9W\xe1\xb5\xd8\xbe\n \xc8&'\xf3\x13 \xc8n\x049\x01 5\x8e\x9c\x02\x90\x0e}\xdf\x1a\x00\xa4\xda\x00 \x05\x80\xb47\x00H\x01 \xed\x0d\x00R\x01\x00\xa9\xdb\x00 m\x0d\x00R\x00H\x01 M\\%\x01@\xda\x19\x00\xa4\xb6\x01@\n\x00\xa9\xc3\x00 u>\x03\x00)\x00\xa4\x1e\x03\x80\x14\x00R\x00H\x01 \xb5,\x07X\x05\x00\xa92\x00H\x01 \x9d\x0e\x90\xb6 \xd8\xc7\x01H]\xf8('Wk\x128\xa2\xf7\xdfmP\x94\x93\x1f\xc8\x18\x14\xe5\x04\xadI\xb71\xddcuv\xc7\xb2d\xc5\xf5\xf8\xcc^\xf5\xc7\x93\xbeeP\xa5\x8b\xa4;Zbu\x94\xd1\x9a\x90\x1d\xae\xaf\x890Z\xf8\xa7\xdcL\xe2'h\xd9\x08\x84K\xceP\xb1%\xc55G%\xabV\xd6\xb1{[\\\xaf\xd6\xac\xbe6W\xa5y\x80VUz\xf3\xd3#\x06Z\xed/b\x9b7\x1e3(\xa7\xa9f\x07\x83\xea\xbb \xf5\xc7z}~\xf1\xc57\xdf\xfc\xf7\xee\xa3\x01\xbe \xf8&\xe0\x9b\xda\x00\xdf\x04|\xb37\xc07\x05\xe0\x9bn\x03|\xb35\xc07\x01\xdf\x04|3q\x95\x04\xf8fg\x80o\xda\x06\xf8&\xe0\x9b\x0e\x03|\xd3\xf9\x0c\xe0\x9b\x80oz\x0c\xf0M\xc07\x01\xdf\x04|\xd3\xb2\x1cX\x13\xe0\x9b\xca\x00\xdf\xfcG\xc17'\xc8'\x0b\xb6J\xd4N\x9e\xb1\x95_-Y\x96\xe6\x8e{[ \x19\xa7]\xfe\x89\xda\x07\xaf\xf4\xafyK(\xa8(eG\x1cd1*\xa1)\xd6\xf0\xbb&\x1c\xb9;h\x8dI(\xb2+\x95\xd3a\xa3\x1e=\x02\xa7\xf1j\x03t\x19\xd0\xe5\xde\x00]\x06t\xb97@\x97\x05\xa0\xcbn\x03t\xb95@\x97\x01]\x06t9q\x95\x04\xe8rg\x80.\xdb\x06\xe82\xa0\xcb\x0e\x03t\xd9\xf9\x0c\xa0\xcb\x80.{\x0c\xd0e@\x97\x01]\x06t\xd9\xb2\x1cH\x1f\xa0\xcb\xca\x00]\x06ty:\xba\xfcq\xaf+=\xc4\x97 \x17t\x87\x05\xb9\xda`\xee\x87\x94_\x9b\xa7\xfe\x84y\x1fi\xd0U\xfc\x99\x88\xed\x15\xe9\x7f\xff\x19\xd5\xfb\x02\xe1=5i\x0c\xb0d+\x9d\xcf\xdaZ=R$\xb9\xf3\x87m\xc1\x88H\x1a*\xaa\x9a\x85q\xc3J\xe6\xf2\x99\xe3!\xcbO\x1d\xc6\xa9B\xcb\x84\x0f\xbe\xc5\x01\xc2\x080\xe5\xf07\x80)\xd3\xc2\\\x08`J\x80)\xbdO\x02L\xa9\x0c`\xcaC\x03\x98\x12`J\x9f\x01L 0\xa52\x80)\x01\xa6\x04\x98\x12`Jm\x00S\x02L 0%\xc0\x94>\x03\x98\x12`J\x80)\x01\xa6\xb4,\x07d\x040\xa52\x80)\xff\x100e\xbd\xf1b\x94\\\xf6\xc4\xff\x94\x9d]o\x8b\xdb\x99L\xfd\xc9\x80wc,\xf2\x17\x03 \xb6\xd6\x83\x91k\\\xf2\x08\x1a\x89|;\xf0\xb6\xb4\x1b\xcc\xaf\n\xbc\xf7\x15X\x8f\xc9z\xce\xde`\x8e\n\xbc7Q\xa8\x86\x93\xd5\x83\x15u\x80\xe3M@T\xc5\xf6\xaa\xc0e\x19@S\xc5\xf6\x0c\x97\xa5\x13I\x95o\x86!T\xfd\xf2gm\xe5\x1e)|\xba\xc5|; u\xeb\xb0Og\x84\xa3\x03\xd2E\x8d+\x8e\xd5n]\xe5!\x87\x8f-\xb93\x1f\xcd@F\xea\x87\x15]\xafI\xed\n\x0e\xa8\x93\x8c=\xd1\xfb\xf7\xa4Z\xe9\xef\x89\xf8\x16\x7f\xf9\xcd\xbf\xea\xc4Z\x9c\xc6\xca]\x9d\x8a\xbc@\xef\x883\x1d\x15I{yz\xba\xa1b\xdb,\xd5\xb0 \xba\xa4\xed\x7fR\xce\x1b\xc2O\xff\xf5\x9b\xaf\xfe\xbb\x07|\xa8\xc9\x9a\xd4\xa4*\xc6\xe3b\xc96\x8f\x04\xa4\xf4\xca\xad\xb5%\x04\xe8Z\xc9\xf0PW-\x17F5.\x84\x9e\xa4\xfah\x8c\x9a*oH\xe5F\x01\x05\xdb\xd3\"R\x18\xb7\x7f\xb4y\xbd\xa4-\xa16\x83\x1eWR\xae!EU\xac\xc1\xae\xc5\xae\xa3{\xbd\xb7\xc2\x02\x1f\xe1\xd6\x84\xb8\xa7\xf1\xfcS\xde\xec\xf7%=,\xd7I\x87\xd5\xbd\xfa\xee\xfc\x05\xa9\n\xb6\"\xab\xa7\xce\xc4\xd4e\xcb^E\xb9\xb6 \x85\xf6\xf0(\xb4\x99b\xebK\x9fieV\x18\xe3>z\xab \xd5\xa2lV\x1e\xa0B\xdc]\xb9G*\xf3s\xbc\xb4\xa6 \x9eQ\xc2\x97)\xadV\xe4\xee\x88\\\xa7\xf8H\xe5\xe5\x1a\xc1\xccvP\xf90\xf0A\xf3;\xe8\xd8\xaf\xf6\xc9\xbcW\xb2M\xdck5\xd9\xb1\x1b\xb2\n\x97o\xc9XI\xb0\x0fm\xea\xfam\xf0\xa9\x14`\x00\x99]\xf3\xa5.\x94\xd9\x7fR\xaeHd\x88\xae5>&\xebu\xab\xf8D7\xa4\x96#\xec\xaa\xf1#\x16\na,\xb68\xc4U\xa8 \xab7\xb8\xa2\\\xad[\x16\xe8\xff\xb0F\x03\xb9{|\x8f\xb0\x10\xa4\xea\xd7\xfb\x94\xb7\xa5\xf2SI\xeeY\x83jR\x10z\xa3>\x02\xf7\xe7,\xb65k6[\xb5/)\x05\xa9\xf5zp.\xae\xf2#\xdb\xd8W\"\xe0\xaa\x8f4\xb5\xd8hI\xfa\x83U\xe4\xe3r\xaer\xa6\xd5\x12\xb8p7\xb6\xbak!?\x86\x9a\xdd\x14\"\xcb\xcdT\xa7\xc1\xe5~\x0e4\xc3\xf4\x8fo\xff\x84\xd8^\x9dQ\x83+wo\xe1\x82\xd5du\xaa\x1a\xb2z\xd1\x9d\xadL\xadb+\x07\x04\x15w\x94\xfc$\xa30\xc6x\x9df\xc2c\xda\x7f/z\xe79Rk\x17{\xaer\xca\x9c\xc6%\xac\x89\x98\xb8\xd4\x0c\xce\x8b\xa1u\xa8\xbe\xda^v\x10,\xb0^H\x92\x9b]\x07 \xa1g\x1a\xe5G\xac\xd6Ot\xb3\xaa'f\xa4;\x9c\xab\xa2\xfa\xa3\x8ec\xbb7\xbb\xab\xe9\xa4\xba\xaeJ7;C\xf9k\xe9\xa9\x86\xffg\xea\xb4\xbcWO\xdc\x91\xa2q\xcc]r\x93&\xf7[\x13\xb3NcE\xaam\x1d\xab\x14I\xa4m\xda\xbeit\xd0\x1c\x7f\xe2\x9b\xb6\xf7\xbd\xbf;\xe0J\xcad~\xe2\x9b\xd3\xfe\x91\xe1\x191p\xbe\x0b\x10'\x13\x97\xf1@\x9c\x04\xe2\xa41 N\x02q\x12\x88\x93@\x9c\x04\xe2$\x10'\x818\x99\xbaJ\x02\xe2dg@\x9c\xb4\x0d\x88\x93@\x9ct\x18\x10'\x9d\xcf\x00q\x12\x88\x93\x1e\x03\xe2$\x10'\x818 \xc4I\xcbr\x90\xd8\x808\xa9\x0c\x88\x93@\x9c\x04\xe2\xa4\xb2HQg\x12'\xd5g \x1cBs\xa1~\xef.4Q`r\xf7%\xe5\x14t'SB;\xb6j\xca.\x1e0\xe4N\xde\xect\"\x9f\xb55|\xa4\xecI\xdb\x15\xb6\x0d\n\xa3\x1f2X\xa7\x1e\x05\xbb\xea[\x9e9\x9c\x0f\xbd\x05BQ\\\x8d\xdc\xec\xaeV\xa4b;?\xe8\x16\x8c(\xa5\x84dT.H\xe5bs/\xd4\x1c\xcf\xaeI\xa5\x7f\xa2\x95\x1erU\x88L0T7\xbe\x08\xa4|\xf1\xf5_~B\\`\xe1\x8d\xb5)\xb0Y\x07\xf6]\x0b\x08R\xe1eI\xae\x8a\x9a`\xe1\x89\xa7\x89(\xaf'\x85\xd5\x13\"\x1f\xa0\xae H\x17\x04 \xb6\xd9\x94\x84\xeb\xaa\xd9u0\xf8\xa3\x01[\xdcI\xdd\xec\x16g:\x996\x8c\x13\xa8xGh\x1e\xdb\xc7\xad\xb6\xc2\xb0\x92*\xad\xaa\xd7\x13\xa5\xc7\x16\xaa\xf2\x9d\xa8\xf1\x15\xa1\xfb\x00\xb2\x1cb\x90\x06\xf9\xa3\xd1\x1e2\x80\xe5=\xe44\xe3-UP$\x0b: \x93\xbb\xfd\x8a\xc9\xefs}\x82>G\xdf\"\\\xd6\x04\xafB\x88SWx_\xecb\x85\xd9\x95L0g\xe5\xdeo\xc9\xf7\xaf\xde\xa2-\xaeW/d\xda\xfejDKeB\xd2\xb1r\x85y\x8fiC\nJ\xfc:\xff{K\x0c\xa0\xa3\xf9o]\xdc\\\x05\xb5\xd9~\xcf\xda\x1d\xf1\xf7\xaf\xde\x86>M\xeb\x1e\xdf\x10F\xf7_|\xf3y\xce\xef\x12\xac\xd6\xeb\xf3\x8b/\xbe\xf9|\xac1\xf9\x13\xe6h_\xd3\x82\xb48` \xd8\x86\x9e9D\x0c-7\xefT\x0e-\xadx\xe1\x8bo>\x7fn2\x0cu\x83\x1f&\xb4\x18\xe3\xad\x10\xf78\xbf\xb3\xfe\xfc\x83\xe6*>\xab\x08Y\x19\xb8qK\xf0\x8a\xd4:\xc8T\x94T31u\xd0)\x90\xe0\xc6\xf8\xb9G\\\xbd=V\xd5\xf4\x9b\x9c\xedB\xd5\xe6\x9b\xef\x94\xaf[\xa7\x872\xff\xb7\xec\x99\xff[,\xdf\xe5\xfd\xdfq%h\xb3\xcb\x99u\xf0\x13\x7f\xd7\xe6\x988\x08#\xef\x14\x85\xec\xf2\xfb\xbej\xc1*.\xe4#\x15\xdb\x97\xe4\xa3\xd5\xf2l\x90mbU\x03\xe9\xe1B\xd0\x1b,\xfc\xadw\xaf\xe6\xeaeSor\xd6\xf1\xa2K\xd5Q\x05\xb5\x0d\xc7|TW_\x01\xa9|f\xd9\x949\x8b\x17\xfc\x04\xe7&\xc3D\xe7\x87\xdbY[z_\xedv\x0d\xad\xaf6%.(\xa9?Z\x0d_\xd3\xfd\x8b/\xbf\xfa\xb7\xaf\xd1\xb3%\xdb-\xd1\x8a\x94\xf8\xfey\xa4\xba\xa16f\x1c\x11mkKR\x97\xb4\xfah\xd5\xfcNe\xe7\xa8\xd7\xb73>\xa4.\xbb\xaff%\xabV\xec\xe3\xd5\xecG\x95]\xa6\x9a\xe9\xb2\xfbj\x86\xeb\x9a\xdd~\x92\x16\xfa\xf5W_\x7f\x13k\xa1\xdffo\xa3;RoH\xf6\x15xl\xf1\xf2\xe2\xab\x7f\xfd\xff}\x83\x9e\xbd\xdf\x92\x9fd\xfeY\xaaJ+]\x19\xb9\xa5*\x08Y\xd1j\xc3\xdd\xb5N\x0b\xea\x9c\xc9=\xe0\x99c\x7f\xd8\x8ag\xec\x07\"\xdb@\x84\x1a.\x97V\xff\xccW\xd7\x8b\xf3J\xb4|\x16\xcf\xc3\xb4\xd2\xdb/\xb6F\xff\xbc\xa4\x1b\xf9\x86+\xc8\xa3\x08\x88WM\xb5\xaf\x99P<\xff+q\x17\x8c\x01\x1c\x1b\xf5Hs\xdc+Y,d\x15\xcbVF\xf4[\x7f\xbaF5\xd9\x97\xf8\xfeE\xf7\xa0'\xc1gt!\xb7:\x95Y(\"\x9f\xdb8\xddTd\xf5|\x98]\x81+\x85p(\x95\x08Y\xb5\x84S\x1d\x8c\xd9\xe1bK+\x07\x19\xab\x9d\xd7\xed\x90e\x1f\x1e8\x88Y\x0e\xde\x0f{I\xc5\x93u\xbaN\xf9\xc7\xe1\x9d\xc0*\xce-[\x8f\x8a\x17\x8f\x92s\xc5MA\x1b2\xfc\x0d\xb4!\xb1F\xd9\x1bhC@\x1b\xe26\xd0\x86(\x03m\xc8\xa1\x816\x04\xb4!>\x03m\x08hC\x94\x816\x04\xb4!\xa0\x0d\x01m\x886\xd0\x86\x806\x04\xb4!\xa0\x0d\xf1\x19hC@\x1b\x02\xda\x10\xd0\x86X\x96\x83\xa7\x0f\xda\x10e\xa0\x0d\xf9G\xd1\x86\xf8\xe4\nO\x0f\xf5\n\\\xb0\x1ao\xc8\xe9\xaf\xe6\xd4\xda\xdfN\x7f\xbd&\xf7\xbf\x19\xf5\x80K\xc1\xf0N\xbf1\x900,q\x89\xabB\xed\xedpY\xa2\x82\xc91K\xba\x1a#N\xabM\xd9]\x11\xecT4\x98\x14\xcdO\x8fV\xcf\xe0 5\x04\x83\x0c\xf1\x1d\xfa5\xb9\x1f@}\xe6\x83\x18,ROY\xfa\xecA\xceYA\xd5\x9eSm\xbd\xdd\xddaCoH%\x13\x1d\xce\x12 \xf0\xa3\xf9\n\x1d\xfeH}\xd0\xa3\xfc\xabz\xe3t\xf8\xe1Z\xbb\xbc8\x1b\xf7\x1d\xbd\x92\x010\x12\xc0H\x00#\xb5\x01\x18 `do\x00F\n\x00#\xdd\x06`dk\x00F\x02\x18 `d\xe2* \xc0\xc8\xce\x00\x8c\xb4\x0d\xc0H\x00#\x1d\x06`\xa4\xf3\x19\x00#\x01\x8c\xf4\x18\x80\x91\x00F\x02\x18 `\xa4e9\x80!\x00#\x95\x01\x18\xf9\x8f\x02F\x06\x0f\xaa\xd3\xa0\xa3\x95Fh\x17y\xda]\xad\xd9^\xfd\xd4\xaa.\xb7\xe4\xae\xfbM0-\x8eC\x07h\xda \xb1\xf50^F\xd5Yd\x83\x01\xb3?:N\xd4M\xf4\xe4\xb8\xb6J\xd7\xe4\xdeW\x9d1\xd4'\xff\xbb\xdd\x80z\xcayd\xb1\xd2\xcf\xad\x135.\x06'<\xb8\xa0_\xeb{\xbc\x97\xcf\xeb\xd39\xc67\x00\xaf\xc8\xb2\xd9\\\x89\xee\x81\xef\xee\xdf\xa8\xdb4\x7f\x1e\\\xee\xe6x\xec\xcf\x98o\x83\xd7\x06\xf7\x99\x9a_\x1f-V\xec\xbe\xf24\x18\x02\xf2\x06\x7f\x8c\xecT}\xbb\xde\x03\x07:Q\xeb\x8b\x1c@\xa5\x80\xb7\x0e\x7f\x03\xbc5-^\x87\x00o\x05\xbc\xd5\xfb$\xe0\xad\xca\x00o=4\xc0[\x01o\xf5\x19\xe0\xad\x80\xb7*\x03\xbc\x15\xf0V\xc0[\x01o\xd5\x06x+\xe0\xad\x80\xb7\x02\xde\xea3\xc0[\x01o\x05\xbc\x15\xf0V\xcbr`_\x80\xb7*\x03\xbc\xf5\x8f\x80\xb7j\x94O_a\xb2P\xffao\xf6\x06;J\xf3-\xfe\x13\xdf`\xfdW\xfd\xf2\x01hz\xe4\x85[\xee\x92\xd1\x1da\x8d\xf0\x15m\xb4\xd9e7\xa4\xae\xd5\x96PXW\x85\x994\xe4\xe0\xfd\x0d\xe2\xa4`\xd5JKR\xe5f\xe0\x9dJ\xec\xc5a\xccM\x16C\x16o\xf0\xc7\x02\x97%\xff\x18\xf5\xae \xb9#\x85\xaf\xda\x95BQe\x85\x14Lk\xe6\x05\xf5Q\xd4X@\xcbR\x0e\xab\x82\xa1\x0dCK\\\\g.\xb2\xe7n4O]V\x94\xabK\x97\xb8\xc0\x83\x0b\x14\x06U2\x0f!\xf5\x10*\xf0^459\xb6\xd8\x87\x87\x15\xfb\x8e1\x8e\x14|,n\xf5\x14]#\xf7\x8f\xa4\xf0d\xd9l|E\xde\xd7\xb4\x12\x885b\xdf\x08\xb4j\xd4$l\x8a\x8dHu\xf4UzG\x16\xbd\xa4;\xea\xed\xf2Ow\xf8\x8e\xee\x9a\x1d*I\xb5\x11[\xd9 t=N\xd0\xb2\x11\xe8\xef\xa4fhGp\xc5QS\xa9\x84\xc8j\xf1\xf4\xc8\xfa\x1c\x02\xcbnH\xd9Y\x9bnPZ\x8c\xaej\xf2\xd6p\xea\x05K\xd65JGW5ep\xeak4\xbc\x9e\xc9W\xa1 \x17.\x1d\xdb\xf2f\x16\xdfD\x10}\x15\x98t\xa7R_\xcfc+sd7\xea\xebi\xdf\xd5\xe4\xab\xe3h*\x9du\xdf\xd2\x9c\x1b\x96\x86\xf7(\x0d\x92\xfb4\x8d\xc2\xba\xaai\x9a\xaf&^\xb7d_\xaa4H\xae\xbd`\xe9\x13T\xfb\x9bp\x1bq\xdd\xc4\xf4 J\xf9o \xa5\xfc\xb7OT\xc0\xd1MP\xbe2>\x9dq\x7f\x93uK\xd3G\x1e\xe6]\xb7?yk6\xeb\xce&\xeb&\x92\x8f\\\xb7\xf1\x8dO\xbez\xcd\xb9\xc3\xe9\xe36\xbd\xe1\xd5P\xde\xef3\xfdB\xa7\xfe\xda\xa6\x8f\xfcm\x0e\xaf\x83\xf2\xd5j<\"\xcf\xb8\xd2\xc9y}\x98\xd5,?j\xcd\xed\xbb\xa1\xfcc\xc8\xe4\x1b\x9d\xda{\x9b>\xf2w\xb4\xef\x83\xf2\xd6f\xfa-N\xed]M\x1f\xb96\x8e;\xa0&4\xcb\xe9\xf78=\xaa\x869\xbe\x10*\xb5\xe63.u\xb2\xaen\x1a\xa4ux\x8d\xd3\xc7p\x81\xb99zGv\xac\xf6\xf2\xfa\xcd\xbd\xce\xfa\xa1G\x12\x080\x05\xaf\x89h\xea\xeaj\x85\x05\x8e\x94^?\xa9\x88\xeb\x9f\xae\n\xaaU\\\xe9@\x97\xaf\xbc\xba\xe5\xe8g\x8e-\xa17\xc2\xe5\x0ep\xe9\xe2\x85\xf6\x08\xbap[r\xa76\x05\x99\x8b7,\x86\xa0;opJ\x17C>\x91\xb9\x08\xbd\x87VX\x90\x17V\x19\xa6JM\xc4\x9d_g\xa2\xa4\x0c\xef\xefB\xca\x92\xf7\xfdu^q\xc9\xc8\xfb\xbb\xcf\xda\xda\xfe\x01\xf4\"\xeaM\xad\x19\xe9\x0e\xef\xb3\x08W\xb4R\xaf\x0c\xe9Q\x07\x1a\x93\xf7wn\x81\xc9\xfb;P\x97 P\x97\x04\xda\xa5\xb6\x14v\"\x02u \xa8K\xbcO\x82\xbaD\x19\xa8K\x0e\x0d\xd4%\xa0.\xf1\x19\xa8K@]\xa2\x0c\xd4%\xfe6\x0d\xea\x12m\xa0.\x01u \xa8K\x94\x81\xbaD\x19\xa8K\x94\x81\xbaD\x1b\xa8K*P\x97\x80\xba\x04\xd4%#Ke\xfa\x83\xbaD\x19\xa8K\xfe\x08\xea\x92\x1d\xdf,VX\xe0E\x8b\x1fX\xa9\x85\xf6\x93s1\x80\x83\xcf\xe6\x8b\xfb\xcf\x89\xf5\xbbb\xfa\xb3\xe2\xf8\xc1x\xfd\xec\x18\xfd\xcc\xb8\xbc\x1d\x7f\x1f\xa4w\xb8e\x9d\x11\x7f\x9f\x15s\x1f\xc5\xd6\xc7\xee\x19\xc5\xd9\xe7\xc4\xd6G1\xf4q\x0e\xc3\x0c\xe6\xc6\xd0\xbbX\xf90\xf9\x83\xc5\xca\x9cX\xb9/&~T\x1c<)\xf6\x9d\x1a\xe3\x9e\x1d\xd7\x9e\x1b\xcbv\xc7\xac3\xc5\xa9s\xc6\xa63\xc5\xa3c1\xe8yq\xe7@|yzL9\x18;N\x88\x17\xcf\x8d\x11{b\xc13\xe3\xbf\x19H2\x07\xf3\xa1\xea\x1d\xd6[\xa1\xc9pf\xa8\xb7\x0f\xe9\x1e\xba=o\xed<\x81m\xbb\xd2\x9c\xfe\xdd[]R\x15L\xae\xee\xba\x13o\xe9\xdf\xfb\xd9\xae'\xf5\x1c[\xe8\x03\x0eY\xc7[b\xcd\xb2t\x17;D\xec\xb2\x8a\xa6\xf5\x1e\xb4R4/\x9d\xec\xb1\xa5\x0d4\xa0u=Xm\x0f\n\xf5_\xc3\xa6\xd3\x1d\x87\xcc\xe9\xa6\"u\x7fZ\xf2\xa0\xa8z\xd1\xd3\xfef\x06n\x8e\x8a-)\xaeG\xad\x07o\xe4\x0eQ\xe8Vf^X\x91\x9a\xde\xc8\xae_\xb3\x9d\x8e\xb6\xd3M\x85\x95\x86\xf0\xd9_N\xd0\xe5 z\xf7\x1c5\\)Q\x0f\x96g\xc5\xfe\xcbo\xfe\xf5\xfa\x0bD\xcaR\xd6\xa1\x90\xc3\xd2M\xee\x06\xea\x96\x14\xd7 v\x06\xb1sz\x91A\xec\xec.:\x88\x9d\xb3\x14\x1d\xc4\xce v\xfe\xb8\xc5\x07\xb13\x88\x9dA\xec\x0cb\xe7\xe3\x0b\x08bg\x10;\x83\xd89S\x8d@\xec\x1c\x1eC@\xec\x0cb\xe7\x8f\xdc0A\xec\x0cb\xe7\x8fQ\x05-\xe3M\x17;#\xb6V\xa5\x90\xfb\xe0U\xceX\xb97\xf4\x95G\x05\xfd\xb1\xca=,_\x9a<\xfac\x95m\xban\xfa\xe9\xa1pZ\x01BX\xb0\xfa\n\x17\x05k*q\xfa\xab\\\xb6^\x99\xd0\xfcoO\xfd\x8ajk\xac\xfaK\x9b\xca+\x9d\x88\xaa\x1a%\x8a\xbf\xff\xbaE\x10L\x06O\xb9\x8e\xf3\x1b0J\xbe\xd5\xa5#\xb3&\x15o\xac\x0d\xf2+]\x90\xd6w\x03!\xf68[\xf3\xcc\xa3Ud\x1b\x0f\xb4\xce\x9d$\xe6\x0dO\x14\xdaF\xe9\xb7WZ\x16\x8c\xefX\x0f\xcf\xb4\x10\x9f\xf9TT.o\x8a\xed\x81\xe2\x18u\x0dl\xcc\xe0\xe3\xb2qW\xc541\xb27\xf8\xdd\xda\xa0zm\x16m\x15\xfa\xb6\xd3\xfdrxZ\x03\xb2\\\xa0\x7f\xcd[B#h\x1ff1*\xe1!H\x18\xc6\xd7\x90\xee\x9c\xe3\x96\xdc \xe5iK\xfe4\xff-\xcb\xaf!\xf2\x03\xa2\x82J\xe8\xf4\xa0+^^\x9c\x19jn\xef+P\xd7\x0f\x7f\x03u}\xca\xf0\xa2m.\xb3\xce\x9b\xa0\x00u\xbd\xb1\xd9\xcc=\xdbf\xb2\xf8\xbc\xe9\x81\xba\x1e\xd4\xf5\xa0\xae\x9f\xceB\xb4m.#10>9\x16\x00\xb6eb-\xda\x96\x93\xc1h[&6\xa3m1f\xa3m\xf3X\x8e\xc11\x1c\xd4\xf5\x0e\x03u}\x02\xe5\xd2?`\x83\xba^\x19\xa8\xebA]\x0f\xeaze\xa0\xaeW\x06\xeaze\xa0\xae\xd7\x06\xea\xfa\n\xd4\xf5\xa0\xae\x07u\xfd\xc8R\x95\xce\xa0\xaeW\x06\xea\xfa?\x82\xba\xde\x86z\xad\x84\x06[I\xfb\x99\x16\x8e\xea\x90[\xf5k\x87,\n\xa61md\x03bkv y\x1a\x05\xcb{\xdc[\xd4M\x04\xf6N8\x12|M\xc8\x0e\xd7\xd7D\x9c\xde|q\xba\xc4\x9c\\\xad \xf1\xc3\xd8\xdfaN~ \xa4\x83\xacUl\x19s\x82\xd6\xa4\xdb\x9f\xeeqM*a0~\xf37\x13\x17\x1a\xb2e\x07\xf0\xf4\x0f\x84\xfc\xa4\nb\xb2\xf8\xac\xad\xee#\x85\xa7\x87\xbe\xb2\xcd\x1b;\x19\x94\xd3T\xb3\xc3.5#F{Ts\xa0\xff{\xe7Y\xc0\"\x01\x8b\xf4\xcd\x15\x0f\x10\xc6\x9b7;\xe3\x04\xcbK\x87\x9b\xe0`\xbb\x0b\xb7\xba\x8a]\xf9\x17B\xa8K\xfb\x90\x9b\xdb\x9b\x8f\xa5k\x9b!\x93y!\xa4\x8a\xf5\xab\xd05\xab\x0b\xd2\xad\xa3^\x0c\x16Rr\xd1\xfd\xb9-\x9e\xf3\xa4\xf7y\xab@\xc4e\xc9]\xb1\xc0\xb6\xd2W\x1a3\xbdZ\x91\x8a\xedh%W\xf9!?\xf8\xc6%\x14\x1c\xff[K\x01\xadP_W]4d\x15\x0d-YS\x99\xed\"\xde\xa9\x0d\x87\xbd\x80\xf7$X\xe0\x16s\xf6m\xec\x96D\xdc\x92v\xf2v\xc2\x8dD\xee\xe7iA\xc5\xfd\xd5\xae)\x05\xdd\x97\xd4E8D\x1f\xd5S}\xa1P_(\xdbG\xad\x0c\\\xce\xa7J\xe7\x8d<\xed\x13YMM\xcd\xc0;\xec%\xd0l\xf1\x8d\x13\x924\x1cz=M\x87\\\x13\x18\x83'zF\xe7%\x97_:\x980\xd8\xcd\x15\xb8,\x9aR\x07/(7\xc5[\xb9J\x9e2\x02\x04\n=d\x86[\xddx\xe4Tg\xc3\xda\xd1J\xae<\xafT\x7f\x9dY\x80\xd8\xe82\xc8\xa3\xbb\x8dI5\x10Zu\x0dD\xff\xaa#\xa5\xfe\x91\xa5\xa5\x17W+D\xc4\xd6&\xbc\xbb \xd76\xe7\xb4>s\\\x15U%<\x83\x85U\xcf\x0f\\\xf3p\x96\xde\xe1b\x8b\xeb\x8d\x9f\x9a(\x18\xe2\xa4Z\xc9\xe9\xba;G\xecO\x98\xff8:\x8f\xc1<\xac\x8b}a\xcflfh\xff\xcbO\x87S\xdb\xe0\xfd\xf0\x18\xa0\x16\":\xdd\x83{\xb6\x84\x93C\xac\x825\xb4\xda\xa0\xbbSr3\x8e\x10\xba\xa6WX`\x0f\x7f\x83\x05\xf6\xc7\\`\x17\xb8\x12\xec\x94UK\x86\xeb\x15\xad6\x13V\xd75\x115%7-\xf5\x84 \\*\xaa$[\xa3>=G\x93\x1f\xac\xb0\xdfvO\xfe\xa3.\xb1]\xdb\x0f5X\x0e\xb6\x1d\xbd\x1d\xb1\xcc6k\x83\xde\xfb\x1fa\xb1m\x94z\xd6\x17?\xff\xee\x0c\xed\xe8jU\x92[\\\xbb\x86\x7f\xdc\x08v\xc5o\xf1\xfeJlk\xc2\xb7\xac\\\xcd\x9a\xafn\xb7T\x90\x92rAVj\x81]\x11\xd7\x10\x80\"\xc3\x00\n\x0d\x05(V\x8a\xe1\xd4\xa3a\x16\xeb[\x1bU\x89\xed\x1e\xfd\xdd\x07 M\x9f\x83B\x12\x16#Z1E\xba\xbc8\x1b\xa5\x07\xc2\x15\x98\x80\x1e\xdb\x04T0Z\xc9\x11a\xc2\xdc\xa3\x02\x99\xb1au0\xd7\x9c\x99L~\xdf3\xcd\x11\xf3Cd\xf3\xe5mp\xb1t\x91\xf2Q\xc5v\xbe\x1f\x93Z\x8d\x0e5\x1c\x91D\xdav^\xb6\x82nj\xc6H\xb0kR\x19\xaem\xbf\xaf\x91\xbbY\xb9\xf9\xc2\x95)\x96\x9f\xd6\xfd\xe6\xed\xfb\xd7\xea`\xb16V\xa2y&TQ\x81\xcf\xabv\xd3<<\xbe\xca\x93\x96\x01\xe7\xf5\x08\xed\xcb\xb0;\xc8\x93w(/Z\xde\xa3\x0d\xdb0\x85{\xbb\xf6\xbf{\xc6\xca\xab\xa2&\xaaf\xb1M8\xb4\x83\x7f\xd8v \xf0\xddU\x8d\xc5\xbc\x10\xc8\x0e\xdf]q\x81\xab\x15\xaeWWr\xc4\xbe\xda\x93\xfaJ6\xad\xf9\xc9\xc9U`\xe8\x83gX\xb9\x05\x9asJ\x83\x8e6\xe9hE\xb5\xc5\x9auR2iM;\x7f\xe3\xce\xdb\xbc\x13\x1b\xf8\x9c&\xee \x05\xa9\xfa\xeb\xa5\xc1S\x9e/\x14D9,\xc1\x11,\xc1\xdd\xaf\xffn\x97\xe0\x8c\x95\x81\x15\xf8\x8f\xf4\x97\x86\xae\xa8\xb8\xbf\x90\xcfu+q\xa5\x0d\xde\x12T\xb6?\xab5\x07\xef\x05~&\x9d\xc1\x8a|\x98\x96y\xe2\xf1\xae\xc8{\xc7\xd8\xf6)\xda\x17\xf5DL\x12\xda\x86\xf4\x1c\xbb\xf5\x9f\x97\xa2-\x9aL\x1f\x00R\xe9\xd9\xd4D\xb4\"{\xc6\x95\xf0\xfb\x9a8\x01\x0b\x84\xdau\x04L\xddc\xfb\xc3N\xdd\xdaL\xab\xdaaZ\x99\xba/q\x89\xab\xc2] \xf5\x04\xb4\xa1\xb1A\x1b*\x15\x13\xbb\xa9\x04\xa9\xf7\xb8\x16\xf7 m\xa9\xdc{?\x0f\xb4\xa4?vK\xea\x175\xf1f\xe4\x0d\xae$}\x97\x83\x0c\xe5\xa2\xc3\xc1\xba\xd9\xe3\x8d\xf1\xbcoA2+BX\x91;quM\xee\xfd\xab\xda`\xf9\xa3b\x7fS\xbd\x83\x03\xbbZk\xf3o\x01\x0e\xf9Os\xea\x05\xe6\x86Rp\x817\xe4R\x9f\x05\xb8\xd0\xbf{\x12\xebu\x132Y\xe92\x82v\x8c\x0bD\xd4Y\x12\xea\x00\n\xc7\xab\n\xc9<\xd2\x01\x9e\xd3\xce\x10\x8as,4\x90*\xeb\xaf\xfea\x9f)\xa9O1\xb1\x8e\xcc\xf0\x1d\x00e\xbbH\x1f\xac\xa6\x12\xf3\xf5\x8f[\xcc\x11'\xe2\x04Qa\xdd4\xd4T\xba\xdf\xaf\xf4y\x15\xb7\x94\x1f~\xd3\xf80\xa2\x8bb\xc1Vl o\xa2\x15\xda\\^\x9c\xf5\xdbh\xb3\xf5\xe3\xe8vK\x9c\xe8\xa1\xe7\xec\x9f\x82\xd5:\x0d\x05\xb2\x99\xb3\";%\xd2\xb6\xa5:\xdb\x9eq\xba\xa3}\xe3\x1d\xdb\xf5\xe5\x0e*jk\xb2'\xea\xa4\x82\xefp\xdd}\xa4\x88W\xa9\x95\x84\xf3\xde\x85\xfa\xac$}[\xdd5\x99\xe8\xcfa\xf2\x0f\xec\\\xcf-d\x96{\x83WJ\x8d\xbc\xab\xd9\xc4\xd4fX\x1d\xae\x07\xf4\x8cj\xb7`C\x0di\xca\xd1\xa8\xa9\xcf\x00\xb2\xfft\xbeF%Y\x0bs\xdc\x14\x15Z\x7f\xdc]W\xc7\xba\x0e\xa23\x91~^\xde#\x82\x8b-\xc2\xfb\xfd'\xf4\xa2\xbd\xaa\xe9\xdf\x0f\xf9\xd2zCzT\xb5P\xa6\xd4\xb1\x8amJ\xab\x15-\xb0 \xdd\xd1\x86\xc6\x83\xeaA\xd3\x90\xec\xe4hU\x94\xcdj\xb4\x14\xc1:\x97\xeel\xc9\xd1\x17S#\xb6\xb5~\x93\xf3p_\xa7\xf1 h\x1f\xce\xf9\xe8k\x8d\xaa\xa0\x8e\xad\x90S\xa9\x9eZU\xf7\xea\xfb\xa3\xecr\x0b\xd3\x9b\xe8\xa6b\xf5\xe8\xc0\xb8\xb67\x0e\xb3\xd0\x9e9\xf6\xc3N?d\xdd\xfa\xb45\xb9!\xf5 \xd1\xd0g5O\x8f?)\xb5\xd6\xcb5q\xf7\x91A:2\x0f\xa2\x17\x8f\xac^\x91\xfa\xe0\xd6[Z\x15*\xa6\xc0w\x8c\xbf\xe0\xabk\xf4\xf9\xe2\xeb\xaf>\x92\x9f\xfc\x87\x8f\xbbb\xf7\xa7\xbf\x96{\xa1\xb5&\xa1\xb3\xc6\xad\x19q\xb0\xe8\x1bh\x8c\xc7\x1bQ\x83o\xb5\x07\xc0t)t9\x9a\xbf\xf8\xc3\xfc\xe6\x81G\x1d\xe5\xcf\xba\xa7\xf6\xc5\xea#+\xa1\x948}t1uD\x8c>\x1c\xa1\x8fF\xc4b\xab\xcch4,Z\xb7x$,\x9aD|\xfb\x8a\x1e \x06\x963\x02\x96\x14\xff\x9a\x17\xfd\x9a\x12\x89\x0f\xc4\xe1\xa1\xa5\xfcQZ\xca\xa4x\xbb7\xda\x0e\xed\xe5\x8f\xd2^\xd2\xa3\xea\xf3U\x83i\xf1\xf4\xf4\xa8Z\x86\xa0\x1a\xc4\xd4 \xa6\xe6\xfa\xfd1\xc5\xd4\xc6\xcby\xf4p\xa7L==\xa5\xcb\xe2\x14\xef\xf7\xfcT\xc9\\\xd7\xa4>\xbd\xf9\xe2T\xe5\xaen\xaf\"\xfc\xf4Wu\x8dXh3\xf3\xbd|\xfc\xcf\x98o\xfbk\x92\x86#\xa8\xba\xe1\x8aV\xda\x0f\xd6\xc5Q\x83\x8dJ\x97\xcagm\xfd\x1e\xe9&E\xd6fRo\x18\x95S\xdf\x0eL+u\xf9\x97\xf6\xc9\xf3\xfe\x0cF\xcbm\xca\xf1.\xbf9\x12u\x0f\x9f\x9dO\x93\xc4K\xae\x14N\xfb\x8f\xeb\x1d:\x81K c\xe7#\x19;U\x97\xf1\xb5\xbe\xa7\xef\xdd=\xec\xd9_\xf7\xac\x16Wt\xf5\xb7\xd3\xbf\x1a-\xa3\xfc\x8f\xe7\xffr\xfaW\xf5\xf4\xdf\xc6\x17\x8b>\xc0H\x1c\x1a\x88U)yd\xfc}\xaf\x1e\xeaG`\x15J\x1eW\xd5\xad\x03\xb6\xde\xff\xac\xad\xd1#\x1d{\x0f\x1db\xdb\xa7\xe8!\xb2-\x1c\xd1\xbe\xd3\xf6*:\x9b\x81\xa8\xb9\xd8b\xaa\x8e\xee\x95m\xf7\xd44\xdb\xfe\xaa\xaaZ\x07\xa1\xbd\xe9\xa9!\xbf\xc6\x85\x01\xd0\x02\xec\x1d}-\x96\x99\x9f\xd6M\xb5\xa1\xcb\x92\xe8]\x83{\x87\xa1\xce\x1a n\x03\xa7\xfaE\x9d82h\xcd\xa685)\xf1=Y%\x14+\xc5\xcf}?\x18\x9eM|\x98\xbd\xf4\xde\xf9\xd9\xbb/?\xefrv&\xa8\xe3{\xdd\x11\xd9\xceg\x8c\x7f\xdboa\xcd\xf6\xea\x9b\x1f\xd6eP\x13\xbb?\x0c\xe8\xe0vqyl%\x11\xa64\x0d2\xb4 \x93\xa1\xc4\xdeBR\x06+\x8c\xac\"{\xa0H\x01E*\x95\"\x95\xb0<>cUE\xf4\xc9>G.\x90\xcd\xec\x0bKdX\"\xbb~\x7fLKd\xa0\xecL\xe3C\x00e\xe7\x01\x9d\x1b'\x9b\x00e'\x87\x17\x81\xb2\x03\x94\x1de\x7fp\xcaN4\xcar\xfa\xeb\x16\xf3m4\xda\xadw\x89\x9ep\xb7w\xb7\xe5\x89\xba|\xd6\xd6\xfe\xf1\x07]|K\xaeY\xbb9\x7f\xe8$\xba\xeaI\xd9\xce\xe7\x0e\x9a$\x86L\xa6\x06Lb\xe1\x92i\xbe8:T\x12\xf7l\xe60I\xd8\xf49\x7f\x7fL\x9b\xbem\x8f\xab\xa2\x87\xc1#?*.\x92xR\x9d\x0d\x86\x1c\x9eVG\x97\xc5\x8b6\xd1\xd0\xd1u\xef\xcd3\xbf\xef\xa3\xebFQ\xdcOsH*'\xd5\xea\xca\x1cS\x1e\x9a\xed\x8e=\x1f5>\x89\xa1Qi\xccY\xaa\xea*\xe4\x15\xe5\xfa\xdf\xb2\xdd\x145\xe3\xfc\x85^8\xa8\xa9\xca\xd7gM+\xe1h]\xb3\x9d\xba\x7f\xdd\xb7BP\x89\xb9\x96\x025)\x08\xbd!\x8f\xc7C\xa3\x02et\x92\xba\xf2n\x92\x8b\x12&v8\xa8\x15f\xf0\xd6~\x8f3xp\x12,JJ\xaa\xa4\x1bx\xce\xd4\x93\xa9s \xd2 ;\xa7>;%\xf3;L|s&>\\\x96\xec\x96\xac\xae\xb4\xaf\x03M\xf2\xc8\xf3\x16S\xb7\x89\xde\x11\x7fT\xd0\x81\xa7J\xcaU\xac\xcey\x1c\xb7\x9b]\xd2h\xeeJ\xe4t\xd0\x0d`\x93\x06C\xbc\xeb\xf7)4\x94\x00=\xe7\x15\xfap\xf9\xe3iML\xa8B\xdd\xfa\xac\"\xe3ME\x7fiHy\xdf\x07\x99\x0c:![/\xf3\x01\xe4\xea\xa4\x0d\xd4_\xc7\xed\xa7\xe7(\xa6\x7f\xc1J\xb4l\xd6j\x1f\xa3?\xda\x02\xbd\xdfRn\xea\x86v\x0d\x17m\xac\x06a\xb7\xb2CZI0\x17\xfe\xbcXE\xd0\x93\xd3'\xea\xfa\x18\\\x08R/\x94\xdcA]\xbe\xce\xc9fG\xfaP\xfe\x87\xcb\x1f\xd5Y\x9f\x9e\x1b\xc3\xa5\xa9Bu70\xfbs\x15\x8e{\xe1\x95\x7f[\xd4@z\xf2\x19\xe6\x88z\xae!\x97\xf6\xb3,\x8a\xf7\x86\xe2\x9f\x9f\xeb\x9a\xa8d{T\x91\xfa\x96\xb1\n\xb9\xc0\x15\xabh\x81\x95.s\xe7\xcf\xf9\x19Yl\x16'\xd2\xb5*X\xfed\xf1D\x8ed\x15\x13\x08\x17\x05\xd9\x0b\xb2z\x1e:\xb1\xe9\xbcB{\xe9lZ\x90\x13$\x88\x1c\xca\x1a\xde`\xe9\x8e}M\n\xb6\xdb\xd3R\x96T_!\x8d\x96\xb4\xc2\xb5{\xf6@zt\xd7Cr\x07\xdbx\xef\xc0BH\x0fuH\xe9\x14\xd5\x0d\xfd\x06*\x93\x0d\x89\xdc\xa9O\xfd\xaa\xba_\xa0?\xb3[rCju\xad\xbe7\xb1\x0f\x97?r\xa3\x801\x97\xfd\x07(gr\x04%\xe8\xe7\xad\x10\xfb\x9fO\xf4\xff\xf3\x9fO\xe4\xae\xa3b\xe6\xd7\x13\xd5\x1a\x0b\\!\xa6z\xa7\xf4\x88?A\"P\xb3GX\xd5=\x90/\xa9oH\xad]\xb3\xc3{\xae\x9b\x96*\xb9`\xdd\xe14jFT\xf7vs\x84\xdd\x07,\"5\xb2\xcaY\x92\xbf\x0c|\xdb\x7fF\xe7\xeb\xbeF\xb2Y\xb4\xd2\xde\xae\xd2\n)\xe6\xbc\xd9\x91\x95\xfb\xc8\x1c\x93\xd0\xab\n\xfd\xf9\xfd\xfb\x0b\xf4\xa7\xd7\xef\x11\xab\xda.\xa8\xfb\xd8\xbd\xd2!a\xef\xdb\x077\x85\xbf\xbf\xdf\x93\xbf\xfd\xf5o\xde\x17PK\xc2\xa9L{3\xd3\x88\xfaB\xfb\x9a\xad\x9a\x82 \\\xe9)\xcc\xcd\x11D\xba\xd4\xfb}I\x0b\xc3Q\xc35\xe9V\x16\x82\xa1\x02\x17rla\xec\xba\xd9w\xd8\x94\xba\x8e*0>9\xd6\x02\xb6}\xb8\xfcQ\x95q\x8boT\x13\xdcY}h\xa5;\x11n\xab$\xff}\xc3\xe8\n\xe1\xca\xdf\xb0\x90)\xa0\x1a>j\xb2f59i\x13\x90\xe9bA\x97\xb4\xa4\xe2\x1eU\x84\xacZ\xecY\x0dy\xf5M\xa0&\xaa.\xfaB?\xbdUV\xcb(\xf4\xec\x03'\xe8\x86\xd4\x9c\xb2JzI6O9f\xe9\xf6\x89+\xbc \xd5~Y\x13|-\xc7 \x93\xf0\xe2\xb9\xbfE\xbda\x82\xbcT;t\xb4n\xaaB\xf70Y\x0f3v\x99\xcb\xc2\xcb{\x9b\xee\xe5\x1f.e{d\x8a\x9d\xe0gy\x99\xb9l\xd9\xacQM\xe4LDN\x14(\xa0\x11}\x99iw_n\xd7/\xbdI)\xeeI%+{K\xc560\xb9\x1c\xdec\x1f\x1a\x8d\xdf\xa9\x9e\xca5\xe3L\xb3,F\xa3\x14zf\xe2\x0b\x9a\"\xa0\xbb\xb6\xebzJm;u\xbb\xdf20(i*\x08\x15\x96rPGc\xf9\x9e\x14tM\x0b\xc4\xc9\x0eW\x82\x16\xce\xcb\xf7\x1ed\x9f:\xb6\xd4U\xd2Or8Z\x12\xcd\x92\xa0+k\x81s\xb0\x8e1\x93;^\xb2\x1b\x7f\x9b6.0]a.\xed\xf7\xe7W\xd5\xfd\xcf=\x94\x85+\x84\xeb%\x15\xb5\xec\xc4\xfe\x12:\x93j\xe7\x08\\2\xd3\xf4\x10v\x7fZ9:\xab\x89F\x97p9\\\x16\x8e\x96\x7f\xdd\xaa\xce\xd34/\xda\x8eS\xd2\xa5*\xb6\x99G8\xe2\xcd~\xcfj5\x83\xefqq}\xdaT\xf2\xff\xe4\xbc\xad\xdb\x85\xbb\x07\x99\x89\xde\xbf\xb0ak\xd4\x08=\xb0\xb5\xc3\x83\n\n\xe2\xd5\x8a\xea\xb1\x02mHEju4\x9b\xdeg\xb5\xbbkgz\xb2<\xfa\x13\xba\xf3{}\x87e\xe3G_\xbcD\x17\xb2\xfcr\\0U\xc1\x9d\xd3i\x85\xce\xfe\xe5_\x02\xd3\xe4\x0f\x8c\xa15c\xe8[\xb4X,\xfc'\xc4\xc9\xc2\xe0\xea\xde\xff\x00\xae\xee\x17\xb2\x18?\xd4l\xf7l\xcd\xd8s\xff\xa3\x8b\x85\x7f\xfe\xa3k\xf4L&\xf5AU\xe4={\xf6O2\xad\xe7\xc1\x03\xefB\xe9\xfd\x16\xf6\xdd\x97\x11\xdf\xfd\x07\xbe\xc1\xd9\x9c\x87\xbeUkC\x99K\x06\x0fQ\xfe\xec\x07\xc6\x16E\x899\x8f8H\x17Q\xbe\xa4\xebh\xbd\xe8/\x83\xc7s\x9d\xeb\xbe\x8a\xb8\xee\xe2^lY\x15p\x9e.\xd5\x0f\x8c=[,\x16\xfe\xd9\xa0s\xdc\xb3\xe03\xaa\xf1)\xb7\xce\xf5\xaaL\xe4\\;\xf5\xfb\xd7\xef\xce.\xcf/\xde\xbf\xbd|\xee\x9b$\x90\xc9V7\xd4p\xc6:\xeb\xb0;\xbf\x8e\xb8\xf3O\xcc\xefI\xe5\xca\x97\xdf\xa2\x7f\xda/\x17?0\xf6\xebb\xb1\xf8\xcd\xff0\xae\xeeO\xe42T\xbe\xb1\xd7\x8b\xa8\x9fp\xcd\xb7\xb8\x94N\x0eW$\xe4\xc2q)\x02E\xa0\xebQ\x01>T\xbb\xbe\x08\xaa\x80\xaa\x83\xa8\xa7\xfe\xdb\xb7\xa8\xa2e\xf8\xc8\xcb`\xb9<-\xf9\xbd\x8as\x16\xd7\xddX\xdcn4\xd0\xf2\xbe_v\xb5\xb3\x87\"5.\xdd\xab\xde\x96\xeb\xd8p\xcf\x9a\xe5\xa9cIu*\xf7\xef\x0b\xf5\x83\\\xae>E\xd8\x9a\xed\xe4L\xd8\x92?\\ \xea\x16\xe2\xce\xac\x9bZ\xaa\xf2\xbe\xddW\x1e\x04\x0b\xbae2\xc2kA\\\xf1Bm*\x8e\xf1\xf4\xf4\xa9;+3'\xb6EV\xbb]DL\x8b~\xb2fl\xb1\xc4\xb5\xaa\xec\xdd\xe9\xfd\xe2\xefO\xb4\x17\xd5\xde\xcb\x99\x9e\x7f+\xaa\x8a\xfaD\xa6!\xa7C\xe7#\xff\xf1\xee\xed\x1b\xf7/\xdf~\xfb\xed\xb7\xfe6 \xdf\xebc.\x1d?H.c\xd5\"H\xef\xeb\x1a\xde\xdd\xb0\xbbiJ\\\xbb\xd3;LF\x13\x06\xfae\xcbI\x7f\xd4\xac\xe9\xdd'z9\xeeJ\x0e{\xa27\xd6\x92B\x1f\xa8\xf1\xf3\xff\x92\xae\xfb\xd9\x04\x13\x06\x0c\xa4\xf6\xe3\xb8;\x88\x19~^\x066 \xb8\xb8\x96cP\xbf!^\xd3\x92\xf8\xe7\x8dv\xcc\xba 5gU\xb0\xdb\x9aH\xdc\x9a\xd6\\\\\xa9/\x1c9\xa5\xd6\xbc \x1be\xfb\xbc\xfb\x8cZe\xbe\x19\x0c\xa1`\xa9\x9e(_>y\x89\x9e\xb8z\xed\xd0\x0d\x0b]\xcb''\xa1\xf4T\xfd\xde\xe0\x9dL\xf3\x7f\xea*\xfc{\xf0\x05Y\xbf\xd1\xf3S+y\xbe6\x1b\xaea[\xd3\xad\x81rtK\xca\xf2\xc5u\xc5n\xf5Q.[\xcc\x116'\xacL\xec\\\xc3&\x7f\xa2\x17\xf0\xa3~\xa0\x07O\xab8\xb2\x01{6WX7iwf?\xab\xce\xd8\xb6s}\xbb\xa9\n\xbf\xe9\xb3aTW\xa6U\xd7?4\xa2\xee\x1e\xd9L\x97q\xe7\xa3\x8a\xb0\xe8&\xe7gr\\k]x\x10\x1aj#\xa6\x7f\xfb\xeb\xdf\x9e\x07:R\x8e67\xcc0\xdc\xec\x94\xabd\x92_,\xbe\xfc\xe2K\xfe$\xd0\x84\xf4\xff\x87\x91VV\x13\x0bn\xd5\xff\xbaR0W\x14u}\xa7\x9e\x1a\xa0\xae\xf2\xa3\x9d\x7fw\x86J\xb5\xd7o\x8159\xec\x0ei\x0e\x0e\xe4U\xa7f~\x7f\xb4\xc8\xab\xc3A\xb6\x89O\x00\xfd\x98\"\x1dqUO\x7f\xb2\x96F9{\x92p(C\xe5\x83p\x9e\x81\xd3\xb5\xe2\xf5B \xb0\x16J\xab\x1eJ\x0c\x8f\xb46\x15\xe2\n&\xe6\x8es\x04\x96\xfd\xb9\xa1.\x14\x87\xbb\xd0\x0c\xc8+\\\x01,\xb6\xc9\xb0\x17\xca\x05}\xa1\x99\xf0W0A\xe9\xdcd\x08\x0c\x1d\x0f\x83\xa1\xc9PX0)\x13\xa2\x9f\x04\x87\xa1\xdc\x90\x18\x9a\x08\x8b\xa1\xa9\xd0X\xb8ew\xb0Y*<\x86rCd(\x0d&C9\xa12t4\\\x86\xe6Af(\x17l\x86fAg\xe1\xee\x809Y\xc5\xe13\xf40\x10\x1az@\x18\x0d=\x0c\x94\x86&\xc2ih\x1e\xa4\x16\x1b\x82\xd3`5\x94\x17ZC\x13\xe054\x1dbC3`\xb6\x84!\xf3y\x02\xd4\x86r\xc0m(\x06\xb9\xa1\xf4\xe5Y\x02\xf4\x86&\xae\xe2&Cp\xc1\xd4\x14<\x97\x00\xc3\xa1 \xa5\xcc\x08\xc7\xa1I\x90\x1c\xca\x0d\xcb\xa1\x99\xd0\\\xb8]\xf18<\x87\xe6Ct\xde\xf4d\x8e1\x98\x0ee\x83\xeaP:\xe2\x84R ;4\x0d\xb6C\xb18\xfbL\xf8\x0e%\xa4\x1b\x08\xe5e\x82\xf2\xd0,\xe7\xa6Cz(\xa1\x963\xa0=4\x17\xdeCa\xaf\xe6\x83\xf9P:\xd4\x87\x12\xe1>\x94\x0c\xf9\xa14\xafO\x87\xfe\xd0$\xf8\x0f\x05!@\x94\x0b\x06DS\xa1@t$\x1c\x88\x12\xdc;\x01\x16D\x0f\x01\x0d\xa2\x942\x06zB>\x98\x10\xa5@\x85\xe8\x08\xb8\xd0\x9b\xa0|0\x04\x19\xa2\xdc\xb0!\x8aB\x87h.|\xe8MM\xefQ\xc3\xdb\xf5\x04\x18\x11\x05\xd1\x0e\x14\x84\x13\xd1,H\xd1\x9bT\x10jDs\xe1Fojz\x1d\x18\x88\x9a\xe5\x83\x1dQ\x12\xf4\x88f\xc0\x8fh\x1a\x04\x89\xe6\xc0\x90h2\x14\x89\"\xb3m\x04\x1eB\x13 \xa2TX\x12\xcd\x81&\xd1Tx\x12\x85+>\x07\xa6\xf4&f\x81\x80\xa9]&\x0d\xae\x0cv\x88j\x13\x86,Q^\xd8\x12\xc5\xa0K\x14\x86/\xbd\xef\xcc\x855Q\xc6\xb6;\x01\xdeD\x93 NtpomoCH\xcb'\xdcK\xd9\xa9\x9f\xb7X\xcf\xcaB*\xad\xebT\xec,\xba\xd1\xd6\x95\x905\xd0\xeaw\xdc\xee\xef\xe17\xf3\xc5\x0f\x9e\x1a\x94\xba\x95*r\xc1j\xb2\x1ab\xb3f\xeap\xaa\xf0\x83W{k\xe7Y'\x909\xd4\x7f\xe6\xd1\xf9JQ8\xe2\x16\x8e\xb8M=\xe2\x16%uV\xb8\x05\xdciso\x01O\xd6/\xeb\xe1\xe6X\xfd\xb2\x19\xb4@\xbf\x0c\xfae\xd7\xef\xa0_\xb6\x0c\xf4\xcb\xa0_\xee-+Yc\nQc\x12I\x03\xf4\xcb\xc7\x122f\x901\xb2\x101\xa6\x930@\xbf|\x0c\xe9b\n\xe1b\x06\xd9\x02\xf4\xcb\xa0_\x06\xfdr*Y\"+Qb\x0eI\x02\xf4\xcb\xbe\xc7\xa2d\x88 D\x88\x14u\xee\x14\x02\x04\xe8\x97A\xbf\x9cBf\x00\xfd\xb2\xb2c\x08\x0b\xa0_v\xa5\x14%%\xcc%$x\xe7\x06\xd0/\x1f\x1a\xe8\x97g\x10 \xe2$\x82\xa9\x04\x82 \xe4\x81\xc9\xc4\x81i\xa4\x01\xd0/O#\x06\x80~\xb9\xb3?\xa4~\x19.\xf8\x9b|y\xd4A\x90\x00.\xf8Cp\xc1\x1f\\\xf0\x07\x17\xfci\x83\x0b\xfe\x06\xe9\xac~\xbf\x17\xfc\x85\xce\xef8\xfd\xb5;\x1a\"t\xc9\x9fMj\xeb\xce\xf2\xa8\x0e\x8e\xf1\x88\x1d\xdd\xf1Y[\xed\xdf\xc1\xc9\x1d>\xce\xc3,\x16\x9b\x08R\x17\xa2Q\xfb\x94\xb0wv\xd2B\x1aea\x0ea!LL\x98EKPYx\x12\x8c\x92\x122P\x12f\x12\x12\xbc0n\x1a\x1d\xe1(2\xc2,*\x02\xc2^\x19\x86H#\"\xcc\xa1!\x84\xc0\xc1$\x12Bf\nB\x12\x01!#\xfd J>\xc8D=8\x86x0\x99v\x90\x81t\x90\x99r\x10!\x1cd\xa7\x1b<\x0c\xd9 ;\xd5 \x9dh0\x8ff\x10pz\x8cd\x90\x8db\x90F0pD8\xfc\xe3kfrA\x8cZp$\xb1 @+\x88.O\xa2\x94\x82\xb4\xf5K^:A\x8cL\x10/\xd3<\"A@m\x13\xa3\x11d$\x11\x1cA!p\x13\x7fB\x04\x82\xbc\xf4\x810y \x07u \xfb\x8e\xd0\x06\x92I\x03~|o:a\xc0\x9f\x963\x96\x9e\x85*0\xc5Y\xa94\x81\xb8O\x92)\x023\x08\x02n\xdc!\x139 \x89\x1a\x10'\x06\xa4\xd0\x02\x82^\x9cJ H%\x04\xf8\xe8\x00\x19\xc8\x00\x13\xa8\x00\xf3\x89\x00\x01\xb8=\x95\x04\x90\x99\x02\x10(\x91\xb3\xa5\xce\x02\xff\xdb\x98\xad#=\x0f\xf4\x9f\x19\xf8\xf7\xc3\xfesA\x7f\x15\x11p\x15\xdc\x0d\xf9\xe7\x05\xfc}\x1b\xbf(\xd8\xefC#}@\x7f^\x98\x7f>\xc8\xef\x01\xf4g\xc1\xf9Q\xe8~\x1ap\x9f\x0c\xdbO\x04\xed\xa7@\xf6^\xc0\xde_\x9aT\xe04\x0d\xac\x9f\x08\xd5O\x00\xea\x9dU\xcb\x0b\xd2\xfb:\xc5\x11\x00\xbd3N\xe1\x85\xe7\xe7\x81\xf3! >?\x0c\x7f|KJ\x86\xe0S\x01\xf8\xc3)\xd2\xa1\xa8G\x98sVP\xb5\xf8W#\x89\x1e\xa3\xb4\x1c\xd6{\x8c\xf4\xbefl=I\xab\x18\xd9\x87\x9a\x92\xedH}]\x12\x9d\xbc\x1c\xff\xc8\x1d\xe5\x82T\xc5\xf8\x05\xf5\xc0\xd5\x96\xc8]\xb7W\xfb\xae\x7fFX\x98\x86#k\xa6S\xbe\xc5\x1c\xd5D\xd4\x94\xb8B5b>\x92P\x93\x1b\xca)\xab\xae4lx\xe4\x8e=\xae\n\xd7\x1fK\xe7\xd9c\x9f\xed!\xe0\xdc\n\xe90\xd7\xb6\xb1+\xae\xcf\x93(\x7fq\xcdW\x91m\xcdL\xfa\x1bzC\xaa\xae,\x07\xef\xc7C\x01od\x01\xe4\x8aD\xa6vi\xd2\xf9\xb3\xce\x87\xca\x1dsQ\xab\x88\x8b\x1c~\x84\xc6\xbfu)\x1ci\xddniI\xd05!{Y]\xc7\x03m\xfao40\xac\xb6\xfdxG\xba\x908\xe2l\xa7\xe2\xe5\x9cT\xbc\xe1\x08\x97\x1bVS\xb1\xddq\xb4s^\x95]l\x19\x93\xeb*\xe7\xd2[\x8e\xa5\xc2\xf6\x1b\xadPAj\x05\xd5\x14\xacZ\x99\xd84Yl\x16h\x8bk\x15N\xbb\xe6\xae\xb1C\xf5\xf6\x17;\\li\xe5\\\x1c\x8d\x03\x89\xe8\\}\x1eNP\x819\xe1'\x03\xef\x9a\xdaSW\xc4\xce\xf67g\xaaY\xba\xf23\x15\x92\x8b\x10Z5\xa4\x0d\xa1\xeeXE\x85FW\xca{\x9d\x16V\xd4\x11\"[ \xf6\x1d\xcc4\xfc\xec\xae\xfc6Dp\xed\xcf\xc1\x8f\xd3\x14\xf2Y\x04\xf2\x01}<\xfa\x8ep\x15\x08\xb2\xfa\xb1\xfar'*n\xaai\x0br\xb6\xd6\x03\x99{Eo<\xbb\xae\xd9A@(8\x12\x82:\x1f\xd4\xf9\xa0\xce\xd7\x06\xea|P\xe7\xf76\x07\x16\xf7&\x06\xea\xfcC\xcb\x04\x91\x1f\x07\x92\xcf\x80\xc9\xb3\x00\xe5\xd9\xa1\xf2(X\xfe\x00p\xf9C\x01\xe6\x0f\x00\x99O\x01\xcd\xe7\xc2\xe6\xc11<\x06\x9cg\x84\xceS\xc1\xf3\x89\xf0yv\x00=\x0e\xa1\x1f\x0d\xa2\x83:?Z\xb2y\xa0\xba3)P\xe7\xcf\x81\xd7c\x00{\x1e\x88=\x117\x8e\xc2\xec\x13\x80\xf6\xa8Jz\"\xd8\x0e\xea|P\xe7\xa7\xc0\xf0Q\xafN\x85\xe2\xd3\xc1xP\xe7\x8f,34\x0f\xea|\xdb\xe6\x02\xf5\xce\xc4@\x9d?\x01\xb6?\x06\xb8w&\x07\xea|\xe7\x0bIP?\xa8\xf3\xf3\x01\xff\xa0\xce?\x9a\x16\x90\xa7\xcd%S\x03\xd2\xc9\x01i\xea\xfcN~h\xa52\xd8G\x0e\xa8\x04:\xc0\xeff\x0d\xd0\xea\xe58\x06\xde\xeb+E\xddD\xf4\xc5s5\x94M\xaa\x86\xf2\x9dz\xb8\x93O\xaaM\xa7\xfe\x93\x9e\x14\xce\xbf;K\x93Q6\x8f\xfe\x06t]\xaf X\xd6$\x88\xb4\xc9r\x88x\x13:D\x1c\x9d\x0b\xa3\x06n\x87\x01\x15\x81\xb3>\x980\xb7\xd8\x0f\xbf\x18\xe0\x9a\x80k\x1eZJ\\\x0c\x01\xae \xb8\xa6\xf7I\xc05\x95\x01\xaeyh\x80k\x02\xae\xe93\xc05\x01\xd7T\x06\xb8&\xe0\x9a\x80k\x02\xae\xa9\x0dpM\xc05\x01\xd7\x04\\\xd3g\x80k\x02\xae \xb8&\xe0\x9a\x96\xe5\xc0\x98\x00\xd7T\x06\xb8&\xe0\x9a=\xae\xf9h\x10\xcdVN:\xed`X\xeb\xd8\xf4\xb36\x05sEowNlY\xb6\x11_#Xu\xcb\xc2\xb1\x96\xe9v\xe9\x85\xb0\xd0aV\xe6\x91G\x0b\x87\x8e}\xfb8\x80\xad\x90\"\xbb\x17\xf2\x8f>\x9aW\xd5\x8c\xe2\x05B \x85B\xa9\x12wm \x91'\x94\xa6\x1f\xd7\x96G\xf4\xae-I\xfa\xae\xed\x01\xab1Y\x0c\xaf-%\xe4\x85f \xe3\xbdI\xb5%\x8d\xc9\xe3\xb5M\x14\xc9{\xd3\x19\x8a\xe7\xc3Rym\xf9\x04\xf3\xda\xa2\xb2ym\xd9\xc4\xf3\xda\x12%\xf4\xdaf\n\xe9\xbd\xe9\x1d6\x16\x7f\xde\x1eQ}k\xa3\xb15\x1c\xa2>zh\x12\x112\x00J\xef\xcc\xa9=\x0c\xcd \x06\x04\x13sG\x87\x03\xc1\x92\xdc\x04\x01\x14' \xa0\x19D\x81p\x05\xda3\xc2S\xc8\x02(\x17a\x00\xcd$\x0d\x04\x13\x94\xceM&\x0e\xa0\xe3\xc9\x03h2\x81 \x98T\x7f\x8ex:\x89\x00\xe5&\x12\xa0\x89d\x024\x95P\x10n\xd9\x1d\xd9 \x95T\x80r\x13\x0bP\x1a\xb9\x00\xe5$\x18\xa0\xa3I\x06h\x1e\xd1\x00\xe5\"\x1b\xa0Y\x84\x83pw\xc0\x9c\xac\xe2\xa4\x03\xf40\xc4\x03\xf4\x80\xe4\x03\xf40\x04\x044\x91\x84\x80\xe6\x11\x11bCp\x1a\x19\x01\xe5%$\xa0 \xa4\x044\x9d\x98\x80f\x90\x13\x12\x86\xcc\xe7 \x04\x05\x94\x83\xa4\x80bD\x05\x94\xbe\x9d0\x81&\x91&P\x908\x81r\x91'\xd0T\x02\x05:\x92D\x81\x12\xdc;\x81L\x81\x1e\x82P\x81R\xca\x18\xe8 \xf9\xc8\x15(\x85`\x81\x8e Yx\x13\x94\x0f\x86\x88\x16(7\xd9\x02E \x17h.\xe9\xc2\x9b\x9a\xde\xa3\x86\xb7\xeb \xe4\x0b\x14\xc4\x88Q\x90\x84\x81f\x111\xbcI\x05 \x1ah.I\xc3\x9bZ\xe04ym\xf9\xc8\x1a(\x89\xb0\x81f\x906\xd04\xe2\x06\x9aC\xde@\x93 \x1c(2\xdbF@u4\x01XO%s\xa09\x84\x0e4\x95\xd4\x81\xc2\x15\x9fC\xee\xf0&fQ'R\xbbL\x1a\xc9#\xd8!\xaaM\x98\xe8\x81\xf2\x92=P\x8c\xf0\x81\xc2\xa4\x0f\xef;s\xc9 (c\xdb\x9d@\nA\x93\x88!\xc8y&\xbe67\xa0\xeex8e\xb3>$@\xfco*\xb6\x06sU\xe1_u|\xf3\x18\xb9o\x87]Wr\xd6\x88\xbb\x0d\xc0q\xfa{\x1f\xfc\xe4\xae\x19w\x9e\xfb\xef?\xef\xbf\xbb\xe0\xd9\xc1\x8e\xd0\x19XWa;\x14\xd3\xe6\xd1\xf9'\xeb\xb7W\xf9\xfbe\xc0Ig\xd4{\x03F\xa6\x16\xff\xe5\x0b\xbf\xb4\xf9\xb7\xa2v\xf9O\x13m\xc5\x9c\xeb\xf0\xf2\x05\xde\x90K}u\xc2B\xff\xeeIL\xdd4\xad\x92\x91\xc9\xaa\xab\xdd\xd1\x8eq\xd1\xdf\x99\xefT:\xaa\xbb\xc3\x8ft@\xfc\x90~o\x04\xaa\xbb\xba\xdcw\x97\xbd\xa5\x13\xf3\x85Kl\x17\xd9\xb7\xc0{\x1e\xbf\xc5\xeab\xf0\x13D\x05oA\x02\x8e\x9aJw\xa4\x95\x8e\x83\xdeRGS\x8b\xf7S]\x14\xeb\xa8\x026\xe0\xf4\xd1\nm./\xce\xfa\xd3\x0b\xcc\xd8\xc9\xd1\xed\x96\xd4\xaeF\xe4\xc1\xa8\nV\xeb4\xd44\xd1^\xad\xd1Nrr6S\xa1U\xdb3Nw\xb4o\xbcc\xbb\xbe\xdc\xc1A\xb7&{\xa2:\xf8w\xb8\xee>RlY3p\x8bj\x99\xbeE\xcdp,\xf5u }<\xc4\x90\x12v\xc4 \x11#\x1a\x9b\xfcBz\xd3\xd2=\x0eg<\x0c\x7f\x833\x1eRF\x03mS\xa9\x1cm\xfc\xdb\x9b`*\x8d#+\x85\x03\xcex\x803\x1ez\xcbJ\xcd\x98B\xcb\x98D\xc9\x803\x1e\x8e\xa5_\xcc\xa0^d\xa1]L\xa7\\\xc0\x19\x0f\xc7P,\xa6\xd0+fP+\xe0\x8c\x078\xe3\x01\xcexH\xa5Fd\xa5E\xcc\xa1D\xc0\x19\x0f\xbe\xc7\xa2\xd4\x87 \xb4\x87\x94\x13\x0c\xa6\xd0\x1d\xe0\x8c\x078\xe3!\x85\xba\x00g<(;\x86\x9e\x00g<\xb8R\x8aR\x10\xe6\xd2\x0f\xbcs\x03\x9c\xf1php\xc6\xc3\x0c\xda@\x9c20\x95.0\x81*0\x99&0\x8d\"\x00g\x9c\xf3\xd1\xd7\x1aUA\xad\xe5k\xc2\x0d\xce\xae\xbaW\xdf\x1fe\x97[\x98\xdeD7\x15\xabGQ\xf4\xb67\x0e\xb3\xd0\x9e9\xf6\xc3.\x19+\xc9\x80k\xd5\x0d>\xa3_\x1c\x9f\xb6&7\xa4\x1e$\x1a\xfa\xac\xe6\xe9\xf1'\xa5\x16g\xa6&\xee>2HG\xe6A4\x81\x84\xd5+R\x8f\x03l\xefhU(\x92\x17\xdf1\xfe\x82\xaf\xae\xd1\xe7\x8b\xaf\xbf\xfaH~\xcav\x92\xd1i{\xec\xc9\xe9\xaf\xa3Sf~;\xd5\xcc7\xeb\x07\xfd\x87\xd0\xe9G\xff\xee;\xfd\xa8?\xfc(\xe1\xd8#\xfb\x86\x9b.=\xfb8\x0es2\x92\xe1\xe6%\x9c\x88d\x9e\xf8\xbd\x1c\x88\xe4#\x81\xcc\xa2\xf1\x89 \x97#\nc\xa4\xe0\x00\xd9Y\x1ci\x1c\x8e9\x0c\x8e0Sc\x16OCe\xe1I0\xca\xd2\xc8\xc0\xd1\x98\xc9\xd0\xf0\xe2\xdai\xfc\x8c\xa3\xd8\x19\xb3\xb8\x19\x08{U(\"\x8d\x991\x87\x97\x11BK\x93X\x19\x999\x19I\x8c\x8c\x8c|\x8c(\x1b#\x13\x17\xe3\x18&\xc6d\x1eF\x06\x16Ff\x0eF\x84\x81\x91\x9d\x7f\xf10\xec\x8b\xec\xdc\x8bt\xe6\xc5<\xdeE\xc0\xe91\xd6E6\xceE\x1a\xe3\xc2\x11\xf2\xf1\x8f\xaf\x99\xd9\x161\xae\xc5\x91L\x8b\x00\xcf\"\xba<\x89r,\xd2\xd6/y\xf9\x151vE\xbcL\xf3\x98\x15\x01\xb1Q\x8cW\x91\x91Uq\x04\xa7\xc2\xcd\x84\n1*\xf2\xf2)\xc2l\x8a\x1c\\\x8a$2@\x84G\x91\xcc\xa2\xf0\x03\x9e\xd3\x19\x14\xfe\xb4\x9c\xe0B\x16\xee\xc4\x14g\xa5\xf2&\xe2>I\xe6L\xcc`L\xb8\x81\x98Ll\x89$\xaeD\x9c)\x91\xc2\x93\x08zq*G\"\x95!\xe1\xe3Gd`GL\xe0F\xccgF\x04\xf8\x07\xa9\xac\x88\xcc\x9c\x88@\x89\x9c-u\x16\x1b\xa2\x0d\x1f;\xd2\xf3p!23!\xfc<\x88\xb9,\x08\x15\x11p\x15\xdc\xcd\x81\xc8\xcb\x80\xf0m\xfc\xa2\xec\x07\x1f<\xebc>\xe4\xe5=\xccg=x\x18\x0e\xb3\xf8\x0dQ.\xc34&C2\x8fa\"\x8ba\n\x87\xc1\xcb`\xf0\x97&\x15INc/L\xe4.L`.8\xab\x96\x97\xb5\xe0\xeb\x14G0\x16\x9cq\n/_a\x1e[!\xc4L\xc8\xcfK8\xbe%%s\x12R\x19 \x87SdHL\x1d\x03\x1d\x84u\x9c}GN@:\x9c\xe8H\xce\x86\x1fF?\xefk\xc6\xd6\x93\x94\x9f\x91M\xac\xa9\xd6\x8e\xd4\xd7%\xd1\xc9\xcb\xc1\x93\xdcQ.HU\x8c_P\x0fx\x8f\xd87\x89\x99\xf3\xcb\xb10\xadNV_\xa7|\x8b9\xaa\x89\xa8)q\xc5y\xc4|\x18\"\xe9\x12\x83\xe4\xed~\\S/\x8e\xbb\xb2 \xe9\xb2\x82\xcc\xc5\x9d|5A<\x8e0\xfd:\x02\xff\x8d\x16\xd1\x8b\x08&^A0\xbaj\xc0\xd5kC\x97\x0f\xe4\xbbv z\xe1@\xb6\xab\x06\x12/\x19\x98y\xbd\x80g\xb0\x8a_,\xe0\xb9R\xc07\xa0:\xce\x17\xc8u\xbc\xc0\xb8tp\xd8\x8028l\x00\x0e\x1b\xe8\x0d\x0e\x1b\x80\xc3\x06z\x9b\x03j{\x13\x83\xc3\x06\x0e-\x13\xc0}\x1c\xc4=\x03\xe4\xce\x02sg\x07\xba\xa3P\xf7\x03\x80\xdd\x0f\x05w?\x00\xe0=\x05\xf2\x9e\x0bz\x07\xc7\xf0\x18\xec\x9d\x11\xf8N\x85\xbe'\x82\xdf\xd9\xe1\xef8\x00~4\x04\x0e\x87\x0dDK6\x0f\x12w&\x05\x87\x0d\xcc\x01\xc7c\xf0x\x1e\x80<\x11\xf5\x8d\x82\xe4\x13`\xf2\xa8\xe8{\"T\x0e\x87\x0d\xc0a\x03) z\xd4\xabS\x81\xf4t(\x1d\x0e\x1b\x18Yf`\x1d\x0e\x1b\xb0m.\xcc\xeeL\x0c\x0e\x1b\x98\x00\xba\x1f\x03\xbb;\x93\x83\xc3\x06\x9c/$\x01\xf5p\xd8@>\xd8\x1e\x0e\x1b8\x1a\xd4\xcf\xd3\xe6\x92\x81\xfdth\xff\xf7t\xd8\xc0\x08\xd6\xf6\x96e\xc4?\xe8\x90\xe9\x83\xd7\x8e.YT5=\x82\xb6'\x17\xf9\xe0\xb5\x87/r\x89\x05\xe1\"R\xe0\xb1V\xde~\x07\xb1\x1bR\xd7\xb5\xdal[\x90\xb1\x9e\xaa\xe4p\xd3\xeaS\x85BJ\xe4\x9b\x83\xc4\xb8Pz\xe9\xc1\xdf\x86\xc8\xe5\xc7\x92H\xfb\xa4\xbf.\xe5o\xb3\xdf\xd4xEVW\xa6\xafh\xfd\xaf_\xbe\xfb\xc1<\x7f\xa6\x1e\x1f w\xab\xeegt\xfe\xdd\x19*5D\xad\x9et*p\x1d\x89}\xd6\xba\xe2\x91\xcap\x9d\xfe\x021n\x12\xc69\x07\xe1\x041.\x88q'\xe1\x96 \xc6\x051\xae\xcb2c\x94 \xc6uZ:29\x0f\x97\x0c8=\x86Jf\xc3$\xd3\x10I\xc7\x96\x08\xc4\xb8 \x18d\xda\xfa%/\xfe\x18C\x1f\xe3e\x9a\x87<\x82\x18\xf7H\xbc\x11\xc4\xb8\xde\x91\x18\xc4\xb8\x076\x03Q\x041\xae\xc3R\x11D\x10\xe3\xe6\xc6\x0cA\x8c;\x0f%\x041\xeet\\p>*\x08b\\\x10\xe3Z\x96\x17\xd5\x031n\x02nw|KJ\xc6\xecR\x11;\xaf\x18\xd7>\xca\xd3)\xbam/\xe7\xf5\xdc\x83\x1d:\xb2\xdb(\xc8\x1c8\xc3|5\x9a\x0b\x01\xe95h\xfd\xfc\x0c\"\xb4\xe1o BK $h\xcb\x0c\xcf\xa4\x024\xf3 \x1aob B\x03\x11Zos\xc0\x1cob B;\xb4L\xc0\xceq\xd0\xce\x0cp'\x0b\xbc\x93\x1d\xe0\x89B<\x0f\x00\xf2<\x14\xcc\xf3\x00@\xcf\x14\xa8g.\xd8\x13\x1c\xc3cpOF\xc0'\x15\xf2\x99\x08\xfad\x87}\xe2\xc0\xcf\xd1\xd0\x0f\x88\xd0\xa2%\x9b\x07\x059\x93\x02\x11\xda\x1cP(\x06\x0b\xe5\x01\x86\x12\xd1\x8e(84\x01\x1e\x8a\x8a\x81&BD B\x03\x11Z\nx\x14\xf5\xeaT\x00)\x1dB\x02\x11\xda\xc82\x03J B\xb3m.\xbc\xe4L\x0cDh\x13\xc0\xa6c\xe0&gr Bs\xbe\x90\x04P\x81\x08-\x1f\\\x05\"\xb4\xa3\xc1\xac\"\x02\x02\x1c\x10\xe0X\x96\x17\xd1\x00\x01N\x02fq|KJ\xc6+R\xd1\n\xaf\x00\xe7,\xe1\xe2\xbb\x8c\x1a\x9cL\x97By0\x11P\xe2h\x03%\x0e(qz\x03%\x0e(qz\x9b\x83\xeax\x13\x03%\xce\xa1eBx\x8e\xc3xf\xa0sQ\x9f\xe0\x18\x1e\xc3}2\"?\xa9\xd8\xcfD\xf4';\xfe\x13G\x80\x8e\xc6\x80@\x89\x13-\xd9Jq\xcdW\x91\xcd\xcb,77\xf4\x86T]Y\xc2M\xd8\x19\xdez#\x0b \xd7\xc32\xb5K\x93\xce\x9fu>\x94#Z\x15\xb5\x8a)\xca\x89J \x82\xe5T3\xbe\x1b\xad\xb5\xdb-- \xba&d/\xab\xebx\xa0M\xff\x8d\xfa\xc2:\x88\x85w\xa4\x83\x88\x10g;b\xe9\x0eq\xb9a5\x15\xdb\x1dG;G\xb7F\xa8\xd82&W\xf5\xce\x0d\xa1\x9cu\x85\xed7Z\xa1\x82\xd4\n\xe4,X\xb52\x18\x0dYl\x16h\x8bk\x15:\xbe\xe6\xaeyD\x0d\xa4/v\xb8\xd8\xd2\xca\xb9(\x1f\x87\xce\xd1\xb9\xfa<\x9c\xa0\x02s\xc2O\x06\xde5\xb5\xa7\xae\xd8\x9a\xedo\xceT\xb3t\xe5g*$\x17\xb7\xb4jH\x0b\x1c\xecXE\x85F\x1d\xcb{\x9d\x16\xe6\xb2XD\xb6\x12\xbd\xa9\n|\x16\xfd\xd9]\xf9m\x88\xe0\xda\x9f\x83\x1fM\xd3t35\x0e\xe6\x98\xf9$\x8d\xc3\x89\xb1\xe7gt/\x00=c\xf8\x1b\xd03R\xc6?m@\xcf\x00z\x86\xdb\x80\x9e\xa1\x0c\xe8\x19\x87\x06\xf4\x0c\xa0g\xf8\x0c\xe8\x19@\xcfP\x06\xf4\x0c\xa0g\x00=\x03\xe8\x19\xda\x80\x9e\x01\xf4\x0c\xa0g\x00=\xc3g@\xcf\x00z\x06\xd03\x80\x9eaY\x0e\xa8\x1c\xe8\x19\xca\x80\x9e\xf1\x8fB\xcf\xd8\xe3\x1a\xef\x88 \xf5\x80\xa4!\xfbY{\x11\xe0\x15\xb5\xc7\xed\xc1>\xb2\x85x;\x0d\xb2\x0b\xba\xef\xb0&+\x15Z\xbd\x1c\xc7\xc4k\xf2KCk\xb2z\x89D\xdd\xd8_\xcf\xb13O8\xdduH)\xe9\xf1.?}\xc4\xc5\x16i)\n\xe6\x10\xd7\xeew9U\xa0b\x8bi\xe5&\x85\xfc\x1e\xe9 \x8f\x04\xab\xa2\xab#B4\xc3\xd6\xd9\xf3J\xfa\x16\xea\x9e\x11\xbb\x96\x9e-o\xdd3\x0e\x95\xfb\x94[\xe5\xf2\xc4\xa9t\\\xd3\xe3\x9f\xf0W\xd1\xe6\xfd6\xda\"_H[\xec;i\xeb\x1d\x1bz*\xc9\x7f\xe6A\x0d\x84k\xb4\xb0u\x85\xef\x94\x83\xa1\xad \x16M\x1d.o\x8a\xf7\xb4E|\xa8mj\xb5\x02!Am%\xe5\nOj\xeb\xd2\x05\xcfK\xd2\x9f\xfd\xd0E\xfb\"\x89%x-%,\xa8\xed/\xe6S(\xd4\xc7,\x8b\xcd\xe7\x91\xcb3\x03\xdd\xa8 \xad`\x81t*\xb2aBv\x89n`\xbd!5\x95\xab\xc6\x10l\x89Z\xc0\xad\xed\xd1[\\\xad\xf8\x16_;\x83\x9d(\xc9\xe3&oU+\xb3\x86\xc6\x95\\\xb1\xa8\x88\x9e\xae\x08Z\xc9\xb9qG+\x82HU0\xb9\x80\xf1\xc7\xda5\xe8\xa3b\xa3\\a\x80\xde'\x8b-\xae*R\xaaP\xa1\\k\x13\xc1M\xae\xd2\x97\xa3Q\xc2\x99\x8a\xe7\x94mm\xc3\xa1H#\x14\xe6,\x11\xb3;\xb1\xf4\xfe\xf2\xff\xbc\xbdx\xfd&\xfa\\\xe0\xa1\x96\xf32\xab\xc0\x05k*A\xea=\xae\xc5}\xda7\xb1^\xd0\xeb\x88ySE\xd2X\x9e2\x92G'@\x94\xd6\x1c\xd0\xa41\x05\x8d\xc9 f\xdad-\xbe>\xf6R0\xad\xc3\xb5\xa7\xe2\xf4\x85\x06\x15\x94\xe0\xe1\x01e\xf6\x93;h\xd0o]\x8e\n\xd7\xd6\xd9\xd4<\xc8Lk\x9a\x19\x99\xe2\xa8}M\xd6\xf4.\xe4\xa1Q/\xd8\xed\xa8Pl\x99\x8er+\x13\xe8\x07\xa9\xf1\xf7\x0f\x04\xfcRz\x02J\xec\x0d\xd2\xae\xc9\xfdU\xbc>(\xfd\xab\xa34\x08\x11%\xcd]\xd2~R>\xbb\xd0.\xa3\xbc\xf3!\x16[\xe3H=\x85IW^\x93\xfb@T\x1e\x99\xa8X\xc1*.\xeaF\xd1\xfa\xae\xc9=Z\xd7l\xa7^\xbf\xc0\xea\x0c\xbbU\x9b\x96\xda\xdc\x07\x93[\x12\x84\xf7{R\xad\x9e\xc9w\x17\xff\x7fr/\xff\xff$\\\x86\xf1\x1b\xaa\x12'\xaa\xf0\x8b\xc5sw\x88zEJ|\x7f\xb5'5e\xc7\xac\xde\x13\xe8\xc3\xa3\xd6\xab2F:\xe39\xa3w\xca(p\xde\xf6\xfeU\xbf\xa5\xecV`\xf6\xde\xdat\xe4.D\xe8L\xcdZR8\x7f\xb7\xf6\xf1:\x16r\xf0\xd4\xa0\xcc\xedZ\x95\x0bV\x93\xd5x\x7f\xac:\xb0\xab\xcf\xee\xf1\x86Vj\xab\xec\xd8p\xea\x86\xdf?\xe2\xe2\x95\x9aG\xe7\xf3\xe3+r'\xae\xae\x89g\xaa\x8e6\x96h'\xf6\x91y[k\xf3o\xe9\xbb\xf2\x9f\x86\x10\x83\xb9Yw^\xe0\x0d\xb9\xd4g\xbc-\xf4\xef\x9e\xc4~iH\xad9\xe72Y\xe9:\x82v\x8c\x0bD\x14\xcdDqS\x1c\xaf\n&\xf0\xdc\x0bU\x12\xfaJl\x04S\xd9\xab\xfa\xab\x7fh\xa1\x82l6-\xc1\xc9b\xd3\xf8\xb8\xa1\xb6\x8b\xd4Tq\xa5\x12\xf3\x0d1\xb7\x98#N\xc4 \xa2\x82\xb7\xbc-\x8e\x9aJw\xa7\x95\xa6\xb2\xdcRGS\x8b\xf7T]\x14\x8b\x94\xcd\x06\x91OZ\xa1\xcd\xe5\xc5Y\xcf\xd36aE\x8en\xb7\xa4v5\"\x0f-\xb0`\xb5NCQ(\xdb3\x00\xdb \xe5\x16s\xbd\x01\xb3=\xe3tG\xfb\xc6;\xb6\xeb\xcb\x1d\x04\xdbj\xb2'jx\xfb\x0e\xd7\xddG\x8aD\xee\x87nQ-\xd3\x17\xbb\x1f\xe3\x86\x11Q\x8dn\xf4\xcb\x92\x15\xd7>\x11\xc5\x11\xe3\x03\xe8g\xa2\xc5\x05\xfd\xcc\xc8@?\xf3I\xf53\xe1\xe6\xa5U4Y\xf43C\xe5\xcc\xb8\x84p\xd0)(ib;\x8d\xf8H\xa8\x0d\x944\xa0\xa4q\x1b(i\x94\x81\x92\xe6\xd0@I\x03J\x1a\x9f\x81\x92\x06\x944\xca@I\x03J\x1aP\xd2\x80\x92F\x1b(i@I\x03J\x1aP\xd2\xf8\x0c\x944\xa0\xa4\x01%\x0d(i,\xcb\xa1j\x00%\x8d2P\xd2\xfc\x11\x944=\xa1eqM\xecYp\xb0\x99\x1c\x11F\x0cC\x04\x9b!\xb4&\xa2\xa9+\xcd&\xb0\x81\xf5EG'Q\xa1\xa0\xcd(f\xa2\xa0r\xcd*\x0eQD\x16\xe8m\xa5\x00f\xb5Wd\xeb5'Bn\xbf\x86\xc5EV(\x9b\x93\xc1\x81\x9c\xb42\xb0\xbc\xf5\xb7^\xd3\xb3\xc6%\x8f\x88z\x90/0\xe0p\xa2.\x9f\xcf\x8f\xa3M\xb9\xa9\x8cre\xd5\xecHM\x8b\xf6o\xaa\xb7\xb5\xaco\x15\x15\xd9\x92\xaau|Su\x81\xa8\xd1\xf2\xf3\\\xa5V\x12\xce{\x17\xea\xd0M\xa3@\xcek2\xd1\x9f\xc3\xe4\x1f\xd8\xb9#\x84\xdf\xe1\xde\x92\xeeh\xaaw\xd5\xb3-\x90\xeac\xf3\xe8 \xa5\xdd\x82\x0d\xec:\xbeTy\xafC\x12\xf6\x9f\xce\xd7\xa8$ka\xa2_T\xe8\xe1\xb0]4\xaa\xf8\xaa\xee :\x13\xe9\xe7\xe5\xbd\xe6\x07\xe0\xfd\xfe\x13z\xd1\xe6$\xf5\xef\x87|i\xbd!=\xaaZ(Sz8$\xffA\xab\x15-\xb4r\xc2pD\xb4\x07\xd5\x83\xa6!\xd9\xc9\xd1\xaa(\x9b\xd5hI\x88u.\x1d\xd45\xfab\n8\xb5\"\xb0k\xa5P\xe8\xe8x\xa3\xc1\xe5\xc39\x1f}\xadQ\x15\xd4*\xba&\xdc \xdc\xaa{\xf5\xfdQv\xb9\x85\xe9MtS\xb1z\x14\xbfn{\xe30\x0b\xed\x99c?\xec\x92\xb1\x92\xe0\xca5\xf8\x8c~q|\xda\x9a\xdc\x90z\x90h\xe8\xb3\x9a\xa7\xc7\x9f\x94Zl\xb7\x9a\xb8\xfb\xc8 \x1d\x99\x07\xd1\xd4/V\xafH=\x0em\xbd\xa3UA^\xa2\x82\xf1\x1d\xe3/\xf8\xea\x1a}\xbe\xf8\xfa\xab\x8f\xe4\xa7\xe9\xe7|\xf7T\x8a\xd3_\x07\x14\xfb\xd0!\xdf\x16\x0f\xb6\x13iV#}\xa6-i\xf1\xe82?k+\xff\xe8e\x99^\x0e\x9cU\xdf\x19\x17\x04\xa3\x18\x17\"\xcc\x84\x88\xe8E\xa2\x18@&\xb1dX*)\"R\xbf\xa0\xc4/\xe8\x1cm1\xb2\x08J\x16HF\xfde\x1e\x9b+\x8eL\x91F\xc6\xbc\xa5-A\x169\xad2\x11\x91CFAd\xd4O)\xc8\x0e\x9a*\x85\xec\x05\x8f\xde\xf4\xc4\x04!\xa4\x98$\x83L\xabQf!d\xaa\x0cr\x92\x08\xd2U\xbf\x80\x062\x8f\x022\xda\x92C\xea\xc7\xb9\xda\xc7\x04\xe5c\x9a\xee1\xaaz\x88\xde1:(\xc7\x87\xe4\x04\xa5c\xf4\xb3\xa3\xe4\xae\x85\xb2j\x1cg(\x1cc\x1eMV7>\xb0S\x8e\xd15\xceP5\xa6j\x1ac\n\xc0\x07\xd33F[:Jj\xedh\x82\x921\xe9\x0b\xa34\xfaF\xda\xf4\x9eS\xc18]\xbf\x88\x96!j\xd3T\xf5\xe2t\xedb\\\xb9\x18\xfd\" \xa2\x8d\xb4.9\x103j\xb6b\xc3\x85\xd2\xa3\xa1\xa5\"\xa1i\xb9\xa1\x91C\xe8\x99\xb4\xc0\xbe\xc1\xaa\x0d\xa7\x05f\x7f=\xe3\xbf\x90k\x9e\xb5!\xec\xa17o\xdf\xbf\x1e +K\xb6\xa1E\x1bI\xf0$\xd5\xb1\x984\xf8\xc8\xd9\xceK~\xd2\x83\xaf\x83\xd6\x14wS\xbfy|]\xad,\x11\xa6\xf2\x85\xdc\x0e\xea\xce*\xc7.s6P;\xbe8\xd7\xa5\x82!\\)\xd2\x97\xab\xac\x9c\xecq\xadV+\xd58\x1e\xa6M\xbbJ\xbeN\xf4\xa7R\x91\x96%A_\xa2V\xd06(\xb0\x8a\xc1\x11.\xf0\xb2\xa4\xdc\xc9^\x1b\xc8I\x97D\xdc\x12R!q\xcbt]\x0e\\\xf6\x0fp\xf9RMDM\x89\x8b4y\xc4\xce\x18\xc4c\xd1\xe2\x82xld \x1e\xfb\xfd\x88\xc7rh\xc7\x02\xd21\xf4\x1d\xe1\x8afy\xb8*>Q\xbce\x1d\xd3\x97\x13\x8f\x1e\xc8\xdc<\x17\xe3Y\xb9\x00\x1ag\x14\x1c A\xba\x06\xd25\x90\xaei\x03\xe9\x1aH\xd7z\x03\xe9\x9a\x00\xe9\x9a\xdb@\xba\xd6\x1aH\xd7@\xba\x06\xd2\xb5\xc4U\x12H\xd7:\x03\xe9\x9am ]\x03\xe9\x9a\xc3@\xba\xe6|\x06\xa4k ]\xf3\x18H\xd7@\xba\x06\xd25\x90\xaeY\x96CF\x04\xd25e ]\xfb#H\xd7\x06\xf40+\xa5\x11\xf3\xa9\x03\xaa\x0c9\xd9I\xb6}\xa0k\x9f\xe6H\x0cN\x0d\x0fPa\xa2\x01\xbd\x81\xa5\xc9\xeb\xf1\xbb3\xf5\xee;E\x82iU\x08\x16\xea\xae\xd91\x0eR~\x97\xd4!\xf1\xcc\xa3S\xb0r2\x0f>Z\xc9B\xf7\xc5WW\xb6o\xbd\xdc\x8c\x98\xb3Z~\xf0\xe1\xfb\xf3\xc9\x19\xc7\xca\x16\x86E\x0f\x12\xca\xc3>@\xb1z\xa0h]P\x02\xa6\x97P%\x94\x18\x17\xd26\x0b\xd9\x0b\xa4w\x10\xdc \xecu\xf2\xa2{Q|/7\xc2\x97\x8e\xf1eB\xf9\xe6\xe1|\x81\xe4h5\x01\xe9;\x1a\xeb\xcb\x8d\xf6M\xc4\xfb2#~\xd30\xbf\x89\xa8_\xa8\x0dwx`*\xee\x97\x19\xf9K\xc2\xfe2\xa2\x7f\xc7\xe2\x7f\xb3\x10\xc0L\x18\xe0\x1c\x140\x90\x98\xc2\x07\xe38\xe0\x83 \x81\x0f\x87\x05>\x08\x1a8\x0d\x0f\xcc\x8e\x08\xa6b\x82YQ\xc1t\\p228\x1d\x1b\x8c\x0e\x85\xcf\x13\xd0\xc1\x0c\xf8`\x04!L\\P%\xa0\x84SV]\x93\x91\xc2\xd0$\xb8d7$\x01+L-_F\xbcp\nb\x98\x193\x9c\x87\x1a\x86Z\x10\x8f\xe3\x86\xb3\x91COj2\xb7\x18v\x98\x0b=L\x86\xc0\x12\x10\xc4I\x18b$\xe4?\x0bG\x8c\xa5\xe9\x8d'fB\x13\xa7;3\x1dQ\x8c\xd5m\x06\xaa8\x13W\x0c\xc5e\xb3a\x8b\xc9\xe8b\x1a\xbe\x98\x8a0&xy:\xca8\x05g\x0c!\x8d\x99\xb0\xc6\x89h\xe3qxc\xcc\xa1\x130\xc7\x07@\x1d\xa3\xa5\xf3\xb6\xf4|\xd8c\x02\xfa8\x1f\x7f\xf4$'\x1f\x0b!\x90\x991\xc8\x18\n9\x13\x87\xf4\xa4\xa5w\x86\xa1\xcdq\x02\x16\x19\x02LBxd~D2;&\xe9G%s\xe2\x92)\xc8\xe4tlr\x12:9\x03\x9f\x9c\x8aP\x061\xca0b\x94\x8e\x19\xa5\xe2\x943\x90\xca\x89Xe\xa0\xbas\xf0JOR\x16\x16\x98\xd6%\xd20\xcb@\x93\xaf6a\xd42+n\x19A.\x1f\x06\xbb\xcc\xd5\x16'\xe0\x97S\x10\xcc\xc3\x9b#\xb590\xa6\x83\xe7\xe2\xfb[\xeb\xfa]\x0b\xf1\xb3\xee\xdf\xb5!,\xbd[u\xc5x\xac\xc1Q\xbf\xe1rw\xec\xf2]\xd0[\x83\xde\xba\xb3i\xc5\x05\xbd\xf5\xc8@o\xfdI\xf5\xd6\xbe\xfb\xb1GJkk\xcc\xcd!\xba\xb6\x87\xf0\xcb\x8b3\xb3S\xe9^\x02\xbd\xf3\xf07\xd0;\xa7\x8c\x83\xdaf\xb1\"@\xef\x9c\xc2\x85p\x85\x0f&3!\xe6\xf0 @\xef\x9c\x91\xfd0\x85\xfb0\x89\xf9\x00z\xe7c\xf9\x0e3\xd8\x0eY\xb8\x0e\xd3\x99\x0e\xa0w>\x86\xe10\x85\xdf\x90\x99\xdd \x92\xb8\x0d\x19\x99\x0d\xa9\xbc\x06G\xc8\x02\xf4\xceCK`2\xa4\xae\x92&\xb3\x18@\xef\x9c\xc4]\x98\xc3\\\x00\xbd\xb3\xef\xb1([a\x02W!E\xcd;\x85\xa7\x00zg\xd0;\xa7\xb0\x11@\xef\xac\xec\x18\xfe\x01\xe8\x9d])E\x19\x07s\xf9\x06\xde\xb9\x01\xf4\xce\x87\x06z\xe7\x19\xbc\x828\xab`*\xa7`\x02\xa3`2\x9f`\x1a\x9b\x00\xf4\xce\xd3\xf8\x03\xa0w\xee\xec!8\x039\xda\xdc\x04\xbe@:[\xe0!\xf4\xce\x8f_\xe8\xdc\xe2\xa2Z\x8bz\xda\xa2\xbe\xa7\xbf\x8e\xa0\xf3\xdfN5>h\xfd\xa0\xff\x10\xba\x8f\xcd\xad\x8fn\xb3tH\xa4Gw\x08\xe4QI\x0f\xf23\xcf>Z\xa1\xf4\xe8\x83\xf8\xd0\xb2Yl\x08\x11\x04\xbd\xa2\xf1\x9e\x94\x80Iv\xb8+\x0d\xec\x9a\x03u\x85!\xadY\x80\x96\xca\xc2\x93`\x14\xce\xca\x00f\xcd\x84\xb2\xfc\x9c\xb9$ \xeb(\x18k\x16\x88\x85\xb0\x97\xa7+\xd2 \xac9\x00V(\xac\x9c\x04_e\x06\xaf\x92\xa0\xab\x8c\xc0U\x14\xb6\xca\x04Z\x1d\x03YM\x06\xac2\xc0U\x99\xc1\xaa\x08T\x95\x1d\xa8z\x18\x98*;H\x95\x0eQ\xcd\x03\xa8\x02N\x8f\xc1S\xd9\xc0\xa94h\xca\xb16\xf6\x8f\xaf\x99a\xa9\x18(u$$\x15\x00\xa4\xa2\xcb\x93(\x18\x95\xb6~\xc9\x0bD\xc5`\xa8x\x99\xe6AP\xed\xc8\xeeH0\x06@e\x84\x9f\x8e\x00\x9f\xdc\x90q\x08z\xca\x0b<\x85a\xa7\x1c\xa0S\x12j\x12\x01\x9c\x92\xe1&\x7fdx:\xd4\xe4O\xcb\x19\x85\xc9\x022MqV*\xc0\x14\xf7I2\xb84\x03ZrG\xac2\xc1JI\xa0R\x1cRJ\x01\x94\x82^\x9c\n&\xa5BI> )\x03\x8c4\x01D\x9a\x0f!\x05\x80\x9aT\xf8(3x\x14(\x91\xb3\xa5\xce\x82\x8dZ\x88\xc8\x91\x9e\x074\xca\x0c\x19\xf9\x01\xa3\xb9p\x91\x8a\x08\xb8\n\xee\x06\x8b\xf2BE\xbe\x8d_\x14&\xf2\xc5\xb1}\x10Q^\x80h><\xe4\x81\x82f\x01AQ\xd0g\x1a\xe4\x93\x0c\xf8L\x84{\xa6\x80=^\xa8\xc7_\x9a\xd4\x90{\x1a\xcc3\x11\xe4\x99\x00\xf18\xab\x96\x17\xde\xf1u\x8a#\xa0\x1dg\x9c\xc2\x0b\xec\xcc\x83uB\x10N~\x00\xe7\xf8\x96\x94\x0c\xde\xa4B7\x87Sd+\xf0\x8c\xc3 \x9esD\x03G\x81\x06\xf7\xa1Ce\xe9\xf9\xf7\xee,\x87\xc5\x1a%\x02RN\x90rv6\xad\xb8 \xe5\x1c\x19H9\x7f\x17R\xce\x01@\x9bE\xcd9\x84\x98A\xd0\xa9\x0c\x04\x9d \xe8\xec\x0d\x04\x9d \xe8\xecm\x0e\x1e\xeeM\x0c\x04\x9d\x87\x96 \x1b?\x0e\x1d\x9f\x81\x8fgA\xc8\xb3c\xe4Q\x94\xfc\x01p\xf2\x87B\xca\x1f\x00+\x9f\x82\x96\xcf\xc5\xcb\x83cx\x0c1\xcf\x88\x99\xa7\xa2\xe6\x13q\xf3\xec\xc8y\x1c;?\x1a=\x07Ag\xb4d\xf3\xd0tgR \xe8\x9c\x83\xab\xc7\x90\xf5<\xd8z\"`\x1c\xc5\xd7' \xecQa\xddD\x94\x1d\x04\x9d \xe8L\xc1\xdf\xa3^\x9d\x8a\xc1\xa7\xa3\xf0 \xe8\x1cYfL\x1e\x04\x9d\xb6\xcdE\xe8\x9d\x89\x81\xa0s\x02^\x7f\x0cb\xefL\x0e\x04\x9d\xce\x17\x920~\x10t\xe6C\xfcA\xd0y4\x1f O\x9bK\xe6\x04\xa4\xb3\x02~?\x82\xce\xbe4#\x8c;g\x16^,\xf9 \xef\x03\xfc\xf6\xa1\xf2\xf6 Y-\x1d\xab&g(\x11\xab\xfe'\xf7\x8bM\xcf\xcc\x13\x9d\xa2T\x05\xc0\xb7\x04\x9d\x7fw\xd6\xd2<\xd4\xc6\x14\xcb\xff\xa2\x1e\xd9\xa8y\xee\xb3\xb6\x9e\x8fU&:p\x87m\xe2\x13\x80o\x81{l{N\x8c\x8e\"\x1a*\x8eYA\x98j \xe2\xbfT$\x1e\xb4\"U\xb3\xf3og^\xa0w\xef_\xbd\x7f}\xf5\xe1\xcd\xf9\x9b\xf3\xf7\xe7\xaf~<\xff\xbf\xaf\xbf\xbf\xfa\xf0\xe6\xdd\xc5\xeb\xb3\xf3\x1f\xce_\x7f\x1f}S\xbe\x17}\xe8\xfd\xe5\xffy{\xf1\xfaM\xf4\xb9\xa4\x87\xce~|\xfb\xce[\xb0\x16\xba\x9eY\xaf\x94(\x99\xb4\xe1q\xf6\xd4t\x1b\xf5\xb5\x14\xf1Ca2\xe63j\xfc#t\xe7\x9d\xfa\xea<0\x8b\xe8*\x9f Y\x99\x13d\xbcy\x82\xe4\xff\"V\xa3A-C7\xbe\xc2P\xcf\xb0\xda\x7f;\xbf\xb6\x84~\x85&4Cdr\xf5\x8f\xb9\xc6\xbd\xec\xd6D%\x14X\x18LO\x8dS\x83\xd5\x8f\xff\xc3\x9b\x07\xf2T\xba\xfdv\xfd\xe7\xf2W\xcb\xd3@\xba\xbd\xd2\x96\xed\xbd\x1f*\xb4\x00\xd5\xe6]\x86jK\xa8\x8f\xa9K\xe0\xd3\x95\x94+\xd6\x8as\xef\xc6O\xd4\x02Fwc\x83\xdf\xc9\xef\xe8oz\xa6\xbfqE{\np\x8f\x14\x8a\xde\xbaX\x85\x07D\x8do<\x03\x94A\xf7\x8f\xc0k\xe3~`{\xfcK\xd3OS&\xcbv\xf0\xa2\x1c\xe1MM\xc8\n5{V\xa1U\xa3\xe2P!bE\xb7>p>\x11\xe9\xa2\xe95R\xbd\xce\xb9\xd9\xee-\xde;\xd2\xf3\xeb\xa6\xf1P\x96)\xc3\x86u+\x94I\xd2\xba\x11\xaak\x17bk\xc7:Ue}\xf7*\xb63\x9c\xf3\xc7\xf1\xbdP\x8eu\xcd\xa0\xd0m\xaf\xe0\x82\xc9 \xc3\xde\x15\x9b\x01\xe9p\x19\xb9\xc7\x1bZ\xa9\x0d\xb2c\xb3i\xbeV\xf7\x88\x8b$k\x1e\x9dO\xfd\xaf\xc8\x9d\xb8\xba&\x9eY)\xfa\x91\xa3\xa4\x06\x1fO\xb9\xb56\xff\x96\x92,\xffi\xd8=\x98\x9b\xf5\xe7\x05\xde\x90K\xf2KC\xb8X\xe8\xdf=\x89\xfd\xd2\x90Z\xd3\xe9e\xb2\xd2u\x04\xed\x18\x17\x88(\xce\x8c\"\xda8^\x15L\xe0\xb9\x077\xa5\xab\x08\xbc\x03\x89\xca^\xd5_\xfdC\xc7\xa7d\xb3i\xd9Z\x165\xc8Gt\xb5]\xa4\xa6\x9c+\x95\x98o0\xbd\xc5r\xbc\x15'\x88\n\xde\x92\xd08j*\xdd\x9fVz\xaa\xbd\xa5\x8e\xa6\x16\xef\xa7\xba(\x16\xd1\x9c\x0d\xc2\xb8\xb4B\x9b\xcb\x8b\xb3\x9e{nb\xa4\\.\xfd\x9d\xfb \x0f\xc7\xb1`\xb5NC\xf1Ak]\xf9.\xe2*78j\xffb{\xc6\xe9\x8e\xf6\x8dwl\xd7\x97;\x88\x1c\xd6dO\x14#\xe3;\\w\x1f)vO\xe5\xc0-\xaae\xfa\x80\x881\x08\x1a\xd1\x0b\xe9F\xbf,Yq\xed\xd3\x87\x1c1>\x804(Z\\\x90\x06\x8d\x0c\xa4A\x9fT\x1a\x14n^Z d\x16'I\x82\xa0V\x024\x0c\xdf\xb7\xd6\x0b\x80\xfa\xc5\x0d(\x80\x86\xbf\x81\x02(\xd6*{\x03\x05\x10(\x80\xdc\x06\n e\xa0\x00:4P\x00\x81\x02\xc8g\xa0\x00\x02\x05\x902P\x00\x81\x02\x08\x14@\xa0\x00\xd2\x06\n P\x00\x81\x02\x08\x14@>\x03\x05\x10(\x80@\x01\x04\n \xcbr\xa81@\x01\xa4\x0c\x14@\x7f\x04\x05P\xcf]Y\\\x13{\x16\x1cl&G\xdc\x10C\x06\xc1f\x08\xad\x89h\xeaJ\x13\x07l\x0c}\xd11GT(h3\x8a\x99(T\xdc\x10\xae\x02l\x90\x05z[),Y\xed\x15\xd9z\xcd\x89\x90\xdb\xafaq\x91\x15\xca\xe6d\xc0&\xa5\x95A\xe0\xad\xbf\xf5\n\x9e5.\xf9\x04 \xcf 0\xe0p\xa2.\x9f\xcf\x8f\xa3M\xb9\xa9\x8cre\xd5\xecHM\x8b\xf6o\xaa\xb7\x19\x06\xae\x8e\x8alI\xd5:\xbe\xa9\xba@\xd4h\xf9y\xaeR+ \xe7\xbd\x0bu\xe8\xa6Qx\xe65\x99\xe8\xcfa\xf2\x0f\xec\\\x8f6\xcbroIw4\xd5\xbb\xea\xd9\x166\xf5\x11wt\x90\xd2n\xc1\x06d\x1d\x9f\xd3\xbe\xd7! \xfbO\xe7kT\x92\xb50\xd1/*\xf4p\xd8.\x1aU|Uw\x10\x9d\x89\xf4\xf3\xf2^S\x01\xf0~\xff \xbdh\xd3\x8f\xfa\xf7C\xbe\xb4\xde\x90\x1eU-\x94)\xf5\x1b\x92\xff\xa0\xd5\x8a\x16X\x90\x9e\x0e\xa2=\xa8\x1e4\x0d\xc9N\x8eVE\xd9\xacFKB\xacs\xe9\xa0\xae\xd1\x17S\xc0\xa9\x15\x81\x95C\xb7\xc5\xbc\x1b\x0d.\x1f\xce\xf9\xe8k\x8d\xaa\xa0V\xd15\xe1\x06\xe1V\xdd\xab\xef\x8f\xb2\xcb-Lo\xa2\x9b\x8a\x8d\xb5\x0cmo\x1cf\xa1=s\xec\x87]2V\x12\\\xb9\x06\x9f\xd1/\x8eO[\x93\x1bR\x0f\x12\x0d}V\xf3\xf4\xf8\x93R\x8b\xd8V\x13w\x1f\x19\xa4#\xf3 \x9a\xe5\xa5h\xc5\xe3\xd0\xd6;Z\x15\x8a8\xcfw\x8c\xbf\xe0\xabk\xf4\xf9\xe2\xeb\xaf>\x92\x9fRn\x0c=TZ\x9e\xfe\xda\x13l\x7f;\xdd\xb3Z\xf0\xd3_\x0d\xc17t\xe9g\xcb{\xedd\x98\x95R`\x9e\x0d\xc9\xee.\xd5\xe5gm\xb5\x1f\xb7\xe8\xd2\xcbrk\xf9\xbd\xaeC\xbf[\xee\x9fEB?Lf>\x05.\xa0\xc0L\">\x80B\xfbX\xba\xc3\x0c\xb2C\x16\xaa\xc3t\xa2\x03(\xb4\x8f!8L\xa17d&7\x88$jCFbC*\xad\xc1\x11\xb1\x00\x85\xf6\xd0\x12\x88\x0c\xa9\xab\xa4\xc9$\x06Ph'Q\x17\xe6\x10\x17@\xa1\xed{,JV\x98@UH\xd1\x1fO\xa1)\x80B\x1b\x14\xda)d\x04Ph+;\x86~\x00\nmWJQ\xc2\xc1\\\xba\x81wn\x00\x85\xf6\xa1\x81B{\x06\xad N*\x98J)\x98@(\x98L'\x98F&\x00\x85\xf64\xfa\x00(\xb4;{\x08\xca@\x8e67\x81.\x90N\x16\x00\x856\x9aX\x90\x07Qh\xb78\xad\xd6\xc6\x9e\xb6(\xf4\xe9\xaf#(\xff\xb7S\x8dWZ?\xe8?\x84.]\xfb\xafCaw\x9b\x9fG\xdb\xdd\xc1\xc6\xa9\xf2\xee\x0c\xaa\xeeA\x91\xcc\x83\x8fV\xd8=\xfa`>xo\x16{C\x04Q\xbah\x80*%\xc2\x93\x1d\x9fKC\xe7\xe6`sa\x0cn\x16\x02\xa7\xb2\xf0$\x18\xc5\xdf2\xa0o3\xb17?\xc7/ y;\nw\x9b\x85\xba!\xec\xe5\x15\x8b4\xccm\x0e\xe2\x16\x8a\x83'\xe1m\x99\xd1\xb6$\xac-#\xd2\x16\xc5\xd92\xa1l\xc7`l\x93\x11\xb6\x0c\xf8Zft-\x82\xadeG\xd6\x1e\x06W\xcb\x8e\xaa\xa5cj\xf3\x10\xb5\x80\xd3cxZ64-\x0dKs,\xe6\xfd\xe3kf\x1c-\x86\xa2\x1d\x89\xa1\x05\x10\xb4\xe8\xf2$\x8a\x9e\xa5\xad_\xf2\"g1\xdc,^\xa6y\x98Y;\xb2;\x12\x8c!f\x19\xf1\xb2#\xd027\xc6\x1d\xc2\xca\xf2\"ea\x9c,\x07J\x96\x04\xf3D\x10\xb2d|\xcc\x1f\xca\x9e\x8e\x8d\xf9\xd3r\x86\x8d\xb2\xa0bS\x9c\x95\x8a\x88\xc5}\x92\x8c\x86\xcd\xc0\xc2\xdc!\xb6L8X\x12\n\x16\xc7\xc0R\x10\xb0\xa0\x17\xa7\xa2_\xa9\xd8\x97\x0f\xf9\xca\x80{M@\xbd\xe6c^\x01d)\x15\xef\xca\x8cv\x05J\xe4l\xa9\xb3p\xae\x16\xd3r\xa4\xe7A\xb92c\\~\x84k.\xbe\xa5\"\x02\xae\x82\xbb\xd1\xad\xbc\xd8\x96o\xe3\x17\xc5\xb5|\x81w\x1f\xa6\x95\x17\xd1\x9a\x8fgy\xb0\xabY\xc8U\x14\xa5\x9a\x86Q%#T\x13\xf1\xa9)\xe8\x94\x17\x9b\xf2\x97&\x15#H\xc3\xa5&\xa2R\x130)g\xd5\xf2\xe2Q\xbeNq\x04\x16\xe5\x8cSx\x91\xa8y8T\x08s\xca\x8f8\x1d\xdf\x92\x92\xd1\xa6T\xac\xe9p\x8a\xec.C\x1f\xa2\x0d\xe9\xe7\x9e\x06\x8e.\x0d\xeeC\x87J\xd8\xf3\xef\xddY\x0e\x8b5J\x04\xa4\xa7 =\xedlZqAz:2\x90\x9e\x82\xf4\x14\xa4\xa7 =\x05\xe9\xa9e =\x05\xe9ios\x80pob ==\xb4L\xa0\xf8q\xb0\xf8\x0c`<\x0b4\x9e\x1d\x1c\x8f\xc2\xe3\x0f\x00\x90?\x14D\xfe\x00 \xf9\x14\x98|.P\x1e\x1c\xc3cPyF\xb0<\x15.\x9f\x08\x98g\x87\xcc\xe3\xa0\xf9\xd1\xb09HO\xa3%\x9b\x07\xa3;\x93\x02\xe9\xe9\x1c@=\x06\xa9\xe7\x01\xd5\x13\x91\xe2(\xb0>\x01Z\x8fJ\x00'\xc2\xeb =\x05\xe9i\n\xf0\x1e\xf5\xeaT\xf0=\x1d~\x07\xe9\xe9\xc82\x83\xf1 =\xb5m.4\xefL\x0c\xa4\xa7\x13\x80\xfac\xa0zgr =u\xbe\x90\x04\xee\x83\xf44\x1f\xd4\x0f\xd2\xd3\xa3\x89\x00y\xda\\2\x19 \x9d\x0e\x00\xd2Sm\xf3\n2\x82\xd9}\x05\xea\x90q\xfdX;1\xf8\xa9\x0dG\x17\xd0\x0b\x86\x1f\x94\xfc\x00\x80v\x97\xdc\x80\xa4\x9f\xac\xe4\x0f!\xf7\xad\xc8\x9d\xb8\xe2\xe4\x97\x86TE\xe2\x8d\xcco\xc8\x9dxg\xde\xb8$\x05\xa17rI \x9a\xdaL\xb72IT\x9b\x1f\xda\xa4\xd5\xba\x08kzA\x97\x92)\x98S\x8b\xeb\xc8\xc5<\xf6h\x95\xb8\x03_^\x19\x0fL\xc2I\xa3\xfc\x0d\x03\x90+\x17w\xaem}}\xd0\x01\x11\xb0\x83\x80\x1dd\xdb\xb4\xe2\x02;hd\xc0\x0ez\xbc\xec\xa0~\xae\x18r\x82\xe4\xccK\xb8\xd0\xcb\xfe(%\xc81\xebt \x027H\x19p\x83\x80\x1b\xd4\x1bp\x83\x80\x1b\xd4\x1bp\x83\x04p\x83\xdc\x06\xdc\xa0\xd6\x80\x1b\x04\xdc \xe0\x06%\xae\x92\x80\x1b\xd4\x19p\x83l\x03n\x10p\x83\x1c\x06\xdc \xe73\xc0\x0d\x02n\x90\xc7\x80\x1b\x04\xdc \xe0\x06\x017\xc8\xb2\x1c<\x0d\xe0\x06)\x03n\x10p\x83\xfeh\xdc\xa0\x87\xe0\xa9\xc8q\x96\x88+\\\xc8^Y\x92\xd5F\x855x\x1ac\xe5B\xbd\xfcj\xf4nGZQ!n\xb3\xdc!\x02\x8d\xf3\xe8\x92\xe9\x8ff\xe9\x9b\xb1\xde\xb0\x07\x99,\xee\xdc\xcd\x93\x8f\x96\xcc2\xf6\xc2\xe3\xc0\xe7L{8\"6\xe5\xec\x95\xaaG\xf4]\xc1\xbd\x18\xe8\x9bg\xee\xec\x0f\xfa\xa2\xbb\x00-\xe1\xe7\x88\xec\x13\x08 \xe3\xc1Bw\x8a6ow\xc9VX\xe0\x0c\xa5J\x8d\x17v\x13\xa5\xccw4\xa5\xf2\xae\xc4\x02\x8b\xd9\x01>\xddg\xf5\x99 \n\xbd1\xcb[\x15\xa2\xa2\x85\xd9 \x10\xd9\x0fM\xe4\xbf%)9\x93\x93\x8b\x08.X\xedY\xbe\x9b\x12\x17l\xb7\xa3B\xf5\xb6\x93\x83\xfe\xa7#\xdb\x8a\xea\xb5\x17\xdc\xb3_>\xc3e\xa9\xb8\x1e\xed\xc8@\x97\xa5f=\xc8\xc4\xe4\xe2\xd0F\xe3\xec\xf2;\x93\xa3\x95 \xf5\xbeV\xb4\x16\xca\xddY\xb6\x07e\xc9A\xb0+\xffA\xf1\x15\x86\x82\xdb\xe2\x8f\xbf\xca\x1eoh\xa5\xc6K/C\xac\x7f\xc4E\xa00\x8f\xceg\x83)\xea\xde5\xb9?\x92W\xe5m\xc0>\xeaJkm\xfe-kE\xfe\xd3 ?\x98s\x0do]\xe0\x0d\xb9\xd4l\x96\x85\xfe\xdd\x93\xd8/r\xbeU\xc9(\x9e\xe0^.\xcbv\x8c\x0bD\x14\x9e\xa2@\x18\xc7\xab\x82 <\xf7\xa6\x8f\x84q\xc5\xb8\xc0\x1b\xebW\xd9\xab\xfa\xab\x7f\xf44\xe1\x16\xc9\xb3`#\x1f \xc2vQ\xc1\x9aJ\\\xa9\xc4|\xab\xce[\xcc\x11'\xe2\x04Q\xc1[\x80\x92\xa3\xa6\xd2=~\xa51\x9b[\xeahj\xf11D\x17\xc5\xe2\"\xb1\xc1\x12\x9fVhsyq\xd65\xe6v\xfd\xcc\xd1\xed\x96\xd4\xaeF\xe4\xc1\xbf\x0bV\xeb4\x14W\xa0e;\xb5\xabq\xb9sQp\x90\xed\x19\xa7;\xda7\xde\xb1]_\xee`T\xa9&{\xa2\xa2\xf5\xdf\xe1\xba\xfbH\x91-\xea\xd0-\xaae\xfa6\xa9\xe3\x00Y\x84B\xaa\x1b\xfd\xb2d\xc5\xb5\x8f2x\xc4\xf8\x00l\xd1hq\x81-:2`\x8b>^\xb6\xa8cO&\xf8q\xd4Q\xcf&\x13X\xa3\xca\x805:a_\x08\xacQ`\x8d\x1a\x03\xd6(\xb0F\x815\n\xacQ`\x8d\x02k\x14X\xa3\xa9\xab$`\x8dv\x06\xacQ\xdb\x805\n\xacQ\x87\x01k\xd4\xf9\x0c\xb0F\x815\xea1`\x8d\x02k\x14X\xa3\xc0\x1a\xb5,\x07\x83\x0fX\xa3\xca\x805\n\xac\xd1?\x1ak\xd4*H\xc7\xf5Y\\\x93{_yF\xc0\x9e!\xcf`3\xb5hn\xa7&Z\xd8\x9c\x83E\xc7\xb4Q!\xb2\xcd(\x96\xa4X\x04-O\xca\xcf\x9eY\xa0\xb7\x95\xc2\xde\xd5\x1e\x9a\xad\xd7\x9c\x08\xb9-\x1d\x16\x17Y!~N\x06\xac'\xe9\xab_\x0c-\xb6\xb5\xdeYk\\\xf2\xa8\xb7<\x01\x13\x87\x13u\xf9|~\x1c\x05+Le\x94+\xabf\xa7\xd8n\xe6oj\x14*p%\xeb\xa3\xa3E[R\xb5\x8eo\xaa.@7Z\x96\x9f\xab\xd4J\xc2y\xefB\x1d\xd2j\x14\xfe{M&\xfas\x98\xfc\x03;\xd7sv\xa0\xe5\xde\x92\xeeh\xaaw\xd5\xb3-\xbe\xec#:\xe9\xe0\xad\xdd\x82\xf5\x1a\x89\x8f/B\xde\xebP\x8d\xfd\xa7\xf35*\xc9Z\x98\xa8 \x15z\x9ah\x17\xd3*\xee\xac;\x88\xceD\xfayy\xaf\xa9\x13x\xbf\xff\x84^\xb4\xe9Z\xfd\xfb!_ZoH\x8f\xaa\x16\xca\xd4@\x83\xe4?h\xb5\xa2\x05\x16\xa4\xa7\xcfh\x0f\xaa\x07MC\xb2\x93\xa3UQ6\xab\xd1R\x19\xeb\\:\x08p\xf4\xc5\x14\xa0lE\xa6\xe5\x94f1\x15G\x83\xcb\x87\xf31osT\x05\xb5\xbb\xa8 7\xc8\xbf\xea^}\x7f\x94]naz\x13\xddT\xac\x1e\xc5\xf5\xdb\xde8\xccB{\xe6\xd8\x0f\xbbd\xac$\xb8r\x0d>\xa3_\x1c\x9f\xb6&7\xa4\x1e$\x1a\xfa\xac\xe6\xe9\xf1'\xa5\x16\x11\xb0&\xee>2HG\xe6A4+\x8e\xd5+R\x8fC~\xefhU\xa8+_\xf9\x8e\xf1\x17|u\x8d>_|\xfd\xd5'\xf0\x93\x126\xf4\xdc\xd9\xee\x04I\xeesXI\xb9j\x91#j6?\xf6#\x8fI\x13\x0e\xba\x847\x8c\xef\xe5\x8a\x15\xac,\x89\n\xdc\xfe`\x1e\xd95\xa5\xa0\xe6\x89\x87\x95\x8a\xf0\xd3_[\xe7\xfc\x16P\x8a8\x99;\xca{\x94\xc8iP1\xb7W\x1ey\x88\\\xe6o\xd3u\x1f\xe6\xc1\xdf\x8b\xecc\x12''\xed\xe0\xd0\xd6\x8d\x8e{\x8e[\xc2\x95\xda)\x8c\x11\x038\xc8\x14\xa8\xa9\x9dM+.PSG\x06\xd4\xd4\xc7@M=hX~\x1eiGM\xb5\xc5H\xa6\xcf\x8d\xa7yd\xcd/jEz\x80\x0c\x9b!\xf8\xffc\xefm\x9b\xe3F\x8et\xd1\xef\xfa\x15y\xe7\xc3\x91\xe6\x1c\x8a\xf4\xd8\xbb\x1bq\xb5wn\\Y\xd2\xd8\xdc\x1dK\x0c\xbd\x8cc\xef\xc6\x9e\x1e\xb0\xbbH\xc2\xec\x06\xda\x00\x9a\x14=\xeb\xff~\xa2\xde\x80\x02\xba^\xb2\n\xd5T{\x94\xf9\xc1\x1e\xb1\x81DU\xa2\n\xf5\xf2<\xf9\x94\xfcD\x15\xeb\xb6\xd6\x93_>\xda\xc9\xcf\x95\xda(\xd7\x11\xbbj\xea\xcd\xf0I\xdb\xf3\xe7\xf9\xc2\x11\xd9u\xfc\x1b\x91]1\x9fWiDv%\xb2\xab\xdd\x88\xec*\x8c\xc8\xae\xfbFdW\"\xbb\xba\x8c\xc8\xaeDv\x15FdW\"\xbb\x12\xd9\x95\xc8\xae\xd2\x88\xecJdW\"\xbb\x12\xd9\xd5eDv%\xb2+\x91]\x89\xecjX\x0e\xe2!\x91]\x85\x11\xd9\x95\xc8\xae_/\xd9U\x13T\x9c%\x19\x93|r\x16\xc1\x01\xa3\x1f\x90\x93c(\x1cz\xf88\xff=Un}5\xdc\xe6\x12m5<\x0bF\x0ekM\xb9V\xed\x0e\xad\xd6j2I\xc7v:\xf3\x88\xab#\xaf\x8b\xa6\xebHM\x9a cGy\x9f\x9e\x99\xdb;46:R\x88:\xaa\x14\xea\"\xe2\xeaHK\xe6\xeal'\xc7rOn%\x8a\x0eQt\x88\xa2\xb3\xef\x89(:\xb3(:\xea#\x9e\x83\xa5CJiD\xd9\xb1\xffN\x94\x1d\xc3\x88\xb2C\x94\x9d\xc1\x88\xb2\xd3\x11e\xc7nD\xd9\xd1F\x94\x1d\xa2\xec\x10e\x079K\"\xcaNoD\xd91\x8d(;D\xd9\xb1\x18Qv\xac\xd7\x10e\x87(;\x0e#\xca\x0eQv\x88\xb2C\x94\x1d\xc3r\xd0'\x88\xb2#\x8c(;D\xd9\xf9\xea);6\xe6\x88\xabp\x9aK\xe0!\x10\xc4\x17\xef+#\xec\xe8\xa0\xfd\xddC\xc5\x99\xe2\x9b\x82sQ2\xfe\xa1\x13\x07\x80\xae\xf6\x0f\xfb\x14g\n[i4Sg\xea\x9a\xa3e\xd1\x0cu\x8a\x82*\x03;[\xfd \xa0\"n\x13\x9e\x92\x9a\x1d\xc9\xc3\xba\xc4\x07t\xba\x91\xb2m\xea\xfa\xea\x00\xe5\xd9\xb0\xe6v\xcd\xa4{\xde\xb3\xd8\xe7\xb2\xed&\xc7h\x83~\xbe\x93d\xa2\x9c)>@\xd1\xa9A\x86\xd7Jz\xbe/\xda\xfel\xd9\xfd\xf9\xab\xf3%A\x10\x95%\xbaN\xb0\xb8D\xd7\x99\x18\xd1u\x8e\x81\xae\xb3\xd7\xb0\xacg\x10\xf6l\x1d\xf3\xfcj\xd5\xdd$\x11\xd0q\x90\xf2\x958\xaaY~n\xa7\x85\x93_\xa7b\xdd\xd6Z8\x91\x8fl\xf2K\xa5\xb6\x0et\xb0\xae\x9az3\xfd\x9aM\xbd\x15{\x87J\xef\x7f\xea\x88\x0c4\xfe\x8d\xc8@\x98\xef\xac4\"\x03\x11\x19\xc8nD\x06\x12Fd\xa0}#2\x10\x91\x81\\Fd \"\x03 #2\x10\x91\x81\x88\x0cDd iD\x06\"2\x10\x91\x81\x88\x0c\xe42\"\x03\x11\x19\x88\xc8@D\x062,\x071\x83\xc8@\xc2\x88\x0cDd\xa0\xaf\x97\x0c\xa4Y)\xce\x92\x8c\x19?9\x8b\xe0\xc0\xd3\x0f\xc8\xc7\x112\x02[,\x19\xc7\xd8Y\x90\xe8\xe8{y{O\xca\xe1sn\x85\xe9O\xc2$\xbeG\x97L\x80\xfdJ{\xc5\xc0\xfbG\xfb\xe4\xd2\xd9\x8a7\xbf~\xaf\xcdB\xe3Q\xcfV\x17\x1c-\x87GW\xd7\x85\x15\xee\x1fu&\xcdu0\\\x7f\xb7\xc4\xaeU%\xe0j]\\\x8b\xb9\x9a8\xe0M\xbe\x15\xc1\xa0!\xfa\x8e6\xa2\xef\xecY\\q\x89\xbe31\xa2\xef\x1c;}G\x0d\x12x\xee\x8ed\xebL\xbfYV\xee\x8e\xfe\xccz8<'~\x12\x8f\xed\xd3H$\x1e\"\xf18~'\x12\x8faD\xe2!\x12\xcf`D\xe2\xe9\x88\xc4c7\"\xf1h#\x12\x0f\x91x\x88\xc4\x83\x9c%\x11\x89\xa77\"\xf1\x98F$\x1e\"\xf1X\x8cH<\xd6k\x88\xc4C$\x1e\x87\x11\x89\x87H\xab\xf9\xcb\xae\x15-\xb9\xe1\xdf\x1b\xb1\xe5\xbeeb\x0f\xfc\xa6\xa8V\xedMqk\xdd\"\x9d8V\x95\x9c\xfa6NST\xe4\x0b\xed\x13\xda\x8em5\xe8\xb4\xacwU\xc7\x9am\xd1t\x0f\x92l\x88x\xa4\xedy\xcb\x9a\xcfF\xba\xe9\xc3N\xe1\xdd\x96U\xc6\x07\xb6q\xc7\xaaa\xc5J\xe08-\xabVb\xea\xa7x\x83\xfa\xae\xea\xbd\x80\xbf\xb1\xa6~.\x17\xcf|\xfa\xac\xc2\xeft\xa4\xdf\xa8\xaf\xfdM\x02\xf3\xa2?\x04\x937\xb6K\xfe\x0d\\\x97w\xe2\xcd\xf2E@\xf5 \x9d\x9e\xa8\xe5\xc2\xa6x\x80U)\x90\x14A\x8f\x12_\x03~\x81\x0f\xa5\xeb9T\x0fp\xcf\x1a\xc6[o\xe7\xed#\xa3W2\x94\xb0h\xcc\xe2\xb1\xcf\xc5\xb2\x13\xdc5\xa3\x14\xb6GY\x9fd~PBc\xf9\xe4\xdb\x83\x1a\xc3\x9d\xb3\x0b@\xcc0\xc45rz\xee\xdb;E\xf4+\x88h\x86\xa0\x9e\xea\xfe\xe6\xaa\xf0\xd6\xf7j_D\xc0\x95^\x7f\xe2;5\x9a\xfd\xb8_\xfc\xb0>\xcaPi\xfd\xee\x86\xd7\xe5\xae\x96\xa3\x81\xe8Y\xf2\xe2\xa6\xde:_\x94o\x02*\xcd9\x0d\x95\x86\xa8\x8f\x8b;9\x98V8\x1d\nm\xac\xd9\xda\x131\x81\x91\xddX!\x88\xfc=\xba\x9b\x9e\xeao\xad ^y\xd8O\x02\xc7\xd7!\x16\x1b\x14]S\xdc9>P\x8a_0\x031\x0e\xc7\xa1\xde\x16|\xbd\xaa\x8b\xa4\x1e\xa9?^e\x0b\xc5u\xc3\xd8\nv\xdb\xba\x82\xd5N\xec\x84\xf9\xa8\x1d\xfd\xfc\xc0zE\xa0\x8b\xe2k$z\x9du\x91=X\xb8w\xe0\x9f\xd7\x0f\xe3\xbeGb>\x1b\xe7\xda\xc1J-%\xfb)ta\xb4\x0b\xbe@\x1dv[Ee\x0b\xc7\xe7S\x8fp\xd6\x1f\x87\xe2*\xb5\xd3\xfdo\x89U\xf7\x17\xb5l\x9e\xfa\xda\x16\xd7e%\xd6\xcc\x96U\xa7Ve\xd5\x97\xb8\xe4\x04ge9T\xecs\xb7\xb8e\x8e\xe1)\xf8\xb6\x83\xfc\n\xd7\x01\xa8\xda\xf4\xf3\xf5\x91\xa7\xfc?\x15\xd1\xa8h\xd5D\xf4\xa2\xb8f\xef\xa5\x02\xed\xa9\xfc\xdd\xe1L2\xb7\xb9\x1b\xee\x96\x87\x8e\xc1\xa6n;`\x82\xbe#8?\x96[\xbb\xba+\x1c<[t\x00\xc2 \x13\xce/\x8ax\xbc\xa8\xbf\xf8\x0f\x99n\xc2\x9b\x94&\x8e\x19,%\x17\xe7\xd6\x0c\x91\x18{\x16\xc2\x99\xeb\xabz_\xf0\x0fow\x02e\xd7j>\\\x0b\xbbJv\xac\x95\x1cs\xefKKS\x0bwXY\x14\xe3 \xdbz\xb4\xa3\\Vp\xfd\xfe\xe2\xd5\xc0\xafW\xdb\xb5-_\x03X\x17D\x0e\xba\xe5\xb2n\xa4\x0fAM\xd5\n\xc5z\xf3\x97\xaft\xc4B\xc6\x8c\x8c5\x1c\xfa\x8e\x0f\xf5f(\xb7\x17\xc4l\xd8\x96\x89\xfe\xfd\xfb\xa2\xe9_R\x00\x11\x19\x87E\xb4L\x17&2\xc5c\xe9\xccq\xca\x82\xa2,\xa8}O\x94\x05\x95p\xe6\xf8\xfe\xbe\xfc\xf4\xd0\xf1\xf7\xe8C\xc7\x1d\x0e\xe9\xc0qi\x94\x9eD\xe9I\x83Qz\x12\xa5'\x0dF\xe9I\x1d\xa5'\xd9\x8d\xd2\x93\xb4Qz\x12\xa5'Qz\x12r\x96D\xe9I\xbdQz\x92i\x94\x9eD\xe9I\x16\xa3\xf4$\xeb5\x94\x9eD\xe9I\x0e\xa3\xf4$JO\xa2\xf4$JO2,G\xaa\x08\xa5' \xa3\xf4\xa4\xaf\"=i?\x83d\x9a\x9e4\xb0\xcb\x1e%1h\xe0\xd7\x9c\xde\xb2\x07W\xa9&`\x9a\"\xac\x14\xea\xa3\xde\xb0n\xd7T\x92\xdc`\xe2\xfc\xa7=\xbbElN]Ovq\x04r\xaf\xd8a\x1e\xc6\xca)\xbc\xab\x04\xde-V\xaf\xf5\xd5U\xcb:\xbe \x1c\x17\x17\x8c\xcd\xf5\x96\x8d\xa8\xafH\xbaB\xb1\xdd~\xc1(\x9a\x14\xa9\xe1~_,\x8d;xDE\x0b\xad\xc5\x87\x06\xf8\x7f\x94\xd5\xaa\\\x16\x1d\x1b(+2\x82\xe2B\xd5\x90LwJ\x17t\x1c\xceB>\xa5\x07\xdf&oL@\xb9\xc6\x9e0\x1fL\x0cv\xe0\xe4\xe3\xf2\xe9\xbc\x9d\xbc\xadI\x15\xc4\xbc\xbea\xad\xc2\xdcE\xf7\x1a\xfa#\xefr\xa7\xaa7\x95\xd7U=M\xbc\xd0\xbdq\xfc\x08\x19\x99\xb9/v_\xe1\xda\xa5}my\xb5\x0d\xbbcM\xeb\xcc\xf3\x9c\xbcVu\xf5\xf4\x95\x96\x06\xf9\xaea\xf6>2\xf2\xc3\x9f\xc1$\x13Mp\xa0\xa7\x9bm\x1f\xcaj)\x86\xbfvS\xb7\xcf\xdb\xd5-\xfc\xe6\xf4\x9f~\xf7Hqre\x9a\x9e\xc9\xe2\x9c\x15\xbb\xee\xe6\xec\xee\xbbK\xd6\x15\xdf\x9d\x15K\xd1N\xd4\x0d\xb6t\xd2\x97\xea\n\x15\x90!sT(|\xf3\x10h\x1f\xea\xce\xd1\x0bxj\x0f\xc5Su\xed(\x89\xf4\xe5\xd8\xcf\xd1\xa6\x8e\x8ecfZG\xd4\x0c\xa2f\x8c\x8c\xa8\x19D\xcd\xb0\x1bQ3\x88\x9aA\xd4\x0c\xa2f\x105\x83\xa8\x19D\xcd j\x06Q3z#j\x06Q3\x88\x9aA\xd4\x0c\x97\x115\x83\xa8\x19D\xcd j\x86a9`r\xa2f\x08#j\xc6\xaf\x85\x9a1\x98J\x12\xd6\xc8\x85\x84\xb9<\x18\x8e6\x9fb\xc9DP\xb5G&\xcd3\x16G\x80\xa5\xfa\xda\xee\xe32\xd2\xbc8\x08\xc9\x9a\x90\xac\xc9\xd4\xd2dM\xfc\x9b%\x02,\xd5@\xe44W\xbe\xb1\xe5\xca\xab\xec\xf8\x97\xf6\x0e4$\xc7\xef\xaf\xfa\x03(1%\xd1\x8f\x7f\xa3$\xfaP\xe3\x1d\x8c\x90ZBj\xedFH\xad0Bj\xf7\x8d\x90ZBj]FH-!\xb5\xc2\x08\xa9%\xa4\x96\x90ZBj\xa5\x11RKH-!\xb5\x84\xd4\xba\x8c\x90ZBj \xa9%\xa4\xd6\xb0\x1c\xa8\x19!\xb5\xc2\x08\xa9\xfd\xb5 \xb5\xbe$zJY\x8f\xcb\x07\xa6\x94\xf5\x03\x067\x9clM)\xeb9\xa2H)\xeb\x94\xb2.\xec\xabNY\x7f\xea\xcdY?\xfb\xa5X\xad\x1a\xd6\xb6\x7f\xf7\x9c\x86\xacx\x19C\xf6\xba\xfa\xb7b\x06H\x08\x07j1q\xe1\xbet\xd3\x18g\xa6\xef\xba\x1b\xe5\xe8\x89\xae\xf9q'\xa7\xbb\x18\x0fI\xf4\xaa\xceK\\\x08\xee\xd9c6\xbd\xb3S\x16p\x84\x85\x14\xba\x82\x9f\x96\x90DJ\x10\x8fp8\x0cR\x122\x10\x12\x12\xe9\x08N\x10\x17GF\x98EEH\"\"@\xb1v\x9dt\xda\xe1h\x08)$\x04\x1f4\x88\xa2 d& \xa0\xe8\x07\x19\xc9\x07A\xeaA&\xe2\xc1\x1c\xdaA4\xe9 \x03\xe5 3\xe1 @7\xc8N68\x0c\xd5 ;\xd1\x00O3H#\x19x\x82\x1e\xa2\x18d#\x18\xe0\xe8\x05\x96\xfd\x0d\xf7\xf753\xb5 D,\x98I+\xf0\x90\n\x82\xd3\x93 \xa1\x007\x7f\xc9K&\x08Q \xc2eJ\xa3\x11\xe8/\xbb\xc5a\x88D\x90\x91B0\x83@`\xa7\xfd\xf8\xe8\x03y\xc9\x03~\xea@\x0e\xe2\x00\n\xf9\x0e\x90\x06\xd0\x94\x017\xba\x17O\x17p\xfb\xb2\xee\xa4g!\n\xc4\x04\x0bK\x12\x08\xc7\x04M\x10H\xa0\x07\xd8Q\x87L\xd4\x00\x141 L\x0b\xc0\x90\x02\xbcQ\x8c%\x04`\xe9\x00.2@\x06*@\x04\x11 \x9d\x06\xe0\x01\xdb\xb1\x14\x80\xcc\x04\x00O\x89\xac-5 \xfa\xd7;\xb6\x16\x7f\x0e\xe0?3\xec\xef\x06\xfdS!\x7f\xb1#`+\xb8\x1d\xf0\xcf\x0b\xf7\xbb\x16~A\xa8\xdf\x85E\xba`\xfe\xbc \x7f:\xc4\xef\x80\xf3\x93\xc0\xfc p\x1f\x07\xdb\xa3A\xfbH\xc8>\x06\xb0w\xc2\xf5\xee\xd2`aS\x1cT\x1f \xd4G\xc0\xf4\xd6\xaa\xe5\x85\xe8]\x9db\x06\x85\x19|\xff\xce\x87\xf3\x19\x80x\x0e 0&\xc0m\xb2\x00r\xafB[,\xde\xe4uf\xdft\xf0\xcc\xc1s\xe3N\x10\xc6\x9e \x01\x7f\xf2W@+]b0(\xc8\x85CA\"\x16\xe5u\xc8\x83\x8b\xc6\xa3`>&\x05\xd1\xb8\x94\xd7\xd5\xa0\x86\x89\xc7\xa6 7>\x05\x91\x18\x15\xc4\xe2T\xfe\x96\xddcXX\xac\nr\xe3U\x80\xc3\xac 'n\x05\xb3\xb1+H\xc3\xaf \x17\x86\x05I8\x96\xbf;h\x0d\xe8P\xbf9\x08\x9e\x05\x07\xc4\xb4\xe00\xb8\x16Db[\x90\x86o\x85>\xc18\x8c\x0b\xf2\xe2\\\x10\x81uA<\xde\x05 \x98\x17\xe2\x93\xf9-\x02\xf7\x82\x1c\xd8\x17\x84\xf0/\xc0O\xcf\x108\x18D\xce\xe2\xa2\xf10\xaf7\x81\x95!01\x88(eFl\x0c\xa2\xf01\xc8\x8d\x91A\"N\xe6oWm\x18+\x83t\xbc\xcc\xe9\x8f?1\x84\x99A6\xdc\x0c\xf0\xf0\x0f`\xf03\x88\xc3\xd0 \xb4\xe9\x9d\x88\xa5\x01\xc2\xafg_-\x13\xae\x06I\xc1\xc5\xe3k\x80\xa8e\x02\xce\x06\xa9X\x1b\xf8\xa3\x9a\x0fs\x03<\xee\x06H\xec\x0d\xd0\xf8\x1b\xe0\xa2\x1e\x8f\xc3A\x14\x16\x07^<\x0erar\x10\x8b\xcb\xc1Ll\x0e\x10\xe1\x8d\xc0\xe8\xe0\x108\x1d`\xca\xe8\xe9 \xf90;\xc0\xe0v0\x03\xbbs:\xe4\x17\xfa\xf0;\xc8\x8d\xe1A\x10\xc7\x83T,\xcf\xe9M\xaeQ\xfd\xcbu\x04\xa6\x07^\xe8\x01\xbc\xd8\x1e$\xe1{NW^\xdc\x0fR\xb1?\xa77\x8f&\xaa\xb4|\x18 \xa0p@H\xc0\x02!\x0e\x0f\x84\x14L\x10\xa2qA\x08\x8c\xb6\x01\xac\x06\"\xf0\x1a,F\x08)8!\xc4b\x85\xe0\xafx\nf\xe8tf r\xd8.\x83\xc3\x0e\xbd\x1d\xa2\xba\xf6\xe3\x87\x90\x17C\x84\x10\x8e\x08~,\xd1yO*\xc6\x08\x19\xdbn\x04\xd6\x08Qx#\xec)\xbbjc\x9f\xb7e\x83@\xa8P\xdc\xdcU\xd1\xb1\xe7]\xb9\xb1E\xd9w0\xab6\x811\xc2uy\xc7Z\xd8\xb2fS\xb6\xadX\xa2v5\xb0\xcfl\xb9s\xecx\xf0\xa6\xa4f%j\x18\x97\xdf\xf2\xa1n\xc0\x0b\xb5\xff)\x0eo?\x8c0\xbcVl'\xf7\xe8\xaa\xc4\x1a{L\x957\xb2\x01P\xb5\xf8\xd2\xf0\xea\xe4\xa7\xe1\x14\xc4\xfd70I\x92\xedO\x8d\xd4\x89\xb2Ee\xfeU'\x1c\xda\xf0Ui]z\xaa\xac>\x14wf\xba\xa5s\xdb\xaa+\xbb5s\xb6\x8c\xe1\xf9:\xd7\xb2?\x9f\x17\xb6E\xdb\xcaMny\x8a\xef_w\xac\xedN\xe5\xef\x0eg2#\xbc\xf3\x1e\xe0k\xb9U\x9c\xc293\x00\xce\x04\xd7>\x04\xce}\xb0\xfe\x10P\xd7\xa9\xb0F\x12\x84k\xd3\xc6\x0c\x91y\x9e\xaa\xe3\xf2\xfbB\x1c\xb1y\x02e\xd7j\xa8\xa2\x85]%\x1b\xe0J\xee\xc6\xde\x97\xed\xf8\x9d\"\x12h%\x9d\x00\x95@k\xbb\xfd\xec\xe5\xb8c\x92x\xb44J\xa4\xa5D\xda\xc1(\x91\x96\x12i\x07\xcbJT\x88!)D\x11\x14(\x91v.\x19!\x81\x88\x90\x85\x84\x10O@\xa0D\xda9\x84\x83\x18\xb2A\x02\xd1\x80\x12i)\x91\x96\x12i\xb1D\x81\xac$\x81\x14\x82\x00%\xd2\xba.\x0b\x12\x01\"H\x00\x984\xd1\x18\xf0\x9f\x12i)\x91\x16\x03\xe4S\"\xad\xb09`=%\xd2\xda<\x05\x01\xf9T0\xde96P\"\xed\xbeQ\"m\x02\x88\x1e\x06\xd0c\xc1\xf3\x08\xe0<\x1a4\x8f\x03\xcc)\x916\x0e\x14\xa7D\xda\xde\xbe\xcaDZ\x9fx\xb4\xc2]\x0d\x1fe\xf5BB\x80\xc6\xdf\x06\xf1\xe7\xabb=\x02\x80\xack\xea\xb1sv\x18\xe7\x9b\xf6z\xd1)\xd0\xc3\xb8\xc7\xb7\x08~\xa7vOOF7\x9f\xc0\xfd\x0d\xab$\x92'\x1a\xb4\x04@\xc50\xab`\xecM\xd1-o\xa6\x0d\xfb\xba\xbcc\x15\xf7\xb4\xb7 \xcfX\xcb\x01\xc1>\xbde\x0f\xaezN\x80a\x85\x04\x17j\x88kD\xe6\xb3\xd8\xf4S\x10\xa7\x82\xc0{\xd8Xl\xd5]O\xf6\xb4D\x0d\xf8g\xd9\x0f\x05\x9f\xc2;\x1e\xa9\xba\x12k\xf9\xfa\xea\xaae\x1d_\x1e\x8f\x8b\x0b\x06\xd4\xd0\xb2.s\xb4\x1c\x1b7\x96 \xca\xf2!\xdb\x8b\xaa\x8c\x08e\xb5\xdb\xb0\xa6\\\xea\xbf\x89\xaf\xe1\xb2\xa8x}\xe4\xae\x15oC*\xf0\xbb\xaa\xdf(\x9c,\x0f\xce\x85\xb75k\xdb!\x84rkm\xd7\xf2P\xdf\xb2\xc8x\x8e\xdd\x1f8\xb8\x13x\xde\x12^\xa1\xe0\x8d\x8c\xae\xb8V\x83\xdb.\xd4^n\"\x9b-XA\xe1\xd3\xc3\xfd\xb7r\xcb\xc8\xfc\xd3\xf9\x15\xac\xd9U\xa7v'\xcbN\xf6n=\xa9\x17\xfb\xdf\xb2\x83\xc8\x87\xf08_>\x00+\x967Pl\xb7_0\x8a&\xf7`\xb8\xdf\x17K\xe3\x0e\x1eQ\xd1Bk\xa1\xd4\x0f\xfc?\xcajU.\x8b\x8e\xf5H\x98\x8a\xa0\xb8P5$\xd3]Y-\xd7\xbb\xd5d\xca^\xc8\xa7\xf4P\xe4\xe4\x8d `\xdb\xd8!\xe7C\xab\xc1\xbf\x99|\\>\x9d\xb7\x93\xb75\xa9\x82\xf8\xfc6\xacU\x0c\x04\xd1\xbd\x86\xfe\xc8\xbb\xdc\xa9\xeaM\xe5uU7\x13|A\xf7\xc6\xf1#dd\xe6\xbe\xd8\xcb\xba^\xb3Q\xb2p\xff\xf1\x99\xfcby\xb5\x0d\xbbc\xcd\xc8\xa9\xef\xb5\xaa\xab\xa7\xaf\xb44X-\x0d\xb3\xf7\x91\x91\x1f\xfe\x0cV L\xb6nV\xac\x99n=~(\xab%{\x01RX\xe3y\xbb\xba\x85\xdf\x9c\xfe\xd3\xef\x1e)N.\x9d\x8f\xa7>\xa1\x8f35\xb78\xfbE\xfd\xc7\xdf\x95\xbe\x86M\xfb\xe3\x0f\xf2\x12I\xabQ\x812\xc9j?\x8b_\xc6z \xfcS\xa0\\\xeb\x063zSO\xad1\xfb\xe7\xd3\xdf\xba\x05Bt \xd4\x05\xa4\x13\x82\xa0\xb5\xa8\xf9i2\xa4\xa3^a\xf2\xfd\xa4SB:%\xa4S\xe2\xb1\x99\x94\x1f\x88\xa6\xfdx]\x91N \xe9\x94\xa4R\x83 \x8d\x1e\x04\xb9(B\x90D\x13\xf2w\x07\xd2)\x89\xa3\x0dA$u\x08\xd2\xe8C\xa1O0\x8eB\x04yiD\x10A%\x82x:\x11$P\x8a\x10\x9fL\xd2)\x91\x16M7\xf2z#\x9d\x12\xd2)\x99X\x1eZ\x12\xe0\xd95\x80\xa1'A\x1cE B\x9c\x82D\xaa\x12 \xfc\x92N\x89\xc7\x92\xa8L@:%\xca\x92hN\x10Eu\x02\xd2)\xc1P\xa0\xe0\x104(\xc0\x94\x91tJ\xf2R\xa4 H\x93\x82T\xaa\x94\xd3\x1b\xe9\x94\xe0\xa8UNo\xa4S\x82\xa4\\A4\xed\nH\xa7\xc4j)\x94,\xa73\xd2)\xd1F:%\x16;&\x9d\x92 \x02j\x9a_\xbea\x1f\x7f\x05\xf6\xb9c\xd5\xaa\x85BBx\xf2\xc3~Yw7\xa2\xd1\x15\xabU\xc3\xda\xd6\x91\xd2\xa3\xc6\x10-8\xc2{]\xaf/b\xbd\xe1\xbc'\x15\xf0&\xcc\x97\xcfm\xd9\xca\x97)\xee\x16\xd0\xb7\xfc\xf7\xde\xfd\xa3\x98(\xbe\x98O\ne|\xbc\x04 \x9e\xd8=\x90\xe0\xc9W'x\xa2\xe9\x11\xe9\xba'c\x9e\x07\xc9\x9eH#\xd9\x13\x92=\x19\x8cdOH\xf6d\xb0\xac\xbc\x87\x18\xceC\x14\xdf\x81dO\xe6r\x1b\x12x\x0dY8\x0d\xf1|\x06\x92=\x99\xc3_\x88\xe1.$\xf0\x16H\xf6\x84dOH\xf6\x04\xcb;\xc8\xca9H\xe1\x1b\x90\xec\x89\xeb\xb2 \xaf \x82S\x80\x11\xf5\x88\xe1\x12\x90\xec \xc9\x9e`x\x01${\"l\x0e\xf6O\xb2'6OA|?\x15\xdbw\x8e\x0d${\xb2o${\x92\x80\xc9\x87\xf1\xf8X,>\x02\x87\x8f\xc6\xe0\xe3\xf0w\x92=\x89\xc3\xd8I\xf6\xa47\x92=Q\xe6W&\x99\xece\x0f \xce]\xb3\x0b&\xf8\x93bG\x9a\x1c\x02)v\x1c0\xb8a\xad R\xec\xc8\x11ER\xec \xc5\x0ea\xa4\xd8\x11P\xech\xb4bG\xe3S\xecx*\xa9\x1c\xcdD\xb2\xc3'\xd8q\xd23\xacz\xe5\x8e\xe6TS\xd1\xe2\x88k\x16\xe9\x8e\x86\xa4;\xa6\x16\xa2f\x90t\xc7\xfe5\x88\xdcP\x0c\x9c\xa1-\x96\x92\xe2uf\xc7%<\xdbt\xb9\xa9)\x10\xa6\xa7@\x02E\xc5_\x01\x92\xeeH\xa5\xad@4u\xc5\xeb\x8a\xa4;H\xba#\x95\xde\x02i\x14\x17\xc8Es\x81$\xaa\x8b\xbf;\x90tG\x1c\xf5\x05\"\xe9/\x90F\x81 }\x82q4\x18\xc8K\x85\x81\x08:\x0c\xc4Sb \x81\x16\x83\xf8d\x92t\x87\xb4h\xca\x8c\xd7\x1bIw\x90t\xc7\xc4\xf2Pk\x00\xcf\x10\x01\x0c\xc5\x06\xe2h6\x10\xc2\xc5\x13\xe96\x80\xf0K\xd2\x1d\x1eK\xa2\xe3\x00Iw(K\xa2\xea@\x14]\x07H\xba\x03C\xe3\x81CPy\x00SF\x92\xee\xc8K\xf3\x81 \xd5\x07R\xe9>No$\xdd\x81\xa3\x079\xbd\x91t\x07\x926\x04\xd1\xd4! \xe9\x0e\xab\xa5\xd0\x8a\x9c\xceH\xbaC\x1bIwX\x8c\xa4;\xfe\xe1\xa5;.\x1f\x8c\xc2\xedm\x07\x93t\x870\x92\xee\xf8\n\xa5;\x9a<\xd2\x1d\x0dIw\x8c\x8c\xa4;H\xbac0\x92\xee \xe9\x8e\xc1\xb2\xf2\x1eb8\x0fQ|\x07\x92\xee\x98\xcbmH\xe05d\xe14\xc4\xf3\x19H\xbac\x0e\x7f!\x86\xbb\x90\xc0[ \xe9\x0e\x92\xee \xe9\x0e,\xef +\xe7 \x85o@\xd2\x1d\xae\xcb\x82\xbc\x82\x08N\x01F\x98\"\x86K@\xd2\x1d$\xdd\x81\xe1\x05\x90t\x87\xb09\xd8?Iw\xd8<\x05\xf1\xfdTl\xdf96\x90t\xc7\xbe\x91tG\x02&\x1f\xc6\xe3c\xb1\xf8\x08\x1c>\x1a\x83\x8f\xc3\xdfI\xba#\x0ec'\xe9\x8e\xdeH\xbaC\xd9X\xba\xc3\\\xe0\x91t\x07Iw\x90t\x07Iw\xa4E\x91\xa4;H\xbaC\x18Iwl\xea\xf6\xec\xb2\xa8n{\xe5\x8e\xcbb]TK\xd6\x9e\xfd\xa2X[>\xcd\x8e\x97\xeb\xf5\xef\xd5\xf5\xa2\xf8\x1aKWN\xc4Jf\xbd\x86e\xcd\xd7\x03\xbc\xc1\x16\xc0?\xc3k\x06\xc5R\xb4G\xddVF\xf2\x1b\x86\xd7':\x14G*\xbe\xa1\xa3u\x1c\xf4\x8a\x15\xab\xeaM2\xb0Pl\xf8\x1bI\xbc\x1d\xb3\xad\xff\xaa.\x0d\xfa\x1bt\xf5-\xab\xd4\x96\xbc,\xba\xfe\x96\xf1EAQ\xa9\x02\xb9v\xa0\xdf\xbe\xfb\xf8\xe6\x85XC\xcb\xeb\xd4b\xb4\x14x\xc1y\xd5\xa9iz\x8f\xd1\x98su\xabC\xb9ua\x7fX[^WE\xb7kX\xdbwK\xa19S_\xd7bb\xbc\xbf\xbe\x1d\x05D7\x13=\x1a\xf7\xffV\x1dD\x82\xf8e\xb5\x07\x18\xcd!\x18vb\x8b\xc9\x18 \xf4\xc0D\x04C\"\x18Z\xedX\x08\x86\xc6\x00\x90N/4\xc7\xa6\xf7\x17\xaf\xa6\x95 \xae!q\x0d\xfd\x9d\xf2\x000\xbdo\x93CM\xb7\\\xedO\xfd\xac\xfb\x81\xfegW\xab\xefU?\xa4\\\x8d\x19>\xb4SB;%\xb4SB;%iQ\xa4\x9d\x12\xda)\x11F;%\x88\x9d\x92\xb3\xcb\x87\x85X\xc8z\xb6L\xd4\x9c\xd4\xb9]\xa27H\xf8r\x10\xbfe\xf2\xfb\xa2\xbaU\x9e\x9f\xe8\x98\x1c\xf7\x96\x89k\x92\x98\xb4\xfe\xf4l|\x04&j\xbeM\x0f\xef\xad\xe1\x0d\x8f\x9c\xdb\x1d\x997;\xdc[\x1dq\x1b\x1d\x88\xb5\x9cj\x95\xa8u\x9cZ\xb9\x8d\x1b\xb26J\x10\x93F\x8b6Z\xb4\x05\xe7x\xba|\xe2;\xe3*\x9d\xf8Q\x97m)\xbfV\xfc/\xa8\xe2\xc5\x8e\xc1\xa3\x02\xba\x06Z\xeb8+\n\xd5.6\xac+VEW\xb8\x87V\xe3\x03\xf4Z\xdc\xf3'u\xcbh\xb0]\xae\xc5RG\xbb\x93c\xec\x9a\x0fy\xd7e\xdb1\xfe\xc1\xe3\xb1\xe8]\x99\x9f\xea\xd6:\xf8\x8e\x1f\xa6\xae8\xda\xf1WW\xfcHz\xbc\x19\x83\xd4n+^\xd1bW\x956\x1dti\xbe\xaaIsVPZ\xa0\x9a\xd2B\x95\x95\xe6\x85i\xa4\x05\xab\xac-<\x0d\x19_\xcd\xfbw\xcf\x8f\x92\x1dB\xf1\xda\xcc\x0c\xce\xeb\xf2\x8e\xf9u\x8b\xb5/\x1et\x91Q \xbb\xa2\xab7\xdfz\x98\xb0\xc0>o\xeb\x8a\xb9!&i\xfe\xd1\xcf4c$tl\x9ak\x8b\x8b\x92.\xa7\x19\xa8m}/\x17\x97\xdf\xfdf\xf8]\xaca\xeb\xca\x8eY\x0c\xb6\xd9\x85\xf4\xcd\x01\x9a\xa2Td\xd9\xcb\xa2e\x8b\xfeC\\Vr\x9d\xc4\xff\x9b\xfduW\xac-\xfb\xddS\x13oO~\x95>Ue\xf7\xb4U\xc3@\xe0\xb6\xef\xd4+\xfd\x1e\xbe\xfb\xdf}\x15\x87\xd2\x84n\x17i\xb5z~kT\xa2\xbe\x92Mc\xc8\x0f]6\xac\xe8X@\xdb\x19\x86\np\x17O\xb9\x8b\xa7\x08\x9d[\xe3\xf5}\x0f\xffr\x02\xdd\xcd\xae}\x01\xdf\x01\xbf\x9fW\xed7\xff\xfb_\x10M\xb5X\x97E\xeb\xef\xc5\x98o\x8a\xb4\xc0\x97E\x1a\xba\xc7\x87\x80 m\xaa\n0R7Q}]\xff\xa6\xe7\xdd\xe8\xfe\xee\xbc\xc6\xb7 <\xb6\xe1\xb5\x1a\xdd\xab\xe0%\xdb-\xbbi\x06V\x11,\xdah%\xb5S\xadE\xf5\xa3r)W]\xae7\x1d\x0e\xa51\xb2L?\x9b:\xa4f?\x13s \xa73\xd9/G\x93\x0b\xd3x\x9fI\x1e\x02\xf1\xdf8\xfe\x98i]\xc4\xdfdw}6\xec\x8e\xf3_\xfa\xda9\xfd\x89\x1eo\xf4\xb9\xdf8:\xd6\xaal\xb7\xeb\xc2\x01\x11\xc7\xd7\xd0\xd3\xc6\xd4\x93\xfa\xbdF5\xcc\xed\xae\xafY\xcb\xd7\x81\xea\xe3\xca[Z\xf8\x98\x05\xe5L\xeef\xc9\xb9\xa3#\xadS\xcc\xb83\xd5\xce\xae\xd6\xf4;\x9bV\x13\x0c\x0d\xf9\xa9\x18\xc3M\xfc\x7f$\xcb 6 \x9e\xb1\xeb\x17\xf0J\xb8\x85\x97\xfc3h\xf7\xd9>l.\xeb\xf4e\x18\xbe9\xca\x07\x0d\x9b\xef\xbc\x8c\xeaoZV\xa1\xbd\xa9\xef+\x10*S*Q\xda\xe9M\xd4\xee\xe5\xc7w\x7f\xfaV\xe9m,}\xea\x82\xaa\x8d\xb7\"\x13E\x16@\xbdno\xcaqh\x8bR\x1b\xa6\xbd\xf6K\x94\xf0\xc7\xd0z\x7f\xe1\xff\xce\x85\xdfB\xbf\x0e\xea3T\x8dERY\xc99\x96V\xa8R\\\x15\x8b\x1bc\xf5$\x8aBL\x16b\xb2\x10\x93\xe5a\xbc5\x80\xda\x04\xb5\xb99\x9b\xecg\x10\x9f\x85\xb6Fm\xbf\x1f\xd3\xd6(\xf1E\xc2\xfb\xa0@|\x11e\x07\x0en\x98\xe9@|\x91\x1cQ$\xbe\x08\xf1E\x84\x11_$\x84c\x9d\xfd\"\xfe\xe0K\xaf\x89@\xb1\x04ud\xd8`\x1am\x8b\xb9A\xab\x7f4\xcc\xca5\x13KZ\xea\x05\x91\xa7\xc0\x9c(\x88:\x85\xf6\x87\xbd\xfb\xc2\x08\xbc)4c\x04\x0c\xd6\x84\x98\xf8Ap\xad3\xbd6\x02e\n\xec+\x83\xd0\x1b\xc1bL\x18\x84 \x8b/a\xd1\xa5\x98\xc8\xe4E\x96\xc2\xb8R\x14\xaa\x14\xdcj\x87XLi\x16\xa2\x94\x19OJC\x93\xe6cI\x08$)\xf4\x9d\x90\x86@\x91\x90}9\xb4\x01#-/~\xe4\xeb\xe5\x98}R\xc8\x8d\x1c\xa5\xe3F\xa1\xf0\xa5`F\xde\xc2:\x10#7^\x14l\x07\xb8oV^\xa4\x08\x87\x13yQ\xa2\xb8z9[RF|\x08\x8b\x0e\xb9\xb1\xa1\xb8:E\xe1B\xb9Q!\x1f&\x14W\x0dg\x93KB\x83D\xe9\x1d\x0e\x91XP\n\x12\x14\\zH\x0b\xb7\xc9y\x18\x90\x07\x01\xc2nPg\xda\x9f\xa6\xedi\xda\x9e\xfe\x87\xd9\x9e\x9eNHF\xadO\x8e\x00\x1ef,\xff\xbb\xc9 \xcdH\xde\x8d\xe2\xc6\x8a\x1a\xaa\xcbm;\x08\x17\xe2\xf7\xd1\xce\xc1\x10\x14>\x04|\x16\xfe`S\xafvk\xe6L-\x91n\x9e\xe8\xca\x1c\xe9.\x81\x19\x0c\xd3f\xec\x11\xb4\xacZ-XU\\\xae\xd9\xca7\xf0\xfd\x1a\x16\xf9\xdejJsm\x8fM\xcd\xb5\xad86\xdc\x94\x00\xe0\x03\xabVod\xe1\xe4)\x10\xe3\x1eY\x8c\xde\x12\xb4]\xd1\xed<\x0c\x91\xfb\x1b&\xb4\xe2\x8b\xbe\x97\xbb\x97\x80\xdc1\xf7j\x9f\xaa\xca!l\x81m#\xbe`\x84\x026\n\x95\xea\xd4cvD\xdf\xa9\xf5\x9a\xcc\xd2\xaf-\xbe\xec\xb3\x02\xf9\x84~:`>i\x7fN\xd0\xa3m\xf2[b\xeb\x94\xa2d4\xf8\xd3\xe0\xff\x88\x83\x7f\xdc\xe6|\xbbU]}\x11%\x80e\xcc\xe7?h\x0fVE,\xee_\x80KAi\xac\xde\xa1/\xdfs\xefa\xea\xa2\xa3\x1d\x9bI(K\x19f\xd0\xcb\x999\x9a=w\xf4Q\x85\xb2\xfanI\x92Yc#\xa2!\x11\x0d\x95\x89\x81mo@\xb0N\xde\xae\xdf_\xbc\x1afpr\x87i\xd7L\x1b\x909\xa9\x9bV\x84\x7fm\xe4\xb8\xf4\xb4\xb5\xf4N\x9a\xe3\xd1\x1c\xef\x11\xe7x\x07L\xcd\xb6\x8c6\x1a\xdditO\x1e\xdd\x87\x92\xef\x8d\xc4\xae\x92\xef]8*y\xff\xeb\xa1K~\x90yI_z\xdf\xc6f\xbf;\xf0S\x7f\xf5h\"28\x99l\x05\xd8'\x1fe\xdbY<>\xd1\x119\xd2)\xc8P\xc9\xac\x1f\nG_\x0c\x0f\xf4F\xd0\xad\xcd\xb15_\x04\x1f~\xf4\xb0f\xed\xf9W\xd3\xed\x14\xfc`g\xbe\xc4\xd9\xc3\xdd\xa8\x8d\xd1\x80'\x8d\x06<\x1a\xf0\x8ek\xd8\xe0k\x89US\xdc\xeb\xbf`\x06\x8f?\xab{^\xaa\xfa\xea\x11D\xfb\xea\x03\x81\x19C\x1cN\x9f\xe8\xf8\x1c\xe9 2\x8d[T\xb7\x9d\x94y\xea+\xb1y\xc5}\xea'\xf1\xce\xf0\xbd\x9f6\x0b\xfa\xe8K\xa3\x8f>}\xf4\xb3\x7f\xf4\xbd\xdf\xfcHM_y\xb9N\x8f0=\xfaT}_\x1b\xd7\xfdc\xab\xfb\x8e9Z^iT\x15#\x9b(*\x84:\x93\xbf+\x0d\xa4\xcb\xae\xf8\xec\xeek\x9e\xde N8\xe1\x0f\xa9[\xd6,|\x14\x86\x90\xa3\xba\xda\xb5Y<\x8dF\xb6C*\xdc\"\x88r\x13EZ\x04\xfb\\u\x93\xf7\x17\xaf&\xfehT\xa3Q\xed\xd1G\xb5\xb4\xe9\xff\xb0\x8b`C\xac\x04\xd5\xbbl\xdb\xb2\xae<\x13\xff~!\xff\xaa\xbf\xba\x1f;\x8a\xe5r\xb7\xd9\xad\x0b\xde\xb0\x07g \xe5h\xfd\x8c7\x8b[u\xd9\xd1\x8e C\x0d\x03\xa3\x88\x11\ns$\x91\x7f\xe6\x7f\x1do86l\xc9\xca;fa\xd7\xcc\x1cQ\\\x85\x85@\xc7\x82\x10\x89-\xd0\xc1 X:iA\xfa\x1a\xa2\xaf\x84\x908\xc0\xb9 o\xd4I\x8bF\xe5<\x95\xc7R\xd6\x92\xd09\xa77$]-\x0e\xa5s\x89\x99\x88\xcf\x94\xa5\xab\xa3\x06b\x9b\xaf3\xdb\xe7hXk\xf6\xb7\xd0\xa0<\xfe\x8d\x06\xe5\x03\x0c\xca\xbe\xa5\xe6\xd7\x01K\x05&\x18\xf5\xaek\xbbBdp/\xc2\xc4\xfb\xbek\xbf\x1bn\x9b\x12f4\xd2/6\x17\xf7\x82\xe3\x9fi\xec\xbb}\xa2\xe3t\xa43\x8e\x00_&ib\xe0\xf4 4+\x98\x1a\xcd\n&\x167+\x00T\x08}\xdd\xde \xb0\x1b\xdf\x12\x8b\x93g\xbb\xea\xb9\xdeo\xa8\xbe\xd5\x8d\xdcV\x91\xc9\xe2\x04J1\x0d\xa8\xda\xf2\x8eI\xa5\x8aby{\x02\xc5z]\xdf\xb7\xd0\x8a\xf0A[Teg\xeb\x11\xcb\x1b\xb6\xbc\x8dO\xdb\xf3T983\x9a\xf8\xe3/\xd5\xf6\x883_Xis^\x1a\xcd\x98h\xc6t\\3\xa6v]\xb47\x0c5K\xfa /\xed\xa7F\xe2V`w\xf2ky\x85\xdf\x81Q\x8e\x9e\xe8\x10\x1c\xe9dH\x85\xe68:\xd7\xf0\xea\xb6\xac)\xeb@\xb6 \xaa\x9bx\x842\xaf\x9ab\xd99\xb7r\x82O \x8f\xc10i\x0do\xee&\xa7\xcc\x9b#\xa6\xd1\xd0\xac\xda\xac\x00\x7fd\xe5\xf5\x8dT\xb9\xdal\xd7\xe5R\x88\x98u7J\x06\xad\xed\xeaF\xe8\x99:\xee\x16\x87\xed\x96-T\x8c\xad\xa4\xce\xe9\xb2X/\xc56#\x14[\xfef\x9aR\xfc\xf7F\x0b{\xb5]q\xeb\n\xb0\x98\x899\xce\xe8\xe3s\x81\x81&\xdc\xaa)S\xd1\xb0\x1e\xbb\xa8\xa0\xb8\xea\xc4i\x7f\xb2\xd67\x85#wn\xb9\xdc5\x8dm\x0fo\x14|\xd5\x86\xc7\xb9I\xeao\xb8MA\xb4\xf8n\x82\xce\xee\xd4\xdf\x8cU\x06\xa9\xe7\x92z.V=\x17A\\\x99\x8eU\xc1Yrx\xffP\x0f\x9f4\x17\x96Fsa\x9a\x0b'\xcf\x85\x87\x92\xb7]\xd1teu\xbd\xb8\x11s\x00W\xb9'_\xad\xc9]\xa3J\xd4\xe2\x96b\xdd_\x04\xea\"\xf34\xed\xb17\xd9\xb5\xa7\xf5\x8bU\x82\xdc{\xa1\x01)T)Uy\x80\x8a+\x0d\xcc#\xad6i=\xc7\x85\x91\xb4\x9e\x0f\x18\xdcp\x1b%\xad\xe7\x1cQ$\xadg\xd2z\x16FZ\xcf\x9b\xba=\xbbb\xec\xba)\xaa\xae\xdf\xe6\x13\xf8AQ-\xd9\xd9/\xe2\x07\xd6\xfc]\xff\x17\xf3I\x05\xbc\xd4\xf7\xa9`\xb5p\xc5\x18\xc8\x1b\xc5\xa2\x95\xb7k\xe5\x87\x7f\n\x86\x7f\xda7\xf9z\x7fOtD\x8etw\xaf\x0fX`[\xa3\xbfN\x8ey\xc3?u\x8cx\xa76\x024 \xce`367\x94\xcf\xc4\xa5=f7\xae\x7f\x06L\xce\x17U_\xb6]\xcbT-y\x87)\xaa!\x0e\x0ew\xf2\xbe\xb2\x81\xab]5\x15\xbe\x91\xa6b\xf6\x08\x95b\xbeJ]2^#\xfd2\x1dd`\xa3\xb9\x88\x9d\xeeJl,\x08\x07O[w\x15=m\x0c\xdc\xedLM\xa1\x8aJ\x08\xb0_\x16m\xb9\x14 \xeeU\xb9\xeeX\xc3[\x1cc\xc3\xe5\xb6\xe7\x06\x97\xaf\xa1\x06\x07\x88%,\xe2%\x01\xfaEq{ \x9f\xde\xffx\xd6\xb0\xb6\xde5K&\xc6 98\xef\xaa\xf2\xaf;\xb6~\x80r\xc5\xaa\xae\xbc\xea\x85L\x1e\xb6n\x80Y7AhYS\x16\xeb\xf2o\xcc\xab\x95&\xd0\xe4e\xbd\x86\xcb\xdd\xd5\x15k\xf4\x0e\xc4\xa9\xdc\x1c\x96u\x84\xcd\xae\xed`YW]QVP\xb88\x07\xdc\xd6\xach;\xdf\xf3\xf8\\\xf6\x9b\xb3o`yS4\xc5\x92\x7f0\x04\xb4\xbe.Z>\x03\xb9\xde\xb0aV\xf1\xe9\xfd\x8fO\xdb\xe9byj\xa2h\xfd\xfe\xb9\xef\xc9\xdc\xe5\xd5n-\xce\",\xd6<\x9a+\x19k=\x89y\xd82xV\xb4|z\xe2q\xf33/\xd0\xd9u]_\xaf\xd9\xa9\x88\xde\xe5\xee\xea\xf4\xf5N\x0e\x05?\x7f+\xeb#\x1c\xf7\xcb\x1c\x8f;\x1eP\xde\xf2\xeb\xaa\\\x16k1,\xfa\x9e\xfe\x8c\x9d^\x9f\x9e\xf00\x8b\x11\xfc\x9b\xd3o\xc4\x06~\xddA\xb1\\\xb2m\xc7V\xdf\xfaE\xf9\xce+\xd8\n\x90c\xc9N\xa0c\xc5\x86O\xa0v\x05\x0f\xcb\xb6a\xcbz\xb3-\xd7\x0c\xcaJ\x8d\x80\x97eU4v\x8a\x8a4\xa1\xf4\xf5\xb0\x15-S\xce'\x1f|\x8f\x97{y|\x02\xde\xd5\xfc3\xa2g\xf1\xbcq\xf1ee}\x05/\xab\x87S\xf8c}\xcf\xe7;'\x16 \xde\xb4O\xef\x7f\xd4`\x02wf\xc1\xe8M\x13#(\x83\x9fo\xban\xfb\xf3\x89\xfc\xff\xf6\xe7\x13\xbe\xa2\xaaj\xf5\xeb\x89h\xa1K\xe7\xf7\x10\xc4\xc0/\xf7\x0b\xd6\x0fb*\xb6\xdbB!\xfb\xa4\xef\xd9\xac\xb9c\x8d\x0c\xd2\xa6\xd8\xb6\xb2\xb9\x89\xf2w\xb5\xeeurW\xa2\xec\x04F\xe2\x00@\xa4]\xd5\x827\xf1\xc2\xfb\xae\xff'_\xf6\xf45\xe3\x0de\xdb\xd4w\xe5\x8a\xad\xfa\xca\x8b\xc1\xbdmw\x1b\xb6r\x80D\xda\xd5\xcb\n\xfe\xf8\xf1\xe3\x05\xfc\xe1\xcdGP\xcc\xeaO\xef\x7f\x94\xfd\xefA0b|\xba\x91\xff9\xed0\x1f\x1f\xb6\xec\xbf\xfe\xf3\xbf<\xb7\x80\xde\xd8\xaeT+TsF\xf1\xbe\xb6M\xbd\xda-\xf9`!wm\xed\xa3\x81\xb4\xff /\xb7\xdb5_\xf4\xc8\xb86j\x14\xd1\x90\xd7\x92\x7f\x7f\xea\xfav\xb7\xd5Si\x8f\xb3\xcb\x82\xaf\xf0\xeb\xfdy\xf5\xd4>\xbd\xffQ\x94\xf4\xa6\xb8\x13\x0dsc\xf4\xaf\x95\xec`\x85\xae\x18\xff\xef\xbb\xba\xe4\xc3\xb0\xaf\xaf\x81*\xa6\xf8\xc44\xec\xaan\xd8\x89v\xc1=\x17]yY\xae\xcb\xeeA zz\xc1,>\x8d\xcd\xdddU4\xb5\xba\xe2\x9f\xe4\xea\x9a\x89\xdbD\x8f>\x85g\x9fZ\x06|\xd9Q\xd6|5!\x9a,\xff\xb2\xc96[T\xc5\xb5?\x06\x97\x0d\x13x\xa1v}\xfa\xad\xaf\x8d\xbd\xad;\xf6\x02:>\xee\\\xed\xaa\xa5\xecc\xbc6\xea\x0b'\x80\xbf\xaa[?\x98\x80\x8a\xaf\x9f\x8a\xbd=\xb1\xb5\xe2FR@\x8f\x81\x97;\xbe\x92\xe2\xe3\x17;\x11\xd3\x0e\xb9!\xc1\x1f,6u\x04\xd6\xa1\xfb\xac\xaf\x81\xb0\xeb\xb2\xaax\xa5\xef\xcb\xee\xc6; =l\xd9\xa9\xec\x17\xc5\xb6lO\x97\xf5\xc6\xff\xed\xfe \xfaq+\xd1\x1d\xb9U4\xf9\x96\xc13\x95Z%\xf69\x82\x9f\xc2oa#v:/\xbd\x9f.\xb9\xa7Uv\x06\xc7M\xae\xe3\xf9\x82\xbc\xbc*\x97\xd0\xb2\x0d\x9f!/\xad\x93A\x08\xed\xea#'TA\xa8\x12\xa2f]\x7f\xe2\x1f.>\xdd\x94\x9b\xf7\xc6tioN$'\x08\xbeA\xf0\xb2\xbec:\x1c\xaa\xa3X\x16B\x1e\x1c\xf1\x0f|\x1e.\xd6\xf6]\xdd\x0c\x9b[\xff\xfe\xd3\x07\x81\xe1w5\xf0\x8fG\xb3\x82BN\xd9\xe5\xfb\xe0\xd3\x19\x8b35\x98\x8e~A\x90\xe5\xfa%l:\xe87\xac\xaa \xed\x93Fh_\x1e\xe6o\xd2\" j\x17\xde\x0e\xe8%R\xd6\x05R`y\x94wq\x84]\x1aeY\x18\xa5,\x8b|\xa37~Q4sI\x94wA\x14\xb5\x1c\xca\xba\x18\x8aY\nE-\x84\x8c\xe5\x8e\xdb!n\x19\x94u\x11\x84X\x02e[\x00\xcd[\xfe$,~\xb2,}\xe2\x17>ry\xe3\xf9>\x05&B\x07X\xf4\x1cj\xc9s\x80\x05O\xccr'\xf3b\x07\xb7\xd4\xc9\xb8\xd0\xc1.s\"\x179\xb1K\x1c\xbd\x90q\x0f\x82\xc1\x05\xce\xec\xe5\xcd\x01(KS\xc3\xce\x92\xa2\x175r\xe9\xe2\xfe`\x07\x964\xb8\x92\xfd\xfc\xb2z\xf8YO\x8fD\xdaT\xd1\\\x96]\xc3;\xb1\xbb\x84VWz\x8c(\xd6\xb5jzP\xd8_-\xff:\x8b\x81F\x96\xf0r<-\x9cL\xff\xfaY\x9d\xa3i^\xe8\x8e\xb3./E\xb1\xd58\xd2\x8a\x13c\xebF\x8c\xe0\xdbby{\xb6\xab\xf8\xff\xf1q[\xb6\x0b{\x0fR\x03\xbd{bS_\xc1\xae\x93\x1f6\xfdyhA\xd2\xcbJ\xf9\xad\x80kV\xb1F(B\xc8uV\xeb[\xa7\xf2\xf2\xc8Wh\x7f\xde\x9b\xcf\x85H\xc0\xfa\xee\x05\\\xf0\xf2\xf3\xef\x82\xaaJ\xd1\x07\xbd\xac\xe0\xd5\xff\xfa_\x9ea\xf2\x87\xba\x86\xab\xba\x86\xef\xe1\xf4\xf4\xf4_\x9d\x97\xf1\xc2\x14\xd5\x83\xfb\x82\xa2z8\xe5\xc5\xf8\xa1\xa97\xcf\xae\xea\xfa[\xf7\xa5\xa7\xa7\xee\xf1\xaf\xbc\x82g\xdc\xd5'Q\x91\x8f\xf5\xb3\xff\xc1}}\x0b\xbfx\xbe\xe1>\x7f\x7f\xf7\xc7\xee\xb7\x81\xd8\xfd[qWd\x0b\x1e|/\xe6\x86\xfc)\x19\"T\xb6\xcf~\xa8\xeb\xd3\xe5\xbah\xdb@\x80d\x11\xf9M\xb2\x8e\xc6\x8d\xee28\"\xd7\x87\xeew\x81\xd0]\x11\xd6\xd4\xa8r'\xe72\xa8\xaf\xdf|x\xf5\xfe\xfc\xe2\xe3\xbb\xf7\xdf\xbaw\xc0\xe4ceC\xf5?X>\xda\x1f\xce\x7f\n\x84\xf3\x0f\xb5g\xbf\x8f\x87\xf2\xc5\xf7\xf0?\xb6\x97\xa7?\xd4\xf5/\xa7\xa7\xa7\x7fw_\\T\x0f'|\x1a\xca\xef\xd8\xcaI\xd4\x9f\x8a\xa6\xbd)\xd6<\xc8\xfe\x8a\xf8B8-\x85\xa7\x08\xe5\xd5\xa4\x00\x9f\xaa\xcdP\x04Q@\xd1A\xc4U\xff\xd7\xf7P\x95ko\x03\xf7\x97\xcb\xd1\x92?\x8a\x8c\x8f\xe5m\xff-\xd6\x0b\x0d\xb8|\x18\xa6]z\xf4\x10\xe4\xb3K\xfb\xacWs\xd2v\xadc\xce\xf2\xd42\xa5:\xe3\xeb\xf7S\xf1\x03\x9f\xae>\x85\xc2\x18\xed\xf8H\xc8[\x82kl\x90-\xc4\xfe\xb0~h\xa9\xd6\x0fz]\xb9\xb7Y\xd0O\x93U\x0e\x8f\xebAb\x1f\xe3\xe9\xd9S\xfb\xa3\xd4\x98\xa8\x8b,V\xbb\xc0T\x8b\xfe\xe6\xaa\xaeO/\x8bFT\xf6\xf3\xd9\xc3\xe9\xdf\xbe\x91Q\x14k/\xab?\xf7RT\x14\xf5\x1b\xee\x83\x0f\x87\xd6K\xfe\xed\xc3\xbb\xb7\xf6_\xbe\xff\xfe\xfb\xef\xddm\x80\xdf7\xec\xb9\xc8y\xa4 N\xa8I\x90\\\xd7\xed\xda\xfe<\x85\xeb\xdd\xbah\xec\xfe\xf6\xddtB\x13q\x98\xb6\x9c\x00\xdb\\\xb2\xd5j\x98\xc0\x9c\xc8\xe9\xb8\xcd]\xe1\xd8\xbd1\xa6\x142\xb3\xfd\xe7\xff\x8f\x87\xeeg\xb5\x99\xd0O\xdb\xcc\x97c\xef \xea\xf3\xf3\xc2\xb3\x00)\x96\xb7\xfc\x1b4,\x88\xaf\xca5s\x8f\x1b\xfa\x9bu\xc1\x9a\xb6\xae\xbc\xddV\xed\xc4]\x95M\xdb-\xc4\x1b\xfe\x1e\xbes{\xeeo\xe0\x8dR_\xff\xdb\xf8\x11\x0c\xc0[\xaaoD,\xbfy\x01\xdf\xd8z\xed8\x0c\xa7\xb2\x96\xdf\x9c\xf8\xfc\x89\xfa\xbd-6\xdc\xe7\xff#\xab\xf0\xffzo\xe0\xf5\x9b\\\x1f[\xc9\xf3+\xb5\xe0\x1a\xb75\xd9\x1a\xca\x16\xee\xd9z\xfd\xfc\xb6\xaa\xef\xa5\xe8\xc2M\xd1B\xe1;\xb4\xc4\xdd\xb9\xc6M\xfeDN\xe0'\xfd@~<\x8d\xe2\xf0\x06\xecX\\\x15\xb2I\xdb\x1f\xf6\xb3\xe8\x8c\xba\x9d\xdf\xd4\xeb\x95\x92\x0f\x93\x12\x0d\xa2+\x97U\xdf?\x14)\xd0\xeeJv\x19\xfbsD\x11N\xfb\xc1\xf9\x19\xff\xae\xe9\x10\xeem\x0d\xe9\x1d\xd3\xff\xfa\xcf\xff\xfa\xd6\xd3\x91r\xb4\xb9\xf1\x03\xfd\xcdN\x84\x8a\xbb\xfc\xee\xf4\xb7\xdf\xfd\xb6\xfd\xc6\xd3\x84\xe4\xff\xfb\x92n\x14\xe5\xce\xf0\xe1[E\xa6\x12\xf4z*\xde\xc8\xdb\x1eg-[B\x8e\xe2\xdcE\xd5*\x8a\xa17\xaa\xda\xc8Y\x88\x977\xb3\x8e3X\xb9m\x1c\x19\xb7\xed\xd9\xb8\xfa\x04Aq\xb78\xaf\xdf\xab=4xx\xa2\xebw\xec\xfc\xdb#\xc1\xf0\xbc\x1c[\xd4\xfe\x15f\x0b\x08ftd\xa7\xc30\xd76\xc0\xb6=@\xf5\xa2z\xb4\xd3W\x12\xeb6\xc8\xbb\xc5\xd7%\x8e\x94\x1bv\xe3ZP\x05\xda. \xda/ ph\xc0\xbdi\x88\x88\x10$`\xd2^g\xf6\x8dI\xcf:=76\x0da|\x1a\x120j\x7f\x05\x8a\xee\x06\x8dSC.\xac\x1a\x12\xf1j\xaf\xc3H\"\xefl\xdc\x1a\xa2\xb1k\xaf+\x85\xa9E\xe1\xd7\x90\x1b\xc3\x86H\x1c\x1bb\xb1l\x7f\xcbN\xa0\xf5f\xc6\xb4\x01\x87kCNl\x1bf\xe3\xdb\x90\x86qC.\x9c\x1b\x92\xb0n\x7fw\xc0\xd2|\x0f\x82y\xc3\x01qo8\x0c\xf6\x0d\x91\xf87\xa4a\xe0\xa1O0\x0e\x07\x87\xbcX8D\xe0\xe1\x10\x8f\x89C\x02.\x8e\xf8d\xe2\xc8\xbf\x19\xf0q\x08a\xe4\x80\x9f\x9e!\xb0r\x88\x9c\xc5Ec\xe6^o8*pHT(+\x1d\xd8N\x08\x06g\"\x9e\xf1\xf5\xe4\xff|\xdaF\xa6|\xceQ\xce**\xf3\xaf\xfa\xa0\x10R\xce\"\xe5\xac\xe3Q\xce\n\xb0\xe7ghf\x19\xfb`\xc4\x9f\x97F\xfc\xf9<\xbbS\xb1{\x15z?\xc2\xe9\x10\xbbO\x91u\x8f\x82\xf8\xf3\xc4\x9f\x1f,\xeb\xdeC\xcc\xbeC\xd4\x9e\x03\xf1\xe7\xe7\xee/$\xec-d\xd9W\x88\xdfS \xfe\xfc\x9c=\x84\x98\xfd\x83\x84\xbd\x03\xe2\xcf\x13\x7f\x9e\xf8\xf3\xc4\x9f\xef\x88??\x18\x86\x1dN\xfcy\xd7o\xc4\x9f\xb7^C\xfcy\xe2\xcf;\x8c\xf8\xf3\xc4\x9f'\xfe<\xf1\xe7\x0d\xcb\xc1e&\xfe\xbc0\xe2\xcf\x7f=\xfcy3\x923 \xdet\xc6@\xaa\x80;\x9d1p\xc0\xe0\x86\xd5\xf1\xe9\x8c\x81\x1cQ\xa43\x06\xe8\x8c\x01a_\xf5\x19\x03:\x99\x89\xf1ug\xb5d}2\x93\xfe\x83\xbc\xc9\x91\xbf\xf4F]\xd4\x9f\x12Z\xac\xd7\xa0\xeft\xa5,\xe9\x9b\x9e\xe8\x1a\x1ei\xce\xd28\x02\xa6u\xc4\x9a \xd6\xc4\xc8\x885A\xac \xbb\x11k\x82X\x13\xc4\x9a \xd6\x04\xb1&\x885A\xac bM\x10k\xa27bM\x10k\x82X\x13\xc4\x9ap\x19\xb1&\x885A\xac bM\x18\x96\x03\xc1&\xd6\x840bM\xfcZX\x13\x83\x8dV\x88\x1a\xbf\x18\xa9\xcb\xe9?\xee\xad\xaf\xe7\xe4\xafwbD6PH\xf5\xc1\xa5\xfcu\xca_\xb7\xfb8\xa2\xfcu\x0dG\xceJ`\xef\x81\xd0\xf7\x17\xaf\xa6\x95\xa0\x84vJh\x0f\xedKb\xb6\xf6\x80\xa0Y\x82f\x9dW\x124+\x8c\xa0\xd9}#h\x96\xa0Y\x97\x114K\xd0\xac0\x82f \x9a%h\x96\xa0Yi\x04\xcd\x124K\xd0,A\xb3.#h\x96\xa0Y\x82f \x9a5,\x07LF\xd0\xac0\x82f\x7f-\xd0\xac/\xa1\x9d\xb2\xce\xe3Rz)\xeb\xfc\x80\xc1\x0d\xe7KS\xd6y\x8e(R\xd69e\x9d\x0b\xfb\xaa\xb3\xce\x9f\x06\xd3\xce\xcf~\xd1\xff\xb5\xb8)\xda\x1b\xdf9\x9a{I\xe8=\xf1\xa9?\xcf\xa8\xff\x0b\xf7e\xcdK\xff\xb5$\xa5'\x91\xaa:/\x81!\xb8w\x8f\xd9\xfc\xceN]\xc0\x11\x17Rh\x0b~zB\x129A<\xc2\xe10HM\xc8@LH\xa4%8\xc1\\\x1c)a\x16%!\x89\x90\x00\x85\xe3, \xc0\xd2\x11R\xc8\x08>\x88\x10EE\xc8LD@\xd1\x102\x92\x10\x82\x14\x84L\x04\x849\xf4\x83h\xf2A\x06\xeaAf\xe2A\x80v\x90\x9dtp\x18\xcaAv\xc2\x01\x9en\x90F6\xf0\x04=D5\xc8F4\xc0\xd1\x0c,\xfb\x1c\xee\xefkf\x8aA\x88`0\x93^\xe0!\x17\x04\xa7'Ab\x01n\xfe\x92\x97T\x10\xa2\x14\x84\xcb\x94F'\xd0_v\x8b\xc3\x10\x99 #\x95`\x06\x91\xc0N\xff\xf1\xd1\x08\xf2\x92\x08\xfc\x14\x82\x1c\x04\x02\x14\x02\x1e \x0f\xa0\xa9\x03n\x94/\x9e6\xe0\xf6e\xddQ\xcfB\x18\x88 \x16\x96,\x10\x8e \x9a(\x90@\x13\xb0\xa3\x0f\x99(\x02(\x82@\x98\x1e\x80!\x07x\xa3\x18K\x0c\xc0\xd2\x02\\\xa4\x80\x0c\x94\x80\x08B@:\x1d\xc0\x03\xbac\xa9\x00\x99\x89\x00\x9e\x12Y[j\x12\x05@\xef\xdcZ\xfc9\x08\x00\x99\xe1\x7f7\xf8\x9f\n\xfd\x8b\x1d\x01[\xc1\xed\xc0\x7f^\xd8\xdf\xb5\xf0\x0bB\xfe.L\xd2\x05\xf7\xe7\x05\xfb\xd3\xa1~\x07\xac\x9f\x04\xea\x07\x01\xfc8\xf8\x1e\x0d\xdeGB\xf71\xc0\xbd\x13\xb6w\x97\x06\x0b\x9f\xe2 \xfbH\xc0>\x02\xae\xb7V-/T\xef\xea\x143`z\xeb>\x85\x13\xa4O\x83\xe8}p|~0~~KB\x03\xf1X\x18~\x14\x17\x95*\x9co\xcf\xf5\xed\xbb\x8fo^\x88\xd9\xab\xbcVM\x03K\xb1Sw^uj\x80\xecwG[/\x08\xa0FO\xb9pp?\xb4-\xaf\xab\xa2\xdb5\xac\xed?\xc9|\xa9t]_\xd7bh\xb2\xcf0GA\xfaSY\x95\x9b\xddF\xb7^\xb1^(\xc4k\xaf\xdbb\xcd\xdb5\xab\xf8r\xc4\xdb\xb1\xb8m\x8a\xcf\x8b\xbe\xcfd\xeb\xddn\"}\xf1Y\x94[>J\x14\xfb%\x0f\x19\x9f\x81\xf0\x8e9tH\xe0\xaf\xb1\xaf\x91kUz^\x95]Y\xac\xd5>4LY\x06\xbdm\xea\xaa\xbb\xd9\xdb\xc3\xee\x8a\xf5\xfa\x01\xf7]1/E|U\xc4\xe5Y\xbf)\x7f\xdd\xd5\xcd\xce\xd1_\x83/'\xb8\xcd\x8e|{\xaa\xd5mY\xb3\xe4s\xd2k\xb9\x9d,r\xbb\xdb\xae\xb8e\x02\x89\xea\x07!I\x97qa\x83*U]\xa0V\xae\xd7\xb6\xac\xab\xb6\\1\xdeA\xc4\xa6\xbe\xad\x19t7\x0dky\xfb9\x92\xd8\xf0\x16\xdb\xe8U\xeb\x7f\xb0VD\xa2\x95y\xf3F\xff\xdc\x16\xad\x03S\x01x\xad\xf6AT\xab\xfe\xcd\xe9?[\xf3bXW/\x8e\xac\xf6r\x8d__\xc1OL\xb5\x01\xd1\xa7?\x8a&\"\xff)&k\x1e8\xdf\x0c\x92\xbbe\xf0\xca\xb3\xd5\xe94T\xdf\x9d\xfdn\x1c*\x04\xf3KN\x18cx_j\xa6\xfa\xfe\xe2\xd5\xc4\x1f\xb1\xbe\x88\xf5\x95k\xb2C\xac/b}\xd9\x8dX_\xc2\x88\xf5\xb5o\xc4\xfa\"\xd6\x97\xcb\x88\xf5E\xac/a\xc4\xfa\"\xd6\x17\xb1\xbe\x88\xf5%\x8dX_\xc4\xfa\"\xd6\x17\xb1\xbe\\F\xac/b}\x11\xeb\x8bX_\x86\xe5`\xe0\x10\xebK\x18\xb1\xbe\xbe\x06\xd6\x97\xc1\x802\xfc\xf8V\x92\xc6\x1d=\xdc,_\x9b\x018w\xb5:F\xfc\xaanN\xb4l\xbdT\x98\x1f9\xfbF\xd2\x00\xbe9\x19\x87\xf7\x1b\x81R\xf3\x1f\xf8B\xeb\x1b\x05\xbc\x7f\x93\x91E\xe6\xa2\x8bY\xd9b\n\xf7S7X\x19b\xfa\x921I\xac\xffk\xaf\xf9|]\xde\xb1\n\xda\xae\xe8v\xad\x95'\xd6{z\xa2+u\xa4<\xb1ITL\xeb\xbe\x00\xfe\xa5\x8b\xb3(\x1d\x80s\xd4\xfe\x8f\xe7 z\x81\x08\xb8\x89E\x81j\x00\xa2*\x80\x80\xf3\x00W\x1f@n\x0bi\x8b\x85\xf6\xbc\xce\xec\xfb;\x9e\xe5Nn\x88\x0f\xc20\x1f$@}\xfe\nham\x0c\xdc\x07\xb9 ?H\x84\xfd\xbc\x0eyp\xd1\xd0\x1f\xcc\x87\xff \x1a\x02\xf4\xba\x1a\xc4\xb7\xf10 \xe4\x86\x02!\x12\x0e\x84XH\xd0\xdf\xb2{\xb8\x10\x0b\x0bBnh\x10p\xf0 \xe4\x84\x08a6L\x08iP!\xe4\x82\x0b! 2\xf4w\x07=\x05 \xf5\x9b\x83@\x87p@\xf8\x10\x0e\x03!B$\x8c\x08iPb\xe8\x13\x8c\x83\x13!/\xa4\x08\x11\xb0\"\xc4C\x8b\x90\x00/\">\x99\xdf\" F\xc8\x013B\x08j\x04\xfc\xf4\x0c\x019B\xe4,.\x1az\xf4z\x13\xb0$\x02~\x84\x88Rf\x84!!\n\x8a\x84\xdcp$$B\x92\xfev\xd5\x86aIH\x87&\x9d\xfe\xf8\x13C\xf0$d\x83(\x01\x8f\xb4\x01\x06\xaa\x848\xb8\x12B\xf8B\"l \x08\xbf\x9e-\xccL\x10&$\x05\x17\x0fe\x02\xa2\x96 \x90&\xa4\xc2\x9a\xe0\x8fj>x\x13\xf0\x10' aN@C\x9d\x80\x8bz<\xe4 Q\xb0'x\xa1O\xc8\x05\x7fB,\x04\n3aP@\x847\x02\x0e\x85C@\xa2\x80)\xa3\xa7'\xe4\x83G\x01\x03\x91\xc2\x0c\x98\xd4\xe9\x90_\xe8\x83J!7\\\nA\xc8\x14RaS\xa77\xb9F\xf5/\xd7\x11\xf0)xQ\x1e\xf0\xc2\xa8\x90\x04\xa5:]y!VH\x85Y\x9d\xde<\x12\xec\xd2\xf2\xc1\xad\x80\x82\\!\x01v\x858\xe8\x15R\xe0W\x88\x86`!0\xda\x06`1\x88\x80\xc6\xb0p,\xa4@\xb2\x10\x0b\xcb\x82\xbf\xe2)\xf0\xac\xd3\x99\x01~b\xbb\x0c\x0e\xa6\xf5v\x88\xea\xda\x0f\xd5B^\xb8\x16B\x90-\xf8a[\xe7=\xa9p.dl\xbb\x11\xb0.DA\xbb\xb0'$\xafMB\x8b3 0V\xb9\x92yA \xa5\x17\xef\xdf]\xbc\xfb\xf0\xf2\xc7\xc5\x87\x8f/?~\xfa\xb0\xf8\xf4\xf6\xc3\xc5\x9bW\xe7?\x9c\xbfy\x1dq\xd7\xeb7\x17\xef>\x9c\x7f\\\\\xbcy\x7f\xfe.\xe6\xc6\x9f\xde}<\x7f\xfb\x87\xf8\xfb.^~\xf8\x10U\xc2\xf7o\xfe\xed\xcd\xab\x8fQ\xb7\xfc\xf0\xf2\xfcG\xe7\x0d:\xe32!\x80\xd8]\x15\x8d\x1d\x7f\x10m@\xbcI\xb1\xf6\x97\x9dS\xed\x05\x89\xdf\x98`(\xbb?=Cv\xbb\xbb z\x9b\x82\xb7\x9a\xa34u=\x83\x14\x8f\xdc\xb62a\xdb@\xc7QO\x1e7\xa7\xfd\x87\x8f\x7f7\x94\x1a\xfa\x9c^\xf9PX\xed\xc40(\x0b&X\x07\xee\x189\xa5\x0b\x94\x05\x1a\xef~)G?\xe3\n)\xf9\x139\xcb(;\xca~\xe1\xe4\xdf=\xa5\xe2\x0d\xca\xc8\x91\xe6\xe3\xd0\x8d\x07\x18\xda\x16m\xcb\xe2\x8a\xa6\xbb\xe4~\xe1\xf4/\xf9\x8aw\xc9X\x05\x0d\xfb\x8bH\x80\x8e*\xa5\xfc\n\xec\x97Q\xfe=_ \xaf\x8ar\xed*\xdaUY\x15\xeb\x85\x94\x86\x90\xe0\xd0\x81\xf9\nO\x1fX\xfbt\xf6nxq\xd9\xf2\x19\xf7l?O\xabz~a\xaaz\xc1W\x10\x8b;\xd6\xd53\x9da?\xe0\x1f\xf9\x0b{/\xe5'\x86v\xd2vE\xb5*\x9a\x95\xd4\xeeP\x8a*\xd7\xf5\x1dk\xaab\xff\x8c\x97\xc1\xfc\x12%\xed\xeerSv\x8b\xae\xdc\xe4H\x98Z\x15\x1d{\xce}Y\xaf\xd3:.\xacZ=\xce\x03\x85\xf2\x87_\xe9\xc8OS\x92\xe6U;B\xf5\x1d\\\xefAh\x1e\xa1\x82\x03(\xdd#\xa4+l\xa3\x8dV?\n\x16\xde\x0f\x1d\xe6UFBk#\xa5\xaa#)\x81\xb2\xb6+\x9aG\xeam\xea\x89\x8f\xd4\xd90\xcdDOLG\x13\xbfe\xdd0\xf5\xee6|e\xda\xa8\x110\xf0es}\xd5\xb6\xc5\xb5jf\xfb\x15\x1e\x95q\xb8p\"\x97\xd4\xffY\xed\xe3\xd9\xc8\x93\xd2\xbc\x1d\xdf\xdf\xe1+\xf6\xb9[\xdc\xb2\x07\xfb[ \xbe\x93 Z\xdc\x95\xdd\x9a\xbd\x80\xffv\xf5W\xfd|\xad&\xc3\xffSQ-\xc4\x84\x8c\xff\xe3\xa2\xb8f\xef\xa5\x86\xe3\xa9\xfc\xdd\xe1Lr|\xb9\x1b\xee\x96\x87\x90\xc1\xa6n;`\x82\xb0 \x98\x0e\x96[\xc5\xd7yf\x00<\x0cM\x15\x02\xe7'K\xcaB\xf1\xfa\x8b\xff\xa8v\xbc\xf1\xf1\xb6\xa73\xef\x8d4o\x17Vj\x86h\xc9\xbfB\x0b\xe1\xcc\xf5\xf9\xb8/ZhYw\x02e\xd7j\x86P\x0b\xbbJ6\xc0\x95$A\xdc\x97\xed\xf8\x9db$\x824\x0b\x17\xa5\x12d\xf3p6p\x97\xdf_\xbc\x9aV\x80t\x83H7(4J`F\x00H \x17\xcb\xa6K\xbaA\x08\"q\x16\x12q\n\x81\x98t\x832\x92\x85c\x88\xc2Q$a\xd2\x0d\x9aK\x08N \x03g!\x02\xc7\x93\x80I7h\x0e\xe97\x86\xf0\x9b@\xf6%\xdd \xd2\x0d\"\xdd ,Y7+Q7\x85\xa4K\xbaA\xae\xcb\x82d\xdc\x08\".F\x15'\x86\x80K\xbaA\xa4\x1b\x84!\xd3\x92n\x90\xb09\x84Y\xd2\x0d\xb2y\n\x92bS \xb1\xce\xb1\x81t\x83\xf6\x8dt\x83\x12\x88\xaca\x12k,\x815\x82\xbc\x1aM\\\x8d#\xad\x92nP\x1c1\x95t\x83z#\xdd e\xbdn\x90\x96[\x91\xdc%\xc3\xd7h59\x81!'w\x8d\xf0\xd7\x81\x04%\xd0X\x0dJM\xe7I\x8f\xcb:\xfcrLC+s\xef\x0b1\n\x91e9$s\xd0\xca\x16||\x86\xa0\x8f\x15\xf8\xb8L\xc0}\xf6_Y\xbd\x90\x80\xbc\xf1\xb7A\x12\xeb\xaaX\xb7\x01M,\xb0\xb2\xbf\xf1\x8c\xefPg \\\xecfv\xa3\xd8\xdcH\x067\x82\xb5\x1d\xc5\xd4\xd6\x1f\xc4\xbb\xba\x1b\xedw\x8d>\x83\xe2\xc7\xd1\xf7G\xfe\xa5X\xad\x1a\xd6\xb6\x1a\x9e7\xbfz\x83\xa7\x0c\xefU\x17R}hjgA\xfb\x0b&\x1fKy\xf0\x99*.k\xe1\xaa\xa97\x8fR\xe2\x81\x95sz\xcb\x1e\\\xc5\x9e\x0c3\x8a\xdeR\xa8\xa9z\xc3\xba]S \xf0B\xf16\x14\xaf\xa7\xe7\xc2\x08\xc8\xe1z\xb27/j\xa0\xbf\x8an~\xcb)\xbc\xe3\x0b+)n\x07\xf5\xd5U\xcb:\xa8\x1b\x18\x17\x17\x0c\xc8\xb4e]\xe6h96\xa0-A\x94\xe5s\xc5q\xb2\xf9\xab*#B)r \xca\xa5\xfe\x9b\xf8&)]?\xb9\xfb~\xc3*\x1d\xf8]\xd5\x03\x1e\x93\xe1\xfb\\x[\xf36\xdf\x87PB\x04\xbb\x96\x87\xfa\x96E\xc6s\xec\xfe\xc0\xc1\x9dp\x8e,\xe1]\x97\x9b\x12\x1b]q\xad\xa6\xeb\xb8\xa8H\x12\x0c3[\xb0\\s\xf2_G\xde\xb6r\xeb\xdb\xfc\xd3\xf9\x15\xac\xd9U\xa7P\x96\xb2\x93\xd3n=\xf3\x118\x9e\xec \xf2!<\xce\x97\x0f\xc0\x8a\xe5\x0d\x14\xdb\xed\x17\x8c\xa2I\xa8\x1a\xee\xf7\xc5\xd2\xb8\x83GT\xb4\xd0Z\xc8@\x02\xff\x8f\xb2Z\x95\xcb\xa2c=\xa2\xaf\xcf\xf8\xe3\x17\xaa\x86d\xba+\xab\xe5z\xb7\x9al=\x14\xf2)=\xa5b\xf2\xc6\x04A\xc7@\xfa\xc4\xb1z&\xa7p\xe4\xec\xd3\xf9tf;\xa9\x82\xd8\xadiX\xab\x98T\xa2{\x0d\xfd\x91w\xb9S\xd5\x9b\xca\xeb\xaan&8\xa9\xee\x8d\xe3G\xc8\xc8\xcc}\xb1\x97u\xbdf#\x16o\xff\xf1\x99\xfcby\xb5\x0d\xbbc\xcd\xc8\xa9\xef\xb5\xaa\xab\xa7\xaf\xb44\xa8z\x0d\xb3\xf7\x91\x91\x1f\xfe\x0cV nI\xdd\xacX3\x85P>\x94\xd5\x92\xbd\x00\xa9\xfd\xf9\xbc]\xdd\xc2oN\xff\xe9w\x8f\x14\xa7\xb8\x93\xab\xf5x{\xf6\xcbvP\xbc\xf4\x1e^\xad\xa7\x91Z\x99t;\x90q\x05\x0fmP\x06\xd3\x97\x9e\xbf\xd6m\xc4*M\xfaD\xd7\xff\xc8\x95I]\x04\xbb$\xde\xae\x11\xedC1W\xbd\xca\xa2\xde\xa2C\xb0\xf8\x80\xa0\xfa!\xea\x00H\xb8XZ\x12\xe1\xcf\xe3/JK4+\xe9/H\xfb\xcbM\xfc\xc3S\xff2\x91\xff\xd2\xe8\x7f\x1ew\x91\xea\xa13)\x80\xb9I\x80\x914\xc0\xccD\xc08*`$\x19\xd0\xd7\x86\x13\xf4B\xb3\x12\x02Q\x94\xc0\x8c\xa4\xc0\xb9\xb4\xc0$b`&j`\n9\xd0\xe3\x0c\xad\x0fz\x00\x82\xe0\xe1(\x82\x07! \xc6\xd1\x04\xb3\x13\x05\xb1T\xc1\xacdA<]0\x9a0\x18O\x19\x0c~\nqJ\xa0\xb3i\x83A\x15P\xd4\x84\nA\x1e\x8c\x99uE\x13\x08}\x83 Z\xfb\x13W\xbe\x8c4\xc2\x18\"af*a\x1a\x99\xd0\xd7\x82Pz\x9f\x89\x84B\x87\xb7\x0e\xa5\xf5\x99\x87T\x88f\xc6!\x88\x85Q\xd4\xc2\x90T^\n\xbd0\xe4\xd3I3\xc8D2\x8c\x0f&\x9eh\x18\xaa[\x02\xd90\x91n\xe8\xa3kd\xa3\x1c\xa2I\x878\xda!\x96x\x88\x88r<\xf90\x86~\xe8W\xef\xccBA\x8c$!\xce\xa3!\x86\x02\x1aAE<\x00\x191X:gK\xcfGID\x90\x12\xd3i\x89\x0ew]P\xa53+51DNL\xa4':|\x85\xd59\x11\x14E\xbf2\xa7O\x9737Q1;U\xd1MV\xccIW\xc4\x10\x16\xe3)\x8bQ\xa4\xc5\x04\xdab,q1\xa0\xb5\xe9/\x1d\x96J\x86\xa5/&\x10\x18#)\x8c\x9e\xea\xa6\xd0\x18\x1d\xae\x10\xea\x9a)TFO\x93\x0f+kf\xa43\x06U5\x0fAi\xcc\xd5\x16#h\x8d1\xc4F\xbbf\xa6O13\xb8~\xf7\xa9e\xe2\x99S\xbe{PJ\x991l*\xdf]^\x95L$\xc3\xcaw\x83G!3\x8au5\xbe\x11\xb3\xf3\x90K\x1bs\x90\x1fr5\xb3\xc7e\xa8\xfa\x9e\xfbX\\\xd5\xc1\x02z\x93_\x88\xbf:Xt\xf9\x0e\xc9i\x1d,\xa0\x85\xf9\xf8<\xd7\xc1p:\x98\x8f\xcb}\x1d\xcc\xad\x81\x89U\xc0\xec\xe6\xe3\xea\x01\xed\xcb\xe0\x18\x82\xd0\xbdD\xf8\xf0k^\"\x1c\xe0\xf4.\x83\x8ep\x9f\xe3\x9cJ\x97\xc3'y\xff\xb7\xa0\xcae\xb0>8\x0d<\x8c\xbee\x96G!\x94-;\x8f\x8c\x14\x84T-\x83\xfd\x01\xd3#\x10z\x96\xc1`\x00J\xcb\x12\xe1\x06\xd7 \xa3U,\x11Z\x95y\x95*\x91:\x95)*\x95H\x8d\xca`\xb01\x0d\x18\xa5N\x99\xe1I\xe1\xd7\x9eO\x95\xd2\xfe\x05\x8a\x90\xefC\xa9\xf7M\xf4\xfa&\xfe\xde_\xbc\"\xb5>R\xeb\xcb\xf69L\"\xef\x91Z\x1f\x86\xb2\x97\x85\xb0\x97B\xd7#\xb5\xbe\x8c$\xbd\x18\x8a^\x14A\x8f\xd4\xfa\xe6\xd2\xf2\x12HyY(y\xf1\x84\x9b\xa7 1.\x95\x16\xe7\x1c\x1bH\xado\xdfH\xad/\x81\xfe\x16&\xbf\xc5R\xdf\"\x88o\xd1\xb4\xb78\xd2\x1b\xa9\xf5\xc5\xd1\xdcH\xad\xaf\xb7CP\xdbr\xb4\xb9\x08Z\x1b\x9e\xd4\x16\xa5\xd6W\x9a_\xee\xf1\xa9h\xc3%#\x18\xc1\xe0\x04\x83\x0fF0xG0\xb8\xdd\x08\x06\xd7F08\xc1\xe0\x04\x83#gI\x04\x83\xf7F0\xb8i\x04\x83\x13\x0cn1\x82\xc1\xad\xd7\x10\x0cN0\xb8\xc3\x08\x06'\x18\x9c`p\x82\xc1\x0d\xcb\x01I\x12\x0c.\x8c`p\x82\xc1\x8f\x17\x06\xcf\x02+\xdf\xd5\x1d\xf3\x9d9\xf5\x13\xff\xbd\x07\x94\xc5\xd5\x12L\xbe.\xefX\xb5W\xdf\x11\x9a,\xee}\xa2k|\xa48\xb2\xa8\xd2q\xe0W\xc1D\xfd\xa8\xfd\x1b\xcfA'\xbc\xce\xe9\xc7K\xc9\x0dx\xd7\xed\x98\x1d\x18\x90i\xd8\x0d[\x16\x1d\xef\x04\x17\x0d\xbb\xe2\x135 ;\xfc,\x1f\xd0\xfe\x0ce\xd5v\xacX)p\xeb\xca9\xb7\x82^Z\x84\x7f!Ucu\x7f\xad\xc4\x82h%'\x91\xe5\x15\xfc\xbcf\xd53\xf5\xcco\xe1\xfb\xef\xe1\xbb\x9f\xd5\x04\xb5\xe8Te\xf9 \xe2tw\xcf\xc4\xa6\xdew\xa7p^A\xb1\xf6lx\xcam\xc4e\xd1\xb2\xf6Dm\xb6\x8a)\xceD\x16\xc7y\xffO\xef>\xbeY\xbc\xbb\xf8x\xfe\xee\xed\xe2\xd3\xdb\x0f\x17o^\x9d\xffp\xfe\xe6\xb5k}\x10|\x93\x00\xac\xday\x94\x0d\x9e\xbb\x9e\x88\xbc\xe3?\xde|@^\xf9\xf2\xf7\x1f>\xbe<\x7f\x8b\xbc\xfa\xed;\xf4\x85\x8b?\x9f\x7f\xfc\xe3\xe2\xa77\x1f]\xb7h\x16@TUUk\xf1w\xa1\xe38b\xcd\xdf[\xa5!\x1a\x8a4\x7fs\x91\x16\xdfhl\xf7\xf9\x9a\x8e\xed\xfaP\x03\xb2\xdd\xe3iF\xf6\xcb\x83\x8dIZR\x93\x1an\xc6}?\xa5\xf1!\xf6\x9d\xfcD1!\x90Vtjj\"w\xdc\xf9\x97^\xb7V\xc9\xd5 8\x94\xc3\xfa\xc0\xe71F\xf8\xc0\x9d\xee\x17\xef\x0c\x84A+\xaa\xea\xe7\xf5\xd6,\xaeg\xd3\xc3\xf6\xb8\xffx\xf3\xe1\xc5\xf4\x0f\x86\xfb\x075yIs\xae\x1a\xd7\x0b\xdb\x1fG:\"\x92\x076\xe3Io\xdf\xbd\x98\xfc{\x14\xa3Y\x9e\x87\xd6;}\xc6\xf0\xcb\xf8i\x02\xd0\xb8c\x1d\xfa\xb9r(\xcc\xf0\xb1\xc1\xf7\x82?\x8bG\xb2\x95\xd1\x13\x86:\xec\xaaR\xf0\x16D\xf1y\xf3\xe7\xff\xe1q\xd6n\xd7e\xe0\x1c\xc6\xa0R\x97i\xeaD\xb9\xa7\xf6\x9b\x9eZ\xee\xc2T\x9cW\xd5\xa8\xa4|7\xd5\x88\x86\x17\xea\xb6/\xa5\x93e]\xb5e\xab\x0f\x8f\xed\xf9\xa1\xe7\xafO\xe47\x84\xcf\x13O\xf4n\x9d;x\xae\x861\xaa\x8c\\;\xe8\x83\xeb\xb8?9Q\x93\x1f\xa9=0\x93\x8ee\x14F\xc72~U\xc72\x8a%s\x0c\xd9U\xae\xcf\xdf_\xbc\x9ax#\xb2+\x91]C\xc3,f\xac\x01\"\xbb\x12\xd9\xd5y%\x91]\x85\x11\xd9u\xdf\x88\xecJdW\x97\x11\xd9\x95\xc8\xae\xc2\x88\xecJdW\"\xbb\x12\xd9U\x1a\x91]\x89\xecJdW\"\xbb\xba\x8c\xc8\xaeDv%\xb2+\x91]\x0d\xcbA<$\xb2\xab0\"\xbb\x12\xd9\xf5x\xc9\xae\xd6\xb3\xbc\xe8@F\x08\x87\x91\x0ed<`p\xc3m\x94\x0ed\xcc\x11E:\x90\x91\x0ed\x14F\x072Fev\x9c\xfd\"8\\\xbe\x93\x18\x9f\n&\x98\x99\xe1\xb1\xb2\x9c\xb9X\x0f\xb9\x1e\xe7\xafO$3L\x1c\xb6\xa8Il{\x99\x1fOtL\x8e8\xf1\xc3E\xe5H\xa2\x82\x05\xd37\x82xD\x90\x0c\xe5I\xdc\x088\xf7\xd1\xc018Br\xc2\x06\x94. \x0b\x97\xae\x915Y\x03\x9b\xaa1/Q#*M#\xd8(|\x9c\xfbX\xae=\x96c\x1f\xc3\xadGr\xea#\xb9\xf4 \x1czoRF\x17H\xc9x\x8csD\xc3\xa9\x18\xc1\xc6 -\x9c\x86\x11\xdb0lw\x85R0b\x1a\x89\xed\x8e@\xfaEd\x83\x91\x96\xd0l\x86[1_Ai\x99\xd3.\x92\x93.\x1e5\xe5\xe2\x80 \x17\x8f\x95nq\xa8d\x8bGO\xb5\x08'Z >%\xd8\x16\x9f1\xc5\"\x98`\x11\x9cw\x0f\x16\x9b\\\x11\xae\xee\xec\xc4\x8a\x9ci\x15\xb6&\x80d\x90\xc7\x12\xc8\x89?N\xfcq\xdb\xef\x99\xbe\x1f\xc4\x1f'\xfe\xb8\xdd\x88?.\x8c\xf8\xe3\xfbF\xfcq\xe2\x8f\xbb\x8c\xf8\xe3\xc4\x1f\x17F\xfcq\xe2\x8f\x13\x7f\x9c\xf8\xe3\xd2\x88?N\xfcq\xe2\x8f\x13\x7f\xdce\xc4\x1f'\xfe8\xf1\xc7\x89?nX\x0e./\xf1\xc7\x85\x11\x7f\x9c\xf8\xe3\xff\x08\xfcq\x81\xbe\xb9\xca.~\x1c\x95Z\xfcA\x1d\x14\xdcCg\xdbG<%Xs\xfe\xdau\xd1\xde\x94\xd5\xf5@\xfc\xe3\xaf\xa9u\x13\xfb.\xc4\xef\xa3\xc3\x80\x877\xcb\xdf\x81\xf6\x08\x9bz\xb5[\xeb\xe2\x8d\x88|\x1f\xd4%\xd2\xd7\x13]\xab#\xa5\xf4\x99\x111\xcd\xe9\n\x82@Y[^Wl\xb5\xb8\\\xd7\xcb\xdbvq_V\xab\xfa>\x89\x807\x82\x13\xad\xe4\xbeMY-\xd4\xe3\xb6\xac\xc9\xf3,\xc7\xbe\xd4\xaa\xbe\xaf\xbar\xc3\x16\x7f)\xca\xf5b\xa5>#I\xcf\x12\x8dhq%`\x98\xbaZ\xac\xea\xdd\xe5\x9a\x89z$\xb9\x0b\x16}\xefy\xb2&\x87xXx\x7fLu\xb1~\x94\xdb\xebe\xfd\xae\xec\xa5\xd4\xd5\xd3]\xce\xf6\xfaE'\x1c\xcf\xce\\\xd2w\xe2\xdb \x1f\x1e\x83\xf5\xab\xe2\xba\xd0\xfe\xfe\x8f\x04\xf6\x8f\x7f#\xb0\xff\x00\xfb\xe4\xd1\xe3\x1d\xff\xa6\x94\xd5\xf5\xa2\xac\xaej\xcf\xb0\xf7A^v\xce\xaf\xea\x07?u\xaf \xb6\x8bE\xddz-\xb7\xd9\x8b\xaen\xf4\xb86\x1e\xf9\x0c7\xea\xf7\xa3\x1d\xf7x\xad\x8e\xa3\xa1\xa9\x89RrKi\xbb\xa2\xe9\x167^v[\xd0Ix\xa8\x05\xcf\xb7u\xb0?J\xb6x\xd1\xa9eF\xdf`\x84\xfe\xa7X\xcdI\xae\xc3\x8a\xff\x99\xc1\xbb\xf7\xfc\x07\xa7\xbb]\xc5G[\x07\xb0YV+\xf6y!\xd3y\x0e\\\xf1\xf0\xb0&\xed\x9c\x17IU\xbdl\xa1\xac\x96\x8d@\xd8\xf8'\xbfX\xde\x00\x1fv\xc5\xe02\x8e\x8b\x1bK\xbf\xac\xab\x95\x8f\xae\xc3\x17l fZb-\xba)\x1e$\x18-'E\x82I\xc7\x96\xf5fSv\x92\xed\xd0I\"\x8f\xcf\xdf\xb2\xae\xfe\xa20\x18\x898y\xb9\x15?\x7f\x10O\xfa\xbd\x98\xec\xfdY\xcc\xbf~\x96\xa39\xff\x9c\xb3f\xd3\xaf\n\xc4\xeb\xb2\xe5\x15\x8d\xdc\xfd\xa9l[\xed\xee\xf7e\xf7\x92w\xc5\x9f\xed\xfb/\xb2i,vUW\xa6\x7f\xa5\x87\xf7\xcf\xdb\xe3s\xfe\x82f\xb6\x81\x8f\xe5\x86\xb5]\xb1\xd9\x82(\x99j\x0d\xe3\x97^\xb6\xaa\xf4\xb0\x12\x99\x83Ng\xeb\xf2\x8eU|\x19\xa5'm\x8e\x8c\x88zs\xd9vu\xc5\x02\xa7\xa0\xecgS\x99\xe6\xca@\x1b\x1b6\x0e\x7f\xbea\x02\xd5\x96\xedNc\xb4\xa2\xfa7E\x0b\x97\x8cUF\xb9\xe1\xd9m\xb9v\xf5tn\xf5Nrf{'-\xeb\xbe\xd5\xd9{-\xf3\xd2\xcc\x96\xd3N'\xbb\x84\xc0f\xf9r\xf3\xae^\xaaM\xc7FR\xcf=\x14\x0d\x95\xe7RWW\xe5\xf5\xaea+\xd8\x94\xed%\xbb)\x8b;\x177e#\x9a\xb4^\x0f\x89\x0c\xc5\x19G\xc9\xe4\xfd`\xbd\x04U\x1e\xb8e\xdbn \xa9\xec\xaa\x8a\xf1Q\xb8h\x1e\xe4p\x08\x0d+V\xd3lK\xd3\xde\xd6:3\xf4\xe7\x0f\xbb\xcd3[?\xfe\xf6g(\xd6\xf7\xc5C\xcb\x83^\xac\xdd_\xa1\xd1W\xe0\x95,\xa0\xf5#\x80\xa9\xe6O\xfa\xad\x1b\xd3\x13\x93\xb1\xac\x7f~:\x99\xf2\xb8\xd8g\x9b\xba*\xbb\xbaQ9\xed\xa5c7\xbb\xef\xb8|\xd1uWv\x0f\xfb\xc5W\xa3\xa9x\x98Z\x89\xa0\xe6\\\xda|r\xef3\x96\xef$\xcfN\xf2\xecXyv@\xf5AS.B\xd6j\xb4\xa1]Vp\xfd\xfe\xe2\xd5\xb0\x0cWk\xc7\x16\xeeoXckD\x8e\x19\xc9\xb2n\xa4\x0f\xc1\x8cmd\xe5\xfb\xbdg>\xe8\x88\xbd\x0532\xd6p\xe8;>\xd4\x9b\xa1\xdc^\x0c\xb5a[&\xb8)\xbf/\x9a\xfe%\x05\x00\x99qXD\xcbtA2c8\xd8\xbb\xc3a\xae\xc1P\xfb\x1c6'g\xa3\x05\xe1\xfb\x8bW\xd30\xd1\xe6\x07m~<\xf6\xe6\x87\x17b!\x81\x9b(\xf5\x10\x12\xb89`p\xc3\xd2,$p\x93#\x8a$pC\x027\xc2H\xe0&\xbc\xf9\x7f\xf6\xcb\xb2\xae\xda\x85\xdal\xf6\x89\xdb\x98\xcbd\x13\x08\x9f\xaeMe\x06\xfeR\xa4\xdaH\xaf\xca\x93\x0b\x13x\xa2\x03r\xa4\x90\xc0]\xb1^\x981\xcb\xba\xaa\xf6\xee\xf2\x07&D\xe1\x1d\xfe\xe0\x8c*\xbcg\x14Z\x93f\xdd\xd9\xf7\xec\xeb\x87w\xf53T6\xbcf\x85\xfc\xbb\xf9\xfe\xbd\xfc\xc4\x9d|w\x96T\xcc>~\xd6]|\xfc\x1e~x\x07\x1f\xfd\xae\xfd\xbb\xf7\xb8\xf7\x9dq\xe7\x1e\xb5o\x1f\xda\xb5\x0f\xef\xd9cv\xecquO\xdb\xad\x87z\xe7\xca\xfeN\xd9\xab\xcf\xb9S\x1f\xbbO\x1f\xb1K\x8fn\x94s?@\xb9v\xe7\xf3\xed\xcd#w\xe6\xc3\xd5\xcb\xbb+\x8f\xd9\x93\xc7\xef\xc8[\x0b<\x9d\x1d\xb8\xb6\xec\xd5\xb6#[\xf1;\xc4\xf4\xc8\xe2l\x10U\xed\x95AE\xb5\x99b\xc3#=\xd3\x0d\xb6\x95\xbc\xaaKS;Q4\x08\xa5\x84!\xab\xa3\xb7\xce\xf9\x0b,*U8\x9f\xe8\xca\xdbw\x1f\xdf\xbc\x10\xe9\xab\xf2\xda^t\x99\xdf~^\xe9\x0d\xae^\x1e\xa5\xf56\x02\x95>\xa7&\xcf\xee\xeeZ^WE\xb7\x93\xfdG\xce0x#\xbc\xae\xafk\x91\x9b\x96\xcan\x1a:\x91\xb9.\x10K\xe5b-`\xb3\xda\xech\xec\xf3R\xac$o\x1c\xaameg\x08\x97\xd8k\xa3Z\xea4WP}\x1c\xfa\xdd\xb2M\xdd0hwe\xa7a\x0e\xab\xb3\xe5Z`{\xfd\x80\x9d\xb2\x94\xb4\x0d\xfcC\x8bY\xaf'\x9f\xb1\xf6\xe9@\xafr{\xdb\xef\xa7>\xba\xd5\xa8\x90\x06\x9ccf\xc5\x8dP\x9e\xd1\xca\xcd\xb2\x10M\xdfh&\xfa\x16\xd1\xb7\xb0\xf4-\x1f;Bm\x1a\xd8V\x02\xe6\x97\x06\xbf\xfb`]\xb9\xbc\xbfxE\xba\xa9\xb4\xf1\x90m\xb6@\xba\xa9\xa4\x9bj7\xd2M\x15F\xba\xa9\xfbF\xba\xa9\xa4\x9b\xea2\xd2M%\xddTa\xa4\x9b\xean\xd3\xa4\x9b*\x8dtSI7\x95tS\x85\x91n\xaa0\xd2M\x15F\xba\xa9\xd2H7\x95tSI7\x95tS\xa7\x86\xd5\xb0$\xddTa\xa4\x9b\xfa5\xe8\xa6\x8e\xd9D\x86\xab\xd1br|\xd5\x08q\xed\x7f\xda\xa7\x04^\x8d7\xc4f\xf2\x00)\x1195\xcb\x93\x12\x91\x0f\x18\xdcp\n-%\"\xe7\x88\"%\"S\"\xb20JD\xf6\x90\xde\xebf\x9f\xf3~\xd60\x93\x98%\xdd\xda\x18\xf0\xef\xcd\xebz\xbe\xfb\xe8\xee!'\xd9\xc7l\x1f9z\xa2#s\xa4\x94v\xb3~\xc7Fj7\xcbvp\xd6\xea\xd7Mko\x9b\xe5\x17\xaa\xb9\xb5\x0c\xba\xf6C\x92\xa6\xd9\x16\xbc\xfe\x14-G\xf6\xc8a^\x8e \xc2\xaa\xed\xbex\x10\x8c2\xcc\x08\xc2\x8a\xb5\x9d\x1ef\xf1\x91`U\xd7x{\x89\xff30\x98\xf3\x830\x18\xa2\xdfJ\xc3\xf4^i\xcb\x86\xc9\xcf\x98_\xa8x0\xe4\x8b\x94\x16N\xb85-\xe6\xe5K\x9b\x94\x1eF\xcbL\xf5\xb7>[\x1c\xe1\xcfl+\xd0\xd5\xf5-l\xd7\xc5\xd2!\xee:\xd8\xb2\xdel\xd7L\x14\xc4-\xe0oZR\x10CB\xb8\x83%\x04r\\\x83\xe9a'\x9f\xa5\xa6\x82\x8f\xc04\xd8(\x88\x83\xe3P\x10\x05i\xa8X/\x02\x19\x17\x83E\x051>$\x93\xf2\x8cB\xa2~\xd3\x9c{\x8471\x93\x1eEF\xa8\x87\xb8\xb3u\xb4I\xfe>\xff\xc4}\xf1\x88\x0cE\xe9S:7j)\x83\xb8\xdb\xf8\xbc>7\x14\x08dz\x82\xe8\xc8\x02nAx2\xc3\xe8\x0f_\\\x1d\xcd9\xe8\x9b\xaak\x1e\x8c\xfc\x96\xd1\xabC|\x81A\xb2\x1b\x1a\xb6fwE\xd5\xc1\x86u\xc5\xaa\xe8\n_yG\xa5U\xe3\x8a\\\x99\x88\x95\xa6Q\x00\xf5\xe3\xdcL\xaf\xf7\xe3\x9ej \x05\xeb\xb2\xedd\x9a\xea\xb6h\xbar)`\x0e\x97\x9b~\xd2\xf4\xd4\x9c\xfaW\xd7\"_\xcc\x93\xf2u\xd5\xd4\x9b\xd1\x13\xf4V\x7f*f\xad\x9e\xca\xd8\x0b\xdf\xe73\xcd\x8e\x1a:^\xceHQ\x8e\xae0\xca\xd1\xfd\x95\xe6\xe8\xeeUG\x80/#L#-9w\x8c\xaf8\xc5\xc1\x86^@I\xba\xe3\xdf(I7\xd4T\x07\xa3$]J\xd2\xb5\x1b%\xe9\n\xa3$\xdd}\xa3$]J\xd2u\x19%\xe9R\x92\xae0J\xd2\xa5$]J\xd2\xa5$]i\x94\xa4KI\xba\x94\xa4KI\xba.\xa3$]J\xd2\xa5$]{\x07\xa1$\xdd=\xc3&LR\x92\xae0J\xd2\xa5$\xdd\xe3L\xd2m\x9b\xe5b,\xda\xef*\xf7\xfe\x95\xa3\xb2\x0f\xf4\x11\xa3\xec=C\x83 \xe2\xe1\xb4\x06\xb1iY\x8e:\xac\xda\x0eY\x87\xfd+\xa3\xea0\x96&\xcfX\x03J\x95\xc6D\x8bR\xa5\xa5\x1d8\xb8\xe1$_J\x95\xce\x11EJ\x95\xa6Tia\x94*\x1d\x9b*\xbd\xab.kQ\xd1\x85A\xd5\x89<4\xec\x93\xf6\xe1:=\xac\x7f\xc8\xde9b\xbd3\x91c=\x04yo\xfe\xa6\x1b\xa1\xfd@1[ \xd4\x0dG\x9b\x86=D\xfe\xc8r\xb0\xc7M\xc4\x93\x19\x8b@\xae0\xe0\x0f\xd8\x9e\x19L\x86\xf6\xe2\xcc\xbd;'\x1e\x87;\xdb+c\x0d\xe3\xcf\xf3\xf2\xd6\xf0\xd7\x93&\x14\x95\xa3\x83x!\xd2\xf0\xb99\xd8\x17(m\x9a\x93S\xda\xb3q\x86\xde\x1d\xf0\x87K\xc3\x89J\xc1\x89\x8e\x11.\xf5&2N\x93\x94\x9b\xd2\x92m\x83\x0e\x12.\xcd&*\xc5\x06\x1d\xa4\xb8j\xfb\xd2j\xd4\xa9s\xea\x12\x0fWJ\x1a\x1ffV\xbb\xb5\xa4\xe2\xa8\xd3\xf1\x80/\xa2P\xc1\xf8\x92A\xf0T~T\x95\x0co\x1d_0\xcb\x14a\x92\x05S\x19\xf3\x94`\x0eL\\\xfe\xcb\xca\x97\x1bk\x9b\x1d\xf9rd1u\xb6\xd4\x16\xda\xaen\xd4\x84L\xe4\xc6\xf2\x05\xf4\x9a\x99\xf9\xafVWC\xf1< \xb1\xe2\xd4t\xed\xd18\xd7\xbe\xe2a\xe5\xfd\xfd\xb9\x98G\xb3\x95\xc8\xcd\xa5\x04\x0b\xbb\x07J\xb0\xf8\x9a\x12,\xa6}\x14\x7f\x1a\xda\xc4\x9b\x85\xc9+\xf3/\xbcO\xa0S\xd2\x94Q\x02F\x9e\x15\x0e%`P\x02\x86\xdd(\x01C\x18%`\xec\x1b%`P\x02\x86\xcb(\x01\x83\x120\x84Q\x02\x06%`P\x02\x06%`H\xa3\x04\x0cJ\xc0\xa0\x04\x0cJ\xc0p\x19%`P\x02\x06%`P\x02\x86a9\xc8\xf0\x94\x80!\x8c\x120(\x01\xe38\x130\x88\xfa\x1f\xc7\xab&\xea\xff\x01\x83\x1b&\xad\x13\xf5?G\x14\x89\xfaO\xd4\x7faD\xfd\x8f\xa5\xfe\xf74-\x1f\xdf\xff\xbf-|\xff\x9f\xfa\x1bG,\xff\xc1\x1f\x94\xd5U-Z\xb5<:\xad\x7fr\xef\x0b\xc5\xea\x1f\x9e\xa3.;Z.\xffP\xf5\xe3`}\xe8\x03\xa0\x1e\x91\xdf>}\xe4h68&\xb5\x0f\xe1rP\x0eM\x7f\xff*\x08\xf2\xa0\xe9\xf1e%f\xfd\xf6\xd5\xed\x92\xbf\xde\xaa\xdd\xb5\x8b\xed\xee\xd2I\xd4\x0bF\x17\x10\x11\x06\x04\xb7\x06p\x11\x86\x88(C\x02\xcf\xc6\xeb\xcc\x0e\xb6x\xf6\x1es\xf3m \xcc\xb9\x81\x04\xde\x8d\xbf\x02Ew\x83\xe6\xde@.\xfe\x0d$rp\xbc\x0e\x85D:\x96\x87\x03\xf3\xb98\x10\xcd\xc7\xf1\xbaR<\x81(N\x0e\xe4\xe6\xe5@$7\x07b\xf99\xfe\x96\xddsw\xb0\x1c\x1d\xc8\xcd\xd3\x01\x1cW\x07r\xf2u`6g\x07\xd2x;\x90\x8b\xbb\x03I\xfc\x1d\x7fw(\xf8\xfa8\xc8\xe1\x81\xc3\xf0x\xe0\x80\\\x1e8\x0c\x9f\x07\"9=\x90\xc6\xeb }\x82q\xdc\x1e\xc8\xcb\xef\x81\x08\x8e\x0f\xc4\xf3| \x81\xeb\x83\xf8d~\x8b\xe0\xfb@\x0e\xce\x0f\x84x?\x80\x9f\x9e!\xf8?\x109\x8b\x8b\xe6\x01y\xbd \x8e\x10\x82\x0b\x04\x11\xa5\xcc\xc8 \x82(^\x10\xe4\xe6\x06A\"?\xc8\xdf\xae\xda0G\x08\xd2yBN\x7f\xfc\x89!\xae\x10d\xe3\x0b\x01\x9e\xf6\x02\x18\xde\x10\xc4q\x87 \x04\xf6'r\x88\x00\xe1\xd7\x83'f\xe2\x13ARp\xf1\xbc\"@\xd42\x81_\x04\xa9\x1c#\xf0G5\x1f\xd7\x08\xf0|#@r\x8e\x00\xcd;\x02\\\xd4\xe3\xf9G\x10\xc5A\x02/\x0f rq\x91 \x96\x8f\x0439I\x80\x08o\x047 \x0e\xc1O\x02L\x19==!\x1fW 0|%\x98\xc1Yr:\xecDj\xb3\x9b\xb7\x04\xb9\xb9K\x10\xe4/A*\x87\xc9\xe9M\xaeQ\xfd\xcbu\x04\x97 \xbc\x94\x0b\xf0r\x9a \x89\xd7\xe4t\xe5\xe5;A*\xe7\xc9\xe9M\xce\x03=\xbbf\xf9\xb8O\x80\xe2?A\x02\x07\n\xe2xP\x90\xc2\x85\x82h>\x14\x04F\xdb\x00G\x05\"x*Xn\x14\xa4\xf0\xa3 \x96#\x05\xfe\x8a\xa7p\xa5\x9c\xce\x0c&\x12\xb6\xcb\xe08S\xde\x0eQ]\xfbyS\x90\x97;\x05!\xfe\x14\xf89T\xce{R\xb9U\x90\xb1\xedFp\xac \x8ag\x05\x06\xd7jl\x7f)\xca5[\xf9\xd1\xa9}H\xd84\x17\x8c>6\xecJ_\x96\x07\xb4\xa2\xc1\xfd\x0dS\xfb=\xa6\x96\x07\xef\x07\x97\x8cU\xeajw;h\xea\x8d\x90\na+h\xbb\xa2\xdb\xb5rS|O\xf5C\x9a\xbc\xc4\x15\x0bl\x0d\xd4\x83\xca\xa9\xfa\xac\xfc\xbb\xf3\xb6g\xb2\x9c\x83\n\x9e\xfa/\x01\x82\xd8oA\xec\x18\xb1j\xb7q\xcf\xe3\x9f\xc3\xef\xdf\xbd}\xbd\xf8\xf0\xf1\xe5\xc7O\x1f\x16\x9f\xde~\xb8x\xf3\xea\xfc\x87\xf37\xaf\xd1w\xf0\x7fE^~\xfe\xf6\x0f\xc8\xeb\xbd\xce\xb5xul\xa1\x9a\xa5\x9b]\x81\xfe\xba Ot\xf8{\xc7\x9aM\x0b\xf6\x03e\x07\x0b(\xdfeC\xf77uU\xde2\x8b\xfc\xc8`\x88\x17\x0c\x111\x82\xe1\xa9\xc6\xd9\xec7\xbbMQ=oX\xb1\x12\\11\xef\x0b\xc5\x080q\x02\xc5\x13\xe8\x9c< 8L\x1d\xf5cM\xe9-\x8d\x82\x0e?\xb6\xe5uUt\xbb\x86\xc13\xf6\xd9\xbf\x94\xfetQ7\x82\xf8\xf9\xef\xec\xe1\xb2h\x99\xf3\xe3\x0dp\xcf.\xdb\xb2\xcb\x81 \x8cj\xac\xdcZk\xa4\x7f[\x97\xd5\xad\xef\xd3\xb3\xdc5e\xf7\xb0\x10+\x9a\xa5W\x071\xa5\x84\x81w2}\xbc\xb5&lS\x94\xeb \x94\xae]\x81r\xe5\xae\xb3S)g\xb0\x94\xaa*\xb7z \x90\xe0U_ \xf5\xab\xbdT\x83(\xab_\x8d\x12Q,\x8c\x02%\xf6\x0dM\x8b\xa5\xdf\xce \x94W\xc3\x8f'\xe2\x8b\xaa\xae\xf0Pn\xb4Je\xd9\xeeM\xef\xaew\x86\n^(D>)\xca\x88\x00\x85\xe4'\xe3\x83$\x04&=!\xda\x94U/B\xe9t7\x9eHv\xb5\xd6#d\xa1\x00-\xeb\xcd\xa6l[\xec\xa09\\>\x1a\x18\x8d?\x0f\x89\x1a\x07\x1e\xf2\x86g.\x9a\xa2\xf3\xcb\xb6b\xdf\nX\xfc\x8e*\xaa\xf40\x8d\x8b\xbc\xbe\xa4\x03I<\xe8\xc1r\xa9\xca*V\xc5\x88a\x0f\x15/@\xc6\x0cT\x99B\x1b\xf7\x88\x0e\xa1-&\xb4\xa0\x1e\xaf\x97>F\xb3\x11\x7f^\xde\x14\xcd\xb5\x98\x13\x06\xdd\x0c\xb3\xc1\x13\x10\xf9aW\x82\xe4\xe5\xd7\x19\x05\xd8\x14\x9f\x17_8\x00\xba\x08\xa3v\xb5)>\x97\x9b\xddf\x1a\x91\xa03\xf9u\x1cz\xfe\xb2\xa8\x80\xdd\xb1F\x852:6\x92\x95r\x0c!2Jb\x8d\xd4\xaa(\x83\xaa\xb4\"\xe1\xa1aE\xcb\xf6\xc8\xbcF\xa4e\x90\x82\xae\xc2A\xdcm\xf9\xe8\x10\x14=F\x06\x0e;\xe2@d\x80\x8dR\xea~(\x80\x08\xf1\x07[\xaf\xbc\x0f\x90\xf1\xe4\x9bZ\xd9\xe3\xb2)\xab\x05_\xa8\x1a\x8a\xfd3Fal=-O\xdd\xdbny\xda\x8a\x154\xac\xd8r]L\xf3L&\xceD\x8bSWk\x87\xb6\xfab\xca\xd7'\n\x18\xcb\xa6\xbeP'\xd0\xd5\xd7rCK\x80\x0d\x9dN\xc8\xb1\xba*6F\xe2\x8e}\x03\xf2'\xa3\xba|\"\xa0W\xdf*\x81\xbfl\x80}\x96/P\xbel1u(+\xc7\xe0\xfda]\xb47|\xe8\xd2i*.\nq\xc1\xc3*{\x9e\xc2\xb0F\x8f9\x91\xc4C\xc1\x83\xab\x9b\xc65\xb0-\x8b\xf5r\xb7\xee\xa1\x9b\xab\x1d_a\xd9\x1f\xb8\xab\xcc\xd3\x1ax\xec\xea]\x07e'R5\xaak\xa8\xef\xc4:\xb5\xdfB\x80?\xdf\xb0JV\xd5^\x81f\xbc!c\x7f\xeaxZz2\xf9\xc4\x94-\x1f\xebWe\xa7\xc9a\x85\xd1|\xac\xfe\xeeo\xea\x96\x0d\xb9W\xf6\x87\x9a\xaf\xb1lG4L\xa3E\x88\xaa\x0dU\xb0zZ\x95=N+7\xdb\x05\x97\xd0\xfe\xd4\xd1\xfb;\x85\x9fj\x11\xd6m}\xcf\x1a\x9d/\xa9_\x17[ \xec\xd5\xd9l\xf5~\xab\xa8\x82\xfdi\x9b\xdd\xba+\xb7\xebR\x16n\xfc\xec\xbd\x1bF\xbd\xceH\xec\x19Iz\x9bo\xa6}*\x93~\x84\xb2\xb4\xf3\xf8\x05\x12z\x16FB\xcf\xbfR\xa1\xe7\xbd7*\x12\xf4, m^yg\xcb\xd6\x9e\xd4s\xb6e\xe0\x91\x8a\xb34Rq\xce3\xcf\x8b\xcd.\x93\xad\x96T\x9c\x11\x99d]\x8e,\xb2\x94\x0c2Rq\xce\x98-\x16\x93)\x16\x95%F*\xces3\xc2\x12\xb2\xc1\xb2d\x82\xc5g\x81\x91\x8a\xf3\x9c\xac\xaf\x98\x8c\xaf\x84l/Rq&\x15\xe7\xc0,):{\x8bT\x9cQ\x99Z)YZ\xa4\xe2\xec\xba,\x98\x8d\x15\x91\x89\x85\xd1(\x8e\xc9\xc0\"\x15gRq\xc6dS\x91\x8a\xb3\xb09\x19S\xa4\xe2l\xf3\x14\xcc\x8aJ\xcd\x88r\x8e\x0d\xa4\xe2\xbco\xa4\xe2\x9c\x90\xc9\x14\xceb\x8a\xcd`\x8a\xc8^\x8a\xce\\\x8a\xcbZ\"\x15\xe7\xb8\xcc$Rq\xee\x8dT\x9c\x95\x91\x8a3\xa98\x93\x8a\xf3\xf0\xb7\xe4\xe0\x86\xf5\x87I\xc59G\x14I\xc5\x99T\x9c\x85\x91\x8as\xba\x8a\xf3\xd9/\xfd\x7f\xcb\xdfRe\x9d{Ug\xf3 \x7f\xbb\xa0\xf3pI\xefo[\x94\xfd\xcc \xa0\xeb\xac\xae:~Yg\x17\x0b$\x89]\x86\x13g\x0e\xe2\x19\x18@ \xb7,s\xbc(3N\x92\xd9\x1bM\x08F\x14\x10\x14\x19DD\x01\x1dUH%\xcax\xfcE\x890g%\xcb\x04\xe92\xb9 3x\xcaL&\xd2L\x1am\xc6\xe3.Rvy&u&7y&\x92>\x93\x99@\x13G\xa1\x89$\xd1\xf8\xdapO\xaf\xc1\xd2h2\x13iPT\x9a\x8cd\x9a\xb9t\x9a$BM&JM\n\xa9\xc6\xe3\x0c-\xac|\x00b\xcd\xe1\xa85\x07!\xd7\xc4\xd1k\xb2\x13l\xb0\x14\x9b\xac$\x1b<\xcd&\x9ah\x13O\xb5 ~\nq\x12\xca\xb3\xe96A\xf9d\xd4\x84\nA\xba\x89\x99uE\x13o|\x83 Z4\x19W\xbe\x8c\xf4\x9b\x18\x02Nf\nN\x1a \xc7\xd7\x82PB\xc9\x89D\x1c\x87\xb7\x0e%\x92\x9c\x87\x8c\x83f\x94 \x089Q\x94\x9c\x90\xc6h\n-'\xe4\xd3 \xcfe\"\xe7\xc4\x07\x13O\xd0 \xd5-\x81\xa4\x93H\xd3\xf1\xc1\x9c\xd9\xa8:h\xb2\x0e\x8e\xae\x83%\xec \xa2\x1cO\xda\x89\xa1\xed\xf8e\x8f\xb3Pw\"\xc9;\xf3\xe8;\xa1\x80FPx\x0e@\xe2 \x96\xce\xd9\xd2\xf3Qy\x10d\x9et:\x8f\xc3]\x17\x947\xceJ\xe9 \x91z\x12i=\x0e_aYc\x04\xb5\xc7/i\xec\x134\xceM\xf0\xc9N\xf1q\x93|r\xd2|0D\x9fx\xaaO\x14\xd9'\x81\xee\x13K\xf8 \x88\x14\xfbK\x87\xa5``i? \xc4\x9fH\xea\x8f\xa7\xba)\xf4\x1f\x87+\x84,q\n\x05\xc8\xd3\xe4\xc3\x92\xc4\x19i@A9\xe2CP\x81r\xb5\xc5\x08:P\x0c!\xc8.6\xec\x93\x1a\xee\x1c\xa8\xe5`\x18\x99a\xdc\xda8EbXH ;\xfca\x05\x86}\xf2\xc2\xb8\x92'I\x0bG\x0b\x0b\x07\xf7R|\xa2\xc2\xb1\x92\xc2Q\x82\xc2qr\xc2h1\xe1\x04)a\x9f\x90p0~\xb8\x97=WB\x18# \x8c\x93\x0f\xceT\xa1\\\xc2\xc1x\xd9`\xb3\\\xb3\n\xde_5K08\xa0\x07\xd8\xcdG\x9e\x83B\xc1\xc1W \xe8\xa8@F\x89\xe0\xa0RbX\x1e8s\xcd2\x0b\x03\xa3e\x81\x83\xa2\xc0\xf1\xf5\x9c+\x08\x8c\x97\x03\x8e/\x9b\xf7\x1dd\x13\x02\xc6\xca\x00\x07E\x80\xe3+\x98,\x00\x8c\x93\xff\x0d\x16(,\xfd\x8b{\x1f9e\x7f\xe7\x88\xfeb$\x7f\xd1A\xf1\x8b/\xc6\x06&F\xea\x173J\x00Z\xe87$\xf3;\xaa\xc9|\x91\xdf\x0c\x03\x15^\xde\x17\xf7\x16 ^\xdaW\xca\xf7z\xfc\xcd\x12\xf6\x0d\xc6\x08Pq\x02\x94\xa4o\xb0\xc1k\xc3\x07\x13\xd0b\xbe\xa6Xo\xc0!Z\xae\x16'\xe4{\xa0j\xc7H\xf8\xcaoY\xc0a\x0e\x01\xdf(\xf9\xde\x03\x06\x06%\xdc\xdb\x0b\xf3\x06\x1c\x06e{\x83\xa1A\x89\xf2\xa2\xc2\x81\x1b\x13 *h\x99\xc5x=R\xbch!\xde`,p\xb5\xcb(\xc1\x8b\x16\xe0\x0d\x97,M|W\xc9\xaaZ\xfc\xb9\xa5ws\n\xef\"ew\xa3EwM\x81]{\xe5\xdc\x92\xbby\x05w1r\xbby\xc5v\x11R\xbbIB\xbbZT\xd7\xe6/(\xb3\x9b&\xb2\xab\xf6\x17-\xfe\xdc\x12\xbbh\x81\xddQ\x9f\xc2J\x86\xf6\x8a\xa1s\xe4BI-T\x19\xa9\x85\x92Z\xe8`\xa4\x16Jj\xa1\x83eMv\x88Iu\x88Jt \xb5\xd0\xb9\xe9\x0d \xc9\x0dYR\x1b\xe2\x13\x1bH-tNBCL:C\xe6d\x86\x0e\x95\xca\x901\x91\x01\x9b\xc6\xd0\xc5%1\xc4\xa60\x90Z\xe8\xc8\xa2\x93\x16H-\x14\x95\xaa\x90\x92\xa8@j\xa1\xae\xcb\x82\xc9 \x11\xa9 \x18-\xcc\x98\xb4\x04R\x0b%\xb5PL\xf2\x01\xa9\x85\n\x9b\x93n@j\xa16O\xc1\x04\x83\xd4\xf4\x02\xe7\xd8@j\xa1\xfbFj\xa1 i\x04\xe1$\x82\xd8\x14\x82\x88\x04\x82\xe8\xf4\x81\xb8\xe4\x01R\x0b\x8dK\x17 \xb5\xd0\xde\x0e\x91\"\x90\xa3\xcdE\xa4\x07\xe0\x93\x03~\xadj\xa1c\xc53W\x99\xc7W\x8d\xca<\xa0\x9d\x07.s\xb4\xe8\xdbM\xd9vuS.\x8b\xf5\xa2\xac\xae\xea\xb3_$\xc3\xcf\xa7\xea\xf6\xc7\xfe\x96\xf3\xea\xaa\xeee\xdcx=\x07oS-7\xe9V\xd7t\xa4\xd86\xf6\xf7DW\xfaH\xd5\xdax\x15\xf7\xa7\xf2\xa3\xa2\xf0KF\xaf\x7f\x1a\x16%\x16i\x8b\xcc`\xce\xb2A\x10\x9c\xbba\xc5\xcaE\x15\xf7\xba\x85\xa0knj\x8f\xd4\xc3\xca\x91\xc7n^\x16m\xb9\x84\xcbu\xbd\xbc\x15\xf5v_\x1f*\x13\xa0\xca\xc5M<-\x13\x85\nq\xc0\xa8\xb4b\xbb}\xdcGb6\xde\xa4\xbd\xd2\xcax\xb0,\xb6\xdd\xae\xe9)\xa1\xfa\xcf\xcdn\xcddv\xc3\xb6\xa9y\xff\xf1\x17\xb1\xe8\xdf\xa7\x1feRobyS\x94\xd5\x89\x12>\x15\x0cK>~\xf7\xbf\xc0\xaa\xe8\n\x1e\x97\xddR\x94\xcd\xf7`\xb9\x88Q\xe5\xf5\x9d\x9c\xad\xae\x1f\xd0\x8f\xa7\xadH\xa3b\xd05E\xd5\xca\xf1|S,o\xca\xca!\xc4\"\xf8Xe\xb5(\x1d)m\x80{\xa5>v7\xe0\\`X\xde\x00\x8f\xc8\x91\x133f\xf1\x02\xfd\xd1\x91_\x80m\xc3\xee\x1e\xf9\x03pS\xb47\x99;\xa3WTH\xccv\xbaE\xcb\xba\x85\xef\xb3\xab\x0dUS@\xd7\x96\x9b\xe7\x0c\xe5\xd1e^\xaa\xca\xd40\xcdN[8\xe4\x10\x13v\xc0\x87\xbeoh\x17E\xd3\xb5\xac\xfb\xa3x\x03\xbe\xa6+h\x99\xdd\xc2_dTQQET\xc5\xe3\x8f\x93_-\xd9\x19\xf8g\xcfq\x0f\xff\xe9\x91\x8a7\x88\xfa>\xd2\x03\xa7\xf1\xb8j\xea\x8d\x04\xa2\xb6[\xa8w\xddv\xd7\x0d\x7f\x1b\xbe\x1d\x0eoBf\xff\xd1\xeb0H\xcd>\xce\xf3\x8a\xed\xf6\x91\x9e$\xfa\x87\xe2\x02<\xd2#\xd9]\xb9b\xd5\x92=\xd2\xe3\xfa\xf67L\x7f<\xc3\x12\xff\x02\xd7-\x0b((C\xb6\xf2\x8d&u\xf2K6ZE\xf4\xd3$\xb1\xa9\x08\x1fY\xb5b\xcd\xa6\xac:\xf5Q\x91\xc3\x8fmFsW\xac[\xe6M3\xb3S\x07\xc1G\x1f\x04\xdch\x86\x19\xc7pZ\xd5\xd2P\xb1\x8e\x99!G\xa9W{\xfd\x98\xf4\xf8x\x0dki8%ki\x88\xe8\x03\xf2\x0d\x80r\xe7\xd7\xb6\x1e\xaeC\xbc\x01\x88|\x0b\x90@\xf4\x0c:\xec\xac\x88\xbfo\xdd \x0dM\xfc\x0cz\x1a\x88\xa1!\x02\xa8\xb6X\"h\xd0\xe1\xb6\xe8n\xd0\x84PmY\x88\xa1\xda\xf0\x04\xd1\xa0+\x93@\x1aA\x14\xd56\x930\xaa-\x8e8\x1at\xa7HmQ\x04Rm\xb1D\xd2\xa0\xc3\xab\xba\x89\"\x94j\x8b\"\x96\x06\xbd\xa5\xe8hKC\x11M\x83^\xc6DT\x0c\xe1T[6\xe2\xe9\xe0p\x0e\x01U[\x02\x11U[\x16B\xaa6<15\xe8jD\\\x0d\x13T\xb5\x1d\x80\xa8\xaa\xedP\x84Um\x07 \xaej\x8b!\xb0jC\x13Y\x83\x9eL\xa2+\xe0\x08\xad\xda\xa2\x88\xadAo\xe2;\x81%\xb8j\xeb\xe2\x88\xae\xdab \xafA\x871\xca\xdd\xd2f\x13`\xb5\x05T\xbc\xa5EL\x1d\x83\xcb\xa5\xc1bg\x99QD\xd9\xa0\xb7\x9eH\x8b \xccj\x8b)q$\x81\xd6\xebk<\x9bE\x10i\xb5E\x11j\xbd\x9e\x82\xba\xe0\xd2RH\xb7\xe1\xf6\x89\xd2\x08\x97\x96B\xc2\x0d9\xecPz\xe1\xd2\xf2\x90r\xb5!\xf9\xa5\xda\x82$]m\x11d]m\x01!_a)\xe4]m\x18\xff^-\xd0l\xa4^mi\xc1\xc7\x93|\xb5aj\x9e@\xfa\xd5\x96D\xfe\xd5\x16\x88x>2\xb06$)X\x1b\x86\x1cl\\\x8b kC\xbe\x95x\xd2\xb06\x9dwi\x18Exi1;))\xea\xf0\xfe6\xd3\xd4\x1b\xb4F\xbc4\x9fR\xbc\xb4\x98\x1a%\xa9\xc6K\x8b\xd6\x8e\x97\x86\xdc\xc1\xf3\xe9\xc8K\x8bU\x93\xb7\xdf\xe5\xd5\x94w\xdf\xe2V\x96\xb7\xdd\x13|H\x82\xca\xbc4\x9f\xd6\xbc\xba\x02\x17\xef\x98F3W}^\x1aF\x83^\x1aN\x89^\xda\x01\xaa\x9bK\x9b^\x1a^\xa1^\x9aY\xd2l\x15\xea\xaf\x9d\xa5Y/\x0d!x\x9b\x9di\x12\xd4\xb2\x97\x86l\x0c\x10\x19?\xc8\xa8n/\x0d\x15C\x8c\xd2\xbd\xb4\x03\xd6;R\xfb>\xe8\xef\x19\xfb|\x8aW\xc0\x97\x16\xd4\xc1\x97\x96\x1a\x85\xb9\x9a\xf8\xd2\xf0\xca\xf8\xd2RK\x8bxg\xd9\xb4\xf2\xc7\xeeB\x8a\xf9\xd2\x82\xba\xf9\xd2R\xab\x9f\xac\xa1/\x0d\xa7\xa4/\x0dYD,\xf1=\xe6-\xc6+\xec{\xdd\x15\xdd,\x9d}i\x18\xb5}i\x91\x81\x0be\x90@r\xf0\xb0*\xfc^w\xea\x9b\x9e\xa2\xc5/-\xa4\xc8/mT\xc3\xf9\xba\xfc\xd22\x0f\xc3x\xa5~i1o\x0d\xe2U\xfb\x83\xfe\xa4\x93Y\xda\xfd\xd2\x90q\x84\x88X\x02J\xcd_\x1a\xb2Ci\x8b\x0d;\xa0\xf5\xfdQ\xae\x8c3\x00p\xc2\xed\x83\xe1\xb4\xfe\xa5=BPb\xd4\xffQ\x0e\xe5W8p\x06\x00\xcaS\\L\xd1\xa7\x05H{\xa4\xd0\xa2\xce\x0f@y\xd3g\x0c\x84O\x11@\xb9\xc3\x05\x17u\xde\x80\xb4\x88\x80\xc6\x8c\x8a\x90\x10\xfc\xd8s\x08\x82\x0e\xef\x8b\xd6w\x1a\x814\xf4\x99\x04\xd2\x90\xf1\x8a\xa9{\xc6S\nz\x87\xb8\xb3\n\xa4a\xcb\x9avn\x81\xd3\xdd\xa0^\xef\xa5d\xc7\x9fa\xe0t%\xcf6\xc0\x9ed -\xfa<\x03\xf7\xd3\x87s\x0e\xfc\xa7\x1aHK:\xdb\xc0_u\xd4 \x07\xd2b\xcf9p:2\xda4\xe2\xb4\x03iIg\x1e\xb8KP\xf6\x9c\x81\xce\x7f\xf2\x81\xb4\xb4\xf3\x0f\xbc\x95a+\xcf)\x08\xd2\xd2\xceB\xd8\xeb\xadB$e\xacB\xd2\x9f\x83P\xb6\x11G!L\x94Q\xde_\xbc\x9a\x96\x9dNE\x18\xad\xb0\xe9T\x04\x8ba\x87\x96\xd8d9\xd9~\xe9T\x04D\x12\x9c\x8d;\x14\x9d\xfc\x86Oz\xa3S\x11\xb4\xc5&\xb3yw\xc8\xcb\x84\x13\xbd\xd2<\xda\xc3\x04\xccP\x986*\x8c\xbcH\xf5F\xb1\x9b.fV}\x90\xc4(X\xb6\xb0\xa9W\xbb\xb5eG\xc2Y.\x08\xe2Y\x18\x92hp;gT\x99 \x9bSQ6$\xb3Su;\xb1\xd2\xf7\xf107\xc5gC\xf7\xd7W*\x9f\xdau\x98\xe8;*\xf8\xf8\xa1\xba\xe0\x9a\xdb\xd4\x03\xf4\x86\xa8\xb2\xab\xe8\xac\xea\x1a/~\x98\xb5\xdc\xce\xad1\xa3(Fm@\xffIL5K\xb1\xe7\xd8\xbf\x0c\x87'\x83\xae \xe0i\xe3\xdf\xcf\xb6\xac\x81mQ6g]S\xd6\xd6\xc4\x00\xe3\x04\x92#\x89\xcc~\x89t\x80\x86\xd7l|f\xf55N\x12\xcd\x965m\xd9Z\x89\xf6<\xb0\x8b\x15\xabjG\xb6\\\\\xe7\x1a\xbc\x8d\x08x\xfc\xcfb\xb7|Y\x97\x15\x88\xdf\xcb\xca\xc2nB\xb0$\xe4g5\xc8\x8eP|\x08y\xb5\xe0A\x8c}\x11\x0d\x82h\x10!\x0c\x00\xd7W\x89\x06A4\x08\xd7\x95D\x83\x10F4\x88}#\x1a\x04\xd1 \\F4\x08\xa2A\x08#\x1a\x04\xd1 \x88\x06A4\x08iD\x83 \x1a\x04\xd1 \x88\x06\xe12\xa2A\x10\x0d\x82h\x10D\x830,\x07$M4\x08aD\x83\xf8\xb5\xd0 \xa2\xe9\x02u\xbd\xf6\x90\x05\xeaz=\xa2 \xf0\xcbG\xcc\x87\x11;\x80_\xae\xfe~\xbc\xa4\x80\xbe\xc2\xa6\x8d)\x01\xbc\x92&\xc4\xb7W\xeb\xc1\x9c%\x80 \x8eS\xd5\xddB\xa6b/|J\x95\x81\x9d\x8c9\x1eF\xb5\x96\x08d]\xaf\xd1\xf8#\x8f\xca\xfb\x8bW\x847\x12\xde\x18\xdcl\xc3\xecW\x01\xe1\x8d\x847:\xaf$\xbcQ\x18\xe1\x8d\xfbFx#\xe1\x8d.#\xbc\x91\xf0Fa\x847\x12\xdeHx#\xe1\x8d\xd2\x08o$\xbc\x91\xf0F\xc2\x1b]Fx#\xe1\x8d\x847\x12\xdehX\x0e\xec\x87\xf0Fa\x847~\xadx\xe34\xb3\xd4\x86:\xfe4$\x82j\xec\xb1X\xaf\x8d\xdcO\xbd\xb3\xd8-\xa5\xaa\xf7uy\xc7*u,\x9f\x15\x98\x1c<\xaa_\x8f\x16\x9e\xf4e\xdev_\x00\xfa\x91a\xac\x9bE\xb1Z5\xacu\\\x85\xda\xff\xc0l!\x80\xe5\x91#(V\xffmzv\xc1S\xf7\x16\x96\xf6\xf7\xafp\xc9\x967\xc0\xaae\xbd\x12\xbb\x94\xa2\xeb\xdb\x87\xb8%\x7f\xbdU\xbbk\x17\xdb\xdd\xe5-s\x1e*\x16\x88. \"\x0c\x08\x80\x0dp\x11\x86\x88(C\x02\xd8\xe6uf\xdfq\xf1,@r\x83n\x10\x06\xde \x01|\xf3W\xa0\xe8n\xd0\x00\x1c\xe4\x02\xe1 \x11\x88\xf3:\xe4\xc1E\x83q0\x1f\x90\x83hP\xce\xebJ\x81\x05Q\xc0\x1c\xe4\x06\xe7 \x12\xa0\x83X\x90\xce\xdf\xb2{\x00\x0f\x0b\xd4An\xb0\x0ep\x80\x1d\xe4\x04\xed`6p\x07i\xe0\x1d\xe4\x02\xf0 \xc4\xf3w\x07\xe3\x84\x8a@\x15\x0e\x00\xe6\xc1\x01\x01=8\x0c\xa8\x07\x91\xc0\x1e\xa4\x81{\xa1O0\x0e\xe0\x83\xbc \x1fD\x00}\x10\x0f\xf6A\x02\xe0\x87\xf8d~\x8b\x00\xfd \x07\xf0\x07!\xf0\x0f\xf0\xd33\x04\x08\x08\x91\xb3\xb8h0\xd0\xebM\x00\x85\x08@\x10\"J\x99\x11\x18\x84(p\x10r\x03\x84\x90\x08\x12\xfa\xdbU\x1b\x06\n!\x1d,t\xfa\xe3O\x0c\x01\x86\x90\x0d4\x04<\xf6\x05\x18\xf0\x10\xe2\x00D\x08\xed\xf8'\x02\x89\x80\xf0\xeb\xd9T\xcc\x04*BRp\xf1\xe0\" j\x99\x002B*\xd0\x08\xfe\xa8\xe6\x03\x1c\x01\x0f:\x02\x12x\x044\xf8\x08\xb8\xa8\xc7\x83\x90\x10\x05D\x82\x17\x8c\x84\\\x80$\xc4\x82\x920\x13\x98\x04Dx#\x00J8\x04H \x982zzB>\xc0\x120\xa0%\xcc\x00.\x9d\x0e\xf9\x85>\xf0\x12r\x03\x98\x10\x041!\x15\xc8tz\x93kT\xffr\x1d\x01h\x82\x17w\x01/\xb0 I\xe0\xa6\xd3\x95\x17\xf4\x84T\xe0\xd3\xe9M\xce\x03}\xe7ff\x03@\x01\x05\x82B\x02\x10\nq`(\xa4\x00\xa2\x10\x0d\x8aB`\xb4\x0d\x00U\x10\x01Va\x01RH\x01I!\x16(\x05\x7f\xc5S\x00S\xa73\x03\x8e\xc4v\x19\x1cp\xea\xed\x10\xe2hw\x0fx\ny\x01T\x08\x81\xa8\xe0\x07R\x9d\xf7\xa4\x02\xac\x90\xb1\xedF\x00\xad\x10\x05\xb6\x82\x01\xb8\x8e\xed/E\xb9f+?:uY\xd7k\xe6\xdc:\xee7$\xbcWaW\xfa\xb2<\n\xb1[\xc1\xfd\x0dS\xfb=\xe6Y\xbd\xbc\x1f\\2V\xa9\xab\xdd\xed\xa0\xa97\xfda\xb5\x02\xdc\x95\x9b\xe2V\xadWP\x97\xb8b\x81\xad\x81z\xd0\xf4\xb4k\xf5w\xe7m\xcfd9\xcfz5_\xf5_\x02\x04\xb1\xdf\x82\xd81b\xd5\xce!]\x0b\x02m\xff\xfd\xbb\xb7\xaf\x17\x1f>\xbe\xfc\xf8\xe9\xc3\xe2\xd3\xdb\x0f\x17o^\x9d\xffp\xfe\xe65\xfa\x0e\xfe\xaf\xc8\xcb\xcf\xdf\xfe\x01y\xbd\xd7\xb9\xce\x11\x8d\xaa\x82/\xc9\x15\x15Ol#\x90\x0fR\xcdX\xcdJ\x863\xaa\xc5o\xcf\xcaj\xb9vO\x0fZ\xb6\xbez>H5;\x1aA\x7fX\xf6B\x1e\xc6\xfc\x08U\x9b>r@\xd7\xeb\xaeX\x0fg\\\xb7;\x89<\xb8\x07,\xf3$x\xe3\xd4oGE\x87\xd2\xcd\xae@\x7f\xdd\x88\x19`\xfe\xbdc\xcd\xa6\x05\xfba\xd2\x83\xf5\x15\xf0\xf7\xd0\xd9\xe8\xfe\xa6\xae\xca[f\xc9A\x1e\x0c\xf1\x82!\"F0<\xd58\x19\xfff\xb7)\xaa\xe7\x0d+\xa4^\xb5\x98\xf7\x85b\x04\x988\x81\xe2 tN\x9e\x04\x1c\xa6\x8e\xfa\xb1C%\x874\xc6\xe1\xc7\xb6\xbc\xae\x8an\xd70x\xc6>\xfb\x97\xd2\x9f.\xea\xa6\xe3\xa3\xcc\xbf\xb3\x87\xcb\xa2e\xce\x8f7\xc0=\xbbl\xcb.\x07&0\xaa\xb1rk\xad\x91\xfem]V\xb7\xbeO\xcfr\xd7\x94\xdd\xc3B\xach\x96]\xee\x12\x06\xde\xc9\xf4\xf1\xd6\x9a\xb0MQ\xae\x83P\xbav\x05\xca\x95\xbb\xce\xcet\xf9\xc1R\xaa\xaa\xdc\xea\x81@\x82W}%\xd4\xaf\xf6R\x0dG1\xc8sDf|\xda\xc3\xca\xfb\xf874-\x96~;'P\x1a\xe7B\x9c\x88/\xaa\xba\xc2C\xb9\x91+\x02\x01\x80N\xa7w\xd7\xbb\xca\x7f\xce\x04\xee\xfc\x8b\xa8\x00\xad\x8a\x8e=\xe7\xbe\xb2\x05I\x1e\x9d\xe1\x0e\xd1\xa6\xac\xe4\xf1\x1a\xbe\xa6<\x9eHv\xb5\x00\xc0\xd7\xacc\xa1\x00-\xeb\xcd\xa6l[\xec\xa09\\>\x1a\x18\x8d?\xef\x9f\xee2\xb5LC\xde\xf0\xccESt\xbe+\xf1o\x05,~G\x15\x15\x04\x95bm\\\xe4\xf5%\x1dH\xe2A\x0f\x96/\x1bVtrU\x8c\x18\xf6P\xf1\x02d\xcc@\x95)\xb4q\x8f\xe8\x10\xdabB\x0b\xea\xf1z\xe9c4\x1b\xf1\xe7\xe5M\xd1\\\x8b9a\xd0\xcd0\x1b<\x01A\x12\xbf\x12$\xaf\xe9\x89\x18S\xdb\x14\x9f\x17_8\x00\xba\x08\xa3v\xa5\x8f\xa1\x99D$\xe8L~\x1d\x87\x9e\xbf,*`w\xacQ\xa1\x8c\x8e\x8dd\xa5\x1cC\x88\x8c\x92X#\xb5*J\x8f\x8a\x84\xb6\xb2\xe2\xbd\xade{d^#\xd22HAW\xe1 \xee\xb6|t\xf0\x8e4\x80\x0f\x1cv\xc4\x81\xc8\x00\x1b\xa5\xd4\xfdP\x00\x11\xe2\x0f\xb6^y\x1f \xe3\xc97\xb5\xb2\xc7eSV\x0b\xbeP]\x0c\x0b\xd5\x19\xa30\xb6\x9e\x96\xa7\xeem\xb7\xd6\xaf\xcaN\x93\xc3\n\xa3\xf9X\xfd\xdd\xdf\xd4\xadqH\x95\xfd\xa1\xe6k,\xdb\x11\x0d\xd3h\x11\xa2jC\x15\xac\x9eVe\x8f\xd3\xca\xcdv\xc1%\xb4?u\xf4\xfeN\xe1\xa7Z\x84u[\xdf39\xea\\\xb2\xfeu\xb1\x95\xc0^\x9d\xcdV\xef\xb7\x8a*\xd8\x9f\xb6\xd9\xad\xbbr\xbb.e\xe1\xc6\xcf\xde\xbba\xd4\xeb\x8c\x14\x9e\x81\x0d\xa6\xce\xdc\x93\xa9>+p\x1f\xf1\xb6-\xae\xd5\xc9Z\xfb_\xa9\xd1c\x86\x0b\xc72~\xc3\x9fU\xbb\xb7%\xf2H\xf3\xce\xeb\x02\xba~\xecs\xb7p\xe6\x8c\x04?\xa4A\x86`Wvk\xf6\x02\xfe\xdb\xf5\x85\xd5\xcf\xd7\x1fU\xfe\x9f\x8a^[\xb4\xad\xdc\xd5\xbb(\xae\xd9{\xf6\xd7\x1dk\xbbS\xf9\xbb\xc3\xd9p\xf4%w\xcbC\xc8`S\xb7\x1d0AR\x15\xecV\xcb\xad\xa2}\xcd\x0c\xc0\xce\xbd\xdeU!p\x0e2r/\xb3\xd4\x9b\x9a\xc3\xc1r\xfa\xd3h\x88\xed\xb8\xf8qf\x88\x96\xbc\xe3.d\xa7q\\~_\xf0!\xab;\x81\xb2k5+\xbc\x15_> \x85\x88\xbd\x83\xfb\xb2\x1d\xbfSWED\x1a\xdd\x90\xb5\x86\x95d\xdc\xcbs\xd36\xc84\xf6?\x90J\xe3\xf87Ri\xc4M\x91 !qL\xb6URiD$\x89u9\x12\xc4R\x92\xc3H\xa51c\"XL\x12XT\x02\x18\xa94\xceM\xf6JH\xf4\xca\x92\xe4\x15\x9f\xe0E*\x8ds\x12\xbab\x92\xb9\x12\x12\xb9H\xa5\x91T\x1aI\xa5\x11\x9b\x88\x955 +%\x01\x8bT\x1a]\x97\x05\x13\xad\"\x92\xac0\x1a\x841\xc9U\xa4\xd2H*\x8d\x98D)Ri\x146'\x19\x8aT\x1am\x9e\x82 O\xa9\xc9N\xce\xb1\x81T\x1a\xf7\x8dT\x1a\x13\x92\x94\xc2 J\xb1\xc9I\x11\x89I\xd1IIq I\xa4\xd2\x18\x97tD*\x8d\xbd}\x95*\x8d\x03\xefo\x98\xf4<\x17_\xde\x17\xfb\x89-\xa3E\xa4J\x87aUq\xb9\x96\x1b/\x12\x11\xe4a3\xd0\\\xa1\xc5(is61F\x10#\xca\x0by\xaf\xf1\xb7\x86\xfduW6l\xf5\x02\xae\x8a\xf5\x08V\xb2\xae\xd4u\x91\x07 \xf7\xf4\x96=\xb8\x8a>\x01H\x15\"Z\xa8\xaf~\xc3\xba]SI\x1d@ \xf5)(\xb8\x87O\xc5\xee\xd5\xf5d\x9bG\xd4\x80W\xd4\x0f\x89\x9e\xc2;>F\xd7\x95X\xde\xd6WW-\x13\xb4\xf2qq\xc1\xd8}oY\x979Z\x8e\xbd\x0cK\x10e\xf9\\q\x9c\xec#\xa8\xca\x88PV\xbb\x0dk\xca\xa5\xfe\x9b\xf8@(\xbe\x81\xdc\xc8\xb9a\x95\x0e\xfc\xae\xea\xf7\xce&3\xe6s\xe1m\xcd\xdav\x08\xa1\xdcm\xda\xb5<\xd4\xb7,2\x9ec\xf7\x07\x0e\xee\x04\xa6\xb6\x84w]nJlt\xc5\xb5\x1a\xb9w\xa1\xd7r_\xd5l\xc1\x8a\xcc\xb0[O\xf0V\xb9\x8bb\xfe\xe9\xfc\n\xd6\xec\xaaS\x1bve'\xbf\xe0z\x9e+\xb6\x84e\x07\x91\x0f\xe1q\xbe|\x00V,o\xa0\xd8n\xbf`\x14M\x0c~\xb8\xdf\x17K\xe3\x0e\x1eQ\xd1Bk\xe8\x9a\x1d\x03\xfe\x1fe\xb5*\x97\x82V\xa5\xc0!\x15Aq\xa1jH\xa6\xbb\xb2Z\xaew\xab\xc9,\xb6\x90O\xe9\xd1\xb9\xc9\x1b\x13X\xaf\xb1i\xcc?\x9b#\x1a\xca\xc8\xd9\xa7\xf3v\xf2\xb6&U\x10\x13\xff\x86\xb5\n\x94\x17\xddk\xe8\x8f\xbc\xcb\x9d\xaa\xdeT^W\xf5\x947\xa7{\xe3\xf8\x1122s_\xec~\xfa\xa8+\xb1\xd4\xf2j\x1bv\xc7\x9a\x91S\xdfkUWO_ii\xb0;\x1af\xef##?\xfc\x19L\xb0\xef\xa1nV\xac\x99\xee\xc6}(\xab%{\x01R\xc8\xf8y\xbb\xba\x85\xdf\x9c\xfe\xd3\xef\x1e)N.]\xe5\xa7aa\xe5\xb3_\xfa\xff\x16\x12\xba\x7fW\xaa\xc6^\xa9\xe5^i\xd9`\xc8UW\xb5h\xb0rD\x1f~P\x1a\xbc\xba\xc9\xd8\x95\x96\x9f\xe8x\x1c\xbb\xd0\xb2\x8b\xbc\x91\xc4\xfd\xc2\xc9%\x07a\x08\xcc>~n\xa1\xe4x\x99d\x9cH\xb27\x9a\x10\x8c( \x98-\x88\x88\x02:\xaa\x90\xcao\xf1\xf8\x8b\x92E\xce\xcaq \xb2\\r\xf3\\\xf0L\x97L\\\x974\xb6\x8b\xc7]\xa4\x10\xf2L\xc6Kn\xceK$\xeb%3\xef%\x8e\xf9\x12\xc9}\xf1\xb5\xe1\x9e\x15\x83e\xbfd\xe6\xbf\xa0\x180\x1990sY0I<\x98LL\x98\x14.\x8c\xc7\x19Z\xea\xf8\x00|\x98\xc31b\x0e\xc2\x89\x89c\xc5d\xe7\xc5`\x991Y\xb91xvL4?&\x9e!\x13\xfc\x14\xe2D\x8dg\xb3d\x82\x82\xc6\xa8 \x15\x82+\x133\xeb\x8a\xe6\xcb\xf8\x06A\xb4\x8c1\xae|\x19Y31\xbc\x99\xcc\xcc\x994\xee\x8c\xaf\x05\xa1\xa4\x8b\x13\xf93\x0eo\x1dJ\xb68\x0f\x87\x06M\x04A\xf0h\xa2\x984!\xd5\xcf\x146M\xc8\xa7\x13U\xcb\xc4\xa9\x89\x0f&\x9eW\x13\xaa[\x02\xb7&\x91]\xe3C'\xb31l\xd0\x1c\x1b\x1c\xcb\x06\xcb\xb3AD9\x9ek\x13\xc3\xb6\xf1\x0b\x11ga\xdcDrn\xe6\xb1nB\x01\x8d`\xde\x1c\x80{\x13,\x9d\xb3\xa5\xe7c\xe0 88\xe9,\x1c\x87\xbb.(8\x9c\x95\x89\x13\xe2\xe2$\xb2q\x1c\xbe\xc2B\xc3\x08F\x8e_d\xd8'1\x9c\x9b\x97\x93\x9d\x99\xe3\xe6\xe6\xe4d\xe7`\xf89\xf1\x0c\x9d(\x8eN\x02K'\x96\xa7\x13\x90\x0d\xf6\x97\x0e\xcb\x9c\xc0\xb2u\x12\xf8:\x91\x8c\x1dOuSX;\x0eW\x08\xa1\xe0\x14\xe6\x8e\xa7\xc9\x87E\x823\xb2w\x82\x02\xc1\x87`\xf0\xe4j\x8b\x11,\x9e\x18\x1e\x8f]\xfe\xd7'\xfe\xdb9\xd0\xc6\xc10\xc2\xbf\xb8\xb5q\x8a\xe8\xaf\x10\xf7u\xf8\xc3J\xfe\xfa\x04\x7fq%O\x12\xfb\x8d\x96\xfa\x0d\xee\xa5\xf8d~cE~\xa3$~\xe3\x04~\xd1\xf2\xbe \xe2\xbe>i\xdf`\xfcp/{\xae\xa8/F\xd2\x17'\xe8\x9b\xa9B\xb9\xa4|\xf1B\xbef\xb9f\x15\xbc\xbfj\x96\x84o@\xa1\xaf\x9b\x8f<\x07\xa5{\x83\xaf\x12\xd0Q\x81\x8c\xa2\xbdA\xed\xc2\xb0`o\xe6\x9ae\x96\xeaE\x0b\xf5\x06ez\xe3\xeb9W\xa2\x17/\xd0\x1b_6\xef;\xc8&\xcd\x8b\x15\xe6\x0d\xca\xf2\xc6W0Y\x92\x17'\xc8\x1b,PX\x8c\x17\xf7>r\n\xf1\xce\x91\xe1\xc5\x88\xf0\xa2\x83\xe2\x97C\x8c\x0dL\x8c\xf8.f\x94\x00\xb4\xf4nHxwT\x93\xf9\xb2\xbb\x19\x06*\xbc\xe0.\xee-@\xbc\xd8\xae\x14\xd4\xf5\xf8\x9b%\xb5\x1b\x8c\x11\xa0\xe2\x04(\x91\xdd`\x83\xd7\x86\x0f&\xa0\xe5uM\xf9\xdc\x80C\xb4\x80,NZ\xf7@\xd5\x8e\x11\xd5\x95\xdf\xb2\x80\xc3\x1c\x92\xbaQ\x82\xba\x07\x0c\x0cJJ\xb7\x97\xca\x0d8\x0c\n\xe9\x06C\x83\x92\xc9E\x85\x037&@T\xd02\xcb\xe3z\xc4q\xd1\xd2\xb8\xc1X\xe0j\x97Q\x14\x17-\x89\x1b.Y\x9a\x1c\xae\x12:\xb5\xf8s\x8b\xe1\xe6\x94\xc2E\n\xe1F\xcb\xe0\x9a\x92\xb7\xf6\xca\xb9Ep\xf3J\xe0b\x04p\xf3\xca\xdf\"\xc4o\x93\xa4o\xb5\xcc\xad\xcd_P\xf86M\xf6V\xed/Z\xfc\xb9Eo\xd1\x92\xb78A\xcfh=\xcf\x897\x92\xf3\x14Fr\x9e$\xe79\x18\xc9y\x92\x9c\xe7`Y\xd3\x1ab\x92\x1a\xa2R\x1aH\xcesn\"CB\x1aC\x96$\x86\xf8\x14\x06\x92\xf3\x9c\x93\xba\x10\x93\xb8\x909m\xa1C%-dLY\xc0&,tq\xe9\n\xb1\xc9\n$\xe79\xb2\xe8\xf4\x04\x92\xf3D%%\xa4\xa4$\x90\x9c\xa7\xeb\xb2`\x1aBD\x12\x02F\xac2&\x01\x81\xe4\x1b\x82\xb5\xb0\x94Q[\xf7\x05@\xaf\x10\xdb\"\xf8\x00@<\x04F\xdcy\xafR\x9b4\xc4>\x13 \xb7k\x86k'\xcf\xd7l\x8fK\xb6\xbc\xf9\xddo\x9fk\xf9\xb5A\xc6\xcd\xeb\xae\x1b\xb2\x19|\x9b\xd6\xe3^\xf3\xf8\xb5\xde{\xfe\xfcZ#\xa8\x83\xbeT\x0ci)U\x1d\xe5\\\x98/@lo\xca\x1f\x1b\xb6d\xe5\x9d\xeb\xf8m|\xec\x86o\xcb0`\xab\xc0\xd5\x95\xda`U),7|\x96y\xf9\x00\x1e\xb9\xacb)dE\x95T\xa8{\x1c\xac\xef+\xb9\xc6\xaa+\xa3u\xa9}m\x81\xec\xd4\xcb\xb2\xe8\x19$>\xf4\xe2\xce\xa4f\xd4W\xdc\xa3\xfb\xb9\x81WzY\xac\x8bj\x19\xd8\x14\xce\xf0\x81\xa8jgR\x16`\xdb\x8c\xe4\xbd\xcct\x83m%\xaf\xea\xb22\x88Z\xa2A\x0c\xe4\x9e\xaa\xdeh\xd9Y\xfe\x02\x8bJ\x15\xce\x87\x18\xbc}\xf7\xf1\xcd\x0b\xb1\xf6R\x04\x1e\xb9\x88)\xc5>\xf3y\xd5\xa9\xe9]\xbf\xb7\xdfz\x1b\x81\x9a\xfb)\xe2\x8a\xbb\xbb\xea\x1c\x90\xb6\x9fN\xf0Fx]_\xd7bb\x95\xbaS>t\"\x93~\xc3\x9fpW\xac\x85\xe4tmv4\xf6y\xc9\xb6R\xd3\xda\xea\xae\xec\x8c]w{mTK\x9dNt\xd5\xc7A\xc5\xae\x85M\xdd0hwe\xa7%\x82\xad\xce\x96k\xa1\x8b\xdd\x0f\xd8\xd30\xd0\xe9\xd8\xc2\xe8t\xec_\xdd\xe9\xd8{\xefrL\xa63&\xdeA^\x9d\xcd\xd1\x99uU@\x14;aD\xb1\xcb36\x13\xc5\x8e(vv#\x8a\x9d0\xa2\xd8\xed\x1bQ\xec\x88b\xe72\xa2\xd8\x11\xc5N\x18Q\xec\x88bG\x14;\xa2\xd8I#\x8a\x1dQ\xec\x88bG\x14;\x97\x11\xc5\x8e(vD\xb1#\x8a\x9da9\xe8ND\xb1\x13F\x14;\xa2\xd8\x1d\x13\xc5\x8e\x8e\xccN=\x8f\x98\x8e\xcc>`p\xc3\x87=\xd3\x91\xd99\xa2HGf\xd3\x91\xd9\xc2\xe8\xc8\xec\x19|\xf2\xb3_\xc6d]\xdfy\xda\x06\x7f\x0cM+\x1f\xa8\x95\xb0-J;\xcb\xfc\xf5T\x9b\xeb\x1f\x89[\xee\"{$\xf1\xc7B\x0cq\xafk\x08\xba\x878n8\x02\x1e\xc1a\x0c\xfa\xcaXVx\x00\xd0\x0cr\xc2#\x18\xe1\x99\xeb\x1a\xcf\x05\x0f\xd45\xc8\x04\x0f\xf1\xc0\xe3+8\x9f\x03\x8e\x8bWN\xfe7\x8e\xfd\x1d\xcf\xfdV\x1co\x87?\x0c\xf3\xdb\xfb\x02\xbd\xac\xef,\x9d\xde\xcb\xf7F\xb4\x8d\x10\xd7;\xe8\x02\xd7\x16r\xb3\xbcsr\xbcQ\x0c\xefx~w80\xe9\xdcn(m-\xc6\xcf\xec\xce\xc8\xeb\xf6\xb3\xba\xfd\x15\x17\x13\x1c{\xcd}\xa2\x92{s m\x03\xe5u(\x05q^\xc7\xbf\x11\xe75\xd4*\x07#\xce+q^\xedF\x9cWa\xc4y\xdd7\xe2\xbc\x12\xe7\xd5e\xc4y%\xce\xab0\xe2\xbc\x12\xe7\x958\xaf\xc4y\x95F\x9cW\xe2\xbc\x12\xe7\x958\xaf.#\xce+q^\x89\xf3J\x9cW\xc3r\xf0\x0f\x89\xf3*\x8c8\xaf\xc4y=N\xce\xeb\x98M\xe1*\xf3\xf8\xaa\xc9y\xf4\x9a\x98s\xe02?\x1au\xe9l8]y\xb8\xcc\xc3g2\x08\xc1\x9f\xf4\x9d\x16\x8eS\xef\x15Ar\xea\x1d:\xc9N\x96'\xa9\xcb\x8e\x96\xf5$\x03p\x08\xa2S\x88\x99\x13\xdc\xac\xc2\xec\xf6df\x1eyYGH\xc6Q\xa6zee\x19y *\xac\xea\x1a/\xea\xeaBz\xc1\x87\xf6B\xa8\x11I\x0b\xa1\xbe\xdc\xe4y\xdbu\xe5=\xff^Z0\xf8\xd2\xc2g\xe1K\xc3\xbd*i\x93R\xea\xd7\xa5\xfe\xa5O\xba7\xceo\xf7z\xeb\xea\xfa\x16\xb6\xebbi\xdd\x08\x95\xa6\x8e\x84\xe7\xcf\xf4\x1f{\x1c\x1d\x97\xf0\xd1\xc7\x91\xb1\x19\x97T\xc7fW\x95\x9f\x87\x83\xf0q\x81\x19\\y\xf6D\xe4\x11\xef\x8b\x80\xe0&\xe0\x03\x13S\xd9\xc9\xd3G\x03\xb3\xe2\xba\xa9K< '\xa8O\xfcj\xb7\x96\x08\x9ab\xe3A\xd1\xa1Bp\xa0\xaa{\xea\x14[FlH-\x83\xea\x9b\xaak\x1e\x06*Ye\x0c\xe3\x81s\xf6\xc5&~\xc3\xd6\xec\xae\xa8:\xd8\xb0\xaeX\x15]\x81`8\xaa\x8f\xa4\xa4\x9b\x9b\xbd\xd8$N\xaa\x8bRx`\xb6IJ\xdb\xd5\xe2$\xe9\xf5Z,\xeb\xa1-\xab\xeb\xb51\xb9{j\xdb\xef\x1f\n\xc6\xff\xdfJ\x93\xe4\x9d\xad\xf76Lt\xf8\xf2\xa3\x12\xdd\xf1\xb9\xe0\xc8\xb3\x15\xac\xcb\xb6;$\xb1\xcbv\xfb\x99m\x165\xb9\x90\x08_\xd2\x88\xf0E\x84\xaf\xc1\x88\xf0E\x84\xaf\xc1\x88\xf0\xd5\x11\xe1\xcbnD\xf8\xd2F\x84/\"|\x11\xe1\x0b9K\"\xc2WoD\xf82\x8d\x08_D\xf8\xb2\x18\x11\xbe\xac\xd7\x10\xe1\x8b\x08_\x0e#\xc2\x17\x11\xbe\x88\xf0E\x84/\xc3r\x90o\x88\xf0%\x8c\x08_D\xf8\"\xc2\xd7\xbc2g%|\xd98]\xbeS\x90\x8d\x1d\x80\xfe\xe83\x0bZ\xd8Z\xe8]\xc6\x03\xc4\x90\xd9;\xda\xa3\xc6\xd8\x0fI\xb6=F\xddp\xe4\xdc.\x1e\xde\xe3<,9\xc4\xa4B\xedoa\xb6\x88 7O,\xc0\x14Cs\xc5\xb2\xd60+c,\xa8J\xe5e\x8d\x85yc\x01\xe6X\xb0\x89I\x0b54i\x11\xfc1\xd4\x0b\x91\x86\xe5\x90\xe1_\xa0\xb4\xbc<2\x1c\x93,\x8aK\x96\x10#\x0c\x9f,:N\xf98e8VY\x14\xaf,\"Hq\xd5\xce\xc6.\x9b\xc7/C1\xcc\x0e\x16\x04,\x0d-\xc3[\xc7\x17,+Q-\x8e\xaa\x96\x95\xac\x86\xabs6\xc2\x1a\x8a\xb26\x8f\xb4FgL+\xa33\xa6\x7f=gL#\x98\x98\xde\xd5\x8b\x97\x9c9\xf1\xf6\x7f\xd8\xfb\xd369n#Q\x14\xfe\xae_\x11\x87\xef{\xcc\xa6\xdc\xac\x16ik\xee9\x9c\xa1\x9f!\x9bM\xa9mn\x87\xdd\xb4\xef\\?\xbaET\x16\xaa*\xa7\xb3\x12\xa5Ld/\xf6\xe8\xbf\xdf\x07[\xaeX3\xb3Iy\x8c\xf8\"\xaa+\x11\x08\x04\x80@ 6h\xe2}z/Pk\xafa1LS@\x0c\xd3\x9c\xe7\x86\x13\xc34c\x98\xa6\x1eb\x98&\x87\x18\xa69\x84\x18\xa6\x19\xc34M\x10\xc34c\x98&\x87\x18\xa6\x19\xc34c\x98f\x0c\xd3\x14\x10\xc34c\x98f\x0c\xd3\x8ca\x9a&\x88a\x9a1L3\x86i\xc60\xcd\x16\xcc\x112\x17\xc349\xc40\xcd\x18\xa6\xf9\xeb\x0c\xd3\x8coQ\x87=\xf4\x1b\xdf\xa2\xbeG\xe6\xba_Q\x8eoQ\xcf\xc1\xc5\xf8\x16u|\x8b\x9a\xc3?\xf5[\xd4*\xbc\x9f\xde\xd6\x91\xfde\xba\xaf2D\xa5\xd5\xfb@\xcaa\xc0\xfe\x85\xfc\x04\xd4\xb7%\xe0[\x9cT\x94\x0d\x1e\x01-P^\"n\xd8\x14\x17\xbd\x92\xa6{\xc4\x7f\xdc\"\xb6\xae\xb8\x18\x118;a\xf9\n\xef7j\xf0\xbf\xd2\x08\xfc-*\x97i\xbe!\x8e\xa03\xf5\x99\x92\xbf\xec\xdflr\xf8c\xa8+RQ\xc9\x8eF\xe6J~j#\x17\x8dt\x823\x9a\x83\x11r\x83r\x8a5\x15a\xc1\xc7\x91\xe1\x11\x80\xe5\xe3,\x00\xf8\x01\x95\x7f\xe1\x84(\x9e\xec\xd1m\xba\xaf\xf6P\xe5)\xe5V\xee\x1bR\\\xc1\x8d\xf4f\n'\x1a\xbd5G\xa3\x1dp\xc1\x88\xd3]Z\xd9\xa8\x19s\xbf\xd0\x98\x7f@\xe5\xa7\xb2\x19\x98|\xbc\x96l\xf8$\xa3\x84\x8a\xb8\x83\x84\xe4\xd2!\xddE%d\x8dcA\xc9\x03%-\xdb\xc7\x8brx\xdc\xcf\xd2Y#\x8a&2\xd0\xe8\xfb\xf2[2\xaf\x10E\\=\xcc\xef85\x8d\x10\xde\x14\xfcm_q\xdb\xe2\x9e\xe9|\x9d\x19\x9cK\xa0$\x14\xc9\xf9\x99\xf6\xf6\xd3\xc5\xa5\xc5u\x98\xe1|Kwp(\xf0&\xbd\x15\xfb\x93\x0buv\x0e\x94\x98]\x80(\x16\xd4\x08\"\xaa\x8c\xa6\x87\xcc\xe4lS4\xd6$h\xbd\x8d\x19\xd9\x8e\xe4\xb4\x1f#\xdf\x90m\xd7\xe2\x93\x91mG&\x8d\xe5\xa7\xe6\x03|\x8ds\xfa+\xae=\xcc\xd1\x18\x7f\xf5`9\x03Di\x91\xae*jOSq\x0dW\x80#m\x06\xfc\x86.\xc0\x87\x01\x02\x8c1\xc9m\xf0\xe2\x85\x02\xe7\xa6o\xc0\xea[o\xe0\xbe\xbaO\xf35\xbe\xf5\xed~\xa8g\xe9\xc1\xa4\xa5\xea\xc0o\xd7*8c;\xea\x85Zq\xe2\xbe,\xc3\xe6\xaf\xf0\xddcq\xc9:\xa0\xb4\xb0\xd9z\x18\xf4\x9f\xcaG\xb9\xd8\xad^)\x08\x1629\x81\xe2\xd8.\xd9\xddN\x05'\xc1\x1a_\xe3\x8c\xadH~\xd3D\x94\xf2\xcb_m\x996\"l\x8b&j\xf1j)S\xcbK\xbcM\xf3\x97\x19I\xae\x8e\xeb\xbf\x9d\xe5\xeb\xde_Nw8\xb9\xba\xbc5o\xea|]\x7f\xfb\ng\xe95..o-\xde\xc97\x88\xe2\xe2\xb8\xad\xf3\x96\xb0Gw\xec\xb6 \xd2U\xd7\xd2\xec@w\xb8\xc4R0\xeay\xed\xc7i\xce\xe7\xb2\x15r\x01e\x96&\xdc\x90!\xa6@H\x08\x19\xa5x\x83\x0b\x0cx\x9fRj\x8c\x98ZW\"\xceU\x08~\xd3H\x9b\xf3\xc0$\xf9m\xd62\xa8u\xfbv|:m%\\\x08\x8b\xb3\xbe\x80\xf0\x05.\xae\xd3\x04/j\x1c1\x00\x9dC\x0c@\x8f\x01\xe8\x0d\xc4\x00\xf4\x18\x80\xde@\x0c@\xa71\x00]\x0f1\x00]A\x0c@\x8f\x01\xe81\x00\xddSK\x8a\x01\xe85\xc4\x00\xf46\xc4\x00\xf4\x18\x80\xae\x81\x18\x80\xae\xfd&\x06\xa0\xc7\x00t\x03\xc4\x00\xf4\x18\x80\x1e\x03\xd0c\x00z\x0b\xe6\x08\x06\x8e\x01\xe8\x1cb\x00\xfa?C\x00\xfa\x8a\xac\xdbg_\x9a\x0f\xfed\x0c\x12\xd7\xf9~\xfe\xff\x05\xde<\x83\x87\xff\xbf\x93\x96\xe1P\x06\xcd-\xe8\xedB\x06\xcd5\x9e)Q\x1e\xea\xa1\xc4\xd1\x0f\xbb\x93\x8e,}\xe0\x1d\xbd\x95\xdf\xeaj\xe4\xfe\x80\xe9\xe5m)\x1c|\x1bL\x93\x1d\x13\xf2\xb7%\x0f\xa6m{o;\xf1t\xadF\xf2\xe7/\x13R\xe7\xc9\xb4\x16y\xca+\xf8\xf0\x9b\x86\x8a\xe8\xcfkC\xf4\xe7\xf9\xd9\x83 \xfa\xf3\xa2?\xcf\xf8e\xf4\xe7q\x88\xfe\xbc!D\x7f^\xf4\xe7\x99 \xfa\xf3\xa2?\x8fC\xf4\xe7E\x7f^\xf4\xe7E\x7f\x9e\x80\xe8\xcf\x8b\xfe\xbc\xe8\xcf\x8b\xfe<\x13D\x7f^\xf4\xe7E\x7f^\xf4\xe7\xb5`\x0e\xdfJ\xf4\xe7q\x88\xfe\xbc\x7f\x06\x7f\x9eH\x98k\xa1\xe8\\\"\xc5\xaf*\x97,KKa\xf3n\x15\xa0\xe0_\x0cn\xa4cjm\xf4\xdd%\x1aG\x89\xe1\x02\x9f\x90,\xc3\x9c\x9c\xd7\xf2\xfa\xce\x13\xc6\x07c\x8d\x85\xa8\xc2\xaa\xfc\xc4BT\xf7\xc8\\w \xa5X\x88j\x0e.\xc6BT\xb1\x10\x15\x87\x7f\x8aBT\x0d\x9f8m\xcb\x95\xf9\x98{\xda3\x10?\x86\xf7\x1f_\x9d}\\\xbe\xfc\x8f\xe5\xa7w\x17\x1f\xceN\xcf_\x9f\x9f\xbdz\xa6\xfdkm\x8c\x96\xcf3\n\x85\xb3$\x05m\xd8\x02\xef\xd9\x7f^\xde)!\xc1\xe5\xcf\x8b\x8bS\xc1\xd3\xb4\x84\x04\x0d\xde\x01l\xd1\xf0\xe2\xe2\xf4Y\xe7\xff\x9a\x07!\xbb\xfc7bxu\xd6A\xc1\xfe\xb7\xc6\xd1\x9f\xc4\x89\xd33\x90O8\xaf\xf6]\xddE\xcf^\xd3'/.NM?\xb1qt&U\x04\xf2\xd8\xd0\x9b\xe3\xa4\x0c\x15\xc8^\x16\x04\xad\x13T\xd2\xcb[X\xa9\x7f\xb7\xf5>m\xb3\xe5z\xcc\x9c\xed\xe1\xca\xf7\x18\x99\xf1a\xc0%n\x86\xb6\xcb\xb1G\xd6\x87-4\xdd\x96\xf91\x7f\xee\xc7\xec\xd9\x1f\xe6\xfc\x8f93@|r@\xc2\xb3@\x82\xf2@Fd\x82\x84\xe6\x82X\xb3A\xec\xb1\xf9\xfe\xd1\xf9\xbe\x19!#rB\x02\xb3B,\xc3\x1d\x93\x19b@\xd5\xca\xba\xf0\xdb\x12~\xd9!\x96%\xcf\x1f\xb6\xb4\xe4\x87\xcc\x9a!\xe2\xc8\x11\xb9\x9f,\x91\xb9\xd6b@\xa6HH\xaeH\x93-\xd2\x06\x9a\xeeqI\xd1\xfe0\xd23\xe4w\xf3\xbdL\x1b\x83\xfc\xa1\xc0\xd7)\xa9J\x11\xdf\xb6\x80\xd7\xa4\x90An%\xfc\x01\x9e\x1cCJ\x1f\x96\x96\x99\xbd\xe1\xdf\xf2\xe5\xbfN\x11\x93\xd5\xa6)\xe1\x12T\x8dO%\xecK\xbb\xc05\xa1\xcd\xbdSP\xf2\x06\x95\xf4\x94\xec\xf7\xa9\xf1%\xaf\x86Tx\xfe\x1c\x9e\x1c\x1b\x8fZ6\x02v\x1b-\xd3\x92S\xa0C\x18_\xf8\xab\xc15\\\x01\x1e!6\x1eC\x17\xe0\xc3\x00\x01^\x015^\xbcP\xe0e\xf1\x12\xe0\x19qs_\xdd;\xc3\xdd\x04\x88\xee}^\xec\x03KX\xbb\x0e\xfc\xa4\x8b\x82\xf8\xc2\x9f\xe9\xbb\x7f\xce\x17\xfe\xeap\x19\x19\xe3$s\x1dU8\x8f\xb8E&\xb8\xe4}\x9b4\xa5v\xc4\x02\xf7e\x18\xa5~\x9bz\x95\x13\x04tGJl\xeaR\xd0e@'\xd5\x91RV\x13 \xe6\x9b\xab\xc2\xce\x9f\x9f\xe5A89\xc5\xea\xb1\xc1\x05\xfce\x87\x0b\x8cJxC\xb6e\xe7zaB\xc7Gplut\xb4.1{L\xd1\x1aQt\\\xd3\xc1/\xb4\xdd\xa1\xba\x87i\xb6\xc2j\xd3m\x9e.\x9e<9f\xff\xf8\xfd\xe2{\xfe\xdf\xef\x07\xad\xddk\xe5\xf2\xb6\x8e\xfbv\x84V\x158\xc3\xd7(\xa7@o\xc5\xab\xc5\xfa\x8b\xbf\xe2\x05w\xe5\xe9\xc6C\xd1\xb6l\x05\xc9\x89;\xbe,\x17!\x9e\x13.\x85\xa2\xbb\xc6 Y\xf7_\xb9\xb6e\xb1B;9c\xca\x1b\x91\xed\xcc\x90\xf8Fd\xac)\xeb\xd2,\xdc\xdbL\xc0\xa8x\xa8XS\xd6'\nj\x96\x18\xa81\x11P\xb1\xa6\xec\x8cqO!QOA1O\xb1\xa6\xec\xd4H\xa7\x11qN\xb3D9\x85\xc78\xc5\x9a\xb2Sb\x9bB\"\x9bf\x8ek\xf2\x8bj\x9a1\xa6\xc97\xa2Ic\xac\x8c5e\xbb\xe0aR\xf1\xd5\x92\x82\xe3\x97bMY\xaf\xa8\xa511K\xb1\xa6\xac\xe93g\x9cR@\x94\x92O\xc5\xd4\x90\x08\xa5XS6\xd6\x94\xf5\x89C\x8a5e9L\x89<\x8a5eu\x98\x9c\xb1Fc#\x8d\x8cgC\xac);\x84XSvDD\x91;\x9e(4\x9a( \x96(8\x92(,\x8e(\xd6\x94\x0d\x8b\x1c\x8a5ek\xb8\x8fh\xa19\xd6\\@\xa4\x90\x7f\x9c\x90OM\xd9\x99\xdf\x884:1\xac\xe5\xbdx\xc9\x88 \xd7\x8b\xe3\xa6\xde\xb9 \xab\x0ej\x17\x1a\xba\xb1e\xaf\xef-\x9e%\x03-\xc3\nr\x02\x1e\xc3\xcb\x8f\xef_\xbc:}qq\xb9|\xfb\xfe\xd5\x99\xb1\x9a\x9c\xe1\xf3\x97o\xde\x9f\xfe\xc9\xe7\xc3\x8b\xffxw\xea\xf3\xdd\x0b\xed\x87uY\xba\x00j\xdd\xb6\x86\xda\xfb\xf8\x96\xacq\xab\x08!\xb7\xdc\xd7u\xea\x18\xb7\x0dnL\xe0~\xdd\x813\x13>~8\xad\xdd\x99\xba\xb5o\xe3\xfa3\xf8\x1b.\x88\x0c \xe1\x9b\x9f\xf5\xcf\xcb\n\x1a\xe4\x96~R\x06\xbc\xe2\x7fm\xf9\x9ei\xab\x18\x1f\xf7J\xb1~x\x19\x17!\xd72^\x01\xf7\x06\xa5\xb44\xb8\x12\xf8\x19\x7f+\xad\xa8 \x8ff\xa3\xa2\xca%\x92an^\xe4\xb2\x19\x1fP\xcb\xfe8+\xb1\x08d\xa8IS1\xa5qU3\x85\xd5\x8f\xd8\x17Zj_\x8c\"W\xd4\x05\xd5\xd9|\xd2=\x0f8\xa4\xb8O\x96}Qw\xbc\xf2\xbcbG\xe3\x94\x17\xffK\x83|\xf2\x12I\x7f\x0d\xb7\x97\xb7\xf8\x8b\xb9$\xe4C\xfd\xdb\xb9'|}\x9c\xfc]D8\xfe\"K8\x1a\xde\xd2\xe5!C\x7fI\xe9\xee\xf2\xb6\xac\xdf\xd3\x95KLX\xf5d\x04\x03\xd0\xdb\xda\xea\xda\xad\x84\xa7\x8d\xeb\xf8~\xf1T\x15\xc3\xeb\xbf\xc4\xdb\xeeR~\xf2e\xaaO\xfa\xbf\xc6\xdb&1\xbe\xc8\x0b1z\xc2\xe9:p\x9f\x88\x02b\xf4D\x8c\x9e\xd0C\x8c\x9e\xe0\x10\xa3'\x86\x10\xa3'b\xf4\x84 b\xf4D\x8c\x9e\xe0\x10\xa3'b\xf4D\x8c\x9e\x88\xd1\x13\x02b\xf4D\x8c\x9e\x88\xd1\x131z\xc2\x041z\"FO\xc4\xe8\x89\x18=\xd1\x829<\xd91z\x82C\x8c\x9e\xf8g\x88\x9e\x18<\xe9\xd5\xb9D\xca\x02#\xd2I(\xffO\n?\xe1^\xa3D<_\xd7\x96Bi\xfe\xaco\x0d7\x86`\x18\xee\xe4\xfa\"\xff\xf1i\xdd\xb0w\x01\xe3\xd3\xba\x10\x9f\xd6\x8dO\xeb\xc6\xa7u\x05\xc4\xa7u;x\xd6\xbf\xe6\xa7u\xc3#f\xfe\xbeC\xe5\xce\x11)sy\xdb\x8a\x8f\xa1\xb7lg\xb7\x1f\xd8\xecG\xb9|\xe1\x97U\xfdc[\x9a\xaa\"1\xa2%F\xb4\xc4\x88\x16\x011\xa2%F\xb44\x10#Zh\x8ch\xd1C\x8chQ\x10#ZbDK\x8ch\xf1\xd4\x92bDK\x0d1\xa2\xa5\x0d1\xa2%F\xb4h F\xb4h\xbf\x89\x11-1\xa2\xc5\x001\xa2%F\xb4\xc4\x88\x96\x18\xd1\xd2\x829\xa2\x0bbD\x0b\x87\x18\xd1\xf2O\x11\xd1\x82\xca\xb6\x88\xea\xe6y\xb3\x1fk\xef\xfa-\xff\xb6\x0ea9\x06\x9c\x8b4q\xbe\xc4v\xf8V\xee\xe2\xc5\xc3\x16\xbe\x89\xc1-f\xbf\x9er\xeb\xadP\x89O(\xce\xd7\xb8\xd8\xa79\xad}|<\xde\xa6<\xc9\x10\xc5%\xb5z\xf9\xde\xf0Ox\xfe\xb7\xaa!\xc0\x07,\x9avK/\xf4]~\xad\xb6\xdf\xa8\xd1} \xdf\x1f\x0dw\xb1\xf1q,\xd3\xb5\xc9[ep<\xd9\xddNlE\x98\xddQV[\x8b\xc3\xd2r@\x05]\x96\x98.w\x18\xad\xb1\xc67\x08.\xca\xc1I=\x03\x1e,`\xbe\x0bP\xabCQ\x81>\xfe\xaa\x0bfV\x81\x0f\xbb\xc0\xcd2\x00\x9a\xd2\x0c\xb3\xfbFAKL\x7f\xe4\x9c\x1bN\xb7\xf8\x88/\xda\xf3~\xa1\x17\xbeJ\xe6]\"\xf7;\x7f\xd2@l\xe1\xac\x18\xee\n\x95i\"\xa3\xf0\xd2|C\x1c3\xe1x\x88\xcaM\x17\x98\x99\xd9\x06\xafy\x07s\xe4\xcf\x10\xd0\xc1\xf0 \x9c\x82\xb9\xbb\xf4\xb1:\n8e\xa2-/\xab\x12\x12t\xa0U!\x15\xef\xa4\xfesQe\xb8\x14Q?\xf5\x034\xb6\xa1\xd6\xf3iw\xb1\xc9\x99Hv(\xcd\x8fe`\x92z\xc5\xa7\xf9E\xbc\x0eS\xbf!c6\xb7C\xfd\xec\x8b\xa0W\x9a\xfa\xecs\xa2\\?\x0fK()\x0f\xa3*P^\nef\x8f\x92]\x9a\x1b\x1e\xa8\x07\xe0\xd4i%\xb7\x02\x8f)\x15\xd1\xa8\x93P\xf8\xc99\x9a\xee-\xef\x9e\x05u\xb3F\x14?f\xf8\x0c_\xf2\xeb\x82\xf9\\S0\xe3\x8e\xb6\x0bq\xf0\x1d \xf8\x08s\x01^\xe7\xa0\x02\xaf\x91\x82\xf7h\xc1}>\xd6\x9fy\x9d\x93\n|\xd6\x91\x027\xcb!\x84\xed\xe0\xcfz\xcf\xf3\xb4\xf7\xb1\xfe\\U\xc0\x97\xac(\xee\xb5\xfc\x12\x1a\x014\x84\xb1\xee\x84\xb4\x12R\x93\x89;C\x1b\xf6\xd3\x17\"\x8f\xfb\xc6\x10%E\xf9\x85:\xec\xf3\xa3yz\xedp\x00R\xd1CE\x9b\xbf\x1d\n|-\xd8e\xc0\xc6\xc3\xdf\xbf\xf8\x18\xea\x13\xf3\x0b\xf5\x87\x0e\x87/\xd4\x13\xdf\x1f2\x00\xe2\x0bu\x89\xaf\xd35\xce\x13\xfc\x85\xba\xab\xd7_\xa3\xf6X\xf4Q&\xa8I\x89\x8b%Z\xaf\x0b\\Z\xc4\xf5<\xf4u\x949!\xf0\xeaB|\xdcM[?\xb1G6\x80\xe0\xb2\xbexK\xa1\"N)\xads\x1aQto\xb7\x00z\xeb\xe4\x8c\xfd\x8dZ\xe7\x0b\xb5^\xec\xf5`0\x04i\xcc\x97\xb72xM\x19\xda\xb8&)<\x19B\x8d\xfcwi\xa0\xf8\x91\xebw\xbf}b\xf1\xcb\x01\xbc{\x7fy\xf6L\x84\xe3e\x19c\x1a\xf0\"\x8a\xa8\x90o+/\x00\xfe\x82\x1f\x16\x18\xfe\xb3*)\xa0m\x81\xb1}\xb82\xfa\x8a\x07\x84\x0bs\xaf\xb5\x7f\x1e\xa6\xb9\xc7(\x97\xa3\x12\xa4\xbf8\x1c~D\xe5\x0e\xd6\x04\x8b\xd0\x97\xe6\x05N\\\xda\x0e\xe8V}\xc2\xde\x0fb\x87\x19Y\xfb\x8ai\xfa\x1dc:O\x90\xd9t\x1f:\x95dh\xa3\xe1\x1b0\x9d\x0eJ\xac\xdc\xdb\x9a\xb7w\x00\xf3.|\xa7N\xe9\xa6W\xc0\xba\x12W!\xbc\xbc&\x14/\xdd\x83\x10\xe0I\x05\x04P\xc2\x80\xd3`\x10K]\x08 \x00\x02\x89\x00\x85\xde\xebKoQ\xd4\x06S\xc1b=<\x86\x8b\xf3\x1f\xde\x9d\xbdZ\xbe\xbd\xf8ay\xf9\x1f\x1f\xce\x96\x9f\xde\xfd\xe9\xdd\xfb\xbf\xbc\x9b\x80\xe1\xc3\xc7\xb3?\xbf\xbf<\x9b\x86\xe1\xf4\xfd\xdb\xb7\xe7\x97\x93p\xbc\xff\xf0\xfe\xe2\xc5\x1bO\x14u\xa1\xe4i\xfc\xf0\x97\xf7]\xb8H\xb79^\xbf-\xb7\x97\xd2\xb9#bz\x99\xa0*\xf9O\xde\x98Z\xf1\x06\x1d\x8b\x8bUZ\xf7\xc08\xa7\xcf\xe0\xcf\x84Z\xed%=0\xcf\xcb3\xf8\xc0\x15\x1e\x94\xf9\xa1sY5\xba0b\xe3\x84\xdcT\x05\x14\xa4\xca-\xc6\x88.\x84]\x9b\x05\xd8\xb2X\xf4\xe06\x91t!P\xd6\xc1\x08y\x07\xde7\xfb\x06FL\x1f\xf8\xaad}\x082\xbbta\x04\xf7`$\x07\x19x\x1ah\xba0f\xdd)\x08\xdf\x12\nB'\x1c\xc6O:\x8c\x9d\xf8@\xa3O\x17\xbcL@]\xa0\xe9\x1e\x97\x14\xed\x1dF\xfb\x06F0\xc4\xd7\x9e\xda\x85\xda\xaa\xe1\xbe{va\x02\x85\xdeS\xd5\x10\x97\xe6k|\x1bFZ\xd8\xba\x0f\x97\xb7\xecpF\xec\x92\x1cF\xd6}rl\x8c\n\xc2N\xf5&\xe0\x83i\x1f\x87\x023\x8d\xf9Xf\x92\xecS\x9e\x05\xe3\x85L|\xce\x15na^k\x8cfl,~zHKoq}\xca5\xfb\x95\xcf\x04\x04\xca\xebP9\x1d5\xfb\x1eD\xcd>j\xf6n\x88\x9a\xbd\xebk\x88\x9a}\xd8\x19( j\xf6F\x08\xdf\x12\nB'\x1c\xc6O:\x8c\x9d\xf8\xa8\xd9+\x88\x9a\xbd\x80py\x1b5\xfb!|i\xcd\x9e\x8b\xc5\xe55\xa1i\xbe]\x1e\xc8\x8d\x9f\x0c\x0f\x9c\x880Q\xd8\xac\xd9_\x07=A\xa2g$%\xbe\"'t}\xbeR\x0e\"\xb6H\xcf\xa4{\xa8q\xd6)\x87\x11\xf7?;\x91\xd5\x13#\xd5j\xa07\x84\xe1\xdadi\xc2\xd6\x8f{q\xb2e\xedX\x94\x19\xd3T\x97\xe2\x15\xba%\xa2\x14%W_\xdb\xaf\xd5\x1a\xe2\xd2#\nU@\x00-\x10H\x0fH\xd9\x89\xd7\x81jW M0\x82.p\x04)\xeba\x04a0\x928\xf0 s\xd6Ch\xf0\xb3\x1eF\x8e\x15&\x8c\x17\xfc\xc2\xa7\xf5\x10(\xd1\xfa\xa0$\x9c3\xd4Z\x0f\xce\x00l=|M\xa2Cet\x1f\xfc\x02\xbb\x83\xd1v\x03\xc1\x03\xc2\xbd\xf5\xe0\x13\x04\x1e\x8c\xb4\x174\x1e\x1c\x1a\xae\x87i\x01\xe3zp\x87\x91\xeba\xf4\xc2\x0c3\xe1(\x18\xdd]\xa8\x92\xd4\x06{\xd0\xba\x1ef \xd4W\x87\xea\x82g\xd8\xbb\x1e\xbe\x92,\x1fc \x80iL\x86\xf0\xbbT\x17&X\x8a\x14L\xe06L\xe48\x8c\xb5 )\x18s\xa3\xee\xc3\xf8\x1d\xa9`\xec\xc2\x81\xe9\x8b\x07\xa6.\xa0I\x16'\x05#,O\n\xfc\x93\x0d\xf40\x81\x7f\x13\xf8\x16\x9e\xae\xa0\x07\x8f$\x06=|\x8da{\xa7\x10\xe8\xe1k\x90\xec\x0e\xb35\x83o\xeeE0b[\xae\x86\x1e\xc228\xf4\xf05\xd8\xef\x9b\x03\xa2\x87\xafA\xb1;\x8bD\x0f_\x83\xd6\x80<\x14=|\x0d\xa2=3Y\xf4\xf05\x08\x0e\xcb\x85\xd1\x83\x7f\x86\x8c\x1e\xbe\xfc\xb8\xa7\xdc\xb6\x9d)9A\xd8\x02\xd2w\xf4 \x94\x8b\x10\x96\x8f\xd4\x88\xc7j\xc2\xff@w\xd0\xa0\xf0\x02\x05S\x94\xf4p\xf7\x97\x82x\xf9\xf4\x81\x91\xe2A@\xbc|\x8e^\xd7\n\xc6oE\x05c\x17\x0eL_<0u\x01}\xed\xcbg\xed*\x0f^>\x82s\xf6\xb45=8\x93\xd9\xf40i\xa3L\xdb&J\x92.7\x19\xda\x8eA0\xc3B\x0b\x0b!\xed\xc2cx\xf9\xe6\xfd\xe9\x9f\x96\xe7\xaf\x96\xaf\xdf\xbc\xf8!0|\xb2\x0f}l/^^\x9c\xbd\xf3\x8f\n\xedB\x1fY`\x88i\x17\xfa\xc8\xde\x9d\xfbF\x9av\xa1\x8e;\x9d\x8fm\xe3o\xe1\x02\xc4\xe6^\xbf\xce\xd0\xb6~\xe4K\xbd^\xf12K\xc8\xd5\xf9+K\xfa\xab\x0bj1\x00\xa9\x08\x07q5\x18\xc2\xe8p\xa5.L\xde'\x93\xc5q@P\xc6\x10f#\x7f\x9c\xd3A@p\xfcS\x17f\x1b\xc3\xa8)\x98r\xef\x12p\xca\xaf;\x17\xe9V\x84l3\x1dM\x95\x82\xe5!U*c|\x04\xea4\x07$\xf1\xfb_\xbf\xa6\x8dI\xf4\xd6\xcd\x83\xaf\xc3kx~~\xd8mR\\!oP)\xaf\x85T\xd4)@2\xb9>\xcc\x0b\xdaX\xe4\xfc\xd8\xd1\x08\x89\x12{\xdf\xf7F\x1c\xfcc\x8e\xfbf,\xfem\xc6\xaaA#T\xa0\x11\\\x100\x86\x17\x02F\x0b\xf2I\x12d\x82\xf48T\xab\xe5\x15\xbe\x1bK\xf0\x08\xe6\xc2$\x063\xc0\xeb\xa7\xdf\x7f\xff\xe4\x7f\x8fi:\x91\xd10\x8d\xd9\xc0\x9f\xa7J\x0eO\xbf\xff\x97\xab'\xff\x88\xe4OQ\xc9>T\xab,M\xfe\x84\xef:F\xbe+|\xd7{\x18u\x04\xea\xaa\xc4\xe2\x99\x96\x96\xdd\xef\xcf\xb5l\nD\x18\x1a\x80\xdb\x85I\xf33\xe5b_\x9b\x8b\x0fEJ\x8a\x94\x8e\xde\xd2_\x94vEu\x08\xb1#%\xcfX\x993R\xa4O`\xe6\xe8-:R\x98\x8fd(L`*L\x13\xe3\x13\x98\x0bS\x18\x0cS\x05\xf8\xd7#|\xbc\xe8\xbe7\xc1=\xa3\xd8\x9e\"\xb4'\xcc\xc98\xa1\x07s\x88\xeb/N\xf5\xb8\xf4\x14\x05#\xc9\x0d#\x95]\xcfH\xbe\xf4\xf7\x8d\x05R\x15F\xcd\xea\xeeo(\xa7i\x8e\x97a\xf7\xa4\xb0\xfbQ\xc0\xbd(X\xce\x87K\xf7\xe0\xc32p\x06\x04\x8c\x10\x83\xc1Gc0\xb3`\x14\xc3`\xecA8\x8aq0\x8ey0\xfe\xd8\xfb\xb2d\x8e9\xe4\xee\xe1x\x9b\xe5`\x1b'iG\xf1;L\xae \x98p\x80}\x01\x1a\xc7\x1dV\x81\x84\x05\x92\x14b&\x1fI\x89\xaf <\xd4\xba\xfa\x86\x1d\xa8\xa7<\x11\xf0\x05\xcf\x03\x9c\x9a\xbf(\xcb\x92\xb62j\x11\xa5x\x7f\xf0\xcb]\xa4\x04\xf6i\x99a\xb4\x06$\xb2\x14Ad)\xeaL\xaa\xad`a=\xe7\x9d\x92\xde-\xd5]\x1a\x87\xd7t\xfa,'G,\x8d\xe8\xc7\x15]\xe0\x13\x1f\xe3\x8e\x84q\xb2\x0d\xbcX\x07^\xe1\x08^\x0c\x04\xffc#(\n\xc5k\xa4\xe0=Z\x00\xef\x18\x12\xbf\xf9T\xe0\xb3\x80\x14\xb8Y\x0e!l\x07\x7f\xd6\x07\xc6oxEj\xf8\xc4d\xf8\xa8\xd5Ne\xdas)\xf8.\x84\xa0(\x89\x80\xc9\xf0\x8b|\x18\x1b\xe302\x9aad\xdcBx\x84\xc2\xa4X\x04\x7f\x15r\xae\xf8\x82\xa0H\x82\xe0\x98\x81\x80U\x13\xb0\x81=U\x99\x11\x9d\xfb\xa90\xde\xfe\xfa\x11\x148\x86\x1f\xa2;\xf9\xfa\xd5\xb9\x97\xdc\x03\x93\xdee\xecG\x91\x87W\xdc\xe0\xe96 t\xf9\xbfM\x9en;\xb9\xdd\xc7\x07?\xcaw\x03\xd5c\x8d\xea\x1dA>\xafl\xc64;\xec\xffT\xb8\xb8;\xe9=\x80\xf8\xf1\xc3\xa9|g\xb8!F\xc9\x89V\xfb\xee\x0b\x869T9\xbe=\xe0\x84\xf1\x01\x17\x05)j\x02Zmfz\xc7\x90\xe3\x1f.g\xcb\x02N\xc8Z\xb3\xfe\xed:\x83M\xf7\x93%\xf7\x82hXc\x8a\xd2L#\x85l\xc7\xad\xf1\x98u\x1c\xaf\xaec\x955_V\x85Q\xb1\xf2\x10\x06~{ \xe0\x05|\xfa\xf8\xe6\xa4\xc0%\xa9\x8aD>L\xcd7Q\x95\xa7?W8\xbb\x03\xb6\xb3h\xbaIq\xebUc\xb21\"\x14\x8f5\xa8G\x97-\xaf\x1b\x17\x84\x92\x84d\xb0\xaa6\x1b\\?\xf2\xba\x10oP\x88\xb1\xc1\xbe*\xeb\x9d\x0e\xc8\xac\xa9d\x18\x95\xd4\xdc\x17\xc91<8y\x00\xc9\x0e\x15(\xa1\xb8X\xf0\xf7\xa7\xf9\x13\xdb%\xde\xeeq^\x8b\xb3O\x1f\xdf<,\xfb/\xa2v\x81\x13U\x17g2\xf7J5\xaf\x7fs\xfe\xca\xae8'\x8fP \xa9\xe1\xb1i\x06\x9f\x19)\xc6wh??\x12#\xe1h\xcb\x1d\xa9\xb25\xac\x9886\xe2C\x90\xa0\x9c\xe4i\x822\xbe\x87\xcc=\x1f\xe1\xc5vq\xccX\xcb\xcb0\xbeQ\xca\x90|\xd2\xdd\xdc1\x97\xa0\x18>\xef(=|>\x16\xff-?\x1f\x03) '\xf2\xd7c\xbe\x1a\x13\x94\x03\xe1\xbb\x93q\xc4\x8c\x10S\xa8\x0e\xb2\xf8\xa8\xa5_\\\\\xf3\xa7\xe4\x11\x85=:\x94biq\xca)\xa9+\x90r\xb3`*\x9eNAf\xeb\xdd\x86d\x19\xb9)\x9fY\xe6\xf6[8\xdf4#b\xcbB\xbd\xe0_\x0f\x9a+\neY\xed\xf1\xdaR\xe9\xf4[v6\xfdxy\xf9\x01~8\xbbT\x8f\xd5|\xfa\xf8F\xec1\xfe\\\xbdE\x9f\x18\xbc\x07}yw\xc0?\xfd\xf5'c\x03\x90O\xca\xa7\xb9\\o\xf2\x18\xe13t(\xc8\xbaJ0\xa0\\\x1ca\xe6\xb0\xb6o\xe1ES\xfe\xa3\xe4\xaf\xf3 \xc63\xbcf\xecNP\xc2d\x0b!W\xd5\x01d\x86\"\xacPi\x89:$\xb6\xf7k@,BN\xe3\x0e]\xf3%\xb8o\xed\xa1\xb5\xd8DH\x0d\x89\xfd\xfb\x9a\xa4k@\xb9\xcd\xef\"\x08\xe4\xe2\xa3\xc0\x1bR\xe0c\x85\x80\xe1E4]\xa5YJ\xef \xc7x\xcd\x97\xd1\x8ag\xfc\xf2\xa5f\x8b\x9f$9\x13\xb3\xf9\x16\xf3F|\xcf.\xe0\xe8S\x89U\x89$\xc6%\xb6<\x99\xcc\x12\xeb\x13\xe5hk\x1b\xfd\xaa\xc0\xe8\x8a\xc9 \x89x\xf1\xc8\xbc\xa2\xde\x11\x8a\x9f\x01eg\xc8\xa6\xca\x13\xb1\xc3\xd88\xa4\xecJ\xaa\xa2\xc09\xcd\xeeZFq\x8b\xb8\xe4\x8f'm6i\x92\xa2\xccq\x96\xad\xaa\x0d\x14\x98\x9dD\xf8\x98W\x99I\xa9\xea\xb4*\xf1Z(yj_\x1aQ\xad\xf06\xcds6\xd8\x9b\x94\xee,\x87\xcb\xf0\xb5r\x9b4\xbe\xe0;\xb5\x04BwBP\xe4})\x05GB \x05\xbc?\xd0;\xb9\xb5\x1f\x99\x0fAn\xad\\Y\x84\x12\x1f4\xf7\x1e\xa4\xfbC\x86\xf7\xf5\x9b\xf4\xe5\x01'\xe9&M\xa0\xc4{\x94\xd341D\x90\xf2\xbd:A\x05\xf2\xb8\x07\xf9jIo\x998Za@\xe22\xd0Rp\x06z\x8c<\xdc\xd1\x8a\\\x9b\xd7\xb4d\x81\xdc\n\xda\xd7\xd8<(\xfb\xfc\"\xbf\xfb\xdc\\\x84P\x0e\xa8X\xa5\xb4`\x9b\xd8L\xa1\x16\x95:#PF\xe4\xd2\x03\xa4\x9fZ&\x9d\xf9A#(\\u\xd5\xc2\x9e\xfaWku\x86\xa5\xf9Am\x9c,]q\xb2\xe59RBY\x1d\x0e\xa4\xe0'\xf8\x01%W'U\xce\xfe\xc3\xcem\xb1.\xf4;H\x1e\xf4f\xc5\x86l\xa0\xa2B\xb0)\xf1P2\xc1\x8a\xd6\xebT\xc8\n\xd8\xe2\x1c\x17\x88r\xe2\xd9=\xab.\x12\xa5\xc3\xc7\xe8\x11S\xa8\xef\xef\xec\x16\xb1\xc5\x0fO\x9e\xc1\x07F?\x93\x0br(\xa8]\x1a\xfc\xf4\xb7\xbf\xb5\x1c\x93\xaf \x81\x0d!\xf0\x1c\x16\x8b\xc5\xbf\x1a?c\xc4\xa0\xfc\xce\xfc\x01\xca\xef\x16\x8c\x8c\xd7\x05\xd9\x1fm\x08yd\xfet\xb10\x9f\x7f\xe9\x06\x8e\x18\xaaO| \x97\xe4\xe87\x0c\xd7#\xf8\xbbE\x86\xdb\xf0\xfdb\xe7\xddS\x07\xef\xfe\x88\xae\xd1l\xcc\x83\xe7\\7d\xbd\xcc\xc0\xa1\xb4+Y\xac.\x1a\xb0\xbak\xd4.uz\x88G8\xf5Z\xaf4\x921\xb5D\xdf\xd5C\x8dJu\xc2\xee\xef\x0b\xfe\x03SW\x1f\x02j\x9dv\xec$\x94\xd5\x04\xb5\x08\xc5\n\xd1wV\x1f-yv\xa7\xee\x95\x03cA\xad&\x03\xdaP\xac3\x11\n\xe0v\x8c\x87'\x0f\xf5]\xc93Q\x91\xcco\xbb\x80\xe5\x8a~\xb0!d\xb1B\x05\x1f\xec\xed\xc9\xdd\xe2o\x0f\x04\x17\xf9\xddK\x8b\xcf|\x15\xe5\xa4>`8\xd8q\xa8\xfd\xe4\x8f\x17\xef\xdf\xe9\x7fy\xfe\xfc\xf9s\xf3\x1a`\xed\x1a\x9b\x8b\xd0# \x13\x07R \x12\xf7\xba\xaa\xc4\xca\xbc\xba\xad2d(m=D\xc3\x9a\xacq\xa3\xb6\x1c\x03\xde\xaf\xf0z\xdd(0\xc7B\x1d\xd7\xa1C\x06\xebMK\xa5\xd8\xf0\x8b\xec\xe7\x7fg\xac\xfb,\x8d \x1d\xfb\xb5\x9a\x1c\xfd\x06\x91\xe2\xe7\x99\xe5\x02\x82\x92+&\x83\x9a\x0b\xf1&\xcd\xb0\xf9\xdcP2\xeb\x03.J\x92[\xb7\xad\xb4\xc4\xf1\xb7c\x97|\x86\x9f\xc3\x133\xe6\xba\x01\x0fW\x90\xdf?\x0d?\xc1\x00\xacT=\xe0\xbc|\xf0\x0c\x1e\xe8vm\x97\x0d\x0b1\xca\x07\xc76|||\xef\xd0\x9e\xe1\xfc71\x84?X\x1b\xb0\xf1\xf5\xbe\x0f\x1d\xe4\xf9F^\xb8\xbakM\xac\x86\xb4\x84\x1b\x9ce\x8f\xafrr\x93s9\xb3C% H\xaa\x92\x92}\xe0\xe6\xea.\xf9c\xa1\xc0\xf7\xf6\x81z\xc1\xb8&\x87-`\xc3\xe5\n\x89%\xad\xef\xec3\xdf\x8cj\x9d\xefH\xb6\x96\xd5f9\xe5b+\xa7y\xbd?@X\x00\xf5\xa8\xc4\x96\xd1\xf7\xc3IX\xd4\x87\xf3\x11\x93k\x8a\x85\x03\xd3\x90\xb2\x98\xfe\xf4\xd7\x9f\x1eY6\xd2\x1ck\xae\xdb\xa1}\xd9qV1\x94O\x16O\x9f<-\x1fX\x96\x90\xf8/E\xdb\x96\xd3\xe01\\\xe0\xe2:M\x18\xf7\x1e\x9e$\xa4\xdc\x93\xf2d\x85J|B\xeb\x88\xbd\x93\xeb'+L\xd1\x93\x13\xee\x14+O\xfe.\x82|~y(\xd0l\x9bl\xcc\xb2\xda\xefQq\xf7\x0c~\xc0\xc2\xdb\xf4\xf2N\xbcZ\x0d?W\xb8Hq)\xfdj\x8c\xd1\xdb\xf4\x1a\xe72^HI-r\xc0b\xcc\xe7\xeb!\x0e\xf9\x8d\xf2;\xb5\x06\xf1\xf0\xe9w\xdf=4;\xaf\xa0\xac\x92\x04\x97\xe5\xa6\xca\xea\xd6m99\x93\xdb\xca\x1c(dD\x06NW\x8e9:\xc5i\xbfpX/\xbc\x02\x7f\xac\x94\x83\x93zp\x07\xf8P\xaf\xc0\x1e\x9f\x80\x9e/\xf1\xb8\xbfW\xc0\x8e5P\xc7P\xf2|\xca\x12\xb9\xdf\xf9s\xd6\xa5\x0f\xad@\xef\xa4 \xbc\xe8\x02\xbf\xfa\xf1^\xf3\x0e\xad\xb9w\x96WwV\x7f\x9f\xbbK\x1fK\x9e\x00\xbf*\xed\xd0\xad\xban\x1b\xaaw=v\x9f\xca\xeb\xfdJ\xea\xb6\x8e\x03k\xacO\xab\xa6\xee\xae\x9b\xee1\xa5_,\xf2\xd5^\xc9<\xa8\x1bW\x88\x91g\x1d\xf2\x19w\xb4;\x1a\xd3k\x80\xe0#\xcc\x05x\x9d\x83\n\xbcF\n\xde\xa3\x05\xf7\xf9X\x7f\xe6uN*\xf0YG\n\xdc,\x87\x10\xb6\x83?\xeb=\xcf\xd3\xde\xc7\xf6\x00X\xff\x8a\xd8^#\xf2\x1aIx=k\x8f\xca\xd5s\x91\xe7]\xf8x\xae\x0e\xfb\xfcp\x96\x80\xb6\x96t\x0e+\xde<\xd7\x18|K/\xcf\xd5\x9f\xbbp\xf2\\=\x05\x94=\x9e\xabK\xcf\xa2\xc5su\x17Vr\xd8\xbf\xb8\xf0<\xf4u\x949g\xad\xdf\x90\xfa\xbdL\xa6\xdc\xdb-\x80\xde:93KB\x81\xf3\x80q2\x18\x824\xe6\xcb[\x19\x10\xa6\x8cW\\\x93\x14\xde\x01\xa1F\xfe\xbb`\xfcB\x18!~\xfb\xc4\xfa\xec\xf2;\xfe\xa42\x0fq\xcb2\xc64\xd8\xe1\x02\xf3\x00\x1f.\xc3\x16\x00\x7f\xc1\x0f\x0b\x0c\xffY\x95\x14\xd0\xb6\xc0\xd8>\\\x19\xd1D\n\xb6N\xb8\x89\xd1\xda?\x0f}\xdcc\x94\xcbQ \xd2_\x1c\x0e?\xa2r\x07k\x82E8\x89\x8c\xb6f\xa8K\xdb\x01Mo\x0d\x91\x15\xae\xdc\x80WL\xd3\xef\x18\xa8e\x9e\x1bW\xca\x91t\x9b\xb7\x83\xbe\xcd\xe1K\xa6\xd3\xc1\xfe\x00\xdf\x0ck\xde\xfd\xc2\xdf\x8c\x0b\xdf\xa9S\xba\xe9\x15\xb0V\xaf+.\xf9\x03\xf9\xeeA\x08\xf0\xa4\x02\x02(\x01\xf5H\xbfA,u!\x80\x00\x08$\x02\x14z\xaf/\xbdEQ\x1b\xfc\xf2\x8c\x14\xc4G\xfa%\xc4G\xfa[\x10\x1f\xe9\xf7j\x13TE?\xec\xda,\xc0\x96\x19\xa2\x07\xb7\x89\xa4\x0b\x81\xb2\x0eF\xc8;\xf0\xbe\xd970b\xfa\xc0W%\xebC\x90\xd9\xa5\x0b#\xb8\x07#9\xc8\xc0\xd3@\xd3\x851\xebNA\xf8\x96P\x10:\xe10~\xd2a\xec\xc4\x07\x1a}\xba\xe0e\x02\xea\x82w\x8a\xa6\x82\x11\x0c\xf1\xb5\xa7v!8\x83U\xc1\x04\n\xbd\xa7*>\xd2\x1f\xc6\xb11*\xc8?\xf4#\xfd\\\xb3_\xf9L@\xa0\xbc\x0e\x95\xd3Q\xb3\xefA\xd4\xec\xa3f\xef\x86\xa8\xd9\xbb\xbe\x86\xa8\xd9\x87\x9d\x81\x02\xa2fo\x84\xf0-\xa1 t\xc2a\xfc\xa4\xc3\xd8\x89\x8f\x9a\xbd\x82\xa8\xd9\x0b\x08\x97\xb7Q\xb3\x1f\xc2\x97\xd6\xec\x7f\x85%#\x9b5\xfb\xeb\xa0'H\xf4\x8c\xa4\xc4W\xe4\x84\xae\xcfW\xcaA\xc4\x16\xe9\xd4\xf2\x95\xf5\xc4H\xb5\x1a\xe8\x0da\xb86Y\x9a\xf8\x95\xb0d\xcb\xda\xb1(ya\xcb\xa5(l\xb9D\xbc\xec\xe6\xd7\xf6k\xb5\x86\xb8\xf4\x88B\x15\x10@\x0b\x04\xd2\x03Rv\xe2u\xa0\xda\x15H\x13\x8c\xa0\x0b\x1cA\xcaz\x18A\x18\x8c$\x0e|\xc2\x9c\xf5\x10\x1a\xfc\xac\x87\x91c\x85 \xe3\x05\xbf\xf0i=\x04J\xb4>( \xe7\x0c\xb5\xd6\x833\x00[\x0f_\x93\xe8P\x19\xdd\x07\xbf\xc0\xee`\xb4\xdd@\xf0\x80po=\xf8\x04\x81\x07#\xed\x05\x8d\x07\x87\x86\xebaZ\xc0\xb8\x1e\xdca\xe4z\x18\xbd0\xc3L8\nFw\x17\xaa$\xb5\xc1\x1e\xb4\xae\x87\x19\x08\xf5\xd5\xa1\xba\xe0\x19\xf6\xae\x87\xaf$\xcb\xc7\x18\x08`\x1a\x93!\xfc.\xd5\x85 \x96\"\x05\x13\xb8\x0d\x139\x0ec-H\n\xc6\xdc\xa8\xfb0~G*\x18\xbbp`\xfa\xe2\x81\xa9\x0bh\x92\xc5I\xc1\x08\xcb\x93\x02\xffd\x03=L\xe0\xdf\x04\xbe\x85\xa7+\xe8\xc1#\x89A\x0f_c\xd8\xde)\x04z\xf8\x1a$\xbb\xc3l\xcd\xe0\x9b{\x11\x8c\xd8\x96\xab\xa1\x87\xb0\x0c\x0e=|\x0d\xf6\xfb\xe6\x80\xe8\xe1kP\xec\xce\"\xd1\xc3\xd7\xa05 \x0fE\x0f_\x83h\xcfL\x16=|\x0d\x82\xc3ra\xf4\xe0\x9f!\xa3\x87/?\xee)\xb7mgJN\x10\xb6\x80\xf4\x1d=\xd8\x9e\xeb\xd1\xc3H\x8dx\xac&\xfc\x0ft\x07\x0d\n/P0EI\x0fw\x7f)\x88\x97O\x1f\x18)\x1e\x04\xc4\xcb\xe7\xe8u\xad`\xfcVT0v\xe1\xc0\xf4\xc5\x03S\x17\xd0\xd7\xbe|\xfa<\xf5\xa4\x07\xc19\xdfwU\xdb\xe0Lf\xd3\xc3\xa4\x8d2m\x9b\x04=,\xa5\x87\xc9\x0b-,\x84\xb4\x0bc\x9f\xa6\xd2\xc3\xc8\x07\xab\xf40\xf2\x19+=\x84?n\xa5\x87IO^\xe9a\xfc-\\\xc0\\\xcfc\xe9!\xe8\xd1,=\x8c\x0eW\xea\xc2\xe4}2Y\x1c\x07\x04e\x0ca6\xf2\xc79\x1d\x04\x04\xc7?ua\xb61\x8c\x9a\x82)\xf7.\x01\xbe\xcf\x84\x8d@\x9d\xe6\x80\xac\x8f\x87\xe9a\xca\x98<\x1e\x1a\x0b\xc2\xa7\x7f\x94\xcc\xf9\xfc\x98\x1eL\x8f\x92\x99\xa0\x11\x12%\xf6\xbe\xef\x8d8\xf8\xc7\x1c\xf7a\xcf\xca+\x18\xa7\x06\x8dP\x81FpA\xc0\x18^\x08\x18-\xc8'I\x90 \xd2#\xf8Yz\x05\xa3\x99\x0b\x93\x18\x0cc\x9f\xabW0\x89\xd10\x8d\xd90\xfe\x19{\x05_\x97\xfc)*\xd9=-3\x8c\xd6\x80D\x96\"\x88,E\x9dI\xb5\x15,\xac\xe7\xbcS\xd2\xbb\xa5\xbaK\xe3\xf0\x9aN\x9f\xe5\xe4\x88\xa5\x11\xfd\xb8\xa2\x0b|\xe2c\xdc\x910N\xb6\x81\x17\xeb\xc0+\x1c\xc1\x8b\x81\xe0\x7fl\x04E\xa1x\x8d\x14\xbcG\x0b\xe0\x1dC\xe27\x9f\n|\x16\x90\x027\xcb!\x84\xed\xe0\xcf\xfa\xc0\xf8\x0d\xafH\x0d\x9f\x98\x0c\x1f\xb5\xda\xa9L{.\x05\xdf\x85\x10\x14%\x110\x19~\x91\x0fcc\x1cFF3\x8c\x8c[\x08\x8fP\x98\x14\x8b\xe0\xafB\xce\x15_\x10\x14I\x10\x1c3\x10\xb0j\x026\xb0\xa7*3\xa2s?\x15\xc6\xdb_?\x82\x02\xc7\xf0Ct'_\xbf:\xf7\x92{`\xd2\xbb\x8c\xfd(\xf2\xf0\x8a\x1b<\xdd\x06\x84.\xff\xb7\xc9\xd3m'\xb7\xff\xfc\xe0G\xf9r \xe3\xa0x!V\xfe?\x9bY6g\x9a=\xf6\x7f*\\\xdc\x9d\x0c\x1eC\xfc\xf8\xe1T\xbe\xdf\xdb\x10\xa4dE\x0bC\xf7\x15\xc3\x1c\xaa\x1c\xdf\x1ep\xc2x\x81\x8b\x82\x145 \xad63\xbde\xc8\xf1\x0f\x97\xb4e\x11'd\xad\xd9\x03v\xbd\xc1\xa6\xff\xc9\xb2{A4\xac1Ei\xa6\x91D\xb6#\xd7x\xd4:\x8eX\xd7\xd1\xca\x9a/\xab\xc2\xa8\\y\x08\x04\xbf\xfd\x04\xf0\x02>}|sR\xe0\x92TE\"\x1f|\xe6\x1b\xa9\xca\xd3\x9f+\x9c\xdd\x01\xdb]4\xdd\xa4\xb8\xf5Z0\xd9\x18\x11\x8a\x07\x1b\xd4c\xc6\x96W\x83\x0bBIB2XU\x9b\x0d\xae\x1fO]\x88w(\xc4\xd8`_\x95\xf5n\x07d\xd6V2\x8cJj\xee\x8b\xe4\x18\x1e\x9c<\x80d\x87\n\x94P\\,\xf8\xbb\xce\xfc\xe9\xea\x12o\xf78\xafE\xda\xa7\x8fo\x1e\x96p@\x86\xf7\x96\x19p\xa2\xea\x02M\xe6^u\xafjs\xfe\xca\xae8'\x8fP \xa9\xe1\x11g\x06\x9f\x19)\xc6\xf7]??\x12#\xe1h\xcb\x1d\xa9\xb25\xac\x98H6\xe2C\x90\xa0\x9c\xe4i\x822\xbe\x87\xcc=\x1f\xe1\xc5vq\xccX\xcbK1\xbeQ\n\x91|*\xdd\xdc1\x97\xa0\x18>\xef(=|>\x16\xff-?\x1f\x03) '\xf2\xd7c\xbe\x1a\x13\x94\x039\x88\x17\xba3\xf3\xb0\xd9\xe1T\x1dd\x01RK\xbf\xb8\xb8\xe6O\xb4#\n{t(\xc5\xd2\xe2\x94SRW!\xe5\xa6\xc1T<\x9f\x82\xcc\x16\xbc\x0d\xc92rS>\xb3\xcc\xed\xb7p\xbeiF\xc4\x96\x85z\x19\xbf\x1e4W\x16\xca\xb2\xda\xe3\xb5\xa5\xda\xe9\xb7\xecl\xfa\xf1\xf2\xf2\x03\xfcpv\xa9\x1e\xac\xf9\xf4\xf1\x8d\xd8c\xfc\x19x\x8bN1xg\xf9\xf2\xee\x80\x7f\xfa\xebO\xc6\x06 \x9fjOs\xb9\xde\xe41\xc2g\xe8P\x90u\x95`@\xb98\xc2\xcc\xa1m\xdf\xc2\x8b\xa6\x04H\xc9_\xe8A\x8cgx\xcd\xd8\x9d\xa0\x84\xc9\x16B\xae\xaa\x03\xc8,EX\xa1\xd2\x12yHlo\xd8\x80X\x84\x9c\xc6\x1d\xba\xe6Kp\xdf\xdaCk\xb1\x89\x90\x1a\x12\xfb\xf75I\xd7\x80r\x9b\xefE\x10\xc8\xc5G\x817\xa4\xc0\xc7\n\x01\xc3\x8bh\xbaJ\xb3\x94\xdeA\x8e\xf1\x9a/\xa3\x15\xcf\xfa\xe5K\xcd\x16CIr&f\xf3-\xe6\x8d\xf8\x9e]\xc0\xd1\xa7\x12\xab2I\x8cKly2\x99%\xd6'\xca\xd1\xd66\xfaU\x81\xd1\x15\x93A\x12\xf1\xe2\x91yE\xbd#\x14?\x03\xca\xce\x90M\x95'b\x87\xb1qH\xd9\x95TE\x81s\x9a\xdd\xb5\x0c\xe3\x16q\xc9\x1fP\xdal\xd2$E\x99\xe3,[U\x1b(0;\x89\xf01\xaf4\x93R\xd5iU\xe2\xb5P\xf3\xd4\xbe4\xa2Z\xe1m\x9a\xe7l\xb0\xfc\xcd\x7f3a\xc3W\xc0m\xd2\xf8\x82\xef\xd4\x12\x08\xdd A\x91\xf7\xa5\x14\x1c 5\x14\xf0\xfe@\xef\xe4\xd6~d>\x04\xb96\xba\xb2\x08%>h\xeeAH\xf7\x87\x0c\xef\xeb\xb7\xde\xcb\x03N\xd2M\x9a@\x89\xf7(\xa7ib\x88\"\xe5{u\x82\n\xe4q\x17\xf2\xd5\x92\xde2q\xb4\xc2\x80\xc4\x85\xa0\xa5\xe0\x0c\xf4\x18y\xb8\xa3\x15\xb96\xafi\xc9\x02\xb9\x15\xb4/\xb2yP\xf6\xf9E~\xf7\xb9\xb9\x0c\xa1\x1cP\xb1Ji\xc16\xb1\x99B-*uF\xa0\x8c\xc8\xa5\x07H?\xb5L:\xf3\x83FP\xb8\xea\xaa\x85=\xf5\xaf\xd6\xea\x0cK\xf3\x83\xda8Y\xba\xe2d\xcbs\xa4\x84\xb2:\x1cH\xc1O\xf0\x03J\xaeN\xaa\x9c\xfd\x87\x9d\xdbb]\xe8w\x90<\xe8\xcd\x8a\x0d\xd9@E\x85`S\xe2\xa1d\x82\x15\xad\xd7\xa9\x90\x15\xb0\xc59.\x10\xe5\xc4\xb3{V](J\x87\x8f\xd1#\xa6P\xdf\xdf\xd9-b\x8b\x1f\x9e<\x83\x0f\x8c~&\x17\xe4PP\xbb<\xf8\xe9o\x7fk9&_\x13\x02\x1bB\xe09,\x16\x8b\x7f5~\xc6\x88A\xf9\x9d\xf9\x03\x94\xdf-\x18\x19\xaf\x0b\xb2?\xda\x10\xf2\xc8\xfc\xe9ba>\xff\xd2\x0d\x1c1T\x9f\xf8@.\xc9\xd1o\x18\xaeG\xf0w\x8b\x0c\xb7\xe1\xfb\xc5\xce\xbb\xa7\x0e\xde\xfd\x11]\xa3\xd9\x98\x07\xcf\xb9n\xc8z\x99\x81Ciy\xf4\x9a\x90E\x92\xa1\xb2t0H\x90\xc8\x1a\x891\xb6\x1a\x9ai0p\xaef\xdd\xef\x1c\xac\xfbpGw$\xb70OP\xf5\x9a\x90\xa3\xc5ba>\x0dj\xc6\x1dY\xbf\xe1\x8b\x8f\xb3u,W\x19\x92s\xc1\xd4Wg\x17\xa7\x1f\xcf?\\\xbe\xff\xf8\xc8f@k\x16\xaa\xbdc\xd1\xb5\x9d\x9d\xbfw\xb0\xf3\x07b\xf1\xfb1V>{\x0e\xbf9\xac\x16\xaf \xf9\xfbb\xb1\xf8\xc5\xfc1\xca\xef\x8e\x99\x1a\xcaZ\x1c\x84\x12\xf5\x16\x15\xe5\x0ee\x8c\xc9\xf6\x81\xd8X\xd8\xa7\xc2BB\xba\xe9\x11\xf0)\xdf7$p\x02\xf9\x06\xe1_\xfd\x8f\xe7\x90\xa7\x99u\x81\xdb\xe92\xacdv\xb9\xe5|V\xb2X]4`u\xd7\xa8]\xea\xf4\x10\x0fq\xea\xb5^i$cj\x89\xbe\xab\x87\x1a\x95\xea\x84\xdd\xdf\x17\xfc\x07\xa6\xae>\x04\xd4:\xed\xd8I(+\nj\x11\x8a\x15\xa2\xef\xac>Z\xf2\xecN\xdd+\x07\xc6\x82ZM\x06\xb4\xa1Xg$\x14\xc0\xed\x18\x0fO\x1e\xea\xbb\x92g\xa2\"\x99\xdfv\x01\xcb\x15\xfd`C\xc8b\x85\n>\xd8\xdb\x93\xbb\xc5\xdf\x1e\x08.\xf2\xbb\x97\x16\x9f\xf9*\xcaI}\xc0p\xb0\xe3P\xfb\xc9\x1f/\xde\xbf\xd3\xff\xf2\xfc\xf9\xf3\xe7\xe65\xc0\xda56\x17\xa1G\x12&\x0e\xa4\x12$\xeeuU\x89\x95\x81u[e\xc8P\xdez\x88\x865Y\xe3Fm9\x06\xbc_\xe1\xf5\xbaQ`\x8e\x85:\xaeC\x87\x0c\xd6\x9b\x96J\xb1\xe1\x17\xd9\xcf\xff\xceX\xf7Y\x1a\x13:6l59\xfa\x0d\"\xc5\xcf3\xcb\x05\x04%WL\x065\x17\xe2M\x9aa\xf3\xb9\xa1d\xd6\x07\\\x94$\xb7n[i\x89\xe3\xef\xc7.\xf9\x0c?\x87'f\xccu\x03\x1e\xb2 \xbf\x7f\x1a~\x82\x01X\xa9z\xc0y\xf9\xe0\x19<\xd0\xed\xda.\x1b\x16b\x94\x0f\x8em\xf8\xf8\xf8\xde\xa1=\xc3\xf9ob\x08\x7f\xb06`\xe3\xeb}\x1f:\xc8\xf3\x8d\xbcpu\xd7\x9aX\x0di 78\xcb\x1e_\xe5\xe4&\xe7rf\x87J@\x90T%%\xfb\xc0\xcd\xd5]\xf2\xc7B\x81\xef\xed\x03\xf5\x8aqM\x0e[\xc0\x86\xcb\x15\x12KZ\xdf\xd9g\xbe\x19\xd5:\xdf\x91l-+\xcer\xca\xc5VN\xf3z\x7f\x80\xb0\x00\xeaQ\x89-\xa3\xef\x87\x93\xb0\xa8\x0f\xe7#&\xd7\x14\x0b\x07\xa6!e1\xfd\xe9\xaf?=\xb2l\xa49\xd6\\\xb7C\xfb\xb2\xe3\xacb(\x9f,\x9e>yZ>\xb0,!\xf1\xdf\x03*\xd0\x1eS\xdc\x0e\xc3}\xcc%\xef3\x19\xc1\xd3B\x91\xe6\xcf\xfa\xa6\xec\x02\xff\\\xa5\x05^?\x03ZTm\xa6\x1b.\xd4\xbax\x0c\x8a\xb6\x9d\xde/pq\x9d&\x0c\xd9IB\xca=)OV\xa8\xc4'\xb4\x0e\x1c<\xb9~\xb2\xc2\x14=9\xc9\xc9\x1a/\xd3|CD\xf3m\x93\x0dZV\xfb=*\xee\x9e\xc1\x0f\x98\xbe#k|\x9eo\x08\xfc\\\xe1B\xf9\x1d\xa4\xe1\x06\x18\n^\x88J\xc9Jr\xc0\x82\xd3\xe7\xebN\xebo\xd4\x80\x85\xa3\xabE\xf1\xc3\xa7\xdf}\xf7\xd0\xec-\x83\xb2J\x12\\\x96\x9b*\xab[\xb7\x05\xf3L~2\xa9\x90,{\xc7\xf4\x86\x14\x06\x8e:\xdaz,)c\xdbd\x87\xf2\x1c\xeb\x1c\xad\x1e\x8d\x9d6\xbd=\xc9\xd3+S(\x9c\x0397\x8d\xde\xdb6\xa1\xb7\xae's\x9cc\x07(\x0e\x89;d\xc6\x82\xa7U\xb9\xdc,\x17&\x08\x1d~\x0c\x8d\xe1=:\x1c\x96\xa3\x1bOY\x8e\xdb\xd4'\xae\xd6\xd8|U\xa5\xd9z\xd9=\x0f\x03\x9ao\x89\x8fxv\xf4\xbe\xc6\x07k\xef\xe6hAk\xa4\xa0s\xcd\xbb\x16\x83\xfc\x06Qk\x8c\xa6\xc7\xaa\xe7\x9f\x89\x88\xb6=YW\x19\xb6\xbb\xe7=^\xe3\x18\xd5\xa9\xc4k\xfc\xbe\xb4\x87+\x86\xf5\x99\xecprUVz=\xbf\xfe\xea\xad\xa0,m]\"\x99\x12\xfcgA\xe9\xb9\xbeZ\xa7P\xd1\x96\xe5\xfaj\xd2\xe2\xab\x89xx\x91\xe6 /\x13\xca\xf0>.\xd7W\xf0\xdd\xe2\xf7\xbf{8h\xd3\xd1\xb2Z4\x0e\xe8g\xff\xd3R\xe4\xea\xe8\xa9\xda\x99`\xc4\xaa\x8b\xc4\x1a\xa0\xa9\x83\xb0~\xaepI\xbb\xdd\xd6QW=-RA\x0c\xbf\x12\x10\xc3\xafb\xf8U\x031\xfc*\x86_5\x10\xc3\xafh\x0c\xbf\xd2C\x0c\xbfR\x10\xc3\xafb\xf8U\x0c\xbf\xf2\xd4\x92b\xf8U\x0d1\xfc\xaa\x0d1\xfc*\x86_i \x86_i\xbf\x89\xe1W1\xfc\xca\x001\xfc*\x86_\xc5\xf0\xab\x18~\xd5\x829Bab\xf8\x15\x87\x18~\xf5\xdf%\xfcj|\xe8Sy\x97'i.\x0b\xa4\x18\x02\x9f.\xc47u\xdc\x13\x8fu\x92\x0dM\xe1N\xb2\x8d\xfc\xf5W\x1b\xed\xd4\x19~\x1b\x04\xae\x15!\x19FCCPmD\xd0\xfc\xee\xf4\xfcI\xd6xU_h<\x7f]\x86*\x88\x8e?\x01\xd1\xf1\x17\x1d\x7f\x0dD\xc7_t\xfc5\x10\x1d\x7f4:\xfe\xf4\x10\x1d\x7f\n\xa2\xe3/:\xfe\xa2\xe3\xcfSK\x8a\x8e\xbf\x1a\xa2\xe3\xaf\x0d\xd1\xf1\x17\x1d\x7f\x1a\x88\x8e?\xed7\xd1\xf1\x17\x1d\x7f\x06\x88\x8e\xbf\xe8\xf8\x8b\x8e\xbf\xe8\xf8k\xc1\x1cN\x98\xe8\xf8\xe3\x10\x1d\x7f\xd1\xf1\xd7\x94\x10\xc7\xb4<\xc9\x10\xc5%\xb5z\x01\xdf\xf0O\xea\xb7\x96.0\xad\x1d\x82\xa2uS\x95\xfcq\x89\xa9\xc918D#?\xfc\xd5\xfa\x08\xc5K\x12\xa6wh\xac\x96\x07\xdb\xb3!\xb6\x97\xeb\xe8W\xf0292\xb8\x9d\x16\x16\xc73p\x0e\xea\xc0\x83B\xf0\xf0\x85\x81\x0f\xa9\x02|l*\nB\xfdbVdz\xe3\x88\xe5\xae0\xb7\x7f\x0c\xdc>2\x18\xe1'\xb3\x0f\x00\xd1\x9d\xb7\xaf\x0c\xe6\xf2\x97\xc1H\x9f\x99\x15!c\xae\xb7\xdf\x0c\xa6\xfb\xce \xd8\x7ffE%\xed\xfaA>4\x98\xdb\x8f\x06\x81\xbe4\x08\xf5\xa7\xd9Wv\xedk\xf3\xf5\xa9\xc1\xdc~5\xf0\xf3\xad\xc1\x9c\xfe5\x98\xecc\x83q~6\x98\xcb\xd7\x06\xa3\xfcm\xf6\xed\x80J\xbcv\xfb\xdc\xe0~\xfcnp\x8f\xbe7\xb8\x1f\xff\x1b\x04\xfa\xe0`\x9c\x1f\xce%\x82\xfd|q0\xaf?\x0e\x02|r\x10\xee\x97\x83\x11\xbe9\x0f\x91\xf9\xc8\xc3?\x07s\xf8\xe8\xc0\xe5\xa7\x03\x7f\xf5\xcc\xc3_\x07\x81Z\\\xb0\xdf\xce\x8a\x8d\xfb\xf4<|w\x10@\xe5\x8c><\x08\xf2\xe3\xc1\xdc\xbe<\x18\xe9\xcf\xb3\xaf\xab\xd2\xed\xd3\x83\xf1~=#>\xd6\xa3\xcb\xb7\x07\xb3\xf9\xf7\xc0\xdfM\x05>~>\x08\xf3\xf5\x81\xcb8?\xd2\xe7\x07\x1ex-\xf6\xbf\x99\xfc\x7f0\x8a\xb9\xfe~@\xf0\x18\xe5\x08\x7f \x8c\xf5 \x82\x9d\xab\xf3\xf9\x06\xc1\xdf?\x08\x9e>B\xf0\xf6\x13\x82\x1f\xd7\xc3\xfd\x85\x10\xe43\x04\xab\xdf\x10\xe6\xf2\x1dB\xa8\xff\x10&\xfa\x10\xc1\x83\xbd\x01\xbeD\xb8\x0f\x7f\"\xf8\xd0h\xd9 \xf3\xf9\x16\xc1\xc7\xbf\x08\x13|\x8cF\x84\xecC\x9b\x9f\x11\xe6\xf65\x82\xd3\xdf\x08c}\x8eFl\xe2\x8ej\xbf\xae{\xf8\x1e\xc1\xea\"\x01\xab\x0f\x12F\xf9!\x8d\xa8\xac\xfeI\x18\xeb\xa34b\x13z\xa0\xc5j6\x9f\xaf\x12\xbc\xfc\x950\xc2g a~K\x18\xe3\xbb\x84`\xff%8N[\x87O \x02\xfcJ\xbe\xbeL\x18\xe3\xcf\x84P\x9f&\xd8\x07>\xc6\xb7iD\xd6\xf2\x1c\xfan\x19?\x1f\xa7uC\xe4[\xbb\x9f\x13\xe6\xf5u\x82\xcb\xdf v\x9f\xa7\xb1\xcdX_(\xcc\xb8v\x03|\xa2\x10\xe4\x17\x85\x96o\xb4\x0b\xd7\x84\xa6\xf9vy 7\xa6r\xca^\x96 \x9bGO\xc0\xa1 \x07R\xe2by(RR\xa4\xd4\xe1\x11\x9b\xd4[\xb7v\xa9r(j+\x97j\x9d\xb3\n\x0eh\x9b\xe6|.\x86\xc4v\xfah>\x14vn\xccm\x14\xad\xbf\xaa\xeet\xfeX\x01\xd4\xe6\x08t\x14r\xc6\xb7\xd4\xecct\xf2\xd3iQ\x92\xa5c\xff\xcbd\x9fQ\xfd+\x06\xb3\x7fJs,*Ka\x7f\xfe\x80\xb6\xf8\xa3\xa8\xe1\xba\x10\xbf\x1b\x90\xfd\\\xe1\xe2\x8e\xa3ah\x19\x0f1\xecII\x01s\xa3&\xb7\x86j\x9aRB\x91\xc1\xfb\xe9\xcd\x00K\xa5y\xd7\x1b\xfd\xbc{>~\xfe\x8f\xbc\xda\xaf\x84\xb5L\xa5\xb6\xb4\xf2(L\xf6\x946\x8b\x12R\xe5t\xc9\x91\x99D\xcf\x0d*\xa1\xc4\xf4\x18RZ*/B U.\x16\xe0Z\x18Jo\xd2\xb2;\xa7\xce4\xdca \x82WFn\x0fQ\x9d\x9f\xdbF\x14\x9fE\xefAL\xcf\x8d\xe9\xb9\x0d\xc4\xf4\xdc\x98\x9e\xdb\xc0\xaca\x05!!\x05A\xe1\x041=wj\xe8\xc0\x88\xb0\x81YB\x06\xc2\xc3\x05bz\xee\x94\xf0\x80\x90\xd0\x80\x11a\x011=7\xa6\xe7\xc6\xf4\\_\xb7\xfe\xac.\xfd1\xee\xfc\x98\x9ek\xfa\xcc\xe9\xb6\x0fp\xd9\xfb$\x9f\x86\xb8\xeacznL\xcf\xf5q\xbb\xc7\xf4\\\x0eS\\\xeb1=W\x87\xc9\xe9>\x1f\xeb:7\x9e\x0d1=w\x081=w\x84\xcb\xdb\xed\xee\x0euu\x07\xb8\xb9\x83]\xdca\xee\xed\x98\x9e\x1b\xe6\xc2\x8e\xe9\xb95\xfcS\xa6\xe7\xda\x9eEo\x9c\xa6\x8b+\xdc>\x05;\x97\xc9\x9e/R:\x1f\x91\x14\xa1\x05\xa6U\x91s\xa3\x92\xf4\xaaI\xafk\xed\xa9\xe4\xa6\xa0m\xcff\xc2]\x8fl\xdb\xdb\xbd\x8f\x0bx\xcf\x0e<\x92\xf3\xbb\"\xd9lJL\xd9\xf5\xabK.\xb4L\xd9=\xd7r\x9a?\x13}\xb5\xfe\xd6\xbc\xf4\xbeAY\xc7\xa3e0\x12h\x0d\x03\x1a&\n\xfaL|\xec]\xca\xe5`8+\xf3j\x8f\x8b4Q\x7f\xe3\xbb-A9\x1b\x8f\xb0\x8a\xecp\xae\x18_\xe5\xb5!\xaa\xa7~\x9esl\x19.\xcb\x86\x85\xc2tS\x95\x8c\xd5W8\x90\x9f]\xf4\xf7\xcc\xdc\x9eGX\xc3\xde,\xdd\xa7\xbe\xdc\xe5\xdf\xd6Q\x08\x06G\xb10R\xb6W\xb0\xf4\xb9VY\xcfy)L\x12\xed?\x9do \xc3\x1b*\xad_)\x15\xe2P)\x8d\xdc\xbe*6\x88\xe8\x84\xf1yu\x07\x18%;@\x87\xc3W\xe4b\xdb\xdd\xdd\xb4\xb7\xf1\xb2\xd5\x82q\x94\xafP\x02\xb4\xa80\xb0\x7f\xa4\xf9:M\x10\xc5\xb5\xa7Er\x90\x7f(\x17R\x1b]\x9a'Y\xb5\xee\xa9\x84H\xf4R\xbb\xbaz3\xc6\x1d\xa7-\x0b,\x13\xdd\xad\x90\x8f\x9ep\xf9t^\xf6f\xab7\x04\xaeE\x17\xb8\x94\x1en\xbe\xbd\x9a\xfd\xc8\xb6\xdcB\xee\xa6t\x9b\x93\xa2g\xbfV\xbb\xb1\xdb\x85\xe0\xcc\xd4\x89\x1d\x96\xf36\x15\xfa\xd6Lm\x81\xafq\xd1Aj\x9bV\xf9u\x7fJ\xd3V E\x81\xf5{\xa4\x83\x87\xf5\x81s\xee\xf3#\xc5\x1a\x17}\xd3\x96\xfe\x15\xe4/\xc4'su\x8a\x87a\xe5)\xfe.\xaa/\xfc\"\x8bA\x18*ThC0T\x8d\x8aN\xfc\x13 \n\x08\xb6\xe95\xceA\xa06\x95\xab\xd0\xe1\xfcFq)\x16\xacP@\xbfB\xdcE,Xa\x81\xd0H\x11+2\xbd\xbb\xc0b=\x9b;b\x04\xdcQ#0\"r\xc4>\x80X\xb0bl4 \x04G\x94XQ\xc5\x82\x15\xb1`\xc5\xd8\xa8\x13\x18\x17y\x02sE\x9f\xc0\xa8\x08\x14\xfbv\x88\x05+\xc2\"R 0*\x05\xc6E\xa6\xb8D\xb0_t\n\xcc\x1b\xa1\x02\x01Q*\x10\x1e\xa9\x02#\xa2U \xcf\x8e\xda\x82\xa3\xd3~9\x99f\x81\x86\xef\xc14\xdf\n|x\xddG\xd6\x9fR\xfd\x84\xeaH\xeb\x17\xe3\xf0\x1ag\x7f\xcay\xe0\xce\xa9\xc0\xce\xa7_i2\xdeK`\n\xd7\xb5\xd4p2J\xb6\x0c\x83i\x11\x98\xfaDt\xe3`\x06\xf1/\x03\xbc\x02L\xf1.\xba%\xdfF\xa4q\xef\xe8\x96\x92\xa3\x89yY \x18n\x08\x07B\xc349Z\xd9\xa2/\xdd\xdb\xc5\x1b\xb9~\x8c\xae\x0d\xd4F?\x94\x8c`9E\xc0sK\xb5{\xf0\xe6\x8e.\x8eT\xbb\xc6\xf4+L\x1f\xdfi\xa4\xc1\xe804\xc5q\xce\x12\xbf\x19\x18\xb7\xa9\x89\xd7t\x0eH\x13\x9fi\x8a\xcb\x9c\x12\x8f\xe9\x19\x87\x19\x1e\x7fi\xbeM\xb6/\x8c\x82\xea\x8e #\xcda\xfb\xf1\xc3i\x13w)\xed\x03%S\xc1\n\xdc\xd3D\x12R\x88\x0f\xb9*R\x88\x91\xd4&\x85\x1d\x12\x8a]g\x98\x9d\xb1\xa9//\xc8\xbe!JkQ(\xf0\x01s\x17\xe3KT\xd4\x9c5\xd9\xd5:c\xe4\xcb\xa3oQ\xfb\x85\xc9\x7f\xae\x1d-V\xa8\xc4\x0b\xbe\xa4\x16\xb2V\xd7\xa2E\xaf\xb7\xf4\xefl\x1a\xeb\xf9\xd3\xd9,\xe6\x89\x9a\xe3\xd2?\xeb\x95_{\xe1\x17\x1f{\x8e\xbc\xb7\xab\xccc\x9f\xe5\xa2\xde\xa0\x9bvK\x1f^\xa8\xba,\xe0\xf7\xde\x198\xd0\x91,s^\xa6\x07W\xe9y.\xd2-\x815N\xaf\xb4\x8d\x7f\xd6\x0b\xb0\xe6\xfa;\xf5\xf2;\xb8\xf0N\xbd\xee\xf2O\xba\xdb\xbf\x8d\xbe{\xd5\x95\xf7\xc8\xf9\xd9>\xe1\x82\xda\xba\x94\xb6w\xf2\xf0zj\xb9\x9c\xea%B\xf7\x94\x10g\xcc\xe0\x90xM\x08\x94d\x8f\x97\xb5\xbdW{<\xb4D{{B\xdb\xe7\x830\x1c\xf75\x98vC\xdb\xb1\xd99\x02K\xe1:T2G\xa2j\x99\x0f\xe0\xec\xf6\x99\xc7Q\x14x\x13\x19jq\xfe\x07\x92Ns\x9b\xac\xb5\x05hlZy\xe2'Mu\xa4\x07igF}\xac\xc1\x17\xa6\x8a\xe9\xd7\xf3l*\xd8\x14\xf5\xcbO\xf5\xf2V\xbb\xec*\x17\xdbR}w\xcf\x8b\xfc\xce{A\xd3Az\x87v]\x98\xe5\xda\xd8\xa4\x8d\x9e\xbe\xabO\xd3\x18\x93\x981L\xc0\x18\x95raI\xad\xd0\xc5Gx$S\x8cL\x9fh\xa7I\xb4\xb0\xf5\xe3\n\x83S$F%E\xf4\x92\x1f\xbaL\xe9\x1c\xabc\x12\x1fz \x0e]\xecm\xe4c\x93\x1b\xccI\x0cc\xd2\x16\xf4\xe9 \x13\x12\x12\xbcR\x10\xfcR\x0dF&\x17\x8cM'\xd0\xa5\x0d\xcc\x92(0_j\xc0,\xc9\x00\xf6\xf0\xffq\x01\xff|\x96u\x81\xfd\xe1\xa1\xfc\x96\x90}\xea\n\xd2\x1f\x1b\x96\xaf\x0d\xbf\x1f\x11p\xdf\x0b\xb1\xf7\xd7\xab\xccg\xd3\xc8P\xf9&$\xbe\xcf\xbfo\xcc\xfd\x8d\x0b\x80\xd7\x04\xbbK|u\xc8\xfb\xc4 \xf7 a\xed\xba\x10\xf6 A\xeb\x9a\x00\xf5\xb1!\xe9\xc68jM\xd8\xb95\xd0\xbc\x1b\x07\xea\x17L\xdem\xf3K\x7f,\xc1!\xe2\xae\xc1\xd8\xc2\xc0\xf5\xf4[C\xbd=\x83\xbb\x9b8\xb1 \x01\xdc\xc6\x90m}\x90\xb6),{0J\x9f\xd0k[\xb0u;\xbczd@\xb5#\x84:,h\xba\x17\x8el\x0b\x8c\x9e!\x14\xba\xd7[=\xd3\xa3\x02\x9cu\xc1\xccS\xc2\x97{\xa1\xcac\x83\x93\x07\x81\xc8\x13B\x8f;\xca\xa26\xb0\xb8\x1d\xed\xd8\x0e\x1e\x9e\x1e.<>@\xb8\x15\x0c<*\xfcW\x1b\xea\xeb\x0e\xee\xb5\x86\xf3z\x04\xf0\xbaBv;\xf1\xab]\xec\xbeA\x91\xe6@\\\x8f\xd0[G\xb0mM\xde\x84\x80\xda\xcer\x9a\x10.\xdb\x0f\x8d\x1d\x17\x0c\xdb\x0f|\x9d'\xd4u\xdc\xccY\xc3Ym\x01\xac\xdcLR\x1c\x92\xc5\x16Q|\x83\xee\x16E\x95\xd3t\x8f\x17gM\x85\x10\x0fkI\xaf\x9e\x88FG\xed\xd6\x0f\x11\x1f\xf4\xeb\x86l4\xf5B$\x07\xad\xb8\x07uA\xe8=\xc4APC\xbd\x0f\xad>.\xc0\x95\x1f:\x93\x89H\x80\xad\x9e\xc7<\xe6\"\x01\xe3\x8dF\x03T\x96\xfa\x1c#MI\x02F\x1b\x94\x06\x98\\u8\x82\x8dK\x02&\x9a\x984\xdc2\xd6\xdb\x98hn\x1a\xe03\xd6\xd7\x98hz\x1a\xe03\xd5\xd3\x98\xcf %`\x82YJ!\x98\xcd8%`\xa4\x89\xaa\xa6f6C\x95\x80Y\xccU\x02\xe63Z \x98\xc5t%\xc0\xa7~\xc5x3\xd6P\x8a\x1a\xebUL1n\x0d\x90\xe9\xebSht \x9d\x94\x9af\xf8\x1a\xa0\xd3\xd5\xa1\x18a\x0e\x13\xa0\xad;a9\x8a\x8dac\xeeSz\xa4\xb1l(\xb8\x8c\xf5$l\x14\xcca>\xeb \xd4\xd5\x8d\x98hJ\x130\xdd\xa0\xd6A7#\xa3\x00\xb7\xa9Q\x80\xd5\xe0(\xc0\xc3\xec\xd8\xf9\xd0Q/@\x93B\xaf\xeb\xd5\xd7\xa8\xe5\xaa\x0b\xe0a\x94\x94\x1f\xfa\xd4\x01\xe8\x11?\x97\x99R\xc0\x8c\xc6J\x01\xf3\x98,\x05\xccc\xb8\x140e\xbe=r\xf2\xdd\xb9\xf8\xbf4iVE\xf2\xf4\xbb\xc5\xf5\x93\xc5\xfb\x9b\x1cwL\x99\xad\x1b\x02\xce\xab\xbd:1\x1f\xc3\xfb\xbf\xbc;\xfb\xb8\xfc\xf4\xee\xe2\xc3\xd9\xe9\xf9\xeb\xf3\xb3W\xbd_\xde\xbe\x7f\xf5\xe9\xcdY\xef\x8fg\xff\xf7\xe5\xd9\xc7w/\xde\xf0?\xab2\xcf\x06T\xfa\xe8\xab\x88\xbb\xde/w\x84\\\xcdB_\xe7\x0ei\"\xf6\xec\xcfo\x81\xf5(\xf3\x1b8\xe9\x94\xaf\x90\x16\x99\xdc\xa2\xd3B&\xc6\xf4M\xe7/i\xce\xd7A\x81\xf2r\x83\x8bB%\x7f\\\xf2a\x02\xdd\x15\xa4\xda\xee\x00\xc1\xdbr{Fw\xb8\xc0\xd5\xfe\xf2VJ\xa46\xa6\xb7|\xfd\xbc\x10O\x92\x83\xfaT\xbdQ.\xf8%\x03n\xc5\x02\xa8W\xf5`\x0d\xf21\x97\xc3\x85\xc3\x13.E\xe3\xe0\x10\xe7Ck\xd1i\x9b\xe8\x9b\x81q\x01\x82q\x92\xc1\x91\xcbg7YLZ\x9d=\\\xdd\xb5\n\xb6\xf5\n_x8\xa3\xd6/h\xd70\xcc\xba\x8e\xc1s-\xc3\x88\xf5l:B4\x0b\x1bl\xef\x19\xc8\x17\x0cd\xbf\x1f?\x9cJ<\xcd\xb3\x05\xba\x9d\xc3Y\xf1\x01\xa5E\xf0\xe6\xe1\x93\xb1<\xa0t\xe0%\xf4\xdb@\x8c\x8c\xa5\xe4\x9en\xc9i\x8c~\x92\xb5\xb2\x11[\xf2\xdd3T\xd0\xd4j\xb2\xc69\xd9\x87!\x17Y\x14\xdc\x82.\x9a\xab\xec\x0ea\xbb\xde\xa3\xc3\x81\x1b\xde\x07\xfbg=\xc7\xbe\x91D\x94;rS\xca\xe5\xcezd\x0bW\xee\x93\x92\"Z\xb5\xfdEj\xf0K\xd2(E=t\x83\x0d(\xd8\xc6\x1b\xd4\xdc<{\xf7\xe9-\x1c}\xa7\x94\x89cx\xa2\x96\xbc8\xb4\x8f\xe1i}\x90\xf7\xd0I\x14\x8f\xfc\x18\xddV\xd0\x14\x98\x15\xb5\xfe\x17\x1d\x85\xad\xffcGqS\xe0P\xe0\x9a\xcf\xcc\xb5\x93\xa6)t\n\xe6W\xec\xfa\x98\xe7R\xf0\xfax\xa7(z\x02\xcc\x07B-\x81\xba\x03/)\xca\x13\xac\xaeU )\xd6\xec:\xc6\xc4\x0dw\xe9\x90\xbcLK\xcak\x97l:\xc7\x01\xdb\xad]S\xbd<\x16\xf9i\xc0.v\xbd\xe3\xa4#\xc0-\xa2x )}\xa4q3\xb8`\x81\x1c\xae\xce4\x12\xf9\x9e\x03',\xb2\xdb\xea\xb2 \x96\xdfZ \xee\xd3\xc5\x08)n\x90\xe36In\x97\xe5\xa3\xa4\xb9]\x9e\xdb\x1ev\x9aY\xa6\x1b\xa4\xba\x95\xf9:\xc9\xee#\xdb\x1d\xd2\xdd!\xdf\xbd%\xbcK\xc6\xcf#\xe5\xefS\xce\xdf\x9f\xa4\x9fS\xd6\xdb\xd5\xff\x99\xe5\xbdN\xe2\x87\xc9|}\xbd\x93\x9eu`\xf0^\x1e\xe5.\x81v27\xd5\xbe\x97\x17\xa0\x12\xc7\xba)\xff\xf8uS|\x14\x88\xa0\xfb\\\xd3\xcaG\x85\xa8\xbf\xf6V\x1a\x0cg\xb9v\x92\x82\xce\xef\xde\xc9mC\x18xZ\x0f\xce\xe90\xbbZ\xe0\xa9l:\x8fuKr\xc63xp\xfaj\x19\xd8?q\xedg\xad\xf1\x945\x9e\xaf\x1e'\xab\xf9L\x9dz\x9a\xde\xcf9z\x1f'\xe8z\xa4_\xe6\xe7\xea\x7f^\xa5lNVU\xd0*/)\x0f@]\x16\xf8\x06\x15k\xcf\xd3\xb5s\xa0\xf40t\xb5\xcf\x82\x1cHA[\xc1\x0c\xfb4\xe7\x81r\xfc?K~\x92\xf6k\x17\xa4\x1d+\xb98_Q\x96\x91\x84\x87\xd81UG\xf4\x08\xb2G\xb5m\xc8~_\xe5)\xbd[\x1e\x08qU\xd0\xd0\x0d\xe4\xe4\x04\xaa\x12m\xf12Us>b0m\xca\xd9\xb0\x8c\xe3:9\x19\x0cM\xba\xcb[\xdd+y.\xe4\xdc7\x1d\xaes!: \xf89<\x85\xbf\xb6\xbe\x038\xda\x92-\xe1\x8e\xee\x85\xf0\xd33\x86<\x82\xe7\xf0`\x9b\xd2]\xb5\xe2\xfep\xa1\xde\x9c4\xb5\x8aN(\x8fXz\x85\x93\x9eK\xbc\x85.\xaf2\xae\xb72d\xfdR\xba?\xfdk\x9b\xda\xee\xdc\x84su\xb8D\x98\xaa\xd5\xfa\x83\x8e\x8fu\xa7\xc0:\xd5J#\xed\xde\xe9\x90\xb7n\xff\x90\xe62\xf4\xa1\x91C\xcd\xa4\xb6\xfa\x97N\x1b6\x02~\xbc\xe5BH\xf1\"\x98p$\x97\xefqk\xa2\x8f\x1bb\x1f\xa9S\xfb\xbc^<\xf8\x96\x97\xf5\x92\xc1:\x18\xed\xe1\x1a\x8b\x83\xb3M\xdd\xb1\x08\xc7JK\xc6\x1d\xc9C\xc2\x04 \xa2d\x96I_\x13i\xa1\xe0\xa2\x7f\x95a\x9f\x03\xb0G\x93\xd7\xe5]\xfb\x82\xb7\xd9\xcd\xa4\xd3l\xa0\xab\xdd\xf8\xa01h9\xd0\xd5t|0\x995\x1e\xb0h=>\x98\xb5\xda\x0f\x185 \x1f\x94\x03M\x08\x1a\xaa\x97\xeb\xc1Q\x0dm\xbe+\xe1\xd2\x11>]\xe9\xd8=l\x02\x16\x81\xf1\xc0\x07\x8fA\x0d\x8c\x1b\x93\x0f\xff\x1e>~WH\x07nro%\x00,\x8a\x00\x8c\x19\xe0X\xa5\xa0\x87fx\x98\xf5>\x18\x8ey\xa2\x82\x00AJ\x02\xcc\xaf(\x80\xbf\xb2\x00\x03\x85\x01fP\x1a\xf4K\xab\xa78\x80\xbf\xf2PG\xa1\xd4\x1bt\xa2yG\x17c\xd2l~\x11\xe0\x99Q6\xdd\x05F\xa5\x8a\x0c)\xaf\xd2\xc3\x01\xafEImMt\x86\x8c\xae\x107\xaa\xe6Q\xa0\xdaf\xd7\xf4 \x16\x8f\xe1\xf6,j\xd6\xa7\x858\xad\xf2\xedEu8dw\xc1\x0e\xbf\xa4\xc1\xb0,9\x8a\x81\xbc\x13vQ\xb4WuJEpP\x9a7m\xc7\x1dw\xfe\x91\x15\xa2o\x8fO\xcd\x86\xa4W8\xe1V\x8a\xda\x00\"M\x14\"8\xbbk2\xe4\x96\x0cX\xe3$\xdd\xd7\x03\xef\x98\x95\xde\xbd\xbf<{\xc6\x954\xc9\x15\x11\xc2\x9dr\xbb\xca+\x9c(-Te\xafu\xa2p\x85\xe1\xb5\x85\xadL\xb79\xa2U\x81\xcb\xfa\xe9\x0bX\xddA\xb35\x87k\xa8k\x156\xae\x02\xabq\xb8\x8d\xe1d\x80\x02>~8\x1d\xd8\x88\x87\x0b\x90?S\xf06\xcdi}i\x0f^\x81\xa2\xf4Uc\x94i\x96\xb5R\x7f\xc0\x85T\xe8\x9bO\xb9\xa64\xca\xaf2\xf3Z\xb5L\xa6\x99\xa3\xfe\xb39\xc4\xe19\x9d\xf5]\xe3#\xa2\xe1\xe5^\x1b\xfd\xa9@\xd4\xd3 \xc5\xbed\xab]\xec\x18Z\x97@\x16\xb2H\xc9V\\\xf2\x8d\x9a\xe6\xb3\xa2\xbf\xfeA\xc8\x15\x10\xac\xd7@\x00\xd3U\x10\xfc\xa2\xaa\xbd\xf2\x10\x9cw\xc4\xbe\xecp\xdc\x18'\x87\xf1\xfb\xe8,\\\xa7\n\xd7Yx3\x87\xaa\xe7\xf3\xe8\x88@4R\x99\xd7p\xab3\x1c/n \x02\xfc\xb8u!fL<\xd2\x16\xcc\xb4\xee|\xcf\xc0\xbc&fI\xa0l^#\xe9\x1b\x13xJ\xea\nc~ \xf2\x10\x18[\xdc\x80y\xac\xfezt\xa7\xb9A\x8fn\xbd:\xa1\xde\x9b\x90\xf7uo\x9e\xba=\x01\xfd\x8b\x99\xe7\xa5l6\xc3\xc1|F\x03\x1f\x83\x01\xa6;\\\xb0\xed\xb3\xc0\xd7{\xb6nOw(\xcdOI\xbeI\xb7\xdeL\xdd\x91=.)F\xeb\xe5*#\xc9 \x0bQ\x7f\xa3{\xf8\xa3j\x05\xe5MJ\x93\x1d\xf0\xc6p\x94\xa7\x19\xe4\x84-\x92\xabc\xf8\x0e\x9e\x03\xca\n\x8c\xd6wM7\x8f\x1e\xaa\xd9Dd\xc9\xbe\x0b\xe9\xf7r\x87_\xbdx\x0f;T\xac\x1f\xb3\xb6\xe6\xde\x1f\xf5{\x91\xa5h\xfa\xfd\x04\x9a\x0b\xff\xb2\xc3\xb2&\x12\x86\x9c\xb4J\xdc\xf0z4\xe4p \xaa\xb8@\x87N\x89\x06\xa7\x87'\xdf\x7f\x172\xe0n\xd8\xd8\xf9\x87'\xdf\x7f\xd7_=?\xa0\x12\x0eE\x9a`U\xc0\xaa}\xb6\x1e\xf1rM\xcfNNZ\xfa\x04\x969i'g\xe7\x1f\xca\x93\xb4,+\\\x9e<\xf9\xfe\xbbG\xaa\x83\x1f_w\x19\xda\xc2\xd7f\xad\x1c\xcd\x0e\x95\xae\xd70-\x83\xf9\xf15\x13W;8\xca1^\xcb\xfaV;\x8c\xd6L\xd4\xe5\xd9\x1d$Y\xcaG\x8ad\xd5\x8a\xad\x1cmW\xd1\x14#_w(\xfb>\x84\xcf\x9c\x9a\xef_\xf2Q\xab\xe1\xb7\x91\xfd\xaf`d\xff\xab\x8fgu\xf77\x94\xd3\xb4\xda\x87\xa0z\xf8R\xb5\xf2\xddh$oz\xaa\xf7ZBx \x18Msr\xc8p\x10\x01\xa7\x9d\xa6\xbeT\xa0\x84\xa6\xd7L\x91\xabI8p+\xc6\xaa*\xb6!\xdd\x7f\xa8[iz.y\x91\x92\x12\xba$\xaaE\x90\xb2\xbf\xad\xaa,\xa4\xbb\x87\xe7\xb2\x91\xef8\xb9mR4\xa9G\xba\xaf\xd2b\xb9\xcdP\x92\xe2\"\xa4\xf3\xee\xf6H\x0f\x8f\x9f\xfe\xee\x7f\xfd\x1e\x8eVd\xbf\x825\xce\xd0\xdd#O\xaaZh\x9ayP\xab\x10\x17Y\x9a\x87\x90\xf5\xf0%o\xa2\xe9\xfb\xb9y\x05\xf2&5G2\x92\xafIX\xa7ox\x93\xa0NE/u\xa7\xa8(\xc8\xcd,\xf3\xf0\xfb\xdf\xfd\xfe{\xd7<\xe8\xc9\xb2\xcd\xc4\x1e\x17[\x1c|\x02\xf6e\xe8\xe3\xdf\xfd\xcb\xff\xf5=\x1c]\xee\xf0[\x86\xcf\x9f4HsAB\x0b\xdf\xa1 \xc6\xeb4\xdf\xca\x80b\xbd\xca\xd8R3:\xd7\xc2:\xd9\xb9\xfdA\xcb\x82)\x1e@\xfc\xb6\\_-\xcek\x0b\xa2\xa8\x03\xa7\xce\xac4\x17Z\x05\xd9\xc0\xb7\xabt\xcb\xbe\xd3j:g%M\xf7\x88\xe2\x1fP\xb8j\xbeE#\xf5qe\x0e\xdda\xc0\xb2\xff5\xc3\xf6M\xebG\x0da5\x8fZ\xbf\xd5J\xb5npo\x88\xbf\xfa66\"\x9f\xcaJ\xb0\"\x1e\x7f'\xe3\x93\n\x19;\x85\x01_7o\xc8QrH\x93A\x17^\xb9\x82=::\xeb)KKQ0\x98\xa3\x87v\xad\xac6u\xca\xd4\xbdF\xd4\x15\x0el{d\xee!\xf76\xa4C\xfc\xc7u\x05\xde\x17/\xcf\x1f\xe3\xdd\xf5\xf2Y\xd5\xc5\xb3\xd5\xadN{\xe4t\x8a\x7fx\xcbg\x9d\xd4\xf2r\xd6Qm\xd5y\xed\xda\x06G*\xe5\xac\xf5\xe6\xcd\xd5\xe6\xe7\xab5?[\xa5yc\x9dy:\xbe\xca\xfc\\5\xe6\xed\x15\xe6G\xd5\x97\x9f\xb7\xba\xbc\xb1\xb6\xfc\xbc\x95\xe5\x0du\xe5'V\x95\x1f\xb0\x9bjj\xca\xcf[Q~b=\xf9\x99\xab\xc9O\xa8%?w%\xf9\xd9\xea\xc8\xcf[E~\xb6\x1a\xf2\xee\n\xf2\xb3\xd5\x8f7U\x8f\x9fR;^[+\x9e\xfaT\x8a\x9fV'^S\x17~dUxMMx\xe3AiL\x87\xb7\x9f\xa0#k\xc1k\x1fN\x04\xc5\xdfo\xdc}\xcf\\\x05~X\x03~\x86\n\xf0\xb3\xd6\x7f\xef\x1f\x86\x13k\xbfKF\xb71N\xa9\xf6n-wn\xa8\xf4\xee\xac\xf3>,-\xed_\xe3}\xd8\xf6\x17\xddXGUw\xf7\x19\xac\xab\xb2\xbbyl\xce\xaa\xee\x015\xdd\xbb%|'\xd6s\xb7Vs7\xd7r\xb7Ur\xd7r\xc1\xb7\x8a\xbb\xab\x86{\xbf\x82\xfb\x84\xfa\xed\x1e\xd5\xdb\xc3k\xb7k*\xa7\xbb\xea\xb6\xcfT\xb5]\xd3sg\xa5\xccZ\xaf}\xe6j\xed\xb3\xd6j\x9f\xb3R\xbb\xb1N{\xbf\xf8u\xbfF\xfb<\x15\xdag\xab\xcf>ouv\xbf\xda\xec\xce\xca\xec\xf2\x96\xec\xaa\xcb.?\xb3Ve\x1f\xd4d\x1f\xf6\xe6[\x9f\xdb^\x8f\xdd\xb3\x1a\xbbG-\xf6\x0e\xc9s\xd6a\x9f\xb9\n\xfb|5\xd8\xe7\xab\xc0>~v\x9d\xd5\xd7]\xb5\xd7\x1b\xf1]\x9bSs&\x8cZV\xdb5\xa2\xeaB^\xa6\x7f\x1b\xe4\x0d\x08\x03{\xfdG\xa5\xa3\xafI\xb5\xca\x06\x96|i\xa2\xe7\xc6<\xc6'\x86\xd0l\xfb\xf67B\xb7\xe9\xe5\x06\xe94\x87\x1d\xbe\x95\xd4\xc8\xaf7\x85o2r'5I\xc5\\\xf0\xb8\x9eV\xd5\x9fN\x17\xd2R\xa6~\xab\x8bH%;\x9c\\un\x10h\xcbD\x93\x08\xffR\x9f\xafq\x91^\xb7s\xc4\xeb\x10\"8\xfa\xf31|<\x86\x8bG\xd2\x05\xd7\xd5\xb8K\x9c\x1c\x9e~\xff/WO\x00g\x19\xbb\x84$\xec>z\xad)T\xd5\xad\x7f\x8c\xf3\x04\x1dJ\x1e\xc0/\x8a/\xab1\xb6\x19\x89\xf8O\x17\xaf\xfe\xd4\\\x1d\\\xb6\xd5`\x87\x9e\xff\x14\xeb\xe7\xc4>\xf1rV\xf8\x0f\xeb\x94\xdd\xae\xca\x9a\xc7-l\x978_\x8bAA\xb9CO\xbf\xff\x17\x93O\x86\xdf<\xcb\x05\\\xe0vsM\x9c\x0e\xad1\xb6\xff)\xe3u\xfe\xe5\xfb\xdf\xfdo~\x8a\xd7\x15V$\xb2\x8cl\xc7\xb9\xea\xbc\xcbz\xceQ\xd0\x93\x06\xb8\x1f%\x8e\x9e\x13\xb2\xddiw|\x02\x06\xa3l7\xd0R9\xc59)1t\x8c\xfd\xce\x0e-O\xd3MrZ\n\xd0\xbb.%z7Q\x9a\xeaz\x13\x9c\x99\xb2y\xdf\xa5)\xff\xec\\9v\xf7f\x8d\xbc\xe7\x08tb\xf7\x19k\x88\xdbS\x80\xce\xf9)Q\x06\x0dt,\x97\xef\x9d\x0b\x06\x07\xa9\x80\x81\x9bT\xe2\xd1:K\x05\xd8\xab\xe3\xda\xedr\x93\xdc\xa7\x03\\\x03w\xaa\x80 NU\x0d.\xeed\x1d\xb8V\x05\xd8\x1c\xac\x02l\xec\x98\xecl\xed`\xeb;^\x05Lp\xbfv\xf0t]\xb1-'\xac\x00\xdar\xc5\n0\xe7}3V\xf6\xeek\xfd\x13]\xdd\xb39?\x1e\xb7\x98\xa1\x94\x80\x1e:\xd5m\xe1\xac\xddf\x8b9\xe9PY`Z\x159[}\x88\"\xa1A\xe0\xeb}m\xd4\x84#\xe1K\x01R\x88/j\xd1\xcf\xef\xaeb\xed\xb6\xd0 \xb6*c\xcb\xf5~\xe9~\x89\xbd\xa6\xebz/\x1c?*\xc2_\xfcOM\xe0\xea\x8e\x7fq\x8b\x93\xaa%e\xb7\xa8\\V\xe50\x00\"(\xd0b\x8b\xf8Lq\x0f\x98Z$}\x81nV9\x07\x11U\xac\xf9\xdbr{\xd2\xd2J;\xd9\nZe3\xb0\x08\x11\xbe\xde{\xd5 2\xafO6\xcd\"\x01\xaa\xb59\xf9\xc8y\x96A'\xbd\xa0\x92\x05v\x8bJ\x08\xd8\xb3?\xbf\xe5uF\xdb\n\x02g\x98pH\xaau*\xd3\xa1\x92\x02k\xb2\xb2}CTt!\x862\xddI \x06J\xb6\xdb\x0c\x97\x82\xa26\x1d2\x9a@\x9a\xa9\xae\xf7\x8bS\xde\xa0\x85H\xad\xf3\x1e\xc1(\x1b\x94\x89\x0b$WQ\xc8\xdd\xd8\xfe\xf4\xb1\xcf\xfb4\xdd\xd2\x02-qz\x18\xa7@\x0f\x0eWE\xb8v'\xf0\xce\x80u\xd6Y\xcd-\xab\xd4\xd9\xf9\x87\xa6b\x08#\x99\x07TJ<\xfc\xa4Z&\xad\\\x8f\x16n\xfe#$\x9a\x08\xcd?\xbf\xed\xfc(\xef\xfc\xad \xcd\xde\xc0\xbdBU\x8c)$`S<\x94\x8a;C* X\xd2I|h\x08O+\x01kj X\x15\x1e\x8f\x14\xc4ii&`L5\x01\x0ff\x0c_\x81 O;\x81YROz\x085S\xa0MA\x81 \x83\x9c'\x1d\x05\x86))`LK\x01\x0fr-\xe9)`LQ\xf1F\x84\x0c\xb7\xde<\xa9.\xa0K\xb2\x00c\xca\x0bx\x90:C\xea\x0b\x18\xd3_\xbc\x08\x98\x9e\x06\x03\xaeT\x18\x1f:\xb4s6KZ\x0c\x98f\xcd\x9c\x1e\x03\xa3\x08\x9e\x96*\xd3\xc3\xc6\x89\x1b\xa6\xcb\x80\xf5~>k\xda\x0c\x0cRg\xc0\x9c>\x03\xb24\xee\xcd\xb2\xca\xd9\x0d\x18'\x14\xaf\x97\xf4v\xa0\xe7\xfa\xaa\xde\xe6A\xbe`\xdd@\xab\x9b\xf6\xf5\xaeQu\xd3\x0d\xbb\x0be\xe8\xeeq\xf3\xe1Q\xba`\xdaN\x9b\xd7\xe2\xdc\x83\xf6\x10\xb9\x03e\xfd\xa8\x8bVV\xca\x15W\xd6:\x10Q^\x03\xf6(\xd9\xa5\xb9\xb4$(A<,\xb5\xc4t\xe3\xf6\xa3\x8bJ\x1d\x1e\xdc\x1fy\xce\xbb|\x95!\xd8W\xb1B\x99G%\xf7\x0e\x7fe\x13uYW\xff+\x8dq\x8c\xec\xf6\x0dR\xcdwB\xd6\xd8'\x03\xa3\xd3\x15\xb7\xd4\x08\x17\x88\xe8l\x87o\x1f\x8bE\xc0\xd8\xca\x7f\xe6\xee\x8bV%\xe2\xf7/T\x979q\x8f\xcc\xab\xd4\x01i\x0dW>}\xf0\xb0\x84\x12\xff\\a\xf6\x8b\xb0i;\x8b\x1a\xf4\xa6\xc8\xa7@\x84l\xa2}BE\xbf\x0e^\x8a\xd9\xf8\xb5\xae\x03\x0b{z\x94\xfb\xb0G6 bO\x89_\xe31\xec)\xf1r\x83m\xfc\xe9\x0c\xad\xd7\x8f\xb4e\xc9\x8d\xcd\x85\xc8\xff\x16\xef\xc6l\xb0\xde($\x8a,\x92u8\xa9lSx.\xfa\x8e\x8dp\xb8\xf1z\xd6\xa1\xfenCy\xe3\xb2\xf4}\x8d\xb0=\"\x9f\x19f\xdf\x07L\xafx\x1bd\xac,\x145A<\x1f\x15\xea\xb1\xab\xdd\xb2\xae(#^*\xe9\xb9\x19{\x0f\xb1()\xe29e69U\x0b$?Q\x05\xea\x839\xf2 \xbb\xa8z\x14\xc8n\xa9K\x04h\xa7\xcf\xbf\xecK\xa7\xb9:\xa3\xbbe_\xf4\xcb\xe6\xde\x8b'\xf2\x01\xe0\xeb\xfd\xf0@_\xf4\x98\xeee\xe0\xd2\x98\x80\xc1\xa6\x84\xda]V\x13\xcd\xc1=l\xc28\xdc\xfb\xa3\xc6B\x0cf+1\x18\xf5?\xf03W\x0d\x878\x97\xd5\x18\x86\x96c0Y\x8f\xe1\xde\x86\x11nZ\xf6\x18\x82\xc6\xd8\x0c\xf5\x08\x86\x11\x0d\xdax\x06\xe3\n4\x19\x9f\x01\xe62@\x83\xd1\x08\xdd\xeac\x0eC4\x98\xf6*X\x8b5Z\x8d\xd2`\xe7\xdd\xec\xc6ip\x18\xa8\xc1\x93\x9eq\x86jp\x1a\xab\xc1\xbau\xc0\xe9\xa3\x9f\xd1p\x0dV\xe35x2J[lr\xa4!\x1b\xa6\x1a\xb3u\xf8,Se4j\xc3\x0c\x83\x1fa\xe0\xd6 \x93&o\x9d\x91\x1b\xac\x86n\xf0\x1c\x82\xc3\xe0\x0dV\xa37\x84t\xa25~\x83\xcb\x00\x0e\x9e]\xcch\x08\x07/c8x\x12\xa6]#\xa3\x0c\xe5\x1af\xc1v\xcf\xf0\x1c\xe1\x84#\x17\xb4\x92\x14lD\x05\x1f\xbf`>\x82\xad\x1d\x99v\xe3\xd4\xe3\xb8\xbf\x1c\xe8Nw$\x83\xe3X\x06\x0f\xd2\xffKC\xfa\x1cG4\xf8\x1c\xd30\xea\xa8\xfe\xa2a\x12\xe2%f\x92\xaf\x08*\xd8\x0dw\xc4mHn\xab\x06\xc7\xc4;\x91\xbc\x086\xf8\xe0\xfc\xe5)\xec\xd3\xf5:\xc37\xa8\xbe\x80\xa2\x8a\x92ey\x83\x0eK\xba+p\xc9\xae\x81\xd6\x83\xfdf\x97R\x9c\xa5%\xc5k.\xe3s\x9c\x0d4\x81\xd0\x9a3\xdd\xc9\x157\xd1\xd6\x1dTEX\xb4\x86\"&\xdc\xc0\xf8/\xa3\x00\x88\xd5\xd2\"S\xbd'\xcfI\x1b\xa5\x04X\x96\x00LU\x05<\x97\x03\xb8\x96\x04\x98\xa5\x85}i\x80ay@P\x86\xc8\x84\xa5\xa2S@g}\xb6>!i\xce\xd86b\xf3k\xd4\x7f\xaf\x15\xe3\x9f\xda\xd5\x7f_\xdc\xf8\xa9\xd9(\x11\xf6\xd0x\xde\x7fa\x1c\\\xaf\x8c\x9f\xe7\xd4\xff\x95q\xf0|i\x9c\xc1\x81\x90L\xa4\x8e\xa5$\xd7]\xb5\"\xafg\xe35E\xb7\xcbBS\xc9\xad3\xf2=\xba]\x96\x14\xe5kT\xac\x97l\xdb,\x0f\xb8X\xb2ir7crI\xffX\xbe\xd7\xb1\xe3]+X3\xdd\x16=I7\xe5\xc6\xcf\xcd\xd3>\xcb\xc4\xcf=\xf5\xbe\x93o\xd0\xd1\xf8\x08\x84\x14~Xvu4\x8d\xdc$$;\xcf7\xc4[r\xa6vu\x85q\x9a\xdcx\x06\xdd\xa9\xa3\x92\xb7\xa9c\xc9\x98\xfc_\xe3\x03)\xf9\xabqW\xb8V\xac\xd5\n\x8e\xd2$xI\xf9-(h\xe6d\x8f\xd2\\\xd2-\xabG\xc8/\xf8\xdf\xe2\x0c\xdc\xff\x0c\xf0\xcd\x80\x8b\x03*\xe8\x9dv&\xb2\xc3@\"\xc7y\x98\x7f\x1e\xb2\xf4\xe7*]\xa7\x86Ip;\x1d\x06h\xd8\xb1\xcb\xdai\xe51Wz\xdf\xa8o\x99t\x0e\xbfRi\x8eu\xaf\x85\x91\xfa];L\"\xde\xd2$X\xd4\x83V\xdc\x83Y\xab\xb0\xe5wk5\x0b\x0b\xad&\xed\xc2\xd2\xc4\x91 4v\x13\xf4\xf0L\xd9 =Tr_\xf4\xfe\xea\xbf9\xc0\xe3\xa8\x80\xe1q\x01q\x06\x7f\x853\xe8\xb6\x18Ol\xf6\x9dN#\x89\xed\xe3\x87S\xc5\x8f\xfa\xfc\xf69*G\x98\x1fY\xab\xfea9\xef\xbd\xb6\x7f\xaaZxn;Y\xad\xbbd\xc4\xe9j:_-\xfb\xda\xb6\xb3\x8d{\xdbJ\xb7y\x7f[\x9b\xd9\xf7\xf8|\xbb|\xd6}n\xda\xe9\xa1{\xdd\xef\xdc\xd5\x9e\xbcqn\xdb\xf0k\x9e[\xaf\x13Ys&\xc7\x19n\xc3\xafy\x86\xddg\xb5\xe6\xb4\xf69\x04\x0c'6\xc0\x01m%\xe7\xfa\x07\x9e\xd7\xed0\xc7\xb7ty\x85\xef<\xf5\x07m&1\x80\xd9\xc3\xad\xf0+\xa7\x10\xfb\xa7|\x97\x1f\x95\xd2\xa7\xfd\x81g\x87\xff\\\xe1\x92.\xc4\xef=$\xdcu\xcc\x9b3tl\xc8\x18\xf6\xa4\xa4\x80\xf9k\xf8\xfc\xe1\xfcV\x13J(\xd2\x96\x85\xb3\x0cH\xf3\xf6\x95)\xde\x80\xa3\xe7\xe3\xe1\xffh\xf2$\xc5\xfb=e\xfb \xffM\xafm{\xa8\"\xf3\x96#\xe9\xaf\xbf\x1bTB\x89\xe91\xa4\xb4\xf5\x0cd\x95\x8b\xfd\xb3\x16\xef\xed\xdf\xa4e3\x07f[\xcd\x87~\xee=\xe9\xd1\xab0\xa3\xe7^4\x9f2\xe1]7\x93\xcf\xac\xa6\xabd\x81\x0e\x87,M8M\xe5\x82\x07\x92np\xc1\x8e\xfdW\x8cZ\x9e,\xe6\xcd\xd5\x03\xa2A\xcf7t\xf6\x0ek\xdc\x89\xb2\x13\xf5v\xc9\x06\x0e\xa4\xa0'2\xb6\x0c\xd25\xcei\xbaIE\xd6\x9f\x8cSW\xe5E\x1alL\x0fl\xfdoI\xaa\xa2y{`S\xe5[\xfe\x9a&\x9f\x9eN\xfe\x8e{a\x80&\x84\xb83\xb3\xb2\x93\x02g\xe8\x8e\xd1\xa7\xe9L\xcf\x85\x86\xe3\xdd\xd7A\x87]\xb01\x9f\x9f^<\xfd\xae\x87\xbd\x1d \xdc\xe2\x80\x1c\xbd\xe4\x12\xa4\xb9\xb8F\x88\x02\xc6t\xe7\\\n\x81qm%\xce\xd7K\x19\xa9\xddg\xa5o<\xaby\x9d\xb4\xb1\xcb\x00G^\xf1A\x96D)\x01e\x19$\x05)\xcb\xc7b\x05\x89=\xa8\xc6#\x1e'\xe8\xac\x94\xb4\x93\x1f\xca\x1b\xa95!_\xbf\xbd\xbf\xd1\xf4:\x185\xa0\xce\x05\xd42\x1c=\x15\x9a\xe8\xea\x12\xf3\xea>\xe7/O\xeb^:\xa1\xcf\xb2\xa5\x14V\x04\x0e\x05\x7fT\x17\x10\x94i\xbeU\x8bQ\xbc\x02\xb1\xc2\xbc\xec\x8eDS\xe0\xf51G\xdfZ\x9d\x97j g\x92\x07uW\"\x11\xb5\xc2\xea9\xdc\\5\x85\x15\xca\xaf\xea#G\xe2\xb9\xc0\xf9Z\xa2P\xa8\x1bL\xeaP\xe9l#J`\x83\xb2\x12;7\x00?\x8a\xf8\xf6\xfc\x11\x95\xbb\xe0[P\xe8\xb36\xa2\xbcF\xe7U\xffGJ\xact\x07\xc0\x85Ek?k&\xba[\xfdj0\x08\x9f\xf0\xd7\xba\x91\xb6\xc2\x9d'\xe7\xb8`\x0bf\x1d\x1f\xee\x926\xc7\x90\xb6\x9d\xbe-\x0c\x8e$\x18\x7fC\x98p<\xf50)1\xdc;\xa2\xc0\xf3\x98\x02\xc3Q\x05\xdec\x1bud\x0d\xb0t84\xc3\xd1\xd5\xc2&\xb7\xbb\xe6\x00\xb7\x1da\xeeu\xdfY\x82\xde\x0b_\x0ck\xea\xca\x0f\xb7\x9d\xb4\x96\xfe={\x07\x87\x9bd\xd2\xfdg\xbe\xadb\xdd,\xfe\xdb\xc5\xbca\xfc\xc79z\xd3\xd8\xf95\xef\xc6\xd1n\x1d\xcf\xcd3\xa0\xb4\xbd\xfe\xea\x1c]\xa6\x8b\xb4\xc9*Mg\x90\xde\xd4\xdf\xe9\xa0\xf9\xa0\x97]S\xff9\xcd;[t\xd1\xdb\x05^'@t\x19\xfc\xe3\xbb\x0c\xf4;\x88K\xd8S\x92\xe7X\xa4>\x8e\x93\xecFc\xb8\x9f\x84\x9f\xc90\xde\xdb\x18\xf7\x9br\xa6\xbf\xa0\x81\xf1Z\x03\x8el3\xfb\x810\xf5\xc2\xd6C'_rL\x07\xc5\xf4:\x177\xb0]\xde\xe0\x9eF:\xfa2\xd7\xdf\x7f\xad\xab\x9dk\xa8>\xf65\xd7f\xd0\xda\xd8\xd8\xd2OH\x81\x17\xa2\x9e\x1f[\xf0\xa7\x0cA^V\xe5\x05E\x14\xff%\xa5\xbb\x1f[\xf9\xe0\x1e\xab~P\xa5E\x05\x1aH\xbc\xb2\xaa\xb7\xf8l\xcc\xca.\xf0uZ\xa6$\x1f\x14\x1b\x86i\"RpP\xe0\x16\x0fhq\xbd\x86s\x86q8\xa9\x8a\x82\x0bi\xe8<\x9aU\x933*o\xdeN\x8eL\x9b\xbfI\xe9N\x1e\x93\xa2T\x86\xeaS/Z:k\xf6\x1d\xeb(\xcb\xc4\xc1\xf3Q\xb6\x13S\xca\x06\x95\xe6I\xc1\xad\x8cx\x0d\x88\x02F\xc9\xae\xeeu\x97f\xed\xe3\xf1\n\xe3C\xda\xad\xef\xab\xf0\xbd\x13\xa7\x07\xb7+\xa0=^\xc0\x8f\xe4\x06_\xe3\x02J\xb2\xc7\xad\xa9G\xd9\x96\x14)\xdd\xedK\xd8\xa3;Hv\x84\x94\xdd \xdeo:\x9cU\xa6\x00IQ\x9aC\x82\x0b*\x9f\xe8Z\xcb\xb7\xce\xf0b\xbb\xe0\xb5?\x19S\xaf\xcac\xb1\xc0\x1e\xcb\x82\xfcm\x84\xab\x02\xa3\xab\xe6\x8d\xa0\x12\xce9SK\x0c *qy\xdc\xe1\xd1\xbb\xba\xfet\x9bGe\xd7\x0e\x83h\x1b\xbf$\x93)yi^a\xe5\xd8\xde\x93<\xa5$O\x13>\x0f\x1c\x1b\xe2\xb5\xcc0\x9bK\xc4\xf7\xae\x86\xa9b\x92\xda\xf8\xb7\x98\x96\x82+\xf2\x8f5g\x97|\xcc\xa3n\xcf\xec\xd3eU\xf8\xaa\x1av\xe9\xf8\x02>}|sR`\xa9\x8d\xe6h\x8f\xe5[ty\xfas\x85\xd9\xf0\xd5\x8d@\x88,.\xa9\xc4i\xd7C\xd5\x14\x7f\xefKFn\xdbNH\x06\xabj\xb3\xc1\x85\xf2\xe0/\xe0r\x97\x96\x92f\xd8W%U\xea6[\xd9\x19F%\xedc\"9\x86\x07'\x0fx\xfd\x02\x94P\\,\xb8]>C%\x85\x12o\xd9\x9c\xab\xa3\xf8\xd3\xc77\xdc\xf1Aw\x1cu\x0fQ\xfdjb\xbf\x07qia\xf3\xfes\x8526\xee\xb5\xe0\x8aD\xcb\xc7\x7f\x84\xd8\"\xeb7\xfd\xcc:;\xd9\x12\xb2\xcd\xf0\x82\x8fyUm\x16\xaf\xe4\xb3t\x9f\x1f Z9\xb2rG\xaal\xcd\xd6\x1a\x1bl\x0fO\x82r\xb1\xf8\xb8\xd0\xe9\xf7r\xc4\xb6\xcf1c\x0f\x8f\x9fx\xb0x\xc0\x96|N(\xa0$\xc1\x07\x8a\xd7\x8f\x86^\xab\xf3\x1c\x0e\x8cai\x82\x8f\x81bv\xb0Te\xc5\x97\xf7\xa1\xc0 \xd9\x1fR\xa67\xe6\xfch\xc3\xb0JsT\xdc\xf1c\x91\x8d\xb7\x7f\xda+Y;(P\x82o\x0f8\xa1\xc0\xa3J\xf9k\x86R\x08\xb2ie*4\xd9\xc0\x8b\xfc\xae\x966\xc7\xfc\xc8\xfb\xf4\xf1M)\\(=l\xf29\xc4\x81=&\xd9\xe1=\x86\xcf;J\x0f\x9f\x8f\xc5\x7f\xcb\xcf\xc7\xec@\xcf\x89\xfc\xf5\x98\xaf\x94\x04\xe5@\xf8\xca\xe7#e\xc2\xa9:\x0c\xd8\xcdF8\xe8\x03\x17\xd7\\>\"\n{t(\xc5\xb4sJ)\xa9#P\xb8.(\x85\x1a*aC\xb2\x8c\xdc\x94\xcf\x06\xdc\xff\x16\xce7\x0dml\xba\x0e\x05\xb9N\xd7x]\x93\xcf\xbdIeY\xed\xf1z1l\xfe\"\x87\x1f//?\xc0\x0fg\x97\xea\x11\x93O\x1f\xdf\x88-s\xc7\x9dQ\x08\xfe\xda_x\x97w\x07\xfc\xd3_\x7f\xea!\x03\xa5\xd8\xe7j\x96\xc5\xc9\xc6\xf9w(\xc8\xbaJ0\xa0\x1cpQ\x90\xa2\x1f\xa1\xf6-\xbch\xe9\xdd\x80\n,\x1e\x96\x11\x17\xaa\x04%l/\x12rU\x1d\xea[I]Hd(0\x80\x0d\x82\xf7\xbbC\xd7|\xaa\xf7\xad\xd5\xb8\x16\xcb\x11)2\xd9\xbf\xafI\xba\x06\x94\x0f\x9f\xea\x11\x9d\xf2\x0dV\xe0\x0d)\xf0\xb1j\xc6\xb0!\x9a\xae\xd2,\xa5w\x90c\xbcVR\x9e\x0b\x80\xe2zP\x05\x85I\x99\xfa\xc0a\x1b\x82\xed\x80\x05\x1c}*1\\\xe3\x82Iz6^\xb6 \xd8^\x16+\x02\xe5h;\x1c_\xff\xfcZ<\xea\xcf\xed;B\xb9\xea\x90\x96u]G\xc4)\x95{\xba\xd1aZ\xd7;\x1d3 \xbf\x93\x0e\xeftj9@\x81\x99D\xc5\xc7\xdc\x1a\x91R\xd5A\xe3\xae\xabW\xf8\no\xd3,\xc2\xc3\xf8\xfb\x8d\xbb\xef\xcf/\xf2\xbb\xcf\x8d}\n\xe5\x80\x8aUJ\x0b\xb6\xe8-4(\xd9\x852\xd2\x19\xbfp\x87\xb7\xd9\xce$\x0c\x17\x80\x82\x86\xd5P\x01h\xf7\xa3\xce\xf4\xceR\xf8\xa0\x16_\x96\xae8aR\xee\xd5e\xe1\xd9\xde9\xa0\xe4\xea\xa4\xca\xd9\x7f\xd8\xe9 \xab\xc3\x0eWy\xff0$\x1b\xa8\xa8\xd8\xd6uIT&LZ\x8f\xcfnq\x8e\x0b\x1e\x01(\xaeP\xf5=\x9d\xf5#\x18\xdd\xc6xv\x8b\xd8\xe2\x82'\xcf\xe0\x03\xa3\x86\xed\x14I\x18\xaa\x19\x97\xe6p\xfa\xdb\xdf\x0e\x84\xf4kB`C\x08<\x87\xc5b\xd1\x0f0d\xdd\xa1\xfc\xae\xffg\x94\xdf-XG\xaf\x0b\xb2?\xda\x10\xf2\xa8\xff\xc1b\xd1\x97\xc0\xe9\x06\x8eX\xb3O\x9c\xacKr\xf4\x1b\xd6\xee\x91&\xfeq\xd8\xf6\x17\xddX\x9f:\xc6\xfaGt\x8dF\x0d\x16\x9e\xf3\xb3\x9ea\x0c\x1c[Z\x1e\xbd&d\x91d\xa8,\xb5C\x13]\xb3O\x05\xc5\xad\xcf\xfb\xbdt\xc6\\\x0f\xfaw\x8eA\x7f\xb8\xa3;\x92\x0f\x86-\xfa}M\xc8\xd1b\xb1\xe8\xbfjW\x0f\xf9H\xf3\x0b\x9ff\xce\x06\x1f.\xb0\x06\xe7\x82 \xaf\xce.N?\x9e\x7f\xb8|\xff\xf1Q\xdfH.\x10\x8b\x85\xa0C-\x90\xeb\x86\xff{\xc7\xf0\x7f \xfd\x91\xf3\xa1?{\x0e\xbf9\xac\x16\xaf \xf9\xfbb\xb1\xf8\xa5\xff \xca\xef\x8e\x99\xda\xc0\xbe;\x88C\xf3-*\xca\x1d\xca\x18St\x04\x0e\x07\xdf\xefg\xd0I\xba\xe9u\xf1)\xdf7\x9dp\x12\xf8b\xe3_\xfd\x8f\xe7\x90\xa7\x99.6X\xd3sg\xa5\\r\xeb^rU\xcb\x0d\xa5\xb0\xc1\xea\xae9R\x95T\xbbI\xb3\x8c\xfd\xa0\x1e\xe3\xa9\xca\xce\xf9\xf5Psd\x9e\xb0;\xc6\x82\xff\xc0\x94\x88\x87\xf2VY\x9f\xc2\xcag \xe7\xa7\x8d\xae\x16eyvW?\x19\xde\xbf\xb2\xd4\xea \xa0\x0d\x957}~Kzx\xf2\xb0\x8dL*\xe8\xaa[\xa1\x91c\xb9N\x1el\x08Y\xacP\xc1 \xbe=\xb9[\xfc\xed\x81\x18\xab\xd09\xfb\x8a3\xef\xee\x01\xfb\x8a\x89\xd5\xd6\x0f\x7f\xbcx\xff\xae\xfd\xff\xcf\x9f?\x7f\xde\xe76\xfb\xa6\xb9\x95\xd5\xce\x1c\xa68\xf0\x83Nh\xadUY\xd7\x86\xdbV\x19*\xdaX\x86\x8d)w\xcd7\x87\xd4q\x13\xb2.W\xfb\xb1<\xf7:w\xb9\xd6\x01\"\"\xbd>\xff;\x1b\xeag\x19\xe7\xd5q )\xc6-\xd4\xe6z6P\xc0Pr\xc5\xf6U\xa3\x9eo\xd2\x0c\xf7\xe5\x94\xda}\x1fpQ\x92\\\xb3d\xe5-y\x93\x16%]rNk\x03\xd9\xe5gl\xaa\xd5WO\xed2\x11@\xd3\xdb\x03>\xe2\x07\xcf\xe0\x81n\xedv\x87\xb2\x104?8\x1eb\xe1\xd4\xbeC{\x86\xe9\xdf\x04i\x7f\xd0|\xc6\xa8\xed}e#\xf9|#\x15\xc7\xee\\\x8a\xb9HK\xb8\xc1Y\xf6\xf8*'7\"\xa0o\x87J@*\x1c\xaf\xbf\x14\xbb\x8b\xe6X(<\xbd\x95$\xb6w\xabC\xb6@\xf2- \xb1<\xda\xe8>\xf3e\xaaV\x8a(\x8aF\x9b`@\xbe\xc8\xd9\x8d_\xae0\x90\xf7m\xb9\xc0\xda\x988\xeazU\xc1\x11\xdb\x97j\xa0\x83\xab\x9e\xb21\xfc\xf4\xd7\x9f\x1e\x0d\x16\xe0\xf8\xd9\xed\"\xd7M0\x1f.C\xf4d\xf1\xf4\xc9\xd3\xf2\xc1`\xda\xd4\xbf\xf4Fe\xfe\xb3^\xc55\x99\xb5[q\x9c}\x0b\xb5\xdc\xca\xad\xfd+q\xed:\x869\xc1Y\xbd1=\xd0tn\xb4lk/\x19\x06\x13\xf2xk\xb6\xd1\x92=\xb2{/\xeb\xb5>\x9ec\xa2\xd5\xba\xb6U\x0bl\xb3\x98\xa9\x1b\x87\xee\xf7\xd8\xa7\x02\xcf\xd2Q\xa1\xac\x91Rr\xd3\xd5\xb10]4\xd1t\x1fM\xf7\xd1t\x1fM\xf7\xd1t\x1fM\xf7\xd1t\x1fM\xf75\xd0h\xba\x8f\xa6{ \xd1t\x1fM\xf7\xd1t\xdf\x86h\xba\x8f\xa6{\x1aM\xf7\xd1t\x1fM\xf7\xff\x90\xa6{a\x143\xd8\xedkC\xb0\xd6P\xd76\xda\xb7\xd0h,\xf6\xf2w\x89\xac\xb1\xc0Y\xad\xf6\x81\xa9\xf0\xf2\xde\xbb\x94\x06\xc7\xbe%\xcf+\x8d\xcf\x96)\xdc\xc3\xdfI\x19\xc9\xd2\x92\xdbR\xd4\xdd\xbb\xc3\x0eq,\x0e\x99k\xcf\x06\xcf\x84\xfdX \xea>\x86\xa5\xe1\x95\xc8\xcf\xe1\xff\xfb\x8f\x98%c\x9c;0\xcc\x1f\x04=j\x04\xf7>\x97\xbdD)\xcdD\xf8$\x87\xb4\xdbI|\xc6T)\xf3\x02\xe0{3x\xfe\xa3\x15\x18-\xc2\xea\x00H\xeb\x89\x110\xc6\x1f\xa3Ed\xf4\xd1\x08\x98\xe8\xa9QH<\xfc5\xda\x96\xde>\x1c\x01\x13<9\x02&\xf8sL\x1b\xdd@\xeal\x9e\x1e\x01\xf3\xfa{\x04\xcc\xe6\xf5\x11\xe0\xf6\xfd\x08\x98\xcd\x03$\xc0\xe4\x07\x120\xc5\x1b\xa4\x97\x15\x1a\x0f\x91\x00\xcd\xd5\xd2$1\xc7z\x8b\xb4\xc8L\x1e$\x01#\xfdH\x024\xde$\x01\x0e\x95\xc2\xe8Y\x12\xe0\xa3q\x8c\xf42\xe9\x85\xa9\xf2<\xf5|M\x02\\\xd4L\xf3;\x0d\xd0q?\x94\xc6\xfb$`\x06\x1f\x94\x80i\x9e\xa8\x01:\xae\xd1h\x95\x87\x89^\xa9aO\x03/\x95\x80)\xbe*\x01V'\x8e\x00\x83\xdfJ\x80\xd3{%@cj\xe7\xe0\xef\xc9\x12`\xc23\xb0fN\xf4m \xf0g\x8e\xcb\xcf%\xc0\xc5\x05\xa7\xcfK@\x80\xe7K\x80\x86;S\xbd`\x02\xac\xbe0\x01f\x8fX\xfd\xbb\xd1/&\xc0\xc25_\x1f\x99\x00\x97\xa7L@\xdf_&`\x82\xd7L\x80\x87\xefL@\xb8\x07M\x80\x89MNo\x9a\x80\x99|j\x02\x8c\xb4hV\xe2$/\xdb\x00[\xcf\xeb&`\x8a\xefm\xd8\xc3\xc0\x17'`\x92GnHr\xd7C'`N?\x9d\x00\xa3\xb7N@\xdfQ\"\xa0\xef\xb9\x130\x8f\xffN\xc0l^<\x01\xf3\xfa\xf2\x04\xf8y\xf4\x048\xfdz\x02<\xbd{\x9d\x8f\xad>>\x01:\xe9\xaf\xf5\x08 \xf0\xf5\x0b\xd9\xbd~\x12\x97\x9f\xefO~\xec\xf6\x00\n\xd0\x0chNo\xa0\x80I>\xc1\x01\xb6\x81\x8fP\xc0|\x9e\xc2V7\xb3\xf8\x0b\x05L]#N\xdf\xa1D\xe7\xf0 \n\xe8\x1f\\\xa6\x9c\x1a\x01\xb6\x1b\xcc\xc4\xfc\x9a\x0e.\x99k\xd3\xf9\x9b.\xe5FC\x95\xca}())\xf0\x1a\xda.\x00%\xf2:O\x7f\xe8\xde\x1d\x92Lh=-\xa4\x9c!\xcd'\xfe~\xc8\xf8\xa4\x90\xcb\x85\xf9\xeb\x7fR\x08\x8cie\xd0\x7f\xa1?UV\xb1Z\x80\xa59l?~8m\xc8,\"\x9e\xb6\xd3B\xd6y\xdb:&j\xb5\x7fp\xbb\x15hL\xd4\x8a\x89Z\xffH\x89Z}qb\xb1\xcd[\xdd\x08\xed\xe6'\xdd\xf6\xaa\xf7\xe6\xf5~o\xb7@\xb8\xef\xa4\xe7\x17\xb8\xe7,*\xddv5\xbd\xef\xd4\x15\xac\xf5\xb7\xe3R\xa2\xac\xf2K\x80Ql\x08\xb0\x08\x0f\xd9~\x92D\x13`\x95k\xb2\x9b\xf9\xc8\xf4\x96t\x02\\\xb1\xd1\xf3I=\x01\x1a\xd9'`\x9a\x04\x1c\xa0k^|\xd2\xcc\xc7(i8\xc0c\x94\x8e\x02\xc6\xc9\xc8\x01\x1a\xdd;Q\x83\x8f\xe6\x91\x97\x02\xccRS@Ov*0\xfa\"\x05\x8c\xdc\xe24f=\xc6\xac\xc7\x98\xf5\xe8\xf4xj\xb1\xc5\xac\xc7\xb1>R\x85\xc4\xc3S\xaam\xe9\xed=\x150\xc1\x87*`\x82'\xd5\xb4\xd1\x0d\xa4\xce\xe6c\x150\xaf\xa7U\xc0l\xfeV\x01n\xaf\xab\x80\xd9|\xaf\x02b\xd6c\xccz\xe4\x9c\x8aY\x8fm\x98\xe6\x03\x1e\xa0\xa31\xeb\xd1\xed7\x16\xe0\xca\xf7s\xfb\x90\x05\xc4\xac\xc70\x9f\xb3\x80\x98\xf5\xc8\xc1\xe5\xa3\x16\x10\xb3\x1e\xe9\x04o\xb6\x80\x98\xf5\x18\xe8\x0b\x1f\x92\x1c\xb3\x1e\xe7\xf0\x9f\x0b\x98\xd7\x8b.\xc0\xcf\x97.\xc0\xe9Q\x17\xe0\xe9W\xef|\x1c\xb3\x1e9\xcc\xe9\x87\x170\xc9\x1b?\xc0\x16\xb3\x1e\xef/\xeb\xb1\xeb$j}d\xbb\xc4t\xbdd\x7fI\xe9N\xfa%Z\xb9\x8f=\xef\x93\x12/m4-\xc9\xb2\xd3\x98\xbc{9\x8fz\x8aKm\xb4\xc1\xb0\xe2k\xccy\x84\x98\xf3\x18s\x1e\xe7\xcay\xec\xafR\x9b\xf3|\xac\xe3\xbe\xf4s\xd9\x7f:l\x0b\xb4\xee\xe4`\x07\xbb\xed+\x89c\x19\x1fT\x9b\xe0\x18\x9b\xcd%\x16\x93\xfa\xfc\xdc]\xc2\xc4>\xe0QL\xea\x8bI}a\xae(\xed]}6\x87\xd3\xbc\xae\xa6\xd9\x9cLn\xf7\xd2l\x8e\xa5\x98\xd4\x17\x93\xfa\x02\\<1\xa9O\xe3\xb4\x99\xe2\xae\xf1\xc9s\x8bI}-\x88I}\x10\x93\xfabR_L\xea\x9b\xcb51\x9bSb^w\x84\x9f#\xc2\xe9\x82\xf0t>\xf8\xb8\x1dbR_\x83k\x92\x1b!&\xf5\x85&\xf5\x8d}PMo2u\x19\xe7\xfc\xcd\x82\x1a$-\xd3\xa0\xad\xcaW\xddrZ\xb5\xaf\xc6<\x18\xcb~E\x0ba\xb4\x10F\x0ba\xb4\x10B\xb4\x10F\x0ba\xb4\x10F\x0ba\xb4\x10F\x0b!\x87h!\x84h!\x8c\x16\xc2h!\x8c\x16\xc2h!\xec~\x12-\x84\xff=,\x84\xa7\x1e\x95\xbe&\x18 '\xd6\xfd\xd1\xe31\x9a\n\xc9~\x9f\xd2\xbd4\x17\xbe\xe5\x95\xc2>\x14x\x93\xdez\xdb\x05\xaf\xf0\xdd\xf2\xd0j\x02\xa6\xfb\xc9\xe0n\xd2\x8f\x9flw\xcf\x06\xac\n\x97!\xba\x03\xd1\x83\xb8\xa3S\x11\xf9\xabN\xbfKa\x9c)iQ%l\x12\xae\xf0\x1d\x7fG\x9e\x7f\xf7\x01q\xd1\xb8V\x8d\xea\x8d\x80\x0e\x07\x9c\xaf\x8f\xd8\xef\x8b?\xe1;\xf6_\xb56\xfa?\xf1\xae\x8fy\x97\x8b\xc5\xa3G]\xfe\xe59\xe6j;\xe3\xdfi\xfd\x7fg\xf9\xda\x9b\x81\x9ag\xe0\xb5\xfc\xeb,\x1ei\xa6\x1e\xae\xbd\xb4\x84\x16Q\xb2\xb1\xbc\xf2\xdfs%\xa6f\xb1\xeb\xcb\xafh\x13\x9b\xe5\"\x10\xa6ZE\xa8\xe9a\xfb\x0dF\xb4*\x86\x95Zt\xa3\x110\x18S\xbb\x81\x8d \xf5\xa0\x90\xea\xb26\xc2d\xb8\xd9\xe6M\n\xb4\x96`\xdb\xa5\xfb\xcfr\xa4*[\x80\xa1\x93\xa3grY\x9a\xd9*\x19\xd4\x9e\xe3-\xa1l\x9e\xf9w\xe7/O;\xb8\xaeq\x91\xb2\x13\xb7o\xce\x95fK\xb9\x18`\x87\xf2u\xb9CW^W\xf3\xf3\x97\xa7\xf5lH\x9d\x01\xe5l\xe3\xf0\xfb\xaa$k\x8d).\xf6i\x8e\x01\xe7 a\x07J)Mp\xfc\xbe\xde\xb6\xb9nHG\xd1Iv(\xcfq&>G\xc9\x15\xa6\xa5\xc4\xccFoX\xc6=\x7fCwC\xb4\xdeA\xa9\xef\xf6\xad\xc1\xe3\xbc\x9dF\xa1\x9b~\x9cW\xfb\xf6Jy\x0c\x17\x97/.\xcf\x96\x9f\xde\x9d\xbf;\xbf<\x7f\xf1\xe6\xfc\xff9{\xb5\xfc\xf4\xee\xe2\xc3\xd9\xe9\xf9\xeb\xf3\xb3W\x9ao\xd9\x97\x9a?_~\xfc\x8f\xf7\x1f\xce\xdei~\xe9\xfcY\xea\xde\xcf<;\xe6!\xff\xb88\xa0\x82\xde\x99\xb8\xd2\xfaD<\x80\xe5+2\x82\xdc9\x1a\x11\x06\xe3\xfd9=o\x8d\x14uD\x99\xe1\x9d#\xea\x1b\xc7Eu\xcd\xde\x1fu#n\xff\xf5\xbe\x06\xd3Y\x91^\x83\xea!\xd4\xd78\x10U\xd6\xf4\x83\xea\x9f\xce0\\%J\x0bh\x8a\x85\xf2C\xb8\xdeF}\xf2\x16\x1a\xd6h\xaak\x99kk\xe9\xb4\x06\x05\x16\xe1\xec\xce\x19\x1a\xda6C\xb5\x8a^\xfbQ\xeaE\x0f\x87V\xd9p|3\xd4:\x80\xcf[\x86\xee\x96\x07\\\xa4\xc4\xa5/\x18\x92\x91\xcc\xcb\x95\xe3\x06\x81[\xba\x8d\xaa\x92\xf2\xd4*Xq\x8f\x84&\xa7M\x9d\n\xd2\x04\xdf\x1e\x95\x90\xeb\x8f\xd9\xe9\xb4\x91\xfe\x16x\xf7\xfe\xf2\xecY\xb7\xa7\x8cl\xd3\x84\xcd\x0c7\x06\xd4\xa6qn\xa7ha+\xc9\xbesS\x17bAZ\xca\xf5\x8auG\x1fk\xe5\xe5q\xca7U&\x97,\xdb\x85Hn;\xb9\x83\xc4\x92@9\xb7\xfdKl%>\xa0\x82\x1f.y}\x82\x8a\xe1P\x9e\xdb\xc4\x99\xc5\xc7\xb0\xc2\xf0\x14TvU\x87\x08\xeeh\xc1%E\xab,-\x95\xaf\x10\xb5\xa5\xc2\n\xd3\x1b\x8cs\xa07D\x90T.l\ng\xff\x04\xb8/}\xb3\xb3P\xe6\x14\xd0\x03\xe1<\x94a\x06\xa1<\x91\xe8I\x82x(\x84M\x02\xb8/\xe4f\x13\xbc\x01\xc7\xb3I\xd8\x1a\x05\xad\xad\x9ct\x87\xa9S\x84\xebT\xc1\xea\x12\xaa>\x02U\xbf\\\xda\xdb\xaa\xa3\xa0\xfb\xac\xed\xd6\x1a\x90\xe8\xa4\xeai\xd8\xc3\xad\x07T\xeb\xbf{\xef\xe5\xb0\xfd\xd0Z\xf3\xcd}e1E,\xc4k\xe8\x10\x7f\xbc\x86\x06_Cu\xa2\xe5\xd7t\x01\x95\xed\xe2\xfd3\xde?=F\x14\xef\x9f\xf1\xfe\xd9\xc0\x14\x15 fP\x93\xc0CU\xd2}\xf3E\xee\x9f\x9d\x8b\xa0\x97d\xd0\xdf\xf4tJT\xb7\x10\x8b\xfa\xa3X\xbe\x8dwt \xe4u\x0f\xce\x1bT\xb7\xd6k\xcfM\xb7\xa3\xdeKP\x9b\x9e\xad\x8aq\xea\x91MK+\xb34\xe1g\x12\x0f\x86\xedJ\x01\xde\xa3N\x8b\xad_\x8f\x96D\xffZ\xdf\xa0\xa9\xe3\xa3z\xd4y\x1d\x1c\xf1\x0d\x9a\xf8\x06\x0d\xc47hL\xb5lL\xa2\xcd\xdf\x1d=@a\xaag\xa3\x11\xac\xf5\x9f\xa6T\xb5\xa9\xc5\xb9\xb1\xae\x8dg\xde\x8f\xbc0\x8c\x912\xa1\xeai\x97$\xed\x9dN?\x16\x18\xa7\x0cQ\xe33\x17VU\xc8\xaex\xc2\xbc\x999\xe0|\xdeb\xbe\x0c\x1d\x983K\x07\\\x0f[\xd0\xf1\xd9:0c\xc6\x0e8\xb3v`l\xe6\x0eL\xc9\xde\xd1q\xcc\xfd\x98\xc5\xe8,\x1e\x0d.\xe7C\x16S\xb2y4\xe8\xac\x8fX\xcc\x9b\xd5\x03\xd33{`\xfe\xec\x1e\x98\x96\xe1\x03\xd3\xb2|\xf4[TK\xe4l\xb9?0{\xfe\x0f\xcc\x99\x03\x04^y@0g.\x108\x1e\xa1\x98\x92\x13\xa4\xdb\xe3\x86\x07(\xa8O\xa6\x10L\xce\x16\xd2 \xd4?=12\x87\x08\xcc\xcfN\x8c\xb3v\x80\xd7\xf9?2\xafH'\xf6,\x8fM\xd8\xe9\x98\x96c\xd4Cf{fb\x86\\#\x98;\xdf\x0849G\xf0\xff\xb1\xf7\xaeMr\x1b\xc7\x9a\xf0w\xfd\x8a\\~0I{\xd84e{#\x96\xbbt\x1c\x8a\xa4\xa4\xf1J\xe4\x049\xb4\xdf\x13\x0e\xed\xb0\x1a]3\x83C4\xd0\x06\xd0C\x8e\xcf\xf1\x7f\x7f\xa3n@]\xb2.\x00jh\xc9\x07\xf8`\x8b\xd3@\xd6=+\xeb\xc9\xcc\xa7\x96\xe7\x1dY\xd2z\xf4r\x89%\x99H\x10K\xd0\x81\xf0\xb5\x12\xd1\xac$\xf0r\xcc\xa7g'\xf9e8\xd1\xe9\x8b2\x95`Bg\xc42\x96 \xda\xeeh\xe6\x12L\xcb^\x02\x94o{a\x16\x13\xc42\x99 zqD\xec\xda\x08o/\xa5f6ABv\x13x\xae\x8bX\x90\xe5\x04i\x99N0+\xdb \xfcW3\xc4\xb2\x9e _\xe6\x13\xf8k\xe1\xcc\xb4\xacYP\xb00\x13\xca\x12\x85_\x04\x9157\n2\xe7GA\xec\xca\x07\x8c\x0b\x1f\xbb\xee!O\xbe\x14\xe4\xcc\x99\x82\xecyS\x90\x9c;\x05)\xf9S\x90\x9eC\x05\x89yT\xe0\xbb\xde\x01/=5\xeb&~\xb5Cb^\x15\xa4\xe5V\x01\xd6\x8c\x9c9V\xb04\xcf\xca\x92\x85^\xe7\x90/\xf3\n\xb2f_\xc1\xe2\xf9\x10\xcd\xc2\x82\x84L,p\xaep@\xb0\xdb\xe1w\xdcQ\x08\xa6\xb3P#S\xd2\xbc\x85:\x14,\xf5\x84\xe12\xe4\xbfk\x021\x97!\xfc\xbc\xbdf-\xed\xdb\x92\xde\xac^\xb3\xd5k\xb6z\xcd2{\xcdB~\xab \x9e3L\xcc,\xef\xd92\xde\xb7\x95\xeem\x993)\x9b#i\xa5{Ks\x18 \xa0\xdb\xe9\xa3\x95\xeem\x8ach\xa1S(\xb3Ch\x813h\x81#\x08Q\x18\x19]>y\xdd=\xd9\\=q7O6\x17\xcfJ\xf7\xb6\xd2\xbdMp\xc5\xacto\x88\xa3e\x89\x93%\x85\x01m\xa5{\xd3\x9e\x95\xee\x0dV\xba7\xc7\xed\x10s|drz\xacto\xf2\xc9\xe9\xceX\xe9\xdeV\xba7SJ\x9a[\"\xc1%\xb1\xd2\xbd\xcdw8\xcc\x1f\xdd\xa8\xa3!\xe6dp/\x84H\xa0{3c\xc3S3\xa9M\xef\xc5\xe9K\\t\x83]N\xbdz\x16\xf4\x1f\xd2\xa0\xfc\xd5\xb3\xb0z\x16\xfee<\x0b\x0bY\"}\x92\xe6\xf8\x17\xe6x\x14\x0c\x9e\x0b0\x94\xadJL\x9c@\xab\x89\x96\x8b\x97\x0d3\xd2q\x160^\x00\xcaz1\x96\xe6rE\xa0L\x11h\xe3\xc4\xe3\xcf\xea 1a@\xa8\xbd\xf2\xe7)\x8c\x18\x10`\xc5\x80@k\xc5\xe3a\xc7\x80\xe4J\xe6`\xc9\x80(l\x96\x97-\x03\x02\x8c\x19\x00)\xac\x19\x10\xad\xf1\x02\x0e\x0dw\x9a F\x0d\x9bG\x03\xa6ri\xe8\xf5G\xd2\xd7\xe6\x93j@h\xba\xd8\xe4\x1a0\x91`\x03\xfc$\x1b\x10$\xda\x00\x1f\xd9\x06L'\xdc\x00/\xe9\x06\xe4$\xde\x80\x90\xc6\xf1\xeb\x1b\x8fZ\x85\xd8*\x8e-\xba%\x84\x1c\x880\x99\xdf\x8e\x92r\x80\x97\x98\x03\xc2\xe4\x1c\x90\xbf\x91\x89D\x1d\x88$\x97\x8f\x04y)D\xd8\x01\x1e\xd2\x0e\xc8M\xdc\x01\xe1\xbd-\xbc\xbb\x85I< 6\"\x10Ko\xf1\x11z@\x06R\x0f\xc8D\xec\x01\x89\xe4\x1e\xd8{8\xc1\x07xI>`\xe6\x99'<\xf5\x97\x92NZ\xe2\x90\xddi)\x0d\xa5%n{\xebPQ\x82MG \xc1f/\xa4\xa5\xd4$)\x82J\xedO&K\xa5\xf6\xc3B\xaaJ\xbdT]9\xe1|\x95\xb0b\x14\xe9\x0bd\xc5(V\x8c\xe2\x97\x88Q\xe0\x83\xeeA\x07\x82\xd8\x84\x83J\xc0\xdb\xb3\x17\xaadym\x05|C;\xee\x87w\xad\xa3\x13\x1e\x1cR\x17\xd5q\xc7\x15\xa9X\xe8j\xf7\x14\xbd\"\x85\xb1\x0dV \x0ej\x86(\xed\x93\xcb\x8a2\x03\x00\x99\xc7\xf54\x81\n\x13G\x12P\x93\xc8\xb2\xec\x86\x0ev\xa9B\xc5\xe3\xb5\xf7\x93\xcb\x98\x0c\xa5\xf8\xc0\x94\x10\xc0\x10\xa4\xde\x9cev\x86a\x95\x04\xb3s2\xb4\x12\x06Wb\xf0J\x10`I\xafn.\x90%f\x11\xc22\xa0\x05\x91&a\x10/\xd4\x92\n\xb6\x84\xce\x04\xf9\xa0\x96\x08\xd82\x11n1\xbeF\xf0\x96\xa5\x88Kp\xfe`\xa8\xcbt\xdc%\x88\xbc\xc4\xb0\x97\x00\xfa2\x0b\x7f !0\x991\x98\xd9\xb8o\x00\x89\x89.\xf7\xf8\xda\xcc\x8c\xc7\xc4\x11\x99\x10&\x13Ee\xee\xa4\xc1\xf3\xb1\x99Dt&\x8e\xcf\xf8\x11\x9a;\xc0h\"\xdbel\xc3\x8c#5\xd1Q\x82\x18Z\x13\xc6k\xf2 6\xf90\x9bt\xd4f\nn\x13Bn\x82=\x1c8\x0dZ\xb3i:a+\"\xe4\xbf\xcc!\xcaH\xde*\x1e_>\xa6U\x0de\xd0t}\xd3\xd2\x9dn\x95\x0fkC_\x0e\x07rU\xd6\x1c>r\xd0\x86\xf1\xa7\xe1|3\xbe\x92\x8e,\xd4\xf4s\x7f\xf1\x91\xdeN<\xc3\xfb\xa8\x88\xff\xcb^ J\xbe:\x8b\xb1\xff\x94\x89\x05\xa4\x93&\xca\x19\xb9\xa2o\x85\x9bu#~\xb7\x84\xfc\x8d\x9d~\xf8\xe7L\x1ck:;av=P\x1e\xce\xcf\x11\n\xed\x93\xbe\xe9Ij\xdeW\x1c\x94p\x167\x17\xcf\xdb\xc3\xffC@2l\xf8T2\x87\x96\x83pi}\xab7\x95k\xc1\x0b.\xc4^\x85\xecX\xd8\xd1\x9e\x1d2;\x95\x89\xd2\xc1\xb1V\xa8\x19\x87\xe0>\x95]J\xea\xb1(R;\x117F\x94VY\xc3\xd5\xdb\xb3\x17\xe3!Y\x86Ou\xf0\x89\xe3v\xa6y[4\xadx\x91\x87v)\xdf\xb8\x8a\xb8\xba&\x9d0\x90\xf5f\x1amSo\xbek\xf6c\xa5\xd0<\xef\x96\x1e(_\xe6\xdf\x90v\xe8Y\x1f\xef\x80\xd1F>=\xec\x80>\x15c\xe5\xc1\xee\xc4\x0c\xdbVM\xf1\xd1<\xbcOZL+L\xb7\xc2t+L\x97\n\xd3\xa5Q\xfb:8\x9dJ\xb3t\xe1:?|\xf6n<\x84:\xf3^?0\xa6\x1e\x13\x91\xc3!~$t\x0e\x82\x93\x8e\x7f\xb8R7\xb9#\xcaK\xd3^\xe1\xb3\x82\xe7uJ\x83B\xe4[r\x08\x83}8(,V\xf0 \xc8\xea\x9e\x00\xfb_v\xba7j4*\xefh\xcf<\x85\x972\xae\xff\x9d\xce\x89\xa1\xf7\xd4Sxn\x9fc\xd8\x8e\xf1\x1f\xc7\x8e\x1f\xfe[\xeek\xba\xa6\xd0\x1c(\x87\\\\H\xc4\xead\x8f@R|\xac\x9bO\x15\xdd]I\x81\x83 \xe8zz\xc0\x0eO\xb2\x00\xf3,\xa2\x0f\x9e\xa7\xa8\xa2\xd9\x1f*\xda\xdb\xe5\x04\xa6\xa2\x84\x99\xf4\xc9\x98F&\xadm'\xa8\xeeND\xf8\\To\x02\n\x8c\x17\xb9\x0c\xa5\xc3'\xf9\x024\xce\xc6\xded]\x03p\xdb8T\x02\xe6\xe2\xf7\xdc\x89\xffL\x1e'\x0f\xc57\x8am \xd1l\x12\x85\x87\xf4\x9f\x7f=\xcf\xf8\xe7\x17?\xbcy\xa7\x150I\x8fA\xd0@\xc5\xf4\x99\xec\xa1de\xc6\x1eQ\xc3\x93\x89\x8a\x0dR\xfa\xd5\xa3\xdc\x00Sp\xb2\xea\x135\x1bx\xb4\x9b&m\x86ZC\xc0\x15G\xa9i%\xf8\xb4\x19\xbc9\xd0z\xc4\x80I\xab\xf7@K\xc9\x8e\x9f\xe9:\xa6\x14I\xbd\x83\x96\x16\xb4\xbc\xa1\n(F\x8b\x17\x83eW`KY9U\xc3\x965\x93T\x90\x1a\xea\x06\xaa\xa6\xbe\xa2\xedp\xe7\xa7*\xabiUQZ V\xa1M\xbb\xa3lM9+\xf3\xd35\x95Y\xd7T\x9fn\xfc}\xcae\x1fk\xf9\x8f\xa9\x8b\xf4\xcd\xdb\x97\xaf\xde^\xbc~\xf3\xfa\x95wm\x8aW\xde\xbf\xe6\xff\x8f\xfef\xff2,\xb8\x88t\xff:\xf3U\xec)\xfc\x9d\xb6\xcd#q\xccdV\x97\xea\x0e\xd5w\xe6\xf8YU\x7f:\xf8\x03\xa4\xf3aG\xab\xf2\x86\xf7aY\xf3tO.\xe6Dz(\x98q\xbd+y\x8e\xf5\x00b\xf1\x17\xc0\xc0.\x07?\xe9-|b\xa7\xd0N\xbb\x18\xc6\xa8\x87S\x0b\xd2\xeaU\xa0\x9fI\xd1s\xd3V+ \x13.e\xe3@\xfb\x10)n\xae,\x8f\x12O:*\x1e\x9avn8\xb8\x03H\xf0\x14q?\x14.\x9a\xdb|\x92\xb9x\x82l\x80\xaf\x1f\x8c\x9fFm\x81_9\x7fJ\xaf\xae\xea\xaf\xb1\x8b\xa2\x80\xb5\x06\xa9_7\x87\x9c\xd6\x89\xb1\x06\x94\xa9\x82\xfa\x9a\xbb\x13\xbe\xdb\x88\xe9*i\x97y\xdf\xa9\xb9\xd5 \x9f\x83^0\x87\x1fe;9\xf6\xda\xb7\xe4fH\xcb\xba\xd1\x8d\xbdXE\xef7\x07\xc2L7%N~\xacVN\xd9\x01\xb9j)\xdd\xc1\xf1\xc0\x0c\xa3c+\\o\x9a\xa2\xbe\xcfE\xe2\x1a@\xda3\xc3>{(\x0f\xb4*k\xaaRY\xd92y\xd4\xd4\x85R\xdbj\x11\xdd\x0e\xe1V\x8aCB\n\xdc7\xbbcE;6\xb2C\x00\x18\x07PDH\x96\xaa6\xdf\xb9$O\x11\xdf\xc9)\xd7\xeb\x07\x8e\x8f5\n\x1fc\xfa\x9c5gX\xc5|\xca\xd8/Ku\xaf\xbd\xe8\xb5\xde\xe6\xdcR\xec\xacIt\xb4\xfck1\xdb:\xb4\xd6 \xb6\xfeB\x13)}\xdd\xc9\x0f\xd0\xcbg\x89!\xc7:,a}\xaea\xea\xab\xedl\xfcy\xb5\x9dW\xdby\xb5\x9d\x93\x16\xe9j;\xaf\xb6\xf3j;O\xd9\xc3W\xdb9\xa3\xed\x9cj\x04*'<\x9b=\x0e\xc4:\xd7^K\x02F\x1d+\x0b1\xd8\xec\x98\x05^M\xbe'\x88\x17\xa4(;f\xc1kM\xbfa\xc3\xaa[s^\xf7IP\xc1\xfaT7\xa6\xb6ST6\xdeA\x8bU\xf5\x17P\xd3A\x15}'\xeaYN5>\x92^{Q\x96(,\xbeq4\xb0)q\xc6\xeb\xe4\xf8\xd5r\x9f\xafT\xe5\xac\x856\xf9d\x84\n\x95\xae\x12WlG\xffv\xa4u\xe1\x10\x0f[BSn\x9b\x96\x87i%Q\x95\xb0#=I\x94n\x84\xda\x18\xb2\x87\x18\x0e&\xcd\xe2\xe4\xe9\x86\x92\xd9\x10m\x02\xebE\x1bI\xc3\xdb\xc2Y\x01\xcb\x82W\x0ejZ\xd0\xae\x93\x04\xa3*a\x81\xab\x14\x1e\xc9\xa4\x06X\x149\x86\xffu'\xba\xe5\xad\xfe\xa2\xcc\xdc\xc3hj\xbe U%\\\xda\xd2 \xcc\x9dGl\x95\xb2\xaf\x95\xb2V\x04\xb9FmJ\xbe)\xb6\xdc\x1f_*\xe7\xb0\xe2\xcd\xe1\xbeQU\x1b\xa72\x9cU\x95\xa8\xca\xf8\xb4\x9fp[\x8b\x7f\xaf\xd7\xc2\xae\xd7\xc2\xc2z-\xecz-\xac|\xfa\xf5Z\xd8L\xec\xdf\xb0\x9c\x01\x1c\xf2\xb3\x80\xc32&pX\xc6\x06\x8e/Q\xb4\x92\xd98\xc2!;O8\xe4\xe4\n\x87$\xbep\xc8\xc9\x19\x0e\xeb\xb5\xb0X13\xb9\xc6a\xbd\x16v\x1e\x17\xb9%l\xbd\x16v\xbd\x166A\xc6z-\xac\xf9\xac\xd7\xc2\xae\xd7\xc2B>\x86tX\xaf\x85\xed\x139\xd4!3\x8f:\xac\xd7\xc2N\xe0W\x07H\xe5X\x87\x14\x9euH\xe7Z\x87D\xbeuX\xaf\x85M\xe2b\x87\xa5|\xec\x96\xac\xf5ZXD\xd8z-\xaczS\xb4k%F\xeb\xd7\x8cKM\xd2\x9aq\xf93\xcb\xb8\xb4\x036\"N+\x95r\xf96J\xdb\xee\x11\xe4cm\xf7\xb8\xcd\xd6\xfb`\xd7\xfb`\xd7\xfb`\xd7\xfb`\xa7x\x84\x16z\x832{\x82\x16x\x81\x16x\x80\x10\x85\x91\xd1\xd7\x93\xd7\xcf\x93\xcd\xc7\x13\xf7\xefd\xf3\xed\xac\xf7\xc1\xae\xf7\xc1N\xf0\xc1\xac\xf7\xc1\"\x1e\x96%\xde\x95\x94+R\xd7\xfb`\xb5g\xbd\x0f\x16\xd6\xfb`\x1d\x7fC\xcc\xe3\x91\xc9\xdb\xb1\xde\x07+\x9f\x9c~\x8c\xf5>\xd8\xf5>XSJ\x9a?\"\xc1\x17\xb1\xde\x07;\xdf\xd30\x7ft\xa3\x1e\x86\x98wa\xbd\x0f\x16V\x97\x82zV\x97\xc2\xeaR\x90\xcf\xeaR\xd0>\x9c\xeeD\x10\xdf\xb9\xe962\x1b,\xed\xf2\xd7n\x8eJ\xc1rc&r\\@h\xb5\xff\xca\x9f\x01\x11\x0e\x0d\x08\xf0h@bb\xf6\xf8nh\xbd.N\xd4\xb6\x05\xdda\xc2\xb6z\xa2\xdc\x1apW \xdc\xe2\xf1_\x04\x93\xca\xb3\x01\xbe\xad\x0b\x82\x89\x99(\xe7\x06\x84\xe6'D}\x00\x90\x9b\x7f\x03p\x0e\x0e\x08\xf0p@\xac 3\xf88 \xc4\xc91\x168\xe9\"v\x7fn\xae\xd3\xad\xcby:,\x81\x8d\xe3\xb3\x8fPw\x00F\xdf\x01 m\xc9G\xe3\x11\x9a{\x8b\xa9\xf04Y\x03)\x9e\xf6\xb7L\xccxz)\x0b\xe8\xf1`=\xab\xcf:\x1c\xafg\xf5\xf5\xac\xfe\x8b9\xab\xe3\x83\x8e\x9d\x97!\xe5\xb2\x05\xa9 \xdf\x9e\xbd\x90\x92\xd4\x0d\x0b\xf2\x9f\xfa\xbd\xa8/\xc6\x9d1\xe5RTab\x0d\x9a\xe0+]\x83\x84\xaeC\xc5Q\x80\x19\x17\xa1\xca\x0fmm\x98\xc4\x92\x95|\x0b*z\xeb\xe1\x9c3\x7f\xd0:\xf9\xb9\xdfu\x18D\x00fb\x00\xb1SE^\x1c`)\x12\x900\x1a\x11, ;\x1a\xf0\x05\xf1\x80;B\x04\xe6`\x02_\x08\x15@q\x01\x1f2\xb0\x18\x1b\x98\xa5\x1c\x12\xce\xed\x90\x80\x11\x84Q\x82i8A|Mg\xc3\n\xbe(Z\x90\x88\x17\xdc)b\x10\xbe7o\xf2\x9b\xac0\xad\x9b\x00\x17h1\x99#\x12J\x1f\x16G0]\xab-(o\xd5\x9a\xab\xd6\\\xb5\xe6/Mk\x06\xb5\x96q\xef\xaa\x9c\xd9\xe2\xec7\x9c\x7f\x99BU\x14\xacR\xe3\x88\x15L\xaa\xae\x99\x9as!\xc5\xa0\xeb~\x9a\xde\x9d\xee\"\xb6\xef\x83\xb55a^W\xf1t\x88\xd0X\xb2\n{\xf3\\?,\x9eY\x88!Z\x8c\xf7Bb\xf1\xb8\xd7\x12G\x8b \xe83\xab\x0e\x07\xfc\xa2b\xf9\xa6q]\xb1x\x12JE\xeej3\xca\x9cz\x811\"\xc2\xc2\xc1\xb2\\fl\xce\xa0\x19w\x1a\x1b\x02r\\ml\x08\xe4\xd7\x1c\x9b\x13\xa3\x9fw\xdb1\xac`\xaezV0w\x05sW0w\xb5\xb2W+\xfb_\xcc\xca\xee\x91\xc8\xc9\x14\xa0\x027w'a\x14/\x86\xbdx\xb2\x95\x9e\x8d\xf5\x91\xdf\xaev\xa4\x12\xbd\xac:\xab\x92\\\x95\xa4\xf6K\x8a\x1d\x89k\x16\x08\xb1\x81\xe8\x9f?6\xbfO\xb4\x1e\xc7\x8f\x84\x8e\xfe\xe5i4\x0bC\\\x15\xd9\xaa\xc8VE\xf63Qd\x96N\x99\xa3\xcbf\x1c\x8b\xdf\x8d\xecA\xce\xe4\xd7i=\xa2\xdc2\xd6{\x1a\xbf\x0f\xce\xea\x83p\xf9 \x0c>\x93x{p\xfc3\x07G\xcfU7=\x9bT\xf4\xd0\xd3\xdd\xc3\xcdW\xf6G\xa75\x1cX\x87\x95\x05=\x81\x9e\xb2\x15p\xec\x8e\xdc\x809\xb4\x94)\xe3\xb2bu\x91wEo\xcb\x9a\xb4\xb7@\xaa\x8a\xb7\xd7&\xcdQ\xd6\xf4\xad]\x0c\xfd|\xa0E\x0fe\xcf\x14\xe8\xb1\xa3\x8a\x1eJ9\xc7\x9bKx^\xdf\x0e\xf6\xa4\xb8 \xfe\xfd\xdb\x1f:\x01(Y\xd2\xe4\xbd\xf3v!]qM\xf7\x14>\\\xf7\xfd\xe1\xc3\x89\xf8\xff\xee\x03w\x8e\xd7\x8d\xfc\xf5\x84\xcf\x14\xa6\xdb\x1b>\xf3yK\x99\xf9y<8\xdd\xdd[W\xcc\x83\x98\xcb7\xdc\x02&=\xec\xc9\xa1\x13\xc3\xcek\xda7\x83\x87\x92+\x11i\xb6\x92NZ\x07\xddS\xa7\xf7\x7f\x0d\xa7\x97c\xdd\xd8p\xa9\xab\xfe\x87\xea\xb3?\x92\xae;\xee\xe9\xce\xa1\xee\xfb5<\xaf\xe1\xfb\xf3\xf33\xf8\xee\xd5\xb9\xdaw\xdf\xbf\xfdA,\x19qO>q/\xec>\xbf=\xd0\x9f\xfe\xfa\x93%\x0c\x94\xaf\xb8V\xa3,4&\xef\xbfC\xdb\xec\x8e\x05\x05R\x03m\xdb\xa6\xb5i\xa7~\x0d\xcf\x0f\x87\xaa,\x88lsK\xd9\x1ci>\x89\x1d\xb3 \x05[\x8bM\xf3\xf1x\x18\xdc\xb1[\xc2\xf6SQi\xa7*\xef\xdf\xfe\xc0\xcb\xbd&7|\xa8\xf7\xdal\xdc\x89\xe9HT5\xd9\x7f\xdf4%\xdb\xb5mr)\x90\x85\xf2\x05\xd6\xd2\xcb\xa6\xa5'\xea3&\x8d\xf4\xe5\xb6\xac\xca\xfe\x16jJw\xca\x8e\xe7\n\xa0\xbdq\x88\xec\x98\x96\x19\x8e\x14lA\xb0\x15\xb0\x81\x07\xef;\xaa8\x99X{y \n\xd9\x8bw\xf6\xa4&Wn\xfb\xec\x13\xca\xe6\xa1=\xb6\xaf\x9b\x9e\x1f\x0e\xcb\x0e.\x8fu!\xe6*\xab\xa9\\\xd3\xe3)U\x8b\x18\xc0:\xb3\xe1a\x0en\x98\x80\x9a\x0e\xd0R\xa6Q\xa9\xc0s\xcb^\x15\xc0\xcd\x1d\xbe\xed\x0d3|K\xaf\xca\x9a\x1b\x8d\xec\xa4\xea(H\xf7:wW\xdf\xbc\xe33\xbd\x93\x1cg\xfd5\xa9\xed\xf5\n\x0f\xe4VK\xf7\x87\xfeV.\x8d\x87\xb0\xe7G\xae\xad\xb3 y5y@n\xc9\x0c\xc7\xfdpq\xbe\xbaR\x0e:\xba'u_\x16\x06\xdf!\x9f\xeb\x89\x1b\xa57n%\xbc\x83\xfe\xc8\x16\xe1\x96\x02a\x85\x95;m\x1bt\xf6=\xb9\x85\x90msCU\xc5Q\x1eE\x0f\xff\x94Q\xf6\x87\xe7\xf5\xed\x07\xb5avl\xc9\x92v[\xf6-\x9b\xf4\x81:(\xdd\xc5\xa9\xd14q\x82\xbfJ\xefv\xa6a\xb8\x02\x14u\xd8\xba\x06\x80^\x8e\xda\xd3\x8d\xa9p\xa6&_Uny\xc5\xa4\xde\xeb\xa0;\x1exL^\xdfp\x93\xfa\xf1\xb1f\xff\xc7v\x071f\x9d;\xcb\xed\xcd\xb0\xb9\x84c/\x96\xb5Z:\x1d\x8f\x90\x1aY\xbfx\xd4\x18\x8f\x10\x11\x87\xdc\x81\x07\x9f\x95#:Z\x97\xf8\xea3a\x93\x0b\x9e<\xe5qh|\xa5\xc8\x8a\x91\xa1\xe3\xca\x1a^\xfc\xe67\x8e\x92\xfe\xb6i\xe0\xb2i\xe0\x19l6\x1b;\x00\x85\x15G\xea[\xfb\xcf\xa4\xbe\xdd\xb0\x82\xbem\x9b\xfd\x83\xcb\xa6yh\xbf\xb0\xd9\xd8\x1a\xb8\xbc\x84\x07\xec\xb3\xf7\xbcZ\xe7\xcd\x83_\xb1\xef\x1e\"\xf11\xee\xb7\xff\xc0\xda\xfau\xa4\xad\x7f\"7dVc\xe1\x19\xdf\xeb\x99\xc4\x89m+\xbb\x07\xdf6\xcd\xa6\xa8H\xd7\xa1M\x13E\xb3WE\x8d\xb5\xd7\xedR\x8c6\x0f\x8d\xfe]\xa4\xd1g\xb7\xfduS;\xcd\x16\xe5~\xdb4\x0f6\x9b\xcdCw0E\x93\x1f \xbf\xf0a\xe6\xdd\x90\xd2\x0b\xec\x83S\xd1 /_\xbd{\xf1\xf6\xf4\xec\xfc\xcd\xdb\x87O\x9d~\x18'\x02&Z\x08\xc7\x9a\xff\xfbH\xf3\xbfk\xec\x96\xf3\xa6?}\x06\xbf:l7\xdf6\xcd\x7fn6\x9b\x7f\xd8\xaf\x90\xfa\xf6\x84\x99\x0d\xec\xbd\x83\xd84\x7f$mwM*\xd6)X\x05\xdd\xc6\xdb\xe58\x85\x94\x97V\x11\xef\xeb\xfdX\x08\xaf\x02\x9fl\xfc\xad\xff\xf1\x0c\xea\xb2\xc2b\xc7\x90\x92\x8d\x99r~-p\x85Ao(\x83\x0d\xb6\xb7\xe3\x96\xaa\xb4\x1a'\x87\xdc\xde*4\x8amV\xba\xb0\xfb\xc8\x96\xf9\x98\x9d16\xfc\x07fD\xdc\x97\xb8\xe1\xb0\x0b\x0f^W1>\xba\xb8A\x95\xd5\xd5\xad\xb2\x91\x9d#\xcb`\x9e\x00\xb9\xec%\x96\xcbOI\xf7\x1f\xdf\xd7\x85I\x03]\x15+,r*\xe7\xc9\xbd\xcb\xa6\xd9lI\xcb+\xfc\xf9\xf1\xed\xe6\xef\xf7D[\x85\xcdi\x1b\xce\xbc\xb8{\xec-\xa6V\xb5\x1f\xfe\xf4\xee\xcdk\xfd\xdf\xcf\x9e={f\xf76{g<\x95\x89\xbd\x9d\x87\xbf\xcb\x8dNX\xad\xc7\x8e*\xd8\xf3\xeaX\x91V\x97\xe2~\xcc^\xdc\xd1q\x93:\x19C\x1a\xe5l?\x91\xfb\x9eq\x96\xd36\x10\x9e\xf1\x03\x1f\xfe\x8d5\xf5\x83\xf4z\x0f[\xae\xdeq\x1b\xb5\xb8\x9e:\x06\x18)>\xb2u5\x9a\xe7\x97eEm=\xa5V\xdf\x19m\xbb\xa6F\xa6\xac<%_\x96m\xd7_\xf0\x9eF\x03\x1d\xe5kl\xa8\xd5[_\x87u\"\x00R\xda=\xde\xe2{O\xe1\x1e6w\xcd\xa6lD\x9d\xef\x9d\xb8Rxm_\x93=\x93\xf4\x7fD\xd5\xfe\x88\xbc\xc6jk\xbd\x15\xaa\xf2\xe9\xa54\x1c\xcd\xb1\x14cQv\xf0\x89V\xd5\xa3\x8fu\xf3\xa9\xe6\xab\xe8Z\xc4U\x1f\xbb\xbe\xd9;S\xd1\x9c4'V\x0c\xbb\x98Ibyk\x05\xb2 R_\x01\x11\xd3C\x17\xf7\x81OS5S\xae\x9bj'C2\xc6\xd2\xf9\x89_\xce0\x90\xe7m9\xc1tI\\\xf40\xab\xe0\x01[\x97\xaa\xa1\xceQOa\x0c?\xfd\xf5\xa7\x87\xce\x04\x9c?\xba\xa6pl\x80ys\x99\xa0'\x9b\xaf\x9f|\xdd\xdds\x86\x0d\xbc6,\x86\x9f\x05\x9d\x1a\xd2\x9d!?Aok\x88\xe1t\xd3=\xb2\x12\xa8\x9b\xe7\x90M\xcer\xe9QH/pV\x89\x1dJ\xb2\x02{!h/'\xb8\x97\x11\xde\x0b\x00|\x8b \xbe| _\x0c\xe6\x9b \xf4\xe5\x86\xfa\x02`_n\xb8\xcf\x0b\xf8-\x86\xfc\x1cy\x04\x05\xfdr\xc3~\x8b\x81\xbf\xec\xd0\xdf\"\xf0/?\xfc\x97\x11\x00\xcc\x0d\x01f\x04\x01S`\xc0\x8c@\xa0\x1f\n\\\x06\x06:\xc20p0\x11\x1e\\\n\x10:\xe2\\\xc0p6d\x88\x82\x86\xc1\xad85[\x12\xd9\xa5g\x82\x87\xae\xe2R`\xa2\x05\x1f\x86k\x90\x19B\xc4@\xc4,0bf \xd1\x85\x12\x17\x83\x89\x86\xac\xde\x01\x16\x97A\x8b\x11\xbc\xcd\x0b/&\x00\x8c(\x122\x01d\xc4\xbf\xff\x07\xde\xf6YPcj\xe3cpc\xb8\xa5Q\xc8q\x12\xe8\xe8\x1e\xb1\x17\x02\x8f\x11\xe81\x04>\x86\xe1Go\xaf\xa4B\x90q\x10\xd2\x85!\x17\x01\x91IP\xe4\x1c0\x12\xef\x8a( \x99\x0d\x92\xf4\x94o\xcd\xa4\xac\xc0dvh238\x99\x17\x9e\x0c\x00\x94.D\xe9\x82\x94\xb9`\xca\x8c@en\xa82\x15\xacL\x80+\x93\x01\xcb4\xc8\x12\x01-1`+\x1d\xda\n\x03\x97\xc9\xd0e\x12x\xe9T>'\x80\x99\x1d\xc2\xcc b\xe6\x841\x97\x8dw\x14\xca\x8c\x83\x99#A\xc0\x10\xab\xad\xd0A~\x14\xe6C\xfa\xb9\xecz\xde\xb1\xf2\x17\xf9\x05F\xd2a\xb1\xb7\x0cT\x1dfh\xe2\xf0g\xa9\n\x154:n\x15(\xd6\xb82y\xccK\xd3\xf8\xf93y\xc4\xd1\xf4\xb4\x1c\x01\x13N\xc7n?V\xf5|W\xd6\x05\xbf\x99\xb1\xdb7\xdd\xa3n\xf7\x11~\xbb\xf9\xfd\xefBp\xbb\x08\xb2\x9d\x0c\xb6\x1f\xb4\xe8i\xa7\xa9\x87`\xe0\xae\xdcD\xc7\x90]\xf1LX\x1b\xc1Xl\x985\xab\xf0\xb8\xec\x05\xb2\xfc1\xda\xf3\x84F\xe3\xb5\xf3\x88Eb\xb7\xa7\n6\xa6\x022\xc7R\xa6\xba\x0c\xfd\x1es^,\x97\xd1\xdf\x87I\xfc]KTpv\xc2\xb4e\xdf6m\xf9w\x9b\x84)}\xee\xf5kH\xf7r\x9f\xcf\x1a\xd2\xbd\xc0\xcf\xb3\x86tO\xf3\xed,\xf4\xecd\xf6\xeb,\xf0\xea\xe4\xf6\xe9d\xf3\xe8\xe4\xf5\xe7d\xf3\xe6\xc4}9\xd9<9kH\xf7\x1a\xd2\xbd\xc4\x1f\xb3\x86t/\xf3\xbb\xa4D9\xaf!\xdd\xda\xb3\x86t\xc3\x1a\xd2\xbd\x86tO\xf7\x9bd\xf5\x9a\xe4\xf4\x99\xac!\xddkH\xb7)%\xcd/\x92\xe0\x15YC\xba\xe7\xfbB\xe6\x8fn\xd4\x0f\x12\xf3\x82(\xf5M?\x1f\xca\x16E\xbc<\x84\x0c;\xd2\xd3G}\xb9GP\xec\xc1\x8f\xc0q7N\x8a\xd4\xc1\x81\xb6\xfb\xb2\xeb\xb8 \xd87@?\xd3\xe28X\xf1\xbd`\x1ed\xfa[*O\xb1\xea\xc7Z\x01+*\x0c\xf0=wq\xbb>\x8e\xf6]\xb1Ou\x9e*\xa4\xd5\xe2\x9d0\x85\xc6\x8a\x1a\xae\xa8\xe1\x8a\x1a\xae\xa8\xe1\x8a\x1a\xae\xa8\xe1\x8a\x1a\xae\xa8\xe1\x8a\x1a\xae\xa8\xe1\x8a\x1a\xf2gE\x0daE\x0dW\xd4pE\x0dW\xd4pE\x0d\xcdWV\xd4pE\x0d\xa5\x11|\x1f\x8dK\xfd\xc3\xe6\xeb\xfb\xfc];\xa0\xd7\x85\xfc\x80~\xeei\xbdc\x93\x82\x03vB\x05l\x1by\xeb3\xd9\xedZ\xda1=#5\x88D\xf5\xa4<6\xa3$\x168l\xae\xa7\xfc4\xc5\x8f(e\xcd\x8d\xce\xae\xecD\x07\xf2\xf7yh\xb3\xf8\xb7\x0f\x99\xe4\xa1\x8a\xdf\x89\x92\xf8\xffM\x0f\xa3\xe5\xb5\xbac\xc6\n\x07\x05\xd5\xa5 g*\x07\x11\x8d\xbc\xefAG\xf5\xaf\x9c\xbaB\xa0\xbe\xe0\xc5K\xc7\xdf<\xe9\xbd\x10=\xf9\x89'#\x82*\x9e\x10\xeb\x06dES\xc5\x93\x0dS\x15O\x80\x81\x03\x96\xe1\xab\xe2\xc9\x85\xb2\x8a'\xc6\xc6\x01s\x11W\xf1\xcc\xc6]\xf1\xbec\x16o\x88\x99\x03\x96`\xb0\xa84\xb1\x91y\x19:`!\x1e\x8b\n<\x1e\xbcL\x1d0\x13\x9bE\x05\x05\x18<`9j\xab\x84$`\xb7\xe8\x97\xc9x\xaex\x16\xa0\xba\xe2Y\x80\xed\xfa\x16\xba\xa7\xaa\xd9P_\xf1\xe4\xc5~\xc5\x93\x0d\x01\x16O\x1c\x07\x16O64X<~F\x10X\x88\x0c\xe3\xba\x02e\x06\x81T\xccX\x14\xb18\x9a\xc0\xc2\xc4\xa3\xe4\x1c\xe88\x02(\n\x91]l\xbaw\xf0\xae\xfa\xca\xa9\xfc0\xd6j\xafNX{\xf2\x0b\x92b\x02\x9c\x91\x96(]\x93`\x00t\xb4\xde]\xd0\x9a\x1dLv?\xa7\x9d\xdd\xa9\x92\xfe\xfe\xb6i*Jl\xf7\xdep\x0cu~\x0dm\xa9\xefh\xbd{%\n\x13!*L\xc7\xc0\xb0\x1b\x12\xa3\x87\xa0\xebI\x7f\xec\xe0\xc1\xa7k\xca\x9d\xde\xc4m\"\x94\x9d\xb9\xcf0\x01\xec\xebQC\x08$\xfc\"\xd4\xf7v#\xb0\xc6\x19\xcd\x12\xe3n,\xc2\x03\xfb\x13\xedi;\xee\x11l\xaa\xc0\xbe\xd9\x1d+\xea\x9b@\xfc\xc4\xf7\xbc\xaa\xbe!\x15\xa9\x0b:=\xf8p+?\xfc9M'\xb2g\xe7\xea\xc4\xd7C[\xe6\x0b1;$\xf4\"\xf5\x8d4V\x8c\xdd\x90\xd4;\xeed\xe7\x05[\xfe\xa9\xd7o\xce_=\xe5\xf0\xbb\xf8Yb\xdc%\x07sN\xeb^\xa2\x8bC\xa8\x83\x011\x8a#\xb79\xc3\xca\xab\x9a\xf4\xc7\x96\xb2\x0d\xf5o\xc7\xb2\x15\xae\x98\xab\xe6\xaa\xe1\x90\x9e\x07\xb6R\x03\xa5\x94\xe7\xf0\xef\xe6R\\\x85\xc9C\xd1\xca\xba[\x02O\x89\x898\xfcY:DVxj\x85\xa7|\xf0\x14\xa2{\x920\xaa\xf13)\xed\xed\xd9\x0bU\xc90N\xc5\x05\xc8\x8f\xe7\xaa;[\xdb%\xcddD\x89yF\x1dS`qK\xc9\x98\xda\x19TW^\xc5\x95\xa6\xb6\x023\xc5\x1a\xb2\x94Y\"?I\x860\xf9W\xfc\x00\xa0\xec\xb5\xc9\x13do\x802\xe8G\xf8\x87v\xeb\xe3\x83\xef\x01j\xc0\xb3\x07\x83\xefh\xea\xd9\x8b!\x12\xbe\x8f\xee\xc9\x10Re\xea\xbbx$\xdd\\ \x07\x15\x86\x80\xbf\xe3\xe3\x03t\x00\xc2\xa0\x0eD\x80\x1dHli.\x80\x07\xe6\x81<\xa8\x9c \x98<>\x93\xc1\x1eX\x08\xf8\xa0\x02\x07\xd09\x10\xe6:\x0f\xf8\x01?\xf8\x03\x815&\x1e\x0f\x08\x04\xf1\xf5\x91\x0d\x0c\x82\x88u\x0b9@!\x98\x0c\x0c\x01d\x06\x87\xc0\x01\x88 \xd4\xcb\xe1U\xb9\x04,\xb2Di\xb3\xee\xb7\xc6\xd4r@#H\xae\xaf3\x84\x0b\x01$\x88\x80H\xe0\x00I\x90\\\xd7(\xa0\x04\x90\x07T\x02\x04X\x82\xe4j:S`1\xc8d\xc9\xe3\xe9_\x85\x1b\xf8\x94\n6A\x18p\x82\xe0\x1c\x99\x0e<\x01\x06>\x05-3\xd4bJO\x964>\x9fh\xc7\xf3o\xbb\xc5\xd6\xda\x9d\xc3\x17\x1e\xbb.8G=\xb6]h\xe7 \xba\x1eP\x0b/l\xe3\x05\xac\xbc\xe8>\x16[f\xe3[\x19m\xbd\x88\xb5\x17\xb6\xf7\xe2\x16_\xdc\xe6KmuN\xbb/\x9f\xe5\x97l\xfb\xcd\xb4\xfe\xe6\xd8\x7f\xb1\x8a&Y\x80Kl\xc0\xa0\x15\x18\xb3\x03\x83\x96`\xc2\x1a\xcaj\x0d\xc6\x8c \xc8e\x11\xce\xb1 \xef\xc0*\xc4\xec\xc2`\x9f\xc7\xd6nF\xeb0`\x1fz,\xc4\xf4\x9a#\x03\x9b\xc1N\x8c[\x8a\x98\xad\x98^\xeb${1\x9f\xc5\x88\xdb\x8c\xe9\xd5E\xa6\xc7|\xcb\xd1\x11\xa5\xb9+1\xdbq\x9a\xf5\x18\xb5\x1f\xc3\xf3g\x9e\x0d\x89Z\x91NQF/*slL\xfcc\xcd\x12\x13\x0d\xcaZ\xec\xbd*\xf0U9-ZzUv=m\x8d\x9ca^\xe4\xea\xcaX]\x19_\xd0\x95\x81\x9fE&\x9e\x83\xba\x99\x07!\xe1\x11\x9e|\x00:h\x01\x04\xe8'\xf8g\xe0\x0d&\x80\x80E\xf4\xcfG\x9f=\x81\x06\xe3wx\xb0\x01\x04\x03\x0e ag\xc8\x19x\x00\xc3\xa1\xc9\x0e>\x00,\x00A\xbc\x1e\nB\x80`\xf3}\x0d7\x9a<+ !\xb8\x9a\xcc mHv\x97\x12WZ\xcc\x16\xfe\xfc\x98\x95\xa1On^\x83\xe0\xd2yw\x90]\xb6\x06A`\xbb\x7f\x06Obn_b\xaa7\xd1i\x9a\x1d\x04\xd1\xa9\xa1_\xc3!\xe4\xb3\xda\x10\xc6\xf3\xa5m\x08\xaf.2\xe6\xd4\xd5\xdb\xb3\x17\xa3\x16\x14\x86\xf8\xb1\xe5\xaaP\nS\nQU\x94\xad\xcb\x827\xe0~\x87\xcc\xfa\xb0~<\x1e\x0e\xd5\xed\x9b\xcb\xc9j\xd1VA\x13\xa69\xa2\xebL\xcc\x85\x87\xd0\xf1\xd0)\xc4\x19'M\xd9-\xbb\x925a{d%k\x99\xc1\x15\xbd\xe2+[\xfeW\xd3\xbe\xa5\x9fH\x9b\xdeY\x9cO\x8d}w!y\xab\x83\x1d\xd7j\xc2\xe1_k_yI\x8bi[\x0b\xechQ\xeeI5c\x87yI\x8b\xbb\xd9a\xf0\x06zg\x89\xedp\x19\x87D~\xc9\x8el\xb0S\x1fq\xc7\xa5\x12%\xe7Bl\x86N\xcc\xa3)\x9a\xfd\xfeX\x97\xfd\xedEO>\x07\xa7\"\xf7p2\x01MG\xdb\x0b|b\x9a\x1f4\xf5\xb1\x9b\xf4\x05\x1b\xfa]K>\xf1\xa5q\x97\x19&\x1d\xe5\xbe7\x01\x19\x0e\xbaS\xefO7\xd9\x04\xedm\xaen_\xa8>\xd9&\xad\x0c\xe7[X\x97\xc5\xbf\xf8\xb2\x80`\x97\x04&\xa6~\xb2l\xc6_\xe1\xc1\xb1~\xa4v\xbf\xfa\xa1;\xb9\xf4\x8a\x8a\x1c\x98Q\xad\x975\xfd|\xa0uW\xdePNJ\xde\x92\xe2\xe3\x89\xb86\xac\x83\x8ew\x07t\x84c\xb0\xc55->\xc6\x0f\x1a +k\xc6BGzc\xee\xa6\xfa\xae\"\xdd\xf5\x8c\xd8\xcdN|g/\xf3\xa4\xc3F\xf2\xe1y\x04\xb0\x0e\xb4-\x1b\x0f \x85.\xb3\x80\x97\xfe\x92\xdf`\x98\x9cS\x1a:f\x9b\xdd\xf8\xea\xc6\xcaL\xd4\xe7\x16\xef0\xa0\xec\x95\x8d!\xe3{\xcao\xf5*;\xbe\xde\xcaB\xe6=\xc9`\x8e\xaeoZ\x1e\x03a~\xc4\x13\\\xca\x8e_\x02\xa7n\xb4\xab\x8ac\xc5S\xff\x0e\xac?\xdb\x92\xff\xb7X\xdf<\xebM\\\xd9&R<\xcc\x0eiZ\x0dp\xe9\xe4\xea'-\x1d\xcc\xc8Z^\xecAd3\xaeI\x07M\xc1\xafo\xf3!3r\x82\x98\xa7u\xf9\xb7\xb01\x15\x0d\x8b\x99\x11 \xa3\xe4L\xd8\x8c\xd68\x97_~\x9cK\x8af\xb64\xe0\x0cu,%L\xd0\xc1\xc3\xa7\xcf\x8b\xe2\xb8\xe7\xcbv\xf7\xc2:\x16$(a\xec$q\x17zx\x051\xe7\x83\x98x\x03\xc3\x13\xc0\xd8C\xc6\x17\xb4\xf1\x96bl\x03\xe6#=\xf4\xc0o\x81i\x8f\xfcbK\xe0K\x89\xb6'<7|kh\xf4\x9e\xdfb\xa6\xae\xecH\x9a\xae\xae\xe1\x91\xba\xdf\x99\xd5\x1c>\xf1X\xdc\xa3H\xb9\x8d\xb0\x9d\xa3\xb9\x94\x89\xeaL\xa5]\x96\x15O&\x87KJ\xc7\xd7g\x19\xde\xec\xd5\x8bc\x9bj\xa7\x86\x01\x95\xe7\xf0\xfe\xed\x0f\x8f[\xda5\xc7\xb6\x90d\x07<\xf7\xfeX\x97\x7f;\xd2\xea\x16\xca\x1d\xad\xfb\xf2\xb2t\xef\xdf\xb5D\x8d\xd7\xf4\xd9F\xa9\xe7B`\xc9C \xea,nH\x97\x97\xf2\xb1\xcd\xb7\xa2\xc4e\xa6ij\n\xf7\x1e\xdf\x83\xe2\x9a0=B[q\xfd\x7fE\xba\x1e:z\xc5\xb4\xbd\x1a\xfc\xf7o\x7f\xb8\xdf\xc1\x81\xf4\xd7\x82\xe3\xc6\x144h\x0e\xbb\x84\x1e\xb9\xbf\xd1\xa0\x80`\xed\x7f@\xf8\xd5\xc0\xd6\xa7\x1fXa\xde{\xd0><\x14u\xe5\xc2FF\x0f\xd6XKNA\xea\xa6.\x0bR\x01v\xcf0\xa7\xba9a\xdd\xc3w\x93{\x9b{ o\xf0&EA\x0f=\xdd=t1\xad\xd3\x1a\x0e\\\xf1\x16\xf4\x04zJ\xf6\xdd@\x1d1^\xc6.\xeebg\x8d\x94\x17\xaas\xb7\xf1\xed\x81\xda\x17u\xf0 \xd2_\xd3[\xbb\x18\xb6W\x15=\x94\xfcJ\xe5c\xa7n+\xe7\xc3\xca\xce_\xcd%\xbf0\x17\xbeo>\xd1\x1bfu1\x05\xc9\xaf\x1a\xe7\x9a\xd1\x92&\xaf\xd3\xb4\x0b\x91\x17\xf4[\xd7\x84\xf3+\xe6\x87\xeb\xfbG\xbe\x9f\x86\xcf|A\x92A{8\x1e\x9c\xee\xee\x91;2\xf9m\xf1\xadh(\x8fi\xef\x87K\xd1\xfbf\xb8\\\x8f\xdb3\xa5P\xed\xa4\x83\xcb\x86o\xcbO\x9d\xde\xff5\x9c^\x8euc\xc3\xa5n;\x1do9g\xd6K\xd7\x1d\xf7L\xed;\x9f?\xaf\xe1\xfb\xf3\xf33\xf8\xee\xd59Hg\xcb\xfb\xb7?\x88%#.\xfa$\xeeM\x7f\xe7\xb7\x07\xfa\xd3_\x7f\xb2\x84\x81:\x15\xd6j\x94\xc56\xcd\xfb\xef\xd06\xbbc\xc1\xd4\x17\xd0\xb6\x1d\x03A\xb4\x9a\x1c\xd8\xee)\xb73\xb6\x91q]\xa6\xb6\xc8\x82\xadE~?\xffp\xa4\xdd\x12vVo\xf0[\xeb\xf9u\xa6M\x0b\xd7\xe4\x86\x0f\xf5^\x9b\x8d;1\x1d\x89\xaa&\xfb\xef\x9b\xa6d*\xdceD\x12\x85\xf2\x05\xd6\xd2\xcb\xa6\xa5'\xea3&\x8d\xf4\xe5V\xdc\xcb\xcd\xf6\xf3N\xc1\x08L\x01\xb47t\xe7Hkjus?\xb7\xb9\xf8\xc5\xb8\xf0\xe0}G\xe1\x86\xb6\xecx\xa1\xdf\xe9*f\x04\xa9\xb1\x1b\xce\xb7-\x15V\x81\x14\xb7yh\x8f\xed\xeb\xa6\xa7O\xa1gzP\xdd\x19NxM\xe5\x9a\xe6\x96@\xddW\xb7:6\x80u\xa6\xef\xf2\xff%\xd7\xfe\xa3\xccW}\xca\xe5\xfes\xaf\xf5\xf7^\xe1?\xf3\xf2~\xe4\xda\xfe(\xa0\xe3 T\xe1\x1dt\xe6\xf5\xfc\xe3U\xfcX\xff\xf2\xbfI\x18I\\C\xc97\xca\xa6\x15$IL\xca\xff\xfd\xf3;n\xb5\xf6\x0d\xb05\xd32\x1d\xc0\xad\x1c\xd1Ml\x0fSz7`Gr\xa8\xe6\xb9\xb2G&\xc3\xdc\xe9\x86\x11\xa7\x18\x1b\xff\x99v\x97\xe5$\xbb\xc81ra\xbeY\x94\xd3\xe0\x05\xdb\xe8\x05\xcc\xf0\x85\xa5\x95\xcdb\x04C\xc4\x10\x06|\xcc!\xbfA\x0c~t#\xe4\xab\xc4\x8dc\x08u.D;\x18\xf2\x1a\xca\x104\x96!\xab\xc1\x0c9\x8df\x08\x19\xce\xb0\xccx\x86\x8c\x064D\x8dh\x98kH\xc3\x12c\x1a\xeb1f\\\xf8\x0djXbT#\xb2\x04\x00\xe11\xaca\xa1q\x8d\x88c\xe66j`Cv#\x1b\x96\x1b\xda\x90\xdf\xd8\x86e\x067,3\xba\xf1%\x8aV2\x9b)\x0e\xd9\xcdq\xc8i\x92C\x92Y\x0e9Ms\x08\x98\xe7\xb0\xd0D\xc7\xd6\xb8\x87\xae6\xc9p\x87\xc5\xc6;\"\xd05\xe7a\xbeI\x0f\xb8Y\x0f\xb1-\xdek\xdeC\xd2\xfe?\xd3\xcc\xc7\xd4\x9e2\xfc5S\x1f2\x9b\xfb\xbe\x16\xe1\xe6~Jp\xea\xf0Q\x88\xc8%r\xbc\x98\x1eF3\x18\x86w\xec\x18C\xcf\x0e\xc1 \x15\x9b1\x0bN\x10\xee\xbcf'\n\xd7\x10\xf7\x9c\"2T;\xdbY\"~\x9a\xf0\x9e'\xee\xe4D\x118S\x84# \xfd\xe7\x8a\x88\xda\x89w9\xe4?]\xc4\xce\x17\xb9O\x18\x99\xcf\x18\x91S\xc6\xe2sF\xde\x93F\xcaYc\xc1i#\xefy#\xe9\xc4\x91\xf7\xcc\x91p\xea\xc8~\xee\x88\x9c<\xe6\x9d=PA\xc1\xf3H\x96\x13I\xe2\x99\x04\xfdr\xd29e\xf1I%\xf7Y\xc5\x7fZ\xc9|^\xb9\x8b\x13K\xe63K\xea\xa9%\xf3\xb9%|r\xc9~v\xf1\x9f^&\x9c_\xe6\x9f`Pa>\x97\x84x\x16\x9cb\xbc\xe7\x98\xa8I\x11<\xcb\xa4Y\x1c\xf9\xce3\xfe\x13M\xee3\x0dx\x8dBM\xd5\xb0\x7f\xde\xef\x12\x1d\x0csb\xa9I\xad\xffU\x9d\x92\xd6X\xea5\x96:z\xe0N\x8b\xa2\xb6O\xdc]\xe8\xc8M\x991\xc1\xce9\xf6\x91\xfb\x95\xfca\xf2\x99[I\xbc\xdb\x13\xb7\xef@\xb5\xe0\xec\x9a\xf5\x10\x15:@\xe5<!\xf9[\xff\xe3\x19\xd4e\x85N0\xbc|k&\x9d\xf3\xdc\xf5\xe2\xe3\xa0\x83\x94A \xdb\xdbq{WZ\xf2SYU\xec\x07y7\x19\xdb\x12Mq\xf7\x91\xed\xfa1;\x1bm\xf8\x0f\xcc\xb4\xb9\xaf\xae\xbeT6\x01\x1f-\xee\x00\xe5#f\n\x1cTc]\xdd*{\xde9l\x0df\x93\xcc\xf7\xea\xd5\x19\xef\xfe\xe3\xfb\xa68y\xa0PE\x8b\x13\x04\x95\xb3\xe7\xdee\xd3l\xb6\xa4\xe5\x95\xfe\xfc\xf8v\xf3\xf7{\xa2\xc5\xc2.vM|^\xe4=\xf6\x1eS\xcf\xc6O\x7fz\xf7\xe6\xb5\xf9\x97g\xcf\x9e=s\xfb\x9e\xbd7\x9e-\x85=\xd1\xb0\xe5\"7Sa_\x1f\xbb\x81\xc5\xf6\xeaX\x91\xd6\x94\xe3~\xdes\xbe\xb6q\x1b<\x01\xba\xdf\xd2\xddn\xdc\x10O\xe4\xdej\x9dH\xb5\xedI\xe4}~\xf87\xd6\xec\x0f\xd2\xcb4l\xedz'n\xd4\xf2{\x8a\x18\x88\xa4\xf8\xc8\xd6\xdex\xa0\xb8,+\xea\xea7\xb5F\xcfh\xdb55:\x9d\xe5\xc9\xff\xb2l\xbb\xfe\x82\xf7\xfc3x\xe2J\x1a^d\x13@\xbd\xf7u\\\xa3\x02\xa0\xa5\xde\xe3\xed\xbf\xf7\x14\xeea3\xdbl\xd6F\xd4\xfe\xde &\x87\xd7\xfb5\xd93Y\xffGT\xf1\x8f\xe8\x8b\xac\xde\xd6{\xb1\xca\x9f^J\xc3\xd6\x1cc1Be\x07\x9fhU=\xfaX7\x9fD\x06\xf05O\xd2\x96)\xbb\xeeD5\xa7\xd3\x890\xb6\xac9&\x14\x81V$\x9b8\xf5\x15\x101mL\x81\x1f\xf8$Vs\xe8\xba\xa9vF\xd20_\x02e=\xcc=\x90H\x82\x9cz\xa6,.~\x98q\xf0\x80\xad_\xd5\\\xe7\xd8\xaaP\x94\x9f\xfe\xfa\xd3Cdr.\x19o\xb3\x00|\xc8y\xb3\x99\xa8'\x9b\xaf\x9f|\xdd\xddC\x86Q\xfd\x97aU+\x8c\x10Z\xda\x1f\xdbZ\x10\xcb\xaa?\xae\x97\xdb\xad\xe8\xfa\x97E\xd7m\xac;\x11^W\x9fIi\xa1\xabqq\x98=;\xc6\x9e4\x9f\xfb5\x01x9\\\xbe&\x00/\x80\xc8\xd7\x04\xe0i\xb0\xf8BP<3$\xbe\x00\x10\xcf\x0d\x87g\x03\xc3\xf3B\xe1\xd9\x80\xf08\x0c\x9e\x0d\x04_\x13\x80\xff\xe5\x12\x80\xc3eg\x86\xb2] ;\x03\x8c\x9d\x15\xc4\xb67\xc3\x85\x006\x02Z/\x81\xac\x83\x98\xad\x07\xae\x8e\x82\xd5.>\x96\x0eT\xbb\xdf\xfe\x03k\xeb,\x88:\xa5\xb11x\xda\xdf\xb6(4=\x01\x986q\x88\x85\xa0t\x10\x92\xf6\x03\xd2!8\x1a\xed\x85T(:\x06D\xdb0\xf4\x02\x10:\x01\x82\x9e\x0e@#\xf0o\x0c|\xce\x04=#%\x1b3%+\xe8\x9c\x19r\xce\n8\xe7\x84\x9b\xbd`\xb3\x8d\xe0\xd9@s\x1e\x989\x1b\xc8\x9c\x17bN\x03\x98\xa3\xf0r\"\xb8\x9c\x02-;\xc0\xb2[Z*\xc8\x18\x06\x95\x13!\xe5\x04@\xd9\xa8rN093\x94\x9c\x0fH\xce\x07#\xcf\x1f\xdd(\x84\x1c\x03\x90\x85\xfa\x0e\x80ws\x90;\xf5M(,\xf6\xaa\xb9\xd9\x8c\x17E\x1f\x9a\xaeLgK\x14\x17\xca\x90\xea\xa2\x9c\xc5p\xb9\x13\xc55a\xbaE\x9b\\\xb5\xbf\x83\x18\xdb\x7f\x12\xdd\xeb4\xae\xd7z\x06\xc9\xebi\xdd\x7fI\x92W9\x81\xf4\x0c\x00Y)9\xd6\xf2\x06\xbd\x1aH\xc1\x11o\xfd\xfe)\xfe\xd7\xbe\x1c\"\x98\xd4\xec\nO\xd6\x89WG\xef\xcb\xfab\xa7OsX\xa7\xd4\xcfdJ9M\xfb\xb1\xac\xcb\xfdq\xaf\xe6\x0e\x08\xca_5-\xd8\x94\xa1\x8b\x11e\xcd6\x06\x1cIK,\x02G\x98\xb4\x10\x9c\xbf\xa7\x9a !\x0b(k\xa0\x1dX\xc1v\xc18Tkq\xa5\x84\xa1\xaa\xca&F\xa1\xea\xc5L\xbf\x08E\x85C\xdd\xad\xd9\xeb]\xee\xc1\x89\x1c\xe0\x17\xf0,\xfa\x99\xb6\xb4\xbb\xf4=\x8b?\xb8\xfc\xc3\n \xa0\x02\"J \xa4\x06\"\x9f\xc6TANe\x90Y\x1d\xf8\x15\xc2\x14\x95\x10\xee\x82\x85j\xc1\x9c_BE\xa0\xd3^\xd5g\xe5-YyK\xee\x9e\xb7\xc4\xde\x0b&\xec9AFpg\xd3\x11\x81\xb6\x93\xb7\x1cy\x0e?h\x91\xe8N\x8b\x8cw\xdcP^\xda\xb3suK+\x1e\xba\xd17\xf2\xfdY\xabA\x15e\x05=Ch\x06\x19u\xfd\x81\xd6W\xfd\xb5r'\xa2\xd1\xd5Cdu\xa8\xcd\xe6K \x8d\x96\x1f\xccj5\x1a\xd8\x0f\xab1<\x7f\xff\xcb\xba\xfb-7\x86\xc1n\xfc\xa2\xf4\x00\x88\xa4\x08@\xf2jq\xc3\xe32\xa6\x0b\x80'e\x00\xac\xb4\x01\x10\x18ux=\xea\xaf$\xacF\xfe\xfa\xac\xb5\xf8\xb7c\xd3\x1e\xf7\x89\x9d97\x08Q\x8e\xfe\x81\xb6\x05\xad{\xb6\x9b2\x85\xc5w\xb3\xae'\x1f)\x8f|\x1d\x94)\x95\xd3Clo\xee\xee\xbcuBY\x8b\xa6\xee\xca\x1d\xbf'\x8f\x83l\xfa\xcc\xe9\xaf[\xda\xb1\xf1\xfcBmd3\xa4\xede\x8c\xc7\xbf\xd3\x8e\xb7H\xa4\x7f\xe8\xf3\x9dY#\x1bx)P:|\x16\xfdv\xf3\x07\xbd!7\xb4o.\xbepk\x84)\xd0\\\xc2\x9f\xa9\x1c\x1b\xbe&\xce\xf9\xd0\x89\x7fr\xf7\xbb\xdd\xbc\xe8\x88\xb1\xc6\xd0\xdd\xd0\x01\xaa\xc9O\x1e\xff\x0e9\xd5\"\x1b~\x8a]!sq\xde\x9e\xbdH\xb1'd\xe5'[\x14\xaa\xd5O\xe7\xac\xbe\x8cP\x94\x93\xb4\x03\xa1=\xd2\xbfC\xf6\xebe\xf3\xce\x93-\xb1\x07b\xd7@\xf6\xf3\x13| c\x92\x0fD\x13}`n\xb2\x0f,I\xf8\xc1z,~\xf5\xe3\xec\xc4\x1fDV\xf4\xda\xc7% @\x88\xb8\xf5\xb2\xf9eIA\xb0,1\x08_\xa2h%\xb3\xa5\x0bA\xf6\x94!\xc8\x996\x04I\xa9C\x903}\x08\xd6\xcb\xe6\xb1bf\xa6\x1d\xc1\xbf\xeae\xf3\x10\xad\xc7\xb2\xb4$K\x18ORB\xefJ\xc9\x92\x9e\x04\xb9S\x94\x00IS\x82\xe5\xa9J\x96\xb4\x1e\xb95eY\xf2\x12\xc4rz twJB\"\x13\xf8.m\x98\x90\xd0\xe4\x97\xe1\x04\xb4/Jn\x82 \x9d\x11Kr\x82h\xbb\xa3\xc9N0-\xe1 \xd0\x1b\x00\x16&>A,\xf9 \"7\xab\xc4\xeeV \xf4Rj2\x14$$D\x01z\xc7\xca\xa2\xc4(HK\x8e\x82Y R\xe0\xed\x98h\xa2\x14\xe4K\x96\x02\x7f-\x9c\x99\x965q\n\x16&OY\xa2\xb0[X2\xa7SA\xe6\x94*\x08\xdf\xc5\x82\xdd\xc6\x82\xdd\xc7\x92+\xc5\nr\xa6YA\xf6T+\x80\xd4t+HI\xb9\x82\xf4\xb4+HL\xbd\x02\xfc~\x16\xfc\xc6\x8e\xf4D\x9d\xd8\x1d-\xc9\xa9X\x90\x96\x8e\x05X3r\xa6e\xc1\xd2\xd4,K\x16rwK\xced-\xc8\x9a\xb0\x05\x8b\xe7C4q\x0b\x12\x92\xb7\xc0\xb8\xc7\xc5M\xe2\x82\xd0i\xc6N\xe6\x82X\xdcm\xf4]oR\x17\xfe\xba/\xb1\x0b\x7f\xdbI\xee\xc2_C\x12\xbc\xf0\x17\xad$/\x98\x12\xf8<~\xe0\x8f\xf8\xcf\x13\x08\xad\x9e/\x15\x10\xed/\xef\xee\x03\xa3\xd5\x83$]\xe1U\xba\xe3@\xe9\xc9\xf5\xb9\x9b\xc0\xe9\xa1\x1an2\x18^\x8d\xbb\x0b\xa4V\x8f?)\x0c\xaf\xd1\xdd\x04V\xab\xc7L\x0e\x83H\x82\x18\xcc\xf3\x08!\xc9b\x10\xc6\x8a\xd0\xa4\xb1\xc87n\xf2X\xe4\x03\x7f\x12Y\xf0\xc3;H&\x03_BY\xb0\"\xbeT!\xd0bv\xdc|\xa1\xd9\"=\x89f\xb0\x86\xdd\xfc\x0b\x85\xdd\x04\xd2\xd5`\xee\xc4\xf1\xa6\xae\xcd\x94\x98=\x8d-\x18\x90h\xfb\xf5\x93\x02\x07T\xa5&\x05$\xca\x8f\xa6\xc7$\xaa\xb6\xfc\xd2\xe2\xe0\xd1\x88\x83\xd9\n\xa2\xf7\xc6\x1dDtD|\xc1C\xfe\xe8\x83X\xfcA\xee\x08\x84\xcc1\x08\x91(\x84\xc5q\x08y#\x11Rb\x11\x16D#\xe4\x8dGH\x8aH\xc8\x1b\x93\x90\x10\x95\x90=.!\x12\x990/6\x01\x15\x14\x8cW\xc8\x12\xb1\x90\x18\xb3\x80~9)\x8eaq$C\xeeX\x06\x7f4C\xe6x\x86\xbb\x88h\xc8\x1c\xd3\x90\x1a\xd5\x909\xae!\x1c\xd9\x90=\xb6\xc1\x1f\xdd0!\xbea~\x84\x03*\xccG\xab*\x9e\x05Q\x0e\xde8\x87\xa8I\x11\x8cuH\xb38\xf2\xc5;\x84#\x1e\xe2\xb5\xc9\x1a\xf5\x10\x8e{\xc8\x16\xf9\xb04\xf6\xc1\x11\xc7-\x1a\xd4x\xc8\x1b\xff\xe0\x8b\x80X\x1e\x03\x91\xe0\xf8\x0f\xc6A$FBx\xdd\xa9\x13\xa3!\xfcr\x10\x1f\xd3\xe2\x98\x88)\x9d\x93\x12\x17\x11\xef\x85\xa4\xd8\x88\xc9\xd1\x11\xb8\x07.C\x84DB\x8cD,J\"\x1e'\x11\xec\xb5)\xb1\x12i\xd1\x12x\xbc\xc4\xe2\x88\x89\xe4\x98\x89\xb9Q\x13\xfenJ\x8a\x9c\xc8\x1a;\x11\xa8\x0b2\x13\x17EP8\xd2\x90\x88\x8a\xac1\x15\xbe\xa8\x8a\x85q\x15n\x95\xdd8\x8b\xfc\x91\x16\x91X\x0b<\xda\x02\x8f\xb7\xc8\x19q\x919\xe6\xe2.\xa2.\xa6\xc4]$F^L\x8a\xbdH\x8f\xbe\xf0\xc4_\xf8<\xee\xe9>\xf7x\x0c\xc6\xa4(\x8c\xe48\x0c\xb4A\xb9c1\xf2Fcx\xe21rGd\xe4\x8e\xc9X>G\x92\xe22\xd2\"3\xcc\xd8\x0c<:#x\x06\xc3\"4\xa6\xc5h\xc4\x1d\xf9 \x1f\x84\xe24\x92#5&\xc4j$Fk\xcc\x88\xd7\x88El\xe4\x8d\xd9\xf8\xf2Q\x1b\xf1\xe1\xbe\xcb\xb8\x0do\xa4DtR\xdd]\xec\xc6\xa4:\xddm\xfc\x867\x82\xe3\x9f\x13\xc3\x11\x8b\xe2\xf8\xf2q\x1cX$G<\x96c\xb6\xaf\xcd\x13\xd1\x11s\xc6\xfb\xa2:\"\xdf\xe1\x91\x1d\x91\x8f\xc2\xd1\x1d\xe9\xfe\xff|\x11\x1e\x81\x18\x8f$\x0f*\xe6[\x8fEz,\x10\x1c\x88\xf7\xf0G|\xac\xd4c\x93c@2G\x81\xe4\xa2\x1e\x8b\xc6\x82,\x98Z\xc1\x88\x90\xd9r\xef .de=[Y\xcf\xee\x86\xf5\xec\xbf\xd0 \xa3i\xf4$\xea\xa3IaF\xda~69\xd0\x88ovv\x90Q\xd2\xfc\xfdo~_@ \xbe\x0c\x19\x8f\x94\xc1\xe7\x9fM\x1a\xf8?7=\x9d<\xe27M\xefp\xcd'\x0d\xb87Xl\xfa\x12guH\xe3G\x16A'\xe6\xab\xe1\xad\xfc%=\xb4\xb4 =\xdd\xb1-\x83^\xd2V\x85\xd3|\x10\xc2\xba\x0fP\xd6]O\xc9N\x06^\x0d{sG{\xd7M\xc8T`I;[Qp\xe7\xc5N\x80\xc5\xe5%|\xa8h\xfd@\xca\x7f\x08\xcf\x9e\xc1\x93\x0f\x12\x80&\xbdl\x04\x07\xad>Q\xee\xd8~b\x1f0Nk\x1e;d\xfdU\xb8\xd2\x0b\xd2\xd1\xeeD\x06\x17\xf0\xbar\xdcJ\x9d\x83\xfb\x06\xfe\xfc\xe6\xfc\xd5\xc5\x9b\xb3\xf3\xd37\xaf\xf5c\xf3&\xa5\x87}\xa9/\x1e\x99\xc1\xf7\xfe\xfd\xd5\xbb\xe0\xef\xcf\xbfyw\xfe\xfc\xf4u\xf0\x9d\xd7o\"?_\xfc\xe5\xf4\xfc\xfb\x8b?\xbf:\x7fc\xcd\n \x7f\xc4+.\xc7 \x9b\x80w\x1b\xf1\x8c\xcdf\xf1D\xcc^\x1c\xfb\x82 \x03\x85\xbd\xed\x0e\x17\xf6\x16>h\xd8\x9b\xce\xd0\xe1/y\x06P<\x13\x86q\xfc$f\xda\x030U\xf9F,C\x14\xc5\xe2\x1csr^(\xd5_\xdeP<@\n\xdd\x14\xd07\xfd\xc3\xe3m\xa0\xb6#\xd5\xcd\xa3\xe6\xa0W\xcd\xe3\x94sF\xf5\xa9\xfd\x07M\xe8\xad\xe4\x9f\x9b\"RN\x81\xa7\xd8\x1fAg+\x16;\xfdd\xf9\xaf\xdf<\xb5\xfem\xf4\xc2\x0cy\xe3\x1c\xb3%\x8f\xbf\x98e\xf0\x93\xde\x8d\xe2\xb4\xf3\x96&\x14\xf8\xc4%\x1c\xc3Y\xff\xc2\x85\xd2\x9d6K\xc7\xba\x1d\xeb\x92\xc7~\x0e4\x88\xfc?\xbaCU\xda7\xe2\xb0\xe7]Y\x17\xf4\xa94\x19\x1eu\xbb\x8f\xf0\xdb\xcd\xef\x7fgj:a^\xdf\xc7_\xbd?\xbc\xeb\xaf5\xab\xa7VC\xd1au\x1c/y.\xbe\xe4\xdc\x8c]o\x03a\xa7/O\x14tI\xdb\x93\xe1BQg8\\\"@\xdd\x10J1\xb5x-\xd2H\x00\xd9\xab\xd3\xe3\xf79\x0f\xa2me\xfd\xccc\xf7\x11\xa3, \n\xdf\xcab\xaax\x99q\xe6\x88+k\x9fy\x96\xdd@\xf3\x99h\x99\x8d\xb4\xe0\xe0\xf9<`\xa9[e|\xf7O\xdb\xf9\xa3\xbb~\xf2\x8e?i\xb7G\xcd\xb6/\x0b\\\xfa\x0d\xb8\xa8 \x172\xe2\xa6\x0c\"\xf6\xbe\xcf\x90K\x1dP\xec]\x8f17ap\xc53i\x88\xc7\x8f\xe2&]f\xa3n\x92Y\xf7\x85\x0c\xbb;1\xed\xee\xde\xb8\xcbo\xde}A\x03/d\xe2M\xf11 f^VC/\xc9\xd4K7\xf6\xc2\xb5\x9fk\xf0\xe52\xf9\x9c\xfa \xa2i\x85\xca\xb2o\x84! \x16}\xb7b\xfd+\xd6\x7f\x97X\xbf{4H=v$\x90\x8fs \xf8L\xbb\n \xe1\xc0as\xf6\xa3C\x81\xce+\xff\xb2_\xca\xd1oq\xbc\xfb\x18\xf9\x11\xfe\xfa\x99\xb5\xff#Z\xfbv\x06\xfb\xbe\x9b$\xa41\xef\xfbX\xf7g\xd6\x1a\xed\xf3\xb9,\xfbV\x9fO\xe2\xd4\xd7\xe6\x9d\xa5\x0c\xf9\x9f\xf8\\f\xaf\x94\xf5\x95\xacBSc\x1b@\x17\x9a\xd7o\xb5\xa0\x95\x84ymy\x99\x90.v\xbcK\xc8;\xa6W y\x01\xf7&9/f\xf6\"!}\xf4\xe7\xc1;\x93\xd09(\x04\x10\x9c\x85\x86\x02\xb6\x0e\xfc\xc8\x87\xf6q\xc7\xbf\xda\x96\x1d\xecM\xaf\x0br\xa4_z\x98\x87S\xbd\x00\xeb\x18\x9f\xed\x00\x8fv\xbd}\xeaK9\xe9\x85Nw\xb1\x13]\xe0\x14\x97prK<\xad9G\xf1\xbb@\xb8\xf0\xc3\xf6\x8a\x8f$\xc6\xf3\"\xc7\xe6l\x07\xe6\xc4\xa3\xf2\x9d\x1f\x923\x1f\x8f\xef\xf2`\x9c\xf3H\xfcE\x0e\xc3\xf81\xd8\xb3\xfcB\x87\xc7L\x87\xde\xc8q7\xe5\xa0\x8b\xd7r\xce\xe16\xc7\xb1\xd6\xb3\xfd\xbf\xd1\xd4\x9e\xd3\xdb\xe6=\xfba\xad\xe0Sg!%\xe6Q]\x11\x85\x95\xa4\xa6p\xe54W%i\x83#%\xb9\x8a\xe8\x8e\xd4O\x16\xa5\x93_\xd5,W0w\xa8V\xf0\xb9^\xd6W\x13\xcf\xb9\x9e\xdb1Q\xaddL\xb8\xe8\xad\x98\xc6\xdbz\xdd|g!)c\xda\x19\xc8\xd5\x85\xc9M\xb7\xcd\xa1\xff>\xd6f\xc8\xb0\xc9\xa7?\x00\xd5!nK\xb2\xe9\x11W\xf4L]\xe2\n\xca\xa1O\\\xa9st\n&%\xa3^\x01\xc4P \x1f\xdb\x87m\x7f\xb1Y\xe25H\xe4\xba\xef*\xd2]\x97\xf5\xd5\xb0\xf8'\xea\xba\xae\xbc\xaa\xe9\xeeb[5\xc5\xc7\xee\xe2SY\xef\x9aO\x89\xe7|\xfd\x98\xbf/\xeb\x0b)\xea@\xdbir4\xd4j\xd7|\xaa\xfbrO/\xfe\x83\x94\xd5\xc5N\xa6\x84\x06\xe5\xf0\x0e\xb8\xb8\xe44jM}\xb1k\x8e\xdb\x8a\xf2\xbaL/\xde\x91%j3U\x90\x99Q \x94\xf9\x90\x14\xac\xa9xq\x9d\xea@\xa4\xb4\x15\xc0\xb8\x1aQ\xd87\xbbcE7\x81\xb1^r#\xb5}\x0d,zn\xc6O\xcd\xe19\x03\xa1\xf336w >\x7f\x92dZ\x9e\x8c\xd8\\\n\xc8L\x99S\x81\xcf\xbdU\x8a\xce\xaf\xe9B\xb3\xcf\xb5\xe1\x90\x93\xeb\xf6\xd3\xd8\xfc}W^\xd5e}uZ_6\x93'\xf1\x0d\xa9\xf8\xb00s\xad\xac/\x1dX5i:\x93\xdd\xae\xa5\x1d\x1a\xa9\xeb\xce\x0c\x9e\xd5t\x8d\x9cZ\xa3\xc3\xe6uK}/\x00D\xa2\x12\xb6\xb8MA\xfa\xa6\xe5\xce#N\x8e\x00\x04\nR\xef\xd8\x9f)\xbcy\xcb\x7f8\xd6\xff\xc1s75\x91e\xbd\xa3\x9f/\x9a\xcb\xcb\x8e.\xaf]\x18\xe79eE\xa9\x0c\xb3\x0e\xca\xbahy\x92\x19\xdd\x01%\xc55\xb0y=ZHCk\x08l\x9bz\xe7r\x97\x96\xec(\xcc\x15\n?\xc8\xee\xc9\xad\xe0\xff\x13:\x81\x1f{i\xd1\xec\xf7l\xc3l\xa1nz \xf0:\x91\xf4ES\xff\x87$\xd3\x12\x1b:BL\xf9\xe1\x1d\x97\xfa\x0d\xd7_\x7f\xe1\xaa\xe6\x83X%\xb0c\xebd?X\xe2\xbcCq\x0e\xbd\x0f?\x96]\xa7\x84|S\xf6\xcf\xdb\x96\xdc~\xd0M\x121<\x17\xc7\xba/\xa7\xfa0}9\x9b\xa1\x119/\xf7\xb4\xeb\xc9\xfe\x00\xbcD96\xe6\x10\x94\x9d\xac\x15\xec\x8e\x14\xfa\x06*f\xa6\xd2\xce\xce\x0bV\x9aIoN\xdf\xec\xb7]\xdf\xd4\x14\xcd\xcc\xd86MEI\x8d+,\xe4\xb7p[\xferM9^.\xc6ZQ\xd9\xf1&\\\x93N\xa4Q\x8f\xf5\x81\x07\x1f\xcb\x8a5\xaa92{\xca\x925~\xda\xd1\xfe\xe1\x06N{\x15\xe9g\xbd\xd8\xb0\xb3\x95\xd9_b\xcaq+\x96\xfe\xedX\xde4\x85\xe4\x9ai\x85\x99_\xdf\n`\xdf\x9d\x84\x97\xe5\xd5\xb1\xa5;\xd8\x97\xdd\x96^\x97\xe4\xc6$\xd6\xdc\xf3\xc9\xa3\xb6P\xee?NLV\x99\xbfd\x9f\x83,\x07>\xd2C?rg\x1e\xeb\x9a\x16\xb4\xeb8\xb7,\x9b\xc5\xd0R\xb2\xeb\x1c\xac\xf55\xb3N\xb9\xf7\xe3\xc3\xbb\xe3\xfe\x016\xff\x1f~\x00R}\"\xb7\x1d\xeb.R\xd9\xd3\xcaX3/De\xb4%\x138\x80\xa9\x11\xd16\x0b\x1dMS?\xdf\xef@n\x07\xc0\xb6\x03>H\xfb\xa6.\xfb\xc6\xea\xc5\xfe\x9a\x96\x06\xa5\x90Z\x08\xc0\xf6\xe6\x9b\xb2\xd7o\xb5\x17j\xda\xdek\xd4fh\x14\xc8c\x07xP\x80\xf0@s\xf0N\xed0_i\xd2\xccl.d\x0fL\xd9k\xb5\xcf\xa4\xb4\xb7g/T\xab&\xef\xbe\xd3mHl\xcb\xcd\xeb\x9eA\xf7\xe6\xc0\xda\xf0\xef\xcf\x81\x8fBK\xea\x0ev\xe9\xd0>=\xbb\x961\xafL\xe6\xfd:\xe3\x8e\x9d\xb6gg\xda\xb5S\xf6\xed\xd0\xce\x9d4>\xf8\xee\x1d\x1f\xa3\x9c;8\xbe\x87\xfbw\xf1\xd0>\x1e\xde\xc9\xe3\xed\xca\xb9\x9bO\xd8\xcfs\xee\xe8){z\xd2\xae\x9e4\x81\xe6,\xf0\xa5\xbb{\x8e\xfd=\xba\xc3\x87\x9b\xb1`\x977\x87a\xd8\xf1\xdd}>e\xa7\x0f\xed\xee\xa4\xaa\xc6\x8a\xa8\xf6c\x11\xa0\x13\x0e\xa0k\xe4\xe6/?r\x13\x82\xfeiQ\xa4f\xd85\x06#`Y\xc3\xd5\xdb\xb3\x17\xa3\xad'\xe9\xf8:\xf8tM[j\xedcE\xd3\x8a\x179\x8d\xa047\x07\x06?\xa6Q9\xcc\xa37\xd3h\x9bz\xf3]\xb3\x1f+\x85\x92\xf8\xb5\xf4@9\xfb\xf47\xa4\x1dz\xd6G7i\xb4\x91O\x0f\x9blRp\xf3\xc5\x0c\xe0Ih\x93\xfe\x9d\x947\xc5\x04\xc64N\xb2\xf5\xeb\xd8\xa6\xc8\x04\xc7\xedQt%\xe0\xca?\xab\xf5\x89\xdb\x9d\x13j\xe3\xd7\xde\x19\xed\xcb\xf9\x96\xa5nIj\x021\x9br\xb15\x19\xb6#q\x0b2\xd8\xd3\x91\x1b\xab\x8c\xde\xcee)\xda6\"f\x1d\xe2v\xa1\xcf\"\xf4\xd79\x97\x15\x98d\xff-\xb0\xfc4KO\x13\x88\xd8|\x11k/\xcb\xb2Zb\xd5-\xb3\xe7\x02\x96\x9c'\xc8f\xbe\xf5\xe6b4\x86\xdd\x86ZlJ\xa5\xf7\xfc\xea\x94A\xa3\x7f\xd3\xd4\xbbw\x1a\xeb\xab3\nfp\xd37o^\xbf\xf4S\x98\xda\xbf\xb3\x7f\x05\x7f<}\xfd\x1d\xfa\xab\xf6\xe1\x10\x8e\x10*\x1a\xb7$\xc6\xb6\x0d\xd6\xa9\xc6\xf58t\xb0\x1e\x9b\xe4)\xe4)\xa0q\x045\x94\xb5\x8ch\x18\x17\x99\xc9{\x8aw \x93'\xfe\x0b\x1bq1 \xe5\xbd1B\xdf\x07\xe5\x9d\xbe\xfeN <}\xfd]P\xe2\xb1\xde\n;\xc8#PU/\xa1rc\xc5\xb9\xe01#O\x13\x96\xbc\xfd\x8d\x11\x1a\xc4/\xad\xe2\xb0\xa2z d0\n\xb7(\x95\x7fO\x17\xd7R\xc2c\x88\x8c\x19\xa2~\x9dpJa\xe5$\x1a\xf4F\xe3\xee\xb3\x0f\xd5\x84\xb5\xea\xcdo\x95\xbb\x12'\x90\x1d\xad\xe8\x15?U\x9d\x00\xb7\x0c\x94\x9ft\xa3'\x10\xee\xc9\xe7\x8b\xb95qN\x11J\x98\xd1\xc5{\xf2\x99g\xc7\xd8U\xb5\x0d\xaf\xc2\xc1A\xe8\x0d\xdb=x\x8b\xec&X-\x10\x17=\xe5m\x88&\x13m\xcf\x8e\x94\xd5\xad0\xccH\xe7\xb9b\xd0\xda-y\xeb=M9\x1e\x98\xc1r1!>\"b\xe0h\x02\xd5l\xe1\x97\x0c\x0e\x96\xa33 \xa4\x937fa\xd1u\xe3j\x1dzC\x13\xa0\xf9\xc4\xf5x-c\x85D\xd5\xc0\xdbqI'\xe8\x02s\xb0\xd1\x9e\xba\xa3u\xe3\xae\x99x\xe9\xc6\x14[\xbaN\xf8\xca\xd0uRh\x8dx\xd7\xc7\x8cJ\xcfZ\x13c\xdd\xf5*\x87\xd7\x03^\x0dk\xaa,\xd0\xe4J\x8b\xab\xad\x9d$M\xd5\x97bjL\xd9\xb1\x86\xd9t\x91r\xbc\xb5\x1a\xee|\xac\xa6\xef\x96\x16\xd7\xbf\xfb\xfa\x11\xad\x8bF\xde\x80\xc0\x7f\x1d\xae\xec\x90\x9f\xa9)0\xb4mN%\x9c\x8f\xd3*\xe1l\x8e\xdd5i]~\x9dP\xc9\xe2\x0b9\xcaz\xcb\xd8\xe0\xca\x1f[Z\xd0\xf2\x06\xd5X\x83\x9d7\x0e\x9b\x1d\xca\xc3l\x14y\x9cm>\xd2\xba\x83kZq.^R\x03)\xf8QA\x1e\x88\xa4\xa8\xe6S-\xc8z\x9bZ\xebgy\x97\x1f\xbf\x9d\xb2)J\x0e\xf1\xa8C\xf2\x10\xb6\xdc|\x12\x88ZSS{X\x92\xa6\xdcdo\xe2\xce\x9a\xad\xe8g\xf8\xa7\x10\x9e\xb9\x90\xbc\xb3\xe6\x9a\xc1\x10\x9e\xc5\xe9\x15\xca5\x9b\x01\x99\xd1\xe9\xb5\x98>\xb3\x1d\x11\x06\x1e\x9aq\x86C\xeeY\x0e\xf6Lg\xcf\x96T\xa4.\xe6q\x9a\"D\xe4\x9e^\xc7\x88\xc7\xe3j\xc7\xe8\xd9\xd9\x04\xe3\xa3\x88%\xbc\xe2#\xe4\xaa\x9e4\xf2\xf0\x98\"\xd41a\x8e\xde\x90\x8a\xd6\x1c\x0f\xd1\xa6\x12\xfd\\p\x90\x84\x1f\xe8z\xed\xe2Is\x10\xed\xcbr\xe4\xfc\x1d\xb0\xcb}\xd3R\xe8\x8ee\xcf\xdd\x07\xcc<,\xaa\x92\x95\xa6\x80\xe8.\xa8\xff\xc6\x86\xa4*\xbe}S\x97\x1f\xa3\xd0\x91\xd1E\xf2\x13m\xa4\xaf\x8f{R?j)\xd9\xf1j\xf3\xdb\x9e\x14V\xeeLgq\xe7x\xef\x902'\x1bWJ\x80\x8e\x1d\x88\x80yR\x8d?\x0ec\x0f\x0f\xe8\xe7\x0d\xbc?k\xda\x1e\x0c\xb3\xea\xff\xd2\xdb-\xe9\xe8CU\xb1Ot\xdb\x95\xd3\x8c>\xf9 Z\x13\xf5[U\xd6\x1f\x87}\x9d\x16\xc7\xb6\xeco/\xf8\xfc(b@\xb8\xa9\x07\xado\xd1B\xe9\x9e\x94\xfc\xc2\xf0\xe1u\x90\xaf\xab*\xechOJ\xf7\xde\xfd\xb0i\xc5?Q*X \x95C\x91\xf2Wd-i\xf3\x11E?\xb4\x97\x03\xb3\xfa\xfb\xb2\xeb\x9b\xb6,H5\xc9CrM\xc9\xce\x9d\xd7IJS^\xa4l\xe9B\xe1\x0c\xd9\x92\xae,\xa4\x87\xa0\x1cc\x9f\x02e@ \xc4\x08\x84$\xfb\x8f\x81\xad\x11\xc2>K\x00r8\xe4\x13\x17>\xf9\xbf`\n\xa9\xee\x8e\x1d\x14\xe4 \xd4\xac8/\xaa?\xb7\xc7j$\")h\xd7 ,H\xf5\x9e%\x0e\x89\xbc\xe1o\x16\xd7\xa4\xacO\xd8I\xa9:\x8a\xdb\xcb\xaaJ\xfb\x85\x9d\xed k\xdb\xb1\x10uP\xd9\xa8\xbctK\xa0D\x1e\xdc>S\xd7\x8b\xdf\xef8\xeaH\xa1oI\xdd =\xbd'\xc5uY\x1b\xc1,\xbc\xe4T\xa2\xf0,!\xdb3\x82\xf5\xb1X ~\x1d\x1f\xef<\xb7\xf6b\x86\x1fZz\x93q\x82_\x93\xeez\xe6\x84D.\xa2>\x90\xb6\xbf\xe8h\x7fa/o\xf5xk\x08\xc1Z\xf2O\xdd\xb0\x81\xe1'.\xb5\xac{z\x85\x84\xe7@$|\x06\xbc\xdd\x00\xb1\xae\x80pw\x0c\x83vF\xda\xbe\xa3\xfd\xf7\xbcW\xec\xe1\x16\xde\xa7\x0b\xb7\n\xd1\x19\xe4\x0b\xf3`\xa2\xc4\x8dhb\xa2\xb0%\xa8\xbd\xc7\xfe\x99\xa1\xb81\xd6%\x830\xbb\xee\x97m\xb3\xe7j\x82\x1c\x0e\xd0\x1c\xfb\xc3\xb1\x1f\xff6\xae\x01M\x02\x0fe\xc9Z\xa7ASf\x90E\x0e\x87\x0cR\xf8|\x91\xd1\x16\x19\xc4\xd1\x1bf\x8f\x154\x83\xa8a\xfc\xc6\xed\xc5RO\"\xb7\x95N=\xf2\xa2\xe5\x19\x1b\x9fXU\x06\x826l7\xc2\xffuN\xeb\x1d\xf7\xdb\xf7rA\x08\xf5\xa4aJH\xd4C\xdehe\xf6W\xff\x81?\xa8f\xc2\xbb\xbc+\xda\xe8 \xdf\xe1\xff\xbe\x1b\xa0\xa7\xe4\xfco\x0e \x80\x82\x0f\xca\x9a\xdf#\xba1\xde\x1f\x97\xc6\xe1\xb8u\xe2\xd3\x82z>\xa4\xe5\xd9g\x17\xc7\x16U\xf3\x11E\x1c\xeb%\xe0.\xf3\xf7o\x7fx\xdc\xd2\xae9\xb6\x85<\x08\xf1#\xe1\xb1.\xffv\xa4\xd5\xad<\x9f\\\x96\xb2\xf7X\x99\xb8;D<\xe3}\xc2\x08\xfb\x8chk\xdf\x14M\x05\xdb\xe3\xe5%\x1d\xeeR\x95Q)\xa2-\xb0?v\xc3\x89\x14H\x0f\x15%\x1d\x12\xb1\n\x94\xcf\xeb\xdb\x0d|\xdf|\xa27\xb4\x15\xf7u\xbf\x7f\xfb\x83\xbbv\xd9#P\nys8^`W\\\xd3=\x85\x0f\xd7}\x7f\xf8p\"\xfe\xbf\xfbp\"\x02o\xe4\xaf'|\x96\x15\xda\xb1\xb5\xbaE\xd9\xcf\x81\xbb\xfa\x80\xf0\xb6z\xca\xa3\xed\x0d\x95~\xf4=9tb\xca\xb0\x16\xb0\x16\xabhC\xae\xaf\xb8-\xdf\x01r\x0f%\xf0]\xa0\xaa\x9aO\xddS\xcf\xd8\xfd\x1aN/\xc7\x16\xb0!W\x97\xc0\x0f\x8d\x94h\xdfqOw\x1eV\xe5_\xc3\xf3\x1a\xbe???\x83\xef^\x9dCS\xabe$\x16\xa8\xb8\x05\x1d\x9f\x99\xce\xd5\xc8\xe7\xb7\x07\xfa\xd3_\x7fB_\xe6\xfb\xcd\x91\x8f\xb5\x9cCb\x8b\xe3\xa3ph\x9b\xdd\xb1\xa0<\x12\xa9m\xed r\xf5\xfc\x1a\x9e\x8fG\xa2\x0eHK\xd9 \xaf_A\n\xa6\x13\x9a\xe6\xe3\xf10\x84fnIGw\xd0\xe0\xdc\xd3>\xf5\x06\xe2\x96x\x1e\x86u\xc3\xa7\xd5^[\x0b;\xb1\x18\x88j\xc6\x10\x81Dj\x9b ]=\xa2R|\xd9\xb7\xf4\xb2i\xe9\x89\xfa\x98\xc9$}\xb9-\xab\xb2\xbf\xe5\xc4\x9e\xca\xdd\xc5UT{c\xe5\xc9\x8cOSKW/\xff\x80\xaf\xbb\x0d<\xafo?h\xc0w\x0d\xa4\xdd\x96}\xcb\x16_\xa0VRG;\xe2H\xd5\xd4W\xd2{\xe0\x0e\x19\xd3\x9a\\\xe9\x8bZm]sJ/SYE\xc84;S\x13\xbf*\xb7\xbc\xaaR\xafw\xd0\x1d\x0f\x87\xa6\xed\x05un\xf1\xf1\xf1\xb1f\xff\xc7\xf6K1\xdeh:\x19\xb7hP\xe3\xa1\xb9\x84c/\x94\x8fZ\xce\x1dS|\xca\x1b@*\xb8\xa25\xa7\xf7\xd9IO\xc6`T?G\xf4\x9d\x18\"\xb7\x1cu\xb5\xfe\x93\xa7pFd\x18\xb3\xac:\x196\xc4\xb2\x86\x17\xbf\xf9\x8dg\x9b\xfa\xb6i\xe0\xb2i\xe0\x19l6\x1b4\xdc\x9ew\x02\xa9o\xf1\x1fI}\xbbaE\x7f\xdb6\xfb\x07\x97M\xf3\x10\x7fm\xb3\xc1\xf7\x9e\xf2\x12\x1e0\x11\xefy\xa5\xcf\x9b\x07\xbfb2\x1ez\xaf\xfa\xf7\xc9\xf9\x87\xbfo\xbe\x8e\xf4\xcd\x9f\xc8\x0dY\xdc9\xf0\x8c\xdbVL\xfa\x82^(\xbb\x07\xdf6\xcd\xa6\xa8H\xd7\x05:AT\x89} \xda\xa3}\x84\x97\x8b\xf4\xce\xd0=\xbf\x8bt\xcf\xd9m\x7f\xdd\xd4\x9e\x0e\x125\xf9\xb6i\x1el6\x1b\\\x13\x0f\x9d\xf3\xc0\xfb;\x9f@\xbc\xdb\xa6\xf6\x1a\xfb\xf8Tt\xda\xcbW\xef^\xbc==;\x7f\xf3\xf6!\x0e\xbd\x89\xa2\xc4D\xf3\x17&\x8a\xf3w\xd7\xef#\xdd\xf5]\x83\xf7\x14\xef\xaa\xa7\xcf\xe0W\x87\xed\xe6\xdb\xa6\xf9\xcf\xcdf\xf3\x0f\xfcER\xdf\x9e0s\x8d\xbd}\x10\x06\xc8\x8f\xa4\xed\xaeI\xc5:\xd1_q_7\xd9%{\x8a-/\xadB\xdf\xd7\xfb\xb1X^)>\xb1\xf9[\xff\xe3\x19\xd4e\xe5\x9d\xa0\xfe\xba 3\xf1\x9c3\xc7\x14\x1f\x07=\xa8\x8cm\xd8\xde\x8e\xa6\x8a\xd2\xd8\x9c\xc6x{\xab\xa2\x9b\x1di\xc7\x0e\xd9\xf3\xef#f\xc8cv\x16\xdd\xf0\x1f\x98)w\x1f\x88\xb6\xab\xb0\x1dGz\x16\xdc\x12\xf8\xa8\xbb\x85\x0cj\xbc\xaen\xd5\xb9\xc99\xf0\x0e\xa6#\x90\xcb\x9e\nk\x86\x9d\xb7\xdd*?\xbe\xef\x16!\x0ft\xaa\x8a\xe2\x04G\xe5\xcc\xbcw\xd94\x9b-iy\xe3>?\xbe\xdd\xfc\xfd\x9e\xe8-q\xd6\xc0\x8fU\xbc*\xf7\xd8\xbbl{q~\xfe\xd3\xbb7\xaf\xdd\xbf>{\xf6\xec\x19>\x8e\xec\xfd\x11\x07\x90i\x0fl\x99J\x83A\x9cU\x8e\x1dU WW\xc7\x8a\xb4\xae,W\x84\x08\x05\x19\xb7\xf9\x931\xa9M\xae\xbe\x13i? \xe8\x81\xb6\xed\x8a\x10\x83\x0f\xff\xc6\xba\xe3\x83<\xe4\x0ef\x8c\xde\xb9\x1b\xb5\xe4\x9fz\x8chR|dk~<\xac]\x96\x15\xc5\xf5\xaf\xd2\x0fg\xb4\xed\x9a\xda\xbbl$\x82\xc3\x93\xac.\xf8\xc8\xf8R\xe0\xc6\x979\x86+\xdf\xfd:]\xfb\x03xkq\x8f\xf7\xcd\xbd\xa7p\x0f[5fs7\xa2E\xf7N|\xb2x[^\x93=\x93\xf7\x7fD\x95\xff\xe8}\x99\xb5\xc5z7\xb5A\xa7\x97\xf2``\xce 1\x9ae\x07\x9fhU=\xfaX7\x9fD<\xca5\x8f\xac\x94\x91$\xf8$7\xa7\xe0\x890@\xady)\x94\x91V,\x9bh\xf5\x15r\xae\xe7\xd3\xce-\xe4\x03_\x10j\x1e^7\xd5\xce\x88q\xe1\xcb\xc9\n\"a?\xcb\xe9\xeb\xca\xe3\xc5\x0c3\x17\x1e\xf0\x94\x17\xd9\x15\x0e\xac\xa0\x90\xb3\x9f\xfe\xfa\xd3C\xcf$_:G\xcc\x82\xfc\xd3\x84w\x03\x13\xf7d\xf3\xf5\x93\xaf\xbb{\x9ea\xd7\xff%R\xcep\xa4\xf8.\xb8\x05T\x8a\x9bL\xca\xfd$\x93\xcc\x0c\x18|\xcc/\x93os\x1f\x93L<\xb4\x05\xaa\x94\x1a\x91Y\xf8\x95\xfb\x93\xdd63@\xc4H\xcf\xb1\xb3h\xe0\x81(\xf4\xf1\x90\xb6\"\xff\x8b#\x96\xa6\xd8\xc0\xb1\xd5GA\x1fNf\xf2\xbfi\xa45\x85_\x1b\x13\x9c|\xef\xa1\xc2\x92\x92\x9e\xd4#\x02\xff\xe6\xfaNd\xd8\xa0\x1b\xaa\xc8q3\xfe\xdb\x83\xb2.\xaa\x0dt\xb4\xba|4\xc61Z#0F\x82ba\x93\xe9\xf5A\xe6\xac-z\xf4\xe5\x88ko\xc4\x1f\xcb\xae;\n\xac\x8f\x04=:c\xfc\xbf\xdd\x00+\x12\x0d\xffI\xff\x87\xe1T\xd2\xff\xde\xd3V]\xce\xe2\x0b.\x85\xf9\x0e!'\xfem|\"\xe0M\xce\x98\xb8\xf1q\xa3\xe3\xc6gJ\x85\x11\x05\x00\x89]\x04\xb2\x98\x19y\x7f^yX\x12\xea\xf8\xe0 \xb5\xe3\x93\xb1a\xd3\xd3\x08\xbd\xa2\xdc\xf4\xc2x\xe2\xed\xf8\x04Sp\xc7's\xd3''#z\xa5\xf5.\xb1E(Uw|\xd0\xa4]Mn\x9a\xab\xcc\xa7Y!\xb1C\xe6d\xfa\xe2\nE\xcf\xfeU\x0f\xa7\x12\xa7\xd5\xe5\x05\x96O&\x9e\x05\xb6;\"\xdd9\xed\xdd\xef\xf8\xd9\x02v\xb4\xa8\x88 \x8c\xe3\x17.:\xc2\xe4[J\x90\xde\x8eP=\xfe\xacE\xef;\x11\xfd'\xd07W\xe2\x10<$;\x89s\x85\xcc\xe6\xc1\xc2\xaf\xff\xacU\x9dg`\xc93\x88\x04[\xcb\x16\xe8g\xd1\xd9b@\xf8vV\xd6\xdd\x06\xdeIJ%C\x9c\x8aG\xb0C\x86\x08\xeb\x121\xbb%fj\x88=\x11\x01\x0e\xdc/\xdf\xb4--z(HU\x1c+\x057\x1a\xc2.\x8f\xcc:6\x0b8\xd6cov\xbc\xfd\xcd\xb1\x87\xb2\xa7\xad\xd8\x1f\x9a\x1b~>\x18\x0eL\xf0\x97kZ\x8b\xa6\x00i\xcd\xf9\xac\x1f\x1b\xcdRx<\x80\xde\xe16\xefN\xd1\xd2]9\xa4\x9b\x11=Y\xee\xd3u\xd3\x99\xe5\x0c\xdcef!\xfa0\x94ch\x07/l\x1cIQ\xf5\xb1\xaa\xbbr\xc0\xe8m\x83D\xc6*\x98\xa5\x18\xfd\xbf\x91W\xd2\xc8\xac8\xa6Y\xb7t\x18\x02\xba\xe3X<\x9fJ\x02\xb3\x90\xd53%\xee\x8fU_\x1e\xaaRT\xc2\x94\xcf_\xc4g\xb6\x99a2b\xbf\"\x88\x93OD\xad\x8bk\xa1\x8aX\x87\xba7\xc8\xf1\xe8\xcf\xc1Y$\xe9\x81\xfa\xa6\x15\x0d8\x90\x96\xf7\x9cLq\x91\xcc\xf7*\xe5\xe0DZ\xaf\x07\xda\x8a;\xb78\xaeW\x7f\x90\xc2\xf6\xcd\x18\xb4\xd7\xd2\x82\xd6\xbdUq\xf5\xe3\x83\x0f\xf5\x07IK4p\xed\xdb\x05~\xb8\x1e>\xbd\xa0u\xdf\x96\xb4\xfb0\x1ao\xfc0\xe7I\xc7\x99x\xc7\x87\xcf\x94F\xd5\xa01<\x96-,\x15\x9d\xb0\x8b%z\xc8\x9d\xea\xb6E\xcb\xb6\xbb1J\xdb.\xd1\x8e\xe1O E2\x05\xaa\x8a\xa8\x9ds\xa4\xff\x1b\xdf\xd1\xab\"{7C=\x1c\x86\x01)Z\xab\x11\xa8?q/P\xc95\xf1\xd0A\xba*0\x12\xe1Z\xaa\xfd\xf2\xe0@[8\x90\xb2}\xdc\xb7e3\x1c\xeb\xdd\xf9\x92\xa1E\xaeP\xd5\x96\xb1W\xc7w\x86\xc6\xf5\x8dZ#\xaav\xac\x85\x17V\xaek|\x86\x8d_\x196\x11\xfb3\xc7l\n\x91\xcf:&\xae\"J\xc4w\x85\xd6\xc8\xef\xe1\xae\xbf\xd0\xeaj\x9a*ym\xd5M\x7f!\xb4\xe1\x85\x8d[\"\x8dO}\xd3h\xde\x90\x0e\xcb*\xc6I\x8f\x86@\xb0\x96\x14\xbcMR\x1f3-Y7\xfd#\xf9O\x91\xfc\xdb\x1d\x0f\x87\xeaV9\xeb\xd8O_\xa9q0{\xd5\xd3\x1d\x9ch1KZ\xffEk|\x8b~\x8f\xcb0\xe5\x98\xe6\x9c\xf7P\xe7?\xceE\xa8\x02 f\n\xc7\x8cD\xa4\x84\xa4\xb4\xfd\x90 \xdb\x98\x8f\xb0\x0b\xc0\xf26\xcc\xa3\x1e\x08 \xb2\xdb\x80#\xebS*>\x8f\x98\xc0\x11\xe3\xb4\x7f1A\x81%\xaf\xeclO\xder\xce\x02[`\xed\x04\x12\xa0\x1d\xefP\x19\xc0\xdcE\xe4\xd0\x1a@x\xec0z\x83\xe0'\xe11\x9aMu`\xc9Y\xc2w`\x89\x92\xec\x07\xf64O\xa2@\x80`\x83\xf3P!h\x02\x8d\x80\xce\x85\xcc\x08\x9a$\x83#\xc1\xd7 \xcf\x96\xc2\x8a\x08\x91\xfdj\xed{{\xf6B\xca\x12]\x9e\xb8\x7f5\xed(c\xfau\x17\xc8N\xe6l\xe2y\x13\xcab\x10\xc6d(7a\xe7\x8b\xc2@\xf1\x9d#\xe3\xfe\x17\xd8\x01\x93\xf6\xc0,\xad\xc9\xb6\x13\x06\xf6B\xffn8\xad \xf3w\xc4x_,\xdb\x15\x1dq\x82\xc6\xc7\xf9\xf3\xc2\x9d\xd1\x95w\x89\xed\x8d\xde\xa1@\xf7\xc7\x05\x0b\x0e\xdd%#c\xea\xdb)\x17A\x97\xb9\xf6\xcb\xac;\xa6o\xcf\x9c\xb2k\x86\x9b\xbeh\xe74$i\x84B\xd8\x8c\xc9\xb0{:\xfb'\xd8\x8d\xc3\xf6\xa0qP\xab\xcaZ\xf1\xdd\xfd\xf1\xe6\nW\x93b\xf7V\x18\xa5\x8d/X\xa7\xeb\xe1\xcf\x12\xc7Uu\x19k=\xe1d\xb7\xde\x7f\xe1%\x7f\xf9\xc5\xdc\x7f\x81#\x16Q\xdb\xcbk\xf2\xe9\x02\x1ec\x12\xb4\x1bF\x93\x8d\xbf\xf7\n\x86[b\x05\x8e\x98\xe8\x975\x02\xef\x84V \x93\x9d\xe6\xb1\xd1\xa2\xf6\xd9\x82\x9ag\xb2\xc9\xce\xa7\x10\xe3S\xb8\x1eY\xd9\x9eB\\O\x99\x98\x9e\x96\xf1$q)\xa50)\xe9\xdb\n\xc6\xa2$N3\x18KR\x88A)|\x82\xc8\xcc\x9e\xe4\xe5N\xc2\x98\x93\xcc\xa8\xc5L\xbcI\xde#\x1f\xc6\x99\x94\xca\x98\x94\xc4\x97\x94\xc6\x96\x14\xe5J\x9a\xc0\x94\x84\xf1$y\xdbo\xf4v\x1e\x8e\xa41vd\xfe\xc5\x92\xce\x8c\xb4\x85.\xe1F\xd2\x12}\xbf\xc2\xcb\xf7WL\xfb\xc72V\xa4~\xba\xd3\xc2\xcb\x87\x14\x044\x8c\xeag\xe2B\xf23!\xa5W\x05\x85O\xe6s \x99i\x93\xea\xf11 y\xf9\x8f\xd2\xeb?\x97\xfb(\xce|\x94^\x07\xb4\x0f\xf3q\x1ey\x18\x8f\xbc|G\xe9\x15\x9f\xccu\x14f:\xf2\x16\xec\x0fs\n\xf7cf\x86#{\xd3\xf4\xf2\x1b\x85\xd8\x8d\xa2\x8d\xc4\xe3\x9aR\x1b\xba\x90\xd5hlb\x94\xd3\xc8\xc7hdG^\xcd\xe43\x9a\xa1Y\xe3LF\xf1e\x97\x97\xc5h\"\x87\x91\xb7\xcd\x10\x8d'\xf43\xdd\x04\x973$u\nd\xe7-\n1\xf8\x849\x8b25'\x1b[\x91\xc6\xd43\x99\xab(\x89\xa9(c\x83's\x14y\xfc[`\xb6;\x95\xa1(\xc8O\x14lf<\xe6\xd3\xe8\x849\x14D\x18\xddP\x94lh\xa6\x19\xbc\x84f\x88\xff\xd5\x927\x8a\x19k\xef\xafAn\x82\xa1\xac\xf4B8\xb9PFj!\x97X(\x1f\xad\x90~\xce\xd2K\xc8I)\x84\x12\nm\xf3\xd2 !dB\xb9\xa9\x84\xa6\x11 yRN\x9ch\xbc\x84\x90@\xf7\xe3Eq\x80\xd33L\xfc\xcc9y\x13K\xc2!\x83A\x85\x1b\xdbQf\x06\x0ez\xe5\xac\xd7U&\x06\x12\xc6B s\x07\x13f\x0e'\\\xaf\xab4\x9e\x9c\xa1\x85I\xc1\x85y\xc3\x0b\x13\x02\x0c\xb3\x87\x18\xae\xd7U\x8agRH\xe2\xe2\xa0\xc4\xdca\x89\xebu\x95\xfa\x93\x16\xa0\x989Dq\xbd\xaer\xbd\xaer\xbd\xaer\xbd\xae2\x1e\xce\x98\x10\xc3\xb7^W\x99\xd29)!\x8e\xf1^H\ns\x9c\x1c\xe8\xb8^W)\x9f\x94\xc0\xc7\xf5\xba\xca\xe5a\x90\xebu\x95\x93C$\xdd*\xaf\xd7U\xe6\n\x9f\xbc\x8b\x00\xca)!\x94\x89A\x94\x93\xc2(\xd3\x03)\xd7\xeb*\xe7\x84U\xe6\x0d\xac\\\xaf\xab\x0c\x85X\xa6\x05Y\xae\xd7U\xdeI\xd8e\xf0\xd8\xba^WiK\xcf\x1e\x8a\xe9\xc6M\xce\xadO\x90#lyH&x\x822\xc1\x1f\x96\xe9D\x94e\n\xcc\x9c\xed\x10Z\xaf\xabL\x0c\xd5D\xc5\xad\xd7Uf\x0d\xdd\\\xaf\xab\x1c\x9f\xcc\xc1\x9c\x13\xc29\xd7\xeb*\xb5'Sx\xe7l\xfd\x1c\x0f\xf2\x8c\xf7*&gY\xa0\xe7\xe4P\xcfH\xb0g,\xdcs\xbd\xaeri\xc3\xb2\x05\x80.\x0b\x01M\x0c\x02\xcd\xde\xf4\xc9\xa1\xa0^i\xfdz]%\x7f\xd6\xeb*\xb3D\x93f\x8e']\xaf\xab\x9c\x10[\xfa\xdf\xef\xbaJ\xb0g\xf7\x18\x9di\xa8E\xa3WW\xda\xfd\x95$\xf5\x9fM\x92\x1a\x88DN\xa3FE\x04L\x08\x846\xefE\x9d\x1c\x03}]v\xbdgu\xb0\x9f\x8cu\xa1]O\xc9W\x9d\x88o\x14w\xc2\xca\x83\xde\xac\x05\"\xee\x9e\xc5f\xd3\xa4\xa43\x19\xf2\xe5Z0r\x96mIW\x16\xe2\xd6Z^\x7f\xf7\xbd\xd09 |\n\xe0Rq\x831j.\x06\xd6\x87x\xc8\xe1p7\xa2cV\x0d\xc0\x0b\x15\xeb\x0d\x059\x88Kb\x84%\xa6\xfe\xdc\x1e+y\x05\xeb\xa1m\n\xdau\xe2\xbc\xc5\xfb\x03\x91'\xa3\xe0|=X\\\x93\xb2>a\xc6nu\x14\xbe\x99\xaa\xd2~a&&a\xed=\x16\xa2.>\xaf/\xc8zaF\x8dx\xc8\x18D\xa9\xee$\x86\xbe%u'\\7{R\\\x97\xb5\x13h\xc5kqQ:\x8e\x8c\xe0P\xf8\xee\x15\x08\x8e^\x08\x9f\xb9\x83\xb4-\xee\x98\xe4\x1d\x8d\xb7N\xac\xa0CKo\xeeh\x01]\x93\xeez\xe1$\xf7\x84\xea\x1dH\xdb_t\xb4\xbf\xc0\xd4\x8cz\"\x10@\xac\xf6\x80o\x89\xc6\xcf\xbc\x04\xfb\xe2`\xfb\x89_#\x11\xea*H\xe9.\x88w\xd90\xe0g\xa4\xed;\xda\x7f\xcf{\x0e\x9b2\xfcH\xd6_\xe0UJ\x9a\x91h\x15d\xf1L\xacX\xc5b\xd2\xb1\xe5o\xbd\xcb\xfe\x94\xb9\xf8\xd1\xba\xcc,\xd8n\x17\xf77r\xc3\xfdp\x80\xe6\xd8\x1f\x8e\xfd\xf8\xb7q\xadYR\xb8\xb9wgu\x1c\x93{\xf2\xca%\x87Cf\x89|\xfeI{0\xb3h\xcaNKuA3\x8b\x1d\xc6\x7f\xdc>\x115\xca4M\xd3\xd1\xb9\xf7\x0d{\xcb76{\xb1\xa2\x0d\xebn\xd8V\xc5i\xea\x9c\xd6;\xda\xee\xcb\xba\x97\x8bO\xa8O}G\xbc!UGQ\xe6\x08\xf7\xe6\x1e\xf4\xde\x9e\x80\xd6\x0d\xe9\xdbX>\x1d\xc4\xfa(\xc5\xf2\xc9\x97[\x07\x13\xf3\xeb !\xc7\x0e\xe2{Vl\xc7\xea\x03\xf9v\x10\xefAH\xecEX\x90{\xe7\x15\xd8\x1bA\xe4\x9e\x18\xce\x999x^a\x81\xdc<\x98\x9b\x9f\xe7\x95\xc6+\x15\xc9\xd1\x03\xc8\x90\xa7\x07\xf3s\xf5\xbc\xf2HR\xbe\x1e,\xcb\xd9\x83\xb9y{\xfejW\x15\xef\xafh\xee\x1e\xcc\xcc\xdf\xf3\n\xe3Y; 9|\xb0 \x8f\xcf/\x90\xf6\xb1\\>\xc8\x99\xcf\x07\xf1\x9c>\xc8\x95\xd7\x07\x8br\xfb`z~\x1f\xe4\xc8\xf1\x83\x05y~\x01\xfd\xe49*\xab's\xbe\x1f\xdcQ\xce\x1f\xe4\xcf\xfb\x83 \xb9\x7f0;\xff/\xa8\xc3\xc39\x800+\x0f\xd0+j\xc8\x0f\x0c\xe4\x02\x824\x01\x12\xf3\x01!wN D\xf3\x02ain \x84\xf2\x03!\xcd\x04\x8a\x9e\xa4\xd3\xad\xa4\x9c\xf9\x82\x10\xcd\x19\x84\xc4\x9a\xcd\xcb\x1dDE\xa9=\"\x9c?\x089s\x08aY\x1e!*On\xf4~\xc3fA>!*\x8f\xd5\xa7\xf7\xe4\x14B\x96\xbcBHK\x9f\x83X~!\xa4\xe7\x18B(\xf1hF\xae!D\xe4y\xf2*2\xe4\x1d\xc2\xe4\xceK\xcb?\x84\xc4\x1eJ\xccC\x849\xb9\x88\xe0\xef\xb9<9\x89\x90\x96\x97\x08 \xb9\x89\x90\x94\x9f\x08\xf1^\x9d\x96\xa7\x08\xc9\xb9\x8a\xe0\xcdW\x84\x1c9\x8b0%o\x11\x16\xe4.B\xa4\x0b\x13s\x18!w\x1e#\xc4\xea\xe5\x99\xc9\xb3r\x1aQI\x81K\x1f\xc4\x935\xb7\x11\x02\xf9\x8d\xb0 \xc7\x11\x15\xe6\xbb\x1aB<\x0br\x1dQy\xfe\xa3h$\x07\x12\xbcy\x90\xe0\xcd\x85\x84\xcc\xf9\x90\xb0('\x12\x15\x87\xe5I\xc2\xdc\\ITR8\x7f\x12&\xe6PBz\x1e%L\xcd\xa5\x84I\xf9\x94\x10\xd8\xc1\x029s0!o.%\xb7\x12\xa6\xe6W\xc2\x94\x1cK\xf07rA\xae\xe5\xc4\xc5\xb5 \x07\x13\x9f\xdb\xbe!\xde_\xc6H\xe5\xca\xfd\x841\xfc\xd7\x9b\xff \x13\xeb\xe6\x99\xf7\x93sAQ)z\xe8\xb9/\x1f\x14\xac\x1a\xc5*\xac\xfdci^(,wb\x06rD!>\x12`7.[\xae(D\xf2EaF\xe5\x02\xd0\xe1\x9c\xdcQ\xaf0u\xfdG \x7f\x14\xc29\xa40\xa3u\xf3sI!1\x9f\x14f\xd4*\xd0\xe79sK!\x94_\n\xbcR\xde\x1cS\x98\xd1\xac\x19\xb9\xa6\x90\x90o\n\xf1\xaa\xc4\x02\xdcRz\x7fA\xfe)*\xcfL\xdc\x88\xe7\xa0B4\x0f\x15\xd2;bq\xd6T\xbe\xbcT\x98\x9a\x9b\n\xc1\xfcT\xb0[\xb0$G\x15\x96\xef\x15)\xf9\xaa\x90\xd8\xeb\xb0 o\xd5+pK\xa7\xe7\xaeB\xbc_ \xa1o \x92\xc7\n\xf1 \xad\x9e\xd4\xee\x83Y9\xadAq 9\x9e\x90\x90\xdb\nw\xd3\xd8\x8cy\xae\xb08\xd7\x15\xd2\xf3]\xe1\xee\xbacZ\xeekP\x9c\x1d\x887%\xff\x15\xe29\xb0\x90\xd6 )Z\x1d&tT\xb6\x9cX\xf0\xe5\xc5BZn,\xc4\xdb\x9f\xd2\xa6\xacy\xb2\x10\xce\x95\x85\x84:-\xcd\x99u\x04\xa2\xa1[\xb3\xf3h\x1dI*\xaf\xd6\x9bK\x0b\xb9\xf3i\xc1\x93S\x0b\x99\xf3ja<\xf5\"\xb9\xb5\xe0\x98i\x93\xf2k\x1dY<\xdf\xd6\x97c\x0b\x19\xf2l\xb1\x89\x81\xe7\xda\xc2\xd2|[G\x1a\x96\x7f\x0b)9\xb8\xf8j \xa4\x19z\x13\x1cej\xa3\xf9\x95\x94\xf7\xf6\xec\x85\xaa[Z\x8a\xe3\x19\xb3\n\xa7_\xef\xc2\x8dI\xcd\xde1Z'~\x94\xc01\x0f\xfc\xe4N@e~\x8a\xed\xa4\xec`\xdf\xec\x8e\xd5\xbc\xbc\xdfYw\x0f\x1a\x95\xb4l{\xa9(\x85\x9d/\x91_\x1el\x82Y\xe7l{\x1d\xb3D\xb0\xd2\xb1\\$\xff\xf1\xcc\xc4I\x0c\xe1\xaabj\xd7\x1e\xd3u\xc7w\xec\xaa\xd1\xbao\x1dktq\xbd\x1c\x0d\xaf\x15\xa5\xd5\x12\xd4\x9f\xb8\x97\xb2\xe4\x1a~\xe8D=-\xdf \xd9m\xa9\xf6\xeb\x83\x03m\xe1@\xca\xf6q\xdf\x96\x8d\x01\x93\x8c\xa9\xb2w\xd4R\xb7\x00\xd5\xbe\xb1\xf7\xb5|]\xf5N\xdf\xc0\x81\xb6]\xd9\x198\x03k\xf9\xc5\x8e\xd6\xcd~\xce,\x1d\xbf6l8\xf6g\x8e\x991% \xfcw\x99U\x8f(\x1bd\x9d\xc7t\x8bx{B\xa6\xf4Y\xd3T\xd3\x95H\xd3T>\x15\xd24\x95\xc9\x1b\xc0\xfeP\xd6\x97\xcd,uQ7\xfd\x85P\xe8\x17\x13n\x9c\x9e\xf2\x05\xd2\xe3Z\x97D\xfb\x9b\xb5.\xbd\xb7\xdfj+e\xba\xee\xd6\xd7\xd9\x85\xaa\x95\xd6>!\"\xef5]z\x99\xb6\xf9\x1b8b\x87\x8e\xd6#\x8c\x7f\xb7\xa9JN9J\x19liq\xfd\xbb\xaf\x1f\xa9|#3k),\xca5>\x07m~\xd1\xb5\xc5\x1d\xb7\x08-\xcbu\xb6\x19\xfaX\xa4\x17\xa1\xe2T\xfe\x95\xea\x81P\xe3v]\xff\xc5\x1a\xa7\x95\x15n\x9cg\xac\xba^1\x95\xc4[\x88nD\xe2\xc1\x96\xd3\xf8\xa0\xb9{\xfa\x87\x8b\xf2\xa6\x05\xd2\xd5\xd4\x01LY< \xc7\xef8\xbe,\x9e\x94A\x12\x8fU;0 1\xc4\xdf\x14\xb3a\x08\xa00&j\xdf4\x1f\xe1P\x91\x02\x8d\xca\x06\x81-\x1e*\xca\x0b\x0e!\x12\x13;%\x86JL\xea\x18\xb3\x86F\xbf\x1c\xeb\xf2\xf3\x085G\xa7\xb1-\xd0\xd7)\x12S\xbd\xd8\x92\x8a\xd4\xc5\xd2NIo\xaaU.\x8a\xf3\xaa\xdf>]\xd3P#M}\xd5\x93\xb6\xc7\xf0\x18\xf1\x88c\x1cS\x11_\xac\xa5c\x91J\x1b\x8dg]M\xd9<\x1atTT\x96X@\xe2\xc4\xa97\xde\xe7\xe6J\xa9\xa9nZ\xbc\xaa\xfbVs{\x9a\x1d,\xf4\x92?\xaa\x0ex.\xcd\x0d\xa9{f\xd4\x90\x1d\xe9 V/\xa3V\xca\x92&\xad\x00\xe0\x8c\x02\xe5\x8fSQ(\xbdAf\xcc^Uv\xbd\xc8\xc7>\x90\xb6/\x8bcE4D\x05I6\x1e\xabS_q\xe3\x10\xc1\x018\xc7\x80!Q&\xe6\x1a\xce\x1f\xab\xc8a\xf0\x1dq\x1e\xff\x84g\xbb\xf1o5\x9em&\xb8\xc5D\xaeb\xd7\xadHV\x1f\x8f/~\xdd\xc5\xd6]l\xdd\xc5\xd6]\xcc+\xeb_a\x17\x0b\xce\xb7\xe0\x08\xc4\xdb\xe3\xb4E\x07\x15\xe8\xdf\x8e\xe5\x0d\xa9h\xdd\x8bm\xc5y\x19\x11H?\x17\xf4\xd0\x8b\x10\xe2\x12\xa5?\x183\x12\x87Yk\xc5\xfb\xca\xa1\x13z\x8dC\xb9\x88\xcb\x01\xa0;\x96=\xc7\xa9\xb8\xdb\xbd*=t\x0b\x03\x08\xa1\xf7m\xa8g\xf4f\xa6v\x87\xd5ns{\x97\x1b\xaaY\xb9\x81\xb7bJ/\x18m6\xc5!\xedwZ\xbe\xf2j\xae\xbc\x9aw\xc1\xabiz\x9cP\x001\x06R\x1a\x1fIi\x93\xfdM\xef\x95+\xe0\xa5\xb3\x80\x93\x01L\xe1N\xb0\x01\xcb\xa4y\x1d\x01\x0d\xbd\xf3\xc1\xe8\xcby\x88 \x8e\xfe\x8dp\xd5\x82\n9B\xd2*\x84\x1e.\x02.\x95\xbbe\x9eJ\xb0\xf2#\xb6L\xcc\xb2\x8f\xef\xb5\xae5_\xe2v\xbc\xe6\xd2b\xa6:*\xcac\xbe'\x18\xee\x89\xedL\x0eo\xb4-\xf1\x123\xc2\xc7\x16\x85\xec\xec\x04\x0b;\x03\x88\x1b\xb2\xa7eV\x81|\xa5\x12L\x17\xbbc%\"\x1b0i--hyC\x81\xf4\xc1\xa6ejR\xa0\xce}\x93V\x97X\x17!J\xd4\xb2r\xb5\xf8\xda\xa0\x8d\x1b\xb1n\x83\xe8\x0c\xea\xd5uP\x1aC\x84a\x07 \xad\x80\xaeox\xf0NU d\xa6+\xeb\xab\x8a\xea\xa8\x8cV\xac\x80`F\x81l\x16\x0f\x9fh\xd1+5\xeb\x0f6\xcf\x1f5\xed\x8e\xb6t\xc7\xa1\x1f\xc4S\x8a\x92O[&fh\x87DZ$\x05\xa6\xfb\xf6\x86x\xa6\x97\xee\x0e\x9d\xbcCj\xd0\xcc\x17r\xf0\x8d%f\xda\x0e\";\xb5x\xa6\xac\xcb\x9f\x89{\xefn[3\xcf\x12\x08\x8br[\x93'=\xcb\xc8\xbe\xd2-$\xae\x08\xc4\x8fR]:\x08H\xac/4\x952d\xc9\x8e\xa1\x132\xe4P(\xe5kZq\xec\x81\xd4@\nn|\xbb\x0d>e\x86\x80{rm>\xd5\x02\xb7hjMGI\xf2(N\x9f\xd6\x14%\x19\xa2\xe6\xb8\xcd\xa5\x85\x9f\xb9\xf2.\x99$\xb7\x1c\xcfPx6\xac\xd9\x0b\xce\x89Q\x11OpL\x05\xfa3\xf1\xb3\xd8\xe8\xbd\x10Q-\n\xb1\xe1\x035\x06\x1e\x8e\xc1.\xbc\xa3\xd9\xb8\xed\xc5\xb0\xb9=\xf7\xfa\xcd\xf9\xab\xa7\x9c\x80@\xc2T\"\x93\xbf\xe4[\xe4i\xad,\xba\x81\xe0J\xcc\x11O\x8a\xb6P\xe0n!C\xee\x17\x9b\xaf\x7f;\x96\xad\x98\x14W\xcdU\xc3\xb3\x89SQ\x0d|\xc311\x8d\x97><\xc3\x904\x028_a3f2\x8e\xa1\xb0\x0b]\xd6\n]\xac\xd0\xc5]A\x17v\xdfG-#\xafe\xa6\x0bx\x8cI\xd0L\xb3T\xcbl\xb296\xe8\xefY\x98E\x98\x929\x0d!p\x86|&\x01\xf3H\xb6l\xc9\x8bQ/\x87I\x97\xbd[\x96\x7f\xc3\xea\xbd\x14\xcb\xc1\xfd*\xb6\xf5\xcc'T\xf6\x18Ra*\xe59$\xca~\xb2\xe4Y4\xc9\\<\",H\x90\xdc/\xa3F\x9eI\x8a\x8c\xa6\xe2\xc7\xe9\x90g\x13!\xcf\xa2@f\x87W\xac\xc7\xe2\xe4\xc7sh\x8f}d\xa4Q\xc2\xe3\xb9T\xc7L\x8b#\xe2\x82$\xc7s\xe8\x8d\xc34\xc6\x19\x08\x8c\x93\xa8\x8b\xa7Q\x14/$'\x9eKK\x0c\xa8\xd7\xdcw\xae\xcbJE\x9c\x9f\x848+\xfdp\x1a\xf1\xf0<\xcaaO\x07\x87\xc8\x86\xa7\xd3\x0c\x8ft\xc2\xd8\x1a\xf7\x10\x0c\xf7\xa9\xd4\xc2sI\x85\x05y0\"\x10\xa7\x13^@$\xec\xa1\x10\x0en\xf1A\xda\xe0\xf8\xfe\x9f\x8f*8D\x12\x1c\xae\xc7\xca\xd5z;\x0f\x1d\xeb\x18\x13\x81y\xfa\xd3j\xe2\xccH[\xe8\xe8q\xf0\xd0\xae\xea~\x07\x9f,o\xc4\xb8\xbfb\xda?\x0c\xa7\x87\xfe\xf7$\x92\xd5~\xba\xd3\xc2K\xa9\x1a\x044\x8c\xeag\xa2Q\xf5\x13\xa8\xa6W\x05\x85O\xe6\xd0\xa5\x0e\xb4\xa8\x88<\x1fQ\xaa\x97\"5\xbd\xfesiQ\xe3\x84\xa8\xe9u@\xfb0\x1f\xfd\xa9\x87\xf8\xd4Ky\x9a^\xf1\xc94\xa7a\x82So\xc1\x89\x9c-N?. 2\xe5P\xb0%\xce\xde4\xbd\x14\xa6\xb3\x98\x89\xc2\x11\xbd\xa9\x0d]HRjd\xa8\x86\xe9I}\xc4\xa4FM\xe7S\x92\xce\xd0\xacq\x02\xd2\xf8\xb2\x9bK:\n[\x0c\xfd\x9dH7\xeam3Dsd\xfd\x04\x93\xc1\xe5\x0cI\x9d\x02\xb3\xa8D9+\xa4GZ\x88+2L\x1f\x9a\xa99\xd9\xc8B\xc7\x153\x9d&4\x89 4c\x83\xa7\xd1\x81\x86\x02C\x8dv\xa7\x12\x81\x06)@\x83\xcd\x8cg;\x18\x9d0\x87\xd5\x13c\xef\x8c\xf2v\xce4\x83\x97\xb0t\xf2\xbfZ\xf2\xb0\x84Y\x7f\x0d\x96rr\x82\x15M0\x9b}s`\xdb\xd4\x84\xe1\xbc\x9b\x19\x197]\xae\xcd|,\x9b\xfa9K/a\x01\xb3\xa6`\xd2\xd4d\xa1\x9c\x9a\xdb\x85l\x9a\xd6:Gx4\x171h\"\x8c\x99Q\xaeL\x19\xfe\x87G\xdd\xc5\x920\xc6)>=\xb2\x0fI\xe0\x98\x9e|1\x1ad_6\xf7\xc2\x9f\\\x10\xd0\xaf\xb1\x0d$Sz\x84'5\"\x9a\x16\xb1\xa0\xe6\x99R!~\xbe\x0c, \x93 \x16D,i2\xde\xd1\xe2\xc9\x988\xe9M\x9dLJ\x9e\x9c\xd0\xe60\xdb\x89}\x98\xc9\x95B\x99\x94D\x99\xd0\x8a\xb4q\xc9\x9bJ\x99\x9cL\xb9\x84\x13\x03\xec\xc6eH\xa9L\xe9\xae|i\x95\xd1\xc4J\xab:\xf3R+\xc3mZ\x9a^i\x08\xdb\xbalWs\xb2-\xd7$\x915I$[\x92\x881m<\xa9\"!\x83nb\xce\x08&jN^\xeft\x83rX\\wlG\x86\x13M\x16\x19c3\xd3M\xbcr\xfew4\xe1$\x96r\x124\xbdB\x86W\xefM<\x89nk\xb1^\x82\xfc\xe9'\xb1\x04\x94\xdc)(\x99\x93P\"i(\x8b\x13Q\xf2\xa6\xa2\xa4$\xa3,HG\xc9\x9b\x90\"fk$%%oRJBZJ\xf6\xc4\x94Hj\xca\xbc\xe4\x14TP0a%K\xcaJb\xd2\n\xfa\xe5\xa4D\x96\xc5\xa9,\xb9\x93Y\xfc\xe9,\x99\x13Z\xee\"\xa5%sRKjZK\xe6\xc4\x96pjK\xf6\xe4\x16\x7fz\x8bP\\I .\xf3S\\Pa<\xed\xc5\x93\xe4\xb2(\xcd\xc5\x9b\xe8\x125)\x82\xc9.i\x16G\xbe\x84\x97p\xcaK\xbc6Y\xd3^\xc2\x89/\xd9R_\x96&\xbf8\xe2\xb8E\x83\x1a\x0fy\x13`\xe42B\x1a\xb44 &!\xf3#\x98\x08\x93\x98\n\xe3\x8d\xa7\x9f\x98\x0e\xe3\x97\x83\x04\x19/N\x8a\x99\xd29)\x891\xf1^HJ\x8e\x99\x9c\x1e\x83\x87`gH\x91IH\x92\x89\xa5\xc9\xc4\x13e\x82\xbd6%Y&-]\x06O\x98Y\x9c2\x93\x9c437m\xc6\xdfMI\xa93Y\x93g\x02uAf\xe2\xa2\x14\x1aG\x1a\x92R\x935\xa9\xc6\x97V\xb30\xb1\xc6\xad\xb2\x9bh\x93?\xd5&\x92l\x83\xa7\xdb\xe0 79Sn2'\xdd\xdcE\xda\xcd\x94\xc4\x9b\xc4\xd4\x9bI\xc97\xe9\xe97\x9e\x04\x1c_\xcaEz\xd2E< gR\x1aNr\"\x0e\xda\xa0\xdc\xc98y\xd3q< 9\xb9Srr'\xe5,\x9f#I\x899i\xa99fr\x0e\x9e\x9e\xa3\xce`X\x12N8E'~\xe2\xc9\x9c\xa6\x13H\xd4\xc1Su\xac\x1a\xe6J\xd6 \x1e[\xb1\x84\x9d\xf4\x94\x9d\xc4\xa4\x9d\xd4\xb4\x9d\x84\xc4\x1d\x98\x92\xba\x83'\xef\xa4\xfbN\xf2$\xf0@$\x85'\xbd>\xc1\x90\xa0\xe5\x89<\xe0I\xe51k\x11\xaa\xa0\xf6\x8fe\xe9<\xb3\x1dB\xde\xa4\x9e(xc4$SbO(\xb5gZ\x85\xd3Z27\xd1'%\xd5gZM<}\x9a/\xe1\xc7\x9b\xf2\x03\xfe\xa4\x9fiM\x98\x9c\xf8\x13K\xfd \x16\x1f\nO\x8b\xf5l\xe6\x14\xa0 I@\xe14\xa0\xa4\x06\xfbb\xd3\xd2\x1b\xbd0\x1dhRB\x90?%\xc8\x8d\xa3\x9b\x99\x144[?\xc7S\x83\xe2\xbd\x8a\xc9Y\x96\x1e49A(\x12+\x1a\x8b\x16\x0d\xa5 E\x15\x00$v\x11dO\x16\n\xa7\x0b\xc5\x12\x86\xb26,[\xda\xd0\xb2\xc4\xa1\xc4\xd4\xa1\xecM\x9f\x9c@\xe4\x95f\x9e-\x92S\x88\"ID\xd1\x06\xc74+$v\xc8\x9c\x0c#\\\xa1\xb8YG yG\x8bl\xf7%\xd9G\x8e0\xf9\x96\x9b\x7f\x14\xaeG\xee\x1c\xa4\xccYH\xbe<\xa4\xac\x99HX.R\xcel$\xf0\xe6#\xe5\xcdH\xf2\xe4$e\xcfJB\xf3\x92\xf2g&%\xe4&\x81=\xbb\xc7\xe8L\xcds]U\xbc\xa5\x7f;\xd2\x96\x89\x1a\xdfQB\xd68\xe85\x0e:S\x1c\xb4]QO\xb8qr\xde\x1c\x8fj\x96\xb2b\xe9s\xfa\x9d\x80\xa2\xcb\x9d\xc9\xe7\xbd\x9d\x08\x0b4F\x07\xca:~\xceIHs\x13\xd0\xc6\xf4\xb0\xae-\xe6T\xc4\x98\x18\xa84\x17G5/\xf7\x15\x11\xbe*\xa4Y\x93&\xbfw\xab\xba\xeb\xfa\x8cU\xd5\xa4E\xaa\x8a_Q\xaejn\xd7\xd7\xc9\x8d\xeb\xef X=\x92\xfd\x96p\xc2\x9e\x03)L\xba\xec\xdb\xbd\xd2\xdb\x91\x87$\xbaER\xdc\x12\x1a6\x17:\xc8ta\xb7/ +\x92\xf5\xb6\xc0\xaa\x9dz\xfdv\xb8\xfe\xe8\xa5\xdb\xfe\xab\xb6\x17\xd4{\xf2e\xda\xd6\x95\xd9\x8e\xc0\xc0\x15\xda\xa1\xba\xcc\xb9.{\xc8p3$\xb9\xd9nF\xb9v\x9e\x9b!\xdc\xc8o\xc3\xabk\xdc\xe7l8\xd8\xab\xb2\xebEN\xdb\x81\xb4}\xc9L\xbe\xd6\xc8k\x1b\x8b\x1a\x86\xc9Hj\xe3N5\xe3k\xa9\x9f\x0d\x14\xcc\x12?\x0c\x91 \xdc$l\x96\xbc\x9b\x93wL\xaf\xb2C'\x1f\xae\xe0L\x18n\x99\x1e3\xf5\x96Wc\x05k\xe7j)\x1b(\x9c\xa1\x8c\x10\xe5\xe3U;\xf1}s\x91^\xb1\xf5\x08\xa6A\xe2U0V\xeaR}\x01[\xddNv5\x85Q\xf2\"\xa5`(\x82\xd4\xe5091N\xaf\xc6\x05\x1dW\x14\xfa9.\x02b\xa6D\xf4\xe80\x95\x98l\xe1\xd2\xb3\xa49\x06D\xd0|\x886&\x81\x80,\xdb\xc2\x84\x98M\xe0\xadm\xb8\x83\x17\xadZK\x16b\x0b\xf8,\x81\x99\xb5]\xba\xa6-q^\x0b\xc0_\x8bE\x0b]\x93c\xef\xfdq\x85\x1b\xdf\xe4\x0d\xbd\x00\xcem\x88\x04\xa9\xbcv-\xa2\x14X\x0e\xa8\xd1\x08\xd0,\xbe\nqPA\xda-\x88 \x8an\x91\x8e\x9b\xa5\xdd\x06#h\xc9\xfdq\x8e\x90\x99\xa7n\x88\x9f\xbc\xd3+\xe5\xac\xa5\xf9\xa7pK\x90\xefd\x0b\xf1\xd38\xe4\xa8\xfe\xd2\x939D\xda\xb0^\xf2?s\x0bF\xc5\xb9\x16\xb1VT\x9c\xb0&\xb1\xc1K\xddV\xf3\xf6\xed\x88(\xb7\xc1 \xdc6\x91\x06\xa74f\xea\x1e\x8f\n Y\xeb\xe3\xe3?\xf9C\x9e\xb6\xcc\xb5\x00\xfcS[8/|H\x00$\xd4+\x97M \x1e\x9c\x03g&2\xe0|\xea5f\xa6!\x04\x9a\x10\x1d+p\xa9o\x96!\x05\x9a '\xd8\xe3\x8b\x00\xa7\xa1CSP`H(\xac\xba}\x8e\xaa[u;\xf2\xac\xba\xfd\x97\xaf\xdb\xa7a\xfc\x93\xb0\xe9I\xa7AC\x94ua\xbe\xf1[\x86\x93\xa1)\xcf8%\x8a\xc7\xba1?~\xfaMm\xaa\xd525{\xe4vb\x1d~\x17\xb4p\xc6\xd9\x17a\xcdJ>\xfa\x06N\xaeq\xe04\xd7\x89u<\x94\xcd\xa8\x84\xf3qZ%\xfe9\x86\xc1\x17\xf0\xa8\xce# \xfd'zI3\xd1~\xfes\\\x9f\xd3\xe8=\x13h4\x17V\x7f!\x8dg\xa8+fSwfqc\xc6\xe9:\x8d\xcf\x87(\xa9\xa5\x14\x9d\xf2l\"\x84M\xe7\xe3LW\xd9?3o\xe5\x1c\xb5\xf1E\x9c\x94\x93\xd5\xc3\x02\xe7\xa4\xb1\x02f\xab\x01m\xd9i\xe2\xdc\x8a\xce\xa8\xe0\xec\xe5\x8e73\xdb\x12OpM\x0e\xb1p\xc9s\xde\xcf\x9d\x19\xef(c$g2eZ\xcc\x98\x9a@\x0fG\xa6\x9f\x1d\x135\x1bp\xa3\xa1G\xb90\xbd\xfbAx3\xcb\xc8|\xe9\xe7\xbc\xcc\xc7v\x99\x8d\xe7\xd2\xcbp\xd9\xcf\xe7\xb6\xcc\xc5j\x19\xe6\xb3\x9c\xc5d9\x9b\xc3\x92\xb7\xd7>\x19{\xd9+g\xf3V\xa2\xa9;\x1e\xc6\xca%\\\x95\x9c\x97\xd2n\x0dB\xa72\x87\x9f\xd2\xcfE\xb9\x90\x852\x89\x7f2\x9dkr\x01\xcb\xe4\x02~IDadd\x91\xcc\xcb\x1f\x99\x8d92\xce\x19\x99\x8d-\xd2\xc7\x13\xb9\x84!\x12e\x83\xecSx \xe72@z\xd9\x1eg\xf2<\"\x0c\x8f\xde\x8d\xd2\x9bg\x11\xdeAg29\x8e\xac\x8dX\xff~\x15/{\x19o\xa3\xe0i\xd4\xc4\xb9\x8c\x8d\x19\xb8\x1a\x97\xb14Z\xb3\xdc\xde\x0c\x1723\xca\x8e\xd6%.\xe1`\x0c\x12\x0czx\x17\xa3\x8c\x8b.\xf9Z:\xcb\xa2\xfb\xed?\xb0\xb6\xce\xe2TLil\x8cG\xd1\xdf\xb6(w\xe2\x04\xd6D\x93`j!Sb\x90#\xd1\xcf\x8e\x18\xe2ED{!\x95\x0b1\xc6\x82h\xf3\x1f.`>L\xe0<\x9c\xcev\x88p\x0b\xc6\x18\x0e3q\x1b\"%\x1b3e\x11\x93\xa1\xcd\\\xb8\x84\xb3\x10\xe1(\\\xc4Nh\xb3\x11\xe6\xe4!\xf42\x10\xda\xb4l6\xeb`\x1e\xbe\xc1lL\x83y9\x06\xd3\xd8\x05\xa3\xbc\x82\xf2\x94\x1cc\x14\x94\xaf\x05\xb9\x04\x1d\xd2=\xb7\xb4TV\xb80s`\"g`\x02[\xa0Q\xe5\x9c\x0c\x81\x8b\xb8\x01].\xc0|,\x80\xf9\xf8\xff\xe6\x8fn\x94\xf3/\xc6\xf6\xa7\xd4\xb7\xcd\xf0'lp\x9b\xbd\xcf\xc7\xea\xe7\xb7\x8132\xf9\xa1\x1c~6{\x9fQ\x93\x1c\xbc}\xe8a\xc4\xe6\xeaKa\xe9\x8b\xf2\xf3\xc5\x99\xf9\x82\x9c|\x89l|6\x0f\x1f\xda>\xa3\x17\x97s\xef\x8dNg\x9bu/^\xba1\x9blA#\n<\x8dco\x90\xd3\x8dU\x1c\xcb\xc4+\xa2\xfd\xc3\x00\x9f\xf5\xbfG\x19\xf5\xfat\x10\x19\xe5\xcf\xf3\x1e\x8d\x8d\xaaf\xe0\xcc\xc3\xd9\xf2\xd2\x8awSOfs\xe3\x81\x15?\x02(+\x1e\xca\x87\x97V\xd79\x1cxa\xf6\xbb\xb4rgR\xdba4v(\x81]Z-&\x91\xd6\xf9\xe9\xea\xd0\xc2\x12\x1c\x98\xc6D\xc9HKg\xef,(!\x9d\x8f\x8a.\xd8\x98\x88\xe3\xd3\xd3\xa0~\"\xe5\xdc\xd8\x00M\\\x90l\x0e\xa3\x99\xb3]\xb23\x08\xe6&\xa8\xab0\x9d\\X?,\xa0\x90\xe3\xb0\xa3%.\x8d<\x0em\x1b\x04\x83yqZ1\xefR\x83h\xc3!+1\x9c\x8f!\xccO\x06\xb7\xb0\xea\xd3\xa9\xdf\xd0\x99\xad\x9ei\xa4oQ\xba\xb7\x0c\x8d\x9bL\xee\x86\xc0\xfe`\x12\xdb\xa5\xd0\xbay \xdd\xbcM\x9a\x90\xa8:\x87\xa7\xcd\xe6d\x0b\xb2\xb1M\xb4\xe9\x96p\xaf\xf1\xbf~\xa57\xd4\x8c\xfe\xc5K\xcd\xc9\xb4\xb6\x9ccM\xf9\xe1\xa4\xc0\xd1i\xbd\x94W\xcd\xe2R[\xc8\xa26\x1a\xfdR\xde\xc8\x9f\xb6\x989M\xb2EIq#gZF\xb64\x8b'-'CZ\x84\x1b\xad\xa7\xf5\x8e\xb6\xfb\xb2\xee9\x98\xd8m\xbe\xa9\x9a\xe2\xe3\xe9\xcb\xe4\x18\x9ak\xd2]'\x9a'\x9ac\xec@\xda\xfe\xa2\xa3\xfd\xc55%;\xfd\x181aO\xf7R\x86\x95uO\xafh\x8b\xaa ;\xda\xd5\xac>\xa4h1\xc3\xbf'y\xbc\xceH\xdbw\xb4\xff\x9e\xb7\xe6+\xed\x07\xd9\x9dXO\x7f\xaf5=\xa1\xa3\xa5\xeb\xf8\xa9]\xf4\x96te\x01[V\x0e\x94\xf5e3\xa7+\xf9\xd7\x13\xbb\xc1a_#\x87\xc32\x11~-\xfcB\xc5=AA\x0eLm(\x83D\xfd\xb9=VT\x1cm\x0fmS\xd0\xae\x13\xc6\x95\xea\x15\xb0\xc2@\xf8\xdf\x8bkR\xd6'l\x7f\xac\x8e\x02\x8f\xab*\xed\x17\xb6[\x11V\xfbc!JT\x88\xba(\xcb`\x86\xb4\xc4\x931\xc8\x81\xed\x0d=W\xad-\xa9;\x01\xda\xedIq]\xd6c\x90#+\xed\xa2t\xe0-\xa3\xe3f\x1fj\x16\x1c\x1f8\x08\xcc;\xc4\xac\x9d\x98w\x87\x96\xde,\x9cvK\x17_@\x8f\xc0<\x1b\x1a\xd1)\x10\xd4+\x10\x89\xa4w\x9b\x081\xe3\xcf\x1bG\xe0\xd55r\xa8\xb8i\xd4_\xcc\xd3\xc8\x83x\xf69\x9f\xdfrp\xd92\x90\xef\xb0\xff\x9c)~\xd8q\xbb\x99\x02\xec\xfaq\x14\x96o\xb5\x87\x034\xc7\xfep\xec\xc7\xbf\x8dsS~\xcd)-\x17\xd7a\x0c\xbf\x9c\xf7=9\x1cf~\xc9\xc7W\x9ab3EPfw\xd4\x05\x9d\xf9\xf9\xd0\xff\xa3\xd2\xd5\x96=[QMGS#i\x1d\xf9\x86\xea\x173\xdb8\xd2\x0cjX\xc4\xd7\x9f\x0f{\xa9\x9c\xa4b\xf9\xa3\x06\x0d[.\xef\xd4rI\xdem-E\x80+\x00l\xe1\xcf\xe9]\xcf\xc2\xd6\x9a\"7\xff\xcd\xb0\x11&7\xc4\xda\xda\x83\x152\xf6cc;O\xfd\xcc\x18\xc7!e\"\xcb\xf6\xad5g\xe9\xce\xad\xc9K\xdf\xaae\xd493\xf37d[\x94C\xdc\xf9\xf3o^\x9c\xfe(\x16\xf1\x19\x07R\xb6\x9dp\xa2\xb3S}Z\xad\xfdu\xe6U\xd3)\xbe\xa1\xab\xca\x82o\"z\xade\x89\x9fX\x95\xe9\xbe\xec\xf99\xfd\xc8\x8a\x86\xae1\xd0*\xfa\x99\x16\xc7\x18\x82c*\x04\x0d\xc6\x19w1Y#\xae\xbbj\xe0j\x80\xee\xa0\xff\xcc\xbf\xb5\xee\xc6\xae\x9a\xab\xb0\xfeQ\x9d\x9b\xacz\x90\xcc\x11c\x02[\xd3\xddy\x03\xef\xf0eSY\xe3\xc2\x8f\x8d\xba\xb7'\xbe#\xddi}\xd9$\xf7\xc3\x15\xe9.>\x91\xbawC\x0b\xe2;\x9d\xd3\x0f\xdf\x91\xee/\\\x96\xc2\x07\x15\x0c{\xac\xcb\x9e\xef:\x9f\x9a\xf6#|\x92!\xef\x02\x97\xea?\xf3\x08V\xda\xb2\x126Z\xb5\x8e]\xaeJ\xbd\xef\xc6*\x8d\xb0\xd4\x15\xe9\x80\x14\xbdH\xe1`\x1b\xb1\xc8\x1c\xc0\x04\xb0.\x1d\x8d\xb1\xcf\xe3\x1a\xe0BdjFp\\\xder\xc35yX\xd8\xf6\x9d\xd8v\xc3@\xf5k\xdb\x97\xcc (;\x1ec\xc9\x8d\x83\x96\xf6\xc7\xb6V\xc1\x1c*.\x86\xbb\xe4\xea]E[m\xa1\xc3i\x0f?\xbe\x7fw\xae\x893\xc3\xcb+Z_\xf5\xd7\xec\xccqY~\x169[o5\x9a\xa9\x1b\x93?\xa7\xb9\xe2f:\xeb-6b\xf1\xe6J\xc1\xab\x01\x91\xd5\x80\x08\x9c\xea\xc53\xd7\xc2\x80\xb8h\xcb\xc8\xd4\x1f!\x1a\xbf\x05U<\x83l\xcf;q\x0b\x87o\xb4\xe3\xdePvc\xc2\xf3Gz\xfbh\xdc\xf7O\x80t]S\x94d\xc4\xe2\xb1:\xf1\x99\xe95Y\xac*\x88]\x9e+\xdcN\xb7\xf5aGoh\xc5F\x9a{jI\xdf\x93\xe2Z\x0f\xdc\xd4\x16\x8d9g\xad\xd0f\xc5\xf6\xf1\x0d\xbd*k\x0e\xf6\x9e\x0c\x7f{U\xef\xac\xbf\xbc\xb8\xa6\xc5\xc7\xf3\xcfl\xd7C\xa5\xbc\xa4UyC\xdb\xf3\xcfV\xe8\xf8\x0f\xa4\xa7\xed\x898\x98\x10\x99\xa9\xb0'\xb7\xb0\x1do+9\xf23S\x7fM;*\x17\xaf\xc7@\xfacV\x03I\x93\xa5\xf4\x99\xf6'\xbf\x861\xaa$\xf6\x07-\x11[x\x88T\xaf|\xcbG\x82\x9b\nVG\x06w\x1d\xcd\\M\xdezL\x95\x84\xac]L4\xb6\x8c\xd5\xc3zT\xa2\xd0*K\xcf@\x96\xaa\xe6\xea\x8a\xb6\xf0\x80\xcd.!\xf4\xe1\x06~\xe4*\\\x93R7\xf5\xa3\x1d\xed9\xe8Wv}Yhv\xe0\x1d+\x1c\x04\x8e\xd2\xe5\xe0\xbe\x0f\xbf\xe7\xc3\xe8K]\x10\xa2\xbfl[S\x7f\xfd\xcb\x98u\x98%\xaa\xfd\xe27\xbe\xfcV\xa9\xfe9\xd6\x08\xf1x\x9a\"\x9e`\x83\xc4\x13n\x96x\xbc6\xabx\xa2\xe6%\x84\xcdS\xf1$H\x89\x9b\x8a\xe2\x99\xbb\x0d\x85+\xef\x03\xc6\xc4\x13\xdb\x07\xcc'\xde\x92\xd9{Xp\x8ea\xf5_\xbc\xc5\xe9O\xaca\xf3\xcdE\xb7\x0f5|\xcd\xf9\xd19\x8eB\xa4rK!7C\x98:\x1fK\xe0-Vz\xaa\xeagKd7I\xeb\x97\x03\x98\x05I;\xd2s\xf4\xfc\xa2J\xf4\x973\x19\x07\x0b\xec\xd5\xcf\x0d\x88\xa9\x15\xf7\xe6)\x8a\x80\xd1\xe4\x98\x89u%\x17\xac -\x1eg\xe5\x16\xdb;^\x97\xa4\x80\x85~\xa5\xceY\xa9sV\xea\x9c\x95:g\xa5\xce\x19\x9e\x95:g\xa5\xceY\xa9sV\xea\x9c\x95:'\xf0\xedJ\x9d\xb3R\xe7\xac\xd49\xfcY\xa9s\xe4\xb3R\xe7\xac\xd49\x0b\xc8UV\xea\x9c\x95:'\x81:\xa7/\xf7\xb4\xeb\xc9>\x16\xcc\x1d\xc07\xcb\x11\x829\xb4\xf4\xa6l\x8e\x9dpCn\xe0[v\x82\xe4\xbe\xc8\x0e\xfe\x08ON\xa0\xec\xef\x8bn\xff\xc4\xff\xca\xa7\xc8\xae4\x029\xc6\x0cJ\x90\xa0\xcfPG\x93$\x1bn\x9a~\xb0Fe\x89?\x90\xae\x7f\xc1\xf3\\\xf4\xc2\x0d\x05\x07ON\x0c5\xcbj\xc4\xac\xd1\xae\xecxIk\x88\xd3\x1a\xe2\xa4?k\x88\xd3\x7f\x87\x10\xa7\xc1%$cE\x84\x80!\x9aI\xd8\x96c\xea \xe23\x00\x89\x19\x9dX\xeak\xa8\x8dLHaVa\xd3Q\x9fhY\xbe\xdcP:\xab\xa3\xf8\xa7z\x01J\xca\x98\xefV\xf7TEU\xf14\xf8\x96\x92\x0e~h\xae:\xd3<\x12u:q\x80$m\x06\xa8K\x15N\x86R\xb8akVX\xaf\xacyf\x7fW\xd6\x05O\x08\xeb\xf6M\xf7\xa8\xdb}\x84\xdfn~\xff\xf5\xe6\xc9\x93\x13\xf6\x1f\xbf\xdf\xfc\x81\xff\xff\x1f\xf8\x17\xf8\xf8\x8cQ41\x97\xddpG}\xffY\xc4\xd22\xf3\xc2\xbe\xf1\xe5|D\xac{r\xd5i\xeeOa\x99+\xc3\x9eG\xc5v\xc2$\xd8Q~\xd3\x82\x16\xecS\xb4\xb7\x87\xbe\xd9\xf08\xdd\xae\x1c\xef\x97x\xd1\xec\x0f\xa4\xe8\xbf)\xfb\xe7L\x11\x0bu\xe3(ZW\xb9\xd2\xcf}K.\xb6e\xdf]\xf0{b\x1c_WJD\x0c\xad\x0c=\x8f*\xccpV\x9d\x96\x8de\xb4C\xc4E\xdb\xd8\x9e\xb8\xc6\x86\xc7\xf5P\x0eo2%\xb3-{\xb1 \x8d\x1d^r\xee\x03\x0e\x11\xf6\x0d\xd0\xba;\xb6tpR\x0c\xd7X\xf0\x11\xeb\xc9G\xdaq/\x80 \xc8\xd0I+\xa41\x08\x85\xd5\x02xi\xfe\xa9\xf5\xc5\xa5\xafS}\x82*\xaa\xf7F*\x05\xbd,\xde\xfe4\x83\xcf|\xf5\x12d\xc8\xe4\xe5\xb3g<\xd9\x153\xd9y\x87\xef\xb7\xb3,_?;;\xbf\xb8\x14\x7f\xfeN,B\xad[u\xcc\xe8\x04!*) \xe7\xeb\xa4(\xe5\x85^\xf2h\\/?\xa1Y\xe0\x96\xe5 KK}\xd8\xbb\xde\xd7\xa1\xa2Z;7-f.\xdf\xfe\xd4r|\xcd\xe0J(K)#g\xe7\x17\x82\xa6\x138d{\x19v\xab\xf0I\x87\x7f\xd1:\x91\x7f\xbd\xba\x7f\x93\xa5\xabd\xfdU\x89\xa0<\xae#[A\xf5\xfeWM\xed\x8f\xca\xfa\xf8\xaa\xd9)FS\x11vA\x94\xb0\xda\x96|\x91,e?!\xe5\x1d\xabb\x0e\x15\xa2\xea\x95\xee\x17\xae\xd5\x08jV|?{\xd1Q\xdcu\xf1\xdb\xbe\xbc \xaa\xf9\x12_\x9d\xe7sa\xfc\x86\x9e\xfd\xfe\xef\\\x08\xc4\xe3\xff\xebY+\xf8\xfc\xcc$\xe9R\x8e \x88z\\\xbfl7O\xdb\xf4tK\xde[\x1a\xa2\xe9\xda\x99\xf3_\xf6\x89\x10\x1f\xf5^!\xd9\xdeBW\xf5*j\xfdE,-U\x8f\x94\xad\xa4\x19!u\xbc\x8c_oYY_\xa9\xdcE\xab5\xdc\xeblyx\\t]\xa0\x95)(\xbf\xb7\xf42i\xac:\x81\x7f\x97'[\x19\n\x93\xb8j\xab+K\xb9\x91k\xb0c\x87\xa2\xef\x0dX\xf1\xfa\x88\xbe\xe2\xad\x03\xa3\x9d\x87\xefx\xdd,l\xc5\xd5\xae\xb1f\x05l\x92mR\xd6\x9ck[\xf4-\xda+\";\x1d\x1a{\x99\x0f\xbe\xf9\xc8Y\xd4\xa4+\xdc\x9cW\x9d\x9aZx\x9a\x9eMm\xec\x9d\xbeQ\x8bL\xddw\xce\xc5\x99Qu\xbe\x92\n=[\xaaL\xfbe&\x93\xe6t/\xd2\x16\x1a\xb5U\xa9\xa3_\x1b\xbd\x0e\x176\xe2\x92\x14\xba\x89\x14/\xcad+\xcf\xa2\xb7\x89\xd8\x19\xb7U{\xaeYo]\x90r\xa3\x94-\x87\x05|M\xbf\x05\xea\xb5p\xf8,\\\x1e\x8b%O\xb3-v\xf6w:\x150j\xbd\xaf\xf9<\x01o\xb2$m\x1ddd\xfb\xe1\xa6\xabX\x9am\xab\x9b\xa3\xe5\xa7diE\x84\x19\xc2\x07\xf8\xf8\xe9\xeaL\xa5\xe9W&\xb2\xf2\x86+S\xfd<\xd5\x9dEkM\xddvu\x1a\xc8T\xd4\xc2\x1c\xa4\x16\xa3\xa2Y\xff\xd7\x07Xg\xebL\x1a\xdf\xdd8M\x95\xef_\xd1c\x14\x94\xaa>gUz\x07K\xaa\xfdm\xc5\xdb2\xbaf\xc5\\.\xca\xc0\xb4\x00\xa3\xd5TM\x8d\xf1\x11\xea!\xfaU\xb8kVe\xa5V\xb2/\x8f,b\x03j\xd4\x82)t\xd5\x19\xb8\xcf\xbak\x99\xe7\"\x9b\xe1\xee\xeb\x8cC\x99\xb5\x03\xd9b\xb1\xcf\xdb\xbad\xc7\x0eqm\x92\x8d\xa9\xc9\xce\xac\x05/U\x0b\xbb\x9e\xf6\xd2\xf7:'\xfa\xd6\xe7\x1d;h\xed\xb1\x12F:\x9c\xafz\xf8jTu:\x04\xb0\xc5B~O\xb9;\xec\xd8\xa1y\xbd\xcf\x02\xa9\xe7\xc5\xd4\xd4\xb32 \xa3\xbc\xd7\xf4\x16\x9b\x9c4\xe8V\xb5<\xf7q\xe9\xdd\x0d\xd9\x13\xdar*O6\xd4\xaff\x13\xc5d\xd5\xb0X\xec\x07\x8a]OxR\xf7\x98\xef|\xc3\xa6\xb9\xee\xde\x92\xe5\xa9\x10H\x16<\xd5\x99\xb5:\xd1[\x8e \xe9\xae\xdb\xce\xf6\xbfX&\xbf\xa8\xf8\x9a\xed\\\xf0\x0eu\x8f\xd5!\xaf\xba\x04T\xc8\x8c\xe9\xa0d;\xa1\x8d\xf3\x84\x95\xbc5\xa8\xfc$\xc2R\xe5\xf7\x89\xd8\xc2\xd4d\xaav,\x99\x99\xba.\x1e\xd5\x89(5\x96\xe2D}ey\x12X\xb1d#_\xc2\x0f\xaeZ`z)2z\xff\xaf\x98\xaa\x8c\xa7:\x17^\xfb)\xe4\x81@'#\xf6\x84\xc04\xe8^\xe7\x19[.XQ\x92=\x03\xaf?\x7f:}\xfb\xe6\xf4\xf2\xca\xee\x1e\xe8=\xf2\xfa\xfd\xa77?\xd9~\xbc\xfc\xd3\xc77\xb6\xdfN\xeb\x1f\x9b\x16\xfb\xee\xd1q-\xd3\x99d\xef\xfct\xad\x7fk\x0eQ\xe2\xcfW\xf7\x97<\xbfM\x16\xbc\xe1\x10|\xbe\xd0\x94\xaa]\xa7\xed\x1c\xb0\xd3\xf5\x12\xfe\xca\xf3\xacr\x94\xcbp\x9b\x18G/h+\x06\xc94c\xbe\xf2\xaf\xedm\xf8\xbe\x99@\xeb\xe4\xaf\xabG\xd4\xf5\xf8p\xc7\x92R*\x06-\x15B=\xdcW\x1b\x9a\xea\xacV\xaa\x1d\xa3\xeaK4\xb3\x92%\xbe\x88A\x95\xf8\xe3`\xa2\x18h\xf7z\xd3\x84A_\xe8/}\xb7v\xa2NQ\xaaN\xa3\xc8R\xdd\x13\xea\x9e\xb0[\x19\xe2+\xb9\x1a\xde\xb1~\xae\xee?+\xadE>\xad\x95\xf7s\xe9q \xf5|B_\xce5\"m\x16\xe4\xec\x0e\xd3\xfe[\xa4`\xb17\x16r\xbb\x86o\xb5\xa3\x8f\xb5W<\xfa@k\xd5\xa3\xbf\x9fv\x1e\xa0\xae~p\xda\x19\xe3h\x81\x16\xc2\xcf\x17o\x0cM\x80\xce&X\x1b\xa0X\x8e\xa9\x11 H+\xa0\xe4\x1dO3@\x90v@\x89;\x9e\x86\x00SK\xd8\xb6uSW\xd4+\xb6\xfa\xa7L5\xd1\xc2g\x88^\xfdZ\x85\xaf-\x7f^\xdd\x14X\xd0]\xde\xcf\xf3\xce;\xe8{\xf8\xbb\x80\x14\x84\x03\xe5,d=\nY\x8a\xc3\xe5\x13\xf7\x01\x9dV;\xdf\xc5U(\x0ex\xb1\xb8\x139\xa5h\x1c\x8c\xc2\xf1\x06eHk\xe7\xdeT\xd0\"r\xf9T\xa7\x90\x1c\xc8\xbcq\x17\x94\x03VTNG\xfe\xb7\xfei\x82Ze\xe8.0\x07W\xb9!\x18\x85\xe6\xf0@>\x1ck\xf198\xbf\xbc\x02\xfb\xf7\x07\xbc\x10\x1d\xdc^\x1e[A:8\x98\xa1\xc0Q\xcd\xed`\x8c\x02\x7f%\xb7Da\xf9\xcd3!\x05\xbebu\xf0NP\x81\xb3h\x1d(\x93U\xe0\x9f\xb2\x02O\x01;\xd0f\xaf\xc0[\xc8\x0etl>w`\x1bb\x8a\xda\x9d\x08\xbb}W\x9c\x8f\xaa\x89\xd0*\xc0\x15\xd0f6f\x91;x\x0b\xdd!\xbe\xd8\xdd\x82\xcd\xca\x00\xca\xf4G,\x85\x17\xe0,\x87\x07[I<\x10\x88\x1d\xb54\x1el\xe5\xf1\xe0\xa5\x84\xba\x81\x95\xb62y\xf0\xed]\xddry \xef\xb5\xb1e\xf3`)\x9dw\x8eL\xb4V\x02\xcb\xe8\x01-\xa5\x87\xd1 \xf1\x94\xd5\xcb\x01\xef1\x02\x90\xcd\xc0\xd1\x85\x1f-\xb3\x07\x9ff\xf6\xad\x84QK\xee\xc1Yv\x0f\xa3\x96\xde\xc3\x98\xe5\xf7\xe0*\xc1\x07\x18T\x86\x0f#\x96\xe2\x83\xb7\x1c\x1fbK\xf2aHY>\xc6\xb1\xc3N{\x99\xb1\xd2|\x18R\x9e\x8f\xe0\xaa\x13i\x00)\xd1\x87\x81e\xfa\x08:\x99\xb2W\"\xa5\xfa0z\xb9>\x0c/\xd9\x87\xf1\xcb\xf6aX\xe9>\x0c+\xdf\xc7\x97(J\xe4hE\xfd0za?\x8cY\xdc\x0f\xa4\x02\x7f\x18\xb3\xc8\x1f\x1c\x85\xfe0\xb0\xd8\x1f[\xe3H\xf9?T\xaa\xc6\xdb\x02\x00\x06\xb7\x01@\x10\x9a\x8d\x01 \xbe9\x00\xd8\x8fb\xce-\xdeY\x07\xe2\xdf\xff#\x1b\x06`j\xaf\x8e\x99\x97\x9d\xa6\x01\xe0\xa5cX\xf3\x80\x1e2\xd9J\x00i \x00\xe34\x11\x80\xb1\x1b \x00\xd2L\x00\x867\x14\xe8a+\x8d\xf6\x020\xb0\xc5\x00\xf8*\xef\xc1\xdej\x00(\xed\x06\x00\xaf\x8c\x0ej;`\xc7a\x94\x9d\x0ejA\x00\x01\xcc\xf0\xb5\"\x00\xef\xbc\xbd- \xac-\x01`\xfc\x18\xda\x9e\x00|-\n\xc0\xd9\xa6\x00<\xad\n\xc0\xc5%j\xcb\x02 \xb4-\x00\xa4u\x01\x0ck_\x00\xb4\x16\x06\x10\xd5\xc6\x00\xac\x8c\xf1\xb63\x80\xf1Z\x1a\x80\x9d\nC\xd2Fmo\x00\x03[\x1c\xf4P\x99\x0d\x0f`\xec\xa6\x070r\xe3\x03p5?\x00\xa4\x01\x02 M\x10`\xb4F\x080f3\x04\x18\xbd!\x02\x90\x9b\"\x00\xa51\x02\xd0\x9b#\x00\xb1A\x02\xa0\xda\x19-\xa5\x87\x80rzw\xb3\x04\xa07L\x00Z\xd3\x04\xc0\xa61f\xf3\x04\x18\xda@\xa1\x87\xcbh\xa7\x00\xa3\xb6T\x80Q\xdb*\xc0`y\xf0\xb6W\x00B\x8b\x05h\xb5Y\x00@[-\x00\xd9 m\xfa\xcb\x07\xb5]0t\xf82ai\xaf\xf5\x02\xc0\xd0\xf6\x0b=d\x8a$\xb3\x05\x03\xb8\xda0\x80%\xe0Z>@\xdc\xb9\xb4\x84T\x9dgPw\x18\xd5F\xb6\x82\xe3F\x88\x9d\x81R\xe7\x9c4x\xfa,\x80?\x82:\xd60\x8e\x96\x0eP\x0f\xe3j\xeb\x00\x84\xd6\x0e\xe0]\x85\x1a\xe2[\xc0hm\x1f\x80\xd0\xfa\x01\x86\xb7\x7f\x00/\xe7Fm\x03\x01X+\x08\x80\x11\xdaA\xf4\xf0);=3\xad\xfe\xa1m!z\xe80w\xe3x\x8d\" \xb0Y\x048\xbf\xe6\xb0\xa6\x11-Du\xfb\x88v\xe3\x08\x011\xcd#H \x8d\x15\xd9uFc\xf5\xef\xb2\x95\xd2X\xbd\x86$6:\xf3\x18\xdfqz\xdeb\xbf\xf6\x0d\xdb\xb2\x866>B\xab\xf2\xac{\x03^\x8dgy\xdc\x95'\x17]\x81\xd7F2\xa4\xf8N\x17\xdb\xb5\xf1\xd1\xeb\xec\x06\xd6\xd8!\xf5u(\x0f-uuX!\xd3H\xf5tx-\x1d\xb5\x8e\xaeWC\x87\xce\xc9\xae/\x06\xd7\xcd\xc92\xae\xf6R\x88\xa8\x99+G\xac\x97\xc3k\xe5\x06\xd5\xc9\xe9\xca\xb8\x16>G\x8d\x9cQ\x1f\x87~\x11L\x9cF\xad\x89\x8b\xaf\x87\x8b\xae\x85kW\xbf\xb5y\x15U\x07\x17[\x03WsT\xd6\xbd+#\x03W\x15RI$\xa9\x9a\xa8\xde\xc0\xaa\x15\xfc\x9bFiT*E.\xe1\xeb\x83\xf1\xd5\xa5*\x94'e\x90N8\xa9\x07\xf9j\xc5\x17eR\x07\xc7\x1e\xadY\xb1\xcb\x93\x05\x7fT\x1bEJM\xd6\xf2\xaeZog[\x0e\xdbd\x9b\xa4\xfbm5\xacN\xd4h\x92-\xb6|\xbb\xcb\xb2\x0d\xbe\xd3\xfd\xc0Ki{\xfe\x9c\x947W\xf7ED\xd6\xfe\x91\xfa>\\\xdd[\xfa=\x94\xf7\xca\x9a\xe8\xf1\xb5w\xb4\xae\xde\x95\xff\x98'F\x93(ZE\x01=\xcd\xdfr\x04\xdb\xb1\xbc\x9c\x17\xbc\x9c\xdfp\xb6\xc4K`\xc3R\xb9\xb2\x92Y\xf3\xb8l9\xdd\xae\x8cns\x8a\xe0;uZO\x9b\x95\x86\xba`yY\xf0\xf2G9\xe3\xdf\xf4~\x94\xb2v\xfe\xb6\xfdu\xe2>\xcd8\xfc\xac\x12%\x10\x0e(r\xafY\x91,\xaa:\x10q\xc2\xb3p*\xaa3do\xf2m\xf0\x9e\xfa\x1d\xa5\xfc\n\xd8nw\x1c\xd4\xbe\x03\xb50\x1a\xd3\x82\xa7\xc5\xbe\x80\x05\xdb);\xadT\xa9Y\xd5\x9f\xf3\xfd\xa6j\xc1\xd29\x1cJ~ \xf8\xaa\xa8\xb7\x8d\x83r38\xa9\x14\xb7>\x036\xbf\xa8\x93J}\x9e),\xb1\x1a\x01\x8a\xaej_\xc4y\xdaJ\xb0-JVV\nH\xb9k\xb7lq\x93\xa4\xbc\x7f\xb0\x95Tt4\x90\x06\xc7\xa7\xc0j\x99<\xaf\xb8\xd7y\x99lc\x93C\x96\xac\xe4\xdf\x89\xf7{O\xc8\xc0\x83\xa9_5\x0cX\x19\xb8R\x02\x1f\xc1\xe0w\x859\xf5\xb1\x86\x11\\\x87\x16=]\xff\xec\xd4\xd7\x1a\xdc\x958\n\xec\xac\x02\n\xbb\xc0\xcf2\x8f^\xef=\xd4\xd5\xef\x1a\xa4\xa8\xa8\xfa\xce\xf9\x98;\x0e4\x03\x0b\xb4j\xf5*m-\x96}\xefY\xf1\xa7\x91\x87\x97\x9e}Vfy12\xe2\xfe\xbc\x1a\xc7\xd4n\xa7\xf3\xfe\xeb\xbf\xedr~\x8b\xaa\xcf\x94\xdf\x97\xf3\xa3\xd1Xk\xf4\x91\xf1\xb2\xddnd\x8cR\xfe\xaaD\xd0\x91Q\xf3\xdbd\xc9\xd3\x05\x1f\x19m\xfd\xfd\x9bm\x13\xb1?\x84\"\xca\n\x9e\xcf\xd9r\x99\xf3\xc2\x16\x92 \x1e\xbf\xb3\xc9\xab\x05\xdfm\xa6V\xbb\x07ec\xd3+\x9e.e=GY\x97\xcc\x8aW(U\xa1A\xd6Z\xe7\xacQ\xff\x119sh\xb0\xc6\x87<\x8aq`^\xe4\xd5}\xd1jBy]\x95\xe6\xa8\xd3\xa02\x1b\xfeP\x9dR~\x94\xfb\xfc\xef\x9e\xa3\x19P\xcaq&\x93\xef7\x1by\xecQU_y\x15Q\x9c\x01\xfc\xcc\x1f\xe7\x1c\xfeS\x9c \xd9:\xe7\xbci\xc0\x88\xe0Sm\xeb\xa4G\x00\x1dO\x16Rl9K+\xea\x15\x89\xa7\xbb\xdd\x8f\xac\xb8i\x8e\xe2\x8d\x1f\x9e\x17\\\x90\xd5\xb5x*\xb9}+\xcc\xae\x8e\xab\xbc\xe0\xaa\xa4\xa2{d\x93\xb8\x96\x9d\xb3[\x0b\x9d^]\x83E\x07G\x04\xc3\xe4\xc7j\"\xf8\x0c\x84\xe5^Y\x92|~\x9b\x95|n'N\x81\xd7 \xf1\x8f(@\x8e\xc5\xec\xbf\x93\x06\x02\xe2`\xa0\xd19\x9f\xf0\xae\xc46\xf4[\x85\xe0\xa0Z\x9a\x9e\xbd\x9d\x7f\xb8\xfca~\xf5\xa7\x8b\xb3\xf9\x97\x8f?}\xfc\xf4\xf3\xc7\x887/>\x9f\xfd\xf1\xd3\xd5Y\xdc\x9bo>}\xf8p~\x15\xf5\xee\xa7\x8bO\x97u#c\x1bt\x9a\x14\x87\xcf\xd7\xaf\xc6\xba \xfbp.?\x14\xeb\xab*\xbfF\x15\xb1\x88%]9X[\x89\x8b\xf6\xaa\xd4\x06\xea\x9d\x0dUF=\xb0~\x9b\x97\xf0\xc7\xac4\x02}D\x0c\x8a\xcf/\xe1B\xee\xa3l\xe3Fc;\x94u!@\xa0)\x06\xbe\x82<\xdb\xa7\xc8\x19\xab\x0b\xb4S\x85\x82\xd6\xd0\xbf\x7f\xe1|\xd6~\xc2\xeb\x02Qw@\x80\xfe\x00\xef\x01\xa7\x81\x00\xb6\x83o\x87\xef\x03\xe9\xd4\xd8\x85\x00n@ G\x04x\xce\x97]\x08\x91\x0b\x0dt\xd1\xd4@\xfdP\x10\xfe\xb1 \xf4\x83\x11\xcf\xac\xe8+\xf8 \xb6\xff(\x9a\x9a\x86Xr\xa3p\x08 \x00\x02\x89\x00Wv\x15\x0e\xd4\x9c+\x1c\x02\xe7\x02\x11\xf3\x01w\xd6\x16\x0eD\xcd\xd0\x07\xad)\xac\x19^8X\xf3\xbepxH\xe2\xa8:\xad\x0f\xb4|22:<\xef\xcc\x91e\x86\x03%\xf7\x8c\x8c\xcc\x92\xa3\xe6\xcdH\xc3!.O\x0d\x07{\xf6\x1a\x0e\xc1\x02E;2k\x08FO\xdd\xe4\xdb\x80\xe7\xca\xe10\x80 \x9f\x0d\xd0\x05O\xb6\x1d\x0e\x0f\xa4\x13C\x0ev\x10\xc74\xa0\xdb\xdc]\x888\x99k\x88\xe0\x1eDr\x10BO\xec\x1aBNL}\x08_\x19\x1aB?8\xc4\x7ft\x88\xfd\xf0Q'|\x0d\x01'}\x0d\xfe\x1cG\x1c\"\xf8\x12\xc1\x0fz\x96$\x0e\x8e\xdcI\x1c\x1ebZ\xde\xccF\x1c\x1e\x824\xfb=fv\xa0\xa6z\x92\x11\xda2\xeaM\xa0%\x8a\xe2\xf0\x10\xec\xf4\xa5\x9a\xe2\xf0\x10\x94\xd9\x93Uqx\x08\x9a\x08\xe9\xae8<\x04q\x9e\x84Y\x1c\x1e\x820Z\xca-\x0e\xfeD\\\x1c\x8e?\xaf\x98SWH\xc6/ \xa1-+\x18\x07\xb5\x89RX\x18h\xa1\x85Zf\xbf\xc2\xb3 )\xcc\xa7!\xc68\xa4\xbb\xd55L\x87\x92\x80\xe5\xa8`:\x94X!|Ih\x08\xfd\xe0\x10\xff\xd1!\xf6\xc3?\xf4\xa1\xa4\xe9\x95A\xe5\x8c\xe2\x88\xfb\xc6\xa2.x\xef/\xeaB\x94\x00\xc7\x89\xaf\xd6L\xf3\xd5\x86\xa1\xd7V\xd9!Z0h)H]\xf8\x0e\xe4\x95\x8a\xf3\xf3\xb7\xf3w\xefO\x7f \xa6\xe7\xf4\xa1\x8f\xe5\xf4\xf5\xe5\xd9G\x7fvQ\x17\xfaH\x88)J]\xe8#\xf9x\xee\xcbT\xeaBs\xf9\xe6`\xb6\x84\x9f\xc2\x14\xa8E\xb6|\xb7akH\xd2\xa5\x8c\xb1\x15U\x0b\x86\xd7\x9bE\xf6\xed\xfc-)\x85\xa9\x0b\xf5r\x84\xa4\x7f\xdb\xa4\x0f\x82\xc3\xf9]\x88\x96\xe7h5G\x08\x9a\x9a0\x98\xcc0\xa7\xaa\x02r~@\x17\x06\xd3\x1a\xc4\xd2\x18;^\x81j0y\x99\xacUJ\x9e\xb0=tw\x16\x99r\xa0k\xb0\x02P\xca\x0bZ\xab\xc6\x95\x84\xd7bhW\xd8\xfb\xcd\xd6\xaapv\xd5\x94\x86\xee\xdf\xb8\x93\x97-m\x9b\x9eq\xac*G\xa3EU\x1a\xcf\x88{\xba\xcd\"-\xb8\xf7\xdc\x10\xb0\x11\x86l\x7f\x0d\xad\xfegC\xb7\xfb\x80\xad>`v\nB\xe6\xa8 X\x11F\xad\xd8\x88\xd5\xba\xdb_\xcf \xb7,6\x10\xcc,\x88b\x98\x00\xbe|\xf1\xfd\xf7\xcf\xff-\xe4\x95H\xc6A\x1c\xf3@6\xdfZ\xec^|\xff?\xbf=\xff5\x93\x19cZ\\\xec\xaf7\xc9\xe2'~\xe88W\xbe\xf1C\xd1\xba0'\xcc0\xd8\x17\\\xb5\xe4kUa\xff\xb1\xd6\x01DD\xd4\x84\xae.D\xf1;\xe6\x80W\xbb\xd7vy\x92\xe5I\x19\xbc\xb4\x8eJ\xa3\xa6\x8eBT\xe0J\x0f]\xe3\x81*1\x829\xc1K%P\x19\x062\x08\"\x98\x04qj0\x82Y\x10\xc30\x88U\x80\x0fG`\xb8\xea\x1b]\xf1\x8d\xa0\xf6b\x94^\x04\x8f\xc3\x94 \x0cQwG\xa7.,\xfd\xb7~+\x8c,\x1aI\xc2\x9c\xcf\xd2\xb9\xdfGO\x1c\x9d6\xea\xf5\xe1\xaf,-\x93\x94\xcfiv6\xcd\xbe&\xd8\xd5d\xbdH\xd7\x86\xe4\xcd\x82\xc8A\x05\x01\xea\x84\xbc5\x90'\x0fA\x0c\x80\xd0\x8d \x88\x11\x10\xc6\x0c\x08W\xfb\xc7%'D\xc9S\xd5\xbb\xbcq\xc9\x87\x0c\xe2\x15{\x98f\n\xe2\x1fM?(\x88P\xe0G\xa0%LY\x13 \x0eMq\xff\x05\x8e\xe8s\xedQ\xbdL\xef\xc5\x86\xf1F\x16&\x9c\xca\xba\x04_\xddD\xe5)\xb2\xe1kU\xd8\xb0\xb2\xe4\xdb\x9d\xbbf\xa2\xcc`\x9b\x14\x1b\xce\x96\xc0T\x95\x04\xa8*\x89\xb6k\xa9\x95L\xd6\xe5\xa0U\x13\xda\xb5\xde\xe8\xbd$-1h\x85\x8f\xd0\x84\xd6\x88+OM$Q\x98\x9aHv\xc0\x15\xcbt\x99Y\xc7j\xe2E\x8a.\x12\x98\xe7\x8e\x18\x86\xc6\x06\x03\xa3\x80\x81\xf1>zd/*\x86\xd7\xf9\xfe\xde\xe0\x1b-\x9cF\x0e\x9c\x11>\x15A\xca=\xfb^\xc0 \xee\xfd\xce\x1b\xb4\n\x18\xc92\x9d\xce\x86J\x8d\"\xd9cC\xee\xfd\x99\x1c\xef\xb1\xc4rz\xe8\xcc\xc8\x8e\x19\xc3\xd9\xb1uu\x7fI\xc3\xc3\x0e\x91\xcd\x03\xadKPZ\x7f\xd4w:\xe8\x9bgZ7\x8f`\xaa\x05W(2\xf5\xd68\x05Y\xbf\x9e\xf5\x9bUk\xe7o}\xc6j\xfc\xfa\xc6\x11\xf1\xbf\xfa\xce\x93\xa2P\x17\xe6_\xb05\xff\xacn|\x98\xa9\xdf{H~\xd9\xf3\\\xddd \xd0 \x1ep\xd8fE \\\xde\xe1.\xaf|o\xbd\x82\xec\\\xde !\xb5d\xb6\x13\x88D/\xe7#\xff'\xddo\xaf\xd5\x15\xe3\xfa\xae\xff\xd6\xe5\xf3}\xbb\xad=Uy\xd3\xc8\\\"\xe9K\x8b\x102y\xb5FR\x16\xd5\x85\x19I\x01\xfbT\xc9\xc1R\xdd\x03\x7f\x97T\xa7\x19\\\xb4-W+\x84\xdcW\xd4CQ\xdfY\xa4\xc9E\xaf\x81\xfa~\xf6\xc2v\xd5Csk\x92\xfa:\x86\x9c\x9a2Z\xb6\xaa\xf6\x87_\xdd\xa0'\xafo!C\xaeC)\xef\xe7y\x87H\x94P\x9cX\xb0\xd8\xbb^\xe9\xb3\n\xdf\x95\xeeJZ\xe1mK\xf9\xbdi8Y\x07\xea\xf0\xe1\xaa{u\x854\xc0\xda\xcar\x91-y\xb1cx\xdfS\x04yE\xebG\xb6U\xaf\xd5\x9a\xe9M\xb6\xe4=\xbc\x18J\xcc\x88\xb4s\xa63\x95Z\xaa\x05nJ\xc7_\x1fo\x1e\x7f\x96\x8bX*\xb8\xe2D\xdf\xc8\xfd\xb8\xf5B\xce\xee\xe6\x9bl\x1d\x83\xdc\xd0\x8e\xe2KT5\x16\xd5n\xd6\xad\x9e\xdcd\xeb5\xcf\xe1I\xce\xee*\xe4Og\xf0A\xde\xa4\xd7\xc3\x94f\xe9wK^J\x8fER\x94\xc9\xa2s\x9e\xcb\xd6\x05F\xefq\xef\xe3\xdc\x16k{\xdf\x0d\xdf\xf1\xc1}p0\xf8\xaf\xc0it`\xd7\x92\xb6_\xfb\xc7\xdc\xf2)QX~#YQ\xee\x0bL\x15\xb8'\xa8\xc0\xeb\x04\xf6NV\x81\x7f\xca\n\x08\x9eW\xc2\xec\x15xn1U@\xc4F\xf5\xe3\x08h\xae\x10\xad\x0d\xb4\xb4\xf9 p\x97\xb3\xdd\x8e\xe7p'\x1bgW\xd6\x8f\x13!K\x97\xd5v\xcfrO\xc9\xb5\x9aH\xe7\xc6+\xa1%\xa4\xde\xc2\xd3\x84h3\xbb\x94x\xd5\xc5\xa4zV<\xadn*U_\xbf7\xb1\xea\xd6K\xaf|\xda\xe6S\x19\xdd\x829\xcf\x9a\xabW\xf5\xdd_\xf5\xc5\x8d\xfd\xa9Z\xb0Y\x19@\x99~u\xafh}\x0c`Pl\x12\xe5\x88k3@\xf7W\x17\xb3\xaf\xee\xd0\xc49\xbe\x17\x84\xcbk\xb2\xf0\xc9\xf3{\xbe\xd8\x97\xc8}\xa4>bO_\xbf9\xff\xa0\xda\xd9\xbd\xcf\xd6\xbe\xab3Y\xaan\xe0\x15\x16\xcf\xbd|\xd7@\xa8{\xe3m\xb2u\xc8\xb9\x89\xba\x81\x89\xc5\xb7\x8c\xda\xbb\x92t\x95\xc5\xec\xb5\xa7\xcd\x85\xa7\xad\xcbq5\x05\xee1\xd7\xac\x98\xdf\xb1\xb4\xe4K\xe2\xc8Dk\xe5\xb4\xbe\xd1m\xcd\n}\xc9\x1d_*{ \xbf\x9cV\x90\xb2/\x8eK\xc8\"K\x8b\xfd\xb6\xba.\x0e'\xa3\xbc\xc7\x08\x08r\x04\x8bW\xe6\xfb\xdcz\x7f\x98E3\xfbV\x02\xc0)|\xf9\xfc\xfeY\xce\x8bl\x9f/8\xa4l[\x1d\xd9\xf7i\xf2\xcb\x9eo\x0e \xce\xf1e\xb2J\xaa\xc0PY\xb5\x85\xc4\x95V\xc1\xf3\x84m\x92\xbfr\xe3\x06}P\xf3+\xb3E\xb6\x81\xeb\xfdj\xc5\xeb;\xefg\xea\xfa\x025\x07uK\x9eVk\xac\x84\x0dgE\x89a\xcbR\x0e\x8f\x9e=\x82\xc5\x0d\xcb\xd9\xa2\xe4\xb9\xba\x9eo\xc3\x8a\x12\n\xbe\xde\xf2\xb4^W_>\xbf\x7f\\\xc0\x8e\x95\xea\x12>\x04Y\xdd\xbc\x0b\x1bI\xa0X\xed7\x9b\x03\xfc\xb2g\x1bu\xd9\xa5\xe4T\x85^\xf2\xe4 \x13J\x16{\xfd\xab\x18\xd8z\xe5\xfe\xd7\xa7\x8an\x89\xb0\xb8\xc9\xf6\x9b\xa5Xcb\xf2\x08\xae\x05K\xb34Y\xb0\x8d\x94Vl\xb4'|\xb6\x9e\x9d\x08\xb6\xc9\xb6&\x8ff\x8f\xc4\xc1M^EQ]/\xf8\xd4\xbc\x93X\xc0y\n;\xc1\xc8d\xc1O\xa0\xe4l[\xc0\xbe\xd831m\xd5\xc4l\x97\x88S\xb9\xbe\x9a\xf0:IY~\x10\x1b\x18\xc6\xb1\xc3\x8eW\x8a\xbe\xbc\xe1\x07l8~\xbf\x13\xdbaRB\x99\xc9\x94\x90\xea\x1e \xf1\xe9\xf9\xbd\xfct\xa7\xe9a\x06?fw\xfc\x96\xe7'r\xa1\x7f\xf9\xfc\x1e\x8b#*\xff\xa2@b\xe9\xb6R,n\xf8\x96\xc3\xd7\x9b\xb2\xdc}=Q\xff-\xbe\xca\x96liV\xfdz\"%j\xc1R\xc8vJ\xf9m\x0e\x88{J\xc0~W5HE\xc7\xe2\xf9\xad\xbc\xc2\x93\x95\xb0e\xbbB\x89\x87\xa0\\\x06\x90\xaa\xbd\xa2u\x0c\x07V\xc0*\x93\xf7\x98\xbfD\xbf\xcco\xe1|\xd5\xd0)>\xe7.\xcfn\x93%_\xd6S\x91\xae\xbdBj\"\xb4\xe3\xeao\xe14\x85\x1f\xaf\xae.\xe0\x87\xb3\xab\xea\x9e\x11A\x93Zn\xf22K`\xf0\xe7\xbe\x90^\x1dv\xfc/\x7f\xfe\x0b\x82\x10\xb4k%\xd5\x92\xa0\xd4\xa7\xe4\xe9.\xcf\x96\xfb\x85\xbc\xcfV^b\x8b\x99\x14\xbf\x85\xd3f\xb7S\xd7B\xca\xbb\xdc\x95[k\xc1\x16\xf2\x86\xe9\xec\xdb~W\xfb\x86\xaeY!/\xdc\xc6\x97(J\xe4\x97\xcf\xef%E\xf26\xd9\xf2\x86o[\xb2\\\xdd\xb3\xc9\xf4\x04\xc4\xff\xdff\xc9R\x9cZQd\x8a\x1c\xb9\\sya\xef\x89~U`der\x9dl\x92\xf2\x00)\xe7\xcb\xfavb\xa1V\xf2[\x8b\x91\x93\xa5\xd5}\xb4\xf2q\xb9jf\xf0\xe4K\xc1u\x03.\xc1\x0d!>B;(\xf9a)[\xe3s\xbd\xce9\xfb&\xd6|\x85r\xf6\x14\xbd\x9a&+\xf9\xcb\xean\xdc}\xbaP\x92.\xa8\xae\xb4\xc4b\x9f\xe7\xd2)\xd8v\xc5Y\xef\xa5\x91>D\xd3\x07\x07Z\xdb_\xefW\xf2\xf2qV\xf0\x13i\xa1\xab\xfb\x93\xc5@\xf2\x92U\xb9{\xd7\xeb\xe3\x9a\xaf\x934\xc5\xcf\x18\xd8\xc5\xecP\xa9\x9a\x99\x92[\xb6K\x8a\xd9\"\xdb\xe2\xfa\xedR\xae\x9eB\xf9\xff\xc4\xf2L\xfb\xfa\x00\x9eT\xbe\x17\xbe\xdd\x95\x87j\xb9=\x85m\xcfy\xa4\xe1\x1a]\xferZ2\x0b\xa2\xbe\x16[\xb9\x9c\xab\x8b\x92\x17P\xf0-K\xcbdaX\xda\x96\xa3\x98s\x8bw\x06\x02\xfc\xfb\xff\x87\xfa\x0ef\xe9dom\xe0\xc6n\xadm\xd4\xeb\xec\x16\xdd\xfa\xeb{\xa0\xe5\x17\xe9<\xe1\xa6\xe3\xebiz\xf8\xda:7\xa4\xc0\xf2\xeb\xa4\xcc\xc5\xc2r\xd0Si\xd2\x1e2\xb6\xc9\xd2uu\xd1y\xff\xf3\x08}'\xd5\xb2\xa2\xe7\xda4i\xda\xe3i\xeb\xc4\x10\xa6\x0b-\xd8\x9b\xe4Z\x12Yi\xe3\xa2\xbe\xc3X\xde\xaa\xbc\xf8\xf6l\x9f\x8a\xff\x88}L}\xdb\x02_I\xd8V\x9e\xad`_*u\xa2\x97i!\x14\x19kL\xf35Oy\xceJIjy\x93-u\xbb11^\x0f\x9b\xfa$\xfd1\xce\xee\x99\x10Qx\xfe\x12.\x04\x9db}V$\xb3v\xc3\xef7\xbf\xfb\x1d\xba\xa9\xbc\xcb2Xe\x19\xbc\x82\xd9l\xf6\xbf\x90\x07\xc4\xc4Yz\xc0~b\xe9a&\x06}\x97g\xdb'\xab,{\x8a=4\x9ba;G\xb2\x82'\xe2\xf5/\x92\xd4\xab\xec\xc9\xbf\x88\xf7\x9f\xc2\x7f\xa1Z\x11\xc7\xf1w\x1b/^xx\xf1\x1f\xec\x96\x0db\x06\xbc\x92v\x8d\xc0\x1c9\xef\xa4x\xf2.\xcbf\x8b\x0d+\n\xeb\xb4\x15)\xe2q5\x8b\xd6+\xd8\x88\x06?j\x86\xfc\xde\xc3\x90\x8bCy#\xce;\x08RE\xc3\xbb,{2\x9b\xcd\x9e\xe2B\xa0\xd8\xf1\xc4\xf2\xab\x14\x11\xc9\xa6\x10.\x89\x17\xcf\x15\x93\xde\x9e]\xbe\xf9|~q\xf5\xe9\xf3S\xdc\xc7\xd5\x08\x92m\x185\x90\x8d=\xff\xeaa\xcf\x0f\x19\xea\xbd\x10\xacy\xf9\n\xfeew={\x97e\xff5\x9b\xcd\xfe\x8e=\xc6\xd2\xc3\x890\xa1\xc4\xb3;e\x1e|`yq\xc36\x82i6\x82q\xc6\xf4\xc7D\x07LV\xbd\xe1\xbe\xa4\xdbf@I\x8e\x14Z\xf9\xd4\xffx\x05i\xb2\xb1\x08\xa0\x8d\nC\xd2\xc4\xe1G\xf2Mk1m\xdc\x8a#\xf5\xae\xafk\xd5\xbd|\x07\x9d\xa4 \xb3\x12{\x08\x1f#&\xc13q~\x9b\xc9\x1f\x84)\xf5X\xd8\xdc\xb5\xee\x17\xfb\x02~\xb7\xb0\xfa\xa2\xfd\x01ju\x9bn\x0e\xfa\xd4a\x1c\x10k\xb3\x0d\xd8\xaa\xac\xae\xf4\x97g\xd3\xc7\xcf\x1e\xf7\x11VG\x1fM\x8c:\xeb\xf0J\xc2\x1e\xad\xb2lv\xcdr9\x8d\xfbg\x87\xd9_\x1f).(\xab\x1d;\x86\xc8a\x1f\x89'\x85\xd2\xef\xfd\xf8\x1f\x97\x9f>\xf6\xff\xf6\xea\xd5\xabW\xd8w\x11\xcf6gce\xc7d\xf2\xfa\x7f\xb5i\xab3\xc0\xbe\xe0:.\xba\xdeo\x98\xd1\xaa\xdaD \x1e^\xf2f\xb3=\x01\xbe\xbd\xe6\xcbe\xb3\xed\x9eT{\xb8q\xa2nm\x80+\xc9\x80\xaf\x7f\x10,\xf8Z\x1d\x02;Y\x08\x9a\xa13\xbd\\_\xa2\x86*[|\x13\xab\xb59\xfc\xac\x92\x0d\xc7\xb4\xa4^\xd7\x17\xb2\xad\xc0\xf6\xbf\x15\xa9\xffnyT\xcc\xa0\xf7$e\x1a\xe7\xab\xca\xdc\xee~{\xf5\xdd\x92\x02\xee\xf8f\xf3\xdd\xb74\xbbK\xe5\xfa\xbca\x050X\xec\x8b2\xdb\xa2b\xdc\x15\xb4\x13e\xec\xf5\xa4O_\xecY\x0f*\x04*]\x1b\xde\x16)\\\xfd\x01\xbeJ\x81\xd7\xb2v\x93m\x96UG\xdb\x86&\xe9\xb9\xa9d\x14*_I%\xa2}lr\x88Z6\xe1\x89X\xf5\x9a\x05\xc6Q\\\xfb\x8b\xfe\xf2\xe7\xbf\x84\x91\x9dIOo\xf1\xe7gz\xb2\\\xb0\x1cM\x97\xd9i19\x9d\xe6\xa6\xdb\xd4tfk\xbaeC\x81\xaf\xd4\xcb\x92\xb3\xe95.\xedy\x9b>\xbb\xdc\x93\xd4\xe8\xb5\xcd},S`;nt~\xf7\xd9\xce\x94,N\xfft\x15x39ISW@a\x80\x02B>'\x91\x17\nH9\x9d\x01\x18}&x\x17B3;\xfd\xcc \xc9\xed\x8c\xc9\xee\xa4\xcf0*\xc3\xd3.\xfeB)zs<\xc7\xce\xf2t\xe4yR\x191r\xae'!\xdb\xd3\x91\xefI!z@\xce\xa7\x05\x9b=\xeb\xd3O\x0fuk,]\x99\x9f\xde]\xd1\xcc\xfe\xa4\xef\xe7C2@\xed9\xa0\xd16\xe5\xd0LP[.\xe81\x08\"d\x84\x9a9\xa1\xcem\xc5\xe7\xb0\xc33C\xbd\xfa\xdd'\xa50~~\xa8/Ct\xec\x1c\xd1\x91\xb3D=y\xa2\x833E\xc7\xcd\x15\xa5d\x8b\x0e\xc8\x17\x1d7cTI\xab'gt\xdc\xacQB\xde\xe8\xe8\x99\xa3\x9e\xdc\xd1\xb8\xecQ\x14\x913\xa3t\x94\x9cRbV)\xfafP\xa6\xe9\xe0\\\xd3\xb1\xb3M\xed\xf9\xa6#g\x9c\x1e#\xe7t\xe4\xacSj\xde\xe9\xc8\x99\xa7\xee\xdc\xd3\xd1\xb3O\xed\xf9\xa7Jq\x912P\xe3sPQd2/\xd5\x92\x85:(\x0f\xd5q\x80\xf4\x98\x14!m),\x16\xc7x\x19\xa9\xee\x9cT?5\xa3\xe6\xa5\xba3SG\xcbM\x1d\x9a\x9dj\xa0\x93\x16\x0dj<\x8c\x9b\xa1Z-#dBC\xb3T \xa9\x99\xceLUb\xae\xaa5\xe1-0_\xd5\x8e\x07\xc9\x02\x1a\x9c\xb5\x1a\xc2\x1cJ\xe6\xaa\x9f\x0b\xa4\xec\xd5\xe0\xfcU,\x9e\x11;fN\xec\xc8Y\xb1\xc7\xc8\x8b\x0d\xc9\x8c%\xe6\xc6\x06e\xc7\xd2\xf3c-\x19\xb2\xb6\x9cHzV\xa4?K6(O\x96\x9c)\x8bNh\xecl\xd9q\xf3e-\x19\xb3c\xe7\xcc\x8e\x9d5;\\FH\x99\xb3\xb4\xdc\xd9n\xf6\xac\xa3'\xa1\xe3\x18\xe6;\xd5\x8c\x9aE\xeb\xc8\xa3\x1d9\x93\xd6\x9dK\xeb\xc9\xa6\xb5\x05\xc2\xcb\x07\xcc\x11(\xad\xa1n\xcf\x99\xda\x17\xde\xb6OB\xc1C\xc4\xf1=\x01l\xcf\x0c5\x10\x92` \xb1\xed1\x07\xf3\xe4\xdc\xea\xc1|Y\xb7\xb4\xbc[\xff\xda\xd5\x10\x95{k\xc5V\x99\x14x\xf6-\x85\xa8\xd12p\xfd9\xb8cf\xe1\xd2\xf2pG\xc9\xc4\xf5s1*\x1b\xd7\xd4O\xadx#\x9e\x8f\x1b\x9f\x91k \xd2\xa9\xad\xf6\x9c\xdc\xd1\xb3rmn\xd8q3s\xc3ss\xdd\xdfw\xb4\xfc\\G\x86nl\x8e\xaeA{;\xeb\xd4\x96\xad\xdaLh\xea\xc8;u\xe4=fG\xde\xbf\xb5:\xf2\xf63\xbdiI\xe4W\xf7\xc5\xeb\x83\xd2\xae\x15\xaa\xcf\x17o\x9cI\xe5\x1f\xb2%?\xafsg\x0c\xe93%Om\xbd\xcd'\xaaX]\xed\xc8\xf5y\xaa\xb5K\x17\xc9:m\xa5\x82\x06H\xf8\xd6\xec\x03\xabF\x13?h\x8e\x08\xf42OB\xfcMG\x0f\xd0\x91\xc1%MX{\xfb\xef\xe0\xf2\xfc\x87\x8f\xf3\x0f\x9f\xde\x9e\xcd\xbf|\xbc\xbc8{s\xfe\xee\xfc\xac\xdf\xf0\xbf\xfd\xd4\xdb\xf3\xcfgo\xfa}\xe9\xdb\x0f\\\x9d\xfd\x7fW_N\xfb\xdd\xe8\xdbO\xbc?\xfb\xe1\xf4\xcd\x9f\xe6\xa7\x1f\xce?~\x9a\xcb\xa3\xac\xfd\xd9\xb3\xf3\x8b\xf9\xf3\x7f{\xdey\xa2\xeeh\xef\xa7\xdd\xbdO_&\xebT\x88G\xff\xa3\xb6\xd8\xadBne\x01\xe2\x1c^\xf0\xc5>O\xca\xbea\xbe\xde\xb3\\l\x84r\xf3\xe9\xfedc\xb0\x85\xf6:\xc4%\xe3S\xfbT\x1d\xff;\x04\x89-\xa0:\xc4\xf7\xc6\xca\xb9\x108\xd324\xbf\xdeK\xe3/\xed\x81{\x0c\xd0I\x15\x85d\xd7\xdbl\xa1B\xaf\xfd4\x85[\x9e\xab=Jr\xac\xce\xd0T\xa6\xc2\x95\x91v\x87H\xccK\xf3O\xca\x16^\xed\xe5\xc6\xda!Ke\"\n>\xc8\x81\x0f*\xd7\xb0;\xc6\xcd~\xcb\xd2\xefr\xce\x96R\xdf\x95\xfc\xbe\xdc\xb3\x8d\xe1\xa9\x13\xa6\xe9N\xaf+\x15\x8d78\xdb~\xa3\xff\x8d\xe5\x0c=\x0b\xc4-\xff/]?*\x1e\\\xb3\xc5\xb7;\x96/\x8b^\xa2@\xef\x1b\xf5\x86=\xdd&i\xa6\xcc\x84\x96\xdc@\xce\xb7\xd9\xad\xba!@y|\x05\x7f]\x14W\xab\xf0\xa5\xf9\xa7\x96\xe0hU\xa5h\x12\x8a\xfb\xec\xfc\x02\xe43\xd5\x97\xabRJ\xdeH\x1d\xdd_\x8bo\x7f\x9a\xc1g\xbez 2r\xfe\xf2\xd93\x9e\xec\x8a\x19\x17\x9b \xdfogY\xbe~vv~q)\xfe\xfc\x9d\xd0\x08\xfd\xcf\xf0F\xe7\x1b\x9c T&\x05\xe4|\x9d\x14%\xcf\x85\x19%8Z/~\xa1\x17\xfb\xc2\xcc\xf2\x84\xa5\xa5an_\xef\xeb\x8c\x83:\x0c/MR\xb5G\xbd\xfd\xa9\xe5\xe7\x9f\xc1U\x06<\x95\xa2wv~!h\xee\xdb\xbf\x87l/3=\xfa\xc3\xc8\x90n\xd1\xf2\xf7}\xbd\xba\x7f\x93\xa5\xabd\xfdU \xbet\x06\xa6\xfdT\x00\xd3k\xf3UO\xf2Ge\xa2\x7f\xd5\x9fEP\xa3\x92\xcf\x04\xd1\xe2\xf8\xb3\xe4\x8bD\xac\xab\xac\n\x00T\xe1\xe5>\xc6\xea\xdd\xae\xe8\x10\xab\xe1T;|\x01\xdb\xfd\xa6L\x9a\xbd\x88X\x89\xa5w\xf2\xd9\x07\xf1zS\xf0\xa2\xb7L\xf1\xd7\xae*OU*\xa9\xfc\xa5H\xd6\xed\xed\xb2\xb33h\xcc\xbdp}\x7f\xe3\xad7\xfc,\xb7\xa0v\x9b \x8ap\xb2!r\x9d\x94\xd2\x0fd\x98\"\xfa\x87\xd6\xe2S*@\xde\xf3&\x14p\xf5yj\xeaX\xa3?\x1bdt3\x85\xdf\x979\x9b_'e1/\xca,\xc7{\xb0\x86\xf4\xae\xe7\x1b\xc3\x8b\xe5\xb5\x82;f\xbd}c\x7f#\xf4\xe3\xa2|\x9d\x94\xa7\x92G \xbeT\xc4\xc7\x94ua\xb5\x99.\xd8\xaa\x1co\x9dm\\f\xaa\n\x03\xb7:\x10\xf0\xb4\xd8\xe7\xbc\xcel\x04\x9e\xca\xf3\x97:\xe0\x95\xec\x1b/TR\xe06I\x93-\xdb\x00\x93\xe9\xc4-\x84\xdde\xaa\x88P\xa15\xe9~V\x08\x93t\x8dR!TOy#\xf64(\xd8J\xe7AU*)-y\xba\xac\x12\xa1\x16YZe`\xc1^%\x97(DB\x96\xe7I\xba\xcaB\x8b\x10\x03\x17\xa9\xb1<;\xa7\xaf\x86\nm\xe4.\xb2\\Y\xfeK\xbd\xe2\x8a\xc6\xd6\x15K\xab\xfe\xa7\x16\xea\x16:\x1d\x14\xdbo\x96\xb5\x0f\xa4\xbf@w\xf2fD\xb9D~\xd3\"K.IM\x84\xb2\xba\x85\"\x10,d\xd8\xcb\xee\x05~\xd9:;\x10Vx\xd7\xfc\x1fd\xfa\xa3\xcb\xa7o\xf2\xfb\xcd}\xa7\xa9\xef6\xf3\xa9&\xbe\xcb\xbc'\x9a\xf6\xf6\xd5\x1fk\xd2[\x8d\xf8\x072\xe01\xe3\xfd\xf8\x86{\x80\xd1~l\x83}\x14c\xddn\xa8{\x8d\xf4\x877\xd0c\x8d\xf3\x074\xcc\x07\x19\xe5\x83\x0cr\xd4\x04\x1fj~\x0b\x83\xbb\x85\xaeoz\x8fbv\x8fkr\x13\xccm\xa7\xa9\xdd\xdf{\xd5\xfed\xdb\xee:;\xcb\x0c\xce%\xb7k\xcfv\xf5\x99\xba \xb1e\xa6\"E\nC/i\xa5\x80b\xbf\xb8\x11\xafm\xb2\x05\xab.\x1eFtF;+\xbc\x96ws\x97\xfd\x94/y\xfe\xfa\xd0\xde][\xfb]{\xaf\xfb\x0e>}~{\xf6y\xfe\xfaO\xc8\xf6\xd1\xfa\xf1\xf4\xf2\x8d\xf9\xc7\xb7g\xd5_\xeb\xcd\xc8\x8a\x0c\xdf\x87\xf0\xd1q4\x96\x0d#\xcb\xcbf\x1f\xcf\xc4\xbcgPM_\x93%\x83p\xa7\x97o\x14\xfb\x92\x02\x16\xac\xe5f\xefN\xf2e\xe7_\x8d\xc7\xbeXpeo\xc9!\x90w\x05/^v\xffY\xbf-&o\xbc^ \\\x8b\xd6\xfa\x12\xeajR\xf5\xc3\xe6\x07\xbe\x94\x82\x17\xe4\xacU\x86Y7H\x10p\xb0)\xd1z;\xebQ\xc4\xedN\x1c\xb1\xba\xce^W7^E\xddh\xb5t\xd6*\xba2\xbe~n\xac\xca9w\xcd\\T\xb5\\t\x9d\x9c\x9co\xdf\xefe\xad\x90\x8b\xae\x8dS\xd6F\x0f\x9b\xa5*nH=\x9c<\xe6\xf6g\x83\xa4l\xc6\xd4\xc0\xd9\xeb\xdd\x06V\xba\x91j\xdc\xe8\xf5l\x03*\xd9\x06\xd4\xb0!\nc\xc4J\xb5qk\xd4F\xabN\xf3\xd7\xa5\x8dV\x91f\xabE\x1bR\x85\x86\xa6:\x94\x94Z\xb3\xd8*3kEYd-\x19\x92\xaa\x15\xe6\xb3\x03\xef\x0e\x1aY-\xd6T\x86a\xfc\xfd\x8d\x7f\xeca\xb5a\xaa\x16\xac\x85\xce\xac\n\x1b\xa1\x1elX%XO\xca\xfb\x9b\xe1\xc0\xea\xaf\x8a\xd1\x9d\x93\xcb\x80:/g\x11\x93\xa5\xb6\xcb[\xd5e\x16x\xd0+\xb9\xccw\xff\x8e\xcd5\xaan\x8b2Y_\xad\x96}n\xde\xfa\xac\x80\xca\xacn\x12\xfb\xc0j,g\x1d\x96\xbd\x02\xcbU{\x85r\x81Zo\xe5\xab\xb4\xea\xd7X\x0d\xa8\xae\"\xd4U\x85WT!\xf5K\xbe*\xaa\x91\xea\xa7\x90\x91;\x922\xa8Z\xaa_\x1d5\xa4.\n\xa9\x83\x1aT\x01\xd5\xafx\x1a\xb3\xd6\xc9Z\xe5\xd4/\xfd\xe8W6\x8dS\xd34Z5\xd3\xb8uL\xb4\n&o\xed\x12\xb1j\x89R\xafd\x14\xf6\x98\xa3Q+O\xdc\xd5I\xc4\xba$BER\x87\xe41\xab\x90\x06\xd5\x1f\x99\xf5F\xe3U\x1a\x8dWc\x14\xffu\xbduE\xbe\x8a\"\xad\xbe\xeb\xd0it\xfe\x0414\xebI\x86(\xeb\xc8\xac\x8eA\xeb|\x8b\x16\xb2&-\xba\xccj;\x15\x89\xcc~\xe3\x87\xc7\xda3R\xf0_\xf6\x95y\x08+\xb8\xcb\xf2opWy\x00\x95\x0b\xab\xbc7k\x0dv<\x17D\xccz\xb3\x88\xb8\x15\xdb7\x87\x1fX\xf1\xa5h\x08f\x9d\x9e\x88lQ*\x7f\xb7n\x8e\xa8 R\x8eJ\xcb\x07V?6\")\xffUo$\x83>\xa5\xd9N\xdb\xcb\x80@\xcf\xd4[V2\x95JvP\x99^9/\xf7y\xaak\xa1\xb45!\xfd\xaf2\xee\xdbjp\n\xe7\xfd\x88\xc9\x87/\x97W\x88cn\xc3\xd3uy#v\x80Ur\xaf\xe4\\\x06\xcb\xa46\xe3;\x96\xb3\x92\xab\xd1\xd5\xa0b\x03\x15\x06\x0d\xde\xa3\xa8&\xa0\xe3\xc53zO[9\xe5f\xc8\xfbl\xdd\xb5\xdeeMRk\xcdZ\xf8b#\xb2M\xe3t]\x8es\n\n\xfc\x85\xbc\xd3u9=\xa0\x94\xed\xfa*;\x15D\x95\xecN\xd7\xe5t0\xfd\x1a\xae\xcb\x89hy]5\xb7\xee\xe1\xd3*\xb8\xf7gt?\x90\xcf\xf8\xec7BQ\x9c~\xa7g\xc7\xf9\x0c\xb8\xab{\xb2\xc9v\x9d-\x91\xec\xf3lYWLVE\xb82\x94&\x03\xd3M\xce@\xeb\xdb5\x18\xe8[\xba\xae\xe7\xfd\xc7\xec\x02S\x0f\xe6\xa9\x073\x8am\xea\xc1\x0cS\x0ff|\x9c\x81\x99)\x1a !?\x05}\x93\x9c\xb3\xa2`@\xe6\x8a\x82\x01\xf9+\xb6\x85n!u\xb4\xcc\x16\x05\xe3\xe6\xb7(\x18-\xcbE\x81?\xd7E\xc1h\x19/\n\xa6\x1e\xccS\x0ff\xe5\xee\x99z0\xb7`X\xe6\x8d\x81\xae\x9cz0\xfb\xb3u\x14\xf8\xba\x0f\xfb3w\x14L=\x98\xc32}\x14L=\x98%\xf82\x83\x14L=\x98\xcb\x019D\n\xa6\x1e\xcc\x81\x19H&\xc9S\x0f\xe61\xb2\x96\x14\x8c\x9b\xbb\xa4\x80\x96\xc1\xa4\xc0\x9b\xc7\xa4\x80\x98\xcd\xd4yx\xea\xc1,a\xcc\xec'\x05\x83r\xa0\x0clS\x0f\xe6\xb1{0\xbbO(u\x0fL\x19\xd0\xd1}\x12\xeb\xbf*_\x80r\xe4\xf3\xa5r\x1c\xe6\xfc\x97}\x92\x1b\x8e\x81\xa6gE\x9fE\xaa7g\x8dSUH\xca\xefS%\x16 ISa\xdfl%\x1b\xa5T\xad={xN\xf7\xe5\x8d\xcc\xe62n\x1aUcW\xed5\x04\xb6\xab\xfb\xc7*+\x89\x95\xfb\x9c\x1738c\x8b\x9b\x9a\xf2:\x8bK%)\x99\xad\xbd\x98\x14R3(T\xd6\xbd$\xc5\xde%\xf7-\xb1ne\xbffHJ\xc8\x16\x8b}n\xf6D{-\xf3\x06ny\xaaW\x88~\xafO\xd0\x13\xed\xfa\xac\xdb\x8d\xca\xe7\xf0ofxHd\x85\xf9\x8a\xe7\xb9rH1\x1d\xb0H\xb6\xf2\xb4\xd9d\xae\xed\xd8A\xfd\xb6\xe2\xfd\xd0\x8a\x86\xbb\x9blcl\x83\x96\xdb \xb7|\x9b\x8d\x12a\x17\x88t\xcaAsLN\xb3\x92?[d[\xe9fW\x02\xa9\xbf\x0f\xf4\xc2.\x06\xe7\x7f>\xfd\xfc\xf1\xfc\xe3\x0f/\x85rXl\x12\xd9\x92U\xa2W\x89b\x9b\x03\xf0\xfb]&\xfb\xdc\xf0\xfbR\xbb\xc3\xd3\xac4\x9b\xcd-\xd8f#\x15\xe66C\xbbd5\xae\xf4\xea\xc9\xaf\x82\xf0\xaf\xf5\x95\xb6O\nn\xb4k\xabZ\x0c\xac\x93\xf2f\x7f-U\x82\n^=k\xf2\x9f\x9e%E\xb1\xe7\xc5\xb3\x7f{\xfe\xe2\xc5\xd36\xd7\x85\xcce\xfbr\x8e\xdd}o\xe5\xbf\xbf\xbf\xa6\xd12\xb4\x1aG\xc7\xbf\xdaW\xe2W\xb6\x99R\xca*\x85\xa7\x95\x90&\x95~\x9a\xf5\xa5\xf7\xba\x8e\xa1UW\x8c\n5~\xc3:\xab\x9d\xdf\x97<-\x92,\x9d+g\xf8\x14\x13\x9bbbSLl\x8a\x89M1\xb1)&6\xc5\xc4\xfa0\xc5\xc4\xa6\x98\x98\xdf\xe2\x98bbSL\xac\x03SL\xac\x82)&6\xc5\xc4\xa6\x98\x18i\xe4)&6\xc5\xc4j\x98bbSL\xac\x07\xd4x\xc7\x14\x13\x9bbb>\x199bL\xccv\x97\x94\xe1wV\x0e\x8d\xfat\xa2\xff*\xbf\xe7\x82\xa5M,\xe2\xbaowK\x97\xb6\x11\xa8\xba\xbb\xe1i\xa5\x8eT\xb3\x97\xf68\xe2\xf8\\\xecus\xfe\x99\x90Ka\x00)\x05V\x08:\xfa\x1b\x8a\xc5g*\xa4t\xc1\xd2\xc7\xf2\xbc\xa7\xaaq\x96*\xecd\xf8\xe7e\xfbe\xa3\x11w\x9a\xa5\xf3E\x9e\x94\xc9\x82m\xe6\x933~r\xc6w`r\xc6O\xce\xf8\xc9\x19?9\xe3'g<\x02\x933~r\xc6\xfb-\x8e\xc9\x19?9\xe3;09\xe3+\x98\x9c\xf1\x933~r\xc6\x93F\x9e\x9c\xf1\x933\xbe\x86\xc9\x19?9\xe3{@u\xb4N\xce\xf8\xc9\x19\xef\x93\x91\xc9\x19?\xba3\xfePK]\xb2N\xb3vAM\xe7\xccvu\xff\xba\xd5~J\xb6\xa2\x92\x9dl;\xbd_\x05\x0b\xd8fS\x17\xe1\xc8\xcb\x0f\xb3[^;\x8a\xd8\xbe\xbc\x89\xeb\xa1\\W\xdd\xd4/b\x95\x025\xfe\xba\x7f\xe6\xbe\xbc\xc9\xf2\xe4\xafj}\xe5|#OH\xf6\x8eYm\x89\xd2\x87w\xe5bTS:\xd1\x05,\xea\xa2\\\xc1\xd5U]P\xd1T\xfa\xb4zw!q #&a9\xe9\xfb\x1b\xdcv\xfb,\xd7\xc3w\xcb\xa8Z\x7f\xaf\\\x9d\xe5\xe2\xa6\xda1\xab\xce\x97u\xe9S\x0b]\xb7\x82\xaa\xa9z\xea\x969\xd5\xf7\x10.\xb24\xe5\x0by\xd1\\=\xa0\xb0aX\xbb\xc3]\x0b\xe1&\xf9\xd6\xb1\x1f\\=\x93\x85\xe1\x96\x15R6\x90&nWu#\xe2\xa2d\xe9\x92\xe5\x95YT\xbb\x9d\xae\xf3\x8c-\x17\xac\x90\xc4\xb5[\xdb\xd9\xfa\xb4\xbd\xae\xdb\xaf\x95\xfe^m\xba\xa2,\xea\x9b\x1b1([\xfc\xa9\xb4\xc4\x9e\x1cN\"\x9f\xcfe\xd4x\x93+\xd64f\x9ci\xc4\x18\x93#\xbe4(\xb64^\\\xc9\x17S\x8a\x8c'E\xc7\x92\x94\xff\x1a\xe1\x965\x8e\x14\x1dCB/\xd3\xb3^\xa77,v\x04\xfb\x9d\x81\xcf\x167\x8a\x89\x19\xb9\xe2C\x83cC\xa4\xb8PH\x0chP\xfcg@\xec\x07U+\xa3\xc6x\xc6\x8e\xef\x8c\x18\xdb\xa1\xc4uF\x8c\xe9\xd8\xe39\xa3\xc6r\xf08\x0eb\xe2cZ*6~\xa3b5\x06:,v\x13\x1d\xb7Ac6\x8e\xad\xd8\x11\xab\xf1\xed\xd2c\xc5h\xec\xf1\x19\x17\x05\xc3\xe22\xc6\x05}\xd8\x15}#\xc5c\x86\xc5b\x8cUbn\xb8c\xc6`J$\xfe2,\xf6\xe2 -Xc.\x84x\x0b\xe6|\x0d\x89\xb3`\xef\xff\x1d\x9f{dl\x856y\x7fL\xc55SB,%(\x8e\xd2w:\x0d\x8e\x9fxb'\xae\xb8\x89;fb\xe1\n=V\xe2\x8f\x93\x981\x92A\xf1\x11Rl$&.\x82\xc6!\xfc\xf1\x90\xd1b!\xe8\xf8=I\x1a\x14\xff0\xe3\x1dCb\x1dhlcP\\\xc3\x8cc\x8c\x1b\xc3p\xc4/L\xb7\xae\x19\xb7\x18+f1b\xbcb\xecX\x055NA\x88Q\x90\xe3\x13\xb4\xd8\x04\xe2\xc6\xc7F\xa5\xfa\x9a}\xf1\x08r,\x82\x14\x87\xe8\x11?n\xfcaP\xec\x01\x8b5\x8c\x19g\x183\xc60\xe4{\x13b\x0b\xfe\xb8B\xa3\xfc\xedV\xb5v\x18F4\xbb\xb2\xb4\xb7\x8anmeif5f#+\xac\x89U\x19\xde\xc0j\xc4\xe6U\x15\x9f:'\xecAM\xab\xcc6UH\x8b\xaan{*\xf4\xac\xe8\x12\x991[R\x0diGU\xb5\x95\xea\xd1\xd6iE\x15\xd1\x86*\xba\x05\x95\xad\xfd\x14\xca_K\xdb),\x904f\xbb)_\xab)GeK9E\x12:0E\x12\xa6H\xc2\x14I\x98\" S$a\x8a$L\x91\x84\xdeO\xbe]z\x8a$\x94S$a\x8a$L\x91\x84)\x920E\x12\xa6H\xc2\x14I\x98\" S$a\x8a$\xfc\xea# Xe\xc2\x90\xaa\x04\xa4\x0ea\xc4\x1a\x04\xc4\x136\xa8\x11\x10\xb5 P9\xb9J;0\xb9J'W\xe9\xe4*\x9d\\\xa5\x93\xabtr\x95N\xae\xd2\xdeO\xbe]zr\x95N\xae\xd2\xc9U:\xb9J'W\xe9\xe4*\x9d\\\xa5\x93\xabtr\x95N\xae\xd2\xc9U:\xb9J\xffq\xaeR\xbcM\xcb\xc8-ZJ\x9e.y\xbeM\xd2r\xc6\xae\x17\xc9\xec\xec\x96\xa7%\xb9\x11\x86|\xa4\xf9\x14\xe6\xc1\x8c\x95e\x9e\\\xef\xcbc\xf7\xca\xf8\xc6\x0fc\x1c\x13G;o&\xe9\x92\xdf\xe3\x88\xae\xb3l\xc3Y\xbf\x15h\x8d\xc9\xf8\xb5\xf3\xc1\x1f\xcb\xefs\xaa\xb9\xaa\xea \x8a$]o\xb8\xe0\xc1wj\xd3\xdb\xb1$?\x01V\x14\xd9\"\x91\xc7\xa4j\xc7\x02.\xde\x9e=6\x05\xa9^>\x12\xbf\xf2%\x15\xc0\x1a\x1f\x13,\xf9-\xdf\x08\xe6\xab\x060e\xc9\x167\xedM\xaf\xd5\xf2\xa5\x95\xfa\xff\x99\x17\xbb,-\xf8k\xbeN\xd2\xd7\x9bl\xf1\xed\xa4\xfe\xdbY\xba\xec\xfd\xe5\xcd\x0d_|\xbb\xba\x17K\xa2\xf7\xfe[\xbeIny~u_\xdb\xaf\xefY\xc9\xf3\x93No\x17\xd8\xb2\x83X.\xbf\xecy.\x8c\x9b}!\xbb\xbf\xc8e(g^X%\xbe\xe6(Y\xf4;\x12\x87\x8a\x08\"\x1c=\xf9\xa2\xbe\xd6\x93&\\\x8e0 :\x8e\xec\xb48\xb8\xc8\x0f\xbb2\x9b]\xc8*\x82\x9f8\xbd\x85\x0e_\xbe\xf8\xfe\xfb\xe7\xff\x16\xce\x8b\x82/v/\xbe\xff\x9f\xdf\x9e\x87\xbeZm\x145\xa9U\xcd\x8cR\x9d\xdf\xf8\xa1h\xb9\xf3\xc4\xde(Lf9\xf7\xabz\xba\xf0G\xb6I\x96\xac\xcc\xf2\xa2\xcb\x06u\xda\x90\xd2L\xe6\xc0\x0dgK\x9e\xf7g\xd1\xd3x\xb8\xbe\xab\xdc\x9e\xbd\xc8\x95\x9a\xdf5+\x92EU\xbd \xd6d\xf7\x19\\\xab\xba\xee\xc0\xb8n&\xd5\x06\x87R\xb4V](`\xbb\xddx\xe8\xdc^\xbd7Bu\xa4\xc5\xbe\x80\x05\xdb\xe9vX2(R\xfd9\xdfox!\xbfvU\xae\xa1,1\xcd\xbd\x1e:$ \"\x9f\x94\x16\xc3 $\xe9b\xb3W\xb6\x9c\xd8\xb6\xeb_`\xc9J&\xe6\xb6_(\x1a\xf4\xa9M\x8e\xdeCX\x85\xfdL\x9eiE\xfc\xb8\x80\xa2de\x15HUf\xdf\x96-n\x92\xb4\xe3l\x94#\xcf\x93\xa5\x19\xddD\xd8\x1cu\x93{\xffc\x94\xc9\x96\x07\xa2X\xb2\x92\x7f'\xdek\xfd*\x0f\x1f\x92y\x16\xea\x83\xa4\xf7\x86\x157\x91\xd2\x86\xf8\x90w,/\xe7\x05/\xe7\xfd\xb5\xab\xc1J!x\xee\x99\x01(\xb3\x92\xa1\xd7\xcch\xacIZ\xf2u\xa7][\x03\xb6o\xa2\x01g\x03\xf8X\x01nv4:\x95\xe5e\xc1\xcb\x1f%W~\x83< 5\xe3\xf9\xdb\xfeg^d\xdbmR\xceM\xea\xbc\x92cPS\x0d$Pq\xe9\x0eVkX,\xbd\xd6s\xe2\x9f#\x0cw[o\x03# \xeb\xd3^\x171\xb2\xdd\x0e\xb2}\xb9\xdb\x97\xcd\xdfv9\xbfUSkaH\xf9}9\x1f\x95\xa6ZC\x8e\x80\x8b\xedv#`\x91\xf2R\x852G@\xc7o\x93%O\x17|\x04T\xf5\xf7k\xb6\x95\xde\xbe+\x16~V\xf0|^U\xcb\x0e\x19\xaf\xb3\xe1\xa9\x05\xd71d\xeamF\x1d\x04[\xb6\x8b.h\x14\xaf\xe8\x9dB\xac\x87(\x0b\xa4\xbc\x1f~\x19W\xd8\x89\xca\xbd\xd3_\xddW\xa7y}d\x96;\xa6:\xd0\xab\xed\xf2\x0f\x8a\x01\xb3\x1f\xe5^\xf7\xbb\xe7\x86g\xff\xe3\xa7\xab\xb3\x97*\xa9c\xb3\x11\x13\x84\x1b.\xbd\x06\\\xad\xf7\x19\xc0\xcf\xfcq\xce\xe1?\xf7E l\x9ds.\xf6z4\xa0\xae\n\xaf\xa5\xe3\xca\x18G&\xe3l9\xd3\xfe\x07E\xd6\xe9n\xf7#+n`\x99q\x15\x00V\xd6\x04\xaf\x8e/\xe5}+2Z\xc9\xdb[aVt\xfc\x8a\x05WI9\xed3Q\x85g\xa9\x1d\xb8m\xe5\xa1WA\x94\x08\x98/C\x9c\x1c\x04_\xca\xb6\xdc+k\x88\xcfo\xb3\x92\xcfqB\x1487d\xdf\x96\x0c \xf13\xfc7/r \x0c\x00\x1a\x8d\xf5W\xc2\x16\xad\x80\xa7\xfb\xad\x0b\x0d\xc0wpy\xfe\xc3\xc7\xb3\xb7\xf3\x0f\x97?\xcc\xaf\xfetq6\xff\xf2\xf1\xa7\x8f\x9f~\xfe\x18\xf8\xd6\xc5\xe7\xb3?~\xba:\x0b\x7f\xeb\xcd\xa7\x0f\x1f\xce\xaf\x82\xdf\xfbt\xf1\xe9\xf2\xf4\xbd\xe3\xb5\xca/\xf72b~\xbe\xb4\x806\\&\xeb\x94/?\x14\xeb\xab\xca;\xac\x92\x97\xa0j\xb8\xdbr\x1f;\xeeU\xd2P\xef\x16\x96{1j\xb0\xf2\xff%\xfc1+\x9141\xef\xdb\x8a\x9f/\xe1B\xeeKlcG\x81\x1d\x0c\xba@\x14N\x9f\x81\xaa \xcf\xf6\xe9\xd2?\x9a\xcb\x12V\xd0\x1a\xee\xf7/\xac\xcf\xe1\xa7\x8c.\x10\xd68\x10\xd798\x0d\xf1\x06\x88,\x05\x9fq\xde\x06\xef\xc9\xa5\x0b\xc4YC\xc0\xcc\x058\xce8\xbd\x07\x89\xdfY\x03M\xbc4P>\x02\x84}\x08\x08\xf9\x18\x84s\x13\xfa\xb8y\x8a\xea?\xb6\xe5E\xc9\xb6\x88\x7f\xa5\xf5\x10mR\xae#z\x17\xea\x83\x07n\xdev!pt'+\x9b\x81Qo{\x1b\xa8\xf2D\xd3\x1buW\x1c\xff\x90c\xcc\x94\xbaE\x89\xdd\xa0\x896\x8a\xddI\x9c\x16\xb3\x92\x9fT\xa9\x9c\xdbD\xa5\x97\xaa\xff\x95\xc6\x8d\x15\x99\x84I\xb7\x86\x90\x8f q\x1f\x14b>j\xf0\xc9\xb4\xf7\x9a\xef\x84\xaa\xc1\x9dC\x85C \x0f\x02\xe7N\xcb\xc2\xc2\xc1\x92\x9b\x85\xc31\xa7\xe1\xcc\xa4\xc2\xe1\x98\xe4\xd8\xef)\xc6\x81\x9aFFB\xd6O5\xc3\xc1\x9f\x80\x86\xc31\xd9\xe6Ja\xc3\xe1\x98\xd4\xe0Ip8\x1c\x93\x0eO\x1a\x1d\x0e\xc7$\xc8\x91\x88\x87\xc31\x89\xf1\xa7\xf2\xe1\xe0N\xf0\xc3\xe1x\xf3\x08=y\x84d\x11z\x91aY\x868\xa8\x8d\xcb\xc7\xaa\x00K'\xc4\xc2\xf9\x95\xd8\xe9\xdeP\x8d\x86P\xc3\x8a\xe6\x82\xd50\x19\xe8V\x98\x0ct ab\xad!\xe4cB\xdc\x07\x85\x98\x8f\xfaP\x06zs}\x12\x85\x0bj\xf6f\xea,\x0ehB-\x0e\xc1\xc2\x18.\x8aZ\x83\xccW\x1b\xb6\xa6\xbe\x14\xf9\xc1\xfd)\x1a]\xf8\x0e^\xbf\xff\xf4\xe6\xa7\xf9\xf9\xdb\xf9\xbb\xf7\xa7?\x10\xd2\x19\xfa\xd0\xc7p\xfa\xfa\xf2\xec\xa3;\x03\xa3\x0b}\x04\x84\x14\x8e.\xf4\x11|\x08f\x10\x843 \xf0\xf6\x04>x\x18\xd2B\xb7oj\x9f\x04\":o7\x05\x1fP\x12_\xba\x10\xcc\xd7\xd0CN\xed\xf6\xd9\xe5I\x96'e\xd0\xf28\n]\x9a\"\x1f!\x01+4dm\x06\xa8\xac@&\x04\x89{\x80\xb2\n`\x04\x042\x03\xc2\xd5T S \x941\x10\xa3\xa0\x8eOT\x98j\xa2*&\xd9b\xd1\x87\x0ct\xab\xdc8\xb5\x14\xaa\x94\x02yI_\xf8\x10\xab\x8e\x8eF\x11=]\xb1~\x83N\x8a\x9f\x0ca\xe6f\xa9qIp\x17\x08#\xfaG\xba>\xfc\x95\xa5e\x92\xf2\xb9\xdf\x0e\xf5\xdb\x9f\x1e\xbb\x93\xa4\xafhZ\x8a\xa4\xac \x1cR@\\\xf2$\xd5L\x9a$\x90'\n!\x8a\x98\x95\xf9\xcd\xbe\x9c\xeb\xcac\x81\xe1je\xda\xb3\xb2\xe4\xdb\x9d=\xdf\xba\xcc`\x9b\x14\x1b\xce\x96\xc0T\x96uu/\xbevo\xb4\x92k\x1a.\xa1\x9a \xd7B\xa3\xf4\xd4B\xe2\x83\n\x07\x16\xc1\xb1\xc5\xfc\xa6fZ\x9d\x9f\xac\xfc\xd3\xe0[?\xbf\xbefZ\xb68\x93\xcd\xdc\x18\xb3\x19\x8b7\xf2\xe3a\x8a=\x9a\x13\x12\xb7 \x88\xd0\x04\xc4bhQ\x97\xe0\xf8J\xe7;z\x83#\xfe\x90\x07)\xb8\xe1\xf9\x0c\x1e\xc9t\xec\x17D\xc4\xf6}\xc2\x19X bG\xc8\xeel>To?\xee\xc7\xef\xa0\xfa[{\x1f\x0b\xf2\xcd[|\xef\x0d\xb6\xae\x93\x1d\xef/z\xfe\xf6]\xbd\xd0\x0c\xe6\xb4\x17\x93{\xf98\x17\x8cs\x89\xd8\x16\x05a\x19\x0c\x17|\x83'oZ;\xb4\xa1\xc1L\xbd\xd5\xdf\x95Q\xf1\xc26\x80\xdeN\x8c\xef\"\xd8\x0el\xee\xbe!F\xc4\xe0\xeet\xce]6\xc2\x06\xb0\xec\xac\xee]\xd5\xb5\xa3\x8eiT8wPt\xf7\xc4vNl\xd7\x1c\xda\x9f\xdc\xb9K:&\x8b\xef\x8e\xd4\x9d\x91\xb8+\x12wD\xffnHP\x01\x0d\x0cW\x06\x0dxw@\x07\x8b\x1d\xd2d\xd9\xf5\x08\xc8\xf0\xdd\xce\xba\xd3\x110\xf6\xc8\x1biw\xc3w\xb6\xf1v5\xcf\x8eV\x13NV\xe0\x96\x85\x842\xb0\xbfx\xfc\xcb\xc6\xbb`\xbcK\xc5\xb5H\x88\xcbc\x9c\x85\xe1X\x12\xceM\xaf%g\xc8\x02p\xbe\xda\x17zD\xdciC\x8f\"\xdc\x86\xb0\xbd\xad\x9b\x9d\x12\xe4\xac\xd3\xe04`G0\xd60\xba~\xed\x8e\x91\x81\x8dL\x0751UmK\xdb\xb4\x1b\x0dL\x875/\x1d\xa5q\xa9\xf9]\xb1\x8a}\xf2\x87\xee\xb7\xf8\x0c\xb0\xce\xe4\xa3\xad\x7f;\xf48\xb6\x8fS\x1bIQ[G\xd1\x9bE\x11\xdbC\x055\x84\xb2\x9f\x91 \xa2\xe9\x93\xab\xb1Sh+\xa7\xd0\xe6M\x93\xe7\x0e&\xcf]\x1f\x8e\xe4\xb9\xb3\xd8\x98^q\xc3\xecK\x8f\x11\xec\xc5\xd9\x9b\x9a\xb31P\xb8,[l\xdf0\xaa\xec\xfbfL\xdb\x9e~{\x9e\xdftFo\xeb\x1d\xa35O\xbf\xa5\xe1\xb4k\xd40\xed\x1a5x\x85{\xda5Z0\xed\x1a\xd3\xae\xf1\xdf{\xd7p\x85\xf9\xd1)a\xa2im\xccF\xc60\xec\\\x8fs3\xaemZ\xabEZ\x85\x07i\x94V\xb7F3N~\xc1\x87=\xef\xcd\x11\x01\xfb8v7D\x84\x925\xcd\x01\xf0i\x16[\xc8\x94j\x1a\xe0\xcf\xda\xfb\x11\xd3M\x04\xdb\xd3\x96\xde\xc3A\xa6\x02x\xcd\x05\x18\xd9d\x80\x08\xb3\xc1\xf6\x8e\xaf[\xb0-Q\x91\xb4\xdbb;\x97\xa5\xb4\xdc\xbd\x1d\xda\xd408\x8b\xc4\x07l\xdc\xc7\xda[ \xe6\x06\xf8(\x07/\xf5\xe06=\xc0\xcbo\x0d>\x13\x04\xbc\xc5\xd4^v\x81\x9fe\x04\x93\x04\\f \xd8M\x13\xf0\x91\xe8\x0e\x9cx\xcd\x14\xa0\xe2G\xa6\xee\xed\x80\x1b\xbff\x1c\xa9\x0dq\xd4\xba3\xea\xa2\xcd\x19\x1bG\xd0\x8e\xb5h\x9fZ\xac\xc7\xff\xb4\x1bN\xbb\xe1\xb4\x1bv`\xda\x0d\xa7\xdd\xb0\xfa\x89\"\xca\xd3n\x08\xff\x94\xbb\xa1/\x9f\xdf:]\x9b\xe8;\xbb\xb1\x07c\x1b\xcf\x7fd\xff\x02c9\x04\x00w\n\x00\xf4z\xa6\xd3:\xa5\xa3*\x0eWk\x9e^\xe8\x11\xc6\x8d\xa7\xdb\xf9\x90\x8d\xe3\xb8Z\xdd\xdb\xb1<\xb4O\xb9\x97& \xd1\x05\xb4N\xe4\xa4\xdd\x00Zr\xeem\xf2\xed\xed5>\xf6\x90\x94J\x1a\x05\xf4\x1e\xe2\xd0\xf4\x07wM\x95\xdc9\x9c\xdc/\x1c\x9a^\xe0\xae\x81\x03\xbb\x84\x0f\xeb\x0d\xee\xef\x08N\xf8\xa4\xbe\xae\x82\x04\x144\xeb\xc7\xdd\xdf;h\x18_\x1b b\x07\xef\x11W\xb4\xbfk\x1ci\x82@1\xf1\x14\x90\xacc\x0d\xa4\x99\x02y\xb6\xe0\xb7\x9a\xeb\xc7H\xd6\xb3\x06\x8a\x1ci\xf0\xb3\x1cB\xd8\x0et\xd6\x13\xad\xec\xde\xc3\xee\x06|\xf4\xbe\xd8\xa4\x19\x91f\x12\xde\xf9\x9a\xd0\xefz,\xf2\xc8\xad\x99\xc7\x1a\xb0\xcf\x0fo3jg\xa3\xe9\xb0\xf6\xd2c\xcd\x81\xda@z\xac\xf1\xfc-\xa2\xc7\x1a)\xa0 \xf4XC\x12\xdb<\x8f5\x1c\x045r\xde\x91\xdb7\x8fC_\xc7\x98\x0b\xe9\xbe\xec\xed\xae\xec\xea\xa9\xec\xdd\xb7\xfc\xfb\xd5\x83\xd97\x9e\xbe\xc8\xb4\x8d\xd0\xe5\x8a\xd00\x196\x0d\x90f\n\xe4\xd9\xc2d\xd8\x8cm\xd8P\xfa \xab\xb9\xb8[\x1cz\x9b\x1b\x12E\x81*\x08\xde\x1a\xf16\x04|\x0cZ'`\x7f\xd9\x0f\xed=b\xd7_o\x89\x10\xed5\x7f\x87_b9\x11\x0e\xd4v0\xe3\xf5\xf0\xf5\x96\xb1\xb7\x81\xe0\xe0\xeeB\x80\xd4\x04,`bG\xde\x88\xc1}\xc7n\x05\xe4\x9e\xbb\x11\x14x\xa6O\xf78\xd1{\xe9\xca\x12-\x02&\xdcIC\xa3(\xbev\xd1\x82\xd0\xd7#\xd7\xde\x19\xd7\xd3\x0f\xd7\xa9d\xdd\xaa\xd5\xd7i\xcc\xb7 87\x00\x82\xf2\xa7(~\xc2\xc2%J-Ib \x9d\xc5\x08\x13\x03\xe2\xe4\x80\xdeS\x8c8I\xa0N\x14B\xba\x89\x8d?8m\xe3\x18\xb7\x8bXX\x0f1J\x1b-\xa0\xf3\x86fn\xeeBz\x87\x8d4\xf2\xce\xd9\xed\xd5+\xed~9\xf7.a\xd2D\x08\x82\xe5]\xbc\xde\xc9\x00iB@]\xb6\xa4\x89\x01mr@_\xb0\xe3\x0eKY\xaac.\xd4\x90eJ[\xa4$~\xf8\x96 \x84-\xcfQ\xc6\xf4%\x00\xd4\xcf\xf9\x06\xb3\x0d\xe4\xe8oj\xc5i\xc3\xe5\xef`j\xb3'\xc6l$v\xa4\xdeU\x0e\xd5\xe2Q*>u\xe2Q$\xdeOKX\xc5^\xb51|\x10\xb7\x92\x08V\x0f\xbe\xbb\xe2\x1c\x8a\xc1\xb7Z\x88R\x80/I\x92\x02\x88\x1c\xc1\xb7\xd8\x83\x17\xe4C\xe4\xe7D\xf6\xdd\xc4\x0b\x9f\xf0n\x9b\xce\x1e\x9b\xd6b\x9e\xf7IA\xef\xe7e\xcb\xf0!\xf5\xea0V\xbem\xc5{\xcb\x86\x9cX]\x98\xc1RH\xa4`\xa0\x82\x92\xaf\xa3\xbfxE\x1d\xbc\xde\xb5\x90\xf4j\xdb\x1b\xf6$k\xc7\x1b\x1e\x7fZ@\xc2\xb5\x82\xe0\xb4k\xfd\x1a\xc5\x1b\x11\x9e\x82mE\xe4I\xcdV\x10\x93\xa0m\x7f\xd3\x97\xa6\xad\xe0\x01z\xac;\xe3Aj\x04w\xf4\xc0\x1f\x0b\xf2E\x82\x08'\x10\xdfz\x04B@\x82\xc0.\xf0o\xea\n\x02\xa2?\x84\xd9\x01q\x86\x00\xc4\xb8\x0f\xe5\xbbi\xf0\x8b\x88\x06\x1f\x83\x81\xced\xa02:(\xd6C\x88\xf4x\x1d\xcf\x84 \xd0\x1c\xcdd?{\xc0\x88VVyS\xcb\x15P\xe4\xc2\xbf\x9e\xbd\xae\xf3\xe13\xa2l\x01c%\xa1+p\xa7\xa2+@\x13\xd2\xab\xd7\x91\"-\x05\x93\xa51Y\x1a5L\x96\xc6Q5\xd3diL\x96\x06\x02$FO\x96\x06PX5Y\x1a\xff`K\xc3\xe7\x12\xab\x9er3\xc6\xbd\x14\x9d%q\n\x06\xe1?\xe6\xa5\x07\xbe\xef9\xa8x\xce\x9c\xc9]f+\xa1S\xd0)\xa4S@+\xa7S\xe0P\xe9.5\xee)\xb0S0\xd00\xf5\x94\xdc) lI\xbeq\xc0S\x84\xa7\x800\x10\x10\x07\x03JY\x9e\x82\xd0\xe2\xbc\xea-\x1a\xad\x10@/\xd0\xca\xf5\x14\x10\x94f\x1b\xf4\x8a\xf3\x96\xee)\xf0\x16\xf0)8&\x11>\x1d\xd0\x07za\x9f\x17US\xf8\x17P\xde\xa7\x80\\\xe4\xe7\xc5\xd4\x14\x01\x06\x97\xfa)\x18V\xf0\xa7\xc0_\xf6\xa7\x80,\x08\xbe\x14y\x05dt\xbeM\xaa\x0d\xee\xa2\xc0\xea\x99\xf0\x81i\x99\x8a\xc42A\x05G\xd2-\x14\x83\x1c\xc2\x98\x00~\xdb\xac\x0b\x01'!\x0d\x01\xdc\x80@\x8e\x00\xf5\x84\xa4\x81b\x11\xf7\x81.\xa1\x1a\xa8\x1f\n\xc2?\x16\x84~\xb0\xa0\x13U\xef\x15w\xb6\xbe\x02z1\xa2\x82\x80\xf9\x06\xcc3\xbc\x15A\xca\x1f\xaa\xe8\xda\x9b\x9d\x110\x92e:\x9d\x1d-(\x9d\x02M\x96p\x9f\x82\x83\x12\"\x90\xa4\x87\x1e:3\x05\xc2Lz\xb0\xa49\xa0j\x01W\x06SS\xcd\xf6\x9b\x1e}95\xd5\x9c\x9ajJ\xc0\x03\xea\x11\x96\xed\xc8\x16\xbcC\xf8\x07\xd8\xa1N\xb1\xf7\xca\xa3G\x1a=\x02?\x0c\xbdK\xd4G\x16t\xab\x98\xbb\x85\x9c\xf4\x9d1\x01'\x88w\x14n_L\xc5\x8a\xb4\x8f\x10\x8f\x18`\xe1\x0c5\x80!\xa0\xa6P:\x9a2\x04ly\x8e\xb6\x0b\x11+\xf8\x08\x17&;['PC\x14\xe0\xa3\x01\xbct\x80\xbf%\x82wyBK2\x9c\x9d\x07\x9cM\x0f\xc6\x1a\xc6\x1f\xc6\x80\xf8P\x86\x8b\x83\x9e\x16\x06\xb1!\x0d\x0b:j\xbb\x82\xb8\xd0\x06x[\x13x>\x97\xab*\xcc\xfb\xa5}\xde\x00{\xa3\x012j\xd7\xb1\x85\xd0J`\x84U\xf7\x10\xee\x0c\xa2\x17\x08(3\x02\xd2\xac\x00\xbc\x1e!\xa8G\xf3y\x85\x80 \x0b\x1a\xfc\x85V$\x96\x02\x8d\xadDOQ\xebA{\x01\x95?\x84\x02\x14\xea\xbdT\xd3\xc3)\xe0/\xbc\x1fJ\x8e7t\x01#\x0c2N\xa8\x05\xc8\xe1\x16\x18\x81f_\xe8\x05F\x18\xc3]\xf6>\x14;!$\x03#\x0cC(]\x1f:\x04-T\x03\xa4p\x0d\x0c\xa6g\xfc\xd0\x0d8\xea\xc5\x07\xd8\xb6G\xdd\xfb\x1d5\xdf\xfeM\xa5\x85\x1c\xad\xef\x9e6}\x04\xfc\xb3\x82i\xd3\xc7\x1f\xb4o\xfa\xbeZiE\xf7?\xf6\x02ER\xe8\x08\xe8L\xf6W9\x87\x86\x91\xb0w\x08\x15\xcd\x81\xe1$\xec\x15w\xf5rTX \xc0\xe7\xb7\xd5\x10\x13y\xf2 \xbf\xf5wrd\n\xe8\x92@\\l\x84j\xe3\xc0\x01\xfd\x95\xc5\xde\x88\x15\x84\x8f\xea\x98\xe6\xc8\xd1+\x03\xa5%\x8f3>\x8a\x85\xe92k1/^\xc2\xeb(\xdc\xb5j.G\xa2\xaf\xa3\xe4\xc3\xa5E\x8f\x15p\x7f\x80\xf8\xad\xa7\xc4c$\xf5O(\xee L\x06(\x13\x02\x7f\x90@\xc1x\x03\xfa5mp\xf0\xc0\x8a\x89^\xcc\xe1\x8b\x96\x01\x8d\x07~\xfb\x89\x10ZP0p4<\x8a\x06>)u\xcb\xe7\x11\x0fY\x9e\xc5\xe5]Z\xfe\x85\xe5]V\xde \x80\x7f\x12@[P\xe3\x0c\xe5[Jc-$\xea2\xf2/\"\xef\xbc}\x0b\x88\xb8|\x06\x8d\xe3\x8b\xd2\x81o\x00\x0c\xb9\xa5\x10\x13\xc5\x83\xbd\xef.\xb5\xc4\xf6\xdb\xa1w\x1fZ\x16\xbbc\xe6V\x81\xb5,m\xc7\xa2v-g\xc7B\xf6|w\xe7\x8ar.\xdbx\xc4\xf6E\x1a\xbc<]Ar\xcb\xc2tI1\xe1K\x9a\xcb\xc3\xbb\x00\x03\xb1\xba\x16\x1byq '\x16\xe7\xbb\xdd\xd3\x08n\xb7G\x16\x08\x9a\xd7\xa4\x9ae\x81a\xc5\x80\xeav\xa7\x1f[\x1e%c\xdd\x98\xabe@\x1d \x1a!\xa7D\xc6#\xce\x10\x96\x088I\xbb\xa2\xa1h4\xd2\x1d\x8b\xce\x97\x92\x18\x15\xc9\xae\xb9\xd7_7f(96r\xdd\xc4\xa8{\x08\xf1\x88ux\xa4\x1a\x8fP[\xd8<\xcaM\xe5f\xe4\xd9\x8b\x02s98\"\xcc\x11\xd2;n}\x8a\xd7y<\xc0pw8\x89\x15V\xa2\xf3\x1e\xb5\xc9\x8e\x15\x07\xf2:}\xad\xce^wd\xd7+9\x065\xb4\x08\xae%r\x1b:\x9c3\xda\x19\x8alx$\xd6\x1f\x81\x0d\xa5\xc9\x15i\x0d\xc5\x85GTC\xb1x\"\xa7\xa1\xe8\x1c\x11\xd2PT\xfeH\xa8;\x02\x1a6\xde\xb8\x91\xce~\x843\xc0\x06\x19e\xcf@\"\x96ve\xd7B\xd2\x89PN\x9bE\xe7\xa7\xff\x86\x9b\x85-\"\xa8\xe89n\x95\x867\xd2\xe7a\x8a=\xb2\x17\x12\xd1\x0b\x88\xe4\x05D\xf0h\x91\xbb\xe0\x88\xdd\xd8E`\xa40\x9b\xe73x$\xf3x]nH\xed\xb1j\x7f\x0c\xa7S\xc3X\xa0\xa8|#Rm\xf8\x1f\x03L\x11\xd4\xdb\xe8\xb5EzK\xca\xe2[\x0cC\x83y\x12G\xf2!\x1a\xde\xc3\x81\x0e9\x87\x97\x90\x84\xc3.,\x97:rM\x90\x97\xc9S>y\xca\xff\xfbx\xca\xcd\x88n\x80\x16\x1b\xe1ph\x11N\xabh\xda\x05\xd3*\x96N\xd9qH\x8eC \xe3P\xdaDqDAD\xc5p\x84\xd2@\x0d\x1e\xf1\x0b\xc278Hc\xea\xf3\xac\xa4\x97&\x96\xb5\xc5f\x1d\xb0\x7f\x10\xf2Yo\xf83]\x0b\xce\xfa\x8cq\xe8\xf1Xr@\xb5\xe6\xc0i.\x8fa\xd5Y\xe7\x84Xv\xb6g1\xeb\x0e\x10\xa7\x0dI2\xc0t\xd4\xa8\xf7\xfaN\x06\xccAc:g\x02T\xe2p\xe7\x9c\xd3 \x13\xa1\x17-\x8e\x17\x9c\x1f\x1a\\\x0e\x971}NN\x07\x0b\xea\\\x19\x16\x95u\x9e\xcc\x9dxZ\xa47(\x92t\xc9\xefcd\x0c9`\xd3F\xc7\x17\xb2<0\xe7|\x97\xf3\x82\xa7\xa5ki\xdc\xdb\xe7\xd7\xbcd\xcfg?p\xd5S\xf6\xf5\xe1G\xb9R?\xf3b'^'\xeb\xe1i\xb9\xfd\x9a\x97[|\xd1\xfeH\xfc\x9c:\xff\x1a\xe0AM\xc9\x18\x1f\x90d\x80\xe0\x9b:\xff\x92^q\xaf\xf3\xa9\xf3\xaf\x04o\x0c\n|\x94\x83\x97z\xb0\xeb\xe9\xfag\xa7\xbe\xd6\xe0\xfa\x9e\x1a\x1e\xa2H\xd0\x1b\xa7\x02\x9b~\xd7\xe0/['I\xa2+\x8aF(U\x9f:\xff\x8eK\xa3\xaf\xfc<\x16\xef\xd4\xf9\x17\xc0\x9fD\x01m\x87\xc9\xc8}\xc3\xc6M\xaa\x80j\xed\x0d\xb6\xd6\xca{\xeb\x0c\xa3\xea\xb6\xac\x8a\xd1\xf9a\xfc\x16\xd0\xd5}\xa1b\x81w\x89\xb0E\xb8\xb2\x1cT\x14P\x99\x0d\x7fP\x8c\x9a\xa9S\xcd\xef\x9e\xcf0{\xe3\xa3\xf4o\xa4Y)M\x9a\xf2\xbe\x80\x1b\x9es`9Wzg\x06\xf03\x7f\x9cs\xf8\xcf}Q\x02[\xe7\x9c\x0b\xfb'K-\xf6M\x96\x8b\xef\xb8J\xf2\xa2D\xc7\xbb\xbaI\n\xd8r\x96V\xd4+\x12Ow\xbb\x1fYq\x03\xcb\x8c\x17\x92\x98*t*\x06)\xb8 \xabk\xf1Tr\xfbV\x98]\x9d0i\x95l,-&\xb6\x10\xec+:aX\xf1L_\x89\xf1NK\xb0z\x88p\xd1\xc1\x11\xc10\xf9\xb1\x9a\x08>\x03a\xb9W\x96$\x9f\x8b\xb3\xf2\xdcN\x9c\x02\xafA\xe2\x1f\x11\x94\xa7\x96\xcf\x99\xfdw\xd2@@\x1c\x0c4:\xe7\x13\xde\x95\xd8\x06\x7fM8\x10\xdd\xa8\xd47M\xe7j\xc0\x9b\x84Jq\xdb\xbb=G,\x0ed\xf7\xac\xedu\x9f\x1a\xebB\xa8+\xd7\x8b\xd0\xe2\xea\xc5!\xc4\x01L\xc7`s\x0b\xe3\xe0\xeaU\xd2@\x80@S\x0c|\x05\x8eN&\x0d\xd0N\x15\n0\xb7!\x0e\xee>'\x0d\x10u\x07\x04\xe8\x0f\xf0\x1ep\x1a\x08`;\xf8v\xf8>\x90N\x8d]\x08\xe0\x06\x04rD\x00\xa1\x83J\x03!r\xa1\x81.\x9a\x1a\xa8\x1f\n\xc2?\x16\x84~0\xe2\x99\x15}\xc5\xde\x87\xa5\xfd(\xa1\xdd\x04\x84M\xd4\xe7n\xe9\x02)\x05\xb0\x0d\x11\x94xYm\x0dU\xe0\x10\"\x87t\xfdDj\xc2\x01G\xe1@\xc8\x16\x1a\x13Dq\"\xc4\x02,\xce\x17:q\x17\x1c\xa4\x85x=Y\x88\xf47'\x0b\xb1\x81\xc9B\x9c,D\x17\x10u\x07\x04\xe8\x0f\x080<\x02\xd8\x0e\xf4=@\xc1d!\x12\x80\xfa\xa1 \xfccA\xe8\x07\x9b,D\x03\"(\xf1\xb2z\xb2\x10\xe9[\xe8?\x85\x85Hi4\xd3z\x9a\xc6P\x9a*id\xe9a\xc7%-\xe5\xc0\x11}K\x98*7o\xb5#Y\x08\x8f\xaf\xdbG\xcd@+\xba\xcaL+\xef\xb2\xf6\xdd\x1av\xa1\x11\"h\x11\x16\xd9#d\xaez\x84\xcc\x99\xecF\xf2P~n\xc7\xb5 &\x10\xc6\x04\xe2\xb8\xe0\xbeL\xc4\x04\xe2\xd8\x100>8\xae 1!\x80\x00\x08$\x02|\x17\x97\x98@\xcd\xb9\xc2!p.\x101\x1f\xf0_\x80b\x02Q3\xf4Ak\n\xe7%)&8\xafM1\xe1!\x89\xa3\xea\xb4>\xd0\xf2\xc9\xc8\xe8\xac\xcdmli_8Pr\xcf\xc8\xc8\x9c\x0dq<\x97\xb6\x98\x10\x97\xa7\x86\x83\xfbb\x17\x13\x82\x05\x8avd\xd6\x10\x8c\x9e\xba\xc9\xb7\xc1~e\x8c \x03\x08\xf2\xd9\x00] \\4c\xc2\x03\xe9\xc4\x90\x83\x1d\xc41\x0d\xe86w\x17\"N\xe6\x1a\"\xb8\x07\x91\x1c\x84\xd0\x13\xbb\x86\x90\x13S\x1f\xc2W\x86\x86\xd0\x0f\x0e\xf1\x1f\x1db?|\xd4 _C\xc0I_\x83?\xc7\x11\x87\x08\xbeD\xf0\x83\x9e%\x89\x83\xe7\x8a\x1f\x13\x1ebZ\xde\xccF\x1c\x1e\x824Wi\xb0\x0d\xa8\xa9\x9ed\x84\xb6\x8cz\x13h\x89\xa28<\x04;}\xa9\xa68<\x04e\xee\xfb\x91Lx\x08\x9a\x08\xe9\xae8<\x04q\x84\xbb\x98Lx\x08\xc2h)\xb78\xf8\x13qq8\xfe\xbcbN]!\x19\xbf$\x84\xb6\xac`\x1cl\xd7L\x99\x10h\xa1\x85Zf\xbf\xc2\xb3 )\xcc\xa7!\xc68\xa4\xbb\xd55L\x87\x92\x80\xe5\xa8`:\x94X!|Ih\x08\xfd\xe0\x10\xff\xd1!\xf6\xc3?\xf4\xa1\xc4wu\x98 \x8a#\xf6\xcb\xc4Lp^/fB\x94\x00\xc7\x89\xaf\xb7U\xa1\x1d\xa2\x05\x83\x96\x82\xd4\x85\x90\xc6\x87v\x08h\x89h\x87\x80f\x89v\xa0\xb5Q\xb4Cp\x83E;\x84\x9f\xc2\x14\x10{5\x06b\xf5vv\xb4Cp8\xbf\x0b\xd1\xf2\x1c\xad\xe6\x08AS\x13\x06\x93\x19\xe6TU@\xce\x0f\xe8\xc2`Z\x83X\x1ac\xc7+\xa0\xb6\xc2\x0c@\xe9\xbcS\xce\x84\x18\xda\xc9\x8d6I\xd8\xec\xcd8I\xaf\xe3w\xd39\x9e3o\xab3!`#\x0c\xd9\xfe\\w\xdc\x99\x10\xb6\xdd\x07l\xf5\x01\xb3S\x102G\x05\xc1\x8a0j\xc5F\xacV\xcf\x9d{&\x043\x0b\xa2\x18\x06\x94+\xc50\x88b\x1c\xc41\x0f|\xdd\x1a\xed\xf0\xb0d\xc6\x98\x16\xd4f|\x01(\x91\xb6}\xbe\x9b\x03M\xa0&tu!\x8a\xdf1\x07\xbc\x9d\xaf/\xa5\x1d\x1e\x80\xc6\x9d\xf5\xdeB\x13\x02Wz\xe8\x1a\x0fT\x89\x11\xcc ^*\x81\xca0\x90A\x10\xc1$\x88S\x83\x11\xcc\x82\x18\x86A\xac\x02|8\x02\xc3U\xdf\xe8\x8ao\x04\xb5\x17\xa3\xf4\"x\x1c\xa6L`\x88\xba;:ua\xe9\xbf\xf5[ad\xd1H\xb2\xdcNi\x02qt\xda\xa8\xee;-M\xa0\xd9\xd7\x04\xbb\x9a\xac\x17\xe9\xda\x90\xbcY\x109\xa8 @\x9d\x90\xb7\x06\xf2\xe4!\x88\x01\x10\xba\x11\x041\x02\xc2\x98\x01\xe1j\xff\xb8\xe4\x84(y\xaaz\x17j\x9b\x80.Z\xb1\x87i\xa6 \xfe\xd1\xf4\x83\x82\x08\x05~\x04Z\xc2\x945\x91\x00\xe2\xd0\x14\xf7_\xe0\x88>\xd7\x1e\xd5\xcb\x14yK\xaa\x15_\xab\xc2\xc6\xbc7\xd5\x04\xe7M\xaa\x1aZ\xc9d]\x0eZ5\xa1]\xeb\x8d\xdeK\xd2\x12\x83V\xf8\x08Mh\x8d\xb8\xf2\xd4D\x12\x85\xa9\x89d\x07\\\xb1L\x97\x99u\xac&^\xa4\xe8\"\x81y\xee\x88ahl00\n\x18\x18\xef\xa3G\xf6\xa2bx\x9d\xef\xef\x0d\xbe\xd1\xc2i\xe4\xc0\x19\xe1S\x11\xa4\xdc\xb3\xef\x05\x0c\xe2\xde\xef\xbcA\xab\x80\x91,\xd3\x19\xf1B5\x03\x1dr551\xdec\x89\xe5\xf4\xd0\x99\x91\x9d~\x0c\x07'\xc7\xd6p^\xccZV\xe4\xe8\x7f\x0b\xf6J\x8b\xb6\x89\x02\xff\xbf{\x9e\x1f\x9e\xf51\xc0\xe7\x8b7\xb0\xe5\xe5M\xb6\xa45\xbc\x7f/\xa4]\xe1\x98\xda\xddO\xed\xee%\x8c\xc4\xcf\xa9\xdd\xbd\x01\x1e\xd4\xfeC\x05\xad<\x11\xa6v\xf7\x8eO1\xfa\x11ejw/a:\xa9\x98@\xb0\xe1\x86\x9eT\xfc\xa5`$ID)\xa4\x17rM\xed\xee\xc7\xa5\xd1W\x83\x14\x8bwjw\x0f@\xab\xbd\xf1W\xd9\xc4\x8d?\xb5\xbbw|\x18\xbf\x054\xb5\xbb\x9f\xda\xdd;\x0d\x84\xa9\xdd}\xf7\x19\x9f\x89\xa2\x80VI053\xa5\xcd\xd7\xaf\xc6\xba053\xf5gV@\x98@S\x0c|\x05\xa4*G\xda\xa9B\x81+\xfa\xd4\x05j5#Qw@\x80\xfe\x00\xef\x01\xa7\x81\x00\xb6\x83o\x87\xef\x03\xe9\xd4\xd8\x85\x00n@ G\x04\x04U!\x86\xc8\x85\x06\xbahj\xa0~(\x08\xffX\x10\xfa\xc1\x88gV\xf4\x15J5\xa17\xaaQ?H\x9f\xa8\xcf\xdd\xd2\x05r\x10GC\x04%^VO\xcdL\xe9[\xe8?E3\xd3\xa9\xdd}\xe8\x9b\x93\x85\xd8\xc0d!N\x16\xa2\x0b\x88\xba\x03\x02\xf4\x07\x04\x18\x1e\x01l\x07\xfa\x1e\xa0`\xb2\x10 @\xfdP\x10\xfe\xb1 \xf4\x83M\x16\xa2\x01\x11\x94xY=Y\x88\xf4-\xf4\x9f\xc2B\xfc\x07\xa6PO\xed\xeeM\x98\xda\xdd#0\xb5\xbb\xa7\x0c\x0ea\x04@ \x110\xb5\xbbW@\xd4\x0c}\xd0\x9a\"\xa8\xa3\xfc\xd4\xee\xde\x0fS\xbb\xfb\xa9\xdd\xbd\x1b\xa6v\xf7\x81:1\xe4`\x07qL\x03\xba\xcd\xdd\x85\x88\x93\xb9\x86\x08\xeeA$\x07!\xf4\xc4\xae!\xe4\xc4\xd4\x87\xf0\x95\xa1!\xf4\x83C\xfcG\x87\xd8\x0f\x1fu\xc2\xd7\x10p\xd2\xd7\xe0\xcfq\xc4!\x82/\x11\xfc\xa0gI\xe20\xb5\xbb\x0f#-\xacZ\\\x015\xd5\x93\x8c\x90\xde\x0e\x8e\x96(\x8a\xc3C\xb0\xd3\x97j\x8a\xc3CP6\xb5\xbb\x0f$njw\xdf\x82\xe3\xcf+\xe6\xd4\x15\x92\xf1KB8\xb5\xbb\xc7!\xdc\x02#\x85\xf94\xc4\x18\x87t\xb7\xba\x86\xe9P\x12\xb0\x1c\x15L\x87\x12+\x84/ \x0d\xa1\x1f\x1c\xe2?:\xc4~\xf8\x87>\x94L\xed\xee\xbd\x0d)p\x88\x16\x0cZ\nR\x17B[Z\xe0\x10\xd8\xe8\x02\x87\xc0\xf6\x178\xd0\x9bb\xe0\x10\xd5*\x03\x87\xf0S\x98\x02b\xc7\x8d@\xac\xa4\xfe\x1c8\x04\x87\xf3\xbb\x10-\xcf\xd1j\x8e\x1045a0\x99aNU\x05\xe4\xfc\x80.\x0c\xa65\x88\xa51v\xbc\x02j\xa3\x92\x00\x94S\xbb{\xcfsS\xbb\xfb\x80\xd9)\x08\x99\xa3\x82`E\x18\xb5b#V+\xb9\x8d\xa7\x86`fA\x14\xc3 \xb4\xbd\xa7\x86(\xc6A\x1c\xf3 \xbc\xed\xa7\x86\x87%3\xc6\xb4\xa0\xb6\x05\x0d@9B\xdf\xe7\xd06\xa1\x1a\xa2\xf8\x1ds\xc0\xdb\x85\xb7\x0f\xd5\xf0\x004\xee\xa6v\xf7\x0e\x08T\x86\x81\x0c\x82\x08&A\x9c\x1a\x8c`\x16\xc40\x0cb\x15\xe0\xc3\x11\x18\xae\xfaFW|#\xa8\xbd\x18\xa5\x17\xc1\xe30e\x02C\xd4\xdd\xd1\xa9\x0bK\xff\xad\xdf\n#\x8bF\xd2\xd4\xee\x1e\x07\xba6$o\x16D\x0e*\x08P'\xe4\xad\x81\xe2\x13>[\xcfN\x04\x0be\xdd\xdf\xa3\xd9#\xa1#d\xaf\xd6\xc5\x82\xefJ\xbe|:\xfb\x0d\xfe\xeay\n;\xc1\xd4d\xc1O\xa0\xe4l[\xc0\xbe\xd831}U\xe7\xbfK6\x82\xba2S-Q\x93\x94\xe5\x07`\x9b\x0d\xce\xbb\xc3\x8eW\xfdZ\xcb\x1b~\xc0\x87\xe4\xf7;\xbe(!)\xc5\xe9c_\xe8\x06Z\x06\x83a\x1bT\x9b*\xbb\xcen-\xc6\x86\x9aj%\xce\xfdi\xfa\xa8\xf9z\x9a\x1e\xbe6v\x15\xff\x11\xfb\xa5\xfa\xde\xd2*\xe9\xa3\x93\x16\x0dj.\xc2\x9d\x9a=\xbf\xf7\xb0\xe7\xe2P\xded\xa9\x85A\x8a\x92wY\xf6d6\x9b\xe1\x9a\xb8f\xce\x13\xeb\xefR\x80$\xdbB\xb9&^>WL{{v\xf9\xe6\xf3\xf9\xc5\xd5\xa7\xcfOm\xce\x92F\xd0\xec\x83\xa9\xe1\xec\xec\xfaW\x0f\xbb~\xc8,A\x01\xc1\xaa\x97\xaf\xe0_v\xd7\xb3wY\xf6_\xb3\xd9\xec\xef\xf8\x83,=\x9c\x08sM<\xbdS\x06\xc8\x07\x96\x177l#\x98h'\xdc\xc6\xa6\xfe\xc8\x96a\x93Uo\xd0/\xe9\xb6\x19V\x12%\x05[>\xf5?^A\x9al\xac\x02j\xa7\x05\x91Dqh\x93|\xd4zP\x1b\xdbp}hL\x15\xad\xb1\xd5e\x1b\x07\xedy4\xb0\xed\x0bd\xcf\x7f\x8c\x98!\xcf\xc4Yt&\x7f\x10\xa6\xdcc`\xad]E\xec8\xb6+\xc4\xd4W7\x07\xa9\xd5x\xba9\xe8s\x93q\xe0\xadMG`\xab\x92+kF\x9c\xb7M\x92\x9f=6\x87\xa8\x0et\x9aDu\x82\xe3\x95d>Ze\xd9\xec\x9a\xe5rr\xf7\xcf\x0e\xb3\xbf>R\xdcRg\x0d\xfcX%Iy$\x9e\x15\xdb\x8b\xf1\xf3\x7f\\~\xfah\xfe\xf5\xd5\xabW\xaf\xf0\xef(\x9eo\xfc\x00\xca\xa6\xca\xc42\xad\x0c\x06uV\xd9\x17\\{\xda\xd6\xfb\x0dC\xfa\xd5\x99(\xc4\xe3K\xdel\xf3'\xc0\xb7\xd7|\xb9l6\xfc\x93\xca~@\xbc\x07\xadmw%\x99\xf1\xf5\x0f\x82\x1d_\xabCn\xc7\x1d\xa9\x99;\xd3K\xfe\xa5\xc5\x88f\x8bob\xcd7\x87\xb5U\xb2\xe1\xb8\xfe\xd5\xfa\xe1\x82\xe7E\x96Z\x97M\xe5\xc1\x91w\xb7\xcc\xe5\x97y\x05\xcfq\x8c\xf5\xc32\x86X=\xfb\x82\xae\xfd\x01\xacT<\x92\xbcy\xf4\x12\x1ea\xab\xa6;\xdd\x99\x9a\xd1\xa3\x13\x1b.9\x97\x8fl+\xf0\xfdoE\xf2\xbf[\x1f\x16s\xe9=K\x9d\xd0\xf9\xaa:\x18teB}\xcd\xa4\x80;\xbe\xd9|\xf7-\xcd\xeeR\xb9\xaeoX\x01\x0c\x16\xfb\xa2\xcc\xb6\x16!\xef\x8a\xe0\x892@{r\xa9o\xfe\xa9\x87\x15\x82\x96\xae\x91s\xbd\x14;s\x90\xafrAh9\xbc\xc96\xcb\xaa\xedUC\x99\xf4`U\xf2\x0b\x95\xb7\xa8\x12_\x13\x9f\x1c\xa6\x96\\x\"\xf4\x83f\x85\xe1V\xd0\x9e\xb3\xbf\xfc\xf9/O-B>TF\xba\x03\xd9\xc5D\xb2A\xa0{>{\xf1\xfcE\xf1\xc8\xf2\xd9\xdb\xffre<8Nb\xf6H\xa97\x9d#\x02k\xe7\x18U;\xfcu\xa0\xa1l\xc7\x17j\x97\xfcw\x05\xafc*;\xb6NR\xc9\xbb\x86\x98\x0e\xce\xe6\x81:'\x87\xa5\xed\xbfj\xf4:\xa8\xd1\xec\xcb%\xe6T\xc7\xdd\xe9\xb2q\x88\xe1\x97\xb7\xf2\xc3z\xd2\xad\"\x7f\x7f\xeb\x9f'5~\xcd\x18\xf1\xbf\x95\xbb\x86\x15\x85\xf2C]\xb05\xff\xcc\x7f\xd9\xf3\xa2\x9c\xa9\xdf{H~\xd9\xf3\xfc _\x17\xe8\x04\x0f8l\xb3\xa2\x04.\x9d!\xd2{\xd2z\x05\x89\xbb{'\x84t\xc2\xb3\xe5OI\xf4r>\xf2\x7f\xd2\xfd\xf6Z\x9d\xca\xb5\x0b\xad\xe5\xc7\xe9g\x9d\xb4\xa7\xba\xc8\xf6i9\x97H\xfaK\xf4\x8e\x15P\xf0\xf2\x04\x92\xb2\xd0^\xc0\x02\xf6\xa9\x12\x84\xa5r\xa4\xdc%U.\x96'\x12\x86E\xa3\x82n\x7fn#\x88\xbe\x04\xfac\xb6\xe4\xe7\xe9*\x0b\x8e\x87U\xe6\xe0<\xcd\x96|\x9e\xa4\xab\xac\x1f\xd7\"\xc9\xb9vW\xcc\xd1\x9e\x96(\";2\xf9\xcb\x0b$F\xec\xf4\x139D\xcd\xda\x962\x1e!\xdaH2\x0e]\xf7\x0b,I+k\x93\x14%Oe\xc8\x9e\xf4|\xca\xcb\xbb,\xffFz\xd6\xf1 \x8dg\x177,M\xf9\xa6 =l\xd5o\xdb,M\xbe\xe1\xd7U\x1bH\xe4\xda\x1c,^\xe5\xbd\xad\xe3\xb6\xe3\x1b\xe6\xbbE\xd0M\x92\xadF\x93\xe6\xba\x08X\\\xc2H%\xf1\x86\xedvs\xf2\xc3!\x9fy\x9d\xb8\xd2\xed\x8c\xc7\xaf\xf7\xc9f9/\xd9\x9a&\x17\xeb\xcc\xa56,\xd8\x97|\x87b7\x93\x9c\xd0\x04'\xab\xcc\xb8\x03\xe3;V\xa2\xa9`\xce\x95_\xefu\xdbl\xb9\xdfp\x89\xc4x\xc8\xd1\x0c8\x08y\x85\xc7x\xae\xc0\xb3\xa8h\xb8\x177|\xf1\xad\xd8o\xfbLT\xbf~P#\xf7m\xb3?*J\xce\xbbM\xa2\xd4V6/\x96\xdf\x82>z=\xd8\xe3\xcb$]\xc8.T\x02\xcfw\xc5\xf2\x1b\xfc?\xb3\x7f\xfd\xfd\xe3\xfa\xd9\xae\xe5\xd8\xd0\x80\xda\x8e\xc8\xce\xd9\xb8\xc1\x0dl\xed\xcd\xdfx\xad\xde\xf2\xa5\xf9\xd1\x1d\xa6\xde\xeb\xf5[b\x7f\xafp\x85\xec\xf2\x97\x87t\x91\xa4\xeb\xe0M\xbeP\xef\xf5\xb5\xcfu\x96m8kd\xa5V\xcf\xad\xbf[\x19\xd0\xa3\x85\x98\x03T\xbd\x159\x7f\xccT\nf\xc6\x94\x01\xa4\xdf\x982\x80\xa6\x0c\xa0)\x03\x08\xa6\x0c\xa0)\x03h\xca\x00\x9a2\x80\x14L\x19@S\x06\x90\xe4\xd4\x94\x01\xd4\x86)\x03\xc8\x00z\x92\xcb\x94\x01\x84=2e\x00M\x19@S\x06P\x1f\xa6\x0c\xa0)\x03h\xca\x00\xaaa\xca\x00\x9a2\x80\xa6\x0c\xa0)\x03h\xca\x00\x9a2\x80~u\x19@\xaex\xd4\x03\xe7\x00\xa9 ,9\x08\xd6\x0dd\xa3_\xcf\x1a\xb4\xb6\xe428_\xef\x86\xa5;\xc1h\xd7\xdb\x9d\xc0sH\xb8\xd9\xc3\xad\x9a\xdfd\x86\x19\xe18\x84l#\x04\x17\xa0'J4\xe0f]Vn'\xd3\x88\xe15{`m\xbc\x90\xdah\xc14k\x18m@\x00m\xac\xd0\x99;h\x16\x15.\x8b\x0e\x94\xc9\xf9\xf6\xe3;\xd6\x10YtpL\xd9f=l\x96\xb0\xd8\x90\x80\x98\x0c~\xf5g\x83\x9c\xd9b\x82`\xf6\x80\xd7\xc0P\x17)\xc8E\x0fh\x0d\x08e\x0d\x08b\xa1\xa7\xfc\xd1BU\xe3\x06\xa9F\x0bO\xf9\x03S\xa3\x85\xa4l\xc1\xa8!a(4\xe4\x84\x9cEL}\x13\x1bf\xb2\x86\x94\"\x83IH\x18\xc9k\x7f\x1a\x06\xb5{\x07\x8d\x0c\x175\xa1!\x8c\xbf\xbf\xf1\x8f=,8\xa4\x82A-tfXh\x84\x80\xd0\xb0PPO\xca\xfb\x9b\xe1\xc0\xf0O\xc5\xe86\xc6!\x81\x1eg\x14\xc3\x12\xdc\xf1\x86uL\x0f/=\x94c\xbe\xfbwl\xaeQ\x81\x1b\xcad}\xc1\x1a\xfb\xdc\xbc\x01\x9a\x80\xd0L\xd7\x8b50\x1c\xe3\x0c\xc4\xd8C0\xae\xe0\x0b\xca\x05j\xc0\xc5\x17j\xe9\x07Y\x06\x84W\x08\x81\x95\xf0\x90\n\x12\xc0\xf0\x85QF\n\xa0 #w$eP\xb8\xa4\x1f\x1e\x19\x12\x18A\x02!\x83B \xfd\x90\xc7\x98\xc1\x0ek\x98\xa3\xef\xfb\xed\x876\xc6 j\x8c\x16\xce\x187\x90A\x0bax\x83\x17\xc4\xb0\x05%`ax\xf6\xcd\xd1\xa8\xaegwx\x82\x18\x98 \x84$:$\x8f\x19\x86\x18\x14\x800\x03\x0e\xe3\x85\x1a\xc6\x0b2\xc4\x7f]o`\xc1\x17R\xd0\xea\x1b\x0f#\xa0\x968\xe6\xe4w\x04\x0d\x888\x86\x84\x08|\x0e\xc2\xc6\x9bHv\x11vK\xaf\x909\x98\xf5Y\xc8C\x14\xef*V\x8f\x85<\x86\xd5aa\xd8\x90\xfa++\xb6n\xddUy\x84\xc2\x07\xac\xc6\xcaz\xbc\xf3\xd6VY\xea\xaa\xc8\x08\xb1z*\xa4\x96\xca\x8f\x0f\xa9\xa1\nqh\x83\xa7v\n%\x80R35f\xbdTk!\xed^\xecfo\x95\xe5\xa4\xdf /${51*J\x96\x92\xe4~\x05\xb1\xf5\x13YCTH\xd5p8\x12\xa3R8\x0c\x85\xb5:\x18A\x83V\x05#\xcf\x19\xd5\xc0\x91j\xc8\xac\xfeu*\xee\x96\x0b\xc6\xa8\xf8E^\xecU\xfa\x06|z\xbc\xba\xd7\xc2wkUo\xefy\xb7l\x7fj\x88%\x08\xb8I B\x1cJ\x98\x9b\xa8\x8bj\xe1\xfc\xb1\xfd\xf1\x08\xf4t\xd6\x8a\xf3\x1bvd\xb3\xb7>\xe8/v\xd6\x04\xe5\xb5\xff?\x00\x00\xff\xffPK\x07\x08\x98\xd8\xc2\"\xa6$\x02\x00s\x8a\x1d\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81k \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xef\x0c\x00\x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81wF\x05\x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(_;\x94/\xe8Y\x00\x00\xa8X\x02\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81S\x01\x07\x00swagger-ui.cssUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\x98\xd8\xc2\"\xa6$\x02\x00s\x8a\x1d\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x80[\x07\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x08\x00\x08\x00E\x02\x00\x00i\x80 \x00\x00\x00" - fs.Register(data) -} + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\x9cT]k\xdc:\x10}\xdf_1Q\x1e\x92\\\"\xfb&\x81p\xf1\xb5\xfd\x90\xa6\xa5\x81\x94\x06\x92}(\xa5\x14\xd9\x1a{\xa7\x91\xa5E\x92\xf7#!\xff\xbdX\xf6\xae\xb7\xdd\x90BYX\x8f\xe7\x9c9\x1a\x1d\x8d\x9c\x1ep\x0e\x1f\x1f>\xddBe,8/<\x95 \xc9yKE\xeb\xc9h(Z-\x15B\xd1\x92\x92\xc0y>I\x0f\xae?\xbf{\xf8r\xf7\x1ef\xbeQ\xf9$\xed\x1e\xa0\x84\xae3\x86\x9a\xe5\x13\x80t\x86Bv\x01@\xda\xa0\x17P\xce\x84u\xe836}\xf8\xc0\xffc\x03\xe4\xc9+\xcc\xef\x97\xa2\xae\xd1\xc2\xf4&\x8d\xfbL\x8f*\xd2\x8f`Qe\xcc\xf9\xb5B7C\xf4\x0c\xfcz\x8e\x19\xf3\xb8\xf2q\xe9\x1c\x83\x99\xc5*c\xae\xd7\xe0-E!\xbb'A\xa5\xd1\x9bbjD\x8d\xf1\\\xd7\x9b\xeaJ,:\x9c_\x9c\xaf.\xce\xa3\x008zB\x97\xb1\x90a\x10\xff\x9d\xde\xd9\xe5\xea\xec\xf2\x17\xbd\x90\x19\xf5\xc2\xc6\xfa\x18\x82\x9bC\xf8<<\x01\n\xb3\xe2\x8e\x9eH\xd7 \x14\xc6J\xb4\xbc0\xab\xff\xb7\xb8Y\xa0\xad\x94Y&\xc0\x1b\xf3\xc4]i\x8dR\x85\xb0\x8e/\xd0z*\x85\xda\xe7\xf2u\x02=q\x83\xbdL\x86\xe0\x9f\xd3M\x90\x14X\x19\x8b\xe3\xbb\xa8<\xda7\xfb#=CK~O\xb40r\xbdW\xd8\x08[\x93N\xfe\x1d\xdb+D\xf9X[\xd3j\x99\xc0a%\xba\xdf(\xd5\xfd\xa7\xf1\xd6\xaf4\xee'\xac\x0b;\xf9\xc1OI\x0b \xb9;\x0e,OcI\x8b|2\x18^Z\x9a{p\xb6\xdc%\xf1~\xc6\xa3\x1f\x8e\xe5\xdd*\x81\x94\xbfY\xe1\xbc\xd0R(\xa3\x91\xcf-:\xf4o\x14\xf7/K\xd2\xd2,#\xa3\x95\x11\x122\xa8Z]v\x17\xec\xf8\x04\x9e7N\xc51\\\x85{&\xc0\xad\x9d\xc7f\xc8\x97F;\x0f-A\x06\xc3m\x99\xde\\\x85\x9e\x8fGG[\xab\x12`Q\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8\xec\xfdyw\xdb6\xf68\x8c\xff\xffy\x15\xd7\xfa\xf6\x9b!kZ\xb1\x9d\xa5\xad\x13\xc5\x93\xc5m\xb3g\xe2\xa4\xcb\xa8\x1a\x1fZ\x82,6\x14\xa8\x90\x90m\xb5\xf2\xef\xb5\xff\x0e.\x00\x12$\x01\x10r\xdc\x99\xf9<\xcf\xc3s\xdaX\\\xb0\\\\\\\xdc\xfdn\xc1tI\xc7,\xc9h@\"`!\xfc\xf9?\x00\x00\xbd\xec\xf4w2f=\x18\x0c\x80\xad\x16$\x9b\x02\xb9\\d9+\xe0\xd6-\xd3\xd3y6Y\xa6\x04\x0e\xe5\x1f}\xf5\xf6\x00X\x10\xc2\x01\xf4T7\xfaG\x132M(\xe1-\x8a\xbf\xfa\xf1|\x02\x87\xf2G0\x1c\xe1\x80\x0e\\\x839T\x7f\xf5\x8f/\xe2\xb33\x92\x7f|\xfedI'));&\xe6'\xffs\x15\xb0YRD\xd5\xf4\xd5\xd4s\xc2\x969\xd5\xc0\xa2\x1e\xf0\xeb<\xce\x81\xc1\x00\xfe\xbcz\xf0?\xe5M\xf5*\xd0 \xd7_\xe6W2\x85\x80\x0d\xf3Q\xa8\xda\xe5?\x14t\x1e\xd4^\xe5mg|t\xc3|\xc4\xbb\xa8=\xc4\xb6\x0e \x8fZw\xd3\x03\xd8\xdak\xdf\x96]\x1c\xc0\x9fW\xb5gW\xf5N\xe5\xa8\x08\x1f\xd58N\xd3 S\x83\x8b \x8b@\xfbEC\xfe3\x85\x01l\xedj\x0f\xca\xd6\xaand\x9b\xb4?\x87\x01\x90\x08h\x7f\xcc\xa7\xc5\xff\x98\xc0\xa0\x8ep\x11\xb4@F\xfb\x99\xc4\xc5\xf5\x1a\xde\xe2\xd2\xf7\x05J\xbc\xcb\xb3\x05\xc9\xd9J~\xd9\x86\xd08\xa3\xd3\xe4l\x99\xc7\xa7)\xb1\x80\x85.\xe7D=\xdfm??#\xec\x00\xf2:\xc4\xc2j\x8e|\x0e\xb46\x87\xe6\xe8\x15\x86 Z\x93\xfe\xc9 )^\xab\xbd\xd1\xc25\xfdR+\xc1\xe7\x1a/SV\x1f\x03\x1c\xf8}\xed\xb1\xd6\xb4? X\x04\xbd\xb8\xc7\x81\x1c\x01\xabO/k.Q\xb3;\xd9\x8c\\\x99E\x9e\xb1\x8c\xef\xca\xfe,.\xde^P\xb5F\x02\x9b\xf0\xfbz\xfb\x0b\x18@\xef\xf6$)X/\x02\x1a\xd0>'\x12w\xef\xde\x13\xaf]\x05\xc3\x06~P\xbd\xff\xde\xb2 P\xb0<\x19\xb3^59\x9d\xdc\xd0\xe0\x1b\xd5T\xd4D\xb5ZS\xf5\x8f\xbe\xbdw'\x0c\xbc\xbe3\x0f\x81\xe9+-\xb6\x08S+\xd9\x05PN#\xb6\x02\x02 -XL\xc7\x9c\xbe\xb10\x046\xcb\xb3\x0b\xa0\xe4\x02>\xac\x16\xe4(\xcf\xb3<\xe8=\x8d)\xcd\x18p\xe0B\x0c\xe34.\n\x88\x0b\x88\xcb\x1ezacG\xde\xcct\xaaG\x1c\xc1\xf3\x08)\x15\x0d\xf6\xef\xef\x87\xf5M\x94\xc0\x00\x82\x1c\x06\x90\x85|\x07\xe4\xf5\x1d\x90\xc3\x81\x01y%\x9cZ\x1bO\x1f\x8f\x01\x96M8\x96t\x98\x18\xc1\x8c\xafd9\x04|\x06|\x13\xef>\x00\n\x0f\x81\xf5SB\xcf\xd8\xec\x01\xd0\xedm\xd3G\xa0f\x8d\xc4\x99\x8e\x1e\x18\xdf\xc8\xfb\x15m\x81A\xfd\xe7z\xcd\x89\x11\xe4}\x9d@I4\xe9\x9d\xc7\xe9\x92\xf4 \xa1\x90s\x88\x05y\xff\"OX\xf9F\x18A\xb0\x1bA\xa2 \x10\xf2\xc9\xe5\xfdOd\xc5igk(\x0djo\xda\xb9%\x009.\x18\x08\xb0\xf6*E*\x16h\xdb\\\x1c\x04\xb9\xbc\xcf\xbf\xd6)H\xbd\xcf+\xbf\x1d\xa5\xef\xc4\xfaHJ\xc4\xa0\xc17\xf7\xef70\xadB,N\xca\xff\x9dX\x7f\xf7\xde\x7f\x0e\xe9\xad\x04\x84\xe8\x14\xe3=\x99\x92\x9c\xd0\xb1\"\x1b\x9c\xd7\x81Y\\\xd0\xbf18%\x84BB\x13\x96\xc4iR\x90 \xec@\xb1\\\x90<\x08kop\x12C&\xbd\xd0x\x86l1\x8e\xd3%c\xb65\x18@p\x9e%\x13\xd8\x85\x01\xe7\xd2\xe0\x10zK*N\xedI\x0f\x0e\x9a(\xcc\xe9\x1bg$+\xaep\xab\xe4\xed\xf8\xc7\x04\x0e\xf4s\xe9\xaf[R\x18@\x1cp\xec\xfa6l\xaci&\x1f\xdd\xb9\xfb]\xf3Q\"\x1f\xdd\xbd\x17\x86&>0n\xb3\x05\xea|6p\x05\xc4\x8d\x1e\xc4\xb6\xb9\xae\x87'\x16\x90\xdf\xba\x05t\x99\xa6\xb8\x92\xccr\xf6\x1cs,\xe1\x8ceN\x8a\x82\xcfs\xbe,\x18\x90\x84\xcdH\x0e\xa7D4\x90\xe5\xdaa\x14\x01?\xacz\xb0\xbd1v4\xd0\x8eT\x04\x88o5d@\xab\xd7\xf9\xe8k$\xca\xc8\x19\x16,_\x8eY\x96\x9b\xa0\x0d\x88\x0f\xe9\x92\x1c\x00i3\x85\xd0d\x1c\x0d\x8c%\xbf\x14\xdd6\xb3\x96\xd0fPw[/5\xc87'\xae\xf2PPk|\x88\xd3\xcfk\xc7\x01\x13\x92\xce\xc9 \xc2\xe0\xe4\x84\x1fT\x1b\xf2\x01\xb8\x1b*\xa0\xe7\xae\x83\xd6\xbc\xd5T+|\x85\x1e\xe7y\xbc\xd2x\xc3\"M\xc6D\xdb*\xa0o\x17f=\xae\xc5\xdc\xeb\x8b/\xf9\xceqNbV;\x99\xc20\xd2\xf1\xa4\xaf-9\xe7\xc7\x1b\xdb\xc8<\x14\x03C\x0f\xd5\xee\xc5}-6\xec\x8b\x80\x84^-\xe6\xce\x16\x97U\x8b\xbf\xfa\xb6\x989[,\xaa\x16_\xfa\xb6\x98t\xcf\xfa\xd6-\xd8J\xab\xa6\x7f\xf0m\xda@\n\xb5\xa6\xb7\x82-\xc1\x1c\x91\xe1t\xe4\xd7\xe0\xd2\xb7\xc1\x85g\x83\x85o\x83\x13\xcf\x06\xd3\xee\x15_\xaf\xb1[\xaf\xe6\xc6\xbe\xe3\x9b\xb5\xc6\xa7\xffbA.X7\x16d\xea\x8fD\xfcA\xfbI\xf1\x9c\x95\x9ck,\xee\xbc$+\xc2\xc5\xf5\xa5|\x81N\xc8%\xde(\xc4\x8d\xc7E\x91\x8d\x93\x98%\xe7\xfc\xa3T\xdc|\x9bOH\x8eo\x8d\xf9\x0d\xd5\x06\xef\xba_\xb5\xc0\x07\xd0?&\xfc\xbcJ\xda\xf4c\xca\x05\xc4\xbf\xff\xfd\xe4\xe4\xf9\xeb\xd7\x1f?<~\xf2\xea\xe8\xe4\xf9\x87\xa3\xf7\xf8\xc7\xc9\xdf\xff\xdekS\xd6E\xfb\x8b\x97G\xbf\x1e=\xb3\xbc>1t\xf0\xe6\xd9\xd1/\xd6\x0ff\xed\x0f\xde\xbe\x7fv\xf4\xde\xfa\xc19\x0c\xe0^\xfb\xf6\x1c\x06\xb0\x07\x0f\x1f\xc2\xb9A\xf1\x00\x03\x98\xc3\x0e\x18\x8e\x96\x15*\x9c\xda\xf7O\x8dZ\"\xa8\x8e\xb2\xad\xbd\xd6SC3'\xd7i\xc6F\xcb/\x9c\xd8J\xfa\xd8$g\xc4\xf6\"O\x92|dn\x91\xc8\xa3\xa1lp\xd7o;]\xf2\xd3\xcc\xf6\xf0\xd8q\x12q\xbee\xbd\x86\xdd\xb6\xf4W\x13*_\xc7l\xd6\x9f\xc7\x97\xfc\x90&R\xb2\x84\x1dT\xb4\xf0c\x88\xb3Tx8\x06\xa8O\x13Rh\x06\x0f\x81>\x80\x8c\x8b\x9f\xf90\x1b\xf1\xe3j\x98\xc160\x83\xac)A\x99{\xcd\xf6\xa9s94\x9e\x8c\xf4\x8b\xe4\x0f\x05S\xfcs\x80\x0cE\xc2\xe9\x02#\xc1cq\xba\xf2'^\x1d\x7f\xb2B\x12\x99P\xba\x9c\x9f\x92\xbc\xc6\x82\xba$o\x8a\xd0\x7f\xf4\xe8\x91 \xfc\xa0\x1a\xe5|&\x15\x1c,_\xa9\xbb\xfb\xdf\xdd\xfd\xee\xfe7\xfb\xdf\xdd\xc3\x19\xd2R\x05\xfb&~cn\x85/2m\xe3\xba\x0d|\x0c\x1e\xc2.\x1c\n o\x03\xab\xc9,\xe0\x00\xcec\x97\n\xaf\xc1\x14\xda\xdaxkb\xe2\x1aM\x05rm94\xe4Zs\xe8\x08\xa1\x1e\x1e\x0e`\x87\xe2\xc9^g\xce\x0d/3x\xc4\x01\xe85\xb0w\xd6\x95\x97\xa3z-G\xee\xb9a?\xf8\xb6\xc7\xfc\xda{\xed\x018}c\xc0!P\xce]\xcb\xc5\xd6\xf77\x83m \x9c\xf5n\x087\x9cC\x12\xef%\xa8di\x9d\xf4\xfa/\x8e\xdf\xcf9\x1dhS\xe6\xdf\xf9y\xd1\xbe\xfd\x06\x06\xb0\xdf\xbe\xfd\x9e\x9fR\x95tW\x19K\x8eW\xf3\xd3,\xe5\xeb(\xfe\xea\x8bM\x9d\x19\x8c \xcf\xc4I\xa7^0\x1cm\xaf`\x00\xef9\x8e<\xb3\x1d\x01\x1f\xcd4\x87\xcd\x92\xa2O\xc9%\xf3f\xc6?\xab\x95\xb2\xe8\xa8\x94\xc1\xa4Z(\xbe\x05\xf7j\xcb6\xe4\xdf;\xa8(\x1cB^\x9e!\x19\x1c \x91v\x9e\x86\x99Y\xb2\x9bd\xd4v\xe2z\xd2\xea\xef]T\xc19$\x81~\xcequJ\x9a\x96A\xfd\xe1\xe6>\xb7~\xf4ec\x9f\xb8\x19\x83\x866H\xb3\xf4!\xcexu\xf1\x93\xb9\x0be\x91\xe1C\xb5\"\x82\xd4!\x08\xa3\x85\xdf\x8c~tw'\x0e\xd3\xf7Hk\x87\xefG|\xcb\x90\xe1\xb3\x91a\x08\x0d\xb5\xcc@?\x13\xd5\xf0\xbcF\xf4\xb3\x07\x8c\xd5\xc9\xabCXp)^]\xbcpv\x81\x1a\xa0\xe6\x91\xa3\xb6cB\xd0 \xab\x84\xe8>\xcb\x8e\xc9g\xbc\xa5Z7\xb7\x0d\x1aP\x0b\"\xc5'\x93M\x18\x95X\xe4\x02\x181\xae4(M\xa9M\xbfut\xb9 cF&\x82A\x83,\x87DIE\xa27\xc8\xa6b\xcb\x15\x11\x7f\xfa \xa5\x1b\xf1\xe8\x00\xb5\\\xb6n\x8d\xab\xc8\xaf+_d\xfb\xf5\xcb\xe0\xdeg\x19\xcab\n\xe2r\x11\x96\xed\xb5 \xfdi\x9e\xcd\x8f(\xcbW\xe5\xcb\xc4w\x94/\xbfl\x94\x86\x81\x11} |\x9cR\x8aT\xb7\x96\xdec\xfb\xc19\xb6\xe0\xcb\x07\xa7F\x13\"4\x19\xdeo\x8cL\xff\xf5QSU\xb1\xec\x98\xe5 =s)\xdd\xb4\xc1\xf6\x86\xcf\xe5\x01=\xea\xd5{\x88\xe0c\xff\xe5\xd1\xaf\xc70\x80\xe7\xfc\xef\x9f\x1e\xbf\xfax\xc4\x7f\xfd\xce\x7f\x1d\xbd\xf9\xf0\xfe9\xfe|\x13\xd5\xfaOh\xc1Q\x1f\x06\xcdQe\xcb|Le\xf2\xd9\xb3M\xd3\xd8^\\\x7fQ\x11|''%\x00{|$\x7f\xf6\"\xe8]\xf5\x9cc\x1e\xc7\xe3\x19yO\x8a\x0e\xeb\xa8\xd6\xd5\x96\xe8\x0b?\xc4sOt-e\xbd\x8f\x14\x1fL\xf0\xfc\xd2\xdf\x1c\x88\x17+\xac\xef\xb3L\xc8\xb2a$\x1eI\xc1Q\xfbH\x9e-\xf2\x05\xd74\xca\xfe\xbb\xac\x18\xdaDR\"\xbdx\x04\xa3\xd8\xd2\x01\x98{\xc8\xf2\x0d\xba\x18wv\xc1\x82_#x\x11F\xf0km\xf1\x15\xbd\xf5\\\x133\xa6\xbf\x14-\xbf\xf4\xc7\xf4\x97\x0eL\x7fY\x1b`EI=\x9b6\x0d\xf1\xe5\x0d#\xfc\x90#\xfc\xa8\x8d\xf0/o\x18S\xf6\xbcz\xf8\"Liw\xc1\x82\x1f\xc4z\xfe\xe0\xbf\x9e?8\xd6\xf3\x87\x06\xe5b_\xb6\x96/\xfaI!Z\xc8\x08\xff\xa5\xb4\xb7\x1c\xbd\xa5\xba\x96\x8f_S\xe4\xbelko\xbf\x8a\xe0\x9f\x11\xfc\x12\xc1?\xdaJ\xd3\xe3\xa3\x7f\xa0\xc2\xd4&9\x12\xe2\x10\x1dOb\xe4\xca\xd0\xa3L'6\x1b\xb1\xaf\xcc\xd2\x83\xe2/\xa5q\xe9\x13Y\x15F\x1eR\x8cDr\x83\xd5PN\xf8\x07\xc2\xc7\xadF\x077\x19\x1auN>\xa9\xf4\xf3\x96\xf9\xa3\x80\xe1\xaf\xa0\xcb\xbb\xbb\x93\x86\xb3\xa8q\xef\xa9<\x0c\x86#\xaf\x8e2KG\xea,\xaa\x0c\x18\xff\xf04\xb0 7fm\xf0+\xdeZ\xf0\x95\xd4\xb5\x12\x12\x0cG\xa1_\xbbq\x07r\x08\xa3fR\x883\x0fy@\xd9\x05 \xdb\\\xf3\x93\xea\x8d\xdc\xfc\xc6\x1f\xd5\x1b\xd4\xfc\x86Q\xca9\xac\x84\x9cR\xf5d\x16*\xbfL\xd2\x19~\x8a\xe0|\x04\xfc\xb8O6\x92x6\x92Y\x97\x1d@/\xcc\xc2\xdc\x97OO\x08r74\x8b\xc2\x8d\xe4?7\xb0\xc5\x80\x1e\x06|(W\xd7k\x08)\xf1T\x97\x11\xc9\x9a\x99\x81\x9a\xd9D\xf0\xd2\xca\x91\xf0\x03\xa2\xb2l\xecE\x10\x0b3F\x0c\x0f\x07\x90<\x80\xd8\xeeF\x07r\x1cK\xde\xc6\x90r\xd1\nv \xe6\xb2\x95\xc5\xad\x0e\xd4b\x0b\xbd\x1e\x0b\x96\xc3\xbdQ\x84\x8a\xbb\xe5pw\xc4\xbf\x8c\x80\x84\xa5\xa6$\x86mh+\xe1\xa0%~\xa9K}\xd6zhU\xfb\x936\xab\x8c\x9et~Df\xfc\x17/\x93q\x85\xac\x90\x15+\xe7\x02\x0c\xc7\xc6\x8f\x81\x93\xa5P\x97r\xfe\xf0_X\x05\xfc\xedmx\x04 \x1c:\x1a\x07?u\xa7\xba\xacjOu]\xc1\x01|F\x07F.\xcaKL\x12\xe8L\x86{\x8d\x93\xa8\xfc\xa8}\xdb\x03M\xb2\xfc\x1ax2\xb5;\xb1*\xca\xa4y\x94\x0b_L\x8eR\x11XQ\x83\xe3M\xfd\x0c\xa3\xd5\xbe\x91\xba\xcf\x0c\x9bx\x19\xd0\xb0?\x8f\x17\xd5\xba\xbb\xda\x05m\xd2\x08Q\x0c\x1d\xa06\x10:Ts\x13b\x1d\xd2\xaf\xff\x81!\xa9-\xd0^t\xb4\xeaD\xd0\xeb\x99|\xcd\xf8\xd5\xeb5=\xf7\xf0;N\xd3\x17\xde*\xab\x85\xfbT1\xf0#/9\x1b\xc1\xa1\xb4 \\:\x7f\x95\x14\"\nfB\xc4\xf3_\xeb\xcf_\xc7\x0b\xa1\xbb\xf2\x1a\xce\xc4=\x1ce=\xae\xf9]\x0d\x14O\xdd\xd4\xaa\xe9\xaf\xf9Acf\xdf\x11\x1cwHe\xbe$\xb0%\xf5\xef\x0c-\xcc%Fm\xd9\x18%\xc1\x82j/\xeem\xa0\xa6\x97N\x08o\xa7V#\x06So\xb8\xb6f \xb8y\xf9f\x10\x868\xa1\x00=\x0f\xf4\xbb\x9bN\x10\xec\x93\xf4\xa7f[f\xc7Q\xd2'\x9f\x97qZ\xa0J\xde\xf4\x02\xd3^\xd8Ro\x07\xcc\x93#?\xf7Z\xf2\xee\xe5\x8d\x03\x11M\xa4\xd9\xb5+\x87\x07\xed&+o\xca\xc7\xda\xcd\xe6\xe7''\xb3\xb8\x98\xb5\x1a\xa8n\x97\xaf\xd4\x1e\xac\xd7B\x7f\xcco.\xe5\xb0\nu\xa3\x907\xc6\xea\xc6\x18=\xa5;\x90\xb2\xe9\xc1!\x0d\xd1\xf8\xdb \x1b\xe5Z\x81\x9e}\xe6\xb6\xf9H\\\xac\x06J\x88})#\x04\x1d\xe6\x8f>9'\xf9*\xe8T\xa8\xa8K\xb1B9\xda\x00\x83P\xec\x82Nv\"\xe3@\x98\x91 CNQ8/\x06\x94\xc3\x15o\xeeb\\\xa1\xed(\x00\xf4\xdf\x97\xfdq.\xc2c\x8f\xa8q\xda\x16\xa8\xe5gc\xee\xbc\xf1\xaaZ@\x0b\xcd\xd1\xd5\xbe\x88m\xda\x0d\xdbB\x90\xb4 \x0exg\x0d\x0f\xf9\xe6\xa5xK\xc7\x12\x10\xa9\x05\x81\x01$f\x08\x1b\xa17\x15\xc10\xc6/\x16 \xb6\x8frE*\xd1\xc7\x14<\xa8_\x1c\x9e\x9c\x13\xdd\xc2\xd8\xb4\x00\x9d\xa43\xfe{\x86<\x01\xe9\x9f\x11\xf4\x8a\\\x85\xfc \xbf\xab\xddB\x1cQ\x185\x95\x1ek\x06\x8a \x885V\xf1q\xaa\x11\x13\xbe\xa8\x0b/\xba7w\xd3\xbd-T4\xea\xf1bsM\x02\xe2\x1c\xbbj\xc0\x8c\x8fB\x9f\xa3\xbc\x1e\x1a\xfa\xa4\x86/\xcb\x1e\xdc\x86\xdd\xd2\x9fE\xfa\xbd\x84\x91zC}\xe8:\xd8\xfeY\x0e\xed\x9ff\xc4\xf9\xa7\xb4\x19tl5\x1b\xb4\xce:\xa0U\x8b\x8c\x11*\x02O_\xa1\x15q9\x0b\x99\x97b\xd5X\n\xad\x0d\xf3j\x9c\x91@\xbaZE\xa0\xe2\xfb\nF\x16\x10\xc3\xfb\x98\x9e\x118]\xc1n/\x8cpo\xe19\xb4\x1b\xd5W \x0d5\xe8[z\x1bv\xc3\x08i\xba\xf6\x02\xc5e\x94K\x18\x9f\x16\xe8z\xc8\xe0\xa1\xe4\xd8\xf8\xdb;T\x99pN\n\x16\xe75\xdd&\xa1\x13M\xb5y\x82C\xc3\xc1\xeaX\xa3\xa3\x07\xfe=&I\x1a\x04\x0cv8\x01\xbe\x0d\x94\x8bV!\x97\xcd7\xc3\x9d_JX\xfeb\xc6\x9d_\xbe\x0cwN\xcd\xbaD\x81/\x9aJ\xe9\xf1i\xc1\xf2x\xcc\x9a\x96 K\xb3'\xc4\xe5fz\xe1|z$\x9f\xea\x0f53\xd6\xf0\x1f#\x15`\x1a\x10\x12\xc1K\x8e\x19z\xdc\xc3\x19\xe9\x0c\x04\x82\x86\x15\x86\x93G\x94\x0f4M\xfb\xf0\x932g\x84\xa3\xb6gc\xa3\xcf\x8dL25\x7fY\xadG\xe9![S-U\x1e\xb2\x03\xc8\x85\x8b\xac\x15W\xa4\x8a\x88\x04t\xc80\xecn\x07=\xba\xb2\x11\n\x7f\xbc\xa3jgf\x1c\x15\xadT;\xf3\x9a\xac\x9fu\xc84Q\xe3\x14Z\x937\xbe\x95\x9956\x9bikJ \xaa7\xbd\\M\xa8/\xf4\xc3CbD\xf9Z\xdf\xb3\xb8p&\x02\x80\xa6\xa5S4\xdd\x08\x93o\xa9\x02\x1a\xbd|\xe9\xc6\x12\x9d\x8a\x9dU\x99\xaa\"\xc9V\xeb;-\x11;-\xe1;-{\x00\x89;\x16:\xe6\xdf\xe3bf\xb0\x03 \x1c@b\xd1\xf35vf<\x8a n\xee\xc6\xc4\xa8\xb4\xb5\n\xa3\x89\x17\xc8\xae\xb3=%\xb8\xac\xfbS\x03\xa1uw\xe6\x9d{8\xb9\x89=\xbc\xd9*(\xc8\xa1\xa65\xfb\xf7\xed\xf9\x98\xef\xf9\xd8o\x8fk\x8b8\x9cU\x87\x1c\x95\x87\x1c5\xee\x8b\xd2[\xc5c\xad\x91\xf7\x0dk\xbb\xb2&4iB\x86\x85{V\xd8\xf2SP7\xcb\x86v\x94\xb1\xe8$\x9e\x04\xd4\"\x83\x96\xbb8{\x00[\x01F\x9cKyT\x08\xa4\x18\x8b\xb7'\xb4\x10A&d\xe2\x08\xf2\xedm\xb9\xab\x1e\xd8\xa5\x91\xbc s#L+}\xf5\x8d\x025\xcb7\x86\xaaE\x9d\xf3D\xd7\x12\x8b\xed\xf2\xbd\xa5Y\xcb\nl\xbe\xd5\x98\xb6\x0e\x1dZ\x0e\\$\xe1\x8c\x8e{@,\x8dX(\xaf\x8d\x10\xe4\x12\xe5\xf3\xff\x02\x94\xaf\x0e\x15\xfd\x14)C\x08D\xca\xa2\xb6\x83\x80~\xa0\x94\xc6\xa8\x07\x1e\xcc[6LF\x11'T\xadC\xc226\xbeK\xa8\xa6%\x12\xbb\xe4A\x17\xdd\xa4.m\x12\x9a\xd8\x86\xc9H\x84C\x96c\x8b\xeb\x03;\xcdI\xfc\xa9\xbd\xa06lk\x1d[\xc6\xe5\xfd\x8f\xed\xbe\xc6\xc2Z \x9ai\xb1\x8d/\xdf\x08\xab\x8a+\x01\x8f\xaac\xb5Ka\xd8\xbdQA\xc1\x0d\x11\xa5\x02\x9eC\xb1(\x82\xf2\xe4\x1e6\xbe\xe6\xb4.+\xf67\x1f\xfa3\xbcsI\x03\xe6\xe4\xfa.v\x0dA\x1b\x0e\xa1\xf7\x9e,H\xcc`8\xea\xc1A\xf5\x0b\xbd \x98\xa6\x16\xda\x86^u\x0f\xbf\xe5wX2'\x05\xb4\x9d\x8e\xe7\xd7g\xcaML\xb8\x18\x82\x81\x01\xaf\xf5\x93\xd0q\xba\x9c\x10o.|Ft\xc5W;*\xab\xd1<\xa6,\xf0\x99Hm\xffpPYQ^\x8b\xd9\x13S\x85\x03\xa5\xad\xab\x8d\xec\x83\xb0\x13\xc3\x8e\x08\xa6k2\n\xcd\x91\xe6\xe4\x9c\xe4\xc5&n\xda\x1dp\x9d\x90\xcb\xb7\xd3\xeb\x83\x15\x0eQc\xb8\xb3\xe7\xec&\x8d\x0b\xf6\xfc\x06\xba\xaa0\xb4\xb3\xcb\xeb\x0bS*UT\xb9\xc4\x98+\xcaJ\xb0\xca\x03\xa36\\\xda<\xd1\xa8S A\xbd\xe6\xb2\xb9\x94\xb3\x11\xab\xba\x19\xb1Vl&<\x04\xaa(N\xc5\x02Q \x89\xd0\x98\xf0F]7\"~xP\xd8\x1a4\xa5\x91\xd2\x13\x0fI]\xf5\x0e\x87m\xcc\xd4\xa6z\xde\xb6\xf7s\xfa\xbe\x92\xf4}u\xc3\xf4\x1dU\xc6\x8a\xbc\x8b\x1f\x1au\x17\xda\xddm\xe8\xf5\xfb\xfd\xea.\xa1\x13\xd8\x86@\x08\x15\xeaE\xb2\xe0\xed\xc1\xe9\xaa\xf69Y\xf0\x86{!\x9e\x07\xed\x93`u\xb3'\x81\x1an\xa5\x8b\x84\xaf\xebCi\x9d\x11\xabk\x9d\x11\x8as\x08\x08\xec\xe8}\x87p[\xeb\xcf\xba?0@zW\x18\xe452!n\xf05B\x9d\xf84\xcd\x0c\xb6\x87\xc6\x90\xbd\xcf\x9d\xc6\xa1Rv\xaa\x1d.\xe8R \x02\xb2\xcb\xa7\x91\xb0\x15\xe0\x19S\xdd\x0d\xe1\xe1\xa0\xf4-]\x91`7\x82\xddP\x1eO+\x89\xdcg\x84\x05\xbaU@\x99\x0c\xf8}f\xb8\x8f k\x9f]\xab\xeb\x1c6\xe7eTemy,\xf6-\xf8\xbf:\x92\x0c\x06|.vi@d\x17p\xaf3\x94\xf6D\xb5\xd0\xb5\xf3 4\x13mp\x89\x03\xed\xc3j\xf5\x85\xe7#\x0eGB\xd4@sV7s\x16V\xd8\x8dz\xc3J$\xe0\x90\x93\xf2`k\x03S\xf8\x1a\xf3\xe0iw\xeb*G\xeaT9\xd6%\xc4\x08\x12\xa3\x06\xd1\xbcl\x19l\x8b\x11\xed\xf0\x01\xe4\xfe\x0b\xd4\x92\xd7\x8c\x00\xdc\xfc\x00\xae\x80g\x1co\x03\xa0\x969\xf9\x02\xd9\x0c\xce\x9b8\xec\x95 \x9d9\xd5!\x0d\xe8\xf3E\x7f\x84\x16\xc9\xbf\x98\x03P\xca\x17\x94\xd7c\x1f\x91kuC\x0c\xc1\x8a4\x16F\xf8}\xc8\x1fe\xb8\x1d\x9aU\xc5\x13\xfegy_\x92,\xf9 \x9eq\xe7ed\x91\x81\x8f8%*\x9d\xd3 \x89\xe0\x94\xe0\x9f\x17\xd5\x9fG\xea\xcfSRF\xf4\x887\xb5@\x1e\xf1\xbe\x0c\xf29jH0|\xa1/\x89-\xbb\x04\x9el\xc9|\x89 &v\xf6\xab\xd3\x8e\xdf\x0b\xaa$,\x11\xec\x87*\x7f\x06\xbe~\xe0\xbfk\xee\xdf\xbbw\xe7\x1e\xdc\xe2\xe7\xd9\x9a\x13s\xfb\xc6)\xdfd\xe2M;\x92\xe3^\xd9F\xb7\xbbG\x8f\x1e\xc1\xde\xfdP\xde\xe1O\x02V\xde|\xf8\x10\xf6\xee\x8b\xdc3!\xac\x9b\xce\xf8\xb6P\xa6\xe3._Il\x1en\xc1\xde\xee7w\xbe\xb9\xbb\xf7\xed\xfe]X\xc3\x9d\xfd\xfd\xbd\xfd\xfd{w\xbf\xe1O\xfc\x9c2\x9fZ:\xd2)&\xac\xd7\x8e\xe0\xeb\x92\x86Z4\xd5\xdd>\x8f\xaa\xa3\xb6\x07\xa3\xbb\xe3\xae\x9e\xb7\x9a#4Px\xc5\x18\xa8qY\xe6P\xa5=\x18\xd8}\xce\x12\xf4)\xdc\x92C\x15\x0e;\xc2\xa7\xc21P\xd0\xf0t\x17\xd66\xe7(q\xec\x8d\xe0\xbd\x80\xf5\x1b\x993\x83`:\x1cxF0\xf1\x19>\xe7T\x1c\x1b\xe7K}\x9d,\x0bp :\xdb\x08\xc7gq1{\x9aM\x88\x06\x19u\xcb\xa4\\\xc4\x96\xaa\x90-\x1d\xa4\x9e \xb43\x9e\x1f\x9a\xbe\xaa\x08\xbfw\xc2c\x8d\x84a\x97\x1a3\xa9\x9c\x0b\xcb\xaf\xc9\xf09\x19y}\xb9\xf5\xd6:n\xb05\xceOS\xb4q?/\x8e\xaaT\xd8\xe8\x0egz\xe25\x16[g\xdd\xe0\xd5\xbf\x96\xa3\xa0\xd9\x84|X-\xf8\x96\xdb\x0d\xa1\xb8H\xd8x\x06Au\xbf\xab)~\x8d\xe3\x82\xc0\xdeA\xe7{\xa0\xd1\xfe\xfe\x92&\x9f\x97\xe4\xf93\xfb\x1c\xd5\x85\xcd\x7f\xb7a\xf3\x93l\x8c\x01\xc3G)\xe1\xff\x88\xc96n\x96cp6mVj\x83\xdcR\xdaj\x19\xdf3\x7f\xcd\x97k{\xfb5\x89\xf4\xa3\xef\x16\xbc\x16{\xff5\xee}G\x88\xc8\x07\x12r\xac/\xa4,z=G\xd7\x06\n=V6\xd5\x01\xfe@\x97\xe7\xa6\xc7`\xefMFw\xc8%#\xb4H\xaa@\xc2\x02\xe2\x9c`\x92\xe38M\xb3\x0b2\x81\xb8\x80OdU\xf4\x9b\x89\xb3\x9b\xdd\xf3\x0de-n\xf1\xdc\x98\xc3X\xbf|\xd2\x11\xab\xab\xbb*\x86~iI\x8c;\xde\x94|\xbay\xf1\x01\xcc~\xb1\xea\xc2\x15j\xac\xc3\xa6$C\xb2\xc9Z$\x89\xc6\xc1\x9b>\x08\xad\x0d\xb9\xd5m\xfa\xa5\xcb\xda\xfe=\xf7\xe3\xc5\"]I6\xde\x12\xd1\xaf_W\x91\x83L\xf23\xb0\x03\xb2\xddD\xb0\xe6\x94^\x91\xbc\x16\xde\x7f\xa4\x08!\x96AA\x18\xc4@\xf9>\xa8 \xa7\xc6\x08\x19\x95{\xc2\x89\xfa\xfc*\xe7`\x9f\xfd\x06\xf4\xc4y\xeaot\xda+\xe5kI\xd68\xc3\xa0e\xb41\xe6\x03h@\xeb'4]\xf1&\x85\xd6\x14\xd5\xa4c\xe1\xd4{J\x80s\x0fd\xd2\xf7\xf4\"\xfdd\xe1\xedKu\x0c\x13\x8c\x92f\xa1 \xf5b\x16\xfc\x85;{\xf0\xb5HU\xd8\x1f\xcf\xe2\x9c3/\x8fY@Q\x98\xb1\x8aG\xc7\xa4\xed#\xad\xff\xe2\xbd?&U\xc6\x84\xa48*ic\x9bj\xbc\xf5\xdaa,_9\xf0V\xa9;\x8d4\xf3\xcf\xab\x08z\x7f\xefE\x82]\xb4\xea\x04\xc6\xb18\xe2]{\\\xf6cs\xf57\xa0Y\xd8\x16\x97\xdf\x91\x08>XE\xe6\x9fI\xfc\xe9u\xdc\xd02\n\x06/xGd\xe6\x02\xf9\x92\xa1qqF\xb6\xa1\xfc\x1c;<9I\xe6\xf3%\x92p\x8em''\x8d\x14\xed\x1d)\"\x03lE\xfc\x0e\x9e\x93&\xd2\xf3\xfe\x7f\xe7o\xec\xdd7$\xa6\xe4\x0f\xf6\xef\x192\x1f\xbf\xb7\x0cY\xb2\xf86)\xfa\x95e\x03\x9c\x91@\xc4f\xa1tV\xb9\xcd/H>\xcd\xf2\xb9P\x7f\xc7\xa2\x8d\x8b\x84\xcd \xa6\x90\xd0iB\x13F\xa0H\xfe \xbe;\xf0\xa3[\x8cw&\x0d\xfbE$\x0d\xfb\x8cMp\xfeb\x1c\x94\xf9\xd3\xf9\xb3>\x1f\xd9\xeb%\x8byO\x85\x16\xd6\xd2\xa5\xab\xce\xad\xe9\xed^\x91\x80*-?\xedO\xb3\xfc(\x1e\xcfj\xf1V\xc6@\x06u)R\x8a\xdc\x15m\xa9\x9b\xd4e\x8a\x82\xf6\x03\xe7g\xef\\ \x7f\x90\x8el\xe6\x1fI\x04'|\x9e\x1f\x89G2\x9d\xd2| B\x8a\xcb\x038r\xa9\x88\\\x8bd%!\x1d\x15\x86`{\x00\xfb]\xa2\x14\xda\x85\xe1Q\x95@\xc6p,\xbfN\x8a\"\xa1g\x82 \xc3^?\x91\x95\xc8f\xc1\x86\xd4\x94fR]\x82y\xe6/E\xfcU\xde\x97-\xdc\xbds\x9d\x11\xfc\xd76_\n\x85\xa7\x96\x01\xeau\xbc\xb0\xa6<\xfb\xf8\x85\x96\xc5\x93<\xcb*\x959\xff\x81\xa2s\x19K#\xf26\x85&\x93b\xad\xebb\xa3\xae\xff\xa1'\x85r\xcf\xa9 \xec9\xdd\xa0i\x9c\xc8r1\x89\x19y\x8e/\xaf\x0c\xd5\x0cm\xdfn\xba\xb29\x99g\xe7\xa4S\xd26\xccz\xe5nxBR\xc2'\xe0\xdbtk\xd6\xbeS^m:e\xd1IsA\xdc\x89\xa3\x85\x08Y\x92\x17\xa5G;\x94\xae \xa12\xce\x94\x13\x18\x92\x91l\xd4c,m\xf4\xb0\x8c\x06\x83]\xd1)R\xc6b\n\x14w\xf8\xc8\x96$\xda'\x91\xc4\xb9\x8c\x03\x15\xa6\x8d\x95]'\x1aw\xfa\xe2qr\x17K?<;Q<\x97)c\x12YM\xcbb\xd6RW\x01\x03\xc8\x82\xa5\x83\x06\xca\xe5*p\x02K\xe9\xac\xdb\x8e!\x03\xab\xd4qF\x82\x04cH\xd0p\xc3\xf7n\x04\xbd\x84\x9e\xc7i2\xe1\x94\xf8]\xccf69\x88\xcf&\x85\x01\xc4.\x0fT\xfe\xd2XNy\xc5\xa7\x8c\xd4*\xe5\xfb\xc9\xfe\x01?\x07I0\xae\x16\xd0\xa9(\x9d\xe2\xec\xc7r\xf6\xe2\xd7\x8a\xff\x92\xbb=H9\xbe\x06I\xc5\xcb\xb0\x10\xcf\x8e4\x82\xa9\x81\x07\x90{\x9eR\xd4\xe9Z\"\x1ee\xdfy\xd9\x9b\xe4\x9aZu\xd0\x1a;`\x9c\x92\xd8Y\x94Hk\xbc\xed\x16\xc3\x84?\x84Ym\xc0:\xea\x8d\xb3\xee\xf6k2P\xe7\x04J\x8b,_\xa9\xb8x-t\x11&\x06@\x8e\x86 b\xb1\xfeE\\<\x16\xf44@\x1f\xb6\xfe\xc9 \xa1\xc52'o9\xbd\x0e\xea\xc4[\xb1R\xce\x81\x97\xbd{\xee\xc1\xd6\xf9P?7\xf4\xd1pQ\xec\xd2\x0d\xb6\xb8x\xae41\x9b\xf5\xaf\xf7\xd3\xb12%\xc86\xebA\x9e[\xce\xb67spR\x1a\x11r\x01/\xfde\x9e\x8d\xbc\xd0\xbe\xd4\x89Y;\xdcKo\x1b\x94\x03\xdb\x99E:\x88\x08\xba3\x93\x80a\x82\x19\x86\x19eL6\xf7H\x94}\xea\x80\x80\xb6\xda\x9d{K\xed\x98\x8a\xc11`+?\xd2\xfeI*\xd6Fgk\xa2*\xaf\x03\xb24\xc8\xe15\x1a\xd2r?\xe8\x0c\xce\x9edp\x0c\xd3I\n.\xb9\x0f\xe0\xb3\xc1s\xe8{\x12\x01\xb2W\x8dd\xc0\xaf\x1f\xbf\xb3TO{\xc2\xdf\xd6\x81dS\x0f\xfedO\xfc\x81\xc3oOH&*j\x19\x1f\xac5>\x9c @,\x9d\x9c&l\x8e\xe0PN\xb14\x13.\xc8\xd4\xab\xcf\x9f\xaf\xd3\xe78[Rv\xed._\\\xa7\xcbOd\xf5\xa3`\x8aY\x0b\xba~\xdd\xfezs\xdd\xae\xbc;}\xd9\xdd\xe9 \x13\xa5FK\xa7\xe6*\xc2\x86V\xbe\xcd\xf1\xf8\x93H\xd3\xa9(\xcaW$\x90\xbf\xfc\xb4\xa1?t\xa6x\x14\x15\x90D\xc6\xaaVRJ[\xb3_u6k\xa6m\x1ce\xac\xe5o\xd1\xab\xf8\xc0\xe6\x8eyr\xb2\xc8\xc9\xb9\xc9\x14\xec\x97\x85\xe5\x9f\xbeIQ\xeb\xc5_\x9f8\xf2\xf6fJ\xaa#\x11d\xa5H\xc7\xf0\x87F\xe9\xa8\xb8!\xa5\xbb\\\xfc\xaa\x13\xbd\xcck\n\xbf8\x93R\x7f\x8fz\xed\xe0{>\xa0\x7f\x92`\xd73\xff\xdd?\x9c\xb8z.k\x92\x9b\x8d\x9c\n\x15-\xab\xadt8\x17\xc1\xa9\xc5\x9d\x12d~\xd8\x8b\xe0\xc4\xa1\xbc\xc1\x04pL\xf5\x86\x91/\n\xbc\x11h\xcaU\xb1\xb8I\x04q\x18\xc1\x96T}T~U\xe6\x0eD\x1e\\\x19~\x18$\xb2P\xd7!\xe7\x02\xa4\xf6`g\x0fK~\x1d4\xab\xc9\xf1\xeb\xcae\n\x17zvl\xc6g\x14{U\xf9\xc6\x9fp\x9bW\x93\x1cZ\xa1'\x8a\x8f\x19\x1f\x9b\x82@m\xc8C\xea*\x8b\xb2>c\x16\x95\xd4\x07Q\x97\xb4\xd5\x14\xa4\xa5\xa3@O\xb8\\p\x08\x19\xee6\x93\xbe\xc2\x82\x8f\xd2\xe9\xa6\xd4/\x89\x05\x8d`\xe9\xe4U\xb8D%$\xb6\xc0\xf8\xe9\x01GD\xb9\x9e\x84\xf3#G\xc12\x8c\xe0(\x881\xeb\xc3\x05?'D\x0e\xd7!\xff\xcc7\x9d;cn\x1e\xaa\x95\xa8\xf4W\xe1\xf6\xd9\xba\xff\xc2\xcf\x13\x976\x80c\xea[l\xcc\xf2\x08\x1b\x0c\xf8\x02h\xac\xf3\x8br\xa6\xb2\xbaP\x04\x99\xc9\x96\x83\xbbW$\xde\x0e\xaa$_U\xcb\x07\xda\xdf\x8f\x1e=\xe2\xf4\xe3\x16\x9c\x99\xf7\xf9\xb2\xde\x08\xba\xe9k\x1fY),\x1f\xef\x8f8^\xaci\x1b\xc3Z\xfc\xb1\xc4qI\xbd\xea\xb0\x82\nl\xc3\xb9\x84\xccH\xe8\x15\x07\xf5\xd5\xcdB\xfe\xe5C\xf1\x1d\xe1+\x0d\x070L\" \xbeK\x9e3\x17\xbd\xac\x12k`\xf5\x82Z\x86\x02Z\x9a\xe8:\x12\xdfph\xd1a2\xb2\xd3\xcc\x02M\xb46\xeds\x1c,\xd1-:\xe0\xaf\x15\xf5\x8c\xc6>~ \xd3V4\xa1\xba\xae\xc2\x90\x1f_\x8be1\x0b\x0c\x9eEV\xf2\x12+\xa0e~@\xce\x9c@.w=zmUj\x95[\xb7\x00\xb3\xb0\xd6\xd4+\"'c\x99\xd8Wl\x7f?\xce\x12\xc1S\x82\xc9h\x87\xbc\xa3QX\xe3\xc8\x98\x0fG\xa6.\xe5l\xc0\x86\xb6\x04x\xea\xca\x10\xab%\xf9'5\x115FEKl\xad\xfe\x01F.J]\n\xd9\xcd\xb4\x99wU8\x8d\xf2|\n\x0b\x90\xd1a\x9a\x82W\xc9\x99\xd6\x8e\xb9d\xb7\xe0\xb8\x85\x14\xa9\xe8\xb2\xf9\x1f\"\x7f\x9dJ\xdb\xff\x0e\xec\xc1!L\xfa\x8bLT\x82\x98\x0cSN\x8dZ7\x86|\xe4\x9c\x1f\x9f\x08\x06S\xfc\x0e#\xec9hh\xff&\x95)\\ \xcc\x11L\xbaX\xd2\xab\x08~\xbc693F\x97!vY6+\n\xf5\\\\ \x82z\xfdp\x11\xf9IP\xf6\xb1hF\x12EC\x84\xa6\xd7J\xd8x\xc3\\\xce\xb9%\xb8\xbb24\x1b\x95\xb3\xc3%\x13\x8f03\xf2H\xc4q \x19\x89\x99\xd8\x89&x\xaeM\x17k\x99\xa1U\x02\xe8\xa7$\xc8m\xa0\xd2\x04D&Y\x1e\x8a@b\x0e\xa9\xb2P\xf0]\x9a\x9f\xa7u\x18\x9a_\x1acL\xe5\xd6\x00\x82\x14n\x81 \xb5\x91\xae!\xa1\xce\x1a\xca\x1c3AUtz\xc9D\x93\x08|s\xe7\x0b5B\\.\xf3;|\xef\x8d\xe1\x10\x16\xc3\xe9\x08\xdc!\xeb3\xa1(\x9b\x08\x0b\x8cX\xe8\xfaZ\x99g'\xd4\x04\x13\x8f\x83B\xc0\x01E\x97\x85F\xde\xc7N\xf2\xeep\xf3\xaaU\xfc\x92\x0c\x01\xdf\xcf\xa2\xde\xcc<\x8c\x103v\x1fHV\x9f>\x80%\xa6\xf9\xe1\xb81\x80\xbd\x10\xe2\xe1r\x84hp\x0b5\x0bl\x98lo\x8f\x1c5\xeb@\x13J\x87\xf9H\xa8\xb8\x84/|\x80 \x05\xb7\xb1\xda\x98\x81\x90\xf0\xc7\x8b\x08\xd2\x08\x96\x11\xcc,\x90\x94\xe79\xff\xbf\x08S/\xa1\xc4\xe5?\x16,\x86{\xf0/\x98j\x9c\x8b\xba\xe3h\x0f?\xde357\xab\xda\x99\x99\x11\xf1tSr\x7f\"\xd1m\x86\x14\xfc\x00R\xf8\x17\x92\xfd\x14\xd6`\xc1\xd0\x0b\xed\x93\x82\x05\x8b\x08\xa6\x11\xcc\"8\x0d\x9b\x01\xf8\x1d\xe2\xc7yY\xed\xa3\xf2\x80\xb0\x1f\xb5B\xbdZ\xa6\xbf\xc9\xb5\x08Z!\xc5P\x80O\xb9\xa7\x1eb\x99=Q\xf3\xacslz\x97\x88\xf6\xf5\x0e\xdd*\x8d\xa4\xfa\xcc1\x06\xb7\xa2#\xe9\x92\x16\xf0%\xb5L5\x00\xa8\xbbn\x19\xa2\x81_0\x80\xafH\x90X\xed\xe7\xe0\x14\x17\xc6\x19e \xdd\xa8\xf8C\xbb\x7f\xedW_\xf8\xccv\xecj\xa8\xb6\xa7mct\xe6J\xb5\xe6Im\x10\x90:0\xf9*\xa7|\x06s\xb8\x0dw\xdb-\x8f\xd5\xb3\xfd\xf6\xb3i\xf9\x9d\xcds\x7fa\xf1\x188\x97\xb1CG\xc6\x80a\xe4\x9b\xbb\xf3XZ\xe4\xea \xe6\xc9+\xa9\x9d\x99/\xa4\x18:\xec\xaa\xe7D\xdd5\x1e\xc4`r\xa9\x03\n^\x89\xe3:\x87G\"kt\x0e\x0fa\x0e\x87p\x81\x99\x07\xf2\x08U\x0c\x18g\x8a\x85 X@\xfb,\x13\xf2w\x88ei\xd9\xc6n1\xe8'r\x9c\xfc!z6\xa4\x01\xe9\xd2\xf4\x96\x9a\xda\x0e\x7f\x13\x93\x17\x89\x9f\xa7\xc5\xc4\xed0\xa2\xe5\x01\x99\xb1\x8e< \x0b\x16\xc1\x05\xe1l2\xf3\xc8\x03\xa2 \x1f\x81=\xc6r\xc1\xb4#\xeeKsZ\xbcJ\n\x06\xc3^\x04\xbdQ;\xa9E\xad'\xcf\xa4\x16\x89\xaa\x15_%\xc5\x0f\xcb\xac\xe4\xa4\x9e\x95\xdcq\x9ar\x01\xb6d-1I3\x8e<\xcb\x93\xb3\xc4\xe6\xd9\xa6d.\xde\x13\xed\x8b2\xa1\x04n\xc1\x99!\x14\xd2\n '\x0c6\xcb\xae\xe1k\xbf@\x901\x04\x99d\xabjU\xf3\x1dE\xa00\xb1\x7f\xe5\xc4\xc6\xe0\xa1\x96\x0dvs\x975\xc0c\xe1!\xec\xc2!|\x92\x19\x0cq\x9b\xed\xca\x08SqsW\xa8\x1f\xf7\xc43f\x8c.\x03\xb0'\xd8c\xe8\xfb\xa4\x16\xd3\xfcNe\xcf9aq\x92\xba\x19*\xe5\xdeo})q\x06\n \x14\xdfb\x94\xc08^\xc4\xe3\x84\xad\x84A|\x00\x97Xo\xbb\x195 \xe4A\x14\xb12\xf1R\xd6x\x89\xf4ORrN\xd2\xea]\xfb\"n%~\xe1\x06\x89\x08\x9b\xa8BL\xcbuV^\xf6b\x14\x1c^\x9b\xb8\xdc;7\xd3\x05\x82E\xac\x14~\xad \xa4\xcf13z\x17^\xb9\xe2,k\xdbj\xb3\xf4-H \xcaJ\x1c\x9aU\x03 \xcb,\x992T\\h2\xaf\xcah\xaf^R\xba\x0d\xf1p\x91&c\xe4\xdb\xf6lQ\xbb\xb5\xc1&\xb4 \xf9&d\xa0\xd1\xcbn'8\xfe\x0d\xc9$tjZ\xfeTK\xab'\x9b\xc0\x15\xe6\xf8\xd3\xc8>!%%\x81j\xd7NE\xc1\x19)'(\x16\xcbb\xd6\x05 %\xbcU\x11\xfa\x96]\xae\xc1\xc9\xca \xe1\x1b\x16\xbai%\xe0\x9f\x90\x11\x91dQ\xd9R-;\xbe\xe6\x16\xbc\x8b2\xbb\x96\x16\x11%w*\xe8*l\xe3\x1e\x1e\xe6^%\xd9\xea`\xcb|\xf3:|R\x87\xecn\x04;{\xeeV\x97\x14wWW\xcb\xad\xf5\xb8\x16\xb0\xad\xa1a\x9f\xf0\xc8\xd9\xf1\x05\xb3#\xfbd\x99HnH7\x07\xb1\x17(\x9a@\xee\x00\xf0&\x89W\x1e\xfb'^i\xf7\xe1\x95\x90\xa3\xd9\x91o\xe2\x95vw\x1b\xe4\x19y\xec\x97g\xc4\xdc\x87\xd7\xb4\xce\xaf\x93\xd7\xe3qg\x9e\x91&\x9fx,\x08\xad\xd7\x89\xa6o\xc2v\x11\x8dz\xcb\xbe\xf5\x97\xce\xbf\xa8\xee_9\"Y\xe2\xaf\xac\xfa\xe7\x1e\xddfI\x19\xca\xedi\x17gOJ\xe4\xb3\xaf\xcd\x06\x05a0\x14\xb1\xabB.\x9e\xa8\xa7\xec\xdfW\x04\x86b\xd1\xd6\x8d)\xd0F\xd9)\x9aur\xa5\xfe\xd8 _\xbc\x02\xa1s@\xa1\x04\xc1\xa2\xd7w\xa6\xd7\xad\xec\xdc\x98\xc8_\x92d\xe2\x82\x05:\x9b\x135\xb8\x9c\x1a\x87\xa3s7\x91\xc6\xdcl\x94\x90\xc2\xb4\\I\x81\x12\xf6\x00&\xac\xad\xc1\x9a\xb1v\xe2\x89W\xcf\x8f?X2O\x9c\xa3\x05]\x83\x9cM\x7f5gV<\xc0\xb1\xa3h\xac%-\xa8f\xd2\x8cn\xd3\x7f\x9d\xb3\xe1\x8c\xa9`\x90sV\x05\x83\x9c\xb32\x18\xe4\x9c\x95\x89\"\x9f\xc8\x9c\x91\xda\xbbx\xbf|[\xbd\xa5~\xe1\x8b\xa5\xfd\xed\x89\xb2\xc5i\xb7\xd5\x17\xea\x17>\xaaR{=)\xf3|U\x0f\xcadOOj\xd9\x9f\xf0\x85f\xe2\xa0'\x0d\x89\x19_\xd2\x93\xf4<\xd1r\xf6\xc8\x87z\x0e\x9d'\xb5\xa4:\xa2\x0b=\x03\xce\x13=#N\x04\xf3\xb6\x08\xf4\x84L\xb3\xdcd}\xb4iZh\xe9\xd0\x84\xde\xcc\x0c#\xdb\xca\x8d\x81\xeb\\\x86^hL\x97Y\xbb\x88\xfaC\xe1\x13e\x0e\xad\x15\x0e\x80\x8f\\\xadK=\xe1p\xc4O2s7\x99\xf4\xbb\x10\xaaHs/LT\xbd\xb0S\xf2\x18\xf4Q\x0c]\x06,,R\x1fs\xba\x15\xd7\xc0\x8c\xb0\x85\x1d\xd4q\x86!\x8e\x06\xdfJj\xa0jSe\xe3\x80\x85\x95,\xf3\x80\xf2\x12\x06p\\\xe5\xce2\xcf\x7f+1\xabTj\x8e\x13\xbb\x0f\xa0\x10.\xa6\x05\xfaIJX\x14\xa3R\xfc\xb2\x12\xe4\x0c\xddD\x96%\xf48\x8d\x0f#X6)\x98\x01G\x1fO\x19i\x1d\xef\x9d(\x1a\xd4q\x14\x83\x8c\xbf\x00S\xa5\xf5\x13\x85\xfa\x0e\x84\xcd\xdc\x08k\xee\xc4\x0b\x07\x93:\x0e\xda,J\x88\x839&\xcb\xe4\xd8\xa5\x83\xd1\x80\x82\xf8Rf\x86\x0c\x1a\xbf6DN\xb5Y\x9c('\x9b\x8ceoRY\x91\xa1\x92/\x92~mq9M\xceD\x85\x11\xc4udi\x1fog,\x82\x15\x8b8\xd3\xe0J\xa3~b?\xad*^]\x1d\xe2F\x08KEay\xb2\x1b_\xc2\x04-,\xc8\x1dQ3Ryf\x87O-\x91\x88d\x1cv\xc3\xc6\xc4\xa0\x16\xf7\xcc\xe7\xb6\x8c\xc0jc\xad\xe9q\x96\xb5rV\x16O\x13u)b\x12K\xff\xa5C\x85`\xe2x?PQ\xee\xf8\xd3\xce\xa3\x82\xf4K\x89e\xe5\xc3]\xf4\x8c\xdd\x81\xd8\xfd \xaa\x18\xf9k\x16\xbe\x11_y\x04s\xc4\x1d\xfe\xf2\xdca\x0f\x95@\xe8\xe4\xe1\xd5\x95\xa0\xe3,\x9fvZ\xee\x87SG\xd1\x11\xd0\xd4\x12X\xedq'\x85\x03N5\xdd\x9f\xc8\x96\xd1\xb3k9$\xe6\\)`\xdcvx\x97/a\xd1t\xcb\xcfPs\xdc\xb1\xac\xc2\xa9\xd5\x7f\x01S$/\xf5\x05L\xe0\xd1#\xc8\xdc\xdf\x8d1\x00f\x9b\x1f\xeb\xea\x03\xc72\x8d\xcb\x05\x1d\xdf\xf0\x82\xe2\xb9\xf6\xc0\xea`\xa1_|\xed\x8d\x19]L\x97Z\xf4\xa5M\xe8k^\x89,\xb2\xc7E\x9d.\x85|\xf3ZJUh\xe7\xcbv;\xbe\xba\xf80\xd2\x86/a\x17\x82\x83.\xf5#\x92\x8f\xe1\x00\xd2.$\x079\xf2X\xb8\xa2\x17\x98y?\x13\x87R\xc2Q\x83\xf2S;\x0b\xedn \xe0\x9c\x92co ]l=\xf6K(qaL\xf6c;D\x96\xad\xec\\\xe7\x0e\x8d\xc2\xb2T\x93\xc3\x0e\x17\x92\x96\x9a\xaa\\\xfc\xd4T\xe5\x0co(=9\xc5_U\xd6\xa3e\xa9$\xcf\xf0\x87&5&\xe2\x86\xd4\x97\xc7\xe2W=\xb9\xd7\xd2\x0b\x14G\xcc\xa5Q;c\x18\x06}\xc6\x07$\xec\xfa\\|\xf34\x85_\xb6\xa1l\x03q,\xfc\xf1er\x1ewL\x05\x11N\xf3\x0f\x15qS\x8a\xd9\xd6\x07\xc8\x0b#^j\xbe\x14\x99kc\n\x96\xb3\x83sK\x1b\xc4u\xb8td\xcc\x19\x0b\x13\x9f\xb4\xe5\x89\x8d\xa1`\xe1\xd4$\x8d\xc5 \xa5\xf2F\x05\x92\x0d\x136\xde\xb2c\x18\xc0\xd8\x1c6h[\xd1\xa2>\xf2\xf2\xf8'\x95[\xa6\xdeUT\x83\x9d\x80<\n;-\xde\x12\x0e\xcb\x9b\xcaD\x16\xeb\xe3l\xc7 \xd8\xf0\xe6\xd8\xce\xd3\x95j6\xf4\x07(c\xf0\x88\xe6\x99J\xa4\x07\xea\x9c\x05\"?\x97dK\x91+\xe5\xa3\xe2\xe2\xa5g\x1a\xc3\xa7\xf6\x91\x94\x16\xf4\x86\xedW\xb7\xac\x9a\xf9A\xf1\xe5C!\xd0(V\x10\xb6\xe1\xdc\x86t5sD\xc9DJ\xbe\x15\xbf~ \xfc\x16\xd0\x15\x07\x0b\xab\x0eJ\x1f\x06\x11\xaa\x95\xa3'\x03\xffhg\x00\xe7N\xc4\xeb*\xf3n\xad\xe8\xe5L\xd2\xa3\x05\xbd\xa8\xa83Q\xeeX\x7f\xa2\xe2\x0f,\xe5\x8d5\xb3\xbe\x9en\x07\xf33\xd8\xd9\xf6\x0e\xf6?\xf1a\xff1\xc6\x03\xb6m\xc5\x19\x96\xa5\xcc\x8c\xd8H\x91\x9b>@\xb3\xd1.\xfe\xbd\x8d!c\xbc\x05\x83\xc7\x02\xc7\x87\xb8\xb9\xbf\x92.2\x15s\xdc[j\xd8\x86\x86_\x13\xa7R\x13\xfb+\xd1#\xd5\x91i\xac\x82N\xb7a\xccG\xfd \xc4\xe7r\x1fa\xf5\xac\xb4\xbe\xe3\x0fa\xa8\x8cG\xe9H\xee*.\xd8\x8da[e\x1f(\xf8\x9f\xe7\x86\x11\x8d\x85L\xc8\x1f\x8f#QF}\xcc\x0f\x00\xf1o\x82\xff\xba&2\x15\xd2X\x82\x11\x04\xf8\xe72|\x00\x0b\x0e\x11\xec\xb9\xe0\xbb\xc9k\n\xb5\xa1\x8b\xf1\x9a\xf1n\xd2\xe5N2\xc3 \x8a\x87\x18#!\xc8\xc6RH\xdc\x07|`x[Soat\xe3\xc4\xbc\xb2X0]|s\xeb\x16\xc6\x01\xa3h6i\xa8 :h\xc5\x1c#X\x90\x90\xa7bz\x9c\xdf(\x1e\xc0\n\x1e\xc19\xff\x87S\x82.Y\xe2\x14\x060E\n\xb22+I\xd4\xc5\xbb\x9bK\x92s:\x12\xfdV\xbf\xad \xa4\xcc\xfc\x9d\xfaP\xf4|\x8e\xb4\x0b\x060\xe9\xa0L\xa0\x18|\x05\xb2\x80/\n\xc6\xac\xcfj\x8a\x93\x1c\xd9\x98e\x88g\xdd\xa3\x01,B\x8898\x16\xb8h\xf8o!\xdc\x16*\x07\x85VSR\x0f(\xda2\x85O\x96\xee\xc8\\8\xce8\xa5B\xfcp\xae\x9c\xdc\x87\xa9S\x98\xe1\x0bs\"\x84\xeeG\x8f\xf8\x81\xeeZ\x18>\x80\x13\xa4\xae\x8b\xea\xf5\x10Ns\x12\x7f\xb2\x7fu\"\x05\xb5\xed\x01\x04bK\x85\xf05\x9c\xe0&\xd9)!#\xf7\xd3\xf0\xc4,\xdc\x9a\x177\x15X\xfdH\xaa\x11E;M\x90\x16|ev`\xcc\x97(\x15\xfb\xe1\xa1\xd8\x0f\xb5\x0f\xca\xe5,8%\x90\xef+\xea\xb2#\xa9\xca\x8e1\x8ar\xe3\x94\xa4KTkT\xc7\x89`\xbbI\x8d\x9d_V\xba\x1d\xc08\xce\xca\xbd*\xd5\xdd\xabf\xbe\xeeU\x9cL\\\xb0 \x16\xe2\x0eFj6\xa3\x1b-\xc7\xf1c\xbf|\x91\xb9\x9e/\xb2\x16A_eY[\xba#B0)\xb6\x93 F \xc6\x9a\xbe'\x15\x10~$\xf7l\x82\xeb++\xfd\xc5A!RJ\x8aU\xbf\xe9\x94\x92\xb9\x88GK7@\x8f\x04\x1e)\xa7\xc9[\xb7D\x82\xa8\xca+9A\x92\xa2 \xdf\xccrcY\xa9\xb7])\xe6\x84[\xf5.*\xe5\x94\xce\xfa\x9co\xcas\xaf\xf6\xdf\xb9\xdbw\x16z|.\xdc\xe1>\xb0\xaa\xbe#\xbf\xb5\xb1\xdf\xcd\xf9\xff\xfa\xfa\x8e\x1f\xdcP,Ka\x8e\x9b\x08gk\xf0\xb5oJ\xbe\xba\xea\xe1\x9dfT\xb1+!\xaa\x14\xe1(\x02\xe1\x8f\x03\xb4\xdb\xf7OD\xea \x91;<\x15\xf6e\x8f\xdc\xe1^sz\xeeT&\xac\x842a\xc5{|\xcd\x02Q\xdd\xe6\x88\x05\xadP?K\xeb\xbf\xbb%\x0ci\xda\x89\x14KoM\xbd\x14K>8)\x1c\xfc\xbcHI\xc1,\n\xff\xa2\xe2\xf8\xf9\xd1\xba\xb4\xa9\x12\x06\"o\x93\x19o\x85~\xa2KQ\x18K\xf28\x10\xda\xd3\xea\xe7>|\x0d\x89r\xdcD\x1b\x910V\xb6\x93\x9fZDXu\xc9\xfe\xb5\xf9H\x15\x0bJk\x96}\x14\xf6Y\xf6\x92\xac\xc8\xe4\x98|\x0e\xc2\xcd)3\x19\xeeZ\xb8\x86\xb0?M\x93E\xc0;x\x1d\x8b|:\x1anr\xa2\x9b\xd7p\xb5\x8e\xb9\xba\x933:\\\xa0\xf1L\x95}c\xa10\xfe)%\x86\xe6\xdc\x1bkj\x0bND\x96J45(/\xb5X3\xabm\xa6B\x80\x18Qi\x19\x0e\xf7F]\x8b\x9d\x0b\xd5\x9eXG9\n\x91j\xdd:\x081?\xe9L\x1f+\x12Z\xb5\x10\xcbB)\xb2\x19+\xc9\xb0\xf1=\xb9\xfc\x9e(\xca!|\xc3%\xe5\xc8\xcc\x9c\x0c\x07\xe3kt\x7f\xf7\xcc\xbc\xfc\xa6\xc3\xeb\x04\xdd\x954\xaf\x93\x93eA^\x92U\x01U)\x0bE\xf1\xdaI|m\x9d\xbe\xb7\xd0tc\x8f\x9b7\xff\xec\xafm\xfe\xd5_\xdb\xfc\xc7\x8e8\xb6\x7f0W\x8aXV\x1bA\xbd{~\x83o\xf1.\xafN\xad9CR\xe6\x08\x8b9\xaa\xe2%\x9d\x0d\x9d\x97e\x92\xe5G\xb2\xfe\x19\xfa^9\x15b\xfe\x83\x05}7\xc9n\x02\x0b#\x12\x99*\x8a\xf09\xcd\xe2\xa2\xd3\x0d\x15\xf4\x8e\x12:N\x97\x13R4\xab\xda\x97-\xaa\x176kv\x16\xdb[\x1c\xc7\xe3\x19yO\x8a%\x86Q\x12\x1aaE3\xe9Q\xf8\x91\xe2\xe3Z\xd9.W\x04\x93\x12C\xcc\xce\x14P\xa7P\xadzV\x9e\x8c\xa1\xf4:\x14\xbc\xa1]\x1da-v\xa5y\xa7n:?\xa1\xef\xe5\x07\xc1\x9b.\xa9^i7UW\xa2]\xbb\x98\xaeXx?'Vu)\xbbf\xee,_\xab.\xe4RHg\x1d[uU\xfb\x0c\xdd\\\x87\xbb\x1d\xd9\x90\x00\xc3:\xd5\xbb\xda\x87{\xa3H\xfb\xbb\xe5^\xd8\xbc\xdcfQ+\x19Q\x97-\x8b\xb9\x1f>\xf2\x95\xc2\x15\xfe\x9d\xcbLp\x00\xbf[\x11\xa9v\xd3F{?ws\xba\x9d\x148o\x12\xdd|s\xd2b\xa7\x01y3\xa4\xd3\xa7\xa82\xc6\x81bbz7\xc5\xadj\xa6d\x18&\x8c\xbe\xf6\xa2\xc4Nn\x14\xedp@N\x02\xe43\xbck\x13\xa0\xac\xc3\xd9\xa6N\x83\xf2\xa0\x9a\x91\xfaXZ\x04mD)\xeb\x98\xb2\x99(\xf9\xcc\xb9\x86\xc3o:\xeb*o@i\x94\xf8\x9atR\x19t\xb4\x93\x04F\xc9\xaf\xf6\xb7\xcf\xa5OZ&h\x83\xdbE\x05}\x13\x9c4H\xc9\xef\x1cZ\xcbHC\xb6\x18)\xd0\x92\xe3\x9bq\x01\xc0\xa2NhUE\xb4\xec\xf1\xef\xbb=\xd7\xdc\x1b\x9c\xea,\x16m\xeev\xba s\xe4\xe2\xb2\x88`\x7f\xd02\xe7\xcd \xa9S\xe0\xa3y\x06\xa0sW\x1b\x8c\x13\xf4\xbd(\xa4D\xdb\x961pW\xa8Yj\x90-W:\xc1\xb2'\xd4\x04\xc8\xbc\x8f;{\xb0cHa\x0d\x92{h\xd2X+WP\xa7\xb1\xb5\xc6--_\x8f\x8d\xeb\xe0\x0e\xa9\x81\x97\xa3\xe6\xe8\x90\xff8\x0f\xd7Q\x8c\xe4*\x82-\x1b\xec\xcc\xb1E\xae\x19\x19\xcfx{\x0f^[\xfe\x0f_\x95_\xc7\xc9\x8e\x9b1k\xa2\x9a\x15\x8f\xcf\xcbD\xbd~\xc7o\x86\xc7\xd4\x8a\xf7\xb2\xb5U\x11\xc4\xccq\xfaf\x7f-;P\x8e\xa7\xcd\x0bH[\xbb\xa1\xb4P(t\x98\x0e\xa6\xc0\xe5My\xae\xc5 \xd8\xcf\x98\xa5\xb9*/t#|\xe2p\xeb\x05%5\xe8|\x02~P%R\xdc\xde\x8e \xe3\x0d\xe5\x12\x02hn\xb6\xe7\xf9\xe4Sm\xfa\x84\x81Z<7\x1f\xe1\x03\xa6&\x1f\x918*/v\x03m\x036\xc3\xd3\xf9S\xe1\\\xdc\xc9\x8d\x80\n\xca\xa8s$\x89\xfb\x0be\x08K|\xb8\x12\x906\xb1b\xb8\xeb\xb0\x9a\xa9\x0b\xb3Y\x1a\x13\x83\xeaW\x1d_\xc6h*\xd4r\x02}\xc6\x8a\x882\xb7:\"\xcf\xd8\xcap\x82U\xf01\xf3;~\xb6\x81'\xbe\xc4\x8fX\"N\xf9\x0c7r#\xe2B\xc4\x1e\xdcF\x1f\x1c\x0cDD\x9f\x1c\xf9\xfe[Y\xc1,\xeb\xcc\x9b\xc4\xd1\xe6\x9d\xa8cf\xb7'|@\ni \xc8\xe1\x04\x0c\x12X\xaf!\xe6\x7f\xc5e\x8f\x1c&}\x96 \x15\xbav\x10\x07a\x05)\xf3\xa0\xa4\x93w\x0c;&\xcc,`0\x10\x9e~\x01\xdfl\x85tD\xda\x85\x03c\xa5\x89s\xe9\xd5\xe8>vR\xc5bV\xe1\x06K\xac\xac\xa5\x8c\xa1\xcb\xca\x80\x18\xc1\x16\x9eR\x992\x8b-\xcb4>A\xda<+<\x8ea\x99\xe1\x86\xc9p\xd3*)\x10\x93E\x15\x15\x93\xb6\xcd\xe9$\xa6\x9b1\xf8\xb1\x85\x11\xa4_\xa6\xa7\xca\x9c\xe09\x96!\xda\xa4\xc2\xbcf!F\x11\xb4\xdd\xe5\xaf\xf45\xbe\x9e\xb2N\xda\xf4x\xff^K\xe4\xd6\xd3)\xb4\xd1Zm\xab\xf8\xec\xeb\xe3\xb1\xbc7|\x96\xaa\xb5z\x10B\xd6yZrxmo\x17\xf0HC\xf9\xae\x93\xd8+\xfa\x1d\xba\"\xe0\xf9u\xe5V\x13\x10T\x13tM\xa1\xe4\xaa1 \x96\xd2\xe2\x11\x0c\xb0g\x91\xa8\xa3\x13\xc9'\xcfU\x92\\\xf4\xc6\xd05\x95\x9b(\x08\xeaXk;0\x7f\xf2=0\xddd\xfb\x86x`;\x19K|\xf6\x08 \x1c.\xef\xe72\xc8\xc2E\xa7\xba\x11\xdd\xc1i\xa7\x9d\xa4J\xa4\xe4\xc6\xd3\xb2\xc9u\xa7aE\xb5\x8a\x16\xdb]\xb8\xd9\xee0\x02C\xa0\xe5\xcd\xf0\xdc7\xb0,Y\xee\xb3.\x9b0\xf7_~\xdel@\xb0p\x93\xe3\"\x19\x12\xb5\xabk\x92uP\xa4De\x1d\\JZ\x11\xd6Y\x7f\xa4\x0cY\x832d\x918\xc2\xb2.\xba\xd0-7L+\xabG\x07\x8f\xcf1\x04+\xf9\x8d\xf1/\xde\x81\xe0\xf2\x8a\x1a\xde\x8ee<\x93\x83\xbd\x87\x8bY\x92\x12\xb0:\xe5\x81\xae\x0e@\xdb\x95>\xf3\x04\xfb\xd8\x88\xe6\xf9 ?\xde\x88\xe1\xe3\x8b-\x01\x0e\xfcE:e\xa9s$\x07P\xce\x86\x04E\x07\xed9WUC\xac[\x99_\x85\x89\xb2e\x1d\n\x04\xd0\xb8\xe7-\xf4\xbcJ\xe1!\x16\xac\xb9\x05q\x80U\xfb\x90(\xa7\x18\xa8\x0d\x07*M7R\x04*\xcb\x01$()\x86\xa5$\xb1\xb5\x8b\xc59\xedxeW\x95\xf3\x85\xe5_\xb7K(\xfd\x15\xa6\x8c\xdc.\xae\x81\\\xc5aG\xa1\xf3\x1b\xa3R\x92\xadJ\xbc\x94\x14\xc4\xcbd\x02\xea\xdc\x92\xa9\xe672\xcf\xa6\xbe\xf4\x06d/\xb9\xa4\x00\xa5\xfb\xf5po\xc4%T\xd4\x10\x06K\x15O\x81\xd8\xc5\x8f\xd18H\xab#\x93\x96\x84#\x8f\xc4\xf9\x99v\x93E~-\x85sn\"K\xa3\xa5\xad\xe5u\xb6\xa0\\\xb4\x90\xac\xa3g\x97\x1di\xbb(`\xd7\xaa\xdd C\xbb\x01E\xf533\xfd\xec\xa4\xa8\xc2#\x13]@M\xf2\x8b\"\xb8Kk\xda\xe8\xccN-\xc5\x9eT\xda\x8d\x9a\x83 \xeb(\xe2$\xe1>\xccq\xe4\x99(\xbdx\x08\xe2C\xe9^\xc6\xac\xee\x83e\x96i\xeb\x11\x91\xf4\x8b,g~\xd2\xacb\xa2\x022\xbc3\x8a\x80\x0e\xef\x8c\x10\xcb\xc9p\x7f\x04;@\x87\xfb\x86\x0c\xc1aU\x90\xbc\x91\x95\xc1j\xb1I\x86l\xa4v\xd2\x00\xf6\xdbm6+\xf4\xb9\x1a\xe2\xa0\x1f\xee\x99\x06&8\xd7_e\x8d\x0f\xe1\xd6\xfdR\xfc\xfa!h(\x04m8\xf5\xc2\x89S\xc2\xdfE\xc3+\x0f\xbb\xd1\x17\xe2 \x1fJ\x89\x1bV\xbc\xc8\xc9d9\xde@\x87![\xff\x15=+\x05;G\xd1\x87S(*,\xf9\xf2\xdd\xb6\x0c\xd4\x8a\xe5&\xdfWG@\xca&\x03\xaf\x0f:\x12\x89\xf9\xcc\xc3\xf5\xf4|\xff\xd5\x8b'\x13\xf5s\xec[N%\x8f\xbfu\x0b\xa8\xa6\xbf\xad\x85M\xae\xd7U4\x82\xf8\x05[\x03\xde\xedz-b[\xbd\xc6\xfb\xb2\x8a\xbf\xf8\x02\xa1Y\xea:\xf91OH\x90\xfbz8\x97k\xd6\xf2\xb3\x04\x81\x84\xf3\x84\x06u\xcb\x14\x0c\xfc\xf6u3\x0b\x9f\xf0\xf3\xac\xce\xc4\xdfE\xbcv&Bx\xb6T\xfd\x0bM\xa2\x81Z\xfa=i\xa9\x10\xe4\x95\xd9\x92\xf0\x81\x06\x94\xf6|\xba\x05Y\xe2\xc1\xb9\xe5\x9e\xc0U\x97\x022_\x1f~2\xc1O\x01\x86\xb0W>\x97\x1c\xdf\x1d\x07\xfe\xf5\xf5m\x1e\xec\xff\x06\x9c!\xaef\xa7\x00\x86\xba \\\xce\xe4\x9a\x80\x92X\xe0\x02\x88H@\xd2/\xb29\xb9N\x07\x1c\xbd\x1c\xcd\xcb\xfaR\xffFFJ\xe5\xc7\x8c\x11\xbb\xa5\xb3\xaf,Gq](\xe2\x00]\xb3\xbcy\x81\xf8\x87\xce\\\x08\xc2\xc4\"jr\x90\xfe8\xa3\x05\xcb\x97c\xd4,\xfb\xd1\xf7\xaf,\x8e\xdeI\x99\xcdFD a\x89\x116\xcb\xb3\x0bD\xf1\x0f\xab\x059\xca\xf3,\x0fzG\x97\x0b2fd\x02\xc3\x97\x11\xfc4\x02\xb6\\\xa4\xe4\x00z\xb0\xdd\xcaHk\x19\xc3?\xdd\xd1U\xaf\x88\x8cG\x08#x\xea\x1b`\xf5\x8b\xbb\xcd\xa5\x00[^\xb1A\x19\x17x\xbd\x9a\xfe\x87\xbb\xe9z\xc4V {\xfaUc\xb88\xb7\x15j\x81\\^\xbd\x12\x8f\xea\x1c\x9c\x14\xd7\\zT\xee\xf6\xd6\x13\xb41\xce\x9aY\xdd\xf1-\xe9\xa4/\xf3\xac\xbf\xd0\xb3\xcbW\xdf\x0bm\x13k\xa7.\xb5\x8c\x9eu\xe6\xba'\xf0Hf\xa3<\x10\xc5>\xe0\x10v\xf8\x0f\xbfs\x9fZ\xb6\xf2\xb9\xf4E\xfb\xc9x\xe0\xa3\x14m\xe7\xa5\xf9\xd3\x9f=0\x1f\x8f\xc0\xd3\x94@\x96\x03\x06E\xef\xa4\xc9\xa7r\x0f\x98I\xbc\x18\x14\x1f\xb5\x81@X\x97\xd9\x0b\x16yG\xe2d\xc1A\x94$\xd0\x99SLX\xb0\x13Z\xb0\x98\x8eI6\xd5*\x9e;\x9c\"\x10r\x88\x1e\xf5Ok\xc9>\xf3\xc0\xa6z.\x9bpr\xe8\xfc\xa2\xa8\x96\xea\xd6\xb2\xc6U(\xe5'\xb2*\xac~\x89\xea\xda\xf2\xe3\xca\xf4\x8b\xe5+\x8f\xb7\xf8\xc5\x8c\x11\xae^\x9d\xa8K\xceeB\xa6 %\xef\xf2lAr\xb6\x92\x9c\xaf\x7f+\xfc:#L\x13-7\x19\x83\xbat\x12$\xc2&7j\xe2\xaa\xdb F\xbf\x8a\xdax;\x8fo\xd3uF\x1a\x89\x98#\xe8=\x8d)\xcd\x18o\x1d2\n1\x85\xa4L\xcf\x9b\x93q\x96O\xfa\xbd\x92d\x8ah;\x07\x8bi\xba\xba3\xb7\xa9\xcb\x12\x8d\xd0\xbc\xae\xfa\xa7 \x9d\x04U\xd4]\xf7gW0\x8e\xd9x\x06\x086\xf7\x80\xae\x02\xe5\x9a\xae\x8e\x88X\xea'\x90\xeb\xa7\xf1\x9c\x94\xa1\xc3\x9fD(^\x8c?&d\x1a/S\xf6\x13\xe7\x960\xe7\x8c\xb5\x1b\xfb\x00\xc4\xea\x88\x80\xc3\x8f\xa4\xa9\x98P\x97\x05q2\x94)\xcaS\xab\x15C\x9d\x99t]\xa5\xe4\xa7\xb1P\"\xda\xb1\xa9h\xd3\x7f\xb1\xe0\x1d\x8b\xe0#gL\xde\xdd\\\x95\xaew7Y\xa5\xebm>!9\x99\xbc\x8e\x17\xf0g/\x82\xdeU\xbbV\xd7\xbbk\xd4\xea:\xd7k\x04\xf0\x95\x125\xfc\xed\x90\xadyh\xc9b:\x18F\x8a\x1f\xd2PT\xa6m\xd5\xd0z\xf7o\xaenS\x96\x9d\xe1S\x92I\x95\"}\xb4\xb5{\xa1\xcc\x88\xe0\x1c\xf5f\x95\xbf~g\xae\xdaG\xef\xae_\xfbHo\xb8]\x06\xb5\xd6p-\xf5\xb8\x0f\xb0+\x90U\x9f\x06\xa8\xb8\xd1 \xa7?rv\xbf\x91nDGD+\xf2i\xa30\xd8\xd2\xba\xdc\xe8E\xbe\xb9\x80\xa1\x0e\x90\xa1\x05\xd6\x12\xde\xe57/\xbf\x12\x17\xed\xa1O\xf3l~DY\xbe\x12\xbaRM\xf9\xd3\x8d+\x9b\x15J\x10\xc2\xdf\xa0U%\xc1#\xbf6\xab\x11\x85Z\xb7V3BEH\xe4\x12\xd5?\xb2.+\xdf\xd5\xaf\x99t\xe5$\xfe\xd5\x16\xd4\xd1\xc2\xf4\x9d-\xf2^\x18$\x1a\x84dRh\x84t\x00\x1fX\x1d\xbe\xc3\x99\xaanP\x83zY\xe7\xc0\xb0o#`\xc1\x1b\x16\xc1\xafa\x04o\xaeA\x81\xdb\x82\x1fR`\x13&\xd4\x9ao\xc4\x0dt\x96K\x13m\x8b\xa2i\xce\x86Q?rL>oD3\xb0q\xf5e\x9b.\xbc\xa9\xc3\xcd+T\xe8\\\xab\xc8l\xc67\x0e\xdf\xef\x159\xdc2%\x1b\xac\x8dQ%\x1b@\xa3\x86\xf74A\xd7\x1d\x89y*+\x87=8\xfc*l\x05\x896\x80 0\xb7\x13;t\xb2h\x06\x02\xa7\x02\x9fk\x87\xcd\x06`\xc8\xaf\x03\x06\xda\x00\xc3<^\x18\xf0\x15$\x18Z\x85_\xde|\xd9\x19\x119B\x94\xda(\xa99\xe0\xd6&\xaf\x99\xf3<\x1c\x97I\xc0l1KW\x9c@\xa9|\xcb\xff\x14\xeb\x10\x8a,=e\x0fV\xd5y\xd9|\x16\xc9|\xcd\x14\x0eD1 SWa'Q\xd8\xechB\x1b\x9f\x0e\x96\xd0\x01Au<\x99\x8f\x0bZ\xd7=\xb5\x0c\x1aV\xd4m\x82\xcd\xba\xa8\x9e\nye\x19\xa2N\xef\x8bRL@\x83\x8aP\x1a\xa2\xa2Y\xac\x02\x16\xc4G\xbf\xb0\xd2\xbcbZ\x0e\xd7RT' \x0b\xde\xb3\x08^\x86\x11\xbc\xd7\x97\xca\x14\x08\xe8I\xc4\xcbh\xc06%\x7f\xffe\x9b\xab\x93\xd2\xd8\xd7\xc7\xb8\xe9\xbcy3\xdca\x08r_\x96\xcc8S?\xbc\xff\"\x84\xbd\x11\x0ce\xbe\x18\xca\x14\x862\x85\xa1\xa2\xda\x96\xc2K\xaf\x9aa,x\xc6\"\xf8!\x8c\xe0\xd9\x97s\x10\x0e\xe4{v#\xc8\xf7Wb\x18\xf3\xc7/\xe3dn\x0c\xbf\xfe\xc3HT\xe1\xcf\x86\x88\xf4Jr\xba\xaft\xe8\x10)\xcct\xf1\x10\xedu\x94,D\xb3\x9fW\xff\x95\x88\x84\xc7\xa5\xed!\xbf\xbeb\x81\xb5\x88\x9e\xe6d\x11;\xdf*\xd1\x15K\xf4\xa30 \xaa\x12\xa3\xd8Z\xdd\xdc\x157-R,\xbf\xdaz9#\xa2\x1b\x81\xfd_\x83\xe8\x1e\x91\xa1~{\x01\xca\xf0\xca\x9a[\xb8\xa3\xa2\x86Z/\xd6\xe5e\x89\xde\x95\xae\x11\x82@\x0eS\x18\xa0~)\xde%\xee|S\x0e\x1e\xf7r\x06\x87\"\x91\x8b@\x89\x1cQ\xa2\xba\xb9'n\xee\xb5\xf3\xe5\xeb\x97\xc5e\xd1\x83&\xd4\xce\xe1z\x1a\x827\xf6G\xcf\xec\x8f^\xd9\x1fa\x8e\xaa \xa7\x11\x9c\x10.ZP\xed\xcd/T\xb0.\xa9\xe4A\xb7\xa1g\xd5\xb0\xd6:\xdc\xf8\xf8\xaci\xd4\xf9\xe7o/he\xf2qw\xe6\xa9L\x10v\xd0YY\x1d\xdd\x85\xe6\xf5\xcd[\x1b\xdc\x90\x18\xe2\x94ks\xe1\xe2\xeba\xf5\xb7\xd2Y\x18b6\x9b3\xf1R\xfeV\x92\x89Qe%\xfa\xbfuK\x1b@M\x9fk\x9eli\x1f\xd7l\x03v\x9dT\xff\x84\xcc\x17l\x85br\xf9c\x001\x95\xa2\xf6/\xa4\x9d\xf2\xb41UO\x8dq{\xd1*+\xb5\xb0P\xffM\xb3j-\xe9'\x9a]P\xf8DV\xd0\xfb\x1bl\x03\x81m\xf8[\x0f2\n\xfc\x97\xc2c\x8b\x91\xbc\x06\xbd\xad\n|\xb2\x98~Y\x8b\xc3\x8c\x14\x1ez\xc3\x9a1\xa1\xbeD\x85\xd2ku\xe0V\xad,\x846\x9a\n\xe7\xe0\xa0Z\x87v\x1d\xe6\xda\x1ax*\xd7\xed\x1b\xc7OCZ\x9f\xa9\xccS\xea\xca\xac\xd8\x9a)\xeb\x9ci\xfb\xe8\xae\xcd\xf4\x86\xb4\xfd\xce>\xae\xcf\x1eX!\x91\x07\x06\\k:jZ:\x00])e1Y_uk\xd8\x8dS\xbc9v\xf3\xdf8C\xe25\xc1\xff\x84 \xa1\xbeA62\x0dT\x1b@\x06\x0d\xf8\x1a\x04\x1ap\xa8w\x82\xcc\x16z\xd7j\xc0\xb1\x15\xa8\x8c\xc5\nuxO\xd7\xed\xd3\xf2\xd7\x19a\xefT\xf3o\xa7\x9c\xb4\xd8\x11E\x1b\x7f\xde\xcc\xe4\xed\x17(\xb2\xec(\x99--\xfe\xebu\xdd\xcb\xb0\xaf\xee\xf6\xde\xa3\x93D\xcf\xab\xb3\xc2\xdd\x993'\xfd9E\xff\xde\x94\xcacgk\x1c\x94\xc9\xe9\xf9\xb3k'\xa7O\xae\x9d\x9c\xde\xc5\xc1\x97\x92t<\x99\xd8\x8b\x11\x18\xb6\xa6\x17 S7 \xb7\x82-\x04\xe1\x16\x19N\x9b9\xa4\xeb,zF+[UFK\x0bUy\x1b\xeb`\x97\x0f\xda\xe5\xb73*Jdk\xd5\xb2\xab\x9b?'\x18\xd4\xa2\x1e\xf0\x9f\xd5\xc3V\xf9m\xf5\xe0\x19!\x8bF\xf1\xed\xfa\xc3F\xb3\xeaV\xfd%c\x01\xef\x8c\x1aJ\x8dg\xd4XA\xbc\xbc\xdd\xae \x9eQ\x8f:\xe0\x19\xed\xdb\xeb\x80\xe3CW\x1dp\x16\x144\x82#\x8ey\x05\xbd1\x07\x93\x82\xa2-Yf\xd0\xf6\x96D\x02Nq\xfb\x9f\x88\xb0?\x9bZ\xbd1\xa9\xaawL\x98U\x9a*\xbeH\x9a\xaa\xb8Vg\xbb\xf1d\xe2\xdb\xee\xa4\xc0\x9aq\xac\xac\xbcC\xb7\xb7CH\x026\xa4\xa3\xb0}\xec85\x8a\xe5\xb1\xcd\x8f\x1d\x8b\xfa\xc6x\xec(\x07\xa9Z$\xc1p\xb7yx4\x96>\xa1\x8c\xe4\x05\x19\xb3\x9b]\xfe*\xa3\x12\xf3\xab\xbd.0\xc4/\xbeC6\x94\x98NeS\x18\x9f\x17\xcb~-,0\xf0\x14N\xbfg\xd6'\xe7$_y\xb4\xac\xae\x12\x1dJ#\x8cE\xf5\x0b\x02 \x90\xcd\x93\xa4\xc5\xa6$\xeefZ\x1aHR,OY\x1e\xff\x7f8\xf2o\xc2\x91\xeb\xc6ry\xa2\x08&\xb2\xbai\x14Q<\xa4\xcf1\x85`\xc43G\xab\xe5\x10\x81\x93\xebi\xf4$9H7I=/K\xaf6\xd1q\xafCM\xd3\x1e\\[\xe7T\xdf!Y\xce|y\x819\x0d~.\xbdw:Nf\xde\xee\x93\x95\x8f^\xc2\xd08\xebn\xff/\xd2 \x15\x7f\xadz\x85iZ\x85\xb61\xcf#3t\x90c\xcc\xb9\xafa\xd88\x1d?\x85Xk\xc4\x9b\xea\x80L\xf9\xb0;\xd5[\xc5\x7f^\xfb\xb3\x99\xc2G\xf65\x8f?\x91\xe0\x0bu>8\xfb\xa48FM|J\xdb*\xa01\x8d`\xcaq\xac\xf7\xf7\xbf\x9f\x9c<\x7f\xfd\xfa\xe3\x87\xc7O^\x1d\x9d\x1c\x1f}89\xf9\xfb\xdf{mG\x90\x05\x7f\xbb\xf0P\x1aM:\x11\x81X\xaa5\xb1f\xb5&\x05\x05U([j\x88\xb1\x1c\x9c<4\xa5w<\xae\xf0|\xc1V\"|\xba\x04\xa3\x9f\"b\xd6\xbd\x17\xebJ\xae\x85#\x08\xa3\xcaf\xdf(_G\xd5\xb4\x88\xc8\xea]\xad)\xf3M\xc2}\xee\xa4Kc\xcc;\x10\x8c\xf9xg40\x99j,\xed\xce\xbf@\xa5u!TZg\xb4\xd2d]\xfc\xbfM\x93u\xe6\x86_\xa9\xee3\x14X\xd4\x7f-\xe8pJ\x95\x03\xddBSj-*\xa5\xd6\xa2\xae`R?\xeb\x0f$k\xb0\xa0\xba\xcej\xe1\xa3\xf0Y\xb8\x14>\x8b.\x85\xcf\x82\xaa}\x08\x038\xa7\xf2\x06\xdf\x8a\x88\x92\x11\xb0`N9q\n#\x98\xdf\x9cFh\xfe\x97h\x84\xe67\xa9\x11\x92\xfe\xf7.\xc5\xd0\x9cV~\xfa\x82r\x9f\x19(\xf7\x8aFp\xca\xf7\xc9\xdc\x83\x16\x9flJ\xd8N\xffC\x84\xed\xc2 \xcd\x95 l+>\xde\x13\x1a<\xf7/\xbby\xf4\x05\x84\xed\xad l\x97\x1aa\xe3\xb7\xfaKZ\xcc\x92){\x9c\xa6\xbe\xd1\xfc\x97\xde\x8a\xee\xa7nE\xf7)\xad\x1clO\xf5\xbdvA\xe5\x0d\xb9\xd7Np\xaf\x1d\xd1\x08.8\xb5<\xba\xb9\xbdvt\x93\xbb\xe2\x98\xc5\xe3O0\xe4\x1bb\xd4\xde\x10G\xd7p\x05\xa9\x1b\xe3g$6\x14\xaaG\xbd\x15\xd1\x92r\x93\xf0\x81H\xbcNvv\x1e\x84\xf8\xbd\xf0\xaa\xb2\xef\x058\x04\x99\x84\xc6\x14\xf7W\x1b\xf9\x82\x90O\x1b\x01\x88\x8f\xba2\x1c\xf2_\x86\xec\x1d\xad^\x96\xc5\xac\xab\x97J\xdbP\xae\xaf\x9f\xd6\xa1\xd4\xf4\x95\xce$\xb8\xfb\xb7[\xedD\x1a\x03\xcc\x07\x1e!0\x9bo\xc1\x0e\xecq\x88?\x12j\xc3\x9d\x9d\x10?\xb3\xf1\x05\x98Y\xa5lcH-\xb9\x0f\xf9\x825\xd7\x82_\x86D\xcbu|\xb4\x04S\x96\x9c6\xae\x87\x16o\xd5\xac\x18*\xef\xd6\xcb\x9f3\xe9\xda\xff\x98\x9a\xc5\x93\xd6\xe2=\xe6\xa4\xc8C0\x91\xead\xb4u\x05$\x0c\x05G\xe4^\xbf*\x07I\x87\xd4\x82\x0c\xb8\x19\xba\x1d\x9b\xaa\xe4\xed\xcb\xf0\xa0\x0d84&\xb2\xe4\xd9P\x00*4pT\xa7\x10\xeb\xdfN\x9d\x0f-2\x8aw\xca\xc0X\xdb\xfa\xb3\xc6\xfa\xd3\xeb\xae\x7f\xdb\xfd\xba\xb5\xfeYge*\x1de\x8b4\x19\x93`\xcf\xdd\xa6<\xa66i\x97\xa3\xa1\xa7:\xca\xd4\x95\x0f\x067\xbb3\x9d\xa2\x8d\xd67\x9fF\xb6\xb8\xce,6\xb12}i|\xb6D\xa9\x06\x06m\x82W\x9c\x15q\x83\x8d#\x89\xcf\x91\xc9\x89\xca[\xe9\xe8Q\x0e\xd6\xc7\x15\x8cbq\x11\xa2\x7fe\xd6p\x7f\x08jM\xd7-TeG\x17\xa49\xfa*M\x8f5\xc6\xaf<\x99\xf2\xda\xc9\x84e\xce\xb2:\xc9\xe2\x07\xcd\x83\x10\xeff\xee\xd3\xdd\xbd\x88yc\x11\xb3k\xad\xdfcj\xaa0\xddX\xc3\xcd\xd4V\xa5.\xa9\xad\xb9\xaa\x10\x94\xe3\xeacZMH\x9f\xcc\x86a\xc8\xfa\xcc\xf6,z\xa8\xa3kkAe\xdc\x81\xbe$\xd5\xd1\xa2y~\xb9\x90\x82\x8a=\x977\x10!\xaf%\x13\xccU0\x08\xd5\x92 \xe27y\x07\x13\xe85Y?\x1d\xa9\xd7l3\xb3\x0e\xb1\x9a\xa9\xf1\xec\xcb\xfdNn\xcf\xc8\x84N\xaf\x7f\xc5O\xe4]\xf1\x03\xb2\xdf\n\xd0\x91\xf0\xec\x17\xcb`Q\xd1\x98g(Z\xead\x1e\xba\xb2\xf393\xf3\xf9D\x05\x1c\xa1\xd6\x15\x85\x9a\x01\\\x1a\xa4\xf7c\x1a\xc1S\x93\xde\xf5\xc3\xe3\xa7/-\x9a\xd7O\xfc\xfd#\x0fi\xffq\xe9\xae\xd7\x91?\xb4.\xf3\x7frf\x94\xa9\x98\xe1L\xe7\x84\xb3\xa6\xa3^V\xd1\xbf\\\xfc\xaaS\x07\xbf\x94\x81o\x9d\xa7\xee\xb1\xd0\x03\x1cs\x80<\xa6A\xcb=\xc5\xd2\xe8\xbbnq\xb1D{\xabYR;\x9c\x86\xa8\xa3cCjH\x84k\x85\xa4\x9e\xbe\x8bU\xbc1\x0d#\xa8\\&\xb5\xd0\x88\xe3\xd5\xfc4K\xb1B\x82\xeby\xb3\xadf}|\xfd\xd7':|Z\xaa\x17?\xf9h\x03?\xb9\xb4\x81\x9f\xba\xb4\x81\xbc\x0b\xdd\xb6\xf6D\xb7\xb5E@\xfb\xcf+\x02\xf91\xe2\xcbDM\xe9\xbfdJl\x8f4_\xafH\xe0bE@.8\x91\xb9qE\xa6\xed\xeah_\xaf\x8d6zh0\x06U\xbe\x07\x8b\xe9\xcdi\xdaV\xd8c\xa61\xad\x15\xc4\xbbm\x9a\xc0\xb2\xe7tB.\xc9\xe4\x98|\xf6\x00\x8cF\xe2\xdf\xcb\xa8s\xbf^^\x1c\xfb\xb7\x8e\xc01\xa6\xc2\xf6\xd1\xccc\x82\xdf\x9e\xfa\xa4\x07\x9c\x85Y-H6\xc5\xfc\xda/\x8eQ\xe7\xc8\xff\x10\x16\x1e\x0b\xf8P\xbb\xc4\xdf\xf1\x9d\xde\xdb7\xff-\x13|\xfb\xa6\x9c\xe2\xdb779\xc9\x97du\x0dAC\xf8\x13\xd8\xfa\xa4\x93F\x8f\x1eU\xa3\x10\x98\xfcS\xcc\x89\x1aX\xcc\x1b\xa0\xebI\x0f1\xa1\x89\xb9<\xb8aXB+\xb4\x19,j\xc8\x125W\x9c\xa1\x84\x8ay\xbbYh.Sc\x18\x08\xe7@|6o\xa3oRZR\x04=\x84C\xe8aE\x028\x80^\xd4\xb3c2\x83\x01\xf4\x0czTu} \xa6\xbbp\x9c\xcaR\xfd[{\xe8\xb2\xba-,%\xfc_t3\xdaR%\xa4\xb4I\xe1\x9a\x96^4x\xe6\xf4\xda\x9c%\xc8\x1d\xe0\xc5\xb7}\"\xab/ ?\xcf\xbdVt^\x93C=\xd0\xaa\xdcb\xf5\x94\x9d^\x9d\x89\xb3t\xc3\x0d\x16A\xe6\\\xe0\x06\xae\xb5\x1cT\x1e\xc2>\xe6G\xe4\x98\x02\x07b\xc3\xb6\xb6\x83\xae\x06\xc0\x9a\xb5\x0e\xe4\xc8\xe0\x10\x82LR9l.\x94\xed\x92\xb2\xf4\xad\xa8\x18\x988\x0b2\xe7\xfe {\x9f\x9c\xcd\xd8\x86pS\x84Ig\x84*C\x94\x9b>I\xaeG\x9a\xdes\xab\xdd\x1dl\x83\xc6^\xfcq\xb7D*=\x19\xaeWWh\\\xbe&\x06?\xb9\xde!\xc1\xb9\x91\xcdz\x14yYD\xac\xdc\x1b\x8a\xa5\xc2LY0L]\xe5^5&\x9a3\xb3\x06\xe4\x80\xb9\x1f\x94\xba\xbf\x80\xd6\xfc\xee\xd5\xcb\xe9\x92\xbd\x8a7Q\x0f\x88}\x8d\x1e2\xbb\x11\xec\xecy\xf5\x92\x14G\xf3\x05\xf3\xb11\xc8^4\"\xae\xcb\xe9M\xc9\xfd@.c\x9d\x19\xf5\xe0EmFH\xaf\xd9\x8c\xb3%m\xee\xfc\x8e\xf9<\x0dH\xa5J\x12\xdb^\n\xb0\xe2\xe3\x0d\xf4*\xd8\xfb\x13_\xf6T\xf6\xefK\xa5@\xa3T\x1fI\x10V\x06)W\x06<%\xe5\x98\x88w\x17\xeb\x8a\xdf\xcb\xbc AU\xa7\\T\x12\xe7\xbbR\xcfy\xec%\xb5i2\x97\x99\xddU\x97\xa3\x94\n\x9e\x05\xba\xb9\xcdR!\xefJ?o}V\x8f|^\xc6\xe9&\xc2\xd69)\xc9\x86W\xfb2k\xa6\xc7V\xd3\x1dN\xcdk\x8b\x81Z\xfd\x13L\x97W+\xceDHu\xdf\xcd)\xd6\xab\xb7\xfeN\xc3\x86\xaa\xd5\xcd'\xd6\xaa\x1at\xf9\x8e5>&\xc6<\xa0\xea\xba\xf2\xe4\xf7\xc4.}\x93m\xb8\xdf\xa5\xf8\x81;|\xa3\xd3\xa5\x14Y6\xe7,,\xd5\";xn\xea']V\xc2%m\n\x97\xbc\xefa\x16\x01\x1d9\x05L/\xd6\x8aO\xff%\xf1%n5o\xf4M\x84=T\x8dQc\xa9]\xf3\x98\x1agd\xc7\x8a\xe8 7\xb3z8\xda\xb2\x99MF\xb1!rx\x0e\xa5\x02\xdc\xa6\xe3\xf1_-\xcf\xa1\xbc$r\x05\xfdF\x91o\xcc\xbc \xe8\x1f\xfb5\x9f\xc6\xec\xf5\xb5\xa51\xdf5\x02m\x13\xffb\xae\x93\xa4\xae&m\xabk\xea\xbb6\xb2\xd6Bn8k]\xc7\xa1\xae\x895o\xf1\x8d%O\xd9\xe2\x06ga \xd9\x1f5)\xc1WD\xd0\x8f\x12\x7f\x8c\xe1\xa7\xdd\xab\x0d\xcc\x90\xf5\x82y\x1e\xd8R\xa1\xa4.\xef\xfa\x14\x1f\x9fa]m\x9b>5\xaa\xfcd}\x07\xfe\x9cz\x0e\xddTnZ\xf8\x03c\xa1MUa:\xabU\x98\xee\xcc\xb6\x9c`\\\x90GV\xe4\x00}\x1a\xb1Z:\xc6-\xa9\xa4\xc4I\x04+\xceJ\xafB\x14\x13V\x95\xbf\xa7\x19D\xaee\xf1:\xad\xce\xf2l\xb9\xf8w\xb0\xe2~6\xbc@f\xbb{\xc7P\xd5\xc5\xf9wO\x06\xde\xc8\xb9w\xe9\\\xf8\x95\xb59w\xfe\x99\xe0\xdc\xbb\xf7\xb5~I\xf0\x04\"\x04r\xbd\x86\xe1(\xc4\x18\x06\xccY>\x8c#HFp\x00\x89\x87q\xd0A\xc7\xec0P(\xe8G\x81\xb3:\xe5\xed4?U\x14\x8cD\x90\x04&\x12\xa9.\xcb\xf87\x165f\xf1&r\x06\xd2!\x99py%b\x08V\x9e\xbd<\xdf\x84\x86\xab~\x9e\xd3M{J\x8a\xe3\xe5\xa9g\x81\xcfR\x06\x1c\xd8|\xc2\xcaJ)\xc2\xea,y\xf4J'\xe4\xb7\xb4\xe5y\\&\xc6\xd9 \x9f\x96y\x8a\x0b\xce\x0bm2\xc9\xc05K 3m\x96ay\xd3\xffT\xfbDVo\xa7\x1b\x0c\xa9<\xd483\xb7\x11$o\xc0H(\"\xce\xfd\x8f\xf8\x9aV\x86\xef\xea\xe7-)\xd5\xa7\xdbts5Z\xab\xe4W\x1f\xf9Y\xff\xfe^^g],\xbc7\xae\xb11\x97U\xbb\xefy|\xb9A\xaf/\xd8F*\x8cy|\xb9\xe9\x99\xfa\xa2\x96\x8f\xc8\xab\x13?\xa3Yk\x06p\x08\xef\xa9pa\xf9\xe8'(\xcd\x13z\xfd\xe9\x88\xee\x98\xe8\xcewn9\xd9\x18\x13\x8d!\x8f`n\xbe\xf8\x94,6\x80\x9d\xd6\xfe\xeb\x98\xcd\xfa\xf3\xf82\xb0T$\xb6t\xd6\x14\xbe}\xa5\x04\xcb\x1e\xe3M\x06D\xbb\xe3=\x90\x9fgI\xba\xa1\x99\xa1\x1c\xccO\xd74l|J\x16\x1f)K\xd2\xcd\xba\x15@WC\xdeL\x05%\x12\x82m\xd6_\xdb\xcaa\xc8\x0c\x06\xe6\xfeX\xfc\x89l\xb0\xbc\xacf\x80\xb8\x06J\xf1\xfen\x18\xa5x\x93\x9b\xa3\x14\xff\xeaKP\xea:\x92\xc4?\xbc\xb8[\xad\x84\xd1G\x8aj\xdeZ\xf26\x8c\xac\xec`x\x15;\xcd\xac\xdaeuq\x91.\xab\xc7\xe6i\x05Zja \xd8\xb1\xbb\xb5sY\xcf\xbf\xa3\xec\x7f\xc9\xb8\x19\x04\x1f\x82*\x91e\xd7\x0c\xb5f*\xe9\xa7\xfc\xf6\xd6-\xd8\xde\x8eQH\x95\x0dZ\n\x95\xab\xeb*\x8c \xb6\xbeq\x15\x81^\x06\xe9\xbfhU\xb2|\x93e!5o,\xfe\x9d[\xae\xe5\xd7\xd2\xe1Q\xa2.9N\xcf(K\xfdB\xdf\xa9e9\xd3\xee\x0f\xc0?\xe2Q\xbf\x9c\xd1\x8f\xfae\x89\x95\xd0/e\xba\x89;\x8bS\xa9K\xe8\xf0kE\xaa<\x1c\x1aUD\xa3\xac\xdf\xeb7\xd1B:\xab\xfa\xbd\x9d\xe2\xdb{\x1d\xae\xad`\xdaki\x04\x05j<\x0f9i\x1b\x0c\xe0\x8d\x14s>s\x8c,\xf0\x05\x91\xe6o)=C\xfe\x0b\x16\xb7\x8b\x088)\x80\xf1\xe1\xe6\x9aW~\xf0\\\x97\xa9(\x0f\xad\xcd\x98\n\x15C\xb0!_\xba\xb9\x186\x8b\x8b\xd9\xd3l\xb2\x81\xa3\x0b\x9bU\xd9\x05\xb0\x8a\xf3L\xcf6\xd0\xcd#@\xb9\xbd\x84\x83\xf2`\x00{p\x1bv\xcb\x8d\xe6 ]\xcaL:\xeeT\xf0\xf9\xb9\xf2\xa36\x16\x0ea\xcf\\\xf5\xb6|M\x0c\xcck\xf1\x1b\xdf\xf0\xd1^\xa2\x90~\xe7\xee\x9d\xfd\xef\xf6\xbe\xbds\xefN\x18\x95\xb7\xe1\xe1C\xd8\xbb\x07k`\xf0\xe8\xd1#\xd8\xd9\xbb\x17\xc1\xdd\xfb{\xdf\xde\xbd\xf7\xdd\xee7\xcd\xf7\xeeh\xef\xdd\x89\xe0^\xf5\x1c\xd3\xb9\x07\x0c\xb6\xe1\xce\xb7\xf7\xef\xee\x7f\xb7\xbf\xf7\xdd}Xs\x98\xfe\x8bo\xe9\x7f\xc9\xcf\xf6\xeeG\xb0\xbf\x7f\xf7\xfe\xb7\xfb\xfb\xf7\xca\xe6\x8f\xe5\xe7\xd8M\xf9\xe6\x9d\x08\xee\xec\xdf\xbf\x7f\xf7\xdb\xef\xbe\xdb\xfd.\xd4\x9bpl\xb9@\xe7\x0f(\xd6\xba<\xdc\x10j0\x80;{\xf05\xe4\xb0\x0d\x9fi\xf0\x94\xe0\xa6yJ\x02\x16\x86|F\xf6\xce\xc1sw\xaaKh\xc5\xaf\xd1K}R>\xdd\x943\xc2\x8e:;\xd8\xacq\xcfvCc9k( \xa2\x89\x14\xd6\xee4\x95\xc1|/~\x10\xc9\xc9\xb4\\\x00\xfa\x1b\x1f\xe8p\xaa\x02\xbc?\xd0\xe1+\xfe\xf7\x07i\xb2(\xf8-\x19:*n\xcb\xc0\xea\xf2\xbe\x1e8\x04\x03xF\xf1IB\x8b\x85\xc8\x8d\x8f\x9f\x1cg\xcb\xbc\x9eW\xc6\x04\xb2\x86\x12I\xba\xb7\xd6g\x87\xad\x8fgqBE\xdb\xd2\x96)ng\x94\xc5 F\xa5\xe3\x10\x84\xee\x12c\xc4s\xd3)9M\x93\x0dB#K\x01\xe5#\xb3\xae\x84I\xed\xb38j\xb9\xf7\xfbZ\xff\xedT1\xb7\xcb\x02N\xe1n#\xc3j)M('\x89a\x12A6\xb2\x17\x9f\x06\x10FU\xcd&\xe9)4\xce\xe3\xc5\xcb\xba\x0f\xb2/\x8c\xae\x01\x04\xbe\xeeMXt\x89\x19-X\x88h\x04\x07\x10\xb0\x93\xeb\xec\xd6\xd7\x14\x93\x9btf\xeexn\x07\x92\xdaI\xf5\xbe,\xed\xfc\xde\xd9\xce\x90E@F^\x8d\xbd\xb1\x90\xc3\xe6\xd9\xdc\xb1\xd9\xb6\x88O2.h\xc3\xd32\xac\xf773\xac\x9d\x1b\x1e\xd63\xf7\xb0z\x05\xd2\xc0\x9a\xf1\x03\x0e\xe1\xc5\xf1\xdb7}\xf1(\x99\xae\x84\xdaVRK\xcf\xdc\xa2\xaf\x9c\x04\xf8\xd8\x9a\xc9\xd3\xd2\xdc\xc7N\x0c\"\xf0\xb0\xe4\xe0\x08<\xc2\xbfw\x90\x9d\xf3\xea\xe0\xb3G\x07\x9c\xf5\xd9\x86\xfd\xfb\xf7\xee\xde\xbds\xef\x9b\xfb\xdf\xc16\x04\x843d\xf7C\xf1\xe7\xa3G\xb0\xdf>}\xeb\x0b%[{M\x87\x0bu$\xbe\xae\x8eD\x19\xa8\xc5\xef5\xceD\x91^\xa0|\xd08\x14;\x89\x9a\xec\xb6\xb1\xb0\x0c\xa3o\x0f0\xfc\x161\xa5>p<\xd82s\xf2\x93/M\xdf\xe0\xa73\xbf\xd1\xc0\xa9=\xbf\x93b\x9a\xd0 JO\x9e\xdd~\x817\xdd!:\xd3\xc1\x01\xec\xb4\xfd\xffLfN>*?\xc3\xd5\xb9\x9e>S\x99\xa8\x9c\xa3\xd1\xd2\x0c\x97{\xc7\xcb\xd53\x8d\x0b\xf6\xfc\x9a#+\x8dq\x7f\xd9\xe8n\"~\xc3\x13qn2~\xc3\xb7\xcb\xc5\x06}*Dm\x86\x15\xd9\x9d\x98\xf9:U\x96\x02.u\x8a\xa0Z\xb1\x10\x98\xf6j_\xfe\x89\x15\x8c;\xb23\xf2\x8b\xa8\xec\x8c\x9c`\xef*\xe7~t\xce\xafRDt\x04\x85VI\x15\x959\xa3\x03{J0\xef\xc9\xd1\x1eB\x0e\x07\x90\xab\xd0\xfdc=\x02x_94\x88\xd61\xc7\x81gP\xb0r\xee\xfc\"\xf2Qz\xab\xfe\x15$\xe4:\x8e\x9f\xa2\x9a\xbdW\xeb7\xe4\x9a\xe8\x89\xfd\x1b;\x0d6\xd2k\x87\x88\x82\xaa\x14]]\x0b\xa5e^\xafG\xd3\xdc\xba%\xf8\x8b\x99\x96dU\xe1\xed\xb5\xfc\x11EUmKV\xa5M\xdd\x117s^j\xc1\xe3\xd1\x00v1\x07\x85%\x90\xc8\x02(d\xbefUt\xd1\xce^\xf5\xa5<\xb4Z\xd5\x14\xc1v\xc61\x92/\xb2b\x13\xd3\xe6\xf5\x93|\xf8\x99\xf5\xaa\x12\x03%\n\xec\xc3\xd7\xea\xd7\x0e\xec\x89\x02\x03\x0e\xcb\x9f-\xf5\xa1~)\xa3\x01s\xca\xe5\xeaJ\xbe\xd8V\xd79 \xad\x8d`+\xc1R\x00b]Eh)\x17\xd1\xb30\xd4\x92\x96b\xb3\xf2\xbe\xb3\xe5+\xde{\xe4\xca\xa3\xa1C\xd4l\xb6\xf3\x06i\x84\xb0\xaa\x19\xd0~\xc7\xfe;'\xefo\x0f\xbd\x86\xfd\xac\x84l\xc6!\x1b\xc3\xff\xe5\xb2\x03\xdfz\x1c\x07\x92\x9a\x0b0\xc6\xfc\x1e\x88w\xe0\x10>\xf3\xb9\xc7\"\x1d)Zm\xd4\xcfL\xa5\x8c\xed\x02\xbf\xd3ZbIU^Q \xefm\x9c\x92\xf8\xdc\x87\xf3Rf\xb9!\xefbd8\x94C\xc7bq\x1e\xe5\xa5 \x00J\xff\x12\xc1\xcb~6EgZ\xebg\"?\x89\xe6\x9d\xef}\\\xc3\xbf\x8e\x1f\xf8\x9e\x11\xaa7\xed\xde\xe3y\xf2\xffq-\xbd\xeaK\xf5\xc7+\x1a\xb9\x90\xcd{\x0c?'l\xe6sN)\x99G\xef\xc5\x8do\x9c\xa7S\x01\x02\xed\xf1\xdbL\x96\xb5;W!\xa7\x08Uz\xd8\x89\xd27\xe87\xcb\xba-\xef\xd0q\xbd=\xfc\x8dy,\xc4 Q\x0bZ\x9a\x95\xbd\xe4\xb4\xeb\xe6\xd31T\x9d\x86\x9b\xd9l\xd8|\x95\xc3\xcd\x03\xda\x89\x96g[\x94\xd0\xaeY \xf4\xc7\x9a%A\xbf]3)\xfc\x1a\xe9J\xda\x10\xef\xbd\xac-\x9f\xb8\xf7C\xadiq\xef\x84\x18>\xbe \x86\xaf\x8fH\xf3\xf36TT~\xb9\x03\xa0m\xb8\"P_\xb4\xef?\xcd\xd2\x94 \xa4\x0f\xe0\xd4\xe0\x03\x81\x01b\x1f\x0d\x0f\xf4\xb4\x92\xefX\xfb\xb9\xc8\xcb\xb70<\x91\xa9\x02\x8f\x8c\xa3d\x07P\x18\x1e\xe8Y%\xe7\x86\xe7\xef\xc98\xcb'\x07\x90\x9b\x9e\xc5\xf4\x8c\x1c\xc0\xca0\x89\xf7dAb\xde\xa4\xe1YR\x1c\xc0\xccp\x7f\x9agsLmkK\x97|\x15\x01\xe9\x93\xcbE\x96\xb3\x02\x93\xc4 \xac\xbcr\xfb\xb4\xf5\x96\x05\x81\x82\xe5\xc9\x98i\xf9i\x94 ]\xdbn\x9a\x0f\x8d\xdeQ\xb3u\x15\xfb\x16G\xb0\x8c\xa0hn$L\xc6\x1e\xb00\x82-\xe3\x1e\xe6]\xa7m\xfa\xa7\xa5\x01C=OX&L;\xca\xf3,\x0fz\xaf\x13\x9aL\x132\x01r9&\x0b> \xc8\xc6\xe3e\x9e\x93\xc9\x03\xe0\x93d3\x024\xa3;s\xf5\xe2\x84\x9c\x03\xa1\xe7I\x9eQNu1\x02\x8b\xbf4]\xa6)\x10\xde*\xccIQ\xc4g\x04b:\x81x2Ix\xb3q\n3\x92.\xa6\xcb\x14.\xe2\x9c&\xf4\xac\xe8\xf7\x0c\x14\x9b\xa4\x05q\x90\xfc1\xe7i\x9a\xc0r\xf8\xf7L\xed\xfcfP\x07\x05\xeb\xe7d\x91\xc6c\x12\xdc\xfe\xbf\xc5\xed\xb3\xa8\x9b\xa8AE\xd8\xc6\xc3\xe9\xf6v;\x84\x17\x90\x8a\x85a\x9f\xc6s\x0c\x8dxN\xcf\xe3<\x89)\x83\x9f\x92,\xc5\xe4\xdb\x86\xfc\x92\xad;l\x96g\x17\x90\xf6\xa7y<'\xc5\x87\xec\x1dV\x91\xd9k\xa6b\xd3\xb0\xfa\xcb\x91\x98\x06w\xee\x86f\xdc\xcd\xaf\xdf\xba#K\xa2L~>!\xd3\x84\x12\x95\xfc\x9c\x8bE\xbd\x93\x13R\xbc\xce&\xcb\x94\xf4L\xa4T:I5\\\x9e0\x8f\x12\xe7\xbb\x9ef\xf3yF\x8f.\x19\xa1\x85\xcc\x7f\x8e\xf7\x1bwH1\x8e\x17XS\xf1UB?\xbd\x8b\xb1\xae\xa2J\x9d\xdf\xba]\xcc\xe24\xcd.\x8e>/\xe3TV#d\xfd\xd3e\x92N\xbe\xcf\xf2\xf9\xb3\x98\xc5\xe2\xb5,g$\x97OY&o\x92<\x89\xd3\xe4\x0frL\xe2|,\xda[\xc4y\xa1\xff>#\xec8\x9e/Rr<\x9e\x91\xb9\xf8\xee\xaf\x17\xc7o\xdf\x88\x9d\xd1\xe9\x01\xc6\xf2U\x07\xb3\x8c\xb6*D5\xab\x8eF\xe8\xa8o\xdd\x82^\x86\xbd\xf6D\x11\xb2\x86\xb1\xa0\xb7\xa4b\x9fNzp\x00\\\x82*\xf8\xc6\x8d\x97)\x0b\x03\x16\x86\x8ex\xd7+\x18\xc7l<\x03q8\xb6\x1e\xcb\xef\x1a\xd9\x1b\xae\xf8^\x16\x03J\xa6\xabNH\xc8F\x8e\x05\xc3|$\xf9f-\xa9<\x1c4\xfb\xc6\x1e\xe2<\x8fW\x1bt@d\xb3\xe8]\xa3\xff-\xeaI\n+\xefp\xd4\xeeH\xb0%\x92O\xd2z\x03b\x0eM\xe3\xabr\x84\x1eT\n\xae\xe6\xb3\x9eAB\x0b\x16\xd31\xc9\xa6\xb0RK\xd2\xe7[\xd2\xf5i /\xc6\x01U\xcf\x86\x8b\xb7\xd2\xb2)\xce\xb8\xcb\xb4\xbc$\xec\x8b\x8c\xce8\xdb\xea\x95\x8a\xd9\xac\xde4\xd5Nd\x98`\xf0Cv\xcc<\x0b\x05)\x15\xa3)\x87\xbb\xd2\xfd\xecF\xb0\xacP\x91\xb4\xb3\xf3v [\xe6\xf0\xc5!3$\xe80\x14\xbe\xeb*\xc6N\x879\x17\x0f\xc90\x1f\x89\xf4\x8at\x99\xa6fMt+\x13&\x82\x8cf\xf9\x1c\x0f\x0f\x81s\x03\xb8\x8c\x90N|O}\x91\xd6<\xc1vOIQ\xd2\x9dc\xd9\xc7\x92\x8eo\xbe\x175\x11\xaff\x9b\x99\x9a\x8dT\xe2u\xbc\xf0A'+\xca4\x93\xfa\xba\xf4\xa2\xf5ue\x01_Y\xa1\x8a5\xe5\xee\x84?\xdb\xa5\x84p\xc8\xef\xb1\xcb\x7f\xdb\xa8K\xc5x9^\xa7\xee$s\x1e\x08Y\xd7\x81 U\xda\xfcn\\\xdd\xa5\x18r\xb1\x01\x98\x8aU\xc1\xc8\xfc\xc3lI?\xbdN&\x93\x94\\\xc49\xf1E\x9c\xee\xfd\xcf\xfa\x93\xa4X\xf0\xb3I2\x8eH\x97\x9cp\xe9n\xd4\xf4\xb2\xd3\x82\x05\x1d[\x08\xcd\x93\x01 0\x959\x0b,\xbel`\x14#\xccw\x0d\xe7\xa0\\#\x0e\x80e\xf14\x9btC\xf9\xbcL\xb2\xa5\xaal[I4+55\xc1\x05?[.\xf8D\xfc\x93\xa8+\xe0\xec\xf7Ty\xd4m\xe8\xf5Bc\x06\xa5\x10\x19pK0\xf3\x95\\f~\x82\xf9l<\x8c\xce\xa9N9\xa5\xc0\xe1\xbc\xa7\xfc3\xd0\x8a)V/\x8a\x13\xb2\x0d\x0eu\x9a\x11\x99\x83\xc0p\xec2\xce>\xb0\x91\x1d\x96\xf5^\xfaI\x81\x9dQ\x91\xf8\xfe\xa05\x88\xf6\xfcg\xc9\xd9,M\xcef\xdd\xdc\xa5Z\xe1I6Fu\xab\x99\x01\xd9\xaa\xf8\x8c\x9e!s\xaf\x08N`\xe4\x92=\xcd(#\x94\xa94\xac\x8f\xe0\x1e\xb9S\xc5\x03\xe9\xafX'\xdf\x8d+\xb5\xec0\xba\xd2@\xa4\x83\xab\xfa\x88\x90\x0b\xdf\x8dP=\xb2\x1c\xee\x8e\"\xd44\xecE\xa8@ \xfd\x84R\x92\xff\xf8\xe1\xf5+\x91q\x18\x16\xa8V\x10r\xb2\xa8g\xbb\x80\x87\xf0\x0d\x92\xc9\xdf~\xc3\xfdJ\xa5\xe7\xdc\xd8\x99m\x86\x03\x84\xf7\x94\xaa\xae\xb7\xb7\x8b\x910\xafM+\xd8\xecE\xb05\x86\xf5\x1a\x16\xf0\x08\xbe\x15\xbd\x08\xaa\x80w\x87\xb7\x7f;\xbe\xddg\xa4`\xc18\x8c\xf8\xdb\xfc\x83\xdb\xc3\xaf~\xbb\x18i\xf7\x83\xdem9\xb2\xf5\xbal\x80\"iN\"\xf8[\xefo\xa0\xdcN\x92\x08z\x7f\xeb\xe9?\x97\xc3\x02v\xe0\xee\x08\xb6\xd1)\x9e\xf2g\xbd\x9d\x9d\xdf.\xefp\x99\xbc\xba\xf5\xf5\xed\xdeh\xb8\x18\xb9\x8de\xb8,SQ\x98\xa1\x1f/\x16\x84N\x9e\xce\x92t\x12\xc4\x9a\xc8}\x94\x12\x8efA\xafX\xc4\xb4\x17\x86\xfd\x82\xb0\xc7\x8c\xe5\xc9\xe9\x92\x91\xa0W\xb0\x15\xaa\x03\x86\xbdq\x96f\xf9\x01\xfc\x9f{\xf7\xee=\x80iF\xd9\xce\x05\x11 qO\xb3t\xf2\xa0\x17\xe1\x8a\xe1\x7f\xfa\xabxo4\\\xc0!\xae\xdd\x1d8\x84}8@\x08\xdf\x87C\xb8+\xff\xe6\xf7\xef\xc0\x01l\xdf\xfeW\x10\x07\xa7\x05\xcb\xe31[\xa7I\\\xac\xe9d\xadL\x0fk\xbeg\xd7E0_\x17$g\xe1\xe1z\xc9\xb2p}\x1a\xc4\x05Y\x93\xb3\x84\xae\xb3,\x0dHL\xc3\xc3uN\xe2O\xeb\x15#\xe1z\x8c\x8f\xf9\x81\xb3\x9e\xc5\xf9\x1aE\xdb\xc9:\x8d\x8bb\x9df\x94\xac\xb3\xf9\"]g\xb4`\xeb\x8c\xb2\x84.I\xb8\x9e\x90\xe0tyvF\xf2\xf58\x99\xc7\xe9z\x9c\xc69YO\x03\xbe\xc7\xd7$\x0f\x0f\xd7 M\xd8:\x0d\xc8Y\xcc\xc8\x9a0\x12\x1e\x86\xebI\xb6\x9ed\xcb\xd3\x94\xacI0\x9ee\xeb\xb48L\xa6\xeb\xb4 A2\x0d\x0f\xf9<\xb0\xf6\xe8\x9a.\xe7\xebsB\xd9\xfa2\x18\x93\x05[\x93\xf1z\x11\xa4\xc98a\xeb,g\xe1\x9a\x91\x80N\x8a5*M\xd69\x0d\xc3\x90w\x9d\xa6l\x96g\xcb\xb3\xd9:N\x0b\xb2Nh\x9c\x06\xe9\x8a\x0f\xe5\x92O'\x8b\xf9\xd7\x01\x89\xc73>\xfb\x84p\xb0e\xf3\xf5\x92\x8e\x03\xbe{\xf9\x00\xcf\xd2\xec4N\xd7g\x19\xcb\xd6g\xcb8\x9f\xac\x93`\xba\x9e/\x02\x81\x03\xc5Z\x1b\x04\x0d\x12\xb6F\x95~p\x92\xd11 \x0f\xd7i\xc2\xa1\xb5dk%\xfa\xacY@\xf2i<&k\x92\xd38\x0d\x0f\xc3\xc3u\x11\xae\xd3 \x9e\x9fN\xe25a\xebl\xfci\x9d\xd1\xb3p=\x0f\x92q\x9e! \\\xa3\x8ai-\xd4\x08\xe1\xfaM\xfcfM\x83xN\x8a\x05o)f\xc99Y\x93K\xb6&\x17\xeb$]gl\xbdL\xd3p\x9d\x05\xc8\x16\xad\x17\xc2\x10\xbe\xce\xd7K\xb6>'y\x9eLH\xb8^\x04\xf1\xf8S|F\xd6q\x1e\xcf\x8bu\x9e\x9c\xf3u\xc93F\xc6\x8cp@\xb0l\x9c\xa5\xeb\xe5i\x9a\x8c\xc3u\x1e\xc4 \xc7\x98 \x9ed4]\xf1\x85\x9b\xae\xcf\x92\x82\x91|\xbd 1[\x7f^&y5\xefb\xbc$k\xa1b[\xb3|\xb5\xe6T1\x0c\xd7Ep\xba\xe2\x8b\x1f\xa7d\xb2&\xe9t=\xcbr\xb6N\xce(\x99\xac\x93?\x10<1K\xc6kT\xe7\xacY\xbe\x1c\xb3\xf5\xf2\xb4\x18\xe7\xc9\x82\xad\x97\x0b\x92\xafWt<\xcb3\x9a\xfcA&\xeb\x8b\x84\x8dg!\x87\xe8|\x91\xf2\xc1\xcf\x08]\xcf\x92b=\xcb\xb3\x8b\xe2p\x9d\xc7\xb4H8\xd2\xe4K\xb2\xceW\xeb\xd5\x82\x041\xee\x8f \x99\xae\x93\xc9\x9a\xc6s\xb2\xce\xa6a\xb8^\x064\x18K4\x9f\x90i\xc0\xd9E\x8e'\x19]\xa7\xa4(\xd6\x85\x18#K\xd2p]\x90u\x91\xf0\x05:\x0f\xe2|\x9d\xe4l\x19\xa7\xeb,\x99\xacQm\xca\xd7\xe7\"\x18\xcf\xe2\xfc\x84\x89\x01\x91\x9c\xacgIJ\xd6 \x9b\x85\xeb\xcb,_\xaf\x12\x92N\xc2\xaf$\x01\x9cr~iw\x14r\x16T'9\x8a\xdc| \x97\xecM6!\xc14\x0cC\x91Al\xc1)\x94\xa0\xeb\x9cF\x1c\xf0\xf3c\xaa\x1d\x00{{\x0f`k\xb8\x17\xc1\xed\xe1o\xb7\xff\xbc\x1a\x06\xbf\xedl\x7f=x\xf8\xe8\xe0\xc1\xfa\xb7\xdf\xfa\xd1\xe1\xd6\xad\xbf\xff\xfft\xfa{{\xf8\xdb(\xac\xdfhPhI\xa0\xc7\xbc\xe3\x0cS\x93sR\xff\xb0\x07[x\xceH\x12=.\xa9\xf3\x98\x1fS\xdb\x90\xc26\x12\xe8m\xd8\x1b\x95\x7f\xee\x8f\x90 \xffvyg\xbc\xb5\xb3\xd3So\xf2{\xb7\xbf\xae\xff\xbc\xcdi\xe1\xff\x11-\x8e\x86;;\x8b\xd1\x03\x87\x07\xcf\x14\xb6\x070\xf6e.\x8d2\xda<^|\xc8\x1a|\x97M\xf5as\xb1\xe4\xc7b#\xc9~\xf9\xcapo\x04\x87\xf5\x9f\x07\xd0\xfbDV\x06\x96D)\x06\x0d\xed\xef[\xdb\xdf\xaf\xb7\xbf?\xaa1[\xaf\xe3\x85\x89\xe1k0\x90\xaf\xe3E?)\x84\x96\x04=\x81\x84\xf7\xc3\x06\x1cd\x9dc\xa4\xa2\x82\x0dE\x0b\x89\x89g\xe4\xfd\xd3*\xef\xfd^\xa5\x11\xea\xcfI~F\x02\x93\x14x.\xa3\xe5\xbbG\xc3\xdf\xe4\x8c\x155V\x07\xe2O\x0bK\xf4\xbc2\xecl\xed\x99\x9fM-:]p*=K\xe6o\x11\xc1\x04\x06(~&\x9a\x96RE\x06\x04!\xa6 \xe4\x83\x0b\xf8\xb6\x9e\xd4\x1c\x85\xc2\x07r\xd8..\x8e\xf72\xe3\x14\xc3'8\xfd\\\x8e%\xab\xc62C\x17Y\xe7Ws\x0e\x83\xceP\xf63|k\xaf\xe3\xad\x15\xe7i\x83\xb3\x08h\x99m'\x82\x9c3X\xc12\x82yS\x0d\xad_mTPB\xc7\x8a\x0b\x1d\xb1r\xfe\xc0\xec\x87\xb1H\x9a\xb72s\x83\x06b\xa1\xab\x86\x8d\xdf\x8c\xa5k\x05r\xe5\x86\xef\xa7\x9c\xfbHm\x18a\xc7\x15~ma \xdeI_n\n\xedo[\xe2\xe6\x8e\xee@\xf1\xf7\xa14\xe0M}\xe1\xd0\xba#\xc7\x14\xb7I)\xb9D\x8e\xf4\xfb$%o\xe29\xf9>\xcf\xe6R\xa6y\x96\x14\x8b\xac@\xe3\xeb\x8f$\x9ex\x94\x95W\"\xde\xedi\x92\x12~l\x0fz\xc1\xf0_\x0fF_\x87\x0f\x0e{\xb7\x93>\xb9$c\xa3\xe1\x00\xcb\x9e\x08\xdb\x00g\xea\xebm\x94MT-\xd8\x88\x93\xaa\x9e\x82\xcdh\xb2\xa1F\xaa\x8c\xf9\x19\x94\x12n\x99\xa6m\x08-\xe2b\x1c\xa7O\xe3\x82\xc0\x00\x9e\xd6\xef|/\x07\xd9 \x1a\xd9\xc3\xd3\x80Tf\xe2\xdf\xfa\xc3\x7f\xf5o\x8f\xbe\xfe\xea6\x17%B\x93\xc6*\xa6 K\xfe \x1f\xf3\xb4\xb3\x07\x0e\x802vlK\x8b\x1d\xe3\xc2\x9a\xd0u\xb8ekM18\xd6{\x0e\x8dG\xf0\x19a\x8f\xc7\x9c\xcb\xe7\xd8\x92gi\x9a\xd0\xb3\xf7\xa4Xd\xb4\xe8\x86F\xe3$\xab\x14\xfe\xfd\xa4\xd0\xb4\xff\x9a:\x84/\x8dMcP?\xf6\xccoV\xfa\xa5\xbaCx\x97Wry\xc2\x15,\xceY\xf1s\xc2fAo\xbfW\xea#u\x15*:\xe9\xf5\xc6b\xf7\xf4\xf04\xfd\xf3*\xac\xb0\xd0V\xa8\xc1LlK\xd5N\xd0\x93]\x88&\x8dv\x12K\x1b|\xcb\x06\xd40.s#a\xa9|\x93\xa6.5v\xa1\x0d2CVA\x887\x9b\xb7\xf1dB\xc8\"]\x1d\xb3\x8e\xbaLmJ\xf3\xdeP\x86\xffye\x0eLi\xe0hf09\xd9\x15\xdaU\x1cQ\x1edC6\xc2\xbdr\x08\x13\x92\x12F\x80\xdf\xe1B\x0d\xff\x87\xf3\x03\xe2\x0dj\xcce`\xcaV\xabl\x03\x06\xb2\xa7\xa2!\xbd\x08\x89)`\xd6\x95\x19HV We=\x95Y\xd7r\xa6X\xad\x16\xa4k\xc1\x89\xb0Z\x94\x87\x12 \x1d\x0c\x84F|s\xad\x89\x08\x84}o\xdf\x00R\xc5\xect\x19$\xcdQ\xc2\xe0\xe2\x13\x88#\x15\x03\xebS\xf4\xbd\xf8\x90\x95\xfe\x1c\x1ek$\xbe\xb1\xac\x91\xd6\x9b\x15M\x1a\xa6\xbf\xfa{\xe7\xb2\x92\xe7I@\x83oL>\x12ctH\xba\xf7\xcd\x9e\xe1\xd9T~x\xef\x1b\xa3{\xc5B\xb9f|\xbbkz<)\x1f\xdf5=\x9e\x95\x8f\x8d\xe3:\x97\x8f\xef\xdf36>W.%\xbb\xf7L\x8f\xcfpV{\xdf\x99x\xff\x95\xfc\xf4\x8eqR\xa7\nX\xfbw8\xe2\xd7\x9e\x97\x04\xfa\xa4\xc3w\xe1\xd6-\x0c\xe1P\xbeU\xd2\xb5\xd8\x8c\x8b\x12\xa5M\xa5\xea\x9bQ\xf3\xfa/\xbe\xb0\x170\x80\xf2\x08lO\xe5\xc8\xe0\xc0\xd3\xad\xd9o\xc9\xc8fsL{\xb06`]ndv\xae\n\x047&on\xfc\xd8\xd9\xf8\xd6\x16q\xdaW}(\x95c\x0dtO\xa9\x89\xfa\xc8\x06\x86\xa7\xce\x91\xf2~\x17U\xbf\xfc\xe7\xd4\x7f\x18u\x07\xaeN\x16\xce\xa1\xf8\xd9\x8c\x8b\x18Z\xc4a\x0b\x8br\xc7\xda\xf8\x9dz\xe3wD\xe3NN\xbcn\xa2\x97} \xefQ\x7f\xc8\xca\x87\xeb5 `\xcfk\xc7\x88\x0e-\xab\xfd\x18\x9d\x84\xab\xfc\xdf\xb4b\xbfM\x9a\x15\xd0\xfd\x00\x86\xd4\x92\xf6\xces\xa3\xc1!h\x02AR\x04\x182\xc5Q\xd5\xcaq\xf9\xa05\n?\xb6\x06|\xfc\x0e\xf0\x08'\xf8i\xd6&\x06\x82{k\xd4l\xeb*`\xb3\xc5{\x99k\xc3\x1cR\xceY\x0d\xa9\xc1\xeau\xd5\xdc\x12\xeds\xef\x93\xc5\xe1\xb1s\x7f\x80\xb2\xa7\xc2#\xa8\xc2\xc4{?\xc5\xe9\x92\xc0|Y08%\x90\x92\xa2\x006\x8b)\xc8\x96\xbd\xca\xd9?\xb68fn0\xa6\x87\xf61\x9d\xa1\xc2=\x97\xc3\x12\x8d{\x0d\xeb\xad\xd9\x85\xb4\xfb\xb4@9\xf3\xf6\xbfv\x0e\x7f\x9bl\x07\xbf\xf5\xf9?\xe1\xa1\xb2\x0chRjc\xa01H\xb6\xc7gp\xef,>\xaf\x9b\x8d\xcecP\x14#\x01\xcf<\x87\xf5\xc1\xe4\x9b\xeb7&<\x95\xb6\x02\xe2\xf0)\xb4Cn\x9a\xa4\xc4k\x80\xaf-\x0e\xc5~c\xec\xb1|Iz\xb2n0?D\xa7qZ\xe87\xb6v\xb5\xbf\xf7\x14#o\x1b\xf5\xa9\xe8\xdek\xe0\xcf\xcd\xce\xd1~\xe3\x16\x835\xa8{\xecc\x93/\xfb\x0c\xedw\x9b3\xb7\xdf\xe0\x92\xe2M\xfc&\xe0\x9f\x95\xce\xc2\x8e\x95V\xcd{\x8d\xec\x8d\xc9\xef\xdcoTJ\xd8S\xa2F\x9fe\xaf\xb2\x0b\x92?\x8d\x0b\x12\x84\x11l\xdd\xfe\xd7\xf0\xcf`t8\xdc\xdd\xf9.\xde\x99\x8e\xfe\xfc\xf6j\xa7\xfc\xfb\xae\xc7\xdf{\xfbW\xc3\xf0j\xe4E\x18\xf8\xc8\xbd&\xfc\xde\xea~\xefOL+\xde\xc4\x8f\xce\x8b.\xbc\x86\xf7\xcc\x1a3\xb0\xf9\xf06 \xf9\x1b\x8c\xf0\x95%\xd2\xc1{|[\x94\\\xc0{rvt\x89\xfe\xc8\xae\xa5\x9dfi\x9a]\xc0Bv\xd2\x83m\x93\x03{\xfd\x0co\xc7et\x8e\xec\xba\x9c\xed\xad[\xb5\xdfv\xae\xd6\xc6\xf1\"\xab\x87\x94\xe74\x9b\xac\xa4RY\xa8\x17\x13\xda\x13N\xf2\xf8\x0b\xcdX'\x97\xf3\xb4\x87\xee\xf2\xda\xcd\x9eEU\x99T\xea\xce\x9c\xa0\x9b\xc2\xc4\xf6j\x0c\xc2;J\xbe^`\x84\x8b\xe8\xc8\xa2\"\x8e\xcb\xd5\xca\xedv\xc7X47\x97|\x8e\xa5\xf3\xb1\xf6\xa6d=,oN\xab79q\xb6\xbd\xb6\xa8^\x9bf\xf9\x8f\xe0,\x82\xd3\x08N\"\xb8\x88\xe0(\x82\xcb\x08\x8eG\x0d\xe1\xd59\xf6J\xdfd|\xc5V\x92\x0eYB\xe4\x9f\x9f\x86\xcd\xb9\xbf\x97\xb4\x1e\xa6 I'\x90\x14@3\x06\x8b<;O&x\x02\x98(\xb6j\xf4\xdc5X>\xf1\x8f0\x80WA\x16\xc1\xb9\xc3%\xe1#\x1a8\xc4x>\xfa\xba\x1a\x80\x1c\xc2\xa4\xda:\x93\xae\xd1|\x86\x01\xbc\xe7\xa3\x998F\xf3Y\x1b\xcd\xe7MG3\xeb\x1a\xc2\xf70\x80g|\x083\xc7\x10\xbe\xd7\x86\xf0\xfd\xa6CXV\x00q\x96\x1d\xe1\xa3\xf9\x03S]a\x91\x11\xfbh\xfe\xd0F\xf3\xc7\xa6\xa3\x19W\xa3\x19w\x8d\xe6 \x0c\xe01\x1f\xcd\xd81\x9a'\xdah\x9el:\x9a\xfa\x91\xd85\x9e\x9f\x1c^K\xeaB\xee&\xf8 5\xe41#;\x8c\xcbQ\xd8\xfc\x02\x0e\xe1\xf7\x00Uh\xbd%\x176\xca\xbbo\xc4\xdd\xe7\x82\x88\xda\xf9\"u\xc9\xd9\xfedsb\xa9\xc8l\xfd`\xeb\x9a\xdf\x8f0\x80\xd7\x81\xab\xda\n\xce\xee\xc7\x0d\xc6\xf8c\xf7\x18k\x87g\xd7\x10\x7f\x86\x01\xbc\xed\x1e\xe2\xcf\x1b\x0c\xf1\xe7\xee!\xd6O\xe8\xae1\xbe\xc0\xec\x8d\x9dc|\xb1\xc1\x18_t\x8fQg\xb0\xbaF\xf8k\xc7\xd0N\x91\xf9)\xd90\x9f\x81\xfe\xaax\xd6\xe74\x18\xf6\x12F\xe6E/\x02\xc1g\x8f0\xc9N\xcb\xcc\xdd\xe5\xe9\x01\x9a`\xd5\xb5\xed\xf8U\xc3\xa4_\xd1E\x82#\x0b\x86\xaa\xd6\x97P=|'\x1f\xeaT\xe0Wd\xc0\xf8\xd3\xe7\\\xa8\x8c\xa4\xb9]\xac\x83{\xb0\xfcJDVKC\xde\x95\xe6\x85\x995\x0e,\x99\xc4\xd4\xe5\xac7\xdb\x89\x13\x1a\x83\xdc\x85\x12/a\x00\x1f\xba\x91\xf6\xa5\x0f.H`\xbd\xf4\xa5\xc6V\xab\xb7\xc1{\xa5\x9dF\xc1\xcd))7\xa3/w66X:Az\x05m*\xf6\xb7\x0cZ\xa6\xf8g\x0e\xef\xdb\x97\xf3T\xea\xae\x98U\xbeK\x84\xcf\xd5\xe5<\xc5m\x8b\x7fa~\x12\xd7\x9a\x0b=\x0f\xff\x86K\xf9\xf2\xdb?\xaf\"\xfe\xfdW_\xe5d\xaa;\x03\xac\x16\xe8\xb4F\xfa\xb8\xaf\xc5\x9f\x0b\x91\xcf#!\xf2w\x95\x16\xe6]\xf5\xe4\x10\xfe\xf6\xf0\x907~N\xf2\"\xc9\xe8\xa0\xb7\xd7\xdf\xed\x01\xa1\xe3l\x92\xd0\xb3A\xef\xe3\x87\xefw\xbe\xed\x1d>\xfa\x8dJ\xb7v\xf8\xe5\xf5+ \x97\xb8\xc40\x8e)g>O \x9c\x11\x8a\xc9\x19' B\x94\xfef\xf5~R\xd7yY^\n\xa7\xd3\x9fsQ \xb8\xfd\xdb\xf1\xd7\xbf\xdd\x0e~;\xde\x0e\xbf\xba\xed@\xf6\n\x88\xb2\x84\x94'*C\xddXx\xa6,\xb5\x93\xa7\xa8/\xfb\xe5\xf5\xab#17\xe1J\xe2\xe3\x01r.\xcb\xaa\xd5\xdb\x13\x9b\xe0\xfb<\x9b\x8b\x8d \xdbk\xcfH)\xc5l\x92]\xd2%\xd9%a\x08\x87M?\x98\xa4\xf2\x83\x81\x83F\x8eJ\xe9\xa3\xa9\xa7?q\xba}\x9d\xcb\xcc\x86\x7f\x1at\x85 \x93\x17V\xe2|\x9a\x8d1\xcbN\xbf\xc0\xc6-\xfa\xa5Joi\xdbZ=\xa1\xa4w)MD\x16\x94byZ\xb0<\xd8\x0b\xfb\xc5\"MX\xd0\xbbe\xd2\xc6\x80\xee\x9f\x9eCB\x81\x86@\xfb\xb3\xb8x{A\xcb\xdc7\xb9pS\xc4(\xc3a>R-\x0e\xb8XE\x86\x132\xce&\xe4\xe3\xfb\xe7O\xb3\xf9\"\xa3\x84\xb2 \x1f\xee\x8e\xc2\x11\x0c \xe7T\xe8\xd6-0\xbe\xb37\x12v\xd5\x9e\x0f>\xa9m\xdd^\xb3v\x1a\x1b7m\xb5Z\xc5\xfd\xca\x97\xab\x81\xd0\xd6\x8cD\xca\xfdA\x0f\xb6MO\xc9\x90\x19\x0d\xb3\xfd\xdf\xb3\x84\xe2\xf2\xb4\xa7&S\xf5\xb8\x07\xa5\xe6S\xcb\xb9\xa1r\x17Sr\x01$`\x9a\xb9\"\x82\xde\x92Mw\xbe\xed\x85au\xb7w\x1a\x17\xe4\xfe]\xd3\x18\xaa\xd4A\xed\xae3\x0c6K2Z\x1c\xe3[6\xaf\x9d8]\xccb\xcf\\\x83\xa0\xbb\x8f)m\xe2\xac\x17\xe2\x16J \x07h\x9c\xf3)i\xcf,G\xb6yc\xce \x9be\x93k\x8fF|n\x1b\x8fz\xea\xcdD\xb4\xc7\xc8\xe2\xb3\xbf\n\x9c\x8d!{\x0f\xd2\x80\x99\x8d\x14S~\xec\x8c\xc9I\xa5\x8a\x8d\xe6\xe4\xc7z\xfa+_^b\xf5\x10\xd1\xd8\x96\x1c5\x88\xbd\xeao&x\xbb!\x8d\xf8\x06\x8dL\xfb3\x0f\xb5\xc4k\xfb\xbb\xb7\xcf\"\xe8m\xf7\xc2\x91\xdc\x9f\xa6%\xb5R)\xe6\xda\xd4\x86\x94]\xb5\x95\xb48\xd6\x94J3N\xb8f\x15\xe1\xa2\x9aSN\x97\xcb\xc8F\x1e#\xf5\x91\xd7a\xae\x94b\x96\xbcd^\x04\xd8X\xa0\x063\x8ektL\x9a\xb31\xa5Q\x9e\xcc\x03m\x91~\xc3\xecx\xbd\x13\xb4\xd8\xf4z\xae\xe1Z\xb2\xaay\x0d\x93\xc3\xec\xb4\x82\xd9\xc7\xb6{Yd\xc8\xe3\xe6\xd54ig\x9b\xe8N\xc2z\xfb_\x97;%s\xdd\xb9l\x915\xf7\xdc_9Bi\xffY\x97\xf6\xa5ui=ZK\xbb\xd8ZZ\xbd\xfc\xa7\xf2?\xd5\x83\xb2\x90\x16\x0d\xee\xdd\x0d\xfbO\x96\xd3)\x91\xde\xe2\xd7\xca\x06hN\x88\xd9\x9cfI\xa9\x8c\x92\x99\xc8\x15\x0f\xff\x7f\xf2\xde\xbc\xbbm\x1cK\x14\xff\xbf?\xc55\xa7_\x8a,\xd3\xb4$\xaf\x91\xedx\xb28\xdd\x99\xc9\xf6b\xa7\xea\xd7\xa3\xf2xh\n\x92\xd8\xa1H\x15\x17;\xae\xb2\xe7\xb3\xff\x0e.\x00\x12\x04\x01\x92rR\xd3\xfd\xde\xe3\xc9\x89E\x12\xc4r\x01\\\xdc\xfd\x9e@\x15\xcb\xf2\x13\xf1\x83\x9c\xc7\xa2\xfc\x17$\x0b(\x81p\x047a\x16\xe6\xb0\xc8\xf3\xd5x{{\xe6\x07\xe4:I\xbex\xf30_\x14\xd7^\x98l\xa7\xf4\xbb\xedi\x12d\xdb\xf8\xf1\x16#\x9fRo\x91/\xa3\xd3P\xc4nd\x94\x86\xcb\xf3\xb9A\n\xc7\x90\x1fA\xba\xb9\xe9@\x0c\x9b'`=\xf1\xd3y6\xb94Q$\x157\x97\xa2\xcb\xaeB\x1f\xb2:\xeaq5ED\xcd$\xed\x1f\x94\xb3\n\xc8\x99uG\xe2l\xa2\x99\xa4\x16\x1dS\xe5\x15\x98C[\xd2\x1a\xd8\x12\xc58j\xc4\xca\xca\n\xef\xbb\xc4\xa8'\x14\xd8\xe7\xa4\x1f\xac\x932\x1a\xf1#\x9a\xacB\x19\xcbcf\x1d\xa8nz\xf5#\xcb\xfd\xe0\xcb#\xba\x80\x11\x98\xd9\xb8\xe9/:r\xfa\xb7W\x9b!\xb7\xd0}D\xb3\xc2\xb8\x17[\xd6\x18\xfd\xf6j?\xc5H\xcfk\xb5^\xd4\xb3\xbd\x88\xa8=\xad\xca\xa8\xf2\x84\xc84'\x04\x8b\xac\xc3\x8c\x102x\x06{p\n\x19l\xc1\x1e\x8c1\xf3R\x00'\xb0w\x04\x01\x1cCv\x04\x01E\xe3\xd1$\xa0\x05.\xe5\xda&AKb\xf0\x1b\xee\xa5n\xb6\xa3\x86R\xdb3\x93\xe9\xac\xd4c\xc1\xb0\x8d\xe2:q\xd1\x16\xd0\xd4\xc4\x9eux\x8a\x03\xb75 \xdb\xe5\xdf\x1c\xdcR,h\x8a\xc3\xa3p\x8afOSzb\xc2\x7f\xd1\x9f\x05\xfd\xf9_\x90\xcc\x90Zd\xcfV\xecYV\xacV\x11=\x7f\xf2\x84=O\xf0\xb9\x0b\xe4\xeb\n\x03\x9c\x80\x1fC\xe9\xd8\xe1\xfd=\xe3\xa1\xbf=\x8d\xe8A\\z)\x19\xc8\xb3\xbch\xe5X\xc4EK\xde \xe7\xb2\xe8H\xe9\xde\xa9\x8b\x16\x97\xb0\x8d\x99\x95\xd9\x03\xdb\xacN\xe4\x0b\x1d\xf3y\x1eJ\x91~h\xb2taQ\xaeo\n9\x8f\xc2pQfP\x88\xda<\xf1\xc5E;?/\xe5W\xf3\xd6\xf2f\xd8\x1a\x82\xc5\xf5\xda\xe4\xd9\xc2_\x911\xac\x9aoD\xa07\xed\xcb\xa5\xbfzY\xbe\xef\x8d\x1ef\x88\x9c\x1ew\x06F\x18\xe5>\xb3\xf5\xe7\xb6\xb6\x87X\xbc\xd9Z\xdb\xf9\x8a\x9f\xf4<+\xb5'#V\xd0<\xeb\xdaN6\xb9\xcd\xae\xb3\xcap2\xb1V\x0dg\x8d\xae\x9f\xbf\xf2~\xfe\xca\xfb\xf9+\xf6\xf3WM\xd9\x94\xc7\xfb\xcfl\x8b\xed\x7f\xcb\xed?\xe1D\x87.\x9b\xb3\xadi6,S,d\xf6\x9a\xc7\x99\xec&&z\n~\xb3\xaf\x82+\x11|t}\xbb\xf2\x11h\x9c\xc7\x84\xfeu\\\x1f\x1e\xb3R\xa5\xef\x85\xfc}\xac\x8e_\xf4\x97\x16\xaa0+r\x1ae\xcen\xbb\x14>\x03\x06F\xac\x05\xdf}\xd0\x8c\xac\xd00]\xe2]\xce\x8f\xe1\xb4\x0c\x9e\xa7\x9b\xb0\xb5N\xe0}~\x02\xefK'\xf0\xbe\xee\x04\xde\xef>\x81\x05\xd5\x00'\x80\xa6+)\x0b\x9e\xc7\x8c\x1c]\xe1\xbd\xcb\xe2\xb3\x9e\x02QQpm`2\xe2\xe5\xc9\xe8\xa5\xe3\xb14u\xa2\xc0\xf6\x1b\xe7\xe3\xad\xcfl\x9f\xb2\x15 \x18S\x16\xc6\xac@\x88\x05<\x94\x97\xb0\x86\xebk\xad\xb1\xa2\x98&A\n\x0f\xbc1t\xb4++\xf6\xc2\xac\xec\x96\xfa\xcd\xa0\x16\\U7\xed\x99\x96\xfco\xd2ar\xf4D\xed\xec\x8b\x89\xa7P6\xa9X\xec\xac\xd5\xe44B\xda\xa6#\x87\x8f\x81X \xdb\x89\x95\xa8/\xb1\xf2_\xa5\xac\xe0\xbft\x14\x8aQ\xec\xd8\x8c;\xe2\xb4\xc2=2\xc9\x1b\x9b\xa0\xaf\xe0\xaeI\n\x02\xf2\xc6\x8b\xb4\x1b/(7^\xc4I\xdfH\"}g\x8c\xf4\x9d\xc11DG0\xa3\x1b/\x98\xcc\x9a\xa4\xef\xcc\x10\xd0i\x85\xaa\xa6\xc44\xe7\xb1\xbdj\x9ds\xbaf\x0b3\xfd\x84F\xd0\xf6\xeaQKB\xa2_3\xcd\x92X\x18\x96D\xd8E\xbf\xa2K\x00#\xd5\xfa,\x10fW\xc1'S\xef\xe7\xa3\x19\x00-#\x1ce\x0d]\xc4y_\xa5\xc9\xea\xa2\x1cS\xd6\xe8{\xb9\xe2\xb4\x99V\xca\x95s\x83\x91\xab\xca\xc8\xf5.\x92\xb8\x03\x97\xd3\xac<\xa1-,\xe1\x18\xe6G\xb0\xa4\x8b\xc4<\xa5\x18ZJE\xb27.,\xcbEL{9\xa1\xfd]\xd2_\x97V\x89t\x03\x13\xb5K\x81x'\x9f\x82\x08\xae\x12\x80w\x1d\xf3\xd0\xb1\x19\x85xC\x17.\xbb\xb9\x1f[\xb7`\xa2\xdd\x82a\xb9\x05\x13\xc7\xe5 \x10\xc1\x87cH\x8e\xc0\xa7\xd0\x0c'~}\xbb\xf9\xe6s\x0eQ\x07vU\x01r\x88:]\x16\x7f \xf3\x8d\xb8r\xb7\xab!\xa2[\xae~\xfe\xcaq\x84\xdaq\xf8\xe58B\x8eJB \x95\x14\x0c\x95\x14p\x0c\xe1\x11\x14t\\\xfe\xa4h\xa2\x92\xc2\xa4E\xe2(\x8cLrC \xe3^\xca\xda\xf6\xd2\x17r\x97]H\xfb\xc9NV\\\x08\x9a\x91 \x89\xa7e\xd7\x9c\xe6V\x8bM[\xad\xc9\xe6\xb6o5\x90\xa1\x8b\xe1~\xe5H=\xe5\xbe\x9b\xb1}G\xb1jP\xee;\x8a\x9cW\x1c9\x9b9T\x81N3u\xef\x05.\xcc\xca\x99G\xa4\xb8\xf5\x8c\x02\xc5\xa6\xe3\x08&\xb3K\xfa\xcc\xa9v\xa1\xdf\xc6s2\x8bi\xe3Nl\x92\xe5\xa0\xc5\x8a\x0fNs\xf5\xea\x0f\x98l\x9d\x9d<3\xd3\xe7\x92\x05\x8bb\xb7U1\x060\xae\xbdk\x9eK\xb1\xa9\"\xb4\xd1\xd2r\x15\xb5:G\x97Z\"\xee\xff\xa5\xd3\xfe\xb1\xc7y\xd1~\x9cO\xff\x87\x8e\xf3\x9b2\xcec%\xffi=X\xbb4\xebK\xc4x7-\x18o\xd9\xb5\xeb\xe9)\xbdTw\xfd\xc2\x85\x9b\xda\x89\x8b\x1c\xe2M\xf7Y\x0b=%J\x9d\xc6\n\xed[u\xd5\xdc\xaa\x95|G\xfeT\xfc\x925\x85\xcc~\xecQ\x8a\xa3\xed\x1f\xcb\x9f\x8c\xc3\xde\xf2\xb3,\x9cWl\x92\x1d8p\x1e\xc6\xd3\x94\xc0y\x92.\x8a\n\x01\xfdk\x14\x06$\xce\x08\xbc{sQ>\xfcq\xbb\xfc)tR<\x8d\xd9\x9c\xe4\x92)\xd7\xf9\xdd\xf2:\x89\xb2\xa6\xae\x8a\x97\xae%\xb9\x94\xbek\xea\xae\x1a\x1fp\xcb\xca\xbb7\xd9Y\\,\x19\xda9\xd2\xc2\xcdH\xc4\xe8=\xa9pS\xf3\xe6\x18\x94Z\xc3\x89\xdcp\xbb<\xba\x83\x85u\x93\x7f\x1d\x98|\x11\xc9\x04\xb1\x8e5%\x96\x0b\xd6\x1e\xb34\xd4\xc2\xee\xbd\xbf$\x99M\x9c\xc9\xe0\xb2\xb5\x0355\xf1\xef\x0fL)<8\x82\x18\x8eaH\xffR\x84\x97O\xac+\xba\x15X\x0f1\x0f\xd3\xcb\x85\x9f\xbeL\xa6\xc4\x8e\xd1t.\xd6\xf7\xd7\x1a\x0cG;\xbb{\xfb\x07\x87O\x99}KK_s\xc5\xa6\xadK\xc4\x95\xabq\x84\x00$\x0b5\xab=\x8c\x8bXw-I\x91\xe8\xc9p3\xb4\xb6\xb2\xd2\xb6\xc2\x94\xd7\xc4\xbb\x9aE\xfe<\x83'PPZ\xe5\xa5\x1f,\x08K\xa5@[\xd1\xcbxo\xcaLG\x154\xe8\x17)\xd1$\x80\x06\x11\xa7\x82%m\xc2\x82M\x9c@\xc6\xb2\xb8\x02\xed\xe7\xb55!zV\xed\xea\xc3Vm\xfb\x0d\x8fx\x1fO\xc2\x8e8\xea\x19\x02\xddw\xbc\xabi\xb2|\xf3\xaa\x9d\xa2f\x16\xb2Z\xaeN\xbepTGU\xd4\xd1\xe4\x08\xa1\x91`P\xfa\xf3\xf0:\n\xe3\xb9Yy..\xda`d'\x94\x8b\xecjP\\3\xdbw\xa1\xcd\xa3K\xbe\x02\x9e\x91FC\x08\xa8\x97Y\xe7L\xaf\xd4\xb6vF\x16\xed\xa7\xb1\x98A5\xdd\\\x12bi\xde\x9f\xe8\xd7\xe6\x9f\xf4\xdf\xeb\xb6\xc0\xb4\xb9\xb5\x19\xd1\x9aU4(\xbd92\xec~&qa\x96\xd7\xb0\x81%M\xc4\x03w\x7f#\x98\xda\xdb[\xf9)\x89q\xc3:\xb2vA\xb3\x01p?U\xc5\x0d\x83\x83jI\x91\xd2U\x11\x87q\x84U\xa4\xde*Y\xd9\x8e\x83\xd8\x8a\xf6Y\x98U>y\x02+z\x96\xaa(E\x90\xac\x7fj\xb6%\xb8\xe3\xfa8\xe7$\x7f\x19%\x19\xc9rq\xc6\xbcN\x93%\xed\xf2\x18\xa6\xaeZ\xb4Y\xa6\x9d\xfc\x12\xf4\xfeT\x1b\x97^\x82 \xca\x0b\x99I\xba\x84\x13y\x18\xc2\x9c\xfb\x87\xd5\x81\xd8\xe8\x1c\xfd\x86vLt\xb2\xabsa=\xfb:\x91Z\xc6\x98\xcc\xd6\xce\x0e\xba\xf2T\xcf%7\xba\xf2Y\x07\xa7\xc3V\x98T\xdc\x11V\xf7\xa4\xaa\xfb#\xae\x13\xd4\x8f\xda\xd6\xce.\xb6\n'\xf5\xb7\x86v\x8e\xca@\xfcl\xc5\xe4b\xc5\xe01!\xf7\xdd\x08\x7f\xa9P\x1b\x84W) \xe8\x96\xadvl\xc3nD\x14\xe1KC!ub\xf9]\xafe\xd3\nf&L\xe7\xd1\xb2\xe9\xc9Y\x1b.\xdd/E\x14\x19\x8d\xa5\xf5<\xf8\x02\x9f\xaa\x04\xa4\xdc\xc5\xea\xb0\xac\xbeR\xce{\xe6\x1d9\x06k\xe4\xedy{\x96\xaeMM\xc0\xe6\xab+\x86\x01\xe8\xdf\x13q^~+);\xd0\x19\xe0N\xac/a<\xa5|}J\xb2$\xba!,\xf7Z\x9ca\xae)z#D\xc8\x1ff\xf4n\x95\x92i\x18\xf89a\x9f\xacR\x92\x91\x18\xcbq\xf3\xffs\x9e\xec\x8de}{\x1e\x85~F2\xeb\xb2I.O\xac,\xf0#?\xc5\xb2\xe4\xd7\x82\xc4\x01~\xb7\xf4W\xab0\x9e[\x97\x1d\x92\x11#y\xe5\x82__ \xe1\x8c\xe5\xb9\xc8\x85'\xac\xcc\xe1\xe6}\xc3\xb4\xd3Z\xb6x\xd8 \x0f\x9d\xc1?\xcc\xd0w\xb7b\x1bS\xfb\x87\xcf\xf1\x978\xb9\x8d\x81\xa9.\xc0\xfa\x81\x13\xa8?X\x10f\xb0$9%\x80\x90KD\x03oHf\xac\x0cae\xfe\xf6\xfc\xdd[\\\x04\xde\x0f\xcaju\\\xc8\x17a\xe6\xe5\xfe\x9c\xae8~G'\x0f7:\xfe\xe0\xf1\xed\xf9;>\xa1\xf8Z\xfc\xbe\xbf7\x8b\x96@b\xd3\x15\xb3\x07^c\xb9.\x98[Ky'\xd7\xda\xea*\xa1\xad\xb5Z`,\xbctu[\x1fO\xb9\xf4\x18f+\xef\xd4Q\xf35\xc9\xc7-\xee\xea\xa5\xe4\xc5\x8a\x05k\x0f\xeae\xe5\x85\x8c\xec\x1cs\x1e\x95\x9f\x96\x1f\xf8B\x9e%hB\x8c1 \xaf\xb7\xb8\xaf\x08'\x9e\x90\xcb\x9eK\x93^\xfe\xa4d\xc6LR\x9f\xc6\x82\xf2\x1d\x17\xf8\x92\x0e\xab%-\xd6\x95ii\xe3Rc\x0b\xbb\\\x82b\x81W\x165\xf4@\xea\\\xd9\xbdx\xf4\n\x85\x8dvG\x8em\xdd~\xc9\xd4\xf8j\x8c+\x1f\xee\x1b\xd8\xf2\x1d\xc7cR\xdd&s\xaeM\xdc+\x99\xe3\xda\xfd\xfc^\xf8\x02G\x91\xdb\xfd=\xd8\\\xf6\xe6\xd3\xd9\x0f\xc5C\x1f\xf5\xb0cH\x1c\xdbb\xfda\xc6`\x92\xb3\xd4\x83\xe3ey\x82\xa9\x92\xd3>\xb0\xd1#\xfd\\\x0e\x15_\x0f\xdc%\x80\x19\xda\xb1\xbd\xb7\x7f\xa8\x06\xacO\xf8\xab\xa7CG+7\x08\x8dC\xef\x1f\xa3\xde\x10\x9f\xfe\xe1O\xcd_\xe5\xbel\x13\x89\x0bmD\xdb\xc1\x00\x1c\x81\xab\xf6}\x15\x11\xa7\x17\x81)\xce\xf1\xa5\xf0\xae\xfa\xb0\xb3Y\x90\x08\x05S\xb0Gz\xa5,_\x96\xf1}\x88!\xe1\xcc\xef\xfd\x8e`*\xed1\xd8J:\xb5`bH%\xeb\x19\xc1\xbck\x98\xe3\xa6@\xd5u-\xef\x1a\xe3V\x18%[\xb0\xbcj\x94EbHW\x8e\xa4\x9e;G|\x9c\x06\xe6\xb5_`\xb7\x90\xa7\x16\xf3\xb5\x88\x0e\xa0_\xbe\xaf\xee\xa0t\x1b\xe8\x18\x9bIi\xc6\xb2\xf64c\xd0\xb3i\xe0\xcb+\x14(\xd67W\xa7\x1f\x9f\xf6\xa9\xe0\xa1\x1a/\x1f\xd8\xea\xd4\xd0\xcd:\x91\xb7\xd0\xe6\xfayN\x96\xab\x1c\xf2\x04\xa6\x84\x1d\xf5E\xca\xbc\xd9\x84\xbdni`\xa0*\x03\xaa\xcdl\xf7\xa2^%:u\xbf\x1d\xc9\x0f\xf7\xb5H~4\xfc\xbf\x16\xc9K\x07\xa0^\x1c=\xdc\xd3\x82d\xf7\xa9F\x1a\x1d\xdb\x0d!u\xc1\x1e\xab\xa9M\xfaz]\xa3\xf2\xc1\x05f\xbd\xb2\x02\x0c\xe0\x0d\x99\xf7Z\x8f\xaa\xa6e\x81\xbf\xe8\x0b,\xca\x02\xe7\xfa\x027e\x81\x8f\xfa\x02\xcb\xb2\xc0\x0b}\x81yY\xe0g}\x81;8\x81)\x9cB\"\x92.\xd1\x99\xe5\xd9\x97~7e\x11\xbb\xc6h&\xa5\xb6W_\xe8\x8a\xd7\x9c\xc2\x18\x16\xf4/\xcb\xecd\xa7\xbc\x95\xdf\x1f\x9c\xaa\n\x03\x9b\x8f\x9a\x9ei)\"\xca\x1d:1\x98\x9a|\x03\xf3\xe0^)\x11\x8a\xae&\x11\xd3\xb1\x14\xf6\x1d\xaa\x7f\xe8h(\xb1\x1d\xc0)\xbe\x841\xaa\x81\\\xb8c:!\xac[k\xbf\x85\xa5O\xb14\x8caI\xcb\xd1JB{\x86&yc\x98c\x07\xb0\x9a\x13\x98\xc1i\x07c\x00\x12\x83_\xd1\xb8z\x0b?\xf9B\x96n\x11f\xb5x\x1e]\xe2\xd3\x0c\xf3#\x83\xad\xea\xd6\xba\xbe\xa3W\xe0g\x04\x06\xe3\xcerP\xb7\x8f\xd1L\xa1za\xcd\xc3\xf5k\xb6u\xf8\\\xbd\xb0\xf2\xd1c*\xd7\xc60\x92\xaf\x0ea\xb1Z\x996W\x99\xb8\xccu\x95b)f5C\xe7\xdc\xad\x94\xa3\xfa\x1a5\xdau\x90\xc4\xa1\xd5\xfebr\xd9r\xc3\xea\x02\x88\xb3d\xd47\xca\x86\xa8N\x91\x19\xae\xfe\xd7\xfc\x0d\xaa5]\xc0of.\xfb\xcc\xb6\xef\xbc\x1b\x96\x14\x1b7^u\x87\xb8\xc4a[n\xe6r\x8c\xf4\x89~sM\xff\xdb\xb8\xa6\xaf\x9e<\x01\xdf\xbev\x01\xab5\xa7(\xc9\xbc\xd7\xcci;\xf3\xfe\x02'0\xa2?\xce\xe1\x04v\xe9\x8f\x8fp\x02\x87\xf4\xc7\x0bZf\x9f\xfe\xfa\x19N`\x07K}\x86\x13\xd8\xc7b\x9f\xe8\xdb\xd1\xa1[\x93\xb70Q\xfc\xbaR09\xeeT\x85=n\xc3x\x9a\xdc\xd2!\xb1_\xde;\x0c2q\x82ZL8\x15\xef\xc7\x86\xcf3\x12a\x10e\xfaW\xfd\x14\xdf\x8dAL\x84m\x89\xd9^\x84\x99\xe5\xc8\xa6_Zq\xdb\x9c\x8b\xdb\xe6\xdf(n\xeb\xe2\xbc\\~b\x8f\xf6\xd5\xd3\x16\x03\x81\xd1S\x9eE\xcaN\xeb\x9cT\xda\xceI\xa5\xa6e\xa1e\xa0\xda=\x1aPBEx`\xb0\xb0\x96\xd9(w\xb5\xc7\x7fT\x901h\xd4\x83\xa44r\x1ak9\x9b \x89g\xe1\xbch)q\x9b\x86\xb9x[\x1f\"\x86\xa0g\x07r\xec\xd6T\xb1\xd0=wfym \xd1\xd8\xde\xdb\xd9Q\xa6\xa8\x9a\x91Z\x7f\xf4M\xeavH\x8d\xfb\xd4\x8b7\xe3>\xfd\xff\xc6\xb5\xa7\x8e\xeb\x8f_z\xe52j\x17\x15\xd6\x94%\xc3#\xc8\xb5\x860\xb9\xde\x10\xe6F\xcd\xd4\xa0\xb5NoDr\xeb\xb0\xea+\x0dUx\x8072I/\xb9\xf7\x94\x89\xe3\x01\xbd\x89\x00=\xa8\xde\xef\xef\x0d\x06\x07\xec\xfd\xfe\xde\xde\xce\x1e]I\xfc\xd7\x13`\xf2&z\xb7\xaby.*\x1c\x94\x95\x1d\xb2\xe7\xc3a\x95]J\x14\x1a\xee\x96\xa5v\x86\xb5\xcf\x87\xa3\x83\xf2\xd5p\xef\xa9\x03<\xbf\xd63\x18\x0e\x87\xbb\xc3\xe1\xd0a\x97\x04\xd3&T4\xbe\xba!\xcf\x02\x87\x9d6\xa11\x8a\xfe\x18\xc06\xc1\xb6 l\x9d`\xf9}\x07\x9e=\x83\xa1\xca\xbe\x8b\x8b\"\xbf\xbd\xfd\x9d\xd1\x80~5\x1c\x8cv\x10&FM\xaf\xce\xac\xb6I\xf5k\xd1\x9a\xeeS\xad)\xf8\x0dw6\xdd~bO\xfc\xad\xdf\xfe\xe5\x92\xfe?\xd8zz\xf9\xfb\xd0\xdd\x19>8G\xdbs\xc5\xe0\x8dR\xc5\xdb\xff\xf9/\xb6}:\xfe:\xf1\xb7f\xbc\xf0\xe1\xc3\xfd\xa4\xfc\xe98\xdb\xcaW,\xe7\xec\xeep_+\xb4n7\xc5R\xc4\xa5|\x88\x89\x1d\xf0\x14\xcc\x01\xe3\xd0w\xf6PO\x92{\x01\x1f\xf1\xf3\xdc\x1e\xe0\xb2\x88Dx.F\xabc|\xab\xaf\xcc\x946\x9f\x0c/\xeb\xb9\xaf\xe0\x140\x80\xea\x9b8\xb7\xf3\xd2D\xcf\x85\xe1>\xa5h\x1a\xaf\x86\xf4\xd5\x00\xe3\xb4\x16v\x8cD\x8f\x01\xcc+\n\xb8\xc9\x93\xe3g\xd6\xe5v\x1d8S\xe9\xcd\xbc\xfe\xaai\x02B/\xeb\x895\x06\xeb\x89\xbf\\\x1diB#[\xc7\xf86\xca\xb5/\x9f\xe1\xcb\xb9\xf6\xe5\x0f\xd6\x0f\xf4\xe5\xafE\x92\x1f5b\xd15\xa7\xed\xc6\x88S\x16\xb2\x11\xb6\xac-\xe0V\xba=\x84x\x93K\x06a\x86\x1eK\x9a\xc1\x85\xe1:\xfa\xe0\xd6dVR2Lq\x0c\xe6z#c\xb4`\x149H\xf8W\x06\xe6\xbeKum\x0coH/2\x89/y\xe4\x1bm\x19]\x0c\x91\xfa<95Z\xdb\xc5l\xc0=\xd2\xe9q\xa0[\x1368\x8e@.y\x04\xf3V \x11\xff\xb4q<\nSW~\xbe5\xcd\xa9\xeb\xdd\\\xf8xN\xd3\x9fE\xcc\"\x1d\xbek\xcfgWJ\x1e\x84b\xd4\xfa\xe5\x17\xcb\x81c\x18p\xcd\x16)\xe3,\x86.X\x7f\x1eZ\x8e\n\x99\x9f\xfc(\x9c\x9e\xc5y\x98\xdf\xbddf(>}\x81x3\x99\x92\x8fI\x88j\xea\xc2e\x9ajZ\x17\x96\x0eI/A\xb4\xd4\xb5'\x86\x9ee\xae\x9c\x18\x08\xbb\xc5\x06\xff\xd7\x1c\x03\x84w\xb6\xb1\x12I\xd80\"\x83\xa8v\xea\xc2\x8d\x0e\x19\xb51Ak\xc9\xd8\xa5\xa0\xd6U\xe0\xcbS)\xc1;\x8c\xf5\xf2\x98\xae\x1e\x19E\xeb\x0dn\x8f1K\xfb\xeai\xcbD\xeb{\x87Z\xd1\xfa\x81Z \x13\xad\x0fGj-\x8f\x93\xad\xbb\x92\xf4\xdc ^_t\x89\xd7o\xba\xc4\xeb\xcb.\xf1\xfa\xbcK\xbc~\x07'L\xb6\x8d\x923.\xe3f\n\x13!A7\x8a\xbc\xcd\xa2\xf5\xc5\xba\xf2\xf8+8\x81kI\xd8G\xbf\xb9\xae \xff~\xd7\xa5Q\xaaD\xechY)\x89\xd8\xd1+\xd3f\x82v\x14\x91\xdfA]\xd0~\x87\x82\xf6S\xb8\x831\xc4\x0eJ\xd4\xe9\xb1\x8c\xc2\xa5\x00\x8fp!&G\xc9\xb9Q\xa0X\x98\x04\x8aw\x8c\xc4\xb8c\xe2@!2\xfc\xec\xb8\x80\xb2\xc2\x0d\x9ee,\xe4\x02\xc3\x15\x06\x08\x10\x02y\xf1\xd6\xbe\xe2\"G\xa301\xf5\x02\xa6\x9eJ\xdc\xffi\xc1\xa2Y\xf5\xa5*\xb3\xb8\xeak\xa0\xaa\xc4\xf8\x06Uw\"\xdd\xa0\xdb\x96J\x00\x15\x9a}hP=\xdc\xf0\xa8\x01\xdc\xcc&\xc4\x1c\"\xda\x85W``KtM0R\xdf<\xf22*\x95\xed\x82\x85\x11\x15~\xec?\x9c\xa0\xe1\x0coH\n\xba\xec\xbb%\xf9\xe4\xa0U\xcd\x0f\x0e\x8fF\xf6\xactu?\xde.}\"\x9e\x19\x03\xfe\xaegP\xa7\xf1X\x8b\x99\xea3\xb7\x0b\xc7\x85\xd4N\xbd\x8f\xb0 \xa9\xf7\x1a~\x84\xa4=\x02\x83\xe0o,\x0b&\xe4\xd2\xa6c0\x02)gF\x03\n\x05}\x7f\x0f9w\x88\xa3_K\xd9\xe0\xeb\xc3u0 #\xc6O\xae\xb15\xddG\x15\x8e\xba\xeaU\xdc\xc3\xfa$_\x84\x95\xd1\xfa\x83,on\x9a\x19\xd0\xfab:\x0c\xa3\xb4\x1aq\xd5\xc0\x05r\xe3G\x8em\xb1\xc7U\xf5F# \xcd\xb1Y\xc9\xdc\x11\x93\xb1[\x1d\xaf\xf6\x9d\xa4\x905Q\xe3S\xdd\xe6\xfc\xfe\xa2\xc6^\x9e\xb37\"\x19E\xa3\x01\x91xb\xacMT\xb1\x08\xb3SV\x160\xf1\xf0j\xb9\xd0\x84\xe7C\x91\xd89\xf6\xb2\x15 \xceIDh/2\xcd#\xbc\xfb\xb7,i\x15\xf7\x89\xa3\xcc\xf4\xad. \x8e\xb8x\xa7}\xbb\xa0\x0cmi \\\xd7\x1e\xd25\xa8XH\xff\xfe\x80\xb1lb\x9d\xa5\x80|}H\xc3\xb1\xc6\xdeF\\\x0f\x18\xd5\xd3\xd4l\xeeB\xd8\xf7x\x85j0\xe2\xd4\xb8\xf5\xd3\xd8\xb6p\x95\xde\xa6\xfejE\xd21\x04I\x11M\xe3\x1fr\x98\x13\x16\x17\xd4r\xdc\xa6\x9fa\xb3 \xad\x17\x99@dt{\x0c\xfe\xa1\x86\xf4\xcd\x86[\"\xe3\xf2\xcdGiZ\x7f\x15\xaa\x9bO0\xae\xcd\x944\xcc\xf9\xae\xbe\xc9v\xbc\x81g!\x8d\x9fW\x0c\xdan\x17\x13f\xe6\xfe\x0f\x9d.\xeeU\x1d\x15:\xc1\xa7h\xe3\xcf\x08\x91J\xde\x8eqCE\x02l?\xe6\"\xf7\x0d\xc3\x88\x1f-R\x1c\x1d\xa8RBLy\xd1\xe4\xd1d*\xa0\xa4\x06\x18\xda\x96\"\xb2\x887M\x8e*\xa5\xfcb\xd2\xcaQ\xea\xa1\xa7\x0f\xcf$\x8f\xa6\x1f\xaco\xfa\xc4V\x16\xae\xbdL\x03[\x03\x03\xed\xba\"\x0d[s\xa9tx?\xd6\xfc\xb2\xdb\xcc\x7f\xae\x8b\xf9E\x92D2\xb3\xd9\xab}I\x90\xac\xda\xa7\x0b\xab\x1bu1\x84\xdcv[uZ\xf2+k\x80\xfa\x99-\x9f\xb23\xa6\xf1\xdc\x95\xa2\xe6\xd4\x0b\xab\xd1s4\x87\x13\xba\xb4\xa3\xeb1\xda\xe8P\xb4\x8a\xe4Qj\xc7\x8ekN\xdb_\x1e\x0d\xa2\xdaZ\x89\x1a\xe1\xfe\xd0h\xcf\x9a\x93\xdcb\x91j\xe8\x9cg\xe2\xae\xb9I\xad\xe7A@\xb2\x8c\x9e\x7f\x18\xab\xb9X\xd19#S\xd36\xb5\x90d\xe1u3\x86\x8c\x99\x87\x95\x0e)kn\xe4~Vb\x0dw\x84\xb5\xac\xc4\x1e\xd7\xa4\xbab\xbe\xa5\xc9N\xb7a\x83\xcb\x81\xce\x88,\xb6w\xf6v\xb5\x8a\x91}Uz[\xf0\xe2\xaa\xe7\x02J\x9f\xecCu\xafD\xac\xd1]u\xe4L\xf1\xaf\x96\x9ei\\\xadV\x18\xb0\xb3\x0eS\xb4L\x9b\x93\xfcc\x92Dd\xaa\xe6\x87Xh\xe4\x1a7%2)\x1f\x97'\xeb\xb2\xc1\x1d\x9cy\x98\xde\xea\x13 \x928\x08#r\x91\xfaq\xe6\xb3\xd2O\x9e\xc0\x0d0'\xff\xe1h\xc72YOP\xeem\xa2l\xdb8\xccY6\xcfq;\xe3\xc5<]\xc34\xbf+i\xdb\x8ce\x18\xc3\xbc\x18\xecX\xae}\xa5\x88\xa54\x82\xabu\x1a\xd98\xa9\x9a\x81S\xb0g(\xb5\x0d\x08%\x19\xcd\x9f9.\xdc\xdaH\xfe\x95\xdf\x9e\x18\xc3\xb0?\xa8t\xe6z\xc0 \xfc(\xba\xf6\x83/\xff\xbb \x05\xf1R\x92\x91\\\x11{<\x16\"\xf5\x9a\xe3$\x0fgw\xcf\xa3H\xad\xbd\x1a\xc8\xa5nI\xdd5\xe3\xff1\x1f\xe7j\x98\xd2\x9a\xb2\x9d6\xb8\xf2\x95\xebj\xfa\xd7\xd8\x07\xa2\x19\xcd\xba=i[\xd5R%\x1b\x83v\xdb\xa8\xeb6\xe35\xe2]-\x93\"\xce1\x15\x06lA.\xdf\xb7V{\xd5F\xdej\xe1\xa2\x88G\xeb\xab\x96\xc5\xfe\x18\x8ev-\xc4\x9c\xe2\xb9C\x7ffI\x9a\xdb\xd7\x8e\x0b\xab\xcd\xcdz%Ud\xba*\xaca\xce\xa3\x1a6\xd7\x0b\x17tR\x04:\x9b\xc4\x06\x0fQ\x1f\xe7\xe8jE\xe2i\x18\xcf_\xf2\xd9\xcb\x9a\x0c\x1c\xba\x156\x0b\x96\xb3_xQ2\xbfHVo\xc9\x0d\x89>a\x88'c\xa0\xa3\x1b\x1e\xbd\xd6\x90\x9e(\xf4\xae\x82\"MI\x9cs\xc6\x0c\xf3\x89c\x9e\x03?\xc8E\x1b?3\x16\x0b\x8f\xe4\x88\x8d\xa2\x11g\xcba\n\x03\x8be\x03,VS?',\xb8WD\x97\xd4{\x7fI\xe8\xaa\x14\x0c\\\x1e.\x89\x9dt\x19\xab\x00\x87F\xe6\xadH:K\xd2\xe5g\xac\xf7\xcd\xec=\xa1\x84\x85\x9f\xde\xd9\xa1\x8bF\x0d\xcd\x85\xcct\xa7 *n\xa5F\xcf\xe2)\x8b\x0c\xae\xe7>{D\xbe#\nf \xf1\xaf\xf4\xaf\xedO\x82K\x97\xef\xc2\xe2:\n\x03\x11\xb8\xc6V}>\xfe\xd4\xfc\x95\xd8\xb2\xdf\x19D*R\x9c\x93\\\x1a\x1b\x9f\x90\xac\x03\x8d\xf1\xad8oC\x87\xc2-4I\xfb\xe0\xc4v\xb4\x14z)\x89\x88\x9f\x11\xbb\x89\xa0\x1c\x03\xd6b_\xb6!\xa4Z\x9d\xba\x99\xee@v]\xa1\x86\xf8\xd2\xea&\xb6\xa1\x02i$\x16$\xcf\xd1\x89>M\xc6N\x88\xc2-E\\\xd0\x93\xe2\xd5R\xa1k\xd6\xf3\xa7S\x8a\x9c\xc3x~\x91\xd8w\x8a8\xef\xb6M\xcc\xc9\xa3\x0b\x95h\xf1\xfe\x1e\x16\xc6(Y\xb3\x0e\xb7:\xa1\x88\xbb\x93\x8f\x1c=\x86!b\xf0\xf6\x95HKO\xd7\xc2]9\xad\xba\xd4v\xdaN\x19{\xc3\xa8<}\xf3\xe2\xe4\xd0\x04\xb5\x03-\xfd\x08\xb9|\xd4\xd7\xd6tWG\x8d\x82\xa4\xb3\x06/`\\\xed,2V}\x81^Sn\x8cL\x19\xee\xcb\x9a\xeb\xb4\xcc\x17\xd3\xb2`\x97t,7^\xbd\xaaf\x05m\xfb\x84\xe3\xb9\xcf\x1c\xb5\x97\xe75\xd1\xdbP\xf2\x16\xc3\xec\x05m3\x8c\xe7\xbcQFFb\xa0\x81\x9c\x0b\xe8PZ\xe0]\xb1C\x03\x8b\xbfGm\x08\x17Ji^\x9c`N\xbc!\xd2\x98\xdaQ\xb5\x8ed\x16\x15\xd9\xe2\x85\x02\xd5[\x85\x19\x8a)G\xceT\xca\xcd\xe5\x88/\xf5\xf3g\x16\xb1\x88\x8b\x94L\xc3\xbe\xe5\xb4\xe2>\xbd\xb6\xb0I^\xb0\xfe\x08@\x9f\xe7\xa9\x9f\x93\xf9\xddz}9\xa0}\xd1gOQ\x00\\\x92T\x87\xf8\xc95\xdd:\xbe\xf2Es\xda\xc5GO\xe9G7\xfa\x91\xb5M\x9a\x9f\xf9\xab\x1e\xa9T\x03[\xb3\xe6\\N\x97\xf0[\x8f\xd5\xf5\xd2\x8f\x7f\xc8\xc5\xb2\x06?\xc6&@\x1cP\x10\xc6\xe0c\xe8E\xf25\x87\xdb\x05II\xc1\x87\xe2c\x08\x85\x1c\xaeI\x18\xcf\xc5\xf6\xf4\xe8\xb8\xa6%5\x80\xfds\x19n2\xb2>z\x81\xd6\x19>]C\xce\xb0\x11\xdb{C\xc7l\xb4\xc3q\xc0\x01\x9d!\xbd*\xe9\xf7\x07\x17,\xbf\xa1B\x02FytP\x06r\x13]s\xeaxU\x9c\x8c\x87G\xa84\xc5\xd3.O9\xcc~@\xc1\xf2T\x17\x1f\x07_\x8d\x86\xea\xab\xd0\x14h\xa2\xd4b\xa0\xcd_\x861!\xe4\xf7\xa5\xf6\xa4\xd3[^\xc8tUSWz=@\xd7\x8e\x95\xf5\x0b\xdd\x1d%U|\xaf$\xe5Q\xcf\xe4\xd7,\xe2i\xa9\xa0\xa9\xcc*O\xab1\x8e\x0d]]\xcf\x83\xe8\xbb*D\xc4/\xd9;\xb1\x1b\x18\xd2\xac\x9d@hW\xfa\xae\xd6)\xe3\xfd\x97\xc3JR\xe8H\x86\x00c\xd4\x03U\xddk\x9d\xc3\x7f\xc4\xfc\xad\xd1\xf7\xc7oG\xb3\xd4\x93\xb3\x97J\xc4O}S&\xfc\xd6 \xd0\x9a^Bgx\xfe=\xc6( T\x0d\x86\xe6\xaa\x84\x94\x0bTu\xf2T;\xb6\x9f:.L\xaci\x98\xad\xe8\x01\xf2\x12=\xa9-\x17\xac\xab\xdcOylVz\x1b\xfbyx\xc3\xfc+1\x96c\xf6\x8a\xcd\xf7\xc7\x94\xd0gd\xca\x9eRT\xee\xcf\xd1\x08\xee\xa5\xa94B\x1f\xca\xdd%j\xd8p\xdf\x18K\xdb\x10\x1d\xad4\xfb\xd3ft\x03\\\xd4\xa7\xd8i\x96\x01\x8e{\xe3Y\x0c\x00\xec`\xf0y \x8f=D\xc5\xecX\xfa&\x9e\xf8\x9a\xdc!\x0d\xe8\x08Y\x1d\xe6B\xf5\xd4Y\x87S\xdd\xc31l\xb08\x8e1\xb7\xde\xfb\xa9i\xbc(i\x84\xbd&\"\x80\x13\xa0\xdcU\xd8\xb0\x9aR\xf6\x1bZY\x89\xc8\x9d\x1a\xc4\x81<\xb1\xbe\xfc\x9f\x9acN\xedL\x96\\\xd5\xa7l\xc5\xfa\xf6J\x9c\xea=$L\xcdAmh&\\H \xd4\xd5\xda,\xc9t\xd5\xc4\xabw\x05}\xa1\xea\x8fl\x87\xd9\xf8a\x88\xcc:7#M\x08\xafM~r\x02h\xadf\x9e\x95\xc6\x8c\xb4r\xa7Y\x9e\xac\xa4I\xe9\x00\xda\xfa\x80P\xeaGH(\xcfZ@\xc1\xb0\xea\x0bD\xbd\xbc\xc2\xda\xa3\x13\xa6\x80\xee\xbd\xb8:\xc1\xb1\"i\x86\x99\xc4\xbb\xd7N\x98}d\x85\x19\xdaj\xb4\xd3\xd6\x8c\xfc\xadv\xbf\xd4J\xf7\x96\x9a\xd6\xa6\xa7\x07\xae\x84z\x0c\x0d\x96\xd1\x0c\xf1\x0f\xd3\x84k\xa3\xd3\xeb\x94\x15\x95\xd0\x9aebB\x146\x89//\xb5\x12\xd1j_;.dU\xe7\x98kc\xe6\xf9\xc5|I\xe2\xfce\xe4g\xbd\x1dNd\xb8\xa8\xbe'5\x1f.\x84\x8d!b\xda\x0d\x8fn\x10\x93[\xf5\x18J\x99\xec\xbf\xfc\xd0\xa9\xdda\"\x16\xf9A\x9d\x98\x06\x8c\xa6.\x8f3E&\x18\xfbR>f<\x9e\x8b\x98\xa4\x19\x908H\xa6a<\xafgD\xc8\x17$\xc6\x8d\x87\xc9\xd2\xca\xc3\x0fD\xe0\x17\x1fx\x03\x06e\xb88c\xb9\xc1@/\xd57\xffF\x18\x19\x18\xcc\x04\xf4S\x13\xb5\x88\x85\xc0\x0cCC\x8c\x9b\x1f\x84}n}\xdc<\x9b\xa6\x0f\xac\xa2\x16gp\xbd\x03\x1d\xae\xdb\x17\x0c\xdb=y\x82LO\xb9\x1e\xe4w\xcdC\xbe\x85P\xc3\xd0>\xde\xf5]N\xde\xf2l\xdd1FWA\xcf\xf3\xea1\x1cWv\xcb\xeaV\xfd!\x99\xcd2\x92\xff@\x97@R\xe4\x90\xcc\xe0:)\xe2if\x9a]\xb5MZ9l\x82\x8d\xb6\xfd\x03\xc7\xd8\x0e\xdbs\xfd\xdb\xc9\xeb\x99\xd1\x99!juO!\xd5@\nuE\x80\xae\x08n\xe0\xb1\xee1\x05\xb3\xbe'\xad\x88)oCD\xb4\x00\xcf|\xd8\xbaU4J\xe2\xda\xec\x8f\xf5\xde,\xdd\x04\xa1\xb84\x9f#@\xcb\xe8\x0e\xf7\xf7\xcc\xed\xde*\xf2\xd9a\xdb\xd4od^\x98\x9dq\xbca\xc7\x8ei\x13 \xd4bIh\x83\x1d\n\xac+%\xee\xd1\xed$\x90\xce\xd3\x01\xdc\xc3\x82M\x9c\xde\xe2\x10\xf8\xe1\x8a\xd3\x81\xc7V\xea8\xdem\x1a\xe63/HX\xa7\xdcL\x8d\xe1\x98\x11\x91\x84rZ$\xb9)\x1bUJi\x08\xfag\xf3\x04\x86t`\x18\xbax\xb4\xb7\x07O \x9f\xa4\x1a=\xd7Z#\xd4$^\x85r\xdd<;\xa1\xbc\x95\x89jy^e\x96\xf1#\x0c\xbfB\xf8\xce\x82\xc8O\xe7\x842\xa8~\x0cK\xffk\xb8,\x96\x90\xa1;\xc7\xe0+\xe5\xb3}9\xcd\xf5p\xdfAWNJ6i)\x9e\x12a\xdf\xf7\x1c\xd4\xa2u%J'\x8b\x9c;JH\xcb\xf5\xdb\xb4\x0f\x92\xd6\xdasHe\xbc0\xfb)$,\xd0H\xf31\x9d\x88\xfb{ \x06\x14/\xf7\xb4\"0\x9b\xbd\xd5\xb8\xd6W\x8c\x9e\xa5\x13r\x80\xb4\x9c\xdb\xa1\xc0\xa9\xcd\xb2'\x9a\xedU[\xbe\x1b\xc3\xa3#\xa7\x14\x0d\x1bOB\x14\x88Z~\x16\x84\xa1\xa5\x17\x8b\xb2\x12\x91\x9f\x87\xf1\xb0\xb5\xc8u\x18\xfb\xe9\x9d\xa1\x08H\x12(\xfdq\xc2*A2\xaf\xad\x95\"\x9fm\xb5\x96`\x84vg/^\xdb\xc41\x02\x1c\xaa\xe6\x82l\xd4\xde\x9f \xdb\xea(\x91\xcf\x86\xfb\x11\xe9*\xb3\xd5R\x08\xaa~\x8f\xe0\xc7v\x08.\xc8\xd7\xeeZbx\xf6\xec\x19\x18\xac\xb6\xf9t\xfa\x19\xd9\xdf\xed\xae\xea\xb7.@\n\xa32cE\xa8\xedpzO\x0cp&\xcc\xc6\x1d\x95;\xf5\xe8f.\xcf\x8f\xd6\xf8T\x95\xbe\xeb\xd1\xd7M\x1b\xc7\"\xf6\x16\xd1F\xc6\xe7riz\xfc\xb9\xe2\x10L{5\xba\x94\x98*\x83\xc6\xa1B\x01\xa4\xa4\x189\xc0\xb64\xd3h\x10\xb7\xc4\x94;L\x99\xf0\x1cOn\xe49\xe1\x99,\x91;\xc575\x11\x1d=\xdd\xb7\xca'\x87 b\xa1I\xcf\x1cV\xe1f\xecB\x98\xbd\xf7\xdf\xdb\xb1S\x16K\xf8\xe1\\\xca\xb7\xb6`\xe8\x08\x91\x80(T\xbe\xdcDZ?\xa6\x07 \xe9p\x84@\xcb\x95V8\x00\x8f\xfe$7\xdd\\\x19@\xa2\x8c`m1\xa3\xd7\xcc\xcdm\xf4k\xafk\xf9A\x8bH\x8c\xd9\xdd#\xcf>K\x93%\xe5\x15S\x07\x15\xc35\xae\xac\xc6J\xe5\x15\xfb\xb45\x841\xcc\x95\x15eX!Z\xe1\x13\xaf8\x87'H\xeb\xb8\x069\x83\xe9\xd0\xad\xc4\x17\x92\xf6\x97\xc7\xd9\xc5\x08\xa4\xa7\xadE*\xf5\x04\xe7Z\xb5\x85#?\xcb\xdf\x18>\xc0\xb1O\xf2\xcb\xb6\xd1ky\x97\x1b?* {\xc1\xae0\x08Q\xce\x843Z\xfd\xe8q\x15\xfe\x06d\x12\xb2\xf0l\x86\xd8o\x85\xb4p\xf5%2\x89\n\xd6O\xb1\x14\\\x95\x89\x14\xd8\x89\xc6\xf8\xef\xb4\x8a\xc6\x99*h\x14\xe9!~\xb8q\xa1\x15>\xe0gY\xfd\xd1\x96\xf4\xcc(/@\xb2\xb6\xa2\xd8GL\x18X\xddw\xee+\x9fEO-`\x9bEQ\xe5\x7fc\xfc\xab\xd9o\x8dG\x8a`\xd6\xd4Q\xde\x8dai\x92FX\x00{\xe2\xa5\xc4\x9f~~\x13\xe7\xc3\xfd\x17gv\x0e?\xea\xdc\x18\xf5\xfb\xdc\xa8E\x16\xce\x8e\xa6A#M\x87j\x98#\x08\xe1\x18\x8a#\x0877\xf5L\x19\xf0\xc6px\xa1\x83\xfdG\xad4OQ\x1cp<\x1c\xc2\x16\x04\xadr\x1dQS\xf9!]9\xb4\x9b\xa1\xe3\xb2\xcfa\x93\x03(+\xe7-\xa0\x001V\xc9\x91\xec\x16K\"\xc1j\x0ca\xeb\x84\xf7\xc6\xe5P0 g3lb\xd8\x84\x0c\x9eAQ\x9e$\x05lA\xe60\x7f`\x84\xda3d\xe6\xc2\xad\xad\xb6!\x97\xc4\xf3\x8c\x07\x0b\\1\x1ep\x05\xc7\x90\x1d\xc1\xaa\x0d\xe8P\x03[{>\x1cCz\x04\x9b\x9b~\x1b\xfa\xa0\xc7\x84\x9c\xf7\xa2\xb8\xce\xf2\xd4\xa6|\x82\xef\x02O\x8d\xa1_X8H\xa4\xd6\x8a\x8a\xa0\xf0\xf5e\xc9\x84\xee4f\xba\xdb\x03\xe9\x89\xcaz-\x9a\xeb\x8eE\xc3+{a\xbf\xa6\x1bJ^\x16\x0e\xaa\xe4\x9a&@\xa6\x96\xae\xfa\xb6d6\x18(\xeb\x94smM.]Y\x14V\xb2\xf2L\"\x963\x87K&8\"r\x02\x94\xb8C\xa2\xafK\xa8\x98\xaf;\xe8\xdb~\x83\xae\xc1\xa6W\xc5g\xfd*~a\xff\xb6~\xa7\xbf\xf6\xad\xbb\x97V\xa3\x92W\x96\xde\xb6|\xd6\xa4\xadF\xa4\xa0\x15\x1b\xb6\x9d\xd3\xd3i\x84i!\x1c\xbe \x19+!\xcd\x9f\xcf\xf9M\xcaO\xc3!\x8f\xdaL\xd1\xc6\xde\xbe\x0b!\x9b\xf6\xc4)\x7f\x9a4yF\x94\xfc\xf0\xad\x0b\xfe\xbc\x8d\x9f\xad\xb3\x10t\xd8q\x8d\xc5\x84SH\x91\x07yq\x97\x13\x91\xf1\x9dbU\xf5!WQ\xe5u\x9b\xae\xb6~\xbdl\xeb\x17\x05\xf3;?_x\xcb0.i\xc6\x1e\"[:\x9f\xe8\x1aq\x04 \x8an\xdb\xd0&\xa5\xbd]\xb4\xafu1F\x07\x99$-\xc9\xe5\x03\x11,\xc1X\x82\x9e\xe0\x11e\xa5w\x9e\xc2)\xec\xc2\x98\xdd\x8dv\xe0\x14v\xf8\xdd\xf0\xe9\x10Na\x04c\x93\xe8\x05iE\xd8\x84\x19\x1c\xa3\xb0O\xc8\xeffm4D\x9f\x04\xb8\x11\x1c\xc3ptX\x12rQ\x8b^ \x04\x9da.\xd2'-.m\x8er\x19\xc3\xa7#x\xc2\x88X2\xa1\x83\x1b^:L8@\xd9\x17{g\x08O r\xe0\xf8\x18\xf6\xe1\x1e\xf6w\xe0 %^\x9f\x89\x0cb\xd8\xdd\xec;t\xd7`\xf6).\xb9\x7f<3>\xde\x8d.]e(!\xf6\xbe\xfe\xcc\x97F4\xdc+G4\x1c\xc1=\xd8bL\xf2\x10}:\xc4\xd1`\xf7\x80\x7fw\xcc\x13\x96\xdd\xdf#9+%x\xfb^\xe3\xdf}\xfc\xf8\x8b\xf2ng\x0dh\xd4\x9f\x15\x06\x08\x1d*\x10\x92@\xe6\xd7AV8\"\xef\x1b\xad\x89\x82\x8c\xa5\x92\x1bI`\xd2\x0eQO\x12\x97\xc6X\x94/\xc2\xcfi\xdd;.\xee\xe4!\xc5s\x81\xdc\x9e\x1d\x94i\xe4\\H\x19>\x0f\x98\x18u\x00O\x00\xf3\xc5\xdd\xb3I\xe4\xdc\x0c\xcb%w\x0f<\x95\x1cer\xc4w\x18\x1bg\xf3\x04fM\x8co\xc2\xd2\xdd\x14\xc9M\x19\xa7\xa9M|\x8a\x8aq\x8a^\xbe\x94$\x9f&\x1d\x1d\xb71>\xe7b\x10\x9d\xde\x02$\xdd\x85\xa5\xc9V&\xaeT\xaf\x0c\x04(\xc3\xa2\xa4\xa8=\xa4\xc7\xeb\xe6I\x9f\xce\xf0\xe3&u\x99j\xeeK\x07\x11\x157\x81l7\x8eO\xf9.\xf7\xb8b\xe9\x84\x1e\x0e\xb9w\x1e%\xb7\xe5\x93\xf6y\xd8$U\x84N\x82\x12V\x0dC\xc0\xba\x95y\xa8\xba\xb37\x1b\x1e8\x90{o\xde\x9f\x7f<{yq\xf5\xee\xf9\xffw\xf5\xe2o\x17g\xe7t=\x0dL\xb2\xb8\x139\x89\x0e1\x98\x05\xe9\x9fwy\xf6\x18\x83\xdf\x0b\xdf\x1a\xc5di\xd8a\xa2R\xb3J2\x9fie)\xbd\x00\xb0\xe5\x18N\x92\x1e\x01\x13\xc4\xc5{\xb5\xdb\x94\x1f\x89K\x8f;\x1e\\\xd8\x1dqZi\x96$\xb6c\x14\x87\x12\xca\x901K\xd3'O\x84'x\xf9\xcc\x1eb\xc2\xbcJ\xa9\xd8\\\xaa\x9d\xd9\x0d\xf8\x1864\xb2\x93\xfa\xbab\xf1u\xbe\xbc\xf3\xbf\x96\x91\xa3|\x1b\x05\xcb\xab$\x89\xce\xc3\xdf\xe8t\x1e\x0e\x9fb\xf2\xa1+\xeea\xd3\xb9\xe2\xb5\x13[sJT=\xbf\xb8`\xbb\x87\x1f\x8cT\x7fd\xf3\xf0EZ\x0b\xcc\x16!\xb5\xec Y\xeb\xa3v]\xd1\x91k\xcb\xb8\x06\xfb\xc9st\xf5\xa7\x0d\xb1_\x18\x1cJ+!\x13\xdetY\xa9Xa_hmM\x98\xe1K\xdd\xd5\xad\xcd\xccAV\xec16\x08\x02ZGc\xdf\xd43\xd0\xc9\xb5\xd5\\j\xb5\xd0B\x0c\x933\x0c\xd2\"\xd5\xa5\xbc\x07\x99\xc4\x97FvK\xc8\xa5j\xc7\x83\xad\xcb\xb3\x0f\xdcV\xdc\x84\xee\xcc\xbd0\x13\xe7>7F1\xb3\x812\n\xf7\xff\xa0\xf9\xa3\x97\xcf\x8c\xb9Q\x13\xce\x19_\xe1 \xdf\xb1\x16\xa1Z\xb7is\x91J\xce\x1e'\xb0p\xa1F\xe9I\xc7\xe7\xc6\xa0\xfe.\xbb\xf5W\xc3\xfd\xb6x\x9d\xa0\x06\x0fh\xd3\x13\x11\xad\x9eH6\xd7\xe4=\xc9(\x89]\x99\x0e/\x8b(\x0fW\x11\xa1\x10\x1c\xeeo]\x87\xb9\xf6X\xac)\x1a\x06Gh\xbeK\x8e\xd8\xf2\x1b9p#\xe2\x9f\xba\x98\xb4R\xc7\x7f e\x82\x1cB\x04\x04\x10\xeb`\xd9\x19}W\xb0\xec~#XvF\x8f\x02\xcbn\x03,;\x8e[=\xa2`b\x7ftZ\xb85\xa0\xb5\xbf\xfb]\xa1u\xf8\x8d\xd0\xda\xdf}\x14\xb4\x0e\x1b\xd0:\xd0Ck_y\x9d\xe8\xda\xf9\x83F0\xcc\xe6LX}a\xfc\x16x&\x8f\xa7\xf2(\xb1\xfa\xd5\x8b~S\xb1Z\x890\x90\x90\x1f\xa2\x19\x1e.\xba>M\xa0\xd9(\x96>>\xa1\xbd\xe5w\x9d\x1f\xe3\xeac \xa4\x89\xe4\xcc%\x19(\x1b\xa5\x1b\xd0\x83\xee\x14\x17\xef\xc5\xc7j1\x9b\x9c\xac\xa0\x0f\xb5\n\xbd(Vq\xf1\xc6_\xae\xd3x\x1b\x9d+.^\xef\xf3u\xeam\xa5\x8e\xa1\x1f\x85,.\xde\xfe\x87u\xda\xef\xb4\x1d\x86\xaa\xe2\xf3u*n\xa1\xc6\xa1\x17E\x0e=\xa9rX\x872\x87j4\x17\xfdF\xd3I\xac\x03\x94v\xd1Z\xc6\xfa3\x8b\x0eUz+\x8e\xb51\x14\xd4\x8b0w\xc4M\xb0\xac\xbef\xd3\xa0\xa5\xc9\x1eD\x0c\x12\x1c\xac)\x0cI\x1d\xa9\x93_\x0b?j\x8f\x1f\x01ZiC\x87lA:\x0c\x85\x8df\xeb\xc1\xc3\xcf\x80\xfb{\x8e,KY\x88\xde/\\\x19E\x18g+L+\xd6\xefd2)F\x98\xffRC\xca\xdf\xdaqq>=\xe3f\xd3%]Q\xba\xf3 \x8e\xe4\xfe\x92\xde\xd2\xcf\x83\x85\xbd\xed\xfd>z\xd8\x9e;\xde\xdf\x930\xb6-\xb0Dx\xb0\xb22\x9e\xec\x89\xa5P\xf7<\x0f,\xc7q\xc1:\xe6\xf4\x06\xae+]6\xf4:\\\x0c\xf2\xa4N\xa3\xf6\xef?\xd5*\x8fW;YU\xcfmf{\x8e\xda\x11\x0e\x90\xb1Z.-\xed\xb6\x94\x17\xcc\xd6,i\x9c\xa8\xb9\xf0u\xa7'pY\xef\xfd=\np\x06,\xd5\x9cr4\xeb)>\xee\x8f\x9e\xd2G\x80\xf6\xd1\xa6\xf1\xa6\xf0\x8c\xf7'\xa7\xbfZ\xdd\x84\xaa\xf2\x9d.\x04Je\xe6RH\x07\xb8\x10\x97\xbf\xd2\xf2WR\xfe\xaa6_/\xf1^\x88\xae\x03[t\xf5`\x0e,\xd8\xa2\xcb\xa9\x90%z\xa1\x0b\xbe\xc3\xcc7\x10\x9c\xa5^0\xe1*\xd8\x9ae\n\xd3\xec\x0e\x8e`\xc6\x0ci77gf `4\x991 `0\x99\xb5J\x00i7ia\xd6KZ\xda\x8c\x83\x1f!\x01\x0c\xe1\x18\x8d\x90Q\x02\xe8\xc31\x84f \xa0\x8c\xa5\x82\xa8\x98\x92>\xb1\xc6\xa4\xb6\xb8q.\x82\x92\x9b\xe3\xdbf z\xd3\xba\x7f\xad\xc6\x96\xf5\x90\x1a\x98:\xaf\xad\x11\xc9\xe4\xff[\x1b\x1a\xb66\x84\x1e\xfaz\x0cf=\xbdp\xdf\xd4E\x10\x86\x1cm}\xa5\x10?X\xac\x0f\xda0@\\X\"\xe2\x87\x984\xd99\xba\xa8\xf1\xe5\x1f\x1a\x03\x03\xa9\x91\xfe\xd4\xd8t\xa6\xeacz&IB\x07s\x1c\xcc)\xf9\n\xb2x\xa1'D\xff\xde\xc1\x0c\xe5\xa5O\x7f\xce\xed\xa9\xf7p\xc2\xf5z\xc9\xda\xeeU\xadud\xaf\x17\x17Fu\xc3\x1d\xee\x8e\x96\\\x02\xea!\x9e`P\x9e\xe3c8\x84\x1f)\xfd{\n \x8ca\x08[\x908\x0e\xdahk^\xf4\x1a\xf0\xfb\xb5\x06\xbc;z\xba\xfbt\xff`\xf4\xf4;\x8dz\xd7<\xea\xbc9\xac\x1d\x1c\x16\x03F\xaf\xc1}\xea\xbd?\xbeea\x99\x96j\x0b>y\xf4\xfa|U\x1bQ[J\xc6\x90\xeeB\x04\xc0\xc0e\xa0v!\xe1<\xae\\\xc7h\x87\xbd\xa3\x10\xd8\xed\xd5\x87\xb7\x8f\xee\xc3\xa1\xa1\x0f{#\xf6\x8e\xf6\xe1P\xe9\x83|\x97\xa9t]\x1f\xfb\x1d\xe1\x15\xd7OI}\x02\xff\xfd\xdf\xc4U\x83`\xe6p\x8a\xa9Z\xfe\xfb\xbfs\x97\x9d\x14,\x0c\xe5&=\xb5\xcb\x1dBD\xc4\x11B\x0f\xf6\xf2Q\xeaT!\xc9\xec\\\xf9&\x17\xdf\xe4\xe57\xb9\xf4\x0d)\x9f\x10\xc7`\x03\xecT:\xcf\xd2\xea\x1aaa\x0c\x90\xb9\x96\xfc\xa4\xa4\xc0`K\x8d\xcb/\xae\xb8\x0c\xf3\x9b\x08q\x86\x81\xbb\xa81\xe7\x9cNH8\x19\x13S\"\x80\x0d\x04)\x00\xd2\x95\n\x07\xaa\x85V\xf7\x80P\xd8\x0f\x11\xd5\xe0\xedYO\xb9\x1a\xe1\x92\x19!\xb8A\xaaM\x90\x13\xb2|\xa3\x05\xf7\x89\xe56!\xdcgoX\x12G\x9b\x9bt\xd89\x17\xae\xffxB\xe9\x1e\xe7\x88\x13\xb5\xec\x1b\xd8\x84\xf0\x12~\xd4\xb9v\xebIY\xfd\x88_\xfccF\x0c\x9b\xb0\xb5\x95\x8bq\x1f\xe1\xd2\x1et\x0c\x97~\xf0\xed\x03>\xec\x83\x10\x84\xc6\xa9\x1c\xe3\xd0U\x15\x1cl\xe2\xfa\xb48\xdco.\xab^\x8d\x8e\x0c\x8drK\x0f\x04\xca\xf0\x12\xcf\xfc~\xfdhN\xf6\xb7\xf5\x03\xa9\x8dZg\xfa\xf4cg\xf4Hx\xec\xaa\xfd\xb0\xcd\x00\x91\x1f\x8d\xf0\x11\x8b\xf37\xdc?88\x18\x0d)\x17Q\xbe\xdf\xe9\xd9\xedG\x82\xaf\xd1\xedF\x1f(gc+#\x18\xee7\x87P\x1b\xd5\xcee\xab\x08\x9fv\xfb\xff:\x8c\x06\xcfN\xf8\xe7\xc3\xd1\xa1\xc3E\xe1[\x9cv\\%\xb76\xa5\x12(X\x1d\xc7\xedF\x07\xff\x10\xf4W\x03\x8c\x84\xdb\xd2\xcb#$/\x9bX0T\xb0`\xda\x0e\xa4P\x03\xa4\xd0\x08\xa4\xb0\x07\x90\xbe\x13\xcaD\xdf\xebr\xc5\xa3:\xefG\xc0\x88\x10[\xd2>@\xaf\xd3\x9e\xd8u\x0d\xe4j\xc4fM8\xde\x88\xd8\xaaF\xe4b\x84\xfd\xce\xe8`\x9f\x0e2\x86S\xc6\x08\x0d\x86\x07\xfb\x03\xb8\x87\x18\xc6\xdd\x14\xc8\x1a8\xfa\xd1\xc3a\x83\xb8\xaf\xa1\xf0?n8\xdf\x0f\xd5\xaf\x87\xe9\xebx\x92>\x1b\xed\xf6\xean?\xe8\xf7\xef.\xb6\xdc\xect\x0f\xe4\xde\xd5\xdd\xd7Q\xe2k\xb0\xfb\xe3\xba\x9b`\x95\x95\xa2ac \xb8\xbe^\xdd\xf8^Pktc\xd8\xb7\x1b\xaf\x92\xe2:\"\x8f\x04\xc7ag?\x06\x82\x01\xed\xd7\x8fG\xc2\xa3\xbb\x1f\xc3>\xfd@\xe6\xd9\xc8\xcd\x18\x848\xc8\x86n\x92\xda\x01\xc7\xacXPm\xfbF5 P\x0f\x93\xd8\x81-\x8a\xf2M\x8e(\x899\xc6_\xd8\xe2\xf4\x81\x1b\"\xafBN\x13AI\xc4\x8dc\x92\x15eD\xc4 \x10\xd8\x86\x84\xc9\x81\x8c\xe8\x8d\x16n\xc5b%$\xb5d\xc2?\x10\x921\x161BSc\xa4$AS\x88\xcfJ\x88nm%\x18 \x8e\x93\n\x1a\x90&\x02\xa4\xe1w\x03i\x83\xa8h\xb7`\xd1\x00U\x85%E\x16{{.\xeaQ\x8c\xf9~pv\x10\xe4\xb3(IP\xd2\xcd\xb1\xb5\xbc\xca\xb8\xc9\x7f\xaf\x81\xe8(\x90o\x1e\xcb\xc8e\x92\xe3\xb6\xd1\x9cj\xb6\x87[\xcd\xd9\x90\xcd\x19\x8aH)M\xf5\xf7Z\x03,G*=|z\x0e\xb27\xa5\xfc\x07\x0e\x92\x8fF\x1d$\x1f\xbbf\x90\xc3\xb5\x06\xa9\xa3V\xbey\x90\xbb\xae$\x12\xef5RF\xb3\x88\xd1\x8ev\xa5\xe1\x8e\xaa\xe7\xc3}\xc3\\k\x963\x85\xcc{\xfd\xf4\xb7\x92E\x12d\xfe\x80\xe9_\x1f2\x06\xa8\x0c\x0dP\x19\xe9\xd7\xccN;d\x86\xbd!\xb3\xe6\x11+\xa4\xc72X6\x8c\x06G\x02\xd57\x8e\x07\x0c\x1d\xad\x97\x9d6\xce\x96\x84\x1d%[\x1a7o\xbd=\x18\x9e\xc5\xfa\x83\xa5#J\xef#Op_:n\x88\x10y3\x89z\xc1~\nsLv\xb6\xd3\x01]\xe2\x97\x05\x86(r\x95s\xdf\xa6\xa7\x94\x0f\xcf\x9e\xc1\x80\x9e\xa3\xc5w9\xaf\xd6\xa4\x00\xfeO\x99\xe8\x16*\xe2\x9b&[\xcc\x85D`\x84\x15\x81\xb1\xf6\x8co\xfecf\xfc\x0f!P\x86\xa3\x03\x17\xb6\x86\xa3\xc3\xb5i\x14R\xd3!Q\xd02\x9f\x84\xe1\xb7\xd0/\x7f \xf9\xb23:\xd8\xa7cE\x19B?\xd4\xfe\x07\xd20\x7f \xf3\x88\x81\xfe\x81t\xcc\x1fH\xc6T\xf9\x10\\%\xedA\x8f!\xb7\xcfm\x0f\x12\xa7F\x12}\x13A\xf3\x07\xd23f\x10\xd5\xb7o\xcdHB\xec\xe2\x1eP\xfc'\"~\x0c\xf2\xa7v(\xbeR\xe6\xac\xcb\xab\xa2ji\xdd\xf9RZ\x1a\xf6j\xc9$Ejo\xea\xedc\x06e\x12\x14\xad\xd5T\xe7\xa8\x82du\xb7\x1e\xddR\xa5\x9b\x1c\xa0Cd\xe9\"X\xd9\xd5\xe7\x8a\xa7\x97\x94\xa5\xa42E\x90\x0b\xd0\x0f\xf3\xb2F\xae\xe2HK\x12\x10\x9d\x17\x98\xf7eWz\xa7\xb0\x11 \xa5\xea\xa0\xdc\xad\x8e*\xf26\xc3\x9b\xdcO\xe7$?\xcf\xfd4\xef\xce\x86Z\x9a\xf1\x003\xd6T\xba\xa1o!K\x8a4 k\xb4\x90\xb6\xf5\x97\xd5v\x16O\xbb\xebJ\xeb\xce\x17%\xf4\xeb3*\xd9_\xe5\x18{iK\x9a\xa8\xda\xcbM\xadU.\x12\xb4L\xbf\x95\xea\xe3\xd6\xe3\x1cTn\xa8\x18t\x99+\x07\xb1\xc5\x96\x904 \xb0t \xc3#HxV\x83\xad-4\x0bK`\x13\x10I\"\xae\xa3w\xba\xb8/\xa5\x93\x11eA\x86d\x07X\x18\xaf\xf5\xb2\xfe\xb105\x8aY\xda\x1a\xedk\xf3\xb9d$\xaf\xf2\xb8\xd4Lubf\xf6\x14:\xfa\\\x98B\xef\xd7\x86\x08fa\x14\xad\x87\x084NWkg\xb6\x16\xe9 0\xa4\x06?6\x95\x1d\xa2M\x9f+\xe1\x85\xe6'.\xcf\xba\xd1\x95\x19 $\xde\xaa\x16\xb0\xdcdy\x04\x18\x80\xe8\x18m\x8c\xc5Am\x88\x8ff\xce\xb7\xaa&\x9b\xd1\xe4\xc33\xf9\xb3\x97\x19\xbf\xfb&\xf36\x80\x1d\xdb\xad\xe7\x02NM^\xc5&\xcf\x8fF{\x95\x12`:-\xc9\x9b)\xcb-\xe2T\xe9\x17a9\x00n\xab\x87>\xca\xb5A\x08\xbc\xe8OB\xf8_P\xaca\xb3\x977b\xe4\xd4\xfb@\x07\xfb\x19N`{\xf2\x9f\x9b\xbfl\x0f\xb6\x9e>\xdf\xfa\x0f\x7f\xeb\xb7\xad\xab\xcb\xed\xb9\xc9\xf5\xe6\xd7\xf6\x10\xae\x80\xca\xd9S\xb0\x06\xe8\xf4_O\x13:V\x1e\xd4\xfbfh\xf0\xb5Q\x01x\xa3\x0f\xd0\x96\x03\x8f\x8a3\x84\xed\xce\x1c\x97\x95\x83L\"\xc2\xf3\xeb\xf2:\xb4\xa7P Y`\x9bFb\x07\x07\x9ea4\xef=qD\xef\x1d\xec\xec\xee\xb6!\xdc\x90\xe7\x873\x97\x80r\x93>\x83\xbd\xfd\x9d\xe1\xd3\xae\xc2\xf4b\x89(vh\x7f\xb6\x86\xb43<\x99\xc4h\xe7\xa9\x0b\xc3\xa7C\x17\x86\x87O[\xd0\xba\xb8\x82$\xce\xc3\xb8\xd0\xe7R\x12\x979{\x10\xf0\xbe\xfb R?\x19\xa5z\xf2\xf5O\xd4{\\$\xed-u\xb6\xd2\x9e] \x97\xc9\xfe\xce\xc8\x98BP\\\xfd\xa0\xe2\xfe\xc1]\x8e\xb9\x8f\xc6>lR\xban\x8b\xa7 8>\x86!3t\xd9\xe2\xa3\xd1\xd6\xc0O\xc5\x84\xf3==\xc6c>\xc9\xab\xfd\x1b\xb3D\x15]\xfb\x8c58d\xd9Y\xba\xd2\x1f\xf0\xce\xc4\xad\xe3\x10\xf37\x1a\xec\xf6l}\xb4^\xeb\xf0\xec\x19\xe62\xc0\x00\xdb\x98\xd0 \xa6w\xa3\xc3^\xdd\xc2y\xea\xd7\xaf\x9d\xf5\xfb\x85I\x17F\xa3]\x16\xc2\x03\xf6\xe1 \xed!\xf6n\x8d\xbev\xa0F\x1c\x07O\xd9\xa0\x8b3 \xd2i\x05\xc9\x94\xc0*1x\x91\xc9U\xb2\xf1\xee>b\xbc\x87t\xbc\xbb\xe4\xeb*I\xf3\x0cN\xe0\xf7\x07\x89v,\xc1\x106<\xd2\x1b\x9b7#\xf9E\xb8$I\x91\xc3\xc2g~\xa0\xd7\x84\xc4 B\xe6W\xf0~\xd04\xe0w7\x10D\xc4O\xbf\xa1\x89\xa2\xb9\xe0\x19n\xc5\x18`e\xef\xab\xe8\xc2\xe5#\n>\x95o\x16T\xe3\xc9 \xf3\xe2\xda`\xf9\x8e5\xf5\xd0C\xb6z\xecv\xd4\xab\xcf\xb7!\xaab_\xd4\x97\x81\xc8\x0f\xa17\x955\xa6\xef\x10U\xb2\xa5SF\xcb\xd79\xfc\xb7\xb6\xd0\xac\xab\x94\xd2v\x07\x0f\xa8&l\xa3Z\xac\x8d\x95\xa0\x1d\x03f\x9d\x11\xdf\xc8\xbc\xa6\xb4\x10O\xe5\x9b\xb1\x8av[\x13k\xd0\xeaU4-\xdf\x19\xe6\xc9\xd4\xa9\xda\xe2=\xad\xdf\x8e\xd5,\x89\xad\x1d\xa3M\xa8Y\x15\xcb_\xb6\xb4\x9a\xe8\x1e\xe7\xa9\xcd&Jb\xb3\x00C\xbf\xd4\x9f\xcdx\x12\xda\xe6\xc6Y5f\x04\xb3\xb7b\x1a\x0b\x9bW\x05\xa5X\xe0\x14[\x14\x01\xc4\xed\x08\xc3\xa7b\xdd.D\x92\xecuj;\xed\xfbu\xdah\x16\x89\x88\xc0\xc4L\xd2\xb3\xad\xb0W\x1a\x8a\x01\xfb\xd8\xc6KR\xa6S\xf4\xed\x083\x11\xe9\xd79~@\xb1d$\xe0\x8aA\xc4x\xf6\"\x9e\xf2cv\xe9\xa5El\x9b<\xfc8(\xe4&;v \xf0D\xcfl\x8f\xea\xe6N\\\xfd\x8ev&T\xa7\x98K^\x86U\x1a_\xe9\xa1\xdd\x16P\x12Q \xab\xc8G\x14\xc8b5h+\xa5\xabV~\xe1\xf6o\xc6\x8c\xc2\xc4\x95\xda\x06\xf9\x12\xf4\xc2^\xe2\xean\x08d\xf2K\xc6\x9b\xe6\xe6a\xad.@\xa3\x01\x8eL;\x1a0\x8f^\xfb\xe6A\x05\xd8C\xebN\\h\x858(\x0b\x9c\x15(9\xe1B{\x96\xe6\xe8D\xcaZ\xaa\xab\xee\x86n\xec\xaa\xc5\xc4\x8b\xc9\xd7\xfc\"\x0c\xbe\xb4\x12\xa7b\x9fR\x8a\x80\xd1\xbc\x8d\xb8\xcdM\x93!\x94W\xa8\xc5\x9e\xc1\xb0 \xce\x12\x17\xc4\xcc'\x93\xb2*\xea\x97G\x10onRr-f\x86XR\xe8\xe8F\x98\xfd\x883\x1b\xe4V\x80\x0fe\xf7\x98\x15Z\xa2\x07\x03\xfa_aO%T\xe8\xc2B\xb6\xabG\x00\x9b\xcfF> <\x1c+[\x8e\xd5\\\xd4\xaaM\xbc<\xcc#\x0cJz\x9d&\xb7\x19I-\xfa\x90\xff\xe6a\xf2\x13\x8f\xc47H\x07\xd2\xdf~:\xbf\x11y5\xbd\x1b\x92ft\xfeX$\x93\xf2>+K\xe3\xbb\x1b\xfcn:}\x1bf9\x89\xb1\xde\x1b\xf6\x12\xdd\xd1\xd9\xef\xd9L\xfcL\xc92\xb9!ja\xf6\xf4y\x14\x89\x17\x99xC\x96a.~\xafR\xb2\"q\xa3%\xfe\xf8C\x1c4\xea\x8d\xa4\xea\xccK\x8d\xef\xc0\xc9e\x1dz\xd7a\xdc\x99\\\xa5A\xb5\xae\xd2$ YV~\xccC\xa4HA\xf1\xea\x8d\x04\xb7\xd3\xb6\xf9\x16\xac\xd2\xb6\xa5|\xb6\x98\x86\xe9\xe3z\xc6>\xed\xeaW\xb1\xf4\xb3/=z6\x90\xb6>h\xb8\x10E\xc5o\x15\x19AEO\x90KL\x9c\xcc\x90\x98G\x84\x1a\xa0\x8a\xd8\xda\x90Uu:}\x0f\x06\xb1\x15\x03\xf5\xcb\x8aU\x19C\x83k|\xc4@\x9aH/\xd5\xe2\xd0\xca\xbe\xe6\xa4\x0bk&f\x94\xd8\xc0p\xc7'0\xa4\x88E\xd2\xdeT\x98jx\xc9\x835\xc8\x8f\x9a\xf4DlLx+duZ\xb0\x19\xd7\x07\xa8\xc2{\xb5\xd7Lt\xcfP{\xea\xa8\x02|\x9fb\xdep\xe2\xd7\xb1\xaeof\x961\x17\xd6\x86\x88\xa2\x19\x0b\xd0 \xc3&\x91\xa1\xa1GnHzW\xcb\"\xdd\x95\xda\x0c\x19\xb7x\x92^j\xf8\x1bts\xb1\x19W\xcdp2\x9b\x04\x17B\xc7a:\xb5\xd05s\xf2Z\xde\xbb1\xf15\xc2\xb5 \xc7\xb8\x84cN\x0f;8\xc5\xe0\x14C\x1e\xd98e\x07\x1c\xcb\xb9 )\x85k3\xa9\x9d\xe4-\xa0\x16\x97\x00]\xfb\xa6\xef\x03}6\xc4Y\x9a,[Yv;4\xcc\xc3\x83\xf1\xb8\x8f\xbc\x94dE\x94\xbf.\xe2\x80\xae%\x17\x9f\x04\xc9rU\xe4~\xce\xd9\x94\xce\xcd&6Z\xe3\xe5\x03\xab/#\xf9\xa7GWJgH[q\xed\xa1L\x0c\x88_\xb9wuE\xb2w\xc9\xb4@\xf6\x8d\xf2i\x98:\xd6/\xa2\xfc\x1dY&,soB\x9f\"\xda$\x02\x8b\xbedH\x94\x11\x1d\xe5\xcb<-\x82\xbcH\xc9\xb4D\xb6}\x18\xefGP\x99\xbeBe6\x99s+\xc1<\xb8F\xea]\xc8\xfeM\x1dg\x87C\x06\xb30\xcd\xf2*^\";\x18\xfc\x18X\xf5p\xbb )\x01\xe2\x07\x0bX\xf1\\\xbb\x94\x11\xf0A\x9c%\x9a\xa3\xc3Gk\xb0\xb2SG\x0d\xa0\xd0\xbd\xc6\xd3\xf8~!wYC\x88UR\x8bq\x1dU\xb5\xf9\xc3\xd3\x0dY_\x0e\x8e\xdb\x93\xe4\"Z\x84\x9cW\x08\x81\xd3~\x03F\xfb\x11N\xfb\xe5\x93\xb4\x9d\xee\x03i(^J\xa6E@l\x85\x13\xea\"\x98\xc9\x84R\xcb\x97\xcc\x18R\xa3\x8es\xe1\xf7\x07E %\xb1\x9fu\x91\xb6\x8f\x04L}\x99\xd3\xf5m'z\xb5\x97\xc2\xa7 \xee#\xb6\x87\xc3\x03\xe5@D\xc6\xc6\x1e\xed\xee8zV4\xb6\x87\x83\x01\xa5\xfc\xda\x1a\x00Y\x84'\xd2'$6Z\xabK\x83\xea\x91TLZ\x12\xcc\x18tM\x96\xb4\x1a\xea\xc1\xaeaD\xed\xcc\xf5\x86\x1c\x0b\xd5\xc4G\x8b=\xb6\xf1H>Z\xedq\xac*$\xeb\xfb\x8e\xc9\x9c\xc6`\x8d\xbc=o\xcf\xd2\xad\x12\x8d\xfd\xe1\xd5\x153\xd4\xa4\x7fO\x84\xdb@o\xf0\x8d\x0e\x0e\xd6\x86\x9f\xcc\x85\xca)\xe7j\xb2\xeau\xa7Q\xbf`\xf7\x0ev\x95\xe7!\x7f\xbe\xa7<\xa7{\xc7\x9ap\x9c\xf8\xbe\x88\xa2K%Tx!\x17\xf8,\xd2\x9d\xab\xa524n?E\x13\x04f\x0fx\xe1\xcf\xcb\xcc\xde\xdf\x01R\xd2\x89Bo\x0b\xcc|2\xe6\n\x16\x08c\x8ev\x99q'\nF\xc6\xc8&?\x16\xb0{OGz\xc8>\xdd\xeb\x9cx\x0d\xbd,\x96q\xc2\xdej\xb7E\xca\xb2\\\xc4%\xd8\x1e\xdb\xf7\xd1Su\x96Y\xdf\xf7w\xd41\xb1Uqp\xd89$\xc3\x0c\x85\x0c\xde)\x83w\xb26\xbc\xf5\xb2> !\xef\x0e4#\x91NXJl\xb4\x93\xd4\x82V\x99h\xce0\x89s c\xa42\x84U\x98\xf9\xbc\xab\xbdx0\xc0\xad>\x96\x90\x1f\x14\xfbR\xb5\xa1\x17\xc6\x0b\x92\x86\xfc\x149\x1c:\xcd3-\xb6w\x06\xeaL\x16\xac\xae\xda*\xac\xea\xb2g.\xf8\xd2\x9br\x80\x19\xae\xbd\xa2\xd2\"\xf0\x14I\x83#\x88\xe0\x18*uFD \x80\xe6\xda\xa5\x04t6\x89\x14\x18\xce\xaa\xfa&\xc1%\x8a\xb9\x94G\x94)\x93\x1f\xb4\xebwg\x86C\x879\xc7\x88@\xda\xc9\x0cfU~IJ\x12\xce\x1a\x84\x96_W\x95\xb9P\xa8\x0f\x10\xfbo\x08\xd7\x89\x94\xf8S\xff:\xe2\xb1c\x17aV=9a^\x80\xf5\xf2\xb7i\x98\xd7\xcb\x97Oxy\xa6q\x89\xa2\xe4\xf6\xaf~4\xfb\xb0\"1'\xd3\xeb\x15\xd5K\x94\xb55>,\xabL\xe2\x80\xd8\x16\x89\xa7\x96\x0b\xabvp6\xb5\xf4\x9a\xba\x85\xc3\xc1\x95\x18\xc0y\xee\xe7\xc4#\xf1\x94L\xe9\xcb\xb4\xd4\xc5\xd9S\xd6\x85.\x1d}c\x0e\xb16[E\x0d\xf4\xe2;\x99\x1d*\x1f9\x19.\xaf!\x17,\xd1\xaf\xbf\x86\xf3\xc5\xcf~N\xd2w~\xfa\xc5r\xd56\xe2bIRZn\xdc\xd0\x85\xcfI>n\xa7\x98\xc5\xe6\xd6\x00b!7[\xdf\xfc\xd5\x80\x1c\xb7\xd7P\xa6$\xcb\xd3\xe4\x8eL\x1b\xdd\xef\xddE\xc9\x9f\x86\xf5V\xacS\xec-]@\x8d\x12\xb5\xf1TK\xac\xfe\xa5W\xf6\x0d\xbd\xce4\x80(\x0b(d\xb9B\x08\xd4\x06\xa2\xc7\xc8\x7f\xfc\x10*\xfd\xb3i\x10\xb4\x88Q\xe1M\x19,I\xe1z\xc5\xbf\xea:\xe4\xb1Av\x80\x14Q$6,\xae}W\xdeGyM{\xff]\x0e\xca\x9d\xe1\xc8\xb1\x1f{\x8a\x93\xca=\xabT\x91t\xd1\xe8k\xf6o\xff@w\x90\xb3\x10\xf7\xfe\xd7G\xf6;\xb1\x07.\xd2\x1e\xdf\x00\xccu\xcbk\xa9\x94\xa1flvl\x1f:]\xf2\xbe\x90;~z\xe2l\xfb\x98$\xc2\x16\xc0\xc4@\x0b\x82\xa6\xf9\x1d*8\xf4\xb2;\x19\xc1 \xc3Pz\n6\x05\xd6F\x0bez\xd0\xd2\xef\x1b\x86\"\x1a\x9a\xb2}\xd4D>\xca\xf1h\xa7\xe7\x8cm\x8d\xf6,t\xb7\xc5\xedVP.\xde\x16\x9bH\x03\x1f8\xe6\x1b.I\xa2\xf3\xf07R\xe2\xad:L\xe8vl\xa4o\xad\xdd\xfa((\xab=*\x1a\\&\x16\x9cNi\x9d\x94\xb9I\xc6\xed\xa8@\\%\xfb\xda:-q\xad\xcf\xdc\xba\"\xf6\xe6$\xa7\xf7\x88\xac\xd0\x01\xca\xa7O\xcb\xf1\xa2czu{\x02\xc3\x81C\x0b\xa4$\"~F\x98\x84\xaf)\xa1}\xd0\xa8oc\"\xd2\xa9b\x83\xe9X\x05\x08\xbd\xf2\xdbD-\xd5\x0b\x06\x8fY\xe4 \xeb\xa6\xd6Y\xe8\xa0[\xec1\x8b\x10\xe0\xe8\xc0\x01\xda5\x0f\xbauO\xab\xe8\x03\xce|\x91\x92\x06@\xbbD;\xe2\xfa\x16h\xa5\xdf\x05Zi\x19G\xa9\x114Z\\\xfd\x01\xd6\x88\xc8\x00z\x98\xcd\x92\"\xed\x02Y\x8bT\xf1[\xa0\x96|\x17\xa8%R\xf4\xa9\xd4Q\xf5\xf9\xe2Z\x0bp\xae\xd6\xf1\xb8\x8e\xca\xf4Gg\x81O\xdb\xe4ju\x03\x7fmq\xb3\x98tO\x95.%\xfcy\xb7l\xc4p\x94\xa7v\xb2\xfe9.\xf7\xe8\xd1-s\xb9\xd1#\xc8\x08\x89\xfa\xda\xd1\xcb\x8a\x0e\xb5\xe2\x96\xe1P}\xce\x98\xfd\xe1\xfe\x81c[Y\x1aX\x1a\x9e\xff5\xefH)_k\xca\xdfX\xfe\xc1\xc2\xf1\xb2U\x14\xe6\xb6%J\xcaR\xd8\xd8\xde\x1f8\"a\xf99F\xca\xe8\x03$\xce=\x93\x9a\x05\x98m\x94~\xe1\xda-tr\x84\xc8d\x0d\xafx4FH\xe4\x87\x14s[\xb1\xbf$\x16\x1a\xd1$\xd5=7\x9fDIxi\xd2cK\x9f\xf9\xd5\x17>/\x87\xf2\xd6M\xf6{\x0c\x19\xb3H\xe0\xde\xcb\xb9\xe3\xb0\xa8b,\xb6\xcbi)c\x871\x14\xe2\xb6\xf64\xa9\xd6\xc4\x18\xec)\x89HN\xf0\xbd+\xbd\x92\xd7\x94c\x97\x93(3\x85\xe54\xb5hu\xf84h!\x87\x04\x14\xa7}&>Ja$a\x87\xdc\xfeZH\xa1sM\x94z:9\xf4\xc1\xa9\xc4A\xc0\xb8\xcb^\xa5\xd76\xeb\xa4\xbe\xf5\x9bo\xb4o\x10\x81\xef\xeckw\xdf\xde\xaeJ\xc53Q\xdb\x81Z<\xe3\xc5UYj\xc4\x9f\xab\x12\xbb\x80?W\xeb\x99\xf1\xe7*2X\xa1\xd0\x8ci\xb3\xce\"B\x0f\xc4z\x81\xa9T\xe0\xb5O\xc9\xe4\xbbz\x81\x05+\x10%\xb1\xbe\x82\x1b8\x81\xb4\xfeh\xd9I\xb47t7\xd0<\xc8\xe7Z\xb2\xf9\xe5\"\x8c\xa6)\x89\xc7\x86sx\xe9\xaf\xc6\x10zK\x7f\xd5$\x0b\x80 1\xcf\xfc`A\xcb\xf0\x9f\xfarAR\xc49-\x85?\xf4e\xf2\x045\x9f\xb4\x14\xff\xa9/\x97\xc4\xd1\xdd\x18f\x8dw\x1a\xca\xe5e\xb2\\%1\xa1M'^y\xd3,\xf7\xb1HI\xadl\xedA\xb3|m\x05\x8cA\x03\x1cy\x86\xc7\xa0\x81J\x98\xfd\xe4G\xe1\xb4,Rx\xf5'\x9aN\xa6\xc9\xea\x82\x99De\xa6.\xbd\x8c\xfc,\x1bC`z\xcf\xd7\xe4\x18\xa6\xa6\x12\xef\xc2\xafa<\x86e\xf3\xfd\xab\x0f\xef\xc6\xe07\x9f\x97J>\x8d\xf1\xe9\xd5U\xb6J\x89?\x1d\xc3M}q\xea)\x829>\xfdc\x90Nc\x93\x87L\x12\xf0\x94\xb2\x1e\xf6h\x7f\xbf\x12\x14V\xe2\xa5\x85\x9f}\xb8\x8d\x85\xc8P\x8b\x9cF\xfb\xaa\x9eO\xcf\xa1~!wc\xd8\xd0XA\xa6d\xa6\x7fqu\x95\x91\xc8\xfc\x0e)\x84\xb1\x9a\xbeX\xeb\x10\x9a\x19O\nI\x9cG\xbc\x94T\xbbJ'?\x8e\xfaU\xf3\x85\xdcI\xd5\x88_BU\xa1\xe1\x1cX2C\x03Y\xd2\xd4*\xd3\xeb\xcf\x7ff'\x96vE\xe6\x98^\x994_\xe0\x1ch\xb6\x16NA\xdc|\xbeJ\x93U6\x86B\x03\xff\xe46\xa6|PhZ\xd6P\x01\xa7\x8a\x0b#\xbd\x0f\xea\xc7\x88\x060:`\xa4\xcc\xd0\xfaw\x1d\x97\x06&\x0b\xf0\x15\xe8,\xc0\xd1\x9b\x96\x11\x04:\xde\x19\xd5S)\x84t\xf1\xe4,3\xcf\nm9R2s\\\x88\xc4\xc3\x19:\x98\xc0&\xa0\xd2\xcfqky\x06=\xb6\x84\x05\xe91.\x9f4\x8b1z\xb7^\x10\x9f!\x1d\x14\x96\x921\xe6\xb5\xb6Q([\xd3\xe6\x99\x87}f\x1f\x93OR5\xe3.\x05\xdfTg\x18\xb5\x05\xa3&d\x98\x0eh\xea\x80\xef\x05\xfc\x8c\x84Fl\x8f2\xe2\xc3\x14\xbd\x944\xcb\xb4T\xf2-J\xc3\x9e)\x85\x11S\xef\xdd\xc01L\x8f\xe0fs\xd3\x81\xc5\xe4\xa6n\xd8s\x83\x811\x9b\\\xee\xc0\xad\xf7\xa9\xee\x8f\xf8\xd0\x18 \n\xdf\x88\xb0?\xa3\xf0\xcat=\xa5\x9d\\\xa21\x87\\\xb2\xd9|\xb5.\x96N\xcd\x96\x8c\x02^\x9a\x81e\xc3\xe0\xfeA\xb77\x02\xba\xdag.\xac0\xa9&z4\x05E\x9a\xd2\x03\x10\xfc\x1aK\x13\xd4\xc9\xaa^Fp\xca&C\xb7\x9e\xd2 P\xbbWs\x8f\"\x0f\xae\xa4P\x9a\xa7G\xfa\xf3x\xfa\x89\xc5F\xf8w\xd2\xa9t\xa8\xc6\xe81\x86\"w\x19\x96\xa5\x7f\xf8>\xa0?\xf8:'\x1e\xc3*\xf4\x17b\x1eu\xfc\x12M\xd1\x13_\xf8\x0c\xb8\x94\xa8\xb4\x7f\x7f\xa8*n\" \xd4\xba\xd0-\xdc|\xb5\x00~8h\xce~\x0cj\xdd2\x16\x8d\x87_\x17\xd2\xf1kHg!\x90\x0e\xdb5\xe5\xf2\x90q\xd0T\xc5A\x0c\xdel\xe1\xe39.\xaf\xe9\x12mi\xde9\n\xb6\xf1\x0d\xd8\x86=\xb7e$F\xf9\xbb\xba~\x8c\xe2\xbd\x15\xf3\x81\x99\xd1?cqG\xcbj\xb0\xd3rM\xec\xb4t`\xd5\x07;-;\xb1\xd3\xbc\xc4NK\xc7\x85;\x86\x9d\xee\xe0\x18\x96GpG\xb1\xd3|rW\xc7Nw\x06\xecT\xeb\xd0\xbc\xd7\xfe\xe7{c\xea\xc2B \x81\x9b\xba\xfe\x9c.\xfe:u\xfch&\xb8\xa6Gc\x0bD\x90\x12\x0c\x8d\xc9\xad\xca\xa4i\xf0'\xe8&M%\xb1\xd3\x81\xe3\x9d\xdf-\xaf\x93HO\xe9\xa6\xebU7:\xd4\x9b\x0d\x0d\x0f\xbf\xcd\xd6m\x83C!\xa9\x0c\xd0q\xc1\x7f\x8b\xdd\xdb\xc8 \x81|\xaa\xaa\x19\x19\xd3\xbf\xdf\xb0#bt\xf5\xfe\xb0sdf\x94+E\x12\xe4f]p\n\x13r\x89\x96g\xfe\xb7\xc8\x131\x1e~cxJ\xf8\xbb~\x13\x11\x1aB\x972\x95\x1b\xa9\xechH\x13W`\xe0b\xd8lD\xe1\x11k\x7f\xc0j\xa4\x93I\xfbF\xe8\xddV\x02\xa7`m\x0d,J_u\x8c\xbf\xc6p\xe9$E\x9cUb\xe7+F\x1c\xea9C\xc4\xcb\x8a\x15I\xaf\xb8yq\xc5lU\xd6c\xacR;\x97eqM\xec\x15$\xb1\xd0E\x9a\xc4\x17\x98\x98_\xcb @\x87]\x8a\xb8\x84\x89\x82\x9e\x0b\x03\xd6\x8dY8/D=\x1a\x9f\x81\xda\x93\x87\xbaU\xf1\xa3\xc0\xd6\\\x0e\xaa\xd7\xb9\xc2\x88\xc45(\xd7\xe0Z\x9f\x80\x98\xdc\xa2\xe9r-.w f\xf8\xfe\xb6\x07\xfb\x9d\x9b\\\xb7kj\xa6\xceJ\x98\xd8\x97~\x1c'9\xd0\x86\x11\xc5%)\x14q\x19sH\xbb[\xbe\xcb\xa0\x1a^\x1f\xcaxyt@\xfb\xa0\x81@P\x10\x91b\x04_\xba_S\xb9\"\xe6\xfb\xdb\\\xdd\x9ch\x19\xab\x99c\xe5\xfe\xf02\x9d\xd0\xec\xe3\xc9\xf4\x87x.\x89\x93\xa8>\x04\xdd\x0c\xd9\x03\x17B1 g\xed\xc3\xa9\xe7\x8c\xb9\x06\xa0\xb5\x18\x0d\xab;M\xf2\x99\x16f\xab\x18\xff\xf7\xc3\x8cr\xa8\x98X\xe6\xfe\xbeK\xceT\xc6\xd6\xe6Lm\xccX*\xd2dj\x1b\x10|\x048\xca\xc7\xa5\x9c'\xed\x92\xf30S\xef\xfb{a\x06\xde\xc4\x0b \xefg/\xcc\xde'\xf9\x82EcH\xdd\xda\x0b\x06\x8a>\x04K7=W\xf5An\x83\x0b\x93\xfb4\xa1\xee\x04NBpjbB\xc9\x079\xd5o\xad\x99\x94\xac\x88\xdfo\xdd0\xcf\x1e\xf5\xe8\xc6\xa5\x133\xda;f^\xd61lb\xd4L\xccP\x85\xc5\\\xefL\xcf\xc1\xe6F\xf4[e\x81\x1a\xcby1\x18/\x8c\x83\xa8\x98\x12\xa1\x95\xe9p\x1fG\xef\xe0\xb2\xad\xda\xeb\x07\xae\xc9\xed[S\xb3\\\x9bEM\xee\xe5\xfe\x9c\x9b[\xd3_O\x9eP\x1e>\xa4\x8b\x88\x89\x92\xe9O<\x13M!a\x1f\xd0\xaeJkJ\x86ofa\x94\x93\xd4n]\x91PAn\x8b\xc7J.\xb1v\xaeV*\xad\x93\xe6\x84i\xa2\x16r\xf3\x15\x9c\x0e\x14:\x88\xdf\xf7\xf7hK\xc6\xde/WQ\x18\x84,\x1dIy#\x97 _\xa5\x12\xe5\x8d\xae\x8e\x9e3\x85\xb2A/J\xfc\xe9\xbfs [Y\xe0G~jq1\xbex%\xd3Y\x89m]\xa0s&\xbac\xc6I\xbc\xc5\xbeA\x84LO\xbc|A\xa0\xec\x7f\x14f\x18\x07\xdf\x87,X\x90\xa5\xef\xc1\x1b\xf1*%Y\x12\xdd\xd0\x13!\x99AV\x04\x0b\xe6\xed\xdf\x08l\xe3Y\xcdIe\x86=\xc9r\x15Fd\xfa\xa6\x82\x9c\xcf]\x08,\xd1\x01\xcb\x85\xc9\xa5\xfa\xc1\xd9\xd7\xe6\x07\x02\x9e\xda\x0f(m\xf9\xce_)\x14v\x03\x9etK\xf2\x1d\xa4\xd5X\xd0\x8b\x01k\xac\x95\xdf\xe3{\xf2kA\xe2\x80\x98K,\xfd\xd5\ns\x1f\x98\n\xcc\xfc(\xba\xf6\x83/c9h\x97\xb8\x1e\x94H\xf3\xd0q\xea\x8b+\x9e\xb0\xadx9\xc1m\x8af\x16\x9eh\xa9z\xa6\xf1\x15m6GQ9a\xa8\\\xe7\xa7|\x84q\xed\xf3#\x16,v\xe8H2'R!!U\xae\x08Fj\xd2\xd6\xae\x16\xc3\x9aP\xc9Jz\x15\xde\xab\xb3\xd7\xcf?\xbf\xbd\x10\xfa\x95R\xc1\xdf\xb6\"\xc4j\xa8w3\xbb\x0d1\xb2\x9c:h\x1d\xdc\x03?#0\x1ck\xe7\x03\x83'\x8a~)p\x9c\x0c\x0c1\x02\x0c\xf1\x96\xb1\x9d\x91\xb9\x1d\xb9b\xb5)\xd5G\\\\\x86\xa6\x04\xd3\xa2\xfd\xa6\x86d~N\x93x\x0e\xcc3\x141\x88h\x12\xd7\xcf9\xc3&|\x16J\xe9D\x9b\xba!\xe4y.SA\x0e\xa2\x83u^{\x92;.l\x90^\xf1_\xc49+[K\x17\n\xa2R\xf0\xe6\xf9\x8a\x04\xe1,$\xd3\x12-\"C\xcfQc\x06v\x92RD\x19\xc6\xf3\x88\xf0\x11r_]\x07\x83\xc6\xfba,pn\xed\xad\xa72\xb5k\x84\xb1\xd1\x0d#\\w\x18\x7f{\xfe\xee-\xc7\xde\xb51P\xbci\x1a\x81\xf4\xae\xd1\x7f\xb1\x8f\xc9-\x14\xb6\xe6\xdcb\xc7\xa7V\xaa#\xf0\xf8X\xf5\x05\xac \x93\xbb\xad1\xd7$\xf6\x86\xc3\x9a\x19\xdf\xa1\x96\x96K\xda\xe4\x956\x81'\xf4\xa5\x1aXLn+\xd4\x1e+\xef>\x9f_\\}>?\xbb\xfa\xf8\xe9\xc3\xc7\xb3O\x17\x7f\x1b\xeb\x92\xa1\xfe\xf5\xf9\xf9\xd5\x8b\x0f\x1f\xde\x9e=\x7f\x7f\xf5\xd3\xf3\xb7\x9f\xcf\xc6\xb0\xab/\xf5\xfe\xf3\xbb\xb3Oo^\x8aR\x87\xfaR\x1f?\x9c\xbfA\xd6@)>2\xd4\xfa\xe1\xa7\xb3Oo?<\x7fu\xf6J\xed\xc6\xce\xa8\xf9E\x18\xd3\x85\xf1\xea\xc3;\xc1\x10\xbfD\x19[\x97\xf3\x12H\xb2\xd1P\x7f:\x02'v\x89\xc7\xab\x0e z8\x98NS\xe0\xe2h\xe2\xbd\xfa\xf0\xeey\x9e\xa7\xe1u\x91\x93\xf7\xfe\x92d+?\xe8\xfe6\xd3\x7f\xdb\xf5Y$>\x13\x00\xe8\xf5U \xbez\xc7\xe3\x9d\xbc#\xf9\"\x99\xf2\xef\xf4\x98\xba\x94W\xccP^\xe1\x85\xd9\xcb\"\xcb\x93e\xd9_J\x18\x16\xdeU\xe3\xb9\xb0\x97\xe4^U\x9a/\x9d\x16\xba\x1f\xf0`]\x95s\xa0\xea\xd7fL\x12f[\xbb\x87\x96\x0b\xb3\x16co\xdaw\xa4\xcd\xbc&Y\x98\x877\xc4X\xa7\x1e\xcb\xf5\xab\xfc\xc3\x0dI)\x07E\xa6\xc6\xe1\x9b\x90b\x93\xc9\x95/\xc3F\x06~\xf2/<\x05\xe2\xb0 \xf8L\x1e\xa5x\xa6\xefd\x19*(\xb5\xad\xbd\x01\xee?\x174[\xb4ms\x03\xdf\x9a7\xe8\x9c>\xeb\x08[\xb5\xf0j{\x02N\x14sA\xf9\xd2\xbbi\x00:\x96k\xb1\x88\xad\xd4\x8e;\x0es|\xcd(\xaf\x17\x19\xbf\x92w\x1b\x9c@\xc4\xca\x07\xc6\xf2\xf5\xcd\x06'\x10\xb0/dD7\x99]6lv\xc4\xa5\xe1\xd7jO4\xbeq\xd6\xf8\xf9\xd6\x7f\\\xf9[\xbf\xfd\xf2K1\x18\xbc\x1cl\xe1\xdfW\xfb\xec\xcf!\xbb}\xcdn_\xb3\xdb\xd1\xeb\xd7\xf4\xcf\xce\x01+\xbcs\xf0\x8a\xfdyMo\x87\xaf\xf1\xedh0x\xb9\xc5\xfe\xbe\xc2?\xac\xf0hx\x88o_\x0e\xd8\xed\xeb3z\xbb3\x18\x0c\xe9\xed\xab\x03\xfc\xf6\xf5S\xf6\xf6\xf5\xab\x97x\xfb\xea5\xbb}\xfd\xfa\x95&|Is\x05\xbdyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw6\x06k\xea\xe7\xfeVJ\xfc \x0f\xa7Vs\xfb}\xfa\xf0\xe1\xa2\xed\xa34Ir\xcdg\xf5/\xae\xce/\x9e\x7f\xba\xb8z\xf9\xd7\xe7\x9f\xb4F\x85Ji^\x0e6\xc1\xfa\xe5\x97-o\xb0\xf5\x14\x81\xfc\xe2\x00\xa19\xe0\xc0\xddg\xd0\xdcy\xcd\xa0\xb9;\xd0t\xa3Z\x1cz\xae\x1e]\x0d\xb3,d\x8e\xd2\xf1\xd4O\xa7\x0c\xff\xeb\x91y\xcbQ=n\xa4\x16\x00\xb4DV\xca\xf7\xa1\xb3\xea\xfa \xa6\xfai'\x13jj!3\xe2\xc00\xf5\x03\xb7\xbd\xb2I~\xe9\xc8\nr\x8d\xd6\x15\x8c\xa8B|3ln7\x13)\x8a\xe6\xcdFS\xcf\xef\xceO\x1c\x1c\xee\xd4\x18\x8a\x1df\xa3\xfc\xd4\xc0W4x\n\x8a\xef\xfc`\xf1\x89\xcc2.\xe1Bi\xc7\x157\x9d\xe264:a\x87\x9e\xcfX&E\x9cK\xf6\xf1\xea\xd8P\x98\x1f\xa2\xb5\x94^.V eZ\xaf\xc6\xae\x7fi\x94\xe7\x10\xb5\xdf\x92\xce\xa7\xf9\xd2K\xc9\x8cI\x91\xe7$\xffD7\xff;\xda\xea'\xe2O\xefl\xc7#\xf1\xaf\x05)\x08z\x04R\xcc\xdc\x86_\xe7$\xffk\x92\xe5\xef\x93i\xe7\x8e(\xbb*}c\xb7:6\x17q+P\xb5\x8dxSRN+3\xb1S&\x94>S+n\x08\xb0\xeb\xfd\xe0\xf1\xf3Z'74M+\xe3\x8c\x94^4'\x12\x95:(T\xc6\xc4\x13!\x97/_\x05I\x9c\x93\xafF\xdfdM\n\x10\x90\xd6S\xeae\x8b\xa4\x88\xa6\x9fWS?'\x08\x14_\x9ft\x18\xf0\xacA-B\x1d\x82\xbe\xc3\xec1\xeb \xb0\xc5\xa8]\xf6\xd5\xe3\x16`\xdcc\x016\x11P\xdbT\xadH:K\xd2%\x1b\xef\x9b\xd9{\x12\x90,\xf3\xd3\xbb~\xfe\xcb\xc4\xbb*\xf0\xcb\x17~\x1e,\x98\x86\x8f'\x8a\xc51\x9ajo\xac\x9f\nk\xe81`\xf8=0\xe0\xc8\x10\xedo\xb8\xfbT\xab?\x1b\x19\xfc6w\xf6\xd4\xf2\x183\xad2\x08\x91\"YN\x93\xa0\x10\xd3\xab J'^{\xe2\xc7\xbb\x84)q\xf4\xb5\xc5\xfeM8\xc7h\x9erf\xe5\x93\xe6{\xaf\xc8H\xfa|\xce\x1b\xde\xfe\xe5\xfal:'\xbfl\xff2\xdd\xf6r\x92\xe5\xb6\xa6\xa0\xf6\x1c\xd0\xf8x\xd0\x8d\xd7\xf0\xa9\x00\xd9\x82\xcc\x8b\x93\xa9\xc1:*\xe69V\x995\xa7~W\x8b8\xedz\x8e\xa5\x16?\x9e\xc7\xb1\x8cK:\x00\xc3Y\xb2,h\x93\xf4\xd2\xc5\x1d\xa5\xd9\xbch\xc5Z\xed\xb6E\xbe\x8c0\x8a\x1c\xda\x8e\xd1;\x07\xc6\xd2{\x8aP(\x1c}V\x00\xf1\x8bi\xfd\xd6\xd6]\x84Q)\xbbv\xd2p\xc8=\x16(\xdc\xf0?\x94db\x02\\\xdd\x0b:\xf7\x95\xd9B\xed=\xa5\xe1\xea2\x0bf\xeb\xc1\x03\xeb\x89\x92\x82a\xf9\xfc\xe9\x0d\xc6\x83\xd2C\xe1\x1c+\x10\x85\x84\xd2\x94A\x8e\xb7\xaf>\xbc\x93\x7f\xb3\xca\xc5\xddE\xf2\x85\xc4\xec\xc6\xcf\xfd\x8b\xd4\x8f\xb3\x19I\xdf\xe4d\x89\x0f_\x87\xbcQ\xba\x9d\x9fG\xd1\xcb$\x8a\x18\xc7\x8bO\x94\xdb\xd7I\xba\x14\x0e\xca\xf4\x9e\x85t\x16O\xde\x91i\xe8ce\xef\xc2%\x1e\x80\xcc\x8d\x9b\x9e\x03S\x8a\xce\xde\xf9+\x97\xfe\xc52\x1f\xfd\x90\x8e\xe1\xd7\x82d\xac\xeb\x1f\xa3b\x1e\xc6\xfc\x0f\xfb\xf2\xfc\xa7\xbf\xbc\xc5\xb5\x8e\x05\xce\x7f\xfa\x0b#\\\xc5\xddG?_\x9c\x93yy\x9b\x84q.n$(\x9c\xff\xf4\x176\xee$e\x83f\xd15^\x14\xb3\x99\xa8\x8b\x82\xfb|A\x08\xfb\x9c\xa2\xa1\x8b\xd4\x0f\xbe\xbc\xe4\x00/\x1f\xb0\xbb\xa4\x08\xb0G\x96\x88\xe7\xe1\xd2y\xcc\x18\x99\x93\xa1(Dl\xd1L\x1f\xb4\x93\xee\xccb\x92iv&\xddK)\xdd\x89\x8d73\xe0\xfb-\xa8,G\x15t\x81\xce\x1b3\xee\x8a\x94`\xc8Q\x17\"\xba\x10'\xd1%\xdd\xee\x1e\xc2\xb5c\xcd\xab8\x91\xa1\xa62\xbcI\x17\x024\x1c\xe9\xb1\x08T\xe2eQ\x18\x10\xfb\xd0\x85\xada\x97!\xafi\xbb\x9b[\xeb\xce3\xd5\x99c\xea{\x04\xc7\xeem\xd8o$xj\xee \xf6\x10\x9e\xd0s\xbf\xb9\\\xea\xee\x07\xf6\xc8PNrd\xb0w\x0de\xb8\xbb\x84\xa2;_\x0fAJ\xb8pG\xe5\xbd8\x0f\xb7o\x8a\xd8\xde;xp\xe5\xe5\xe3B\xd2\xb5\x84\x8c\x1d\xdc\x1d8\xdeL\xd7\xc3=},\xe6&\xee\xee\xda z&\x82E\x99M\xd0\x1e%\xe6&\xc6D\xf6\xc9\x08\xb9\xf6\x93\xa0l\xac\xb92T\x97\x93\xbe3\xb9&\xa4\xba\x98\xf4\xdd\xbd=\xc7\xde\x18\xd4D\x95\xa3\x9d\x03\x87\xc7\xedq\xc1jF\xcf\xd1\x9bG^QR\x8eG\xfb!\xc2\xfe\xee\xaa\x9e\x82\xe3\xa1%\x06\x8f\xb0\xb6\x12\xd1\xc2\xae4>\xfee\xb8\xba\xabPooRK\xfe}\xaa\xa5\xa8\x10\xa8<]L\xe3\xf54\x895\xe1\x18\x90\xdbB\xff\xdb\x9c\xf1Wbl\x9b'\xa5\xaf\x84n\x8e\xcd\xaeK\xbc\x9d\xa1qn\x1d\xed\xe4\xfe\x13!\xf5\x162n#\xb6\x87\x83\xa1c\x1b\xa7\x9a\xb7{@\x11\xbb>\xae\xef\xef\x0f.X~#\x8c/\xf4\n\xe5+7\xd1x\xa9\x88\xe7\x1c\xcf_\x07\xe8\xfd\xe0\xda\x9aQ|c\xa3!Vn\xcf>\xadU\x8ftat#\x89\xddk6e\xb3(\xdd\x01\xc0\x02\xcb\x86\xf1#\x17\x1c\x81g0@\x1e#ET\xf1t08\x18>}:\xda\xdb=\xd8\x1d<}:\xa4,\xc7\x9a4\xfd\xb7d\xb5lM\xa1\x07[0d\xe6\xc0\xd6\xbb0fVs(\x12\x06B\xc9\x0f\xf8\x17\x0cyFi\x90#\xb8 \xb30\x87E\x9e\xaf\xc6\xdb\xdb3? \xd7I\xf2\xc5\x9b\x87\xf9\xa2\xb8\xf6\xc2d\x1b\x15\x99\xdb\xd3$\xc8\xb6\xf1\xe3\xad) \x92)ar\x9f\xd30\xbe\xf1\xd3\xd0\x8f\xf3\x13\xac\xb2\x96:\xa6L\x1bHQ\x8e\xf5\xc4O\xe7\xd9\xe4\x92\x95\x8bi\x15\x9f?\xbd\xa9d\xdfRb\x19\xd8\x84\xa1\xeao\xc4\xea\xc0Qc\xae\xb6\"\x8a`I\xb2\xcc\x9f\x13t\xb4\xcb\x08>\x8f\x93xk)F<%7@\xe2\x9b0Mb\x14\xaf\xd2\x8f\xf1C\x1cG\x06~<\x05\x7f:\x0d)\x80\xfd\x08\x16$Z\xcd\x8a\x08n\xfd4\x0e\xe3y\xe6)n27<,d\x95oHM \xc0\xa8\xbc\x04\x85d\x14\xf6o\x04p\xe0\xa70\x89\x90\x9d\xc2\x8c\xb8\xb3\xd4_\x92\xec\"\xf9\x98\xac\xe0\x84\xceT\xf2\xc8\x8d\xd1\x87\xbe\xe3IC)]CJ\xb7\xeb\x1c\xc9\xd3\xf5Vk\x8bI\xa7x\x03\xedj\xaa\x86\xf7\x998\x03\x1a\x91\x04\xa1\x81\xf4r\xe1\x1d\xd5\xba+\xa4\xc6j.Up\xdat\xb1\x1aW)L\xf0\xd9%\x93\x94\xc6\xcd\xc8\xc0\xd887T\xe9\xdb\xbcu\xcd\xca\x9b\x932\xf2z\xdf\xa3\xdc\xb5_\xa5\x1a\xaf7\xa5\xa6\x0fi\x99\x8ee\xcdJMu2}M\xbf\xaa4\xda\x0bm\xadl\xd6{\xd7\xaaqU\xd7\xd6\x8aa\x0f\xfa\xd7\x8a\xc5;k]\x1b\x9e\xb2\xab\xa2\xae\xc2Od~\xf6u\xd5\xb7\xb6r\x8d\xb2\xcf:\x16i\x0f\xa7F\xb9\xee\xfe\x8e\x8dR\x1b\xaf\x14\x0f\x84^\xbd\xa7\x1fu\xf4\x1dq\xea\xda\x15\xe3WR\xcd\x0c\xcfIf\xe5X@\xd7\x9e0\xea\xe8\xdd\xa4(\xd5\xb9d>\xa6\xe1\x12\x0d\xfc\xfaV]\xedk\xd4\xeb\xe9P\x07\xbe\xd0l/|n\x88\xe5\xa0[\xe2P\xcf\xc4\xa7\xed?\x93O1\x970~S\x16{p\xca\x185\xb1\xbd\xb7\xebx\xec\xbd\x9e\n]\xdf\xfdWs\x8e\xe1\x04J\xc1K9'#\x0e\xd9\xbf=\x7f\xf7\xf6\xeck@V\xfcx\xc5\x97)\xf13\x9cY\xc2\x1f,\xfd\xf4\x0b\x0b\xfc\xc0n9\xe9pR%v\xa1\xe5)\xcc\xec\"\xfe\x12'\xb71\xb0g\x8e\xe5\xc0&/\x85\x95\x9c\x82\xc52\xfe\x89'\xe5)f\xe3\x99b9n\xd9\xe5U^\xa4\xe4<\xf7\x83/\x17\xa9\x8fQ\xc6\x0codk\x19)\xee\x01\xad\x10\x9fe\xb4$\x86\x0d\x14\xc4\x87\xc3\x9f\xd1.K\xe9\xcd\xca_iK|\x0b\xd6 9\xedOj\x8c\xbb\x90\xd6_\x8a\xb1\xb6\xae\xec\x1b9\x1b\x01\xce\xd3&Xc\xd0G\x0c\xc9)e\xd79 .lT\xc1\xfcq\x1e0\xe1\x07\xa3\nM\xd3\xe1(\xa1\xb4\xd6\x8e\x83\xd3%\x8884E\x91\xa0\xd3\x94*>$\xa5\xff\xc8$\xb6wv\x07\x8e\"h\x15\xbe\x83\xf8\xfe`o\x88\x96W\x07{#\xb5\\\xe5j\x82\xe5vx\xb9]\xfew\x8f\xff\xddw$w\xf1G\xecN\xf1T\xe6\xaat\xe9:b{\xd4Hu\x11r\x13\x08\xf5\xb90\x8dP\xa5\\E\x15\x103\xf5\xe6L\x14NX\x0c\xaf&\x92\xc8L\xd2-\xd1\xd3\xb61\xaaeso\x1af+\xca\xc82O\x0fo\xb5\xf032\xfdD\xe6a\x963\x05\x08Z\xeeNbs\x14\x89\xc2&\x8d\xa0\xec\x0f\xf4Y\xdc\xb4\nJ\x99\xaa\xdd\xbb\x12\xcd\x8a\xa1\xa2\x01\x8b\xf6\x05\x8b\x1c/\xbdy\xc3\xcf\xb6\xc6'\xe5\x0b\x17\xeaq\x86\x9a@\xd4\x04\xd4\x14\xe1\xfaz\xc1\x03\xa5\xfc^\x9e\xfa7$\xcd\xc8\xc5m\xf2\x91\x96\xb3\x89w\x95\xfb\xe9\x9c\xe4\xb4+.dJN\x9bf?\x02\xbd\x18}\xad\xbe\x98\xe6\x97\xd9\x99\xc8\x1dj\x14\x03!\x9e\xa3|=\xa6\xd6@\x05\xb8\x00$\xd3M7#X\xd2K3\xfaX\x1d1@]\xe6\xd1\x1c\xff\xcc\xb4H\xd1\xc8\x85\x99s)PH\x95\xf1\xb7-\xef\xce\x8f\xf5 \xa1\xfb\x9a\xafj\xcd\xc0\x1f\xb3\x84\x93o[\xc2\xd0 \xc8U\xdf\x05\xadB\x80\x16\x9a\xa9\x0bw\xa0I\xc6\x04\x1c\xae\xd3\x86\xce\xd7\x0f\x82bYD~^.\x85W\xbcM\x92u\x19pb\xf0\x83\xa8\xd5R\xb2\xad\xfa\xf3/\xe1\xea\x02;\xde\xab!U\x15nj\xe8U\x98\x92 _s\x14\xab\x9e\x95\x9f\xc59I\xdf\x12\xff\xc6\x00\xa6\xd2\xb4W\xd7R\xb5\xed\xaajlf\xcd;\xe3 ]L\xabF\x7fRO\xf1\xe97\x1f\x8d\x86\x93Q\x1fy\xaeyb\xf2\x88\xceC\xdd\xc9\xa8;I3\xc3I\x1aUI\xa6~Ws0a\xcc\xf9\x86\xc9\xd1\xacK\x8c\x04b+\xd9\xa1G\xbe\x92\xa0\xc8\xa5y{\x13\x7fH\xa7\x84\xd3\xedh\xfb\x95}$i\x86\x1b?\xb7\x193&\x13\x94\"\x0f\x91\xdd\xd8\xdd\xf5^\xf5f\x8f\x11\x81n\x0cZ+\xeb\xcd\xb9\xb3\xca\x86\xad\x95-\xfaVfy(\xe9\xf4\xae\xd2$A\x93\xaa7\xaf\xea\xf5\xd6\x17\xd2M\x03\xadH\x1e\x00\xcdF\xd8\xcb\xb3\x1b\x12\xe7\xccl\x01\xe7a\x0c\x89\xa7\x7f\xd3D\xf4\x8dr\xd9\x0b\xee\xde\xa7\xa9\x83\xbfk\x9d\xb2\xa2\xa4\xdb\xfa\x19\x06ku\xe51S@ZOw-\xfcR<\xd6\x1cD7\xdce`\xd1H\xf4I/;\x9a\xe4,\xfbh\xc4\"\x81\xfd\xfe\xe08\x93\x10#H\xe8\xeb\xc2\x94_\x8d\xf3\x81\xd9\xebd\xda0b>\x1a|z\xd3p\xfa\xb1\x1a\xbc\xeeY \x866\x00J\x84o\x0f\xa3|\xa1I\x8b\xb4=\xa3\xe4C\x9f9\x00)6\x84v1\x8b\x0b\x835XI\xfc2\n\x83/\x96>\x90B\xa3\xdcK\xc6\xe6\xf6(\xfe*)\xae#\xd2\xb7r\xa9t\xff&\xde%EF^%\xb7\xf1:e\xd7\xac\xfe]r\xb3V\xd95\xab\xff\xbc\xea_\xb2\xbbj\x90\xf4t\xf6\x06\x92\x8a\xfeu\xc4\x12\xbcbT\xc0\xdc\x05\xeb\xba\xc8s\xb6Cy2H+\x8cWE.?\xc8\xd0\x14K~\x92\x93\xaf\xb9\x9f\x12\x9f?sZ\xbc\xa8[#s\x88K\xf4\xb2\xe98\x05\xa0\xea \xc4\x85\x87s\xe3\xcd\x03\xb3\xceV]'DDJ\xf59\x8bY\xed\xc8b:=\xeeH\x8dx\xa8T\xf2SZ~\x92^\xb6a\x00\x96/\xe8\x11H`=\xb4\xc5\xf9\x8a\xdb0\x8a^\xd5Z4=g\xed\x9bG\xae\xc7AX\x1dO\x81\x94N(tz\x0c\xfey\x14\x95lC\x17\xd5)\x98<=\xe0\xeby\xbc\x15\x12[\\\x14O6\xfcpc\xb4\x82\x89&\xf1\xe5$\xbflC\x8ab\xfcf\xf0\xeb\xc4\x06\xe2B\xf8\xa4\x86i\xd0=\xb7\xb9\xa1<\x87)\xef`\x8f=\xf1\xa0J\x90\xf2\xd4\xe7\xc7{\x7f\xca\xbb\x84g\xe8\xf2\xa3r\xc5H\x83\x9a\xfd\xa1\xdff\x7f(.a\x87\xe8O2\x03|p^\xba@O \xda\xc8\xab\x8dF\x1e\x83\x19\xf2\xccv8D.7\xa4\\\x91~q4\x11K\xf3 \xdf\xdea+\xbc\x99\xebU\x13\xdefR;\xc0\xbe\x05\x1a.X!\xba\xd2$ Y\x86U\xffo\xdaHW\xf5b\xcf\x04M\xe8\x94\xfc\x01d\x88%\xe1\x14V0\x86\xa9\xe32\x80Q\xaa\x0c\x93\xb1\xfa^JP\xd5\xfd\xd2/\xe6\x8b\x9c\xe9\xc2[\xbbyu\xb5*\xd29\xe90\x81\x89*S\x0fc=\x12\x91\xf4\xc2\x8f\xbf\xf4\xcb\x8f\x1d\xd5\xeb,\xef\x0c,!\x0b\x01\xf0\x8d,a#\x85\x97` \xd5$A\xfa\xe8:7!\xb9\xed\x9aK(\x83\xe9\xd1\xd2U\xd0n\xbc\xd5\xaf~1\xfd\x89\x16e\x82\xf0\x99\xf4n\xc3x\x9a\xdc2\xcb\x81\xb2b\x8d\x87%H\x87P\xeea\xe2\x85W\xdcKM_\xb8<\x0eO!\x16!o\x7f\n\xc9-\xc6t\xe5\xfe'?\xb3\xc6\xc7\xc0z\xd1\xdc\x85MffJr?\x8c\xfa\x00\xac\x04\x12\xfb\x84\xb6\xdb\x199\xbb5B\xa6\x0b\x89\xda\x16oCRZIy@\x1bf\xa3\xf8\x85\xe7\x17s\n5\xcc\xa3e\xfb\xcc\x0bT^\x94\xfe\xb7/J\xb5\x93\xcb\xe4\xa6\x13_\x10\xcc\xa7\x1e\xe4o\xe2\x9c\xa4\xb1\x1f \x01\x1d\xdd&\xa8El\xdb\xae=\xc4R\xe5t\xe8\x9bi\xab}\xe1w\"\xd3\xbaF\x9e{\xff\xae\xdd\x90\x92\xbe\xde$#1C\xcah\xd7\xac\xc7?\xbdTS8\xa9\xd5\xf7\xdb?nH\x8d\xbcLVwi8_\xe4`\x07\x0e\x8c\x06\xc3}\xf872\x85\x9f\xfd\xdcT\xec\xefdz\xcb\xea\xabl\xc5\x02\xbaz\xd1E\xb0,\xff\xe3\xf6\xffQ}\xdc0\x1f(\xfa\xcd\x05u\xab\xd6:)\xa9D\xbd,\x91G3t\x02\xc8\x14\x16\xe1\xd9\xbe\xa5\x10\x17\xcdh\x95-\xe1,\xc4\x86\xafl\xeat\xf49plo\xcc\x9f\x0c\x92\x90\x85\xcbaR3Q\xa5$\x958\x81P1Y8\x81\xd0\x01\xc2\x9c\xfe\xda\xa8\xb32}L\xddb+u\xca\xaf\x13\xcf_\xad\xa2;\x9eP\xa9\x95\xbf,+\xaby\xc3\x86z\x82O\\\xe5D`F\xa0\xd4\x11\xc6\xc6\xa9\xc8\xcb\x93rG\x17\xde\x1f\xff\x9b\xe9G\xc2\xf2\xceZ\xd0\x1aKR\xc6c\xacy\x814\xeai0\x92\xd2\x85\x0eGk\xd7\xb4\xa2-x\xb2\x9e\x9e\xfa\x81C9\xc7\xd8\xb4(\xcb\xade\xf7\x95T\x9e\x0f\xf6zV\xc8\xdc.\xb8\x0f\x8a\xe3\x9e\x1b:\xd5\xf3?\x81A\xaf\xda]\x16*\xbc\xde\x9a\xe8i\xea\xc7\xd3diw\xfan\x18\xbak1\xf36\xdb\xf2\x82$\x0e\xfc\xdc\xae\x85\xc4\xc74\xc6cJeX\xce\x95\xe5\x82\xbd\xb9\x19\xc3&\xa4Ne\x0e\xb1\xb3\xff\xf8\xe43\x8dh\x06<\xb5e\xe39Sp\xec6\xe6\xcb\x07\x83\xd5|\x05\x8d\xdcc\xd9o\x87\x83\x81\x03\xa7\xfa\xd2\xd0-ZF\x94V\x06Y\x0d\xe9\xf2\xdd\x188.\xa46\xe5\x9d\x13\xa7\xdd\xd0\xdd\x14\x8c\\\xb6v\x7fh\xb4g\xcdInQ\\\xc1\xacW2q\xd7t\xfc\xb2\x9e\x07\x94aKR%\xdc\xb4\xc9\xf3\xcbBw\x0c^7\xe5\x0cE\xb2i\x0f_P\"\xf1\x11KTsP\x89\"\xeb\x9a\x17\xc7e\xce\x88F\\\x9f>=\xc1\x9d\x11\x9002l\x9aY\x94$iW\xef\x0c]\x0b\xb3\xf7\xfe{\xf4\x81\xd9\xc44\n\x03\xe6\x12\xc3v}\nc\x88\xd7O\xe8!\xe1\xa4Q\xaf\x87J\xe3>\xc3\x99\xa6\x91\x1b\xb4\xc4qn\xf4\xc1 \\R\xcaK\xddh\x98\xd6\x88\xcb\xd4\x93\x9d\xfe=\xd1\xb0n\x9aO\xea\x9d\xa91p\xf2\xa5\xf0\x8c\xba\x05\xd9\xe7\x0c&\xd5\xa9[\x92ofC\x08X\xe3\xd05\xef\x97\x7f\xa0\xe7\xaa\xd9Gr_\x9f\xc8b\xcf\xe4\xc3\xd9\x89\x0eR;Y?\xffZ\x97\x98gO/\xe69\xd0Iy\x98\x87Y\xf3\\\xc4A\xd5\x1f3\xbd\xff\xb0;\xc7\x9e\xd9\x14.cF<\x1ao[\x96\x94\xdeGk%\xcb\x82 \xb9\xd4\xb9\xf7\xa2\\\x7f`\xf0\x06\x8f\x1a\x11\xd8C\xb3\xe7\x1cH\x82']8`!^\x9ad\x97]\x84\xaaT\\\xe3%\xe72\xef<6\xa6f\x02\x0ds\xc21X\x1f,\xd8\x84\xcdMM\xf2oq\xddj\x93l@\xe3\xdc\xc1'\xad\x92\xf9\x99H\xeb\xa2\x8dfB\xaf\x7f?\xfb\xdb\x184\xf6#\xef\xcf\xce^\xe9\xd3\x17\xce\xfc,\xffw\xa2\x86\x873mg\xcc\x1a\x90\xc8A5\xb5n\x0b\xcc[]\x9f\xb6\xf2\x14\xacs\xca\xfdX\x1f\xd1X\x9f\x98e\x1d\x1b!NOk\x04a,\x97\xd5:\xf4\xdaj\x97{lT\xd4\x9bu\xd6R6P]_\xc4\xa5\x9fLq\x86N\xd2K/lNl\x13\xf2s\x92\xffL\xfc/\xeb@\xfeQ\x00\xd90\x84H\x84&<6\x86\x7f\x088zi\x05\x92\xf8uJ\xc8o\x9dBn\xa8*\x8f\xd0\x1e\xd4\xa3\x8b\x9b\xfe\xc2\xd8vO\x9e\x80\x00\x13\xfd\x1d\xd8u\xb6K\\:\x02\xb0\x8d6c\xfc\xee\xef\x0fe\xb8\xe77\xd9Y\x19yC\xfb\xf5Z\xb4\xc9\xef\xdf\"]\xd6W\xadw{\xcf]\xb0\xaa\xc8F\x0d\xf7w\x8e\xf2\xe4xG\x947\xf7^\xbe={\xfe\xe9\xea\xc5\xdfPs\x847\xf8\xeb\xfd\xd9\xcfW\xcf?_\xfc\xf5\xea\xecS\xf5\xe0\xfc\xe3\xd9K\xfa\xe0\xea\xc5\xf3\x8b\x97\x7fm<.\x1f\\\xfc\xf5\xd3\x87\x9f\xdfkJV/J\xc5\x05\xedCLn/(}\x1b\x9f\xa5\xed\x9eg|u4\x97\x0e\xc5A\xda\xa8\xcd+\xff.J\xfc\xe9\xb8%\x83$\xd4\x89y\xb5C\x18/\xf3[z\xa59@\xca^\x91\x8e^\x9c\xafH\xf0\x8d@\xc9\xbe\xbd\xf9o\x06\x81&\xbe^\xef>\xbf\xba\xa6;\xd7j2\x01\x0d\xc4]~\x9c\xadH\xa0i92\x1f\x02\x8dO\xb5\xad\x06\xbac\xa5\xfc\xd4/\xf2\x85\xa6\xd5Y\xedT\xc2\xd2\xb8\x80\x95b\xab\xaa\x18;\xc9\xaa\x92W\xd7w\xcc-\xb37_\xb6\xaf2X\\\xc6\xaeK\xdcY\xba?3\xa5\xc0\xe5\xda\xe1C\xdaH\xed\xfb{\xb4\x0fa6?\xc4\xa1\xef*\xeasMfs\x7f\xc7\xe1\xec\x96\x0b\x16s?5E\xaf\xeaE\x98H5\x0f\xf4\xee\x88\xfb\x0d\x19\x0bO\xf7?\xd03\xb0\xfb\x03\xbd\xf0e\x7f\xb0\xdb7\xdc\xb1\x10nli\x98\xa1\x98[U\x01W\xd3\x0c0\xe6\x16W\xe2\xd6\xd7\\\x92r?c\\@\xb6s\x04\x9b\x9b9\x1cCl\x0c\xb3\x99\x1a3\\3\xafa\x92\xdb)f\xcfK'\xc3\xcbv)\"\xbd2\xd9\x0b\x98\x9f@\xa9[{\xccm\x0fO \xa9?\x9f\x13\x96\xfc\xaa\xf6p\xe1\xa3\xe5J\xfda\x86%\x8b\xbauK\xb6\xde\xdc\x0f\x07{}$c*\xd8$\x93\xd0\x13)_x\xbc\xb5u\xd4\xe4C\xb8\x94~\x12_\xb2\xfc\x83\x92\x19\xb0\xf6\xac\xd8\x1a>z\x8f\x0c\xba\x93\xd1kFS\x0d\xe4\xeaj\xea\xe7\xfe\xd5\x95\xb6_\xa9\x9d;p\n\xf1D\xc3:\xe7\x94u\x16\x8f\xc7`-\xfcla\xd1\x134\xf6\x96\xfe\xea\xd1\xe31\xb8C\xed7\xe2\xf2\x89\xf0v\x06w\xa8]\xfd\xc6\xec\x11\n\xd7\x84\xeeD \x9dlA\xde\xa5!\x85\x86.:\xc6)\xf86*\x93\x12\x9b\xe0\xba tg\x89T\xddc\x94\xb8v\xc0M\xee\xdbZ\xbd'\xde-\xb9^\xf9\xc1\x97\x8fIt7\x0b\xa3\x88\xab\xe4\xa7d\x95\x92\xa0\x99\x17\x14=\xdeW~\xbe\xc8\xb8=I\x15z\x99\x7fY\xde\x9e\xb0\xf4\xb3z\x06\x8f\xb8`\xb1dM\xda\xd8f\xb5p\x91\x9a\xf0tk\xc5>#^\xd4x\xad0\xd6\xad\xfd\x0c\xffG\xfa\xa8\x11\xc64\xfa\xd8\x9c\xad\x13\x18>R_\xab\x9a&\xd4\x07@w\xdd\xf6\x7f\xda\xa7\xe3\xc1\xfdd\xb8\xf5\xf4\xf2\x97\xe9\x8f\xce\x9f\xb7\xbb\xb6\x88\x01\xa3$\x95\xb1\x8f>\xef\xfb\xc6\x86\xfd\xff\xb3\xf7\xef}q\xe3\xc8\xe20\xfe\xff\xbe\x8a\xc2\xe7\x9c\xac=\x18\x03I&\x97\xce\xb0,\x03\x9d\x1d\xce\x06\xc8\x0f\xc8\xcc\xce\xaf\xc3\x971\xb6\xba\xdb\x1b\xb7\xddk\xab\x9b\xb0\x9b<\xaf\xfd\xf9\xa8$\xd9\xb2,\xd9\x86\xb0{.\xcf\xd7\x7f@[\xd6]\xa5RU\xa9.T9\xd3\x18\n\xc9`\xc4*{\xf2\x04\\\xd5EI\xde\xf0A\xb2\xb1\xc7M\x87\x0b\x1e]\x80xX\x80\xc0\x1f`k\x97\xff\xfa\x0f\xf4e\xcfi}\x8c\xc5\xfb\x80\x99\xd2]L\xf5\xcd\x82\xed(\x17\xfa5\x8a\xe9\xa2\xf9z\x8b+\xd8\x18\xf1\n\x86\x03P\xba\x82*\xae}\xc8\xa1\x83\x90\xd2\xb1\xa1`\x1f^Y\xc8\x9dg\xfa\xfd\x99 w\x9e\xe9\x0e\xc6\x05V}\xa6\xd3\x99\xa5\x99*M\xc5%\x81^\x0d^\x18\xb9\x85\xd7&\xa4S7\xf7\xdats\xea&Zj\x8c\xa9\xa1\x96:\xc7\xd4\x95\x96\x8a\xe1\xdd\xea%q\xb9\xe1\x91\xe2m(\xfc9!\xb7W\x08vk\x97\xbb\xe3`\x7fQ\x97\x8c\xbb\xacqw=\xae\xd5\x947\xca\x9e\x84K\xb5X\xee\xf1\xd01j\x96\xf7E\xbeHJ\"\xb3%\x01\x0f*N\\^_\xd8\xc8|A\xa8Z_\x88YV\x8d,\xbf\x90\xf0\x93\xd6\xec\x8ao\x0fw=\x08ZK\xe3=_\xa62\n|c\\9r\xcf6\xfd\xbc\xd8\x9d\x8b\"\xf4\xc1>\xa4n\xc6\xdd\xdbh\xd7~\\\x81P*)\x18/\xf7\xf1Z>\xea\xbc\x967\xac\\\x9b\xa6\xc5z\xa6\xc3\xea\xc1\xe9\xb4T\xb1\x1cVE\xb5\xca\x96j\xe2a\xd5\xe0\xfa[\xaa\x98\x0f\xab\xa2\x82\x8fFn\xa3\x8a\x81\x8235\x05\xf2AV\x0d\n\x89\xfd\xecu/\x95e\xbf|\xce5\xaeG\x88nF`\xb4%\x13}W\xb4arq\xaa\xf49F\xb4v\xbf%T\xe1\xd8\xf2\xd5\xce\x90Au\xf2\x0d;\xdc\xb9>\x1e\x82\xe8[\x97x^\xcdJ\xc8x0l\xf3f\xf0\x03$o<\x94i\x91I\xee\xd2I\xb6\xb9y\xe5]\x19\x07\xcf\x8d\xf2\x90\xd7\x16\xf4\xa8\xa6_?h\x02\xccr\xfb\xfaZ\xb45\xb4\x0d\x1a\xacIQ&\xdc\xef\x92PE\x92IA\x92\xc5\xe4\xf3\xd9\xd4u\xd6;\x81\xe3u\xe7\xd8e9\x9e<\x11\x02:s\x8eW,\xcf~\xcf\x85cF>\xd3\xcb$\xd2n\xb1z\xf4u\xfaUX\x18V\xad\xd5X~\xefDa\x9a\xde\x84\xd1'\xa7\x92\x1eb\xf8Y\xb8!\x8aZ\xcb\xef-\xaa\xc5ka\x07\xc7c(\xb4\x94\xb3\x8de$\x8e4\x06F\x92\x0f\xa2\x85\x9d\x1e+_\x8b\xc2\x97|$*\x08\xe4LZ\x8d}\xa0G}K>\xed\x1a{ie\xf5\x11\x1aT\\]\xdb\xa2X&\x1f=\x10\x89\xfat\xe9w\xc9\xe7Q\xbbjU>\x93Ooo\x9f\xffk{k\xd5N\x93OW\x87\x07\xd9b#.D\x12SRS\xee\n\xb6\x90\xb3 \xb9\xb9B\xc8\xd0\x9e\xdc \x1e$\x93ps\xf3\xaaa\x8d\x10\xf6D\xe5\xfd\xe6YQ\xcd\x03zt\xfd\xbf\x0e\xbd\x81\xd68<\x14\xe3\xd5hL=wU\x07\x89\xdf{f\xcdx\xbb\xa6\xb5\x89\xcc/\x84\x97E\x93<2\xe9;\xb2\x92\x0c\x91\xe0$\xbb\xc2s(S\xfc\xc2u\xd9\xb5Y\x84\x10y\xf5]\xa9F\xfe\xca\x83i\x91/\x00\x9d\x83\x85i\x9aG\xca\xcf\x0fY\x19NI+\xe1\"\xcdo\xb5#\x81\x91\xa3n\xe2\x16\xdc\xa7\x0c\x0d*w\x94\xa1\xe7C\xe2\xe6<~b\xc8\xdb\xea\xa7G\xf0h0x\xce4\x1f\x0c\xceA\xe34\xc8rq\"\x88\n\xcc\x94\x8biRX\x0f\xf9\x1c\xdc\xb3\x8b\xbdg\x97\xd6\xc5\x8e\xeeI\xb0j\x9b{6I\xae\x0d\xc1\x14\x98\xc2\x05\xc2>\x14\xc14\x91Z\xc1\x8c\x86\x13\xaf\xcaoT\xb07\x8c],z\xaf\xf2\xe9?a\xec\xf5\xd2\x98\x16E\x01\xbe\xff\xc2\xce\x15\x01\xeb\x81`G{\x05\x87\x83h=u#e\xee\x8b\x97\xdf{\xae3\xcd\x8bq\x18\xcd\x9dA\xa8\xa8O\xe3\xf5\xd9\xaeY\x10\xf1\xcc\xe2\x06r\xf7\xb5.)\x10\x82\x88W\xaa\x18\xd7\x1dL\x8c#R\xc3\xf8$+T\xcfL\x8d3\xdb\xbaC\xfe\x01\x9e6\\\xe5n4\x84\xban)\x9c\xc3r\x97\xb1D\xb0/\x0c\xc2\xcb\xc6\xd1\xf5T\x04\x8c\x94\x8c\x0dFO[\xa1I\x13\xe7\x0b6\xd0n\x08\x93\xc3J\x7f\xd3\x89\x1c\x11\x93KI#2\x04\x97\x92v\xebx\x9e\xcf\x0d\xe1\x1b\xa3\x82Z\x91\xc6\xe0\xc6\xb0\x19\x96%kgP\xc5\x9fI\xfbs\x1d\xa2G\x8fK\x0c%\xdb\xfen\xee\x96\xac[ld\xb5x\xf6\xab\x17\xcc\x86\xf2\x83b\xa9|\xdd\xef@u\x0di^\x15\x945\xf1@\x06\xe6\xc5I\x1b\x8b\xf3LY\x1c\x86\xceh\xa5\xec\x03#H\xc4=\x88\xf8\x8e\x16\xe8\xcd\xef\x19\xb7qS\x1a\xe5\x1fqA\xd3\xba\x0f\xca\x17\x0d\x18$ \x945 \xac\x0c\x80P\xb6\x00\x01},\x98\x16\x1d\x05\xd3\x86%G\x9bd\xc3J7A\xc1\xa0\x01\xa4\x82B\xa9\xafv*V;\xf5D\x0c\xbd\xe8~(\xa9\xc6\x12\xadp\xb9\x02I<5_\x01={f2\x18\xcb\\\x8b\xb0rwW\x17nrt\xb7\xfbB\xc7M\xdc\xa7D[R\xa9\xaa\xbd\xb8TS\x82\xd5\x87\x88\xbe\x05\x97&\xb8\x8e}\x98\xfb\xb0\xf6a\xe1\xc3\x0c\xf6`\xa9\xaa\x89\xdbhU);n}dD\xa5Y\x94w\x87\xc2\x06\xde\x11\x06\xd9Oa\x04:\xbae\xcf\x0d\x92\xe0\xcd \xb6q\xc6\xb3\x1e\xe3\x8e\x84r8i\x99v\xb0\x1a\x13wf\xd4\x19E\xba3\xe6\xa6\x072F\xef\x1b\x88\xe1\x0fp\xf3\x06n67\xcd\xd46\xab\xd1]\x08G\xacwn\xe8\xce\x91T\xbd\xb9\xf2\xf0\x8em.\xee\xd8\xee\\L\xf3P\x06\x81\xb7_\x0b\x1e\x0b\xb2\xba\x9a]4!\x1a\xcd\x7f\xcd}\\\xc3\x1eTq'\xde\xc0\x066\xb9F\x8e\xc3\xf5\xbc \xce3b\xb8\x14\x06\xb5\xb3\xb9\xbb\xf6\xe1\xce\x879\xb7\xc5\xe3w\xc4\x03\xba\xf6\xd5\x0b~<\x1f\x1f\xfc\x99\xc7j\xa5\xc1\xf9\xf8\xf2\xc3\xf9)\xec\x89\xdd\xf6\x8d\xe7\xb3\xd5'u\x11\x1c\x8d\xdf\x1e|xw \xfd\xfe\xa9ww^\xf5\xf8\x9d~)\xfcL\xbf\x12\xff_\xdf\xdb\xdf\xb4BR<\xb7\xdcm\xec\xe8\xdb<1\\\xf1\xdc\xdf\x94\xd1rH\x85Fm\x8aD1pD\xee\xc5\x0d\xb1\x18\xddd\x83\x00\xad6a&\x1f\xec\x96\xd6+W\xa8\x869O_\xeaGCU\xcchc]}\xb5-\xdc\x0e\xa7}\xd9\x7f\xdep\x05\xa7\x07\x82\xc9\x8cxp\xf8\xda \xb39FQ\xde\xe2(\x10\xa6I\x16\xa6ig\xd7:;\x0eP\xb9&\xeb\xcf\x08r\xa4Q\x9a\x97b\x00\x9d\x05\x9aF\xe6\xdcu\xc5\xe0\n\x86\x0c\x0e\xba\xe6\xde\x93\xa8\x15{\x1a@\xba\xd2\xb0\xd9)\x81d-\xb0\x11s\x03a\xdbu\x8b|V\xed\xab\x05\x90\xd8\x81\xfb\x83GM?\xae\xff\x93U\xbcNh\xe7u*\xcffA$\xa0\xf8\x80\xbaa\xa7+\n\xae\x01\xd6\xa3T\xc5\x88,\xe7\xc9\xdfV9}\xd3\xe1\x8b\x83=7\x05 ?\xd9\xb3\xf0\xd6^\x0di-\\,\x1f\xa5\xb1\xd7C\x1a\xfb\xb7\xcfO_>Fk/:\x14\x0d\xa1j-}\x94i|\xd1\xa3b\xc8\xdb\x9a}k[\x83t\xd8\xa2<\xa3I\xb6j\xdf\x0c\x81\x95\xc5\xe3|0j\xf6\xbb l2\xfcX\xaen\xf8\xb5\xb5\xbb\xf2!\xf4\xe4e>\xe3@\x19+\xbc\xa9#:s\xe5b\xaf\xca\xfa\xf7Y\xc9v\xe50\xd2C\x0c<\x92\xbaH\x83\xea2\xfa\xa67\x851\x0b\x852\xb5\xd9@\xaf\xcd\\\x96\"\xbf\xce@ [\x92\x96FId\xb8\xb5\x9d\xa2p\xa1\x99\xb6l\xa3\xabvx>\xf6\xd0|yp\x93\x17t\x04N\xc8\xfe\x1b\xd0\x1f\xcb\x92%\x0b\x0c\xe11\xce\xe2\x11\x94\xae\x13\xca\x04\x92\xc5\\\xff\xb9\x99\xd4]\xcb1%<\"H\xb3\xaeD&\xeb5\xd6\x1f\xba\xeb\xbd\xa0!\x1b\x89Zg\xc9\x92\xf4\xfax\xa2\xb1\xae\x1f\xd3U1\x02\xe7&]\xe9&\xed\"\xc3a\x98\xbdO\xc3\xbb\x118Q\x98-\xd3\xf0\xae3\xdb\xe5\xbc\xc8W\xb3y\x9d\x9b\xf2\x04K\xa1y\x98\xcd\x08\xcb\x8c?,\x99RT\x01w\"\x8c e\xce\x92/\x96y\x99T\x0b\xe6Du\x82uu\x94Bb\x1e\xd5b\x1dS\xa6\x14\xfc\xb0\x8cQ&\xa0\x96\\a\x9a\xadhF\xc9gzB\xb2\x15\x16\xc2\xb7\x05\xc9V\xb6\xecK\x9c\xf8|i\x9b\xf5\x15v{e\xe9\xa9\x12\x1ek\x04N|\x93v\xcc\xe1Q\x11\xceX\xa6\"\x9c\xd93\xf0\xd9ey\xac\xd3\xca\xb3QRT\x19)\xb1\x80\x16f\xfd\x9cP\x99\xf3sb\x1bG\x11\xce0\xc0\xa3\xc8\x99\xb2\xdf\xf6\xacg\xeb\xaa\xf5|\xdd\xd5\xb8\\w\x96\xb3c\xc1\x8f\x8a|\x89\xb9\xf2\xa5%\xc3\x8ao\xd7\n\x9ec\x91\xd0\x05\xd7\xe3\xc5\x92&\x84\xcd'\xe1\xbf,\xd9\xb2\xa8\xb8[R\x9eQ\xfe\xb6e\x8dE\xb6\xd8\x9a\xa5(r67\x84\xfd7gy\x9bG\xabr\x04\xce\x94\xfd7g9\xce\x96\x08x<\x02\x981\xcb\x9f\xc9\xddQ~\x9b\x8d\xc0\xf9D\xee\xe2\xfc\xd6\x82\xca\xfeL\xee\xde\x17\xa4,y\xbe%\xfbi\xcd\xf8a\xc9s\xad,\xab\xf0\x0e-\x93\x19\x0f2\x92f\xca\x8cs\xe9\xca|Bh\x18\xab\x05\x16\"\xc1^H\xc2\x0c\xcb\xdf\x013U\xe0\xb8\x118\x0b\xf6\xdb>\x07U\x108\x99\x95qW\x1dY\xcfp\xee1gn\x9b~\x9e\x91\xef\x03\x9e\xd3\xba\x11D\x988\x99\xd16\xbb\xef\xc3\x121\xdd\x92\xfd\xb7eY\x95<\xcb\xaa\xb4e\xe1G\x89\xfd\x1ca\x19\x92l&\xf2$\x99\x05\x19\xbd/\xf2\x99\x80\x9b\xa5\xf8i\xcex\x1eRRm\xcb\"\xa4\xa4kKr \xdb\x08\x9c\x12\x7fX2\x11\xf2 \xb7Y\x89?\xec\x99\xf80J\xfe\xcb\x96-\xe5\x91=\xab.\x962\xa5\xb3\x9f4LS\xde\x07\xfe\xcb\x92mU. b\xec\x92\xff2g\xbb$\x9f\xa9\xdc\xd1T\xfe\xb6dM\x16\xa4:\xf3h\xb2 ]\x87\xdde\xbe\x8a\xe6\x87a\x16\x116\xa5\x94\xbdE\xf8\xd6\x91\x9d\x1f0\x98\xd7\xde_\xf6U\xec\x17\xcci\xdf/\x98U\xeeX\xcc\xdb\xb1e\xf1\xda/Q\xa9>Z\xa5\xd4d_3\xcdX\xd1\xcfy\xbaZ\xd4P\xb7\xc6\xd7\xae\xf5\xfc%L(\x87\x96[\xfe\xcb\x92mNp*o\xd9\x7f\xcd\x04\xb4Y`\xcex(\x1e\x85\xa6\n\xa2w|\xe4\xc0\xa6\x90\x18\xb9\x8d8\x04^P\xa6ID\xdc\xa7^\x93\x1dX\xa3j\xdb?\xbe\xa2VE\x93\x94>'2\xd2Z\x1d\xa4\xb0}\x990 p\xad\xa9\xa2~\xf99:\x8f\xf9)\xcc\xe2\x94\\\xe6\xcbwdMRw\x1d\xcc\x1b \x9e\x0f\xeb\xa0]=\xec\xf5{ll\x8e\xa2$t\x9ca@\xcc\xbe\xae\x19\xdb{\xf2\xc4\x98\x1e\xd4\xd5\xb6\\\x01j\xb3X\xb6\x9b7\xb5.5\x88\xdc\x0dc?\xbe|\x01\xe3\x87\xa0\xaa\xdf\xed\x0e1\x97b\x81\xcb|\x80S\xd1\x86\xa4\x98\xfa\xd0\xed;O>b\x00=j}\x95\x16\xde\\D\"\x99\xcc\xaf`\x0f\x96\x9b\x9b>D\x13\xf6&\x82\xfcV\xaf\xed\xe5\xe6\x11 `\x0f\x92V\xc0\xc6#\xc20%\xc9\xa2\x84\x94\x13r\xd50f\xcb\x87\x08\xb3P\xcb\x9d\xed\x1c\xabu[\xa1\xc7\x99\\\x89X2+\x1e\xa7\xd8\x91{\x9d\xcb\x86Wht/v\xbd\x07\xfbfp\xa2E\xb8\xfcqu\xc3\xd6\x11?(\xb5\xf8\x12e\x08\xb3\x9d\xd4\xe5G\xfd7\xd5\xa8\xd4 \xaa}@%Gg'H~\\\x88\xf3\x96W\xe4TGqc\x02\xe4\xa1\x0c\x1b;\x9d}\x16\x01o\x95\xf6\xaa\xea\xeb:\xee\xd9cC\x0d\xc6\xc2\xbf\x1c\x9f\x1e\x9d\xfdr\xfd\xd3\xc1\xe9\xd1\xbb\xb1\x1c\x0bR\xd4r(x\x86p\xbe\xbb\x1e\x9d\x9b\xba\x92\xde\x16\xa3s\xef1\xbc\xb7\xa2dUEf\xc1}\x96\xf2\xd8\x17_\n\x01 \xf3\x04\x90`uI\xe6\x08\x15\xd7\xc1\x93\xd5\xecO\x92\xf5\xf5\xa8U\x81\xec\x10\x96G\x1a\x97u\xca\x87\"\x10\x1f\x85N\n\xbeck\x98\xc0\xba\x1d\x9b\xf7\xd6\xb0\xb6W>\xc4\x93\xd5\x15\xef.n\xc7\xbdVHy\xe8;.\xf4Z\xfb\x03\xd5\x80b\x867\xa8\x9f-\x85bK7\x1aK\xfd8\xfdhB\xcf\x90\x8e\x88\xc86<4\xe9\xfbpF\xfe\xf2k\xcfA\x86\xb7\x17\xfa\xad\x1e+\xdd\xe9Kz-\x9c\x86\x9a\n\xba\x0e\xa2\x19\xfcm\xd2\xe3\x92\xf7$\xaa\xd3\x06UQ\xa0k|$+W\x85\xc0`?\x87\xe9\x8a\x9c\xe4YB\xf3\x02 \xba\xdeq*\xae.\x90T\xc0K\xdcu`\x984\x97\xed\x80\x0d\xcc\xb41\xed:|\xd8$\xac\x82\x82L\x0bR\xce\x95~\x95\x96\xfb@\xd3R/\xf8\x18\x94\xd2\xe8\xebzZ\x87\xecR\x1fm?To_-\x06\x08\x83<\x904\xc5\xd4Ur\xa5\xd1P\xb4\xe6\x94k\xb4^\x17\xab\x94\x94\xd7\xd7\x0d\xdd\xf0\xeb(\x8c\xe6\x04\x13-\xd7\x8b\x85Bp\\_O\x93,\xc6\xdcv\xaa\xa5\xad\xf7W5-\xc8\x04~\x8d\xb7\xb5\xfb\x06\xa8\xd5\xb1`\xb3\xe0ds3\xbbB\x85\x01\xae*s\x0fO\x83\xbe6\x82(_,\x93\x944\x07a\xbaB'\xa2\xfb\x06\x96\x83M\xa1\xe3hT\x0cQ\xc6)\xecI\xddn\xda\x8e\x04\x84\x13\x98\xfc~\xe3\xf5\x18\x07\xa8\x95\xa2\xae\xfe?\xd0\x07q\xaby[ OY\x92\xc7\xda\xe2\xae\xf3:\x86oD\xa9\xec\xc9\xd4)p\xd1!X\x86\x13!\x07G\xf9\xe0\xbe|\xd1Z\xe5#\xcd\x82if\x88M\xdd\x1a\xad\x0d\x1cB:\xd0\xf2\xa5\xa8a\x99o\x01\xa3\x11\x1a^\x12\xb1\xbe\xea>\xa3\x19Doq\xb5\x81B\xb5\x8c\x16V\xd1\xef\xc3\xa2$\x05\xb0\xe9C\xc3\xb2i\xbeB~\x1f6A7K\xd7\xf6Eq\x15L\xa5\xf1g\xebK\x98b$c\xfc\xff\xe5\xcb\x90]\xdf\x9c\x9d\x1b2\xcd\x0bb4\xf7k\xb9\xb1ZK\xcfx\xbd\x93\x94Hm\x9c\x8eI\xca\x1fs\x92\x82r\x89l|\xee\xc3\x8e\xc9\xf5!C+F\x13R\"\xd9K\x93C\xc4if4/\x0dS:\x82\xa4\x9e\xf2\xd6\xb6\xbb\xd7\n\x84SJ\x8a\xff=\x0b\xc0o~\xff\xa7-\x02\xc34\xf7@\x13F\x04\xa0M\x08\"/\xdb$\x18T[z'\xc10q8 \xc5cM\x02\xefA\x9f\xf2\x17\xcb\xd0\x0cJ\x8b\xae` \x8c\x00e\x06\xdc\xe3cs.\x86\x1dy\xf5Y\xd9\xd2\xa0\xe7\x87\xd9\xb0j4\xba\xa4\xda%fU!\xca\xce\x1e\xc3N8g]\x87E\x98\x853R\x8c \xc9\xd6a\x9a\xc4bg0\"\xc5\xb4'\xa0\x8d\xbd\xe9\x95:*=\x84\x13\xe6\xbe\xef:\xc5I\xd9Z(}\"\xdc\xeee\xf2\xfe\x17\xcc\xe5\xeec\xcc\xe5\x8cP\xde\xbb\x01jo\xc2\xcb\xc1\x9e\xdeB\x0d\xef\x15\xe1\xe9\xb6\xfa1!W\xda\x1e\xfd\xea\xdf\xdf\xf3{\xbf\xbb\x93\xce\xbd\xbb\xe6nC\nn1hq\xd6\x8e\x16\xc0\xc12/O\xc2\xcf\xed\xaf+\xf9\xb5\xfd\xa9\xc4OIy\x9c\xbd\x0boH\xda>x\x94\x8f^M\xc7\x9b\xf2\xa5,\xcf\x87l\x11\xd2hN\xe2\x8b(_\x92\xb2\x8e\x0dj\xfc\xbc\xb5\xe5\xb7*C>\x05{\x8bf\xf5x4)\x9d\x10\xa2\x14F\\\xed\xbe\xe1\xa3\x82\x1f 4z\x9ag\xfdz\xcd\x0fN7\x07\xa1\xca\xaf\xea\xecaq\xcf\xf3 \xdb\xdclCr\x15\x82\xfb\xf53\xe1\xdb\x11\xbd\x04\xb2\x9f[[V\xd2\x99\x0b{\xcc\xbc+\xea\x80\xb5\xbe\xb4u\xabP)\xb7$EP~J\x96\x97\xf9'\x92\xd9\xc3\xef\x80\xa2\x11\x0f\xfb\xdc\xc5\x19_l\xcb\xa4\xc3\x1e\xf7\x0cb\xfd\x9a\xc1\x16\x9ft\xbe\x06+}\xfeK\xff\xe1a\x15^\xdb\xa2`r)\xba\xeb\xfc\xdd\xf1\x8cq\xa5\\%\xb6r\xa7V\xaa\xd4w\xbd\xa8=B\x15\x02\x8f\"\xc1C]\xc7a\xc3\x17\x0d\xf6j\xa3\xa9\xf5\x0f\xd3\xb8m\xc8IL\xa1H\x9d\xc30\xfb=\x85(LSX\x10:\xcfc\xc830b\xd4\x96\xcb\x8d{\xcew+&\xa20S\xd8\xf5\x02)x\xd2no\xd0a\x87\x08\xe0\xe2\xe6M%\xf5^\x1f\xa4\x96\xc5H`\x1f\xb4\xaa\\\xf4:\xaf\xd8\xb1\xdd\x7f`}\x9d1 S\x14\xd5\x15jD8\xcdW\xb8\xc0\xb6y\x1b\xc1!\x8dd\xf2\x97\xedr\xedt\x19\xae\x9c\x87]+\x10\xe1\xc8\x18\xd3^\xdd\x9e\xa1\xe6\x8eJ\xd1?\xc7\xd9\xf4\xfeun\xfcs\xbak\x83\xe4<[\x93\x82\x82p\xfbKsX\x16\xc9\"\xa1\xc9\x9ap\xefON\xdf.\xd3\xd6\xb9\xe9\x0c\xec\xfb\x9d\xfb\xfa\xe5\xd0\xadpd\xd4w\xdd'\xb8\xf0\xf4\xf5B\xd7\x1f\x0dE\xfa\xae\xe7:\xc7\xe3\xeb\xf7\xe7g\x97gz\xd0\xd1U+jA\xe3s\xd9%\xc8\x02)\xcc\x12\x8e\x99\xdc\xdd\xef_x\xae\x93L\x8bpA\xf4\x86\xe4S\xe0\x05\xa0\xcdS+\x8f\xc2\x12\xa0I\x10#7\x97ix\x07{\xe0dyF\x1c\x1f\xa3R\xecx\x0d;\x17\xee\xa4\xb0,\"\x96\xed\xaf\xe1:\xe4VE#\xc7\xe7\xa4(\x0dP\xe3/\xa3\xbf$Y\x9c\xdfV\x08\xc3\x0b\xf2%\xc9\\\x1e*\xa0H(q\x9d\x1fx\xd1?T\xc2\xec\xb7{\x1c\xbf\xfe\xf0q[|r0?\x1a\xbc\xba\xc2\x95\x14 \xde\xbe\x81bk\xeb\x8d\x07\"<\x8b\x12oe\x92L\x8a+\xc3\x8d\xa4\x00\xcc\xd2\xd5\x0e\xc4\xaecE\xa0\x1eP\xa3\xb6Zi-#\x02\x16\xa2v\xe9.Kq\x8e\xcf\x8f\x17N\x91\xa0\x03t\x1f\x9a\x9f\x85\x93\xd3I\x88n,\xd1\xfe\x04=\x9fka\xd4\xa5\xe3h7\xfb\xff^D\xfa\x17O=\xd7\xf9D\xeeJs`\xdf\xdd\xdd\xfe83\x96\x8e\x17\x82\x86w\xf1\x07w(\xf9\xe0~>5\xd9$\x17\x13\x871\x11\x05\xd9\xfaky]\xce\xc3\x82\xc4\xd7\xd7\x8el\xd4\xfc\x0d\xef\xfb\x1f8\xa2\\\x8e(\xe7#\xfa\xc7\xd7\xbe\xf1\xd8\x10\xab\xa38\xd2\xf7\x9b\xd7\x90~R\xbe\x97 |6\xf5M\x04\x99O\xf3wy\x14\xa6\x84\x9f#\xbe\xe4\x9e'\xb0u\x82~\x07\xd1\xa1\xacsVG]B\xbb\xb2\x02\xcd\"-T\x18;\\\xc34%8be\xe9F\xc2\x12\x19\x1e\x008\xde5#8773\xd8\x84\xc2\xab\x18\x13F\xc4\xf7\x9dl\xd6\xbd\xf0\xd2\xe2\xea\xf7\xd9\xffx\xb6\xf7y\x0f\xa9\xf4\xe2\xe5C{\xfb\xa8\xa4\xd2\xee\xeeK/\x98\x9a\x899\x93\x07\x17\x13\x9e\xea\x1b\x87\xf9\xbe\x07\x95a6r$V3!='5A\xeeC\"\x03\x84\xa2\x03\xb6\xf6foz\xa25\xdd\xecH\x87\xc6\xcd\x8d~\xcf\xb9\xea\xf5\x80\xf3t\xd74\x03\x18{\xbdw-\x19#b\xcf\x04\n\xcem3X(\x03_\xf2\x18B\x82\xa7!\x0d\xdf\x11\xc6XI\xa0\x13L\x8c\xa5\xf9\xf2Eu\xd4\x9e\x19$a?\x86\xb1\x8cW\x04\n9ju\xcf\xc7=)g\x95\xec]}\xaa\xcb3\x11\xd5J\xa0\xd1*\x11e\x13\xe8\x8eVc\x1d\xbf\x81uy\xfa\xbdY\xd4\xf0\xbdM\xce\xd9\x07\xbe F\xefd\xc8\xbf5W|k\xfc\x9b\x03\x9b\x90\xa1\xbf\xdb8'e\xf6{\na\x14\x91%\x85\x82\xcc\xc8\xe7\x96\xd3[\x01\x11\x02\xa9~\xdb\xa6f[\x14\xa5\xc5\xfd\x9b\xd3x\xc6\xc3\x1el\x07\xdb\x9aH\xc9x\xe2:\xdb\xc1\xb6\x03\x13r\xe5jnu\xaa\xa3\xd6(\x80\xef=\xbe\xe9\xa4\xb8\xe2\xf6\xb8\xb0am\x03z\x8et\xd3\xfcn\xdc3\xe0\x11\xc5\x8d\x8c\xb4\xfd\x90\xec=L(\xb27F\xac\xda2Q\x16\xa2\xad\xd6 \xc9M\xa0\x9f\xefx\xc1\xf4\xa1k\x9b\x07\xfc\xcc\xe7\xec\xa9|\xe1\x81\xa1\xfe\xf1\x15\x83.\xd4\x19\xfe\xa1Gtq\xae\x91\xc4!xAs@\xdd\x1d\xd4\x97'\x90d\x1c\x93\xac0f\x95 c\x0b|\x1c\x06\xd3\xd65I\x1f\xac\xb7\x97DH\x8cf\x84*\xfc0\xef\xb6\xd9\x8d\x07\x0fXz\x7fT\xdf\xa1\xcd\xb5\xfd\xddFs\x90\xdf\xc1\x1fc\xc2\x05iI\x9e\xc19\x89VE\x99\xac\x89\x94\xb8\x92\xcf\x94dq\x92\xcdZ\xc5\xc2\x15\x9d\xe7\x05\xfc\x9c\x84\xd1\x9c\x94i\xb8\x86w9-\x17a\x96\xaf\xe1\x87T\xfe|\xf5\xfa\x8f\xb3E\x98\xa4A\x94/\xfe\xd0\xaa#M\"\x92\x95\x04N\x8e/\xb5oz\xd6\xcb9\xe6\x82w\xa2\x84{r|\xe9\xf5\x949\xcc\x97wE2\x9bSp#\x0f\x9e\xee\xec>\xdbz\xba\xb3\xfb\xca\xd8\xe5\x9e\xaa\xde\x93b\x91\x94\x18\x14,)aN\nrs\x07\xb3\"\xcc(\x89}\x98\x16\x84@>\x05\x06_3\xb6L9\x84\xd9\x1d,IQ\xe6\x19\xe474L\xb2$\x9bA\x08Q\xbe\xbc\x83|\xaaW\xcf\xce\x11(\xf3)\xbd\x0d\x0b\x02a\x16CX\x96y\x94\x84\x94\xc4\x95\x1e/Zf\xc04II .\x9d\x13p.D \xc7\xc36c\x12\xa6\x90d\xed\xca \xc8\x9cp\x9b\xd0y\xbeb(\x9d\x83M\x92g\xbe\xf0s\xcdz(?\xa7\xc9\"\x11\x0d\xb2\xe28\x8b%\xd0\\\xaf{U\x12\x1f\x07\xe5\xc3\"\x8f\x93)\xfbOp\x0e\x96\xab\x9b4)\xe7>\xc4 k\xe9fE\x89\x0f%K\xc4\x05\xf4\xd9(\xb7\xf3\x02J\x92\xa6\xac\x86\x84\x94\xc6\x89\xa9\xfb\x8eE\xf0\n\x80-\x06\x15\xd3\xcbz\x05\xb7\xf3|\xd1\x1cgR\xc2tUdI9'X&\xce\xa1\xcc}\xbd\xfarU\xdd+\xb0\xd2\xd3>\x1a\x1f\x81sp\x01\xc7\x17\x8e\x0f\xbf\x1c_\xfet\xf6\xe1\x12~98??8\xbd\xfc\x15\xce\xde\xc2\xc1\xe9\xaf\xf0\xe7\xe3\xd3#\x1f\xc6\x7fy\x7f>\xbe\xb8\x80\xb3s\xbd\xe6\xe3\x93\xf7\xef\x8e\xc7G>\x1c\x9f\x1e\xbe\xfbpt|\xfa'\xf8\xf1\xc3%\x9c\x9e]\xc2\xbb\xe3\x93\xe3\xcb\xf1\x11\\\x9ea\xfb\xa2\xe6\xe3\xf1\x05\xab\xfbd|~\xf8\xd3\xc1\xe9\xe5\xc1\x8f\xc7\xef\x8e/\x7f\xf5\xe1\xed\xf1\xe5\xe9\xf8\xe2B\xaf\xff\xed\xd99\x1c\xc0\xfb\x83\xf3\xcb\xe3\xc3\x0f\xef\x0e\xce\xe1\xfd\x87\xf3\xf7g\x17c88=\x82\xd3\xb3\xd3\xe3\xd3\xb7\xe7\xc7\xa7\x7f\x1a\x9f\x8cO/\x038>\x85\xd33\x18\xff<>\xbd\x84\x8b\x9f\x0e\xde\xbd\xc3\x96\x0f>\\\xfetvn\xea\xfd\xe1\xd9\xfb_\xcf\x8f\xff\xf4\xd3%\xfct\xf6\xeeh|~\x01?\x8e\xe1\xdd\xf1\xc1\x8f\xef\xc6\xbc\xe5\xd3_\xe1\xf0\xdd\xc1\xf1\x89\x0fG\x07'\x07\x7fb}?\x87\xb3\xcb\x9f\xc6\xe7\x98M\xf4\xfd\x97\x9f\xc6,\xa957\xa7pp\n\x07\x87\x97\xc7g\xa7l\xcc\x87g\xa7\x97\xe7\x07\x87\x97>\\\x9e\x9d_V5\xfdr|1\xf6\xe1\xe0\xfc\xf8\x82\xcd\xde\xdb\xf3\xb3\x13\x1f\xd8R\x9c\xbdeY\x8eO\xdb\x9d>=\x1d\xf3J\xd9\xaa5\x17\xf7\xec\x1c\xdf?\\\x8c\xeb\x9e\x1e\x8d\x0f\xde\x1d\x9f\xfe\xe9\x82uH\xcd\xacC\xcdv\xe3]\x9e%`!\xf7\xa5\xf4\x02\x92\x8c\xc1g\xc4\xe3\xfc\x8a\xf3\xb5J9\x12\x97$\x8d\xc4s2\x1b\x7fn:\xf1S\xe2oAS\xc7\xdd\xd88\xea\x874Z\xb6q\x10R&AE\x04\xaa}\xf9\xab\x0e\xca\x00#dI\xa8\x12\xa6\xc1XU\xa5x\xc26<\x1a\xd0\x19\xbc\x92\xf7w\x95M\x89\xa7\xb2U,\xc1E%\xa4\xcbdA\x1a\xd2.k%|\n\x1b\xd5\xf0$\xa3ZVK\x17\xebCF>/I\xc4N\x992\xa1+\xe1\x83e\xd0\x8a\xe4VI\x97\x14\xd3\\_#o|}\xedT\xf7PUh\x99\x96\xb0\xab9ak\xe1\x94\xcbH%\xda\x00\xc1\x10\xe0h\x17\xad\xccd\xd4\xfa:\xd0G\x1d g\xe7\xaa\xd3\x96\xc6R\xefS\xaf%\xab\x9c\xec\x18\xae\x14\xe5M,7\x9e\xec\xce+*\xe4jz\xb5N\x1aZ$\xf3\xeb\xf3\xaa\xbc\x0f\xbb\x06\x9d=k\x14M\xc3\x04\xa0\xf9]%\xe0\xc4\xb7\xa6~\xe0\nidA\xb2~\"w\xa5\xbb24iu\xa1\x0f\nc\x84\x12\x9f\x90\xfb\xa2G\xe1I\xee\xa2gz\x1e\x19$T\xc1\xc2\xd0S\xd2\xe8\xa9\x8c\x9c\xeb\x86\x93\xb2\xba\xf54h6\xaay*\x90%f\xeb\x06\xf5Y\x0b\xa5\xea\xc9\xd0x\x8cm\x03\ntN\xd5\xdd\n\xa8\x8b\xa2\x85G\xaf\xee\x83\xd9~i\x8e\x0c\xa35\xe5\xe2\xba\x97\x8bw\xb3F\xa2\x90\xf9\x8a\xb7\x04-\xd6\xd5\x94\xb6\xf7-\xf5\xf9\xea\xf9\x90[s|E\xdd\x96\x11?\x06\x9a\x13\\\x88O\x86\xd5\xa3\x8d\xd5\xa3m8\xa3ze\xbc\xd7\xbc\xc2f:\x0f,l\xec\xa0!d%\x1bMhA1\xcd\x80\x94\xcf=\x11Oq\x10\xbf|\x1f\xa5K\x9b\x00\xbb\xbd\xf4D\x89\x92\xc4\xd6\xd6b\x94\x88\xcc\xba\x01u\xb4\xd4{qZ'W(\x11n\xe7\xcf\xb8>\xba\x1et\x9a=\xea\x8e\xa7\x86\x1do\x0d7,Q6\x9d\xe4\x96\xbdc\x0c\xb9\x94\x08\xffqO\x9e\x98\xa6\x85\xf1\xf7[\xbb\\\xc6W[\x08M\xf2+6\xbcb\x92_a<\xf7\xc3\xa4\x88ViX\\90\x92\xa9\x04\xb3\xf9\x90 \x97\x0e;\x08P\xe2\xa3!\x00\xaa)\n\xac!\xf6#\xe56ih\x9f(\xcc\xd3D\xda\xd0\xf2\x0bR\x96\xe1LV!\xdf\xf6\xea/C+*i\x18}\x12\xd5\xf0\xdf{2\xd5P\x85\x14\xc57w\x04\x03\xf0 \x06\x922\xde\x06\xe1m\xca\xe4\xad\xf8\xc2-?\x84\x1f_\xe0~\xd5\xf2\xecn\x91\xafJ\xc7\x83Mpp\xfe\x1f\xacP\xf8\xfd+\xf35\xe3\x0bc\xc8#\x96n\xf2|\xcc\xd2\xf5k\x80\x95H\x7f\xed\x99\xcc'K\xbb\xd8\xc9\xa4\x10\x8d\xda8J\x84\xbb\x1d\xae\xf0j\xd0\x9d\xe2zS\xdc\x19? \x0b\xd7{\x03\x9b\x9b\x14~\x80\xcc\xa8S,g\xa2\x1do \xa4\xec\xbc$\xd4-0\xfeW1\xd9\xbd\xb2\xe9\xed\xd6\xbf\x14\xa5'\xde\x07\x86\xac\xfdF\xb2P\x8f\xc2`\x1ceS\x15\x9em\x94f\xe2{\xe9\xf9\xe0\x9c\x84K\x9b\x10x\x90V\xbc\"Un\x85\xd0\x13\x10e\xf1\xea\xf8\xc2\"\xd2|\xd1\x12\x81\n\x88\xda\xd5E\xf4\xa5H\x7fi\x84\xb4\xd4\x0ei\xc2< \x0ei\xc8\xad\x140\x1a\x99\xd1\xca\xaaL\xfe\xce\xf1\x05\xfbaX\xf4\xd4\xb0\xe8\xb9\xdfH\xae\x16=i\xa6\xf3E\x0f\x9b\x89|\xd1W\xcdD\xbe\xe8es\xd1S\xe3\xf2\xa8C\x1e\xacN\xdb\xf0\x9b\xb2\xb5\xcb\x1d\xa7\xd0\xca\x9c\x98\xeb\xdcK\x1f$\x9b\x9b\x19\xfc\x00\xc5\x1b\x0f\xc8$\x87M\xc0\xf81\xed\xb05\x92o\xd3\xe6l08\xbdx\xaa#\x1c\xa1\xf2\xfcZ\x07\x1bcL6\xa3\xaaS\x0b\xda\xba\x84\xc4m\x18\x0c\xd5\xe0\x8a]\xec\xb9\x8a\xb1\x90,@B\\Q\x1e(\xdc\x90\x1b\xb6[E\xc7Z\x8dj\x10\xb8V\xbe\xaf\xba\x03\x1dF\x83\x9a\xf7\xf4\xea\xbe\x8b`>%\x9e\xebkcZ\x83\xf6t'\x9a\x97\x8c\xf6\x14'\x03\x16\x0eq\xd37\xaa\xb6\x08u\xc7A\xab\x99\xb3\xaf<\xe8L\x15E\x15\xd56\xb8\x87\x92\x8dU;\xbd\xd9\x9ey)\x06!\xed\x0e\x1b\xb1z\x95\x9e\xe9\xab\x015\xf2m!e\x90\xbaB\x16\x8e\x08\xffl\xd0 \xcbcry\xb7D\xd2\xc9d\xfe\x88\xf7Af:\x92;\xa4\xc7zH\xa3\x1e\x83\xe9%\xdfW8\xbb\xd5\xd4\xec\xf1\xab&\x19t^\xb0&&\xbf\xe0l\x1e\xdd\x15\xec\xc3*HJ-7\xb2\xd4\x9a\xde{{\xfeAgPv\x9f=\xf7\xaa\xcb\xd5!z7\xafwv^\xee\xbe~\xfd\xf4\xfb\xe7/\x9f\xef\xbc~\xbd\xfbP6\xc5\xe4\xbf\x1d\xe7\xf1\x0f\x8c(\xc7_\xff\x81\xbe\xf1\xb93\x02\x02?\xec)\xa2\xb0\xfek\xb1{\xf5\xa6\x1b1I\xdc\xde\xba\xd4\xed\xe9\xceC\x80\xfb\xe9K\x9d\xc0\x04\x01\xdd\xdf\x08\xc1l\x13\xe4\x8f\x00\xc1\xd5NH\x1a\x10\x8cU\xa3\xb9cDJ\x83\xc5\x9env\xd0\xca\x00\x9d\xf7\xe0 \xe5]u\xeb\x05\xf9\xdb*)H\xe3\xc5uV4I\x1d/`\x03\xb3xb\x01U\xae\xfc\xe5\x8b\xdc\x8e7 \xdeD6^du\xc6zz\x02[}u=\xfbf\\=`3v(W\x99\xaf\xd6[FT\x0c\x04\xb6?\x06_>N\xdc\xfd\xd1\xe4\xffL>^]}\xf7\xc5\x9d8\xbf\xbf\xf2\xdc\xfd\x91\xbb\xbf\xf1q\xd7\x9b\xfc\x9f\x8f\x1f\xaf\xbe|\xfc\x18x\xdf\xed\x7f\xdc\xf5>\xea\x81Yx\x00\x98\x8f\xb7\xdf\xfd{oH\x07\x8b!S\xc3\x8eI\x17\x8bV\x92t\x01\x98F\"k\xc3\xad\xb0\xc7\xc6\x1ed\x08\xd4%R1JB\x158B\xa64\xdc\x0em\xa0F .?\x8f\x05\xc2\xa3\xc8n$\xea\x9b,A\xf9\xf6H\xa4\xd3<\xf7^\x86\x0e\xf7BD\xf7\xa4\x1f\xcd\xf2\"A\x99pm\xd3\xcaE\x17\xf5\xc1\xb9\xbe&\xe5I\x1e\xafR\xe2\xe8\x1a B\x1bAU\x08AC\x9b\x05Y\xe4\xc9\xdfI|\x11.\x96)y[\xe4\x8b\x8bhN\x16\xa1\x90*\xf0\x8f\x87\xa8,\xf8\x97\x93w\xe3\xcf\x98\x8d\xb3\x10\xf8\xf3/\x8bT+\x94dSR(\xefe\xbbfq\x00\x824\x81i\xd4\xac(z(\xec\x98\x89\x1b\x0b\xdd\xcc}\xf1\xfd\x0b\xcf\xb0\x0f\xf0\xd3\x8b\xd7\x9e\x91\x97\n\xed\xeb\x83\xa0\x10\xd4\xf3(T\xf5\xdaXKFF\xd0\xddZ\xfd\xae\xfdk-|\x19\xb6+\xe1\xa2\x99\xe1qm\xa5,\xa7\x95\xc7\x10F\x8bg\xbd&\x8b0I\xef\xd1\xc2\xaa$\xc5\x1f _\x8c \xca\x17\x83\xda\x12\xfdb,(\xd9\xa2\xc9\x828\xc3[t\xe5\xf5\x95\x17\xd0\xfc\xf8\xe2L\xa8\x84\x19\xf8\x02\x83<\x05\xd1\xc4\xf0\xb6\x06\xc5u\xe3\x95^O\xd3<\xa4\x8f\\u\x92Q2{\xf4\x0e\x0bT\xd8G\xff\x83\xb2\xca*\xf6\x94\xb88\x10 \x8dW\xad\xf2\xa5\xdd~\x13\xdc\xdb\xbcLw'\xa4\xcc\x82mt\x17\x9d\x0frr%\x99\xdeyF\xff3 \xc4f4h3a\xf2AO6\xc14/\x16\xa1\x812\x02\x81\x12V\x13\xd4O\xbcv`\x13\xb8\xa9\xcc\xca\x18\xd5S\xc2%\xf6.)\xdf\xae\xb2\xc8s\x13\xc6c%\\O\xda\xf9\x90}\xca\xf2\xdb\x0c\xb5 \x85K\x1b\xec]\xd7\xd4\xa46\\Xa%\xcb\x0d\x93<2[7\x89\x7f\x00\xa4\xa3\x15U\xd6\xfa\x8ep\xf7\n\xf6\x9b\xaf\xa3\x96)\xa8|r\xd3RP\xcbR \x99\xd9\xb1\x14\xca\x97\"P\xe1\x8035V\xb3Vg\xaa9\xef\x1c[\x16\x00m\xce\xb26\x844\x93\xcf\xa2\xe3\xdb\x0c\xc9\xb0\xcf\x0bC\xc0f\xf60\x1c6\xc3;j\xf3\xf7\x1b\xfc\xbe,\xc841x\xb4b\xcfuU\x03F\xab5g\xba\xe5S\x9b\xad\x16\xe6\xef\xe3\x8aG\xb6\x1c\xe0a\xc7\x01\xceN\x90\xd4C\xa8\xfa\x97\x9c\xe2a\xdf)\xee\xb2Y\xbd\xc3K\xff,\xa7\xe1\x8cM\x8e\xc3\xcd\xa5\xdc\x1b\xd8\x87\x1bF\x96\x8f\xd0>\x16u\x01\xee|\xb8\xe6\xde\xd2\x17\x13\xf6\xdd\xf9\xbcH\xb3r\xc4\xce\x8e\x1b\x96 _\xd1_\xc1\xb5\x85\xc0Q\x0f\x05\xc48\x91\x0d\xf9\xb2\xdc\x11\x83\x07\xd8\x03\xfe\xff\xcb\x17\x98qK\x10\x9f\xa7HU\x0d\xe5\x85\xe5\xe1P\x023\x11\xa9>\xae\x88\xbf\xf5$\x93nn\x9b'\x04\x9e\x0d\xd3\x81ns\xe5\x13\xc9\x1d\xc8\xfd\xb6\xb2\xca\x85\xdf^v\"\xe4V\x9d\xa6\xd6\xf94g\xad\xcf\xef\xdd\xba|\xb6\xac\x8b\xfb\x8d\x0bs\xaf\xf6E\xaeV\xa6\x01\xe4\xb6U;\x91M\xfd\x85\x99\xdc\xee!\xa7\x0f\x199\xad\xec\x19\xb4$\x95\x1b\xf0\xc2N\x9d\xb2\xbe]\xe8q\n\x0e9\xde\xd8\xb8\x98\x1c*\x84\xf7\x97/\xb0T?\xd4$7#\xc6-\xd3\xd5h\x87\x95\xe2H\xa2\xfa){(\xde\x03\x06\xb3h\xa9\xd2\xb5l\xf2a\x03\xff\xd4R\xbc\xc3\xba\x90Jc\x9d\xad\xde&;Wv\x96E}\x0ed\xff:\x0fm\xfd9\x93\xa5\x04D\xd91\xbd|\x16\x93j\xd4\x12\x1d\x1e^UG\x16\x92M\x07l\x04\x07\xd04\xb5\x9dN\x0e\x91\xef\xc1\xff\xcdOg,\xfd\x8c%~b\x7fJ\x9c\x8b\xee\x85\xf9\xdaw\x80\xc9\xa7\xd9\xd9=hw\xbe\xe1\xf3H\x9dA\x8d\x18\x94\x03p\x1byx\xba\x05\xce\xd5\x87\xad\xfa{d\x99.\x86\x15h\x82\xc7{Tw\xe5;\x05\xd1\xa8pa\xf0^\xa2[\x8e\x04\xde\xf7L[\x17j\x94\xcc\xa4h\xa8\x0fQ7\xa9\xcd\x118\x07\xd9\x1d\x9d\xa3\x0dT\x98\xc1\x0dAc7\x0bU\x80\xe1Q\x86\x9e\x08zC\xa5\x8doeH\xee\x11\xcf\x99\x018R\xcc\xdc\xb8 \xffSv\xd4W,\x15&\xcd\xd9\xf9\xdbB\xff\xb7lQo9WV\xa2]\xb8Xa\xc6\xe1M\xcc}\xb7\xf6\xfb\xab\x0fcV\xd1X\xef\xfaW\xe3=\xc8\xd4x\x89'\x05\x8e\x11\xff\xda\x84R\x86\x0d\xb3\x86\x9c+\x97x\xc3s3\x93\x19lL\xa24\x94\x81{M~\x0b\x92,\xc6\xc0*\xceG\xaa\x85c\xd3\xaf\xe1\x00\xcda;.\xa5X\x7f\x92\xba?\xd3\xbe\x1b.-\x7f\xda\xaf&Q\xcd][t\xcf\xd5\xf0\xc8\x9aq\x87\x95V\x9ex\x15\x87\x05O[\x84\x9f\xabxrU\xc6Fb\x85\x1b\x95 hw\xc1`\xd7$\x85\"2OCl\xd8YY~?\x8ds\xd5\xd8\xa0\xbb\xe2\xc4Z\xb1\xeaz\xc5\xb0\xd2\x0dGY>d\x01\x06W\x19/\x12\xca\xdd\xdcc\x9a\x12\xac\xa3\x9ayy\xbb\xd8\xf8\xaaMz\x9dG\xac\xfeI\xf3\xfb\xaeV\xbe$z\x0e\xbb\xd4\x03\xa9&\xe5\x06\x9b*\xc6(D\x06\xa8\x10\xbe\xebL\x1e\x152X\xacJ\xca\xd0g\x08<\x1e\xf2\x9a\x88[)\x8b\x1b\x05#\\\x11\x0eo\xf5\xcc6GD\x16 \xed\xb7\x9f\xe7\xfe\x8f|X\xf9P\xfa`\xf0\xc4\xac\x83\xb9\xabm\x03\x0c!'\"\xe5\n+\x1c$\xc4\xd4l\x01~F\x05'\xb7\x9d\xce\xd5\xd2\xda\xe9\xd2\xd0\xceDo\xb1\x9e\xa1\x8b#U^\xe3\xa9\xc6oc^5\x9f|\x03\xcd\xc3F\x1f eZ\xbe.\xbf\xff\x90E\xe1j6\xa7>\xac\xb2rI\xa2d\x9a\x90\xb8\x1a\x1bv-\x00\xf7\xf7\xb0\x89\x0e\xa2\x1d\xcf\xe4.\x84\xb7\x17\x05\"j5\xa7\xde\xa3&\xdak\xcdq\x82^\xa2\xd4\x19\x98\x90+\xbb\x92\x05\xd7\xc2\xc8<\x0f\xca\xdb\x04UXt9\x97i\xca\xa2\xb0$\xb0k\x8e\xf4/\\\xb0\xa2[t3\xd5\x82>\xa4\xdb\x9f\xb0\xd2\xa7\xbd\x95\xfa\xcdu\xba\x7f\x13\xcf\xee\xd9\x84\xfa\xf6\xf4\x9e\x0d\xca\x9b\x7fc\x99UE\xd4\xf7[\xe1\xb1\xfd\x18.\x97\xe9\x9d\xe8\xe0J\xd7{\xad\x84\xf4\xb9k\n\\\x83,\xd4\xfd\x1a\xc4C/\xc5\xeb-n\xda\xe2y\x95^t\xc9C4r\xc7\xe5Pnnz\x90N\xca+\xad\x8bF\xfc\xa3j\x954\xb1L\x18\xc7J\xcc\xd0N\xe5!\xb6\xe3\xc26$oX\xfc\xce\xa4\xb2\xda\x1aYV\xa7^\x17\x96\xecAU\x0d<\x93\x91[5\x02)~cx\xd3u\x94/\x0e\xfa\xff(\\\x1a\xc8.y(\x90\xaf:8\x02\xaaU\x94\x04\x08/\xa5\x9f\xf6\xae\x074\x87$\x8b\n\xc2\x90\x0d\xfa\xb7\x08\x9c\xd6\x92J\xe4\xea\x9b\xe9/\xd9\x7fZ\x84\x11\x1e\x82\x8d\x04\x0cL\xd7u^\xe7h\xe6\x00\x1b`\x15\xb9&<\xfa\x8du5\xd9\xc3\x03\x88d\x12\x83\xee\x83[\xfd\xdec\x8c\x8dyU\xd0\x08[F\xd8J8M\xf0\xad\xeb\xd4\xbf\x13\xfb\xb7\xdaA\x9a\x0e\xe3\xad\xd6F\x07\x81\xad\xed\xd1\xb3\x156:\xc6\\\x15\xe5\x9ci\xeb\x8ax_g\xf4\xd1\x87\x98~\xe6>y\xd2\xb9/\xda]2\xb7f\x05t\x8a\x0e\xc8\x1a#\xd6\x97G8\x02\x90K\xd8\x9eh\xa3\x0d\xb7J+\x19\x8a\xe8\x8dh\xf0#cC\xaa\x0b\x0eF\x9e\xa6\xb0\xf04\x96\x93!\xb3\xa1\x03\x83\xc6\x04N\xd0\x9bjo\xbc\xb1W:\xa9\xf6\xcc\x16\xb4\xf8\x0e1\x13]\xcbh\x03\xeat\x10,\x9b\xc8\xd26\x8d\xc4\xdd\xf1\xea\xdbx\xbfE\xfc\x19(?I\xe3\xc3H\x8b\x16e\xea\xeba\xbe\xca\xba\x05\x02:\xbboS\xae\xa0\xed\x85m\xc3YRy\x94\x14\xd3`q\xa0R\x87+\x96\x16\x9c\xfd\xf8F\xe3F\xec#4\x1c\xe6\x95\xbaJ\xa3T\xbfI\x80n\x0cD5\x0f4\x99\xfbl\xe7{\xcf\x0b.hA\xc2\x85\xa0H\x82s\x12\xc6\"\x02\x1b\xbe\xffR$T\xbcg\xee\xee\xeb\xefQ\x80y\xb4Z\xa6\xe437\x80\xe3)\x97E\x98\x95\xd3\xbcX\xf0\x8aww0\xf5}X\x96\x97\xf3\"_\xcd\xe6<\xf3\x8b\xe7\x83LMz\x1d\x01\xf28_&T,\xdc9>\xdf\xf1l\xf4\x9fA\xd7\x1e481II\x12\xc6|\xa1|\x84\x07\xaa\xe0\xa7PF\x8b\xbbf\xd24\xc9\x92f\xc0E\xdb9\xbd\xd19\x07\xfa#-\x0f\x08o\xd4~\xb6\x93F\xaf\xec\xf9\x04R*\x8c\xe6\xfb\xea\xb3\x16^d\nd\xe0o\xc2\xc8 \x82P\x1f\x1a,\xb9\x93\xc5\xe8fk\x8b\xf1y\x18v\x1d+`3h-k\xbe\x07\x02\xac1\xca\x8bO$>'\x7f[\x91\x92\x96o\x0b\xf4\xe9mJ\x96\x8bDP/\xcdPlO\xd3\xdb\x92\xcfW\xee\x91\xa5\xf5\xedk\xc7\xeeV\xb7\xd3]\x9b\x0fYq\x11\xc6\x06\x0dn\x8a\xfc\xb6\xe4\xd4\xcb\xc4Y\xef\x04\xbb;\x8e\x0f\xec\xc7\xeb\xc0\xb9\xaa]\x81\x04kR\x94I^y\xf9\xf0\xe1{\x8fk\xd2\n{\xda\x04\x87w\x99\xe8KpW\xed\xd3\x0b\x1a\xa2-\xfc\xac\xdd\x9dT\xd8\xad\xbc\xd0\x8e\x954H\xb29)\x12\x81\x15^\xed\x1aX\xaa\xc8h-\x02(|\x12z\xa6#\xdc\xe0\xcf\x06\x99IL\x05\xfe\xd1=\x0e\x80\xd4uvw\x9f\xefJG6\xed,\\u\xebC\x92\xd1W(i\x025`\x8d\xd7R1e\x03\x98\xfb\xa8\xa1\xc5\x1a}iE\x0d\x0b,l\xf983bg\x10\"6\xee\x82\x8a\xa3C\x0420\x84Q\x05e\x1fSU\xf6k \xd5\x11\x99\xf0\x8b\x8e\x93\xd9\x15\xfc\xeaz\x7f\xea/\x10\x19z\xb7\x0f\xbb/`\x04\xbb/\x9e\xbdzn\x99\x85FW\xd0\xaa\xf4\xcb\x17A\x0c\xe7\xb0\x0f9\x8c\xc4\\\xa4\xf5\x87\x94Q$)\x8c \xf2\xcd\x95\xd4\xb1~\xdc\xf6w\xafF\xe6az\x18\xa62,\xa7/\x0f\x02\x12\x1f\x15a\x92\xa9\x89\x1c\xe7i)\xcdr\xfclh\xa6\xc5\xa4\xa4E~'\x12\xcd+\x82\xf1\xf99\x7fE\x82\x98Dy,\xa2\xc9\xd8N\xaaF\x1eVxZ\xb5\x86B\xb2q\x16\xe5\xa2\xb7\xa4\x95\xf6\xe5\x0b8+:}%\xe5I*\x13\x87 l\xc5\xb5\xa1rD\xab\xe4)\xef\xb2HJL\xd8\xfb\x0dn\xe5\xf7\xdcZW+\x9cg\xa8\xff\xd2\xab\xb8\x0b\xedC\xb3\xef\xc4\xe4A\xdc\xaeoU\xec\xd8\xad\x84RpY\xf4]\x16u\xe7\xe3\x81\xe0\xb0\xe3\xd1\x8d\xfd@d\x14c\xff\xa8\xe4C\xb4\xb9%\xb2\x81\x8a\xc6 \x15\x7f \xf7\x1eII\xe6+\xbf\xd9\"X\x1b\xf9\x8a\x871\xf5\x0c\xc4\x87\x99\xa6\xd2\x9f\xad-\xe5x\xf71r\x80[\x9fJn\xeeC\xe1\xf9\xca9\xe5^\x08\xa6\xdco\xad\x03\x97\x9br\xb9\xa8\x14\xa9\x12\xc1\xd8\xf3+,V\x19\xe3\x15\xdc\xdc-\x1e\\\x81\x0f\x17\x1cT\xecZ(\xe89\x8aO\x00es\xd0A\\\xf5+\xf8\xe0\xad\x01\xec\xc1\xd8\xd5YD\xfd \xf1\xcc\x90{\x07\x7f\xb7\xb6 C\xde2\xb9\xa2dX\xea-gB}\x8cfZ\xba\xd78\xcd\xfcj4gsv\xed*\xef\xf6\x91\x1b\xbfXi!\x05\x01\xa8@Y'\n\xf8kl\xfa\xba\xdb\x8d\xfciX\xd2\x1f\xbb2T`\xa6\xd4\x88\x8a\xcem$\xaa\x03\xc2\xae\xb9\x03\x92\xdf\xdai`-\x8d<\xcc\xc8-\x84\xfcf\xb11\x016\xba\xe0\xce\xbc\xad\xb9\xe6s\x930\xd8p\xe7\xfc\x12\xec\x8ew\x00\x8d\xbe\xd9\x8f\x06-\xe05\x1c\xa0\xdeY|\x9f2n\xf6V#\xfaX~N\xa6(\xe1\xa2ok\x0e\x0e7\x08\x9e\x94f}\x0c\xbe\x86\xca\xc5\x87\xc4\xcb\xe2\x8b\xed\"A|^\xeb%\xd7u\xd1\xb5\xbd\xac8\x01\x95\xc22e\xaf\xfej/\x8eg\xb4R\x98\xbf\xef\xc9/\x9e\xe7\xc3T\xb9-\x1e\xb4\xa67M\xa4\xc8E\xe9\xc6k\x03\x15\xec\x19\xfaP\xf6F(_\x05>\xc7\xcb\x03\xe5\\\xc4\xa8+r\xa6\x18\xe6\xa4\xf2$\xe4a\x87\xf9\x17\x97\xb7^\x7fSk\xd9\x1d4\x9ake4\xa6Ad\xd0\x17\xf0Q>\"\x06\xa3<\x83\x9e<\x01\xaa\x10C\xb8\x06-\xe2Hb\xe4\x98\xa59\x06,\xfc\xd5\x15\x07\x84\xc68\x16n\x8d\xbb\x07\x8d\xf3\xd6\xdawj\xa4?\x0c\xb6\x0c\xeb\xca\xb1\xb2\x86:\xcc\xb2\xa0j\xf9PD\xcfo#\xd8\xc9g\x9b\xbf\x8a\xf87b&;\xc1\x91\x8b\xcd\xcd5\xf4\x8a\x0e\x83AtZi@l\xe6\x93(\xa9e\x05\xe6\x0c\x95R\xf4\x8a\xa3\xcd\x92\xcf\x1b:\xfd\xcb\xf1\xc6\x82k=\xa1w \xbc'\xc3\x1c\xbb2\xd0'\xce\x86\x0f+\xd8\xdc3\xc9\xd3\xd8\x93\x07a\x9a\xf2\x83\xa0\xe4^\xd8\xe4\xee\xe3;\xa6\xf2\x92\xe6\x83\xe30\xd2\x82\x1f\x00Mx\xd9\xdc\xc4\xac\x1dG\n'I\x18\xb9b\x11\x0b$\xa2\xaf\x89*\xe7\xf1\xecb\x04qN`?l\xe7L\x1b\xd6\xbb(\x08)&\xee\x94\xc8T\x9c|\x10\xcdW\x99\x85\xd1\x92\x0f\xea\x0b\x05DP\xf6\xddy\xb99r\xbf\x88\x87\xc1}\xb5B\xbb\x88\x99\x1a\xdc\x1c\x8c \xad\x16-\xf5\x19\x036\xd5\xc0\xc1\x0b\xae\n\xb9\xa3\x81S\xdau\xf4\xca\x83\xbd\xa6\xb9\xf9\x1e\xb2\xd4ZW\xa9\x87\x0bhn\xa4Z\xb4\xc8H^\x86\x06fM\x07\x9d\xc2\xa7\\\x8f\xb4\xbc:\x85*\xf1\x96\xb6\x07xx\xf0\xc9\xd5\x1b o<6\x0c\xb4=\x92\xa28\x9c6\xebJk\xe1\xe9\x0c\xc2\xca>A~\xb7\x171\xb3s$e\x1e|p\xf8pZ.\x92\xf4gF\xe8\x08\x0d\xad\x84\xc8\xb5\xdbI\xa3\xfe\xa8\xb7{\xd5\xd4\x1b\xdc\xda\xa8\xcfW\x1f\x1c\x8d\xe9\xe6}\x85\xa4\xacE\xbfBYI\xcbX//\xe3nH\x18\x07\x8e\x0f\xce\xd1\xf8\xfd\xce\xce\xce3\x8b\x8f3ho\xf0*\xb9\xd7\xfd\x99\x85E\x10\xb1\xb4\x9e<\x11\xbf\x82yX\x1e\x0b~\x0bl\xa1C\xa5\x9b\xe8z\x99&\xed\xd2Wh(\x07{\x03s\xfb\x16X\xb8\xf3\x0d=\xeb\x08\xe0\xd5/O\x92Z\x90\x1bsU\xdf\x94\xd4\xfc&\xdb\xed\x9c\xe3\x92\x0e\xa6\x9a\xbc\xa4\xc2\x8f\xce\xfaN\xcb\xaf\x88\x85\xe6\xbd\xe2;y\xce5\"\x9c\xb4\xee\xe5}P\x15G\x97\xc9\x92\xf4a\x07.\x01h\x1e4uP\x90\xc30\xcbr\n\xac\"\x1f\xd8\xafB\xdcp\xea\xac\x88\xd6r[$i\xbf\xa3C\xb2\x9e\x1b\xf0\x1b\x18s\xbb\x8d\xfd\x86\xc1#7\x88\x0b\x85\x8d\\\xa5\xab\xd01:W\xa1_V\xae8\xdd\x02\x17\xb4P'4\xb6\x1fi+$\x0d\x94\xe2\xdc\xed\xaa;L\xf0**Y\x06\xd3\"_\xe8\xf1\xe3\x00DH\x05\xcb\x16D\"\x85\xebWpT\x8dT\x18\xe3\x0b\xf6\xf1U\"@FmsEX\xbc\xe1\xd1$\xd3\xcd\xdak;\x86\xac\xaa}\xe1\xf9\x90\x0b\xb9\xfb\xfe\xb0\xb3[R\x03\n\xc8\xf0\xa5\x0f\xa7\x94\x14@\xb2\xd8\x16d\xd3D\xdd(G\xb4\xc5y\x86\xd8\x8b\x19\x9e\xdc\xab\x16\xe7m\xe7\xd2A\xb9\x9e1Y-\xc9'\xb4\\$\x80B\xdc\xd4\xa4\xf2>\xf7\nN\x1az\x80'\xe1\x1dn\x15>\x11\x98\x1bQ\x0fF'+Q_\xc0\xf1\x8c\xd1\xa3\xb9,A\xb1\xa3\xc989\xd4\xbc\x8er\x0dm\x1eg\xeb0Mb\xc8\xf2l\x8bW\xbb-N\x1a\xe4s\x1c\x0f\x95\xc5\xb9/\x8e\xe6\xbc\x87\xcdy/xJ.\xf9\xd0v\x10\x10\xb9\x069\x97\x99\xf2\x00\xd2n\xde$\xc0B\xc3\xde\xaf\xa4A\xb6\xf5AU\xae\xdek|S\xd5}\x078\xd1o\xf4\x8c\xd7Axw#\x17E\x8b[\x82{Jl_\xda\xe1\xc2G>F\xf2H}\xbeVz\x18\xf6\x8a\n\xee\xb2\xa4\xda\xa0\x8c\x88\xcc\x95\x0d\xcf\x15\x03,\xce#\xcc|\x9e\x94F\x18\xf8\xce\xc2\x18\xb9@>\x95\xd8j\xd3\xaa\x1b\xc9\xeaF\x0b\xb8:8\x12m\xde\x0c\x9a\xcb \xed\xfd\xa6\xeck\xa7\xc3GR-\x18\xc4\xed\xc1\x05\x0c}p\xc3=\xb6\x19\xd8Z\xfb\xfc\xdb\xb8\xe0n`\xc3\x1d7\x02\xc3\xcd\xbb\xfaH\xb1\xc2\x08\xf4P\x84\xda\x83\x07\xce\x08\xb2\x1eY\x85\x90<\x8c \xe9\xce\xc8v:\x8fgo\x07M\x1f-\x86S)\xca1O\xc3\xc8\xc8\xe4\x1b\xf3Z\x85<\x9b{\xd0vs\x06\xb5\xa4G\x95\x94\xacj\xfc\xd1\x89\x9e\xcb.\x8c\xb5\xf2A\xa2\x8cvL\xa0& \xc3\xa0j\x10\xf1\xa4\x11\xee\x1c\x1a77\xbb\xea^eCjo\xf0l\xcdV\xda3 \x1b\x16H\x9e\xbflm\xf9\xca\xad(:\x82\xac\xef\xcb\x14\xa9\x07\xbe\x19o\xcf\xda\x02\x13\xbc=\x93$q'\x11X\x12z\xd4\xba1\xef\xa6\x95\xd0\xd6\xd2\xe2\"O\xb8\x99\xa2\xf9\xbb\xfc\x96\x14\x87a\xc9\x8d,6\xdc\x893'\x9f\x19w$\xee\xdd\xd9\xff-\xfc\x11\x96Q\x92\xb0\x1f7I\x16\x16w\xf8+,\xc9\x8b\xe7\x98+*\x9f\x8a\xff[OE\xb1\xdd\x17\xe8k\x17k\x90\xbf\x8b\xf0VQ3r l\x82\xe3xZ?P\xcf\xa8\xb2\n\xd0Ng\xe9`\xb2\xde\xf3\xe8d\xb2G]W\x83+\x83\xf2\x81I3\xd7\xca&5X\xe6[\x93\xda\x89\x91\x83&U\x9c\x83\x91\x91\xe2F\xae\xba\x97\x93\xee\x18W\xe3\x80h\xef\xdd\xe6\xe8\xbc&\x84]\xdf\x87\xcf\xc8\\\x85J\x15\xd7C\x1e\xe3\xc4\x19\xb1\x96,\x96)Y\x90\x8c\x92\xb8\x87\xb5\xa9/\xe7\xb8h\\\xfdF\xb2x`g\xaa\xbb\x8c!{\xdb\x1a\x90 \xa9\x02\xc2\x055\xe2\xeeW\x11\xbd\xdf\x8b\x99\xa8\xcd\xbf\xa1\xe9$\x83{\xa8\xaf\xee\xa8\xa5\xcc\xabP\xf1MQ\xab\xb0\xc8\xcbc\x8e\xe2p\x87\x16R6\xcb\xd8\xad\x06\xd2\x192S\x80\x07q\xad\x1f\xb4S 7\xfdJX]\xd5\xb9\xaf\xd2\xb2\x19\xbf \xcc\xb3\x88TB\xb7\x0e\xd2\x8d\xd6*G;\xbe\xa2\x9a\xd5\x16Q\x83r\xa8\x14-Fe\xe0\x16\xacT\x97\x8c\xdb\xee^\xdbJY-\xd3\xd5v\xa5\x84\xae#\x14\xd1\x81\xf6\xd8\xda\xdb\xbcl\xf4\xc7\xca\xe7Z\x9aw;\xdb\xc7\xd8\x8d\xf7\xdc\xf9\xf5%\xf7Z\xfe\xd6\xb6\xe9*S\xf3ToZ\xae:O/\xbf\xcb%%Y\xecz>\xd0V\x0c\xf8\xdf\xd5=U\x03\n~\xcf\xa0\xd4}\xb6\xf3\xcac\xc7\xe1\xf1bA\xe2$\xa4\x04\x13w\x87\x85\x0ex\x8c(\x83F\x04\xf2\xbbf\xe7\xbf\xb9\x1b\x99\xfb\xe2\xf5\x8e\xe7z\x95\xdbN\xc6-a\x98\xc8\x17\xafw\xbfa\xa8\xeb\xcam\xfc\xcb\x1ds\xf0\x84\x17\xa6\x88?\x99\xfb\xea\xa9!\x86\x97n]-\x0e\xf6f\xc6\x95)jSWx\xa0R*E\x867\x9a\xff\xc5\xb4\xa1.y\xdf\x05\\W^\x1b\"_u\xa5\x0f\xb51\xa2\x12\x9f!\xb4\x98W6\xcb\xe1\x85@\x86\xc1W\xb9A\xb0W\x9b\xbaF\x9a\x93\x05~F\xa0sI\xf4p\x11y\"\xce]\x04\x7f\xd8\x83\x1d\xc6&\xb0\xb4\x914H\x96vN[\x90\xba\xa5\x1by\xde\x1b\xe0a\xee`s\xd3p\x1d\x85z>\xaa\x94\x95rq\xc2T\x1c\x8d\x13z\xe5C\xe1N\xbdz\x8c\x1a\xbf&R\x15w\xc9\xdf\x00\xcd\x0d#\x89\xd6i$\x05\x95Z\x07\x86\x11\xb5&\xd1\x1b1\xd3\x8bHaJ\xc2\xc4nD\n\x8aT\xb8\xf1\xe1+\x97\x12tw\xaa\x06,\x967\xce#\\r\x11\xc0\xe1\x92|\xa6\xa7yL\\\xc7\xe9p\x1cn\xd0\x00QT\xaf\x06\xdc\xaf \x83\xd3\xc1\xe6{\xf2\x80\xe7\x97\xeb\xdc=\x16\xb5\x9d\xdfC\xfc_f\xfd\xfe/\xb11\xe3W\xb3D\x05\xad\xd6\x9a\xe4\x94E\x8e[;Z\"B\xf3\xa3\xca\x8f'8\xd1c\xd0\xc8\x077l\x1e\xc4!\xe5\xe1|\xf6`s3\x81\xff\x80\xa7\\\xdd\x01k\x0b\xcay2\xa5.z\xa1\x10\xe2\x17ix-(\\6\x82 \xad\x96qH\xc9\xbb\xf0\x8e\xcd\xf3\x00*\xd7@\xb2cD\x0f\x83\x80u\x19\xde\xa5y\x18w\x84\xfb\xa9;\xf06I)\xe9>\xe5{:`\x10\xc9\x0e\xeb@9\xcfo\xfb\xc9C\xc6\xa0\xb6|B\xf5\xf8>\xe7\xc1\xb4\x94\x04#UE*\x17\xb0\xba\xfby\x06\xc5\xb6\xe1\xae:\x86ke\x1b\xb3\xd9\xc8\x14\xbf\x8e=l\x16\xb2\x91\xe1.\xc5f]\x88s\x17\xcd\xc3lF\x84UW\xff\x0c\xdes\xfe\xda\xbe\xe3\x1d\xe7\x11\xa70|\xe4)\\\xe41\xb9\xd7\x0c\x9a\xb8/c\xd0\xae\xf6\x06vR\xdc\xb1\xd7|\xf7\\\xf37\xa7\xcd\x9f\xb5\x91\x81Vr\x8a\x1b\xcfi\xb3p:Z\xd1\xca\xb1\xc1:m~\xae\xc2J2;\x83+\xee\xa2\xf2\xbf\x1ea\xe2\xf5mH\xc9\x8fd\x9a\x17d\xfc\x99D+\x14l\xd2 \n3\xf1\x8a~.y\"k\x0cOR%m\x1e\x96?\xe5\xe2\x12\xa6\xfa\xfeKB\xe7'\x84\xf2Y[\x86E\xb8 \x94\x14\xe6\xd4\xe3,JW%\xab\x94P\x9ad\xb3\xb7ya.\xf6\xe3\xddqL2\x9a\xd0;\xfc\x1e\xa6i~{Y\xdc\x1d\xd3\xb3\x15\x95\x85\x16\xec\xa8\xafn\x0ddj\xa1\xbf\x96\xcb<+\x89\xb9P\xa9\x16)\x1b\x05\xf8\x1b\x0dg3\x12\x9f\xc9\xb1\x96\xcd\xa1\x97\xac\xbb\x97\xe1\xac\xca{Dh\x98\xa4\xd5\xab)\xfby\x9e\xd3c\xaet\x87r)\xca\xa3Z\x88\xf6\xe6rzo\xc2\x92\xbc\x0f\xd1\xacO\x00@Rw`\x9ad\xf1Q\x95\xc6+!\xd1\xaaH\xe8\xdd\x91\x96U\xa6\xf3i.\xf2x\x15\x89\xa6\xa2<+W\xb2\xdd\xbc9\xc2eH\xe7\xb2\xfcb\xcd\xfd!I\xe3g\xfcM>SRdaz\x94G<_\x92M\xf9^M\xca\xb3\x83\x8bg\xbc\xec\x92D\xd5\x8f\xff,9\xa8\x9c\x932O\xd7$\xbeX\xdd\xd0\x82\x88\xe6Y\x06\xedC+\xbdQS\xf5r\x91\xaf\x8a\xa8\xce|Ay_WE}\x19\x8b,\xaf!>\x82\xa2\x15\x94\xb9\xafLA\xdaQ\xa5'GyA\xd1\x0c\xf1Wt\x87\xf8+\x9aH\xafn\x13cm\xbf\x97\xd0nVa\xb0\x1c\xfd\x08\x17\xecL\x9d\\1\x96bF\xe8q\xe6N\x9c\x05\xa1\xa1\xe3\x83\x83K\xe6T.\x9e5G\xb5\xd4\xf3a\xe2T\xdb\xact\xae<\x1f\x0f\x8d\x12Eh\xffy\xe1\xb9\x93+\xcfC\xc8\xea\xb1\x87\x94\x97\xa0\xc1I\xb8\x0c\x92\xf2$\\\nE%\xec\x93\xeb`\xb0\x06\xaf\xd6\xf4\x16\xc9I&\x12\xb5\xb9A2\x81\xf7\xe4$\\z*9\xea\xab\x98\xe1g\xae\xe0\xd2\x7f\xf7a\x9a\xae\xf7Bj%)\xbf \xb1O\x94\xe7\xf1\x0e+\x93%\xa7\xea]RR\xcf\xf5\xbc\xa0 l\x1f\xb9\x8d\xaet\xdd\xc1\xc8\x08\xa4\xb1\x081A\x959\xd9\x97o\x88\xb8\xaf?/R\x87[5\xd4\x89]r\x19F\x9c\xbbj}\x9b\xe0\x04\x0el\xca\n\xf8r0\xb0j\xce\xbb\xbe\xfc\xffP\xa3\xa87\xa7\xbe<\xe6AX\x8e\xb3\xff\x1a:\x87\xf1\x84|\xf2\x83\xa4d\xffT\x81$ \xca|A\xbe\x11f+\xe0\xd4\x94\x8d\xfbf\xe4\x92\x07\x1d\xba\xf49>\xa5$\xa3,\xc9\x0c\xabz\xc7\x14\x08}\xd3\x9aH6\xd5\xb1K\xbcj\x9f\xf7\xed\xef\xd6~f\x0b\xda&\xd5\xb8\x8b\x92\xfb\"\x8f\x81\x953Tz\"n\xceZ\x1fQ\xa7\xac\xb5\xb5x\\]r+vW\xbb\xd8\n\x1d\x93`1yb]\x8bM\x811\xd2\xcd_Fp\x89\xd1\xf30j\x15\xcb\xe8,V)M\x96aA\xb7\xa7y\xb1\xd8\x8aC\x1a:u\xb6\xbcX\x1c\xb1\x14\xcc\xcapE\x12\xe1q\xb8\xfdy\xeb\xf6\xf6v\x0b\x8b\xac\x8a\x14\xaf\xd7I\xecT~\xda\x8d\x04\xb96U\x06h\x14\n*\x15\xc0\x189\x1aI\x894\xf2\xe5\x9d\x00Z\x1d\xe3\x87\xf5\xe1\xde \x83&dy/\xb0c\xc7\x8a\x9c}\xc3\xa1\xd2\xc6*\xd1\xaa(HF\xdf\x0bR\x84\xd3e'\xcdS\x19A\xc5\xfd^\xbfrY\x99y\x04~1\xf4\xd2k\xd6\xc1\xce\xff\x893#\x14\xe1{\xc5\xff\xe5%\xfe\xe7\x1e\xba\xd8\xaf|\x89D\x0f\xfb9'a,\xf6B4g?\xd0\xcb\xa6\xa3E\xd2\x88z\xc5\xde\x15Wf;\xd7\x00Z\xf7\x9fS\x1e%M\xa5VX\xd1P\x08\xcb/HJ\"\x9a\x17\x9e\x1b\xf5\x05\x82\xac\xb0\"\xee\x8b\xaaBM\x9d\x9fs\x04\x9cHz\x94\x86V\x85\x1e\x15\x9d7Q\xd3d\x8f\xd2\x0c\xab\x8e\xa3\x0cG\xf7\xfc\xef\xeb\x04\xe1\xa35\xc8k\x14\xcdf9\xdd\"qB\xf3\xc2\xd6\x01A\x9e>J\xf3\x7f-\xf3\xac\xa2>8\x18\xe9\xb3\xacm\x86%\x87$\x8dp~\x94\xce\x14\xa2\xbe\x9e\x0e\xf9Vz\xbe\x97\\R\xdbC\xecSh\xccB\xf7\x11\xc5Qr\x8b\xce\x91\xcd\xca\x80\x89\xc3\xe8\x03~M\xa8\xa6d\xdc\x8f1\xce\x05\x8f\xca\x8a \"~b\x19\x9c\x151)H\xccg%X\x90bF\x18\xc3S\xd3\xa9#\xdd\x16K[\xbbx\x08\xb3\xf4mK\xd9\xdd\xd3\xa5\xdf\x00<\xcf\xd7\x97\xbeZ\x87\xf6\xaa7\xde\xe7*\xff7\xa8c\xd3\x96\xbaC\xb3\xc6\xb5\x88#)\xb9K\xf34\xcc\xfd\xee\x0b\x16\xd1\x98n\x0f\x8a0+8\xd8\xfe\x8a\xbb\x86\xf1Wi\xaf#\xc8\xcai\xde\x9e*m\xae\x16|d\x1aG\xfd\x98\xddP\xab6\xac\\\x83\xb57\xb7\xbb\x1e\xd8\xae\xda\xaa\xa8\xb3u,h\xc3\x9f \x84%\xe5\x0c\xe6\x0e,\x06v`{\xbd\xefNv\xb6^_}\xe7}\x0c\xda\xbf\xb6\x93\x80|&\x11#p\xb8\x0b\xb7]\xd3lH\xe9\x87\xb9+\xf1\xc0\xae\x10I\xeb2\x02\xaag\x12\xee\xdaB\x18s\xe3\xb3\xbe\xc6\xf1\x0e\x9a\x07\x0e \xca\xe4\xef\x04~\x80]\xaf\xb9\xfb\x05\x17\xdbf)%\x03\xd7\x93\xad\xb9\xd6\"\n\x1d\xec\x83K\xda!\xe9H\x87\xca]\xdd\xd5\x8d\xaad\xd5Uk\x18bc\x1bV\x83\x1c\x10F\xae\\\xb3\xb6\xf0d0\x15\x97K\xd9\xf0\x9a\xb7\x8f\\W\x1f\xb6\x9a\xbd\x9a\xf2\x0bB\xe7y\xdc\xab\x9f_-\xb7U\xa6.\x9f\x84U\xc6\x18\xfb-\xc6\xd8\x9bU\x07\x80\xc3\x95\xe5J\xdat/\x8f\x87\xf0\xa8\xb9\xda\xfanh\xbc\xdf\xe8r\xc3oCR\xbc\xe1\x0bB=\x974\xd9\xb8\xbe\xe3\xe5Z\x97f>vGd\xd5}\x1d\xb9\x95\xc8\xab\x12\xb2~[O$\xd5)\xeak \x9e\x0c\xc8\xca,\xf8}\xd4n(U\x1b\x89\xfc\x968\xba\x97\xd0\xab]\xbfY)=d\xd3\xeav}\xa0W\xbe\xd031\x82xS\xb0!\x08g[\x15v\xb5\"\xd4 F\x99D\xeb\xa6\xdcoI\xe2\x1fe\x96\xd5.\xda\x85\xa1P\xcd\xb6r3\xf0(\xed\xcb\xfa\x8cK+\xee#\x1e\xa5!V\x97\x99I\xac.@\x1e\xa5\x1dQ\xdd\x006\xa5\xfbf\xc6\xdc\x99;\x1fn|\xb8\xee\xbe\xceku\xac\x11\xd8\xdd\xaa\xc5Qe\xe7\xd7\x8c\xaeSu\xd0\xe9\x9b\x02\xf9\xa0\xd7\xa3\xae\x0c2\xd3FS\x18\xda\xaf\xb5\x06j\x07o\x13:\x97\xaa6\xe5\x80\x91\x19+\xd1p>'Z\xe4\xd0\xab\xf4\xa1#W\x1f\x03b\x17|\x8ekP\x11\xd5\x9f\xaf5\xe3S\x1f\x04\xcd\xdeU\xe9\x8f\xdc;\x83E\xb2\xfe|m\x85\xb6o\xe7\xb0~\xb6\xfbpnt\xca\x80|\xe4c$%\xb4\xbd\xa5\xa1h\xae\x97#\xeeC\x1fe\x8b\xb3\xbaz\x0f\xc7\xc6\xfbg\xd9\x87\xfa\x8a\xb6\xf7\x94\x92S\x82~\x81*\xc4\\]\x02q\xe5\x01W\xd9G\x83\xee\xcf\xa05\x1a\xe5\xc6\xcc\xa0?\xd1\x89\xc6\x9a\x83\xbc\xd0\xd8\x08\xe5z\xda<\xed\xb7>\x8c\xfd\xc1\x13A\x06\xdf{\x81r\xc6+`N\xab\xf3YEl|5\xaflJ\xb7\xf2d\x0e\"\xf4\xab\xcfH\xf8]\xf4\xcc'\xf7\xa2\x10\x02\xe9\xf0\xd0\x07QZ\xfdD\x06\xce\xb2@=\xc6A1\x8c\xbf\xd32\\G\xe8\xd9\x03\xfb\x08C\xfb \xf6\xed\xff\xd5\xea2\xf4^\xcbZuC\xb9w\x94w\x8c\x1d\xfb\x11TPn\xc8\x9fz6\xee!'\xb1\x0d\x8a\x18\x83\x10F\x95i\x10\x9c\xe2x\x0e\xf3l\x9a\xccJ\xb6<\xf6\x85\xc5\xcb,\x06\xb8\x17yAM>\xd0\xe5\xc3\xfd\x10\xd7{\x92\xe7\xef\x04\xf5\x0b\x94O\xe4\x05\xfd\xf1n\xd8\x9a(e\xcd\xee\x00\xba\x02\xd4\xea\x8f\x9c\x0f\xa3\xdej!t\x1fV\xd8?R\x94\xca\x1cL\nK\x14}P\xe9\xeb}\x90]\xe8\xb0\x11\xff\xea5)\xa6>\x0f\x0c\xf2\x9e\xdd\xd8g\xe9\x83\xbc\xee\xb3\xbe\x1a\x93\xbc'^z\x02{8t\x8aU\xb8\x05^\xd0\xf7\x0eV\xc1\xdb\xdd[\xbb>\x96F\xdc\xd9[\xd6\x01z\xa0\x8a\x0e\xca\x11$\xf7F\x04\x86\x9d\xd9\xdc\x82\xbe\xa6\x07e><\x86\xca\x9ck\x192\xaf\xf0~\x17\x1a\x9f\xf0LST\xb4\x1e\xa93\xbc\xbe>&\xa1\xf1~\x80]ik\x90=J\x8f\xb4j\xef\xd5\xb13\x8e#\x9b\xban\xf7\xe0O\x0e\x95\x1b_\x96U\xb2\xc9&\xa8P\xb4\xeb\xee\xd1\xc2\xa7\xc1-\x98\xb4\xfa\xee\xd1\xd0\xc1\xe0\x86\x0c:\x85U;\x1d\x0dh\xc6)M\xbd\x10\xa3\xfa\xe2\x90\xdeK\x04v\xef\xbbw\xa3JW\xf3|5\xa3\x92\xfcA\x8a \x03\x9b\xb4\xcaW\x8a\x81\x9c\xb0\x14E\xe7\xb89\xb2\x06\x9d,\x15\x9c2y\xc9\xe2\xd8\xc6\x08\xe2\xa4\x1eX\x0b\xa6\xcd\xc3r\xce\xc5\xac\xf8\xf30\x8f\x89q@\xa0\xe3y\xc3\xa5\x9aXq\x93\x11\xca\x03Y\x85JQI\xed\xb6Y\xf7NMi\xb7o^\xb7N,\xf3\x9ec\x99\x1ee^\x1d\xda-\xc2y\xe9)+\xab\x16\xc2@\x13\xa9c\x7f8\x98^'\xb2\xa3\x0c\xab\xe6\x0cf7\xf4{\x1f\xe3.\xbe\xffh\xfe\x19\xdb\xf7\x1b\x01\xa5\xb0\x80\xc7P\x90\xb0\xae\xca\x99\x98\x93\xdc0\x95&\xe5\xf0oD\x83\xbc\xd0\xd5c\xa1\xb8\x07T\x97\xd4\x9ah]\xba\xa1\x0d\x04\xd7y1\xa5N\xa4<\xac\x0c\xb8\x02p/Z\xd7\xc1\x8e}\xd0\xf7\x17\xf2i\xcd\x0e'\xfa>W\xf5\x93k\x1d\xff\x07Hj$\xdanH|\x8d:r\x06\x17<\xdc\xcc\xb1V\x1a\xc5\xf8\xcf\xce\xb6\x08K9\xd9Q\x02\x12\xaa\x11\xa2do\xe0\xd2\xde\x9f\xff\x81*\xa9lRz\x95R\x0d\xb3p\xf2\xaf\xd155\\\xa3\xa0\x99\xb2\xf4\xf1\xd2\xb9\xbd\x1f\x88\xd0\x85\xccU(y^y\x9d\xf7A\xb9T7\xe5#\xaa\xe5\xb5;\xbd\x97@x\xff\x83A\xac\x1a\xaa\xa0x\xa7\xd4\\\x8a\xdf\xb5\x7f\xb11\x1e7\xe5p\x95\x05M\x1f\nl\xcc\x8fP\xaa\x0b\x16!\x8d\xe6\xee\xf6\xffq'\xe1\xd6\xdf\xaf\xd8\x9f\x9d\xad\xd7\x9b\x1f\xb7\x82\xab\xef\xbc\xd1\xb6E\x0b\x97\xbb\xa0HJ\x19\x90\x80\xb1\xed\x1c\x92\xb3V\xd0\xc1\xd6)\xcb/P$\x8a\x14\x92\xef\xd6G\xe7Z\xac\x0f\x1f\x9e\xc33\xe6\x9ar^\xc3\xf6\xc1`h\xd47%\xa2s\x13gN\xe9\x12\xd54)]\x96\x8a\xb7\xac\xe3\xaa$\xf7\x90U\xb7\xdce\xf4\xd4)\x0d\xe9\xdd,zd\x8a\xc7\xa1S\xecF\x19-\x8d\x07\xdb\xe6Rp/z\xdf,M\x96\x03\x02\xcfJqj\xe5\xfa\xd1\xa0\x0b\x93\xa9\xeb\xd8\xc65\x7fm\xf7\xc4\x8c\xd6\xf61\xde#W\xf3> \x97\xda\xb6\xf9\xaf\xb7\x8d#\x8a5\x9c\xf8\xddp8\x98\xcf\xd4\xd7\x92p3\xf3\xa6W\xc2\x92\xd0\xd6+\xe7\xc7\xb9E\x12J\x80\xc7\x8b%\xbdC\xfb\x9f\x8az\xc6\xaf\x12N\xf1\x93\xb4\xa8\x92\x89\x9a\x16\xe0a\x18\xcd\xd5:M\x86S\x82O7\x7f\xc2\xb4\x0bi\x9c\xb5\x0c\x8b\x92\\\xe6\x95U\xd5\xc5\xf8\xf2\xfa\xe2\xf0\xa7\xf1I\xc3\x9c\xfa||q\xf6\xee\xe7\xf1\xd1\xf5\xc5\x87\x1f/\xcf\xc7\xc6oj\xda\xd9\xfb\xf1\xf9\xc1\xe5\xf1\xd9\xe9\xf5\xc9\xf8\xf2\xe0\xfa\xe7\x83w\x1fx\x99\xc3w\xe3\x83s\xf6~\x8c\xf9\xde\x1f\x9c\x1f\x9c\\(_\xce\xc7\xff\xbf\x0f\xe3\x8b\xcbF\xca\xc5\xfb\xb3\xd3\x0b^\xfc\xdd\xd9\x9f\x1aYXoO>\\\x1e\\\x8e\x8fZ\xe9\xedw\xa5\"S\x0fD\xdf\xc7'\xef/\x7f\xe5\xe9\xd7\xc7\xa7\x87\xef>\\\x1c\x9f\x9d\xaa\x19\xf0\x93\x9a\xf0\x9f\x17\xcd\x0c\x1f\xce\xdf\xa9\xaf\x17\xef\xc7\x876\x034\xd8\x83\x1b7s\x9f~\xaf\x93\x9d\xb9\xf8\xf2\xea\xb9\xfe%\x91e\x9e\xe9_B\xf1\xe5\xf9S\xfd\xcbJ\x96\xd9i\x15*\xc5\xa7g\xcf^\xe9\x9f\xd2\xea\xd3k\xfdS$\x9b\xfa\xdek\xd0\x8f\x1c&/\xfaT?%\xb6z\xc7\xe8\x8e\x82,\xd30\"\xee\xf6G\xba=\xf3\xc1\x01\xd0\xf1\x96\xcdkc\xad/\xd6Fsh/q\xdd>\x1f+3g\x8d\xaej\x9e\x1c\xcd\xbd\xf5-\xb6\xf9\xa7\x1d]\x18\xe0\x1c\xe0\x03j\xe9?\xb8\xf5\xdbok\x9d\xa1\x85\xde\xc5\xec\xe9\xc2\xf8\xa1]\xe0\x06\xf6\x88\x13\xcd\xbc\xb8! bO_>w\xf4\xc5\xcc\xa9q\x95?\x8b\x86\x9e8P,\xf7?x\xb4\x9f\x86\x0b2\x02K\xf0\xa8%?\n\xac*\x85I\xf9\x97E\xaa[\xfd\x00\x0crL\x80\xf3\xd6)\x89\xb4\x1b\x9b\xfe\x8b\xa6\x0f\x87o\x9d\x1c1\xb9\xddSS\xdcsjR\x12\x16?\xeb\xa7\xed\x83A\xfb\xf8A\xf3q\"\x14D\xdbj\x1c\x03\x96U\x9av\xa1\x91a\x1f)\xdb\xd3\xfd\xbf>\xa8\xfb}\xbb\xc1\xb2\x9c\x9f\xc8\xdd\x08tS\xbd\x87\xcc\x80\xb4\x1d\xfb\x1f:\x03\x1a\x1f{\xcf\x19`\xf0\xab\x10\x96\xdf2\xf6\xcb\xc7\x1d\xbbT{\xbe\x87\x0f\x10eD\x92r\xfe\x96\x01\x9d\xfc\xb7\x18PI\xe8}\xd9[\xdb\x80\x8e\xee= \xce\x9ew \\6^\x0bx\xca\xf1\x1ad\xc3\xb6\xf16\x89\xd9iEd\xbe4\xd9\xa5e\xaen\xd1\x19W\x05Z\xf4\xe5\\|\xda}\xd9\xfa\xb4\x96Ti\x9b\xcc]\x88O/_\xb4\xc8\xdcY\xf5\xa9Ej\xdfI\xc3R\x13\x93{c=\x14dh\x1e\xd51\x04\xe9v\x0ca%w\x1a\xf3xm`\x1e\xd0\x14Q\xfa\x9fA;\xc8\xe6\x18n\xdb\xfcG\xa3\xc8\xaaH\xb5\x12c\x03\x07\xd3(\xc2\x95\xa8\x1be>\x9b\xd8\xa0F!<\xd2\xb5R\x83\xb8\xabF-\x84\xf1\xc9\xbc\xae\xfa\xfaF\xab\xf5\xd0\xc2\xc7\xf1\x8a$\xf3l\xec\xd0'\x13O\xc8\xcb\x95\x84^\xcb\x8bt\xad\xd4\x81\x81\xb3T\x0b!\n\xd3\xca\x9cup\xa9uYq\xe9m\xa9\xe3\xbd\x81\xf3\xe5e\xd3|f)ca\xa0y1D\xb9\xb6Q\x9e\x18\x99\xf1fAS\x8b\xc7\x9d\xec\xbdZ\xbesi\xfe:@\x8a\xd0\x00\x95J\xccz\xbd 4\x14\x87j\xb3\xceS\x8b\xb4\xa2QOm\xde\xda({\xde#\x051\xd6q]r\x81\x8bV\xd7Q\x05\x0c\x95\x80\xc5a\xcb/e\xaa\x8d\xcc\xef\x86\xaa\xb8\xb9;>\xba\xa8\x16R\xc5J\xdc\xa6\x9bH\xab\\zS\xe8\xd3K\xfeV\x19:\xad9\xb8\xc5\xe7\x01\xe6,\xcdGLQe\x937J\x96\x8c\xdc\x99\x10)\x8a\xce\xea\xf8\x95\x9c027g \x85{R\x83\x1c\xd4\x1a\x16\x10\xc3@\xc0\x97/\x90\xb8\x18\xb0\n\xc1\xb6C\x87\xabD\x0bqF\xda\xb1i-\xda$\x1d{\xbez\"h\x91\\\xaa\xa0\x0c\xa7\xe4]\x1e\xc6\xc6h]j4=\xf3T\xf2\xa5a\xf4t\x9e\x8aX\xfb\xe8\xf1-\x0f2r\xcbx\xf6qq\x9fN\x9b\xa7\x8f=)Y\x93t\x042\xa0\x935\xdf\x82\x94e8c\xc4GP\x90\xb0\xcc;\xcc\xe4\xd2$\xc3|\x8b\xb0\xf8\xc4OQ\xf6+`\xc9\xa8\xdb[\xbfmb\xe4 .:\xb3\xcck{\xf2l[\x05\x03\x1d)\xde6\xf7\xc0Uba\x85\xb0\x0f\xce*\xe3\"et\xf2\xc1\xb6VTo\xad\xd0\xe3&\xe0M\xd1\x88\x1bz\xec\xd0\x1fH#}0\xc4\x95\xfb[\xa5\xbf\xa5Hf; a0\xecM\xab\x86d\xe5\x85\xa8\x7f\x7fBus6`\x8f\x82t\x83\xde\xbbO\xa1\xf2\xff2\xed\x00\x8a\x15\xecA\x18L \x8d\xe6\xf6L%f\x12S\xd5\x01`\x98\xed\xe0\xc2\xc0\xe3\xc8'\xaaD\xb2\xb8\xfa)\xec\xc3?\xbe\xc2\x08R{\x91\xa9\xbcT\x14:\xc2f\xb5\xa0\x0fh, 7\xe6mXd\xdc\x91\x84\x98\xa2\xc6:7\xc2tB\x99d\x11\x81\xf5\xb3`w'\xd8\x810\x8b\xe16IS\xb8!P\x90E\xbe&1$\x19\xac\x9f\x07;\xc1\xce\x1bX\x95\x04,r~\x11\xd0s\xc3\xf1|\x0ep\xb6XW\x0c4\x18i>\xedRv\x8e10\xd9\"\x8fI*/ZN\xc2\xa8\xe8\x88*5\xc7\x12\xd5\xcdVO\xee5\xe6\x16C9\xce()\"\xb2\xa4y\x87R\xf5B\x94\xe0\x04\x8cR\xc42\xcaz\x95\xeb8?y\xe5i\xc1\xad\x9dG\xf0\xfb\xf6\xca%x\x1e\xac\x8a\xd4\xaa\xfe\xc5&\x8fq\x15\x11\x83\x88wIFNW\x8b\x1bR\xbc\xcd\x0b\xb4\xcf\xdb\xb7}h\x86\xdd0\x84\xc2\x90\xcf]\xd5\xcd\x0bZ\xd8\\w\xcb\x1b\xb7\x0eT\x8f[\xca\xe8cH>\xac\x8dN3\xe4\x9b\xb0$Gyd\xe5\x1dA\xb8\x00mB\xc8\x08b{\xf6&x\x8c\xa0c\xd3\xb7ac\x04\xeb\xae\xec-\xc0\x18\xc1\xc2\x98\xfd\xab\x17\xd09\xc9\x06\xe8WA\xe3\x8e\x95M\x98\xbd\x03\xec\xe1\xf6\xad\xfc\x1a\xd6\xae*\x9eL\xc1Mz \x0c\xa8$\x02\x0e\xba\xf3\xcf\xcc$\x06\x082\xa3y\xfb\x9f\xe1\x1do\xa6(\xd6t\x0d\x11T\xe5\xbc\x81\xda\x9a\xeac%K\x08?\xcf\xd9\xa4LWi*\xb6\xc8\xcc\xbd\xf3\x95\x14i\x15\xc0\xd2\x96\xdc\xc8\xb5\x91\xbd~ \xfe\x9a'\x99\xeb\x04\x8eZ\x04)\x15FU\xcb\xd8\x93$\xa0\xdcE\x9b\x9c7\x1f\xb5s\x84\x8b iu\xccr\x9a\xef\x93\x89\x0f\x8e kz\xa3?\xcb\xa7\x11\xcf\xaa#\x10\xa8\xfa\x08\xb9! Dc\xbd\x85\x86X\x01\xda\xa1\x8e= #\x13/qV\xc6E\xf1#j\x99\xe4\xdf`9XhWfvS\xaaVr\xcb\xfc`r\xa5\x1dGo\x85>\xda\xa2&\xc6\xd8kZ\xbf\x96\x15Y\xcdh\xc7\nh\x81X\x03\xdfQ5b\xa8\x0f!\x0f\x80\xe2C\xec\xc3\xdc\x87\xb5\x0f\x0b\x1f*k\xdf[\x1f\xc6V\x85\xa1\xba\xed\xdbb\xd0\x86\xc1p\x0bo\xdexP\xde&\x9c\xca\x0f\x96\x05F\xfc\xe2\xc1\xd0\xbb6Z\x14\x96\x04vF\xddk;\xe5\xe7\xd7\xdf\x82\xf2\xae\xa4d1d\xe3\x12\x19\x8c\xf1y7\xdc\xb0\xe7\xa6 a;\x92\x9a\xfa\xd8\xc1\x05lH\xc2\x89\xc9\x8d\x00\x1e\xe9\x05`\x04q\x9e\xfd\x9e\xc2<\\\x13\x08\x81\x0f\x06h.\x0c`\x08\xe4\x99\x0f\xe1M^\xd0$\x9b\x05\xdcaQxS\xac\x96h\xe2\xc1\xda\xb0\x05\x07\x069\x93\xcf\xfbg2\xd3yQ\xc1\xc6\x92\xa2\xa8)d\xc1\xb1N3\x1fi\xe2\xbc\xa2\xf2\xf8P8\xef\x97#E\xaaS\x9e\xa1\xa4\xfc\xade\xee9\x04\x94\xd6\"R\xe8`\xacK\x0dw\xf3\xb6\x87U\x1eb\xe8\xd4\x14\x91\xf0\x12\x91\xf0\xa2\x1fh\xe1\x1bp\xb0\xe9\xf9\x16\xbclz\x86\xe0j\xd3S)\x14\x8au{\xeaw\x99\x1b\x9a\x1el\xf9\xe9\x83[\x0e9\x91K2\xea\x0b\xb6\xbc \xe5*\xa5'\xe1\xd2\x17\xbc5\x83\xf2_\x12:?\xe4\x0e=%\xcaV\xa0\xed\xa5\x0f\x89\x9b\xe2\xf9z\xbfi\x93O\xc5tL9\x1f6\x8c\x96\xd2\x1f\x13[r\xf7\xb0\xaat\x96\xe5\xe6a\xd5\x98\xd8\x19\x83\xa2\xd2\x90\xc7\xc8\xea\xdc\xde\xbb\xaa>bQ\x7f\x10\xbc^>\x18\xbc\"\x05\xbc\x96\x88x9\x9f\xc4\x8f\xba\x88sWP\x04a\x9a\xe2 R\xba\x1e\xf7f\x86\x8c\xcc\x10n\xc9\xf6\x0c\xe4\xa2lO\x9b\xbbZ\"w\xb5\xd4\xcc\x16\\.\xa1\xb8?\xfbdz*l`b\xa0\xe6\xee\xfa\x7f\x1b\x03ez\x1e\xc2T\x99\x9e{3Z\xa6\xa7\x9f\xf92=\xa8Pm`\xba\x16\xd2\xbd\xf6\xac>WW\x885\xe3\xf6\x87\xb4\xfa\xd0\xa2\x83\x1e:\xbd\x15f\xef\x94\x10u=\x96\xa3`\x04\xf6\x08\xf0\xb6\xe7A\x88h\xf7\xfb\xfba\",\xe4\x90,v\xeeW\x0e\xd4\xcdX\xd2|i\xf1\x91cz\xba\xa9g\xf9|\xc5\xe8\xf1&G\xb6\xc6\xdc6\xc9\xa4\xfa\xb4\xae\xf0z|)\xa8O5Xs\xd0\xcf\xde:\xba\x07\xfd\x95Q\xc3\xab\x8an\x13\xb8d\x00bW \xd6\x9d\x9a\x9c\x0d\xbb\x93\xab\xcac\xcfR\x9a\xd0\x074\xff\xcf\x8b!D\x84\x15\x9c\xa7\x8a\xc8X\xd4\xd6=\xc0\xae\xf5\xe1\x90\xdb\xc3~\x8e\x95\x83\x92{-\xafxz\x1f\xaf\x8dx0\x10I&>\xed\x06\x07\xe4\xf1\xfaz\xf4\xba\xbbG5c\xf1\x1aO\x87\x1d\xec!^V\xba\xbb\xbb\x9e\xafK\xfe\x02j\xbb{\x80\x8aL\xed\xa1Sc\xb3\xa1\x83\xcb\xc6>\xae \xd3\xdef\x9e\xd9\x9b\x19\x8a\x11\x86\xec\xfe6\xd0\xab\xbb\xda\x87\x89\xb1\xd4\x841j\xbb\xaf\xafZ\x1f\xaf\xda\x0e2\xe0\xd9\xf7\x0d\x9d{\xab\xb5\xc77^\xec\xffM\xc6\xc1\xf4+\xa8\x03\x0cC\xfaV\xf7LX\xbd}m\xdb\x02\xdc\xd3\x11x\x8fJ\xdcy{\xff~\x8b\x8e\x9fT\xd8l\xaf\x99m\x80\xfe\x10\xdb\x1c+o\xfdO\x1a\xdd\xc4\xe2\xc0F\x0cO\xc5\x83\xf7\x1bi\xcb0\xe9[\xd6\xee\xf0A\xa3\xab\xb4\xa5\xcdC\xe4.\xc1\xef\xbd\x84]\xf6X\xdf\xae'\x7f\xf1\xcf\x18\xe9#\x98\x13\xf0\xb058\xea\x9f\x85\xe9\xc2\xf0iS\xb7v\xd3\xbc\xed\xc1j\xae\x03&\xa5_=\xd7\xfc\xb9`'\xb6\xc9\xcd\x81e\xc9>uAK\xc3\xb8\xef\xbf\xe7h\xffv\xaf\xd1\x1e\xf4\x8c\xb6e\xe0\xf8\xbfa\xd0g]\x83n\x18y\xf6\x1e\x9c\x1d\xe34\x8c\x857\xff\xbe\xab\xf9\x96\xd9io\x17\x86*\xe5\xd9Tn\x8aa*{\xf9P\x95\xbd\x95&\xeb6\xe7\x12\xf1\x06\xc3\xf2YOu)\x12\x96\x0c<\x18\xca3\xe7\xe1r$qW`\xcc1\xc5\x1c\x95\x8e\xa8\x05m\xc2\x1e\xacl\x9c\xc1\xfd\xb4S\xac\x9a)\xe6\xec3\xbc0\xe0\xacD\x9b|M\xa6\xe0\xce\xe0\xc9\x13\x98)\xa1\xc7\xf4w)y\xd2\x93\x85{\xd2~\xf1\x93\xa4iY\x0d\x1bBK\x86{\xc7\xaa\xcf\x89\xf6\x1e3\x98\xa5w\xc6\x0b\xcf;\x1d\x07\xb9\x93\xd4\x87\xe8\x8am\x84\x8c\xad6\xd2X^\x17\x9bJ\xd4)\xd9k\xbe~\xf9b\x8d\x1f\x00\xca\xd6P\xcbLx\xc3\x1d\x1e\x0c\xdd\x0dt\x0e\x8e\xa1\xfcv\x84\x8b\xa52\xf9;w\xda\xe1\x9a\xea\x82=p\x0c\xbe\x97\xc0\xcc#\xa0H\x07\x83\xc8}\xa6\x1f\xaa\xc8Lq-\xfa\x91\xcaH\x01\xcd/\xd0\x12\x96\xb1\xcf\x02<*\x00?\x8eQ\xc8\xa7\xbe\xefi\xdfG\xbcP\xca\xfeD\xa2\xf3\xcd\xfcY\x90/\x8fcw\xc6\xefc<\xd4)\xe5d\x96k]\x136\xa97\xb0\x07)l\x823r`\x13\"\xf3\\2v\xb6\xe0\xb1>\xca\xa0D\x1c@\xe2\x0bLro\x90ko%w\xe8_]\x8bjX\xbe\x9f\xc3\" oR\xd2\xa5\n\x05\x18,\x9d\xe5\x1eU=\xe9\x96\x08\xb0\xa5,\x97aDFpc\xcd\xf8\xb5_\xbap\xfb\x08=\xedo\xbf{\xce\xabv+\xf7>\x15t]{\x12\x91\xec\xc35\x8c\xe0\xd6G5^=R\x1d\x0e\xa2\x9d\xec\"\xa0\xf0\"\xad\xa8u\xa2L+\x9d\x17B\x87!\xdfm\x7f\xe7\xd8\x17y\xac\xb6\xfac\x1es\x9c\xc4\x8b\x9bK\xb1\xc1\xdd\x05I\xf9\x9f\x17g\xa7\\0\xed\xb9cT\x8cW\xab\x81=`\x19\xb86\xbc;\xf6F0f\xfba\x8csi\xc8<\x16\x93\x0c\xa3\xf6\xa7\xf6\x86n\xa5\xb0\xa1|\x163\xaf\xb8\x01\xf9\x07z\xe6m\x8f\xe33\xee\xc4\x9bU\x92J2\xcc\xfd\xec\xf9P(\xc4\xa8\xab\x1c\x90\xf5A\x08\x9f\x0d\xb5\x11\xc3\x11\xa6R\x19\xbd\xfeq\xd7\x0d!\xe0\x84\xea*:\xea\x93\x9bG\x99u\xab0\x16m\xc2\xd32\xc0\xbc\xe1\x9bD>_U\xf8k\x0e\xd3p\x97\xcc\xc6u\x01{p\x14R\x12d\xf9mG\xa8\x9bLRg.\xd1\xd5\x05\xad\xd3F\x83x\xc5Qj\xa3\x0d\xd8\x82\x8bj\x0dyO-c4\xa8O}\xf5\x84\xa0\xad\xbfyuJ{\x1a\xea8c\xb9\xf6F\xd7}\x0b)\n.^\x98\xab~m\xccg\x9ei@\x8d$\x0b\xafI\xdan{\xf4aK\xf5\x04\x83\xa3\xaf\x1d\xab\xa3\xaf\x9d\xa6\xa3\xaf\x9d+T\xe37P\xef\x15%\xda\xfe\x96uR\xa0\x89\xd8\x07\xb9b\x9e\xc3}\xfeP\x0c1\xc9\xcb9Wf\x1fi\xdd\xa4\x9bT\xd2$\xc14\xebR\x9a\x0f+}\xd5\x01\xf4;\xe9\xe7\x07\xca\xea\xf6\xdf\x16\xa5\xce\xed>\x0c\xb9\xfa\x80\xe6\x1d\x8b_K\xd8\xa9\xfc\xb0\x1d_W8x\xednl\x8a\xf7\xc9\xed\x03\xcb\xce\x08D\xa6\xa3\xca\x9c\x9d\xd1J\xdb\x9f\x17\xe9v\x12P\x86\xac\xa6\x96N\xccq\x00\x15\x81\xd8\xe8\xbe\x0f\xb1\xfd\xec\x16\x80\xb0\xd2\xb8C\xd4},\x9a\xb85\xb1md\xa1\xfcm\xd1\xbf\xe7\x8a\xdf\x96\xa5\x96\xd8\xa2\xdfb\xd8V^\x92\xc4V\xednS,\xdc\xa9\xa5\xab\xc2\xb4\xd9b\x9fa\x0c\x97\xbb4\xa0\x1c+\xce\xc1_=\xce\xa8H@>/\xf3\x02\xfd>7\xe7\xbb\xb2\xf1\xcd\xdc\x97\xcf\x9ej\x90P\xdb\x087\xbdO\x19\x9b\xb4\xb57@,\x89\x91]\\n\x00\x12f\x11\xbaUD\nKA\x80\xe8\x11\xb4\x80$\x03\xe2\x01\xde\xea\x03\x9b,T\xb4p\xd1\x1f\xeb\x08\x92,\xca\x8b\x82D\x14\x92l\x9ds\x07x\x1b\x16W\x8e\xe4~3hv\xe7U\xd9(\xb9\xaf\x9f+\xcdT\xc3\x0f\xa6CD\"\x19\xb9\x1d\x805Y\x8f\xda{\x8d\xd15\xc1\xb2\xc8\x17 \x8a4YUdX\x9096\xe9\xca\xfcRm\xbe\xb3\xf6,;?\x861\xbc\x17mEyV\xd2b\xc50\xb3M\x97\x11O \x1f\x0f\x1b\x83\xbc\xd6\xf3y\xe7\xc5\x05*\xcb\x84\xbe\xe5D\"\xa3~1M\x0b.\xf3U\xb5;\x1c\xb4t\xf5\"}\xbfcZ\xa4\x01bB\xd4\xb0\xe3GW\x921\xd8D~\x9aLrv\x16\xe3\xbf=\xa0\xec\xdf\x08\nVG\xee\xe3\xeb\xbf\x04\xf2^>\xdf\xb5\x8c\xaax\x8c\xea_\xbd\xb0\xd4\xce@M\xd7g\"\x9f\x97i\x12%t\x04\x13\xd6\xb1\xe7\x8c\xe0u_>\xff^\xfc\x7f\xe1\xa9\xdeP\x1f\xde\xbb\x0eJR\x99\x97\x17\xbb\x167\x93\xec\x9b\x8e\xea@\xd0=\x9a\xc7\xca`s\xeb\xea\xbb\x91\xb7\xef~\xdc\xfe\xb8\xed\xed\xbb\x93\x8f\x17\x1fK\x0c\xc9\xd9.\x1eb\xf1\xc9\xc1\xd6\xff\x1f+\xe0\xffw\xb6^on\x05W\xdf\x8dX\x05\xdb\xedB\x8c|\xb1\\\xad:\xff\x86\x9e#\xc3r\xae\x87\xf3\xae\xb3\xec\xb3,\x7f[\x91\xe2\xce\x9eg[\xfatDG\xca\xd6l\x7fd\xd9\xc2\x15\x92x\xbb\xb6\\\xa7\xe1)\xeb\x13\x8fH.\xaf\x86w;\nl\x8f\xdc\x8f\xf1\xa6\xf7\xef\xdb\x18\xc8\xbch\x14\xebo\x04{\xac5\xd4*c\xa8\xa6}\xce\xc9\x87M\xe7\x08v\xcd-\xe3D\x8e`\xb7\xf5Q\xf5# \xaa\x9b\x8d\xd4\x8e\xaf3\xaepo\xb3\x94C\x015\xfa\x83s+\xc3m\x1a\xa4\xe2\xd4\xe2\xc2@\x8bp\xd5\xb9I\xf3\x9b\x91#d\x9e\xcb\"\xa7y\x94\xa7\x1e\x87{v\x96\xb8\xab\x8c\x94Q\xb8\x94\xbc\x13\x9bF\xcf7WH\xd2\x92\xe8\x8e\xea\xf6t\xf7\xd8\xf2A<\x981\x1cX\xb7E\xb0b\x1fJO\xeaz\x14\x93\xcc \x91\xac\x1bR-\x99\xad\xda\xd6uS\x84\xa1\xdb$\x03\x94\x90\xba\xacr6_\x93LG\xaf\xf2Ql\x14\x8a\xa0L\xc3rNP\xfc\xec\xd6o\x8c\xb0\xa5\x9cQ\x9f\x17dj\x8a\xfa\xd3J\x91\xbc\xe9\xef\x9a\xd9\xccp\x11u{;\xad\x02\xfaZ\x89g\xf3\xa4\xc8\xb5\x1e\x01\xe5\x0e\x9f\xd9\xbf\x80\xe6\xef\xf2[R\x1c\x86%A)\x8fc\xb1v\x17\xa3\x1f\xc1\xc6\x06\x9d<\xb5\xec\xbe\x82\x94\x94U\xff\xac\xbd\xd1\xf4+V\xf3\xd0\xa7\xb6C\x14*J\x8f\x1d\xf1*\xb17\xad\xbdPW0E\xcd\x82\x176\x83\xdc\xec\xa9\x94\x1a\xf7sn\xc1\xb0\x12\xc1\x91-\xdc\xcc\x02j\x97\xdd\xe6\x1c3\x96c\x9eX\xb8\x8a;\xd8\x83\x9dv\x7f\x10L+\x88f\x84\xd3\x02\xad\xf5\xe5f\xaaR\xb8=\x8e\x8f\xcb\xcf\x1d@s\"B \xfe\xb3Q\xf50\xabJ\xe4\\\xcc\xe7\xf1\x82)RH\xec\x9c\xdap\xd9q\x13\xb9\x84{.\xf6\xbc\n\x0f\xe0\x85H(A\xdd\x87Y\x03\xea\xe5\xef/_ \xe1\x1eu\x95\x8cU\x15\xc8\xf8\xc9\x17DL\xea\x9b\xe3\xf8\\l\xc1h7\xea7ku\xd7\x93\xa7l\x83N\xb6\xdd\xe0;o\xbbq\xf4xo\xe0\x0e~\x80\xb5\x10s\xbc\x81\xbb\xcdM\x0f\x91\xb5\xcbx\xd8\xf5\xe4\xee\xca\x9b\xec\\\xf9\xdc\x12{\xb2{\xe5C\xc9f\xa5\x84}\x98M\xe6\xb8\xef\x19|\xb7]j\xb2\x1c\xff\x8f\x1b\xa3,@\xfaX.=~\xc9\xe1dh\xfe\xa2f_\xb2>\xee\x83++\x15\xa0\xb3#tT\x95\xa4\x1861\xb7\x87A\x87\xb5\xfczf,\xcfs\xc6(\xfc\x15\xbb\x9c\xf7C\x14\x8eq\\z1\xdek\xcf\xf3\xe5@\xf1\x9f\\\xa5\xe5\xe4\xd9\x15\xae\x96Hd+\xb0\x9c<\xbfR\xebe\xff\x9a\xa8\xc0\xb0}8`\xcd\x02<\xe9\x90\x14\x12\xbf=\x84+\x15 @\xf1c?\xab\x8e\x91 \x9a\x87\xc5\x01uw\xc4\xdc\xea\xdfy\xef8GQ\x9f=\xa2\xd5*\xd3\x00?\x11\xa0\x92\xdd\x18\xe9\x0c9\x14g\xdb\xf1\x82r\x99&\xd4\xe5?\xe5\x0cn\xedz\xd2a5Q2x\xbep\"\xc1A\x8e\x1b\xbce\x93\x02\xb6\x18\xfd\xc1\xb7\xd2.7s\xdby\x03\xc5\xd6\xd6\x1b\x0f#{\xe0M\xd9\xa4\xb8B\xcf\x19\xac\xba\x08#\x13\xec\"~\x0d\x9a\x19\xdcf\x0e\x1fB\x06\xd6#\xee\xb7\xc3\xdd\xa9\x03Z\xb8 \xf7j\xe0C\xab\xc4\xd6V\xb7\x94\x19\xd7&\x0bVY9O\xa6\xd4u\x1c\xcf\xc7~\xb2\x89\xceq\xa9\x82\xea\xed\xcb\x17\xc8\xb8\x0e\x1cf\xcb\x84\xce\xfc\xb6)\xa2\x8a\xb2*\xbe\xbabl\xde\xd8\xb7\xbc\xa0*f\xe0\xfa\xa93\x19a\x97\xff\xe0\x85yf~{\xc8\xdeV%)\xc4b\xb36\xca\xf26/b\xfc\xcc\xbe2B\x13\xa7d\x89\xdf\xd9\xab\\\xb5Q\xab\xfcr\xb2S\x81}\xa3.\x86#\x04\x02d_\xf2\"\x99%\x19oP\xc1\x86\xa2\xbb\x88l\x93\x94\x8c*\x98\x95y\xf6\xd5\x97Mp\xb6\xb7\x1d\xd8\x94\xc5F\xe00|\x8dM3b\x01\xab\xaf/3\xb53Q}\x9b\xf2J\x85)B\x1b\xc4KBG\xbd\xac\xa7|\xf0\xe0\x13'\x94\x19R*\xeb\xaf\xae\x0bh\xae2\xca9\x86n\xa5\xd1\xdeX\x17\xd2\xdd\x84\x8b\xd4\xaa<\xa8x\xa0\x85d\x82\x17\xc9=\xe6_C4{9\xd7\xd0c\xee*Zc0K}H\x14p\xdd\x17~1\x12 \xb2I\x05\xb2\xd5\x95/\x0f(o\xc8Q\x8d\xc3\xe92\xd7\x84\xa1#\xa98\x9a\xa1\xa3I\xf8\x96\xe2\x13\xbd\xb9'\xba\xcbS\xd9$\xcb\x1e?\xc64#O7\xb4c\xdb\xa3\x8f\xf1\xe6\xbfos\x1a\x9a\xb2Yv\x85\xffxe\x0b'\x12!\xd0`\x99/\xdd\xaa\xc3bSS\x81\x96F\x8e\xa7\xcc\xbf\xfc\xa8\x14\x7f\x9c\xc9\x97 \xd17F\x95\x08\xa2\xcd\xf3\x94\xf5\xa9\xa6\xa56z\xa2N\x0f\xeb\x95\xa4\x8d\xfa\x94\xbcQ\x0c\xd0o\xf4=\xc8\xd6\x13\x0dW\xd9\xc4V\xad\x0b'3\xfbx\xe0\x8f\xc0\xf97\xcb\xb5\xb6\xfaHhP(\x82\x0da\x16\x1e\xb2M\x05&\xe5V\xf5\xf9*X\xc2\xc7@\x15R\x8c=\x08~\x8d\x99\xccF\x1f\x15\x05Rr\x02\xa1\x84\x1f`U\x91\xaf%;\xe7\xed\xf3\xcd\xca10ZM\xca\x0e\x0d\x9dT\xd2q\xc9$\x9d\xec^\xb1\x1e\x8a_\x1a5w\x8fnK\xa2\xa1>\x11\x93\xc6\x89\x98\x18O\xc4D=\x11\x13\xc3\x89\x98\xe8'b\"O\xc4\xa4\xa1\xde\xd3\x0e\xeei\xba\x9f\x14\x05F=\xb2o@\xd7vMNI\xf1\xa5\x8f\x04\x89\xf0\x8c\x84\xf5%\xd3\xbb\x0e\xcd\x1b\xca\xe5\xd1v>\x0f@\xc6\xc9\x95\xe3\xb7\xd0e\xd8%1s\x85\xdc\x04\x85<\x1c\xb7\x18\xa9\x88B\x07\x81\xb8;\xfa\xc4\xe3\xb4n\"\x1d)\xd0\xcb>\x9f\xf2\x91\x1d\xf9U\x97\xfc\x15\x9d\xc4 \xcc\xcd=%\x8d\x11\x7f\x15\xb9T}\xe7\xc7H\xfd\x05I\x7f\x96\xfeGG\xfe\xcc\xf8J\xf3\\\x92\x10\xcf\x87\x8d4X\xa6\xabY\x92\x95\x93\xec\xaa\x0biR\xb9\x86\xe35\xc9h)\xeby)\xeaQ\xab\xe9>5\xe4)G\x03\xb2\x167\xab\x1d\x1e\xad\x14D\x9fd\x10z\xb0r\xc3Iy\x85\xeb\\z\xb2\x17\xaf\x1c\x94;\x19<_\x82\x11\x17\xab\xd7\xb4\xed\x95\\\xd9h\xfe\x94w\xf94\\\x90\xa3\xa4\\\x864\x9a\x0b\xedd\xb6\x19\xcen\xb3\xcaP\x99{\xc9b]{\xed\xa0*BGY!8m\xceA\xad\x8f\xb1\x9c\x87%\x89\xcf\xc9,))\xd7q`uhS\xc6A\xcd\xb0|\xd5\xfc%l\xfe\xacR]\xaeS\xab\x0d\"\xf1<(\xdd|\x92\\\x89\xe9\xe8\xd9\xe9P\xa3?=\xae\xed\xefLy6HPh\xc3B\xfcR\xba\xed\x0f\xa2\x07>c\xd3;\x17\xaf\xb4/\x9e^'\xbfB/\x19\xf5\xc1\x17kwg\xa7\x02\xe7\x8e\xccH\x06\xb7s\x1c\x91%\xc9b\x92EI\x95M\x01\xf1Iv\x15\xc4J\x0ee\x10\xf2\x97\xa4K\x9a\xfd\x16\xfb\xaam\x95e\x83\xa7\xb6\xda\x91e,\xfd\x19\xd5!\xb5s/\xf3\xb2LnR\xd2\x82M\xe1\x01\xa0 \xa1\x19;\x9e\x10y\xbc\xc7\x11a\x8c\xc9>\"#\xafVf\x97\x9d\x81u0\xba\x8a\x83\xe7\x92&~0\xb0\x95\x0bu\xd6\xbf\xa7\x1b\xe5\x8fw\\)e\xc0M?\n\xa5,\xb2f.\x0e\xc3k\x11\xeb\x0e#m4\xd1G\xa7\xe6\xe2N\xc5\x8e!\x133\xeeI\x10\xadH\xb9\x93\x8b\xafr.\x9f\n\x9c\xc4\xf3\xe0\xad8\x17\x80\x0dD\x9fH\xa1\xf6L\xf4\x8c\x88 \xe6\xc0\xf66/p\xd2\x87\xce3 \xe2\x06T\xb7\xc7\x8flUk\x13V\x17\x16\xf6\x1d\xdc.\x84\xb2*\xb3[g]\x1b\xc3\x86\x8e\xbbNqn83\x08\x8f\xcb\xa7\x02)\xd4\xac1`^\xf9\xe0\xc9\xaeC@\xd1 V\xa0\x80\x96}\x96\xb2Iq\xd5\x01uP\x1f:b\xc2\xdbQ\x85\xe4\xd3u\xfe\xcaG\x92\xcd\xab4\xed\x82\xaa\xeb\x82\x94\xa4\xb1}Gv5Nh\x11[\xb9\xb8\xe4A\x8fg\xad\x8d\xc3\xe5\xe1\xe2\xb2\x94\x91]\xed\xe1Wd\x8e\xe4'\x8c\x97O\x12\x88\xedg~\x1f\x12\xa1\x1e\x0f\x9e\xdb\xde\xd7\xa2{\xd4\x88\x13$Yk]\xd6\x8evC\xbc>\xf6\xa0\xd0\xdb\x0d\xd5v\x8bI\xd8\xbc\x804j\xd9\xaa\xf4;_\xcf\x87S\xe9\xdc\xa3\xa2\x99VG/\xd0\xee\xd3\xdd\xa7\n\xdd+Hw\xf7\xb51\xfe\xc6\xaaC\xdd\xad\xa6\xb9P4\xfc\xe5\x0b8\xab\xecS\x96\xdff[\xb8\x8e\x9a\xf0\x85\x04\x11w\xe9p\x19\x163B\xf1biF\xe8i\x1e\x93\xb7E\xbe8\x16\xf7\xa8n\x81\x97\x84\xfb\x10\x06I\xb6\xce?\x91?\xad\xc2\"&\xf1a\x98\xa67a\xf4 }Cp\x7f\x99\xd8-\x82W\x14\xe6\xbcU\x16\xdf\xd0zc\xef4\xa9\x8a\xb6\xdeER\x8e\xb38)\xe7}\xf8X\xecK\x87\xe6\xcb\x93|U\x92\x0fK)\x94b\xd3C\xf3\xe5e\xbe\x8a\xe6\xe3,6%\x1f\xb2\xf1\xa7\xe2K\xd7\xb6N\xca\x93|M\x1e\xd0\x1dV\xcc\xd4\xb2\x92\xde\xdd\xee\x05\x0d\x0b\xfa\x80\x86\x8f\xf2\xdb\xcc\xd40\xd67\xa0e\xa1\x82{\x94\x14$\xa2\x129\xf4u\xa2>\x1c\xaf\xe5\xe9\xf8.))\xc9\x88M\x0b;k\xe6\x960i\xc0\x03M?T\x94\xd3\x10\x8cXx\xe6\x18\xa1\x8dA\xb4\x19\xde3\xcf\x18\x18\x18\x14\xfc\xc4\nS\x97\xd83J\x95<#\x90\xfb\xc6 0}\xac\xc6[},\x06-\n/M\xca\xe36\x95j\xb9\x16]WV\x80C\x97\xa6\x18\xbc4\xec\x9c\xd5\x9d0w\xe8\x01I4\xb6\xf3\x06r\xf8\xa1v\xd5\xfc\xe4 l\x90 )\x19b\x0fg\\[\x9e\xe6\xcb%\x89]\xef\x0d\xe4\x9b\x9b^\x8d\x1d'\xf9\x95\x0fE[U\x12\xa4\xc2\x10^X7\x90\xa9!\xe3\x03W\xe9!K\xc4Fr@/\x8b\xd5`J\xbe_\xbay\xff\xed\x06\xf7\xdar`\\[\xdaI\xbc)\x84!\xbf\x19\x87\x1f\x1a7\x7f\x1d+\\lnv;\x18B\x8azR\\\xb1Ue\xe4\x9f\xa2\xfd3)\xdajG\xa0\xdc\x15\xa0\x87\xe0'O\xd8\xa6\xe6\xc1\xb3e\xc1n!\xa9\xbe\xd8Xe\x97\xfaU\xe7\xde\xee\x847\xda\x05U\xf3\xb0\xac!\xaa\x0f\x80\x14\xf1E\xbb\xbd\xaeV0\x9e7\xef4C\x98\x0cq\x0el\xab\x08\x0ce\xf5@/\xed\xd6t\xd4|\x9f\xd6Zh\xbd\xbb\xb5\xa4<`k\x81\x0e#{\x91\xa5\xe4\x18\x82\xba\x14\xcf\xdb3\x9ew\xf9-Zw,\x16y\xf6\x90\xe6,U\x0cj\xfb}\xc8\xce\xa1{\xce$6\xd9,\xd93\x8f\xb4\x08\xd7\xa4(\xc9\xe5m\xfe\x9e1\x8c\xc3\x14\x11\xaa\xe6\xf4\xe2U\xa1!m\x8e3J\x8aw$\\\x1bZE\xd7\xe6FYu\xab\xed\xba\x1a\xadp'\xfc\xa0\\&\xc93\x93g\x0f\xfe\xf10_,\xf3\x8c\x11\x03\x05\xe9]\x00\x90'l\x1b\xbf\xb4Q7\xaf\x9fU{\xc9\xc7\x10\xa6C\xea\xcf\xcd\xf5\xff\xce\xfcfa\x8f8\xc6x8{\x042 U\x95\\\xf1:\xb9\x0dd\xcc\xb1\xaah\xcb\xa4\xa33j\x14kUQ\xa1\xc2\xc9\xee6\x86\x02\xe5^M\xe3FL\xccN\xcb\xca\xac\x9b}je/\x08\x1a\xca\x1c\x86\xab\xd9\x9c\n\xd7\xe1\x9d\xb2\x02v\x8aY\xcdr\xd6\xc2&\xd4\x12\x14\x86\xdb\xe4\x14\xf5Y\xf4\xadp\x91<\x1c.\xcc\x164&n\x97S7\x94\x13\xd7_\xbe\x00 \xca\"\x1a\xa7dA2|\xbfM\xb28\xbf}\xa3O+\xdb\xef4@\x9b\xaer\x99gq\x92\xcd>\x94D\x96\x93\xfaG\xd6\x1c\x9e\x0f\xcfxh\x9c \xcbc\x82F\xfd\xfb<\x8c\x1c\xc9\xf0\xe0i\xe8(|\xab5\x8e\xd0-t\x9f\xaa\x163y\x10\x85\xd9\x87\x92\x1c\x9d\x9dT\xe0\x1b\xe7\x11\x1a\xef\x06\xc9b\xc9{\xca/'\x9f<\xb1}\n\xe6a\xf9\x96\x84tUH\x7f'\x1b{\xd6z\x94\xcc\xae\xe3\xf8\xa8\x1d\xdc\x98\xd9\xed\xef\xbekB\xcdwp8'\xd1\xa7\x92Af\x98q\x81?$%\x94\xab%[_\x1e\xc0\x89\xce \x08.IP\xc7\xe82=['E\x9ea7\xb4J\xf56N\xcf.\xc7#\xb8\x9c'%\x8f\x0f\x95\xe5\x14n\xf3\xe2\x13\x08\xa3\xbd\xf4\x0e\xa9\xce,\xcf\xb6f\x8c\xc6I\"\xde\x13\xd6\x8fh\x0ea \xbf\xf1H\xca\xbf\xf9z\xd5\xbf\xa1\xb8\xee7\x1f~K\xf30f\xff\xd1\x08\xfc7\x1f\xa3Q\xfd\xc6\x1ds\xfc\xd6\xd7\xc1\x1f\xf3\xa2\xc8oK\x98\x16\xf9\x02N\xf2\x98\x14Y\xf2\xf7\xa2\xaf\xd4\x1f\xd1^\x14\xfe\xc1\xb5\x0f\xbe\xd6\xd7%\x17\xab\xe94\xf9\x0c(D\x84L\x98\xaf\xcf\x02p\xa24\x89>9z\xbdUE\xfb7y\x9e\x920chq\x89K\x8e\xab\xc3\x16\x07\xd7@$\xa2\x9c\xb7\xb1J\xed\x1a\xa51AU#c\\dE\xedenW\x90\xb036\x0b\xd3\xd6\x874\x89HV\x92z\x9a\xe0Y\xb0\x13\xec,\x0b\x02\xee\xe1\xaa\xa4\xf9\x02~\\%i\xec\xc1\x1789\xbe\xd4\xcao7\xde}\xbb-\x9e\x8eL\xd0~@\xddS_\xbe\xf0[\x82\x0d\xd7 \xe3\x18\xe7Z\xd2\xc8\x0e\x83Z\xb9GjVA\xbfY\x91\x1c\xb5\x93g\x0el\x9a\xfc`\xa1PP\xad\xecM\xbbOF\x92e-\xae\xa0\xab\x8d\x1a\x15$\xa4\x12=\xb9N\x9c\xacM\xea\x1daP\x12z@i\x91\xdc\xac(q3\x1f\x84\xb3\xe47\x8e\xd0\xfe7\xaa\xc2\x84\x93\xcc&2\x05\x85\x9d@Mb\xae\xbdr;'\x95\xd8\x0c\xa4~\xf2\x10\xac\xc2\xef\xe6\x03^\xde\x07\xe7Y\xb0\x83\xaa\xd6\xc9\xa3!\xd3\xd6\xd1}\x90\xd2\x118aJ\xffL\xee\xf4\x90\xbayF\x8b<\x1d\x81\x13\xd1\"m\x7f?!4\x1c\xa1\xdb\x82\xb0\xfd\xf1b\x9eLY\xcd\xa8W\xcd>\xd7C\xb0\xd0:\xb6\x03\x0e\x0dW\xb3\x90&k\x82\xf3\xd3\x86\x12\xf43v\x92\xc7\xc94!\xc5\x05\x0di}\x8d\xd4\xfe\xd4bO%\xa0\x16\xad\x1b\x83\x8aS\xc43dc\x83\xaa\x90PC\xc1\xb0\xf3\xbau\xcd\xf2\x08K\x99\xb9\xaf^\x1b\xd4_2\xf7e+=\xe1j1\xbb\xdcv\xf4\xd9k\xfc\xf7t\xf7\x95\x1e\xfd\x9a\x8b\xe4w\x9f\xeb\xe5W\x98\xfe\xec{\xb3X\xbe4b\x151d\x93h\x92S\x18\x93\xdd+!\\\xa7\xe8\xb5\xf8\"\xb9I\x93l\x86\x1eu\xa6IQ\xd2\xc3y\x92\xc6\x86)_\x8b\xab\xf6\xc4\xedc\xafH\x90d%)\xe8\x8fd\x9a\x17\xc2\xb1D]\xa1q0\x91\xad\xaeB\xd4\xc58\x0dQ_\x8b?3\xe94XM\xb7Z3\xb3ob\xdcl(07+\xeaTaK\xec\x840\x8fI\xa4\xcc\xb8]\xb8\x95\xba\xdc\xee\xba\xe0\xd7\xf7\xdc\x82\xbdCk4\xafh_\xf5\xd1\x88g\x1c\x1cZ$Q\xb4\xdaA\x91s:l2\x97\xd6\x03l\x88\x1c\xae\xba\xcf\x9d\xec\x1a\xee\xdfb\xac\x1b?\xef\\\xf1;v\x12\xf0`\x9b\x08\x89-\x0eK\x0355+\xed\x1eFl\x83\x89\x8e\xe5\xab\xc4\xef\xddK\x87|P\xcfR5\xfbZ\x0cc\xfc\xe6\x0861\xa3\x15\x8b|U\xa6w\xe7d\x99\x86\x11a$?\xe3\xe3N\xc2\xe2\xd3j\xd9DS\xeb\xb6k\x8c\x9e\xf2-\xef \x05\xcfuD\xd2d\x91P\x12_\x92\xcf\x03\x0d<\xe4\x84\x11\x8571K~\xf9\xbda\xe7\xb4\xe6\"\x1c\xe8>\x17\x9e\xa7n\xe1\xeb\x14\x08\xeb\x19\x8a\xf6\x18\xe4\xe4x=\x02\xfb\xe0\xae\xf0\xde\xcf\xf3!v\xf9u(E\xd5||\xeb\x95]-\x8b<\"e\xf9\x01=\x14\x97\x03\xc4e\x0d\xeb\xae\x9d7\x90)\"\xe67\x90\xd9u\xab+\xf0\xb2\xea\xabHS\x98\x02oXm\xf5@\xa5]\x7f|z1>\xbf\xbc>98\xff\xf3\x87\xf7=j\xf6\x88u\x0b\xe9\xd8\xc7\xe7GJ\x11\x84SJ\n6\xa7}\xd1\x0d\x06\xd9\x05\x9c\x9c\xfd<\xbe\x1e\xff\xe5\xf8\xe2\xf2\xf8\xf4O=\x1d\x9a\xf2\x0eL\x85\xb8\xf6\x9f\xd4\xa3\x8b\xf1\xc0\xf9 \x1b\xf3\xf3\x18M_\x8e\xffry}xvz9>\xbd\xeci|\xf5\xe8\x8d\x9f\x8fq-N\xcf\x8e\xc6=m/\x9b\xeb0T\xc9\xe9\x9e\xf2\x9a5\xa6>\x88\x1a\xb3{\x01\x9a\xd3\x05#\x9f\xe7\x94.G\xdb\xdb\xb7\xb7\xb7\xc1\xed\xb3 /f\xdb\xbb\xaf_\xbf\xde\xfe\xcc>kd\xf3\"\xa4s{\x99W\xdb'!\x9d\xe3\x9f\x93wZ\xc9r=3\x16{\xba\xb3\xb3\xb3]\xaeg\n\x01\xfe8C\xed%u\xd5\xe8\xe9\xb5\x0d\xf6\xc9\xc5\xc1r\xc9\x10(\xfe@S\xde\x0f\x19\x0f~\x1f\x85\xe9[y>*\x94P%\x826\xaa\xbfvV\xd3\x1f\xd6N^L\xa9\xad\xb4aI\x17\xac\x8e\x1e\xdb\xdb\x8cQ\x8d=s_\xed\xbc4\xd0\xf1\x99\xfb\xf4\xc5+\xcf\xcd\xdc\x97\xdf{AR\xfe\x1c\xa6I\\\xc9\xe6\x1a\xb9CE\x19\xdee4\x7f{\x12nV\x94\xe6\x99\xd9\xaf_4'\xd1\xa7\x9b\xfc\xb3\xf9k\xb2\xc0\xf8\xfe\xa6O\xf3$\x8e\x89\xa5\xd2\"\x8c\x93\xdc\xf2\x89\xa0\xed\xa6\xe9S\xb9\xbaY$t\xd4\xd2L\xb6i \xe9\xeb\x8d\xe2\xee\x0dv\xc8\xe3\xa0H\xfc.\xc9>10\xac?`x\x04\x99\\\xb8\xce\xab\x97N\xaf\xae\xb2\xde\xcc\n\x95X]\xadR\xa9\x9f\xc8\x93\xf2\xec\x10\xe5mR\xc7\xfc\xd5\xab\x9ev\x0c\xdePZ\xed\x88Q\xf5\xb4\xf4\xba\xd1\x92\xfc\xc5\xc002\x9a\xd2\x8a\x88\x11Ch-P\x18f2\xa1\xa8\x93\x19N\xb8.\xd6\x15\x17N\xcb\xee\xf0\xb7\x82\x84\xf1Y\x96\xde\xf1\xb78)\xc3\x9b\x94\xc4\x8c\xbcb\xfd\x1f\xa1\xcb\n\xe1 \xeb\xd7|%\xc3\x83\xc6\x10\xc2o\xd8\xad\xdfX\xd2\x12h\x0e!\xa3y\x160MH\x1a\xc3mB\xe7\xf9\x8aB\x98\xc1o\xb2\xc1\xdf`\x1efqJ\x8a@\x91\x93\x16$\x8bI\x01!\xb0\x8el\xe5\xac'XC\x00\xc7\\\x90\xc7\xeb+\xe7\xf9*\x8d\xe1\x86\xc0bEY\x171\xd4\xfeo\xc22\x0e\xbd\xf7\xfd\x16\xc0\x19\x9d\x93\xe26)\x19\x99@(\x90\x84\xbd\xab\x1d\xc8\x0b\xf8M\x8e\xf8\xb7\xc0d2n\xd9~$~\xf8\xfc?\xe2\x94\x8b\xbe\xfc\xb7\x98\xf4C\xd1\x97\x7f\xd2\xb4\xcb\xd2#H\x026\xf3\xbf\xeb\xc8?\xb5\xda\x13-\xdb\x9b\x16u\xc8m|\n\xbf\xcb\x99\x11\x94q\xdb\xfc\xbf\xd3J\xb0\xe5\x08\xe95\x9b31\xa9\xdc\xff\"\xe4S\xf8\x8d[~m\x82\xf3[\xd0\x0ckh\x94]::m\x00\xa2Oq\x0b) \x18\xbc/\xf2%\x1aE\x0c\x83\xcc\xa62td\x03^6\xbe\xc8\xa4\n-%\x16\xd1\xa4\xb8b\xc74\xe7\x9a\x1c\x06\x88\x8e/\xee\xeb\xf2\x0e\xcb\xa9D\xf5\x89\x83\xe0\xcd%\xdb\x89\x0c\xfb\xc7\xba5\xedV\xdb\x99T\x99\xafP\xd5\xdeN\xde.u!\x81|zI\xd4&d\xcd\x08\xfdY\xc7\xbe\xa6.V\x9a5\xf5\xf1\xb5\x8f68(\xbc\xa8\x12\xff_\xf6\xfew\xbdm\x1cY\x18\xc4\xbf\xf7U\x94\xf9;\xa7\x0f9\xa6\x15\xc9v\x9cD\x89\xe3\xe3v\xdc\xd3\x997\x89sbg\xfa\x9d\x9f\xc6G\x0f-A\x16'\x12\xa9CRv<\x93\x9c\xeb\xd8o{\x0d{\x01\xfb\xec%\xed^\xc2>(\x00$\x08\x14H\xcaq\xf7\xf4\xec;\xfc\x90X\x04\x88?\x85B\xa1\xaaP\x7f\xc4_\"X\xf5\x8d\x15\xc4\xdf\xee\xfb\xc4\xa6=\x8d\xbd\xeb\xa7\xea\x11\xaa\x8d\x84\xd9a\xf5Z\x1f\x81|\xdd4\x06i)vVn\xc6V\xc1\xb7+$T\x94Ql\xd7/\xe4\xfd\xa9\x1c^m|M\xb3q\xb4\"\xab\xc8vJ\xf2{\xa4\xfd\x10\xce.*\xf8\x1aFI\x10?\x1c;\xd5!\xb1\x08\xe8\xfd\x12|\xa7\xe4\x18\xb7\xcc2\xfb\xe2\x1f*\xf5\x8c\xa9\xc4\xb1]\x88\xa0\xd2f\xa0\xda)cI\xa9\xd5\xa0k7Z\x95T\x15N\xab\xcb\xd26|UO\xe5\x98\xb4/b*\x90\xb3@\x92L\x96\xc8h\x18\xc4\\@\x06\x8f#\x8a\xc4M\xb6\xc1\xc1\xaa\xa7\x95<\xd0X\xf0\x0dv\x06\n\x0bd\xae\xd6\xca%\xabN\x83\xdd\xa6)\x0e\xb9\x8f\x95\x8a2q\x9f\x8e\xcc\x87\x16\x0du\x00\x8f\xb0\x0e\xfeQ\xf0}\x82\xdc*\xda\x1f\xa2\xa0Xa>9\xe5FB\x80N-\xa2\xa4\xba\x9a\xec\xdbwFZl\xb1\x9a\xcf{i\x16#\xec\xc2\xedZE\xadV\xd1z\xff)\xa1\xfb\x89\xdd!%\xb2q\xdc\xa8cjW\x84\x87\x90\xb4\x10\x15\xe1\x04\xc4\x0fg\xcf\x9aK\x08*\x00#\xcd\x8a\xf89\x06Q\xb2\x071\x03\x7f+\xab\xdc\xb3G\x91H\x99\xb9\x95\xfal\xc4\x7f\xa1\xaa\x1e\xffp\xdf\xf8\x96\xd06\xd6\xef^\xc8\xd9y\xc1\x15\x9c\xeb\x0b\xb75\x10\x7f\x132\xa6^\xb7\xd0\xea\x12\x17\x8b\x18\x81'\xab\xaca\x85\xbd\x94\xbd\xceU\xd0I\xd7=\xb7B\x1e\x12b\xf5\x10\x91\x88wUl5\xfe\xe6\xa8^%\xb6\xaa\xc40\x84Z\xfcG\xbc\x8dV\xe9\x9a\xd1T\x07\xff\xc4\x97\x9f\xd8\x9d|\xf7\x89\xdd=\xc4Z\xd17\xcb\"Tf\x1bAV\xac/M\xaa\xbdCo\x08\xdea\xdf\x11y\xd1\x1bb\xf1\xae\x9d\xba\x9bH\xf8\xa3\x80\xfd/\x9c9\xf6=4J\x08\x14u\xf7\x1f\x8d\x0e\x87\x97\x8f\xae\xc3\x0e\xe7\x87\xbaZ\x1e1\"\x96c\xa3._\xc5\x0f\xfdV\xa0\xf4q\xda.\xa0\x1c\xee\xf2\xe2\xe1&@\x11\xe0\xf0U\x8466\xea\xa3\xb7)\x87\x95\xf8\x8dQ1Y/__ D\xf4w\x05\x83S\xbd\x18\x04\x81\x06M\xff\xb0\xff\xe5p7xx\x80V\xf8J\xd3\x8a\x07 \xce\xec\xe2\x8a\xf6\x0fP\x916\x18\xec\x9a\xd7\xe6\xf2z]\xde\xab\xef\xef\x05\x9d=\xda\"BN\xec\xb1\xe4\xbf\xd6l\xcd\x04\xdfP\x8f\xccm\xb7@h\xbbJ\xdb I\x94\x1a\xcf?\xfd\x14+\xe8C\x0csQ\xa9\xb8\xe4\x82\x8ah/z*B!\x11\x014\xb3\x8e@\x92\x04fF\x8a\x8e\xf2\xf7\x0b\xd8\xed\xe3\x95\xdb6x\xe0\xf3&\x86\xc0q5\x93a\xaeB\xf0\x02^\x16x\xa0g\xffs\x87\x16p\x9d\x1fh\xeb\xed\x1a^\xa2\x0e}\xad\x03\xbd\x01\xdb\xed?\xce\xdf\xa6\xeb\xa4h\x97\xa0\xd4R\xd1\xfd\x83n\x86RH3\x94\xdeXH\xfclZ\xdaT\xd77\x89!I d\xaa\xecr\xbb\x08\xed\x8b2\xd9k\xe9\xbc\x88U\xed\xe1\xa9mc\xaf-\x94\x9cEu\x84\xd2\xeeb\xbd\xf1\x8a\xa1\x95\xa9\xea,\x87#\xea\xad\x08\xbf\x88\"\x13\xf5\xcd!\x8c\x8a\xcb\x10\"\xebB\xbb\x11 \xaf\xa51^\x07\x11\x93\x91\x03%\xdej\x03\xa5\xbe)\x07\xda\xecM \x07\xfac\x9aM$-\xe8\x8aM\xf4bH\xe3\xder@Z\xc3(\x98\xf0\x11\x15fJ\x0crH\xf2\xe6\x1e-\xaa\xba!T3\x9aH#\xf4rd\xd8\xf0\x7f\xf0\x9e\x14\xac\xaa2\xbdo9l=\xc1\x82\xa6\xd4\x97\xbf|\x02\x99\x85\xf5_\xd5\x90\x17\x84\x9b\xa2a\xd2\x80\x86\xc9e \xf0\xb0\x0b0\xcfYA\x01\xd2\x05\xc5\xc4 E1[?\xa1\xc0\xf8\xe5\x0b\xd0\x05\x870\xba\x0c\x02\x85\xb0|\xd4\xa6{\"=jy\xe3\xe4\xd8=\x0e,\xa86\x8327\xc7h,\xac7\x96\xc9\x0e\xf9\xf9\xdb\xbe1\xcc\xe5\xec\x0093\xd6\x99.\xf7I]\xc0\xee\xae\x87#\xe7\x07\xea\x86l\xc77x\xc9'\xfe`/\xa0\xb8\x90\xbd}\x9a\x0b\xe1<\x86\xee\xaf\xa9\x8f#\xbd\xff8\xba\xdd\xed\xdeT\xc1\xdeP\x928I\xa7\x8c\x16j&\xf3(\xe3\xa5h/\xccP\x1b\xc0yI_(\xbaU)^M\x0d\x84?ARZ\x06\x0e\xf6\xf8\xde\x92\xc8P\xc0\xcbC\xd8\xdbE\xd5\xc1^\xa9[(`\x08\x1bJ\x9a\x15h\xad<\x15\xd2\xc5`\xf7)y\xdd\xbao\xde\xc2b\x98\xc7\x91`\xa1${si\xb0\xe3k8\x04u\x0d]\xe9V\xeaurB\xfbR\xaf\x81q\x0e\xcb \x80\xf5\xb2 \x86,\xa8+k\xec\xdb\x89\x85\x90\xeae\xde\xc3M\x97[\x18a\xf3\xf7\x18\xaa\x8b\x05|\xdfD\x8dJ\x0fdf,\xf2\x84\xe24\xa15\xe9\xd3\x0c\xe7\xa4\xd4Ex\xb5\x8c8\xa8$\xd2yO\x1a\xf7\xaam~X\x0f\xfe\x9e\xe8w\x01\xc2\x8eK\xf4\x94\x04\xbc\xea\xec\xbe\x08\xb5\xfb\xecI a\x8c>\x83j5\xcff!4\x82\xbe\x93\xbc\xa2\xf7\xe3\xcaJ\xd3\xb2eA&1\xd2a\xe7\xb3\xde\xd5]\xc1\xde\x08u\x12\xcd\xf8b6\x9a\"\xe8\xe5\xac\xf0\xc5\x0f\x0cb\xdd\xe6\xdec\x8e^\x05\x87\xc4\xf5\x9b\xc7yo*\xe6\xa5R \x0e!\xe2EJmm\x16\xba\xc1\xa0\x00\xaam\xfc\x01n\xf2G\xfa\xc6\xff\xef\xbe\xd8\xf8\xfa\xbeG\x94\xc4\xa8\x0b\xc5\xfc\x03\x9b\xac\xb3<\xc6$\x86\xebP\xf8r\xf1\xf7mWB\xb8w\x8d\x8dk\xedX\xc5\x95H\xaabs\xab\x9e\xa7|(\x84s\xb8f\x1c%\xe84z\xda\xce\xd2u\x82~\xbcY\x9a\x16\x8e\x9c\x98\xe6~\xc6I\xce\xa3\xfc\xa3BhmB\xc0\xec`\xf3q\x15\xc4\xb0\x99{\x16&B$fuq\x8e\x01\xcb{ \x94\xfe&u\xec\xc5c\x90\xfc\x1a\x14\xf4}\xe4\xc0\x02\x02\xd9\xd4\xf3\x95\xcc\\V^\x94\xb9\xc6\xa7\xae\xdbb\xdf\xb4u\xd5\x9f\x08\x15\xaar\xd4\xeeyjg|\xd4qV\xe9(\xb9l\x99\x18\xb9\xdb\xaa\xe4w_\xeb\xb2~3\xef^\xa2E\xa1\x19(;\"yH\xc3\x12\x91\x92\xbdL\xf9\xa9l\x9cD\x96,\xe1K\x89\xb9 \x12\xf9\x13\x0fl.\x89\xc8\xdfe.fyh\xf0wE\xc6\x98\xe5\xd8EN\x14\xcd\xb5Y]B\xf0q\xdbh{\xa3\xe8!w)l\xb1:\xc6\xd0\xa8d \xcb7Q\x08\xef\x83\xc7\xa6\xbeD\x08\xefOLY_\xba8\x0e\x1e\x93.\x8e\xcf\x06OZ%\xac\x86k\x04\xce\x06Q\x97\xc0\xbc\x81]G\x19\x17\xf2\xf7\x1ce\\\xc8\xdfw\x94q\xf1\xfe\xc0Q\xb6\x82Cx\x0c\xea:\x9cH\xa2<\x05y\xfd\xbd&iV9\xd9\"\xe4\xb4w\xde\xc8D\xdf\x84\xb0\x0c1\xd1\x1bnKL\xea\x96\xfa\xd7A\x08W\x98kv\x8d\xd9\xe4\xf6\x82\x10\xc6\xfcL\xf1\xef*6\xfbV\x90\x99S\xf4\x05?\x82)\xefo\xccE\xa4\\\xfd\xeaW\x06R\xcfa\x0c/\xe1\xf69\xdc\xba\xb6*\xdf\xa6\xfe\nc_p\xa2,\xa3\xe4/\xe1\x10\xae\xfc\x1b8\x84\xbb\xd1\xede\x08\xb7!\xf0\xc1\x99Z>\xb3\xa1$\x80\xd3\xd1-\xe7\xf5\x974\x11\xe1OI\xc5\x96A\xb7TA\xa0\x18\x9a\xbdf\xbf\x17\xd0\xcfjw\xff\xa0\x9a{\xdc\xb9\xb9\x9b\x0e\xad\x1dtn\xed\xb6Ck\xbb\xed\xad\x9d\ny\xe5\xc6\xbd$\xda\x891i\xe4\x7f\x14\n\xc3\x11\x17K\x86\x80\xd9\xf5&p\x04\x13\x18\xc2i\xad\xba\xe9\xeax/\xcd\xa9\x14\xdb\xc4a^j$\x8a\x10\xbc*\xd3\xb7g\xfa^H\xd3z\x9d\x0d\xe3T\x13Sv\xa5Y\xfcW\x95\xde\x1d\xcf\xdf\xf2\xe5\xf1\x04\xed\xca\xa4-\xda\x0fQ\x1eO\x8e\xd7\xc5\x9c%E\\\xa6bpV\xff1\xcd\x96\xef\xa3,Z\xe6F\xad\xd5jA~\xfe\xbeJ V\xf4V\x19;V\x05\xaf\x97\"!1\x16\x9c\x9c\xbd\xfb\xf1\xf5\xef?~8\x1d\x1f\x7f\xbc\xf8 _\xfd\xf1\xf8\xcd\xebW\xc7\x17\xa7\xf8\x83\xbf=\xfb\xf0\xfa\xff\x7f:>\xe3\x7f\xee\xe2\xcb\xf7\xb2\xbaU\xf0\xe6\xec\xf7g\x1f/\xea\x1f\xe2\xaf\xf3\x9f\xce~\xc6O\xc6\xef\xcf\xde\x7f|\x0f\x87\x8a(|W\x81T\x86\xcf\xf5\x13\x7f\xff\xb1yE\x9f\xca\x92\xdd=\xea\xf2\x1e\xbf\x19\x04\xb5C*\x9f\xa7\xb7\xaf\xf8\xa2\xc6\x1c4\x9d|\x9e\xecm_`\xea\xf9 A\xa1\xa3\xbbE\x1aM\x87\xcdbG\xb9\x16\xdf\xd2;A\xfe\xbb\xf5\xbeH\xaf\xd3u'V\xdf\xd5\xf5\xea\xbe]\x97\x13?\xe3\x7f\xed~\xcb\x18\xa6\xf7\x1d\xc3\x04\xa3=\xaf\x05\xe2\x7f\xcb\x08\xe6\xf7\x19A\x1d\xb1#\x85\xbe\xfdg&\xfe\xaee\xd1\x9ee\x96\x92\x0bV\xa7OZ\x9e\x10nEJn\x13&\x1e\x15\xf5\x92\x8a\x1c{zJ\xacv\xcf\xa26\x89\x89c'{|\xab\x8dW\xe9j\xbd\xf2\xec+\x8c:%\xf0J\xcc0\xaa\xae\xea\xf4\xc3\x13\xc8kT\x9ab\xcaK\x17\xf9\xf1V\x19\x1b\x97\xed\x8fSD=/\xa4\x89\x98gU4\xa0?\x17}i\xc4\xd0S\x17\x97\xd8\xa6E8\xbd\x12\xe1p\x10^\x8d\x1a9\xe8o+NV\x9c\x1c\xc5\x95\x94\xcay\xdcp\xc7X\xb3!\xe2m\xd1cY\xd6XKx\xd2\xf3\xc6\xe8\xf2H\xc4,K?\xb1\x84\xae ,\xa8\xa5[#]e!\xf2RM\xe6l\x19\xd15&\"\xc2E\xb4t\xf8\xfb\x8b\x9b\xb1kV\xf8\xdel\x91\xdeR\xe1\x82d\xc4\xf4uO\xe2x/\xbf\x8d\xae\xafY\xf6\xf1\xf5\x076\xc5\xb8\xcf\x822\x85\xe0E\xe51+t\x063\xcep\x88\x1c;\xbd\x84\xdd\xf2e;\xcd\xcc\xa4\xfe\xea\xe1\x8d\xbc\x9e\x92G\x04\x7f\xf2t\x9dM\xd8P\xe5\x90\xa7\xe1\xc1n\xd8b\x08\xdem\x94%qr\xed\xa8%%\xc1!x\n\x8f\xc4\x91\xbf\x8c\xee\xe0\x8a\xc1\x1a\xddgCXEy\xce\xa6\x90\xa3y\xc5m\x94\x83\x88\x0e\x86J\x8e\x9ce7,\x83\xf7F\x95\xe4\xdf\n\x89ml*\xc2|a\x1eRQ\x9b\xb0C\x0cB\x88z\x18J\x0c\xed+~M\x10a\xafm\x00\xf2\xfb!\xc4j\xdd\x03?\xa2<\x821\x13\x97qH5\x0c\xdf\no\xa8\x1e\xdc C\x88\x88.\\$U\xa7\n\x14\xaf\xf6\xeb\x92\x04\xd6\xb8\x11c\x11X\xc3\xb9\x11\x059(\x13\xab\x91u\xd62\x84\x87\x98\xa0\x9b$Tu.\xac\x8bt\xf5L\x84zu\x11\xb3\xa4x\xedhk\xa6\xd59g\x93\x8c92\x9b\xaf\x9c&\xba\xfc\xb9\xce\xa2\xa4\x18\x8b\xf3\xdfS\x03s`\x1e\x7f\xf2I\xca\xabrp\xa6+\x96K\xfbF |\x16\x01\xac+A\xf5\xa0\xc7\x9e\xa3l.}\x15\xcd\xf7JKy\xc5\xa5 A\xc0\x16p\x04\xf3^\x9dL\x1c\x82\x87\xf2\x06\x9a_\xf2\x1d\x92\xf7\xae\x8a4\n\xfc\xa8\xcc\xf8\xba\xc6\xbbM^\x96V\xbbgEy\x9d\xf3G-:\x89\xfc\xae\x8f\x14 \x87\xb0&\xe9\x8a\xcc\xc1[\xce\xc2\x9f\xa0\x06`*\x97s\x1cs\x08M\x82\x10f\xf5\xf79\xae3\xdf<\xe8\xba\xd5y\xf2\x93r\xf2\xb3\x00\xd3\xec\x99\xf2\x9b\x83&\\\xa5\xd3\xbb\xa1ji\x1d/\xa6\\8{\x15\x15Q\xe0\xaf\x1c\x8a\xcdu\xb6\x18\x8a\xe0\xce\xbe\x87T\xe3c\xb60Y\x0e\xf5\x08\xb8\xc6\x0eD`\xd1\x94e9\xc9\x96\xf2\x07AH\xb2\xcdPR3\xe2N\xdcI\xafB\xb7\xb0\xf9[\"U\xa9\xac\xc1w\xdf\xb7\x10\xb3f\xe2\xb2\xeeH\\l\x93b\xfd\xa9a\xe7\xb0\xcb\xce\xdc\x84\x8a\xd0\xc1\x00\xd4S#lr\xfbL26eI\x11G\x8b\xbc\x9d\xc4\xa5m\xb4\xcdI\xa3\x1eb{M\xee\xb3e6\xd9{r\x83\xb4\xec=\"r~\xc7\x0d\xe4\xd6\xe9\xb4\xdb\x00\xb98\xf3D\xba:\n\xc6\xf6c\xb6hV\n;m\x8f\xb3\xb2\x8fV!\xa1h\xe5\x1b\x8a\x96\xadVt\xd8j\xc57o\xb5\x1a\xbaG\xfa\xbe\x1bO8\xc7\xefF\xf7 f\x08(z\x13g\xd81\xac\xa5\x0e\xa6!8`\xa1\xd5\x12\xc7\xd4\x10\xd6\xee\x9aj\x11\xc7\xeb,\x1e\x12V\x04\xd0\xb8\xc3\xb2\x07\xd8af\xd2U\xf5\xb4\xef\xb0t\x93\x1df'\x9c\xbe\xd7\x0e\xa2\x95\xa8\xff\xdcJ\xb5\xe7a\xb6\xd2o\xe6\xd4\xfa\xbbm\xe3\xbf\xff\xe6\xbc\xff\xf1\xb7\xd9\xe6\xfc\xa5\x8e\xbf\xeaZ\xe4\xc1x\xc7\x99C\x13%\x90\xfe\x9a\x152\xeb\x1f]+\xef\xc6\x7f.:i\xcf\x84\x824\x8d\xf2\xbds\x0c\xae\x9e\xbaR\x15 \xbdh\xbeb\x93\x96\x8a\xabrx-\x15\xa7Ho8\xe68\x96\x0e\xcbQ6\xa0+\xdc\x94W2(}\xcd\xe1\x08\xfe\xf6\x15\x9cR\xc6\x12\xdb\x93\x08AW\xb9\xae\xb7\xb8T-.\xe9\xeaw-\xec\xf9\x95\xd05dD\xa4 \xfe\x8c[4\x97\xb7p\x08\xfeJ\xc3\x07\x1f\xad\xe2\xff\xf65\xe8E\xd3)\xde\x11E\x8b\xff\xe0\xf0\x11\xd6\xfa\x82-\xa3\xdb:%\xae\xaf\xf4\xb2Y/\xce\xcf\x8e\xcf\xf7\xfc\x80\xcb\xb0\xfd\x10\xa2J\xa0\xbe\na\xd2\x13\xb1\xf7\xd9\xf4\x1cul\xbe\xc8\xac\x0cC\xa2\xee\x8c\xcfXV\x08\xeb^\xe2\xbaU\xd1-\x1c\xd5\"\xf6\x89\xa6\xb2\xaa\xa9\xdb@\\\xa6\x9f\xca\xb4\xf4\x87`\x08\xfa\x7f\xfb\x1a\x82,\x0c\xe1\x96\xb2\xe3\xe3[\xee3\x1c\xc2i\xe9\xd1\xe0;\x88\xc89\xd1\xbc\x93\xa8\xf2\xf3|\x85a\xcc+\xd9\xf2\xd1_\xf24 \xa1`\x9f\x8bG\xabE\x14'!\xfc\xee\xd1\xef\x1a\xa8\xbcw\"\x82[\xee\\\xdc\xad\x98g4\xf6y\xe7\xf6\xf6vg\x96f\xcb\x9du\xb6` ?\n\xa6\xb6b\x13\x04\xb5\xba\xa6\\\xb3z3VL\xe6\x8eY }\xfd\xec\xd8'\x18\xd6i\x08\xde*\xcd\xcd\xdb\x0c\xf5\x94d\xf5\x9c.\x97\x12\xfd\x8dc_\xe0i\xe18\xf9e\x9c\x1bt\xf3\xe2`N\xb3!\xac\xfd\xa0g\xbfw}\x9f\xaf\xd2$gD\x03V\x81\xd5\xc0\xd7\xa0\xc7\xf92\xbf\x99[\x02\x8d+\xd3,KYo\xcaO<\xf7\x92#\xf5\x97.\x91B\x1b\xfd\xe5\x0bx\xaes\x0d\xd4\x15\x88\xfc\x02;9\xd5>\xa3\xed X/\xfd\x84\x0e\xcc_\xbe@\x06G\xb0hWw\x83\xa6\xf2v\xd0Z\xe8\xa8\xd2\x86\x8e\xeaqhP\x7f\x13\x16\x85\xa0T\xe0yG\x158\x94\x8c\xc1\xd8=\x00\xa9\n\xb7\xf9zP\xdd\xfd\x03\x00\x8f\xf5\xf2\"*\xd6\xf9\x05\xfb\xec\x9a\x08\x85\xe6\x98\xaai\x03<\xaf\xacQY\xa0l\xfch\x04D\xcb\xc5r\xb7\x89\x9b]\xf5K\xec\x90\x06\xae\xf9\xa6\x0c\x00P\xfb\xc4m\xf2C\xe7\xa6\xd2\x1f%\xdbh!M*\x17\xad#}\x03\x8bL\xa4\xcd\xe6E\x99\xdc\xb9\xc2sp\xfb\x10\xbc\x10\x98H\x16%\xc2\x04\xe0\x0ft\xee\xc5\xbf\xc6S\x96O\xb2x\x85b\x9e\xfe\x91\xf6\xbe\xf6\xa9\xfeA\x93m\x92\x96k\xcb\xf6\x0e\x02\xa0|\x86\x00\xfd\xec\x7f\xf3\x18\xbd\x01\x1a\xd7^\xfd\xf6l\xab\x10\xad\xfe\x14-\x17\x82\x81s\x99\x10\x95\x19\xa7\xc8\xe8\xbb\x98k*\x15!U\xeb&\x12Y\xb3\x89\x84\x91\xbb\xb6v\xb7o\x0d\xac\xd1\xd8\x94\xdedR\xea\x89\xab\x0bk\x0c\x87\x1cM-g\xea\xc6\xc4p\xb2\x19\x91\x0fT\x13X8\xa2^\xcc\xb3\xf46\xe1\xa8\xaa\xd3\x9f 4q\xfe\xb7\xb7\xf4\x8b4\x9a2a\xc8vq\xf6\xfb\xdf\xbf9\x1d\x0b\xeb\x8bs|\xf5\xf1\xfd\xab\xe3\x0b\xfdU3^\x98\x16\xc5\xbf\x14Z\xacUh\x86Flh\xb1=\"\xb4\x11\xa5\xed\x91q\xd2s\x0e\x9e\xd9 *PrH\x16\xe9\xf5\xf5\xe2\x9b\xcc\xd1\x08\xe5\xe5}\xac\xa1\x88e\x93\x064\xf9X@\x8ep\xc9&\x96\xbf\xfcH\xcc\xcc\xd3W\xa0D\x9br\xb2m\xba\x86\x1a\xfd\xbf\x07\xf6\x97\xafK;\xadL}D\x07AG\x03\xfd<\xc3\x8bmi\xae\xcf\x92\x9b\x9aA\x7f!\xcd\x17\x95\xc9?\x92\x1b\xe4e\x95}?\xe7\xbcr\xcd\xe0\x7f\x95\xe6\xc20[\xfdz\x1bq\xc1M\xf5%\xed\xb7e1\x9e\x9e\xd6Z\x90j\xe3\xf1U:\xbd\x1b#\xf6y\xb6,e5&\xb3T\x8d/\xfe\xf4\x9enN2Vx\xbfk4\x18\xd5\x1b<\x7f\x7f\xf6\xee\xfc\xb4\xa9E\xb1\xd3\x9b\x9a\\\xd7\xe1\xc5\xc14\xfe\xe3\xf1\x87\xd7\xc7?\xbc9%\xe6,\xa06\xbe\x91\x08/\xa7\x8d-\xde\xeb\xd8\xbf\xd1\x02\x95R1\xc2\x12\x7f\xb7O\xba\xc2\x0e\x1e\x9b\xf1\xad\x84/\xecc\xb3\xbap\x85}b\xbe\x16\xee$\xfb\x8f\xcd\xf0\xa8\x0b\xe19kjK&b,\xfbf\xf5\x99\x18\xcc\xb3\xc0\xf7\xe2\x82e\x11Fv\xaaWYq\xfe\xdf\x1f]b,\x14\x8c\x9c\x91p\x8e\x1a\xe2\x04\xe4K\xdf\xf4ui\x94\xd2@Sl\xcc\xe3\xbc\xbe-*\xc8:\xdd}Q\xfa\x9a\x87\xca\xd3\xd5l>\xf7\x13\xacdFQ\xe2+u\x17\xc2U\x08c\xe1\xea\xda\xae\xe0\xc50\x10\x98 \x0b\xf3R\x9c\x94\x9e\x8e'V~Z\xf5tr;\x15148\xe4\x1a\xf2\xad\x89J\x88\x9fM\xd5\x80\x96{\x1b\xebk\xdf$\xec\x16\x12\xe9\xa7\xee\xc8\xe7\xa6\x9eMT\xa9\x9b\x8c\xa8\xfbH\xec\xbe\x08\xf3\x13\xf4P\xc4\x10\xb5\xaf\x15B\xdb\x95>K\x07 \x0e[8<\xa4n\xe3\xce\x85\xd8k\xbd?\x11\xdc\x02\x1d#\x8e?\x9f\xe0\x10NF3\xcc\xfas2\xf2\xfe\xfd\xdf\xcb\x8d\x85\xafn8>\x9d\x8cn.\xed/\x8f\xe1\x10>\xa1\xc3\xb4\x7fC\xdc|\x9d\xc1!\xdc\xc0\x11|\x86#\xb8\xf5=\x96\x14Y\xccr/\x80!\x1c\x97~\xd9\xf6g\xe8\xd4\x85\xb1&\x84~\x1f\xfb\xef\xc9\xafyoF\x82@\x8e\xf5\xefQ\x1f?\x86C\x98\xf8\xefeT6v\x0b,\x08\x02\x8c\xe5i\x86\xbc\xe2\xd5\xc7\x98\xb3\x13?\\\xf8\xe3\x10N\xe55\xb7\xb8\x93S\xa8\xa0\xdf1\x8c%\x94\"^}\x16\xc24\x08B\xf8\xcc[\xc0\xbc_\xe5\x02\xf1\x1e?\x89X \xbc\xf5s\x19i\xf4\xb8#\x95\xf9T\x05c0\xb4i8\xba\xef\xbf\x87\xadk\x0c>\x8f[}\xeb\\,\x90\x1a\xda \x0e\xed8\x08a=*\xb8\xa8z\xcc\xff:\xe5\x7fMC |\xa49\xfc\xee\x9c\xf6ObNC\\D\xbej\xb7\xbe\x9a\xa6\xe3\xaeS\xc4Y^V\xd5\x91n8*\xcbU\x1d\xc2\x19\xb1U\xe0\x9a\xdeV(\xd8_I\x1f}\xfc\xff\x84O=\xe6S\xbf\n\xe1ntuI\\\xa8\xa2\x03x\xea\xa7\xbd\xf7\xb0\x0di\xefG\xf8\x1d\x08o\xff\xf3\x00\xe9\xef\x1d\x1d\x80e\xc3(\xf7\xfa)\xb0\x95\xf8\xfb\xfb\xa8\xd5\xddJ\xfc\xc7\x83\xc0\x9dQP\xf6\xf5\x04\xb6\x0e\x1d\x829?\x80\x0f\x02\x99\x9f>\x04/\xb2ds\x10\xc9w\x86\xedDL\xf5f\x83\xdc\xc0\xb6^\xe5\\!\xefg:\x07\xdaxLG\xc9|B\xe5\x85\xe1l\xc1^\xe0[9cd\xb0\x8d\x83A\xe0{\xafO\xc7\xef?\x9c]\x9cy\xf7\x0e\xb0\x11\"g\x92\x92\x894\x84\xc2\xd2z\xbdp\xc5M\xc3P\x82\xeb\x00\x12\x0ci\x89z{\x7f\x8d\xb0\xc0\xa8\x902\xc4/\xf1\xe1\xf32 \x0e\xbc\x84\xfcy \xbf\xe3G\xc0(\xdf\xde\xbe\x14f2\xff\x1d\xfb\x0bl\xed\xcb\x97\xaa5\x1a=\xcd\xa8\xe2\x9d\x17hw\x10\xf4T\nb\x1a\xa4\x99\xb8\x8fP\x95d\xd0\xdd\xcdzq\xa1\x01u\x0bb/\xb5\x8d\x0e&\x1d\xa7GN\x06\xd3\xac\x07\x8btj\xe4$\x8a\x08\xcdy\x8ca\xe8F\xf1%\x0c\xe9\x13\xc1\x0en\xaf\x07 \xad\x97\x1e\x19\x91\xef\xab\xc3hX\xffL\x86\x88:\x82\x08\x86T\xe4\xf8\xce\xd0\xdf\xdb#\xa0\x9f\x8d\xbc\xf1x\x92fl\xe7/\xf98\x9fG\x19\x9b\x8e\xc7\xe2\xa8\xf7]e\x87\xf0\xb7\xaf\xad\x1b\xcf\x01\xd2t$r8\xfa\xa9\xd0\x9c\xfe\xedk\xd02\x1f\x17=\xbd\x9fF\x91%\xeb%\xcb\xb8\xf04\x84-\x7f\x00\xdf\x03E\x01\x94\xf7\xb4\xaa\xb7\xeb\xa8w\x9b\xc5\x85\xaa\xb3\xef\xa8\xa3\x14#\xb5\x82o\xba\xd8\xa9Z.\xb7\xef\xfe\xe3\xc0\xdf\xd2\xb5\xd4\xfc\xddA\xe0\xcbh\xbf\xe0\x89?\xbc\xa6$\x1a\xa8g\x1e\x17p\x08\xd2\xa2\xaeT\xca\x8f\xe3\xfa\xcdG\xe8>U\xf8\x98\x98L}/\xda\xb3!Rj\xe0\xc71I\xc5\x12xyXQ\xc6#b\x15%L]<\xe34M\x98\x9d\xe0\x15\x86\x18\xcc\x0d2\x91\x7f\xa0\x9a\xdb\xf6a\x19V\x8f:Feg\x04\xaf,\xfb\x19\xd4\xfb\xd1\x10z\xc3cr0\xa0\x03R=\xde\xbb\xefv++4\x05\xd3\x8fC\x88\xc4y(\x17>\xf5\x0bS&V\x0f\x1e\x05~\xe2(\x15A\xa6]\xd1\xd2\xe4\x98rx\x01}\xe1\xd7\xfeR\xb8V28\x02\xcf+\x85\x00\xbeP1\xb6\xa4\x05/\xcc\x83\x00^\xc0\xe3\xc7\xbb\xcf\x0e\x90\xbd\x83\x97\xf0\xf8`o\xf0L4\xb4\x0d\x03\xe9\xa8\xc9iKd}\xcc+\x88\x06\x0e\xf6v\xb1\xf3\x887\xf0do\x7fO\xf6/\xeacG0\xc44H\xe2m\xbe\x88'\xcc\xcfC\xec\x04s\xd5D\xb0#\x9b\xd9\xe6\xe3\xdc\x91\x83z\xf1\x02\x06\xfd\x00\xb6\xe1\xe0\xf1\xe3\xbd\x83_v\xb7\x9b\xfa\x11\xa9\xab1\xb1G\x86-3\xe9\xbeT\xd5\x98\x1a\x9c\xb5\x0c\xf1a\x9e\xc6RWs@\xebj\x06\x96ng\"\xeb\x9b\x83\x94\xca\x9a'\xffT\xd6\x10\xcf?\x955\xfa\xf3Oe\x0d>\xffT\xd6\xfcSY\xf3Oe\xcd/\xa6\xacqjj\x06duw\x18\xd1\x03\xc7\xdd\xc9\xe3\xbe\x83o\xd3\xc2\xb3w\x12DQ\xfcL\xdb$\xa5\x0d\xf9\xca\xb7Q1\xef-\xa3\xcf6\xcf J\xe2\xa4\xc3 \xe9\x18\xb0d\xb4\x19\xf2\\}8\xe2b4l\x83\n\xc2\x19\xfb\xcc\x88\xc9\x0f\x1b\xac\x8f\x9e\xc8#4\xb2\x96\xc4\xb9\x9e1c%_\xbf\xceOK\xb9/,\xd27\xe9$Z0)\x1b\x95)Qpo\x9c\xcd\xbc^\xbeZ\xc4\x85\xef\x85\xde\x86\xec\xfb\xde\xde\xaf\xa2Dq\x04\xad\xdd\xa5\x95i\xc8o\xe5+6A\xfa}\x8f\x15\x95\xea\xb2H.hk\xca\x14\xcd\x13,\xc2CH\xfd\x16Q\x923?\nF\xf1e \x13\xef\xa4z\x92\xf3\xeeh-b\x17\x87J)h\xddR\n^v\xff\x89 \xab\\nL\x07/{`\xf2\xc4\x13Zs\xc2Y\xd9\x89\xca\xcdl\xb3\xb0\x93^\xce\x8a\xd7\xcb%\x9b\xc6Q\xc1l~u\xd2\x9b,X\x949j\xcc\xb1\xc6[a4\x7f2\x8f\x92\x84\x19~\x867X\xe3U\x9c\xaf\xa2bb\x98},m\xe5\xe55\x11\xca\xe7\xae\xed@CA\x1e\x0ea\x9b\x9fe6I\xe6'\xcf\xb5\x99:\x85\xce\x90\x01\x9a\xe1\xc5\xb5\x93\x9b\x95A\xd2x\x85\x10\n\x9f\xf0 \xa8\xbd1\xa6s\xd5\xcad\xdf\xc9\\ \xc2Q\xa5\xdeV5\"<\x96\xa7(D\xae\x1a\x9b\xac\xa5\xfd\x18]\n\xad\xed\xe09D\xd95n\xed\xbcR\xec&\xcf\x03\x95C\xa3,\x1d%\xdb\xdb\xe6I'\xf7\xcf\xf5h{{y\xd9\xb6\xd0\x02(\x7f\xe5\x0c&_\x87\x9b^\x92\xde\xb6\xb6\x86\xb5\x9c\x0d\xcd\xe1H(\x13|$\x93\xec\x16\xe6A\x8f\xd3\xbd\xdd\x10R\xfcc\xd0K\x93*\xb4\xf9\x95\x08T\x1f\xf9qo\x95\xe6\x85\xdc\x85Hk\x06\x18\xcfi\xd2\x8b\xa6\xd3\xd3\x1b\x96\x14o\xe2\xbc` C\x9aN.\x86\xd6\x00r{\x93^\xbc\xe4=\x9e\xa3\x17P\xceG\xd6<\xb5\x89>\x06<@=/\x04\xefw\xf54\x07\xf6\x88|ON\xc8C\xaejK\x8c\x1c]\xa5\xd2$c\xd1\xf4\x0e\x03\xee\x89p|(]/|O\xf8&a\xaa\x15\xf7\x88\xf2^\xb4Z\xb1d\x8a\xf9\xe8}\xed\xab\xa0g\xb7\xdc\x86\xc3y/c\xcb\xf4\x86\x89\xc6\x90g\x0e\xcb}\xea\xf4\x1c\x80\xa6\xcc\x959+.\xe2%K\xd7\x85\x86\x11\x9c\xe9\xa8\xbe\x0f\xeaF\xb3\xd6\xf7V\xa4Y\xa4\xd5C\x98VM\xe0_]\xb9\x15\xf7`\x1b\x9doh:\x8a\xeaF\x9a\x1f\xbf\x19\x02k'\x9b]\x1cv\xdc]\x13\"\x1f\xc8\xae\xdb:n\x81\xde\xa6\xec\xce\x13:D\xff\xe0I{V3G\x9e\x8f\x0cie\xea\x17vj8\x91\x90\xa8-\xb5q\xdc\x9b\xb9\xb2\xfe\xfa\xfd\x10\x92^\xc6\xf2tq\xc3\x02\x8cl\x8f\xa9\xfc\x96\xb1\x96\xdfjC\xc0X\x10\x10\x80yF+\x01\x91\x0dDg\x86v&\x90\xe2\x00\xe9|\xf3\x98\xc7\x8f\xcb\xc9Z\xdaT\x91wF\xb2x[[\x9c\xc9\xf3>\xb0\xeb\xd3\xcf+\xa4\x8di-%\xe6\x86s\xb6\xf8<\x95\xb0\x81\x9c\xf3\xe3{\xe1\x82ZN?\xed\xc9\xab7\x11\x9aA^\\\x89w\x9cK\xb10>\"\xc2\"F\xd2A\xc0O\xf0\x161\xeb\x9d\xa3C(\x17ac\xb7\x05\x00\x88l\x9e\xb6\nA&\x8c\xf1B\x88\xee\x0d\xc4g\xae\xdb\x84Zf\x97Nr\xa9\xa6\xeb\xc9\xea\xc9\xc57\x1a\xd1\xee\x9eC\xa69\xd8Cyc\x12\x15\xbe'\xf8)O0\x1dB\xc2\xab\x875\x9e\xd5\xeez5\xbe\xf4]\xb4d\xbf\x8e\x9c\xbdk\"\xa2\xdc\x934~Z\xe6\x0fR\x9aylj\xce\x854c\xdd\x9eKaf\xcf\x14Z\x16.@\xbc\x92\x0e\xc8\xba\xe4&\xe0&lS\x8e`\x01- peF$\xcc\x98'\xae\xf9\"\xbf\x90\xda\xb7\xd2\xccL|`\x1eH_\xad\xaedN\xa5\x92\xf4\xa6\xfeV\xd6\x9bii\xfdB`\xa3\xe2\xb2m\xc5\xcc\xe5Jp\xa7\x96\xb1C\x1el;\xa8D\xae\xf8\xc9\xa5\xe0\x8a-~\xa6\x13R\xb9Y\x94\xd2\xdd3\xf1\x1f\xef\x99\x18Ty\xeb\xd4\xfdr\xbat\xd9v\xed\xf4\xec\x80\xde\xa4O\xcc\xf7\xb1c3\x08\xf4\xb6\xac=\xe4\xbd\x93\x95tGS\x94Ey\x1e_;\xd4Q[\xb8\xb5[L\xaa\x944KE\xb4-\x1c\xef9\x92\x9c\xdf-\xaf\xd2\x05\x15[\x06\xb9\xe9\xe8j2e\xb3\xeby\xfc\x97O\x8be\x92\xae\xfe+\xcb\x0b\x8f<)e:\xd1'!dJ\xbf\xe4\x05\xbdY\x9a\x9dF\xad\xd1\x1a\nq\x86\x18\x0e\xadA(,\xc4r\xe1l\x1b\xf0\x0e\xca\xf3I\xdc\x95\x89\xa2\"\x08d\x98L\x0f\x93\xeeVn\x16_\xeb\xcc~\x9b\xd7\\\x84{\x9e\xc3\xdc\x94rC\xa49\x83PFK\x9f\x85\xa8!\x89{\xb3\xe7\x90\xc3KX<\xb7\xf9\xd2\xb2\xe5\x95\x90=\xd7\x9ap\xbc\xe0\xc2q(\x14!\\\xfe\xf3\xa7\xe510\xf1\xa7B\x98\xf1\xa7A\x88\x8a\x90y9\x86\xa5H\xc2u\x03/a\xf9<\x00I&\xa6!\xead\xe6\xa3eiQ\x95\x8cV\xa8S\x1f\xad\x1c2\xb8\x96a\x0d\x86\xdd\xb2J\xb5\xed\x9eA\x9f\xe6\xd7\x06\xa6nI\xec\x9e\xdd\x03j\xf7\xf8\xbc\xe0\x80s\x8f\xfe`\xf7 \xa8\xd9{<\xc5\xd7\x8f\xf7\x1e\x93)\x1a\xd6\xd4\x98\xa1t\xd7\xcc\xd2U\xae\xb9\xfdV)\xd4\x95_o\xc6f\xb9\xcc\xe2\xc7\x7f\n\xafh\x9c\x19\xea\xef5Jc\xf7\x9d\xff\x1d\xfb^\xd4\xdd\xa8\xd7\x9aof\x9c\x7f`\xd1\xa4\xd0\xf3\x10\xf2\xed\xa2W\xc9e>\xfd6\x9e\xb1\x8c\x85e\xe4\x82wg\x89\xc7\xbc\xbe[\x87e\xca\xf8\xa7\x8f\xbd\xa0>\xbf\x9e\x91\xd3\xbf\xbc\xaf\x0ceD\x05\xa2\xae\xcab\xafR\xb7\x85\xe0\xa9)\xd4u\x06\xfa$gi6a\x1f\xed\x00\x01\xe4j\x19\x1d\xfeX}\xab\x04x\xd6qp,\x04O\xeb\xba>\xbeE-\xab\xf1Z\xcfj\x9c\xd7\xf3#\xb3[X\xd4^\x1a)\x97s.\xd3\xe5z\x03ZkA\xfd\xcb8\x7f\xbf\xce\x98\x85\x15[\xfd&\x95AY\xd3r\xe5\xe2\x8di\xa5\xb9\x86\xa8p_\x82\x92\xf8\xcf\x02\x9b\xbc\x18\x0bc\xf5l\xfe\x90\xae\xafa\x861\x0c\xba\xfe\x07\x91\xcb\x13q\xb5k\x1fjk\x10\xf5+X;nb\xee\xbf\x04\n\xe8z\xc2\xb0\x07n\x9aT'\n^\x84\xef.\xf1\x17\xdf\xb8\xf5_\xbe\x97q\xdc\xed1q\xaf\xe4\xa1\xc9\xf0A\x7f\xd0\xdf\xfb\xc5F\x9a\xf8\x8f\xf7\xefm\x9d\x86\xe2\xd6\xd6`C\xd6\x98\x1eP\xed\x82\xf0\xfc\xf4\xe4\xc3\xe9\xc5\xf8\xd5\xd9\xf8\xdd\xd9\xc5\xf8\xfd\xf1\xf9\xf9\xf8\xe2\xa7\xd7\xe7\xe3\xb3\x0f\xe3?\x9d}\x1c\xff\xfc\xfa\xcd\x9b\xf1\x0f\xa7\xe3\x1f_\x7f8}\xf5\x0d\xees\x0f\xe65O\xc1u\xd7\x12\x0f\xa51\xe0\x01\xed\x92\xf7\xd82\xd0\x92v^\x074\xc3\xbd\xfb\xe4q\xdd^\xf4\xc9\xbe\xfe\xbb\x87)\x13=\x91k\xfe\xbcH3\xe65\x98}\xaa\x05\xed]i\xb3\n\xabV\xd2\xe5U\x9c\xb0\x0fl\xba\x9e\xa0\xd7gkKi\xcd\xdb\xa0j\xe9*N\xa6\"\x8c\xd0 \x1fY\xda\xa9\xb1\xd8\xd1X\xb4Z-\xee\xde\xc6\xd3\xe9\x82\xddF\x9d&\x189Z\x9ap2\x9fwia\xbd\xb1\x1b\x85\xe3 Ps\xe8\xd0g\\\x1bs\xd1\xd3o\xcb\x80\xc9|\xb0V\xf46\x8e\x8aFJO\x92.a\xf4\xb3\xda\xad/\xe7\xb1\x11\xf9\xc4\xb5\x98(38m-\x15\xf1\x16\xff\x88:\x9f0\xa5/\xc5BED*\xe5\xd3\xcf+\x8c\xf9\x00\xc5\x9c\x01K\xe6Q2a\x19\x14)\\1\x88\xca\xe9\xf6\xa8\xe8\x8ajq}\x16\x08C\xd9Z\x0d[+A\x8e\xa9h\x1bS&\xb0\xbf}H72\x99/\xa1g\xc6{j\xfb\xf5\x84pM\xe1\xef\xf1\x9e\xda~\xbd\x92\xa7W\xad\xa0D\x88)\xa9\x8e\x9c\xe1\xda\x8a\x1c(\xe2\xfa[X\xc6\x06&\xb0\xe8F\xe7MVS\x8bNM\xdc\xd0L\x8csAX\xd3\x82,\xd4\xe5]\xebj\x80v}M\xa5O\x95s\x98\xfaA\x08\xb32\x9a\x8dU\x0d\xb4\xa94\xda(\x8a\xd4\xdb\x0d\x15@\xea,\xb6\x06!\xef\xd5\x1e\x91\xfe(\xd9}&\xb23\x9f\xd9W\x14\xe63C\xfd\xc4\x84\xf9I\x08\x03\xda\x8a\x0b\xac]A\xbfu\xad\xe4\xd2\xbd\x92[Y/B;\x02k\xe9d\xf08X\xae\xf3\x82/\x19\xc6\xe2\x05!x\xe5=\xf8\x983\x98\xac\xf3\"]\xc2\xb2\xa4\xe8\xa8e\x88\xf2\xbbd\x02\x91\xf8\x9c\\^#-:\xeb\xa1l`\x0d\xe1\xdf\xca!Dw\x98\xb2}\x1e\xdd0\x88\x12(\x83\x1d\x83\x87jiPvG=\xf8\x89W\xb9K\xd7\xb0\x8c\xf3|\xc5\x16\x0b6\x85\x08PD\x89\x92\xe2\xe8\xdf\x1c\xa3Y\x11\x00P\xa7g\xd9\xfdT\x1a\x804\xce\xcd\x1dFs%E\x1bNSr\x7fA\x9a\xc2~\x85Y\x9cD\x8bEc\x1b\x03\xfb3\x9b|\xe8\xf6\x12\x9c\\\xcd\xc4\xd9 \x93\xa6k\x89\xe1\xb7\xb7]\xc8\x7f#3\xb6\x17\xa3\xc4aD\x92\xb6^\x80\x82\xa6\x92\xfb\xce]m\xe9\x0c\xc8\x15\xf7^\xbf{}Q\xff\x94V\"\xadI\xc3L\xb5hd\xec\xf1|}\x95O\xb2\xf8\x8a\x91\x11\x96\xafKq\x87\n\xf5\"\xe4'\x89$m\x92\x1f\xdc\x9bp\xf2\x93,a\x9f\x8b\x0f]O3\xf5H\x1d\x0f\x05Y\xf58!\xac\x1e*Th})BX\x8f\xd2^\xd4j?sS\xf9)\x11I\xacu+Fz\xb8\xdaJ\xb5C\x1a\x14\xb4 5\x91\x0e\xeb\x8b\xbb\x15\xa3\xe0\x9d^\xc9t\x89\x12\xd8\x8a\xec!\xac\x9d=\x96\xe4\xb6\xddJ\x9f\x95\xf6\xd4\xe2/\x7fn\x9e\xeb\xfaC\x93~@)\xa2\xe1pQ\xa2Ma9\xc3\xeaO\xa3\x0d\x82z\xd6\x89\x06\x7f;l\x90z\xba\x9cQ\xf8&\xe8\x843P\x0d\xcf\xf2&\x01\x81|\xcc\xc2\xc6\xf2\x05\x11)\x87\x0b]\xb4K\xecc\xeb\x0e0&Q\x91\xef\x94!x\xff\xfe\xef\x9c\xb9\xfc\xfc\x88\xff\xac\x07\x93\xff\x06\x89Z\x17\xf1\x1d~i\xd6\x9d\x8d\x14E\x1f\x9bWB\\\x1a(o\xc7\x84\xd8|I\x84\xc2Qfk.\x9f\x87\x9cp\xfa\xad\xd7\x10\x1eh\xa5Mo\xad\x8c\x1f;\xb9a\xb3X\xaf!\x92\xb9\xe2\xb5\x81\xe8\xa6v\xc1\x1c5\xea4\x90{\x89\x91{\x01\xcc\xd7\x8a\x7fm\xa1hS*\xdal^\xbc\xc0\x1b\x93\xc8b\xcbxs\xa8$\xe6\x1cIQ5\xd1\xb7\x9bH\x90\x1d\x17\x8e\x07a\xcd:\xda\xb3mY\xc8\xa3\xca-\xd7%\xba+2\xbe\x91\xf0I\x02^uV\xa1\xf7\x83 \xda\xe3~\xd0\x8bzB\xa3e\x82~cm\xd5\xa6\xf5\x9dkm.u\xc9\xcc0\xf2.\xacP\x97\xc7x_\xa6q9exIq\x19\xa8Y\x83^\xda\x8b/xQ\xc5\x18\x95\x08\xd0|\xda\xd0\xac\x8d\xdd\xf8\x80n\xbc\x18\xf5/I\x04)zBz\xf5k\xb0l\x18AWB\xca\xfc\xa2\x87j\x18\xc9\x80\x87\x15T\x88\x13\xc88\xec\x1fDq\xf8`J\xbc\x10\n\x15\x00\xb9\x8b\xf2S\\\x10\xd5(\xb7&}\xc0\x11xq\x12\x17q\xb4\x107P\n,*\xabr\x91\x82\xae\x9b\x83!\xa6\x1c\xbf\x89\xd3u.\xd3)gl\xc2\xe2\x1b6\x85\xab;]\xffP\x8b\xec\xaakM\xcb\xd1w\x81e\xb5g\x9f8\x9cQ-\xdb{y\xb1i\x1e\x19\xca\x84\x9frG\x1d\xc0#\xd3\x98]\xb8Q\x1cA=b\x02\xe5\x90\x86r\x0d\x1cA^\x1e\x07e\xc5j\xf5)}5GJ\x8a\xba\x13y\x06\n\x97Q \xaf\x1f\xfb5\xcb\x95\x82KXh\xc3kW\x8d\xf4\xaa\x0bL\xee!\xe8y\xc0\x17\xd6\xa3i~A4\xa6\x08z_\x18\x9fp\x1c\xe3@,\xf8\xaf\x9d5\xc7\xaa\x9d>G\x96d\xb3\xadS\xed{\xa7\xbd\x9c\x96\x0f\xa8\x84\x0e\x9e>\xe2\x08\x92\xb6t\x87\xa5G\x1f\xbe\xae\x0f^_\x0cm\x80Ay\xb6%\xfe\x9e2\xf0\xde\xdc\xfc\xb6\xcd\xbcag l\xbf\xe5\xa9\x8b\xb6\xf4}\x18j\xb1\x01\xd2\x92\xb0g\xc1s\xd8\xde\xe64={\x1e@*\xe8y\xe1\xb3Qr\x89\xcaT\x87\x1dh\xba\x19\xd4\xb5\x83\xf1\xc9A\xe0{E\xfaq\xb5b\xd9I\x943\x97\x15'}Hv\x02\x0eqA\xaf\x06\xb0C\xd8\x1c\x8bh\x97\x94\xaf\x7f\x81>_\"%\xc6!\xec\x14\xf0\x12R \xcb\x14\xb6\xd1h\x0b]\x81\x12Y\x90r|\x0c\xca\x8f\x12\xd8>\x844\x10\xe0\xe6\x1f'\xf2\xe3\x04v\xf8\xef\x97/1v7\xff\xe3\xd0\xcczU.h\\.U\x8aK\x95\xc1\x0bH\x9f\x07\x10\x8f2\xb4\xa5\x19e|$\xf4a\x17\xb7\xac\x92\xb9D|.\xc2\xc2\xd5\xf7F\x7f\xfe\xf3z\xb7\xdf\x9f\xfe\xf9\xcf\xeb\xe9\xd3~\x7f\x87\xff?\x9b\xcd\xfe\xfc\xe7u\x7fO\xfc\xec\xef\x1d\xf0\x9f3\xb6\x8b?glw\x86\xdfL\xf1\xe7n\x7f&J\xfbL\xfc7\xbb\xdc\xdc`W\xce#\xe9\x15,/\xdaM\xcf\xbabG\x08\x19\x85 \xa9\x03A\xe2\x86\xbdD\xac\x1a\xdee\xc6\x12\x03\xf8\nmo\xa7\x97\xb8v)\xbc\x80\xf8y h\x9e\xcfw\xd7(\xbdD\x0f0\xc76\xdb\x90\xb8U\xdbl\xf0\x9420\xae\x84\xf1J\xcdA\xc6\xd7\x8fI\"\xe3\xd6\xb3\xa0\xe1\x9a4\x04)\x9c\xf6\"\x05\xad\"H\x89[\x83\xa4M\x84US-\x99,ZQ-v\xde\x11(\xdeLXldhx5\xea\x13\xa6\xcf\xa0\xd6[\x04*\xb7\xc5{<\x0f\xb9\xec\xe5\xa7\xd5A\x17c\x1eHs\" \xc7)r`\xd7\x07`\xd7,q]e\x00\x88{9o\x14/\xb4\xbe|A'\xc1\xdaG_i\x94)\xbfO\xd8\xad\x1f\xf7N\xf0\x17\x97\xe38\x0bo\xe0\x13\x7fT\x15\xcc\x8e\xa0\xef\x9ax3\x94\xb3ng\x05\xfbd\x19\xf5\xc6\xba\x04}\x9c\xdf%\x13%,\x9b\x82tM\xd6vUZ\xeb\x95~\xcf\x12\x116\xc0U;\xd7k\xbf\xcf\xd2\xcfw\x97\x8e\xab\xf7\x16\xf9\x18\xad\xff\xdb\xc4\xe1\xcc\xe5F\x81\\\x0c:\x95\xe2_\xeb\xf2\xaf\xb8\xfc\xab\xcd\xc8\x86\xa2\xdd\xb6\xd6\xa1\xc52\xb8y\x92\xa5i\x17\xb5\x01\xdd\xeax\x0d\x11m\xff'\xfe\xb4d\x86jmY\xf8\x8fm\xd2\xecWj\x11\xf4\xd4\x10\x1b\xa2\xfa\xa0\x1f\xf8\x89\x7f\xb0\xff$\xd8\x88{ih\xd0\xdc%b\xf3\xec?i92\xcbKo\x19\xfa\xc8q\x80\nv\x15\xad\x0c\x95.\x06\x8a\x92h\xab\xa2-\xe53\xb4\x95\xfa\x89\xf0kV\xf4\x1c#\x02&h\xae\xaa\xf7\xc7x\x97m\xa7r\xc3\xacim\xdc\xee3\xda0\xe4\xc0\xca2\x14\xa1\xb1n\xed\x15\xa7\x07\xbbm\xd8\xae\xd8\x80<\x84E\x08\x13\x8a\x19@g\x02\xf8\x9e\x0c \xaf1\x8cv\xa9\xc8\xa8Dq\x07x\x1f\xc6\x019E \xfb3@\x1f\xdd\x97\xb0j&%\xc2\x8f\x9a\x9f0\x94nm\xce[\x11\xc5\x9a\xe85\xc7%\xb6\xdb\xbaq\xf08Kq\x87f\xbd\xbf\x96`\xe0\x12\x17?\xb63B\xf4\x04\xc5\xf9\xa0\xbb\xb8\xa0N\"!k!dE\xce\xfb\xdc\xc0\x0bX=w\x1d\xe5\x98\xa7\x96\x8c\xef\x02\xd2)\xba\x18\xdd\x10we\x1c\x00y\x80M\x8c\xf9\ns)\xd9\xbf\n\xe1\x0eC\x1d\x15\x88\xa1\x13\xcc\xca\xe8\x8b8F7\"\x9d\x13\x7fK\xb7\xa6\x99r\x8c]*\x1f^o\x1c`\xea\x9a8Y;\x92\x0c.\x0d\xcb:\xfd\xb9\xcaX\xf4\xc9*\xb1I!:\xa77\x8db\x0b\xa5\xf1V]V\xed\x93\xd8\xbf\xc6j\x9cA\xbd\x13\x9a\x1a\xbe\xfb\x17\xd2\xcdTl\x8bIP\xe1\xd2\xb50\x06p&\xbdl\xea\xb1 \n\xe0\x84\x04\x90\xd0\xf8*\xe2\xa7\xc4\x18+\x86/\xd0\x15\xee\xa3\x85\\\xdar\xe0\x8e\xe1|\xeb\x82\x90\x87\xc8\xa4'<\xcaQCZ\xfe(\xeaN\xe9\xf8\xd7\xbd\x84\x95o\x92\xf35\xc9\x9e\xc4\xac\x9a\x98\xefT\xcc\x97\x84\xa9e>N2\xbf\xf7$\xe8}\x8c\x93\xe2)\x8a\xb1\x0fr^\xee>\xa3B\x80r\xb1\x87\xbe\xc79\xd8\xbf\xaf\xe8)\xe2\xa5~\x93/\xddSz\xac\xbb\xedcr\xeb2b\xa1\xa5q(g\xf8l\x8e0\xf4_\xe6\xc7!$\x1dp\xa4D8x\xfc8\xf03\xc7\xd6M7\xebc\xd0\xa7\xa3RqN\xcd\xbf\n!'&v\x0d\x870\xf2X\x96\xa5\x99\x17\x827Y\x08\x7f5o\xca\xf2\"K\xef0\xb0N\xb4\x16\xef2\x96\xaf\x97\xcc\xbbt\xb9\x08\xdd9\x11&\x06y\x1b\xc3a\x88\xde\xe0ROf\xce\x154\x1aU\xe8F\x86\xb1]\x0f\xbd\xc9\xc5\xed\xd3\xdbt\xca\x9b\xdc\xdab\xda\x0b\x19Z\xd9\xb7\xeb\x99o\xbe|\xc1O3\xb9\x7f\xce\xca\x12\xc7\x1d\xa40r\x98\xc7\xd7\xf3\x9f\xa3\x82eo\xa3\xec\x93\xbd& id\xd5\xeeO\xed\x1f\xac\x89\xd1\x1d\xc1\xe0\x00\x8608\xd8{\xba\xef\x80Bm(\xfc,\xe0S\x12'\xa42\xa5\x10\xb0\x88\xaa\x82(\x90\xd9c\xd6!\xdd\x08\xc6\xfb\x9d-\xd24\xf3\xedr\x15\x96@\x08\x8a \\\xeeo\xca\x84\xed\x18\xe4R\xcb\xd8\x1e\x8b<\xe9\x9c\x8f\xd5_\x9d\xa4k\xf4\xa5W\xf5f\x8b\xf4V\xa4\x1a\xd7j\xb2D\xa4\xc8/\xf3\xb5\xb3d*\xe8W\xed-\x87\xb2\xf8\xb6|\x85.>\xc2\x9d\x05\x7f'\x8cM\x15\x91\xac5(Z\xa3\x8a\xd4\xda\x89 \x8aF\xfbbC\x9cO\xe6l\xba^\xd4G#\xf7\x8f\xf9\x12-\xe9N\x93I*\x87\xca\xacw\\\xae^\x17\xb3\xa7*\xe3|t\x1b\xc5\xc5\xab,\x8a\x13\x0dNr\xaeo\xd3\x8c\xd5\xdb\x9f\xa4S\x96\x99\xe0+{\x13oY\xf5\x8a\xa3\xc4\x1c/\xb2\xe6\x92\x82<\x0bzBE\xf1J\xb4\x15\xd8M\xb3[\x98\xfbU#\x81\xdd\x8fVX\xc3W\x97\xe7\xd7\x95\xdb\xf3\xcb\xa4\x1c[\x88\x8b:e\xb8\xaa8\x08>\xb4+\xd2\x95\x0dG8\xce\x8c\x03\x92\xd7\x17DK\x04\xa9\xa8\xad\xb8\n\xf1 \x14\"4\x03\xcc\xebV4\x06\xdb/w|\x10\xba\xd8f\x89\x1b\xda\x87\xea\xcdaU\x1a`\x14\nW\xdcx\x07 \xc7\xd5m\\\x16B\xeab\xe9%\x17\xc1\x0c\x88\xd8`\xabL\xcd\xe1\x08\xfc\xc8\xd8c\x9d\xf8\x04\xd4\x8d\x8b=\xac\xd6\xc9\xee\xa7\xaa(\xf1\xcc\xd5\x1ah\x9c{Y\x99\xb7\xde\xe4b\"\x94\x01\x8a*!\xd4%\xddRy\xd3\xc2*\xb1\xd06o\xb8N}aX\xb1\x91d'\xf6\xed\n\xa0\xb9xI\xb9\xfa!\x9c\x93\x97\xf7\x1ct\x11\x86.\xf2\x91f#\xbew\x82+B\x81\x9es&\xa2\xe4,zq.\xd8'?\x13\xce\x07\xfa\xb6A\xcd%e\xbb\nztn\xa5*1NKa\xa8W\xf7Mz\x9d\xdcD\x8bx\nI\x9a\xec\x88f\x1f\xc9\xc3a2_'\x9f<39\x9dz\xf0\xb8wLDnk\x02n\x11F\xb0\n!F\xe1\x93\x13p\xbf\xe4bb\xcc\xc7c\x0cY\x1a\x9c\x96\xf1\x97\xfb\x1c\xa3]\xf37?&\x93\xc5qi\x16\xb3\x0bi6\xc7\x1c6\xcdv\xde\xc6\xdc\x16\xbdY\x96.i\xdc\xc0 f\xfc\x94\xd6\x8f<{\xbe\x9aC\x9e\xe0({\xeb$\x9f\xc7\xb3\xc2\x0f \x9a\x15,\x03\x96L\x81\xdd`\xf0\x8f\x00s80\xb48\x10!\xfa\x10X\x02U\xbb\xb4\x8d[F5|z\xf6\xa3h\xd2\"\x0eQyd`nK\x0em\x8c\x0bXn\xda\xdb,\x96\x97{&\xb4\xa5\x8e\xaeJ\xf5\xa5\x8fw\xc0{\xfbT\xed\x9bz\x99\x0ci\x8c\xe9\x9ej\x03\xa2\xb0\xcfT,\xb6\xad\xd5\x16\x93`\xe2$\x84\xd5\xb9 \xdc$r\xc0/L\xe6\xb0b\xba\x98\x93\x8e|\xf5\xcd\xf8\xe3\x0e\x1a\x7f\xab\xd1xj\xc0E\xc9E}\xff=\xd4\xddEp)\n\xc1\x16\x1d\xf1)\x88\xb5\x9eFE\xc4\x97\x1ac s\xa0\xf9}\xb1\xa6\x1d\x89\xa2@\xd2\x92\xa6*\xe4Kx\x1b\x14\xa5\xad\x01\xee\xfb\xef\x914\x06\xa1XT3\x10d\xed\x17\xed\x94q\xa5\x87q\xf2J\xc6\xeb\xdb\x93\x9f\xea\nc\x82\x7fP\x01\xad\xea\xaf+\xce\xcf^bB\n\xae\x8d\xc7\x89\x80\x8e\xee\xfd\xc6\xfe\xf9 \xdf\xee,\x13\x82\x06\xbf^\xc5\x88,\xd5\xdf\xf5\n\xe3u\xa2\xd7)\x7f\x19\xb5\xaa:\xad\x87\x99\x90\x06\x10;\xd6\x8b\x05G\x10+\xccw\xbdq^\xb7K\xc37\"EE\x06\xe4\xf29\xc9AVG\xf4\x04\xcfoC{Th1\xdb|\xa4kxld&7/r\x15eu\x86\x9b\xa1;\xa1 \xfb\xc2\xba\x07U\xac\x9e\xf4\n\xc3\xa0\xa9\xe3*\x1c\x1a\x126;\xfcH\x1d&r\xcf\xb5\x9e\xe4\x97/_\xc2\xa0\xf6k\xb7\xf6k\xbf\xf6\xebi\xfd\xbb\x83\x10\xd8\xf6v`:]\x83\xe0\xb6\x03T>\xbd\xa8q\x17\x0c\xe7\xab\xa0\xa9\xcf\xbc\xb04\x06\xfd\x10\xfa\x1dc\xdb\x9c\xd3PPW*\xed\xc2\x97\xdd;\x97\xf3-e\x05\xc7\xfa\xa9\xef\xf1\xd7\xea\x9d\x17V\x8b\x1eP\xdfH\x9d\x88\xe2\x04\xd2*\xf5\xc6 \xba\xa3\x0d\xe1\xa4f\xe6\x02\x0d\xf3<\xa1\xe7)\x87\x04j\x92\x9e\xc8\xb0\x80\x0c\x87\xfe\xee\xc2N\xea@\xf7\xf3\xc9}\x82\xd4\xf4!\xc8\x82\x9b\x1a\x92~\xa8O\xf2X\x10\xd6\x8e\x13\xbb\xca!\x864\"\x01\x0bXV\x9c\x16\x17\x10\xce\x9c\xab\\\xeaK8x\x8bx\xf2\x89\x1ag\xa7>\xde\xb7\xaf\xb0\xc2v\xa1y\xa3zB|w(\xe6,eZ\x85\x90\xa8\xd9\x96\xe8\x18\x82\xb9d\xdarn6\xa5\x8bo%\x02\x88bS\xdf\xe3\xe3\xa9m\xeb\xe7\xf5AJ\x0b\x01\xa5|\xf2\x83\xe7\x86\xc0\xe3\x1a\xe1\xdb\xb6C\xc88z\x8eDWH\x1d-F\xa9{\xaf\xe3\x98\xdeu\x13I\xfaB\xfbU\xb9\xb0\x08\x07\x16\x0c7D\xe2\x15_$\x91\x93\xa4\x16^\x8a\xb8g\x92%;\xa6\xf4\xa0\xff\xd2\x15:\x99\xd8\x93\xcd\x1a\x02)Mx\xe2\xecd\x9a\x91$\x9f\xef\xc0\xb4\x95\x02\x0d\x01 \xa5\x0dM 1\x8a\x00\x8d\x9er\xfd\xa4r\x832\n(\xa9\x9b\xd0\xfeZ\x9al\x0d\xc3\x0f-\x99\xee\xcb\x17\xa5f\xa8n\xac\xe5\x8c\x87`\x89\xef\xa2\x9d\xb0\xfc$l\xd4\x01\xbd\x16\x97\xc40\x84s\x95q\x81\x13D\xd7<%\x81>T*\xa8@k-p0\xfe\xdf\x7f\xafzq\xb5\x8d|\xb2\x0c\xd0Q\x03\x8d\x13}\xa6\xbe\xc7\xebUJ\x82\x10C|\x18Q\xae\x04\xe4\xaa\x93\xc6\x96\x97q\xfcS\xe5\xf6\x00\x0b\x96\xe7P\xcc\xa3\x04ny\x8de\x94}\xf2\xc4\xb8P\xb9\xaa\xc0\x86\xcd*\xd1\xeeH\xad\x05\xff\x91\xe2\x95\x19\xde!\xa4b\xe1\x91\xbf\x93R\xf94\xc5\x01{A\xa8}_S\xa9HM\x91\x05@J\xa3T\xd38\x9aJ\xb5@or\x10\x1a\x82\xb0X\xc1\x04WP\xae\x8aX\xdaL\x1e\xf1}8*\x05\xbc\xa1<\"\x8f\x1cz-\xfe\x7f?\xd0u\x7f;\xa8\xec$gQ\x02\xd01\xa3\xa4\xdaJ\x9a\xc2C\xe2\x8f\x1a*\xea\xc6\xcbk\x94\xda]\x14?\xb0\xea\xa7\x9b\xa1 \x1ew\"(Z\xc3\xc4\x85\xa6\x80x\x00q\x8e\x81s\xe3\xe5JdH`6\x1d6n b\xcc2\xd2\xca\x8c\x96\x82\xd6\xf7B\xb8#\x8b\xa7Y\x14'^\x083\xb2T\xed\xcf%Y*g\x17\xc2\"\x109S\x8d\x8f\x13N\xaa'\x0deWd\x99\xa467AX\xc6\xbd\xde\x8au-!^\xeb\x8fo\xb3\xb8\xa8]\xbcn\x99/\x91\x08\x96\x9f\xcc\xa88\xb9_\x1b\xd6w\xe2\xbc\x8a\xc6\xb5E\xceP\x18\xeeM;\xc5\xb2\x8e\xeb\x06#\x1a\xef\x8b\x04\xf2\x8c\xab\x8cQ9^\\X\x17\"\xea!|\xeb\xc9X\xc6\x02\xc6\xd5.\xa0A\xac\xb20Pes 24\x00\xd4\xb2!8O\x05\xc4$1\xc1P\xb6\x14*j\xc5Jk\x1c\x8e\xbeBt\x91\xd1@k\xe4\x12\x1d&%qW\xa1\x0ej\x15^\xc2\x80W\xda\x11\xcd\xbe\xf3+\xfa/x\xcc\xad\x95b\xa2f\xd1\"g\x80\xddB\xc6\xf2U\x9a\xe4,\x04ek\x9e\x98\x17\xb0\xb5%n(\xdd\xde\x96\x93\xeb\x8bl\xca\xbc\xbdMw\xe3\xb2\x05\x88\x8aT\x15A\x08W~+5\x13\x08'\x10L\xbc\x17\xe7\x82\xc1\x98\x10\x11!\x9a\x06y\xed\xdcV-\x84\xf9\x8a\xa4 \xee\x8e\xee\x9ai\x93l\xbb\xf5\xb8\xd8\xb4\xdb\xab\xa6n\xab\xc3.\xe9\x89\xbf\xbb\x9d\xfdJ\x9e\x15;\xb1$\xfed7]o\x07\x00\xac`n\xba\xb1\xef*c+\x96L\x15P*/=\xb3D\xe4\x98iP\xa1\xf7\xc6h\xc2\x97\x0b\xe4\x91?F\xc5%\x1cA\xe4\xeb/\x02\xb4\xe3\xab~\xd7-\xb2j\x9f\x1e\xc2( k\xaf.\xb1\x8a\xf0\\J\x1c\x04OCeu`\x8b\x03\xa5\xce\x1f\x88w\x06W \x90^\x9e3|3\xc7%\xa1\x95w{\xc8\x8aU7r\x89\xbc\xcd\xf3\x03\xebR\xdf2\x82\xb1\x18\xf3&\x9d\xd5F*\x03\xf7\xdaWL\xd4\x90Jz\xc1\x1f\xc2\xc9%\xd6b9\xeb\x1c\xbdR\x11\xce\xe3\x9c\xfeh\xe0\xfe\x88U\xcc\xa5,\x87#lIXq(\x89Q\x96\xe1Qi8f\xd8^\x19\xfa)8\x90\xd6\xf0j\x11KvA\x18\x13%R\x92%p\x18\x9d\xfd\x9c\xfcB\xe9\xf0#\x0f\x0b'\xa8S\xa8\xcf\x9c\xde,\x9b\xce\x8an\xa5\x163\xb4\xff\x1cb\x0c\x15\n\xf1\xf6v\x00\xd9(\xbet\xc1\xa0Qak\x19\x0e\x01I\xa6nd\x9c\xc3w~Q\x9d\x9f\x0d:8D\x89H[l\xf9\x99\xca\xd9\x13\x850\x08\x0c@\xec\xa0\xe4cc\x93d~\x14\x08\xe5_\xa3\xfe\xa5\xb6{]\x0b\xdf\xb49S\xeb\xc6\xb5Ib\xcek_Vn\x10\xd2p\x83\xc60A\xd1\x05g\x12\x94\x82\x98\xdb\x00\xadT=(\x02C\xf0l*FRe\xb3\xa2\xdao\xc1\xe5.B=\xe0]Q]\x89\x9c\x11.G|\xe7R\xef\xc5\x85\x88\xa5\xc9\xc9\x1c\x0eM\x99\xa6\xec\xca4}\xcey\xa9<\xd4\x04\x853\xb9\xa6\x9b\x1c\xabM\xeb\x1fM\xcb\x93\x0e\x0e\x0d\xcc\x08\x0dU1\xdav\xb4\x98\x19\xde\xc8@\xfb\x9d\x00]\x9e\xb9\xc6QS\x9d2\xcc`\xf7[1\x15\xa4YJ\xdd\xd0D\x19\x1fY\xe6'\xf5\x1b\x88\xf7\xa4\x01\x12\xe0\xd9*\xd1<\x08(;CC\x0f\xc5\xb9\xdb6@U\xaaV\xbe\x8b\x04\x87\x0dr\xb2B\xc7\xd1\xb0E\x82\xb0\xe3>\xc2\x83\x1b\x99w\x87\x05e\xfd\x1c\xd1\x14s\xf2\xab\x0e\xd3\xbd\xcd\xa2\xd5F\xa7\xbb\xfb8\xef|\xf6g\x8e#\xa2<\x1eR\x8c\xc7\x83\x0c\xa5\x10\xa7[\xc5^NN\xa6\xbe\xc7g\xb3bS\x90\xc2}R\xf7\x97P\xba\xf8f\xc9\x99 \xcb\x87nnP\xf2\xec\xd6\xaf\x0f\\Z3p^c\x16\x9a\xa9\xb6\x8d\xbc\xa5&A\xf2\xd6%,HW4\xfe\xe8\x90P\xc2i\x0d\x14~Z\x9b\xa3\x90SS\x8e.[\x89\xe17R*\x95QS\xafY\xef\xa7B\xa4\xf7\xcd\x0f\xb0\x9e\xb2JQb?\xce/\x0d\x04\xd1U\xba\xf1R\x90\xa4\xb6l\x806\x93\xba\xcf\xd4<\xceG\xe9%\xd4c7kR\x81,\xf4UE\x0d\xa9\xdb\x1c\xee[\xd1K\xab\xcb8\xf3/B%3=\x85F\xc7\xf5\xfe\xca\xe1\xdc\x80\xfa\x1agt]^1\"\x83\x84Hp=\x8a/\xb5\x9d\xde\xbb\x8a\x93\xa9\xa4n\xbc\xa8\xc1#\xa7\xd0\xbd)\xdb!\xa3\xa1\xd0X\xde\x1f\x16\x81\xf2\xfe\xce\x14\xe7Z\x89\x11\xf6Di\xda\xd3\xc5\xddD\x91\x90\x9ao7\xe9z\xc2\x92\xf5\x92e\xbc.\x97\x13lj\xb3\x91k\nEak\x17G\xf6\x1c\xeb\xb3C\xbf\x8f\xf1,K\x97\xfcT\x86Cx\xfb]UV\xcf\xac\x10b\n\x1eG\x82\x05C0\xae\xe5j\xb0\xe3Mti\xa2-\x1b\x90\x88\x99Q\x16\x94\n\x83\x94<\xaa\x1b\xb4,_\xc9Q\xd7?\x97~,\x1d\x0c\x8f\xee}\xd7\x03m~D\xee\xd0\x02\xe23K;M\xbc\xaeZsn:\xf4\xb2\x8e\x84\x9f\xde\x11:\xe1\x94\xd6\x9b\x1b\xf4\x83p\xae\xb1\xb3%\xd3\x93*yA9Y\x08s\x9d{\xba6i\x17\xa7\xd6\xc0\xfcF\x08\xd4?\x96\xaf\xfd\xf2\x04 ;h\xb8\xb7\xe4=\xce\x11\xe7\xcb\xf5 &bv 5(\xf3e\x1dV8(\xbc~E\xd0\x92\xfa,\x87\x9cU\xfbYzd\xb5\x10\x93{\xc3}@\xf3w\x99\x1d~\xc1\xf2\xa1\x996\xb6`\x84u\xf8\x96\xe5\x1d\x90\xdf\x12#\xb0\xca\xcd)\xd4+\x08]Vs\x1b\xc6\xa2\x9aNU\x06\xf9\xe9\x9ca\x87\x0c\xc8\x96\x95\xa1g\xaa\xfbvDd\xafL>\xabG\xcf\xca\xd9B\x04\xb5\xe4\xff\x7f\xf9\x02\xb7q2Mom\xfa\x92\xd2\xe1\xef\x91\x93p93\xd1Y.\xa0\xc4\xb4xZ\xf9N\xf5\xc6h\x89\xfd#\xd2K\x07x\xf0\xcb^\xce\x8a\x8bx\xc9\xd2u\xd1Q\xccI\xd8-\xc4~*N\xb0\xeak\x8c\x87P1@!\xe0\x00d\xa1\xa5\xb7\xc0~_'\x05\xcbn\xa2\xc5=;V\x9f\xd3=\xabR\xa2k}d\xa8\x80\xa9}\xd0*\xffH.\x1f5\xb1\xbe\xd5|\\S\x97fl\x86\xb6\x91\xba\xec=3\xe6k|\x84\xed\xb6\x81\xa4\xb6\xc6\x02\"YX\xe2\x011g\x96d\xe9b\xd1EA\xa4C\xc7g\xbc\xb9\x05\x93?_OQ\xfc\xd0_\xd9\xf8\xc5{['D\x7f\x0f\xd2\x99i\x0e\xc7{\x1b#\x9c\x8f'E|#\xb4\xaf\x91\xfa\xf3[:\xa7/\x08\xe5M\xaaV\xd5\xaeW\xc0\xcbC\x99S\xc9l\x15\x0e\xa1\xda2~+/\xcaz\xe34Q\x93\x17\x97\x12\xe5o\xea\xb6\x87p\xb9\n1\xa4\xd5n\xa0\xf6\xdcr\xc9\xa6\xb1\x08\xce\xd2N\xc2\xea_Ta+*Rh\xd5\xe08X\xb2.za\xb9\xf36\x1c\x82\xf1\x0d9\x08\xbbNm\x18\xf5\xe2\xea|\xe8\x94\xe0lc\xe6\xd9\x11S-Eeb\x9c\xebq\x88\x9a\xf1SY$\xe1\x9d\x82\xe7\xc16\x17\x82q\xbeE\xfa&\xbd\x15 \xc9|\xa7\xfd7\x1a\x11ys\xf6\xd9\xa3\x8d{D9FBj\xa9\xb0\xd3\\#\xca'q\xdcX\xe3*N\xa2\xec\xae\xb9J\x94\xb3\x83\xfd\xe6\x91L\xf2\xdd\xb6\n;-5\x8a\xd9\xe0`\xc1\xda\xea\xec\xb4V\xca\xa2[G9h\x1e\xda\xfd{\xda\\\x95\x1e\xde\xf6\x16\xaf\xefnG6,\x8a\x931\x08\x95B.\xdc \xac\xab'\xb8\"\x81\xed\x0c\xbc\xba\x90\x92S\x11x\xd6r\x11T<\x7f\x1e\x94\x03s\xb6\x0c]p\x17:\xe1\xafz:\x0c\x12\xba\xa0!tBE\xe8\x88\x8e\xd0\x15%\xd5\xa3M\x03k\xb7\xcdd\x11\x15q2h\xed\xbdq\xf7\xaaG\xf5-\xdbl\xeb\xbaq\xbbC'\xd2\x02\x1dh\x9cz\x94\xba\xae\xc1\xe8\xa9mO\x82r\xb1h\x0e\xb2\xa5\x1eN\xb3}I\xb4\xeb\xf4ZD\xa3\xd0R\xd8\xea\x0f\xa5#\xa4n&\x1d\xd1{\xc5\xe5b\xed\x989<\x94\xd1\nE\x120\xdb+\xc4\xfb\x98|J\xd2\xdb\x04\x14\x15\x18\x82\x18\xb6[{\x88V{uJT\x05v(#\xd3Q,W\x07\xb4\xc7F\n\xf6\x99C)/\xdb\xe4\xac\xd3B\x80\x8e\x88\xd1\x08n#\xd7VR\x81\x1d\xcc\xe2\xc5\xe2M\x84z\xba\xf5\xfd{i\xc4j}^\x93\xda\xbcf\xa2\xc7\xbd\x8dzlDX]\x89),\xc0\x0ea\x15\"\xe7\xe4k\x1d\x9b\x92B\xed\x17\xd6[Dy\xf1\x8e\xa1\xa0\xadB#\xf2W\x17i\x81\x92\x92\xfe\xeed\x1e \x9f:\xdd\x1f\xb0\xa6\x0d,\xff,\xcf\xaa\xc8&\xf3\xa5\xa9\xc5\x8bC\x18\xec>QIb\xe0\xe5Kx\x0c\x87\x87p #B\xe3\x9b}\xfef\xb0\x0fG\xb0\xa7^\xed\xf1W{}8\x82}\xf5\xea\x80\xbf\xda\x85#\xd8\x19\xc0\x10vv\x1b\x87\xb4v\x1c\x9fJ\x1bXM\x7f\xa7\x0e\"[\xca\xdf\xc4\x05\x1a-Ov\x9f\xf2\xbd\xec\x0f\x9e\xed\xc2\xf7\x98\x14<\xd0\xac\x99\xeaK\xe1\xfd\xdf\xff\xd7\xff\xe9\xa0\xb2\xe8cTU\x97\x16\x83\x9ak\xd8\xa0\xe9h\xa5\x062p\x0dd\xd08\x10\xa0\x06\xb3k\x0c\x06\x7f\x9b\x1d\xee\xba:\xdc\x95\x1dv&\x9e\x85T\x88>\xa7\x90L\x93$\x12t\xb0\x1f\x1aX\xffB\xf36\xc3x^\xe8\x97YCy\\V}\x1f\xf0\x0f\x03c_\x94\x89\x0d\xeb\xfcVho*\x11\x17\xac\xa9\xa32\xc2\x99\xbe\x9f\xcb\x11\xefh!\xd0\x9a\xf7^N\xaa\x00\xf8z\x95\xd9T8\x8a\x07\xf0\xaf\xb0\xcb7P\xbfI)_\xa5n\xf4K\xf2\xee\xb6#i\x0e\x04\x80\xd7\x91\x93y\x94\x9d\xa4Sv\\\xf8\x9a\x0f\xac\x199Z=\x18b\x9f\x8b\xdd\x8f\x1f\xef>;\x004\xcc\x7fq\x08\x8f\x0f\xf6\x06\xcfj&_\x06.Y\x04m\xdfX\xb8Q_\xa4-\xd6 \xb2{i\xd6\x19Xu\x06\x97!$\x95\xa3\xfa\xce\xe0\xfeF\x1e\x14\xde\x9a3\x19\x103\xd9m\x9f \x1f\xa5c\xe1*4C\xa87\"\xd2\xc2M1\xeb7\xe2G\xda\x81$n?\xa8\x9c\xec\xf5\x8d\xd4r\x11\xe4&\xc7\x0d\xdc\xcb\xb6ksj\x10\xe8\xdb\x01\xc1\xc8\x95h\x84\xcc\x84\xdcbj\xfc\xd66\xdb#\x89T_z\x9b\x1c\xd5\xd6J\xb2\x1a\xd2\xf1\xcc71b\x0fv !\xb0bOY\xa4%j5\x1a\xf1\xa3\xd6\xf47\xed\x87 t\x0c\xbf\x86iI\x0b\xcd\x9a=\x1c\xaa\x91[\xe9\xa8\x11;\xcaA\xf7C\x04\xb0\x81\xa9\xc3\x16lX\xb9\x99\x1d\xc7\xf9\xd0\x0c\x8ci\x03\xf3\xd4\x06\x0b\xada\xf5WQ\x8f\xe7\x06\x87\x10\xd75\xd3\x8a\x91t\x0b\xff\x95\xcdmy\x06\x95\x82\xa1\x01~\\\xb6\xd0t|\xee\xb4\xff\xe3*\xef%\xfab\x96\xac\x99b\xe2\x85\x9c\xe3\xe8\x18t\x03%\xd5Mhs\xbb\xf5\xbd/\xec\x14\xd1\xe5\x9bD\xa3\x04c\x92V\x00\xd71\x89\xf3\xfc\x9c\x10$\x81\xe2/\xeao\xf0:I[\x91:\xd4\xa5\x88\xd0xK\xf5\xc0\xf8\x8f\x1cV\x1d\x9d\xebc\x92RL\xe3]\xc2\x8d\x99\x17\xbd\x81\x01\xae\xec\x93+\x8aAs\x0e\x19\xbc\xe0M(\xd2hW\xba\x91\xd9\x03\"\xbf\x18e\x97\x0e\xfe#E\x0d}\xd9L\x8a\x8e\xbcB_\xaf\xa1@\x8aG_\x08)\xdd\xc8\xce\x0e\x0e\x86\xaf\xde\xce\xae\x10\xb3\x9b\x06\x86\x8c\x956\xb2\xa0\xf3\x18v\x7f\xfd1\xc8\xb60\xf8\xce\xa1\xca\xd2Y\x1f\xd5\x1e=*\xd5y}\xfb\xb8M\x8bQOhly\x9b*\x96\x01\xfb\x8d\xaf\xad\xf3-\xb1\xa9\x8c\x1e\xa0\x01v\xc0O,\xcaMn\x0c\x9a\x05\xef\x0b\xcfijh\xf5|a\xf5\x0d\xa3\xa9\x17\x9a\xa9g};\xbe \x08\xa9C4h\xe4\x85\x1eT@\xa9C\xeb\xde\xc3\xd1\xc4\x98\xfa\xa45 \xc68\xa5\xeeu5\xa3\x9b\x1ei9Nn\xb4\\Pt\xa63LcS\x164\xa9\xd7\x11\x87\x11\x04\xb5\x84*\xf5\xb4 \xb1\x9d\x01\xabfu_Zc\x14Y\x94\xe4\xb34[\ns\x0c\xca3\x06C\x83_\xa8z\x1dl\xa7\xc0d\x9b\x8d^h\xa9*\xe9\x95\xb5\x9a]9*\xb1\x0d\x0f\x9c\xc9\x95[J\xdb\xca\xea\xf2\x983v\x80\xe068\x84\xae\xa2\xc9'\x15\xaaf\xb9^\x14\xf1j\xc1\xa0\x88\x97,w\x86\xbcW\x03\x99\xaf\x93O\xa5\x9bJ9\xba\xea\x8d\xcc\xfaW\x94W\x852ut\x88Y\xf8\xdc\x93M\xbb\xda\xc5\xf3'5Lw\xfc\xd4\x8al\xaeLd\xe1\x05\xa4D\xe0\x8d\xaa+\xdf,\xb6z\xfcZ\x99\x81Ri\x04\x19\x9bj\x88C\x99I\xeakN\xd7\x90`\x14\xf1.\\\xc5\x1c\xf4\x8d5*u3\xafT?/h\xfb%\xc2\x13\x83\xaa\xa6E\xf3h\xcc-RNT3y\xaa\xde\x1d\xea5\xdc\xa9Ff\x8bu>\xd7\x1a\x10\xbf\x0fU\x89\xb2\xbaG\x9b\xedU\xc6J_\xbd\xa8M1J\xf1S\xca\x1d\xa3\x8eg\xe4\xc8\xf4\xd1\x1c\xe9\xbfj\x99\xd3Hnl]\x12\xd7\xfa\xa2p.r-\xc9U\xb5\x7f\x9a\xe7\xb1v\xb1}\xb5\xab\x14\xc2\x88\xd4\xe6\x12j\x99GY\x15\xee\xde\x8a\x14\xa0\x0eL\xeb\xa2\xe3$Z,\xf86\xac\x16y\x9a&\x0cn\xe7,\x81\xdb2\xa9\xd2\xd6!\xf4\xcd\\\x86B\x8bi\x10\xcd\x1au\xdc\xb0\xbb\xbc\x88\x17\x8b\xdaV3\xbb,!C\xb8\x03TB[j\xa5V\x0b\xb5w~,\xd8\x95x\xc3\xe0\xee:\x816']\xa3 \xa5\xdfS\xbd}\xcb\x9d\xac\x1ay}0\xb5\xfd\xd6&)X\x00\xae\xbev\xc4\x98qvk\x8b\xb2t\x97ug\xb3\xa63\x13\x85\x13\xfd\x80\xe1P\xa9\x1dB\xac|\xa3]\xb7\x17!le\x06\"\xd1\xf2Q\xe7#\xc7\xcf\x8c5\xc2\xf3\xe5\x17:q\xbe:Al:\x174\xdf\xaa4\xc2\xb6t;)t\x88\xe25\x82\x02\xb8\x88\"\\cW0\x0c\x93\xc9\xc0\xf4-.\xcb\xd7\x1b\x0dU\x93\x15\x03\\\xf4\xea\xdc\x960!\xb6\xb7A\xdf \x89\x8e\xa9\x1at\xfe\xccd\x14\xed\xd6\x8c-\xd6l\x90Q\xf8\xc2fZ\x10Y\xe1Cn\x12w\x83\xb8\xdc\x8b\xd7\xd6\x98j3\xeb$G_\xcc#\xa9KEiv\x1aM\xe6\xf5\x8aq\x95\xdf~\x92\xb1\x1a.tK\xdf\xab\xf0*\x16D\x93\xa4\xaa\xd2\x8a\xb4\xb4\x1am\x03 \xe7\x069\x8eug\xb4iV\x10M]\x12\x99`\xbe\xc08\x80\xc0F\xc9\xa5U\xf9\xab/\xf3f\xa3\\`\xaeUX\xd34\xc2}\x97\x8b\x84g\x00\x7f\xfb\x86&5\x0c\xd0Sen\x92\xb7\x16\x89\x1d\xb9jq\xfe.z\xe7c\xfa_\xd4b\x14B\x7f\x817w\xdf\x7f/\xd5\x15;\x98\x9b!\xc5\xe8\xd6\xc32\xfc\n^ \xb5\xa7O\xef4\xc7\xba\x0b\xce\xc1\x93\xa7\x81\xcf\x87$\x916\xca\xf3\xf8:\x81!\x16=\xfbV\x9b\xc2\x10\xd2\x10\xb3\xc9\x85\xb0\x0eA\xf5h\xec\xadNv\xbd\xd6\x85\x05\x7f\xb4\xb8 Evg|E{g-B\x90Q\x00I'\xacI\x9a\xcc\xe2\xeb\xb5r\xc3\xea\xd3\xcc\x7f\xe4t\xd2js\xe2\xc2,\xd8C0\xcc\x80\xb5u\x85IT\xda\x8fU\xa7\x93\xb8\xf4Xhw\xb9\x99%Y7\x0f\xdd=\xec\xfa\x90\xab\x91\x88\xd0\x86$\x14\xc3\x8d\x13\xd4\xa35\x0cJ\xa6\xa5.\x0b\x1d!ez\x0d?\x13\xf9\xc1\x05K\x81\x9eZ\xd5*e\xfa\xad\n^\x17\xc9\xd4\xd2\x83\x83 \xc4\x8c\xa8\xa3\xcb\x10\xe2v\xaa\x1aR\x1ap\xce\xf9\xacG\xec\xb2d\xe6\xf9\x8fz\x15${\x05\xf6\xf3\x1c\xd8\xce\xce\xf3@\xb9\xb9z\x91\x07\xdb\xe0oo'A\xa5\x82\xda;0\xe5zM\x8f\xa2\xdc&|o\x96\x88\x9c\xb9XTJ\x1c>o\xb0\x90Q\xeeC\xf0\x02\xd8\xe6\xff\xfcM\xb51K\xa4\xc3\xa68;+\xc7\x81\xe7\xf0\xf5y\x9de\xec\xbcF\x04\xc5G\xf9\xc6\xb1f\xaeD\xf2 \x9eZE`\xa9\x1e\xec\xbd\xc9\x9f\xc8OB3\x01\x95\x03\xfd\x81\xba^\xfe\xfa\xad\xc4I\x88\x1cT&u\x1a\xe9\xeb\x00\xaa\xaa]\xb3\xe2\xec6Q\xd5^\xb1|\x92\xc5\xab\"5\x0c\xa8#\xd7\x07\xef\xa2\xa5\x19\xd3d\xed\xaa{~\xb7\xbcJ\x17y\x87\x93\x89\\cA\x82\xe5\xd1\x9c\xf9\x85\x89\xa7('\xea50\xca@\xe4\xe7\x81bv*\xf1\x9b\xce-G\xae4\x7fpOg\xa1H\xba\x9eQ>\xb6\xfa\xd2\x93M\xa0\xa1\x86\xfd]\x1d\x81\\\xaa\x0e\xcc\xe7\xbe\xfe\x07\x9b\x89n\xe0SJ\xe8\xb4\x9c\xfd]\xbd\x95o\xdc\x15\x8f)\xfe7\xf1\x07\xfb\xe6n\x89iO0\xce\x9e\xde\x17I\xf9\xc1Fd\xc2\xe3\xfb\xa7\xa4v\xa3\xddK\x12\x0c\x19\x92+\\!\xbd#\xc1\x87\xac\xa9\xe5HF\xd9%\xfa8)_\x8a\x08\x05\x12\xf5\x85\xb5$I\x0b\xa0\xf5>\xba1\xfcr\xe8[[R\xdb'B\x10\xd4\xd3\xc8}\xf9\xe2P\xe0![\xefR\x10\xceY\xdbh;\xa1\x05\xcdH\x15!x\xe31\xcb\xdf\xa6\xd35\x9a\x9c\x98K\x89\x8c\x8e.W\x06\"\xde<\xda}v\x81\x88\xbdX9\x17\xae\xdf/\xd6\xd7q\x92\x0f\x1d{\x8be\x99\xab\x08\xb0\xed\xe9z\xc2\xb2|\x08~\x9f\x0b\xbar\xe9\xcd\xe2E\xc1\xb2\xee\xc4\x80\xf5>\xb1\xbbs\xf6_~\xd0c7,\xd3\xc8\xb4\x13\xb4`u_\xb4d\x0bD\xa9mT4d6Q\xb2?z\xb8f\"\x16aw\xb2\xefDg\xd6[\xb2\xec\x9a\xf9N \x19\xc5T\";\xdc\x06X0\xfe\xe1O\x0f\x8d\x08\x9a\x1e\xa3\xf2 N~\x0dtH\xe8pZ\xbf\x06\x805)\xb2.\xc2\xc5B\xe5\xb6k^\x97\x89\xcb\x0f\xf3m%\x94\x0f:\x0b\xe5j2\xa6\\./e\xec\xc9\x95\xaa\x03\xc3{\xfa;\xfb/>\x83\x85uG\xc5\x19\x9b!\x18WS\x0bv\xc3\x16\xc32`|\xadl\xc9\xf2<\xba\xe6Go\xe9\xe6\x8d\xb5\x8c\x1e\xff\xbe\xa2\xb7K\xaf\xd5\xa4\xe1\xb4`\xfb\x97\xfc|\xc5&C(z\x9c\xc98W\xda$\xfc\xf5\x87\x04\xd6\x91\xb28f\xf35\xe8\xc0\xb1\xaaok\xa2\x80\xd8\xa1\xf8b\x15 \xbe\xc4l\xba\xc2G\x87\xf6\xf0\xc9\xae\xa9\xd4\x7fH\xed!Er\x08\xf7\xf8\xff\x15\xf4\x80 \x87\x8e7\xd3\x11\xd2\xe4]q\x8f\xc6\xff\xdc\xab\xfe\xdc\x0f\x02a:\xf3\xf7'_\xb4!\xa3\xeb\xc0\xe8\x80\xc67e\xb41\xc4ZI\xc7\xbd\xa0\x17'S\xf6\xf9l\xe6{\xd2\xe21\x9dA\x84g\xbd\x9f\x07\xa6\x11)\x947\xd1/a\xc7\xe9\xf6\x7fS:q\x1b] \x07ft \xa3:S\x96\xb6\x98\x05\xa1\xf0\xbd\x90\xea\x1e\xf4i\xe7z\xfb\xa1\xab\xc3>\x92\xd8\xed\x0ebB\xadqq3\xe1\x9b\x88\xd0\x90\xd7\xcdh\"\x91i\xdc*'4\xb1\xab\xe5\xef\x970\xc0\x83}\x1b\xbc4\xc3\x18)\x05\x0c!\x1b%\xb0\x0d\x83K\xa3\xea\xae\xac\x8a\xc0\x0b\xc1\xd3kj%X\x80\xbf\x9c\x03\xfc\x1a\x82\x97\xcf\xd3\xf5b\nW\x0c\"\x97Z\xc3O6\xc9$\xe0&~\xbf\xe9\xfdD\x9c\xbdEO\x1c\xfc$\xa1\xd1nu\x1dD}\xb0\xf7TCZ\x071\x0f\x91_\xfcMC\xe6\x1b(\x8dkw\xfa\x14\xf9\x11&@\x9e\xf2s\xeay\"e\xeaj\x11M\x98\x9f\xb0[\xf8\xc0\xaeO?\xaf\xfc$\x04\xef\x9aW\xf7\xbc\x80\xd2\x1b({\xa2\xdf:\x1e.\xa2\xbc@ss\x11Yr\xb1\xc0\x1fy\x19\x16\xd6@+R\xb4\x10\x98\xf6\xd8|\x1d[M\n\xa5\x8b0{U\x0cl\xd0q\xf5\xea\x80l\xd3\xb1\x94k\xae\x8b}JXU\x9a\x16cm\xaa\xa9\xd6\xc1B\x8f:n\x1aB\xd9=oG\xe3\xc8\xbf\xc5$\xe9A\x97\x9d\x90F\x1cs\xb0a\xdb\xe5\x92}\x11\xdd\xa5\xeb\xa2\xdb={)\x88\xfc\x03\xdc\xafS8\xfeP\x1c2}\xbf\xbe\xdb\xef\xbb\xef\xd7\x9fv\x16\xe5\xffW\xe0\xab\xff\xbe\xdb\xca\xc6\x99P\xaahvM\xa3\xa8HaM\xfc\xd0X\xb3& \xb4\xb0\xab\xe6\x98\xa4\xd3\xb8\n\x96hm\xaen\xe7\xa3J/\x90\x86\x90\xf7>\xbe\x7fu|q:~s\xfc\xa7\xb3\x8f\x17-\x8a\x82\xfaQ+\x88\x00\x9e\xa0R\xb9\xa7S\xc2\xc6\xde~|\xfd\xe6\xe2\xb4M\x91\\\xefM\x08\xde\x9b\xf5v\xfe\xd3\xd9\xcf-\x9dX\n\xca^>Oo\x13\x9b\x0e\xa9\xa3b]j\xed\xabO\x8ay\x9c\\\xbb\x1c\xe0\x94\x16\x1f\xdb\x95\x87T\xd5\xc8\xdf\xf8\xd8;\x1ev\x1c\x0e\x19\xe1\xd8\xd8\n\x07 \xf5\xb7g\xafN7\x06\x07\xce\x8d\x06GUi\x99N\x99c\xfa\x18\xea\xdc\x1fy\xbcJ\xee]\xaa\xfb\xab\x84\x0f5\x13\xb1C\xd0\xc6\xd9\xabO#\xfd\xad\x1c\xa5|\xd9\xce\xd7\xcbe\x94\xdd\xe1\x94o\xe7\x91\xc8\x0f\xc4\x7f\xc4\xf99_U\x11\x86}\x9de,)~D<\xd5\xdf\xb8\x98-u\xec<\xdd\xfbUO\x1d\x82\x95\x13de`Z\x97\xe5\x92\xda\xe8T\xa5\x9aS\x07\xf6\xe8Z#\x13\xda\xf2\x86\x04\xb4\xba\xb6&\xc9\x80S\xdd\xb50\xd6\xa5 {\xb4\xd6\x8brw'i\xb6\x8c\x16\xf1_\x19\xba{\x05\xd2\xfe\x1d\xfb\xd6wp\xae\xef\xe0\x00\xcb\xeb\xaf\xf9w 9\xcc\x1a\x0eu\xda\x8d\xa5\xdd\xab.\xa0\xd7SX\xe9\xa6\xb1pT\xff\xe9\x8e\x9e\xd3>kj\xef\x1a\xea\xe5\"0\xa6jo\x1bA\x94\xbaK\x06\xb6\xfc\xdb\x81\x1d\xdfBf\xc3c\xd3\xb8Hk\x18\xd2\x89\x94T\xf2\xcf\xdeAG\xd7/N\xa5\x8c\xa1\xd0jt9\xc0\x14\xf3\xe6d~\x12\x8c\xfa\x97!$\xa3\xc1%zc\xfa&EoTm\xab\xbb!\xd6\x13\xcd\xda\xc2\xa90\x14\xd7\x90#\x16\xfec\xd2\xc8Y\xa4\x0e\xac\xf7\xf8]\xfd\xaf\xce\xb0zb\xd2\x0c\xa9\x96x\x16\xf8^\\\xb0,\xc2\xa5\xb0\xc9\x9b\xe1K\xd9\x06o\xc7\x8a\x9b\xa1\xf4\xfd\xac\x87\x0dk\xc9\xc71{\xdaa\x8d\x9f\xddp\x8a\x8dsI\x8d\xb0\"\xf6\xfa\xab\xe5\x1a=\xb9\x1ce\x97f\xfe\xbdX.b\x93\xa4\x06\xaa\x1f#*Q(\xa1\xc8)NM^\xa5\x1a\x108\xb1[oA\x83 \xedx\xd3\xd9r_\xc4AB?\xe6*\x84\x93\x19oE\x913\xf3=\xbdi4\xc0\xd1R!?\xccb\x02\xa6X\x86Y\x97\xda\xa0\nMr\xb0z\xa6i\xc2\x86b\xdc\x9d\x83^\x878\xb0\x0d\xba\x8f\xa86\x98\x1f;\x08\x03\xeb\xe0\x1e\xd5\x05\xcb\x7f\x05\xfe\xe9\x97VE\xe4xk\xea^\xbe\xdb,Z\x1d+\xfdBC\xee\xe8\x7fH\x85\xc5\xde\xaf\xcb:.Paa\x99\x94\xaf\xcb\xa2\x81Y\x94\xcb\xa2\xbd\xfd\x03Z\x97AD_\xfd\xa7.\xe3\x97\xde\x97$:\xadHw\x81X\x95\xec\x99%\x91,yj\x954i),!c!\x9b\xd9\xb3\xba\x9eH\xb5\xc6\xc0x?\x93\xefwI\x84j\x08S\xfaK\xd8\xb9\xd4\xf4,\x99\xa6g\xd1\xac\x0f\xb3\x10fJ\x06?\x7f\x7fz\xd2M\xefQ\xe6G\xd0\xa2\")\x81\x1b\xa3\xe9\xa2Z\x04-Ru\xa5\x08\xe8\xa3V\n\x01\xc7`>~x\xd3m,\xb2\xb3u\xb6\xd0\xfb\"\xc4\xf6\x86\xce\xfep~\xf6n\xa3\xde\xfe\x92\xa7\xa6\xb4u\x96MY\xc6\xa6\x9a\xee%\xe8\xdc\xff\x87\xd3\xf3\xb37\x7f<}\xb5\xc1\x18P\xf8\xc9X\x9e.n\xd8\xd4\xbb|\xf8\xb1\x8c\xcf?\xfep\xf1\xe1tc\xad\x0c\xad\x8fI\x84\x13\xbd]\x98J\x13\xdab\xde\xa2\xa4Qs=__\x15\x193e>]\xad\x14\x04\x0ehd\xdd\xa1\xf0\xfe\xf8\xc3\xf1\xdb\x87\x9a:\x9f\x9d{\xe6Y\xb4|\x17- \xd0\xc4U\x85\xd7\x84\xd6o]\x15\xdb\x85y\x13\xcc1\x9cg/\xce\xff\xe7\x92\x88 7!tB\xea\xbd\xf0T\xe6\xe7\xcf\xfc$\x9d\"\xd1\xda\x8a\x05g\x0dG\xb0\x16\xaa\x88$Z2\xa17\xeby\xb0\xad\xde\xc6\x89|\xc7?\xde\x11\x05\xaa\x1d\x1f\xf3\xf7\x97_\xc4\xf61\xca\xe9\xea\x02\x8e\xc0\xc3\x19\x8d?/\x17\x1e\x0c\xe5/Z\x7f\xa0i\xf7\x18\xe6\xf3F\xeb$7\xd6dA\x08#\x0f\xa1\xc9\n\x86Wv\x93\x10f\x97A\x08yg\xac9}\xfb\xfe\xe2O\x02w\xc6\xaf\xdf\x9d\xbc\xf9x\xfe\xba\x95\xb0l\x84EoY1O\x89\x1a\x0f\x83Kq2Y\xac\xa7\xect\xb9*\xee\xfe\xc8Ak\xf3-\xc2\x1cx+.y\x1ee\xc2v\x1be\x89\xef\xfd\x1ce \x06\x1el\x02\x08L\xd0\xe4\"I\x0b\xb8f \x17^\x19D\x80c\xfb\x1f\xec\xae\x87\x16d6\n\xe4\x18\x1d\xd7\x81#\x0f\xb3\xe8c\x04@\xce\xd9g/\x84\x9c\xaf\xfd\xba}\xed\xffx\xfc\xe6uE3\xce\x7f\xbd\xe5\x8e\xf3\xb3\xe3\xf3=z\xad5\x05YGH\x04\x84\xfa\x9f0\"\xe7\xb4\xe3\xd1\xe7\xe5\xe2Q\xdc+X^\xf8\xb1\xd8\xde\x1c\x0d\xd6K\x96\x8f\xc5\x96\xa4\xbe\xe4{x\xd2\xe3\x9ca\xc4\xa1\xf3s\x8c\xf3\x8bd\xcc\x10ArB\x18\xb1\x86!6\xdfcl4]c\xb7_R\xd3\xefx\xfb1S\xd6\x8f\x1a\xed\x10m\x95\x8e\x15\x94\x01\x95K\xecV\x18\"\x8e\xb0\x9bh\x11\xf3\xc9\xbd\xe7\xad\xa3\x91\xfb\"\x84\xb4\x835\x18\x87FAR\xe4\xa2\xa2\xc8!(\x0b\x85Ks\xfe\xa4\xd1\x93\x1d\x15\xa5}\x7f\x08\x93\xfco\xdc%\xdavx(\x1cH\xdaq`t\xd9\x15\x07\xbaX\x03\x81\xc5F\xd6\xacCj\xdd\x12\xb0\xdf\x18\xf0\xe7\xa7\x17\x9c\x9b{\x7f\xf6\xee\xfc\xc1\xb8\xb8\xcc\x8c\x07\x035\x1e\xce.\xc3k\x9d\xde\xd2A\xc8\xd6\x0ef\xc3_\xa3\x13\x1d\xc2\x07\x8e\xc0\xd0\xea\xdb\xa0\x15\xd6\xd2dP,\x8e\xfcC\xd1V/!\xcf\xc6\xd2\x90_T\x92? \x9e\xaa\x88\x8au\xce\x19\x16U\xb5zS_\x9bP\x96g,_\xa5I\x8eY\x02\xb2\xa07g\xd1\x94\xa19\xd2\xba\xfc\xfb\xcb\x17K?\xc0\x17c\x824\\\xe3}\xb1\x1d\x8e*i\x08\x91\x8b\xdd_;(\xe4B\xc1\xae\xf7\xc3\"\xbd\x12\xda\x97iTDzPm\xbb\x8e?A\x8a\xed\x1aD\x08^\xc1>\x17\x9cr\x88\xd6\xf8\x112\xe9\x88\x95\xff\xf1\xf1\xf4\xbc\xedJ\x7f\x03\xa4\xfc\xaf\xcd\x902\xd6\x90\xb2U\xec\xf8\xaf5\xcb\x0b9\xe9\xd8\x05\xf9.\xa2\x05\x9f\xf9\xdb\x8f\x17\xc7\x17\xa7\xaf\xfe\x91 \xb0\\\x17Q\xc1\xa6\x1f\x1e\x0e\x10\x929<{\x7f\xfa\xe1\xf8\xe2\xf5\xd9\xbb\xf1\xdb\xd3\x8bc~B||0:\xd5$r9\xa4\"\x01\x92O\xec\x8e\x96\xa6F\xad,\x85\x83[\xeaz\x1eYN\xa0\xe5J(V\x0e\xb5\x0e\xae\xcf\xf3 \x080{dY\xbd\xd2\x0el\xfcI\xab\x90\x8d\x9f\x1eUX\xe2\xaa\xb7\xe0\x87ll\x9f\xaci\xd0M\x1b$\x98\x87\x87>\xc5\x9a\xb0\xa3qOL\xd9\x82I&C'\x87Y\x08\xe9e;\xde\xab\xc9<\xe8\xd6\x7f\x98\xb9\x94{\xbb\xe3T8-;?\xf9\xe9\xf4\xed\x83\xadI>\x993\xeat\xfe&*\x96\xf2s,\xd6\x11\xd5\x13\xfdTT,\x13\xca\x87/_\xb0\x9e\xbc\xb6\x1dR\x1fxc \x83s\xf1\xe6\xb2\x9e\x97$(\x7fv\xbe\xbf\xdd\xa3c\x99=\xdb'4\xdd\xf2\xb67_\xb1I\xccr\xaf\x8b\x1d\x00\xb9\x16!\xb2d\x99\xcf\xd0_?/\xb2\xf5\xa4H3\x12zZ*\xa8HK\x0f\x7fx\x08~\x82mD\x01\xdf\xdb\x98\xdbh\x08\xa9n+\xd0\xe9*\xe1\xa6\x16\x87\x15\xe7\xb8\xff\x8cV\xd8\xef\x99 \x91\x86\x85\xfb\x94\xce>\xf1\x07V\x948\xa9\xb1\xa7\x14\xf6\x93\xde*K',78\xdbU\xc9\xfd\x94\x89\xf6k\xe5S,\xafg\xc0\xaf\xd7\x98c\x8d\xb7\x82\x9f<\x99GI\xc2\x0c\x85\xdb\x0d\xd6x\x15\xe7\xab\xa80\xc35/1\x1di\xed\xd55\x11\x80\xee\xae\xed*\xf7F\xa67\xd8\xb6\xc3_\x83\xd4\xea\\\x1bWJ>s\xe6\xbeW\x97Z\xd7V(R\xf5\x08\xba\x82\x15B(|B\x92\xa9\xbd1\xa6s\xd5h\\\xc1\x1fu\xe1%x\xcez[\xd5\x88V|\xe7O1\xc6\xc1\xaa\xb1\xc9*G\xba\x8c\xd6\xcaQ{\xf0\x9c2lJ\xaa\xe8\xaa\x95\x11S\xb2\xbd\xed\xb8g\xbb\x1emo/[o\xda\xd7\x8e$\x1a\xf2\x06\xe8\xc7j\xe0\xa1\x15\xae:\x84\xcc_\x06!,\xbf\xd3^5\xc7\x86\xd7VG\xff\xc8\x93[\x00\x87\x90\xf8\xcf\xf6\x02\x7f\x16\xe0\xb5l#\xec\xd0\x94\xe1\"\x9e|\xf2#\xff\x0e\xe3\x94\x0ct\xfe\x0f\x86p\x83\xc6`\xbd$\xbdmm\x0dk9\x1b\xc2\xd0\xc2\xb12\x19N\xd8-\xcc\x83\x1e'{\xbb\xfct\xe2\x7f\x0czi\"\x8578\x84\xab\x10\xbb\x8b\xfc\xb8\xb7J\xf3B\xeeB$5\x03d>&\xbdh:=\xbdaI\xf1&\xce\x0b\x96\xb0\x0c\\\x01\x0b\xb5\x06P\xdb=\xe9\xc5K\xde\xe39\x86S\xcdU\xd0c\xf7\xd4&\xfa\x18|tt\xe3\x07\xca\xef\xea\xa6\x87\xf6\x88t\xa7\xa1\xab\x10\xb6\xc4\xc8y_^\x9ad,\x9a\xde\xa1\x1d\xc2d\x1e%\xd7\xcc\x838\x81\x85\xef\x89 \xaf\x1e_>\xf7\x88\xf2^\xb4Z\xb1dz2\x8f\x17S_\xfb*\xe8\xd9-\xb7\xe1p\xde\xcb\xd82\xbda\xa21\x91 \xa7\xdc\xa7\x06\xce\xd6\x16\xb5a|\xac\xb8\x88\x97,]\x17\x1aF\x84\xd0\xaf\x1f\xb8\xfa\xd1g}?\x84\x95q\x06pZ=\x84i\xd5\x04\xfe\xf5\xedq2\x1bM\xebh:\xea\x08\xc2\xcd\x9f\x9b!\xb0v\xb2\xd9\x18\xc9\xb5\xb5kBQ\x02\xb2\xeb\xb6\x8e[\xa0\xb7)\xb3\xb3\xfb\x94dvv\xfb\x8f\xef\xc3\xe2`\xb2\x10\xa4\x95\xa9_\x88|\x1b:\x9b#\xed\xedJK\x08[\xf1\x82\x91\xa2{3;\xa5\x98\xf8\x82\xf3\xc2\xa8\x05\xe3b\x92\xb4\xa4\xe5\xec\xc32\xce7\x8cs[\x8fu\xffd\xef[\x02\xda\x17\xba\xe5\xc0!l\xb9\xcc\xb9w\xfb\xbf\xa4Q\x8e>\x1eY\xa7\x8b\xa5d+\xf3\"\x9c%\x1d\xa1\xc5]\xa8\x8f\x89\xe1\xd40j\x8aw2\x9a\x13\xd8\xe3\x81\xccOC\x88\\\xb5\xa112\x85zn\xa4\xb3}1J/\xfd\x88\xd0\x10\x98\x8f\xd0\x0e\xa2\x8a\xc2Y\xb7=\x8a\xb3ztF\x9e\x0c$\xa3\x1e\xdb\xe0K=x\xeb\xb7\xeeM\xd3\xa4\xda7%`\xd5N\xf0\xf3\x00c\xfav\xd0\x80\xab'\xf3=\xce\x15\xcb\xc8\x1b\x89\x88\xd7 \xd2'\\\xb6exq\x918\xc2^\nM\xc0\xb7R_\x84\xc9\x8e\xe5\xff\x98\x0d\x87\x8b\xdb\x9b\xa1Q5\xe9\xc1>}\xca>1\xe5j\xa9R\xd83St\xca\xfc\x15\xe6\xa1,\xc4\xf0\xa7\xfd.g2\xba\x1f\xe4\xd4\xc9\xbc\x15\xa1d\xa9TP\xf5\x8dX\nb\\\x84\xdf\x19\x84(\xb2\xa3\xa7|\x8aQ\xe2\x82@Jb\xa1\x90\xdaa\x07\x06!J\xe9\xecy\x99o\x12\xc5\xbe\xed\xed\x05\xbc\x80\xc9s\xd7\x81\xc2%\xa4\xb5_\x8c\x16\x97\x0e\x82\xcc\x05w\xc2y\x81O\x01{\x995I\xc7\\\xa6_\x8d\xa6\x0e\xe9XO\xaf\xcd\xbb\xe1\xc2C\xee\xdf\x840\x0da\xc5\x99{QA\x98r\xceQ\x80\xb9\xe1\x9c\xfc\x0d\x0c!\xe6c\xc6@\x17\xfc\xcd\xe8\x92\x9f\xceT\xf8!\xebM\xe6\xaf\xb0\x83y \x00\xc6\x87\xf7\x9d\xfb\x13\xb5>\xf7E\xc2\xbd\xfdN\xbc\x1bq\x14{\xe31\x9a\xb9\x8e\xc7b\xaf\xe0\x9e\xe0\x8c\x88\xfc\xc0\x86z{V\x9cZ\x12\x19\xa2\\Z\xa1\x12V1Zb\x1a\xc3\xbf\x01\x95\xd7\xa3\x82\x0b\xf7\x1b\x9a\xb5k\xf4\xc9\xe4\xc5\xd261\xab9\x10\x16C\x95\x9c0\xc4\x0d\xc1\xab\x9b\xe2\xb6\xc5\x8f\xc10\x94\\&E\xb3\x07B\x06p\x9b\xf7\x7f\xf5\x1d\x8b\x9dv\x81\xc7/lN\x1cBQ7\xa1\xc8Q\x17\xcd>\xb3\xc9\xba`\xf2N\x0b_ \xfb\x81?\xe4ir\xbeb\x13\xed\x95\xfc\xe9\nJ\x11\xfb\x89\xbfO\x862\xe7%\x83=\x87\xa3<\x91\xecX\xad\xc5/c\x0b\\\x9bL\xa3\x0cU\xa9\xec\xf3\x15\x9bH\x07\x05R\x1aj\xc4VfX\xf6TL{(L\xd1rv\x91rx\xcbz\x89^\xc55\xa1\x90Z\xa9_c655\xa1\xa9\x1b\x0c+\xc71\x14 #\xcc\xe5\x04\x11\xbc\x80\xe29D\xdb\xdb\x01\xc4\xa3\xe8\xb2\x96&$\"\x0e\x08\x13d1\x82*N\x14\x06\x7f\xa8_\xcf\x9dD\x939\xa3\\\x8c\x94\xd4\x11\x8f\xfa\x0e\x07\xa5\xdc\x0eP\xbf\x0e\xab;\xce\x80\xb2K\xe0\x8f_\x8f\xb9I\xe5\xacq\xf2\xe9F\x7f9\x1a{\x05\xbd\x7f\xc9\xd8\x8c\xa3<\xdeb\xf3\xedh\xcc\xd2W\xa3\n\x81]n\xc2\x80\x87\xd4F\x7fh\\!\xcd\xb8\x94\x0c\xda[\xa4\xd7\xb2k\xe1\xb6\xea\x9b\x1a\xdc\xfah-J\xb5\xc1h\xcb\xb0\x8c\xf7\x1f/\xc3`\xc7\xd2\xae\xd0\x8aRcP\x95\xbf?]\xef\xa2c\xb8\xd1c\xbd\x9d\xa4\xcbU\x9a`VJ\x0b\x04e\x94\xb6\xf3\"\xcd\x1c\xd6\x01Z\xa0b\xbb\x02\xde\xaa\xd5z\xb1\xeb\x08\xab\xa6\x8c%S\x96\xd9\xa5\xb9\x0c\x1c\xfe\x89\xbd\x8dV+6=I\x93\"\x8a\x13\xaa\xea\xa2\xdc\xbeK\xb6L\xe3\xbf\xb2\xc0\x8fDvr\x91>:F\x1e\xdcJ\xa2\xe5T\x0bfiZ\xbcN\xf8\xda8\x9d\xd9\xf4\x99\x0d\x810\x1c\xe7\x0f1\xf8\xa19\xd0\xdc\x1e\xe8\x02\xc7J7)\xa05\x84\xb5\xfdYd\xdd\x88\x80\xc5\xcb\xba=\xd5Z/\x9a6r\xf6\x02\x0d\xd9(\xc2\xd9\xe2\xf4\x05\xbf\xa8\xe3\x17Tk\xeft\xfe\x02d\xe58\xf3\xfe\x94bf\xd0=\xea7\xb2\xf1uTD\xfa'p\x04\xff$0\xb0\x81y\xbb\xe6\xcc\xdbcj\xbe\xd7$[\x17\xcb\x12\xda\xe5\x0cK\xac\xd6\xd6\xaa5\xca\x01\x11?1\x0b\x16\xb2\xc0\xead\"\x0b\xac>f\xb2\xe0\xc0,X\xe1\xd2\x99\x97\xe4S\xac\xbe2\xde\xcee#O\x9eXC\xbd\x11\xe2\xffc\xf3\xfa|)?y\xfa\xf8\x19\xcd\xe6^\xff\xbal._W+\x1d\xb4C\xe5k\x13\x81\x06\xa3l \x8eR\xa7\"Y=\x9a&\xb9\xad*\xd4\xaf\x18\xf2\x8aM\x12\x1a\xefL\xda\xe1L\xcc\x02?\xeb\x952\xb3\x8a\xe8\xbf\xae\x19\x9594\xe7n\x0d)\x90:\x04\xfd\xd1F:\xab\x19\x06%r\x98\x8b\xda\xdbQ\xfb\xdc?\xb1\xbb!xb\x1f{\xf4A\xa0?\x9224r\xec\xd4#\x07>-\xf5\xd7\"\xee\xc7\xa9Hl\xcf\xe9\x91a\xbf\xf67\xf4u\x0fdn\xf3U\x96\xaer\xf9\xf7$M\n\xf6\xb9h\x81#\xb4\xc2\xf2\xebe\x10\x12\xe1\xd8\xcbb\x7f\xd5+\x89\x9dK9\x8d\x98KC-\x95\x9c\xc2\x0d\x1fp\xc2&\x85\x16\xdb\xa4-\x80\xeb\x8dL\x8eo\x9a_\x7fE31\xe6S\xd1'\xd5\xa3PD?\xbe\x96\xd1\ns\xd0_\xa4\xfc\x04@\xdb\xe7v\xa9\xc1h\xb0}\x9d\xf1\xde\x9a\xba\xc7\xd4\x1f\xf7\x9a|\x0d\xfc\xa4\x8c\xf1D\x146d\xf6Ij7\xee\x0d\xd4d#J\xb2\x01\x15\xf9\xadP\x107t\x1f\x96rl@5\xeeC1Z\xa8\xc5M\xef}\x96\xde\xc4\x9c\x97\xef\xd0\x18 j\xa6Y+j\x82\xe0\xb16\xa3Qn\xf2t_:\xdf@\x97Zh\xd2W\xb1\x81`h$\x0ci\xb4\xf4j\x8c(]r\xc6)\xe7\x8c\x1b=\xa7by\xd9JS&\xd2\xba'\x1670\xc9(\xbd\x0c!\xc3\x7f\x19\x99\x88\xa6i6c\xbc\xacp\xb0\x9f\xc44\x85\xcdc\x830\xde,\xb1C\x9d0\xb8x\x1c\xf58(\x82\x9b|\xeb\xa4\xff>\x14C\xa4\xac\xc5\xda8\xb6\xf6\x93\xe2\x8a\x03'\x12Z~\x8c\xb2G\xa3^\x13=\xb5\xa9J\xb1)U\x11\x14e\xa2\x90\xfb\xe7x\xb1\xf8\xc0&,\xbeA\xa1%o 2&\x81id%\xf9\xa3M\xb8\xda\xbd\x9b\xd2\xd4\xafM\xa4\xa7#y\xdc\x944\xaa\xcb\x06\x0e\xd8e\x1d7\x14 \x8a\xa4\xd3\x96\xa6\xee\x8b8A\x18\xb9n\xdc\xf4\xa7@a#\x0e\xc1\xcb\xd2\xb4p\xdd\\\xa8\xa7\x9d\xa5\xdb\xd8\xec\xc1A\xfa\x1a\xc8\xde\xd7P\x97B\xc9\xedn\xc5c\x03\x8db\xa9\xaaY\x08\xde\xf1j\xe55\xcc}\xde\xabl/x\x7f\xbek\xe6q\x88\xb7\xa2\x81\xc5\xcc\xb4\x1aUTJ\xb3$Z\x12z\x8e\x16\x90{\xd3\xf8\xc6\x92\xe5\xd5\x93\x17w\x0b\xd6\x14\x14i\x15M\xa7\xe8B\xee\x0d\xd8\xb2\x01k'\xe9\"\xcd\x86\xe0\xfd\xff\xa2(r\xe4\xbd\xb3W0\x04\xef\xff\xf9\xdf\xff\xb7\xff\x03<\xf7\xf9\xea\xc5\x9e\x00\\\x08\xdeI\xe9\xa8.\xd7\x96/\x0c\xe6\xbf>\x84\x02\x8e\xc0\xe38\x0f%\xb5\xf0`\xc8\x17\xd1\x0b!g\x0c\x8a9+\xbd\xe3=+\xe4w}b\xb7\xad\xca(\xb5&\xdd\x18f\xb9B[>\xab\xd8o!oW\xdcx\x9c\x7f`\xd1\xa4h\x17.\x9a\x0dI\xf5\xa7\xf3\xd1\xa5\x9e\xf2\x08k\xa7:\xd0\xc2\xdf&N\xfe6i<\xad\x92{\xf0\xb7\xd0*\xd5\xd1'RB\x9eHI+\x9f\x0b\xdd\x89\xb9z6%\xea\xea\xa9\xae\x02:\x9cI\xea\xe9 \xe1&n\x1a\xdcI\xc2\xc5\x1bwz\xda\xd2\xbd\xa8Dl\x01\xa3\x06\x0d\xa8Y\xb5\xed\xde\x1dZM\xfdJ\x06\x95\x91\xb7\x83Yy;\x88\x96\xa9\xe2v0\x85\x17\xc0\x9eC\xba\xbd\x1d \xd7Y\xbb\x1dt1\xb0\xa0\xdf.\xe9h\x9b9 \xd7\xc9TP\xb6XOG\xc5\x87\xea\"\x92\xe36\x89G:d;VL=\xc27\xbb\xc0c\xc6\x8d\x1f\x8e\x99Q\xd4\xddPgW0\xb4\x94\xc6\xf6\x19\x9d\x86\x10\x9b@\x8ag\xe0\x97\xc6[U\xe2\xbf4\x90A+\x13v\x0b\x17w+v*\x12x\xbdcl\n\x11\x88\x0fB(R\x981\x0e\xfd\xa8:#z\xf0s\x94\xc3u|\xc3\x12\x880\xd5\x8d\xaf\x99\x04\xa5\xfcPY'BM>\xe5\xe7\x89q\xe1\x9aZA08\xd6 \xa3-3*\x84\\U\xce\x8b\xc5\xbc]\xe4(\xb0\x1b\xfe\xf3N\xb1\x9f>\xfa\x14\xe0\xcf[?\xc2\x1f\xb7\x82[\xf3\x99\x1f\xf4\x16\xe9\xb5\x0c\xeeR\x9d\x86\xb38\x99j\xc7\x1e\xe70$\xb3Q\x0e\xa0\xd3%\xa1\xdb|_Nx\x08\x89\xff\xe4\x89i\xc8W\xe9\x8c\xeb\x97\x03]\xba\xa4\xaf'\xdc\x03\x99G9^\xb3\x0bG\x89w\xe9\x94\xe5C\x18\xddX\x12\xc2:\x04\xe1V\xa4\x90\xd5w\x10T4\xdb\x16\xb1\x93\x1c'\x838\x94\xd7x\n$x\np\xc4Jz\xf2,\x80\xa1\x8a_\x87\xb1\x89\x9d:\xee\x05\xca\x11\x92\xfd\xec)\xa4\xc6hl[\xfd\xc6\x03\xd0\x81\x8e\x8dwR4,\x0b\xa1U\xd1\x1b4\xb8@\xd26[g\xd0\x84\x1b\xec7\xf1\\\xf5Q\xcbKC\x93\xceO\xd1b\x8cz[\xc4K\xa2\xc4SE;\x8bt\x12-<\xbb\x06[F\xf1\xc2~\xbdL\x93bn\xbfN\xd6\xcb+F\x8ck\x15\xe5\xf9m\x9aM\xed\x92\x8c\xef\x07\xfbu\xce\xa2lBtP0b0\x9c\xef'\xde\x923^gD\x03\xb7\x8c}\xaak`\xdb\x94tN.W\\N*v\xb6\xfe\xab\xce\xb5\x92\xac\xae\xce\xe5\x16p\x04[[\xd9Hp\xce\x98b\x8e\xcf4\xcaX$+T\xe3}p\xfc\x12\xa9\x03\xcf'\\\x8c|\xc3f\xc5\xd0\x0c\xe1U\xabq\x91\xae\xac\n\x19\x9be,\x9f\x8b\n\xb8m\xf3\xb6}\x98\xf5\xac~Q:\xf8\x1c\x9aE\x17)\xfaK\xf7\xeejm\xb4\xee\xc3\xec\xdb\xe1\xe4R\x83\xfa\x83\xc7\xa6u\xbatM\xb7B\xc1E]\xd4W\x9c\x82\xb7\x86\xd6f\xbdY\x9c\xe5\x05\xaa\xf4\xddZ\x1b\x94\x9f\x12\x112\x06\xd3ic}\xferO\x8aS\x1cC/\xeeV\xd5\x89s\x93\xc6S_\xbc\xc7\xa5\x83\xc3v\x0f\x15@`k\xeaX\x8bU\xd2V\xc5T\xfbvW\xf9r\xae\xba\x15\x82{\"a]918\xe2\xc4]\x04\xd3AMy}j\x15\xde\x04F0\xa6o\xa0\xdc\xdd(\x07}\x1f\xcbz\xb3t\xb2\xce\xcds\x86v^~\xf0\xdd\x1f%\xf1\x12c\xdb\xbf.d\x90\xfb\x93t\x9d\x104\xf6*\xcd\xa6,{\xbd\x8c\xae\xd9\xd9\xba@\x06\xbf\xa1\xca\xf9\"\x9e\x10$Y\xab\xf1s<\xa5\x8e\x95\xab\xf4\xf3\x8f\x0b\xf6\xd9Y\xf0\xfb,]\xaf\xc8\xd2\xb3l\x1a'\xd1\xc2Qa\x92.\xd6K\xd7\xdcDan\x17\xcc\xc8\xa1\xcc\xc48n\xe9\x92\xf7i\x1e\x17\xf1\x0d1{^z>\xcf\xe2\xe4\x13]\xf6\x8e]G\xee/1\\\xb1]t\x9d\xc5\xd3\x0f\xd4Xd\xc1iB\x1c\xc5\xb2\xec|\x15%\xee\xc2\"\xca\x08X\xf1\xd2\x13\x84WS\x99\xb3WQ\xec\xeeX\x96\xd3}\xcf\xd2\xa4\xf8\x99\xc5\xd7s\xa2l\x11'\xecd\x11-\x89\xb5\xe7E?9>KW\xd1$.\xee\x88\x02\x1a\xdci\xb6\x9aG\x14\xaa\x14\xd1\xd5y\xfcWb\xedn\xe3izK|\xf0\xd7\xd7\xc9\x94\xc2\xae\xbf\xa6\xe9\x92\x98z\xbcX\x9c\xb9\xc6:[\xa4\xe9\xd4Y\xca\xb9\xd9\x86\xc2,\xfd\xc4^E\xf9<\xca\xb2\xa8\xb1B:\x9b\x91\xdb^\xd4x\x1b\x17,[\xc4\xcb\xd8Y\xa3e\x0c%A(\xcb\xbe\xda\x17p#\xefgv\xf5).\xbc\x10\xbce\xce\xff}\x9b\xfe\x95\xffw\xe6i\x9a\x1e\xa9\x89\xf9\xc4\xeer?\xeb\xe2\xee\x9d\xdauh\xa7\xe3Q\xeba\x0e\x9a:\x11\x13WL\xe6Qv\\\xf8\xfd\xa0W\xa4\x1f\xb90+5\x99\xbc,__ \xc3\x0b\x7f@\xd9\xa4\xa3!\xe8%gf\xf4\xd0\x97X\xa6\xa98\x8d{\xca\xd8\xa2\xf1q\xfe1\x89\x8b\x05\xcb\xf3w\x92i7\xdcs\xf3y\x9a\x15\xf3(\x99*\xad\xd5\xe9\xe7U\x94\xe4\"'\xa3=\xc5\xabh\xf2\xe9:K\xd7|\x8f\xd3\x00\xa8j\x1c\x17E4\x99/\x19Ev\xed\xda'\xb4\xaccW\xc4#\xa4KEA\x8d\xd3\xe4\x7fnR\xf9O]*\x7f`+\x16\x15C*\x8d)\xa1:\xb1;i\x87\xdd\xfd\xc7\xdeiD\x92\xc29F\x81\xa5\x8eC\xba^\xe9\\\x98\xc76W*W\xb6\xfb\xd0~H\x8b\x82\x93\xc2\xa6\x01\x8a:\x9d\x86)\xaav\x1a\xac\xa8z\x8f!\x0b\xf1\xa9i\xc0\xbcF\xa7\xe1\xf2\x8a\x9d\x06\xcb+\xdec\xa8\x1f\xc4y\xd84V\xac\xd2i\xb0X\xb3\xd3h\xb1\xe6=\x86\x8bbg\xd3`/\xd2U\xa7\xa1^\xa4\xabN\x03\xbdHW\x1b\x0d\x93\xf3&\xae\x11\xf2\xb2\x96Ny\x95?FY\x1c5\x11\xca&\xfeG\xafC3\"\xeaib\x87\xd4\xc3[\xf91Z\xc6\x8b\xbb\xae\xf3O\xd7\x05o\xd8\x05\x02Y\xdc\xb2D\xb2V\x0b\xacd\xad\x86\xe5\xf9\x8e\xfe\xe5P\x15\xc4\xf8\xf6\x9b\x84\xaa\xc4\x7fj\x06\xe3K\x85a\xd0`\x1f\xe3\x02\xee\x89\xf0\x80O\xfb\x96\x83\xbc4 \xc2rv\x0b\x1f\xd8\xf5\xe9\xe7\x95\xef\xfd\xe7\xc8\x83m\xc8z\xc7\x17\x17\x1f^\xff\xf0\xf1\xe2t\xfc\xee\xf8\xed\xe9\xf8\xfc\xe2\xf8\xc3\xc5\xf8\xe4\xa7\xe3\x0f\xb0\x0d\xde%]\xa9,\xfe\xdd\xbfXi\xcd\"\"\x1e\xfbZ\x06\x80(_\x96w\xa5\xb9\xf3\xaetkkmG`\xc7\x00\x81\x11\xf1\x9e\xcb\xfd2\xfb\x1a\x1a\xb4\xf9\xeb\x11\xbb\xc4\xb0\xaf\xa8\xdd\x85!\xf8\x91\xf6\xa6\x16H\x9bNs\xdc\xc5\x9e\x10\xf3\x84\xcc\xa3\xfc\x874]\xb0(\x11:\x80\xef\xbf\x87\xad\xaa\xe8\xddz\xc9\xb2xR\x16\xc5\xf9\xbb\xe8\x1dg\xfeT\x05%\xce\x99\x15\x0bx\x01\x83\xb2\xd6\xd9\x0d\xcb\x16i4eS\xab\xaf\x01\xa9\xc0\x03\x89<\x13[\x1f\x87V\xcbo\xa3\xec\xd3z\xf5c\x9a\xbd~\xd5\xaaJ\x13\xd3\xcez\xaf_\x8d\xeb\x88\xc0q\xe0\x90cHj\x85\xb4\xae#@\xce\x8a\xe3\xa2\xc8\xe2\xabu\xc1\xac>\x1d\x8c.f\x9b(\xbf\xf2\x89\xee\x89\xe0\xefM3\xfd\x90\xa6m\xd7\x95\xe5T?\x9c\x9d]\xd8\x93\xfd\xb7C\xcf\xfb\xb7\x0d\xe6i\xf4HB\xd7\x9a&\xd1uXK\xdcK\xf4k\xccT\xed\x8c\x0ePV\xea?\xbc\xfc\xe6\x1f\xc5,'\xf6\xd7Q\xad\xc2\x08U\xc8\xb4Q\x15j ]\x82\x0bF\x8b\x14.\x1f\xa5~\xd0\xf3huc\xe9\x07\xd6\x8b\x14tl\xb3\x0e\xf5\x94\xf6\xff\xe6n\xfc\xf2E\xbcl\xd8@\xfdRE\x1e\xab5\x86!\xfe\xad\x90\xbb\x93\xbe\xb2\xc4\x9d8?Y\xe7E\xba\xac\x16\x15\x01X\x91\x0d\xbc\xc1\x1a\xa2\xf8V\xf5 \x01\xba\xc1*\x1b\xbdtXl9\xc4\\RL\x15{\xa7\xc00#\xc6`<\xaf\x05\xd1\x11\x80ndk\x880\x92\xb6\xe0[a\xe1[\xd1\x8co\xa4\x1f!h8\x94\xf60cW\x9c&T\xbeD\xf5\xf0\xa6\xe2@hw]\x06~l\x913GgP\"x\x8a\xee\xbd\xba\x02\\\x98}\x89\xabb\x13pb\xb9\xe8\xeeT\x9b|\x02y\xf11/\xed>\xd0$Q\x81\xe8\x8eo\x8cK:@\xabzZ\x06\x0e\x9a\xbdQZ\xdfq4\x93\xa4?k\xfb\xa3|\x15M\x1c{\xb5\xfa\xea\xc8\xa0~\xef\xce\xfd\xb5\xc8\xa2\x877\xbc\xe8.O\xed\xe8\xb4\xd3\x8eN\xac\xf6}l:P\xa9\x8c\x8c\xf7\xd8\xa5s\xc4\x8e+|\x9b0\x08Hc\xd0}\x82\x14\x14\x06^Lz\xdaV\xd2(\x86\xdcA\x1d\xf7\xa0\x8b\x0886a.\xf3\x00\xf8\x8a& P\x89\x84\x15\xfaXmH\x15%\xa4\x1a\xc7V\xc7\xf4Mh\x145\x8c\xee==\xf0\xc9\xb71%r\x9e|\xa5\x85\x7fgJ\x94\x06\x9c\xad\nU\xf0\xe3\x06r\x84\x1d\xdb\x04\xc2\xbd\xd9\xab\xa3U' \xee\xddj\x1f\xabG\xc0F1\xb2\xd3\x03\x0c\xfb\x8b\x7f{\x0e\x9fc1J{a\x8d\x93\x9d8d\xc5\x97\xf4>\x12\x17\xe2m\xc8R\xfer\xc8f\"9\xe77\xcaf\x03*lq\xe2\xef\x0e\x1c\x11\xc6\xcdp\xeb2\xcf\x97\xd9\xca\xba\x92\xdc\xb6\x06\xa4\x91lnq\xb1x\xd7\x8bV\xccY\x9a\xa25\xcd\xebW\x95\x0dv\xcd\xdci\xc5\x92i\x9c\\\x7fD\xa3\"\n]\xda\xbe\xc1\xe5\xb7\xb1\xc6\xf0.\x10w\xed\xf2\xcaU\x06C \xf1\x04\xc3\x9aW\xf6B\x94\xfdL\xc5\xb1|\xff=(\x03>\x89\x98>\xeb-\xd7\x8b\"^-\xa8\xb4P\x15\x1e8\xc5=\x82X\xde\x94\xd9\xd8\"\xcc\x81B\x1b(\xf5\xd2UaGEu\xde\xba\xa3\xbbA&\xc4d\xdd\xe5 \xa9\xbb\x1cd#AhG\xe9\xe5\xff\xcb\xde\xbbv\xc7\x8d\x1b\x0d\xc2\xdf\xf3+J\xcc\xacCF4\xad\x8b\xc7c\xb7G\xd1\xeb\xb1\xe5\x8d\xb3\xe3\xcbZ\x9e\xe4\xeci+Z\xaa\x1b\xdd\xcd\x11\x9bdH\xb6de\xac\xe7\xb7\xbf\x07\x85\x0bA\x12 \xc0\xb6<\x93d\x1f|\xb0\xd5$\x88K\xa1P\xa8*\xd4\xe5\xac\x93\xc0\xa4\xd5\x92\xd2B\xdcn\xc1L\x89X\xd0\xcd\x0e\xb1\x8b\xa7\xf9\x197\xa4\xd2\x93\x02\xacPaLU2\xc7[\xf1\x0d\x9e\"\xed\xe7Gj\x82xQ:\x1a\x13\x137\"A\xc3\xa6\xde\x02O{r\xda\x01R\x907\xb3@&\xa0l\xdb!t\x87\xba\xa3#\xac\xb1\xe2k\xe2\xc7\xd3\xbd\xee\x17F\xcc\x12\x7f\xe9\x05\xef%\xa9\xff\x9cW5\x06Mq8\x9f\x84<\xc1b\x19\x99\xecA\xf3\x8c\xd9\x01Nz\xd6\x8c\xe2\x8d~\xb3q_xv\xb8\xf4\x97k\xf0\xc8]\xe7\x9b\xac\xfe\x1b\xeb\xcba\"\xe2\xa0U\xf6\xb6\x8e\xdd\xed\x8c\xbf\x07>QZ$\xc8\x9c1*\xc9\x92:\x89Sn\xb9*\x08\x07et2\x984!?\xf1\xbdI\x8f\xc9\x12\x8eU\xecs\x83\xaeP\xc2\x7fX\xcc\x17EXw\x8d%\x8e\xa20@\xf2\x10\xceoy\xe7\xec\"\xcf|~\xeb\x0e\x04\xdf\x85\xba\x9b\xd8\x0eP\xcd\xb9\xe3*.|\x1ec\xcb\x18\xd5\xe0\x96\x85\xaa5\xd9\xf9_\xc7\xd5kN\xbc'\x92\xa0\xd7\x0dA\xefch\xa8\xa6\x8d\xa8\xf9\x8eW\x13r\x1eu\x16\x99\xbe\xdc\xa0\xc9\xcfF\xb7\x8d\xc3\xee^e\xc1\xa3\xf1\xd3\xe7\xcc!\xc8\xb6\xc6\x06/\x0f\x15\x13\x87\xfa,\xf2\xaaf\xa0\xd7\xec-\xd3\xc6bVmZD\xb2n\xb1\xd6\xc8\x0cY\xe7\xa1e\"\xd6\xfe\\Y4{_Je8\xd2-\xb1\xbe\xdf\xd2N8\xc4\xde.\x99\x7f\xb6\x8da \xd9q\xaf\x19A\x08%Ztex\xb6i*42\xd3N\x0f\xbb\x8e\x07\x9amW\xa5]\x0c\xd5\x15?D>\x13\xaf\x17)G\xfe\xfa\xaaLm7\xb0m\xae\xe7u\x19O\xfbx\xbf\x1b\x91\x80g\xcdy\xd45q\xdc\xf0\xe7\xdd\xfb\x8c\x8a;:\xd3\x0e\x809<3\xdewx\x13 \x19\x93N<==\xb4\x96m\xd6\xab\xf7\x11\xcd\xfb<\x1c\x97\x91\x8fxz\xa2}\x91/\x8f\xee\x88\x98\xc7\x00\xf1\xd3\x0e^J\xb9\xccc\xd9\x92Zi\x8e\x86\xf4b\x86\xb3\x88)\xb1h\x03z\xb9S\xeb:\x84A\xfc4\xa1:z!=D\x11|\x8bI%\xbb\x17\xc2\x0cv]\xbc@Ax\xf9\x0eU\x80\x16\x0d\xa3\xbcu\xbc\xd6\xe6nP\x0bg\xab\x85\xf2\x18\x9e\xaf\xc8\xec\x12\x03K\xf1\xc05,\xf55\xe4\x0b\xf8\xbf\xe8\xa3\x05\xbb\xe0\xfd\xdfH/\x9a\x82Q\xb1\x03\x8a!\xb5A\xac\xf5\xf3\xe8<\xbf\xceHI \x87\xef\xed\x1f\xeeyMX\x89\x04\xd5\xc9\x13 \xf2\x10f6\xae\x98\x16MV,\xb6\xec\xc8\xb7\x1c\xc1\x86#\xdc\xab\xac&e\x16\xa72|\x8b\x8f\xc1%]<`\xc4\xac\x1a\x8cQ3p\xdd\xbb'NPf\xf5\xda\n\x95\xa5\xffF\x8dfK9\xc3&\xa4\x8c\xcb'%\x0b%(?\xea\x03\xc9g\x10\x088\x082r\x0d\x15\x9b\xae/~\xb3\x1a~\x1e\x04\x11\xe7\xb2)\xa3\x83\x87}\xd6zr\x04\x19C4\xbcr\xcb\xe7]r\xc16\xae)7\x99\xc7\x9c\x12\xba9\x89\xdb\x0b\xc3\x9d+s\x0c\x1c\xe1#\xb5G\xec\xd8\xf7\xc2\x86\x02\xb4q\\\xde^\x9c#\x00\xd1p\x8fy\x8f\xcbGk\x96\xc1\x97\xb9)w\xf3+\xd1\x92\xfb\x95\xea\xbf\x98t\x05\x86s\x16\xc9\xa1N0g\x8a\x1a\xe4l\x02\xcd\xadC7\x81,{\xf3uN\x92\xef\xbay\xd6\x94P\x17}\xd4\xfd\xf3\xdb\xd3\x0f=\xc7\x00Z\x9e\xbf}\xfd\xee\xed\xe9\xab\x0f'\x13\xd0\x88\x02'\xaf\xdf}\xf8?\x138\xe8\xbfY\x92\xfa\xc3M\xe1\xc4\xb8\xb7/~;'\x01\xdd\xe8\x11v\x83\xea\xea\xa4\xfak\x9c&s\x11\x15\n\xd1\xd6\xb0 \xf8\xbeN\"9\x05\x98@\x12\xd1\x99\x8a\xa4g\xa5\xef\x1d<\xd2'o\xec\x88\xd4\x067\xf1/\xb5=`\"x\x1f, f\xc68Y\x17\xf5\x8dD\xa4\x97\xf1\xac\xce\xcb\x1b'\x88R\x92o\x9bR\x1f;\xfa\x8d\xb1]\xe7\xd4\xa5\x90\xa7\xed\xb0l`\x90Dl\xa2\x94k8\x82<\xbcS\xd8\x9a7\x07\xdf\x05,Ve\x0f\nm\xf5\xf3\x95\xd6K\xdcpL\xd8\x00\xc5\x81\x94S\x04\xa7Tk\x9fR-\x86\xa9\xdc~\xc4v\xd5\xaf%\x83\x8e\xddb\x82ZK\xfbI\xf5\x01\xdd;\xc6M\xa8\x15\xc8&\x19l_\xac\xb7\xce\xd2\x88\xbd\xfc\x9f$#e2\x93cx\x9e\xc6\x95\xd5! \xf8\xd2j\xb0\xbeO\x9bX?\xad\x89:w\x92\xb8l-\xf9\xeb\xeby\x19\x9aQ\xfb\xe1#\xc6\xe1\xef\xf7rj\x08YB\x97\x81S\xec \xff\xa0\x9fiD\xd1\x94{\x91\xa7\x11,\xbc\x89\xe7.\x08H\x9c\xa1\xfc\x8b\x86\x7fW\xef\xceItIn\xe0\x18\xe2\x88T\xb3\xb8 >>\x08P\xc5T\xe7,G\xaa\x7f\xf8H57\x12\x7f\x8d\x89\xd9\xd51=\xa2\xc7\xc6\x9e\x92+\x9e\xa7\xa9\na\x16\xea\x13q\xd2E)BLr\xc2gQ\x1b\x04 %\xd2\x1e\xe5\x00\xd1\xb7\xcb\xbb`\x92\xaaxD\xf9\xaa\x9a\x13\xa2&\x94\x9a\x88\x94\xd10O\xbc\xae\xc26\x89'\x0dTy\x17u\xf4\xcd7|d\x18\xf4Or\xf83\x7f\x81 \xf1\x85p\xa2\x07\x8b\xc6\x0e\xa3\xf7\x84\x13\x94U\xeb\x05\x86\xda\xf0\xbc\xae\xb9\xc5\x97\xfaA\xb2\xd0\xa9h\xcb\xb2 \xa1\xc2tn3v(\xeeuo\x7f\x17\xec\xf6\xf7Q'\xe0%S\x7f\xe9N\xad\xc2\xec4\xfe\x92\xd7Q\x04lq\n\xf5\x177k\x02\xe4\x98\xf2\xa9\xf5?\xa2G\xbb\xb4!\xf6\x98\x07\x12\x06\x89\x0c\xa2\x92\x14i<#\xfe\x83\xe9\xc7\x8f\x7f\xff&\xfa\xe3\xee\xb1\x1fL?\x9e\xfdr\xfb\xf9\xec\xc12\x04\xef\xe3\xc7o\xeeyJ\xb5vW\x9f\xa5oT\x10\xfd\xf1\xd8?>\xfa\xf8\xf1\xa3\x1f|\xc6m\x1b\xed\xf2\x07g\x01\xb6\xf4\xcd~\xf4\xc7c\x86\x18\xdft\x03\xc2\xeb\xbd`\x85~\x8d\x8fV\xa7n\x96\x06|hF\xdc\x0d\x10?\x184X\xd8,\xef\xb7\xbf\xf9]\xff\xaf\x8e\xb2\xae\xe1*\xd8\x11\xb3(\xf3\xb5Qm\xf2:\xc6T\xde\x85\xff:.Z\x06|\xaf\xe3\xc2AQ\xd3\xaa\x85\xdbL\xb6\xd6y\x1e\x18\xdb8%5\xfb\xe8\x94\xd4\xad!\x9c\x92\xdaa\x08\xadZ\xca\x10\xfa\xcf{q\xa4\xaex\x92r*#\xbc\x8e\x8b>b\xae\xf8\xcbS\xd2am\x9c\x12\x9a\xcd\xa3\x8a\xd4\xecm{\x0d\xc3v\x0e\xea\xa1\xe5\x9fGK\xd2\xd7@\xb3D\xb8\xc3\x0d\xcc\xb9i\xa0\xe6\xe3\xd8\x16T\x8ew\xde\xe0\x8f?g4\xb4g\xa1\x85l\xf2\xf0@VQ<\x9fkF1\xecx\x0e<\x07\x83a\n\xd6\x98\x94\xfd)\xac\xf4Sh6\x94\x8e)\xba\xe2\x99\xe6\xbb\xee\x07\xc0\xb3\xf2\xe9\x9e/\xad\x13\x03Eg\x1a\xe9C\x1ai\xda\xbd\x19\xd3.&~~\x95\xd5>\xe1\x1e\x9b\xfe>ej\xf74\x8a\x8a-P[\\\xdf-\xb5T\xef\x8ae\xc8\xac\xc7c\xbd8s\xf4\xed\n\xab\x8bi}6~?\x0c7\xcd#.\xe9\x9av\xdd-*\xafq\x15D\xeb\xb8\xf0o\xb6\xd8.\xc3\xe3\\\xb3l\xf8\xddD\xf9.\xbb\xc9 \x00k\x0d\x00\\\xf7\x9a\n\x80\xb5\x1e\x00\xbf\xeb\xffE\x87E\x05\x85\xe9\x99\x8e/97\xf3%yo\x1eF\xf3\xa8+\x99\xc2y\xb6J\xd2\xf9\xab\x17:\x99\x0c\xc3Oe\xd2\xab\xfa|\x8c\xb5\xd7\xb5E\xc8\xf6>f\xd8G\xc6B\xd13\xcd\xffO\xd9e\x96_g\xc8s\xf8h\xc2\x0f~\\\x03c\x80\x16I\xca\xa2\xf2H\xd6\xe6\xef\xd1\x1f\xa7\x1f?~|p\xf6\x80Y\x1c\xef\x827au\xd3$#\xccM\x9a>\x0c<\x14<\xb19\xa69\x9b\xc3\xc5\x0d6\x9b\xc9\xf7\xaa\xf3\x87nB'}\xb8k\xf4\x05\xde\xef\xc9\xba\xa8o\xb0\xc1q\xf7\x1b\xde\xefk\xf2\xa96}(\xd4\xd8\xfc\x8f \xff#\x9a'U\x91\xc6hY\xca\xdc\x98\xf0i\xc6\x7fJ\x80\x0e\xce\xec\x93\x01\xa3B\xc4\x90Sz\xde\xbeh\xba\xd1Z\x97\x94\xa2b\xa3\x91\xefW\xcaE\xa5\xb7\xd7\x19)_\xbd\xe8a\xab\xd4\x8b\xa2\xe5\x8c\xae\xef<\x08B\xb8\xc6\xfc\x91\x80\xb1\xc8\xcf\xab|S\xce\xda\x1cE{'\x9d\xf6\xb4\xb6yvJXH\x9d\x92dcL\xab\xf4\xd6\x92\x14\xd03\xdf\xdb\x7f\x88\xd1\x923\xb9\xa1\xe8\xee\xeaW\x97\x92z\xc9$\xf5\xb2\xa5\xbe(\x87-\nY\x8e\xb9\xd2\x90Z\x1f\xb8\x0e/\xf7\x13\x93m\xa1\x1ck+:\x7f\xdc\x8cY\xaf\x8c\x8b#\xc2\x83\xf9(\xcch\xeb!6\xbaO\x1b\x8d\xa3\xa4z\x9do2\xba\xc9Xo\xdf\xed\xb7;+\xe2\x92d57\x90R~\x1ea\x8cr\xe5\x01^\x8e\xca\xd6\x0f<&\xec\xc9\xf7.\x176\x1d\xd5h\xf6\x03Y\xe4%y\xdd\xbaAu3\xe7/}c\xb8H\x0e\x87 h2\xaf\x03FSc\x03\x9e@\xa6\xaf\xc0\xec\x9e\xcc\xf6oby&05\xac\xbd\x84\xb9\xd9V\x8f\xc55\xe4\xc1s\xc6Z#\n\xc8\xfd\xc4\x1b\xd1\x83n\x9b\xddC1JA\x194\xfe\x91\x98\xd5\x8bb\xd5\x1b\x96y)\x87N|\xfd`\xea\xf6V\xae\x95a1\x97Va\xf1\xa6b\xf0\xc6r\x95\x92g\x030\xdbf\x8c\xa8\xc7m\x01\xac\x8e\x94\xb5\xdd\xdd\xb5\x8c&[\xdf)\xc8X\xa4\xc7\x16\xa4\xf6\xf5\x90\xaa|\xa2K\xc7x!\x82\xf7\x0f\x8d\xbb\xd8\x94K\xc2\x87N\xe6r\xf0\x95\xc5\xd5\x14\xc3j\x9eF\xe7EI\xaeHV\xbf\xdb\x94\xcb$3*j[\xc9\x94\xf6\x9e\x02\x81\xef\xe1B\xd2fb\xa6\xcd\xb4\x9c\xfb\x17Sr\xe6\xaa8\x03\x9c\xf8@\xd0\xfa\xe1[\xdaf\xb7\x7f\xc9\xe2 \x85\xcaN\x17\xa9\x86\xfa^\x92\xfa9\x8f\xecW\xc7\xb3\xcbg\xf39\xc9\xe6\x9b\xb5\xebHtVO\x836L\x82~\x9c\x0c\x86\xaf.\x99\xe5$Z\n\xe9\xcf\xbe\x1av\x8f\x18\xeb@\x1a\xae\x81s\x11\xd2*\xcav\x9e\x80\xa2\xe4Z\x88\x08\x87\x06\x8aL\xc1N\x9b\xcf\xa3\xf39\xb9\xd8,_\xbd0\xae\x00\x8e\x0d\x99\x9d\x16L\x7f\xb8y\xf5B\xc4\x9c\x17EcB\xdb\xfd\xc4\xb6\x14\x12\xcd\xf9z\x00y\x1a\xb0!|B\x8e\x9f\x08\xce\xeb\x1d\xdf\xbcC\xc8\xd3\x15i{\xb8\"\x8f.7\xfc\x18\xc4T*\x124\x12\x0b\xa6\xf5\xb4t\xaf0\x8f\xae#\xe8\xf0\xb1\x83\x839q\xf3)n\x1at\x1d\x84\x03\x18\xc4\x19\xe9\xd4=g\xb9]\xbbw\x87\x01\x12\x0e\xb6\xefpT\xecO\x89\xf2n\xa3{'\x19$\xb7\xe19@G\x1e\xcfk$Gi\xff\x15Y&UMJ\xc2\xe8U\xdc\xe5@\xaa\xd5\x9b<;\xad\xe3l\x1e\x97\xf3\xbf\xc5e\x96dK$\xbe\x0e\\\xb0\xf1FB\xa4>,I(\xf2\xc2N\xaat\xd8\xecH\xa2N2\x94;\xb5/\xc6\x86\xda?\xc5\xa7\xdb\x1b\x010G\x97\xeeu\xbf\xde\x9e\x969\x1b\xba\xe9{\xa09gH\x14\xcf\xe7'T\x80\xfc\x91{+2'\xa8\xeeSn\x1e\xb6\xb3\xaf\xb5\xadn\x1a]\xe7Wc\xd2\x8a\x08\xff{C_c1\x90\xc5\x9b\x881\xa4'6\xc9'\xd3<\xf0=\x8a\x00\xbb\x0c4w<\x959\xd1w\xb3\xcd,L~\xb5\xfd\xed?\x8b\x8bzS:\x06\xee\x80\xedW~\xef\xae\xc15\xb0\xf2\x9a\x8bKQ\x06`f\x1f]\xa9\xff\xd8\x05\xcc%\xe7\xa0^\x88$\xba\xeaL\x8d\xe6\xdf\xad\x84kwA\x0d\x1e\x1f\xe8\xc2\xf8\xd1\xe7\xfaP\x11\x87\x8f\xba\x99\x00\xb8[\xddw\x07A\xbb\xfd\x8d.M/\xf3aM\xf2\xecy\\\xc4\x17I\x9a\xd4\x89=u\xc2\xd5\x97&\xa0\x80\x8e\x14\xe6\xb7SQ\xdc\xbb\xc7\xb2Ox<\x8d\x00^\x1b}\xfe\xdcKI\xc1\x9e\x95\x1b\"*\xceXL\xff\x93yR\xc7\x17]\xa7`\x93\x03o\x92g\xaf\xb2E^\xb2(\xf4\x16\x0c\x17\x1a\xb6x`Jz4\xc5\x18\xfb\x04\xdd>\x8c)\xbe+1\xa0\xf7\xccc\x1c\x03\x1cj\x97\xc8G\xb7\x91M\xa4\xce\xc2'Zy\x1el'nI\xaa:/\x89l\xc7i\xf9\xd9\x05[lJ\xda\xc3tZ\xca\x9c\x0d\x13\xc6j\xedi\xeb\x14\xed;G\x9c\xe9\xc7\xab\xb52\x84\xdc7\xe5l`\xa1\xe30!\x90\x19z%\xd6\xd8D\x95\n\xbe2\x84*\x08!\xf1\xcb\xe1\xd0E*\xcc\x9d`\xa5\xd7\x1azr\xda\x18l\x1e\x13Q\x90\x007\x96\x1e\x83*\x16\x93^\x81\x17~\xa8\x87,\xc9\xe6\xad\xaa'\xd9\xbc\x8f\x15\xfd\x81I\xebP ^\xd9B\x7f\xb3\xab\xbb\xd6\xb4\xf1m\x12a\xbf\x1f\xee'\x87\xb8`\xf2\xf5\xcc\xb8\x8eD\x08*\x01\xf7\xb4\x12\x18b>)8\x10\xefg\x11=1\x10\x80\xbe7[\xc5e<\xabI\xe9\x85p\x9f\xa7\xf9\xe2\n\xee\x01\xb1\x04A\xcc\x1b\xa2\xcc\xe3`3\xdaV4Y\xfa\xb9\xddR-\xd2]\xbd\xc5\x98\xf7\xd5\xb0*\xe1\xf3\xe7a\x941\x98\xb8\xe3\x04F\xaa\xef+\x03\xf2[n\xd0\xea\xa82\xe3*3\xbb$\x99&\xd6\x15E\xc5V\xaa\x7f\x91\xb6\x9b2w\x86\x1d\xd4\xdd \xb4v\xd8\xd9\x0bp\x04\xaf\xe3z\x15\xad\x93\xccG\xa7\xad\xd6b\xfd\xc6\xfb\x02\x1dt\xf86\xf8@>\xd5\x83[!\x89fy\x9a\xc6EE|d\xe1\x12\x13bg\xf2e\x0fYs\xb8\xcf_\xb3Y\xe9\x12\xcf\x8aH[\x95\x82\x93CQ\x94\xf4<\x12\xcb/\xb8\x15\x8f\xe4\x96\xe2\xa6\x830>\x01\xee\x8d\xd9q\\\x11\x02\xa2XO8n\xfe\x14\xdcy\xd0\x84\xe2\xeb+B\xf5\xea\xa5\x86\xf7\x9e\xd5\xc9\x15Q\xf2\x08\x91\xe8\"\x9fwRH \x81z(\xbc\x8f\xee\xbb\xdf\xb5\xff\xda\n\x9cW6\xef\xdb\xc7z\x86\xb3\x17f:\xd6\xfb\xea\xb2(\x0e\xfb\xdfv\x1b\xafZ.^}\x0f\xaf\x94\xf5\xf2\xb0+\x15\xcf\xf8\xf3n?\xcc8\xfe\xf0\xdb\xee\xf3\x82\xcf\xad\x1bub\xce\xfa\x17\xe1\xb0\x1f>\xea\x0e`\xc5:z\xdcy|\x85\x8f\x0f\x0e\xba\xe3Z\x8364\xdb\x92u\xdf\xcb\xdfu\xc3\xb9\xf6n3\x17\xaa\x03\xdb\xfe\xc3'\xddQ\x9d\xf3\xee\xbb\xd3\xb9n\x1c\xdb\x92~\x00\xe4N\xe5\x13\x8cQ\xa6\x8b\x1f\xdc\xaa\xf6 \x8e\xba\x9e\xd2\xa7p\x04O\xda\x8f\x9e\xd3Z\x9dj\x97\xc68\xde\xcf\x8c&h\xcc4L&\xcf\xa2\xbb\xf6\x14\x1fu\x93qMZ)\xc8\xba\xac\xae\xce:\xec\xad\xb9Sz\xb6\xca\xa0\x80\x8c\x84\xabO\xfck\x96\x8ew\xd8\xfa\xec\x9d\xd8n!\xf2\xa4\xdd\xbe\x90\x96\xb7\xa9\x06%O\x8b\xa8\x9f5\xdbtv\xc6\xe6\xe8=\xec.\xd1\x14\xf2\x03\x8e\xc0C/~\x16\x8ck\xc2L\x155w$1\x1cC\x0c\x13\x88\xbb\xf6x1\x9a\xe2\x05\xa1T\x95\xd5\xc9\x9a\xf4\xaet{\x13\xa6\xfb~\xd5\x89\xf3@\xc1\x94\x85<6\x01w\xa9D\x07\x98n\xf8\xa8DU\xcd\xd1\xfe\xe8Q\x95`\xc8\x81s\x16\xbdC1\xa0\x88\xcek\x0eD\x1e\x0e\x89e\x87\xffQ\x8d\x88\xf0*\xabsLa\xbd\xc1\x85\"\xb8P\xd9\xb0\xb5\xe4\x07eUuKJ\xc9\xe3:B\xe0\xbe'\xb3<\x9b%)\xf9P\xc6Y\x153\xfeuI\xeawy\x9e\x92\xb9\xbf\x83\xcc\xc1,\xdaT\xe49\x9e\xe6|\x01;\xb3\xce\xa3\x82\x94T\x02\xf5\xdf \xb1\x11\xe4|\x10\xe1`\x7f%I \xe5)\xf2\xe1i\xbd6\xe9\x8d\xf0*d/\x84U\xb4\xc94\xeb\x86\xd6D\x9d\xed)\xf8\xec\x9e\xf4\x15<\x85\xbaI\xfb\xf74\x80\x9a\xab\x81\xf0\xb7\xaf\xbc\x1b\x1e\xec+\xb3\xa5\xf0\xb3\xf1\x96\xc2U\xa4\xcbj\xae\xf3Q\x13f%t\xe9>\x7f\x86\x9d,:_\xe5\x15\xbf\xdb\x18cC\xfc\xb3\x91\xf4\xec\xf8;\xdc\xdeU\x02u\x07\xfd\xde$\x1f)\x9f\x9dj\x9e=\x1f\x06\xdc\x1b3\xe0\x1c$U\x0e^=\x9b\xce.\x88\xef\xdd\x1b\x0fN\xdc\x06mX\xf20{\xfd\x9bW\x93e-\xbb\xf6\xc2\x16\x9e\xe7Y\x1d'\x19)_e\x8b\xbcO\x05z\x07\x83\xf8\x8bN\xf1}\xffl{a\xb3\x88\xc7\x08R%^\xbe\xc2\x11\xbc\xefZ\xa95\xc3}\xa1\xf8(%U;\x88\n\x0f\xe7\xf9\xa2\x15\xd9\x06\xe3\x11\x0d\xf4.\xe6N\x07\xa0\x10\xfdfn\xb4A\xde\xd3\x87\x1e1T#\x82\xd2\xb9\xff\xd8\x93\x8c;\xdfL\xe0E\x87\xeb\x10A\x11\xaa\x1fn\x18\x01B(L\xe0\xb2\xc3\xd4a\xa2\xd4\xd7y\x96\xd4\xb9K\xc4\xc7\xae\x84\xd1\x112\xcf\xd9\xbd8\xedl\xc0\xd2U\x7f\xe8B\x03\xb6\x1f\xa3\xd6\xb8\xfc2\xb4\xab\xaf\xaf\"\x92\xfdcC6\x82T\x8b\x00\x19\x92x\x86L\x08\x95\xf5\x9e\xc7iz\x11\xcf.\xd5\x8a\xb9F~\xa2\x87\xd8\xe0\x9c\x196\xbc!\xd7\xd6ik\xe7\xfc3\xcf\x19R\xfa\xde\xe1w^\x10\xc2&\"Y\xb5)\x89\x92\x14\x97\x03\x02\x93J\xf77\xab\x10=1\xde<\xc6\x13\xee\xd6XG\x17T`!sf\x0dQ\xf9\x1f\xd0\xacY\x8cJ\xdf$\x0b\x8c+1\x89o$#\xad\xb8\x9c\xc6g\xf4\x8bp8\n\x07\x83\xd6\xe9\xe6\xa2. \x9e\xf2\x92(8C\xacc\xc6\x82\\`\x11\xadbT\xaerH>\xa6\x90\xfcQ0\x1f\xba\xee\xd4N\x1c\xd6\xf7\x8bF|\x15]\xc5i\x82&#\x1c\xeb\xfc<\xe4|\xde\x8b\xb7\xaf9A\x11\x96\xec\xad0C\x0dr<\xf1B\x93\xad\x8c\x07\x94\xaa\x93\x18\x83\xa3\x15qU%\xd9\x12b`\x95!M. \xfca\x9e\\\xfd!\xc4\x97\x80\xfdr=\x85\xe8\x07\xdf\x07\x90\x97\xf0\xfd<\xb9\x82\x07\x7f\x8a\xd0-DL\xd0\xb1\xc7YJ\xdb\xc7\x0e_\xe6\xf9@w/\xf3\x9cu\xf62\xcfEg\x99\x1a\x03Z\x89U\xc6\xf9f\xec\xf5\xc3*\xa9`\x1d\xdf\xc0\x05\x81Y\xbc\xa9\x98W\xcd&K\xf0\x02!\xc9\xb38Mo \xcd\xe39\x1dP}\x9dC\x92\xcdIA\xe1\x9b\xd50\xcb\x8b\x84Tt\xc8lL\xdc\x07\xc7\xb0\xa5\x98\x9fX\xdc\x19\xf9\x0b\xd3m\x1bR\xf8 h\xe2\x9ci:\xb0\x9a\x9fRq\xbb\xe0n\xa7\x06\x05\x122H\xe7E\x99\xcfHU!o\xc6\xc3\x99\xfaUt>c\x7f\x1a\x15B\xf4\xeb\xa5~\xe2T\x92\x7f\xe3\xeb\xf2d`\x12\x8c\xa1QSa?\x1d\x12{\x0cSY\x80\x7f\xee\xcf\xd8\x15\x80Y\x07L{X\xb0\x1e\xfaB\x05\xe5\xde7\x17i2\x93\xf1\xbb-\x96)sa,k=[\xd4\x9237\xf3\x85\xf9\"\x14@\xab\xa1\x17E\x9eq\xba\xc3\xd2O1\xac@\x82\xa4d\x1e\x84\xb0\xd0\xb6\xa3\xbfk\xfd\xb1'\x07<\xc3\xd8xvS\x0e\xe0\xc0]!\x1f\x99\x19\x00\xb7\xa6\x12\"r\x84;o}\x93\x82\xfd\x06\x8e\xe0\x95\xb1\x89\x0b*\x82a\x13)\xfe\xab C\x00\\9\"\x89w\xf7d\xa5\"a\x16\xc2E\x08I\xe0\x88\x08\xc6C\x8b\x1bK\xe3\x92^\x07!\\\xdb\x8f.\xb7\xfb\xfcf\x95\x07N Ud\x1c\xce\x08\xa2_X\xdb%\xd6\xcf\xcd\x81\xf8p\xcfD\xe6j\xdc\xed:\"\x83\x8e\x0c\xc6T\xb5\xaf\xd0n{_Q\x96\x7f\xe0\x01\x020\xd4D\xa3\x9191\xd0/!V\xed; '\xaf\xcb\xddc/\xa7u\x8f/9\x0b\xfb\\\xcek\xa1;@\xeb\x98\x9e\xb7n\xeb\xa7F\xf7\xa0;\xde\x93\x10b\x1dD(\xac\x14N\x8e\xb9\xa5\x0d\x86c\xdd\xe0^\x1b\n\xee3\x8ffq\xf6\x9el*\x9e\x19\x8a\x8eb\xd3\xc92C\xc5\x0b2\x8bg+\xc2v:\xad\xa1oQP\xf6M[_6\x8f\x9e\xff\xf9\xe4\xf9\xff:\xfd\xe95\xaa\x16\x99\xf6Q\xdf\xc2\xa6\x97\x93c\xc4\xc7\xe2t\xd8D\xf9\xa6&\xe5\x9f?\xbc\xfe\xd1\xd4Ke\x1b_\x08\xdd\xa8\xbc\xa2\x88\x13b \xb5Q\xe1\xe2Y\xaf\x16\xe9\xba\x90\xa9\x97O\xe2\xce)\x94\x9e\x94A\xa8\xfaWf\xcc\xb1r\xb0e\x10\x8c\x80H\xf5\\\x06\x9c\xe1\x91\xbf\xe5j\x1b\x1c\xec\x85P\xc0.\x1c\xec\xa1S\xf4\xc7\x0c\xfc\x8a\x94W\xa4d\xd5g\xe6\xea\xfa\x99\xe9tWtg\x1dx!h\xaee\xfb4\x03\xb5K\x86F\x0e\x19\xaf\xdd\xd3\xef\x19P\x81\x07\x98r\xd5\x90\xe9'\x94GIV\x91\xb2\xfeP\x12\xc2\x1c\x1b}F\x9d\xe81`\xe4\xd3.X\n\x80P\xb3\xd3kE\xab>\xf2:\xefG|\xfa\x85\xf7O\x87\x8f\xbe\x0d\xf4\xcd\x9b\x8f\xa5\xc6\x0fH\x03$TM*\x1a\xe37|\xed\x98\x95@\xd9DS}\x1a\xa01\x8fN\xb9l\xd0A\xb1\x060\x00\xeb\xb1\xf6;\x98\xc8Z,\xe4+\xcf\xeb\xd7\xb3\xf8\xfb\x82\xab\xbb::?'\xd5\xeb|\xbeI\x89F\xcd\xc3C\xb2f~\xf7\xea\x0d\xc3\xe7b\xbc|4\x7f)\xd5f\x8e\xa1\xd4Z\xd8\xcd\x859\\\xdb\xb4\xeeV\x1d\x0d\xaf\x83r>\xff;\xaaVqA:f\xd3t\xe7\xce\xca\xe4\x82L\x94\x8at\xfa\xa8\xc2\xfa\xc7&)\xc9\xbc=\xe2yR\x15\xf4,v\xfe\x80\xf9\x94\xd5C=4+\x10\xdc\xe1\x12\x84-8\x98\x11W\x7f\x0b\xcd\xaf<\xc0\x14\x16I\\\x89\x90\xb2\xccK\xf5\x8e\x04\x1f\xf4\xb8.\xfd\xddt\xbd*\xf3k\x8c\x80t\xc2\xbfj/\xa9\xde\xbc\xdb O\x95\xcb\xe4\xc7\xdd\x1bJ~\x9b\xdc\xb3S\x14\xa9\xae\xba7\xa41\xaf\xdf\xc5\xde\x0d\x7f\xdem\xbf\xe2\xcf\xbb\x17\xc0\xfc\"\xb9\x97^\x80_$\xf7\xd2\x0b,\xf8\xf3\xee\xc5/\xbbH>x\xa2\xbbH\xce\xfc\xc3\xc7\xddy\xb1\xfb\xe3\xfd\xc3n\xfbW\xbc\xfd\xee\xb5\xfa\x9a_\xabw\xdbY\xf2\xe7\xddy\xb1\x1b\xe4\xde=\xf4\x05\x07\x7fw\xba\xe7\xbc\x99\xeep\xae\xf9\xf05W\xc4\xb4zw\x94\x9f\xf0y\xef\xda\xfa\xb4\xafN\x7f\x0eG\xddh\xda\x97p\x04\x0f\xdb\x8f\x9eQN@\x04\x00|V.\xf1\x12\xa9:\xebD\x18|\xab\xd6\x12\xa1\xeb\xba\x95\xde\xa9\x950\xf4n\\\xe7\xa5\xa9\xf6\x07\xb5\xb6\x88<\xd8\xae\xf2\x9a\xdfb\xcb\xdf\xd3gg\x94g\x9b*\x03.\xe3\x9b3O\xf7\xf4\x87\xcdbA\xca\xde\xbb\x17q\x1d\xff5!\xd7\xbd\x17<\xc7\x87\xee\x03\xd2{\xf82\xcd\xe3\xfa\xf0@\xdf=\xbe|\xf4P\xff\xf2UV?6\xbe\xd9\x7fd|e\xea\xecu\\\xf4\x9e1\x17\x14\xf1\xf8C\xe7-\x8b \xd8\xfb\xe8\x94\xd4\xfdg\xc8\xdf\xf5\x1f\xdf\xac/\xf2\xb4\xf7\xf8\xa7\xc487|\xf5<\x8d\xd7\x05\x99\x9bk\x98\xa6O\xdf\xb5\xe6O\xc9\xbc\xf2\x1e\xc9\xa8\xf8\xeam\xe7\xe3\xbf\x91\xf8R\x02ig?\xd4262,\xef\xab\x10~\x0e\xe1M\x08\xefu\xb7w/B\xbc\xbb\xc9\xe0\x1e\x9c\xf6\x99\xeb\x9f\xf8\xab\xe7\xfdW\xff\xe0\xaf.\xdb\xe7\x03ei_\xe1%\xee\x0b*\xb5\xc31\xbc\xa2\xe3\x90#\x98\xd0\xdfA\x10\xaa\xda\xd3\x17R\x84x\xd1ol\xe7Z\xcd[\xdaa\x9e\xe8\x0c^\xe2\xbdBWJ\xa5\x9f\xbe4\x89\xc1thW~M%\xee\x1fe\xd3\x18\xd5\xf7E\xf7\xe02\xc4\xbf\xa5\x1d\xff\x13\x8e`E[\xe9\xbd\xa5\xe5\x078\xa25\x8e\xe0-\x15\xb8\xf1\xafwz\x05\xc6\x85:\xc1\x8a\x8e\xe2G\x83\xaa\x03[\xf9 \xdb{F\xff\xfa\x01\xb5ToLr\x81\x98\xeeO\xac\xee1\xfcr\x0b\x13Xv'\xff\x13\x1c\xc3\x82v\xbd\xf1_0\x1d\xe7\x04f\xf4w\xcc\x7f\xf7\x1a7\x82F\xf4\xba\xf3z\xfa\xcf3\xd9\xc1\x1b\xee/\xfb\x8bA\xefH\xc7\xb8\xa6\x1d\xfe\x93N\xbf\xdf\xdb\xef\xcc\xbf\xde\xa3\x0d\xde{`!\x18\xcb\xa0\x8f\"\x7f\x85#x\x8f\x9aj\x1d\x9a\xfcU\x0e\xf2\xaf\xfd\x97\xef16#bF\x88~\xed\x0d*\xca\x08`\x92}\xe9\xd9t\x00\xde\xdcbXC\xbf\x14\xbb\xb1D&\xe7}\xd7\x12<\x08u\xe8\x7fn\xeb\xd2p\x9f\xf3\x02\xc7\x9d\x87\xa0t\x9c\xbbvLa\xf6g8\x82\x7f\xc01b\xc6\x1c&P\xc0\x04\xff\xbe$7\xd5\xab\x0c\x03\xe2\xf6:\xfd\x1b\x1c\xc1K8\x16{{\x02\x7f\xee\x01\\h5\xfd\xbf\xd1U\xab\x15\xde\xcf4\x93\xbf!5)1\xc6\x13z\xe8\x9e\xa1%\xfd\x0b\x9c\x8f\xdb\xec\xe4\x93\x91\x1c\xe7\xc1\x93.\x87$8N}\"\xaa\xef\x1e\x8f\x9669<\x12\xe6u\x81W~;\x18Z\xbc\x95\xeb`\xe4\xb8\xf7\x1f\x1b\x92\xc2\x1ety2\xce)?\xd6g\x85=x\xd2}\xbei\xc2\xf62\x0f[\x11A\x97\x1d\xa0\x15%#\x83\n\xdfV\x94\x8d\xe9\x19\x8b\xb2\x81\xce[\x14\x04<\xcc\xc6\xb0{{{}a\x02\xb1\x1e\xe8N\x06\xc1\xeab\xeb\x81v\xd8cX\xb9{\xd4\xf6\xab\x8d\xcb\x9c\xb4\xaeuG\xae\xf0\xe3\xc7z\xcc<\xec\xc9H|\xb0\x8f\x0f\xb7\x1dl\xe2+\xa9\xa0\x99\xc9\x18&\xec\xf7\xbe`\xf0]4\xcc\xa5\xde2\xfed\x1b\xa6\xfeF\xa3Q\xa3@\xaeZi\xd7\xa8L\xe1Z\xc6\xfb\xb0\x0f\x13\xc0\xe0\xfd}\xe2e\xbdc\x93\xa8KA\x1a\x0b\xb9\x82\xc5\xfd\xbc\xbf\xcf\xaebs?i:c\x1d\xa1\x14\xc9\x82\xf7o\x82\xa7\xb0\xbb\x1b\xc3\xf7\xb0y\x1a@\xc5\xcd\x11\xa65\xecB|\xa6?\x17Y\xe3\xfawr@\xa9\xec\x816\xb5/{\xa9\x9f\x06\x90\x8a^L=\x08\xf6\x87\x05\x0c\xcd\xfc\nS\x8a\x11\x96S3\x04\x9d\xdeo\xfb\x85\xefn%a\x0f\xbe\x1f\xf8\xa5\x01A\xbf\xc0\xf7\x91S*\xa6\x15i\x12\xab\x87\xe05*\x16\xaf{Y\xce\xb3\xd3*w1\xb7\x81A\x05c@B\x0d\xd5\xcbzZ\xae\xa6\xf5\xa7=H\x99\xf7$\xea\xe2\xd9\x0dV3\x05\xc9\x1f\x90\xfe1^w\x04N\xd1\x884M\xe9/\xafr\x9b\xc0\xbc^,q\xdayTs\\\x11\xb4\xdedQ}\xc94;3\xd8\xdb)\xb0\xa4k\xd9\x80\xc2\xcf\xfc\xfd'\x07\xc1\x17h\xcf\xbe\xf6\x92\x1bM \xf54\x03\xc3\x88\x18\xbd\xa4\x92l\x91k3\x87\xd1\x92\xe6Km\xee0\xc0\x94\xb5e6\x81C\xfdKT\xdcM\xe0a\xef\xa5\xc659\xb3\x1ao\x82\xb2nSrF\xb9\xb6\xfb\x9a\xfb\xd0~\xd3\xccOs\x96g\x8bdYEi\xbeDs\xc0~=F\x02J5\xdb\x00\xa8f\xa7\x89\x8d\x91`\x97Z\x92 \xcb[\xafDR\xc5\x12\xfe\x04\xfb\xa8\x87f'\x00\xa5\xca\x94\xb0\xee?\x05J&\xcb\xa7\x10\xef\xee\x06\x94F\xd2\ngjkZ\xb2\x89\xa0\xfa\xd3\x91\x12\x92\x95+M\x83)9\x8b\xe2\xa2H\x11\xe5\x06\x0d\xda\xc5\xe9\x1a\xd1\xb5D\xfd6&)f\x17\xee\x1e}\x88\xf7\xb3\\/\xdb}\x8fOY\x05\x8aD\xbd\xf7\xf4!{\x8d\x18\xd8{\x8fO=\xad[>^Vc\x0e\xa8\xca\xe4\x17\x8f\xa8\x99\xf4\x91\xc00]\xa7S\xc2\x9a\x07\x8e21]M\xe3\xd7\xb9vpc\x8f\xc4\xc6\x978\xae\xa5u\xfa\xb3\xc0\xc0`\x90\xce}\xc4:\xbe$\x7f\xae\xeb\xc2\xa7\xc4\x97\xbc\xa4\xaf)Y*\xf2\xaa\xc6\x1f\x06\xd5\xc3\xc5&I\xe7\xef\xc9?6\xa4\xaa\xd5\xe6\xd4\xe7\x06\xd2\xc1r{\xab\x1f\xf1G\xfa\xfa%\xa9\xf2\xf4\xaaU\x9f?\x1a\xac\xcfMM4\x9f\xf17\xfa\xaf+R&q\x9a\xfc\x93\xbc'\x95\xfa\xad\xfa\\\xffe^\xbc\x9a\xab_\xacHZ\x90\xb2\x8a\xe8\xf3\xbbEc7\xdc\x91\xc4\xad\xd6\xeb\x0c\xf0\x84\x9e\x96\x8d\xfa\x84\xfe\x10-\xf7\xe9\xd1\x15w\x1d\xa1\xb5\x8cGQ2\x81\xd2p\xd2\x98\xa3\xe3\xf2.'\xba\xa8<\x1aM\x8e\xe0C\xe8h\x91+\xc8\xc5\xa0Q>W~\xa1\x97N\x94r\xcd\xa7|a\x00=\xf0If\x1anF2\x15k\xceNDx\x0d\x83\xe7wGp\xd0\xb9\xdd\x00^\xb9\xe5\x9c\x7f\xf9\xfc\xd9\xc0A\xb0\xaf\xf5\x90e\xfb\x7fS\xc6\x17)\x19\x00e\xb6Y\x13Q\xc7\xc0\x10,I\x8f.\x01h\x82\x10C\x1d\xd9On\x01\xb0\x1e\xbf\xa8\n\xe9\x96#\x9f\x88-\xd3\x1f\x138Dl\x11\xad\x8c\xc0\x9d:\x9a\xfbY\x08^\xcc\xfd\x8a\xb3\xfe\xd4s\x17\xfb\x18\xde\x9c+\xef\xdaO\xbdRG\x05KL\x05\xb5_Gt?\x1f\x1c*\"\xaf?\x1d\x1c\x82J\x072\xff\xe1\x81\xf2e8<\xf8\xce\x97\xdfn\xfbek\xb4\xe3\xbe\xdc\xba\xcf\xc3\xc3\xc7\xe6O5R{\xfb\xd0o\xbd\x92$\xb2\xd4c\xb7@-\x0dr\x13c@\x1fy\xf6\xdb\x93T\xea\x07\x93\x1b\xf1M\xec\xb6.\x1f\n\x7f\x82\x83\x8e\xb5x\xc3\\\x1e\x9c\xc1q\xfb\xe7\xc4\x98\n\x8d\xb29\xbe\xa6\xf5Cc\xeb\x87\xed\xd6\x0f\xcfP\xff\x1eDW\x07o\x0bRbL\x9aWh^\x12\xd7 \xc6/\xb9y\x9d\xcf5\x1e\x9f*\xa8[\xa9\xddTE\x0b&kP,\x10&\xe8\xf87\x13\xf4#\xf0I\x10\xb0(Qy\xd39s\x84U\xd2r}\xac0\xc7\x96\x174\x86a\xab\xf6'\x01L \xe1W[\xfaE\x1e\x9e\x9e\x9e\xbej\xfd\xc5\xcc\x02\xc9@8K\xdd\x12\x8dC\x00\xfb\x12\x99\xc8\xad\xc0A\xbfnG\x84\x80]\xf0\xce1}P+QZ\xb5\xf3\xff\xfd\xfe\x9b\xff\xf1\xf7{\x7f\xf4\x83\xf3\xdd\xa3\xe9/\x1f\xcfn\x9fN\xbe\xff\xd3\xe7\xe8\xe3\x83\xe3\xf0\xe3\xc7?x\xde}\x96<\xed\\g\x99\x0b\x0df\xb0\\\xe8\xcc\xf3\xb0\xb1\xa1\xdbo\xfa\xad\x95~}\xff<\xf8\xe5 \xbc\x0dD\xd3J\xe6\x12\xff<\xf8\xa3@\x80\xe6\x83\xe9\xf9Y\xf0\xc7o\xf8s\xcb\xc6UF\x851X\xe7~M\x87\xd1\x0f\xa4nX\xdc\xd8v\xa0\xf0\x06\xbd\xfb\xfdtL\xa667\xb66+N\x1fw\xf6\x90\x03q\xc6\xc4\xcaDWA\xdc\xc1\xb1\xe0Vb\xcf\xeel\xb3g?\x7f\x86\x1d\x12\x15q\xbd\xaa\xfa\x8du\xaa\xb3jC\xb1-@Qs\xf1\xea\xfd\nR\xb6\xcf!\xc9\xa0\xd4\x9b\xa8*\xeaXZi\x9a\x1b\xa2\xcc\x03\x87\x85\xf7\xee\xd9\xfbg\xafO>\x9c\xbc?e\x83O\xa2:\xff\xa9(laSD\xb9\xe2\x0eg\xb4\xa7ibP\xa6\x8aB;\x8c\x07\xe9el\x83}\x1cX\x87\x04\xd0\x18j\xdbk\x8aR\x15df\x8c\x13\xa6+t\x95XX\xd1\xdc\xfd\xa35\xa9W9\n]-(\xbb7 i\xfed \x9c\xa8Z4:(]\xc1\x0c4\xbe\xc9\x06]-(\x85\xa1W\xb2D\xe8\xcd\xe0Gz\xa7\x97\xfe\x9b\xf6\xaf\xadT\x96\xa0U[b\xe3\x9a\x0bp*g\x95~\xe6\xef?\xee\x06\xff\x00n\xb6\x86o\xbby(\xea(\xa9\xde>;=t\x125\x98.$/H\x16\x17\x89\x91\x89\xe0Y\x15(\xae\x17\x0d\xae\xd3\xc9\x1ez\x1a\x16<\xa9N\xaf\xe3\xe5\x92\x94\x07#\xc6P\xb1O\xb6\x18\xc3\x81n\x0cy\xf1j\xce\x12\xf0\xd7Q2\x7fY\xe6\xebwq\xbdz\x8d\xf8\xcd\xdcI\xeb(%\xcbxv\xf3\xaa\xff6\xa6o\x97\xa4\x96\xc7\xf9\xfb\xf8z\x84\xf8\xc2\xd9[F}\x8f\xd9Ib\xd7\xd7J\xc9/\x12[\xd7\xbc5\x18!f\xbb\xd5\\+\x11\x8b\xcb&\xa1\xdf;x\xe2$\x83'Nb\xa3z\x89\x12\x19i\xc7p\xef%H^\xa2\xf2\x85\x83\x0c\xca4\xf7\x13\x19\xf0\"\xf6\xf9\x1f\x9b\xb3\xa8\xca\xd7\xc4\xb7\x03\x14\xba+\xc2\xee\x16\xb5uu\x91\xd7\x0c\xd9\x10\xd0>>\x9bK\xdc\x80#\xd8\xd0\x87$\x9e\xad\xd4\x87\x15\x8b\x93Q\xaeQ\xcb\xc5w\xc4\x98\x0dQ\x90\x99~mY\x005D/\xb3\xd4\xa1\xb3\xd9\xc1\xb5F\x96\xaf\x8e\xbe\xf9F\x8emn\xba\x8b\x82\xde\x89m\x0c2+\x0e\xda\xccx\xca\"\x9f\xbd\x17\xc2\xa2uZ\x0e\xac\x9d\xc0\x18\xcc\x92\x15\xafIMJ\x0d\xdb!\x8a\x1cgE\xc7\x19\x07\xb0\xe3\xb0\xe7D\x91r\xe0\x948\xf0\x08;\x9did\x0d\xf6{\xb3<\xab\x93lC4\xa9a\xd4r\xc5]qs\x9f9\x7f\x99\x9cqE\xa1\xddj\x83\x02uK9\xad\xa8tB\xffc\x91\xca3\x8a\xc6\xf8\xf4\x08\xa6\x99ev\xc0\x87\x86\x87\xcb\xb4r\xa8M\x076k\x84\xa6\xfd\x00f}{'\x13\xbd\xd4\x15\x12\x9d\x9f\xe7e\xb2L\xb28U\xc4)\xe6\x96\xa1}\x83\x12\x8cBT\xc2\xf6O\x96\xb7\x9f%L\xe7W\xed\xd6\x81\xe8\\\xab\xbbE\x86\x00Td\xc4\xac-\xf4\xba\xcd\x98\x02\xbc\x80#\x98M\xf7\x1c\x00NKa\x84\x91\xe9\x0d\x15P\xda0*:0\xaa\xac=\x9b\x19%\xfb[\xe4\xe5\x9bm\xcc\xce\x18\xeb\xb6\x04\x0e\x9d\xb9%U\x84ZV\x06\xda\xd7-\x92^\\QzQ\x07\xe0\x15e>\xdf\xcc\x08\x1f\xdc\x15\n\x02\xb3<\xab6\xeb\xf6\xb3\x8a\xcc6eR\xdf\x88g\x9f?\x83\xbf\x9a^\x9d\xa1\xb1\xdb\xd5Y\x08s\xb6\xf3V\xba\x0ca\xddB\x01\xb3A\xc6f\xa5\x909v\xa64\xed\xd0\xbf\xb97\xa0\x03\xc8\x80\x83m\xcd\x14\xf5N\xf5\x81{\x18\x98\x14\xe1\xbar\x03G\\Ab\x9f'X3pt\x8b\\\xa0\x8b\x10\x9d\x16(\xd1M\x1b\xa2;\x0f\x9e\xc2\x8eO\xa7\xe8_\xc0\x11\x9cG\x19\xf9T\xfbA\x10\xcd\xf3\x8c\x04O\xf9\xe4]\xc1%\n\xed\x8f\xb2z\x17,\x00\xa8\xdb\xbcD\x91#>\xa1(um'3\xdd\xc2n\x90N\xce\xc6\x8eZ\x94\xde.\xa3\x0c\xcf\xc9\xb6\xad\x01\x87\xc7\xa7\x91h\xa4+\xa7#QKW\x9e\x8fD7]\x19\x87\x82\xba\"\x17\xf92D\xa7\x95\x0eZ^\xd3\xe5\xa3\x98I\xa1\xe6_\xc2\x11<\xebb\xe6'\x8e\x99;\xf6\xab\x981\xe5\x8a\x87\"\xbf\xdc\x06uu\x85bb\x87\xd7v>\xc5mE\xde\x1be\x1e\x81\xb7\x19*p\xc4\\\n\xc4\xbcq\xfe\xd4q\x9d\xac\xb5\xb6\x150n\xfdJ\x0f\x1b\x8d\xf9K\xef\x89<\x89T\x85\x08G\x8e\xceMQ_E\xbb\xe0J\xd8\x87\xdf\xe9T\xb4\x85P\xd1\xf6\x82Z\x03\xf7\x17\xb6k(\xf8\xf0\x98\x07\xa4b\x11\xa1\\\x15rs\x08\x8d\x06\xab\xdf\xe9jL\xa7D\xb9w\xfc\xfb\xc7\xeb\xb3\x07\xcb\x84]\xfe\x0d\x80u\x9c\xe9\xc1\xe3'\x036\x16\xffo\x98\x1e\xdc\xcd\xd5s\x9a\xc7\xf3S\xa3\xc2\xb0\x94\x9c3\xd3R\xd0\xe6\x0d\xe9\xdb\xf5\xc9\xc6\xe4\xdb\xcb \x90(\xbf43\xf2\x9b2\xa5U6e\xca\\\xc5\x8c\x15\xab:\xae7\x15\xe6$\xc1\xbfl5Y\x8aPQ\x9b\xfe2\x7f\xb1\"\xf1\x9c\x94\xd5\x04\x12\x9fD\xfc\x87\x81B\xe8\x1b\x89\xe1\x08r\xf1\xe5\xd4\xe3y\x84\xee\xd3\x9d\xe7\x19\xf4\x10\x1b\xccC\xf9\xf93\x9c\xfb\xb1\xd9\x0f\xca\xdf\xa0kKM>\xb1\xf8\xe5\x17i~\xc1\x14X\x17\xe8'\x1e\x88\xcd\x1c\xd5+\x929(\xb9)\xc9\xceY{hH\x97G\xf3\xb8\x8e\xd9\xdf\x9b\xc0r\x00]\xf5\"\x01;(\xea\x84\xa63.\x8a4\x99\xa1\x02\xe9\xc1\xcf\x15\x8bO\xc1\\w\xfer\xfa\xf6MT\xc4eE|LA\xb4l\x8c>\xe3\x05\xf91\x8f\xe7C\x0c\xf4-\x1d\x85\x0e\x84\xa2\xe4\x98\x01\x01\x8e(\x85\xc8\xa3\xfc\xe2g0j\xf5\x9dX\x83\x9c\x8d\xf5\x84\xdbl\xeb\xb9\x01\xfd\xe9\xc3a\x91\xf7\xa9\x83\x9b\xe1B2\x9cT\xaaO\x19\xf6\x8c\x94a\xafM\x19\xf6\x18e\xd0\xe3\xaa\xce\xbf\x04\x94\xa5\x15\xe3SC\x8e\x10\xa1\xd6e\xf6@:\x1d\xaf\xf9r@ \xba9\xcd\xe8@\x85\xbf \x9a\xfaGI\xc5\x1d\xa1\xa6\xd9Y\x00\xc7\xac\xd2\x04\xa6\xf4\xff\xb3\x10\x7f\n\xb9\x8b\xe2\x93\xf0U\xd1@\x1d\xf1\xb7\x1b,s\xc0ld\xe0\xa4\xd0Gfy\x99\xf0#C\xc4\x89\x13\xcfd\x9c\xd1\xa3\xadl\xaeVm\xfb\x0dS\xe0\x17\x12\x15I\xf1\xa5\x06,\xcdM\xe3,Oy\xd6\x9a\x97\x98\xf0\xcc||\x90(N\xd3\xfc\xfad]\xd47\x18;\xd8|||\xd9\xcc\x8fE\xf2\x1dJ\x1f\xf5WX\xdd\x04@es\xfdb\xc8\xc8\x1f\xfb9\xcb\xdfp\xc1\xa2k\xa8 \xcd\xe5\xd7y\xff\xe3+\x91~'\x9b\xe5s\xf2\xd3\xfbW\x86\x80P\xa0p\x92\xa8\xcdM\xb8j\xe8\xa6\x99]\x1eX\x1dma\xd0\xfc\x16l\x81\x19\x95\xcf;\xf7\xe4:\xee0\x08\xcdW\xbe\xb9m\xa9rfd\xd4\xde\xbf8C\x97G\x18\xfe\x1d\x8e!\x8f\xd6q\xe1'A\xf4s\x9ed\xbe\x17zt\xf3z\xebMZ'\x0c}\xd4J0\xe9\xd4\xd7\x03`V]M\xc0\x0b\x0d\x06\x99\x15\xbe\xfd\x1f\x07{\x86\xf75{\xbf\xf7\xc4\xf0\x9en\xbfj\x02\xdeg\xaf\x0fP\xa4^\x94\xe9\xc0\x14\xd0\x9e\xe7\xb4M\xab\xe1{\xe0\xceU#\xda\x02\xce73U'7Dx\x85\xd1\xd64\x1b\xb8>\xa1\x9bvg\xa7\x8c\xaa\xcb\xa48\xa1\x88\x9ed\xcba\xab\x82\x9c\x87\xeb\xefo\x0bc\x88V\xe0l\x95\x1d\x83EQ9\xf6/\xa2)\xc6^ny\xe2\xbf\x9d6\x82v\xa3Q\x88\"6\xf84\xa1\xc7\xcf\xc6\x8f\x8d\xeeJ\xa2pc\x1fC\x1a\xd2\x10\xf2 \xd4\x05v\x0e)Oo$0\xeb\x86\x9dB\xa90Y\xa0\xe1\x91~\x14l\x85\xcc\x0e\x0eI6Of\x14\xa3u\xf1R\xbb9o`\x00\x8f\xd3\xdf\x8e\x95Aq\xc3*\xf9\x08\xee\xd4\xf3\xd0\x9d\\[=\xc7\xd6\xfe\xb1!\xa5!\x8203\xa9Y\xe4\xe5Z\x7f\xd0\x0c\x86fM\xfb\xfb9 \xc6X\xb3@\x83\x04\xb1\x9fL\xc9\x19;)\x07\x10|`3\x168\x15\x83\x8c\xc3d\x12\xf9\xf29\x7f\xf9\x01_\x9a\xed;P\xe8{\x80\xf4\xbb\x88\xcb\xfa\xe3\x03\n\xa9\xfbT\"y\x90D5\xa9j\xbf\xb0\x9a|\xf08j\xa6\xf8\x9d\x80J\x04.\x01d\xe4\x1a\xe6\xa1\x06\xa8=\xf6\xd4*\xd6\xb06\xa3\xb8(H6gAu\x92i}\x86\xf6\xbdC\x00\xd6om\xa6\xf4\x94\xe3\xac\xfc\xc40\x1d\x1ez\x98\xe1T\x7f\x07j\x91L\x1bq\x058\xf8V\x98)\xb2*\xd2\xa4\xf6\xbdco\x00\x01\xae\xa0g\x0b\xbc\n\xa1\x1b\x8aB-K\xba\x9b\xa6{\x03G ^ O\xf7\x07j\\\xa0=\x86\x19\x85nl\xf8q\x8e\xe9\x96\x04 db\xe6\xcd\x00\xb2t\x90#\xd7 \x87\xeb\xa6\xe3\x8bu>%f%6e\xab.ZCl\xa8\xf4\xf9PFmP\xa9u?\x0b\xa7(&\x8c3\"\xc4\xb5-\x9d\x8d(\xf2fSG\xb0C\x96\x0c\x08\xcfG\x12\xb0l\xbf{O!\x83\xef\x81<\x85lw7\x10bYC\xb8\x87\xac\x8d\x04gRG\x8b$\xadI9~1\xccZ\xfb[\xc1O\xde3\xb9@@\xd3LI\x8f\x84c\x0fv\xf1(\xf7\xfal\x1d \xa3p\x11BE\x99^}{L\xe1u\x04K\xd8\x85\xeb\xb0\xd9\xd4x\x928\xecj\xed\x94\xbe\xb2\xc1q\x08uT\xad\xf2M:\x7f\x91_gi\x1e\xcf\x9f\xa1Z\x8deg%\xe9\xc2p\xdd.\xed\xc3\xfc\xcc?\xe8eK\xa4Eh\xc5\xf7\x86\x94\xe2Z\xa3\xe6\xb9\xd0\xa7\xeb^\xae\x1a\x8b\xe7\xfe\xcb+\xf1Rc\x0f\xad\xba\x1a\x0b\x9b`\xf9\xec\xcf\xec\x8c\x136\xc1l\x07Ri\xf8m\xf9\xbf\xe9\xea K\xce5)\x97\xe4U\x86\xcf\xde\x96\xb4\x02\x1cA\x8ao\xb8\xc3\xb7C\xc0\x1bh\xd6Zz\xdf\xd8\x11\xdf,\x11\xb2]Y\x7fq3\xda\xfa\xb2E\xad\xfb\xad(B\xf2\xeeg\x90a \xbaK\xab\x9b\x03\xaa\x8c\xf5,2\x08\x82\xaa\x01\xbf_\xf2\xc8\xe85\xfe\x95\xf9\xa4\x97\xa8[6\xd1F}Z\xf9\xe0;\x8d\xc5\xfdZ\xa0\xb5\x169\x97\x02\xc5\xbe\xd5\xbd\xbd\x11\xdf\xf6Ru\x02?\xf5\xe4\xae\xd2\x83\xa3\xed(op\xda\xe8\x83a\x02\x9a\xf4\xee\xdd\x1d\xc0\x8f\"\xdbI \x88?=2\xaf\x14S+y\x94\xad\xe3\xf2RRj f\xae\nUL,!\x17Kn\xa0\x97\x01\xf6\x8d2\xc0~[\x06\xd8?\x1b\x08C(Ng9\xcc\xeb2.\x1c\x0f\x14\x16\x82\xfdi\x00\xd5u\xc2T\xc5QQ\x92+\xe4\x8d3\xf2\xc9\xca6\xce\xe2\x8a\xc0\xded\xb0\x0e\x08\xd3,\x93\x10[\xdb\x84X\x91\xc2\x1e5\x02\x14\x96u@O\x1c\x0c6\xbf\x92\x04\xac\xf9\xfb\xf3gL.\xa7\xdd6q\x10\xc2N\x1c\x95,\xa4\x04\xa6)\x9b\x91\xa2\xce\x07w\xb9Z\x18`\xe0\x08\xf6\x1d\x0d\xb1.J\x12_Zk\xda\xef\x87\xe5\xb5$\xef\xff\x11\x9d~\x7f\x1e\xda\xfb\x17\xb5\xe0\x9a=r[3\x12\xd5{\xcc\x1c\x9fdu\x08\xf4\xe7h8=\xf9u\xc1\xc4\x87\x1c;\x00\xe1\x89\x1d\x08,\xe3lmYjlm\xdfa\x1f(\xa7_<$|\xc6&\xe13\x1c\x96/y8+\xce\x81\x19\xbb\x90<\x9a\xb1\x1f~\xb8\x88\x08z\x92,\xec\x1f\x86\xca\x0ex\x14\x82\x8f\xf9\x1eJ\x8c\xed\x82\x071\x06y\xa1O\xcbt\xf8\"\x0b$\xe0\x1c\x90Q\xb2\xab*2\x8aa<\xa1{]=@|\x16\xaf\xd4\xadw\x07,\xa0[A\xed\x1a HU\xe4YE\xbe\x84\x82\x1c|\xf7\xebn\x8d.\x0598d$\xa47\x13\xa3\x0eP\x14\x84\xdc\xc1\xa1\x1b\xe4HT\xef\xb7\x89\xc8\xfexP=\xfauA\xc5\xc7l\xc9\x0f\xc3\xc0\xe0\x82\xbe\x8c\x8c\x18\x9c\xc3Da\xcd}goN\x82\xe5\xd0\x01\x83\x10$.\x1d;n\x04I\x0b\x0e\x9e\xe0b\x1e\xb0\xbb\xb4\xb8\x9e\xad\xfc\xfd\xc3\xc0\x10\xafFW\x9ai\x1c\xda\xa7\x01w\xb8\xba\xcc\xc4\x8b\x8e\xdd\x01.\x87\x0eh\xce\x1a\xf4s\xae\x94c\x19%J\xc5Z#\x08\xf8\x8f\xe7\xf9\x1c\xc3\xc5\xf2\x9fL]\xc5L@ \x97{Q\xde\xc6G\xf5A\xa8\xbb\x99S\x0b\x1b\xa5\x03\xda \x19\x8b\xf2\xcb\xd1\xeb\xf3\xd0\x02'Q\xeev}\xf0\x16\xd1\x0d\x9c\x89\x0e\x9c\x89\x04'}\x1cv\x93\xcfw\x0b\x82\xf1\xe1\x81\x1d\x8c\x92\x8c\xc6\x17\xe5\xa6\xa8}\x8f=\xf0\xc2^ \xefna]X\xf0 +y$\x9b{#\x86R\xd5y1`\"\xa9\x07\xf9-K\x93\x871S\xa7\xc6o\xa7\xf4\xcc?x\xa2\xd7\xf9i\x02\x18\xdc\xea\xd4D|\xa0v\x85t\x03\\\x16\x92\x10\x07'%![(\x8d\xdbnVB\xa125*{\x06%B>\x98\x07\xfe\xcfU\x9e}\xfe\xb4N?\xdf\xc4\xeb\xf43\xa6\x00\xfdx\xf1\x80\xf1\\_|\xb9\xd3\x8d\x10\xb2\xad9\xe1\xc3\xfd\xffxk\xc2\x81\xc1\xb4/1I\xa0\x06Q\xfe\x1eCi\xe2\xd5\x97\xf7\x00\x83\xa0\xe0M\xba]F\x16\xe6\x04\x99`\x02\xddkTS\xe3\xb3\x01\x13)#\xa3\x85\xbaR\xba9\xd8\xbc\x9b\x00\xcfti\xce\x95\xa5\x19GZ5S\x991+g\x9d9\xaa#i]\x0c3\x19\xeeW\xa4\xfc\x0b\x85\xf1\xd2\x8d\xcaiL\x85\x9d\xf1\x19i\x94ua6\xca2\x0db\xee0\x08Q\xb9e&\xeb\xd4\xfaJ\xdf:zAY\xf6\xb8\x88\x9b4x!\xe1\xc5\xf3\xb9\xb0\x8a\xff\xfc\x99\xb2#\xeb\xfc\x8a\xb4\x9f0\x06\xc5\x10\x99\xc6\xb8/;\xc6Z\xa6 ^\x0d\x82\x0f\xa7\xff\xf93\xd0\xb9\"$\xd7\x9b:\x16\x90D\xc9\xfb\xc6\xd1\xd4x=\xd8\xcf\x15o\xdfo\xe0AA\xd7\x07\x80|\x8a\xb7\x16\xbag/\x08)\x9a\xe7n8\xb4t\xc0\xa1\xaf\x8e\xc87Fcl\xb3\x87\x06\x1f\xe1\xa9\xbc\xd6Z\x92\x1aM\xaf\x7f\xb8y\x97'\x19\xa5\x08\xfd\x18\xb8\x00.n\x0f\x82\xbcw\xb2\x86\x86\xda\x88\xd1\xbf3\xff\xbas\xa3\x84\xbe\xecz1t\xeb\x7f\xce_\x1ej\x0d\x06\xae\x87\xec\x10N\xc4\xa7\xda\xdb\xdcO\xe26W\xf7\xf2T|\xaa\xb5~x>d\xc3p)>\xd5:\x0c>\x13o\x1f\xf7\x8d\x18\x9a+\xdc>4\xe3\xf9|2,'\x8b2(3\x81\x90\x9b\xe8>\x1d0\x1c\x1c\x92\x9b@\x91\x9d\xb4\x154\x08\xd6o\x89\x93\x85 $\xbaw\x94\x8a\xde\xe9|9a\xb6Ny\xfb !\xf5\xba\xab1S\xba\xe8\x1a'\x8a8\x899\x19\xca\x86\xa3\xe5\xdc\x06\xdd %\xad\xb7!L\x87\xb6\xa3\x89\x9a\x9b\x0e\x1ae=\xdb\x8a\x0b\xdd\x9a\xdaV\xf1\xaa!\xb6\xe6\x11f\xcc\xeb\xf85\xa9c\x1c\x1d\xa9\x00\x83}\xadI\x8d\xaa\xcd\xb5_3\xd5B\xc7\x8f\\\xd0\xfc\xcf\x9f[xEk^\xe9)\xd7U\xc8\x9b\x15\xe9l\xafl00\x9e\x85\xf5Y\x10\xde\xf1\xc8m\xc0\\v\x0e\xc7a<\xbb\xd0\x83`)A0\x1ee\x14\x06\xe0\xc2\xc8\x00h\x9f\x8a\xdd\xd7{\xa9a\xcf\x8a\xb8$Y\x8d\xa1\xba5<\xda\x10\x83\xd6\xf1\xf0\xac\xed\xf1\xaa\x95\x84\x9aG\x98B\x17\xf1\x95]\x9b0\xbf\x97\x92\xf9\xbd\x18aE\xfbE\x9f\x18\xd4\xc3\xa2s\xb0\xa5O\xf1\xba\xef\xfd\xa3\x01\xc6\"\x8d\xeb\x9ad\x13\xd0\x04}Yl\xd2\xf4\xe6\x8d\x08g\x84s\x1e\xe1;\xbe\xf0g~\xea\x93\xae\xf6\x1a\xf4\xe3\xc8:\xddh<1\x93\xea]\x99\xaf\x93\x8a\x8c\x18D\xc1\xb5\x86s\x9f`,\x14\xa7\xb1p\xcf\xae7\xe4\xda\x117\x86\xe3\xa3\xf0\xa1\xe0}m\xa5U\xb5\x01\xb8\xa8\xdb`\x08\xcf\xc1U\xc4j&\xf7\xaeL\xd6I\x9d8kA\xdcg\xb9\xf9\xcdg\x99T\x7f\xa9\xf2\x8c\xcb`+\xdd\xfb\xe7L\xde\xed\x89i\x16\x84\x92jn!/\x9b\xb4\xdc`\x1a\x18\xefQ\xe3\x1b\x9fT\xaf\xb9&b\x02W\xba\xd7\xcf\xe6s\\\xb0\xa6\xdaZW\xed\x7f\x92\x8c\x94q\x9d\x97#\xe6\xf5\\\x92d\xe5\xfb\x97\xcd\xd7ns\x13\x1fL@\x93P \xa9\x18\xdb=\x81B\xf7\xf2\x84\xe5\xaeu\x1eq+x\n~\xdc\x1fc\xeb \x95\xdf\x15C\x1f\xa9\x0c\xfd\x9dRap#t\xa3\x8e}A\xae\xb4'\xdb~\xba?\x94fm\xf8\xd3'{\x03\x86M\xb6O\xb7\xcebw\xb0\xf7\x9d\xf9\xd3\xff`s*q\xbfw\x07\xfeJz>\x8c\xe5o\xe8;\xae\xe8k\x97\xbcv\xcfF]_\x9d\x850\xb8N\xea\xd5\xf3\x92\xccIV'qZ\xc11xI6K7s\x82&`U\xbc&\xf7Y\x9cx\x8d+\xb6`\x03\xc4z\xdb\x14yd@hB\xe7\xbe\x81Pm\"p\x9d9\xbd&`G]XML\x01\xecX\xf5\x1e\xb0\x8cyTA\x8d\x177,\xfc=\x9b\xd1\xb6&\x9a\xd0g\xc6\xcf\x06\xd2\x1b\xcd\x9a\xe5\x99h\"\x88\x01\x8aw\xaea\xe0@\x95c/\xf2\xb9>x\xa7.\xcb\xc9\xef\xcc\xbf~\x85\xdb\xbdd\xe8\xb2,\x1e\xf0\xe9]\xc7\x97,\xb7\xf2_N\xdf\xbe\x11N\xbd\xb3\x94\xc4\xe5\xf3x\xb6\"6\xbb\xd6**\xd2\xcd2\xc9\xaa\xa8$\x8bJ\xf9\xb0cB|\xeb\x9aQ\x1eT\xc2R\x9b\x17J\x10\x97z\x95\x18\x92\x99\x9c\xa0X\xd8\x19\xe0<\x9f\xe1\xf0X\x14]\x12\x84\xdd\x19,TX\xf8\xd7C\xeae\xddf2\x84;\x01\xd3f\xba0\xe0\x97~JB\x8c\x9a\xb6\x07m\xd0i\n\xeb \x01N\xd5\xb0cI\x81\x931MM\xd3X\x13\xf2>\x08\xf5\xdf\xad\xf5\xdf1\x9cN\x08~\xc7\x8f.$\xec\x85\xb6~\x9c\xa6o\x17A\xd8\x8d\xf9n\x06\xb55k\x9b\xbc\x11\x1a\xa6<\x17qE^\xe4\xb3 \x9clCi\xf8\xf0\x07IfW[\xa1\xe5\xbdE\xa1\x82\xfe\x8b\xa4\x9aQ1$c\xec\xaa\x86\xebmj\xf3\xd5y\x1d\xcf\xca\\\xcb?\x8b\xb2\xce\xe7$\x15\x94\x86W\xefGE\x01\x854\x9e\xbb\xe4E\x86\x8eos\xdc\xac]b\xf4mv\xd5\x1b&\xdb\xb8\x1d\x8b\xf2\xa5\xee\xc7\xa2\xb8\xba!\x8b\"\xcf\x8a\x9e\x07\x87\xc9\x16\xb4[\x98\xeb\xa0[\x8fc\x1c:D\x91#\xb48v\x882\xac\xf2\xe6\x8e\x1e\xe6f\xb4>\x1b\xa283D\x9d\x0f\x9c}8D1(\xd2\xfd\x00&0\xeb%\x13\xb3\x9d\xe6\xa0\x90^\xc2N\x083\x8b9\x94pl1\x1cd\x8bE\x92\xa2{W\xff~\xde\xc4\x8fT(\x8c\xbe\xee\xaa\x1d\xb0\x0b3\x17\x19R\xdc\xb1]\xd2\xa3E\xfa\xcak9\xc66}\xd1\xd7^\xf2\xa6U\xc2\xa5\xaf\x89\xf1\xe3\x9dy\xf9\x0b^\xdb\x91\x97?g\xebr\x99\x14B\x97\x87<\xa7\xbe\xf25\x8b\xe7U\xd7\x1a\x19\x1d\xb8\xc1\x13\x89\xf8Ibd\xfai\xad\x13tc\x0e\xb1E\xbc\xd5\xbe\xa6\xffl\x04\x9d\x0b1fN\xed\x97\x18\x91\xd1\xcck\x8c\xe03\x1cy\x8c\xdb\xc0?\xe1t\xbf\x9b\xfa\xbd\xcfZn8\xf7\xa8\xb5\xb4\xe2\xd2\xfc\xbe\xe6\x15K\xbbY\x19Rnf\xfe\xd6\xba\x83\x83\xbd\xad\x93\xbb?\xd9Z\xfe\xdfZ\xfa\x1f\x18\xabU\xf6W\xdf\xdc\xb9\x10a\xe2\xc8\x0d\xfaOy\xa2\x9b\xd9\x03TAE\xb3\xb8\xa87%9\xad\xe3\xd9\xe5\x872\x9e\x1186\xbd\xe1\x04\x9d\xfe\x1b\xcd\xf2\xac\xaa\xcb\xcd\x0c\xdd\xdf'\xecYEkR^C\xfan\x06\xec\x99\xe5\xaaA\x1fx+k\x05\xde*Y\xe0\xad\x92\x05\xde*ww\x03\xc8\xa6e;\xf0Vi\xe0\xacqpkRU\xf1\x92`\xae\xc6\xbd\xb3\x90\x99\xd0\xd4\xad\x93J\xa7l7\x11\x8c\xac\xb9\x8bW\x9dUC\xf5\x05\xcf\xedC\x8f`\xf5\xa9\x02:\xfai\xd8q\xa8\x1a\xad\xf5\xfb\xed\xf12\xa9^\x96\x84\xa47o\xe25\xb1\xe7w\x90\x86\xe4S\xd2\xf2\xc7\xd1\xae\x1d;\xc4\xa5\x0b\x9d\x91\x80\x97Q\x92\xcd\xc9\xa7\xb7\x0b\xca\xa5\xfc \xee\xefS\xda\x9d\xcb\x87Y\xf30q\x0d=)WZ4BX#}$\xb1\x12e\xf4i\xf2\x1a\xb9K\x17M?\xc7:\xb80 \x1dX\xe5\x85\xa0f5\x0b\xc1\x13\xe7\x05\xfe\x10\xf9\xf8^\xb4\xbf\x98\x89\x90\xb4\xd5\x83j\xb6\"\xeb\xb8\xfb\xb4\xd5\x88\xf2\xbc\xdd\x95\xda\x0c\xef\xe8\x946\xa7\x1f{\x82cg\xfd= \x9f\xe2u\x91\x12\xefl\x0c\xc6v\xc8\xf7\xc3/ \xc3\xadW\xff\x96*X$G\xc6\xedp\x07\n\xda\xfe6B\xf3\x86~03\n\x87\x8cG\xf9\xc3`\xef\x8c\x9c\xed \xc5T\xef3r%\x91>\xb9F\xab\x8f~'\x1d!TP\xdd~E\xb1g\x90r\x97\xa4\xca\xd3+\xe2w\xb5\x82\x96}[G\xf3\xa4\x8a/R\xc6]-\xe2\x19\xc1\x00Q\xdd1\x84\x18]\xfb\x92<+\x92\xeaC\xbc\x94\xd9C\xfd:\xd0G)\x1e\xa2A\xb34!\x99\\\xc1Nt\xb7\xdfL\xcbxh\xd62\xfah\xed\xffm\x80\x91\xe4\x1e\x05\xba\x8a\x82\xa1\xd4\xa7\xf3\xa9\xc4[\xad\xb7A\x8a\xbb\xf9;\x03SY\xfa\xa9!\x8cb\xe6\xef?2\x06Q\\\x0cEP\xd4\x86\xb0[17\xf9'\x86\x00\x8a\x99\xff\xad\x8e#^s\xbe\xb7\x0d\xd8\x1ce\x0d48\x94\x82A\xae\x06CL\xe5\x8f\xe8\"\xc9\xe6~\xb6I\xd3\x90\x7f\x16\xf0X\x1f\x14\x9f1m\xad\xd2\x04\x7f|\xba\xb9\xa8KB\xdf\xce\xd5\xb7\xe4\x13\x99mj\xb4\xd0\x11\x7f\xd3\xc7\x9d\x18\x8fi\xebA\xabB\x13\xf01\xed=\xa4\x15\xdbJd\xe5g\xc82\x85\xb0\xb3\xe1\x87M\x92\xf2f\xae\xa2w\xcf\xde?{}\xf2\xe1\xe4\xfd\xf9\x0f?\xbd\xfa\xf1\xc5\xc9\xfbS\xd3f\x82#Xi_\xd0\x0f.h\x9b\xef\x99\xd4\x84\xed\xaa\x0f\x10r$-X\x9f\xfd\xdd\x90\x17\xaf\xe6\x13Xc\xe2\xfb\xf6\x86\xc0q+-\xc8\xac\xd1\xe2\xf1\xffY\xd8\x17\xfe\x00\x9d\xfc\x98 \xc5\xfe4\x99\x8e\xdao [\x14\xa5\xbd\xcbm\x17o*n\x0d \x84`\x1d(.\xe8y4\x96fe/l\xf4R\xc8\xc3xt\xef{\x83\xbe\xbb\x94\x08WRi\xcf\x02\x88\xd7\x06\xed/\x89Vy\x85\xbe\xba>\xff\xf3\x082\xfc#@ 3I\x80\xbf\x17\xbf\x8e`\xca\xc5\xdcY\x9e\xca\xe8(\xde\x84\x8a\x13^p\x86_^\xc4\x15y\x17\xd7+\xfe\xa9\xfcy\x04T\xba\xb3/\x80\xaa\x03\xc9\xc7\n\xca\x16e\xd3\xde\x80\xd01\xfc\xe9\xfe\x17\x98\xb8l\xadW{\xb2\xf7h\xdbO\x0f\x1fn\xad\x1f{\xb27` \xf4\xef%\x9a\xa9\xbf\xee\x9c\x1bG\x9bdv\x01\x89\xb8I \xd5\xeb\xb8\x18\x08.\x9e\xc3@\x84\xf0d\xc8\x1dX\x1a\x0chu\xbe\x9b![\x83j\xc8W8\x15\xedj\x87$\x82\xa1\x1fj\x9d\x85\x17C\x9e\xc42C\xa86h\xb4\xe0\xe5\x0f\xf6\x86\xdc\x81\x87Y2E\x14\xbd\xf6I@E\xc1\x02\x8d\xb6\xad\xaa\x1a\x11n\xfdP+5\x89x\xeb\xda\x81\x8b8\xda\x87\xda\xb7\"\x8e\xf6Cm\xc3\"\x8e\xf6C\xed2 o\xf0\x87Z\xafm\xe1\x0e\xfeP\xeb\x98\xed\x94\x08A\xb9\x00\x1e<\x80;\xf9\xb5\x98\x98K\x82^.\x12\xf6b\x98\xcdd,\x92g\xf1'\x99\x93\x8b\xcd\xf2GrE(\xe7\x98d\x8b\xdcR_\xde\xfaO-\xael\xac\xe2\x9f\x93\xaa\xce\xcb\x1b\xb3\xd5\x9a(\x8cy\xb07+|s\x1d\xaa\x16\xcc:|.Y:\xdb\x07U\x1dSi\xc46\xd4\xc2\xb5\xbd\xc6\x0c\xc3\xd2\"\xaf\xf8\xa1$d\x82\x9b\xea\xdc,4\xa9\xa5Z\xe5\xd7/\xe8\x02\x9a31\x89\x12\xa7\xa93\x1c\xd8\xd2Q2M\xa5 FY-h\x91&\x17\xafI\xbd\xca\xe7\xd5\xa4\x8b\xab\x9dd0\x14u\x035\x10\xbcu\xdc\x1d\xc6\\\x93RJ\x14\xca\xc1\x04\xfc\x06eI$\xb7w\xbe$5S\x16\xf0\xceE\x05n\xf3\xad\xd6\xe3\x8f\xfa\xd5Wq\xf5~\x93\xc9\xaa\xecg\xbf\xdau\x19\x17\x05\x99\xbfk\xce&\xfaT\x98\xfa\xac\xe3\xc2\x97\xd5X\x1d\xa5\x89@\x84\xe4\x91\xc0\x89\x1a\x13j\xd1\x01\xc7>fD\xd4T\x8c\xe7s\x7fz\x166\x1cp`\xf9\x80\xe3\\\xf3\x11\x7f \xbf\xdb\x14\xf3\xb8&\x1c\xec\xbe\xda\x94\xde\xd2`\xd0\x11\x87\"\xc1\xbcA\x02\x12\xc2\xd4L\xbd.\xc9\xcd\x04<\xa4L\x03h\xc7Y\x03\xbb\xee@\x14\xe4\xef\xe94\x1a\x9a\xc7\x8c\xf5m\x1f\x82z\x9bV\x87Z-1\xbbBc\x17j\x19\xaa\x8c\x8f!\x83\xfb\xb0\x0f\x13\xd8\x0bBd?\xf6\x9fB\x0e\xdfC\xf6\x14\xf2\xdd\xdd\x00\xcai\x8e73\xadK\xb6\xdc\xc1%\x17\xdd\xbfy\x94\x95 J\xf3e\x13\x86Jc\xbd\xa1\x16\xb39\x8b\xc1Fd\xe8\x90a\xcbtE\xca\x8b\xbc\x1a\x8a\x04\xb1\xd5B\xc9v\x99\xf3_{\xd9l\x0d\xc0\xbf\xcf\x82M\xbd)\x06\xce\x84]\xf0\xce(C\x7ff\x8b\xca&\xcaWX\xcb\x86*\x8dYNKx\x05P\x04dAE\\lk\xd4\x827\xb9\x83*\x13Qr\x83\x08\xd0-B\xfa\x99*\xf4\x99\x9ex\x98F\xb8d\xd70h\xf4\xde\xab\x10\xc0\x04t\x04\xda\xc7\xb0m9\xbf\xc9Qk0\xe9G\xc4\xab\xca\xad\xdcu\xb7\\m\x93P[\x14>\xd1\x9d^\x889\xcc\xc5G\xaeHy3\xce\xb1Y-R\x86<\xe2I\x98\x9d\xbe4$\x1bkU\xb1o*\xde\xb7T\xd4tL-K?\x0f\xc1\x988\xb1[0\x16D\x08\xb3\x10\x16!\x14\xe8\x14\xbf\na\x8d\xee\xab7\xf6\xb1\x80n\x85p\x1a\xc2\xf3\x10.Cx\x16\xc2\xdb\x10\xde\xb9A\xbe[,+\x11o;~\xd0\xadL,V&\xdeje\xbae\xdb\x95\xea\x16\xcch\xdd\xa7A\xf9\xa8\x00\x16C%\x96\xf9r\xb6[\xa4nq\x0fk1T\xec!*l\x85\xa5b\xb8$7x\xd3\xbf\x98.T#\x9a;\x07\xde\xc3\xff,\xe0\xf1\x9d\xd7L\x0f\xe3D\xe3\xd9\xe9\xa3>\xf9\x92\xdc \x0d1%.u-,\xe2\xff\x97o\x93f\xa4\x8f\xbfl@\xe0\x96\x11\xc4V\\\x93H\xd9\n\x9a\x89)\x98\x1b\xa2\xe2m1\x9d\x9f\x85\xa8G[H\xab+\xd5l*\x08Q\x8d\xa6>\xc2\x93\x1dC\xa9\xcc\xf1\xcfu\x88\x87B\xa2\x0dD1\x9b\xe6\xd17\xdf\x94dq\xc6\xb2\x95\xee\xec\x85\xa8=\xdb\xd9gf\xbf\"\xed\x91\xa4\x99\xfb\x0fC\xb4\x0d\xee\xb8\xbe\xd0\x9fU\xf3\xd3\x98 \xd3\xb58\xa7C\xb2\x15J\x1c0\xce\xc5'8\x82\x13\xc4\x1d?\x08\xa2y\x9e91r.Eb\xe4\xe1\x7f\x18m\xc0\xe8&p\x04\x9fD\x10\xf9\xe7p\x04\xf9\xf4\xf4,\xc4\xf8\x95\x0b!\xf7\x9c\x06!\x86\xac\xd4\x9c^\xcf\x83\x10\xdeb\x96\x17\xc4\xb2\x10\x06\xd3\xfa\x8e)\xf1\xd8\x84H\xb6\xf2\xaf\x04\xf5\x9dg\xff\x0d&K\x91^W:\xb2\xf6\x16\xe5\xb6\xd9\xf4\xed\x19\xd2\xb4\x80Y\xb8\xa5d\x19\xd7\xe4\xff$$\x9d\xfb\xa5\xcf\xd8\xd6\"\x08\xc1\xab\xf7\xbc\x10\x0e\x1e\xdd\x05\xcdr\xc9\x81e+\x18x\x9aJ{\xa7,d\x0c=\x83\xef\x1c\x1f\x0e-)\xb8\\\xcb\xbf\n>P\xa0\xbd\xc3\xcc\x06\x19\x8b\xd0\x96a$\xbbw\xff\x0d8K\xe9r\x80\x87\xfb\n\x0b\xf8\x1c%\xbcK\xcc\xddZ\xdc\xc5\xfe8tt\x15\x1c*\x82Q\x89\x9b\xf4\x8b_62\xb8CV\xf0\xf0Ny\\\xc7\xcc\xaaC\xe5\xce&v\x07\x94M\xb2\x91\x87\x98\xb3\x153\x0b\xc6\"c\xde\xc3\x80\xf3\x9e{\x8c\xf7\x8c\xadi\x02m\x85\xc9\x1cw \x9b\xcbq?Ty\xe1\x87\xfb!\xec\\P2s\x12\xf1]\xa4\xfc\xddM\xc05\xb68\xa5Hs)\x9426c>\x0ca\xe7\xfc\xce\x89\xe2\xc3;\xd8\x81\xf0/D\x14Y\xde\xbd\xeb/\x9b\x14[\xc1;\xd86\x92D/\x92,\xa9V\xfe\xc3\xc3;\xc1-\x87D\x89\xb6\xd2\x1b\xd9\xde\x9d\x8c\xec\xf1\x97\x8dl\x1b?sS\x913t\xf4?7\x95\xedp\xf26\x84\xd8\x9e\x98\xd0V\xa6Tj\xa7$\x97\x92\xaf\x87\x8f\x1dB\x1a\x9b\xca\x94\xd2\xbc\x10\xa9\xc8\xc3\xef\xdc\xee\x0e\xba\xc5\x10\x15r\xa8\xdc\xb2\xc4\xf1\x9d\x8b\x83\x9b D\x9b+\x0c\xc9\xcb\xcf\x8d\x82\xeb.\xe6\x8a\xeeBj\xe2\x1f\x852f\xac\xa2\xba\xc8uw\xf8\xdd8mc\xf5\x19\x88\x81[`1\xa5\xd5\x18\x84x\x8d\x1e\x02w\xa1\xae(%\x97\xb4\xa5zb;\x9a<\x1e\xdf\xf9N[\xc2\x11\xac\x85\xc6\xa1\xec\x88m7\xfeR\xbcZ\xf28\xa3K)\xc1\xed\xefo\xb3J\xfb[p\xa4\x02\xdd$l\xb7\xd0En\xc1\x97\xb1\xf1n\xc1`\xcaq\x1el\xc1Pn=\xd0-N>\xb9W\xf7\x1fQ\xe8\xb2\xd4\xd3\x9cA|\x14\xf0\xfd\xbd\xc7\xf6w9\x9a?d\x12\xfa\x16\xfc\xa0\x1c\xd6\x81JO\x0e(\xff\xb7\xa0<\xdfJ\xe1\xffV[\xf2\x7f\xce\x99\xc4\xbb\x85%3\x16c\xa2\xfc\xdd\xd6\xf7}\xe5\x97j\x8b~-Z\xc1\xf8\xb3\xf9\xb8An\xad\xa0\x91\xee\x8c\x9c\xcb9\x18\xcb\x7f9\xe73\xef\x96^\xcfc\xf9+\xd6\xf3\xc8\x93\xe8K\xf8'9\xe2\x91\xfc\x92\x1b\x0e\xdc\x86P\x8e\xe7\x87\xa6\x8fB$(t\xf7\x1e\x8ca\x7f\xa6\x07\xc8\xee\xd0Mu\xe0\xc8\xee8\xb07\x16k\x8a[\x9f\x04}\x03\xe2\x9c\x99\x1d\x96\x81\xcd\x8a\x18\xa4=\xe8\x9bxM&\xc0\xa3.|\xfe<\x14~Q\x94V\xe8Y\x95!\x92\x8f\xfd\xdc2\xfa\xd1Q\x8d\xecVN\x94(\x8d\xb6r\xb2\xd1@\xbbw\x9b(\x8aE\xe4\xaam\x16\xdb1\x1eU\xbc?\x9c\xcc\n\xa4\xf7\xd6\x92\xd4\x82\xd3\xac^\xe6%k\xce\xaf\xd5\x8c\xae\xbf\x0d\xd0U\x83\xec;\x84\xbd4\xec\xecX|\xb72\xd8J\xc9K`\xa1\x0c\xb9\xd2\xfb\xcc-u\xa7Z$\xe8q\xe8\x16\xe0~\x05\xe8. \xc7hno?\x02\xb8\xd6\xf9\xa9Q\x13\"\xd9\x11\xa5\x06>\xb1\x1c\x1f\xaa\xd7n\xcb\x1f`Z\xf3\xfc3_\x11\x14\xef7\xd9\xf3|\x93\x0de\xb0\x1a\x0d\x0buB]\x98\xfbDl\xb0\xaf8)\xde\xd7\x87d\xc8 \x7f\xf4\xb4\xf4K\xdc\xcc\xcbm\x951\xe2\xcf\xb4V\xedeX\xf2\xaa\xaf\x08\x0fA\xe7^es\xf2\xe9W\x03\xc9\x87\xa4\xc0\xe4\xcbj\xe7N0\xf2\xb2\xcd\xfa\x82\x94\x1e\xec4\xbe\xd9p\x0c\xf7\xf7\xc1\x94&\x0d\xee\x04Lt\xb7\xde%t$\xbdkX\x83\xbb\x1f=w@\xd8\x96\xae9\xd8\xc8\xb6\xcc\x92\xc7\x916_C\xd4\xb2\xb3\xb6\xbf\x87\xf2\x9c\xa7TG\x1f\x8c\xa1x\x91_\x08+v\x80}E(\x0d\x03\xa5a\xf1\xda\xe9;\xe8f\xe1y&F\x1e\xach\x8d\xd7\x0b\xec\x1f@\xc6\xbd\xcd\x19Dm\x8bE\x0bf\xd8\x19NY\xa1\x16\xb4\x9b\xd0\x1aqKV\x025\x82\x19sK\xf0\xbb+\x00\xde\xff\xcck\x88!\xcb\xb3\xfb,\x0f0\xf3\x1b\xf3Bp\x19-\xf0!d\x91\xf4\xf1b\xb1\x83\x1b?.1\xf5\xb0\xc5Ys\x1e\xcb'2=\x91\xf0\xd5\xec\xb19\xcd\xf7l\"\xad\xf7\x1fV$s\x82+h\x8cM\xd5\\\x1a\x1a\x88U\xd2\xcd\xca'\\\xed&\x86\xbb]\x7f\xe2\x14\xd0\xf4\xc5\x96E\xb2\xc3\xba\xcc\x15\xdd\xe2\x96\x93D-\xfd\x8c\xc7]\xfc\xb463,\xb0~\x0d\x8e\xbc\x03\x991D\xc3\x06\x97v\xe6\xebvL\x16\xb1\xd2hO\xd1qJP^!\x19\xd5\x19\xe3\x88Z\\\xf5\xae\xc8\xb4\xbf\xdc6xdA$q\xba+\xfesM\xe2)\xe6BW\xc75\xc1\xf0\xbev\x14p\x0c\x1ebY\xe1\xe1\x11\xb3\xc0\x14\xd8\xaet\x81mvp3dJ\xa7\xbf\x02\xb2\xb0\\\xc6\xdb\npV\x84iq[]:\xd5\xc4\x07\xb4\x81\xe8{\xd8\x13!n8U\xfeP&d\x0eu\xce\xf3;C\xdc\xf6\n\x86z\x15\xd7\x90T\xd9\x1fj\xa8W\xa4$;\x9e\x0c\xb7\xd9\x1dFU\xa4 \x95\x18C\xd8\xff\n\x00\xee\x11\xdf\xaf\x05^'>\xb5\xd9c\xfc\xafN\x14\x19''!\x11eN\xb7M]\xb6\x154S\xcd\xac\x95m\xfb\x070\xbe\x81\x06\x8d\xd9\xfe\xe9x\xbb\xda\xdc(\x03~\x890\x0e \xee\xfdkB\xa5\xaa\xe5k\x1c\x07\xaa\xd2h\x0c\xee90\x90\x8d\x97\x18\xa0\xe6p/\xd4\x0bBH\xe1\x04\x15h\xa8\x1c\x93'\x05\x95k\x9eW\xb8\x1f-\x01\xd8\xbf\x00\x1c\xcf7eI\xb2\xad\xa0\xe2\x08\x11!w\xe8\xb4u\xfc\x15\x1f\x04\x7f\xfa\x95tG\xfd\xfeG\xccu\x14\xf5\x89\xf4\x92\xbb\x95\xb6\x9b\x00\xe6\xd7\xb0\xfbU\xe8q\x17\xf4#\x00b\x83\x87:\x97\x99\xda\xc7W\x99\x05')o\x17\x1fn\x8aQ:\x80\x11\x1b[\xd8<|\xa5\x8d\xf8cr1b\xe0\x8e\x83F\xf07a+\xee~\xe0\xe7K\xf25t\x8f\x0d\xcb\x8a\xc9\xf1\xdb\xdc\xeaW\x80\xbf\x12\x14\xe3+\xcc\x86m\x82&\xfc \x9d\xd4\x90\xb8\xb4\xf54\xaa\xadf\xe1\xbe\x07z\x13\xa9\xe8D\xbe\xce\xd9\xc4\x83\x8f\x8c\x99\xc8\x98Y\xf44\xe8\xc6\xc3\x08\xfe\x04>;\xd1\xbf\xc6,gi\x9e\x8d\xa2X\x8e\x93\xfc\xcb\xe9\xdb7<@\x1feMsE6\xfd\x1a\xe7\xab\x88\x8d5b&\xb6\x89H\x97lb\x9f4-\x84 \xce-\x81W\x93\xcc\x97k.\xda\xac( a\xfbH\x14\xd09\xfe\xedW\xc6\x99sM\x19\xc0\xba\xb9\xcf\xb5\x19\xc9\xa0R\xcf\xc9\x11_D\x8ck:h\xf1\xec\x0e\xc2\x06\xed+\x97\xda\xa8\xdc1\xb8v\xb7\x88}i\x8a\xb0\xa6+}\xe9\xe4\xeb\xf6f\x87\x85\x88\x96\xed6\n5\xb6+\x9ekN_\x89\x00b\xf8\x1d\xfba\xfd\xce=\xca\x04\x1b\x8d\xaa\x8a\xf5\x13\x11\x0eI\xa0I\xa3\x9a\x0dB\xf5\x9e\x99\x07\xb3M\xbed\x131]0\xbbV@\x9a\x8c\x11C\xd5\xdfx\xd3\x16\xb6\x1f\xb2\x0c\x1e~\xef\x19Rl\xca8k\xea\xff \xf6\xf7\xb4\xd7\xe5\xd6\x98\xbc\xa2\xb0\xf5\xcb\\\x17O,\x9cT\x99r?P\x99\xf4\xc3\xf7\xfeF\xfepE\xa0$\xf1lE\xe6\x10\xc3*.\xe7\x90&\xeb\xa4\x86|A\xc7\xcbMT\xa0\xdcd\x95g\xa3V\x0eD\xa2DW\xb9>\x87.5\x93zK\x03\x97}&\x92\x08i\x9b\x19oy\x00\xe3\xac\x0f\xc0\x01\x00\x00\xd0_\xfe8M\xfd\xcd\x97\x8e\x0fi\xa0\x88\x97\x13\x82\x0cmfm\xe56p\xcdN\xd0-\xdb\x91\xb4/\xd8\xa9\xbc\xc3Q\x03\xcd:Xv\x04\xa5}\x89\xc4\xb9\x9aE\x1a]\x85o \xab'J\x8e\x0dtu-p\x1f\x1cla\xc7]\xa6\x95\xaa\xd9\x97\x0bPD\x11\x87\xc7P&_]\x89\x99\xf1\xfe\xa8o6\x8e\xd1\xa3\xd4\xe2\x0e\x06Qdh\xb2\x8a\x99 w\\\x08J\xbf\x0e\xd9\xaa\xfe\x98\\\xf8A\x10<\x85\x1d\x9fB\xc0\xaf0\xa9A\xcb\x8c\xff)\x87M\x00\xc4\xaf\xf8\xe5\x87\xf3`\xc6\xdft\x89\x12s\xcbi\n0;\xc5\x11\xe5\x16\x16I\x16\xa7\xe9X\x80\x8d\x071-; %\xd7\x85bL]Hc\xeaQ\x8dm;l\x10\xeer\x01\xb70\xde\x8c\xfa\xdc\xcd\x86\x15\x9ck\xde\xb2;p\xd2G0\xeb\xe7\x12Q\xac\xe2\xb0(\xed+Q\x8ck\xeeO-\x91A\x9d\x8cQEa'\xfe\x04\xfaY\xfeu\xe56p\xb1\xa4\x1d\xb9\xceRTj\x99K\x95cf\xd12!2%\xec\xee\x16\x97\xf8i\xd6\x1a\xd2,\xc0\xf1`\xbc\x1dxo\x90\x8d1&}\xef\xd5\xad\xeel:1J\x07%YT\x13X\x0b4\xd1\xd3sL\xa1<\x81\xe5p\xad&\x05\xd7\x04n,Ue\x04\x9c \\\x88\xaa\xfd\xa9\xb4O 5\x0c\xf9u;By\x93ay\\<\xf8\xc3\x87\x03\xf1\xe0\x87?=x\xfc\xdd\xb6\x9f>\xde:\xa5\xe4\xc1\xf6\x91\xef\xf7\xf7\xb6\xfdt\xff\xbb\xed\x13\x04\xec\x7fIF\xca\xd6+\xa9\x94\xf9\x8d\xe2\xed\xeb\x07\x93\x1b\x95\x98,2LT\x93\x8aY5\xe9\x07\x80\xb5jq\x80Q\x99\xecm\xebV\x9d\xe5Z\x8a\xa1$i\\'W\x04~z\xffc\x08\xd7I\xbd\xca75\xac\xe2\xab$[B\x0c\"\x13E\x84Y\xbe'\xf0\x07\x19\xf4\xf4\x0f\xf2\x1d\x7fZ\xe3S].Bh\xa0\xf8\xa9'\x97\xd6Z\xf5w\x9f2\x89ep\x82^b\x84\x9e \x9f\x0c \xcf\xf3M:\x87,\xaf%DJ\xb2 %\xc9f\x04.\xc8,\xa6X\x93/&\x80\xb3\x16\xb92\x11\xc3:c6\x0d$\x1e\xc4)\x1f!\xe9\x05h\xa3P\xfb\xde\xef=\xb7V7\xc6\xe9 \x9b\xbfwS\xa2\x89o\x8b\xda\x084\xe09\xd5\x98\x9eeA0\xc0\xb1 \xab\x80\x14\x99\x90\xe1U\xa6\x0c\xc2E\xc3 ,{\x8b>\xec\xbfr~\xce\x15\xabz\x1eA\x97\x91\xc6\xca\x10\xf3\x91\xa9C\xe1v\x81\xee\xb8W\xf9\xa4+\xce\xda\xfaKM\xf8\xed\xb6\xd0\x95\xbe\x03!B\xeaWY\x88\xcep\x0c\xbae\xae\x038\x86\x1a&\xd0_\x96:\x80 \xf8\xb4U8\x82W,G\xf8_N\xdf\xbe\xe9\xcf\xdb\xc8O\xf2\xcey\x1b\xb5>U`\x88\xef\xdd@\x90Zq}\xa6\xbd\x85f\x9a7.\x17\x7f\x0f\xfbR5V\xf7\xeb\n\xdc>\xed\xde\xd1\xe91\x1d\xcd\x18\x9b\xac\xe4e\x87\xca\xf6\x89J\x91'YMJNG\xe8\x9e\x87yN*\xacC>%U\x0dI\x06\xf3|\x86\xa1\xa9\xb5\xf9Th\x91\xadh\xce\x14\xcd(\xf9t\xbb\xc9\x16\xf5P\x9e\xe9\x11\xad\x95\xfe\xb21\xf9 \xea\x8c?\xdc\x14\x84\xeb\xfbN>\x15dV\xa3\xaa\x8f}\x14\xc2\x12\xadi\xe9\xbcU\x90\xd1\xc3\xd3\xdbd,\xaf\xcc\xdc\x03\x96|\xe0\xaau\xa3c\x9e\x92\xf7\x80Y(\x92\xe9\xde\x99\xbc!!Q\xb5\xb9\xa8\xea\x12s\xc1\x80\xe7\xc9~\xa6g0\xc1\x0cXHb\x1fx\x01\xd3\x86\xb9a\xdfb\x90~\xeb@\xc3\xd9\x82\x13\x89J\x9b\x8cT\xb3\xb8 >\x91\xc9\x9f\x1e\xfc\xd7\xfe\x83e\x88\xb9\x9d\x94g{\xf8\xec\xbf\xbazP\xd3\xd0\x8a\xc1\xa15\xfdkzg\x1d\xed\xa9\xbd\x7f|\xc0\x1e\xee\xbbv?\x1fdP~\xf6\xeb\xc6\xa4wG\xa3\x95\x11\x9b\x97D\xb3U\\>\xab\xfdZ\xda\x0b\xe9\xe9\n\xcb^\x86\xa6C\xf7u\x1e\xfe\xbc/\x8e_j\xdac\x8a!;\x98\xb9^ \x0e\xfb\xf1{\xfe\x03k\xd0_;t3;M~%\xf8\xcc\x10\xb4:1q\x0d\xf5\x01\xef\xc5K\xcdpsL\xf5\x95\xf3\xc0\x15\x1f\xf0\xda\xb9\x0cA\x1b2Sh\xd2\xec\xa7\x0e\xf4\x01\xc1)\xe01\xdd\x12\x13\x84\x00\xb22q\xe1\x17A\x93@Z\xdb\xda\xad\x9f\x19V#\x86#\xf0\xf1\xee\xc2\xfb\xbe*\xc8l\x1d\x17\xf7);\xf8'/\xa0\xd4\xed\xf7\xd8\x89\x9ep\xd6p\x84\xce\xfc\x1d\xdb\x81\xe9Y\x80i\xcf^\xe43\x0cZ\xea'\x98\xca\xd0\x86B\x1b8\x02\xcf3Q\xffq\x19\xadi[\x1b:|\x84Q\x81\xb7\xaa\xf9t\x83$\x86\xfe\xef\xda\x9c\xd2$n\x92\x18c\xb6\xcf\xfd\xd8h\xe8\xa1\xe3h\x86\xe7\x9eO\x13\xbc\"\xc2\xff\xb9\x93\n\xbf\x7f\x89\xbb\xfbW\xfdu\xe7 \xbd\xdaC\xa3Kr5\x94\x93k=\x94Xk9\x98\xb0K\xa6\x82\xd2~{1\x94X\xeb\x9c%\xba\xd5e\xb3\xbd\x16}jSH\x9d\x88>\xb5\xcd~\x1aL\xf2{:\x94\x13\xeb\xb9\x18\xae\x16J\x97B&\xef\xbfz\xc6\xd3\xea\xbf'\xcb\x93O\x85\xef\xfd\xdd\x9f\xc6\xf7\xffy\xb6;y\xf0\xe0\xf3\x83\x07\x81\x17\x82\x97x\x9a\xef\xder}\xf5\xf3\xe6\x8c\xf5(k\xf7\x9e,\xf0\xf0\xf6\xec2\xb4(x\x03&2M\xe2\xc7,_\x7f\x87\xebGk\x00\xe0\x17\x9c:\x04\xef\x0f\xf2\x1d#\x87\xbd\xe7\x1f\xf8\xa4\x07\x94?\xaf\x8d\x8a(f\xcd\xf1MI\x16\x06K\x0e\xa1\x91\xec\xce\xdf@\xdbE\xc1\x8b\x00\xbc\x86a\xa7\xd2^\x08\xda\x83I\x14\x94\xc8i\xad\xcb(\xa9^\x96\x84\xa47o\xe25\x99\x07~e\x0d\xeeN\xfb\xc2\xb4sJ\xf6#?\x93\x14\xd3~1\xaag\xe2\xda\xc20\x05\xd1\x04\xd6\x9b\xaa\x86\x0b\"Y8\xf0)\x9a\xdc\x7fO\x16\x81\x913U\x0bk\xc5\xe1\xfe\x98\x8f}\x02\x0e\xd9A\x16\x1b\xbc\xa3_\xd9,\xcamW\xa4\x14\x8e\x0b8B\xb1\xdc\xdek\x81\xa1\xb7\xf7\x1c\"E`\xd8\xee)\xf3\x9b\xb5en\xa3\xe5\xca\xf1\xbe\xca\xed\x02\x85\xb6\x96\xd2\xae\x0b8\x86\xdc/BH\xa9 gL.+\xca\xb8\xdb\x01\x8e, =-\xec\xb5A\x15X\xe6v\x88\xc0\x18\xd4\x01\x8e>\x0c%\xae\xdc>p\xc5!\xd0\x1f\xc8\xad\xd7V$[6\x91\xc7\xac\x9d\xdd8\"\x03\x12\x90\x95?\x0f\xe1*\x84\n\xcd\xbb\x1c\x16\x029\xa1M\x9aR\xb6\xeb\n\x8e\xc1\xbfA\x91y.\xfc\x07\x19\x9f\xe8/\x05u\xf1o\x02\xc62/9\xd1\x1dV\x93q\x99\xf6_\x06%\\)\n\x8c\xc6\x88\x80\xee\xa9%OhD\xe9(Bh\xe3_\x850\x0f\x82\x88+\xad\xe0\x18\x96\xf2\xef ,\xbb&]N[\x0ddl\xa3\x11\xbb\x0d\xb6\x00/\x8c\x051l\x01f\x18 j\xb0o@\xe0j\xa4\xa5\xc6\xc5\x98\xd3\xa9\xe9\xa9\xa2\xdeZ\xe7W\x84\n3\xb0t\xc8\xfaE\xf7\xefEK\x1b$\xa4\xe4\n\xd3\xdf\xb8-\xc77\x1c\xae\xd6\xca\xb63\x0b\x84\xc6\x89\xee\xca+\x14R\xd3f\x96\x17\xa12N\x91\x1b\xd0\x9acT\x14\xb9\x94W\xd6\xea\xb7\x81\x03\xe8\xdc\xce+\x10\xc4l\x9c\xc5\xb6Z\x84\xfa@\xab\x005\x15iST\xc4\xf5**\xc9|3#\xfe\xd6C\x00\xf52\x96ytNk\xbc:\x9d\xd6nA\xa2h\xc1\x8c\xfd\xee\xfb\x08F$\xa55\x15>hU7\xcc\x9d\xe4\xb9\xb2$S\xb5'\x7f:\x82=\xd4U\xec\x85\xcdmn\xe0\xd7AG\x1cv\xf2\xa4\xd3\x15q\xb1\xe3\xd7\xd3\xcc\xe1\xb2\xbf[\x86\xe2\xf2\xe8\xca\xad_\x8f1\xb7\xb9\xf5K\xe1\xa5q\xd1\x88\xe4\x17\xd6o\xed7\x12\xdd\"p\xc9\xc6\xb5\x81\x95\x011\xbf5\\\xf8\xf7\x9ejd\xb0W\\\x80T$\xbc\xd7&23\xcfg\xcf\xe3\xd9\x8aL\xe0\x9d\x1e\xb5\xe3\x8b*O75I\x167\x13\xc8\xf5uf)\x89K\xde\x8c\x9b\xd2\x85\xf33;\\\xf1;')\xa9 \xbb\x8a\x98t\xf1\xf7\xdd6\x91-\x94\x16\xcd 6\xa8x\xf4\x93TE\xf0 \xbc\xd5W\xba.\xe3\x82\xd7H\xf45\x96\xa4F2n0\xbfG\xdd\xf7\x04b\xfd[\xf2\xa9.\xe3Y\xfd\xb2\xcc\xd7\xd8\xc8F_M\xde\x06\xb9.\x87r\x19x\xce\xee\x920\x81\xec0\x88W$\x9e\xa3\xa1\x87}\xd3<\x9b\xcdHQO\xc0\x8b\x8b\"Mfh\x8f\xf3\xe0\xe7*\xcfBP\x9f\xdc\xc4\xeb\xd4\x1b\xde/\xc3\xf47\xcd\xe3\xf9)\xdaF\xef\x98\xe3\xaf\xdd:\xdf\x0c\x8a\"\xe8^\x84G\xf6\x80\x91\xce\xb6-_K\x02_\xc5\x0b\xf2c\x1e\xcf\x07=\xb4F\xe1-\xc7\x19#\x0fH\x97\xe1\x1dcF?\xe4\xe8\xa42\x81\x99\xbe\xaa\xb8\x1f\xf9\x8b\xfa\xc9%\xc9&\xb0\xe8\xd3\xa5\xa0k\xb9\xc3\xa7\x08G\xf0\xaa\xaf\x8a\xfc\xd9\xaa4\x17*V\xa2^\x0f\x10\xf5z\xa0cp\xd0\xeeD5J\xa9{\xe6FcMZ\x1enm\x0ds\xf0\xed\xf6\x9f>\xfa\x02C\x1a\xf5\xcd\xaf\xa0Z.\xad\xeb \xdb\x1a\xec\xc0\xb0\xd1\x0e\xe8\x8fI\x93\xc29\x17\n\\3\xba\xf6\x87\xc1\x14\x95h\x12\xa7Q!\x99\xb5\x94 ^1\xe8\xa7\x85lv\x1c\xadI\x1dS\xa4\xe6\x7f\xb24\\6\xe5\xe6f\x1b\xe5f\xdeUnn\xacZ\nf\xd0\xd4Isk\xfb\x08T\x0dl\xfb\x16\x1a!\xd8\xe813\x88i\x9b&\xc3$\xb5\x08;\x8fH\x88\xabL\xb1m\x89\x003\xf8Vhn],\xdag\x98\xee\x04\xb7\xc3\xf0X7[\xf0.\x80\x1d`B,8\x82Y\xcf\xfe\xa2[\xa8x\xcd\xf8\x1d\xfc\xc0\xdfca\xd89\xfb\xf4\xcbm\x08\xb3 \x88\x10\xd6n:\xd7i\"\xe5\xe8M\x08\xbf\xdc\x062c6\xe9\xf8\xa78\nb\x887I;\xc4\x97\xfd+\xe0_624\xe5\xb8\xed\xb8A\x0b.\xa4\xa3\x8b\x81\xa0W]\x13\x89\x94`\xfeqH2h#*\x8b\xbdT\xb9\xe0)(\xe6\x1d\x1d\\\xb5\x9bU;\x9b\x18'\xd1\x9a\x94K\xf2\x82\x90\x82\xae\x98E`\xba\xb5\xc5n\xe2\xad.\x98\xac\xdci|\x16\x04!\xcc\x18]\xa2\x84J\xd6\xe2\xba\x9b\xa9D\x96M\x08\x1eV\xf3\x02\xfaM\x9fG\x10\xc5Y\xd6i=\xc1XTc\x0eu\xeb\x19\xd9z%e\xf7\xdf\xc8\xd8T\xfd\xf5+\x1c\xd8\xf9\xd0\xadl\xd2\\\x90\x8e?&\x1b\x9b\xf0Qgei9+{\xd9\xd6q\x1d\xec^\x82\xe2\xbc\xec8\xa6O\xcf\xec\xea\x9d\xfe\x1d\xa2E\x1c\xe9wC\xa9q\xd2\xb1]+\xa3\xaa \xb3\x10\xaa\xa1})e\x90\xfey\xe2@\x84\xdd\xb4}\x9bi}\xa6,h\x19\xc9\xa5{\x1d\xcf\xca\xdcO\xed\xa4e\x94.E\xe0]\xe3\x87j\x0bR\x03\x0d$\xf2\x0e9\x1dv\xec\x18P\xb4\x04\xea\x8a\x88s/\x0bac\x10\xb3\xb4O%!\xd64d5\\\xfdoJ\xf6oB\xc9\x9a\xa4\xcd\xa3(\x99i/\xd0\xd1\xc6z\x1aa\xda\x08\xd2\xb1qC\xd9\x122d\x06NK<\xdd\xb4w\xf4:\x9f\x93T\xc0\x9d\xedjZ\xc7\x80\xeaN\xbbY\xe5\xed\xed\xbbx\x14\xe3>~\xaf\xc5\xff\x8f\xef5\xfd`\xcc.*\xd2T@\xdf\xf3l\x95\xa4\xf3\x92d\x13]\x8cq\x16e\xb0v3BM\x86l\x95\xe4\xe1&b\"\xca`\x0b$*\xca\xbc\xce\xff\xca\x9fgp\x8c\xbbe\xd3\xde-\x99R\xab\x89P\x8a\xc6\xc4W\xec\x99\xbf\xa7\x04\x8c\x08|\x12\x89\x99i\x94\xcb\xc6\xd3T\xb5\x84e_Ok\xc3\xa5V\xab\n\x1cAB\x913\x13\xa3\xd1\xba\x19t=\xf9~u\xc2\x19\x0fY\xfcm\xf8\xcbC\xdd\xcbJ\x98\xd7i-\xe8RA\x90\xb5\x0d\xcfTM\x91 \xf2\xae\x17i\x9d\xb4\xf6\xcc\xb0M\x86o-\xf3\x9cR\xc1\xdc7\x9a\xba\x81\x8d\xe8t\x1c\xc9I\x08S\xf3hd\\\xac\x11\x81\x89\\\xb8\xb9\xabnP\xf5\xb8$\x19\xc6\xc2\xda\xb1\xa5\x1bB\x1b\x13[\xfb\xa0\x08\xc5dJ\xd4t\x03v\xd5\x08p\xa3\xe3L\xee\x00;K\x17O\xcb38\x86\xc4\xa7\x7f\x0821a\x8fq\xbd\xe8\x83\xc1V\xb8\xe7u\xe2\xcb\x85f\xcdl\xd2t@\x91\xae_\x7f{\xc0\xa9;\x8e;G\x17\xc5\x97\xb1;\xa7g\x81\xd6\x19FL\xccE\xed$\xd9\x04\x19\x15\x92\x81$S\xd3,*\x7fS\x9ei\xef)\xe4\xf0}c\x87~\xef\x1e\xf8\x0c\x03\xf2\xb3\x10|D\xb8\x86lN\xcb\xb3\xe0)\xe4\xbb\xbb\x01\x0b\x911--\xd7\xfbb\x1a\x18\xe0E\xa1\xd7_eu\xd8\x8e\x18\xb3F\x0e\xdb\xaeu\x03A\x945\x82cfi4Q\x9f\x1e\x888\xc9Hu\xd0\xafE\x11\x1cu6\x0dN\xfb\x12Ui\x8dA\xa8\x05\x0f@\xdd\xc9#6\xa4\x98j9\xcd\xd0\xa8\x9eE\x8e-Y\xfe\x85\x1c\xad\xd4\xd0\xe8?\x04\xfalxg*\xc4w\xf4V4\xfa\xb7\x9b\x99\xf7\xd9X\x06o\xf8\xd6\xe5p\xc0\xf1\xf9\xdf\x8b5T\x7f\xfd\n\xdc\x84\x10\xc3\x1e\x0e\x89aZnB\xf0!\xfbZ\x8b{\xc1\x88\xeck\xe5;\xc9\x89<2q\"\x99\xff\xed\x00\xf6\x0cr\"W<\x03Y\x87\x99\x94\xa2\x1bKs\xab\xf2*\x03\x9b\x1a\xb7%f\x0b\x9e\x85\xb0\x08\xa1\x08a\x1e\xc2\nMF\xd7h\xbdv\x03G\x10\x97Kt5T2m\x1d\xa0uYc@!\xabL\x0f\xe8!\xda\xfaI\xf9v\xfdn\x97Z\x141\xf6\xeb\xd29\xf2\x14\x9e.O\x9f\x06P]'L>\x14\xd9, \x86\xce\xb1\xd11LW\xe8\x90\xd5S(\xce\xe1\x08nx\\\x99\x93\xacNJ\xf2\xa1$\x84\xa5\x18\xbe\x11\x86\xf5,\xb50\xad\xf6\x8f\x0d\xa9\xeaWYM\xca\x19)\xea\xbcd\xc9\x86\xe9\x9b\xaa\xc8\xb3\x8a\xb4^\x15\xf8\xaa\xad\xe7b\xd9Jo4\xb22\xcbGl'\xd2\x80\xa10\xea\xd5\x8b\xa4\x9a\x95\xc9:\xc9X~\xbe\xcc\x8d{\x92\xa6~\x06+\x90n\xe9O\xd9x\x83\xdf-\x1a\x98L`\xe1\xf6m\x1bh\x13(\xdc>\xebCu\x02s\xeb\x97\xb7!\xda\xce3\xf6[\xa6\xbe9\xbd\x8e\x97KR\x06\x0e!\xf3\xa0 {h\xadKe\xb15\x86\xf2d\x8aY\"\xb2\xac~\x1bv%\x8cN\xea\x0d*\x8c\xael\x863\xa2\xb0\xe1\xac\xdd\xc0\xd6\xcf\x80\xe1\x1a\xad\xab\xbaL\n\x11\x85\x14\xedl\x06\xadcD\xb1^\x12\xe1&\xfe\xd6y\x13/\x99\xe3/\xc9\xea\x10vJJ\xc2\xda\n|\xe6\xdb\x99\xa9\xcc\xe7\x12\xc1\xcfW]\x91\xf8\x97|Y2\xf4\xd6C\x16\x9f\xaeQ|Qn\x8a\xda\xf7X\x87^\x08K\x97\x19X2\xad\x8e\xc9\xac*\xb5\x18\x96L\xaaF\xc6\x960VI\xebb\xd8\x9f\x8a\xb8\xa5\x93j\x8b\x81\xc3F\x0e\x0d\x93\xb0p\xb9X\x9e\x14V\x9d\x99\x1f\x8ce\xaa\xfe\xbdX#\xfd`\xf2A&@s2\xef\x19O\xe6\xbd\xf6\xc9\xbcg:\x99{kjSE1\x0b\xe97\xf1z\xc0+\x809d\xaf1\n\xbb\xb9\x16\xc6\xe2\x8d(Yf\xe1\xb2\x0c\xb9\x9a\x9dG\x08|\x94\x89\x1eV\xfbFX\xed\xb7a\xb5?\xc4\xc5\x80\x8a\xdb\xe4\x13\x99mj\x16rZa\xcf\x86\x891#\xc2\x04I\x8ay\xc7\x86]\x1aDB\xf0\xfa\xe7\xae\x87O{G*}\xbc\xa9H\xf9\x92\xd4\xb3\x95g\x8d\xc1&V\xd4\xca0\xb0%\x9d@9\\M\x0d\xcaeI)\xac,\xffP\xa8\xb4\xdb\x10\x12\x831\xb7\xf5\xd6\xde\xac\x1f6\xed\xb6\x9a\x1d\x1d\x94\xe6k\xbb\xe4*\xd9\x0b\xfd\xdbF\xcd\xc1\x03\n\x1c\x03\x95\xd4\x0d\xa0\xcd\xb1-\xbe\xcc\x1f\xe2\xa5\xbeV\xd2n3\x87c\xf0\xf87\x1e\x18\xcd\xa4c\x96\xec\xe7\xe0m\x03\xe4\xe7\xf9\xba\x88\xeb\xe4\"I\x93\xfa\xe6u>7\xec\xe2\x8d\xc1\xdb\x96\x96\x05\xbe3\x92\x12\xc6\xaf\x90x\xb6\x92\xdd\x06\xf4\xa8\xb0s\xfa\x8d\xb6\xdbNb\x18\xd8l$&\xc5Z\x12\xc7\xf4[\xdaO\xa3:^Vp\x0c3\xfeg\x00\x13\x98&gc\xcd\xc0[\xce\xb4G\xaa3\xad]\xbb\x8a1\x1cX`\x1c\xfc\x8f\xddF\x0c~\x06\\\x97\xcd\x00\x9e\x17\xaf\xe6\x81\x9f\xe2\xfd_n\xdb\xf0\xa2\x0c\xa3\xc6\x04bk+:W\xedn)PDv\x1b\x11\xe7\x98\xed\x8d\xc2\x18\xba%\x8a\xa0_\x86\xfd\xd2-\x12q\x9c\xfd\xd9Z\xe4\xccL\xdeE\xb1\xf9wQ\x8c\xdaLgg\x01\xd0\x7fwwCH\xa6\x9e\x07\xbb0\x83]|D\xf1\xa5\x18n\x83\xa9\xa9\x9b\xb0D\xf4\xecK\xb0M\xfb\x8aP\xcc\xa4\xa2)\xed\x8a\xa2\xa4C\x04a\xacz\x04s\x16\x8a|\xfcp\x81wK\xe5^:L{m\xeeyA+\xb7:\x9c\xd3\xde\xcc\x89\x9bAQ\xe2\xb31\x17\xc6\xba\x06\x06Z\x7f\xa9\xd66;\xfb\xcaj\xb0\x10\xea\xa8\"\xe9\xc2\xe0'\xac\xde\xb2\x1d\xf6-\x10\xd6\xf1%9aL\x0c\x1cQ\xb2\xc1\x1e=+\x92\xeaC\xbc\x94\xb4\xa1\x92\x7f5\x95\x9d\xf4Vw\xc0\xb2\xea\xf7\x1dj\xce\xd4\xe1\x1b\x9d\xf63^\xb3hMh\x80\x1a\xd9h\xe2v\x07*t8?s\xad\xd9\x85Ic`\xa2\xb5\xa5\xe1@\x96w29$\x99\xe9>KVJh\xa5r\x9a\x9f\x0d*\x9c$\x81\xab\xb47\xf4\xc0x\xb5l\x9a\x9f\x05\xd8Xs\xf8V,,\x8d\xb9i\xceMO\xf0\xebi\xa2W\xf2\x9b\xf9\x0e}\xc3q\x91T\xba`\x81=\x1b\x0d=\xe6\xffK\"\xfaV \xf8\x8f\xd9\x03nK\xd9\x9e*=K\xfa\x84Q(\xf6\xbf\xd5\x9a T\\u\xdf\x7f\x93\xda\xb0\x02\x9a%\xd1\xbalj\xd6z6\xc6}\xa5g\x89\xca\xb4\x12:\xd7CMW\x0b\x16.\x8d\x1d\x1a\xfa~\xba\xf03:\x17*\x88\xa9\x13\xdf\x9a\xa5\x19w\x07\xf6\xe4` \xce\xf1\x7f\x86\xa6\xe7\x0b\x85O\x85\xd14\x1f\n>\x89*2\xdb\x94I\x9d\x90*\x04\"\xee*0JPV\x7f\xb8)\x08{\xca\x14\x08\xcac\xc3I\xc3\xa4\xaej\xb6\"&\xd9\x8c\x89\x9c\x9a;\x11m\xed\x8a\xd7\xee\xdf\x93h\xab\xcf\x98\xdc\xcd\"\x19\xfcT\x1ax\xf2\x05\xd6\x92\xea\x0f}\xa5\x82\x81\x87\x0f\xf4\x87|~\x13\xa2\xb6\xb8\xbc\"\xa5a\xf2s\xaeP\xa6U\xfe\x1a\x97I|\x91\x12\x83S\xed\n\xab\xae\xea\xdapE\xb1\xe4R\xaeP\x93\xe8k\xdd\xb4k\xfd\xb0I\xd2\xb9\xb1\xb2\x08\xe2\xf5)J\xaa\xb7\xcfN\x0f\x03\xbf\xd6\x1c\x147\xe8\xaeO\x1b~\x0b\xc7p.\xef!\x95\x88\xe8\x86 \x83\xef\x8c\xc4bS\xa6\x13cd\xa3YI\xe6$\xab\x938\xad&\x80Z\xf6Ut\x9d\xd4\xab\xe7\xcds8\x06/\xc9f\xe9fN0\x0ca\x15\xaf\xc9}\x16C\xcc\xd0h\xe3\x08l85gy~\x89q\xdeuF\x84\xfd\xf9\xc5\xa8\xfd\x7f\xa7A[z\xb4\x07!T\xb2B\x0fS\xe1\x08*\xca\xf4\xf3\x1a\x12\xed(=7\x80\xf2\x83\\\xaa%\xa9%\x91}\x1f_\x07CQew>\xa8\x91U\x9f\xfb^\xc3\xa4P\x89'\xc3\xd0\xb1Y^\xc3\"\xdfds\x9d\xab\x10\xed\xfb5F\x9e\x94\xd4C\x0f\xbeWmm\xd3k8\x86_na\x02\xaf\xf5\xd5\x7f\xc66\x87t1o\xb0\x86\x10\xd7\xf5\xf3{\x17m\xca\x14v\x8f\x8c\xa6\xa1\x83\xaa\x01F\x93\xcc\x01\x03$\xcd0\xdeT\xb2\x8dm\xbcU\xec\xec{c\x18\x9dF'\xf1\xc6pdr\x1d\xc4\xcf}\xcc\x0cB\xd8\xc9\xa4\xa5\x8d\x88(\x10ql\x0e\xe1]\x1fr\x12joBx\xc7\xd7\x80\xa2\x17J\xc1?\x07Q\x9d\xffT\x14\xa4|\x1eW\xc4\xc7\xa08G\xb0d\xca%=~\xbc\x97*\xfej\xfa\xe6\xccT\xb3\xe4\xd8\xce7b\x14\xa3\xbb=e\xa7\x0ch\xf7\x02\x8e\xe0\x99\xe2\xa9u\xea\xbfR\xc8_\x104\xcf\xdf\xb7\x9ek\x9a{1B+'4\x8a7S\x12%\xd9\x80-ai\x89\xb3\x85\xaa\xbd\x8b|~\xe3\xc9\x18\xb2\x8ca@\xbc\x8b\xd5\xbf\xa3\xc6h_Z\xb4-;\x11\xb5\xd0:\x8a}\x94\xc5k\xfck9e\x7f\x9fQn\xce\xf0>\xc1M\x1e\xb10\xadX\x19&p\xe9\xb3\xbfCx\x11tn;D\xc2\x96\xeb\xb8\xcc|\xef\x9d\x80+\x8f\xd4\xcf\x9a\xc6p\xfdI\x05\xf1\xfa\"Yn\xf2M%\x83\xdb\xd7+\x02<\n3\xee=X\xc5\x15\xac\xf3\x92\xbe\x893\xc83\xd2(\xfa1;\x00~\x91!\xee\xf7z\x88\xb39\xbe.\xe2\xaa\"\xf3\xfbI\xa6|\x8b\xba\x8d\n\xe6 \x8b#\xc6\xfa\x848\x83?$\xd9\x1f\xd8\xdb\xc8\x0bB\x11\\\xebh8\xf6bG\xd5%u\xeb\x8a8\x86\x91\xb9\x1bsCy\xf2\x85\xbd\n\x8cCHJ2\xa7\xbfvH\x84\xb7\xe2'\xeb\xa2\xbe\xf9+3\xf9nH2\xf7\xe2|/>h&\xd8\x06\x06\x856\x9dgQ\xe6W\xc9\x9chI\xb5:\x99\xb7]L\xf3\x98;\xa8@E\x8ev\xf5M\x81\x88\xa2\xd1@\x976\xaf\x0d\xe0[@I\xa3:\x90.\xdf\xcdK\x03d\xa02\x058M\xb48\xec\x85;\xb6vqA\x84\x97\x8c+\x1c\x91!\x041\x18\x15s\x80l\xf2\xbd{\x90Y\xb4\xce%\xf9\x871\x0e\x8d(rl\xd6@h\"3\xc1p-E\xa9\xfcj\xb8\xa6\xcdz\xc4\xd9\x9c\\\xa7f\xa6\xa4\xf1\xc7\xbe\xa9\xc3/\xcc*@\x0f6u\xe8N\x9d\xa0\x9d\xf1;\xcem\xd2\x9e\xae\x9b\x9e~\x0c\xe1]\xc0\x83\xef\x9ct\x1e\x07\xe2\xcc\xc3M\xda\xb6\x80\x97\xe7a`\xf1\xbd\xa43\xfc\xa9\x9f\x8aM\xf9~l\x98/q\x9c\xc8&\x8c\xde\x18\xa0J\x96\xbb\xe0cP\xfb{\xc8\xdeb\x18\xec&goE\xca\x04M\x8b\x06l\xceoC\xfa\x99\xbe\xa7\xe6\x10~\x8ec\x82#\xf8\xa9\xbf6\xfd\x13\x9c\x0d\xee\x9d\n\xe8>\xc3\xc1\x02#\xa17\xf6\xab\xec\x7foHy\xf3\xb6|\x99\x97\xeb\xc0\x7f\x17\x84\xf0\xeew\xed>Z?m\xf7\xac\xcama#\xb20\xb9\x97\x9e\x80ng\xbbMV\x06)/\xdbo\x14K\xa7\x1b\xc5\\\x11\x02\xcd\xb5\x12'A\x15\xa4\xbc\xec$TB+\x99!\x12\xffXp\xe6\x03\x86{\x15\xdf\x02J\x92\xb6:\x84\xa9\x87<\x9e\x87\xf7\x85~\xc9\x82\xd3Rv\xf1\xc7\xfc\xbaa\x17=6\xb0\xca;\x0bD\x9c\xb7\x81f\x1cj75\xcc\x03N1n\xbb\xf9\xfd\x8c\xc7\xd94sj9\xc5fDi\x97,\xae\x14\x91\n*\xc6\x8dL\x85*\xcd@6\xa59*\xdb\xd0\x0d_!c\xe9\xe5\x01\xfc \xee#\xcf\xe6\xa7\xec&\x86\xce\xb2\x9a\xaaUL>\x93;io\xba\xb2\xa1j\xbawF\xc7'\xda\xdb;\x0b(1\x14\x8dz\xbfxM\xcfn3o9zL\xcf\x98\x87\xc7\x83_\xfc\xe9\xdfo\xcfv\x83\xdb\x07K\xd5\xcf\xe3)\x0bs\x81\x862> \x9e\x06T\xb6\xd8T+\xbf\x9c\xee\x9f\xd9}6\x0d*`?\xdd\xe6f~\x16]\x89\xfd\x85\xbcq\xf3sJ\xac\x97\xa1b\xc2\xed\xaf\x86\x8fo\xe0\xc4g\xc3\xef\xf3\xa5\x0d\x9b\xfd\xb3\xb2\x13\xc9\xfd\x17\x99\x1c\xe6\xd6\x0b\xc1[\xda\x02\x81\xd0\xa5O\xa5\x97j9\xe8\xccd\xba\xdb\xd4\xf7\xd0\xb5\xc6\xb2m\xac;\xb9\x1c\xb1\x85\xcd\xae\xef\xc2\xe2\xcb\xd6 ]\xca\x95<\xb6\x19\x93l\x8b\xdfPj\xbe\xa9-\xdf\xd0\x13\xe6\x9d\xcf\x1dLgy\x8a\xb4\xf4\x9d_\xb6\x1f\xd8F\x9b\xe0\xbe[\xe5\x15z\x1e\x96\xf8\xd7\xf0\x17\xcc\x85\x8e\x92s\x14T\x1c\xfap\xc9\xac\xcb\xf1E\x84O\xf3\xe97H\x9e\x138\x86\x9cb\xf4\xe4\x01\xe6\xd4\xf0\x13\xd8\x85\x18\x9d\xf0\x82\xe9F\xf5\x00\x84c\xd8\xb4\\\x99`b\xc8\xbaz\xeb\xa7!hr\xb2\xdf\xfa\xe8\x9bk\xa7\x15\xe3x\x8a!=8H\x8e\xc2\x85\x0b\xc8\xdb\xc7z)R\xb2XX\x8c.j\xe5\x03\xa8E\x97\xb7}oT\xf3 T\x98\xf4K\xfc`;\x0e\xfd\xad\x8cma\xf4/\x8a!1\xc3\xcd\xa4\x83\x9b\xab\xba.\x06p\x87\x19\xf4\n\xdcL\xe4_C\xf8\x96\xe27\"\xb0\xbb\xad\xf6\xcc\x82\x99]\xac\x9caz\x17>\xc9\xae\x99+\x96\xf6\x89\xf0\x1b\x17&\xc6\xf2\xbfy\xf80E\xdd\xc4n\x98e\x8di&i\xa2\xe6nU\x03\x82\x7flH\xf9\x95V\xc86{ &\xb3\x8e\xbd\x8ep|\x08\x03\xf6\x17\x87\xc0\xce>w{\xbbw\x0f\xbc\x8b'?\xbd\x7f\xf5<_\x17yF\xb2\xda\xcf4\xbe\xa7:\xcb\xea\xbc\\\xbf\x88\xeb\xf8_\x12\x00~\xc64\xc1=\x0b\x16F\xa5\xe8\xd8\x11<\xf8\x87D\x13\xfa\xcbiC\x89-a\x1ee\xa7\xe3I\x7f,\xe6o]\xb6\xab\x1ei\x1d\xfc\x05\xfe\x93\x03\x0d\xa8\xbf\xee\x9c\xc5\xe8\xcb\xf9\xf9\x90\x12P\xc4`\xd2\x8a\xc8B-\xf9\xed\xe3q\x81r\xff\x05\x08\x8e\xb9bC\xa9\xcdu\x10*QU\xdf\xa4\x03\x95P/K\xd14\x1d\xf6\xae\xe9\xabr\x86%\x18\x8c_g\x1b!8moZp\x16\x13HP?_%\xeb\x82\"\xd4\xe0\x17|J\x13\xd8\xd0ol\x990X6\xa0 \xec\xec\x1b\xab\x99$\xcb!\xfa\x9f\x0b\xd2\xaf\x0bL\xf2\x1f\xc9\x98\x99\x19\xb06K5\xcc\x88l\xfa\x91\x0e\xbcM\xc6mF=n\xdb\xa5\x04+\xd2\x99\xb6\x8b\xe2\xcd )\xde*\x86\x8d|Op\xc3\xb1\\me\xa4\xb4\x0f\nq\xca\xacY!\xdb\\$\xc5\x8c\xa9\xbc}?\xf3\x86\x0fAQ\xf8n\x19\xb5\x15E\xc1-\xe9\x98r\x95\xf7\xe3\xe8\xce\xcew\xa7\ni\xb7\x0f\xc5\xb6\xe3\x07\xf6{\x82f\xb4\xf0\xd0IP\xcd\xc6\x1dJ\xee;e\xf4\xa1\xd0\xdf\x1e\xad'\xb7}U\x0b]\xdf\xa9\xc7S(K\xe6\x8c\x12\x9e\x9a\xbf\xec\x9ad\x11\x14\xbb\xa6g\xae\xdd\x81\xeat!\xc1\xb0\xff\xa8\xe3\xe5\xac\xdf`[t\xe2\xfd\x0f\x14\xfcM\xed\xfd\x9c'\x99\xefi\x9c\x13\x95w\xd0E\xd8_]#\x9b\x0cid\xe3F#\xdb\xd5\xb9\xb2[\x90\x17I\x85\\!\x99S\xfc\x88g5;\x01\xf3P\x1f\xc3\xdeb\xb8i8_\xb5VF\xf5X/\xb0Krcc\x04\x9cTl\x16M,3\xfd\xb42D\xcc\xafk\x88\x1e\x00W\xeb\xda\xe7(\n\x87\x13\xe6\xd6\xb2Ku\xe2(\x1c\x8e\xe1h8\x8f\xa0\x7f\xe6\x88\xc2\xa2\\2\xa6\x92\xb15M\xb6\xdc\xf1{lc\xca;/7Qhrv\xc1\x81\xa4\xf1\x05I\xbb\xe3`.\xf2_e4\xd1\xe0h\xd6q]&\x9f\xbe2X\xc6&r\xe1M\xb2,2 \x1c\xd3\x83\x84\xb9\xfbQ\x06\xef)\x05U\xcdX=\x0c#2a\xaa\xce\x10\x7f\xe9\xc70\xe0\x8e\x8a``\x8a\xb4#\x9b\xa7\xbe\x90`\x13\xee\x1c\xdb\x8ccB\xfb73\x9e[\xc0\x15\x1c`\x0b\xcaBkn\x02\xc0(\xed\xb3-Q\xc43\xf2\x82\xa4\xc9:\xa9)\x93\xee4\xfd\x94O_\x99\xf8o;o\x0f\x83\x15\x18RX\x0d\xcc\xbeH\x8a\xd1\x93\x9f\xfd\xcbM\xfe3\xc6\x0eu\x9dh\xde\x0d H\xeb\xa1AE\xc7\x1d\x92\xbe}\xc2\x1c\x92\x1e\xe9\x1d\x92\x985\xf9#]~\xff\xd4i%\x05\xec&\x0f\x8e\x7f?=\xfb\xffv\xbe\xb9\xf7\x07?\xf8\xe3n\xf8\xf4\xc8\x93\xf7\x19\xdcp\xb6?\x15\x8d&~L\xa7\x0f\xfe>\x8d\xef\xffs\xef\xfe\x93\x8f\xf7\xa3\xf3\xff:\xdb\xfd\xe6A\x12\xd5\xa4\xaau,\xd7\xb6~\x01O\x0e\xf7\xb7\xb7\xd1?\xd8\xfe\xd3\xc3/0\xefo\xbd\xfa\xb7\xd4\x8a\xca\x00\xa9f\x95\xa6\xdd5\xb5\xec[ a\xcc\x9a\xc1\x84(\x96\x08\x95\x9a|(\xd8\xe6`\"\x14\xb3\xdb\xef\xa2\xef=\x8bw\xa3\x86\xcbbtR\x8c\x84\xc2\x9d\x18\xdc{\xe7\xed1\x16b\x8c\x06\xdfeLx \x80\x89F[q\xeb\xd7\xd4\x10n\xe4\n\xb3-\xdc\xbb\x07;;\x1d\xfd\xea\\D\xc8\xd2\x7f\xb8\xee\xc7\xc6\x8aC\x98z3a\xf6\xac:\xfd\xde\x9c\xb2\xf0\x00<\xb6\xcfP*)\xe5\xa6l\xd1\xbd\\]H\xe3\xb4E\xdb8\xad3\xf42P\x14\xd8W\xf4\x1f\x16\xd3\xa6s}\xd5\xc0\x0bG\xd5\xfc\x94a\x7f\x8e\xc1_il4\x06X\x13\x19\xe0&\x83$\x1bN\xde\"8\x98\xf9t(\xb6$p\xa4^O\xb3\x01{\x0f\xb4\x07\xb0\x9d\xd3R\xa1\xcb\xf3\xd6\x7f\xfel\xbb\x10\x03\x8e\xfd9zN\x0c\x9b\x9b\xb0!X\x9bCy?.\x92\xffEx4\xcc8\x00\x0f\x17\x93\xdf3\xf2\xe0\x98\xfeB8\x19\xc8\xeb\xf0$\x08\xc1c(\xd1\xab+.\xcf;\xb5\xd9\x9dp\xaf\xb6\x08\xc0\xa6\xd6\x1e\x9e\x1d\xa8>\x18\xcc/^\x8c\xde\xce\xf2\x80\x8c\x01\x1aW\xc9L\x8c\x86\x85\xccp\xfd\x1e\x14\xae \xc1@\xc1\xf6[\xcfnAuYT\xc4Uu\x9d\x97\x03a\xcatE\xc8\xb3\x8a\x7f,\x0buA\xd9\xa3\xca\x01z\xa2\xc8\xb5\x8a\x9e\xa9w\x8ep\x04\xde\x0f\x14\xfcN\xf1\xbf\xbc\xe5\x81*-R\xae>R\xa1\xe0r\xf9\xb9\x87a\xdf\xe9\x06\x8eVq\xf5\xf6:\x13'`{x\xb9-_\xb2d\xb3 \xcf)Bi\xfa\xdeS\xa8\xe1{8\xf8\xf6\xd1S\xd8\xdd\xad\x03 ,\xda&\xf3\xca\xa1t\xff{\xd8\x7fD\xb9\xb1=\xc5\xf2\xb1\xe5\x17\xd4q\x0c2\xab\xef:>:\xbeR\xb3\x8ebJ:?\xe4l\xca\xb6\xb3V\x91\x18\x8e\x00s\xce\xd5Q\x91\xc6I\xc6>\xa7\x9c\x1a\x87\xdd\xac$qM\xfcl\x93b|y\xca\x0b\x96l\xda%|/\x1d\xb8\xe8\xdc\xcb@UV\x91iy\x86\xf8\x98\xd1?\xd8\xef\xee\x92sS\xe9f\xcd1)6)\x97\xa43\xfe,\xec;\x92\xa2\xba\xb6IC\xd9\xe1\xc3\xd9\x0d\x99T\x7f \x9d\x9b\xd6\x03\x81\xd6\xed\xc6\x0e\x96\xeb\xa8\xb3\xa5E*gVDk\xfa%r\x9cS:\x1d\x83\xe8\xe5\xe7\xedE\xf8\xfc\x99\x8a(i\x9a_\xbf\x13\x18\x8c\x0fw\xcah\x16\xa7\xa9\xdfEo\xba7\x18\x11 S\x0cv\xbb\xb37b\xc3\x0fy\x809LK&\xcd\xecBLp\x87D\xbb\xfa\xbd\xa0\xcd}\xef\xdf\x8c\xcd)A'\xd0\x16\x9aS\xdc@m\xa7\xae\x95^#\xc7\xe0g}\xc1:\x0b!\xd1*\xc0\x18\x8c \xbe>\x062M\x10\x9f\x15\xad\xb6\x84\x02}\xc5k\xfc\xff\xec\xbdk\x97\x1c\xc7\x95 \xf6]\xbf\"P3KU\x0d\n\x8d\xee\x06@\x11MAt\xa3\xbb\x014\xd4\xe8n\xf6\x03 \x00a\xa0\xac\xcc\xa8\xaaDge&\xf2Q\xdd\x8d\x11\xe6\x90#\x8a\xc2\x83;\xb3\xde\x91\xa8\x91=cy\xd6$H\x00\xb3^\xdb\xeb\xb5\xd7\xf6\x8e\xf7\x1c>\xd6>Gs\xa8\x99\xbf\x80?\xb0\xfe >\x117\"2\xf3\xde\xc8\xac\x02 R\x9c\x1d\xd59\x12\x1by\xe3\x1d7\xee+\xee\xbdqFcp[\xfcSc\xeeB\x81M\xe2o(X%\xf9B\x8e\x97\xbe\x9cjS\xf7\xf8a\xda\x0e\xada4\xd6\xe1j\xd2\x1b^\xf7\xebc6ms\xc2#v\xf4\x88\x01\xe8t1bT\xde.\x01\xbe\x90\xa6\xfe \x9cDs\xd4\x18\xca\xf3\xcb\xa6\x0f\x13\xd2H\n\x88\x9d]\x0foX\x06\xc6\xd1\xc0<.$\x95F'A\xfb\x8b\x93\xaa7\xa8_\xc9\xb1X\xce.|Tf\x17f-\x946\xc0<e\xbe\x9e\x9e5_O\x7f\xc7|\x9d\x9b\x9f\x97q\xc5G\xf5\xc0\xe4\xa0\xd8\x82\x80\xb2\xb9\xf9W40\x12\xd8\x0e_\xe7gO\x96>\xcf\x9d\x9eg\xb2\xd9\xef\xb1\x97o\xb0\xa3\xe2\xcb\xfc+\xecG\xec\xe5\x13\xec%f\xea\x9c:5\x7f\xfae\xd3\xff\xa9\xef\x9c8y\xb2hb~\xfe\xa4nbn\xbe\xdc\x06\xb4\xca^b/\x9f\xb07\xddND\x0bs]\xb9\xb0/\x9f:u\xe2e)S\xcc\xcd\xce\xcb\"\x1d\xf6\xdd\xef\xb2\xb9Y\xf6#\xa6\xbe\xa0\xb5\x97; C89k\x86\xf0\n\x19\xc2\xdc<\x19C\xf3\xd0:\x0d\xac\xc2\xce\xd5\xddh\x14;ns\x14n\xf5\xcd6\x8aaQ\xefV\xdd\xc5Cd\xbdr\xa0\xe2g\x9cD\xf1\x02kE\xd5\x0c{\x96fI\xeef\x91zH\xbb\xf4\xa1\xe8\xab\x16\"4\x85b|\xdfb_VaU3/\x16C \x1bTS=\xfe\xcf\xe6g\x8f\x0f\x8a\x16\xca\xf7\xc4\xd5\xc50\x97\xb2\xad\xadsK'N\xbf\xf22J\x1f\xd3\x97i\x89\xe1m \x8a\xbd[\xe7\x96\xe6\xbes\xe2\x95ib\x8c\x88\x90\x19uY\xeb\xa8-\xf3\x04\xa5\x13jh\xcf\xd1\xcd\xc4+\xe6j'f\x1e-\xf5W\x8b\xc0a\x00f\x95\x9eo_\xf5\x0e\x02E(6P\xbe\xbdF\xb7/l\x9f\x9e\xc3a4\xbe\xfa>\x8f\xbe\x9b0W\xb5\xbd\x93n\xfdY\xe9\x04H\xef\xc8P\xbf{\x02O\xb9H\xc7\xac6/;\x9b,;\x99<\x13\x19\xf9\xf8\x1a\xe33\x03\x9e\xed\xf8#\xde\xee@\xf5\xd2\xbf\x17T\xbc\xfe\x11x\x19\xcf\xa2!Vt\xa6\xe2\xbb\xcc\xf62\x03\xe7@\xca\x9f0\xb0\x05\xf9\x97\xfcc\x9aY2\xb5\xf0A\x97\xb9\xf5t;oC\n\x97\\\x12h\xb52G,~f\xba\x02/\xf6\x0fhp\xf1\xef\xa9\xea\xfb\xd2\x80\xa0\x0b\x1e\xf1\x85\"\xa03\xe3\xe8\xd3\xd1\x01\xf3\x91\xfag\xd6\xe92\xc7\xcc\xb4\x81\x07\xa5\xb2\xe9z&#\xad\"\xe94\x13ef\xb2\xca\xbc\x083E\xbaDSm\xc9\xd0\x02`bA\xc5\x18\x14\x1c=\xda|\xe7);\xbe\x1e\xdcP,.\xb81U\x87\xba\xc8\xb4\xe9\xfeX\xad~\xa7\x7fc\xf5\xe8W4\xf1\x8d\xd4X\x96\xcaj\\\xf6\xb4\xc67M\xd2\x8c\xba\xe4s\xb5{\xde/v\x88\xc5\xd3n\x90\xdc\x9c\xfeL\x1a%Y\xbb\xd3e\xb1\xf9K\x06\xea\x95\x9e\x88\x14{\xf7=\xd8\xc3c\xc7\xeawM\x0e\x04v\x8c\xc5\xd3l\x98\xc1\x8e/\xd8\x99\x8c\xed\xbb\x1e\xdc\xe8\xb2#N\x9b_wotY&\xff?\x9c\x8c\xdbZx\xd14\xa8\x90yi\xfa\xfd\xbb\xc5\xb1\xab\xc0\xee\x96\x1c\xa6\x8c\x7fR\xde,kHu\x9c\x15Y\x17\xcfT\x1e\xce\xbaki0\xadm\xf0H\x1bH\xab\x95\xa8\x8a\xef:\xffV\xe9\xbbA\x0e\xe9\xcc\xa9;\xa9(\xfb3n\x14\xcb\xb7\xf8j\xc0\x92_I\xf1\xa8\xa0\x0c\xea!d[\x8f\xd7go<\xaf\x04\xa49%=(\xc0\x0e\xe8u\xb3\x8d}\x9e8=ka\x9f\x13/\x98\xd5\xe2Fj`H\xad\xbbK\x19o\xd8\x9e?1[1\xb4_L\xa3pS\x1cw\xfd\xa0\x9b3S\xfc\x13\xacN<^\n\xa2P>*=s\xd3\xfc\xb3*\xee\xe5\xd6%p#\xfe[G\xc8s\xa9+\xd4\x11\xa2\\&O\xa9;\xdc\xf9\x8c\xf8o\xf5@\xd9\x14\xaa\xc0*\xa9Kw\x03\xd0K\xean5\xb5\xd5\x9e.\xa7d\x02\xa2w\x0b\x17P\xd4\x1f\x8f\xab\xfcO\xc3i\xe4Mt\x97\x85\xb0q\xa6\x8cM\x8bs\x95\x93JR\xe3\xa7R ~\xd3\xd2\xcf\x91\xb9\"\xbc\xeb\x8cN|.\x1f\x98?2\xdb\xe9\xaa\x82V--a\xaf\xb1Dp\xc2\xd9.\xe3\xf2\xeeDH[l\x81\xc5\xf2\xa3\xcc\xb8\xdcR\x179\x00\xa2\xab4V\x99\x0d\xed\xe8XAE\x8b\xa5\x95\"=x\xb0{\x9e\xee7\x8a\xcd\xce\xb93\xa5\xe6\xe4\x1d\x8a:\n\x16\x9b\x9dlF\x9d\xc7\xe7jJ\x8bl\xe2T\xd6\xb7,\xa5C\xd3\xacT\xa3\x05\x8eO\xd1\x93D\xd4\x10D\x94.\xc3\x0d\x89\xad\xaa\x0c\xa1S?\x06ql\xca\x1d\xdaw@\x9a@\xe4\x11cg\x04\xf75\x88\xd81Od\x01\xb8\xc3\xb2a\x12\xed\x8b-#\xcai\xbb\xb5#\x1a0\xce\xc1\xac\xef\xf8\x01\xf7Z]\xd6\xdaY\xd9\xde\xb9\xb9\xb1\xb9\xb2\xb5\xb8\xb3\xba\xb1~\xf3\xdc\xe2\xea\xda\xcarK\xa2T\xd8e|\x82\x18\x86\x16G\xac8E\x92\xba\xcd\xad\xae]i\xc5\xab[\x88\xb7:\x0f\xecf^\xd9\xaa<\xef\xb4\xcd\xb0\x90\x18j\xeb&\xcd+h\x1e\x81g?\x8c\xe2\x1f\xca\x8bL\x9ed\x87\xccOY\x18eL\xa8\xf9Q\xbfX\xe2\x94\xa9\xa8J\xe6\x87l\xeb\xdc\xd2\xb1\x97O\xcf\xce\x8b\x05/\xd6zc\xf3\xe6\xea\xfa\xe5\xc5\xb5\xd5\xe6\xf5\xd6\xcbR%V\x95\x7fE\xca\x92\x8fT)\x8eU)m\xe6l\x03=`\x90WW2\xd0\xac\xdd:\xde\xb2\xd8>a\x17\xc8\xe7!;\xc3,\x8f\x16\x8cKv>\x0b\xb31!b\x146h\x80\x1d\xd6\x84\xe3J\xd3\xe2\xa1|\x1a\xae\x8e:\nb\xf8\xaa\xf5\xcaWl\xf9@\xda\x16\x877\x14\x95-\x11a\x08\xde.\xc7\xb3]\x1f\xdc`\xaf\xc9)\xf4\xc18\xd6\x9e\xed\xb2\xa1N\xc5z\\f\xe7\x1b\x8a\xee\xc7\xec\x18\xe4\xe2o\x8f\x98\xa1\xbc\x95\x00^\xd9\xf8aA\xb8G\x82R\x0f\x8f\x1e\xc5\xf7\xc8^\xad\x89_\xe2\xfa1@\xf4AG.\x9e\xa7\xad\xee\xd6\n\x0d\xae\x8aL\xe3\xbf\xb4\xf6\x95\xa5\xd2A\xa7\xf9H\xac\x1c\xc4\xdc\xcd\xb8\xc7\x9c\x90\xe5a\xea\x0f\x04\xba\xf7\x9c\x94\x1f\x9b\x9be\xea9d\xa6\x08\xf3\xc8\xd9\xf3\xc3\x01\xcb\x86\\6\x96\xf0>Ox\xe8r\x0f\nH\x80\xf4\xe9c<\xe0\xf2\xa8\xef\xfb\xd9P~\xbe\xc3\x93\xe8\x98h\xd6\x03\x81\xb5z\x8a6\x17w.\xdc\\][[9\xbf\xb8vsqkk\xf1\xea\xcd\xd5\xf5\xe5\x957\xd4\x99\x02\xed\x8e5\xbd\xe5W\x9d\xb2\xdc9\xb1\xa0\x7f\xfc\xc7\x83iu\x1b\xa6\x96p\xc8\xbew\x86\x8d'\xdd\xcb\xc8\x85\xae\xf2H\xf1e\xc0\xbeg6q\x021\x1fr\x19\xc6\xe1\xf7}\xbd&\xec\xd2\xee\xf6\x0e[\xdf\xd8a=\xce\x06\xd2W7a\xd9\xd0 a\xc5\xa5\xc1V\xd0'\xb5\xb8\xa9\xa0Jf\xc9\xab\x0bzyqmw\xe5\xe6\xc6\xee\xce\xcd\x8ds7\xcfn\xec\xae/oO\xbf\x96\xf2\xde \xd8\x92\xb4\xdc\xa7\xd7\xc5\xf4n\xc0\xedV\xd8e^\x97\x0d\x04\x99\xeb|\xfd<\x8b\xd5\xd1R\xfd\xb3\x08\xccE \xc3@\xb9\xc5\x1c9\xc3\x06E\xaa\x83?n\x15\xf8\xe2\xcc\xe4!\xe4\x9a\xdct\xb2a\xe1)8\x90\xa7\xbb\x113\xf0\xaa\xe5\xdf\x9cU\xab]1\xbaZ\x1e\x032Y\xc3\xa8l\x02s\x7fz\x81\xd9&\x16\x13\x07\xe1\xe6\xa5\x91\x7f\xb3\x94\xdf\xce\x05\xe5a\xa3<\xcd\xc4qq\xc2\xe2\x18l\xaf\xbc\xbe\xbb\xb2\xbe\xb4rs}c\xe7\xe6\xe2:\x10\x14\x1c\xe12-\xbb5\x9e>\xf2F\x9f\xef3\x1d\xd6\xa4\x0e\xb9\xf2\x00\xebB>Msk\x9a\xb3\xef\xb2\xf4U\x96\x1f=\xdaa\xfe\xf5\\\x86`\xcau\xba\x9e\x0bN\x05\xf7\xf7\x12R\x16\x8d\xac\xda\x8bO\x054\xbfqC\xe2 \x1bRw\x0bU\xbd\xf6\xa2^\xf4\xd3IVJ\x96rB\xa6\xba\xa9\x10&\xb5%\x1bg/\xae,\xed\xb4\x00k\xc5z\xbcJFy$\xbf\xce\xc5\x01\x9a\xb6\xdf\xafD\xa2\xab\x1f\x9eq\xbe-_\xd9\x81\x826\xe5xEa:b\x87\xa9\x86-\x0cr\x8aa)\x9f(9\x92\x82\xc4\x1d\x07\x12\xa7>\x177\x81\x8dc\xfdv\xfdX\xe5\xa9K3'Q\x1c\xbeu\xbc\xf5\xed/6\xde\xb2\x1a\xc7\xa9\x1a\xc7\xa5\x02 X\xadm\xb9\xa5\x027\xedr\x8b\xc2t\xb9\xe3\x84\xa7\xe2X\xb5U\x88\\/\xe0\x025~(F\xf5C\xe6\x84\x1e\xfb\xa1\x18\xcd\x0fK(\xd4\xa9n\xcd\xb9\xad\x8dK7\xb7V^\xdf]\xddZ\x994W#/\x98\xa9V\xd4c\xf3\xb5P+\xcd\x02\x94o\xa1\xb5Eq\xca\x99\xcb\xd2\xd3O\xdd\xf1\xbc\x1fv\xd9\x0f\xd5\xc8\xd4\"\x88\x115,\x02\xc8\x1b_\xfd*83C'\xdd\xd5\xc9n\xdaz%\xbeyK\xb1\xb4\xb8.H\xdd\xd2\xc6\xfa\xce\xe2\xea\xfa\xcd\xdd\xf5\xe5\x95s\xab\xeb\x13\x96\xc6r%Q6\xc5\xa8e\xa87cB\xa0\xb4<\xe3\x85:\xd8\x98_\x83)kxD+\xd8E 1\x1e_\xd2\x98\x94\x1d\x05\x15I\xfd\xb3y\x0f\x96\x9cP.4OdT\xb2\xa3\x16\xb7$\xe48\x99\x14f=\x9e\xfa \xf7\xa4u\xcfB\x03\xd5\xba..\x97W\xb2I\xe6\xab\xc1\xad\xb2\xe5\xc2|,\x0c\x0fM+\xed\x83W\x99\xa3\xdc\xac\xa2\xe7\x9a\xb8\x98be\xce\x8e\x9c\xa9\x10\xf33\xe6E\x1c\xf0\x91\x1f\xf8if\x99\xfd\xee\xfa\xd6\xca\xf6\xc6\xda\xe5\xc5\xb3k+\xd3\xce\x7f\n\xfaZ\x8fQ\x81\x10\x07\xdb\x16\xff}\xfdk2\xd0\xea\x1f\x18j\x81\\O\xbc\xa3\xab\xc9}.~wo\xd0c\xa3\x7fb\xaa\xd2\xeb\xbdq\xc9\xe4\x9c\x03\x99\xf9\xe2K\xec\x9a\x98\xc7\xd4\xfb&\xd9\xc3\xd4\xfb\xd6(\xd7yZ\xae\xc3;f\xf7\x8b\x93B\xd4\xf3Iq/J\xb8\xd6\xdd\x87\x1d\xd6oW\xe4\xeb\xb0\xd3\xc5\x02\xb7\xd0\x03~\xf4#\xa1\x11\xd0F\x1aL\x1e\x89L\x19\xf6\xa3\x1f\xd5\xe5\x01\xac\x84t(\xd7\xfc\xc2\xab1\x12\x82y\xd2\xe6\xd7\xa3\x1b\xd2\xb79\xd4\xc6\x9dI1\x0b\xcd\xee\x81\x926\x94\xfdn\xf1\x1a\xd7]\x81\x88\x1f\xecLm0\x99\xf9K:\xed\xca\xf7\x92\xcf\x1enF~\x98I\x0f\xfa\xc0Du\x17\xfc\xee\x0cs\xcdW\xd8\xdb3\xaco\xbel\xc9p\xbd\x04\xc7\xe7\xe2y\xe9\x0b2u\x8bb\x91\xd4A\xebM\xbe>\xc5V\xadaR\xd6\x8c\x8a\x85\x12\x13\x1c;\x81\xef9\x99\xf4\xe9\x8aK\x1f\x84\xd6\xe5}K\x15\x9b\xc6\xb3-l\xcf\xbfR\xea\xbd\xd6w\xdb\xa6h\x1dI\x94\xb72\x9f\xb9\x99\x81{\xac^\x9e\x9d\xc3\x98\xab5Y\x0de@U\xe6\x0b\xa9#\xe1.\xf7\xc7<\xe92\xf3\x96\x84L)\"x\xe2\x11|\xcc4*!\x1c\xf9BQ\x0b_(\xad\x0cM)SN'Sr\ni\xcf\xcfw*\x8ew\x96<25\xbe\x93\xf4\x909\xfd\x8c'k\x91\xe3M\x13a \xafk\x93(\xcaVC\x08\xc4>C?\xe9w\xc9\xd1\xf7\x19?\xf4\xb3\x8d\xc5<\x1bB\xb2\x98<\x1b.\xca\xde\xd2\x197\n\xfb\xfe O\xb8\x80Zj\xc6 7)\xdc\x16e*(is\xee\xf9\xa1\xd7\x86\xcb\x0f\xe94\xdeT\x0d\xf2\x1a\x9dan\xb5\x16%O\x94\xa5\xa6\x99\x93\xf1\xcd \x1f\xf8\xa15\x0eD\xfcD?u0&W_\x12\x87t\x81Ez\xb3\xeay\xb7\x03\xcb\xd2\x185\x96\xf2\x80\xbbY$Z\xb4\xbf\x0fY\x93\x95\x16r\xdd\xd4\x0ft?q\xe2E\xdd\xbf\xfdQ\xae\x89\xee!U\xdaa\xdd\x05\x0c(v\xb5\x8a\xf0\x91B\xf8\x13\xa7O\xe2\x9c\x19>\xbc<\xd4\x9e?A\xb2M:\nt\xe2\xf4)\x0c\xca\x0dH\xe6\xd90\xb0&\xb7c`C(\xdbc\xd3\xed{&\xa3J(iWQW6\xbc#\x89\xea&$\xe80\x91D*\x05@\x06\xd1\xdf\xfczX\x93K\xa2L$x9\xff\xa7M6\nj}\xaf\xa7\xcfzY\x93\xf1\xb2Y(s5\x89\xb5\x18\xdb\n\x9d\xacL;\x0c\nQ|/\x1e\x0d\xd9\xd6\xa7\x85\x16\xca\xa5\xcdR\x14\x12\xdc\xd5r\xfaMz5?\xddX\xdc>\xd1\x91 \xcd&>\xb2\xc1\x16\xd8\xf5\x96%\xd3b\xcb\x12\xa6*\xd4\x82\xbc\xdd\x11r\xc8j\xd8\xben\xd2E\xa4]v=\xbbA\xd2\xc1\xc0F\x04\xec5\xe6\xcb\x07\x99\x13\x94\n\xb3![\x99\xfd\xdc\xebdq\xb5\xae5:u\x9c\xcd\xcf\xd2F0\xc5\"8\x0b,\x98\xc9\xa2\x8b\xdb\xe8=gHS+NB#\"\xf4\xeb\x1c\x8d4U\x98\x1a\x0b\xfci\xb0\xc0\x81\xb7[j\xb1 7O ~eX \xc3\x98-X\x907aA\xca^c\xd1\xf3b\x81\x0d\xcb\xd5\x96\xa5So\x19\xfb\xa6\x89F]\xed\n-\xa5#\xca+$\x84d^r\x14d\x8e<\x00\x90Kq\xf5;\xe8+$\x1b\x9e\xc3\x11\x16\x81\x8a\x87\x98\xb7\xf2\x14\xf7\xeb!\xa7\xfa\xaf2\xa9\x97\xfeT:'kT\xca\xc9\xdae\xc1\xcc\xf6\x85\x8d+7\x17ww.\xdc\xdc\xdc\xd8\xdc\xdd\x9c\x90oY\xfb\x95e3\xb1-\x9f\x9f\x9e\xd1L\xca\xb3v+\x1dF\xfbe\x84\x17\xa8Q\xda;\xfbx\xc4P6\xb6V\xaf\xad<\xefH(B'&Op?\x89F\x17\xb7;BW&\xa5\x80\x90\x0c\xc4\x80\x8b\x1c\xc1-x8CV\xbe\xe4\xc4\x1d\x1c\xf8n\xd4%\x1ef\xc9\xe16\xbf\xdd\x9e6\xe3\xba\x96\x0dP\xbaN\xdee8\xb0U\xff\xe4,\xaf\xcf\xd6\xe46H$t\xae\x06\nIe\x159i\xc1 \x17T*\x939\xcfjl\x0c\x95T\xab2\xc7H\xe9\xa5\x1d\xbf#W,\x92[\x1c\xda\xcdG\x85\xa9\xac\x94\xdf\xd4\x9a\x97\x87\x95\xc2}\x8aq\xca\x93.\x86\xa9\xb9R\xebFC\xfca`\xaf\xab\x19\x96u\x9aLm|\xdb\xccET\x0e\xbbL\xd5ot\x9f.xe^?*H3\xb7P\xce\xa6\n\x8f\x93\xf5\xb2\xc8)?\xdaS\xf7Ls\xa7S\x1e\x96\xda\xba\x1b]\x98j[\x7f\x98\x98\x11B\x066\xc3y,\xa1\xb7\x10\xad\xa6?\x8a77\xc4\x9f\xf3/\xe6D\x86\x92Q\xdb\xcfaX\x97,\xd9\xa9\xf1u2\xe7\x10\xde\xeb!o\xfd\n\xaa\x17u \xcfH\x95\x14$z]$\xd6T\x96\xc6\x81\x15\x96\x88\xd7\xb9\xd1-\xe7\x05\xac[\xaa\xb5\x8d\xf3\x1b\xbb;/f\x81,\xc4hf\xdf\xcf\x86\x97\xf2\x0c\xaeG\xa6\xc8\xa8h\xc9\xe4\xd5\xf8\x8c+\x9f\x81\xc0\xb2\xda\x10^\x0b\x9a\xd5\x98N,\xb8\x96L^\xc0\xa5\x8d\xf5s\xab\xe7w\xb7V$/z\xde\x85l\x1a \x18\x16,\xdcG\x8d\xea\xb7+\xc0t\xc1\xf6\xb8\x04\x83\x94s\xf2\xd3E\xb3x\x90\xd4\xad\xfaO\xaf`\xa9\xe7\xa2d\x0bLY\xe0\xbe\xa4\xd2\x0f\x94\x98\xee\xd9\xc3ug\xc4S\\q'2}H\x90`\xd5a\xa9\x9a\xe5\xb8i\xdbS\xde\x0e\xdb'\x89t\x15)\x08\x95\xa1 o\xc3),D9J\xb4z\xbe8\xe2\xafDV\x1a\xab\x04B\xf5\xc7\x8a\x9a\x05\xcb\x967\xcb\xe2\x01\x19\x82\xec\x90Z\xe5\xe8\x08enr\x1f\x8a\xbc#\xd9\xa9\x83p\xa6v/'\xf7\\\xd3\xf1tb\x0b\xd2\xa2l\x0f \xb4\x8d\xec\xe4\x80\xecT\xfb\xcaQh\xe4\xa05?\xcd\x88\x90\xc5\xca\x96\x8b\xe7\x16\xb4\x18\x12\xb6\xa2\xa9\x84-fD\xaa:\x81\x8b)\x9c\xae\x17\xbaXIYt\xac\xe2c\xb9T.\xc9T\xd2\x95/%\x86\xe0\x1b\x9b\xa7\xc3vn#\xb9]\x9c\x17\x91\x92\x12\xeb\xe1o$\xa7S#@H\x11\x80\xce\xcb\x8d\xc24\n\xf8\xcc\xbe\x93\x84\xed\xd6\x95\xc5\xad\xf5\xd5\xf5\xf3\x0b\xcc>2?e\x1e\x8f\x13\xee:\xe00\xeb\xb1}?\x08X\x8f\xeb0\x1e\xed\x91\x19\xf2\x83\x8c\x8d\x9c[Q\xc2\xc6\\g\x9aB7\xe2;\xd3\x04\xbb\x11\xe7\x99\xce`,I\x98?\xa1W\x1b\x8f\xc1\xbf\xca\x9b\x039PF\xa9\xba(\xd7\x95T\xd0\xbc\x97^b\xed6\xbcp\xa1$\xe3(\xe6i\xab\xd3\x99\xd9\xe3_h%\x99\xf4~v\xa30s\xfc0U\x17N\xb2\x87T\x8bI\xdc\"w\xeb\xdf]\xe5\xc1\x98+I(\x08\xa2}\xeem\xc3\xa8\xba,\xed\xa8\xe46\x99\x84\xfb]f9\xe9\xba\x1d\x1f\x9e\n\x95\xb9\xcd\xec\xf4\xc0\xaf\xa3\x07\xddI\xa2B\xfdbh|u\x92\x81\xbc\x08L\x0b\x07\xb79V\xcd\x15f\x8a\\\x9f\xbb\xc1^\xab\xfes\xa1\xe9TMEtT\xa16\x18\xfa\n\xaec\xe7~e\xc6\xa3\xfa\xecL\x9f\x84\xdc\x1c\xf14\x1a\xf1)\xc5fSG \x1e/\xe1\x9b\x9f\xa4Y\xbb\x06G\xac\xb2t\xd3.V\xe4\xbf\xc9\xfc}\x82da3rh\xa2\x84\xb8 \x92D_$\x13\xa9\xeeg1\xa6\x06\xe2\x0b\x9b:\xe3\xa7\xe2?\x10\x1b|\xe4H\xa6\x8c\x95\xcf\xbd\xcf*\x97#2\x9b\xf2\xce\xcc\xc8\x89\xa7h\xa5\xd4\xd2\x91#!\xec\x7f\xddv\x1b\xaf\xd1#s\xb6\xad\xd7\x87\x0b\x99W\x19E\x84\x8a\xa2\xf0\xa5\x11A+F\xe5]\xff\x16\xfbFhD\xfc\x80\xbb\xb9\xf4,\xb0j!]\x95\xe5f\xfe\x94E\xd7\x90\xd6\xceH2\x88\xa4\xaa($\xcd\x8aB5^\xb8\"\xe1\x17\xe3\x99R/\xad\xa0\xb7]\xcd\xcf\x9a\x04)|\x9aj\x9f\x83\x89\x94\x1a\\\xe7\x8e\xe8\xa8\x0c\xd6\xd90\xaayr,\x97%\xa6x\xc1M,C\x968\x0d\xcf\xc9\xd6\x1f\x95\xe2\x80/(\x03\x90>\xeeb\x9f\xaa_\xd4\x89\xae\x97\x1eJ\xd4\x7f\x81%5*\x88\xdc~+hb\xfb\xe5W\xdd\xca\x1d\xe0VMS\xf6s_K\xc8x\x1b[\xa9\xac\x0d\x80\x93_\xcd\x1by\xb0\xa3\x0b\xcc\xb1\x83K\x0f\xde\xd4\xd8(\xcb\xaf\xe6X^\xbf\x95rJ\x1d-\xfa\x86P\x89/\xe3\xf1\xd2\x0f\xebnB\xd3\xa1\x94\xd8Vn\xe7N\xf0}~\x08(\x86\xbe\xd1\xf5\xaa[*j?\x917G\xdf\x80\x15\xa4#K\xdba\xfb$y\xe7:2>\x16\x13\xfd\x8dj\x05I>\xd3\xb7\x10\x16{\x82\x02\xf1\xf3\xa2\xfd0\x98\xd2\x1d\x89Y\xc8emj\n\xfd+\xf4D\x9e$\xea\x02\xb9Y]aZQ\x9at\x8d\x8c\x7f\x8e\xa94u?\x10\xf8Tp\xfb\xc95\x02I\x9f\xfb\xa0\xc4v\xcc\xddv6\x93 ~'\xf4\x8a< \xda\x9d\"\x93\xbf.\xb6\x9b\x04u6\n\xfdk\x1e\xbbL\x14#8\xac\xea\xa2[7\xc6\x00\xfe ,\xdc\x0d\xb8\x934\xbc\x8d\xa1\x7f\xcf\x83dB\xfe\x0f\xa6h3O\x82\x05[\x9e\x16\xfc\x13\x03\xde\x96^\xd1G\x1a\x1e<\xd4?\xf5 \xe9j\x98\xf1\xc4\xe5q\x16%\x0b2=\x0f\xfe*\x96j:\xf9\xb5\xfc#w\x8du\xbf\x1a\xef\xee\xf2/\xe1i\x1c\x85)'C%\x9f\x7f\xfbcu\x13\xee\xf10\xf3\x9d ]`\xad\xd4\x19qEg\x1b\xe2\xe0\xf4O\x91\xb7&\xa7\xf6\xf2OP\xc98[\xa8\xbe\xe2y+\x8d\xc2\xee\x1f\x1c\xff\x83\xc9\xe4\xad\xf9\x94\xdc\xed\xccdC\x1e\xb6\xfb]\xd6o\xb8$\xb0Bj\x96\xc9r\xc8\xa6\xd5\x8c\xb4@x\x1d\xa2\x1d\xcc\xd1\xec\xb2V\x11*\xa4i\x8a\xf9\x08zG\xab\xe1\x0d\xf4\xaa\x1553&Nx\\N\xdf\x01r\x95\x11G\xfcg\x01\xc4p)\x90Ws h\xdf\xa8\x92\x1d6\xebLdT\xd9a,\xa8\x85\x90\xb5n\xc2\x02\xddT\x93\xbb B\xf8\x04\xbcQ\xae#\xb6\x04n\xfaW\xb3I\xe4\xab\xcd\xff\xb9V\xb7\x0d\xaa\xdbh7\xe3N\xb7\xb9\xc6)\xa2\xce\x8c_\xfe\xddm\xb2\x0c\x97\x7fU+qe\xb8pc@\xcc\xd4\xfag\xbb\xd9\xb0\xda5i\xe7\xd3\x04\xd8L\x8a[113\x8d\xd9!u\x10N3v\xd5\xa3\xd5B\xb3\x0d\xd8\xf6S\xb3\xb6\xbc.g<\x98 \xd1)]\xf0nQD\xe6;m&=\xf5\x98\xdc`\xed,\xa2\x88j\x1e\xa0\xa2\x9b\xfa-\xfb\xbf\x90\xb5k\x82\xe7O\xf5\xab \xca\x99\x9f:&\xe7\xab\xf2 \xfa\xed\xda\xe5\xbe\xace\xf3\x85\x9e\xa4\x1a\xf32\xab\xe2M\xdf\x8e7\xf6\xba\xea\xdai\xbaH\xb9t\xe6EG\xca}\xe9x6j7u\xdba\xfb\xf4 \x12\x9c\xa6\xee\xa8N\x9c\xb0\\R\xc9\x00NZ\xc5Q\xa0\x93\xb3\xb3\xb6P\x04\x00\x11\x0bm\xaa\xc6pr\xb6\xe6\xecXB\xb9\xfe\xe9\xc5\xb3}\xcd\x01\x18c\x95T\xb2\xda\xc8\x80gk\x91\xeb\x04 `-4\x9b\x03\xb5\xf7\x834K\xc4N\x92\xf2\xab\xceHU\xed\xb4\x0bi\xa9q,\xbf}bf\xec\xd8g\x0fw\x130Tk\xfb>|op6\x85\xf3S\xb9v\xc0U'^w7_\xa2\x96\x169\x9b\xe9\x87`C\xef`E\xb9\xee\"^O\xe9\xb9\\#\xac\x06*}\x99[\xb9*\xa0\xf2\xb7<\xb7\xe6\x9cFh9\xda\\)\x1f~\x97\xf96\x03\xbf9\x0d~\xfd\x1dIh5\xe2\x87U#>{\x8d\xb5\xa3&\xfb\xbdR!:\x02w\x9f\xab\xd8n\x12\xb4[\xe2CU\x89\x08KV\xfd\xc2\xa8?\x93'\x81@2x\x81]HH\x99\x8a\x84#\xe7%\x04\x03\x89ED\xfd\x06\x9f\x9f2\xe6\x0fx6%\xa6q\x15\x0d\x83\xdf\xdf\x94\xf6\xfc\x05\x19J\xf8\x0d\x9d\xa5v\xef\xe8*\xe1q\xde\xf6\xda\x9f\xf4\xf0\xf0\xbf\xbc\x87\x07e\xb0u\xb1~\x82U\xdb\xef>e\x00\x91\x8e\xad+\xc5sE]\x96\xce\xecn./\xee\xac\xdc\x84\xd8\x86\xed A\x0df\xef\xe0\xb9\xf1j\xb4J\xa1\x04\xd0P\n\xdc\xeb\xce\xc6\xf9\xf3k\xd3\xf6\xfa\\1)8U\x89\x19\xb2\x8a\x05;\x82\x02=\xa2o\xc2=\xf7\xf3\xc9\xd3\xd7\x0d[\xb5\xd9\x1f\xa6\x91\xad\xa7\x90o+ \x16\xea\x8b1e-\xe0\xf8\x15\x8d\xe7\xd09\x9f\xfb\xbe\x91C&\x1b\x95c\xb4[xtNa\xb2f%\x84\xda\xf7C/\xda/.3\x86NZ\x93\x00\x0d\xff\xb2\x99\xc09\x8c\xf2L\xc7uKJ\xbe\xccy\xbc\xe6\x87{\x17\x9ct8\xcd\xfd\xd2\x04\x1b]-\xf4K\x98|\xc4\xae\x9a\xfc\xb6\xb5\x1b[\xf2\xcc\x99\x90\x06\xc4$\x1d\xdaq\x06\x0b\x85\xbb\x10\x1dJ\xe5\xcb\xdd\"\xd1\xacEUq\xa4\x9a`UU\x00\xf4\xb2-|\x07@\xdf\xb1+\x17\xce\xd7'W\xff\xf6 \x89\xbc\xcc\xd8v\x93(\x08v\xc0\xf5.U\xffPw\xe0\xf2[\xc2\x1d\xefp'\x82r\x8a\xb8\"\x1c\xae\xd45!X\xcd\x0e\x8f\xfd\xda\xb8\xf6\xbe5\xf2\n\x0c-'g\xb1\x97d\xaej\x9c>AR\xa34\x86\xb6c\xde(\xdf\xa0l\x07V\xac\xe8\x7f}X\xc1\xd4*\xc5\xe5e\x9cH/\x0b\xc67\xc9\xcf\x06\x9c5\x81&5\xc4\xbdLKp+\xef\xf8c\x0f{\xd8h-\xafU\xde\xc2\xcfT\xee\xe3\x08r\x1f\x17\x9e\xf6y\x8d\x99\x1e\xb2*V\xa9y\xd4\xe9\xb2\xb0\xdd\x91\x8f0\nT\xf4\xc3Ag\x8aG`\xc5\xfeG\x13#D\\Yj\xae\xe1\xd6 0O@k\xa14\x10Bi \x84\xd2\xa0\xa1\x9eV\xa6\x13!\xef\x8b\xe3#+\x9fK\xa2\xd1j\xba=\x8c\xf6\xc3\xef\xf3C\x89\x88u\x0d\xc8\xdca}\xf4:ls\x7f1\x8d&\xeeO\x8e\xa5\xf1\xd8\x19\x16O\\\xa9\xa1,\xd5\xb4Rr\xc0n\xa7\xac\x9e:B\xcc\x12\x93\xef\xc8\xa4\xa2\xf5u\xe7\xe5\x9d\x8cyX\xf65\\\xbb-\xe3\xd0\xe1\xcaA\xd3\xa4M'\x83v\xd9Q\xe6Iw\x16\xf1\xd7P\xaaTs\xd5\xf6^z\xe9\xb9\x1b\xac\x8b\x84\x98\xea.\xbe\xaa\x07N\xff\xb2Z\x95hT7\xc4\xc3\xf4\xb7\xf9j\xa4\xd6\xd8\xca\x8a\x8b( \x107\xa1\xcd\x9bYTs\xfdd\xae\x9dp\x1eIE\x06\xafs\xfaTW\xe3T\x86\xb5\x0cf\xaa95[GX\x85RV\xe4\xb2z\x0c\x9f\x92`2\x85\xe6`z)\xa8p\xa7J\x9f$\xbbh\xc2\x8f\xb1\xc9\x06\x04\x0f\x90\xcc5\x1c\x8d\xd6\x11\xf08\x13\xc4\x8c\xe9\xcc\xf9\x91\xa9\xd8\xe9J\xc4o*\xd1L4|\x9c\xf9w\xfah\x12\xfd\xd3'\x9e\xebwhT\xba\xdd\xf6\xf1\x9b\xc7\x07]\xd6b\xad >\x1c\x13(\x94#\xe9\xa8o\xe8\xa6\xa0\xa2\xbb%\xaa\xda\xf6\x1b\xe6\x18J\xfe\xdav\xba\xf0\xdc@h\x8eP\xdby!\xe7rl\x95\x9f&2\xf3\xa9,l\xac\xe2\xf7\x8b\xd0S\xe0\x9f\x96\xeb\x043\xa9Y\x03\xd7xi\xf9i;\x01\xfd;0Z:\xef\x80\xe1:D\x1a\x0c\x92\x11%g\xc7e*\x92\xa5-t\xacq\xddF5\xb2\xe8\x8b[\xb9f!A\xca\xbd`&\xec\x87\xc5Zn:\x89\x98/\x17\x92\x8cY9u\xd7-\x0b\xc8G\x1eg\xb2\xa8\x96\xac\xff\xd68\xc4@\xae(\x96\xf7\xa7\xb1\xd7O\xc3%d\xbb\x8aWP\x87\x1340\xbb\xe5\xa9\xda\x8d=\x9e\x01m\xc4\x94f\x04M\xf0\x8d\x97\xaf\xfeC\xe1U3\xe5\x97\x84|\x14\xe7\x19\xf7\xb6\xb3\xc3@\xe6#\xae\xad \xd6\xb4\xe5\xf4\xd2(\xc83\x95S;\x99\x89\xa3T\xc6\xea\xd4W\x93\xf1\xf7\xec5v\xbc\xed\xe4Y\xf4#X\xc7\x1f\x0d}\xcf\xe3a\xe78[\xa8\x02:\xc7\xeb\x99O\xab\xef\x1fp\x0f\xf7\\\xbc\x90f\xafidx\x99^\xf0U\xf9\x1fG\xf0\xe0b\x91^\xad\xa7\xd221\xbdm\xa5\x9cN\x97\xb5\x8f\xc8wTZi\xe6d\xbe\x0b\xae\xd3\xe5\x81\xbd\xf4\x12\xf3eZ\xe0v2\x13\x8dy\xd2\x0f\xa2}v\x94\x15\xff\xb8Z\xf9\xd7\x1b\x9d\xc2\xdd\xde>\x17=\xd3IX\x88\x14\xc5 \x960\xc0\xf3\xdaT\xa9\x93\x8d_\x88\x96-\xb0\x86D\xe7\xba\xec\x02\xab\x89q\x13\xbf\xcaQ^`\x83\x06,.\xb3\x9f\x056\xae/I\xa4\xae\x056\xb4\x13\x1f{\x1b\xa5{\xe9\xfa\x95\xa8r\xa6i\x1d\xbf\x18\xc3\x9e\xccM\xef$\xf5UZ\xac\xed\x01\xb4_\xd4{\xa44\x8b&\xa9\x1e^;\xf1\xbb,\xb7SgDX\xb2\xa1\x9fvY\x9d]\xd5\x08\xc1\xa9\xd5\x90\xed\x1aCv\xda\xe9J\xeb\xed\xec\xab\xac\x0f\x8f\xf8\xf5\x8f\x1e\xed0\xf7z\xbfj\xc8\xee7\xbf\x16/\xd8\x9cO3\xa7\xc2 \xe5\xbb\x83\xc1\xcc\xcd\x9b\xd2\xb9\xec\xe6M\xed\x12]\xf2)\x0f:\x1d\xe9a\xa6L\xe2\xbc\xcb\xae\x8b\xba&\xc9\xb2\xdb\xe9\xc8\xf0\x99(\\\x8b\x1co\xa2\xfdL\xff4\x07\xf6g\xe2$\x8a\xd3\"\x93\xc2L\x16\xc1\xc1j\xca5\xc0\x14\x17F\x92G8\x939\x83\xae|\x04U}]\xf5\x1a8*\xbe2\xadH\xb0\x82?\xd4\xe9\xc4p\xc3\x10\x12G\x02{V\"J\x96K\xe6\xe9\xbc\xb4\xd2\xf06<\x92I\x82.\xaby\xf6hO\x88=\xad\x84\x87\x1eOj\xcc\xa6\x8a\xdaL\xbc]a\xc5\xa0Rdq0Q\xaai\xec\x84\x84\x9c\xd1F\xfa\x0b\xf0\x9c\x04\xe0Cm\xe1\xbb\xdd\xda\x9e\xb8z\x90B\"F\x1d?\xa7\xab|\xa3\xd3E)\x19\xee\xb6\x8b.\xcc\x15\xf37\xda\x87\xe7\x1bG\xfaCi\x176\xff\xfc\x1d\xd9/\xfd~G\xf6\xbf8\xd9\xb7\xe8\x85\x9a\x13d\xce\xe0\x0b\xd3\xec\xf0w4\xfbw4\xfb\xab\xa6\xd9\xcf\xe7\x1ag!?\xb5It\xa28='\x13\xb2=\x87\xe3R10\xc4Kt\xba\xaf\x93\xb3\xa7-L\xe3E\xe5\xfb\xfa\xe6\xeeG\xa3\xb7(\xc9{gy/\xa5TA\xbe\xd5~\x86\x85&`\x13\x87\x0f\xfc\x97\x85\xa1\x93\xcc\xd4l\x8a`\xa8)\xed\x19\xcc\x04\xeaB$\xf9tlD\xff\xa6\xf5\x1e\xc2?U/\x91\x0f\xc0w\x1b\xbc7'\xb6f7\x9a\x19h\xb3\n\x03\x13\xbf\x98F!\x9e\xfc\x146L\xf6%\xe6os\xe3jwf\xa2P\x90\xdc\x80g\x96G!m?\xb3\x8c/\xbd\xc4Zz\x10\xe5@\xcdP^\xec\xa6<\xdb\xf1G<\xca\xa5\xbb3<\xb8\x7f\x86\x1d\x99\xeb|\x95+_\x0b\xad1s\x92\xaf\xd3\xd2Y9\x15\xeb\xa1/\xefF\xf9\xbd\xc6\x96\xe7d\xce\x82?r\x06\xfcx:\x1e\x1c=\x18\x05\xaf\xf6\x9c\x94\xbf|\xb2\xbbya}\xfe\xda\xe1\xd9\x13\xce\x95\xadYgy\xd6\xbftkq\xdf\xbd0\xf0W\x97\xceF\xd7\xae\x04\xa1s\xe1\xf5\xd3\xab\xb7V\xf7/]8{r\xd5_\x1c\xf0\xf3si/\xbctzu4\x9c\xf5.,\xbe\xbcvx\xfa\x84w\xc2\xcd\xbd;\x97\xf2\xde\x89\x8b\xe1\xda\x9d\xd5\xfdK\xcb\x8bc\xf7\xc4\xb5p\xd5?;\xef\\\xb9|\xe2\xf5\xd1\xe9\x93\x9b\xdb\xab\xfb\xab\xcb\x8b\x83K;\x8b\xfb\xab\xcb+\xfb\x97\x96V\x07\xee\x85\x8b\x81;\x7f\xf9\xd0\x1b]>\xeb\x9e8\x1b\\=\xb1\xb5}\xf5\x8d\xad\xb8wg\xd6\xe7+s\xf1\xb5s\xc1\xbas\xe5u\x7f\xf5\xfczz\xf5\x8d\xf5;\x9b\xdb\x17\xd3k\x17.e\xee\xe8t\xda;\x1f\xe4\xd7\x0eW\x07\xee\x89\xadS\xbd\xf3\xbb\xa7WG\x17\x87W\xe7\xb3\xd0\x1d\x9d\x9e\xeb\x8d^\xcf\x9c+s\xc3k\xf3\xbb/\xaf\x9e?5\xee\x8dv\xbf\xb3z\xbe\nw\xcf\x9f\xbe\xe3\x88\xbe\xe6O\xbe\xbcz>\xc8\xc5\xdfW\xaf\xec\x0f\x9c+\xa7b\xef|0\xec-\xa7\x83\xab\xa3s\xb7\x9cy\xef\xb0w\xe2r~mi\xee\xf0\xda\x1bg\x83\xabo\xbc^W\xde\xdf\xbcup\xcby\xe3\xe2\xad\xde\xf9\xdd\xc1\xd5\x13\x83\xd3\xab\xb7v\xf7W\xfd\xb3\xb7\xf8\xce\xac\xbf\xbe\xb3\xe8\xaf\x9e\xbf\x16\xf7\xce\xef\x9f^\x1d\xc91\xf9\xab\xe7O\x85kW\xce\xcdz\x17V3\xf7\xc4\xd6ao>\x0b6\xb7/~\x87\xcf\xaf\x8f{\xa3k\xf1\xb5\xc3S\xb7z\xf3\x07c7\x9c;\xbd\xea\x9f\xcd\xaf\x1d\xce\x0d\xbd\x0b[\x87ko\xac\xcf\xba\xa3\xd3\xc9\xb5\xed9\xb3o\xfcDv\xab7\x7fj\xe4\\qso>\xd8\xf3\xce\x0fO\xf7\xb7W\x07\xbd\x91\x9b]}ck\xd6\xf5\xe7\x0eQ\xdb\x87W\xafl\xc5\xde\x1b\xeb\xb8\xdc\x1d\xef\xc2\xc5\xb13\xbf\x9b];\x7f\xee\x8es\xfe\xdc\xa1;:w\n\xd5\xdd\xbb\xfa\xc6zt\xf5\x8d\x8b\x87W\xdf\x08d\xfdb\xfc\xab\xb7\xd6wv\xe7\xc4\xffV\xfd\xb3\xa6-\x18\x93X\x93\x15\xb1&\x87\x9b\xdb\xabw\xd6K\xf5\xd6\xael\x0d\xdd\xf9\xe1\xd0\x0d/\x0e\xc5z]\xda\xb9:\xbbvk\xef\xce\xa5;W\x0f\xd6\x97/\x1d\\\xba\xf3\xfa\xfc\xfa\xf2\xca\xdc\xea\xf2\xee\xfc\xda\xad\xbd\x13\xebw\x06'.\xed\xbc~g\xfd\xce\xe0\xf0\xd2\xce\xa5\x93\xab\xb7N\xber\xf5\xca\xa9\xb8w\xe5\xdc\xec\xb5\xcb[\x87W\xaf\x9c\xbasmt\xfa\xb0\xb7}V\xae\x99s\xe5\xe2\x9cw\xfe\xf2\xc6\xd5+sb\x8dg\xdd\xd1\xb9\xdc\x9d\xbf6vG\xb3\xfe\xea\x85\xadS\xae\xc0\xa1\xf0\xe2\xd8;\x7fn\xf6\xda\xf6\xea\xe0\xea\xfc\xb9\xf4\xea\xec\xdc\xf8\x9a\xc4\xad\x83\xb87\xbau\xf9|\x90]{\xe3\xd2\xe9\xd5[\x8b\xdf\xb9\xb4\xbd:\xb8v\xe1\xb2\x98\xf3\x81{\xb8:\xb8:\xba\x1c:WN\x9e^\xbdu\xf6\x8eX\x0b\xc0\xab\xade\x81g\xde\xf2\xac\xef\\9\xb5w\xed\xca\xb5\xb87\n\xc4X\x8en.\x9d\x1e\xf6F\x81\xd8\x9f\xe0\xf2\x85\x8b\xc3^\xb8>\xea\x9d\xb8\x98m\xde\xda\x1f_\x9d\x0f\x0e\xaf\xce\x1f\x04\xe2oq\xe66\x07\xd1\x99\xd67D\"X\x8a\x82\xc0\x89Sx\xbab\xcd\x0f\xf7\xe4\x1f\xe0\xcb#\xff\\\x0d\xe3\x1c\xfe\xda\xe1\x07\xd9b\xc2!\x0d\xea\xd9<\xcb\"\xe0\x16[\xd2KX6\xa5\xfe+\xb3}\xcb\xb7{\xeb\x82\x11\xa5\xff51Ch\xcf\xecW\xac\xafS\xf6mF\x10G7f3i\xf4mF\x90T\x01H\xef\x81\x02\x10#\x88\xab\x00\x15#\x88\xf4\x13\xb7\x9b\xbf\xbf&\x87m\xdaqLx\xbd\xb10p\xab\x85!3\x16\x06\xae^L\x98}\x95\x85\xec\xbb\x8c\xbf\xca\xc2\xa3G;L\xc5\x0d\x17\x16\x86\x10\xa9\xe1jb\xd9tI\xa3U\xe9#G\xd0\xac:3\xb7\"?l\xb7X\xab3\x93%\xfe\xa8\x8dEg&\xb5\xfc2f\xd5wd\x96#\x9b\x14\nLl \x99R\xdbSb\x1c\xc9\xa8a\xa4|G\xdc\xe9(\x99\x05\x8a\x17\x12K]\xec+\x1aIPj\x0b\x9e\xdfE6\x85\xccj=\x98`9\x98\xd6j\xa0\x11\xa4\xd0\xd6\xebET\x95\x834\x0f\x82\xd4M\xb8\xed\x81)\xfd\x0bM\xc9\xfa2\x96\\q\xbc\xcb\xae\xb7\x8a\xf6e&\x9d<\x08j\xdf\x1e\x93\xc9\xec\x8cg\x8e[k\xf5\xe0 \x88B4\xaf\xad!\xed\x84\xd4J\xf7\x9d\xc1\x80'\xc7\\\x8dn2\xabN\xc8^c\xadcr(l\x81\xb5\xea\xbc\xc6\xa7\x1fG\x9b>3\xe97\x99e\xdc\xc0I\xd3u\xf9XZ\xdc\xf6g\xcc?+\xafj\x95\x7fw'\xbb>\xde\xe8Tb\xfd\xdb\xae\xc5\xceR\xa5\xde\x1e\xf1\x97\x1bE=?\xe0bI\xaa\xfb\x9c9\xbd\x80g\x0b\xacu\x0c\xfeB`\x8f\xa7{Y\x14\x0b\xb8\xfa\x13\x15\x08\x9cd \x9a=6\xf4JW\xb3\xafV\xe8A\xf0;J\x00\xbf\xdf\x1a%\x18\xfa^CV8\xa0\x01{\x9c\xc7K\x90\x8d\xb3\xa1=I\x0b\xf8\x0c\xa0\x93\xd0\x02\x01m\xba\xd2\x9bB\"\x88\xf8Sb\x05\xf1\xdb\x90DC\x0cE\x90\x8brw\xe2\xdf\xd0\xa2|\xabQ!\"k\x19\x94c-\xd9b\x8b< k\x86%\x93\xf1\xbe\xf4\x12;\x12NAe\xc0\xb6*C\xe8\x9b\xa9\xcc\xf5\x1a{\xb6\xe1\xd89\xf3C\xe65\xbb>z(\xedG;\xefL\xd2\xf6\xf5u\x83W\x1b\xec\xa4\x7f\xa2\x83\x1c\x1e\x0d2F\xdc)L :\xc8\xa9\xa85\xb1'\xa6z\x0b\xd8w\xd9\xdc4}0\x99\xd4Q\xbe\xe5\xd2\n\xa3\x90\x0b\x02=mT\xad\xa0\xea~\x98O\x91hob =\x84^\x10\xb9{0\x86\xae\xf9\xe8F\xc11\xf9(\xa5\xfc\xde\xd8\xd6\xf3\xda%t\x0cW\x8c\x0c%\xd7K\\\xc1\\\xca8u\x88=\x11\x97\xbf0\xa7J\xb3\xc3\xa0\xf6yl\xfd\xf3\xfc4\x0e\x9c\xc3\x05\xe9}\xacv\xd1\xf2nG\xf9\xd7`9+1\xc7\x9a\x14J/\x86\x19v\x8d\xc2\xf3;\xb6\xf3\xe2\xd8\xce$T\xf4\xfc\xb1\x1d\x0dK|jZ\xc9\xa9\xa8R\x16\xa1Z\xfb\x89\x13\xc7<\xa9u\xd2{!\xd8S\x1c\xc4vI\x85\xfe\x1d&}}\x98\xd4\x93\x8b\xfeU#\x93\xea\xe5+\xc5\xa5\x8e\xfe&\x98?\xcd\x91Y\x1af\xabF|.\x19t\xeaQp\xd2\x82f\xfc s\x12\xee\xb4*\xb7\xec2\xb5\x936\x1d}\xf1\xc6}\xd1\x02j\xb9r\x86\x8c\xa1j\xaa3Tw\xa1Ws\x80(\xdb\xd4\xe6\xab/z\xb0dV6(-\xc7b\xe9b\x08\x85lo\x81\xeb\xe8\xcc\xba\x17 \xd4jB\x00\xa7<02\x15&\xfc\xb5\xc0\xf8\xcc(\x0f2?\x96V\xa7\xeb\xad\x96\xf4\x0bo\x89S \xaf\xf6j\xb3\xac\xaa\xa3\x17Q\xa4\xedZ/~\xf5\xef\x1bC\x13\x9e_\xa9Q\x0f\x0d^\x16\x1d4\x14\x06\xedF\xafj}\xb9\xa4hte\x14g\x87\xb2\xdd\xfa\xe2\x91\x1e\xab\xdc\x17\xd8?\xf9<\x12{\xcd\xfe\xbd-\xb3u!\xc8\x17\x15\xfa\xc4\x81jt\x0f)Q\x16+\xf9\xab\xad\xa8\x17\xaa1\xab\xac\xc6\xb6\x86\xe5 \x97\x86N8\xe0\xc6?\x05\xfei-/P\x94\xbdV?\xdd(V\"n\xfdt\xd5\x80Z\xf6d\xd6w\xbb\xacu\xecX\xab\xa3DWA\xf6\xaaq\xca\xd3\x054|\x99\x012}R\x1a\xa2 Y1\x91m\x999\xb7)}\xfd\xddnQ\xe8\xb7\xc9\xc2\n|92\x87\xac\xfe\xd5\xa3T\xbd\xd7\xa8\xda\xab\x86\x93BM\xcb\xd4\x81\x9e\x99\n\x8a\x95\x9b\x9a\x18\xf2\xc9'\x91\x1a\x08\x9e\xd6m7\x93\x83p\n*\xe3K\xab\x02\x84\xd7+N3\x939\xc9\x80g3\x80Ei\x83\xf3\xb43\xe1\xa5\x1b\x01\x8f\xd8k\xcc\x9f\xce\xd0\xaf\x7f\xc6\xb7\x06\xe8\n\xb7\xfb\x91\xdd}\x9e\xe0~\xd3\xa4\xc4\xe7\x9a\xf6\x04=\xd4\x93\x97\xe5\xba\x103\x04\x81!\x13\x0f\xbbS\xd3l\x17\xdc\x1a\x12[\x88>\xc2\xff\xeaR\x8f\x85\xd0`.\xd8\x9a':A\xe8g\xbfe\xc1\x9f\x91\xb9\xb2\x17\xc2\xec\xd9d\x86\xcf\x9e\x83\xe9\xb3)\x88\xab\xf3e\xf4\x00\xe8 X`\xad0\x8ab\x1e\xf2\x84\x85Q\xc2\xfb\x9fCe\xd5e\xb0\xce\xb6\xd1\x8c\x98c\xf3\x04\x9d;\xf4\x03/\xe1\x96\x90\xeeIK\x0e\x9a\xbc}U'\x9a\x8d\x86\xdc\x1f\x0c\xe5c\x13ymR\x18\xf1\xebE\x89\xc7\x93\x05eUj\x10H\x9cd\xe0\x87\x0b\xac\xe1\xa1\x92\xd8\xf1\x95\xfa\xf2O\xc9\x04\xb0\x1ee\x8b\xa1?r2\xee} \xc9_\xdfN\x17'\xccO7\xc4Y\xf5\x1a\x84\xc2\xb1\x8e\x19,\x1fL\x85\xf0\x82\xb1\xd4\xe2v\x18\xa5n\xe2\xc7\x99\xbe\x00\x98@6\xef\xda\xce\xc1oO\xe5Q\xab=I\xdb\xd1\x0b8I\xdb\xa9'\x11\xac\xb41\xec5p:\x0e\x95\x8f1,\xfc\xc4\x9dI:F\xe3!\xe8by\xb3\xe3\xc5\x8b\xa6z\x15,\xa2\xa9\x1a\xc6\x82v\x00d\xec\x9b\xe1\xffK\x9dp\xbcZ'\x1c\xcf\xe6j\xe3\xeb*6\x1f\x1c\xcf\xe6j\x93+\x8057\xa2gs\xb5 \x14\x80\xe4\xecw\x15\xe0\xf4+\xa71\xa8\xaf@sd`\xb1\x86\xd8\xfdt\xbc\xaf\xc7OG\xffE\xb4\x91\xe7\xa5\xf5E\xfcQ\xd2\xb5\xa5 \xc1d\xbc\xd6\x8c5!\xee(\xa8\xc4\x1d\xb9\xe0\x15\xe4B\xdc\x91{\xf4h\x87\x05\xd7\xdd\xaaW\x90k\xb9\xe0SK)\xa8\x866\x99\xe5\x84\x11\x81\xdf\x19aF\x115\x9b\xd5\xc5\x1c\x052\xe6(\x99\x19\xf0\xecR\xe4\xf1@HO\x13E\xec\xd2\xf8\x94\x17?7^\xfc\xad\xdf;^z\x15\xfbxKf\x93+2\x87\xfd\xe1\xcc\x1f\xfc\xde\x0f\xca%~p\xfcx\x97\xb5\xa4\x05\xc0\xd6\x96k\xd2\xd8\x1eO\xdd!\x1f9\xa4\xc9\x9aB\xbaQ\xd0\xca\xc8\x14\xee\xaaIo\xf1\xfe\xb6\xac\xf2<\x93N\x14[\xab\xbc\xbf;\xd3\xf7C\xafx\xde\xdbf!\xb8\xdb\x85\x9c\x14\x84\xa1'\xc4 \xa5V8H\xad\xc2\x81\xf3<\xc2\xc1\xd7\xca\x18Uj!\xb9=\xcdJ:\x9f\x98\xff\x94)2\xca\xa7}\xf9\xd8\x81\xc2r\x83\xebK\xe5\xb2T\xc2o\xe7~\xd2\xc4\x99SY.l4\xd2\xb9\x8a\xcbo\xf1~}\xa1\xbe\x99\xc3f\xeds\xf9L\x11`>\xa3nz\x9b\x8d\x832\x8dd\xbb\x05\xecN\x9e\xe4V\x83\xb9b\x08\xa5%\x95\x9aXx\x0c\x857\x13\x7f\xe4g\xfe\x98O\xac0bgX+\x92#i\xd0\x1e\x06\x82\x04\xc2\xab\x902)\xd0\xef\xff~\xc2\xfbuna2 \xa9|\xccx\x00\xe1\x0f\x1a\x07\xcbt\xab=\x10\xb4\xec\x88S\x14sJ\xc5\xccIo\xa7P\xcc\xb8\xa3\x04\xb5\xd6\xdcI\xa1~\xe5[\xa2\x91\x18\x06\x93\xff\x7f,\xf3\xb3\x80\xd7Z<_`\x7f\xd0\xd3\xcd\x9b\x19?\xc8j\xfb\x8b\x05_\x10\xbc\xa8\xb6c\x7f4h\xec7M\xdc\x05\x16\xb6O\xce\xcd5!\x95V/\xe7g\xe3\x83\x86\x8d\xdf\xf7\xbdl8\xb9\xd8Du\x96\x19\x15t\x8d\xf7E\xbfs|4\xe9\xa5=\x95\xbcL\x92\xc2\xc0\x11\xd8<\xa1F/\xca\xb2h\xb4\xc0Zb\xb0\xb5%k\xe2_\xea\\G\x04\x15=\x94\x89\x1a\xfctcq\xfbD\xbbS:\x07\x1e\x8f\x13\xeeJ\xcd\xad\xa6z\xba\xef\xcbL\x84\xae1:J\xbe\xe9\n\xa5\x8c-\xb0#G\x06]y\x06\xcb\xa7+;\x8c9\xbc\x997j2\xf9\xb8N\xca\xcd\xd9]h\\\x99 \x87\xc7\xa3\xb6\xa1\xc6\xe6\x18Bo5\x86\xc6:\xcfelb*\xc0N\x90\xdc\x05\xd6@\x9d\xf5\xaf\xe0F\x8d\xf7)\xfa\x07\\\xa6\xf1\xa12\xfd\x0b\xe5\x14\xa7xL\xbf\xc0\x85\x05v8\xb9\xb8d;\x0b\xccm^\xb4\xa6\xcc\xb1\xb0\xff\x8e\xe0\x0b_n\xfb\x87_r\xfba\x08/v\xf7\xff\xf1m\xa8\x96I\xea\x1e\x8b\xd3\xbf)\xf6T\xbd\xf8X\xbf\xa9P,\xccG=\x9eL,\xe6\x87\x19\x1fLQ\xae\x17E\x01w\xc2\x86rZ\x03\xfc2\xc86\xfe\x92vh\xa6\x91C\xc9\xa9\x13\xef\x02\xd9\x7f\xe9\xd8d\x85O\x8c\xe7\xac\xb5\x0c\x95\xb0s(\xb7d\xe70\xe6\xd4,\xa4\xd7\xa8o\xf6YZ\xa2\xb9w\xc9\x89\xa5Lm\x93\xd0\xab\x1b\x17\x9b\xaaB\x97i\xae\xa46o\xca*\x15\x95\xa3\\\x0b8Um=\xd8\xcd\xa28\x1c\xc4j\x99\x92\x88?\xa9\xa8\xa2\xf1E!q\xc4\xaaE\x8a}n*\xc5\x0fbG(\xac\xb1`\x87EA \x00hx\xd3\x14*\xf1VS.\xf0\xd3\xf2\xc2\x14\xa8Q\x8d\xa6\x87L\xa5\xbf]\xfb\x9e\x18Q\xea\x08\xdd\xfd\x8e\x0c\x90\n\xa8\xc1/\xb7Y\xd6\x84\xe6\xda\xce\xc1J\xd6\x95EN\xce\x9d\xea\xd8\x8c\x7f\xb2\xd0\xec)\xab\xfdO\xc2\xe6N\xd8\x0dm\xf9\xd7kh36\xb0\x19\xc7\xf3.D\xd1^\xbb\xd5\xe3\xfd(\xe1\xdbjy\x14\xd9M\x1b\xd3:\x9a{\xe6a\xc2\xfb0\xcc\x94g\x8bY\x96\xf8\xbd<\xe3m!\x80\xb7\xba\xf6\xdb\xbfN\xb74LlzM\xa7q\x89;\xfe\x87\xd7\x17\x8f]\xfbA:{\xec\xf4\x91\xd7~0s\xe3\xe8\xef\x1f\x1f\xa8d\xc5Ug8\xba\xda\xf5i\x98\x8a\x85\xd1\x88\"\xf0\x94\xae\xf5\xe2\xf2\xf2\xcd\xc5\x9d\x9d\xad\x05v\xbd\x05\x97\xe8\xadj\x86P\x92\xda\x82\xd5\xe6c\xc2C).\x11\xd3(O\\\x8bE\x00\xee\x19\x1a\xfc\x89\xfcBm8s\x06\xee\x0eZ\xd2w\xbc*B\x08\x95;mgE\xd6\xe6\xa4N{\xac\xbb\x94\xach\xabN\xb2\xe7E\xfbaU\xa4\xbbK\x0d\xac\x10\xbbq\x86\x85|\xbf\xb0c\xd6\x08\x8f\xc3l\x14\x88clg}\xd9a\x1c\x0d\x12'\x1e\xf2\xa4\xbeP/\xe1\xce^Z\x0f\x0f\xfcp\xcf\xef\x1f6\x17\xd8\x91\x9b\xbc\xc0Z7{\x81\x13\xeeY\xd2\xa8w\xd4EK;\xb3(\xd0\xae\xcc\x12\x96\xa3\x850w\xff\xafI\x15\x05\xf8\x9fq\x8d\x91\xe3\x8aa\x7fJ\x86\xa6\x01\x04\xb1FN \xd6\xeb\xd9Gx\xd7\x17/m.\xb0\xd6K\xa4|l\xf9\xba\x18J\xccy\xfc\xe7\xb84|\xbf\xf7!\xfd\xae@\x8f\x7fNA\x00\xf8K\nH\x83H>)\xf1\xec\xf1_P\xe0X\x02\xfe\x1b\x02\x90\xb3\xbbGvDz\xa6\xb6\x9e=z\x9f\x02d\x94\xac\xb5\xca(\x85\xf9`,\x02\x90\xe3\xc8\x16?\xb2\x03{\x12\xf8\xd8\x0e\x94\x07\xf2\xd1\x13;P\xf6\xf9\xe8\xa9\x1d\x08\xb3\xf8\x1b;P\xe2\xfc\xa3\x7fm\x07\xca\x85y\xf4?\xda\x81\x12#\x1f\xfd\x1b\nL2\xb9\x02\xbf\xb2A\xc6r\x8e\x0f\x08]\x01\x18L\xe3\xaf(0\x05\xfc\xbfGhE8HEo\x9f\xfc\x84\x02\xee8\x89\xc0\xe7g\xff\xfc?`T\x8c\x06\xd2\xee\xfa)9\xd0\x1a\x80[[\x8c\xe2>\x1c\xf5\x7fO\xaa(\xc8\xcf\xff%\x86\x88S\xf0\xec\xfe=\xf2Y\x10>\x89\x88d\xe9bID\x1fcJ\xe6\x00F\xdf\x7f@\xbe\xfbr\xc1\xee?$\x80(]`\xado\xe3Y\xc4qpxN1#+\xa9s\xe28\x89\x0ej\xc6-@\xfc\xb6u$\x8b\x89\xf4\xac\xb2l\x83\x06|\x80k\xa4.\x10\xcf\x7fI\x0e\xb1\x81\xfco\xa4N\xea\x0f\xe4\xc0\xef\xff\x8cT\x12X\xf0\x07\xe4\xeb\xe1\xa8f\x17\x04DM\xe6\x9f\xe3n2?\xf0$\x8d&L\xd1@\xfe\x07\\'\x17\x02G\xeb\x13\x82Q\xea;!!\xfbn\x14\xfa!\x1c\x14\xcc2\x9d}\x05\xf9\x08S\xf5\x9e\xe3\xee\xb9\x11\xd0\xab\xfb\xefZ\x80Z\xcf\xee\xbdG\xa0\x89\xa4\xbaO1}\xef9\xc9\x98\xcb\xb1<\xc0\xfd\x9du\x92}.1\xfb]\xcc\xbb{\x05\x08\xa3\x1a\x80\x80dS`/\xd9\x13\x80?%\xf3\xee%{\x99\x06\x92%\xab]\xeb\xb3 s\x90\xfd\x81\xcf\x98\xe7\xf6\xbc\xdby$\x97\x1dK\n=\xee:y*W\x0e\x8f\xec\xac\x04q+\xac\xd7\x08\x1b\xc5\xd9\xa1\\\xf4G\x98\x92\xf4\x04~X\x91\x83'a\x94\x8b:oc>qV\x82\x82\xc0Ok\xc0\x99\x9430\xf9\xeb\xa9\xef\xff\x0b\xfd\x0e\xa2\x0c\x1dB\xb6\xcf9\x1co\xd2\x89\x96\xb4\xc8\xbej\x00f6=\x7f\xe0\x02\x05~\x88\x05O\x01\x02\xd1\xf3\xd9/0 \x16\xb0\x1c\xaa\xe1\xc3\xdf\xf3\x07\x91\x17\xc1\xb9\xc4\xb2\x93\x80\xc5\x01l\xe4GX~\x12\xc0\xcc\x1fq\x80ZF\x93\xdeV}~D\xd0\xdd\x1f\xa4\x99#\xb9\xc5_\x90\xa9\xfb\x83,\xf1\xa5,\"\xf4&Q\xe6=rr\x8b2\xd0\xc3{\x98\xd6\xf4\xfcAnF\x8e\xa9W\xcf\x1f\xa83\xfa\xd02)s\xda\x1e\x92\xe5\xd8s\x92h_\x80\xde\xc7\xd4\xa2\x178\xee^\x10\xdd\xe1J\xb8\xfa\x10\xcb,\xb2@z;w\x12 \x7f\x0f\x0b<\x12\xae'%K`5\xa1R\xc2,\x0d\x968*\xa5\x02\xb8\xb5}\xf6\x0b\xb2;\xe5R\x89\xbaT~\xf6\x1e\x96\x02\xa4\xae- \xff\x023\x86^\xb077/\xeb\x90\x03\x12\xec\xcd\x9d\x94\x10BE\x82\xbd\x13\x00\xc1\xc2\xb2LO !\x98\xa1\xf5B\xb1\x18g\x9e\xfd\x183\xda^\xc8o\xe7\xbe$\x07\xf7\xff\xda\x02^\x07\x94~\x8a%\xc0^\x08\x80w\xb1\xbau\xd6\xc8B\xff\x07\xaebd!2nh\xeb\x01\xe9]_i\xdb@\xfb\x99\x0f\xe8E\xe6\x1a\x1d\xf4@J\xf9\xf0>\x05-\xaf \xc8\xcf\x7fa\x81\x04\x12\x82YT/:\xf0\xa0\x0eV4\x04D\xd6\xf9\x19^\x04\xd1\xda\x96\xac\x83%\x11\x01\x91\x07\xd6\xb2\x08\x07\x1e\xd4!\xa8\x10\x1dx\xb2\xce\xcf\x08O\x8f\x0e.\xc8*\x96\x01H2\xfa3r\xf6\xa2\x83\x0b\xcb\xb2\nVo\x05D\xb2\xce\x9fciD4\x06u\xe8.\x1c\x0ce\x9d\x9fa\x92,Z\xdb\x95u\xb0\xbe\" \x92\x95\xfc\x9c\xf0\xfc\xe8`\x08u\xb0\x02$ \xb2\xce\xcf\xc8i\x8e\x0eF~\x08\x04\xea\x01\xa1\xf2\xd1\x81&^\x0f\x08k\x8d\x0e\x0c\xd5}\x80\x15\xb5^t\xb0\x0b{\x8e\x95\x0d\x01\x01<\xc1\x82i/:\xc8\xa1\xce\x7fk\x81\x00\x9e`\xa5S\xb4\x06{\x8e\xb5N\x01\x01<\xf9\xa5\xa55\xa8ci-\x07<\xb1`\xddeY\x85\xd0\x92\xe8@\x9e\xfd\x9f\x11\xca\x16\x1d\\\x06\xd4\xb2\xec\xece\x89[?'\xb49:\x18C\x1dB\x95\xa3\x831\xe0#V\xb6Dk\xb0j\x844F\x07\x97a\xa5\xb1V'Z\x83:XA\x11\x10Xi\x0b\x0e_\x86U\xb3\xec\xf5eXi\x0b\xfa\x8c\xa1\x8e\x05y\xc6\xb0\xd2\x04\x0b\xeae\xe8\xb3\xca\x98\xf6k\xb2o\xf5\x80qO\xb2\xf7\x8f\xf1a=\x0bZ\x10\x95\xb7zF=\xfa\xdf \x84\x8f\x84p\xf7\xec\xad?#\x90:\xc9>Us!R}/\x8d\xc4:\xff\xe0\x07\x96\xefR\x85\xff\x90\xc8#i\x14\x0c\xd3\\\x02\x7fEHv\x1e\xc8m{\x93lu\x1e@j1\x1bH)o\x7fj\x01HM\xf9 \xb6L\x08\x08\xe8\xcax \xce\xe6F\xdf\xb35\xa7@\xb8\xd6\x92\xb6E~\x8a%3\xd7@~J\xea\x80\xfc\x88\x89\xbc\x12G\xefar\xe9:\xb16ta\xf9\xcbu\xe2^\xa2d\xc3\xc7\x98\xd5\xb9N\xac\x9a|\x8c\xf5\x7f\x01R\xb5\xf0\xe8\\'VB\xecc\xcc9\x96\x9c\xd8\xcf\x9c`\xd9\xef\xf7y\xc2\xc3\xccw\x02\xc9\x14~\x82w\xdaubPY\x1e\xff\xe7\x7f\x8f\x1bq\x9d\x04\xb6\xf3-,1\xbaN\"\x15\xd3_\xd3\x05;\x0c\xf8!h\x17X\nqu_\x8f1\x82.\xe9\xf6>\xc5<\xd35\x10Z\x87{\xbe\xd4\xc7\xc9\xb2\x18\x08\xe6YKJW\xf8\x14\xa3\xb4\xab\x01xc\x96J\xaa=V\xc0\\7W\xf3\xa1\xa3\xce\xe34\x95\xc7\xf41f\xf6K\xb0e\x9fb\xb3\x8b\xab\xbe\x93\xfdW\x93\xf9\x18\xcb\xa9K\x02\x1086\x90[R\x1b\xb1\xce\xe6J\x7f\x86\xd6\xc7\xf8\x84.\xf10\xe3\xc9\xb2\x1c\xc4\xc7\x98\x1c\xb9\x12\xe8\xd9\x81K\xfd\xc4\xbe\xdfZ\x9f\xc3D|\xe9\x02\xa8\xd6x{\xdc\xa1\xfc\xfe\x0fdC\x87\x1c$\xe5\xbf\xc4b\x98\x84\x8c\x9c\xc4\x0e]\x1a\n\x12\xfa9\xedF\xaa\xcd\xa4\x17\xb0\xe4\xfd\x82l\x00\xa0\xc6\xaf \xd5\xf0\x13W\x91\x1a,\x9f\nP\xc0\x9d$\x89\xf6\xb56\xf2\xce\xffY_\xc6\xe8\"\xef\xfc_\xd6B\x1eX\xc4\x9e=\xc0\xb2\x8a\x02k\x0d\xf8\x01\x96K\x14\xdcS\x06\x9d\x07X>Z\x92\xf0e%\xd0c\xd9E\xd5\x16L\xf5cL\x9c\x15l[T\xfcs|\x9a\xa0\xd9KF\xd2\xc3B:\xc07\xb5\xb0\x87%u\x00\xef\x18y\xcf\xb2\xba\x92c|\x88\xb5z\xd7\x07=\xd3\xb6\x1f}}\x8c?\xc2\x07\xd2\xf5\x93\x11\xd8^\x9fb\x0b\x82\xeb'\xa9B\x8b\x0f\xb1\xcc\xb5$\xd4\xb7}?\xe5KQ\x98Ey\xb2\x1af|\x908\x923\xde\xc3\x87n)\x88R\xbe\x94'\xc1\xe1r\x94\xf7\x02\xfez\x1ee w\x90-1%\x8b2dc\x82\xbc'\x97\xe6\x97X\x0c\x93\x90\xdc\xcf\xac\xc0\xa5\x08\xac\x89\xcf\xee\x91\xe3\xad \x0b\xb6\x1ap\x03\x83Ey\xd7\x80\x88\xfd\x16@\xb7k`\xa3\x91 Y]\xdbw1\xec\xff\x8a\x02\x80\xd5\x12\x16\x14\x8d\xe2>L\x07Kb\xae|\x19a\xc4\x15\xdd\xb6\xd5\x0c\xf8\x01`\xd7\xdbx_\x8d\x99\x90p\xca(\x1chv\x8bI\xddR\x14\x0e\x92\\ux\x1f\x0b\xbaK\x05\x0f!\x18V\x80\xf0\x11\xb3\xe1\x15-#\xb5t\xdb,\xb4\xfaNw N\"\xb8\xd6\"\xacI\x82r7\xb3C76\xaf\nR@d\x9e(>\xac\xfb\x9e\x02g\xc0\xe7q)\xca\x05?i%\xa2e\xa6\x90\xec!\x99M\xee9I\"W\xe7}26 \x93\xeb\xf3>^\x1f7\xe7\xb1\x84<$s\xcdy*9\xc7C\xacM\xb9y\xa0\x97\x1b\xdbv\x01$\xa7\xf5>\xd6A\x96\x94\xbd\x95\xf0i\xf8~\x0f\xab\x9an.\x84b%\xf9\x126\x92\xc7J\xfe&\xd7:nn\xe4e\xc2\x96s#/\x13\x11+\xd7\xf2\xf2\x03K\x83\x11\\\xe4\x91c\xaf\x84\xbc{O,\x02rn\x90\x92\x90T \x92\"\xe0\xfbX\x8dv\x05y\xe7\xb7\xe3\x84\xbb5\xdb\"\xe1i\xee\xd6mN\x12\x1cjc.\xd6\x80$\xb00\xe7\x12\\\xcd\x93D\x1a\xe6?\xc6J\xb7\x9b'c$\xb3\xd0\xad\xd7E\n\x91\x85N\xbc~d\xea\xba\x87\x0e\xaa|\x83F\x04V}\x83v\x0f_\xc5\xb8\x87\x81\x9b \xda\xf3\xec]L\x90\x97e\xaep\x01z\x13Sc\xaf\x00a\xc1\xd4s\x02}\xa3\x81\x0f\xd8\xb2\xdeh\xd2\xdc\"\x00~\x8aq\xde\xd35(\x00\xc4\xb171QXv\xd2!\\\xb0\xe1\xbd\xf14\xe4\x01f\xea^\xc9>\x8f\x97\xd5\xeb\x05\xd2\xd3\xe0\xd7X\xc8X6Z\x15\xde#\xcf@pc\xcb \xb3cv\xe2\xc1g,\x1e,\xdb\xb5M\xf0\xf5\xf8 >\xb3\x9e\xd7\xb0]z\x1d\x7f\x8a\x8f\xf3\xf2r\x94%\x0e\x984\xdf\xc7\x94\xd7\xf3\xa2,\x05!\xe41FQ\x8f\x0b\x0e\xff1\xd6\xe7\x969p\x1e\xac\x18,\xf3\x00\xae\xbf\xc8\xdc5\x00\xcf\xde+\xe9_\x18i\xbd\xbe\x9f\xc2\xd1\xf9\x00\xbb\xe0,k\x85 \x8f\xc0\xd3\x00\xb28\x17\xe0B\xe9\x03l\xeb\xf5\x86\x0ep\x8a\x9fb!Y@`=\xb1\xcc\xb0\xec;n\xe2g\xbe\xeb\x04\x8bun[\xa52\xa06\xfc\x1a\x0b\xa7\x95\x12B\xd6\xd5mQ,,J\x9eW\x9eT?\xac/\xb2\xa3\xae\xeb\x7f\x8d\x8dx\x9e\xefH2\xfb\x10[\\\x96}g\x14\x815\x86\xc0\xbc\xc90#Gcs\x9e\x80\xa75\x10\xb9h\xd8 N\xad0\xe4\x00\xf8\x03\x07\x04\xe3\xdf\xe0U\xf2\xfc\xd4\x97b\xeeCL\x18=y\x13\xf4 \xc1n\x7f\xec\x83c\x83\x1d\x12\x85\xc6\x94\xfe\x90 \x9a?\x8e\xc2\x03+h\xf9\"\x9ct\x8c5\xde-P\xda\xb1\x1c\xe3\x05n\x94\xc8\x81\xbf\x8b\xf9\x9b\x17\xb8\x89|b\xe0\xd9\xbb\x98\x0f{Q\x10H\x94\xfe}\xdc\xbd\xb9\xa9\xc2:\xb2gD]\xacH*c\x06\xde\x0e\xaf\x06q\xa3Li\xc2?&(\x16eJ\x9f\xc1$[B\x94Pq\x1f\xd3\xa0\xe5([\xb9\x9d\x83>8+:f\x01S\x0c\xae\x01\xd8Z\xc1\xb5\x9d\xf4\xd9}\x8c\x1f+\xb0hX\x0d\xe5\xb0fX\xca\xe1\xcbJ\xd2 \xaa\xc9\x8a\xba\x05\xc2\x83\xd5Fz\"cpU\x01\x1fR8\x9f?\xc1R\x1c\xef\xeb\x860cZ\xd1:\x066\xc3p\x0d\xc07FR\x8bz\xf6\x04o\xc5\x8a \x8b -\x19\x08fy| \x89\xf7\x132\xedA\xaa\x8e\xca\x13l\xe4\x05e\xed \x96\xe2VJ\x86_\xd2\x7f\xe0\x87\x19OdW\x7f\x86 \x13\x87K\xed\xb71\x93\xe2\x01\x0c\x0d\xef8\x0f\xcc\xd0\xf0\xda\xaf\xe8\xe8\x0b\xbc\xc6\\\x03H'B_\x94c\xc6\x04IBR\xb8\x86%@\x99ky{\xe4\x04\xc1\xb6\x91\x08\x7f\x81\xe5\xe3B\x17\xb5\xd7\xbf\xcc\x13\xdc\xc6{\xd8Y\x84\x8fRI{\xdf\xc4\x9cS\x00\xe6NH\x10V\xa3$H\xba\xbe\xbdI\xfa]?\xbf\xc0Z\x9f\x91\x83'-\xef\x9f\xe1\x0b8\x1e\xaa\xce1G^\xd1.\xfe\x0474\x80`\x87\xd1\"\xb0M\x8e\x1b-\x82\xe0`\x0cT\xf4!\xc1\x80\xd8IR\xe0\n\xd8*\xc3\xb5\xf4\xfe\x18Sx\xe5\xb4\xfb9&\xd6+\xc6\xd9\xfbs\xda\x8f\x01\xe1Z\x02$\xb6\xf67\x04p[_\n\x12\xba\xc7o\xd7\x931~[y\x97\xdc\xc7k\xcdo\xa7\x81\x13f\x83,\xb1\x1fT\x00\x07<\xb5\x9f\x16\xa3\x07=\xa6#\xcd\x1dy\xc4\xce\xd8\xaah\xad\xdf6\xa0\x9c\xc3\xb5\xe8}\xcc\x92Vn\xe7~\xe0\xf7\x12?\x97s\xf9)\x16\x18JN\x946\x08\xd8\xae\x1ec\xa5\x81\xdf\x1e\x17\x1b\x8e\xa5h\xaeY\xe0\x07d\xc3\x13Mq\xf1\xa1_\xd1nA\xd8\x10\xc55\x00\xf3m\xaeI\x0e\xd1&W\xd4\xbe=\xc6\xd7&\xbcnCW\xc0tE\xf8\x06|&|i\xe7\x82\xa0\xdb\xb8[\xb0\x96~\x82'\xb0\xa2\"%\xc8IV\xdf y\xc9\x13\xe9R\xff'\xd8A\x8a\x1f\xb8\xa2\xc2\x11\xf2\xd9\x87\xad\xbf\x87\xe9\xd1\x8a\x80\xa4V\x10?\x88\xb9\x9b9:^\x86\xac\xfa\xca\x01${\xf0\x9d@^/S\xdeY\x14\xb03\xd7\xbe\x13\x04\xbe\xbc$T\x96G\xc2d\xcf\x81\x98\x80\xa5\xe6>\x88 \x98\x82\xf6\xf9Hu\xf5K|\xf3\xd0\xef\xfb\x10\xf8\xf8\x9f\xff\x06\xcf\xb3\xdf\xd7\x10Z)\xd0 \xdc\xd59\xcd\xe4\xb1\x9c\xd6\xd7\x00L\xe2\x8a\x01`5\xe2\x9c\x1f\x04\xdc\xc3l \x13\\(ec>X\xec\xea\xdf\x82\x9e\xfa\xb70 p\xc0B\x87\xc5\xaeb\x9e\x18\xeb\xfbA\x16J\xf4x\x0f\x9f\xd3~\x18 \x06\xf0\x9f\xc8\x96\x19\x96\x81\xf5\xb3\xbea\x19\xf8\x10\x9d\x8b\x92E\x10'\xee\x91=\x88\x12\xa7\x1e$\xfdX\x1eb\xc3\x87\x00\xc0\xbd\x00\xe6g\xe7\xa2<\xf1y\x92%p\x0bL\xe6\x14;I\xa6\xfd\x1e\xb0\x10\xdaO\x1cW\xba\xb3\x7fL&& \x92\xa9\xff\x04\xd3, \x12L\xfdc\xbc\x9f\x12rJV\xc2\xc4_\x82^\x96 <\x01 zE\x82\xb0\xe0.@\xf30\n\xb2 \x02\x04}aF$@\xd2\xe1\xfec\xac(I\x08T\xc2\xfb%A0\nl\xfa\x13\xa0\x93P\x0bK\x19\x02t\n\xa6\x85e` \x82\x06\xb1=W\x80\xbe\x03 l\x13\xe8'\x0e\xb0\x97\xb7\x08%HT\xe8\xc3\xbbX\x08?\xa7y\x05\xd9{\xa3\xfbb\x81p\xa0U\xaf\xff\x07\xf3\xe2\xf3\xca\x08\xfd9\xdevm\x9d\xfe\x1c\xb3\x17Y\xc3\x13\x12\x08^\xb8\x81\x81\xe0\x15\x18\xc0\xcd\xed\x13l\x970\xa2\xc9\x13L\xd6\x00$\xf9\xfb\x13L\x8e\x15\x0c\xe6\x8a\x91~\xc0S5Yz\xf3.`0\xc8'\x988\x9c\xd7\x1c\x0b\xab\x17\x03\x0d\xc0\xec\xf7\xbcTd\x1fb\xda4\x00? ,\xac\x0c\x065\xc5\xfd\x11l\xce\xdbXx:\xaf\xaeN0\xa7\x1e\xa8\xab\x13\x82qpc\x80\x9b\x19Hg\xcfgO\xc8\x1e\x83\xbc\xf2\x04s\xaeApK~\xc7\xd3\x1d\x84\xea\x00\x92\x05\n\x8b\x98a\x0b\x10\x10\x98\xec\xc5\x9ckud]\x96U}\xaf\x82\xcf\xb4\xaf\x01X\xc6\xf0G\x0eh^\xb6\xb6\x06~\xe8$\x87\xab\xf6\xd5\x199\x83@\x9d\xe8\xb71j\x0b`\xec@\xca$\xbaw#\x99\xc5\xb4\xf5)\xd6\xd4\xfd\x91\xb4<={\x80Y\xb8?\x8a\xa5\xc3\xec\x7f\xc2\xf8\xb4:\x8a\x03\x1f\xd4\x1f\xe2`\xe2\x87l\xc1v\xf9\xe5\x87\xae2\xb0\xbd\x8d\xafc\xcc\xde\xdd\xc3\x8a\xb7\x84\xa8\xd0\xfd\x0f\xb1\xbe\xec\x87*\x87\x06\x99\xd1\xaa\xc2\x12\x82q\xea;\xd9\x8d0s\x81\xc6<\xc0B\x9c\xca\x08\x0d\xb1\x1a\x98\x81V\x9c\x97,\x8d\xf2\xa4\xae\xd9Uy\x11\xc8M\xf6$\x92X\xc4\x0f\xb3\xc0I\x86\xd2 \xf7\x11\x16\xda\xfc0\xd3A\x14\x1fa!q5\x1c\xfb\xa9/\x1d\xac\xc0fb![\xba\x88\x89qz\x0bK\xe5\xab\x1b@I\xb0m\xd5\x8f@\xf4!X\xabo\xbc0\xc1\xf35\x00\xdf%\xac\x1a\xae\x86\xf9\x92o \xd8\xac\xb5\n'\xf9s\xcc\x07\xd5 \xff\x1c\x0b\x16~\xed*\xf9Z\xca\xfe\x18\xb3\xf9U\xcd\x15\xc9\xe12\\\x11k?\xdaC\x92\xe2|\xea\x87Z\xf0&49\xf5A\xc8}HF\x9d\xfa`#~\x88\xbd_%DZb\x1fb\xca$@c\xfb 2\xfb\x0e\xeb\xfcS\x9f\xe2\xcbp\xdf@\x08\xc1\xcc\xf7\x00-\xb0\xee\xe1+\xc0?`s\xe8\xaa\xbaq\xc1\xac\xdbW\xdf1V\\\xd4\")\x9e\xfa-\x0d\xc0\xeb\xa8l\x1b\x18%\xc0\xb4\xf1\xf7xm/j\x06\x86y\xff-\x0d\xc02\xca-E6\xff_L\x1d/\x1a4\xc5\x87\xe4\x96\x81`}\xea\xa2\xc1!,\x94\xde2\x10\x8c\x90\x17S\x9e\xc0d\xf0\xce\xde\xd2\x90\x7f\xc0\xf2\xc4E\xbdQ\xd8\xa6uKo\x14\xe6\xf8\xdfw\xe2X\x9e!|\xe6\xf64\x00\x930 \x90\x97\xbfX<\xf9\xbe1\x8abo\xa5=\x03\xc1\xab\xf9}\x18/\xe9\x1d>\xe3\xbe\xbf\xafw\x0b\x0b^{\x1a\x80\x91zo\x90@B\xa8O\xb1\x90\xf5}\x15\x0d\x8cwdOE\x03cn\xf5}\x85qX8\xd9S\xd64,\x7f|\xdf`\x03\xa6\xf1{\x06B\xea\x18l\xc0\x82\xd6\x9e\x86\xfc9&\x9b\xc1\xa2\xd6\\\xf0\"\xae\x99\xfc\x02\xf88\x04\x06\x82W8pJ1\x04\xf80\x06\xce q\xe0\x16\x13\xb3\xff5g\xd4\xf3$\xbe`\xdc\x0f\x0c\x04\xabOk*k\xe6\xaf\xb0\xf8\x14h\x00\xdeM\x01\x80\xfc\x8e\x98\x11\x05\xc6\xb3\xccR \xcc\x8exC\xd7\x1c\xf9\xe2\x9a\xbe\xc4\xc23\n\x1cH\xb8\xf61f\xf0kZ\xab\xc7RK\xa0\xed\x00\x98\x85\x98\x986\x1b@\xc6\xf6\xfd\x14\x8b\x18\x12\xd2\x97\xec\xe0}|\xf9 `\n\x84e#\x01\x02\xe1\x81\xa8\xa2\x02\x14\xc8\x95x\x07\xcfH\x06\xd6I\x81\xe5}\x8a)\x89\xb6\xe7|\x80y\x8f\x80e\xb2\xda;\x98\xcb\xa8\x1b\xd2'\xa4\xa7\xc5\xcc\xf1\xa1'\x8a'\x06\x84\x89z\xe0@D\xf2\x13,\xfe\x0b\x00\x98\xa8\xfe5\xb5\x18\x05g\xd5\xb2\xbf\x8f\xa9E\xd0\xd3\x10|\x98\x03\x9d\xe4\xef\xaf\xb0n\x10\xf4\x12\xb0:\xfc\x91\x0d \xea\\\xa7\x80=9\xecGX\xd1\x16\x904\x00D\xc6\x1c\x12`2\x8f\xd1#\xcc\xac\xd6\x8c\xb7!V\xd0\x03\x03\xc1B\xca\x9a!\xbd\xf8\xf8\x05\x06\x82\xa5\xa4\xc0\xe5\xb0\x13\xefb\xd6\x13\xb82\x16\x15\xaf\xc1\x1a\x90F\xb2\xa5\xf0\x99t\xec\xb9R@}\x1f\xb3\x89\xc0\xe48\xc4\x84QB\xc0\xe2AN\x9d\x97x\xda\xe1\x143\xf1\xc0K\xf2T\x03\xc9.x`\xd2x\x87l5\x18!1 \x06\xf2r\x1f\x9fT\xe9\xf2/\x88\xcfY\x81\x07\xe01GhP%.\x80\x90\x81\xb5\xb2\x0d\x89R\x8f\x8a\x85\xc9V\xb7\xec\xedN(\x89)\x80\"\x04\xb0,g\xba\xd1\xc7\x90\x1cj\xd1\xd2\x12\xf7\x03H\xc7J\x91C\xc0\xc1\xf9\xbf\xbc\x14x\x19\xa1\x94t\xd7.\xf9\x8dc\x0b\x85.Ur\x1b\xc7\xb6\x9ej\x11\xed5\x8ei\x87(u.\x88\xa0\x8dw\xb1\xe9VLZy\xe0\xeb,\x7f\xc4\x1f\xbeT\x06\x02|\xdf!\xe7\x85\xf73\xb3|\xa0\x1ec+5\x0d\xf8 FaQ\xa4j+$\xf6\x99\x80\x14!\xadT\x8b\xa4\xb5[-\xcb\xa8iA)r>t\xa9\xf4v\xee\x0f\x8a\x1e1\x11\xb6\x05'`\x8a[\x8a\x9e!\xa1\xa4\nV,\x8c\x0d\x83\xab\xd8\x82%\x1d1\xd4l\x98p^\x84\x98\xe1\xd9\xc8FJ)\x1f\x1f\xe0S_.\xa0\x90\xe9CL\x9c\xcbe\x8c}\xf2\x01\x16\x93D)\x08\x92)\x0d\x19\x0b,P\xa8:-|\xa7\x0feJ\xa1\x1aXG(\x17\xd0\x07\x00\xeb\x04(\xda\x03\xe3.\x8d\xf4 \x82\xd0\n8\\S\xfc\x80\x0bi\xba\x19p\xc1CD\x1a}\xf3C k\xc9'\x80\x9e\xbe\xb4\xee\xbb\xba\x99#\xf2\x9e\xf1 x\x8c\xd7+(\xf9\x04`\xedM\xc1\xe4\x1a<\xc1\xb4&\xe0\xa9\x9a\xacE\xce\xe0\xa9r\\x\x82o\xd4\x03\x9e\xa6\xa5\xab;,\x81\n\xb0\xb6\x13`\x0dZ\xc0\xf8m\xe5\xf7jYc\x01\xd5`\xb25kO\xaa*\x14\xa1U\xa2\x08\x12\xb0 \xe1\x8a\xeeHrA\x94\x80\"\x95\xb8\x0d&\xcdC$\xc7x\x00k\xd9\xb6|\x06\xd7\x92GD\x18\xd0~:T\x1eOJ\x04\x92X{\x12\xa5\xc0R\x01=1\xb4\x91\xec\x00\xa4\x00z\x93X>\x12E3\x1f\x10\xca\x98:Z\xf9\xc6\xf8\xb9\xa6\xafF\x88dh\x8c\x92X\x98ZS\xaa5\xa1\x95\xb5\xdfk\xa4\x81\xc08}ac\x88\x80\x80`J8vz\xbbg\xb3\xc7\xa4z\x82\x041Rc] B\x92vb\xf8\x8c\xc8\x8b\x06\x82\xed\xbbk;\x0b\xac\xf5]\xfcQ\"\x05\xe5\x9a\x99\xa5l\xa0\x9d\xce\x08\xdd6Ng\x84\x86d\xb5\x82\xa4T\x8c\x16l:QP\xa8K\x84=e\x9a\x9d\x7f@hQ\xc9U\x8d\x98v4K&t$K\xe0:\x97hK\x81\x0e1&\x89\xf3\x83,\xd1\xeerdRy\xe2\x19\xc3\x0e9\xb3ybB\x90\xc9\nV|\xd0>\xb2H\xf3\xda\x07\xcd\x02S\xb7\xfa\x1f\xe3\xdb+\x13.\x83g0r\x80\x16\xfc%\xd6\xec\x04\x80\xc3\xe3\x1b\x04v \xc4\x89\xf71\x91\x1e\xc1\xf7w\xf0\x94\n\xfeT\x032\x96\x0dl\x1e\x03\xb0a)Xa\x03\xb0\xb2y\xe0k\x92\x91\x93\xec\x01\xc5z\x0f\xdf\xfd\x8et\xb6\xc5g\x1fa\x99\xf9\x12H\xa0\xd8\xbc7\x82\xcf\x98\xbd\x8eL\xca*l\xe5\x18\xe9H\xe6{\x98\xb1\x8f\xb8\x93\xe6 \xf7\x8a\x07\xb6\xb0\xf2q\x89{~>2Ndoa\x82{\x89\x07\x81\x1f\xeak\x01l\xf4\xbe\xa4\xd5\x01l\x88\x1bi\x00>\xe2\xa3\xa1\xdc\x9c\xb7\xc9\xea\xfb\xae\x0c?\xfb\x18K:*-\xe8=l(\x19\xf9\x9e\xfd\x8d\xa2\x91\xef)\xba\xf0\x14\x13\xd6\x91\xef\xd5\xa4\xcf-\xb2\xc0`\xb2.!\xf0\xc6\x16^\x1b \x82\xd1a \x0e@R]\xf9\x08/\x81\xcc\xc9\xaa\x13\xaf\xde\xc3\x8cq\x14\xb8\x90\xad\x10\xdb\x8fG\x01\xb3\xb4g\x1e\x1a\xa3\xb0\x0c\x1e9\xf8%\xa6M\x12\x02f\x85:\x18\xf8\xfc`\x1f\xbb\xb0'\x9d\x8c?\xc6\xd4:,R\xcc\xd3\xb1\x97r\xc9S\xa0\xce$\x89\x97}]\xdf\xe5|\x86\xb7*4\x10lz_\xd7w9\x9fa\xae\x11\x1a\x08\x96:C\x93r\x96\xf6S\xce9k\x19\xb9Jt\x89Q|\x1d\xc88\xd6\x14B\xf8\x8c\x15\xca\xd0Pw|\xbaT\x82_\xb2\xd4\\{F\xbd\x8fYU\xc8\xf5\xdd+V*D% y\xc7\nQ\xaa\x02\x85\x99\x88g2\xfdu>p2\x7f\xcc\x11\x1fy\x13KW\xba\xdc\xce\xd0w\xf7\xa6*\x16N.u\x99'\x87\xcd%Ko\xf5`KS\xc8S\xaer\"a[AX\x04l[&\x9cf\xdc\xa3A%$\x82\x02\n\x96-\x7fD\xde]\xe7\xfb\xca1\xf9\x07!\x19\x82 \xaf&\xf4\x86\x17\xf1\xd5\x18\xb6\xae\xf9.6\xb8\x85\x1a\x80\x87\x19\xea\x988\x8a\xd9*,\x0e;\x16\x86:\xce\xcd\x06\xb8]\xdfX9\xd6\xcd\x06O\xeb@:4\xccRI\xef\x13\x96\x1aB\x1d\xd6b!\xc9\x03\x00a\xb95\xd4\xc6[\x028\x9f\x01\x06=\xa5\x030\xd1\x0eX\xb7\x0cM\xb8\x03!\xacCexx\x8a\xd5\xbbPj\x0b\xf7\x08\x0e\xc3Cq\x0f1\xf3\x0b}\x10>\x1eb\xa9/\x04\x8c'\x0d\xad+\x93'V\x11Be\xf2\xc4\xea^h|8\xb0\xba\x19\x1a'\x0eZGI)XD\x0e\xf5E2]Du\x97\x8c\xa5\xb5\xb0z\x13L\xc7P\xb9\n&\x03\xb1\xdc \x92M\xb2\\!\x92\xed\xd278dx\xc5\x15\x8emJ\xe5[\x1c\x1b\x19jM\xdbr\x0e@\x1b\xa3\xddh\xb5\xf5!&W\xa1\xd1[\x1fbkZ\xb8\xa6\xce\xc8\x13:8-\xc1c6\xb5\x1e\x9dM\xb8#Y\xd8[\x98\xbb\xadG\xa1\x04\xfa\xe1@\x13w\"l\xac\xebX\x11\"\x9d\x18\x01\x16K\xec\xfam62|\xd0\n\xf0\xe7\xf5(\xab&\x95\xc7\x86\xc9_\x01.\x06\x81)\x7fQ\x06\xc5b\xda\x86b\xe3\x9d\x0d\xe5\x0c\xf7\xc4V\x9e\xa2\x08\x0e\xcclh\xadX&\xcc2\xd6\xa3\x8c\x86\xe2\xd8ZB\xf18\x14\xe1\xa3L\xb9B\x13I\\@\x8c/\xb4\xbd\xa2r\x87\xb6\x03\xc7N}\xbb\xf0\x10\xf4C\xac\xd9\x02\x0cr\x98c\xe3\xd5z\x94aO\x00r\xe8Q\x19\xe3\x0c`[\x19\xabG\x00\xa1\x15\xb2`\x0d\x8dS\xb0by1\xd5U\x05\xca\xc8c\x1dHY\xea\xb2\x0f\x95^\xac\xd6\x95+p\x06\x93\xd7\xf5(\xab\x93\x07\x9f\xfc+[sT(|\xf2\xd7\xb6\xadV\xa2\x00\xf6\xc8\x93\x10\x85\x04v\x18 \x01\xd6\xa9\x01\x06H\x805\x8f\xf5(\xdbL\xb8\xcb=\xf5\xd2\x0b\xb6\xf3\x95\xe0f\xad\x9e\xfc\x1b\xdb\xe4t\xb1\xea\xba>\xb4P\xac->\xe6I\xca\xcbD\x0fOG\x94\x92\x195\xcb\xc8IdlTHc\xa7EOA%\x8b\xe1Y\xa86\xe4\xc1\xd9\xce{*\xe7\xdb\x03+\xb6\x97K\x15\xcdYX\x84.\x18\x8b9C\x83\xd6\x01V\xcb\x15Mb\xd3\x97(Z\x8c\xedO(k7\x05\n\xb7\x1c\xa2#\x8b\"\xae\xcb\xb9\x07\xbb\x8e\x0d\xfa%x\xb1\xeb\xd4XQ*\x86v\x1d\x1b\x1aK%\x8b\xf3\xf4\x1f\xed\x0d\x96\x16\xea\xc75\xb3Ck\xf4\xc0\xc23\x8bn,\x93\x93\xc0\x82\xccXx\xa2,Qeg\xc4Z\xa4J\x15=Y\x86\x81\x99?\xd1\xd6\xe3\x1a\xa9@\x00\x9c P \xf1mPH\xcd\xf1\xf4o\xe9+\xb4\xa1\x8e\x80\xbbG\xa5\x810\x8e\x02\x1d\\\x88M\xc9!?}\xc7Z &Id\xcc4\x8f\x1b\x88\xb2\x02\xabI\xd6T\xd6\x93\xb4\xf4\x9b\xa9|;D\xc8\xd7qx\x9f\x10\x8b\x96\x81\x10;T\xa6\xbc\xd1h/\xe8yr\xaa\xe2\x96K\xc0d\xa8\xaeK\x9e/\xa7\x07\xbfRD\xb5C\x04\x0dy\xa5A\xec\xc3\xf2+1\x0f\xcb,\x9a\xbfG\xbfrH\xda\xf86\xbe\x13\x0es\x9d-\x96\xd8\xb3\xc7\xfa='\xcb.^^\xd6\xcf\x14\x12+\xd8e\xf3\x82!\xb1\x18\x8cM-B\xe6\xc6\xa6\x16Y\xc6\xb1N\xbbe\x19\xc7\x18\xf2\xcf\xd8 \x17t\xb8\n9\xbc\xe3\"\xfe\x1d\xdf\\\x85cm\xcbz\x1f\xdb\xe9\xc3\xb1\x8ee\xb0\xf5\x06. v\x88\xb9\xc4\xb7\x815\x0b{\x9f\xd0\xdd\xb1\xe1\n\x0f\xfe\x9d\xad\xa6~[\xf8?X\x80\xfb\xc6\xe8Oh\xda\xbe\xe6\x99\x04\x15\xf65\xcf\xb4B\x14W\xa3\xb0P\x9b\xc7\xf1\xd5\xe1\x86I\x11\x81\xef*\"\x03\xc1W\x81Q\xdd\xf3\x99\x91\xba\xac%\xeffn\xe8\xf4\x11XF\x894\x00kc*\\\x1b\xef=Dk\xff=\xd6\x89\xa2\xda\x1797\xf4\x9bM\x9f\xe1k\xed\xc8@05\x8a\xe0!\x98g\x1fa\x9a\x13\xe9\xd7\xce\xb0\x93V\xe4\xa5\x91\n{\xc2\x96\xdd\x8d\x15H\xbd\xf0\x19\xde\xff\x88+\x00Y\xf8\xbeZ\xc6G\xd8\x95iC\x1b\xfeI[\x1a\x80\x0f\xa6\nV\xff5\xde\xa9\x0d\x93\xc4\x824e \xd8\xa4\x1d\x81\xb1\xfdC\xcc\xba\"\x9d\xa8\xe7\x116\xc3DC\x81\xfd\x9fc9&\xaa{\xa112\xa6hl\x06\x8f\x02\xbd&d\xeb\x03\xf3(\xe1#\xec\xb4\x13\xe9\xc4\x12o\xd2Z0\x17,\xcbn(O\x98\xcf\xb0\n\x1bi\x006]o\x8c\xf8\xc0\xb1\xceR\x01~\x83\x19\xe8\x86\xf4\x8f\x90\xe9\xa7\xb1M3*@x\xef#%R=\xc2\x86\x9fhT\xfb.\xec\x861\x9e\xe2+\xd2\xc8@\xb0\n`\\)\xb1\xf1i#\xe6\xa1\xf5\xc5U|\xbdo\n\x16E\xb0_Z\x14sx\xf0\xf0\x11\x96\x11\x8c\xef%y\xc5vC\x0e\xeb1\xa1 N\xe2k\xbf\xc8(\x17\x04)\xc0\xb3\xf01\xa6\x14Q\xe2\x81\xb5\xe7mL\x8b$\x04R\x8a\xd8`2\x13\x17\x16>\xa2\xc4\x13\xb8\xff1A\xe4\xc4\x1f\xa8\xec$d#\x13\xf5b\"\xde\xc6(I\x83\x08D\xb9\xc7\xf8>7J$\xa9zLH\xb1\xfd%\xe1\x0d\xa3\\\x90\x01k\xc7\x0fB\x89u\x8a\xa4O\xc8.\x1a\x08!\x94\xeau\x8f\x07\xb8\xca\x86\x11\xf4\xf0\xf6F\x06\x82\xa9\xc8F\xe1s\x8bq\xb2p\xc7%\x8f\x1a\x03\xc8\x81zx\xa97T\xb6\x06\xb2\xd2\xea;\xd9\x9a\xb1\"q\xefbanc\xccu|\x11!2\x12\xa6\x82k\x9f\xfd\x19fe\x1a\xaa\xc2 \xff\x94\xac\xfb\x98'\x9bN\xc2\xc3l\xc8S\xb86\xfc3|\xd4\xb42\x85M\x06B\xd7\x13\xd8\x87\xe7Q\xd1\x01-\x95\x94\xb8\xf2\x14s\xfc\x92}\x82B\x94m\x02\x016\x9d\xc4<\xcfF\x81\xc0\xc61\xf9\x8b\xe13&}1O\\\xc91\xfe\x19\x05\xf82\x1f\xca\x0c\x05\x8c \xd6\xf3Mlt\xd6\x94\xe7\x01\x99>O2\x1eJ\x81\xecM\xac\x85lj\xfe\x8ayu\xac\x01XX\xde\x84\xa7\xd2\xb1\x96\x1b\xc3S\xe9\x98\x1c\xc7Cxu\x00\x1f\x8ax\xa8^q\xa6\xfeX\xf1P=\x17\xfd\x17\xf8&tS\xf6\x8c\xe9z,;\xc6\xfc.\xf63wX\x9b';\x86Q\xe1S\x12\x07N\x08\xef\xc7\x93\xa4i\x00\x82\x84jx\\\x02\x06i\xb7-\xd5$\xd1?j\xf9\xec(\xc6\xff\x11\x16\x92\x05\x104\x7f|\xb2\x04D\xd7\xc2\xa6\x04\x01\xf3\xa4\x9aE\xde\x81\x93 p\xf3#\xb8\x11\xe4\xe0\xd3\xfa\x18\x0bE\x9bA\x9e\xea\x87\xd9?\xc6h#\xaa\x8d\xc2:\x88:l\x1f\x11\x1c \xf24\xdb\x97c\xfc\x08\x8b\xeb\xf1\xc8\xd6\xdaf\x04\xc9\xa8\xc4\n\xcba\x92\xcc\x83\xb1\x90\xb9\xb4\xa1\x10c\xd9\xa6\xbe|\xc5bml\xa4\x04l\xbf\x8a\xa3\\>\xf6\xf81\xde\x95M\xb9\xecO0\xd3\x05S\xe4}\xcc\x0d\xe3DE\x18a\xc2nL\x94\xf7\xb1<\x1d\xc3[\xf5O\xc8y\xd0\x96K\xfa\xdd\xad\xe9\x9b\xbb\xa50&:\x02\xee\xaaw\x83\xad\xe3(\xdf\xb3\x90\xb6-\x97,5%\xaa\x96\xf6\xda^\n\xab4f2e\xe3\xab\x05T\x8e\xd4\xc2\xb2\x96\x84+;\xce\x13\xccu%P\x87Ya\xe9J\x00\xb5\xc5\x10\x0fh3Q\x16\xc37\xe9\x16i\x08>E\x12\x92\xdaq0\xd1Qht\xf8p\xc1j\x19z\xc3\xc0\xd5S\xed\x98\x02m\x96\x1ej'\xd4)\x89\xfaN\xa0\x04\x00\xac\xb3\x08\xa0V3\xde\xc5\xca\x94\x00\xa698\\\xbfKx\x87z\x7f\xed\x1e\x96D7\x93(\x8e\x12\x9dI\xed\x1e\xc6\xcc\x02\xac\x12\xb5\xe1\xfa\xa2a\xf0\x9b\xb7\x80\xea\xb6-N\xf2\x04\x04\x83\x07\x98en\x1a\xa1\x11\xdb\xc6bc\x91\xc6\x86\xc9Mx\x95\x87\xac\xbf\xfc\xfc\x1b,\x96\xc6y\xe8*\x13\x17\x06\xbd\xae9,&\xd7\xb75\x00\xef\xc8\xed\xbal\x8b\xafk:\x87\xcd\x13\xb7\x0d\x9d\xc3\xec\xe2\xb6\xc1\xd9\xb7\xb0\x80\xf9\xbaY\x15\xact\xdf6\xab\x82\xf9\xfc\xed\xdc\xc9x\x12\xfa*3\x01\xc9\x8c*\xe0z\xf4\x98\xeb\xea\xd8\x94\xd7l\xdf\x15\x91\xc2\x02\xd5\xeb\xbb\x1b;\x0b\xec\xdb\xado\xe3*Qf\xf9\x9c\x98\x84KX\x9b\xd0B\xec\xbd\xbf\xfd;\xcc{\xb6\x8c/5\xde\xa0\xc4@0\xc3I\x1c\x0f\x12\x90\xde\xc3;\x91\x94\xb34a\xfa\xb1\xa5c;1\x1a&\x1a\x80u\xf0\xc4\xa4U\xc2'S@\xe4\x94\x1ea^\x9f\x14 \x97hs*s\x12fo[Z\xd9\xc4R\x97\xb9\xfc\xa2\xfd\xab\x1a6\x00\x10\xbc\x0f0]KLR%:\xe6\"\xa9\x12\x19Bq\x97f\x81\xa8JX\x84J\x8atKXQL\x8atK\x18\xf1\x13\x93n\xe9\x03L\x0f\x92R\xba%\xac\xe9l\x99tK\xefc\xa4O\x8aLLX\xd2(]\x03\x92E7 \x97\xb0\xc2\x94\x14\xb9\x98(\xeae>\x10M\xac5IH\xa8\xfd\xe7q\xbd-\x93\x8d [\x18\x13\x03\xc1\x1c%1y\x9a0\x05HL\x9e&\xb2[:O\xd3]\x1b@\xd4\xb9A\x01*O\x13\xa6\x84I)O\x13\x16\xd3\x93R\x9e&<\xa3-\xe3\xa7\x8f\x15\xfb\xc4@0\x03\xdf2~\xfads\x0d\x04\xd3\xd6\xc4\xe4i\xc2\xc6\xb3\x04\xf24\xe15\xd8\x02\xcd\x91\xe0>8\xc3b\xad'\xd1y\x9a0kM\xbc\xc0\xa4\\\"\x87\xdf\xe4p\"\xf8V\xe4p\xa2 \x15\x17Jh\x19\xc8\xe9\x04?9\xf0t+@g\xc9%\xd4\x99;\x81\xc9\x92k\xab\x08\x88K\xc6\xc6A\xdey\x0f\xeb\xae[+\xe7\x05\x91\xc3|5\x81W\xfe\xf1g\x8b\xff\x0fvV\xd6E\xd03r5\xc5vcT\x90<\xb7\x9a\x14\x890\xb0=\")\x12a\x90\xe6U\x0eh\xb2BZ\x90 \xdd\xe8\xc4\x16\xf8\x16\xdb\x84'\x93\x17\x7f\x13\x9d\xd8\xe2\xa7\x04\xe7\x8a\xc4\x16\x98ln\xc98\xba\xcf\xb1\x8e\x95\xc8\xcf\xbf\xa1]DR+'\x8cX\xc6\x88\xe3|]\x18\x8bQ$9\xe6>\xc8}\x820\xa7\xaa\xf7\x84\xb5v%g\x17fTE\x89J\xd4\xfbO\xf1\xfd_\xd1\x91I\xda\x85\xe9\xbfl\xaa\x9c\xb5\x0b\x93\nY\x80\xa6\xed\xc2*\xb5*\x86\xf3v\xe1\xd3b\x8a\x95\x12wa\xb3\x16*\xa3\xf3\x0ea\xf1G\x16;W\x8b\xa7\xe5\x04V:\xc2\x95\"Z\xa9\x10\xf8\x06P\x8c\x13EP\xf6.\xeb:\x97\xf2\x80A)\xc2.D)\x9c{\x8bPf\x9ff\xd4\xb2.\xa2N\x97\x85em\x0d,\xb0\x13[F,\xcfr\x13Z(\x8a\xa0\x8cYx:\xc4\x17\xf1\x01\xa1\xceVG\xc4\xa6B\x85\xf7\x1a\x96\xdad1\x925\x0bK\x04\xaaTur\x98R\xa9B\xa5\xa4WX\x8b\xab\x94\xd0\xf8\x87\x05s\x94\xd3\x8c N \xae\x9b\xc0\xbak\x02\x87\xee\xd7D\x88\xf2\xd3\xea\x83\x8d\xa4\xa2I\xa6CP1\xd0\xe9 \x08\xfa\x05\x90\xf3\x81HQEf\x1bL\x0c\x93jf\x1b\x02\xd6\x81\x0cO \x933 d0WLL\x02\x19\xbc\xe8\x89I \x83iKbn\xd3\xb0&\xb8\xa5uQ\xc2\x95\x8d.J\x04\xde\"/ \x1duqGB\xf0/\xcaC\xaf\x94\xe0\xfe\x03\xac\xde'0\xc6\x8e\xe53\xdc\xf8>\"\x9a]\\r;$<\xc2d\x03!\x04\x19\x85\xf0\x90\xb3[d\xea\xc0\x06\xb5-};E\xebh]\x1b\xfb\xc6l)\xc9\x8b\xec}\xedw\x99\\\x83\x08\xd1&\xb9\x06\x16l\x93\"\xb9\x06\x01\x15\xa9)\x082\x17t \xc7ni\xdf\xc3\xf7\xb0\xa5\xab\xe4db\x81H\xc2zE:\xe2\xc5\x93\xf7d\xbc\xb5\xe8:\xf2a0\xefR\x88\xdc\xc9'd'G*\xaf<65\x08\x00\x84\xaa\xfd\x0d\xcd\x02\xb5\xbdqn\x07\xce*\xa9\x16\xf538\xadX\x9c\x01G\x9f\xe3\xf4\xab$\xe3\x1fb!_\x00\xd4E\x1aa!F\xf0\xc5rQj d\xc9bG]\xc1\xfe\x92\xa0\x99\x04\xe9w\xfd,\xd0\xc4z\xf0\xd3\xdbJ\x96x@\x98\x9f\x80\x80\xaf\xd1\x9f\xd3\xb5Ko\xab\xdc!\x0f\xb0\xb0,!P\xefg\x965\xbf\xad\xfcg\x88\xd4t[\x076`\xb5\xa7\x08\x94x@(\xce\xedR\xf8\x82\xb5^\xe1\xd7o\xab\x0b3 \xb4\xd4D_<\xc04P\x82L \\\x0dPuH\xebJK\xd9{\x98\xd5\x97^\xae'R@=\x08j\xe1g\xa8\xc8.\xd2p\xc0\x86\x02\x85R\x8f\x17\xcb\x16\x06\xd8X\xa4h\x8a\xb0\x11Yn7\xd4#\xa6\xf8\x93;p\x83L\x1e\xf2Oo\xe75\x80\xda\xeb\xa5msk\x89u\xc8\xd4hR\x98#\xa7\x0d\x02I\x03mJ35\xee\x87\x98jogp\xfa\x08 U\x80\xbf\xb0\x01d[\x7fAD\xc6,q\x04\x9f\xe6q\xea\x07r \x7f\x83\x95$]D9_as\\\x9a%\xd2\xeeE\xb2\xdfm\xc3\x01|H\xf0Z\x1dL\xc2r\xf3\x9e~\xb3\x9b\xa8\x0e&\x16\x89\x02\xe0d\x91\x19\xe7=\x9d\xaa\xe7)\xe1\xbayo\x94\x83\x07\xf3S\"[\xe7=\x90\xfa\x9fb\xbb\xa2\x80@_\x84\xc0\xe6=\xcdE\x9f`\xb2\x9c\xe6=\xc3E\xb1^Z\x1c#\xdb\x1a\x990*+H\x11\x05\xcb\xb4\xcb\x11T\xd6\x0e\x8b\xb3d\xaf\xad\x12\n\xdb\xa6 \xd0\xdbu\xeb\xa3\xfd\x1f\xb1-A\x80`\xd3\x9f\x12\xec\x11 \xc8\xf2F8\x86\n\xf6\xa2\xfaj\xee\x96]\x8f\xb0\xd6*\xc0e\xd7#\x8cL\xe5`_\xd2\xb6%\xd2\xb7\xa6\x04r=\xaa\xeb\xa5\x14\xe1k\x19\xa7\x0eY\xb3\x80\xca\xaeGD5\x15p\xedzD\xd4S\x01\xacUPs\xb7^\x0b\xcd\xdd\xe1\xce\xd0\xb1_Bm\xc3e\xd2=\xc2\xf7j\xbf\x83!\xf0\x97\x98\xb8n\xc3v?\xa4\x15\x80}\xd2\xd3\x1a\xcf \xf2\x82OO\x9a\xc7\xf3\xe2;\x91M\xf3\xf8\x84\xf8N\x84\xc7<\xd6\xe4\x05[ \x05H#(\x11XM\x84 \x05\x009\xa0\xd8\x1e\x1b\xd2\x83\x05\xb8j@w\x0d\xb08\xa0\x96\xa6\x87\xca7\xfcWXQ\x9405 |!\x9c\xe6\xb1I\xdbJOSl\xa8!\xa55\xb1\xa2\x86Dp\xcdcE\x0d)\x1d\x8855|J\xc45#\xed\xd8\xb6\xbfn]*b\x90eI\xca\xe1\x94V\xa8\xa6h\x96\xa1\x96)\x9ae\x8e\x9a\xa2\x11\x9e\x9e\xc7z\xad\x89\xc0!@@\xd1\x08\xbb/b\xd6\x88\x19\xc6\xc4\xacachjb\xd6\xac\x90\x9a\xbc\xd7\xe9~\xa8\x8d'D\xba\xb9\x03\x91S\x9f`=q\xc7\x113\xfaA\x86>gN2\x80\x9dy\x17Oh\xc7\x91!\x9aX\xaf\xc8\xe4\xe7\xdf`\xe4\xcf\x94\x9d\x9f\xf8\xea\xef\x18k\"i\xc9@\xb0\xa6\xb1cl\x80\xd8\xfe\x92\x19\x08\x96\xa9\x94zF+H\xdd\x0c#\xbf\xce\x9c\xfcclw\xcdx\xa0\xbcb\xdf\xc5\xeclG\xdb\x8b\xf0 \xcc4\x00\xdb\xcd\xb3!O\xf8I\xd1\xd8=\xb2,\x02\xd4\x8f@b'\xd0\xac\x11\xba3\xe4\xf0\x06*\xa6g\x99\x06`\xb6)\x01\xe9\xa1\xc0\xf7\xdf\xe0\xc3)ac;\xc4w\xf7J\x197\xf1A\x91\xf0:cJ5\x03\xe2[\xbf\xa2/\xf5gC?T\x9e\x8d\x98\xdeU\xb3\x1dbh6\xdcS\xb1\xbdtD\xf5\xe3\xb9\xb0\xb1\xb5.N\x066\xc7d\xc3(\x11X\xf8 \xe6\x1c\x86\xbb\x93\xb6t<\xce\xaf\xb1%\x1a\xa5\xdb\xc0\xc4\xce\x92k\x03\x8bq(\xd1\x06\x99\xa0\xba!\xf9\x84\xe0\xa0\x00\x80\xec\x8d\x15z\x00\x01\xc1\xf8\x88\xa0\xa8\x00\xc2\xbb\xb9XP\xc9\xea\x1e\xe0\xce\"\x0e>B\xd8n\x99\x81\xd7\xee\x03r\xd2\xa3\xb8\x07\xe7\xed],\xd0dQ\xac\xd3\x18\xe3\xa1\xed\x18\xdb\x06\xa6\xed\x99\x81`\xca! *d\xe3)6\x1bdQ\n\xc3\xc6rSVx_\x93\xa3\xb6\xb5\xb8,\x99\xe4\xdb\x84\xb0$\x0e\xec\x91\x05R\\\x9f\xbf\x87\x15.\x0d\xd4\xde\x0b\xefaA\x0d\xc7\xee\x93\xac\xea4t\x9f\xa4W\xd7E@F\xc6HJ\xe2\xfa\xc9\xa5\x9a%\xac\x9f\\\xafe\x89zU\xe5\xd9/\xb0IL_\xc9\xd9z6\xb6\xc1\x8f\xb0\xdc\xbb\x93\xf8q\xc0\x97\xeb\xe8\xb2\x80\xaa\x9a\x96\xe1\x02\xea\x7f\x88]\x06\xb3\xc4\xcf\xd4\xd6~\x84e\xa3,\x89\xf9\x1d\xe5F\xf5gx\x0fw\x8c-\x00k\xbe\x99\xb1\x05\x10\xa2\xa5nz0\xfb\xcf\xd4U\x0f\x96_v\xb4\xf9\x9f\xa0\xb7\xb6\xff\xe3E\xd81\xcf\x0f\xd0>4\x04_\xc0d\xfb>\\\x8c\xdc'\xdb\xb4\x1f\x0d\xb9\xe3U\xf3K\x12\xea\x08\x85\x90w\x13&1\xbb& \x1e\x1f\xba\xdc@\xf0~\xefj\xd1\x07\x8b*\xb9\x96\x960?\xcau\x0d\x0c\x10M\xe9\x00\xfb\x0f\xf0\xb6\xec\xf6\xd4\x93\xca\xf8\xa67W\x80\x7f\xc0s\xde\xed%\\\xc6y\x7f\x86\x97,7\x10L\x13wu\xb4>\xde\xb3\\\x030\xfe\xed\xc2\xa8\xb0\x1c\x93\xc3\x98\xf0\xa9\xcf=\xed:\x809\xc6\xae \xd6\xc7\x04<7\x10LZs\xe3\xca\x89M]y\xe1?\x88\xf9\xe1\xae\x16s\xb0\xd8\x91k\x00V\xd7vM\xc0<\x16as\x03\xc1\x879\xd7\x9e\x85da\x86N\x02\xeen\x98d\xe6& -\x1ern\xde\xc5\xc2\xdaJ.\xdf\xa7\x12\xa0w1\x95\xca\xcbOWY\x80*6\xe5]l\x1e\xcd\xcdC\x18X\xfc\xda\xd5\x11\xf2X\\\xcf5\x00\xbb\xedC\xb0\xed\xc7\x98\xc1\xee\x86\x9e\x8e\xa9\xc5\xef\xe5\x00\xc8\x84\xd4\xe2Ce\xc0:\xa6\x16\xd3sY\x00\x07\xd5\xe2{(c\x8a}\x88\xf1SBt\xb6\xff\x07\xf8\xa8\xed\xaad\x0b\x9fa\x0c\xc95\x00k\xf4\xbb\x86\xc5c\xcd-7\x10L\x04\x9b.\x1cw\xe3\xc2\xb9\x86\xd0\x95\x02f\xa9Wv\xda|\x1f\xdb\x8c\x15\xb8r'KOh\\\xbd\xb3\xc5\x8a\xc5n,\xa4\x81b|\x18\x9eW\xe1\x96\xfa\xd8+\x98\x9c\xeaX91\x9aw?\xc8\x19\xd2%\x8a\xa7\xa4\xc8a\x8ak\xb77\x8e\xf1[MX\x9b\x94E\xd0\xad1\x96awU\x08\x14^\xe4\\}\xc7\xeb*\xbe\x0fm\x15v\x8d\xc1\xfbs, \xe6\x85-\x9cn\x93v\xbf\xc4\x95$\xa4\x187mSa\x10x\x7fb\x99=O\x0c\xa9\xc1\xe7)/?\x02e\x01jRC\x16\\9\x19~F6Z\x03\xb0\xd8\x92k\x0f\xaa_`\x82\xbbkD\x1d\xc2?\x8c\xa8\x83U\xb7\xdc\xbc<\x84\xeb\xecj\xdd\xe83L\xbbr\x03\xc1\xf2w\xae\x9d\xbb0M\xca\x8d\x0b\x17\x96ps-\x0b\x90\xd5\xdeUy\n\x08\xe1V\xdf\xb1.\x97\xef\x1ba\xfd\x11\x96\x9d\xc6N8\x80;\xc8G\xb8\xb9\xb1\x934\\\xab\x8c\x9dD(\xce\xd2c\x01\xaf\xd0\xd8I\xc2H\xe8\xbe\xf0\x9a\x06\xc6\xc2\xb1\x93\xd4\\\xc6\x08\x88o\x0b:\x17\x80\xfa\xb8\xc6\xb1\x16\xa7,\xed%Vz\"\x00\xe0`\x8f\xe5\x86\xb1\x93\x18O\x0clR\x11\xb0\xea\x1d\x03\xbd\xd2-\x97Q7\x0d5\x85*\xa6\xbd\xe62\xca\xc0g-\xa4-\"\xc4\xb6!`H\xd3\"\xaf\x03\x97\xca\x18\xaaH\xfc\xa1/+\xcd\xfa)f\xe1c\xc53\x9e\xe2\x83 \x002\x8a\xef)>\x08\x97A$\xc4\xe4l\x0c\x9f\xf1\xf0\x8a$f\xb8\xeb\"\x87\x19\xee\xa1HaFFe\xea`]H\xb6&%\xaf\xa7\x98\xe3^V\x9e\x9c\xf8\xa6m\x0c\xdfI\xea\x991\xe7j\xb9\x1e`qx\xcc\xb9\xd2W\xb1\n1\xe6A\xe0\xc3\xbd\x02&w\x97y\xa2\xda{\x93\x1c\n\x0d\xfa\x11\xad\x93\xd5\xd5\xc8j\xca\x97\x13\x9bb\xb9T\xc3\xd5\x13\x17u\xd5\xb7y\xec$\x8e\xf2+\xff+,B\xebR\x85\xe5\x07#3}\x04\x04\x13\xe5\xcbZ\x0c\xc7\xc2\xf6X\x030\xee\x8e\xb5\xc4JQ\xdf\xe4\x8e\xb4dz\x1c\x9b\x9c\x8b\x96\x0c\x89\x97\x8dx\x86\x95\xf1\xb1\x81\x10:[\x1b\xef=6o\x17\x92sg\xd8\x16!R\x86ma\xc5z\\\xba\x01\xb6\x90\x8b\xd2-\xb0\x15j\xeeKj\xa0\xbc\x8eZ].\x0e\x17\xd6\x00\xc6w\xfc\xc1\x1dG\xb2\x82G\x18\xf1\xafh\xbfV\xcc\xfd\xf65\x00\xf3\x9d}\xee\xa9\xf3\xf0\x18+\x00W\xb8\x07Q\xbd\x0f\xf1\xe8\xf65\xe4\x1e\xde\x17 \x81C\x89qj\x9f\xfb*[\xcc\xdb\x18\x97\xafht\xc3\xf3\xd9\xd7\x00<\x9f+\x063\xb0\xa0\xb3o \x98\x94\xec\xdb;\xdfO\xac\xa7g?\xe1N6\xb4\x82\xae\x18D\xc2\x87`\xdf \x12\xd6A\x0e\x94'\xd4C\xcc\x04\x0f\xd4\xce<\xfb\x05\x16\xc0\x0e\x94\x13\x14\xd1\x9c\x0e<-\xfe\xe0k\xe67\xf4za\x9b\xc2\x81\x06\xe0\xfd?\xd0\x0f\xb5\x90\xb7o\x0f\xb4\x8eL\x9e\xbb}Cf#\xc06\x90\x03\xf9\x15\xab\x00\x07:\xbd$y\xcb\xf7@\xdfA\x927|\x0f\xd4\xf3d\xe4!\xdd\x03\xfd\xe2\x0bf\x05\x07:\x99\xe0Gx\xaf\xde0\xe8\x80\x95\xef\x03\x03\xc1,\xef\xa0\x88\x0d\xc1l\xea 2\xd6A\xb2\x91:<\x9d\xbc\xdc{\xa0}>\xc8\x83\xbdo\x18L\xc2\xc4\xea\xc0`\x12&\x8a\x07\xc6;\xee#l\x1f<0\n\xd7G\xf8\xb6\xed\xc0\x88\xcc\xa4\xa7q\x0dK>\xd8\xaf%\x00W\x8d\x8d\x0e\x93\xdfC\x03\xc1\xb8yu\x11\x84\x12\x8c\xe6\x87\x0e\xd8\xaf\xf0\xfe\\\xd5$\x0b/\xda\xa1\x06`\xbc\xbc\n\x1d`\xd9\xe6\x10\xda\xc7\xa4\xfd\x90\xcbdBX5\xbb\xaaO\n\x96\xdf\x0f5\x00\x8f\xe7\xea*\xf4\x8b\xef\xa2\x0f}\xe8\x18+\xadW\x0d\xe2a?\x9fC\x03\xc1D\xff\xaaA\x14L \x0f\x0d\xa2`JxU\xd9\x0b\xb1\x08t\xa8\x0c\x86\xa4<\xe8;\x9f\xe1\x83z\xa8\xf4 l\x00\xb8fBQ0\xc2\xdf1\x10LT\xae\x99\x1b\\\x8c\x1ew\x0c\x04\x93\x90k0\x0d\xbc\x8cw\xe03F\x82k\xea\xe5vL\"\xee\xa8\xef\x98\xa6\xdc\xe1\\?\xe2\x89\x19\xc65\x9eDW|/\x1b\xd6?\xa3vM]\x9fb\xc9\xf0\x8e\xfa\x8eq\xe5\x9a\n\x9b\xc6]\xdd\xd1\xc8E\xa6\xa3,\xfe\xa4\x030\xf8\xff=\xee\xe0\x8e?0!c\xf8l^\xd3ar\xf8\xb6\xed\x8e\xc1;|v\xae\x19\xbc\xc3D\xfa\x8e\xc1;|p\xef\xec\xdf\x92k\x85 \xd7\x9d\xfd\x10\x00\xef\xb6\xcc\xf7\xbb\xf2\xaf\xbb]\xd6\xcfC\xe9g\xda\xe6]\x96uY\xd8a\x7fd\n\xb5\xf2\x94\xb34K|7k\xbdj\xbe\x8e\x9d\x84%\xec\x0c\x0b\xdb'\xe7^\xe9T\xbb\x8a\xe4\xf7\xf9\xeftf\xf2\x90\xa7\xae\x13\xf3K^Q\x93\xcf\xf0\x838J\xb2\x94\x9d\xa9\xf6[\xeeTw\x11v\x99\xdfeN\x97\xe5\xec\x0c\xcb\xaa\xdd\x88\x9fh\x84\xcf\xc4Qz\xc99x\xb5\x02\xf5\xfb\xac\xfd\xf2,;sF\x14H\x13w\xc6\x1d:\xc9R\xe4\xf1\xc5\xac\x9dup_\xe2\xd7\x8f\x12\xd6\xce\x8e\x1e}\x95e\xec\xbb,}\xd5VF\xb7<\x07-\xb7Cfo\xbe\xc3\x12\x9e\xe5I\xc8\x8e\xcc\xbdZ\xdb\xc8\xcb\xf3\xb2\x91\xd0\x14v\xd8\x19\x96\xb4\xa36\xb4\x98\x06\xbe\xcb\xdb9;\xca\xe6\xc4\xeat:]v\xe4\x08\x9f\x89\x9d$\xe5\xc9\xcc\xd8 |\xcf\xc9\xf8\x9a\x1f\xee\xb5\x9d\x0e{\xe9%\xd6\x96+!\x16\n\xea\xf0\x99\xc0\x0f\xf7\x96\xa20\xe3a\xc6\xce\x88e<2\xdb\xb1\x8f\xe7\xb4\x1a\x8bhGV\x17K\xc0^\x13\x7f\x9fa\xf3l\x81eG\x8f\x92\x8aw\xc9\x173\xebo\xd5\x97\x93\xeb\xec\xb33lV\xad\xb4\xe8\xf3\xc4<;\xd2\xb4\xa0\xa2\xcc\x91v\xc8\xbe\xc7^\x11\x7f\x86\xec\xbbl\xeed\xe7\xd5\x0e\x19\x81XX\xebd:j.t\xfe\xfe\x83\xf4\xe8\xf1A\x97\xb5X\xab3\x93E\xf2\x0eg\xc9Iy\xfb\x85\xe0\xf0F\xef\x16w\xb3\x19\x8f\xf7\xfd\x90o&Q\xcc\x93\xec\xb0\x9duY\xeb\xe6M\x9e^\x8a\xbc<\xe0\xad.\xc1\xd6 \xe7\x0b\xec\xc8l1\x82N\x97\xc9V\x9c<\xc8\xca\xd3\xac\x99%\xc5\x147\x1a\xc5Q\xc8\xc3,]`\x8en\x89\"\xfb~\xe2\xc4K\xa5\xa2y}\xd14s2\xbe\x19\xe4\x03?L\x17jXA\x1as\xb7\x0e\xc6Tw\xdb<\x90\xb9&\xd2\x05\x96\xd0^\xf4/-J\xf9\xd6Bw\xedu\x9d<\x1b>\xc7\x08\xa2\xe7i;r\xd2\x13Mm;r\x8f\xd2\x05\x96\xd6\xcf+\xe1^\xeer\xd1\xb5[\xbf\xd4\xfaWZ\x84\xc0>P\xf2\xf5n\xcd)\xbcK\xe9l\xdc\x0e\xdb'\xe7\xe7;\x16\xc9\x14@'0\xc87\xa0\x93\x18$\x88W_\x82NaP\xaeA'H\xadT58\x7f\xe2e\x0c\nt_'\xc9\x08]\xdd\xe0\xc9\x13\x9d\xce\xab\xdf20}JX\xbf\x9e\x1c\x08\x02\xc6g\x8a\xc3\xc8^c\x9c\xd96Um\xce\x02\xe3u+j\xe98\xa6\x1d\x0b\x92Mz-\x88t\x95\xd4j\x0e\xfeGw)\xbb \xf3 `G\xce0N\xe59\xc9P$\xcfc~\xc8xG\x93\xa18\x89\xb2(;\x8c\xf9\xcc\xd0I7\xf6CM\x90f\\'\x08\x04Q\x0bA\xd6\xc9\xae\x877\x04S\xb9\x1e\xde@|N\x0d\xb3L\x8b\x04-,-\x02\xfbF\x90J?\xdd\xdew\x06\x03\x9e\xcc\x0b\x8e7\xe3\xa7\x1b\x8b\xdb'\xe4\x9f)O\xc6\xb7\x1b(\x82\x103y\x91\x942\xc5#KtY.\xddJ\xa4\xec\xaa\x93\xe6\xc7\x03&\"\x99\xb0\x90\x00\n\x17^l\xb1\x97{fz\xaek\xcd\x03\xcc\x9f9o0\xefp\xde\xa4=/2+vD\x00\x01 \"\x80$)Y\xd5}\xb0\x96\xad$\"\x10\xd7\x1d;\xf6}'a\x00\x9b*\xfaf\xe7\xbe\x92\x1bl\xbf\x0d\xf1\xed\xd6\x8e\x12\xc6}-\x8cW[\xd1\xde\x07]=\x1d\x13W\x0d\xd8;#\xc5\xe1U^\x10z\x91R\x1c_aP\xfc\xeb\xbb\x9c6\xa2&\xday_\xf6\xa6\x0b!\xdf\x16\xc7\xce\x1cz\xec\xcb\x85\xcdc\xa7\x851\xd5\xf8\xec\xa3\xcc\x94\xf7t\xc8\xb0/\x9fq\x03\xf4\xc5L\xd94s\xb7\x89\x85\xf1o E\xe3\xdf\x12\xfe\xc6\xbfk\xdc\xce\xfe\xac\xd0\xfe\xddLI,e\xffvUw\x8f\x91C\x1d\x82\x83)\x84\x13\xbcXn\x86\x7f\x95\xb8\x17\x87\xed\x85\xf9K\x1f\x89\x15F\xfe\x18\xcee=\xbd\xce=\xfb\xb9MP\x0c\xed6\x93\xc4_\xbf?=#\xe1\x9f\xa3\xe4IY,\x92,\xfc\x99\x18\x88\x8a\x9cR\xd1JZ\x9e\x96\x8c\x1e\xa8Hy\x05!\xe2+ \x91\xd2D\x88\xe4\x9f\x86\xd8\x16\xbf\xe8\x84#\x0d\xaan.\x95-\xee\xceP\x7f7k\x87.\x83}\x7f\xed6\xccvq\xab\x8c'\xdc\x01\xc2+>t\xdf{\x11\xe6\x85\xd3\x06\xfe\xeav#q\x91]\x1d\x92\xbf\xdb\x8e7O\xb2\x03\x7f\xb60\xcc\x0d\xa4[\x93\x1d\x06\xbe\xee\x0e\x1d\xc7\xd8Q3\xa2\x14R\x8a\xe9\xe6\xb1\xba\x14u\x0e\xd3\x91\xa6\x94\xe2\xdf\x92Q\x01\x94\x0d\xb1\x14g\xd8J(\xcb>\xb6P\xbe\x84bn\xfe\xc1c\x7f\xf6}D\xf7|\xd2\x04\x00m\xfdk\x0d\x03\x11#\x03\x92\x96\xf9\xc2\x8e\xc9\x05\xf8\x14\x81\xf3\x1b\xbd\xda\xd6_\xaeQ\x056\xf3\xe6aT\x90l\x00|@}\x88\x18FE\x91-Q\xd6\xbdv\x1cG\xc1v8.X\x8b\xa2H-\xfc\x14!\xd7\xf2\xd3\xf0\xcf\xe4J\xbc\xa1\x84\xc2\n\xc3/;\xfd\xd0>\xe2?\xc8\x7f\xadt\xe5*\x99\xbfJV@o\x8d\x8a\xad\xf2\"\x12\x9f\x15\x0b&2\x7f\x92e\xfe\x95\x9d\xc1c\x18\xc1>d\xb0\x01#\x98\xc0\xa6\xe3\".\x18=\x82\x10\xbe\x82\xec\x11\x84\xeb\xeb\x0e$\xd3\x90V8\x96[\x9b\x86\xc7\xdd\xcd\xa4}\xfaws\xd9\x97\x155\xe3\xd3\xcb=j1\x8b\xd3\xe2\x98\x92\x8b3\xbf\xb0\x13\x87r\x93mV3\xd1^\xff\xac\xe0\xf7\xbf\xff[\xf2\x8c\x9a\x9a\xbdK\xa1\x82\xdc\x06W\x1f\x0f\xe3\xebVe\x91\xef\x84\x8d\\\x99\x81\xbd3\xd6y \x03+\x13%\xf5\x86\xa1Z\xa7GB\xa0\xd5\xe4E\x1d\xde\xd6\xc8\xd7\xe6m\xbev\x18\xf1\xb2\x12\x8f\xe3\xf6*#\xccK[\xe1\x9fB\x89\x7f\xe2\n\xff\x14\x1c\xff\x14\x12\xfe\xc9\x18\xfe\xc9\xe0+(\x1eAF\xf1O<\xcd\xba\xf8'\xd3\xe0\x9f\x04Ug\xb7\xc6?\x127E\xf1\x8f\xdfB/1\xc59]\xd1\x8e\xe9\x88\xaf\x84\xd7?)+E>gV\xa9\x8b\x07\x99\x0e\xa2\xa3MH\xaa\xa2\xfb*N\x88\x15u\x98\xa4Z\xa9\xf1P\xaf\xd4\xd8T)5X\xd1H%\xcdcEz\xa5\xc6\xd6\xef\xab\xd4\x10\xbfd\x91\x7f\xb3\xa1\xa7~\x14\x9d\xfa\xb3\xf7\xf9\xa4&b\x9as\xf9\xb6(\xd2'\xa8\x88\x8b\xd4\x15\xde\x12Lc\xf5u\x12\\Mj\xfa\xbcY\xe7\x90a#\xad\xfa\x92\x97?M\xe2\xc2\x0f\xd1\xdfL\xa3\xbc\x94:;\x08B\xf4V\xc8\xd55_\xa7\x84%\xff\xa9\xfa\xd6(\xe9\x12Q\xf1E\x18\xbf\x9f@(j}\xe6\x87\xc3\xb7c\xbb\xab\x9fKxI\x07\x90C\xbc\xbe\xec\xd8\xa6p\x8cUF\x14l\x91\xa8XQ'\xf1\xd1A\xb4\xff.%\xa8\xf5B\xc0\xedr-\xb1\xb8\x18*ex\xb7\x0e7\x0cI\xc9\xec\x8d_,\xba\xe5LJbU@TA\xa6\xa5\xb0)\x0b\xe7`\xaf\x15\x95\x1e\xb0:\x03\x9cH\xe0\xe9ul+O}J\xf5\xd0\xdb\xc4\x05\xebU\x02\xd5$\xda\xcc4\x9d'SI-\xfd\xb4\xa6-z\x94@\xda\x8e\x83\xf0\xbc\x03e\xe2yO\xae&\x12c\"\x9ekW\xdf\xdcb\\\xcd\"\xc6\xeb\xaf=\xc8\\\xc7\xaa\xf1\x81Z_|\x91\x91\xb9\x10\x13\xecc[0\xb9\xd9\xf8A\xcc!W\x16_\xab\xc6\x17\x99XI\xba\x9b\xf2\x00\xa3jc\xe90\xd5\x8c-\xf0=\x9bUR\xaaa\x02\x83\n\xf7LZ\n\x0c\xf9\xd1q\xd3\xd0\xbf\xf3\xa5\x0b\n\xfe\x94\x98\xd6\x12pX\x13\x98\x99\xc5\x01\xb8\xe4Q\x8f\xc8\x00\xfd\x86,s\xa5%)\x16I\xd0\xdbV\x8a\xee1=\xa2\x15q\x9e\xe9=\xc3\xd8t\x17r\xba\xdd=\x12\x99(J.\x8e\xb2\xab\xe7\xc5\xeb\xb2\x98\xb4\x8d9\xe5\xe7Z!<\xd0\xbdo\xbfko\xe3\xb0C\xcb\x8eY\xfey\x194uo\xa3Pu\xe7\xd0\xcb\xc8\x0e\xc5\x9d\x13\xf6\xdf9\xe1\xe7}\xe7d5\xf1\xa1\xbbu\xa4*\xdf\xd3\x85\xeb\xd6\x0b\x07\xdfNX'\x9e\x87g\n\xa8/\xab\xfb\xabb \xba\x95\x98\xb1\xf8<\xee\x96D\xec\x0ee\x06\x84GW\xa9b\x9c3\xac\x12\xe6\x07\x97dV\x16\x8a\n\xf3\x9e+4\xc5\xf2$~\xba\xf0\xe33\xc5\xf7\x01\x82\x8d\xf5\xd2\xcf\xde\x07\xc9E\xac\x92?.X\x95e\x12\x90\xe8\xe0\xd2_\xa6\x11QU;g\xd5:\xb4\xa1\xaa\xee\x12\xb85q\xc1\xe4\x01\x01\xc9gY\x98\xd2\xad\xb7*]f\xf7\xb3\xb3\xd6g|\xe9\xf8'\xe4\x02\x12\xefu\x16\x90\x8c\x04/\xfd\xb4y\xce\xe9ZG\xb4\xda\x99\xf7\x9e\x08\xe1w\x98\xe5E\x9bu\xa3\x80v\x05{p\x86]\xa8\x90\xd6)\xec\x81\x95\xe0)fw\xd3U\xcd\xef\xa3\n\xdar\x81\xc9f\xdb\xb6?H\xa2\\\x19n2\xbc\xf5(\xeb\x1b\xce\xf0B\xba\x97\xcc\nRl\xe4EF\xfc%\xbf\x08\xe9$\x98\x91k\xe4\x85q@._\xcfm+\\\xfag\xe4\x1e[\x88N\xa1_\x06a\xa2+<\x0f\x03B\x0bu,\xf0 \xdb\xd6\xe7qZ\x16*m\x03\x9f\xcb\x0c\xf6\xeb\x0b\xae\x85DOt7\x1d\x93f[\xf3\x90b\xecK\xf3;\xc1\x0e\xa1\x82V\x98t\n\xb5\xa3)\\lL;(.'\xd0\x8f*/\xae\"b\xb2^\x07\xf4\x1a\x880\x98\x07\x1d\x9d\xb6b\xf72\x026F\xeb\xdf\xfe\xf5\x8f\x96\x90}\xdf\x14\x07\x81\x0e:NN\xf0p\xea:/]\x88(\xc0\xdf|\x85\x1a\xbdfI\xba\xc1O\xb8v\xba\xf6\x17\xfc^p,\xe7#L7 iFf~\xa1\xdb\x0b\xca\x95\x0b\xbcQ\xd5\xa4\x97\x82\xfc\xb7\xd8\x0d\xd3\xf8nw\x88dj\xb8w\x9c\x12\xe1\xec\x1a\xa9\xb0\x06+\xab\xabta\x1a\xf6<6\xf2\xfeA\x98\xa7~1[<\x8f\xc3\"\xf4\xa3\xef9\xcb\xaa`J\xc4\xc3n\xff (\xf8\x12\xf1H\x13\x9c\xa0\x9f\x94\x05\x1b`\xc1\xbaz\x01\xb4\xcd\xc8\x9c\xde\x04B}E\xcehs\x13\x06\x8a\xcf\xe7\xb0\x0f\x01L`\xae\xffhU*\x15\x18\xa5\x8azu\x83\xfd\x86z\xef\x9d\n\x1f(\xa5\x1dZC<\x18p\x07\xc9 \xb24\x9d\xfd@\x05'yRf32\x81es\x04\x86\x83\xb2P5\xd3\xbbW5K>\x01_\xc1p\xcb\xfc\xf8\x04\xcan\x0dr\x99\xfaq\xf0\x8c\xa4\xc5b\x02#\x85t@\xf0\xdbJ\x01\x9c\x80\xda+a\xb8\x83$\xac\x02\xf8jA\xd8\x9c \xc2d\xe2WQ\x9f\x13&z.\xe4\\w:3Y\xfb\xa3!\x12j M\xd5\x15\x90\xd58B\x96L#\x06\xec\xdd\x19\xe8]\xe9 \xefz\x8c\xa7\x15\xe9\xa2\xad\xd2\x90\xbc\xc5\x14\xeb\x95\xb0\xaf\xad\x9e\x18g\xcc\x89\x9d\xee\xed\x05B\x98\xc8\x996\xedh\xd2L\x12\x03VJn\xf8\x17\x0b\x8dW-\xfa\xaf~\xb2\x19\xff\xd4\xd4\x81\\\xc9zS\x818X=f\xaf\xf2\x83\"i!\x04Y\xdbCQd2\x87Z\xd1nY\xbd\x8a\xd1\xc2\xcb\xd3(,l\xeb\xc7\xd8r\x86)\xd3\x15\xad\xc4\xf0\x186a\x9f\x1b\xb3\x11X\x87\x91\xe3\xfd\x94\x84\xb1m\x81\xe5\xc0:\x14`V\xe0\xf2\xcat\x10\xeaM\xa3\xb8\xaa\xa5\xa9\xf5\xc5\x06\x8d\x1d&/\xfa\xe5z\xd8\xb6\xa8\xa8\xf3\xe6=q\xdc4,\xb4#\xafF\x91\xb2\xe5#\xef\n\xf6 \xc5\xb7\x9f\x1b\xf13S\x918 /\xe8\x908!/\xe8\x908>/Pz\xbb\xcfT$N\xce\x0b:*\xcf\x88\xdb\xe9\xd6c\x9d *gf\xa0rf\x9f\x9e\xca1;e\xf6P9x\xa5\xbb=\xc2\x90U\xa1'L\xce\x18\xd3\xd3k\x88M\x9f\xd0\xcbI\xc1\xbe\xaa\xd5Hx\x06\x14gY\xee\xe3{?\x0b\xfd\xd3\x88\xa0\xc8c\x85\x0e\x85R;\xec#\xc8bn\xb3^(\xfa\xd3\x7f\x951O\xfc2\xcbH\xcc\xbf4\xd3j\xd5\xa4\xcfH\xf1\xa4(\xb2\xf0\xb4,\x88m\x05~\xe1o\x9c\xf3>\xfb\xe8\xac\xe6\xc2\xa9\xaf\x06K,\x8d\x05{\xd5\x8d\x82\x91pb\x83\xa9\x0e3\xa66\xc68AZ9\xd1\x97\x9f\xfb\xd1\x04|e\xf1\xb5f\x8f\xabE\x1f\xb4\xa3\x8c\xe3\xc0\xddd_R.\x97\x04\xac\x85\x8e\xe9/\xef\x04\xcd\xdc:\xdc\x00\xfa\xafh\x90\x08\xb4\xbd7T\x9cE8\x8c\xb3\xa8\\\x8b\x9f\x85\xc1\xcb\xa4\x8c\xdb\xc9\xff\xe0\xa32\x19\xdcB^\x0d'\xa4 \xbcH\xf9\xd3\x96\xebcZ\x08%>#\xc7\xcb,\xb2\xfa/^\x15Y\xd7Z\x8b\x1f\xc2(zKf$<\xc7\xcb2\x1f\xb0&\xbd\xa7|\xc8\xa2\xc4\xb2sJ\xdf\xc9^\x15\x1f$\x955{\xe3+\xf5\xdaS\xba\xaf\x1eqk#\xd0\xb5\xab\xf9\xceD\xc4\xd1\x15@/\x19o\x1e\xc6\x81D\xfc\x0d\xa4\xfc\niwyl\xc5F\xdf\xda6LF{h\x8c\x11Vdl\x0b\xb0b\x15`\xe9\x1b\xb3CVO`\xc9\xdc\xaa<>\xa2\x96:zu\xfa7\xb1[\xf3\xc5o>|\x80\xac\xc7\xb0\x11$\xac\xd9n\xa2\xf7Cf\x92\xda_\x0fqj\xa1P\xb7Zz\xe6\x0e\xd4\x08\xb7\xa7Ha\xb31\xf4`\xdf\xa9\xf8\xc4\x8c\xd3\xee\xfc\x98\x0f\xdc7\xcd\xe9\x1e `9\x98\xcf\xc9\xac\x08\xcf\x89\xf8\xd2\x88E\xd0\xfb\xaa}\x92{\xd5\x1d\xb2k\x94|\x92MgW{\x82\x06\x1e5\xb3\x04\x87\xc7\x14\xf4\xf2\xf0g\x0d\n\xe4c\xceo*\x14\x91\xd5|\xc2\x13L\x0d\xd8\xae\xbe\x93\xc8?%\x91\xb1\x9bE\xb1\x8c\xbeA%\xf3\x8d;aa\xd1\x8c\xbd\xd4\xea\x03\x04\xf0&y\xad\xeb0fT 3\xb7k\xda\xa2\x98\x00\xa6o\xe1\x13&p\xeb3\xa0\xe6g[\x8693:C\\!W\xd7\x03\xa7\xdb\xa8\xa7\xb3G\xf6\x8a\x841N\x8e\x905\xf5\x00\x1374\xbe\x0b\x88\xa3\xb4LY\x90`\x83\x8eP\xb7A\xd6S^\x0b\xde\xbd}1\xb1\x0c]7Dg\xa1\x9d\xe1\x8c\xb4\xb5\x17\xdb\xb5d\x8b\xd3\x0c\xd2y5|\xd8\xb4s\xd2Wk\xd89\xf9\xab\xdd\xa9}\xe0\xd5c\x89\x03z\x7f\x0d\xf1\x98\xce\x1a\xda\x06\xd4~\x1bC\xea\xf1\xdb\x95\xc4\xe5\x12\xcd\x11ns\x8e\xe9\xd3\xe2\xe8z\xaf\xf9\xfa\xec\x13\x13\xcfkZ\x8e\xc6\x14V@\x050`\xbf\x06\xa2\x03\xa8\xe2?\x92`B/\xf3\xbd=Hl$\xa6\xfa\xa9\x1c\x86\x1a\xfa\xeb \x9cc\xacH\xb1\x87\x89\xfaq`\xa2\x9fm\x88\x96\xb8}\x93\xe5\xa6\xb5\x05\xb9T\xf1s\xf2\xc3G\xccW\xa2\xcf&\x0e\x86\x83\x83\xb9\x91.\x0c\x9a\x16D\xeb\xf0Q[Ctj\xf4\x88[\xeb\x05\xee\x13\xbb\xce\xf1\xed\xe7&v\x8dtb\xd7H'v\x8dtb\xd7H'v\x8dtb\xd7\x88\x89]\xebQEL\xc0\xaa\x12\xabF\x9f^\xac:\xbb\x8dXU\x12\xac(\xa4\xa7]\xad\xadVy\xdc\x92Z\xdeJy|+\x11\xcf\x9dr?}\xbcM1\xc4)F\x19\xe9\xa3\xa6Q4\xb7\xa5\xeb\xb5\x10\xb2\xa5\x98\x81I\xdbMk\x1f\xa1w\xee1+\xa4p~\xe5\xd8\xed:\x15\xd2\x17\xb0>GI8\x962\x0fE4\xe5a\xf3\xe8\xe3\x9d\xb9\x8b\xdb\x0fYX\x90\xd7qt\xd5\xc0\xbc\xedG\xa7\xabp%\xb0\x1f\x0c\x08\x83\xa1\xb7W\xcc\xc0\x80\x96\xe9\xee\xaa\xd3g\x02\xd9\x85\x1f\x07\x11y\xbd\xea\x88[\xa0;\x14\xd0(\x10\xdf\xfb)O\xe2{\xa1W\x90\xbc\xb0\x0b\x16\xc0^\xb6\x1d\xe0yf`2\xc8\xa6\x00VY\xbe\xf6\xe17m\xaf\xbc\x91vlX\xc1\"9;\x8b\xc8\xf3\xfc \x08\x8b\xaf\x93K0$\x99\x91\x1f\x19\xbf\xb2\xb1\x0f[y\xe9\xdb~\xb9W(F5\x815\x8c'\xc0\xfe2~\xa7\xb6\xc0\x84\x1e\x98\xc7\xa46\x9d\x08W\xf2#\x8fE\xe1|!\x9e\x0e\x82\xd6W\xe5\xa7A\xa3p\xa4\xc3\xea\x14t'w{f\x1bV\xb2\xa9\x80\x15\xf8o\xfa\x08\x05u\xe3\x16\xaa/\xf1\xc1*S\x1d\xf6[\xdd\x02\x02V\xb1\x82\x001\x85\x16\x9e\xe0\xb6\x04\xf5\xdf_~\xa9\x9e\xaa-Ur\\X\x93\x1a\xab\\N\x18\x11\xd8\xf8\xb3\xd2\xeb\x0f@\x0b2d\xae\x8e\xf1o\xbc\xd4\xcf\xc2\xe0]\x1a\xf8\x85.\x08\xc2M\xd7X\xa2\x11\xf8*\xcbo\xb4\xeb\xac\xda\xa5;\x9a\xb2V\x10\x05+\x1e\x86a\xeaxXA%\x0f\x15ie\x88\xb6\"?\x99P\x9f\x0f\x101A\xa5\x9f\x1fx?\x86\x98O\xce\xfa\xba,\n\xb3c#p\xba+\xb3\xad#rY<\xc9\x88\xd2\x15M~JV}\x11\x9e-\xa2\xf0lQ0\xb0\x9a\xf4T\xe1\xee\xab\x97\x9ef\\zz\x13W\xe0\x81\xd2\xd3\x94U\xcc\x0c\xa3@\xf2\xad\x8f\"\x1f\xaa\xf0\xd5SK\x91M\xcer!9\xee\xd9'\xc7\x85s\x13\xa3a-vk\xab\xe7*o^`\x19XS\xbfo\x99fC\xe6%b\x11\xa8\x82R\xf4\xcf\xe9\xc6c\xab|\x13\xf8\x94\xdfqH\x9bX\xb8Rz\xfe\xb4\x15\x01\x15,\x17\xce\xf1_\n\xa2\x06 \x83y8\xbd|\x1e\xacd\x17\x0b\x9ck 3\x12\xe0\xed&\"b\xf6~\xc5\x08\xa2\xfa\xe0\xf5\x7f\xd1q\xae\xe8\x91\xc7\x00\xdb\xbb\xbb\xdc\xbc7~\x9e_$Y\xb0\xf2\xe6\xfd\x11\x9fO\xb1w7\xdb\x0d\xbf,\x12z\xddG\xa4\xa0\xbb\x12\x93\x8b\x8d\x94\xcfu\xc0\xd7\xb1\x08\"8\xf8\x0b\x0ea+|q\xf3\xdd_\xe8\xfdkz\xc2z\x88\xa7\x07\xdd\xe7C\xf6\x85>\x84^\x9e\x83,\xe4\xa1\nf\xda[\xd5\xe0\"\xc8\x8a\x0dF\xf4\xda\x12\x11\xb6\xe4\x94\xf8\x19\xc9\xf8\xbdj\x82\xf7\xdf\xe9\xc6\xc3\xe1\xdd\xea\xca\xbb\xf1u\x87\xd7B\xf0\xd9]u7\xba\xe6\xee\xf6\x8ac\x16\x89\x16.\xcf\xe7\x86\"\x87_m\xab\"\x9c\xbb@6w\x81h\x86#\x99\x01\x08\xc6\xe8\x7fl\xda\xa9a\x08\x81,\xfb\xeb\xd4\x11\xab\x12\x0c\xf6\xfe\xed\xd1\xd1\x1b\xccLK\xe2\x82\xcbR'P\xc6y\x99\xa6IV\x90\x80IR\x08\xa5\x97\xac\xffh\xc1:\xa4\xb0N\x7f\xddN\xfc[\x0f\xaf\x16\x017W8\xed\xb3e\x919\xf6.{\xd1\x002\xb9)c4r\xc6\xab7-\x98\xf4\x1b\xcf\xb4\xab\xccLH_+D\x0b\xb5\x1e\xd5$3c33\xf1e\x95\x82\x92\xaf\x1d\xcf\xe9\xc3\xc4e\xfd\x02$w\xb3\x00\x9d\x99\xa8\xb2\x92\x1b\xb3\xbe\xd1;'O}J\xe3\xd6\xab\xa7\x96\x1e*s\x9d\xd1\x01\x9d\x99\x00\xca\xb4\x9cd\xc8r2Q\xbby9\xd9\xc5=h9\xd9\xeau\x86l\x17\xd5\xec\x15\x06\xb7\xf54\xe5\x15\x87\x9e\x94\xbf\xe2\x11\xa4E\xefT3\x96g\xbe\x17r\xe2\x95\xa7*\x0f\xdbp\xdbK\xd0\x90\xd5\xd0\xa0\x1fL\x15\xe9G\x0d0tM\xb4k\xa9r\xbc\xfa\xf4\x07q\x05LT-\xa7j\xe4\x03\x82\xc8\x19h;\xe5)T\xc7\xa9Q\x07\x8d\xcb\xebxn\xd2\xd5\xe17\x12\x08B\x87\xa0\xba\xbd\xfa\xf2ws\xf6MZY~\xfbp\x03\x85\x82\xde\xaaYGW\xa7\x06 \x96\xf7\x95R>k\xf1\x80$\xa1\xe7\xbc\x8d+u\xe5;pKo\xea\xa2\x11[p\xb8;t\xdb\xa1\xba\x9eT6(\xc2\x9b\xd6\xa3Z4\xa4*U\xef\xfe\x8d\xe2Yw\xe5J\xffhB\x83\xed-\xbd\xd4`\xab\xc3\xd3\x87UQ\xc7\xad\xd9\xaf\x8a\x1e\xe8d\x07\xdb[\x0fu\xd2\x83\xedme\x8ckV\xf4yX\xf2\xc9\xfb\xd9lHX\x8dHym\x9aSyR\x16\x8b\xe7\x05YJ\xb9\xc7\x9b\x15\xea\xec\x0c\x93ZR\xd0\xacR\xa7\xa26\xa6<%3\x1e\xb6\xd0\x9ba?\x98\x90\xeb\xeb\xab\xe7\x01\x89\x8b\xb0\xc0\xa06b\x08\x7f&W\xa8*\xc2\xbe;\x8db`mQ\xf5i\x12\xe7\xe5\x92\xe4?0\x01\xd1JB\xfb\xdea\x17\x8aa\x8b\x0eQX\xe0\xd8Ek\xd0\x9a\xe12_\xcf#\xfft\xd0\x00\x05\n\x97\xd2\xf2\xb1\xbc\x0f\xb0\x8f\xd1\xe0z-%\xea\x0f\xbf\x0f\xf3\x10\x85'k\x9bj*\x8d>\x14FN\xfd\xd9\xfb\xba\xb2:\x1c\x14\xa2QK\xd4^uP\xdd^\x0cCR\xcd\xc00(FO\xab\xd7\xde\xec\xc2\xa5\x98\xbbzT\xca5U\xf6\xa8A\x1f\xf0\xb9j9\xf4\xbb04z\x04\xd3n%\xf1Qv\x95\x94\x05:\x07\xeb+'\xbc2\xf3g\xee\xa9\x1cr\xbd\x99X{}M\x96\xe5\xd2\x8f\xa2\xe4\xe2(\xbbz^\xbc.\x0d\x96P,\x87e\xc1\xeb\x1d\xc4\xfei\xa4\"\xd5\xc4\x83\xf1\x1f\xbc\xb9A\x0b\x12\xad\x10\x0e#\xa8\xebb\x1ag}\xcd\x05\xd6\x1c\x18L\xf6\xbc\xaa\xdc\x1b\x1fv\xc9\xb6`H(\xd9\xb3\xaa\xea\x80!\\UZ\xce\x97\xa8\xc5\xd4\xd7<\xad\x06\xfb\xc6\xa8\x13=a\xdd\x0b\xad\x8e\xbe\xe2\x05\x86e\xaeQf\x8f\xc3\xd8\x01\xab. \xa5?\xd2\xc8%\xfb\x80\x07\x85;BZZ_\xfb\x90\xd5~Z\xa1\xca\x1e\x0f\xb0\xa7\xac\xfe\xdb\xdaM\xbc\xef\x8b\xf7\xb0\x07%\xa5m\x0c>\x7fO(Q\xe5\x859e\xbe\xf4\xb5^\xc3\x1e\x9c0\x16ArS7\xcd\xee\x0d\xec\xc1\xa9\x97G\xe1\x8cP\x9c\xb51rx\x82\xef\xc6\xf7F\xe5\xdf\x8dS\xad\x1a\xb4oZ\xcd\xcd\xc7\xe8\xacO\x05w'}\x0eP\xf5\xdd\xb8\x9f\xd5\x838T>~\x155\xd3\xcc\x1c\xac\xfdX# \x02\xc5l\xc3\x82,\xc1\x82u\x9e}\x8b\xd9\x93v\xae^\n\xf7\x96\x8f\xaa\x1b]2S\xc3\xca\xac\xa0\x13\x1c\xa6\x04\xd5\xf6\xc4#2W>F\xf5ZQv\x86\x1f\xba\x9a\x9er\x0c\xd9x?\xd1~J\x83\xf9h\xdb\xd9\"\xb9\xfe17\xb3F\xedR\xcce\x17\xcd\x9bu-\x1c\x98\x06J\x18\x0d\xa2\x14\x8b\x88\xa7A3\x193=6H1]r 9K\xb3\xf1\xb4\xdd\x02*\xe5\xf5\xaf\x1b\x1e\x10r=\xf4fI\x19\x17\xf6\xad\xceD\x0b\x1c#2\xa0cmg\"7\xcf\xb0\xee$\xc4\xb8zO\x14\xe7W\xa0\xa6\xaf\x96\x0d\xa8\xb3\x18<\xe2Y\x12\xc1,\x89N\xd8\x85\x03\x8d\xdd\x8aN\xd0IK7\x13\xeb\x15\xbap}\x8aq\xc8nO\xda\xe1<\x93}\xa3\x1c\xe3\xb8\x1a\x99\x94\x06\x99P\x82\x8c:%\x9f \xee7\x9fV]\xbd\xf4S/\xcc_\xfa)\xf3\x17R\xd8\x1f\xd2\xe7\xda\x0e\xa5\x8e\x07&o\xd2\xcd\xe7\xa2\xcf\x8fh\x1e\x1bc\x95@G\xcaj\x88ZB\x1fA\xc1O\xe0\x94\xd1\x80}\xd9\x84j\xb6g\x02\x06\xfe\x80>\x99\x7f\x81W\xe6\x04z\xe2T\xa4\xac\xd6\xa2F]?\x84\xc8\x82\xf8\xb5|\xc9\xbe\xc2\xf4%\xc6v\x98\xdb\x94\xec\x94h\xae\xdf\xcc\x04\xd4\xe7\xa3#\x7f!\xa4H\xf2\x97-QV\xff\xbaK\xb2t\x03\x07%jsNo\x02\xe7}\x8b)\xb8\xb7 \xf4\x04\xd7\xaeBEN\xe0\xbd\xb6\xa2.^h#;\x1c\x06\xd8\xbb\x0b,\x7f\x13\xe31m\xc7i}\xdd\xbfJ m\x90o0\x01\xcbj\xdc\x9bm\xb2\xe6\x8e\xee\xad\x8a\"\xab\xef.\xb8\xcbY\x1e\x1a\x07\":\x9f\xf0\xb0\xe2\x98Z\xb2K\xb8\x1a\x0e\x8a\x8c!\x14,c\x1f\xc1y]-\xf5\x13\xdb\xa1\xa4\xe2\xeb:t\xab\x9e9\xb8\x93\x95\xff\x87d/oJ\x0f\xd7\xe0}\x82w=\xa3\xda_\xd7r\x01\x8c7\x80; \xfd\xa9\xbd\x81\xb9$\x03#%\x1a \x83\xa6\x87\xb1\xae\xda\xa5iN\\\xe6y&\xe2\xfb>\xade4\xdc\xff\xe8\xccmk\x8a\xafL + y\xf2 \xf05\x10\xe9\x00\x1c\xef=\xb9\xc2\x1b\xdfH\xa8\xf3\x8b\xa1_\xd8/\x9e\xa5\x97\x93\xe2mg\x06\x03r\x1c\x8bh\xf8fd\x0dm\xdcn\xacmr\x0f\x1e\xc6\xfeI\xd1<\xf9\xd2m\xa0\x06Zw\xcaM@r\x93\x83t\x17\xb8\xf1\xa9\xd1,\xb7Blo\xf4+\xd2\x08\xfc\xf8zP\xbd\xef[\xe0\\\xbd3\x01s\x9d\xf8\xa1/\xf9\xaf|i\xaf\x06\xc1\x03\xdc\xdc\xb5\xa6T\xedG\xa85W\x9be?\x84\x03W0\xcck\xea\xdb\x8e)\x0f\x19C\xe3\n3D\x9d\x12\x0f'\xb5\xe5sY\x0dr\xc0\xa9\x84\xd5h)\xf1\xf0\xc3\x9c\xd0^\x9f\xc7L5\xd4\xfba_\xa4\x90\xc1\x88g\x95 ~Fh\xa7F\x97\xab_\x03Z|t\x03\x8bo\x95\xa5\xf7\xb9\xe8M\x1dD\xb6%\xa9\xe9\xcb\xb5\xd4\x12\x01\xf5Uoi\xb8\xba\xda\xcd\x86\xbe\xac\xab\x92\x95\x94\xdb\x13\x98\xd6!SZ\xf1h\xe9\xaa\x06\x06\x1b\xaf\xf3\xcf\xd0\xa8\xc6e\xa6\x0b\x1d\x03\x16\xcc)\x95\xc1\x1e$H\xecdM\xd3\x91\xccl:\xd2\xf4\x93k\x81\xac_[\xe8\x89W\xab\x98)\x0e4\x94SZ\x83\x85\x83\x84\x9a\xbaZ\\?\xadod\xe9G\xea$\xedyq\x15\x11\x9de)%\xfb\xcf\xb2\xa4\x8c\x83\xa7I\x84\x19\xdc\xff\x7f\x0f\x1e\x9e\xce7\xb7\xbb\xf7t\xeb\xe4\x19\xc6\x92fj\x19\x9dL\"\x9c3\x1bx\xab\xdd\xa8E\x17\xdf\x92O\xfegj\x0d\xd6\x03E\xd9\x10(\xd2\xd8K5\x0dj?\xcf\xe9\x07\xdax\x16\x81\xce\x18.\xd0\x19\xc3\x05:c\xb8@g\x0c\x17\xacf\x0c\x17\xa8\x8d\xe1\x82\xda\x18\xae\xebd\x93r\x0f\x81-\xa5\xb1[\xf0\xe9\x8d\xdd\xcc)\xfe$c7\x15\xed'\x19\xbd(L\xde:\x9e\xc2\x83M\xdbn\x95Q\xf8\xf31\xbf\xe93\xae)jO\xe0\x1es\x11JPO-t\xde\xd98M.\xadc\x03}O!L\xeb%\xcc\xd7i\x8d\xf9M\x88\xe0\xc2\"\xeeX\x9a\x91\x99_\x08i\x80\x1dsI\x8e\\\xc0.\xd7>U\xda0\x86\x8e\xcd\xa7n}\xe3\xc2\xcf\xe20>3\x89\xffE\xdd\x89uW|e\xec\xfd\x94\x84\xb1m\x81^\xe8\x91\xe8{J\xbd\x97t\x16\x1d\xfa\xf3\x97kW\x86\x01\xc3Pd\xb9\xb9\xc9\xb6\x88\xa4\x94#5d\x0b#\x97\xa9\x1f\x07\xcfX\xbd\xbaoOzO\xcf\x9b:\x01\xd4\xcd\x1c!\xfb\x1c \x19_\xa6\xbf\xb3\x16\x9f\xe75\xf4\xef\x0e\x1a\x9f\xad\x83\x86\xc15C\xaf\xa8\x890\x91c\x97\x89\x02~\x93\x87\xde<\xc9\x96\xbe\xa2_\xee\x92\xc1\x03\x9a\xab\xfd1\x84K\xd7\xda\xde\x1eD\x18\xd9\xfb4\x8c\xfd\xec\x8a\xbd\xc1\xecB\xd6\xa9\x9f\x93\xddm\xf1F\xef\xa9\xc1@_\xef\xd2\xa0\xf4\xe4\xe0\x01\x12\xe7\xa12\xdd\x90\x84\xeaJ\x1eS\n\xf6\xc1\n\xe3s?\n\x03\x8b\xc9\xe0\xbbm\x86E\xd4\xfc\xa2\xd4\xd4\\E$\x9a\xdbU\xcaK:\xda|\xba\xa9\x08\xd2\xaf\x90\x07\x04a\xce\xd9\xdc\xc2\x0b\xf3g\xfc\xaf\xe6a\xf8\xcch{\xb7\xca\xbd\xdfL\xef\x0duR~\xe1\xe8\x9e+\xde\xd5u3\x92\xa7I\x9c\x13I\xea\x01R\xa6\\\xcd\xebJ\xde\xc3\xdbnEN\xd2\xb9\xcb\xc6\xf6}\x05\xd6\xd3\"\xb7P\x8b\xdc\x8c\x84R\x15\xf0\xacP\x06<\x8b\xab\x80g\x94\x88\xccX\xc0\xb3\x0c\xbe\x82\xe2\x11d\xeb\xeb\x0e\xc4\xd3\xac\x19\xf0,\xd3\x07<\xab\x15\xf0&\x92\xadJzwx\x95\x17di;M\xdb\\\xfc\xeb\xbb\x9cN\xc7HW1Z\x96\xd9e:v\xc6r\xbf2j\x96\xad8?\xde\x0d^L<\xad\xdb\xf6\x0f\xdd_\x8a\x8d\x0c\xcd\xd1J\x854\xb6\x80}\xc0\xd4\x18\xcd\x06\xacc`\x81t\x9b/\x95x\x0e)\xd5\xe7\xb1\x1d\xf3\xec\x05-XW\xc0]kl\n\x03\x88V\xd3Sag\xfa\xcc/|\x8b}\xe22\x85\x03\xcbZr\x8c}\xb78YWw\x18\xee\xaa\xffn\xe3\xa6\x81\xa8N\xeb\xdd\x8d\xa4\xd3\xba~(j\x84\xd2?\x14q\x1eT\xae\xcc\x98\xb8\xa1\xbe\xf0\x84\x0f\xb3\xd6\xc9:\x91P\x9b\x9are~\x00Ul*\xc59\xc6\x80\xa2\xfb0\x0d\x11|;s\xc2\x98\xcf.\xc4\x02\x94\xf5\x15\x9a\xe7\x0bH\x94\x13\x15S\x8b\xbc\x96\xa6\x9d\xa2\xdb\x8ei\x1b\xb3a{\x93\x0f?\xc8\x9f\xc9\xa6\xc4C6\xc5\xbc#\x03\xb7#6n\xc7\n{\x11W\xaa\xb4\xcc{\x9dq\x17\xf5\xd4\xb1\x1d\xe5\xd6t.\xed!\xfb\xe3Br\xbb\x9d {w\xc6\xef\xdb\x99\x84\xc5\xddeq>\xf7k\x84\xe2\x9b6\x8a%#\x17\xa8G_M\xb5e\x08Mn\x9d\x82\xa8\xa7\x89G\x9de\xa3\xb4}\xa2\xbcrl\xdah\xac\xd9\xb6\x81\xb1\xbai\xeb\xa5\x97\x914\xf2g\xc4\x8e\xc9\x05\xbc%g\x07\x97\xa9m\xfdb\xc1:`D\xc6k\xcb\x05\xeb\xccr:*9\n\x11\xa5\x04\x1f\xf8\xf3\xf7\xa5+\x95\xca\x8e\xd2\x8e\xedqG\n\x1a\xf2\x92Q'4\x0fSX\x8c\xb7v\x95T]\xf9;\xb2\xac\x14\xfb\xfer\xed\xb6\xa5\x82\x99\x0b\xbe\xf7\xee\xcd\xb3'G\x07'\x87\x07/\x0e\x9e\x1e\x1d<;9}\xfd\xea\xe8\xe0\xd5\xd1\xc9\xd1\xdf\xde\xfc\xfbZ\xaa\x88\xe0\xd5\x16\xf5\xf0\xcd\xebW\x87\x07\xbf\xcf\xaa\xeadR\xaa\x98\xac=\xeb\x91\xb8\x10\xeaH\xf1U\x16\x84a\xaf\x93\xef\x9f\xbc}\xfe\xe4\xeb\x17\x07w{du$\xc4 \x0c\x16{\xef\x89\xc2\xa8\xc5\x17K\xad\x069 \xef)\xef\xfe\xcc\x85\xd0H\x11b\x05\xe3V\x94.\xf8\xcd\xf5\xcdnq%\xd72\x8fQ[\xbd\x97\xf0\xd7;\x0f\xa4\xfb6\xa1\xcb\x82y\xf4\x92\xec\xc0\x9f-l\xbdh\x01\xe9>\xef^\x18\x07\xe4\xd2\xfb)gr?-\xd5Gw4\xb1U1\"\x88G.\xd3$+\xf2)#\x80R?\x9f\xf9\xd1S?'\xdf\x84\x11\xa1\xdb\xe8\xd8\x85s\x8c\x1b#.\xd1}\xe9w\xdbAH\xba~\x07-\\loo\xefR\xb2H\x8c\x03\xd7eg\xb43\xe8k\xc3\xb2\x0b\x1b\x8d\xad\xb1L\xd0\xd4\x11\xbd\xecU\x0c5*Z#\x93\xa6W P\xdfd\xc92\xcc\x91r\x89\xed\xed\x9d\xfb\x8e\x0b\x87H\x91\xd7\xa65^^\xf8Y\x91\xff\x102\x0dIlo?\xd8\x1d4\xc3\xd8~8FM\xef\xc3\x07\x9dU\xda\xde\x19\xd6F\x1fpno?TB\xe7\xf6\x8e\xca\xc0%\xb6\xef\xb7_3b\xef\xfeHZ\xe9\xe6H\xc7[\xf7\x1d\x1b\x05n.X\xf8\xaf\xd5\x83\x87P\xbbt\x82\xd2;\x9b\x08'\xb3\x13\xda\xff\xa6\xf8\xe3=ES\xf5~\x18\x92x4T\xa6'\n!|\x15\xac\xe0Da\xd7\x18W\x85\xe1\xfa\xba\x12{\xac\x11\xdcTxL\x19\x94J\x9cm\xd7s\x10\xa2\xb9\xc4\x1e\xa1MzB\x0f\x9bE\x0f;\x8b\xd3\xc6\x8d\x0cYZ\xd9\xfa\x1d\x992\x99C\xec\xe2O\x89;\xbav\xab\xcah]\xf3D\x08*Q\xd7\xc0W:\xb3Y\x17\x0e\xfe\xac\xabg\xb6E\xe2\"\x0b\x890\x9co\xc3\x8f\xbc~\xf2F\xca\x0b\xac\x8e\xd0\xd8\xfb\xa5j\xaf\xf9*\xaaP\x17\x8b\xb9\xda\xdd\x93 \x89)\xdb\xb2f\xa6\xfdoy.F;\xeas\xf1\xb0\x1d\x95\x91\x1d\x8b\x87m\xc1\xb6\x8f\x9c\xc6#\xe9,\xeflb4\xf3\xd8\x1e=tl+,H\xe6\x17\x98CV\x0f\xbb|q(,\xd5\xb3k\xa1\x82>y\x1b\xa9\x11\x11\xc6\xef\xf6U:\x9e\x98\\\x16\x142Gn;u\x00\xed.\xc4\xb6)+\x0b\xcf\xaba\xaf\xb6\xdc\x12\xc2Q\xdf\x86[\xbb\xeau\xdd\xd5\xe2\x95\xedm\x07\xf6\x95\x9coHr\xe81@N\xecv\xa2\xa1Jk\x10\xbb\xb8y!\xaa\x07\x90\xda\xadT\x079S\x16\x94\xf0\x18\xf2G\x0ed\xde\xdc&\\\x182\xcd\xd7\xd7\x8f](\xa6q[\x08!\xa8\x8c\x9b.\xd8\xfd\x91\x9a|\x18\xa9!q{g[\xb3duw\x1a8\xab)\x0e\x96wFGQ\x94l%\xf4q-#$9\x84\xcaES U\xa3\x14\x1c#\x05iBI\x1cv\xa9\xc2\xda\x9e\xde\xb5\x117\xed\x11D\xf0\x18f\x8f\xf46\xc0\xb45\x9bne>\x9d\xad\xaf\x1f;\xb4\xcd\xd2\xa9\xcdU:\x1f2\xe1S\x7f\x970[_\xef\xe9\x16\xaf\x87\x19\x841\xe4Ho\xe4\xd3\xd91\x0b+\xea\xd4r\x0f\xac\xf2\xe1\x03j\xa2\xaak\xe5\xcb/a\xa3\x19\xbbhE\x1c'a\xb3]\xd5\xa9{\xe9\x17\x0bo\xe9_v\xc1\x88\x95\x84q\x1f \xe9\x11\xba\xcd\xb0\x0dq\x1c\xf8\n6a\x9f\x9e8X\xa7C\xdc\xa4\x97 C)7F\"\xea\xf9P\xac\xbds'\xc0\xaf\x83\xfc\x10\x83\xb8SHbD\x9eM k\x0d|\xb3#\xa2\xf3k\x8dPp\xc8\x0e\x88B+\xc1\xc6\x94\xe3\xda}\xf8\x009%/\"\x14\x87\xf1X\xb4\x9c\x9a\x9d\x80\x8dr8o\xb6\xf0\xb3\xa7I@\x9e\x14v\x8ek\xbe\xb33~\xb8K\xbf\x0d\xe11\xec\xecn\x8d\x1e\xb2\x86\xd6a\x84\xe0\x87\xb6\x04\xb6\xdf\xf9\x98V`\x0d\xecn\x8d\xb1s\x9f6p\x7fk{\x8b\xf7\xcf\xeacGt'a\xc2\xdf2/\xbd\xdc\xc5N\xc6\xb4\xcc\x87\x0d\xde\xcc:\x1d\xe7\x06\x1f\xd4W_\xc1h\xd3\x81u\xd8\xdd\xd9\xd9\xda\xbd\x1b\x08\xef\xdc\x1f\x1c vu\xd8\x90\x02\x8b\x83\x12e~\xa5\x0d\x8a*\xdc\xbd7\x90\x19\x13\x1f\xb6\xc4\xf0\xc5\"K.\x802\xef\x98%\x1dO\x80\x05a\x0eqR\x00R\x00\xa7\x11Y\xd3X~dv\xc1\xa2\xf0\x11g\xc5sB/\x81\x07\xc88\x8c\xb7\xb7\xf1\xdf\xed\xdd\x87\xec\xdf\xfb[\xec\xdf\x07\xfc\xfd\x83\x9d\x0eg\xb1\xbb\xe9\x08\xaefHg\xbd\x84\xd4\xaejgd\xd2(\x99\xc6\xf6\xe8\xbec[E\xc2N\xd5\x91\x7ff!\xdbi\xfdlQVn\x9d\x82\xfc\xda\x1eX\xd3\x04o{\xf8\xf9\xd8b\x0c\xd7\xfd-\xc7\xe6\x14@\xed\xc9\x00UCV?mU\xb5\x89\xe9j\x90l\xa7\x90i\x1dK\x1ah\x0c\xa94d-\xe4\x85\\\xa3\x1c\xfe\xa6\xc32\xac\xd8\xa3\xcdQ\xbf\x0d\xf5}:I\xb5(\x9f\xae\xe3\x03\x87Y\x1e:.X\xbe\xd2\xfe\x10\x83ik{i\xf7\xd6)l\x99\x088\x9e_\xaf\xc1\xa0\xf9KDK?\x11\xa2\xb8;0)\x0d\xbb4\xc4\xd5\xf8\xa8s\x0c\xd5z0Le#\x9d\xc3*\x02\xb6\xcdTG\x02$\xd8\x86d6\x13U\x89\xf3U\xf5\xa7\xd2\xb0\xe9\x1bE\x1e\xe5\xf5|\xf56\xd7>\xcep\xdb\xf8\xc6z\xea\xc7\xff\xb1\x80Y\x12\x9f\x93\xac\x00\x0e\xe9E\x02i\x16.\xc3\"<'\x8c\xcdZ\x95\x9a\xef;\xf3\xdb\xbbm\xc91\xc3\xc6\xe3\xed-%\xcd:RJ\x15Z\xec\xd3\x03\xc1>\xdd\xff\xef\x99}\xd2\xb0\xa5\xdb\xbb\xea\x95\x1dw\xc48>\xc7\xca\x94 }~p\xf2\xe6\xed\xeb\xa3\xd7\xed\x80\x15e\x9b\xdfo\x16\xb7\xc5\x01\x9d\xf58g\xb9+\x0b\xde\x15E\\\xe1<3D\xc6@+\x0c-5\x84$w\xe1\xa1S\x90\x17\x84y\x1a\xf9W\xf4v\x88\x93\x18\xf3E\xdb\xe3\x9d\x11\x9a\xf5\x938x\xba\x08\xa3\x00Y\xb7\xc2\xcb3\xcacX?\xf9\xe7>\xf3\xe9\x9dXU\x16J\xee\xfb\xf7C\x18\x07\xc9\x85\x17$3\x14\xa18^\x92\x92\xd8F\x18\xb9\xc8\xc2\x82\xd8\xd6W\xec\xd3\xc7\xa2\x8a\xf7\xcd\x1eC\xd1_\xfdx\x8f\x17\xa1j\xd7\x9bEI\x8e\xe9\x0ds<\xc1\xdf<\x82lc\xe3\x91\x03\x01\x89HA \xaf\x01i\x1aN\xb3c\xbdMYn\xb7`H\x8dI\xf9E\xc1,8)\x9dfD\xad\x889\x95tF\\F\x11J\x90)\x15g\x97-x'\x0ecpcrA\xf9\xbef1s\xff\x8aYZ^\x82\xa6g\x98\xd5\xc2qei\xab\x90p%v|+\x9a\x7f\xa46\x1e\xec\x9c\x08\x0e\xf9\xdb\x0f\xf4\x94\x1f\xbd\x98\xff{\x90\x1d\x8cF\x0f\xd4d\xf1\xb8\x8d\xa0\xb9\xf0`w\xd7\xb1\xd7\xda\x02\x075\xca\xb8\xc1\xfd\xce\x97\xa8\xe4\x84t\x17\x17\xe0\"u_Sfiz\xacX\xf3\x98\xf2\xd5\xa5\xc3\xa4\x04>\x8a\xf31%<^\x9b\x91\x88,\xa4\xf8\xf0\x11\x14BX\xcb\xf7\x03\xbf\xa3\xa8\x01w\x83\xb9\xa8\xfc\xa7\xd0\x8e\xb0\xb5\x0f\x1f\xea\xd6\xd4[\x14\xddt\x8b\x1e>\xd4\xac$\x83N\xdb\xfa\xd9r\xd0\xd5\x82\xd2\x81\xcf\xf3\x83\xb8\\2\xbe\xc1\x96`\x18L\xe6\xd1\x82\xd2=\xac\x93\x83\xd0s\x8d\xe6;y\x1a\x85\x85ma\x8e}\xde!\xb9\xf9 \xed@\x95\xd0ti.\xa7m\xdd\xdc{'\xd3\xe0\xd6\xff]T\xf5\xdf\x92\xa8J\x83\xb2\xb6w\xdb\xef\xc3\x01\x94\x8c__\x94\xd5\xc5e\xbcN\xcfH\xf1FT|=o^\xab\x1aX$\x02\x9d\x01fp\x0e\xf1dMQ\x1b\xad\xa2\xf0)\xa9\x90\xc4y\x91\x95\xb3\"\xc9\xd0\xe4 \xc28/\xfcx\xd6-\xddo\xfe-\xdd\xbe\x93\xe6g\x1c\x0f\xec\x83\xdf6\x00_q\xfdw\xb6nz&9\xfe\xc8V\x17XT\xf7'g\x1f(;P\xb1\x0c\x0f( \xcd\x98\xca-\xc7\x15\xde\xf0[\xfc\x82E\xc6\x80'\x8f\xb5G\x9bc\xc7\xe5>\xb5\x94Z\xc0\x83\x1b\xb5\xb8\x05\xf6\xaa!kp\xd1s6\x17\xba\xb3\xa0\x13m\xe1\xe9\xe1\xe1\xdb2\"/\xc2\\\x11\xec\xe0\xe9\xe1\xe1!%M\x9f\x91Y\xe4\xb3x\xd3\xdd\x80 O\x0f\x0f\xd1\x14\x817\xd1.\x8dB\x12\x17o\xc9\xacP\x97?{\xfd\xd2X\xc8\xe6\xa2->J\xde\x93X=\xf8g~\xe1\x1fe~\x9c\xcfI\xf6\xbc Ku\x1b\xdf\x84\x91f\xe4\xdf\x1e\xbd|\xf1$\x8a\x9e&Q\xc4\"P\xa9\xab\xf4\x95\x7f\x93dK\xee\x85\xa4\xae\xc0\x9c%\xb4U^\x92 \xf4\xd53|\x19. e\x89qs\xbb_\xbe\xf2\x97$x\x95\x04\xe4\xa5\x9f*J\x93@\xb3\xebo\xfc0\x16\xe1O\xd4K\xf3&*\xcfB\xc5|\xd9{\xcdp\x0e\xbf\xff\xd3\x0b\xbc\x8a\xd4m\x1e~\xff\xa7W\xe5\xf2\x94d\xda\xe27\x98%X\x03\x0b\xb4< c\xcd\x80\x0f\xbf\xff\x93 \x90\x0e\xbf\xff\x13\x83\x94$\xd3\x80\xc9!f\\\xfb\xba\x9c\xcf\xb5\x03\xa4\x07\xe5pAH\xa1^\xd5#rY\x1ce\xfe\xec\xfdS\xddQ\xa9jh\x8a\x93rV\xad]Ur\xed\xa2+zb\x07\x945a\x94\xf89|\x05\x0b\xc1s\xc2\xf9\xfa\xba\x8aZ]\xba\x18\xc9~1=W\x18\xbcQ&4\x98\x9e)JN\x91\xacW\x95\x9c\xc0\x1e\x9cR\xa4\x7f\xaa\xba\x90\x80_\xc5'H~\x9e\xd0\xfb\xf7\xc3\x07(\xed\x13\x17f.\xa4\x8e\x0b'\xd3y\xfdn\xee\xc2\x19E~\xd33\xca\x80\xa5.\xa8\xe2\xd2 r]\xd2[=s\xe0d\xba\xc4\xcfC\xfa\xf9\xd2\x85l\xba<\xae\xc5\x9b0\x14a\xf7\n\x804J\xcb\xed\xfbj\xbe\x03\x11w\xe3\xbd_Q\x94:&n\xbc\xbd\xfb\xefv%\xff8v%z\x82\xef\xbec[e\x9c\xcf\x92\x14\xbdU\xda$\\\"\xfc\xf5T\x07\xa6\x123@2\xcd\x8e\x99R`\xe7\x01\x1a\xaff.\xfc\xa2\x97\xf6u\x98\xfaiv<%\xf4\x18\xc9\xf6\xf0\xca\x99\xe8$\xfeF\xd8\xfb\x0c\xed\\\x84\xb1\xa9/(\xa9\xf1v[\xc2\x92W\xc4V\xe35\xa7\xb0\xc6\xaa\xb8%*\x8d\xcf\x9c5\xdf\x16\xd4\xb0p%\xf7\xb7[\xaf\x03\xdez\x1b\x85,8\ni\xd7?\xe7\xef\xdb\xf6\x10K\xd6\xebN\x1b\xb5\x9c\xf1\xf7[\x8e\x97\x93\xd6\xba_\xb1\xb6\x1elvb\xe1\x9dr`m\x8f\xea\x84\xb7\xd6\x1e\xd5\x05\x7f\xdf\x1e\xd5\x01R\x9a\x95\x8c\xbeYx\x89\x85i\x96\xccH\xde\xf2D?\xc4\"\xae\x98k\x16=\x85=\xb0\xf8Gx\xceg\xf6e\xab\xd7\xf7f\x89\xee\x13\xb4\xb0\xdd\x83So\xde,xM\x0f\xc4\x9aY\xda[dW\x1a\x9eW\xe0\xc8C/#y\x12\x9d\x13\xbb\xbdz\xf2\x83\x1e\x1aM\xf6g\x8f\x1ea\xa1\x1e\xccS2C\xfcr<(\x1b\x96x\x88\xfd\xde\x85\xf7z\xd6\xf7\xba\xcb\xd2\x83d\xc7\xf0\x14\xfdQU|\x1c\xdf\x8b\xb7\xe4'F\xd9\x1e\x9c\x93\xb8p\x98\x0fK\xb1 \xb1\xfd\xde\x919\xb4\xa2\xd3\xcd5\xcc\xfcb\xb6\x00\x9cCK\xf9\xd6\x06\xbf7\xbdsF\x15\xb5V\xa8\xbcf\xaf\xa5\xf4\xbb\xe6d*m\xb5\xcd\xe21\xd0a;8\x85\xe6h[\xe0r\xd4\x87\xed@\xe8\xb9\x88w\xa2\x95\x88\xd02\xc4\xb7\xea\x0d8\xe7\xb6\xcb\xc4;\x99\xa9k\\\xe95\xaa\xf2\xd3\xe0.\x89wr\xcex\xcb\x11`\x8c\x9a\x93\x9c\xb1\x97\x9b\x8c\xb5\xac\x05K}p\xc5\x85\x995\x02M`\x1f\n/y\x0f\x13(\xbc\xb9\x1f\xf6\x84@\x87*A\x14?\x1c\xfd\xd5#^\x9d\x02\\\x7fm\x9649H\x96~\x18\xab\x17P<\xfa\x13,?%\xa5?\x124\x1b\x19\xf3\xb5[PP\xf9 \x89)\xfck\x0fF\x8e+\xe2\xff\x94H\x81\xec\xa1I\xb5\x8d\x81*f\x1e\x89\x0b\x92\xd9\\\xa7P\xda\x19\xf2\xe8\x98\xa1\xd8#\x97aas\x06\x7fm\xd3au\xf6\xd0\x1b\x81\xdbX\xefCd\x1f\xd8\x16?w\x1b\xb3\x85\x1f\xc60\xbb\x9aE\xc4B\n\x08Ma\xde\xd8\x14\x82\xf7!d\xda\xd2\x18\xfdK\"Z\x9cc\xc9\x04\"[\x91\x1dP~\x1a\xe7\xb2wYp\xfck>\x9f\x1f\x9fDd\xf7\x84\xdf\xbc6\xe0#\x88k\xd9t\xf8\xc8\x01\xdf\x8e\xa7\xe1\xfaz[9 ?\xf4\x90\xa0\x90\xdc\xad\x8e\xd5\xc8\x05\xd42\xaf\x89}z\xa9\x1b\x93\"z\xe6\xb5\xe9\xf8\xbf\xec\xc5Egl\xf1s\x03\xfd,\x1eD[(\xc4\xe5f\xfbxB\xb5\x13\xa5[\xfc\xbc\xa3\x80\xa9J\xe7\x14\x08(|\xc0C\xe0\xf0\xa3c\xea\xed\xa7\xde\xdeV\x85_54\xca\x80U-\xfa\xb7l7,\x01S\x05\x87\xa9\xaa\x02\xdf.v\x0b\x9b\x92u\x0e\x00'\x01J\xf4L\x0d>\xfa\xc6\x9dz\xd5\xbbv\xc2T\x8er\xaa\xddu)\xbc\x93\x00\xaf\x10\xfcA1\xbd\xcb\xd6\xa0\xf0N.hA\xe1x'\x94\xa2\xa7d\x85wB/\xc81\xfe\xf2\xc5W\xccG\xfdd\xc6\xed\x0d\xe9Eqd\x17(\xc40\x8e\xfc\xed\xb0\x91\xbb\x15o\xaeV\xf5\xac\xc5\xdeI\xa0\x03\x86\xb8\x9e\x14*\xcd\xf9\x9c4\xd7\xaf\xf9\xda\xa5\x9d\xb1\x1b\xb0:X\xf5\xe5\x073\xb4\xec9\xa5\xa7\x19\x89\x87\x00\xc2\"'\xd1\\\x97?\x8f>\xb8\xceo\xd0\xbcj\x7f(\xf1\x04\x12\xaf\xde\x7f\x17\x9e\\L\xc0\x90l\xb1\xaa\x16h\xd3\xb2\x8aGC\x95\x8bg\x18\xc5\"\x0c(\xe9}\xfc\x16/\x98\x11\xde\xcd\xaf\xf8\xef\xbb$\x03^\xb1\xbe\xb2\xde\xc0\xdb\x86\x9b\xdf\xa1wL\x05\xfe1\x03\xff\x11\x85\xef\xd8\x855\xddx\x87\x8d\x93\x8f\xcf<\x91\x01\xfb\xd7\xb3w\xd7\xda\xf9w\xe7\xdd\"2\xea\x1d\x7f\x8dg\xfd\xd0x`\x17<\x82\xe7\xa1\x0b\xe2PX.X'\x0b\xcbq1\xd4\xa9\x0bY\x9d\xc5\xbau*\xd4\xe0Cl\x04\x13\xd6n\x05)\xe2\xcf\x16r1.\xfa\xabf\xfe\xec\xe6\x97\xd5_\xd7.\xbb\xc4\xf5\x93d\xd2>A\xd9\xb1\xbf\xe4\x9b\x97\xbd\xc9e f h?\xfc\xeb\xbcSy!Wf\x84b= \xa7i\xdeco?\x189\xf6\xa1l[\xdb\x1e\x1f\x89\x07\x84\xfa\x17\xac\xdc\x13{)v\xcd\x9cS\xfc=\xec)\xd9T\xa6\x7f\xc6\xb3A\x19\xacf\xad\x9a3G\xba\x97br\xce\xfd \x19C\xefb\xfe\xe7\xa4\xb5&\xb3*\x07U\xb5\xc6\"Y\xcc\x89\xdf.\xcbi\xd9\x11\x9f\xc7\x1a\x05\x93Xp(\xcd}n\x9e#\x04\x97\xbe(v\x92\xc5\"\x13!\x88q\xeaa\x88kG{\xe5\xd41\xb9\x80\xecQ\x17\xba\x04U\xc8n\\\xfa\x86\xdf(\xa8'}\x8b \xd5GNU\x84Z\xe6=v2\xb0D\x86\xe6SoNwy\x88\xb2\x98\xe0\xcdv\x88\xdb\x89?}JA\x93\x0b\x16\xf4m\x82\n\xf5\xc6$\xe7\xf6\xdc\xfb\x13\xac\xc3\xdc\xfb\x01\xff\xff\x0d\xfc\x11\xd6^\xb7\x01\xf2\x8d \x8a\x0e\x1b\x1f3\x13S[\xc6\x15\xdc\xfe}\xec\xd8\xf2+\xa6v\x90L\xe0Y\xc7\x87\x8d.%|\xd3\x9e\x1b]\x9e\xbeM\x16\x04\xd2\x13\x15f\x02I\xf4\xb4\xe9V\xdc\xbe\xc3\x14\x16j@\xeb\xacS=\\\xbb\xa4+\xbc\xf6\xda1\x8e\x1a\xf7\xbbo\xd8|T\x17v)\x0eG\xb5o\x870\x81>\\\xd7\x19\xda\x9a\xfd\x9a\xc9\xeb\xb7\x1fl\x99\xa2\x85\x1ez\xcc\xea\xd9\xc3\x13d\xbf\x97\xc1\xc24-?\x8a\xfa\xa6$\x93\xaa\xea[\x8fa-\x9d\xf1\x10\x8b\x86`\x14\xdf$\xbc\x8a^d\x13\x0e\xe7T\x05\x1e\x9d\x1a\"4\x03o\xd2\x90$\x1f\xb8~m\xa4\xa7\xb1\xce).\xa7\xd7\xc8p9\xeb9\x0f\xb6\x14\xae\xaf\xf7S\x80\xe8!a\xe8\x1f\x90\x98F\xcc\xcbP =\x9b\xeb\xebn--\xa3\x10\x81(r\xf8\x08\x01;\xa6\xa4E.\x88\xf4iy\xcc0\xdf\xc6\x062\x18\x99\x1d\xf7Q\x85Z\xa6\x198\x98KM)\xeb]\xeb\x8f|\xe8\xa1-Ub\x87\xde\xf9\xd0\x8b%\xf3g\xbdg\xf7\xae\x00]\x0f\xc5\xc9\nP\xbc:luw\xbd>v`\x90\xe6i\x93\x08jw a;\x90\xd9\x89i\x07$\x14\x84?o\xa4\"dB\xaf\xf6\xd4\x91\xc7\xb4\x1b\xb6]\x05\x8a\xed\xb9\xaasmo\x0f\x98\x84\x07\xc2\xb8f\x0dk\xa7\x8f\x18\xd6\xc1\x9a@\x18\xcf\x92,\xa3\xb7u\x18\x9f'34K\xd2\xb9\x9a\xdd\xdc\xbe\xb8\xa3\x02\x14z~\xb5;\xf7\xf6}\x95\x9f\xbc\xc2\x86\xbb\xe4f\x01m\xcdc\xce\x9bi\xdb\x02F,\xb0W\xe3\xdd\xac\xe5C\xc2u\x1c\xa6\xdd\x98\xbb\x90\xaa\x08\xa8\xc0\x85\x85\x0b\xe7\xae\xb0\x07Ia\xbf_2\xd4Y\\\xf1\\\xa30Ze\xff|\xc5|Fq E-p\xeb\xd4;E\x13\x96\x0e\xdc(I\xe6\xb3\x9b\xfa!\xa20\xd5>sT\xf3C\x9dJ\x802|a\x9d\xe0<\x82\x00\x1e\xc3\xe9#8\xd5Y\x9a\xa2\x95\xe9\x92\x07\x8c\xbd\xb2}\x9b2#dzz\xecL7\x8f]XLG\x18+\xf0\xca\xc6wN\xed\xa7\xba\xc4\x9f\xb3\xca\x0cu\xd9<\x8ej\x13X\xa6\xf7\xc1da\xdcq\xea\x11\xaca\x97\xe7^L.\x0b\xdbq\xbc \x89\x89\xc6\x1a\xb7\x1alb\x9f\xbbp\xe5\xc2\x82\x07\x82\x82b\xd8\xd0\xae\x1d\xef\xeb\xb7\x07O\xfeL\xc9ezq\xbd=8z\xf7\xf6\x15\xec\xc1l\xb5C\xb6\xd3o%-\xe07\xe90\x90JFW\xe0:\xd8\x87\xc2\xa6\xf7\x14.\x7f\xcc\x97\xbfh_\\\x15\xafk\x8c,I<\xd6\xacB\xe6\x87\xe0'\xe1\xaf\x90\xa1\xd8\xb0rhs\xdb\xfa\xc6?4\x7f\x0d^\xab\xae!QR\x1b\x99Hf\xa0M@7Y\x98\x0c3\x1f\xe1+*\xcd\x11\xaf\x11;cv3L\x8c\x87\x86W\xd3\xe4\x98\x0b\xf5n&:\x8d\x1c/a\x98\xc3NuY\xa1f\x0b?\xf3g\x05\xc9\x9e\xf9\x85?Q\xba\x94q\xfb\x9c\xde\x85H\xbd\xc0/\xd0j\x8aNe\xde\x03\xdfJ$\\\xf5\xa1\x9a\x85'\xde\xdc.\xd0TOA\xf0a\x82\xb4\x12\xb9\xe0\xaeK\n\xac\x1aX\xa5\x90\xe3M\x88\xa7u\x14nLo\x18\x89\xfc\xa4%U\xed\xde\x7f\x82Y\x9b\xde?\x9ef\xc7m,\x1br\x16\xae\xef\xec'M3y`\x13`,\xd4\xac\xd3q H\x04\xe3\xaaB:\x1d\x1c\xc5\xd3\x12t\xfc\x01\xb8\xf3C#t\\fg\xde\x1bX\x87\xcc{kP1\xcd\xc3\xd8\x8f\xa2\xab\xa1\xd2w\x9f+\x8d\x93*j0\xe5\x88\xc5\x1f\x1a\xd1{\xacSr\xab\x92\xd9\xb4\xd5\xc7\xb1,\xa7\xd4\x1ab\xf3\xcfJ\xcchj;m\xbd\x8a\x89\xcc\xeal\xb4\xfc\xa8\x8c\xcb(\xebF\xa9\x8b\x8f<.\x86`V\x1b\x96^u\xf9\x11\x81\xb7\xebP\"\x02\xf7l\xb7\xc0\xf1\xd0\x00\x88E6\x18\x08\xf1\"\\\x84\xb9\x01\xdcB\xa5}\xad\xd0J\xc7\x1eACwn\x0b0\xa9\x953\x8e\x1d\xa3\xd2\xa4_M=dAc{\xfb\xc1}\xae\xa5\x7f\xc0\xff}\xd8\x8cj\xc7\xc3co?\xe4Q\xed\x1e\x8a\xf7;\xfc_\xfe\xfdC\xfe\xfdC\xf6\xfd\x0e%G\xf0\xdf\x11\xffw\xcc\xff\xdd\xe2\xffn\xf3\x7fw\xf8\xbf\xbb\xfc\xdf\xfb\xfc\xdf\x07\xfc_\xde\xde\x88\xb77\xe2\xed\x8dx{#\xde\xdeh[\x19e\x8f9\xdb\x0eY\x8b^0\x1aw\xc2x\x87U\x90J\xbc\x92\x9f\xf2\x10\x8f]\x94(WJ\x02\x82\xfe\xc1-\xc8CD\x88\xe6\x04k\xcc\xd0}\x84\xf1V\xaa\xa0\x19Ul\x91\x0e\x82\x94\x1b\xed\x83\xd0:o\x9f+\xb4\xdc8\xe9n\n?_$\xed{\x0c\xbeVL\xc0\xa2\xc2\xed\xc1z\x9d\xc8\xcf\xc78; \xc5'\xa3\xd1h{4\x1a9\"v>C\x18o\xfd\xf8\x8c\xebH\nYG\xe2\x03\xa6\xb3\x84Y\x12\x10H\xe9dtv\x96\\i]\xc0W,\xba%\xecc4 \x0cy\xca\xa2_\xae\x83m\x17\xb0\xb1\xc7\xca\x1dx\xfc\x18\x10~\n\xf8\x0f0\xda\x1co\xc3:\x8b\x99\xd9\x9b1\x17$\xfc\xcb\xb3\x0c[\xb7\xc3a\xbd`\xa6\x8b\x1b4\xda\xdcR`+\x0dPd\xfe\xc5pP`\xb15\xbc\xcc\xbf\xe0LiX\xcbnM\xe0A\x81\xa7d`\x12\xc3c(\x1f9\xc0-\xb9x\xe4\xd6bZ\xae\xaf\x1f;\x18F\xe2+&kiV\xa8\xc1\xa6<6X\xab\xf9w\xb3\xf4\xea\xeb\x83\xe2\xacM\xc7\xb6\x8a,\\Z&\x85y\x9b\x9bV-\xaa`\x059\x15\xb2u\xbb\x01\xf7\xc2\xca\x8e&\xd6\xdf\xa6:\xbc\xd4\xf6\xc3\xf6{\xba}\xd6\xd4\x82u\xf0YD\xce\xaeXS$\xdb\xfa\xff\xd3Z%\xff\xcf\xfac\x9b/\x8a\xea\xaau\xa5/\xda\xb5f\x03\xb8o\x90\x85\x12\x8aT\xb2\xc0\xc7\x1d\x0e#S\x04k\xb2\xe6O\xc9\xb1\xcd\xbc\xf3~\xfb\xf5\xff\xf8\xb7\xff\xc2\xe2\x9d\xf2\x9fX\xa6l\xe3Zs\x8b\xd3\xb5I\x98;s\x89J\xbe9\x86\xe3\xed0\xca\x807\xfe\x97_\x82\x9dLcZ;GWnA\xfbR\x94_\xca\x07\xb9e\xf9\xd2Z\x809\xec\xc1\xcc\xa3\xb0\xda\xc7\xa0\x81\x04\x8er0eT\x05\x8e\x803\xef6\xe1jE\x96]-w\xc1\xc2\xbc\xeccM\x85HTh\x11\x1ej\xc1\x82Z\x0b+\x8fT\xaem\xfdX\xfc\x18\xffx\xfe\xe3\xfc\xc7\x0c\xfe\xed_\xff\xeb\xff\xf5\xeb\x7f\xfd\xd7\xff\xf3\xb7_\x7f\xfd\xed\xd7\xff\xfc\xdb\xaf\xff\xc3o\xbf\xfe\x8f\xbf\xfd\xfa?\xfd\xf6\xeb\x7f\xf9\xed\xd7\xff\xf9\xb7_\xff\x97\xdf~\xfd_\x7f\xfb\xf5\x7f\xfb\xed\xd7\xff\xfd\xb7_\xff\x9f\xdf\xfe\xf3\xff\xfd\xff\xfe\xfa\xeb\x8f\xe5xs\xfc\x00\xff\xff\xf0\xc7rN\xe6sk\xc8\x19\xbb!M9\xde\xde\xc1(n-vF\x8f\x91g\xe2\x8a~\xd2{I\x0b\xd5q\xafm\xf3 $r\xc3 \xea\x02\x8a\x8d:\xe1%(n\xb1,\x8f\xc4\x01\xe6_Q1x\x14\xc8\xe9\xa7[\x8em\x89z\x96\x81\xa6\x11u\xfaVJ\\_\xa1X*\x17\xe4\xf6\x95\xe76V\xdcg\xf0\x18F\xb0/\xa5#\x1e\x1d\xd7\x06\xcc\xcaV2\x96\xf1\xc7\x1c\xd3\xacl\xe9Iy\xee\x1b\x11\xf9\xddN\xd0\xe493 \x18~j\x0d\xbc\x82O\xc7\xcdM\xe1\xd1\x0f\xb3DM \xf7\xdc)a\x03\xeaK\xbbd6\x15\xf9\xef\x02O\xf7\xc7J\xde_\x06\x8d0\x9eEe\xc0\x82]\xe8@C\xd4\xe9\x03\x8d\n\xed\xff\xa7D\x02\x8e\xba\x07\x0fS;\xbd\xc6\x08\x91\xab\x80\xc3\xed\x0ecc\x99\x06\xe3\x8e\x8c\xa4\xc4/&x\x83\xef:+v\xd9\xb7_\xa3\x91\x96\xb6\xb8\xa9\xb4\xb8\x0e\xdcO\x99`\x05x\xa3\xc0E\x91\x89>\xe4\xf1P[\"S\xf48\xe5a\xfaC\xd8\xdb\x83\x11\xdc\x83M\x05Ca=M\xca\xb8\xa8\x1d\xb7br\xe6\x17\xe19is\x12\x0f/\xc9\xdd\x0f\xbd(>\xc9\xd8\x93\xb8\x98%\xd1\xc78\xb2\xb4i:|\xd1\xfc\xc7<\xb6\xb4\xaf<\xfc\x99|\xbcY\xf0\xd6?\xe6$\xc2\xc2\x8f\xc2Y\xbe\xd2\x1c\x86L!\xfc\x14\x80\xb42\xf2\x19\xb4\xfa\x88\xf6\x17\x19\x99\x7f\xe4\xa5\xcf\x97~\x14\xad4\xfc!\xa3\x17\xad~\xf4\xc5\xa7\xef\xdf\xaf\x06\xfc\x83\xc6/\x9a\xfd\xf8\x13(O\xef~\xf4\xe5'\xc1\xfey\x99~\x84\xa1\xa7w4\xf4\xd8\x1e\x8d)\xb9\xbc\xf4\x8b\xd9\xc2rad\xae.\x0dfZ\xd5S\x8a?\xd5k\"\x1e\xc1\x19\x10\x93\x921\x91e\x0f(z\xa8\xd2\x99\xc5\xd3B\x9f\x19C2\xafO`_\xd8\xe11/\xaa \x9a\xc0q)o\xecL\x8bc!\xc8\xcf:qA >\xbe\xe1jrQ\xa3\xe5\xc2\xf8\x06\xeb\x99)<4`\xd0\x92\x86}K\xea7\x964\x93\x974\x1b\xb8\xa4\x12?\x91a\\\xb3\x04W\x95\xbd\xe1k\x19:,N\xd3\xdd\xadhN\xfc\xec\xdf\x01\xf4\xee\x963\x8d\xc2B \x9e\x1d\x03K\xfd: \x0dGl\x8fw\xda\xbe& D!\xdd\xd7L\xef\x86J\xb4\xae\x90\xc4\x9a\xa1\xf1\x8a\xe5\x9f\x9e\xce,\x9ew\xe2\x9e}\xea\xfc\xf1\x9eC\x99\xe3\x0f\x1f`\x1bu\x1e\x05\xc9\x8b\xba|\x7f\xe2\xdcsac$\xc2:\xd1zc\xac\xe7\x9f\xca\xb5|lH\xaa\xc4\x1a\xf3\xea:\xde\xbeC\xffkT\x92\xcb\x1d[*\xa3\xdc;-\xaf\x8a\xbd\xfd\xaaP\x05r\xe7\xdc\xf7Y\x12\xa8\xde\xb3\x9d\xfd\xfd{\x1e\xb9$3\xdb\xb2\xe8\x1c\x15P3DO\x02\x92\xad\x9a\xd0]\xaa\xe3\x06@\xd3'gOx!\xf14<\x95%\\;\x95\x8a\xfc\xedZ\"\xa7_\xab\x83\xe8\xe1\xe8\xd4\x9f\x9d3K\xff\xdc\x85\x08\xc3T\xcfY8}\x93\x93z\xc0B}\x86gq\x92\x91\xa7>\xc6\xf6\xb3B\x0b&\xf4\xda\x83uZ\xb6,\xa3\"\x8c\xc2\x18\x8b\x96\x8d\xa22\x0eQ\x11\xbf\x0fV\xd9(\xc8\x8bp\xf6\xfe\x8a\xbe\xbf\xe2\xef\xf5CX\x98}\xe4\xcf\x9b\xbbY\xc0>l\x8f\x1fn?\xdc\xbd?~\xb8\x83\xe6\xfe\x8f\x1f?65\x80\xd1g\xeb\x03O\xbc\x1c\x83\xa3\xbb\x10\xc0:Xg:\xfb\x01\x94\xfea\xd0\x06t\x8e\x90Z`J\xce%o\x876\xf2\x85\xbd\xbf\xf6\xe3\x8f\xb9c\xb9\x10\xa84\xd4\xd5\x83\xfe\xeeK\x06\x8b<\xbe\xe7\x9amG\x18y\x0cE\xcd\xb0\x0e\xf9t\xf3\xb8\x82\xf0\xc7\x80\xf1\xd5\xec\x94\x07?\xe12\xa5\x85+>p\x1c\x17\xd6\xd0\xb6\xbf!\xf1\xc2\xa4!\x9b\xc7\x95F.s\xcd\xe4O\xe3\xc1\xa9\xcf1.\x01\xcc\xe1\xab\xae\xe4{\x03\xc6\x8f`\xbe\xbe\xee\xc8;S\x8b\xd8\xe6h\xe8k\xe3\x8f=\xa5D\xbc\xf1\\;nw\xf0|9\xbe\xaaC0\xa2]\x00s\x14J\xe9\x07l%F\x0e\xcf.!-\x1b\x8b1\x1f\xb9\x90V\xad\xee\xc1\xb9\xe3|\x00\xbec,\xa3O{\xfb\xe8\xa0\xeb\xc1\xc19\xecC\xca\xcb6]8\xc7O:#hY.3\x8f\x06kS\xa0F!\xd3\xdct\xa4\x15\xb3\x07a\xb6\xe6\xa5\xd9FW\xb0\x0f\xd3c\x98\x08\x1cT g\xdb\xdc\xa0Z\xcc-\xd1\x08\x1a\xa2\xeb\x06d\xd5\x8d\x08\x01\x89\xac\x8ak\xb2*\xeb\x90U\xb1\x8a\xac\xcaV\xa5\x03\xcc\xf2\xfa\xd4\x8e\xed\xedQ[\xec\x9c\x88\x92q\xbb$\x14%;\xed\x12\x9f\x97\x8c\xee?h\x17\x95\xbchgk\xb3]\x94\xf3\xa2\xadNO\x11/\xb9?\xden\x17\xcdz\x03\xf7U)\x98\x88wrB\xf2\x97IPFD\x97C\x14$\x99\xff/\nW\x10\x8c\xbb\xc7r\xe2\xe9B\x99\xd5\xf9\xdex\x0c\x86v\x8a!o\xe1\xe7\xaf/b\x91\xbe\xb5\nC\x17s\x95\x0d3\xb6 \xdd\x84oP\x83\x10&\xa6\xf3\xcb\xa8\xe0\xa1\x99\x9a\xa0A7e\xbb\xb3Ts\xae|q\x1e\xfd\xa1z/\x96\x0eR-\x8b\xdaY;\xcc\xf4<\x18Y\xa3.E\x92\xd6Y0\xde\xdd\xd9\xdd\x1c\x05-E\x1b\xbdv\xad-o\xf4\xc0\x1b\xb7J\xe8}j\x9d\xfa\xf1OI\xab\xe0\x8c\x16\x1c\xfa\x85\x0b\xe3\x1dxR\x9e\xc1xs\xf4\x006\xefOv\xc6\x93\xf1.\xfc\xe9\xe5\x91t\x10\x86\xe9\ns\xb1\xf4\xde9\xc9\xf20\x89s\xbc*;/?|\x80_\xae]E\x89\x97_\xf8gg${\x17*\x9d\x97x\xb5 (\x02\xdd\x9e\x85\xc5[r\x1e\xb2\xf2\x85\xb2\xfcY\x98\x15W\x13\x08\xba\x85\xa7e\x18\x05G\xe1\x92\xe4\x85\xbfL'p\xd6\xad\xb2\xf4g\x8b0&\x93v\x0c\x85.\x07Ph\x1d\xaf\x82dy\x12\x06,\xcf\x94\x1ao\x06\xc9\xf2U\x12\x10S\x95<%\xb3\x89\xde\x88*\x8b&J5,/\xccMMG\xfeUR\x16\x13\xb0\xbe\xf6s\xf2\x02\xff\xd0\xb4\x14$\xb3\x83\xcb\xd4\x8f\xd9r[Q\x98\xebj.\xfd\xcbg,\xf5( \x8e\xfc3c\xff\xf30*Hf\xaa\x81\xe6\xa4~\x91d\xefp\x9e\x8b\xa2H\xf3\xc9\xbd{IL)^\x01=^\x98\xdc\xab*j\x86\xc5|\x97r\xfdB\xce\xca\xbcH\x96\xfar\x9eO\xf5uJX\xea\xaa\xe7A7\xa9N\xab.\xcfz\xf4\xac\xd4%\xbb\xaa\xea\x13\x92\xbe\x08\xe3\xf7a|\xa6\xaf\x94\xb1\xd6\x9e\xc7\x05\xc9f$-\x92\xacOc[\x7f\xc9\xb0\x97\xb2\x82f\xba\x19\xc9\xd3$\xce\xc9'\xea._$\x17\xe8\xd3M\x02\xbejj\x073\xa8q\xeb\xcb$ \xd1[\x12\x07$\xc3u\xb3\xc8\xa5\xbfL#\xa2\x83`\xe9+\x04\xe5\xe0\x19I\x8b\xc5\x04\xb4{R\xd7\xcf\x87|@\xa7ppY\x10<#\xb9~\x1fi\xbd\xa7\xc9r\x99\xc4\x83j\x97)\xc5\xc3$8,O\x97a\xc1\xa2M\xe4\x13\x98Zg\x04\xd5.i\xc9\xfeIr\xfc\x97e\xd1\xa5\xbf\x92\x94nU\x8e\xfa\x01\xe2\x07X\x89\xcb8\xad\"\xf3g\xc4\xd20\x9eiFrR\xd0>\"\x81\xb0u51C\x17\xad\xa9\xa9\x10\xc6a\x11\xfa\xd1!\xddX\xfd\xd1\x9a\xc7\x86c\x99,\xd3$\xa6|\xcb\xa4\xed<\x05jp\xa2\xfc?%\xd3\xe7^\xeag99D\xb9Y'M p\x82\x89x\x1c\x057\xf1:OF\xac)\xa5X?\xe5\xdd\xf8b\x8d\x1c\x9b\xdeq\x05\xd2\xde\xb1\xa2\xb7+\xed5\x91_\xe5\x05Y\xaa\xc8\x08\xf1T\xd8+\xf5\xf8\xcfU\x0eW\xb5M\xa9\xc7\xf7V\x03kl\x9b\xda\xb3\xd2\x8eJ\\\x1ff~U\xd4J=\xf6K\xdd\xb7x\xc4\x95\x90z\xec\x97\xb6\xb2f\xaeP\xdf\x98\xc6~X\x1d\xdd\xc5)\x1e\xbc]S\xaf\xcc\"\xfd84;\x01\xa9'C\x7f\x97@V\xc4&\xe8\xfb\xa4\xa2\xa7O)=\xdd\xaa\xdd\xfa\xbbEZ\xdb\xa7HRK\xfdS\x15\x9a\x078`\xb2\xdc#\xa5\xc0\x86\xb0\x073\xc7\x85\x13/'\x05\x1bCn\x97\x8e\x0b\x17\x02;=\xc1\x99\xe7^\x94\xf8\x01 0\x8fI\x9d=\x9d6\xb5\x16\xd3CE\x7fZ \xf2\x84\x16KQ\xb0\xe9BX\x8f\xb2\xc4y3^p\xd3\x85\xa4S\"%|ck$:.\xd3\xc0/\xc8\xbb,\xb2-\x0b\x07\xd6-|\x91\xf8A\x18\x9fQ\xe8/s\xdb\xca\xcb\x19\x06~\xd1\xd4>L\xc9\xcc\xa6\x83\xc8:\x83\xc0d)\xcdo\x82\xe4\"\xa6s\x07\x0c\xea\xc1g\xaa\x1d\"\xd6\xe8\xf4+\xda\xe0\xc5\xe8\x81#6\xc0\x81\x0b/C\xd2\xa7\xde\x14\x17\xac'i\xaa\x93\x97V\x91J\xb0\xfeI\xa8\x0d\xcd\x0f\x1c0s9\xb2\xc6\xdfK\x92] \xf8\xab\x9b\xd0\x8bR\xab\xe1\xe5bXj4\xc9\xa3\x89P\xe0\xc0T8\xbceL\x06\xd0x\x89`\xf7\xe1\x03\xf04\x1e\"k\xc7\xe1\xfb0MI\x00YM\x07\xc6 \xfc\x0bk\xe5_ \xc9\xf07\xfd\xf8_\xe0\xc2\xcf\x11\xed\x87\xf3\x90\x04\xbau\xe2x\xe8\xa2\x8b\x18\xba\xe7\xeb\x92bB\x0e\xf2L\xa6\xc8~\xbf\xcb\"\xa5\xac\x0d\xe5\x98\x8dM\xee\xbc\xa0G\x9b\x9d\xa8\xaf\xaf\xdeq\xb0Y3\xd6\xf8\xf0\xc1\xd8\x82\xe2\xfa\xc6K\xed\xb2;\x1d\nlo\xc92)\x08\xfb^M\x81\xab\xd8\x90\xd4\xeb\xbeU}\xa9`)\xe8\xa7\x9d\xd7M\x1c\xec\xc2\x01fb\xb0\x8d\xf3\xbc\xa4\xd5\\\xb8\xa0\x87\xf1@r\x03\xba\x96\x91,\xe9\xa5E\x1c2\xe1\xd8\xde\x19=\xe88\xf0\x8ev\x1c\x8f\x8b\xfd\xde\x93\xab|HC\xf5\xcau\xac\xa0\x99\xb6\xf5\xe1\xae4\xe1\xd8\x1e\xef\xdcwx\xbaM\x03\x95\xd1631\xbb\xed4\xb3s\x03\xacnX\"/C\xb3\xa3J8\x18\xdb;\x9d\xc0\xb0\xb5pq\xd2\x9fb\xb3\xb3\x03\xdc\x83\x1b\x1d\xbe[\xfbp\x7f\xdb\xf1\xe6rL\x94!-\x0e\x9cD{\x9bn7\x89\x9d1\xf3\x07\x1f\xdd\xe7~\xe4c\xeeW>\xbe\xaf\x04\xaf\xc3\xab\xe5i\x12\x0di\xbb\xd7J_\x9d\x8e\xb7\x13\n\x83G\xe9m\xe7\xb2\xe4\x913\xda[\xca\x83\xf4\xee\xb4\x83\xf1\xf2\x19\x8c\xb7\x1d\xef\xcf\x07\x7fk\x96\xb1\xd4\xa1;\xed\xf1\x88\xcc\xa1\xed\x011\x81\xf6\xc3vX\xa1\x94{\x87\xb4\x8d\x13x\xea\xd0\xb6O\xc2\xa2\x82\x94\xe6\xfbs\xfe^\x9d9tg\xdc\xae/2\x87\xb6'\xcc\xb2\x86n\xb5G\xc3R\x86\x8e\xdb\xb5Y\xc6\xd0N\xdc\x87\x0b\xbe\x9a\xed\xb9\x1e\xb0%h\x8f\xf1\x92Wo\xcf\xf5\x90\x8f\xbd]\xff)\x1bL'X\xca{\xb6\xe5\xed\xd7O\x04Bj\xbe~\x0d{\xf0\xb4\x9d$\xf4\x0d\xec\xc1\xfb\xf6\xcb#\xcc\xfb\xd9z\xf9\x12/\x08\x06\xd7\xcd\x92\xe7\xd5\xd5\xd1|\xff\x13\xec\xc1sJ.<\xafQz\xb3\x06\xbd`\x02\xdb:Y\x84A@\xe2\xb6\xca\xff-+-\x927Y\xb8\x0c\x99\xbfM\xb3\xc63\xd4\x03y)g(\x9f\xe7\x07q\xb9d!\x91\x9b\x15_\xd0\x1b\xd2\xb6r\x1c\xfd\x06c\x05\xb3\xabvs\xef\xe4Z\x9dd\xc6\x7fg\xa5I\xba\xa1\xa9\xf0\x0d\xecu\xb4I\xcd\x1a?\xeb\x02\xc2\xbcl\xd6\xfb\x1aW\xf4/\xac\xb1f\xd1\xf7\xb0\x07k_cf\x88\xaf\xa5\x8c/\xad\xbf\xbdy\x18\x07O\x17a\xd4R4|\x0b<\x82odvr\xe6w\xce}X\xdb\x83K\xfb\x0d\xf2fh\xd7\xab&\xd0\x87\xc5\xd8\x82\xba\xe17\xb2\xad\xb0Y*\xc2\x93,\xdf\xd7V\xbav\xbcn\xd0#P\x8aA\xae\x9dv\xddkG\x0eg\xa3\xb1]\x03 !\xbf\xb6\xbfQ\x9b\xd3d\x92\xac\xe2\x9biq\xec\xc2\x9b\xaa=\x1e\x10\x92 \xb7\xf9\x0d\xfd\xf9\x06\x9b\xe9\x04\xc0\xbf\x86 \xbcin\xd9\x0f\xbd|\xbb\xe0\xd9\xdf1\xaf\xf1K\xfbe\x0d\x08&\x1d%fL\xef\xaa'\x9b\xdd\x7f\x07{\xf032\xc5\x0c\xea\x1bP\xeb\x89\x9b\xbb\xb1\x88\x06\x80R4B:\x0b0\xa8\xa5F\x94\xfd\x97\xa6\x19\xfcm`l\x80\xaa\xe1=\xb1I\x7f\xb3\xff^m\xe0\x15\xcb\xe2\x02{p\xc13\xd6\xd1w\xb4$\xb1\xdf\xa1\x91\xc4>\xc6\xd7\xa9\x10\x10f\\\xa5\xfd\xbdby\x85\xa7\xaf\x8e\xa7\x053s\x11\xbf\xf7x\x0e\"\xdc\xb4Xw\x10\xea&)\x17\xb1\x89\x89\x8bT\x90\x0d\x93\xba\xc3\x0f\x1f\x18\xf4\xbdr\xe1\xc0\x1ea6uJ\xa6\xd4\xfd\xd2\xe1\x7f[\xad\x06\xfd\xb6\x86V\xd3b\xfey\x88q\xc8\x95\xd2\xf5\xad\xd6\xbc\xb3\xe0\x1fK\x9e\xe8\xb3\xa0CKXj+\x16e\x97IP\x98\x1fe\xf2\xc8\x81\xbf\xa1\xfe\x1d\xc3\x05&\x18\x06\xa60j\xdf\x8d)7\xfe4\xf88=k\x18\xaf\xe0\xc6\x13\x96\xaaP\xdb\xf3\x1a\xd6\xae\x01\x08A\x83\xe5\xf7\\K(0\x11f\xc1e\xaf\xd9\x05\xa2\xec\xda\x17\x9f\xff\xf9N\xfc\x16%\x0cz\xe8o\xbay\xe4\x18\x0b\xdbv4\xcd)~1d\x8f\x98\xdd\x05]\xff.\\\x0b)\x11\x89\xa9\x9e\x94\xff\xc8\x11{\x82\x87\xcd\x17\xb3\x8a9\x04\x7f#v+dSz7-\x0c\xe70l\xce\xaa\xae\xf73nmi\xdb/M\x81\x0d1\x08\x14=N2\xa2\xef&\xc4\xb0\x18IZ\x87{\x92\x92\xd0w\xf2b\x9c\xf3\x8cj\xa9\xca\xebw\xb3\xe1\xf5\xbb)\xf9\xe6\xbb\x9d)6\"B*\xaf\x13\xe0Y\xdajl\xc0SZ\xfe\x9d](\xcd\x03\xce\xfe\x9a\xbe:\x16\xf8\xc2\xae\x8f\xbc\xb8'\xbe\xad\x0d\xe9\x10\xa9\xab\xd2\x1d]+\xa5|H\xf2}O\xff\xf7-\xdd\xc3N.@\x18\x14I5\xa7T^\x8bXp\\\xf8\xa1\x99\xeeM\xce8h\x15I\xe5\xe3\xdd'\x04)0C\xdf\xfb?\xc8M?\xc5\xa4t_\xb8\x94E\x81=\xf8\x1bF\x90\xdby\xe8\xe0_\x87\xf8\xff\x7fF\xae|\xbc\xc3\xde\xfd\x89\xf1\xe8\xbb\xec\xaf\xbf\xf2\xfc\xc6k\x94\xdf\xdc\xc6e-\xe9\xfc-\x15\xc3`\xb9\xf4kD0\x0b\xfc\xbaWR\xf5\x83\x1d4$2t\xc4\xbe\xedc\xaa;\x1fS\xdd\xf9,[\xda\xcf\xed\xf5f ;\x91\xe8\x16Y\\V\x1d\xe7\xbfPva\xe1\xe7\xcf\xf9\x01p\xc3\xfci\x12\xcf\xfc\xe20\xcd\x88\x1f \x9b#(0\x17\x9d\x85\\n\xbd\xeb2\xd7\x0c\x97\x07\xe8u\xd1\xde\xd3\x958)W\xec\xcc\x91\x7f\xe6\x96q>KR\xda\\.LC-\xd7\xa2\x17\x01a8\xe2/\xf5!!\xe4\x91\x03\x81\xfd\x97)!\xcd\xb4\xe65\x12\"\x98\x8f*\xf0\xf2\"\xc9\xe8\xe5\x12\xf3V\nR7\x13\xd3f\xce\xed\x82L\xe3V;t\x05\x0f\x1bk\xc7Ox7B]\xbf\xfdG%;{Ao\xb5\xf5=\xb47\xdf\x87\x17\xf4TM\xd8?{\xdd\xe4\xea-\x04\xfc\x9e\\}\xd3\xdf\x15Z\xe0\x7f\x87\x16\xf8\xc6\x9c=>0\x1a\xb8\x83\x9b\xa0\x19<-\x8c\xe1\x85ZCA{z\x81t\xdc\x9e\x9c\xba\xc3H\xc6\x9799$\x05\xaa\xb1\x8d|\xda\xf7\xaa\xf0\xc0\x9d\x96\xc2e\x1a\x91!-5\x93\xcd^w\x8eJk\xa3\x19\xc3\xdb\x8dq\x84A\xd4\x07$+\xedZ%\x17\xb0\x0f\x976\xa6\xa5\xfc\xb3}\xc9h\x1d\xe3f\x07d\x1e\xc6D\xa8\xa8'\xf07CqH\xf2 \xfc\xb9Y\xe1\x8c\x14\x92\x8a\xfb\x19\xc9gY\xc8\xd4\n_\x98*\xbe\xf2\x97\xb4\xb1\x7f6\xd5a\xc7 \x9f\xc0_\x1b\xeb\x88\"\x96\xe6b\xdakx\xc5\x1a\x98|q\x11\xbel\xc7<\x16\x8c\xda4.\xa3\xe8\x18c\x99\xfdd\x0b\xba\xd3\xfa\xe5\x9a\xbf\xe9\xae\xbd\xdf1,m}\xc26\xb7\x851\x1d\x17\xac\xef\x0e_\xbfR\x04\x01\xa9\xb4\x0c+\x10?\x9cd#\xc7\x8c\xa3\x18=R\xc5\xe0\xa1,\x05\xa7\xc9\xea\xeb>ib!\xf1\xf0L\xde\x9c \x1a\x1d\xbb`\x9f\xda\x9d\xa4n\x9c\xc4\xffN\xf6\xbf9\xe3\xd5\xecb\x089.\xfaRJ\x87X\x987\xa44;\x06\xf5\x8eK\xfb-\x1c\x0d\x1a\x00\x0e$t\xect\x1a.\xfc\xc4\xb5*\xcf\xbb\xc2\x87\x06XIB\x84\xe9[$\xc6c{g\xd3\x91\x85\x0b.\xbcm\xd4cI\xb6^\xcf1_\xe8\xcb\x1aq\xb3\xbf\xfdb\xe1\x82E\xff\xb1\xf8=;\xe7j\xa6\x1a\x06\xd66\x07\xa9\x00j\xe9xG\xca)\xa2B\xa9\x93\xd8QBaU\xbd\x94\xe0\x073e\xda\xb7\x98\xc5\xe5\xed\x1a\xce(2HV\xa0\xea\xbb\\\x00O\xf1\x11\xed=\xf4\xe6,/\xcb\xe6#(kH\x8d\x1e9\x90W\x16\xe8\x94`/\xa7\x11\x12\xe5HN2\x10V\x1f`Ia\xb8\xda\x8av\x84\xdb\xc2\x9b\x90\x92]\xdd5\xfd\xe5\xda\x13\xa4D\xb3\x10\x83\x03\xd5\x86\x14\x02\x96/\xc28H.P\xc9\\\xfd\xe2BS\x05F\x84}C\xa1\xcdZ\xa0\xb8]v\x8b\xab\xb5\xa3\x83\xa88\x0c\x8akM\xd9H\xe1\x07l\xf2\x18G\\\xe58\xeb\x95n\xe9\x93\xd5T\x04\x88\xca\xda\xaa7\xf9\xbb\x18\"w\xf4Q4\xd1<\xc06\xcf\xbf\xdc\xd4\x14\x0e\x02\x00\xa6K\xb1-?\xbf\x8ag\xcfWR\xc8\x89OY\xfa\x12\xa4\xa5\x07}\xa7\xd6|\x15\xde\xe9UA^\xb0#0\xe4\\F\xdas\x89\xe9\xa5:%\x19\x96\xb4}:\xf9Ro\xd1\xdb\x13\x83/9p\x0f\xb6aC\xe2\xcd\xaf](\xbc\"\xf9\xfa\xaa <3\x9catm\x9e\xfd\xa4\xb0\xe7\xce1|\xf5\x15\x8c\x1e\xc0\x87N\x11\xac\xc3\x88\x17\x8f\xd5\xc5cV\xbc\xab.\xddr\xe8JL\xf3\xf5u\xbc\xa60\xb2\xf2.| \xe3\x9d\x9d\xf6\xfb\x07\x9d\xd7\xe3\x9d\x1d\xf8\x12Z\x89\xa4\xc6<\xc5\xb5\xb8:\xd5\x93\xd1\x0c\x96\xce\xe5\xf1c\xd8\xeev\xd2\xc2\xb6\xa3A\xbd\x8c6\x8dK\xb6\xad_\xb1\xc7\x8fa\xa6\x87wZ\xb0u\xfd\x12v\xb7\xe8\x0bko\xcfB)\xf7\x98\xb7\"\xf6\xcbf\xed\x8cq\x1f\x1e8\xb0\xaemx\xb4)Z\xa6\x80Q\xb5\xcc\xbb\x1aK]Y\xed\xa1\x0b)L7\xdc\xf4\xb5\x82\x7f\x16B\xc7D\x12>Ze\xcc8\x8f@N\x0f\xfb.\x8c\x8b\x07l\x1f\xf7\xe5?&,\x9f\x0b\xdb\x14\xeb\xc9\xd7O\x9f\x1d|\xf3\xa7o\x9f\x7f\xf7\xe7\x17/_\xbd~\xf3\x97\xb7\x87G\xef\xbe\xff\xe1\xaf\x7f\xfbg\xfft\x16\x90\xf9\xd9\"\xfc\xe9}\xb4\x8c\x93\xf4\xefY^\x94\xe7\x17\x97W?o\x8e\xc6[\xdb;\xbb\xf7\x1f<\\\xbfg\xf1h\xdc\x0c\x8f\xf8\x95t\xbe\x84\xaf \x7f\x04\xeb\xeb\xa5\x03\x19K\xc6\xedOK:\xf0\xa9/\x83r\xe9`,c\x95[[\xa4\xc7\xea\x02\xd8\xba\x84U\x01\xff\x01\xb6)\x1a\x13\x8c6E\x9e\\\x16\xf8\xc1vn\xc2\x84!f:^9mfw\x1df:\x8c_g\x8cB\xf7S9:z\xc1v \xa6\xff\xac\xef\xc1\x96\x83\x00c\x13\xba\x13\x14\xe5P\xec9\xda\xbd?\x1a\xed>\xd8d>\xf6\xd3\x92\x9e-\x06\xe9\x14\\w\xc6\xbc\x84\xa1\x0fV>>\xa6\xac\xb9\x80|;\xc4\x8cZ\x08\xff\x0f$\x98\x0f\xf1\xcd\xb8\xfdfWz\xb1\xbb\x05_B\xd8\xe6\xa9*\x8a\xa6{\x14\xaa_\xc9\xd4\xda\xb0d\x08\xdaD\x08\xda\x1dS\xd0\xb2NTE[JzC^\xcd\xc2\xcb\x88\x1f(T\x81<(\x8a\x02\x0cCW\x10\xea\x0f\xe0\x8f\x90PZ\x80b\x06\x85`\x94.\xfc\x88\xaek\xe9\xa8k\xa0\xbf>\xaeY\xb7\x8c^\xcb\x1b\xf7\xbb\xef\xd1~\x06\xf6\xb1\xe3\x11LT\x01\x0bR^e\x83\x96+\x9a\x0e\x10QR2a\xde\"w\xb8\xc3\xfe\xfa\x1e\xa4\x0c\xc3\x04\xf0%\x9f\xc3\xc6\x8cM\x02\x02x\xfcx\x0f6f\x94rX\xa7'\x18f\x18\xd8\x14\xeb\x8fwv\xe1\x8f\x10\"\xc2d\x1d\xb8 \xda\x9b\xc1\xc6\x1e\xcc_\xf9\xaf\xb8\x8c\xa7\xc0\xb6\x18x\xec\x83\x8dY\x04D1o\x92!\xef\x19j\xe9}\xd1\xd6R5\xcf?\x85\x0dX\x1c\xc3\x87=\x18\x8d\xe9\xc1:o\xddp7b\x8a\xb9\x10\xa4)\x9c\xb6\x0b\x17\xac\xda\xac\xb5#B\xe5\x96S\xb2\xb1\xab4bAj^)\xa3G$\xbcd\xac\x8c+\x81%[\xaa\xb8\x12X\xa2\x8a*A\x0b:_\xe4\xbc\xa0\x13l\x82\x99\x9a\x8e\xef\xb7U\xaf\xcc\xd6\xb4mf9\xc7ff\xad\xb7)o\\\x11\xe6\x82\xd9\x9a\xee\xec\xb6\x03]/\xaaO\x1e\xb6?\xe1\xf6\xa6\xe3v\xdfK1\xb7\xce\xac\x99\xc5\xa9&\xa0\xc3\xd5\xa7\x0f\xe8p:D\x1a&%\x1bm\x82\xca\x89IU_M\x8b(UA\x92t\x9e\xb15J\xe5{\xed\n\xb8\xd6\x88\x0d\xb4y\xdc\xd5\xcb\xab\x82\x7f\xb4\xdc\xc9\x84a\x8d\x8b\x05i\xbb@-p\xcb\xcd^\xc1\xbd\xce\xc5+\xb8\xcd\x9a\xbc\xe3L\xde\xc7\xd0\xf1@\xd6\xd7\xcb\x92\xa4x\x1eS\xd4\xd1S\x11\xe7\xfdF\xccN\xe1\xd4\x0c]M\x99xN\x932\x0e\x0e\xc5\xc45\x95\x8a$\x89N\x93K\x8d\xc34bz4\x00\xa8\\\x18\xe9\x1d\x81\x16\x01\xd5\x1b\xef4\x8c\x03\x1e\xf0\x87\x95\xa1\x82\x99\xdd<{p\xeaVn\xd63\x14r|w\xc8\xf6\x9ayUr\xe1[\xb3\x93\xfe\xb0\x85\xe2\xa9\x18s\xda\xfe\x99\xc7\xf6\xf9hQ\xc6\xef_\x86A\x10\x91\x0b?#\x8e\x1d;\x86\xc0i \x06\xf2\x12\xe1FNN\xde\x1e<{\xf7\xd7\x93g\x07\xdf\x1f\xbd~\xfd\xe2\xf0\xe4\xe0\xafG\x07\xaf\x0e\x9f\xbf~u\xf2\xf4\xf5\xcb7\xaf\x0f\x0fNNP\x87\xc7\xbcGsE$\x1c\x90\xc8\xc6M\x97\xd6D=\xe9!\xaa\xdd\xf9\x84\x12;b\xfa\x9ez\x98\\\xffS\xa5*wTf$6?\xaf\x8eXk\x0cO\xc2\xbdK\xd1\x1a\x05\xdfVN\xb5\xf8\x17?\x1e:\xadRk\xbce}$\x89\x0b\xd3\xee\xba\xbf'W\x13\xb0\xe8f\xd1\x19)\xdc\xa2\xf9\x05gTCC\xcb\xc2\x04a\xa6;\xdf\xe6\x90U\xe8\x81\x8dFLx\xc0hz}l\xd7\xd4\xa9\x07txp\xc4t\xb0\xf2\x0b=\xb0\xc9y\x80\x81\xd8&\xd0\x16\x0f\xe5}\x18t\x879\xa37\x1cJ\x91b\xc09\xfe\x1a\xc5JNC\xdb\xa8\x06KU\x9b\xdf\x94\xf1\xac\xf1-\xb1\x0b4\xa0\xd5y\xf9\xaa\x1aQ\x8c\xc0[\xfai-:\xd7jW\xe5\xa7\x1e@\xc7\xde\xb5\xfd\\;^F\x82rF\xec\x0b4\xa35\x0f\x957\xacA\xa0\xc0t4mTg\xeb\x02\x00^p\xfc\xc5qU\x8c,\x01\xb7\x06m\x1cH\x85\xfe\x03\x9a\xd7r\x1f\x00\x08\xfcF\x9b\xd6O\xf1\x9c\x07\x17U\xc0\xedX\x0b\xb7\xe3\xe6\xfd=>\xeeq\x0d\x07Nd&\xde\xc2\xcf_\xa0\xb7\xb6yD(T\xd0W\x19\n\xd3\xa8\x07T\xa9\xdf\x0b\xcf\x9f\x17${\xc1\x9d\xa7\x91\x83X\xdbt\xe1\xc0\x96J\x1cY3\x1f\x9bB:\x9a\xcf\x84\xdc\x0c?\x1e}\x1e\x12\xd52M\x14\xd9\x9f\xc5c\x82\xdc\xbb=`\xcd\x99dB\x18\xd1\x7f*\x07\xcd\x03\x00TY\x80\xeb\"\xfd4\x85\x95\x18\xb0z\xd3\xc5\xbb\xa1\xad\xf0\x18T\xba\xe3\xd13\x02\xceG\x16\x82K\xe2o\x06u\xfe|9\x81\xb9XZ}\xb5\xb7\xc4\x9f\x15\x93:H\xa2\x1as\nn\x8cqi\x12\xcf \x18\xc6\xe5\x96p\xce\xa7u{p\x92\x07\xa9\x8bX5xdw9\xb0\x01\xc2\x82!c\x87\xce\xf8\xbbo\x0c3\xcaW\x99\x91\x96\xb7Q\x0c\x14\xf6\x14q\xf7\x06\x0f\xab\x894\x07\x0c\xcdxE2b\xc4p\xef {(b`\x0bLmW\x97\x18\x9f\x99,.a\xbea\x8c|JN\x7fz\xe9\xa7\x0e\xbdA\xfa\x97\ndZ\x89\xf1\x18\x99fW\xb9\x87V+\xd6\x0f\xa9X\x93\x9a8\x1bB\xe6\xf7RH<\xc6-F\x82&\xd3\xf8x\x85H\xe0\x82\x10Y\x91\x0c\xe9J\xf8br\x013\xef\xa5\x9f\x9a\x19\x05\xe0\x84\x89\xcc\x15\xf7s\x93k\x99)\xc2\xb0\xfc\x08\x93\x80lZx\x94\x1d\x18\xd0x/\xa3\x0d\x12'u`\xc7\x8e\xc9_N~\xf8\x88\xab D \x97\x0c'\xc6/\xf5\xac(\xa8\xc4\xbe\xed\x07aO\x0d\x95\xc8\x0f\xbbm\xa8,\xe4\x08X\x9b.\x04\xde,Y\x9e\x86\xb18M\xb9\xc3r\xea\x9f\xf6&\xc97\xa3\xdf\xa3\xabt\x88L\xa8W\nC\xa6\x9b\xc7^\x91\xbcKS\x92=\xf5sb\xa3\x11P\x15+\xbeW\xec\x86\xa7\x9e\xcd\xcd\xb1\xf5H\xa2\x1aP\xacH\xe7!?\xe7<\xb6y\xac\xcc\xf8-\x1eTT;\xf28\x92&}\x9c\xc1:\xc5u\xa1\x9aU\xba\xcd\xa5L\xc9\x13A+\x0f\xd8\x80!\xb72\xdfN\xdb\xca\xab\x86o7@N\xef\xdfbx\x02\x915\xc7\xe7\xf3v\x07\x82\x05^\x06d\xc5\xcb\xa0\x03T\xc4`\xd6\xa2z\x1a\x02\x06\x8a^\x1c\x13\xa0\x14\x9dL\xe0\xf2\xa3a\xb5o ?j\xeel\xc0n\xf5\x9ef\xba]\xc3\x98\xd1\x06_\xa8\xf2W\x07\xdd\x86\xc6\xcd\xfd\xe8\xbfpi\xaf*\xac0\x8d\xeb\x0c\x0e\x1b\xf7\x9dc\xef\"\xf3S>\xa4\xdeK:\xe3\xf8U\x03h\x03\x04\xbe\xe2\x0e\xca\xa6q\xcf\xb5\xc6\xbbD\xe3K\x14\x10 A\x91\x9d0\x1f\x17\xb4UL\x8e\x1d\n]m\x9ad\xc8P@Z\xaa\xde\xa3\xd9~\xc4\xbd\x88\x87\xa3!\xaci\xa9:\x14Q\xc4t\x8fB\xbf\xd8~\x90\x90\x90\xcfY\xe6\xc8\x16\x89\x92\x87\xb2\xb4\xad\x10\x13\x12\xe4P$\x954\xaa\x96\xd2\x16\x0b\xbf\xe0\xafs\xf0\xb1\x91\xaa\xcc\x0e \x14\x0b\x02\x17\xec\xe4\x00CD\x8e\x0e\x11\xc9\x0f\xef\xe8\xc0\xcez$\xdd<\xf0\xe67\xbcO)\x88\x08\xbd\xafM$\x82\xb6\xf8n\xf1\xc4*\xd7\x8e Q\n\xa2\xce\x8c,\xb26\xb2\xa8%D\xfd\x01\x0e\x9a'S\xce\xa5\xa3J\xe7%?\xe2TN3 9<4)\x16A\xb87)qL\xc2\xd0J5\xf8^\xc4\x12v\x10K\xb1\xc2\xf0A\x16\xcaO\xb3a\x88\xc5\xef\"\x16\x9f!\x16\xb4x\xf5\x99M\xaa\x82\xd9\xe9\x1d\nH\x14\xd5\xca\x88\xa5\xb2\xbe\x0d\x15\x1c\x0d3Mb\x83\x0d\x1dn#\xcdlr\xc3GP\xae\xaf;h\x0e\xdd\xe0M\xca\x9e\xe5\x10\x8f@\xf1\xc8\xcf\x990\xda\x94\xcb\x8b\x9e\xc7v\xe2\x1cS\x8e{\xe6\x17\xb6\xaf \xad\xdb\xcfM\x10\\hBp\x02\xc0~?\x0c\x17\xf6\xa1\xb7\xc2\x80\xde\xd4<\x0e\x08\xf4\xa6a\x81n\x87\xdeP\xca7\x08\x99\x0d\x90\x94fM\x0b\x17\x15.X]^\xd0\x14\x08\x10\njL\xec\xad^\x0e\xf7v\xe2\xbe\xa6|\xfd\x1fg]\x06#\x16\xc1m\xb3C\xabr\x11\x15\xcf\xf5G\\\xe3o\xe2\x01K{c\x99\xe5\xc4+\x93\xc7z\xeaV\x83\x92\xaa\xb05<\xb6\xf9\xbe~\xf4\xd0\x96,\x8b\xb2[m\xce\x9d\xd2jJz\xaa\xd2\x98T\x14\x99\xb3\xa2\x84EEa\xf5RFz6\xb0\x97\xc1\xe1-\xf4\x1e/\xf9ix\x84u\xc9\x8f\xb0\"?2\xa7\x8a\xe6\xe4\xc3W\x90=\x02\x9f\x92\x1f\xe1\xd4o\x92\x1f\xfe\x00\xf2\xe3\x9c\xa7C=\xb0cAl`*$\x0d\xa9\x11\x1a\x93W\xf2\x87O^i\\\x81\x89(m\xd6c\xe9\xd8\x85\xcd\xa2\xca\x1b\xdb4X\xd7|\x14q\xc5] )\x08\xc6\xe6\xfa\xf0\xa1\xa3\xf1\x13jt\xf5R\xcah\xca\xab\x85[\xed\xc8\x1d\xe2Q\x9f\x18\x99\x84\x1f\x80nl4(<\x0d\xc5\xbc\x9ff\xc4\xa7\x07\xcd\xa9\x10\x17\x90\xc1\xa6 \xd2\xc6\xd7\xce\x8b\x85\x99\xcd\xe8k\x1a\xe4\xeb\xb4\xe8\xb3\xe1\x82\x017\x9b\xfc\x08\xe9\x1f\x05\xfd~\xf8\xd6\xbb\xff\xb7\x1f\x94(\xdeB*!\"\x06\x0cZ\x1e\xe0\x1d\x0e\xabI\x1f\xba5\x138\xf7^\x1d\xfcpr\xf4\xed\xdb\xd7?\xbc:9x\xfb\xb6_\x03#\x1e\xcc\x80\xa0\xcf\x92\xa5zR\xff*J\xfc\x80\xa5\xf8Y\xc8j\x84AM\x98\xb5\x1bX\x03\xe6a\xecG\xd1\xd0-\x12@\xd5[\xd9\xdc\xb5\xc9\x02\xb0p\xb42\xd7[b\xaa\x97~\xca(\xe8\xe4M\x96\xa4C\x90\xd5\x10\xf9\xb7\x11\xcf\xf4\xb6\x04M\xac\xd2\xb2\xe3!\x03H\x9a\xdb.\xc93\x8e^\x87\xaf\xca \x92q\xd8\xb2\x0c!\xee\xec\xa6\x87\x02\x8a\xe5\x0dVL\xc8\x81\xd5VG:P\xea[\xb6c\xfam\xf5\xea\xdaV:\xaa\\hCG\xddZ\xc5\xab2\x02-\xd4\x0d\x9b\xac\xa2\x1b\x0d\x8fT\xde!\x0dA\x860\x03\x95\xb4\"\x83\xea\xcbF\x9a\xcd\xea\x05\n\xd8j\x96\x04)\x9a\xd6\xd5\xd6\xaa2\x80Z\x15T*\x91\xc8r\xe6\x1a$\x91\xf0*\xf9\x1a\x067\xe8H\xe9\xf7\xc1n}\x89&\xb6\x9c\x8c\x9b\xc6\x14\x18x\xf4\xea\xf6`\xa7\xd91\x86\x95\xc1yu\x1b\x99&.\xc4\xc7\xc6\xaf\x9bp\xa7\xd0\x19\xb7\xbe\x91\x13\xfdk\x9a\xd5\xba\xee\xcb\x8c}w[\xdb\xbb\xaa\x8a\xa1Y;\xddC\x18\x9b]B\x98\xa261$\xe5ow\x18V\xa9\xa3\x1aoe\xd5\x8f6\xc2.\xc8\xb2\xd5a\xca\xa2j.%\x9d\x8b\xdfG6\x9c\xf3,K~\xaf\xa8\xb2 `9\x93\xd6\xd2O\xa7\xf9\xb1+$\x9fye\xb1\xde\xd8\x96\xee\x9bir\xac|)O\xb2\xb7\x02\xed\x13\xe3z\xf4Ub\xf3\x13\xb0\xdfW\xdd LU_\xf2}\x88W\x8d\xf4I#2\xa1*J\xc4\x81>Z\xc6\xaa\x9e$*\x9c\xe9xQr\x86\x02]\x850$\x96\x93\xa9\xef1Ij\xcb\xf7\xc3D\xec\x0b'F#\xb1\xa0'\xa3\xa5\xb0\x98*N8\xab8\xe1B\x84\x12\x7f\x04 |\x05\xc5#H('\x9cQ\xf8\x92W@wb\x05\x82GcpN\xa7\x13\x17\xa6\xf4\xba\xaf\x00&SY\xae\x0c\x8d\xe5\x85\x11C\x9a\x19\xc3\x08\xcfE\xd7\x036\xd7\x7f\xe8\xfe\x92\x13\x8d\x9f\xe0\xdb\xdeX];[c\x85\x17\xb0\x9c\x14\xa9.U\x07\xc8S{\xca \x9dE\xdbI\x99\xb4\xa3\xca_\x0f\x19g=\xae\xf1\xa64\xdc\xcc\xce0\xcce\xc6b\x86\xb2|7\xda\xb8\xa1\xedX\x9e\x98+\xc5\x9b\xd7#q\x86\x0c\x85.\xd9\xb6)\x87\x94\x9f\xe7\xe1Y<\xa4\xa9\xfeY\xe9'\xc3z\x99`\"\x98-g\xc59\x98\x93\x0c\xc9\xa7\xf2Z\xbd\xfb\xd9\xed{\xa1\xeb\xd8\xf6\x9ef\xb1\x055\xc1\x1a\xb7\xd4\xb9\x8cv\xb6\xdaYyJ\xcc\x1aP\\$O\xf8\x01\x7f\x93$\x11i\xa5{\xc3Yx\xf3\xa4\xccL\xb5\"\xd8\x83{?\xde[\xbfw\xa6\"\x86gZ\xbfi\xdb\xb2`\x1d\xd0\"\x13MG\xed\xc8\x05\xeb\x8b/\xefYf\x94>W\xca>Q\xd0C\xeb\xf0\xfc\x1c\xf4\xcfY\x12\x17\xe4\xb2`1<\xf9\x9b2\xa6\x7fo\x1a{Hu\xe7Ul\x0b\xc1\x9e\xba\x18_\xd0\x9e\xd8m\x0b\xd33_\x99\x84\x19\x0f\xb1\x81\xac\xaf\x9bg\x1aHaI\x94\xf3\xcdH\xce\xf0\x98\x98\xf1{r\xf5&#\xf3\xf0R\x9a3_\x94\xb8\xb3(\xd9J\x8b\xb2\xe8_\x146\x9c\xee\xb2\xf8XZ\x8d\xad[\xa14\xaci.\xafi\xb7\x98\x02_\xc9\xd66o\xadms\x03\x9a\xc4WD\xa9\xfbs\nq\x19\xaeo\xe8\x15\x0b\xbfx\xcb\xd4\xac\x02\xd8)\x05\xcf\x13\x9e\x02\xcb\xe1\x98xa\xfe\xbd\x1f\x85\xc1ADh\x0d\xda\x0e}\x1f1\xc6 Jb\xf2$\x0e\xde2x\xfe3\xb9\xa2\x1d\xf8\xb0\x0e\xf6ZD\xe7\xcf\xe2\x9e MF\xff\xa2T\x01{\xbf\x0f\x96\x05\x13\x98\xd9\xf8\xa7\x03\xeb`\xdd\xb3\x1c\x0cU\xe8\xb8\"\xf0n\xe4\x98\xc1\xe5\xdc\xee\x0f\xcf\x04{`Y\xcd\x85\x113dq\xb9h\x8d\x19e\xc0\xd9\x10\xba\x1c\x03\xdd\xab\x802\xd2\x88\n\x02\xbb\xc0([\xd8a\xb3\xb2O\x87\xb3p\xa1\xa4\\\x92\x97\x91\x88\xf89\xb1K\xf3\x1c\x96=We\xe3\xce\xaf\xef\xf4\xb9\x14P7 \"\x95\x81I\xcd\xd88\x1a(\xaco\x9d\x8e\xc6\xcb\xce\x01\xa1\x9b\xe2\x07\x01]\x830>;J\xec\xb9\x98\xe8\x8d\x06R\x1dd\xa9W\xf9,K\xaf\xefp\xcc\x81\x0by\x8b\xae9\xeb\xc8>\xe7Iv\xe0\xcf\x16\x93^b\x06\x84-7\xb3\xb5\x96\xa2\xac+\xec\xc5\xabk\xb4 I*\xb7f\x84\xa3\x94\x85\x84\x9aWp\xd4\x8e\xc3\xdc\xc4\x0cK?\xfdH\x03\x9e*\xa8`\xfe\x15\x9e\xbf\xcc\x15\xbb\xc0\x9c\x8f\x8diJ\x96~\xfa<.\x92\x1f\xc2b\xf1g\xb1\xdb\x98?5\xf6\xa3 \x9c7+\xe3\x8e\x0e\xd0\x00\xf2\xd1\xe0\xb2-\xd9h\x8ckU$\x88\x12\xfb$y\x82\x95\xe8[\x80B,\x80\x1a\xa5vRg\xd5\xf0\xa9\xa6\xa2\xce\xf0\xed-\xa9\xa8\xd1f\x9b.\xc2\xc0\x7f\xb1\xfd\xc0\xe9\xb34\x16)U<\x91R\x85B+g\xa3\x86H<\x9b\xdf\xa5I\xda\xa3\x83b\xa7\x17\xfdjY(\x16Epr\xdd\x06\xc4\xe4\x02\xbf\xef$gP\xd0\x8a\xe6Y7R\x85\xd1&1)\x8fm\x8dw0\xc7\x85\x84\xdb*\x1fN\xc5\xfaPv\x92\x16\xa5I\x12\x1d\x86?\xd7n\x9d\xcd5\xa1\x97\x9b9\x9d\x04\xa5 \x92.\x01\xdb\x1d\xb7\x8c\xdf\x06\x9c\x15\x90\xc5`\xc6m\x89\x1bc\xe61%\xe3\x1a{\x01g\xf0}\xfa\xb6\x9a/K\xc7T\xfd\xb9\x07#L\xc6$\xb0\x18\xec\xd1\xbbS\x91\x9bIAZ\xc6\xa4I\x83O\xda\x0bB\x9f\x0e=?p\x0dn\x02\xe4 \xad\xddJ\x80\x0e*`\x8fyl~\xd5r\x80\x12\xe6A\x05\xf7\x9dT\x15\xa0^\xceb\x91\x91\xce\x82\x0e\xb90\xe0\x96\xab\x95\xdd\xc9je\xae\xf0\xcb\xeb\\1\xe2\x19\xbe`\xcax\x1e\x8a5\xeb\xf2\x81\xdd%3\x98\x91\xdcf\xd5\x92;Y\xb5\xa4Z5FM\xa8\x9d\xc0VZ\xb8NB\x88n\x0b\x9a{\x8d\x99k|\xac{m\x9b\xa5Z\x1e\xef\xdeW\xc5\xa2\x8b\xed\x9d\xadv\"]\xbf\xbe\x10c{g\xbb\x13^\xaed\xe5\x0f\x1d\x17,\xaf\x9d\xc6\x95N\xc8\x9aX\x9ax\xc5\n\xc4#\x08-\x0c \xd2\xcdx\x80\xef\x05cB8\x8b\xe4{$\x9f\xf9)\xb1 c\x92&\x18Z\x9e\xe5Q\xb0\xb7v\xdb\xd22\xb8\x990\xae\xa2\x06y\xdc\xccj\"\x84\xc7w\x9a\xb90\xd7\x11H\xa9\x8bq\xf2\x84\xb9F\x1761_I#05\x86\x91\xfd\x12\xacSz\xa2\xfcX\xbc\x12YP\x90|sk\x07F\xbcd,\x16\xab\xd9\xc27X\xd7\x8a\xcb\xe5)\xc9\xe47\xf5\xaa\xf2.\n\xef\x8b/\xf8\xc8\xd0\x15\xb2\"wg\x94{)\\\xca\x83\xb2\x00\xcd\xfbP\xc2: \x05\xb2\x89L\xb0\xe3\xc2HM\x13/0\xc6\xa5\xf2\xc8\x9c#\xb3)59\x81\x18\xd6A\xa1y\xa1\xab\xd2\xe4\xcf\x0b\x8d\x06\xa1\x92j/\x99\xc4zII\x8c*\xbc\xf6r}\xdd\x81\x05\xac\xef\x01\xb1S\xba\x0f\xd3\xe5\xb1\x0b\xe78\x97\xd4\x85\xa5\xc3w\xaf;\x02Ml[\x90\xd8\xa2P\x99\x8d\x10\xf8\xf0\xcf\xfaP\xd8\x95\x8b\xd1\x04\xcf8m\xd7\x13Z\xe6\x0c\xc1\xa0\xf0H\\d!\xe91s\xa9\x16\xe5\x84-\xca\x9a}\x05{p\xea\xc5\xe4\xb2\xb0\x1d\xc7\x0b\x12L\x1d&-\xcc\x15K;#\xad\xcd\xc9\xfa\xba~u\xc4CW\xa9\x7f$\xda\x01\xe8\x17H\x91i\xd2\x8e\xe1\xae\xcdSU(\x92P\xdd\xc1\xca4\xc7\xca\x0e\xc2P\x0e_\x0d\xc6\xd6\x9e5\x01koS\x03\xc1\xd6\x04\x8b\xc7V\x17J\xb4\xf2\x02\xeb\x0b\n\x93\x1d5\xc0\xbd\xe9\xde\xe4\xf8\xdeY\x1fc.5TL\xc9q\xb7_#GY\xc6w\xb3(\x9b8m\xdd\xa2\xec\x8di\xf1d\x95Ea\xcba[\x1e;\xccd\xba\x89\x1az\xbaV\xeco\xd4D\x13//O\x19\x15`\x8f\xd1\x97Pz1r\x1ci5\xed\xbd\xcd\x0f{c\xe7\xee\x17\xb4\x86W\xf5\xd9\xb9\x13\xfd\xd7\xfd]\x87\xc7\xe8\xfc\xc6\x9f\x15Iv\xd5=\xc5\n)\xc0\x84\xa2H\xbfM\xa5b\xd1\xe9i\xc6JOO3e\x85 \xc8H\x9e\xb3:\xec\xb7\xb2ZFx/\x19Qw\x94\x15\xe1,\"\xbc\x0e\xfeVV\xcb\xc3\x80W\xa2\xbf\x94U\xca LX\x15\xfaKU\xe5\x14\x8bO\x95E~\xce\xda\xa7?\x94\x15\x82\x90\x95\x07\xa1\xba8\xe1\xc5\xea\x9e\xc33V\x1c\x9e)\x8b\xa3d\xf6\xfe\xefeR\xf01T\x7f*+'\xc1\x15\xab\x96\x04W\xca\nl\xeb\xd4\x1bwZ\x16E\x12\xb3\n\xf8SUi\xe6\xc7\xe7>\xdb\\\xf6S])\xa5\xe0\xcak\xe1oe\xb5\x90\xcf\x8a\xfePVH\xf8\xd6\xd2\x1f\xea\n\x11/\x8f4\xc5gYR\xa6\xa2\x0e\xfe\xa1\xaa\x18\xf8\x05\x03F\xfaCW!\n\xf3\xa2\xaaD\xffPV\x0cX\x95@YH\xd8p\x03\xa2\x1cn@\n?\x8cr^\x05\x7f+\xab\xcd\xd9\xca\x06s\xe5\xaa\x06\xa1\x1f%\x0c\xa6\xd8Ou\xa5s^\xe3\\Y\xcc\xc7\xa9\x1e&_\x05\xe5\xfc\xc9\x12\x0b\xc9R]xJ\x02^~J\x94K4\x0fI\x14`\xd2\xe7\xcc\xb6\xc4\x1f\xea\x8ag2\x98\xd5\x7fj*\x97\x19\x11\x15\xcbL L\xf3$\xc1\\\xb5\xff\x1f{o\xda\x1d7\x92$\x08\xbe\xdd\x8f\xf5+\x9c\xf1\xaa% \x03\x0c1H\x89\x94B\xa2\xd8J%\xb3[\xdd\x99\x92FRVMw0\x8a Fx0PB\x00Q8xdQ\xef\xf5\xcc\xec\xdc\xf7\xee\\=\xf7\xd9\xb3;\xf7\xb1\xc7\xec\xce\xf4\xf4\x87\xce\xfc#\xf3\x07\xf6/\xecs3w\xc0\x017\x07\x10$\x95U\xbbo\xf1\x81D\xf8\x05wssss3s3Q\x08^\xe9B\xc9R\x16I\xc81.\x86\x90\xbd\x18\x92\x99\xdb\x98\xb9Mf\xee`\xe6\x0e\x99y\x1f3\xef\x93\x99\x0f0\xf3\x01\x99\xb9\x8b\x99\xbbd&\xf7qB\xc4\x8b\xad\x80\x04\n\xbe\x92\x85\xcaU\xb6\xb0\xae\xb1\x85l\x85n![\"\xca\x89\x17\xaa\x00\x92X\x92\xc0\x06\xf3\xc4_\xe2\xe4\xe2+Yh\x89K\"X\x92\xeb!\x88V9\xe2\x1c\xbc\xd1ERY\x80\\\x95\xefO\x10\x90\xefOH8\xbe\xe7\x97\xa7\x1cQ\x15_\xa9B\xa1\x7f\")\x04\xbc\x91E\xf8)\x8f\xf0K\xf8J\x16Bh\x85$\xb8\xc2 z/\xb3\xa3\xf7T\x81\xa5\x1f`G\xc5\x0b]`%\xf3\xc9\x89^\xfa\xc9{\x99\x9f\xd0\x1f\xe0Q\x8e\x05x\x94\xdb\n\x04\x99$%\xea\x07]P\xd2m\xf1b) \xb1\x17\xde\xa8\"\x91\x8f\xa40\xf2IR\x18\xc5\x18M\x19\xcb\xc8\x1fTA<0B1y\xac\xa5\n\xe1\xf4\xd2\xdbU\xbc\xca\xca\x85\xa4~X\n*\xba\x17[i^\x9cg\n\xa7\xf1\x95*\x84\xdf\"?\xb2\xf2\x13\x1fg\x00\xde\xc8\"\xc14StU\xbe\x93\xc5T\x11[v|Zp\x8c\xea\x07U\xf0gP\xe2gTV\x82\x03I\xc8\x91$\x08\x85\x84\x84@\x92\x9f \xcf$^\xa8\x02\xd8/\xb2C\xa9\xbf\xc4\xef\x8a\x17\xb2@\x89:v\xc4I\xf9\xb4\x98N\xf9N\x17\x0b\x15~\xe1+Yh\xe9\x87\x88b\xf0F\x16\x89\xf3d\x8a\x13\x82\xafd\xa1\x95/;\xb4\xf2\xe9\xdedI\x1c!I\xc5W\xba\xd0\xa5d\xe0\xe1\x8d,\x92#\xeb\x9d\xe6$\xf3\x9d\xe6\xcb\xa5\x9f\\\xca\"\xf0N\x17\x93\xf3@\xaf\x97\xcc?\x91\xfd\xc80R,Q\xa4\xe0\x9d3\x1b\xf3\x9c!\xd9\xcdH\x92\x9b\xf1\x8b\xac8\xd2\xa8\x1fdA\xc1[`)\xf1F\x16Y`\xfe\x82\xceT[vf\xdb\xb3\xb3@n\x87\xe2\x85.\x90)x\x887\xb2\x08R\xcd\x8c$\x99Y\xe2O\xdf\xcb|\x7fJ\xd2x$\xf0$u\xcf\x11As\x12;\xcf|\xfc\xf0\x99O~\xf9,\x98qW\xfc\xfa\x9c$\x11<\x0c\x83\x95<@\xcaw\xaa\x18\xae$\x9a5Y\xfa\xa7\x92\xbb\x11oT\x910\x88\xb0\x84x\xb1\x15\xf0\x93_K\xfcY\xc0\xa3\xac(Z&Q\x95\x96~\xaa\xf6\xf1\x94\x9c\xe3\x95\x82\xd0\xca\x02\x9d\x95\x9fe<\x89T\x19\xf1N\x16\x8b\xc3\xcbSI\x00\xe5\xbb\xadX1R\xf5\x83*(\xc6\xe4\x87\x95\xd1V\x93\xc8J\x8a\xb8&6\xd2\x9a\xc5\x92\xc8d1M\xec\xcf$=<#\xe7Q\x10\x85\x82:\x90\x05\n\xa2\x9b!\xd5\xad\x94\xb0\xc8\x88P\x05{\x0b2\xa2\xaa]f\xb5w2\x1a\xfb\xae\x1e|\xac\xd2 eMv\xc3~\x18\xc6\xd7\xf8\xe1\xba\xe95j`)\xfdk\xe4\x0c\xeb\xe1\xb5r\xd9\xf7zq\xb4\xa8\x7fp\xff\xbeeL\x8df\x1f\xcal\xe3&\xf2s&\x8doi\x19\xba\xfa\xcaT\x94x\xf2\xc4\x8f\xe2\xe8r\x19\xe7\xe9\xd3\xa7\x84\xa8tn\x95\xaf\xfah\x99v\xe6\xf4\xe0\x8dB;\x06\x82#\xc1\x98\x9e9\x85\x12\xd5RN\x0c\x17\xca\x15\xe3\xb6\x14Dm*\x14\x95\x8aUKA\xc55\x9f5q\xcd\x0c\x19\x8e@0\x1cg\x8eR\xde\xda\n\x02\xd0\xb1 \xbc\xda\n\xfa\xd1\xe5\x88-\x9cD7\xb3{ \xdab;(_\xcd\xdb\xe4\xdd\xeaQ\x9a\x9c\xaa\x7f\x1fk|\xcc\xfaS\xd3wh\xb7\x9a\\\xdd\x94b\xe6\xf4\xd4U\x13\xf6u\x8f\xf5!8j\xefk\x16\xcf\xcbx]\x98\x91`\xc6\xc2OY \x03\x16\x8b\x9a\xef.W\x9cEq\xe6\x83\x8a>\x88\xd2`\xc6\xd5P\x07m~\xb0\xce\xe4\xbd\xc0\xac\xd5\x99#\xdcn\xad;[k\x83\x01\x93\x9f\x00+F\xc7\xef\xee\xf4CBF\x05f\x16\xc3\x8f\xc5\xf0\xeb \x12 \xc5\xb4\x14\xd3\xd2|\xb5\n\x03>cY\xacC\xcdc\xfcb\xc5\xa7\x19\x9f1?B\xe8\x0c\x08g\xb1\xfa\xd3|Q\xbfP8\x87\xa8p\x0e\xd9\x13-\xc8u\xd8\xefw\x05\x0d\xdc\xd6p|\x8f\x85\x05f\x89\x1e\x8fE\xdfC\xf16\xe9y,\xef\x0091AS\xddf\x11.\xe5\x95\x16\x0e7\x18,ey^\x7fl>T\xe8\xa5\xc8q\x93\xea\xe0Q\x80\xdd|%\xae\x89\xe4|\x0d\xc4\xce?>b\xe7\x9d\x11\x9b\xa5At\x1ar\x8c\xbf \xd9\x80\x9ba\xf9M&\xde\x16^Ja\xe8\xf7J\x887\x1cp\xba\xa6\xad\x0e\xdey\x8e\xf1\xeeN\xe4/\xc1\x98\x95\xb8\x9fC=y\xab}\xb1\xedA\x1c\x1cL\xe3\xa8\xb8;qu\xc5\xaa)\xd0\x9bri\xb7c\x9fz\x94\xd1\x99\xd1X\xa7\x16>\x00\x14\x7f)\x90]\xcd\xa4\xa8\x0e%|(\xf1\x8bCw\x0b\x17\x05\xfa\xafk\x12\xb9\xc6\xbbL\xf5\x07\xd0f\xe9\xf0q6q\xeb\x0c\x86>\x01I9\x01\xb1\x05\xd8\x91IY\x80\xa4\xbc\x8cg\xbc\x95\xa3\xb8 \x0cm$\x03\xf9\xca\xef\x95`\xfc\xc2875\xd6V@\xeb\xbbZ;M\xea\xc6\x81UL\xba6*\xf1\xec\xd7_\xcb\xebpd\xf8\xcd\xd61k\\\x17\xf8\xa5h\x1d\xb6\x18\x90?X\xf8\xe9\xab\xf3\xa8\xb8[\x1ev\"\xfd\xac\x99A\x1b\x00\x83\xd6\x8d5c7e\xcf\xd8/\x80t\xc5\xd1\x1a[4q:\xd0<\xe5\x18\x07\xb4\x06\xbb\xbe\x9b-\xdd\x02A\x8a\x95\xa1{X\xe6\x05\x83\x9e\xeb\x17\x8fm\x8f\x18\xd4J\xcc<\x07\x7f\x1e:\x8c\xdb\x97\xa6Xp\xbf\xf1\xf6\xd5\xcb\x01\x9eu\x83\xf9\xa55\\\x80z\xd6\\i`\x1f\xaao~\x1d\x96Z\x1c\xc1\x8eY,\xcf\xa6\xfd\xf2\x1a\xe8\xf2\xee\xb2\xdd\x9cL=\xb7\x862\x157\x1f[\x8fYV\x99\xe9\xac\xfd(\xa6dAb\xef\xec@\x1f\xa9\x9d!*:\x1e8\x1bC\x8f\x15\xb3\xa7\x9c\x87T\xe6\xa6\x80\xd5\x80\x1d\xd6\x8f\xa5\xb0},\xf8\xf4}\x01\xc6\xd4c'y\xc6\x12>\xe5\xc1\x19\x9f\xb1_I\x99\x9f\xb1 \x9a\xf1\x0b\xf6+\xe9\xa0\xe7\xb1\x13\xf4\xed\x05\xf7\xa4k`\xb3\xcf\xee\xf7\xb2\x04\xa5o\xd1r:\xfc\xf6\xe9`\xda\n\xe2\x9d\xbc\x8f\xeaWX\xd3jo\x05\x81v;QG\xd6\x99\xc6vY\x9f\x96\xa5x{\xeb-]t0\xddT\xcf\x0d\xa7\xf4\xff;\xac\xc6\xd7\xf8\xc5\xaf\xd7\xe44:\x1d\xe0\nfa\x1cv\xc4\xd9i\x97f\x99lz\x0en n\x85\x0f\x99\x17\xa0\x9e\xb7\xd6i^\x12\xdd\x16\xcc\xed1%\xfc\x02BK~oX\x9fv\xc6\xfa\x10\xb0\xbe\xee`\xae\xfe\x18X\x1f\xde\x00\xeb\xc3[\xc7z\x85\xc2>:\x93\x04\xfe\xa9\x8dk)V\xca\\\xac\x94N(-J\xaf`\xa5\xcc;\xae\x94\x8d\xd5zpz\xcf\xe5\x99l\xdeL\x8e\x8f\xa2O\xfdY\xa1\xc2\x10\x195\x9e\x0da\x80\xd7\xf9{L^\x139\x8a@\xd3\x06\xb7J\xc8Z\xfa%\x13\xe5\xa7K\xd6\xef\xb0L\xcf\xe4\xa5\xb2\x95\x93zln\xae\xf6y\xb7\xd5.\xe0\xb6(\xc0\xb6\xf8\x05\xadc#\xf5\x83vE\x92\x99>\x87(\xfcQR+y\xfd\xef\xa0pR\x7fu\xc5\x86\xec\x1ed\xc0K\xc6F\x8c\xc3\x85I\xb8\xed\x07\x0cZ\xa5\xb5\x0f\x96o\xcfhJ\x02\x17g\x97J\"\x81\xe8\x84\xe2=\xf0\xd8\x1c`\x92\xa37\x1ep\xb1\x13#+\xfa\xdc\x0f\xc3 :-D\x0e)\x83\x95\x03\x8e\xb9\xd9,H\xf84\x0b/Y\x90\xb2(F65N\x04\xd18\xb9\x84\xc0*_\xaf\x92x\xb5)\x88N\xfa5[\xf9\xd3\xf7\xfe)\x1f\xb0\xafR\xce\xbe.\x1a\x1c\x00\xc3Z\xfct\xdc\xaf\xc5:\x9b\xfaa(\x9aX\x0e\xd8\x1b\xee\xcf\xd82N\xb8\xe0\\\x17Y\xb6\x1a\xdd\xbb7?\x19,\xf9\xbd<\xe5\x9bP{\xb3\xfc\x8eu\x91hx(f<\x19\x07\x13v\x007+\x8b\xcb\xa1*\x0d\x89\xc4\xbb\x05/\xcf:\x15\xa2\x19\xa4`\xe5(\x18\xef\x94%\xfcgy\x90\x80TQ?O!\xdf\x1dd\xa9$\x067b\xdc\xa9\xe0H\xdb\xa5k\xa6+\xe61\xbc3\x92\xa1\x0d*\xb4^\xba\xd6B\x1co\x10\xd7\xdd\xd5#\xc6\x10c,\x91\xa4\xdbm\xee\xa4v\x9b\xbb\x8b\x10\xe11\xdb\x80\x10\x91A\xed\x16ucMV\xeaBb\xbcB\xadM\xe4\xd0\x0e\x9a5nvS}\xea\xc8\xf5\x82\x17\x9f\xae7\xbbAx-\xf0cc\xe9\xf8\xe3\xe1\xa4\xd3@X\x17\xd9\x8e\x0d\xa3\xa5[\xd8\xf6\x05k~\xbf\xeeu\x96&s\xa7\xcdWL\x95\x9e\xc5\xba?\xd5\xe5\x85\xec\x80I\xbb(\xe0\xfc4\xf1\xfa\x1b~zx\xb1*\xef\x81\xf7XGG@\xf2K\xca\xf4\x08\xaf\x9c\x82;\x89\xb7ZJ6\xee\xfd\xea\xaf*\xd7\x1b\xef\xfc\xd3\x1e,\xe0\x16k\xb2L\xef &\x9bpD\xa7W\xa2\xe3\xaa\x07\xf58r6\xe0^\xda\xddwiN\x98a,\x05\xb5+UZx\x07\xd9\x84\xbc\x9a\x9bSR~m8\x01ht\xb0T\x99\xa1\xcf\xfcL\xfb\xfa\xcc\xcfx\x8f\xc6J\xa3&\xcemY7\xe1\xa7\xfcbE\\1\xb6\xa1Q7x\x9e4#+-\xd0/v\xec\xe6\xad\x1a\x91\xb6i\x1bn\xdd\xf6\xd4\xe8\xfd\x088\x9b\xc6=\xb4y+\xc620\x03M\x05$\x98;\xf4\xa8\xa9C]iL\x9b\xd3\xb7\xea/YIs>\xc9\xf6Q\xc5V\xa6xl^;\xa9\xb0}\xc1J\xcf\x07z\xc2\xdc\xd3\xa4b7\xf0C\xd0\xe4x\xa7P\xe9\xdfR\xfb\xbd\xe1\x83\xc1\xee@z\x1e\xb8Vkg\xa5\x8f\xe9\xdd\xfb\xee\xa0\x88\x98@Y\xf3\xb6\x19\x1b\x07\xb2\x9d\x07\xa4}\xef\x83\xfb{\x16\x83]\xdfQ\x92\xb9\xdb\x18\x87aG\x8c\x9d\x1fn\xd3n\xa3\xeb&\xca\xa2\xb3\xbdep\x11Di\xc7I\xad/xuf\x19\x13\xd2\xc3\xd4j\xef\x8b\x9f\x1c\xb1\xdeg\x87\x9f\xbfxyx\xfc\xe5\xb3\x97\xbfe\xf1\xad\x90f~\x16L\xbb\x95])\x0c\xefTZ\xfaS]\xa3\xc2\"\x08g\xcf\xd7\xadu\xca\xb3\xcf\x90\x1a@\x84\x9dj\x9d\xe3/\x0f\xdf\xfc\xda\xe1g\xf6\xaa/\xa2 \x0b\xfc\x10\"\x17\xadY\xf5\xb9\xd6\xddu\xaa&<\x82\xbb\xb4\xaa\xc6\xab\x97\xcf\x0f\xad \x94+\xe8\xc7A\x18~\x89\x8eK;\x80\xa4\xa8\xf6Y0\xbbF-\xf1\xb17\xa8($@j\xc3\xa3E\x9c\x0bp\xc86\xbeZ\xcd*\x10\xed:\xc8z\xbd.\xfd\xfd,\x98]\xa7\x1a|.Zv\x86\xcfW/\xdf>\xfb\xfc\xf0\xf8\x9asB\xd5^\x1b\xc8T#k\x0c=\x87\xa2\xc5\x1c\x8dX\xef\xd5\x8f\x0e\xdf\xbcy\xf1\xd9\xe1\xf1\xa7\xcf\xde\x1e\x12\xbc\x8f\xd9Nh%:\xb0\x10\x93\xe0\x8c\xcf`5}\x9e\xc4\xcb\x86\x15\xd9\xe5[S\xeb\xb7fA\xba\n\xfd\xcb\x97p\xe3\xbb\x13G\xce\x80\xf0j\xf5X]\xac\xab\x1e\x8b\xd6H\xd1\xd4\xce_\x13\x1cgK(\xb9B\xed\x11\xa1\x9a;\xaa\xb8a\x8b\xfa}W\n\xb4\xc7\xd1d-\x15\x17AJ;\xf7\x9b\x0f\x8c\xda\xe2\x88.C\xa6\x19y\xa4\xabP\xd6\xd0\xb5k\xf7\xca\xd2\xa1\x1b\xf4\xc5\xd8;\xd6\xe8N\xad.8\x13\xaa\xa7\xed\xb3\x85c\xa4B\xcb#\xb2\xf4Z\x08\xa9\xed\xc6kt{\xa5q\xa9\n\x84E\xda\xba\xf0+\x98\x87\xce\x1d\xd8\xe8^\x94u[C\xac\xba\x8e\x82\xa8\xbdU\xf5(>\xaf\xdd\xa6_=\xd0\x9f\xba)`\xd4\xd9\x14\x90)\xb1\x97\xe0\x16A\xd3\xd9\xed\xb3\xe2 \x9c\x8d\xd8cw\xc1\x88\xf6y\xe8\xa7\xe9\x88\xfdV\x9c3\x1f\xf4!\x19_\xae\xb2 :eY,C\xcf0\x9f%<\xe5\xc9\x19\x9f\x01\xa6\x88\x9ez\xec\xeb_I\xbf\xf60\x16>n\xd8\xd1\xd1\xdd\x8c\x9dp\x06\x11\xf2A\xb4\x0b3\xdac\xef\xf9\xe5\x80}\x86M\x05\x19\xf3S\xe6G\xa5\xc1\xb4j\x11R\xb8?{,\xca\x9c\x07a\xc8\xd2L\xfc=\xe1\xcc\x9fNy\x9a\x06'a\xd1\xb8n.~\x97vRo{\x94\xd8\x0b\x80\xd6A\xea\xa5\x1e\x90~\xad3;L\xe3\xb9Cs\xa2\xd9\x01\x0b\xc7\xd1D\xca\xe9\xbb\xf7\x83\x95\xa7\xcb\xc0\xa1\xb6C\x10{\xe4\x1e\xebu\x9e_1\x95\x02\xb2\x97q\x9eh\xb6\xc2\xa0 \xcb\x16~\xc4\xe2h\xca\x07\xec\xdd\"H\x05\xe4\xe7a0\xcd\xd8\xd2\xbf\x14s3\xcb\xb9h\xc9\xc7Mm\xd0C\x07\xc8gq0s8\xc6\x95_\xc0\x8b\xc7\xa8\x80S\xb6\xa7Y\xff\xab?\xf2#\xb4\xc7\xe5\xfa\xd3\xde\xac\xbd\xc4\x07\xa42\xeb\xd04?\xcf\xe2\x93 \x9aU-\xee\xd7PA\xd3\x81u\x98f#\x98\xd6\x11+\x13\x88\x95\x8e3;b\x9d\x10U\xee\xdc\x11\xc8Te\xe1\xd0Ml\x05\x8f \x12\xc2\xdc\x9fr\x1bB\xc5g`\x87Q\x9a#\x86eXj\xc9\xb3ENDg\x9f\xe5Y\xfci\x10\xcd^\xfbAb\x89TY\x8dR\x19\xd5\x97\x99\x0f\xcbl:@\xee\x1f\xa6T\xbe\xbb\xa4\xbfw\xf5\xc0\x1c\xd7\x1bC\xbb\x8a\x1cC\"\xb6\xedJg\xf2^h4\xce;X\x8e\xad`\xd8\xc6\xf7\xda\xf5\x80sg\x85!w\xa6fm\x97M\xc7\xf9D\x0c:li\xa9\xc1\xef\xb3\xfe\x881\xcd(\x02\xd8\xd6S\xd6d7\x0d\xc6+\xe0\xac{\x05\xb7\xdc\x86H*\x06\x8a\x92w\xdb\xc1\xc0P\xbfmR\xf4\xe7L\xba\xcfN[\x03\x96\xeaO\xe0\x80\x13q;\x13\xb0\xac\x13@\x99\\_\x81_E\x85\x11\x81 \xd1l\x15\x87\xc1\xf4\x92\xfdJ\n(\xfd\x9e\xc3\xeb\xf9\x82G\xb8\x02O\x81\xdd,\x96\xa6\xa8\x02\xc4x\x89\xb3\xdf\xd0\x9d\x03\x96`\xe4\xd2\x85#^\x042\xb0\x11\xd5C\xf4\xe0\x8be\xcf\x8a\xb2\xdd\xa0/\xddA\xcb\xda\x1d8+(\x1ec\xd0\x93\\|\xc7+*7\xd6m\xe0\x15\xcc-\xbe\x13\xa1\x9fY\xf7\xfb\xea\xb1$p\xa4AY\x83\xaf~\"=\xf3Xo\xc9\x93S\xaeB\x1c\xbd\x8c?\xcbW\xa1\xd8\x90\xf9o\xf2\xcb\xd4qG\xec\xb9\x1f\x89m\x17\x8a\xb1(\x8e6\xb1\x99\x14\x08x\xe62\xe2\xc8\x82Q\xca*:=`\xf8Z\xbf\xf5.\x91\x06-\xf8\xb5\xec<\x96\xf4;\xc5\xed^p\xfa\xa9\xbf\xe4\x18\x06]l\xbd\x9dv\xd6\xc7\x02D+\xf0\xf0*\xf6\x044\x92SE\xa7~\x9eJk\xb2\xf3\xb8.\xb6u\\\xb1\xc5\xd5\x0e\xd3\x8e\xab8\x0e\xc9w\x8b\x15P\xe9\xa7\xd8\x1c\x17\"\xf5=\xbfL\x15\x0b,\x19S\xcb\x0dUeB\xd8 -\x16m\x96\x88:{i\xdd\xf70\xb04F\x83\x15\x10\xf1\xcaH\xb2\x96{\x8e\xe2\x81C\xad\xa5\x96]=\xaaL\xe2\xca{(I{\xe1\xd2\xd6#\xb2\xef\xde\xe0^\x98\xf0\xd5\xcc4\xa5\x9b\x13\xe3\x14\xc0\x0b\x1dV\xa4\xdbz<\xbb1\xe0\xad\x00\xb7\x02\xf5\x9a]]\xb6\x1e\x1524\x9e\xa3\x94\xc4\n\xec\xb5/\xd5[1C\xd1\xa9\x87P\x13\xb4\x82\x86)\x83\xd6\xe3\xe3 \x85J`\xe3\xb7\xb1E\x96&H\xaa\x89\xb4\x97\xed\x1d\xac\x88\xea\xaf\xddG\xda\xde\xa5S\x1fO\xac}\x94\xfe\xc1\xa5\x02\xa9\xb3p\x0b\xfa\x87\xf2\xf8d\xc0\xa3\x9f\xe5<\xe7o\xb4\xa6$\x86\xad}z-\x06\xdc\x11N\xca\x16g\xa3\x0e\xb0\xeb\xc3\xea\xd8\x1e\xd6\x97iF\xa2\xce\xb1\xaeT\xd7y{vB\x90\xb6\x12\xb2M\xe42\xab\xa9T\x93\x06sPV\xa2\x89yXP\x91\xd7\xee\xdc\xe9\xf0e\xf5T.\x11r\xb2]\xcf\"\xeag\xfd}\xb6\xdd\xd6>\xab\xc9,\xdb\x8f\x05L\x9e\x88\xb2q\xc4\xfal\xd8\x81O\x85\xe0\x0b\xfbH\x99\xe2\xeb\xfaA\xf8\x00\xe8\xab\"\xda\xad\xa4t\x9b[C\xe7&|\x0e\x0e\xc4\xbc\xca\xbaP6\xeaQi1\x9fq\x19\xcb\xc7>\x90\xc2\xcaWT\xa9\xb1\n\xec\x80Lv\xdcV\x81^\xe0\x10\xacY\x0evuUs2`\xa6\x7f\x85\xf8\xc4\x88-\xc5\xc9W\xa2\x7fq]]\xf0.\xe2\xd3=\xb1\xb9\xe8\xea)q\n@~_P\xc14\xd0\x14w=\xb7\x06\x91\x9c^\xad-'\xde\x04\x84\xe5\x15c\x97\x88\x9f\xb3cOO\xac\xf8\x10\xc1h\xc8Z&\x85\xe22\xa8_>\x90!O\x9d\x95n\x00\x9e\xb9\xae\xc7VN\xe6\xb1S\xf5\xc2\xd5\xcb%\xec\xb0u\xb5\x08\\EP\xc1\xe6\x0bMI\xbd\x98\xe3\x82\xacB\xef\x1c*\xda=\xd6\xc3\xc0\x07pnr\x06\x83\x81`\x98M\xd1\x16NO\xb0\\\xa15\n\xf3\xd9\xd7\xd8\xc0\xd7\x92\x93\x04f:u\xf5\xf1\xcb@%N-I\x86\x9bj\xe4w\x9a,\x93n`\xd0s\xd6\x12\xd3\x0c\x0co\xca\xe2\x91cs\xe6g\xa7zr\x00F\x0cg\xee\xca\xe0\x96\xc3\xfb;\x10\xdd\xf2v\xc7\xb3\xbdG\xdb\xe2)\x1b\x00\xb1\xd5\xc5.Ek\xfd\x12*5Z\x0b\xc1X\x1f\xeby\x96#$\x8f\xf2%O\xd0\x01\xfe\x86%\xd0\xe8)\xef*]Q[\xf3\x80\x96\xb5\x13b\x82\xc6\xbe\x07\xdf{\xbf\x83[\xe9\xb7D\x93\x8e\x9d'\x1b\xcf\xea\x08\xc4\xf6\xd9\xd0Bv\x18uz\xb8\xc1\xfao\xa3E\x80\xb7\x9e\x14A\xe3M\xa3*\xca\x927\x95\xe0&\xf5 >Iyr&\x86.\xce\xdcp\x0bXK\x1a\xc9\xa0\xbc\xe2P\xad\x12{\x10\xd1]+\xb4\x8fvr\x19:\xc7\xd6\n\x92;\xf0\xf7\x02\x91\x8a\x80\xc7\xf0\xcf\x00Bn\xa4\x98[\x8fYP\x11\xf0\x04\xb4\xcb\xa2\xb3\xc2)N@\xc8f\xb6<\x1a\xc4|\xecO\xf0\xe2\xa7xA\x07G\xb6\xbd\x8ai\"\x11\xbd\xc7u\xeb\xab-\x93\xd8\xa6\x16F\x8a\xe6\xbc6:\x08\xca\xaa +\x04\x04E\xc5F\x91\xe9\x99\xe6a\xabY\xf2\x85\x07C\xec\xbamm\xeaO\x06\x1e\xc7\x04;\xfb\xe2\xe5\x8bw\x8d\xc5?\xb4\\Q\xd5No\xb1\xcb\xb2E\x12\x9f\x83P\x05n\x119w\xdf\xf0Y>\xe5 \xeb\xdde}\x96\x81\x1b\x90\x9e\xc4`>c\xc5V\xc9fy\x82*[\x90 \x05\xdfH\xe3\x9b\x17sT\xaf\x81\xd8g\xe5\xa7)j\xe2DZ\"[\x0e\xd2\xb2\x19\x8f]\xc69\xca5\xf8\xc5*\x0c\xa6A\x16^\x16\x0bf\xc1U\xfb\xd8\xe0\x80\xbd\xab'\x81\xfe-\x8a\xc1B\xb0h\x15\xba!\x1a\x9e\xc5\xd1\xdd\x8c\x9d\xfbQ&:\x91\xf2\x8c\xf9\xd2\x01\x81X'\xa0\xbf\x93\xbd\xc2\x8eL\xfd\x08\x0c?\x80\xb9\x91\x86\x83,\x9ek-7\xb9\x96\x11\xd3\x1f -\x10\xad^\xdc{\xfd\xe6\xd5\xa7\x87\xc7_\xbd\xfc\xcd\x97\xaf~\xfc\xf2\xf8\xd9\xf3w/^\xbd<\xee\xb1>\xfb\xd2\xcf\x16\x83\xc4\x8ff\xf1\xd2q+\xa1\xcd\xb5\xe0\x9e{\xee ]\x85A\xe6\xf4z*\x80o\xe3\xe7k\x93\xdb\x15\xbd\x10\xb5\xe8\xed\x86\x01>\xdd\x00K@\xbb\xbfJ\xe2\x13\xf1\x1ed\x0b\xe63\x1c6|v\xc0>\x83 \x12\xcb5\x8b\xd9\xc2\x8ff!z\x99P\x98\xce\xfa\xec.\x8b\x13\x16g\x0b\x9e0\x1f\xd6 \x88\x18z\x08\xe1Ozh\xd6\xb5\xf2\xd1<\x8a_\x82\x8d\xd54\x06/\xa3 X\x96\x06g\x80:\x85yO\x81q\x1a\x9aM\xf3$\x01\xa3\x03\xc0)\x81\x1c~t\xc9\xf2\xe8}\x14\x9fG\xea\xbb\x1e\xcb\xa3\x90\xa7)\x0b\xb2\x1a\x12\x07\x11;_\x04\xd3\x05\xde \xa4>PAZ\x8f%\xfc\xd4Of\xd0X\x8c+\x06\xbf!\xc1\xd2\x0d\xcd\xd1\xa9\x86\xc0\xd9\x13D\xd9\xc1]\x8b&\x86\xd0\xfe95\xd3\xa0\xca\x01\xd3(\x0e\xc2\xf1\x06\xfa\xddEo)\x96\x87\xd83\x0b\x9d\xa4\xd2`\xc6\xb2\x12\x14\xc9\x80\x8f\xb2\xf8*/\xbd\xbc\x88\xceb4\xdcz\xed'>\x84u\xff\xb2\xf0\xb1\x9b\x15\xac\x84\xf4\xf4@\x124\xf0\x16$\xb6\xae]\x97\xd8\xbbD\xd6\x83]#+(\xb2\xf6\\\xf2X\xeb[\x95\xba\xd2v\xa4\xb2\xfey\xf3\xfa\xb7\x1e\xc0\xb5\x05_\x1bj\xa2\xe6\xd8[\x0bd\xb1^\x8d\x82\xff/1\xe9\x15\xbds\x04\xe5%\xa61P3L\xcdU\xf0}\xcf\x15E\x9c\xed\x8e\x9f\x82\x1a\x89\xa6\x0e\xb5\x1b\x81\xa4\xb9\xa5'\xbb\xb7Y\x9cp6\x8b9zc^\xf8g\x1c%\xf3\xc1L\xc9\x1c\x06\xecK\xff=g\xf2*//#\x8c\x94J\x85\xfa\xe6\x1b\xa4\xday\xf7|\x11\xa7\x1c\xa7&\x05\x99\xb0l7\x1d\x10\xc1k}I'\x0b\x14s\x0d\xed\x13\xba\x0d-\xb6\x84\x17\x19\xaaM\x07A\xaa^\xf5\xb8.\x85\xbbd\x1f$\xd8A\x8aB\x91\xe2\\\x9e\xd5\xa2\xa2\xa8\xc1e18&\x88*\x81\xdf^,\x979\xc4\x83/\xbeZ\xdec\x9a\xc7a\x18\x9f\x07\xd1\xa9rx\x10\x80S\xaa\xbb\xac\xcf\x02T\x1a\xdc\xedy\xacw\x17eL\x83\xbb\xe6\xd8\xe1\xc0%f\xef-\xff\x19(#\xf0\\\xe8\x0e\xe6A\x98\xf1\xa4\xe5\xa8 \xc7\xbba\xdc\xdf\xaa\x1da\xeaZ)Y/\xd7e\xc0\x07\xac\xa7]\x19\x04\x81\x04^\x94,J\x1d\xb0\x9e\xf2\xeb\xd0c\xa3\xe2G\xc0S\x14\x97\xe1\xc0ss\xe0l\x1e\xe7\x118\xa5\xbe\xab&E\x03\x7f\x16\xb3y\x10\x15a\x83\x04\\Q\xf0\xaf\xe4_\x853 \xbcC.\xc5\x1a\x0dp\xd6\xef>\x96\x9dD\xff\x13'\\J\xeaf\x83\xbbuw\xca\xb7\xbf\x1b\xde\x1aE\xf3\xd6\"\x0euo\x9c]tH\xa4d\x13UH\xa0\x1a\x12X\xaed\xa7\x97+)\x0bEQ\xe7\xad\xc8?\xeb\x02(M\xb6y+\x13\xa4W\xacB\xab\xa0\xd0b\xd7\xae\x07\x00/\xe7\xa9:#]>\x199\x8fP\xc4\xfd\xe8\xa1[\xedy\xe4<\xd8\xdb\xead\xe0Y\x1e\xa1\x87\x86\xafC\xe9l\xf0\x91\xeb\xf4\x8a\xd8\xe0\xa4\xad\xf3\xde\x96\xc5\x8a;r\x86\x0f\\\x8d\x8a\xaeq*\xb0\x1d\x084ER6\x8e\xd1c\xad\x16\xbb\x1c\xee\x14@4\x81:\xcdJ\x1c]~\xd7 \xc0\xcdV\x86\xf7~\xe2\xfc\xca\xf6\xd6\xd5Q\xea~\xe2\xfc\xd4?\xf3\xd3i\x12\xac\xb2\xab\x99\x9f\xf9\xee\xbd`i\xc2\xf2\xde\xf8'G\x17\xdb[\x9bG\x17{\x87\x93{\xa7\xf5\"\x01\xb69\xfe\xc9h\xd2wG\xf7N\x97\xe6qk\xdc\x1b\x08Bt\xaf7\xa1\xe1]\x05h\xeaGA\x16|\xc3\xbfJ\xc26a\xd5\x99\xb4\xb5\xf1\xe4\x8e!\xaf\x95\x89cA\x8fRKw\x12\x10j\x05\xfd\x010\xec\xaf\xe6\x0e\x1foM\\\xf6\x94m\x12\xee\x97\x9d\xdc\x95&\xe7N\x04\x12\xc0\xa5\x9fM\x17N\xe0\x8ad4\xd9\x11\x873\x96\x0c2\x9ef\xe8\xb6\xa4\xe7\x9f\xc4y6: \xfd\xe8\xbd\xd86r\xb8\x1d\xae'V\xbe\xb3\xa6\x15e\xb9<\x1e\xd8\xec\xff\x1f\x0e]#\xdci\xc3f\n.\xa2\x07Y\xfcE|\xce\x93\xe7~\xca\x1dpG\x02\xfa\xa3\x03&\x90\x94\x8d\x0c\x1f\x1f\x96\xe5\x15\xaf7\x84]\xca\x9e>r\xb6\x1f\xda\x96\xaf}z\x95\xb0\xdbI\x1c\xeeVG\xb3\xe6\x1a+\xbb\xb7W\x17]|/\xa6\xe4`H\xdelF\xde\x0d$g\xff\xbf1y1\xc7\xf5 \x8e\xba\xd9\x8cw\x03t!d\xb9\x96\xe5\xb8\xbe\xa2)\x84\x13\xeb\xc1r\xa3g\x8f\xf2\xaf\x0b\xcb\xea\x9aCh\x96\xf5\x80\xc5\x03\x19\x94@\x814F\x12\x18 \xd1\x90\xe2y\xa34\x93\xa8\x0e\x96\x91hd\x91\x0d\xa6\x0b?y\x969[\x16%L*\xcb'N\xe4\xb1\xa1\xb2P\x82\x08!\xd9 \x0d\x83)w\x1a\"\xb0\xe4c>\x01\xc5wU\xd8\x7fm\xda\xbb\xfd\xb0\x1d\xc4\xf6cl\x0c;\x9a\x14\xdf\x93\x98T,2\xe9\x02\xea\x80\xc5\x82w\xf7\xd8\x06\x98\x01D\xec\xe9>\x8b\x95Ux\xf1\xa9\xeb\x8e\xe6\xc1^\x9d l\xc1\xbb\x9b\xd0g\x8e\x08\x02\x97\xb4\x92\xf6\xc5b\xe3h[\xbf\xc4Ks\xb65>\xa1\x10\xb97>:\xcag\x0f\xb7\xb66\xc5\xff\xf9|^\xbf\xf4\x96\xa8B[;Xhkgw~t\x94\xcf\xf96\xfc\x9c\xf3m\xf1s{k\x06?\xb7\xb7\xcc&\xe0\xc6\x00|fg:\xc6\xcf\x9c\xd8>\x07\x86~\xe3\x9f\xb4t\n.\xf49\x07#\xbd\xd1\x19\xdf\x85\xe2\xb3\xf9|\xe2\xfe|\xfb\x03y\xc5Oo\xf7d>\x9f@\xc2\xd4\xfe\xa1T~\xa8\x08\xe1sU\x84\x01r\xc5[\xef\xa0V!T\x9f\x99\xf3-\x8e\xff\xe6\x93\x03\x15\xe1\xc9\x91\x9d\xde\xde\xda\x9a\xc9V\xc7\x18\x93)\x9f\xc8\x95~\x85A\xe2\\k\x1b=\xf7\x93\xfaY`\xaa\xf5r\x1c\xa8\xae\x1e\xf4\xf0\x1a<(\x08\xa3z\xfb\xb5~\xcf\xd9\xbe\x0c\x8c\xe0\xc0\xe8\x9c\x83\xfdr\xa40\xe8)F\x8a\xec\x9d\xf6\xae\xbb&\xb8\xe4*\xe7p_t<\xb9\xee2\xde~hc\x08m\xcb\x98\xf2%/G\xdb\x1b\xdf\xfdo\xbf\xf3\xbb\x93\xde\x8dF\xd6\xbc\x9d\xa8\xdd\xdd \x1c\xb1o\x14,\xbe\x0f,\xbe\x0b\xce\x1ez\xbd\x1b\xdd9\xd2h\x9c\x058\x06\x0b\n\x87\x9e\xf1\xd1\xc5T\x1c\x8bf\xbbG\x17\xb3\x87\x9bG\x17\xf3\xdd\xa3\x8b9\xbc\xcc\x8f\xf2\xad\xa1X\x19\xf9\xd6po>\xb9w\xda\x00\xc2u\xc9\xc3M`\xed\x80\xd0\x1a\xa4\x82 \xa9U\xd0\x0c<\x96\xd4a{} \xdew\x9d\xea\xd7{\x7f\xf8;\xbd\x11\xeb=\xab\xad\x9b\xde\x1f\xfe1:\xf9\x8f\xd3\xc9\x7f\x82N\xfe\x1f\xe8\xe4?I'\xffC\x91\xec\x1b\xc9\xff\x88N\xfe\xc7t\xf2?\xa1\x93\xff)\x9d\xfc\xcf\xe8\xe4?-\x92\x9f\x1b\xc9\xff\\$O\x8d\xe4\xbf\"\x92\xeb\xde\xf1{\x7f\xf8\xefD\xf2\xccH\xfe3\"\xb9\xee;\xbe\xf7\x87\x7f\x96N\xfest\xf2\x9f\xa7\x93\xffg\x91\xcc\x8d\xe4\xff\x85N\xfe\x17t\xf2\xbf\xa4\x93\xff\x82H~a$\xffE:\xf9/\xd1\xc9\x7f\x99N\xfeW\"90\x92\xff5\x9d\xfco\xe8\xe4\x7fK'\xffU\x91\xfc\xd2H\xfe\xf7\"92\x92\xffG\x91\xfc\xcaH\xfe\x9f\xe8\xe4\xbfF'\xffu:\xf9o\xd0\xc9\x7f\x8bN\xfe\x0f\"96\x92\xff#\x9d\xfc\xbf\xd2\xc9\xff\x1b\x9d\xfc\xbf\xd3\xc9\xff\x89N\xfe]\x91\xfc\x95\x91\xfc\xb7\xe9\xe4\xbfC'\xff]:\xf9\xff\x14\xc9\xb9\x91\xfc\x7f\xd1\xc9\xff\x99N\xfe/t\xf2\xdf\x13\xc9\xf5\xd8\x01\xbd?\xfc}\x91|i$\xff\x01\x9d\xfc\xa7D\xf23s9\xfc\x9eH\xf7\xcd\xf4\xbf/\xd2\xdf-\x8c\xf4\xff*\xd233\xfd\x1f\x88\xf44\xad\xa7\x7fK\x93\xe5oi\xfa\xfb-Mh\xbf\x05\"n\x90\xb7o\xff\x04\x9d\xfc'\xe9d\x80\x80A\x0c\xbf\xfd3t\xf2\x9f\xa3\x93\xff\x02\x9d\x0c\x84\xd6\xa0\xa8\xdf\xfeY:\xf9\xcf\xd3\xc9\x7f\x91N\x06\x12d\x90\xe5oij\xfd-P&\x83Z\x7f\xfbW\xe9d \x13\x06\xfd\xfd\xf6\xaf\xd1\xc9\x7f\x83N\xfe[t\xf2\xdf\xa6\x93\x81\x04\x19\xf8\xf6\xed_\xa7\x93\xff&\x9d\xfc\xbbt\xf2\xdf\xa1\x93a\xcd\xfe\x9a\x91\xfc\xf7\xe9\xe4\x7fH'\xffc:\x19\x16\xe7\xa9\x91\xfc\x0f\xe8\xe4\x7fD'\xff\x13:\x196\xfb_7\x92\x7f\x8fN\x06\x1e\xc0X\x98\xdf\xfes:\x19\xb6Xc\x07\xfb\xf6_\xd0\xc9\xff\x8aN\xfe7t\xf2\xbf\xa3\x93a\xfb66\xb6o\xff%\x9dLo\x9a\xdf\xd2\xbb\xe3\xb7\xff\x9eN\x86\xed\xe47\x8cd\xd8N~j$\xc3v\xf2\x9bF\xf2\xff!\x92\xdf\x1b\xc9\xff\x89N\x86\x9d\xe0\x0b#\xf9?\xd3\xc9\xbfO'\xff\x01\x99\xfc\xdd\x1f\xa3K\xc3.\x13\x1a\xc9\xff\x85N\xfe\xafd\xf2w\xbfC'\xffq:\x19H\xaf\xc1\x8d|\xf7'\xe9\xe4?M'\xff9:\x196\x01\x83\xa5\xf9\xeeO\xd1\xc9\x7f\x86N\xfe\xf3t2\xd0o\x83I\xf9\xee/\xd1\xc9\x7f\x85N\x06Bm\xf0\x17\xdf\xfde:\xf9\xaf\xd2\xc9@c\xdf\x18\xc9\x7f\x83N\xfe[t2P\xcd\xc4H\xfe\x9bt\xf2\xef\xd2\xc9@\xa8\xdf\x1a\xc9\x7f\x97N\xfe\xfbt\xf2?\xa4\x93\x81\"\x1b\\\xc1w\x7f\x8fN\xfe\x07t\xf2?\xa2\x93\x81\"\xbf3\x92\xff)\x9d\xfc{t2\x90\xde\xccH\xfegt\xf2?\xa7\x93\x81\x98\x1aL\xe1w\xff\x82N\xfeWt\xf2\xbf\xa1\x93\xff\x1d\x9d\xfc\x1f\xe8d\xa0\xb1\x06\x0b\xf9\xdd\xbf\xa4\x93\xff5\x9d\xfco\xe9\xe4\x7fO'\xffG:\x19H\xef\x8f\x8dd \xbd\xe7F2\x90^\x83\xc7\xfd\x0eH\xaf\xc1\xcc~\xf7\x9f\xe8\xd2@z\x7f\xdbH\xfe\xcft\xf2\xef\xd3\xc9@L\xbf1\x92\xff\x0b\x9d\xfc_\xc9\xe4oav^\x98\x1b\x0f\xc0*0v\x9e\xef\xf0\xb8fp.\xdf\x01\xb3\x14\x9b\xe9\xc0X\xde5\xc9\x1b\xec\x1bi\xa9\xd9\xb5)Hi\x8f>\xd7\x16rw\x12\xb0\x11\xce\xd4F`\xa3[\xa9p\x03\xc9Z=\xf6\xa3\x12;R\x96\xdf\x84\xc4M\x9am?l\xf7\xbcG\xabT\n\x0b\xc5}\xd0+x\xba\xea\x04u\xf4\xfa\xc0AA%\xd5\x10~\xa9\x86\x80\x00T(\x87\xcd\xba\xc9a)\xb5\x01\x18Tlmm\x1e]l\xcf\x8f.v\xfc\xcd\xa3\x8b\xfb[G\x17\x0fN6\x8f.v\xb7\x8e.\xf6\xc4\xcb\xde|\xd2\xbfw]%\xa3\xeadt\x93N\xfa\x9b\xdfL\xc6\xcf6\x7f{r\x05\x7f\x7f\xbe\xed}\x80\xb4\xab\xf1\xd6\xe6\xa3\x89x\xc5L\xf9\x02\xa9W\xe3\x9f\xe0\xcf\xad\xcdGlr\xef\x9a\xdd\x8f\xd0Pb-\xb5O\xa1\x939:\xba\xf0\xa7GG\x17'\xc3\xa3\xa3\x8b\xd9\xde\xd1\xd1\xc5\\\xfc\x01\x01\xab\x008B\x1c@\x8e0\x07\xa0#\xd4\x8f.NP\xe0\xba%\x05\xae\xbbsvt\x94\x89\xea'GG\xa2\xae\xbf\x05r\xd9\xf9\xfc\xe8(::J\xa0\xd0\xf6C\xfc\xf7\xe8\xe8(\x1f\xee>\x14%\x86\x0fA\xf9 \x1a\xc2\x7fC\xfc\xb7\x8d\xffv\xf0\xdf}\xfc\xf7\x00\xff\xed\xe2\xbf=\xfc\x87mn=\xc2\x7f>~\x01;\xf7@\xfc\xdb\xd9\xda\xda\xaa\x11\x18\xd46\xf5X\x9fE\xac\xcfz\x16M\xd2\xac\xdf3\x17\x1cH\xa1\xb7\xf7\xe4\xb0\xf7Nh\xa5\x91\x98j\x01\xd4\xb9\x80\xd4|\xf7\x08\xa5\xddG\x17\xa6\xea''5Q\xaak\xa0\x18\xa9}\xd0\xda\xf4\xb3\xcd\xdf>BA;H\xdaQ\xd4~t1\xe36u\xd3\x1az\xad\xf0Zz-\xd0\x18\x8d;\xf7k\xae)\x98\xfcB\x0d\x96S\x8a\xa4\x95Vt\xda\\t&\x8b\xae\xa9>\xb8\xb2\xa9\x12\xdd\xba2naU\xc6\xcd,\xca8R\xf5\xc8R\x8f\x85\x9d\xf4s3Z?wV\xd1\xcf\xd1\xed\x89\xbc\xda}\xcbe\xa9b\x19OQ\xa3\xa7\xe0\xdf\x17`\x03\xc5\x95s0\x9a]\x85\xe1\xd5\xf2*\xe1W\xe9Uvu\xc6]\xf7@\xaa\xef\xc6\x89\xc7\xa6\x1e\xeb\xfd\xb0g\xaa\xff\xd8\xcah\xe8\xb3\xab/\xbe\xb8\xfa\xf2\xea\xcd\xe1\xd5\xdb\xabwW?:\xac5\xc4\xfalnk\xac\xec\xdf\xbcK\xffT\x8d\xb6\xcf\xf79\xc0\x1d\xeb\x87\xd7\xa6\xec\x1b\xce\x06\xd8t \xea\xa6l\x10\xc0\x14\x97\x1d\xb0\x15\x18A#\xe3\xef\x17\x0eG\xd9Z\xa8S\xdc\xb5~d\xbdk}o\xfc\x93\xc1\xa4\xff\xc3{\x03~\xc1\xa7N,z\x10\xc35\xb1\xf2m\xf0\xe2\xf0\xf8\xf5\x9bW\xef^\x81\x91~\x0f\xac\xb8{\xe8\xc8\xd1I\x93\xa9{<\x1c\xa0E\xd3\x88\xf5z\xd7\x85\xc4F >\x18@`\xd6k\x8c\x14\x91~\xcf\x1d\xf7\x8e\x8f\xa7q\xc27\x7f\x9a\x1e\xa7\x0b?\xe1\xb3\xe3c\x9b\x95\xfdu\xa5\nv\xdf6\xed2\x83\xf6s[7\xb0\xa9\xad\x01\x88\xcb\xc2\x87\xcd\xe3\xce\x1de\xde[!JcN{\x05)\xe9\xd2\xe6>\xcb\xd8\x01\x1b\xb2\x11l\xda\xd7\x05\xbf\xa0\x9e\xc4 \xeb\xf88\x8cg~\xba8\x16{\xfdqqg\xe8\xf8\x988v\xb5\xb8OX\x17\xb9*PR\xf0\xa8\x02#\x983\xc7pZ\xcc\xb4\xf3sf\xc0\x8fULN\xf7\xd1\xa6\xb4\x98\xee\xa6@J\xb2VPx\x15\x86\x95.\xbeP\xd8\xfd\xde.\xf0\xbf\x7fx\x16\xc6\xe7\x07\xd5+>0\xc4X\x1b\xf8\xed\x0e\xb4\x01\xcb\xda\x06\xd9\xe4=\xacu\x9c\xe5\"\xeaW\x17#rdC\x8fEb\xe8\xfbh\x8d\xaf\x89\xd82i\x9d\x9c!\x83pS\x02\xd1\xc6\x96\x8c'\xb7\xc4\x88\x0cw(\xf6\x18\x83\xd7h\xcc\xd8*\x0c\xa6\xbc\x0d\xf2\x9d\xd0\x8bf}\x13D\"rN6\x9c\x88=A\xc7\x11N\x04\x9e\xa0\xd4\xd5\xd4M6\x14\xebm\xb0\x8a\xd1WD\x89\x8f`\x1e\xef\xb1\xcd\xcd\x02H\x1e\xdb\xba\xd6\x9e[@\xe9\x174z\x1c\xbb.\xba\x1dG\x93\xf1\xb0m\x0b\xba\xd5\xa1\x146\xaa\xd5\xb1\x08rW\xb91\xf6\x11\xba\xd2u5\x9b\x80\x8d\x01\xb0\x91\x15\xb0\xb1\x04\xac\xd3\xefkH\x12a\xec\xd0\xb1\xf8\xf0\xc4\x85\x08P\xe3X\xc0[F9j_\xdb\x0d\xc3\xddn\x1d\xae\x0d\x89\x12\x15\xf9\xcd\x95G+\xdb-\xa1\xebr\x01\xad\x14\xc9\x8e\xdf\xd2S\x1d\xd9\x9d\x1e\x9e\xe8\xd1\x81\x1b\xf0\x9bQ\xbe<\xe1\x89\x96\x90\x02\xe7\xa9%\x9c\xc4q\xc8}\xe9\xf4M\xf0\xa6\xc7\xc7@\x89\x8e\x8f{2\x10\xc0Hs\xce\xf7}\xceFe\x1d\xc0d\x9c\xf2\x0eb\xfc\x8f\xdc\x07\xdc\xa1>f\x1f\x1a\x16a\xd9\x0fz\x05F\x80\x8c4e\x03\xc1\x034\xeeU7\xdeHnk\xc8\x8a\xc9\x8d\xf7fK\x8f\xb6{7\xae\x8eI\xe5\xdc\xfdV\x90X\xa6\xa5(\x80{\x10\xe9u\xef\xac\xe2w\x9d\xbcI\x06\x8e/b's\xa9\xfa\xaa\x8dT\x11\xb8\x1d\xa2\x05&o\xaa\x05\xe0{(j\xec\xbb\xfe\xc8q\xa4N>\xe6\x13\xb8|\x90wu3k\xa6\x9cI\x8f\xbc\xbc\x00\x87\x95\xf3\x0ea'a\x07,\x1f\xa7\xc0C\x87\x82\xc1\x0c F\x9a\xb1\x1bH\x03w\x87\xf5[ \xf2\x02\x84!`AL\xd8~\xd4*A\xb2\x12\xc6\xd8F\xa3\x87\x15&\xe6\xce\x1d\x96\x8d\xb7&\xe3\xed \xde\x19\x14\xef[\x82\xbd\x13/\xc3\x89\xd8\x82\x8ao5\xdd`\x8e\xa4\x13Q\x88\xb6\x16QAB\xaf\x0d\xb5\xa1qwF]\x8d\xa3\xa064%U\xdbm0\xc4\xaf\x0bd#\x80\x99\x02\x1d\x91n4\x8d\xe1\x0b\x04K\xcd\xe4)\xdbg\x1b\xb9y8,\xce\xf4\x85\xdf\x98\x8dZ\xfc\n\x10\xb0\xf2\x8a\xc7\x03\x96nnZ\xa5\xabs\xd1\xbdqjq}=\x85`\xa18\xbbs\xc1G\xc0\x166\x9e\x8f\xb7&\x02\xb97\x1c\xf1\x06b\x92\xd2\x93\xcdFS\xac\x0f\xe8\xdec\xd6\xef\xa7\xec \x0b\xad\xbdZ\xb1}\xe6\xa8\xae\xb9V\xe7i3\x10\x0d\xaf,\xb9\x0b1IV\xaf\xde\xc5\xd0l\x04\xa5\xe6\x90\x04B\xdco8\xab\xe6\xd1\x8aG\xc6}\xb7\xd3\xbe3\x86Q)\x1bBQ\xe7.\x94\\\xb2}\x96;3\x8f-<\xb6\xc2U\xe1\xb13\x0b\xc5\x04\xba\xabwy f\x12\x0b\x8f\xcd<\x16\xb0+y_\xeeL,\xcae\xf3\x08\x1afP\xd5\xba\xc1\xa1\xad\xf5\xeai}J\xea\x07HT\xd1\xacu\x86\xbc\x01\x8b\xd8~\x04\xca:\xf3\xb5\xa2\xac\xe4\xd5o\xbd\xc3\xfa\xc7T\x7f\xbb\xf1x\xb7\xf4\xad\x9b\xf2r\x16\x8d\xe0C\xea~\x9fH\xaf\x97\x07b\xbd\xd5\xead\xa1\xeb\xa9\x8c \xbfLy\xd9\x8a\xe7ft1\xa6\xb1G\x91\xa5\x15V\xf0Gb\xab+\xdcT=a>\xdbd\xc3bM\xe6\x95\x83\\\x15\xd3\xfb\xfdH\xa2\x90H5\x9b7\xc6!\x17L\xe0\xe4\x1d\\M[\xf8Z\xc5\xd6\xde\x90\x93\xb5n\xc5u1\x9ade\xb7\xa9x\xa7\"\x9d\xd2\x1c \x14\xaa\xab?Sl\xbf\xaeq\x08ew\xea\xcdL%\xdfTO\x9f\x9b\x9c\xc1J\x0f\xac\xfaLy\xf0\xac\x9b\x97\xcc\xaa\xa5\x12\xff\xb2^b\xa1\x97\xc0M\xbb^\xe4\xec\xe6\xc2S\xc5\xa2,=v\xea\xb1K\n\xffO\x04+\xe2PG\xa1c\xc8\xc9\x88\x9cs\xb6\xcfN\xd8\x01\x9b\xb1\x11\xcb\xc9\xba\x87l\x9f\x1d\x17%\xa86.\xc4^/\x1a:\x17\x9c\xcd\x8a\x1d\xb0\x05\x1b\xb1sW\xfc\"8\xa6\xb7\xa2\xb8h\xf5P/~h+\xfe\\5|h.\xe7\xe7bK\x0fA\xd7e\xaedX\xa5!\x9cb\x8a\x8d\xd2\\l'\xe0+\xc5\x83A42>\xc5\xf76.\x8a\x06/A*x\xa964\xd7c'\"e\x8a\"\xdb\x98\x98\xb5\x11\x0bd\xeay%\xc3\x1c\xdb\x86\x13\xb1;lN\x0eM\xcc\xf6{\xb6\xcf.@\x0c\\\xb8\x96\xe9\x1d\x1f\x9f'\xfej\x05\x82jb\xa2\xc4\xf3\x8c\xed\xb3\xb7Z\xb5\xac^\x8d&w\xef\xc5\xb8\x9e5\x9d\x07_\xb1}\xf6\x9e\x1d0>\x00Wr \x11mp\x9a\xfe\x9a\xed\xb3g >-\x8bg4[d\x05\xf6\xa9\xf3\xcac\xaf\x15\x1c/\xdb|^\xd3l\xd0\x06L\xaac\xb6\xee\x9b\xd3w\xfd\xad\xd1\xd8\xea\xe4\xc1o\x9b6\x96\xd9\xdd\x1ev\xf5\xe3zv\xcbf\x1du.M\xb7\xef\x80\x02\xfel\xe6\x80w\xe1\x1a0\xc4\xe3k\xf4\xcd\x9f\xcd\xc0\xabP\x99\"\xb6D4\xca\xf0\x0d\xfb\x8b\xa0jj\xe1\x93\xf0\xad\x037\xba\x99\xae\xa6\x13O$w\xd3\xc8\xed\xb4s~\x9f\x8cX\xfb\xb7\xec\xbae\x00\xbb\x93\xb5}\xc2\x8a\xd06/I\x86\xb9\x93d\xf5\xb6(7\x17\x14\xdf\x90K\xfc\xafo\xf8\xa9L\xaf\xb7\x13\x9a\x1b\xbb\xe0\x01\xb6\xcd\xed\xbf\xd8\xa3?E o}\x93\xae\xf0\x03\x9f\xf9\x99aiZa\x05\xc0\xa3e#+\xf0\xa5\xbf\xa2\xf8\x00-\xd8\xfb\xf2\x84\x1bM,\xf5\"h\x97R/r\xaa\x17y\xcb\x0dn\xe3\xb2\x92\x0f\x12\xf0z\x91\x93J\x11\x10\x81\xd7\x8b\x1c\x1b\x8c\xcf\xa7\xf9|nv\xf8\xbc\x066\xffG\x01?\xaf\x17:,\x9c\xaa\x15\xeb\xde\xe2\x9b\xea\x02\x18\x83\x03v\x88\xfb\xc2\xabyg\xd7k\x8aX'\x1e;\xf4\xd8[\x8f=\xaf\xe3~z\x1e\x80\x0f4R\x8e\x05q\xdc\xceGF:\x93; \x1f\x9c\\f\xfc\x0bd\xf77\xc41P\xfb}u\xc50\xff\xd5|\x9e\xf2\xac\xcc\xc7\xdf\x8d\x1c\x88x8x\xa3:\x01\x00{\xd2\x1b \xfe2\xcbCG\x8f\xe9\x8e\x16:\xcb\xb6\xden\xbcu\x04u\x8f1\x18\x0c\xbce\xaeKl\xfe\xf0\xb5\xb9\xf95H_Y\xd2\xcf\x1a{\x178}\xee\xb1>%y\x86\xda\xb3\xc6\xda|\x10\x81Oq1&x\x03O+K\xe53\x1c\xc2\x9d\xe0\x0fK\xf3KK\xa7/\x9b?\x8b\xfa\xa0~\xc5(\xa9R\x7fA\xd7W\xbcZn\xa9vj\xaf\xf6\x0c5\xfd,\xb4\x8b\x8b\x80/sD\xfb)x{\x85\xb3\xde\x86\x12R\x00\xbb\xfa\xac\x15\xfb\x14\xfb\xf6\\\n\x1b\xec\x9f{U\xb4\xf5\n\xe0aa\xd8\xd8\xd5>\x9bz\xecyy\x14\xb5\x7f\xf858\xb4{\x0f\x88\xf8\x1eC\x15\x94\x0b\xb8\x91!|^\nm<\xf6\xda\x02\xde\x13\xfb\x8a.\xf9\xf8\x0b\xe55P\x0cJ\xfe\xb0J\xaf\x99\xb6\xce\xda\x94\xcf\xed[\xf4\xba\xec\x9c\x0c\xe1\x04\xd3K\xcb\xaa\xb8\x195\x82\n\xa5\x0e\x0d\x8e\xfb\xfdl\xc2\xf6\xc1\x86\x9e\xd7\xee\xa2\xb9\x1fC\xc4\xf5q\x86\xd786\xbe\xf6\xb0\xecv\xb3\x8f(\xf1\xc7\xd0\xe4xn\xe9\xb0\x8f\xf2\xde\x94\x02\"\x08@\xd8\x1d\x16\x9bp\x9c\x82f\x8e:\xcb\x0b6hJ\xf2\xffb=\xcc\x05\xe1H\x9c\xcc\xd5tC\x1b\xa1\x95z\x14\xd1\x8a\x04\xe34\x7f\xccV\x0dJ\n\xc1:M\xc7+\x8b$\x7f\xc3 A\xc0\x00^\x9aG\x9aA\xdb\xcc\xed\xa8\x95\x10\xdfX\x80\x190E\xc1\xc47`4\xa9\x0c\x87R4\xba \xa8\x98\x12\xf0o\xd4\xbc\xab\xa6\xba`-U\xf1P\xea\xdf*\xa0\"\x18\xb9P\x1c\x9eV\xec \x9b[!s\n\x1a\x10\x05\x1f\x8b\"\xe4\x12,\x07g\x16\xf0\xf9n!\xfe \xe1B\xe5%\x1cWg\x80E\x1c\xf0g\xc4|G\x9c`!\x15\xd1+\xb5)~u\x05\xc4 ;\x10=\xdc\xdf\xc7\xd3w.\x1bA\xd4\x84vO\xecJb\x90\xa8\xd0\x14\xfc$\xe1\xfe{#\xc7T\xe1.a{\x03\x9exZ\x1a\x92\x83m\xc6\xac\x89>\x83\xea\x07\xf0wi\x03\xfc1\xb0\\Z\xab4\xe8\xcf\x81\x17\xd3\x8a\x99\x03:\x16\xeb\xe6\\|\xad\xda\xc9@F\xec0R3\xd4D\x91\x01\x06\x8fE\xde\xb1.\xa6\x86\x14\xb2,|\xf3\\/{\x8eF\xdf\x08\xfa\x0e\x1bX\xaao\xa1\xc5\x0f\x81\xe0g?\xa8V\\\x9f\xf4\x13\x87\xcfJ|\xc7\xcd!F\x83\xb5 (\xd0\xdc|\x0b\x03>\x8e'b)E\xec K\xacK\xc9\x87\xa5T\x8fZ(\x9e\xcc\xf1\x01i\xd1\xac\xd9 \xc6q\xbf\x0f\xb1\x0e;\x80(\xf8\xde\x00\xa1\xa23\xaa\x91\xf2\xc7.K0(cf\x04'\x91\xbdKZzg7E\xa0\x05\xf9\xf7\xa9\xfb\xe2\x94\x94\xbcm\x0b\xb3\xc8\x1dbiZ\x9eHf\xeb\xc6\xd0\xb5|\xa7\x953[\x170C\xcbMz\x03`>\x84)-\xc1\xe3\x8f\x0b\xf0}\x1e\xc6~\xb6\xb3-\xb5\x08\x80\x80\xb5\xcc\xdd\xfbt\xe6\x8b({h\xcd\x19\xeeZ\xb3l\x1f\xfb*\xb06\x08Y\xcfC\x7f\xb9\xe23{ \xdb7E^\xe5\xa3\x1b[\x9e\x9e\xafaP\xad&\xdd^E\xf0P\xcb+\xe48\xb5\xf4R\x08afp#Q\nr\xea\xb3!q\xc5\xc8\x00\xa9N-MIrj\xc9J\x17TKVB\x9dZ2\x08r\xeaiRxSK\xfe1\xf7\xdf\x17\xfd\xd8\x18z\xeb-\xc1@.\xc1\xd8\xe1E\x94&\xb1\x1fm\xf8c\xb1*o`\xdaK\xfb\xa0\xd85\xac\xdfn\x81C\xae\x8f\x0dc5\xe9\xf1\x98L\xfb'u\xf6\x18O,,[$6\xe7\xc2\xec\xc6\xd5\x9c\xf6G\xae\xb9\x91o\x00\x03~\x87e\xa8\xea\xb5\x10\xe86\xcb\xd7\x86\xb3\xc6\x9e\xebh\x81\xb6<\xd93\x8b\xe9\x05}\xfd\xc8N\xe5v\\\x07\xae8y\xac\xa7\xd6\x8b\xed\xe2\xd9\x0d\x9a~\x9d\xc4\xcb \xe5\x1f\xa1\xe5\xb7<\xfb\x08\xad\xca\x95uK-o\x1b\x97v\xe5\x8aX\xdf\xc0\xb3\x12\x856.B8gE\x00\xda\xa8\xe1\xf4\x15\xc0\xf1!\xb2\x1c.\x90m\n(\xb6 \x99\x0f\xe9\x06\x96\x95\xd2E0\xcf\x9c\x06D\xd5.\xfe\x03k\xd1\xb64E\xf9\xc0\x89\x8b\xbd\xcb\xde\xb2x\x00\xf8q\xc3\xa2\xa2)-\x99\x8aS\xe1$\xec\xa9\xf4%\xa6\xf6\xbc\x91\xd8\xc0Y\x9f9\xd2\xc8\xfd\x80\xf5\x9e\xdc\x13TM\xfe\xee\xb3\xde\xd3\x9e^Jn\xa0\x82\xa1\x8aD\xe9\xa3Hf\x83\xa6\x10\xe4\xa0\xd4\xc2\xb3\xcfb`\xdf\xc2\xd4)kC\xc7\x138J\x96\xbf\x07\xfej\xc5#\xf0\xef\xe0\xe9\xf84\xc0\xc4\xb8\x92\xa8\xcc\x18\x9c\x0dq\x06\xdd\xd8\xeaB\"\xe0N\x06br\x01\xb5*\xbc4pi\x80*W\xbf2s=`=\x86e\xb5\x072\x0e\xd6\xabN/\x8a3\xe6\xa7ip\x1a\xf1\x19\xcbb\xe6\xb3\x95\x9f\xf0(\xdb\xa0\xf8\x07\xf5\x9ci\xfe\x91\xe8^\xaa\xa7\xf4H\xa3 f\xec\x0d\xe7\x8e\xd6[IT#\xaf\xd2\x02\x8a\x80\xfa\x82\xc1P\x94\xd6\xf5\x9agE\x7f\x14{\xe9P\xbc\xa2zlT\xca\xc2f\x08\x9a\xd7uJ\xb4\x0d\x17\x0d<\xc4\xd0\xe0\x84\xcb\x95\xd7\x1d\xc1\xe7\xaa\x1c\xd1\xd3\xce$\xd3*\xfa\xac]d+~}pK\xc7\xc3\xce\x83\x07\xf2\x80\xdd$\xe8W\xdbyu\x80\xbd;\xbd\x11\xeb\xdd\xf1\x97\xab\xc75\xa2x\xb7wW\xe4\xfc,\x8f\xb3zV\xef.VZ\xc5\xa9\x91\xf5\x04\xb2B\xb3\xceS\xc88\xcd\x1ek\xc1\xfa\xda\x04\xe3\x16\xa9\xb8$^\x92\xb2\x01\xf1*\xc4=\xce\xf8N\xef\xc9\xd3\xbb\x18c\xa1U\xd8\xa6\x04\xccFP>\xe0\xd9\xca\x8e\x92\xd0\xad\x91G}\x08\xf1\xe3\n\xdc\xa5\x19\xc1\xa3\x1dwpx\xc6\xa3\xecp\x19d\x19O(o\x1f\xe6A:\x913\xbd\x08\x0cu\xb5x\"\xe7\xe1\xd0ub\x0f\xfc\x97\xc4\x837%\xc5\x14_\xbc\x0f\x89?N\x82\xacH\xdc\xdd}\x00\x89\x9f\xe5\xab\x90_\xc8\xa4]Hz\x97\xf8Q:\x8f\x93\xa5L\xdd\x83\xd4\xd7~\x9a\xbe[$q~\xba\x90\xe9\x0f!\x1de\xe2x\xb0\x8bu\x97\x1f\xc1\x8a\xb7\xe97\xce4\xdf]6\xc9yL\x9fF\xf9\xe0\\\x0d\x07U \xb8\xd5\x88D.j\x80\xd5\xd8\xca\xcfS\xae\xbd\x1a\xc7&\xfa\x93\x01I\x85\xa2r\x1f\x82\x16\x13\x9e\xe6\xcb\xca{\xe3\xa9,\x1a\xc4Q\xc1\x92\xc5`,\x08 \x89\x1fD=\x8f\x05\x90r\x1c\xa4o\xb3Y\x00r\xfcL\x1b\x18\x1e\x9e\xc1\x119\xd4\x12l\x9c\xc7r`\x88\xc4od\xdb<\x96\xd6\xa5xg\xd2Ztch\x83oN\x0e\xd6\x87\x8f\xf9r\xc7\xe5H\xc7\xbaA/\xed\xd0 y\xa9\x8d\x0ff<\xcd\x92\xf8\x12\x17\xb6\xfc\xd1\xf5\xb3!M\xb7\xc5\x16:u\\OZ\x02$\x830H3\x1e\xf1\xe4\xb9\xd8\x87\xa4\x13\xe1\x1e\x17\x9bi\xcfU\xfbk\x9d\xde\xd2_\x9cZ\xd1d\x19\x9f\xf1/\xe4wjsndj\xf3oV\xd5\xe7\xb9\x9eW\xce9Y\x13F$\x98%\xea\xabz\xae\xed\xab\xd3\xc6\xafN\xc9v\xcb\xdc\x86\x95\xa0\xc8-br\xa5\x9f\xf5\x14\x1d\xdb\xa7\x06\xb6O\x8b:\xd5\x14<\xca\x08\x02\x04gL\xaf\x95\x86\xbb\x10`\xa9\x89\xac\xf7\x04!I\xb3$\x98f=\x92\xaa\xdf\x1f\xba\x03\xbc\xadDZ\x08\xec\xb6z\x9c\xaf\xe3R\x81f\x9cD\xb3\x8d\xf6m\x8d\x15\xa6\x91\x9ci7E3Wg#\xdf]\xae\xb8d%\x9f\xfb\x91\xe0&\xc5>\xc3|6\x0d\xfd4e~\xca\xfc\xe2K\xc4\xb9\xf0C\xe9\x86\x1b\x19\x9e\x05\xf7g\xd2LK\xa6d~\x10VS\xe4y`\xdf\xea\\\x99i\xbb\xbc\xe9E\xaa\x99QS\xbc\xad\xe5h\xe9g\xbe\xd5;Y\xc4/2\x94G\x99\xe34y3}(O\xc1\x16\xa9\x18.\x88}@Q>\xaa@%\xab\x82$\xf3\x98\x8c\x01\x80\xcdT\xa1\xe1U\xc6\x9eG \xfc\xfe\xf8\xc3/\xfa\xdb\x05\x062\x06\x89\x06 \x10\x06\xebc\xac!\xc6:c6Fl#\xf0R\x00V\xb6\xdat`\xe5\xeaH#z4\x10\x10\xa1\xcf3\x12\x01\x87\xc6\x10\x0f\xaa\x03\xaa\xe1x}\xca\x8b/ \xf0\x16\x91A\x949\x05a\xce\xde\x04\x11\x15\xf5\xae\x11\"M\xbdkY\x81\xd5\xaf\xfd4\x0e\xda\x1d\xb8#\xfc\xf7\xeb\xf0\x97\xd0\xa3|\xe6Tn4\x15\x9d\xc5kM=\x14\xc7\xc3\xacHoH\x02n\x8f]\x16\xb1\xfe>\xe8\xc03\xcb\x9c\xd1f\"5\xf8\xc5\xd1\xd4o_D\xcdcJ\x06~\x18\xc6Sg\xcbb\x8an`LQ\xb3\x0d\xedJ\xc8\xc0\xb19F\xb3)\xf9\xbd\xaf\xa2\xd4\x9fs\x87\xb3\xa7O\x9f\x82x\xd2\xaf\x82/\x17\xd3\xf9\x98\xf9\x8f]\x00\x9c\x0f\xdf@\xa8\x06x\xa3>\xf7@\x97\xb6\xbaD\x9b\x1fQ\xa5\xaf\nV\x0c||\x04\xba\x0d\xc4\x81\x01\xe2\"\xe1\x83`\xb5d\xf4\xb7 JW|\x9aU~\x0c\xa6y\x9a\xc5K \x13\xa5t\xa6\x98\xa0q\xbd\xe0\xa4 \xd9\xd5j.*\x11r5\x1c\xd6\x88YI\x8e\xe5\xf2\xa6(\xae]\xfa,to\xa0/\xd2\xc6k=rw6H\xa2\xb6\xef\xea\xeeN+nH\x8eD=\xb0\xefC0\xcb\x17\xcb%\x9f\x05~f\x95jH\x05\x0d\x1a\x19I\xbf3\xe6}7\xfd \xe1\xa2\xbb=\x7f\xda\xa0\x9baRw\xc3\x07\xb3x\n\x922{\xb9Uitt\xca\xb3\xd7\nI^\x81R\x83\xcc\xb0\xba\xb0\x12M\xad\xc0\x92D\xc0\xe4]\xb0\xe4q\x9e\xc9\xe8\x88\xdc+\xfd\x1c\xac\x92x\xca\xd3t\xd2\x835\xfc\xf3\x0fEpIy!x \x0b\xa0\xb1m\x1b\x1dQ\x8f\xa6\x07j\xa4\xdc\xfa\xb3p\x88\x0b_\xea\xb1 \xb8\xd8HG\x9d\xa6O\x80\x12u\xb0\x8a\xd3\xecK\xe9@M\x9c6\xf9 X\x8a%\xf9v\x9a\x04\xab\xccj\xef\xa3\x1eE\xc47\xb6\x9a\xa5\x88LJ\x12\x05\xb3nu\xd1\xa6?\x05\xf3W\x94o\xdb\xf4\xeaOF\xeb\x10\xf4\x07\xf7\x86\x12\x02N\xaf\xe7\xb1\xde'=y\xaa(?\x1c\xd5o\xd9UZ\xa1g\xc2qA\"%\x9b~\xbe\xf0\xa3\x88\x838\xdb\x01{J~\xce\xaaY\xee@\xc0}H\x0f\xb8\x11\xb9\x16\x0e\x07\nn\x93y\xae\x81\xa7\x01tb\xbb\x02\x14\x0b\x16\x82l\x0c\x16b/\x8e\x12\xee\xcf.\xd3\xcc\xcf\xf8t\xe1G\xa7\x1c|\xdd\xcc\x07\xd3\x84\xfb\x19\x97\xa2w\xa7\x97\x02R\xf5\x04`\xc0\x8eq^\x90\x00Yd\x9d\xae*\xd4\xb3~\xc5\x8e`\xd9\xc0\xec\xf1:\xe8%E\xbdt+\xc8d\xc5\xf2d\xfc|\x11\x8430s\xced\x9e\x1d\x8fD-\x94m\xabZv\xc0w\x87SI\xed\x9c\x85\xc7\xb6\x8c\x1bF\xea\x11\xa4\x03\xc43=}\xcf\xf8\xa1\xd8\xed\xe0\x16P\xe2G\xb3x\xe9\xc8@\xb5\xc8m\x14=h4a\xcc\x06i\x9c'S.ob\x08\x8c\xd1\x83sI\x1b\xa5\x812\xe9\x93|\x172%A4\xe3\x17\xaf\xe6\x8e\x0f\x02\xbd\x85\xd3\x97\xe9\xa0pq\x14\xd3b3q\x14\xeb\xd8\x9f\xcd@\xd8\xaad\x14\xb0*\xeb\x89NO.\xba\x1el\x7f\x1bC\x10\xfc\x0e\xfc,\xf3\xa7\x0b(\xe9\xf4\x8a\x85)\x052Ig\x00T\x89\x8c/XX\xa43\x96\xf9\xf5p\x93*&\xa1\xf3\\kR\xb5\x8d\x9a\x19/\x97DGy7q\x80\xd1\xe6MF\x7f\x156\xbd48.\x14\\\xea\x10\xb1 \x11\x0f#\xe4>#\xf6DwM\xd0\xef\xbb\xca\x97@Qo\x0c\xaaA\x8b\xdd>\xd3\xec\xbe\x9aW\xa1\xd8\x8fO\xfc\xe9\xfbF_\xe3\xe2\xf1\x93\xd3\x942\xb8S\x0fq\xacU\x8f\xdc\x86\xc2q:A\x01w\xe2\xa4\xae\xc7\xd2~\xdf\x86p+<\xa2\xe9sG\x1c\xa4\x1b\x8c\x08f\x0d\x16%\x18\x947\xac\xdfhd-M6\x18\xa9\x80t\xd4\xa5\x88\x04\x0d\x94\x86\xe88L#\xca!\x19\xebV=p\x85\xad\x8d\xc8N ?|\xf5'K.;p\x02\x1b\x1dW\x8f\xfe\xa8\x81\xa0RW\xa0Y;\x83\xa3\x9e\x04\xea \xack\xee\xbdz\x94\x91u\xd2\"\xbb\xa0\x1e0\xbc\xde\xb2\x1b\xdfRO\xa3\x01%\xf5\xb4\x98i\xd7\x1f\xe8\xd3p\xdd>%\xe3-\xeajw\xd3s\x9d~m_\xa7_\x1eK\xc6\xc3\xef\xa3w;\xd7\xef\x9d\xf8\xbb\xfd\x91\xfb\xd8j\xebM=\xa0\xb0\x0fA\xe4@\xd8{P\x0f\xcdQWJ\xd8\x98\xa3\xa2\x00\x9b\x07\x91\x1f\x86]\xe8\xc3\x0c\xd8\xb9i\x87\xf3\x825\xb7\xab\xe1oM\xb6\xe7\xf4\x8a\x98\x05:/\x94\xf2p^^aW\xf7W\xb3E\x90\xc2\x0d\xd7\x11\x14\xd0\x94\xc0\xba\x11\xc0\x0e\xec\xc5v[\x80\xee\xd7\xa2\x8a\xed\xc3B6\xed\xc4\x17\xadV\x06a<\xf5\xc3\xb7Y\x9c\xf8\xa7\xbc9\xe6\xda\xd4\x07\x02\xd8\xe6\x15\xa45\xda\x19\xd3U\xca\x95\xef7\xc6^\x97>#\xc0\x9c\xac\x97%9\xc7\xc3?\x9e\xfb\x9d\xc8\x1dd\xf1\x17\xf19O\x9e\xfb\x84\x06Y\xff\xd5\xf9^\x1fS\x97a\x9c^\x14\x7f\xc6W \x9f\x82\xe9ZO\xbb\x97g\xf6Wi\x9b(\xd7\xaa\xf5\x9b\x82M\x1b\xfe\x06ycS/\x119=\xd0\x10\xd5\xbaV7>\xb29\xf7f`\x90\xd0\xcb\x12\x7f\xca+M\xb0\x036\x8d\xa34\x0e\xf9\x002\x1d\xf0w\xa4\x92\xce\xfd$B7\xe0\xb0\xf7w\\SL\x17\x17 \xa9\xc9@%UZb\xb5\xadC\xebR\xea\xb4\x86hA\\\xc5\xf9N\x99\\j\x0cw\x86\x96+\xe5[\xbbd\x00\x98\xc0\\\x1f\xa8\xdc\x03\xc2\xa0\xe9\xf7\x82\x12\x890v\x98\xe1N\xbb4%!\x02\xe8\x8b'\x1e\x04\xd1\x82'A&\x1d\xc1\x0c\xc1\xd2C\xa59\x01\x9a\x99\x04\x9a`\xfd8\xd3\x8cF\x9a\xa0\xc5\x007\xf0\x94\xdc\xea/\xa4\xc1\xb6&r\x86\x8f\x1et\x9a\x9fj\xad\xdd\xebT\x1a>\xba\xef\x96f1\xd7\xac\xaf\x19\xd0ti\xa1M\xe3\xbc3\xa4\x02\xe8\x8bt\x8bK\x82\xbd\xf6[\xea\xf5\x89\x92\xaa\x08\xbc\xac]\x1e\xe0\x0c^H\xa2\x9b?\x88\xe2d\xe9\x87\xc17<\x81k\xa9\xa0\x96s2\xed\x8678.+\x95\x0d\xa5G\x0c\x7f\xe0\xa7\x97\xd1\xd4E\xcf\x04\xfe`\x95\x04\xcb \x0b\xce\xc4\xd6\xa7\x8c`\xd8A\xf5\x13p\xb1z\x0b\x0e\xeb\x19\\\xb3\xc0\xaaF\x89m\x17<\x7f\x8f\xea\xb5\xb5vE\xb1\x1d\x17bQU\x13\xf70Q\xbc>\x84f\x8a\xae\x82\xe5\x8f\xb3\xb7\xf5\xc8\x95Q\x8d\x96\x8146r\xf6\x86\xa0\x9f\x19\xcc\x82t\x15\x97\x89\xbb\x90\xb8\xf4/\x9e\x9d\x16i{*M&lc\xcd\x84\xcf\xc1@\x85'*}[\xac8\x81(\xfe\x9a\xab\xa6\x0d\x91v\xf7(D\x02\xa1\x8f\x7f\x92\x9a\xa8\x049\xf30\xd6\x1dbwC'\xa5>J_\xfa/\xd1_\x05\xba\xe8\x00,\x11Get\xa7\nN?\xee\xdcaA\xfay\x10\x05\xe0\xa2\x1a\x1c\x0dq\xf0\xf2\xe1\xc4\xd2\xdfP\x9bQG'0\xd4\x88\xc3\xde\xb6\x0b\x82[\x18c\x1a\x9cF0\xf5\xbb{;\x9d\x88F\xfb'\xac\xfb\xb3Re\x15\x1f&\x17\x18m6\x05h/\x0d\xe0\x9c!z\xa5\xdbT\xbf7\xb7\xb7\xd6u\xe7\xb1\xc60\xec\xb6\x99\xdadz\xe5\x8c\x03Q\xd0=\xb2pi:\x81>pn\xa3\x9f%b?\xa0\xbd\xd2\x0e\xef\xd7\xfd\xdaH\x02Y\xf7\x98$\x03V\xee\xd1\x01+\x05\x9dm\x86\x0e\xe3\xb4\xb3\x81\x08oCUgX\xec\xe5\xe8\x10\x03n^I\x97\n\x15\x9a\xebjtG\xd1\x1b\xc2\"\xfc\xd5J|\x1d\xf3 l\xe8\xca\x9f\xf4\xb4\xe6\xce\xa8\xe5\xcc\x9bbEt\xd8z\xa0\xda =6\xf7X4\xe6\x13\x88\xe9\x81Nx\xc8K\xe5\xb6\xe3\xea\xad\xe0\xf2\xae%\x16\xe0\xce\x90\xf6K9\xbco\x89 \xfcp\xcf\x1d,y\xb6\x88g)Ejw\x0d\xff\xc0\xa9\xe4\xec\xeaG\xa8\x90^\x0cp,\xac\x96\x9cv]6\xf3re\xa0\xa6\xb1\x9a\xad\xd9(\xa0(G\x12\xcb\x80\xd7\x86\x82!1\xe3\x9a\xdf\x80\x05\xa4\xf2e\x90uXX\xc4Q\n\xec\xbb=vVD*\xf5\xd8\x89\xc7\x8e!\xc8\xec\xa1\xc7.0\x9a\x96\xc7\xde{\xec\x99\xc7^y\x10tk\x0e\xe7/\x9a\xe2c\x00\x11y\xa1\x14i\xb9\xdc\xbd\x0b\xf14\xee\xd6\\#\xe8\x1aW-\x10\xff\x02\x9cu\xea\xc9\xae\x07Qq.\x06\xa7<\xf3 \xf2\xcd\xc5 \x15\xaf\x97\xf0\x8a\x9a\x0d\x0f\x02\xd9\\\xa0\x06\xc5\xf5J\xc1\xcc \xe1i\x1c\x9e\xf1$\x85\xe6_\xc9\xad\xa5H\x15\x8b\xfa\x19SA\xf3\xed\"-Vn\xc0\xd2\xb4\xaa\xa0 &\xf9\x10\x1b\xf2+\xf8\x1e\xf8\xbeq\x02\xb7\xec\xd2>n\xd2K\x91\x08\x8aIb\x9b|-f\xab8\x89C\xe0]_Z&\x9f\xf2\xac\x07\xab6@s<\xd7c\xaf\xc9\xe8%\xa2\x0f\xe8tO\xf0LAi\x808-\xe8 \x9e\xe2\x83\xf1\xd6DP\x80\xb0\x9e\xae\xfa\xbc\x8f\x9e\xa1\xecB!bd\x8a\xb7H\x9c\xde\xf3 \x99\xe6\xa1\x9f\xb0 :\x8b\xa54\xc7c\xbd\xe7/\xde<\xff\xea\x8bgo\x8e_\xbc\xfc\xd1\xab\xe7\xcf\xde\xbdx\xf5\xd2\xa6x\x17\xad\x9e:\x01!\x8bA\xa5\x92\xe8C\x03\x18o\xa9'r6^\xa3J2\xf6\xd8s}^R5/R\x89/\xf8\x90*\xfd\xf4\xd8\x99[x\x15\x14\xeb\xa3Q\xe0\x06\xc7gzV-C\xc5\xbb\x02\x8dh\xa3\xae\x13\x14\xa8[\xe2\x90\xc5\xaa\x10\xf4m:\xb2\x97xT\xc7\x97Rf\xc6F5$s=\x1b\x9a\x17\x9d\xbe\xe5IB\x93\x000\x19&\xa6\xa9\xb8C\x8eV\xad\xa6'l\xdd\x93\xfa\xed\x92\x02\xfd\x8e'lyRT\x0c\xab\xd0\n\xa6\xb8qZ\xe3*5\xa0\xfc\xda\xc12\xbd)5h\xe8\xdc-O\xdf8\x16k,\"'/V\xf3\x16U\x82\xf21\\c>\xa9\xfc\x8f\x93\xe04\x88\xfc\x90T\xf8+n}\xc4\x9e\x99\x99\x92\xd5\x7f \xde\x83`\xb7W?\xcd\xb2\xa7<\xebr\x15T\x0e\xf2U\xc1\xe8\xbdr\xb8\x0b\xbb\xdc\x01[\xa2\xb3\x07\x89\x14\\L\x86I\xf5\xcc//\xfct\x8d/[\xe6\x91r\x12o~\n\xf7\xdb._\xb3\x900\x86\xfd\xa5{\xc00\xaa\xfa\x9d;\xec\x12-\xa5\xd8>{\x0d\xbc\xaa\xb4`\xc0\x1f\xefu\xb4\xc0\x9c\x1e\x86\xa8\xa3\x1cE\x99\x83\x006a\xd4\xae\xf2P\xa2\x15\"N(\x83\x80\xc8w\xee\xb0\x13q\xe6\xd3X#\xaf\xe8\x18|\xa5\xd7\x15\xb0q4j?\xb52M\xa0#\x16\x7f!\x10y\x0bz\x0f6\x02\x1b\xac2\xf9y\x91,\xa1TZRA\xfcW\xf0\xe41\xab\x08\xf5i\xdf\x15f\x7f\xc5\x18Glaf\x14\x87\xe1\x0e\x00\xe6\xc8\xd9\xca\xe5i~\xb6\xbe\xbc\x8fMV\xcd~\x95\x05-\x8b\x1a\x883.A8\xe5\xe1\xf1\xae\xe4d2\xe0d\"\xe4\xd1\xfc2\xc6]\xbdC\xeb\xec\xe9\x85\xa8[\xb6&7\xbfj\x93\xacmi\x11\xe4\xa3\xdcTp\x17\xf1\xcb\x00}\xf5\xfe\x9e\x83\x14\xbd\x95\xf5\xe0\xad\xb0\x93\xdd(\x87.\xf7\xdc\x91\xda\xef4\xb0r9k\x02\xa0%u\x8b\xb0\xb3bE\x9b\x82\x97\xc3\x8f\xd6O\x1f\x82\xd8K\xd8\x93\xdd-\xb1\xa0\xa1\xe3\x1210\xe6\xbe\xd9\xff\x95\xf3\xcc#\xfa\xac\x0b\xbfF,\x00\xd7UV\x12\x1b8\xc7D\xae\xa4]\x81\xe3\xab\xd3\x8e\xf9\x15\xd8\x89\x02\xe7\x9c\xca\x83\xbd\"p\x0e\xcd>\xfbE\xca\xad\x1c\xf1w\x86T \x10q$\xb7h\x99\xea\xe2-\xb1\x97\x83`r0\xf5WY\x9e\xf0\xb7\x99?}\xff.\xf1\xa7\x9a(\xa9\xe2\xab\xa3U#\x15I{D\x94wR\xd1n\xf3\x8aphH\x88\x90\xd2\x9a\x90\x89<\x0b\x07N*\xddm\xe5\xb8\xa9I\x8f\xa4\xca\xa9=hdR\x19\xd50\xc2\x9b\xb8\x81*\x1b\x0d\xa6\xf1L\xe0^\x0eWu \x08D\x84\x8c\xea\x9a\x0e\xa8\xd7\x90\xc7\x93j\x05\xdc\x81\xa5\x90\x02}\x85t\xd7.H\xf7n\x0e\xed\x15e\x1e\xc7#\xd6K\xfcozu\x1ae\x96=\x11\x18\xdf\x9b\x9d\xfb\x1d\xcaf\xc97\x97#\xd6\x13\xffz\x06\x8a\xf3\xc1<\x8eY\x9f\xf1\xc1\x89\x9f\xc0\x7fQ\x0eh\x83\xe8\xca\xec\xdc\x87z\xb7,\xb8\xdd5\xa2B5Hn\xd7\x08\x9c`\xd1\x10\x94\x17q\x02\xc3\xe4\xd6c\xdb5\xbe\x1blu\xb9.\xe9\x04n\xb4b\xa4M\x8a\x1a\xedV<|\x9c@\xfc\xd1qBX\x9b\xb6\x9a\xecD\xe8\xac@\xac\xebV\xf3\x0bd\xf8\x87\x8f\x99\xcf\x9e\xb0\xf41\xeb\xf7}y\x85\xadX\xa0\xfe\xc4\xc3\xf8\xd4\xca=Q\xee\x9a\xea\x13\xcd5KT\xe8EHL\xff\x18\xaa\xc3\x87CT\x1dj\"vT\x1e>\xdc\xfe\xd8\xcaCz\x12\x15\x8f\xa1\xf9\x96\xed\x15Z\xf5\x1ex[\xac\xceC\xe3\xa4\xd26X\xb7-P\xa6\x94#\xda\x00\xda\x96S\xbd\xe3\xb2\xd31x\xc3-\xe6\x06\x8fg\xeb\x1a\x9f\\\xab\xef\x04\xc5\x94\x9f\x18\x91\x97\xa6\xf0\x16\xda\xc8\x98\x9ak\x0e\x1c\x86}\xe7\x0e\x8b\xc7J11\x11\xebr\xdd\x10\xb9\xed\xa8)\xd0\xfc\x01\xe2\xbf\xbc.W\xb9s\x9b\xf9A\xa4V\xc3\xee\x0dV\x83\x82\xb6N\xe6\xd7\\+M{]R\xf6Ulz\x1b\xcae\x88Ju`\xf7R\xbe\xeb\xeby\xf38\xee\xdd\x8e\xaa]\x0d\xd3\x00\xa5\xbc\x0es]l\xa8\x1d\x11+\xcae\xf6\xf46\xf5\xef\xb5\xeb\xa4\x9er\xc8N\xe9\x80\xe6\xb4^t\xd5Y\x953\xeb\xaa\xcaY4\xabr\xce,\xaa\x9c\xda\xe7\x96]5>\xa7\xed\xc1n\xab\x15.I\x8a1\x8d\xa3yp\x9a\x83\xf6\x95\xa6\x1a\xbc\xd0\xce\xd2\xae\xaf\x95\xa7\xa4&\xba\x92\x1b\xdf\x164*i\xe3V\x98\xe2X\xac\x87\xb69\x185\x9c\xea\xb8\xd7;>\xe6\x1c\x0c\x07\x0e4\x07s\x90&\xcer\"\xe9rp\xe6\x87\xb9\xe0h\x16J\"sV\xab\xed\xb1K\xd7\xd3\n\xcab\xd1\x98O\xd8\x01\xe5t]\xe6\x88\x7f\xe8\xb1\x0d\xacO!u\x9f\x8dQ\x9b\x9aM\xca$\xe9\xad\xa3\n\xb1\x1a\x8d\x8f\xa6|\x04\x94\xbe\x1b\x94<\xdd'\x98z*\x80\x8a\x95[>c\xb9F]\xee(J5u\x8c5\xe0*\x992\xdah\xb7\x8a\x05\x07;\x02\xba\xaf\xa2i\xe1\xd4\xe7\xf8\xb8#(\xe6\xf3\x11\xf0\xbe]!!\x89\x04-\xe7F`l\xd0hS\xf1\xa7@\xd7\x97q\x80J\xc4r\xc7|\xd2\xa1\x9e\x896\xe8`T\xd46!\xc6\x14\xeb\x1d\xe0\xed71y\xc98\x98\x08\x1e6pY\\\xfa\xe5\x8d)\xb8b\xae`\x94\xb7\x95s*%\xd2\x97(\x98\x8c\x03i%7\x14\x88\x99\x0c\xd2\x15\xdc|\x0c<6\xa4\xee\xee\x81*-)?\x9b4~V\x8ac\xa3&\xeb\xf8\xb6iG \xa2\xdfzG\xf1\xac\xf0j\xd18\xef\x16:!\xb6\xe3\xb8:\xa1\xf6\x19\xa1\xe7\xb1\xd9\x19<\xccbD(\xc9d\xac6-\xde\n\xdew\xcc\xf0\xc8\x92\xb1',\x12\xd3\x9d\xb9,\x18g\"\xb3z\xd91k\xb8\x08\x07\x1f\x8d\xc1\x81\x05^h\x95\xedn=\x06\xc2\x1b\x8b\xca\xd8\xb4\\\xc5I\xa9\xc9!\x1b\x95\xbaTu\xa3\xac>\x96&\x00t\xb9\xb55+\x88\x0b\xe8\xa9\xec\x03c\xedw\x8b\xba\xdc\xc6\xaa~\xaf\xc6\xb0\xdc\xfc\xeb-\xb7\xad\x9a\xbe\xeeU\x84G7\xebK\xa7[U\xbf\x10\xfc\x14\xcf\xaa\x06\x05\x1b\xe6\xfd\x80\xfe\xf5\x81\xf2\xc6,8\x8b\xa9S\x17z\xe2^:u\xe2z\xba\xd8X\xa6N\xe0R\x84g\xea\xe8\xe6\xd0hG\xb8t~\xfe\x01\x85q:{\xdc\xec\xf5G\x19\x8bi\xa1*\x17N\x88\xce\x88\x8bSc5T\xa4\xc72e\xb4\xc4\xf6Y\xfe\x03vS\x8eY\x9e\xa3\xea\xb1~\x1b\x04\xab\x04\xdb,\xf88\xd2=q\xf9\xbdf\xe7\x01\x1a\xdd\x1f,\xfdU\xbb#hU\x81\x1d\xb0\xcc\xe1\xe3\x08T\xcf\xe2\x7f\x15%\\\xe9|\xc9\xc9+Zi\xf3\n\xff\x07o\xbdc\x0d\xc8\xbd@\xe0\xd516O O\xc5\xbe\xa1Zq\x05\xd7u\x12D\xb3\xf6P\xb6\xddg\x16\x8f=\x8f(S9\x9c\xa8 \x85\xff\xd7<\xd5\xc5(\xda\xe0\x10\xce\xfdv\xba\xdd\xe9 \xadD\xcb\xc8\x98\xe2H\xe6I\\\x0b\xc8\xd5t\xdcF\xff\xed\xe0]\x00\xe6p\x0c\x82d\x0fe\xc4\x13\xd7c\x9f\xc6q\xc8\xfd\xc8\x01V&+}.C\x01\xd4\x05\x81]\xf4m\x8cY\x13\xe4<\xdav\x07A\xc6\x13?\x8big\x8e\xc6\\\xca%\xfa\xc8fAN\x1a\x90\x1bK7\xa5\xe5\xc9!\xbd\xfe\xa7\xf2\x9bur1\xaf\xe3U\xa7c\xb5yX\x9e\xdd\xc6a\x94\xc8\xd7\x0f\xa3f.\x1c\xe6\x08\x1f\x8c\x1f\xac'\xf9\xeaQ}\xddET\xb2\xa5V\x13\xcaV]\xd2\xdbF]\x128Z*%\xf3)J\xe6C\xe7B\x06\x08\xbf\x90\x0e\x12\x99t\x19\x0eh\x0e\x13'R\x02\xf4\xf8\xec\x16\xbe\xf2\xaa\x8d[\xfc1\xc0 \xe8\xc2zF\x9c3y\x89F\xaeN4\xf7tN\xb5\x10\xc5\x82\xa4 \x16\xc9\xdb\xdb\xf2\xc2\x9e8\x9f;\xcb\n\xc71t!b\xd9>\xe3p\x19}i\xe1\x86\xf0T'\xbe\xda\xc2\x85W[\xaft\xaa\xe2f\xe4T\xb05\x91\xcb\x96h\xcc\xc7I\x0bJ\xf5\xc8\x91.\xc9\x02\xe6\xa5R3e !\x03\x7f`/\x040\x9f\x1bzdf*'\x9cs\xe8n2\xb1\xc2\x02\xe0p\x02f\xae\xe7\xf2J*\x1a\xd2\x08\x82\xa9\xe0#\x0e\xc8\xe2l~\x02\xce\xc5\x9c\x128\x1b\xc7\x83Y\x1c\xf1\xc7.(\xe0/\xd8\x81b\xe2\xd0\x1a\xf8\x18%&\xd2\x90\xbd\xf8%\xf6ogVHS\x0e=\xb6p\x96\xb02fp\xddJ\x82\xf9\xb0\xfe\xd1~\xdf\x125K\xcc\x1c\x11\"\xa84\xf7\x9c6`\x03@\xe0\xb4\x123\xdb\x1c=\x8c\xd7\x03\xb9]\x0d'\x0e%B\xc8Py\"GZ%\xed\xb3\xc3\xc1t\xe1'\xcf\xe3\x19\x7f\x969[\xae\xcb\x9e\xee\xb3\x07\x0f\xb6\x1f\xed\x82\xc5\x12{\xb2\xcf\x1e\xec\xee\x0c\x1fA\xf9Cp:9\xee\xf7\xa3\x89\xb4g0\xc0y(\xedG\x0e\xad <+Ax&A\xd8\xef\x9f\xd9\x81v\xd6\x82\x8e\x1a:\x89=\xf0\xd4D\xb8\x02z\xbe\xa3\xad\x9d\x1a\x00\x9dS\x97^P\xe40%4\x15o\xd7\x1d_H~\x00\xbb2\xab\xc8\xee<\xb6,/\x89B\x8c\x90\xa2\xe6\x0d\xf6\xf5\x9a\x96\xe2\xd1\x8e\xd4R\\.O\xe2\x10U\x12\x8f\xee\xdf\x82J\xa2v\xc2)\xf48\xb5-\x1e>[\x91\xc3\xb6\xe9vH\xbe\xcb\xdcb\xc8{(8J\xcd\xf9Bm\xf7`\xfb\xb2\x88\xd3\xcbx\x9a\xc9\xee\xd5\x8d:i\xf5\xa22o\xac\x9b>\xddD\x89\xa8\x97\xd9H\xc6\x95Q\x14,\xd9\x04\x953F~\x16\xbfV\xdaM(B\x95\xc0N\xbf\xf3O'\xb7\xc74\xea\xba\x0e\x8b\x8aC!_\xfdZL\xd8\xac\x90\x98v\xd54\xcc\xbbi.V\x84B\xc2d\xfa\xc2\xfa\xed\x90\x1az\xed\x1b\xe8U;\x97\x14X\xb5\x06\x1a%\x8e+=\xda6i\xa5\xeb\xeaf&\xe7`\x81\x9b\x80\xb3(\xbb\xef50}57\xbb \x92\xc0\xc5\x98c\xac?\x8c\xa1q-wF\xe3\xca)\xb4z\x98\x8f\xbb\\\x8f5\x89[\xbd\xb3\xfc\xd6:\xeb\xc3\xcdrP\x04\x01\xf4CG\xf3j!\xc5h\xda^\x0b\x01\x1a{\xa5\x15\xa1\xe0B\xa6ND[ \xce8\xfa\xa2\x0c\xe2\xe8\xf8x\xc4r\xf0/\x9aQ\xe6|\xc7\x91\xbf\xe4e\x993\xa7n\x02\xfd\xa1*\x1f\x99:q\xfd\x93\xf38\x11\xd5\x9b\xb1L\x0ez\x86\x8a0\xf87\xc2\x7f\xfb,v\n\x8anHE*\xbf\xdf\xf3\xcb\xcf\xbb|\xccb:\x0e\x8b/cA\xc4R`jgv!\xfel\x9cM\xd0\xd6\xb9\xd4\xdc4vm\xe1\xa7/$\x96(X&\xa8\x06\xd1r\xd0\xa2\xaf\xa7\xa5\x18\x01\xd3\x83\xf49\xc8\xaa\xde\xaeT\xc8\x97Zsf\x01\xd9\xaa\x99a6.\xf7\xb1z\x932Y5$\x7f\x1a\xd5\x97\x82\x1c\xd6\xeaB\x9a\xac\x08\xefF-\x19\x19\xa9VO\xc5N\xc2\x9a\xf2\x97Q7\xe5~b|\x12\x13eM\xfcaV\\\xf1i\xc0\xd3zMLUU\xf1\x17Q7\x0c2\xa3f\x18dE\xbd0\xc8\x8cZ\x1a\x0fP\xab\xab\xe5\xc8\x16\xb4\x14\xa2\x9d\x82S0\xda)r\x8av\x8a\x14\xa3\x9dW\xddS\xdfoT!\xeb\xc2_E\x95j+\xae\xd6\xb1\xd8\xde1\xfd\xcb]\xbe\xaa\xc8\xb7\x031\xdcQ\xf01\xa8\x91Q\xd6g=\xd70 \xad\xfc\x863\xc5\xaby\xd7\xaf\xa6\xb5\x98Z\xcc\x1c\xe5\xbc:\xcaXG&\xaf\x0d\xac\xea\xfa\x89\xfc\x0e-\x1e\x95\x8cw-B<8\xc8(0\xce\xd1;E\xf7\xaa@D\xe8\xd5\xb4\xe7)\x98\xf6\xb0B\xd0^!\xae8\xe3\xafp\xcct\x13UHPM\x94l\xf9M\x1cj\xe9\x02\xda\xdd\xb5=\x19\xa1\xdf3\x108P\x9c\x03\xba\xf6/\xf8\x06\xfa\x1c$'\xeb\xd6\x8dG[E\xfc\x1b\x1bx\xd9\x87D\x93\xab+\x91\xaf\xc7*\xc0\xb2o\x8b\xb2\xe0\xc6\xb4\x1e\xca\xe0\xce\x1dV-2\xae\x16\xaa\xce\xfcm\x0cYM\xa0a\x12\xa5>U]\xc6`K\x81\x12\x88.\xcb\xb8\x10\xc0V\x17\xb2\xe3\xae\x8d*Uk9\xee\x02x\xe2_,\x04\"gg\xb8}\xed\xa1\xd8\xdd\x06\xfdR\x0d\xb2\x12\xf2|\xbd\x01\xa6\x86CqX\x18\x88\xe6\xa6)\x88\xf2\xcf\xa1\x1d)\xb0o\xa2R\x0d&\xee\xedY\xcc\x9e\xe9^`\xd6\x1d*\xc1N7O\xef\x01\xb1XR\x9e\x91\xd7g\xe1\xaeQ-\xea\x9d8\x12\xd1\x91\xa4\xa0t\xe2\xf0\xc1)'.\xd3i\x01R\x07)\x071a\x06/\xfbP'\xe5\x10\x9d\\\xdenC\x15\xa0\xfa\x81%\xf0\x07\xdc9\x93\x01\x8f\xb0\x90\n~$\xca\xe0\xad)\x88\xd1\x0d\xfd\x94\x1f\xc8\xd0\xc1Dv;\x14k\x8d\x89)\x04 J\xdej\x1eb\xb5\xa0\xff\xbd\xff\xbeW\xcd\x97\x87\xa2\xfd\xf2\xd20\xc8e'\xeec\xb6\xb9\x99@D\x9f\xfe>\xeb\xfdw V\x00q4\x89 \xd9\xf77j\xb5\x19\xea\xf7%Ik\xbfB\xd8\x12\x95\xc3\xcb\xf0\xd6`\x82\xf2{A\x02\xb8\x18h\xac\xc2<\xe1@\xb3q\xbf\x9f48\xf61\xd0\xb5\xcb>Q\x8b'\x7f\xcb\x17\x18\x86\x86\n8\xae\x8b\xf8Z\x00mc\x1f ]i\x06*)3=\x82\xd3\xbc\xdd\xc5\x8beA7\x9f\xe6\x99f\xc2JwG=\x01\xd8\x8bZ\xb3}\xeb\"QOPD\xdf\xf2\x8b\x15\x13\x8c}\xb8\xba Fe\xaf%>-J\xda\x06\xc0\x14>>f1{\xc2|\xb6\xc9\x86\x8f\x9b\n3\xd9\xb0t\xa7\x07\"\"\xb9?\x04\xa0\xed\xe4\xe3x\xe2j\x0eW\xad\xdd+Z\x83.\x0e'\xa0C\xe9\xf7ckaS\x05\xa9\x1e\xf9\xad\x96>\xb1\x03\x15\x8eN~N\x81\x8fl\x97\xfe\x9a6*#\x9f\xb8M\x9eV\xd0\xc8jo)\xd0(@ao\x03\x1a\xe5\xcdh\x04\xd2\xc4\x8eh\x94\xba,\xc7\x10\x0e\xfd\xbe%\xf0PK`\x03@\x1ah\xe3\xeaJ\xbe\xec\xb3q\xe3DS+\xb3\x9ao\xcd\x9e\xc8\xab{\xe2;\xf2V\x9c\xc4\xd4M\xe9\xfc\xc3 \xcaI\xcfa\xd2c\x81\xf6h(\x1b@\xd5-i\xe4\x0e\x19\xa2\xa2\xc7\xf2\xf1P&~\xc4\xae\x17}\x1fN\xc6\x01\xe0\xb8\xff\xf8F\xfdv=\xd5\x18N\xe05\xf0WJ8\xc9p\x8b\xe6P\xd7\xf3\x8e!\xdd\xc74`\xb2\xdf\x8c\xc9\xb9\xb4/o\xc6\xf5\\\xe9\xc1\xad\xa5B\xd8\x0e:\xac\x05\xc9l\xf9\x02\xbb\xec\x8bAT\x81X\x80\xe3\xb4\x0b=\x0d4,\xedNO5\xee\xdf\x07t\xc8\xc7\x81FO\x9bIi\x88\x88\xe2\xa3\xa7&\xec\xebp2\x8e\x01\xe9\x82k\x10\xd6[\xe9Yq\x15\xb7\xe8\x8c\xa8\xaf\x0c\xf7c\x0f\x10Z\xe4U\x92\x1e\xb3\x0d(&\x15\xe0w\xee\xb0P\x117\x176\xdcp\xb0\x8aW\x8e\xeb\xe1\xa4\xc8_n\x87\x96\xd7X.\xda}\x80.\xeb\xa4\xab\x03\x16\xc9\xa7\xe8|\x89\xd9\xfc\x0f\xe8_7\xe0\xca\xaa\x9a\xff\xbd-y?\x11\xdd\xd2\x0e\xc0\xa9\x9dt\xec|\x93+\x89k1q\xfa\xb7\xd79\xca\x81\xc2\x9b;?\xff\x00\x84\x92;/\xfd\x97x\x0b\x91;;\xf7\xbf\xcf\xb3N\xc1\xf5o\xec\xdf\x8e\x1c\xac\xca:_\x13\xack\xf2\xc6u\"y\x1bl\xb1F.2\x0f,\xe1,fpU\xe6-.\xb9\xb4h\x1cwZuU&\xab\xcd\x7fh\x8642\xc1\x03W\x84\xbf\xfa}\xee~\x9c\xbdP\x93XA\x10)\xd8\xf87`\xa0x\x86\xaf\x12\xab\xa8\xf2\x9b\xa0\n\xb7Ct\x08~\xe5#\xd0\x9b\xdb<\x05\xd2B\x06\x1a\xd5#++j\xe3\xe3\x08x\x10%\x83\x1b\x1e#\xad\xbe\xaf\n\x89@\xc1:\xa1\xa142\x11\xbc\x95\x89h\xdc\xa6\xb3\xca6\xddr \xeb\xc434\xb2\x96-\xfd(\x97\xb7\xfc\x8c\xf5\x10\xd6\xba\xd2\xad\xc7\xa9\x02\x9c\xd2\x00i\x0b\xaf\xdcD\x8fY\xae\x81\xb3\xe0\xc0\xfd\xb2\xa7\xa9\xe4\xc0s\xc5\x81\x8b\xbcT\xe3\xc0surH;\x9c\x1c\x9aN\x0d\x96\x13\x03\x9c\x16R\xf8\xe8p\x02N>\xfa\xfd\xbc\x0b\xdd\xbc\xce(\\O}\x06\xce\x11\x99\xc7\x02\xb0/\x10hHxN\xee@\x0b;a8\x1es\x91\xcb\xc7\xc1\n\xb2\x14\x82\x18 \x93\xc7\xbbk\xe3<\x9e\xa1B8C\xb5\xb3\xa6)B$W\xc1\xbf\xe5)\x0d\x91\xdf_\x03\xf9eo6\x1a{\xd3rd\xc8\xf4\xcf\xe7&#\x9b\x13,r^e\x91\xd3*\x8b\x9c\x16,r^\xfe\"Xd\xb3ekO%G,f\xaa#xn\xb0e\xd9 9\xbb\xe6\xf2\xf2t\"nv\xf5\x07\xf4\xaf[\xda\x03m\xbe\xc1\xe9\xcb3;C\xfa\x82\x9b\xe9K\\\x1aY\x1a\x17_R\xdb\xcd\xb7j\xb1\xf5\\\x84[6m\x88\x16!\xe3\x18\xb4\xdcx\x97B\xd3\xb9\xc7V\x1e\xd8WN\xa5\x81\xa21\x1f\x8b\xa6\xcc3\xd0n(\xc7sf\xfe\x12\xf2\x95\x13\xc6*F\x97\xf5\xc0$\xbc\x99\x97S\x9cF\xe9_\x98\xc4\xad\x04|C\xa9\xa8\x0ep\xaf\xd4*\xa9\xa7\x9d\xad0\xe5\xb1/A3\xbb\xb4`\x9f\xb7<\xb69\x14[\xc3\x99\xbc}2/\x9c\"\xac\xc4\x9b\xa9s\xead\xb1\x1c8\x1a\x00\xd9Y\x83\xe1\xf2\x87\x1a\xf8\xe2H\xb9\xe9m\x87]\xe3\xf5v\xf2\x02%+\xcc\xdd4\x17\x05$\xcct\xc3\xbd}6\x9e\x81\xcb\x8aH\x19\xf1!u\x8f\\\xd4\xc1\x01h \xeeM= nH`\x91\x89tb%}L@\xa8|e\x93\xdfbD\xa3\x1e\xe0?\xect\x94\xf2\x15\xbb\x901\x0d`\xbf^\xa0\xf7\x8d\xd2%2\xac-\xf4\x07\x1b\xe0~%\xbd\x19'\x10M!\x8e2~\x91A,\xa6\xe44u\x0b\xfb\xcd\x04\xe3G\xc4\x88)A\x89BbNlq\xa2[I#\x86\xfb\x96k\xab\xcd\x0d\xc7\x19^\x8c\x94F\xe1\xd6E\x11\x89\xa1\xf3jd-\xe9\xffC5\xcf\xb8\x1da\x14\xff\x8c,\x05\x1f\x043\xbb\xe4O\xfa\xc2d\x8d\xf1\xfc\x01\x03q\xbb\x13\xadaOf\xe3\xb4t\xdb\x8b?\xe2R'ct>\x03W\x9a\xa9t\x80\xc8\x0e\x98\xd2\xec:\xe0P\xdcY\xa0\xe0\xdc\xde \x86\xf6lbnG\xb8\xe2\x1b\x8bbh\xe7\x06Q_\x89Ri\x89R\xa9G\xaf\xaeXF6\x88\x8b;\xc9nCI\x14\xc3\xd5/\xc7C\xf5n\xd7\x90\xf5Gk\x8c\xb7\xdc\xb4gr\\\xe8)\xdc\xc2\xb5\xa1\x087wBy\x9b\xd9\xf4\xfeB\x1d\xb6q+\xa6\xa8\x00\x97\xbc\xb4\x94\xb3\xca\xae.U\xb3\x1c\xe2\x03NOp\xc9E\xb8\x00}\xcd\x05\xf9\xb2\xc5\xfd\xcc\x07OR\xd9\xb4\x03\x95\x85\x95#I\xe1\x1adr0=\xa9Q\xca\xc1\xf4\xc4-\x0d\xa0\xc5\xcf\x02\xd7\xf1G4\x08\xc4\x96)\x9d\xef\x001e\xa3\x12\xa9\x89\xeb\xe38\x8a\xc2\x9bu\xfbvA\xb0\xeb\x14\xb1\x9c\x01\xb1\xbc\xba\x02BY\xec\x9c\x0b\xdd\xabv\x95\x84b\xa2FEU$\x19 \x98 n\xb1\xf5^\xb9\xbcn\xa7r\xa2\x0bD\xff5>\xa6\xe8\x0f4\xaa\xba\x13\x0b\x8cl_\x1d\x92\xce\xc8\x9e\xf3\xa2\xe7&\xea\x1ac)~\xde\n3k2\xad\xc8\xcc\xee\x191\x18\x03\x99^\xbf\xc4\xed\xcb\xf4\xba7]\x15K\x8c\x0epc2\xb9\x1dn\x0c\xc5N/[p\xf0\xd8/\xfe\x8fd$d\xb8X\x1fG\\\xfd/\xd2\xdd:[\xabB\x19val\xb5\x0b7\xc6\xac\xc4M\x99s\xea\xa6\x11S\xa62[\xca\xec_]\x0e\xac\x96)\x14T\x1c\xfc\xa3\n\xf2\xb3\x01\x91\x96\xe8k!w{\xac\x0f\xde\x1eX\x9f\xf5\xee*3\xcf3?\x0cfL\x0dv\x19\xcf\xb8q\xf1\x8d\"I \xee\xeb\xb65\x11Z\x02\xf4\xc2\xb0r\xc7/ES1:X\xf5\xa5\xc9\x14\xb1Q%\xf4\xe14\xc2\x8aC\x8f\xcde\x13f\x19\xd1\x95i\xabS&\xbd4`\xee\x98\xb2\xb7Q\x8f\x18BH\x04\x9c\xfb\x12yj\xce\xb8\xf8=b\x9f\xf1\x8cO3>cy\x14'3\x9e\xf0\x19\x13\x88x%\xb0\x8e\xdd)\"sC\xf8\x9e\\t\xcec\xe7\x8b`\xba`A\xc4\x002K\xff=O\x19F\x1fc3hMpC\xf1\x9c\xa5\xf9t\xca\xd3\xf4\xde\xdc\x0f\xc2<\xe1,X\xae\xe24\x0dNB\xce\x9c\xf3\x05\x8fD\x13wu\xec\xbe\x0b\x13\xeb\x1eE\xcf\xe3(\x0df\x80N\x04m3*?\x1c7\x1f\x1b\xc6 \x15\xbd\xc8\x02\x89\xb5N\x0e\x84'T\x9dc\xac\xf0\x96:\xbbh9S$k\x9d)H\x13\x97\x8fz\x8a\xa8\x8b\xa6\xa5\x90\xe0#\xe9\x89\x9b\x14\xb7JOY\x06\x90k\x06[\x86\xe7\xe3\xfa\xc5\xfc\xea\xe5\xf3\x9b\x03\x88p}\xa5NYm\x91\x96\xad\x86*\xe8\xf9\xfdV\xe7Q\x9c\xca\xd6\xbf\xbd\xd1\xe8\xa2\x1f\xaf\xe28\xe5\x15\x19p\xe8\xa6]\xfc\xd3\xa2\x895H\xad\xcd\x89\xa3\x0eC\xaf\xfd4\xe5\xb3B\x10\xa3\x05\x84\xc6K4\xc1\x9c\xcf\xea\xf1\x8cn\x17~{\x86JG\xcc\xf3\xbd\xf1Qt\x94\x1c\xe5\xdb[\xdb\x0f\xe1\xef\xa3\xc9\xbd\xd3u\xc1\xac\xd0_\xcc:\x89\xfb\x85\xc2\xe2)\x1bnm1\xe5\x80.\x93\x0eX\xb7<\xf6\xe8\x11\x1c\x13\xff\xdb\xef\xfc^O\xde\xff\xcf\xd4=iAq\x9b\x97\x8a\xfc\xcao\xbc}\xf5r\xa0\xc0y\xe9pW6?\x04\xc5Fm\x19\xdd.p\xff_\x83\x9cJ\xcf1~\x19G\x9b\xd3\x98'S<\xc6e\xb1DD\x17o\xf2N>\xea\x85\x8d\xdb\x88\x11o\xd3&\x96\xdf\x0b\x06\xb3 ]\xc5\xa6L\x85p\xa9)\xfaV\xb3\x81\x08 6\xa5\xa2\x9dg\xa7]W\xe0\xcc\x03\xa7B\x1e\xab\xf93\x05\x89#\xf8\xe4AY\x0b\xdbg+\xc5\x96.@\x89P,\xd0\xd4\xb2@\xd3\xe2\xc7\x01\xeb\xe1za#\x06\xbea\ny#\xeb\x8b\xcf\x17\x1d%\xf1u\x86\x0e\xd6R\x9e\xbd\x0b\x96<\xce\xb3\xf6sO!\x00\x8aH\xe1\n\xb7\xe9\xbb\xc4\xa7\x06y\x94\xf0\xb9\x18@\xf9\xcb\x81\x88\xa7\xe0UNt\xe6\xce\x1d\xd6\x8b\xf8E\xf6.\x98\xbe\xef\x81u\x90J\x86\x05\xa4\xba)\x12E\xc5\xf5\xfb/\x8f,\xcb\xbasa\xd9\xff3[\xff\x97\x95\xfe/\xb5\xfe\xb7hpj\xf3@.\xfb\xca\xd8f\x18\xef\xbf\xd0\x98\x8a\xb3\x15B\xc8\x80\x0c\xa7 \xa3\xd7^\x92A\x15\x05.\xf1\xcf\xb9\xd8XE\xb3g\x18\x1ct\x7f\x7f_\xcf\xb9\xba\x92Q\xdb\xcb4\xb1m\x0fvvv\xd8\x88M\x9d\xb9\x83\xa6\xe8z>\x1aGmI\xcc^\xb2}\xf6\xf3\x0f\xd2\xaf\xd6\x90m\xb23\x97}\x82\xd2M%\xaa\xa8\x03\x07t\xde9\x05\"\x18\xec\xd5\x15\x83\x01\xb2}\x0dK<\x16\xb4O\xbbE\xda!\x1e\x0d\xaa\xfb\x1aT\x1d\x0d\x84\x9e\xae\xb0\xabl\xa1h\xbb\xe6\xc4\xae\x8b\nA\x08\xe8W\xb1\xb3\x91\xc6\x03\xd2b\xae\xb2\x8c}'@Hu\x12O\x84\x1e\x0b5 \x05\xfc\xa4$\x9c\xa6\xdf\xa7\xea\x1eT\x839\xbd\x0d\xcd\xdaP\x96\xd5\xd1\x96\xdc\x8b\xd0\\I \x01bp\xec,\xbb4\\Ctn`\xb9\xe5c\x88q\xc6\xf8\x8b\xdf\xb7\xb2\x05\x1a\xbe\x98\xd5\x11\xf3\xd1\xda\\\xb3\xe0\xca\xa4\x01\x87\xd8\x0e\x9e\xb2\xb8\xc9\xb7\x08\xbf\x98r>K\xd9\xd2\xbf\x08\x96\xf9\x92\x15z\x8b\x0c\xa1\xf2}9\x1b\xd9\x1e\xde\xdf\xbb\xffpg\xf7\xfe\xde\xf5\xdbk\x07\xe76\xad\x17\xdd\xd5\xafx\x04bG\xee\xb8\x1d\xcb8R\xc4^\x9c\x14{q.\xdd\xc0Kk\xf258\xe5\xe6\x8d\xd8G\x13\x9bf\xc4\xd7\xdd\xfb\x02\x8b0X\x04\x99\xeaZ\xbb\xc1\xc0i\xf9)b\x0b\x12\xa3W^\x11\x0cr\x00\x99\xd2\x1d\xc2m K\xcb\xe46(\x9f\x83\xf6xW\xeb\xae\xb1\xb32\x044q\xf3\x01\xc2F\x9a\xc9y)\xff23\xd3\xa6\xcc\x10\xda*R\x1f\xed\x15\xa9\xc3\xedm\xb8\x0f\np\x02\x18 \n\x8e]\xae&\x02\xdcz\xff\xf7\x1f\xfc~\xafq\x1d\x9av\xef\x84\x1d\x85\x8e\xb1 \x82\xc178j{\x15D\x96a>\xabK\xb5\xea\xbe;\xd1\x05\x87\x1f\xdc\xe2\xc2N\xe4\xec\x0co\xe2\xdb\x93\xf4]/\x1a\xee\x1d\x1f\xf3\xf4\xcbx\x96\x87\xbcW\xa7\xda2T\x90\x1eJ\xc1EY\x0f\xc4\xd3k\xb2UQF\x00\x89*\xec\xb1X\xbd\x96\x1b\xd0\x07\x93\xdd\x08\x1cq\xb8}Pw\xf3\x1b\xcb\xac\xfb\xdb\x10\x95\xb3\xc8S\x1d\xc0\x90cd\x1f8\x12\x99r\x9c\xd2\xef+\xb5Ca\x9c\xc0\xba\x9f\xbe\xf5\x88\xe9/\xc7\x04\xa8}\x87&\x8b\xd3x\xb9\x8a#A\x0e)8\xa8\xe7\xd9j5b\x97\xc5\x0cZ\xcb\xf9y\xb6\x88\x93\xe0\x1b_\xf4\xe4u\xbc\xcaW#v\xd2\xbd\x1a\xff4\x8bF\xecx\x8d\n\xafV<\x81\x8fA\xcd\xf3n5\xd3\x11;l/\xf9,\xcf\x16/2\xbe\x1c\xb1\x8b\xf6\xc2\xa2\xd9C4{{\xdb^:\x16\xc5\xb7G\xecY{Q\x7f\x15\xfc&\xbf\x14}\x19\xb1\xe7\xed\xc5O\xfc4\x98b\xe9\xf7\xed\xa5\xe5\x91\xe4U{\xc908\xe3ox\xba\x8a\xa3\x94\x8f\xd8\xeb\xf6\nA4\x8fG\xec\x8f\xb4\x17|\x11\xcd\xe3\xe7\x18\xd8\x9d'#\xc6y{\x95\xdf\xc8\x97\xabw\xf1k_\x8c2\xebP>\x8e\xc2 \xe2?\xf2\xc3`\xe6gq\xf2\xa9?;\xe5#\xf6\xaeCE\x85]\xe9\x88}\xb9F\xf1\x11\xfbi{\xe9\x02u\xdf\xe6\xcb\xa5\x9f\\\x8e\xd8\xcb\xf5+} A1G\xec\xcd\xfaU\x11~\x9f\xb5W\\\x04\xa7\x8b08]d\x82\xe1\x18\xb1\x9f\xb5\xd7H$\xa6\xa4#\xf6y\xf7\xd2#\xf6M\xf7\xc2\x9f\xc6\xb3\xcb\x11\xfb\xb4\xbd\xc2\xcaO\xfc%\xcfx\x92\x8e\xd8\x8f\xd6(\xfe&>\x1f\xb1\xdfh\xaf\xc0/\xf84\xcf\xf8\x88\xfdV{\xd9\x05\xf7g\xd0\x91\xdfl/\x0bF\xb4\xe9\x88\xfdZ{Q\xb8\xc5\x17e\x82y\x1d\xb1\x1f\xb6\x97\x8f\xcfxr\x16\xf0\xf3\x11\xfb\xed\xf6\xc2\xf38\xce\xc4\xc2\x8c:,\xb4\xcf\x830\xe3\x89\xb6\x9a\x93\x0e\x95^\x0b\x88\xe3t\xc6\x1d\x8aO\xf3$\x1c\xb1\xa0C\xc9t\xba\xe0K\x81\x83~\x87\xc2o\xb1\xb0\xd6\xf7\xbcC\xade<\xe3\xe1\xe1\x85\xbf\\\x85|\xc4\xc2\x0e5\xbe\x145~\x9c\xf8\xab\x95\xf8\xc6\xb4k\x8d\xe7q\x18\xfa+\xb1F\xd2\xaeUFl\xde\xb5h:b\xab\x0ee\x0f\xa3|)\x9b\x9eu(\x8e\x8c\x8e\xac\xb0\xe8P\x01\xcc6e\xf9\xb3\x0e\xe5\x0bg\xf7\xb2\xce\xb2S\x1dd\xb8F\xec\xb4C\xe9w\xc9\xe5\x8b\xecU\x9e}\x9ag\x99 \xeb\x97\x1d\xea|\xe9'\xefg\xf1y4b\x17\x1dJ\x7f\xea\xa7\xfc\x0b\xff2\xce\xb3\x11{\xdb\xa1\xfc\x8fx\x92\n\xde*\xf1O\x97>\xae\xb7\x11;\xe9^\xf1m\xe6/W#v\xdc\xa1F\xb1a\x1c^d#\xf6\xc5z\x15\x80|~\xd5^\xe7\xb5\xa2\xb7\xf0\x91__\xa3\xc2\x8bh\x1a\xe63~\xb8\\\x89\xd9\xfcq{\xcd\xa2{\x10i\xe4\xc5\x1a\x154\xaap\xda^\xed3\xceW_\x04\xd1\xfb\x11;\xef\x00e\xc1\xff|%H\xda\x1f\x1d\xc8\xd7\xe6\xb2\x02ap\xeb\xc6\n\xeaw\x03i;;}\x96\xa6\\p\xf8\x87E\x87\xc8\xd2\x9d\xe4\xd8\xb4\x9frV;K<\xef\xa4F\x88:\xb5\xf5\x9eh\x8b\xd4\x1c\x8dg\x05\xbc\xd9\xbc|M\xcbW\xbf|\x0d\xcaW\xeal\x8az@\xf9\x8a\x87\xbb\xb0L\x88<6-\x7f\xad\xca\xd7E\xf9zV\xbe.\xd5k\xe3\x89\xf7\x15\x87\xe0\x03\x8f\xa8#/\xe6m\xef\x1a\x11\x8e\x8a\xbc\x9d\xedz\x9e_\xe4\xdd\xdf3\xa2\xe5\x14y\x0f\xef\x1b\xf1\x80\xca<\xe3\xf8\x1d\x96yF_\xa6E\xde\xa3\x9dz\xde\xbc\xcc3\xfa\xb2*\xf3\x1e\xd6\xf3fe\x9e\x01\x97\x85\xca\xbb\xbfe|\xef\xac\xcc3\xda\\\x16y\xc3\xadz\xde\xa9\xca{\xb4c\x8c\xef\xb2\xcc3\xc6pR\xe6\x19\xdf;.\xf3\x8c1\x9c\x17y\xf7\x8d\xbe\x1c\x96y\xc3z\xdeE\x99g\xcc\xfb\xdb2\xcf\x80\xcb\xf32\xcf\x98\xf7\xf7e\x9e1\xef\xcf\xca<\x03.\xaf\xca\xdaq\x07\xdc\xebv\x11G\xab6\xcd5\xd9\x1amW\xc7\xceQzs\xa8\xc5\xe8=}\x10\xa0\xad\x1a\x04D\x10\xa0\xadj3b\x1a5w\xc9\x807\xbfU5\xb2\xf5x\xfd]ugDN48\x81\x1eD\x837\xf0\x03tX7#\xd7\x12\x8e\xa3\x00X)\x8d\xb3\xdb\x87.>\xaa\xdd\x02\xb2\xaaM\xf1\xc1\xaf\xf3\x14Y\x11\x8f\x84)\xc3\xf6\xd4j\x82\x10\xaf\xb4F\xf5\x98\x06z\xc2\xff\x8c\xf9H\xf5-\\j6\xaf\xbe&\x13\xc9\xd0\x19\x14&\xc5\x1b\xd3\xd1\x0c\xc6\xc2\x82D\xff\xda\xaalar\xad\xaf\xb54\xe7\x05ab\x9b\xe7\xac5\xd6\x1a\xec\xe4Y\xe5\xae\x1d\xb1s\xdd\xc7\x01n\x96\x06\xb8\xa9\x0c\x106]\xb7_$\xa9\x86;\xb8\xbfg0\x14.\xe7\xac\xa9\xcc\xb93D|\xc1\x83\x0c\x83\x9b\xd1\x1b\x98\xa3!G\xe2\xac\xf3\x00x\xcf!\x85\x97\xb0|\x0e\xcb^\xcf\x05\x8c\xea\xbe\xec\xc3\n&p\xed\xac\xa7\xcbY\x1f\x96\x8c\x8c\xb0\xaf\x86\x10+\xe6^\x99\xf4-\x0e\xc6\xb5p\xf7\xc7A<\x87\x0e:f,\x06!\xbdM\x1d\xd7E\x0f\n\xcd\x10\x88\xb3@\x17\xadi4\xc0\xab\xe8>\xb0\x01q\x8b)Q\xa4\x19\x944b\x924}\x9f5W\xc9%\xa6\xe0\xfd7!\x1b\xd5\x8d\xcd\xc9\xc6\xb3\x9d/<\xc10{6;\xc9\xe3\xc1B\xd4\x89\x9c!\xab\xc8\xa6NyT\xeb\x07\x12\xef\xd0\x19\xed\xed!)\x15\x14\xf5\xd9\xa6 \xac[\xe2\xef\x9e\xf8\xfbTKh?p\xf3\xc46]Y\xc0\x95\x87\xcd\xec\xcb0\xbf\xb5\x88i\xbc\xcb\x9a\x83A\xa0'\xd0\x92$VI\xe8BO\xb8\xd7\x82u\xa9\x14\xcf\xf9zU\x87r)\x1a\xa9\x96_\xf3N\xb7\xab\xe5+A\xe7\xab\xe5KQ\xbe\xe3\x0e\x12ZQ\xcb\xde Z\xbf\xe3:U^_\xf4^\x9d\xda\xb9h\xad*Y\xde\x88\xf2*;u\x88\xb1ws+\xb3\xf2\xc3[\x1eI;\x8e<\x9aT\x82q\x9e\xe0#\xb1\xee\xe5G\xaf\x18\x05\x17/!\x01\xf7\x9c\xdb*w_1\x0f\xa9(b\x0f`\x1fw\xc9\xc5`Q~p\xcc\xd8\x97\x8e\xdd\x04T\xef\xcf\x0e\x8a\xdd\xc9\xc9\x00\xa3\x8f]S\xa7\x8aG\xea\x87QC\xa7\x9cZ\x17\xed\xa6\xa6\xa13z\xe6*\xb9\xcbg\xad\xac\xfd\xe4\x87:W}\xb82\x1b\xc3\x1b\xa2\xe1\x08\xc2\xe5\xbcb\xf4]{>\x8a\xb5\xf8H\xff\xe0\x11\xd3\x0e\xafi\xc8M\xdb(w;\xbbr\xd5\x94\xa7\x9a\xa0\xf7\xe6 \xc8\x9f\xab\xe8\xf7\xa1q\xce\xd7\xf5\x8c\xa5P\xcc\xa3\xe3t\xd6\x0e\x8fi\xa9\x8b\xea\x84G\x11\x1f\xb6p\xa2)\x0f\xa7<\x98\xd3\xa6`\x85 M\xf0\xe9\xe0\\\xebM\x0bH\x83\xcfCt\xa7\xd4/\xc0\xb5\x08xH\x07\xe7\x9e\xbe\xc6]\xb3\xc5-\xa8\xd2#O\x18z~\xcd\xcd.\xd1\xd0\x91\x0e\xce\x93RZ\x8c\xbcE\xa37\xb9\xfc\x08c\xd8\x82|F\x18\x817\xba\xc2\x98\xa5\x0b\xe2[nq\xe4'\x11\xf1.ps4W\x0fDu\x86p\xcd\xb5=\xac=\x8fV\xc4oH\xede\xde\xc1\xea'c\xf2\x0c\x1at:\x9b\x02v\xe8\x14\xfb\x07\xda\xb5\xe2\xaf}tj\x15\x0e\xb2\xac>\x97\x83\xc6\xe0\xa0\xb9\xbd7\xa0aJcG\xf0\x1f\x19\xba\xbap\xdfPo@o\xfd\xd4\x11\xeed\x9d\xa1\xcb\xeb\xb0\xdd\xa6\xd8\xe2\x07\xce\xa1\xd3\x15\xfbn\xc3\xbb$~\x08\xde\x9d\x17\xd0.\x0fI\xcd\xd6\xf1\x83\x13rk\xd8<1N\"\x9cA\x13\x87\x9f\xd8\x81\x13\x9b\xa9\x01T\xf7e#Xp\xfc\x1d\"\xe6'&\x11\xe8\xdc.\xd5\x8f\xde\x95\x07\x9f\xd4\xf8\x8d\xc8\xb7\x08\xaf\xec\x89 O\xec\xa08uR\x94D\xad#\xff\xd8n\xe4\xfch\xd2\x0f\x9e{\x15\x0e\xce\x8d\x01=\xc3bR(`\x8b9\x19\x8e_\xfb\xb1\x8b:q\x19\x98\x99o\xac\xe2\xf0\x03\x8f\x84\x8f1\x8c\x98`\x1e\xe6\xe0\xa7 \x0d\x16\xb60\xba\x08\xe7\x0f\xe8&=i\xcb<\x81\"Z7\x9f\x85\xe77c\x08\x9b9\x93\xf3\xf9X\xcd\xf1\xaf\xfb\x18\xb8r\xf9i\xc7\xb1\xa4\xf9E@\xe0|\x14\x01\x9e\xd9\xf7#\xf1\xfd[\xb2\x01Gy\xbe\x8c/?\xf9]v\xc6\xe4\xe8\x1fr\xf4\x1f1\xfc\x0e\xfb\xd01\x8d\xb7\xdd8\xc5\xf8\xec\x13i\xb1~\x0dk\xf7\xd98\x7f\x8deQy\xbb*\xfe\x11\xb8\xd7O\xac\x1b\xf6RD.>\xe9\x83\xdc\x14\xdd>t\xcf/\xbbn\x1f\xe6\xdc\xd5Jx\xcc\\\xfaU\x17;=\xfaP\x07\xd1\x84\xb7\x9bc\x8a\xfcY!.V\xa0\x1f\x15=\xd7\xe0\xa1\xa8\xbb\xfa\xfc\x107O\x925Ppv\xfc\x97z\xf2\xf2\x92\x84\x8b/\xfc\xc7\\\xf2~\xf8\xeb\xbaV\xf9R\xad\xcc\x19\xc5b@nq\xa5&\xd4\x1d\xbb\xaes\xa2\xc4\x8c\xaa\x8d\x8f\x86\xe3fQP\x8ar\x07\xceJ\xae\x9ak\xd3\x15FWe\x9dtGI\xce\xca\xcey\xb67\x98\x80e\xd4\\\xe3\xd9\xc9jq\xe9\x07\xd9\x18v\x16\x8b\x9f\xe3\nL\xbc\"\x97\x8f\x841k\x80\x7f\xad>K\xd8\xb3S1\x8f\xceH\x0dTS^\xe7\xf2>Bti\xd2\xdc\xcb\xebH\xd6\x11\xaa\x10\xe48\xcd8$\x82\xe8\x18\x89\xb9\xd4\xc1\x84\xf4\xa6\xea\xb8\x89\xdd\x14\xe9\x07\xa8\x98\xa18Q0\x04\xecG\xbc\xaf\x1a\xb9\xf9#\xc6\xa4\xe0\x93#\xf1D\xc5\xe6\x8b\xc1\x82\xad\xb2\x15\xa5\x8b\x08\x0f\xfb\xfb\x80>r\xfc+a\x1c4\xbd\xe1\xbe[c\x0c-R\x9a\xe4\xc2Y\x0c~\x82\x1e,\x06\xbf\xe1\xffx\xbfr\\E\xc8\x0f\x92):)\xbd\x1c:\xcf\xf6\\G%\x15B\xbb\xba\xeb:j\x11\xa9*Xy\xbf'\xa5\x1e\x15rS\x9d\x1a\x83N\xd3\x1aK\xfe\xe8@G\x98@\xd1<1\xf4\x14\x10w\x1d\x1e\x8aD\x8bg50\x15\xc3u2\x06\xe0\xce\xb1k\x1d5.w\xd3\xb0\xc5\xa8n\x9cL\xee\x8d|\xd9Nro_+\x9aV \xe9\x1c\xb3\x86\x1ao\xc8N\x06x\x84\xbb\x03\xdc@\xce\x95\x8a\x15\xb6i\x91 h\x9a\x92\xca\xa9\xea\x0f=N\xb4R\x83\xd2\x92\xbb\xf2Z\xb57\x91\xa8b\xd6\xd8\xf8\xed\x05UIFm\xb9 A4iI\x90\x0f2\x96\x8b\x99\xc5\xbaf\xa4\x9c\x9d\"\xed\xd5\xac\x18|\x01\xf6\xc1\xef\xf5\x9a\x19\xc0\xc4\x90\xb6C\xfd\x88\xec\xc9\x9c\x02\xb2\xbd\xd9\xeb\xf5\x0be\x19\xc3\x88\x96\xa9\x0e\xd4O\x82\x9cE\x92'q\xc8D\x12\x89\x8d\x0d\x94/b'lb\n\x8d23\x084W\x9a\xd2\xd6\xd3eG\x90.\xc6\x03\x1e}\xc2\xf1\x07\xd7m\xcf\x95\x98x\x8d{\xf7[!\xba\x19\x8b\xa3\x07`\xf1\xc3q\xab\xbe\xea\xc5\xb6\x03\x8b2O#\xdd\x82}\x05\xa2\x81\x08\xc0\x1b\xd9V@!A\xf8\xf5KmMtgu\\\xdcuc\x94\xc1\xf2P\x93\x1b\x1f\xb9\xce4\x8f\\P\x87\x9cG\x12\n\xc3\xb1~%e\xb8\xa1 P\x8c%L\x85\x9aT\x03\x12lg\xd4\xa2\x9dt:\x9c\xa9m\xf5!\xd5gd\xc7\x167[\xb6\xc8Z\x19i\xda\x15\xe5\x86\xd6\xb7\x1e\xd4:\xfb\x7f\xd3\xd8\x87xj\xe8i\xfb\x0bzb\xffo5\xf4'\xea\x180N\xe9B\xc4=\xc66\x94SQ\x8b\x91f\xbb\xb1\xea\x8d\\d\xb9\x1d\xc5\x14\x84\x83\xf7Y\x8a.1\xc7\x17 \x8d\xaf)\x06v\x88\x07\xbf\xd1\x8b_\xfc\xb4\xfa\xac\xfc>O#\xad\xbd\xde\xcc\xf0\x91\xf6z3\xa9^o\x86\xce\xb3-\xd7!M\xd7\xf9ZNX\x1ay\xb5\xca+\x19\xf7ui\x13\xf0> \xa5\x00\x94\xde\x88\x90*\xa4\x06\x16o\x00\x9e\x035&\x98\xe6J\xeeE\xd8G\xbe\x9c\xa2\xdd\xc5\x97(\x88\"M\xd2\x0cPEScl4\xc8\xa3\xd5cl\x1c$\x04\xa9\")\xb6\x8d>V/)\xb5\"\x00\xc2\xaf|\xca\xf8\\\x9e\xaf\xbf\x00'qy\"D\xdb\x9a\x90\x81\x0cv\xe9\x04\xd6\x06\xf3D\x1e\x1d\x9fcgH\xae\xfd%I\xa5n<\xff9HR\x12\xceI\x10\x85\x1a\xad\x05\xc6\x7fC\x83\x1ey\xda\x98\x00z-\xf2\x7f\xe5\x15\x1d\x83\x1a\xaeq\x8a\xf2\xe3\x89\xc8\xa5\xadu)|\xce\xad\xda\x8frU\x95.M\xb5\x06\x92\xfa\xdd\xb1\xe0\\\x94\xb6\x8b5\xec\xc3<\xf2x\x94\x1c\x1e\xff\xeb\x94\xde\xa6G\xd1\x9c:]\x9d\x8e\x92\x8b~\x81;\x888\xe5p\xd6\xba\xb0Q\xec\xe3]\x92\x98x)\x8d_\x93\x94\x8c\xaby2@J|m\x00\xb1\x1e\xccI\x8a\xb7\xbel*\x8b\x06\xfc\xd6\x12\xe1\xbc\x0f\xedf\xbb\x16A\x08\xf5\xdd/\xc21\xc4\x06~\x0cS\xb2\xf2\x9d\xd4\xb4D\x80\xfb\x8e\xc7\xb2b\xef\xc1>\x86\xcf\xa5<\xfe\x0c\xcf\x0e\x1a\xa2\x9e\x1c\x1f\x19\xe6\xd4\xea\xdch2\xbd2\x9c&5\x93J_o\xa8\xc5\xc5\xef\x9a!\x8fLA\xae\xda\x804\xd0\xfe\xdaN\x95,\xb0>\xc1,\x8f\xa8\x15\xf1\x88Zq-D!W\x07\xe1ej\xcaD\x06\x8cf\xbapR\x0c\x93\xaaa\xc0\xa2p\xe1/\xb3\x98\\p#\xdb\xfa\x12/i\xda\"\x0c\xa0\xa2\x0djB\xcd\x07\x9e\xff\x8d\xeb\xa87\xa13\xaccm\xd5\x89\xc1\xf2*\xcbm\xa2\x8aNc'\x1e|\x80\x1e\xc4\x83\x8f\x16i^\xa4\xf7j+\xe8\x10\xa1\x9e\x8b$G\xc1\xf6\x82/\x7f\x18\xa4\x9c\xd0\x84\x1e\x9a\xa0c5E]\x08\x93blF\x93\x17\xf1\x1aOH\xe0\xb8U\x11\xd6v H\xe5\xa8\xb6\x82\xee\x1a\x8f1\x99}\xf8\xee\xe3\x12\x91\xd3\x1e4,\xb3\x96\xe8;\"o\xddt\xcf\xcfM\xf7\xca\xe8xbA\xc44n\x8d\x84\x11#\x11\x987\xda\x88n\xbe\xd6\x92A*\x00\xc3\x01E\x93\"\xa1u\x1d\x17r\xb0\xeb\x84(\x9f6k\x04\xdb\x00T\x82\xce\xba\xde&b\xf4\xd9A\xa32\x99_\xc2\xe9*\x15\xbb5+J\x0c\x01?\x88\xe9\x92\x864f\x0c\xd8\xc7,L\xfd\x15\n\xdd\xc2\xa9gIS\xc5\x95\xe7\x88\xach\xe2\xc4\xee\xc0\x0f\xe7\xf4\xf6x\xc1\xda\xaf\xbe\xdcu\xe1eM\xe3\xe5\x83\x08c\xa7\xeb\xae\x809&{\xd1\x0d\xa8\xe0c\xcb\xd6\xb7{\xec\xd4\xc2\xb4\xec\xfa\xb7\x94\xc8\xf9\xc8;\xd5yx\x11}S\xf7~\xb1p\xc6\xeb%\xeb`\x8b\xf7\xb5\xeb\xae\xb6\xa5\x18u\xd6\xeel\xf4;\x0c\n\xa37tU\xaf\xf8`\xd5\xb1\x9c/v\xd95\xab^\xcb7\x91\xdd\x93\xbb\xd5E\x14\xc0D~\x19\xd7\xccVA\x9c5\xfe\xc0O9@\xd0\xbe\xf1?\xffS\xfe\xec\xd6\xeb\xa3\x8e\x92\x87}}[~\xa9T\xa6y3\xc17e\xb0\xc3S\xb2\x14\xef)%\x9a\xb7\xf0\x92*BX\x95\xce\x94zMOX\xf7\x99\x91\x15\x04\xc2z.\x04\xc8\xf0\xa9\xa8\xe9\xb9\xad8w\xc7\xd4\x0d\xecC\x80\xb9\xa6d\x93\x0c\xde\xee\xe0&&\x8c\x99?\xaf\x93))\x03t\x93,Y\xd3pN\xe7')\x89S\x0d\x0c@H\x04E\xcd\xbf\xfa4\x98\x1bj\xa2C\n\x8f\xa9\xe4\x87:\x90\x820\x06\xefz\xd1j\xcd\xf6\x92\xa9\xa5k\x9ePA\xfbl\xa5qC\xc4\xf2)\x995\xd1Bhb\xce\xf4\xc0Z\x16\xbbfI\xd3\x0fr\xe3\x1c/\xf4#\xbc\x83}X\xb2e^:K\xe7\xbd3\x9d\xb9\xbaKS\xf48\xb9C\xb3(\x14n\x85pw\x87I\xb3ej\x91;\xcd\x8blD\x17h\x9c\xad\xde\xf9\x1e\x96~\x95\x028;+M+\xb7\xa5\xfa\x17\x15\xeb\xed\x93>\x9cT\x8an\xfbp2M\x18\x88o1MW@\x90\xc6\xb3\xe5\xfcIb\xa4(\xbf\xf8\xa5\xcf\xd7mp6\xc3\x83\xd2\x19\xb2\x0fW8m\x8c'\xaeu+\xb5!j$n\xe8\xaf\x9cs\xf5\x0d{dh\xed\xde`\xa7\xf9\x04\"t\xca\xe2\x1e]\x0f\xb9'\xcbU\xcb\"\x9f\x0e\xe5\x8e]Jk\xfa%\xd0\"\xf7+\xc4\x8f\x8b*vuY\xd97 \xb2}\xb8\xc8O\xe3\x074\xd6\x9d\xf2\xd3\x18\xf2\x01Ur\x1e\x82\\\xe0+z\xd7\x9c\x8a\x04\x14R35\xa46\xa8\xf9\xaf\xa7\xd2\xa8\xc4\xba\xbe\xec\x94\xbe\xa6qB\xab\\\xb4\xfa\x91\xa3\x83f;>\x91\xd9@\xde\x1d\x19\x15\xd4\xeaG\xca\x06\xe9`\x1d\xadMZM\xf5\x83\x0c\xb5\x98fn\xd0\xc3\x91\x08\xd3h\x84\x1c\xb5\xb8\x91\x92^l\x94\x1f\xb3\xa5\x1c(\x02q\xde\xde\xd0\xd6\x9e\x96Hx|`l\x91\xdf\xf7\xe1\xb4D\xe8\xf4\xa0Q\x0e\x8c1\x9c\xeaW%\xa6 m\xb4\x02\x91\x1f\xccz\xc1\xedp\xe8\xb5b\x9a%\x14y\xf2gBCy\x81;8\x17?B\xf1L\x81'\xffM\x03\xba$\x18\xa5\x84'\x92\xc4\xd2\x15\x86 \x95\xd9\xc0\xba\xa2\x94\xc4K\xa5\xa54\xbe;\x0c\xd3\xd8\xa7\x89\xcc\x97\xec|p\xfb\xd0i\xb0h,\xa2\x9d\xb3uG\x91\x17\xbaiWxo\x88P\xdbCW\xe1N\xb8v\x86;Kux\xea\xb4\x9eL\n;\x12 \x86X\x1d\xe1[i :z\xf0'i\xb4n\xa1\\\x03i\x00\x95\xa3\x8f\x19\xb7\xa5\x0dU\x05H\xd3\xe1l XP?\xb2\xb8\xd8`*}\xd4\x93p\x98\xd0\x01\x1eJ\xf2\n\x86-\x82\xf9eU\xd3\x14_\x93zb\x020\x83\x821\"L\x8c<\xbc\xf5\xe8:\xc5\xa8\xb4\x0f\xc4J\x06\x9c|\xa0v\x00\x156\xdf\xcd\xb4*vL\xa9\xf6\xd5\x8f\xd4J\x0d\xc4\x96\x140\xecC&\xf0\x16m\xc4\xc5NA\xef\x11\xae\x04\xaf\xa3\xba\xc4s\x86\xcc\x1d\x8b_\x85y\xe4\x12\xc5\xfd:\x1aHg\x9d\x0d\x18=\x07\x1fU\x11\xcfacC\x1b\x17B\xfd\\\x8b\x1c\xffU\xac\xf2\x1b\xcc{@H\xb1\xa4\x15\xf2\x81D\xc08\x8a\xc4\x9e$\xac\xb7w\x91\x97\x13\xe8\xd8\xe9\xd2pn3\x1d\x97\xad\xc8W\xe1\xc5>\xe4d\xabi\xa2 &\x8b\xb9kD6\xf4>tQ\xc3\xf1.\xf2\xba\x96\xd3M\xfd\x04\xe5\xd7\x85J\x18\x1bhw,\xe1\x9dm\xd0f\xb4P\xa3\xcc/0=/\x1f\xb0\x02\xb7\xa2\x10\x1d\x10\x9a\xc7\x01\xda\x96\x8b\xb9\x94\xdaV\x8a\x1b\x1b\xfe\\\\z&\xdfs\x8a\x8d\x0d\x7f6i\x1et\x1f\xbc\xa3\x0d\xd4\xfc\x1b\"\xf7F\x1a\xdfA\x92\x92\x94b\xd6\xf4\x1b?\xbd\x8c\xb2T(\xc5\xa2X\xde\x07\xb4Yy\xf8n\x10\xb7\xd6\xb0\x98\xf9?\x84\x84\x93\x8b8[\xa7-l\xac\xe5G\xe15\xed\x94*\xcc)\x95\xf1Z@~r&\xb0B\xa9B\x03\xbf+?\\\xb9\xaa\xa1\x18\n+\x10W\xb6rny-\x96*.-U3VI\"m\x10\xe8\xd5\xcfEL\xc9\xd57]D@}&\xa6)\xc5\xc6\xc5y\x8f\xfa\x02\x99>\xac+}z\xf0\x16Q\x01\x0e\xc8\xd4%\xbe2el\xcc\x17\xac\x9c\x05\xdb\xe5a\xe2s\xd7\xd7\xfc`@-^#wA\xe4\x11K\xfb@\xc4a\x99\xf6\xb11\xc7\xc2=\x8a\xa3W\x1do\x1f\xae]a\x0e,GA\x1d\xf2 \x06N\xbe\xf6\x00\xa4\xff\x16\x1cVi\xc58<4\xcb\xc6\x1fLJ\xf3\xc7\xf6a\x0c\xe2\xea\xa3R\xd3\xc9Y7\xb9\x83\x04\xf3\xc2\xfe\xd6\x98s\xd1D\x19\xc0\xfctf=\x84Q\xbc\"A\xa9\x07y5\xed\xa8o\xa4n\x1f\x0c\x1e\x7fz\xa0/\xfc\xd0O\x1a\xfd\x13\xf2\xda\x05\xc7o'2iNd\xda\xf9\xd3k\x88L\xda\x82\xc8\x84\xea\x8e\x11\xdbKe\x9csL\x0c\x95\xad\x81\xc9\x89\x17)\x8d\x19e\xe9\xa3\xe3\xb8 h\xf0P\xb2\xdd\xca\xdbC~\xfe\xfd\xa0)\xa8\x92\x80d;\xa2\xcb\x8d\x84\xdb\xb2\xa4\xa0\xd9\xb5\xb1\xd8\xb5\xcd\xfd\x81\xa26\x8b\xed\xbb[\xfd|0\xd9d\xab\x1f\xfb\xb1\x0e\x05\xc10\xcb\x11\xf0\x85GG\x8d\x0b\xf2\x03&\xca\x07\x82\xef!iJW\xeb\xb4\xfb j*\xb5\x01x\xe32\xae\xea%\xad&\x82\xea\x0eR\x94\n\xf6\xe5\x91Woc\x8c7`\xe7\xecc\x9adAzDVt\x0c\x0d\x01-\x18]{\x17yc\x83m\"p\x85\x0e?\x9d\xb8\xe2A\xa1\xab9u,\xc4@\x03q\xac\x95VM\xc0J?sy\xf6\xbcA\xcd+q\x95\x9f\xf1\x8a\x9eI\x89\x0fs(\xf2\xe6\x1d\xea\x01Q\xcb\xa7\xe9D\xaa\x82[\xfb\x0e\x11Z\xe5S\x07\xef8\xa7:[f\xb1\xc8\xfe\xe0\xdc\x0f\xaf#\x8c\x02j\xb3\x15P?\xb9\xdd\x80U\x8b\x99\xb7f\x8a\x95(?\\s\xc8\xd6n\xae\x11\x08rm-\xf8 \x90 \xa6d~\x07q\x16\x86~\xb8\xb4\x89\x01E\xabZc\xf9jU\x95\x1e\xe5\x19\xc6\x0d\xd9\xf0\xe5GL\xf4\xadA9\x0e\xcd\x9a\x85\xb0\xe0\x00\"<\x96\x10O\xfd\xe7\x8d*Z\xc9\xf6\x85\xf9\x06m&\xef\xa4\xa9Q\x10\x0dg\xe8\x14B\x18\x064\xd3W4\x96m\xd32\xc8\xca\x08\xe3\xeb\"\xafns\x1f\xa0(\x85\x1a+\x7f\xa9x\x06\x12\x13\nZ\"\x97\xc7\x85Pjb\xc3B\x0d\xdb|\xfe\xe4\x92\xb9\x8a]E\xa3\xcd0+\x90x!q\x92m\xbc\xcb~\x9b\xde\x01\x9d\xa9j\xba@\x07_m\xf0v\xe2C/1\xb6\xa1BU\xc3\x01\x97O\x9d\x82o\xe5\xad6l\x18\xd8\x87\xb9\xbd\x8a\xd4\x17\xdd\xe4D\xa8\x19\xb1K\xdcq\xd2\x9a\x99\x10\xc0\x957 \x13\xb8\x841\xac\xfb \x8e\x8b\x87\"i\xe3u\xa6\xfa\x11I\xfd\xb0\xabvZ06\xc6\xb1\x18k\xe3\x0b_\xb3\x07T\\MrQ\xc3\xc9\xf1\xae\x90Y\xa4ZV\xd2\xad\xc4\x8eX\x06F\xbaV\xfa\x99-}\xd8\x07\xe2\xf6+\xc97M\xc7\xf0\x8d\xed\xc42;S4\xaeX\x8ai\xb5$z\x99\xd7\x89\xc4\xcb\xdc\xb3\x07\x87\xd1v\xa6\x8d\x11\x1c\xda\x0eQ,E\xc3\x08\xdb\x0e\xab\x15\xd0\x0f1\x9e\xa0\xe1\xe1\xad\xed\xe1\x89\xed\xe1+=0\xa6R\x01\x91c\x9d$=\xb3\xfc\xce\xcal\xd8&?\"hg;\xf1Le\x83\x05\x93\x84v\xb2\xadW\xb7j\xee\xaa\x9f\xf0\x95\xc5\x9a\xb4Nu\xd4\xd1\xa83\xb1\x19\x1a\xe4]\xf9\xad,\x8d\xe9\x8dt\xa7W \xda\xc0\xc3A\xc9\xb2\x90\x07\xbc\x8ey\x90\xbc\xa6\xd7@\xe1:n\x1c:\x0dg\x18a n\xc9{Hr\xd5\xd9\xdf\x177Fm:\x04\xe5\xa8\xc9\xda\x13a\x10\xd7\x11 \xbf@n\x1e!\x14pE\xcb=\x8dE`\xa0(E\x03L\x05\x8bV/]\x17&r\x1dr\xef\xa2` \x9e>\xc8\xb8\xa3\xfaI\x1d\xb9\x99\xa8X\xa2V\xaf~~\x88\xeb\xae\xfaI\x9d|\xd3>\xacC\x17\xc6u\x10|\xd5\xd4\x93\xdc$\x01C\xc9'-\x07\xd2j\xc8\xcd\n\x04\xe2d-x/\xb1w\xd2Z\xb0\xf8R\xad\xb6T\x08\x14J\x06\"K;\x87\xa0\x8f{z\xcc\xa8B\x9dv\xb5\"]\x07\xd6\xc8/<\xec\xa6\xd4\x0bL\xe5\xfd\xacF\x11U\xb0\xb9F\x99\x13or\xea&\x0e*\xb3\x92\xb6`\xac}L:/\xc74\x10\x80\xa9^\x1f\x17\xca\xd8\xc2PB\xcc\xd5\xd0e\xaev\xbc6\xd3\x84T\xc3:\xe5\x1d\x943\xd0\x9f^\xd2\\\xa1\x02\xf3\x88&\x10F)\xac\xe3\xe8\xda\x9fS \xf0\x18\xdf\x7f\x0c\xbcA\x93b\xc8\x86\x0b\x9aH}\xdaE\x8c\x90*\xc7}e%\xc5\xa85\xf4\xb9&H\x0bz,\xf1\xcf\x02\x80Hh\xc5\xebK\xac\x81\xa8\xbc\xeb\x89\xf4B\x90Tm\xe0\x95\x88\xe0\xed\x9dt\x8a4D\xe8\x9dfx}!\xe2\x99\xa7\x85B_\xa8\x9b\n\xee\x02\xcf\x95\xb4\xa4P\xb2\xdb\x19\xe8f\xc0\xb3\xcd\x8f\xcb\xef6\xa0@\xbe\xfc|\xd0\xe0s\x1c !\x88#\xc4\xd4W\xab\x9d{lwa\xd1o \xae\x1d\x1e\x03\x9d\x0egu\xf4\xa9\xaf\xc3\x88\x9b\x9ar\xa0\xc9\xcbd\xcc\xc72\x9a\xb9}\xd8T\x1f\xabz|\xa0\xdc\x1d>\xd7\xd2c\xd1\xd6\xcc\xad\x9b+\xa19]\xdan\xce\x1f\xecs\xa6\xea\xed\xd9\xfd\xbd\xf6\xfa,\xcdMR\xa4L \xbd:R\x8e\xbf\xa5F\xf6\xab\xd1\x94\x0d\x03;\xd5\x0f\xac2W\xd8\x87\xa9}]\xb8\xa9G}e08\xacd\x92\x8f9\x10\x8b\xc8N M\x9d\xea\xfd\xbei\xa4\xef\xf5#E\xaaj\xd3\x16\"|\xa7\xc4p\x07\x81\xb4]\xa1\x12|\x7f R\x9fom\x8fJ\xcf_\x1d\x7f<,?/eU\x1a\xbc>|s\xf0\xe9\xdd\xe9y\xb5\x9fQ\xa5\x1fY\xef\xcd\xa7w\xefJ\xf5\xb6wJ\xf5\x82\x88\xcc\xf1\xc2\x94}\xa9>8\x08\x82\xfc\xd9\x01\xe3 \x8a\xc7 Y\xd0w\xf2]\xf9CWA\xb6\xa1\xfcV\xab\xcd\xb3\xd5\x1a\xb95\xf6\xa5\xfa\xfek\xf9P\xfeP+\xfc\xf5\xe0\xfd\xbb\\q-`\xb0W\x9a\xdb\xfb\xb7Go\xdf\x1f\xbc\xb3-G[0Z \x98x\x84\xbb\xedv\xd9\xb7n\xe9\xd9\x9a\xc4\x18F\xd1w\xba\xf8\xb5\xfc\x14\x93\x19\xcb\xe7\xe2G\xb9\x06\x99\xcf_\x95<\xa5|\xa7[.\xeb~\x93M\xfc\xb4\xea\x06\x1d\x15\x00-\x95\x8b\xb4Z\xdb\xfaDq\x08\xbdRyV\x80\xacT\x9eh\x9cE\xad^\xa1\x01F\xbd-\x15y\x18\x07\xbaL\xaba\x1f\xb6\xcaE\x0c\x81\xb6\xcbE\xf3z[\x97\xf5\xb6\xae\xebm\xad`\x1f\x9eL\xcfn\x87\xc3\x8d\xb3\xdb\xe1\xd3\xb3\xdb\xe1\x8fg\xb7\xc3Wg\xb7\xc3\xc3\x8d\xb3\xdb\xd1\x9b\xb3\xdb\xbd7\x1bg\xb7O\xb7\xcfn\x9f\xeen\x9c\xdd>{s\x96\xbdy\xf3\xe6\x10\xff\x7f3\xbb\x9f\x9ee\xaf\x9f\xb2\x97\xb3\xd7?\xbey3s&\x1dV\xf2\x8a\x97\xb0\x1a\xee\xbd3\x19O\x7f/W\xbb\xff\xdd\xadT{R\x1e\xd6R\x0c\xeb\xe9\xceY\xb69\xdc|\x8a\xff?\xab\xd6\xba\xc3Z\xfd\xb3\xe9\xd9\xec\xec\x1fg\x9f\xab\x8f/\xd8\xe3\xdf\x9d\xc9\xb8s\xdf\xe9\xdcw\xa6d\xe3\xefg\x1b\xb3^\xc7\xfd\xf3\x13\xbf\\\xf3\xbc\xa89\xfd\xbdh\xcfu&\xe3\xff\x98\x0e7\x9e\x91\x8d\xc5\xec\x1f\x9b\x9f\xef\xf9\xf7\xbf\x9fm\xfc_\xcf\xcf\x9e\x9cM\xc6\xff\xf9h\xff\xacw\xf6\xe7\xfe\xf9\xd9\xa0\xf3?g?<>s\xce\\\xf6\xf6\xcc\xfd\xe1\xcfO|\xddYqc<+F\xc3\xc2\x8an\xb4\xc5\xbf+\xd4\xbc\xde\xd4\xa1\xb1\xa9gEK[\x9b-Z\xba}HK8\xbe\x87\x8e\xf5\xc4\xd8\xc3\xf6v\xd1\xd4\xb3\x91\xf2}K\xe9b\xb3\xf4c\xa7E\x87\x1a\xbd\xbaF\xc5,\xc7\xf0\x14^\xec\x0bgI\xf6mg\x0f\x13Zn\xb0\x07cx\xb6\xc7\xca0\xaa\xf8\xd6&\xdc\x0b\x9bF4a\x1c\x0d7\xd1\x9ca\x83U\xea1\xb0\x8cacd\x1d\x98F\xff]\x8c\x82Or\x02\xdd\xb3a\x97\xf7\x9c\x97\xfc\xff\xb0@\xadr\xc1JF\xa3]\xa5(\xc5J\xd5\x82Q\xbe\\\xac(\xe4EjK\xd7X4\xdcT\x8a\x16\xbc\xd6\xb6R\x14\xf3Z\xa3\xa2\xe8\xff\xcfJ\xb6\x94\xd7\x00\x0b\x8a\x97\x1ew\x1f\xc3\x18\xb6\x95i<\xc1\x11\xaa=\x9d\xb1\x92=e8\xff\xe7\x7fc\x9d\x1d\xa5\xe4\xff\xc6:\xeaL\x91*\xb0\xd2\xa7\xc3J\xe93V\xda\xedZ\x17\xe1\xc0\xb8\x08\xb8\xfe\xbb;;[;0\x01\xeet\x87y\x0b_]\x92\xf8U4\xc7\x9c\xa8c\xed\x83\x9d\x9d\xcdg\xbb\xd0\x03\x87!\x0eka\x17^\xbe\x84\x11\xe3uvv\xb76\x87\xe5G\x8f\x18\xbc\xb7\x14o\xd9\x82_\xcb\xed\xe4\x8e\x85\x9a\x043\xee9\x9b;\x8c5\xfb\xa0);\x054\x97;\x85\x17\xb0\xb9\xb3\xfb\x1cN{=\x17\x8e\xa7\xa73\xd8\x87+\xe7\xd4\x85 \x8c`\x0c\xc3>|(\nu\xc4\xe9\xbdV\xc1\xa9\\\x94Dx\xdf\xc7\xc3\x17\x0f\x16~@C\xb2\xa2\xa8,\x0b\xd7Y\x8aN\xb4Q\xe2\xa7huH\x07\x81\x1fR\xb5\x0c6D!:\xd0\x97\xe6^\x1f\xcb[\xedX8\xcf,\xc6i}\xff\x0f\xed\xfbt\x10\x85\xbf\x918\xf4\xc3%w\x8d\xce\x7f\x8a@\x85\xa8U\x12\xed\xeb\x16\x87\xad\xcbQMe\xc4\x18\xb7\x9a\xd1\x99V\xb9{]$\xa4\xab\xcb\x8e\"7\xf0>\xd0\xc15\x8d\x136\x8dG\x8f8$\xba\xf3l\x1d\xf8\x1eF\x1d\x84h\x01\xff\xc1\xba\x84\xb9\x1fS/\xf5\xaf\x91\xc7\xe2IC\xf2\xa4:\xf9\x9b\xe5\x9a@<\xc6`&@o\x89\x97\x06w\xc0d]\x99\x03\x12\xe3E\xb3A\xb0-\x85w\xe0O~w\xd8\xa17\xeb\xb9g\x03\xf9\xed\xcfO\x06\xf4\x96zN8\x1d\xce\xb8\x17\x1b\xef\xc8\x0f\x82\x8dE\x14\xaf\x98\xa4\"\x1a\x04L\xb0I\xa1>Z\xc6\x8e!\x03\xf96L\x9d\x18\xc3B\xe2^\xf1\xcb\xe5\x9b\xb2\x9c\xcf.*z\xcbB>\x13r\x11\x88\xf6%\xccD\x9f20\x1b\xe7?\xe5\xc3}\x081\x12%\x1dx\x97\xd4\xbbz\xe7\x87\xf4\xc7\x98\x92+\x0c{\xc1v\x90\xec\n\x0d\xdc7\x8b\xaf\x7f\x88^\x93l\xcd8Y:o\xe8\xb4\xb4\xba\xd5\xccb\x07?=\x0c]\xea\xb8\xb2iX\xed\xd3\x83\x9f,\x8b\x9d\xdeDE\xc2O\x06\x988\x07\x08\xf2\xc7\xb8\x0e\x17\x83\x94&\xa9\x13\xa3\xa8][\xda\x94,\x81'o\x01g\xe1\xc7I\x9a7\xe8J \x94\xc6\xc0zI\x84\xeef\x90\x92\xe5{\xb2\xc6\xcb[9\xe2\xc7\xe9%\x8d)\x9a\xbb\xc1:\xa6\xd7~\x94%\xc1\x1d\xcc\xa9\x17\x90\x98\xce!\xc9\x16\x0b\xff\x16\xa9b\xf71\xf4 \x86\x1e<\xee*\xc3x\xec\xf6\xe1\x9c\x0f92\x0fy\x1dS\xd6\x8c\x93P/\n\xe7-\xc6,\x07;\x8dg\xb6xr::\xfa\xd1b'\x89\xb7\x0cy>\xb5\xf2\xba\xa2f\x10^\xe8QA\x18\x93Ib+\xdcH\x11q\x8c\xd1\x81\xf1(\x89\xb8\x83\xad\x8fw\xbfB\xed\x06\x11\xbc\x00\x9f\xfd\xe9\xed\xc3\xc8\x15<\x83C\xb0\x8e'\x8e\xb4\x03\x06PW\xf0~/\xf6y|8\x82|\xcfh\xb4=\x1a\x8d\n`\xd3\xdb5\xf5\xd8\x9e\xb8&\x81?\x87\xbf\x9c\x1c\x1f\x15\x11\x0cuv\x8bhp\xb5\xe2\xab\x96)4\x84-E\x92\xc6\x94\xac\xd0\x16\x89\xf8a\x02a\x14n\xacc?\xe4[=o6\xd1\xb6+n=\xd8\xbc2\xd3\x9ai\x96\xecu\xb1d5\x87M\xbc\x7f\xe1\xeb\xd5\x87\xa0\xdc'B8\x1e\xf8 \x17\xfd\x9cP\xc1@\xa1\xaaY\xd1xIaE\xd6k?\\&\xcf\x11\xdb\xc4\xdd\xd6\x1c\x92(\x8b=*.9\xd8&P\xc9\x1aC\xc3\x8c\xaf\x1e\x13\x16\x1d\xc58\xf6\x8a\xdea\xa2\xb7|A3x\x01\x01\xfb\xc3\x17\x14\x9dd\xa6\xd9,\xdf{)\xda&`r!\x1e\x95 \x9c\x12\xb6\xeb\xf9\x0fU#\xae\x03\xcf;\x05\xa3\xd5t\xaa:P\x05}\xf0\xeax\xcd\xb0\x90\xb3MN\xa4\x9e2y\xc4\x11\xf8\x07\xe6\x83N\xc9r|GV\xc1 \x8a\x97\xfd\xcd\xe1ps\x8c\xf0\x13\xa6\xf3u4gm\xf3\xf4\xd2~\xc2\x99\"\xdf\x96\x958\xe0\xe0\xf4\xf0BL\xc2.\x80\x17\xe0\xb1?\x1cv\x12\x17\xfci0\xd3\x9b\xe4!\xf6\xe6\xd5\xeau\xf09\x1d\xfc\x91\xf0\xbb\x95$\x8f\x82\xcc T\xa7X\x13^\xe0p\xbe\x08\xd8\x1e\xc3\x0c_5\xd6i\x1f2\xfe\xa4`\xb0\xca|\x01\x9dK\x14\x83+z\x87!M\xd2i\x84\x17\x7f\xf9\xadM8\x8dfZ\x01(\xb5.\xfe\xa7V\xb2\x94\x102D\x8aMN\xa3\x14JR\x8c\x1c\xf32\x15?{=&Vl d\x98\x80\xa3>\xea\xe7\xa2\xa6\xb5E\xce\xcb\x15\xaf1\x1e\x9d\x83\x87\x00\x02\x16\x9d\x9e\xd8\xf6\x92\x84\x8aSx|\xd6\xc3\xe4C\ng\x8a\x13\x90\x8dY!\xf37\xd3\xd9]J\xc69\x94\x19\xfflSx.\xb2~GZchqyr\xe8D\xees\xd7\xd4Z\xaf\xa7\xb6\xa7\xdd)\xb8\xdb\xb6\xb8he\x08\xf0?\x8f,\x979mz\xd6\xbe\xfc\x19n.}\xc62\x8c\x86\x05#7\xda*\xbe\x8bb\xc3\xb8;7x\x14\xe12\xd6k t>a\xf2\x90f@\xf7!fx\xc5\xd7\xfbm8\xe7\xe6\xcd\xc3\xe7R\x90e\x0b\xa0>d\x95\x1f<\xed\xcf\xba]\xb6!8\xf4b\xba1G\\e$/\xf8c\xcel\xce\xe9\xc2\xf7|V\xec\xe3S\xe4\xfe\x91k\xb3b\xe5\x1b\xc3~\xed\x8bD\xb3r\xc8ZR\xd0q\xb6wpl\xa6\x8d,2\xe7n\xefr[\x01\x0c\xfd$\x84\x96z]\xe81\x82\xdaTe\x93\x13\xc1\x90m\xc5\xad\xbe\x80MC\xff\x9d['u\x1bd\xc8\xbfke\xc0QNjTf\x81\xeb.R\xcc\xda\xcfc\xce\x15\xcf\xe2AL\xd7\x94\xa4N\xf7\x0c\xcdd`\xa3\x94(K\xd7\xf5\x8f\xda\xae\xafE\\A\x89Q)\xd1X\xe2\xf9\xdck2\xf4.\xaby\xb3A\xa8\xa5u\x99Q2M\xae\x11\xeetQ\x08\x95\xbcM1=\xfe\x831\xb8\xf2;;,\x88\x90 \xda\x11+lk\x9b\x93\x13\xfc~\xebX_Dtp5\x97\xbe\x92\xb9\xed\x0c\xfbP\xa6\xffHbY\xf1\xc6\xc8\xad\xef\x96}\x06c\x99\xbb*\x0b\x82v\xa3\xafu\x9f{.\xf0\x0d\xc2O\xdf\xdf\x04q_\xf0<\x1e\x1d\xcc\xce\xc2\xbb\x92\xc8\xe1\x96\xc7\xd7\xa6\xf3~q\xd8#-\xc8\x8f{1\xa5\x97\"^\x8c\x00\xb0+\xce\xb1\x0b2W\x89\x00\x93Z\x08$\xf4o\x19\x0d=\n4Lcm\x94\x80|b\x15\"\x93ji\xa9$\x01\x9dL\xe0\x08\x13\x9c\xd0W'\xc7\x1dd'\xe8\xe0\xca\x0f\xd1\xaaG\x8e\xa0\xdb/6\xd3>\xe3\x0c\x9b\x18\xca_\xcd4*g1\xf95\xbev\x07T1\x9dMq\x8b\x9f&N\xf3\x11P\xd8\x0f\xe8\xdaQ6\x0c\x9b\xbfI\x03C\x84X\xc9\xafv\x18U\xde\x15\x1cP\x9b\xd3\x82\xf1@\xc8\xcfw\xcc\xdcA\xe5\x851lq.)b\xef\x12%\x01g\xb7\xd3\xe9\xb6o\x85\xbf\xd1\xedC\x99\xd11\x98<\x1b\xd9\x816\xdd\xd5^\xcc\xd9\x00\x85\x0b\xd8\xdd4\x1e\xfd\n\xe5(lF\xd8\xecc\x9d \\\xdaem\x86W\xb0\x89Y\x98K\xb04\x9cK\x9d\x80\x10Do\xfc\xf4\xd2\x0f\x81\xc05\x8d/H\xea\xaf\xd8\xcaW\x15<\xa6p \x82sS\xe6\xdb\xb9\xe5\\\\\xbe\x9al\xaf\x11\x98H \x98,\xa5\xceC\x08\x90B\x10\x06z\xeb\x05d\xc5\x11pE\xe2\xab\xa4\x9b\xa7k\xae\xc0\x82\x1dP%\xf1\xa1\x87\xc9\xed\x84bG\x95QCR\xd1\xe9T\xfaL2\xef\xb2$r\xcb\xcc\xe5U\xf4\xe1\xa4\xbd\x1d\xdc\xeb\x0b\xdd\xbc\x9ew\xb9R\xaa\xd0\x15\x18!\xb5\x08\xa2\x1bF.\xd9v\x8d\xe2\xd2\xf8\xcb\xab\xa6#\x7fx\x90u\xce\xf5\xfd1x5\xc0h\x8c\xf6\x1b\xb1\xcb\x03KH\"\x1a\xc3\xb8\xae\x06\x0b]\xa5F\xaep\ng\xa8\xe6\x1a\xb3]*N\x89\xa2\x16+\x93Ou\x8f\xeb\xf2\xb3\xac\xcf\xb5mY\x98k\xd6\x94UG\xcdZ\x88\x9a\xb5\xc7\x98\xda\xdeJ\xbc\x7f6\x13o\x0dY~\xca\xc9r\xf8\x15d\xd9\xcc\xc8\xe8Is\x08\xa2\x86J\x9e\x0d\x03(af\x15\xab\xe5\xc6\x0d\xc5\xc6\xe5\xa2f\xe7\xc4 \xd9\x0en\xd3\xa2\xf6\x84U\xb6M\xae\x03)\xf6cy\na4\xa7\xb0\xca\x92\x02\xdfH\n\x01%I\x8a\xaa{E\xcbV:\xa6\xed\xbb\xa9a\x81\x7fS\xb4a\x9as\x01\xddqQ\x1b\xb6\xea\xc3\xb2\x0fw}\xb8\xe8\xc3y\x1f\xae\xf8e\x94\xe6\xd0~o8\xcc\xff0\x1c\xe6\xcab\x07~\x92\xd2\x90\xe6\xb2\x12\xff\xe5t\xa35\x0d1\xbfx?\xc7~~}\xa3@A\x16\x08~E\xfe\xcc9\x15^\x80jO\xd8Gc\x88u\xc1\x97-\xf8W\x11q\xad\xca\x88:\xefs~\xb5\xcc\xbe\xc1\x84\x03\x01\xd3_\xa9B\xa6\x90:\xf0\xba\xae\xfa\xf0\x85P\x84\x9d\xa2\xf1\xa5\x8b\x17\x1e\xec\x85\xd3\xfa\x19*N\x14\xe4\xa0\xee\xefq3>w\xcb\xc3\x9b\x14\xa3[q~\xec\xbb\x0c\x12\xc6\xd8\xbcn\xfdV \x832\xbfg\x83\xf4\xf3\x1b\x9cS\xf6`-6\x15\x93\xfa\xce1\"w\x0et/'i\x98\n\x80\x1d+}\xb8*\x1f5\xa5{\xc4\x1cR0\x01\xde+\xca^W\x08\x9c\x87\xdc\xb1\xf4\x0b%ob\x96\xce@X\xee\x98%4\xf6YXBr\xcf-\xcf.%Nj\x9f^[\x9f\xae\xacO\x97\x86\x0d\x08\xc2\x8eF\x97\xa7\xf2\x0b\xe4\xc7\x85PY\xb7\x93\x1f3\xa3\xe7\xbf\xf4Vn\x16'\xfbB`\xe6B\x1b\xa9\xf0\xb4\xbb\\(@\x81f\xe7\xa9\xf8~\x7f\xcfhyl\xb5\x84F\xad\x13\xd2\xc1\xb0\x0f^.\x02\x1auP\xea{\x8a\x80\xd7\xe8F\x880n\x03\xb1C'c\xfb\xdcP\xb5\x81\xbfR?l\x84;\xdc\xde\"s\xe1\xd6\xd4y\x85S\xce9F\xc2X\xf8\x94&k\xe2)\xa7\x8f\xaa[\x05td@\x0e\xfa\x8a\xdemp\xd3\xea\x84\xae \xf7\xf0\xc8\xd9\xe9\x8b \xf2\xae\xa4\xd6\x9a\x1d_(l9x\xd7\xb0\xe8\xc3\xbc\x0f\x97}\xb8\xe6w\x05n\x1f\xf7\xc6\xb5\xa0\xd2\xa2\xe8N\x109\x81\xdc\xc8|\xb2\xbf\x97\xf9\xfe\xc57$\xc1\xb7\xc3\xa5e\xf2+\xa6\x04\x88\x97vF\xe9\xba\x91Q2\xe5'a\x80\x17\xe6\xa0\xce\xba\x19\x17\xf8\x9d\xd8\xb3\xad\xbe\xd0\x83sM\xac.P\xbd\x85\xf2\xb1>G\x9b\x9caX\x1beQ\xf9a\x1d\x8e6wD\x8fC\xde\xe3?\xda8\xf4|\x01[\x15\xbb}0\x80\xa1|\xf2\x0b\xfc_[\x19\xab|\xab\xb1\xbd\xda\x06\xbc\xe2\xbe\xb0.\xbe\xf2\x9b4\x8e\xbb\x97%\xdc\xbdVp\x97\xd1\xdb\x1c\x7falR\x1b\xc7\xe6\xc3d^\xf0\x1f\x9c>\x82\x17\xadV\x04.hzC\xa9P\xf8xQ\x10P.\xc0R\xeeD\xc8H\xa3\xc7\xb6\x95H~\xc9\xc5=\x1f\xef\xd99\x9a\x88\x13a\x0dm//@F*%\xf6\xeb\x8a\xd4\xcdU\x0e\xe5\xeb\x84@\xb9N\xf0\n>%Q(h\xa9\x19\xe3\xc2\x97\x05z\x02\xf9\xe5H!\\ \x8ew\x8d\xe4Xj\x9b\xdb\xe0Qe\x04\xba\xb1/\xca$\x9f\xad1\xd2\xb8\x18\xe9\xbc\x874d\xc1]\x81'\x10\xf3{\x13\xac\xc0\x17A\xa9\xc3*\x89\nI\xb5ga\x1e\xde\nI'\xe0\xcc\x1f0G\xd6-\xd6\x1f\xb5\xd8\xb3\x0fQ\x13W\x90\xb1\xaasd-\x9d\xb3\xd1\xa2\xee\x83 \xd9<\xfdn[R]\x15T\xe7f!\xd5$\xf0y\x96g\x0b\x0c\x8a\xab}\xb4\x86Z\xfe9\xf9\xd1\xe9\x01 \xa7\xa9b\x11I\xf3\"\xba\x82\x87\x7f0\xe1\x16\xb7\x08\xa4\x15\xddntP\x04I\xa6\x95\xab.\x8f\x04$.S\xacnW\x12\\b\xf0deC\xdb\xde\xb2N\xbf.h\x89\x1bU\xe22\xfc\xdcg\xe4k\x82+-\x1a\"\xc8\x7f\x8d1\x80\x17\xc7K~=\xcd\x99\x1b\xef2Z!w\xb3B\x86\x92q-\xfe\xc2\xd7[\xe1A\xb3\xd8\x83b\x80\x83\xc4\x83\xbbI\xa0\xbc\xc8\x93ne\xb9\xb3D&\x9d%6F\xbfF\xf1`\xdf\x18\x11\xbe\x8e5\x0c^\x87\x0e1\xea\x16\xac\xe65m0D?\x0ey\xaf\x86]\x9b\xf9\xfe-\x89Y\xc6!X\xc7\x07_3FP\xc7\xd9\xb9q\x88r\xcf\xad\x19\x90aC*\x1b\xce0P\xc5\x1a\xa8j\xe4\xd37\x8d\xbe\x9d\xf2\xc4\xe9x5Y\xe9\x05;\xe4\x1e=\x92\xd6CDc=\xd4\x06b\xe6%\xebxP5{x \x0bdC\x169{\xc1\x1f\xb8}\xb8A\xd4[\xf7z_\xbc\xd9\xeb\xb3\xb3\xe3C\x82\xf3\xbe\xae\x98\xd3TLf\x02\xf4A\xe9\xc1\x1a\xc6\x8c\xb5\x1e\x8b\xb70\xc4\x88\xcc\xf1\xa8\xd8\xe2\x9c\x85M)\x0f\xecA\xed\xcd\xaa\x0fa\x11=\x01\xb6Q\x18\xc7\xb0\xca\xd9\xb8\x96\x83\xe7Zo\xf9\xe6\xc8\xfa\xe6Z\xf0\x8ccA\xed\xd60\xd1M\x17\x90\xee\xd8\xdaix^\x1e!\xb7\x16\xee\x0c%\xe9\xea\x8b\x83\xbbj\xfe\x05\xd5M\xf8\xdc\xfd\n\\e\x9f\x8fB_\xaaj`;\xa3\xb6\xa4\xd3(@W\x8ek\xc9A=P\xbc\xd53'[\xcf\xbe\xfez\x12\xdar\x0bUi!\xc6\xec\xbd\xfb\x9a\x0b\xc76\xe3\xb1\xb0\x1c[\xdc\xa0\xdf\x9a\xf2\x82\xd5\xfb(8\xf6\xd2\x821\xee\xbe\x01,e\x9e\xa5\x00\x8cE\x17\x18\x97\xe6Y\x85D\x19\n\x863\x0e\xa9\xd7\x8d\x83\xb7\xe6\xf9\xd0#1b4\xf6\xe3\xb2\xc3H\x88_u\xf0\xf2}\x94Kt\xfb\xfb\xfb%\xc3\xdfG\x8f\xb8\xf1\xe4\xc4\xca\xefK\x1f\x9f\x82\xe3O\xfcp\x19P\xf8[\x16\xb1\xaab\xedEBJ\xf3,5\x1b\xe9!b\x86\xbe\xd3o\xb1ST\x01\xc3\xb0k\xb69z\xb4P\xd3}\xfb]\x13\xa29\x85v\xd7\xb4\x18\x8fU3\"|W\xb3|\xd0Z\x8a6t\xabC2!>\xaa\xb16e\x9b-\xf6\xa2\xae\xab\x9bvW4\xae\x8a\xfd\xe6}\x98\xeb53\xee/\xca\x90\xfex\x9a\xcd\xdc\xd2\x01\xf3\x01}G\xd4I\xb6h\x11%\x9c\xd1\xa60\x83\xc3`\x93l/m\xa2+\xf1^.\xcal\xc3\x18\x9e\xee\xe4?\x99\xd80t\xe1%\xfb\xaf\xc5]Y\xc4/\xb4}n\xb4\x1d\xb1\xf7\x9eC\xb4\xb1\xe1b\xef\xaf\xda\xc2\x8a )0\xc1f\x1c\x1f^\xbc\x80m\x17z@r\x91*\xdf\x81\x97\xf4\x96\xcc\xa9\xe7\xafH`wiR?*(\x0f\x1c\xbf\x82/f\xbe\x85\xc3RR\x81\xab0\xba \x81&\x1eY\xd3\xdc\xd8\xd3\xd6u}g\xd8)iVPR\xbe\xf5M\x94\xb4\xde\xf0w\xa2\xa4\xf3(\xbbhCI+\x83i\xc1K<\x84\xb4\xeaG\xa1%\xad\x8a\x1aG\xc95o\x0e\xbd\xc6!\xad\xa7\xaa\xdb\\\x87\xd1|\xf1\xdd\x86\xaa\x1a\x1aie\xee\xc4M\xe0n\x85\xf5[\xe7\xc4\x89\x19\xd9l\xd3b}0\x0f2y\n|\x92<\xc8\xe2Ic\xfc\xd8/\x9b:)*\xf5J8\x16\xd5\x10\xf2q\x16\xe6j\x80\xb9\x18G\xc5(N9\x93T5}8\xab\xde]\xd5\xd9U\x86&_j\x8a\x82ZWO\xea[\xd9IiV\xce\x99/\xba\x19z\xdd:^3b1\x88\x9c8\x1ew\xfb\xe4D\x1a\x85\xde\xad\xa7\xc5\xf7\xedM\xa5|\xab\xf8.\x15}\xf8cW\xad\xf4L\xf9\xae\xd4\xd9\xdaS\xea+\xe5\xcfx\xa8\x07\xcf\x8a\xe5x\xe2\xec*\xdd\x0b\xb5\x99\xc7u\xf4\xb7\xcd\xdbHHg\xf7\xf7\xdc\xbe\x8f\xa1y\x8b\x8d\xd5\xcc\xaeD\xe8K^fw\x85\xd5\xba\xd8`\x9e\x95\x0b\x11\xd6\x19\xd6Dp|A\xbfh\x8a\x16\xe1YI\xaf\xb8\xb5\xd3v\x10\xf6\x01\xa0\xafL\x8b>\x9b\xb4\x12\x8dGM1G\xafY\xfb\xc8\xda\xbc\xc1\x8a\xcdV\x10Y\xaef\x91\xd74\x8a\xf1Y\x90\x17p\x95\x89rrn\x8cjw\xd4\xfb\xf6\x04o\xf2C\x14\xf9\xfd\x8b\xb5U\xe2#S:X+\xda\x839\xab\xc0\xe7\xfe\x1f\xdcx\x80\xd1'u%\xc4\xfduI\xe7\x16|{=\x8e\xbe\x14/\xc08/\xc3\xe9gg$y\x191\xde\x0d\xc8\\\xdb\xe6t\xfbp((\x9fS\xae!\x0c\xcd\x0c\xcb\xd1\xe0\xf2`:\x11\xabC\xedtr2\xc2]\x82\x05\x99Y\x94\xe8\xcb\xba\xaeQ\xe1\xacH_ZQr\xf2\xf7\x87@\xa1\xdc\xd1:\xf7f\xc9\x8d\x0d\xba\x93.\xea\xa6,u\x95\x12q\xb3[\xd8\x81\x15gur\x19e\xc1\x1cmu.\xc95\x05\x12\xdeI\xcbk\xbc\x84\x95\xfe\xde\xad\xaf\xbb\xf3{\xc5Buv\x9a\xcf\n\x8d<\x85\x8dg\xa5i1\xean\xa7[\x14\xe8\x9d\xcd\xba\x93n1S\xab&y\xc9ugw|\xed\x85\x11\xd2\xe9\xdd:OZ\xf7\x1c\x96\xf0\x02\xee\xd8\x1f\xf4\x1f\xb7\xd2\x1c\xe7\xa2\xde\xcet9s\x072\xe0\xbb2u;\x9dPp\xe2b\x90'lW]\xd3\xe4:_\xf0\x1b\xe6/\\\x82o\xbb\x7f\x05\xb1/\xb1t\xe7\xb6`T\x0b\x86N\x19\x13\xbfw\x16\xc7\xdb\x91\xf0\xf0;\x9a\x863\xa9cc\xf4\xf4\x0f\xa1q\xe0\xf44W\x82\x15hZ\xd2<\xfc\xc9\xdcy\x99\x1e\x0c\x15\xd1H\xec\xf7\xc2=\xdfN(\xdaV\xe4\xf1\x1c\xdaW\xdet\xcb\x11]D\x84\x07u\xdc\x0c D\xb3W\x13T\xd0\xadH\\\x8b\xdb\xf2[\xc1\xd3\x8bi\xa2\x9d\xc6Z1N+\x03\xa6N\xa4\x1f=\x82%w\xf0,\xaf\xbd_^{\xc8Cq\x84Q\xb8qp\xf2\xea\xed[%\x9eL\x02$\xa6\xe0\x87)\x8d\xd71E\xc7\x87\x04\xc5\xad<\xe8\x9c\\\xda\xa4\x166\xa0\x85<;\x81\xed\xddf \xbb\x82\x15h\x80\xb0RA\xf1\xa4\xdeP\xa9d]\x1f\x1a\xc5\xa8\x0b\x15\xe8Yxp\x94\xd6\xc3z\x18\xff\xd5\xd1Fa,bAQqv\xa0\xcc\xc3\xce\xc8\xa1\xe4\x17\xf2\xb8v2d\x0c-\x03\xa0\x98\x02\x82@\xc4\x92\xb1Wrhn^\xd0\x87\xdd\x9d\xcd=\x11+U}i(k\xb2r\x8e\x15#\xb7J\xfb\xaeE\xde\xe9\x90\xde4\xdf\xaca\xe6 \\B\xc0DL\xf8[F\xcfds/~\x08\x96G\xd4Id\\\xf6T~\xbd\xbfg27>,\x02Y\xb2\xe7\xc5\xafr\x13\x9c\x13\xc1*\xe2\xeb\xfd=W\xeb\xb3\xa7\x18\xa0\x8a=\x93\x91\xaa\xf2'9\xbb\x86o\xca\x1f\xe5\xb6KB\x8cL\xc2\xcd\x07\x8a\x81\xc0\xfd\x80\xce\xdf\x8a:2\x97 \xe7\xdf\x0d\x95O\xf9\xd3|\xe8\xb8v\x052\x88rE\x171\xccG\x8b\xea\x08\xf5\xa7\xd4H\xa8e\xaa!\x10O\xf7,\xf7'\xf2\x17eB\xcb\x97S\xc3\x04\x86b-\x11\x93\x86\xdd\xaev\xe5\x97s\x93t\xf2\xdc$EZ\x12_3#%$V\x11\x82-\x86\x17\x10\xb1?<\x04[\xea\xf8\xd3xf\xa7-?i7\x9c\xdc\x99\x7f\xd5\xad\x1f\x1b\xb1p\xe8\x96\xd9P4\xfb\x95\xd5\x1a\x89%\x95\xb5$X\xa7C\x8dOA\x91\xc9!r\x8a\x8b\xc3\xfc\x86>\xa7\xa0~\xa8P\xd7>\\d),\xa2\x8c\x9drQL\x1f\x94\xc9\xa1He\xf0K\xbf\x9e\xfa\xe0\xa7\xbe1kA\xd3-D\x8b5E\x94\x89\x07\xf46\xa5\xe1\xdc\xa9\x83\x8fo\xea1\x90\xf2|Xg\x95\xe5\x90\xc8\xf7\x85\x8d\xfdI\xf9\xa9M\xe3`\xa5\xccb6?}\xe9l\xea\xf1\x81\xbf>c\x81.\x98h\xe4\x94B/V\xa7\x81tL\x1c$\xf2l\xb9\xc8\x16\x0bN\xba\xeb$3,\x93\xccX\xfc\xf4\xa2 [\x85\xa5@\xa7\x05\xde))\xd8\x07K\x9a\x9e\x84\xfezM\xd3&\x00\xd7\xcc\xd5\xeb{\xb1\xa3\x0c\xd7U\x95\x06:\xd9\x1bD\x00\xf8m\x85c\xd8\xdb\x11\x11p\xc4\xadKi\xb6\xc2:\x80\x1d\xe7\x1b|?w\xcf\x86g\xf1Y\xf8\x7f\xfe\xb7\x9aU\xa0;\xf0\xc39\xbd=^8\xcah\x90\x8a\x1f\xa4N\xc4\xef/\x0c!\xab\"\xd8@2^\x06\xf2\x06\xf6\x9b\xc2\x13\xd8\xe4\x9c\x87^X\xc3q\xc3`0\x00\x1c|o\x1fv\xf4RJ\x1bw3\x04\x91/ A\xea\x90 \xf0B\xc5\x0d\x85\xbd\xfab\xd0\x10#X\x1c\"\xc8\xf8F\x052-\xa0\xe2\xabP!\x0c\xbe_\x01\x15\x81Q\x99\x84\x87\x98\x00\xe7\xea\"\xee\x8aX\x98R\x02\xaa\xa1\x84\xe4\x95\xa1\x01x\x8f\x07\xcc\xefUkAO\xb3\xe6=\xe5\xbc\xe8A\xf7\xf7\xaeJ\xa0\xd4=\x94F\x9c\xfb\xb5\xe6\xe6UB\xf6u\xbb\xda3\xbe\xd8\xfa\x8caE\x0e\xe2\xb1\x1fr\xe1\xb1x\x86\xd1\x92\x1f\xe3U9\xe3XH\xca%\x186)\xa7\xa0\x04(\xd7\xf5\xd8\xdc\x04%(\x9e\x8b\x02~\x05\x82;\x10\x85r|VP\x03G\xa8\xa8x/c\x0e5\xd4]j\xc9tNi\xbe\x92h\x8ev\x953Em\x9d\x9d\xc6\xb1\xa3 \x87\x93\xa4q\xb7_\x81\xf5\x95\x1f\xce\xc7\xc5}n\xe9Y\xae\x90\x1d7\x98w\xd4t\x9e\x98D\xa2\x94\x8b\x00\xca\x07\xbb\xfb/\x82\x00\xfd\x9b\x11\x02\xb9c\xde\xb7\x85A\x95\xb9\xfe\x97\xc3`E\xd6&\x18\xe4\x8e\xb6\xdf\x16\x04\x15\xd7\xd0\x7f=\x08\xd8\x08\x1f\xb4\x13\xc4\xedA\x13\x00|\x19\xbe\x07Ek\xabm\xf0u\x9e\x8cR\xc8\x01&h\xca\x98\x9d\x8f\x1eA\xf7\x7f\xc4\xcd\x1d\xf2\x02E\xb9\xd3\xc5 \x15\xcf\xbaG\xd5\xdf\x9f\xde\xbd\x13\xbf+\xbcv\xf3R7\xac\xb4\xad\xb9uL1\x10Y#\xe0T\xcc\xc1Q\xdaZ\x8d\xe9:\xa6 \x0d\xd3\xb1\xa6%\x8f\x84Q\xe8{$h\x98\x01\x14\xbdv\xffG\x93J\xb3~5\x12D74\xf6HB\x1f\xd02\xaeK\x9b\xc6\xb3\xf5\xfa\xc1\x8d\xe3\xa2\xb6i\xdc#+\x1a<\xb4q\xfd\xc8m\xeb2\xa7\x0b\x92\x05\xe9Iz\x17\xd01tsxu\xff\xe5\xfb\xfd\"\x8a\xfe\xa9\xfb]c?\xd5z\xbf\x97\xf6u\x1agT\xdd\xc7\xa7\xd5\xdf\x1f?\x1d\xca}\xcd\nv\xd4\x97\x17$HJ\xb5\xdf\xd4\n\x0e\xde\x9d\x1c~)]\xb0m\xe4\x87\x0c\xfc[\x12\x90\xeeT\xa4\x13\xf81\x8a\x02J\xc2\x19\xef\xa3\x96\x9cN\xb2\xa12\x03\xed\x17\x93\x1b\x1dQ0&\xc8\x95\xf6\xa00\x91\x00\x1a\x83X\xa56\xdbXG#Z\xf5\xc5\x81=\x96\xeb\xdd\xa6/\x1d\xc9h\xd7\x97\x9c\xd7\x1b\xc3\xbc\xfe\x1d(\x88)C\xe2\xee\x03\x93\x9c\xd6\xb2\xa7\xed\x14\x03\xd54D\xda7\xb4\xa74$\xbfUI]\xa4#u~\x98\xfe;P:\xae\xb4Q5\xd8Z\xcc\x89\xccn\xf5\xba\xa8\xde \x95'q\xa3ylw\x83\x1bB\xf1[\xd4i4C\x19\xad\xdb\x13y\xdesY\x8eN{\xbdh\xe6\xf6\xa1;\x14\x99\xfe\x8d\xe29j=z\x82!\x8b\x1b=\xbfp\x14\x17\xbcQ\xb5+S\xfb\x90\xbby\xf4z\xa4\x9fb\xe6\xb7\x959\x8ev\xddA\x1a}b\x02\xe9+\x92PG@\xa2\xb1\x9a\x0526\x1c\xab\xc8\x85b*\x15I&aO\x0f\x02\x9f$4\xb1\xe1\xe2t\xb3\x0f\xdd\x0b?\xecjR \xe4\x98>\xedC7\xf2R]\x95\x1c\x8e\xd3\xd1\x10\x13Uy\xbaZ%\x88OG\xbb}\xe8^\xd2\xdb\xee\xf7\xbd\x0b0\x8b\xb5\xe5b_\x08\x90\x1f\xe9\xf2\xf0v\xedt\x7fw&\xe3\xe9Fo6q&\xe3\xe1\xfdt\xb4\xf1l\xc6\x8e\xd8\xf3\xd9\x0f\xae3\x19\x9f\x9d\x0d\xe4/VaJ\x0fgXY\xa4\xc4\x9d\xdc\xe7\x15z\xda\xc7\xc5/\xd1\x8c3\x19\x97\x0f\xf2\xa2\x07^\xf9\xecl\xe0L\xc6~\xb8\xb8\x7f\xcb\xfe\x1d\xbdq\xefyQH\xc2\xfb#rt\x7ftp\xe4\xba\x7fV-\xef1.?&\xedU:\xa7O\xcczB\xad\xf0\xbc\x08\"\xf2]\xc4gU\xbf\xcdoF\x18\xa5u:\xbe\xe0`\\\x95\xf9\xa1S\xd5zo\xf6\xcdy\x1am@\x189B\xd8\x07\xc9G\x08\x03\xe4\x1a;2H\xa3w\xd1\x8d\xdc\xd2\x8c\x97\x80 ;\xc8\xc7 b\x00Og}\xe8\xf66\x94+tdX^\x8a\x13\x86\xdf\xa1\x16\xccH\x1fX\xcdE\xc1{\x08\x0b$\x98\x88\xc3l\xf0\xe1\xf8\xe4\xed\xe9\xdb_\x0f\xcf\xdf\x1e\xbdy{\xf4\xf6\xf4\xaf0\x96\x8f\x8e\x0e\x7f:\xa8>\xea\x0eB\x12\x16\xcd\x1d\x91#\x18CZf1\x04is\xd2/\xe33\xa22\x9f\xf1\x86!\x8e\x95\xd3\x10\xb6w1\xe74\xa2\x07t\x95JN#f\xaf\x9b9\x8d\x10~`|\xf3\x18\xbf(\xa3J\xff\x9dx\x0d\x873\x1b\x9d}\xee\x8d\xa1\xe15\xda2\x1b%Bi\xc2\xf8P\xaf\x1c\xf2\x93#r\xc4\xfa\x82\xe4\xc6O\xbdKp\x8c\xca\x03\x8f$T\xd5D\x8e\xb5\xb5@\x01\x0e\"\x9f^<\xe2\x8d\xe5z\xdc6\x8d\x1d\x1d\x1cY\x1b\xcb\x15\xb5\xad\x1a#G\x1a\x8dl\xe1\xf8l\xdcnB\xeb\xf7=\xa0\xc5v\xfe7\x83\xd6\xdb\xa37\xdf\x0eZo\xc3E\x1bh\xd5)\xd0\xf7\x83\xd6\xc67\x05\xd7\xc67\x85\xd7F#\xc0t\xbb\xbdx}8\x18j\xc6\xa2\x9cKe\xbe\xb7\x0f$\xcf\xe95\x810?\xa6\xba\xb4\xcb\x0e\x14\x1e\x083\xb4\x11\x93\x7f\xd6mC\x8d\xff\x8aj\xfcW\xce\x1e)\xff\xb9\x1b\x8e\xe9\xc7\x9f\xbb\x8d\x1c]c\x8b\x93\xca/\xc6\xbb\x9d\xa6\xb3\xfb)\x9c\x9d\xa5\xb3\x9e[z8V{/\xfd\xe0\x0c\"/\xf9\xc1\xe5\x1c\"\xb6\xf0\x83\xf3\xdf\xf7\x0ec\xc6\xdcj7\xa5\xf7\xdd\x89\xebNJ\xac\\\xab\x1b\xdd\xd4_\xd1$%+\xa3)\xcb7\xe7\xd6\x8a\xb0\xe5\xd1\x80\xdeRO0my\xa9/K\xbf\x03\xbf\xa6\x89\x87b\xb85Y\x0b\xf7L\xfd\xb9\x97\xdf\xe0 \x0b\x96\xcf\xc3\xcd\xb9\xb2b\x12j\x9erW1\xf3>\x8c\xe3(v\xba\xafIJs\x9fZ\xca\xcat\xc1\x99|\x91W\xb4\x97NG3\xce\xfc\xf4\xd2\xe9\xe6\x8c{-\x11\xfesk\xd6\x87N:\xdd\x9e\x15f\xb0\xf4\x06X\x07\x0e\xfbo\xf0\xe9\xf4\x95#\xc0\xa0\xf3\xc3\xf3E\x98\x8a\x1ek\x82G\xa9\xe8\xa5\xd3\x9d\x19\x8fO\xd1K\xa7\xbb\xb3>\xa4\xd3\xbd\x99\x89\n\xa3\xca\x15\x03\xdfN\xf7f\x82+\x1d\xf6a\xcb}\x0e\x8b\xc2\xa7r\xeb\xb9\x0b\x0b4\xf0\xd3Q)l\x87u\xb7\xa8\xd3?\x13z\xa5\xd3g3\x04<[\xb3]\xba\x0d?\x80\xb3;\x84\x1f\x10Z\xc3\x19\xf4\xa0\xe7\xa4\xd3\xd1h\xc6\xd0l(\x95\x80\xb8 \xea\x9b\x1bkW\xc4g0\x82M\xc1\x9e\x85\x8bQ\xd5\x1f=\x02o\x90\xd0\xf4\xd4_Q\xc7\x1b,\xc57\x1760\x88\xa6gCa?LR\x12z\xf4x1\xc6\xeeZph\x96M\xc6\x88\xfa\xdb\x93cA\xd7\x8d\x8e\x00\xdf\x8a\x10?\x90\xcc\xf0\x04\xfc\xdf\x8f\xc4t_\xbcP\xac\"L\xe6O\xdf\x0e\x0c\xc5\xcf4\xbe\xab\x0c\x8b\xc3hg\xdb\x1d\xfc\x88\xb6\xc2E\xaf\xe0\x11dd\xd8L>\x97\x1a\xb4(\x18\xba\x07?\xbez}\xf8\xe6\xa7\x9f\xdf\xfe\xe5\x97w\xef\x8f\x8e?\xfc\xd7\xc7\x93\xd3O\xbf\xfe\xf6\xbf\xfe\xfa\xdf\xe4\xc2\x9b\xd3\xc5\xf2\xd2\xff\xe3*X\x85\xd1\xfaoq\x92f\xd77\xb7w\x7f\x1f\x8e6\xb7\xb6wv\xf7\x9e>\xeb=\xd9?\x0b\xcf\xe2\xee\x03%x\xae\xe4\xf9\x1e+\xf6\xc57\xe0\x06J\x1d5^\x8e3\xfa\xe8\x1b\xae\x88B\x1e\x030\xe4\xbeC\xa1\xed\x9e\xa8\xe3 i'\xb9\xfcK\xa5\x19;\x8f\x06\x08\xbb\xdb\x8d7G)\xbc\x80a\xab\xdb\x1f\xd4\x8b\xefj\x1f\x1b)a\x0c\xff\x01OQ\x01]\xc6\xfb\xaf>:\xa3\xb2\x02cz\x16\x9f\x85\xfb3\xa1\xc60\x03=\xb2.K\x86\x91\x80\xb4\x8f\x12\xf3r\x07\x86;\xa1\xdc\xd3{\xf8\x1c\x18\x94\xc9sH{=\x17R\xf8\x0f4\x05\xe3*\x13~\xa5\x13\x88L\x11\xf0\xf2%\x8cv\xe1\x11l\xee\xec\xb8}P\x8b\x9fVK7wv\xe0\x11$\x8c\xec'\x98\x0e\xe4\xc5\x0b\xd8\x85{\xc8rt\x88$:\xa4\xba\xe3U,\xd1\x10dH\\\x82\x03\xfb\x01v\xf1\x9a\xe6\xab\x86\x04c\x18=\xcdu=\xe5\xb6\x86\xda\xb66E)\xbe*|\x0f\x19h\xd4:\xdb\xf9\x9b1\xa6\xdfX\xc4\xd1*\xff\xe2\x04(\x16 \xbd\xc7\xaf\xdf\xd4~\x15C|0)\x87S\xd0\xf67'm\x11:\xe6n.F\x82b@>\xd2Hk2\x0b\xad1`\xe7V\x05;q\xe7g\xd3\x08\x97\x8f-\xfa\xee\x16\xf2|J\xe9\xa6\xaet\xb7R\xb8\xbb\x05\x8f\x00Mr\xd8\x8c\x9c\x88a\xecS\x17z@\xa7\xa9\xf9R\xb5\x8c\xa0[\xfc\x0e\xf1\x1b\x8f\x08\xc6\xb0Y\xa0k\xa9\x9d\xa1\xae\x9d\xedZ\xe1\x8b\x17P\xedqw\x1b\x1b\x1e\x15\xc8\\j\xb9>\xc0\x17/j\x0d\xefn\x97\xdb\xebC\\F\xbc\xfc\xd7Ws\x10f\x89\xb6\xa6\xff+\x87\x9c\xacs\x08F\x85\xe1\x03\x99\xb4\xc8\xe2\xd1`\xf0\xea\xf8\xca3\xdfd\xcf_\x91\xd7\xb8*\xdcx\x1cP\xdb~\xe3\x97\xd2A\xee%\xccv_\xf8\x9c+\x83\xcd\x1ed\"uh0MgE>\xb0\\]\xcb\x01>\xeb\ny\x15\xd5\xb2q\xb3Q\x87\x88\x89\xe3\x87\x10\xdb\xadx\"\xd1$Jj\x16\x8eB\xd6\xcf\x1a\xbb\x96\x9f/\xb2\xd6A\xe6\xa7\xb9\x0fVM\x98!$\xf9\xa1H\x9a\xc1\"\"[\xb4\xca\xdf\x91#Ny[~!\x83S\xd7O\xfc\xb3\\\x8dZ\xec\xfa/\xdc\xc4k\xe2\xc7\xc9\xbf\xd7.\x16\xbe\xbb\x96\x9dJ\xc4\x8c\x0e\xe2\x98\xdc9\x99t\x81\xcco{\xd8\x16\xce\xbel\x0bg\xb8\x85\xf5[7j\xbdu}\xf4\xe7G\xc3!\x85\xe2^\xd1\xbb\x84\xbd]u\xf17\xb5B\xa6\xe9\x8c\xd12\x7f:d\xe7\x0c\xfe\x9d\xcd\xfe\xe9hoXG\x1dW}]\x0d{&R\xd1\x18\xd6\xd1/\xad#\xd1\xae#1\xad#[-\x82\xab\x15\xd5@\xdc\x07_\xc0.\x12\xb0\x8b\x10vF6\xc6\xff7\xd8\xc1\xe5s\xfb\x81\xfb8\xa1\xc6\x0bt\xbdw\xe1\xf7\xdb\xc4\xd6#\xd6\x0f\xc1\x10\x08L9\xc9\xc2\xbe\xb0D\xccIm8Mg\xd6\xfd\xf2mQ\xdeD\xe9\xff\xed<*\xffH\x9ed\xe1\x9c.\xfc\x90\xce\xbfR\xfbb\x81\xc3\xc3\xa1\xea\xd6\xf2\xcd?T\xa6\xbb\x8e\xfc\xb9\x8c/f\xeb]'\xcd\xd94\x7f\xffn\xae\xd1\x7f$Ob\xba\xa4\xb7\xdf\xe5F\xe5\x01\xca3\x1f\x03\xd5`\xbd6\xe7S\xeeW\xa7\xe7\xb3\x19\x11xr\xf6\xc4\x99.\xfd\xd5\xec\x07\xf7\xcfO\xe4\x05\x87\xbez\xac 9\x00\xd2z\xfa\x89\xd4\xbe\x0f\x8dw \xfc\xc2C\x9a\xf2\x86\xd3\x11\xcab\xf2\x16\xe1%\x93K[\x9c\xd8\xac'4\xeb\x9d\xa6\x85!P\\\xb2 *\x9a\xa9\xb5\xf2\xbd\x8f\xe1\x7f\x0e\xc4\xe56Q\x80\xceo\xe1\xaa\xd0-\x19\x13\xf5\xc1\x001\xbc\xd0*.H\xd3~U\x96\xf9J*\x913j\xbc\x83\xb6&1\x0f%(\xd6\x05a\xb0\xea\x01\x1d$Q\x16{\x14z\xac\xc0\x08X:X\x06\xd1\x05 \xc4\xd5_o\x1f\xbaK\x1e\xb9\xaf\xc8D_\x11\xf5\x9fV\xca3\x9b\xd2\xaf\\5i\xd6.\x94_\x08`\x1f\x9eU\xc8 \xec\xc3\xa8r\xad\xb5\x80}\xd8\xda\xac`\x03+\xdb*\x97\xcdY\xd9v\xb9\xec\x92\x95\xed\x94\xcb\xaeY\xd9^\xb9l\xc5\xca\x9e\x96\xcb\x96\xac\xac2\xbe;\xd8\x87\xed\xcaX.XY\xa5\xdfsVV\xe9\xf7\x06\xf6a\xa7\xd2\xc7!\xec\xc3n\xa5\xbd[VV\x99\xdb +\xab\xf4\xf1\x8a\x81\xaf\xe2\x93x\xc5\xca*\xef\x1e\xb0\xb2\xddr\xd91\xe6/\xacT\xfc\x80\x85\x95^N\xb1\xb02\x95\xf7\xb0\xafA\xfa\xe1\x18\xbaggC\xcdQ\xb4\x87O\x88\xe6\xc9S|r\xa1y\xf2\x0c\x9f\xa4\x9a'#\xdeQ\xa8{4\xc2G\xd7\xbaG\x9b\xf8h\xa1{\xb4\x85\x8f\xaa\x0c\x1d\xfbl\xf2\xa1Wu\xd1\xec\xb3\xb5=\x86\xc7gg\xdd\xc7\x9a\xb1\xf3\xbe\xce\xce\xb4\x9d\xf1\xde\x8et\xcfv\xf9\xd4\xceu\x90\xda\xdc\xe2\xad\xbe\xd3?\xe4\xad~\xa8(\x1a\xcaU\xdf\xb2\xf3\xba{\xd7\xedC\xf7\xaf\xec\xbf;\x9a\xe0w\xf1\xe7\xf0\x84\xfdA\xb6\xb7{\xcc\xff?b\xff\xe3W\xfe-\xc2\xaf\xfc\xffc\xac\xbdX`E\xf1\xe7\xcd\x9b\xeeL\x17U\xe3\x8f:\x9d,\xb4\xb6\x95\xabhn\x82\xb2ou-\xeb\xf3\xc8\x19\x9b;;.\xe7\x85n\xbb<\x80\xeff\xb9\xad\xdc\x1a\x19\xab\xef\xee\xecl\xc9\x172\xf1\xc2\xb6\xe6\x05=\xd7\xde\xe1\x8dlo>\xdb~\xb6\xbb\xb7\xf9l\xc7u\xcb\x11q\xbdhNa\x1d\xf9\xa5\x8c\xb9<\x00\xe2\x8a\xdc\xc9L\x0c\xcb\x98\x92\x94\xc6<\x19\xc3\xf0\xf6\x8d\xf8\xe8X\x07\x1c\xe8'1\xd0\xa7\xe5\x95-\xfd\x92\x87\xde\xd9YW\x84u,\xe28\x0e\xf1\xfd\x8d\\Vv\xa1\xa7\x08p\xba\xc8%G\xf5\xc5R\xa2X\xf3x\xe1y\x98n_\x06\xc9\x961\xa7\xdf\x93\xf4r\xb0\"\xb7\x0e\xa6\x0c\x17\xc5\xf7\xf7\xb0\xe9\xcah\xdfW\xfe\xfamxM\x02\x7f\xce\xdbR~\xab\xa1\xb9\x17At\xf3\x8e^\xd3\x00\x99X?9\x8a\x18L\x97\x0e-\x9e\xb8\xd2\x17I)\x93\xbd\xa4w\x81\x08\xc1]:YMLu=%p\x93Ym\xe1\xdb\xff\x8f\xcf\x06\xcds(\x12\xa2pk\x0d\x9e\x845\xae\xdc\x1b\xa4\xf9\xd5\x0c\x8f\x04\xe0?\xe7ARG\x90\x89\x86X?\xac=\x91\xe4!\x18\xa8>\x97}\xc8xg\x19^\\\xab\x8f\xa6\x19\x1b_8%3\xd8\xaf\x06\xc3\x05E\xcd]\xc6gGA1\x868\xd8b\"\x0d%s\xdc\x89\xe2\xf4\x17z\xc7\xb3\xcf\xe4?\xca\x01\xddC\xfa\x9b?\x97\x01\xd5\xf3_\xf7\xf7\xf0T\x86C\x0f\xa3\x8ft\xc1\xdb\x10_\xd5\x16\xc2\xe8U\xb4Z\x93\xf4=\xdb\xce\xbc\x8eR\xa0\xd6\xf4\"\x86\xdd\xe8zu#@\xa9\x14\xa85\xbf \x84\xbcLOd{\xe5\xf0\xb6\x1cu\x1e\xd3`\x85E\xe4\xfaR\xb6F,\x99g\xec\x0d\x92Ra\xaf\xc0K\xb3\x84\xce_\xabOJ\xb1\xfet4\xe2\xa3v3!\xd2\x8b\xdd\x14\xc1~%\x9al\xea\x8at\xc6\xfc~nc\xc4\xf1\x9a\x8d-Q\x83\xa5\x81\x0f/ y\xeeb\xda\x064`\x97\xd9\xfa\x85K\x1f;\xfb\xc1w\xd1\xec\x87\xfb\x8a\x88\xac\x16\xa2\x83\x04\xb3\xbd\x95\x9e\xb0.ydW\x1f\xad\x86\xf8\xf7P\xd5C\x9c Q0\x14x\xdd\xdb\x87\xc8eC\xec\xedW]\xcb\x04\ngV\x10\xbd\xb6\x85\xe3\xd6\x87\xdb\x95\xe4\xf2\x07H]k\xdb\xef\xea$Z\xca\x1c\x08\xb1\x05\xc3>\xfe\xd5\xbe\x8e\x9f\x8c\x0dmm\x96\xa3T\x8d6wQ~\xdf\x1dU\xc3`m>\xdba\xbf\x18\x87RxP0\x96D\xfc\xba\xbf\x87\x9d\xbd\xad\xed\xed\xf2{\xec0\xdeb\xbfx~\x8a\xbc*+\xdf\xadt=\x1am\x8fF#\xebD\xfef\x9c\x08N\xb1\xd2\x0f\xb6\xcc\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebM\xf1\xf5\xd2:\xac7\xc6a=\xf9\xfd,\xfc\x01dT\x13u\xb9\xe57\xb6\x91\xfe^\x0f<\xf2#cs\xcaE\xbf2Y\xa5\\\xf43\xe3m\xcaE\xbf\x01\x06\x99\xae\x0f\xf2/\xf6\xd0\xebl\x1c\xbej\xe7\xd4\xd1\x84B \x0c\xe5\x0b\xdc\xe9<\xeeG\xfd\xe9{N\x07j\xe5\x8cS\xfd$\x12\x92\x96r\x96TV\x12\x83\xf3t\xde9\xfc0\xca\xb0\xec\xbc\xf8z[|\xbd)\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebe\xf1uU|\xbd+\xbe\xae\x8b\xaf\x1f\x8a\xaf\x87\xc5\xd7e\xf1u^|\xbd.\xbe\x9e\x14_\x0f\xc4\xcc\xcc\x89^49\x1f\xd2\xbaJ(7y\x18r\xba\xaaP\xd9^\xcfv\xb3\xd5\xf9$\xc8\xae\xd2\xbf\xafD\x05\xfaM\xaf\x04f+\xf7\x96\x8d\xfdoZc)\x13\x83\xfd\xc5\xc3\xd4\x0e\x12 \x9f\xe7rd\x1d\xf6a\x01hQ\xcdX\x15\xe4Ya\x03\xde\xe3\xe9\xf2\x92[\xf1vA$\xd2\x9c\xbeg'\xc3\xac\x8f\x88\xe9\x1b\xf4\xdc\xb9P\xc1@\xf4\xb5\x00\xd1n$\x1c%\x0e\xbaq\xa8\x7f2\xb7&\xc6\x85\xdcM\x00\x13\x08\xe1%<\x83\"\xed\xd2o0\xc6\xf2\x9fa\x0c\xbf\xc2\x98\x8f\xb2\x13\xf1\x87\x7f\x871\xfch%m\x7fU\xa8Fu\x85\xe8`\x9e\xadJ\xbc\xb7\xe9.\x84\xdf\xfe\xa6\xd5\xdb\xdf\xee\xe3\xc7\x86\x9b\xd9N\x85!\xe3\xa1\xfd\x19H\xde\x16!\x08\x14W\xd3\xc7\x18\xa0\x1dz\xec\x9b\xfeF\xd9\xcf\xb9\x0b;\xe9\x94\xfc\x17'\xed\xf3$\xc6\xbeH\xdeL\x14\x85\xa3\xd1eY\x80\xb0Q~\x92\x1f)G\xe97\x02\x94\xdcYd\xc0H}\xa6\xd9\x90\x87D\xe3\xd9\x82\xccv\xa8 p\xa2\x9ah6\x9c\xe5\x19H\x15T0\xc5n\x04\xeb\xbd\x0d@\x9e$\xa9\xbe{\x8d\x96\xaf\xe8Q\xfd\xf7F?jM\x06{\x90o\xff\xd8\xf8\xb6\xc0\xed\xc2\xe7\xe51z\xbb<~\xdcuM\xf8\x0e\xb2\xf5_\x9b[\xbfg\xad\xff\xc2\xf3\x04r\xbca\xcd\xfe\xe4|dE\xbe)M\"\xb6\xfess\xeb/\x8d\xad\xb7\xc67(\xcb\xee\xb0\x0fO\x9c\xb3\xb0\xe7:\xd3\xdf\xcf\xc2\xd9\x0f\xee\x93\xa5~W\xa9\x1f\x94\xc9\xb3\x9a|\xe1r\xd9DP\x96\x0c&\x90\xa1\x9aA\xb8U@4\x08H\x92\xbeeo\xf0\xfc\xe0\x7f\xce#\xd3\x0d\xfb\x98\x7f;u\x0d{Z\xfd\xa0\xa8~\x16\xcaP0Ct\xffd$^\xfe6c,\x88\xc9k$l\xf5#b\x0c\xc6\xaa\x0b\xb01\xc1\xa7\xfaam'\xc0\xc3\xbc5O\x04\xc4\xc9\x15O7\x1b\xc6\x0cyJ\x18>\xcb\x00o\x80|\xb6\xd3\x13\xe81Y\x0f\x13\xdc38\x88\n0a_\xc7<\x9f\x1d\xf4\xe0\xcfN\xc0\x85I\xbc\xb5\xb0vf\x8ey \x05*\xfa\xc6J\x9f\x19z\x12\xb7 \xdb\x7fk\xc4\xf6\xc7\x98\xac\xa4\xf9~O~rA\xba\xe0\xca\x85\xa4l\xe4\x91\x84\xce\xb4\xc2\x08\xbd\xe4\x02\xda.\xa0\xe7\x0e\x13\xd7v\xb7F\xc8\x04\xd4\x83\x95\xfa(\x15\xf3wv\xb76\x87PD.\xdd\xda\xdeb\xc26*\xa6\xfepF\xc3Mt`Na\x83\xb7\xce\x93\xc9l\x88\xd7z\\\x86c`c\xbc\xdb\x98\xeb\xbc\xde\x0b\xab\xd9\xde>t\x90\x93\xf9\xe4`Zh:\xf5g0\xe6\xa7\xdc\x1fz\xb74\xf5#\xafSmk\xe6\xf2\x8c\xa2\xfa\x86D \x08\xf3\x92\x95t\xba\xfej\x1d%\x89\x7f\x11\x08\xc7\xf71\xf8BU\xc9\x8d@x \xb2n\x13c\xf7\xd9\xb1\xcb\xf3\xbf\x983K\xc1\xbe\xe4\xd7\xa4\x02\x10\xe3\xafin\x01\xe221)\xc5\x95\xd2\xea/B\xb6\xdfx\x8em\xfd{\x9b\x9c\x1e\xe5\xcf\xd8(\xba\xbd..\x97\xdc\x94\x1b\xfc\xb09\x0b\xbb\xd6\x19\xfed\x14\x84MCf\xb8Q\x90\xd4\x8d\x11\xa6\xf7\xb4\xf6\xf1g-\x14\xd1\x1aAq\xbcV\xc9k\xce\x1bTl\x87UE\x96\xe2CY+:\xae2\x90\x85*\x9d\xc0\x0b\x08\xd8\x1f=\x07\x89\xa2\xa3\xe31)oJf\xee\xa0\x88s\xc0P\xc4\x1b\xe4\xf6\x06\\\xcb\xdd\xf1*5\xba\xdc\xbc\x80aR\x9e9\x90\xd3XY/Z\x80\xfaR\xdeN\xder\xa5#F\xfal\x82.\x95\xea]\x98\x80\x87\xdf\xc7\xd0\x9dt\xfb\xe0\x0dr\xbb\x04\xdb\xb1\xc2\xdaXp\x95\xa8\xb8\x1a\x99b33>\x0e5>N\xdfh>\x91\xf1\xbb\x00\xb5K\xee\x13\xa1\x94\xb03sa\xa1\xe2\x06\x0d\x80\xfaA9/\xa9\xf5\x85\x11-\xca\xf4\x99'\xe8\xf7D\x82\xfe\xc7/1k\xbf\xe0\xfdc \x9eG\xd7i\x82Wo\xfc\x04\xe6i\xc2\x10\x02\x8f\x9bN\x9a\xf2\xb4\xa6\x8b\x19\x9f\x99\xf9\xe41OY\x8a\xc3\xb1\xb6\x8a5\xfe\xb4\xc6&K+\xe6w\xec\xfa\xd1\xffU\xd2\xf1\xf1M_\x95\xd9\xd5\xfb\x83|\xc8a\x9fo\xe5\xb0\x0f\x9d\x11F\xc1\xc9\x7f\x0e5\xd9\x82\x13\xc8\xb1\x847Q\xcd\xdb\x9a\x13?U\xa4}\xc1#\xc4\x95\xa5\xdcjVS\xd6|\xd0\x87E\x1f\xed?\xea\xdeR\x0cAQ\xd9\x91?B\x17\x1f\xf9\xa4\xae.C\x85\x9d\xa3h(\xc5\x8dXqI\x92\xcb\x04\xa1\x8b7f\x85o\x06\x02\xeb\xd1#\xb6\x05\x95\x02T\xdb\xdc\xdf\x83P\x84K\xa5\x02\x12\x86\x97 R.\xfb\xa8*u\x85Z\x8aVn_\xa6\xc1\xcc-\xa0\xdf\xfd!\xa6\x8bs\x86\xe3\x15\xf1\xderQ\x8d\xd3\xc2\xb6;\x9a\xc6q\x08\xba\xf2}\x9eR\xdc\x00W\x97\xaf\x1c\xcf*\xab\xde_\x8aU\x96\xc7\xcd\x04\x9cN\xcd\x96I\xa3!\x92\x9f\xb2r\xb9\xaf.\xb0\xc5\xa2\x95\xdf\x1c\xa7\xc4\"\xe0]V\xeeYM\xb9\xf1\x91\xd6H\x1f\x04y\xa5\xe8\xc2%~w\x9aT\x80J\x0e\xd9\xe2$\xd0\xb4\xa3\x145\xb4\xa8\xbe\\\"u\xf9u\xe7*K\xd0\x92\x80\xc0\x05O|\xc3\x13\x98\xdb\x8c\x10\xa1\xa4b\xe5,\xc4e\xe9\xbe\x8d<\xe72\xd8\xc8E\x95=\x135\xc4\x823\xc8\xf8\x0c\xa9\x1d\x0c\x89$\xae\xb5D\x88\x89p\xca\x18\x9c\xcb\xa9?\x9b\xf5\x05\x8d\xe1\x96\x80\x19O\xcb\xce\xffq\xbc\xc7\xdd\xd5b\x07 \xe4\xc7\xbd\xc1\xbe\x15\x1e\x15L\xf0\x90\x89\xe0e\x1dO,\x1d\xd6,\xe77\x9f\x88 N\x13\xc6\xa8\x8a\xaf\xd0\xc5\x8d\xd7\x93\xaf0\x0e\x83S\x81\xd2\xdc\xd4\xa9$|\x1a\xc1\x17\xf4<.z\x1eC\x97\xe1uo_\xed\xdd$\xedHZk\xa2\xee\x89}&g\xe4K\xda\xe2\x14t\xe4QNG\x90\xc9\xe3\x9d3\xd9\xac\xbe[m[\xb5b#\x914\xec\xd3\xa0y\x9fz-\xf7i5\xa7\xb6\x97\xa3o%\xa7vV\xbf\x8a\x9f\xa0\x00\x8eR\x93\xa0`\xfc\x18\xc2\xbb\xddn\x1fq\x02\x95 S\xb6?\xbci\\`3N\xb63\xe2\x87_\x01\xd22N*\x8dq\x04\xcb\x8a%f2\x96q8\xc8x\xa3eF\xbd\x0e\x17\xaf\xb099\x14R\x1e\n\xb2\xe6Y{lR\x8f\xf5\xee?X\xaf \xeb\xbf\x11\xa3\x9a\xd0\xa9\x0b]\x05\xa9\xeac(\xa8\xa5\xf6`.\x1d-e\xf0~\xc9iRx\x00\xdb03\x93\x98i\xc16\xc5l'4\xd9\xe8\xa8\x84\"D[\x1d\x95\xe4)$4B\x12J\xcad\xa6%1\xc1\xb7\xba\x1b\x0c!\xc4W\x9e5\xb8Xy\xfb\xc2g\xca\xc2\x13\xce!\xcd\x9a\x16\xfd\x9fAF\x1a\xd6\x88\xb4X#\x85\"\x84&\x8a\x90\xf3\xbe\xd3xV\xdeA*1\xf091h\xd8\x8c\xae\xd0U\xb6\x82;Q7\xdc\xb4+S-7\xc2\xbe \xf0\xad6\x9cY\x94\xcc\xb7!\xd7(\x89@\x03I\x93\xf4X2\xd5k\xf4m\x84\xaa*-\x0b\xb98F.\x02\x8a\x9eT\x10-\x801/|,i\x048W$Kz!K/'\x95\xf9\x87G\x8f\xf8\xc5\xa4DbT\xe0\xd6\xc1]+i\xe2K\xca\xab\xc1\xc5N*\xc4\xce\xeeKu=\xfed\xee\xa8.\xd2\xe9D\xb5\xff2+\x03sm\x94.\xd4\x8c\xce\x1d\x87\xc7\xbb\x94-\xa3\xfb\x97\x89~*\xb4\xb3\xbe\xa2\xb9\xe5c'O \xa6\xd1\x80\x98}\xec7\x94\xc0\x14\xa1zO[Xy\x15ia|\xdc\x9c1\xf7ui\xbc\x85\x0fy\xbd\xd4\xed\xf3ce\xe0'<\xb4C\xaa\x89\xce.?Uf851\xc3\xd4I\xa7\xfeL@\xcd<\x12{G\xd5X\x11\x15K\xb8\xc8\xd6y\xc4y\xeb\xb0\xee\xc4\xca\xd0$\xe2dZ\xb9R\xf5\x0d\x97\xa8\x90\xaar-\x82,\x9a\xfa\xd3p6\xabL+\xd5\x98\x03\xe6\xe12b\xbb\xd2\x8fR\xab\"\x9b\xb5s\xc43\x02\xb0S\xe8\x1fUOB\xa9\x97V\xcc2q3\x84\xc8\x03\x85}6GZ\x9c\xb0\x13\x08%\x8b\x85\xda\xcbR\x0e\xf2b\xe7\xe5n\x9fr\xfbR\xaadh\x1f$dA_W\xac\x15,\x96{|\x8a\xf1\x80\xde\xa64\x9c;\xf5}\xc4m4\xc7@\xca\xab\x85'~et_\xe4\xf6\xa3z\xb1Z\x07,\x0d\xe9\xd5\xac\x07x\xd9\xd6q(\xecC\x8f\x9aC\xcaX\xa3\x99\xf3h\xe1\x97i\xba\xd6\x04\n\xe7\x0fo\x12C\x0cq\xd1\xdfS\xc1\xec\xd57T\xd1\xb8\xae \xd9zC\xf3\xdb\xdb[\xf6\xf6\x17\xda\xb1+-l\x8e\xec\x0d,\xa3\xf5%\x8d\xedm\xec5Lr\xe1\x07\xa6P\xebzs\x04\xeda\":\xf9\x16\x98%\x1d\xca\x1a\x83\xc4\xd47~d\xbc\xde\x99S/\x9a\xd3O\x1f\xdf\xbe\x8aV\xeb(\xa4a\xea(Q:\xcfzh\xb2\xc0\x18+\xcd\xceM\x07\xdc\x7f\xc2_\xdc5!{NT\xaa\xf1\x05$\xed\xd1\x9e\x8c\xdcQ\xdc\x0f\xa1\xcb;R\x9d\xcd\xf95\x0dZOO\xd0#\xde\x85X(6\xd1H\xf2\xd1#\x10G\x0f\x0dkS\x8cP\xb2\xdbG\xb6\xa0\xfe\x94'\xf03\xd0\xbe\\\xf4I\xd1O\xf2\x8f\xc8\x0f\x9d\xee\xa3\xae[!o}H\xb9go 2U\xb0\x94.\x92\xd1@b\xfa\xfb\xfe\xe4\xd1\xac\xe7\xeeO\x9c\xe9\xef\x8f\xb8\x95\x04\xae\xfa?>?G(\x86V3\x01i0\x159\xe8\xb4i6\x8fb\x156\xabg\x0b \x9b\xe2\x87\xfc\xba\xd7\x89\xa7\xfe\x8c\xb1\xc9-x\xa6\xf8a\x08^\xf8FnU}\x1a\xb9o\xe4\xde\xee\xb6\xd67rk\xb8\xa9\xf1\x8d\xec\x1e\xde\xae\xa9\x97\xd2\xb9\xaag+W\xcb\x14\xdf\x97\xf2\x93$\x7f\xe2\x87-\xc8\xb8\xe1\xcaL\xdc\x94\xf5a\xdd\x87y\x1f.\xfb\xe8\xc9\xa8\x89\x01\xba2X\xe2.\x0d\xe5w\xa8\xf9-\xafSE\xb5Yl\x8a\x92?\xf4\xe9\xdd\x9ar\x9fh\xa2\xe6R\x06\x950\\\xe8\xcf\x10\xb9+\x03=\x02\xe1\xddK\x1du\x04.\x04\xec)\xec\x8bh=\x1c\x10)W\x1a\xd3\x01Y\xaf\x83;'\xeeW#>}6\x0c\xf0\xdc\xech\x8f\x16\x12\xb0\x01\xe6\xfc\xedJ\xbc\xa0Kn\xb7\xf2R\x90\xa1P\xdei\xa0\xe8\xc0Z\xb9f\xcf\x16\xad\xc6t\xa35\x97dC\xa2\xb8\xb3t\xbbj\x01\xce\xb9\x9ac\xe3\x90\xed\xe0Z\xb59\xec\x83\x08\x05\x1fe\xa9s\xd3oa\x94\"A\x91\xc2\x068\x08\x0f{\x00\x88%L a\xdc\xdaB\xbep\xed\xd6\xf3s\x00ga\xabn\xdf\x06\x88\x1cZ\x1d\xad\xe7\n2\xa0Av\x00\x13\xb8`\xaf\x8c\xf9\x9d\x8e\x8a-5 M\xdf\xe3m\xd3\x1a\xe81\x97\x01\xea\\\x0bz\xb6Bl,$^f+\x1a\xa6 \x0f\xe4\x9f^\xfaI\x1fo+\xa8Ei\xc2^V\x90\xad\x10\xbf\x9b\x97\x0f\x14t\xe5\xbd\xd4\x91\x80 $\xab\x02fkmC\x9f\x1d\xd3\xc2\xb3\xd1-]u5\xea\xcd_8\x97m\xe4\xf0\xfa\xc6BSyG\xd7\xa8\xdb\xaf\x8cT{r`\xaa\x0bF\x85\xee\xefQFrB\xae\xfbA:\xd9a\xe7-\x99\xfb\xe1\x92g\xdap\x18\x95\xec\xae\xc8\xedo\xc4O\xbbty\xbb\xb5PS\xe5~p\xa2{#\x97u\xff@ *\xdd\xeb9\xe1-]B\x0f\xab\xac\x05\x82\xe43\xa1\xaf\x0f\x9d\xd8\xa9\xc4\xcd\xccs\x08\x15\x0c\":`\x8c\xc1#\xe1\xe3\x94\xcd\x0dH\x02\xb9|\xd9\xa9\xd8O~\xd6\xef\xd0\x1a\x80\xc6\xa0]\x14\x14-\xba\xe7\xe7\xd8\xfe\xf99R\xe4\x7f|\x86I\x15LZ-\xa89\xe8\x16\x8fC\xe7l?s\x1di\x15\x85\xe2`\x9f\x81vw\xe8\x0e\x16NUp\xee\x832\x0c\\\xbc>l\xba.\xeb\x7f*\xc3\xd9u\x1c\xaa\xda\x8c\xa1\x9aM\xe78\xd5\x14y*\xd5G\xcd6\x9e\xb0*0\x8cl\x87\xa8\xebK%\\\x8aFx\xf9\x9c\xd0\x1cM\xd0@\xf6\xb8\xae\x06\xad\x9a\xc1\xfe\xe33\xbf|\x19\x8b\x83\xa6\x82z\xde%\xf5\xae\xc6\x8aEv\xebM\xab\x92\xf5\x02\xe5\x8b\x8d\xdb\x82\xe8\x1b\x8f\x1d\x0fC6\xf0:\x0f\x1b\xd9\x97\xed}\xde\xdf\x18\xc7\xff\xcc}\xe0~oV\x1a2p\xed|E[\nx\xab2\xb4\x90\xad\xf7\xb4I\x88\x9d\xad\xbd-m\xdc\xa1\xa7\xba\xb0C\xa1\xb3]\xad\xcd\x07\xfft\xbbZ=\x10\xe5\xd5\x83\xc0\x13\xbdVG\xb9\xe0\xf5w\x86\xa5\xd3\xf0\x99\xf2+\x1a\xf8![\x1a\xa7\x82U\xeb\x1a\x19Z\xf8\xe1\xfc\xf5\xf1\xfb\xa3hN\xc7Ui6\xa6\xe1\x9c\xc6c\xf0\x07\xfc[e\x92\xe1*\xca\xc24\xd7\n\x1d\xa4\xbc\x11\x7f\xa0\x7fR~\xfb\x9a\xc6\x89\x1f\x85cH\xaa\xad&x\xc3v~\xc1\xe8\x05\x9d\x7fZ\xcfIJ\x931d\x83r\x89\xe15>\xd2\x93\xec\"\x8d)}\x1b\xa6\xd1\xab(L\x89\x1f\xb2y\x14\xc2\xabB\xa1\xf5\x91\x1a\xcf\xcf?\x1e\x1e\xbc:=\x7f}\xf8\xeb\xe9\xf1\xf1\xbb\x93\xf3\x9f\xde\x1d\xffx\xf0\xee\xfc\xe7\xe3\xe3_\xce\xd1CWk9e\x7fM,\n{\xbbU\xc5\x8ar>\x87\xe7iL\xa9.i\xf8\x92\xa6\xaf\x82(\xa1I\xfaV\x10\xe47q\xb4\xe2\xab\x12\x0f\xccO5\xba\x16\x8aK\xc6*\xc8\xcaM1\xc3@\xb9b\x18\x88e\xa0\xf3|\xcc\xfc\x02\x921\xfbR/\n=?`\xcb_\\h|\xaepH\xeboAL\xf6\xf6\xaa\xd1\xca$5\xa9\xeewNM\xf6\x9e\xea4u\xac\xbc\x1a\xdd,\x13\xe5U\xaa$\x88\xe1\xd3j\xbf\x81(\xaf\xf6\xcb\xe9\xc9\xde3==\xa9\x11\xc35'3\xa3*Y\x9a\xf3\xf2\xcd\xea\xe1w)\xcaG\x95\xf2kQ^\x9d\xeeJ\x94W\xc9\xe4R\x94W\xc1p'\xca\xab`\xb8\xe0\xe5[\xd5\xf6\xcfEy\xb5\xfd\x1bQ^\x9d\xef!*\x18\xdb\xf0n|{6\xc4\xce>D>\xeeP\xb8p/\x07\x87\xd74L\x0fW~\x9a\xd2Xl\xf0\x8f\x94x)\x96\xbf\xf3\x93\x94\x864vVn^\xf7C\x90-\xfd\xf0\xe7\xecB\xd4V\n\x8f\xe39\x8d\x1dR\xad\xfb)\xf5\x83D\xd4.Q\x0bga\xab\xcaj\x9c\xc6\x84\x91d\x12\xa0\x80\xde<\x82\xe4\xc7\xbb#\xb2\xa2\x9a\xfbC\xf69\xf1W\xeb\x80*\xd5\xc7pS\xa72\xecs\x18\xa64~G\xc9u\xb9v\xa6\xaf\xfd\xea\x92\x84\xcbrMCv\xb3\x13\x1a\x94\x07<\x86s}\xcd\x1f\xe9\"\x8a\xe9\xdbp\x9d\x95\xab\xd7]\xb4>#d~\x8e\x92\x02\xb8\x020?\xb1\xb5\xf3\xbd\xbc\xf8U@\x92\xc4\xf1\x8c\xf5O\xe9mZ\xa9|\x89\x95_\x1f\xbf\x97\xd7T\xa2\xaaR\xf2*\n\x17\xfe\x1235\xb4\xab\x99\xb4\xaey\xc1\x17}\xb5f%\xe5\xb1\x96\x0b\xdf\x10/\x8d\xe2\xbb\x16\xb1>\xa5\xc2\x81\xde\xc0\xba\x1a\x98\xb2\x80\xa68\xcd\xf3\x0d!\xc8\xf5iL\xc2\x84\xf0\x1e\xee4\x15\x7fd\xbc\x80\x1f.O\xd2\x98\xa4ty\xe7\\c\xa5\xda\xd8\xc3k?\x8e\xc2\x15\x0dS'0K\xf3\xf8\xed\x8b\xc8\xbf\x99F\x08\x00\xfb\x8cw\xa9\x03\xa8Kb\x9flxY\x1c\xd30\xed\x8eu\xf7 \xbc\xca\x9c\xa6\xc4\x0f\x12k\x15?a\xac\xcf\xdcV\xe7\xd2\x9f\xcfih\xab!\xfc\x02mU\xae\xe8]r\x19\xc5\xa9\x97\xa5\xd6\x01\x05\xe4\x82\x06\xb6\nq\x14\xd09M\xbc\xd8_#\x07e\xa9J\xb24\xf2\"FMRj\xab\x87\x92\x97\x1d\x06\xf4vM\xc2y\x03\x9cH\xb2\x8e\xd6\xd9\xda:=zm\x9f\xde*\x9a\x13{\x05\x19\xb5\xbc\xb1R\x82d\x8c-\xaf\xadj\x14\xfb4LI\x13,\xf1\xce\xfa2\n\xe64\xb6V\x8bi\x92\xd8\xc1\x14S2\x8f\xc2\xe0\xce^\xe7o\x99\x1f\xdb\xdb\xe1\xd3k\xa8\x13\xc5\xd6\x1drM\x82\x8c\xae\xc8ms\x1d\xdf\n\x1d\xac\x13F7\x8duRzk\x1d\x10I\xa3\x95\xef\xd9j\\d\x89\x15t\x81\x7fm]\xef\x98\x06\xf4\x9a4\x10\x0eF\x7f\x16\x0b&\x9f[j-crqa\x87?\xa3\xc2\xd7\xb8]i8o\xe8\xd4\x8b\x02\x8f\xf1\xe1\x0du\xd0P\xae\xa1N\xb2&\xd6\xe5\xf2\xa20\x8d\xa3\x06\xca\x884\xe6\x82\xce/\xac\xe0F\xcf\xe8\x15M\x12\xb2\xb4\x82}\x11D7id]8F\xf9\x82\xa6\xfe\xa2\x9b\xd0:\xecu\x94\xf8aB\xadP\x8c\xa3\x9bFH\xc7\xd1M#\xa4\xe3\xe8\xa6 \xd2 M\x13\xff\xef\x08\x99R\x8d\x8a\x00\xf6\xfa\xf8\xfdA\x9a\xc6\xfeE\x96R\xc6\x1a\xb2s\xaf^E\xf2\x1dy\x8d\xbc\xc2W\x9c\xc2\x8aFgX\x95V\xc4\xd5\x81^\xa3\xb3\xb7W\xad.e\xb0\xaap#e\xb0\xaap\x83q\x08\x9f\xf5a\xb4\xd5\x87\xcd\xbd>lmV,[\x990\xb6\xb9\xa9 \x14\x1d\x0d<\x12~J\xe8\xeb\xe3\xf7\xa8O@\xde%\xf1\xd9\xcc\x91\x0fE\xbd/O\x11Q~\x19\xc5\xb5R\xda\xfcjS\xf3\xc8\xc3+\xda\xf7\xd1\x9cb3\xb2\x00\xa4\xc3\xa0,\x18\xa8U\xab\xca\"~\xd3Zm\x9c\xf1\xae\xd5\x01\xb2\x07\x1d\xee\xb2\xe7\xd4\x0dk1\xf5\xbbHv\xc1V\x9f\xb8F\x05\xcaz \x14C\xac\x06\x9a\x07\xbd\x0dS'/u\xdc>\x8c\x86.\x8f\xe7\xa7\x11?+cu:\x1e\xc8HT\x0b\xc0\xec\xbe\xec\x0b\x86\xe4\xabL\xf6Z\x13\xa6{\x95G-\xc5t\xbc\xaf\x84W\x03\xe35K\xf5\x96\xdax\xd2\x17\x85\\\xa1\xe3\x00\xd9g}I\x12:\xffH\x97~\xc2\xf8X?\n\xe5\xb6\xd0Vg\x9f\x8b\xec\x82\xf1zc\xe8F\xa1\"\xb9X\xbc\x10<\xb2N\xb3\xb8\xfe\xca+^^\xb7\xe5\x87\xfa\xde\x96\x9f9]\xd3pNC\x0f\xd9\xdai7\x8d\xd6*\xda\x86\xf3n\x1fX\xe1/\xf4\xee\x03\xe3\"\xc4O\x862b\x98\xf8\xfb\x03IR\xda\xd5$\xe5\xab\xf7\xea\x95\x9a\xffN\x80\xac\xce\xa1\x1d,\xcbo}#p\xfe\x18d\xb1\x80\x92 \xb2\xaf\xa3\x9bP\x0f\xe7_\xe8\xdd\xa7\xb5\xf8\xfe>\xca\x12\x8aU\x1f\n\xe7\x93\x94\xc4\xdf\x0be_U\xba\xf9\x02X\xe3{\xdf\x15\xdabd\xff,xs\xc9\xf6\xfb\x03\x9c\xf7\xf3\x05\x10\xe7/~W\x90\xcb\xb1}C\x98\x97J*\xe3\xbb\x13\xaa\xbe\xbc07\x9b\xba\xd0^\xa5I{r\xad\xb2\x83[C\xe7C\xb3ZD\xd7r\xf7\xa2G\xc5\xab\xf2\xe1\xabk\x18gim:o {\xd0D\xd3S\x9b\xe3\x105\x19\xa8\x97@k\xa9\x84ki\xb7\x00\xd7\xc4\xac\xb3F0j\xb2\x1c\xd7ymhL \xafe\xde\xb7\x01W\xa0\x94G!:1\x05A\xe9\xceIJ\x90\xbbIa\x02\xe9\x80\xfd\xac\xdeI\x14#b]\xdd\xe4,Y}t\x87\x92\x8f5\x84\xa6\xcd\xfa\xba\xd8\x0e\x1e\x86l\xb3\x99FC\x13^\x82\xbaT5\xf2\xd6\x18\xf3k9\xa8\x9e z\xe39]\x17\xec\xbczX\x07\x87\xe1\xbc}\xf3\x82Z<\xac\x07\xfeR\x13\x9d\xe0\xd7O7\xdc\x96\x10\x85\x8fG\"J|u\xb8h=\xd7df\"1M\xd9\xc4\"\x92\xd3\xa3G\xca\x8e-\x07\xba\x16\x031\xf7\x8e\xab\xe1\xf6AI\x18^\x16\x08\x00\xf9a\xf6.\xc6q\x17\xe1{kMp\x1c\xab>:\x0c\xd1j\x8f\xe7\xa9c\xf2\xcd\xcd`I\xd3\xd7$%\x8e\xcb\x81\xb3\x0f>\xdawEQ@\xe7NTu\x05`X\xbd\xc0,\xc4E\xa5\xac\xd8\x03udO\\X\xf0]V\x8bsbp\x05\x95\x97\xd9\xe7Z\x7f\xfb\xdc\x92GDH\x91m\xb7qn\x8c\x07\xc4\xf3\xb2U\x16\x90\x94\x9e\xdeD\x1f\xd8\xf1\xfb\xdaO\xd6x\xf9\x9c\xe0E\xca\xc2J\x8dn\x1b\xf6;\xa9\xcf\xbf\x83\xd1\xa2\xe6U\x13\x9fo\xb6\xe3[m\xc7s\xa7\x1a\xb0F~\xda\x1c\x1c\xf2\x93\x1fF7\x97\xbew\x89\x8bp\x0d\x13\xbe\"cp\xee\xc4u\xd8\xaa\xa9\xabBd0\xf7\x95\x1bv\xe3\xfa\xea\x1b\x04\xe5&\x02Q\x1dc_\xdf\x15C\n\xf5\xef5\x86\xd9S\xf6]3M\xc1\xad\xdc\x82\\0d\xb81\xad,:5\xd4\x17\xb6\x88\x0c\xd7\xf1\xd8\xdc\x04\x07cj\x05\x14\xc0)\x1b\xbb\x11z\xfe \xa6\x01% un\xdc~~\xe0\xf5\x0d\x01,\xf5\xae\xce\xeda\x06\x0fBu.O\xb6Z\xabo\x8e\xe1\x8f\x1eA\xa7\x85iD\xe5m\x87\x0e\xbc4\x0e~\xa1w\xb8\x1ayJ~\xd8\xd0\xd1\xa2\xcf\xd1s\x80\xf2\x83\xf7\xba\xf9\xbe\xb9t<]XD\xa8\xb1\xa8\xf8*\x1b \xba1\x8b\xdcQ\x1a\xda\xd6HX\x01J\x810\xc1\xaa\xac\x96\xbc\x0d\x1d\x9c\xdf\xc4d\xbd\xa6\xf1I*\xb2~\xa4\xe5\"\xf3\xd5\x01gT0\xd0\x980\xd7\x0d8\xaf\xd3\x0d\xb3\xd5\x05\x8d\xf3\x95c\x0b`\x19\x0b(\xacw\x97\xe7\x8c\xc3\x03\xcc\xdc3`\xf4\xb5%Ms\x93TG\x9cyn\x112\x17\x1d\xefk\x15\xb4+\"?\xfa{\x8dz)\x9eB\x81\xd1\xe1D\xafp}\x8f\xa5_)*\xef=\xd595\xab)\xde#q\xa4\x8a$\xe2V\xb4i\x197\xd5@\xe0\xf8\xe5\\L\x17\xf5\x85\x928\x18\xd60\xd7\xe2\xce\xaf\xcfV\x00\x13\xa0\x0e\x0f8\x92]\x04\xbe\x97SMd\x02\xe2\x01\x99\x17n\xa8\x07\xc9G\xba8\x8d0m_\xbf\x1ab\x0bp\xe1B.\xc8\x0d\xce\xa3\x9b\x90Vc\x96\x16K\xc8\xc4\xb7\xe42\xca\x02!\x06\xb5\x81\xa6\x84I]r\x03\xa9\xae\xac]a\xe4\xd0\xa7\x06\xe8c\xb9\xc8\x86\x16\xd3\x85LL)\x86_\xbf\x0f\x89\x8c\x03\xf0\xb5\x03P.W\xecX\x90\x13\xcb\x94\x8f\xc3\xc7\xafb\x1c}\x08\xf1m\x0c#\x9eG+,\xde\x8e\x90\xc0\xf1\xbdY\x062g\x89\xdb\x80\xf7\xff5\xc8\x8a<;\xe2fLW\xd15-\xa3';\xf9\xbf \x82~\x075\\)\xe2\x80Q\x03iP\x8a\xfc\xe6\xc1^\x0b\x13G\xedR\xa7\x91Xh\xf3\xfb\x1e\xe6\\\x9a@d\x89\xfc\xe2\xac\x8d\xc1V\xd8\xe73_\x81 W8z\xe6!\x8b\xf0\xa0\xfb\xfb\xe0\xb5\xc4\x94\xb9h\x16D\x92\xe4\x04\xc6|\xb05\xf5G`\xb8\x96\x07\x19uD\xb4\xe2Y[\xf1,\xad\\WlZ\xc9\xa0 P\x88\xd0\xb8S\x0ds\xc9ov\xf0\x9d\x80S'V\xcc\x17\x0c\xd3`]WVq_\x17\x95\x17\x04dV\xfa\xd1 \x81\xc60\xca\x96\xd1\x08\xd0\xaf\xca\x83\xa2\x9c\xb6\xb3\xe2\xbc\x7f\xf6\xab:\xa8y\xd9\xce\xa98D\x95{\xa9\xeb>\xac\xf8&w\xfb0e\xbf\x1a \xa9\xfe\x8c\xcf\xb0\xf4+\x0f\xd2Z\xf4\x1bv\x8e\xca\x00+~\x14\x0e\xde\x7f:9=\xfftrx\xfe\xe1\xe3\xf1\x87\xc3\x8f\xa7\x7f\xad\x9f\xafj\xf5\x9f\x0fN\xce\x7f<>~wxpt\xfe\xeb\xc1\xbbO\x87\xf5c\xb7Z\xfd\xe8\xd3\xfb\xc3\x8fo_\xe9\xaag\x9a\xea\x1f\x8eO\xde\x9e\xbe\xfd\xf5\xd0\xf6^\xa2y\xef\xf8\xd7\xc3\x8f\xef\x8e\x0f^\x1f\xbe\xb6\x0d0\xd0\x9eR~\xf2*K\xd2h\x95k;\xc6\xf0\x91.\x0fo\xd7J\x94\xfc\x94&\xe9\xe0\xc2\x0f\xe7NHo\xc4c\xa7\xfb\xbb3')\xb9'\xb1O\xdc\x0d\xcc\x01\x14\x0f\x0eNO?\xbe\xfd\xf1\xd3\xe9\xe1\xf9\xd1\xc1\xfb\xc3\xf3W?\x1f|\xc4\xbc@?\xfc\xb9\xab\xcb\x1ao\x0f\x85\xc1><\xb3\x8e\xd6\x07\xb9x\xfc\xea\x92\xc4\x185\xd1R+I~\xa1w\x96\x1a)\xc6\x1c3=\x0e\x82\xe8\xe6M\x16\x04'^L\xa99\xb6\x0c\xd6\xc3\x08%xjx\x96\x0e\x03\xcbp\x13\xcb\xa3\xbb\xd03w\x9f\xa5\xd1+\x11\x12\xc3\xdcD\x96F\x1f\x02rglE\\\xec\x9b\x9f\xd3 \xf8@\xe6s?\\\x1a;auN\xd6\xc4\xb3\xd6\xb9$\xf1\x89e\xd5\xbcK\x12\x04\x14-\x1c\x8c50\xb4\xc7\x18\"\xb87\x8e\xd6\xb7\xc0\xc2\x0bH\x92\xbc}m\x7f\xceYLS\x8d(H\x8cA\x89\xbc\x88\x01\xc1\x8cV^\x14\xa64\xb4@\x80??\x9c\xfb\x18\xe8\xc3^\xef6}O\xc3\xccZ'\xc6\xc1\x9a\x00%*\xbc\xf3\x13\xdb\x88\xa2xnFO/\x8e\x92\xe48\xf61L\x92\xa1\x0e\xb7\x0c2?\xa4\xa7\xbe\x05\xdey|\\\xc3,\xe6t\x81\x81 \x0dO\xfd\xd8\xdc\xb2\x08\x96c~9\xba \x83\x88\xcck\x91 \xf3\n1Y.\xad\x0bEC\x8f \x04\xc6\xe7\x8b(^Y\x1f\x1e\xd8\xe9\x14\xabr\xd8\xa2\x8f\xf74\xbd\x8c\xe6\xd6*G\xd1\xaf$\xf0\xb9\xff\xa9\x01 \xac\x1a\xe7\x0f\xcc-\xc5dE\x7f\x8cb\x8c\x16i\xa8sI\xc9\x9c\xc6f\xa4\xba\xa4\xfe\xf2\xd2\xdc\x05\x0f`d\x1c\xe4\xa5\xbf\xbc4\xbf\x1b\xd3\x85\xf5\xe1;b!`\x97\xe9*x\x13Y&\x96\xa6\xeb\xc3\xbfe\xfe\xb5\xb1\x86\xefY\x16\xd37/\x10\xden\xbd\xc7\xf0\x8d\xc6\x1a)]\xc6~j>\x81|3\xc4\xaf\xe8\xdd\x07\x12\x93\x95\xb5\x86\x15\xc9\xae\xfc\xd0d\xeet83ov*nd\xd9$e\xba]D(4\x7f2\xec\"~]\x19\x95\xea3\x08a\x08|\xda\xd7\xed\xbe\xca>3$WK\xbe\x052\xd5\xd0C\xe4\x87xVE2\x11\x9b\xf4\x99>?\x84.\xd9L\xac\xac\xe8\xa40\x9d\xe7\x89x\x04\x85r\xbas\xff\xfa\xffa\xefM\xdb\xdb\xc6\x91E\xe1\xef\xf3+`\xde9ij,)\x96\x9d\xc5Q\xe2\xf6u;\xce\xe9\xdc\xc9\xf6\xc6N/\xa3\xf6\xf8\xc0$$\xf1\x84\"8\\d\xbb;\xf9\xef\xef\x83\x02@\x82d\x81\xa4lgf\xeey.?\xd8\"P\x00\xb1\x16\xaa\n\xb58\xfa\xbe\xb7\xb9\xf2\x1e\xfe\xfd\xb7\xf4//\xdc\xdf\xae\xb6\x07\x0f\xf1Q\xe8\xa5\xdbX\xbb\xca\xcf\xc5\x9a\xa2\xee\xd6\x04\xd1DL:\xfd[\x91\x8ab\xf8\x8af\xde\xd2M\xdb/>\x01Ug\xb3\xc9yU\x1f\xbc9\xf1\xa8yVH\x94np\xe0\xd6u'\xe1\x82\x1bkd4\x0e\xa2\x88%b\xbb\x08\x9c<\x9b\x9c\x93m\xc2\xc86 g\xbb\xc8\n/B\x1a{\x00\xbds\xfe\x9cx\xa3\xd1\xf3\x81\xd4\x0c\x1d\x874\xcd`\xe1V\x17\xa6\\\xda\xd5O\xb1\xe6\x90\xce\xb5B\x98\x9a\xf4\xf4\x87\x9b3\xba\x80H\x0d\x8e\xf4\xb7^?a\xe7:`\xb3\x8c\x16\xadgkH\xb8;\x1f\x8c\xe7<9\xa1\xde\xd2\xcd\xeaF\x80E/br \x83~\x81\xfa\x89\x1b\x8d=\xd1x\xb1m\xd3\xc1s\xb3?\xa2\x87Z\xdfQn\xe42\x0f7\x99,\xf1\xfc\xd7\xfb\xd8\x7f\xfb\x96\xcdm_\x82\xaa\x1d\xedkT+7nI\xcd\x1cTC\xb7\xaa\xd0x`\x86#~\xf0\x808r\x06\xc05\x03T\xb2\xe5:)\xcb^G\x19K\xd64\x94\xe9\x83\x8a\xde\xbc\xa9\x13)p\xb3 \xcd\xe1\xf3r*\x82\x14\xfe\x8b\x06\x8bO{4\x0c\x19S\xf5\x83\xa9G\xc6V\xaa\xda\xea2\x13%\x0eI\xa3\x12 \xa2\xc0\xf6\xbf\xdb\x98\xa3\xdc\xaf6\x7f b'\xe1\x0d\xd5c\xb7U\xd5n\xb6\x85r\x86\xc3\x08\x16+20\x99\x91\xad\x0c.\xc1x\x81\x8c\xc8\xa4\x18 ]\x1c\x9d\x9c\xb1\x1c7\xa3\x9ez(\xf9AK\xbc=\xb5.d?\xcb[v\x18F\x15\x87\x1d\xc1Jf\x9c\xbc&UX\xec\xbaH\xef:7\x13[U\xfa\x9e\xe0\xe4\x05\xc9\x9e\x13\xbe\xbd= \xd1\x8c\x9f\x8bI\x98q\x04\x05i\xf5\x9c\xe6\xdcO\xc9\x8c\x9d\xdf\xef\xb6\xb3\x1c{XP\xa4\xbb\x1ec\xa0\x13\x89h\xed\xcd&C\xf2\xdd\x0b\xc9\x1f\x16\x02\xec\x03'Kr\xe6|\xff\xdd\x908/\x1e\xca\xcc\xef\x9d\xf3\xe6\xc1(J;/\x80\xb1\xfc\xde\x01`\xf5\x1b\xf1\xf4=\xdb+a_d\x97\xdc\xbf\xf9\xfeE\x96\xe8b\xc9\xf7/\x1e\xaaDK\x1d^\xd9\xda\xf5\x82\\\xaf\xc2(=\x00\x8eo\xfa\xf0\xe1\xd5\xd5\xd5\xf8jo\xcc\x93\xc5\xc3\xdd\x9d\x9d\x9d\x87\xe9zQ\xb4~\xbdhT5G\xa9x\xe7/\xceT\xf6\xe8\xf0\x85\x1f\xacU\xcb\xe0\xd7y\xf38\xa4 \xa3\n\xfc\xc5\x8a\xc6\n\x1a~!\xd0\x1e\x0f\xa7d\xb6\xdb\x1c\x01\xddi\x8f\x87\x8b\x84\xe7\xba\x9e\xe2\xd56\x1a\xe2 \xd9\x82E\xben\xc4<`\xa1\x9f\xb2L\xd5P\xbe\"%c\x9a\xd0\x95.(1\x8b*\xa6_\x90BY\x82vAM`\xeb\xdc\x11y\xb7\xb0\x90\"wDn\xcacy\xad\x8bdyT\xe5!l\x92\x1e&4\x13\x9a\x84\xe7\xcc9\xcf\xf0\x9c%\xb3\xdcog~#\x08\xa0,0\xad\xbb\xa7,w\xfa\xcc\xf1\x82\xc4\x0b\x81\xc5\xf5\xc2 \xfe@\xb3\xa5\xf8\xed\xb39\xb8n`a\x18\xc4)d/\xc4\x9f`E\xa5\xaf\x07\x08\x80\xa2\xfe\xd3\xe4?\x13\xea\x07,\x02-\xdd\x15M\xc1\x03D\xac\xaaR72\xf0\x93\x877\x0b^\xfc\xd4u\x88\xc244\xebHddJ'\xcd\xb8\xf4\x0d\xc1\xae\xa5\x060\x84;8/(\x1b\xfba6\x07\x0f>\xc4\x1b\x12*\x7f\x99\xc1xk^N:i\x88@\x9c6\\\x9e\"\xf3\xda)\xa2N?p!\xe4\xfcEpV\xd4\x02\x11T\xe8?\xe7/\xa5m\xb5\xf3\"\x0c\xa2\xcf\xe4\xe1\xf7\x0e\x99\x12\xe7\x85\xa3HP\xe7\xfb\x17\x0f\xcb\xdfN\xd9\x95`<\x0f\x12M}\xa9\xe4C\xd9e\xd4\xd3\xed]\x0f\x01T\xc8`Qwoe~q\xe1BO\xeeW\x1f\x9d\xb8\x82(\xe6\x83\x99\x80\xab\n%\xfb\xd0\x0e/\xa2>\xac$Nl\xde\xc1<\xa2S,\xd1p@\xa3\x19\xc9z$=-\x97\xa8\xcfI\x8eK7R5\x85x\x9c\xc1\x86\x02\xa6\n[\xfa\xa4\xce\xbe\xaa0\x83\x0dW>\xb1\xaa\xbe\x9e.\xe3\x0cN\x1e\xd7;+\xe3\x0c\xee=\xae\xc3\xaf\xf1\x15\xa5\xc2\x0c\xee\xd4;\xab\xc2\x0c\xee\xd4 \x91\x1b\xd5\xfc\xfa`\xaa0\x83\x0d\xbb\x8d\x0b)\xb5\xd9{6\x18B\xb8\xc4\x9d\xba\n\xa4\x8a7\xd8\x18\xbe\x13U\xf0\x11\x14\x9c\xf8\xeb\xebB\xa2`r\x0b\xa2\x85\x16{\xf7\xa8\x10\xf9;\xe4l\x19\xa4D\xd0\xf6\x82c%W4%:L,\xb9\xbc!\xff%\xce\xa9H\x9cS\xff5Fn6\xfed\x7f\xd3\x1f(Ka./\xde\xa1'\x83\xb4Z\xfd?36\xbe\xc8\xe8\xe2\\\x1a\xd7(s\xcfl\xac\x97\x85\x1e)\x99jY\x0c\x8a\x1fu&{O\x1dA\x1d\x88\n\x87\xf6\xc1?$\x0e\x81\x0btA\x8f\xa9\x91P\xaa;\x84\xcf \x9c\xda\x96\xb2\xe5\xc0\x8b\xe1\x1a\xc3\x91\x0f\xf6\x89]M\xb4uO6\xfc\xc9\x0eHu\x11\x9b\xd9\xb6\xfa\xce\xc0\xa3\xa4\x15B\x8a\x94\x9fL\x9cA\xa5\x81p\xcf^1\xd158\xf72W\x14\xddu\x86\xb0\xec\x07\xed.M>\xb6x\xdc\x90N\xb6\x133P\xfd\x15\xea!\x19\xf1\x88\xa8m\xa6\xd9\xf8b \xa1!\xda[\xe4\x05\xac\xf2\x07\x0f\xf4\xcfRN#h\xb6\xd7`\x99#a\xa6\xe2W\x87 \xd3\x91\x9b\x0dI\x00>\xb2\x16L\x06\x8e\x85\x88\xc7\x1f\x19\xf5o\xdc\x81v\xa6\xe5\xbe\xc4\xee\x0e\xa0QQ\x9aM \x12\xeb\x99\xa0\xb6v\x16\x97\x9a\xa1:3\xa6\x88\xdf\xe7\xafVKQd\xb6^6\\ \xcd\xc7q^\xc6\xc1\x05\xe7\x92\xa2\xcd\xca\xcfd\xbd\x85*Y\xb7\xa7}i\xbci|l5\x8ey*G\xf0g\xe9\xca\x02\xbe\xd8^\xcd\xa7F5\x97\xb7\xa9\xe6\x1f\x8dj\x16\xdd\xd5\xe8_b5\xbej\x1ca\x19\x8f\x8f.y\x02w\xd3\xe2\x7f\xed\xcc\xcbx|L#i\x0e\xe0x4\x8aCzc\x05)\xfc\xe1h\xc8L&4\x0b\xbc\xcc\xe5|\x1c+\x0f\x85\x8e\xaf\x12<\xcc\xab`\xc6\xe3\x93U\x9c\x05\xe0K\x90\xc9_\x08H\xe4%7q&\x81\xf4o\x0c\xccW >\x9a\x9d$p\xa3\x0e\x91\xfd\x9a\xd9o8\xf5\x99/\xfd\xd6:!\xbc@\xc8\x0f\x0b\xe0[\x96Q\xdf\x04^\xa9\x04\xbc\x80\x8a\x9f\x04\xb0)\x12\xe4\x08\x1c\x96\xe7\xa9\x18\xb0X\xfcG\xb2\xe5L\xe1\xd3$2\x81\x88\x80\xfc Z _$\xa0X\xe6\xc4\xeag\x13\xe8#\xcdX1s \xcd\x98m\xd6N\x19\x03\xf3\x0b'\x85\x1f8\x80lQ*\x7f! \x19\x0d\xa5\xcf\xc9T\xfeB@\xf24\x06I\x8f\x93\xca_M\x90\xb3`\xc5t\xb4$'\x0bV,\xc7B\x1ae<\xfe\x89\x87\xf9\xaa\xec\xdd\x1a^m\xfd\xfb\x99\x06\x99l\xfe\x95\xfce\xd0\x11\x18 \xf6{c\xff^\x8f\xb3\x84z\x9f{\xec\xfd\x1f\x1aeK_\xcb\x82\xe0~\xfdR\x1f\x98{\xf5\x8b\x1a\xb1\xf3\x199 \xea3\xd5\xcc\xc2W\xbe.\xfe\xc8)<\xf4ft\x81\x1du\xd2\xd3{\x00\xba\xfb\xd6 ?\xeap\xc6\xdd\xb5\xcb\xeaMW@\x05>\x06\xb9\xa9/\x86%\xfeA\xba\x1bU\x0e\xdc\xd4\x1e\x01\xb9\x8f\xfc\xcf\x06\x96k\xe0\xcb\x84\xd1\xcf\xcd,\xd9\xb0u\xe03nm6\xcd\xfd\x00\xcb%\xa6\x0c=+]a\xdb\xfbp>$\xaf\x06\xe4U]\x1e\x93\x01\xb1\xd7Vx\x1c\xe7\xe9\xd2E\x86 \x1b\x92W\xb3\xec\\t\xdcB7\xb7v\\j\xac\xdd\xef\x8c\x9cH4Y\xe0\xcb[\xceI\xb0Z|\xf3v\x0d\xc9\xb7\\Us\x9e\xac\xee\xb7\x0b\x1f\x19h\x88\x11'Q?Z\xbap\x9a_\xae\x02)\xb4\xd4\xbfn\xd7\x8d\xc0\x128E\xad \xe9*\xce\x1a\xd7\x8b]g4a\xf4~\xc7\xe1\xb5\n/>\x14\xad\xd3?\x99=$\x01\x82;\x7fj\xe0\xce\x1b\xa0\x9b\xe4\x89\xd0\x87p\xfa\x11\xe5\xfd\xe5%\x07&k\xb8\xa4\xe2\x94Fs\x12<\x1d\xae@\xb0\x0c\xb6\xba\x14\xc7\x1f\x96\xb5\xb4\xd4\x15\xac,\"\x90@\xc6\x14\xc5\xb2>\xb3\x9b\x05\x8b\xf0\xbc0\x88>\xe39\x82\x9e\xc1s\xd4\x1d\n\x96\xa5Ug\xb1<8\x0e\xf1\xac\xab\xcbN\xe1\xcd\xcf\xe84\x89Uf\x95\n\xc5\x89\xad%j5w}\xf3\xff\x80\xff\xbe\xe6WW,\xca\x83\x8c\xad\x90\xf2\xe4\xc7\x9ap\xedW\xd0\xa2\x99\xd1\xd1\xefG\xa3\xbf\x9d\xab\xff\xd3\x8b\xdf\xc6\xbf\x8d~\xf3\xcf\xff\xf2\xe7\x87U\xf0\xbf\"\xb7\x95\xff i\xb5\xd3\x06#B\xfe\x8cJ3\n\xedJ\x1d^\xd0\x199\x03\xf2\xfd\x01\xd9\xa9J0\x02[\xa4\x92\xbfA\xb0\x01\xe4{\xbf\xb4\xc5\xd8\x13|{\x15\x17u\x85\xc4\xf9Oy\x03\xfeW\xf03\xfb\xe5\x0bq\x7f\x05\xf3su\xcf!\x08\x98\xc7\nW\xfeU\xdf\xbd4\xdc\xbc\x16\x04NUFb\x86\x03\xc9\xe8\x824\\C\xea\xcc\x88\xaeX\x1aS\x8f}\xfa\xf8\x9aT\xe3ph\xb9\x94\xbee\xa8e\xc7 [\x07r\x9e\xb9e\x9dRZ[\x1a\xa4\x05,u%\xa99\x17\xb4\xbe\xa5\x9d*\xbcv\xee\xc6\x16\x08\xd5s\x18\x92\xd7Q\x90\x054\xd4t\xbb\xa0%\xe7C\x92\x0c\xc9\xd5@\xfa\xd8o\xfa\xf4\xfb\xda\xe6fP|\xfd\xa4\\\x98\xf0\x8d\xf71\x8b\xce\xe8B\x9a\xdd\x1cE\xfe\x87\xf2\xda*\x85\x0f\xb6,\xf6\xebZ]JA@\xd6\xa5[k\xe9\xa7h\xfe\xd6\xb5@)?\xce\x8a]yN\x0e\xc9\x89X\xdeR\xf3\xebD\xaet\xb2M\xae\xc5/\xb9\xfc\xadKC\x02\xf7@\xe0\x1b\x92\xaf]\x14O\xc7\xc9\xf2\xa68\x82\xe6c\x9ag\x1c\xc2\x88H\xd3\xba\xd6r\xc1x. M\xfe\xe3\x9fr\x14w4\xeb\xd3\xbfSwZ\xa9\" r\x99gY+-\xf7o\xd0\x8dNz\xb3\xa3Q\xff\xe8O\xbc(\x99J\xab\xbeN\x0f\xcc\xd0CCQ+\xd6\xc8\x03l\x83\xb3\xb0\xb8\xd2H\xe0J\x03?\xc7@\xa7\xa7~\x8f\x91t\xc6\x89\x06/\xee\xb3\xa4\xc5T\xcf\x0c)\x11\xd8\xcfP\x0d\xfa\x1ek\x03x\xa7\xfe\xa8N\xa1\x04\xe2\xa2\xd8\x0e\x04\xfdt8\x87\xd5\x8f\x03\xba$\x92\x96\x01\xcb.7P\x7f5&\xc6$6\xdc\xfd\xe3\xebP+\xa2\x08\xa2-\x80x\xf6r\x9a\xe5\xfc\xbe\xe2 \x94H\xdd@-\xa6\x8e\x06\x135\xa29\xc1\xdc\xeccOA'\x9b\xf4\xe4\x9fK,\x0c\xeb\xe8\x90\xbcm\x8e(\xc8\xd4\xc4\x87\xbcz\x9bk~ ]1\xd8\x10(\x01\x85.\xab\x94\xda'\xb9\xd4 \"\xdb\x07\xc4\x01\x15\xa5\xbc}\xc2\xfb\xc6\xcb0\xcc\xc2#\x9f%g\\\xf0\xf9\x81'\xdbA\x0eID\xa6\xfa\xf4\xa9\xd2\x1cf[\x1a\xad\x07\xfa\x03\xf4\x8eZ\x80^\xbfT\x15\x83\xech\xd0\xea\xd3\x1d;\xb5\xfb\xf9s_\x17\xe1Kp\xe2\x80\x93\x16\xb5\xad\xe6J1\xf7\x1c\x1f\x14\x0b\x85\x8f\xa5\xce#\xccRB\xca\x04divP=b\xc1\x7f\x98\x15\x1aYZUL\xd0\x1b\x86\xe2\x98M\x01R?T\xadu\xc0\x0df\x84p]\x83\x9d_)Q\n\x0c\xdc\x89\x1b\xb4\xd1\xc5f \xda\x86\xd3\x12\xbd\xef\xa5\xfcQ\x13\x8aT\xc5[\x18\xff7\x0f\"\xd7qng\xa7O\xca\xa5\xfc\xb3I\xa3 \xce\xf37\x15\x02,\x19{K\x9a\x1ce\xee\x8e\xd8\xbb\x90\xbcM\x1225\xe2^\x10\xeb\xca\xab\xd1\xb7\xbd\xa5\xa6Z\x89\xed~\x97X>\x86\xd3T\x94\x17\x08\xe2\x7f\xc6bs\xa4\x83\x89\xc0\xe8 \x84\x86\x06\x0c\xd8{\x05Z\x1bY\x9c\xd5i\xfbB\x94\xec\xca\xces\x12\x92\x17$\xd5\xb6\x94$\xdc\xde\x1e\xe8fI\x0e6\x19\x92t\x16\x9ew\x912\x8d\xe8\x14\x1e\x0b\x8c\xf0\x14\x9ba1\x8c6i\x0e\x0d\x06e\xdc\xceHv\xb0h\x81\x9b\xc1\xc9\xdf\x8czR7\xe8\xab\x16\xbb\xc5\x16\x00\x19=\xbe\x8c\x82o+\xd7\xefb\x8c\xb8M\xdc\xcb\x15 \x82f\xda\x96%\xb9\x17J\x9a\xdb\xa4\xb3\xbaMh\xe6\x9d\xda\xd4)\xba\xe56\xf1\xacn\x13\x9ay\xa76\xf5\xe0\x03\xb9M\xec\xaa[\x85f\"$\xb3\x9d\x01\x7fW\x14j\x13\xaapE@7`\n,\xa3 \xc4V\x19v\x8b\xf8\xfa-\xde\x95\xda\xd1\x15M\x8c!\xb9\xc6\x83\xe3\xde\x95\x03\xec1\x1f\x97X\x83\xee\xf0\xc9\xcee\xd9\xc1t\xfe\xd4\x8f\xe9\xac\x9f\xfc\xc8\x0co\x80\xade\x8cI\x0b\xcf\x98 >\x00\xf4\x03:\xf3\x08\xc3(Y~4Y\x1f\x7fl\x96 \xe7\x91Yq\x85+\xeb#YN\xed\xecZ;\x1f\x05\xfd\x0cD?\xd3\x01I\xeb\xed\x0e\xa4\xec\x1fX%pU\xf2\xc7\xd7\xc1,8\x07B\xbd\x83\x9d\xb33\x8f\xedW\x8e\x92Z@\xb8`r\x08\x03G L\xad\xdc\xe6\x89`\xcc*\x0c\x1fka\xf8f\xd8A\xecB\x11\xd1\xed9\x90\x81q\xc5dfn\xaa\xd1\xc4\x83M\xd6x\xebZ\x12\xe0\x10\x98\xa6\x87Pb.\xa6\xb0}\xf1\x0dI\xdc\xb5\xa7Hek\xc4\x03\xb2\x15#{\xe3\xcb\x172\x87\xb1\xc0\xf3n\xb5o\xaa_\x9e\x0f\xd0\xca\x1f< \xb1\xa8OL\xc1\\\xfc\xb0\xecR\x91\xd7!\x81\x90\xfbM\x14E\"\xfb\xe9\xa7\xa0\xe0Q\xe9\x94\x98\x1aC85\x07|;\x95k\xa3\xdc\xaa=j\xaf\xc9n\x06\xf6\x9d\x9c\xb2\xacm\x1b\xb7\xdf\x8d\x17\xdf\xdb`\xa3w\xa3`\xdf\xa6|^\x7f\xca\xddrX\xedI\xd1K_u\x81L\xed\xd8\xc5\xdf0\x10k3\x05\x84U\xd4l\x80\x12\xd8\x15\xe3\x98c'\xb2\xf5\xfc\xbd5\xd7]\xb0\xb6\xac\xc2\xda\xb2~\xac\xed\xdd\x99c\nZz-6|\xd6L\xc5\xd1\xe3\xd5\xe6m\x02\x05\xd0\x8f\xbfU\xb5\xa9\xc1\xc6\xf3\x92\x8d/G\x0b/\x16vq\xffx1\xaf\xf25\x03\xbd[\xbc\x07\xcf+\x9f1\xe0\x11\x1aKg\xa5\x05q\xa4B]e\x06\xff\xabIr\x89\xb8#uF{\xa2\xc8\x16 _\x03\xf8\x8c]gJ\xf8\xe8V,>\x03PF(\xe4\x16\xd6\"d\x9b\x04\x03\xe3\x98\xcc\xc9!\xa1P.\xaf\x95SW\x92\x8e\x14\xf2\x1aE\xc2\x1a`\xd1\x81\x10\x0bg]\xdbL\x8a\xffy\x07\x0e\x85\x8b]\x84\xed\x1d%F\xab\x1b\xd5 u\xe6\x91]\x95\x10\xabyC\x9e\xfd\xff\xe9\xe2\x19\x8f\xd6\xf9\x95c\x87[\x01\xd8\x0f\x07iV\xdezvT<\\\xed<'\x11yA\xb2B\xfa\x15mo\x0fH6\x8b\xce\x95\x0e\x87\xcd\xf2\x9c\xf4a\xe7\xda\xf8\xd9\xde<\xe6\xf58\xcdx|\x96P\xefs\x10-\xbaN\xc7\xce6\x81\xc3\x82\xb6&-\x19\xf5\xdboo\xb9\x7f\xd3\xd2\xde\xc4u\x9e6\x1f\xe93\\\xf6\xd9i*C\xea\xa7\x8f&\x8bA6\xe0\x07\xa2\xf4h|\xc7\x03\xf1\xe9\xb3\xba\xcb2\x0e\x86\x87\xa3U:\xea\xf4\xdc]_\xeaj\xeb&n\xe1e\xdd\xe5C\xe2\xac\xd2\x913\xa8\xe3\xda;\xb5\xfb\xe1\xc8\x1d\x0f\x1e.n\xd9\xbe\xb2u\xc9\xb0\x1b\x85kW\xe0\xe3\x8c\x7f\x12\x14$\xe2\x02\xfc\xeb\xbdv\xceF\xa5(\xaa!\x19\x07\xe9\xa7(\xc8B\x96\xa6\xef\xc0\x7f\xd9\xa0k\x1cZ]\x19iQ\x02h@9\x97\x9c\x87\x8cV\\\x17\xcb\x0c\xa5\xc0_z\xe0\xaa\xed\x04\xady\x11\xa4\xef\xe8;7\xab\xa1\x07\xbd2DU \xe80\x9c(s\xc4?\xe5\x83\x07\x84K/\x922\xd2\x05\x99\x82\x08\xbc\x11!\x80HG\xe3`\x96\x99\x04+\xd0\xcf\xca\xc4y\x13_7N\xf7;N\xca\xfe\x0e6)\x0f\xff~\xb7\x8d2\xa8\xec\x94\x11l\x95\xfbl\xf7Cwv4\xfa\xdb\xf9=m\x16g\xf4\xe7\x893\xb08\xc3\xbfCk\xfb\xb5H\xcb\x0b\xfe\xf8\x8a.\xae\xa2 z\xe6\x17\xdb\xb8\xb6\xd8\"y\xf9\x90\xcd\"pq-M\x89\xa5\x14>\x82\xd54\x8b\xec~\x05\xc8m;lpg\x8fw:\xf7\xafej\xbes\xbe#\xdb\xb0\x88\xc8\xb6x\xb9\xe7\x86M\xcc\x86i\x92\xa9\xda\x10q\x08\x87\xecL\xd9\xfcb\xa2l\x8e\xcdE\x97A7\x01?\xa9\xea\xa6\x1b\xdc>\xa4 !(|\xa7B\xda\xff\x07\xf7\xe0[\x13\x84\x9ft\x931\xbb\xce\x12\xeae\xbat\xd9\x1e+s\x8e\xcf\xc2\xbd\x84~\xd9}2\xc0\xec\xe09z\xe8h\x9e\xc1\xb2\xcc\xa3\x19\xabn\xc0s\xcc*=\x9a9?\xb3\xcb\xcfA\x06\xae\xff\x80\x1c\xb9*\xde3\xc8\x7f\xcb\x7f/3W\xf2E\xe6\xac\xd22\xe3\xedi\x99\xfe\xbeL\xe6\x90\xda\xf8jm \x12\xe3`hN3\x8d\x82\x15\xb8\xf8\x02OM\xdcu\x8et\x823$\xe5\xcbI\xe4c|KQ:\xc8\x98\xf4\x14\xd6R\xc7k\x0d\xd3Z\x93\n\xf5g\xad\x05\x9cqa5d\x89\xa0?\xcd\xae\x9c\x15)\xa2\x86\xf2\x0d:S]\x81My\x02\xe6v\xde\\\x0d\xa6k{q\x00\xe6\xfd\x18\xf6\xca\xa0\x8a}\x01Q\x1b\xae\x82\xc8\xe7W\x80\x04\xa5\xa8\x8d\x04csf\xca\x97!i\x02\x14\x83\xdf\x0e\x06#[\xbe\x0e\xaac\x82\xb4\xa5\xa8\xa22\xb4\xc6[o\x9f\xd9\x82\xc6\xa13v^P.\xe2\xe5y\x03d+0a\x90h(\xe2\xe4 \x1aE\x0d\x113\xce)\xa2\\b$5\\D\x91\xbc\xd2.P`\x88\xce\xd1\x8d_qIJ\xee\x8e\x946s\xfc\xdct\xc1,%_\xbb\x93\xba\x0f\xe3\x1c\x97:J\xc7\xcf\x8f\xf6\x8cCE\xbb#~\x86b\xc7\xb0\xdb\xbd\x19h\x13 zY\xc6@5\xeb\xf5\xac\x07\xaa\xe3-\x99\xf7\xf9\x92_\xebHU:,\x1c\xb8\x84\xe7\x95\xd4\xc3R;d\x0c\xc5\x98oj\x8c\x8c!R\x9b\x05\x1d6\xa3)\x98\xaa|\x1b\x88\x95\xe8x\xa1$ nf\x11\xed$\x1a\xecX6\xb2A\x9a\x93\xb2\xff\x98\xcf\x1a\xf1\xc8\xb0\x9aR\xe8f\xb9f\x850\xa8m\x10\x10(\xba\x15\x80^k\x80F\xfeWX\xddx\xe3Tx\x7f\xd5\xbd\xf6o(\xd8\x9fd\xd8\xc16H\x15\x99P\xcfg\xa4\xccFX\xed\x9e*\x90*\xf4P!^\x91\xa7\xdb\xa5\xabJ\xc8!h\xe8[\xaaR\xfd\xc0++\xddc\xd6K\xeb\x9c\xe6\xd0\xb5\x9e6\xa6\xd9\xff\x06\xeb.\x1b\x9b#\xd9\\O\xac\xa7\x8b\x8dj\x9f\xcb1\xca\x8a-uh\xfc\x9e\x96\xdfm\x1d%sR\xcc:aN\xa1F\xf9kJl\xb7\xffU\x8f\x1f]s\xd1M\xcc\x92\xc6m'\xa6\x11\xde.\x9b\x95\xfb\x9d]3/\xcf\xd8{\xf5q7k\xb7mK\xc74\xa5\xb1\x1bv\x1aI\xae\x0b\x85\xf6\x88\xaeZ,\xe4Azh`Ce\xfbk\xe8k\xa2\x14\xbf\xf9\x14G\xa68Xr\xfb=\xd1\x10\xee0\x82\xe7\xc43\xc2\xf7=\x1f@j%\xa9\xdf\xd7\xe6P\xec\x1f9KnNA\xf7\x96'Ga\xe8\xca\x9b\xdb\x99\xe8\xf5\x81\xa0i\xff\xcf\xe9\xfbwc)i\x08\xe67Re\x01D\xd8\xdf\x9d\x83\xda\xcc\x81\xea\xfd\xf9w\x03\xe9\x02`\xe79\x89\xc9\x8b\"\xf4\xd9s\x12oow\x0d\x01Q#\xee\x83\xd6Y\xdc!\xb3$j\xdc\xfdR'\xc3\x1f\xcfy\xb2\x82\x19\x08\xe0g\x9f/\x12\xf5\xd5\xa5\x1ew=\xdeb\xec\xe1\xd2\xb5\x1e;\xcd\xf6,\x95c\xadg\xe0\xe4\xbb\\d\xcbn\xc9*.\xfa\xec\xce\xb5\xe7\xa0\x01\xa8\xf4\xf3u|\x19D>\x1a\x9eO<\x1e\x8f\xb2\x84Ko\xb2\x1e\xa6N\xd0\xaaM]\xa1<\xba\xf0\xc0\xda\xea@\xbfe\xf3Kd\xab\x10`sn\xca\xe3\xe9\xc1\x03\x12\xa0\xdaq\xf8\x06\x13\xdc\xb4\xa3\xaa\x85;\x1b\x88}\x8b\xcc\xbe&\x17\xad\xd5\xe0\xb8\xb1N\x9b4+\xaeZ\x84\xe1x|N\\)'\xe4pG\xa1M\xde\x00{\x0f\xf4\x0f\xc1\x8d\xeeX\xc4\xf2\xc5MD\x11\xd2\xad\xc4Y]\xb8\x1aD\xec4I\xe5]\xa1\xab\xbe6$\x93\x1d\x90\x18\xb5\xdc\xc9\xb8\\\xeai)\x8f1RcK\xb7VbH0\xa9,\xdb/\x91\x0c\xbe\x80e'\xca\xe2\x1a\x1c\xaf\x039\x8b!\xd6\xa3\x16\xf2*x\x03_W\xcfr\xd9\xd4JJ\xf1\xc9&\xa4[\x03E\x01\xb5f\xd9\x81y\xaec\x0d8.\xf3\xca\x8au\xe2\x01\xd9\xda\xaaC\xb6\x926u/\xe8\xdfl\x7f\xda\xb6Fs*\ne\xb1\xd6\x05\xa8\xf4\xab\xa4\xd7\xd66\xed\x1c\xe9\x05\xb6\xc5d\xa5KA\x08\x02\xbd\xb7~\x02\x9a\x06\x1a\x85\xdc\xa3\xed*I+\x1ee\xcbv=\xaa\xae\xaf]1f\xd3n#\x10a\xb5\xdc2C\xe3-\xea\xa0i\xf5\xd32\xaa\xaa\x82>\xdf\x8ej\x0c\xa2~\x9a\xc7\\\xc1\xb0[(3eb*\xdd\x11H \xa99?,\xbbdl\xa2zZ_(\xfc3u\x05\xcd\xe2\xcd\"M\x9dC\xea\xad\x04\x17f5\xce\xe9\xc9\xf1\xc7\x93\xb3\x8b\x97\xef/\xde\xbd?\xbb\xf8ptzzq\xf6\xe3\xeb\xd3\x8b\xf7\x1f/~}\xff\xe9\xe2\xe7\xd7o\xde\\\xfcpr\xf1\xea\xf5\xc7\x93\x97\xce\xed\xbfi\x08K\xeaR\x11\x15o\xb9\x1e\x0d+\xc0\x85\x1f\x94\xe0q\xa0\xf2\xf2^\x0f\x8e\xdf\"\xb3\x90V\xa4\xf6{\x90\xfa\x15\x9c\xe6\xe2\xc7Z\xad\xae\x88K\xc7\x86\x1d\xc8\xaf\x90[\x10\xe9\x9f\xacq\xd3&\xc5 \xe5)Z\xa6\x1f\x92\x8cl\x8b\x92SiN\x01\xd2\xc8\xad\x9d\xba\x9c}0$Y\xb9:*#\x1c\xe2\xee\xd9\xb8\xe9K\xc2\xd0\xa5\x96\x94\x8b2\xf6\xab\x17,d3\x92!\x01\xc4\x03\xea\xd5\xd7\x99[\xbf\xa8 V\xe4\x10\x0c[\xbc\x80\x98=\xb7X@\x08\x90\xc0PDo2\xca\xdbb\xf7OI\xea\x96\xfa\xef\x03\xf9\xd1\xad\xc9\xb0\x16\xe0\xb7]7\xa9\xe0\xc6\x0c{\xf4\xa4b\x8fn-J4\xf7 .\x0ef\xe1\xb9\xe4~\xfa0>rEv\xb36\x80\xda[\xa1,\x8a\x1b\xa5Y\x90l\x9dl\xda\xed\xe5\"r\xbd\x08\xa6$\xefX\x04\xdf\x96\xe8\xb1s\x1c\x06!\x19X\xe8\x9f\x8a\x037\xd7\x01xg\xa8K\xb6\xd2n\xb7\x14\x87&\x16\xf9e9\x9cm\"\xbf2l[\x8b\x14\x12\xa1\xeaJ\x99oU$\xa7\xbf\xaaN\xcc\xe2\xd5\x0ei\xe1\xbf\xc0\xe7\xa3\xb9\xf7\xec\x02\\\xf5-\xaft5\xcd+\xd7r\xa4\xcf!-U\xee\xeez`nt\xbb\xd0\xbcE\xa0\xf8A\x9aoz\x8b\x90\xf6\xbaE\x08;n\x11\xf4/\xfc\xb8\xdap\xb9j\x81E\xc9\xff\xd8\xad\x9e\x12\xd7y6q \x82\xfe\x1fmRp%\xaf\xbe\x1f\xe1w\xb9\x13\x1c\x159nC\xa1\xf7\xbf\x8b\x9c:\xe8\xbe\x1f\xb1\x9c\xf8\xa6fT+\xc5@\x1b\xe2p\xbb\x187$\x07\x9d\x0ed*\x96QnE\xd7V\xac\x85]\xb1\x16\xaa'n(\xc5 \xa1:F\xc9\x8b\x032\xd1\xf2\xb9=G\xf9~ g;\xe7\x03\xe9\xdc\x16\xe644\xb8r\xa9\xc8K5\xd7\x00\xc2\x9b\xe6\xfc4R\xfa\x1efUq\xbc\x94S\xfc_&w\x0f6\x95\xbb\xab-\x9eK\xc9hZ8m\xec\x10Rv\x8c\xfa\xbfD\xfcH7\x92\xfc%\xf5]\xd7E\x92v\x10\xe3\x92\x9e\xc2\x07Z\xda(F%%\xe2\x96\xfc5\xafH\x9d\x1ar\xab\xa8.\xb7B\xa4o\xcd\x15o\x17\x995+\xac\xc9\xc0\xda\xe6\xf1\xb6D\xdbf3#E\xc9Yi\xc1\x89P2\xea\x82\xdb\x8e\xee\xa1\xafY)\xc5\xd8\x90\xfd\xff\x96\x94\xc5\xee.f\xcf\xe4\n\xf8]\x19\xe4X\xda\xf2l\xaeg\xa3A\x9f*v\xc3\xa85\xfd\x90\xf0\xa1\x9dQ\x04Y\xbfv\x90\xd6\xd6\xec\x14\x1cGgC8;i\xdd`\x99\x0dE-\xc5\xe7\xa4\x06\xa9\xbd\x86\xf28B\x17V\xc7\xaa\xe0bU\xd0\x86\x05q\x04\x12T\xd8\x0fQ}M\xf0\"\x9a\xf6d\xdffg\xa5\x95\xbeg\xaer+h_DR\x1d\xca9;\xf9\xe5\xec\xe2\xf8\xfd\xbb\xb3\x93wg\x16G\xacD]1\xc3\xd0X\xa2 \x8bg\x0e\x07\xb8\xcf\xae\xbb\xbcR\xce\xd5M}\x17\\\xc6{UG\xe7\x19K\xca\xfaP\xb8\xaf\x03\xcc\x1d\xa4m14\xdd\xd8\xfe\x8f_\x07\xa7'g\x17o\x8f>\xfe\xf5\xd3\x87\xff\xb7\nH\xdeq\x1c\xdbVCf\xf8\x16\xbc\x1dIp\xdb/\xd7\xcf\xc9\xea\"\xb4\x8f\x1aG\x14\xb5\xcd\x87v\x9c\x809r6W\x89\x19Wz0\xa5\x92\xa0\xb0\x9f\xcf\xe2\x1c\x84\xab\x97V\xe7wp\x0c\x0d\x0b\x973\xed'\x1f(6\xb5\x83\xf8\xdd \xcbn\x90\xb5\xf5\xe6B?\xb0\xe1=\xa9*\xddZ\x15\x0cC}\xcb{\x9d\xe4\x00Qc\xb3\"\xeav3\x99y=\xe8\x02\xf1,\x04E8\xf3z\xa8oIU\xad\x059$\xee\x1c\xa4\xb9su\xe4\x97\xc1cVC\xb2\x1eB$\x9e\xc1@\x86\xe3yK\xb3\xe5xE\xaf\xdd\x95y\xc0\x0b\x80!Y\xd5\xce\xfc\x18|\xf1\xad\x80\xb1h/\xabB:\x95M\xb8(\x11\xe8\x91\x04s\x17CBg\xcbs\xdd\xa2L\xd9B-\xb7\xb7\x07C\x12\x0b\xf2b\xad\xf9|\xed\x81\xc7E\x9c\x7f\x98\x8f]\x7f\xab\x9c`>h\x1a\x03zR\xbaUk\xb2\x89\xf5]\x980\xc2g\xde\xf9\xa0\xcdm>\xf8?\xd2\xe8}^\xfa\x0fi\xd2\xb5\xcdK\x17\x82\xf6\x00\xc3\x7f\x91\x95\\o=\x087<\x05\x9b\xe7^f\xfah\xb5\x84\x9c\xec\xd3\x81bA\xf6vLF\n7\x05\xe6\x92|!\x80\xeb\x96y\x1d\xa8\x98\x94\xf4g\xfb\x9eU'\xef\xdb\xf7?\x9d\\\x9c\xfc\xf2\xfa\xf4\xec\xf5\xbb\xffl9|\x89y\x00w#?\xe3\x1c\xae\xf4\xa9\xbb\x94{\xcd\xae\x11\xaf\xac\xc7E\n\xb1L\xed}\xcd\xeb\xc7\x13\xd8\xc3\xef\xde\xbf<\xe9;\xab\xdd\xe3\x7f\xd7\xfd\xdbB\xa2\x93\xfeT5\xe9IY\x93\x8em\xdbkV\x9bg\xf8-$a\x85\xc5w\x95\xb4H\xd4\xa9b\xe0\x05Qe\xd4\xbbm\xe6Q\xd5s\xcd\xe9\x0b<\xf8\xb0\x19b\x8f\xe1w\xf0\xc4\xde\xfcH\xbaBl\xb6\xf4O\xf8\x9bEt\xedA\xea\xadD\xd7\xa5\x9b'\xd4\xd6W\xb9\x17\xa8\xfb\xe1 \x86\xa7\xae\xfa-8)\xa5\xdb\xbb\xbb{ \x97\xde\xdd\xdd\xad\x0b\xb4\x89\xa1x\xb6_\x1b\xb4\xdau91\x85\xccy\xc7\x81\xbfV\xb6\x1b\x86\x17&\xd60Z$\xe6} \xa8\x89H\xa1\xb7\xb4\xb3\xe7\x82^i*\x89U\xc7FV\xbfu\xa0*x\x0fN \x11\x15\x0f\x81=.N\xde\xfd4%N\x9cp?\x87^ \xe8\xe4\xe7\x93\x1f>\x1c\x1d\xff\xf5\xe2\xf5\xbb7\xaf\xdf\x9d\\\x9c\x9e\xfd\xfa\xe6\xe4tJ\xb6&\xd5F\xd4FJ\x8b\x0b\x9b\xdfE\xa4\xd8\x1b\x13M\xfa\x8e\x8a\x0dL\xb5\x80v\xb9j\xdd0\\?Z\xbc.>\x9d\xcb@\x01\x1b\x88\xf1\xda\xba@\xa1\xc2\x14\xa2U{\xe0k\xd7\xde#\xf0\xe9\xd1y#+\xf8\x9c\x0e\x9e/n\xf1\xbd\xa4\x1f\xd4\xba6\xee\xcd\xf3 \x06\x15\xd8%\xb8\xd8b\xb3\xf8\x1c\xb8\x0d\xbf~G\xda\x8f\x1d\\\x83\xf5n_k\x1e\xbd9@?(p\x97C\xb2\x1e\x0cH2\xae\x07Sq}`\xc3\xf2!\xf8b\xca\xa4\x1f\xa2\x96\xb1\xd3O\x0f\xbfJ\xfa\x91*JTV\x9dT\xa8W\x1f\xdc.\xd4\xbd\xa2\x8a6mM\xfa\xc4(#\x06w\xcd\xdd5l\xfa~\xa5TOW\xfd\xa0\xc57\x16\xd0\xfaZKW\xf5\xa5\xdb\xaf\xbeH\x8a\xcf;\x98Z\xd2\xca\xd8\xb6\xe7\x96k\x9c\x0d\xc8V\xc3\xc7[\x0cV&\x80\xf8\x90\x05.\xcd\xf5\xc1[[|.\x98\xf5\x8d\xa7\x0em\xd7]Y\xdc\x96\x13\xbdj(o\xf1vG\x88\xc5\xe3]\xd4\xb9\xa55r\xc4O\"\xf3A\xc6\x84\xa3\xb4\x8c~\x90Q\xa9\xa4\xd4\xd0\xb1I5\x94\x17|_\x07\xca\xb5\x8c8\xac\x1f?V\x13p+z\xa2\xf3*\xdc\xa2d\xd7PV\xa7\x96\x8bs\xa5dW\xf7\x89\x99*U\xbd\xba#\x80P\xb5\xa5\x9e\xeeU|h\xee=y\\'P\xe68\xe5\x13\xcb\xfa\x1a>9}Y\xdf\xbe\xa2w&\xf5\xea\x96\xaa;\xf5v\xacK%\xfbzO\x05Z\xaa9\xce\x14Xd\x17\xbb\xd2\x07\xc7T\x7f`\xb7\xf2\x97\xe8\xca/\x15H\xcb\xe5rS:\x7fU\xd1 M\xdf\x15\x18u\xc8\xc8\x01 \xc5\xbe\x96:\x89xX\xe8\xc6\x02\x85\xbb\x0b\xe9\x94Z\xaa\xf7(\x12^*\x97Wbf\xd5c\x0d(*B\xf5\xa9\xa2\xb5_]\x82\x17\xcd\xb1\xbbB\xe9$\x8fGi\x96\xe4^\xaf\xebALM\xcb\x88\xf3eq\xf7\xeb\x89\xad\x9c\x06\x19;\xbb\x89YA\xf4\xcb\xbc@i\xc6\xd4\x92\x8d\xd0\x8f\xcd\x8c\xca%l-_\x0e\xdb\x0f4\xf3\x96\xd2\xffZ-?f\x91\x1fD\x8b\xb2\xedH&h\xd6\x80\x03#<\xff\xa3\xf4\xb9\xa5\x15\xeb\xb6&\xb5\xfcW<\xf1\x98\xbc-\xa8dk\xc1\x9f\x18!d(\n\xb9\xa0\xc6|\xb5|\xb5>j\xa9\x80,\xdf'r\xb1\x16C\x9e)\xafOJi \xef\xc71\x0d\xc3K\xea}N\xeb\x1f\xa2ah4\xe3\xe7 \x0c?I\xa4\x0c\xddi\xac\x0c\xabZD[\xe46\xab%z\xbd\xb3\x1c\xed\xe9\xc5\xf66\xbaV\xb2\xd6\x85b'\xdd\xe9\xd0\xb8\xf3\xe9\xaf\x83G\x14\xe6U\xe3\xaa\x14}\n+\x11{!\xcf\xf61\x1ce\xe8g\x0eJ\x82\x0b\x96\xc9\xe5%\xbdl\xb5|\xc6o\xf5\xbeS\x7f\x14v\xd9r\xb7X\x89\n\xc1\xfa\xd8x\x1f\x07)\x04\xbe*f\xb7\xe5lv\xbd\x96\xb6-\xcb!\xd08\xa8B\x08I\xca\xd0F\x13\xfafD\x86%1LV\x97\x1ay\x1f\xf6\xf2eF6\xe8\xf8\x87\x9d\xe9\xb3tl\xb2\xeb\xb6N\x05\xd2\xb8!\x91\x1e\x06b\x1eD\x99-\xa0\x07\xee\xaa^?E\xd4Vl\xa5V\x9b\x83#f\xed\xda>o=\x0e\xc6 \x97\xa4\x91K\x07u\x1c\x86\xee=7o\xd9\xf9\xa0\x96]\xadC#\xa7\n\xdd\xf0\xc1(Y/`2\ne\xaa\xc2\xc2\x83\x016\xbeV\xba\xb2\xc9bo\xed\x808\xa2\xd2\xeb;\x0fu\xdbZ\x0dn\xb9\x1ao\xb5\xf8\x8aq\xd6\xe3f\xa7IZ4_\x83\x12\x83 \x8a\xb8@|.\x96\xe1v,\x87\xa0\xc7\n\x08\xf4\xa4\x07\xe5<\x0f\x86\x15\xc1~\xa1\xaan\xce4\x90\x0543&\xdc\xb5 \x03\xd7\xca\xe5\xbd'\x90\xb78\xecQ\xcf\x18\xa4\xa1flp0H0,b\x08\xe6\xcd\x81\x07a|\x95|\x02i8\xdc\"x\xe3\x93\xb7\x1f\xce~m\xbf>\xb2,hI\x85\xcc\x11\x15\xdeD/\x92*\x81\xbe\x0cB\xdf\xa0\xd2\xb1(\xde\xc8z\xec\x1f\xd2\x8a\x187\xb3\x15\xb1\x9f\xa5\x03\xbd>\xbfi\xf4+\xa2E\xf0\x96ov\\\x02d\x8dmc\x97\xdcII\xbf\x87q\x8c\x0f\x1e\x90\xad\xac\x8d\xa7\xecs\x87\xd0\xc1\x92\xee\x0c\xdb\xef4\xf4S\xb9\xb8, \xbam\xe2\xa0mw\x07\x1d\x01\x05\x08\xe8w\x07\xd1\x9a\x7ff\xff\x99\xd3\xc4g\xbe\xe6\xa9A\x05\x00\xadU\x9a\x93e-!E )\xac\xd6\xf1*\xda\x82a\xd9\xb6\x08\xe8i51\xbf\x05\x1c\xd3W\xba\xa5\xd8\xa2&\xe1\xf9\xf6\x14r%\xdb&\xe3h\x95\x03\xe1\x92\x16\\\xb8e\x93\xb4\x84:p\x99\x8dE\xec\xb3\xe5/V4\xfd\xac\x10U\x9f\xed\xben3\xa7\x04\x1eVuM\xcc\xa3%\xec\x07\xf8\xdb-C \xc4v\xfc\x8e\xf9\xc1\xd6O5~N6 \xd1,9o\x0d`c\xf5\x14\x87\x8dKU\xd2\xb2\xf9\xd0\x18\xe3j=\xf2\xf4\x99\xb3Q\x83\x8c\x93\xa5w\xabL=\xfb\x8d\xa4AM\xca\xc6>\xa5\x81t3[6\x8f\xe8\xe8\x0c\x8d\x1c\x19\xa8\xa1\x0d\xa1VC\xf0 \\\xb5\xf2rpl\xac\xb6\x82\xa5~\xba9K=\x90\x1f\xc2j\xd5B\x8f\xfd\xcdj\x15g\xbe\x1d\x89\x96.w\xbf\x02\xdf\xdb{\x0f\x13\x83\x1d\xeb\xb5n\x80`7;\xd4_\xab\x0f\xf3\x81\xd1H\xaa_X\xf7\xaf~]Q\xbd\xef{\xe5\xceM\xa1\x9e\xe8T\x1b9\xd9\x86\x84\x95\xdeCyP\x011\xc7@I\xaa\x9f\xaa\xa4b\x1f\xe4\xd9\xf0z\xfe\x8e\x89\x0dJ\x93\x9b>\xfb\xb2P\x8e\xc1\xdayH\xe6ME\x80\xcc\xb0\x14\xab\xc2\x0f\xcb\xfb\x11M\xc7\x97\xce\xa8\x0f\xac\xa7\xe1\x97/\xf6\x83\xee\x10\x1f\xa3\xf2;\xd5\xd9jO\xad\\;\x99M\x94 \xb6\x1b\x95>SPk z\x0f\xd0a\xfdI{\xe2\xb8\xc8\xf4\x97 0\xc2\xde\xa6\xa2\xbb\x16\x16i\x08\xbc\xcc\xd6\xa4m1\x17D\xc3\x81\x0c\xd2\x9b\x83\x11\xb8N\x9dJ\xd7[jF\xab\xf7\x04\xc1@\xd5o\xd3\xbeX+\xc7&\x9dW\x11\x10\xe2\xd8\xe6\x1d\x88\xc0\xd5#X\xe5\x03\xeeW\x9f\x1cJ\x17\x98\xb4Ji~\x94\xeb\x1b\xbc\xa6td\xbb\x9e=\xa6\xd9Z\x07\xfe7\xfb]\xe1r\xa1\xb0\xbdGq\x8bw(\xeb\xf6\x80\xf8h\xe3t\xc9\xf3\xb0$K\x8b\xad\x13\xc3\xc4\xa0\xb9\xa25\xf3\xa1\x8c\x82\xacg\xb5\"\n?8 \xd2\x8c\x03\xda\xe5\xbb\xe1\x90x\xb0\xac\xb6|\xf1E\xd1\xa3!\x99\x03\x9f\xde\xbe{\x86$&\x87\x9a7\xeb$e\x01\x91\xd5\xdb\x1aI\x9d\x19\xb8(ab\x17\x81\x95 \xb6\xd5\xc57\x9b\xb4m0$\xb4\x10\xea{\xe2E\xcb$\xe6Cc\xe5\x1e`\xa6=-$\x909\xbb=\xd5O*|Y\x0f)My,5\xd0f\x1fb \xe1,\xect\x93\xb5\x08\xc6m \xcc\xccVii\x11\xb5]dHGo\x0f\x1e\x90\x89r\xa4+\x1d\xc6\x14\x85\x93\xd9\x8e\x85p6\x88\xb1\x03E\xb2\x08\xfc#\n\x88sF~T\xb9\x84\x13\x19\x132%;\xcfI^\xf1\xee\x96\xb7\xfb\xc5^\x1bf\xd9v\xb2\x89\xbbtH\x1c=\xe5\xa6'\xc2\x94\x1c\x92T\xea\xd8H\x8dE\xb9\x1c\xa6$\xbd\x05e\x85\xf8\xbf\xc1\x96#\xbakn\xa1y\xad\xaf\x87\x87\xda\x13A\xdfe*\xb0\xf1\x0f2d\x9b\x1bV\xee?d[,8\xd3#\xda\xe3O\xa8%\x809\xbc(\xf4\x02\xbe:\n\x91\xe0\x90\x845\x19\x81D \xe07\x0b\xc9(\xee\x03p\xaa\xc0\xd4\xe6\xa8\xa0\x8a\xb0@\x15\xd9P\xb7E\xe2\x95\xd0@\x15I\x15\xef}\xac\xcb\x06\\\x18\xe8\xa1\xec#o\xbf2\xc2\x86L\nO\xc2B\xe9Ut\xbf\x1fv\xb24\xe8V\x18\xaa).iEU\xd1m\xc8g\xbb,\xb7\x1d\xc5\xd9\xa4\xd7s\xe2.]\x10\x95\x0f0\xf2URb\xacMP\x9a\xd9\xa4\xc8\x1d\xca\xac\x1a5U%\xa16{Y\xf1 r\xaah\x88\xbb@\xd7OS\x92\x8d\xb9\xdb\xd6Ou\x1a\xbb\xa5\xd9d\x03\x896\xef'\xd1&-\xb2\xba\xd6\x90\xac\x9a\x18\xc4\xc4\xdd\xc5\xfc\x95:1fJ\xcd{E\xdbT\x8bm\xda\xddp8\x0d\xc5\xf0\xfd\x1cdK\xe9]@\x1c\x01!\xca\xa2\x91\xdeR/\xb4\xe2\xfe\x9c+\x1d\xe3-c\x1b\xd8\xd9Y\xf7\x9fy\xb9\xfb>i\x8az\xda0\x08\xeb\xc9\xcb\x14\xc62\xb2\x11\xee\xddZ\xdc\xb7q]4P\x95\x14\x16+|\xd1F2\xe4c\x85\xf4T\xa7[VS\xeb\x95\xafx\xba\xaf\xb8\xd0iA\x06N?_\xc9<\x88h\x18v}\xd9\xec\x05\xca\xf5\xea\xa7\xd5\xf9\xec\xad\xdb\xdf.*\xd5\xdaA\xcc\xd0\x0eb\xa8v\x10+\xb5\x83\x9em\xc8\x16\x0f\xfbI\xb2h\x96Qo\xf9\x91\xcdos\xa2.X\xf6!\xbf\x0c\x03\xafp\x94f\xe9\xb9\xe6\xf2#\xcd\xe5Ov\xda\x18w\x194\xa7w\xedn\xa4\x14\x99\x0e\x0e\x80=\xd3\xaf\xe4\x8f\xaf@I\x8b\xb7\x81\x0c\x04\xd7\xcbv\xc7g\xc8\x98\xd8\x06D\x05\xd5\xb3\x8d\x07||\xc6\xce\xfb|W\xcdl\xdf\x8d\x7f;\xe1s\xf3~\x10\xcc!*)\xe3B9\x86[\xdcQ\x15\xa8\xae\xa6\xae\xa6l+j\xa9\xacPbS\xf9\xfa\xb5\xaf@\xaa1\xb0\x1b\x8fQ/\xcc\x8d!L\xedc\x02\x96\xf0\xb4\xdf\xa6\xb2\x93\x19\x88\xcd\xaa\xc56R*X\xdd\xc9\x96a\x82\xd7l\x1d9\xcd\xb2no\x17\xc9_\xef\xde\n\x94\xb1<\xbdY]rp\xc7*\x7f\x8d\x057\\ys\x9dD\x8c\xdc\x98\xc9U\xed\x00\xba{\xb23\xd9\xd9\xc3{\x95\xfc\xb3Z*\xa3s\xf2\xa4:\xed\xe0W\xf3\x7f\xffo\x9dy\xeb8\xcc*\x04\x0c\xa8\xe6\xcd\x92s\xd8=3~^\xc3|\xe0\xb3\x1dkmy\x01X\x0f\x0cp\xab\x91i\xb1\xb2\x95V\xb2\xcf\x1b\x9d\x90F4\x9b\x19\xc7\xf2\x0e%;0_\x12CR\\Y\x19\xc1\x12\xda\xf6?\x18/\xb53^\x86^\x0e\xb7\x9a9\xed\x0c\xa5\xa9md\x1a\xdf\xba\\\xda\xddvG\xb8\xaa\x0e\xd2\xbf\xca\x04\xd7\x16\xdc\xd5r\xda\xe3\x96\xb4\x08\x02m\xbbS\xd6(\xc5\xd57@-\x8e\xd3\xbf\x891\x17\x1eb\xe4I\xdd3\xba\x0e1\xf2\x14\xb1\xe6*\xcd\xad\xf6'\x0d\x07\xa79x\xa4\xaa~\xbai\xd9\xacd#\xd5S\xabb\x1e_\xfc.6E\xd8D\x12p>%L9\x8f\x0d~g\x10\xef\x97\xaa\x1a\x87:_\x90\xaag\xfc4\xa3Y\xe0I\x1e\xca\x10\x0f\xe5);6\xa3\x19\x9b\xf2\xd0\xbc\xb4NP\xea\xe5\xb4\xd5k{\xd3\xdd\xa9\xe0\xe2\xcb6)\xe5\x8a\xb4\xe3\xb4V\x8b\xa4\xea!\xa8v\xac6EN\xfd*M;*5\x0c2\xfaUX\x1f\xa8\xb6\xfa}\xa6\xa9\xa8\xda\xccW\xc1J\xed\xcfV0\xad\xe6\xd9\xb2\x8a\nP7,\x0d \xc03\xaa7\x18\x12>\xa6\xbe\xff\x81\xf30\x88\x16g\xdc\x0dk\x18\xe1^\x1c \xef\xee>2\x10\xbfD\xfa&\x14o#@\x8a\xb5\xcf\x9a\xe7\x0d\xa9\xc5\xb8o\xe1Q@\x15\xc6eD\xd3|p.\x0eH\xb6L\xf8\x15\xacjA\xd8I\xfd_\xe7\x98F\x11\xcf\x88\xc0<\x84\x12/\xa4iJhJh\xf1%\x07\xc1\xee\xea\xd6\xb8\xd0\xb5\xca\xca%/\xce\x83\xea\x92\xa8\xce\xa1\xa6\x9bM\xf3\x14X\xd3\xac\xdb\xe6G\x9b\xbb\xd4\x10\xfb\xb0R\x9dB5Z\x81\xaa\x8e\xe9-\xf2\x97z7\xc6A\xfa:\xaa`\x17\xe0\xdc\xea\xb5\xe3\xb2\x19\xbcE\xd5k\xb2\xf6\x9en\xd8\x1c\xa3\xea\xba\xc3w\xbc-\xb5\x0b\xa1\xceU\xb5a{\xcc\xea\xdd\xa6\x1e\n\xde\xa6S\x96}\xab\xf6\xe8\xaa-m)1\x88\xc9a\x9b\xa8\x81\xdf\x07j\xb0\x9c\xc5\xfb\xb6\xb3\x189\x8a{\xac\x1a\xe4\x0e\xb5f\x87\xfa\x8e\xfbu\xa5\xc5[\xdb\xad\xfa|%\xf5\n\xab\x83jbbjb\xe2j\xa3\xbb\xcd-\xad\xbeb\xa8\xbc\xa0\x08\xfcc@\x1e\xc9\xf6v\x93\xf8\xaa6\x91\xa2\x9d\xdd\xd4\xf0R\x0b\xec\x1d\x02\xec\xd9\x88\xad\xe2\xecfJ B\xa5\xf1\xb9m\xe2\x10D\x0bW\xfa!\xa8\x93 m\x14|*\xfb\xc9\xaf\"\x96\xbc\xe4^\x0e\x12\x0e\xe55\x89\xaf@HfSb\xd06\x0b\xe38a\x1e\xf5\x96\xacP\xe5\x967P\xdcEn1\x9b\xf2\xc0\x9aT\xb7FX\x1d\xca0^\xceo\xd7{\xde\xd6h$\xc6!\x17\xbd\x1f\x8d~\xbb\xdecNm\xaf\xd5\xce\x02\xab\x8eW\xf3\xf0\xef\xaf\xc4^t\xdb\x1a\x04\xba\xadQ-\xda\xea(\x930\xce\xa3\xea\xd8\xd6j/qK\x8d\xda\xa0\xf7\x82R&\x15b\x03\x0f\x1b\xc0Q4\xea\x14\xb8\xc0\x01\xe7\x19J\xd0\xba\x07\xd1]j\x99\x99\x91Y]k\x86\x07\x0eP.\x06\x86\xf39\xe1\xcfI3\x80\x1d\x89\xea\x9b\xb4\x12\xb5{G\x1a\x03e\xcf }\x0e\xbfh\xb5t\x80\x96~N\"2\"\x01\xf9\x9e\xec<\x1f\x80\xbc\x8bU\xaf\x91\xa2\xd1\x08-\x16\x90\x11\x89T1@\x04\xd5b\x01ZL\xef\xfe\xe89\xc9G\xa3\xe7v^\x1dB\x02\xb71\x8dHK\x1b\xad\xb0\xac$R\x15\xa5\xff\xa9 a\xae\xb3j\x0b\x83\xf4(\xf2XZ\xa5\xc8m\xa7\xacm\x89$\xc9lr\xbe\x89\x96W\xdb\xdc\xf5gIk\xea\n\x06\xea\xb5\x88\x08\xda8\x07i\xe8\x88\xec\x0e\xbcS\x05\xd1\x01*\xf1v\xa6x\x1c\xb1\xeb\xec4\xb8\x0c\x83h\xf1\xdcJ\xa7\x93\xda\xc5X\xa6\x14Z\x9e\x14\xd6q\x12\xe9\x0e\x86d_2A\xe3H\xab)>x@j\xf8\xcc\x80\x90\x11\x0d[\xbeJ\xcaE\\\xc7 \x16c-\xfd\xb4G\xe0\xb6;\xd3\x94\x04\x981,=\x17\x8d\x9e:A\xe1U\x0fx\x1c\xab\x9d[\xcedVWa\xba\x9b\xa8\xe2vD\x81\xc0\xd0\xb7\x15q\xdc\xcb\x85\x8aEj\xfa\x08'\x07\xf1\x1bL\x19h\xb1:x\x16\xef\xcb\xfafqJh\xf3\xb0\x15\x83\xd7\xb5\xd7 (\x02\x07)\xd8\xce\x04\xd1B\x85M\xb4\xb8\xa0k\x9b_Qfv\xdb6\xf2\xf1<\xcc\xd3%\xb4\x82)-\xf4T\xaa\xa1\xf3\x86\x04Gv%+\xbb!e0\xc9`\x08\x85A\x17m\xee\xd6<\x91}%W\xcb d\xc4\xadKT\x8cX\x82 \x97\xe1\xe4E\xa5n-b\xe1 \xa1\x81\xc5Qd\xce\xf8\xf9\x90,\xc7\xcaC\xd7\x99\x9a\x03\x97U\xa6C:\xb53\x87j\xd8\x18;\x1c\x17\xc7v.\xde\xa6\xa9\xd1\x18&lu\x18$Du\x81\x18\x19\xf5\x01h\xde\x19\x96M\x06n\xb1\xa2\xaa!\xf8\xc5qv\xc5\x8f\x92\x05\xf0\xb5\"\xa7\xe2dx\xad\x1c\xefW\x1b|\xc1\"z\x192\x7f*0d5\xa7:\xc4X\xdc\x95\x9f_\xbf{\xf9\xfe\xe7\x8b\x1f\x8f\xde\xbd|s2%\xc1\xd8\xa3\xd1\xa7\x94\xbd|\xff\x96\x1c\x92\xab \xf2\xf9\x15\xc1\xca\xa5,\xfb\xb1Vy\xbb\xe4\xa81\xe1bQT\xc7\xa6\xf1\x85\x13\xdd\xb1\xce\xaa\xd5\x10\x88Sb\xab\xb5\xd6 mV\xdar\xfc\x96U\xb7U\x9a%4\xfeAJ\x1faQ\xf4\x13V\xeb\xdb\x0drH\xf8X\x06\xf0W\xb1\x89\x96\xa0Z-\x0e@\xa8N\x124r\x99\xb1\x81\x16\xd7v5\xe8X\x892o\xdb\"%\n\xbd\xaf&\xadx\x14d<9\xf5\x12\x1e\xca\x88\xe8]\xd3\xaaQf;\x94x\x98\xeb\xb9r\xad\"\x8e\x9b\xbeV\xdb\xda$<\x8a\xc1\x97U\x0c\x89\x93B#\x1dD\x8d\xa2\x8aN\xcc\x11\xe9)\xd3(\x17T\x1b\xd1$0f\x0c\x86\x06\x02\x05\xb4\xc6\xeei\xb7\xcfI\xc7U\"\xce\xf5\xedr\x81\x1eF7\xf18a!\xa3)so+\\(\xde,$\xd7\x12RoEr\xf5S\xc1.\xc4`?K\xe4\x067\x1d\x86\x0eY\x91q\x88\x8c\x03\xc4\xc5\x8a\xe9\x82\xfd\xf2~>O\x99\x0c\xd82\xf6\xb5\xc6\x82\xfe\xa1m4\xe4:z\xc3\xe6\x88\x00\xf5FW\xf5\xeb\x06U\x9d\xf1\xaaX\xf0+\xc1\x82\xceC+;\xbfm\xa9\xf1O\xd5_\xb7\x9a\x89\x92\xf8\xdd\xaf3\xaa\xea\x9acb!~\x1b\xd7\"\xed\x81\x16\xf6\x9e\xe0\x91\x16&\x8f\xeb\xf5\x84\n\xbe\xde\x1e\x0f\xa7\x97q\xbe\xc9\x10B\xd0q\x10\xfd7\x83qi\x8e\xef\xcb\xf7ou\xfc\x8d)I\xda OVqvcT\x9b\xb7\x02\x0b<\xf3!\xcc\x17A\xf4c~)\xb8\xdf~\xc0\x9f\xb2 L\xc5\xd9\xde\x05~\xb2\n\xb2\x8c%S\xf0\x9bg\x05\xfd\x11t\x88\x8a&\x87m\xb0\x05\xef\xe8\x95P\xd5\xf5\xf6/\xe0\xbc\x1e\xd7\x99\xa6\x00g\xb1\xa8e-\xa9\xb5\xf7\xb4\x9e\x9eV\xd4\xc8'\x8f\x9e\xd6\xd5\xc8\x15\x17\xb6[\xff\xbe\xd7-\x03\x01\x8e\xe0\x94\x85r\x08_G\x82\xd9\xa5\xf8\x98+\xd9H>N\x80\x16eE\xa9\xea\xc0c\xf1\xb9\xcd/v\xca\x7f\xb4\xbc\x97\x8e\x0b\xa2\xaa\xc3&\x92\x8eK\xa2\xce\x85X\xe3\xbd\x0c\xad\xea\x02)+\x1dP\xa9\x1f \x94S\x17D\xddu\x04\x94\xa4\xa8\xa2\xb0.F\x9da\xc6\xad=:\xb6\xd1w\"\x9e\x05\xf3\x9b\xa30\xc4\xbeU\xed(*\xf8B\x98\xfbv\xc9W\xbb\xe5Aa^Pk'\xa8Q\x94\x94Ldx\x99D\x8c\x14\x0c-\xd5\xca\x86\x8e\xef\xd5\x06\xc1\xab\xad\x83z\xc5\xb7\xb2A\xc0:\xdf\xf1\x9d\x8d\xcd\x12Z)l\x9b\x81\xc1&\x0d\xae\xf8\xa8n\xfb\x18b\xa6`W\x18hl\x11\xed\xca\xba\xa1\xc6]y\xed\xcd\xae\xf3\x82,\xc5>7\xb0.\xcc&\xcfR.\xbf\x12\x91%\xee\xdc\x14)\xa4C\x12\x0f\x86$\xa8\xf2\xee\xf3\xba\xe1\x15\x14\xbf\xe3\x01\xd6\x90\x05*]\xea\xddz\xdc\xa7@\x1dl{\xa8\x18\x8f\xb6h)\x94\xd78\xdap[*\xa8%\x96\x8d\x98KO\xe6\x85\x90\xe0\xc1\x03\xe2\xa4\xfa\x80\x01\x85/M\xb9\x8a\xac-\xd71\x8f-\xc8W\x8cZ\xf3\xe8l\xce\xeb\x82e\x928N\xa7$'\x87=N\x00\xcd3\x16tt\xd16u}\xff\x91F\x8b\xd6\xa0,`\xdb1\xce\xd8u\xa6d8vP\xb8\xb3\x1d\xfby\x1c\x06\x1e\xcd\xac\xd7\xb5 \x84\xaa?\xe3\n\xcb\x9dI\xb7\xa6C\x92\xc8\xd3\xca\xff\x00\xbb\xcd9\x89|@\xaaI\xe6\xd8\xb9=-rK\xcc\x16\xb6\x9e\xb9-\xbc\xa1\xf8VC\xed\xcf|X\xe4OA\x03\xa5\xe9\xf7\x95\xe0\xcc\x1e\xe9\xc2\x07\xc4\x98$\xb9\x12*\x84\x8dX4H\xb2mh\xe5-\xb1`\x9dv\xd4-k\"\xe6\x174mz\x86\x05\x95\xf3M#o\xc9!\xdep\xd7tKH\xb9,\xed\xb0\xd2\xb7\xc1\x9c{y\xda^iP\x02v\xd5\x99k\x7f \xb0\x86\x8f2\xd7\xe6\x91\xb0]$\x90\x8fa\xe2\x0b+\x80\xe2\xeazH\xf21\x8b\xfcf\x06>\xf9:XC\x9f\xd8=\xa8\x07\x00\x82.!b\x98\x04P\xb723\xf5\xd1\xaf\x8cpu\x14\x07\xe4\x90\xec\x10A\x04g\xfc\x14\xd40\xdcA\xe7~\x0eA\xf2\xee\x85<\xd2h\x02\x1f\xdfPa\x15\xf1]p\x06\x12e)\xec\xe8P\xedh\xb7>\xc6C=\xea\xaau\xf6\xe5\xe8)\x0d\xa7z\xf9\xd0,/^\xcd\x99R\xef\xd5\xae\x87\x9bt]\xf0\xbb\x1e\xd9&-\xee+c\x13\xadV\x90)\xde\x9bX\x0c\x06\xe03W\xb94\x8b\xf5\xf0p\xbb\x03#\xad\xd2\x14\x8f=\x1e\x864N\x99%`k_\xf4\xe6\x8bs\x83L\x89\xd7\x81\xe6\x04\x9c'\xd0W\xcfu\x8a\x90\xf3\xa9\xf5\xb8\xear\xb52\xd4\n\xcb]\xe7V\xf7icX\xbagbQ\x90CIL\x00\xf2\x801!\xd3\xe2\xd7\xf7\x05\x8c+\x01X\xe4\x0f\x15\xa2\x03\x08\xf0Zi\x94\xd5\x99,\xf2\xc1\xd4\x14?\xd9d\xba\x9c{\xc7[\xd2\x84z\x19K\x1ci\x19\xce[\x8e=^\x14\x16\xcb\xa4R4!\xa3\xa2\xb8\x18\x1a\x8c\xeb!=\x84\xb0D\x1d\x1b\xc8)\xd3\x86\xc8\xf4Q\x81\x1eN\xf6\xa5E\xd4\xb9\xc1f\x81;8\xef\xdc\x86DI\x1d\xde\xd2l9^\x05\x91[\x0e{\xc7G\xf2\xaa\x93\x03=\xad\x94L\xcd\xca\xe4\xf4\xb6\xa9\x95\x89\x035\x1a\xb3\xebL\x94\x7f\xf0\x80P\xf2=i\x0d\xc7C\x0c|\xdd\xe2\xa0\x8d\xa86Ri\xff\x92Z\x01\xed\x9aJZ9\x15\xb4\xd6i\xc7xx\x1a\xd0f7FTo\xc1\xe9\x87\xd7\xa7\x87\xf3\x0d\x11\xa0~\xe6%\"\x0c\xe1L\x15\xe8\x9aK\\=\x04\xc7Eb\xc1\x1f\x85!\xd4\x96\xba\x10/\xe8{\xc0 n$\xb8\x0c\xf9\x959\x00\xcb\x99q=U\x91\xa7+\x82\x8d:\xd7\x08\xb6\x91-\x8a\x1a5\xe1\xc2{b\x1d\xfeN\xb1>.\xc5\x93\xb3\xbc\x11\x13T$\x17\xdcKbWB\x00\xe1\xfdx\x1e$\xa9t\x91_(\"\x18I\x95\x82\x9a\xdb)\x12\xb1\xdb{n\xff\xa0\xdd\x16\xca\xd4\xa0+\xf5\x1a+\xea\x86\x8d\x82\xb2\xad\xa5\xeaCuH\xff\xd4\xfc\xd5\xdb\xb3G\xc5`-\x01\x9cl\x18\x9f\xed<'\x91\xb5'{\x92\x13,\x88\xbf6\x1cJ\xc1i\xed6\x89\x80\x1bQ\xa4\x90Fr$ /\x94\xea$%\xdf\x9b\x86b\xf6\xad\x16\x81\x96)\"\xd3\xd4\x8f\\\xceS\x92\x91\x11\x12\xa6\x8a\x90FHi\xfd\x04\x851b\x05\xb8\x91\"\x07\x8c\xbb\xd1\xe0\x9b\x9a\x7f\xec\xef\xedX\x8c\xb0\x8be(\xd5\x9c,\xfc\xfa\x96b{\xb6\"\xb0\x01WVe\x11$%n&\x13\x137\x1a\x14\xfaR\xc6:\x13\xb8\xc2\xf1$\xf1\x98*\xbb\xb6C\x88f#\x93D\xb1)\xd9\xda\x92\xf1mhR(\xda\x7f\xe0i\xa0\xb9\xb4\xad-w\xf2\x84< V 1\x84\x0d\x15\x8d;\x0f\xdb\xa4c\xd8\xac\x17~\x80F\x1e< {\xe0\xe9\xa6\xc9\xdb\xdc\xa1}\xfd\xda\xa1\xb9^\x97\x899\x19W\xec+\xe0\xf2\x8fL\x8b\xe3e0\xf6\xd9\x9c\xe6a\xf6S\xc0\xaeD\xa6$;Pd\xb6\xe5nI\x17\x83\x16_Qc0\xba9\xac\xder\xaa\xd4)\xeak \x84:\x118D\xaf\xa4W\x95\x9c\xa5v{\x13\xe0\x1d]\xb1\xfb\x9dwg\x99e\xf1\xf4\xe1\xc3\xab\xab\xab\xf1\xd5\xde\x98'\x8b\x87\x93g\xcf\x9e=\xbc\x0e\x83\xe8\xb3\xd3\x94\x90!\xf0\xbf\xbc}#\xca\xec?\x8c\xe8\x8a\xa51\xf5\x98\xd3\x94\xa05\xf1\x12\xf5<\x16e?\xb2`\xb1\xcc\xa6\xc4\x91\xaf\xa3%\xbc#>\x9a\xa8\xe7\xe5\xab<\x04O\xd6;H\xb6\xef\x07Y\xb0\xb6d\x86\xc1\"\x12s\xff\x03MY\x18DL|O\xa7\x8d.U\"\xf6\xd10\xe4W\x1f\x19O|\x96@\x99\xf2\x15\x85\x8e\x97\xf4\x92e\x81\x87\xb7b\x15\x87A\x96\xfb\x966&\xf42\xf0^\xf1d%>\x04/\xa39OV\xd8wR\x0fn\x07\xb1Z\xb2, .\xf3\x8cI7\x88N\xe5\x1d\xabJ\xe7\x8b\xa5g\xc2\x8bw\x0c>\xcf\xf8G\x06\xc6\x92\x02\xba|\xc3`\x7f\x0fVy\xb6D\xdb)\xc6\xfcU\xc2\xfe\x91\xb3\xc8\xbb\x99\x12\xa7\xf2\x8e\xd4%\xf2?$|\x1e\x84LA\xab7\x0b\xac\x98\xcf\xd3e0\xcf\x14\xb4x\x1f\xa5\"\x01+p\xc9\xaf\xf1V\xb2E\x10\xe19\x01M\xf1\x8c\x1b4\xd9\xa3\xa1\xf7\x16\x0e`G\xffD\x1a\xe2\xd1\xb8\xd8\x0f\x1e\x8d\xed\x9b\xc1\x0b\x83\x18\xffN\x18\xc4\x1f\xa8\x18tG\xfc\x1c\xc54[Z\xca\x7f\xcca,\x01,\xc9\xd1\x91\xd4\xb5}\x8a\x02\xc1w;\x95w\x0c\x9e\x87\xb3#\x1b?\x98\xcf\xf3\x94\x1ds\xe9\xabsJ\x9cZ\n\xd2\x1b?H$go\xa9\x11\xbc\x9eZ\xf2\xd6\x81m |\xbe\n\"Z\xc1\xef:\xa9\x0d\xbd\xfb\xb9\xa5:|\\}\xbca\xcc_0\xb5\xb7\xf5O\xe4[,dkj\xed\xb8\xd4[\xfb\x81z\x9f\x17 \xcf#_\xd4\x05I\xa3\xcb\"\x0d\xab4\xc2'U\xd0L\x91m\xda\x04\x9b\x9bD4\xfc\xc8R\x9e'\x1eK?\xb2\x7f\xe4A\xc2\xe0\xa3\xb6<\xe4\xe3\xf3 \x0c\xd1\x0f\x88\x8c\xf71\xf5\x02\xf0k#\xdeF\\\xbeZjQ\xa8\x08 -\xa8H\xeew\xdb\xe72\x96|d\xa9\xacB\xfe\xb6V\xa1q\x99\xf1\x86\xc1\x86\x9c\xfb\xc7\x02\x13\x08P\xf12\x02\xbc`\x035\xba\x0b\xc0-\xfd\xe5^\x9e\x8a\x99\xc5\xfb\xc2\xa3\xec\x15]\x05!T\xc5\xa3l4\x877\xb4\xa2(;\x05]\n \x98\x06\xbf\xa3\x03\xa7\xc0\x8e\xfc\xff\xce\xd3\xcc\x04\x1eQH\xb2\x95\xc9\x12\x96y\xcb\xa2\x80|\xb5\x02\xdf\x84eC\xc4\x8b\x05\xf0'\x9a\x04\x12U\x00\xe8Z\xbeZ\x80\x7f\xd6g!\xc0^\xd9\x0eC\xa9\xae\x83\x0fg\xc2Wx\x06\xbe\xc3\xe7\xf8\x0e_L\xf0\xe4]<9\xbc\x89\x97\x8a\xfe\x82\xdf\xa3\x08'\xbe \xf3}\x12\xb0(\x03\xcc\xf0#O\x82\xdf\x05\x9f\x18\x16%y\x99;Z\x16\xd9=\xea\xfa\x89%Y\xe0YjZ\xabL[=\xe0\xb8\xdb\xd1?1\xa8\x84\xfa\xa2:\xd0\x12\x99K\x9a\xb5\x91\xd6RNo\xc2\xca;\x02\xbf\xa4\xd1\x02Ned\x98a8\x8e\xfc\xf5/S\xe2\xc0\xef\x11\xf5\xd7\xa3k\xac\x16\x91\xfb> \x16AT\x02sxG\xe1\x03\x9f\xf1EB\xe3\xa5\x85\x90\x0fVt\xc1L\x92\x01\x12ZI\x86 \"xU\x11\xbe\x86\x80\xd8\xf1X\x8c/\xeb\xcfx*\xbeJ?\xe3_\xf8\xbc\x87'?\xc2\x93Y\x12\xb1\xf0-\xcd\x92\xe0zJ\x1c\xf3\x15\xe9\xad\xcc\x16\x93\xfa\x06\xe4UE\x892\xc9R\xca6\xd9\x9f\xd9\x0d\xdci\xa4P\x95\xfa\x8d\xd6qs\x1a\x8b\xd3^\x01\xaa\x17\x1c\xf2,Xi8\xf8\x89@Iy[\x81;\xcdW\x14:\xcbXr*p?\xac\x0b\xf9>Je\x02V@\xa040\xa6\x95'\x8d~\xb7\x1e6`\x8f\x0e\x05\"v\x14-\x00\xe96\xd2\xb0r\x1cp\x012\xb2+\x9a|f\xc9 \x90\x1c\xf2\xf7\x88\xa1\xb4\x86\xcc|\x1b\x18\x80\xab\xc0\x0ex*\xaf\x085h*o\xa1,\xc0\x05\xd7c\xbeZ\xa15\xf60\xde\xac\xb0?\x07>\xac?\xe3\x0d\x85M\xf1=U\x84\xcb-qV=\xc9R\x9d n\x87\xcb\x96lE\x15\xa2\xc6>\xcf-\xd2\x82(_\xbd\xf72\xba\x86\xf5[\xbe \xdf\xd0R]\xa4\x12\xae\x89\x164O\xbaa\xc73\xa5<\x04\xcd ld\xa7q\x00\xd9\xf2m\xdc6_\xb3d\x1e\xf2+k\xa6\xd8\xe4Z6:%\x8eN\x1a\xc5*\x0d\x1b\x17\x05s\xb6\x0c\xbc\xcf\x11KS\xb3\\\xa6\x13\x91\x821\x0d\xa2\xec\xbd\x92\x08\xc1\xcb\xc8&\x10\x8ai\xc4S6\x018\xf1k4A\x81\xb2e\x81&\xcb\x17\x1cRP\xe7\xb5\xf5\x88\xa4\xda\xcb\x9a\x07v=\xc9^\xaa\xf6)\xeb78\x1c[\xa0\xee\x0e\xe0\xf2}\xc4 \xc1V\x00\x97\xa3\xc8\xac\xa3\xec\x17]\x8f\xf8m\xad\xe2(\xfb\xd5\x80\xfb\xb5\x05\xeeo\x06\xdc\xdf0\xb8\x84\xa5,Y\xb3\xa30^R\xf0\x1bo\xbc\xb7\xc1\xa71\xf3\xb2\x8fby\x9b\xa5\xcaT\xb4,`\xee5+\xc6\xb7\x92\x80\x94\xc07\x9d \xa2r|\x18\x136\x17#(\xfea\xd5\xb1\xf9\xaf2\x17\x1b\xb2\x82\x9ey\x0d+\x0b\x00U\n\x08cP\xba=a1\xa3\x19(\x89A\x81\xe2\xcd\n\xfbR0\xe1N\xf1\x1b\x85\x93<\xe8\xc9u\xc6\xa24\xe0Q\n\x05\xea\x89-%_1\x9a\xe5 3\xcb\xe9$\xb4\x94\xd2oA\x074\xcdCK\x16\xcflR\x94\x04g7\x12\x1c\xf7\xa6\x1e\xb5\xb0\x87)c8\xc3\x9f.i\\!I!\xa1\x95$MC\x1e[\xbe\xa2 \x184\x8fyyH\x13C\xe8SO\xc2\xbe\xa5@N\n\xb9\x84SO\xc2K\xd9\xba\x1b'\x8c\xfaoY\xb6\xe4>\xd4U\xbeb\xf5\x94\xda]\x02\xb8|Ca\xfd\x97l\x1dh\xe1\xa5\xf9\x8aB\xb3\x15.\xe0\x169kKN\x90y\xcb\xb3 \x84\xe5h\xbc\xa1\xf5\xf3X\xd3\x86\xe2\xb7\x95.\x14\x99\xa5\x0c\x02@\xed\"\x884K\x82\xcf,[&<_,\x8dc\xb3\x92\xdevvV\x00\xcd\x03\xb4ZC\xdb)*o\xb8,\x03\x94\xf0\xcf\x96\x95 Y/i\xba\xa4IBeWE\xca\xc8\xd7I\xf8\xa7T!^\xae\x81\xa2\x14\xb7\xaf\x04\x01\xf3&\x88\x98G\xe3\xb2L(\x13Z\x0b\xfc7\x0f\xa2j \x91b-\xf26\xc8\x04\xdd\xb1\n\x8c\xa6\xad\x8a4k1s\xbe\xa1L\xeb\x8c\xf3\xcfL\xd3\xc2\n\xfc\xcaB\x0c\xa7y2\xa7\x1e;\x95X\xc81_1\xe8\x1b\xb1\xd4\xdf\xd0h\x91\xd3\x05\xc0W\x12\x90\x12\x19\xbd\x0c\xa5\xb7&\xb1d\x8c7\x146Y0 \x02\xd4/+\xcc\xaf\x05\x0cv\x96e\xec:;\x02\xfdV\x01\xc6\xae\xb3\x91\xd4v\xb5\x80\xbed\x1eO4\x0e\x00p\xbfH\xb1\x141\x91/\x94h\xc3\xbd\x02\xa0\xa0\xf9\xca\x17\x0c\x92\xa3\x1b!+\xe98$7\xc7%\x019. \xc8E;k\x14t\x91\xd6\x86\x06\n \x13\x05\x94%\xdb\xb6\x7f\x1e\x05\x9e\x8d\xb7Qy?\x04~\x00\xf5\xc1\xdb\xe82\xf0\x03{E\xa0|e@\x83\xaa:\x0e\x9e\xa5\x1fXr\xb2\x92\xc0Y:\x8a\x05\x85\x8a\x11\xbf\xeb#\xe3>\xd7Y\x8f\xca\xeb]\x0c\xf8G-\xaar\xd6#%\xb6\xc2\xc0^\x9b\xb2%g=2dM\x18\xf8\xdb\n\x87\xe8\xacG&\xcb\x88\x15P\xdb\n\x19\xd65\xf32\x9e\x9c\xcc\xe7\xcc\x13xF\xbe\x8e\x18\xbcc5\xb1$\xb5\xb1jk\x96dG\xfe\xfaW\xa8&\xc9@\xf0\x86\xa1\x1d\x91Y\xca\xdd\x00\xb4E\xecVB\xffZ\x83F\xeb\x0e\xd8\xd5\x0f\xfcZ@\xca_\x16\x983\xc0 \nL\xbe\xa0\x90ip\x19\x846n\x18P%>\xacW<\xf1K\x89\x8fxk\x91\xf7\\% \xa9Q\xb7E\xeam\xb4\xc2o\x8cp\x9a\xf1\xba\x90\x95\\\xdb\xef\x87\xafq\x04p\x8d#\x80\xeb\xe3%\x8d\"\x16J\xad[@\x91\xf5$\xec\x1ba\x10}>\xf2\xb2\x1c\x88^\x07^\xa7T\xbe[\xc1\x13/\xe1\xa1\x01.\xdfm\xe0?& \x88\x96\xb0\xcb\x04\x15EC\xe6G\xb3\xd2\xb6\x1aO\x97\xfc\xaa\x00L\x97\xfc\xca\x06x\x16dF\x95\x99x\xb3\x82\xca\xab\\\x05\x89_\xe2^\xaf\xc2\x1f\xc0\xd3\xb6s\xbd\n\xa7\x97\x14U\x98\xb8^\x85\x11\xbe\xc8 \xe7\x17\xf8\x00\xd4\x10\xa5SLAG\x81\x8a\xb3W})\xa4\xe8:\xbc^\x85b\xcd\xea\xf6`J;D\xfa2@\x1as\x83/\xae\x1b|q\xdd4\x17W= \xf9\xf2\xefh]\xbfs\xbe:\x8a\xfc\x0fT\x1cQ\xe5K\xab\x7fT\x8a*\x1f)\x17\x02\x81\xc0\x95\xf5@\x11Dz\x1982Ug`\x84R\xcc!\x04il\x85\xa4Y\x1dil\x806 \xb9\xec\xdb >v\xd6!\x17z\x1b\x84Z\xe1\xad \xb0\xb2m\x10zI[\x8c\xdc\x8a\x85h\xcfWk\xb0WH\xd9\xc6\x8cL\xcd\xc8]\xa4\xaa\x9d*#\x02\x8e?\xb3\x9b\xd4\x0d\x06\xe39ON\xa8\xb7t\xed\n\x84t\\\xae\x08\x19\xe7vgH\x02\xf1\xeb\xc1\x03\xe2\xd2q\xe3\xeb\x12H@\x18\xeax\xdf$@\xc7N\xddu\x02\xc7\xedW[\x82\xfe`\x0e\x15\xa4\xa3\x85Guk\xd7T\x81\xef\xe2>>\x1e\xe3>>vw\xeb\xd5\xcf\xc16\xbdj\xcb\xaa50\xdf\xea\xf8\x05\xa69k\xc3;\x8b\x80\"/\x0e\xc8\xa4\xe6=\xb1i\xaeN@2\x12\x02]\x83o\xd0xIS\xe6\x7fd\x8b \xcd$\x15\xaf\x97\x10\n.\x1e\xe5\xf1~J\x1c\x1eID\x85\xa0)\xfdh\xd7\xf6\x06\xb4r\x11\xe5\xa0e\x90\xf5M@\xd9&\x16LC\xe4\x01^\x9a9\x19\x8f\x7f\x08\xf3\xc4\x19\x12\x07\x04\x01\x10\x1b\xfb-\x8br\x95\xf2\x8a{y\xaa~\xff\x95\xdd\xbc\xe4WQ\xf9\xf6)V\xbf\xdf\xf2\x06\xe8I\xe47'\xab\xa9\xa2\xbf\xa1EV\x8b\x05q\x87\x0b\x12\xfbf*\x0dM\xa7=\x0d\x82Mc\xd4io\xd3\xe0\xc2du\xda\xcfB\xd8\xb0j\x9dV\x8d\\\xf1m\xdb\xb17\x88\x1a\xed\xa6\xa5a\xab\x85b\x0f\xdb\xc4[\x8e\xbb\xb4KP&\x84\xd3\xc2PA\x07\xc7o\xb1\xf3\x92Q\x12\xa4\xf1I\x0b\x14\x8f\x05\xd0%\xcf#\x1f|5\xc4v\xd8\x90\xcd3\x13\xf8\x0d\x9b\xdfn\x94\xbf\xba~m<\xc0\xb2n\x0d\x8a\xfa\x9e\xbb\x16\x07,6\xde\x80~\x9a\x03\xa9\xcd\xfes\xc3\x93J\xac\xe6aH\x96Cbq\x10\xa7\x06\x9fC\xb4xr\xa0]58C\x91\x04|\xa6\x98\xd7!I\xc6\xa5\xea\xba\x8e\xb8\xf3Ry\xb7c\xa9\x0bf\x99\xd5\xfe\xfd \xf9\x8c%N\x93h\xfce3X\xee\x9aE\xa0\x84\x9aNImF\xd8u\x96P/\xd3wtu\xca\xa4%|\xf4\xd6\xa2\xc3\xea_\x0fdF\x0em\xb1\xd3\x06d\x8a\x9a[\x88'\xbd\n\xdam\xde=\x9a2\xe3\xd8\x9bZW\x9a\x1b\xba\x1c\x82\x9d;Y\x923\xe9#\x9e\x8f\x95\xaa\xed\x89\x1f\x80\xc8Q\x9a\xf1\xf82\xb6\xc7R\xfa\xa2\xd5\x07T\x8b\xd1!\xb8\x82\xc7\xb3\x8b\xf6\xc1\x99mo^qd\x96\xc7d\xf1\xe5\xbb}\xb8<\xe9\xed_\x87\xe3\xd6\x12\x17\x8b\xf4\xfc\x8eI\x89\xe0_\xaa6\xe9S\xdc\xd2 \xb5\xa6\x14\x19@n\xa4E{G\x0b\xeaT\x8b\xbdz\xb1t\xe7\x83^\xdd\xd2$TG\x97$m\xd5\xd9!\xd5\x91\x0edFZ\x1c94\\b\xfa\x1f\xf2\xec\x0d\xf8\xd3d\xf5\xe8k\x16\xaf\xa3%\xf1*M\x97a\xd1\x03u\xb5c\xb5\xc1\xc3\x8d\xaf.!\xf5\xae\xcc\x0c\x1e\x99\xc9\xe6\xaf\xbb\xc9\xfbP\x9c\xc9\xc9\x95\x05\xdbc\x94\x9b\xd9\xdf\xab\xf3J!\xce\xfc(\x8f\xdd{u&g\xae\xd2\xeb\xf0\xb1jM=\xdd\x97\xf0\x8f\xea\xbdZ\xaa\xf4\xfa(\xacUz\x9d\xe9Z\xa9A\xab\xc3/\x14|\xdd\x07\xdf\x8d\x1c\xcd\xfa\xe8\\*\x1e\xad>\n\x17e\x84\xaa?\xbe\xd6\xf2\xaej\xe1\xe8g\x0e\xbd\xe4\xe0G\xc0\xa1Q \xdd\xe3\x9dD~\xe5\xfdu\xc6\xf4\x15\x89\x91\xaa\xfd\x0f8\x97\x8a\x95\xf1h\xf4!\xa47\xc6\xcf3ya\x08)a\xe0}\x86\x1fUn\xc7\xe3\xb1,\x91C]>\xcf/Cv\xac\x81\xfd\x84.\xf4\x7f\xd5*\xf9S\xfa7\x90/\xd7A\xa6\x7fC\x8c7\xfd\xf2~]\x02\x15\x8d\xf5\x13\x0e\x1c\x92\x9f\xcb.)<3$\x0e[\xc5Y\x00Q\xcc\x1c\x16y\xc9M\x9c\xe9\x17_\xfdH\x12\x0e\x15\xce5{\x16D\xb1lv\x10\xadi\x18\x00\xd4\xe7\x92_\xfb\xccn>$pO\x02\xbf%k\x16r\xea\xeb\xff\xcc\x7fI3Z\xbe\xbde\x19\xf5\x8d\x94\xa2\xd5+\x93\xd5\x83\x97\xb7\\v\x14^\xde\xe7%\x94\xee\xf5\xaa\xe4\x06c\x9afL\xfe\xc8S\xf9C\xcd\x93\xf8\x0f\x12m\xe2\xc4 _\xe8\xc6&4c\xe5\xc0\x80s>\xc7t\xf1\xeb\xa4\x8c}\x96\x83\"~\xa9\x1a\xd2\x8c\x86\xa1J\xcd/WrV\xd2<\x8d\x99\x9c\xb9,X\xa9P\xd4\xf0\xc6soy,\xc8\x87\xb0xUS\x0c\xbfu\x07\xe1\xa5\x18\x08\xb8\x1f\x0b\x8cE\xba\xe6a\xbe2\x1a{EA\xf6\x0e?\x97\x8c\x85\xcey\x0f)\x91f\x8d\xd8l\xe7|\x9c\xf1Oq\xcc\x92c\x9a2w@\xb6\x05c\x16\x06\x1es\xeb\x9b\x95(\xcbg\x87G\x10\xe3\xb7\x99\x0bv\x98\x19\x8f-\xd9\x1c\x15x\x90;\x8a5Z\x0c\xc1KiFD\xb6\x89s\x0f\x92\x8c\x04\x91*T\x0f\xe3\x0b)P\xe3Cr5K\xce\x8b\x80\xd9\x00Y\xf3\xd2~\xa2PS\x91X\x08\x07\xae\xad\x16\xca\xce\x18\xe2P\x8d/\x12\xce\x81.}\xfd\xb2\xac\x1f\xa9\xe9\xd4^\xd3e\x9ee\xd2\x0c\xf8@\x06\xe0T\xdb\xdbHH\x8d#W\xa6\x08TF\x13FU\x9a\xf1m\xfdK\xf4\xec\xb8\x95\x92\xbf\xd8\x90\x92\xe7(\x13D\x13B\x87pR\\\xcd\xd89.-\xd8\xba\xe9 \xf5\xfb\xd3\xeaGpjtPT\xc7\xeaD\xe8\x07\xa6O\x8b\x0e\xe8\x97U\xcc\xdd\x01}\xa2\xb0z\x17X\x81\xf1;\x01\xfd\x1e@pRt\x00\xbd\x86\xd5\xd5 $\x0f\x96\x0e\xb07\xe2P\xe9\x01\xa3\x0e\x9c^\x90\xc5a\xd4\x03Z\xe2\xe7\x0e\xc0\x0fp\xfat\x01\xf5X/\x1f\xd4\xa9\xd5\x05\xa6O\xb4\x0e\xb8\x8f\xe5i\xd7\x05 'a\x07\xd0\xa9<\x1b{@\xf5\xe8\xc3\xa9:S\xbb\xc0\xe4y\xdb %\xcf\xe2\x0e\xb0\xb3\xf2\x9c\xee\x80\xfc\xc9<|;`\x7fV\x07\xb3\x9d\xbf\x12<\xc0\x1d\x19\xe5\xbfj\x8a\xab\x9do\x94\xfe\x9e.\xdd\xa8M\x82\xac\x9f\xfbf#!\xb8\xd3\xdd\xba\xd9\"\x88(`\xba\x84)\xa2\x19\xde\xdd\x9a!\xc9\xf4\xf6\xa1\xdeU\xaeq\xe4\xe9\xba\xc9p\xbf4X\x81\x8e\xbev\xc9G\xaa\x80@Y\xf6\x01\xb4Nc\x15\xec}7\x1a\x7f[P\xe6\x1d\x80\xdd\x12\x18\xa2\xe6.\xbe\xdb\xdc\xbd\x14\x9cUGc^*\xae\xab\x17X\xd6\xdd\xb9\x97\x9a[\xeb\x01'9\xb9\x1e\x80}F\xf5e\xc1\x01v\x02\xf2\xae\xadkq\xadHz\x8e\xfb\x99\xc1\xf6t\xe1a\xcd\x12\xf5\x81\xeb\xb3\xa8\xcfJV\xaa\xbd\x8f\x16\xef\xb8\xa4g\x1f\x8fLABG\x9b\x8e\x9aB\x86\xbe%\xfa\xf4\xa4\xc5\xbb^\x9f\x9e\x9cU\xd8\xcd\xf6O\xad\xef\xf6)\x19\xe4\xa7\xe3\x1b\xab\xbb}\xe3g\xe0\x88\xdb?\x81\xf8\\\xd3O\x9fO\x1c\xf3\xb8\x93~;\xeeF\x98\x1f@d\xd1\xde\xd2\xa6?\xc4\xa6\x08\x96\n.-q\x9d\xfd'\x0e\x1e\xc8H\xf0M\x17\x10\x90\xa1\xbc%\xba)9\xadf\x01u\x80\x05\xed\xb7?\x17\x83!\xb9\xa8\x94\xbd\x07\xa1/\xdcV\xf3H\x1e\x89\xa5\xdcw\xeb\xd4e\xe3\x8b\x8c.\xd0\xdb1b\x08j\x05\x1fm\x17\x0f\x04z\x18\x90`\x83\xf8\xac\x9f\x08\x96\xfe\xcb\x17\xe2\x9e(\xde^G\x85\n\x0c\x89\xdf\x0d\x16_\xaamh\xae\x820|\xc9B\x961\xcb\xf0\xdc\xfb\xd8Djll\xbd\x8c\xce\x95\xc3Iw0$>4\x0dR\xbb\xfaU\xbcYd\xef\xc7\x90zG\xd9\xfb\xa3}\xd4\x81=o\x11\x18h\xf7nc\x8f\x86\xa1\x8a\xacn@\x97\xcd.~%c\x9aC\xbc\xf8\xe3\x90\xa6\xa9\xcb\xeba@\n\xa9\xb0\xf4\x8f\xd0\xd4\x06a\xd2/\xb1\xe0-\xb0\xec8e\xb9\xcf\xcb\x0b\xed\xca\xadhM\xfd\x8a\xdf\xd3\xa85o,\x9a+\xc4\x0b\x83\xf8\x92\xd3\x04\xf8\xe6>~\xda\xb54\xa9RP\xe9\x94\x1c\x126\xae\xa4\x17\xb7\xa6\xd5\xe4\xaee\x85Mw\xf0-\xa7;\x90^\x86\xcdI\x08\xeec\x12&\x93\xc9\xbf\xc1\xdaM\x98@\xe2\xbeV(\xff\xf6k\xafy\xf1\xc3-79\xb8\x87\xbd\xcf\xecf\n\xf7V\xf5[4\xa2<\x02d\xa0\xe0\xdf\xdce\xe2\xf1\xb2$\xfc+T\x80f\x83/\xb5\x96|\x1a\xb6\xe5\xaeXF[\xb2\xa51\xa8-\x17|\x19\xa0\xd8\x81\xc8\xb8\x16o\xb9\x1f\xcc\x03pA\x90 8wwR\xbf\x18\x14\x8f\xb7\xa4\xc9q5\xf4~\xe7v\xfd\xccnb\x10\x1cH9\xae\xd4\xfd8\x94nm\xa7\xb5x\xa4\x04\x17\x8f\x7ff7\xb7\xf8\xaa/\xb8V\xf3\xa3_\xbe@z\x1e\xd7\x9a\xc2\xc6\xea\x03}\xdbs\xb5\x0c\xbc\xe5\x86\xadi\x19\x83\xfbll%\x05Eg\xf4[b\x00:$\xc1\xb7P\xe9m\xee_\xfcP9I\xbd)qNR\x8f\xa26\x05\xa0=}I\x93)q\x08\x92\xfd\x06\xf4\xad\x9c\xa3$\xe1W\xe27\x02\xf2)\xd6\x00\x9f0\x83\xc6\x8f\xca\xd0\x04 >ZLM^\xf2\xabH\xc3\xc8\x9b\xc7&\x08\x0b\xa7\xc4\x91\xa4\x1a\x92\xfd3\x18K\xbe?E\xb2\xde\xb2(\x9f\x12\xa7\xa2\xf9\xda\x00:\x8a\xe3\xb4\x13H\xb2MS\xe2\xc8\x1fo\xb8\x87\x19O\xbc\xe5\xbf\x7fH\x82\x08\x14\x84\x00?9\x9f\xa2\xc0gQ&\xf0\x89\xdfjg\x80\xa3\xe0\xfd)q~\xa0\xdeg\x9b\x85\xc5\xb3)q\xce\xe8%\x923\xd9\x15}\n\x19\xc5\xcc#&{ba\xc8\xdb\xedf\xe6\x13\xd1M\x8b\xaf\xcb\xc9S5T \xc7\xec\xc7&\xa2\xc1G!ZR\xb4U\xca\xe6\x9b\x99\xbb;S\xb8(L-\x03\xbb\xfb\xb4m%\xef\xedZ\xd6\xf0\xde\x1e|s\xc1\xd0\xf5\xb9\xf7H\xe5Z\xd6\xdd\xdec\x18%\xcc$|O\x8c\xd1\x8f\x1cu\xcb\xb5\xf7\xb4c\xdb\xec\xed\xb7n\x9b\xbdg]{\xe6\xd1N\xc7\x8ey$Z\xfe:J\x19\xea3\xe7\xd1\x93\xb6\xed4\x81\x95\xf3\ns52\x81u\xf3j\x17\xcd\x12\x83\xf9j\x0f\xcd\x12\xady\xf5\x08\xcd\x12My\xf5\x18\xcd\x12\xc3\xf8\xea \x9a%\x06\xf0\xd5S4K\x0c\xde\xab}tC\x88Q{\xf5\x0c\xcd\x9a@\x97w\xd0<9\x1c\xe8x\xec\xc2xL\xd0\x01y$\x06\xe4]\xbe\xb2\xac\xe8 \xccQ+6\xd9\xdd\x15U\xbce\x19\xada\x0e\x9c\xcb\xb3\x9f\xc0\xd2\x0b\xfegvc\xbb\xd1\xcd\x04\xc99\x03\x90s\x19\xec\xf63\xbbir\xa9\xc0\xfcV0\x1ah\xc8\x97\xde\xe3\xab\n\xb9_\x1b\x8d@\xcf~[\xa3\xb4\x7f|\xabld\xa2\xfc\xe1\x93C\x8d\xcc\xc8\x94\xc8\xb0:\xe3y\xc2W\xc7\x8a@\xab\x07DF\x15d7\xa2;\x82YAy\xc0x\xd5\x06eJ\x9cr\xc6\xee\xc1\xc9\xb6\xd4\x11\xfb\xd7s0>\xcd\xa8t\xf7\xc3\x92\x7f\x1d\x03\xd3\\-\xa0\xbb\xc3R\x1bI/\xb5\xa9\xcf\xda\x81<\xb8]\xf4;\xa0\xee\xc4\x96\xdc\x91%\xb2q&\xd5\xb5\xfd?\x86i\xff\xb7X\xf1\xb1\n\x15\xfd\x7f\x8b\xb8\xe9\xdf\x04O\xb00\xa3\xbft\xf1\x84\x1a\xf1JhCv%\x13\x04\x16\x05\xd5\xba\x97\xd5\xfc\x11\x1b\x1b\xc9\x0d\xc6\xaf\x11\xa74\xcc\xe8\xaf\x1b5\xe5\xd7zS~\xad6\xe5W\xbc)5(\x1c\xa8Ws\xff\x86-%\xc8\x91\x86\xff\xdfj\x19 \xce\xf2\xf1\xa0\xb9\xac\x9eu\xd1\x1b\x88\xac\\\x1f\xe0\xcd\xb1\xbe\xc8x\xfc\x86\xadY\xa8\xe2\x02O b`u\x11\xf8\xe0\xf5KdO\x90\xecJ\x84\x8e\xa9\x8a\x91R\x84\xc0\x80 \xa9\" \xc2\xa9U\xa3y\xd8\xb0\xeb\x85\x8co\x83\xe8O^dta~B\xe0\x82q\xc6\xdf\xf0\xabB{\xd3^\xa9\xb6\xfd\xfe\xf4\xf1uQ\x87\x91F\xa6\x88\xda\xfesl{F\xb5}x\xab\x196\xa7\xaf:3\xf5x\xcfS\xb2U3\xa0\xcfS\xf6*\xb8\x14\x13\xb25\xb9\x8f\xb6\x18\x91c\x1e\xd5\x15\xe6\xc51\xff\xf0\xb7\x87\x87\xdf?\xac\xa6\x0b&\xf9\xe1\xdf_\xfc\xb6\xf5\xdb\xe8\xb7Q-\x0f7\xd4?\xfe\xf1\xe4\xf8\xaf\xa7\x9f\xde^\x1c\x9d\x9d}\xbcxw\xf4\xf6dJ\x1cA\xc7\x8c \xe4\xf0\x08b*\xa79\x1a&\xc3\xf7\x8fU\xee\x19\x97\xb1\xb4\xbb\xf0\x081\xe8i\x9ct%\xe6\xd5^\xc6\xd2LTt\x08\x01f\xd88aqH=&\x10\xaaC\x1c\xb2M\xe8\xb8\xd9~\xb2M\xbe;p\xbe#\xdb$\x13?\x9d??\xf8\xae_@s\x1a}dy\xca\x9a=\xe9\x8a\x80\xa8c\x9b\x16\x16\xec.\xd6\xae\xf6\xce\x8aJ 6QL\x93\x94\xbd\x8e \xf0\xe4dg0\x94\xc1\x7f\x80\x8eo\xf6\xc2\xb6/\xeeY\xa4\xf6\xe4\xf1\xe3\xddI\x17\x92\xab\x0fQ\x11\xc7KL\xf6d\x08=\xdc\x91\x91\"wdH/V\x84\xdb\x12ks\xf4\x88< \xc1s\xc2\xc9\x0bB\xd1\x10_E\x8d\xb9\x19f\x90\x93m\xf2h\xe7\xd9\x93!\xa1\x03Y:\x17\xff\xb6\x0f\xc8\xa3\x01\x89\xc4\x7f7\x13\x7f\xd9X\x0b\xa4\x8f2\x97\x0f\x06d\x1b\xcd \xdbd\xd2\x96\xb9\xdb\x96\xb97@f9#\xffq@\x121\x00\xffa\xc6\xa6&\x8d T\x91\xdaD\x17\xc48lo\xab\xf6c\xcdGq\xa0+?5 _\x88\x1b\xa9\x9f/^\x90\xc9\x93\xfb\xc0G\xe6\xac;\x93\xc7\xe3'\xe3]\xe7\xf6\xb5u\xd8,\xb9\x91\xfb\xe8\xc9`(m\x91p\xdb\xa5I\xdd\x9aG{bx40\x8f\xec}\xa8\xe5\xd9\xc6\xa1\xb7\x04;\x1e)kw\xd6\xa2/'\xe0&\x8a\xfb-\xe3\xce)pV\x85\xd5\xbb\x01\xac7\x1b\xe8O\xd4T\x8a\n\xdcL\x06\x11\x1e\x08\xf4\xc7\xed\xe6\x9e\xcd\x16\xa1\xa1\xb4\x04\xf2\x8c|&N\xfd\xc4u\x1e=rDY\xf1\xeb\xb13\xac\xb8\xf3\xb8\xe7\xf8WbB\xf6,\x83\x9f\xa86\x9d\xe6\x97Y\xc2\x04\xd2\xe3EX\xe0\xdb\x7f9\x1b_\\\xb0\xf4-\xf7\xf3\x90\x81!\xdeP\x86\x87\x8b\x98\x97\x01\xa6\xfe\x90\xf0u \x86BG\x1dm\xb6:p#w\xff\xf1n}\xe5\xf1\"\xeb\xd1\x00e#\x02\xabY\x83\x8a\xf7h4M\x1ejM,\xa7\xa2\xa7MIwL\xc5J_\x12\x1dw\xad\xda_\xae\x93\xefyDU\xad-\x83\x18\xb9u\xfb<\x0eK:r'\xd8\x96\x16\x19{O\x1f\x9b\x18T&=\xc1\xc7\x9a\xfes\xc7Z\x9f;-\x07\x9en\x99\n\x1a\x8d|o\xab\x1fU\x016\"n5\xe8\xdd`@\xb2e\xc2\xafH\xc4\xae\x88@2`\xdc\xe0:\xc74\x8axF\x04oJ(\xf1\x04\xc3IhJh\xf1%\x07\xa1~\x14\x17\x8b\x99\xdd\xaf\x95\x95y\xff\x862\xb3e\x1f\xd9\x9c%,\xf2t\xf3\xc4\x87\xc8\x92\xa6\xd1w\x19\xb9d,\"A\x14d\x01\x0d\x83\x94\xf9dD\xd2\xd3\x05\x1b\x93O)+\xeb\x1b\x83\xb4\xa2xu\x07$\xe3\xf2d\xcc\x96l5&\x1f\x19\xf5\xc9J`m\x9a\x11\x15hu~9^\xb1\x87y\xca\xa4\xa8cT~\xc5\xa9\xdf\x8a\xe1\xa3\x91\xb5-~\x1b]A`\xd0\xcb\x95 \xb8\xe1&\xaf\x80\x0b\x08\x95kn\x04C^r\x1e\xa2\x19\xa2\xb1h\x86\x8c\x94\x8bf\xc9\xa3\x15\xcd\xd2\xce\xc5\xb1\xac\x9b\xd5\xa5\xa5\x114\xc2[\x0d\xfdy?Ge\x8bLK\xdb\x90r\x9a:\xb2\x14\x95\xf2Jk\xc7,\xa5xd\xab\x0fr\xa4\xc7F$\x17\xe2\x01\xe0]\xb8\xa6b\x18kW\xbf(\xff\x1e\xd5\x160\x91r\x83\xb1\x99 \x0e\xec\xa2\xec\x1d\xf0F\x83\xa8o\xa2\x14u\x82\xd14\x0d\x16\x10\x9e\xbb\xaf\xb0\xe79\xc9\xc8\x0bB\x93\x05\x88\x94S%\xe6yN\xb2\xedml\xaf\xe8\xa5^\x14\x98e\x88\xe1t\xf1\x89\x84\x04\x91\xe8\xa1j^y,-i\xfa\xfe*R\x8e&o$-')qqN3\xa9\x1b\x1f\xcd\x92\xf3\x1e\xd7\xdd\x86 9~\xe8\xb4\x8d8Q\x9d\xf2\xccN\xa9Q \xdf\x93=\xd1\x1e\xc95\x01\x8e,\xfb\xbdwN\x0e\xab\xaf\xb8\xfb\xd4\x159 ?p\x1e2\x1a\xa1\xa6\x04\x0b\xa2\x0c\xe3\xe7\xcd\xbc\x1b\x84e\xd3\xe9x\x14n}S@\x0e\x89\xbb#\x0e=5\n\x03)\x81\x88\x9b\x88\x0b<\xa2\x80\x8b\xc0\xe6\xf7\x05\xbd\xe3\x8d\xe3H\xf2z\x1dNb\xdc\x99^u\xcd]Y\x8a\xe6\xd58\x00\xe5\xdb\xbdp\xd4\xeeJ\xcb\xd3\xe8\xcb\x17\xb2%\xe8oZ\xd2\xdf\xba\xce\x12j e$\xf5\xb2\x07\x82\x0d\xa8\xbb\xb2\xd5\x0f: \x95\x11\xbd\x8f1\xa9N\xd1\x1d\x87\xc5\xaf\xe0\xad\x96\x91\xa9\x00\x9a\x83\xe3\xd70\xdf\xa6\xe3\xf3\x96%\x0b\xe6\xdfit\xba$OX9\xb1_/\x8b\x02\xed\xacf\x8b\xf3j\xd2\x85\xa1H\xc1N\x1a\xcb\x08\x1b\xd3\xcd\xa6oKV\xb9*\x07O\xcc\xc8)L\x0b>\x81\x06\xa89}f\x0d\x9bL^\x90\x9e\xe6\x97\xa9\x97\x04\x97\xfd\xe7K\xb5\x1d\x97\xa9\x89\xc6\xe4Q\xaa+\xed\xd3\x86,\xb9)\x1a\xd1\xb7\x0d+p\xbeQ\xffZ9\x1ef\xe2\x81q\x1f8.\x92%\xdc\x92F~\xa8\xa8\xe2\xf1e\x10\xf9\x90<\x18\x0cI#\xdbE\xfc\x8c\x10\xb47\x9f*\x1f\xef\xd5\x9f^=qu\xb3\xaa\xbd\x13\xecd\xaf\xa6\x15\x92\x83\x97\x81\xff\x96\xe7Q\xe7]\xab~\xe0\xa3\xe64\xb9\x9b}\xef\xe7 \x0c?2\x8f\x05k\x84\x93h\xfb\xf0U\xcbN\x90[\x0c\xdc\xc3\xa8\xb9j\xf2@M\x7f\xe5\xfaik\xea\xa7hu\x9b\xd1\xf9\x84\xcc\x94)\xb3\xe8\xd5\x8e\x02~\xa3\xaf\xd7\xb17h\xa5\xd7\xcf\xc2jz\x15c\x18\x19\xb6q,\xb2\x9b\xecd5\x7fm\x9c\xf7?0\x16}H\x98GC\x0f\\\x19\xf9\xca[\x7f\xadi\x06H\xc0#\x10\xa3T\x1b%o\xe6\x99\xaf\xb4\xd4\xab\x99v\xa2\x0b\x01\xaa\xf1%\x0d-|\xfd\xd4&\xc6\xc4\x04}\xa7\x06\x14\x1fk\xfb\xb5\xcf\xa1VCY}\xf9[\x02:\xb9\x07\xc6\xd8\x8eK\xe9Z\xfb\xd9\x07\xec\x8b\x14'\x00\xd1\xd9\xd9L]\xe8\xaa\xc4\xc3m\x1c]\x9f\xea\x08&\xcd\xef\xa2\xf2\xebO\x96\xdcl\x00M\xcc\xab \x1a\xc7\xe1\x8dk\x11\xe2`\xcfW\xe2\xd1vo\xc6\xb6G}s9\x06y\x9a<\xb0\x97\xbdk\xb0\xcb\xb3\xccGQ+6r^\xee\x8a\x0e\x8aI?\xb0<\n\xe7\x9a\xfd\xcaDp\xd3\xb5\xc4\xc8o|\xb7\xab\xd1\x18\xf4\xc7#\xedb?\xd2k\xa8z\xe1\xb4T\xef\xc0~\xd3l\xca\xb4q\n\xc8|\xbe\xb6\xaf\xb8\x16\xe9e\x1f\xbc\xb5`\x99\xb4\xb7\xf2\xb5zu_\xec\xa59\x8c\xea\x15\xc7\xf5\x908g\x9cP\xcfci\n\x97\x12W\xb2\xfa\xe2\xf6kHnxN\"\xc6|\x92q\x88\xe0\x1f\xcco\xc8\x1fD]kNI\x96\xe4\x8c|%T\x16\x9f\xf3<\xc9\x96\xc5\xe50\x01\"\x12\xeeF\xe0~q\x00\xf7HcgP\x1c\x04\xf3t|U\xedQ\x9fq\xe8\xa7\xda\xa5\x1f}\xcdi;\x10\xdb\x11qT\x96l\xae\xab\xf6\xa2\x81\xf9\xd1\x96\xe5\xdf^\x0b\xad\x9c\x02\xb6=\xd7^G\xae\xeb\xa8\x1d\xbd\xf6\xdd_\x1cw\x16\nb\xd2AAL\xfa\xef\xfc\xcd(\x08\xaa\xefih\xbb`-\x95{\xbeuX\xc2\x8e0Hp \xe6\x80\xf5R\xad, /e\xba\xce\xc8!\xd4m\xc2\xb6\n\x88:\x84\x84\x1e\x12\x1d\xb1\xfe\xccU\xb4D[~@\x0ee=;dJ\x803u=\xbd*l\xe7\x8a+x\xa7\x10`\xe7UXT\x82\xe2\xb6]\xc5\x16L\xf2\xd6\x96\xeb\x81\xd6\x07\x8c\xe6\xa0\x18\"\xab\xe8\xc1\x95\xbcqN\x0eIN\xa6jY6i\xc8k\xa5\xf9\xc1\xd5\xf5\x99\xca\x01\x1e#q\xff\xf8\xda$\x95\xbb\xee\xd3d\xe0\xe9\x1a~\xc2#`\x10\xc0\xfd\x03\xd1\x88TX\xc7j\xc5\xd5U\xb4l\xac^um^\xb5\xdf\xaf\x16Z\x93\x03\xe5!\xe0~\xb4\x1e\x87v\xa5\xbez'\xc1K\x90ti[\xdcR\xd5\x8f8\xcd\x98U-\xea\x9a\xc7KR\x83\xa9#\x19\xb0>\xd4\x1a\x83\x82\xd3L\xd4K\xf9\xe5\xda\x81T\xa8G\xf2\xb2j\x9bj\xa44\xbf\xddyN\x02\xf2\x82D\x85zf\xb0\xbd\xdd\xc4\x91\xc0\xd3p\xa5\x194$\xd1,8\x07a\x12\x9b\x89\x9f\xe7\xf2\xeeE\xfe\xb6\xb6\xad\x18\xac\xda\x0e\xf9\xb6Sh\xd9\xe7\x05\x00\xca0\x1b\xd4|\x02\x82\xce#\x00\x06\xdb\x7f\x9e\xa4\xf2\xbc\xe9\x89&\x957\xc2\xa7J\xb4\xd6\xd1[(QV\xd0J\x83\xe3#C\x0c\xb9\x08\x8e\x04\x1a\xd6\nv5\x12\xaf\x17\x94\x1aw8v[\xa0\xcaS\xd2\x0e\xb4`\xd9\xcb^\xb5\x01`\x12\xac\x99\x0fd\xd5\xab\x84\xaf:J\xac\x82\xeb j\xc9/\xceS;H\x06\x8a\xdf\x08+\x8dh\xe7f\xd6\xf1\x8fZG@\xee\xc3\xd6f\xca\xed\xdc2k4\x0c\xc1\x05E[~K\xf9B\xf7\xb8\x0d$\xc8n\xfa\x0e\x85\x81\x0b}6\x0f\"V\xa0\xa0\xe6\xce+A\x17,3\xb0\x15\xc4\\k\xc2s\x1b\xfc)\x98 %\x02[\x89\x97,\xf5\x92 \xce0^\x8fV\n\x19\xdaMMPA\xcaPAEP\xa5'\x85[\xe9\x17\xb4H\xea\x86C\xe2\x0d\xc9\x1cCD\xa0['\x0d-L\xcd:\xcf\xc6\x8e\x0bx\xd4\x0eG?\x023\xc4`g\xeb\xb5\xf0\x12\xb1h\x7f\x0cX\x1d\xb83hc,\xda\x88\x16\xc1e+\xe2S>\xb8\xf8\xb0}\x8a\x13\x1d\x1d\xd8\x17\x84\xb1G3\x97\xbb\xde\xc0\xc6\xe5\x14\x87\xdbR\x9e[K\xf2\x82\xf8\xc5\xb9\xb5\xbd\xbd\xec\xea\xb8 \x1b\xfc\xd9\x121+\xd0\x8fRN\x9e\xad\xc1a]\xa6\xfe\xcfE;\xe7\xb3\xf5\xb9\xd5o\xbd~\xc4WV`\x1f\xee\x0d\xc9\xbaC`\xd8O\xfc\x1a\x89\xb1_\x0f\xc9\xaaC\xf2e\xcaW7\x16\x83\xa1\xa9j\xa56%\xfeMp\x14\xd48\x12\xab\xde\x97\x12\xb7\xd7Y\xd8\xed\x81\xa2^\x1aL\xd1\xf8\x90\x04\xb8A\x9a\xd6\xdcn\x0e:\x084\x9a\xb3%\n\x18\x96\x08\xd9@\xc6\xbaeWD)\xaf\xbe\x0d\"\xf0fH\xd8\xb5\xc7b\xd8\xcf\xdc\xf3\xf2$a\xfes\"\x9a\x9f-\x19\x89x4Zi@\x9f\xad \x8b\xd6A\xc2#\xe0\xab\xc5\xa2\x06\xc9^\x1e\x86\x04\x82\x9a\x92\x15KS\xba`\x84F>\xa1\xbe\x0f\x11OhH\x96,\x8c\xe7yH\xaeh\x12\x05\xd1\"\x1dc\xda\xe2,L\x99eQ\x89>\n\xcehV\x1f\xa6s\xbb\xe0\xc3\x83\x9d\x86f\xbb\xd5\xa1\xc8\n\xbf<\x0f\xff#}\xb8\x18\xf6\x13\x1d\xeau3\xf3\xb6\xb7\x9b\x01\x1c\x88d\xfa\x07\xd2\xee\xe1\x808\xaf\xa35M\x02\x1ae\xe4\xa7\x80K\xe1\x15b\x00\xd1H\x91\xf2\xact\xd2\xec\xcc\x1f_\xf1\x1d\x828Hi\x02\xea\xd5\x87\x89\xd0\xa4#\xa8l\xd8A\x95\x13C}L\xbaE\x91\xf6\xd1!\\k\x83<\xb04\xaf\x9a\x0c\x86\x98\x8d\xff`Hr\xd1QO0d\xa0h,\xc5o\xa2\x7f\xdc\x8d\x86\xe4\xe9\x90\xa4\xd8\x01T\x1c>s\xe3;\xcf\xc9|4z> \x01\xa8\xfc\xcd\xe6\xe7-R\xa2\xeaR\xb3\x99\xdd\xa2\x0b\xcf\x1c\x8c\xde\xbe\xe5\x8a\x06\x8b\xae\x8d&C\xa2E\xbc0U\xe4\x90\xec\x80Nvy|F\xe4\x05I\xe0\x86R\xe9\xd2\xb9l\x16\x9dK.~\xf0\x1c\xa7b\xea1V{o\x99\xc6\x9a\x96;\xe6\xc9\xa3.{d\xac\xab\xa6\xec\x06\xd6\x11w\xb3AE\x90u?\xad\xdb{\xba\xffo\xd1\xbcF\x88t\xd9\xbcI#\x02\xbbB7O\xea\x88\x82vK\x07\xba\xfa\x89\x9e\xad\x89\xcb\xca \x8eA\xc3\xb7\x91\xbe(\xe2\xa84D\xac\xd3\xd9\xb9E\x9e\x91\x835\xd0\xc0u\x0c\x1b\x0c\xa0\x88sP\xe0\x83\x8b\x00*\xe5\x13L\x9c\xfc \xd1\x8e\xc6q\x9e.\xdd\x1c_\xbb]\x06\xb4\xdd\xbb\xae>\x06\xba\x7f\xf5^\x14Hr\xeb\xa0.]%\xd5\x9d\x1aDj^` 3\xd9\xfe\xba\xaa\x9e\xc6\x81\x9b-\x9f\x8e\x88\xdb\xdaM\x1321\x1c\xe2j+c\xb3\x83\xaay\x8f\x8c\xebdx\x95\x14i8\xd3\x05\xd4>R\x8f\x14\xb9B=\xacR\x0ff%N\x943\x81\xa0\x9c\x90\x03Q\xf5!I\xc6?\xe4\xf39K\xc8T\x99}\xdaX\xb3CB\xc74\x0c\xb9\xf7)J\xe9\x9c\x15\xf0\xd5A\xee\xbd\xbb \xa9;\xed\xd21\xca\x91\xc3`]h\xa4+e\xe4\x06\x04QL0\xdc\xc6\xb8\x11h\"\xb3+\x02z\xdez\xe1\xa3\xba\xe3\xc5\xc7=\x1e\xdf\xb8\xc9`h\xf52\xf7uP\n\xf2\xdc\xc9\xde\xa3A\xe1\xeek\xf3-\x80\x0c\x88q\xe64\x1bi\xf4\x1d\xd9\xe9\x99TP#\x07\xe4(I\xa8\xe8\xc5\xa08\x99\x9e\x0fH6\x8b\xce!0|t~\x1f;\xa2\x13\xdfO\xf6\xefr\x1c%\"\x13P\x9d)+\xbc\x9f\x96\xed=\xedt\xdcqO-\xab7+\xba\xff\xa3C\xa3M\xfb\xa6H\x14\xabQ\xdd\x05\x16\xc9\x8a4\x82\xd5B\x13\x03\xcf\xccv\xce\xe5\xa9\xa0\x8f '\x88|v\xedH\xcd\xe0d\x0co\xd0\x0e\xf85$\")\xce3\x95\x14\xe7YeSm8\x93\xbb\xbb8\x93\xb0\xff\xb4N\xae\xabS\xfb)\xee\xdap\xff\xe9\x1e\xca%\xec?\xad\x9f\xf2b\xd4\x9d\x99D\xb8\xdaQ\xc0\xb9\xd3d\x19\n\x98\x974cu\x00\xcf\x04xK\xe3z\xfe\xdc\xcc\x7f\x07\x8eD\xea \xb1 \xf2\x91-N\xae\x1b\xb5\xf8&\xc8)\xcb\xea\xf9\xcbJ>Lm\x1dd]\x01\x01\xe9_\x1dde\x82\x00\x86\x91GF\x1dnQ\x1b\x14\xfaS\xc0\xae\xea@7&\xd0\xab\x90\xd3lo\x17\xea\xac\x03^6\x00\x9f\x01\xd4\xb1\xbbA\x1d\xe2\xef\xc4Z\xd3\xde\xc65\x89\xbf\xbb\xbd\xbc\xe7j+a1\xd6\xb7]\xa9\xfb\xb6\x1b\x90G\xf8R\x9d<\xc3tk\x04\x1b\xdbzH\x90\x9aL\xcd\xc9\xb8\x143;-\x91\x0c*^\xf5\x9aHH<}<\xfb)\x83\x07\xc1~\xe0\x00\xa6\xbb\xbf\x06@\xcd\"V\xb0i\x01\xbe\xf3\xf0\x18`\xdd\xbb\xc5\xb2O[93\xbd\x04,\xab\xa4{\xe3j\xd6h\x7f\xa76\xb2bYL\x9e4\x97\xc4K\x9a\xb1q\xc4\xaf6\xc5:\x9a\xdeA&0hj\xbf\xf5\xe9\xfbZ;\x02\xb5\xf9 \xc8\x01{\x8e\x88K\xc9\x08\xf5O+\x98L\x88\x86#\x0e\xa7\xef\xc9\x0e\xf6\x15\x0d\xb7\xbd\x9d\x91\xef\x0fHapnx\x8e\xdei\xaa\xd4}\x95\x1a\x82\x19\xae\xd7W\xdb\xb8\x9a\xcd,j\xbc'\x89\xe1\xe4\x11.\xe3hluEn?\xc3\xc9\xed\x06S\x9a\x93\x03T\x0d&\x85\xf4\x86\x16L\xd8}\x95Y-\xe0\x011\xde\x89G@ \xdb\xcd\xe0\xf0\x92\xb1\xbb\x80\xc6L\x95\xd6Os\xd8\xc5\x94\xa0\xf3[\xd5\x0c\xc9\x06$,\xf1\xb1\xe6|\x80D\xcafQ\x1d#[\xa8+o\xb3\xa9\xda\x7f\x86\xc7\x93\xd8\xdb\xe9\xbe\x1a\xb7R\xbc\x05\x08v\n\x13\xe3\xfb\x18iG\xf4\xbahU\xa1\x90\xfc\xaf$\xbf\xa2YPeL\xec\xbbR\x14\xd9\x85\"\xbb\xe7\x16\xc5\x10\xa2\xe7\x85\x1aW\xd6\xda\x9f;\xea\xe6Ip\xdan0\x1a\x81mu\xd1\x06\xa9Y\xcf]\xf3`\xcd\xe5U\xb4l\xfc\x0b\xb2g2\x06T\xdak\x81^c\xb1p\x05\x95A\xb6\xb7\x13\x08\x16h\xc3\x12\x9aP\x8ef\x89E\xf5\x1d\xcc\x95\x81\xdcNe4\x8f\xa6\x92\x92U\xb8V\x0bip\xeb\x83\xbeyp\xab\x95fa\xc2\xf7\xf6m\x11\xe5\xfap\x83\x81\xab\x83='bS\x92m\xe28\x1b6\xbd+\x12\xcb\xfe3\x1c\xcb\xed?{j \x1bWo+\xd8/\x03j\xf2xH\xaa\x8e\x8aB\x9a.e(\x882\x91\xe6\xd9\xb2\x9a\xb2\xe4i\xcd\xfd\x8f\x18\xa4&\x8cR\xb0\xae86Jku\xa5\x8c&^-\xed\x1f9Knj\x1f\xa0\xd9\xb2Y\x9dH\xad} asRs)T.\xb2l\x0c!P\xc9\x01\xb9\x1c\x92l\x9c\xb0\x94\x87\xebN\x97\xaejr\xc1\xc7\xdd\xd6\x04\xfc\xba\xe9\xa2\xa6\xaf\x9a\xafF\x95r\x1f\xf5\xac\x98\x91C\xb4\xf2b3V<\xac\xc3g\xe6\x0eRIl*y\x16H}.\xad\xd7D\x15\xdf\xf9\x01D\xe0\x96_\x81\x18\xcb\xa6\x1f\x0f\x99\xac\xafZ\xaa\x0d\xfb\x94\x88%\x15TW.\x85\xd0\xc1\xee\x8c\x8e~\xdf\x19=\x1bo\x8f\xce\xb7\xa7\x83\x87A\xf3\x98}8\x9d\xed\x8c\x9e\x9d\xff\xe5\xcf\x0f\x9bG\xed\xc3\xbf\xbb\xbf=\xfc\xed\xe1\xa1{\xb8\xf5\xdb\xc3\xc1\xec\xef\xbf\x1d\xfe\x96\x9e\xffe\xe0\xfev8\xfb;\xfc:\xac\x97\x02\xb3\x04\xe7\x0fgH\x9c\xaf\xe2\xcf\x17\xf1\xe7\xb7\xdf\xc4\xdf\xbf\x8b?\xff\xe5\x9ck\x03\xa1\x99\xf3B\xa4|\xef\x0c\xc9w\xcew\x90\x07q\x80E\x81\x04\xfeF\xf07s\xce\x07\xcd\xd3{\xe6|WV\x15\xd6\x00\xe6\x00\xf0\x1f\xa2\xf8C\xf1\xe7P\xfcy.\xfe\xfc\xaf\xb2\x90W+\x14C\xa1\x12\xfe\x7f95s\n\x1fFd\xb6-\x87\xf4h\xf4\xb7\x8b\xd1\xf9\x1f;\xc3'{_\xeb\xa3\xb0T\x83\x8f\x80\x0e\xdc\xf1_\x06u\xf85ja\xf8\xdftM\xa5!\x1b\xce\x958\x06\x80\xd3\xe0(j\xd6{\xabo\xff\x89\x05\xfa \x88\xcb\x84V.r,\x86\x89s[\x99\x05\x8f\x976\x83\xc8y`\xe3\xdf\x1ch\x84\xd3\x92\x99Zs\xe7-%Uk\xacEE\x83:\x87\xedF\x9d%\xfb\xe8Yri\x93q\xfc\xff\xec\xbd\xeb~\xdbF\x928\xfa}\x9e\xa2\x84\xec8@\x08R\xa4\xe4+mZ\xeb\xc8\xcaF3\x89\xedc\xd93\xbb\x87V\xf4\x87\xc8&\x89\x18\x048\x00\xa8K\xc6\xdeg9\xcfr\x9e\xec\xff\xeb\xaa\xeeF\x03\xe8\x06@\xdb\xc9dv\x07\x1fl\x11\xe8{\xd7\xbd\xab\xab\xe8\xfa:\x17<\x06a\xa6\\\x8d\xc9\xbc\xa2S\x95\xa6\xe4\xb5\xd2\x1b/4R\xa7\x94(\xb7\x1a@\xdde\x0e\xc7\xa1Q)I\xe9\xdb\xec3\xe2\x12\xbaF,-)\x05^\x05i\xb0f9K\xe1\xebm\x1a}M\x19\x05.\x19\x04\"gU-\x81\x80\xc9Q=,<\x01_.\\\xe7\xc81(s[\x94Q\x8b\x14g\\h\xd3\xea|\xe5xp\xc4\xe9\x02\x8c9a\xa8\xd7\x8f(S\xc6&\n\xf3\x9a\x97z4\x1d\x9e\xc3\x04\xff+\xaeV\xbd{\xb7\xbfD\xf2d\x18\xf0%\xa6\xfb\x99@4\xf89 \xe3Z{|\xf5x\x91\xcbA\x9e\x86k\xd7\xf3a\x0fS\x8d\xcb\xb4\xc54\n>\xe6\x06\xf3\x17\xef\xe7\x02&\x90\x91#\xc3\xa5Ew\xbd(\x07\xf0\x16\xcc\xff\xb2\xcc\xf9/\xeb\x02\xc3\x05J\xc1\x17\\\xf8>\x92\x81\xd0\xa4\xd4\xc1\xdfV\xa4\x8e\x1c\x8e\xe0V\x80\x9bV\x18\xc3\x96\xe6\xa9;\xf2T\x10n\xe3\x07(\xa2\xad\xc9N\x1c\xa7\xd2\xc5\xdf?\x8a82e\\\xac-\xfe5\xd7\xd6\xcd\x8b\x82\x91\xffl\x8by\x02\x13py\xe5\xeb\xe9\xf0\xdc\x1b\xe4\xc9\x0f\xc95K\x8f\x83\xcc\xe8>^\x15\x08O|\xa0-\x15\x13\xbb\xaey\x1f@m\xb4x\x19\x81\xab\xa6\x18\xc1\xf0r\xb0\xc6H\xea\xfb?q\x96=\xfd\xe9\xdf\xdf\xed\x9f\xf7\xfe]\xfc\xbfo\xbc\xef\xca\x87\x8dn\x83\xfb\xfb\x0e\xc2\x8e\xea~\xe8\xc3\x81a\xd4{7\xd4\xdd\x9d;\xb0\x9e^\xe3\x8dZ\xb74\xec\x03\xaf&\xd5V#\x91\xd6\xe7\xb0\x87m\xf1-,\x9a\xdf[N\xaf\xcd\x97t\x95&}\xe6\xc3\xb1\x8f\x9e\x87\xfd\x91\x8f\xde\x82\xc3\xc7\xf0\x0c\x9e\xc0F]\x85zfNP\xc6\x1f\x81\xec\xeeK\x1c\xbeD\xf4\xcd\xf4\xd9\xb9\x88/\xdc'tz\xcf\x87\xf4\x12\x9e\xc0{z\xcd\xfb{iP\xaa\xb8^J-\x1e\x13)\xa1\xcaGpY8\xffpJ\xf2\xef\x98\xa9\xbb\xf6\xd2\x87\xf7\xa2\xdf3ZO\xbcw0\xf4\xe1\xd8S\x90\x81\xaf\x8e1\xa1}YM\x98\xb3Y2go_\x9f\xaa E\xee\x99\xe7\xc9\xb5\xb1(\xbd\xda\x82-\xba,\x18_\xf2\x97\x8f\x8bi\x96\x17n\xf1y\x0bG\x15d\xb1K \xfce\xddG[\x95\xf7\x95Uy\xef)\x12\x94f\xec\xfb$\xcb]\xaf\xae\x14\x95\x7f\x7f\xf8\x00\x8e%\xb3\xd6+<\xd7&\x9c(U\x12\x8e\xe7\xce\xb9\xe9[\xe9\x974'\xf4adP\xd5\x11\xec_\x99\xef\x81+\x00\x7fS\x1d\xb2\xa0\xec\xfb\xef\x06\xfb\x9e\x0f?r\x82\x83\xbb\xe8\xc3\x1b\xb9b\xb4\xa1?6\xee$\x88Y\x9e\xc2\x04\xdeL\x9f\xb5\\\xa2?Et<\x15\xd4e\xdezq^\x0d\xffgA\x85_\xd0\x10_\xc3\x04N\x15\xa0\xbd\x80'\xf0\xfa1\xbc\xe0\xa3<\x1d\xccVAz\x9c\xcc\xd9\xb3\xdc}\xe1\xc1S\x18\x1d<\x80#\xf8\x19z\x13pn8\xcf\xc5?O\xa7/\x1a\xc6\nrY\x7f\xee\x97\x8b~ \x19\xc2\x198\x1e\xf4\xe0\xd2\x80\x15\xcf\x8b\x12\xedc\xb9LY\xf0\xbe\xb1T\xdd\xbc\xd4\xfc\xa5\xfe\xd6\x88GO\xe1\xe0\xde=\x99\xeeA\x1b\xbd\xe3H\xc9\xc0\x86\xe8eV\xec\xc3+-vvQ%\x1d\xe4\xc9\xb3\xb3\xe3\xd3\xd3\xf2\x17\xd3\x05b\x0e2\x7f\x93\xbd\xa0\x15\xe6\x08\x9c1\n\xa1\xea\xcd\x98\x83\xbeq\xbe\xdfu%D:\xe9\xfb\x0ez\xf07]\xe8\xeai\x8d\xf0))\x01\xc8\xba\nRb\xf2\xcd\xeb\xdb\x07\xce\xbb9\xccp\xea~)\x08\x9d\x06H\x97^+\x1f\xbf\x9a\x9e\x9c[.E\n:\xc5i\xd6\xac\xe06\xad\xa4\x8a/\xf5/\xbc\x8e\x95L\xf1\x8e\x05//\xb8\xd1/\x8d\xa8\xcf\x1b\xfd\x96\x8b\xd8q\x8dm\xfe\xd2\x80\x02\xdf\"\xc9\xff\x05\x97\x05\xabg\xb3`\xc3x_\x8a\x17!y\xfe\xc5#\x84\xfa\xd6L\xde\xeb\xf0^\x97A\xffR\xe2\xad\\\x92/\x18\xef_\xb4\xbd&\xcb\x9e\x92\xbe\xfeR\xe1\x8aC\x1f\xfeR\x05`\xde\xfc\xf7\xe5\xe6\x8f\xaa\x88\xaf\xad\xe9\xf7u\xf1]u\xf7\xbdW\x11\xb1\x8b/RH)\xc6*\xcb\x94\xa4||\xe9\xd5G\xfd\xfd\x8eb\xfdeQR\xd3A8\xb1[NO\x10\x90\xcb\xb8\xa1\x82w\xab\xd2\xa6\xfa\\9\xabj62\xbb\x18\x0d\xc8\x04e\x05e\xd0\xea\xd8\x04\x8d\xbf\xaa\x88\xb54\xc1&R t\xaf\xbfA\x0f\xfe\xda\x80\x89\xba\xba&\xf43\xfc[\x1a\x16+JP%^p\xdd\xc8i:eU\xd4\x05\x05P\xc3\xa0\x992~\xe2?\x06Lc\x9e\xa7\xc5\x199|\xb6\x1f\xfa\x9c\x88\x92 \x7f\x02\\N\xae\x03\xae\x8aM\xac4'\xec\xbbNhc\xf3&\xd4\x0b\xa6Z\xcc\xe2\x95\xadPh *\x1b @\x96\x87YP\xed#2\xcb\xdd!\xf5\x14+\xe6\x18#\xc1*\x9c\xd1\xb0.\x86\xe0p\xberD\xc0\xc7r]\x0ex\xfc[\x0f\x8f\xad\xb6r\xe2\x18\xa8\xabR\x94/\x14-\xca\x16ij\x0fB>Ht7/phz\xf4\xd5y)ZOSLQ#B\x96\x89\x8a\xc7\xe5E\xec{\xab:q\xber|p\xfexp\xe8\xe0\xd7\xd4FEL\x87<\x96\x83\x18\xdc\xa2\xf2\xe1\x8b~.\xe3)\xba\xd5\xd2\x97\xe1\xf4\xc7du\xac\x18\x1d\xcd6\x91\xdcl\x16\x85\xe24K\x1b\xa1O\xd4\xb0\x81\"\x97\xe2\xb7`\xbb\x14\xc2\xa5\x8aQ\x9e\x8f\x14e\xf8\x18\x02x\xa2\"\x84>\x86\xc0\x9ef\x1d\xfdO\xa6\x81\xc9\x83q\xba=\x17\x086\xdd\x9e7\x8c\x8eB\x93\nQ\x02\xbd&V>\x97\xaa\xc9\x96\xc89H\x11\x0cH\x1d\xf5i\xdc$\xae\xcb\x0eL\xe1\x1c\x85\x82\x90\xd4\xba\xd1\x9c\x93\xd5\xc3\xac\xa2Uu\xf8\x18\"x\x02E\xd6\xf9\xa8Y\\\x9c\xc1\x04\xb2id\x11\x17\x1d9\x16B\xb5\x19\xe1\xf1tF\xd1\x08f\x06\xf1\xd5z\\\xbe\x9c\xc6jf\xe2:zI\xc0\x88\xcb\xd2E\xacNN\xeb2\x86ya[6\xadXW@g_\xf5\x8bHU\xd3\xa2\xa3\xb4\xbe\x9c\x16u\xcem+Z\n\x96T\xdd\x9e\x0dm\xcf\xa6dB\xda\xb4\x1b\x1e0\x04\xf1t\xd3\xa0\xcc\xc7\xd39\xed\xc8\xdc\x12K\xcc\xf8\xb6\x11L;l,\xa1\x82f\x95-\x16\xc8\xe7\xb8\xc09\xf8\x87\x0f\xb0./\\i?\x99\xfaQ\x9f\\CD\xb7R@D\x97U\xc4\x16O\x9a\xf4\xf7\xb9\"\xb0\xd2X\xee\x9e\xcb\xa4\x8a\xb8\x1a\x90=\xc0\xabEx\x92O1\x83\xa2\x162*V\xd2E]V\xd6\xaf=$\x07\x1c\xa8VB+\\)\xe3\x03~]\xe9\xfe\xf8\xf5\xcf\xa5\xf5Y c\xc3\xbe!\xdf\xbbmC\x94\xf0\xcf\xc4\x9f\xbcM)\xff3\xfa\xcb\x17\xd8G4LL\x93+\x0b\xb14\x922\xfc\xc3\xd7\xb1tR\x999\x13\xeat,}+\x18\xfeQ\x9a\xc2\x87\x0f\x107H\xff @\xfc\xaa\x8c\xe8\x16\xc1R>x\x04\xd8\xa2\x03\xf0G\xd1\x90+\xe8\xc1m\x87\x05T\x18\xa1y\x99\xe8\x02\x91\xa2\xd4\x9f@\x83\xe4IU\x99\xce9\xe2(\xa1x[H3\xf5\x05\xb8(\xed\x173\xb6\xc4:\xb5t\x0d\x13\xb8\xe0\x8d\\\xd2\x16a\x9bD\x17E\xedz\x9d\x13\x98\xc0u\xfd\xf5MmR\xdad\nL\xe4\xfdL\x0d\x11\x17\xcf8\n\xafJ\xb4\xa0<\x90z\x1b\x1a\xb9\x06:\xfc\xd0X\x8bA9?\x13\x1c\xa5\x84\xa7\x1a\xdc\x92sN\xb1\x08\xae\xe0\xe77\x1c\x81\x8f\xe8\xbf\x89\xfc>\x86\x1b\x85\xb0\xf4\xca\xf34t\xe2\x0d\x97YM\x99@P_\xac\xdc5\xabu\xbd\xa2\xaeW\xd45\x93]\x17\xb4\x82\xa9\xae\x15q\xc2\x0c\x7f>n\xedu\xad-D\x135+^\xef\xc23\x13\x01)\xca\x90R\xa6\xba\x8e\x15\xb6[ B\xa9.\xbe<\xd2\x7f\x8c\xb5\xba>t%T\x1c\xbc*WY\x903\xf0\x8d]\xa9\x13[<\nso\xe8*\x8b\x0f7\x83M\xb2\xe1\x18\xc9\xdf\xdcH\x17\x96\x95\xd7\xb5[K\x7fx\x08\xffb\x1bE/\xd3\xb71Et\x9e\xbb\xb2\x19\xa3|\x8c\xe0\xe7\x95\x17M\xad\xfa\x8d\xe4A>\xb8\xaf\xb8\xd2\xbc\xe7\x16@H\x7f\x15\n\xed\xbf;\x1eyD\x17\xdf\x04b\xfc\xbb#\x8e\x92\x14\xf1~U4\xac:+\x0d\xe1U\xc1\xfd\x1a\x88`\x87\x85\xf2A.\x89[`=\x8eF{/\xe9?\xdf\"E\x93\xb5\xf2p\xa4\x13\x901g\xa2\xa8\xb1\xc9\x11\x1c\x15\x83\xc1\x8f\x9f*\x02\xee\xdd(xQ\x93\xdcT\xbd\xf6J\xbd\x8a\xb1\n\xad\xb5\x18D!\x9dJ\xd2\xd1*\xe9+\x99\xe5\x98v\x1e\x8dw\xfd\x91\x87^\xb0\xefiA\n\xca.\xff\xba)\x0c\xfaB_w\x06\x84e\xc7\x88q\x03\xf9\xcb\xd3\x10\xf0X\x9c\xef\xfa\xf0\x12\xfb\x92\xb2\xe6Kx\x8a\x12\xe8\xcb~\xdf\x03\xd9\x0e\x1e\xc0\xdeL_\x9e{\x9c\xd4!L\xcd\x98\xfbR\xdc\x7f+:\xe0J\x7f\xf9\xb3O\xa6\xe81<\xc3\x81\xd5>\xf6\xfb\x06Z\xbcG\xe7\xd5'\x16\xc3\xf7c^\xed1<\xf34*\xcb\xc7Pi\x89\xb2\x10\xead\x9a\xaf\x95\xb8\xfb\xf0\xf0\xfe\xdd\x07fM\x8ck\xfc\x87\xf7\xcd\xdff\x18f\xdc\xf8\x89\x83\xf9\x81\xa5\xda\x867\xf9\xd0\xfcm\x0e\x13xP\xbd\x13'\x1f\x8ez\x0f\x0e\xcc\xdf\xb8n9:\xb0\xb4\x8a\x91\xf1\xfa\x16]s\x89~\xc97q\xbf\xbfo.\xc0\x05\xa1\xfd\xe9O\xefn\x0e\x86\xfdw7\x0fN\xce-\xe5.\xb1\xdc\xbb\x9b\x83\x93w\xdb\xc3\xe1\xf0\xe0\xdd\xf6\xbb\xef\x86'\xfc\xdf\xfb\xa3\xf3\xfd\xa5\xb9\xd2\x855\x8f\n\x7f\x92+\x96.\xa2\xe4z\x0c\xceK\xf5'Em\x8c\x19\x9bgp\x1d\xceY\na\x9c\xb3%K3\xc8\x13\xd8\xa4\xc9\x8ceY\x83b\xed\xc4I\xde\xbf\x0c\xb2p\xe6\x8c\xc19\x8d\"\xb6\x0c\"\xd1*\x17\x1dn\x1e\x0e\xc1\x8d\x93\x1c\x02\xc0R\x80h\xb4I\xc28\xf7\x9a\x9a\x0d\xe3\xab \n\xe7}l \x9b\xa6\x17\xd4\xb49\xf1\x9d!\x9d\n\x08\xc55\x82>\xcc\xcc\x9f\xb9\x8e\xfac\x90\xaf\x06\x8b(\xb1\xe5\xae\xe4:\x01\x19\xb5\x07\x8b4Y\x1f\x0bo\x1a\xcd\x9dX>\xca\xad\xf8\xcc|<\x00*\xc6\xfe\xeb ^\n/\xdc\x8b)3\xdaE\xed\xad\x1f[o\xd4A\xd5\x1e\xaeB\x85\xa2I|z\xfe\x18b\x0c\xc4\x9eR\x84X\n]n1hI?\xe5\x9d\xc6\xf6\xbeql\xc5\xb0\n\x89\xc2\x0e\x07\xa9\xe1\x00P}\x93\x02y!\xef\x82<\xf8\x89\xb98\xd5\x03\xf4\xfbC\xceON=)\xf4\xe0\xd8\xa5\x13Su\xe6r\xe9s\xc9\xd6S6@\xca \xeb\x15N;;\xcd\xfe\x99}\xdf\xd5\xb6P\xac\x06\xda\x0e\x1f\xaf:\x0d}\xe1D-\x05\xef\x84\xae\xa9\xb9\xa4jk\xee[I\xaf\xe7y\x1c\xb5\xee\xdd;xt\x9f8\xc7\x93 \xdc\xbb\x7f8z\x84R\x0b\xaf\x08G\xfc\xc5\xc1\x10\xe3\xa2\xdc\xbf{ot\x00\xe24\xad\xde\x96G\x01\xce\xb8\xbc\xea\xba\xa3\xe1\xc1!\xdc\xe1\xbb\xf7\xe4 \x8c\x86(\xc5\x88w1\xffq\xff\xde\xbd\xc3\xfb(X\x89*9\x17\xa0\xb8r0\x06\xf5\xe6\x0b\xc2\xd2K\xfbj\x8a\xf6\x10\x13\x9a\x8f\xe4\xe4#O\x9el\x00\x05\xfa\xbd\xa1\xa78\xd7{\xa0\x0e}\n\xa3!\xdc\x01\\\x9e\x0f\xb4\x1dB\xa0\xa1\xb5\xff\x00b\xe5\x18\x1d*\xf2&\x0c!\xcd\x01\xcf\x02\x05\xb4\xed\x08l\xaf\x1aQM\xcd\xa5\x07\x07\x07\xd0\x83\x07\xf7\xe0\x1bp\x19<\x81\x83\xfb\x1e\xf4\xc1u\x87\x18\xcd\x0c7\xfb\xden=\xbf\xb1\xdd<\x90\xcf\x95\xb8\xfd`I\x89\x82\xb8\x80\x98 Gp\xe22\xd8\x879\x06\x95\x03\xbe\xae\xc2G\x81\xde\xe7\xdec\xdc\x8fk\xf8\x06\x16\xf8\xf91G\xe4 D\x1e\xae6\x95\xban\x06\xbb\x13\x97\xe3\xbe{\x8d~3\xf0\x0d\xf0*._\x99\x8d\xb7\xdb\xc4\x7f\xb4\xc3\x98\x86\xdaz\xce\x18L\x075\xf7a\xe9\xc3-9\xe2\x98\x8c\x9a\xf2\xb9\xd0I\xb6\xb5\xd4\xb5\xf9\x16\xbe|8\xbf\xba\xb2\x7f>\xae\x1b\xc8\xe4\x83\xfb\"(\x85\xeeA\xbd\xf6f\x82\x82\xd0\xf3\xe1\xc4\xbdF<\x86\xa7\xc0'xc\xe8\xea\x86\xf0\x9d\xca\xf1\x89\xfe\x11\xb3\x03_J\x0b\xd1u\xaf\x87\xa1\xa7n\xba\xfa\xfcA\x81\xfb/\xdd\xcb\xddp\xfc\xf4sq\xdc\x87\x0b\x9fC\x9b\xb8>QMr!\x1f\x04\xccK\xe9\xc3\xf5\x0c]\xb6\xa4\xb0\x96#\n\xa3\xa8$\x84\x83U\xc9{\xe1\x92c\\\xe0\x11tN\x83s\x8e\x9e\x02\xd5\xde\x13j\xdd\xb85\xaf\xa0R\xc7)\x06{\x99\xc0{\xd5g\xa2\xd5^{\x84\xd9\x97\xed\xa8\xc5\x91)k\x19\xdcS\x91\x81\xfc\x16\x9e\x88,\xe6\xbc\xd6m\x837\xa8h\xba\x0fy\x81\x1a1G\x0d\xf7\x02c\x82pBn\x02\xda\x98C\x12U\xe4\x84\xfe\x82\x96rk\x1a\x9f\xb5o\x10\xa6\xc7\xd2\xea\xe2\xf8{\xbd\x18\xa1\xb8\xde\xef-P\xda3\xfbb\xc9\x07g\xc6IK\xec\xa3\x8e\x1a=\x96\xc8\xcc\xd1q\xce\x919\x14\xc8<\xe7\x0b\x17j\xc8<\xc70(\xdec\x98\x0bd\xe68\xb8\x81>\x87<\xa9\xe8,\xfd\x02\x04^\xb9K.\xf3\xc2\x1f98\x0e=O8\x15\x9c\xb8\xc7\x0dF(O\xf9\xb4\x13OAj\xafW\x97\xf0\xf4\xe7c\xaf\x17\xf3R\xf5\x84S\xd0\x86\xc7\xef\x9b\x84\xa4\xea\x9b\xadU\x17\xbebi\x16&\xf1\x18\x1c4\xe6X\xb4\xd0\xed,;0\xe5\xb2\x96\x0f] \x1a\xc33;\x9b%\x1f\xb01\xbc4O\xd5b\xb4\x10\xed\xfeh\xfe,\xdb<5\x7f\x16.\xf6\xe3\x8e\x12\xb1\\\xd8\xee2\xb4V\xebv\x90\xb3,\xa7\x98|\xceM\xdc\xef;\xd0#\xd2iJ\x99-\x9f\x8f\x16\x02n\x9b\xcf\xdb8\xa4\x19w\x1b\xdfg\xcdh\xa9\xcd\xe8GW\xe6\xa6\xb9[\xb9k\xf8i\xf3\xab\x83\xac\x0fZ\xbeD\x94n\xac\xa6Y\xf9\x88qn\xeb\x8d\x15\xc1nP,g\x14\x02\xd3\xd5c}$\x15\xffC\xdd\xe3\xcf\x90\xe6\x86\xffy8\xb2d\xbb\xe9\x14\xdfC\xef\xbc<\x1f\xe9\"\xd8\xb6\xabb\xbe\xa6\x0c%\xe5\xb9\xf8\x95\xe6\xc9\x91\xaak\xf3\x16K\xab\x88\xf58i\xeb\xec\xc56\x8a:v%\"\x85vjR;1\xde\xad\xf5\x1dC\x89u\xda\xcb|@\x84 \x0d\xf8\xf2\x16z\xec>|\xf4\x88+\xb7\x03\"Kd\xdd\x97\xde\xc9@q\xaa\xba%\xf3.\xf7\xaa^+\x91,m\x8a5\xd2\x12\x99J%\xb1\xa9e\xf0\x81\x96\xb0\x87>\xd4l\xf8x\x84\x81G\x89w\x1cbzxC\xd8\x99\x18\xf2\x8a\x07\x86L\x90\xa19M1zC\x0c\x853D\xe5\xc89\xa8\xb7\x8cqE\xde\xf5\xf6+\xc29\xd3\x0ckU;\x8ct\x01\x1d\xb1\xc3\xca\x888\xac;1\xe6\xa3\xd1q \x1c\xac\x83\x9b?\xb3[\x14v0\x85\xa9zch:\xd2\xcdW\xa5\xaf\x99\x0c\xf5\x19I\xc9 \x13PV\x1bQ\xd61J\xa4\n3\x8c,\n\xbd\x9e1\x833zLJ\xa9{\xe5\xa3\xc9\x9eMg\xc5\xfd\xff-\xfaQ\x0fm\xc6\xc55\x17\xaf\xd5\x81\xa7)5\xc6\x1a\xed\xd7p\x04\xee\x02\xcb\x16gTk!D\xa9wk!\x8c\x8eEY\xfa\x8c\xc7\x94s\xf3\xed\xe1\x85\xe7\x83\xe5b\xf1\x86k\xd6n\xe0\xc3\xdc\xa3\xb0\xd3\xd39\x1e\xb4\xf3\xffI\x16[a\x1cTr\xe0\x9c\xf2\xff}X\x9d\x17\xafV\x16\xec\x87\x02a\x82\x02\x0f\x8a\x89\xe3\xf9\x97\xcc'6\x083\xfc\x9f\x83e\xab\x8by9Q\x90\xb8\xba[CJ\x19&\xb2\x1ecgw\x02\xa1\x8f9m\xf4IWYld\xf8\n\x030atO\x89\x94\xcdA>\xebpB\x95/)gTKm.)\xe5\xe9\x96a\x94\x8bE\x10e\xcc`\x8a\xa4\x06\x05>6\xe7B\xc9\xbe\x0b\xe30g$\xb1\xd0\xc1s\xbd\xbd9[\x04\xdb(ol\xc9q,@\xf3\xd1\xcc\xce\xeb\x84\xb2\x16sX\xb4l\xa7\x97\xbe\xc6\x0dA\xdef\"\x91\xc8\xb3\x1c\x7f\x1eA\xe8\x06(\x9b\xa8\x01\x046\xea\xc0I\xa4\xe1\x16F\xea\x06x\xb5\xc2\x90wW\x8c8qI\xe3\xe3\x9d\xf1\xbf\xba\x08\x92R0\x83\x9e\xb9Of\xb22\n\xa3/\x86\xc2\xb2\xd7\xe4c\xa9\xde\x1c)U<2W\xdc\xd24\x1bF\x84\xf0\xf2\xfb\xa2\x04\xe6`o&\xd6O\x0e\xfa\xeb`\xa3\xe5\x92\\\x07\x9b\x1a\xdb+\x9d\x85M\xcfKV\xcb\xe2\xb8%\xed\xf5<\x99\x035w\xd94\xe5\x05-\xfe*\xd5d\xa8\xa0q{\xcd\x81\xbfy\xbd\xae,\xf9O\xcba,\x99\xd7Y\xb6\xa1 \x97\xbfR\x1a\xd4\xda\xea\xef5\xeb*fb-\x9fn!0\xe5#\xc6\xee\x96\x82.\xe5\x82\xde\xc5\xec\x1ar\xb7\x80(\x97S\x8e\xcb0\x0e\xd2[\xc7\xf3\x8a\xd7\xcee\x90\xb1\xfbw[-\x07V\xa5\xe8\xde]O$M\xed$\xce^iY)\xcdA\xdd\x0f, \xcf\x0f\x87\xe6\x84\xe7\xf7;\x05\xf47\x1c\xc8(\xde3\x01\"\x9d1\x14\x19\x0bb\x91\xb1 uC7\xf6\xd0\xc2\xaa\xc4O_$ \xc6P\xacB\x17\x8e\xd1\xbeV\xb8\xe6 un\x81*}@\x9f6p\xc9 \x84\xbe\x8c\xd7o\x14\xc7`\xf0\x84\xe6\x81\xf0\xe0)\xad\x1a\xaf.j\xa5\x9eN\x14\xd4\x90\x13\xf4n\xc8p\xa5%\xfe5E\x84\x1f\xd57\xf3n\xdb\x86YfL\xb9\x16\xe0\x03\x84m2\x92\xde\xc0^C\xc3\x16\xed\nt2\x9b\x9bQ\xd0\xaa\xaf\xc8\x95-.\xfb\xf9\xb0?\xfd\x89\x02\xf2\xbd\xeb\x7f\xf5o\x7f\xbc\xf3\xf57\xbd\xc1\xbb\x9f.\xfe\xcf\x87\xff>\xdf\x0f\xa5m\xc5\x12\x88L\xfaw\xccVA\x1a\xccrtD\x81\x15\x0b\xe6,\x85E\xc8\xa29\xc4\xc1\x9a\x99\"h(\xf2_\xb2\xd2\x94\xd1\xda2\xe7\x8ef\x87\xb6iW\xf5msg\xa9\xb93\xc9 \xcc\xd4/f7\xba\x19\xc3F$Ak\x88I\x7fK\xbbqWL\xd0\xde\x16\x7f\xe6I\xcc\xc6\xba\x8d\xca\xe0\x10\xa8?\"6\xbb\xd9\xb0\x0b5Rk\x7fkH'%\x06\xbc\x1a\x849\x85\x88\xa7s\xf9)%/\xa5\xb7y\x92\x9e\xef`D\xab\x8f\x13\xe3\x97u\xda\xca\xc4\xbc\x95\xe8\x9f\xb8\x0e6\xa8\xf6\xfb\xe50\x81\x89\x0c>z\x12\xccV\xed\x81\xb1Us\xc1f\xc3\xe29%\xbb\xa9\x8f\x98n`\xa3G\xb5.\xab \x85\xc0\xd0]\x97\xbe\x18:\x98\xb3\xe9\xc8\xe4\x94T\xf4\x88{ \xc4\x93%\xcb5\xa1\xe4E\xb0f\x99\xcb\xbcz\xff\x9d\xe7:\xcd\x1b:\xef\xb4G\xa1\x9d\x9e\xb1\xc1e2\xbf}\x9b\xb1\xb9\x12\x1e_\xa5\xc9:\xcc\xd8 exC\xbaB\x9c\x9eE)\x0b\xe6\xb7\xc0\xffuL\x87jE\x8b\x18\x90\xad\xd3\x00\x83f[\x1e\xbb\x96\x83j\x0f\x02\x0e8\x84$\x8e\x92`\xde\x05\x05\xf8\xc3\xc5\xa6\x94e\xdb(\xb7Y\xe4\xb1I\xc6W\xa0k\x9b\xb1\xcb\x06X\xa1\xb3\x11\xbc\xdb^n\x9bI'_\xab\xef\xc2\x88\xbdFva\xa6R1\xca?&\xe7$I\x0f\x06|w\x9feZ\xb2c\x12\x97:\x8d0k\x826\x94\x9dj9\xef\xabn\xfdP\x99Q\x91b\xd8-\xa5\xe9l\x98A\xc6\x08t\xf5\xaa\x18\x82B\xa4j\xec4\x95\xa8)K\x05\xe2\xa9\x0e\xeb2\xdc\xd1E\x18\x87\xf9\xb7\xc9\xfc\xb6\x93P\xcf\xd7\x85\xaa\xf1\xb6N\xe3\x10\x19\x97\x91\xc6\xe9UL\x07\x01\x1e\x14\x0d\xbda7\xd8\x90\x9d\xf3i\x17\xc1.\xa3\x04\xc3\xda|\x1b%\x97\x9a~\x15f\xaf\xe4\xdf/\x17B^\x91\xed\xf3\xa2\x9d\xdb_$\xe9\xfay\x90\xa3\xf3\xf4w\xe2\xef\x8e\xfd\xc8\xe2\x9d\xfb\xa2\xcb\x05\x18\xcc\x15-\xaco_\xffp\xa6\xbd\xea\xd8\xad\\>M\x9d\xea\xd4{P\xa0\x0c\xe0\xf5d\xb9\xb4\xebJ\x07\x1an\xc1\x84\xe3\x8cL'\xeaC\x0d\x1a8\x1c\xf3\xf5v\xa7\xc6\xfa6\x97Uh\xbe\x07.\x1f\xbcXT\x1e\xf9\x87\x0f\xb0\xa7u\xd0\xb0f\x80WH+\xb2\xac`\x15\xdb8\xdbn\xb8\xa8\xcf\xe6\xf0\xad\x9c\x0d\xaf\xd9\x16\xfc\xada\x95\xecH!s\x94T\xb7\xd0\xe6\xe2H7(\x90Lf\x9ci\xbb\xce,\x89s\x16\xe7}\x1a\"\x1e\x1a\x9a\xb0LE\xc6\x11u\xb3Z]\x1f\x9c\x9c\xdd\xe4\xfb\x9b(\x08\xe3\xc7\\\x8c\xcfX>y\xfb\xe6\xbb\xfeCG\x05\x97-\xb0H\x86\x8cRo\x06\xbc\x95.\xdd\x18\xaayx\xd1\xf5\xd3\x91@\x8d\xa6qz\xc1f\x13\x85\xb3\x80S\xb6\xfd\x9b\xfe\xf5\xf5u\x9f\xa3x\x7f\x9bFda\x9bWgm\x94`\n\xec \nxI4\xa5\x95\xbf\xca\xeb9!\x8521\xef/\xf2\x1b[@j\xbdPy\x11\x0db\x90\xc8\x04P.\xd6\xa5=\x0dz\xad\xcd\xb6\xe2v\xa7\x9e$\x954`\xe1,\xd9r\x8d1\xc9QdS\xe4\x17x5\x082\xe0\x8bnC\xc8\x1d\xc6\xcc\xb1\xadj\x9d\x85BP-\x91\x97\x0e[\xac\xf3\xd8\x1a%8\x92;\xcfq\xd4\xbeO\xa5\xe5\x17X\xc7g\xebz\x83|\xc5bwk2D\x8b\xe1\xe6D\xfeZh\xd2m \x8ak\x05\x06\xc1Q\xda\xfb\xd85i\x88n^\x98\xf74Kx^\xb1\x84OQ\x956\\yq\xf3i#\xeb\x95\xda\x8b\xddU\x0b*+\xa6/D\xa7\x95\xfb\x0c\xb4\xe7\x00\xbe#\xda\x97\x91\xddB\xd1uQ\x8fj,\n \xae\x15\x9dt\xb4\xe7#\x94\xa8\xbah@\xd5\x9f\xb3$\xfe\x9c\xb6\xfft\xf6\xf2\x05\xf9qX\xa9W\xe9\xbdMY\x98Y-\x18\xf2\xcc\xc5U'\x80\x7f\xff\xe8\xa1\xeaP_\x7f\xa4\x15\xba\xb5\xc4x\xe6\x0f\x06\xf5\xddhK,\xab\xeb\x0d\x92\xd06%\xb7\x85m*S\xed\xccR6gq\x1e\x06QFn\xdf\xc5o\xaeF \xf9\x00\x8a\x00\xb7\xe2\x05\xa1X\xe22\xf9FE\xfe[\xb3|\x95\xcc\xb11\xfaS\xbe'\x87\x19\x86\x7f\xf8t*\xaa\x1cx4I\x18\xef\x1cC\xe9\x9d_\xb57\x18\xf6P\x13\x0ci\x96\xca`i^~\xc3\xec\xf3\xd2o\x19\x98\xb3\xf2\xceI\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedfc\xcf\x04\x00\x05\x1a\xdc*\x8f\x0ftF\xef\x8f\xb8\xbcit\xe7\xfb\xe8\xe6r0r\xe2\xc5O\xe7?N\xde\xa8\xe8\x87k\xe9\xf8\x84\x7f\xa8\xc2\xe2\x87\x96\xc5)e\x0b\x96\xa6( \xd0[\x17\xdb)BRj\x1d|\x7f\xf2\xecy\xed\x0b]\xc7\xb7\xc0<\xaa\xdex\xd12\x8a\x92k6G\xb6\xf0\x1f'o I\x81\xb7\x06)\xfb\xdb\x96eyfB\x08\"rR\x83w\xe3nV\x99E\x07\xab\x8c \x83MV{L\xb1!/\xdf\xddq\x0cV\xc3F3B\xabxP\xbam8i\xbam\xc8\x9f\x94.\xdd\x93\x05]\xcb&\xd2\xc3l\"\xd0V\x1d\x0f\xf7\x04\xf3\x9b8\xc6\x06\xec\xcc3\x97\x16P\x83[\x10\xd7\x91\x0d\xaf\x13\x83\xf4 \x16S[W\xeb\xf6\xa6}_\x93\x86\x0d\x951\xf4\xd3\xa3w\xf1\xfe.\xbbY\xdb\xacq\xdb\xd5\xd0b\xa3\x08\x8a\xec\xe2C\xed\xb6\xbf\xfeH\x7f\x07\xb9qc\xa7\xb9A\xd0\xf7*\xf5\xab\x9e\xb5\xf2\xf9\x9c=\x98[\xf9*q\x84\\O\xb8B\xaa\xf3\x04\x1c\xe1\xea#\x95\xe4,\x0f\xf2-'\xb7\x0e\xfd\xe5`jLN\xf3\xe4\xa71\x1c\x0c\x87\xa2t\xf2^\xc5\x8b\xa5\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\xe8\x95\xb49\x14\xbfj\x1da\x9118/\xff,\xc7f\xe7\x05\xbe\xce\xb5r\xfc_\x84\x9a\xab\x90\xa9j@\xd5\xd2/4\xf0\xb0\xc1\x82\xe5\xe68rW\"\x16\xa0\x19*tS\xc2\x18\x9c\x8a%\x01\xa7g\x08w\xc6\x1fy@5\x06\x87\x0e\xa7\xa80\xfaX\xcac*|E_\xcd\x8dp\x85m\x0cN\xa1\xd0h\x8dp\x0d\xa3\xf8\xd9*\x00\xf2'Oo[\xcca\xda\xa1\x03o\xdf7eO\x96\xcfG\x98\x05\xe8R\xd7\xd5\xad~odo\xcb\x8c8\xb6l\xc0R\xaa\xe6k#\xfel\xda\x0bM\xfd\x1e\x83\xa3)\x1aT\xa9\x8e\x9ef\xd1\xa8d&\xf4\x10r\xae0\x95\x9dtv:\x95\xfa\xd6\xb9\xe3\x17.P\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83\xe5z\xea\xba\x93\\\x06\xba\xeb\xc6\x9d;\xc07\xe9/!\xbbn0\xbf\x99\x81\xc0<\x88\xa5\xf4K\x13V\xda0\xe3\x8d7;[\xe9\x8f>\xb4\xc2\x01\xb8\xd5E\x8d\xc4E\xf3@\xebP\x93h-\x11\x9b\xa8\xf8\xbbX\xd9\x11\xa3\x90\x0cB;\x8f\xdd\xd4\xc2\x82$\xcb\"\xf10\xd8L\x99\xe5\x8e\xa1V@$wO\xa0\x07\x8e\x8f\x81\xb1al\xba\x8f\xef\x97\xc6?g\x11\xcbY\xa7\xad\x17EU\x97|\"\x86\xbc\xda\xe5\xf6\x97,\xef\xd4\xb8\xda8\xb9@\xc4F\x82\x8c\x0e\xbb\xf5y\x8e\xcb\xa9R-\x1d\xaf\x82\x9d\x1c\xd0d\x07\x15\x07<77;w\x96\xfb\xca*\x93l\x80\x80\xf2\xea hk_\x08Ym\xb9Y\xe5SI\x96-z\xf4\xacs$\xe7B\xa6\xfc\xe1\xd4\x18\xe3s\xbaqT;\x957\x8c\x11\x9d\";\x98,\xa4u\xd1vkV\xdf\x8f\xba\x83A\xc3 9\xe0)\xb9p\x904\xa32\xfa\xde\x9bM\"\xfaT\xd0\xd5\xe57\x98L\x87\x99\xd8N\xef;\xce\x84\xc5y\x1a\xfe\x16S\xe9\xb6/S\x0eL\x06\xcf\x0fh\x99R\xc51H\x9b\xa1\xc9E\xc8\xb0\x00\x96\xb3\xf8[\xe4\xf3\xcfO~8ys\xc2\xf9%W\xd8}\xa1\x9e\xfb\xe0\xbc|\xf5\xe6\xf4\xe5\x8b3\xfe\xe7\xab\x97g\xf8\xe9\xd5\xdb7\x8ea\x81fZ\x97\xb3(\x89Y\x97\x15\xd7\xa4\xb2\x19ZP\xfc\x86\x15\xbcL\xe6\xb7\xfa)\xdbi\x1cZ\xee\xd8\x1aWP\xa4\xcb\xd7\xc6\xe9\xa9\x97\xf3\xd2\xcb\xf9gNe^9\xf9o\x9a\x14i\x0fc]\xdb\xb0k\x84\x85\xaa1\xae\xaa'\xf6JB\xeb\x18K5D\xd3M\x1a\x94\xcfm\x1a\x8d\x95\x9a\xb2\xc3*\xcf\x07\x9d\xfdi$\xba\xd1\x92\x91\xc5\xa8}\xa1\x1a\x82\x82\xe8\xcb\xe3X\"h5\x9b\xcf\x98R4q\x16N\xd5\xf3\x11\xcc\xd2\xd0\x95\x88c==\x1c\x8e|8\x1c\x1e\xf0\x7f\x0e\xf9?\x0f\xf8?\x0f\x0d\xe82\x1f\xa4l\x1e\xa6\x1d\xd2\x8d\xcb'\\\xa8\xfc.\x97\x9a\x95O\xb7\x96i\x11\xb7\x94\xbb\xa9Pjg\xc9\xdcz@_\x02\xdd\xae\xfb\xd0\x05\xe2\x9a\x95\xa7(\xa1\xa3\xe6\xc6\xcb\xc6;\x80\x1e\x1b|\xafT\xee\x84\xff|M\x06A\x98\xc0\x8c~f\x9b$\xc6{\x9ds\xfe\x1b5\xe7\xae\xab\xaf\xadQ\xcdi-n\x10v@\xb7\xbe \x99\xc3^\x9aml\xa1(\xfc\x9f?\xfe\xf0}\x9eo\xc4<\xec\xa6\x9apG\xcf8\xd0\xb0\xaf\xb9\x14h;\x1e\xb6\xd2\xa7r\x0dB\xc4\xb0\x13\x91\x92\x8f\x02\x9d\x8d\x1br\xc1\xf9Y\x14\xc9m\x13\x9b\xeb\x8a\xa8\xbev\x97\x110#\xa9\xfe0a|qR\xd1\xf8\xdb\xd7?\xa0\xca\x1c\xc2\x11\x84\x03\xed-\x8c\x81\x95\xfdI\xfe\xb3/\xf6\xa3\xcf+\xb5\xf8\xbcH\x93\xa2\xea\xc8\xd0\x0b\xe6\xe9\x97?\xf8257\x19\xbb\x82\xc7\xe0%x;\xe6\xf8\x08\x16\x9d\xa9\xb1|\xd2\xaak\xe8\x0b\x96_'\xe9{i^\x87E\x10Fln\xf2\xfd\x90\x8f\xe8:\x0f\xd7,\xd9v:o\x97\xcf\x17\xeb|\xc3b7Q\xc7Q \x9d\x7fa\xaa\x1d'\x8cg\xd1v\xce\xe8\xf0!)\x9d\xf6p\xc9*\x1c\\\x87\xf9\xea\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|\xb8$\xc9+\xc5sWsoO\xb4C\xb7#:\x8a\x1b\xeb/mR\xa9\x99\xd8\"\xf9\x1cl\x92\xe8v\x11F\x91\xc9+X\xfd\xe5:[y\xd1_\xbfk\x90\xb1h\x01G\xf4\xdfXS\xb1>\xeb\xa2l\xec>\x1a\x9a\xae\xaf\xf0\xf7\x0f\xcd\x17\x92\x1e>\xb2\xdc<*\xef\n\x85!\xe6\x84\xb0\xdc\n\x1e2\x8f!)\xbfUQ\x02\xc6\xb5\x9c\xf7\x9f9\xbf\xc3\x87\xd5y$j\x1e\xf5\xf9\xd5!\xeb2\x0df\xef\x19\x9fHg\xd3\x00f\x84\x9b\x9e\xd7e*\x83\x0d+\x8c\xe7\xe1\x8c\x95Zo\xe7\xab\xd4\x01f\x96\xa3\xe4s]zJ\xd9\x86\x05\xad10@\xeb\xa5\xdej\x19d\xeb\xf7\xd2\x9e\x079+Y\xcdN\xcf^\x92\xe1\xac\\\xd6\x1c\x8dg\xce\xa2p\xcd\x15\xb31\xde\x0e\xae}\x97\xc1n\xf6\x0cR-}K\xc7\x90\x8a\xe0\x13\xb6\"\x7fA]\xfde\x1c\xdd\x8e\x8d9\x063\x96\x86A\x14\xfe\xc2\xf8\\vX\xad\xa0v{U>\x86\xbd\xc8\xde\x87\x9b\x17\xdb(\xca,c@p\xe6\x05\xbe\x0f\xe2y\x84\x91Q*V\xf3J\xa3\xba\xc6\x0eL\x04~Q\xf1\xc82\x1f\"\x9f\x8buE\x88\x04\xd3l\xa4%\xdb\xc0R\xd1\xdbZv\xa0{\x82F\x1eV\x89\xb8Xwe\xba !\xdd\x82\xaft\x7f\x0e\xbe\xb6Tq\xe36\xd6RW\xc2\xaf\x9a\x04\xfdP\xb9LQ\x06\xb4\x15\xa7\x93|D[\x01\x0c\xe8\xfbf\xb8\xe2\xcd\x9f+\xf4\x8fm\x81u\xb0{\x9c_\xa1\x84U\x8f\x97A\xefe \x80\xea\x87t\x10f\xe2V\xc1\x95\xa7\x0d\xff\x08\xa6s\x17#\xc4\xc3\xb8:\x07\x8f#\xfb\x84\xa3\xfd\xdc\xcd\xdc\xab\xd2\xa7s\x18\xf3\x9a\xb1^F\xb8x\\y\x9eA\xa5\xe2\x9b\xbd\xf6\xd1~n\xb2\xe0\xe0\x96\x15\xcc\xf0J\x0d\xd1\x10\xff\x8f\x97-\xdf7\x8a<\x0f\x8f\x07\"\xcb\xd6\xdaU\xdc\xdbJ\xda3\x13t\x808|\x98\xc1\x11\xdc\x0e\xb2$\xcd\xdd\x19\xdf\xe0. \x9a\x94\xa9\xf3\x92\xbc\xdd.\xe1 \xac\x95\xb7[\xafw\xd9\xa4\x7f_\xc0\x04\xd6\xd3K\x8b\xc1\x0b\xdd\xbd\n\x80\x9d^`&\x07wY\xbd9\xef^yp\x04K\x99S\x86\xb9\xbc\xa8\x0f FP\xf3Z\xd0\x96\xcf\xb3V5\x86\x1e\xb8\\8p\x06|\xe7/T\x9e\xd2\x0b\x95\x9b\xb4\xb9Q\x03\xd1\xaa\xbd\x91\xfb_&CfQ\xa0\x91\x99\xa9s\xfd:\xe1\x0b\x80n\xe5\xa6\x83 \xcb\xc2e\xec\xfe\xfd#606\xc6\xcdQ\x01\x99\x02\x89\x07x\x8aS\xdc\xf7-\xbd\xd7\xc8W!T\x05\x05\x810\xba\xd1\x9c\x88\xfa\xab\x00\x03\xa0_2\x08\xd4\xe4j9E\xaeD\xdc\x1b\x0do\x82\x81bjp\x04[\xed\xd7X\xffV_\x89\x19\n\xc4u\xe2\x11\x0c\xea\xcc\x01\x8e\xcc\xaf\xc7\xb05\xbc\xae\xf7\xb5\xb0\xf7%\xf9\x14u\xa1~a\xcb\xf2W\xbd\xc1\x8d\xb5A\x11\x18\xea\xa8\xf8s\xac\xa8X\xbd\x1d\xae\xa2\x1b\xb9N\xb1\xb1G\xda\xdfES\x86\x05]\xd9\xdb\xca(\xa5\xbc\xf8\x83N\x8b\xea\x0d\\\x15;K\xb0\x85\x9eU\xcf\x93\x1cy\x8e\xf6\xb3^u\xdd\xd0\xb7.n\xd0 Jop\xa5\xf57\xf5\xd6\x97-\xab]H<\xdaji/\x8be+^\xd6\x91\xad\x04\xd4$\xdc{\xea/4\xa2\x0bo\x93r\xd5\"\xf3U\xa7\xc8\x15\x89h0gi\xe6\x17\x1dY\xb0\xf3m\xfc>N\xaec\xa1k@\xb2A\xf1g\x93&W\xe1\x9c\xcd\x8d\xf8)\xc2\xb1\xe2\x80\x8b\xae\xa6\xb2\xa7\ni\xb7l\xda\"\x8c\x08\xa1\xd1\xa1\x95s\x12\xf9\xces1/\\\xfd\x06\xae*\x80\xba/&o\xd7\xab\xd5\x07z\xedc*\x82*oF!D\xc6\xc2)\xe8\x98\xee.:\xe1\xfd\x0bj]\xbd\xf8s\x8d\x9d\xa2\xff\xc2w\xb4h\xc2\xc0R~9\xe6\x8a?*&\xa8\xba\x07X@\xbc\xe1lF}\x1csE\x9f\xeb\x15\x8e^\xa7>\x9b\x1b\x98@8\xbd\xaeL\x06\x83\xc8\xb8U\x96\x1f{\x18\x0d\xeb\xce\x1d\xc9\xdc\xabw\x1c\x15\x0f?#\x1e~\x06O\xe0V\xe3\xe1g6\xe1\xf6\x18&p;=3\xf0\xefE\x89w\xc7\xd3c\xe2\xdd|\x07N$\xb7\xcd\\\xfe\x1e\xa3\xf8\xde(\x0e\nG0\x97$\x83C\xd6\xca\x87+\x9f\x0bV\x17>,\xab\x8c\xf5cm]\xdec\x07\xe8f\x16\x19\xcc\x9c\xcf\xd0P \x90.\x98\xcf\xff\x9f-Ko_\xa5l\x11\xde\xf0m8r\x0c1\x9e\xc4\xce\xbf/\xf2 \x0c\xe1\x08\x9eA\x0f\xdeW\"\xfc\xe0_\xbf\x8az\xdd\x82\xeb]\xf4nEN\xcd*\x12~Vn#\xb6B\x1c\xa4\x7f\xe0,v\x0c\x07\x06\xa5\x91\x1c(Qi\xa4?ME\x9au\xd29\xdb\xe4\xab1\xdc30\xc1 \x0d\xd6,g\xa9\x18\xc0\x88\x1d\x1a\nEA\x18\xd3j}1]0\xe8\x10L\x05\xda\xbce\xd5\x0ekl\xeeH\xcb\x92\xb1\xffn\xe0N\x7f\x1aL\xcf{\x1e:\xb2N\xffmt\x8e\xf7\xfa,\xbeW 6z\xdf}7\x9d\xfe4}w~\xfe\xcd\xb9gK\\\x03b\x16\xe5\xc2\x94h*m:\x86\xe3\xd4\x0d\xc5Gq\xa5\xda'\xb2\xc5n0!\x85\xbdb\xd6p\x8e\xcd\x97\xa9\x16\xcd\xacZ`/\x1e\xe8[ \x98/\x0c9Z\x15\x1504\x1a\xa5\xab\xae\xc0\xb0$\xdav\x83vF\xa7\xe2\x86;[`=\xfdQ\xc4R\xe4\xf6VB\xb3\x1b`\x08G\xb1\xa88\xa6\x08\x9e@<@\x90n\x0c\xf3\xcdg\x1cA\x0fC\xe7\xef2\xf3`::\x17[3\xf2\xa1/\x02v\x7f\xc6J\x04\xc6\xa0\x14`]\x0ci\xab\xe1\xdd\x8a&HQ\x92\x10\xa3\xc0E\xe8M\xd6\x01tA\xb0Ry\xb9\x0d\x1c\xa9r\xca\xf2\xa2%7\x1b\x89\xe4\x03\xc3\xc7\xd0\xef'm\x8d\x81@\xd0\x90\xa2\x98\xb3i\xd2\x90\xda[>(9LE\x0c\xb6\xc0Cl\xc44\x08\xd3sO\xb28\x9b{\x99\xfet\xb8M-\x1f\xb4\x18\x97\xc1\xe3H\xf2\x86Y\xca\x82\x9c\xa1\x0eg\xd2\xefl\xcf\x95\x08\xe5\xc7\xb7\x8d\xd8b\x91\x9f\x91+y\xe7\x95\xd7\x81\xb6\xc6\x1e\xc9\xd7\x1a\xfcq-\xcc\xbe\xc7\xd5\x87S 4_\x9f\xc6\xb9\xbb\xf5ad\n\xd9`z\xf6\xc2\xecE\xf0\xc2\xcdp\x88\x01b\x1f\x06\xbd\x17\x06\x9a\xcc\xc31\xe3\xab\x8c\xc2\x8c\x8a\x1c\xc8i\xc6P|\xcc\xe8\xd3\x13\xa4\xc7\x8a\xa9\xc1\x91\xda\xc0iv\x8eQ\xf0\xc7\x10N\xb7\xf8g\xeb\xc0\xcc\x18\xa2?\x1cT\xc3\xc6R\xcdm\x08l\xb3\x0f\xe5\xa3\x9b \xec\xa9\x15\xa9\x98\x9a?\xc3\xcc\xf0 \xf6\x84X\x88\x03U{B\xe9\xbd\xd1\x9e\xa0JX4\x96\xe7l\x07{\x02\x8ei\x10.\xe3$e\xba\xe4\xa7dB\xc3G\x1f\x87 \x8d\x0c\x13S\xacl\xbd\x80\xb0D\xbef\xcb\x93\x9b\x8d\xab}\xf10I\xa5n\xae\x085s\x85\xe4\x12\xbc\x83\xba\xe5S~\xc3?eI\x8c\x83=\x11\x9eZ\xc1\xa0\xf8\xe9#f\xb1\xcd\xb1\xf0B\x0e\x06\x17\xea'f\xa5\xc8f\xc1\x86\xbd\n\xf2\x95\xba0\x8b\xa5\x0c\xefy\xf1ml\xab`\xfcR\x1e\xfe\xd6\x90\xd7\xaf\xd5\xad^\xc0c\xbb\xcf\x01]\xd0\xbc\xccXzE\x1e\x9c\xd3syk\xf3\xf2g\xa8f\xfc\x80\xba<]\xbdQ\x17\xed<\xb4\xb6@\x95\x9cv]\x06\xb3\xf7\x14\xc8\xad4`\x98\x98\xa2mV\x07h\x8a\xfd=\xab/I)\x8b*\xe5\x9cJ1-\xb9\xa471<\x81\xf41\xc4\xbd^]\xcb@\xdb\xce4>\xa7e\xc3H\x0bd[\xb7N\x0d\x19VlQ\xb7/S\x16\xbco\x99\xd9\xc2\xcd\xe9\xbe\x88\xaf:\xe3\x7fm8\x14s\x11\x0b\xd3D\xa8\xdfR{E\xabJ\x81\xaaz\x1b\xa2\xa4\xe1\x08\x81R\xc8\x8a\xefF#q\xa8\x1b\x891\x94\xad,.`\x8a\x15\xfb\xa8n\xfc\xf0_n\x88\x89\xbf4jY\xdf\xac\x85\xab\xb2\x01\xd4,\x1a\x18b\x82\x92\xe9\x98\x96\xda(\xa4\xe7\x83<\xf9\xd3\xd9\xcb\x17@9X'\xea\x85k\n\x14\xa3\xe0\"D\x9epAK\xfdg\xce\x9ar\x8f\x84\xa1\xf2[\xe6\x91\x98\xb37\"\xde\x17\x94\xac3\x99\xb0\xced\xfd~\xa3X\x83\xe6\x18\xe4T\xd3\xec\xbc\xc1\xa2\xb8\x97\xd6.\x8e\xf9\xb0\xf1*\xd2g>\xdd\x9cWt\xd0\x08Mf$\xc0\x94\x8f\x98rO\xc5\xac\xb7\x9bg\x92\x0d\x1e\xd9\xac\x93+\xd6\x90o{\x13\xe4\xab1\xdd\x0c\xdc'\xf3\x98\x81\xe0\xb9\x1b\xfb\xc5\x1c\\HK\xae\xd7\x16\x03\xd2\x95\xc8\xf9\xc2\xe7n7\xaf\x18\xf2ADP$i\xa2\x1f\x86B3\xbd\xd0\x8c\x0b\x89.\x89\xa2\x1cJ[\xe7\xcb\x85\x1d2\x11`;\xee\xde\xd0o_r(\x96\x1d\x05\xf3\x86u\x87\x1d\xd6\xbe\xb9\x15\x11}9\xd5X\xa0;kr\x81\xedjF5\xfbEm9\xe0*j\xb2W`\x8f\xb9YDNMm\x08\x15\xb5\xcez\xbd&\xeb'\x07\x8e\x0d\x9e%f\x0d\xc0Q\xc3-f\xc3-\xae\xfau\xde\xbf`>\xff\x87\xed\x1d\x1fm\xd3\xf6u\xd8=\xcd\xc5X\xfd\xc5\xa5\x1c\xc1\x96\xdb\xeciZQ=+\x02\x97\x94:\xb6\x80\n,\x99\xbe\x9bE\x9cR\x08\xb3!\xf1\xf5\x82\xa1\xe7\x94`871tPL=\xd7\x98\xba\xd2\xe1\xf9\xeb\xf2\x9a\xd4\x02 \xf1\xda\x898\xdao\x95vJz\xb9\x90?\xb9bq\xfeC\x98\xe5,F\xfb\xa3\xed\x93\xeb\xac\x93m\xc6\xb6\x1b\x87\xac.\xd6b\xef\xd9m{!lk\x9e\\\xc7m\x05\xdf\xb3\xdb.\xc5f\xab ^2,\x85\x807Of\xdb5\x8b\xf3\x81\xfc\xe3$b\xf8;\xc8\xf3`\xb6\xc2\xda\xae\x93\xc4\xe59u\xad\xa5O\xb1k\x9d\xea\x8c\xbb\xd6+/@\xd7Z\xfazt0A\xc4\x15\xb9;\x16\xaa\x01iO\xb1\x99J\x9b\x80z\x86y[\x8c m\x84\xddV\x12\xa7\n~!R'\x1f\x03\xc9+\xf4\xc3\x12\xc9C\x9e\xadw%r\x80\xc7>\x8c,\x08\xc9 _\x87\xaehH\x02\xb1\x0d\x13\x0d_-\xc8h,i\xc0G{\x8bu\\\xb3\xb5\xa9J6\xe3\xdb\x9c}\n\xbeUju\xc27SO]0\xa7\xdeW1\xb5\n\xeap\x8eT\xc0\x01\x85n`\xd7@I\x99\xbcRD\xd6\x8fd\xad\x8aYJ&\xa8\x19\xff\x8dv\xbe\xb4\x9b\xa0bp \x91F\x90B\xb1Em\xbd\x9a\x01\xac\xc9h\xa8\xb4\xe3\xcfI\x02\xd69\xadW)\xe1\xafQ\xa9\xd63\x94\x1d\x95~\x8d!\xf6\x06\xd9*\\s\xf6\xdd:/\xb9dZ\xc6\xb7%\xeer\x86'\xf2v\xa2%\x06\xdd\x12q'\x90\xadi\x92\xa7\xd9DdH\xab#}!-Ck\x0d\xf6\xa3mo\xbd?C\xee\x17uK\xcb\xac\x82\xd2\xfb\xfa\xb1\x19\xd3\x8c=\x9d\x9ce\x99\x0f\x0e\xff\x831\x87\x1cij\xb56\xa2\xfciv\x12o\xd7\x14\x11\xc3P\xf7\xc3\x07\xdd\xa5\xec\xa3Kq4\x0b\xc8\x89\xe1\x08}\x0b\x12oPD\xb3\x9f@JVR\xfdUb\x04\x94\x9d|\n\x8d`JQ;p\xe12\x11F\xad\xfaQ\x85\xf4(\x1d\xa8Y\xf6F.y1ih\xba\xebU\xda\xd1\xe6\xf1\xb1\xc1,\x89\xb3<\xdd\xce\xd0\xc0=\x99\xe8\xdf\xd0t \x86\xabv \x8e\x8aI\x8d\x0d#3A\xb9\x1d\xea\xb4\x93\xcc#\x0ee\x11\xb6\xaa\x9fh\xf2\xf7\x1a_\x1c\xeb0:)9z\xd7\x8bR\xa2\xc8#Sz!\x07\xcf\xe5K\xed\xb5\xf4\x9b\xb6\xe1\x96!g\x8f\xc4e}\xc8 \x0d\x00\xb3\xc2\x8c\xd58\xb4/\x81[\xc9Bo\xea\xcc\x90\x7fG\xe9\\\xeb`\xe3\x86\xcdc5\xe4\xa4\x91\xf4\xdcz$,\xe9y\x15\xbdE\x80%7\x9f\xc6\xe7\x18W\x9dM\xe3Z\x10\xfc:\xb57\x8c\xca\x90\x87\xa6\xa4\\+\xbaZ\x18\x82G\x15\x83\xa3*2\x1d\x9d\xf3\xb5\xd4\x7f\x8eIX5;\xf0bT6\xb6\n\xae\xc2d\x9b\x8e\xc15\xf4u`\xed\xeb\xa0\xdc\xd7\xc19\x1e3z\x83r\xabx\xc5N\x9a\xd5J#Pg\xe4|\xeb\x9a\xad\x0d\n\xb91&u\xb9\x15\xcf'+:}\xf3\xa5\x13e\xc4\x85\\%\xf2F&Y\xb7\x94\xbf:\x9dF\xe7t\xda\xad\x1f\x91\xceD\xe2\xe8\xe1c\xd8\xc0\x13X\xa8\x067v#\x18o\x11#WL7\x0d\xa7\xe6+.\xf0L\xe7\x0d%\xae0\x97\xe3\xaa\xc1\x12\xb5\xc6\x12\xe1tn\x8b\xef^\xba\x8a\x80W\xde\xec\x12?\x96- \xe3\x13X7\xa9\x1b \xe6\x8a\x0e z'k8\x02>\xa8\x0e>\x83!%\xc0\xce\xd0\xebk\xba\xf4a\xeb\xae\xbcs\xa3\xbb\x99|D\x9clQs[\xbbz \x1fu\xadE\xa76m\xf3\xd7\x8av\x9a\xfb-\x1ex\xdb\x86 \x1f1V\x07O\xbd\x1d\xe1\x17VA\x13Z2\xe9+pk\xbe,)\x9f\xf2\x1a\xd8\x07\xa0\x97Z\xd5J\x18\xd5\\\xfd\xc0H5\xd3)\x17f#\xd5\"\x12$NA\x90\x84\x1dA\x8en\x1ecL\x1e\xcd)\xc1Hd6(R\x1a\xf0\x02\xe7zk\xd3\xd4,\xefg\xe4\x16Q\x8c\xdd/\x06=\x88\x93\x1f\xb7y\x907*\xe6j\xf0\xcc8\xf8\\\x0d^\xe6g\x18\x92\x1e\xcdH\x8f\x06\xc1\x07\x8a\x81V\x0f \xd5@\xc9\xbf\xd1<\xd2\xeb0_\xbd\xc4+R5\xdfI{\xba\xd5L}\xafl]\x8b\x8cg\x0f\x0c!\xf3\x8fC\xec>\x1a\xdd\xab\x10\xa0\x8b\x0b\x96\xfd\x98\xcc\xb7\x11^\xf3\xdf\xad\xcb\xd8\x1d=x\xc0\x17\xd0}t@\xff\x8d\xee\x8b\x9f#\xf1\xff\xa1\xe7\x97\x05[wt\xcf\x1b\xfc\x95\x05\xef\x7f\x0c6]\xfah\x10]}\x99\xc9\xf7p\xe4\xb9U?\x8ePtV\xbd,C^\x0e\xa3\x83\xbb\x95\xf7[j\xea~5Y0\x0d\xfa\xd1\xa8\x1a\xbb\"\xa2\xf2\xd5\xe6g\xf8\xfa^\xd5{d!\xbcG\x0e*\xef\xf1\xdcr\xb0d9_\x91\xf2\xa7y\xc1\xbb\xc2\xec\xe4&gq\x16^F\x95\xcb\x1e\x9c\xedd\x83\xed\"\xcb\x93\xb4\xf2\xe9\x8a,\xca\xa5w\xed\x01d\xab^\x076\xaa)Y\xb8\x88\x8ag\x904\x86%qbx\xaed\xd3V\xd7\xe3\xf2\x98\x97FYg\xc9:\x05\xd6\xc0{\x13(A\xdb\x89\xbf\xa4q\x1bcj\x06\xf9\x88 \x0b?\xe0\x1c\x8e`\xe5.\xc4\xec\x1d\x01\xcf\x8e\xe7a\x0c&\x94}1\xfa\xb6HU\x14\x16\xb37v`8\xf4\xab\x8b Yy\xca\xedAK\xb2\xc1\x9c-\x0c\x83\xf4\xd1?d\xc7m\xb8\xadj\xa8\xee\xa3\x83\xa1\xe7\xaaV\xf1\n\xde\x12o\xbb\xef\x0d1\x96Q\xb1\x963\xb7\xcd\x18\xf1\x00\xf6&\x80\x96\xa5[\x0fs\x7f\xc9\xbb,\x8b\x94\xb1_P\x18\xa4\x17\x9e{\xe5\xf9\xf0\x80\xd6Yc\xff\x1fI~\xdf\xba.\xa6l\xe3\x9f\x8f\x0b\xad\xd0]\x977I\xbb!\xb3\xf4|\x08\x06/NN\x9e\xe3\x01\xba\x0f\x89;u(\x8e\xae\xe3\x83\xb3\n2\xfe\xdf\x92\xe5\xfc\xbf\x8c\xe5\xce\xb9\xdf\x00w\x12\x96n\xb5.j\xeb\x8c>\xf2\xb5x\xc1!\xc6L\xd2\x1a\xcf\x0d^\x1c\xa0`:'\x03\xc4\x1c\x9d\x10\xcc`@\xb0\xb7(\xd2\x7f\\,\xc4\xe1TSP\xe3P\x065\xbeXL\xd99\x8d\xc2\\Zj\x86|U@\xe8\x9b\xbc&\x8c\x0d\x97\x18\xec\x0e\x91\"\xa8-\x02i^\x8b\xe5\xffQ\xdfc\xfa\xbbs\xa2\xf0G\xa3\x87\x96\xc8I\x8dh$\x07\xc6\xae]\xd4\xbe\xf5\x10\xaf\x9d\xf8b1\x82\x1a\x7f\x10\x1c\xab\xc6\x96\x04\xbbz\xe4\xb9N\xb6a\xb3\x90\x95\xd2\x84t\x93\xd8\x10\xf8\x8cb\nj\xe5\x1c?LW(\x84\xf1I3\xa2\xa0}\x8a\x9c\x85PJBHK\\\xcd\xce\xe5\xa9\x1c\x08\x82\xa6\xfb\x90\n\x90T\xe6\x10\xf2\x18\x9a\x86\xe7\x9e\xf2\x1f\x12\x85\x8b\x1c\xf1\x92\x96R7\xe3\xd6T\xf6\xdd\x85\x03Z\xe7\xe1}\xe3\xfas\xf6o\xe6\xba\xc2\xcd\xb3Z-0\xef\xa6\x10\x1a\x86UaBH:w\xab\xef#%\xaf\x18\xa5\x86\xaat\xd0$5DnU\x92\x9b\xe3\xdb\xea\xc8WxxT\x86\x93\xaeR\x00\x1b\\`\xea\x07\x17\xff \xd2\xb1\xae\x1e\x10\x94~\xae\xdbN\xcb\x90\xb2\x04hrojg\xd9\x86\xa3P\x8cr\xe3\xb2A\xd0D\x94+\xe5\x19\x17F\x10\xf0j\xa5\xaa\xd9\x90\x0b\x98Zk\xd6\xc3\xaa<\xd2A\x16\x91|a)\xe8\x9c5 \x94:\x83\xcb\xa7\xa3\xc6\x15Z\x05\xad\x01\xd2\xa4\xc8\xb2W\xf4\xda\xd4b7\xf9B\x1e;4\xcd$F\xe7yT\xf5r\x99\x021\x10\xf1\xa5Y=\xbete\x1c\xc4|\xdb&'WT\x043\xd6\x01\xa0M.\xca%\x00\x18\x9cv\x0d\xb3\x11\xb5\xfe;\x07\x99\x88%\x90\x07\xa2\xb9\x8f\x97\x08\xf6\xf6\xfe\xbb\x9aTF\xfd\xe57(fe!e\\#u>\x84\xb6\xa9\xa3\xdbc)J\xa35\xc4\xeb\x96\x7f\x8d\xb0E\xe7\"$g\xd7\x8b\x9c\xdcE\xd8\xe0\x82S\xbcU\xaf\xe7\x83@r\xa2\xcc~a$\x04\xbc|\x97\xb9)\x8e\x88M\xc3ss*|\xfb\xd2\xa5n\xa4\x8b\\\xe6av\xdbv\xf9\xa0Gg\x80\x92\xbd\x04\xf3\x91]x\x97@\x9b\xec \xe2s \xbeR\xd2s\xeey\"\x11\x03I\xf71_\x93\x99\x1b\xab\x9c8\xc8\xe4D\xfe\x85X\x89\xfd\xc6\xbe,\xee3\x1d0Z>\xff\x88\xd9\x8bD\x0f\xa6\xa9\x9bgi\x80\x10\x1f\xa2f\xcc_\xd4\x91\xc0\x86\x01)YK\xd1\xb7x\xcft/\xb8<\xa1\x14'\xc4H\xbb\xc8\xc5\xa5\x9bt\xcaP9\x9b d7\x0dM\xa8\xd8c\xb8*P\xfb\x0f\xf0\x05$\x94\xaa( \x04D\x8b9\xa3f\xb6\x08\xcc\xf6\x06\x12L\xeeU[\xc9,RQd\x91Wf\x16\xf9fa\x16\x876$uW\xc3\x9b\xce\xf1\xf5\xdd\xa17X\xd4e\x13\x8b\xf9\xe6\x8a\xea\xdcm\x15\x82%\xa5$\xed\xf3\xd6$\x13_\xe2y\x003\xd8\xe6/`\x02\x97\xf5\xd7\xd7\x9c\xbf\xe1!!\xa30;f?\xd4\x13\x98\xc0\x05G\x86\x8b&m\xef\xc6p\x1e%@\xf3\xcaz\xba\x89\xcd\xba\x18\xad\xe7D\xe5\x16\xe1Rx`W\xa5\xf9\x83*\xf4\x85'\x93*\xb8\x1ez\"\xb9U\x95\xca\x83#p/0\x91\x8b\xaen\x1aqm\xc6\xbf\\\xa0j\xea\\\xcc0\xeb\xe2\xe0b&\xa4\xc1K\x9dO a\xc0\xebsK\x1f\xf2\xe9\xf5y\xcd\xca\xc0)\xc0\xca\xe5\xcb\xe9\xa3\xc3\x94O\x04\xd3\x173\xf4\x97,\xf7WA\xe6g,\xf7\xdf\xb3\xdb\xcc\xa7<\x1f\xbe\x98\x8eO\xb7\x0f\x1c\x99\x9e\xce\xe7\xa3\xe9&&\xe0\x16\x82\xbcnZ\xa8\xacu\xb2\xc1 \x8c\xe1\x84\x9c\xcdq\x03\x1c\x1c**L\xa4Em]}\xc3K:{S\xa8uN\xb4e\x16 \xbe\x9e\x9cn\xa1LA\xfa\xd5\xc2\x8d\x0br\x8e\x06\x07\x1a\xae:\xaf\xb3\xab\xec*\x0f\xd1\xc5\x8c\xab\xec\x05\x05\x1frr\xed[\xd5})\x0f\x15z{R+W\x15\x89=\x9f\x82H\xcd\xcb\x8b\xe0d\xe1/\xcc1\xf1\xf6\xb2t\xdc&\x9a\xd1,\x06\xbc\xb5\xfaPjP<&(^W\xcd=dIY\xfap\xed\xf9\x90\x95G\x1a\xe3\xadOe\xf0\xf1|\xd8\xb8b;n(G\xd3\x85\x0f\x89\x9b\x0c\xfe\x03z\x90\x0c\xfe\x8a\xff~\xe7\xc3\x8d\x9c\xf9\x9a\xb3\x90\xb3\xc9J\x98\xa4\xcd\xb0\x16\xa1\x1eTy\xaf\xec#\xe72=O\xb5\xe7\xc3\xfe\xf4\xa7\xa0\xff\xcb\xb0\xff\xe8]\xff\xab\x7f\xfb\xe3\x9d\xaf\xbf\xe9\x0d\xde\xfdt\xf1\x7f>\xfc\xf7\xf9~8\xc8Y\x86\xb9\xd7\xcc\x81Wd\x82\x97\xd9*H\x83Y\xceR\xceW)\xcd\x00,B\x16\xcd!\x0e\xd6\xc6\x9c/\xca\xfa\x94'?$\xd72\xaftyq-sn\xb6\x84t\x9e6\xeb\xd4\x99\xc1\xf1\x11t'$#p\xc5\x98u\xa4\x95\xac\x82\xd6\x10\x93Iv[\x957{[\xfc\x99'1+9\x88\xb5$<\x11\xb7\xa2\xccI\xac\xc0\xa8\xe2\x99\xdf\x1a\xbcF\xc4\x80+i\xc3rS\xb2\xb0\xd6\xb5\x92\xb2C\xbd\xdf\xce\xd9~\x0d\xde}\xa0\xa5\x02\x14\x97sJ\x19\xf2\x13\x0c\xfd\xb1S\xbe\x0c2\x1eQ\xd6bs\x82\x0c\x91\xf9\xbf\x1e\xcd\x14\xbd\xeaL\xddu\xe9\x8bM\x87\xe7>0c\xe86\xadG\xdc\x03q\xee\xb6d\xb9\xe6\x1e\xf7\"X3\xae\xfd\xef\x90!\xaf:\xd7\xa9)\xab\xdcGS\xe6B\xdb\x1e\x19|\x13A]k\x90\xd9\xf8\x95\x04-\xb2 \x0dR\xc6\xe7S\xcd\xdb\xf2,JY0\xbf\x05\xfe\xafc\xba\xcc\\\xc9\xef\xdfi\x80\x06\x7fF(K0\xb5\xd4LM\x81\xec\xd8\x8eY\x93r\x97\xcf6\xdbF\xb6D)x\xff}\xb7\x8c;\xb1\xcb(aZw\x1bO\xa7\xa52\xf8n\x82F\xf1\xf8Z\x15\xb9\x97\xcdT*FW\xa9\xdc\xce?\xf2\x01\xdf\xddg\x99\x96\xac\x96\xdc}:\x8d\xd0\xe0\xc7 \n\xda0\x86\x8cvCP\x04\x9f1\x8cE\x9fQ\x91\x8f\x98\x03\xecm\xce~\xa0\x0b\xbb\x0d3\xc8\x18\x81\xae^\xd5C\x15\xfc\x12'\xd4i*QS| \xc4S\x1d\xd6G\xd54\xdf\xad\xa7E \x0f/JY\x05\xe9\"UC\x12\xa0\xd0\x9c\xdd\x81yZ\x0eE\x91\xd9\xdc\xa0\xa6\xcbG\xf9\x05\x16\x89\x8e\xbe\x8d\x92K\xcd%\xbf\x9a\xecXo\x9f\x17\xed\xdc\xbeL~\xcd\xfb\x90\xe1g:\xf6#\x8bw\xeeK\xcf\x7f\xce\xfb\xab$@\xef\xd8\xad\\>u\xc1\xa2I\x86\xd0z\xd7\xd2mC)\x87\xd4\xba\xd2\x81\x86[\xe8\xf7\xc9\x04\\\xca\xec\xc0:4\xc4\"\xb7\xb9;5\xd6\xb79\xbdB{\x00\x03\x90&\xf1\xf2\xc8?|\x80==S\xb5}\xcd\xd0\x00\xb3\xac\xc8\xb2\x82U\xe8\xd7-\xbe\x95\xb3\xe15\xdbr\xab5\xac\x92\x1d)\x84+hm\x0b\xab1\xa7\xe5\x83\x05K\xf9\xdffI\x9c\xb38\xef\xd3\x10\xf1\xf8\xd6\x12\x04\xadT7\xab\xd5\xf5\xc1\xc9\xd9M\xbe\x8f\x01\xa9\x1es1>c\xf9\xe4\xed\x9b\xef\xfa\x0f1\x04W\x05\x8b\xe4\xe1\x98z3\x10W-Z\xbb1T\xe3\xed\x7f\x0e\x12\xa8\xd14N/\xd8l\xa2\x90\x92<\xee\xdf\xf4\xaf\xaf\xaf\xfb\x1c\xc5\xfb\xdb4\xa2\xe8\xfc\xf3\xea\xac\x8d\x12\x8c\x96a\x8d\x88)\xd1\x94V\xfe*\x8d&!i\xcc\xe6\xfd\x0d)d\xb4\xe44\xf6B\xe5E4\x88AY\x12]\xb1j\xb1.\xedi\xd0km\xb6\x15\xb7;\xf5$\xa9\xa4\x01\x0bg\xc9\x96k\x8cI\x8e\"\x9b\"\xbf\x98t\x17\x82\x0c(\x93]\xa3e\xa2\xcb\x989\xb6\x9d\x9b\xb7\x99\x04\xda\x12&\xb7nq\xc9\xaaY\xa5\x04Gr\xe79\x8e\xda\xf7\xa9\xb4\xfc\x02\xeb\xf8l]o\x90\xafXl\x8aM\xfdQ\x92\xdf\x9c\x88G\xeb8\x7f\x13Pl\x17\"`G\x11P>vQP>\x15\x91\x90o\xb3A\x16\x94\xcf\xc7_\x0bM\xba-A\xc9\xf3\xbe&\xfd\x91\xbfzaS\xcde\xdc\x17\xf2\xba\x1f\n\xaf{u\xb5E:\xdf\x9f+\x1b\xc7`\x91&\xeb\xe3U\x90\x1e's\xe6\xe6\xd3F\xd6+\xb5\x17J\x99`\xcbk\xfa\xd1\xb2\x10\x9dV\xee3\xd0\x9e\x03\xf8\x8eh_Fv\x0bE\xd7E=\xaa\xb1($\xb8Vt\xd2\xd1>\xc7\xf37B\xd5E\x03\xaa\xfe\x9c%\xf1\xe7\xb4\xfd\xa7\xb3\x97/(\x06\xaf\x95z\x95\xde\xdb\x94\x85Y\xab\xe7\x0f\xf9\xf5\xd1\xfd,\x0fU\x87\xfa\xfa#\xad\xd0\xad%\xc6\x08\x94`P\xdf\x8d\xb6\xc4\xb2\xba\xde Q\xda\\F\xf9T\xf1\xcd\xac\x94)\x95\xe9\xbf\xb9\x1a%\xe4\x83\xc2Gv\xa5r4\xc7\x98\x8f\\e\xd7\xf5\xe4NQ\xd6VlL&p\xa5\xf7\xc9\x9c\xd1\xdbd\xce\xfcR\x82\x18`\x9a$\xcc\xbb\xc2l\\z\x06\xf6\x8a\xbd\xc1\xb0\x87\x9a`H\xb3T\x06K\xf3\xf2\x1bf\x9f\x97~\x7f\xf8P_\xa1\x0f\x1f\xc0I\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedf#\xed\xbe\x8d\xc8}\xabe\x1a\x87\xa7\xd0\xa7{H\xa6\x8c\xdd\x1f\xdd\\\x0eFN\xbc\xf8\xe9\xfc\xc7\xc9\x1b\xc7+\xefcN\x7f\xa8\xc2\xe2\x07\xe5\x9d\xc1W)[\xb04EI\x80\xde\xba\xd8\x0e\x99V+\x1d|\x7f\xf2\xecy\xed\x0b\xf9\xcbZ`\x1eUoN\xf90&4\x9b#[\xf8\x8f\x937\x90\xa4\xc0[\x939\x873\x13B\x10\x91\x93\x1a|5\x8e\x8f\x0d\xf7\x17\x1d\xac2\x82\x0c6Y\xed\xd3p\xedz\xf2\x8c\xfe\x8ec\xb0\x1a6\x9a\x11Z\xc5\x03B\x1e\xd1~cxb\xfe\xe0\xf6H\x0b\xba\x96M\xa5\x87YT\xa0\xad:\x1e\xdc \xe67q\x8c\x0d\xd8\x99g.-\xa0\x14d\xf8\xed\xeb\xd3\"&\x19\xd7\x91\x0d\xaf\x93\xeeq\xe1:[\xb77\xed\xfb\x9a4l(\xad\xf4\xfe\xbb\xf4\xe8]\xbc\xbf\xcbn\xd66k\xdc\xb4\xda\xe5\x8d\"(\xb2\x8b\x0f\xdd2\xda\x8b\x8d\x1b;\xcd\x0d\x82\xbeWi\xed\x0e\x82|>g\x0f\xe6V\xbe\x9a+_\xfa\xbf\x17\x82\xbbH\xd0-\xae\xeeI%\x99R\xd5SXs\xfe\x17\xe6\nC\xf7\x0d\xf9i\x0c\x07\xc3\xa1\x8c\xfe\xfa^\xfa\x85\x88\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\x8a\\\xf8E'\xfcW\xad#,2\x06\xe7\xe5\x9f\xe5\xd8\xec\xbc\xc0\xd7\xb9V\x8e\xffc\x8a\xfc\xaa\xa1\xb1j\x17)/7\x1axDZo\x1b4\xaf\xac\xc7n\xba)a\x0cN\xc5\x92\x80\xd3\xb3\xe4Q\x92\x07Tcp\xceD\xcc\x88P\x06\xa6\x90\xc7T\xf8\x8a\xbe\x9a\x1b\xe1\n\xdb\x18\x9cB\xa1\xd1\x1a\xe1\x1aF\xf1\xb3U\x00\xe4O\x9e\xde\xb6\x98\xc3\xb4C\x07\xde\xbe_=\xc3\xd0\x9f\x8f0\xc3\xe0\xd4\xcd\x94\x174\x97\xca\x91\xbd-3\xe2T\xa3\x1f\xcbGJ\xd5|m\xc4\x9fM{\xa1\xa9\xdfcp4E\x83*\xd5\xd1\xd3,\x1a\x95\xcc\x84\x1eB\xce\x15L`\xaa\xe2\xd5\x9cJ}\xeb\xdc\xf1\x8b(6\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83%,A\xfbuP\xf9H^\xc0!\x94o\xd2_Bv\xdd`~3\x03\x81y\x10*[\xaf\xb0\xd2\x86\x19o\x9cS\x88\xdd\x87v\xa5\xc4\xc1\xd6\x10C$.\x9a\x07Z\x87\x9aDk\x89\xd8D\xc5 \xd5\xca\x8eP\x94D\xb5\x9d<\x83\x9a\xae\xde)?\xbeu\xb0\xb1:Di\x05`\x82\xa7\xd0\x18\xfd\xd4\xc7\xe8\xa706$\xff\xc1 ^\xc5\xf8\x85\x93z\x97\xad\x17EU\x97|\"u\x9f\xf6J\xfbK\x96wj\\m\x9c\\ b#\xe4f~T\x9a'\xa5{l\xebx\x154\xfbFU:\x96\x1d\xd4\xc2Bs\xe8h\xeb+\xabL\xb2\x01\x02\xca\xab'\x80\xa0\xad}\xe9\xf3\xdb\xe1\x1a\x14\xd4\x02\xdc\xc8\x1e=\xeb\x1c)\xdc\x8d\x88L\x95\xfb\xc5\x18\xe3st\xfc\xcak\xa7\xf2\x861b\xd0\xb2\x0e&\x0bi]\xb4\xe5\xfb\xd3\xf7\xa3\xee`\xd0\x92\xea\x8d\xc9\xc8lfT\xc6\x8b\x89f\x93\x88>\x15\xf23\xfe\xf5'\xd3a&\xb6\xd3\xfb\x8e3\x11\xae\xd2\xbf\xfeT\xba\xed\xcb4\xae\xdf\xf7\x92O\xd3\x94*\x8eA\xda\x0cM.B\x86\x05\xb0\x9c\xc5\xdf\"\x9f\x7f~\xf2\xc3\xc9\x9b\x13\xce/\xb9\xc2\xee\x0b\xf5\xdc\x07\xe7\xe5\xab7\xa7/_\x9c\xf1?_\xbd<\xc3O\xaf\xde\xbeq\x0c\x0b4\xd3\xba\x9c\x89\xf4\x17\xad+\xaeIe\xd2\x13\xdc\xbe\x82\x97\xc9\xfcV?e;\x8dC\xb3+\x96!\x16\xf5G\x1f\"Bnm\x9c\x9ez9/\xbd\x9c\x7f\xe6T\xe6\x95\x93\xff\xa6I\x91\xf60\xd6\xb5\x0d\xbbFX\xa8\x1a\xe3\xaazb\xaf$\xb4\x8e\xb1TC4\xdd\xa4A\xf9\xdc\xa6\xd1X\xa9);\xac\xf2|\xd0\xd9\x9fF\xa2\x1b-\x19Y\x8c\xda\x17\xca\x90D\xb7\\\x84\x96\xc7q,\x83nDm\xa6\x14M\x9c\x85S\xf5|\x04\xb34$/\xd5L\x0f\x87#\x1f\x0e\x87\x07\xfc\x9fC\xfe\xcf\x03\xfe\xcfC\x03\xba\xcc\x07)\x9b\x87)\x05\xd8\xed\xc4\xd2\xb8\xa0.RK]jV>\xddZ\xf6:\x88\x97UwS\xa1\xd4\xce\x92\xb9\xf5\x80\xbe\x04\xba]\xf7\xa1\x0b\xc45+OQBG\xcd&\xeb\xa4|,\xea\x93\x11\xf4\xd8\xe0{\xa5r'\xfc\xe7k2\x08\x02\x86^\xe5?\xb3M\x12g|{\xe7\xfc7j\xce]W_[\xa3\x9a\xd3Z\xd3%\x17\xd0\xad/H\xe6\xb0\x97f\x1b[(\n\xff\xe7\x8f?|\x9f\xe7\x1b1\x0f\xbb\xa9&\xdc\xd13\x0e4\xeck.\x05\xda\x8e\x87\xad\xf4\xa9\\\x83\x101\xecD\xa4\xe4\xa3@g\xe3bN\xa7gQ$\xb7Ml\xae\xeb\x91\xb1\xc4\xee2\x02f$\xd5\x1f&\x8c/N*\x1a\x7f\xfb\xfa\x07G&\xa2\x0f\x07\xda[\x18\x03+\xfb\x93\xfcg_\xecG\x9fWj\xf1y\x91&E\xd5\x91\xa1\x17L\x0f(\x7f\xf0ejn2v\x05\x8f\xf1\xc1$\x97\xcb\xe7\xa3\x8f`\xd1\x99\x1a\xcb'\xad\xba\x86\xbe`\xf9u\x92\xbe\x97\xe6uX\x04a\xc4\xe6&\xdf\x0f\xf9\x88\xaes\x8a\xfe\xfd\x0f\xe9|\xc3b7Q\xc7Q \x9d\x7f\xe1\xe5&'\x8cg\xd1v.\xe2\xd4%\xa5\xd3\x1e.Y\x85\x18\xa5\xec\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|0j\xe4 c\xf1\\\x0f\xa6\x9ah\x87n*}\xa0\xf6\xd2&\x95\x9a\x89-\x92\xcf\xc1&\x89n\x17a\x14\x99\xbc\x82\xd5_\xae\x9e\xc1\x163[\x90lQ\x8d\x85\xf6\x07\xd1xiqv\xbai\x94\x9bn\x19\xdd\xbb\xeb\x0d\xc8\x98b\nd\x1b\x1a\xb7\xc0lQ\x14\\\xc0pLQ5\xd5J\x13\xa2Q'\x10\xcd\xa4*\x8d\x9b\xf4\xc6\xe5\x03\xd1|\x13m\xeb\xa9\xfe\xaa\xb6\xd0\xc6\xcd\n\xb5\x18\xef2\x89\xec\xdd\xf2`W\xf9Ml\xe9\x9eQF\xffE*KN\x910\xdc\x9a&\xe7J\xc4\x1b\xcd\xe0I\x11N\xfa\x88k\xd6\xc2\xbf\xe2Y\xee\xa2s\xfd\x8b\xe0E\x9d\xcee\xd7!\xae\x9a5\xdb\xfd,\xc8\x18\x0c\xc7V\xc0\x97\x0dX\x8f\xd7\xe5\x83\x0d\x1d>\xb0\xb7$\x1f-\xd9\x80\xb8z\xd5\x10Y@>\x98\x86\xad\xb9\x18\x0e\xe0\xeea\xfb\x00\xf0J\xac\xcb\xd7\xf4\xf0\xa0\x85\xdb\xc8\xc0\x86\xadm\x06\xd3\xa8\xd73'\xea\x94\x8fY\xf2\x82\xe6\xc9\xe1\xa4F\xf6\xfe\xb9\x0c\x1b\x92<6\x83\xa7\x13\xb8\xfb\x90On\xc6!\xeb\xde\x03\x0f\xd7z\x06}\xb8\xfb\xd0>O\xe5\x95\x8b\x0d\xdc\xbf\xa7\x1ax0,\x1a\xb8\x7f\x0fz0\xb2\xdc\x10\x86\x1d\x1ch\xa9\x97G\x0fT/\xa3\xe1Ac\xf0<\xf9\xa8\x15>|\xe0k\xcb-p\xab#\x045\x96\xb2o\x10\x08\xb0\xe5+\xf1\xe8\x01\xae\xc4'l3\x1f\xe8\x81}\xa0mPp\xd0\x0c\x05\x82\xc4\x98\xa0 \xfd\\(H\x7f\xe7P\x10\xea\x10\xf1\xeb\x83B\xfa\xd9\xa0\xa0F;\xba\x0f\xdf@\x0c=\x93Q\xfd\x0f\xf6_\x82\xdf\x05ER\xe2\x08\xfaz\xea\x94\x8f\xbe\xc6\xca\xf8\n\x15\xab\xa2XVP\xf2\xf2;\xb8w_2\xaa\xc7\xb0\x85'pp\xef\xfec\xe8\xf5\xb6\x1e\x04\xd3-\x86#\xfe\xa3\x03=p]\xfeqt\x1f\x8e\xc0\x19:\"]r\x0f\xb6\x05\x97\x1d\xdd\xf7<\x9b\x87\x8d\xcc\x9e\xd6hFo\xb8E\xd9\x9b\xf0\xfe\xca[\\\xf2ft\x9cR\xceP\xe1\xac\xc8\xb4T\xc5F\xcdRj\x94%\xb6j:I!\xf0=<$\xf9\x8fkNw\xefi\x7f\xdf/\xfe~\xa4\xbd\x1f\x1dh\x1f\x12\x0e\xfb\x87\x8f\xf8\x8c\x12\x0e\xfbw\x0f\xd4[B\xdc\x84\x10W\xbd%l\xc4\xb7\x8f\x86\xea-a\x0f\xbe\x1d\x1d\x1cX\x04xtd\x80>\xc4*\x1dh\xce\xd7P^(BE\x9b\x8b\xd3|K\x0f\x1e\x12\xbdO9T\xfb\x80\x05\x83ib\xb1\xdd*\x82\xc1\xeb\x1e\x0c\xef\x1a+\x8f\x1e\x1d\x00\x0e\xf7)\xdc?\x87\x1e\x7fs\xf0\x10>\xc0\xfdC\xb8\x03\x9dZ\xbew\xef\xe0\xd1}5\xe7{\x0f\x0e\xef\xde5utppWv4:\xd0{\xa2\xbe\xe1\x0e\xdc?\xdcm\x00\xcd\xd6\x87\xb0\xc1v\x80\x10\xd2\xeb\xe9pW2*\xbd}}*\x94\xb1\xb7\xafOa\x1dD\x8b$]3\xab\xdb!\x08\xfb\xc5hx\xc0\x07]\x81P\xdf\xb4\x18w\x87\xf0\x81\x12\xc5\xdd\xbfw\xef\xf0>b\xad\xa8\x9ex\xf0\xe4 \x8cx\x81\xd0\xf3p\xbd\x1e\xd6\xd6ktP[\xb0\xe6u4\x0e\xbc\x03\x01+\x02\x890\x8c\xfbT\x12qs\xe8\x15\x80\xea\x95c7\x96\x15\x95\x96\x88\x05\xd4\x97\xe5\x8e\n\xef\xd8\x94\xb9\x85#K\x98}\x17\xc6!E\xe4:\x02\x87\x93?,~\x99$\x11\x0b\xe2zSG\xe0\xe4\xe9\x96!Y\\\x04QF\x7f9\xfa\xb8\x0b:,\xf5\xa5hw}\xc9\xae\x1e5\xc51,8\x02F\x1e\x18vQ\x87h\xd1\xc2\xc5-&\x0c\xa4[+U\xa5\xc8\x9c\x0fX9\xf1:w\x04MF\x87UgR\xb9ht\xa5\x12\xfa\xd2\xd8\xca_\x89\x0e\xd8\xa2\x18%bD\xba\xe6H\x96\x03<\xb3\xa9\x7f\xe4\xf8B\x99b'\xf6d>\xa6%,qM=\xe3\x83\xcc1\x1c\xa8\x88$\\\xbd\xdbrvL\xd9\xf29GZ\x10+Z\xc0\x13\xd8r\x1e\xb4h2\xe1S\xaa\xe1EC\xa6\x879\xa5$n\xc9\x16\x11\xba\x19\xe6\xb7\xedU\xd3A\xca\x87\xafm\xf9\x12\xf8\xbcQ\x08Skp\x05\x13\x98\xab\xf9\xaea\x02W4\xdf%\xcds O\xe0\x8a\xcfs\xe9\xc1\x8c\xd3\xa4\x15\xf4p8\xf3\xe9\xf2\x9c\xf3\x1b^`-\xd4\xb0\xde\x04\x9a.V`\x08+\xbep\x91^\xdeLp\x88r\x97{\xe4\xdd\xb5W\xaf\x8bj\x02gf\xedDL\xc7o.v\xa1\x8f<\x024\x995\xbe<\xba\x04\x86\x88_\xa1-\xea\xc6\x87\x0f2[\x8fdFJ|,\xb7`\xa8\x9d\x17\"CM\xec\xba\x12)\xf1c \x08\xb5%$\x8fp\xdbW\x8e\x1b#vXn\x94P\xbdN\x8e\x93\xc1:\xb8\xf93\xbb\xcd\x94\xee\xae\xde\x18\x86\xc5\xd1m\x04\xfbU\xb5p\xa6\x84 ^`f\xa8\xb8\xc1m\x93T\xd2443\x15\xaa\xdb\xaf\xb0\x9b\x0d\x8e\xb3\xfe\xd1&\xc0r\xbc\xde m\n}D\xe1\xe9\xb9\x8f\xc86$,\x1b\n\x0c\xf3\xf1\x94\x99\x13\x96K\xf1\xff\x05\x9d\xc1\\\xd3\x7f'T\xe8\x86\xb0\xf1\xa6\"\x00\xdf\xd8\x04\xe0\xb3\xaa\x00|c\x11\x80\xcfp\x8c\xb9^tm\xa5\x1c\xbc\x82\x18<:]\xb9\x87\x0f\x10\x1c\xcf\xe0\x08\x07:\x821\x9c\xa8\x9d9+\xc4\xe0\xb3B\x0c>+\xc4\xe03RJ\xd5[\x12\x83\xcf\xa4\x12 G\xc0es\xe8\xf5(\xc2\xda5Y\x9b\xb1\x8f \x86\x91\xe6\xb4\xc7j\x0e\x035CJ\xba\xa2\xcdp\xd9\xaa\xa0\xf2\x8a\xbd\xde\x12\xabn=\xb8\x82'\xe0\xbe\x87 \xdc@\x1f\x96\\B\xa38\xd5\xb7\xba\x04~\xe5\xc3{N\xa2\xc4\x96]a\xf1^\x9bIl\x96\xc4y\x18ow=\xe6\x03\xe1\x0d7\xe4\x00\xf3\x9bo\xc5Ee+\xcc4\xdc\xf8\xf6\xee\xa1\x18'o\x077\x10\x8e\xc0\xe5\xebz\xa5\x86[]\xd6\x1b\x0f\xe3\xa9q\xd2\xf5\xc7\x83\xa1\xc0\x11\xea\xbfR\xf3\xd2T\xf3R\xaby-\x8f,\xd4\xf6\x188H\xa1\xb7\xf4zk\x1cn\xd6\xc4\xe5\x8f}\x90\xb0\xb1\xb6o8oN\xce\x97\xc3\xd3{\x1b\x04\xc1X\xfb^\x9d\x10B\x98\x8c\xf88\x81\xc8\xbd\xf5a\xc3\xdf]\x8b\xe2\xfc\xdd\xa5x'\x8e\xc4W\xeaH\xfc\xd6\xf3 \x98\xde\x9ec(KXMW\x82\x96\xf0\x17\x86\x9bY 4(\xf7\x18\xe5\x98\xdbsO\xbf\xa6\x85r\x06\x1c\xc1\xf1\xf4Xk\xe6\x12\xc6\xb2\x8b\xe9\xb1\x0f\x97\x16\xc5\x8c\xaf\x06\x06\xf5\xea\xf7\x17^\x93\xc1\x8cou\x99\x16\xdeb/D,\xd5.\x12UE\x8c\xa8\xef\xe7\x1f\xec\xbf\x16\nt\xaet\x95\xe5\xc3\x07X\xf2/^\xfd\x93\x0e\xb7\xe5\xdd\xe3;\xb7\x86'\x90\x19v\xce\xfb\xcc}\xe3Hb\xdd9D\x84\xcf\xd9\xa3\ns\x90B\xc5\x1f\xcak\xd69\x93\xc1#K*\x83\xc3\x87#\xaf\xfdtO\xba\x13\xc8\xebpp\x04\x7f\xffH \x0dAB\x8b\x91\xeb\xc7e\x9d2]\xea\x03\xaeF\xd5\x13\x03\x1e\xb6GI\xb4'\x85HE\xa7\xad~p\xa2|\xe2\xb2Z\xfa\xb3\xd6\xc8p\xd69\x8d\x0e-s\xba[M[D\x81\x05\x1f<\xea2U\xc3\x0cJ\xfaT\x7fD:\x94\x12\x16Qt\xfc\xfbG.\xad\x04\xa83\xd9D\x16\xbc\xf01\x0d,\x9a\x10\xe6\xe9\xe3#\x88\x0c\x82L\xec\xce\xf8\x07\xa0\x98\x81>\x84nDA:g6\xbd\x18\x8aU\xcfv[`\xf3\x19\xeb\xfe7{E\xdb\xdf\xc0,I\xde\x87L\x7fs\x9cln\xd3p\xb9\xca\xdd\x99\x07\x07\xc3\xd1A\xff`8\xba\x0b\xaf\x93u\x10\xc3\xd9*\xbf\x8d\xd6A\xdcT\xe1\x1e\x1d\x9e#\x0f\x99\xa3*O\xfcf\xc4\x99H)w\n\xc4\xd3\x0d\x95\xc3?&\xb0u\xe7>d\xed\xa1)M8SI\xe4\x9d\xb14\x0c\xa2\xf0\x17\x93~\\],E\xa0\xc4v\xd7WZ7O}\xf8P\xbdm\x88pY\xa8n\x05d\x86\x16\xc8L0\xa9\x1e\x88\x06\xc3\x0cB\xf2\xfe\xab\xee2\xeep\xd0\x12\xa8R\x81y\x1c\xac\x9b\x1a\x93\x1auX\x8b4A\x07|\x18\x9e\x9b\xfa\xda\xb6\xf6u\x15D-]\xe1uu\xe8\x813q\xa0\x07\xdbz\x8f\xc2R\x06)W\xb5\x9f-\xadW<#(\xca@\xdft\x18\x8b\xc7\xd4\xd9\x8b\xe0\x85\x1b\x99\" \x89\xaa\xd9\n\x831 \x0dxA&\x00\x03\x14g(\x98?\x86\x1f\x83\x9b\xfe\xb3%\xc3\xc1\xff\x18\xe4\xab\xc1\"J\x92\xd4\x8d\x9a\xa87\x1e\x87\x0c\xe6\xc9:\x08\x8d=\xe8o\xb0\xd7\xe4\x15$'(\xfa\x98\x9cUe\x9b\xea\xd3\xe6\xdd\xe0D\xc1\x8d\xb3C\x87?\x047\x9f\xd3\x9b\x90\xc5v\xe8\xf0sf\xd8\xeaF\xd4\x04\xf4j\xbfu\xa8\xaf\xb5\xd4\x81\xffj2k1L\xc9Y\xebF\xca\xba\x1aP?N\xa9\xab\x04\xfb\x8f\xe1\x9b\xfd\xf2k.\x9a\xed\xff4}\xb7\x1d\x0e\x87\x8f\xf8\xbf\x07\xc3>\xff\xef\x01\xe3\xff>\xa4\x1f\x8b\xc5y\xef\xdf\xf6M\xc7c\xdb\xdf\xeax\xac\x1a\x93\xb9\xfc\xd7'I\xf8\x1dC\xaa\x8b\xfek\xcb\xeb2-\x1c\xc4t\xefk\xd7\xfb\xe6|\x7f\xd9\x16\x8b\\\x1eK\xa0\xbbF\xc9\x9e;\xf4J^\x1ae'\x8d\xf2\xec\xdb4H\xbd\xe3n\xb3,\xb9i\xc8\x1c\xf32+\xb2\x92\xc7c\xbb<\x9eV\xcd\xd3\xb1E\xe4N\xd1U\x00\x1d\x07\xee\xdc\x81\x14m\x97\xf7\x0fG\xe8q\x11C\x0fF\xfa\xc9|\x83X^s\x08\xc1\xca\x16\xc1\x9a\x0e*\x9fbW\x07h\x1c\x12n\x1c\\un0\x1c\xcb\xe3\xcf\xd1\xf0\xe0.|C\xde\x1a8v\x0fz\x90\xf0\x1f\xd8^\x8f\x8e\xf2\xed\xe4'\xa7\xebp\x07w\x87ey(\x84}\xb8\x7f\xb7\xf8\xc7\xf3at\xf0\xd0Z\xc6\x83?\xc2\xfd\xbb\xd62\xe5\xcf!\xfeB\x1f\x84^\xa3\x1bg\xa3\xbd\xban\xf25\x9c\xc6Qh\x89\xbb\x0f1B\x04\xcd\xf4\xe0ny\x84i\xf3$S\xc3\x04R\x9a\x00\xe7\x97\xbc\x03\xfeR\xb5?zt`l\xa0^WTH;\xd8\x0d\xda\xd2O\xea\x90\xb2gw\xf3\xe7@\xc3la\xf9\xedF\xb2J\x91\x86\x0b\x96(\\\xa6z\xfe/\xcb\x19\xb2\xc4\x93\x86[d\xa1\xddAs\x9e\xb4`F\x80V!v\xc3f\x8d\xa9\xc5\x94\xb62\x99L h4\x0d\x83\xd2\xcbCx\x02\\\xbao)\x9c\x90S\xcd\xf0\\\x19\xa7\xc2^\xcf\x0c\xc8p\xbd\n#\xa6\x14'>\x14s\xbb\xd2v\xc7\x81N\xf3x\xe9\x8f\xcc\x19r\xfe`\xdfIK\x8a\x00\xd0\x9d\x04\x85v\xbaS\xbb\xc2\xach\xa3\x8eZz\x8d;\"\xbd\xc1\xd4\x99\xfet\xee\x9c\x97\xcd\x07d;\xe0\xa2l\xcd\x9e\xa3\xda\x12\xa4\xbd\xed\x92\xf0\x0ea\x81\xb0\x1a!%\x1bd\xc96\x9d\xd9\"Fx\xbe,\x18\xca\x82\xe48\x98\x0efI<\x0bD\x10Gv\x0d\xaf\xd9\xf2\xe4f\xe3\xa6\"\xe0\xcf\x07\xc7\xab\x99]\xc1H\xba\xd8`\x11\xc6\xf3\xe3U\x90\x9e\xc6sv\xd3fB\x93\x0f\x87\xd1\\\x87\x0f\x85\x89\xfd\x86\xb3\xa22\xceZ.>\x95,i\x89\xeb\xf9\x02E\x0b\xd7\x98X\xa2\x1c\xda\x1c\xdcx\x10\x05YN\xc3\x7f\n\xb9\xf7\xd8\xe38\xd0\xb8]\x86\xfc\xcc\xbeX\x8aoos\xb6\xd3R\xc8\xd9\xf0\xd5\xc0\x1b\xb4\xb4 \xe4\x95\x858\x83\xf5q&\xe6x\x8b\xc4\xc5\x9fu\xbe\x1a*\x17\x87n\xa6\xebc\xa6j\xf6\x0d\xe0\xd2\x0c\x9e\x88\xc6\xc6\xbd\xb3EY.\xe4\x1b\xe5\x98\xc9\x85\x8d\xea\x89\x88\xfe$\xe8t\x84\xfb\xd4\x92~KQ\xc6\x84\xeb\x8c\x94)?\x99\x0e\x8dq6tyg\x97\xd5j\xbd)\xa3?r\\Hc\n\xdc\x92(\xe8#\xb50\xee%\x7f>\xb6\xedA\x8a\x06W\xd9\x8b\xf1^\x0c\xd8D\xbc\x96\xa5$\xa9\xf2\xc9\x84\xbcA\x92B\xb4+\xcd\x89\x8f\x15}?\x87\x9e\xafdN\xe95\xca<\xa7\xd0=\xa8\x07\xee\xa2Q\xe0\x10\xde$\x9c\xf4\xbdJ\xc2\xb8\xc5\xe6!\x9f.\xb6\x0f\\\xdb\x99lW\xae\xb1\xc6=DjIU\xc4\x13\xd6\x12\xa1~j\xef\x1b\xa7o\xe1\xfajBo\x84\x85\xe8\x8bM\xac?\xb9\xcf\xd7\xf2\xf9w\xdf\x9d\x1b_\xeek\xbb\xfeQ\x1c\x16t=\x13\xf8\xba\xdf\xef\xbf\x8b1\x00\x96\xb3\xca\xf3M6\xde\xdf\xdf\xb0\x1c\xf3\xdd\x0f\xb2\xeb`\xb9d\xe9 L\xf6\xaf\x0e\xf6\xe5\xaf\x9f\xb3$v\xde\xc5\xf3d}\x11\xce\xc7\xe0|%>\xf4\xb7\xa1\xf3\x8e\x0e\xc1\x82\xd2>\xab\xa60\xf2\xc15-\x07\xf4a\xe6\xc1>$\x1dg\xa5?ie{\xb4\xa3\xc0\x0cz\x10\xc17d\xee\x1d\xdc\x83#8\xc08\x0e\xdf`$&\xfe\xbf{\x17\xfa\xf4\xd2C\x95\xd2\xa6\xe0\xd8\x9e\x02Py\x17#\x0e\xac\x08\\\xdf3t\xef\xf5\xf0\x00\xf2 \x10`\x0f\x88L\xd37.\xb1\xa0\x0b\x90\xbe\xd2\x81\x0f\x8f\x1eiPo\xc7\xce\xea\xf3\xd1\x87G\x1d\x8b\x7ft\x9b\xcb\xd9/%5\x90\x84h\x07S\x85|2wK\xf1\x9e\x8dG4\xf2\xb1\x84\xb4\x93\x8c\xc8N\xa4X\xbe\xdd\x8c\xbb[\xbb\xa1h\xd4\x1571\x91*y\xeap\x8c\x8fU|B\x87\xe6\xdcS\xc6\x9d\xdck\x8a\x1d)\x1f\xe1`\xf4|\x9b\x8a\x00\x90q;\xb8\xb3\xf9\x92\xbd\\,2\x96\x9bBz\xeb\xcf'\xed[\x9e\x8c\xc1\x92\xab\x80>\xff\xd7\xb8\x89\xd6\x85q\x9e\xfc%d\xd7\xe5u6]\x9c\xad>\x92Wc\x9c\xf0o\x93m<\x0f\xe3\xe5q\x14\xb28\x7f\xcdf\xb9\xeb\x0dV\x88'\xed+\x14H\x8a\xae\xf8Z\x0f\xc2\xf6j3YM\xe2j{\x95\xc5N\xbcc\xc3Q\x02zm\xa1n0\x05\xf2\x13Xp\x88\n\x91^<\x85\x19\x1cQ\xbc\x01Z\xc91\x04\xe2\xc3\x06\x8e s\x03N/\xf9\x9b\xa2\x00\xb1\xd2\x06\xccn\x80\x81\x19\x8bs\x96\xd6\xb60\xed\xb0\x8b\x99\xdb$]\x94I\xe1>\x1c@\x8f\xa3\x0b\xc7\xaa\x96]\xe7\x85=OL\xefS\xe6\x94\xe5\xc9f\x0c\x81\xbd\xc0:\xb9\n\xe3e\xc7\x0c\xfcP\xd0\x86\xbd\xbd\xfa!\x90|\x1a\xc6\xc3\x81f,\x80\xa7\xb1\x14.\xdfX[Jca\x833N\xbdUN\xb3\xa4\x14?\x90\x7f\x9cDl]s \x04\xc1G[\x17C,\x82\xd0E\x88\x9f\xfd\x17\x1a\x91\xc5\x8f7\xc9\xa6\xcb\xd0\xd0j\xef\x9a\xfb\xa0x\xd7j\xe0\xd4n\x18/\xc5\xc8yo\xea#/k^N\xa4\\\xddd\xe5\xd2l\xde$\x1c\x92wL]\x81\x9bkIN\xa9P\xa0#\xac\x95\x978\x8cc\x96\n\x89\x01\x97y\x86\xc8Bov\x1c\xa3\x00\xadn\x8b\"\xf5T+\xa2\xe6\xc9\x86\x93 \x14\xde\xe2A\x82,\xca\xb4\xfb`\x06W\x83\xb75\x06%\x0drv\x86\x1bQ\x8b\xeah\xa3G\xd2N\xd5\x08N\x96D2e(i \xcb\xaf \x9c\x03\xef\x8ek\xff_\xbb\xed>k@'h\xec\xe8S`M\xc9\xe7\xac\x04^~' \xdc\x15S>\x0d\nw\x86/\x01/\x7f\xa8\xbct\x82\xf9\xfc\xe4\x8a\xc5\xf9\x0fa\x96\xb3Xd\x0c*L.{b\xcaq\xf2\xff\xb2\x98\xcc/\xf8\x9a\xb9%\x9ac\xbc'&E\x1ag\x15fy\x92\xdeV\xad9\x9bm\xb6:\xcb\x83\x9c\xcc<\xa2\x90y\x9d\xb8L\x13\x92 \x08\xe1\xe05\xe3\x85Qj\xd4+\xd7%\x0b\xcaT*>\x0fj\x95\xf9\xe8\x82m\x9e8\x9e\xda\xdc\xea\x82\xb8N\x94\x04s\xc7o\x87 \xeakWE\xb1ql\xeb \xde\x06\x91%\x86=Wq\x1a\x86\xbdI6\x19\xaen\x9b\xe7\xb5|\x18\x86\xe8&K\xdc/,\x16\xdc\x8cRH\x15\x9f\x12T\xf1\xc4\x8bAQ\xce\x06\xf7\xb0\x87\x97\xf3\xc40e\xb0\xf7\xc1*\xc8\x10\x92v].iUL\x06\xa8\xd0\xb8\xde\xa0\xd0\x08\x9aO\x0dZ\xedC\xd2h\xa7 {\xc9\xa4x\xf0\xed\xed\xe9\xdc\xadM!e\x0b\x99\xc1\xef+\xc7\x9b\x8e\x9a\xf2\x05\x83t\x8ek\x1b\x05\xd4\x0c\x05$L&\x850\x99s\x1e\xc3:\x88\xdc \xe4\x98D\x08\xe9\x9c5\xb5+\xf4Cx2\x81\x14\xc8 \x1d\xd0\xff\xdc \x124\xa8\xa8\xd0\xac}\xd9\xa1\xd9D\xb6\xf6L\xae\xebW2\x8aO\xe1\x86\xe5\xb8?}x\xf7.\xf34J\xe5\xbe{\x97}\xf87\xcf\xe4\xc2i\xc5\x9aY\x14\xce\xdewB\x99\xd2\xb1!\x1b\xe4A\xbad\xf9c:\x89q\x9e9\"\xd8L\x1e,_\x04k\xf6\xd8\x13G\x9f\x9b eq\xfe\"\x997$\n\xdfs\xf7\x90\xb1\x8c(\xe0\xd7\xe0z\x15\xceV\xa4&`\x1a\xc8?\xb3[\xfa\xb5fy\xa0~\xcc\xf24R?\x82\x88\x97j\x8c\xfd\x82\x16\xc86h\x94\x90\xa8\xa8\x94\xa2\x10\xf5\x08d\xe52G\x95\xdf\xe3\x9a\x91\xbc\xfa\xc4\x1a5\xd1\x80\xb6\xb9R{\xca?\xd0\x88\xac\xb8\x96\x82\\\xc7\x8d\xeb\xe7k\xd5\xa7\x94\x02pW\x90\x06\xdd\xc5\x0b\xb3\x18\xe4y\x1a^ns\xe6:\x9cv8\"\x85A3\xd9\x12\xc6\xfe\xe2\xce\xf6W\x0e\xf9\xb7n\xc9C:\x1f\xcc\xa2 \xcb8\x90\xb5\x86\xfa\x91\x06\xdf\x06\xb7w\xf9D\x0d\x840-\xdcZ\xdcQ\x9b\x89\x10\x8fW\xber\xc4\xd1j\x87\xbdB\x0c\x88\xe4\xd1J;\xb9\xca$\xac\x10q\x8c>\x95.\x01egJ\x19'\x08\xcf\xc94\xd5\x06}W\xe2\xcac'\xd6\xa5?\x15^\x02\x93\x16c\x164\xab\xd3\xf2Y\xec\xcc\x19\xa9\x16]\xff,3\x9c\x0c\xfa\xb0@/\xeb;\"x\xd9N\xb3\x94(\xa7\xa4<\xf7\xef\\\xdet\x8c>^\xfa\xf3\x11C\xbb\xa2\x94\x91\xf9\"\x83\xf4\xac\xc1\xe8af'\x16V\xf2\x07{!\xe9\x07\xa7^~t\xcb\xdea\x18\x9e\xd1\x18J-\xc5[\xad\xc1f\x13\xdd\x92\xa7 \x8c9\xac\x7f\xf8\x00\xae~\xa2\x1c\x9a\x0f\xa0;\xdd\xc9\x13\xc1\x1b\xe9\x94\xb2\xc8\xc9\xe7\x83sq\xc1\xb2\x1f\x93\xf96\xe2\x92^y_0}\xdbX\xcf\xc8\xa0\xeb\x99\x926m\xdc\xd8\xbd\xeb\x19\x02\xa8\xf0\x0f\x07\xd5\x0f\xa1\xf8pX\xfd\x10\x88\x0f\xf7\xaa\x1f\xb6\xe2\xc3\xfd\xea\x07L\xf6\xe0\x0e+o#,^MJ\x85'G\xbc\x15\x94&\xf1\x0f\xb2\x88\xb9\x87\x0f\x1fT\x1b^P\x94\x17\xcft1\xd3\x90\xf4Y?\x83f\x83b=E\x9c\xd5:\xac\xcb\x9b\xb1-\x97/A,2E\xbdX\xb1h\xc3\xd2l\x90lN\xe7\xe5\xe1\xb6;\x02\xaa\xd1\x0b\x7f:\x0b\xfe\x91\x9c(F\xe7\x89Lj6\xcf:\xa9\x9e\xf1JA\xb5\x92\x9b\x0f..0\xfd\xd9\x05\xc5\\\x1b\xfa\x18\x19R\x16\xf2<\x91#\x11K\x93{g\xe3\xc1D8\xc8\x93\xe52bg\xab\xe4:\xeeJK\xa4\xb0\x1f\x0e6i\xb2i9c\xcc\x85\xd3\xeem\xb2\xcd\x9fa\xdb-\x15b!\xb7-\x9b\x8b\x91\x97\x1cG8$\xd5\xd5\xcd\xab>\xc25;\xc3\x896\x17E\xad\x96s\xae\xd7,K\xa2+6?\xdb^\xe6)k<\x0f\xc53P\xcd?'@;\xf9@$\xc6\xa95\x84!KV\xc9\xb5;u\xd4\x0c2\x87\xec\xd9\xe7>\xec\xd9\x9c\x9a)u\xcfq\x10\xcfXt\xccE\xe2\xae[\x869j\x04\xbdo\xde\xae\xf4\xf64\x7f\xb9\xcdO\xe2\xe02b\xf31\xec\x85B\xa7\xac|\xb1\xb6b\xc8H\x03\xc5\xd8\xdf\xa4\x1c\x10v\x1a\xfb'\x80[\xb6a\xb3\x1d\x80m\x13\x98b\x8a\xea\x0fA\x1be,j\x10\x0c\x7f\xcbU\xe60\x84.\x1b\x7f!\xbf$F\xc9\xc11\x87ejs\xab\xa3M8\xb9a\xb3m\xde)q\"\xec2-F\xed\x9e\xc6\xaf\xd2d\x99\xb2,\x1b7&\xf2n\x18c\x1d\xfb\xba\x0e\xf6\x13\xa1\xe5\x8cEl\x96'\xe9\xaf\x00/]\x08\x13\x1f\xc2\xab _\xd9aK\xdd\x07\xc0\xac\xf6\x1b6\xab\x12\x15.\x9b\xfd\xe9\xcc\xf5\xe8\x12\xb1\xa9\xc4\xd4\xe1\x03Wt\xa6a\xf9\xcdt\xebW\xde\x82_\x0da\x7f\x85\x0d\xb0\x10\xf6\xf2\x1eX\nu\xdf\x06R\xd1\x9b\xb2\x00\xd6 \xc9\xc8>[\x13zZr\x8a\xfb\xa6;\x97\xb57\xca\x11\xc1\x87\xad&\x85\xf8\xc2\x07\x81OA\x7f;5\xcf\xe3=\xbb\x1d\x83\xb3\x0e6Hb\xde$\\\x8c\xce\x1c\xf34\x84\xe8\xdc\xd9]B\x1aJ\xf2A\xb2i\x07\x98\\\xc8)\x1d\x89A\"\xc4\xb4\x9c\xdc\x1d\xe3E\xb8\xcc\xbc\xb63w\n&?Of'7\x9b \xce\xc2\xa4\x834\xc2\x85G\xb6\xf9!\x8c\xdf\x87q\x8bX\xb4\xa5\xe2a\xb6\x89\x82\xdb\x97]\xa5\xa3L\xaf%R\xd9I\xff\x8f\xe6\x9a\x11\xa9\xb6\xdb\x0d\xd7\xa6\x10\xc6\xd7a\xfe#\xa2]\xcb\xeaa'OO\x16\x83\x1f\x83M\xab\xd2\xfe\xb3\xd0\xf4\x17x\x13\xfcOg^\x0b\x8b\x03T4\xc6p\xda\xdc,\x7f\xf2`\xd9\xe9\x86\x05\xa7\xdfV\xef]\xfd\xc9\xa4\xee\x91[\x14-\xfa.\xf4,\xc7\xc2\xdd\xf4g\xce6)\x9b\x059\x17\xf1OI\xf3-^9B]3\xf6\xa5\x15\xa3\xee\x9a\xccS\xf2!\x0e4\x86\xa4\xbdh\xa1\xa7t\xb8JQ\xd6UZTi\xa8\xaa\x8a-j\x19\x96\xaf\xdb \xc4\x82u\xb7X\xb4\xf7R\xd2/;\\\xf0SzU\x8b.\ne\x15\xaaE\xf6\x80\xbaN\xd9B\xf2AW\x81Z\xf4O\xb0\xe8\xc6-\xda(4\xe8\xc7-B\x12X\xd5\xfd\x16\xce\x0ff\x89\x96\x04b<\xd2\xa9}mo\xb0f\xd6\xd5\x9a\xebzB\x04P\xf7_\xd7\x1fa-\x89\xa4\x89V\xb8\xb5\x0b\x8f\"\xf7\xc7\xb6\xabb\n\x9c\xc7\xf0s\xf3\x8c\nm\xba\xcdh\xdf\x11<\xba\x82\xb4v\xb6-\x96P{\xd3\\\xb5tR)*\x97\xde\xb5U\xd7\x0eiUu\xed][uqD\xa7\xaa\x8a\xdf\xcd\xd5\xa4<5\x86\xcb\xf6\x82\x82\x95\x8f\xe1\xba\xbd\xac\xe2\xe3c\xb8h\x19y!$\x8c\xe1e{Y\xad\xe5W\xcd\xa5K\xf2\xd0\x18\x8e\xbb\x94\xd6Z?k.\xaf Och\xd9\x9d\x92\xe44\x86g\xcd\xa5u\xc1r\x0c'\x1d\n\xa3T9\x86\x9b\xe6\xa2\x8bx\x0co\xac%l\x87\xab\xb5\xb7\x1f\xcf=\xbfrO\xe4\xa3\x9b\x0d^mSfJ1\xb9\x92\xe4\x02-\x1d\xb5\xb3\xa9\x12s\xda\xab84\x16t\x00\xdd\xc7J\xdf*\xbc\xa4Z\xd5\xc4\x0c\xaa\xb2\x84\x8d\xf2k\xc6\x05\xcc\x15#&\x00\x13\xa0\\\x14\xbf7\xc7\xaf\xc8\xe6\xf8\x15\xd9\x1c\xbf\"\x9b\xe3Wds\xfc\x8al\x8e_\xfc\xc3Pw\x1a\x8a\xc8\xb9\xcb\x92k\xfa\xb7\xf6\xd9\x9a5\xfadi\xfeX&k\x8cv\\ip\xc7\xf2?\xd9\xe5Jx\x18bq\x992\xa7\x9a\xd6\xc8\xe8\xd4\xf8\x19\x07\xa7d\xa0Z\xb2\xfc\x07$t\x06)\xbe\xab}j\x17\xdbT\xbe\x83\xaa\x1c\x9b\x14\xdf\xc1l\x9b\xa6\\\xbch\x10t\xd1>\xe9\xc6\x98T\xbc\xd1y\x0d\xef\xe8\xb6\xceO\xab\x90Yd\x1dg5r\xa4O\xeb\xd7\xf0\"\x11\xdc\x03D\xf0\x19\xbcS\xe0|\x8d\xe7\xf5_;\xf0ug\xd2Z\x86\x00\x93@\xd5bg\xfc\xa4=T@a\xb3\xe6\xb6\xac\x06\xa3\xa50\\\xfb(\xcf\xa7\xcc88\xd3\x90\xed\x99\x18\x87Nwg>\xccj|\x84Z\xff\x171\x16\xcf\xfftb\x8c \x8b(\x15\xfa\xd5|a\xb0\x8b\xd3\xac\xba\xf0\xc3WL\x91_\x15_?\x82 \xe5 u3\x8fr\xe8\x0f\x1f\xc3\x0c\x9e@\xf6\x18f\xbd\x9e\x07\xd1tv\xae\xd7\x9c\xce\x0ca\x01\xc5R\xc6x\xe1\xd1\xe6\x9c\x8b\x18\xd8\xca-fA\x14 \x96\xc1|\x98\xf2\xba\xe72\xf4b\x84IZ\xc3\xc1,J\xb2N\xeeV\xc2\xc5J\xb7\xfd\xa11\xfc9G\x85\x10\x7f\xbbU\xffz 4\xc3\x8bZ5\xa6\xc77\xe3\xb7\xe0\\_\x96\xe4ub[\x1d\x0d\x9eqwcj\xba\x03;\xa4\xd3\x15\x96\xa6\x1d\x86\x10\xeeb\xf1\x0e\x84\xf1t\xf0\xec\xec\x8d\xbd\x14\xdfm\xed\x04-\x90)m\x1b\xcc`\x98\x0e\x15\xa1)\xd6\xc1\xa9\x81sS\x8aT\x87\xaf]f\xcb\xd0\xd0\xc6\x8a\xe7\xe1U\x8dT\xeb\x8f\xbaV5\x06g\x1e\x06Q\xb2\xecoo\xacWq\xbfH7\x97\xc1\xec\xfd\x1f\xea\xe57Z<9\xa5>^\xcf\xff\x8d\xfaZ\xb1`\xfe)\x9d\xad\x0e\x95\x1c\xe8<\xbb\n\xc2(\xb8\x8c\x18\xea\xfbI\x1a\xfe\"\\\xb8\x9a6\xfbr\x9b\xe7h\xe0\xb5\x0f8\xbf\xdd P\x89\x92\x9d&\x86\xfc\xa0\x8f\xd3k\xa8\x91\xc4\xba\xb9 \xeb\xec\xbc\x02\xd9\xd5\xb2q\xf4\xd7\xe1<_\x8d\xc19\x186\x0cd%\xa2;\xf0R;\x8f`\x9b\xd5e5\xfdY\xa5l1\x06\xe7+\x9c_\xc3 n\xa20~\xff}\xa9\xb0\x05y\x91\xe9~Y\x00\x9c%q\xce\xe2\xdc:\xfbh\x80|\xee\x8c\xfd\xcd\xf5\x06\xeb`S\xcaI\xdex\xfd\xb7\x85~\xce\xda\xcc\xb6\xc8~[\x0e?\x9e\x9d\xbdi=\xf0\x98\x17,\xc1\x1a\xb7D>e\x13X\xcb\x19\x96\xce\"[\x0f\x81*\xa6\xb8\x96\x93\xdb\x92\x91\xaf\xc5\x00\\1{\xd6\xdd\xa1\xe5c\xb3\xb4y\xf8\xd4\xbe}9%\n\xdf\xfeK_\x12\xcf\xbf\xf4\xa5\xff\xc5\xfa\x92\xe0|]4\xa6\xce\x97S\xf2\xeez@\\\xd7/\x06\x1a}|\x93\xa8\x83g\x9bI&\xafim\xe6\xd4\x15\xffR\xda\xccO,\x80\xac\xac\x8dy\xa4\x8b(\xd9\xedU\xb2\xd9n\x1c4,6+u{{\xbb)>\x89\xa8\x13\x14\xee\xce\xde \x0b\x7f\xb1D\x13\xf9\x92:\x10\xef\xb2\x7f\x9d\x06\x9b\xcd\xa7\x08\xbc\x1d\xe4U\xad\xb3\x04\x8e\xc0\xb9\xccc%\x113\x88\x92\xd9{6w`\\\xfd\xb0\x8d\xc5\xa7\xae\xf2\xaa\xf8\xb5\xf3\x14\xb2M\x10kR\xbb\x1c@\xa3\x98\xfe\xcf\"\xe5\xe2\x82\x7f\xa5\xad\xf1W\x1d\x96U\x13|\x1b\xea\x9bG\x8c\xf4\x14\xddkm#\x8f\x85u\xf8_\x92\x0d\xfcK\xb2\x81\x7fI6\xbf\xbddc\xbd7\xc0\x06Y\x9el8\xd4\x07\xcb\x80\xf8\xb0\x99\xff\xc8\xcb\x05\xd2z,:\xb1\x88&\xe8lop\xa9\xff\x9f(\x8e\x94\x1c\xd5?\x8dy\xef\xc6R9\n\x96\x85\x94\x8b\x0b\xceH5\x9am\xf8\xda\x81\x0b8A\x1a\x06\xfd(\xb8d\x91c\xea\x06h\x9c\xd6\x8e\xe4\xf7\x0e]}!>\xfeO\xc2\x93\xd9g\xf2\xe4\x86\xfa\xe6\x11\xff/\xb4\"\xcc8K\xad\xf1\xd4D|\xa9q\xe1PV11\xdb\x99\x89\x0bo\xc5\x87\x1a\x17\xce\xc4\x87\x1a\x17\x8e\xc4\x87\x12\x17\x9e\xc9\xc8G3\x11\xf9\xc8\xc4\x8fg\xbf=?^t\xe5\xc7\xb6\xb0EU*l\xe5\xb9W\"\xafz\x95\x98[}g\x92:\x0fl W$\x16+\x18$1\xa7\xcd\xc7\xab ^\xb6g0\x02\x8d\xcf\xb1A\x1c\xac-\xbaXP\\[\xab\xb0\xe8\xbf\x7fDL`&\xf4\xe3\xfc.\xc3\xbb\xee|H\x9d\x06S\x0fb\xc7\x1b\xa9\x1f\xdf*\x15\xca\x0d\xc8\xe3\xd7\xd2}\x94,M\x91tv\xe8\xbfY8\x08\xda\x14t\x8a\xab\xd0\xc9@B\xc1\x154\x93H\xcd\xe6\xdd\x1a\x80U@\x819\xa25 \x1d\x19\xe4 \xc9w\x96\x99\xc5b\xcd\\s:\xd3\xa0~\xec\xbe\xc3b\x9a7\xb3\xe3Y|P\x84\xfa\xe0\xbf,8\x0ee\xd9)3\xcaN\xc1?@vj6\xe2t1\xf6\xc4U\x00i\x83\xa5\xee\x87\xeeyW\x1bR\x88\x85\xbb\x9d\xd0\x07t\xd2\xcd\x91\xff4g\xeb\xa6\xabH[*Jy\xe0\xda\x8cO\x19\x15\xfe\x96d\xc8\x96\xa3\xf6\xa4do\xb2\x97\xa5\xc0\x19\x8b0\xcaY\xfaIH\xb7\xb77\xc3k?\x96(\xea\x80\xd8g\xef\x7fc\xee\xbfc\xe7r\xe5D\xd4]\xbc~\x94\xdfnXC\x8c\xd8\xa6\xc1\xcc\xbf\xcc`&;\x0c\xa6Q\x8f\xb0\xdd\xbf\xd8\xdd\x088K\xe2<\x08\x9b\x0e\xd9\xf7\xf66h\x95\xe4b\x87\xb5\xdfE\x92\xae\x1b;Nb\x8a\xf2\"o\xa5(6h\xebvS\xa6\xf6mI\x97Z\x16&\xe8t\xc2\xd9v\xba7[\xb1u\xd0z`\x18\xe3\xf2\xb6\xb4\xb5\xd3\xe9\xa6.\xc3\x8c\x81\x95d\x9a\xe6\x9a\x81vy\xad\xe5\xdeK\xf9\x08\xf5\x13\x8e.\x0bN\xea\x7fA\x00\xbd\xcc\xe3VK\xb5\x00P\x8e^\x0b\xfa\xf3\xc8:\x82\xack\xef\\e\xa6\xa3yi\xa3\xee\xac\xcdjR\x96m\xc8\xce\x0fX\xc6\xf1`\xfciC\x15\x1e!\x84H\x1d=B\xeaS*\x00\xc4\xba\xb8e\xeb\xf8'\x8d\xb5e\x0c|\x8b\xe7I\xdc\xe4\x97\xb1\x83\x97\x8as\x8cn\x1bh\n\x9bs\xa25o\x03 \x01\x94t\x18\xf0E 7\x9b%\x1b\xd6\x9f\xb3E\x83/\x87\xa5\x9bMq,q\xc6[\xc9 H\x19l36\x87<\x81e\x1a\xc49\x041\x04\x9bM\x14\x8a\x80\xd3\xf3p\xb1`)\x8bs\x88\xd8\x15\x8b2H\x16\x10\xccf,\xcbx\x95y\x90\x07\x90\xc4p\xc9VA\xb4\xe0\xdf\xf2\x15\x03\x16\xcfy\xa3\xe9\x00N\x82\xd9\n\x9e\xbd:\x85up\x0bs6\x8bx\x7fI\xcc Ia\x9d\xa4\x0cp2\xd9\xa0i\xf7\xf5Q\xf3\xa6R\xf6\xb7m\x98\xb2\x0c\xbbZ$Q\x94\\\x87\xf1R\xb6\x04Dg\x80b\xe1'1\xcb\xe06\xd9\xc25\x9f\x9a\x9ac\x9e\xc0\x19\xa5\xd1\x85\xb7\xa7\x03\x07\xe3\x03\xef\xc6\x81?\x8d\xfb~\xac\xbb\xd64J<\x9f\xcb\x91A2\x9f\x06%\xc5\xbe\xf0\xdb\xb6\xa6w`\x00\x92\xbd\xb5\x05\x8dA\x10oR\xa9\xda\x19\x04\xa7z\x9ft] \xeal\xa3\xa2\xe4b\xbf7\x1b\xd5\xef\xf2<\xc8\xa7?,\x96\xa8\x7f\xb6\x93\xa1\xffy\x17\xb6\xbe\xa8\xda\xdd\xa6T\x8b\xd0\xaaH\x0b\x9aUo2\x905\xeb\xdc\xbb9\xbaw\x93kC\xe5\xe3\xd1\x16\x1a(\xd8\xc1}^h\xdc\xc1&\xfc3\xbb\xe5\xc3hR\xa4#*|\x19d\xe1\xac\xad\xecL9\xd17+\xdb\xb9\xce\x9a\xcc\xda_v\x1db\x06\x93E\x13C\x9a\x05\x19\x031\x0fgl-\x06bh\xb6\x83\x8dV\xce\x02\x1d\xb5&\xe8\xae9AW\xed j\xfaJ\x87\xc8\x1c:+\xec\x10\xf9c'\x0d\x0dHF\x15\x1a\x9a=\x8d&4\xe8\xf6\xf2\xb9LY`9V\x05\xb5\xbf\x08z\x9f\xb1\xbd\xd1\xbf\xb6\xf7\xf7\xb9\xbd\x92U~\xf2\xcev\x928A\xedn\xf3\\|p\xde\xc6\xef\xe3\xe4:Vas4'nTB\xc1\xf1a\xd1\xf5v+t8\x0bo\x1b?\x8d\x1bz\xe0\xf4\x7f\xde\xae7V\x15\xcb\x90h\xe6\x7f\xf8 \xe8\xefR\xba\xfc\x97L\xf9\xbfD\xa6\xe4\x82V\xd2@HU\x1c\x00\xd7A;E\x93\xd0\x14\x17e\xd7,\xcb\x82%k*\x9d\x16\xa5\xb3d\x9b\xce\xac\x02\xd4\xe7\x92\x1e\xdd\xc6\x83\xb3\xb5\x85m\x05\xcc\xd3}\x1b1\x13\xe4\xea\xcfe0{\xbfL\x93m\xd4)\xd5\xe7\xfbm\x80\x1e\xf5\x07\x97\xe7\x1f\x16\x98\xbay\xa7\xa1t#\xaa\xc9\x95\x16t\x7f\xea;w\x8a\xd4\x10\x9c\xe0\xe14\x1c[z\x9c\xfa\x92\xdbX\xd8\xef\"\x94w\x1b\xdc\x83.(u0\xb2\x81\x12\x95\xba\x99\xc4@\x19\xe6\xda\xf7.\xc44\x8d\xcei\xbc\xd9\xe6m1v\x03*\xfb:\xb9n+\xb9\xa5\x92\xc7I\xa3\xb0\x08*\xff$\x1e\x19\x9fp\xc1\xac\xad\xfc\x8c\xca\xff\x18\xa4\xef\xe7\xc9ukX`\xcaB\xe9\xfc C\x9d\xbe\n\xf2U\x9bO\x0e\x08\x17\x96\\\x04W\x12\xa4\xa9\xb9\xc2\x1c Y\x10E8\x85\xcc\xf5v;\xf0\x92\x8fdo$\x11\xf3%9\x9d;\x1e\x9e\x7f}\xba\xe9\xa2\xdb9W\xcb\x19\xea\xean{\x99Y2g\xaaT\xa2\xe2\x04\xbb\x0e\x07B<\x07t\xfe\xff\xff\x0f\\2pz\x8e\xbd\xa5E\x9b\x11\x84\xa2#OU\x16\x19\xcd\xe7\xce\xf1!9\xb7V\xc6\xb4\xb6\x9bF\x87\x98\xd5}\xc3\xf5\xb2y\xd3\x19j\xd0\xb62\xad\xb7\xf4I\xf7\x19\xcb\xf5\x9a\xb3l\x96\x86\x9b\x1c\xa3^7\xcf\xe5\x93\xc7\xa4\x1f\xfc\n\xbd\xa8\xeb\xd6\x96w\xf5\x8b\x8d\xe24\xde}\x0ca\xfc\xd9#\xa0;\x13j\x14\x88\xeec\x07\xc1\xa4\xc1\xf1\xa04\x18\x07\xbe\xc1\x07\x1a\x9dB\xb6mC \xdb\xc0Dx\x8ep\xe5\xabE\xcd*L\x9e\xf2\x92\x06\xfel\x82%\xcf\x87yS\x98\x8a\xae\xde\x83\x9f\xe4g\"\x1fT\xcd[\x0f\xb2\xa1\xfd\xe4\x1d\xc0\xea\xefD\x9f:\x0b\x1a\xa6\x80\xa9\xa6\xc3\xec\xf2\x907m\x97\xd3u\xc1\xa2N\xbbK\xbb\xa67e\xdd\x85+\x91\xfa\x8e\x15\x97\xbcZN\xe3\xc8[6\x0f\xd2%\xcbi\xe3\xede\xe5\xdd\xb7\x8a\xbf<#\x91\xbcmg\x85\xc0ega6\xf6\xc5\no\xfd\x10\xd3L\x87\xadz\xfc\xbf|\n\x8a\xe7\x93\xac\xbe\xffd>\x05\xb0\x9bN\xde\xe9f)\x88\x9e\x7f\x83\xc4\xdc\x0b*\x186\x8cb\xdb%|\x05\xdf\xd1m\xab\xde\x11a\xa9f\x9d`&\xf3a\x0b\xc1w\xb0\xcdXj\xbfP#v\xbfK\xf6RR\xce\x1b4o\xa9\x9c7\xccS*\xe7p\xd4Bs\xe4\xa8m\x8a<\x7f>r\xf0\xb4\x9a\x19\x7f\xeb\x94\xa8\xffp=\xbf\x8bc\x06\x94\\HZ\x95\x0e\xbaM,\xf5\xfcX\xd3\xf39\xda\xd8\xd6\xbe\xbe\xf0\xffK\xb5\xfdv\xed}\x978\x93\xf0;\xd0\xf6\xa3O\xd3\xf6wS\xdf\x17\xbb\x99\x08\x0c\xda\xbe\"z\xedj\x7f\xf2\xab\xaa\xfduc\xa3\xfetP\xfb[N\xccH#\xb1GH,\xd4~\xe7\xdb \x0bg\xe5\xe8\x88\x8e\xbdj\xab\xce\xdb\xac\xc3\xa7]tx\xfb\xb0\xad:\xbc\xadJ\xd0\xb6\x14\xad6\x89O\xd7\xe1?yLU\xdd\xf5\xad\xe4yR}\xb5V\xac\xa8\xaf\x8e\x0f\x1b\xfc\x9f\xeb\xaf\x0d~e\xcd\xc3\xf9\x82\xfa\xabpC\x9f#q\xa7?[j\x10\xafw$\xde\xfe*\xfa\xf1\x17\xdb\xa8WA\x96]'\xe9|\xe7\x8d\xd2\xed\x0c\xbf\xde>\xed\xbe\xfa\xc16O8g\x8bX\xcew!f\xd7\xfd\x8d\x98c\xb7}\xebXZ@P\xc7\xd2\x9f\xb6\xcb_\xc4\n\xf2Y\xde{\xff$V\x10\xd3\x11yy\xc8\x8b\xdf\xbf\x15$\xd5\xac \xf6R \xda\xf7;\x18I\xd2\x16\x99\x8d\x1c\x9b)\xb5\x176gf\xe0\xc14<\xe7\xb2\x85\xaf\x9b@\x9a\xe4V\x94q\x03\xf3n\xa2\xe5\x84Y\xa3\x0b\x94w\xf5\x9f\xc9\xc7aa\x8d\x1b\xb2\xb0\xf98,l>\x0e\x0b\x9b\x8f\xc3\xc2\xe6\xe3\xb0\xb0\xf98,\xc8\xb2R\xfe\xc0\x05Yw!M,\xfc\x8fGw\x1fxf#\xcb\xe2\xb77\xb2l\xbe\xa4\x91\xe5\xf7\xe6\xf80\xff]:>\x04\x9d\x14\xee\x85*\xd9A\xc3\xe3\xbb8\xe3 B\x17\xf8\xb3\x06\xc5\x07\xa3\x98\x0c\x8a\x04d\xae\xd0\xc8\xed5\xae`Bb\xf7\x86$\\%j\xb5f\x16]Wj\xce\xa2\x90\xc5\xf9\xa9H&\xba\x1a\xc8\xdfm\xed,\x8d\xed\x9c\xb1Y\xca\xf2r[\xf4\xae\xad\xbd\xdbJ{R\xacx\x8379\xb0\xb6\xc8Q\xd8\xbfL\xe6\xb7\xceg\xbb\xa7\x04\x9b\x0d\x9d\xb5\xad\x06\xe2O\xfb\xe0\xbe\x84+\x0b]\xdb\x1c\xc3\xf4\xbc\x01\x14\xc5\xe27\xa6\xdb\xd4W\xb51\xb9favkH\xea(\xd7y\xdc\xb8;\xfan\x8c\xe1\xd6X\xee\x1f\xe0\x8e\xf3\xab\x18\x9b\x9a%\xbd\xaeaU@\x85Vi\xa3?\x00\xbbEV\x81]\xa3\xab\xc0\x8e\x11V@\xb0\xe1\xbc\x83\xcdkKS\xec\x96/\x05\x8a0+\x9d\x8c^\"\xa9I\x07\xa3\xd7\x82Jv0zm\xba\x86y\x01\xe9J\xb2\x83\x85lE\xe5w\xb3\x90]Q\xa5\xae\x16\xb25\x9e\x1b\x84\xd9\xcbgg\x87\xcd%9\x89^\xbb^-\xfe\xe01\xd7c1\xea ^o\xc7\x9f\xcd-\xdd\x16-\x11\xf59N\xd9\x9c\xc5y\x18D\x19\xb5T\\\xa4oi\xea\xff\xb2\xf7\xef\xebm\x1b\xc9\xa28\xfa\xffz\x8a\x12fN\x06\x1c\x93\xb0(\xdf\x99(>\x89-\xef8c\xc7\xde\x96\x9d\xcc\xda\x1ao} \xd0$\x11\x83\x00\x02\x80\x944\x89\xdfe?\xcbz\xb2\xdf\xd7\xd5\xdd\xb8\xf6\x0d\x94l\xcb\x19c\xd6r(\xa0\x80\xbeUW\xd7\xbd\xe6\x98\x04\x06I\xfc\"6/\xeci\x0d\x8eu*I\xc8\xe2\xf9\xd9\x91\xc0\x9f\x14\xfc\x96\xfeSg\x98)\xba\x9d\xb9\x07\xdf\xf7\x0d/\x1e\xa1\x15\xe6Cj\x16\xe5\xc2\x82\xb8t9u\x80W\xc5\xdf;\xbaT\xa7\x9c\xad\x1fG![\xbff\x88\xbf\x08\x040\xf4\x0fsC\xe8;y\\/dK\x1dgT\x9a^\x99\xaf\x94?\x06\x07\xdc\x17\xdfm\xca\xd5\xc1\x18\xe8\xed\x16\x1a\x823\xd2\xb9\xbc\xacL\xca\x02\xbd\x0e\xd57\xe8P\xcb\xba\xca4\xe7Ft\x1e/\xab;\x0d\x9dj\xbd\xf5\xd0g\xa7\xff\xa5J\x9b\xc8\xde8\xd6\xb9\\mM\xc3\x14\xaaU\xd9Zj\x868\x86\xb3\x1d=\xbd\\'Z\xd3\x11F%\xc3\xcc9\xdd\xf8s\xfc\xb9\x1ci\xbf\x99\xf5?\xc9R}\xbcy\xf5l\x80{SRo\xd8\xea\x13o\xf2\x98\xe5F\xa9\x19\xd5~\xef\xea\x9f\x17\xd6\x1d}\x9d\xbe#\xac\x83\xd6\xfds\x1a\xb8\\\xd2\xd7\xab\xcei\x1b\xd4/s3F\x077\x88zm\xc7\xe0<\x89\xd3\xb3\xe13\xca6\x1e\xfa\"\xd6\x93\xb8\x87\x93\xf8\x10!5\x0e\\\x81i\xe7\x1b\x01*=\xb0~\"V\xe5:~\x82AB\x98\x01\xe5\xb4\x92\xb4\xb4\x13\xb2ij\xff\xcf\x068\xaf\xb57pe\xf9\x12;X\xf5\x19\xa3E\xa4\xf4\xe71\x15\x17\xa6\x9a\xf8y@UE\xf1\xaeL3\n\xa8\x1b\xa0r8\x11\xf2u\xa6\xdeDa\x7f>\x0dl\xb7\xb5\xb9\xc2 \xfd\xd2\x9f\xe0'/a\x83@\xfe\xd4JE\xfd\xb1\x11\xb0\xda*Z\x04\xcc\x9aV\x8d!\x08h\xe3=\xf9\xf9b\x9b\xa5\xb1b\x98i\xa3\x8dq\x96/}\x16\x18'\xc6r\x8a\xf94\xb4\x08\x87S6\x14\xd9\xda\xd4\xae\xa9d\xf8|(^\x81r\xafqR\x11 \xdb\xf3\xb9\x0bV\xbd6\xbf\xb8\x1bfiF\x98f\xdc\xbf@?B\xaeoi\xab\xe9\xb48\xf3\x8aA\x02B\xea\xf8\x95\x81=`i=\xb4M\xd7\x0e\x14W\xd9\xf0o\x1b\x92\x1b\xc6\xfc\xbf)\x08d~\xee\xafII\xf2\x02}\xe6)#\xc99E\xd4t\xaa9^|\xdce9\xbf\xfaJ\x8c\x19\xd9'\xc5\x96B\x1e\xd4\xdd;\xa3\x9f@f\xbc\x01'\x14\x8fZ>\xf5\xea\xe9\x0bk\xf642\x1cf\x15\xd8`\x02\xf3g=\xcd\xea\x89\xb3:\xc8,\xd8\xa6\x86\x9fA\x07\xbd\x0c\xda+\x86\xfa\x12\\\x1aB\xde*+\xc4\x87 m\xbd\xfduE{\xe9\xa3\xef\x93\x82YWl\xf6\n\x03\xfd\xb2_\xda\xfb\x85O\xe0n\x18\xcd,.W\xb5\xdfd\xf8\x7fl\xd3\xbdK\xec\x81=$\xfb\xa7\xf8\x8fe:W{-\x01W\xc2\xee\xb4\x92\x98\x9d\x9d\xe3 \xd3\xef\"\xe6\x9e\x0e\xcb^\x0df\xa5\xa1\xd1\x13\x12\xacS:]j\xe2\xa03y\xc1\x8a\x04\xef\xe6\xa9\xa2 \xb8\xb84\xadZEt1\x9cc^\xdfV\xe9\xc3\xe8\xdea9\xa2\x1c\xb8\x01s\xfc%\xba\x8a\xb7\x84\xfb\x8c\xd9PD\xaf0*(i\x08gpf\x06\xe6[\xa9\x9a\x19\xf3\x1b\xf5\xce ^\x9a \x1e\x19\xb6\x05p\xdd\xe4% 54\x89\xb5\xf5|\xed\xba\xd4\"\x9d\x8a\xb9OM\x0c\x8bJ]~\x170M\xc4.H\x8dTp\xe7Q\x9au\x94\xd0iO\xaf\x96\x03\xd6^r9\xbd(t\xdal\xea\xbfMM\x97\xf2\xb2\xd4\x15\x84$\xb5\xef\x18\x8e\xae\xc2\x03R5\xe0\xd0f\xb8\x1f\xcf\x03\xf2\x92\xf87<\xeb=\xb0\x859G\xc9H\xc7'eC\xda\xd6&\x887\x1e\xee\xbd\x0c\xf8\xba\x9e\xdb$\xc0\xff4}\xaf\xde\xd2v\xbf\x91\x15_\xb3\xfa\x97\x1d\x81Ej|\x18\x90\x1e\x1fx\xe7\xab\x14\xf9R(K\xc7\xddz\xcc*\xc7\xdd\xf0\n\x1cw{\xe5\x95\x94\x94\xa3\x94\x94W\"\xbb\x97Wj\xe3\x82i$\xc0GS\xd6n\xc3\xea%\x1b\\\x04\x8b\xe4\xb9\x112\xad\x1dq\xd0\x15O\x0d\x19\x0dq\xc1\xf1\xe1\x10R]\xe2\x92\x8d\x88\xf4\xac\\\x00\x15\x0en^\x10\x13?\xd7\xf8\x1f3\xc7\x82\x19\xe8Y2\xce]\xf9\xfa\x82\x1c\xc2\xd8\xcb\xe0\xe4h\xce\xbd\xb6\x02\x81\xc7#C\xdffU\xa4\xba\x16\x8c\xaf\x94\x96M\xad\x17T\x9b{6`S\xaa\xcd\x7fK\x9b|$\xe06\x8a\x91*\x11\xbc\xc5mZm3\xe1\x1covw\xcf\xd1q\x02\xb9H\x9doj\x8a`\x94\xc1/D\n\x019\x06E\x0bp\xb1\xcc\xf4d\xca==\x18K\xca\xcbJDIH\xce_,\xdctd\xf2\x97\x8b\xa0\xf72\xaf\xa0{\x92\xbe\xd5\xf8uXy\xd1C\xc3crx\x15\x1d qA`/g\x1e\xda\x8a\xf1\xc1\xb7t\n\x18\x84\xb9C\xa23\x9d\xcf\x0dv\xba\xa9\x9c\xc7\xf7\xb4\x89\x84\x94\xf5\x8148\xd8P\x04\\1\x0e\xb6\x91KOY0\xaa\xd5\x14\x9e\xe1\xcbsX\xa4cPE\xdf7\x16\xc9WO\x02\xe3\x98\xacF\xdf?\xe8\xd4\x1e\xe9\x89\xcdy\xc46\xaa\xd5y\xc4\xe6\xd3\xe6_\xfb\xe7\xca\xbf\xbe\xf2\xb2M\xb1r\x9d\x9c\x14Y\x9a\x14\x04\xed\xca\x87\xa8\xd3WP3E\xde|\xd6^ev\x1c\xd2\x1a\xba\x9c\xed\xd4\\\xdf\x95\xf8C\xcca\xcf\xf3y\xc8\xe0\xd8T\xb6^hS0\x87R\xa0d\xe9\xc0\xe1!\x92\xd1t\xc1\xa2X\xc4\xe7*C\xdd!\xaa\xff\x12\xfa\xc17\xaf\x9eV\xb2\x9e\x9bu\x03\xa5(A\xd9b.\x03Vr\xeb\x15 \xa3\x9c\x04\xe5\x9bZ\x9f\xd1\x13\xe8t\x0c+\xfe\xd1\xaf\x9c\xd1[\xf6\x93\x8bS\xa7\x95\x84\xe1\x8b\"9\xa6@\xb09\x8b\xe5\xd4\x19\x89\xba\x06\xa2y\x99Lp\xee \xcd\xe6q\x1a\xbc\xc3\x12\xeey\x1a\x9f\x9e\xceK]\x08c\xdbF\xc4\xff\x92B3\x0b\x11\xf1sI\\\x94\xb1\xde\x89\xa9\xce\xc9\xf5\xcc\xa1\x8aD_\x9a\x03\xe4Z\xd69\x19\xb3\x1f\x07X\x15\xd9\xbd\xf7y\x9c\x05\xd0\xd29\xad\x88\x1f\x92\\b\xf53\xed\x19\xbb\xe0\xc9F\x98\xa1\xa0=\xc0\x9b\xd4\x17\xb2\xce\x1b\xd9\xc1\xbb\x12L{\x81\xcc\xc9N\xea\xd1\x86\\d\xfc(\xc3e\xae\xe9\xa2I\xfb\xe1\x8e\xc1\x81u\xe1\xe8G\x1d\x1aGm8\xf3\xa1M\xa0%Y^\xc6;gr\xb1\xa9\xa7\x06=*\x06W\x9c\xdb\xa1X\xa5\x9b8\xac\x08\xe1\x9b,\xf4K\xdb|\xac6\x15\xcd\xeb$\x0e\x9e\xd0\xf9\xa0tI\xea?\xff\xf8\xa3 E\x0fq\x0e\x81?\xdbO\xd9\xf1\xcd\x9f\xf3?\xda\x10aTd\xb1\x7f\xc11\xeb\xb1P\x7f\xb07\xe4\x0f\xa5c\xf8\xdcR\xb2\x8a\xe9\xd4\xc3\x0eM\xca\x9a\xd6\xf0\x06C=T\xd5\x8e\xe5\x93\xac\x7f\xd3\xafx=\x0b3?T\xcax=\xc7\x07\xfc\xc8\x12\x98\xa2\x87\x0c\x98\xf3\x00\xba\\<\xdfPi8\x14\xe4\xe9!\xf8\xde\xbau\xebI\x9a\xbb\x9b1\x14#\x98\x81\xef\xe5\x9d\x9b\xfa\x86B\xa8\n(S\xa1{cL\xa9\xb0\xa2\xa7+\xcf@$\xd7\x974\xafm\xfd\xf9\xea\x10\xf1\xca\xf4\xc7cSE\x97u\xfdb\x92\x96\x8f\xd3\x00I\x12\x86\x87k\xdf[\xd6\xef\x11\x9b\xf4\x1d\x175<\xfa.\x1a\xc0\xe75x\xe3\x98\xd0\xber\xda\xb7{n-\xd2VlO\x1c\xca\x9f\x92\xa4\x9c`\xe4\xd8[JZ\xb6'\xce#~\x13\xa3\xc24y\x85\x80\xeb\x94\x12\xd7 ,\x16\xea\x9c\x81\x8a\x8d\xfb=\x0b\xcf\xd2\xber\x0c\x87]wm\xa3)\x1c,\x0enk_W\xe8p\xf9\x0c\xc3\xe2\xc8\xe8\xf5%.\xa4\x95z\xa7\\\xe0l=8\x98\xe3\xcc\xc1\x90\xf7\xed y\xcb\xa2\x15\xb5\xef\x9a\x92x<\xa2\xe24\x1e\x06\xc7\\\xe0\x96\x8b\x82`1iMn'\xd0E\xaa\x1c\x99f\x96\xd3\x0fm\xe2\xf6\xd1\x18V\xda\xf4\x06v\xcc\xd7\xed>\xf3\xf5\xe6\xd53-\xdf5\xd4)TD&\xd2-\xa0\x1e\x8f%\xa3\xb7\xd2\xa7Xh\x8e\xe7\x98\xe4[\x92\x83\xd8O\xda1a\xf0\xcc\xc0Q\xb1\xcf\x16\x13\xf6\xeeN#+\xe9~1\xafR\x99\xef\xd85\xb6\x1dw\xec[8\xa8\xd1 \x8d!H\xe3S\xd6d5\xeb\x13z\x8f\x1fk\xban8h$\xd4.\xd1\xd5\xf5\xc7\xca}\x9cv\xea1)\xfd(.\x0cy=J\x8c\xa4\xfdP\xab\xf8\xd1Vo\xe8\x92\x85cX_e(S\xd5\xfe& kfc\xa7\xd1G\x8d\xe0\xba7\x8d\xaf\x81S\xf9\xf8_1\xaa\xed\x84_K\xdd\xf4\xb5\xca\xf7\xb6\n\x8e\xc1\x0d<\x04\xe1\x86\xb8]\x95\x99\xae\x03\x18.4\x9f>7\x0e\x8e183\xb80\xb0\xc8\x0c\x8e\xa5'4\x04\x17m\xf2x\x06\x06\xe6\x9c\xf3\xa7\xda\xcc\x89\xf4j\xca+\xba\x98\xb1\xf7\xf5|<\xd2\xcc\x871\xb4\xb2\xea\xd7\xb1MS\x11=\x96\xe7\x97 k\x10|\xed\x0c\xe6\xe6\x06\xd5\xe1-\x97\xf0\x85\x97\xeb?C\xbc{\xdd\xf4\x9f+\xa5\xfe\x13\x9f\xf4\xb4\x96\x91x\"S\x80\xaed\x9a\xd1\x0d\x7f\xd0\xd3\x8c\x16\xfcA\xaf\x8d\x98?\xe8iF\x03\xfe\xa0\x97\x1dy!\x1a\xdf\x7f\xd0}\x94Q\xf1e%\xb4\xa7h}\xec@\x84\xa2\x83\x8a\x9aU\xab\x8f\xafO\xdd\xda\xda\xd6T\xa9\x94\xa5&*\x99\xfd\xac\x99B\xb9\xb0Q\xbcEm\xc5\x9bE\ne\xac\xd0\\\xc7]\xbc\xc9\xe3!\x96-\x9eU\xb9\xad\xce\x90\xcb\x19\xc2LG\xce`!z\xe9\x12o\x93\xc7.\xe6\xe5\x17;5N\x99\xa3\x00\x95\xe4\x99;\x87+\xd1\x14\xca\xe7*\xe5s\xd5\xd4\xe3\x8c\xdc\x91\xc7\x1d\x8f\xd2\xbc\xe7\xf3\x04`\x9d\xe3\x17\xc9|\x7f\xbaT\xba\x86f\x9b\xb3\xa6\xabd\n\x0f\xc1Y\x95eV\xccn\xdeL\x13*Q\n\xbf\x06/JoV\xef9 \xab\xaa\xd7K\x8a\xab\xb4\xb1\xc5\x0d\\\xa8\x15\xa6m\xcb\x9b\xd2\xc6\x16\x08z\xf9K\x14\xc7\xafH@\xa2-\xd2\xb6\xc2\xc2\xec\xa6\x94\xd3\x85\xe2}\xf8\x12\x81\x88;\xb2p\xac\xc7uB`\xdb\xa5\x02\xddr\x95\x03\x96K\x1eZ'\xf3\xb1o/\xa1\xec\xd4\xbc\"[\xa7\xd8\xa9t\xce\x1b\xba\xe3\xf6\xe4\xd3\xed\xab\x9e\x1a\xb1d\x99W\xf8t.\xffM\xde\xe41\xa3Bu\xb1\x83j\xf2TqF^\xb0\xc9s\x92\x94OXj\x08s\x85\x93-%I{\xcc\xf9\x03\x7f\xbb\x1b,4\x97f\x05\xff\xc6f\x0c\x18\x9f\x88~\x16{Q\xf1\x93\xff\x93\xbbB\xfd\xca\x8a)0\xc4K\x1b\xaf\x88\xa3\x80\xd0M\xb2\xd2U\xc9m\xf9dlzy\xc5|\x13\x9fDw\xc3F \x87\xeb\xa4\xd5:\xea\n\xba@=dU\xbf\xac\x12\x92\xb1\x9d]\xb5\x89\x89\xf5\x0c\xf5\xb5\x00\xb5 \xcb\x17\xf3_\xad\x12\x99\x95\xfeR\x9b-F\\\x9d\xdd\xa7\xcdB\xd3~\xa7\xca[\x93\x9a\xdf\xa8\xf7\x9f6\x8bC\x0b\xdc\xc2& \x8c\xe7\xe8\xae\xbei\xe9\xa1!,\xf0\xe5\xcf|L\xa3m|\x0d*\xb2\xc5\x8d\xc5\xe5*5:\xf1\x89+\xc5@M\x816\xcf\xa2\x82\x9e\x8b\xb4ez\x98&c\xc8u9g\xc4\xc5\xd1\x8f\xc7j\xba%\xaf\xa3\x85\xa5\xad2\x98\xc1bTi \xf3Q\xad\x16\xdc\xb9\xb0\xba\xb8XJ\xd1*3\xa4\x05\x9a\xd0\x8b\x9e\x1e/\xb1\xac\x90\x05\x96\xd0+\xcd\xac\xd0\x1b\xaarE\x169@\x01\x83\xb9\xe9JY\xa17T\xdb\xc7\x08\xaa\x91\x8c\xd8\xe3F>D%d\x13\x8a\"3\xa6\xb5\xfd\x06\xa6\xbaB\xde\xab[\x0d\xaf\x8c\x9fR\xa8\xc9\x17p\x856D \xce\xfe^]8\xe9R\x96mYy\xe6\xcf\xc9\xb2-\xad\xe1\x9b\xaaj\xf8F\xaa\x1a\xbe\xbe\xaa\x86\xefFU\xc3\xb7P\xd5\xf0\x8d{5|Y \xcf\x82K\x05m\xe8@\x04\xcb~\x16%~\x0d\\\xfb\xa7\xe4\xd8\xafi\x88\xe0\x10\xee\x9cq\xe6\x8c\x1bPC%\x02J\x0d\xc2\x8e\xb2`\x15\xc5aN4\x944\x1d\xc6\xa9GC\xb8t\xdf\x9aC\xdf\x0c\x90/\xb0p\xb2\x8e%_\xb0\xc38\x0d\x8e\xce3?)\xb4Q\x14\x19?\xb8I\xf6,J\xdeE\x89fFCQ\x04\xd8Y\xf8qAX\n\xfeL\x0dO\xb9\xf4\x0d\x96\xfd\x8c\xfd\x0c\x1dk\x95\xa0[\x06jSes\xcd@\x1f\xf3\x1e\xeb@\x97\x0c\xd4\x04V\x05\x164\xa1\x1aJ1\x9cb\xab\xb7\x15\xb5r\xc8\xe7yz\xa6\x19\xdcY\x14R\xd2\xe0\x1c\xec\xeb\xbccH\xb4\\\x95\x0cjpo7\x85>\x14\x88\xed\x08\\\xab\xbf\xc4\x14\xcf&\xd8\xe7 r8t\xa9\x9aw5\x9d<\x8f\xa3\xe4\xdd\x0f\x83>\xa6\"6:\xad\xa3\xb6\x86rT\xbc\xc8HB \xf6\x91j\x9er\xa3\xf9@\x92JC'xg\xe2)\x1a\xe6{\xce'BcX\xab\x9d\x16y\xba\xfe\xf1\xd8\xfd\xbd\x1b\xcd\x87\x1a\x0f\xa7\x9e\x94\xf7\xe3k\x97\xd0\xb4/\xd4g*\xa1>S \xf5\x99J\xa8\xcfTB}6,GS\xe6vc\x94\xa9\xe4\xeef:\x97\xf3\x05~\xed^sY\xb96@&\xecg\x1f_\xd8\xd7\x9b\xe9\xbe\x08\xfb\xe2\xfap\xc2\xbeP\xa4\xaa\xe1r\xcbT\x05)\x87\xc3@R\x0dc\xc9\xb4\x07\xe9r\x19\x13d1\xd5\xa0L\x82O\x93\xd79\x15\xf8\xf1\xb8T\x03o8\xf0#? Hl\x00.8\xf0\xd19 6\xba|\xfb\x0b\xa3\xe1.\x1b\xa0<\x08\xadU\x12\xabjq\x8cz\x8e\xed\x10s\xea\x1a\x81\xad2q/+P\x8b\xef^\xb0 \xf5\x8b[\xc6\xef\xce+P\x8b\xef\x9e\xb6\xdd\xce*\xc6J\xc3z`\xb8\xbd)w\x02\x15\x9f\xcf\xbc\x90d9 \xfcRW=\xe0\x1c!\xb98\xa4\x06;F0}n\x8bG\x08c\xcak\xf1\x0e\xa1R\x8dn\xe7;\x84\xd0*\xe0^\xf0\x8f\xf0\xe9\xd2\x95\x9c|\x89\xa0~\x1c\xa7g\xaf\xf3\x8b\xa7\xe5\x8b\x8d\x06\x83_\xb3y\x1b\x98-\xe49\xeb0\xff\xfa\x11\x13?\xd5\xe0O\x11\x9c\xb0\xbd\xf94y\x99\xa7\xcb\x9c\x14\x1a,\xf9\x15\x0e\xe1\x9d\xd7P\xea\xa8A\x7fB\xd0\xa6\xeeF\x0d\xfb\na1\xdd\xb7,\xa3\xb7\xb8\x1e#\xc6 %Q\x9ai\xb5@\xcf\xe0\x10\x1e3#_\x15\x02\xae\xd3\x8f\xbd\xa9\xe1\xb3<\x0d7\x81\x1e\xfc7\xee\x8f\x8c\xa9G\x9eEE9r\x1f\x8f\xe1\xc4iT\xd5\xd5\xf5\xee \x1c\xc2\xb6F\x9bc\x1c\xba{<\x86G\x9a\x97\xfe\xddQl9c\xf8n\x0c/4\xca\xab\xef\x9b\xbd<:/ \xeaI\x8b\x91\xfbX\xd3\xcc\xcf\xc8\x04\xd9\xcd\xda\x0f\x0c\xb6YKX\x0d\xfc\x0b\x03\xe6\xf8\xa6\x83\xfc\x91A\x06,w\x9d\x1a\xee\xbf\x19\x9c\x8d\xf2\xf5\x1f\x0c\xd4F\xf9\xfa\xbf\x18(\xc7G\x1d\xe4_\x19d\xe5\xd5\xc1\xb2,h_\xf9?\x9dW\x8e\xf4I^\xfe\xd9ma\xb3^\xfb\xb96\x17\xca\xfff\xaf\x98\x14\xc2\x84\xf2/!\xcf\xe9S\xe3\x86\xda\xa5\xf7\x19f\x8fe)d\xd1\xc4\xf9-\xec\x9b\xdc\x95\xd0\x9d~\xef\x19\xee+\x1e\x9a\x97{\xad\xec>,F\x87\x838\x9c{\xd3\xb9p\xe4\xe8\xe0R\xf43\xf1\x8c\xa1$\xb6\x16R\x10\x1e\x04\xb4\x7f't\xdfI\xd2\x84\x02\xd8\xe69\xb1\x12\xe6\x9b\xaa\xdb*\xe7c}2R\xf9\xf6\\\x06\xe2\xc0\x0dx\x047\xc0\x91\xe9x\xdbP\xea\xd5\x8e\xc2\x99F\x03\xfe\xefZ\x01\xaa\xd4\x80\xaa\xa6\xe0\x9fZ-\xb1\xc0[\x94ngp\xaa\xeea\x83S\xd5\xfa\x98\xb4}K4\xa7w\xab\x84\xd3Z\x0f\xd7\xf0\x9f\xd1\x1c\xf6\xb53\x84\xca!W=M\xffm\xa7x8\x1f:\xfdC0\xb0R\x8d\xab\xeb\xe2\xbf\x1f\xc3c\xba!\x1f\xb3-\xfe\xc7\x1f\xcc\xff\xe4\xf0\xf0\x10\x1e\xd7\xce(\xea\\\x13\x06?\xe8J\x15u\xeb \xd3\xd5S\x15z-\x03\x18\xbaU'\xee\xed\xe9TC\xe8d\x13\x10\xa7~\x18%\xcb\x89\x9fDk_c\x1f\x19\x8d\xe1H\x9bX\xc8`%\x91\xb5\x8d\xea\xcd\xd3$\xcd\xd7\xbe\"\x07\x10&x\xfa\xc5\xcf\x93(Y\xce\xe0qM\"Fc\xf8\xd5\"\xcf\xd1\xb0\xfe4\xd89}\xa9\xca\xab\xc6Bcf\x10M\x83\xff\xb01G\xfc\xaaX\xd4\xd1h\x0c?\xd1y\xfc \xc3=/\x91\xb6E6,\xc1\xf3N\xc24(v\x9f\xd1\x0f\x86YO\xa2$\x84u\x9a\x13\x08EF\x9f+^\xd8\xd6\x0c\x0c\x1f\xb91\xd0\xd5\xd8\xe6\xa99\xeb\xcceq\xeb\xa7\xa6\x18\xa4\xc23u\x1b\xff[\xd7\x86}\xb0\xac\xc5L\xc4\x91\xf6\x0bJ\x8b\xd6O\xda\xe8X\xf6\xb4\x91c\xa7yj\xa87\xd4\x0f\xbaa\xd7R\xc4\x0c~\xb3:\x85yA\x10;\xf1\xa3\xe2Ef\xf0X\x03\xc5+x\xff\x03\xdd%uj\xb8\xa6\xbaL\xeb\xaa\xdb\xd2\x95I\xeb]\x89\xab#\xb9\xcf\xe0\xb9\x86mi*\x12f\xf0R\x0d\xb9H\xa4Ev\xc4e\xcdP5\xb4d\xda\xecE-\x15\x996\x7fQ\xe6\x97\xab\xe7\xdc\xb1\x93q\xe1\x86nr\x17\xe4P\xb1\xe1*l|\xae\xc1\xc1\xbf\xeap\xd0z2\x98M\xfeX\x0d \x1cV5Ly\xda\x91\x1bgB\x03Q\x98\xe5H\xda~\xf5\xda\x16\x15b\x85;\x12\xda\x91\xe31T\x1f\xd1\xe9!\x96\x84\xbb\x83\x91\x90}l\x06s\xafh\xdd\xd1\xacs\xff\xe5\x0b\xafw\xd3\xf0>\x05\xf9\xd9\xcf#\x8a\xf0?3\xed;\xffH\xef\x89a\x18Mx6\x8ca_8Z,HPF[\">\x85\x9d\x11\xdf\xa9\x9e\xe2}3\xfe}\xf5\x15\xbc\xa4\xff\xbc\xc2\x7fLtq\xa7cV((T4Z\xd5\xd8\xff\xd2\x9eo\xec\xa33x\xf5aq\xdf\x96\x98\xf0H\x16\xa6!\x9b\xc1\x13\xc5\xcc\xd7S\x7f\x15S\xfc\xbcRu\xbc\xa4\x12\xf9\xbcL&\xcb<\xddd(ys\xfd\x95\x91\xb3{.\xdeW\xf5\xe8\x17+\xc9Y{Z\xd9\xce\xe20\x92|\xd9\xb5\xad\xec=3(\xacvJn\x9a\xaa\x1f\xb5(k9 \xf6C\xd3wz4\x86\xa7W\xb5\x97\x85 \x1aT\xc1dCw\xf3.\xcd)]'\xaaey\xa6\x19\xe0\xcf\xba\xd6*\xb5\xf1\x0c\x9e\xa9g\xbaJ\xea\xab\x89*\x11\xcc\x90(\xfb\xa0\x8d\xfd\xb0>\xb7[l\xc4Ul\x98\x86-N\x9b#\xd2\x1aK\xb9\xf5a\x06o\xcc@\xfc\x90\xda\x8a\x80\xbf\x97\xfc\xfe\x934w\x19C\xa59\xfc\xfb\x8c\xb4\x95\xce\xdf~\x1b\xa9A\xe4\x86\xad\x19\xbcV\xbf\x82\\\xac\x89\x9a\x10\xf4\xa0\xf8\xdet\xdc\xfe\x1f\x1d\x06\x93J\x17>\x83\xef\xad1\xce@2vq\x1bz\xb9\xc9\x89\xcce\xa8\xca|'w\x19j\x9c\x1c8)\xad\x87y\xb5\x99d\xcf\xf8\xa6\xec?\xaaQ\x85J\x8a\x0b\x8fY\xbc\xba>5\xcc6\xa1\xf3B\xfa\x12Z\xd4\x9e1\xa5\x17\xd2B\xee\x85\xb4\xa8\xbd\x90\xee5S\x19-4\xeeF_b\x8b\xfe\x03\xdd\x8d\xac\xfc~\x86\xc4\xfb\xe7\xf6\x0e-\xe9\x10\x87\x16\xe6\xa6\xd4\xb6\x13\xa9\xa1}K_\xaa\x0d\xd6\xd039\xa7\x14,\\\x9d\x91-5X\x80`QQ\x95=\xd5\xf0\x0d\x0b\x845\xb9\x9ed\x08\xa5s= Y\xd7V\xe9\xd9\xb1\xa9{+\xfe1\x0b\x17\x94-\x03\xcd\xa3e\x94\xf8\xf1\x0b\x9bW0\x12I8\xa2X\xbd\xb1\x84C\xc8\xcc\xb3z\x81K\xc4\xd5\x1d\xc1&\x8fJ\xadU{\xce\x12(Tu`\xab\xae|_j\x8d\xf9\xa7\x9d\xc4\x0b|:\x9f\x1b\x03\xbf\xcf\xe4/\xbe4\x04\x9a\xf3\x1a'?n\xd6\xd9\xeb\x14\x811;\xc4\x07\xb7.\xd7Z\x01\xd6O\xe8\xfc\x8d\x06b\x8d\x16\xb0\xae*(\x05\xd1\x08 \xa7\xba\x1e\n^P\xc5\xb9\xa9?{f\xaf\xa6\xd3\x05>v\x0c\xd0\x1a\xc3r\xcd\xe3\xc8\xe3\xc6ig\xc3\xab\x92\xfb\xba\xabcc\xafX\xd2\x83\xad\xa8\x99],\x8a\xedn\xe9\xdd\xd5\xc8\"{\xfen=\xab\x93\\D\x8a\x02\x04\xef\xc7 :Qg\xdc\xff\xea+\xb8\xf0\x82t\x93\x94\xae\xaeos\xbdY\xbc&\xb93\xd0d\xcc\x1a\x1e\xe3!N\xd4\x941\x94\x98\xef\x97JMT\"\x89r\xec[\xe1^\x982\x89 \x81\xae\x13\x06\x17\xae\xc2\x01\x05z\xacEu\xd7\xac\xb8\xd2V\xc8\xc9\xb4\x08{\x85B\x87!N\xa1\xbb\xcfL\"D\xb0\xb3\x08q=\x03\x19>i\xa6\xb2\x01\xc5\xa6?\xa32\xa3_\xc4\x04q\xed.&hK:\x9b\xb8\x8fK\x1d\x1b<\xb3\x8e\xf4\xdd\xf7c\x94P\xded\x19\xc9\x1f\xf9\x05\x91%W\xd9\x99P-\x86\x13\xaa\xfa\xbb\xe3\xcf\xa0\xc4\xf1g\xaa\xad\x10\x91S_\x94\x16\xff\xb1\xd4H\xcd\xc0\x95\x034\x11\x89Dc`\x14\xf5\xe9\xc6I\xac\xe2PR\x844\xc6\xa1D\x08\xa6\x8fC\xf1\x11F\x1b?\x82u\xf1\xed\x84\xf7\x82w\xecq\x9d\xc6\xc4\x18\xe1AO\xd8\xb2\x99G\xe4\xc3\x9f\x04y3'\x838\x0d\xe8<\x9d\x9e\xb6\x9d\x9d\xa5@\x83\xcd_\xdazUU\x02\x06\x9d\x02J$`\xd0\x98\xa2\xb2\x06\xdf\xca\x9ao\xfbO\xfbXy\x80J\xd8\x1b\x0d\x0e\xb2,\x0d\x91|\x84Wy\x04^7v\x99\x9e\xaa\xcd\x80\x078\xe4\xe5R\xfa\x87[D\xcf\x84\xfb\xb2\xd3-\xea\x96\xd0\x8f\xd8\xe9\";=\xa2\x8f\x7fz\xf8\x98\xc1\xa63J\xf5q\xb2\xad*\xca\xd7\xe6\xa6>\xe6$\xed\xd27b\xa5\xdb\xe1#\xaf\xd2\xb3\xee\xbe\xe6\x83M\x87j*\xa4\x0c\x9d,\x81\xcc\xfb\xf1\x95~\\Z\x9bS\xd7F\xb3\xb4i\x1d\xbb\xe2P^\xe3R\xfd\xc2\xf2\xa5*c\xbc\xaeC\xa2f*\xeb\x93\x1a\xacU\xe3T\x0d\x96[\xc0\xc8\xeb2\xaa\xcb~\xf6\x06\xe3<\x89H\x8cN\xe5\x1f\xb2\x114Q\xb3\xa2\xa1\xeafZECK\x8f$e~qL~\xc3\xec\xb7\xa6\xcc\xa0\xdbF\x8d\xa8f\x9d\x9f1\x1c(\x881=\xbb\xcb\x93}\x85\xb3!\xee\xe4\x93\xa9$ \xc8\xb0\xad\x12\xd5Q\x84\x0cUT\xa5\xdeT\xb8\x8a\x9e\xa3\xcb\xa9BAy\xfe\xb3\x1f\xcb\xf4<\x9d\x04\x96\xef\xdb\x05\x10\xdf\xcb\xcf\x04\xf6\x99\xebu&\xbcJ\xcf\x0c\xc7\xc2\xed\xe9\x9f\xe2X`\x03\xb59\x19(B\xc8\xcf\x04\xe2Q|\xe8?C\xa6\x14\x1eR\xa63\xfd\xf1\xb8\xfa\xe1\xa2\x92\x91+\x1a\x87\x9d\x14\xd6\x94\x88o]#1ap\x9d\xbd\x1a}&H\xdbG\xcc?Q\x02\x13\n\xf0\xe0\xee\xfe\x9f#g \n\x9f\x98\x949\x1a\xc3\xa6O\xca\x15\x82z\x1fp\x91\xe6\xe0\xd2\xaf\xd1 \xaf$p^Bn\x8c\x13\xceR\xff\x16\xa31N\xf4\xfe\xd7\x10\xc07P|\x0d\xc1\x8d\x1b#\x88O\x82\xb7\xcd7O\x02\xf5\xc1B\xb7v\xc4O\xb2\xbe\xb2\x00ei\xa3\xc2 \xf0\xe3\x98k\x0d\xc8\x18N\xe8\xbboE\x11\x87\x18O\xe1\xc8Cs\x85\x1fG\xff\xae\xa5\x07c\x19\x07zE\x1e\xa1\xe3\xed{?\xbfG\xadBz\x865y^\x936\xef\xab\xfa\x1a\xf3$\xaai\x00\xd7X\xe2\xbe\xa3\xdfc\x7f.\xa2\x98PN\x03S-\n\xef%\xaf|\x0b)Z\x0dY E\xac\xce\x9c\xc07\xacVa\n7 \x82o\x0f\x99;n\xc2\xe2\xbbqs\xf39}\xcc\xd6JV]u\xcc4\x19=E\x17\xdd}\x1fC[u\x95\xb5\xcf\x98\x9c\xbf\x8a\x96\xab\x98\xce9\xaf[I$\xc1P\x1d ]\xc6\xff\xf5\xbb\xf7&\x0b\xfd\x92\\\xaf\xfe}\x02e\xdfV\x1f\x90\xc1vV%h\xe87\x14\xa9\x88\x0f\x15\xc3\xb4:.,0\x86\xc4\xc4\xb9\"\x9f\xeaj!&A\x1a\xaa\xca2\x8eQ/v%\xed\x89\xa1Nx\xc5yY57q\xd5^\x1dt]\x9a\x14Z\xd5M\xe71\x07r\xcc\x96i'\xcb\xf5\xc9\x01YYN\xda\xb4\xe4\xc8\xd1\xf5\xfa\x97\x15!qU\x04KG\xd0\xd5_i\xcc\x19\x96=\x80uD\xbf\xa0\xae{\xfa\x9er\x00\xc6M\xd4W\xc3\x99Tpr\xa7\xd7\xe6N\"\x1e9\xcf\xd2\xbc,Z\xc7S\x9f\xbd\x85\x06\xe7\x99\x903\xf8>N\xe7\xee y+[\x83\xf2\"\xc3\x91ST\xa7\xfc@\xc4\x8ad\xdfL\x83\x92\x94\x93\xa2\xcc\x89\xbf\xeeH\xeb\x1d\xf6'ZT\xf5v\xf7\x0e\x0f\xe1,J\xc2\xf4\xccK\xfcm\xb4\xf4\xcb4\xf7\xd6\xc5\xb1\xbf%\xb4\x0f#\xddC7\xefsV$.\x88\x82k\xa3\x87\x1e\xff\xda\x9bW\xcf8\xc61\x0e\xfe\xcd\xabgn\xae\x91\xe9C\x9e\x0c\xa4\x8b\xa6\xbeL\xef\x1dyX/W\xb8\xb6\xc1!8I\x9aP|\x8e\xbcUN(G\x9c\xd2\xdf\x05)\xbf+\xcb<\x9aoJ\xe2V\x9b\xcfa\xb2N\xa3\x1cq\xcd\x00\xd13\xb3\xfb\x1ec$\x9cq\x15\xd3;\x1a\xd7\xdd\x9d\xa7\xe1\x05\xe5\xd9H\x12>ZEq\xe8F\xc8\xa6\x05t\xeb\xba=\xc0\x9c\xac\xd3-\xa9\x01\x1b\x93\x95\x93m\xfa\xae1Y\xa9\xea\xe8}/E\xc9\xeb L\xc9\x95\xbfR1+R\x89Y\xbeJ\xcc\xda\xa8\xc4\xacB%f\xc5\xfcAOb\nx\xca\xc7\xbe\x1cUKZYU\x12B\x98>+\xe0?\x81`\x95\x8f\xc1\x97\x0bV\xd1u\x14\xacr.Xml\x05\xabt\xa8`\x95{\"x\\\x84\xe1\xfc\xc2B\x04\xad\x84\x0e\xde\xd5\\T\x88\xac\xc3\x85\xbc\xa0\xf5QT\xa8\xba'\x02\x10M\x90\xd5k\xcc\xed\xe2-\xe5\x9f{\xad\xbcg]\x14\xf1T\x8f\x18\xfb\xf0\xfa\"#\xac\xd7V\xdd\xace#\xca~\xe4i\\|\x17\x04$+\x7f@\xf5\xaf\x89\x9f30})\xe6v2\xb0\x8f\x11\xba\xedY\xa5@\xf4\x11To\xa4\xdd \x8c\xceO\xa6\xac\x08\xbad\xea4EZ9\xd1\xd3\xe5\xb4d\xde{j\x00\xe1>\xbb\x91BH\xaa\x17\xbd\x1f3\xabs\xafp4\xdd\xad\x96\x82X!\x15\xc4|;A\xacX\xa5\x9b8\xacX\"ka\xc7\xb4/\x1a>M\xdd\xc0@\xe4NH\xff\xb6(\xbf\xcf\xde\xaab\xdb8x\xfdw\x1bN\x84\xd6q\xb0\xeaO9\x14n\xc6\x0e(\xbb\xd7\x86\x97\x07\xbc\xf1\x17\x15\x0f;-\xfa\xe5J4D\x7f\xb6\x9f2D\xe1\xcf\xd9\x1f}\xdch/\xffG\x92\x06\xf5$\xc1F^d\x1e\x19\xd5z\xe9)C\xd2\xc3\x03=yH,\xbdN65\xac!\xa5,\xf3\xd3\xb0\xcc\x13\x8bl\x841\xefm\xd2\xc6-5p\xc8\xdc\\\x06\xa6\x0d]U=\xd6G\xd5l\xf9\x11Zi\xed\x8e1\x89\xdf\xa34$#7\xd5x>\xac\xb1\x98\x8f\x13\xd4d\xd3T\xd1\xc6w\x9d8\xda\x12\xb1\x86\xa6\xca6~\x1d\xbbj\n\"\x91m\xf5\xaf\xbe\x92\xdd\x16Q\xa4\xb27f\xb5\x84\xf7\xb2\xf5D\xdd\xf8)\x1cB\xd1\xac\xf6\xc7\xa6rIJv\x82>b\xe7)\x95p\xc5\xb0\xe9\xacJ\xcd6\xe229\xee\x0c\xd1+T\x1b\xcc\x98\xd9\xe0J\x9a\xb3q\x01\x10\x971O\x16w\x05x\xd5\x88_n\xcf\xb5)q]\xec\xcfI]3\xc4\xe4\x08\xd5i\x0e8b\xa3\xcc\xad\xcb\xa6\xa5\xad\x16\xc3\x89\xab&(L\xb0\x97\\1\xa2\xe065\xc4\xa6\xde\x7f\xc5\x0c\xe6\x1a\xc0\xc6:\x89t\x17\xfc\xe5 \x8eQ\xbeJ#]\xc6\xabA\xc8Q\xe3b\x94\xe8\x92\"Df\xa5\x9a~E\xb5\xd5^\xea`i\xeb|\x94\x1a^\xae\x99y@\x93\x03\xaa\x93y@CP\x18\xf7\xd8a\x11\xcc\xbcd\x8fk\xd0\x1c'\x8a0}U\xfe\xa5\xe1\xdb\xd4B\xc9(\\k\x86b\x0e{o0=i\xbb\xe8\xa8\xc1\xf2\x1d\xba\xb4+\x8dS\xb8\xe1\x88K\xed\x8eS\xa1\xf0\x84\xde\xe39wU\xcd;\xf4 \xd7&\x03\xbc\xa2~\xd8\x04\xbb9\x8f\x1b@]j\xfe\xa1;\x18G\xc9;\xcd<=\xc3\xc7un\x07\xdd\x8c\xb5<\x9bR\xa5gS\xa9b\xa5\x81\xb3\xd3I\xdf\xc3\xa9T{8\x89\x0bYg\xa5\xa7\x93\xb8\xb0|\xc9\xc9\xd4\x00\x15\x027\x18F\xed\x0c\xcepx\x08)<\xac\xf1\xfc\x94'#A'_G\xce\xb8\x80\x99y\xb9\xd0\xad$\x08a\xc5P\x96\xb8\x8e:[\xb1\x1c':6\x15\xd0\x1d\xf8\xb1\xd0\xa6mQ\xafkh`\x91h#\x13\xa1\x8du\x1aZ\x8b\x90iH\x8cC\xaaO%M8/\x0c:I\x803\x07]u\xce\x8c\xa2\xc6\xe1\xa1.m30\xbe\xa4\xabK\x9aa\xd9\x0f\xa5\xaa\xc9\xdc\x15\x0e\xae\xe5\x87\xc0\xfeT\x85\xfeI\xad\x84U\x14\x85n\x15\x83\xde!\xa1K\x8d\xe7;$u\xe9'C\xeaGX\xd6\x99\x83\x98\x85\x98U\x8a\x1a\xb9'-\xfb\xcf\xaf\x85\xa4\x16\xa7\xea\xa0\xdf\x9b\xd6\x03\xf8\x1c2\xb9\x84*w\xacP\xe5\x8e\x15\xaa\xdc\xb1B\x95;V\xa8r\xc7\n\xa5\xe6\x8b\x98?\x91Z\x10\xdcP\xd8\n\xc2\xcaV\x80\xbf\xa6\xb7z\x05\xa4\x17R\x8b\x03\xaa\x07Te\xa5\xc3\x8fo\\X\xd9\x1a\x17\x88\xc4\xb6 C<\xb3hkjo);O)\x0e\x8d}\x914\xc1'+\xf2N%$n\x90\xba<2)\xb9\x12\xe6\xeb\xd3oF\xfd\ns%\x92\xd1m\xf9\x99\x8b*\xec\xe3\xd2/uJ\xeb\xbcO\xb2\xbbK/\xae\xf7h\xd82\n\xb4\x9a\x11\xc8\xcf\x9c\\\xd1Z\xef6\xfa{Q6\x84\xf4\xe8\xa5\xb8\xa4\xc3q\xfa\xac\x1d\xfd\x94\x02\xbf\xe1\n\xdd\x94\xaeF\xb3\xca\x08-Z\xe0RK\x1d*3\x9aP\xfeB\x0d\xc3\xac%\xe6\x02d\xccbb\xe1\x9a\x13\"\xa0Y\xaf\xb8B8\x9d\x12t\x8b\x10v\x9a\xdau\x0dk\xd0\xd4.\xab\xfeYhj/\xf8\x0cVx\xa4\x06\x9dW\xa0\xf6\xf6\xb1S8\x84\x95\x17%\x0b\x92c\xaeS\x8d\"\xe1\x0c\x0ea\xc9\xc5!5\xd4\x11\x1c\x82\xcf8u&\xe2h\x93\xfa\x9d\xd7\xd0\xe4\xdc_g\xb1>\x07\xe0q\x0d\xced%\x0d\xec#8\x84\xadU'\xdeqH\xe1P\xc5\xe5Q%\xfcw\x0c~\x9d\x86$>b\xbd\xd6\x81\xbf`\xe06%\x80^2\xd0*.\xd3TL\xe75\x83\xb7Tp?\x17\x9b\x16i\x97'\xa1Q\xf4\xc8\xbaPP\xf1\x05\xb8g\xee\xc8$/>\x15+\x84\xc5\xb2x\xc7\x9c1<\x7f;\xe6\x8a\xe7\xe7~6r\x7f\x7f\xdfe3\xba\xd7\xafp\x08O\xb9\xc4\x87\x88\xe9\xf4>\xa0\x16\xf1\xeaP?4M=ma\x98#\x94\xe0\x99W`m\xa0hq1r\xbb0T\xccf@KR\x1e\xe3M\xb6AF\xee\xaf\"\xec\xd70\x9b&A2J\x82x\x13\x92W\xc4\x0f_$\xf1E\x8b\xcb\xec^\xf4\xd0\xa3\xc7\xcd\xaf\xf0\x10\xcaJy\x95\xf0;\xa7U\x9fj\xc5V\xce\x9f\xb9\x8d\xcc\x89\xcd\x151\xf5]L\xfb[\xfaI\x85\xe6\x8d9T\xd1^\x9c\xba\xbe\xe8\x01k\xda\xf7V~Q\xad\x1d\x9d\xf2\x90g\xfb\xacnQ\xb9\x14\x07\x95T\x0b\xd2\x9b\xebd\x0c\xcfu\xf3(\x99C\xcdi\xc4\x80\x7f\xc9\xa3\x92hg\xfc\xbd\xde\xfcq\x8e\xbe\xcc\x94v\x9d[\x04\x8a\x89K\xb0\xc0\x94\x1d\xa2l/+&\xf5\xd7\xbf\xe6d\xe1\x08\x97.\xda\xae\x8a\xebQ\xe0;\xddu?Y8\xf05/a\xdcF\x0bTeo\x1a\x16\xff\xd6\xbc\x9a\xb1p\x0d3\xbe&\x16\xaey\xe5\xda\xb8\xb8\xe6\x95\xf2\x1893\xa4\xe0\xd0[{<5%V\xba\xa4YK\\\xc8t\xc9\xd9IqiMKw*\xcd]\xaeQ\xf2)\xe3\xfe\x9aW\xdb\xa4\xc2h\x9by\xf68[(\x8f\x19\x17\x97,v\xbc~V+-(J_\xd6^b\x1c\xeb\xf0q\n1A3\x06A\x05\xe4\x1b\x92\xa2\xf7\xf9\x18\xde\xed\x98\xdc`\x07M>8p\x03\xdc\x0ds#\xd7l,'\xf4K\x9f\xb9\x85+\x03\xff\xafN\xdd>D\xd7\x1f]\xa1\x9a\x7f\xb0n\x7f\xe7}-[\x8bn\xab\xa7\xa7z\x93\xa1\xaa\xf1\x17\xba\x86E\xd5\x1f_\x94)l\xd8&T\xa7\xc4\x18\xce\xcc\xbb\xcdj\xacL\x9dWQ\xf3\xe6\xd0\x1b6Y\xd3\xcet\x84@2\xf1Q\"\x11\xd6\xa8\x19\xcc5[o\xe84\xbe\xb60q\x1b8\x1e\xf5\x94\xb4\xec\xd7|-\x04#E9\x9b\xee-\xef\x1da\xc7(\x88\xc4\xd5\xc7\xe4\xb7^\xd2\xb9\xe6\xd51\xb1\xcb\xf4>\x8a\xf5\x1e\xc3\\\x9b\x83q\xed\xc7\xb5\x83\x81\xc3\x9d=\n\xd0E\xa1 \xe1\xa8^ar\xa43\x1a\x83\x03l\xe9\xbc\xda\x06Uq\x9b?i:\xf1\x9d\x16\xc5+K\x89u\x9a}MV\xfc\xa6Z^S{\xb1c\xa2\xd0\xd5^D>T\x88\x02L\xb5\xfd\"\x0fIN\xc2\x91\x9bhV\x94\x1fB3\xf8I\xb1p\xd5\xd4\x1di\xa6\xee\x91n\xea\xb8h;\x83#\xeb\x99\xd3\xf7e4\xae\x04\xfc+\xb5w\x0e0r\x1e\xc3C8\xf6\xcaT\xc6\x85v\xa2W\xba\x97\xe1\xc0}i\"T\xc8\xb5i\x14<\xf4JpP\x06 :B\xad\xfe\x11,\x17\x064\xa4p\xa4\xad\x87Yo\xdf\x9fR\xe0\xaa\x92j\x95{\x1f\xbc\x94\x05i\xa5\xb7 \xd5fCF \x85u\xe8\xf7\xf7]s\x89\xcc\x9a\xd7TL6T\xffm\x9b\xd0\xea\xbf\xf8\xcdke\x13Z)sG\xacTQ%+UT\xc9J\x15U\xb2RE\x95\xacTQ%+\xa5Mh%lB+\x8c\xc8\xbf-\xb5\x04\xb1g\xbd/W\xe6\xa0\xf6\xedP\xf4]\x91no\xf5\xf1\x0dE[[C\xd1\x97(\x94\x8e\xd1\xca\x14\x85\xa2\xb7\x88d~^\x90\x90oq\x85X\x85\x91\"\x1bt\xdd\x7f\xd9\x04\x1fd\xf2\x12!)\x9c\x1bSk3\x99\xff|\xa9\x16b)\x10S\x91@\x94\x14\xa5\x9f\x04$]\x00\x0b<4\xebC\x12\x1e,\xf9$\x8aQ=\xa52\x8f\x89+\xf1R\x16\xc6g\x91\xc3\xa0y\xe56\xe6\xb5\xe6\xd5] \xca\x0cobydn\xf3R\x9cD\xd5\xe31~\xca\x0f\xbf+^\x93\xf3\xd2\xd5L,\xd7\x1bZ\xf7\xbc\xd3\xe3\x92\xf2\x07\xac\xaa\xbbN\x03!C\xafO\x1b\xa4r\x95\xd9\x02PN\x90\xec\x15\xd7\xea\x88W\x07a\xec\x942@\xb9)\x95\xbd$b\x7f^\xa2\xabWc\xd5\xb4\xb4d\xd6\xc1g\x16YB\xad\xccu\xac^\xc9&\x97$T\x12\x17\xabR\xc2\xf9|5\x98_\x9b;Xz\x8d\x87\xf0\xfb{\xd0\xba\x0fo\x06d>-\xdav\xa3\xd6nT\xbf\x85\xf5A\x06X\xd5\xe8\xc1\\\xfb\xf2\xa1\xa6\x8b\x92\xcf\xc7~I\xb0\xbe\xe8\xebhMt\"\xf4\xba\x9a\x04\x8d4$\xc9\xf5\xd5\xbc(\xc5\xa7\xcb\x92\x8aL\x0d7\xffo\xc3\x87\xe9_\xad \xf6\x9b\x91W\x92\xa2t\x93\x11\x05\xf6O\x1c>#\x93\xc7Q\x91\xa5\x05f\xe6w\xde\xd2\xe3\xe3\xa6_\x96~\xb0\xa2\x07\xb5xI\x05.\xbe%4,\xa1\xdd\xb7\xa4\xe0\xbd~5\xb4G\xec[\xf4h\x82\xd7\xb9\x9f\x14\x0b\x92\xcb\xba\xd6|\xa3\xd75\xeb\xcfI\xdf\xd0(\x8f\xe9*8\xf4\x98u Jx\x9c\xb9\xe9$\xa4[\xf9\xa2\xca\xb1Q\x92\xf3\xf2\xe6\xaa\\\xc7\x16\xban\x0c\xce\xe9\x1e\xf0\xc2\xcaV%;(\xa5\xc9\x0ed\x17K\x80pa\x84\xed\xca?\xb2\xebT\x9f\x94`n\xf1\x8938\x84\x93\x0b\xca\xd0\x15\x9byQ\xe6n\xea\xc5~Q>MBr\xfeb\xe1:7\x9d\x11\xdc\x80\xe9h\x0c\xa7o\xbd_\xd3(q\x9d\x99n\x9b\x8a\x0b\xed\xfc*D\xd5l\x08=\x13\xd4\xc9\xfdpdZv\xe0K\x7f^\x99{\xc8y\x99\xfbA\xf9\x84\xe7oz\x92\xa7k\xde\x8fF7\x98W\xc4\xc8=2\x18\x84\xe8\x85!<\xb43\xcc\xeaG\xe7\xf3\xdc\xc0 i\x9fR\x1aTy]\xd6\x99+\xe8\xc7%\xb7yB\x8b\x17\xf9\x8b\x8c$\x1c3/eIq|\xa3\xc6\x16\xaa\xfa\xec\x06\x07\\\xd8\xa9\x06\x8a\xb88We3hw>\x863\xfd\xa4\x83q\xe2\x9bYf`\x11 #\xff\xb5\x9aM\x91\xcbc\x06g\x83\xc7\xa2|\x81\xb3\xdb\x14\xf1\x94\xe3`)u\xb8\xce\xa8\xfa2\xe7< $%\x96\xd6\x86\xf9\xa6\x84\x8bt\x93\xc3\xd7r/\xda\x99f\x96k\xda\xe7\x06'\x84\xa2\x81\xdbN~\xc8x\xd7\x9b\x14\xe8_7\xb3\xd8\x8f\x92\x9b\x8d\xd9\xff\xc8\x036\xf0k\xc2\x88\xa7\x181\xcc\xe0\xe6\xff\x8d\xd6\xfe\x92\xfc\xebf\x0b\x87\x12\x8f\xbb\xfd\x14\xaeSl\x97\x8e\xd6\xb0\xd1\xa4\xf9\x0e8\xa8Fv\xc0\xd1+\xdb\xd7K\xed!\x80\xf9\x9ed\x9a\xcb\xe6\xb5\xf6\xcf\x7f\x89\xc2r5\x03g\xba\xbf\xff\xff\x93c\" \xe5W7\x94\x073\x1d\xbb\xa8\xd0\xc8\xf0\xb9\xf37a\x94v\xe6\xce\xea\xb8P\x9f\x8d\xf4\x8bzC\x117G\xaa\x1d\xb1tA\xd1h\x1c\xd7O=\x9d\x11]\xado\x96\xacL\xb5\x89\xe8\xc48\xcc\x7f\x88n\x1f\x04O\x17P~\xfc\xbdQ\x9e\xcbtE\xe22o\x0d\xee\xe4\xf5-\xec\xc3C(lw\x80z\xf9\xad\xcd\x7f\x91:\x9c\xf1M\x92\x93 ]&\xd1\xbfIX\x99\x89p\x8e\xbf\x16\x81A\x94\x89\x10A\xee~\x81\xd4\xdd\xd3E\x8a~\xca\xd9/4\xa4\xf8\xd3M\xe4\x06K\x91@\x99\x8a)\xad\x8d\xf7Z\xb7\xa5\xe5\xa5q\xa4\xe1\xc5Vg,\xc0\xb0Tz\x9e*]\xab\xacm\x916UH\x98Yu'\xcb`\x95\xef\xd0}p\xf7\x8e\xc4\x88\xa7\xd7}\xd6\xbe\x9eY\x1c\x95\xeeM\xf7\x9b\x7f\xdd|x\xf2\x7f\xbf}{\xe3\xdb\xd1\xcd\xe5\xc8[DqIr\x0b\x0fK\xfe!\xc7\xa9\xb2\x0dEkY\"\xdc\x8e\xfa\xba\xdd\xdf\xc8\xb6\xbf7\xbf\xf9\xd7\xcd\x1b\xac\x9b\x9c\x11 \xda\x0f\xfb\xf6\x1f\xc6\xaf\xfe\xeb\xa6\xddw7\xb6\xdf\xb5\x9e@\xec\xc0\x9er\\\x80\xc8E0\xef\xf0^$~\xf8\xbdn\xd6\xf8!\xcf\x9d\xd9\xed\x850JuM|\xf0-Li\x13\x0d]Gm\xcb\x9b\xbe\x85\x87\xed?g\xf0\xbb\xe4\xdcg\xb1[\x82\x83\xed?G\xbd\xad'a\x89\xfb\xa01\x1c\xca\xf4\xa6\x01\x1c\xc2IGeSg\xb2\xa5\x7fu\xe2\xac\xe9x\x17c4\x07\xbb\x0b8\x042\x86\xd4]\xd8\xb8\x13\xf3uR)\xeau!]\xec\x14wK\xd6^\xe4\x96\x94uq\x1e\xc5i\x11%\xcb\xd7\xfe\xd2\x81\x19l\xf8\xdd\x17\x19I\xea\xbb>\xbf{L\xe2E\x1b\xdeyM\xe4\xb9\xbe\xe5\x01\x81\xed\xa3\xf7\xfdH\xe2\xba2\x86TeR\x8eLI\xeaX\xfdq\xa4\xe8\xbd\xe7\xad\x81R\x1e\xdf\xa7\x88\x15O&\xf2\x9e\xd2\xad\x95\xbb\xc9\x18b\x85\x92\x0fK\x89\xc3\x0d\x88\xfa\xef\xa3b\xb69\x83us7n\x8c\xa1\xd0\xd9Y(J\xa4'%L@\xe7\xbe\x1dVP\x07\nM\xa1|\xb8l\xb9\xf0\xef\x0c\xe7 ov\xbb\x1aV\x8f\x109\x1d\xac\x9c\x057 ds\x0f7 \xab~ET\xe8\xc4\x80\x05\xec\xcd\x18\xb0\xeb\xc6\xf0kh\xd0\xa6\x0eN\xb4\xc7\xc3\x81\x02o\x91\xe6G~\xb0\xb2\xdb\x1e\xd9 yK\xf7_\xf7\xe4\xa42jfw\xaa\xf0/\xed\xedu\xfc%F\\\xfb\xfb\xaf\xa6o\xe9%\x12\xb6\xde\xfc\xfb^\xdd\xc0\xdf!'\x19\xf1\xd1vB\x99\xbaoVe\x99\x15\xb3\x9b7\x97Q\xb9\xda\xcc\xbd ]\xdf\xfc5M\x8a`\x15G\xc9;\x92\x977[\xf0\xdf6\xbe\xd4\xfc\xe8\xa34\xbb\xc8\xa3\xe5\xaa\x047\x18\xc1\xc1\xfe\xf4\xf6\xe4`\x7fzg\x0c?\xa6 \x1cW\x1f\xf3\x9a\xef<\x8b\x02\x92\x14$\x84M\x12\x92\x1c\xca\x15\x81\xe7O_\x8b\xdbM\xd0\x9b\xd5od\x06X\xd4c3\xb3\x842\x7frw\xdeq\xe3\x08Ab\xaf\x12$\xc8\x08\xcaU\x9e\x9e\xa1\x9d\xe1\xf5EF\x8e\xf2<\xcd]\x87\x9cgL\xdd\xe6\x03\x7fI\x92\"y\x8a(]\x8e*^\xa3\x0fr\xd0\x05\x81\x1b]0\xe1\xa9@\xc4\xc1\xf4w(\xfb\x1f\xca\x19\xf7A\xa9~\xc3\xce\x98\x8fX\x16\xf4\xfe\xc4@S\x9d\x97Vg\xde!\xc5\x1b\xde\x97\xca\x1e\xb1O\xb1\xa9\xfd*z\xc7|\x8d\xa5\x00\xaa\x97\xd1\x0d\xe3[\x98~=\xa2''\x0b]qS\xb8q\x88F\xf8\x12\xbe\xfd\xf6\x10\xa6c:\xc4\xc3\xee\x18E\x8b\xf4P\xe2o\xb4\x1a\x1f\x86\xed5cxw:2\xe1\x82\xc2\xbb)w\xc9\xc8+\xd3g\xe9\x99\xa8D;\xac\x0f\x1f\xdd\x99\xed3,\xfe\xba\xa82\x1b\xd0_\xf7F\x7f\x8e\x82\xaf\xdb/\x05f\xd4\x05f\x84\x17\xfd\x80h8\x81\xe0\xb9\xaa\x8a\xf6\xa8\xe2\xa8\x8e\xceKM1\xef\xb4[\xb2;U\x97\xecN?\xbeZ\x88 t\x9d\xb1\x98-\x8b\xe6z\xddReh>t\xb7Jy\xa7\xd3Sr^\x92\xa4\xe8\x1d\xf6\xef\x99\xe7\xd4\x0c\x9c1\xf0\xa3)1\xd7\xda\x8e\xae\x1bB=e\x9ecG\xeb\xac\xbc0\x94\x89\xef\xc5\xd4\x8a*\xf1\x98S\xb5~'\x12\xfa\xc9\x88\xeb'\xafU\xc5x\xd5\xc8m\xf0\x10\xb1B\x85\x88Q\xc1\xbf(9\xea\x98\xf9S}\x02\xfb\xfc\x0b\x8f\xa3\x02)\x9d\x14\xa1\xf9\xb9\x8f4\x0f{\x8d\xda-\xf4\xf6\xbb\x0c\xaew\xf4\xa9-\xd4\xa7\xad\x9c\"\x0e\x9d\x96\xe9r\xa9\x11>B\xdesY\xfa\xe7\x9e\xeb\x86\xba\xbfQ\x92mJi#\xcc\x04\xee\x04+\x12\xbc\x9b\xa7\xe7\x12MY\xa3\x0b\xfd\x87\xf8\x1e\x1e!\xa8t\x90(tj^\xc9\xac\x9c\x8c\\Q\xc1\xda\xe3\x1f6\x1e\xb7\xa318\xc7$ \x01'\x95mL\xa7\xe7#\xf4Y\x95\xe8\xff\xa49\xa1\xe5&\x93Pj2Q\x94\x93T\xa4\x88\xbeu\xd0\xcb\x0b\xf0%\x17\xb4\xdc\xb0ag\xd4\xb0\xcd\x05-v\xe0.f\x82\xa1\xeeG_}\xd5\xfa[-F$&\x1bD\xc3\x02\x90TC\x18\xb9\x89'$\xc618\xcc9\x03\xad\xcb\x88\x13\xcc\xbaLD^\xc2\x84\xd5PB\x91\xbfOG\x9a\x96\x14\xebCK\\\xdbai\xb2\xad\x94\xc8y\xad\xc2W\x03\xa5\xd6\x9af\x1fS\x1aX\xc9\xb4\x9b\x1a\x94\x8a\xc4\xda\x05IxT6\xce\x15.\x04N\x1e\xe5\xe4\xdct\x0c\xfe\x186*S\x10\xe6\xf3\xe6\xd5*X\xcdA\x8b\x8c\x05\xc2\x00c\x9ci\xc6KX\xea\xf6\x13\x10u M\xd3\xc8\xca\xb5WHg\\\x18\xb5r\"\x19C\xae\x98\xdbF\xf4\"\x96\xf0`k!\x0e\xb3\xaf\xbe\x02\x07\xb5Y\xb8\xdf\xd2z\xa1t\xfa$\xc1\x9a\xe9\xa2\x96\x01\xcf\xc3\xa88>\xf3\x97K\x92\x1f\xa0N\xd6\x87\xaa\x8d\xf3I\x9d\xf9\xf6\x8f?\xd8]L\xcf\xcbi\x11\x8f\xed\xad\xefW w\xabT\x8aj\x88\xc67f\xd8\x0b\x9e=\xea\xab\xaf\xc0m\xf4A\xd1\x83\xddZ\xaa+`\xef \x07\xb0\x1e}tY8h\xb2Y\xcfI\xfe\x9a\xeb\xc7F\xae\xaf\x88\x93\xeb{q\xc90\xdd\x1d}\x9c|\xedU\x12\x86_\xa28~E\x02\x12m\x91;\x91\xd5\xdc\xb7\xce\xc5Ps\xea\x9fxw\x99R\x88G\x97\xda\x83Hd\xa2\x02 \x1b\xee\x84\x1cf*3\x9a\xcd\xeeJ\xab\xed\xe4F\xad|\xd4#q\xa8\x07,%\xf5h\xc4Q=\xd9\xac\x91w\xf5\x81\xe5b\x88:\xf7u\xad \x17\xcd\xc6{53lJoP\x18\x86\xd2\xd84\x1b\x8c\x03\xa1\xff\x9d\x893#'\xbfm\xa2\x9c\x84\x8cT\xe1\xae\xf2\xd9\x19L\xf72\xba\x89x\x8b(/J\xb7\xb3\x01\xb1\x90e\xc1?+jZ\xdam\xc7bTe\xd1\xee\xee\xb4\xfe\x86lo<\x99\x18\xf4\x01\xbc\x05\xec\xce+\xc3q\x9fX\xee\x8f|@V\x8e\xb4\x865\x98\xcb#.?sm\xaf\x9e\xd7 Z{\xfe\xa6%\xaa\x0b\x95\xb7\x1e#\xad\xe9M`Mo\xc2\xea\xb3\xe6\n\x0f\x85\x91\xde`\x95\x07cj\x11\xafX\xa5gGB\xdde(\xef\xc0\xa0\x1f\xa5\xebu\x9a\xd8\xbcs\x81^\xd9\xce\x8fE\x9a\xb0\xcc\xe7O\xd2|m*)\x9b\xbb\xcc\x98\xfc=\x0b\xaaQ\xc2\x9e\n\xc7\n\xc6n\xa8\x01\xcf\xe0\xb0\xc9\xa2\x9c\x9a\x0b\x98\xceM\xf6\xac\xb6\xc1\xc9`\x15Y$Zk6\xd4\xf6#\x83\x95)\xa8\xec3\x85W\x15S\x10\xd8\xea\x06\x06\xbbP\xd0\xf4\x8f\xa2\x9fh\xa4\xf3\xc1{\xf4\x135\xcd$E\xd9\xc8\\hot\x92\x91I\xbbwk\xf3\x93\xa1\xf4X\xc3\xc2\xa3\xc9\x05\x04\x83\x8b\xb65\x8dL\x81\x12R\x97\xe1\xe4\x88\xe1\xafm\x0d\x8ds\x06nSC\xe3\xb8\xb13\xb8\"\xddT&\xa4 \xde\x94!MEC\n-\x93\x12P\x89^\xfd\x81\xef\xea]\xb9H\xf3\xb5\xaf\xed\xe5\x0b8\x04\xf4\x81^!7Rv\x18\x11\xed\x86x \x87\xf0\x82\xbdP\x1a\x10\xf45%\x00\xb47\x8f\xfd\xd2wL5\xf8\x9eS\xe8'\x15t\x94\xd4\xa1\xe5\xea\x97\x9e\xd6\xc3\xae\x19\x0e5\xf8\xaf\xa2\xf3(\x0cD%Y\x17T\x16\xc0\x81t\xab\xc95\xaf\x9f\xe0\x10\xde\xc1Cx\xd7\xe5\xa1\x1cM$\xe7+8\xc4\xc0GW\xd4\xa2\xe8\x12\xf0\x91[Vy{\x95_y\x0c\x87\xb0n~e\xe0\xfb\xcf,\x12Y\xbd\xb1\x80\xf9\xcd\x02\xe6 \x1c\xc2\xdeT\xab)h0z\xcc\xe9\xfeY\x8dOl=:\xec\xe03:v\xda\xc1gM\xbew\x8c\xfd\xe1\xb7\x84(\x87\x86\xe37\xf5\xf7\x04h\xe3koh\x9bo\xea\xf0e\xda\x03\xec\xf5~\x1b\x8e\xf5\xed\xb7\xfa[U\x1b\xe3f\xccB\xd9\x15G\xb1\x02FWL\xd6z\xa4\xe8\xf3\xf6\xb3\xdc\xfbH\x17&\xa8\xb0\x99\xd9\xba$4\xdf\x8c\x12\xa7\xe5\xde }\xe9\ns\xf8\x0fq&\xba\nC\xffSx\xd82#\xd2\x06\xa1\xa2\x070\xeb=T\xf6\xa6=\xb9\xf8au\xc6\x00VF]\xddC\xabT\x0dA\x1ac\xbe\x10\xdaS\xf5\xd9\xa7\xea\xaf\xf3?\xff\xef\xefN\xc3\x8f\xee*f\xb39Y\x9a:\xe9cx9\x86_Q\x0fu\xe2\xc0\x0d\xf8\x15n\x80\xf3\xd6\x19\xc3w\x18\xc2\xb7\xf3\xac\xb5z\x92\xa7\xd9\x84\x9fg\xca)p\xffJ\x1b\x1d\x833\xd2o\xb5\x1d\xa7 $YN\x02\xbfT\xad\xcf\xfbq}\x96\xd6\xdb\xbf\xf1\x16\xc6\x846\xfe\xfep\xab\x15i\x9c\xe4\\g\xdcb\xdbq\xba\xc6\xb0\xa4}~%\x94\xe3\xaf\xae4G\xfa\xb1\x89\x9dgnW\x14o&\x14\x83\x0c\xeeR\xe7\xff\xb0H\xa9~\xfe\xb3\x1f\xeb\xcb\xb0\xc8g\xa8N\xa0\xbf\xa63\xf2X\xcc\xc8\xe3\xff\xf8\x19\xb9\xc2\x1a+;8wV\xdb\xa9\xe1\xe2\xa9!\xca\xe7Zz\xcc\xeb\x9f\xc8\xbei\xc2\x8a\xbd3\xd4\x0b\xc3\x1f\x7f\xc0\xde\x13\xb3$\xab\xed\x87\xca\xf9\x85\xb2+\xea\xb5\x14\xbdw\xbe\x89\xbe\xfdn\xebG1\xa6\xe2@V\xb4\xf8\xe6f\xf4-=\xe6\xe0\x06\xbc\xb1\x88\x8eo^\xc2|\xaa\xc1\x8f\xda7\x8f\x07\xf5\x8eU\xc9\xcd\xde\x8fZ3\xd5\xe0\x94~\xfb0s&\xd82\xbbi\xe3*A6i\x8d9\xfbM9\x98\xd7t,{\xcf\xb5'Z+\xcb\x13\xc6\xdc\xce\x0cY\xed*)\x07\xcb\xebP\x94\x8a\xcc\xd3\xa3\xad$o\xd0uX\xebM\xb8N\xf3'5\x84`\xabf\xf0T\x0d\xd4\xd8Z\xf2\xedVK\x9d\x8c\xd5\xa2\x14\x0f&\xd0p\xb9m\x83\xcfXx\xbd%\xef\xbb\xabV\x84\xd0\xc5+fB\xccc\x7f\xea\x1a\x12\xf5\\^(\x11\x087\xc3\x0b\x0d\xc5:\xd2-\xab\xf5\xba\xd5\x0e\x96\xdd\xba\x88\x06\xa4\xe0\x0e\xd9\x9a\xacVvZ\x1f{\x8d\x8f\x98\xb3\x8e\xd6A\xb3*\xa2\xf6\x8d<\x89\xa5\x84H\xefX\x01G\x816M\x1d\x8en\x9a\x84K\xda\xac\xa9\xc9\xa9\xec\xe0\xc7\xa4,\xa3d\xf9$\xcd\xdd\xa0'g4\x183\xcdD\xd4>k3\xf8\x89\xb96PY\xf5'\xe4U\xd4\xaf %\xa7~\xf6\xae\xca\x89\xf9\xfa\x97R T\xaeT\x81\xca\x95*P\xb9R\x05*W\xaa`\x98+U\xe0\x16\x8d\x8e\x06jO\xe2\xe0\xe3\xfb?-l\xfd\x9f\xbe\x04\x98\x0b@\xfb\x00\xf38\n\xde}j\x87\x17k?$R[?4goevS\xc30\xcb\xe0\x1aU\xferma\xe2m\xfd8\xe2\x85\x1e\xfcu\xe1\x9e\xa4c\xf0\x91\x02UO\xbe'\x8b4'\xfcp\x12\x00\xa8\xb7\xe3\xb3\xe4\xa5 \x7f\xca|::7\xdd\xd1\x18\x12\x8f\xf0?4\xc7\x82\x18\xb4\xf6\x04\xce\xf0\xf4\xd5\x9c\xa3kn\xe1\xe8\xfb\xec\x02\x12*\x837\xda\xcb<\x0d7\xc1\xb0\xb8\xfe\xca\xdb\x8f\x8d\\\x92r\x80\x7f\x94\x19\xc9O\x04 \xae^\xf5\x1a\xeb\xf8\xdb?i,\xbf)\xf6y\xce\xa2\xabme\x93y\x99\x00G)\x10\xe1G\xfc\xd8f\xa9\xa6\xae\xdb\xb1\x8d\x19X\xee\xab\xb2\xc6H+\xa0I\xd3\xc9\xf8\xaat2\x1bU:\x99B\x95N&\xe6\x0f\xe4\x15\xd0Z\xb9c\xaeY\xc6\x98\xfeG\x84\x1e\xfa/\x0f\x1e<\x90 \xe9\"M\xcac\xa6\xcfv\xa2\xd2\x8f\xa3\xa0\x1b\xa2\xd3\xfa34\xd2'\x03\xe3\x00m\x1a!)\x83\xd6\xab\xbb\xa4\xf6\x93\xee\x94\x1fc\xc72\x03\xaf\x18\x02#\xff\xdb\xe9\xd1\x8e\xa5\x9b\xc0L\xb9`\x00\xf5\x82\x81\xfeEP\xb1\x08\xc62@\xc0\x19\x04:\xac\xb6\x17\xd1\xc8u\xc4\xd6V\xf9\x05C#\x94\x06\x9ae\xe1wVyC\x87\xd0\xf2\xfe\xeb\xe39\x01\xf46&C>\x06\x90\xb7yz\xaaI\xca\x00\x9c>\xff\xc0\xcb\xa9\xea\xe3\xe4\x8dI\x06@\xde\x85\xdd\x86;$\xd3\xc0\xd0.M\xf2\xf4l\xd7^\xed\xd2\\\x90\xc6\xfa\x05\xb8l\x92\x02\xd8\xb1\xddV6\x82\x8f\xdf<\xf3\x1a\x1a\x90\x05\xa1\xf4HR\xe6\x17\xb2\x12\xb9&\xdd\xb1\xf0\x01\xee\xc8?d\x0c\x07\x06\xbf%\x10\xee\xbb'\xfb\x9ax\x10q\xa1\x0b\xef\xc9\xd4\xa2\xda\xcf\x9e$\x1f\x83\x1b\x8d\xaa<\x81\xeaL\xd5\xe2\x12N\xbc\x91\xd7\xf1\x19\x7f;\x12N\xb4\x1dOr\xee=\x02\xb3\xc6S\xa3G\x89\xb86\xb2\xa6Z\x0e\xec\xfa\xee\x9a\xd8W\x8b\xbd\x0c\xe2HJ\xb5`\x97\xf0\x0f\x10\xd7P|\x06\xd6lz \x13\x94\xb8vl:\x92(\xa3?]o|^Fb\xa39H\x13\x9b\xf6)\x97\x80\xb6CGx\xcb\x991\x95\xbe\x83\xa6D\x83\x97\xa0\x80\xe5\xdcb\xa6\x1f\x94F\xfdX\xc3t\x93CHS\xbd\x83\x94c\xeb\x88?x\xcbP\x82\xba)\n\x85x\xf7\xba\x89B\x9fT\x83\x19\xc8\x04\x1e* \xb9\x81\x10xP\xdc\xf93\xa8/\x1b\xfc\xbeDK\xd9g\xf9m#5m$\x90k\xaa/\x19\"m0I\x83\x84Q\x99\xe6F\x0d#SF\x92<\xb7P\\2md\xec_\xa4\x9b\xd2\x02\xbf\xb3p\xb9#\xcc \x884\xdcH\x18\xe55\xf8\xf3\xd5\x07\x84\xcaL\x04\x82gv\x8a\x8c\x04\xe6\xe1\x84W9\x9c+\xeb<\xf3\x0b\x93#\xc8h\xa7tj\xb6\xfc\xfc\xa2\xcdL\xeb\x93\xa7C+\xcc\x19gA>\x05\x0c?u\xc7;\x9e\x95\xa5\xe1h\x14\xec}\xd9<\xa2\x94V\xea\x9d\xf6jo\x9f\xaa\x8f\x9f\xf7c,Mgh\x86\xe9\x90\xf4\xa7\x87\xd031\x7f\x1fVg\xaf\xe9+\xcd\x99\x0fx\x08+\xb7\x03\xc5\x1c\xc3\x1a\xae_\x02\x16Co\xc4\xcd\xcc/W\xf8\xbe\xb2\x1f\xc5\xda\x8f\xe3F-F\xbf\x84\xee\xeb\x0d\x7fW\xf5gt\xce\xebFw\xff\xb3UT\x92\xe3\xcc\x0f\x98k;\x99\xe0\n\xabw\x95U\x15Gi\xaa\x01>\xb05)\n\x7fI\xb4\x07\x8b\x16]\x8cC\xc2\x8a\xa0\x93\x90\x04)3\x91;3p\xb0\x12\x8aah\xc1&/\xd0\xdc\x94\xa5QR*\xb9\x1f\xd9\xd8\xb0\xb6\xb5\x8e\xe6i\xaa(W\x07\x7f\xe2\xcd\xa3$t\x19:\xe4R\xbb\xb6\xf3\xe3f\x9dA\x99\x02\x1d\n\xc5\x96\xbc\xd6U\x88\x1fm\xb24\xd4\x04\xb6\x13m\x91C\xe5\xbc\x8c\x8f\x92ZtwJ\x8e%h\x9fEE\xe9E\x05\xfd\x8f\xdb\xd9\x0c\xf6\x9bI\xb2\x97\xb8\x9f\xb0\xc7v\xd5%>\xc4\xd2\x804\xc8!\xfa\xe3&\xe8\xe5\x91c\xcc\xa4\xdd\xa7\xd3\xa4Z\xc6\xd6\xe7v\xde\x19\x9f\x90\x90Z\x13I\x0c\x0fB\xc4\xfd\xc8$\xcd~3\xff\x99 \xd5\x95\xd2\xa86\xd6Z\xd1\xab\xf6+\x06\xda%\xd3\xd6\xad\x94\xda:\x17\xd3k9\xce\x88W\xa4t\xc0\xb1\xb1\x1d \x11\xfcd\xff\xadW\xa6o\xe8va\xf5\x8a\xe0\x06\x10\xaf\x88\xa3\x80\xb8\xd3N\xc7\x04-\x81^\x1d10\xa7\xccm\xf2\xa4-\xa51\xfb\xc2\x17\xbd.\xbf,\xf5\xbaA\x95\xbb\xefO\xa3\xe1\xfd\xe2\xa0jQ\x01\xe9\x12>\x87\xe2\x13u\x12O\xdc\n\xd7\xd0\x93\xb0\xca\x92\xf58\n\x9f\xa7\x9bD\x16Td\xab$\xaf\x95\xe3\xcdl\x1fE\x95\xce\xa837\n\xf0*?R\x7f\xb2\xda\xf3!;J>`\xea/\xd2\x1bT\xfbN\x9d\xe6\xa9s\xbf*\x9d\xcf+)0\x9dH\x13G\xa4\xc3\xbf\xc4\xf8?\x81\xb9\xa39\x04\x93\xb5\xa3\xe2\"M\xa6\x0e\xec\xaeV%\xddv\xb3\xda\x89\x89\x82^\xc8&\x8edR^dD\xb0\xb7\xc8f\xba ?\xfe\xa5\x9f\xd1\xe9\x11\x0b4\xd6\xec\xd4\x03s\xcd\xf4\x9c\xf5J\xab\xf7\xd5\xc4\x85\xa9\x06SZp6\xe22\xe9fR\xe6C`\xa5\x953\xe8\xdb\xf8\xa05\x81\x9bR\x8fm\x80\xaeE}\xc7\xda\xe9z\xa5\xdbB\xcf\x98I\x12@\x8fzU\xa9\xf9\x08\x93^~\x93\xe6\x16cI\xb5co\x91\xa7\xeb\x1f\x8fG\xee\x89C\x0f\xb5(@.\xff\xe6\xafE\x9a8o\x1b\x9c\xe3\xf8\xday:\xd3\x1e\xbd\x10!\x06\xcf\xa2\xe4\x9d&5\xfcug\x10\x13\xf7\xb6* \xfdg\xc9\x18^\x05?\x98H\xf9\xc1\xa8\xe2\x07\x93\x11\xe3|\xf6\xbf\x86\x0d|\x03\xc9\xd7\xb0\xa1\xfc`t\xb2i\xf3\x83\x1b ?(\xf8\xcd\x0f\xc5\x08F#M\x12i\xcc\xb2\xf8\xda_\xa2\x05\x17u1\xa7\x8d\x1bLx\xa5\xccn\xa1X,\xb8B\xe6\xad\xd9\xb2\xc5i\xaf3:5\x98\xb1\x96\xc7\x003\xfd)\xf2F\xb7\x87\xa8\xe6G\xe87^d\xd7\xb9\x87\x9f\x80c\x1a\x14\xadf\xed\xf4\x91\x0fq\xfaH\x07\xa4\xcad eK\x7f\xb9$aE\xb8\x0b]\xc6G\xcc\\lv 11\x0f\xf6\x8aB;\xee*\xdd\x92|\x1b\x913S\x8d\xc1\x17\x1c\xceA\xa1p\xb0\xf56\xad\xad\xb7U(\x9d6\xaa\x1e\xf8$\x9f4z\xe8/\x0bg\x0c\xa5\xc1Y\x98y\xcf\x08\xa7\x92\x08\x1dI\x8c\xb6\xe2\x9dye\xa86M\xd5OT\xc2*_\xb8\x84\x9f\x05\xec\xe4\xb6\x00\xf5(sF\x1d\xe8\x9cl\xd4\xee\n\x00=;F\xf7jbPL\xd9\x95\xe6\"\xe9}\xd3\x85\xef\xaa3A\xa7\x87\x1b\x0e\xf3\xa2S\xcd\x89o\x9a\x90\xda\xef\xc1\xe0\x93j\xf4}\x00\xd6\xc3t\x00\xab\x0f-\x0bN\x992\x86PG\x06\xc4U\xa7\xeb7\xc32b\xb36d\xb0\x15\x17\xf33\x8b, \xe9N1$G\x05\xce\xde%\x0d/\xad\xc6\x06\x1e\xc3\xc6\xd29}g_\x0b\x10\x1b\xcc\xa2\xa7\xc6\xf8[q\x898\\C\nSzE\xe1\x0c\xd2*\x19\x93\xc5\x0bt\x8b%Z/\x9c&\xe4\x8b\xec\xa9\x19u\x9b\xc0/s\xb2\x88\xce\xb1\xb0]\xbd\x0c\xc6\xb7W9Y\xcc\xc0\xf9K\xf5\x12\x8e\xc6\xa2\xd9\x8a\xde0\xda\xa1'\x1a\xb6\xfe\xdbR\xb0&\x08&\xca\x8f\xfeM\xe0\x1bVUDM1o5\x0c\xfa?\xa5u\x9cv\x01L*\x0b!J01\xc9\x1eHm&\xad;\x03\xe5[\x83SI_\xa4\xb3\x12D\xa4\x04\xc7Z\xe4\x10\xd2\xc6\xae^\xc9\xcd\xfa1\x1a\xbe?i$.H\xbcS\xfe\x077VQ!\xb0=\xaf\xff%\xf9\xc4\xe5\xf9}\xde\xea\xc7\xe5S\xf964\xb1\xa8\xed\xed*'\x91\xcc\xc3\x98\x8fb\xe4\x9e$\xc8\xdc\xc0\x1e{[V\xe4\xbf=\xab\xd7\x8a\x81\xd7\x1d8I#\xd7\x83\x89Y\xc7\xa1\x9b\x98tJ\xcev\xe2\x9fc\x8fnE\xdd\x99\xc3(\xa5\xe6\x0c1\x9a\x99\x81\x87J\xffB\xa2\xe5\xaa\x9cAN\xb9\x9dy\x1a\xb3,\xa4I\x9a\xaf}m\xfc\x9ez\xec\xb2\xe4\x00j\xf0\x96wl\x9c\x06\xef\xaad\x04\x94e\x1b\xee\x05l%z\x08\x9f\x0b;\xe9\x83\xce\xca$\xf6\xe7$\xc6\xf3HQ#|\x0cI\xdbT\xbc\xb3/\x03(\xdbW'\x1f\xb4\xb0=\xd8\x1c\x1b\xff\x05\xd7B\xcb\xf84Y\xa4o\xf2\x18\x8f'\xfa\xfb{\xbf /\xfdr\xa5Q8JS+\xa4\xaa\xd4\n\x91*\xb5\x82\xafJ\xad\xb0Q\xa5V(T\xa9\x15\xe2Vj\x05\xb4C\xb7\x01\xea\xdc\x0b\xdcR=\xdd\xbf\x16\xa9\x17zsn\xc5\x11h\xdc(\xbeD%5\xe1\x86\x9eY\xab\xb4\xd0\xe8x\xd8\xa95\xe7\x8b\xb5\xd3q3(\x16\x84\xb64\xd9\xe4jR\xe4\x9c\x00E\x1dx\xf3\xea\x19\x96\xc1-\xd1g\xc1\x81\xb7\xbb$\x80\xd11\xb6vn\xd1\x06\x0c\x85O\x8c\xa5\xd0\x9b\x05\xb8\x12l\x053\xc6\xc2\x00\xac\x85\x81\x98\x0b\x15\xf6\x86~i\x90\x89\x93\x01\x1aM\x00h:\x9e\xf3\x94\x9c\x7f\xfc\x01N\xb9\"\x10\x92-\x89\xe9\xc9c\x905\xd3\xfa\x0b\x14\x93-\x14|\x1c\x9a\xac\xfd\xc8\x08\xefc\xf2<\x87\xb2p\x16\xf1\x1fV\x8cL\xaa\x15/mX\x1e\xa3\x86\x8aq\x94.\x96\xf5*\xfc$*\xa3\x7f\x937y\x99%r\x90\xfb\xbb\x9d8\xc5\x14\x9e\x945\xd4\xb1\xf3L\xb5\xb9\xc9c\x1d\x10\xb3\xd3\x08\xee\xc4\xe4\xe5^\xa2\x0c\xa9\x83bR[S\xca\xd3A\xc7\xcc\xea\x83L\xee\x15x\xcdc\xee\x98\xbc\xcaV\xa8\xa6\xe1\xb1\x8e\x86\xd3\xdeh\xf99\xe4\x984\x829c\x085\x06\xbc\x9a\x19\xd4\x9cZ\xcd9\xd4\xba\x91\xb6\xcfA\x85\xa3\x8d\xfa\xa4\xb8\x949\xb9y8\xb0\xda\xfe\xd7\xedp(T\x87C\xa1:\x1c\n\xd5\xe1P\xa8\x0e\x87\x82\x1d\x0e2\x92_||\x92\xaf\xd7\xa0\x7f!\xf9\xe2\xb2%\xf9\xc2/v\x97 Z\xc6\x1cXo\xa1\xf8Zn\xa1\xeb\xc1_\xf5\xf7\xd6\x17v\xea\xcf\xb2\xb7v\xd6/4u\x0b\x8b4Ugp\xfa\x8f;\xf7\xae\xc7\xa6\x157\xffDB\xd1\x97\x94B\xda\x94BO0\x9f9K\xff`4\xe5\x03\x9fO\x1ed\xd7\xc8 $\x17\x06\"i\\\xf4&\x0b\xfd\x92\xb0\x86e\xc6\xdbO\x9e{\xe8\xd2d\xf2\x03K\x9d\x83\x82\xae\xa5\x96\xfdG\xa9\xd6\x90B\xe9\x8e\x13\xa7~\x18%K\x96\xd5\xb8\xf4\xf8\x9f\xc7\xa5_n\xb4B\"\xc5[g\xe1G1 \x07\xbf\x8bn\x85^\xb0\xc9s\x92\x94\x1cC\x0c\xd2\xeb\xef\xef\xb5\x82(\xba\xde\xb9\x1b\x0f\x0b\xea\xd1\x9e\xe5$tF\xdc\xdb\xb0y\xff/\xbe\xefk\xb3\xa07%W\xfa/\x8e\x0dmw{S\xfe\xbb\xaa\x1a\x7f5\x07$\x8e\x1f\xebU\xfaQ\xb2CN\xfa|XK rf\xaa'|\x9d\xce\xa3\x98\xcc`z0\xb4/N\x94d\x1b\xfbTCut$\x9f\x05\xfe\xba\xf2\xe5,\xf6\x03\xb2J\xe3\x90\xe43p\x18\xea\xc0\xfc\x02J\x7f\xa9y\xab\xbc\xc8\xd0\xbeE\xceu\xdf\xee%*j\x12M\xf5k\xd5\xc1_c\x8aS\xe6\x1b\xe2T\xd8\xe28\xa0U<\x84U\x81qs\x14\x94\xdcn\xf6\x81\x13x_O^*S\xf1R\x99\x8a\x97\xcaT\xbcT\xa6\xe2\xa5\xb2a%\xc53\xca\x15\xb4\xeeb`L\xa6\x89\x9cY\xe0\xc7\xa6\xfbR.,\xfb\xf8\\X\x08\x87\xf0\x84\xb7\xef!\xebAwO\xbb\xcf\xfa@\x1a\xe8\x84\xd7v\xf0\xa4yYse\xc0{\xa7\xe6\x96\xec8%\x11iK\xfb\xa4Wmn\x19|\xc4B\xa3K\xbf$\xd2\n\xae\xe2\x8a\x8a\xa30*\xbfO\xcfg\xb075\x12\x0bGI\xe4#\xc3.\x86+a\x80`P\x02F\x18\xc0\x13\x81H\x95\xc3\xd8?\xacq]4\xa7\xbef\x96\xac\xcdc\xaa\xd3dx\xb6E\x90\x8cD\x9boB;\x14U\xa2\xb7\xa1#\xf8d\xfel\x8c\xcf\x14\xe7\xde\xa34)6k]\xfeD\xa8\x9c\xd62?\xf7\xd7z@\xe6\xb5\x16\x15\xbcf\xb6\x1e8\x1a\xc2\x1eC\xe5\xb7\x96\xf9\xe5\xea\xb9E\x9a\x8e\xcd\x003\x0ep\n\xbfq\x9d\xefYE\x1c\x0dk\n\x9c\x82o\\\xe759/\xbf\xcb\x89o\x02\xcf\x18\xf8*Z\xae\xe2h\xb9*\x1f\xa5\xa1\xd1\x81,d\xef4R\xf0\x99\xde@\xef\xed\x08\x8bg\xe2Z\x91\x92\xe4\xbfD8[\xfe\xf7\x17OC\x92\x94Qy\xe1\xfa\xdc\xe7<\x1fyu\xd9\x94\xc2\x19s\xd3\xf7\xb3\xa8(Gn\xf7\xc8\xea^[,\xa7\xd9\xe8\x1c\xdb*\xae\xcf?\x9a\x93\xdf6\xa4(\x1f\xd9\xf7~\xddBb\xfai\xc4\xccN*Wq[\xf8,\xc8\xde\x98\xd5\x8c\x0c%\n\xd5\x03}\xfbK\xd1>\x12~=\xec\x05\x1c\xc2\x92\x89\xc7z\xc09\x02V\x07\x85\xd1[\xed\xca\xaa6\xcf\xd3\xf0b\x82X`\xf0zpB\xbf\xf4\x19\xe4\x04c6f\x907#8\xec\xdf\x8e\x92\xfa\xdd(\xd1\xd5\xfc\x1a\xc3\x9c.k\xaa\xa9\xae\xb9\xd8m\xb0\xa7\xa7\xc8\xf0\xc3\x0dpW\x0d\xeb\xa3\x03Q\xb2\xf5\xe3\x88e\x070\x0d\x8a\x93\xdf\x0b\x03\xadk\x8b\x0e+? c\xf2\x82\xdfT\x8f\x9d\xee\xbc\x0b:z\xd5\xc8\x8d\xce@\xaa\x91\x13\xab\n\xa3bp\x9a\x1ej\xca\xae\xee\x8e\x86\x13\x96\x91U_P[\x87\x11\x97i\x9b\x84Q\xa9mX\xd5h1\xa0\xc19\xa6\xa0(\x13\x08\xfc$ 1H\xd6\x86u\x04D%\xb50*\xd5PF\xeck\xa4\xa9(\xd3\xe52&O\x05\x99\xd1\xef\xbc\x87\xe0<\xc2\x1ebG\xe8+u\xd5\x02\xcd\xd2\xb3\x0c\x0e\xa6\xf9X\x95\xeb\xf8 \xd6q\xd8i\xbe\xdb\xf1N\xceKq\x8c\x89L\xb4\xc0\xca\x92\xa9?`\xf4U\xe3\xf8\xbf\xd5Oo;\xf1\xad\x89\xeb\xa9(\x81\xc1\xf9Z\x81\x9d\xad\xe4\xcb\x9a}\xa9L\xea\xd4\xbb\xab\xf0.k\xc7\x9c\xd4\x87\xd1\xaay\\\xf6D\x1eq|\n\xdf8m\x02\xe0\xf6\x04\xe0\xf8\xba\xef\xfd\xfe\xbe+\xbfW\xf3\x17\xca\x1f<\xaaz\x10V\xcf\xdf\xb7\x95\x03\xdb\xa6x\xda\xe5\x97\x9b\x98y\x05\x89\xd9\xfdY\xcdLDU\xde\x10T/\xa5B\xbd\xa4\xd0\x1cQ6\xf9\xe6\xf9:\xbe\x19y%)J*\xceJ\xe1(\x83\x8c\xcbf\x02D\xab\x08<\x84\x84\xc7\x80\xd0\x9e\x9e\x9e\xafYu\xb0\xe6M\x99\xe7P\xb4\x00\x97w~\xef\xf0\x10\n\x9db=\x86C\xd8C\x8e\x0f\x93\x17\xfe\xfe\x9e\x8e\xb2\x903M\xc4+HyLY5W'\x1c\xe1fW\xd4\xb0\x1e\x8d\x9b9\xf1\xf5\x9eH\xc5?\xd7\xb1V\xa1\xd7P\x06(\x12\x9cK\x94u@\xe2\x82\xe0\xdc\xb6\x92\xf3\x17x\x0c\xb8\x0e\xce\xb1\xaa[\xfa.i\xbb\x83L\x88\xacEMc\xda\xcf\xb5)\x0d\x17\xf8\xd97\xad7\x14\xd1I\xafXvK\xb7\xe3R\xae$J\xbcE\xe2E\xc9\x82\xe4\xc7X\xe2\x7f\xe4\xe6<\xdaF\x9dg\x8d\xbe\xb7\xa0h|\x8c=\x16/\xa6\xa8\xefT\xcc\x07+\xb0\xf0K\x1e\x95\xe4E\x12_H\xf3]*\xe6EL{kf\x14\n3\xa1\xf7Lj\x19B=~\n\xf4\xcf\xb5\xa44\x99q\xaf\xf0}\xa2\x90\x90\x0d\x8bOw\xd1i]bc\x0c\xa9|\xdc\xa7C\x06\xee\x92N\xed\x0e\xf8\xe3\x0f\x08G\x0c^\xfa\xf96\x03>\x14\xedl\xe8p\xde%\x98\x89\x82`\xa6\x1d\n\xac\x82\xa3\x84=\xa7Bl\xcb\xe0\xea\x95y\xb4vYA6\xbd!\xb6\xb1\x85\x95ek9\x99\xe8\xc7\xba(\xb0\xb3\xc3J\xea\x8eUh\xa8\xa6k\x0c3+\xd9\xf8;v\x8aURc\xbe\x14^\xc2\xfc\xa8\x0c\xc9\xef\xe5\x96\x8e\xeb\xe9J\x7f\xdd+\x10\xd0\x1f\x0f\xee\xdf\x1a\xfd9\x8a\x10\xfc\xf9\x1c\xc2\x189|\x92\x06\x9bK\x96 \xe2$\x88\x15\x94\xa1\x1cB\x98\x068\x0e\x8f\x9c\x93\xe0Q\xba^\xfbI\xe8:A\x9a]\x98Sd\xc9\xa8\xd4\x07\xf3\xcc\xf0\xb8\x12R\xcd\xb4\x95\x9ck\x88\xeb9%W\xe0\xfd\xae\x0e\xce\xac\x8bK:\x8fX\xee&\xd3\x17\xd5T\xb2]\xbf'\xa3\xd2dQ\xaa\xb3\xcb+\xdb)\xc9y\xe9\xe7D](\x11P\x14CTj)\xbb\xf0\x8ezrs\xe2\x87\x8c7b\xb6q5dk$tZ\xd4\xa0V\x89A[\xc52/\x91\x0bT\xb0E\xf2)\xfd\xa0\xe6\xf7\xebP0\xa7\x7f(m\xe8\xa14\x95\x9dJ\xf4\xc9\xf4\xbe\xecX\xa2O\x1eLUqlj\n$\xbc\xd1N$\xa5\x08(\xe3&\xab?U\xd9|\\gE\xfc\x90\xe4EW$\xa5\xe2h\xe9e\x9bb\xe52T\xc3\x84\x9d\xec\xef\xc9?\x9d\xb1x\x9d\xe5\xd1\xc5\x18N\xfe\xf8o\xce\xdf\xb0zf\x9d\xa1\x08n\xc0\xdf\x9c\xbf\x8dx|\xf4\x06M\x12*V\x93\x9e\xaa{\xfbrTC\xb1Wa@\x0e$9C\xc5U\xe6\x17\x8a\x8dP94.\xc6h{\xea\x9c\x1b\xdd)\xf2HR\xe6\x11)\xa8\x90\x04{.\x16\xba\xa1\xc7i\xe6%\xe4\xbctG#/L\x132\xfa\x9a\x8f\xc2d\x8e\xc4L`6\xd6\x91\x15\xefZ\xe3\xc8\x0d\xc7p`R\xcfS\x9e\xedd\xdfP\xa1b\x8dPS\x89#\xa6\xb8(\x12\xad\x1b\xab\xff\x038\xdd\xd5\xde\xc2\x0dpf\x98?m\xcdW[N\x0b\xfa\x84\x00\x02\xbf\x0cV\xa0>Yc\x86\x11\xb8\xc2}{\xc1{XD\x89\x1f\xc7\xaa\x15V\xaf=\xbd\x98\x12%\xf3\xf8\xa1\xd5\xf8\xed*\x06`h\x0e\xf8\xd6\x89GP\xae\xf2\xf4\x8c\xbb\x07u/\xc9<\xfc\x97\xfa/\xfaA\x8e\x8a\xf34\xbc\x90\xa5\xd6\xa1 \xcez\x13\x97Q\xe6\xe7\xe5\xcdE\x9a\xaf'\xa1_\xfa\xcc\xd1\nG\xe6\xbc|q\xfc\x9a\xfd\xdd\xdd\xbb\x1aNa\xa9\xd9\x8f\xc0-|:\xa7\x8e\xb9f_\x82q}\xaa\xfdy:\xc6\x8c\x1c\xf2\xfd\xc9&\x057\xe7\xc51\xf9\x8d\xefN\xdas\xf7\x14\x0e\xe1\xac\xbb;\x97\xc6\xdd |\xf4G\xfd\x8dw\xca7\xacq\xfb\x01\xcf\xf5qd\xdc\x82\xc0\xb7\xe1\x91v\x1b\x02\x9e\x08|\x0f>q0h>J\x8a\xd2O\x02\x92.j\xae\xdb{\x12\xa1\xb0\xd0\xda\xa0\xe7t\x83\x1e\xfe\xffq\x83z\x89\xbf&\xf4\xef\xaf\xcb\x8b\x8c\x1c\xb2{\xf4'\xdf\xb9(P\xf7\xde5\xeem\x90\xe25X\xedq\x10\x98\xb4?F\x8c\x91\xdb\x05m6\x9f\x1e\x9f\xe8\xb5\x87\xc1\xfcg\x8d=\x7f\xa6\xdf\xf3`\xd94\xf0}x!\xf6\xfe|\xe8\xabe\x0f\x1b\x94\xb7#E\xb5 \x84\x97\x13t\x07uo\xfe\xeb_\xc9\xcd\xe5\x18\x1c\xa7\xab\xd8\xe3\xe3/e\xe5\xac\xdb\x1c\x8d\xcf\xb9\x93[\x8aJz\x9b\x8f'\xc4^7F\xefK\xcc\xca\x97\x98\x95O\x11\xb32 Z%B\x95c\xb0\"k\xab\x9a\xd7\x0dp\xab\xcf\x0b\xf1#29\xd5 c\xa0.K\x1b\xb3\x072\xbeD\xc1/\xa0#\\U_\xb0\x1e\x19\xe2J~\x0dCiZ>\x98\x97\xad\xe3-Q\xde\x148\x01\n\xeb\x1f305\xd6\xff\x9aV\xf0n\xba\xa7\xb1\xd0\x17\x8e\x82H\x9b\xf8\x10\xebr\xdd*p\xcc\xa3\xdb\x1b\xb3x\xfd\xf2c\xff\x00\xca7\xbd\xd2\xad\xea\xbc~_\x91\xf64\xec\xa6\x993;\xae\xd4N+\xbcW\xc3\x95h\xc6\x94\xa3M\x1d\x17o\xc5T\x0e\xf2\x98wF[\x89\xc5\\\xe7[Q\x8c\xdb\xa8\xf6R\x16\x8a\xe1d\x16E\x92\x01u\xfcL\xebdY\xb2\x9b\xf7\xce\xa0Z`\x85\xbd\x95 \xb6%\xbbM[jw\x05\xdf\xf5\x8c\xaf\xf9\xc2\xf7} \xbe\xef\xcfg`\xfa\x14gF\xcd\"\x99\xce\x0d\xcb\xb0\x82|@\x90\x00s\xb1\xa8\xc2\x17\xf91\xac\xd1\x96D\xf8\x02'\xf6\xe6\xd8\xd8\x82\x04\x9b<*/\x1e\xd3}\x1d\x95\xa6Z\xc7t+\xe5\xc6x\xdf\x98A\xf9\x9br\x95\xe6\xd1\xbf\xc9\xf7%\xa5\xb0{\xdd@\xb6\xe6\x15\xb0W\xc4Qx\x05\xf60\x8c\xd4\xe5\xc5&\xff\xf8\x03\xfd\x9d\xae\xc4\xea\xc5\xbax\x890\xda\xcd\xb0\x96\x8a+\x89\xa3m\xce\x86z\"\x02m\xd7\x9a\\\x91>\x84\x94u\\\x9b\xdf\xaa\xb1\xad\xd4\xc6\xae\xcaAX\xb7z<~\xbaJq\xf5\x1f\x9b\xeb\xea\x93zo\xc8\xe3T\x03\xb7ht4P\x1f\xad\xd7\xd9wC\x15Xj\xad6\xd9~\xf8\x80\xd2\x88\xfbP\x89*\xf4\xa1\xc9\x87\n\x1a\xf94\xd2\xe45\xbe\xcchD\xfb\x9e+n\xac\xd3\x90\xc4\x942\x8da\x8f\x07\xaaz\xe4<\xf3\x93\x90\x84#\xa1\xea0\xb8\xc6\n\xf8Y\xff\x13\n\n\xd0\xdf\xc3\xf2\xe9\xdd\x98\xb4&\x18iW\xb5&\x87\x89\x11&\x10S\xc8\xe3\xc8\x94\x1a*S\xb8n=ZE\x9f\xba-\xcd F\x99[\xac\xfeK\xee$\xd8\x86\xeaOI7\x9a\xf7\xc3\xf0^6\x11\xbc\x1f\x8e\x0d[E!9&\xf1\xe2Er\x84\xd3j\xe2\xc5\xf4+\x0d\x15\x1bV\xa1\xb5B\xe7C\xf7D\xd2\x89\x07\xac\xf6F\xdes\x0c\x85!\x1a\x90\x0f\xad\xfd\x11s\x80N\xf0\xf5\x94T\xa3\x19\xb4cw\xd8\xaa\xb6\xf3\xf0 \xb8z\xd4\x82\x98p\x08\x991\x956P\x98|\xaa\xe8\xcd\xfe\xfc\xb2U\xe8b\xae.\xdcl\x88F'\xc1\x0c \xea\xf2\xb6\x0d\xb5\xde*\x8a\xc3\x9c$\x943\xfa(M\xebB\x0d\xcd\x0d\xc9\xc2\xcc\xaasM\xc3Q\xdaxi\x05\x9b\xbc@\xa5[\x96F\x892_\x1c\xf4\xb0\xb7\xba\xcb$\xe7?\xed\xe0v\x1fX\xab\x92\x04%\xaa\x1368\x8c\x8b\x95\xed\x12\x1eP\xe4\xd4\xc7\xa0\"|\x17S\xf6\xcb\xbf Ar\x985a\xbb\x87\xa7\x91J\xf5\x85\x02\x990\xb0h\x1d\xd1\x92\xe8\xb5\xee\xc1\xee\xfc\xeey\xde\xfb\x0e\x89k\xb0C\x1d\xaf\x0f$O\\\xf8i=\x10GO\x9b(v\xdc \xbb\x14\x87~\xbf\x1e\xd2\xf83\xf0\xf9\xbb\x96*\xc11\xfb\xa10\xdc_g\xe5\xe0\xe7!\xc1\xf8A\x19m\xc9k\x7f>\xc8VZ\x99aC\xbf\xf4\x0bR\xa2G\x8e\xfc\xc8\xb6\x92Q\xaa^\xa8\xd5\x12\xbd\xdb\x97\x13JP\x13\x98,\xa2\xa5\x02\x8a\x89%\x86\xc0\xce\x00\x13QW\xb9\x86\x9fS\n\xfc\n\xf9\xaa(Y*E\x18G\xc4\xef#\x8b\x18\xa0k\x1b\x12\xef\xc6\x0d\x97~\xba\x02\xb4HS\xd4\x98\xc1\x98R\xf9\xaa\x8d\x99\xc4\x83\xefc\x0b/W\xc9j7\xb2\xce\xb0-^\xffIg\xafq8\xb5\xe0ly\xef\xc6XG\xee\xc4\xd1\x90\xefG%Y#\x9fY\xd3\x9a\xc3\xc3ff\x9d\xc6\xd9\xf2\x10\x1c\xbe\xb3x^\x96\xc1}\xd3\x07\xadt\xba\x16G\xc9;U\x860\xa8\x92\xd9\xf0$8\x8e9\x9dJ[~\xa8\x86\xa5\x1aDD\xc7{\x14F%`\x8c)\xcb\xbe\xc1\x1a\xe1wX\x154\x8dqd\xd7\xa5\xe0\xe7\xc8\xf5Z\x08\xda\xb3\x88'\xe7i5n\xbbBlTW\xb6>l\xc7\xd6\xb9P\xcc\xb1Y<\x92\xcb\x8c\xe8_}\x05\xe9\x18\x8c\xcb\xa0\xa9\x84\xa65\x071b\xab\xad\x94\xd2.M\xa2\xa1\xf55 \xd5\xa6;h\x1d\x06\xda\xc4'\xa4\xa6\x993\xd0\x14\xb3\x14\x14Y\x97\xef\xb4\xf7\xc0(1~\xdef\xa4\x05\x15\xb1z\x12S\xca\x9f\xf4\xa4\xb2H\xbc\"\x13\xbe\x162\xa9l\xc3\x1f\xf4\xda(\xf8\x83\x9eT\x16K\x0dL(\xfe\xb8qS,W\x1b\x98\x16\x1f_<\xcbl\xc53\xbd\xcfn>\x06\xbf\x7f\x92wy\xdfk\xe3\xb3+\x92\x84ozb\xa2\xc2g7\xed\x8b\x8az\x9f\xdd\xbc6X\x1d\xb6\xb7\x8e\x8aG\xcde\x89\xe3\x01\xabE\xc92\xca\x17\xab\xf4\xcc=a\x94\xb3p\xc6@\xde\xd2o\xf7\xe9\xc0\x989Q\x8c\xbb\xe3\xa5+f\xe9\x0dSH\x85\x1a\xdfN\xa8\xb9\xe6\xbc\xbb\x0dc\x9c6\xf8V\xdd!\x1c\x19B\x9f\x9a\xda\xf8\xe6\x92V\xc7\x05J\xb2Q\xdb\xdb\xb7\x03\xe2E\xc5\xf1*=K\x9aK\xdf\x80\xa6\x1c\xc0[\xccB\xa0?\xa0\xed8\x12\xa6\"\x9d\xa7\xe7J\xdeX\xd5L:\xeejX~o\xa9\xfbu=h\x1e\xb4\xc6\xe3\x93\x84Z\x0f\x8e\x90\x9d\xae\x9ax\xb5ZYY2'P\xf6\xa7\xa9]~l\x97]C\x16\xde\xa7T\xa3\x9f\xf5\x06v<\xabc\xe3\x19\x9d\xe1]\xc3\x19\xed\xea\x1e\x82\xf2\x10\x07\xbe\xad\xd0^\xe2\xf06)g\n%\xc6\x9c\x89^\xcc\xa0c\x84\x16G5\xe7\x02\xfc\xa2\x88\x96h\x931\xeb,\xaa\xe3\x806<\xfd\x1aJ\xf8\xa6w*|\x0d%\xa5\xfcj4\xda\xf2<6\xf5\xa1Pj\x82\xed\xaa&s:\xb4d$\xba]%\xfd\xf6V~\xf1\xe2,\x11l\x0c\xd3\x16b\x04\x02\xeeZr\x92\xd3\x13(9\xc9\xdf\xdaF\xc2B\xe3x\xef\xe3D\x1f\x01S\x1bw\x89\xea\xc4&\xda\xc3\x06\x9aCN\xd8\x81\x9a\xc07PV\xb3\x9b\xe8g\x17\x1a+\\\x9e$\x860\xc6\xdc#\xc9fMr\x7f\x8e\xe7a\xebO,&1\xc6\x9a\x88t\xd3o\x04\xd0\xde\xfe\x18x\xf64\xba$X8\xd1\xcd\xbd\xb3<*+\x88\xd1X\xc1d\x12\xfa\xc1w\xe4B\x1a!\".\xdb\xa0<\xa8\x17\xaa\x9a\xff\x92\x87\x9fh\xa6\xa8\xe27(\xeb\xe66P\x89\xee=^ \x12\xd3B\xe5\xbd\x9c\x84\xe2\xea\xf7\xe5\xbd;\xeao\xb3\xc8\xa8\x8c\xae\xd0\"2\xd5\xb9\xb2\xe2U\x80G>\xee\xb9\xa4\x19\x92Z\x8eD$dB\xce\xe0\xf5EF\x8e\xf2<\xcd]\xe7\x91\x9f$i t\xcf\x80\xcf\x8e\x18\xf0\x0b\xf0\xab\xd6T\x825g\xcbT \xf8\xa014c\x87At\x9a4{\xf9\x8a,HN\x92@t\x956\x08+\xbfH\xfeV\xc2\x9c\x90\x04\xd0\xe5\xd4\x8f\xa3\x82\x840\x81b\x93\x91\xdc\x1d\xb5 \xe8\xb0H\xa8+\xb9\x0f\xf5\xfc\xee\x95h\x97N\x11m\x1d\xd8;\xc4\xcc\x9dt\xf2\x90\xc0V\x13\xd2z\xc2\x98}9\x8e@c\x9e\xdc\xa8\xcd\xba\xf2\xcd\xb1$\xe5K\x81|/\x16nd\xe9\x1e\x0dR\x0c\x1c\x82'\x18\xa5.\x1f\xd2W_\xb1\xc21\xa8\x84V\xa0\xcd1\x9dlz\xe0\xe6\xa4((\xf6\xae7E $*W$\x879a\x1fH\xf3\x06\x1e\x8d\x81\xe2\x99\x037\xaa\x86\x14\xabB\xea\xedX\x9fQ\x8c\x87q\xb1s\xad\xfd\xaaa\x97\xd2\xa4(\xf3\x0d\xe5\xcdL\x96o\xbb\xf8\x8c\x9a2\xea\x8b'\xd0K\xd0\xc2\x996b\x1fX7+\xda*M\xc9'.\x05M\x1cq\x87 \x97\xcfT\xd1\xc2(x\x08\xd2\xfb\x1c7f(\xb9\n\xb4<\x94\x8a)n4\x86\xa62b\x0c)\xbd\xa5-\xd7P\xac\xd2M\x1cV\xef\xbc\xc1l\xa5\x96\x95\x03\xb4\x019\x82\xf5\xc0\xed\xa1\x9d\xd7T\"\xaf\xc2\xb70\xa5s\xd5H\xeeY\xf3 \xd3\xb7\xf0\xb0\xfd\xe7\xacg\x1a\xef^Q+\x01;\xdd\xd7\xaa\x02P\xd0\xa03\xcc\x9f\x81\xa5p}\x910\x1f\x80\x9a$\xbc#\x17\x85\x9b#WNZu(F#\x8flI~Q\xb3\x8b\xdaC\xae\xd1b\xe2E\x05\xf2Ac\xb6y\xb2B\xc9\x0c\x01\xe2\x14\x1e\xfd\xedn\xa2\xb9I\xd1\xcf\x94\x9e\x03\xfd\xeeiW\x12:\xddKO\xa8\x9c\x1c\x9d\x10m\xc7\xe4{\xa0\x8f\xb4\x94S\xef\x18\x06\xbb\xc73\xf1\x9e\xae\xd7\x1b\xdc\xa5\xad$\xc3p\x08\xd1\x18H\x83\x89\x8f4\xbc\x8cNa\x06R\xa5\x19\xb4\x07\xf2\x9e%\x88t\xf7E\xdd\x1d|r\xdd\xb4z\xa14WR\xca\x9f\xdc\xef)\xe9\"\xfe\xa4\xa7\xef\xf3\xf9\x83\x9e\xbeo\xc3\x1f\xf4>U\xf0\x07=}_\xcc\x1f\xf4\xf4}\x81T\xdf\xb7@\xf0\xa0s7\xe3\x1f\xb9\xd7t*\x08\xd5\x8a\xc0\xf0\xe3+\x02\xf5e\x8c\x86(\x02\x15\xc1\xfb=\x97\x0c\xad\"0\x96*\x02\x83J\x11\x18\x8f\xc68\xd7\xfb_\xc3\x02\xbe\x81\xf8kXP\x81%8Y\xb4\x15\x81\x0b;E`a\xab\x08\x8c\xec\x15\x81\x01W\x04.yd\xb2\xff=\xaf\xa9n#\xc7\xf1>\n\xdd_\xcb\xaa\xe0E\xc5\x8b\xef\x8eoa\x01\x87\x93\xdak\xa0p\xc6<\x1e\xc7/\x1cz\xae\x9c8a\x1d1\xe5\xbc\xed\xb5\xf3\x9e\xf7\xeeQ\xc7\x13l@\xff\x1c\xe8\xab\x86\xf0\xb3,\x11\xde\x15h@\x15\x8aN\xce\x8f4\xe7G\xbc\xc0\x93\x1b\xbe\"E\x1aoIx\xbc\x99\x979!\xeeI\xb50\x1d\x85\xaed\x85\\\xbar\xf4\x900\xa5\x17(Z\nU\xdb\xf4\x02\xb1T\xa1\xba\xf9\x04\nU\xbd*\xd5F\xe5\xca\xb2\x1d:\xfaa3<\xcf\xfd\x80\xa0\x8d\x18\xb8#\xb9\xaa=F\xb8,\xa9\x90\x1dE\xb4\xebb\x94$$\x9f\x18z\xa7l\n\x1d&\xad\xdb\xda\x0d\xe1\x9c\x12k' z}\xa4\x99#\xa7\xcc\xb5\x9d\xb1\xcb|\x96\xc6\x98\xf8\xec/w\xef\xde5h\\\x17iR\x1e\xb3o:Q\xe9\xc7Q\xb0C\x9a4\xf5`\xc2\xfa\x90jp\x893GG\x99\x1a/\xa9`^h\xa7(\xdd\xe4\x01\x99\xc1\x91\xbc\xbb\xa3Q\x8d\x80\xe7\x94H\x9f\x8b<\xd0\xe7J\xc3\xb4\x95\x0fw\xc7i\xcf\xa2\x8e\x1b\x0bi2\xd9\xae\xd1=\xe9dj\x80\xa2\xf2\xe4\xa9\x8b\xa7\x8e/\xd8\xf2,'\x81_\xea\x99X\xe0\x02\xe6\nm\xa9^T\xa0I\xf5\x1d~\xe8\x9d\xc7\xad&\x85\x9b\x1b>\x91)\xf3\x1f5\xaf-\xe5\xdc\x03?\xfe.\x8e\x96\xc9\x0c\x9c2\xcd\x0c\xf8I\xaf\x8cr\xff\xc9\xf2\x15\xf7\x9c\xd8\xf7\x0e\xc8\xda\xc03\x1amQ,\x026\xf3(\xfe\xff\x82>\x19p\x08\xce<\x8dC=n\xeaw'\x08\xad\x84&\x0d\x04\xb4I\xca\x86G;Vk\xa5\xde~\xa6=\xa3\xef\x17\xa7\x1c\x99\xee\xfb9\xe7dv'\xcc`K\xa3\xa0A\xa7r\xdd\xb0AIy\x80\x1f<\x7f\xd7s:\xf6sc\xee\xb1\x0c\x81w\xef\xb9\xaa\xcb/\xc7\xddT\x00\x16(\xc7\x03\xbd\xd0V\x99\xc0\x0dp\xf0WN\x7f\x9d\xd2_\xbe\xae'F7\x07!\x0f\x1b-\xf1m\xbf\x00\x83\xd5\xab!\x9b\xf1:\x84\x0d\xcd\x00\x86+\x9a\xdb\xe2\x0e\x02\x81\xa1%\xeeIa\xf0 \xe0Q\xdc\x0b\xb8\xa1\xb3\xa8\x8dd\xd62\xf6\xa46\xa8U\x87\xcc\x99\xf1\xb8\xe7'\xe4\xff\xfc?\xa7\xfdV\xf9\xb1\x0f\xa4\xc4\xea@J\xf9\x81\xa4&\xb2\x18\x8dw>\xe1%b\xbd\"\x8e\x02B{s\xa0,\x08+\xae-/\n\x99\xc2CH\xbd2\xfd\xf1\xb8\xfa\x81S\x9a\xf2 \xb2\x8a\x80\xbc\x0c\x19\x07\xb1\xaf,\x1cU\xac\xc9\x074\x99\xb3{\xf7\xee\xe9i\x07h\xe9\x07\xd8\x1c \x0c\x97\x92K\x92G\x18:\xc6\xc1d\x12l\x86\xda\xf1\xfc\xf3U\xbb\x10\xd4\xbc\xaal\x7f\x1e\xd3\x13\xefX0\x816;\xd5f\xce\x9do\xe0\xef\xf0\xed\xa59]\xc9Q`\"\xd75\xa9\xd6EuZ\xd3\xe9>\x8d\x1e\xaa\x8c\xb5$\xd3\x82D\x1f\xabA\x8c\xe4\x19Is\xb5\xb2\xbf^\xe5z\xa2\x0e\x0c&\xdf\xda\xae\xe8\xaf\x1d\x8am\x88\x197\x91,\x1b\x1f)\xa4W\x9a\xd8\xed+E3\xb0F5\x18\x82n G9T@\xa2\x89\xd2\xdc\x8c\x19\xd5\xa0\x81n\x06\xa7 #\xca\x01(\x92\xad@W\xda\xfc\xe9*\xd1\x11U\xaa\x03\xd0\xf1\xa7/\xe8\xd8\xb8.\x89\x8eL\x9f\xfd\x99\xa3\xe3\xab\xabD\xc7$-\x07 \xa3\x01\xad>\xbf#\x11\x0d\x14Wv\x02\xbe\xba\xec XW\xff\xba\x94 \xa0\xaf\x08\x0e\xe2\xb4\xd0\x94K}\xef\xec\xe0G\x98\x19\xfd\x08\x99\xe1\xee\xba9Pe\xca\xcc\x90\x99\xd4M*\xe2O\xa41\xe4\x99*\x86^z\x971\xa8\xdc\xbc\xac\xdc\xc6\xa0\xf2\xf42\xbbR\x01W\xe1G\x83E\xffd&\xf4\xb7^\x94\x84\xe4\xfc\xc5\xc2\x95\xa4\x12j^\xa6\xd8\xa0%\xcf\xeci\xe1\xfa\x03\xdci\xac\x1c\xe0\xd6\x03\xdcw\xcc&y(p\xe7\xb1\xd2u\xc4\x81h\x02?\x83C\xd8R\xd2~\xb98\x17\xd8\xc5\xbb\x02\xe0\n\"l`wg\x06`\xedo/\x13\xe0d\xd5GK;3\xe8\xe7C\x1b\x9d\x0b\xb5\xeb\x82!\xc4\xaf\xf6L\xf0\xe1\x9bC\xd8\x18\xc8L\xbf\xc2\xd3\x89\xe7yo\xb5#pN\x9c1\xac\x85\xdem\xbd\x9b\xae\x1b:\xfa\xeef\x90\xa9Y\xdf\x0d\xd6:o\xa8\xcc\xb5:\xbd7\x98q\xc1\x18\x97\x05\x95\xe2\xb96\xe2\x98\xfbF\x8f\xd0\x7fX\xaa\xab)\xec\xcf~l\xb4R\nX\xceB\xc9+\x1d\x8aK\x91\xcb\x8a=\xaad\xce\x0c\x1e\xee\x1ej+\x0c\xfb\x1a\x13&m\xa9B\xa9K\xc5\x1b\xb6v\xa3\xa0\xda6C4\x11\x01=\xd4\xfc\x12\xe9\x8c\xc1>\xa51\xb4\xa4\xd8\x80K\xb1V\x078\x0bvN\xb4\x9ex\xd0\x10f\x0d\\\x87\x9dh\x0e\xb5\xe8\xeb\x1bU\x1fcpZ\xf17\xad\xe7\xbd\xbb\x1dy\x14o}\xb6\xb1mr\xc93UI\x9e\x91J\xf2\xf4U\x92\xe7F%y\x16*\xc9S]\xad \xeb\xc5qRy\xd4\xcd\xea0\x9c\xe9\xfe\xe7\"\x80\xde\x9d\xd3\xff]?\x19TR\x14\xa1/\xf4)e\xd0\xf4\x03\xc8\xa0;\xe6\xf8\x87\xeb\"\x83\xdaH\x89\xc9@i5\xddAZ5\xcb\x8a\xfe0Yqc+\xda\x16\x18D\xdb\x0d\x15\xd1{\x03\xb0d\xc4{\xe8\x9f\\E\xa4\x18J\x07\xa0\x06S\x9f\x0d$n\xc4yP\x81\xce\xc2K\x8d\x83/\xd2|\xedk\x95\xb6\xc0\xb7#\x7f\xe1|m\x94\xaa\xb654F\xaa\x1a\xc0\xd7\xd2 \x15\x9f\xfec\xc8\xa7\xb1\x1c\x1c|\x03\\\xa8d\xe1vKR\xd6\x0bG\xf7\xb6\xfeE\x94,\xafL\xf2\xc6\xa9\x19C%\x81\xf3\x95\xb8\x02\x11\x9cw\xf1\xa7\xb4\xdc\xb9\x97\x17\xde\xca/\xcc-\xe9\xe7\xeb\x14\x8fe\x18\x83i.)Y<_\xc7\xe8\xfa\xb7\xfa\x0f\xd9\x13vS\x07;m\x0c\xe3\x84\x83\x81\xf1h\xae\xbd\xf3?\xff\x8f\xfe\xcf\xc1\x14\xe2\xce\x0c\x9c1\x1c\x97y\x94,\xddT\xe7M\xdaL\x94T!\xe8Vw\xe6\x9e\x99&\x83K\xaa[\x03\xa7\xdf\xf2II4=\xbc\x9c\xc2\xcb\\\xfa\xeb:(\xbc\xc6Pz\xe2}I <}\x86\xa7k\x91\xe0I\x14Qj\x8d\xc3&\xd3\x13?\x1e\xfa\xd8\x92T\x8f\x7f\xf6%*\xd9\xb4z\x8c\x87\xc0\x15ef\xe2{\xb2\x97\x0d\xc9*\x05S\xd9\xd9yI3W\x92\x1c\xf9\xa2k\x80|}<\x8be:\xd5\x94?\xe8\xe9T#\xfe\xa0\xa7S\xf5\xf9\x83\x9eNu\xc3\x1f\xf4t\xaa\x05\x7f\xd0B\xf2X\x8d\xe4\xf1\xc7G\xf2\xe0\x8a\xb2\x14\xa5*\x05f\xcf\xbbF\xa6\xc0\xcc\x87+0\x95Y\x8a6R\xc5edR\\~\xb2,Ei\xf2:\xbfH7%\xa6\xdfV\x03'\x1c\xf8\x91\x9f\x04$6\x00\xe7\xcc\xab%\xf1\xe71 \xb5\x01\xfe\x86\xba\xdd\xea\xb3\xb1U\xa8<\xbf\x98\xa4\x1buT\xb7\xb6R\xfb|S\x96\xf6Y\xd1\x9dy\x99\x00o\xef\xf4\x94\xfe\x11\xe0\x84\xd8\x147\x97\x1f\xcb\x94\x0fd\x93\x8aa]\x1f\xaa\x9f6\x1dT\xd4\xfc\x1b\x83\xf3:\xbf\x80\xa8\x84tS\x82\xccdfp\xdd\xd4\x17\xf7\xaeX#V\x12\xaak?i\xe1\xe7\x0c\x9e\xf0\x1d\xd0\xa8\x86\xd6\x01o`\xa8\x19\x9c\xe3\xe8\x0c\xf6jc!&\xc8\xa8\x0f\x95\xebYp\xfc\xcb\xa1\xf2\xe5P\xb9\xbe\x87\xca\xfc\"\xf3\x0bC\x91\x16\xe2E\xc5\xf1\x99\xbf\\\x92\xfc\xc0t\x94\xb0\\?\x1a\x12\x86P~\\\xa4\xc7\xab\xf4L{\xe2\x94\xba\xc3\xa0\x19XP\x8f\xd6\x0bVQ\x1c\xe6$A\xa1\x0e\xcb\xfc\x98?bG\xa6\xb7$/\xa24\x99d\xb9\xbf\\\xfb\xca\x13,\x1d\x7f\x88\xe6NO\xd7\xa4(\xfc%\x01\xc5\xfd\xc9\xc4_\xcf\xa3\xe5&\xdd\xa8\x0b~X\xcd\xa5\x12hu\xab\x0e\x0ey\x83\xb4\x18\xca\x14\x18\xc6\xe2\n@]\xea\x06\x13\xc7\xa8>\x94\x99\xdb\n\xd2\x90\xd4\xad\x15\x0c\xf5X\"V? \xa9\xa4a\xf9j\x9a\x91\xc4\xcf\"\xf6\xea\"\"qXP6 IK\x98\x13\xc8rR\x90\xa4\xc4\x8a\xd4+\x02\x85\xbf&\xc0\xf1\x1c\xd2\x1c^d$\xf9\xee\xe5\xd3\xc6\xb8\xeeY\x8e\xdc9\xdedY\x9a\x97$\x14\x0b*z\xe7\xe7d\xc0\xf8\xf8\xd4\xa0\xf0\xf57\xe7\xc0\xdbw\xfeV\xcdR\xb9J\x0b\x02\xe5\xca/a\xed\x97\xc1j\xc0g\xf9\xb4\xcd\xe0\x96\xb7\xef%l\xf6\xdcE\x9a\x039\xf7\xd7YL\xc6\xbb~k\x1f\xbf5\xf2\x1c\x11\xd3BI\xb0\xc5\x16\xd5\xee\xf3\x0f\xb0\xdf\xae\xdf\xf6^GE\x11%\xcb\xcfgs;\xafWt\x87\xa5\xdb($a\xe3u\x08SR`\xad\xdd\"#A\xb4\xb8\x00\x9f\x1eoQg'X\xef$\xbe#\xa3$\x8c\x02\xbf$\xd5\xd7$\x1b\xb9\xdd\x00|\xd9\x83\x97\x11\x10Z5I\xed\x85\x04q\xf2\xcb<\x0e\xc5\xa6\x96=c|\xca\xe7\xc7\xfd_c\xd5\xe5\xe0\xdc\xf4l\x97\x0c\xd48\xae\xfd8\xae0Q \x96\xe5\xf2\x9cm\x12\x9a\xd9u\xb7\x03\x07\x13\xb6\xe3\x7f\xafY\x92v\x8a\xa0\x8f \xc9\x9eE\xc9\xbb\xcf]\xbd\xdd\x18\x87\x0d\xb2pq]\xa9\xde\x96F/1\xe1\xa0$\xe7\xe50$\xf3\x8d\xb8\x93\xa4\xa8\xe1\x96\x88V\xb5N\x05\x1e\x1a<5\xa11\xd9^\x96\x93-I\xca\xc7\xacG\xae\x84\x92*\xf3\x9b\xae\xb0\xa2[\x89\x15\xddn\xb2\xf4N\x0c\xb4\x8b\xd9&=>\xdbT\xe9g\xa9n\x1f\xe3j\xf7\x1d\x89)\xb6\xb9\xb8+F\xacLk\x0b\xa1s=B\xe7\xed\x19\x94O\x86R\x8a\xe6k\x1b\xd9\xb0RJ UU\xc1\xf3u\x9c\x143pVe\x99\xcdn\xde<;;\xf3\xcenyi\xbe\xbcy\xb0\xbf\xbf\x7f\x13_\x93\xbf\xf4\xcf8J\xdeI\xdf\x9c>x\xf0\xe0&\x16 \x94\xbc\xabM\xf0\x93\xa5\x05rc3p\xfcy\x91\xc6\x1be\xf9{^\x05QQ\xbcF\x94?\xdc\xef\xa3\x7f\x17\x99\xd5\xd3J\x16\x85\xc5\xbc^\xac\xe7i,\x9d\xdamD\xce\xbeO\xcfg\xe0\xec\xc3>\x1c\xd0\xff\x93\x0c\x06\x0bNm\x928\x0d\xdeu\xd3\xd3\xe9z\x97\xb1<\xe0\x12\xa4\x9b\x81\xf3|z\xc7\xbb\x0f\xf7\x7f\x98\xde\xfe\xf9\x8ew\xf7\xd1\xf46\x1cx\xf7\xf6o\xc1\xf4\xc0\xbb{\xf7\x0eLa\xba\x0fS\xb8\xe7\xdd\xbau\x1b\xa6p\x97?\xbd\x0bw\xbc\xbb?\xdf]\x1dl'\xde\xfd\xfd\xe9\xa3\xfbp\xcb\xbbw\xe76\xdc\xf7\xee=\xb8\x07\xb7\xe8K\xb7\x82\xa9w\xb0\x7f\x8b\x0e\x07\xf0\xd9\x01\x1cx\xd3\x07\x0f~\xbe\xff\xc3\xed`\xe2\xdd\xb9s\x0b\xf6'S\xf0\xee\xde\xbe;\x99\xc2\x14\x1fM\xef\x05\xfb\xe0\xdd\xb9\xfd\xc0\xbb}p\x9f\xde\xbb\xf5\xc0{p\x87>\xbd\xb5\x7f/\xa60\xf7\xbc[\xf7\xef=\xba\xe3\xdd\xbdw\x00\xd3\xfb\xde\xfd\xbbS\xb8\xeb\xdd\xb9\x03\xd3\x07p\xcf\x9b\xc2\xf4\xc1\xea\x8ew?\xa0\x9f\x80}\x98\xd2\xcfL\xe8W`J\xbf3\xa9>swB\xbf\x13xw\x0enO\xbc\xe9\xdd{\xde\x83;\xb7&\xde\xbd;\xec\x07m\xee\xee\xcf\x0fh\x97\x1eM\xef\xc1}\xdaG\x98\xde\xf5n\xdd9\x80\xfb\xc0&\xec\xdf\x9d\xf9\x1f\x8d>\xf8\xca_\x9bu\xff\x93\xac\xe0\xf3\xe9\x01\xdc\xff\xe1\xfe\xcfw\x10l\x10\n\x7f\x82\xd5\x97\xe4\xb9\xb8\xc4\xe2\xdf\xf6n\xdd\xbe\x0f\xd3\xdb\xde\xfd\xdb\x0f\x82\x89w\xfb\xee\x03\xfa\xff\x93\xa9wp ~\xdd}p\x0f\xf6\x9fQ4\x98z\xf7\xa7\x0f\xe2\xc9\x81w\xf7\xce\x94\n`\x07\xdaW\xf0Q\xe3\x1f\x04\xa0\x98B\x1f\xc7\x07\xde\xbd;\xf7'\xb7\xbc\xe9\x9d \xfd\xf9\x00\x7f\x1e\x04\xb2\x97\xee\x8b\x97\xaa\xdb\x80\xb7\xc5\xcf\xaa\x83\xf7\xbd\xe9\xfd[1vor\xcb\xdb\xbf5\x0dto\x80\xe8z\xf5\x9ca\x1a\xed\x1d\xf6\x89b\xc2\xf4\x0e]k\xf1;P\xbe\xf2)0AY,\xf7\x12\xf8p\xcb;\xb8\x03\xd3\xfdgw\xbd\xe9\xfe\x038\xf0\xee\xdc\x0f&\xde\xc1\xdd\xfb\x13\xef\xe0\x1e\xffqo\x1f\x17\xf7\xc1\xbd\x07\xe2\x81wo\x7f\x8a\xff}p\xf7\x01\xec\xc7\xf7\xbc\xfb\xb7\xe0\x9e\xf7`\xff~@!\xbc\x83{S\xfc\xef\xbd}:[\xf4\xc5x\xd2\x80\x99\x08 \xfa\xe9)\xb6\x83\xdf\x11\xed\xd2\x15\xec4\xfcL\xf4\xf3\xd3\xce\xfa\xa4\x1fyy\x89\xa9\xbf\xe7\xdd\x9e\xde\x07\x9c\xf8\xc0;\xb8w0\x11\x93\xc6~<\xb8\xf7\x00\xf6\x0b\x9c\xcc{\xfbS\x9c\xc8\xbb8\x91\x0f\xf6\xef\x03\x9d\xce\x00\x97@\xcc\x14\xfb\x81/q\xa0I\x05\xd4XQ\xfc\x14N8[\x81~\x93\xb8\xf3\xe9t\xc7\xd8\xc1\xc9=oz{\xfa\x81\xe6\xfd6\x1c\xdcV\xcd;/\xcbqe\xd3\xfd\x00\xeemo\xffp\xc7\xbb\x7f+\xbe\xe5!)\xba\xf3\xe0\xd9}\xb8\x1bO\xee\x02\xfb\xdf\xd4\xbb=\x9d\xd0\x7f\x9eQ(\x98\xde\xfa\xe1`\xfa\xf3\xbdO0t\x16\xf1~e#\xdf\x87\xe9\xfd\xd5\xed\xed\xe4`5\xb9\xbd=\xf8\xf7\xf3[pw{\xb0\x9a\xde\xff\xf9\xee\x0f\xb7\xfe\xbd\xbe\x05\xf7V\xd3\x83\xed\xe4\xe0\x87\xbb\xdb\xff\x8f\xbdw[r\xe4F\x16\x04\xdf\xfb+\x90l\x9d*\xb2x\xc9d\xd6E\x123\xb3\xb2\xd5j\xe9\xb4\xd6T\xdd2\xa9\xfa\xcc\xce\x90\xacj0\x08\x92\xa1\x8c\x9b\x10\x08ff 5\xd6\x0fk\xfb\x03\xbb\x0f;f\xbb/\xfb0k\xf3\xb2f\xfb\x0b\xf3)\xfd%kp\x07\x107D0\x98U\xea\xd3\xe7LS\xb2\xca\x08\x04.\x0e\xc0\xe1\xeep8\xdc\xcf\xeb\x9d\x1d|\x1c\xc5\x84Q\x18D\xfd\xf3O\x07\x13\x9a\xa6\xfe6\xaa\x9f+G\xfd\xe9\xd9Y\xd5\xa6\xd47\x1f\x9e9\xce\x95\xd5\x87\xe9s\xc7\xb9\xb2\xfa\xf0\xb4\xbaCK\xf1\xc3\xf3j\x13\x81\xf3F\xa5\xdd\x9b\xa9\xba\x9e}\xee0u\xdddA\x80\x9f\x9f\xbb\x82\xedxq\x18\xc6QH\xf9\x8d\xce4\xad\x1c\xc5\xba\xd4$\x9ekP\xd5\x0f\xce\x10R\xee\x91+\xf5\x19\xdeX\x04\xd1\xbb\xf5[\x0c\xd7\x95\xd0}\x8b~\xd6_D|\xc3\xe0\xc3|\xa9S\xfc(\xf0#\xf6*^3rEN\xa6\xa5T<\x0d\x85G\x9d\xbeR\"(\x1e\xba\xaa'\x9d\x8aJv\x86\xa7\xa7\xe6\xc5\xb4x\x9f\xc4[N\x93\x9d\xfe\\x/\xa0S\xbd\xf7\x1b\xe7-\xa9^\n\xe6y=rrE\xc4}\xc2\xe2\x0d\xea\x8c\xfa\xa0\xb1\x19\xc1\xc1qOOWoP\xedL\xc4nIV\xe9\x89J\xa3:\xcd\x8b\xb9\xc9\xe6\xd7\xbb\xa6\x92c\x93\x9c\x056-\xad\x8d\xba\xbd\x1e\xef\xc1\xd5\xc9\x8c\xb3~0gK\x03O\xcaD\x1f\xae\x1e\xfe\xfc\xbe\xba\xa4`\x08r\xf3\x11\x95\xb5UY\xc5\xfb\xc5\xa6G\x84\x15*\x1c\x95j\xb2\xa0tR~\xa9Z\xcb\xfa+\xb80\xc9\x06D\xecx|\x0b\xfd\xfe\x8a\xf3\x98\xf7{\xff\x81\xc7\xd1\x96\xfc\x993\x85\xdet\x15\xb0?\xe3\xa1\xa4\x18\x11o\xc7\xbc\x1b\xb8\x9c\x7f\xea\xa1\x13\x8e\xea\xbd0\x8b\x9f\x18\xabF\x8d\x8cM\x1a\x8c\x88\x02[\xab\xe7!\x87V\xe4\xdc\xb0\xfb\xb4_\xfc6\x98lb\xfe\x15\xf5v\xb9-{m\xd5`sy\x99y\xb4\x84i\xc4\xa6\xcd\x1b\xd7Z\xbf\xbe3+\xc4\xd2\xaa\x10\xc6\xa6\x01W\xd4\xef\x8a\xb4\xde\xf93\x8a\xb8\x82\xc1\x87zj\xaa1\xa1\xfcp\x9dj\x06#\x8d\x99\x9e\xae\x18\xf29\xd5\x91\x16\xedU3\x1eK\xd3~4\x18\x91H\xd3\x89&@\xf4\xa1Z\xb7\xde\x01:!\xb6W\xd6\x94~@\x14\x86\xcea=\xe5\xf5\xa4RZG\xe4\x1b\xb3\xbc?\xe2\xb8D\x15\xbax6\xfa\xa0\xa1\xea\x06\xe2\x03\x06\x0c+\xee2l\xe0\xf7+\xe6B\xd1\xa7M\xe1u\x92 ?H\x0dC\xfe\x15\xf9(|\xbd\x81\xa1?u\x1e\x07\xf85%\xa6%\xb1)D\xfeE!\x01\x9c\x8e\xc4\xa6\x97[&~\xcb\x19U\x14<\xb6/\x0ebZ\xec\xb6\xaf$\xa7nS\xe3\xe0\xba\x9b\x98\x93\xbe\xe9e\x0e\xe1Hk\xfc\x03\x16m\xc5n\x04B\xca\xd9\x08D\x92^\xef\x82\xc4\xe3\xf1\xc5\x80P2\xbc\"|\xce\xe6\xfeR1@\xb6T\x8d\xf8\xc3!\xb6\x84]r#\"-\xcea\x1d\xfa\x8f\x0b\xf7x\x9a\x03>\x1c\xfa\xe4\x92\xc4\x17\x03\xd2\xc3\xa5\x80\x8e\xf3m\x17\xc85\xf6\xaa\x80\xa0\x06\x19U\x16s\x0ej`\x9a5\x8c\xc1Q#\xf0\x91\xb0s\xb2\xa3\xa9\x0bC\xd5\xa7,b\xa9G\x13\xf6j\xed\x92=U\x0e\xce\x92\x80z\xec\xabH\xf8\xc2g\xa9K\x12U\xd9\xb0\x9a\xdf\x8b0\xa8\x8b\xa4?\x17\xb4\xfa\x19J\"?e\xb1`o!\xa6\xd5a\xed~\xef2/\xf3rQ\xd8\x88\xbe\x1f\x95\xeb\x03\x95QG\xb2\xd3\xbb<-\xd4\xda#C\x92b\xf6r\xed\x1eR\xc4.5\xb2\xb9Xj9\xeb\x9a\xf4.\x13\xce^^\xaa\xe2P9\xed\xc3g-\x17\xc0u\xe6\xcbS\xf8zy\xaar\x16\x00 3\xd2\xebR\xb02\x0e\x1b\x16y\xae\x85=R2`\xe0\xe2\x0f\xdeH\x91F\x08\x1d;\x17\x8ekjkX\x1b\x8e\xc305\xeb\x93\x80F\xdb\xef8\xdb\xf8wu\xc9)Q\xe4\x9a\x86\xa9K(Q\xdf\xc1\xc9\x0c\xf8\x9f\xd1\x19'i\x12\xf8\xa2\x7f\xbaH\x87\xa7\xdb\xc1@\x87\xf2\x86H\xde\xbc\x1f\xe0\x12\xc6\x1e\xbe\xf5\xb2T\xc4\xe1\x88x\xf3\xb3\xe5\xc0\xfa\xb1p\xe5\x99\xab,\xcb\xca8\xd4\xed\x17U7\x1f\xe3\xd1\xe3U\xef1\x19\x92\x1d\x0c\xbb\xdf\x8f\xfb\x9b\xc1@\x8d\xf8\xe3\xde\xe3R)\xa7)ia\xc6\xd5\xbc\xad\xd5L\xc1\x0c\xf6\xa3\xc9\xce\xdf\xee\x02\x88p\xf4\xe8\x11)\xbcj\xc3\xd5B\xca\x88\xcc\x133\xd90\xeb\x1e\x15}o\x80n)\xfa\xf6\xd3\xa0\x15\x83\x1c\x88\xa1\x87DK\xeb\xd9d\xc7\xe8\xda\x8f\xb6\xb5%\xd8\xbabv\xaa\x0d@\xc7\xdd\xb7l\xcf\x02\xecb\xb95S\xf1\x91k\xd1Yum\xad\xef\xbap\x00c\xda\x1bM\xeev\"\x0c\xfe\x98\xc1\xb1\xed\xe5\x8e\x93\xd3\x97=X\\;\xfe\x12<\n8\x87k\x95\x05\x01\x13o\x03?\x15\xdd T\x168\x08S\xa1\xa2#G#\x0b\x9a\xa7\x13\xea\xf3\x05\x0b\xbbC\x17\xf8\xd5Y\xca+\xa9A\xd6\x0cU\xe0\xd7;\x19s%\xaa\xad\xdd\xc3\xd5&\x98\xaa\xb9v2\xc0\xdee\x1c\xe8e\x03\x95\x93\x97dJ\xae\xc9c\x92\n\xca\x05\xaeP\xf3 \x96&FTu#L \xbc#'!n\x99\x04E\xb5`[\xdf\xa9\xcfE\x06!\x80\x0c\\\x93\x1e\xa2bR\x9d\x99\xbc\xe6N\xe0\x9a\xe1<\xe9\x17jW;\xe659\x07\xe1\xf1%\x05\x1b\x10\x03\x07R*\xce6\x06\x06\x0c\xf3\x15\xbb(\"\x8c\xc1\x11\xcb\x8cV+\xf0C\xba\xed\"\xb2\x9b\x01|LR\xee\x95 M\xb9\xa7\x01\xad\x8fS\xf6\xd0!oX\xbd~\xb85Q\xcf\xfa\x8f \x0d\xf4hc-4P\xf3\x80\xcc\xd5$\xa0]1.\xe1\xc7\xbd\xc7\xeaO\x86\xeb\xbfH\xbf\xc9i\xaf\xb0\xd0+#\x04\x11D\xbb\xd3C\xc8^'\x16X\xcb\x113\xd5T\x8f\xe2\x81G@\xa3\xb27\xd5r\x0c4\x0d\xf5\xac\xe2\xf5\xfd\x11\xd0\xa8\xecM\xb5\x1c\x03MC=\xfc\x08Pxm\x9e\xf9Q p\xd7\xa8v\xa2\xd8\x1d\xb8\x94\xd8i.E\x03\x7f\x1bi\x0eu\xaf\xd6\x8d`wb\x0c\xa93\xa43\x98\xa3\xca\xac\xea\x90\x1d\xd3\xb7]\xad|\x1d\xe5\x1e\xda\xb3\xf5G\xee\xd9qh\xbc\xae\x96O\x05\x8f\x1d\xa2jc\x15\x98\xbf\xa1\x96# q\xd7s\x8c\xe0\xc5BG\xe9# \xa8\x97_\xb3\xa0{\xf3k\x16\xb8\xca\x1f\x01\x80\xa3\x06?J\xbbC\xe0G\xa9\xab\xfc\x11\x108j\x08)\xaf\x0b\x15\x8d5\xa8\xdc\xce\x1a\x8e\x00\xc2UG\x9a\xad\x0e\xad\xb5\x1c#\xb3U\xf3f\x1e>V\xebN\x8e\xa8;i\xab\xbb&`\xee(_\xaf\xb4.\xf1\x90D\xa1\x1b\xa9\xec\xa4Vj'\xb5\x88P\x12\\9\x88l\x1ao\xc4\xd1M@\x81\x94\\whM=\xd6);\xbb\x13\x1d\x07\xad2T\x95\xf1\x11a`N\xcb\xbaTV\xac\xaa^\x93\xa0\xdb\x0f\xae\x87\xaeVu\xae\xd9R\xd3\xe3KU\xe2\xa0\x14\xf7\xf2\xb1\xa3\x99#\x16\x85\xca_SB\xc5\xb1\x88b\xc1\xder\xb69\x04\xad\xe1D\x7f\xc8\xc2\x15\xe3\x08\x9f\xbf&C2\x1dLD\xac\x1d\x938N\x97\x95\x88\xdb\xdbD\x9cm\xc0\x10\xdb\xc9\xc4P\xea\xcdV\xdf\xac\xc9Kr\x06G\xa6\x9c\x0c\xafHof\xf5\x0c\xf0u0\"\x8f\xd5\n2\xea\x1f\x03\xffX\xd5\xfe\xd2\n\xfd\xbf\xdeD\x8fuL\xdf\xc7=\xe2\xaf\xaf\xac\xc4\xff\xb8\xf7rn>\xf5\x96Jxw.:;.\x80Y]wD\xba3eI\xf8\xf1\xe5\x8eW\xc1M\xc7)Kz\xb0N\x14\x1fn\xce\xa22\xc0\xec_\xa6\x0c\x9a\xaeeSY.\xe3\xa0^\\m\xa1\xa1|k\xcf\x8e\xc0\x9f8PM\x9dj@\xeaT\xc4\xd6|\x14\xea\x07>\xcc\x0fNX;j\xe1l\xd6\xa6\xde\x17,\xac-\x0e\x0b\xcc\x11\x1dt\xe9Kl=4\xf2v\xf1\xc1CE\xb3Fr|o\xefR\xd7\xc5\x105-\x06\x92\xe3|\x01\xe3\xabC\xb4\xa2\xde\x0d\xac\x90\xbf\xfe\xaf\xffM\xe1|e\xb0\xd6\xc7\xc8(\x0e\xcd\xd9\xfa\x08\xcd\xdbZ\xd4D\x9c#\xf6^\xeb\x9a\xb0\xb9>N>rC\x7fL\x0d\xc2Q\xc3Q\x02\xf3\xba\xb2\xe9+\x1f\x03\xa5\xe4\x8ad\xc5\xf3\xc3.\xcb\xa8_\xe4\xa4\x84\xf5]\xc4\xa9\x90}8\x8c\xc8\xcb+\"\xf4\xe9\x1a\x19\x93s\xc5\xc7\x15\x9b.+\xcaP\x13\x05\xd6\x07F\x0b\x85/FmU\xd2X\x89\xb9B\xbf\x82\xc6\xea\xac\x9c\xac\x99\xa5iU\x15\xafh\xcf\x8a\xf5\x9c\x97\xda\xd4 Z\xab\x85=Tip\xc5\xb9\xd4\xcf\xf78P\x03ri\x8f\x0f\xa1\xa9\x8a\n\xd5*\xd9\xecya\xaf.\xa7\xe4SS<\xa8\xcd \xf5\x03\x0f\xfa\xea\xc6]1\xb9\"\xf3\xda\x94\xcd{@\xa8{\xe8\xdb\xff\xec\xf9\xc0q\xf03\xef)\xden\xb2\xbcpg\xe1l\xc38\x8b<\x08\x13\x0f\x19?ug\xd4S\xaa3}\xe6\xced\xe9\xa2\xa0~`\xf2~\xde\x0c\xdc\xb9\xce3=k\x82\x0e\x8e-C\x16 \x03\xdft\xea\xce\x9a\x86\x94\x0b8\x06\xb49\xcf\xdd9\x03?\xba\xf17\xf7&\xd7\xd3\xc1\xb2\x94iy\xc4q\xbf\xc3z\xaahd\xc5\xcb\x84\xdc\x1ej+\x92pvA\x18\xb9$\xb1F\xc6\x0b\xc2\x86\xc3A\xa1\n\x8c$\x12\xcf\xd9r~\xb6\x1c\x11x\x98.]\xa6W\xc5\x03vm\xe5Q\"\x10.n\x84Gi.\xf8\x04\x9a\x02D\xe66X\x01\xa2-\x13\xdfg\x01K\xfb\xbd\xde``\xe1\x16\xe4\x92D\x17D(\xf0\xf9\\,\xfb\xac\xd1\x84\xe3\x03n\xc3\x95,A\x1a\xbb\xc6\x8a\x160\xd7\x84i;\x17\x1c\xcb:\xe1SC6\xb3\xd4\xcae\x01\xa9\x830\xb1I\xca=s\x88\xde?]D\xa7[\xbc\xf6:\x11\xdc\x0f]\xe2m\xc0\xf6,p\xde\xdeRm\xa532?\x1b\x91\xa9\x03?\xf3\xbb\xd8\xf32^\x82CWm\xc2h\x0c\x8f\x14X\xa3\xa2\xbd$\x9b\xb0h?\xb2\x1d\xff\xd8\xc6\xafO\xab\xb6\xaa\xdaJ\xe6y\x93\x91\x0c3\xa7\xb6\xbe\x0b\x0b)\x9c\xe6\xa6#\x12\x8c\xe0\x18\xbb~\x04\xfd\xec\x9c\x9c(\x82<\xf1v\x94\x7f\x19\xaf\xd9\x17\xa2\x7f\x96\x9f\x17\x8f\xa7\xf5\"\x9fO\xebE\xa6\xedE\xb4G}f\x1d\xe4\xf7\x96\xb3^{\x11j\x96x\xa1\x8b#2_\x0eF\xa4\x9f\xc1\xd5b:\"S\xe07gDJ\xf2\xfc\xb3:T\x19\xc8}\x8d\xcd\xc0r\x0c\xc8\x15\xa1\x93$N_\xd1\xbb\x11\x8a\x01\x8a\xc1]\x90\x94\\\x92@\xb1\xb0\xe9\x19\xd4L\x01E\x0b\xb5\xa7\x83\x0b\x92\x0e\x87naR\x873\x0c|\x8f\xf5\xcfG$\x1b\x8c4[\x86C}\xf3\x05\x9a\x1a\x91\xd4\xa0\xb9Y\xf4\xe4\x9a\x8c\xa7dF\xfa>l7\xd9\xde\xa7H\x07\xa5\xac\xa7)\xda8\x18\xe9;\xd8\xd0F%\xc7\x1c%Xo 2m\xe3\xc7+\xb2\x19(X\x1c\x14\xb0\x1bq(\xd0=\xf0'\x82Q=p\xa1\xb8\xccF\x0b\xb4\xa4~\xc9\xd8\xd2\xca)\xd2J\x9aKM\xd3\x12M\xac\x954\x0d8\x85*Z=\xde+\x89R\xd4\xca%\x8dR\x92\xaa\xc0J[.a\xcf\xfc\xa0\x03jY\xd3\x82\xc6\xe2\x82\xf0\x82pt\xd2\xef\xab\xf5\xed\xf7\xf9\xa8`R]\xa56\x88\xe3\x83\x8b\x01\x10 \xaeQ'68S\xb7\xd40\xbfb\xc3\xaa\xe4(o\\\xe1Q>\x14 \xde\xa1=c\xde=\x9bx\xc8[\xef/N\xf9\\6W\xcf\xa6U{B\xaa\xd3\xab\x86\xf8h\xed\xff\xec\xfc\xccIA\xd3\x9c\xbc\xd4\xccp\x14t\x9apB\xe4\x80\xf5\x88\xecFd?\"\xe1\x88l\xbb\xd1\xc5\x03\xa4\xf4\x01t1\xa8\xd3\xc5\xd4\xd0E\x0f\xe8b0\"g\xedt\xd1\xeb@\x17\x13rE\x02K\x17\x15\xd1\xf2\x90.n\xc8%\xc6p\xe8?=G\x8a\xb6\x86\xac\x15\xea\xb8Ac\x9c)R\xa4\xf5\xe0\x82lj\xb4\x12\xc8\x80\xaf\x00\xde\x1c\x80f\x0fM(\xc1R\xc7m\x1ca\xfc)\x03\xa4\x82px\xa5(\xc3G\x04\x0fZ\xb6\xf5\xed`\x1c7\xea\x91\"\xc8\xe4\x9a\xf4\xc3:`\x16(%O@\x86^\x0fSw\x83\x02|\x1a<\x07d\x17\x03\x05\x8c\x93\xad\xd8\xd2\x9a)9J[\xde\xb1U\xbc\xacoX\xcdtD\xbcA\x99M\xa4\x93|s2\xdf\"w\xa8\xa6\xb9.\xbe\xe8\xb8\x9c\xa1\xc3\xe4\x0d\xfc?\xecK\xe9\x8a7m>\x1eS\xf1[\x99\n\x10\xccB\x17\xb4\xc7\x8eR\x92\xb6\xa1>\x92\xff\xf8\xc7\xf3\x9f\"g\xf1\x1b8K\xce\x99\xfc\x1agr\xf2\x1f\xffh\xfe\xe3\x1f\xe2?\xe9/\xc4\x7f\xfcv\xfe\xe3\xbb\xf8\x8f\xff7\xe5?\x0fA\xc1F\xfc\x83\x01\x8fpw\x07n>\xec\x0e.\"\x97\x84_\x90H\xed\xe0JX\x01\x08\x16\xcf\xa3\xe5\xc0\xce\xba\x99\x07\xbd\x03\x11f\x00]\xbb\x10\x91{\x8b\xfb\xd7\x1a\x0d\x90\xcaK\xdb\x0c\x18\x80\xfar\xc2{d\xb5\xf4\xa4b\xf8LJ\x0b\xd9\xaa\xd5\x816\xb1\xfc\xa2\x9a\xddx\xd6B}\xb5\xe8\xdfz\xc5c\x17\xa4\x06\x85\xf5\xc7\x8cB\n$t\x85\x8b\xe6F\x1cF2\x0f\xe8\x8a\x05#r2\x053\x1cGUE\xfdV\xb9\xae\xe9\x88$Z\xce\x0e\x14IMM5}`'z\xfb\xcc\x06#r\xb2\xa9^$\xd2\x93\x9d\x0f\x05\x18%\x0e\\\xdd\x04\x04\xa4\x96\xe4\x95K\x8c\x0en\xd6I\xbeaw\x9c\xc348Q\xd1\xdbpo8\xac}\x06/Q\xb9\xb2\x83:\x15\x1an0\xa0']\xe0%\x0e\x98[\xa0%\xfa\nmK\x90\xc3\x96\x0e\x11\xdd)\xdc% *^\x93>lG\xe7\xcbAG8+\xb4\xbf\x19\x12\x81\x0eh\xda\x82\xcdv\x006\xeb\x08V\xa3\x8e\xc6\xfc\xac\xae\xc6eEh~\x06\xa0\x96j\xac\xfa\xa50\x8c\x1f\x0c}\x95U~\x8cQ\x1d\x8f\xbd\x06\xb8\xe0\xe2\x8a\x82\x1eh\x02\xd0&\x886\xab\xd7x\xfei9\xc8\x97]\x91ji\x83\xf5l\x80\xf2\x8c\x9b\xd3\x9b\xdcs[,\x97@\xac\xf6<_$q\xd2\xcf\x03\xbe\xc4\xf9\xbe3\x8b\x04\x9cg]\x17\x13fJ\xac\xe1\xa8%\xe5p\xa3\x87p\xb5\x1c\x1f\xba\xe6\xf0\x98\xee\xe1\xab\x0e\x0e\xd6Z\xc3|\x1b\xccj\x98\x12\xb7\x14\xe2#G-\xf6\xc9\x1ft\xa3\x84\xc4\xd1\xcbC\xb8u\x10q\xea4\xb2\x96\xd2\x0567\x95n\x83\xae\x05\xb2\nT\x1f$W\xd9d\xbb\xbf\xe6\xcd^\xfdruo\x7f>\xee\x0f\x16\xf3\xc5\xf2\xe7\xf7\xc3\xeb'\x93O\x16o\xe4h\xf6\xeb\xcb\x93\xc5b9\x00E\xf0b\xf1\xc9\xb4\xf71\xf6\x10\x0ey\xa5\xb8\xbb\xef\xb0\xb7()\xcf\x1a\xb6\x0dy\xce\xef\xd9\xf6\xab\xbb\x04\xc4]\xb8&\xd4\x7f#\xe7=\x08\xd2\xb8\x88\xfa\x83\xf9\xf2\xf1\xa27\x19\x9d\\\x8f{\xfafO\xaf\x87\xc1\xb7\xb8\xb9\xdb\x83\xa6\x82\xcbA_\x95*_t\xaeC\xd31n\x97\x9d\x804[\xa5\x82\xf7\xa7\x0e\xbc\x1cL\xd2\x98w\x0cN\xaa\xeb+\x9ck\x9a\x13@W\xbd\xa5\xeeI\xec\xdf\xa0\xff\xc9\x03\xc7\xa5g\xe4\xa3\xc2h\xa3\x82\x04_\xfa\xeb\x11\xe9m{j\xe7\xbb\xb1\x92Q\x9e\x17E\x933$\x98\xbb\x92\xc0\x1e\xa3\xc0\xee\xa6+\xd5\xed\xdd\xce\x9c\xd5\xba\xf3\x93\xe2\x86\xb2\xafH>\x14\xb0\xd2{eo\xf9\x12\xe8\xb2\x18\x8f\x9bk#\x06\n\xc1\xee\x84\xdeLP\xbd\xd9\x1b\x1c\xdc\x1b\x9a\x9f\xd5\x80\x9f\x8d@OF\xf3\xdd\xc6f\x12\xd0T|\x13\xad\xd9\x1d~\xf7\xb4\x0c\xb7g\x81\x11\x8d/@|\xdfL\xd8\x1d\xf3\xfa\x19\xe8-\n\xa5^\xa2\xfa\xfc \x95-\xfe4e\x83N5\xd3\xd9\xe2\xcf\x8a%\x99\xde\x98\x06#\x92\xa0>\x8d\x0cI2\x9f.\xf5\xe0v\x08EG\x0e\xf1\x99\xe2\xef=\xb8q>\xbeo\xd6L\xadc\x07\xb5\xb6\xc5\xb1\xde\xb5\xb8\x91\xcc\xcf\x97\x1d\xa2\xe7\x91\xc3\xf2b\xf1\xf7\xd0\xee=d\xeaT\x0f\xba\x15\xf9\xdb\xcc\xce!>_\xfc\x1d\xe0\xf9\xc5\x9f\x82)\x80\x05\x93/\x921I\xe6O\x0d\x8a6\xabR\xcc/-ho\xfa\x01\xb9$Y!\xe1!\xfd}\xc8t\xd9\x95\xf6K,\xa9\x12aT\x04\x0d(\x8d\x91\x98}\xdd\xf4\xd9\x08\\\x1b\xa4#bR\x04\xea\xb4\xdb)\xe6\x07 7&\xd5\x1cZ\x9c.\x86c\xb9\x98,&rq\x8d\xff\xc9\x93\x93\x93\x139\x1a\xc9\xf1\xf8\xb4~\x98q\xba\xe8\xf7=)B\xc9e2X\x0cN\xb7~\xfd`\xa3>w\xde\x8c\xf4\xfe\xfb\x7fsL\x11W\x1f\xfe_\xc7\x87D}\xf8\x7f\x1c\x1fD8#\xbd\xbf\xfe/\xffw\xaf\xf4\xa5\xc1\xda\xa6\x8b4\x95\xcbQ.iIk\xab\x8a\xbe}\x1a\xe4\xa5\xd2\xde\xa8\xc8\nS\xcd\n\xd3&VXc\xc4v\xd3\x94v\xe7\xc7\x19)\x97;\xcc\x96I\x91\xed*,\xcd,\xdb\x85\x95 gQ9/U\xafx\xd0<\xc8Oz\xfa=<\xa3\xb9&\x01\x99\x91\xc0J\xc3\xf1\xa8\xdd\xf6\xac\xfa\xd3\xd2\x97?\x17\x13\x11\x7f\x1b\xdf2\xfe%MY\xbfbtS\xfc\xa9e\xc6'\x82\xa5\xa2O\x07\x16^Z0\xbf\x18\x8eA\xec\xfe\xef\xff_oPH\x9d\xfc|>z\x0f\x1f\xfe\xfa\x97\xffZ\xfc\xd2\x9f_\x9f,\x07\x7f\xfd\xcb\x7f\x85\x8f\x9fL'\x93\xfa\xd7\x9f\x9f\xe9\xb2\x9fL\xd5\x7f\xc5\x0c#[\xef\xa8T\xee\x8d\x9c\xbf\x19/\x07\xe3\xf1\xb8\xaf\x1e\xe4'\x83\xd3m\x085\xfc\xf5/\xff\xfb'\xe7\x95\xbc\x8bt0\x1e\xf7\x17i)\xdb\xffV\xcb6\x7f3^\xa4\xaa\xd2>>\xd5\xb3\x83\xff\x96\\mM?\x8an\xd5\x12\x8d\xf9\xe3\xde\xd2E\x1c }[\xa7\x08\xa7\xf3\xf1\"\xc5\xdd\xd1\xf2\xd4\xb5\xc3\xa2m\x16\x8a'}a\x0e\x02\x01\x7f\x8d`\x0e\xd3~\xe2#\x120\x85\xbc\x85N\xd6\xdb\xc8\x0e\x98^\xdb\xad\x04\xd0em\x10k\x13\x914WF\x91<\x80\xde\xf8\xceM\x9b=\x92\x1d\x91\xfb\x11Y\x8d\xc8\xdb\x11\xb9\xfd0\x82t\xab5\xbf\xab&\xc2\xb4\xd2\xc4`u.\xc5\x9a\xccFaK\xaer\x88a\xe8\xb60tx\xfct;\xdf\xea\x9c\xe4\xf2\x8al\x06\x17d;\x1e\xb7\x9c(\x99_a\x0c\xb6\n\xb9P\xae\xd2\x9b\x14\xd8_\xd9\x15<\xe8,[\xb1\x19v\xe1\x82(\xc1\xca\x03\xc2\x18\x97vAz\xe3\x13\xe3\x86\xc7\x1f\x0c.\xda\x87\xd9\xfc\xc0\xd7\x07\xb9\"'\xb4\xafPX\xefN\xc6d\xaa\x05\xc2\xd4\xeeW\xa6#rO\xaeH\xef1NL\n\xa6\x89\xa0:\xc0\xb2\x01\x1e[']\xe6\xc3\xfcT\xeb{U\xc3zDB\xf57\xe9\x06\xb5\xf9\xc1\xa0\xb4\xcdc_\xcd\x83\x9a\xcaQeJ\xc9f\xa0\xa7\xf4\xa8\x06\x89\x06z7I\xfdh\x1b0\x18\x8a{\xd5R\xa1r\x95\xb69f\x18\x8a\xbf\x1c\xe0{rM\xfao\xe7;\\j\xc5\xe3\xca\xcc\x91<\";\xb46\xc8\x89 Z\xc4\xce\xcf\x97\x15\xb6\x91\xf5\x0b\x02\x80\x9e`G\xb9\xa7K\xd0&\x7f\x0c\x10\xce\x1e\x08\xc2t\xa9X^qI\x1d^+\xae\x9fj\xca\x8f2V \xbe\xd1\xe5WW\x836\xfd\xf6\xe4\x9a\xdc\x1e\xb3\xcf1?\x18\xc5V\x1d\xb4\xeb\x97\xc4\xe9\xcc\x0e\xddQ%\x11ug\xc4\x11\x07\xbb\xed\xa7\xf7J\x9b\xce\x85\xc0j5T\x8b\x03VH\xff0\x02\xf4\xfe\xfa\x97\xff\xe2\x8a\xa0\xea\xfa\xbd',H\xd9G\xad\xfa\xa3\xee\xc1\xc0\xc0\xbc\xea\xf8\x15\xe4\xa9\xdb\xdb[\xf9\x1b\xb9\x98-N\x17\xa7N\xb9\xc9o\xd4L\x9f\xbe\xb9\\\x9c\xd2E\xfa\xe4\xe5\xa9\x91\x90\xda\xc5#Z3^7F\xe8s\x87^CX\x0b.7\x06\xab\xce&\xe82\xaa\xf9\x9c*\xe3\xc1\x8c\x9c4\xc4\xae`!\xf5[>\x8b[_\x08\xc6\x9b+\xd7\xf2\xf2\xd7Q!0g\xd3\xdd\x16\xf3Ko}\xe1\xed\x14\x92l\x99x}\x9f\xb0\xfeA\xa1\xc1\xa3)#\xbd\x8c\x07\xbd\xd9Add\xc7\xacy%\xb2\xccH4\x81\xc8dl\xfd\x9a\xddu\\\xf60\xaa\xd0\x83?\xf1\xc0\x11\xf9\xa6\xfak:w*\xfe\xe0\xc2n{6\x1c\x08\x98\xb5\xbf\xaf\xa1\xe8)\x90D\x0cjF\x18\x96\xafTB\xbf\xb0\xa3z\xa3s\x9c\xfa\xa3\x92[\x9b\xa6\x9f\xe3\x0c\xcc~j\xfcb63Sg\x8ez\xb9\xea\xb4\xe8\xf2\xf5\x11\x0b\xfc\xe8&\x9d\x11V\x1f\x12\x9a\x89X}U\xcb\xa4\x1c\x93\xda\x15L\xea\xd8\x8d\x0co:\x80*\xeee\n;\x80:|jg\x12eA\xab\xe2E\xdf\xc3i\xd8\xe3\x14,\x95\xee]\x96J\xce\xb1\xaemk\xee;\x1e|\x14\xb6+\xa0o\xb9\xffX\xe7\x1f\xb9\xdb\xa0\x1eXD\x822);\xea\x14\x04\xea\xd1\xb7\xd0\xb5\xdc\x9d\xabr\xb6 \x9f[Vw\xfa\xe6\x92\xce_.\xd2\xa5a\x0d\xdb\x01\x1a\x87\xea+\xa3\xbb\xf1xD\xfc~\x9a;\x18P\x89\xc3\xe1@\xc9\xc6\x90\x0bR\n\x9b\xaf\xbc\xad\x18k\xcc\xcbv\x01\x9e\xe8\x0e\xac\xe0\x90Q\xc9\xf9}\x85\x1b\x14.\x13(\xf4F\xa1\x7f5\xc91\xda\xee:l\xaf\xf6\xa5=e\x08\x05\xfb\x81\x82yo\x15\x06F\xbc;L\xf1\x88\x99tOo\xa3\xd7\xd0\x9a\xde\x11np\xc7\xba!\x97\xb6Y4\xbe\xcdM\xdf \xce%\x15\xec[\x05\xc6~\xbeYN2\x1e\xa0\xa6J\xdb%\x1b-\x1a|\xd4;T\xf5Y\xb5\xb4\x1e\x11\xef\x18\x12I\x1e\xa4\x0d'E\x8dx\x90\xab\xa5\x93\x8eJq\x92\x0b{\xebN\x05 \xb2\xc0C;f\x1d\x8c\x1d\xd1;m\xcc\xab\x87\xbf{9}`\xd5f&T\xfd\x99\x81\xe8p.E\xb4\x02\xf3\xa1#\xf1\xd0)\xb6\x98\xd6\xbd\xec\x91\xd3\xfb\xf0>\x15h\xe0\xd1\xd0\x8d\xc7\xdd\xe1\x0b\xd0\x92\x1eP=!\xc3|L\x0c\x91\xe8 \x0e\xa9_P8\xb4zh\x9f\x1f:\x8fG \xf2\xd1\xf3w_9\xbb\xcaJgWY\xf9\xec\xca\x1b\xd9\x834}vu\xb0\x9d\xf6m2\xee\xd5\x0eV\x82\xe7\x1e\xe3\xf1\x05pI\xadM9\xb9\xb2\x14\x9a\xe0\xadmC/\xe0Sf\xac\xd7/\x06\x8a-\xdb6:\xed\xe0\xf6:(\xe2\x88\xf89z\xc4\xfa\xe6+\x1a\xc0\xd9\xe2U\x8ew\xfa\xe4\xa4\xdc\xa1'\xe4\x0b\xcb\xc7&?\xa6\xd5\x8fg\x93\xe9\xf3\xc9\xd3Jj5\xd3\x97qr\xcf\xfd\xedN\xf4\xbd\x019?\x9b>'\xff\xcc\xd96\xe6\xf7\xe4\x7f\xa2^\xbcJ\xc9\xe5\x96\xb3\xedo\xd4?\xe3\x1f!e\xe2\xc5\xe1\xcbj5\xaf\xbeyM\xbe\xf5=\x16\xa5l=!\x85\x18\x86j\xdc\xd28\xe3\x1e\x83X\x86\x01\xe6IOC_\x8c\xf5\xcb$\xd9%\x07\xa0T\x15\xa6\xb3\xd3\xd3\xad/v\xd9JAp\xaa B\x80N\xdbF\xe1\xb4\xf4\x0e[\xd1Q\xd9\x80\xbd\xddF(\x9e\xfcI\xf8\x81q\xb0\xae\x9d\xe2W\xac\xc4\x9c\x02v\x9c_\x94v\x9fe\xc6Q*x\xe6\x89\x98\xcfH\\_\x88\x19\x0fR\xf7\xb6\xb5eG\x9b\xeff\x1d\x1f#v\xfb\x1f\xfch\x1d\xdf\xba?\x97\xb7\xda\xae\xcay\xa6\xd6.\x9b\xe9{3\xf5\x1c\xc5X\xac.'\xd0\"\x0c\xbe\xa3\x14\x9d\xf8\xe9\x97A\x9c\xa2\x13\x9ck\x18\x89WT\xec&!\xbd\xebGj\xaf2R\xd2\xfc\x0cvK#\xa2\x1d\nT\xfd\xd5\x17\x7f\xa0KC0\"\xe1\x8b{\x0b\xc51e\xf1\xeeV\xab.\x86\x98\xcb\x8bfz\xf5N\xf0\x07\xc1[\xdbP?\x0dJ\xd0\xb2OGX,\xcc\xce\x8cnV\xa5\xe9\x04\xb7F|\xb5\\\xef\xddX\x8d\xc0w\xc1mc\x8c\xa8\xb1\xfaU\xbe\xb6\nj\x0bf\x02w@\xa0,\xc8\xf3=\x94\xfb\x17\x1a\xe8\xa8\x03] s\x15\xef\x02#,=\xf74\x14\xc1\xb7j8bb\x19\x95\x93'\x1e\x0d\x02\x13%FS\xe9\xc1(\x8f\x86te\xa3! rM\x04\x99\x91\x13\xbco\n\xbe\\\xec\xe8\xa0V\x08\x8c\xc7\x05\xf1\xa3T\xd0\xc8S\x85\xe2\x89\" \xaf\xe9V\x15.\xfa\x83\x9a\xd9\xd1}m\x89R\x7f0Y\xa9\xa7>+\xfaY\xea2\x88%\xd23k\x16\x05\xcc\xcf\xa8V\x01\x86\x9c\xbc\xb6\x0e'\x83\xcd\xb1\xa3\x94 \xe0TH\x9a\xe4\xd0\x0cF\x8e\xb3\x0cw\x17^\x15i\xf8q}(\x90\xffc:Q(f{QH\x9b\x141\xbf\x99T \xcb\x85\n\xd5c3\xa9\xd5\x1c\x18r\xc2ssV\xcb\x91!\xb3~k\xce^b\xc2P\xa4\x90\xe2&.\x83#f\xe6u\x81q\x1e719\xcb=f^\xf2RvZ\xbe\x80\xdb\x11\x85\xc5\xd2<\x1f\x05\x81\x05j\xb3\xef-\xc3me\x14l_\xbf6\x17(\x88,H\x05\xcd\xfbQ\x83]Jy?\"1p\x99C\x9e\xb3H>n06}\x81j\xaa~U\xc0\x1c\x19t\xd6\xbe\x7f\xe2\xf2\xaa\xfd9\xcfPIS\xb2\xabS\xfa\xa4\xabTp\xea\x89WL\xec\xe2u\x07d\xc0\xa0f=S\xae\xd7\x05\xe1Ph\x9e\x1d\x1e\x04R\x94\xc3\"\xe2G*\x9b\x98\xech\xfa\xc7\xdb\xc8F\xa3\x8fP\x14a\xf3hI\xd0#X\x03\xfb6\xb8\xd8\x05Fv'X\xb4\xee\x08#\x80\x87\xf2\x1f\xcb\xc5\xfbf\xe4\xaan\xe7\xde7\xdc\xcc)m\x15\x1a\x16\x98\x91\x18AW]\x1b\x9b^a;\xd1\x1b\x00\x93*\xa4\x90\x0e\x13L@\xde)\x14\xd2\x81F\x90\x99R\xbe\xcd\xc01V\x83\x843(u\x01\xc2\x03\xb6\xce\x0d-\x81\x07q\x19\xe9$\xcd\x12\xc6a\x01\xe2\x0d\xe95\x0b\x98`\xe5\xae\x8c*;2\x8a\n\x84\xa8\xd3\\\x07\x81\x9f\xa4~:k\xdd\xa2\x17\x7f\xd6\xa4K\xebh^b\x90\x04\x98\x83(\x0b\x02%VD\xe4\x9a\xf4&\x93\x9e\x12~1\xbc\xa21\xf6Rl\x1f\xf4\xfcc\x12Y\xd5\xf1\x90D] \xb6V\xecvDN%\x0f\x7f\xc19\xbd/x\xe8\xd25\x0c\xf2\x8e\x18eq5r\x83\xf9\x15\x96\xa1\xdd\xeb\xb0\xceG\"\xc4\x9c\xbb\xc0\x1aU\xd2\x95m:j\xc5\x87q\xfd8\xcb1 p\xff\xe5\x8bh\xfd%MD\xc6\xd9\x11\x03s\"&\xdb ^\xd1\xc0\x11\x9e\xf1\xcfP\xed\xf7l\xcb\xee\xfeL\xc2,\x15dG\xf7\x8c\x88\x1d#\x8f\xb7\x8f\xc9&\xa0[\x92\xb2Z`F\xf3\xcbG\xac\xb23\xbc \xb8T\xc1@\x8a\x81\xcf\x00}\xb9\xb9\x80\x1f\xf1\x08\"\xe9\xad\xd9\xdd \xdf7Eh\xbf\x82\xe1(\x8c9\x94Jl\xb5\xdf\xb2\x1b\x8az#Pw}\x84\xeb\\\xc6H\xb9Wf\x99!}\xec\xe3m+W\xdc\xdc\xdb\x9d/X\x9aP\x8f\xc1\x08\xce\x08\x04dr\xec\x0f\x8a\xfa\x8e\xc3\xdb\x02\xb7\xde\xc5\x86+\x8d\x18W\xa0\x1a9#O\x90\xb2\x98\xf2\xfa\xd5\xb7\x9d\xf0\xcanw\xbb\x80V\xdc\x96\x08,\x86\xa1UE12\xa5\xf95\nb\x95\xe6\x8eiMJ\xd2\xeb\xc4\x81S&\xbe\x10\xe5\xbdb\x87\xbbkzC\xa3J\xa6\xfd\xc1\x9c-\xf30\xba]\x1a\xdd\xd6\x1b=\xba\xc5.\xed\xe8\xce\xa5]\x1a\xaa*xtK\xad\x0b\xa9\x82\x829\xfeu\x01n[\x07\xae\xcb PU\x06d\xe8\xc2\xebU)\x0c\xae\xf9\xb9G\xe4K\xc5>\xbb\x8cH\xb1U=\x92\xfd\x1e0\xdf^M\xc3I\x1a\xe4\xbb\xf5\xbass\xb9\x9a\x0d\xd5hf\"\xa0\x82\xfe`\x94\xc7^\xac\x10\x14\xd4\xaf\xe9\xb9\xd0\xdc\x0bo\x11D\xe0\xf8\x1d\xefDr\xb5\x13W\x94\x17\xef/\x98\xc4\x0b\x98\xf4l\x92\xee\xfc\x8d\xe8+\x12<&\xb8\xed\xf7QrP\xdc\x9c\"\xc1l\xe2\x88n\x1c\x9d\x189\x85\x16\x03\xcfu\xc5\x0e\xce\xc2x\xcf\xfe\xee\x07\x8f\x16oX\x95FR\x0de\xbbv\x13\\p\xe2 _\xc0\xa8\xc3\xb1\n\x8e\xb7j\xc1c\xfdtD\x1c\xd7m\xc9!\x8d\xd9G\x9d\x89m}\xc9tY1\xb5\xe6;\x93\xe4\x1dM;\xcf\xbb\x15\x8e\xd0\x9a\xa3GzdX\x9d|\xb8(\xdc+\xdc\xa5\x81LL'w\x81(e\xe2\x1b\xc3?\x8f\x80\xaa\xc6\x89\x8f\xe3\x80\xae&\x8fk\xb1\xf3\x90\x1b\x1d\\\x87\x96J:\x8f\xa2\x16\xbcE\xe5`\xb2\x83\xce\x0f\xb0\xe2\x07\xc1\x0f\xf0\x96y\xef\xb2\x87\xd1\x95 \xaa \xf5\xdcb`2\xd2{\xd9\xcb\xa3\xf8\xda\x91R+\xbdwy\x8a\x05{/{\xcb\xa3T\xc7%\xf0:\x0c\x05\x8a\xcd\x96\x0bYA\xbe\x1a\xc5\xcb\xfc\xaaC\xa7\xd7G\xfb\xc0\xcd\x97\x87\x84j\xe2G\x84\x0d\x08sk\x03\x84\x16\x98\xc9\x90<\xc6\x08\x0b\xb0\xf5\xc0\xa8`\xed\xf4<\xa7\x16\xf5\xd1+\xa5\xbcW\xa2xMou\x84\x88\xfcQD\xdf\xceS\xdc\xa5\x89\xa2\xd6\xc9\xc8\xfcm\xbe?\x8c\xb4\xda\xa3-f\x06\x14\xe5\x1d\x98\x7f<\x0d@\x14`\x85\xd3+T\xb5\xe3X\xfe\x9e\xb3M\x7f\xd0\x82 ~N\"\xa0R\xedoZ\xcf\x04\xbb\x13\xfdBm\xa8\xb7oROt\x19\xbd\x02\xcc\x1d\x05f\xb3On\x1e9bm\x87Dc\x1e\x07(\xe6g\xf9:\xc2\xf6e\x8a\xbcC\xed&\xdb\xe6\x95\x1b\x13u\xa3K1\x1b'\xabA\xd5\x190\xb6!\xb9\"\xbd\xb7\xab\x80F7\xbd\xae\xaa\x942<]P\xae$\x81[-k\xfb\x12\x85\x93\x9a\xa1\xa5\x8dC\xd2\x1b#s\x9bu\xa4\xfc5\x8c\xe9\x02\xa9Uek`\xd7\xf1k\xadF\xae*f\x89\xbb\xd5\xbc\xc0\x11\xcd\x19b\xa2uT\xf6X\xce\xa8\xb0\x15\xbb\xc3@\x1e\x93\xef\xfe\xf8\xc37\xaf\xbf\xf9\x97\xaf\xde~\xf3\x87\xaf\xbf\xf9\xc37\xaf\xffc7\n\xe6<\xd69\x82\x8c\xa9\xf2z\x8f\x0f\x1a\xfe\xd3\xfe\xf5\xac7\x7f\xd3[>\xb9\xee\xc9\xc7\xf37\x8f\x97O\xae\x1f\xcb\xf9\x9b\xc7\xbd\xab\xcb\x97\x7f^\xa4\xcb\xe1\xe0\x14\x19\xdc\xe9\xfc\xcd\"]\x9c\xf5\x1e\xbf\\\x9c^-\xee\xce\xa6\xe3\xc5\xdd\xf4\xeb\xc5\xdd\xa7_/\x87\xa7\x134\x0fQ\xb3\xdb\xbf\x9e-\x16\xe9\x93+\xf5O\x0foM\xdao\x83\xeb\xde\xa8\xe8\xcbd\xaer+Vy\xd9?\xf9\xdd\x1f\xbf|\xfd\x1f\xbf\xfbj\xa0^u\xeab\x91\x0e\xf3W1\"= \xeeQ\n\x15\xaa\xcf\x83'\x86\xdb\xe2\xbb,Tq\xd9?\x85F{\xe0o\xe6t~6\xfe\x9c\x8e\xdf}1\xfeO\xcb\xfcq\xb6|rZ\xad\xb3\x0c\x81\xb0\xad\xa8^\x9d^\x17\xda\xcb\xf9\xf7\x88\xf4\xb6~\xcfE\x0b\xd5\xa0\x7f\xb9\xa3\x9cz\x82q\x13Q\xddhZ\xfa\x8f\xa2U\x9a\\\xc8G\xbf\x9e\xbe8\xbb\x90\x8f\x02\xa1\x9e\xe1q\x8b\x8f\xe7\x17\xf2\xd1OY\x0c/O\x9f\xc1\xbf\x9f_\xd4\xaf\xdb\xab\x1f\x989tA\xd8\xd2n\xa4\xb0\xf7\xb0\xf8Q\xb2\x8c\x98//PUzb|]\x82\xf2g\xfe\xf4@nE\x10ON\xc4A7\x1bAE\x93\x1b\x8f\x88\xd0\x9a\xbaf\xab\x81\xc0\xaa\x87\x91c\xa91Ut\xe7\x8bh\x0d\x93w\xff\x87x\xcdR0'\xf6At\xd1Zv\x7fD\xa2\x81M\xec\x17h\xfeWh\xa4\xa1\xca\xf5\xb5\x8f\x81\x81\xd6\x0d\n\xab\x1b\xa4M>\x86H\xe3fJ\x89wq!@\xc9\xa1\xa9\xf0\xaa\xc3\xd12\n^\xb7Q\xf0\xdc\xa3pD'4\xed\xf4\xbbP\xe5\x06(\x8e\xc3x\xad\xdf\x8dr\xb2Y\xd1I[\xba\xdd\xbcp\xf5~]\xaf\x8f\xc8*\xd79Z\x0eA\xd0\xb1\xf3C\xd3\x01{\xf89\xef\xb02\xa29\x07/\xb2\xcd\xd3E\x0b\x92t\x01\xf3\xd4X!\xda)\x84\xcb\xdc\x99\xf2\x91\xecg\x0f\x99\xba\xbaX\xd4(m\x14V\xc2\xd1'85\xc3\x86\xe2\xb2j\x11|Adh9\xe1\xb3\x92q\xc5\xe1Ds \x0f\xad\xa8\xaa!\x83\xcc\xef\x18Q5\x1f\xfb.H\xdc8\x12\xf9\x0c\x1e\x1c\x88\x0f\x06\xd9\xe0\xd4\x87\x00l\xf1\xf2\xe3\x81\xfb\xabr\x06\x87\xb4\xa4\x1a^\x9e\x8e\xb4S\xb0I\xffz\xe6G\x82\xf1\x08\xbc\xf4\xd1@Z\xf2\xe7\xc7\x91z\x01\x92\x14\xf3T2\x95-\xe1~\xcaR\x99\xecb\x81^i\xeee\xc2\xe35fO\xe5&\xce\xa25\xd4$\xfd0\x8cW~\xe0\xb3H\xfa\xd1:S}`\xa9\x0ciD\xb7\xb0VU\xb9\x84q%tI\xc1\xbc]\x14\x07\xf1\xf6^z;\xee\xa7\"\xa4\xa9\xf4\xe20\xcc\"_\xdc\xcb\xb5\xcf\x99\x82\xe1^\xb2u\xe6a\xf5\xec\xa7\xccO\xa0\x1e?J\x85/2\xc1dH\xf9\x0d\x13~\xb4\x95i\x1cd\x08\xd1\x9eb\x81T\xae(\xdfR_=\xc4\x99\xf0\x7f\xca\x98\\\xa1\xa20\x95j\xfb\xaedf\xe9\x05\x8cF\xf8\x10\x8b\x1d<\xc4a\x92 \xc6\xe5\x9a\x85\xb1\xc7\xa9\x90k\x9f\x86q\xb4N%\xf4\xdf\xf7R\xb9\x8b\x83\xb5\x1fmS\x19\xf8\xdb\x1d\xb4\x9fP.\"Us\x12d\xe1\n \xca\x92$\x80\xber\xeaC\x13{\x16)y4\x95\xd4\xa3k\x16\xdeK\x8fr\x06\xd0\xc4aB\xa3{\xe9\xf1\x0c\x06{\x1d\x87\x007\xbbK\xe2\x94\xad\xe5\x06\x9aI\xe5&\x88\xd5X\xc9-\x0d\x02\xc6\xef\xe56\xf3\x05\xe5\x00\x8e\xbf\xa6\xf7\xf2\xc6WX\x11\xc9\x88e\xa9\xa0\\\xc67~Do\xa9\xe4\xcc\xf3\x13\x96J\xce\"A\x03\xf5w\xef\xb3\xdbT\xa6;\xff&\xddQ\x89\xce R\x009\xe6B\xa6\xf7\xa9`a*\xe9\x96E\xde\xbd\\1\x1e\xf8\x91\xf4h\xc88\x95\x1e\xa0\x85\xf4\xe2\xcd\x861\x85/\xeb8\x95\n\x05\xa2\xadd\xa9\xa0\x82I\xa6z\n\xe03.\xe4&\x13\xab8\x9074\xdb\xb0H\x06\xd9]\xc6\xefeH\xfd4\x8ed\x18G4\xdd\xc90KY\x16\xca\x88n\xe3{\x8a\xb8\xa6\xa0L\xa8\xcf\xd5\x1f\x80)\xf6|\x1a\xe0\xa8\xdeKA\x85\x88c)|\x16\xad\xa9\x1a\xe1=\x0b\xe4\xde\xa7?\xb2T\xee\xfd \xa0\xeaO\xaa\xd0f\x1f\x03d\xfb\xf8\x9en\x99\x04\xccF4P\xa3\xbfN\xa5\xb7c4\x91\x9e\xdaw\xc85\x8d<&a\xd1\xcam@S5\xb2Y\xaa\xd0,\xda\xc62\xf2\xa3\x1f)L\xb4^\x0e2\xdd\xc5j\xd4\xe2\x80r)b5\x03\"\xbe\xb9\x8f\xa5\x88\xe3 \x95\xb7j\x8d\xca\xdb\x98\xdf\xa4\x922\x1eK\xca\x13*i\xeaS\xb9b\xa9\x90+\xff\x86\xc9U\x00h\xf9\xee\x9d\x1a\xdeDzA\xb6\x92^\x1c\xabU\x19'rCy(7~\xba\x93[\x7f#\xe46\xe3\x99\xf4\xa3M,\x7f\x8cW\xa9\xbc\xf1o}y\xc3\xd9Z\x064Z\xcb\xc0\x0fc\x19\xf8\xd1\x8d\x0cY\x94I\xb5\x18e\x18\xaf\xa9\x8ch\xc8d\xa2\xf06Q_\x938\x15\xf2\xa7$\x8e$\xf7\xbd\x9d\xe4\xd9\x8e\xcb\x94\xdd\xddK\xe1'\xa9\x1a/\xa6\xfe\x89\xe5-\x8d\xb6\xf2V-\xe7[\xff\xc6\x97\xef\xe2\x88\xa9%%W\xfeZ\xae|\x05\xf0J\xad#\xe9\xb1Xa\xb0Z\xaar\x1b\xef\xa5\x1f y\xe3\x872\xf4\x03\x191!\xe3(\x901\xdf\xaa\xe5/\x93l%\x15\xc0\x82\x052\x8bby\xcb\xd6\xf2\xee\xeeN\xde\xdd\xbf\x93\xd4\x93t-)\x93t#\xe9VR_\xd2@\xd2P\xd2H\xd2X\xd2\x9f$\xe5\x92\xa6\x92\nI3Io%\xbd\x93\xf4\x9d\\Q\xb9Z\xc9\xd5Z\xae\x98\\m\xe4j+W;\xb9\xf2\xe5\xeaG\xb9\n\xe5*\x92\xabX\xae\xb8\\\xa5r%\xe4j/W\xb7ru/W\n|\xe9y\xd2[Ko#\xbd\xad\xf4v\xd2\xf3\xa5w#\xbd@z\xa1\xf4\x14)\x94\x1e\x97^&\xbd\xbd\xf4n\xa5w'\xbd{\xe9\xbd\x93k&\xd7?\xca\xf5\x8d\\\x87r\x1d\xcb\xf5;\xc9<\xc9\x98d[\xc9\xb8d\xa9dB\xb2Ln|\xb9\xf9Qnn\xe4&\x94\x9bXn\xb8\xdcR\xb9]\xc9\xedZn\x99\xdcn\xe4v+\xb7jb\xe56\x90\xdbPn#\xb9M\xe4\xf6'\xb9\xe5r\x9b\xca\xad\x9an\xb9\xbd\x95\xdb{\xb9\xbb\x91\xbbP\xee\"\xb9\xe3r'\xe4.\x93\xfeZ\xfaL\xfa\x81\xf4C\xe9G\xd2\x8f\xa5\xff\x93\xf4\xb9\xf4S\xe9\x0b\xf9#\x93?\x86\xf2\xc7X\xfe\x98\xc8\x1b&o\xb6\xf2f'o|y\x13\xca\x9bH\xde$\xf2\x86\xcb\x9b[ys/o\xde\xc9\x80\xca`%\x03O\x06\xbe\x0cnd\xc0e\x90\xca@\xc8 \x93\xc1^\x06j\xa9\xca\xd0\x93\xe1Z\x86L\x86[\x19\xeedx#\xc3@\x86\xa1\x0c\xd5\n\x96a\"\xc3\x9fd\xc8e\x98\xcaP\xc80\x93\xe1^\x86\xb72\xbc\x93\xe1\xbd\x0c\xdf\xc9\x88\xca\xc8\x93\x11\x93\xd1FF[\x19\xf92\nd\x14\xcb(\x91\x11\x97Q&\xa3w2\x0eeBe\xc2d\xb2\x91\xc9V&;\x99\xdc\xc8$\x90I(\x93H&\\&\xa9L\x84Lner/\x7fR4M\xf2X\xf2T\xf2L\xf2[\x99R\x99\xaed\xea\xc9t-S&\xd3\xadLw2\xf5e\xfa\xa3Lod\x1a\xc84\x94i$\xd3X\xa6\\\xa6B\xa6\x99L\xf72\xbd\x93\xe9\xbdL\xdfI\xe1I\xb1\x96b#\xc5V\x8a\x9d\x14?Jq#E E(E$E,E\"\x05\x97BH\xb1\x97\xe2V\x8aw2\xa32\xdb\xca\xecFf\xa9\xcc\xeee\xf6N\xee\xa9\xdc{r\xcf\xe4~+\xf7\xbe\xdcGr\x9f\xc9\xdb\x8d\xbcM\xe5=\x93\xf7B\xbe\xa3\xf2](\xdf\xdd\x0e\x16\xab\xd3\xaa\xe6\xb47\"\xe8\xffoq\xbb\x1c\xfc\xa6\xbf\xb8\xfdy:\x9a>\x7f?0\xba\xcc\xb2:\x14r_\xcf\xe6\x8b\xf1\xc5\xec\xd1\xd5b\xb8\xf8d\xb4\xb8]L\x96\xc3\xdf\x14\nD\xf6\x897Ub4\xa3\xb6B\x94\x19\x96\xf3\xf1dh\xc5\x87\xe5p\xd6\xbf>i\xfa\xb48]\x9c\x0e\xfa\xd7'\x8b\xf5pqz=\xe8_c\xca\xb5\x13\x90\xbaJ\xb7?\xb9>E\xa5\xaej\xff\xf6\xf6v19\xbadsG\xad\xf6\x17\xd4\xc5\x8b\xb1\x05|\xf8\xe87\xbf^\x9c\xfe\xd3\xd5\x7f~\xdb\x1f\xc8\xc7\x9f\x80@Tg\xe1O\xbc\x0du\xc8\x11\xb3@\x8c\x0f\xaf\x03y\x12=\x1a\x7f\xe2\x81&-''Y\xb7\"\xdf\xb3\x80\n\x7f\xcfl\xb9\xcd\x81S\xc8\xa3/\xfa\x117\x99$\x87NX\x9a\x87\xd0\xd2\xf7\x19I\x9a\xa1\xb54\x7fF\x1cZc\xf3\x0b\xb1\xdf\x0d\xc1~\xba\x10\xf7vj\xd4E\x08\x81\xdb\xe4\x03\xe3bX!\xf9\x17\xa2_\"W\x87\xf8\xb4\x00$\xc6\x95r\xba\xe8\x9fn\x0f\xdc\xb7\x8fJ\xf9\x07\xa7\xdb\x03<\x1b\xb9\x80\x0d\x0e#%9\x1b\x90K\xd2\x07\xf2\x14\x95\x92-!?9\xeb8\xa6$\x9fs\x87w8\x976\xf2UU0\xeb\xaa\x84\xf4#pK\xd5(X\xce\x17\xb7\xcb\x06\xc1rG\xd3\xaf\xb3 \xc8\x8b\x9a\"-\x12\xbf\xa3\x9a\x8c\xfb?x;\x16\xb2\x83\x15\xb8a\xf8\x0f1_\x7f\xa90d#\x18\xaf\x023\x9b\xbfY\xa4\xcb'\xd7\xa6JG\x15E\xe6\xdb]\x1e5\xd3S\x94\x06tM\x7f2\x1dR\xec\xca\xdcb\xc94!\xfa]\xcc\xd2?\xc4\xe2\xf7to)\xf6\x1f\xf9\xefb\xa1\xad\xd3Z\xb2\x7f!\xbee4\x15\x7f\x8c\x98\xe9q\xa5\x8c\x9f~S\x9b\xcc\x9c\x92\xf5]\xe7\xf1\xce\x13\x89r'\xba,\xd7\xea\x82\xd3](\xce\xeb`~\xb6,\x1f\xac\xb6J\xf1\xbd\x1f\xe9\x9e\xa6\x1e\xf7\x131Cg=0\xce\xbd\xfd\xaa\x9c\xd8\xa5G\x87\x86\xbe\xa3\x89\xa0\x9d\xf1\x13\x86\x8e\xe7\xd5\xfa\x07\xfb\x00\xc7:@\x9fw89c\x13A\xdb\x1avO\\\xded\xbbA^\xc7\x82\x87\x81\x7f\x827&NL\x0f\x9aWQ\xcdW\xac\xf99\x91\xa7\x0d\x05\xbb\xa0\x92\x01\xf3\x84\xd9\xf1m#Q\xcd\xc09\x88$\n#P\xf8\x08\n\xf9Q\xf6\xcf]\x06\xef\x01\xc7\xbc\xaf\x8abS\xd7C\xae\xc2\xbe\x18Jv\x84-7\xf5=\x06\xc2\xa2\xc1\xa6\xb3T\xe3<\xc1\x8e\xc3q\xf6W\x98\xc5\x8fs\xe6\x87\x1ej;\x8e\xc2W\xb8\x7f\xe9Zy\xbe\x1f\xecX\x7fq\x94\xbb6R\xf4g\xfb\xc0\x06\x1f\x80A\x0d\x8d4\xce\xa7\xde\x8a\xfd-fT\xef\xd5\xba\xce\xe9\xeb\xf2\xd6\xaek3E\x0d\x00\x96\xed\xd8\xde\x83\xe6\xd88N\xd3\x0d\x82\xe74;\xe1\x0f\x87\xe2\xb8\x89\xef\xfd\xa6k\x93\x8dh\xf0'\xfe\x80E\x9d\xf1\x00\xf7S\xb9\xc2\x13\xc6\xc3(\x8d\xfb\xa8\x00\xbe>uY\xc3VX\x91\xad\xa2A\x1e5\xf9\xbf\xe3,a\xd1\x9a\xad?\x96\xedI\xc6;S\x99?\xf1.4\xa6tO'\xe3\x0dJ\xa2\"\xb6:\xf7\xb8V\x80\xacn\x9ak\x1f\xec\x90\x94}\xc3d0\xa5=\xed+\x10\xcc\xbdGM\x05!\xf4}G\xaf \x0f\\*\xd0\xb2qv\x9e\xfb\xf4~D\xc3\xe4\x02\xe21=\xeav\xcd\xea\xd85R\xbd6\x05\xed?tN\x8c\xbe\xae\xa8P(\xe7\xc3\x05\xd1\x07\xe7XU\xb5\x83\xa3\xf8\x9f\xcc\x12\xc2\x12\xf6#^`}\xcd\xa9\x1f\xf8\xd1\xf6\x87\x80B\xcc\xf6.\xe3S\xae\xb6\x8bl\xe4V\xd1\x97\x17\xb7\xdb\xe1zS\xf3\xeeAy8,Nb\xd1\x19$\xc7X\x1e\x01J\xef\xb4M\xe1Q\xd4\xe0\x1a\x87\xab\xe3i'/F\x8a\xfa\xda\x94\xf7#\xedh\x11c$\xf16?\xa5\x1a\xb0x\x92\xfb\xe5\x84\xbb\xc0\xf9`\xbc7\xbeeFd\xbe\xc4(>\xfd\xa2\xdbx\x1d\x8a\xeaC\xa3a\x1b\x8c\xc8<\x0fa\xde\x1b\x91\x1e\x04\xa4\x86\xf02\xea-\xf0S\xd1s\x85(\x9d\x973Bm\x9f\x7f@m;\xaek9?\xfb\x80Z\xe0\x93\xaeg\xdaZ\x8f\xbb\xbc \xcbm\xea8\xaf\xd4\xd1\x00;\xa3k?\xda\x9aBO\x1f\xd0pP\xa9\xe3\x99{\xf6v\"\x0c\xa0.\x93\xef\xf9\x03\xda\x12t\x15\xd8\x1e~\xda\xa9\x87k\xb6)\x0em\x15m\xdc\x85\x8aPA\xb1\xcf+\x81\x0d\x97\xee\x98x\xd5\x05\x8a\x14<\x0b\xacW\xb6\x8a\xcb){\xdd\x81\xa1\x1b\x1bF.\x89o\xaf)\xb0\xe1pP\xa8BG\x92\x9f\xb3%\xc4\xe7\x82\x87\xe9\xd2%\x8e\xd1@\xcc\x08\xe6<\x87\xf3\x85\xf9r\xa0\xa9\xd2\xa0BzrJa\x9fh\xc1\xad\x11\x04\x82\xf0\xdf\xb1\xaa\x835\x87\xe6\xcd\xf6E{\xfb-\x00\xbee\xe2\xfb,`)\x1e\xa3\xa3\xa3\x04\xec$\xbaH\x10\xe8\x10\xe1dzA(\xb9\xd4GHl\x12\xf8\x91j\x98\"Q\xbd\xf1\x93\xaf\xc2D\xdc\x7f\xebG,\xedS\x08m@\xc9\xcb+\x12\xa1\x17\xfe\x93>\x9b\x88\x1fv\xfeF\xcc\xe9\x12\xae\xdb\xac\x82\x9bo\xa25\x8b\x84\xfb\xfa\x13\x00\xccq\xe0\xe1F\x08\xd4\x12\xcf\xf9Ru\x91\xc2\xf1\xe6\xc9tpA\xf8p\xe8\x90\x130\xea\x85\xf0\xb7;\xa1`\xcfF\x84M\xfc\x14@4\xb0[\xbe\x90\x19\xb9\xaa\x8f\x9dQ_\x07\xa6\xa7y1\xda\xa86W\x8da%#2\x1c\xdaAB\xaa\xa1\xb9RB9\x8b@\xe8\xad\xd7\xda\x12\x0e&\x1f\xe7\xda\xe7\n\x9f\xcaq\xa5\xcc\x0420S]D\x0bQ\x8b%\x99\x82q*W\x1f\xb3\xb3\xb3\xcf\x9e/\xe5|\x91\x9d?;\x7f\xb6\xc8\xce\xcf\xce?\xd3\x89\xd5R\x01\x94\xca\xce\xce\xe8\xd9i!,X\x111\xe1\x8e\x91\x03+G\x84W\xc7P\x81\xe8#\xa2\xb9<)\x03\x02\x94\x92\xe1>>\xb3\xc7\x02\xd5\x9b\xf3\xc0\xe55\xab7\xc2I0\x02'\x10\xb98\x9b\x8eHo\x11\xa9\x14\xabU\\\x88\xde \x8f^W.\x9f\x15\x18p\x93Z\x1b\xd6V}\x0e5\x94\xd3\xb3\x82p\xf2e\xbcf_\x88~4 \xd7:,,F\xf9\xf3t<\x14\x08\xfe\xa6P\xbf\xa7j\xe8i\xda\x00\xee\x85)\x19\x13o@\xfe\x89<3\xc7\xb5\x90\x08\xc5y\x95z\xe8\xd5\x8c>\x15\x99\xf1\x07k\xe6\xc1\xdc\xab\xd54\xa4\xef\x8f\x14q\xf3#f\xfe\xbe\xa2w\x05\x024*\x05\xb4Al\x1fz\x1epZ\x86U?@e\x18kM\x9a\xeb\xae\xae\x96\xab\xdf\x8a\x00\x9c\x0dj\xa8X\xac;\xdf7\xfd\xaa\x0e\x08/\xbaUD\x1e\xd6\x1a<\xa0\xb8Y\xc7\xfa\xe7li\xd5`(\x11\xb0\xa5\xa2\xbc\x85.\x14=\x9f\xbd\x1f\x95\xda,K\x1a\xadM\xd7]\xda\xeb\xfe\xa2(\x87g\x8f\xfdC\x90]V\x00\x1b\xa0\xe8w\xe1\xea%k\x83\xfa\x87\x84zGC\x9cr/\x978\x0d\xd0z\x15\xd9\x0c\x85%\xc8\x1e\x0c\xde\x97;\xca\xd3C\xaezKn1\x9d\x00F\xf6\xe4\xa9\x06\x19\x02\xfdA\xf0\xfd\x96z5w\xc2\x0e\x86\x0c\xd2\x1f\xb9\x04\x97\xf8\xa6n\x07\xdfP\x10\xbf$\x91#b/Z\xaa\x9d4\x0c\xf2x\xccr\xbb\x04\xa6\x96\xedq\xdd\xd92Q\xc7\xdeV \xa9j\x19\xa98]],b\xb0\x8c\x1a=\x14\xa9,\x81\x82\xb6\xe2\x92\xd4/\xaf\xffy\xa0V\x01F5\xf0\xf1\x10\xce,\x87`9\x02\xb7\xad\x8acpr]Z\x19Pjj\x1c\xc1\xdb\xc4Q>\x82(\xc7\xa8~\x0c\x1c\x93\x91iQ\x05|\xb7\xf6\x05\x19\x83\xe1\xac\xf6 \x1a(\xd4\xbf \x81\xa2\xbc\xf1p8\x80\x88ne\xc8\x06j*Ax\x03&?\x18\x01\x07;\xb3)gZ\x1c\xaa\xf54\xc5\xfe\xe0\xc8\xa8\x15&e\xf7\xcee\xf3xY\\\n\x8d}\xd4c\x9d\xd5}UUD+\xb4\x8d;J\xb42\xa9\xee\x90\x83\xee%b\xf6\x82\x0e,2c*\x96j\x12\n\"\xcd%y\x96\x9b\xe3L\x1ds\x18\x03^\\\x81\x8f\x9a)\xee\xdb\x9aVW\xbe\x03\xe2j-\xb9x~\x8b\xdd\x1fl\x02rHy\x15\xd2\x97W\xe4Y\xfb\xc6J\x81:\x1c\x1er\x06k\xf5\x9cZ\x86\xe3\xa3<\xf6{C\x8c*\x1d\x8b\nUf\xb5\xaf6\xe6TN\x05\xd4\x96\"\x1e\x91g\xe0\xe8\xc5va\x04[\xd2ZyP\xc2\xb8\xaf'*\x10\xd3\x19\x99\x8b\x91\x86\xd7\xa1<\xd1\xe1\xab\x18\xca\x8c\xa5\xcf\xef\x95\xf0\x96\x8bI\xef\x7f\x194\xecN\xdf\\\xc7F\xe8|C/^\xb1\x84\x11\xb3\xc8Z\xcf\xbe\x81\xec\xccd\xaf\xa3\xbaG\x86\xe4)yI6\x8dh\xadrM\xcf_\xa0\xd7\x96\x18u\x1def\xe0\xa1\x82\xe3s\xcc\x13\xb7\xd6\x04\x92\xf7\x08%\xe7\xbeg5'\xc0\xda\xfa\x9e\xda\x03\x0d\xc8\x98\xa4\x03rI\x9e\xb6V\xa45\x159\xc5\x01C\xf9\x89\xe0~\xd8/\xeej\xff\xac7\xb5\xad\x95\xf1\x82\x8d]\x03a\x16\x17\xe4\xa4?\x1cf\xa8\xd1A\xc1 :\x90\x16g$+\xcdH\xb6\x04\x9b\xbe\xd2$\xa84P\x7f\xd8<5]P\x03\xb5\xa8\x8d:0\xb1\xb8\xa2[\xca\\\x84\x00\x04\xf8\xe6\xd1\x06\xe5R9\x0b\x8aj0\xb5\x10\xb0\xbe\x81\n\x01\x9a\x9e\xb9\xe9\x0b\x90\x9en\xd4\xc5\x87vs<\xce\xc9MF\x86\x8ae_\x03\xeb\x81\x93\xbfn\xc4\x07\x94\xf1\x0e\xea\x93PN\xc3tFhG\xc2\x84\x8a\x85\x0c\x16\xa7\x93\x1c\xfd{\xa29\xf5\xb0\xbb\xc7Q\x9b\xf0\x10\xb5\xd9\x93\x97$l]\x89/\xce\xb5\xb1[\x05\xdb\xf7\xc3\xe1\xa0\xb5\xa0\x1e\\\x85\xeey\xac\xdf\x90\xde\xfd\x81\xa5\xc2\x8f\xb6\x1f\xb2\xfc\xf5f\xa3\x0e\x13\xac\xe4\xbd\x92\xc84\x11\xc8Y\x17\xab\xeaA \xeaaa,\x01\xc9\xf3\x91\xbd\"{\x14\xce X\xed\x9e\\\x92\x10\xc2\x11\x15\xd6\xe2~@fd\x0f\xd4,D\x81m^\x98\x0d\xa8/\x17[T\x1d\xe3b\x0b#\xcd\x0bP-TS|\x17\x8e6\x8cO)\x94`b\xb3\xa39\xe9\xf7K\xe8\x10\x97\xd0!^\x02`\xfd\x12\n\xc4\xcb\xc1\x00\x03\xa09IZ\xfb\\7\x8b=~\xabXc\x03+\x9fLGpW\xe7\x0c\xaf\xa6l\xec&-!\x97d}A\x92C\xb1\x0b6\xf3d\xa9/eE\xb0\xfa\xdbt6\x04\xaeA4SC\xf3sSE\xf3k\xf6\xd0\xb5k\xedtf\\\xfd\xdb\xc9Q{\x14\x93\x98\xcf\xd1\xa88c\xa0A{\xfa\xf4\xd3:\x8dF\xc1\xb3\x03\xde;\xdb-\xa2\xc8\xf1x}\x18\xe8\x12f\xc7K\xc7\x8a\x0dH\xf9\xc0aT>~\xb8\xaa\x9c{v\xe4)y\x99\xa6\xa0\xc1\x9a\x19@\x84g1\".wue^P \xed\xfb~0\xca\x97\xa8\xd5K#\x11\x8f\xbb3\xbf\x02\xa0M\xf1om\x9c\xdb&\xa6T\x190\xc5\x1b\xe6\xd3\xa5=\x1d\xd2K\x0b\x17\x13\xcd\x97\x16F\xac\xd6s\x93\x90!\x01Z\x94\xcd\x93\"}\xb2\xe9t\x9e,\xdd\x8a\x83\x12\xf9L\xff.xd\x99\x17:\x0cJ\x0eq\xbf~F\x86%9Gm\xd8\xd3V\xce\xf4\xec\xbcE\xee\xce\x80N>zD\x9e=G\xc9\x1b\xa4\xf0\xe7\x07\xa4pX jEN/HF.I\xea<|\xac\x88\xd8\xb5Vm{O\x11B\xda\xd8\x1e\x01\xbfrVT\xf5\xab(\xef\x9a\xfe\x93\xbe\x8f\x1b\x80G\x8fH\xff\xe4\x84k\xbb\x10-\x13j\xa1\xac\xe3b\xd8\xf1\xe6\x85\xfaaR\xdb\xa0z:}\x14N\xda\xe4\xcai\x90\x0b \xf5\xf9\x90s\xa9\xf4y\x9b\x90\x86\\9.\xa3\xe6\x80\\\x93\xb1\x12\xa8\x0dzE\xae\x89\xe6\x15\xf4\x02)\xe0\xd9S\xfd\xack\xe0\xe4\xb2\x84\x07\xf5Zlc\xbc0Z\xf5\xce\xc7\xad\x9d?N\x0e\x8d\x0f\xadD\xf0\x83\xa8F&_&c\xd7\x1e\xb3e\\.\xc9\xb3\xcf\x14ZF\xe4%y\xfeic5\xa8em\\b\xbc\x1d\x08b\x15=m\xa0\xa8\x1d\xdegj\x0e\"ry\xa5\x80i\x13\x9e\x9e\xa1\xee3R\xb0?{a\xa2\xa6\xb6\x88\x16\x16\xb4\xda\xd7\xa6\xe3\xf7B\xa9\x07\xa2\x87yj\xa7\xd7\xb534p\x87\xd9\xb2\x9b\x19)\x01c;\"\xf7#\xb2\x1a\x91\xb7#r;\"_\x8d\xc8\xdd\x88\xfc0\"_\x8e\xc8\xcd\x88|\xe1\x10\xe1\x00\x15\x94\x08\xa9q\xd4(\x14\xb6\x8e\xbc\x0d\x1a;=\x89\xaa\x12^\xaa\xa4\x95lB\x03\xd3\x96Q\xfe\xd0\x8dO\xe8B\xaa\xb5\xbe\xcf\xed\xb7\xef\x8aV\xb8gG\x12l\xace\xb6\xe4\x1a\xef\x017\xafV\xd8T\xa2\xffj\xad\xd4\xd07\xca\xd5<\x911I\xf0~fg\xfa\x1e\xf35\xe3l\xfd6\xf0S\xd1$\x97A\x9e\x19\xd972\x82\xdb\x87KlJz\xed\x08\xea*\x0b\x02&Z!\xfdpx\xac\xc9\xd2[\xbd\x07\xbak\xdb\xf7\x81\x81\xce\xe0\x82\x9c\xf4O\xfa`\xb6\x836\x98\xb0\x81\xea\xdfW\xd5AkD[K[\xe9Rkf\xee\xc9\x98\xac\x958\xf3\x0cX\xb6*\xadPhG.\xc9\xb4\x94\xa2\xa4\xa8uQ~\xa7\n?v\x9dg\x1b\xc6\xce\x17,<0\x80_}\xc8\x00\x06\xd5\xdd<\xea\xc5\xc0H\xc1\xec\xf5\x0b\x08\xbdq\xec6\x8a;\xf1\xfb\xeaN\xbc,\xdd\x82e\x965\x808\xab\xefU\xb4}`\xd3\xc6\x00\xf7\xa6y%j\xaf\xfe\x16f\x11\x88\x99\x1a\xf5\xb7Vn'c\"\xc8K\x9c\x14\xa7=X\x15\xba\xa0\xda\x9b\xb4\x08\xaeW\x83v\xf3\x80\xa9|\xf0&\x050\xbd\xb0'\xf9\n\xb7(tD\xee+\xd2:\xd1\xa6xj\\\x8a\xa6g\xf8~\xbc]\xde\x8d^\\?\xa0\x82\xe1KrE\xee\xec.\xe8\x07rI\xbe\xbc ?4)\x18\x14\xe9\xbd\x9b\xffP\xb4\xe3kW.\xdc\x1cP,4+\x15\xea\n\x05\xd5\xf8M#\xc7W_\xb7m\xf2C\xce\x08)HAg\x83&Eo\xeev#\xe7{\xe52\xee\xe6C\xb7\xa4\xb0\xd6\xf7\xf6\xeb\xad5\x1cXuAB\xc5\xaf\xca\x1c\x04q\x91T\xa8\xf5\x831\xf4\xd6bdn\xc7\xa8\xa4\x8cG\x8f\xda\xcd\x0cHY\xf2G\x1c\x07>?$\xe7\xf5q\x03\x9c\x8c\xf4\xde\xe8\xdc\x08\xcc%\xe6L\xc6\xe4\xbc\x14\xb7\xd3f\x98GKcAevi\xb9\x851\xd2Y\xad\x08\xca\xf3\x0bm\xc6\xd9\xcf\x13U\xcb\xcb\n!+\x14(\xa4G\xe8\xd8\xbc1k\x97\x82\xa1\x7fO\x9b\x8bv$\x08\x99\xb6g\x1b\x92sT+\xf43\xb3\x0b\xf4\x14\x17x\xfe\x99{\x08\x87\xc3lPVDd\xc3\xa1\xc2m\x16\xed'\xe6VCjn\xae\x94\xd2 \\c-\xeb\x84\xb3\x8d3?~\xd0\x85R+\x9a\xe3\xf1f\x80\x0b;S\xcb\xb8\xa1\xcey\x0f\xae\xf0\xa6Km\x1a\xd9\x8d\x04\xda\x9b\x19o9\xdb0\xce\"\xafY\xbdIW\x8a\xda9\xe2\xe1\x1f\x14\xa9\xe2*?\xae\x1d\xf9\xd1\x03RTI\x10\xcd\x06d\x8c\x82S\xf1\x08%+\x0b/\xc3+\xf2\xac.M\x15.\xa2\x14\x1b(1~C\xd9\xec\xd7\xe1U\xedx\xc7\xb6;.}k\xd1\xe0\xe6\x82Z \"Z\x86z\xac\xa1.\xf6\xdd\xaf\xf64\xfe\x90\xd9}03SR\xca\x07\xe9\xbcL\xea\x07Q\xe7\xe3\xe8\xf2A\xad,\x9c\xe8\xb7ka\x9f>o\xd3\xc2\xe2\xb5\xb5\x03\xd5\xe4ZW\xb3\x16\x1cd\xe6\x82<}\x9e\xf3`P\xce\x82\xca\x94\\^\x91\x17\x17\x03\xe2\x83\xf1Wci\x17\xd5;\xe9\xfb\xe4%y\x81\x10\xea\xfa\xb4.&.S\xb5\xd4\xae1kg\xd8OG\xe4\xa9\":\xf9\xcd\x90\xfa\xf7\xe7\xea\xbb\xda\xfae$7\xcc\xac\x01H\xf3\xcb&`=?(\x08DG\xeas\xf1:W\x13\x8d\xda}\x8bX\xec\xb8\xc9\xfd\x11\x94\xbev\x0c;\x02\xebG\xaa\x9dv+\xa8\x9c\xc6CH\x1fm\xc2r\x084\x18\xb3\x07u\xd1\xdb\xf9\xc1\x1a\x1ci\xcd\x97\xb5\x0ev\xec\x97\x99\x84&R\xd26\x0b\xbf\xacZ\xdd\xa4>\xc4\x12pd\xee\xe1\x88F\x8bV{\xa7K\xcb\x10\xcd{GG\x86\x8aa\x8e=\xe0\xe8\xf7K\xec\x91\x96\x88\x1a\xd5:|\xbfH\xc8\xe8R\xcb$\xfdg\xcf\xf3\x8b\xb8\xb5U\x17#mz\x81:_\x8eE\xe2\xf2B\xee\xc7x\x17\xc6BQ`\xb31l\xd7\xfcb\xb9F\xb5^\xe1>\xdc/\xb0\x9cM\x17\xb4\xbe\xe9\xfca\xa8\x7f\x00\xf7:\x82|\xdc\xa2\x06V\x9d\x1f\xbd|\xdc\xe5\xad\xa8\xea\xbf\xf2\x12\xef03\x87W\xfc\xe0# \x16\x85;\xdfg\xe7\xd5\xbb\xdd\n\x81O\xdf\\\xf6\xe7:x\x9fvu=_\xa4\x8b\xd3\x97U\xd7n>f^\x9c:\xb2\xbf\\\x9ev#4#B]\xb4&?\xa0\xa8H\xc5\xb5\xa1\xab\xd8o\xd63$e1\xba.\xbbxJvMF\xe4$\xdf\xdc\xedD\x18\xb4\xca;\x89\xa2M\x8apx\xb0[zyu\xc0<\xf4\xc5\x99{\xeb\xe4\xb5\xef<\x9f\xe2\xa6\xae\x9f\xb9H\x97\xa7w\xae\x8a|a\xbe\xaci_Y8{._rz\xdfv\x1c\xf3\xecS\x00\x1a\xa4\x96\x93\x96\x1b)\xe6g.\xa5<='\xb2z\xf5\xc0\xfc4\x18`t\xf9\xf9\xa7\xaaf\xa1d\xb7\xe9\xf9y-\xfb\xfb.\xdb\xdeg\x9f6\xf7\x9c\xd8c\xa5\xeaV\x11-a\xd1\x95\x9e?(\xb6R\x87\"W\xd2\xb5\xd7\x13\x0f\x0eC{\x82h\xc0\xe7\xe9|Zq\xd6\xb7o\x0b\xd5m\xfcm\xc6\xa1U\xb5\xb3e\x1c\x9fx\xa8\xfe\xee\xa6\xf0\xef9\xfc\xfb\x14\xfe}\x06\xff>\x87\x7f_\xc0\xbf\x8c\xae\xb1\xd4\xce\xc2\x03\x1e2z\xfe\x86\xd3P\xbb\xc1P\xff\x86\x14>\xc6\xe0\xd9\x0f\x9e\x00\xd28\x13I\x06\xef\xf09A`\x12\x1eo9K\xa1\xf3\xe8b\x12\x9e\x98g\xe0N\xc5=\x8e\xa6\xf1\x11\xd1\x13f\xd8\x04tY\xb0;A9\xa3\xf0\xbc\xc1\x0b\xaf=\x01~'\x04\xc7gF!g\x06p\xec\xfd5\x8b{\xcb\xc9&\xe6_Qo\xd7o\xb9\x808g\xcb\xf2\x0dP\xad\x95\xfa\x90\x1b76\xb9\x8b\xf9\x8aCr\xcc\x95)\xb5u\xc0\xdb\xb6\xecv\xf9\x16N\x8e\xc1BdL\"\x97\xb7\x88v\xf6\xdc\xf5\xcau\xd1\x8a\xa0\xce\xc8\x04\xb2\xc9\xc2];\x17\xbb\x0bJ[]\xe4\xd8Am\xd7\xd0RA\xbf\xa4\xfa\x08J\x12x\xb0,\x9f\xcc\x06\xcd\x14\xd7\x87\x0b\x1d\xa80\xd6\xbb\n\x87J#\xb7\xfb\x81\x1b\xbfZ;\xea\xb7\xd6J\xady\x030\xef\x1199}3\x1f\xcf$Y\x0e?9EW\x9b\xb4]$\x80\x1b\x08\x14C\xa9\xf6{\xb2\xa7\xf6\x1f\x10\x03\xb5M\xad\x92\xe8\xeb\xe7)Z$\xa6\xe4\x92\xe472[no\x9f\xc0\xb9\x947O\x97\xe6\xdaH\x1b\x9fE\xff\x05\xa0\xb8M\xe1\xd1+\xb9W2\xd7\xb2[\x05\x83\x83\xde\x98\x89\x01\xed\xf4\xcd\xecz<\x9c]\x9bq[\xb7\xb3\xdf\xe7\x9f\x01H\xeb\xd2\x81Y \xbek\x92 {se=S\xdf{\x18b\x0b\xce\xbe\xb8\xbf\xdd\x89\xde\x80\xcc\x9c5\x9f\x15\xaa\xeb\x05l\x839MB\xaf\xed\x06\xb7\xea\xdc\x18w\x0c\x05tq\xdc\xdb\x81\xb9o\xc1\x14D\x14\xeb\x9d\xed\xcdB\xca\x85\xfc\x04\xfc\xb3\xf5\x06\x05\x04\x1a\x91\xc4\x8c\xc3Ia\xd2Z\xeb\x8e\xdb-_:\x8a\x0b@\xe8\x0f\x98)\xec>\xc4L\xa1+\x1c\x8ao\x1c\x80C\xc1\x00\x8b\xf6\x97\x84\x83\xff\x92@4/\xfe\xae\xe0\xed\x9a\xc0\xa3\x81\xbf\x8df$\x99\xa7.\xc0>\x02\xec\x1d!<\xacw(\xd0\xb2\x8f\x00\xe9/\xa3W\x10\xbb\x87\x1e@|\xc0R\xe4\x0fm\xf3\x88n\xa9U\xf6\x8b\xb7\xa2d\xc6\x03\xcbh\x0f4\x05\x8f\x0b\x1fDW\x8c\xa0r\x8e\xdb+}\xfb\xa7Efy\xf4\xc88)\xcfiz\xe0\xa6\xe9p\x83\xbd\xd1\xaa\xa6;Q?4^\xa4\x0b\xdd!\x87F\x83|0q!\x058\x1a\x8909DdHW@7F\xa0\xc9\xc3\xf3+Q\x0f\xc4\x15\x95\\e\xe2p\xabrD\x9a\xf2\xc0{Y\x8a\xa8$\x91Y1\xc5j7\x8f\x19\x97F\xb2F\x8a\xa4\xad!\x8a\xca!\x8aE\xda\xa8\x16\xe9\xb8\xf8Hi\x12\x9b\xd689\xb4\xce\x89\x83\x8a\x11\xd8\xa2to\xbe\x99\x90\x91n\xcd\x97W{\xe9\xcdn\xad\x8e E\xbf8\xc1\x03!\xea\xc1\xad\xec\xd0\xfcj\x8f\x7f\x82QI\xed\xf3a\xea\x13\x9b\xdce\x03\\\xb0\xe2\xea|r\xedw\xd8\x06\xc7j\xd3\xe7\x1b\x13z{M\xdf}\x18d\xees\xe8\xbd\x1c7\xc5b\x14\xc7#\xd7\xe9\x8f\xce\x12\x95\xda\x89*\xe3F~\x91}\xb6\xb5\xd6o\x15\xd0\xfb,\xf7\x08\x06\x96\x85\x8f\x1e\xd9\x89x\xe9t\x9d\xb7)\xee\xc3\x8d\xaep\x03\x05\x87\xc3\xcd\xc1m\xbc\x9d\xb3\xcdQ{w\xdf0\xc6\x8d1\x81lm\x03\xd0\xf9h\x9b,m\xa7\\4\xfb\xeb\xbc\xd2\xd6\xc1\x01\xb9\"\xf8\x90\xbdJ\x866\xe9J<\xa8\xf8\xafc\xb3\xb6K2\xf0\xe9^\xdb\x0dn\xb5\xd1\xed\xa1\x1e\x91B\xaf\x1a-\xedIA$\xceF$\xfb\x10\xb6{\x04@\xdd\xb8]A\x03\xac`3\xd8Z\xf4\x8d2m>J$\x1d\x8f\x13I\xb7!\xf8\x98\xfcs\xddlKK\x0e\x11t\x82\xfc\xd3\x89'$_\x9d\x07A!\x05pZe2\x92\x8f\x8f\"k\xf3\x8d\x1b\xf9m\xd6C\xa8B\xf4x\xe1\xb5\x1b}\x9d`\x0d/\x86\x86\x8d\xf4\x89^a\xa6\xf7\xc5#>\xba\x1c\x81\xd2\xa0j)W4\xd9gE\x1f\x89E\xfb\x03\xd8\x12\x14\x13\x14M/\xdd\xc5\x18\x91\xf6\xab\x08\xb9\xb7b\xa7\x91\x1bu\xdfF\xd8\x82\x81\xd1\xbd\xb9\x8d\xb0\x05\xb0\xf4\xf15=x\x1b\xa1\x08\xee\xbe\x08`X\x83oW\x1d\x8adT\x1e\x8du7d%%\x0ciCX\xd2\x05i\x89\xd9F\xa0\x18\xb2\xb1\xfdW\x02\xfb\xcb\xfc\x02^\xd3\xb1\xe2\x01\xb6s\xb0\xac\x83\xf9\xb4\\\xf8\x03\x1a]_x\xb5\x14\xe4\xa5/\xdb\xee\x0f\xfa\xda-\xf0\xa6\xc8j\xb3f\xb7T\xa5\x8e\xd6<\xe3\xb4\x95\x82\x8d'\xd0\xc9\xc1a\x90J\x17@\x1e=\"t8\xcc/\x88t\x01\xadn\xec\xd3\x06\x9a\xef\xbe\xfdP\xca\xfc!\x92\xf8:x\xb8\x80\x1ch\x94,H\xc6\x9b\x11\xb9\xff\xc7\xfd\x04\xe7\xfd\x04\xef\xa3\x1d\xba6\x8a\xcb-\xdb\x87\xe2\xfd\x04\xb7\x91\x9a\x0f\x1e\xb6.\x8d,\xaf\x8f\xc5\x07\x95s\xf1\xd4\x11=\xceZ\xf37\xde\x14\xcc}\xce\x0fP\x13\x12\xd5\xaaE\x9dH#\x19*\xe8\x90R\x971\\\xdb\x0d(\xeb\\O\xc9\x7f>^\xba\x82%o\xd51>\xb9$\xf4\x82\xf8m^]\x88\xa1Is\x1f._\xa5]._\x99_\xdc\xc1\xbb\x0b9\xe8\xe1\x858i\xa9\xf9\xe9\xcdM\xd7\xfb\\\x9aN\xe0j*\xda\x0c\xa4\xcd\xd2b\xbe\xd0\xd3\x11\xe1f\xf1\x15\x97\xca\x01rSYzu\xa2\x03K\xc9\x1d\xf5\xa8\x8b\x19DY\x8c\xaaQ\xac\x8eP\x1eV\x96\xf3CMw\xb4\xc1\xfb\x85\xec\xef\xf2an\"\xeem\xe3\xdc6\x86\x1f\x8d\x88\x1d\x8e\xb0r\xfe\xf4\xb9#\xc0J\xd4?\xff\xb4\x92L\x1b\xe2\xae\x08vgbc<\x9d\xba#wD\xec\x16\xa7\x1as\x9d\xbbs\xb1\xd4\xa3\x89\xcd\xf4\xd4\x9diE\xbd\x1b\xe1{7&\x8a\xcb\xd3\x86`!k\x16\x98\x1c\xcf\xdd9\xfc\xc8\xd6\xf1\xc2\x9d#\xa4\xdc\xc4\x1ay\xda\x10Q\x86\x85\xc9\x8e\xa6\xbe\xad\xe93w\xb64[\x99\x1c\x9f7\xe5Ht\x8egg\xee\x1c\x81\x1f\xd9^?k\x18h{\x95\xc4\xac-\xcc\xdd0\xe0\xc5\x8b'&k\xc3\xb0S\x1d\x1e\xc8dk \xd1\"\xa8 \xe4\xf2\xaca\\Y$|qo2}\xd6%0J\xf6Q\x02\xa3\xe4^\x90\x9c\x81Q\xa8 \x8cB10JE\x11\x0c\xd9\xf7\x18\x81\x99}\xebG7\x8a@\x17\x16i\x1d\xea\xb4n\xe9\xb3\xb7\x81t\x91\xd8\xb7E\xcc\xd5\xbc\xc3\x1c\xc6\xabb\xbe9z\xf9J\x8d\xa1\xafXI\xf1\xf8f\xd63\xf1hU\x89\xb9\x0d\xa6\xdb\x1b\x15\xe3\xed\xf6\xc0H\x0bM\x9c\xd6T\xd0\xde\xd2\xd6 \xcc\x11\xce\xac7\x98\x9f-]\xe6:Y\xc5\xe7\xf5kE*[=\x86C\x9fG\xc6KLa\xd4KQ]j\x88\x02\x8ez\x8d\x8e\xac\xf6\x15u\xafI\x9c:4y([y\xd4\xdb\xb1\x7ff\xa2\xef\xc3\xe5\x97\xb3\x01\xe6W\xe8R\xd1o\xb9MP1l\x03b\x8f \x97$\xbe \xa2Mx\xe2s\x01\"\xcbI\xc1g\x08\x04\xe2\xd2\xa0\xfc\xa0@\x19!\x10\xce3\x86$N\xf1\xdeb={)w>\x17\xefG\xa5\xe90\x1b\xfd\x8e\xfe\xdb\x0fNIy\n\xf2!G\xf7\xf40\x98\x97\xc4o\xd6\nF8x\x91q1s\x02\xc3\xc9\xe7\x11\x8e\xd3t0\xc0}\x84{W\xd6\x18\xe8\x187z\xaa\xf5\x97`\xef\xd4z\xbb\x9dM\x12\x16\xad\xfdh\x8b7\x04S\xee\xcd\xf5H/\x1b\x06\x95\xe0d\xe8R\xa0\xf7P\xe4\xe1;L\xe8\x0f\x9aF\xff\xd8\x802\xcdaO\x1ct\xc7\xeap\xfcF\xa7\xdc\xd9\xaf\xc8\xb1bB\x9dd\xf1:\xc2\xa4\xb7\xbe\xf0v\xc4mw\xed\xd1\x94\x91\xe9\xd9\xcc\xfd\xe1\xf3\xf3\xa6\x0f/\x1a>m\x1a\xad\xa7\x9f65\xdf4(\xd3\xf3\xc6\x91o\x82\xebE\xd38>w\x8c\n)\x98\xd29vbk\xb6\xa1Y \xda\xcb5\xf9S\xeap\x94\xd5H\xec\"\xcb.\x80\x1c\x192\x06T\x89\xd7]7G\x83\xc1\xc5@\xd1&'G\x8e\xf4e\nE\x82\xd4\xb6L\xe8\xbb\xe2UJ\xa3\xad\xf4!\xa3Z\x87\x83Q\xce\x82\xca\xf6\xe2\x1f \xe2w\x1e\x8b\xaa2\xc8\xc9;\xa7\x0d\x17E\xe2v[?=\xbc\xd8\xff\x82\xf1\x81\xd1#\xe1h\x8f\xc8\x89p;\x9a\x85\xd3\xcb\xb3\xd2\xf5TSYyV\x9c\x88ck\x98\x1e\xacA\xbb(9\xa0\xc6\xb0\xf4\x19U^>\x9eS\x12\x7f<>\xac\xb9\xb0~\xd4\x1c\xcd\xfb\x9d\xd4\x189\"\x15\xab\xc9\xedE\xce\x14+\x1e\x92iC\xe8\xd9\xe2\xefC4\x1d\xec\x90\xfe\x9d\xe4[\xe1\x1d\xe5kh\xabE O\xdaw\xbd\xc5\xdf{\xf70\xd7Xzi|\n1SG\x87\x81\xd7\x80\xa7\xf1F\x1c\x02\xbc\x03\xd0N\xa3\x11\x0d\xeb\xc1\x13\xb7C0\x1ch\xdfiv\x17\x0f\x87\xe8\x19\x9a\x93\x96;\xdf\xb1\xa2rq\xe3\xfd\x1b$U\xf1\xc7RF\xd8\xa5\xc5\xb59\xb8\x0e\x9c\xa2\xc0<\x7f\xfe\x02\xfdP\x13\xbd\x19;+\xf4\xaa\xb7X\x9c,z\xbf\xfe\xe4\x9f\x1e=\xee\x0f\x9e\x0cG\x93\xd3\xd9\xc5\xe5\xd5\xcb\xeb\xdf\xcc\x97o\xde\xfe\xf9g\xf9\xfe?\x8f{f\xe3\xd2\x1bt\xbboQ6\xb4Z\x92\xabb$\xa9\xca\xe5\x8b.d\xd5\xd2\xd4\x96\xad\x8a\x92\x9bk\xa4\xf3\xf3\x06\xbf\x8b\x07(\xeep\x18\xe3\xc5\xdf:j\xf9\x8d\x8e1\xf1\xb6\xf0\xf9\xf3\x17\n)\xcc]\xb0(\xbf\x88\xd0\xc4\xc8\x8c\x8fg\x85\x10\xc3+r>r2w\xcd?\xb4\xc3J7\xca\xebM\x15\xf8\xf4\xea\xb6B\xbb\x90\x96N+\x14\xa2\xf2 \xb6\xf9\xc7/\n\xf3k]\x1c\xb6\xb1_5\xbf5\x0fuo\xb1\xe8\x99aV\x1b\xc1\x8f\xb3\xea\x8eE\xe4\xd29F\xb3\xa0\xa0c\x89\x1c\xe3*\xc8\xee \xb3\x11\x01\x0f=\xbc\xb4\xa1\xcc\x0c\xb5\xfa\xfcE\x93+\xa1\x8b\x81*\xe8\"w\xa4,rE\xe8\x12\xc3\xd7\xc1_\xb3\x0b\xb0\x84\xac\xdc\xa7)D \x81\x93\xbf\xe6\x8d,\x85sx\xb8\xceH\x0fAIU=\xd4\x85>>\\\xc0\x19+\xa8\xae\xf2\x00\xb6\xe5\xc5\xd7\x85_4\x84\xed!\xa4\xd9i\x85_\x08\x93?'\x8bh9\x04\x93]\xd2k7Q1\x91|\x9a,S\x0e1\xa6\\\xde\xa5\xb5u\xd2uU\xc4E\xca\x93G\xfd\xfd;Z\x1cJ\xb2\xadu>m\x91\xb1\xcf\x1b\xd6N\xdaN\xf2\xdb\xed\xd7R\xf4^\x06w\x91[\xb257\xfe\xcb9\"\xf3u \xce\x94\xbc$g\x18\\\xa0\xda6\xd8.\xcf\xc0)\x96\xd3\xa7\xb9\x82\xee|0\x02\x03\xca\xab\x83\xd7\xdcL\xaef\x9f\xe7~\xee\xed\x8c*\x9c\xd3|\xab\xb9\x00\xd0\x01\xaeC`\x9ec\xdc0\xb8\x99n\xda\xaa\x81\xcc\x15!\xa8\x05\x0d\xf3\xd1\xa74T\x93\xc7O\xb2\x08\xce\xc9\x98\xa4\xa3FF\xacWt:\"\x1c\x0f\x89\x1c@\x9a%\x97\xe2A~\x8c\x8e\xe4u\x0b\x10>.k\xf4v\xdd\xd8\x19TC\xb6\xf6\xd7\xb6\x80\xceH\x9c\xf7\x161\x0f\xda\x0dY[Xj\x96\n\\\xd2T\xc3\xea@\x11\x9b\x01\xd1\xc4\x82b\xef?\x9a\x8d\x17\xbc\xd8P\xa8\xd7$\x1e\x8f\xc9\xcc:\xc1/|\x84\xe7\x18\x1d6]\x82\xa7\xe7&\xa1%\xfa\xc0\x18J\x04wSxjou\xe6}\xd6\xc1\xd4;\"\xd7zF1\x06\xaa\xd6%T\xe6\xd8\xa2K\xbb\x15\nk6 m3\x8c{\xef\xf6\x98\xd6\xb6\xcb*\xb4\xf8@\xc3\x97\x02\xef\xb0\xdd\xd7\xd6qv02P\xa2\x90Y\x01\xe7A\xad\xfco\x963h\xdf\xfd\xff*\x8c\xa1\xb1\xed\x7f\x13|\xe1\xd9\xd3\x0elAg\xfa[p\x85g\x0d\xee0\xdb\x98\xc2\xc9\x95\xae\xe7\xef\x8e-4\xf5&\xe7\n\xad9\x8e`\n\x1a\x0b\x1f\xce\x13t\x05\xff` \x9dX\x82\x1f\xa5\x7fc\x96\xa0Z\xfc\x07K\xa8\xfcZX\xc2\x8b\x06w\xc3\x7f\x0b\x96\xd0\xd8\xf6\xbf \x96\xa0\xdd\x9e\xb5\xb3\x04\x9d\xe9o\xc1\x12tS\xffNXBSor\x96\xd0\x9a\xe3\x08\x96\xf0b\xfa\x81,AW\xf0\x0f\x96\xd0\x89%\x84\x94\xdf\xfc\x8dy\x024\xf9o\x8c)\xd8\xe46\xd3 \xb3f\x89\x0d\x00\xc50\x00\x14\xa8\xfaT\xea\x8b\xe76\xf5\xf33\x9b\x8a\x9e\xe9X\xd53\xdd\xd1Q\xb9\n\xfeR\xeb\x03\x9b\xa1-}-=mH\x0fZY\x98\xe7Z\xc6\xc2u4\x85\x97\x0c\x1a\xc8\xbb\xc8\xc9;\xeaZ\x03\x18\x89j6\x8a\xa1\x95=\x97\xaaU\x0f:\xdc\x16\x81\xd2`5\x0f\xf7\x9a\xfa\xa8\x10\x1e\xeb\xab\xa7\xcf\xc85\x8c\x02\xf4x\xaa\xf0\xe3i!\x9a\x1f\xb6\xee\x80\x91\x16U\x10H%bt;o\xda\xd1\xd5D\x85\x1c\x91u\xe1\x0c9>G\xa7\xb0\x1e\xc0\xc7\xfb\xda[\xad\xad\x80\xf7\xe3\xdc\x15\xf3\xc9t\xa0\xd0\xbc\xbe|<\x1a\xc1J\x9d\x91\xcc1!4\xc25\xe5t\x07\xbff\x81\x1f\xa63\xe27\x10\x97\x07\xd8Z\xe4RO\xf5\xdap+\xe2l\x9a\x0f\xce\x12\x17Nm\x06uF\xa9C*&\xb0\x01\xc0\xb1O>@\\\xfb\xbb\xdcW>z\x84\xfd\xd3s\xa4\xbax]7\xb7\xb0\x01\x05\x90\xad\xa3C\xea\xd3\xfe\x1b9\x7f\xb3X,\x07\xfd\xc5b\xb1\x18\x00\x83>9\xcc\xf9U\xb6(?K\xd5\xb1\xf8\x80\xcc\x18s\x08\xe3\xdc\xd4\xde\x07}p\xfc\xe1\xc0O\x9du\xe0\x87+2_\x0e\xcc\xee\xac\xfe\xbd\xe0V\xd4E\x0e\xe2\xc3\xe8Xv\x0cR\xa7\xcb\xeb\x87\x84\x8d\xac\xac\x1b\xdc=\xd6\x1c\xa1\xba\x17S\xbd\x93s\x7f\xa9\x06\xaf\xde\x03\xa8p\x96W\x9d&\xb8\x9d\xa9H\xfe\x95%ZXCqm\x07\x90\xd9\x08x\x1fc1\x1d\xbbhJa/\x9b\x17M\xcbU\x1d\xc5\xba\x9e\x92\x97\x07\x8c\\N\x1c\xf8ZM\x83 \xd6\xad\xb54EGo\xb9\x16\xd4\xa60\xc8~9K#k\xa7\x93\xe5v:\xf4\x82\xf0\xe3\xa3\xa3\xf3\xc3\x81\xd7\xa6\x0d\x02}\x87\xa2M\x81\xd5y\xf7\xc0\xeahG\x04\xfd\xd4\xe4\x8e\xab\xe1B\xd7\x8a}\xae\x96cT\x11k2\xe3\x05\x10\x05#-\x12\xe1\x1c5\xc65\x8f\x96\xcd\xe4\xaf\x1bMk\xaf\xfc\x12D9\xad\xaah%|\x0e\x82\x11\xbb \x86\x8e\x98\x1e\xb9\xb4\x08Y$f\xe4\xacN8\xda`\x84\xa8\xcd3\xe2\x82\xb1\x94\xb1\x99~\xcf\xe3\xe5\x04\xdan\xec\x08~\xd6\xd2\xc7\x87R\xf2\xd8\xc1\x80\xb3\xd57\x0f\xa0\xf1\x05\"\xcaK\x04\x94~\xc4\xc0\xe4\x05Y\xe4\xecY\xd5u\x99\xd1\x99|\xe6\xd0\x99\x14\xe2\x8a\x9e\x8d?\x9f\x9c\x80\xf2\xf4\xc9pqzum\x15\xa6\xc3\xdf\xe49\x96\xfd\xebY\xfe6^\xfe|6z1}_\xf8>\xb8\xee_\xcf\x16\x93\xa3J\x0c\x9e\x0c^\x9e\xd6\xf56\x05\xd8&\x8b\xf1\xf2\xe7\xe9\xe8\xfc\xf9\xfb\xc1\xac?\x7fs\xf9rqwv6^\xdc\x9d\x9f-U\xd9\x87\xf3\x91\x92n\xa7U\xc2z\xd1\xa8}\xd0\xd4\xa3_\xa5\x16\x9b\xa2\x13\xaa\x97\xbd\x82(\x04\xaa\x90H\xab\x0f)\xb8\xab?\xe9s\x9b9\xab\xc5\xa1,\x94U\xbb\xa1l~\xb6\xd4\x8dL\xf5\xd5~\x0f\xac\x08\x02\xb5\xe7:\xb1\x02C\xd1/W?(\x8ba\x1dd\xef\xd6\xfd\xc3\xc1]Be\x1d\x1c^\x96\x02|\xe69(\x8e\xd6[\xba\xc2S\xb2\xaa\xe3\xc3\xa3[\xed\xb2\xcb8\xb0\xb2\x87zF\xf2[\x98\x03E\xedN04i\x94\x874\xb5\x13\x986M`/\xa4~ b \x87m\x93\xe9\xfdc2K\xbf\x8f:\x99iu2?\x0e\x91.\xd2\xa6y\xcf\x8b1N\xe7:\xf6\xeb\x8e\xe8(\xa5\xfa\x0fD\xe6\xa4\xab\x18CwR\x0f\x0b\x99?>\x04\xd6\xf48\xfe\x05\xb7u\xf0\x17#\x94\xfa\x18\xffs\x0d>\x1d\xads\xbb\x8d\x80\xb2[\x16\xc3\x1f\xfdo\xb2\xd3\xd1E\x9f\x9ec\x04R\x81\xd9\xd4_(\xee\xd3;\xf8\xa3\x9b\xf6C\xfcW\xbfE\x1b\xa8\xc7O\xf0\x95\xfb\xa9\xf9;Y1f\x13'w\x89W|\xces\x05\xb7\xef\xd4s\xb0\xc6\nq\x19\xc0\x13\xf6-Lyb\xfeB\xa9P\xfc\x84 Y\xa2V\x85z\x8c\xd8-|\x8a6\xf8\xc7\xc7\x7f!\x16i\x14a\x7f\xe2\x84\xfe\x94\xb1 \xf6n`+\xa4\x92\x92\xd8DD\x85b\\\xa4\xf0\x9e2\xbe\xf7=\x86\x8fij\xe2\xa1\x9a\x81I}\xb6\xc7\x8f\xbe~G\xb8\xd2\x10\xffD!&\xc74\xb1C`_ \x0b\xfa\x84\xec p\xca\xa9\xfeD\x188V\xe8\x19\x12;?\x0dY\x9a\x82\x06\x8a\xf4D\xf4\xf4\xfc\xd33x\xc2\x16\x05\xccr\xc6\x01\xae=\x0bC\xe8/\x0e\xc1-\x86t\xbd\xf3\x10j\xf5w\x9c\xa5L#\xca]\x18\xf0\xc4\xb3`\x15^\xb1T\x88\xd3\xf8\xee\xe9\xe7\x93\xe7g<\x7fDd\\\xfbYx'8b\xe8&\xc1?\xf8 \xb1\x82j$\x16\x82z\xbb\x90E\xf8v\xab\xfe]\xb1tG1\xf4\xec\xca\x17^\xeccX\xde8\x80\xb9\xf6h\xa0g\xdd\xdb\xf1\x18\x83\xda\xe2\xd3\x98\xdd \x16\xa566o8f{\x16\x89\x15\xf7\x05\x1bS!X\xb4f\x98\x1d \x0c<\xee\x01\xa8u\x10\xd1q\x12\xd0\xfb\xd4\x8f\xb6\xda\xbf\xa3IR\xb9\xa9\x1f!\xea\xaf\x05T\xbe\xde\xaf\xd4\x1f\xb6>\xbfQ\x7f7\xd4c\xc2GX6\xcc\x84\xf9\x8d\xb6:\x84\xaf\x9f\x02zma*\xb7\xbe\xc0?\xef\xc28\xe1\xb1 \xc0\xbb\x154\x80\xbav\x1e\xae\x04=+~\x82\x7f\xb8^\x13\xde\x0b\xfd\x17\x97\x85@L\xfa\x91BK?\xe2\xdb\x0d\xbbO(\x16\x08h*60\xe0j\xd5\xe0\xa2\xa0[\x8dD\xa1M\xe17:%G\xa5\x10\xeb\n\xd3\xf1\x8e\x05zYE8wa\x16\xea8\xbf\xe1\x1e\xa0\x03\x19[=\xc4\x88; \x0dB\xfc\x9bPN\xdf\xbd\x03\xa4K\x02*L4\xe3\x84\xc7w\x10\x1f8I\xef\x01\xce\x9f2\xc6!\xc1,0\x96\xc6\x19\xc7\x95\xc5\x11iyz\x1fA^.\xf4\xb2a^\x1c\xad\x03\x7f\x83KL\xaf\x88t\x8bk\xf0\xe6>\xc1\xf4\x10\xa6*\x8d\x835\xc5\xc0\xc5I,\xfc\x0d4\x96\xe2\xc4\xa4\x82Q\x00+\xc5\xee\xa8\xd74\x01\xc7)\xb0\xc2\xa2-\xc0\x94\xad\xa1\x81,\xe2\x8c\xc2r\xcc\xc4\xf9\xd9\x19DaVx\xc6}D\xd0\xbd\xcfn\xc79\xf4\xb7l\xe5a\xf6[Aq\xf5\xdd{\xfe\xed= \xc3\xdd\xc6GD\xbf\xe3\xf0\xe9>L\xb7\xbc\xb7|8\xff( \xf9\x9f\x0e&\xbf\x7f\xfd\xea\xdb\xb7\xaf\xbf\xf8\xe7\xb7\xdf\x7f\xf5p\x01\xb8\xa2Eq+\x17+A\xf8I~CE+^\xc8Ic0}\n\xc7\x1aE3\x05\x14\x97\x9f\xea;\x8dN\x97\x0e\x06\x17\xa7\x15\x8d\\\x8a\xe5@u\x04\x98\xac3?\x9d\xbeW\x99\x1f\xce*\x8b\x97v\x1c\x04\xab\xc0\x0f\xeb\xfa\xf8\xa7\x9f\xb9\xb9\xa3w(Z8\xde8\xdd\xb8/\xa9<}\xee\xd6Iy\x9a}\xbai\xa6\xbf1f(9\x93\xf1\x0c'+\x1cI\xa0rA\xf1\xe7\xde\x1dF\xaa \xe6\xd3\xa5b %\xdd\x14\xb9&\xa0\xa1\xf8&\x12}\x95\xc1\xe85\x06#2}\x01\x01\xd6\x8b_Gd\x8aa\xb6\n\x97\x81\xfc~\xa4j\xa1}\xa0\xcc\xb4\xff\xe2\xf9\xf3\xa7OK;\xf2\xa0\xcc\xb6\xea\xc4\x1am6\xc0p\xa8\xb1k)2\xe9X\xf1\x01\x05J\xb5\xa7%\x98\xf8\\eY\xb6\x00\xe1\x14\x95\\\x0e\xec\x1e\xfd\xc2\xfe\xeb\xca\xb3\xac\x05\xb5\x99c\xf2\x95\xe0\xe1\xf6[v\xa7>\xfd1k\x88\xca\x01\x07*iC\xc4\x0e\x1am\xbf\xe3l\xe3\xdf\xcd\xd4\x8e$\xdaft\xcb\xc6.\xed\x8b\x1f\xdd\xf8\x9b\xfb\xc6\xf8*7\xaf)\xdf21sJ\x03\xe2>\x89!\xa8\x08\xe3\xee\n\x809\xa63\xd2\xfb\xeb_\xfe\xcf\xbf\xfe\xe5\xff\xfa\xeb_\xfe\x8f\xbf\xfe\xe5\xbf\xb8\xd4]\xfev\x17`\xfc\x91(\x0b\x1cJ\xa8\xfc\x8clF\xce\xab\xa7\x1c\xa5W/\x0e\x938b\x91p\x8e\xb5\x17s\xe6JW?\x9e\x05\x10\x8a\xa5\x07\x9e\xe4z\xa3<\xea\x8b\xda\x1c\x19+\x19|\x03\xc9E1\"x\xd7\x83\x88{\x1f\xca\x05v\xbb^\x8e\xaeV\xfc\\=\xd8\xa3\x0eA\xfd\xa0\xe7\x08\x83\xe8\x98mto\xd7\x05th\xbe72\xce\xf7\xd4\x06\xd9@`\x1aV\xcf;F\xd7\xc8 {;T2\x890\xb0}\x0f\n\x9fu\x90\xbeB\xd0\xa6\x91\x8e\xa5\xdb\x0dv\x1c\xc7\x83\xc0\x17\x02w\x94b\xa7\xe8\x00)\xc5\x00&y\\\x8e<\x14K5FH!\xc2\x87\x0dHR\x08\xef\x82\xbaP\x07\xfc\xbfr\xbf\xfd\x83,\x14?\xfe\xbb$\x0b-\xcb\xae\x0d\xab\xff\xce0\xc6q\x1d\xbe\x801\x8e\xaf\xff\xc0\x18\xf8=\x04cj\xe9\xe4(F\x82\x0c\xa1\x13\x0d\xfd8\xf4\xffCh~'0?\x94\xd4\x1f\xa2\xf1\xff\n4\x1d\xb6]\xf9\xd2\xe4\xc5}IU\x98w\xaffS\x0b\x83#&jf\x1e\xfez<\x8e\xeeQ?\xbf^s\x86\x07\x04\x943\xcc\xc5\x85\xef\xa1\xde\x97\xa6>N&\xcd\xd6>h=A\xc9\xbaZ\xfb\xf8\x07\x93|\x18\x99\x95\x1d\xda\x12:\xac\xe25\x8c&\xb6\xbc\xca\x84\xd0z{\x1a\xed\xf1D\xcb\xa3\x890\xca|\x16 T\xa6{~\x19\x9b\xbc8\xd0\x7f\xb6<\xce\xf0\xc4+W\xef\xe7\xa7]\x82\x1a\x1cZ\xe39\x18\xf3bNE\x8cZ}d\xe9k\xa6$ d\xf2\x1b\xd4\xf3\xfb\xf8\xdd\xc7\xc32\xcc\x05\xb5\xb0\x80\x99S\x0b\x06\x03\xb6\xf1Y\xb0N\x99\x8e\x11\xb5-\x00\xbf\xf1\xb7\x19\xd72\x01\x96P\xb2\x81>\x1b\xd0\n\xf1\xdd\x14\xfe\x05yl\x87\x87k\xa0X\xde=\x87\x7fA\xe9\xaf\xd6\x83\xf9\xab\x0f\xe2l\x9f\xf3\xf5\xa3\xfe\xc2,\xf8!\x0c\xbf\x1f%x.\x88a\xdbz7+\xa8\x04\xacw\xe0\x81mY\x84IP,\xa4x\xde\x12\x9aC6\x08\xe5\xa6\xfe\xfe\x94\xe1\xf1I\xc8\xa2\xcc\xfc\xf5\x05\xf6>d\xbaC\x11\x9e+F1\xce+\xceN\x9c\x08\x0bil\xc7%\xce\x84\x06\xcd\x9c\xad\xe1\x9fxk0\xef'\xf5\x0f\x9e\xe9q\xc8\xc8\xb3\x15\n\xb6\xf0\x0f\xb5\xe7\x00\xa6\xca\x94\x05\xfa<%\xdd\xd1u\x0c\xc7IiH\x03\x80\"\xd7\xc9\xa7 \xf5\x10\xdc4\xa1XPp\xff\x86\xe9\xa7\x18\x89N*\xee\x11\xdb1\x08]/\xcd\xc2\x90\xe2)\x05\x06\x9d\xd3R\xa7z0\xd8,`$\x05\x0b\x93@\x1f8*\"`V\x90P\x13\x0f\x0f(\xb4\x9a\x195gG\x82\xe3\xbf\x14)\xa0\x80\xbc0\xd6\x19\xf4`\x8f\xc7<{\x7f\x8d\x07\xb3\xb7+\xdes\x04\x8a\x03\xa3\xb0^\xba\x87^\xe0\xd2\x0d\xc46\xb8GQ\xd9<\xafQ.5\xaff&i\xe4\x87T0/\x0epm\xe8\xf706c\xac\x13\x04\xa7Qj\xd0\xd7\x92\x81\xc2\xea\xf5\xb9&\x16^\xe0' \xc5.\xaf\xd9F\x0b\xd1)\x9c\xe5\xb0 \xf0\x93\x14\x17\x87\x1f\xd8E\x81\xcb\x04\xcf\xcb\x0c\xdc\xf0`\x84\xe9\x1b\x86G\x9a\xda\xf6\x1e\xe8\xaf\xfdK\xf9\x96\xd3\xb5\xaf\x97'\x9cnq|J\x11\x97\x99\xa0\x862\x84\x06\xb2\xc2_\xa1+O\xe2\xe0~\x1b\xdbG\xcb5\xe9\xda\xa7A\xb1 n\x90N\xe01q\x8e9\x10\x01\n\x9e\xee\xc3U\xac\x0fq\xef\x84\xf9k\x1a\x05\xabzx\xd0\x1d\x14\x061\xed\\\xef}\x06\xe8\xbc\x87\xae;f=\x82Y\xdf\xb0\xdf\x06z=o\xd8\x97j\x12_Q\xc1\xfd;\x93\xa0\xc5\x88\xd70{z\xb819\xd5\x94U\xbdF\xfb8\xd8\xb3b\xc9\xdf\xf9\x9bM\x96\xb2o\x958\xa3\x99\xb2JL\xed\xde\xf3\x15\xd2\x0bH\x144\x12\x90\x13S\xbe\x0e\xe2XC\xf4u\x16y_\xe4\x8f\xbf\xcd\x1f\xff9\x7f\xfc\x1e\x1f\xff\x99fi\xea\xd3\xe8\xb7A\xa6\xe1|\xc5\xf8\x96\x15\x1e\xff`E\x8aW1Ovq\x10o\xef\xf1\xfd\x8f\x9b\x8d\xa1\xc5\xa87,\x80\xf3C\xc2\xbc,\xa0\xbc\xdc\x97\x1f\x92\xb8\x98\xe9\xb5\xb1\x84`\xaf3\xbe\xca\x02%\xb4\xb8F\x1d\"r\xf4B=\x8f!\x8b\xb4e\x89z\xe6\x1c\x97P\x08\"\x0f\x9a(l8\x05\xc4\x0f-^\xe3\xe9f\x08\x04\x99\xad\x91\x04\x84a\x16\xf8h\xea\x81\xa7\xb0H\x92\xd1\xd8!\xdektN\xe8z\xad\xabMv4\x121\x92b\xae\x89L\xc8\x91\x00\xea\x83\xdc\x04\xa8\x1e&\xfc\x84\xe44\xbc\xb7\x98\x1aj\"\x17j\xd2\xa6\xde\xcd\xa3%s!\x92\xb7\xd0\xa0p\xa8\xa1\xcd\"\xcd\x90\xf0 \x00t\x8cU\x0cc\xf5k\x14\x8b\x1c\xd2\x1a\n$\x9e\xc7\xb4m\x80%\xeb4\xf0\xb7\xfa\x01\xbfd\"V\x12q\xc0\xb4,A\xbd\x1b\xc5`\x10\xefW[K\xbcV1\xd7\x90y,\x08\xd4x\xe9\xf9V\xafj<\xcc\xeb\x8ey78\x94V\xc0\x08(2!/`Hvm\xad^\x8cB\x82\xfa\xab\x97\xa9\x17\xc7|\x8d\x89\x9a:A3\x8a!\x8cW4e\x86g\xd2\xd436>\xe6L\xcf \x84M00\xd3w~\x98!`\xaa\x8a\x8d\x9a \x16y\xf7&A\xd59Nw\xfe\x06\xea[1\xbd\xd2V>\n\x1e(!\x16\x96/ZB\xa9\xbfc\xc3o\xe1E\xed\xffz\x95u\x1d\xf3\xb1Z <\x89\x03j7\x1f\xf5\xe41\n+i\xfe9\xe1\xb11\x9e\xc3\x04\xce\x14)4\xf4\x05f\x07\xbb\x80\x8b\x1d\x12Pf\\#k\xf5\xe2\x08\x18'&\xf1\\\xa8]\x03\x97\xd5Y\xf7~\xaa\xf7,\xc8\x14\xd9z\xcbB\xcd\x06Y\xc0\xf6\x16j#\x04\xf8(\xfc\xaa\xbf\xe3XQ<\\\xf9\xf0nF\xa0 z)V=\xb6#\x82\xaf\xc5bq$\xc6\x1b\x1a\xfaA\xfejP\xdb\xbe\x8c\xe9\xfa\xc7,\x15y\x9a\xe0L\x8bA\xfa]c1\xbc\xed)\xf7i\x94\xe7\xbe\xb5h\xb6A\xd9\x03Z\xda\xc2\x06i\x0b\x1b$`\x9dc\x83?E\xb9\xd0\x08eY\xe4#\xe34 %i\xb5@8u9M\x1a\x950Y\x9e8D-?\x82va\x99\xdf\x00 7\x98\x00;\xb5\x1b\xd8\xa9)\xb1L\x17\xbaa\xf7\x89\x929R\xfd\x92&\x10X]\xbf)n\x00\xcf\x96\xd4\x02%\xcd\xc7,`\x8a\xd6\x8d\x0b\xecI\xd5\xcd\x82\xd0\x8ac\xf8\xae:\x99S\xe1@K3\xf9\xe4\x05\xb16P\x1c\xb3\x84\xef\xbc\x1d\x8d\"\x16\xa0\x00\x84=\xbdw\xa4Asw\xd0\x8f;\xe8\x07\xca\x1f*7\xfc\x03_\xee\xe1\x0b\x18|\xbf\x8b\xe3\x90Fk%09d\x94\xac \xa3\xf4P8\x81U\xaa\x97\xb4\x15{Vl\xcf\x02-k\xdbM\x9a\x17\x07Y\x18\xa56\x13\xbe[r\xad?kQm\xcd\xa28\xb4Y\xd7,\xd1:\x0d+\xcb\xe7l\x1a\x1es>\x07\xbbG\xf5\xc05ykbA\x81\xc2\x1f-q\x17H{\xc4\xc4\xce\xf7n\"\xad\x17\x0b\xecV.\xb0\xfaT\xb5\x05-\xef\x83T\x8a]g\xea\xc50j\xf5\\\xe0\xba!\xbd\xb3_\xfc\xc8>\xc6{\xb55\x81U\x03\x8dFqNL\xa3,\x1f\x07#\xad\xf3\xf8\xd6\xa6\xf1\xf8\xd6\x8e!\n\xcc\x06w\n\xe23\xb7\xbd\xe0\xb6\x17\xb8\xe7\x05\x03\xc5\xfc\xb5\x00\x95\xde\x13\xfb\xef\x98\xde[\xf8Z\x8f\x07\xe8e\xb5\x80 \xb5L\xc2\xbeh\xe2\x03\xa2\x88V\xe2\xe9 \xffV\x96L\xb3\xa4\x9ar\x1f\x86Lp\x1f\xe4\xf1}N}\x0e\x8b\xcex\x83\xe3.\xf0\xa3\x9b\x99\x99\xe3\xbb0\x98i\xebzH\xb7\xe2\xba\xfa`G\x03\xaa\x9cA\x8e\xde\xb2`?I\x8a&\x8f\x81\xd3\n\x89T#7\x9b\xab\x9d\x17$\x1a\x8f/\x06\xa8\xe8\x8c\xb6=ru\x05\xa6\xa6\xf1\x86\x88\xb9\xb9}:\x87[\x98\xeaO\xe5f\xd9\x88\xb0\xb9J^6x\xdf2\xa6\x9b\x95\x83\x0d7\xe4^\xbb-\xae\xebp\x93h\xf5\x16^\xa6\xad\xb7\xaf\xbdc\xfb\x11a\x03\xf2\xc7\xd5\x8f\xcc\x13\x85\xf0\xf2;\x9a\xfe\xf16\xfa\x8e+\xd1A\xdcO<\x1a\xc0\xe0i\xcf\xd1\xba\xd7l\x1e-\x1d\x9eT\x8c\xc9N\xc3\x91\x0d\xd1\x80o\xc0\xbb\xdc\xcf\x8b\x9f\xe7\x8bt\xf1\xc3\xf2\x89\xd4\x7f\x17\xef\x17\xefO\xb7a\xbdG\x89*p\xf9O\x95\xec\xff\xf4\xd2\x99y\x0d\xd6jk*\xe8x\xbe\x18/n'\x8b\xec\xec\xec\xb7\x9f\x8e\x17\xd9\xd7_\x7f\xfd\xf5\xf2\xd4q\xf2\x08%\xd4\x12\xc7\x12\xcb\xe1'\x8e\\{\xc8\xd5\xbf\x9e\xe1\xff\x1b\xb9\x13\x03\x91\xa4\xd7\x12o\xd6H\xc1\x02\x89\xd7-\xa4\xe7\xaf\xe5]\x98$\x83\x99\x9c\xbf\xa1\xe3wK9\xa7\xe3w\xc3\xc9b\xbc\x1c\xf6\xafg\x90\xa6\xdefK\xf9\xc9`P5\xb7#\xda\xb3\x154\xb6\xb8\x1d\xe2\"\x93`\x829se\xde\xaa\xccs\xd5\xcd\xb3\xb3\xb1\xfas~\xa6\xfe\xfd\xe2l\x91M_|\xa6\xfe\xfd\xec\xec\xabEv\x8e\x9f\xcf\xcf\xce?W\xff>\xdf,\xb2\xa7ggg\xcb\xd3m\xbd\xca{rEz\x06 \x8b\xf8\xff\x03hf\x15.\x18%m\xed\xe3D\xc9\x0f\x8a\x86\x90\xeb\x03\x16\xe5\xa4\x803XC\xdd\xa9\xee{2\xeb^\x0b\x03\xc0\xda\xe1f\x13\x10\xd1x\xa6\x18,\x18\xe1\x15\xbe\x81M\xa1\xee\x86]\x13\xe4:\xef\xec\xac\x05\xd2&\xea\xb3r\xc3\xedoH\xff\x0b%\xb5M\xfc\x14\xfe\xf6Y\xa3\x85\xa1%Sj\xd1\x9f\xe1=z]\xc6\x98\xb0_\x10\x01\x11\xe7\x0d \x13\xc3\xe1\x80Ds\x81\xebU,\xeb\xcb\x95\x14\xdc\xf5\xd5{\xd3\xb4\xba\x11\xe4\x0d\x8f\xc3vG\x80\n\xda\xb7m\x07\xae\x85:{J\x00\xd9\xf8\x11[\x17\xe7\xec\xd6\x8f\xd6\xf1-\xb9\x06{\x002\xd3\xef\xe5&\x9d6\x83v\xe4o\x9d\x8d*\xc8\xbe\"W\x84\xf2m\x06\x86`&\x92\xfcK\x8c\x0d_\xf0B`\xb3\xcc\xcf\x96\xe4\xba\xfc:#o\x9b\x02\x9a\xde\x95\x0c`\x9b&\x95\xe4\x10\xdfV\xc7\xd2\xfc\xde\xbb\xbd5\xdcM\xf6\x8c\xa7\xaa\x8bW\xa47\x9d\x9cM\xd4\xae\xfan\xc2Y\x18\xef\xd9Z\xc7\xbd>\xf9\n\x9ck|5Y\xc7\x1e\x80\xad^?\x87~\xe5i\x93(^\xb3\xd7\xf7 \xb3\xb6\x9bw\x13?\xfd!K\x92\x98\x0b\xa8\xead:\"wu0\xd4(\xfe@\x8aU\xb9\xc7\xe2\xcb\x06\xbf~\xeaw\xd3\xf2\xed\x8b\x0eu\xff\x11\xf2\xfcN\xe7\xf9\x9a\xd3ms\xde\xef \xef\xef_\xbf\xfa\xf6\xb5>p\xfc\nO\xa5\xdd\xd9_C\xf6?\xd4,\xad\xcd\xef\x95\xfd\xfe5\xe8\x83\xdc\xb9\xbe\xc1\\4dk\x95\xf5\x15M\xdc\xf9~\xb4\xfc\x1a(\xd27\xe4\xbaRLM\xddW\x93W\xf1;H\xfcB\x08\xae\x12g\xe4\x1bw}\x7f\x80v_\xb3\xbb\x86\xde}\x0f\xdf\xbfD\x8b|w\x96\xdf\xe1\xd8\xfe\xf1\xd5wp[\xda\x9d\xe9[\xc8\xf4?\xbf\xfa\xf6\xf7B$\xdf\xb3\x9f2\x966T\xf7\xa7r\x0f\xbf\x85\x1e\x96\x0b\x92\x19\xf9\xd6]\xf8'h\x86Ej\xff\xf6\xa7\xef\x1b\xfa\xfcu\xb9\x85\x9f\xa0\x05[\x86\xcc\xc8O\xee\xb5\xe4\xe4\x17\xdf5-Z\x85\xf6\xef\x14\xf5\xfd\xff\xd9\xfb\xda\xae\xb8m%\xe0\xef\xf7W\x0c~zR\xfb\xe05\x90\xa4\xb7\xed\x06\xc2!\xb0ii\x03\xe4\x02i\xdaK\xf3p\xcc\xaev\xd7\xc1k\xed\xe3\x17^z\xcb\x7f\x7f\x8eF\x92-\xdb\x92\xec%iz?\\\x7fHXk$K\xa3\x91\xe6E\xa3\x99`\x9c\x92\x8a\x88\xdc\xea\x18\xdb\x10\xc4\xff\x8f@\x98D\xd8\x16S\xfe\x08\xe8mBRI\xc1(c1\xc27\x94\xdb.\xd5\xc8\x87u\xf0\x15\xeb\xa0\x1eK\xbf\xc0\x0e\xbc\n\xa2\xc5\x92\xf7\x1b\x95\x14=\xe4\x8f\x08\xc9G\xc9\xa8\xf0P\xb0u=\xf4{\x84\x9e\x91\\ ${u\x7f\x1e\xce\x18\xb5\xea\xe1\x7fRZ\xef\xb7\x80\x7f\x83\x1d8c=\xa7in^\x97?\xa3T\xdc\x9e\x82\xe6\xae\xf6Kc\xa7\xffE\xf4\x85m\x10\xeat\xf0\xfdr\xaf\xdc\x88\x8e\xe8Ds\xf7\x8d!\xfd\x07\x8c\x8c\xa6\xed\xd4W\xb0\x03\x86\x95\xffo\xd8\x81\x89\xbe\xe8W\xd8\x81\xb9\xbe\xe8_\x18wM[D\x08\xec\x80F\xa4cON0(\xa0\xb6,aez\xcf;@F\x05;\x10\xbb\xffy\xf0\xe1\xe2\x03\xa3\xceq\x98\xbbW\x188\xeb\xca\xcd\xf1\xdf\x04\xffM\xf1_\xeay\x06\xdeH\xed\xdf\x89\xf4\xdf\x89\xb0\xd5\x10\xff-\xf0\xdf\xcc\xf8\x85\xd0\xfe\x85\xc2^\x9c\x11Cb\"\xc0[\x81\x96\xc21\xb1\xb0\xb3\xa9\xadpi+\x9c\xd8\n\xe7\xb6\xc2\x1b[\xe1\xc2V8\xb3\x15\xde\xdb\n\xafl\x18\xba\xb4\x15\xde\x12\x8bB;R\xc8\xa2r\xa0\x91.A\xd2\xa3\xa0\x8a\xf7PZ\x93T\xef\"\xe1\xe4\xc3\xbdD>\x98d7\xed\x97J\xcf\x12\xe1(V\xb9Gq\xa7\x1aSkg\xb5\xd6\xb8a\xb99}uh\xf8\x98R\xc6*\xb1\x97\x85ZI\xfb)\xa5LVB\xfaw\xde\x9d\x8d.\xdf\x9e\x9e\xbc>|3\x92\x9fz\xf2\x04\xa6\x81\xfa\xde\x17\x9b\x14\x0f\x82'\xfa}\xb9wz\xb8\x87\x0d\xfab\x9b\xaa\x17\x1f\xec\x9d\xcbb\xdc\xa8\xe4\xfbw\xc7?\x1f\x9f\xbc?f\x8d\x9f\x9f\xec\x9f\xbc9C\xa5a\xcb\xe7;\xd648\xdb{=\xba|}rz\xf9\xd3\xbf\xde\x8dN\x7f\x93\xa5\xcbF\xe9\xf9\xe8\xe8\xed\x9b\xbd\xf3QY}\xc2\x01\xde\xffx\xf2ftyp\xb2\xff\xeeht|.\x0b\x17\xbc\xf0tt\xfe\xee\xf4\xf8\xf2\xe0\xe4H\x16\xcc\x9a\x05\x97\xafO\xf7~P\xab\xde\xb7 \x0e\x8f\xde\x9e\x9c\x96\xe57\xbc\xfc\xf5\xc9\xe9\xfe\xe8\xf2\xd5\xc9A\xd9\xe3\xab\x1aR\xce\xf6\x8e\x0f\xcf\x0f\xff\xcd\xbav\xe4\x8b\x8dI\x96\xfd<\x1a\xbd\xbd\xdc?9>\x1f\x1d\x9f\xfb\x9ciV\xc4\xf1\xee\xf4\xf0\xf2t\xf4\xc3\xe8\xd7\xb7\xac\xe1\x9c *0\x0c\x11\x91i\xd5f\xfc\x05\xdfa7=\x9cZ\x0c\xecI\xb4\xbc\x0dy%\xa7OT\xdb\xf8Z\xb8%Uh\x80\xd8M\x88\x0f\x8c\xd7\xc6.%>D<\xb3\x97\x84\xcbnf\nX^\x82\x85\xe5_Y\xab\x02\xd7Z2\xa5^\xd2]\x8f\xed\xb3Gj\x97\xd2\x12\xb2P\xebx\xb8\x9a\x0e\xf8\xa2(\x87\xbe\xb3\xc3\xa4\x88\x12\x11c7!\x1e\xd6b-U\xf0UmF\xad\x08Oy\xed\x88\x94\xbf`\xecRQ\x9b\x12\x15\xbe\xaa\xcd&\n\xc9S6\x13\xbbgD[\xe8!\x01\xf0\x8e\x95.Wr\xee\xb8\x85\x94\x1b\x96RB\xfe \xb8*\xab\xb7\xc2\x82\xca\xcb\xdc\xa9\xe7\xf3\xadu\xaa\xdd\xfd\x0c\xdc\xed\x84\xf46\x18\x94J\xbe)&\x82\xfa\x08\xbf\xeb\xa1\xc6Z%\x9f\x07K\xce\xb1<\xbd\xb7\xf4\x04dv\x08\x92\xa0<.:\xb6?\x8f\xe2\x89\xc9\x9c\x01h\xd1\x1b\x87\xf9x\x8ey8\xbaZ\xa7ENR&\x92c\xe8rs\x93\xab \xfb-\xe9\xba\x9e\xac>\xdd8XiF\xd8S\xfa\xf0\x0c!g\x1a\xd3\x9e\xfc\xcd\xb0\xc8$\xea\xce\x16\xa6)]\x0c\x1bv\xf6\xe6\xf3\xd0c\x06\xac\x94\x06\x9f86\xb3p\xa1>\x9f:\x14\xf3\xc4\x89\xae\x97\xd85\x9a\xd8\xf4\x9d<\xef\xbf&\xa5a\x96K2\xf61\xdbNf\xe4\x13M\xc1\xbd\xe1\x1b\x12\xca\x04\xdb|$/\xb77\xc4\x1f\x0e\xac#7\xb8\xee\x9a\xbfn\xeae\x0f\xfb\xc8k\xdb\x92\x85&\xd1\x98\xd1\x0ej\xb4\x03r\x0b\xef\xcc\xc3dO\x1a\xa4$[\xd2$C\x1b$\x1b\xacT\xb4\x1d\x1f\xd2\x80.I\xe2:?\x8c\xce\x1dq/e\xc86\xe7\x0d\xc6\x18_\x8c\xe7a\x9a\x91|\xa7\xc8\xa7\x83\xef|D\x89/\xd2\x9a\x06\x19I&.#@\x8fGE\xa9>\xf3\x08Jb\xd3\xb1\xef\xf5\xc0%\xfb\x92\xcb\x06}\xe0\xf1\x18\x83\xafS\xba8\xc33D\xb6\xcf8e\xdf\x9d\x9ek\xd3\xdc\xa7\xf2v\xfc\x93'\x90\x97\xc6 !\xa8\xe3\x95y\x9e^\x94uIg\xdap\x1d\xc7\xf3\x82+:\xb9\xf7L[x\xa2\x16L\xa34\x93\xcdc1\x13\xc4k\xdb3\xa3\xc7\xf7\xfc\xbc0G\xe9oW\\\xb1\x81\xa1\xb8\xbf\xe4]l\xb6\xefw\x81\xde\xc8]7\xd70 \xd8v\x8c\x00\xca-\xads\xe2~\xbd\x9d\xdd\xcc^n\xcf\x80\xa2\x8f\xf0\x0e\x06~k\x0f\xd3\xf5\x9c\x97\xdb\x1b\xb3\x97\xdb\x1b\x0c\xfck\x03#$\x01\x86\xdb:\x13.\x19.j\x91\x18\x82\xc9\xbd\xe62\x82\xbe\x9e\x9d\\\xdczW\x97/\xb7Qo{\xb9\x1d-f\x90\xa5\xe3\x1dg{\xa3\xf1\xe6\x0eh\x82^\xf2;aL\xd2\xdc\xdd\xf266\x9c\x97_{\x9e\xa6\x83\xc0\xd4T\xae7\xed\xf3N\xea\x11o'\xb6\x07W36\x86\xe7\xa3\xfe{\xa3 \xd4\x1f\xc5Ir\xc3\xde\xf9\xe7\x9fl\xd1\x12\x1f\x8e\x82\xb3\x1fO\xde_\x8e\xde\x8c\xb8\xac/_\xec\x9f\x1c\xd5_\x9c\x8f~=\xf7\xbb\xa9\xa1\xf1\xf9\xa3\xe0\xf5\xe1\x9b\xf3\xd1\xe9\xe5\xde\xfe\xfe\xe8\xed\xb9y\xf5\xd5s.\xd5\x8b\xb4\xaf\x0fWFE\xa9\xfd\xee4\xb4\xdfs\x8d\xf6{\x8e\xb1l D\xe8U6&t\n\xe70\x14\x07\x9d\xa6\x86\x88\xa6!\xc2\xd5h')\x16W$UM\xdd\xa4<\x02\xe2\xc7\xba-\x9f\x07\x0ep\x1c.\x0c)O\xf5\x88\xf9\xd8\x12\xb3\x1a\x973\x9b\xcf\xcf\x17\x04]+\xd8\xff\xc1\x94\xa6\xa3pN<\x95\x0c\x8eQ\xfdT\xdf\x9cb\xe8/\x8d\xcfJ9\x7f\x86 \xce\x03\xc6\x99\xf6\xab\xe3 \xed\x91H\xaer\x07\xcewJi/S\xfb\xf1\xb1\xb3\x89R&\xb3@f\x8a`\\\x05\x969\xe1\xb9\x1al\xf9\x7f\xa5\xf4Q\x91m\xddA\xa7{J\x8a%M\x1a\x13\xc2\xe7\xa3\x83\xfd\xf3\xf3\x8e!\x18\x8eH\xe4\x13\xc61\xbd%\x93\xf3p\x96\x0d!\xb1\xa9f>\xac%\xe4\"\xfd\x80\x01\xff\xd8\x1f]\x8b\x80\x8d\x80\xab\xb2k#\xach\xc2/ \xa2$#i\xbe7\xf9\x18\x8eI\x923&\xdeG\xc4\x01\\i\xed\xba\xae\xb37\xcdI:Bg:\x06\x90p\xc1\xe0\xb3\xc9\x94\xcd\xf97c\xadk\xff]\x9b\x12\x1eT\xb0%\xd3\xf0\xd7\xca1]\xf9C\x0f\xbb\xb6\xb1\xbd1\x0br\x92\xe5.Q\x97\x10\x97\x0eV\xd2\x9d*M=\x18\xc74\xe1\xaa\xa0m\x03\xaba\x99'9\xa9:P\x06\xe8c\x1d\xf4\xc1y\x12\xe7/\x1c\xcf\x93\xa6*\x99\xeaA\xdd\xf7\xb9\xb8X\xfeS\x1fO\xd9\xde\x0f>8\xc0$G\xf9\xe2+\xfe\xc2\xafW\xa8\x82J~\x01,\xa8\xdf\xdd\x81\x84\x0d\x93-\xe2\x90\xd1\xa3}[\xddZ\x85\x0b\x9c\xae\xc8\x05V\xd6\x07\xedpiO8\xda\x13.\xea \x17\xf6\x84+\x1e\xcd\xf2\xca]\xbe>;<\x82j\xc5a\xba\xb6>\x86\xf4v\xcc\x15\xdd\xc3\xda\xe4\x1b\xb5.\xa0\x89\x0e\xfa\x970.z\x82_\x13\xb2d#\xd2\xc7ki>\x82\x15T(\x18\x0253\x04\xd0\xebJ\xea\x83\x8ebl.\xc2\xd2\x11\xac@_\xd6n\xb4\xc8\xec\x92(k\x84\x17\xc5\x07/H\xc2\x05\xf1\x91\xf4\xf2\x00\x0f\x98\x82<\x8d\x16\xae\xe7\xf3\xa0\x85u\xbe\xeaC\x16H\xd4\xf2\x04P\xfc7\"\x8f'\xeb\xc8\x02\x89\x1e\x91J\xb3\xc9m\xf7\x94\x18\x96hJ\xe6_W\x1a\x92\x07d\xb8\x85Q\xe4o\x87G?8\xca\x8e&\x05\x9d0\x88&\x1e\xd29\xfb\x8b\x13\x14w^\xab\xbc]1\xa0]\x10.\x97\xf1=\x1e.\xbf%.?\x8e#\xfcG\xc2\xff\n\xcbL\x12\x91\x07/\xa1\xe0\xbcA\x95PD\xb5\x88\xa3\xc9\"c\xc8\xc7\x90\x12Q\xf7\xa0\x93\xca\xe1\xf1\xdbw\xe7\xbaa\xf2\xbb\x0e\n:\xf0f\x1d\xb7\xb6\x0bs\xf9\x05E b\xad`\x7fy\x1eF\xc5\x8d\x92B\xe3\xc7\xa0{\xd8\xc8\xb0\xb9D3\xec\xc4\x07\xc7Qp\xd5\xd9\xa2\x9d\xcb\x83\x18\xaeB(\x18)\xf8\nY6\xf6d\xad\x1c(\xa7\x03\xfe\x9b\x0d\xcfM!J`\x8f\xfd\x8d\x7f]\x13\xcf\xe8P\xd9|\xd8G\x05#d\x04\x87\xff\xa4\x9dl\xcf\xc3\xa3\xb6'O\xe0\xdf\\\n\xa0^\x8f\x99\x079\xfb8P\xac\xfe\xebc\xaa\xf7\x1b\x18\x88\xc1\xad\x95d\xc0\xa9`E\"\x00\xd1\xcc\x19V\xee_\xa7\x1chN\xf8\x18+\xa4\x12\x82\xb4\xd3w\xcc\xa0\xb6\x86\x97~\x15RPn\x0eT\x04\xc1\x1d{\xaa,0\xdc\x80\xc8m7kw\xe4\xc2\xa4 |\xe8\xa6b\xf5\xc1\xb0\xa2\\\xe6\xfe\xd7g\x18#\xa8\xe3L\xaby\xea\xd5@\xf7\xea\x82N\xd3T\xf3i\xaf\xf8\xd4\xf3\xd5\x93\x01\xba\xb4\xc8h\xea\xb3\x82\xb8\x0f\x9d\x83\xb1\x97\xb6$@\xad\x94alb\xa5\x03\xa5\x03U2\x04b?\xd7\x92wM\xfa\xc8Tl\x13:b\xed\x99\xa9\x07\xf9}[\xa6:\xc3\x80>\x07'G\x0e7\x87\xb0\xc1\xbe\xc0\xef\xa6AB\xeer.X\xbf\xf0Z\x0c\x98W\x14\xa1B\x92R\x18;&n\xc2\xb5\x9a\xa4\xd4\x8f\x14\x8d\xff\x049CU\xe6\xf9p\xcajX:\xde\x9a ]\x97\xf5\xb3`\xbcxr\x17d\xa2\xb1\xbe'|}g\xa3\x8f\xf4\xddG\xf2\xee#u\x87\x1d\x924f#\xe4Qqa\x07\x9c\xdf\xef\x9e\x8d\xd7\x06\x83\xdf\xef\x9e\x11\xc6\x88K\xf3\xceZ\xa5\xeb\xe3\xdetH,\xf7\x0b\xa0\xed\x0b\xab\xd4\x0fr\xcaO1<\xc8\xe7)\xbd\xc5\x83\x1d\xa68\x8e\xd2\x94\xa6\xae#\x8b!\xca \xa19\x84%\xf2M\xce\xb0\xe5\xf7Z\xbd\xc5AU_t\x19\x0b\xd7~t\x12\xa5\xf9}\xf5E\xde\x90\x0f\xe1\x15M1N\x8d\x81x\x8c(]\xab\x1d9t\"J\xb5\xbd\xde\xbb#\xecp\x98GcnHa\xc2\x8a\xce\xec\xd2\x84\xeb\xb6\xe6\xe8\xec\xb1\xa55\xac\xde\x9c\xdb%w\xb2\xf6\x04\x19\x18\x1a\xa8NtV\xdd\x1b\xc1t\xb3M>f\xcc\xcf\x91\x9a\xf7\x08\xba\x916/1\xd4M\xdf\x1e\xf0,\xbb\\HK\xf8\x19J} x\xf5#\x06\xc5a\x98\xed\x04k\x9b\x9eW\xb7w\xbf:9\xf8M\x88\xcb\x95\\\xbd\xcb\xf7J\x18B\xc2\xb4\x03\x92L\xf8\x99Xj:$\xb2\x0bdH_\\\\_\x9b\xe0\x7f\x03\x99-\xb8\x14N\xb6\x1d%\x7f\xb7}\xd5\xac\xc9\x91\xa3\x80+\xea\xf0^\xf3\x9b2\x06W \xfd\x14\xf0\x93\xe6\x13\xb6}\xa3\x95\x8b\x1f\xef\xe9{P\xdeC*8kJ\xbc\x17\xb8\xef\x15u\xae\xc2\x0dL\xb4\x86h\xca]x\xd8T\x1f\x13\x97rnB\x8d\xdc\xe4\x80T\x85\x9c\x9dP\x91\x8c\x98\x1a\xfa\xc60\xb3\xb0\xdae\x18\xc4\xacCG\xc1\x11\xb2-\xf8'~\x9e\x904<\xf0_\x80\x8a\xa6\x17\x1e\x845\x02\xe9\x81C\x90\xf4\x82A\xfb\xcd0b^\xef\xb9V\xc2\x80\x7f\xe3]:\xf3e\xaaK\x1f\xc2\x15&Z4\x88G\xb3\xea\xd9-#\xf2\xd2\x94\xd8\xaa\xf9\xc0\xd6dF\xf2}\x9aL\xa3Y/\x1b\xd8\x1e7\xd2r\xdfdMly\xd6\"\x06\x8aj\xb7ij\xb2rW\x95.\xcf\xfaf\xc3\xc9\xe4GJ\xaf\xfb\xf2\x7f\xfd\xd9\x03\"\x1c\x8f\xa3v\xf8\xa9\xd4\x9f\x7f\xe2^\x84'Sh\xc6\xcc=\xcdU\x8cj\xf3ju\xc1\xf4\xfd\xda\x99\x97^\x90n4\x9b\xad\xd4\xae\x1c\xc5\x85F\xa7Q\x1a\xde\x8b\xe3V\xdb\xc6\xa6\xd1\x0fW\xdbZ\xed\xe5\x832\x16\x9e\xce\xb6\x0c\x8b\x9c\x8a\xa2G\xc5W\x16\xfev\xfcpS\xdeSvs\x1f\x9c\xcbK\x92\x1d\xd1 \x0f\xd3S\xef\xfc\x0d7\xe0\xa9\xa9\x02\x94\xd5)O\x8cb7q\x9f7o\x15PQ\xf0\xb4Y\x10\x89\x82g\xcd\x82P\x14|\xd3,(D\xc1?\x9b\x05\x99(\xd8T%f\xf6b\x8b\xbd(\xdf\x94:F\xdc\x9ey\xf5\x06, *T\xe0\xe9\xb1.\xa8\xaf\x88\xaf\xd6\xf4\x0dlF\xd8\x05\x81\x9f\xb1\x95\xee\xca\x9e\xe5\xb6k\x9e\xee\xa6\x0f4\x10\x1f\xf6\xdc|\x1ee\xdc]\x95\x15\x84\xcd\x027\x0f./\xd1Twy\x89\xccb\xd3\x87T\x01\xf2;\xd3\x88P\xd0%\xbb>\xba\xaf\xab\xe0\xc5\x82\x93\xb4\xb4\x88\x99 \"[/\xaa\x8554]\xc3\xe4`lM\x0dM7<\x01\x0f\x0e3z6\xa7\xb7f\x92[Zmh\xe6\x01,;\x87\x18\xf7Et\x94Li\xba\xe01 ;\x88\xc2\xd2\xa1\xb1\xeds\x0bz\x15\xc5d\x08[OWm\x96\x8aqz\x96\x91N:q1\xed\x84\x98wB\xc4rg\xf8D\x0cXx\x08\xc9\xaes\xba|\x0c\x9a\xc2\x1eh\xfa\xaf\x1e@Q\x0e@\xa7\xb3\xd5\xde<|\xf0|\xe5*\xc2\x83[\xb5Y\nS\n\xa3\xcbe)\xec\xc0\x18\xdf\xfe\xbd\n\x8d\x0fy\xf0SF\x13\x14\x15\xc2Kn\xa1D&\xad\xbc\xbd\xa24&a\xd2|\x8d\xe1\x03\x9b/\xb9\xe9\xb1\xf1\xf65M\x17\x1a.-u\xa8{\xa6*\xb5T\"*KZ:Q$JZzW(\xab\xe8\xb4\xa8{\x9d\xde\x95\x89\x82\xd67bQ\xd0\xd2\xbb\xb8\x94\xd7\x14\x88\xa6\x08>n\xbc]\x8aF\xb6\x9a\x8dp\x01\xed\xdb\xc6\xdb\xb9\x04\xdfj\xf5\xf3F\x16\xb5\x86\xb6\x90%\x9b\xdf\xb4\x061\x13\x89\x8a\xb5\n\xe1\xfd\x97U\x08\x97\xe5\xba`=\x08\xa2\xecT\x84\x85\xf6\x95\xa20\xb9\xf7\x1b\x90\x96bN\xad\x86\xa6x\xa1\x0f7\xe5\x9b8\xcar\x15\x82\x91\xb5\xedw\x98\xdc\xd7i\xf5\xaa\xe5*t\xa3w\xf2\xa1\xc9\xfe\xf9\x86\xb6]\xcd:\xff\x1c:\x7fK\xb5\x97:\x7f\xd6,\xd0\xe9\xfc\xaaF\xfe\xa9:\x7f\xac\xb4U\xe9\xfcuK\x80Q\xe7/\xd3J\x1dD\x93#\x1eG\xb6\x05\xf9\xd7\xa9\xff\x93([\x86\xf9x~\xc8t\x860\xe6\xceP\xc6:\xdc\npc\x07\xe2^\xd2\x92\xc0\xf5\x1a\x17\x1aCS7\xe9\xe4\x9d:\x16\xff\xf7\xd9J\x90\x84\xbb\xd0\xc3\x97Z\x17~:\x90\x18\xd5\x90h\x91\xd8W\xb0\xcb\x14\x08;5\x1c\x0e\xe4AN\x7f\xe2\xd7\xaa9{g?]\xd3a\xbb\xf4\x8b\xb4|.F\x17\xbb\xfc~i\xe9\xfe\x18a\xb8\x9a\xbf\xe0\xa6\x80>*\xa9\x0f\xb4=\xe3\x06\xc6\xd3\x06\xac\x9di6c\x02\xfa\xb88x\xa8\xc5\xc2\xe3\xf9\xaa7_\xc0\x18\xb6\xa1x\x01\xe3\xf5u\x0f\xe2\x8b\xf1\x07\xb5\xe6\xc5X\x13kQ\xc6Y\xc4S\xe5\x1d\x03\xf3\xc3=\xae\x93\x01\x8e\xc38\x16\\\x90\xf8p\xc1\xea\x96\xc1$\xb8\x9e\x96\x96\xdbQ\xaf\xc3\"\xe9\xae\xaez\x8er\x92\x17\xfbh \xa2`\x92\x80G\xec\x0e\x18\xa0\x88\x81X\xbeC\xba4,<\xd1\x9a\xec\x15\xe3\xb2\xf2\x9d\x90\x90\xb4\xc7Sl\x1c\xa3\xa4X\xac0\x16\x81\xe7\xd6\x17\xf5\x1f@\x9bvK\x14a\xf4\xf4%\xe4\x89\xbf\x81/\xf6c?+\x08\x0f]\x8c\x96\xf6b\xb4\x9c\x87J\x99\xb8\x8b\x87N\x08\x8f\xf3d\x8c\\\x07\x82\x85\xa6\x01I\x8a\x85\xd92\xcd:G93\xdd\x15\x7f\xb8\x1e\x0c\xf1\xac\xb7\xe82U#Ou\x1d~\"c\xf3s\xea`;V\xbe\x02u\x8b\x1a\x95\x91Jw\xc1\x89\x12\xcc\x07\x84\xd7\xab;\xee%`\x90\xa8Zm\xda\xa3\x96\xb8\x9b\x80\x82ff\xe5]P\xd1\xaceF@\xb69Z,\xf3{q\xa5b\xcd\xc2\xa2\xa0\xc6\xcb\x90\xc8\xd5\xfd\xc0X\xcft\xbb\xd3\xb8\x86b\xdc\xfch\xba8\x08\xf3Pn\x80\x11\xba\xbb\xaf\xb9\xce\xeb\xb2 JD\x0c\xda\x8e\x83\xa3\xdcu\x0e1\x91\xa4]\x10\xa9\xed\xb7b\x8b5Q\x89\xd5\x82\xc6\xea\x0eEs\x96\x9e}\x12\x1d\xadNC\xad\xa9\xeb\x92\x90e~\xaf!\xc4\xfa dk\xd3\x84\xa0\x85|\xdf\x03Q\xcb0\xcbni:\x91\xb8\xe7R-CFU2\x94\xb9\x07\xffk\xf0\xd9\xbd\xc2\x16Q\xf2\x06[\x1b\xda\xfcK'\xe4\x8a\x16\xc9\x98\x9cG\x0bB\x8b|\x08\xcf\xbe\xb1@+\xa1\xe7\xacb\xe9_0\xdb\xad\xd7\x9fU\x02\x95\x16\xcf^\x02(1\xdc]\xef-dJ\xf3\xe8c\xad\x1e<\xae\x06Bc_\xcc\xd1\xf7\xf5\xc2\xdf\xaa\xf2R\x1ady\x98\x0b!\xc0(\x9c\x1d\xe6D'\x9cY\x1c\xae\xd2 #\xf9\x19k\xba\xba\xdao\x8d\n :hg\x91ri\x88Kj\x19\xc9\xb98f\xacd\xf2\xefW\xb0g\x184w\x98b\x03\xef'\x8fj\xc6k\xbd\x1f\xb0\xcax\xe5\xa5<\x11\xce\xe4/\x19o8\x994\x07\xbb\xcaX\xfb\x04\xc4\x10T\x06;p\xe9J\x8a\xeb\x12\x8a\x04\x06\x048w\xcaslau\x1e\x8d\x80\xd5U\x10\x0d\x1az`\xa1\xdfx\xff\x82\x01\xe2B7^\x9c\x15\x1f\xaefF\xdbH\xed\xe5_\xa3-\x95\xd6\xd7\xf7Q\x1c\x9f\x921\x89n\xf0\xb4,\xeb\xa1@\x19\xe7J\x92\xde\xda\x8e\xd0\xa2\x94]\x8f\x89\x7f\xfc\x9d\x9cN\x9bB\xa0\x92\xa3~*:\xf9\xd9\x17\xb2\xa0\xdau\xc4>\xba$?=\xec\xa7KR\x84\xedV\xed\"\x84\xebR'C\x84\xeaR'\x0b\x842\x99OC\xbc\x11,\xb4\xbeP\xd5\xfa\xec\x06\xd4\"\x88\x92)I\xb9\xf8\xe0FA\x94\x93E\xd6\xedhV?Q\xe9\xe1s\xf6\x8ag\xf7\xef\xf0\x1f\xcbP\xb7\xb5\x88W\xd0\xa6h\xb3&\xbc\xec\xd2v\xe7\xd2\xd3\xed\x13\xb5\xddy\xd7\xc6\xaeH\xd5\xe1\xeaR5T\x92\xb5R;\xecQKf\xdf\xed\xbe\xb7/\xd6\x9c\x85\x96\xa1\xad=\x1b\xa2\xbf\xd7\xa0kz1\xfd\x9b\xf5\xe2\x8ey\x14\x0eW\xdc\xedc\x8dGC\x99\x04\x98]\x91\xfd-\xfet=\xd8\x86\xad\xea^\xca$X\x84KE\x10\xf2\x81v\x11^$\x84\xe6\xb4n\x96\xcf:.\x96\xc9\xd9\xb75\x0f\xe2\x13K\xdc\x10xZ\xd7\x9e\x92\x8b|J \x06\xaf\xf1\xf0[/\xd6J\xb6p\xab\x80'\xeb\x82j\xe5\x9d\x8f\x8b\xe5\xc5\xe6\x07\xbe\xe3\xc1:P\xcb\xdd\xe4\xce{Y\x1dsi\x1f-2\xa2\x0e\xa2T}\xbf>f4\x19\xf0\xed|\xc0\xf4\xeb\x01\xdb.\xad\x0e\x81\xa6\xeeY\xdd\xcd\xa0\xfbd\x05Z\xa7+\x1dF*)]\xf7]\x81\xfd\x04{\xf9\x94$\xa3\xaaO|)\xd8)\xc7\xde\x1dy\x9e\x13Y\x96\xbf\x19\xc7V\xf3\x124\xa6\xf6*O\xe0*O\x06\xd9\x02\xb4\xb3<\xe0\xfaH\xc7\x86K\x93\xfd8\x1a_\xf7\x10^\xd4\xa7\xc4^\xa5\x87\xb9]\x88\xb3\x11\x9d\x03\x03pL\x9e\xa8^\x90S~\xf4\xf3X\xd4\xad\x84\xb6p2\x01\x07\xd6\xab\xcd\xab\xc1\xf8\xb8\x1b\xa1\xf1[%B\x91#\x08\xbdM?06\xee\xbd\xc9\x04\xd8g\xb5\xc3\xef\xb4\xb4\xbc-R\xb2\x8a\xb5\xa5r;\xebeo\xf9\xdf\x81\xdf\xca\x07~\xabj\xa9\xff;(\xd3?\x7f\xd1AY\x97\xceB{\x1d\xa7\xd5\x0f\xca\x0c\xa7\x0bx\xf2%\xf4\x9b\xb4\x9f~\x13\xf69\xcc\xea\x10#\xc2\x9e\x1ba\xba\xbaX/Dz\xa5f\xda\xcfX.\x82\x08$\xb6\xdbFuA\x9d\xbb\xc6MS\xba\xf8\xe9\xccs)jYx\xff\xd3\xc9S\x9e`e\x1a\xc6\x999\xe1\x0b\xe8\xa5\xf9\xb2\x1d\xdb\x81\xd7\xaaB}\xb7I\xe1\xd3L\xe4\xa5\x07\xf1\xa3\xf7\xec\xde{\xb2\\\xa1\x9fl\x1f\xb7X\xc6\xd9\xc2\xc9H\x8esrN\xcf\xc2\xc52\xeee#\xaf\xbc\xbb\\\xf6\xe5\x19\xdb\x1cxm\x8e'\xcf%5w \xfd\xdd`\xa2\xb5\xcb\x1bEF\xd2\xf2\x990\xb4:\x0f\x93ILNVi\xfb\xa6\xccw\xdc\xed\xbb\xa1\x0c^\xe7\x03\xe8\x1b\xbd\x85\xe132\x80\xcf\xe9y\xb9V1\x81\x86\x9dO\x9d\xc3\xf2e\x9bdtw\xb4\xeb8\xf8B\x86\xbc\xffbN\x96\xbb\xce9\xb9\xcb\xf7R\x12>\x92\x9b\xd4\x0c\x0c& \xda\x93\xe50R\x9b+\x06\x04c\x1d\xf6\x08\x9e\xc4\xd8M\x16\xfda\x0d\xcfkF\xbddX\xac\x05d\xc3\x1fi\x94\xb8\x8c}x\xfd8\x97EGm\xb0\x89\xfa\x06\xa0\xad\xf5(w\xbe.\x11\x1f\x81\x1fu\xe3E\x1e\x86\xe2E\x87\x7fz\xc1\x818\x91F\xa7\x89\n,\xad\x17\xf0\x10\x92\xb58\x02\x8f\xef\xc2g\xbdt\xd3\xec\xa6\xe9n\x8c\xf8h\x98e\xd1,a\x8c\xcc.\xa6\xd7\x92>o\xf1\xfc\xceMuE\xe4y\xb6\xef\xf3\x95\xa6bJ\x03]~\n\x03'&=\xf3\xc2c(8\xb4Ta\xac\xe9\x1dH.R]\xa0\x89\xd6\x1b\xc9\x90\xeb$X\xa7x\xda\xc5\x9aK\xd1\x83XO\x9ck\x19\xfe7_@\x02\xdbj\xa2\x7f3\xf6@\x99\xb9\xfc\"1`\x0e\x90P\x99tG\xd2\xf0\n\x05\x8a\xdaO\x91|,e\n\xdb4\x9a\x15\x12hm\xb3L\xda\xc7P\xce\xe3\\\xa6\xc1m\x1a\xe5%D\x99}\xaaI\xa7\x845xM\xee\x19\xfe\xf5\x0b\xbe\xff$\xa8\xd6X>\xa1V\x85\x91\x07\x01u\x15\xd2\xe0\x99\xc3R\xf1\x9eG\x07l{\x157\xb6\x9b\xe6\xc5r\xa6\xd8\x14<\x02F\xbd \x14\x05[\x9b\xdf|\xab\x0f\x86Q|\x91\xbbOn{\x99\xf7\x92\x8a\xb5+{\xad\x9f\xb3\x04\x8f\xf5T\x8b\x80\x95\x9b\xc2\xa1\xed\x87IBs`\xeb\x12B\xce\xfb \xccj\xa1\xd8\xdas\xd2!\x90'}\xbd:\xb0\xa3D\xed\xd9)\x99\x92\x94$\xe32D\xdc<\xca`\x1ef\xc9\xd79\\\x11\x92@\xc4\xaf\xb1D\x19\x99\xc0\x00\xb2bIR\xd7\xabA\xb0\xa1\x90I\x87\xf8\xb0\x86\xc7\x0dJB\xc9Z\x10\x1fm8\xbb\\P\x81\x86F\x0d\xfa\x86X\x843\xc2\x98\x1f'\xfa\x93i\xcb-\xc7\xa2y$\xab9d\x93`I\xd2,\xcarSX\x05\xc9\x14\x92\xee\xd3\xbdd\xa5\xe3kU\x1f\xd0o,=s\xaf\xb0\x1e\xd2~=dO\xe9\x06\xf7\x92U\xe1\x82x\xe9\xcd\x86\xe1\xaa\x12\x9aGS\xbc\xe68,\xb7oxYU|\xf2\xa4\x02J\xf1\x88\xa8G\xbe\x066\xd8!\x08p1\xf8\xaeZP\xe1\xcb\x92\x91\x0e\xf4\xeayUd29\xb7\x89\x12\x13-%?\x93\xfb\x03zk7\xa0\xca\xa7\"\x0f\xa9C\x8a\xda\xfa pFI\xceS\xc20\xf1\xfe\x9a\xdcsdNi:&\xc7\x12\xed\xbe\xc85e0\x10\xb2.\xbe\x8a\x8b\xf4\x91\xfdcUM\xf4\xbbb?\xb8\x86\x80\xf0\x11\xe9\xd7\x1f\x1eQs\x1b6\xbd\x92\x86\xba\x84\x0f\xf9\xc8\x05^\xc4\x06/F\x83V-\x03\xfc\x8a\x84=\xb5\x0f'\xc1\x84\xf2\xf1Z*\xdb\x97^.L)\x8a\xed\xa5\x1b\x0d\xf2I\x82(\x13\xbc\x8e\xdf\xd1a\x02L\xd5)\xab\x9f\x19\xdb\x07\xcd\xcb\\\x87\xddGtg\xd3\xd7\xcf\xbf|\x90\x0e\xa6q\x91\xcd\xfbN#TS\x99\xf3\x9a\xb6\xb4\x13Hf\x8c!\xc7\xab\xb4\xafEk.\x1a\xb2}NOXz\xea\x97\x93\xd4\xa7cI\xc3\xc4$\xce\x18D|Z\xe5r\xad\xfeS\xca\xba\xec5\x9f\x98_\xa0\x86\x03\x1b\xc6J\x0c\xe3^$\x91d&--K\xec8\x81\x04\x0d\xb31\x7f!Wx\x14E\x9e\xa4\xac\x08\x0c\xa2X\xfe\xfeR\x0c\xe8\xf1i3{\x07\xdf\xc1\xa9\xee\xe5\"(\xdd\xe6\x98<\xd6f\x8c\xd8\x8en_\xa9Aj\xcd\x87\x9d\"\xa81r1\xb2\n\xf4=A\x07?\x83\xe8|\xc6\x84O w\xcb\x94d\x19\x93\xda\x17E\x96\x03\x89\xf29I\xe1\x8a\xf0\x06h\xaa\xc8\xd2>\x06\x1dv`\xbd\xfc\x90\x862I\xa5\"U\xba?\xe7N\xae\xc8\xdb\xa8\xe8Pz\xd4\x8ei\x92\xe5i1\xcei\xaaS[\xe4#g\xc0L\xef\x95F\xda\x8e8\xa0>R\xff\xb4\xbbA\xa9\xba\xec\xd0\x94\x8cICK\x92{\xbb\x02\x1bYM\xa2\x86]\xd0\xbe\x17\xf3>DUN\x8a\xe5l:\xeb\xa4\xc3t\xcf\xf2T\xa0a\xbd\xf2\x81\xf630\xbf\x8f\xe2\xf8S-\xcch\x95\xab\x8b!\xaeb`n\xdc\xbf\xe8\xb2\x97X\xac\xc9\x7f\x89K\xac\xdcH;\xb7\xd0D\\\xc6\xab\x8dF\xbf}\xe2\xe8k\x8b\xff\xcf?\xcb\x8c\x85\xb84+g[\xc5\x01\xb7Q\xd2[\x8f1\xddi\xf6!\xa9<}\xb5\x93Q~\xac1}I\xb7\x01\xb5\xe74\xbdK\x16\x9f\x83\xbc\xb8t#{k\x92Xzw\xf1o8\x97\x10\xb9\xbe\xec\xf4\xe5*\x91\x15J\x8a\x04R\xb1k\xbfM\x82\xec\x95\"\x9b\xbc\xbaG\xf5\xc6\xe68\xc3\xa3-TUNP\x1f\xb1\x9c\xef\x8a\x90\x0fB\xab2\x03\x16\x02\xd0\xde\\\x86PQ\xb2,\xf2S25\xc3\xc5}\xcd1\xf2\x916\x9c\xff\xf4I\x1aUZ\x7f\x89\x07y\x19\x96<\xf5\x98\xb8\xb3\xa9XA\xec&aR\x9a\x84\x13n\x12\xc6\xac\x85\xf6\xcfK\x1d\xca\x08\xf4\x80~/\x8e\xa0\x18\xc7\x07G\x12\x85S\x1aQ}pJ\xa2\xc0d\xd1u\xa2\xc0\x83\xfb\x16Q4\xde\xf2y\xe7\xed\x8b\xb9\xe5?\xe4k9G\xd6\xd3\xffqG\x0cKt\xf3\x86]\xcb\xdc\x95_/\x1d\x01\xc4o\xfd\xbe\x06C\x08\xfb\xb6g\x88\x17\x0eC#\x910\xba\x98v\x0c\x89\x95\xd3\x8e.0\x1c\x96\xe3a?\x8c=)z\xb5T\xadB\x99\xba\xb4(r\xaeueb\xe8\xba\"\xf3=\xd8\xd6\xdd\xd7\xad\xcd\x06D{\x93h\x8b\xc2\xad-\xa3\x0d\"w\n\xd9\xc1\n\x97\xf8W\xc7\x99\xa5\xe5\xae\xa0\xdc\xd3\x9d\xd1\xdd\x92\x8cs2QM\xfcmBIa\x07\x8e\xc3\xe3v\x01cz\xce\x85\xf0\xf09\xbb_\\\xd1\xf8\x83\xa6~\x04;\xb0\xf1\x7f\x7f\xcf\xd6\xff\xfc=[\xffjc\xd6\x86\x08\x11\xe2b\xb0\xfea\xf3\xeebs\xf0}8\x98~X\xffjC\xe3\xe6T \xe4\xe6\xd5\xc5\xe6\x96\x01\"\xe3\x10\xf4bs\xf0\xad\x01\x841A\xcc\xad\x7f\xa8\x93\x1d\xd8\xde\xaa\xa4f\xa9\xe9\x81B\xe7:\x11NM;R'\xc3\xd7\xed\xa6\xa6\xfa\xa62\x12OY\x0d\xf5\x7f}\x9b\xac\xa4\xdd,\xdb\x80\xc6x\xf6\xcb\xfey-\xe7\xd9\x91\xd6\xa7y\x949\x9e.\xec\xf2\xa4R\"+\x16,\xd3\xe4\xb4\xc1\xe7\xb0\x03Ga>\x0f\x16\xe1\x9dF\xac+K#\x8d\xf8\xd2\xef\xb6'\xef\xf028`\xdbNBou\xf2\xa7r^\x07\xea\xb9\xd8L\xaf\x7fH\xddC&\xba1\x1e\xa8\xac\xad\xf1\xac\x18\xb5 \xd2d\xddiz\xa7\xea{\xa3\x89\x9e\x08\xd2\xac\xa0\xc9\x97nK\xd3\xc2\xeat\xebX\xa2\xbe\x93\xe1\xba\xab5\xde\xed\x16\xd0hD\xa0BC\xaa\x066\xc0Z}\xf2\x04&B`\xf3@{i\xe5AM\x13\xa4\xb1\xcdc.\x15KF\xa9\x9b2\xa8PmBdF)\xdc\xbdQ\xe5/\xffF'U\x93\x17\x1a\xec\xc0\x8cm\x86\xbb\x90\xc3:\x8f)\xd6u\xc6\x0c\xcd\x0cJk\x9a)\xac\x12\xe6\x13\x18\xc2\xba\xe6\xf3D\xb8\xdc\xf2\x84~\x11\xe6\xf33\x1f\x97\x16\"\x1d\xb4\xe5,\x90\xcdp&\xc1`\x17bW\xe4!u\x9f\xa2\x86\xba\x0bOa\x08\xdf1l\x84\nX\x8a\xfdk\xd0\xb3\xfaK\xf5\x8ci0\x17\xed\xa1>\x1e\xd1\xf9\x10a6\x99\xc2\x87\x0c\x85\x13\xf4w\xd7\x0b\x1cSn\xb2\xd3\x96--e\x13\xb4\xd9\xebIH\x9fpLo\xa8K\xbc\xc6v\x02\xea\"\xbe\xea\xf6w\xb4\\_b|2\xb2Jv\x8ca*\xe9\xdbx\xa0\x17_\xa8x\xdcr\x9e26\xae\xa1Js\xa75\x91;\xe5#;M`\x00\xb1\xb5gJ\xc0\xbd\x98\x11W\xc2T\xb6\x9c\xff\xb5\xcdu\xb7%zB\xc0\x00\xc6\xac\xac\xad\x04\xd8\xfax\xdb\xa9\xf4/l\xe1\xff/k\xf9\xc6\x8c9\xca\x18\xd5f$\x17\x82\x99{\xeb\xf7\xdc\x05K_V\x18\x80\x8b\xb8\xea\xbe\x9c\xba\x84]\xb8q\x13\x1fBYi\xec\xa1\x05\xdf\xb8a\xae6\xab\xa3\xce\x9d?S\x08i\x02\x98\x1dk\x17\xae\xf89\x82\xdb\xa4\xb4b\xb5\xaf\xdf\xf5\x99/\xf3JHx\x1c\x06\xcb\x8cR\xd5\xa5\x8c\xe7\xe4\xe2.\x10L63EJQ\x1bP\x086\xf3\xdaV\xfe.\xb3\x86\xa80\xe6_k\x13N\xee\xf90\xad\xf0\xa9W\x14\x01g\xd6F,\xe2^\xb42c\xed\xcf\\\xb9\xa6\x00\xfb=\x17l\x86b\x8c\xaeq\xcf\xd7\xf4\xdc\xe8\xc5\x95c\xe4\xe8\x1ccbn\xfa0s\x85\x15\x06\xf7\xec\xb54\x88 \xe6f\xe0Y\xb0]\xb6[;\x8b\xf0\xee}\x18\xe5\xdc\xfd\x8cq\x98\xb9{\xef\xa6\x81x-[B\xc3{\xe8\xe3&\xee\xe4i\x18\xc5\xc8K\xd1em\x17\x9b\x96/a\x08\x13L\xe0\xd7\xffhT\xb1\x00#\"0)\x98\xc4B&o_\xf1\xebG\xb1X\x15\xd5\xd2ic\x87}\xbd\xf7\xb9\xafn2v\xa1\x80!\x8c\xdc\x85kH\xf0U{\xa9\xb8\x87IW \x1f\x12\xf7\xd9\x96\xa8\xdc\xa1\xe5I\xe7\xc2z\xf7\x9c`#\x8c\xe3\xe0c\xe6\x0c\xe1\xf9\xf3\xe7~\xab\xb0\xc8\xe7\x1b!6\x9aq\xa8\xa7\xcf\x9e\xea\xa1\xd0\x88\xc7a\x9e}\xffL\x0f\x93\x92I1&i&\xc1\x0c\x1f\xccd\xe2! \xf7\x8d\x01nI\xc6\x83\xdb4\\\x0ej]|\xf6\xfd?[\xf0\xfc\x10)k\x8e\xa5\xdd\x01 8'\xf1\xb2\xec\xe9\xd3g\xed\x01I\xc0\xda\xb8\xbf7\x82\xd5\x87\xfe|\xb3\x8dE \xd9\x18\xfd\xf3\xcd-3(C@mH\xcf\x9b&\x06'\xd8\x98\x10\xb2\x1c\xc4Qr\x1d%\xb3\xfa\xb8\x9eo\xb61[\x83V\x06\xf7|\xb3\x8d\x83\x1al\x1c\xde\xd3\"\x97\xc0m\xcc\xd6\x80\xcb|K\x83<\x9c\xe1\x1c.I\x1a|\xcc\xee\xb0\xf2\xb7}+7+\xb6'~Bo\x93\x98\x86\x93A\x91\xc6r\x96\xbekA\x914\xad\x93\xc6\xd6\xd3v\x1f\x18\x10\xdeG\x18\xe4i\x98dS\x9a.H\x9am\xcc)\xbd\x16-?mO\x95\xa1R\xedGB\xf3\x01\x9d\x0eP\xc9\x16\x0d\xb5\xc9\xa3OC\xcb0\x0d\x17$'\xe9\x80&\x84Nec\xed\x89\xeb\xd3\x18\xd3d\x96\x03\xe9\x0e*\xdbj\xcf+kK]\x04[\xedE\xc0@\x1ak\xffi\x9bN\x19Ts\xe9?m\x13(\x8f\x9dP'\xcd\xf6\x8c\n(\xba\xccxV* \xd9\xee\x1c\xa7\xdb\xc6\xce\xa0YF\x02N\x1d\xea\xd36\xbd \xa8\xe6h\xdb\xd4$\x00[\x03n\x0f%\xa6\x8dm\xe6\xbb6Rh\x98=knn\xed\xceq\xa8\"\x9f\x0f\xc8]N\x92\x8cAo\xe0\x06\xda\xdct44\x83\x95\xcb\xe3\xc5l\x83\xf1\xa0\xabp|\x9d\xc9\xd5\xa7\xc1F\xb3\xce<\xcf\x97\x03\xd6\x01YG\xc3M\x9au\xd4\x89\xd6\x90C\x13\xbc\xda\x1c\xd8vQ\xf6\xad\x8dVs\xc5\x8c\xa7X+\xfb\xd8\x8d\x8b\x94\xfc\xbf\x82d\xf9\xe0\x8aN\xee\x07d\x12\xe5\xb4\xdc\x93\x9e\xb5\xf7\x04[\xed\xb2\xc3m\x8aiV\x13\xdd\xac\xb2\x1d\x95\x9fl\x13\xaf\xa1n\xf9\xb5\xf6\xb2\xc0\x1a5n\xf1\xcc\x80\xfc\xda\x04\x19F\xdb`\x7f\xcf\x0d(m\x92\xe1s\x03y \xe3Sh\xb8E\xbe\xedmJ[OO\xfb\x86\x8f\"\xb0\x82C\\HQN\x16%\xde\x0d\x0b\xa0YQE\x98F\x04\xd1\xd6Q\xa38p\x1b\x93D\x91\x01\xe3\xcd\x06\x16az\xcd\x98\xa1\xfc\xaea2[\xd5\xe8\x84\xc4r\x80\xcf\x0d\x84\xd5\xacD\x938J\xc8\x00\xaf\xb6\x859M\x07W\xe1dF\xe4\x97\x0d\xb4\xd6l\xa4df\xd5B4\xac\x89f\xcd\x1b\x9e\x02r\x90\xe5\xe1bYV\xd6\xec\x00 \xd6\x8aINjs\xb2\xd5\x1ef\x86\xb71\xb3\x8d\xa9\xc0\xdf\xd6\xf7m\"\x910\xb5\xad\xba=\xbd\x8c\x06\x9b\xdcF\xd3\x18\x83R[\xd2\xec\x94\x08\xd3\xe04\x9a\xcd\n\xc1\x1aD\xfeT#U\"\x9cF\x9c~\xde&k\x99\xd5\xeecc\xb4m\xc8\"\x8f\xe2\xba\x8c\xdc\x9e\xc4\x9b\x88\xdc\xd6`\x9e\x1b`RJ\xf3A\x94|$\xe3\xbc\xec\xdcw%\xa46]\x0d5^\xd8I\xdc\xa8fly\xd0\xd4\x8e\xda\xb5\xa5\xad9\xbd \x8d[Z\xfc\x06M\x0e\xeb\xb0U\xbb8S\xbf43\x8d\x92 ,\xf8\x0d\xa1\xaf\x1dX\x07\x02\xeb\xe0|\x1d4\x0d\xbdR\xd7V\xfa'\xff\xa2\xc15\xb9\xb7\xe6O\x16\x95\xc5\x11\x0e\x83v\x95\xcb[\x0f>\xd0 %\x19\x8do\x08St\xeb\x17\x1d)+\x8d\x98\n\xbe\xb5\xf9\x0d\xc7\xee\xc3\x07\xef\x1f\x0f\xde\x8b\x7fll\xfc\x1f\xc8h\x91\x8e\xc9Q\xb8\\F\xc9\xec\xdd\xe9\x9b\x9d*\xc3\xe1\xe0\xaaH&1[\xe7\xc1\"\\\xfe\xff\x00\x00\x00\xff\xffPK\x07\x08-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8\xec\xbdys\xdc6\x9a0\xfe\xff|\x8aG|w\x152M\xd1\xdd\xad\xc3:,k\x1d\xc7\x9e\xf5\xbb\xf1Q\x963\xf3\x9b\xb7\xa3UQl\xb4\x9a1\x9b\xec\xe1!Y\x13i?\xfb\xaf\xf0\x00 \x01\x10 \xd9\xb2\xb33\xbb5\xacT\xac\x06A\xdcx\xeec\x0b\x16U\x1a\x95q\x96\xba\xa5\x0f\xc4\x83\xdf\xfe\x00\x00\xe0dW\xbf\x92\xa8t\xe0\xf4\x14\xca\xbb5\xc9\x16@\xbe\xac\xb3\xbc,`{\xdb\xf4v\x95\xcd\xab\x84\xc0\x19\xff#\x10\xb5O\x81\xb8\x1e\x1c\x83#\xba\x91?\x9a\x93E\x9c\x12\xda\"\xfb+\x08Ws8\xe3?\xdc\xd9\x05\x0e\xe8\xb8k0g\xe2\xaf\xe0\xfc6\xbc\xbe&\xf9\xcfo\xce\xcb0\x9d\x87I\x96\x92\x0f9)HY\x0f\xa1\xec\xab\xf3\x87\x07\xb7\\\xc6\x85\xdf,\x89X\x8e\x9c\x94U\x9eJK%^\xd0\xe7&\xcc\x81\xc0)\xfc\xf6p\xf2\x87\xbaPT\x85\xd4\xcd\xe5\xca\xf4\x89\x17\xe0\x92Y~\xe1\x89v\xe9\x0f\xb1b'JU\xdavLG7\xcb/h\x17\xcaKl\xeb\x18r\xbfU\x9a\x1c\xc3\xd6\xa4]\xcc\xbb8\x86\xdf\x1e\x94w\x0fj\xa7|T%\x1dU\x14&\x89\x1b\x8b\xc1\xf9\x10\xfb \xfdJ=\xfa3\x81S\xd8\x1aK/\xea\xd6\x9anx\x9bi\xb0\x82S(}H\x83\x88N\x8b\xfe1\x87S\xf5\x10\xfa\xd0Z\xb24\xc8\xf8\xf9\xbc\xbf\x87\xf7x\x1c\x02vL>\xe4\xd9\x9a\xe4\xe5\x1d\xff\xb2\xbdBQ\x96.\xe2\xeb*\x0f\xaf\x12bY\x96\xb4Z\x11\xf1~\xdc~\x7fM\xcac\xc8\xd5\x15\xf3\x9a9\xd29\xa4\xca\x1c\xf4\xd1\x8b\x13R\xd2\xa3^\x06\x97\x97\xa4x+\xeeK\xeb\xac\xc9\x8f\xd8 :\xd7\xb0JJu\x0cp<\xec\xeb\x01{\x9d\x06s\x97\xf8\xe0\x84\x0e]d\x1f\x88:\xbdL\xdf\"\xbd;\xde\x0c\xdf\x99u\x9e\x95\x19\xbd\xa9\xc12,\xde\xdf\xa6b\x8f\xd8i\xc2\xef\xd5\xf6\xd7p\n\xce\x93y\\\x94\x8e\x0f\xa9\x9b\x06\x14pL\xc7\x07\xac\xda\x83;\xd3\xceG*\xf7\xefT\x05\x81\xa2\xcc\xe3\xa8tN\x94[\x99\xc3)\xa4\xee\xfe\xd4S\xf7\x94^\xa8\x99\xf39N\xe7\x8e\x0fNN\x8a,\xb9!\xf4\xcf(K\x8b2\xaf\":\n'N\x8b2L#\xf2~A\x7f\xads2\x8f\xa3\xb0$\xec\x935\x05\x1b)\xd6\xe3[s^\xde%\xf8\xb2\xa0\x7f\xbcH\xe2\xb0 \x85s\xa1\xf6\x9ca\xcfE\x14&a\x8eu\xc9_+\x92F\xf8\xdd*\\\xaf\xe3\xf4\xda\xb9h\xe6PJ`\xb4s\xf9\xe9dS\x1f\xaa\x936\x9c\xa1\xb7\x8c^\x9a\xdf\x1e|\xb1=\x9f\xc9]\xe1\x12/Xd\xf9\xab0Z\xbau\xd3\xadvE+;\x138==\x858\x88\xd39\xf9\xf2~\xe1\x12\xcf\x83r\x99g\xb7\x90\x92[\xc8\xdd\xef~N?\xa7\xd9m\n\xd9\x1a\xa1\x9e\xf3\x1d\x8c\x80\xc0\x08\xbes .`EJ\x88S\x06\xd8c\xac\x90-X\x9d\x92\xd5\xf9\xcb\x8b\xb7?!l\x0f\xbe\xf3\xb4\x8b\xe6\x03\x05\xcaA\x19^3\xc8\x81\xbf\xe8\xe6\xd1\x99\xb1?\xee\xef!\xad\x92\x84\xbf\xe3\x1b\x8a\xaf\xc5\xdf\xf7\xf7\x83\xae\xca\xd6X\xed\x9c\xb7X\x9f\x0bl\xb3\xf9%\xb7\xda\xba\xf4`\xbd\x81\xbc\xd5\xe6\x80a\xb3\xd2Ou>\xf5\xd1\xc3j\xcd/}\xd6\xfcL\xf2y\x8b_j-\xf9\xb0bE\xa5@\xad+\x1fd8\x057\xc5\x0f\x94\xd2\xfa\x83\n\xf1\x9f\x8f\xbf`\xeb\xf4\x14R\n\xea\xe4\xf3\x96\x1a\xce\x9bq\xcd\xd2Yy1\xf0h\xd2\xa7\x9a\x9d\x97y\x9c^\xbb\xc4\xa3\x18\xb2lUzh\x1f\xa8\xca\xf3\x81\x1f\xe9\xac>\xd2\xf5\xb9\xb2\x1dm\xd0F%\x1e:\xba\xc8\x87\x85\x0f\x89\x0fk\x1f\x96\x8c\x06\x81\"x\xdd\xa6r\xe83\xaf+\xfc\xd1\\\xe1\xa6\xaepn\xaepWW\xf8`\xaep]W\xf8\xc1\\\x81\x12\x88\x94\x0b\xc8\xe1\x18n\xe8\xbf3\"N\x17A\x1a\xf8\x81\x12\xf3\xae(\xfe\xed\xc1k\xe8\x0ds\x8b\x97\xbc\xc5\x98\x9eB\xd1Z\\\xb7f\xfe\xe8\nN\xe1\xb2i\x19\xbf\x91\x7f\xe3\xa7'\xadO\xe9\xf5w#Dvx\x98\x10hz\xb8?\x94Lv]\n\xec\xb7\x96\xf4\xdd\x8a\xfe\xef&\x8b\xe70F\x90\xb9\x9aE\x17\x1e\xe5\xa0\xe0\x18Ro\x16]\xf8@\xe9\xa2kZm\x01g\x10\xba R\xc6\xc7p\x87L\x98\xe9\x0e'X\xef5\x7f\x83\xf4\x96\x0f \xfd&\xf1Y\x87\x95\xbb\xf2\xe9\xa1\xa0P\x1e\xb7\xe1g\xcf\x87\xcbYt\x01[\xa7\x90\xe0\xcdu/\xb1\xc6\xda\xf3YOW\xf2[\x17\x7f\x9dB\xa2\x81\xd5f)\xf2 bw9\xf6\xe9I\x83S\x98\xd0?\xfeHI:\xfa\xc79\x9c\xc2\x1e\xfd\xe3\x03\x9c\xc2!\xfd\xe3\x07Z\xe7\x80\xfe\xf5g8\x85]\xac\xf53\x9c\xc2\x01V\xfbH\xdfN\x0f}\xe5\xc6\x17\x9b\xdd\xce]\xe3\xed\xdc\xd3\x8b\xf9\xed\xd4\xef\x1b\xbd\x9dO\x9c'\xd7\xed\xcb\xa9\xf7n`]@b\xe38\xaa\xca\xdc\xd2\xb3\x1c;\xda\xa8\xf3\x8c\x02H\xd2>\\\x1c\xde:N\x83b\xdd\x10F\xa7\xe0\x00\xfd\"\xa5\x18\xe7\x14\x91\x0f\xef(\xf7(%\x90\x84\x11q+\x1f\x9c\xed\xbfVYy\xe2x\x88\x99\xbe\xf3|\x08a\x04\xces\xfamL\xffz\xf6\xc4\xe1d\x9b\xf3\xdc\xb1m\xeffD)\xe7\x8b\xe5\xf2\x94a \xe2\x86\x9e\x0f\xb9\x9b\x07\x1f`\x04y\xf0\x1a\xbe\x87\xd8\xed\xa4\xd2\x04\x1f\xe580+/\\:\x07\xeb\"\x11\\#\x12\x94\xd9O\xd9-\xc9_\x86\x05q\x91{$A\xb1N\xe2\x12\xbf\x0e\x12\x92^\x97Kx\x0e\xbb\xeat=\x1f\x1c\xb6\x86\x94!\xe9C\xdc}\xe8\xc9\xa9R\xc6\xac\xce\xe9\xce\x89\xbbz\x1b\xa7\xf3\xec\x96n\"\xfb+x\x1b\x96Kz\x97\xf1\xdf3\xf1\xfe\xd8\xf2yA\x92\x05\xfd\x98\xfe\xab\x7f\x8a\xef\x8eA\xc0\x01\xd7\x11\x84\xe82.\x1c\xcf\xf5z\xf0\xe05\xc7\x83\xd7\x8f\xc0\x83G\x9d\xa4\xca\xbe\x8e&\xd9\x8d;\xfa\xdfC\xaa\xd8\x89\xb8\x03\x9d\x16\xa0Kb\x90m\xc9\x1b[o0#\xa5\x91d\xe5\x7f\xf27\xed\xe5\xcc\xe9\\b\xfa\xbf\x01\xfb/\xaf^6\xf8p\xbf\xc8\xf3\xf0.\x88\x0b\xfc\xd7\xdcX:\xb8\xb1\xff\xe57E\x9e\xf2\xb0\xb3J9nN\x17\xd0\xbe\x04;\xf2\xe9nM^\xe5y\x96\xbb\xce\xcb0\xfd\xae\x04\x8a\xdd)k\xbd\xcc\xe6\x90\xa5\x00\xec\xac\x9aey\x9bB\xb0\xa6\x15E\xb4e\xb9Vt\xb5\x9a\x1e\x94\xf3\x95\xdfi\x9f\xd0\xf6\xd2\xce\xd3\x89wq\xec\x03\xb9 \x13\xcfuXq\xd3\xfee\xd9\xc7\xbf\xcc\xfb\xf8\x97\x9b>\xfe\xe5\xae\x8f\x7fi\x18\x9c?\xdb\x19\x9c\xe5\xa6\xec\x08\xe5aV}\x8c\xce\x15o\x99\xb2Ns\xc1:\xd9x\xa5.\xdee\xa9\xf1.\x8ckY#3\xa0q-W\xc8\xb5loC\x88\x8c\x05\xbb\xbc\x94\xd5\xa1,\x0b\xf2\n\xc7\x90\"3\xb3b\x8c\xc3Rc^\x9a\xd3\x8f\xb5\xcf\xb0\xb6`rh#Y\xcd\xf7\\\xd7\xdc\xc8\xe9)\xb2:\xdd\x92$\x90H\xc6F\x90d\xa7\xd2\xc5C\xaf'\x05: Dr\xecf\xda?\xa0Oq\x1b#T\n\xf3\xebjE\xd2\xb2\xe0\xb4e\xdfw\xf4\x89\xc2\x82\xc0\xf8\xb8\xb7\x1eH\x02{r\x0be{\x0b\xf5\x07[\x9el\xde\xb2K\x0c\x94\xb5\xfe`\xe3\xd3\xc74\xae\xd0\xd4\xa6\xe7\xa1\xf3m\xab1\xba\xa1\xd6/\xecm\xd5\xea\x95p\xbdN\xee\xb8\xf2\xaf\xde@s\x8b\x0f\xe6u\x11\\\x87\"!\x904!\xb2J\xa5n\xcaE\xce\xfc\xa6\x93\x9b\xcfl\xdc<~\xe6\xba\xab\xe0&\xce\xcb*L\xf0\xe25\xbf\x10\x96x\x9cW\x17\xbc\xfeG\xfa\xcd%\xfd\xdf\x16\xb2\xfc(\x0f`\xdc~\xe2yV\x8e\xfe\x1f\x85\x8b\x9f\xeab3.dk\x953\x1cu\xa8#4\x8a\xa2\x8c\xca\xc3f\xaa$X\xb06\xf7=83W\x96\xd5n\x16\xccE!H\xee\x96\x9e\x8f\xb0'\xa3gtk\x8c\xdc.jL=\x03Y\x04\xcd!\xaa\xeaf\xd5\x0d\x91 \x9f\x87V\x7f\xce5)\x1d\n\xbc\x91\xb8r\n\xf1\xcb@>\xbe\x88\"R\x14Y\xce\x08\x8a\xa2Z\xd3\xfd \xf3-\x0bA\xe1\xdc\x84IEx\xdb\xf4\xd0\x95\x0cY\xa5\x01\xbe\xf0\xfcMI\x0e\xf9\x08l\xa5\xee\xf4\xc8\xb3\xf3\xfd|\x0cO)\x9e0+~\x7f{\xe0\x8a\xcb\xf6\x82\xa2\xe6\xb6S\xa4 w\xd1\xbe\xa0\xea\xfa{A\xd8\xcc\xb3\x9f\xd8o\xe4\x1f\x9a\x1a\xb4\x8f\\\xb4\xebWS\xa3\x06u\xc8\x92K\x82j\xcb%\xda\xdd\xb3\xb0\x85\xa9\xbb7\xf5\x14dk>\xf4\x82\xc5\x0e\x16\xbcF\xecNh5\x99t\xef\xbf:\xb5\xf1\x01;b\x1b\x9f-I\xe67\xb1L\xa8\x9b0\xdf\xa2\x17\xb7}iT\x1a<\x05\xc6k\xd8\xaeL\xdf\xa0\xfb\xf8`uX\xff\x8d\n\x8dne\xba\xb2rCd\x82\x88\x9bc\x1f2\x1f*\x1fB\x1f\n3\xa8\xa4@d\xcbHc!\x03\xd0\xc6\xb9\n\x8fL\xc9T\x88\xe8\x1c\xc9-p\x18\xf76N\x99B\x8e|\x89\x08SJgQT\xe59\x99\x9f\x00\x9dd\xb9$\x90f\xe9\xceJT\x9c\x93\x1b \xe9M\x9cg)\xc5\xffH\x0e\xd3J\x8b*I\x80\xd0VaE\x8a\"\xbc&\x10\xa6s\x08\xe7sTe\x87 ,I\xb2^T \xdc\x86y\x1a\xa7\xd7E\xa0\x9f\n\xfa\x90\xa4 \x1dD*E;3}\xb1.\xcct>}(\x86\x1f\x9bi\x11W]\nR\xcb\x80\x9f\xfck\xf1\xe4\xda`\xdedz\xf8A^\xcc\x92\xd1\xe8\xc2X\xeb\xc1\xf3\xbc \x0dW(\x91}\x93\xde\x84y\x1c\xa6%\xfc)\xce\x92\x10)\x99\xd6WmJ\x8c\xdd\xb2(X\xe4\xe1\x8a\x14\x9f\xb2\x0f\xd9\x9aQ\x1a\xd1\x1f\xcc\x1f\x0e\x82\x01}\x16!OM\x9c\xae\xa4\xac\xeeW\xec\x0b\xb6bvaa\xa3\xd8\xa5\x8eS\xca8\x90`]\x15K7\xed\x10V\xab\xb35_\xacD\x9d\nW\xf2\xca@.\x0b\xe2tI\xf2\x98\x83\xed\xdd}O\xfd\x84\xb1\xe8\x93C\x1d\x03p\x1e}\xf2\xd4\xd8\x16e\xbf*\xe9M=?\xdaK\xec\x86\x0d\x91\xeb\xf9x\x0b\xc7'\x10\xc13\x10\x1c\xd0 D\xa3\x91\xbe\x88\xe2\xc8\x17\xb3H[\xc2\xa4io\xb6`\xcc\xb1Vt\n\xa1R \xa3\xc2f\x94|\xff \xb1\x80\xf9\x16\x8b\x97x\x9e\xccY\xd0\xef\xd4\x91U\x1c\xfb\"\x9b@\x89\xbbP/@\xa9\xec\x16\xb3,(\x83\x9c\x84\xf3\xf0*a@\x98\x1bi\xf0\x92S\xd8\x9a\xb4\xea\xdf\xe6q\xa9\xd6\xafKD}Z\x18&Iv\xfb\xefa\xb2x\xbf&)7\xbdS\x1bRk\xd4\xad\xb5>\xac\x9b\xcc\xd2\x88\xb8\x0eA\x83\xa8u\xf7r\xae[P\xc3\xd0\xf6\xfd=+\xbd\x14\x138/\xc3\x92\x04$\x9d\x13\xb4\xd6\xc9\x83\x94|)?\xc5\xd1gw\xc9\x86\xd0\xdd\xe9\xb2\xbd\x87%m\xcd5\x89\xf2\xccTb\"\xf3b\x8e\x18\xd7\xbf\xc7\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\x16 \xa9\x18\x06j\x86\x83\xfd\xa4\xa5$\xd5\xd4\x17b)w\xab\xde\xfdfB\x9e?h*sR\x94yvG\xe6\xad\xe1\x0f\x1e\xa2$\xcea\xa3\x15\xe7\x14G\xab |\x0c\xf3i\x8e\x98\xfaeP\x8f\x8d\xd60-D]Acu4a\xa12\x113@\xfe\xfd\xa7\xd0X\x9f\xd9&A\xabx\x1d\xdb)m\\p\xc9\xbf\xea\xa3\xfc\xb1C\x86?\xaa$\x11\x17\x16\xcf\xbe/\xdf#\xe2\xcb}\x7f\x13499\xda\xb3\xea\x8a\xec\xbb!\x8e=\xaetN\xd7\xb56\n\xeb\xa3\x8a7\x1c\xdf\xde\xc1\x9e\x01\x8f\xbf\x0d\xcbe\xb0\n\xbfv\xeds7\xde|\x02\xd2\x80\xcc\xe3\xd9\xb73\x88LZ2\x90\xb5\xfb\x87a\x10\xa7\x87\x1b/\xf0\xdf\x85A\x1c64!\xaci+\xc1J8\x93\xee\xa0\xcd\x19\xe3\xdb\x8f\xa8S\xc8\xb5\xb5U\xba\x1d\xf2-\xebg\x9a\x85\xeec\xf7\xdeb\xaeg\x16$\xee\xeb\x06\x96\x8c\x90>:\xf4\\\xa7\xc8#\xdd\xd4\x81\x92\xd3\xb5\xd0\xb6\xcc\x98\x1dI[\xfd\xe5:\x0e\x8c \xf4\xb8=\x8a#j\xca'\x06-\x08\x838-\xd6$*\xcf\xb3*\x8f\xc8\x90C \x08S\xe9f\xf96K \xc1\xa5\x87&\x12=\xb2Y`\xa4\xea\xa9\x8e\x10\x7ffn\xea\x83CYB\x07\xf5@q\xf3\x9b\x1e \x8a\xbc\xe8\xadm\x8c\x97\xa4\xcf\xaa\xe6\x8b\x8a\xd7;\x03\\\xa1\x92i\xb1\x8a\xe0\xd7,N\xdd\xda\xda\xd7\xc3\xf6\x90\xe2\xcd\xe1\xac\x86\x07p\x0c\xa1\xf8\xa9\x94\xc6\xcd\x818\x06wN\x12R\x12|\xefK\xaf\x14K\x8fF\xf2.\xd3[\xf56u0\xd2\xe2.\x1a\xef\x19e;894\xab\x90\xc1\x91\xf8\x08\xb9\xffot\x0d\x7fo\xc0\xb01\xd66_\xbd\x03\x93\xa2\xd9M\xdd\x83\x03\xcf\xc7\xf7\xe3\x86 \xb69\x98\x18\xaf\xe9\xe4@7\xf3\x0b\x8d\xaeT\x9f\xc9\x9d\xd9\xff''\x0b\xf3\x8b\xcb\xcb\x82$\xf6wx]\x8f[ \xcb\xe4%VX\xb7M&[\x83\x9c,\xa4\xcdh7\x13\x0dk\xe63\xb9\xd3\xf6\x14$\x96\xbc\x0d\x1ar!\x962\xc2\x88\xb6\xbc\x92>\xff\xf2/\xec\xf8\x1cC\xd5^\x1c\xfa\xea\x18\xca\xf6\x0b\xdc\x03\x83v\x1b\xb7 m\x97\xaf\xf3l]\x1cChX\xff\xec6%\xf917j\x12\x8f\xd9\xfbI\xb2]\x91\xc4\x1cA\x94\x93\xb0$\xaf\x12\xb2bn\x15}\x94 \x9e\xf1\xda\x17\xa25\xa2\x84\x9e\xc6*I\x0c\xb3\xe0o\xd4\xc1QZ\x83\xdfNY\xdc/\x1e\x14\xc3\xe4\x10\xd3\xc3CP\x03\xef\xae\xb9\xef\xc7\xc2\xf3!\x12\x85 3\x98\x1c\x01\xa1\xfb\xee\xf9 \x8bM\x03v\x84\x05\x1c8\xaeK\xda\xd5\x18\xf2Q+b\x19\x02\xa5\x8c\x810\xe6\xbb\xb7\xbd\x0d[\xa1v5]V\xeeV\xcc\x93\x11\xfd\x1fOZ\xcb\xb7\x84S\xd05\xe8\xb0\x03\xd3\xf6\xca0Y\xc7\xd2\x83*\x88\x96q2\xcfQ\xa4\xa1\xa1%\x94\xb9\xd2\xdaKx\x0e\x13\x13YQ\x0b\xb3\xe6\xc2\xac\xcd]\xd25bb\xac\x1bx\x06\xcb\x13\xb8\x19\x8d<\x98\xcfn.\xe4\xd1\xcdn`\x04S\x83\xfco\xec\xabc\x9a\xab'\xb05\x13\xee\x15\xc8=q\xe8z\xb5\x84\xe4\xc0\x97\x07\x8dO\x94\x9a\x16\xf1#\x9e\x8b;O\xdeD\\xi\x07\xee\xe8\x0et\x0cM\x08\x80\xe9ig\xee\x03c\xfc/\x0eP\x8a\x9e\x96\x14g7\x17\xc7\xaf/\xcc\xeb0*\xb3\xfcn\x90G\xa4v\xc9\x82\xab8\x9d\xbb\xdc\x07\xc9L8\x93@(\xd75/\xc5E\x10%YJ^\xa4\xf3\x8fL\xdc\xfd\x1f\xa4\x97\xb9n\xe6\x18p%\xbd\xcf\xa0,\xfd\x87\xdf\x03\xfa\x07?\xe7e\xc0\xa0\x8a\xcf4\xfb\xebB\x9f?\x1d\xc0f\xf0\xa2\xaa\x0d\x9brTd\x8a\x86\xdb@\x02m\x9b\xe8\x15n\xbfB\xc1\x03\x0e\xbb}j(\x12\xed\x9a\x8b\xb79\xd0\xa9\x14\xa03\x17@\x87\xdd\x9a\xfax\xc80h\xa9\xc3 \xb6\xde\xec\xe0#\x1e\x97\xcft\x0d\xb6\x0c\xef<\x0d\xdaT\x16h\xc3\xca\x15\x15\x11%\xb6T9P\x02g\xb0\xa6\xc5\xa7\x90\xd0\x7f\x8e\xc5/Z\xd7\x00\x9d\xee6\x84Nw\x1e\xac\x87@\xa7\xbb^\xe8t]C'\xbaz+\x06\x9dV\xf0\x0c\xeeN`E\xa1\xd3\xf5l\xa5B\xa7\x95\x05:)\x03\xba\x1et\xff\xf9\xddX\xfa0\x17@\xe0F\x95\x13\xd3\xc3\x1f\x17\x7f\n\x93xn:\xfe\x9bP\xa4\x8a\xbc\x88\x1d\x10AJ00&\xf7\xaa\x10\xc0\x7f\x80~\xe2T\xd2\x0e\x1f\x98Y\xc0\xdd\x83~\xa9@\x87\xb3\x03c%\xcc\xa0+wS\x8f\"P8\xe6\x87\xb0\x99\x8aq\xec\xfa\xc09%\xa6\xab\x8a\x8d\x04ef\x10\xd3\x0b\xc3R\xae!-H\xf9)^\x91\xac*a\x192\xb1\xc5\x15!\xdcK\x97\xcc\x9dn\x91|\xd5\xdfA\x94\x900\xff\x8a.B\xb3\xfc%\xc5s\xd0\x8c\xbe\xd6\xda4Et\xf9\xc6\x06\xc8\xc6\xbf\xcd(\xd3\xb5\x95\"\x880\xb4C\xf7\xb1)\xf6{\xda\xed\x94r\xa4\xec\x0b\xf5\x9a 9\x87\xd1\xa7\xd5\xdc\x1c\xb4l@8\x92l\xb5\x0e\xbd=\xb4\xdb\xe2\n,s[\x16\x10\xf1\xb0eg\x7f\xcdsHm\xb2\x04\xe9 \x9e\xc9?Z\xc4{\xa7\x80(\xad=\x18\xea\xfa\x03\x06\x95\xdb\x06\xa5\x1c\xde3\xf5\xe7\xb1\x04\x85\xa0w`\xb4\x8b\xca\xb6\x8a\xae\xa6\xa2-\x98\nu\xa6i\xfe\xd1\xfeV\xd3@Q\x0c\xb931]\xfe\xb6\x8e\x8e\xf9? J\xe4M\xd5\xeaY:9z\xe0\x83(K\xa3\xb0t#\xb4/\xc4\xb6}\x88D\xa5\xedmX\xba^\x9f\x96\xcet]\xb7\x166j\x96\"\x89\xd0]\x1b\xd4\xe28F\x83uC\x8d\x0f)\x01\x18\xd5\xfaerb;\xe7\xf8\x01\x85\x92\x91X\xd7\x13\x18\x8d\x12x\x86\xdf\xe0\x82\x14\xb3\xe4\"\xc8\xab\xd4\xb5X\xbc\x8a\xa5\x90\xbb\xec\xb9%\xc0%|\xec\x8e\x9a\xf6N\x865\xbc\x92\x0b[Jk\xbd\x1d\xdeP\x85 \x90\xf1d\xc6F\xe9\xa9\x95_\xf8\xc3\xbb\xb1\x830\xf1\xe4n\xd9\x864\xe2\xe9\x87^\xe2\xe9\xef\x08d\xb5\x83\x0c7\xed\xdd\xc3FC\x80V\x07\xc2\x1a\xa0\xbb\x03\xfb\xec\x8do\x1e\xf4\x05{\xe8\xbc\x89s\xbb*qQ\xa5\x92&3\xa44%%x;\x9b\xbbq\x15\x8b\xd3\xb8\xd6:\x0e\xe2\xf1(E\xc0hW\x03\xed<1`\xe9V5J\x1d\xdba\x01\x9d\xcf\xe4\x04Rx\xd6\"\xceO \xa5\xc41\x99\xa5\xb4+\x95@N5\xe28\xe2ZVr+\x96\xcf\xf3a\x82th\x0d\x05\xef\xef\x01\xa3s\x84\xeeR\xa1~\xe7\x92D2\xaf:=\xa6\xc4&p\x9bs)\xde\x06\xee\x85\xd2l\x1c\x94q\x89\xd6\x1f\xceU\x9e\xdd\x16$wh!\xff\xbb\x89\xba\x94\xde\xf0\xf0\x1bq\x10\xe6\xd77\x0c\x7f@\x1cp\xbbAd\xbe\xa4\xdfE]\x1b\xdf\xdd\xe0w\xf3\xf9OqQ\x92\x14\xdb\xbda/Q\xd9\xc0\xfe^,\xc4\x9f9Ye7D\xaf\xccJ_$\x89xQ\x887d\x15\x97\xe2\xefuN\xd6$m\xf5\xc4\x8b\xdf\xa7Q\xab\xddDj\xae\x97\xa1\x98]\xa8\xabw\x15\xa7\xf38\xbd\xeeVR\xe9T\xeb:\xcf\"R\x14\xf5\xc7\xb1f%\xedh[\x14\xdd\xce\x07x\xc89O\x1c\xed\xb3\xe5\x0f\x18\xd9&\\\x88\x91R\xe22y&\xc8\x81\xb3\xe1\xbd\xf9\xd3\xab\xcb7\xef^\xbfy\xf7\xe6\xd3_\xb0\xc6\x04\x9e\xd8V\x9a|)I\xda\x8a\x8bh[\x02\xa6\x9dk\xd3Q6\xf9-.\x0d[:7S-\x9f]\xe2y\x0d\xed\x04\xcf o\xd6\xae\x9c\xc5\x94\xc5\x9e\xa5\x17LD\x1a_|\xfb+$J%9\x9d\xd9]\xa5\x15\xd4\x8fYj\x8c=\xd35\xac:5v\x063n1\x95 N\xa3\xa4\x9a\x93\xa1\xa1\xcb(\xa7_\xf7\xa5\xbc~\xe0\xc6\x0fC[2D@3\x8c_<\x84\x85\xc7C\xe5.\xfdk{[\x84\xc6ce\xf8\xe7\xf66\xe4\xc2\x12\xbd\xd5\n\x1d_\xca\xde\xea\x9c\x06\xbeY\xc4IIr\xb7\xf3-IN(\x11\x17\xa2\x17\n\xfb\x06\xc11z\x0d, \xd4\xe3\xa740d\x0b\x08\xa1\x88\x96d\x15\x06\xf0F\xbcb\xf1\x0d)>\xc8\x16PT\xd1\x12[(Z\xc4a\xe0\x18\x8e\xe3\x12C\x1b\xae\xd6qB\xe6o\x9a\x95\xab8\x0b\xeb\x88\x018>\xcc.\xf4\x0f^}i\x7f \xd6\xd3\xf8\x01E\xcco\xc3u\x17E\nB0\xc4n\x90\xd1\xae\x80>l\xb1\x8e\x8dZv|\xcf\xc3j\xdak\xf0`\x9b\xf6\n\x8b0I\xae\xc2\xe8s+V.}d\x89{\xfdA\x07\xce\x17O:cW\xf1b\x86\xd7\x94\xf9P\x8a\x9e\x9a2C\x0c\xc3vw\x14\x90\x97\x0c\x90\x13\x83Z\xea\x04J\x86\xf9J\x0e\xbd\x1b\xc6W\n\xaf\xa8k\xff@\x12\x0d\xab\xe7\xc55\x9e\x16\xcb\x99\x90/\xb7\xf8+\x0c~|\xf5\xfa\xc5\xcf?}\xaa\xe5b\xa1`\x19:N\x848\x0d\xea07\xf1\xb5\xef\xf2\x80G\x01\xa4\x18\x97\xb6\x8e\xb3\xb1AyF\x9f\xab\x9c\x84\x9f\xdb\xaf\xba\x9c\xe1K\xada\xbd\xab\xc9f]q}\xa8\xa5/\x19\xc8\xfc9\xcf\xd2k`\x9e\x81\x08AD\x97x~\xce\x194\xe1\xbbP\xb3v]F\x01\xcc^\x81\x02vN\x0c\xd6N\xceM \xf3\xe5\x0b\xc8\x0d\xc9\xefz\x80\xa7\xc0\xb3\xb2\x1bN\xa8\x01*\x0dn\x9e\xd7\x916\x05XDn\x88\x83\xc6\x02\xdc,\xa7\x802N\xaf\x13\xc2g\xc8Mq=\xca\xa0\x95a\x9c\n\x98\xab\xbcm\xf9\xec!wA\x1e=\x8dl\xd3i\xd4\x81B\xb59P\xb8i\x9b\x81\xf4\xae5~q\x8f\xc9-\x84\xae\x01o1\xf4id\x89\x05\x1c?\xd6\x1d\xd3\x14\x11\x83\xcc\xa4\xb1M\x1bj\xab\xf8\xdb \xcaP2Ho\x05\xc6\xe4\x81Om\x16\xe9\x83}\xf9j\xcdl\xe9C\xac\x83\xad^},s\xee\x16\x06\xa1\x9b\xb2\xaf\x9a\x0e\xce\x0b\x8a$\x8e\x88{\xe8\xc3\xce\xa4o(\xdd\x0e\xf5{\xbb\xff+\x1d\xea\x87-\xeb?\x80\xd5\xf9\xb7:\xf7\xfb&?U\xe6\xdf\x12\xa7\x8f\xa3\xec\xb3\x9eC:@/+\xb7=\\7+\xf5\xf1\xa3&F\x1d4z\xfaQ\xcf\xd8\x91\x86\xda\xb8a\xfcJj\x19\xc3\xc1\xc8\xb21\xac`\xeaO8\xdc\x0e\xeeR\x81\x9e]G\xe6C\x1e\xaf\xe22\xbe\x19\xbcL*\xa1i\x04\x1d\xf8\xc2p\xbdX\xfc\xc5\xf6\x05a\xe5\xed#\xaeS\xb2FPW-\x16x\xe9\xcb\xfaG]\xed\xc1\xab\xddaR\xf7\xe0\xd0\x0b\xd8{\xb3@es\x0b\x06\x03\xe9\x8e\x1b(9-s=\x80\x08\x06\xf6\x97\x17o\x7fz%\xc2\xae9u\x82\xaa\xb0\xc8d\xdb\xc3U\x98\x7f\xe6\xa6?\xf8\x93\xc7V;mb%\xd1\xfat\xcd\xdc\x8a\xa7`be\x1ef\xb0p\x9bF\xcex\x02\x8c\xba\xa4\xc6b,\xf7\xa4\xe3\xf9\xf5\x90\xd7e\x95\x93\xf32\x8c>\x7f\xcaCth\xb4\xbc\x11\x86\x9cK9\x01X\x86q\x88\xb1\xac\xa05\xd1EYXhy\xbc\x8c\x0eY\xb2\xf6\xaa\xff\xca;,\x9c\xd8 \xe4HZ\xb9\xd5\xf2&W_\x8a\xb9\x0e\xa3U\xea}\x1a\x81s\x0c\x8e\x91f!h%\xd1\xb7 >l1\x07\x9dz\x1f(\x85C\x9a|$\xa6\xed\xd0s\x0b\xca\x94\xd6\xa0\x84\n\xbd\xf6\x026\xf7\x1d\x96\xcdK]\x95Z\x08>K\xdd\xe9x\xeaiV\xf7B\x01\x8a\xef\xf7w'\xe8\x88\xbe\xbf\xdb\xaa\xd7\xc8\xcb\xb1\xde.\xaf\xb7\xc7\xff\xdd\xe7\xff\x1ex\x92\xc5\xcbc\xc5\x9dv/\xc66(S\xcc\xda\xdc lCip,\xd4\xcc\xd6\xdc\xa9\xa5\x9ed\x00\xe7\xeeY\xeap3;Mm\xa0\xdd\x85!ru\xcd\xc4.\x17\x82\xcf\xb8\xa3Q\n#\xc8\xbd\xe6\x00\xef\x1e<>\xae\xce\xe3\x03\xfapV\xea\x11a\x89$%\x8a\x1e\xc4\x84\x87\xf7oE\x1f\xcax\xb9\xce\xb0n\x10=\x99\x05\x8c\xfdg\xf4\xe4\xea\x9bDO6\xdd\x8f\xbfOPa\xd3H\xf0ZF$N,7v\x91dY\xde7:\xcb\xd0\xe2\xe2]\xf8\x0e\x15\xce#\x14#\x8c\xe1\x18\\\xa1\xc1\xc81OZ\xbfD\xc1.\xaa\xe9\x0f\x10\xdcw@\xd5\x10\xb4|\xd4\x9a @X+\x18\xad\xb7\xba\xcc\x13xs\xf5h\xac\xe6_R\xe5\xb2!\x05\xdb\xf27\xfa\x18D\xd7]\xa6\x0b\xad1\xf4\xe4Nh\x0f\xc3\x1a\x9b\xdf6\x92\xdd\xe1#Ah\xb0\xe1`\x14E\xaf\xfc\x0c\x90N\xd6\x9dw0\x0e\"\x9b\x00\xb1\xa6\x12\xd8\x04\x1f\x0e\xbb.qoB\x99\xded2\x8f\x0dTf\x8f\xaefQ\xdaO\xc6\xbd\xb7\xce\x02\x0d\x1e\x15\xd6\xae\x8f^l\x85\xfc\xe2\xf2Z}\xf0\x0c+\xb62\x06VbNm\x19m\xea>\x16\xbe\xdc\xf0\xa8:\xa1k\xa4\xd7\xb0\xed\xca\x87\xc2\xe7\x99\xf0\x0c\x95(\x1e\x8efcC\x00\xe9\x04\xdf\xe8&G\xd9\xb0\xcc{\x1d\x9a/2+.\xba4\x9fZu\x83q\x80\xcf\x8c\x12xv\xbf\x96\xc5(\"\xcf\x98\x07\x00S\x1c\x17|X y\xc0\xe41\xf2\xab\xc2\x87)\x93\xb5\x9eu\xe3BhF\x96\xd4\xf8\x90q\x80\xfa@\xa0/\x16\xa9\xb1\x1d}6}\xc7Xn\x98\x91U\xbf=\x18\x15\xd0\x8f\xbf\x04\xc3.\x9f\xa2\xeb5y\xf01\xedo\x13p\xfd# \xa3\x92\x07L\xff?\x0e\xcf\x84\xec\x9c\xc0M\\\xc4%,\xcbr}\xfc\xe4\xc9\"\x8c\xc8U\x96}\x0e\xae\xe3rY]\x05q\xf6$\xa7\xdf=\x99gQ\xf1\x04?\xde\x99\x93(\x9b\x93>\x81\x9c\x999\xe6\xa3\x91\xc7,\xd5\x9d\xed0\xbf.f\x17X\x8f\xa4\xb4\x89\x9f?\xbey\x99\xad\xd6YJRY\xaf\x96\xc3\x08&\xba\xf2\x8c\xb5\xa1\x06\x7f\x17\xa2\x89,\x1f\x1e9\xbe\x89\x1a_\xf4\x87\x8b?i]\xff\x18\xe4\x10\xee\xba\xaa\x8e\xc1\xf4\xb83\xfa\xba\x0fq;\xacz\xdcs\xea\x06\x9d\x1b\x89\x82\xb2q4\x8f`\xe5\xebb\xf1I\x87\xf7\xcc <\xac^\xb8?\xb4\xff\x12\xeb,\xb7&\xc1\xb78(\x97a\xf9\x11[+\x98\xd8E)z\x1d&\x05Z>\xba\x18H[y\xf7)\xaf\xf8\xab\xb1\xfe\x8a+\x17r\x11\xcfW\xfdn\x19w\x9a\x8f\x88\xb9)\xf9\xf6\xb46^\xf0\x03>\x04\xa5\x9a\xfdO\xe0\x94\x1f\x94\x8d6P\x94v(\xa5\x9e|\xbf\xa5n\xd7\xf7\xf0iI\xe0\x8a 7W\xd9\xbcJ\x08,\xf2l\x05i6'\xc1\xaf\x85__D\xee\xf4\x1ah\xdf\xeb\xcd\xfd[X\x95\xcb,\x07\x80\xd7$\xcf\x8a\x02^\\e\xd5\xe7e8\x8f\x7f%Kx\xb6\xc0\xc2\x7fc\xff\x04Y~\xfd\x1c\x9e \x88\xd4\x94\xb5\x1a\x15\xf6H\x8aA\x12{\xf9\xa4uu\xb9\x1c\xaa\xc5?CC\\\xb4\xb2\xe4A\x93X\x0f\xef\x94\xf2\xb2\xbe\x10\xed\x98+\xd0le\x11|\xfa\xcb\x87W?^\xbe\xf8\xf8\xf1\xc5_.\xcf\x7f\xfe\xf0\xe1\xfd\xc7Op\x06\xd3\xc9\xde\xd3\xbd\xc3\xdd\x83\xbd\xa7p\x0c\x93\xf1\xd3\xdd\xa7{\x93\xc3\xa9\x96\xef\xd6\xd2ah\xc5\x95\x94\xe2\xa4\xc3yF_7\x86\x17\x1f\xc3\xf4Z\xf0\xc9\x14(%\xf1\x1cI\xd190Os\x865:\xcc+l\xb3p\x85\xbd\xd3\xcfqZ\x1e\nCc/\xb8\xbcDl\x7fy\x89!,\x1a\xf9\xea\xb1b*\x82l7o\x00}\x9c\xe8a\xe7\x18\x8c\xe5\xb8\xd3\xa1\x85y=\n\x1b\xc5\x06\xc2\x88\xcb5O\x80\x07\xc4\x97\x95 \x85\x9an\xa0i\xba\xbd6H\xde\x1b\x14\x0d6\x12\x0b\xeb\xb7\x15\x10\xcaN\x89MZ0\x1c\xc9=\x9d\x8b\xda,\xb9\\\x12\xe6\x86\xb2\x88\xf3\xa2\xac\x11?\xac\xaa\x02\xedgB(Z\xd1j\xe5G\x10A\xf6x\x08\x0f\xb63\x105\x01i\x0cr\x1c\xcb\xd6Db\xfd,\x0c\xaae\x0d\x89\xd9l\xe8;!\xb5Q\xe7\xcdm\x87BnR\xdf\x91~\xda\x9c\x89\x16\xcf-W\xe5lo\x03\x91\xcf\x83\xfc\xae\x1dK\xbb\x83\xedFW\xbf\xe0\xea\xae$?\xe1\x89\xf6\xd1\x0co\x0c\x98\xeb\xba)\x86g\x8d4K\xbf\xaa\xdfe\x8bEA\xca\xef\xe8\x11\xc8*4G\xbf\xca\xaat^\xd8vW\xef\x936\x0e#p1\xf7\xf0\xd8\xb3\xf6\xc3\xee\xdc\xf0~0\x00A#cI\xa5\x00n\xa7<\xf0o\x0b(\xd4F.\xd6*x\x81\x8fM\xc5t\x99\xcd#\xe9\x04L\xa4\x0b\x10\xd1\nk\x06H;\xaf\x8a\xc1\xd0O\xd9\xfdc\x93R\xb1\xc5\xd8tx \x1a>\xc7\x05\xad\xf3\xc9\xdf\xdf3\xe7P\xa7*\x17\x87][\xbfU\x04q\xf1\x8a\xc3\x0d7\xb58`\x7f\xe7\x08\xd0\xe2H`\x83!\x056\x94\x1a\xf6\x98n\x12H\xf8t\x0c\xf70g\x1bg\xf6\xd7\x02\x8e\\]\x16T\xa8d\x86\x8e\xb7y\\\x12\xd7\x02U\xd9'u\x96\x02\x97\xf9\x042#\xfc\xb1\x0f\xb1\xf7\xe8\xed\xf2\xfaL\x1f\xc5C\xd7\xb2\xa8\x15\xba\x141uH\xb3j\xd5\x08\xdc\xc3\xd2%\xc2\xe7\xc9\x166c\x08\x906\x9a]Iu\x82\xb8\xf8SLX\xda\xfdv\xb1\xc9\"L\xaa%\x8f\xb4!0\xdb\xa3\xad\xa9\x99-\xd5R\x0e\x11\x1dK\x1caX\xe2\x9b:\xd9f\xd7*pj\xb3\x1eIW(\xc2\x1c\xc3\xfb\x9d\x9cx\xb5\xa2\xcf\x8a Q\xbd\xe5\x84E\x14\xc7\x8eY\xc9\xc5j$a\x19\xa7\x93\xce*Wq\x1a\xe6w\x96* )w\xcd\xe8\x845\x82d^W/U\xb9\xd8\xe9\xac\xc1\x08\xed\xdeQ\xfc\xec\x96\x9eu\xc1\xa1\xe9.*\xa6\xdd\xe3\x89\x8a\x9d\x9e\x1a\xe5br\x90\x90\xbe:;\x1d\x95\xa0\x19\xf7\x14\xbe\xef^\xc1%\xf9\xd2\xdfJ\n\xcf\x9f?\x07\x83?\x114\xdb\x19\x16\xe4`\xaf\xbf\xa9\x1f\xfa\x16\xb2\xd37\x1c\xa0v\x0c\x19\xba1\xc0\x990\x96\xac\x86Ph\xf6SvK\xf2\x97aA0\x03\x19F\xa1k}\xaa\xebR\xcd\xe0\xeb\xa6\x8bc\x11w\xab\x9c\x11\x03\xec\xe7F\x14\x14\xfd\xf9\x02 \xe6\x83:\xbd\x93\x98*\x8b\xfe\xb8\x01\x01eM1\xf2\x05\xdb1l\xa3E\xdc\x92R\xee\x10\x85\x81\xdc?\x0eyNx.K\xe4\xce\xf0\x8d\"\xa2\xa3\xd8}\xa7.9D\x90F+Ie\x1ekp\x94\xfa\xdcB\x82\x852\xc6j1G\xce\xa5\x1ccQ\x88\x04D\xa5\xfa\xe5\x08i\xfd\x94\"\xc0\xb2#\x88\x82\x98e\xdc\xb9\x0e\xc0C\xe0\xc8]\xb7OF\x13\xf6h\\\x99\xc2J\x91\x86}\xda\x99\xc01\\k'\xcarB\x8c\xc2'\xde0\x81m\xa4u|\x8b\x9c\xc1\x86t\x1b\xf1\x85d\x10\xcac\xee\xc0\x19\x1e\x86\xae*\x8d\xe5\x0f\xe7Z\x8d\x95\x93\xb0(\xdfX>\xc0\xb9c\x12%\xfb\xec\x8d\xbc\xcbM\x98\xd4\x84\xbd`WD\xa0\x8a\x9c\x93W\xadP\x14\xe6\x1b\xad\xaf\xbf\x05\x98d,5\x8b%\xbc_(\x1d\\s\x8dB\xa2\x82\xcd[,\xa5\x16`\"\x05\x86\xd1\x18\xffM!\x01'\x04s\x0d\x8c\"=\xc4\x91\x1b\x17Za\x01\xc7ej\xd1\x8eTf\x95\x17\xc4,*\x91\xa0\xd8\xa7L\x18\xd8\xfc\xee\xbdWt\xa5\xa6>\x84\xf0\x04\xff-\xf8\xbf)\xfek\xb8o\xad\"M0k\x1b(\x1f\x06\x0b\x17U\x89\x8c]\xc7<{\xee\xcfo\xd2rr\xf0\xc3+\x97\xc0\xf7r\xb6\x11\xf1\x98\xef\xb9\xd5&H85\xda&\x8d4\x1d\xaaaN \x83g\x10\x9e@6\x1a\x99\x992\xe0\x9d\xe1\xf42\x0f\xc7\x1fQ\xf0\xc1C_-8\x1c\xce`\x07\x16\x9dr\x1d\xd1R\xfd\xa1\x88\xd2\x9dy>\xfb\x1cF|\x81\x8az\xdf\x16tA\xacMr \xbb\xc3\xc2\xd7\xb2\x163\xd89\xe5\xa3\xf1\xf9*X\x80\xb3}mR\x18A\x01\xcf!\xac1I\x08;P\xe08\xf9\xaa=Gf.\xdb\xd9\xe9\x9arM<'<\x88\xed\x9a\xf1\x80kx\x06\xc5 \xac\xbb\x16\x1d\x94\x85\x87\x11\xac=\x16\xa4\x97.\xfe\xbaw\xa5\x81\x9b\xc0\x98\xfc\xbb\xf5\x07\xe3\xeft\xd62\xcbq\x80\x0f1\xa9\xb7+3\xd6\xb3j@vt7k3\xe0[\xf5h\x07\xe8\x061o1J!\xdc\xdf\x9b\xf8\x18\xa1\x04\x97\x90\xb6\x81\xe2\xcd\x05-\xc3\x9b\xa3\x90\xe79\xc4x\x0chqLq\x01\xfea\xee!\xeb\x85\x9d\x19\xfc+L)/7\xb68r\x0bu\xe2\x92|\xe9P=\xe5\xf0\x1c2x\x02\xd3zh\xf8\xabK\xfeP\xb1\xb3W\xb1h\x87\xa3Q\xd5\x05>(\x9aX\x87yA\xde\xa4\xa5K\x82\xa2\xba*\xca\xdc\xa5|B\xe5\xc3\xd4\xf3ar\xd0!7g\xd4\x9a$(\xac\xccu\xcb\x19\xbdi\x98\x8a&\x1c\x00\xf4Dc\x83\x0e\xcde\xcf\xa1\xe1\x8d\xfd\xd5\xfd\x19s\nK\xc7\xc2C\x95\\\xdb\xa0\xd3\xd6\xd3\xd5\xd0\x9e\xec\x06\x03u\x9b\xb2\x11\xd2\xecB 8Q\xb3\xf2L\"\xc6\xb3\xed3\xc1Q\x19D<\xe4\xc4\x8b\xd2M{$\xfam\xc0\xf7\xc0dy\x9bL\xfav\xd8\xa4\x95\xb5\x19\xd4\xf0\x97a\x0d\xff\xd5\xfda\xf3A\x9f\x0fm{\x90VC\x0e\xec\xc0\x83\x93\xf2]\x93\xaeZ}\xb0\xb6\xb7a\xcbu \xc5NS\x0f9\x02~ \x19+!\xed_\xc5\xf9M\xcaO\xc3!\xcb\x84\x93R\xb0\xb1\x7f\xe0C\xc6\xb6=\xf6\xea?m\x9a<+H~\xf8\xda\x03\xff\xaa\x8b\x9fUY\x08\xf4\xe9TXL\xf4\xd5\xa7<\xc8\x0fw%\x91<\xa2[\x85\\E\x85\xfd\x0c\x1b\xd7\x8b\xaeq\xa5RL\xa1\x9af\x1c \xb2\xc5\x10\xf3\x18\x83\x1ab\x14\xddv\x81\xcd\x8c\x85\xf8\xf0E~\x93r\x16\x1bLS\xc5\x83N$\xc6L\x89\xe2A#V\xcaJ\xef\x1e\xc1\x19\xec\xc11\xfb5\xdd\x853\xd8\xe5\xbf&G\x138\x83)\x1c\xdbD/\x08\x91a\x04 \xad\x87[|\x83\xe1Z\x8c\xf8\xc5#\x8f\x8f\x81\x05\xf6kz\xe1kS\xc9p\xf4jY%\xcdh\xb2_\xcfh2\x85{p\xc5\x9c\xe4)Vt\x8a\xd3\xf1\xdeS\xfe\xdd3\xd8\xdf\x9f\x1e\x1dP\x92\x88\x92\xb3\xfbOw\xf7v\xbdo:\xff\xbd\xc7\xcf?\xac\x7f\xedn\xb0\x1ajYhY\xa1Cm\x85\xa4%\xab\xd4%\x0b\xe9\x92\x1d\xec\xef\xef\xee\x03\x06\xf4x\x06\x93\xc9do2\x99J\xcbd\x9c\xa2\x99$\xae\x8d\xb1(_\x84\x9f\xd3\xb6w}\xbc\xc9\x18tl!\xf7\xe7.(>\xa0?\x0f|\x11\xb5x\xc1\xc4\xa8c\xd8\x86\xc9x\xba\x0b\xf7l\x1397\xb3\x7f\xb0;\x1d\xc3={\xb5\xcd\x0c\xc2\xf9w\x1e\x05T\xa3SH\xda\x10\xdf\x06\xa5\xfb)\x12A\x8c\xd8\x15 \x14\xe3\x14\xbc\xbc\xafI>C8,\xee1\xc2\x13\x85\x1b\xf5\x16 \xe9.\x1c\xc7\x0e\x18s\xb32\x10\x04\xf4\x16\x06\xd3\xdcXz\xc0`8\xba\xc9}\xa6\x9a{\xdfCD\xa5\xedEv[\xe8S\xfeE\x82\xda\xb7\xbd\xf0\x81\x04\xe7Iv[\x97t\xef\xc3\xa8l\"\xab`,\xdc.\xbbBT\xdd\xb9#S\xa0\x837\xef\xce?\xbcz\xf9\xe9\xf2\xed\x8b\xff\xef\xf2\x87\xbf|zuN\xcf\xd3\xd8&\x8b;U\x93)\x9b\xcd\x82\xcc\xe5=\xb1\x13\xed\xf9\x8cn\xa4\x88o\x92\xc9\x92\x9e=G<\xb5\x02M\xb6J\xb2\xe3\xb4\xba\x96Y\x00\xd8\x81\xa8\xb3l@8H\xf1\xf0Q\xed\xb5\xe5G\xe21\xc3\x8e\x07\x1f\xf6\xa6\x9cVZd\x99\xebY\xc5\xa1%e\xc8\x98\xa5\xe9\xf6\xb6p\xeb\xad\xcb\xdc\x89\x0f\x13OR*\xb6\x8fjg\x0c4h\xe6\xb0e\x90\x9d\xa8\xe7\xca\xf5\xe8\xc9\xfa\xfc6\xfc\xc2-\xe4P\xc5L\xcf\xd4:\xcb\x92\xf3\xf8o\x14x\x1cN\x8e\xa6\xb4\xe82\xac\xae{M\xb6\xc1\xb6\xb1\x85\xe2\x0c\xa3\x1fo&\xd8\x1e\xe0u$\xb5\x1f5\xe9\x05\x0d\x16\x98\x1dBjW\x1a\x8b2F\xe3\xb9\xa237\xd6\xf1-\xf6\x93<\x9c\xcc\xf66\xff+@{U\xc2\xf3\xb8\xa9e\x17LbF_\x99\xc3\x9c\x16\xbe\xd6\x8a)\xe0)wh7S\xa3\x9d _\x1e\x98\x1a\x01\xc1\xcef\xab\xbf\x81\xed\xa7\xf8\x02Y>D4ca\xd6$\x1bB2\xf3\xbe3\x93\x05`\xde\xd4\x0f\x161\x0b\xea\x86\xc6\x86j\xa1Tb\x00\xf0}\xa7\x05\x17\xe1\xe7\xb4\x08\x17\x83\xe3\xafX2\xb5\xe9\xcdQl\xf1-\x9a\x94\"\xac\x0cjk\xcbmb\xa1\xdd\xdf\xc3V\x19\\\x8a&\x0c\xadG\xd9j\x1d\xe6\xa4\xcf!\x1bd\xf3\xca\xdar\x03\xdb\xd7\xf4QF \xd9\x8b:\xba\xb7P\xac\xb0/\x8c\xb6&\xcc\xf0Eu\\\xee2s\x90\x15{\x8c\x0d'\xf5\xaf\x98\xc5\xa1\xcfdN\x92\x99\xd2\"k\x98Q\x86\xde\xe2t\x8b\xc3\x98\xc5\x17xD\xc9,\xbe\xe8B\"\xa9\xe0\x1cY\xff\xad\x0c$\xf2c\x97\xddZ\x89>\xccw\"\x94zh\x8e\x04g0Q\xe2\xe1Bs^\x84\xf9k\xef\x89\x11l%W\xfe\x94-\xe5\x8fy\xc2}\x06\x06\xdf\xca\x84\xe3\xbf\xc1\x1ee\x80\x8d\xc3?\xa8\x01\x88) )\x0c1\xb3\x18L'\xf8u\xe6\xd5\xc1\xd0!\xb3\xa6\xbc\xfa\xceI\xe2\xa24\x99N\xf2\xe0{\x90-\x04P\xb0YQZ\x0c\x1f\x04\x01m\xa2\xb1\x11>\x98[S\x02$\x18W\x0b!\x0ca\x10\xa4C\xaa\x8b!\x89f\xe9\x85\x95\xdd\x12r)\x05=P\xbch\x86;f>IO\x1d\xa5\x8d\xc2N\x9cW\xdc\x18\xc5\xce\x06\xca \xbc\xfa\x9d\xf6\x8f>\x153\xe6FM8g|E\xf4\xd6\x9e\xb3\x08\xcd\xb9mEg+dg\x8fS\x98\xfb\xa0Pz\x12\xfa\xdc\x1a\xab\xef\x8a\xdbp=9\xe8\xf3\x0c\x17\x0c\x0e\xc6\x8c\xea\xd2\x13\x95F=\x91l\xae\xc9GRP\x12\xbb1\x1d^UI\x19\xaf\x13BWpr\xb0s\x15\x97F\xb4\xa8(\x1a\xc6'h\xbe[\x9e\xb0\xe37\xf5\xe0\x86\xbb&\x11Jm\x8dZ\xd9KA\"\xd1e\x17M\x10\x8b\xa8.\xcb\xee\xf4\x9b.\xcb\xdeW.\xcb\xee\xf4Q\xcb\xb2\xd7Z\x96]\xcfo\x8a\xe82\xb1\x7fLZ\xb8\x0dV\xeb`\xef\x9b\xae\xd6\xe1W\xae\xd6\xc1\xde\xa3V\xeb\xb0\xb5ZO\xcd\xabu\xa0\x15O\xd9?\xfbZ\xf1.\xfbg\xef\xf1kk\x8a\x1f\xd7\xb5\xbah\x9e\xdc\xb5\xc2\x8a\xa6\xa3\x8e\xaa\xc5~\xb6\x02\x08\x9c\xc1\x0b>\x9b1\xa5\xcc\x07\x84\x87\x92\xc7\x93wh\xf2\xe9F+\xf8\x07\x8d`\x98\xcd\x99\xb0\xfa\x1a#\xdb\xf4\\\x9eO\xe3Q\xe2\x0ck\x17\xfd\xa6R\xbd\x91\xda\xd4N*D3<\x8a7\xcda\xb69Y\xc1\x10j\x15\x06Q\xac\xe2\xe1\x9d\xbf\xd8\xa4\xf3.:W<\xbc\xdd_7i\xb7\x93:\x86a\x14\xb2xx\xff\x9f7\xe9\xbf\xd7v\x18\x9a\x86_m\xd2p\x075\x0e\x83(r\x18H\x95\xc3&\x9494\xb3y;l6\xbd\xc4:4v\xd1F\xc6\xfag\x1e\xf9Rx+\x1e\x83\xcd\xbd@~J\xe6\x8e8\x02\xc7\x19j6\x0dF\x9a\xec\x81\x8b\xe4\xd9dmA\xa5T\xa0N\xfeZ\x85Iw`\x170J\x1bzd\x0b\x122\x146\x9a\x9d\x88\x87\xe3\x80\xfb{\x0e,kY\x88\xd9/\\\x9bE\x9c\x16k-xr\x17f\xb2)F\x98\xffRK\xca\xdf9p\x81\x9f\x9es\xb3\xe9\x9a\xae\xa8\xddy\x10Fr\x7f\xc9`\x15\x96\xd1\xd2}\x12\xfc6}xr-2l\x80#\"\xe3\xd6\x8d\xf1\x10\x80,\xc8L\x10\x04\xe0x\x9e\x0f\xce3No\xd4\xe1r\x9e;]\xebb\x91'\xf5\x1a\xb5\x7f\xfb\xad\xd6y<\x05\xb3\xea\x9e\xdb\x0c!\xa2v\x84/\xc8\xb1^/\xaf\xed\xb6\xb4\x17\xcc\xd6,naT\"|\xdd\x11\x03\x8bv\xef\xefQ\x80\x83/b\x1d5\x9b)>\xee\x8f\x9e\xd3\"@\xfbh\xdb|sx\xce\xc7C\xe8_\x9dnBM\xfd^\x17\x02\xad1{-\xa4\x03|H\xeb\xbf\xf2\xfa\xaf\xb8\xfe\xab\xb9|\x83\xc4{\x19\xba\x0e\xec\xd0\xd3\x83!\xcd`\x87\x1e\xa7P\x96\xe8e>T\x1e7\xdf\xc0\x00\xc8B/\x18s\x15\xacb\x99\xc24\xbb\xe3\x13H\x98!\xedh\x94\xd8%\x80\xd1,a\x12\xc0\xc5,\xe9\x94\x00f\x18\xbc,\xe1:sZ\xdb\x0e\x83\x1f!\x01\xcc\xe0\x19\x1a!\xa3\x04\xb0\x82g\x90\xd9%\x802\x94\xc2(\xc2C\"\xbbI}q\xe3\\\\J\x91%\xd7.Ao[\xf7o\xd4\xd9\x9d\x1aR\x03\x03\xaavu\"\x99\xfc\x7fmG\x93\xce\x8e\xd0C\xdf\x0c\xc7l@L\x8b\xb9Y\x93\xb8L|$\xddt\x9f\xf3_\xadVj\x0f\x14\x1d@\x99\x83\xa6\xe4,J\xf9F\xad\x9b\x8f0\xc2\xe0\xb8x\x1d\xa7\x18\x97\xc03\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0f,P\xc7\xcc\xe7\x91t.<\x16\xc9\x11\x92,\xbd\xa6\xfc\xaa\x88Fk\x0f\xa8q\xcf\x00\x85\x18D\xea\xc1\x19\x05\xcc\xac\xd8\x08\x899\x07Ay3\xd9\x9f\x89\xd5\x1db\x94_\xdb\x18K\xa8pGO\xea\n]\xacU,98\xc9\xc1{\x9e\xd7NM\"\xe2 \xe3\xef\xf0\xafA`_r\xeeeg1\xab\xca\"\x9e\xd7A\xa9\xec\xf1I\xf2:\xae\x805^\x86\x02^U'Q\xabJo\x08\xff\xc5/\xdbJ\x0b\x94c\xde\xf2^\xd6k\x18\xdb\xc5\xfb\xbc\xdc\xa0\xcf>\x8e\x8b7y\xb5A\x93_\xab\x8a\x80\xa6\xdb\xdb\x0d\xba\xed\xe5\xb1x\x9b_6h\xf3\x1fN\xd9q>h\xf0\xbd\xdc\x14Z\xf3o\xc4I\xd9,u\x01\x98A\x13s>\xd5\xbd\xa6\x98\xc2\xb1\xdf\xf9T\x97v\xfd\xdf\xf3\xf7\xef\xfa8\n\xbe\"\xe6\x1bJ\xdb9\x06\x11\x0c\xc4\xccr\xcc\xc32<\x06\xdd\x93\x0e\xe9\xa3&oFp\x19\xe6\xb9\x88\x0d\xe6\xf7\xc3R-\xf8*\x05,\xef\xe1\x14\xf6\xc6G\x07\xb6\x90q\xbfv\xe1l!A3I\x92\x1ec\x16\xac\x98\x03\xa3\xce\x97\xd9\x8c\x992@\xa2\xc1)js\xed\x0c\xe40\x87\xde\xcf\xff\xa8S\xfc\x16\x93{3drv\x1bDw\xcb&\xf5t\xb78r\x95\xd8\xa7\xbc\xc1\xb2\xa6+\xa9,\x82\xe3\xb0\xfbG\x98\xab\x1c.F\xe61}\xd3k\xb7\x9ce\x1dS\x8f\x07M\xfdm\xd7\xd4\x15St\x8d\xf1\x90\x877f\xc3\xcbk=^\xc659\xb1m\xd7\xf2Yv\x01#\x98\xee\x1f\xc0\xf7\x90\xcf2S\x90X\xd8t.\x9f\xba\xe6\"4\x12\x13\xd4H\xb0\xd8\x18\xf6H6\x0e#\x01E\x04\xef*NK\xbb}\xc7\x08\xc9 k\xdc\xb7O\xf9]\x9c^c`\x13Lj\x00W\xe4.K\xe7\x82\xf6ak6\xd0\x0b\xf7\xa5*\x82@\xa7\xc8\xc7K!\xbes\xd8\x18\x8ca\x80\xb8\xb0D\xc4\x0f\xb1i\xb2 \xba\xa8\xf1\xe3\x9fY\x03\x03\xe9\x91\xfe\xf4\xd8t\xb6\xe615\x88$t\xb0\xc7\xc1\x9c\x93/ \x8b\x17\x06\xae\xe8\x87\x1ef\x88\xd4>\xfd\x84\xdbS\xef\xe3\x86\x9b\xf5\x92\xca\xed\xd5\xadud\xaf\x17\x1f\xa6\xaa\xe1\x0ewG\x8b/\x00\xf5\x10\xdb\x18\x94\xe7\xd938\x84\xef)\xfd{\x061\x1c\xc3\x04v \xf6<\xb4\xd16\xbc\x184\xe1\x8f\x1bMxoz\xb4wt\xf0tz\xf4\x8df\xbdg\x9f5iOk\x17\xa7\xc5\x16c\xd0\xe4\xde\x0d\xbe\x1f_s\xb0lG\xb5\x03\x9e<\xfa|\xfe\xa4\xcc\xc88\x9dZ\xaer\x7f\xcf\x16`\xec\xb3\xa5\xf6!\xe6<\xae\xdc\xc6t\x97\xbd\xa3+\xb07h\x0c?>z\x0c\x87\x961\xecO\xd9;:\x86Cm\x0c\xf2\xafB\xa7\xeb\x86\xd8\xef\x08\xaf\xb8aJ\xeaS\xf8\xaf\xff*}=\x08&\xe1\xb9O\xfe\xeb\xbf\x88\xcf0\x05\x0bC9\xa2X\xbb\xbe!\xa5\x888RR\xc4^\x17\xe5^\x13\x92\x8c\xe5\xea\x92\xbe!\xe2\x1bR\x7fC\xa4o\xca\xba\x04\x93\x1d\x1b\x03\x985:\xcf\xda\xea\x1a\xd7\xc2\x1a s#\xf9IM\x81\xc1\x8e\x9eeE3\x86\x11\xec\xec\x101\xef\x13<\xda\xe3\x9e\xe9\xd2\x0f\xbe~\xc2\x87C\x00\x02o\x90\xd4s\x9c\xf8\x9a\x82\x83o\xdc\x90\x1e'\x07\xedc5\xa8\xd3\xa9\xa5Sn\xe9\x81\x8b2\xb9@\x9c?l\x1c\xed\xcd\xfe\xbaq \xb5\xa1\x0cf\xc88v\xa7\x8f\\\x8f=}\x1c\xae}A\xe4\xa2)\x16\xb18\x7f\x93\x83\xa7O\x9fN'\x94\x8b\xa8\xdf\xef\x0e\x1c\xf6#\x97\xaf5\xec\xd6\x18.D\xe2Li\x06\x93\x83\xf6\x14\x94Y\xed^t\x8a\xf0\xe9\xb0\xff\xd7A4x~\xca?\x9fL\x0f=.\n\xdf\xe1\xb4\xe3:\xbbu)\x95\x00\xdf\x03\x06\xf3\xec\x05\x07\x7f\x0f\xf0G\x94\x85\x91`[~q\x82\xe4e\x1b\nf\x1a\x14\xcc\xbb\x17)3,Rf]\xa4l\xc0\"}#\x90\x89\xbe\xd7\xf5\x89Gu\xde\xf7\x80\x11!v\xa4{0\x11\xa9\\\x07@\xd7\x0d\x80\xab\x15\x9a\xb5\xd7\xf1F\xf8UX\x81\x8bu\xedw\xa7O\x0f\xe8$S8c\x8c\xd0x\xf2\xf4`\x0c\xf7\x90\xc2q?\x05\xb2\x01\x8c~\xf4t\xd8$\xee\x15\x10\xfe\xfbM\xe7\xdb\x81\xfa\xcd \xbd\n'i\xd9to\xd0p\x87\xad\xfe\xf0\xe1b\xcf\xedA\x0f\x00\xee}\xc3}\x9dd\xa1\x01\xba?n\xb816\xd9(\x1a\xb6\xc6\x82\xeb\x1b4\x8co\xb5j\xadaL\x86\x0e\xe3\xc7\xac\xbaJ\xc8#\x97\xe3\xb0w\x1cc\xc1\x80\x0e\x1b\xc7#\xd7\xa3\x7f\x1c\x93!\xe3@\xe6\xd9\xca\xcdX\x848<\x9d\xa7\x82\xe0\x98\x15\x0b\xaam_\xea\x06\x04:2I=\x96t\xcc\xe6\x88\x12\xdbc\xfce\x1dN\x1fx!H\x13r\xba\x14\x94D\xdaB\x93\xac*#\"N\xa1\x84'\x1039\x90\x15\xbc\xd1\xca\x9dP\xac^I#\x99\xf0w\\\xc9\x14\xabXW\xd3`\xa4$\xad\xa6\x10\x9f\xd5+\xba\xb3\x13c\x808N*\x18\x964\x16K\x9a}\xb3%m\x11\x15\xdd\x16,\x86E\xd5\xd7\x92\x02\x8b\xfd}\x1f\xf5(\xd6|?\xb8;M\x06\\\xb7\xf4\x04\xb4\x96O\x197\xf9\x1f4\x11\x13\x05\xf2\xd5s\x99\xfaLr\xdc5\x9b3\xc3\xf5\xf0\x9b=\x9b\xb0=C\x11)\xa5\xa9>(\x1dl1\x1b\xfb\x91\x166\xd2>\xc9\xc1\x94\xf2\xef8I>\x1b}\x92|\xee\x86IN6\x9a\xa4\x89Z\xf9\xeaI\xee\xf9\x92H|\xd0L\x19\xcd\"f;\xdd\x93\xa6;m\xca'\x07\x96\xbd6\x1cg\xba2\x1f\xcd\xdb\xdfI\x16I+\xf3;l\xff\xe6+cY\x95\x89eU\xa6\xe63\xb3\xdb\xbd2\x93\xc1+\xb3!\x8a\x15\xd2cyY\xb6\xac\x06G\x02\xd4\xb7\xd0\x03\x86\x8e6\xcbN[\xb8%f\xa8d\xc7\xe0\xe6m\xb6\x07C\\lF,=Qz\x1f\x89\xc1+\x19\xdd\x08\x917wJb\x7f\nsL\x86\xdb\xe9\x84.\xf0\xcb\x10C\x14\xf9\x1a\xdew)\x96\xaa\xe0\xf9s\x18S<\x1a~\x13|\xb5!\x05\xf0?e\xa3;\xa8\x88\xaf\xdal\xb1\x17\x12\x81\x915\x04\xc6\xc6;>\xfa\xfb\xec\xf8\xefB\xa0L\xa6O}\xd8\x99L\x0f7\xa7Q\x14\x1d\x12]Z\xe6\x930\xf9\x1a\xfa\xe5w$_v\xa7O\x0f\xe8\\Q\x860\x0c\xb4\xff\x8e4\xcc\xefH\xc2\x04_K{0`\xca\xdd{;\x80\xc4QH\xa2\xaf\"h~Gz\xc6\xbeD\xea\xf5U\x8c$\xc4-\x1e\xb0\x8a\xff@\xc4\x8fE\xfe\xd4\xbd\x8a?i{\xd6\xe7U\xd1\xf4\xb4\xe9~i=M\x06\xf5d\x93\"uw\xf5\xe3c&e\x13\x14m\xd4U\xef\xac\xa2l}\xb7\x19\xdd\xd2\xa4\x9b\x1c\xa3Cd\xed\"\xd8\xd8\xd5\x97\x9a\xa7\x97\x94\xa5\xa41E\x90+\xd0\x0fI\xdd\"Wq\xe45 \x88\xce\x0b\xcc\xfb\xb2/\xbdS\xdc\x8a\x84\xd2\x0cP\x1eVO\x13\xa4\xcb\xf0\xa6\x0c\xf3kR\x9e\x97a^\xf6gC\xad\xcdx\x80\x19kj\xc30\xf7PdU\x1e\x91\x0dz\xc8\xbb\xc6\xcbZ{\x95\xce\xfb\xdb\xcaU\xe7\x8bz\xf5\xd5\x1d\x95\xec\xaf\x08\xc6^\xda\x916Jy92Z\xe5\"A\xcb\xf4[\xb99n=\x12\xc8\x8d\x1b*\x06]\xe6\xcaA\xec\xb1#$M\x0c,]\xc2\xe4\x04b\x9e\xd5`g\x07\xcd\xc2b\x18\x01\x03\x92\x14\xd6\xd1_\xa6\xb8/\xb5\x93\x11eA&d\x17X\x18\xaf\xcd\xb2\xfe\xb105\x9aY\xda\x06\xfd\x1b\xf3\xb9\x14\xa4\xac\xf3\xb8\x94\x8a\xa9N\xca\xcc\x9e2\xcf\x9c\x0bS\xe8\xfd\xba\x00\xc1\"\xc6\xf4\xf6\x1b\x00\x02\x83\xd3\xd5\xc6\x99\xadEz\x02\x0c\xa9\xc1\xd1\xa6vC\x8c\xe9s%\xb8\xd0\xfe\xc4\xe7Y7\xfa2#\x81\xec\xe2$\x07,\xb7Y\x1e\xd1\x87n\xe9t\xff\xa0F\xd4\x96\xf8h\xf6|\xabz\xb2\x19C><\x9b?{\x9d\xf1{h2o\xcb\xb2c\xbfj.\xe0\xdc\xe6Ul\xf3\xfch\xf5\xc7s\x97\x98\xf2\x9d\xf3\xc5b\xa9\x92\xacF\xbf\x1cF\xca\xe0\xe7\x19\xc3\x0dj\x91\xd5*\xfa\xfd`O`\x0c\xe7\xd1\xc4\xcf\xa3\xed\x9b\xa1Tf\x1bl\xe3\xcc\xab%\xba>SF{\xcc\x93\xc8\x8d}h\"{P,gL\x0bo\x87'\x06\x8b}\x04\"L\x93a\x01\"viB\x85\xb6|r\xacB\x96Q\xf8g7\x15)\xeds)\x01\xa6\xd7\x91\xbc\x99\xb2\xdc\"N\x95\xf9\x10\xd6\x13\xe0\xb6z\xe8\xa3\xacLB\xc0\xc5j\x96\xc1\xbfB\xb8\x81\xcd^\xd9\x8a\x91\xa3\x8e\x81N\xf6op\nOf\xff9\xfa\xe5\xc9x\xe7\xe8\xc5\xce\xff\x0bw\xfe\xb6sy\xf1\xe4\xda\xe6z\xf3\xba;\x84+\xa0r\xf6\x0c\x9c1:\xfd\xabiB\x8f\xb5\x02ul\x96\x0e\x7f\xb6*\x00o\xcc\x01\xda\x08\xf0\xa88\x13x\xd2\x9b\xe3\xb2q\x90\x89Ex~S^\x87\xee\x14*1\x0bl\xd3J\xec\xe0\xc1s\x8c\xe6\xbd/P\xf4\xfe\xd3\xdd\xbd\xbd.\x80\x1b\xf3\xfcp\xf6\x1aP_\xd2\xe7\xb0\x7f\xb0;9\xea\xabL\x1f\x96\x88b\x97\x8eggB\x07\xc3\x93ILw\x8f|\x98\x1cM|\x98\x1c\x1eu\x80u\xf1DYZ\xc6ie\xce\xa5$\x1e{\xf6 \xe0c\xaf@\xa4~\xb2J\xf5\xe4\xe7\x1fi\xf4\x98\x10\xaa\xb3Jo/\xdd\xd9\x95\xf0\x98\x1c\xecN\xad)\x04\xc53lU\xfc\xdfy\xc8)\xf7\xd18\x80\x11\xa5\xebvx\n\x82g\xcf`\xc2\x0c]v\xf8l\x8c-\x88\xb4\x89\x9c\xef\x190\x1f;&o\xeeo\xca\x12U\xf4\xdd3\xd6\xe1\x84eg\xe9K\x7f\xc0\x07\x93v\xcf\x83\xef\xdft\xbc7\xb0\xf7\xe9f\xbd\xc3\xf3\xe7\x98\xcb\x00\x03lcB\x83\x94\xfe\x9a\x1e\x0e\x1a\x16\xee\xd3\xb0q\xedn>.L\xba0\x9d\xee\xb1\x10\x1ep\x00\xdbt\x848\xba\x0d\xc6\xda\x03\x1aq\x1e(\x14!\x92\xb4&V\xd2\xdar\xf6\x99p\x86\x19X(i+\x93\xab\xfbu\xd6\x7fy\x8cw\xa6\xe3t'\x13>\xb5\x07\xbfS\xb8&h\xa8\xd4}\xea\x05,\xe8|\xd3q\x19\x90/\xeb,/\x8b:\x85\xf1\xe0\xd6\xf6\x0e5\x8a:f\xc5GZ1\xa5\xd3\x9cY\x86a\xf0y\xd0\xfb\x0b\xc7<\x02\xfb\x89\x15'\xa7\xc0\xefU\xc6\x8c\xae6\xfdb{\x1b\x90\x0d8=\x95\xee\xdd\xc3f\x93\xda\xdd\xf5\\\x16\xb1\xdf\x07'\xcaIX*~m_\xb1\\\xbbOw\x8d\xeb\xb5\xfbt\xcf\xb0`\xb4|_+\xafx\xf9\x81V\x1e\xf2\xf2\xa7\x9e\xc4\x0d\xd4\x07\xbbh/\xe6\x0d\x8f\x0e\xbac\xd0}\xa6\x1c?\x03\x0f\x9f)\xa7sV\xcfk\xad\n\x0d\xa2\x84\x84\xb9\x8b\x87\x9cX\xb3q\xddt\xa7\xd4FQ\x10)\xdd|6\xbe\xf0!\x9fMt\xbb\xff?\xb4\xffRd\xc0t\x0ctWT\x89\xd0\x9c$\x04c\xfc\xc4j\xf95\xa1\x102S\x0b\x97!\xdd\xd7J-,\xb0f\xe8+{_l\xb6\xf7O\xf7,gH\xf9\\_5c\xf8\xfb\x13HwvN\xda\xf0\x17\x05\xa8n9K/p\x01\xa5\xbc\xd1\x1aU\xc9K\xa5,\x9f\xe6+\"\x8ff\xf0\x90\x1b5\x92\x88y\xdad\xc9!\xf4/\xf2\xe8\x8b\xf9\xf4\xe81k\xd8,\xdf\xe5\xe5<,\xc3\xcbK\xe3j\xe4.\xf1\xe0\x0c\xd2\x99E\xbeW\x17\x1f\x83\xb3\x0c\x8b\xa5s\x01\xc7\x90\x06\xabp\xfd\xd8\xf9\xec\x8d-\xe0s\xa2_{\x06\x0e\xf0v\x8b\xa2\x8d`f\xc6D#9\xcb\xe8G!\xe5c\xc7<\xb1\x80\xb0\xc9d\xf7\xb1\x83CP#NH\xec6\xd2N\x8aY\xf3\xaf\x18\xeb\xd3\xb1a\xa8\x9a\xa8a\xd8Hmbbz\xbaY\x0c\x01q\xea\xdbb\x1bT\x12a\x14N\xe3\xb1s\xc6\xd8\"\xaa\x04\xe8\xd8\xe8\xbd\x81\x9d\x98\x1e\xb8\x9d1=l\x1b^\x17\xa7*XB\xf3\xa8\x94:lh\xc6\xd6\xf5\xd8\"\xc1\x0d\xc9\x0b\x8a'j\x0dS]TG\x86sn\xc6\x81\xe3u\xd7\x98\xd0\x1a\xb5]\x8b\xb9\xc6!\xads\xa6,{\x1bO\xa4\xe4K\xf9)\x8e>\xab\xb1\x98;bK\x82\xd8#Q_\x96B\x97\xb6\x08\x0f\x94\x8e\xba\n\xa3\xcf\xc6\x18\x0f\xa2%[\x98\xfb\x9b&\xab$\xb4\xc3J\x9b\xbf\x11\xb1\xb7\xc2.b\x1c\xa3&\x8d{\x02\xd5\xf6$\x80\x14\x16@\x81XI\xb7+X,\xb6\xd8\x93\xdf\xb1\xddb\xbd5}\xe2\x0f\xc0k\x86D+\xe7\xfa\xcd\xac\x83x\x1e\xfa\x86\xda\x93\xdb\xf1\x9b\x0e\xb5\x95{U\x7fzG\xdb\x93\x89\xf1[\x8f\xd6\xb7ir\xc4\xd35\xe0\xde\xd8Z \xcb\xc1\xe9}b\x1ci\x88\x16|\x8a\x1c6\x137\xc1\x83lV\x8dF\x17\xf2-\x99U\x1dq3\xe1[\xac\n\x8bX\xcc\xa5\xc4}\x0bb|\xdd\xc7\xe2? U\xdc\x801 N\xcb,\xda\xee\xde\xa6,\xda\x81\x89*\xc8y\x96B\x13y\x9f\xf5\x91\x8eqJ\x81 \x99q\xae3m\x14\x13\x0f\x86\xe6*\x9by\x86\xe0L\xeb\xf7R3\xe2\xaf\x98e{\xa3\x98\x9c\xa7\x1ek\xfe\xe4 \xb8\xf4\x02L\xa1\xa5\xa2\x84\x1c\x8e\xc1\xcd\xdc\x9cN\xcb\x9734V\x9e\x0f\x99\x1b\xb3H\xb0\xd5\xd0\xccr\x88\x1aL\x8a\xaa!\x01\x88\xd3\x8cc\x04\xde\x80gD\xe3\xa6E\xa1#\x1c\x9a~M\x19b/\xee2\xc5H6\x0fO\x1c\xab\xb8\x85\x01\xf8\xc0%5.1ghKYf\xe8\x98\x9fh\x9e\x13\x1a\x7fJ\x7f\x8f\x15?\xe4f\xee\x03\xb2\xae\xfd^so\xb6\xc6\xb4)\x03\xf3\xb7\xfd\xce\x83\xcb\xa5|\xa3\x1b\x93\xbafZO\xbeH\xa9\xbbwp\xe4\xb9\xce\"\xcb_\x85\x91\x08\xa5\xf5\xa8f%\x1e\xe0H\x17?p\x1e\xe0H\xe7\x0d2\xce\x1b\xe8\x10\x8d\x891\xf6\x9e\x1eJ\x8b\xe2n\xc6\xd0\xf9\x94\xfa\xe2 \xbd\x8d+\xdb\xca\xf4\xf1\x0c\xa6\x94~5\xd8)\x94p\xc6r\x15s\xf3\x8d\xd2g\xc9N\xab$\xa1'\xbcPP\xd7\xf4\xc2W\xa4#\xa8N\x0cy\xe2!\x16g\x15#\xd5\xa6\xa8P\x16v.N\xe4\xf0\x80\x91R\x19\xa1e\xa1Zv\x8b\x01\xd9##]\xcc\x93A\x1a\x12\xa2\xaa\x99 \xd3v\x05\x92V+\xc2_g\xed\xd7\xb7y\\\xb2\x97\xa1\xf2\xee\xc1\x87\x02\x19\xc7\xd8-\xe8\xb0\xe8\xcc\xa2\xe6\x90z\xc1\xf5\x90\xa8\xd3t\xc3\xf8V\xf9\xb00\xb3A\x96]\x89\x1a\xd3\x18\xf3\xe6D\xca\xe6\xecJ\x9bC\xc1\x99\x14\xba\xe8\x182\xce\xe1\xf3\xf7\x14\xae\xa5\xea\xfb\x149\x1c\xb9S\x1e\xc1\x87nh\xd4\x8cAz\xa3\x1d\x06q\x10\x8a\xe6 \x84\x86\x83P\xb4\x0e\x02\x8fa\xde\xde\xf4kR\x1a\xb7\xbc\xa0\xe5\x86\x9dV\x8fB\xd8}\x14Z\x89y\"\xbe\xdb\x11\x1d\x0ff\xc3\xf9\x16 I\x92\xe1\x1c\xdaD\xa9\xc1\x8f\xaf^\xbf\xf8\xf9\xa7O\x9c\xb0\xcc]\x0d\x0e\xb3 \xe7\xc70K\xdd\xfd]O\xcb\xdeO\xbe\xac\x938\x8aK\xfe\xfa)\xdd\x16w\x7f\xf7\x90\xff{\xe4I$\xcf \x18hgP\x05\x8d\x0c\xa9;m p./I\xf16\x9bWZ>\xd6AKG\xdb\x93\x05\\\x8a\xf5C\xea\xd6\x1abwz\xc0AI\xea\xee\x1eq\xaa;u\x0f<\xd7\x11&\x1b\x9f\xc2k\x01Z\x9c\x97\xe7\xe7\x1f\xab\x84\xfc\x14\x17\xa5\xff\xf2\xfc\xfc\xbc\xbcK\xc8\x8f$J\xc2<\xa4#\xa1e\x7f\xa2p\x85UHb\x92\x96\x1fIT\xe2\xcf\x1f\xdf\xbf\x95\xfff\x8d\x8b_\x9f\xb2\xcf$e?\xc22\xfc\x94\x87i\xb1 \xf9\x9b\x92\xac\xb0\xf0u\xcc;\xfd\xf7Oo\x7fz\x91$/\xb3$!8y,\xd1~\xbe\xce\xf2\xd5\xab\x84\xd0[\x8c\xbf\xcf }+J\xde\x92y\x1cbco\xe3\x15\xa1\xe8\x96\xa5\xe9}\x17\xae\xc8\xfc]6'o\xc3\xb5O\xff\xc5:\x1f\xc2\x98\xce\xe1\xaf\x15)\xd8\xd0?$\xd5u\x9c\xf2\x7f\xd8\x97\xe7\x7f\xfa#K&\x87\x15\xce\xff\xf4\xc7w\x88\xa5\xc5\xaf\x0fa\xb9<'\xd7\xf5\xcf,NK\xf1CZ\x85\xf3?\xfd\x91\xcd;\xcb\xd9\xa4\xcf\xd1D\x95\xa1sV@\x97\xfb|I\x08\xfb\xfc\x13eg\xf20\xfa\xfc\x92/x]\xc0~eU\x84#r\x82b\x9d\xc4\xa5\xeb\xf8\x02Z\x8cO0 ~X\xcb\x80\x8b\xd1\xc8\x04g\x11\x1e\xce\x8a\x8b\xf6\xbd\xa7\xe0%\x9fE\x867h0I\xe9\xf2E#\xf4V\xa14\xe6<\xdeJf\xd5\x05\x13\xd2%(\xf9\xa0@\"\x9bE\x94\xab\xc8\x02\\\xd7\x9e\x13\xaf3<\x14\x8e\xfe\xf6P[\x1am*\x96\x13\x02D\x0eH=\x1e\x86\xf5\xd0\x87\x9dI\x1f)e\xbb\xec\xdd\x94`m\"\xd7\x10\x80\x12\xf1\xf72L\xbf+\x81\x0e\x06V\xa4\\fs\xc8R0\xe6\xeaii+7\x1b$\x07-\x83Y\xca\xa9\x0d\xeav\xd2Y\xa8\xc7\xef\x13o\xa6\xbe\x1e\xa1\x87\x19\x16ZR\xa4s\xe3+\xb1\xe3B\xc8\x8b\x80Mlc\xd3\x9f\xa1\xe5\x8eF\x91\xbe\xff\xf4\xde1h\x1aeY\xcc\x83\xfa\xba\xd0^\xb7`\x0d\x1dl\xc9\xa9(w2=\xf4\\'^\xe4\xe1\x8a\xe8\x1d\x89'G\xe8b\x13\xab\"\x92$AA\xc1l0\x8f\x8bu\x12\xdeQ\xac\x97f)q|\x9c\xfb\xa1\x17\x84\xeb5I\xe7/\x97q2g\x99\xca\x83\"\xa7\x80\xd2\xf95\xbc \x8b(\x8f\xd7\xe5\xb1\xe33\xabV\x12DYZ\x92\xb4\xfcs\x9c\xce\xb3\xdb`\x9eEH\\zA\xb6&\xa9\x8bn\x03,j\xa7\xf3\x8c}\xfa\\T ^\x9f2\xc5\xf1\xb3_\x9e\xf0W\x98\x81)\x88\x92\x8cE\x8c/\xf08\xbd>\x81|g\xe7\xc4\x03\xae\x9a\x94t\x8d\xb3l\x96_\xd8\xad\x02\nWS\x89\x9a\xaf5O8\xcf\x94\xd7\x94\xa4\xed\xe7\xa7\x8c\xf0\x89\xabf\x04m\xdb\x0c\x93\xa2\x12\xb7\xf4\xfc:\xdce\xe8\x83\xfa\x9aK$)\xc68e\x0eX\xb4j\xe1\xaaY\x95\x08\xd2\xe0\xc7\x10\xbb\xa9/'\xe8\xed\x07\x87\x02}\xa0\xf7hDb-=~\xae8\x96\xf6\x01?\x9b\xa4\xabx\x17\xbe\xe3\x0e\xce\x1eW\x84\xbb%\xfa\xf5\xb0\x10\xa8\xa9\xb71\xcf.\x11t\xbb\x9e\xeb|&w\x85~\xf2\xd9\xa5U,\xcc7\x1av\x8e\xe1\xa3\xee\xc1\xc5?\x98\xec\xe7\xf1\xa34 #g\xce\xe5e\x94\xe5d\xe7\xd7\xe2\xb2X\x869\x99_^:\xa2O\xf3;\x8a\xe8\x1f;\xa1XL(f\x13\xfa\xed\xa1o:6\xc4\xe9DYZ\x94y\x15\x95Y\xee/\xc3\xe2\xfdm\xfa!\xcf\xd6$/\xef\xfc\xb8\xf8 \xce\xef\xfb\x85\xbf\xe6\xc5o\x8aW5\xbf\xe4\x97\xd9OY\x14&\x84a\x03_\xa0\x05\x9fc\x1e\x99j\xdbl\x95'{^\xb00\xcaTtQKf&\xf6\xfbV\xd6\xcc\x98\xa3\xcau+\xc6#\x9er\xdb\xf9\xb2\xb9\xc6\x18\xd0\x98\x99\xd4\xa0\xb8\xa5\x0d\xcdUfs\xcb\x10PA\xc8,\x94\x17\xbd\xfb\xb7!W9\x9d\x1cy\xee\x96\xec\xeeBq\xcb\xbe\xc7s\xde\xfb\xe0\xb0?\x1c\xbf\xe3\xb0\xa1\xfd\xc9%]\x8a:S>\xf7O\xbaD\x83\xaff\xc8\xbe\x1d\xc5I\xe8\x8d\xb7g\xb6\xaf\xe1\xed\x9a\xa1\xaebHvf\x17\x041@\xda\xee`\x9e\xa5*\xffI\x9f\x07\x06\xbc(\xe0\xc6\xe5m\xe66\x92\x8d\xeb\xad\x9d\x19&\xc2\xfb\x99X\xf7v\xc3[\xb071\xcb\x15[\x9cm\xebF\xd4r\xd7\x02\x89\xb7\xbc[]\xa4K\x08\xd5\xf1\xbb^\xefm2\xed:A\xfd[\xd5%d\xaf\xf3\x11\xff\x9c\xce\xc9\"N\xc9\xdc\xa1H\x84\xc9\x8f\xf8\xabwU\x928Fg1\xa4E;\x119\x0e8\xbf3\x94Jc)g\xc4\xe0\x98\x02QX\xa7\xe6\xd5\xf4\\\xe8\xd1\xca(\n\xbc\x12\xb1\xe7q\xac\x9d\xa1\xb0\x08\xb5\x00\x0e\xab\x80\xc3u+v\xca<\xcfFV\x03KBCP\xe3 m\xdd1T=\x80\xc1D\x02\x8c-\xa8?\x0f\xd3y\xb6r7\xdeM!\x92d\x86\x8a\xaeC \xc2(,]}\x17\xe9xK\x1f\x1c\xef\x92\xd2\x8e\xa3Q*\x92\x04q\xf8\xb1{\xf0x\xb4\xbbk\xbe\n\xfb^M\x8f\xb6/A\xee\xc6\x1c\\\xc7\x9c\xf4\xe3\xf2\x93\xc7\xae\x00\xdd_\xad)fA\xf4\x9bn\x8a7x^\x93\xddn\xaa\xe7\xa8\x9fS\xfd\xef\xa0z\xf6\x9fZ\xf0\xf1\xbe.\xf1\xcb\xcc \xaao\x12\xff\xbb\xf1\xf1\xc1\xc4\xb4\x00\xc1b\xc8>Rn\xc2^ $h\xdb\xe6\x92\x10\xa3\xad\xf3l\x15\x17\x843&\xa5+O\xc4\xea\xc5\xa4y\xb4\"\xd3$\xfdN\x0d\xd2\x9e\x1f\xc29|\xe0}Id\xa5=\xf3!\xea.\xd2\xdalX~\x1e\x04:\xceI\x91%7\x84\x03\xd0\xba\xf0W\x96\x858\xd7\xddZ\x1e\xbe\x82\xff\x98\xec\x99\xa5\x05\x93\xf1#O/\xb3?m\xb2JJk\xc5n\xc6\xffq\xd0L~\x04\x0e\xcc3R\xa4\xdf\x95\x98\xf7g]BN\xae\xc9\x97-\x8b\x8e\x94\x83\xd3\xaf\xba\xd0\xf4\x82b\x8e\xe4\xfe\xabiD\xeep\nO\x82'\x9a|\xc7\x88j\x9d'\xc1\x13\x07f\xe5\x85K\xb4\xbd\x128\xb6\xb5p0\x04o\x93Y~\x81J%\x1f\xb6\xac}@\x0f.7-\xef\xa6z\n\xf3\xe5'A\xa3\xfb@ e\x1b.Tn\xeaN\x0f\x0ft/\xdc\xb8~u\xa8\xbfB\xd2\xceD?\xc4\x01W\xc3 \x85\xd1\xf6\x08\xc8\xeb\xf7g=\xc0DPE\\\xe7\xa8\xed\xd8\xf1\xc0\xaf\xad\x84\x8e2\xd02\x90\xe0\x04\xcb*\xad\xbcFPS\x17I\xe2\x94\xb3f\x8e\xc7\x96\xa1\x9a\x0c\x83*+\x90\xe5\xc3\x91\xb6\x8c!\x9b\xf6\x0ckuWi9I\x0f\xd2\x11\x10\x93\xd9p\xd7N!s\xeb\x1d\xf3:\xb7\xccBPW2A\x9d)@\xb1s\x0f\xff\x1e\xfb\xb7\xc1\xd8\x87\\G\x82h5u\x0f6d\xb6L\x82\x9d\xd4\x9d\x1a\xc9\x9bC\xb3\x01\xc7dl\xf6CAi\xc6c\xc1l\xcc\x1d\x94\x98\xc0G\xfc8Eb\xf4\xb7\x0748j*\xfc\xa6[3:\x97l\xf7\xd0\xbd\x1bC`0\x0f\x84\x98\x87\x9f\x0e)\xf3[v\xb0\xb9U\xb0p\xb5\x08\x06\xbd\xd4Q{;\xb8\x00\xf6\x9a\x94\x92\x84\x89\x0d{C\xbf\x91\xdd\x03}K\x84\xcf\x90\x99\x12\xdd=\xd4\xad\xde\xb9\xcf\xd0\xa1\xceQp\x9f\xa1\xc3\xe9?}\x86\xfeA}\x86(\xaf\x94\xbaO=\x1f\x9c\xb7\xe1\xfa[9\xa1\x1d\xea\xde%\xdc\xebdj\xf6:\xd9\xdb\xd5\x0f ;P\xfa\xf1\x0by\xedG\xfb\x81\x18\xe1o\xc9\x11\x93|\xb628\x06'k\xe4\x0dR\xd5\x8a9\xba\xc4n\x89\xe7\xa1\xa4\xe7\x81\x82\x0c\xc6\xb6\x86\xfd\xc0U_3z\xae\x8f\xc6\xe3\xa7\x93\xa3\xa3\xe9\xfe\xde\xd3\xbd\xf1\xd1\xd1\xa4-nx\xf2\x9f\xee\xd9\xf1\xf8~6\xd99\xba\xf8e\xfe\xbd\xf7/O\xfa\xd6\xc0\xa2\x86\xc1\x10>|:FZxk\xcb%\xd2U\x13\xfa\x13\xc2\xb2\x9f\xc8F\xae13v\xe3hg\xeb\x94\xf9\xee\xe7AI\x8a\x12u\xba\x88\xb1\x84\x0b?\xcb\xffy\xcaC\x97\x96\xf0\xac\xd7\xefd\xc8J\xf5\xad\x82\xed$Xb\xeft\x0c\xf7T\nu:\x08m6\x17\xc2\xec\x84\xd5r\x1e\xa2\xb7\xe1\xc9/\xc1\xfd/3\xf7\xecx\xf6\x9f\xb3_..\xbe\xbfwg\xcew\x17\x9e{v\xec\x9em\xfd2\xf1f\xff\xf9\xcb/\x17\xf7\xbf\xfc\x12x\xdf\x9f\xfd2\xf1~\xb9x\xd2\xbe9O\xfe\xf3\x97\xdb\xef\x1fu@\xb8\x7f_\xa3o\xde\xd2\xc2\xdf\x8bm\xe8>A\x8a9k\xaa\x90bu\xc1U\x96%$L\x9b\x12\xc5Ik\x0bY1z\xbe*q\x9c0\xbaX&\xff\x12_\x10\xb6Cq*d\x88\x1b\xa9\xf9j|\xd4\x96\xe42\xf15\xb9!).\x9d\xf2\x13I\x03!\xe1^\x85_~\x8a\x8b\x92\xa4$o**\x855\xb3/\x8d\xac=\x84|C\xd0\xd5\xd9Xlo\xcc\x04\xda\x9a-8\xedi8\x1bD4k[\x00\xda9L}H\x83Wt-_\xad\xe2\xb2D\xdb{,k\x10\\\xb3\xf2\\\x0d\xa1\xbe\xd5\x16\xbd\xa9\xc3\xa9\xe3\xb7\xea\xfb\x89\xf6}A\xf4\x1av\xa8a3\xd1\x06\x91\xc9\x18\xdd\xc3\x99.\xd7$\x9cH%c\xeduV0K\x8cN\xabm\xf3\xb9\xf2\xd50N\x0f\xea\x8c\xc8*\xee\x8e\xc8 )\x11,\x96\xcd1\x8f&(\x1fsW\xbb\x06\xbf=Pr\x81\xd0\x999M\xd4AwK\xae\x16\xe0k\xee4\xdf*gF.\xedr\xe1\x97i\xa2\xd2x|\x0e\xd9\x14\x97b^\x91!9[\xb0\xb0\x1fb\xf1\x0dY7\xe9\xec\x17\\f\xc7\x1d\xf4~N\xa3\xb0\xba^\x96>Ti\xb1&Q\xbc\x88\xc9\xbc\x9e\x1b\x0e-\x00\xf7;\x9e}\xd7\xf1L\x927\xd6\xdf\x82\xd9t|)\x99 \xefB\xa9\xf6\xd0Z\xe3\xac\xc9\"\xcaW`V^\xd8\xc1.\x83\xcb\xa9\xe75\x0e~\x9a\xed\xb9i\xc9\xba\xfc\xf8\xd2&G\xbfE\x9ah \x7f\xd2\xe5\xca'5\xea\xab\xfb\xb4y\x17\x16\x17r\x82\xde\xb8\xaa}\x92\xb7,\"\xdcD4\xdb\xf6\x91\xed\x84\x92=\xa0J\x813)\xb9\xadG\xbf\xcd2\xe8!\xdct\x1d\xe9\x8d\x83\x0c|\xee\x92@\x0c\x89\x92\xfc\xcd/$\x87}\xfd\xfa2\xae@\xbb\xd2\"\xcaaS\xc4\xc2\x06\x11\x91\x9aOn\xe0\x14fZ\x91\x0f\xe4\xc2X\x91\xf8\xa6\xcet\xb0J\xbb\xbb\x0d\xf3\x94\xcc\x81\xa5\x0b8\xa5\xc8\xbb\x85ZP\xdbjD\x9b\xc7\x06D\x84\xddT\"\xf6\xb0\xde\x1d\xb7)x\x0e\x15vi\x19\x0dsa\x88\xb2\xb4\xc8\x12\xc2\x80\xbf\xeb\xb8i6'\x1e\xd0*\x18>s\x9d\x15E|\x95\x10P\xc8\x84\x15Ye\xf9\x1d$$\xfc\x0csR\x92\xa8$\xf3\x00\xfeu\x0eI=\xeap>\xa7e?\x17\x04\x08\xfbJ\xc7\xf6\xae\x07e\x06q\x1a\xe5\x84\x02\x9b$^\xc5e\xe0\xb4\xb6\xb4\x89\x93j\xa4\xbf\xc4\xf8\xcb<\x8c\x90\x08U\n\\\x91\x0e\xc9v\x932\x14i\x98\xaf\x96^\xb3?\xf9\xf67\xbaY\x82\xc2\xa7(Hy!\xd1\x95&dS25\xd2*\xbb!b\x0et\x98\xb1\xc7\xe3\xbb#\xc2\xa3\x9bNT\xf0#\xa0Y+\x82\x92\xfcKXi57\x10o\x00\xf6\xc9\x96#\xeeYkud}kyS\xfb\x7fQB\xe9w\x81`\xd8\x8c\x0e\xbf\xf4\xcb\xdb\x11w5^\xb0\xfbl$$j\x0c\x901a\x1a\xddQ\xa1s\xcc\xddT\x02k\x94\xea\x97V\xf5\x14\x83\xbdr\xd9T\x0b\x16)\x90T[Q\x15\x98\xaa/\x19<\xd5\xe3-\xab\xb8\xd0p\xa4jlX\x9d@\xb8\xb3C!\x8e!&\x0d\xf0\xc5Hg\xe1E3K\xfa\xab\x99\x17\x9d\xa5R\xc0'\xda\xeeS\xf5\xdf\xc4\xfe\xab\xf6\"I\x86\xf1Vf]{\xebz\xf4\\\x85\xad\x8e97!\xecYf\x1c\xddm\xf3Lg\xf4Q \xa0\xe3\xdc\xed\xed\xce{\xd1\x1e\x92\xb97\xebA'\xe8D\xaf\xccX\xdf\x1en8 \xb6\xb0\xbd\xd0nGLs\xdb'z'\xda\xf9\xc1\xe5\xd0`+\x18y\x9a\xdc\xc2\xd3X0\x83\x1e\xee\xbe Oi\xa1\x8bO\xea\xbbqbotV\xdf\x99\x1dh\xf1\x1d|%\xba\xb6\xd1v\xa8\x93Ag\xd9D\x96\xb6i$\x16'I\xbf\xc6g-\xe2\xcf@\xf9 \x1a\x1f\x8eav\xd17\xd6\x97Y\x95v\x0b\x04tv\xdf\xa6\x1e!\xed\x8dm\x9f\xb3\xc68\x83/\x83!u&z\xee\xd4\x15\x84\x05j?\xbc\xd1\xb8\x11\xfb\x0c;\xc2\x85\xa9_\xf5\x0b 5q.\xcf\xc5!{\xbeO\x0e\x9fz^p^\xe6$\\q\xd7\xdd\xe0# \xe7\xe1\x15Z(\xe0\xef?s\xbfg\xf6\xc1\xe4)\xfa\x86\xfcX\xad\x13\xf2\x85\xa9C1MLP;\xf9\xb1zGS,\xfd\x10\x16\xc5\xa7e\x9eU\xd7K\xa6\xfb\xd8?\x1c\xa4\x83\xed\x0d\xd1d\x0ett#\x92\x99\xb9\x18\x07MyW\x93\x7f\x06\x95?h\xc7\xc4$$\x89\x0b\x8c\xb4\x02\xc2o\x83!\xa1\xb4\xcc\xef\xd4\xa2E\x9c\xc6\xc5\xb2\xcf\xc7\x87>[\x9dK\xa0?\xb5\x96\x8fujG\xed\xa52*{=\x0e\x93r\xa3NQ~\x84\xd6%\x0fD8({\xa3\x80\xfa\xdd5I\xe7qz\x1d]\xed\xecP6\x8f't\x81\x1cW\xd0\xfam\x9b\xf2\x10\x0f \xa2,\xffL\xe6\xdcc\xb5x\x9d\xa3]\xac\xa9XlRIy\\\xd3g\xa7\x86\x00\xa8\xf4y@\xb5\xb7\xc1V\xa8\xe3r\xcb\xb7i\xd5fCB\xee\xe4N\x82\xab<\xbb-\x18\xf12sn\xc6\xc1d\xec\xf8@\xff8\n\x9c\x8b:\xfaW\x13\x0f\x8cA\xc9\xb1\x0f\xfb\x1e\x8f!\xcd\xbci\xb2:\xda\x8f\xda\xdb\xaa\xbe\xa6\xe7e\x88Z\xd9\xeb\xf6pP\xc8\xe2\xee\xeby\x04\xa3 N\x97$\x8f9L\xd8\xd5\xd36\x08\xb1\xa3\xf9\x90\xcc\xc9:'QX\x92c\xbc\xdeO\x0d\x0b\xd8V\x85'\x1c\xfa\xe8z%\xfa\xac\x99\xc6i\xec\xf1\x906\xed\x1aK4\x81h\xf2\xa6(\xde[\x1e\xfcfH\x0c0\xf7\xe1\x86\xf7i\x07\x0cw\xf8\xb1\xe5\xe5\xb5\x114\x03\x97\xaf\x85H\xb23X\xc8N\x1f\xaaW\xda\xf7D\xdcb\"\x0b~\x0dt:\x82\x12\xa6\xe5x\x9b\xcd\xd1\\l\xab\x94\n|\x16V\xd7m\xd7\xd3K(W\xb6\xc5\xfc\xf1\xe8\xf9x_\xbf1PZ\xb5~5X\xc6\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\xf6\x16\xd0'\xc2\x8a\xa2\xdd\x7f\xef\xff`a\x18\xdd\x19L\x0e\xe0\x18&\x07\xbb\x87{\x96UP\x86\x02\\k\xcbh\xd3\x18\xce \x86c\xbe\x16Q\xf3\"\xa2\xe4H\x04\xc7\xb0\xf0\xcd\x8d\xc8\x19\x15[\xef\xbd\x06\x94\x87\xc9\xcb0I\x98\xc0g\xe2\x0b4@\xe6?\xe6a\x9c\xca\x85\x0c\xe2i%\xeaw\x0c3\xa8esR\x94yv\xc7\x0b\xcd;\x92\xe0;\x9e\xe7fN\xa2l\xce\xbd\xablxJ\xa9C?N\xea\xdePB&R\xc1\x00kP-\xbb\xbf\x07\xa7*\x17\x87B\x98$spX@w\\\x9b*\x03\xb3R\x9d\xe2.\x8d\xb8\xb8\x04\x7f_\xe1U\xfe\x90g\x11)\n\xed\xe3,E_\xd1N:O<[\xdd\x94\x92\xfc\xdc41Moe\xd8h>\x9b\xe2\xc9\x99 \xfa.\x8d\xba\xeb1\xf7f\x1cxteG\x87\x94\\\xec\x9f\x95xJ}mE\x07\x0d\x85Q3\x07\xe2\xee\x91\x84\xa4\xbe\xf4\xb7\xe2\x86\xa5?\x0f\x88\x8a\x89g =\xba#G\x8aggGB\xee>\x1a\xe0\xbb\x0dNrc\x1fr\xcf\x97\xb0\x94\xfb\x8as\xe4~k\x1f\x98\xd0\x94 E\x85<\xb5\xe4\\=\xd3_\xd1\xc60f\xbfO\xc5\x1b\xcf\xf3!\x91T\xc5\x83\xf6\xf4R\x05\x8aL\x8en\xdae\"\x1f{\n>\xa4\xbbQ\x89\x9f\x1c\x9e\xa3\xe6@\xc2\x8b\xe8\xbc$V\x8aBN\"0!K*\xc1\xde\xb8\xac\xf7\xe6\x9d\xdc\xcad\xd0l\xae\xa4\xd9\x98&\x91B_\xf4\x03\xf1\x88\xb8\xc6\x1c\x07moc\xf4QA\x0ca\xda\x9b6q\xc4!\xf2\x9c\x969\x06(\xfc\xe0\x96\"\x86\xa5\xc26\xe6n\x03\xbb\x07\xcd\xf3\xd6:vb\xa4?\x0c\xd9\xb4\x04\xcd@t\xd0a\x16\x04\xd5\xdb\x87\xf2y\xa6\x8a\xa0\x98\xcf\xb6~5\xf1o\x84Lv\x82#\x069\x92ln\x89\x02\x02\\\xeao\xe2z\xcd\x98(k$\x05\xe6\nu|\xad\x90\x81\xcd\x82\xad\x1b\xda!\xc7\xa8\xae`&O\x98^\x0e\x95d\x05\x0b\xea\xc6\xa3^\xe0j\xf8\x10\xc2\xe8\xd4$L\xa3\x0f\xc69e\x88\x00\xcd\x7f\xfd\xfa\xf6\xb1\x1bSg4\xf3\xc1q(i\xc1\x10\x80z^F#\xac\xda\x81R\x18IB\xc9\x15\x8bP \xe3c\xcdd)\x8fg\x17\"0<\xc1\xce\xad\x0d\xcf\xb4\xcfz\x17\x05!d\xc4\x9d\xf2\x98\x9a\x8f\x0f\xa2e\x95Z\x18-\xf1\xa0\xb1P \xd29v\xd7M@\xc4\xeb\xe9\x16\xf0\xd0s_\xef\xd0\x04!\x93\xc2\xcd\xc11D\xf5\xa6E>e\xc0\x12\xed8\x98\x17\x8c\xde\xf9\x1a`z\x1b)\xa8\xe8S\xbb\x88\x0b@d?\x0d}2\x1e\x90@\x86\xf2\xado\x81$\xc3\xe0\xf0\x97n\xff(\xc1Abtx%\xab\xb10ld\x85\xfa\xb8\xd0d\xa2\xe1-\xd9O\xbe\x8c\x83\xc6un\x85\x9b%G\xa7\x0d\x0bc\x95Pj\xc0\x1b7A'\xc6SviU\x1aN\"\xda\xeb7\x8e\x05\xf2\xd3\xe7a\x182xe\x9d\x94\x80\xf1_\xbatM\xec\x10\x0d\xe46\xd59\xdd\xdf\x03Q$\x07\x14,Z\x88\x17N\xad T\xd2\x80\x99&{\x18+\\\xd59\xe7\xaa\x90;\x1a\xb8\xa4]\xa8W \xf6\x86\xe6fw\xc8\xd2j\xd3\xa4/\xd9\x94C\xeb\"5\x92EJ\xf2R0p\xad:\x8a\xd4A\xab;e\xe55\x16*\x85\x00I\xbb\x03,\x98\xc8\xec\xe2\x04\xca\x13\x8fN\xa3*\x96,4 \x12\x82t\xd9\xac;\xadyy\xb7\x81d\xaf\x18\xdf\xee\x96J\x1f\xee\xe6\xc4\xfc\xd7\x84\x9b\x93{-{\xac;l:\x8e\xc9\xe5J~0\xcc\xe9\"\xa8%\xae\x9b\x05|\x97U{\xf5\xd2\xbbv\xde\x10\x18\xc7\xe7hL7\x1b+\xc4E#\xf9\xe5\x96JZ\xc5f{)wC\xc2y\xe0\xf8\xe0\xfc\xf8\xea\xc3x<\xde\xb5\xa4F\x83\xf6\x05\xaf\x8b\xed.\xbb\xf8\xda\xb5\xb1\x08\xdc\x13n{\x9b\xff\x15,\xc3\xe2\x0d\xe7\xb7\xc0\xe6\xd3\xf8\x9a\x97IQ\xc7\xda__\xd0\x8bK\xef\xc6\xb0\xda\xbe\xe5,\xac|\xc3\xc8:\xdc\xef\xfa\xe5I\xb5#\xcc\\66-\x1b~\x93\xde\xf6\x15\xf0T\xcd\xdb-\xc9\x8a\xcc\x8f^\xf7a\xcb\x07\x84B\xf3^\xf1]\xedG*5^\xb6\x94\xf2>\xac$\x10\xb1\x8e\xd7\xa4\x0f:0 \x80\x8ah\x9a\x1c\x8a/\xc34\xcdJ\xa0\x0d\xf9\x18\xa7>\xe7\xeaM\x9d\x15\xd1zn\x8b$\xed\x1a:$\xebY\xe4Y\x03cn&\xbb*\xc6\x1e\x19\xdfa\x80\xe4X\xa6\xab\xea\x84\xfb>\xac\x9b\\\xce9nh./\xe8\xd2\x8e\xd2B$\x0d\xd6J*h\x91\xd9|\xf0\x91Zc>\x01\xdd\xfb\x13\x80\xe7\x10\xb4\\A6\x81T\n\x0eM\xa90\xca\x17\xb0\xf0\xd3\x02\x00Rj\x1b\xd1%sr\xd5$\xd3j\xeb[R\xf0}\xd1\xfa\x9d\xe7C\xcc\xe5\xeeg\xc3p\xb7\xa0\x06\xa4#\xc3\xb6>\\\x94$\x07\x92\xcem\xc1*L\xd4\x8d\x84\xa2\xf1\xb0\x98V \xefb\xca\xc3^\xeb\x9c\xb7\x9dK\x07I=c\nZ\"\x9e\xca\xa2H\x00\x89\xb8iH\xe53\xe6\xa9\xa8\x06\xe8\x7f\x1b\xde\xe1Ua\x0b\x81\xb5\x11\xf4\x14PfP\xa0\xb1\x80cM\xd6\xdf\x04\x05a= 9\xa4\xaa\xa3\\C\x9f\"\xd7i\x9a\xa5;\xac\xd9'\x1c\xd3 \x9f\x83\xc1\xbf\xb9A\xae\xb6\xee\x95\xba\xee9+\x89\x05\x1f\x1a[\xf7 f2S\xe6\xe6\xe7\xc6*\x01V\x19\xee~-\x0d\xb2\xed\x0f\xdaq\xf5*\xf1MM\xf7!\xf0R\xd7\xe8\x19\xd5A`\x8e\xdd\xdf\xdc)~}\xb1\xc7\x1e\xe9\xb4\x91<\x92\x9f\x87\xda\x08\xc3\xdeP\x8e\x06_U}A)\x11\x19K\x17\x9e\x99\x05T\x16\x8co\xbd\x03!J9Z|g\xde\x99Y\xaa\x16[\x8d\xac\x86\x91\xb4\xed\x02$ \xd73 \xaaf\xd0\xfc\x1d3\xdd\xd7d_c\xcb\xba\xa0\x05Q-\x18\xc4\xeb\xc1\x04\x0c}\xe7&b#k\xb3\xb5\x1d\xfa\n\x0b\x17\xdc}\xd8\xf0\xc6\x1d\x83A\xf3.?B\xacp\x0cq\x8f\xaa\x8c\"\x1cc\x1c~\xf9\x11\x92\x07c\xee\x05\xf9\xa17\x9d9;\xdb\x8f&\x0b\xd2\x1f Q\x8ey\x19\x8e\x8dL\xbe\xb1\xaeU\xc83:\x85\x89\xf9\xf02I\x8f,) \x1b\xf8\xd1 \x9e\x8b.\x88\x152\xce\x0f/\xb0/\x85\x82\x836 CO\xd5 \xe2I#\xdc\xd9i\x1c\x8d\xba\xda\xae\xd2!\xad+<\x9b\xda\x8bA\xa7!4a\x0c\xc8\xb3\x1f;;\xbe\xa4\x15\xa5\xe4\xab\xa4/\x93\xa4\x1e\xf8\xcb\xa8=k\x0bL\x98\xf6\x8c\x93\xc4\x9dD`A\xca\x1f[\x1a\xf3nZ)\xb6\xa5A\x14\xa4V\x19\x94\xd9O\xd9-\xc9_\x86\x05\xf3\xb0\xd8rg\xce\x92|\xa1\xdc\x11\xd7\xbb\xd3\x7fw\xf0\x8f\xb0\x88\xe2\x98\xfeq\x15\xa7a~\x87\x7f\x85\x059\xd8\xc3ZQ1\xe5\xff\xeeL\xf9g\x93\x83\x84\x88\x16\xc4\xdfyx+\x19\x19\xb9,\xd3\xa2\xa7\x8d\x03\xad\x8cp0\xb59\xe2\x90\xbbm\x8d[\xc1,\xae\x9bt5\x12{@ \xccM\x98 )\x10\xf7\xf6\xb6\x1c\x98\x8e\xb1\xb8\xb5\x8eZ\xc8\xbcr\x19\xde\xe4\x8d \x8bP\x1e3\x10\x8774\x17\xb2Y\xcan)@g\xc8J\x01\"\xe2\xc6>h\\\x0b7\xfdZX]\xb7y&\xd3\xb2)\xd3\x04fiDj\xa1[\x07\xe9F\x1a\x93\xa3\xb1/\x99f\xb5E\xd4 !\x95\xbc\xc5\xa8\x0c\xbc\x82\xb5\xe9\x92\xf1\xdamt\xad\xe4\xdd2\xa8\xb6k\x0bt\x1d\xa0\xf0\x01\xb4\xe7\xd6\xbe\xe6\x852\x1e+\x9fk\xe9\xde\xed\xec\x9f\x9e\xe1~1\x89z\xd3\x1a%\xf7\x8d\xf8[\xbb\xa6U*\xd7\xa9\x7fi\xb5\x9a:\xbd\xfc.\x93\x94\xa4s\xd7\xf3\x81\xb4\"8\xfd\xa1\x19\xa9\x9a\x9b\x11\xb3\xe8\x1f\x8d=\x8a\x0e\xdf\xacVd\x1e\x87%\xd9$\xb5~\x7f\x0e6\xfb\xbe\xf0\x03\xd2\x1b=\xe2\x9b\x0c#u\xf7\x0e\xf7<\xd7\x833\xee\xbf\x8c\xc9\x13\xd1\xb0\xf5p\xff+\xa6z\xd3\x84o>2\x87R\x99\x9a\xd3\xc2\xed\xea\xc1\xc3*\x83k5G\xec\xedPC\xfc\x1275\xb5h\xee\xca\x07\x850\x8a\x0c\xaf\n\xf5M\xf4Uy\x02n\xea\x90\x0d\x0b\x1f4k\xf4\xb8\x95=\xa5\xb2\xf8V\xaa\xdf\xa1B \xc5\x00\xb6\xcc\x1b\xd8k\xfc\\\x17Z\x84\x05\x86#h)\x0bo\xb1\x10Y\n\x16\xf0\xfc\x14\xb3\x14D\xee\x82\xa7\xfc^\xc6\x8d\x93\xd3\x0eDn\xe1.<\xef\x04X\xe4-\x18\x8d\x0c\xea(\xb4\xf3\x91\xa5\xac<\xccP\xc2Q\xe3\x8c\\\xf8\x90\xbb\x89\x94\x02E\xc3\x8f\xbc\xb47\xd3\xfc\xa0\x93\xa6xH\xb4\xb0\x91\x10Tj\x03\x18F\xd4\x9aDo\x96\x14\x8fHa\n\xc2\xc4\xeeA\n\x12]\xa5\xbcx`R\x82\xeeA5\x07\x8b\xd6\xad\xf3\x8b\xb0P\xcc\x9f\xc8\x97\xf2]6'\xaec\xcb\x99\x92ah\x01\xdbx\xb4\xb0\xb8]\x029\x0b\xfb\xcd\x1d\x858\x82g\xcau\x16#\x9bX\xf1w\xb7u\xa1\x90.\xb1!v0\xfdp\xaai\xe5\xc4c\x96\xa8\xa0\xcb\x9aJNY\xe4\xb8i\xe3\xc3\x08u\xfa?V\x1f1x\xe9Zf\x86\x176\x0e\xe6a\x19b\x98\xc2S\x18\x8d2\xf8W\x982s\x07l-(\x96\xf1\xa2t1\x04\x05\x17\xbf\x08\xafkN\xe1\x95\x06m\xd5\x83\x17dW\x05\xc9o\xd0R\xca\xbcx\xd12\xcc\xc3\xa8$\xf9\x8fa\x19\xb6\x82\xfe\xb3V,\x16\xeb\xbd\xf4\x02}X\x9a\x17\x0cai&X\x99\x94{F|(/P\xec\xc0\x15\x94\xa8\xbde\x04\xb0iq\x86\x88\xc5\x1e|3\x1c\xb6^\xe3v\xe4$$p\xec\xaa\xb0&\xc1\xb4\xe4\xf6f\xf6B\xe9\xe8D\xdcO\xdaM\x9d.\xa8C\x8cj\x1c\xca\xdb\xaa\xc4\x84|\xef\xd9\x8e7~\xb1\xb1\xdbze\xbf\x95\xc6\xa6\xffL\xae\xfe#.;:\xb0Th\x1f%\x1bH1\xdf\xa8\xde\xe0\xbb\x80\x8c_\xee\xea\xa2\n\x00\x16\xb8\xd5\xd8lA\xcaO\xf1\x8ad\x15J;\x0c\xdb!U\x182\x80\xa6\xba\xcb\x0e\xfb\xd8<\x98\x96T\xeeA\xba\xb2\x83\xe8\xcaoBeY3h\x9a\xb2f\xaay1\xa7l\\\xfb\xd3}\xfe\xef\xc1\xc6y1;F'\xd2S\x1e\x9a\x92\x8d\xa1\x86\x8f\xa7'P\xc3\x0e\xe7\xdda\x87\xd5X\xe9\x96|WV\xc8 \x84t\xed\x0e\x92,\xc2\xc3~\xdcJaF\x9fe\\\x94Y~g~\x99\xadI\xaa\xb2\x7f\x86J\x98\xf2\xab\xb7\xd6\xeb8\xd1+\xd9\xe6\x0b\xe2\x86K\xf1\x82\x9b3\x7f\x8b\xc9\xcal\x89\xfa\xccV\x1cta\xd8wmxr\xc3\x1dFm\xda\xb8\xb4C\xc5\x9b\xd7\xf1\xde\x0c\x82P\xab=Im\x08\x13\xf3\xb0Ih\x15$\x82B\xbb3\x87\xae\x95\xe3\x83\xf3C\x92]\xd1\x7f_g\xf9\x8a\"=\xe7\xc2;\x01\x16\x16\x13\x13\xf3U\x08\xc0]\xcf\x0b\xe6YJ\x90\xc4E\x8dE\x07\x92\x13z\x97\x98\xe5\x10\xb4\x93\x1f!\xc4)_3\xc693;QV2\x0b/\x86`5,\x91\x0d>\xec\x0b\x93;\x8c\xee\xe0P`\xe0\xd0k\xcb\x0b]=\xc9@\xaf;\xbb$\x1eW\xcf\\\x9f\xb8@h\xd6\xe7>\xdc\xf8p\xe7\xc3\xb5\xde|\x81y\x0f}\x98\x1b\xdc\x92W>\\\xfap\xe5\xc3m/\xbb\x08\x82\x83Z\x83\x08\xb6\xfa\xa2\xc6\x05/\x8c\xf1 \xe8#\xc2\x15v2\x00\x18\xef\x8fe\xec1\x87\xe0k*1C\x8a\x8ej\xd0\xacf/\xfbi\xf8\x86R8i\xad\xdd\xea\xfc\xca\xe2\xfce,\xdddD\xc3Gb\x00vmt\xf9\x05\xbd\xa5G\xe0\xc0\x1bq\xa0\xdb\x95\xce\xe1\xb4^[\n&n\xdaU^Y\xd0\xf1\x0bT\xca5\x82\xedV\x85\xf7p\n/f fNz1s\xfe\xed\xdf\xea\x8b\x85E\xe8\xfc\xf1bvcH\x1a\xfd+\x05\x86L\xdfxc\xe00?S\"\x00\xce\xe0\x1c\xce\xe0\xd6uHZ\xe61)\x10\xa2\xfd\n\xf6\xd4uoX2\xb7<\xbc\xc3\xa9\"\xa2z\x11\xf0\xafio\xef\xdb\x14\xd1\x1bD\xc5W\xf4\x96\xb8o\x18\x19\x8e\"\x0e\xcf\xf3P\xea\xae\x8b\ni\xf5+\xa6>G\xcfj\xf7\xca\x87/>%\x11(\xba\xa5<\x85\x89\xed\xb8\xe2\xabT\xd1\xea\x89\x0fK\xcf\xf3\xe1\x9c\xb6\xf0\x1e\xe1\x8c\xd8 \xec1H\xc3\x15\x93\xad\xbf\xe2x\xfc\xd7\x81P\xe6\xbd\xd5\x9f\xcb\xe3n\xf1[L\xf7\x8bW}\xeb\x15\xdb 1\xb4\x178\xb4_=\x1f\xc2\x19\xa1\x94\xc9\xaf\xf4\xaf/\xf4\xaf\xa5\x0f7f\x11\xdf\xcaj4\xc1\xe6t\x8c\x9bHw\xed\xd6\x15\xd3\xb4\xc8\x14(\x988\x86\xbb\xa6\xba)\xd3\x97x\xf8\xae\x1e\x83A\xb1\xe8\x9bl3A\x90\x89\x97\x14\xc2\xad<\xc0\x7f_\xd0\xa9gt\xea\x97>\xacf\x97\xa6\xf0\xa2,|\x91\x1b\x07\x1f`\x04q\xf0\x1a\xbe\x07wM\xbf{\xe5!\xfc]\x99c\x11\xad\xea\xc2A8\xf7FJH9\xb5\xd0\x0f]\xdfC\x1d\xa7\xa7\xd4\xd2\xe4\xda\x08{\x01\xc1\x8d\xba\xb9\xae\x08\xb3:\xcc\xeb4\xd2\x12}7,\xae\x05\xe4\xb5\x17\xbe+ mk\x0c\x1d\xd6\x81`\x1c\x06\xfd`\xa3\x91X\xe2\xd6\x9aF\xd2\xe30n\x1c\x8c\xd5\x1f\xb9+\xce\xca\x10\xf4S\xf7\xc64\x08DV\x1fX\x9a\x1etb\xe5\x93\xb9\x95\xba\x93}\x16\xa54u\xa7G\x9e]B\xccG\xf3\x14\xb6N-\xcaT\x91\xda{\x1e\xdf8\x9e\x0fN\xf8\xf5j\xd4\xa7m \xa1\xce\xdc\x0b\xc2f\xf2\x1b\x92\xfbS35|\xf4?3\xdd\xa2\xaa\xf6\x9bn\x9a\x19\xa8\x95s\x98\xab\xf1\xcc\xf9A\xa6\x93}\xcf\xdd\xd2)uc&\xf9\xbeu\xb1\xc7\xfa\x0cyB\xc76\")\xda @\x813\x163\x8d\xec\xe5\x9a\xb58\x85\xd0\x83\x94\x1e\xde\x8a\xed_\x88K\xb1\xbd\x0d\x11\x13^\xeb\xc1\x0d\xb8\xf3\"i\xc2\xe7\x16'\x1e\xff\x8e\x12p\xb3b4b\xf1}\xdd\xff\xca\xdc\x08[\xbb\xbfoZ3#\x97h\xb3M\xed\xdd\x9f}s\xaa\xe8\xcel\xfe\x95A\x93\xda\xc5\xf7\x06\xd7\xa4\x94\xb2d\xabV\"\x96c]\x8a\xbd\xe3y+\x91\xc5\x9de\x176\xf9\xae\x9ae\x8b\xf33\x8dW\x85\xf2\xf6L\xfd-\xd1x\xc7\xeag\x9c!?\x83J\x97\xe4n\xb8\xf8\x87\xe6\xc5o%\xe4no\xc5?s\x14\xd7\x03\xee\xcbu\xf8?;G\xb1\xf5\xec\x98\x12/\xfd\xcf\xcd\xa5\xdf\xb9\xcd\xbc\xb7\xf6.+\x16\x8b\xee\x04\xb6\xc1\x04\xd5\xb5<\xb6\xee\xd4RO\xd8,\xd1:{\x96:\xe6\x8c\xb7\x9b\xeda\x9f4m\xb2{\xd0N@\xbf\xfb\xf4\x9f \xe8\xa5\xe7\x7f@\x02\xfa}sR\xc4\x01\x19q-\xe7\xbf\xae`\xb3\x9f\xa4}\xf3@\xe6\xcd\xbe\xc7\x14.\x99y\xe6\x82g\x016\xbf\xa5TOhu\x14\xe1c*DJ\x9c\x82ns\x84 \xd6x6s\x8e\x03\x8e\xc1\xc5\x08\xdb\x98D\xf1e6'/J\xb7\xf0\xe4\xee\x9d\xe7\xc3\xdd\x1f\xa4\xa2e\xe7t\xa5\xdd\x91?r\xf8\x15\xc0!\xa4\xee\xde\xc4s\x13\x0f-i\xbb\x1aK\x1a\xd7\xcb\n\x83\xf4\xfa0\x91\xcc\xae\x1f(eI\xf7\xe1&H\xb3\xdb\xde\xd6\xb0\x96\xb5\xa19\x86\xce\x16\x06\x99\x94\xa2\x9c{\x01\x05zS\x1fb\xfcc\x12d\xe9\x8a]68\xa5\xd4\x07\xc6\xcap\xb3`\x9d\x15%\xbf\x85\x08h&\x18\x81i\x11\x84\xf39&\x1a\x94Se\x197Cj\x00\xc9\xbcE\x10\xafh\x8f\xe7Q\x1e\xaf\xcb\x82\x8e\xac{j\x0by\x0c\xdc\xa1\xdc\x07\xe7{)\xac\x17\x85\x94\xad\x11\xb9\x0e\x9f\x90\x83\xe4\xd4\x16\x1b9\xed\xcb\xc9\xd2\x9c\x84\xf3\xbb\xa2\x0cK\x12-\xc3\xf4\x9a [\x1d\xb9N\x81\xa3r\xbcNK\xf5\"\x08\xd7k\x92\xce_.\xe3d\xeeJ_yA\xbb\xe5\xbe3,\x123\xb1\xc6J\x16MY\xdcS\xab2\xb9\xd3\x94Q\xb2\xa0oN\x84bG\x8f\x99>%\xc4\xd7\xfa\xfe\x18\xd6\x1af\xa0\xb0\xfa\x18\x9a\xecC\x9b\xd1)\xf6\xc1\x9a\x95\x0fVy5},\xce\xf5\xf4\xb996{\xee\xa8\xeb\xd8i\xd7\xda\xdb\xb5\xc5\x04\x9bv\xdd\xd7q\xcf\xeamJ\xe9\xb4\x0c29\xa53\x1ed\xed\xa2O\xbe1u\x89]\xe6YH\x14\xe5\x1e\xea\x9bl\x9e\x857<\xb6U\x16,ZQ\xc4\x05!\x8c9\xc5sRd\xc9\x0d\xf10\x9c-F\xb1[\xc5\x05y\xec\xc2\xb4V\x80-\xcc\x9e\x9d\x04\\\xd1\xad\xef'\x00M\xd4\x9f\xd9\x99\xb2\x0en&9\x963O+N\xdemmQ\x02\xcf\xf9H\xae_}Y#h\x8c\x15\x0f\x9bAS\xb6\xdf\xd6\xda5#u\xa7\x87:A\xd7\xb8v(\xf2\xffA]\xca\x12V\xe3*\xeb\x9dq\x03\x84\xa3\xde\xc5\xb5Q\xd7\x88\xa1\x02\xae\x1b\xc6\xa46\x1eW\x8f\xb12J\x16\xb5\xaeX\x85\x84\x9d\xba5\x15\xcf\xfb\xcb\xb2A\xb9yp\x0e#\xc8\x91Y\xce\xba\xf5\xbc\xf4\x90(\x85\x98\xbf\x9dk*}9|\xd4\xa054\xcb\xae\x89\xecr#\xc2\xb5\xf3}\xec[(\x14\x8e\xba\x8a2\x9d\xd8B\xa9\xf0\x80\x84\x14\x97@\x08Q\x12\x16\x05\x84\x85\xe2%\xfb\xbbLG\x93\xd2\x0bO\xa4\xc9\xbe\xe9\xc4|{W$\xe3Z\xb6\xc8\n\xfe\x02J\xab^\xbc&oS\x96\x1a<\xc5\x18]\\\x9d\x03\xe9h\xd4E\xe8\xe7h\x89\x92Z\x08\xfd\"\xd2\x84\xac\xa0s\x01\x0f\xad\xaeB\xf6\x89\xe4\x95\xbd\x95\x07\x0b\xce\x97\xb1\x80J\xe5\x8c\\l\xb8_\x8f\x03%8WJY\x1d\xea\x1a\xdf\x98\xbf\xda\x1dO\xf5W\x19\x7fE\xe1\x8f\x9c\x86\xb0F|\x86\xdc\xa4\xb5\x89 \x0b\xd4,\x83\xa5\xb2\x1b,iA5\xfe\xd0\xfek#\xf8d\xb9\xea\";\xc1\x163\xc27\x12=\xe7\x14:\x01\xf9\xb2\xceIQ`\xd6\xa4\xaa(\x81\xc4\xe5\x92\xe4p\xc5c\xccf\xb9D\x05\xb1`\xcd\x0e\x8c6\x86J\x1a\xb8\x935s\xccc6\x96\xaa3\x8eJ\xc2\x8d\xed\xe5\x94\xd8-\xd3jC\xa7\xf5\x0d\x0c\x08@\x07\xaa\x91\x96\x85\x95\xd5\xcc\xbd\x0c1,\xd4\xdd\xc6\xfb\xc8\xa8\x11\xb1\xc7g8\xfd\\\xa1CD\xb2\xa1K\\\x83\xcbKJ!}\x93\xfb\xa3\x1aX\xef\x8e\xbfM\xfc\xa4\x03\x93}`\xea\xee\x99\xedz'-\xc5\x12zMS\xe09f\xe1\x07\x0e&\x9eb\x906e\xe5\xbb\xe3\x03\xe3\xf5\x0cMc\x06a\x97\xb6\xce\xb3u\xd1\x845\xa4\x98\xaa\xe4\x01HyIN\x16\x05K\x0d\xc5B\xcc\xad\xe7a\x89\xf9\x0f0Nr&\xad{\xbb\xef\xe2\xef\xd8w\xa4\xba\xdd\x87r\xf4\xa9\xe2# \xa3\xf2e\xb6Zg)\xc1\xbc7\xbf=\xf8J\x95\x82\x94\"EY'\x90\x91\x88\x11%n\xa69\xf4\x90\x04x\xd8\x8f\xdcu\x0e\xf7\xeb\xec\xef|~\x01I\xffZ\x91\x8a\x9c\xf31\xd4V\x15\xbe\x94\x87^\xab\xfb\x92\x87\xa2\x15\x11\x9d|p\xc4\x14T\x01\xa7<\xc9E\x96G\xe4gl\xa8[\xb6f\xe8\xf0u\xf3\xad\x906\x96\x03\x07W\xfa\xe0H]\xab\xe3\x8b\x14\xd8\x17\xcap\xaeP^Qp\x1d)\x85\xaa\x94 \n\x1fb\xb7\x90\x1b\x90Z\xf3\xd4/\xe3\xe2C\x95\x93\xd6\xa9\xe0 D,\x8cB]\xf3\x18B\xf5\xca\xd2\xc6\xa4\xb7\xc5\xb7\x00N\xa9{ ;\xaf\x0b\xf8\xa2\xe1\xbc\xe2mV\xa5%\x99\xf7\xc5\x0d\x14\x14\xb5fc\xa9NC\xdb\xbe6ae\xae/\x1d\x0dm\x18\xe6\xfa\x1f\xc9: #\x16\xa0ph\x1f\xe2n\x18\xea7\x8bm\x86\xec\xf9\xe3\xf7@,\xba\x1c\xac\xfe\x1b7\xfd\xdb\xb7\x1f\xb5\xfd\x04GU\x9e\xe3 \xdd\xdcu\xa2{\x16\xc3\xb2\x9a,\x98#H\xf3\xcburz\x05\x03\xc2\xd4\xf8\x0e\xfa\xdb\x1c\x8c'\xe3\xdd\xdfuQ\x9c\xf3W/?\xbe\xfat\xf9\xe3\xfb\xcbw\xef?]~xq~~\xf9\xe9\xdf\xdf\x9c_\xbe\xffx\xf9\x97\xf7?_\xfe\xf9\xcdO?]\xfe\xf0\xea\xf2\xf5\x9b\x8f\xaf~t\x86\xf4\xa9Q\x12\xd3\x897L*\xd1\x17!\xafu\x97\xcd~z\x14\xfc7T\xb7\xd1I\x8f\xd3\x7f\xba17\xa6\xbb\xba&\x14\n\xae\xb2\xf4\xd5\x97\x92\xa4\x94\xf8-0\xca\xf85)\xb5\x12RD\xe1\x9a\xfcH\xc8\xfa\xa78\xfd\xfc!\xc4\xa4\xcb\x84;\xbb\xb5\x8a\x8be\x98$\xd9\xed\xab\xbfVa\xf2\x1f\xe4\xae\xe0i\x05\xe3d.\x82\xbe\xb0jY^\xb2\xccz$\xb8*3^H\xf28L\xe2\xbf\x91s\x12\xe6\x11ko\x1d\xe6\x85\xfc\xfb\x9a\x94\xe7\xe1j\x9d\x90\xf3hIV\xec;L\xd1\x10\x96\xe4C\x98\x87+\xad\xa4,I\x9e*eo\xe3\xf4'\x91;Z*\x0d\xbf\x18J\xffX\xc5s\xa5\xe0\xc7\xb0$\x9f\xe2\x15Q\n\x99%\x8cR\xf4C\x96%$T;~\x1d'\xeawo\xd2\x92\\#\xad\xd3\x94\xbd\xabVWZ\xd1\xdb8\x8dW\xd5J\x1fn]Fi\xac\x97K\x12}\xe6\xdf\xad\xc8*\x8b\xff\xc6\xba\x8a\x8b7\xabU%\x84~\xa6\xd0>\xe2:_Q\xd6p\xfa\xd4d\xbd\x1e\xd7\xaf\x8fL\xaf3\xfe\xfap\xcf\xf4\xb6\x12\x1f\xef\xee\x9a^\x87\xf5kc\xd7\x05\x7f\xcd9S\xf9\x15\x9d\xdc\xff=\x7f\xff\x8e\xeb\x00\xfa\xec\x19\xec\x9eK\xc2*\x816\xc6\xce\x9b1\xb9-p~\x93\x85\xa4kb\x97\x0d\x11P\x15*+X+\xc6Z\x9d\xf4\xa4\x93\xb2\xa1\xf4:\xedD\xbc\xb8\xeb] \xde\xc8+\x17C\xd6|qy\xe4\x9a2\xfb\xbf\xe7.\xb2]\xaa\xdfj\xdd\xc3\xff\xcf\xde\x9fw\xb7\x8d#\x0f\xa3\xf0\xff\xcf\xa7(\xeb\xc9/C\xb6i\xc5r\x96N\x9c(\x9et\xe2\xa4\xdd\xd9z\xb2\xf42\x8a\xc6\x87\x96 \x8b\x1d\x89TH\xd0\xb62\xf2\xfb\xd9\xdf\x83\x02@\x82$\x00\x82\x8e\xbbg~\xf7^\x9e\xd3\x1d\x8b\x0b\x96B\xa1P{\x85i\x1a\xae;t@E\xb3\xe8\xd8\xaa\xfe\x8d\xbd\xbc\xf70@v4nv4K\x93\xe5O\xef\xdf\xa6S\x92\x125\xef7PO\xab|g\xabr\xe1\x11c*S(VN\xb1\x84,\xe5\x92\xf4\xd9\xbe\xb4}Z\xc0\x8b\x94\x19x\xa3\x8c\xcf\x04oM\x8a\xa6\xde\x93/\x1e\xf1\xfb\xcbp\xe5Q\xccd\x1fe\x14g[\xbe\"\xa6\xf5:\\\x95oB#\xc6 +;D\xf1\xf4C\xe2$\xa2\x80b\x16\xab\x1b\xb8\xa0jV\x0d\x159\xdb\xef\xcf\xa2\x05%J<\xa3\xb1 \x91hA\xefD\xa3\x8d\xf9\xf3\xd9i\x7f\x18N\xe6e\xeb\xc6\x1c\x01\xd2*0J\xc7h\x0dM\xc78{O\xe4^\xd7X#\x9a%\xfe\x18\xc8\xe2$]\xe2 \xc2qn\x08\xef\x03\xa4\x13\xcfcW\xa4m\xc9\xe8\\\xf4\x14e\x05\xdd9\x14}\xe4X\xfd\xf8\x9a{\x91\x13qj\xb6\x8a\x9bu\x97\x10A%^\x87+\x17t2\xa2LJ\xa6\xf9D)\xf2g\xcb\xfdP]W\xe2\xb1\x95\xe5\xa6\x9df&\xd8\xcb\xa0\x12\xd1\x08\xca\x90\xdfa\x97\x7f\xd9\xa8\xcfD=\xabr\xbc\x06\xcb\x9cP\xf7Z\x0f\x84\xa8\xed@\x88D\xa5\xa7\xdd\x00\xf2\xf2n\x1c@\xd4 L\xd9:\xa3d\xf9a\x9e\xc7\x9f_G\xd3\xe9\x82\x9c\x87\xa9]\xe4\x07\x9d\xe5\xce\x04\x13\xd2\x9fJ\xf7I\xc1\x85\xe9K*@\x97Fu/7\xf4H\x86\x0f\x8cyKc\x8fz\xe8\xbfE\x9c$\x8b\xe9\xc3\x1e/_\x8f\xff\xa9\xaf\xe2\xbd\xf1h\x05\x07\xb8v\xb7\xe1\x00\xf6`\x1f!|\x0f\x0e\xe0\x8e\xf8\x9b\xdd\xbf\x0d\xfb\xb0}\xeb_^\xe8\x9dd4\x0d't\xb3\x88\xc2l\x13O7\xd2y{\xc3\xf6\xec&\xf3\x96\x9b\x8c\xa4\xd4?\xd8\xe44\xf17'^\x98\x91\x0d9\x8d\xe2M\x92,<\x12\xc6\xfe\xc1&%\xe1\xe7\xcd\x9a\x12\x7f3\xc1\xc7\xec\xc0\xd9\xcc\xc3t\x83\xf2\xedt\xb3\x08\xb3l\xb3Hb\xb2I\x96\xab\xc5&\x893\xbaIb\x1a\xc59\xf17S\xe2\x9d\xe4\xa7\xa7$\xddL\xa2e\xb8\xd8L\x16aJ63\x8f\xed\xf1\x0dI\xfd\x83M\x14Gt\xb3\xf0\xc8iH\xc9\x86P\xe2\x1f\xf8\x9bi\xb2\x99&\xf9\xc9\x82l\x887\x99'\x9bEv\x10\xcd6\x8b\x8cx\xd1\xcc?`\xf3\x88\xb3<%\x9b8_n\xceHL7\x17\xde\x84\xac\xe8\x86L6+\x0fS4o\x92\x94\xfa\x1bJ\xbcx\x9amPs\xb2Ic\xdf\xf7Y\xd7\x8b\x05\x9d\xa7I~:\xdf\x84\x8b\x8cl\xb0l\xf9b\xcd\x86r\xc1\xa6\x93\x84\xeck\x8f\x84\x939\x9b}D\x18\xd8\x92\xe5&\x8f'\x1e\xdb\xbdl\x80\xa7\x8b\xe4$\\lN\x13\x9alN\xf30\x9dn\"o\xb6Y\xae<\x8e\x03\xd9F\x19D\xecEt3Y\xe4S\xe2\x1d'\xf1\x84\xf8\x07\x9bE\xc4\xa0\x95\xd3\x8d\x14}6\xd4#\xe9,\x9c\x90\x0dI\xe3p\xe1\x1f\xf8\x07\x9b\xcc\xdf,\xbcpy2\x0d7\x84n\x92\xc9\xe7M\x12\x9f\xfa\x9b\xa5\x17M\xd2\x04I\xe0\x06\xf5L\x1b\xaeK\xf07o\xc27\x9b\xd8\x0b\x97$[\xb1\x96B\x1a\x9d\x91\x0d\xb9\xa0\x1br\xbe\x89\x16\x9b\x84n\xf2\xc5\xc2\xdf$\x1e\xb2E\x9b\x15\x8f\xaf\xdc\xa4\x9b\x9cn\xceH\x9aFS\xe2oV^8\xf9\x1c\x9e\x92M\x98\x86\xcbl\x93Fgl]\xd2\x84\x92 %\x0c\x104\x99$\x8bM~\xb2\x88&\xfe&\xf5\xc2\x88a\x8c\x17N\x93x\xb1f\x0b7\xdb\x9cF\x19%\xe9fEB\xba\xf9\x92Gi9\xefl\x92\x93\x0d\xd7\xb3mh\xba\xde0\xaa\xe8\xfb\x9b\xcc;Y\xb3\xc5\x0f\x17d\xba!\x8b\xd9f\x9e\xa4t\x13\x9d\xc6d\xba\x89\xbe\"xB\x1aM6\xa8\xd3\xd9\xa0\xa9a\x93\x9fp\x97\x84M\xbe\"\xe9f\x1dO\xe6i\x12G_\xc9t\x83\xb1\xc4>\x83\xe8r\xb5`\x83\x9f\x93x3\x8f\xb2\xcd\xf7|L\xd1\xce\x06\x87\x11^\xf3z\x8a\xf6\xcc)E\xfb\x14\xab\xfc\xa2AB\xefGR\xbc\xdc\xf4\x86\x99\x06Pw\x06\xae_X\x8b\x8c1\xa6\xd6\xb7N\xf1\xadA\xcb[K\xc6\xd3z\xa7\x01\xc4\"\x83\xc9\x00K\xede\x84za\x00k[\x81\xe2&*H\xa1c\xc9\x84\x8e\\: .1\x19\n\x0fq[\xea\xb9A\x0d\xb1hMU\xdb(\x9a([0\x11\xa7\xc2\x9b\x8d{\x87\x95\x84\xbe$U\xa3\x81\x86\xb8H%\\\xa3\x08J\x80\xf6\xb5l\x12.\x9e\x86\x19\x1b\xd6\x93\xea\x9d\xe7b\x90\xad\xa0\x91\xeaG\x8f\xf6Sn\xe8\xf7n}\xea\x8f\xfe\xd5\xbf5\xfe\xee\xc6-&J4K\x7f\x92~\x16\xc6\x11\x8d\xbe\x92\x8f\xe9\xa2\xb5\x87H\xad_\xabz\xdb0a\xadW\x8b7\xd2\xc9\xd6\x8abp\xa6\xf6\xeck\x8f\xe0SB\x9fL\x18\x97\xcf\xb0%M\x16\x8b(>}G\xb2U\x12g\xed\xd0\xa8\x9dd\xa5\xc2\xbf\x1fe\x8a\xf6_Q\x87\xb0\xa51i\x0c\xaa\xc7\x9e\xfe\xcdR\xbf4\x8b\xe2\xa9\xd7\xaa\xac\x91Wq\xc2e4Li\xf6kD\xe7^o\xafW\xe8#U\x15*\x83\x89\xd7\x9b\xf0\xdd\xc3\xad\xf6\xff\xbe\xf4K,lz\xfe\x01\x98+X\x15\xaa\x1d\xaf'\xba\xe8\x89\xc4\x9b\x1a;\x89\xa1\x8d\x14\x9d\xe64\xe3\xd27\xe2\x17\xca7a\xea*\xb3\xa4\xc5\"O\xa2Y+\xc7\x9aM\x9bx2%d\xb5X\xbf\xa7i\xb4zI\xd65~\xcd\x927\xecZX\xaab\x99[\x94\x81:\xa7L=\xb6ut\xbb\xafZ51\x99N]K\xb7\xd9\xa8\xe4\x8f\xf1q\xb1\xcd\xd4&5\xef5e\xf8\xbf\x19\xb05d\xb1\x86\xa3\x91\xc6\xe4dVh\xe3\x98b\xee\xa1\x17a=D\xd4*\x8a\xc8mv\x87 5<\xa1\x0c\x15o\xe8\xd3V_\x9aU\x90\x91\x86\xec!\x15s\xb1\xa3F\x86\xa2\xdd\xa6\x94\xe2\x80^)\x0c\xb9A-\xeb\xcdp\xddp\xa6\x18\xad\x16\xb4m\xc1)\xb7Z\x94\xd5\x8dMn\xf5P%\xbeU7_n\xdf\xd3T\x94+\x98\x9d6\x83d\x91o\xb1\xd9\x84iM\x18L\xc4g\x1a\xd2\x1f\xa3\x03\xc6\x87\xa4p\xeapX#\xfe\x8da\x8d\x94\xde\x8chR3\xfdU\xdfc\x9bb\"\xfd \xee5\xfc\xfa\xa1\xc8\xbaq\xfbN=<\x05D\xee\x0d\xf4\xb0\xb83\xd0}\xba\x92-\x7f\xbf\xab{\xaa\x0f\x89\xaf\x16_e\x0f\xcf*\x07\x89\n-\xa3\x05\x19\xb3\x16\xf4\xa3\x18\xf5\xe3\x99\x17\x97\x0c\xb8N\xb7\x02\xaa'\x809:\xd7m\xa3\xc1\x01(\"A\x84A\x13\x11\x16Z5\xf2\\.hm\x8d\x95t\xf1<\xc0C\x9c\xe2\xa7Q\x93\x18p\xfe\xad\x9f%K\xd5s\xa2\x8d\xddd\xbd\xac\x95a\x8eb\xc6[\x8db\x8d\xdd\xeb\xb2\xbe%\x9a'\xdf[\x83\xdfc\xeb\xfe\x80\"\x10\xf01\x94\x02T\xef\x97p\x91\x13\x1e\xe8uB`A\xb2\x0c\xe8<\x8cA\xb4\xdck\x8e\xb1\xb9;\xfe0\xf8gv\x18\xd3#\xf3\x98NQ\xe5\x9e\x8aa\xf1\xc6\x9d\x86\xf5Y\xefI\xda~Z\xa0\xa4y\xeb_;\x07\x9f\xa6\xdb\xde\xa7>\xfb\xc7?\x90\xb6\x01EN\xad\x0d4\x04\xc1\xf8\xb8\x0c\xee\xc8\xe0\xfa\xdamt\x0e\x83\x8a!\xe2\x8d;\x0d\xeb\xb5\xceE\xd7mLx*\xd5\xf2+\xd4\xbc\n\xcd\x90\x9bE\x0b\xe24\xc0\x0f\x06\xbfb\xb71\xf6h\x9a\x13N\x1aD\xccR\xb8\xc8\xd4\x1b[\xbb\xca\xdf\x03\xc9\xca\x9bF}\xc2\xbbw\x1a\xf8S\xbd\x8f\xb4\xdb\xb8\xf9`5\n\x1f\xf3\xd8\xc4\xcb.C\xfb\xd9\xe4\xd3\xed68^\xb1\x9f}V\xb8\x0b[VZ6\xef4\xb2w:\xf7s\xb7QIqO\n\x1b}\x9a\xbcJ\xceI\xfa4\xcc\x88\xe7\x07\xb0u\xeb_\xa3\x7f{\xe3\x83\xd1\xee\xce\x83pg6\xfe\xf7\xfd\xcb\x9d\xe2\xef;\x0e\x7f\x0f\xf6.G\xfe\xe5\xd8\x890\xb0\x91;M\xf8\x8d\xd1\x0b\xdf\x9d\x98\x96\xbc\x89\x1b\x9d\xe7]8\x0d\xef\x951t\xa0\xfb\xf0:\x90\xfc\x0e#|f\x08xp\x1e\xdf\x16O\xebpzx\x81\x1e\xc9\xb6\xa5\x9d%\x8bEr\x0e+\xd1I\x0f\xb6u.\xec\xd53\xbc\x19\x9e\xd1:\xb2\xabr\xb67oV~\x9b\xb9Z\x13\xc7\x8b\xac\x1eR\x9e\x93d\xba\x16je\xae`\x8c\xe2\x1ew\x93\xc7_h\xc8:\xbeX.z\xc7\xd0\xf9LyS\xb0\x1e\x867\x17\xe5\x9b<\xc9\x85\xfe\xb5U\xf9\xda,I\x97!5\xbd8\xaf\x8cQ\xec\x00\xc3\xbb\xd3\xca(\xed\xef\x9e\x95\xef\n\xc4\xad\xa7\x1e\x01\x01G\xeet\x950\xa67\xb2f\xe6\\3\x91\xbdT\xcc\x0d\x01\xbf\x8c\xf4\xfd\x83Pe\xf4B\x99\xe0[\xbc_\x15\x9ay\x82\x97H\x16\xd306u\xackJot\x94MN\x92<\xa6&-:\xbbN0\x9c\x8fq$\xcal\xccl\x8d\xb9!\xd4eH&\xa1l\xcb\x8bx\xa6\".\x96X\x06r\xc1\xbe/\xb5i\x95\xcfw[\xbf\xc6\x94\xf1\x92\xf9\xeb\xfe\xf9\xa1\xc1\xc8\x0e\xd2\x00\xd7\xd0B,\xcc\x9e|V\xed\xaa\x9bdvhp\x08\x90\x17O\xef\xad\xd7\x11G6u\xac\xbc\x94\x80\xa7\xc8\x0fD\x7f\xc6/\xda\xed\xcf\xf2\x92\xb4\x88\x1b\xb8{H\xf7 ;\xde\xf88y\\bq\xf6\xe1\xf1\x80c\xe9\xf9\x81\xa1\xfc8h\xf5\xb9 \xb6\xe3\x13F\xd2\xd7\x01\x9c\x16\xb5#0\xb5\xfd\xfb\x00\x0e\xc75\xe1\xd5:\xf6R\xdf\xa4}E\xa7\xe6\x07\xb1\xd4 \xf2\xcfe\xf9 9\xf7w\x82\xd6\xc3,\"\x8b)D\x19\xe6\x0fY\xa5\xc9Y4\xc5\x13@G\xb1e\xa3g\xb6\xc1\xb2\x89\x7f\x85!<\xf3\xa2\x00\xce,N _\xd1\xc4\xc1\xc7\xf3\xd5\xd5\xd9\x00\xc4\x10\xe6\xe5\xd6\x99\xb7\x8d\xe69\x0c\xe1\x0d\x1b\xcd\xdc2\x9a\xe7\xcah\x9ew\x1d\xcd\xb4m\x08\x1fa\x08\xaf\xd8\x10\xea\xa5E\xd4\xeb\xa32\x84\x8f]\x87\x10\x96\x00 \xdbF\xf3\x03\x0c\xe1-\x1bMh\x19\xcd\x0f\xcah~\xe8:\x9aY9\x9aY\xdbh\xbe\xc0\x10\xfe`\xa3\x99YF\xf3E\x19\xcd\x97\xae\xa3\xa9\x1e\x89m\xe3\xf9\xdd\xe2\xb7$/\xe4n\xbc\xdfQC\x1eR\xb2C\x99\x1c\x85\xcd\xaf\xe0\x00~\xf6P\x85\xd6\xcb\x99\xb0Q\xdc}\xc7\xef>\xe5D\xd4\xcc\x17\xc9K\xcc\xf6w\x93\x1bKIf\xab\x07[\xdb\xfc~\x85!|\xf0\"\x0b\xb0qv\xbfv\x18\xe3\xaf\xedc\xac\x1c\x9emC\xfc\x05\x86\xf0\xb9}\x88\xbft\x18\xe2/\xedC\xac\x9e\xd0mc| C8j\x1f\xe3\xcb\x0ec|\xd9>F\x95\xc1j\x1b\xe1\x8b\x96\xa1\x1d#\xf3S\xb0a.\x03}!y\xd6\xa3\xd8\x1b\xf5\"J\x96Y/\x00\xceg\x8f\xfd\x00\xa2\xa6\xa1\xbb\xcd\xd7\x03\x14\xc1\xaam\xdb\xb1\xab\x82I/\xd0I\x82!\x0b\x06\xabV\x97P><\x12\x0fU*\xf0\x02\x190\xf6\xf4)\x13*\x03ap\xe7\xeb`\x1f,\xbb\xa2xJ.\xf6\xa1\xc5g\x90]$M\x93t_\x13/\xa7^\x97\x96x\xb0v\x9cP\x18\xe46\x94\xb8\x01Cx\xdd\x8e\xb47\\pA\x00\xeb\x86+56\xda\xbd5\xfe+\xcdl\nvNI:\x1a}\xbb\xbb\xb1\xc6\xd2 \xc2/\xa8\xab\xd8\xdf0h\xe9\"\xa0\x19\xbco],\x17BwE\x8c\xf2]\xc4\xbd\xae.\x96\x0b\xdc\xb6\xf8\x17\x166\xb2\xad9\xd7\xf3\xb0o\x98\x94/\xbe\xfd\xf7e\xc0\xbe\xbfq#%3\xd5\x1d`\xbdBO\x18\xda\xc7}\xcd\xff\x14%WD\xb9'\xda\x0f\xa7S\xf4M\x0c\x17?\x97O\x0e\xe0o\x8f\x0eX\xe3g$\xcd\xa2$\x1e\xf6\x06\xfd\xdd\x1e\x90x\x92L\xa3\xf8t\xd8\xfb\xf8\xe1\xf9\xce\xfd\xde\xc1\xe3O\xb1pl\x87\xdf^\xbf\x02r\x81K\x0c\x13\x9e\xe2\xf7\x84\xc0)\x89I\x1aR2\x05\x1e\xa4\xf47\xa3\xff\x93\xbc\xa4!LL\xa7\x8f\xa9\xb1\xbd[\x9f\xde\x7f\xf7\xe9\x96\xf7\xe9\xfd\xb6\x7f\xe3\x96\x05\xd9K \xc2\x10\xa2\xd1\xa0\x19\x8c\x08F\xc6B1\x16\x9eJK\xed\xf4)\xea\xcb~{\xfd\xea\x90\xcf\x8d;\x93\xb8\xf8\x80\xb0\x89$\xc2\xc3\xa8l\x8fo\x82\xe7i\xb2\xe4\x1bA\xb4\xd7\x9c\x91T\x8a\x99$\xbb\xa4M\xb2K\xb0\xbcm\xcd\x13&)=a`_\xc9y\x06Pxi\xaaYP\xac\x8e_g\xa2\x0eI=\xa9\x92\xbc\xd8\x12\x94\xe2\xfc\"\x99\x84\xac\xa9~\x86\x8d\x1b\xf4K\xa5\xde\xd2\xb4\xb5z\xa8\xa47\xee\x11y\xf0\x90~\x96\x9fd4\xf5\x06\xbe\xac\x17tS\xa7\x8d\x01\xd5C=\x85(\x86\xd8\x87\xb8^>%\xe5\x8e\x8a\x18g8J\xc7\xb2\xc5!&[\x1bM\xc9$\x99\x92\x8f\xef\x8e\x8a,]^:\xda\x1d\xfbc,\xdd;@u\xa1\xf6\x9d\xc1\x98\xdbU{.\xf8$\xb7us\xcd\x9a\xd9l\xec\xb4\xd5h\x15_\x86+\x07\x7f6\xf19\x12\x83\xea\x8c\x88\x0f\xdb\xd0\x1b\xa2\xb6\xb6\xf9\xb4\x9a\x99T^\x97~\xff\x8f$\x8aqy\x9aS\x13\x19{\xec\x83\x92\xf3\xa9d\xdd\xa0\"n\x17K\xd5yD1W\x04\xd0\xcb\xe9l\xe7~\xcf\xf7\xcb\xbb\xbd\x930#\xf7\xee\xe8\xc6Pf\x10jv\x9d`\xb8Y\x94\xc4\xd9{|\xcb\xe4\xb5\x13.V\xf3\xb0%\x97\xacz\x154\\j\x13\xe7=\x1f\xb7\xd0\x02S\xc1\x85)\xf1\x88\xfa\xccpd\xeb7\xe6\x92\xd0y2\xbd\xf2h\xf8\xe7\xa6\xf1\xc8\xa7\xceLDs\x8c4<\xfd\xb3\xc0Y\x1b\xb2\xf3 5\x98Y\xcb4\xe5\xc6\xce\xe8\x9cT\x94\x8c\xeeQ\x0cF\xbd\x91\xf4\xe6\xa5F\x0f\x11\x85m\xe1\xa5oz\xe5\xdf\xa2\xcc\xd1(\x0e\xd8\x06\x0dt\xfb3\xf5K\x9f\xfa\xff\xd9\xdb\xbdu\x1a@o\xbb\xe7\x8f\xc5\xfe\xd4-\xa9\x91J\x11\xdb\xa6\xd6d\xee\xaa\xac\xa4\xc1\xb1\xa6P\x9a1\xc25- W\xac8\xe5\xb4\xb9\x8ct\xf2\x18\xa9\x8e\xbc\ns\xa9\x143\xa4's\"\xc0:\x8f[d\xcaT:&\xcc\xd9\x98\xd4(\x8d\x96\x9e\xb2H\x9f2\\\xa3c\xb4\xd8\xf4z\xb6\xe1\x1a\x92\xab9\x0d\x93\xc1\xec\xb8\x84\xd9\xd7\xa6{Y\xa0I\xe7\xe6\xd44m\xe6\x9b\xb0\xecd\xf1\xd1\xad\x7f]\xec\x14\xccu\xeb\xb2\x05\xc6\x14t\x7f\xe6\x08\x85\xfdgS\xd8\x976\x85\xf5h#\xecb\x1ba\xf5r\x9f\xca\xff)\x1f\xf0\x94\xdfl\xa7x\xf7\xee\xfb\xfd\x1f\xf2\xd9\x8c\x08\x7fq[\xf5\xa3\xb3\"sSq\xf2\x95x\xa2\xa6\x19\xacX\x8c\xc0%S|o\xc49U\xfe\xe9\x18\x91:nT\x8cr\xca\x06\x89\x94\xae\x1cWjcD\xf59\x0eAaO\xf9T\x94d\xbc\x8bhBL^\x97\xc4\xb8\xbc<\xa4\xaa\x9aL[\xe4K\xe4\x14@-1\xe1c)+S.\xd9zZr\xfdP\xecx\x99\x97\xbe\xaf/\x9b%\xb9\xf4-\xa6\xd6\x16\xc3\xb2\xc5\x17\xae-F\xd6\x16\xb3\xb2\xc5\x1b\xae-&\xed\xb3\xbey\x13\xb6&e\xd3?\xba6\xadI-\xaf4\xbd\xe5mQ.\x87\x8f\x16c\xb7\x06C\xd7\x06\xeb\x898L\x0df\xae\x0d\xce\x1d\x1b\x9c\xb4\xaf\xf8f\x83\xdd:57s\x1d\xdf\xb41>\xf5\x17\xf1R^\x83\x85x\x91\xfc#\xe1\x7f\xc4\x8a3+\xcf\xd5\xcd\xee\xbc$kL\xcf\x17\x8a\x17\xe2)\xb9\xc0\x1b\x19\xbf\xf1$\xcb\x92I\x84\x99!\x00s\xb8\xc4e\x00\x1c`x~\xdc\x97m\xb0\xae\xfbe\x0bl\x00\xfd\xf7\x04k84\xe9\x07\xa6\x19\xf8\xfb\xdf\x8f\x8f\x8f^\xbf\xfe\xf8\xe1\xc9\x0f\xaf\x0e\x8f\x8f>\x1c\xbe\xc3?\x8e\xff\xfew\x8dji\xd5\xfc\xe2\xe5\xe1\xef\x87\xcf\x0c\xaf\xcf5\x1d\xbcyv\xf8\x9b\xf1\x83i\xf3\x83\xb7\xef\x9e\x1d\xbe3~p\x06C\xb8\xdb\xbc\xbd\x86!\x0c\xe0\xd1#]\xb5\xf3S\x18\xc2\x1av@\x93\xaa\x7fi\x90\xf7\x8f\xed5\xae\xf7\xeb\x89$A\xcf\xf9\x9f\\\xa5\x19\x13-?o9\xd8\xb9q\x18\x0b\xbb;\x92\xe4\x0b}\x8bT\x1c\x0dE\x83\xbbn\xdb\xe9=O*\xaf\x7fxh9\x89D\x84\x9bF\xaf^\xa9\x0e%\x0bH{\x98x\\\xa88w\xb0JH*r\x9e\xcb\x94\x05<\xd3\xc6\xeeCLw\x11?\x84h{\xdb\x87t\x14\xf1$\x89\x11\x13\xe8\xcd\xee\xf5\xa9\xd3l\xed\x01\x0d\xaa;:\x06\xa2\n\x98f<\\\x82\xf6\x8f\x8fy\xe9|\xe2\xfd\xc1OW\xf6\xc4\xa9\xe3\xb7\xd6Tb\x85\xf5A)\xe9a\x13\xc1P\xb9\x04\x8f\x1f?6\x995\x84\x92j\x1bb\x11C\xbd\xd9\xc0\x9d\xbd\x07w\x1e\xdc\xfb~\xef\xc1]\x9ca\x19\x99\xf8&|\xa3o\x85MZ\x93\x92\xcf\x04>\"\xcax#\x90\xb7Q\xf1\xe1\x06\x9c?l\xc5\xf2\xeb\xf9\x9c\x0dm|v\x90\xda<\x19jP\x16\x9d\xde\x92Q\x91\x14\x1e\x0da'\xae\x14,\x1cJ\xd0\xd5_&\xf0xXW\xc0\x9a\x06v\xd4\x96\xbd\xf1\x83\x18\xb9\xe3\x86}\xed\xda^\xbd\xaa\x8f\xa1\xbd\x0f\x0e\x80\xab\xc5i\xc4\x986\x97/\xb6\xba\xbf l\x03\x1a\xc5j\xb1\xb4\x8cC\x92\xe5\xe2\x99\xbc`\xac\xde\n\x02\xbf\x9f6\xabT\x83pd\xd6\x9c\x07\xef`\x08{\xcd\xdbo\x9c\xb3\xb6\xf3M\x9d\xa4\xcd6^\xf1\x93N\xbe\xa09\xda\x9e\xc1\x10\xde0\x1cye:\x02\xbe\x1a\x08\xf6<\xca0\xbb\x8833\xfe\\\xae\x94!\x99\xa7\xb4Z\x94\x0b\xc5\xb6\xe0\xa0\xb2l#\xf6\xbd\x85\x8a\xc2\x01\xa4\xc5\x19\x12\x89\xb2\xc0\xd6\xd3\xd0\xe0\x078Mb\xd3\x89\xebH\xab?\xda\xa8\x82uH\x1c\xfd\xac\xe3j\xad\xdcc\x18\xd4\x0fv\xees\xebWW6\xf6\x8b\x9d1\x00S\xd5h\x8a8\xe3\xd4\xc5\xefv5\xe0\xaf\xda\xf4\x1d\x05-\xe7Un\xb5\xc5\x96\xf5\xdd\xfdj\xef\x8e3(o\x90\xd6\x8e\xde`\xedR:ze\xcaM\xa4\x9d\xbb\x92\xb7\xdaiD\xbf8\xc0X\x13\xcc,\xb8\x14\xa7.^Z\xbb(\x92\x01\xa8G\x8e\xdc\x8e \xcf\x95-\x85\xe8>M0]\x83\xb5\x80\xb5\xbc$P\xd1y\xbd\x12\x167\xac\xd5\xe6!\xe7@\xa85\xc3\xfb\x96\xa9^\xd8\xe1\xc5\n3\xd3q\x06\x0d\x92\x14\")\x15 5K2\xe3[.\x0b\xd8\xd3\xcf(\xdd\xf0G\xfb\xe8.o\xeaV\xbb\x8a\xecj\xa6\x083\xc0\xfd\xc5\xb7\xc1\xbdO\x13\x94\xc5$\xc4\xc5\"\x84\xcd\xb5\xa0\x98\x9f\xfd0\xa6\xe9\xbax\x99\xba\x8e\xf2\xc6\xb7\x8dR30\xa2\x0e\x84\x8dSH\x91\xf2V\xe8<\xb6\x1f\xadc\xf3\xbe}pr4h\xe0\"\x14\xef\xd7F\xa6\xfe\xfa\xaa\xa8\xaa\xa8&\x1f\x81e\xb0\xbd\xd1\x918\xa0\xc75\x05t\x00_\xfb/\x0f\x7f\x7f\x0fCx\xca\xfe\xfe\xe5\xc9\xab\x8f\x87\xec\xd7\xcf\xec\xd7\xe1\x9b\x0f\xef\x8e\xf0\xe7\xbb\xa0\xd2\x7f\x14g+\x9e\xed\xbc6\xaa$O\xab\x99\xb9m\xf4\x85\x1d\xf0\xe6\xdc\x0bJ\xcb\xa3g\xe3\x0em\xd6\x1b\"\xdeK\xae\xb7x\xd9Of\x8e\xed\xbc\xf4\n'\x92\xc6\xc0^V\xa7L\xbe8\xb6\xa9\x1b\xdb\xcb\xab/*\x82\xef\xf8\xb84\x8e\xb2\x91\xfc\xbb\x17@\xef\xb2i\xcfQ\xfb\x99\x84\x939yG\xb2\x962\xc7JW[\xbc/\xfc\x10d\xc5\xafB\xd6\xfb\x18\xe3\x83)\x17\x06\x957\x87\xfc\xc5\x12\xeb\xcb\x8a\x0f\xa2\xfc\x99\x14\x1c\xcb\x8f\xc4\xd9\"^\xb0M\xa3\xe8\xdf%\x86HLdB\xcb\x82d\xbc\x02\xa8K\x0f\x89S\x00\xbe\xe8b\xd6\xda\x05\xf1^\x04\xf0\xd2\x0f\xe0Ee\xf1%\xbdu\\\x13=\xa6\xdf\xe0-\xdfp\xc7\xf4\x1b\x16L\xbfQ\x19`II\x1d\x9b\xd6\x0d\xf1\xc65#\xfc\x88!\xfc\xb8\x89\xf07\xae\x19S\xea\xb5\xdd\xf5=|\x13\xa64\xbb \xde\x8f|=\x7ft_\xcf\x1f-\xeb\xf9c\x8dr\xd1o[\xcb\x97\xfd(\xe3-D\x94\xfd\x92\xda[\x86\xdeB]\xcb\xc6\xaf(ro4\xb5\xb7?\x05\xf0\xcf\x00~\x0b\xe0\x1fM\xa5\xe9\xfb\xc3\x7f\xa0\xc2\xd4$9Rj\x11\x1d\x8fCQ+\x83\xd6\x88M\x17\xf6\x95\x18z\x90\xfc\xa50.}&\xebL\xcbC\xf2\x91$\xb26\x88\x1c\xca\xf1gQ\x0b\xab:4\xd2eh\xb1u\xf2Q\xa9\x9f7\xcc\x9f{\x16:+\xe8\xd2\xf6\xee\x84\xe1,\xa8\xdd{*\x0e\x83zm\x1fCG\x91\xa1#y\x16\x95\x06\x8c\x7f8\x1aX\x90\x1b36\xf8\x13k\xcd\xfbI\xe8Z)\xf5F\xe3Ff\x16}\xbby\x0brh\xd2\xe0\x88.\xa8\xdf\xe4\x9a\xbf\x94o\xa4\xfa7~(\xdf\x88\xf5oh\xa5\x9c\x83R\xc8)TOf\xcf\xbe\xabK:\xa3\xcf\x01\x9c\x8dAd\x8a\xed \xf1t\x92Y\xc3\x16\xa0gza\xee\xdb\xa7\xc7\x05\xb9k\x9aEfG\xf2_j\xd8\xa2A\x0f\x0d>\x14\xab\xeb4\x04v\xc29\xa9\xcb\xa8`\xcd\xf4@\x8dL\"xa\xe5H\xd8\x01QZ6\x06\x01\x864\xef>\x84\x1c\x1e\x0d!y\x08\xf9\xf6\xb6\xa9\x11\x10\xe3\x08\xd1S8f\xa2\x15\xec@\xced+\x83\x7f\x15\xc8\xc5\xe6z=\xe2\x85\xa3\xc18@\xc5]8\xda\x1d\xb3/\x03P\x02\xdas\xd8\x86\xa6\x12\x0e\x1a\xe2\x97\xbc\xe4g\x8d\x87\x96\x04s\x0dV\x99g\x83tZ\xa6\xd9\x9f\xbcL\xda\x152B\x96\xaf\x9c\x0d0\x0c\x1b\xbfzV\x96B^\xd2\xf9\xc3}a%\xf0\xb7\xb7\xe11:W\x9b\x1b\x077u\xa7\xbc\x8cjOy]\xc2>\xc7\xcc\xb9P\x1f\xa9i8s\xfbp\xa4E\xbe\xe2w5\x94r}\x8e\xf4z\xa8\xe9\x93j\xbe,\x03\xb8\x05\xbb\x85?\x8b\xf0{\xf1\x03\x89\xce\xf2C\xdb\xc1\xf6\xcfbh\xff\xd4#\xce?\x85\xcd\xa0e\xab\x99\xa0u\xda\x02-\xaa\xaa \xb8\x8a\xc0\xd1WhIm\xceB\xfa\xa5X\xd6\x96BiC\xbf\x1a\xa7\xd4\x13\xaeV\x01\xf4\x9e\xf2(\xde\x8c\x92\x15\x84\xf0.\x8cO \x9c\xaca\x17\x83\x1eAX'w\x83\xea*\xc9\xba#\xb8V~\xa0$\x01\xe0\x9eo\xa2\x1a#.ax\x92\xa1\xeb!\x81G\x82cco\xef\xc4\xd2\x84s\x8c\xc5\"T\xbd\x1f\x89\xa7\x8aj\xf3\x18\x87\x86\x83U\xb1FE\x0f\xfc{B\xa2\x85\xe7\x11\xd8a\x04\xf8\x16\xc4L\xb4\xf2\x99l\xde\x0dw~+`\xf9\x9b\x1ew~\xfb6\xdc9\xd6\xeb\x129\xbe(*\xa5'\xa2\xfaa\xdd2ah\xf6\x84\xda\xdcL\xcf\xadO/\xc4S\xf5\xa1b\xc6\x1a\xfdc,\n\x01\x11\x8f\xd2\x00n\xb0\x95S\xe3\x1eN\x89SIW\xc9\xb5\xb3U`\xe4\x91\xdb\xb4KM\xfb\xe8\xad4g\xf8c]\x05\xf3J\x9f\x9dL2\x15\x7fY\xa5G\xe1![Q-\x95\x1e\xb2CH\xb9\x8b\xac\x11W\x84\x8a\x88z\xf1\x88Q\xae\x14v\xd0\xa3+\x1a\xa3\xf0\xc7:*wf\xc4P\xd1H\xb5\x1bu\x1d\xb4\x93u\xb3\x0e\xe9&\xaa\x9dBc\xf2\xfa\x89\xea56\xdd\xb45\x05\x10\x1e\xa3\xfa\xc3\xc6\x819i\\\xac\xda\x16\xaei\xa1\\\x02/Wf{\x9b\xad\xcd\xf6\xb6C\x14 CuB\x03x\xc1\xe8\xd6\xd5Q\xbd\xee\xe5\xaaC}\xae\x1f\x1eQ-\xcaW\xfa\x9e\x87\xee\xf1lJ\xd3\xf5(wM}\xa2\xeb\xdcX\xbcS\xbe\xb3JSU \xd8ju\xa7%|\xa7%l\xa7E\x0f!1+q\xcfDY\xbc\x14\x173\x82\x1dH`\x1f\x12\x83\x9e\xaf\xb63\xf31V!\xae\xee\xc6D\xab\xb45\n\xa3\xcd\x14\n\xd7\xb5=\x05\xb8\x8c\xfbS\x01\xa1qw\xa6\xad{8\xb9\x8e=\xdcm\x15$\xe4P\xd3\x1a\xfdu{>g{>w\xdb\xe3\xca\"\x8e\xa6\xe5!\x17\x8bC.\xd6\xee\x8b\xc2[\xc5a\xad\x19*\x96\x121\xaeeEhR\x84\x0c\x03\xf7,\xb1\xe5w\xafj\x96\xb5\xd4\xb02\xe8$\xbex\xb1A\x06-vq\xf4\x10\xb6\xbc\x08O\x05\xb5*#(\xb9\xbc\xbdHT]\x84t{[\xec*]\xfdR1\xe5F\x8e -LK}\xf5\xb5\x025I;C\xd5\xa0\xce\xf9\xa2j\x89\xf9v\xf9hh\xd6\xb0\x02\xdd\xb7\x1aQ\xd6\xa1E\xcb\x81\x8b\xc4\x9d\xd1q\x0f\xe0\xd2\x08\x15\x9e\xd3F\xf0R\x81\xf2\xe9\x7f\x01\xcaW\xea\xc8\x17$\xb0\x08!\xe0\xb6\xaa\xa6\x83\x80z\xa0\x14\xc6\xa8\x87\x0e\xcc[4J\xc6\x01#T\x8dC\xc206\xb6KbEK\xc4w\x89\xb1\xf2\xbc\xa4\x9b\xb1M\x9b\x84&\xb6Q2\xe6\xe1\x90\xc5\xd8\xf2\xea\xc0NR\x12~n.\xa8 \xdb\x1a\xc7\x96vy\xffc\xbb\xaf\xb6\xb0F\x82\xa6[l=\x10\xafc\xef\xe1J\xc0\xe3\xf2XmS\x18\xb6oT\x90p\xe3En\x8b\x8dkQ,\xf2\xa0<\xb1\x87\xb5\xafY\xad\xcb\x92\xfdMG\xee\x0c\xefZ\xd0\x805\xbd\xba\x8b]M\xd0\x86\x03\xe8\xbd#+\x12R\x18\x8d{\xb0_\xfe\xe2^\x10\x8aZh\x1bz\xe5=\xfc\x96\xdd\xa1\xd1\x92d\xd0t:^_\x9d)\xd71\xe1|\x08\x1a\x06\xbc\xd2\x8f\xac\xf4\xe3\xca\x85O\xa9\xaa\xf8jFe\xd5\x9a\xc7\x94\x05.\x13\xa9\xec\x1f\x06*#\xca+1{|\xaa\"U\xd2\xba6\xb2\xd7\xa2\xba\xe4\x0e\x0f\xa6\xab3\n\xf5\x91\xa6\xe4\x8c\xa4Y\x177\xed\x16\xb8N\xc9\xc5\xdb\xd9\xd5\xc1\n\x07\xa81\xdc\x19X\xbbY\x84\x19=\xba\x86\xaeJ\x0cm\xed\xf2\xea\xc2\xd4\xeeC\x88\xe1\x91\xb2\xc4\x10;i\"*\xc3\x8d\xeb'ZlUB\xc4Ns\xe9.\xe5tbU\xbb\x11k\xc9f\xc2#\x88%\xc5)Y\xa0X@\xc27\xd6\xd9\x83\xeb\x12?\x1c(l\x05\x9a\xc2H\xe9\x88\x87\xb4\xaaz\x87\x83&f*S=k\xda\xfb\x19}_\n\xfa\xbe\xbcf\xfa\x8e*cI\xde\xf9\x0f\x85\xbas\xed\xee6\xf4\xfa\xfd~y\x97\xc4S\xd8\x06O\x08\x15\xf3B\xcd{\x00=8YW>'+\xcc{\x84I\xe74'\xc1\xf2zO\x029\xdcR\x17 \xdfU\x87\xd28#\x96W:#$\xe7\xe0Q\xd8Q\xfb\xf6\xe1\x96\xd2\x9fq\x7f`\x80\xf4.7\xc8+d\x82\xdf`k\x84:\xf1\xd9\"\xd1\xd8\x1ejCv>wj\x87J\xd1\xa9r\xb8\xa0K\x01\x9e!\xe5\xd3\x80\xdb\n\xf0\x8c)\xef\xfa\xf0hX\xf8\x96.\xa9\xb7\x1b\xc0\xae/\x8e\xa7\xa5@\xeeSB=\xd5* M\x06\xec>\xd1\xdcG\x905\xcf\xae\xe5U\x0e\x9b\xb3\"\xaa\xb2\xb2B\x0d\x85/\x18\x031.\xc3\x1c\xd4r\x07V\x87\x03\xe1Z\x89N\x96\xece\xeeSa\x19((x\xba\x0b\x1b\x93s\x14\x1e\xa1qY\x8d\xd3\x8b\xe1_C5G\xd1w@\xfd\x87\x0c1\x94\x9b\x0f}\xc0\xd7(\xdcR\xdf\xb5\x12\xdcC\xea9\xa5J\x8f\xea%]\x145b\x99\x9a\xffg\xaax\x99\xeb1\x0d\x94UxEG\xd4\x9e(\xb7\xea\xb1\xf2\x96ao\x00o8\xac\xdf\x89\x9c\x19\x14\xd3\xe1\xc0+\x9e\xe8\x1c\x9f3*\x8e\x8d\xb3\x83\xef*Y\x16`\x9fw\xd6 \xc7\xe7a6\x7f\x9aLU\xc8\xc8[:\xe5bT\xaf\nV~\xe8\x08B3\xe3\xf9\x9a\xd6\\M\x11~G\xdccM\xadPji\xa3\xfe5\x1d=\xa5c\xa7/\xb7>\x1b\xc7\x0d\xa6\xc6\xfb\xa2\xea\xc1\xfa(;\x8c\xf3\xa5\x08\xc0Bw8\xdd\x13\xa7\xb1\x98:k\x07\xaf\xfa\xb5p\x98\x8c\x93)\xf9\xb0^\x11@\xd2\x9e\x9dG\xbc\xfeYq\xbf\xad)vM\xc2\x8c\xc0`\xbf\xf5=Ph\x7f?\x8f\xa3/99zf\x9e\xa3\xbc\xb0\xf9\x07\x1d\x9b\x9f&\x13\x0c\x18>\\\x10\xf6\x0f\x9fl\xedf1\x06k\xd3z\xa56\x88-\xa5\xac\x96\xf6=\xfd\xd7l\xb9\xb6\xb7?\xd0@=\xfan\xc2\x07\xbe\xf7?\xe0\xde\xb7\x84\x88\xbc\xa6>\xc3\xfa\x8c\x18=\x1c\xc1\xc1\xd1\xb5\x8aB\x7f\xc8\xfa\xc8C\xfc\x81.\xcfu\x8f\xc1\xde\x9b$\xde!<\x95q\x19H\x98A\x98\x12,\xfa\x86\xd9\xb5\xc9\x14\xc2\x0c>\x93u\xd67\xd5=\x90\xdd\xb3\x0d%\xa2\x8dy9\x89\xd2#$\x80\xa7\xd4\x14W\"/R\xec\x9b}\xd8\xb2\x04x\xb1k\x92\xc4\xb3\xe84w|\xfb<\x8d\xa8\xdb\x9b\x82O\xd7/>\x80\xb9\xa4\x1e\xa8\xe5\x0d+N\xf5\xddH\x86`\x93\x95H\x12\x85\x83\xd7}\xe0\x1b\x1b\xb2\xab\xdb\xd4K\x95\xb5\xdd{\xee\x87\xab\xd5b-\xd8xCD\xbfz]\x06\x162\xc9\xce\xc0\x16\xc8\xb6\x13\xc1\x8aSzI\xf2\x1ax\xff1F\x08\xd1\x042B!\x84\x98\xed\x83\x12rr\x8c\x90\xc4bOXQ\x9f]T\xce\xc1<\xfb\x0e\xf4\xc4z\xeaw:\xed\xa5\xf2\xb5 k\x8caP2\xdah\xf3\x01\xd4\xa0\xc5\xcb)\xb3&y\xfddT\x93\x96\xa5y\x18\xf7@\xa6}G/\xd2\xb7\x06\xde\xbeP\xc7\x10\xce(\xa9\x16\niiG\x03\x05\xbep{\x00\xdf\xf1T\x85\xfd\xc9\x829\xf3Ld\x15\x16\xd6\x97)\xdc\xbdu\x9d\x11\xfcW6_r\x85\xa7\x92\x01\xeau\xb82\xa6<\xfb\xfa\x8d\x96\xc5\xe34IJ\xcd,\xfb\x81\xa2s\x11K\xc3\xf36\xf9:\x93b\xa5\xeb\xacS\xd7\xffP\x93B\xd9\xe7\x94\x11z\x14wh\x1a'\x92\xaf\xa6!%G\xf8\xf22h?c\xcd\xdc\x92}p)Y&g\xed\x92\xb6f\xd6K{\xc3S\xb2 l\x02\xaeM7f\xed:\xe5e\xd7)\xf3N\xea\x0bbO\x1c\xcdE\xc8F\x89\xcb\x03\xe1\n\xe2K\xe3L1\x81\x11\x1d\x8bF\x1d\xc6\xd2D\x0f\xc3h0\xd8\x15\x9d\"E,&Gq\x8b\x8flA\xa2]\x12I\x9c\x898P.\x80-\xcd:\xd1\xbc\xd5\x17\x8f\x91\xbb\\\xf8\xe1\x99\x89\xe2\x99H\x19\x93`\xf0Hk\xc5\xd8\x0c\x86\x10y\xb6\xb2\xdcb\xb92\xbe\\\xc2Y\xb7\x19C\x06F\xa9\xe3\x94z \x03\xb2\xc8\x1b\x9c\x11\x1a@/\x8ay\xb5\xfb\xcfd\xfd3V\x883Cf\x82%\x80-\x1e\xa8\xec\xa5\x99\x98\xf2\x92M\x19\xa9\xd5\x84\xed'\xf3\x07X\xa0\xd4\x9b\x95\x0bhU\x94r\xd6e&f\xcf\x7f-\xd9/\xb1\xdb\xbd \xc3W/)y\x19\xe2\xe3\xd91 `\xa1\xe1\x01\xc4\x9e\x8fc\xd4\xe9\x1a\"\x1eE\xdfi\xd1\x9b\xe0\x9a\xea\x96\xd9\xfa\x0e\x98,Hh-J\xa44\xdet\x8b\xa1\xdc\x1fB\x1c8\xc9yL\xd2\xa3gp BaE\x0c\xe3n\xa0\x9e\x14CQ\xb4S|\x83\xc1\xfb\xc3\xf2\xac\xe0w\xc3\x05\x15\xf5N\xb6\xc4M_pw\xd6\xc9,Iz\xda\xaat\x90\x90\"\x02\xae\xb2ks>\xc0f\x1f\xbfF\xd5\x92c\xb6\xf3\xa4\xe8\x08\xfd\x97\xea|\xd2\xa0\xe9\xc8\xd1\xec\xaeJ\xa0\xec\x86pM\x0fFl\xa9\xd2L\x12 \x84\x03\x07\xad\xaf\xf8\xde \xf0\xf3e8\x90\x7fI\x1d\x0d\x12\xd5}\x88Gj4^\xb3\xa8m\xcb\xf1\x81M>#\x18,\xdbi\x9d#\xd2m\x8dY\x1fN\xeb|%\xd0\x17\xc3J\x88\x87b\x85\xe3\x88\xfe7\xa2\x02\xae\xd6\x81\xfa\xebzQ\"KR\xea\xca\xe7\x1c\x11\xef\x17R\x98\xfd\xdb\xdb\xfda\xdd\x81uT\x1b'\xed\xedWd\xa0\xd6 \x14\xb2\x16[\xa90{\xcdu\x11:\x06@.)\"\x16\xe9\x9f\x87\xd9\x13NO=\x1f\x8f\xa1\xe3c\x12gyJ\xde2z\xedU\x89\xb7d\xa5\xac\x03/zw\xdc\x83\x8d\xf3\xa1zn\xa8\xa3a\xa2\xd8{;\xd8\xc2\xecHjb\xba\xf5\xaf\xf6\xd3\xb22\x05\xc8\xba\xf5 \xce-k\xdb\xdd\x1c\x9c\xa4F\x84\x9c\xc3\x0dw\x99\xa7\x93\x17\xda\xb7:1+\x87{\xe1m\x83r`3\xb3H\x0b\x11\xe1\xc1v\x1e\xc1\x043\x043\xca\xe8l\xee\x01/\xfb\xd4\x02\x01e\xb5[\xf7\x96\x9cI\xc9\xe0\xe8\xb0\x15\x0e\xe0\x9f\xb4dmT\xb6&(\xf3: K\x83\x1c^\xad!%\xf7\x83\xca\xe0\x0c\x04\x83\xa3\x99N\x941\xc9}\x08\xcf5\x9eC\x1fi\x00?\xd0f2\xe0\xd7O~6TO\xfb\xc2\xdeV\x81dR\x0f\xfenN\xfc\x81\xc3oNH$*j\x18\x1f\x8c5>\xac @\x0c\x9d\x9cDt\x89\xe0\x90\x90\x8f\x13\xee\x82\x1c;\xf5\xf9\xcbU\xfa\x9c$yL\xaf\xdc\xe5\xcb\xabt\xf9\x99\xac\x7f\xe4L1i@\xd7\xad\xdb\x17\xd7\xd7\xed\xda\xb9\xd3\x1b\xed\x9d\x1eS^j\xb4\xdc9E\x84M\\\xfa6\x87\x93\xcf\xc8\xbc\x14\x14\xe5'\xea\x89_n\xda\xd0\x1f[S<\xf2\nH\xa6}\xac\x0b\x025!\x0f\xad\xa9,$fGAA}\x10u\xa9FM\xd1\xd4Q\xf8X\xe4\x0c9\x84\x08w\x9bN_a\xc0G\x11%^\xe8\x97\xf8\x82\x06\x10Zy\x15&Qq\x89\xcd\xd3~\xba\xcf\x10Q\xac'e\xfc\xc8\x85\x17\xfa\x01\\x\x0cU\x18\xc4_\xc8\x1c\xae#\xf6\x99k:wB\xec;\xbeVy6\xf74\x9eEF\xf2\x92K\xa0En@\x8e\xac@.v=zm\x95j\x95\x9b7\x01\xb3\xb0V\xd4+<'c\x91\xd8\x97o\x7f7\xce<\xb1\xef\xeeR\x9433\x15\x002\\\x0cu\xf8Ue\x1a\x8e\xb7\x92\x8c\xba\xf2\x9c\xab\x84\xcc\x9ax<\xb9\x8a\xce\xadjx\x9e\x8d2\xf2\x85\x1e>jY9\x13@r\x97e\xe1\xdb\x1c-Cq\x7f\x16\xb1\x93\xc1\x01\xfd\x8a\x8f\xcb\xc4\xb9\xcdA\xfa\xbeb\xedb\x07\xb2\x9af\x17\xe9jy\x8am\x18\xa9\xc0\x94\x87\xca7W7\xb5\xa7\"\x1a\xaa\xf8\xc4\xb6\xe2\x80&pq\x1e\xa5U\xabi\xab\xf7pE\xfe^\x8a\x1a\xa3\x08x\xec\xd2\xf8\xad\xc6e\x02o\xabA0\xa6\xa5\x93\x17\x95n\x19\x86\xf4\xb1\x97\xd5z\xd2\x05A\xc3\xb2\xd2\xf1(\x1a\x17\x0e!\x9a\x81bf\xf2\xca\xd1\xe7\xc5\xa3]G\x89#l9iA\x84\x86x\xf7\xef\xde\x7f\xf0\xe0\xf6\x9d\xbb\x0fx,\xcf\xce\x10\x03ax\x1c\xcc\x9d\xdb\x83{w\xef~\x7f\xef\xae\xef3f\x0f\x1f\xec\xc1M(\xbeQ\xee\xdfa'\xd3\xde\xdd\xbd{w\xee\x0en\xdf\x0d\x80\xc2\xb6h\xea~\x00\x83\xbd\xefy\xf3\xf2\xde\xe0\x9e\xdb42\xe2(\x85\xa4\x02\xc5\x0fm\x15E\xa3\x11\x19\x0b\x01\xa3\xd6\xbb\xfa\xeb\x0b\xba\xba\x08\xde\xec\x0b\x15\xe6p\x18\xb2\xbf\xb9\x15.(\xffD\x9dz\xf1\xd2Q\x1c\xc0\xef-N\x11\xe6\xb9T\x0eCUz\x17\xc7\"g.\xa2\xf2X\x84G\x90\xf3\xd3\xd1HH\xa7\x88\x9e\xd1(\x193\xd4)s-\xb2\x1b\x03\xe7R\xe6\xb5Y\x19\xcd\xf0*\x1fi\x9d!\x16\x1b\xe1;6\xc0\xd3\xb9:\xdd \x9f\xee\x0c\xcfc9\xdd <\x02\x8cm\xda\x9abB\xe0l4\xc1I=\x84\xc9\xf6\xb6\x81![\xc0\x90\x7f\xa7\x17\xc8\x16p\xc0\x9b\x19\x8cq0\x11\xec3\xeeWQN\xea\xbf\xe3|\xb0\x17\xa2g\xd4\x02]\xc9.\xbc\x84IQaIH\xb3\x96\xec8\x18\xc4\x81\x0e~[!\xfb\x7f\xe1\x9a\xf0x\x08\x13]\x98\x8a\x15y\xe4\xc5\xa5Z\xe9\xb1\xf8\xdebp\xaf\xa0\x9b\xe0\xfah\x00\xe8\x88\x1a\xc0\x88u4\xf6+\x1c\x19q\xe1\xc8\xe4%\x9d\x0d\xc8\xc8\x94\x00O^\x11b\xb5 \xff\xb4\"\xa2\xe6\xa8h\xc9\x8d\xd5?@\xcbE\xc9K\"\xbb\x9e6\xb3\xae2\xabQ\x9eMa\x05\":LQ\xf0J9\xd3\xd81\x93\xf7V\x0c\xb7\x90\"em6\xff\x03\xe4\xaf'\xc2\xf6\xbf\x03\x038\x80y\x7f\x95\xf0J\x10\xf3\xd1\x84Q\xa3\xc6\x8d\x11\x1b9\xe3\xc7\xe7\x9c\xc1\xe4\xbf\xfd\x00{\xf6j\xda\xbfyi\n\x97\x02s\x00\xf36\x96\xf42\x80_\xafL\xce\xb4\xd1e\x88]\x86\xcd\x8aB=\x13W<\xafZ?\x9cG~R\x94}\x0c\x9a\x91D\xd2\x10\xae\xe95\x126\xd60\x93snr\xee\xae\x08\xcdF\xe5\xec($\xfc\x11fF\x1e\xf38..#\x11\x1d;Q\x07\xcf\x95\xe9b%3\xb4L\x00\xfd\x84z\xa9 T\x8a\x80H\x04\xcb\x13#\x90\x88E\xaa\xcc$|C\xfd\xf3I\x15\x86\xfa\x97f\x18S\xb95\x04o\x027A\x87\xdaH\xd7\x90PGue\x8e\x96\xa0J:\x1d\x12\xde$\x02_\xdf\xf9J\x8e\x10\x97K\xff\x0e\x1a\xdd\xe1\x00V\xa3\xc5\x18Z\n\xb1sE\xd9\x9c\x9b\xc5\xf8BW\xd7J?;\x1e%>w8(8\x1c0\x94|\xa5\x90\xf7\x99\x95\xbc[\xdc\xbc*\x15\xbf\x04C\xc0\xf63\xaf7\xb3\xf6\x03\xc4\x8c\xdd\x87\x82\xd5\x8f\x1fB\x88i~\x18n\x0ca\xe0C>\n\xc7\x88\x067Q\xb3@F\xc9\xf6\xf6\xd8R\xb3\x0e\x14\xa1t\x94\x8e\xb9\x8a\x8b\xf5\xc8M\"\x98\xe3A\x1f\xcc\xcf\x1e\xaf\x02\x98\x04\x10\x0605@R\x9c\xe7\xec\xffj\xb9z\xb5H\x7f\x93*\x11\xb4x\xb2\x04\xb6\"\x12\x0df\x81c\\\xeaWxS^q\x0eRQp.W\x88?{k\xe03V4\x1fc\x9ck\x0e\xdb\xc6\xd4\xb8\xd0~xs\xa8iA\xd6\xc2!\x15\x1c\xb6\x84\x9a1M \x14\nu\x84\xda\xb6@\xaa\xa8\x84\\!P\xb8\x80.\xa9\x80\x8e\xab\xd6\x10tb\xcf\x86\xf0\x08\"\xdc\xb1>\xbb%h\xbb\x97\xf0-\x1b\xf3\xd7w\x06\xa8\x9d\xe5\xf7\xe8(\x84m\x97rn\x86\xc2\x1f*\xee\x19\x8f\xcc\xe3\x82\x9d(\xac\xa8'5\x93\xe6y\x95\xbb\xe0&\xda\x93\x00\xce\x1b\xe7\xe5/\x7f-;aa$Z\xf8\x08\xce\x10Df\x11)\x81\x03Ht,\x82\xceo\xf2\x97\xffel\x82\x94\xcd\xb4/L\x1cNa\xc6&LF\xa1\x81Lg<\xf8\xc6\x911\xa0\xc4\x9bu=\xa2\x85#\xadC\x0f\x05O\x81\xf6z\xc3\xb1\xd2.\xc3\xed\xec\xac\xe0\x11,\xae,\xb7U\x08\xecn\xa0?\xe0cy\xc0s\xa1y\xc0%\xe5R,c\x14d\"\xce\xfc\x0c\x1e=\xc2#\xbf]L\x9b\xa1\x98\xa6[\xac\xca\x9beT0\x1e\xb3!\xfe\x89\xb4\xd1\x8b`3d\xc2T\xce\xf9 \x06yc[\xad\xf2ZIB\"-k\x01\x92\xbd\x98 \x87\x11\x1a\xcd\x8c\xab\xedm\xfd\x9a\xcf\xbb\x9e\xf2\x8cS\xcc\x88\xc7\x99\x99\x05\x93\x9c\x8cta^\x90K\xe9\x00\xb2\xaaQ\xcbi\x95ZrNj\xc5\x98\xa4:\xd9xyej\xf9\xdf\xacKz\xf9\x9f#\x86\x82\xae\xe9wy\\\xe6Z\x14\x86\xbab\x8e\xa1\x92\xc0\x8f+\x7f\xb8\xbe'&\x8a_\x1d\x0eZH\xe1\x9a1\x14K\xf2\xff }WXr\xee\xb3\x8a\xd5\xf4E\x99\x97P\xc0\x92M\x80\xb1\xee\x13\x93\xf1\xb4\xb3\xa6\xa5]\xcb\xf2\x1f\xd4\xb0\xbc\xd4\x00`\xde\xd8\xe0/\xae\xbc\xc1\xa5\x18\xc3\xa3B\x0b\x9f+\x86 2\xa2\x8e\xdf\x18\x8cu\x0c\xc9\x8b\xeb\xd9\x835U\xaev\x99\x90\xe4!\x06W\x87i\\./\xc3\xea\x19\x05\x12(\xf3\x08\xfd\xc6F\x0ce\xc0\n\xc3H\xd8\x87\x0c-\x01Z4\xaa\xac\x1a\xb68,\xca\x10\x89e\xd3\xe1\xadXv\xde\xa5f\xd7#\xd1)w~c\x91+\xba\xf3\xd2\xb9\xf6\xa5\xfeve\x0d\xac\xa4=n\xd0\x91\x94\xd3\x91\xa8V\xb6\xe8!\xa4\xa2\x84L\xea\x94\"9.\xea\x97\xa0\xe7\xc1X\xadwY\x9f\xdc\xaf\xfaY\xfcrm\x93\xe3L\xa6\xdb\xd4\x0c\xbcN!|\xd5\xe6\xa5\xe7w\x18(\x12(\xb3\xcf$\xfdJ9\x06\x13,@\xa7=}qE0H\x8a\xac\xa0k\x03\xad\x88w\x83\x06\xf0\xd5\x0f\xe0\x86\xdaKL.ZS;\x14P\xa6\x12\xca\xe8_\x19\x94A\x02\xdc\x99\xf2!\xd8\x8b6\x88\xfa\x13\x04\x17\xc9\xac\x0e\xc7\xd4\x98<\x0b\xaa\x8e#\x03)f\x8b\x89Z8\xd6\xa8\xa8\xadZ\n\xe1\xdcg3\xd5AI^\x97en\x9bT\xee\x96\xb6n\xb0\xbe\x99\xa8b!>Q\xf0\xce\xd7v\x1f\x91l\xc4\xc1'\xddS\x0f\xb0\xcc\x1e\xafy\xd6:6\xb5KD\xfbj\x87v\x95FR~f\x19\x83]\xd1\x91\xb4I\x0b\xf8\x92\\\xa6\n\x00\xe4]\xbb\x0cQ\xc3/\x18\xc2O\xd4K\x8c\xf6s\xb0\x8a\x0b\x93$\xa6Q\xdc\xa9\xf8C\xb3\x7f\xe5W\x9f\xfb\xcc\xb6\xecj(\xb7\xa7ic\xb4\xe6J5\xe6I\xad\x11\x90*0\xd9*c\x1e\xea5\xdc\x82;\xcd\x96g\xf2\xd9^\xf3\xd9\xa2\xf8\xce\xe4\xb9\xbf2x\x0c\x9c\x89\xd8\xa1\x0bc~=\x87<\x96\x9a\x88Z\xf6\xe5\x9cxJ\xcaI\x8d\xf0-O\x82\xc8\xa3\x96\x0c\xa3\xb1\xbd\xc6\x03\x1fL*t@\xde3~\\\xa7\xf0\x98g\x8dN\xe1\x11\xac\xe1\x00\xce\x89\xb7\x8b\x0c\xcfY \xe2L\xb1\x10\x04\xf1\xe2>M\xb8\xfc\xedcYZ\xd2\xd9-\x06\xfdD\xdeG_ \xf6\xacI\x03\xd2\xa6\xe9-4\xb5-\xfe&:/\x127O\x8b\xb9\xddaD\xc9\x032%-y@\xd8ArN\x19\x9bL\x1c\xf2\x80(\xc2\x87g\x8e\xb1\xe49\xbc\xc4\x11\xf7\xad9-^E\x19\x85Q/\x80\xde\xb8\x99\xd4\xa2\xd2\x93cR\x8bH\xd6\x8a/\x93\xe2\xfbEVrZ\xcdJn9M\x99\x00[\xb0\x96\xe8+\x83#O\xd2\xe842y\xb6I\x99\x8b\xf5\x14\xf7y\x99P\n7\xe1T\x13\ni\x02P#\xbbF\x05\x06\xdd\xb2k\xb8\xda/\x10d\x84\x83\x8c\xb3U\x95\xaa\xf9&\xbfo\xf4\x0d|\xac:\xb1\x11x\xa4d\x83\xed\xee\xb2\x06x,<\x82]8\x80\xb7\x82\xc7\xc3m\xb6+\"L\xdfJ\xa7\x04\xb4\x00\xf0gD\x1b]\x06`N\xb0Gp=\xe5b\xea\xdf)\xed9\xc74\x8c\x16v\x86J\xba\xf7\x1b_J\xac\x81\x02\x08\xc5\xcf\x18%0 W\xe1$\xa2kn\x10\x1f\xc2{t\xc2\xabG\x0dpy\x10E\xac\x88\xbf\x14\xd5^\xa2\xfd\xe3\x059#\x8b\xf2]\xf3\"n%\x8e\xe1\x06Q\xfa\xd0Z\xee\x00\xf8\xd8\xd6\xba\xd0\x13\x8e\xc6\xec$\xd3w\x13 \xbf\x0b\xae\x8a\xd4\xf7\"\xaa^\x98)y\x0e\xea(F6\x03\x16\x16\xa9\xcf\x19\xdd\xca+`F\xd8\xc2\x0e\xea8}\x1fG\x83o%\x15P5\xa9\xb2v\xc0\xdcJ\x169@9\x84!\x1c\x96\xb9\xb3\xf4\xf3\xdfJ\xf4*\x95\x8a\xe3\xc4\xeeC\xc8\xb8\x8bi\x86~\x92\x02\x16\xd9\xb8\x10\xbf\x8c\x049B7\x91\xb0\x80\x1e\xa3\xf1~\x00a\x9d\x82ip\xf4\xc9\x8c\x92\xc6\xf1\xde\x8a\xa2^\x15G1\xc8\xf8\x1b0UX?Q\xa8oA\xd8\xc8\x8e\xb0\xfaN\x9cp0\xa9\xe2\xa0\xc9\xa2\x848\x98b\xb2L\x86]*\x185(\x88/Ez\xc8\xa0\xf1\xab#r\xca\xcdbE9\xd1d.z\x13\xca\x8a\x08\x95|\x81\xf0k\xcb\x8bi2&\xca\x0f \xaf\"K\xf3x;%\x01,I\xc0\x98\x06[\x1a\xf5\x13\xf3iU\xf2\xea\xf2\x10\xd7BX(\n\x8b\x93]\xbf\x0c\x80J\xbe\xd4\x165\xc3\x0f}3|*\x89D\x04\xe3\xb0\xeb\xd7&\x06\x95\xb8g6\xb70\x00\xa3\x8d\xb5\xa2\xc7 +\xe5\xac\x0c\x9e&\xf2\x92\xc4$\x17\xfeK\x07\x12\xc1\xf8\xf1\xbe/\xa3\xdc\xf1\xa7\x99G\x05\xe1\x97\x92\x8b\xca\x87\xbb\xe8\x19\xbb\x03\xb9\xfd\x93 F\x9a\xee@n\xe0\x1b\xf1\x95\xc7\xb0F\xdca/\xdb\xec\xa1\x02\x08\xad<\xbc\xbc\"t\x9ce\xd3\x9e\x14\xfb\xe1\xd8Rt\x04\x14\xb5\x04V{\xdc\x99\xc0>\xa3\x9a\xf6OD\xcb\xe8\xd9\x15\x8e\xa8>W\nh\xb7\x1d\x80\x0c\xab\xab\xbb\xe5G\xa89nYV\x11 \xea\xbc\x80\x13$/\xd5\x05L\xe0\xf1c\x88\xec\xdf\xcd0\x00f\x9b\x1d\xeb\xf2\x03\xcb2\xcd\x8a\x05\x9d]\xf3\x82\xe2\xb9\xf6\xd0\xe8`\xa1^l\xed\xb5\x19]tW\xa1\x8b2 }\xf5+\x12E\xf6\x98\xa8\xd3\xa6\x90\xaf_\xa1P\x85\xb6\xbel\xb6\xe3\xcb\x8b\x0dcR\xf3%lCpP\x08&G\xf2\x19\xec\xc3\xa4\x0d\xc9A\x8c<\xe7\xae\xe8\x19f\xde\x8f\xf8\xa1\x940\xd4\x88\xd9\xa9\x1d\xf9f\xb7\x04\xb0N\xc9\xb27\x90.6\x1e\xbb%\x948\xd7&\xfb1\x1d\"a#;\xd7\x99E\xa3\x10J59;\x9b\xd98UU9\xfeTT\xe5\x04oH=y\x8c\xbf\xca\xacGa\xa1$\x8f\xf0\x87\"5&\xfc\x86\xd0\x97\xe7\xfcW5\xb9W\xe8\x04\x8a\x0bb\xd3\xa8\x9d\xa2i\xd0C\xc5\"\xb7\xeb3\xf1\xcd\xd1\x14\xfe\xbe e\x13\x88s\xee\x8f/\x92\xf3\xd8c*(w\x9a\x7f$\x89\x9bT\xcc6>@^\x18\xf1R\xf1\xa5\x88l\x1b\x93\xb3\x9c-\x9c\xdb\xa4F\\G\xa1%c\xce\x8c\x9b\xf8&\x1c\x0e|cHXX5I3~B\xc9\xbcQ\x9ed\xc3\xd0\xc6[t\xccXi}\xd8\xa0iE\xb3\xea\xc8\x8b\xe3\x9f\x96n\x99jWA\x05v\x1c\xf2(\xec4xK8(nJ\x13Y\xae\x8e\xb3\x19\x83`\xc2\x9bC3OW\xa8\xd9\xd0\x1f\xa0\x88\xc1\xa3\x8ag*\x15\x1e\xa8k\xe2\xf1\xfc\\\x82-E\xae\x94\x8d\x8a\x89\x97\x8d\x02P\xfa\x91<1\x8f\xa4\xb0\xa0\xd7l\xbf\xaaeU\xcf\x0f\xf2/\x1fq\x81F\xb2\x82\xb0\x0dg&\xa4\xab\xfarJ&R\xf0\xad\xf8\xf5C\xee\xb7\x80\xae8XXuX\xf80\xf0P\xad\x14=\x19\xd8G;C8\xb3\"^[\x99wcE/k\x92\x1e%\xe8EF\x9d\xf1r\xc7\xea\x13\x19\x7f`(o\xac\x98\xf5\xd5t;\x98\x9f\xc1\xcc\xb6\xb7\xb0\xff\x89\x0b\xfb\x8f1\x1e\xb0m*\xce\x10\x1623bc\x8c\xdc\xf4>\x9a\x8dv\xf1\xefm\x0c\x19c-h<\x16\x18>\xe4\xf5\xfd\x95\xb4\x91\xa9\x9c\xe1\x9e\x12s\xc0\x0d\xbf:N\xa5\x1a/Q\x88\x1e\x13\x15\x99f2\xe8t\x1bfl\xd4\x0f}|.\xf6\xd1\x84\x8dkR\xdd\xf1\x070\x92\xc6\xa3\xc9X\xec*&\xd8\xcd`[f\x1f\xc8\xd8\x9fg\xba\x11q\x99\x90=\x9e\x05\xbc\x8c\xfa\x8c\x1d\x00\xfc\xdf\x04\xff\xb5Md\xc1\xa5\xb1\x04#\x08\xf0\xcf\xd0\x7f\x08+\x06\x11\xec9c\xbb\xc9i\n\x95\xa1\xf3\xf1\xea\xf1n\xde\xe6N2\xc5 \x8aG\x18#\xc1\xc9F\xc8%\xee}60\xbc\xad\xa8\xb70\xba\xd1pda\x905\xff\xe6\xe6M\x8c\x03F\xd1l^SA\xb4\xd0\x8a5F\xb0 !\x9f\xf0\xe9-a\x08\xd9CX\xc2c8c\xff0J\xd0&K\x1c\xc3\x10\x16HA\x96z%\x89\xbcXwkAr\x8e\xc7\xbc\xdf\xf2\xb71\x81\x94\x9e\xbf\x93\x1f\xf2\x9e\xcf\x90v\xc1\x10\xe6-\x94 $\x83/A\xe6\xb1E\xc1(\xf6iEq\x92\"\x1b\x13\xfax\xd6=\x1e\xc2\xca\x87\x9c\x81c\x85\x8b\x86\xfff\xdcmaR8(4\x9a\x12z@\xde\x96.|\xb2pGf\xc2q\xc4(\x15\xe2\x87u\xe5\xc4>\x9cX\x85\x19\xb60'\\\xe8~\xfc\x98\x1d\xe8\xb6\x85a\x038A\xea\xba*_\xf7\xe1$%\xe1g\xf3W'BP\xdb\x1e\x82\xc7\xb7\x94\x0f\xdf\xc1 n\x92\x9d\x022b?\x8dN\xf4\xc2\xad~q'\x1c\xab\x1f\x0b5\"o\xa7\x0e\xd2\x8c\xad\xcc\x0e\xcc\xd8\x12M\xf8~x\xc4\xf7C\xe5\x83b93F \xc4\xfb\x92\xba\xec\x08\xaa\xb2\xa3\x8d\xa2\xec\x9c\x924D\xb5Fy\x9cp\xb6\x9bV\xd8\xf9\xb0\xd4\xed\x00\xc6q\x96\xeeU\x13\xd5\xbdj\xea\xea^\xc5\xc8\xc49\xf1r.\xee`\xa4f=\xba\xd1p\x1c\xff\xe1\x96/2U\xf3EV\"\xe8\xcb,k\xa1=\"\x04\x93b[\x99\xe0 Z\x01M\xe9{&\x1c\xc2\x8f\xc5\x9eMp}E\xa5\xbf\xdc\xcbxJI\xbe\xea\xd7\x9dR2\xe5\xf1h\x93\x0e\xe8\x91\xc0c\xe94y\xf3&O\x10Uz%'HR$\xe4\xebYn\x0c+\xf5\xb9-\xc5\x1cw\xab\xdeE\xa5\x9c\xd4Y\x9f\xb1My\xe6\xd4\xfe\x91\xbd}k\xa1\xc7\xa7\x9ce~M\xca\xfa\x8e\xecVg\xbf\x9b\xb3\xff\xf5\xf5\x1d_\xdb\xa1X\x94\xc2\x9c\xd5\x11\xce\xd4\xe0\x07\xd7\x94|U\xd5\xc3\x91bT1+!\xca\x14\xe1(\x02\xe1\x8f}\xb4\xdb\xf7\x8fy\xea \x9e;|\xc1\xed\xcb\x0e\xb9\xc3\x9d\xe6\xf4\xd4\xaaLXre\xc2\x92\x8d\xeb\x03\xf1xu\x9b\x0b\xe25B\xfd\x0c\xad\xffl\x970\x84i'\x90,\xbd1\xf5R.\xf8\xe0(3x\xfdb=6LIA\x0c\n\xff\xac\xe4\xf8\xd9\xd1\x1a\x9aT C\x9e\xb7I\x8f\xb7\\?\xd1\xa6(\xcc\x05y\x1cr\xedi\xf9s\x0f\xbe\x83D:n\xa2\x8d\x88\x1b+\x9b\xc9O\x0d\"\xac\xbcD\xff\xca|\x84\x8a\x05\xa55\xc3>\xf2\xfb4yI\xd6d\xfa\x9e|\xf1\xfc\xee\x94\x99\x8ev\x0d\\\x83\xdf\x9f-\xa2\x95\xc7:x\x1d\xf2|:\nn2\xa2\x9bVp\xb5\x8a\xb9\xaa\x933:\\\xa0\xf1L\x96}c\xd4%\xc2\xc3\x9c+1\x14\xe7\xde\\Q[0\"\x12J\xd1T\xa3\xbcTb\xcd\x8c\xb6\x99\x12\x01rD\xa5\xd0\x1f\x0d\xc6m\x8b\x9dr\xd5\x1e_G1\n\x9ej\xdd8\x08>?\xe1L\x9fK\x12Z\xb6\x90\x8bB)\xa2\x19#\xc90\xf1=\xa9,\xb4\")\x07\xf7\x0d\x17\x94#\xd2s2\x0c\x8c\x1f\x90\x93s\xcc\xbc\xfc\xae\xc5\xeb\x04\xdd\x95\x14\xaf\x93\xe3<#/\xc9:SJYH\x8a\xd7L\xe2k\xea\xf4\x8d\x81\xa6k{\xec\xde\xfc\xab?\xb7\xf9g\x7fn\xf3_[\xe2\xd8\xfeAl)b\x89:\x02R\xed\x9e\xdd`[\xbc\xcd\xabSi\x8e6\xb1?\xc0b\x8e\xb2xIkCgE\x99d\xf1\x91\xac\x7f\x86\xdeg\xb6\xbe\xdd\x07\x0b\xean\x12\xddx\x06F$\xd0U\x14as\x9a\x87Y\xab\x1b*\xa8\x1dE\xf1d\x91OIV\xafj_\xb4(_\xe8\xd6\xec<4\xb78 's\xf2\x8ed\xf9\x02\xf9\xdf8\x00\xc5\xa3\xf0c\x8c\x8f+e\xbbl\x11L\x85ZO\xebL\x01U\n\xd5\xa8g\xe5\xc8\x18\n\xafC\xf4\xb5\xa7fu\x84\xb1\xd8\x95\xe2\x9d\xdau~\\\xdf\xcb\x0e\x82wmR\xbd\xd4n\xca\xaex\xbbf1]\xb2\xf0nN\xac\xf2\x92v\xcd\xd4Z\xbeV^\xc8\xa5\xd0\xd6:\xb6\xf2*\xf7\x19\xba\xb9\x8ev[\xb2!\x01\x86u\xcaw\x95\x0f\x07\xe3@\xf9\xbb\xe1^X\xbf\xecfQ#\x19\x91\x97)\x8b\xb9\x1b>\xb2\x95\xc2\x15\xfe\x99\xc9L\xb0\x0f?\x1b\x11\xa9r\xd3D{\x9f\xb7s\xba\xad\x148\xad\x13\xdd\xb4;i1\xd3\x80\xb4\x1e\xd2\xe9RT\x99\x97%O\xcd\x85~\x0b\x19{(r\xd0G\x18&\x8c\xbe\xf6\xbc\xc4N\xaa\x15\xedp@V\x02\xe44\xbc\xab\x12\xa0\xa8\xc5\xd9\xa6J\x83R\xaf\x9c\x91\xfcXX\x04MD)j\x99\xb2\x9e(9\xcdY\xc5\xe1w\xe6\x14\xce\xdd)\x8d\x14_\x93V*\x83\x8ev\x82\xc0H\xf9\xd5\xfc\xf6\x99\xf0I\x8b8m\xb0\xbb\xa8\xa0o\x82\x95\x06I\xf9\x9dA+\x0c\x14d\xcb\x91\x02\x85\x0c\xdf\xb4\x0b\x00\x06uB\xa3*\xa2a\x8f\x7fl\xf7\\\xb3o\xf0Xe\xb1\xe2\xfan\x8f\xbb0G6.\x8br\xf6\x07-s\xce\x9c\x90<\x05\xbe\xeag\x00*w\xd5a\x9c\xa0\xeeE.%\x9a\xb6\x8c\xae\x8c\x07\x83J\x8dl\xd9\xd2 \x16=\xa1&@\xe4}\xdc\x19\xc0\x8e&\x855\x08\xee\xa1Nc\x8d\\A\x95\xc6V\x1a7\xb4|56\xae\x85;\x8c5\xbc\\\xac\x8f\x0e\xf9\x8f\xf3p-\xc5H.\x03\xd82\xc1N\x1f[d\x9b\x91\xf6\x8c7\xf7\xe0\xb4\xe5\x7fpU\xf9\xb5\x9c\xec\xb8\x19\xa3:\xaa\x19\xf1\xf8\xacH\xd4\xebv\xfcFxL-Y/[[%A\x8c,\xa7o\xf4\xe7\xb2\x03\xc5x\x9a\xbc\x80\xb0\xb5kJ\x0b\xf9\\\x87ia\nl\xde\x94gJ\x9c\x80\xf9\x8c \xf5Uy\xa1\x1d\xe1\x13\x8b[/H\xa9A\xe5\x13\xf0\x832\x91\xe2\xf6v\x00\x91\x87~ \x1c\x02hn6\xe7\xf9dS\xad\xfb\x84\x81\\<;\x1f\xe1\x04\xa6\x1a\x1f\x91X*/\xb6\x03\xad\x03\x9b\xe1\xe8\xfc)q.o\xe5F@\x06eT9\x92\xc4\xfe\x854\x84%.\\ \x08\x9bX6\xda\xb5X\xcd\xe4\x85\xd9,\xb5\x89A\xd5\xab\x8a/34\x15*9\x81\x9ecED\x91[\x1d\x91gfd8\xc1(\xf8\xe8\xf9\x1d7\xdb\xc0\x17W\xe2G\x0d\x11\xa7l\x86\x9d\xdc\x88\x98\x101\x80[\xe8\x83\x83\x81\x88\xe8\x93#\xde\xff,*\x98E\xady\x93\x18\xda\x1c\xf1:ff{\xc2k\xa4\x90\x86\x80\x1cF\xc0 \x81\xcd\x06r\xf6W^\xf4\xc8`\xd2\xa7 W\xa1+\x07\xb1\xe7\x97\x90\xd2\x0fJ8y\xe7\xb0\xa3\xc3\xcc\x0c\x86C\xee\xe9\xe7\xb1\xcd\x96 G\xa4]\xd8\xd7V\x9a8\x13^\x8d\xf6cg\"Y\xcc2\xdc \xc4\xcaZ\xd2\x18\x1a\x96\x06\xc4\x00\xb6\xf0\x94\x8a\xa4Y,,\xd2\xf8x\x93\xfaY\xe1p\x0c\xcb\x0c7\"\xdc\xb4L\nDDQE\xc9\xa4m3:\x89\xe9f4~l~\x00\x93o\xd3SEV\x1e'*\xb2\xea\x95\x8eY\x06B\x87\xd6\x81J8Nu\xfd\x95S\xc3\xa2\x03\x92\xd4\xd7\x12E\x9cqW\x02\xe3\xf3I+1\xbe\x12\xcb&|o7\x1b\xd8\xc2r\x90\xf9\xf66<\x82\xa4\xdcl\x13F\x83\n\xad\x9c8\xc7b,\xf8\x80\xe7X\x84h3\xe1\xe65\x031\n`\xa2\xa3G\x93oT\xd6 \x9b\x1e\xeb\xdfi\x89\xecz:\x896J\xabM\x15\x9fy}\x1c\x96\xf7\x9a\xcfR\xb9V\x0f}\x88ZOK\x06\xaf\xed\xed\x0c\x1e+(\xdfv\x12;E\xbfC[\x04<\xbb.\xedj\x024P\xb5N\xa1\xe0\xaa1 \x96\xd4\xe2Q\x0c\xb0'\x01\xaf\xa3\x13\x88'Oe\x92\\\xf4\xc6P5\x95]\x14\x04U\xac5\x1d\x98\xbf\xbb\x1e\x98v\xb2}M<\xb0\x99\x8c%.{\x84x\x16\x97\xf73\x11da\xa3S\xed\x88n\xe1\xb4'\xad\xa4\x8a\xa7\xe4\xc6\xd3\xb2\xceuO\xfc\x92je\x0d\xb6;\xb3\xb3\xdd~\x00\x9a@\xcbk\xe2\xb9\xbf}Y\x92\xd4e]\xba0\xf7\xdf~\xdet X\xb8\xc9q\x914\x89\xda\xe55MZ(R$\xb3\x0e\x86\x82V\xf8U\xd6\x1f)CT\xa3\x0cQ\xc0\x8f\xb0\xa8\x8d.\xb4\xcb\x0d\x8b\xd2\xeaa\x7f\x99q\xa2\x0b\xac\xe47\xc3\xbfX\x07\x9c\xcb\xcb*x;\x13\xf1L\x16\xf6\x1e\xce\xe7\xd1\x82\x80\xd1)\x0fTu\x00\xda\xae\xd4\x99'\xd8G'\x9a\xe7&$\xfcz-\x86\x8fo\xb6\x04X\xf0\x17\xe9\x94\xa1\xce\x91\x18@1\x1b\xeae-\xb4\xe7LT\x0d1oeve:\xca\x16\xb5(\x10@\xe1\x9e\xb7\xd0\xf3j\x02\x8f\xb0`\xcdM\xc8=\xac\xda\x87e\xf2'\x18\xa8\x0d\xfb2M7R\x84X\x94\x03HPR\xf4\x0bIbk\x17\x8bs\x9a\xf1\xca\xac*g\x0b\xcb\xben\x96P\xfa3L\x19\xa9Y\\\x03\xb1\x8a\xa3\x96B\xe7\xd7F\xa5\x04[\x958))\xa8\x93\xc9\x04\xe4\xb9%R\xcdw2\xcfN\\\xe9\x0d\x88^RA\x01\n\xf7\xeb\xd1`\xcc$T\xd4\x10z\xa1\x8c\xa7@\xecb\xc7h\xeeM\xca#3.\x08G\x1a\xf0\xf3s\xd2N\x16\xd9\x15r\xe7\xdcD\x94F\x9b4\x96\xd7\xda\x82\xf0\x8eJ\x90\xac\xa3g\x97\x19i\xdb(`\xdb\xaa]#C\xdb\x81\xa2\xba\x99\x99~\xb1RT\xee\x91\x89\xd1\xaa:\xf9E\x12\xdc\xd0\x986:2SK\xbe'\xa5v\xa3\xe2 HZ\x8a8 \xb8\x8fR\x1cy\xc4K/\x1e\x00\xffP\xb8\x97\x11\xa3\xfb`\x91e\xdaxD$\xfd,I\xa9\x9b4+>!\x1e\x1d\xdd\x1e\x07\x10\x8fn\x8f\x11\xcb\xe9ho\x0c;\x10\x8f\xf64\x19\x82\xfd\xb2 y-+\x83q\x97\x96;i\x08{\xcd6\xeb\x15\xfal\x0d1\xd0\x8f\x06\xba\x81q\xce\xf5\x85\xa8\xf1\xc1\xdd\xbao\xf0_?z5\x85\xa0 \xa7^Zq\x8a\xfb\xbb(x\xe5b7\xfa6\xed\x82,u\xe0\xdcRG\xe0\xcaK\x02\x99\xad\x0f;\x99\xe0w\x0fC\xd8K\x9fK\x86\xef\x96\x03\xff\xea\xfa6\x07\xf6\xbf\x03g\x88\xab\xd9*\x80\xa1n\x02\x973\xb9\"\xa0\x04\x16\xd8\x00\xc2\x13\x90\xf4\xb3dI\xae\xd2\x01C/K\xf3\xa2\xbe\xd4_\xc8H\xc9\xfc\x989\xe6\xc7\x14\xce\xbe\xa2\x1c\xc5U\xa1\x88\x03\xb4\xcd\xf2\xfa\x05\xe2\x1f[s!p\x13\x0b\xaf\xc9A\xfb\x93$\xceh\x9aOP\xb3\xecF\xdf\x7f28zGE6\x1b\x1e\x81\x84%F\xe8(6j\x0d\x810\x01\xc9\xcd\x818mI\x9c\xcc9\x88\x82\x04Zs\x8aq\x0bv\x14g4\x8c'$\x99)\x15\xcf-N\x11\x089D\x8f\xea\xa7\x95d\x9f\xa9gR=\x17MX9tv\xc5\xa8\x96j\xd7\xb2\xe6e(\xe5g\xb2\xce\x8c~\x89\xf2\xdar\xe3\xca\xd4\x8b\xa6k\x87\xb7\xd8E\xb4\x11\xaeN\x9d\xc8K\xcceJfQL~N\x93\x15I\xe9Zp\xbe\xee\xad\xb0\xeb\x94PE\xb4\xec2\x06y\xa9$\x88\x87Mvj\xe2\xb2\xdd F\xbd\xb2\xcax[\x8fo\xdduJk\x89\x98\x03\xe8=\x0d\xe38\xa1\xacuHb\x08c\x88\x8a\xf4\xbc)\x99$\xe9\xb4\xdf+H&\x8f\xb6\xb3\xb0\x98\xba\xab=s\x9b\xbc\x0c\xd1\x08\xf5\xeb\xb2\x7f\x12\xc5S\xaf\x8c\xbak\xff\xec\x12&!\x9d\xcc\x01\xc1f\x1f\xd0\xa5']\xd3\xe5\x11\x91\x0b\xfd\x04r\xfdq\x88\x81\xbcK\x93\xe5aL\xd35\xd7\x95*\xca\x9fv\\\xe9V(\x81\x0b\x7f\xc3F\x95\x04\x87\xfc\xda\xa4B\x14*\xdd\x1a\xcd\x08%!\x11KT\xfd\xc8\xbc\xacp\x00\x1f\x88p\xe5\xecPmA\x1e-D\xdd\xd9<\xef\x85F\xa2AHF\x99BH\x87\xf0\x9aT\xe1;\x9a\xca\xea\x06\x15\xa8\x17u\x0e4\xfb6\x00\xe2\xbd#\x01\xbc\xf0\x03xw\x05\n\xdc\x14\xfc\x90\x02\xeb0\xa1\xd2|-n\xa0\xb5\\\x1ao\x9b\x17M\xb36\x8c\xfa\x91\xf7\xe4K'\x9a\x81\x8d\xcb/\x9bt\xe1]\x15nN\xa1BgJEf=\xbe\xb1&>Jr\xb8\xa5K6X\x19\xa3L6\x80F\x0d\xe7i\xaa\xcd\x88yJ+\x8798\xfc\xd2o\x04\x89\xd6\x80\xc01\xb7\x15;T\xb2\xa8\x07\x02\xa3\x02\xcf+\x87M\x070\xa4W\x01C\\\x03\xc32\\i\xf0\x15\x04\x18\x1a\x85_\xde}\xdb\x19\x11XB\x94\x9a(Y\x1e\x13\xd5\xc9+\xe6<\x07\xc7e\xea\x11S\xcc\xd2%#P2\xdf\xf2?y7>\xcf\xd2S\xf4`T\x9d\x17\xcdG\x81\xc8\xd7\x1c\xc3>/\x06\xa4\xeb\xcao%\n\xdd\x8e&<\x1eT\xb0\xf8\x16\x08\xca\xe3I\x7f\\\xc4U\xddS\xc3\xa0aD\xdd:\xd8\x8c\x8b\xea\xa8\x90\x97\x96\xa1\xd8\xea}Q\x88 hP\xe1JCT4\xf3U\xc0\x82\xf8\xe8\x17V\x98Wt\xcba[\x8a\xf2$!\xde\x1b\x12\xc0\x0d?\x807\xeaR\xe9\x02\x01\x1d\x89x\x11\x0d\xd8\xa4\xe4o\xbems\xb5R\x1a\xf3\xfah7\x9d3o\x86;\x0cA\xee\xca\x92ig\xea\x86\xf7\xdf\x84\xb0\xd7\x82\xa1\xc4\x15C\x89\xc4P\"14\xe5\xa6\x10\x81\x97N5\xc3\x88\xf7\x8a\x04\xf0\xa3\x1f\xc0\xabo\xe7 ,\xc8\xf7\xeaZ\x90\xef\xcf\xc40\xe2\x8e_\xda\xc9\\\x1b~\xfd\x87\x91\xa8\xc4\x9f\x8e\x88\xf4Lp\xba\xcfT\xe8\x10!\xcc\xb4\xf1\x10\xcdu\x14,D\xbd\x9fg\xff\x95\x88\x84.1\xa6\x87\xec\xfa\x89x\xc6\"z\x8a\x93En}\xab@W,\xd1\x8f\xc2\x00:vr\xb1\xb5\xbc\xb9\xcbo\x1a\xa4Xv5\xf5rZD\xd7\x02\xfb\xbf\x06\xd1\x1d\"C\xdd\xf6\x02\x14\xe1\x95\x15\xb7p\x8b\xf3\xa4\\/\xd2\xe6e\x89\xde\x95\xb6\x11\x02G\x0e]\x18\xa0zI\xde%o}S\x0c\x1e\xf7r\x04\x07<\x91\x0bG\x89\x14Q\xa2\xbc9\xe07\x07\xcd|\xf9\xeaepYt\xa0 \x95s\xb8\x9a\x86\xe0\x9d\xf9\xd1+\xf3\xa3g\xe6G\x98\xa3\xcaK\xe3\x00N(\x13-b\xe5\xcdoT\xb0\x86\xb1\xe0A\xb7\xa1g\xd4\xb0V:\xec||V4\xea\xec\xf3\xb7\xe7qi\xf2\xb1w\xe6\xa8L\xe0i\x9e\xe6Eut\x1b\x9aW7oep#\xaa\x89S\xae\xcc\x85\x89\xaf\x07\xe5\xdfRg\xa1\x89\xd9\xac\xcf\xc4I\xf9[J&Z\x95\x15\xef\xff\xe6Me\x00\x15}\xae~\xb2R\x99\xa0\xda\x06\xcc\xd3\xec\x1f\x93\xe5\x8a\xaeQL.~\x0c!\x8f\x85\xa8\xfd\x1bm\xa6<\xadM\xd5Qc\xdc\\\xb4\xd2J\xcd-\xd4\x7fS\xacZy\xfc9N\xcec\xf8L\xd6\xd0\xfb\x1bl\x03\x85m\xf8[\x0f\x92\x18\xd8/\x89\xc7\x06#y\x05z[%\xf8D1\xfd\xb2\x16\x87\x16)\x1c\xf4\x86\x15cBu\x892\xa9\xd7j\xc1\xadJY\x08e4%\xce\xc1~\xb9\x0e\xcd:\xcc\x955pT\xae\x1b7\x8ey\xa6\xc48\xfb({\x8f\x9a\xf8I\xdcT\x01\xcd\xe2\x00\x16\x0c\xc7z\x7f\xff\xfb\xf1\xf1\xd1\xeb\xd7\x1f?<\xf9\xe1\xd5\xe1\xf1\xfb\xc3\x0f\xc7\xc7\x7f\xff{\xaf\xe9\x08\xb2bog\x0eJ\xa3y;\"\x18\xaa5\x91z\xb5& \x05Y([j\x88\x91\xcd\xe5\x87\xa6\xf4\x8eg\xa0^\xae\xe8\x9a\x87O\x17`tSDL\xdb\xf7bU\xc9\xb5\xb2\x04a\x94\xd9\xeck\xe5\xebb9-\xca\xb3z\x97kJ\\\x93p\x9fY\xe9\xd2\x0c\xf3\x0ex36\xdei\xec\xe9L5\x86v\xd7\xdf\xa0\xd2:\xe7*\xad\xd3\xb8\xd4d\x9d\xff\xbfM\x93uj\x87_\xa1\xee\xd3\x14XT\x7f\xad\xe2\xd1\"\x96\x0et+E\xa9\xb5*\x95Z\xab\xaa\x82I\xfe\xac>\x10\xac\xc1*VuV+\x17\x85\xcf\xca\xa6\xf0Y\xb5)|V\xb1\xdc\x870\x84\xb3X\xdc`[\x11Q2\x00\xe2\xadcF\x9c\xfc\x00\xd6\xd7\xa7\x11Z\xff)\x1a\xa1\xf5uj\x84\x84\xff\xbdM1\xb4\x8eK?}N\xb9O5\x94{\x19\x07p\xcc\xf6\xc9\xda\x81\x16\x9ft%l\xc7\xff!\xc2vn\x85\xe6\x92\x13\xb6%\x1b\xefI\xec=u/\xbby\xf1\x0d\x84\xed3'l\xef\x15\xc2\xc6n\xf5\xf38\x9bG3\xfad\xb1p\x8d\xe6\x7f\xef\xac\xe8~bWt\x1f\xc7\xa5\x83\xed\xb1\xba\xd7\xcecqC\xec\xb5\x13\xdck\x17q\x00\xe7\xd4\x0f\xe0\xe2\xfa\xf6\xda\xc5u\xee\x8a\xf74\x9c|\x86\x11\xdb\x10\xe3\xe6\x86\xb8\xb8\x82+H\xd5\x18?'\xe1\xb4\x89\xcf\xa8\xb7\xa2JRn\xea?\xe4\x89\xd7\xe9\xce\xceC\x1f\xbf\xe7^U\xe6\xbd\x00\x07 \x92\xd0\xe8\xe2\xfe*#_\x11\xf2\xb9\x13\x80\xd8\xa8K\xc3!\xfb\xa5\xc9\xde\xd1\xe8%\xcf\xe6m\xbd(9\xbe\xe5\xfa\xbai\x1d\nM_\xe1L\x82\xbb\x7f\xbb\xd1N\xa00\xc0l\xe0\x01\x02\xb3\xfe\x16\xec\xc0\x80A\xfc1W\x1b\xee\xec\xf8\xf8\x99\x89/\xc0\xcc*E\x1b\xa3\xd8\x90\xfb\x90-X}-\xd8\xa5I\xb4\\\xc5GC0e\xc1i\xe3z(\xf1V\x8d\x8a\xa1\xfcn\xad\xfc\xb9p\xed\xff#\xd6\x8b'\x8d\xc5{\xc2H\x91\x83`\"\xd4\xc9\x98\x1f\xda\xa3\xbe\xcf9\"\xfb\xfa\x959HZ\xa4\x16d\xc0\xf5\xd0m\xd9T\x05o_\x84\x07u\xe0\xd0\x08\xcf\x92gB\x01(\xd1\xc0P\xf5\x18\x8a\xf5o\xa6\xce\x87\x06\x19\xc5;E`\xaci\xfdIm\xfd\xe3\xab\xae\x7f\xd3\xfd\xba\xb1\xfeIke*\x15e\xb3E4!\xde\xc0\xde\xa68\xa6\xba\xb4\xcb\xd0\xd0Q\x1d\xa5\xeb\xca\x05\x83\xeb\xdd\xe9N\xd1Z\xeb\xdd\xa7\x91\xac\xae2\x8b.V\xa6o\x8d\xcf\x16(U\xc3\xa0.x\xc5X\x11;\xd8\x18\x92\xb8\x1c\x99\x8c\xa8|\x16\x8e\x1e\xc5`]\\\xc1b,.\xa2V\xe95h\xb8_{\x95\xa6\xab\x16\xaa\xa2\xa3sZ\x1f}\x99\xa6\xc7\x18\xe3W\x9cLi\xe5d\xc22gQ\x95d\xb1\x83\xe6\xa1\x8fw#\xfb\xe9n_\xc4\xb4\xb6\x88\xd1\x95\xd6\xef\x8fXWa\xba\xb6\x86\xdd\xd4V\x85.\xa9\xa9\xb9R\x10\x14\x0e\xf0L*\xa8\xbd2\x99\x8ea\xc8\xea\xcc\x06\x06=\xd4\xc5\x95\xb5\xa0\"\xee@]\x92\xf2hQ<\xbflH\x11\xf3=\x97\xd6\x10!\xad$\x13Le0H\xac$\x13\xc4o\xd2\x16&\xd0i\xb2n:R\xa7\xd9&z\x1db9S\xed\xd9\x97\xba\x9d\xdc\x8e\x91 \xad^\xff\x92\x9fH\xdb\xe2\x07D\xbf%\xa0\x03\xee\xd9\x8f\xcb`\xb2\xfa\xeag\xc8[je\x1e\xda\xb2\xf3Y3\xf3\xb9D\x05\\\xa0\xd6\x15\x85\x9a!\xbc\xd7H\xef\x87q\x00Otz\xd7\x0fO\x9e\xbe4h^\xdf\xb2\xf7/\x1c\xa4\xfd?\nw\xbd\x96\xfc\xa15\x8f=kF\x99\x92\x19\x8eTN8\xaa;\xeaE%\xfdK\xf9\xaf*upK\x19\xf8\xd9z\xea\x1er=\xc0!\x03\xc8\x1f\xb1\xd7pO14z\xd4..\x16ho4K*\x87\xd3\x08ut\xec\x9f&J\x18!\xa9\xa6\xef\"%o\x1c\xfb\x01\x94.\x93Jh\xc4\xfb\xf5\xf2$Y`\x85\x04\xdb\xf3z[\xb4\x06\x11\xf5\xd7\xdbx\xf4\xa4P/\xbeu\xd1\x06\xbe\xb5i\x03\xdf\xb6i\x03Y\x17\xaam\xed\x8b\x9aE%\x80\xb8\x7fT\x12\xc8\xaf\x01[\xa6X\x97\xfeK\xa4\xc4vH\xf3\xf5\x8cz6V\x04\xc4\x82S\x91\x1b\x97g\xda.\x8f\xf6\xcdFk\xa3\x87\x1acP\xe6{0\x98\xde\xac\xa6m*\xb0GOc\x1a+\x88w\x9b4\x81&G\xf1\x94\\\x90\xe9{\xf2\xc5\x010\n\x89\x7f#\xa2\xce\xddz\xf9\xe9\xbd{\xeb\x08\x1cm*l\x17\xcd\"W\x87pa\x84p\xefn\x1d{!\xa7,\xd2\x94]\xd2I!\x17;\xf6\xde\xa9\xdb\xec:\xbb\xed\xbcI^u\"\xa6\x9d\x9a\xcf\xaa\xb3R >\xce,\xac?/WY\xaa!\xe4\x9c\\ \x052\xae\xee#\xbc\xb86\xd0\xbf\x8a\xb2\x0eK\xbe\"\xd7\xd5/7C\xb8\xf7\xdc\x1b!\xc7r\xb2 \xe3\x9eK\x0f\xa5\xa9\xc3\xb1\xfc\x85Y\xbb\x04\xdb&\xc6\xf2\xba\x9f\xbe\xf2\x12\xc3\xcc\xb91\x8f\x97\xd9e\x94?\xc5\xb0\xc7}\xce\x14\xc2\x01\xe4\x98\x92|\x1fB\xea!\x7f\xd8\x8f2\xc1'J#\xe0\x88\x8e\xb5\x94[\xbd.}wOo\xf5*\x10\xc0\xe2\xf5\xad^\xa6\x8a\x1dP1\x16D\x0d+\x8f\xfd\xabA\xed+\xfb\xb8\xcfD%\x84h\xb4\xebP\xe79)\xed\xad\xb8\x08\xa1\x97\xa0\xc7\xae\x0c\xc4\xcd<\xa5\xd0j\xb3\xde\x96\xbc\xcc\xd9W\xcfD\x95(Q\xfdBW\xd7X^\x92\x92ci\xe9!L\xeaT\x14\xc7\xc4$N\xf9T\xd2S?\x90\xf7f\x8b\x90R\x12{[\xbb\xc2\x12\x83\xdaEM\xd1\x13\xebV\x00\x01\x1c%\xcd\xa8\x13\xba\xc8-\xc4\xfd\xa0\xec\xc0\x87f\x1fJ\x85X\xd86XN\xe4e\x06\xf8%\xaf\x8d\xd6,g\x8b\x0f\xa5\xfaV\xe3\x0e\xed\xc6\x8eH\x8f^\x97\xb4\xc9*\xbbV\xf5 v\x897\x98\xda\x12#k\x0b!4n\x91\x98\xa6Qe\xac.CU\xf4{\xef\xdc\xba9#\xe9\xda\xf1Lq\xe4\x82cK*\xf2\x16.8\x0d\xc0V\xf2\x13\x8a@s\x8e\x03\xbc\xd6\x11~\xa1\x14Z\xe3Z\xa2\xad\x81\x01\xf8uG\x12\xd0\x03\x86\x13]G\xc8\xd4O\xae\x1f\xd4|\x82\x9a\xf0'0\xf5\x19Ok=\xbaT\x8db\xc0d\x9fbNT\xcf`\xde\x00UOz\x80 M\xf4\xe5\xc15\xc3\xe2Z\xa1n\xb0\xa8 KP_q\xeei\x89y\xbb\x89\xaf/S\xa3\x19\x08\xe3@\\6o\xbd\xef\xc2\x92\xc2\xe9!\x1c@\x0f\x19\x1f\xd8\x87^\xd03c2#\xc1=\x8d\x1eU^\xdf\x82\xe96\x1c\x8fE\xa9\xfe\xad\x01\xba\xacn\xa3\xd2\x14\xffE7\xa3-YBJ\x99\x14\xaei\xe1E\x83gN\xaf\xc9Y\x82\xd8\x01N|\xdbg\xb2\xfe\x06\xf2\xf3\xd4iE\x97\x159\xd4\x01\xad\x8a-VM\xd9\xe9\xd4\x19?K;n\xb0\x00\"\xeb\x02\xd7p\xad\xe1\xa0\xf2\x08\xf60?\"\xc3\x14\xd8\xe7\xf9\x90\x1a\xdbAU\x03`\xcdZ\x1b\x01\x84\x03\xf0\"A\xe5\xb09_\xb4K\x8b\xd2\xb7\xbcb`b-\xc8\x9c\xba\x83\xec]t:\xa7\x1d\xe1& \x93\xca\x08\x95\x86(;}\x12\\\x8f0\xbd\xa7F\xbb;\x98\x06\x8d\xbd\xb8\xe3n\x81Tj2\\\xa7\xae\xd0\xb8|E\x0c\xfer\xb5C\x82q#\xddz\xe4yYx\xac\xdc\xbb\x18K\x85\xe9\xb2`\xe8\xbaJ\x9djL\xd4gf\x0c\xc8\x01}?(u\x7f\x03\xad\xf9\xd9\xa9\x97\x93\x9c\xbe\n\xbb\xa8\x07\xf8\xbeF\x0f\x99\xdd\x00v\x06N\xbdD\xd9\xe1rE]l\x0c\xa2\x17\xf5dR\xe4\xf4\xba\xe4\xbe/\x96\xb1\xca\x8c:\xf0\xa2&#\xa4\xd3l&I\x1e\xd7w~\xcb|\x9ex\xb4T%\xf1m/\x04X\xfeq\x07\xbd\n\xf6\xfe\x83+{*\xfaw\xa5R\xa0P\xaa\xaf\xd4\xf3K\x83\x94-\x03\x9eD\x0d\x1d\xf1nc]\xf1{\x917\xc1+\xeb\x94\xf3J\xe2lW\xaa9\x8f\x9d\xa46E\xe6\xd2\xb3\xbb\xf2\xb2\x94R\xc1\xb3@5\xb7\x19*\xe4]\xaa\xe7\xad\xcb\xea\x91/y\xb8\xe8\"l\x9d\xd1\x82l8\xb5/\xb2f:l5\xd5\xe1T\xbf\xb6\x18\xa8\xd5?\xc6ty\x95\xe2L\x94\x96\xf7\xed\x9cb\xb5z\xeb\xcf\xb1_S\xb5Z\xcf$\x0e\xc6A\x0b\x1d3\xc3@\xa2\xa0\x1b\x05\x8e\xaa\x94\xb7\xd5\xfc\xa4P\xb0\x00\x12OG\"\xe5e\x18\x7fgQc\x1ev\x913\x90\x0e\x89\x84\xcbK\x1eC\xb0t\xec\xe5\xa8\x0b\x0d\x97\xfdp\xaf\xd1.=E\xd9\xfb\xfc\xc4\xb1\xc0g!\x03\x0eM>aE\xa5\x14nu\xe6<\xba\xa2\x13r[\xda\xe2<.\x12\xe3t\xc8\xa7\xa5\x9f\xe2\x8a\xf1B]&\xe9\xd9f)`\xa6\xcc\xd2/n\xba\x9fj\x9f\xc9\xfa\xed\xac\xc3\x90\x8aC\x8d1s\x9d y\x0dFB\x1eq\xee~\xc4W\xb42lW?mH\xa9.\xdd.\xba\xab\xd1\x1a%\xbf\xfa\xc8\xcf\xba\xf7\xf7\xf2*\xebb\xe0\xbdq\x8d\xb5\xb9\xac\x9a}/\xc3\x8b\x0e\xbd\xbe$\x9dT\x18\xcb\xf0\xa2\xeb\x99\xfa\xb2\x92\x8f\xc8\xa9\x137\xa3Yc\x06p\x00ob\xee\xc2\xf2\xd5MPZF\xf1\xd5\xa7\xc3\xbb#\xbc;\xd7\xb9\xa5\xa43&jC\x1eA\xdf|\xf69Zu\x80\x9d\xd2\xfe\xeb\x90\xce\xfb\xcb\xf0\xc23T$6tV\x17\xbe]\xa5\x04\xc3\x1ecMzT\xb9\xe3<\x90_\xe7\xd1\xa2\xa3\x99\xa1\x18\xcc\xefW4l|\x8eV\x1fc\x1a-\xbau\xcb\x81.\x87\xdcM\x05\xc5\x13\x82u\xeb\xafi\xe5\xd0d\x06\x03}\x7f4\xfcL:,/\xad\x18 \xae\x80R\xac\xbfkF)\xd6dw\x94b_}\x0bJ]E\x92\xf8\x87\x13w\xab\x940\xfa\x18\xa3\x9a\xb7\x92\xbc\x0d#+[\x18^\xc9NS\xa3vY^L\xa4\x8b\xaa\xb1yJ\x81\x96J\x18\x08vlo\xedL\xd4\xf3o)\xfb_0n\x1a\xc1\x87\xa2J$l\x9b\xa1\xd2L)\xfd\x14\xdf\xde\xbc \xdb\xdb9\n\xa9\xa2AC\xa1ry]\xfa\x01\xe4\xc67.\x03P\xcb \xfd\x17\xadJ\x92vY\x16Z\xf1\xc6b\xdf\xd9\xe5Zv\x85\x16\x8f\x12y\x89q:FY\xaa\x17\xfaN\x85\xc5L\xdb?\x00\xf7\x88G\xf5\xb2F?\xaa\x97!VB\xbd\xa4\xe9&o-N%/\xae\xc3\xaf\x14\xa9\xb2x\xa9\xcaKF4R\x11\xc3\xdb\xfa\x01\xbb2\xe1\xac\xea\xf6\xf6\x04\xdf\x1e\xb4\xb8\xb6\x82n\xafM\x02\xc8P\xe3y\xc0H\xdbp\x08\xef\x84\x98\xf3\x9cad\x86/\xf04\x7f\xa1\xf0\x0c\xf9/X\xdc6\"`\xa5\x00\xda\x87\xdd5\xaf\xec\xe0\xb9*SQ\x1cZ\xdd\x98\n\x19C\xd0\x91/\xed.\x86\xcd\xc3l\xfe4\x99vpt\xa1\xf32\xbb\x00\xd6e\x9a\xab\xd9\x06\xday\x04(\xb6\x17wP\x1e\x0ea\x00\xb7`\xb7\xd8h\x16\xd2%\xcd\xa4\xb3V\x05\x9f\x9b+\x7f*\x8a\xdf\x0e\xf4Uo\x8b\xd7\xf8\xc0\x9c\x16\xbf\xf6\x0d\x1b\xed{\x14\xd2o\xdf\xb9\xbd\xf7`p\xff\xf6\xdd\xdb~P\xdc\x86G\x8f`p\x176@\xe0\xf1\xe3\xc7\xb03\xb8\x1b\xc0\x9d{\x83\xfbw\xee>\xd8\xfd\xbe\xfe\xdem\xe5\xbd\xdb\x01\xdc-\x9fc:w\x8f\xc06\xdc\xbe\x7f\xef\xce\xde\x83\xbd\xc1\x83{\xb0a0\xfd\x17\xdb\xd2\xff\x12\x9f\x0d\xee\x05\xb0\xb7w\xe7\xde\xfd\xbd\xbd\xbbE\xf3\x87\xe2s\xec\xa6x\xf3v\x00\xb7\xf7\xee\xdd\xbbs\xff\xc1\x83\xdd\x07\xbe\xda\x84e\xcby*\x7f\x10c\xad\xcb\x83\x8eP\x83!\xdc\x1e\xc0w\x90\xc26<\x8f\xbd'\x147\xcd\x13\xea\x11\xdfg32w\x0e\x8e\xbbS^\\+~\x85^\xaa\x93r\xe9\xa6\x98\x11v\xd4\xdaA\xb7\xc6\x1d\xdb\xf5\xb5\xe5\xac\xa1 \x88:RX\xb9SW\x06\xb3\xbd\xf8\x9a''Sr\x01\xa8o\xbc\x8eG\x0b\x19\xe0\xfd:\x1e=c\x7f\xbf\x16&\x8b\x8c\xdd\x12\xa1\xa3\xfc\xb6\x08\xac.\xee\xab\x81C0\x84W1>\x89\xe2l\xc5s\xe3\xe3'\xef\x93<\xad\xe6\x95\xd1\x81\xac\xa6D\x12\xee\xad\xd5\xd9a\xeb\x93y\x18\xc5\xbcma\xcb\xe4\xb7\x93\x98\x86\x11F\xa5\xe3\x10\xb8\xee\x12c\xc4S\xdd)9[D\x1dB#\x0b\x01\xe5+1\xae\x84N\xed\xb3:l\xb8\xf7\xbbZ\xff\xcdT15\xcb\x02V\xe1\xae\x93a\xb5\x90&\xa4\x93\xc4( \x1a\x9b\x8bO\x03p\xa3\xaab\x93t\x14\x1a\x97\xe1\xeae\xd5\x07\xd9\x15FW\x00\x02[\xf7:,\xda\xc4\x8c\x06,x4\x82\x05\x08\xd8\xc9Uv\xeb\x87\x18\x93\x9b\xb4f\xeexj\x06\x92<\xd5\xaa}\x19\xda\xf9\xb9\xb5\x9d\x11 \x80\x8e\x9d\x1a{g \x87\xf5\xb3\xb9e\xb3mQ\x97d\\\xd0\x84\xa7aXo\xaegX;\xd7<\xacW\xf6a\xf52\xa4\x81\x15\xe3\x07\x1c\xc0O\xef\xdf\xbe\xe9\xf3G\xd1l\xcd\xd5\xb6\x82Z:\xe6\x16}f%\xc0\x87\xc6L\x9e\x86\xe6\xbe\xb6b\x10\x85G\x05\x07G\xe11\xfe\xbd\x83\xec\x9cS\x07\xcf\x1d:`\xac\xcf6\xec\xdd\xbb{\xe7\xce\xed\xbb\xdf\xdf{\x00\xdb\xe0Q\xc6\x90\xdd\xf3\xf9\x9f\x8f\x1f\xc3^\xf3\xf4\xad.\x94h\xedCT\xaf\xc2h`\x95\xcb\xe5\x95|\xb3\xad\xaeu@J\x1b\xdeV\x82\xa5\x00\xf8\xba\xf2\xd0R&\xa2G\xbe\xaf$-\xc5f\xc5}k\xcb\x97\xac\xf7\xc0\x96GC\x85\xa8\xdel\xe7\x0c\xd2\x80[\xee*1~\xd8\x7f\xeb\xe4\xdd\xed\xa1W\xb0\x9f\x15\x90\x8d\x18ds\xf8\x1f&;\xb0\xad\xc7p \xa9\xb8\x00c\xcc\xef>\x7f\x07\x0e\xe09\x9b{\xce\xd3\x91\xa2\xd5F\xfe\x8cd\xca\xd86\xf0[\xad%\x86T\xe5%\x95p\xde\xc6\x0b\x12\x9e\xb9p^\xd2,7b]\x8c5\x87\xb2oY,\xb6/op\x02 \xf5/\x01\xdc\xe8'3t\xa65~\xc6\xf3\x93(\xde\xf9\xd6s\x96\x14\x1b\xdf+\x88\x81\xb8\xc7\xe8\x80\xc8H\x13\x94\x94\xc8\xcd\xc7\xa9\xab\xcb\xdd\x92z\xbbj\xcaj\x97>\xae\xe0_\xc7\x0e|\xc7\x08\xd5\xebv\xefq<\xf9\xbf^I\xafzC\xfe\xf1,\x0el\xc8\xe6<\x86_#:w9\xa7\xa4\xcc\xa3\xf6b\xc77\xc6\xd3\xc9\x00\x81\xe6\xf8M&\xcb\xca\x9dK\x9fQ\x842=\xec\\\xea\x1b\xd4\x9bE\xdd\x96#t\\o\x0e\xbf3\x8f\x85\x18\xc4kA\x0b\xb3\xb2\x93\x9cv\xd5|:\x9a\xaa\xd3p=\x9b\x0d\x9b/s\xb89@;Q\xf2l\xf3\x12\xda\x15+\x81\xfaX\xb1$\xa8\xb7+&\x85\x17\x81\xaa\xa4\xf5\xf1\xde\x8d\xca\xf2\xf1{?V\x9a\xe6\xf7N\xa8\xe6\xe3s\xaa\xf9\xfa\x82\xd6?oBE\xe6\x97\xdb\x87\xb8 W\x04\xea\xcb\xe6\xfd\xa7\xc9bA\x10\xd2\xfbp\xac)\x90\x81\x01b_5\x0f\xd4\xb4\x92G\x1a\xe7 \x9e\x97o\xa5y\"R\x05^hGI\xf7!\xd3\xe5{\xbb\xbb\xd3O\x9f\xf2\xe9\xfd\xdd\xdd\x1d\xf6\xefl6\xfb\xf4)\xdf\xbd\xcd\x7f\xee\xde\xbe\xc7~\xce\xc8\x1e\xfe\x9c\x91\xbd\x19~3\xc5\x9f{\xbb3\xfet\x97\xf0\x7ffc\xd3\xe0\xcc\x14\xad\x100(\xc9\xa8J\xc7.\xbb\xc1i\xb0\xfb\xa0\xc6\xeb0.\xb2wx\xb1\"\x13J\xa6\x10\x16\xed\xf4\x14c\x8f\xbc\x07\x89\x96\xb0G3\xf0\x94\xf8\x88-\xc5D\xb0\xd9\xc8\xecA\x1cE\xb4\xaf\x11\x1f\xe8\x9e\x864<>\x16\xd9F\x9bX\xa9h\xf1\x84\x14[\x83\x0c\xbb&\x9a\x1aTQP\xb9]\x14\x82M\xaa\xf7yQ\xc4\xbcz\x933\xc4a\xf5f\x86ofUB4\xe9\xb6:\xb7\x1f\xe8\x97\xe7\xce\x83\x96\xe3\x18\xa8\xc8\xcb\xc1Co\x1b\x8e\xeb\xca\xe6\x15\xc6\x0eOT\xe6\x04R\x9c\x80\xf2\xd1V\xc4\xb8\xab\x9b7\xd9\x1f\xb1\x8fJay8\xc6\xec\xaf\x98\x1dA\x95\xfe(\xeb\xf2\xca'\xfe\xed\x07\xb7\xb5\xb3\x1e|_G>\x81\x94\x0f\xeei\x90r\xd0\xc4\xc7\xbd6\xd2!k\xb9pG\xe1\x99\x0e\x15\x17\x98\xb5\xf8&\xe4\xcd\x03\x17\x0b\xb2\xca\xb2\x8c\x8d\xa7s\xc4H\x9dY\x8a\x11\xa8\x15\x03\xe4\x1c\x81\xec-\xd8?sx\x0c+;]F\x9d!\x0f\xd0\xf5\x9b-bAK\xfeX\xa9-6\xc5%n\xb6u\x06C\xd8\x194G\xbd\xe62t\xe3\xfe\xa9\x00C\x08\x07|'\x82\xf4\x8e\xae\xb6\x8dy\x01fx\xfc#\xa9\x0f\x80\xff \xbc\x06\xe8\xf6\xf6\x19<\x82\x956\x11\x00\x1b\xd6\x92\x81ttf\xe0n\x8e\xb1(\xcc\x99\xc6Q\x9c\x01 \xf3\xb1\x89\x13\x18\xc2\x02\x0e \xf3\x8e\x03X\x06p\xc6\x03\x91py\xf7!\xf3\x96\x01\x1c\xe3]\xbe\xfa3\x0d?SK\xe2{b\x92\xae\xd9{'>0\x018\x8aM)\x0b\x10\xa2\x03\xfd\xb3\x93\x94\x84\x9f\x1bO\x9a\xe7\n\xeb\xe8\xd46\n\xb6e;\xd8\x0c\xf0\x93\xc4;\xc5\xd7n\xde\x04oY\xe6\x8c\x9e0\x08Q\xb9-f~\x89K\xa7<\x16\xdf\x18\xdel\xeb\xd1\x06\x050B\x02\xb4\xd0\xb8\x04\xb2\xc8\x08Nb\x89\x0bt\x8c\xfbh\"\x96\xb6\x18\xb8a8\xdf\xba \xda\x13y&N\x10t\xba-~0\xfc_\xff\x9f\xea\x876n\xc8H\xa5\xeas\xa9\xd4_\xdb\x11 /%\x11\xa7\x98&o\xbf\xa0Ml\xdb\xc5\xf0\x08\xd2\x87\xcd\x95C\xd3\xb8GG\xf1\x18\x01\xa7r\x86\xbbZ\xfeOI\xef\xd4\x91\xcc\xdf\x19\xd4y\x83\xe2pkRyQ\x91\xa98^\x9b\xf4\x1e%\x19\xa5\\S\x93\xfc\xa3*\x08\x9f\x1de\x87q\xbe\xe4\x8a\x9f&{\x92\xda\xad\x1db\xe2\x85\xb8VE\x06\xcf\xf7\x85 \xde\xae\xec\x13\xad0\xe6\x9bak.X\xcc\x00z\xec\x0fBz\xfc\xc4\x0d\x9b\xf7\xab\xfd\xe9\x8f\xb4\xcce),\x99\xf2\x15\x06Qch\x10\xeb4\x18h\x9e%m*\x97-\xd2\x8f\x93)aB3\xdek6\x81\xab\x89\xa2w\xb3\x1d\xca\x8d\xd4\xac\x1dZiG\xa3sbk\x9es\xe0\x16\x90A\xc1\xe4\x00\xd2\xfe\x0f\xf9lF\xcaS\xab\xf95\x03\xa3\xc7\x8e\xb7\xb0\x1fe\xb5\xb7Q\x8a\x8d\xccJ\"E\xe2\xa9(\x89\xee\x0f\xfc\xc2X\xdc}\xdf\x1b\x988\xda?''\xabp\xf2\xf9\xe7d\xb1\x9eE\x8b\x05\x0fY\xe9O\xc9*%\x93Z\xedG&O0\x96t\x15\xd29k}4\xc6L\xf1\xf3h1MI,\xbe,~\xb2\xe7e\xb9\xb4)\x99E1\x91\xfb\x0bqr\x91\x84S2\xed\xe9\x14\xab\xa4\xd8a\xfbz\x0e\xa2K\xd1\x19\xda_4\x1e7\x95\xd4\xe6qF\x7f\xc9\x18#\x8716Wk\x08\x83J\x02\x9b\xced\xd4 #\x0c\xea\\t\"\xee\xdf\xd1p\xcb\xb8\xdf\x92~\x94\xb1\xfd4\xe5Q\n\x95\x97\xf8f:\x80\xc8\xcbQ\xe5\xa4\xa7;a\xb7\xb1\xdf\xdd\xbd\xaaZ\x91\xf2\x83\x8d\xd1\x81\xb4]\xb9\xd8\xbe\xb74g\xaa<\xc9\xe5;Z\x87\x17\xa9!\x10\xfa\x05\x91E\x90\x8e\x85;_\xcd\xdf\x84p\x8f\x92H\x16'\xf4\xe2\x9a\xa9\xeb\xf2\xaaX0\xb8_\x97\x818\x16|\x7f\xbf\x15\xc2m\xec\xc4.\xf72\xf0\xb8\x1a\x88\x07\xf1\x17\x9cD\xa1X\xe1\xd2\xe0#H\x1e\xfa<\x85\xe8(\xf2\xc8(\xde\xde\x1e\xfbc\xbdv\x8f\x7f!\x082-h\xebU!\xa0\xd7\xd9\x0d\x1a\xd8.v\xc1^\xfd`\xe3\x8a\x8c;\xdf_\x05^bJii\x18\x8c\xc4{\x07\xc0\x90a\x1f\x12/\xaf\xb8 9M\xae\x97g\x042\x9aF\x13\xaa\xa8\xf6*^X\x0d?\x11\xe9j\x13{\xdf?\xa8\xebF\x94\xe9\x1c7E@&\xbas\x98\xdd\xfb\xbe\xf6\xe5q\xff\x1d \xa7\x8cN\xbe\xa7\xfc@YV_`\x80\xbe\xeb\xf7\x0f\xcfHL\x0f\x97\x11\xa5$mv\x10\xb6\x81Q^%\xd1\x8f2Jb\x92b\xd1M\x8er\x8d\x0ft\x96{\xb1%\xea(\x01\"\xb88\xf6\xee\xef\xfa\x82\x03h\xbe1CA\xfdc\x14\xd3\xfbH\x07\xd9\x9e\xad\x9c\x9f\xcd\x99-85\x1b\xd4\xc0\xb6\xe8G\xf1\x9c\xa4\x11\x15J\xaf\xbb\x1a\xf3\xc0\x8a\xa3\xdd\xdd:\xb1\x06\xa12\xd0 \xd5\xec\xfe\x8am\x9fU\x7fJN\xf2\xd3Er\n\x07\xca\x0f\xaf\x97\xd1\x94\x84\xcb\x9e\x0f\xfbmC\x9f\x06(\xfb\xb3!\xd4w\n\x08\xe1\x88\x81\xb2\x8eK\xe5\xd4\x98X]7\xf9\xb3\x86O\x19\xf7\xd0#i\x9a\xa4=\xc6\xbd.\x92\x8c\xb0?\xa6$\xa3i\xb2f\x7f\xae\xc2\x9c\xdfKI\x96/Iol\x8a\xd6Y\x1a\xd1%\x01\xa1i\x8e\xbd\xbd\x81\xa8a\x81b\xab\xae\xbe\xa0$\x16\x04\xa28\xa3a\x94w\x86\xe5S\xdf\x0f \x13j\x85F\xb6?\x13 OJ\xe5\xb8)\xdaS\xe1!h\x0d\"M\xb0 \xdd\x147i{ym\x8f9q \xa8\xaa\xe2{X\xae\x93^\x89\xc7_\x14xfSJ\x9e\x15\xc5\xdd\xc4\xcb\xacu[*\x15\xce\xc3J\xaa\xc4\xa0N\x04\xdd\xe2\xaa\xd1\xd8\x0f\n\x9d?l\xb3\x86\xab\xd4\x17\xf6\x8b\xaf\x0dJT\xed]RR\xae\xdd\x00\x0e\xb5\x86I\x06\xba\x1c\xeb,zH\xb3\x11\xdf\x9d\xe0\x8aP\xd0\xcf9\xe5Uy&\x85F\xc4KQ\x15\x92\xaa\xdbf\x86\x94\xa6\x19}I\x94\xb8\x83a!\x0c\xd5NK\xcc\x12\\u\xaa\xe8\x1d\xc5g\xe1\"\x9aB\x9c\xc4;\xbc\xd9[\xe2p\x98\xcc\xf3\xf8s\xcf\xb7\xc5\xd3\x18&\"\xb6\xb5\x06n9: \x06\\*A\x02\xee\x15\\L\xc2\xe0\x99\xd7\x86,\x1c\x89\xc4*?\xc6\xc8\x1f\xcf4\xff\xfa\xc7e\xa5\xf9\x9f\xa5j\xf3\xed\xcc#<]\xb1bND\xd8\x10\xa7\xe4#bn\x13\x0c%\xd7\xe3\x06N0e\xa7\xb4z\xe45\xe7\xcb\x16B,\x02\xe7(\xfby\x9c\xcd\xa3\x19\xf5|\x08g\x94\xa4@\xe2)\x10\xc6\xf5\xf7\x10\xd7\xce\x11\xedd:;\x04\x16GU\x97\xb6q\xcb\xc8\x86\x0f\xdf>\xe7M6\x88C^\x1c\x19L\xfa\x8f\x19\xb4 &>\x92\x9b\xf6<\x8d\x84\xae\xbd\x0em!\x85\xcb\xb5:\xa8\x8cw\xc0z{[\xee\x9b\xea3\x9fW\x8fb\xcbP\x1d\x90\x0e\xfb\xea\xaa\x83\xb6\xb5\xda\xa2\x02LH\xb8\xab\xdc\x04n\x92\xa2HV\x8d9,\x99.j\xa4#\x97^\xeeF\xe3\xcf\x15\x1a\xaf\x1b0)\xb8\xa8\x9b7\xe5\x1eVh\xdf\x16\xe1l\xd1\x01\x9b\x02_\xebiHC\xb6\xd4\xa8\xf7b@\xf3v\xf9\x9a:\x12E\x8e\xa4\x05M\x95\xc8\x17\xb36t\x94\xb6\x02\xb8\xff?{\xff\xbe\xdc6\x924\n\xe2\xff\x7fO\x91\xc2o\xc6\x03|\x84h\x92\xba\xd8\xa6M\xeb\x93e\xb9\xc7\xd3\xed\xcbH\xb6\xbb{\xd8\xfa\xa9!\xb2H\xa2\x05\x02l\\(\xab\xc7:\xd1gw\xcf^#\xf6\x01\xf6\x9f=o\xb0O\xb0\xb1\x11\xe7MN\xef\x03\xec+lTV\x15P(T\x01\xa0,\xf7\xec9\xdf\x87\x88nS\xa8B]\xb2\xb2\xb22\xb3\xf2r\xef\x1e\x92F\xc7e\x8bJL\x9a\x16\xfa\xe85\x87\xe7\xd2}C.\xb8\x18\xd4\x9d\x1b\xa9\nU\x17$\x85\x7f\xb8wO\xf7\xba\xe0\xfc\xaaK\xac\x91\x81\xdb\x05\x0c6to\xd7\xf6OO\xf86F\xc3\xe7%\x83\n\xc1\x88\\\x8b\xdf\xe5\n\xe7Y(\xd7\xc9\xffRj\x15u\x1a\x0f3&\x0d vdA@\x11D\xe3\x06.7N\xeb\xb6ix]\x8es\xdf\xc8\xec\x08\xf5P\x19\xd1C\x91\xebN\x1b\xa9\x80.\x02\xd25f\xf1\xa6r\xf3,Hv\\f\xb8\xa9\xc0#\xc8>\xbbl'\x98\x99\xd1qyg\x8eK\x19\xb9\x92SB\xc5\x9fC\x81 \xdfs\x8d'\x0f\x9f\xa3\xd4<\x93 (\x87\xa2z\xc4+]\xf8\xc9[/K\xca.P5]l\xf5\x8b\x94_\n\x86r\xfaT\xd7YBd)\xa9\xd5\x9c\xda\xc91\x95\xcd\xa2\x885\x86z\xb2p\xc3j\x94G_U\xac|\x84\x11<\xdcy\xf8p\xbf\xf7\xd0\xa4/95\xa2n\xae>\x7f2b\xfe\x8dU:N\xf2#\xbb\x87d\xb6B\x9dS\xa6\xf0=(\x1f\x08\xd2\xa9\x9a\x93\xe6\x05\xf1\xa6]z\x08\x88\xb2aQm\x88a%\x80(\x07\x1ac\xa2U\x8dA3!\xcb'\xf6t\x04\x1fQ K\xff\xa5\x9dloSY\xeb\x13\x1d2F\xf7*\xfd5(\xfd\xb5[\xfa\xeba\xf9\xbb}\x17\xd2NG\x9bk\xe0\x86\x9d3\x08U \x0e\xe8!\x92CS\x9e9\xa9h\x0cz\x98\x9f\xb9\xd59}\xac\x87Bn(\xd7H\x8f\xaa\xbd\xf7\xe9\xe9\xa9*+(\xd6/l\x8b\xbe\x16\xef,\xb7XtG\xf7\x0d\x9bI\xce \xb0|\x1f\xef\xfc\xc9\xa5}\xc8#/\x1eV\xdceM\xf3<\xd4\xcf\x93\x0f \xc4$-\xe4.\x18\xc3!\xbf{\xd56\xa0\xcb\x1b\xe3n!%}\x08\xb2\xe0\xaa\x86\x04\x9d\x8e\xf2I\xfe\xa4u`2u\xfc\x93\xb1\xe3\xd2\x05Ln5FY,\xc1z2\x86K\xda\x7f[\xa4\xe0!I\xc10\xea\xf6\xd7\xc2\xb6\x96\xde\xf5\x05\xa1\xab\x86\xf3@\xf5B\xcf\x92\xd94\x17m\xfb\x8a\xce\x9d\xc7Ny0\x0d\xc0\x1a\xa9\x89\xbfL@\xb84\xaer\xae/\xa1\xe0M\xfd\xc9\xa5n\x9c\xad\xfax\xd9\xbc\xc2\x02\xdb\x99\xe6M\xd7\x13\xe2\xbb^1G\xaa\xca\xb4\x1c!Q\xb3\xcd\xd1\xd1\x05u\xc9\xa4\xe5\xdclJ\xaf>\x97\x08 \x8a-l\x8b\x8e\xa7\xb4\xad\x1f\x97\x07\x99\xa7R\xe6\xe3s\x1e+\x02\x8fi\x84\xef\x9a\x0e!\xe5\xe89`]!u\xac0J\xf9\x91\"\xc4\xcf!l\xa5\xec6\xf5i\xa9\x0d\xbb\xa4\xc0\x91\x0f\xa3\x9f\"?\xb4-\xbc\x13\xe9\xf3\x9eyI\xcd\xc1%\x0b\x1a\xdc\x9f\x92\x14>\xb1EQ@\xbc\xd8F\xd9&\xd4X\x94\xd6\xa9Z\x0c\x1a\x8a\x94\xed]\xf5\x00=\x00Lu$\x97H\x91B\\\xb9@[-u\xf2,\xc8\x1c\x06\x9a.\x88\x04\xe5p\x93\xf0\x96\x05\xc5\xa2\xad\xea/\"\xc4\x13Wmt\xd5\x07\xef1qlf\x15\\\n\xdb#\xf0\x8dDI<\x88\xed\x8f\x81\xc5r\xa4\xf4\xa46\xf7\x14\x08uf>\x80\xfa\x81\x82\xb8\x91\x81\xa7\x10\x15p\x8c\x8a\x13\xbf!\xb2\xb2?\x03;c\xd6I\xc5\xe7>\x95\x8e#\x18\xf2\x1f\xe5\x85f\x9b\xc7\xc6\xe9g\xb5\xa6\x96\xe2\xa9\xb4ow:\xb1\xcb\xc1\x81\xab\xbe`Zf\xfefX\xbc!\xdd\xd4\xf3\x03\xae\xe7\xe7\x02\xbc\xa8\xecr\x08A1\xc4\xcc\xa4\x91\x93\x1f\xb3\x85\xa7xn:\x1d}xc0jFA\xb2m\x17\x13\xddFw\xa0\xaam\x0e\x085)q6\x89\xab*p|\xd2\xf5\x82 \x9a\xbc\x0f\x13oF\xdaE\xe1m\xb1+(\xca\xd7\x98\xc5\xc6l\xa7N\xa2\xd55\xaa\xde\x04\xe7c\x97\x83\xe4\x8b\xe0\xbc\x1eSaS\x9c\xf7k\xc2]\xb8M\xc1\x974\xb9\xee\xf0+~\xde\xb9\xc5 K\x19E\xc3ev\xb9{\x13\x9bp\xf4\xb9\x8c\x0c\xbb\xde\xe1\x13\x7f\n=\xd95\x93)\x98\xffd\x910\x17Ql\xc7\x024\xa5\x9dB\x14\xe2\x9d\x02Y\xae\xd2k`J\xe8?i\xe6Bd%9\x13\x02\xe4\xfb\x17\x89\xfd\x7f\xabMrb\x8c\x1dj\xd6\\)=rU\xa1\x98$\xb3\xd2,_V\xf7\\\xce\xcbVD:\x9b\xce\xdej9\xa6\x93v\"I\x8fk\xbfr\xc9\x84\xd9\x93C\xd8\xe9\xe8/\xb20\x1a\xfa8\xe4vq\xc5\xbd\xaaQY\xb6\xadJ\x0f\xf2_\xb2B'f{\xb2^C\xc0\xa5 \x8b\x9d\x9d)\x8c`\xe5\xc5 y\x19\xa2[J_\x17\"e]\xf2;+\xe1\xa0\x9e\x12b\xa43=z\xf2\xf5\xe3\xca\x0d\x9dQ@N\xdd\x98\xffyE\x93-a\xf8\xa8\"\xd3}\xfa$\xd4\x0c\xc5\x8d5\x9f\xf1\x10*\xe2;k\xc7\xcd?qku@G\xec\x92\x18\x86pl\xf3\xcblJ\x10M\xf3\xe4\x04z$TP\x8e\xd4\x9ac`\xfc\xef\xdd\x13\xbd\x98\xdaF>\x99\xa5\x13-\x83\xc6\x88>\x0b\xdb\xa2\xf5\n%\x01\xe6\x15\x11#$\xd2N\"\xd2IS\x95\x97q\xfc\x0b\xdb\xe2u\x02\x92$\x90.\xbc\x10\xaeh\x8d\xa5\x17_Zl\\\xa8\\\x15`\xc3f\x85hw \xd6\x82\xfe\x11\xe1\x95\x19\xde!\xf8l\xe1\x91\xbf\xe3R\xf94\xc2\x01[\x8e+}_R\xa9pMQ\x05\x80:\x8dRI\xe3\xa8*\xd5\x1c\xb9\xc9\xbe\xab\x08\xc2l\x05C\\A\xbe*lic~\xc4\xf7\xe0 \x17\xf0\x86\xfc\x88<0\xe8\xb5\xd0\x0e\xc7\x91u\x7f\xdb\xa8\xec\xd4\xce\"\x07\xa0aFa\xb1\x95$\x85\x07\xc7\x1f1T\xd4\x8d\xe7\xd7(\xa5\xbb\xa8\xb8\x92w\\Q\x10\x9f\xb7\"(R\xc3\x9a\x0bM\x06q\x07\xfc\x04\xc2(\x05\x7f\xb9\n\xc8\x92\x84)\xa9\xd2a\xe5\x06\xc2_\x91\xd67\x10\xb5\x01\xd5\xa2\xb6\x97\x13\xc9\x95\x8f\xae\xc6\x91d8eb\xad&^B\xa07\xd4\x96\x01:\xe0\x0b{\xac\x1af\x0f\x99 }1\xb6\xdfo\xd3\xfe\x98\xfft!\xad\xc9\x13S\xd3\x15\xbfOi\xec\x8b] 5^wI_0\xd3\xb3\x0e\x95n\xe9\xce\xc7%\xc5 \xa0\xa3?N!Z\xa5\xc9\xe8\x8f?Yn\xa9\xb6\x9e\x1f\xa3\x8b\x8c^([\xcc\x90\xb0\xcf\x15r$\x9c\"YJ\xf9\x1dP\x92N\xa3,U\xde\x908\xa6\x92;\x0c\xe1\\\xb9%\x80\xb2\xc3\xb5\xce\x88X<\x0b\xdb\x8a\xc2,\xa4\x03\xb5\xd8m\x92\x08\x88\xca.\xdf\x99\x1e%\xee.\xbc\xe4=\xd6b7\xd8\xa5\x17\x8c\x06,lk\x12\x10/\xccVB\xa7\xb6\x8c\xd6\xdc\xf6\x8d\xc4vn\x1e:\xd7\x96\xce\xfc\xd0O\x16\x96\x0bKm\xf14\xf6\xfc\xd0r!\xd0\x96\x8a\xfdy\xad-\xe5\xb3saB\x89G\xf5\xe3\x90\x92\xeaYM\xd9\xb9\xb6\x8cS\x9b\xb5\xe3\xa2\x85/\xde\x82E\xb2\x96\x10\xaf\xf5\xcf\xafb?-]\xbcn\xa9/\x91\x08\xe6\x9f\x04\xfa\xa8\xf8\xe6\xf5\x9d\x19\xaf\xa2qm\x913d\x86{\xd3\xc68P\x808^2\x18\x91x_\xe4\x11\xc2n\x14N\x88\x00\x0dZ\xbeu\xa3\xb0\x04e=\x9e\x07\x8d\x14\x174v\x15Mrz;\x01B<|\xb3\xbe \x9fs|\x92\xd5\xba\x8e\xa2\xe5\xc5\xf3\xa7\xf8{{\xbb8\xcf\xca\xb58\xfc\x8c+\x8cQ1m\x886~(h\xc1\x7fc\xeb\x84-\x06\xe3b\x17\xe8A\x8cx\xa8\xd1-\xac\xb9+9-3#\xd2\xda\x9c\xab\x171\x89M\xd0\x05\xa1\x12\xe7\xd4*\xcd\xadq(\xfa\xb2\x83\xdd\xees\xa9\\\"\x97\xe8}\xc4\x89\xbb\xf0<.Ux\n}Z\x89\x87_=\xb1\x0b\xfa\xcf\xe3t\xae\x04\x135\xf3\x82\x84\x00v\x0b1IVQ\x98\x10\x17\x84\xady\xa8^\xc0\x96\x96\xb8\xa6\xb4\xd3\xe1\x93C.\xa4\x8b\xedm\xba\x1b\xaf\x1b\x80(H\x15q\\8\xb7\x1b\xa9\x19C8\x86`\xec=;\x17\x14\xc6D\x17L\xb1f\x90s\xe3\xb6j \xcc\xe7Z\nb\xeehYO\x9bx\xdb\x8d\xc7\xc5\xa6\xdd\x9e\xd7u[\x1cva\x97\xfdnw\xf6\x0by\x96\xed\xc4\x9c\xf8k\xbbi{;\x00P T%\x1b\xfb\xaeb\xb2\"\xe1T\x00\xa5\x08P\xae\x96\xb0h\xcd5*\xf4\xee9\x9a\xf0%\x0cy\xf8\x1fcr\x06\x07\x90\xd9\xf2\x0b\xf4n\x92\xfe.[d\x95>\x1d\xc18tK\xaf\xce\xb0\x8a\x08\x1e\xad'x\x12*\x8b\x03\x9b\x1d(e\xfe\x80\xbdS\xb8\x02\x86\xf4\xfc\x9c 1f\xa1 \xb4\xfcn\x0fY\xb1\xe2F.\xe4\xb7y\xb6S\xb9\xd4\xaf\x18\xc1T\x18\xf3Z\x9d\xd5&*\x03\xf3\xda\x17L\xd4P\xbdL\x15\x8f\xc6\xc9\xa5\x90\xc3I\x89\xa3\x17\xd8\xa1\x0d_O?\xea\xd7|T0\x97\xbc\x9c\x07\xccfV\x1cBb\xe4exT\x96\x1d3H\xc5+\xa3t\n\xf6\xb95\xbcX\xc4\x9c]Hy\xc4YnH\xaf\x1f\xf8Vmp\xd2\xb8\x18\x98Y\x83\xedCy\xe6\xfa\xcd\xb2\xe9\xac\xf4\xad\xe4\x8a4\x16\xe7\x1a\"x\x02\xfec\x88:\x1d\x07\xe2qtf\x82A\xad\xc2\xb6b8\x04Z2\xb5\xe61\xdcNlR\x9c\x9f5:8D\x89LZl\xfeY\x97eg\xb03\x17\x9d\x97K\x80\xd8F\xc9\xa7\x8aM\x9c\xf9\x11 \xe4\xbf\xc6\xbd3i\xf7\x9a\x16\xbensF\x95\x1b\xd7:\x899)}Y\xb8Ap\xc3\x0d=\x861\x8a\xce8\x13'gm\xcc\x06h\xb9\xeaA\x10\x18\x8dRY\x84,)lVD\xfb\xf5\xb8\xdcJ\xa8\x07\xbc+*+\x91c\x8d\xcb\x11\xdd\xb9\xba\xf7\xecB\xa4\xa2\xc9\x89\x0d\x0eM\xb1\xa4\xec\x8a%}\xceq\xae<\x94\x04\x85K\xbe\xa6\x9b\x1c\xabu\xeb\xefM\xf3\x93\x0eF\nf\xb8\x8a\xaa\x18m;Z\xc4cL\xdb\x02:?s\x95\xa3\xa68eR\x85\xddo\xc4T\xe0f)eC\x13a|T1?)\xdf@\xbc4GP.\xa2\x9c\xeb\xec\x0c\x15=\x14\xe5n\x9b\x00U\xa8Z\xe9.b\x1c6\xf0\xc92\x1dG\xcd\x16q\xdc\x96\xfb\x08\x0fnd\xde\x0d\x16\x94\xca9R(\xe6\xf8W-\xa6{\x15{\xab\x8dN\xf7\x9a\x1b\x80\xb6g\x7fl8\"\xf2\xe3\xc1\x07?\xe4\xa2\x1d\xd7B4\x89\xbd\x94\x9c,l\x8b\xcefE\xa6\xc0\x85\xfb\xb0\xec/!t\xf1\xf5\x92s\xca,\x1f\xda\xb9A\xf1\xb3[\xbe>0i\xcd\xc0x\x8dI$S\xed*\xf2\xe6\x9a\x04\xce[\xe7\xb00&\x1e\x94!!\x84\xd3\x12(l\xbf4G&\xa7\xfa\x14]\xb6B\xc5o$W*\xa3\xa6^\xb2\xde\xf7\x99Ho\xab\x1f`=a\x95\"\xc4~\x9c\x9f\xef0\xa2+t\xe3\xb9 \xa9\xdb\xb2\x0e\xdaLJ>S\x14\xbb\xc6\xfe\x19\x94\xe3\xd2JR\x01/\xb4EE \xa9\x9b\xdc\xed\x1b\xd1K\xaa\x9bR\xe6\x9f\x87\x81\xadM\xe5\x07\x065\x86\xaf\xbb.\xd7qF\xf3\xfc\x8a\x11\x19$D\x82\xf98:\x93vz\xf7\xc2\x0f\xa7\x9c\xba\xd1\xa2\x1a\x8f\x9cT\xf6\xa6l\x86\x8c\x84B\xe7\xfc\xfe\x908\xc2\xfb;\x16\x14\xa7\x10#\xaa\x13\xd5\xd3\x9e6\xee&\x82\x84\x94|\xbb\x9b\xa3\xd8hL\xaa6rM\xd1Q\xd8\xd2\xc5Qu\x8e\xe5\xd9\xa1\xdf\xc7\xf9,\x8e\x96\xf4T\x86\x11\xbc\xfb\xa7\xa2\xac\x1c1\xdb\xc50\xd8\xed\x02g\x97bpW\xa3M\xb4iB\x1fNc]\x84\xbaz\xa4\x8dI\xeakO\xea\x1a%\xcb\x8dv\xd0\xe5\xcf\xb9\x1bK\x0b\xbb\xa3[_\xf5@\x93\x1bQMd\x01\xfc\xac\xa2\x9c\xd6\xbc.Z3\xee9t\xb2\xce\x98\x9b\xde\x01\xfa\xe0\x14\xc6\x9b\xed\xfbA8\x97\xb8\xd9\x9c\xe7\xf1\x85\xb8 |,\xd0Z\xc7\x00\x91F\xcf&\xe9\xde\xb420\xbb\x16\x02\xe5\x8f\xf9k;\x8f(\xee\xb6Ppo\xf1$\\\x07\x94-\x97'\x18\xb2\xd9\x85\xbaA\xa9/\xcb\xb0\xc2A\xe1\xed+\x9e\xccZu\x96A\xcc*\xfd\x99;d5\xd0\x92[\xc3\xbd\xafg\xef\xe2j\xf4\x85\x8a\x0b\xcd\xb4\xb6\x05%\xaa\xc3\xe7,o_\xfb\xadf\x04\x95ru\n\xe5\nL\x95U\xdf\x86\xb2\xa8\xaaO\x95B~>?\xf6\x9f\xec\xa4\xc8\xb0\x12#H\x84\xec\xd4\x9a\xca\xe1\xf0\x13\x12\xcch\x15\xfc\xf7\xd3'\xb8\xf2\xc3itU\xa5/\xbe>\xb272\x12&_&}\x00\x7f\xc81\xcd\x9f\x16\xaeS\xdds4\xc4~\x816\xc8\x06\xf0\x00\xf2\x9a I\xdf\xf9K\x12eiK)'$W\x10\xd9>;\xc0\x8a\xaf1\x1cB\xc1\xff\xb8\x80\x03\xe0\x85\x15\xb5\x05\xf6\xfb2LI\xbc\xf6\x82[v,>\xd7\xf7,J5]\xcb#C\xfdK\xe9\x83F\xf1\x873\xf9\xa8\x88\xad&\x96\x8fJ\xda\xd2\x98\xcc\x94\xec/\xec\x8d<_\xe5#l\xb7 $\xa55f\x10\x89\xdd\x1c\x0f4s&a\x1c\x05A\x1b\xfd\x90\x0c\x1d;\xa5\xcd\x05\x84\xff\xf9r\x8a\xd2\x87\xfc\xaa\x8a_\xb4\xb7,\xd4\xf4w'\x9d\xa9\xd6p\xb4\xb7s\x84\xf3\xe1$\xf5\xd7\xe8'\xda\xf5\xc4\xcf\xcf\xe9\\\x7f?\xc8/R\xa5\xaa\x1a\x8dV\x91bQm\x15FPl\x99\xe6\\ri\xf7<\n\xc5\xe4\xd9\x9dD\xfe\xb7\xee\xb2G\xe3q\xe5bD\xab}G\xec\xb9\xe5\x92L}\x16\x9b\xa5\x99\x84\x95\xbfP\xb2e\xb2\x01\xa95(\x0e\xe6\xac\x8b\\\x98\xef\xbc\x0d\x87\xa0|\xa3\x1dD\xb5Ni\x18\xe5\xe2\xe2|\xb8M\xde\x9a&\xde\xd9\x14P\xcdGU\xa2\x9f\xc8Q\x88\xea\xd1S\xd8#\xe1\x8d\x82eA\x07R~\xab\x99F\xdfDW,W\x8em\xb4\xfeF\x13\"kA>Zz\xd3\x1eV\x8eq\x90\x1a*l\xd7\xd7\xf0\x92\x89\xef\xd7\xd6\xb8\xf0C/\xbe\xae\xaf\xe2%d\x7f\xb7~$\x93d\xd0Ta\xbb\xa1F:\xeb\xef\x07\xa4\xa9\xcevc\xa5\xd8\xbb2\x94\x83\xe4\x9fm\xc8+\xd9hq\x95\xfbwWwxys\x1b\xf2\xfc\xe8\x18\x19Ee+\x90\x0b\xf7\x07i\xeb\x07.(`3\xff.\xae\xa3\xf8T\x18\x9e5\\\x03\x91\xc7\x8f\x9db`u\xca\x97F\xdc\x85V\xf8+\x9e\x16\x83\x846h\x08\xadP\x11Z\xa2#\xb4EI\xf1H\xd3\xc0\xdaM3 \xbc\xd4\x0f\xfb\x8d\xbd\xd7\xee^\xf1\x88\xbey\x9bM]\xd7nwhEZ\xa0\x05\x8d\x13\x8fP\xe9\x98\x87\xd5\xb8'A8X\xd4\x87\xd8\x12\x0f\xa5\xd96'\xdaez\xcdbQl\xf5\xb4\x9f\xeb4\x84\xba{I\xbc/\x13\xd12\xb6\xca\xc1\xc5\xed\xd213\x1a\xf1X\x85,\xbdQ\xd5'\xc4z\x1f^\x86\xd1U\x08\x82\n\x0c\x81\x0d\xdb\xa8\xc7`\x07l\x99\x12\x15a\x1d\xf2\xb8t:\x8e\xab\x05\xdac#)\xf9(\x92\xc6\xb06)\xe74a\xa0\xd3Dh\x04\xb3\x89k#\xa9\xc0\x0ef~\x10|\xe3\xa1\x96\xce\xbb}/\xb5X-\xcfkV\x9aW\xc0z\xdc\xd9\xa8\xc7Z\x84\x95U\x98\xcc\xfek\x04+\x96f\xdc\x96:^\x98$g\x10\xe3\x0d\xbc$}MP\xce\x16\x81\x11\xe9\xabwQ\x8a\x82\x92\xfc\xeeh\xe11\x8f:\xd9\x1b\xb0\xa4\x0c\xcc\x7f\xe6gUV\x13\xd6\xfa\xc9\x08\xfa\x83\x07\"c\x03<}\n{0\x1a\xc1>\x1c\xc0@\xbc\xd9\xa5o\xfa\xbbp\x00;\xe2\xd5\x0e}\xb5\xd3\x83\x03\xd8\x15\xaf\xf6\xe9\xab\x01\x1c\xc0v\x1f\x86\xb0=\xa8\x1d\x92g8>\x852\xb0\x98\xfev\x19DU!\x7f\x13\x07h\xb4;\x19<\xa4{\xd9\xee?\x1a\xc0=L\x0f\xebH\xb6L\xe5\xa5\xb0\xfe\x9f\xff\xeb\xff4PY\xf40*\xaas{A\xc91\xac_w\xb4\xea\x06\xd27\x0d\xa4_;\x10\xd0\x0df\xa0\x0c\x06\xffV;\x1c\x98:\x1c\xf0\x0e\xdb\x13O\xae\x0f}\xacC2I\x90\x08\xd1\xbd~\xa8`\xfd\x13\xc9\xd7\x0c\xa3y\xa1Wf \xe5qY\xe5}@?t\x94}\x91\xa7l+\xf3[nuS\xb1\xa8`\xb5\x1d\x89\xcb4y?\xe7#\xde\x96\x02\xa0\xd5\xef\xbdD\xab\x01\xa0\xebe\xa7\x85'\x10q0!\xf9\x08\x1dWjt\xf2\xc5\x0cs\xf2n\xb6\"\xa9\x0f\x03\x80\x97\x91\x93\x85\x17\x1fESr\x98\xda\x92\x07\xac\x1aWZ<\xb4\xd1\x98J\xdd{{\x83G\xfb\x80f\xf9OF\xb0\xb7\xbf\xd3\x7fT2\xf8Rp\xa9B\xd0v\x95\x85\xe3)\x9a\xc7\x12D\x06gj\x9d~\xa5N\xff\xcc\x85\xb0pS\xd7\xe6\xd9\xae\xbc\xd1\x9bxh\x89\xa32\x93\xbef&\x83\xe6\x99\xf41\xe5\x85v\xe1\n4C\xa8\xd7\"R]\xaa:\x90\xef\xc3\x0f\xa4\x03\x89]~X\n\xe5@jQ\xdaH\x0d\xf7@fr\\\xc3\xbdtL\x9bS\x82@\xaf\x1a\x0eL\xb7\x12\xa4\x1623\xed\x16\x13\xe3\xafl\xb3\x1d-\x91\xeaq_\x93\x83\xd2ZqV\x83\xbb\x9d\xd9*F\xec\xc06\xde\x94\xa8X\xb1#\xec\xd1B\xb1\x1a\xb5\xf8Qj\xfa\xb3\xf6\x83\xe3\x1a\x86_\xc2\xb4\xb0\x81f\x05w\x87j\xda\xadtP\x8b\x1d\xf9\xa0{.\x02X\xc1\xd4a\x036\xac\xcc\xcc\x8e\xe1|\xa8\x07\xc6\xa2\x86yj\x82\x85\xd4\xb0\xf8E\xca\xd1\xdcX\xc6\xc7\xa8d\x1b\xe4\xa7\xf5\xc2\x7faq\x9b\x9fA\xb9`\xa8\x80\x1f\x97\xcdU\xdd\x9e[\xed\x7f\xbfHB\x87\x9e\x989k&\x98x&\xe7\x18:\x06\xd9\xba\xf12u\xbd\x84\x02>\x1e}\xae\x9a\xdeJ4\xb2\xbd\x8d\x83\xa1\xab\xb7=`bv\xdd\xc0\x90\xb1\x92F\xe6\xb4\x1e\xc3\xe0\xf7\x1f\x03o\x0bC\xef\x8cD\xca\xbc\xf2\xa8v\xf4\xa3\x12\x9d\x97\xb7\x8f\xd9\xb0\x98\xe9 \xcb[\xbeJ\x15E\xb8~\xf5\xeb\xca\xf9\x16V\xa9\x8c\x1c\x9e\x01\xb6\xc1\x0e+\x94[\xbf1\xb4,x\x8f\xf9M\xeb\x86FKL\x1bFR/\xd4S\xcf\xf2v|\xa2!\xa4\xfaq\xd5\xf3Bw*\xa0(+p\xeb\xe1\x14bLy\xd2\x92\x04\xa3\x9cR\xb7\xba\x99)e?/^\x17\x176\x035y\x1f\xcfq\xae\xcf\xcb\xac\xd1\xae#\n#\x04J\xd9T\xca9\x13\xa2j\xda\xf0\x92\xc9}n\x8b\x91\xc6^\x98\xcc\xa2x\xc9\x8c1tn1\x18\x17\xfc\x9d\xa8\xd7\xc2r\nT\xaeY\xe9E/T\x85\xdd\xbcV\xbd\x1fG!\xb5\xe1y3\xb90\x0bi[qY\x1c3\x06\x0e`\xcc\x06\x85\xd0\x857\xb9\x14qj\x96Y\x90\xfa\xab\x80@\xea/Ib\x8cw/\x06\xb2\xc8\xc2\xcb\xdcG%\x1f]\xf1\x86\xa7\xec*L\xadx\x1aWW\x93O[<\xe2\x80apl\xe1}\xe0+\x86;\xb6_ k.\xecc\xe1 \xf8\x9a\xa8\x1bEW\xb6Z\\\xe9\xf1\xa6\xb0\x01\xd58\xdd\xd1\x8e%\xc4\xd1\xd9H\xcak\xae\xaf\xc1\xc1\xc8\x82]\x98\x8a)\xe8kk\x14\xdafZ\xa9|\\\xe8\xad\x97t\x0154\xd5\xa4P\x1e\xb5\x89E\xf2\x89J\x06O\xc5\xbb\x91\\\xc3\x9cgd\x16d\xc9Bj\x80\xfd=\x12%\xc2\xe4\x1e\x0d\xb6W1\xc9\x1d\xf5\xb2&\xbd\xa8\x8e\x9d\x12\xbe\x18e<\xd3\x8fL\x1a\xcd\x81\xfcW)g\x9a\x96\x19\xf3r\xdaZ^\x14\xcaDz\x9c\\\x15\xfb\xa7~\x1e\x9e\x89\xeb+\xdd\xa4hLH\xabLB)\xb1`Z\xc4\xba\xaf\x84 \x10\xe7e\xe5\x9e\xe3\xc8\x0b\x02\xba\x0d\x8bE\x9eF!\x81\xab\x05 \xe1*\xcf\xa8\xb45\x82\x9e\xa5\xe9?U\x89f\x89:n\xd8]\x92\xfaAP\xdajj\x979d4\xbe\x00\x85\xcc\xe6W\xf2\xaa\xb9\xd2;;b\xdcJ\xb4adw\x99@\xab\x93.Q\x90\xdc\xe9\xa9\xdc~\xc5\x97\xac\x18yy0\xa5\xfd\xd6$(T\x00\\|m\x080c\xec\xb6*\xc9\xea\xbb,{\x9a\xd5\x9d\x99(\x9b\xc8\x07\x0c\x85J\xe9\x10J\xf37\xd2m;qa+V\x10I/\x1e\xb5>r\xecXY#<_\xbe\xd0\x89sc\x04\xb1\xeaYP\x7f\xa9R\x0b\xdb\xdc\xe7\x84\xc8\x10\xc5[\x04\x01p\x16B\xb8\xc4\xae`\x0c&\x95\x81\xe9U\xb8,[n\xd4\x15M\x16\xfc/\xe9\x96\xb9-f@\\\xdd\x06=#$Z\xe6i\x90\xf93\x95Q\xac\xb6\xa6l\xb1z{\x0c\x96{=\xe4D\x969\x90\xab\xc4]!.\xb7b\xb5%\x9eZ\x97\x89\x17sH\xcaBQ\x14\x1f{\x93E\xb9\xa2\x94\xe2|\x12\x93\x12.\xb4K\x8b+\xf0*bDSKU\xb9\x0din3\xda\x04@Lgz\xef\xde\x06\x8c\xb6\x9e\x15DK\x97\x10\xbd\xd9\x1c \x18\x04\x10\xd2qxV\xa9|c\xf3\xb4\xb8\x18\xc9X]+\xb7\xa4h\x84\xdb.\x97\x16\x9e\x0e\xfc\xfd3\x9a\x940`\xc7iZ93\xcd\xf5\xf5\xab\x96\xbc\xf6^\xdb\x98X\x16\x95\x18\x84\xa9/\xf0\xe2\xee\xde=\xae\xad\xd8\xc6\xc4\x0c>\x86\xb6\x1e\xe6\x8e\x95x#\xd4\x9c\x1d\xb9\xd5\x1c\xcb\xfe7\xbb\x0f\x06\x8eM\x87\xc4\x91\xd6K\x12\x7f\x1e\xc2\x10\x8bv>\xd7\xa2\xd0\x05\xdf\xc5Tr.x.\xcf\xe6:P\x13\xa4N\x9aH\x0b\xe8\xee+\xe8#\xe7\xcc\x8f\xaf\x95\xaf\xf4\xaeY\x13\x17x\x08@\xad\x07\xd6$\ng\xfe<\xab\xc9$.\x985\xbdl\xd1\xe4\xc1\xb5\xf6\x82\x8c\x0cA1\x02\x96\xd6\x15&^n>V\x9cN\xec\xcec\"]\xe5\xc6\x15\xc9\xba~\xe8\xe6a\x97\x87\\\x8c\x84\xc55\xd4B\xd1\xdd8\xa12\xa5h J\xa6\xb9*k\xc4s\x06\xa60\xa4\x87>B\x86\xb1\x14\xe8\xa7U\xacR,_\xaa\xe0m\x11\xcfn\xfc\xe8\xa1\xe3b:\xd4\xf1\x19\xcbl\xdd@U]\x9d\x02\x9cr>\xde8=\xcb\x99y\xfaG\xb9\n\x92=\x82\xfd<\x86t{\xfb\xb1#|\\-\xcf\x82\x0e\xd8\x9dN\xe8\x14\x1a\xa8\x9d}U\xae\x97\xf4(\xc2i\xc2\xb6f!K\x98\x8bE\xb9\xc4a\xd3\x06 \x0fq\xef\x82\xe5@\x87\xfe\xef\xef\xa2\x8dY(\xbc5\xf1\xec,\xdc\x06\x1e\xc3\xcd\xe32\xcb\xd8z\x8d4\x14\x1f\xe5\x1b\xc3\x9a\x15b\x8f\xc2\xe7\xe0\xa9E\x9c\x8a\xea\xa1\xba7\xe9\x93\xd9\xe8\nU\xde z\xf4\x07\xdd\xed\xf2\xcd\xe7\x12'&r\xe8\xb2\xad\xeb\x91\xbeTM:\xe7\xe7$}s\x15\x8aj\xcfI2\x89\xfdU\x1a)\xf6\xd3\x99\xe9\x83\xd7\xdeR\x0dh\xe2\x99\xea\x9e^//\xa2 iq2i\xd7\x98\x91`~4\xc76Q\xf1\x14\xe5D\xb9\x06\x86\x18\xc8\xec\xc4\x11\xccN!~kC\x0d\xeaW\x1a\x9b\xb6\x99\x87M\xc4\xc2\x14j\x14?\xf2\xd2k\x9b@\xee\xb2\xfa]\x19\x81L\xaa\x0e\x0f0\x82\xdb\x7fY3\x91\xed{r ]/g\xffS\xb9\x95\xcf\xdc\x15}\x1d\xff\x1b\xda\x0fUUs\xa4w\x03\xa3\xdc\xe9mq\x94\x9ek\x9a,xt\xfb\xe4\xc4n<8\xd3B!Fj\x85\x0b$w\xc4\xd8\x10O\xb7\x1a\xe18>C\x07'\xe1H\x91\xa1<\"\xbe\xa8\xacH\xd8\x00g\xb9\x8fv\xfc>\x1f\xfa\xd6\x16W\xf6\xb1\xf0\x03\xe5\x14r\x9f>\x19\xb4d\xc8\xd5\x9b\xf4\x83\x0b\xd24\xdaVX\xa1\xe7\xa3\x88\x0b\xd6\xf99I^E\xd3\x0c\x0dN\xd4\xa5D>G\x16+Yt!/N\xc8\xf7\xde28BnE\x93\x16\x7f]D\x88\x0e\xed\xbdAO\x83q\xc8\xfc\xb0\x80\x0dq\xb7\x18\x04\x1c@\x0cC\xcd\"\x0bSS5\\p\xd1\xa9n`\xb5\xa8\xaa'\x0f|-#\x91\xe3\xaf\x9bx3\xf2M\xe4M+ \xacjID\xce3\xb1\xd0\xc8q|\x88\x03I\xba!\xb9zG\x89@x\x1c\xc7v\xa1IB*\xad\x1c\x97\x1bz\x916\x11\x84\x9d\x87\x06q\x88\x8e\"\xb6\xcbs\xf0\xc3I\x90M\xc9\x10\xc6\xa1=\xe8\xed8g\x12\x12\xfcC\x07\xd3\x1f\x0c\x9c3\x85\xb0-W\x81?\xf1S,\xdf\x1b<\xc0P\x06{\x83\x87\xfc\xdfG\xec\xdf\x9d\xde\x1dM\xe2N7S\x10y\xcc[\x99t\xdf\xbd\xf9\xea\xabo\x8e\xcf\x8f\xde\xbc~\xf1\xf2\xabS|\xf5\xfe\xed\xf3\xc3w\xf2\xab\xda\x9d6\xe8\xed\xfdN;-[M\xbd\xaa\xf6\xd2@\x165\x07\xf3\xf5\x8a\x0c!\xab\x9e\x10+\xef\x9a\x02d\x08v\xcf-\xb6\xa0c\xff\xfdF\xd5\xe2\x02(\x9a?\xd2M\xa3\xf9<\xa87\x0ej\x18\x91&\xabJ>\xa2\xd4\xd4uy12\xfd\xbaYL\xb2K\xce\x19\xe4\xac*\xaf\xa8Y\xff\xfc#63K^\x81\x1cod\xad\x89n\xaeU\xad\n|\x1eA!2\x12\x8dJ\x0ef%l\xec\xef\xa9\x0c\xc8\x97\xc2F^\xa7\x85b'\xa7\xca~\xc8\xe2:\x94\xd1\x8c}U\x1d\x04\xdf\xbca\x83\xae@\xa3i\xd8H\x17\xa1\x18\xac\xa0\xa9\x16\x8b\xde\x19\xba\x9br\x87\x94\x1a\x10\xf9\x1c\x18\xdeQy\xa1\x8f\xb7\">\xdd\xd1\xd6%\xb9N\x90\x91&\xdc\xa3\xc2\xc2\x1d\\\xbc\xc3\xe47C\x16\x14w\x1c\x9e\x9d\x95t.\xa22\xdeZ\x1e\ny\x05%\x0c\x0e\xe9\xd8f]\xa0\x91\x86T\x1d\xc3\xd0\xa7\xb1O\xff\xd2\xe2O\xa3haT}7~\xb9\xd1\x01\xcc \x9a&\x18\xde4\n))\xda2\x1ew\xb7\x1c\x9d:4\xbf\x1cJyK\x96\x87\x98\x90\xfc\xeezE8o\x0c\x1d\xb0\xc4\xed\xaa\x977\xbae\xba\xafn\x18\xec\x86\x9b\xf8\x91~\x0f\xef\xedj\xb7\xf0#\x95\x05\xcbP\x18.\x1a\x0e\xed\xc1\xbecg\x94\xf2\xec;\xb6\xe5\xa7$\xf6\xd2(\xa6\xe8\xd3t\x94\xa7r\xf0\xb2\x1b\xa7F;\xa8\xbb\xba.h&\x8c \xa6#\xa8\xe2EH>\xa6t\x13i\x12\x91\xd3\xdd\x80m\xe3b\xbc\xcc\x87\xbd\x19\xb0%\xf5\x84\n?N\x1a\x1fh\xc1\xba\xdb3\x93\xc0=\xe9\xea\xa3\xc4\x94\xfb$i\xca%\xe8W\x14\x9dEf-\x17\xd7.B}\x04\xe5\xd02N\x81\x98\x06\xae\xf7\x18\x85\xbd\x07;\xbb;\xbc\x7fV\x1f;\xa2\xc8\x82\xce\xdf\xf4-\xf3\xc2L\\\xecd@\xcb2\xd8\xe6\xcdt\xe88\xb7\xf9\xa0\x9e<\x81~\xcf\x81\x0e\xec\xef\xed\xed\xec\xdf\xcd\xa6\xaf\x1c\xa9\xfc\xe0\x18\xf4\x8dg\xea\xc0\xe9\xceI*\x0e\xf9\xe6[Y\xa4\xf3\xeaIjd\xf1H\x03\x8b\x87<\xd1E@L\x0c^l\x13n{\xe4\xdcz'\xf6w\xf4\xd7#\nOV\xa10(\xa4\xb5\x03\xdb+\x92.\xa2z\x034\xc9\x8dl\x0b\xa3\xcd\x0b\x9a:\xf6\xcf0\xc0\xc5\xd8\xfa\x97\x7f\xc9\x87\x83\xaf\xa21\xa5Ng\x9b\xcd\x9b\xae\xf6\x0eJ\xbb\xfd\x1d&\xf5\x0evv\xf9\xbfLM:\xd8ej\xd2\xc1^\xaf\"\x0e\xf7\x1f9B\x14o\xd3Y#C\xad\xc3G\x99E\xf6\xc7\xa1\xddwlK\xdc\xc6\xbf\xf3\xe6\x96s\x06#\xb0~\xc1L\x8d\x1d\xba\xcf\xb7F`\x8d\xd9E\x0b\xfcrf1\x1d\xc1N\xcf\xe1VK\xa5\xe8\xbd\xa2\xa1\xba\xb0\xdd\x1c\xf2y\x9b\x16t\xe89\x80\x01L;`\x9d\x95\x9c\xe3\xb6\xda\xe9\x07d0n\x85\xf6\xee\x80%G\n\xed\xdd\x1d\xc7\x1cx\x8d\x8f\xe4\x01\x9d\xa2^\xd7\x1c\xda\x8f\x1e9\xb65\xf5\xd7Tl\xb0<\xad\x19\xccF\x81\x86\x1fT\n\xd5\x9b\xcc\xaeW\x00\xa0\xd5\xe4%]\xbf\x89\xd0\xd4\xb3\xe6\xe8\xaa\x81'\xb1\xdeV\x813\xe9~\x95\xea\x10\xd3\x95\x9a]\x8e\x13\xc0\x96#\xe6\xb1\xc7\x05I)|\xd1j\xe9\x99\xda(\xca\xd4of\x9b\xb7\xb9\xf5e\x86\xab\x92X\xeb\xc8\x0b\xff\x94\xc2$\n\xd7$N\x81\xa3y\x1a\xc1*\xf6\x97>\x06+\xc4)l*\xd25m\xf7\x81\xe1\xfc\xe9\xef\xe8%\xe8~O\xe5_\xaa\"t\xff\x01\x17\xa1\xfb\xff\xaaE\xe8\x87\x86\x83]}\xcf\x01\xbb\xab\x03,\x05x\xcf\xb1\xad\x97\xc7\xe7oO\xde\xbc{\xa3\x1ez\x9e\xaa\x9e*\x17\xab\xda\xab\n\x15U\xba/F\x8c>?\xf9\xe1>/b9FxXV&\x1e\xa7\xdd\x17\x8f!F\x8b\xb3) HJ\xe4\xac7\xe3h\x1c\x9fir\xa6\n.W\x8d\xed\xaa\xa7\xa3%c\xe5rP\xc7v\xa6b\xbc\xbb\xdc\xca\x1d\xefF<\x05\xdd\xd1\x80\x1b\xd8\x0d\xad\xe7B\xb9\x98{\xe3\x8c3\xb4'\xc6\xec\x93hzVX\xc0\x8c$}\xac\xcf\xb2\x19\xdf\x16\xf1\xf7\x0c\x14\xc5\x80\xf75\x1c\x1b=\x92\xff5(\x8f\xf6\xf4\xa4b_wEG\x99\xc2\xbeco\xb5\xa3\x16\xb78\xd99\x80<.5T\xe9\x00\x82\xa8\xfaz\xc2\xcc7\xab\x10Gsv\xcfaJ\xa2\x8c\x19Z{\x08\x8b{\xf7`\"\xfc\xb44\x1f>\x96\xa3@\xe1j\xe0w\x94,\xe0Z\xb0d!\xff.\xb2'\xd8\xda\xa7OEk\xfa\x05\x9a\xdcv\x81vM<\x12\xb7\xe3\xb3~\xb1\x1c\xba\xe1\x90\x01|\x99\x1c\xe7\xf7\x8ev\xaf\xc0\xe0\x12\xc2\x9a\x18\\\xce\nS.#f\x96\xec)&\x10Km\xcb\xa2\xfb6\xb7\xfa\xbf\xedT*H\xc5pmWg\x9c@ \xb6I\xb5\xdb8\x95\x92^\xe2\xdf\xf4\x94\xff\x15\xe9)\x0d\xe4j\xb0\xa3\xfa\x1dD-8\x18\xc9j7?\xb1j\xcf\xd19I\xdf\x8a\x8aof\xf5A\x92s\x90pZF\xf7\x94\x0b\x11n\xabqt\x06C\x93i\xdf$\n\x934\xce&i\xc4r\xe3\x83\xe4\xb7_.=(\xff-\x1d\xbb\xc3\xf2g\x9c\x08\x1c@\x06\x8aG\xf3\x86\xe0\xef\xdfzK\xcaV\xc7\x9b\xf5\x9e\x1f\x9d\xc2w\x07\xfdH\xf3\x03\xdc\x15\xda\x97\x9e\xe3\xf2\x93h\x8f\x1f\xad(\x0e\x08\xcf\x94\xdd]\xc7\xc5\xfdLe\x03\x177\xed\xa4,\"\x04\xecUI\xb9\xc0\xf2\x82'\xe2~wQq\xcc8:==\xc9XN\xbe\xaa\x19\xc7\xd1\xe9\xe9)eH\x9f\x93I\xe0\xc5\x1e\x9da\xd5E\xe3\xe8\xf4\xf4\x03\x15\xafx\x13ji\xe0\x930=!\x93T_\xfe\xfc\xcd\xab\xdaB6\x17c\xf1\xbb\xe8\x92\x84\xfa\xc1?\xf7R\x8fy\x11\x92\xf8eJ\x96\xfa6^\xf8\x81a\xe4\x7f~\xf7\xea\x9b\xc3 8\x8a\x82\x80L\xf4S\xa7U\x9a\xca_D\xf1\x92k\xbb\xf5\x15N \xfd\xdeX\xe5\x15\x99\xfa\x9e~\x86\xaf\xfc%\xa1b0.n\xf5\xcb\xd7\xde\x92L_GS\xf2\xca[iJ\xa3\xa9a\xd5\xdfz>]\xb1\x9f3\x92\x18\xd6\xe5m\x90\xcd}\xcd|\xd9{\xc3pN?|\xf5\x0d\x1eC\xfa6O?|\xf5:[^\x90\xd8X\xfc\xd6K\x17\xa7\xc4\x80\x0b\xb4<\xf2C\xc3\x80O?|U\x87H\xa7\x1f\xbe\xca\xfdM\x0d5\xa2,\x9e\x10\x16z\xdeP\x83n\x94\xd3\x05!\xa9\x1e\xaa\xef\xc8\xc7\xf4]\xecM.\x8fL[%\xafa(\x8e\xb2I\x0e\xbb\xbc\xe4\x86\xa5\x0b\xf7m\x0cY\xc98\xf05<\x81\xa9\x904a\xdd\xe9\xe8\xf8\xd4k\x17\xe60\x82\xe9x\xad\x18\x9d\xd2g #X\x8c\xe7\x9a\x92sd\xe7u%\x170\x82sJ\xf1\xcfu\xa7\x11\xf0c\x18\xdd\x89\xed\x0bz\xf6~\xfa\x04\x9e}\xe1\xc2\xcc\x85\x95\xe3\xc2\xc58(\xde\x05,\x07s2\x9e\x9f\xb1\xe8\xbaK\x8d/\x03R\xd6kz\xa2\xc7\x0e\\\x8c\xaf\x99\x1a\x99~~\xedB<\xbe>+\xf4\x99\xd0\x96Z7*}\xb4>9\xf4\xbd\xe1~_\xd5\x05e\x82\x954In\xfd\x9d\x07\xfff\xf9\xf4_\x8e\xe5\x93\x99\xd7pl+\x0b\x93I\xb4\xa2\xd2L\xa22o\x1a\xa7m \xdf\x84f\x01\xfcq|\xc6\xae\x00\xfa\x0f\x1c\xdbG\xef\x8f\xbf\x9b\xf5{\x15I~\x1c\x9f\x8d\xd33\xc5\x89^;\x11\x93~\xbf\x16\xf5\xf8\xa2\xea\xc4\x93\xbb5\xc4j\xbfMe\xb7^\xbe\xa1T\xa6;\x11lV\xe9-c\xae\xf6U\xab\xa8\x19\xbe\xae\xdc\xed\x04\x8ckS\xde\xae\xd8[U\xc3\xb0`M\xab\xaf\xa7\x9ct\xa8\xd6\x91k\xf6~W\x1d\xca5\x17,\xd5^\xe7\xfc\xfd\xae\xd3M\x88\xb2e\x97\xbc\xad=\xc7V\xbe:\xe7,\xb1*\xd5^\xf0\xd6T\xf8\\\xf1\xf7*\x01\xfc\x88\x1cf\xae\x8fW\x8eE\x91\x0c{B\x12\xc5\x91\xf0\x18\x8b\xf8\xfd[\xb9\xe8\x10F`\xf1\x8fp\x87\xcf\xecS\xa5\xd77\xf5\xea\xdb\x9f0\x92\xde\x08\xce\xbb\xb3r\x01\xa5\x84[[\xf5\xaa]\xb3\x7f\x9d\xa0\x8e\xc7\xdd\x98$Q\xb0&\xb6\xba\xa6\xf2CX ZY\xe6\x19\xd1\xdd\xcb\xaf\x01\x93\x15\x99 a9\xab\xdd\xc3\xea\x93\xdao\\xc\x96v5\xd9\xfaA\xb2\x0394zl\xf1\xa58!?1\x86\x163_\x8a\xac8\x0b\x12\xdao\x1cY*\xab\x8a\xe55\x1e\xb27*\xf6\xbdl\x9c\xf3\xba\x9aX\x05\xa4s\xc4\xde\xc2\x98\xaf\xe5\xc9\xe4w\xf1,p)\x0e\xdb\xc1)\xa8\x89\xb4J\x7f\xbej\xa2s \xae\xb4\xd2\xee\xb9Q B\xcb\x14\xc7\x01\xf9Y\xe7\xe1\xbc\xcf'\xfa\x1a\xcb\xe6\xa4U\xa0J\x94i\xf7|\xcd\xe4\xc9>.e\xf7\x1c\x00\xe9F\x97\x18\x94e\xe6\xf9\x9ahc\xea\x93\xe0\xc5\x03\xdf\x1b\xcd\xd5'\xbc:E\xb8\xe6\xda3\xac=\x8d\x96\x9e\xdf\x94 \xc4\xb8\x81\xe5\xc7c\xc1.>}b19)\xec0\xdc\xd8[\xc6E\xd1\xbfF\x18\xa4t\x8b)\xf9=d=Fh\xedoc\x0e\xadY\x97\x84)\x89m~\x81\xe0\xd91\x8a\xe6\x94\xc5\x9du\xc9G?\xb5\xb9P\xbf\xd5sX\x1d\x8c\xb4\xb3\xe2\xe6\xff\x070\xb1?\xda\x16\xdfw\xdb\x93\x85\xe7\x870\xb9\x9e\x04\xc4b\xa1\xea\xe9:\xbe\xb4)\x06\x1f\x087\xd0\xd0\x85\xc4\x85 -N\xb0d\x08\x13;6S\x03P\xf7e#Xp\xfc[\x19\x9f\x1f\x9f\xc4\xc4\x94f[<75\xf4\x08\xc2B\x19\x1d=v \xb3\xc3q\xd4\xe9\xe8\"\xc8\x8a\x87n\x12\x1e\xe1&p\xd4p\xad\x9a\xde\xde6\xf6\xb6)\xfe\xea\xb1QF\xac\x1c\xe8\x7ff\xaba \x9c\"\x1c\xa7\xf2\n|\xb9\xd8)\\\x83Rm\xd0I\xa0\x12\xddS\xad\xb7~\xedJ\x9d4\xc2n-\x05S\xab\xc2\x85t\xcf1S\xb4\x8d?X\x184\x84\x01\xe9\x9e_\xd1\x02\xe2t\xcf\xd7,F\x1d\xe9\x9e',{\x04\xe1+l\x13\x86y\xa4{>\xe1\xc6\x94\xf4\xa0xe\x13\xd4]\xd4\x8e\xfcu\xbb\x91\xbb\x86\xc8g X\x9a\xb0{\xae\x0d\x05\x0f\x18\xec5\x9f\x14\xde\x90\xf39\x19\x8e\xdf\xfac\x17\x03M\xb2\x00\xf6bc\x15\x87\x1fL\xd0\x88\xe7\x82\xeefd\x1e\xa6\xe0\xa7 f\xaa\xa9\xa4\xfc \x9c_\xa2%\xd5A[\xe6 $!\xbd\xf9,<\xbf\xd2zGV\xaaM\x87\xba\x84\x82\xf2c\xe0\xca\xc5\xd3\x8ec\x11\xe6\xa1\xf4<~\x8d\x07L\x1f\xcf\xe6\x13\xfe\xfb.\xd9\x80\x93\"\xf3\xed\xadO~g\x88y\xc39\xfa\x87\x0c\xfd\xfb\x14\xbfC\x17\xb6L\xe3m7N>\xbe\xfa\x89\xb4X\xbf\x86\xb5\xbb1\xce\xbf:o\x85\xc9(V\xfc\x12\xf7\xfaq\xed\x86\x9d\xf2\xa8I\xc7.\x88Ma\xb9`\x9d/,\xc7\xc5t\x14\xae\x1c\xd5\xbaU\x14\xa3\xd4F4a\xed\xe6\x98\"\xfeT\x88K-\xd0O\xca\xf1\xb4\xcb_\xe6\x7f\xdd\xb8\xec\x107O\x92\xa9\xf9r\xce\x0e\xff\x92O^\xf6&\x91U\x97\xe5l\xe5\xebJ\xe5\x85\\\x991\x8a\xc5\x80\x9c\xb2-\x8f=\xd8\xddw\xecc\xd9\x86V\x1d\x1f [\xc4\xfc\x16\xa2\xdcO\xb6\x88uu\xac\x0b\x97-\xac\x8f\xa8\x0c5\xd2\x8a\xa9\xec\xca\x19\xf7\x06\x15\xb0\xca\xb5F\xe5\xd4\x83\x94\x92s\xe9\x07\xd9\x18z\x16\xf3?\x87\nL&R\x08_\x0e\xe3<\xf0\xa8\xa7\x96a*\xdfW|\x1e\x98\xb8>\x14\x12Jy\x9d\xcb\xfb\x08\xd1\xa5\xce.\x03\xca\xd6\x89L\x85\x90\x8f\xd3\x88C\x8e\x12.\xcd\xa4\xa0\xc6x\x1a\x8f\xab\xd8%\xb8\xc2\"];?Q\xf0z\xf45\xc6[\xc8\xb3\xf33&\x05KNx\x89\x8c\xcd\xe7]*s\xfe\xd4\xe6\x828\xc5\x93\xed\x18\x97\x13\x7ff\x94\x83\xe6\xc1\xe9Q\x8d-\x1b\x9e8.\x04v\xd0\xfd\n:\x10t\xbf\xc5\xff\xbf\x80\x7f\x86\xadK\x15!\xdf\n\xa6\xe8\xb8\xf41\xb3&\xb5eZ\xc1\xad\xdd\x1f8\xb6\xfcJD\xa3\xcb\x0d\xddY\xc7\xa7\xa5.%z\xa3\xce\x8d\x82\xa7i\x91\x05\x83\xf4\x93\x8e2\x81\xa4z\xea\xb9\xb9\xb4\xef\xb0\xe8\x9bzD\xab\xc0\xa9\x18\xae\x8dl\xd3\xd6\xa5S;j\\\xef\xa6a\xf3Q]\xd9\xf9\xe6\xc8\xd7\xed\x98'\x93i\xc0S\x05\x92\xf6%\xd3\xd4\x0fv\x1fJV\xf0\x95\xbe\x8f\xbb\xcc\xc0\xb9\x8b;\xc8~#\xa3E\xdd\xb4\xbc h\x9a\x92\xcc\xaa\xeaO=F\xb5L\xf6BxsQ\xaf\xbe\xf1y\x15\xb3\xca&j/\xa9\n::\xd6\xdc'\xcaO\xa4\xb7\x9b\x93\x1f\x8a\xe8\x86\x14\n\xf4YSZN\x8f\x91\xf6zV\xb4\xb0\x82\x11D\x9dN3\x07\x98\xd4\xa4p\x10O\xc8(/#\x81tov:n\xa1-\xa3\x18\x81$\xb2\xfd\x08\x01;\xa6\xacE\"\x98\xf4\xb1w\xc6(\xdf\xf6vFKb;l\xe2\n\x8dB3p4\x97\x9a\xd2\xd6\xbb1o\xf9\xa8\x8bG\x97oG\xddu\xdb\x83%\xf6&\x8d{\xf7\xae\x10\xdd\x8c\xc5\xfe\x06X\xbc9nUW\xbd\xd8vP\xa3\xcd\xd3\x88\xb7P\xbf\x02>[\x81\xd8\xf6\xebV@\"A\xf8\xf3V\x97\x83L\xe9\xa5N\x9dgp)\xdd\x1c\xa0\xda^\n \xc84<S l\xc4\xe5\xb6\xa6m\xef\x97m\xe2\x81\x8d\x9fIN\xb38Z\xdaQ\x83\xad\x0c;7\x07F\x90\xe8ma[[\xd6\x17\x01T\xb6\x8a\xb4\xe3\xaa\x86Y\xe8\xcf\xd5\xf7z~A\x02\x9c\x9e\xd8\xa0g\xbf\x06\xa6\x90\x1f\xb9MP\x85:\x9f\x00\xf10\x0f\x80\xb0\xba\x00\xe2\xd1\x9cj.\x0el\x83\xee3]\x1b\xa9\x1d\xd5\xdczk\xe9\xfa\x9d\xa4\xa9\x90\xc8\xa5\x9e\xcbV=\x00\"-u\xe2\xf4\xa6\xa2.\xe4~\x0e\xbb\xfb\xd2\xba\xc5v\xdc}\x0b\x1d\x88\xbb'5wJ3?\xf4\x82\xe0\xba\xad\xba=\xe3\xb7\xc4~\x1e\xc1\x9aJ\xc2\xe2\x0f\x83\xae=4\xddjk\x98\xdd\xca}q(\xab&\x8d\x96\xd7\xfc3\x8fRGT\x84\x95/R\xea\xf8\xab\xca2\xcb\x8f\xce\x9a\x8c\x8al\x94\xad\xf8\xc2\xe3\xe2 u6\x1a\x96\xf9\xae\xf2\x0b\xa2n\xc5\x7fD\x84?\xd8S\xb0\xf1\xb4\x06\x0f\xd3\xb85\x0e\xd2C0\xd5g\xe0\x86<\xd1\x97\xce\x9eV\xdcB\x87]\x82\x86\xed\xfc\xee\x7fX\\\xc68v\x88\x97$\xcd\xd7\xd2m\xe0\x19\xda\x83\xbd\x01\x8f=\xb7\xc3\xff\xdd-\xc7\xaa\xdb{\xc0\xff\xe5\xb1\xea\xf6x\xac\xba\xfd\x1e\xff\x97\x7f\xbf\xcf\xbf\xdf\xe7\xb1\xed\xf6\xf9\xf7\xfb\xfb\xfc_\xde\xce>og\x9f\xb7\xf3\x80\xb7\xf3\xa0\xcf\xff\xe5\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=x\xa4\x8d\x9d\xc7|j\xdb\xc0\xa2\x11\x8b*\xbeNQ\x1ep\x13\x8f\xe3#\x1e\xae\xb2J\x10\xe5J\xd1\x94\xa0\x17\xb0\x82xH\x06\xd1z`\x8b\xd9\xb5\xf71\x9eJ\x1e\x16#\x8f\x1dR!\x8fr\xa3M\x08\x9a3\xb4\xdc\xe4r|\xe6\xe2\x9c\xf3\xccPy\xa4\x9c\x8c\xf9\xe9\xc6\xf0\x142\xb3v\x80g\xb9\xeb\x14\x99\xa52\x8c\xa2\xe3Sj\xd2\xef\xf7w\xfb\xfd\xbe\xc3r\xf7\x8a;\x91\x13/\x9c\xf3K\x11R\x8e-\xbe\xf6\x02\x7f\n\x93hJ`E'c2\xab\xe4w\xd4\x04\x9e\xb0H\x9dp\x80\xb1~0B,\x8b\xe4\xd9\x01\xdb&\xb0=b\xe5\x0e<}\n\xfd\x1e\xca\x14\x7f\x84~o\xb0\x0b\x1d\x16\xffS\x97|\xcc\xb4'C\x9eSP\xcd\x9c\xbb\xe1\x8ek\xc22CT -\xa52`D\xec]\xb5\xc7\x03\x16;\xa3\x1b{W\\\x10\x8d\num\x1dnP\xcc\xf1\x18\x8e\x84\xf0\x14\xbc\xc7\x0edl]x\x08Z2\xf6:\x9d3\x07\xe3D\xdc\x87\x9eF\x8a\xb0\x8e\xa2,L\x0b\xe7\xac\x90\xcc\xbd\xd4_\x13U|\xe0\xc1\xf8\"x\xaa\x1ar\xf1\xc7\x8e\xe0\xe9\xd3\xa7#\xe8;\xdc\x9b\xb53B\xc3#zb2\x07\xd7\x90\xbdz\xac\xac\xd3\xef\xa7\x84\xdb\x948\x17 \xda\x9a6aQ\xb3n\x1b\x16\xb5\x9a6\xa2\x8eD\x97\xfa\xd0\xad\x00\xe2\x88o\xe7\x84r\x93\x1d\xea\xe6\xe1DM\x99/\xe2[\x10\xd6\x18\x97\xad \xac!\x15\x92(\xec\x84E\x0b%\xac\xf1g\x11\x07\x93dBW\xc5\x0b'\x8b(\xdeH2\xa9\xe5\x06\xf9b`\xd4z+\xf4\x96\xc4\xaaK\xec\xf9\xd9\xc3\xbf\xf0\xe7\x1b\x8d\xbd\xcd\xd0Y\x9b\x16\xfe\xf7\x05G\x1e\xf8\xe1\xe5\xdd\x8f\x9d\xb7\xfa\xc5G\x1f\x05\xd3\xbb\x1f\xfc\xef0\xf0\x99\xff\x91\xdc\xfd\xc8\xd3\xf4\xf7\x18z\x14\xa6\x93(\xf8\x12\xbb\x956MG/\x9a\xff\x82;\x96v\x95\xf8\xbf\x90/7 \xde\xfa\x17\x9c\x83\x9fz\x81?I6\x9aB\x9b\x19\xf8\xbf\x03\x16mLvZ\xc1\x1e\xc9\xfd\"&\xb3/\x0b\xf8d\xe9\x05\xc1F\xa3o3x\xd1\xea\x97\x06=}}\xb9\x19\xe2\xb7\x1a\xbeh\xf6\x8b\x8f?\xbb\xb8\xfb\xc1g\xbf\x07\xd5O\xb2\xd5\x17\x18\xf9\xea\x8eF\x1e\xda\xfb;\x8em-\xbdt\xb2\xb0\\\xe8\xd7\xd7\x96\xc62\xce\xebi\x15\x9dz\x88\x88GH\x02i\xddE\xa2/+\x1aP\xcf\x90\xe7_\x0b\xc7\xc4\x9c\xdaB2\x9b\xf7\xe1@\xd8\xd81\xcf\xa8!\x9a\xb7q}n\xe8\x8c\xc9\x99P\xd8\xc7\x95X\x1f\x10n\x9a\xd5\x9f\x03\x93\xeb\x14-\x17\x06\xb7\x00g\xecV\xdd.\xa0\x15D\xa3&\x88f%\x88\xc62D\xe3\x96\x10\x95\x04\x88\x18C\x95\xf9\x08T\xf6\x86\x832rX\xe8\xa5;\x03hB\xbc\xf8\xdf\xd0\xf3\xce\xa0\xb9\n\xfcT\x8b\x9c\x15\xcbI3\x98\xc4EFh\xf7wUc=\x10z\x8f\xeakv\xb9\x867eU\x8d\x885A\xe3\x14\xcb\xbb\xb8\x98X\x92\x89mYt\x8e\x1a\xa4is\x1d\x02\x92%\x9a\xd0\x01\xe8\x03\x01@\xd9\xd7f$\\\x8bx\x12\x9d\xdc\xceMM\x86\"\x7f\xbb\xe5\xcb\xa9\xd3\x8a\xa8x8:\xfdgkf\xc2\x9f\xb80\xc1p\xd3\x01\x0b\x8b_\xe7u\xbe`\xa1;\xfdy\x18\xc5\xe4\xc8\xc3`}\x96o\xc1\x90\x1ey\xd0\xa1e\xcb,H\xfd\xc0\x0f\xb1hY*\xcaB\x1f\xaf\xda\x0f\xc0\xcaJ\x05I\xeaO.\xaf\xe9\xfbk\xfe\xde<\x84i\xbd\xd3\xfb\xba\xbc\x9a\xb4\xb3\xdd\xc1\xa3\xddG\xfb\x0f\x06\x8f\xf6\xd0\x8e\xff\xe9\xd3\xa7u\x0d`4\xd9b\xbf\xa7\xdd\x04\x83\x9c\xbb\xb0\x80\x0eXs\x93\x85\x00\xaa\xfaX\xf0\xaa\xb8\xdc\x02\xbb\xcb\xbc\xe6\xed\xd0F\xfe`\x1fl\xfd\xf0C\xe2X.,t\xd7\xd0\xf9\x83\x0e\xec\xd7\x0c\x17y\xc0\xce-\xdb\x9e`(1\xd4*C\x07\x92q\xef,\xc7\xf0\xa70E\xad\xe1\x8aG3\xe1*\xa4\xa9+>p\x1c\x17\xb6\xd0h\xbf\xa4\xe0\xc2\xc4\x1f\xbd\xb3\xfc\xe2-v\xebY\x9f\xd2\x83S\x0f0\xd0\x00\x04\xf0\xa4\xaa\xe4\xde\x86\xc1c\x08:\x1dG^\x99B\xa3\x16\xa0\x15\xaf\x8d?FZ\xe5w\xe9\xb9q\xdc\xea\xe098\x9e\x141\x15\xf1\xf2\x9f9\x00\xad\xe8\x07\x0c\x12}\x87g\x89\x90\xc0\xc6b\xc5O\\X\xe5\xad\x8e`\xed8\x8f\x1d\xb8\xee\x06^\x92\xbe\xc4\xb6\xf1>\x83\xf7s\xef\x9e\\\xa4\xc6\xf4\x16\x0f\xdf\x8cSv%S\x84\xf5\xde\x9a\xb1\x06(\xc9\xc4,<\x9f>\x01_1\x96\x93G]>:\xe8bp\xb0\x86\x03X\xf1\xb2\x9e\x0bk\xfc\xa42\x02\xc5,\x99\xb9*X=A\x1a\x85\n\xb3\xe7H\x10\xb3[Q\xb6\xf2\x99\xa9\x92+8\x80\xf1\x19\x0c\x05\x0d\xcau\xb1\xaa\x14\xa8\xd7iK,\x82\x81\xe5\xba\x05Su+>@b\xaa\xc2\x82\xa9\x8a+LU\xa8c\xaa\xe2M\xd9\x80z\xe5|f\x87\xf6\xe0a_U3\xfb\xbchg0P\x8b\"^\xb4\xd7\x7fHIL^&\xc6\x80A\xf1\xf5\\\x1a.f\xda=?'\xc9\xabh\x9a\x05\x18G\x1e\x86\x9a\xa5\x98\x92\x99\x97\x05\xe9P\xbd\x9f\xff\xa7\xea/q\xd2\x8e\xfd.\xff\xca\x85\xa8\xf8i\xa46|L\xd5\xbe'\xd1r\x15\x85\x94\x80\xe8F\x06\x98{B\xf8.}\xe3]GYJ\x17\x8fw\xd8\xb4Y\x8a H\xa8\"_Ny\xb7_S}\x8eW\xe2\x82U@\xbcr\x0b\xc2\x03\xc7\xcb\xe1\xea\x9d*\x9aLl\xca\xf9=\xd4\xa1 \x16\xed\xf5th\xc2\x8a*\xc8\x95\xe5E;j\x91\x97\x17\xed\xabEI^\xf4@>\xda\xf0\xd5\xfe\x9e\x1e\x15'\xbf?*\xcej/\x18\xf3\x91\x91:\xc1\x9f\xd2\xde\x1c\x9b\x1dN\xe8\x88\xe3bA\xa6\x16\xd8\xa4{~\x8e\xce\xe7\xe7\xe7\xc8&\xf4\xdc\x02\x1f\x1d\x9b8\x0e?\xadX\xf5\xfcxTE\x0c\x1d\x98h[\x9e\xd4\x96\x0b)\x1fFTz;\xae\xce\xe5\x92\\\x0f\xc1\x8aI8%\xb1\xe6\xa6\x94\xe3]#3\xb0\x96\xf3c\xac\xe2he\x88?\x03\"UFwN\xd2#\xb1\x85\xcduYd\xf0dE&,!P\x14\xd74\x1c\xb3\xd0\x1fq\xdc\xa2.\xdd\x13\xc4\xb6\x8e\xa20\xf5\xfc\x90T\x1cn\xe4'buO\xa2\xab\xbaZ\x99h1\xa8\xab\xe5\xb1Z\x18\xb57\xb10\x9c\xa9\xb9\xf2\x84U~\x17\xad.\xbc\xb8\xa9\xf2\x8cU~\xe6%\x9c\xde5}\x10\xb0\x0f\xa2\x90r\xeb\x1f\xbc\xc0\x9fzi\x14?\xf3\xa6s\xd2\xf4)&t\xe8\x06\x917\xf5\xc3\xf9i\xea\xa5Y\xa2F\xb2\x97\x9f\x05z/S~\x89\xdd\x9f7\xb0\xf7\x94GZP\x04\xb1\xad%I\x12oN\x90+\xb24J\x01(6A\"P\x9d;T\xf2\xdcQ\xb6o\xf2\x94\xa4\xcf$\xf0\x92\xe4\xb5\xb7$C\xb0\x92+o>'\xf1v\xe6[\xda\xfa7.L\xe0\xc0\xd8\xcf\xc4\xc5$l\x0eO\xc6\xe6\x82\xc5\xe1c!_\xb4b|\xaa\xfe[\xcc\xed\xddv\x9c~8\x8b\x8c#\xbc\x93\x1e\xf8\xc0\xb7'\xf9\xee\xf8=\xba3t\xe2`\xf8\xb7\x99\xe7\x07d\xfa\xaf\x12\x94\x8b\xdd\xd6\xbd\xa5~\x1a\x10c\x0f\xd6\x0b\x04\"\xa4\x11\xd0a\xc1\xe1\xdb\x97\x80l\x88Oi{\xd7r\xcc\x83\xf08rKkq\x84\xae\x95_dE\xcc\xe4\x013A\x9b\x18>\xf1,\xbd\x8f\xdf\xfa\xd3t1\x04\xeb\xe1\xc3\xde\xeacM{\xacz<\xf7\xc3o\xc8,\x1d\x82\xe5ei]\xffE\xfd\x13\x7f\xbeh\xf9AJ>\xa6\x87\x81?\x0f\x87`M\xd0\xdf_\xbfDP9\xdf\xf3\xb7\xff\n\xb01&\xcb(%\x85\xc7n#NZ+\xcb\xe5\xa4v\x8a\x88\xb9\xb5B\xe5_\x92MD,\x8c\x06\xcc\x9cq\xac6\xf7\x11\x89\x1eL\x15\xb2\xa6\nA\xbes\xaa:\x0dE\xea8+\x85H\xba\xb1\x8b&sNIb\xa9\x89(m\x1bl\x8a\x8a\x90;\x15\x8f\xa5\x81\xd3\xd5\xe6Am\xd3\xa2d\xdc\xa7\xcf\xff\xd6\xdf\x91\xad\x96\xa9p\xf2\xc8\xb1\xadrGV\xb3\xf4g\xe6\xd4\xa5J\xbe\x92\x86\x14\xe06\x17o\x83\x87{\x1a\xc1J\x02\x93^\x1ely\x01\x12\xabb\x9f\xa8^\x8c\xb3\xcd0\x8ba\xf5U\xeb\xce\xc2\xabk\x8b\na\x94\\\xb3qWvmy$C\\\x1d\xa7;\xdb\x10b2\x10*\xed3\x89\x8c\x02U\xbd\x8d($\xbaas\x0e\xb6\xca\"=b\x0ey\x0f\xf7\xaa\xfew\xbd}\xa7;\x93\xfd\xe8\xdb\xb4\xd8r\x12\xaa\x01\xeb\xe7Mb\xf0\x88\xbb!>\xe2n\x86|V\x83G\x0ft\x9b\xf4\xf4zy\x11\x05m\x9an\xb2\xf34\xd8\xe1\xaa;\x98\xdby\x1a\xbc\xad\x0d\xce\xd6\x03\xb5q>\xfeG}\xa7\xfb\xf5\xf1\xf7\xe5\xb2 /S>\xe1\xa9\xe5\xd4\x1eXj\xb9G\xeaxXn\xb9=\xf55\xcf-\xa7\xbc\x9d\xe6HR~\xbf\xe6\xefU4\xbd\xe6#T=\xe4\xe6\xfc\xbd:F\x9eV\xae\x82\xed\xec\xb5\x1a\xfe\x92\xa5\x94\x1b\xe83\xcaU\xb0\xed#\x9b\xa8\x1a\xfb\xee\x94\x81E\x95\xd6\x8e\xf9\x08\xd5\xea\x87|U\xd5N\xdf\xb0\xf7j\xf5\x9f\xf0u\xc5\x0d\xf5\x12Fp\xa8\xe6\x90{ #x\xa3\xbe|\x85i\xe1\x94\x97\xefP\x1ed\x18].9\xc2\x92\xbf\x9c\xbey]~\xff\x16FpD\x8f\xf2\xa3n\x82\xaaW\x7fv]\xaeqB\x05G\xdb:_\xf8\xd3) U\x11\xfc5+M\xa3\xb7\xb1\xbf\xf4\x99\xadv\xb9\xc67\xe8\x00\xa6\xcd\xb9_\xae\xf8\x9c\x92{\xdbJp\xf4\xdb1\x99\xfbI\x1a_\xab\xcd\xfd\"\xd7\xaa\xa4\xb9|\xc1J\xa3\xd5\xb6\xa1\xc2{M\x12\xf3r\x8dg\xa6\xf8\x01\xef\xca\xf5~F\x88\xfe\x955V.\xfa\x1eF\xb0\xf53F\x0e\xffY\xca\x08\xa0\xfc\xdd\x9d\xf9\xe1\xf4h\xe1\x07\xd3\xf2\xd7\xdf\x02\x8f\xf18\xa9w\x8d\xe3G\xdf\x03\xd8\x1a\xc1\xa9\xfd\xd2\xfe\xfb\x0d7\x0f\xd33\x91\xed\xe2\xb1@\xd1\xf0K\xd9\xe4\xac^0\xe0\xda\xac\x07\xc6J7N\xd7\xd3\x16V\xd9\xf2\x1bG\xad{\xe3\xc8\xd1\x0f\x0c\x8c\x00H\xa4\xf8\xd2~\xaf\xbf\x9dE\xd7\xd5) HJ\xe0\xfd\x98\x9c\xb9t\x92\xbc=\x1e8,\xc5;\x8a\xf7\xf4\xe7Kl\xa6\x12 \xf9\x06\x86\xf0\xb2\xbcd\x1fj\xb5\x9e \xd9\xd0\xff\xc2|\x0dO\xedw\x05\"\x98\x0d\xd8 K\xa5\x9bV\"|\x96\xbb\xff\x1aF\xf0\x8c\x8e\x98o\x8b\x12\xd6v\xc5\x91]\x02b\x0dBi\x1aI+\x00h\xd5R)\n\xf3\xbb\xba\x19|\xd5\x82\xd5+5<\x12\x8b\xf4\x95\xfd\"_\xc0%\x8b\xf2\x0f#\xb8\xe2\x19\x8d\xe8;Z\xe2\xdb\xbf\xe0\x9d\xdb\x01\xc6c\xc8 \x10f\xe4\xa3\xfd\x9d\xb0\xbc\x93\xe3\x93\xb31a\xb7\xa6\xe2\xf7\x88\xe7\xa8\xc0E\x0bM\x1b\xa1hr\x08\x1f\xed\x1e&\xb6\xd0a6\x0c\x8b\x0e?}b\xd8w\xe2\xc2G\xbb\x8fyv)\x7fR\xf4K\x87\xffm\x0e\x0d\xfa\xed\xcb*_\x0bU`\xfe\xa1\xcd]\xe3R\xeb8\x91;\x93\x87\xcca\xfc\x9a'\x82#th>K}\xc2\xa21\x8a|\xdf\x11<\x05\xff\xb1\x03_\xd9)\x83R<\xf61n\x00\x19\x87\xba\x10\x96b\x05\xeb&\xf0\xe7\xd6\xdb\xe9\x9b\xd2](.|\xcaRY\x19{\xde\xc2\xda\x05\x02!j\xb0\xbc\xa3[>E\xa6\x94\x19\x04\xd8[6#\xd9\x85\x0b'\xff\xf3\x17\xf1[\x94p\xecY\xf8 ]\xbc\xf4\x0c\x0b\xd5k\xd9\xf2\x14\xff\xd2f\x8d\xfc\x19s\xdc\xbd\xd0\xe0\xb5\xa0S\xf9\x90\x08\x1f\xd2\x0b\x16bY\x8f\xa7\xc2n\xe6\xd2\xae\xb1_\x11\x80\n\xab\x8dW\xb6\xca\xa7O\xca\x8e\xe2x[\x8d$sS\x07\x8e\xbf5\xae\xb8\x1a\xee\xe2\x95}\xc1\x9c\xa0c\x1e\xc1 \xe2\x11\x0c\xba\xa5\xdc\x8fl\xf4\x94\xd9b) qe(e;\xc9\x7f%,T#\x0bDa\xc6\x9b\xb8n\xfc\xdfm<~N\xc2\xd8\xf8_a\xe0\xa1\x170\x04>\xa9\x88OJ\x84\xee(&\x95=v\xc4\x9a\xe0f\xcb\xc4\xacB\x8e\xc1\xef\xc5jElJ\xbf\x8cI\xcd>\x8c\xca\xb3*\xea=\xc3\xa5\xf5l\xfb]]\x14,\xc4P\xba\x9ddB_\x0d\x99n1\x96\xb4\x88\x0f\"\xe5(\xaeDN\x17W^+\x9d\xcfX\xaf\xe43\xd6\x93\xbc:\xdd\xca\x14\x89\x94\xd3\x01\xc9\x19\xa9\xac4\xca=\x04\x9b\xf4E)K\xc4\xffOr\xd3\x87\x98\xb4\xe8/.\x15Q`\x04_a\xc4\xa1\xbd]\x07\xff:\xc6\xff\xff\x8d\xbe\xdb\xe7\xaf\xfe\x8c\x15z\x0f\xd9_\xdf\xf1\xf4\x97[\xa1\xfd\xf0!\x02\xd5\xa3\xb3\xb7t\xe2\x82\xe5\xd2\x8f\x91\xbcL\xbb\xf5\x17\xcd|\xbc\x1f\xecEIuE\xc7\x9b\xd9\x19&B\xca0\x11R\xc6T:\xcfTh3\x84\x1dJ\\\x8bl\x17\x90o\xe6\xbfRaa\xe1%/9\xfa\xbb~r\x14\x85\x13/=]\xc5\xc4\x9b\xa2\x90#\xf8/\x17\xcd\xce]n\n\xe623_\x97\x87rt\xd1x\xc8\x95\xe4(W\xac\xcb;o\xee\xca\x99\xfd\xb9\x9d\x91\xe5Z\xf4\x18H\x19\x85\xf8k\xb1E\xd2\xf4\xb1\x03\x0b\xfb\xaf\xe34-'\xbd-HP\x8a\xd9J\x16\xdd$\x8dbB\xa95o\x85\xa4E3!mfm\x93t\x1c*\xedP\x08\x9e\x96`\xc7\xf7w5\xa0Q\x14\xb7d\x15}\xfb9=\xd3:#4^<\x80\xe7tO\x0d\xd9?\xa3j\xea]\x85\xfc^\x92\xeb\x17\xcd]\xa19\xe7\xd7h\xceY\x9b\xd3\xc1\x03\xc6\x01W(\x13\x94\xc3\xed\xf8!<\xd7\xdb\xd3\xd1\x9e\x9e#\x177\x92\xe3\xbb\xd72\xf1YBNI\x9a\x92\xb8AJ\xfb^\x17I\xb2\xd2\x92\xbf\\\x05M\xf6\x05\xdf\x97\xb3\xd7\x01\x94\xf5\xba\xaen\xa1\x0d:O\xa6\x9ao\x91\xca\xaej\xe2F\x99\xf0S\x1b\x93\x96\xfd\xc1>e\x9cN\xedb\xab\xfa\xd5\xafj\x8a}\x92\x0c\xe1\x0f\xe5\ns\x92\xbe\xb9\n\xc5\xf7\xcfI2\x89\xfdUJ\xd1\xe7/u\x15_{K\xda\xd8\xdf\xea\xea\xb0m\x90\x0c\xe1\xbb\x12\x1cQ\xc1R\x06\xa6\xbd\x85\x07l\x8d\x88/\x8e\xc1wjxL!\xa6\x8d\xc3,\x08\xce0\xfe\xcd[[p\x9d\xd6\xdfo\xf8\x9b*\xec\xbd\x8a\x11\x8f\xf2 [\\\x85b:.X\x7f9}\xf3Z\xe3@\xce\xf5EM\xfb\xae\xc4\xfap\x86-=\xe3Y\xe4\x1f\xebb7P\x81\x82sd\xc5a\xef\xebSx\xf3<\xaf\x9c\x1d\xea\x9f\xb9`\x9f\xdb\x95\x94?\x9c\xc1\xffZ6\xe6\x9e\xf3j6i\xc3\x8c\x8b\xbe\xb4\xba!\x16\x1a\x08\xf9\xcc\x8au\xa6\xe3\xd2~\x89c \x03\xc0\x91\x84\x8e\x9dN\xc3\x85\xb7\xdc`\xe9\xa8\xaaz(\xa1\x95\xa4B\x18\xbfFV<\xb4\x07\xfb\x8e\xacZp\xe1u\xa9\x1eK\xc2\xf2f\x86\xd9\xe4\xde\x15\x84\x1b\xff~\xe5\xa5\x0b\x17,\xfa\x0f\xb7S\x81\xc0\xe6J\xc3\x1c\x07\xb6z\xad4\xff\xd2\x0d\xd6\x9ec[K\x92z\xba\xd0\xbb\x1a\xe5m\xa4\xd7\x9a\x8b`\xa4\x8e\xaa\xf3\xf4\xaav\xebI\xa1\xe4\xf3\x93\xe3\x8f) \x13\x9f\xca&\x9f>\xd5\x13D!\xf8\xd4R\xd7 \xa5\x9a\xa8]o\xa5\x9eK\xec\\\xddH\xd6$L\xf9p\xa20\xb1\xa9\xc0\xaf\xec\xc7rW\xf5<\x0e\xe0Q\x9c\xa2\xf7\x91I\xdaC\xb5\x9c\xbe\x90>\xfe\x10\xac7\x16t\xa0\xd3\xf1\xaa\xbc\xa4x\xae\x86j\xb0Z\xf1\xe8\xb4wu\xb0\x0b\x94\x1cR\xd5\x91}}\xfc\xbd68\xf9\xeb\xe3\xe3\xe7C\xd8\xeaWKf^\x92~M\xae[\x9c=\xa0u\xe9\xd0\xa9\xbb\xb85$s$e\x86Fr\x99u\x8a\xde\x14o\xd1\xcd\xc2\x90C\x81e\x01\xc0\xe51J\xe3y\xbd\xa44\xa0\x17\x06{\xac\xbcz\xe1\xb9b\x1d\xd7\xd4\x9d\xa9\\\x93x\xf4\x8b)x\xfcq|\xd6\xad\xe6\xce\xd7\x84p\x9b\x93\xf4[\xe2]n\x02\xf9[\x01dK\x1f\xe3\xa5\xa8M\x8c\x11\xab\xe5\xe73\xc0q\xd5\x06\x1cQ\xf8\"&\xe4\x97\xc6d\x82P4>\xa1\xc7F\xd0\xa5\xc8\x8d\xe6\x146?\xa68\x98\xe8\xef\x19rD\xed\x0c\xab[\xd3\xe4\xca\xbd\x93\x08\x19\xa4'\xc6\xfb\xa6\xe4G\xe6\x89\n\x05]\xac\xcd\xd4\x16\xb2\xc0\xba\xe5\xb5\xc2\x83\xbc\xbaB9\xf7\x90\xb9\xfc2\x94\x02\x84\xf6\x1eug,\xa1J\xef1x\x05\xf30y\xec@\x92g.\xa7\xe7\x867\x9e\xa0\x96\x04\xe5{\xe4*2=O%\x19\x89l\x06\xd0\x87\xfb\x06\x08\xb1\x08\xef~\xc2RY\xc9\x07\x90If\xb5\xb0*\x92\x9c\xd8\xbe}\xa6\xab\xca\xed'_\xe2\xbd\xea \x1a\xb1\x1b:!oV\xcf]+b\\\xbfD\x06\xaf\xfcp\x1a]Q\x88\x16\xbf\ns\x17\x95m\x86\x83\x9aB\x9b\xb5@\x05\x80\xb1\xce+\xa0\x9d\xa8\x8f\x81v\xad1\x1b)|\x8bM\x9e\xe1\x88\xf3Di\x8d\x17 \xe6\xbc7\xb9\x94\xaa!!\xcd\xf9\xe3\xc5\x10\xb9kQ\xa3\xbd\x92\xcdS8\x97\xedn\xf4\x08\xe0\xc0\xdf\x1b-\"\xfa\xbd\x07\x8emy\xc9u8y\xb9\x91\xfd\x86\xf8\x94%GA\x1dL\xab\xef\xda\xd9}<\xba[\xbb\x8f\x9d^\xaf\xc6\x08+\xf9\x0c#\xac\xaa1\x90Y\x12.\xf73\xc4q\xf51\xa7U1\x9fV0\x94\xb6\xb2J\x95}\xbd5D\xd4F\x8c\xa1T\xd6G\x12\xba\x15S\xf9\xe7\xde=4\xa3+\x07v.\x14#\x84eCe\x11\xd9\x12\x92\x82\x97@.Ml\xa9\xe1\x18\xf44\xb0\x02\xa0!h\x17\x05e1+w\xe6\xb0\xc0\x0f\xe1\xef7\xd5\xbb_m\xca\x1b\xf3\xde\xb5\xf9\"R\xd1\xe8\x05o I\x82\xcb\x0d6\xba3\xbbb\x12\x00\xd28XF2\x188\x0e\x1d\xc0\xf8\x8c\xdf\xc5(Yf\x91l\xdf\x86:\x10}f\x8a*W\xc2\xc9\x88\x0c\x0d\xa3V[(\x95Y%\x96\x0f5\x95\x1ceF\x10\xc2\x90\xe5\xc0 \xdb\xf0\x17h]\xb0\xd5wL\xfa\xf6\xc9\x82L.\x87\xd2uB\xabM\xdb\x8aN\xecT\"\xe2}.\x9d\xd8\xfdlKD\xc3!\x14s\x1bUVg\xb3\x81\xdd\x8e\xdc\x08\xc5\x1bZ*\x15\x1d\xb6\xa20M\xf6l\xbb\x06\xdb\xd3==\x97\xb8S\xb1\xf2b2\xfbN_\xb5\xf2bl\xdc\x8e\xfa:\xe1\xd5u\xe9\x89\xe9{\xb5\xf9\x19\x7f\xaf\x0e'\xe0\xcd\xab8\xba\xc2Li%+\xe2r\x85\x85T\xe1\x857I\xa3X\xb1\x85\x9a\xb2\nA\x14\xea\x1bXW\xe3@\\7\xca\xf0mn\xc4\xe7Za\x19\x8d\x87b\x12\x9aD\xfc\xa5\xb7\x1aB\xd4]z+\xbdp?\x8b\xe2co\xb2\xa0u\xf8O}\xbdI\x94\x85):\x1e\xd3\x1f\xfa:i\x84\x04\x90\xd6\xe2?\xf5\xf5\xa20\xb8\x1e\x82&\xe7Y\xb5zn\x9c=\x04\xbf[\xe3\xd3\xf66\x8bI\xa9n\xe9E\xb5~ \x03\x86\xa0\x01\x8e\xbc\xc2C\x98V+\xf8 \xfau\xe5U\xbcn\xf9\x8df\x90q\xb4\xa2\xc7j2\x04\x8d\xf7\x1c\x1b\xd2Q\xe0%\xc9\x10f\xa6r\x8e\x93C\xd0\xac\x13\xab\xf1\xca\xff\xe8\x87C\xd0\xc0\xfe\xf9\x9bWC\xc8\xaa\xef\xd7$N\xfc(\x1c\xc2\xa4Zv~\x9e\xe05\xd6\x10\xd6e\xe4\xd4S\xc8V\xa99\xea\x89\x8e\xacQ3\xf4\x12\x7f~/\x94V\xe9y\xaa\nM\xe2\x02\xb0\x81\xb2\xf5T\x0e\x96\xa5\x13M\xaf\xa2C\xae\xb6~\x1bE\x81\x9a\x8e\x14g\xd1\x9dEY\\W\x8bR\xbd\xfb?\xdc\xef\xdc\x9f\xeb\\{gFA\xc8\xb6,\xe8@\xea\x94\x82\xbd\xff\xe1\xde}K>\x8f\xaa\x0d\x06\xdas\x0d/|i\x1df\x85\x86\x7fN\xa20e\xb9\xb9H\xfe&c7\x88\xb5=\xact\x0b\x05\xd2\xb2\xa4\xd8\x93f\xb3a\x19\xefV\x91\xdb\x99l\xe7c\xc3)\x1b\x88\x9c?]7\x8e\x85\x18\x87\x86\x93\xc4\xe9\xc4$a\xde\x1fb\xc6\x97\xe4\xfamLf\xfeGi\xce\x1c(a\x05(\xf1F@\x996\x03\x85\x0d\xa7\n\x96\x0cK\xf3\xb1U+x50Md\x98j\xa8 ;\xe8(l\x13\x05\xb6\xe5\x05(\xe97\xec \x95\xb1\xd7\x14\xe3b\x84o\xd4M\x17^z\x82\x88\x99\x08d\x17\x8e\x9c\xb05b\n0\xdbW\xa8'm\x87\xbe\x9f\xa0\x9a\x08\x89\xf1a8=a\xf8\xfc5\xb9\xa6\x1dd\xd0\x01{kB\xe7\xcf,yP\xb9C\xff\xc2\xe4\xf2\xf8\xeb\x00,\x0b\x860\xb3\xf1O\x87\x8a2\xf7Qg\x1b\xa2\xe1\x10S\x05M\x9cztYK\xe8\xe2V#g\xacy\xd4\x0c\xd5\x89V\xcc\x90\xdd\x0c\xa1hf\x87b\x08U\x83\x17\xbaV\xe8\x9a\x8b\xa4`j\x13\x8c\x8c\x81\x1d\x96+\xa3\xc6\x7f\xea\x82\xe7\xb8\xb0\xe8\xc6$ ^Bl\xaf~\x0e\xd7&,\xe34\x83\x0eVj@\xfc\n\xa4\x8b\xa3)\x11\x06;u\xf6@\xa5\xad\x81\xee[\xca\xee(\xbd\xacl\x10\xba(\xdetJa\xe0\x87\xf3w\x91\x1d\x88\x89\xdej \xf9F\x96z\x95\xf7\xb2\xf4\xfa\x0e\xc7\xbcp!Q\x04\x8c*\xfb\x96\xb3^u\xa7\x98xP3J\xf1\xa9dM\xa0\xb9x\x10D#(c\x92.\xc9:\xe2\xd1\nS\x17@\x90\xe3\x91z\xdfX\xa6\x0c\xc8O~\x91\x01\xeb\"p S\x01\x9b]q\xb1U\x10\xa6\xda\x0d\xc3|\x19\xa6\xd1\xb7~\xba\xf8Z\xac\xf6\xcb0%q\xe8\x05CX+\xc7,\xe3m\x1b\xf5&B\x87G+\\s\xd7\xc3\xbaA\xe4\xfcp=\xf3/\xf4\xe4M\x00 \x02\x00z\x92Z1\x10/\xf0\xf3\x8b\xf1j\xa1\xbd\xaf\xd31\xdb\xa1M%\xaf\x86y\x0b\xc3\xc1\xae\xd0\xa0Pl\xad (\x07\x12\xac\xaa\xdf\xad\xa2\x95)\xf3\xb5\xc0=\xdc\xbd<\x12|\x15^P\xa7p \xc9\x15~_1B\xaa\xd5\xbfi\x95T\xb2\xc2\x08\x0d\x0f?}\x82\xd8\xb6\x06{h\xcb%\xd16\xdbq5\xf3\xe4w\x1cOx8\x90(\nN\xfd_\x880>V`B\x0f\xb7z\xb3\xa9\x0c\x934\x97^yZAS\xa6o-\xf6\nH\x96\xc6\x86\xebQ\x01\xda\xd2\x98\xb9\xd1kXP/\xb4\xeb\xf8\xf4 2\xfa6\x9f/3:\xce\xff\x1c\xb1\x8cp\xa1\xa0b0\xa2g\xa7\xc6\x02\xb9\xca\xe7P\xce\xa2\xc4\x83\x0fU\x80\xd0\xa7\xc2\xcf\xb7\x84\xc1m\x90\x1cd\xd8m\x82\xe8\xa0Cv\x11\xa8P\x07\x0e\xd0\xe2<\xe8\xf0\xbeb\x92\x05zp\xa6\x8b\x98T\x00\xda\xe6\xc0\x80\xcf\x84V|'\xd0\x8a\x19\xb4tG\x8cx\xda\x03\xac\xe2\xa5\x01z\x98U\xe5\xc0*\xc8\x0c:o\xf8L\xa8\xf9w\x025?\x87\x1a\xe3&\xaa\xb6\x03\xb0)\xe0*\x86O\xd5\x16\x0c\xe7\xdag\xc4\x0fk>\xd7\xfa\x05\x1f\x15?f${\x1f^\xd7\n\xb3\xe5\x05\x89\xe57\x05Ty\x17\xa4\xfb\x87?\xf0\x91\xd1wE\xfe\xf4\x99\xcd8V\xcb\xca\x93\x87y\xd0\x81 \x9dp\x0f\xc5`\xc7\x05\x8d\xc5\n\x9dqM8\xd65\x8a\x9bR\x93CLd\x93\xe8\xa1R\x96\xd0\x89\xc6\x1f\x01d+\x8bkfOq\x0dO\xf2$<\x8f\xe1\xba\xd3q`\n\x9d\x11\xa4\xf6\x8a\x9e\xc9\xe3\xeb3\x17\xd68\x97\x95\x0b\xd7\x0e_\xbd\xea\x0808\xa6\x99C\x98\xb3,\xa5\x06rC\x87?o\"bK\x17\xdd\xc0\xe7\x9c\xbb\xab\xa1\\\xd8\x1c\xbb\xe8\xec\x920\x8d}\x92\xe8\x81!\x9e\x1c(\x17\x0c([\xf6\x12Fp\x8e\xa9\xe9m\xc7\xe9N\xa3\x90<.\x01f\xc9\x0c,%\xd8\\t:f\xe8\x88\x87B\xa9y$\xc6\x01\x98\x01$\x1e:\x89\xabb|\xe6\x91\x88\x07\x0d:lifWhZ\xbbF\x03fN.\xae\xc6\xbd3\x87\"\x9e\x98kO\xcc\xb4\x1e\xac\x06[B\x86+\xb8\x91K[\xac \x01>\x1a\x92\x91\xc9\xcfi\x11+\xba\x0eCb\xdb\xda\xe9[naG\xc2n\xdd\xce\xd8HN\xe1@\xec~\xb8\xf2\xd3\x05\\\x92\xeb\x04\xfenAG\xdcg\xd3\x176qx\x9a[\x17P\xd9d\xddX0\x84S\x17>\xb65?3J\"\xd3R\xc1\x0d\xa5\xb8\x96\xa5\xf2\x1a\xadn\x1b\xeb\x8f@\xad\x8d3\xf7\xe1\xbaw\x8f\xff\xca\x1d\x8b\xabg\xa5\xf5/\xff\x92\x07\n\xd1\x9f\xd3f9)\x97\xf2\x80\xc5\xcdEg\xc3\x18\xcd\x9b\xd3\xb1\xafZ\x80\x1b-\xb2\x89\xc6\xdc\xfa\x0e S\x1e+\xdb\x08me|=\x1a[#k\x08\xd6\xa8g\xc0`k\x88\xc5\x83j\xb8\xa7\x1b\xa3\xc6\xc0\xfa\x03\xc5\xc9\xcaE\xc0\xfd\xf1hxv\x7f\xde$\x9aK\x0d\x91qzV\xed\xb7^\xa6\x0c\xef\x06(=\x9c\xb6 (\xa3\x01-\x1en\x02\x14\x06\x0e\xdb\xea\xb2\xcd\x9c\x8e{\xe8\xe8Ma\xc5\xfe\xee\x9f\xa1\x8dD\x92]0.\xc0\x1e\xd0#Z~\xd1w\x1c \x9a\xf6\xa8\xf7i4p\xee\x1e\xa0\x05\xbe\xea\xf7\xce\xdd\xdc\x80\x0d\x9c\xba\x9bn_\xaf\x07\x18R\x12Y\xb1\xe4\xc7\xa2\x8b\x8b\x98\x95^\\h\x83~z\xd3iL\x92\x84\xd5a\xbf\xb5\xd5b\xc2{\x89\x89\xbe\xa38\xf5'\x01\xe1u\xf0\xb7\xb6Z\xe2Oy%\xfaK[%\x9b\xfa\x11\xabB\x7f\xe9\xaa\\`\xf1\x85\xb6\xc8KX\xfb\xf4\x87\xb6\xc2\xd4g\xe5S__\x1c\xf1b}\xcf\xfe\x9c\x15\xfbsmq\x10M.\x7f\xce\xa2\x94\x8f!\xffS[9\x9a^\xb3j\xd1\xb4\x12P\x05+\xb0\xa5\xd3/\xdcE\x96\xa6Q\xc8*\xe0O]\xa5\x89\x17\xae=\xb6\xb8\xec\xa7\xbe\xd2*\xf5yS\xfc\xb7\xb6\x9a\xcfgE\x7fh+D|i\xe9\x0f}\x85\x80\x97kc\xc6N\xa2`\x1eG\xd9J\xd4\xc1?t\x15\xa7^\xca\x90\x91\xfe0U\x08\xfc$\xcd+\xd1?\xb4\x15\xa7\xac\xcaT[H\xd8p\xa7D;\xdc)I=?Hx\x15\xfc\xad\xad6c\x90\x9d\xce\xb4P\x9d\xfa^\x101\x9cb?\xf5\x95\xd6\xbc\xc6Z[\xcc\xc7\xa9\x1f&\x87\x82v\xfed\x89\x85d\xa9/\xbc S^~A\xb4 \x9a\xf9$\x98\xa2\xe9`l[\xe2\x0f}\xc5\xb9\x8cf\xc5\x9f\x86\xcaYLD\xc5,\xd6\"\xd3,\x8a\xd0+\x93V\xc2\x9f\xfaJ\xf1\x92W\x89\xb5s\\\xf4\xb1x\xd1\xd7\x16\x0eX\xe1@[\xb8\xc3\nw\xb4\x85\xbb\xacpW[\xb8\xc7\n\xf7\xb4\x85\xfb\xacp_[\x88V\x1f\xb4\x98x\xda\xf5\xa0\xef9P\xd8Om\xa5b\x97-\x8c{l\xc1[\xd1\xb7\x90.\x19\xca\xd1\x1f\xba\n\x8c\xc4j \xac?\x8b1\\&-\xc7\x9f\xdaJK\xb6%\xfc\xa5v?\xf8\xe1*c8\x87\xbf\xf4U\x12^A\xbb+//\x18 //\xb4p\xbc$\xd7s\xc2P\x95\xfd\xd4U\n\xbc\x0bN!\xf0\x97\xb6\n\x99\x93\x90\xf5\xc4~j+1h\x05Zp\x05~x\xc9\x8b\xc3K]\x85\xa5\xe7\xb3\x81\xd2\x1f\xfa\n+^\xae]\xe8\xa5\x17_\xf2\xf2X\xdf\x01 3V\x81\x84\x99\xa9\x82\x9frR\"\xfe\xd0W\xe4t[\xe7w\xc8+p\xec\xc5_\xba*\xa1\xc7Ha\xe8iIa\x181\xbfaV\x87\xff\xa1\xab\xc8\x04F\xac\xc6\xc5Z]%\xb6\xbc\xfa\xe3*Z\xa5\xc5F\x12\x7f\x18*\n\xba\x17\x19i^\x94\xa5\x02\xa7\xd9O]%\xd6\x97\xb6\x93\x95\x17{l\x05\xf0\x97\xb6\x8a?I\x05]\xe5\xbf\xb5\xd5D\x15Sq4\xcf9F\xf1\x87\xae\xe2\xcfX\xe3g]Q\xcc&\x12kg\x123(\xc4Z\x08\xc4\xd9\x05\xe3\x99\xe8\x0f]\x056.\xed\x80\x12o\xc9\xfa\xa5?\xb4\x15\n\xd41#NB&\xf9r\xf2\xdf\xfaj\x81\xc0/\xf6S[i\xe9\x05\x0c\xc5X\nN]\x15L\xa3\xc4\xea\xe0Om\xa5\x95\xc7\x07\xb4\xf2\xf4\xa3I\xe3(d$\x95\xfd\xd4W\xba\xe6\x0c<\xfe\xd2V\xc9\x18\xeb\x9ddZ\xe6;\xc9\x96K/\xbe\xe6U\xf0\xb7\xbe\x1a_\x07\xfd~IY\x1c\x95\xd8\xb6R\xe6\xdb\xa2\xa9\x92\xf3\xce\xa9\x89yN\x19\xd9M\xb5$7%\x1f\xd3\\\xa4\x11\x7fh+R\xde\x82\xd5\xa2\xbf\xb4U\x16\xac\\\x9br=\xcd\x8f\xec\xd4tf\xa7>?\x0e\xe9\x0f}\x85T\xc0\x03#L\xeb\xaa0\xaa\x99jIf\x1a{\x93K^\xeeM\xb44\x9e\x11x-u\xcf\x18\x82fZ\xec\\{\xac\xe3\xb5\xa7\xedy\xedO \x13\xa7\xf0\x97\xae\xca\x15\x17r\xae\xf4R\xce\xc4\x8f\x85T\xc9~j+\x05\xfe\xea\xad\xc7\xd7A\xfc\xa1\xab8%3\xc1\xaf\xcf\xb4$\x82\x04\x81\xbf\xe2\x02$\xff\xad\xab\xc6v\x92\x9e5Yzs\xce\xdd,1\x93C\xb5J\xe0\x87\xac\x06\xfda\xaa\xe0\xc5_\xc5\xde\xd4G3f^\xb5x\xa5\xfbh\xe9%\xe2\x1cO\xb4k\xbc\x12\x10Z\x19\xa0\xb3\xf2\xd2\x94\xc4\xa1\xa8C\x7fk\xabE\xc1\xf5\x9c\x13@\xfe\xdbT-\x9f\xa9\xf8CW\x91\xce\xc9\x0bJ\xb3-\xbf\xd2~$\x88kl\"\xadi\xc4\x89L\x1a\xe9\x89\xfd\x9a\xd3\xc3\xb5v\x1d)Q\xc8\xa9\x83\xb6BNtSFuK5\x0c:\"v {\x07:\xa2:\xbbvn3\xdd7\xb9\x07\xfb\xc2\x9e\xecs\xc7\xd1\xdf\xdb\xd8\x01Yx\xe4\xd0\xfe\xe4`\x8cw\xa0\x03\xd6\xd8\x83s\x8f<\xf5\xf6\x97[\x8f\xebcYT\xdckx\xa8\xe7}5V\xb0\xf0\x8b1\xf9\x18\xd7\xda\xa2\x08[\x92\xcfQ\xe9\x03\xb7\x08\xd6\xab\xf5E/3Z\xe3\xc9\x13/\x8c\xc2\xebe\x94%O\x9fj\xb4\xb7\x81Q\xe5\xeb1s\xb9\xb5m\xe1/\xddN\x00\xd4eQ^ym\xe7\xf7\xba\x86zt\xbaX/\x9f\xb7\xa1\"\xbb\xe0\xc5\xaa\xfc\xae\xd7PQ0\xf2\xeb:F\x1e\xf2\xc08X\x91\xdf'\x9b*\xf2 ck\x11\xcf\xd8T\xd1\x0b\xaf\x870\xb5c\xd9\xf6\xef5^`\x9bA\xf9f\xd6\xa4\x82\x17\x8f\xb8\\*\xe2\x99\x14\xe6\xce.DM\xf7\x8b\xca\x15\xccVal\xe0\xc8\xf6\x1d\x0b\xdb\x12n\xdf\xf0\xa3\x05\x1d\x88\xa0\x03\xd6\x8f\x10\xcd\x8a\x94s\xac f\x05\x0b/\x01?\\S\xea\x93{\xcf@\x18\xa5\x98\xc0\x82\x8a\xdd\xfe\x94\x88\xa9vM\xe9C\xc5C\x11\x14\x13I\x8dCC\xb2W\xf1`D\x89\xf2\xa5yV\x1b\xb0B<\xb4\x0b4\xad\xacD\x17\xd0=e\xc8\xbc\xe4\xf3\xa4\xd3\xf71\x16\x99\x02\"\x0c \x8d\xef\x12\xf6.\xc9V\xab\xc0gi>$\xa8\xb9@>\xae\xc8$%S\xf0B\x06\x9d\xaeu\x9b\xebX\xf1\xe4w\xe0<\xd0\xc2\x04\x9e@\x96\x1b\x06L:\x9d\xb6\xa0\x99aj\xc9\x0c\x93\xe2r\xcc\xa2#\x1e\xd3\xb1O\xe8\xaf3\xcb\x05\xaf\x05\xe4\xe8\x02\xcddCJ\xf4T.\x8c.>c\xb2:sx\xf5\xb91\xdc\xe2\xea\xb7\"\x11\x1eb\xf9\xde\xfa\x82;qC$O7@l\xef\xcb#\xb6\xd7\x1a\xb1!\xf1\xc3y@\xe0\x84x\x93\x94s&\x9f\x87\xe5\x9f\xb3\xf0\xa6\xack\x02C\x7fWB\xbce\xd3\xc5/\x99\x19\xb7^c\xe6P\x14zK\x16)K?+\xf5\xf1\x1a\x8d\x9eM\x0f\xc3\xc1\xae\x14\n\x16\xe3\x0d\x97\xde\xe0h\x8a\xad\xdd\x8c}\xe2\x11vp\x95\xc6Z\xb5pc\x1b\xa2W\xab\xcf\x97Gv\xb1\x92\xf4s\xac\x91a\x8d\x7f\x1c\xba\x1b\xb8(\xbc\x92\xbb%\x91\xabu\xb0R\x1fD\x9bk;\x1d\x933Ge0\xe4\x05\x88\x8b\x05\xf0\x0d\xc0\x0e\xab\x94\x05I\xca\xebhJ\x1a9\x8a\xcf\x81\xa1\x89d0\xbe\xf2w%\x18\xff0\xceM\xcc\xb5\x11\xd0\xf2\xa9\xd6L\x93\xdaq`%+\xb3\xad\xd1\x08\x92:T\xbaC\x8e\x8c\xf5\xd98g\x89\xeb\xf2C\xc8\xea\xf7:\xf0 e\xdd\x85\x97H\xd1\x95\xecI+\xd2\x0f\xf5\x0cZ\x17\x19\xb4v\xac\x19|.{\x06\xff\x00\xd2\x15\x85\x1b\x1c\xd1\x1a\xe9@\x8aTW\x11\xd0jL\x0d?o\xeb\x16Q\xd1\xc4\xce`\x810\x1f\x83\x07O \xcd\x19tO\xf6\x866=tR+\xba\xf2\xe9\xd8\x93\x89j\xed\x04@\x12y\xfer\xfa\xe6u\x91?H\x9bYB~6\xdcih\xb2*\x1f~-\xb6Z\x14\xe2\x89\x99o\xcf\xba\xf3\xf2\x16\xe8B)\xda\xef\x8e2R\xe8i\x16\xad\xbb\xb4\xd2\xa4Y\x14\x13\xba\xa0T\x9b\xa9_~\x8c'C\x98\x0f<\xb2\xb7\xfa.\xe4\xab'\xe2\xf4\x96\xd6&\x87U\x17\x8eU\xb1\x14\x8f\x8f\x05\x99\\\xe6`L\\\xb8\xc8R\x88\xc9\x84\xf8k2\x85?&\xe0\xa5\xe0\x87S\xf2\x11\xfe\x98t-\x17\xce1\x99\x0bA\xe7m\x05l\xe6\xd5\xfd]\xb6`\xef1d\xa5\xe5\xc8\x9a\x97\x03\xa4\x1d\x94\x8e\xb3\x86%\x01(\xfb\xd5&\xe5\xd1R\x02\xed\xb4\xa2\x8e\xd0\x9a\xc6\xb6\xd9\x9f\x86\xadxw\xfb-Y\xb4\xb0&\x15\xcfg.\xe9\x7f=\xac\xc6\x8f\xac\xc7\x1f7\xe44Z p9\xb30\x9e\xb4\xc4\xd9Y\x9bf\x817\x1d`\xac\x84;\xe1C\x82\x1c\xd4\xf5\xdb\x01\x1a\xb7D\xbb\x0dswL \xf9\xe8M\xd2\xdf\x11\xeb\x93\xd6X?A\xacO6\xc5\xfa\xc9g`\xfd\xe4\xce\xb1^\xa0p\x86q\xed\x18\xff\xd4\xc4\xb5\xe4;%\xa0;\xa5\x15J\xd3\xda+\xdc)A\xcb\x9d\xb2\xb5\xda\x0cN\x97\x84\xcbdA=9\xfe!|\xe6M\xf3+\x0cZ\xa0\xf0l\x0c\x06,\xc6\x80\x05\xdcs\xe5\x87\x10/\xff\xd0\xd1E\xfb\x95\xec\xf7\x92:\xa5\xef[l\xd35\xf7s[\xd9\x89\x0bAu\xb7\x07\xedv;\x85\xdb4\x07\xdb\xf4\x1f\xb4\x8f+oo$\xafM\xa8\x06B\xd2\xe1\x8f\xd0Z\xe5\x891x\xf2\x02\xf8\xf4 \xfap\x1f\x0b\xf0\x07\x81!f\x00c^2\x84\xfeR\x03@\xe8\xfb^\x18\x02\x13,\xfc\xa4\xbb$I\xe2\xcd\x89\x14\xf8(I\xbd\xc9%\xbaW\xb5j|j\xc8\xff \xcaC\x9b\x11\xa5\xc8\x85\xcc\x85\x04)\xbc\xd6\xe5\x93>6=\x883\xa6\x89D\xa23\xc1\xa4V.\xb0X\xa5\x9e\xc3S.`b&dE\x8f\xbc \xf0\xc3y\x11j\x0dp\xe7xi\x14'0\xf5c2I\x83k\x91\xe4\x85n\x94(\xa6D\xe3\xe2\x1a\xd2\x05\x81\x1fWq\xb4\xda\xa6D'\xf9\x11V\xde\xe4\xd2\x9b\x93.\xbcO\x08\xfc\x987\xd8E\x865\xff\xd3v~\xa4\xfbl\xe2\x05\x01mb\xd9\x85\x13\xe2Ma\x19\xc5\x84r\xae\x8b4]\x0d\xef\xdf\x9f]t\x97\xe4~\x96\x90m\xfcz\xbb\xe8\xc7\xb8I$<\xc48\xd0\xe3\xe8\x0c\x0e\xd0\xd93\xf7W\x15\xef\x18\x91x\xb7 \x85\xacS\"\x9a~\x82\x86\x97\x94\xf1N &?g~\x8cZEY\x9eb|\xb7\x9f&\\\xd4\xf2\x13\xf8\x91vD\xe9(\x0c\xbf\\\x1f\xb9\xbf\xae\xe8\x88Nn\x08\xa9]\xc2\x91&Op\x90\xaf\xe6\xbb\x17~8\xb5\x19\x19\xda\xeak\xc0\x9b\x8b]~r\"F\xaa~\xd7\xabF\x981`\xfc\xba6\xa4\xa3\xe9@v!3a\xbd\xb8k1_\xe1\xf0\xb6\xe7\xb6\xe7p\xe2p\xd0\xee\xa8(\x1d\xa9K\xfay\xdbS\x95\xbeM\x05[\xcf\xd7\xa9\xba(\xaa\x17\x93\x1eb\xd7\xb6\x96\xf2%W>\x8b\x92\x9b{\xef\xe9\xe13\xf1\x12\x92;e\x0fk\xaa\xf0\x9b\xf7\xba*\x85\xbb\xb8\xbe\x16\x14\xd06\xa5 `\x0d S\x84\xe6f\x0c\x9e\xb7\xac\x19\xce.\x99[\xd1\xbas\x8b\xb6I\x97\xacI|m_7x@\x97=\xdeS\xb9\x89\xbaD\x0bk5Bc\xa3\xa8\xb0.9r\x86\xcc\x913\xe4\x8e\x9c\x93\xa6\xdb\x95\x8d\x1c;\xd5\xe7\xa6\xd1\x0f|+n\x953\x82\xce\xc1\x17)O[9\x98\xc7\x8a\x83y\x1b%\xc2c\xd8\xb2}LhPv\xec\xae\xfd\x12\x8a\xbb\x10\x9fyuK\x0b\xd97\x83f\x03gs\xdd\x98Zr\xbd\x18Z\xa8\xad\xb39*\xaf1\xf1\xc5\xb5\x9d\x8d\xfbg\xad&\x02mt;&\x8c\x16\xe1\xa5\x1b\xbf\xaf\xf6\x7f\xd3\x8a\xcc\xcd\xeb\xbd^\xc5=\x8b\xf1|R\xf5\x85p\x00\xdc.\n9?I\xbd~B\xe6\xc7\x1fW\x85k\xba\x05-\xa3\x13\xf1\x9e\xa4\xfc7\x9c\xd3\x14I\xa1\x18\x95\x18[\xff\xf2/R*B\x0b7p\x835\x19\x91\x07\xc8^W\xe1\xc8\"q\xd1\x81\x8b\x11T2W\x1a\x80\xbb4\xc7\x14\x93\x12\xcb\xe1\\rjW\\i1\xb7\xe8*\xe4\xc5\xda\xcc\xb5\xfa\xebJ\\\x82\xfa\xa8O2\x00\x9e{\xa9\x94\xb1g\xea\xa5\xc4\x90\xb4\xa7\xf2%[\xdb\xe2\xdb\x98\xcc\xc9\xc7\x95\xc6\xeb\xd9\x84F\xed\xe0y^\x8f\xac\xfaT\xd1\xe2\xc4n8\xaa\x19\xd2\xd6\x1d\xc3\x8d\xc7\x9e\x98\xbd\x17\"gS{\x86\xd6\x1f\xc5\xac\x0e\xae@]\x05\x0e\xe6\x16#\xaa\x1bP[\x1a\xd3\x14\x89\xae\xfc\x17\xffH\x8a\x88 #v\xc5&g/\x08\x14I\x05F\x94\x95\x0e\xba\xf2\x8b\xc0\x055\xe8\xe7\xad\xccb\xebb\x01\xe5W\xfaw\xd4\xbe\xd5\xdf\xeb\xeewy0\x84[\xb5\xb6.\xc2\xec\xef=tLa\xc5\xfdV\xf6\xcf>\x7fu\xf8\xfa{C\xbc\x87$\xf5R\x7f\xd2\xae\xee\xaa\x08\xb4\xde\xa26\x8f\xf2\xba\xc1\x07\x0b?\x98\x1em\xfa\xd5\x9c\xa4\xcf\x199\xa0;P\xf9\xe6\xfc\xd5\xf1\xc9W\xc7\xcf\xcd\x9f\xbe\x0c\xfd\xd4\xf7\x82\xd3\x14S=l\xf4\xe9\x914\xdcM>\x8dI\x88\xfe\xbd\xe2\x8b7\xaf\x8f\x8e\x8d \xe4[\xe8[?\x08^\xb1p\xaa-@\x92\x7f\xf6\xdc\x9f\xde\xe2+\xda\xd9 \xbb)\xd4\x80\xd4\x84G\x8b(\xa3\xe0\xe0m\xbc_MK\x10m;I\xf5\xbb6\xe3}\xeeOo\xf3\x19v\x17.[\xc3\xe7\xfd\xeb\xd3\xc3\x17\xc7\xe7\xb7\\\x13\xdd\xd7\x1b\x03Y\xd7\xc8\x06S\xcf\xb0\xaa\x94\xcf\xc1z\xf3\xe1\xf8\xe4\xe4\xe5\xf3\xe3\xf3g\x87\xa7\xc7\x1a\xe6\xa7\xda\xce\xc4Htp#\xc6\xfe\x9aLq7\xbd\x88\xa3e\xcd\x8el\xd3\xd7\xcc\xd8\xd7\xd4OV\x81\x87I\xceZ\xb2\xe4\x80\x84W\xfa\x0eT\xbd\xaex\x0c\xd7F\x82\xa6\xb6\xee\x8d\xb2\x9c\x9a\xd8\x9e\xf2\x93\xdf{\x84\xec\x9e;,\x85\x86\x0b;\x1d\x87k\xb4\xc7\xe1\xd9Fw\\\x1aR\xdaz\xdci\xb7\xf25f\x1b\xfc\xfb\x8d\xab+\xd3\x060\x85\x9a\xa1\xddzT\x86\x01}\xc6X*g\xc7\x06\xc3Q\xbe\xc5\x00G\xea\xbb\x11L\xed\xca[ly\xa8\xad\xbd\x11BJ\xa7\xf1\x06\xc3^Il\xaa\x00a\xfenS\xf8\xe5\xccC\xeb\x01l\xb5\xaf\n\xed\xf6\x10\x94\xf7\x91\x1f6\xb7*\x1e\xc1\xe85\x1b\xf5\x8b\x07\xc7\xa3\xda\x02\x86\xadm\x01A\xe8\xbd(\xbb\x88W\x9d\xed\xba\xa5Odo\xf9.\xfc \xadhy6\x9b\xef\xa3\x0c<\xbc\x10I\xc9r\x95\xfa\xe1\x1c\xd2\x88gi\x07\x0fb\x92\x90xM\xa6\x88)t\xa4.\xfc\xf8\xc7\xe4G\x17\xd2\x85\x97\xf2\x03;\xfc\xe1O)\\\x10\x88B\xbc\xa9\xb1\xf8\x8aZpI\xae\xbb\xf0\x9c5\xe5cn:/,,\xa6E\x8b\xf8\x86x\xd3\xc7\xb4\xce\x95\x1f\x04\x90\xa4\xf4\xff\x17\x04\xbc\xc9\x84$,94o\\\xb6\x17\xff\x93>t\xbe\xe9\x11z/\x04\x9a!\xee\xb5\xeeA\xf5\xd7&\xab\x03\x12\xcf=\xa9.4\x1c\xc0d\x1c\x9eqE}\xfbq@!^F\xb6\xee8D\xbd\x87\xe7\x82\xd5z}\xe9RR\xc8^GY,\x19\x0b\xe3\x0dY\xba\xf0B\x88\xc2 \xe9\xc2\xbb\x85\x9fP\xc8\xcf\x02\x7f\x92\xc2\xd2\xbb\xa6k3\xcd\x08m\xc9c\x87Z\xd7ba\x99\xd7\x91?\xb5Q\x8f\x8ct\x0bo\xad\xe3\x86\x80\x93\xf2S\x7f\x01,?\xbc\x13}\x1ch\xf5in\xd6\\\xe3\x86Q\x99Mh\x9a\x97\xa5\xd1\x85\x1fN\xcb&\xf7\x1b\xdcA\xeb\xd3\xfd\x80d$\x98\xa8\x88E(b%cbF\xacs\xcd'\xf7\xeeQd*\xb3p,tm \x8f0?\xc3\xcc\x9b\x10\x13BEk\x12\xc7\xfe\x94\xa3\xd4,\x8e\x96\x1c\xa9\xe8\xd7\x90\xac\xc8\xc4\x9f\xf9\x13\xb40\xef\xc2q\x98d\x0c\xc3RVkI\xd2E4\x85\x10\x93\xd1N#\xbc\x01\xa6-\x06\xde\x8a\x85\xf2\xc4\x91\xf0jhjH\x1c\x97\xdd\\\x94\xb7\x82\x08\xbb\xfb\xe9\x93\x96a\xbc\xcd\xcc\xbe\xc8V!\xedn\xe3\x90q3\xa7\xf00\x11\xa5\xc8`\x1cZ%\x0d\x7f\xaaL7K(\xd9/&\xc8\x160\x8a\x8bAQ2\xceg\x02/\x19\xe9v\xe1\xa7,I\xf9\xb71\x99g\x81\x17\x17\xb6\xf4.=w\x08\xda\x86n\xde\xff\xc6\xbd\xe9 \xea:\xcf\xd7T\xa8\xe1\x8c;\xde\xc7\xfb\xa4\xf3\xf3\x98\x0e\xf60K\xa3g~8}\xeb\xf9\xb1&\x863\xc8\xac\x83G\x8f\x96P\xddf\x19\xcb\x14\xdee\xdc?.)\xff\xedh\xa3\xd0\x8b\x07\xd7Xm\x8c\x19Vxx\x8d\xd5x*\xad\xb9ch8\xf6Z\x98\x8e\xadp\xda\x95\xfe\x9a/\x02\x03{\xc5\x12\x01\xcd\xaa_;0\x1b{gt\xd2\x93\x86\x96jbQ\xcb\x0f\x9d\xd3BG\x00\x9bF\nu\x86\xd3h\xbd\x82\x01\xc4W\xe8\xe6\xd6g\xa4\xa2+(y\xbb\x13\x0c-\xf5\x9b\x16E~\xd6<\xa4w2\xf6Zr\x8f\x80\xfb\x1b\x03\x9b\x9b\x99\x80k\x95\x00\xf2\xd7\xea\x0e|\x1f\xe6V\x04\x94D\xc3*\n\xfc\xc95\xfc1A\x94\xbe$\xf8\xf3jAB\xb6\x03\xe7\x14\xbd\x8b\xadI?Ab|\xcdV\xbff8\x07\x10\x8f=\xc6\x13\xd0\x1f\x14\x19`\xa8\x1b!\x8b*\xcc\xea\xae\xf3\xba\xed\xa0\xcfCT\xf3\xaf'\xcd\xf0d\x11\xadY*\x16\x8f\xf6\xe3\xe6\x1f\xd7~[\xc3+T\x8f\xf8V\x84~a<\xef\xcbbIds\x8b\xb2\x9a\xfc\x01\x9a\xf7\xc4\x05kI\xe29\x11\x89\x97^G\xcf\xb3U@\x0fd\xf25\xb9Nlg\x08G^H\x8f]\xac\x06a\x14n\xb3f\x12$\xe0\xc4\x01\x8d\xc8\xc2r\xa7\x95.\xf5\x90\xe1k\xec\xeb]\xcc-ZXo\xe9U\xc4\xe9w\xc2\x8e{\xca\xe9'\xde\x92P\x14\x1c\xe2\xd1\xdb\xead}LA\xb4\xc2\xa8\xb3\xf4L`Vr\xa2\xea\xc4\xcb\x12nNv\x15\xa9j[\xdb\xa1G\x9c\"L\xdb\x8e\xe088\xdfMw@i\x9c\xf4p\\\xd0\xb7\x97\xe4:\x11,0gL\x0d.\xaa\xc2\x86\xb0\x15ZL\x9bL\x11e\xf6\xd2x\xee\xa1OI\xd7[\xad\x82k\xccE\xe2\xe6\xde \x89\xc1\xd1\x91>(\xd4\x1a\xbe2\xdf\x8f\n\x9b\xb8\xc2\x11%n\xae\\\x18{\x84\xe6\xd3\x1bC\x1ek\xe2G\x83t\xebf\xfbl \xf0\x87>\xd9I\xbb\xfd\xb8\xfel\xc0\x1b\x01n\x04\xea-\x87z\xdd(*\x10f=\xa7\xbb%\x16`WzR[\xd1\xe77\x06\xfd5A#h@X\xb4\x9e\x9f\xfb ~\x84F~\x9a$\xeb\xa0'\xa9U\xa4]6\x0f\xb0\xa4\xaa\xbf\xf5\x18\xf5\x06/\xad\xc6xn\x1c#\x8fY\xce/\x90Z+\xb7p|L\x1f\x1fwI\xf8sF2r\"5\xc51lc\xe95\x9fpK8 c\x9c-\x15`\xb7\x87\xd5\x859\xd90HV\xa2\xf6\x85|\xab.\xf3\xf6p\xae!m\x05d\xeb\xc8%Q\xaeT\xe3\x1a{P(\xd0\xa4*,\x88|p\x94\xf9o\xecY<%/\xc2T\xdb\xaekP\xf5Cg\x04\x83\xa6\xf6A\xd1Y6\x8b\x05\xc0%\"2\x0e\xa1\x03\xfd\x16|*&\x84\x181\xca\xe4\xdf6\x10\xc2\x0d\xa2\xaf\xc8\xb3\xb7\xe2\xda\xedj\x96c\x91\xd07&3\x0cj\xe6\x96\xf6\x850R\x0f\x0b\x93\xf9T\xe4\x172ODh\xef\xf0\x13\x85U\x80\x03\xedk\xdbiT\xe8E\xb6\x865\xf3\xd0\xb0\xaelO\x86\xcc\xf4\x1f5]\x0caI%_\x8e\xfe\xb9\xbf:\xe5]h\xd7\x16=\\\xe4\xeb)*\x050~\x9fR\xc1\xc4\x97.\xee,G\x81\x88\xa7\xdf\xad\x0d\x12o\x8c\xca\xf2\x92\xb5KH\xae\xe0\xc2\x95_\x96\x82\x88`\x8ef\xb9P\x87\xe2<\xd5\xa0'\x12\xdf\xdb+\xd9\x02\x9c8\x8e\x0b+\x9b\xb80\x17?R\xf1c\x89'\xacz-\x82\xbe\x08\xdd\xa9rS\xa2V\xb3\x1d\xd4U\xc8\x83c\x17\xed.XR\nx\xbb\xdb\xedR\x86\xb9\xaa\xdab\xcb\xe3/W\xcc\x1c\x05<\xf8\x915\xf0#\xe7$\x91\x99N\x1cy\xfe\xd3E\xa64'\x13\x8fJ\xb4\xfc\x83A\x14\x92\xffJ\xcb~ \xca\xad\x8d`p5\x80e\xd1\n5\xa9\xd3Y\x80BM\xc1\x0c#\x12j\nD\x04BM\x91p\xd8\xd3\x14\x89(\x83\xba\"\x1eWPS\x84\x91\x04u\xefE\xc8@\x8d\xd62\x8fa\xa6\xf9N\x0er\xa5\xf9\x94\x85\x052N\xcc\xf0\x15\x8f\xc8a*a\xc1\x174\xa5\xdcU\\7\x05\xe6N\xab\x98\xc3jy\xbe\xb0j:\x19\xbb\x10\x96L'C9\x9f\xeag\x10\x0e\xee>\xc9n\x00\x8a[\x13\x17\xac\xf3s\x92\xbc\x8a\xa6Y@,WA?4\xaa\x1f\xca\xd2\xcc\x0d\x1eI\xfc\xf0\xa9\xa3\x1e|\x8aUt\xce\x85\x98dh`\xef\xdeE\xab\x0b/\x1eB$\xfa\xa9\xd42Y\xad\xde(\x84\xd2\xcd\x89\xfc\x8e\x86*\xda\x94\x90\xfa\xa8\xf9\x89\xbb\x05\x14\xe0\x00b\xd0\x8dMX\xd9V\x1c\xb6\xe0\x1f\xbe(\xd5\x03be\x87v\x7f\xf7\xa1\x9a\x03\xd4\x17E{=]^QVT\xc9\x1c\x9a\xe5E\x95l\xa4^^\xb4\xaf\x16%\xdcfU=\xa8&\xcc\x0fWy;\xa3+\x82-\xed\xef1\x9e\x88\xae\xdb\xae\xa3\xb6\x1a\xf0\xf3l\xdf\xd1\xa5*]\x19\xcfg\xd4'\xa6\xe5uN\xeb\xd7\xd9D\xcdoJ\xd0^\xd4r\x07\xd2\xb9a\xba\xff\xb2{.\xf8\x02\xd7\x1d.\xe9\xea\x9c\x7fho\x88\xb8=\x172\xf5\x03\x9br\x9f\xc8v\x9d\x9f#\x13\xd6s!.*\x11\xc7a^E\xb9 \x1d\xea\\B\xc5\xa5|7\n\xdf\xc7\xc1\xd1\xc2\x0b\xe7\xa4\x95+V!\xe6\xa5^<'i\x9dCN\xd4MH\xca\xc4\x00\xb3\x80\x97\xc5\x81JE\xc5\xa3\xf1\x8b\xbeq!\xea\x06\x917=]\x91I\xab\x01GL\x0e\xebR\xa6\xf7\x10\xeb\nA\xeb}\x1c\xa0\x87\xb9\xae\xc64\xba\ni7j\xba\xf3|\x0c\x08\xb7S\xcc\x8e\xd0j\x18z\xb8\xa1\xe7\x9ax\xb3\x88\x89\xc1.\xa6\x98\xb2Mp\xc0\x14\xae\xd87\x99\xd2Y\xe0\xcdrw\x15\x935 \x85t`\x1b\x06.f\xf6>\x0eZ\x0d\\\xea;b\x82W7\x8b\x83\x0d:\xc4\xb1z\xf1\xa4~\xff\x88G\xc0\x89\xa2u\xd0]yqB\xd8\xd7\x8e)\x834\x19[Y\x1cPq\xdb_z1\n\x91\xd6Y\x1ew\xd2\xac\x9c\xa5\\\xd8\x95\x1fN\xa3\xabn\x10\xf1k~\xdcW\x93\x08#\x1f\xdc\xbfoA\xa7Rc\x11%\xa9\xe6\xf5\xcaK\x17\xe6\xeeXmJ\x98\xf8w\x0b?I\xa3\xf8\xba\xfa\x06/v\x98\xcc^-\x93un\\\xac\xb4,\x97\xc5\x1c<\xa0\x83e@KH\xec{\x81\xffK\x0e8]\x86\xde\x9b*\x1am\xb4>b\xd3\xccIz\x14\x853\x7f\x9e\xd8\x0eE\x8c\x84\xa2\xf4\xd8\xa0p\xc1I\x11I\xc7\xc4n\x86r\x899\xef^\xe7\x12Pj\x88v\xc5]\xb2\xf0B\xa7\x0d\xa5\x81<\xb5 \x99\xbe\x0c\xa7\xe4\xe3\xd0\x90\xc2\x1e8\x03$\xe1\xae1\xcb\xb1\x89FE\xe1\x0b?HI\xfc\xc5H+\x03\x7f\xe0]GYZ\xa6k\xacc\x9d\xfd [t\xae<\xd1\x0f\x02\xc9q\x8a\xb4\x90\xa1F\x14'\x14\xd8\xa6\xf8\x92\n@\xab\xfap\xdag\xe9\xa5\xd6\xf9\x88b\xae'\x9dbL;B\xdfF\xa5\xb7\xe3\xea\xa8\xf1\xbe\xcd2\x1a\x98kl\xc29g\xd5\xbc\"L\xd9\xd4\x8cYf\xa0\xb5\xc6\x992\x88T^\x10\xf4\xf3D\x9du\x8b \xd6a\\\xcau\x86f\xa5*\x11Z\xc5\xea\x8e7\x7f\xc4.q\x9a\x08\x02\xde\xa8\xd1\x1d\x1cr\xa2P\xb7\xe9\x0b\x15\xb0\x86\xe0\x9bU\x981k\x7fc\x1a\x03Hg0v1F\xc7`|e\x0bl\x10OkZ\x03z\x9ch(j\xbc\xb7o\x81D\xe2\x06\xec\x8ep\xe86g\x02\xe7\xd7\xa53\x816\x94\xf3\x1c\xe9\xb8\xd0\xf8vK\x10=C>\xe4\xf6@`Z\xce;\x9dy\xc3\x1eb\x80\xd1z\x07\xca\x0f\xbb\xfb.\x11\x13s\xe5\xb8h\x18!n\xae\x89\xf7!\xb6\xf5\xcc\x98pU<\x11\xab\xf8\x8d!i\x9fx\xd0\xc9\x8f\xae\x93\x1f\xce\xb9\x95b\x97\xffIwHVK\x1e\xbc\x9a\x9bqk\xe6\xf9\x01\x99\x1a\xda\xc4\xf3\xde\xebN\xa2\x00\x15\xf3V\x8c\xd9=!S\xdf\xff\xff<\xcf\xab\xb3\xac\x0b\xd0\x11\x80\xe1\xa7y\x9c+\x83\x0f\xa2x\x16\xb5\xf72<`\\=I\x9bb\x17f\xfa\x15TIW\xd3-+}\xa6\xccFh\"\x8eO\x9e\x9aYh\xadE:?\xdd\xfeP\x1f\xdc/5\xb6\x87\xe2\xe1\x1b'\xa50\xad'v.\xe7\xcek\xac\xa4(\x03\xb6j\x98\x03\xcb]\xd94\x054\x07e.S<\x9f\xdd6\xff\xb0\xf6\xb3E\xba\x0c^Dq\xfeQ\xd5uK<7.\x18\x87\x88\xf9\x95\xf2(f\\`\xf4\xf0\n\x86\xa2\xad\xf9;\xd6g\xd3\xdc\xfci1\xbe\xfa\xe9L\xfd\xc4\xbb\x08\xc8t\x08Y}\xc5(d<\xeb\x90\x116I\xd0\xad\xff\x8e\xaf~PO\xb0\xeb\x808uLL63{[\x08b+\xc9\xb0\xcdH\xc2\xd2\xac\xd6\x01RF\x10\xd1\xf4v\x16\x07\xdb\xfcS\xe3\x87)\xaa\x8dY\x9a\xad\x1az\xaa\x01({c\xfeFl\xa5\x02\x94Y\x1c\x98\xab\xb7Z\\\x9e#\xd1pi\xea4\xef7\xffV@\xe4\x19\xbek\xe1\x13\xf8\x93\xcbaem\xf5\x03u\xc1:\xfe\xb8\n\xa2\x984\x05;3\xa2\xc4\xd4_\xb7F\x88\x14\xb5\xd4\xfa\xcd_\xb7\xf17\xe9\xe3*\xf6V+\xf2\x85;a\x13\xd9\xbem_\x91 b\xe6\x8d\xb6\x9c\xd7\x0efA\xfc\xf9\"\x1d\x82\xb5\xd3\xab\xc1\x86+\x7f\x9a.\x9a*%\xf1d\x0831\x90\x1a6#\xa0\xfd\x9d^y\xf39\x89\xe1\xfdK\xc3\xack q\x89\x80'\xac)\xcb\xa9\xfb\x04\x13v\xb7]\x96\xd2^\x11\x8bS\xb7YN\xb3\x8b\xa5\x9f\x0eaaZ\xc1Uw\xe9\xad\xda3\x0b\x92\x04\x9et'A\x14\x8a\x898\xf4\xd3\xfa\xe3\x87q\x06f\x9an\x92\x7f\x1d\x1d\xa5W8\xf73\xc7\x95\x9a\xbe\x91\xa8R\xceCK\xdb_\xbe\xacb\x90Qojd\x18\x94\x02\x80`J~\xccxy\x7f\x15\xce\x1f_x \xd9\xdfu\xfd\x0f\xcf\xde\x9c\\\xf5\xbe\xfej\x1e\x1d\x1e\x1e\x1e\xbe>}\xbf8~??<<|\xb6K\xff&G\x87\xaf\xe8\xbf\xaf\x1e\x04\xfb\x7f\xa5?\xbe\x7f\xf1\xec\xd5\x87\xe3\xf7\xb4\xc2\xfb\xd9\xd5\xad\xfe\xeb\x05\xbf<\xbb\x1f\xf6\x9e\xcd\x16\x1f\x9f\xad~\xba>\xea}\xdc\xbd\x7f\xff\xfe\xfd\xce\xcf\xeb\xdd\xa3\xbf\xac\xfa\xcf{\x8f:\x9dY\xbast\xff\x97\xbd\xfb_\xf7\xf7\xef\xbf\xdfy\xf0\xe8\xfd\xec\xea\xf9l\xef\xe1\xfd\x9f\x1f<\xea\xbc\x8f\x07\xcf\x07'G\x97\x8f\xe8x\xfe\xfc\xdd\xc9\xe9\xbb\xe0\xd5\xe1\xf1\xf1\xe1U\xf8\xe8\xfe\xfd_v\x0e\xe7\xeb\xdd\xfb\xeb\xef_>\xbf\xaf>\xef_\x91\x9f\xfc\xfe\xe5\xe1\xe1\xe1\xf3\x87\xa7\xefO\x9e}\xf8\xf3\xfcY\xf0\xb7W/\x0e\xa3\xbf^=?|w\xf2\xf1\xe2\xbbg\x0ff\x9d\xf5\xdb\xaf\xc3\xe0\xbb\xc3\xbf\x85\xfb\x97\x83\xc9l\xe7\xf0\xd1/\xf7\xdf\xce\xde\x1c=|\xf9\xf2\xfb\xd0\xdf{\xb1\\\x1e>{\xf5\xf0\xc5\xab\xc5\xd5\xbb\xfe\x83\xc9\xa3E\xb8\xf0\xff\xf6M\xff\xe8j}\xfcM?]\xbe}\xde\xfb\xf9\xf4\xeb\x9f\xf7\xe7\xdei\xfa\xed\xfd\xcbW\xdfy\xe1\x87\xe5\xe1\x87\x93\xe7\xef\x83?\xf7\xdf\xac\xb3\xec\xdd\xcb\xd7\xd1\xfe\xe5\xa3\xde\xe9\xc7\xd9\xc3\x9f\x937\xe9\x8b\xfd\xf9\xeel\xd6\x8f\x92\xb7;o\xc2W\x93\x0f\x0f\xa6\xbb\xab_\xa6/\xdf\xa7Y?:\xdc\xfd\xd0{\xfe\xb7\xe8\xeb\xe5\xc7ep\xfc\xfd:}\xfe\xfe\xa7\x9fNw\xd2\xe5\xd7\xcb\x9f\x9fuV\xdf_?\\=\xef\x7fx;{\xf0\xd3\xdb\xe3\xde\xcb\xdd\xde\x9f\xff<\xf1\x9e]\x85\x19\xd9\x9f}\xf5\xcb\xfc\xfat/\xfd\xee\xe5\xfbG\xfbo?<\x88/\x9f\x7f\xfb\xe7\xd7\xdf|\xe8=\xffz\xf7\xc5e\xf4\xf5\xf2\xc5\xea\xf5^\xf4>\\\xfb\x0f\xbf\x8e\xc8\xe1\xe0\xfe_\xbeK\x96\xdf\xfd5\x8b.?\xf6\x12\xff\xa4\xff\xd5\xc3\xf4\x9b\xcb\xd7\xfb\xe4\xd9\xa3\xe4\x9b\xab\xbf\xac\xee__/'\xd7\xde\xdb\xfb\xef\xe2\xb7\x9d\x93\xb7\xcb\x8bW\xaf\xfc\x8f\x93\xbf|\x98\xbf;\xe9{\xef\xff\xf6h'\xfa\xea\xbbd\xfe\xdd_\x0f\xbd\xaf\xf6\x8f\xaf\xe8\xb2\x1c\x9e\xbe\xff\xf0\xe6\xe4\xeb\xbd\xa3\xef_\xbe\x1c}F\xd0\x19\xd2\xbd\xb8N\xc97Lj\xae\xd3.\n\xad\xe2\xc4N5\xf2\x18\xaai\xc6=\x8d\x84\xc34-\xaa\xe9\x1c'\x16;\xf0\xcf`\x87\xd0\x81\xd8\x81\xfb\xb0\x0b\xdb\xd2]\xe9\x8d\x0b\xa4\x9bF\xcf\xaeS\x82\xa6a\xf5\xd7f\xb9\xe9 \xb3\x10\xc4Q2\xcb\x17:*\xe6\xfc:\xee\xf3\\\x14!\xb9\x82\xa8\x92\xe4\xa7\xc6N\x03\xc7I\xa0C+\xb1q*f\xc3x{\xe6BF\xe99%\x06=\x97\x05q\x86\xa7\xd0\xc3\x0b\xe2m\xd8\x85!\xad\x120\xfb\xc5\x00\x9e\xc0\x8c\xfe\xd3\x19\xc1\xae\x83\x90\xf5\xc7iw\xb2\xf0\xe2\xa3hJ\x0eS;p\xce\xe0\xc9\x13\xe8?\x84O\x95\"\xe8@\x9f\x17\x0f\xf4\xc5\x03V\xbc\xaf/\xddq($\xc6I\xa7\x83\xe6\xfa\xf0\xf4)\xf4\xf7\xe1\x1e\x0c\xf6\xf6\xd4\xf7\x0f+\xaf\x07{{pO\x0d-5@)\x9bI\xcf\xe6\xc9\x18\x06K\xe7\xf2\xf4)\xecV;Q\x18\xb3~\xab^\xfa\xbdZ\x90\xed\x9a!\xf6\xf4)\x0cZ\x03\xc0\xd1\xa2\xb4WF\xe0Y\x1c-o\x87\xc2B\x97\xc5\x8d\x12\xe0\x8f\xb0\xc3\xc2=\x8e9>\xf782\xc36\xf8,\xc7\x83G\xff\xe9\x8c\xa0\xbf\xbf\xf3p\xc7\x81\x88\xb1\xe13\x8a\xe0\x99\x8b\xd1n\xb1\x04\x9e\x82\x07\x07\xe0\xc1\xb0x\xa7\xb2\xc0\x0c\xd2>\x1c0@\xa7c\xda\x0d\xdd?\xbc\xd1x\x8c\xc0\x19\x9c\xd1\xcd;&\x0c\xae\xf7`\x7f\x87\xbe\xb0F#\xcbq`\xc8\xb1\xc2\xcf\xd7\xcbf\xed\x0cp\x1d\x1e:\xd016\xdc\xef\x89\x96)b\xe4-\xf3\xae\x06RW\x15\xee=\xbf\x93\xfe)\xf2C\xdb\x92\xec\xb4$E\x91d\xc5\xc9 \xea\xf3\x7f)\x84\xa5\xf8\xab\x92\x9f\xdc{?L\x1f\xb2u<\x90\xff\x18\xb2\x90\x88lQ\xac\xc3gG\xcf\x8f_|\xf5\xe7\x97\x7f\xf9\xfa\x9bW\xaf\xdf\xbc\xfd\xeb\xc9\xe9\xbb\xf7\x1f\xbe\xfd\xee\xfb\xbfy\x17\x93)\x99\xcd\x17\xfeO\x97\xc12\x8cV?\xc7I\x9a\xad\xaf\xfe_\xea\xde\xb4\xc9\x91d9\x0c\xb4\xdd/k\xf6\xfe\xc2~q\xa4\x86\xdd\x99\x83\x04\n@\xdd\xa8F\xd7\xeb\xd7\xd3#55\xd3\xfdl\xaa\x1f\x9fH\x00S\xcaJ\x04\n9\x0dd\x82yTW\xcdT\xafQ\xd2R\xa2H]\xdc\x95(R\x07\x0f\x1d\xe4.IQ\xa4\xb4\x07wy\x99\xed\x9b\xf9#\xfa\x03\xfb\x17\xd6\xc2#\"32#\"\x13\xa8\xaay\xd4\xc2\xac\xbb\x00\xcf\xc88=\xdc=\xdc=\xdc\xafo\xbe\xec\xf5\x07\xbb{\xfb\x07\x87G\xc7\xed\x1d\x8b\xa7\xcbat\xa4\xc8g\xe9\xc1\x13HN\xa0\xdd\xf6\x1cqS+\xc3+b\xc18\x93Q\xd9s\xe8#O\xe7\xec\xe0\x9b\xa9z\x9e\x1d\xa4\xf4\x14\xc35\xc0O\xc0\x1e%c\x0e\xa4\x8b8z\x87\xc4\x13\xa3\xba\x15Q}\x99\xc3W\x178\x1bAO\xd0\x0b\x02\x1e\xac\xb2e\x1a\xac\x97\x98\xf0f\xaf\xaaE\xbb\xca\xef\xe7`\"\x95\xd7s\x9b.\xa6v-;\xfcN\"\xb0x\xad#\xbc\x03=\x0eq\xa3\xe4\xf1\xc8\x87\x8c0\xd3\xfeN\x8b%\xd7\xcc\xc3\xdcD\xf1s\xa4\xe0\xa1\x90\x85+.m\x90\xad@H\xff\xb4G\xb0\xeb \xc2\xd8)] Jr(\xf5\xec\x1f\x1c\xf6\xfb\x07G=\x8a\xd7\xf4 \xba\x8c#\xa6St\xdd\x1f\xf0'\x8c|\xb0\xe7\x03*\x9df\x02\xf3\xed\x88y\x18Q\xfc?\x92p>B\xc8\xa0\n9\x90\x00\x07\xbb\xf0\x08\xa2\xea\xad+>}\x99f+\xe4\xdf\x82\xb1\xd5\xb1d\x0c\xea!\x06\x1d\x0c(jY\xe7\xbaG\xbbZyC\x9eM\xd2\x8d\x897\xab\x0b\xbb\xa7\xa0\x02\x0b\xabM\xe7\xfa\x08>\x84\x80\xca\x02\x942\xa8\x12\x05\xdd\x17v\x9f\xce\xab\xe7\xe8K\xf80\x82\x04\xe7L}F\xd9r\xe7P\x85\xa3\x9f\x10\x9cb\xc3}\x18BO-\xb2\xe6E:\xf4\xb9\xa6\xea\x05K`\x04m\xa8\xe6T@\xc4B^\xbff\x14f\x01\x8f\xf8\x18:s6\x08X\xc0\xd3\xa7#\xe8\xcc\xa9\xe4\xd0\xa6;\x18\xe6t\xdb\x9d`\xf9\xc1\xfe\x01|\x88\xe1\xb2E\x03.\x88\xfa\xe6\xd0\x19\xc1\x91\xa3i\x91\"p\xa4\xb6\x14\x95[\x8a\xf3\x96\xb2\xbc\xa5l\xf3\x96(\x91`7 #\x07\xfb\xda\x87N\xf5\x06\xaa\xe1~3}5\xc2W\x8b\xcc3\x19\x9c\xc2+\xef\x15\x9da\xd8\x81\x1e\x15\xbc\x16\xf9\x9ck\xf44\xc8\xf0>\xf5\xd2Ew\x1d\xbd\xb3\x07\xec\xee[D;Z\xbe\xc8\xaa7\x17KU\xe3\xa8?,U\x15Q$\x94\xf6\x0ce\xe8\xef\xe2 \xad^\x93\xa9\xcdiBq\x9b\"6\x0b\x19\xcf\xd1\x9b\xd6\x1c\xe8\x91w\x9e\xa3\xb7o@o\xf4\xb00\xa07\xc5\xd1\xc1n\xce\xbc\xe5\xd1t\x06{\xb4\xc2\x12\xe8\xf0\xd0\xd1\xe3:\xc5\xe5\x98\x93\xd5H\xdf\x8d\x19/B\xa7\xaf\xa3y~\x85\x12\xd4\x13\xe8\xc1\xed-\xbf#\x8b\x8e\x1b,K\xc4\x13\x14\x8cq\xa7i0\x97\xce0v\xd4\xbbH\xd0-)H^y\xafl\x82>\xf2\xcc\x90\xca\xd0\xe3\x14lJ2\xf2\xc7\xbcJF\xbc\xe7tp\xb8\x0b\xb0\xae\xf92\x8ab\x1b\xbf.\xa3KZz\x87=\xf8\xe4\xd5\xc0q\x81P\\K\xa0\x8cM\x9d\xccq\xe0 \xf4\x91\xf3d\x9d\x0ee\xcb\x1f\x8e\x80\x96\xa7\x07\x82\x11\xee\x94%<\xa5\xfd9\x855\xec@\x02CXW\x10\x89n\x89\xa5CQ,\xa1E\x07\xac\xb6v\x9b\xd6\xb6\xc3j\xcb\xeb\x99\x8b1\xc9\x83(\xb5\x82Om\x82\xb5u\x18\xe6\xca\x8d\x05\xac\xb6\x11,q\xf8\xc8\xbd*E\x96\xe6\xf7F\xd0s\x9c\x13\x08hcG'(\x9f\xb5aQ\x88\xbd\x1e\xa5T\xed\x11\xcc(\xad\xdeAzA\x85\xa7:\x12\x94Qd\x0e\xe0\x96\xbe\xeb\xd3w\x83\x13\xf0\x19\xc5Q\xaa\xcf\x8a\xea\xb3\xbcz_W=\x7f\x15:0\x9b\xc2\xed\x08\xfa\x03\xba\xb1\xae*\x1c\xae\xe1P,+p\xca\xdb6\xf7\xea\x0c\xed\xdd\xc1Q\xe5\xc8[x\x85\x96\x1dk7i\xb2\xb8\x921\xd08\xdb\xc6\xdd\x9f<{\xfd\n\x1d2\xf9W\x9d\x87M\x9e\xe6fXI{S&yMW8\xccwS\xf2\n\xf9\x85\xdd@{[w\xa3\xf1\x9a\xf4\x0e\x92g\xed\xa8\x14\x0d]LPd\x87\xf6\xee\xae\xe2w\x1c\xf0GG{\x8e\xd6\xa57\xfa\xf1\xba\xf4n\xe3\xdd\xde\xa8KU\xd3(H\xf9\x185q\xbbh\xf9\x8a\xe3.\xf3\x11\xa7\xef9\x1b7\x0b\x924^g\xa5\x8eq\xa5j\x94\xcaxM\xd8\xfc\x9c\x12\x03\x161\xc1\xe0\xc3\x11\xdf\xd4(\x8a\x8bP3\xeclT\xf5\x83vN\xa0\x85>\xfaH\xf2\x92Rv\x00f\xee\x0fy\xbc\x0b\x9e\x94\xc0\x85\x16z\xce\n\xa7!\x96\x1f\xc19\xe1\xe34\x18\x85\xde\x83\xef\xb1\x84 u\xda\xf0\x88M\x15\xcb\\n\xa8g\x1e\x84\xderY7\xe4\xfa \xa1\x9f\x16\xfa\x13%]\xbe\xd4\xd2w\x83\xd3\x18l\xd84\x08\xf9L\x9c\xfb2su\xfa\xf1i\xa1\xda[\xf7X\x9ca\xa7:\xe7\xc5\xa9\xf3\xcd\xcd\x9aTN\x9e<\x80\x12\x0bV\xc5\xeeYf1\x8b\xe1\x11\xa4$\xf6.\x96E\xc0\x7f\xe5\xc2V\xd14{\xf2 \xbcb\xb7\x1a\xdb\xfa>\xbc\"\xb4\x8f\xf6\x1d\x17B\xfb\xf8\x00=\xa5\x8b\x0e\xd0\x96\x06\x1bu\xbb\xe07\xfd]\x1d\xc7 \xed\x03\xc7\xb6p\xb6\xd2(\xaez\xea\xb0\xeb\x80\xbb\xa6x\xe1\x94\x89u\x83\xe4\xa5\x98\xebM4\xc89\x85\xd2\x9eUyD\x15\xdc\x8a\xe3\x80\xa5t\xf8\xeew\xf3\xee\xe1\x9d[L\xb7U\x8d\xc9\x12\x97|k7\x9a\xde\x0dWt\xefAWtww_Y\xcb\x81\xd3\xe5w{\xbc$ .\xc3Mj\x92\xd7U\x9a\xca\xd8\x8e\xbbg\xd0\x86\xb8\xfb\xb1\x0b\x16\xabU1\"\xb2V\xd8\xe8\x0e\xa4I\xdb\x08\xa1\x9an\x9a\xeeU\xaf\x94\xf2\xa8\xef\xbd\xaa\x14\xc5p\xeb\xa0:\xbd,F\xfd~5v\xbc\xc7j\x19T\x8b'9J\xf1\xc9\xd3cj\x0b\xbd\x07C{p\xec\xd8F>-\\\xf1\xbe\xd2\xc4e \x068e\x9a,\x91\x88\xceQ\x0d}\xc8t\x9a?K\x8b\xfd<\x80\xce!e\xe9\xc9z\x19\xa4\xb6e9\x1a\xc7-\x1d\xeb!\xe3t\xaap\x9b\xf7\x8e\x0b\x87\xd0\x1aA\xc2\x82\xd5:<\xcf\x91\x9c\x1e\x91=\"\x8e\x93\xab\x89\xe8\x0b\x92%\x86\x1e\xabj\x85\x88R \xe6\x0cm/t\xces\x911We\xd3\xf3o\x9f\xd9F\x82\xee\x9cYC\xa2\xee\xfc\x84\x9e\x8b\xc0\xd7\xe4\x15\xcak^\xbbx&\xf5\xec\xbc\xd2\xb1\xdfnO\x1d\x17\xcf\xa1\xf4\xd0\x14\xdb\x0b\xa7\xebG\xa1\xef\xa5\xf6\xdc^\xa0\x02\x9a\xc2\\<\x89\xce\xf2>\xdc0\x0b\xcc\x15<\x85\x9b\x13\x07\x96\xec\x9e\xd3\xc2\xc5\xb3\xf3l|Cke\xe2\xc2xM't1^\x1b\xf4j\xd2MK\x18B\xb2\xc9\xe6\xd9\x90\xe4<\xe4\x81\x83\xd6w\\Cr(\x0elRO\xb1\xc3\x95\xbd\x19\x88\x8d\x7f\"\xb5\xda\xdf;vl\x8b\xd6n\xb9[\x88\xc65f\xb8\xc0\x8e\xa9`[Fp M7\x19E=\xf5\xda\xf9\xdc\xfe\x89A\xefv\x928\x1f\xda_xW^\xe2\xc7\xc1:\xbd\x9dy\xa9\xe7\xec\x04+u\xd4;\xe3\xcf'\xd7\x83^gr}\xf8b\xbasY-\x12\xb1:\xc7\x9f\x0f\xa7mg\xb8s\xb9RI\xdd\xd8\xeaZ.X;\xb2\xef\xb9\x19K\x12/\x0c\xd2\xe0K\xf2\x83x\xd9t\xf3@\xd8\x92\x98R5\x15\xd7~\xe8Y\xce\xd2y\xb4n\xb4\x12 k\x95\x85\xde>\x1d\xf7\xa6\x0e<\x85\x8e&'\x95\xed9\xdc\xd6\x84\x8a{\xaf\xbb\xa2\xd2\xb3\x1d9\x8e\xb0-1\x0bm\xdcMI\x922\x15\x8e\xe5]DY:\xbcXz\xe1[\x0b\x86\xe0a\xc4<\x19hB\x81M0\xa0\xc0\xe3\xdd=\xbd@\xb4\xbb\xbf\xeblc\x1e\xc6`\xf8\xdd4\xfa$zG\xe2\xe7^Bl\x0c\xd1\xda\xa6C\xa6t \x03\x96W\xe3\x9e\x1a$\xaa`\xbb!\xec\xe9\xc3:\xf4\x0f\xef\x1e\x98\x027Yy4[\xcaUE\xf7\x0e\xaa h\xf8\x04\xefU\xb98\x93\x05\xaad\x8f\x89\x02\x87U\x81\xc2\x03\xae\xfeS%\x81\x98N\xb8\x14\x93e\xc8\x05\xcarIf 8\x85\xa4+\xf2\x87\xe5\x05\xebg\x0d\xb3\x12V\xe6\x0d\x03k\xf2\xa4\x8e\xfal\x80\xaa\xc2<\x92\x93\x1b\x06<\xdfX\x1b,K-\x9a\xc9E}8\x05_\xa4\xfb\xa3\x9b\xa2\xf2\x82\xe0\xc1DS\x19\xaf\xc2\xeaa/\xc3B\x15;\x1aA\xc7\xa3\xdb\xae\xd3\xa3\xbb\xad)~\x80\x89\x9dm.!t\xfa\xdc7\x83\x07\xc1K\xb9\xa2\xb9l\xf2f\n\x90\xd89\x81v;\x84'\x10\x9f8\x10\xf0\x00\x83<\xbcv\xa8\xe6\xc6\x16s\xfa\xa0\x18\xcb9\xa5!~.Z\xed*\xc7\x11\x15\x8f\x83\x1c\xd7TdfX+\xe5\xb2\xdb\x10\x1d\xcd\x87\xac\x88\xdf\xde\xc6\xf0\xa4\xa5\x12 \xae\x86(qW\xf5\xda\x86\x94G$5\xe8m\xc4\xccUB\xd8\x95\xb4$\xef\x95.\x06h\xdbf]\xd4/`\xcc\x9d\x06NE\x07B\x18\xc2\x8c,IJ\x10R\x8ap\xd8\x8c\xa8\x02\xf5\xaa+\x99O\xfa\xb6\x13-D@1\x88\xbb\xe2\xdb\xee^\x95\xe8 \n\xaeO\x92\xb5\xbb\xaf\xcb\x92\x85\x8c\xe0\x8eC\xc8\x0bhu\x83\x04%zSx\x01:\xa5\x01c\xda\x11\xa3H:r+>\xcc]\xe5\x149>\xe5\x88hZF\xb3\xb2\xbe|\xc2\xcb\xc7v\xe8B_:\x9e\xd0w\x93e\xe0\x13\xbb&\x91\xb27N\xa76\xa5\xaaI\x193\xef\xbeR&-H\x93\xa8 0^\xefe!0)\xdfd\xdc\xd7\xe1\x14\x02J\x8dQK\xf9\xe8\x11\x84\xf0\x94\xd9\xf4R<\xd7\x88\xa6\xb6\xd8\x03\xdbv9f\xa4Z\x99_\xf3P\x98YOx\xfbt\x08<\xc5\x1eS\xda\x1e@\x1b\xbd6P\n\x0c\xf9\x03\x1c\xa0\x93\xbf\x84a\xfc\x02\x87\x91\x7f\xfar\xc8_\x0e\xa1\x83\xceXO\xa1\xe7\xb2/#\xad\xd9\xf0\x8aG\xbc`\xac#@\xd6\x11\xc3\x13\x08N\x1c\x88Xh\xb1t\x1c\xd3\x9e\xe8\xfd\x11\xa3;\xe3\xc6~u\xb76\xed\xe2A#.\x19\xe5\xb3\x94m\xb7\x94\x1dp\x1bIO3\n\x18ZJ\x0b\x15\xc4\x16M\x08\xb2`\x8d'\x93lv\xd4\xebu\xe8\xdf\xf9|>\xad\xb8\xa3\xc7\xa2Po\x97\x15\xea\xed\x1e\xcc'\x93lN\x06\xf8sN\x06\xf4\xe7\xa07\xc3\x9f\x83\x9eZ\x05\x9dd\x0b\x9b\xd9\xf5\xc7\xac\x99\x0bSs\xe8\xd85\xfe\xbc\xa1S\xe8\xc3e\x9f\x0e\xe5Jg\xe4\x00\x8b\xcf\xe6\xf3\xa9\xf3\xd5\xe0\xbd\xa52\xf0\xf2`/\xe6\xf3)\x02|sC o(\xcfk~\x9b\xe7Fw,\x16\x89A\x95Y\xb1\x999\xe9\x11\xf6g>=\x15i\xefm\xde\xe9A\xaf7\xe3\xb5\x8e\xb9G\xcd\x94\xd3\xcd[\x0bEL\xc7X\x87\xe5|XU\xff\xce\xa5^\x8e#\xd1\xd5S+\x0f\xed\xe6BX\xad\xbf\xd2\xef%\x8cx\xb6X\x1bGg\x9f\x8e\x8a\x91\xe2\xa0\xe7\xd0\x06\xdf\x05\xeb\xd2\xba\xeb\x9eH\xf9\xa9r\xe9\xb0+\xc2w\xdf\xc6\xd5s\x898\x10V\xa3\x01\x8am\xac;\xb1\xf0\xd1Z\xe3\xc7\xff\xe5\xe7~mj\xddkd\xf5\xccY\xc8JvdS.\x9c\x1f\xf13<\xe2;\x18\xb7\xc72\xdb=\x1a\xf7rC\x02U\x13\x9f\xd31\x8d\xa8F\xde\xd7Pr\x14\xff\xa2\xdc\xdf/\x1d\xb7\xdb\xc1\x14\xe9y\x00O :q\xd81\x87\n\x06\xe98\x98\xa2\xeb\x8dA\x92l:\xcf\xd4`\x83A\xcfU=s\xa3\x96g<\xb9\xf6{\x9d\xc9\xf5\xec`r=;\xeaL\xae\xe7\x07\x93\xeb9~\x99O\xb2^\x9f\x92\x82\xac\xd7?\x9cOw.kpf[zx\x1f\xe4\xb2S\x14\xdfR\xc7a\x96q\x81>\x11]\xdb\n2\xdd}\x12\x0f\x9dJ\x90\x03\xebG?g\x0d\xc1zV!\x14\xd6\x8f\xfe\x96\x1e\xfc\xb7\xf5\xe0\xbf\xa3\x07\xff\x8fz\xf0\xcf\xeb\xc1\xbfI\xc1\x9e\x02\xfe-=\xf8\xdf\xe8\xc1\xffV\x0f\xfewz\xf0\xbf\xd7\x83\xff\x1e\x05?W\xc0\xbfC\xc1\xbe\x02\xfe'\x14\\M\x91j\xfd\xe8\x0f)x\xa6\x80\x7f\x81\x82\xab D\xad\x1f\xfd}=\xf8\x17\xf5\xe0_\xd2\x83\xff\x17\n&\n\xf8\x7f\xd5\x83\x7fW\x0f\xfe==\xf8\x1fP\xf0K\x05\xfc\x0f\xf5\xe0\x7f\xa4\x07\xffc=\xf8\xf7)8P\xc0\xffA\x0f\xfe\x03=\xf8?\xea\xc1\xbfL\xc1\xaf\x14\xf0\x1fQp\xf5\n\xab\xf5\xa3\xff\x89\x82_+\xe0\xffY\x0f\xfe\xa7z\xf0?\xd3\x83\x7fE\x0f\xfeU=\xf8?Qp\xa4\x80\xff\xb3\x1e\xfc\xbf\xe9\xc1\xff\xbb\x1e\xfc\x7f\xe8\xc1\x7f\xac\x07\xff\x1a\x05\xff@\x01\xff\x0b=\xf8_\xea\xc1\xffJ\x0f\xfe\xbf(8S\xc0\xff\xb7\x1e\xfc'z\xf0\x9f\xea\xc1\xff\x9a\x82\xab d\xad\x1f\xfd\x19\x05\xdf(\xe0\xbf\xd0\x83\xff.\x05?S\xb7\xc3oS\xb8\xa7\xc2\x7f\x9d\xc2\xdf,\x14\xf8\x9fSx\xaa\xc2\x7f\x83\xc2\x93jH#\xebk=Y\xfeZO\x7f\xbf\xd6\x13\xda\xaf\x91\x88+\xe4\xed\xeb\xbf\xa3\x07\xff\xbc\x1e\x8c3\xa0\x10\xc3\xaf\x7fA\x0f\xfeE=\xf8\x1f\xe8\xc1Hh\x15\x8a\xfa\xf5\xdf\xd7\x83\x7fI\x0f\xfe\x87z0\x92 \x85,\x7f\xad\xa7\xd6_#eR\xa8\xf5\xd7\xbf\xac\x07#\x99P\xe8\xef\xd7\xffT\x0f\xfe\x15=\xf8W\xf5\xe0\x7f\xa1\x07# R\xf0\xed\xeb\x7f\xa6\x07\xffs=\xf8\xd7\xf4\xe0\x7f\xa9\x07\xe3\x9e\xfd\xab\n\xf8\xd7\xf5\xe0\xdf\xd4\x83\xff\x8d\x1e\x8c\x9b\xf3R\x01\xff\x86\x1e\xfc[z\xf0\xbf\xd5\x83\x91\xd9\xff5\x05\xfc\xdbz0\xca\x00\xca\xc6\xfc\xfaw\xf4`d\xb1\n\x07\xfb\xfaw\xf5\xe0\xdf\xd7\x83\xff@\x0f\xfeC=\x18\xd9\xb7\xc2\xd8\xbe\xfe==X\xcf4\xbf\xd6s\xc7\xaf\xffH\x0fFv\xf2\x93\n\x18\xd9\xc9\x17\n\x18\xd9\xc9_W\xc0\xff'\x05\xbfU\xc0\x7f\xac\x07#'\xf8D\x01\xff\x89\x1e\xfcgz\xf0_h\xc1\xdf\xfc-}i\xe42\xd5\x981\xd6\xd7\x7f\xaa\x07\xff\xb9\x16\xfc\xcd\xcf\xe9\xc1\x7f[\x0fF\xd2\xabH#\xdf\xfc\xbc\x1e\xfc\xf7\xf4\xe0_\xd4\x83\x91 (\"\xcd7\x7fW\x0f\xfe\x05=\xf8\x97\xf4`\xa4\xdf\x8a\x90\xf2\xcd?\xd2\x83\xff\x89\x1e\x8c\x84Z\x91/\xbe\xf9\xc7z\xf0/\xeb\xc1Hc?S\xc0\xbf\xa2\x07\xff\xaa\x1e\x8cT\xb3\x1a\x93\xc1\xfa\xe6\x9f\xeb\xc1\xbf\xa6\x07#\xa1>S\xc0\xffJ\x0f\xfeu=\xf87\xf5`\xa4\xc8\x8aT\xf0\xcd\xbf\xd6\x83\x7fC\x0f\xfe-=\x18)\xf2\x1b\x05\xfc\xef\xf4\xe0\xdf\xd6\x83\x91\xf4VC\xe4X\xdf\xfc{=\xf8w\xf4`$\xa6\x8aP\xf8\xcd\xef\xea\xc1\xbf\xaf\x07\xff\x81\x1e\xfc\x87z\xf0\x7f\xd2\x83\x91\xc6*\"\xe47\xbf\xa7\x07\xff\x07=\xf8?\xea\xc1\x7f\xa4\x07\xffg=\x18I\xef\x0f\x150\x92\xdew\n\x18I\xaf\"\xe3~\x83\xa4W\x11f\xbf\xf9c}i$\xbd?\xa3\x80\xffD\x0f\xfe3=\x18\x89\xe9\x97\n\xf8O\xf5\xe0?\xd7\x82\xbf\xc6\xd5y\xa92\x1e\x9c\xab@\xe1<\xdf\xb0\xe3\x9a\"\xb9|\x83\xc2R\xa4\xc2Q\xb0|\xac\x927\xe4\x1bI\xe1\xcab\xf2\x08a\x8ex\xdb\xab\xe9\xee\xa3Q\x945u\xdc(5\x84tL\xa6\xa5\x17\x9aT\x895J!\x83_\xc8\x81>\x1d\x89\xa2q\xcbx\xf1~\xa3\xeaKo\xde\x12zc\xbcK\x92\xf2\xe4\xdd\xdc\xf2\xc6\x9c\x92\xe4\x81\xa3}\x93\xdb]\xb2\xc2\xee\x82\x1aL\xa6x&\x9b)\x9euv\x12\xf4 \xeb\xf5:\x93\xeb\xc1|r\xbd\xebu&\xd7{\xbd\xc9\xf5\xfeEgr}\xd0\x9b\\\x1f\xd2/\x87\xf3i{\xe7\xae6j\xd1\xc9\xf0>\x9d\xf4:_N\xc7\xcf:?3\xbd\xc5\xff\xbf\x1a\xb8\xef\x11v;\xeeu\x8e\xa7\xf4+{\xc8\xbf \xf4v\xfc9\xfb\xd9\xeb\x1c\xc3t\xe7\x8e\xdd\x0f\x99g\xd8Vv\xae\xdc\x085\x99\\{\xfedr}\xd1\x9fL\xaeg\x87\x93\xc9\xf5\x9c\xfe\x87\nV:\xe1l\xc6q\xca\xd9\x9c\xe3\xa4\xb3Y\x9f\\_0\x85k\x8f+\\\x0f\xe60\x99\xa4\xf4\xf5\x8b\xc9\x84\xbe\xeb\xf5P/;\x9fO&\xe1d\x12c\xa1\xc1\x11\xfbs<\x99d\xfd\x83#Z\xa2\x7f\x84\xd6\x16Z\x11\xfb\xd3g\x7f\x06\xec\xcf.\xfb\xb3\xc7\xfe\xec\xb3?\x07\xec\xcf!\xfb\xc3\xea\xec\x1d\xb3?\x1ek\x81un\x9f\xfe\xd9\xed\xf5\xaaq\xae\x98y\xcd\x826\x0b\xecm0\x9d\xcd\xda\x96\xba\xe1P\x0b=8\xe4\xc3>\xbc\xd0[\xc9\xe8R\xd3I\x9d\xd3\x99\x9a\x1fL\x98\xb6{r\xad\xda\xba<\xad\xe9Mt\x0d-A\x95\x06\x8dU?\xeb\xfc\xcc\x84)\xdaQ\xd3\xceT\xed\x93\xeb\x191\xd9\xd7\xb60\xe4\xf9w2\xe4\xa1\x89l\xbcq\xbf\x96\x92E-\xcb\xed~\x9e\xcer\xb6\x96\x8a\xce\xeb\x8b.x\xd1-\xcd\x07\xb7&\xdb\xa9S\xb5>\xce\x8c\xd6\xc7\x85\xc1\xfa\xa8\xb5\xb5\xe2\x1d\xe8\x8d\x0c\x92\x0b\xbdA\xf2\xaad\x90\xd4\xd7G\x9f\xcd\xca\xaf\xdd\x14&\x96\xf1<\x8fs\x8f\xf3\xdf\xa6\xd3\x86\x96:\xfbt8\xbb].oW\xb71\xb9Mn\xd3\xdb+\xe28\xa7\xdc^9\x8e]\x98\xbb`}`\xa9\xf6NX+\x15}t\xfb\xc9'\xb7\x9f\xde~\xf6\xe2\xf6\xec\xf6\xcd\xedO\xbd\xa8T\x04mX\x9a*+\xfa\xb7\xdc\xa4\x7f\xe2\x8d\xa6\xe6-\x17\xf7\xfb\x87\xf6\xe9\xb0\x7f\xf6\xe6v\xf0\xea\xa3\xdb\xdd\xcf>\xba\xb5O[\xe3\xfe`w\xeaL&\xb37\x7f\xcd\xb1OG\x93\xc9\x05\x92\xf1\xf3\xa9#\xbf\x93\xa4\xb7\x83pv\xbb\x1b\xcfJ\xef\xa4\x8b\xfc\x9dg\x9d\x9fa\xef\x04.\\I\x03\xbb\x97\x8dJ0\xaf\x9b\xcd\x98\x97Y\xe48\xa8\xe6\xf4a\"\xc7a\xd5\x05\x98'@\xeb7:\xd0V;\xcc\x82l\x06_\x12vw\x9b\xe7\xc6\x9cy\xa9w\xae\xcf\x7f\xba\xf0\x92\xc5\x10o\xb6\xc5\xae\xf2p\xe5\xad\xf1\x99\x1d\xd1q\x07\x1a\x0f)\x91f\x0b+(=\xbd\xbb\\\xa6\\\xc6\x11rYU^\xe3\xf6o\xc55\x97\x0bf\x8a\xdb\x8b\xc7\xe1\x03\xed\x9d\xdd\xc4\xec\xc8\xa8\xb3%\x87\xdb\xd9\x92Y\xd6\xcc%\xf1b\x1b-\xc8\x04\x03\xb9\xe8\xa4_1\x13T\xd2U\xfd\xcaD\x18\x7f;f\x1e\xeb\xe3\xfe\xb4\xde\xb4N?\x89\x9c\x0b\x92\xf6\x81e\xed\x92\xc1\xdc\xab\x11\x13x\xca\xf0K\x82\xf2i\x19\xb8\xf0(\x12fe`\x82%\xbd\xf2\x1d\x8f-/u\x1c6\xca\xd2Z\x84\x970\xb5\x9d\xf1d\xfa\xd5\xfb\xdb\xe9\xce%\xd2\xf1\x0f\x1eYR\xb1r3\xb7\xf9}\x07\xa7\xfb\xe1)R\xf4\x89\xed\xdc\xe2\x06\xea\xb69`\xea`M\x1f\xf4\xbb\x1f\x9e2~\xf5\xc1\x9d\xe9z\xcbn\xa1\x0b\x1b%n\xc2\x03\x01o\x1e`\x18\x8d!x\x0e\x13\xfb\xb3\xd2\x8d\x9f\xcdQ'\xcf\xe5\xa6$\xbe\xccs\xb9\xed\x8c?\xefN\xdb\x1f\xect\xc95\xf1m\x8cR\x16\xe0m\xa8\xe2[\xf7\xe5\x8b\xf3\xef\x7f\xf6\xfa\xcdk\xbc\x87j\xe1\xa5\x15\x8b\xdf\xf6Kb\xdf9\xefw\x99\x03W\xd9\x15\x7f\xbb\x99hE\xcc\xd9%\x08\xb7M\xfa)\xed^gl\x9d\x9f\xfbQL:_$\xe7\xc9\xc2\x8b\xc9\xec\xfc\xdct\xa7\xe8\xae*\x05\x8dc\xff\xc6\n\x83\xe6C\xdbf\xb3&\x18\x03\xd2\x96\x85\x87\xac\xe3\xd1\xa3\xdc5\\\xa6I\xe3T\xef\xe6Y\x90\xa5\x0e\x0b\x1e\xc6c\xc6\x90;\xcf\xbe\xce\xfb\xd3:?_F3/Y\x9cSF\x7f\x9e\xc7\x94;?\xd7\x1c\xb9\x14\xbf\xf4\xf2\xf6\xdc\x16\xb5J\x93$\xa6\xa3<\x17\xc1\x1cl\xc5\x83\x0b\xa4\xb33Q\xa6\x0fJ\xde\xca<\xc4P\xbe\xdau\x99\xf4\x85\x7f-\xbf\xba\x82\xd7]N\xd9\x8dU\xe12\xfe\xa0s\xff\xe3\x9f\xce\xfc\xda\xc2i\xf9\n;\x8e0\x90\xc6\xfd\xa0\xe3\xac\xc1\xb1\xa61j\xf6\xb2X\xf9\xe6a\x16;\xa8]\xde\x89L\x18\xeb\xbb\x10\xb2\xdb\xc8\xe8\xc7')\xd7\x08\xf7\xfa&L8\xb8/uh\x12I\xc6\xd3\x07\x12B\xb42\x08\x0b\xd5\"\x89a\xebe\xe0\x93\xa6\x89\xdf\x08\xb9\xf4Bo\xccPH\xbb$-;\x14\xc1\xb6l\xba;\x8b\x04i\x1d\x8c\x1aE\xba\xebh\x8d\xa9\xda\x0bl\xc4k\x15.t:\xf9\x1c\xb9\xd0\xbb\x13\xbb\x15\x93\xf4\x974\xf8\x90\xc7\x13+T\xb6\xe3p:\xee7q\x9f\x87\x1cI\xee\x8b[\x1e\n\xa5t\xa5\x9b\xb1\x0f\xdf\x93Mw\xb2:\xad\x18q\xca\xae\xb9E\xc7\xa7\xd5n\xb7%\x0c\xe1at\xc6\xb4\xe1)^\xb3\x0f\xc7\x01\x9dm\x96\xe0~\x83}m\x1e\xed~\xe3hM\x18\x14\x8bT\xa5\x0e?P\x99n\x96\xdd\x95\xfb7\x12#3r\xb3\x1b\xa1\xa9\xb6;\xf2\xd5Q\x8clb\xb1\xac\xdb\x12\x80e\xcd\x96\x00\x17Q\xb4$^\xc8!\xa7\x94\x0d\xf0T\xae\x16\xb2\x9d\x94\xae \x93\xc8F\xf7\x90)\xb7_\x8c\xd2&\xc0\xb5\xb8$\x1b\xa8\xee\xbf\xdd.0\xd6\xf4-v\xa1f\x03\x16\xdd\xd0\xef\xbe\x101QO\xd3P\xd7\x80\x95\xbbe\x86\x1brv6\xcaoW\xf5\xef\xb7\xedv\x8f\xf6\x1c;\xb4\xf7v\x0f\x9c\xad\x8c\x90\xe63{_\x7f\x1f\xeaPw\x18\x0b\xed\xc3\x83\xc696,s^\x80q\xb3\xcc$\xd0zE\xe0!\xdd]F*\x0c\xb7\x02\xbci\xad\xbe/\xeaH\x04\xb5\xdc\xd5\xd4\x00\xfc\xaed\x84\xe1*\xc3\xda\xbe\xcb\x1f>\x8e\xc4\xf6\xc6\xe9\x14/lx\x86l\x17\nT\x85\xd0^\xfa\x94\xe0\xe4\xd3a\x14\xe0}\xe4Jp\n\xde8AQ\xdc\xa7\x82\xaa\xaf\x91\xc7\x01\xee\xa3Q<2\xdc\xa1P\xe2\xf8p\xbd\xeb\xd1\xde\xd6\xa8 \xc8l`\xa2\xf8\xfd\x928\xf4\xe8\x11\xa6*\x18\x0f\xa6\xec\xd6*\xfd\xde\x9b\xba\x0c\xd8\x9fR~\x96\xb7\xa5\x18\x8e\xa1z\x04J)Af<\xd4Ub<\xdcu\xd6\xfa\x87\xd5\xfbF\xe2:\xa1N\xe5\xd5W\xd5]\x83\xa69\x14wx<\xddd&H\x98\xf8]|e\xf8\x18\xba+`i3b=\xe5\xa3\x0d{\x0e\x96\xbc\xc1(M\x0b\x17f.\xac\xd9\xaep\xe1\xca@1\x91\xee\xca]\xbeAO\x8b\x99\x0b\x0b\x17\"\xb8\xe5w\x0c\xaf\xe8\xa6\xbc\xa9\x1fA\xcd\n\x8a\xb7\xee~\xfak\xbc\xad[]\x91\xeaA\x94Yy\xb6:\x8b\xdeC\xdel>L\x91\x8d\x85dZ\x96\xcb\xfd\x0f\xdea\xb91\xd1\xdf\xcd$\xc6\x07j\xeb\x9e\xa2\xa1>|P\xbf\xaf\xf7b\xea\xf7\xaaV4$\xd5\xbd\xc6 \x1f\x9b\x1e\xf04\xc4\x17D\xf4\xcbh\xae\xde\xd7\x04I8\n\x0d\xb5@.\x1dQF\xe7 &\xfa\x042\x16C\x9aO\xabW:\x13\x96\x11\xbd\xdd\x0e9\x06Q\xa8Z\xbd2\x0e\x10)z<\x13?\x85F1YH\xc9\xf7\x13\x8c\xcd\x8cX/\xc8\xee\x1e\xeb=\xd5\xf6zz\x83\xe8^\xbf\x8a\x12\xc8{\x95@H>\x17\x8e\xaa\x885\xe7\xf0*\".U\xb1\x00\xbdI\x84\xad\xeb\x99\x08\xa2WuOY\x94K\xc5\xdeM\xb5\xc4L.\xc18v\xb5\xc8\xd5\xfd5\xb0B>\xb9q\xe1\xd2\x85\x95\x0e\xfd)\x9a$\xdalT\x17\xf8\x84h\x9e\xbc\x83\x11\x9c\xc3),`\x08\x9e\xf6\xddk\x18\xc1E^BW\xc7\x19e\xf4\xb4\xa2wT\xacY\xc3)\xcc`\x08\xef\x1c\xfak\xa6\x16\x7fA\x8b\xd3Z\xaf\xe5\xe2\xd7\xa6\xe2\xcfD\xc5\xd7\xean~F\xf9\xb9\x8f\xd62u#\xe3&\xf5\xe5`Q\xad\xbe\xba\xd7\xcey\\\xe23\x0c\xd5\\\xb3\xbb\xf2\xf6Zgy\x85+T.\xae\x04;s\\8\xa7\x909S\xfc\x06\x9aU\x1bB\xc4\xa1\xefJ\x0f\xd4\xb1\xb5\xec\x10\x1ea\x90|=\x8dz\x0d#8Cer\x1e\xd9\xc8:?g\x89\x0eg\xe7\xe7\xa6\x0c\xd3_\xc0\x08^H\xaf\x91\xeakzj\x87\xf6\xbe/\xea\x0e\x83o)\x8e\xc3)\xa4,\x984*Vk2H\xbe\x84\x11|\x81Z\xd8\xa28\xd1\xcbD\xc6\xc9\xbe\xb4\xdf\xba\xf0R\xcc\xe3J=&n\"\x03\xb5pQm\xb5\xf6L]\xbe;3F\x95\xd3qc\xec\xb1\xfe\xd4\xb7{\xbc\xaf\xf5\x0b\xc9\xbe}\xbf\x90\xaa\x8c&;\x88`\x01o6\xb3\xd31\x99V'\x83~2\x89\xbey\xb3\x19\x06\xb5* \x94#2\xaf\x8eLq\xe0\x88\xca\xbe\x1a\x99v~\xab\x93\x1b\xde\xcf\xe2\xb3\x91D\xc4\x99i\xe8l\xc48\x7f\x9cbXs[f\xf3t\x8aM\x90\xa6&\x8c\x08m\x8acx\xac\x8fi\xac\xb8\x9ad\x06\xa9\x81\xbbE\x1d\xeb\xa5\x80\xbd^\x95\xdf\xfb*_\xa7\"\xc0@\xe5\xfe9\x8b\xfe\x1e\xd3\x15WytI\x1c\xf8\xc8K\x15G\xd5\x92$\x80a\xd7k%\x81O\xbd\xb5N\x0c\xc8\x9f\xbfB\xa5v\xb5\xc8\x8d\\\x849\xb6T\x8b\\\xcaE\xce\x88\"l\xacJ\xcfQ\x97^-r^*\x82\xca\xf4j\x91\x0bE\xee\xf9^6\x9f\xab\x1d~W\x996\xef\xa7\x02\xf2\xaeZ\xe8z\xe3@\x94g(\x17\x9c\xc25c\x0b\xaf\xe7\x1b\x07\xfe\x13\xb4:v\xe1\xda\x85\x17.<\xab\xa2~\xf2.\xc0\x08|Z\x1d\x96\xef%\x04\xde\x0d\x158p\x06\x98\xcayA[\xa3r\x9e\xd0\xdb[`\xcf_\xcf\xe7 I\x8b\xe7\xecw\xad\x00B?)\x06\x10\xbb\xc0 vy\xf4T\xf6K-\x8f\x1d\xbd\xd0w4\xb7|6\xf5\xb6\xf5\xc2\xa6\xc4=\xc0\xab\x1e\xec\x1bqtY\xbf\xb1\xb5\xa5\xda\x1a\xc2\xd7\x06\xf8Um\xef\"\xbb\x9d\xba\xd0\xd6i\x9d\xf1\xedE\xed\xdbi7\xf4V\x84\xe9/\xf1\x1b\x06jY\x91$\xf1.9\x98\xff0T\x7fc\xe8\xf4\xaa\xbeYfYR\x83\x88\xe6\xef\xcf\xf4\xef\x0bQ\xcd3\xbcvi~\xed\x0b\xe6.P\xcd\x1d&>\xb9Xf\xd3\xfa\x13\x0ch\x8d'\xbd\x96\xd0P\xa0\xb4\xfaE#\xf6 \xe9\xed\x19\xd74\x98\x9b{\x9b\xd7\xf5\x16\xe7\xc3 \xaf\xc1\xed\x08\xe6.<+\x0e\xa2\xe6\x86_b8\xc5\xd7\x88\x88\xaf\xd1T m\xe0Zy\xf0Y\xa1\xb1q\xe1\xa5az\xcf\xcd;\xba\x10\xe3\xcfD\xccJ:\xa83\x11M\xb6\xf4\xa2^v\xbc\xbb\x11\xdb\xe9\x16 3\xf5\x94\xed\xae.i\xdb\xca\x87<\xad\x0e\"\x8cA\xf5\xa5\x89\xb7\xaf v\x85\x15\x8e\xdbm2\x85\x11:\xf5\xa7\x95\xcbq\xce\xb7\xa11\xfbv\x86W;65\xa1@\xd3\xb0\x8cx\xb0\xd7\xd3i\xcc\xfa\xaa\x08\xf5@\xda\x03\x9ewO7\x89\xa8Q\x81G\x10\xa8\xf38gv[\xcd\x89\x123\xef\x19S\xa5.1m\x82M\x1c\xc9\xd2\xd4\xf2\x8d\xf4\xa8Hm\x00#X\x9e\xc0\xba\xc6\xe4\x81\xb9\xb9\xc7k\x83]\xa0e\xfb\xa8\xb1\xc0\xdc(C\xc9\xcbn\xe1lh\xe3\xa0m\xcc\xd03YG\x13i\x1b3\x96[\x88>\x96T\x0c3\x0d]\x14\xe6\x82V%Bg\"+\xea\xd8\x0f\x8dCO>+T4\xf4\xe9il\x0dO`i\x9c\x99K\xb4\xa7\x88\xf91\x98UV\xe8\xce\xb80L_\xe6\xe4\xfa$\x1fox\xae\xf0\xfc\xbb@,J\x11\x7f\x86\x90\xd9\xf4H\x8cP\x86^\x89\xc9\x8c,\x9b3\xce\xe1\x94\xf6p4b\xc7y\x8fW\xc2P\x13\xeb=7\x9b\x9cQE\xa3\xe7 \x171\xf1\xde*OT\x83\xf0\x0d2L\x94\xb2\xfd\xc2\xb7\x1d\xfdF\x16u\x14\x1f\x0dI\x88\xbf7\xa6\x89\xbf@!N\xaaU?\xf5\xefP\xba\x93\x8a\xa9\x03\xba\xa0\xfb\xe6\x1dm\xad\xdc\xc9\x80\xa7lS\xa0\x8c\xd3\xdb\x96\xd8\xf0r\xd8\xf5\x0b\xfa\xecBV{#D[\x16\xdb|'\x97}\xc7\xfc\xd0\xd9\xd4o\xc0\x12\x13\x99)\xe7?(\x82o\x99\x88P\xa6\x91\xfa\xeb\x0e{=}\x0c\xca\xbb\xfbN`\x10\xe1\xc8\x85\xe0\xce\xc7\xe2\xbd\x9e\xfe\xbe\xd0Qc\x97\xd4ZE\xcd\x11\x8b\xefnpHc\xaa\xc6\x08o`G.\x84\x1b\xdc\x0ehf\xb2\x1a\xbd\x816^=)\xc5\xa7\xcf5KR|\xfat\x1c@\x1bX\x8c\xfaqh\xf0>\xbf\xfbl\x9b\xf2\xae\xe8\x8c\x11\n\x0b]s\xe6\xf92y\x11f+\x96\xb0K\xd5R\xf0\xd7.I*\xf1[vfNT\xddEV\xca\x0c\xa4#\x15\xc2J#\xa9\xe5\xc6S\x18V\x0c\xfe.\xc46\xcb\x1b\x94\xd7\xa6\x0dO \xd5XD\xb8'\x1aMh5K\x0c\x0c!\xd0\xe3\xa4\xf7-#M}\x92\x83\x9e\xc8\xe9/c\x91\x9e\xe0f,\x0f\xbf\x86\x89a\x8cN\xf4\xe2D\xea\x15\x8d\x83v\x1b\x13\xc4o@\xc1\x9aB^7N\x84\x81\xb8\xdc\xfd\xa6\xe6\x9eAy\xdc?\xd4_B\xd4'\x0dQme<\x81X\xbf*\x82&\x06\x1b\x9a\xee.\xd7\xf6r\xa8\x8e\xc4\x85\"\xec\x84\xb2\x92\xe8D\x83\xa99\x02\xa3\x00\xca\x9e\xb7\xd0\x19$\xd3\x96ZWJ\xb5\x96(\xbci\xcb.P\x0e\xbe\xbd\x859\xfdoI\xff[\xab\xa5f\x98\xb3\xfc\x94\xb2\x8c\x1c}\x99\xae\x8d\xca0\xba\x9c\xa1r\xce-\xa3\x84\x87~)<\xbe}\xcb\xcf74\xbb\xeb\x8b\xf2\xb3m\xb1*\x90m\xdf\xb0.\"8BUS\x01\xb6\xd6^LB\x0e\xc0\xf7\xd7\xac S,I\x05\x0b\xd5P\x05\xf8Z\xaa\xd2a\xe2\xda\x8d\x0bW\x0e~\x9f1\x03\xf7\x8d\x9e/\xcd\xee\xbb\x8b6&'\"-\xac\xa0\x17\xe9\x89\x03\xb1\xc8\x8a\x12\xea{\x17\xdfy+\xeasS\xec\xe96\xa2\xce\xb6\xdc\xb4?\x0c\xb4#\xe0w\xbab\xae\xa3\xf8\xb6h\xd4\xdd\x15\x1a\xa6\xa4\x1d\xfd\xaa\xec\x16\xe9',\xc3d\x82\xc5\xf4d\xe3|\xfa>^F^\xba;\xe0\xb6w$\xe3\x95\x87\x07{\xfa\x87/\x85\x86E\xf7\xa4\x7f`|dj\xacP\xd9\xe8\x1f=_z\xab5\x99\x99K\x98\xda\xa4\xcfJ\x8db\xa6\xdc\xb1\x0e\x83*o\xea\xeb+\xe9\xeb+\xcfr\xf3G\x05^\xe8\xee\xd5\x07D\x01r\xfbGu58\xae(\x0f\xd0\x18R\x81 \x03H\x05,<(*`a\x0b\xa9\x80\xd1\xfeQ\x85q\x9bG\x05\xfcC\xe2\xbd\xcd\xfb\xd1\xea\xbb\xdbm\xc1\x88o\xc1 '\xf8\xf8\xb3\xd5\xca\xc6tW61\xf7\xc6\x1d\xd9\xec\xcf]#L\xa6fu\xe5F\xfb\xb8F\xf3Ul\xf1\xbeb\xf3\x03\xbe\xcf-6\xc3\xa5d_tr\x18\x1b#\xdd0\x9a\x9177k\x06S\xab\xc0tQx&U\xeba)\xca\xb1\x9e\xb4T\x8f\xc6\xb5\x80\xd2\x10vs\xb8\x98\xe0\x11\xaf\x1a-O>I4~\xba^\x1da\x14\x9f\xfa\xc4\xd3W\xb6+\\Q\x95\xfe\xb1\x98S\\\x8b\xb3\xfbG}'?Zn\xce\x15\xfa\x86\x03Z\x7f\xa3\x03\xdav\xb2eu\xe9P\xf7\x14\xcb \xe3U\x7fx\xa1=\x1eO\x0d\"YHE\xb2\"\x85\xbct\xc8\nq\xff\x97U1-\x9eF\x8e\xb9:\x98\xa4\x8fm\xeeU]\x19\xd2tm;\x19b\xa0<\xe5\xbfQ\xfd$\x99\xbbF\xa0W(\x11>\xc2\xdc\x92{{\xdb\x9cv\xa9\x06E\x8eD\x8e~\x0c0\xe0\xf2\xa1nu\xed\xa6\x99\xba\x9a=!\xf22uW\x1bR\x9b\xca\x92\xf7\xa2\xb1\xd2\x90\x07\x86\x84\xd0\x067\xd9\xbdA\xd5W\x92\xfbP\x0e\xaa'4\xeeC9\xa8\n]\x89^F\xe3N\x94\x8as\x06=t\xf9v\\\x81b0\x0e\xbb\x1axg\x8d\xd0\xa8\x02] 4\xab@g\x08\xad\xe6\xdf\xa3\x07#\x89 \xb2L'\x1a\xb1\x84\xee\xae+4[\xc7\xf8\xbf$\xe4\xd8}\x87\x1dJ\x82\xd2\xbb\xc8\xed\x8b\xd7\x02,\x12\x95\x8a|?\x8eVABD1J\xae\x93hyElV_V*\x8c\xc2FQ_\xc6\xceD\xa5\"\xb9\x90Q\x14\xf3\x9cB\x87\xda\xbcA\xf5\x87\xd2P\xe7c*.;\x96\xb6sM\xc69\xc4>8\x05\x9f\xa2\xba\x9a*\x93\xc7?\x10^\x12Z\xfb\x1e\xdaT\xe7\xb5\x96r\xcd\xca\xa9\xdc\xce\xe4V\xa0\xab\x07\xa7\xd3P\x85\xc6\x03AWE\xbe\xca\x86j\xea]\x0e\xca\xebo\xa8\xc2`\xfe\xafV\x91\xe3\x87\x81\x94\x80\x96MT\x92U_mGovw\x1d;\xb4\x0f\x1d\x17,\xb1&\xa6(5[\xdej\x94j\xe6S\xfc\xf0\x15\x9f\x91\xf4\xe1+\xe5\xcb\xf0@\x15\xf7\x8f\x0c\xa1\xd4\xb6\xb7D\xe4\x82\x87\xb8\xbf\xe7\xf2\xdb)B\xb5\x1e\xd6\x18E#\xaeeW\xb7>p\xa6\x91\x8e#\x9d\xba\x94\xa9Kx~\xb4\xd8\xce\x1cSX[\xd8\\\x8a\xa9\xb9B`\xba\x01\xa9\x0f_\xb57\xd0)\x0b(\xbb\xd4\xc5\xaf\xd2\xad\x86PhV\xcb3\xfewXe\x8bs\xd5\x04\xbf\xdc\xf0\n\xa1A\xc6\xc8\xf8\xe1\xd1c\x99A\x13\xdb\xc7\x95%\xcdW+\x85\x9e;\xd0\x05%\x90Z\x90L\xac\xec\xd4\x90\x07\x17\x89\xd8\x9bh \"\xb8\xc0s\xb8\x85\xe5\x03\xc92\xfd\xa3\x8dn\x83\x1bL[\xb8\xf0\xba@I,\x9d\xa7^|\x96\x86\x1a\xc0)\xa6\xc1mJ|k\xe8\xfe\xce\xf8\xf3\xeex2\x9d\xb6o'c\xfbthwN'\xb3\xb6}:\x9ct'\xb3\xb6s\xea\xdc\xdac\xeb\xf1\xd4\xb1\xe9\xb3\xd3\xd6d\xe0\x8c?\x9fL\xa6\xb7\x93I\xd7\xf9\xf0\xd4\x99\x0c\x9c\xc9\xf4\xd6>\x1d\xe1\x1b\xb7\x93\xf1d\xea\x14_o?p\x9cj^3:\xdc\x9d\xc9\xc4\x9eL\x9c\xd3\xea3\x81\xebGN\x83\x1b\x8a\xe9\xc8\x02\xc5\x0c\xed\x1d\xb0\x9b\xb8\x98N\xf6y4#\x98RV:\x98X\x16r\x14\x11\xfa,.O\x17s\xa2\x8cLGa^GLq\xab\x94C\xff\x83>f\xa2E\xe5y\xaa3A\xc9!%\x18D\x8f:\xd16\x8bH \x8a\xce\x89f\xbf\xf9\x1a\x99I\x06C\xec\xab_\x05\x90,y\"\xf8\x00W5\x84\"\xb4\xa2[\xf1\x14\x026 \n\x8c\x11x\xdf\xf3\x17\xfa\xb8\x07w\xa6\xb4{\xbb\xfa\x83\xc6\xdench\xc3\x1ab\x86\x1b\xb6\xc5\x8f\x92\xe2\x8eK\xdct\x00\xbc\xcf\x11\xad\xd4\")\x9d\xc8\xef:5}\xc35\xfc-mj\x8a\xedL\xd8\xd4\xf4,\xe8\xf0\xae~\x00\xb9X\xe0s\xcb\x07\xe5Q6)\x82\x009\xb9\x15j\xc9\xbcd\xa0\xdd\xf6\xe1 \xcck\xafg'6\x19\xfbS\xa3\xdf\xceR\x90g1\xf7\xd8\xbf5=k\xa1\xbf\x8d\xfa^\xca/s\x97\x1eh\xc5\x074\xac\xd1>\xb6F0\x87SX\xc2\x10Z-{\x0ef\x031g\xa1s\xfc\x9b\xd9k\x17\xe6\xdc\xbekKq\x13\xef\x8d\x87\x06$\xbc\xbb\x97\xc2\xae\xde'doW\xef\xbf\xa2\xca5\xd9\xa6\xc8c\xe8z\xc4\x9cD\x98G\x01\x06\xbcj\xde9w\x9e\xa7\xbc@\x9d\xc2Z,1)\x87\xa8\xaaz\x8c\xdeu\xca7\x91J\xee\xd3\xfd\xb8\x12\xb9\x0e\xee\xd3\xd9\xbd\xdd\xaa2T\xa8\x83\xf4\xa9\xb2\xf7vu\xc4\xe8S/]tW\xdeu\xd3\xb0\xcd\xc2\x98W\xb3\xf5TMA\xcb\xcb\xd5\xaa\x9d\x8aO\xde\x95\x88\x98\xc1+\x13I\xcb#\x93B4\xc9\x13\x9e'\xe8\x0d\xeeA\x1b\x12\x0c\xbc\xe62^\x1c\xd0\xf9\xdeu\\H\xee\x8f\xb6\xc2\x15V\xd1o\xe44V\xf6eb\xde(!\xb4\x01\x05\x9e>\x0c\xa1\xd3wN\xf06K\xd4\xe9\xc0\x10\xda\xed\x88%TW\x90\x85N\x13\xb1\xe9\x91\x0b\xbd\xca$Et\xa4\x9d\x86\xbb\xc7D\xdb\xdbm\xce\xc4_#\xec\x98d\x12\xf8 \xe8\xeb%\x12\xb1w\xe9\xd2\x12\xe8\xa0\x10N`\xd8\x18\xc2\xc1<\x82=\x9d\xa8\xd2\x87\x9d\xaa\"\x0b\xe3\xbbt\x0f\x8f\x0f\x0f\x8ew\xfb\xbb{G\x07\x83\xdd\xfe\xfe!\xd9\xed\x1dm;\x01\xb9\xaa\xfb\x94\xf9^1S\x01\x13\xe3\xa8\x04\x8b_;\x01{\xcc\xc2\xbeu\xe8\xfa\xf7\x1d\xf8\x10\x1d\xeeR\xb1SR:r\xfc7\x92!w\x9d\x0b%^3\xd7&\xe8\xb4\xc3\xaf\xbcW*-\xd8\xf9|\x92\xb4o'I\xfb\x83\xea)\x83Ex\x1ew\xda\xd3\xde\xf5\xb8\xd79\xf6:\xf3i\xfb\x83\x9d@\x15Vv>\xef]\x8c{}\xcdS\x9f=\x8d\xc6\xbd\xce\xa1\xe61\xe5\xe0k/N\xc8\xcb0\xddvI\xe8\x8e\x91\xa3\xbd #`\xbeqR\x95\x10\x05\xb6yc\xa1J\xd3p=\\\xe0\xbf\xd6\xc6\x91\xe6\xd7\xcfN\x8b\xef\xecJ\xb3^\xe8\x89\xd9\xc9\x9e\xdd\x10\xa2\x9b\xa1T\xea\xbd:J\x11\xe4\xae\xa5\x19e\x19\x8f\xda\x95&\xd9e\xb1r2j\x95\x00\x87,\xac6K\x14\xa3\xdd\xc4xN\xf3E\x118\x85\xb9\x9dv\x93e\xe0\x13{\x80j\xa7S\x18\xc0\x10\x8e\xe8\xa8=\xa9X\x84}\xba+r\xf7\x15uK\x03\xb7\xdb\xab\x8a\xd8\x99V \xe7\xa6\x8f\xbdf!\xc9\xcc\x01\x19\xf7a\xb2\x12\xe5W\x86iC)4\xaf\x86\xb2-\x8aGL\x8c\xa1VE\xf1\xfcc\xd3\x172.\xdaf\xf0\x04\"\xe6\xe8\xd4\xc7\xb8q\x81\xed\x8d\xb3)\xbbH\xe6\x9c\x98\xf5\xd1\xa6\xd8\xe7\xdb\xae\x84\x9eN\x18\x82\x0d\xa9\xea\x98L\x08T\x1b\xac\xa7\x86)\xe0\nd\xf2\nT\xef\x1f\x89\x83\x93\xf0\x8d\xd0\xd2\xdeV\xab$\xd5x\x18\x1b\x86\xb1\x8e\x08\xf7e\xae\xe0\x18\x96\xa2\xdfz\xb9\xbe+\xe4\xee\x9f\xe1\x98L\xb7\x8f\x99ne \xc1\xec8~*\x99/\xb9\xd3\x05\x0b\x97!\x9clx<\x18\x92|\x1a\xcd\xb2%\xb1\\\x85\xc1,32,E\x8es\\\xbcs\xbd\x8a\x82/\xc9\xec\xcc[\xad\x97\xe4\xe38Z\x9d\xf9\x0b\xb2\xf2`$=|\x1e\x13/%\x7f\xe3\xd3O^\\c1\x16J\x0d\xbf\xfe\x8d\xd5\xb2\xf2R\x10\xceI,\xfdN\xd4\x9a\xb9\xa1\x1bH\xd7Wk^\x9eh\xf0\xa9\xaf\xa4H \x90\xe7\x87\xf6\xde>=n*H\x85\x8f\x0ev\x9dM\xa3\xb1\xc8|\"\xed\x16\x13\xc9e9\x95\x1a\xcc\xc8\xdc\xcb\x96\xe9\xb0z\xab\xf4;\xea7\x81kj%\"\xf3Q\x8e\x04&\xaa\xcc\xbb'\x90L)\xf3^= \xb2\xa2\xe7d\xe5\x05\xcb-Z\xc8\x12\x12\x7f\x97\xb0\xd5\xe8\xfa\xd1j\xa3\xb6x\xbf\xceg^J:i\xb0\"\xd6\xe6-\xa2\xaf\xc5G^J\x9cn\x1a\xbd<{\xcd\xbc@m\x8d\x1dBs\xda\xc5\xcd\xb9y[\xbd\xcd+=\x9f/#/}\xe0\xaa\x830%\x97\x0f\xdea\x1eD{X#T\x88\x8fX\xe5<\xee\xb6t\x8c\xe9r\x94fQ1\xf8\x0f\xb5\xfd2\xba\xab\x07\xd0\xfaN\\\xe5\xfel#\xb0{.\xc4]\xe6`\x11\xcco\x1c\xadB\x03rC\x8b\x9a\x82H|\x02|>\x8f\xe2\x95g\x88\\EI\x827\xc6\xfc\x91\xe7\x16\xb4!\x98\xa2\x0b\x90\xf6\x12\x92\xc0K\xec]\x90|\x9c\x85\xbecGx\x82\xb2\xd1\x1ek\xfd |\x1bF\xefBxs\xb3&C\xa0\xf5\xa5\xd8\xbb\xba\xa9\xf1M\xc40\xa7J\xa9^u)\x0e\x85\x9e\xf0%\x17\x97\xb2\x9fB\x1f\x8a\x9c\x14\x94\xc9\xe7E\xc6\xfd)\x15\xde\xe4\x9f\x98\xc7\xca8{\xcaR\xe8\xe2\xc5\x81\xf0\xf9\xadY\n\xb4yw9\xfd\xd0\x17\xf1\xb0\x08\xbf\xc4\x17\x10\x8dg/\xf0\xf9\n\xba\xdel\x16\xd0\xc9\xf1\x96\xdfo(?\xc7\xf2AJV\x86\x02h\x14\xe9\x06\xa1\xbf\xccf\xe43\xe2\xcd^\x87\xcb\x1b}\xd1\xb5\\\xf4\x87q\x90\x12ZV/\xe8I\xd3\x9f9e\xdc\x99\x11\xb2^\xdePz\xb6\xfe\xeb\xe4\xc6\xc1#\xff\x07\x1f\xc4dnma\xa5\x94\xe5\x8a\x92ou7\x08g\xe4\xfa\xf5\xdc\xb6\xfe\x8aU\xc9\xcc >\xefM\x16\xa2H\xef\x7f\x1c\xb0\xe0\xb7\x91\xe4\x1a\xae\x176kb\xec\x82hc.f\xc3 \xaf\x8a\xdb6^\x1c{7*\x97\x01\xedy\x01U0\x85\xb7\xf9\xc8l\xed\xbe\xe2\xc1\x06\x14\xcc\xae\xba1\xca\x9fY\xe56\x8b\xfc\xc9E\xf5+*\xd8-\x1cX\x8c\xaf\xa6t%\xe8\xdf\xee\x8c\xacc\xe2{)\x99\xe1\x8d/\xf9Q\xccq\x0d\xd8\x05\xb6\xea\xe3w\x02\xbf\xf0\xf9\x1a\xef\xb9\xcfh\x81\x11\xa46-A\x85B\x83\xd0\x8f\x13\xcd\xb4N\xbe\x03\xb3\xcav\xe9\xd7\x8c\x06W\x90\xbe\xee\xebQ\x01\xaa\x11\x0c\x94y\xf4\x1d\x97\xc5,\xb0o\\\x8c\xb2\xb6\x82\x11\xf4O`\x05O`\xef\x04V\xed\xb6\x03\xb3\xb1U\xee\x12\xa5\x95+:\xb4K}\xb78\xd2\xcfTT6\x91i\x8e?\x0c\x19\xe0\x94\xa7\xb2 \x12v\xbdl\xde\xf5\xc2\x9b\xd7s\xd4\x92\xb1\xaf\xdd\x95\xb7.<5\x9a\xee\xe6\xb2\xf8\xf3:\x9f\x08\x18*ME!\x11M\xe1\xd7\x07lj\x9c\xdas\xfa\x94\xd2q\xd2%a\xb6\xc2\x10\x8c\x82c\xcb\xdf\x87|\xa9B\xca\x0e\x97\xc1\x97\x04\xbb\xe7\xd8\xec5g\xdc\xa3uX\xf3`IX\x8a\x8d\x08\x1d\x9b\xd0\xa5I\x17/_U\x12\xdbU\x19\xbf\x9e\x96\x89\xe1u\x13V\xfe\xd1#\xa6\xb6\x17\x00\xf4h)\xb8\x01{\x8e\x1cF\"C\x8aO\xc6{\xd7x\x04\xd9\x88\xa1\xb2K\xcb\xdf\x1aO\x8d\xb6\xe1\xa9x\xff\xa5\x86\xa7z\xf8|\x13\x86\x19m\xc90\xa3&\x86\x19\xd5\xb3\xf25c\xba\x9b\xf0\xd4\x85\\4\xe7\xa9\xfa\xb23l\x99#\xb4\xbe\xc8\x15\xd26\xfd\xb3\x9b\x9ag\x97(\x86]\xaf\x96\xfa\xc7\x94\x86]b|2\xfd\xf3s|\xbe\x8e\xc9<\xb8\xd6\x97\xb8\xc8kH\xd6\x9eo\xa8\xe6\x1d\x9b\xda0[\xe9\x9f_\xe7\x87d\x03\x03\xcfj\x188\x9a\x07\x1c\x96\xda\xfc\xc7\xc1\xc5\xb3&.\x8e\xd1Y1l\x8c\x15F\xa9wI'\xc7b\xfe\xb1\xf69\x9c\xc29\x15\xcb\x87\x16\xba\xb6;\x94A\xb8p\xc1\xf4\xf37c\xfa\xdc\xba^-\xc3\x043e\x9f\xd3B\xf8\x13o\x03^\x18\x04\x1c\x99)\xa0[\xe5\xdcD|i\xe99\xc5\x07J8\xf0\xef\xed-\\\xd2\xff\xbez\xef2\x08\x0f\\'\xff\xa0e\x18\x96\xc0e\x97\xc7\xe0\xcd\x85\xbf+\xee\x95;u+\x1cbIy\xc3R\x8dZe\xe4\x0c\xf43\x17;\x90\xe5\xa4\xa2\x953?>\xe4\x08U\xfd\xbe\xf8h\xf8\xd3\x8c\xb6>\xdb\xbau\xc1V\xb6n]L\x03/9u\x01%\x9c\xa2\ns\xab\xe7^\x9a\xc6C\xb81T\xee\xc2\x95\x1e\x1b)e?3\xb8XB\xc1\x8a4\xabb\xdfsY\xce6\x9a\x15\x17\xce\x0c\xebb\xdfsa\xb6j\x9f\x97R\nm nk\xd3\x12\x01\x9f\xfa\x17zq\xbbA\x9c~F\xc5ii\xcf\xd0\x9d\xb8\x14\x1b\xf0\x85Y:\xa5}{Q\xb9jh?ct\xa3\xf5b\xfcL\x12\xbcooa-?(Dn*\x8c\x1b\xa6\xab\xd4\x0e}\x8b\x11\x89\xfc\xab\xe8!\xff\xdd\xa58\x1b\\di\xed\xb2\x89\xcf\x15\x8f.YF\x05\xac\x0b\xa54\xda\xd9\xfc\x971\x05K\xf5\xf3\x85\xe8_-\xd3\xae~\xde\x8a\xb78F\x99)\xbd\xf8\xdc\x8c\xf3Q\x0br\xf8l\x9a\xb3,\x14\x9b\xbe\xa0#\xf8\x82>\x91\x80\xcb\xf13<\xf7\xe0\xdf\xf2\xa3\xb7\x14\xfe\x96\x0214f\x82sQ\xbf0\xb5\xa9^\xe4O\xb9\xb3#P;\xef\xca\xce\xe9\xf2\x0cV\x84A1\x00\xbbT\x86\xc1Mv\x19\xe9s\xc5\xe3f\xa6lt\xcd/\x94\xd1\xe3%\xa5\x14|\xa7 \x19\xf5\xa3\xd0\xf7R\n\x1fJt\xf5e\xc3\xb4\xd5\x91Fq\x98\xe4\x0d5\x11\xea\xb2\xb49\x04\xebYx\x93.\x82\xf0\x12|/\x84\x0b\x02\x0b\x12\x13\x83T@;\xedo\xca\x11\xaa\x0d%\xa6s+%r\x0f\xc8g6\xa0\x91|\xe6\xae\xcb\xf8\xbf\xe4\xae\xb1\x12h\xc63&\x94\x17\xf5\x1d]\xd4w\xecT\x96\xb0\x80kl\x85o\xe0\x14\xc6\xfa\xbe\x1b\xfb\xfd\xde\x85kZ\xd1u\xb5\xeb\xef\xb5v\x90\xa5\xd9\x17\x81\xca;\xeci\x19K\xd1\x08Z\xd2s\x05\x82n8vX\xb5:\x01\x1aJ\xfc\xa5\x17{\xb4\xc1!\xb44\xd7\x1b\x83pF\xc2t\x08\xd6$\xad\xdc\xae\xab\x9a\xcb\x00o1\xd4X\xa5h\x7f\xa2\xa2?\xcb&\x13W\xa5<\xc7\xa9\x06\xab\\\x0d\x87\x96<\x05\xf6\xabn1PxK\xec\x0f\x9c\xeeY\x1a\x13O#\xfe\xa3N\x8c~\xb1\xa4\x15\x83\x8a\xf5Jo\xf5\x04\x919\x80\xd24\xcd\xc9\x01=\x05\xd0\xa5\x11\xc7\x1e0\xd1!\xbf\x92k\xb3\xf7\x9c\xee\x17Q\x10\xda\xe8KgYU\xdb\x9a\xf8$\x94\x8c\x19\x84oC4\x08\x1b\xbdD\xd3\xb1\x142\xe0-\xb9I\xec\xd4\x19\xf7\xa6SdyI\xf7\x9c,\xc9\xaa0\xdbr\x80\xa0\xdc\x91\x9bC\x02?\xcaB*\xfd\x84\x12\x0c1\x89\x0d\xab\x0c\xa3-{20%q\x9c\xadS\xcc\x00'\xc0\xfa\x19\xf3\x99\xd3\xbe.4\x14\xf0S2\x957\x95\x87\xf9z\xad\xcd:\xde\xf24l-\x02\"y\xab\xf5m\xa8~r3g\x1b\x1e\x8f\xac\xc7\xd0f\x0epmxl=6\xbe\xf8\x1e\xbd\xa6\xc7dj\x14,7 \x93\xe2z2\xc7\x08%\x94\xad\xf8\xe0\xa5\\\x81B\xfa\xbb\xb9Pv\xc6\x18\xd1\xca\x0c\xf7\x1a\xc4'\xe9\"\xcd\xa48\xb6\xb6\xf9\x0f\x0cty\xee\xcf\xbc\x14\x95RK6\x9d\xb6\xf5\xa45~\xfe\xd1\xb37\xcf\xc6\xf4\xc0)J8\xb9\xe3\xde\xced:\x99>\xdd\xb9t\xc1\x9aN\xa7\xd3\xa7y\xf1\xa7xx\xb5\xa6\xd3\xa7\x16V\xcdW\x13Q\xdf\xe7\xa1k\x96\xd2=\xaed\xc3\xf8\xc5\xf2G\xbb\xb7N\xc1\xc2\x01!T\xd9YpJ1\x90\x0f\x19\x86\xa2\x0b9\x15\x816\xf4\xf1r\x81\xbdd\x89\xb5]T%\xb5zyo\xd1\x13\xd3,T\xbc\xc77no\xa5\xc1\xd5\x8865\x0b%L\xea\xc6w\xf3\xfe$\x9a\xee\x189\xb3~F)E\x19B\xa4\xdf\xd49}\x18\xd2U\xd3\x16\xc9\xc5\xfdd\x08s\x83F.\nS\xe4l\x06e\x13#aC\x08M\x9d@\xca5\x04\xaf\xeey\xd5e\x15\x94\xa9xo\xe0#^\x1d\x1f)\x11\xf2\xc2HL$\x97&\x8a\xcf\xba\x08\xf1\x82 \x12\x89\xcc2\x0f|\x0c\x9fK\xa7$\xbf\x9d`\xa6\x9a\x81\xd14\xce\xd3X*\x95\xd5\xed\x1d\xe1$W\xbc\x94,\x82yZ\x0d\xa8#\x7f*\xc6=\xadKX\xb5|d\x07N\xb3\xc2\x8c~p\xf25gp\xf1\xd1K\xe9z([\n;F\xed\xf5)\xce;\xe3yB\xa1f\xf3\x94\x0b\xa7`=\xd9\xa1T\x8d\xffn\x83\xf5\xd4\x92Kq\x06\xfa\xe8\x11\xb4BZz\x12\xf2\xc7\xe8W\x8c\x17\xc9t\x1b\xcf\xbc\x8aQ\xa3\xd9\xa3\xd5\x92\xf1\x04\x9dr\x8b\xdf]o\xbd&\xe1\x8c\x8a\x0d\xae\x8cO]\x06\x0cJ@\x11\x1d\xccn\xf5\x1c\x17Z\xbdMH\x04]4\x8e\xc9\xf9\xac\x95\xe7K\x9a.i\xa2\x8a\xdd/,\x07\xa7`\x01++=CI\xca\x02\xcb)\xde\x8dq\x85D\xf5|\xfaqo\x08\xd8\x8eiM\xc4\x02\x97\x96\xa5\x15W\xb7\xa4xC.\xa8\"#\xae\x0c\xde\xbd3]\x87\x82\x1a\xa7;-\xcd\xd0\xd0\x0bD\x1a\xf4H6\xa8_9\x0d\x0b\xd5\xb52Q\x16\xf41\xc5\x08\x00\xdd\x04eh8e\x99Px\xaax\xb3\xb5\xc3\xb2\xcc\"\x9c\x89\xcc\x0bW\x00>\xa3\xfc|,A\"\xda\xac\xf894\xb6\xb1\xe0q\xe4\xcd[ef\xe6\xfe\x0b\x863\xe4:}\x13\xf8o\x99\x13J\xba\xe5N\xbc\xaa\x95\x0f+\xc4\x0e\xf5\x1e\xf6\x1c\xda#\x96\x8c\x12\xf2\xd8\xab(\xc9 \xb7\xc79\xe7\xd7V{\xa2\xd0\xb2\x89\x08\xe3\xc1\xd2L\x1agv\xa3g\x94\xf8\xf8]\xb2\nR\xdb\xa2\xd2\x99\xa5\xb5\x9c\x8a\x0f\x15P\xd8\xfaoHT\xeb\xe6\xf1\xa6v\x1e=\xfb\x8a'\xa0[\xbb\x98\"\x91\xb2\xbd\x9e\xa3\x0f\xed\\\xd3\xca\xa5q\xf8\xccf\xdf0\xcb\xe9\xb75\xcb)\x95\xf58\x88\x843\x0b\x7f\xc6\xc4\x9by\x17x\x00\xa7\x04H<\xf7\x97QB\x0c\x91\xee@\x7fl\x00\xc3rT!\xc2M\xa0y\x1c\x0b5=$p\x94\x08\xbb\x92j\x02q\x1b\x8f\xee2\xd4\xc5s\xae\xbe\xe6+\x12'\xa8\xd3\xb0\xfa\xdd\x9ea\xd7\x93\xd0\x8ff\xe8\xe1\x19w\xc5wFr)\xbd\xfa^\x8a\xd9\xd4%K\xb2b*\x85\x02\xf6\"\x87\xd5b\x9f\xd8\x87\xfa\xe1\xa2\xc2a\x08\x99\xcd\xb4\x81E\xecD\xbc\xc8\xc5\x82\x15\xe6\xbe\x06&%\x0c=\x0dm\xe2\xf5 \xc2\x9a\xcb\xf2@\xa2L\xe5@\xba\x88\xa3wH\xc61(\xacm\x85Q\n^\x92\x04\x97!\x99A\x1a\x81\x07,\x14uK'?\x88\xcf\x95\x94\xaa\xbb\xde\xdePdG\x96\x143\xe6\x8a=[\xea-'\xaa\xa1[\xaa\x81\xa9\x80\xdaT\xc0\x10\x94V\x0e\xbc\xdfD\xdb\x08\xaf\xdc\xd6\xc9\x8a\xe2c\xa2R\x86#\x1f\xa5y\x9b.\x89\xc4p\xd9\xee\xa1Ccv<\x91\x01\x9a\xca\xb9\xe2 \xed\xe9\xc6$S\x9dW!$\x96\x91=\xffU\x8a\x1a\xba\xbbg\x88\x18*\x0fG\xb0\xf3\xf2\x00\xadG\xd6\x10\xacG\xdej}R!\x8a\x8f\xad\xc7\xf4\xc9\xcffQZ}d=f/\xad\xa3Dy\xf4\x04\x1f-\xd5w\x9e\xe2\x83\xcb\xf4\xa4\xa0\xa3\xd2\xb0\xb7\xbal\xc5\x89\x17\xa7lH\xbcru\x8f=~d=y\xfax\xea\xec\\\xd6LF\xa5\xc2pL\xaaI\xb4`\xb8m(\x8a\xd2%\xba\x93\xd2\xbc\xf3[\x11\xfd}\xa7\xfb\xe2\x8a\x84\xe9\x8bU\x90\xa6$\xd6)\xf9\xd5\x83t\xccc\xa1.\x02\xe5Z>\xfd\x84\xf6\xee\xbec\x07.&\xd3\x0d\xba\x9f\x15\x14\x93\xb6x\x80\xc0\x1f\xc6A\x9a\x03\xf7\xf6\x8f\x11\xf8Q\xb6^\x92k\x06:\xe8!\xe8M\xec\x85\xc9<\x8aW\x1c\xdaG\xe8\xf7\xbd$y\xb3\x88\xa3\xecr\xc1\xe1\x03\x843\x9d8;\xd8\x05r\xc2\x8f\x00\x9d\xc1j'\xffJ\xca#o\xd2\x9c\x07\xfa\xd3h\x8a\x06a\x1c\x0e\xbb0\xc5X\x0dZ\x89\xe9\x1b\x18\x1bh\xede \x91\xbe*\xc7&}\x93\x91\x96\n\x85\x05\x1f\xc2\x1ac\x92d\xab\xd2\xf7\xdaSY\xd8\x8d\xc2\\$\x0b\xd0\x81\x0e\x01\xb1\x17\x84\x96\x0b\x11B\xce\x83\xe4,\x9d\x05\x11\x957\xe4\x81\x11$*\xb7\xb7`\xb3j\xa8\x18\xe7\x82\x87\x02\x11\xfd\xcd\xc46\x17\x92\xaa\x16\xef\x8a\x874k\xf5M\xf3\xebi\x07\x9bac\x19\xe7\xb8)\xa3c\x9b\xcd^\xb2A\x85\x86{\xe03\x92\xa4qt\xc366\xff\xb1i\xb3\xbe\x9en\xa3\xaf\x90\xed\xb8\xdcN\x1cw\x97A\x92\x92\x90\xc4\xcf)\x1f\xc2\xfd\xe4\x82E(3\xb5\x1c\xc1_\xab\xf4V\xdf\xe2\xdc\x88&\xab\xe8\x8a|\xc2\xdb\xa9\xac\xb9\xf2PZ\x7f\xf5Uy\x9d\xab\xcf\x8a5\xd7\xbe\x89#\xa2\xc2\x92\xaeU\xf9\xa9\xa9\xd5ym\xabsm\xbd\xc5\xd3\x9a\x9d \xc8-\xc3\xe4R?\xab\x10\x19\xdb\xe7\n\xb6\xcf\xf3w\xca\x10v\x94\xa1\x04\xc8b^\xceM4\xdca\x8ec5d]\x7f\xab\xaf\xa0\xeaG=\xa7\xcb\xc2\xe3\x96\x19\x9e0\x1e6\x86\xc8\xa9\xa2R\x8ee\xa9\x16\xcbZ\xcd\\\x0d\x84\x00i\xa7 %\x19#\x8e,E\xbe\xb9Y\x13.I>\xf7B*LR6\x03\x1e\xf8K/I\xc0K\xc0\xcb[\xd2\x1c\x0b\xdf\xf3\x0d\x94\xcb>\x0b\xe2\xcd\x80E\xa3\xe1\x90\xd4\x0b\x96e\x08?\x0e\x8c\xaa^\xcb:$I\xd5\x8c\xe6\xf5r\x9a\x10m\xf5\xf3A\xb7\xa21S~H\xaeS\xa6\x8eR\xc7\xa9\x8af\xf2P\x9eb\xc0\x92|\xb8\xa8\xf5\xc1\xdb\xc0\xc3\xd2\xac\x90\xf2\x94\x10\x17\xdam\xa9\x9a\xf2l\xb8\xa5\xb1g!\xea\xbe\xbf\xfd\xe1\xe7\xfd\xddd\x0ex\xec\x0ci&\xd0\x11\\\x1ec\x051\xb6\x19\xb32b\x13}\xe7\xe2xQk\xddy5\x15'\x1a\xda\xa3.\x9d\x91Z\xbf\xc3\xbe2\xc4\xd3\xd2\x80\xaa8^Y\xf2\xa2%:\xbd.t:RU\xda\x98\x85u3\x82\xb1\x0e\x9bf\xa4\xaew\x0d;\xb0\xdc\xda\x17Q\x106\"\x1c\x9b\xffQu\xfe\xc5E\x0f\x8d\x17s)\xean\xdeY\xe6Zl1m<\xae\nO\xcdM\xe7\xed\xc4\x81\x10\xda#4\x81\x13\xc3\x9a \xaeR;\x7f\xe8{u\xcf1\xc5]o\xb9\x8c|\xbbg\xf0cV0\xa6\xd0\xf57\xa0]13xj\x0eXl\x08\xde\xde\x0f\xc2\xc4\x9b\x13;\x85\xa7O\x9f\xa2v2+O\x9fG\x97\xf3\x04\xb2\x13\x07'.\xc36\xd8\xacF\xfc\xe2\x04^\xde\x8e\xd67,\xb0\x01}\xa5-\n\x96\xa2\x18dl\xd2MS\x1c)S\x9c\x03\xdeSI\x0b\x03s\x06\xdd L\xd6\xc4OK?\xba~\x96\xa4\xd1\x8a\x91\x89\\9\x93/\xd0\xb8ZpZ\x87\xecb7\xe7/i\xd4jlXC0\x92\x1c}\xb8\x1e,.\x05z\xcfMo\xec\xe2h1^\xe3\x89{c\x7f$\x1d\xfb.sw\xbd\xddF+\x90\x88\x0fS\x1cu\x13\x92\xbe\\\xad\xc8,\xf0\xcc\x1e\xae\xdc>\xc3|\x8cx\xcab5&\xb3\xfc\xf1k\xaej\x007\xdb\x98L3\xc0M7iw\x16\xf9\xa8(3\x97[\x97\x12B~_ \xc9k\xcc*\xa7}`\xcc\xa7N\xab\xc2\x8clk:'o\x82\x15\x89\xb2\x14NaM\xc9\xb5[D\x8c\xe7yk\xa6\xccq\xfa\xab\xf7\xdd4bW\xdb\xf9\xe9[$\xb6aQ\x8b\x9a\xe8\x88\xf8Hf\xa0Z\xca-\x7ff\xb6&\xaa\xaf\xf8\x98\xf4[0\x94Q\xa7\xae \xb4\xa1v\xd7Q\x92~\xca\xb3\xf9\xb3\xac?\xc1\x8an\xc93?\x0e\xd6\xa9\xd1\xddG|\x04\x11\xd79\x08V?x\xcc\xefF\xe1\x8a5Woh\xcf\x85\xbf\xbc|\x13\xd3\xab~\x88\xde\x84 \x7f\x18o(f\xc0\xb6,\x17\xac\x0f-~\xa8(\x1a\x0e\xab\xa1\x94K\xb5\xe8W\xc2vP!\xc5\xab~\xbe\xf0\xc2\x90,\xe1\x14l\x1b\xa3\xa7\x90wP~\xe4t\xe9\xbc\xf7\xf5\x03\xaeE\xae\x99\x9d\"\x057\xa9<\xb7\xc0\xd3\x08;1(M\x8a\x01\x0bQ5\x86\xc6E+\nc\xe2\xcdn\x92\xd4K\x89\xbf\xf0\xc2K\x82i\x92\x97\xa3\xddvD\xbe\x8b\xe2\x0e.Z\x06\x0d\x97\xbd@r\xfb\xaa\xdf\x85\x94\x1f_x\xfe[\xe3qV|\xbc\xf82\xd1\xf9\xdb\x89\x8f\xe1\xae=\x14l\xc8\x1f'S\xa6\xdf\x8e\xed\xc4q!i\xb7M\x08\xb7fG4y\xed\x16J\xd9:\x1f\x82\x85y\x89Yzw\xf0\xab\x81\x9b\xa1\xa1\xca\x1a\x1f\x15T\x8e::\"\xa1\x9f\x94\x86\xbb;\x02[h\x17\xeb}\xf4\x1a}\x9e\xe7\xdc\xf5\xa6\xaeL}\x9a@\xf1im\xb8{\xe4O~:\xed\n4k\x16p\xc4'\xc6\xf7(\xd6\xd5\xf7^|\xf2\x14P\x0d\xba\x0b\xdd\x07\xfd\xae{f\xdf[\xdd\x87\xd4\xf9O\xea>\x0d^\xda\xd5\x0f\xf6\xa9\xbfm\x9f\xe2qo\x93\xbbU\xf2\xe7.\xfd\x1a\xdc\xa5_.\xc4\xe3\xfe\x8f\xa3w\xbbw\xef\x1d\xfd\x7f\xf0-\xf7\xb1\xd1\xd5[\xf7A{\xfd\x12U\x0e\x1aw\x0f\xddG/Q\x97J\x98\x84\xa3\xbc\x00\xcc\x83\xd0[.7\xa1\x0f\xccp?\xdf\xe0\xbc`|\xba\xa9\xdfoE\xb7g[Y\xc8\x02\x02\xcedY(!\xcby\x11\xa9?\x0fN\xbc\x08\x12\x0c\x83=\xc4\x02\x92\x0d\xb8\x949\x14y\xb1\xd9\x15`\xf3[Q9\xfb0\x90M3\xf1E\xdd\x03\xe9.#\xdf[\x9e\xa5Q\xec]\x12)\xa2\xa3:)r\xfeTm\x855\xef*\x10aQ.\xb7\xaf\xe5GBa\xc8sn\xa07\x99\x95\xc6\x19a\x87\x7f\x1e\xd2.t\xbai\xf4I\xf4\x8e\xc4\xcf=\x8d\x01Y\xfe\xb5q\xf0R\x10wal+\x8c>\xe2A\x88\xd0\xc0b\x8a\xbd\x0d\x92\xb1\xa9\x1a\x15\x13\x8a\xb14\x9eapm\xb4ai\xe5\x12\xa1m\xa1\x85\xa8\xd2\xb5\xaa\xef\x91\xee\x1e\x81\xf8\xd0*b\xcf'\xa5*\xe0\x14\xfc(L\xa2%\xe9\xe2C\x16\xc0F\x80\xdeyq\x88g%\x1c\xa4\x1aD\x0f\x8c;-W\x170R\x93\xa2I\xaap\xc4j\xda\x87\xc6\xad\xb4\xd1\x1e\xd2+\xe2J\x19\x96\n\xb0\xe4\x06r\xac\xcb\xa3\x14\xda\xfb}\xed\xad\xcfH\xdd\x1e\xdc\xb6G\xe9\x82d\xde\x8b\n\x1c\xa2+\x15\xa9\x01\xc9\x0bG\x12MpS\xac\xb8\x1b\x84\x0b\x12\x07\xd8yt,q%\x98\x1d1'\x93H\xd2\xab\x9f\xa7\x92\xcbH\xddd\x01\xa2\x06\xb7DT\xdb\xde\xc2\xb3\x86.\xcf\xe1F\xcbS~k\xd0\xbf\xc3K\xfd\xfe\x81S8\xc5\xdc\xf1}\xc9}f\x93\x1a\x9a\xec\xcd\xfdc}\x16\xc4\xfe\xb1>\xcf\xcd\xdeAs\xac\xf6\xeaBqK\x04\x0bH-\xc7P\xd2\xeb\xcc\xb3\"zU\x8c\x97R\xd1*g\x13)\x8a5\xe6\xd6\xcb\n\xebWau\xe8z\xc9M\xe8\xf3\xe4\xadYw\x1d\x07\xab \x0d\xae\x08\x9c\xe6.0pZn\x02\x87u\xbc\xef`6\x0c\x1e\x03\xca\xd6\x948pl\x82w\xe5*\xcf\xa4zi\xb1C\x07S\x0e\xc8\xc0\xfd^\x9f\x01\xe9\xd7\x01V\x93w\x15\xfd~\xec\xfd\xde.\x82\xd6,!\xa7\x00\xee!p\x16$\xeb(\x07\xf6\xd1f\xd3]y\xd7\xcf.sX_\xc0\x04\x80\xbd\x19\x939\xba\xa7\x90X\xc0\x0f\xe8\x8e\xa3\x88\x92m\xb9k\x9a\x10i\xef@\x17\xb9\x1du>\xdeE\xa2\xa2\x12>\x99/#9\x97\xf5f\xe8\xc4\xd1$H^y\xafl\x8c\xfb\xcf\xd2x \x96\xa40\x82W\x18\xc3\x153H\x0d\xd8\x9e\x92\x07\xc6\xcb\xc9l\xfd\xe4\xe8\x02\xd9]\xb1 v\x89\x0b~y\x81\x03L\x9dBe\x1f\xbb\xc8?_&\xb9\x8eDv\x04\xb9\xd1\xb8\x83\xbf^\xd3\xc6\x13x\x8c\xa5\x1f\x83\x17\xce\xe01/\xfe\x18|\xe6\xe2sA K\xd0]\xfc\x92\xa4\x0b\x12W\xb5\xe5|\x19\xcbazr\xd1\xc8:?\x17\xd1\x19\xce\xcf-\x16\xaf>\xec\xce\xa3\x18\x9dp \x0cYf)\xcf.B\xe3\x93\xfc[X\x0c#\xe24\x9f]\x0c\xcbh\xd5 s\xd7\n\xa8\x8c\xd1(A\x87c\x82q]R\x1e\xa8\xddW\xee\x13\xb1T\xce\xe7\xe7\xeb8\x9a\x07K\x12\x9f\x9f\x03\x8f\x14^@0$\xa6\xdf\xcd\xd63/%/\xc2+\xbcJ\x9d\x87\x9fx\x90\xbd\xd3\x88\x93\xbb\xba\\\xbcBU+\x89Y\x17A8S\xb1TS\x90.\x95\x8a\xb6r\xe2\xff\xd2\xc3\xa4x(y[\xf1u\x7f\x99\xbc\x08\xb3\x15\x89\xbd\x8b%i\xa2\x07\x9b%j\xd0\xde\x84\xa2\x934g7\xd3\n\xbc\x1f\x18\xe27\xacK\xa5vk\x0ew\xc5n\n\xec\x90\xa58\xf3\xf9q\xdf\xb3)\xae\xa1Ux\xdeM\xa28\xb5\xb5\x04v\x8d\xa9W\x11\xf9\xd7\xb8\xdc\xc3\"\xfbL\x83\xc6}>N\xa7\xc8\xcf\x99\xc4\xed\xd2\x01\xca\x93e<\x88\xf1\xde'\xecE\x96R\xf8T\xd4\xe3\xbb\xb0t!\x1c\xa7S\x17R\x91gD{\xa3\xdctX}\x10\\\xde;\xacRR!\x81\xea\xf3E\x1c\xe9\xd3E\xec\x1d\xf5\x9d\xee\x8a\xa4\x8bh\x96\xe8(\xed\x9e\xf2\x1eg\xd6\xc7\xba\x04\xd3\x9a\xbd\x80g\xc2r\xc9\xf9\xa6\xbbfYl\x0cff,?\x96\x1c\x14J\x89\x1d\x94\xf0\x9d\x0b\x94\x81\xa3J\xcc\x80\x19B\xc9*hL\xdd\xa5?H\xa1o\xb7\x0bW.\xdc\xb8p\xe9\xc2\xca\x85s\x17.\\x\xe7\xc2\xb5\x0bg.\xbcp\xe1\x99\x0b\xaf]\xf8\xc2\x85\xb7.\x86\xb1Z\xe2\xe9KO\xf0\xaf\x98T\xdc\xe2\x020%\xe5\x9cw\xe7\xbai\xc6\xabS\x89\x9eK25\xc5\xfb3\xcct*\x831\xb8\xd3\x08\xce\xba\x97$e\xd1\x87\xcf\xba \xfd\xba\xc2\xaf\xcc\xac\xe1b\x94\xce3f>q\xdcB+\xd3\x8dI\x12-\xafH\xcc\x82\xcc\xbe\xe5\x9c%\x87\xd2=\xfd\x05\x8f\xbc\x144\x04a\xe1\xfc\x97\xfbU\xe5\x04D\xa5\x1e\x94\x1fcp3\xb4\xd6\xbf\xb5#\xa7\xe8\xd2\x88\xf1\xe8\x1b\n\xa4Et\\\xf2%]\xad\xfc\x1c\xfe\x82\x16\xcb\xb8W\xf2%I-\xdc\xb4\x11\xf3\xc5s\\x\xa9\x8dhO\xfb\xc0\xd2\xf2a\x94\xe4\xc2\xfbp\x9e\x93\x13v\x86\x8f\xc6\xbd)\xeaQ\xaap\xd1\xe7\x11\xcb}c\xd6\x08iF&D\x8b\xd8\xb6\x9e\x07\xb1\x9f-\xbd\x18\x82\xf0*\xe2\xaa\x1c\x17\xac\xe7/?{\xfe\x83O\x9e}v\xfe\xf2\xd5O\xbd~\xfe\xec\xcd\xcb\xd7\xafLVwZ\xeb\xa5\xad\x89_\xfe\xbe\x08i]3\x8d\x0f\xd4\x13\xbe\x1a/\x99=2p\xe1\x99\xbc.\x89X\x17n\xc1\xa7bH\x99|\xbap\xe5\xe4y\x07\xe9\xfe\xa8\xd5\xb6\xe1\xe1Y\xbf\xaa\x86\xa1\xb2{\x02\xb5h#\xae\x12\xe4\xa8[\xe0\x90\xc1\xa5\x10\x8dm\xba\xa0\xc9\xa7\n\xbe\x14\n3\x18V\x90\xccqMh\x9ew\xfa\x81\x17\x89\xf9\x03\xa0\xbf\xb0f\x99\xf2\xfb\xe3\xb8VD\xcdu.\xa7\xfa\x7fXR \xdf\xefD\x8e\xc7\xf5\xc4\xb8\x0b\x8d\xd3\x14\xd4.kP\xa6\x06\xba\xcc]\xb8M\xefK\x0dj:\xf7\xc0\xcb7\x0e\xe8\x1e\x0b\xb5\x8b\x17\x88u\xa3\xe2\x97\xe2\xae\x9bi-\xffQ\x1c\\\x06\xa1\xb7\xd4Z\xfb\x85\xb0>\x84/\xd4\x87\\\xd2\x7f\x85\x91\x83\x90\xdb\x8b\x9fj\xd9K\x92nr\x0d\x94\x0f\xf2m.\xe7\xbd\xb5S\x07\xb9\xdc)\xdc\xb0@\x0f\x1c)R\xba\x18*\xd5S[^x\xc9\x16-\x1b\xd6Q\xe3\xda\xa3i\x8a\xf1\xdbMZ3\x900`\xfd\xd5\xf7\x00\xe7\x04\xfd{W\xccM\nF\xf0\x12EU\xee\xbe\xc0~\xbc\x96\xd1\x82=\xb1P\x9a%\xba Q\xea PL\xd8 #\x8fP\xac\xbc\xd4\x0f\x03\xcf\x83\xe7\xf4\xc8'\x89Fn\xde1l\xc5\xdatb\xa3R2\x9f\x9aK9B\x9dC7\x7f\xae\x0ey\x81F\x0f\xccI&\x83\x9f\xe5`>K\x85\x1b\x95\xfdZD\xf1X\x94T\xfa\xfa\xb8\x15j\x7f\xe9\x18\x870S\x1f\xe4g\xe1\x0d&8e\x92-\xdf\x9ej\xb3\xd5\xed}\xa1\x8aj\xe6{,n9\x87\x8e\xba\x86l\x0b\x86\xb8\x05\xc3\xb2\x8cFP\x92 \x99\x8c\x96q)\xb3j7\xde\x92\xa7\xe7\x8an^\x1bg~\xe5*\xa1iki\xc8G\xc1T\x18\x17\xc9[\xa8\xa6=w1\n}P\xefF\x8cH\xdf8w\xbc\x1b\xc5\xd09\xcf\x1d\n~'Mk\xcaW\x8dNhA\xddB\xd6Y\xba\xa3U\xbd\xcb\xf5\xb7\xd6\xcf\xac\xbb\xf0\x121\xf7\xda\xee\x16XP\xd3q\x8e\x18\xb4\xaeT\x93pum\x7f\xa1\x0b\x8c*\xeb\xbe\x86\x10a\xd8*#\x89\x8d\xec\x0b\xcdSN\xbb\";\x13\xa7\x1d\xb5\x15\xe4D\x91\xfdN\xf7\x0cyEd_\xab}\xcer\xc8\x83\x9c\xf0\xfb\xc7\xba\xfc}\xf4\xe4\xaf?\xe1\x0ft'|\xd4Kv}o\x9df19K=\xff\xed\x9b\xd8\xf3%\xb6B\xe48\x1d\x8d\xf6\xa8\x90;#2u\xa7.\xf7\x98\x07\xe5\xfc\x1fj\x89\xa4\xa2c\xd2\x9e\x85#;\xe1\xa1\xb6<\xc6\xd4x4R\x91\xb8\x1f\xed1\x89\xc8\x14\xc9n\xe1F\xa2l\xd8\xf5\xa3\x19\x8a\xddxO\x87\"\x1a-CJ\x02\xcf=\xd6hs\xa3\x02\xe3\xc0\\I\xc1\xe2\x84ln[`\xb1l\x88\xad\x8f\x882\x8f\xa2!X\xb1\xf7\xa5U\xa5Qj\xd9\x0b\x8a\xf1\xd6\xec\x9d\xb7A\xd94\xfe\xf2f\x08\x16\xfdS\x0d-\xecb\x80\x9a\x08s\xb7]x1\xcb\xe1\x16\x7fy\x83\xb4\x81ve\xf6\xce\xc3\xf7\x1eXo\xbbgH\x8d\xaaU\xdc\xa2\x11g\xe5]o\xa0\xd41\x18\x08\x8a[8\x91\xe2o\xeb\xc2\xa0\"w\xa3\xa3n*+:Q\x1a-yhk5\x8df\x17\x9et\x1cS\xf9\x9d\x8cc\x8d\xabi\xa3\xbfN\xc8\x02\x15\xd0}\xdd\xe8{\xc1\x04\xfe\xfe d\xf0\x04\x92\x13h\xb73v\x7f\xad\xd8\xa0\xd9\xd4\xc5\x80\xb7yh\xa2jv\x82J\x1c\xb407\x8bh1\xfd\xdb0\x1c\x1e\xee3\xc3\xa1\xa4ag\xa6\xc3\xc3\x83o\xdbt\xa8_D>V9\xae\xac\x95\xdb\xd4-\x8c\xb4X^\x87\xdaE\xd5;`=\xb0>Y\xe1\x1eA\xd9d\xd1\xb4\x9d\xaa\x1d\x17\xe6f\x8c\x84\x9b\xaf\x0d;\x9em\xebzr\xa7\xbek(&oB\x1fR\x9d]A\x1b*Ks\xc7\x81\xe3\xb0\x1f=\x82`,\xec\x12\x98\xbe\xa1\xf5 f\xd6*\xfe\x1f3\xfc\xe7w\xe5J\x17nS/\x08\xf9n8\xea\xddc7\x88\xd9\x96\xc9\xfc\x96{\xa5\x8e\xd7\xc5E_1\xe7\x88\x08\x17\"\xa06r/\x91\x9d\xbb\xfal\x1eE\xd6\xc3\x18\xda\xc50\x95\xa9\xe4wa\xee\x8a\x0d\x95#b\xc9\xb6\\NDy\xdf\xceW\xee\x92\xba\"\x18\xbb\xc6\x04\xb4\xd4[E\xd7\x1b[r\x16\x9bZrf\xf5\x96\x9c+\x83%\xa7\xd2\xdc\xcd\xa6\x06\x9fK\x9dE\xb5\xac4)\xbf\xb0\xd2\x12\x0c?\n\xe7\xc1e\x86\xb6W=\xd1 \xb9mV\x1f\xf5Z\x04I\xaa#+j\x9akJ\xa2\xe2&a\x05\x84\xc0b<\xb3-\xd1\xa5\xe1RF=\xeb\xfc\x9c\x10t\x1b8\x95b\xcb!\x8c\x1e\xe5(h\xd5\xc5\xbc\xe70\x82\x99P\xc8\\U\xdeva\xe5\xb8RA^,\x1c\xa7S8\xd5\xc5[\xe7O\xe8\x1f\x16\xac\x0d=O\x11:\x821\xb3\xa5\x92i\x01\xe2\x91:\xca3V\x11\xf5B\x9f\x0c\x91\xd0o6K\xae\x1c\x0eL|J\x13\x15\x88\x88|\xcan\x0d7\xb9\x9f\xc8\x8d\xd4\x01{\x03\xaf\x91 \x97\x8df\x8fX\x8c\xadCg\xf7u\xe8\xe7\xf1|\xce\xcf7\x9c\x8a\xf9|\x88\xa2\xef\xa63\xc1i\x84^\xcd\xcd&\xa3\xa5G\x9bR,\x05\xfd\xfb-\xbb\x82X\xce8\x9dn\xf0\x9e\x8a6,\xb6(}[\x9d1\x10\x92w\xc4n\xbe\xd1\xc5\x8b\xc7\xd1\x94\x8a\xb0\x91\x03A\x11\x927\xd0\xcd+{J\xe5\xe4\x81\x88K%4\xfa\x1c\x05\xe3q\xc4]\xe40ie\xdcM\xd6x\xeb1r\xa1\xaf\xbb\xb7\x87\x96\xb4\xb8h6\xaem\x96kc\xc3:\xcf\xf8\xa6eg\n\xc4\xac\xf1~\xe2U\x1e\xd1\xa2v\xdd\x0dt\x82r\xe3\xa0\xbc\xa0\xe6\x15\xd1\xafc}\x1cx\\\xc5Pc#c\xb6!9\xd5\n\xbb\xebH\xd8\x89\x85\xc0\x13\x08\xe9r\x13\x07\xa21\xa1\x0f\xcb\x17\x1dI\xcd%8l4\xc0\xe0\x15\xec2+\xaf\xb7w\x82\x847\xa0/\xb3\xaa\xf9.\x8e\x0bC\x8e\xb6RnJ\x15\xb7\xc9\xaac\xa9\x9b\x80Mnl-\n\xe2\xb2\x08\x92\x86{F\x0d\xf7\x8a6\xb9\x89Un\xaf\"\xaf\xdc\xbf\xf5\x86\x9bVu\xad\xbb%\xdd\xd1\xfd\xfa\xb2\xd1\x8d\xaa\xbf\x14\xfc\xa4\x9fue\x16L\x98\xf7\x1d\xfd\xaf\xf7\xba@\xcch$\xb1\xab:O\xc6K\xe7vP\x85S\xc62\xb7#GGx\xe6\xb6\xec\x0b\xcd\xbc\x08o\xec\xaf\xde3]\x9c,\x1d\xd7_\xa1\x16\xaeb\xccU\x02\xad.3\xdbgq\x88\xf3C#\xadTn\x8c\x08\x9f%:\xa3\xdf\x81\xfb\n\xcc\xdc\xd5\xa9\xea\xd3_\xa3W\xd5\x88\xcd^\x9e\x9b\xb0\x12\x99\xb8h\xaf>p\x80D\xf7+i\xb05\xdeG\xd2\x0b\xe8,d\xa7\xe3\x10-\xcf\xf4o\x19%\x1c\x91\xf4\xce+\x19\xa5\xd5\xeb\xfb\xef\xdd\xedN5\xa8\xf6B}\xd7\x86iy\"~(\xce\x14\xcb\x8aC\xa5\xae\x8b ,\xc5]\xb9\xefQ\x88\xadS\xffX\xa3\x1d(%\x94\xbb\xe3\xa1.`\x9a\x8d\x94\x8a\x07\x0f\xd4\xed\x8d\xce\xd1B\xb3\xcc\x04S6\x92y\x1cUrq\xd5\x9d\xb6Y\xe8v\x14\xddq\x0d\xc7\xa8Gv\x99\x8ax\xea\xb8\xf0\xbd(Z\x12/\xb4Q\x94!E\xb8e,\xc0LA\xe8\x15\xfd\x10c\x96\xf4\xbcG\x07N7HI\xec\xa5\x91>\x90\xe3\xb1\xde}|O\xb9\xcd\xc5\xf6\xe8\xa0\xba\xa3=\xfd\xd6M\xf4\xead_\xbf\xff\xe7\xbc\xcdj\xe5\xcb*^mt\xacV\x0f\xcb\x8b\x878\x8cj\x9e\xcb\x87Q\xf5)\x1e\xe64\xf1\x17\xdf\x1bO\xf2\xe5\xa3\xfa\xb6\x9b\xa8\x10K\x8d\x1e\x94\x8d\xa6\xa4\x17\xb5\xa6$\x0c\xb2T(\xe6\x13\xa6\x98\xf7\xed3\xa4A\x9e}\xc6\x83#\x02\x8f\x16\x8eh\x8e\x0bG!\x11\x0b\xf6\xec\xe4q\xf2\xca\x95\x1bb1\xe0 \xe8\xcc$\xee\xa1S!\xde\xa0\xe1\xbb\x93y{\xda\x97P\xc4\xe9\xa7$\x85a\x11\xbf\xb9\xcdo\xeb\xd1\xf3\xb9}S\x928\xfa\x0e&+\x1bA\x8a\x17\xd1o\x0c\xd2\x10;\xd5\xd1V\x1b\xa4\xf0r\xed\xa5N\x95B\x8c\\R\xb1&t\xe0\x86\xf9\xf2\xa5Z\x07J\xf1\xe1#5$\x0cU\xa0*\xe4\x06\xb3\x05~\xc7\\\x08\xe7|\xa9\x98\x91A\xb5M\xd8\xef\xb0\xbb\xf1\xd48\x178\x0f\xe7\xe8\xe5\xfa\x8e_Ge~4\x94`\x8a\xf9\xa1\x07\xe4\x0b\x18\xc19\x06\x16\xb3\x8b\xc9i]tgQHN\x1c\xb4\xbf\x9f\xc1\xa9\x10\xe2\x983\xf0\x05\xd3\x98p7\xf6\xfc\x17\xe5\xdf\xf6\"\xd7\xa6\\\xbb0\xb3opg,\xf0\xae\x15\x9f\xe6\xebj\xa3\xed\xb6!a\x16]9Mv\xa0\xc2\xdbs^\x83\x0d8\x03\xf2\xda\xebF\x8f\xe3uQoW\xc1\x89k\x8e\x10\xbfz7\xa4\x82]#\x05\xbb*\xc7\x92\x1c\xa9\xb6\xc0\xa2\xd8vx0\xdb:\x9bt\xd5\xd8\x0c| f\x8c\x07\xd8\xb3\xa2\xfbn\x8d\xccW\x89\xb0\x1b3\n8\x1b\xa7,\xcb\x1f\xcb\x9e<=q\xa0\xdd\x8e\xb5\xd4\x0b\x8b\x8e\x80\x17\x9d\x8a\x9c\xab\xf6\x9a\xa9]\xac\xef~\x17\x03\xab\xb9\xe0u/\x13.:\xd5\x1fI\x0bo V\x13\xd3\xb5\x10\x17<&.\xe2\x93~\xf5\xb4Zry\x97\x83\xd8F\xb52/J\xa4J\xc4\x08}y\xfa\xf9\xf9\x8c\xb00\x94A\x14\x9e\x9f\x0f\xc1\xc3\xd0\xa2D\xe7\xccw\x1ez+R\x94\xb9\xb2\xab\x0e\xd0\xef\xcb\xea\x91\xb9\x1dT\x9b\x9cG1}\xbd\x1e\xcb\xf8\xa0\x17\xcc\x0e\x86\x7f\x86\xec\xcf\x08\x02;'\xe8\x8aR\xa4\xf4\xfb-\xb9\xf9x\x93\xc6\x0c\x8e\xe3\xb8\xf9\x08\x04!$(\xd3.\xcc:\xfc\xc5\x98L\x99\xa7s\xce\xc1Hm\xd7\x16^\xf2\x92c\x89\x98\xcb\x98YA\xa4'\xcc\x9f\xcf\x92 J\xaa\xf4 y\x8e\xaa\xaa\xb3\xb5H\xf6R\xa9N-\xc0kU\x1f\xa8\x95s6V\xad\x92\x83EE\xfc\xa7\xf2\xfa\x8a\x92\xc3\xca\xbb\x08\xe3/\xe2w\xe5-\x9e\x13\xa9\xf2\x9e\xc8\x9a\xc4\xde\xe4\xbf\x94w\x13\xe2\xc5J\x93\x0c\xc8\xdfd?\xd4\x17\xd7\xc4\x0fHR}\x93A\xc5\xab\xec\x97\xe6\xdde\x90*o.\x834\x7fo\x19\xa4\xca[\x92\x08PyWz\xc2k\x90 \x9azrAA\xa9'\x7f\x92\xd7\x93C\x94z\xb20\xf1\xa35E\x83\xea,HOx=\x12\xa4\xe4E\x82$F\xa2J\xd5\x9d/\x119\xdaFU{.\xba'\xda\xaf\xb5 \xcb\xba_A\x95*;\xae\xd2\xb1\xc0\xdc1\xb9\xe5MZ\x15\xe4\xdb\xc6\xec\xedL\xef\xd1\xad\x90Qh\x83\xe5(\x0e\xa1\xa5\xdfx\xa4x=\xdf\xb4\xd5\xa4\x92M\x0b\xd4Q.\xcb\xa3\x0cddr\x9b\xa6U\\>\xe1\xed\xe8\xb5\xa3\\\xee\xae\xe4\x86\xc7\xe0\x189\xc6\xd9r\xa7\xf4\xbd\xca\x11\x11{\xe5[\xae\x98S\x8b\xbd\x105\xbf\x10\x94\xe2\xf0\x97\x04f}\x15\xe5\x99\xd0UQH\xe5\xf7\x89\xa5%\xe9g\x8f{[G1b!\xcfP\xdf\xa0\x93\x1cR\x8c\xea\x9f\xcb\x0d\xfac\x90\xd8\x1c\xc52\xdc}4\x9b\xf5:?\n\xb1\xab>Z4\xb9\xbd\xa5\xcf\xe54\x05\xac\xecY^\x16#\x98V\xb3\x18\x9e\xf2\x8b{\xb4\x1d~'\x8ecj\x87\x87\xfe\xb0\xa3b\xd1=\\\xf4\x80\xa2=\xf3\x93\xc5X&\xe3\x1e\xf7q\xc7\x07\xf4E\x17\xbcq\x9f\x03\xbf\xc5\xae\xe7}\xefO\xc7\x11\xe2xvr\xaf~;\xae\xa8\x8c-\xe0\x1d\xf0\x97k8\xb5\x99\x16\xd5\xa1n\x17\x1b\x83\x07\x8f\xa9\xc1\xe4\xac\x1e\x93=\xee^^\x8f\xebyn>c)\x1f\xd9\xc1\x06{\x81\x0b[\x19\xc5.\xf3f\xa0\xaf`\x1a\xc0q\xb2 =\x8d$,\xdd\x9c\x9eJ\xd2\x7f\x86\xe8\xe0\x8d#\x89\x9e\xd6\x93R\x9f!J\xc6\xe24\xb1\xbe\xf6\xa7\xe3\x00\x91.\xba\x03a}\x90\x9e\xe5\x17q\xf3\xce\xd0\xf7\x85\xdf~\xe0\"B\xd3g%\xd0 \xb4\xb0\x18\xb7\x7f?z\x04\xbe n\x0e2\\\xbf\xbb\x8e\xd6\xb6\xe3\xb2E\xe1\xbf\x9c\x0dj\xdeb\xbbH\xd7\x016\xd9'\x9b\x86_\xe1r\x8a,\x97\xa8\xd5\x7fG\xff\xeb\x1eRY\xc5\xf0\x7f\xcco'\xb2\x90\xb4]\x0ci\xc7\x83:\xdf\xe7B\xe2VB\x9c\xdc\xf66G9\xb4w\xa7\xf6W\xef\x91P\xa6\xf6+\xef\x15\xbb\x83\x98\x16I\x1e\xe0\xe1fk\x03\xa9\xbf5z\x18=XYt\xbe\xe3\xb4n)\x1bW\x89\xe4C\x88\xc5\x12\xb9 .:\xc2\x19\xbc\xe0\xca\xc2[PHi\xe18\xd8h\xd7\x95\x85\xac\xa6\xe0\xa1,_6K\xac\xe3B\xc8~\xb5\xdb\xa9\xf3\xed\xf0BIc\x85\xf9\xa3\x90\xf1\xb7p\xa0\xec\x0c_&Va\xe9\xb7\x86*<\x0c\xd1\xd1\xc8+\xdf\x02\xbdy\xc8S\xa0^\xc9\xa0G\xf5\xd0(\x8a\x9a\xe48\xcd|hJF\xf7\n\xc7\x15\xcd\xe09\x82\xb8\x10\xa1\x7f\x01ECM\xd8\xe4\x0dh\xe1F\x18\xce\x8e\xb9L\xcag\x83\xa5d\xc9G5\x00\xe1\xc7\xbb;\xe3<;C\xf9x\x86j\x16M\x136#\x9e\xcb\xf3~\xf3S\x1aC\xfel\x0b\xe4\xe7\xbdi\xd5\xf6\xa6\xe1\xc8@\xe4\xe6=U\x90\xf54\"\xb2W\x16\x91\x93\xb2\x88\x9c\xe4\"\xb2W\xfc\xd2\x88\xc8j\xcd\xc6\x9er\x89\x98\xae\xd4\x86\xd3s\x0f\x96e&\xe4p\xc7\xed\xe5\xcaD\\\xed\xeaw\xf4\xbf\x1e\x86\x07j\xef;\x85v\xff\xb8\n\x8f8\xfcH\x7f\xbfM $..\xcfT\xef\xe0$\xa6\x8bo\xe5b\xdb\x05\x0870mL\x15\xc1\x93\x184\\x\xe7J\xd3\xa5\x0bk\x17\xfd+\xe7\xdcAQ\xa5/u\x0f\xaf\xd0\xba!\xc2\xce\xa9\xcfo\xf0\xb9\x08\xc1X\xc6\xe8\xe2=\xf4\x08\xaf\x97\xe5\x84\xa4QD\x17\xd6\xe2V\x8c\x91\xa1DJ\x07\xbcVj\xd4\xd4\xebC\xad\x80\x88\xd7\x1737\xbb$\x17\x9f{.t\xfa\x945\\\xf1\xcb'\xcb<&\xc2\x9a6\xab\xda\x9c6rX\x8eli\x02\xe1\xaa\xc6o\xf9}e\xfa\xa2P\x04\xe9m\x9e\xbb\xda\xdb\xed\xda\xfb\x93\x90\xbb\xbbI\x11\n\xb4s&;\xee\x8d`\xbc\xc0\x88\x15\xa1p\xe2c\xd4=t\x98\x0d\x0e\xa7V#\xbd\x89O\xcc\x18\x12\xdd\x95KF'\xd6LZ^b\x96|\xe1\x92\xdf\xe0D#>(\x7f\x98\xe9\xa8.R\xec\x8c'4@~=c\xc17\x8a\x80\xc8\xb8\xb7X4\xd8\x88\xf1+\x1e\xcb8\xc6T\nQ\x98\x92\xeb\x14\xf30\xc5\x97\x89\x93\xfbo\xc6,yD\xc00%*P\x88\xae\x89)Et#id\x99\xbe\xf9\xdej\x8a\xc2q\xc5\xeeEr\x9fp\xe3\xa6\x08\xe9\xd0\xd3rV-\x1e\xfeCT\x0f\xa9\x19a\x84\xfc\xccD\x8a\xb4\x1b\xcc\xcc\x9a?\x1e \x13jS\xf9\xd3\x82\x9c\xdd\xd1\xdaXO\x16\xe3\xa4\x08\xda\xcb~\x04\x85MF\xe9>\xbf3\x86X\xa1\xf4\x8a\xffX\xe2\x8f\x9cq\xc5\xdb\xf5e\x81\x0eZZ\x94\xc6\x1b 6-\xc0\x88\x8e\xc3\xa9\x0es*^8\x90u\xe9\xcf\x0dD\xa1\xc4\x9esa\x85\x8b\x14Z \xa5qJ\x12{\xad\xe3\x0fj\xefs\x1a\xc2\xa8\xa2\xe8\xaf\xf9x\xa6\xbd`\x9b\xe1M\xfb\x0d6\xc5g$\x8d\x03rE\n\x8a3\x8b\x08#D\xc1j\xbd$T(\x12h(\x90\xf8\xb1\x96*\x89\x0fk\xda\x9e\xbb\xa0\x1bqe|9\xb5\xff\xafq\x9c\xe5\xcdj\x1aoM\xdf\xf8\xfb\x0f\xd6\xbd\xbc?\xdb\xf5P\xac\x08\xe6n\xe0oh\xd1\xb1\x04)\x04\xaf\xaa\x8a\x81\x85\xca3q\x1a\x93\x8a\x01\xf9`\xbb\xad\x0f\xeaW\xe3\xe7D\x19\xc0R\xfb\x12\x88\x03\xfe\xa64I\x7f\x8e\xc7\xc1\xe8\xe9\x8e\xbeM\xcf\x8e\x1c\x93\x8c\x1f\xe1\\cVF\x9ct\x84x\xb3\x03I\x1elH\xf2\x7f\xd5\xefa\xe9\"\x1asj*\xee\x84y\xccO\xb1\xd5\xe9x\xe2\xe4R:\xac\xb4z\x98\x9fP{]L\xc3\xbf.I\xfa\x19G\xd0\x1f\xd38z\xc5 <\x16LV\xb3\xfd\xef\xa7\xd4\x92\xd2\x0f\xe96X\xe8B%DsXD\xecm\xf1\x88\xbd\x04\x86\"\xa5b#s@\xaf\xb2\xee\xf3\xb33\xba\x1c\xf8\xa5K\x12\xdf[\x17\xfaT\x19\xa8N\x95`,\xcd,H\xc4dP2z\x19\xbc\xd8\xfef\xd1\xec\xdf\x84\x98\xfcl\x16\xc4$\x01\xaf\x08}g\xf4X*\xc5\xbb\x96\x82L\xf1\x10La\x9ea\x81\x12\xcfN\x9f\x1d\x83)ya\xa2t)[\xc2 \xb4\xdb\x01<\x81\xf8\xc4\xc1\x19\xe6\xf9{\xe4B\x01\xde{\x8c\xa0Mg\xff\xe9\x08\xfa(\x05S\x01d\xb7\x8ftgp\x08\"\x03!N@\xc0\n<\x1d\xc1\xdeQ^v\xff\x10\xcb\xd6=\x7f\xf4\x08\xf6\xf6i\x81\x8c\x12\xc6\xc9\x04\x83F\x15\x96\x89\xfe\x01Zr\x80\x12K\x1b\xfb\x1a\xb0*[\xfdJ\xd8\x01\x82uup\xc4\x1f\x88\x0e\x1e\x17_\xf5=D\xe8\xc1~\x0e=\xee\xe5\xd0\xe3\xc3\x1c\xda\x1f\x0c\xf02(\xce\x13\xce\x11\xa5\xe0\xac\xcbe \xce\x9b\xf5\xff\xfe\xc5\x9fY\xb5\xfbPuz\xd78Q\xc8\x18\x8b\x1a\x18\xf6\x0dO\xdan \x91Y\x8a\xcfJt\xe5r\xec\xeeX\xd6\x1b\xbew\xf2\xdb:\xa1\xdd\xef\xdf'\xb0\xa76p=\xad\xd8:?'\xc9\xa7\xd1,[\x12\xabJ\xb5y\x9a 9\x8d\x82\xc3T=\x98K\xaf\xceQ\xc5x}9I\xbd\x94|\x7f\x99]\x06a24l\xdadM|\xd33\xfa\xf1\xb0\xcdd\x08\x99Y\xc8O\xc8\x92\xf8i\x14'C0\x04c\xd2\xbf\xcbR/\x19\xbb\x068\xb6Y\xe6\x13Zs\"\xa6\xc2\xdc\x8f\xbc\xaf\xd1F}\xf5\xf4}U\xf1\xf0;\xfa_\xefU\xf9mn\x87\xf6~\xffX\x89\x90\xcd\xed\x0c:\xbb\x84o\xd3'{J\xa0e\xfeh\x7f\xaf_}\xe4\xe5\x8f\x06J\x90i\xd1\x87\xbd]\xc79\xf9N\xfeL\xe0\x0e\xf8z\xc5O\xca\x98C\x81\x9f\x05s8\xa9\xa0)\xe3\x06_U6\xa7|+G\xa3\x10\x93b\xe6\x05!=\xb65\x1c\xac\x0bC\x1d\xa7eEF$\x93\x19\xbc\xd8(i\xd9\x8fC\x9d\x84\xb9\xd1\xbdB\x99\x07\x1e\xb4X'a\xb1\x1c\x97\xd5 \x93\xdfQ\xbf\xd1q/\x95[B\x97$\xfd$\xf2\xbd\xe5s\xdc\x04\x9b\xc5\xfa\xb3{\x18\x8c\xd8\x8b\x13\xf2\xd3\xde\x8a\xbf\xea\xd8\xb1\x18\xfcv^\x0erC2]|\xdc\xe9t&a\x16/\x87`-\xd2t\x9d\x0cwv\xd6$M\xd2(&\xdd\xe4\x9dwyI\xe2n\x10\xed\\\x0dv\xc4\xaf/\x92(\xb4&\xe1,Z\x9d\x07\xb3!X\x7f\x85?\xe8d\x815 \xd11\xddK\xa3\xf8\x07\xa5:\xa3p\x19\x84\xe5\x1aEAk\x12F^\x96.\x06\x9f\x91Y\x10\x13?-\xde\x1c\xee\xec,\xe9\xbc-\xa2$\x1d\xee\x0ez\xbd\x1dV\xb2\x13\xf3\xa2\xddE\xbaZZ\x93\xf0\xb1v\xd0\x1bQp\xc9\xb5c\xd07hR\xe3\x87\xa9^\x7f\xdc\xdb\xdf\xebi\xb7od\xc4\xdcZ\xf4Q\xbcH\x85\xb5\x120\xfe\xa6\x88\x15=#\xeb\x98\xf8^Jf\xe0\x853\xc9\x91&K\xc8\xac\xdb\xe0C\x03\xf2\xfct\xa9\x98\x87#\xe9\xc9IK\xbbg\xfe\x82\xac\x98uu\xf7\xa8\xf4\xe4\xe3g/?9{\xf6\xf1\x8b\xf3\xb3\xe7\x7f\xed\xc5\xa7\xcf\xb8\xc1vP*\xf3\x93g\xaf_\xc9\xcf\x07\xbd\xdd\xd2\xf3\xe7\xaf?{Q~^~\xff\xa3\x17\x1f?\xfb\xc1'o\xce\xab\xed\xec\xefj\x8b}\xfc\x83O>\x91\x8b\x1d\x95\x8b-#o\x86\xa1\x02\xe8\x97\xea\x83g\xf4P\xc1\x9f=c\x17\xce\xc4\xe3\xc4\x9b\x93O\xc4\xbb\xe2\x87\xae\x80\xa8C\xfa-\x17\x9be\xab5\xc6\x0c\xa4_\xaa\xef\x7f$\x1e\x8a\x1fr\x81\x9f~\xf6\xe9'/\xae}\x82!\xe89\x1e\x96\x86\xf6\xe9\xcbW/?}\xf6I\xddZl8\x87\xe6\xe9K|/D\xd5\x81E\xbfY\xa5gH\xe1\xd8C\xfcZ~\xeaG+\xee{\x12\xd9\x16\xffQ.\xe1\xcdf\xcf\xa5\xf0\xe1X\xb0\x0c\xb3\xee!\xdfI\xfe}\xd5\xab\xfcA>\x9b%0\xbfD\xa5h\xa0\xb3|\xeaJ`/\x9f\xaf\x128iVH\x97_\xf0U\x85\xf2\x1cF0(\x83(\x92\xed\x96A\x14u\xf6\xca\xa0\x85Z\xd7L\xad\xebJ\xad\xeb\x86\xb9\xc2]\xf7z\x9d\xc9u\xefhr\xdd\xfb\xde\xe4\xba\xf7|r\xdd{\xd1\x99\\\xf7?\x9e\\\x1f~\xdc\x99\\\x1f\xedM\xae\x8f\x0e:\x93\xeb\xe3\x8f'\xd9\xc7\x1f\x7f\xfc\x02\xff\xffxz;\x9ed\x1f\x1d\xd1\x97\xb3\x8f\xbe\xf7\xf1\xc7S\xfb\xb4E!\xcf\x19\x84\x96pn\xed\xd3\xe1\xf8\xf3r\xb1\xdb\xcf\x9dJ\xb1\x9dr\xb7.y\xb7\x8e\xf6\xcb\x1ez\xe5R+,\xe5N\xc6\x93\xe9\xe4\xab\xc9\xfb\xea\xe3s\xfa\xf8s\xfbt\xd8\xbam\xb5n[c\xaf\xf3\xe5\xa43m\xb7\x9c\x0fv\x82r\xc9\x8b\xa2\xe4\xf8\xf3\xa2>\xc7>\x1d\xfe\xc4\xb8\xd79\xf6:\xf3\xe9W\x83\xf7\xb7\xec\xfb\x97\x93\xce_9\x99\xecLN\x87\xdf}4\x9a\xb4'\x1f\xb8\xe7\x93n\xeb\x7f\x98|\xf8xbO\x1c\xfa\xf6\xd4\xf9\xf0\x83\x9d@\xc7\"\xde\x19YD\x9f_B\xc33\xe3.\xfb.\x11q\xb5\xaakcU\xc7EM\xbb\x83\x0dj:\xdb\xa6&\xec\xdf\xb6}}alao\xaf\xa8\xea\xb8/}\xdf\x95\x9a\x18\x94~\xeco\xd0\xe03\x83yG+\x9e\xee\x1d\xa1\xb9\x02\xa5K~\xd2>\xc5 9{G0\xa4\xc7\xea'\\\xef\xb0;\x80[`\xc9\x9c\xd91\xbb7@}O\x87\x16j\xd3i\x19B\xa7_\xdb\xb1\xd7\xe6\x998\xca\x15]\xd6\xa4g\xb1\x96s\xc8\x7f\x87\x00\xb9\xc8\x05\x85\xf4\xfb\x07\x12(\xc5BU@?_.\n\n\x19H\xae\xe9\nA\xbd\x81\x04\x9a\xb3R{\x12(f\xa5\xfa\x05\xe8\xbf\xa7\x90]\xe95\xd4}\xec\x16/=\xb6\x1e\xc3\x10\xf6\xa4a\xec`\x0f\xe5\x96&\x14r(u\xe7\xff\xf9y,\xb3/A~\x13\xcb\xc8#E\xaa@\xa1G\xbd\n\xf4\x98)\xabk\x17\xe1\x8b\x9a#\xc6\x93\x11\x1c\xec\xef\xef\xee\xc3)W\\a\x96\xe9\xe7\\\xdfd\xa7\x85\x03j\xf9\x01K\xe9\xd9\xa6\xa7\xb5\x0e\xd6p\x00O\x9fB\x9fJX\xfb\x07\xbb\x83^\xf9\xd1#:\xdf\xbb\x8a\x11\x15\xe4\xd3\xd8[\x90\x13\xd3\x0e\xf6\x0f\x1c\x17^j`\x9f\xb2\x84r\x9f\xc2\x13\x18\xec\x1f\x9c\xc0\xa7\xed\xb6\x03o\xc7\x9f\xd23\xd9k\xfbS\x87\xc7\x19\xe8\xb9\xf0\xb2\x00\xea\x88\xd3\x1b\xad\x1e_hb\xc9;\x08P\x01C\xdeQI\xb7;\x0f\x96$\xf4V\x84\xb2\xf6 \\g)\xde\xdb\x8f\x92 \xc5;\x96i\x97\x9e\x1fd\x18t8\xf0,\xf5\xe2\xb2\x9b\xbc\xda\x97\xe7\xda\xbe0Q\x99\xf7\xb3\xf6\xfd\xef\xeb\xdf\xefF\xe1\x0f\xbd8\x0c\xc2Kv\x96\xcc\x7f\xf2\xeb\xea\xe8y\xca\xeb\xd7-\x0e]\x97\xcf\x94\xd3\"\x15\xd9\x86\x8d\x16\x1a\xf1\xbe1d\x0b?\xa2\x8f \xed^\x918\xa1\xc3x\xf4\x88\xcd\x845\xcb\xd6\xcb\xc0\xf7R~3\xf5'h\x93\xc0\x8eT\x98Q\xca\xe5\x91\x0fC)`\x15{\xb3\\\x12<\x9f\x8a\x96 \x90k\xcfO\xf1b*\xc9U\xba\xb4\x9a\\\xe3n\xc7\x8c+R\xa67m;\x93\xae\xf8\xf6\xc1N\x97\\\x13\xdf\x0e\xc7=\x1e\x03\x8d5\x14,\x97\x9dy\x14\xafdw\xffh\x0e\xe9\x82\x80\xda[*\x8b\xa1\xf4\xf82L\xedx\xdc\x9f\xbal\xafDe\xf8@\xc0\xa5\xb8\x8e\xac\xb5,d#\xc1lhX\xbf\x983\xde\xe6,\xf2\xf3A\x15\x13:\x82\x90E-\xef\xfa\x0b\xe2\xbf\xfd$\x08\xc9\xf7b\xe2\xbd\xa5\xe2[Dw\x90h\n\xef\xdc\x0e\x8a\xaf\xdf\xe7\xad&\xd9\x9a\x8a\xb1d\xd6\xd0hiu+*\xb67\xcf\xfe\xeav\xe8\xa2\xe2\xca\xc0\xb0\xdao\x9e\xfd\xd5\x9a\xc5N\xdfE\x85\xfe\xdf\x12\ny\x16\xd1\x0e\xbf\xd1u8\xef\xa6$I\xed\x18\x03@(K\x9bz\x97\xb0\xf0\xc2\xd9\x92\x80=\x0f\xe2$\xcd+t\xc4$\x94\xfa@[\xc9C*\xa4\xde\xe5\xa7\xde\xda\x85\xb8@\x9b\xc7\xe9\x82\xc4\x84\x1ep=X\xc7\xe4*\x88\xb2dy\x033\xe2/\xbd\x98\xcc \xc9\xe6\xf3\xe0\x1a\xa9\xa2\xf5\x18\xda\x10C\x1b\x1e[R7\x1e;.\\\xb0.\x07\xe6.\xafcB\xab\xb1\x13\xe2G\xe1l\x83>\x8b\xce2\xbf\x87r\xe0\xfc\x92\x96Q\xa5=\xaf\xc4\x92\xe2@U)\xa4\xc8\xdf\xaa\xaa\xe9\x08<\xd1\xa3\x02\xbac\xb0\xd8;\x94\xd8\xf2+\x1e\x888\xb4\x19\xa5<\x08V\x120sz$E\xf5f\xf9\x08\"\xfa\xa7=\x82\xbe\xc3e\x06t\x0e\xf0\xaa\xb6\x15&\xfb=\x19AF\xd7,C\xb9\xa7\xdf\xdf\xeb\xf7\xfb\xc5d\x93\xeb5\xbb\x83\xcf\xa2\x1c\xfc\xe4\xd9\xebW@\xab\xf1\xfc\x94(\xb90A\xdc4\xbca\xab\xe6I4\x84.E\x92\xc6\xc4[\xa1\xc3\x81\x17\x84 \x84Q\xd8Y\xc7A\xc8\xb6z^m\xa2\xab7\xed\xc6$\xc9\x96\x98/\xd53\xad\x99f\xc9>)\x96Lqo\xb9\xe2 \x04\xd0-\xac\xe2,\x833\x1cw\x83\x84\xa7\xdb\x0f%\x0c\xe4\x1a\x9a\x15\x89/ \xac\xbc\xf5:\x08/\x93\x13\xc4\xb6u\x1c]\x053\x8a\xddQ\x16\xfb\x84\xe7o\xa6\x9b@&k\x96\x93\x87\xd8\xa4\x87E[\xf2*xKn\x12;t\x9c|A=x\x02>\xfd\xc3\x164\xc3\x80\x8f\xde\xd4\x95\xe2\x9ce\xd87\x9b\xb0\x90\x94!\xfa\xdb\x04\xecG\xabW\xcfM?\x920Z\xce?\xac\x9b*\xdf\x85\xb9\x8a\xd7Aa\x08\x0cd.\xc3S\xf2\x08#\x91\x95z\x97\xc3\x1bo\xb5\xecF\xf1\xa5;\xe8\xf5\x06C\x9c?\xe6q\xabAsZ7\xbb\xeb\x18$L(2E>\xc0\xa5\xe2\xae0\xf4\xa0\x1d\xe5s\xe7\xc3\x13\x98\xd3?l\xee\x04.Dc\x1fS\x90\x1b\xb07/\xa6\x96\xc1\xe7)\xea]\xe9\x94'y\x8cb\x9e\xde\xa9X\x13\x06\xb0\x99\\\x04t\x8f\xdd\xde\xeaD\xa7\x11x\xecI!`\x95\xe5\x022\x13(\x06o\xc9\x0d&\xe0#\xe3`\xcaB$\xe5\x97~\x83\xe6D>\xea\xe2\x7f\xb9\xd1Y\x8a\x1f2p)\x05\x8d\x92(I\xd1s\x87\xdd\xe8\x12?\xdbmz\xac\xd8\xe5\xc8p\n\xb6\xfc\xc8\xcd\x8f\x9a\xb552Y\xaex\x8d\xca\xe8lz<\xc0\x89\xbd\xa0,\x9en/A\xa8\x18\x85\xc7gmt3\x92$S\x1c\x80\xa8\xacvf>6\xf1\xee\\\x86\x97s\x0e\xd5\x0e\xe1\x84;\x10\x04\xda\xb8\xac\xdc+\xeb\xda\x0e\x1c\x1e}TS[\xbb-\xd7\xa7\xdd)\xb8\xdbv\xd9\xd1\xca\xe0!7\x8bj\x0c~\x9b\xb4\xac}\xf9=\xbc[\x04Td\xe8\xf7\nA\xae\xbf[|\xe7`C\xbf[\xef\x90\x15\xe12\xaa%pv\xbeD\x07\x83\xe6\x89v!\xa6x\xc5\xd6\xfbe8\xa3R*\x9e\x9f\xf8A\x96.\x80\xfc\x90\x16\xdez\xd8\xefu\xbb\x8c\x87\xb0\x0d\x8b\xe1\xc6\x0cq\xa5\x9e\xcd\x0c\x99\x06\x8f{\xc16\x08\xe3\xbe?\xc5\x89\xfb\xd2\x85V\x1f\xbd\xe3\\\xd1\x94@\x0e\xa7\xdc\xbfM\x1aw\x0bf\x8f\xb4 g\xf7|HO\xb9\x83\x10\x9f`\x87\xf3\xb1\x0bo&\x13\x01zj\xf1 !?\x9b\x91\xd0'@\xc24\xbe1\x8a\xd9\xcc\xc7\xacDd\x88\x96\x96\n\x12\xd0\xf28\x8e\xd0\x83\x13Kd$p\x07\xc5\x89\xb4\xfb6\x08g0\x02K\xf4\xc0r\x8b\xcd\x841\xc6\x9a\x04\xca\x9f6\xd3\xa8\\\xc4D\x8c\xd6\xef\x80*\xa6\xd3!\xee\xee\x16\x11\xc2\x1b\x04\x90\xdc\x7fBW\x8f\xb4a\xe8\xf8M\x1a\x18\x8f\x1f+\x99i\x87R\xe5\x03.\x01m\xc2-0\x12m\xc41~\xb3\x17\x86\xb0\xcb\xa4\xa4@D\xb1\xc58\\t\x19Z-k\xf3Z\xd8\x1b\x16\x0b6 \x0b\x94\x91N\xf20\x8a\x03\x9b4\xa7\xbc\x98\x8b\x01\x92\x14p00\xb2~\x89r<\xc9\xb3\xf8\xd1\xd1\xc7\xba\x83pi\x97m\xd2\xbdBL\xcc\xc2\xfc\x04K\xc2\x99\xd0 \xf0\x83\xe8\xbb ]\x04!xpE\xe2\x0b/\x0dVt\xe5\xab\n\x1eS\xa8#.\xb9I\xe3m\x9d1)._M\x96D\xe0T\x9c\x80\xbdK\xa1\xf3\xe0\x07H~\x10\x06r\xed/\xbd\x15C\xc0\x95\x17\xbfM\xac<\x0eqe.X\x16\x85\n\xdd\xcd\x15;\xf2\x195\xf4*:\x9dJ\x9bI\xe6/JGn\xe6\xa5I1\xaf\x8c>\x8c\xb4o6\xef\xeaB7\xaf\xe7*WJ\x15\xba\x02\xe3L\xcd\x97\xd1;J.\xe9v\x8d\xe2R\xff\xcb\xab\xa6#\x7f\xc8\xc8Z\x17\xfa\xf60\x99u\xfd\x1c\x0d\xd1m#F]\xe6)\x08\"\x1a\xc3PU\x83\x85\x8eT\"W8\x85STs\x0d\xe9.\xe5\\\xa2(Ea\xe2\xa9\xee\xb1z~\x16\xe5\x99\xb6-\x0bs\xcd\x9a\xb4\xea\xa8Y\x0bQ\xb3\xf6\x18=\xc1k\x89\xf7\x0f\xcd\xc4[C\x96\x8f\x18Y\x0e\xefA\x96\xcd\x82\x8c\x9e4\x87\xc0K\xc8\xe4\xd9\xd0\x81\x12fV\xb1Zl\xdc\x90o\\v\xd4l\xbd\xb0C\x07\x93\xc76\xd7\xa8\xe5\xb0\xd2\xb6\xc9u \xc5~,\x0f!\x8cf\x04VYR\xe0\x9b\x97\xc2\x92xI\x8a\xaa{I\xcbVb\xd3\xf5\xbb\xa9a\x81\x7fJ\xd2\x86i\xf8\xc2U~I\xf2\xc6\x85K\x17V.\x9c\xbbp\xe1\xc2kf\x8c\xd20\xed7\x06f\xfe}\x033\x97\x16{\x19$) I~Vb\xbfl+Zc\xd4\xd9T\xe8j\xa1\x88\x1e\x9d\xcf\x82\x00pyE\xfc\xcc%\x15\x06@\xb5'\x8c\xd0\x19b]\xc8eLA\x85A\xeb\x1f=R\x04Q\xfbM.\xaf\x96\xc578e\x93\x00\xc3\xca!\x93\x9f:\xd0\\W}\xf8\x84+\xc2>E\x97x\x07\x0d\x1e\xf4\x85O\x0d\xde\x9a'L\x82\xba\xbd\xc5\xcdx\xe2\x94\xbbwZ\xf4\xee\x86\xc9c\xdfJ'a\x88\xd5\xeb\xd6\x8f\x07j\x80\x11\xbc\xa1\x9d\x8cr\x0b\xce\xa7\xf4\xc1\x9ao*z\xea\xbb\x80\x11\xf8\xc5\xa4\xcfs\x92F\xf0<\xd6\xa6\x9c\xecu\x99\xd5\x94\xec\x88\xf9L\xc1)\xbf:\x8eg\xaf\xd789\xdb\xd8X\xdcB\xc9\x9b\x98Og\xc0=w\xcc'4\xe0^;_\xd5\x8475=\xcb\x91T\xfb\xf4\xaa\xf6\xe9M\xed\xd3K\xc3\x06\x04\xeeG\xa3\x0b\"|\x87\xf3\xe3\x92\xab\xac7;?z\xc6$D\x18\x84\xa8\xa9\x1e.\xd6D\xd2\xa1-\xab\xc8\xb4\x07\xecP\x80\x07\x9a\xfd#\xfe\xfd\xf6\x96\xd2\xf2\xb8\xf9\n%\xd2\xc1\xd0\xc5[\xaf\xec\x08h\xd4A\xc9\xefI\x07<\xadL-\x7fX\xaa\xdf\xa6\x91:'pm{t\x9f\x1b\x8a6\xc8W\xf2\x87\xf6p\x9f\xf9[x\x0e\x9c\x99\x1a\xafH\xca\xb9\xc4\xe8Q\x11\xfe\xffc\xee[\xbb\xdb\xb6\x95E\xbf\xf7W\x8cx{\x1c2\x92\x15I~$Qlk\xa5i\xd2z7ur\x9a\xa4\xfbt\xcbj\x16-A6\x1b\x89T\xf9\x88\xed\xbd\xdd\xf3\xed\xfe\xb1\xfb\xcb\xee\xc2\x0c\x00\x82$@\xd2N\xd2\xd6k\xb5\xa1@\x10\xcf\xc1`\xde\x93\xb2d\xe3\xcf\xb5\xdbG\x97\xad\x82\xbf\xe4%\x9c\x82\xfe\xc0\xae\xb7\xd1w\x02\x12\xb6\xf1c\xa4\xc6\x149}\xb6\x8a\xe6\x1f\xa4\xd4\x9a__\xc8l\xb9\xa8kX\xf5\xf2\xa88Z\xc4\x9b\x8f\x02K\x8b\xa2\xb5@r\x02\xb8\x91\xf8\xe4\xff.\xd4\xf9\xc5/$\xc2\xaf_\x97\x86\x9c\xcc\xf2\x0f\x01c\xad\xb9g\xd1\xd5\x93\x14\xee\x9d9\x07\x96\xfa\xee\xf8\x9f\xd2\x13aD\xd8\x98\xf9\x0b~\xf1\x07kN\xcd\x04\xa9\x12\xe8o\xfc ~\x02>\xcc\xa3U\x14\xf2\x95^\x07IR \x9bW\xfe3\xbbKC\x1d\xb3\xa2\xff}\xaey\x9a\xe6X\xdcz\x12_\xf0 \xae\xb3U\x1a\xe0\xd9\xf9\xc0\xaea\xed_\x830q\xd6W\x05\xd5\x1b\xf6\xb9\x19\xdf\x88\x19\xef\x13\xcb\xe5\xf3\x0b\xf2\xd3\x80Mp\xed\xe42yN\xedi08\xc8Y\xcb \x9cG\xeb\x0d\xea_\xd8\x95ec\xf9l\x91\xceS{\xfb\x04\xa2\x18\x96\xd1j\x15]\xb2\x05\x9c]\x83\x8fj\xd0\xd4?\xcbV\xa8\xeca\xebMz\x8d\xca\x0d\"\xfcr\x9c\xa8\xbc\xa6c\xf3\xc6P(\x11\x0dEYeP\xae\xa4\x037DZ\x04T\xca\xa7\xab\x1f+A\x06hB\xb1s\xbc\xd9+k{-b\xd9\x1b\x97\xb7(Hk\xc6\x88\x9e\x81\xa8Qr3\xbfVnV\x80;\x9b\x17c\x93\xe8\xac\xf2Q\x15\xf2\xc4\xd1AH\xb3\x01\xda\xba j\xab\x9c\xae\\\xd4&\xf1d\x81~\xc5\x16\n\xfd\xfe\x81\xc4O\x0f\xce\xbc*\x01d\xa3~\xcaZ]\xccY\xb3\xd4\x93\x88u,\xf9\xc6\x17\xf5\x84\xd2\xc7FB\xe9\xda\xe0\xad\x04\x02H\x859\xa8\xbbi\x86\x05\xd2\x89=\xde\xe9 98IbM\xe9\xc9k0\x1f\xefs8\"\x82ac\xe5EUmN>\x8f\xf6D\x8f\x03\xea\xf1?M\xfeip7\xb2*\xf6(\xc3T\xd3=- \xabM-a\xa5\x8e\x1a\xf3z\xad\x96W\xe8\x0b\xab\xec+i\xd2\x08v\x17\x05\xd8\xfd\xa8\xc1.\xc7\xb7\n~al\x13\x1b\xc7\xf6\xcb\xe4\"\xa7?\x08?\xc2>9\xc5\x9f\x04\xe1\xf9\x8a\xc1\xefY\xc4\xab\x8a\xbdGZ\xa2n\x96\x86\x83t\x1b6\xc3\xdc\xe9\xe78):\x83a95\xbb\x04\x1e-\xc4t\x9f\xff\xd4`\xe2m\xf3\xa9i1\x9eZ\xc9\x88\xf0]\xf5\xd5\xa0\x8d\x18m\xe0\x95\x87d\x03|\x14c\x8dd\x9b-\xce\xa2\xa9\xab\xcbv*\x1aO\x87~\xfb9TrM\x9f\xfcE9\xd0\x7f\x98\xfa3\xafp\xc1\x1c\xa3\xef\x88>\xc9\x16-Rp\xd1\x910\x83\xe3\x1c\x8b\xcf\xcf\xd2\x08]\x89\x1f*Vf\x17\xc6\xf0hO\xfd\xe4l\xc3\xc0\x83#\xfe\xbf\x16\xba\xb2\x80\x14\xda\x11\x19m\x07\xfc\xbb'\x10lo{\xd8\xfb\xd3\xb6k\xc5\x99\x14\x0c\x1b\x87~5\x07\x07\xb0\xebA\x172\xc5R\xa9\x13x\xc1\xae\xfc\x05\x9b\x07k\x7fU\xef\xd2\xa4\xff\xe9K\xf9\x9b\x1b\x95\xe0\xc5N\xb7\xd0ZJ,\xf0!\x8c.C\x10\x11\xd3\x94\xcc\xac\xa6\xeb\xea\xc9\xa8\xc7\xa4~\x8eI\xe9\xe8\xdb0i\xb5\xe1/\x84I\x17Qv\xd6\x06\x93\x96\x06\xd3\x82\x96\xb8\x0dj5\x8f\xc2\x88Z51NGC\xb26\x0c+\x0c\\\xcdXu\x97d\x18\xcd\x8a\xef6X\xd5\xd2H+s'2\x81{#\xac\xdf:\xcf\xdd\x98\xa3\xcd6-V\x07s+\x93\xa7U\xe0'\xb7\xb2x2\x18?\xf6\x8a\xa6N\x9aH\xbd\x14\x8eE7\x84\xbc\x97\x85J\x0c\xb0\x10\xe3(\x19\xc5iw\x92.\xa6\x0fge\xddU\x95\\\xe5`rWS\x14\x94\xba.\xa5\xbc\x95\xdf\x94v\xe1\x9c]\xd1\xcd\xc1\xeb\x8d\xbbl\x06,\xbe\"\xcf\xdd%\xb9}\x12\x92F\xa6w\xe7Q\xfe\xbc;\xd2\xcaw\xf2g)\xe8\xc3\x1f\xfbz\xa5\xc7\xda\xb3Vg\xe7\xa1V_+\x7fL\xa1\x1e\x96\xb5P\x8e7\xce\xbe\xd6\xbd\x10\x9b-IF\xff\xa6\xf9\x18 \xee\xec\xe6\x86\xec\xfb8\x98\xb78X\xcd\xe4J\x80\xbe\xe4ErWX\xad\x8b\x03\xb6\xac\xa5B\x84u\xc6\xb2\x89b\xb8\xe3\x14k\x98g-\x8f\xef\xce^\xdbA\xd4\x0f\x00}eZ\xf4\xd9$\x95h\xbcj\xf29.\x9b\xa5\x8f\xbc\xcdK\xac\xd8l\x05\xe1+1\x8bT\xd3h\xc6gsU@\"\x13\xed\xe6DdP\x14\xdc\x1c\xda\xb3t\xe9\x7f\x99\xc6\xbf\xdfYZ%\xfej\xe3\xb6\xcb?\xbb\xc0\x04\x8af\xf8\xc2\xff\x83\x8c\x078~\xd2wB\xe8\xaf\x0b27Kr\x01\xf9w\x179\x8e\xb9\x14\x15`D\xcb\x10\xfe\xec\x0c%-#\xc6\xbb\x0d\xbeWw8\xbd\x1e\\ \xcc\xe7\x16k\x08C3\xcbv4\xb8<\xd8n\xc4\xf2P;\x1d\x85F\xc8%X\xa0\x99\xa2\xc5\xea\xa6*Q!R\xa4'\xad( \xfd\xbd\x16 \x94\x07\xd0\x96\xde,\xca\xd8\xc0\x998(\x9b\xaa\xa9\xab\x95\x08\xcdnn\x07\x96\xdf\xd5\xc9E\x94\xad\x16h\xabs\xe1\x7fd\xe0\x87\xd7\xd2\xf2\x1a\x95\xb0\xd2\xdf\xbb\xb5\xba[\xe9\x15s\xd1\xd9\x8fjVh\xe4)l\xe1h\xf5\x91\xb9\xda\xd4\xeb\xf1\x84\x06\x13\xef\xfbs\x19;OwM\x93\xfb\xfc\x9e4\xccw\xdc\x82\xcf{~\x05\xb2\xcf=!\xae7\x8c\xbaFh\xbf\xb9\x01g\xe9\xafVg\xfe\xfc\x833\xeb\xc9\xed\x99\x80X\xb7\xda\xeaS\xac=+\xccT\xac\xd1\xd6\x16\xbc\xa7O\xa8\x18\x1f\xcd\xa1d\x10\xa2\xf1=\xdf\xfe\xce\x01\xc6\xe0\xc4\x95\xec\xc2\xbd#H\xfds\xd4< \x98?\x13\xbe\x13\xa2uN+\xf6\xf0 `i\x9a\x97\xdeC\xff\x9b\xca.\x93\xc3{\xd3N\xdeq\xebr#4\xa1'\x13\xdd\xa31\xd9\x82!\xbfS\x9a\xa1s\x94+\xe1\xd0\xcbI\xf7\x91\"~\x94W,\x7fdI(\xd5\xc2\x8a\x7f\xbe\x8a\x12&\xcc\xf8K'\x99_\xe8\x95\x89\xdf\xdc\xc0\xeb\xafr\xf8R\x8f\xcaw\xe1\x87v\x9e\x85\x1a\xfa\xaf\x00\xa9\xc9\xc3P\x90~Z\x18!\xe1KP\x0d#\x94\xf6W\xec\xdc\x9f_\xf7\x94K\x8f\xc8l\xa6m\x18\x99=I\xb1U\x0b\x97E\xdc\xf1\"\x9f\xd1\xfcU\x0f:nIs4\x10tw\x07-z\xcc\xd20\x9ck\x06\xed\x9d\x13m|d\xc1\xdf\xadMC5\xbc\xect\xd63\xfa\xba\x15\xd8=\x19\x0f\x05\x0e\xc8\x8d[\xb8\x07\xa9xH\xc8k\"kiR\x1b\xeb\xe6\xcc!PKNCd\x06\xf8L\xd1\x19\xa0\xa8\xa1\xad\xcd\xb1\xd4\xa8\xa3m3\x04;\xd26\xf8hR\xfc\x05\xfbUPC\xdd[gZ\x1b\xd2\x01\xe4\xb2~1\xc0\xe2\x7f\xb1t\xe7\xae\x81\xa8\x16\x04\x9d6&\xd2;\x8b\xeb\xed'\xe1\xe1\xf7\xd34\x9cI\x19\x1b\xc7\xa7\xaf\x85\xc4\x81\xf0\xa9\x12\x82\xe5`Z\x90<|e\xef\xbc\x88\x0f\x06\x1ak$\xce{\xee\x9e_\x8f(\xdaV\xa4x\x0e\xed+\x8f\xbcbD\x17\x11\xe1A\x1f7_\x90\xccpV\x13\x14\xd0\xad\xfd\xb8\x12\xb7\xe5\xe7\x9c\xa6\x17\xd3D;\x8d\x8df\x9cV\\\x98*\x92\xde\xda\x82sr\xf0,\xee}T\xdc{P\xa18\xc2(\xdc~\xfa\xe6\xd9\xf1\xb1\x16O&\x01?f\x10\x84)\x8b71C\xc7\x87\x04\xd9-\x15tNnmR \x1b\xd0\x82\x9f\x9d\xc0\xee~\xf3\"{\x82\x14hXa\xad\x82\xe6I\xbd\xadc\xc9\xaa<4\x8aQ\x16*\xc03\xf7\xe0(\xecG\xede\xfc\x9dk\x8c\xc2XL\n\xc3d\x86(~G\x0e$\xbd\xa0\xe2\xda\xc9\x901\xa5\x05\xc8\xa7\x80K b\xc9\xd4Wrs\xf3\x82\x1e\xec\xef\x8d\x1e\x8aX\xa9\xfaG\x03Y\x93\x97\x8b<\xfa^\x19\xf7Q\xb2\x04\n\xc5\xd9\xa8YK/\x82\x84\xb6\x100\xfd\x01\xfe\x96\xd131!\x92\xfa!H\x1eQ'\x91\xf1\xd8\x99|\xbc\xb9A\x9e\x9b\xbf\xcc\x03Y\x1eb\xda*\xf9\xab\xd8\x04Q\"XE<\xde\xdc\x90\xd5\x02\x7f\x8b\x01\xaa\xf8;\x19\xa9J\xbdQ\xe4\x1a~)\x7f\x14\xdb.01|j\xf9\x981\nx\xb0b\x8bcQG|\"\xe8wK\xe5\xb7\xf4V\x0d\x1d\xf7.\x07\x06Q\xae\xc9\"\x06j\xb4(\x8e\xd0\x7fJ\x89\x84^\xa6\x1b\x02a\xa1:\x9fH_\x14\x11-m\xa7\x81\x08\x0c\xc5^\"$\x0d\x1c\x158(\xac\x1e\xd3P\xbb\x80<\x08\xf5A\x90\x9bFX8\xb7&\x92\xf3\x89^\xe7 \x0f\xf8\xb8\x0d\xc3'\x1e\xfc\xe0Z<\x8c\xc3|n\xb5\x07\xf4k\x9b8Z\x13E\xc3!\x9d\xe3rW\xc8G\xcb\x96\x1c\xcc-B\xf9\x88\xf3\xfc$\x91aFZH\xac<\x04[\x0c\x07\x10\xf0\x7f(\x04\x1bs\xa3i<\xab\xc7-\xdf\x1b\x0f\x9c<\x99\xdf\x99\xf6/XJ\xaa&T\xc9\xaf\xaa\xe7\x95\xd7\x1a\x8a-\x95\xb5\xe4\xb2N\x07\x06\x9f\x82<\x81C\xe0\xe6\x8aC\xa5\xa1W\x184\x085\xec\xda\x83\xb3,\x85e\x94\xf1[.\x8a\xd9\xad\x128\xe4I\x0c\xbe\xeeU\x93\x1e|\xdf\xb3\xe6+h\xd2B\xb4\xd8S\x04\x99\xb8\xcf\xaeR\x16.\xdc\xea\xf2\xd1\xa1\x1eCV\x9c\x0f\xef\xac\xb4\x1d\x12\xf8\xee\xd8\xd8W\xdaOc\x02\x87Z\xcc,f\xf3\xfd]gS\x8d\x0f\xfc\xe9\xe9\nL\xc1D\x03\xb7\x10z\xb1r\x97r<&.\x12\x89e\xcf\xb2\xe5\x92Pw\x15e\x86E\x94\x19\x8b\x9f\xf3h\x95\xad\xc3B\xa0\xd3\x1c\xee\x02-\xa3\xc19K\xdf\x84\xc1f\xc3\xd2\xa6\x05\xae\x98\xabW\xcfbG\x1b\xae\xa7\x0b\x0dL\xbc7\x88\x00\xf0\xbb\x1a\xc5\xf0pOD\xc0\x91\xf1o\xf4\xd9\n\xeb\x00~\x9do\xd3yvN\x07\xa7\xf1i\xf8\xff\xfe\xaf\x9eU\xc0\xe9\x07\xe1\x82]\xbdZ\xba\xdah\x10\x8b?M\xdd\x80\xf4\x17\x96\x90U\x01lS\xf0\xc0\xc2\"oc\xbf\x0c\x1e\xc0\x88(\x0f3\xb3\x86\xe3\x86~\xbf\x0f8\xf8\xee!\xec\x99\xb9\x946\xeef\xb8Dz\x1e\xbd\xd2Jd\x9c\xec\xd3\xa6\x97\x93Ww^\x9a\xcc\xba,n&\xd0\xf8vieZ\xacJ\xa4\xafJ\xc6\xd7\xf7\x13VE@\x94/\xd7CL\x80\xa8\xba\x80\\\x11sSJ@1\x94\xe0\xbc|4\x00\xefR\xc0\xfcn\xb9\x16t\x0d{\xde\xd5\xee\x8b.8\xbf::\x82\xd2\xcf\x90L\x19\xd86\x1b\xb5\xe3\x18\xef\xf8\xfc\xe8s\x82\x15)\x88{A($\x8f\xea\x1dFK\xbe\x87\xaarN\xb1\xf8)q0\x0e\xc6\xa3W\x98\x00\xf9\xba.\x9f\x9b\xc0\x04\xf9{Q@*\x10\xd2M0\xb9\xa096p\x85\x88\x8az\x19\xd3\xaa1\xde\xad\x11M+L\xf3\x89Hs\xa0])z\xe3\xfc2\x8e]C4\x9c$\x8d+\xd9\xfd>\x04\xe1b\x9c\xabs\x0b\xef\x94\xf7\xd7lu\xdb\xc6\xcd#\xaf\xdb\x17\x91\xe7\xf1Mz\xbdbcp\xd4z9\x7f\xf5q?\x8b\xa2?\xf5\xb8\x1bL\xa7Z\x1f\xf7\xc2\xb1N\xe3\x8c\xe9\xc7\xf8m\xf9\xf7O\xef\x9e\xcbc\xcd\x0b\xf6\xf4\x8f\x97\xfe*)\xd4~Q)x\xfa\xf2\xcd\xf3\xbb\xa2\x85\xbas|\x9b\x81\x7fN\xfc\xe1LE&\x81o\xa2h\xc5\xfcpF}T\xf2\xd2I\nT\xa8\xe1k\xe7^\x8bmL8\xc1\x9a\x82\\\xd2\xad0\x91\x0b4\x06\xb1KmN\xb1 E\xb4\xea\x8b\x16{,\xf7\xbbM_&\x8c\xd1\xae/9\xaf\x17\x96y\xfd\x1d\x10\x88%3\xe2m\xb3\x9aV\xf2\xa6\xed\xe5\xe344\x94\xb5o\xe8\xa1\xd6\x90|*c\xba\xc0\x84\xe9\x820\xfd; :\x12\xd7\xe8\xb2k#\xe0\x04v\x87zS\xc3\xca\"\x17\xee\xe4FU\xe8\x1a_\xe7\xbfD3\xeed\\\xbc\xc7\xf3\x1e\xa8\xf2\xe9i\xdf\x9d\x8c\x83pys\xcc\xff;y\xe1\xddPQ\xe8\x877'\xfe\xc9\xcd\xc9\xd3\x13\xcf\xfbZ7\xb9\xc7\x80\xfc\x98\xadW\xeb\x9c=\xb0K \x8d\xbc\xf3r\x15\xf9_\x84{\xd6\x85\xdb\xa4\x15\xe1\x88\xd6\xedD\x82\x80\xf1t\xda'\x9d\xeaf{\xb3\xcfN\xd2\x18#\xc1\xc8\x11\xc2!H2BX\x1eW\xa8\x91~\x1a\xbd\x8c.\xe5\x89\xe6\xa4\x04L\xf8=>\x06\x11\xfcw:\xeb\x81\xd3\xdd\xceu\xe7\x0c\xe9\x95#q\xc1\xb8d\xf2\xa7h\x91\x1e\xf0\x9a\xcb\x9c\xf4\x10\xa6G0\x11wY\xff\xf5\xab7\xc7o\x8f\x7f~\xfe\xfe\xf8\xe4\xc5\xf1\xc9\xf1\xdb_`,_\x9d<\xff\xeei\xf9\x95\xd3\x0f\xfd0o\xee\xc4?\x811\xb0\"\x85!0\x9b\xcb\xeeFf\x04E2\xe3\x05\x07\x9cZBCX\xe7\xc5Dh\x04\xb7\xe8\x8aIB#\xe6\x9f\xdb \x8d\x10\xees\xb2y\x8c\x0f\xda\xa8\xd8\xdf\x89\xd4p\x89\xd6\xe8\x1c\x92\x1b\x86\x81\xd4hKk\x14\xf0\xa4\x0d\xe2C\xb3l(HN\xfc\x13\xde\x17$\x97A:\xbf\x00\xd7*;\x98\xfb \xd3\xe5\x90cc-\xd0\x16\x07\x81\xcf\xcc\x1dQcJ\x8a\xdb\xa6\xb1\x93\xa7'\xb5\x8d)1m\xab\xc6\xfc\x13\x83<6\xf7x\xb6\x1e7!\xf4\xfb\x12\xab\xc5O\xfeg[\xad\xe3\x93\x17\x9fo\xb5\x8e\xc3e\x9b\xd5\xaab\xa0/\xb7Z\xdb\x9fu\xb9\xb6?\xebzm7.\x98\xe9\xb4\xe7\x9f\x0f\xfa\x03\xc3X\xb4{\xa9H\xf6\xf6 S\xc9\xbc&\x10\xaak\xcaa\x0e\xbfP(\x02fX\x87L\xfe,]C\x99\xfc\n*\xe4\x97\xa2\x8e\xb4\xffy\xdb\xae\xed\xc7\xd7N#A\xd7\xd8\xe2\xa4\xf4\x8b\x93no\xd3\xd9\xcd\x14NO\xd3Y\xd7+\xbc\x1c\xeb\xbd\x17~\x10}H%\xf7=\"\x10\xb1\x85\xfb\xee\xbfn\\N\x8by\xe5n\n\xdf{\x13\xcf\x9b\x14(\xb9V\xea\xdc4X\xb3$\xf5\xd7V+\x96\xcfN\xac\xe5\xe1\xca\x83>\xbbbsA\xb3\xa9\xd2H\x96~\x01r\xcd\x10\x07\xc5\xa23\xd9\x08\xb7L\xf3\xb5\xa7\xf47H\x81\xa9yx\x8a(\xcb'\xa1\xe7'\xf74\xf3\xee\xe7q\x1c\xc5\xae\xf3\xad\x9f2\xe5K\xcbx\x99)(S \xf2\x89v\xd9t8#\xda\xa7\xcb\xa6\xa3\x19y+e\xf4sg\xd6\x83\x0e\x9b\xee\xcer\xf3Wv \xbc\x03\x97\xff\xaf\xff\xee\xed3W,\x83\xc9\xff.\x10\xe1)\xba\xbc \x8aN\xd1e\xd3\xbd\x19\xc5\xa5\xe8\xb2\xe9\xfe\xac\x07l\xfapfC\xc2(p\xc5\x80\xb7\xd3\x873A\x94\x0ez\xb0\xe3=\x81U\xeeK\xb9\xf3\xc4\x83\x15\x1a\xf6\x99\x90\x14\x88\xa8\xd1\xddU\x15\xfd\xd9\xc0\x8bM\x1f\xcfp\xe1\xf9\x9e\xed\xb3]\xb8\x0f\xee\xfe\x00\xee\xe3j\x0df\xd0\x85\xae\xcb\xa6\xc3\xe1\x8c\x83\xd9@\x8a\x00qC\xf4/\xb77\x9e\x88\xcb`]6\x0dzV\x1eFS\xdf\xda\x82e?a\xe9\xdb`\xcd\xdce\xff\\\x93?\n\x0d\xda\xa5\x0b\xce\xd3o\x9e}\xfb\xfc\xc5w\xdf\x1f\xff\xe3\x87\x97?\x9e\xbcz\xfd\xdf?\xbdy\xfb\xee\xe7\x7f\xfe\xcf/\xff\xf2\xcf\xe6\x0b\xb6<\xbf\x08~\xfb\xb0Z\x87\xd1\xe6\xf78I\xb3\x8f\x97W\xd7\xff\x1e\x0cG;\xbb{\xfb\x0f\x1f=\xee>8<\x0dOc\xe7\x96\xec; x\xbe\xc4\x86\xddY\xfbm\xc1\xd3A\xa3b\x9cc\xc7\xc8\xa2\x1e\n)\xf2_H\x1eCa\x9d\x8e\xa8\xe3\"b\xcfr3vi\xbcN1\x00a\x7f\xb7Qk\xc4\xe0\x00\x06\xad4?(\x13\xdf7\xbe\xb6\xe2\xc1\x18\xfe\x0b\x1e\xa1\xf0\xb9\x08\xf6\x9f|q\x06E\xe9\xc5\xf44>\x0d\x0fgB\x86a_\xf4\xa0v[|\x8c\xffc|\x95\xd8\xb7{n\xd1\x07)\xff\xee\xc1\x13\xe0\xab\x9c=\x01\xd6\xedz\xc0\xe0\xbf\xd0\n\x8c\xe4%\xa4\xce\x99\x8b\xfc\x10pt\x04\xc3}\xd8\x82\xd1\xde\x9e\xd7\x03\xbd\xf8Q\xb9t\xb4\xb7\x07[\x90p\xa4\x9f`\x12\x90\x83\x03\xd8\x87\x1b\xf0\x158\x04\x12\x1c\x98\xe9r\x15[4\x00\x19\x087\xc3\x81\xdd\x87}T\xd1|\xd2\x90`\x0c\xc3GJ\xd0Slk`lk$J\xf1S\xe1q\xc8\x97F\xaf\xb3\xab\xbe\x8c1\xe9\xc62\x8e\xd6\xea\xc1\x9d#O\x80\xe8\x1e\x1f\xe7u w[\xa9\x08\x06\xf6\xe0,\x0e!\xd0\xf6Z\x93\xb6\x00\x1d\x93s\x8b\x15\xa1X\x80/k\xc45~\x0d\xae\xb1@\xe7N :\xf1\xe4\xfb\xd3\x00\xb7\x8fo\xfa\xfe\x0eR|Z\xe9\xc8T\xba_*\xdc\xdf\x81-@s\x1c>#7\xe0\x10\xfb\xc8\x83.\xa4SfW\xa8\x16\x01t\x87\xf4\x87\x9fyD0\x86Q\x0e\xae\x85v\x06\xa6vv+\x85\x07\x07P\xeeq\x7f\x17\x1b\x1e\xe6\xc0\\h\xb9:\xc0\x83\x83J\xc3\xfb\xbb\xc5\xf6z\x10\x17\x01O\xfd\xfad\x02\xc2\xca\xceVd\x7f\xc58\x93U\x02\xc1*,\xbc%\x89\x16\xd5x2X\x9c9>\xf1\xca\xb7\x19\xf2\x97\x985\x12\x83[o\x03C\x80\xca\xfc\xb8\x91>z\xae\\\x83\xf9\xe1\x0b\x9f\x90 \xd8\xea6\x16\x88|\xa1\xf3)\x9b\xe5I\xc0\x94\xa8\x96\x16|\xe6\x08f\x15E\xb2q\xb3=\x87\x08\x84\x13\x84\x10\xd7\x1b\xf0\x04\xa2Id\xd3j\x08\nY\xdfo\xecZ\xfe\xdd\xc9P\x07i\x9f\xe6>x5a\x81\x90\xa8;1k^\x16\x11\xce\xa2U\xd2\x0e\x058\xc5SyG\xfa\xa6*\x9c\xf8\x93<\x8cZ\x1c\xfa;\x9e\xe1\x8d\x1f\xc4\xc9\xdf\xeb\x10\x0b\x7f\xdd\x9a\x83\x9a\x89\x19=\x8dc\xff\xda\xf5\xa5\xdb\xa3R\xf4\xf0\x13\xec\xdf\xed\x04\xfbx\x82\xcd'7h}r\x03\xf4\xe1G\x93!\x0d\xe1~`\xd7 \xff\xba\xec\xd6ok%\x9b\xb2\x19Ge\xd1t\xc0o\x19\xfcw6\xfb\xd3\xa1\xde\xb2\x8f&\x9a\xfac9\xd4\x99\xf0\x06\xb6\xeccT\xd8\xc7\xcc\xb8\x8f\x99m\x1f\xf9ne\xb8[Ae\x89{\x10\x89\xb5\x0b\xc4\xda\x05\xb8vV\"&\xfa\xeb\x0fp\xf1\xd6\xbe\xe51N\x98Uun\xf6)\xfcrg\xb8\xf6\x82\x0dB\xb0\xc4\xfe\xd2\xee\xb1\xb0'L\x10\x15\xa2\x0d\xa7lV{\\>/\xc4\xdb\xf0\xfc\xdf\xcd\x8f\xf2\xb7\xe4A\x16.\xd82\x08\xd9\xe2\x13%/5\xcbp\xfbE\xf5*\x19\xe6o\xcb\xcf}\x8c\x82\x85\x8c(V\xd7\xbb\x89\x93\xab\x13\xfa\xfd\xcd\xbc\xa1\x7fK\x1e\xc4\xec\x9c]}\x11U\xca-\xe4f\x01F\xa6\xc1zm.'\xe5Mg\xa6\xb19\nxp\xfa\xc0\x9d\x9e\x07\xeb\xd9}\xef\xeb\x07R\xb3a\xae\x1e\x1bb\x0c\x80\x18\x94\xf3@\x8a\xdd\x07V%\x02i:\xa4\x05o8\x1d\"\x1b&\xd5\x07G\x9c%mq]\xf3\x9e\xd0\x9aw\xcar\x03\xa0\xb8`\x0b\x947Si\xe5K\xdf\xc1\x7f\xce\x8a\xcbS\xa2-:\xa9\xdf\xca\xab[0\"\xea\x81e\xc5P\x93\x95kFY\xaf\xcc\xc7|\"\x92PT\x1au\xd0\xd6\x14\xe6\xb6\xf8\xa4vC\xf8Zu!\xed'Q\x16\xcf\x19ty\x81ua\xd3\xfe\xf9*:\xf3WB\xe7\xd7=\x04\xe7\x9cB\xf5\xe5\xa9\xe7\xf3Wkz\x15\x9c\x87Q\xcc\x9e\xf9\x89\xfe.\xe0\xef\xd8\x97BfO\xb4J\xea~\xd1\xa21]\x06\xe1\"\xbaT@A?\xfb,\xd9\xc4\xc1\xda/\x19\x06\x06\x8d\x98\xd1\xa8N\xf8-y \x07\xff\x17\xe3\xc6\xaa\xbaF\xfe)\x18p\x11\x06\xf8\xe6{\x16\x11!\xc8\xf48}4\x0e\xe3g\xa1\x9eM\x8f\xfd\xf0\x9c\x8dkyo[TQq8^\xc7\xd1y\xec\xaf\xe9P\x84\x18\xfb\x8e\xef\x98\x0c-v\x16-\xae\xb58<\xce\xf3+\x0e\xf9I\x10\x85oR?ek\x16\xa6\x8eVu:\x98\xa9&\\\xe7i\x1cG\x97/\xc4\n\xe7_\x96?`\xea\x0d}\x8bN\xcf\xb7\xfd\xca\xc0\xe6\xebZ\xb1\xba5hD\xd4\x9f\x84\x8eEt\x9c\xe6\xcd\x0f\xb4\x8d\x0f\xeb6\xbe~\xd3\xff\xb0`s\x9b\xc3\x0b\xdej\n\n\x88\x81\x95\xdb0\x14\xbfu(\xe0\xbbc\x84\x82\xbc\xaa\x82\x02^\xd7\n\x04\xc5\xfae \xe0\xc0v\xeb\xaf\x0cf\x10/\xfc`\xc5\x16\x90F\xca\x16B!\x0c\xbb6\xc5\xd8\xc1\xc6\x8f\xfdur\x0b\xab\xd0H\x06T\x0d\xfd\xb5 >\xc5\x0di\xec\x0cW\x1c7\xba\x07\xce7\xabh\xfe\xa1t\xde\xec_\xe1\xf2Mp\x0d\xe4\x02\xbaQ\x0fB\x199x\x8a\x96\x0b\xfc>\x9e\x0egt\x01\x0b\x95\x8b^\xdd\x91\x08\x02#F\xe5\x9f\xd2g\xf5&4w\xbe\xa1\xe5\x00\xfe\xd4;Z\xdd\xba\xcat\xed\xcb\xda8X<\x00\xf6F&\x8b1\xf7\xd1N\xa98\xa3\xda\xe5b\xbfN\xdaW\xac\x9a4\xcb\x15J\x08\x0f\x0e\xe1q\xb1h \x870,i\xb3Vp\x08;\xa3\x12(\xf0\xb2\x9db\xd9\x05/\xdb-\x96-x\xd9^\xb1\xec#/{X,\xbb\xe6e\x8f\x8ae\xe7\xbc\xac4\xbe5\x1c\xc2ni,\xefyY\xa9\xdf3^V\xea\xf7\x12\x0ea\xaf\xd4\xc7\x15\x1c\xc2~\xa9\xbd7\xbc\xac4\xb7\xe7\xbc\xac\xd4\xc7S\xbe|%7\xc4W\xbc\xac\xf4\xedo\xbcl\xbfX\xf6\x01\x93\x15\x96*\x1eca\xa9\x97\x1f\xb1\xb04\x95\xb7ph\x80\xf8\xc1\x18\x9c\xd3\xd3\x81\xe1\x1ez\x88o|\xc3\x9bG\xf8\xe6\xcc\xf0\xe61\xbeI\x0do\x86\xd4Qhz5\xc4W\x1fM\xafF\xf8jiz\xb5\x83\xaf\xca\xd4\x1c\xff\x1b\xd1\xd0\xcbBh\xfe\xb7\xb3;\x86{\xa7\xa7\xce=\xc3\xd8\xa9\xaf\xd3Scg\xd4\xdb\x89\xe9\xdd>M\xed\xbdi\xa5F;\xd4\xeaK\xf3Kj\xf5uI\xc6P\xac\xfa\x8c_\xd6\xce\xb5\xd3\x03\xe7\x17\xfe\xbfk\x96\xe0\xb3\xf8\xe7\xf9\x1b\xfe\x0f\xd2\xbc\xce+\xfa\xff \xff?>\xd2S\x84\x8f\xf4\xffWX{\xb9\xc4\x8a\xe2\x9f\x17/\x9c\x99)\x90\xc6\xeb*\x92\xcc\xc5\xb5%\x0d4Y\x9e\x1c\xd6z\x93\xf5(X\xc6ho\xcf#B\xe8\xca\xa1h\xbd\xa3b[\xca\x02\x19\xab\xef\xef\xed\xed\xc8\x0f2\xf1\xc1\xae\xe1\x033\xc9\xde\xa1FvG\x8fw\x1f\xef?\x1c=\xde\xf3\xbcb\xf8\xdby\xb4`\xb0\x89\x82Bz\\\x8av\xb8\xf6\xafe\xda\x85\xf3\x98\xf9)\x8b)\xf3\xc2\xe0\xea\x85\xf83\xd1\x0d8\xd0wb\xa0\x8f\x8a;[\xf8%o\xbc\xd3SG\xc4p\xcc\x836\x0e\xf0\xfbm\xc5'{\xd0\xd5\x987S\xb0\x92\x9f\xaa\x9b\xa5\x85\xac\xc6\x9d\xc9crG2\"\xb6\x0c0\xfd\xa3\x9f^\xf4\xd7\xfe\x95\x8b\xf9\xc1E\xf1\xcd\x0d\x8c<\x19\xda\xfbC\xb09\x0e?\xfa\xab`Ami\xbf\xf58\xdc\xcbUt\xf9\x92}d+\xa4`\x83\xe4$\xe2kz\xee\xa6\xf9\x1bO\xfa\x1fie\xb2\x97\xf4z%\xe2m\x17\xaeU\x1bE]\xcd\xffkH\xdfU\xe0\xdcrw\xfe\xff\xfca\x919\x87\"\xfb \x19iP\xc6\xd5\xb8\xa40`J'C\xce\xff\xd1\x13\x8a\x88:\xa4\x8c\xe4\xf14\x10Z]q\x16\xd84C\x0f\xeeN\x87\xc8\x99,7]\x1d\x91A/\xff\xcc\xc0\xd5r\xd0\xc8\x94\xff\xb6\xd7\x03\x97\x12\xb8\x95B\x90\xf7eV!\xde\x0foOdt\x98\xf7u7\xcb\x1e\xf8\xd4\x99\x8f\nk\xfd\xd5\xd4\xe7\xe3\x0b\xa7\xd9\x0c\x0e\xcb\x91oA\x13p\x17\xe1\xd9\xd5@\x8c\x03\x0e\xb6\x98H\xf3H\x05;Q\x9c\xfe\xc0\xae)\xd5\x8c\xfaQ\x8c\xde\x1e\xb2\x7f\x06\x0b\x19=]\xfd\xba\xb9\x81G2\xf6y\x18\xfd\xc4\x96\xd4\x86x\xd4[\x08\xa3g\xd1z\xe3\xa7?\xf2\xe3Lu\xb4\x02\xbd\xe6<\xe2\xd0\x8d\xeeV\x97b)\xb5\x02\xbd\xe6\x1d\xe2\xc5\xcb\\Du\x9f<\xbf*\x86\x98\xc7\x9cWa\x1e\xa6\xbe\x98I\x9a\x97,2\xfe\x85\x9f2a\xa7@\xa5Y\xc2\x16\xdf\xeao\n\xc1\xfdL8\xe2\xc4x\x98\x10\xe8\xc5i\n\xe0\xb0\x14:\x96y\"w1)\xe6\xb6\x87\x04\xd7|l\x89f\xaa\xf4\x04\"8\x80\xe4\x89\x879\x1a\xd0j]\xa6\xe6\x17n|\x98\xf8?\xf2\xd0\xda\x87\xfcCD\n\x0b\xd1A\x82\xa9\xdd\nox\x97\x14\xc65Bc!z\x0eu!\xc4\xa9\xe0\x03C\x01\xd7\xddC\x08<>\xc4\xeea\xd9\x9dL\x80\xb0_\xbbD/\xebbo\x9bc\xebJty\x1f4\xce\xce\xd4\xf6\xb7U\x14-\x19\x0e\\\xb1\x15\x87>z\x9c\xd76\xf4okC;\xa3b`\xaa\xe1h\x1f\x99\xf7\xfda9\xf2\xd5\xe8\xf1\x1e\xff\xc5)\x94\xdcm\x82\x93$\xe2\xd7\xcd\x0d\xec=\xdc\xd9\xdd-~\xc7/\xe3\x1d\xfe\x8b\x92Q\xa8\xaa\xbc|\xbf\xd4\xf5p\xb8;\x1c\x0ek'\xf2\xc2:\x11\x9cb\xa9\x1fl\x99?\xbe\xcf\x1f\x9f\xe6\x8f\xaf\xf2\xc7\x0f\xf9\xe3\x8f\xf9\xe3e\xfe\xb8\xa8\x1d\xd6;\xeb\xb0\x1e\xfcz\x1a\xde\x07\x19\xc8D\xdfn\xf9\xc4\x0f\xd27\xd5X#\xbfs2\xa7X\xf4\x0b\xe7U\x8aE\xff\xe4\xb4M\xb1\xe8g\xc0\x88\xd2\xd5A\xfeP\x1fg\x9d\x8f#\xd2\xed\x9b:\x86\xe8'sK\xf9\nO:\x85\xfa\xa8\xbe}Kx\xa0R\xce)\xd5\x7f\x8b\xec\xa3\x85\x04%\xa5\x9d\xc4x<\x9do]\xba\x8c|,;\xcb\x1f\xdf\xe4\x8f\x97\xf9\xe3\xfb\xfc\xf1i\xfe\xf8*\x7f\xfc\x90?\xfe\x98?.\xf2\xc7\xeb\xfcq\x9d?n\xf2\xc7\xe3\xfc\xf1*\x7f<\xcf\x1f/\xf2\xc7\x8f\xf9\xe3\xf3\xfc\xf1713{V\x17C\x82\x07\x839\x8a\x97\xbf\xed\x10\x0bb\xf2\x06\x0e[\xff\x13a\x05c\xdd\xef\xd7\x9a\xcdS\xff\xe3m'@\x91\xdd\x9a'\x02\xe2\xe6\x8a\xa7\xa3\x861\x83\xca\xffB\xb3\x9c\xa3\xfa'\xe2'=\x81.\xe7\xf50\x9b=_\x07Q\x01&\xfcqL\xc9\xeb\xa0\x0b\xffp\xe7\xc4L\xa2\xd2\xa2\xb63{\x98K\xc8A1\xb2V\xfa\x83\x83g\xe65A\xfb\xcf\x8d\xd0~\x0f3\x934+\xf7\xe4\x9fb\xa4s\xaa\\p\xcaV\x1aI\xc8LK\x84\xd0\x111h\xfb\x80\x0e;\x9c]\xdb\xdf\x19\"\x11P\x8dO\x1a!WL\xdf\xec\xef\x8c\x06\x90\x07+\xdd\xd9\xdd\xe1\xcc6\n\xa6^\xbb\xc3\xc1\x08\xbd\x96\x19lS\xeb\x949f[|\xd6%\x1e\x8e/\x1b\xa7\xdd\xc6$\xf3z+\xcce\xbb\x87\xd0AJ\xe6\xdf\xfc\xe2\x99@:\x8df0\xa6[\xee\xb5\xd9\x1bM\xff\x93\xba\xd4\xba=\xf3(}\xa8\xb9!\x11\xfc\xc1\xbee\x05\x99n\xb0\xdeDI\x12\x9c\xad\x84\xb7\xfb\x18\x02!\xaa$\x0b\x10\x8a=\xe64\x11v\x7f\xb8\xf5\xfc\xfc\xd7\xf64Rp(\xe95)\x00\xc4\x90k\x06-@\\D&\x85XRF\xf9E\xc8\xcf\x1b%\xd46\x7f7\"|\xa4\xde\xf1Q8]\x07\xb7K\x1e\xcam\xbalNC\xa7v\x86\xdf[\x19a\xdb\x909l\xe4(u{\x88\xb9/\xa9\xf4\x85a,\x8a\xf8\x99\xb2\xf1/E6\xfe{G\x98\xa2_\xd0\xfe1\xf8\xf39\xdb\xa4 \xaa\xde\xf0\x06^QN0\\\x81{M7MqZ\xd3\xd5\x8cff\xbfy\xecW\x8ad\x87cc\x95\xda\x90\xd3\x06\x83,#\x9b\xdf\xa9\x97\x8f\xfeOA\xc6G\x87\xbe\xcc\xb3\x17\xf4\x07r\xc8a\x8f\x8er\xd8\x83\xce\x10C\xdf\xa8\x9f\x03Cj\xe0\x04\x14\x94P\x13\xe5$\xad\n\xf9\xe9,\xed\x01E\x85+r\xb9\xe5\x14\xa6\xbc\xf9y\x0fV=\xb4\xff\xa8\xbaIq\x00Ea\x87z\x85\xbe=\xf2MU\\\x86\x02;W\x93P\n\x8dX\xae$Q\xbbM\"@-al~\x13\x18\xda\xd1\x8a\x1aZ\xd4?.\xa0:\xa5\xee\\g Z\x12\xf8pF\xa9n([y\x9d\x05\"\x14D\xacDB,\n\xfa\xb6\xec \xf1`C\x0fE\xf6\x9c\xd5\x10\x1b\xceW&\xe2@\xedb\x1c$\xa1\xd6\x12\x91%\xc2)'p\x16\xd3h6\xeb \x1cCf\x80>\xe5`\xa7\xff\x08\xee\xf1t\xb58A\x02\xf8\xf1l\xf0\xa7\xdc\x9b\x823\x1e2\xeb\xbb\xac\xb3\x14[\x875\x8b\xc9\xcc'\"r\xd3\x84\x13\xaa\xe2\x11\x1c\xe5\xf1MS-\x1d{?\xf1\x97\xec\xdb\x92\xb5B\x8d\xe5\x1eM1\xee\xb3\xab\x94\x85\x0b\xb7z\x8e\xc8Fs\x0cYq\xb7\xf0\xc6/\x8d\xeeN>?\x02\x90\xc85V\xba\xd6\xf0\x83\xed\xbc\x7f\xcf\x92\x1f\xa3E\xb6\xaa\xc6.\xfd\xe8\xaf\xb2\xa2w\x1f:\x8a\xf5\xcfY\xfa,\n\x97\xc1\xf97\xd7\xefb\x0c\x86\xdb_D\x97\xe1*\xf2\x17T\x0e\x87\"\x1eB>\x80\xdc\xe9h4\x18j;h\xf8\xd4\xae\xf1*\xdb\x16\x18\x15\xbd\xa2\x92;\xe0C]\x86\xfd%K\xe7\x17^\xc5E+\x9f\x93qJmvU\xd51\x92-\xca\x97\xb8\x9fl\xd8\xfc)\xd6L\xccH2\xf7\xe7\x0dJ\xcb\xe1\xa6^?\xbd`\xe8\x07\x17\xe9\xe9F\xe5\x9f:E\x91y\x14\x80\x9aSM\xbe\x8c\xce\x88\xa8.\xed'\xa9\x9ff \x1c\x1d\xc2\xee\x00\xd3[\x04\xfdl\xb3\xf0S\xf62\xf2\x17Ax\xfe\x06\xdf\xbb\xce\x12\x1d\x17i@\x9c\xb3\xb8e\xb5w\xf1\xcaux\xc1<\n\x93h\xc5\xfa\xa8\x14se\xffo\xd9U\xaa\x91'Y\xbc\xe2@\x86\x17\x07R\x89\xcc\xe5[)\xdcQ\x7f\xf1\xd7+\xea\xc1s\xc3~\xca\xae\xca!\xb4\xa1\xaaF\xfb[\x9d\x1f\x1d\xf2\xcfY\xda\x12\xd2R^\xf78t\xcbw\x15L\x80\xc1\x18\xa6l\xf6\xf7\xc2\x12\xa5s\xaf\x08w~\xfa\xf7\x0c^\x84H\x91\xcb\x1b<\xef\x0b&\x10\x83)9\x93\xd4\xc7\x96\x83\x17\x16[F5\x9a;\xdc\x7fT\xea1\x11#\xd9-\xe2!j\x93\x02I\x92\x0b\x06\x07\xbcL\xbe\xf0\xdc\xa0\x07I\xff\xdd\xebo\x9f\xbe}\xfe\xfe\xd9\xab\x93\x17\xc7\xdf\xbd\xe9\xb5\xdc>\x0c\x0e\x8d\x80\xeccp\xd1\x7f\xbc\xf1\\\xd6\xdf\xf8\xd7\xfc\xa8\xeb(\xde3\xf7\xfa\xf6\xd5w\xdf\xbdl\xdb\xab\xbc9U\x07f\xb5/\x02UEt\xa2\x86\x9c\xf0\x97=\xe8\xc4\xc5\xd1\x05\xc2\xf3t\xe6}\xc5\xf7\xf9\xc1\x83\xff\x03\x14J\xe2G\n\xdb\xf4\xee\xa7\x97\x87\xc9\xa5\x7f~\xce\xe2\xed,\xd8\xe6xg\xe1\xaf\xa2\x90m\xa3N$\xed\xff\x96\xf4\xd7\xfe\xe6\xff\x07\x00\x00\xff\xffPK\x07\x08v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00swagger-ui.cssUT\x05\x00\x01\x80Cm8\xec\xfd{s\xdb8\xb27\x8e\xff\xff\xbc\n=\xbb\x95\x9a\x99\x1dS!EQ\x17\xabf\xeb\xc8\xb1\x93q6r\xc6\xcem\x92\xad\xad)\x8a\x84$\xda\xe0\xe5\x90\xd4\xcdz\xf6\xbd\xff\x8aw\\\x1a $;s\xf6\xf7\xad\xb3\xd9dl\xe2\xd3\x8dFw\x03h4\x00\xb2\x9bl\xed\xe5\x12\xc5\xda\xda;\xfc\x9fN\xe7\xe5\xdf\xfeo'\x08c\xdf\xc6\xde#\xea:I\xd2\xd9\x0c\xbbzW\xef\xfc\xbf\xce\xec\xfac\xe7\x9d\xe7\xa0 A\x9d\xff\xd7Yz\xe9j=\xef:\xa1\xff2@N\x88\xed\xe4%M\xf7\xb7\x97\x8b0H\xb5\x85\xed{x\x7f\x9e\xd8A\xa2%(\xf6\x16\x13'\xc4a|\xfeWs\xde7,\xe3\xdfD\xfd\x9dU\xea\xe3\x03\xf6\x02\xa4\xad\x90\xb7\\\xa5\xe7F\xd7\xb0&\x9a\x9fh)\xda\xa5Z\xe2=\"\xcdv\xef\xd7Izn\xe8\xfa\x8b\x89\xb6E\xf3\x07/\x85K)\xce\xf3\xd0\xdd\x1f|;^z\xc1\xb9N\x95\xd8q\xea9\x18\x9dQ\xcf\x12\xcf\xa5\x9f,\xc20E1\xf5h\x85l\x97y\x14\xd8\x1b\xea\xf7\x049\xa9\x17\x06\x07\xd7K\"l\xef\xcf\xe78t\x1e\xe8\x16\x1b\x87\\K\x99\xf0\xe7=\xe4OJ\x19\xbb\x83!\xf2;\xb4\xa4\x0bo\xe9\xd8Q\xc6\xf0\x8cy\xbc\x8eii}\xdb\x93UZPT\xea0\x90\xdf\xe9\xeb\xd1\x8e\x96+>T\xca\x9d\x87\xbbL\xe4\xdd2\x1f:\x16a\xec\xf3\xca\xfbg\xba\x8f\xd0/1JP\xfa\xaf3\xbe Y\xcf}\x8f)\x01*\xcbf\xb5\x92\xa2(\xfdW=\xb6\xdaQ\x84\xec\xd8\x0e\x1ct^\x14\x01\xd5\x974\xe7\xe7\x9a\x1f>j\x8b\xd0Y'\x9a\x17\x04\xcc\xd4C\x8a\xaa\x04-\x85o\xc1\x16\x95\xf3 \xde\xeb&\x91\xed\xba\xd9l\xa0K\xda\xd0\xb0\x89\xbd`)n@+\xae\x92^\x02,E\xa7\x11\x87p\x9df\xbevnD\xbbr\xec\xed\\\xe4\xc0\x8fh\x972\xb3$\xc2n\x82\xd2C\xd5\xb0\xaei!\xbf\xd3\x1d\xe6\xff\x0e\xb8a\x01\xa3%\n\\h\xda\xac\xe7\x14j\xd6$\x9e\x16\x83a5\xacW\xdd>\xb5\xe7\x18M|{\xa7m=7]\x15\x1d\xa5\xd6\xf2d\xbb\xf2R\xa4\xe5\x83\xf4y\x11y1Sl\xb8\x8cQ\x92\x80\x83\x8f\xd2(Xw\xe1\xbaw\xd9\xeb4\x04\xac\xeb\xac\x90\xf30\x0fwP\x1f\x89m\xd7\x0b\xffu\x92Vd\x0e\x15\xac\xfd9\x8a3\xef-\x19\xe7^\xa9%\x91\x17h@\x17\x14\x10\x85\xeb\x94&:\x94C\x90\xa0\xa1 \xb2cg\x05v\xdfLY\xb9\xc7LJ\x0f\xd3\xc2\xc5\"A\xe9\xb9\xd6cB+\x8aU#K\xf1@s2nX\xdc\x06\x11]\x13\\@\xd2q#[C\xbf\xf00\xd2\xd6\x11\x0em\xb7R\x82pt\xcaG\xed\xcaO\xe9X\x00\xa5\xb6\x87\x13:\nE\xc1Z\x12\x85&k\xdf\xb7\xe3}\x8d\xc0^\x92j^\xca\xf4*\xc7\x0e66\xec\xc4\xb4V\x8b \xed_\xcc$\xe4G\xd8N\x115\x93Rd]\x17\xcd\xd7\xcb\xce\xdf\xa8q! \xb1\xe7v\x96!v\x01\xac\x96\xf7;\x90\xe2\xaf\x8b\xc5\x02\xa2\x98c\xdby\x80)\xd8\xf8\xa7\xa4X\xc6\x9eK\x04Ndx\xdbY\xc7\xf8G\xd7N\xeds\xcf\xb7\x97\xe8e\x14,'Y\xf7\x1d\xf4\xcf\xbc\xcf\x17\xef\xef\xb6\xfa?\xde,\xc3\xe9t:\xbd\xf9\xf0iu\xf5i\x99\xfd\x98\xffs\xfdj\xfau:\x9d^^]\x0e\x07\xef\xb2\x07o~\xbf{\xfd\xe5\xd7\xbb\x8f\xf3\xde7\xdd\xed\xbd\xde\x7f\xbb\xbd\xb8\xf8\xf6f\xec}\xfbp\xf1v\xfe\xe5u\xf0\xed\xf3[\xfc\xf5\xcb\x9d\xe58\x18\xff\x96\x11\xecW\xd1\xe7\xd7+\xfd\xcb\x951{\xef\xdfl\xe6\x1f\xacU\x81\xb7\xfa\xf3\xdf\xa7\xc5\xff.\xb7/\xd1\xaf\x17\xab\xaf\xbd\x14\xbb\xaf.\xbco_\xdch~\xaf{\xc3\xe1\xfa\xe5\xb5w\x11}\xbb\xd4\xbd\xcf\x8f\x9fofW\xc6\xf6\xb6\xf79\xb4?\xad\x06\x8e\xff\xf9#z\xb0>}5\xa3\xf8\xeb#~\xb8\xbe\x1f\xfd|}\xb9\xeb\xbf\x0fV\xa9\xf3\xc6\xc0\xee\x9b\xab%zc$\xf3`6@\x97\xba\xf7\xf5\xcb\xdd\xe6\xab\xffi\x90\xfd>\xff\xf2Y\xff\xfaa\xe4]\xff\xba\x1c\xa07\xc6\xd6}\x93\x8c\xaf\x1f^?\xcc{o\xf1\xf5\xeb\xd5\xcd\xa7W\x17\x97s\xf3-\xbe\xbe\xfc\xb4\xbe\xf1\x8c\xfb\xd9\xc7\xab\xdd\xf5\xa5c\xbd\xbb\xbf2\xde_\xce\xf67\x1f\xb6\xcb\xd9\xfdtw\xf3a\xb4}\xffa\xb4\x9b\xbd\xd2\xb7\xb3\x8f\xe1nv\x19\xeeg\xaf\xa6\xcb\xeb\xea\xef}\x7f\xf9\xdb\xafo\x1f\xbe\xddG\x1f\xee\xae\xbe\xd6\xf28\xfe\x9d\xff\xdb\x87\xb7\xa1\xfb\xeb\xdd\xf6\xbd7\xda\xb8\xa6k\xbe\x0b\x9c\xc7w\xfex\xffm?\xda\xbd\xff\xf8`\xbd{\x9c\xee\xdf=^\xef\xdf\xfd\xfe\xf6\xe1\x9bg<\xa2/\x96\xfe\xf5\xf7e:\x0ff\xf7\x04\xdf\xabo\xbf\xdf\xdc;>\xde\xbao\xf0f\xee]\xec\xbf\xbd\xf9:\xf8\xfa\xe5\xed\xc6\xfd\xfdv|\xed]7:xcl?~\xd2\xc7\xd7\xfeJw\x7f\x9d\x0e\xde\xed\xc7kg_\xdb\xe2~\xde\xd37\xe8\xcd\xeb\xed\xbb\xc7\xab\xf5\xec\xd58\x9d\xe7\xfaY\xa5\xf37\xd6\xe3\xfb\xe0F\xff\xe4\x7f\xa6d\x9e\x07\xb3u\xa9\xd3\xf5\xd7\xde8}g\xaeV\xce\xab\xd1\xee\xdd\xfdt\xe3\x18w\x96\xf3\xe6\xd3\xe6\x93\xff\xf9qn~\xde\x7f\xed}\xfe\xf0\xed\xcb\xd7\xfbk\xef\xa2?\xff\xb2[;\x8fQf{EY\n9\x9c+\xe3\xe6\xfd\xc3\xdd\xe6\xab\xf99\xfd\xf6\xc5\xd2?|\xba\x1d_g\xb6~e=\xd8_n\x07\xb3\x8fw\x97\xef?~\xed\xdf\xe8\x9fz7\xfa\xe7\xd7\xb3\x8f\xaf_\xdf\xdc/{\xb3\xc7o\x97\xb7\xf7\x0f\xdb\x9b\x87\xdb\xfe\xec~\xb9\x9d]]\x13\xfc\xf0\xda1\xefVs\xff\x06\x13\xfc\"\x9a\xdf\xad\x1a\xbf\xcb\xe8\xd2\xf1?\xaf\xdc7\xe3\xfd\xe77\xe3\xcd\xfcR\xf7n\x0b\xfd,?\xbdYm\xdc7\xe3G\xfb\xcdx{}usy}y\xbd\x9d}\xfc\xb4\xfc\xc7\x95\xb1\xfa\xda\xc3\xeb\xbc\xec\xd5\x83\xf7\x9b7\x1d\x95v\x1a\xdc\xbd\xf9\xbc\xb7\x7f\xff\x86\xbf]}\xdb\xcf{\xfa\xd21\xef2\x1d\x0e\xec/\xd6\xa3\xfb\xe6\xf5\xfak\xef\xf3\xdb\xbbK\xdd\xcb\xf0\xef|\x1c}\xbb\x0c\xcd\x9b{g\x7f\xfbpk\xde\xdc\x7f5o\x1f?\xedf\x9f>\xf5n\xef\xdf\xbe\xba\xd5?\xedo.\xa7\xfd\xd9\xc7\xe9vv\x7fe\xce>\\\xd7\xfc\xbe\xbd\x19\xdf\xbb_\x0c<\x0f\xee\x08~w4\xbf\xc7V~\x9bL\xf6w&\xe0\x93\x99\xaf\xbe\x1a\xe7~\xf9\xe9\xe1\xeeM\x81+\xfa]\xde\x0f?\xf6\x97\xbf]\x8e\xfb\xce\x9b\xd7\xf7v\xef\xb3~\xfd\xe6\xf3:\xeb\xef\x8ew\xfd\xf2\xb7\xe4\xe2\xc3\xcfof\xd9\x08q\xff\xe1\xd3\xdd\xc5\xe7_\xef\xed\xaf\x9b\xc7\x97/\x1fG\x97\xef\x92\xcb\xfe\xd2y\xf3\xbb\xf7\xf5j\xfa\xe6\xe2\xfa\x1fo.\x02\xf4\xf2\xe5\xe2u\xb4\x9d.\xb7\xd3\x8b\xf1hj\xbf\xeeE\xf7\xf8\xd3mF~\xf1\xf6\xee\x93u\x15?\xbc].\x97\xbf\xfc\xf2S'F\x11\xb2\xd3\x8e\xde\x11\x8e\xa4\x9a1x\xc6\xc1\xf4\"\x1f\xe6n\x8b\xc1t\xba\x18\xbd\x1c\xaf\xfew0\xfd\xdf\xc1\xf4?u0}\x7f\xf9u\x7fw\xbf\xba\xba\xbb\xcc\x06\xd3\xaf\xfb\xd6\xc1\xafe0m\xf8\xdd\xaa\xf1\xfb\x0f\x1aLo?\xb6\x0e~G\x0d\xa6\xb7\xed\x83\xf3\xf7\x19L7\xaf>\xe8\xc6u6\x18\xcd\xea\xc1\xd4\xbf\xeb\xbf\xb4~\xbex\xfd\xdb\xc5b:{\xed\xbf\x9c],w\xa3\xbb\xe9\x9b/\xaf\x02c:\xf5?,\xcd\xfe\xed\xe0\xe1\xe2\xf2\x1f\xb37\xb3\xcbW\xdb\xebWhv\x8d\xfc\xd7/\xad[{{\xe5E\xd3/\xdbO\xab\xed\xd5\xfd\xecr3\x9f~\xc1_\x1e6\x9f/\xb6\xeb\xd1\xe6\xf6zz1\xbd\xda^\xbc\x8aV\xa3O\x03G\xcf\xc7\xa5+\xfc\xfa\xe3\xc3\x87\xf5\xad\xff\xea\x95\xd2\x00<\xd2\xf2x\x97\x1c\x85\xb3`\x99\x1d~\xef#T\x8f\xbf/\xc7\xf7/\xfb\xb7\xd3\xafw\xbf\xaf\xa2o\xcb\xe9\xf4\xc3\xa7\x87\xff.\x03\xd9\xe6\x7f\xbf\xbdL\xa6\x17\xaf\xaf\xdc/71\xba\xcdF\xe6\xdbj\xe0|\xd9\xbf\x9d\xed\xec_\xeft\xe72\xdc\xbc\xebY\x8f\xef\xfcb\x1c{\x97\x8f\xb5\xe3\xfe\xd7\xdf\xa7\x9b\xd9\x87\xfe\xf6\xddv:\xfa\xcd\\m\xbf~\xb9\x89\xbf\xfd~\xbb\xfc\xea\x7f\x0e\xec/\xfd\xf1\xf5\xfa\xe7\xe1f\x7f\xbd\xb4\xbf\xdc\x8e\xaf\xb1c|\xfcxq\xe3\\\xdd`\xfb\x0d\xbeF\xc1[\xfc\xc9\x8c\xde\x7f~s3\xb0{3\xeb\xdb\xab\xeb\x97\xb9\x8f^f\xfd\xf7\"\xfd\xf6\xfb\xdd\xaa\x19#\x96\xe3\xeb\xb2\xee\xf7\xbe\xf5\xf8\xde\xcf\xc7\xe0M\xd6\xe7\xf31\xf9\xd7\xbb\xf8\xb7\x0fo\xab\xb9\xe2\xeb\xc7\xcf\xd3\xe5mo\xbc\xff\xf6aj\xbc\xbb\xff\x9a~}\xbc\xda\xcd>L\xcd\xf7\x1f\xfa\xbb\x9b\x8f\xcb\xc7\xd9\xfd\xa7\xa4\xec'\x9b\xd9\xe5\xc3f\xf6q\x9a\xce.\xaf\x06\xb3\x8f\xd3\xc1\xec\x9e\x18c_]g\xe3~\xed_\x8d<\x99/\xea^\xad\x1b\xd35\xdd\xbde\xce\xf6\xd6\xc6\xf1\x9d\xcd\xec\xe3\x83\xf5\xfe\xc3h;\xf3F\xfb\x99gd\xf4\xa9cf}\xf1u\xff\xdd\x17\xeb\xf1z\xdf\xf0\xbd{\xf3\xf9\xf1\xab\xf96r~\xbd\x8b\xe6\xbd\xfe2\x1b\xbf\xdf\xfb\xaf\xbd\xb9\xf9Y\xff\xed\xc351Nf\xe3\x00Q\xa7\xcc\x1e\xfb\xff\xc0\xb1\xf9\xf7\xe9\xe0\xd6|\x8b\xbf\xfe~\xb7q\xf0\xddf\xde\xdb\x12\xf3\xe2E87\xef6No\xb5q^]\\\xde\xee\xa7\xfb\xd9\xe5\x95q\xfdju\xf3\xf5\xcbM4\x0f\xb2\xb2eT\xf0\xb9\xb8\xf9\xf81z;\x0fn\xf4\xaf_\xac\xfbo\x9f\xf0\xd5o\x1f\xdef\xfc\xd7\xf6\x17\xfc\xf0\xfe\xe1z7\xbb\xbf\xd6\xdf\x7ft\x1eo\xee\xddW\xb3\xc7\xab\xdd\xdd\xc7o\xaff\x0fo/\xef>^\xeb\xb3\xcb\xe5nv9\xdd\xcf>:;\x82\xdf\xd5\xbcwc\xcc\xbf|^\xbbW\x0d\xbfoo(~z+\xbf|\xee\xac\xe7\x13\xec\xf8\xb8\xf7\xed\xcb\xdd\x1b\xc7\x1f\xa7\xd7\xbf\x16\xba|\xef\x8b\xe7\x85\xdb\xfb\xab\xfd\xec\xfe\xd6\xbay\xbc\xea\xdd\xe8\xd7\x8f\xf9\xbc\xf0p\xbd\xbf}\xb8y=\xbb\xbf\xdd\xbe\xbf\xbc\xda\xce.\xafw7\x8fW^\xc3O\xde\xfa7\x97\xa3\xf0\x1f\x97\xe3_\x7f{\xfc\xf4\xb2\x8d\xa6\xfd\xef\xe2\xe5v:\xbd{5\x9d^O\xa7\xcb\xcb\xe9\x87\xeb\xe9tuu1\xdd]]\xbc\x1c\xddN\xbfd\xe3\xe6\xed\x14\xf8\xdf\xd7\x8b\xe9\xed\x15\xf0\xfc\xfa\xeajzu1\x9d\xce.\x98\x82\x8b\xe9\xe5\xd5\xab\xa9~u7\x9d^]^\xf0<\xef\xae?\xbe\xbe\xf8\xf4\xe5\xea\xc3\xf5\xe6\xa5=\x9dn/\xa7\xb7\xd3WW\xb7\xb3\xbb\xe9\xe5h\x1a\xbe\x0f>~6n?^\x0e\xdf\xbeMV\xbf\x99\x9b\x0f3\xf3\xb7\x97/\xbf)\xcd/\xc6@m\x829*\xbe\xcf\xe6\xd7W\xb7\x0f_\x96\xbd\xe9\xff\xc6\xf7\xff\x7f\x1d\xdf\xab\xce\x01t\x1c\x9e\x8d\xad\x8asV\xcfH\xc9y\xab\x8c!U\xe7\xad\xc7\xcf\xbf\xe2\xed\xb7\x0f\xe3\x0f\xdf~\xbf\xd9\xb8\xbf\xbf\xbd\xcf|\xe9\x9b7{\xb6\xf8Y%\xae\xbfy\xfcj\xce\x1e\xde^\x15I\x97\x99!\x1f\xbf\xdb\xd7\x1d\x0d\xbf\xaf\xad\xfc\x9e-\xbeoOn\x1c\x15\xdf\xdf]\xb6\xf2\xfbN\xf1=\x1a\xbc5\x1f\xb2\x11\xe2\x91M\x96\xe8\x9f.\x93\xd9vv\xff\xe1.\xfc\xfa\x9b\xf5\xe6\xbf\xfb\x1f~\xbb\x99\xdf\xdd\x7f\x9e]\xdd\x1a\x8bWw\x97\xcb\x9f\xbd\xe0\xe5\xe0\xe7\xb7\xc6\xf4\xed\xa7]\xb2\x9c^\xbd\x99NM\xe3b\xfav\xf6A\x7f\xf3\xb5\x18\xcf?|\xfa\xfc\xfe\xee\x1f\xd6\xab\xaf\xd7\xd7\x92\x04J\xb3\x15C\x1f\x8e\xa1\x7f\x03\x8e\xcf\xccCwO=\xe0N\"\xb8\xf4A\x04\xd7\xa3\xcf\xcd\xb8\x98\xfe\x95\xdeZ\xae6\xe6\xe8\x87\xfc\x01\x9dE\x18\xfb\xf4F\xacA\xff\xda\xa3\x7f5\xe9_\xfb\xf4\xaf\x16\xfd\xeb\x80\xfe\x95?\x0b\xb4J}\xba\x15\xf9Nu\xb1\x89\x83|\xdb\xc3\xff\x12\x95\x96\xdbT\xa2\xe2\xc8N\x92m\x18\xbbB@\x8a\xc4\xbcS\xb4K\x85\x85\xeb\x98!,\xb64\xe9G\x1e\xbd\xc7c{\xf4.UH7\x9a>'\x101\xe7\x94\xca\xf3Q\xd4\xb3|\xd7\x93~BKPmK\xd2\x0fW\xf4\xaf\xb4-\xd6\xf8\x94\x0dH\xba7\xd8I\x84\x9cT\xcb\xf7\xd8\x0e\xe2\xf3%b\"M3\x06\xbbq\xb5\x9b\\\x9d0\xb2\x06\xdd\x9e\xf5BF5\xde\x19\x03\x96\xca\x18\x0e\xbb\xc3\xa1\x94\xac\xbf3Y\xaa\xa1\xbc\"s\xd7\xe7\xea1\xcd\xaeiJ\xa9\x06<\xd5`\xd0\x1d\xb4\xc8\xc6\xb7\xc8\xd2\xa5$\xa3\x9d\xc5U\xd3\xeb\xca\x1bd\xedF\\5\x03y5C\xbe\x9a\xa1\xd1\xed\xf7Z\xea\x19r\xf5\xf4\xe5\xf5\x18;\x83#a\xcf,2$\xc5\xc9\xb5C\xedq\xf6< \xf1:E\x934\x8c\xce\xf5I\\zd\xc9M\x9f`\xb4\xc8~'\xce\x0eT\xe7k\xb2\x9f\x1f5/p\xd1.\xfb\xe5\xdf\xff\xe5#\xd7\xb3;\x89\x13#\x14t\xec\xc0\xed\xfc\xe8{Ay\xea\xc0\xd4\x91\xff\xd3A,W\x90<\xa17d\xd4'u\x08\x80P\xadO\x00\x84\xed\xdd\x02\xaaM\xa9g\x00\x84*\x9d\x03\xaa\xaf\xbd\x7f@\x95)t\x11\xa8\xb2\xf6^\x02\xe9Q\xa5\xa3@\xb5\xb5\xf7\x15\x88J\xa9\xbb\xe4\x84\xcf\xdfc\x14\xbaL\xf9\xb0>\xbd3h\xe9G\xfeS\xba\x91\x7fb/\xe2\xe8\x14;\x11G\xa7\xd0\x87\xf8\xba\xd4\xba\x10G\xa7\xd4\x83\xf8\xda\x14:\x10_\x95J\xff\xe1\xabR\xe8>\xbc\x06\x95z\x0f_\x97B\xe7\xe1\x89\xd4\xfa\x8e\xff\xe7w\x9d\xb6^\x82\x9f\xd2K\xf0\x89\xbd\x84\xa3S\xec%\x1c\x9dB/\xe1\xebR\xeb%\x1c\x9dR/\xe1kS\xe8%|U*\xbd\x84\xafJ\xa1\x97\xf0\x1aT\xea%|]\n\xbd\x84'R\xeb%\xf8\xbb\xf4\x12\xb2^\xcf_\x1e\xe8c\xa0\xb4XN\xb8A1y\xce>?W\x9d?\xfd\xbf\x9e\x1f\x85qj\x07)K\x12\xa4\xb6\x17\x00D\xf9s\x82\xac}\xa6;\xf0\xc2d\xd3\xee)\xf2\xc0t\xacH\n2)\xcc\xbe\x85\xa0\xfeirBd\xc7\x89)\x94\x08\x9f&\x11D\xc6IDQ\xce\x97\x9a\x83\x82\x94v\x9d\"\x19t\x1e\x84\xe5O\x13\xa2\xac\xf6sn\x90\x98/\xb54\x8c\x8e\xe6\x93\x86\x11\xc7'\xef4Gs\xe2;\xc5\xbc\xea\xc7G\xf3*\xc88nY\xe7=\x9a\xd7\xf1\x8b\xab\xda*L_P\xaaN`\x98SX ms\n3\x89yNa'\xb1\xd0)\xec\xda\x82\x12\xd5\x11\xa51\xdd\xf1N'\xb2\xdc\xf1\x9c\xc4\x86;\x9e\x97\xccn\xc7s\x93\x99\xedxnmV\x93\x1a\x08\x1f]\x9d\xc8@\xc7s\x12\x1b\xe8x^2\x03\x1d\xcfMf\xa0\xe3\xb91QL\xb7<\xfe\xce\x1f\x83\x07a\x1aqL\x1389O\x94\xc2\xe4zMt\xfc\x18\\\xf1\x08\x92\x13\x84\x05\xa9\x14\xe4%\xe9\xda|[uD\xaa\x98\xfb\xa7\xb4\x03 Ri\x86\xaf\xdc\n\x89\xc0\xf8\x14\x81\x01\"\x15\x811)0\xed\xfb6}\xcf-g9)\x1f\x95\xd18s\xbb\xa7;O+\x9alt\x00\xe8\xb2\xc7\"\xda\xfa^]1\x1e\x00\xd4E\x81\x88~N\xdf_\x86\x18\x94%\"\x0e\xb8\xe2\x90wz\x80>\x7f.\xa2\x0e\x80{\x81\x94\xba\x8e\xef\x8bs;\x9f\xd2\x8f7\x03Av\x8a%\x08\xf2S\x8dA\xb08\xdd\x1e\x04\x93\xd3L\xc2\xa9\x0f\xb2\x8a\x82Y\x14\x86\x9b\xb9\x9d\xcd\xe3'\x98\xca\x7f\x92\xa5\xfc'\x1b\xca\x7f\x06;\xf9O4\x93\xffT+\xc1\x06\xc1'\x19\x04?\xc9 \xf8\xc9\x06\xc1\xcf`\x90'\x0ee\xac\xe6@\x83\xd04Zq\xd5\xaf\xa2\x13\xbc\xe3 \xc3\x05\xc8\x8eA\xb0a\x18\x1c\xd8\xb5\xe3\x07m\x19\xdb{\x06k\x9a&\x87\xf5=\x17\x82Z\x96\xc5A\x01\xd8p8\xe4`\x89\x877\xcd\x85\xef\x128\x1e\x8f9 .\x8c\x0d\xc1m\xdb\xe6%\x0d\xc3\x00\x92\xc1q\x1c\x01k\x00\x8c\x10\x82u\x9b\xdf\xd2d\xc0\x8b~\xf6\x87\xc3\x83P\xf6&g\x85\xd3\xc6:\x0d]%\xd8\xfeQ?\xd3_\x9ce\xb1\xf8Yw\xfc\x93\x80p\xd4B8\x12\x11\x0e[\x08\x87\"\xc2A\x0b\xe1@Dh\xb5\x10Z\"\xc2~\x0ba_Dh\xb6\x10\x9a\"\xc2^\x0baODh\xb4\x10\x1a\"B\xdd\x92\x13\xeaB\xed\xe8\xbd6\xd2\x9e\x98\xd6h%6 \xea|\x8c\xe1\x9c6^\xces\xda3\x1dt\xd8\x82\x88uX\x92\x08p\xd6\x82\x88uV\x92\x08p\xd4\x82\x88uT\x92\x08p\xd2\x82\x88uR\x92H\xa8\x08\xd6AI\"\xc09\x0b\"\xd69I\"\xc01\x0b\"\xd61I\"\xc0)\x0b\"\xd6)I\"\xc0!\x0b\"\xd6!I\"\xc8\x19K*\xd6\x9f(2\xb1+\xf1\x8eH\x11\x82N\x98O`1r\xd9\xc1{\xa8\xf7u~\x9c\xe5\x81\x8bE\xdf0\x07\x82Y\x01\x82\x0f{\x16?\x89\x84\xb1\x1d,\xf9\x81~`\x02\xf3\xf32\xc4<\xd7\xf9\x10@\xee\x11\xc6\xe1\x96\xc6\xf2\xaf\x0e\xa8\xa5\x85\xe0\x7f]\xcc\x17\x86\xcdO\xa8\xd1:\x8e0+\xb0\x85z\x8e\xcdO\xe6\x05w\x90\xc2\xee\x0f\xccE\x0f6J\xe4\x05l\x04\xe2Z\xba>\xe2\xad\xb2\nS\x08\x9d\x99f\xce\xcf\xa9 r\xa4\x0b\xa7v\x10o\x9b.\x1f\x8e\x94\xc1\x10B\x01\x837\xcc\xe1\xd0\xe2\x9b B\xc7\xf6x\xc8\x0b]E\x19<\xc1\x18\xa1\xb9\xc3\xeb$\xb07l@\xa2\xeb\xc6\xbc\xcf\xb3\xce\xa5\x9e\xe35k\x1b]\xef\xf7\xc7|\x08\x03 Mk\x88\\\x91W\x01\xf8\xf1\xc0q\x80 &\xc7\xa3\x04$q\\\x04\x91l\xedd\x85\\\x88`1X,\x16\xbc\xf4%\x01\xa4H4Z\xb8\x0b\xde{K\n\xb8s,\x16\x0e\x9a\x8bH\xa0\xde\xef.\\\xbe\x15d:\x91\"\x10f\x88\xe6\x9aV\xbe\xea\x84&\x80\xde\x7f\xd2\x9d\xc7\xf5\xd0\x1d\xdb\xae\xb7N\xce\xd9\xa1\"6\x18@\xd7\xe8Y1b\xd3\xadq\x8f\x85\x81(\x93EA\xa0>\x032\x00\x8cf\xe8\xac\xe4@R9\xd6\"\x0fc\x067\x1e\x8f\xc7\xc0\xea\xaf\xdew+\xc0y\x92<[iUz!\xd7\x90\xc5:P\xa41\xad\xd8U,\xe0UV\x1bbU\x96\xb5q+\xf7\x16[\xe4\x82*\xe2y\x15\xdb\x81\xa2\x96\xc8\x05kO\xb6\x1cX\xe7\"\xd3Q\"\xff\xe21\"\x17\x03\x90\xb0\x97\x01@\xd0\xd1x\x9c\xc8\xd7\x00\xa4\xc8\xddx\xa8\xdc\xe3\x98\x8c\xdfS\x9c\x8eO\xdd=\xd9\xefT\xa4Sw=\x86\xdb1\xde\xa7\xe0~*\xb9\xbeX'\x12oB\x97d!B\x8f\xe4\x80\x02\x87\xe4p\xb0?\xb20\xa1;r@\xa17\xb2\xc8\x16g|\xb6\x01\x90\xcbN>\xdd\x15\xdbe;\xc2\x13\xfd\xef\xe3\x88\x02\x9fc'!\xc0\xe7X\x88\xd0\xe78\xa0\xc0\xe78\x1c\xecs,L\xe8s\x1cP\xe8s\xc7M\xb9,\xbc6oc \xa2\xa0<\x9e\x06\xfb\x1c\x9b\x80}\xba\xcf\xe1\xe7\xf49|\xb2\xcf\xd1\xfc4\xadx d\xc5\xaeH\xf5\x02/\xe5-\x82\xf8,\xe4d\xa0\xf93\x0eZ\xdeF&\x91\xc0&f\xb6\x84\x08\x03D\xe3\xf2w\xd4\xb5\x0f\xd1\x07\xb8!\xdcn\x8f\xb4-\xd8\x92a\xb5\xc8(\x1cDd\x17\x1e\x08\x9b\x86\xc7\x81\xd6\xe1`\xa0\x818\x14l#&\xee\x15\x9a\x89\xdb\xbe\x17Z\x8a\x0f\xf5\x85\xc6b\xf7\xe2\xebm\xc0v\x83\xa9\x0cl[\"\x1a\x15\x1a\xd1W\xb4!\x8b\x13\x98\x90\x85\xc1\x16\xf4U\x0c\xe8+\xd9\xcfW3\x9f\xafj=68\x16\x1b\xcf?\xc1v\x023\xe1V3aE3\xb18\x81\x99X\x18l&\xacb&\xacd&\xacf&\xacj&6\x9e\x14\x9b \xc3f\xa2\x80\xc9\xcav\xc3\xadf\xd0\xd7\xba\xf3\x87\xe7zG\xef\xf4\xa3]\xa7\x17\xed:\xf4\xa6\xcbD \x05\xd6\xd4\x13\xd54R\xaa F\x815\x99PM\xbd\x92\xbe\xbd]r$Xc_Vc&\xb9\xaeP\x1f\x84\x03k\xb3\xa0\xda\xfa\xa5\xc4m\xb5\xc9p\n\x83\xf0\x01t\xa2lT\xff\xd3\xfcHR\xd9\xf3\xbb\x92\xa0\xb2\xef\xebM-\x95\xb6\x99\xf8x\x87\x12T\xf8,>\xa5\xe0T\n3{\xedi\xfe\x9f\xe8h\xc2\xba\xbe\x83\x9f\x81u}g7\x93\xd6\xd9f\xf4\x13\xbc\x0c\xac\xefOp2\x99?\xe1?\xd1\x9f\x84u}\x07\x7f\x02\xeb\xfa\xce\xfe$\xad\xb3\xcd\xbe'\xf8\x13X\xdf\xf3\xf8\x13Ua\x14\xa3\xfa\x0b\x1e\xda.\xff\xb4E\xfdq.m_~\x08\xa8\xf9\\W\xe2\xc4!\xa6?%\xd2\xcdb@=\xff\xe6\x11\x13\xb0\x15Q\x9f~\x80S\x89E\xa4\xa7W\x9fRb\x8a\xf3\xf0N?\x14\xe9I\xbe>#\xaf\x8f\x0fa\x8b*\x8d\xb2J \xc4-j5\xaaZyD^\xb1QT\xcc\x97fu\xf7\xf2\xba\xf9\xc8\xb8\xa8\xbbW\xd6\x0dD\xceE\xdd\xbd\xaan\x1e\x91\xd7\xdd+\xea\xe6K\xb3\xba\xcb\x86k\xa2\x96\xd7M\x07\x10e\xfdM\xe3\x01L.A\xd5|\xa0<\x97\xa1P\x80&\xd2@\xad\x02\x00Q\xc9P+\x01\xc0\x142\x94j\x00\xca\xab{\xd4\x9a\xb6\xf00>HoS+\xcc\xd0\x07\xde\x99\xb3\x98\x01\xf0\xe7\xc2'\xb3B\xc8-Ko\xcf\x8a\xa5\x0e_\xa4 \x9f\xcf\x1d\xbb\xaa[\xe4\x99u\xf5B\xe7o$\x10\xfb?!\x84\xc0\xc9+9D^Z\xcb!\xec\x08\x8d\x1c\xe2\xbe@\xc8!r\xf8J\x10\x89\xcf75\xc9\xdc\x9e\xa8K\xec\xf9u\xb3\x84\xce_\xcb#\xf6\x7fB\x1eI\x17 \xe5\x11\xf6\x82F\x9e\xb6\x8eP;\xad\xb0/(t\x06\x85p\xb5\xe8!\xbe\xa4\x83\xf8\xd2\xfe\xe1\xb7t\x0f_\xda;|y\xe7\xf0\xdb\xfa\x86\xdf\xde5\xfc\xb6\x9e\xe1\xcb;\x86\xdf\xd6/\xfc\xf6n\xe1\xb7\xf6\n\xbf\xb5S\xf8*}\xc2W\xe8\x12~[\x8f\xf0[;\x84\xaf\xd2\x1f|\x85\xee\xe0\xab\xf6\x06\xffI\x9dA\xe8\xf7X\xe2\xf7X\xea\xf7\xb8\xc5\xef\xb1\xd4\xef\xb1\xdc\xefq\x9b\xdf\xe3v\xbf\xc7m~\x8f\xe5~\x8f\xdb\xfc\x1e\xb7\xfb=n\xf5{\xdc\xea\xf7X\xc5\xef\xb1\x82\xdf\xe36\xbf\xc7\xad~\x8fU\xfc\x1e+\xf8=V\xf5\xfb\xb6\x80\x88&v\x16\xe7\xf6\x82}5j\xf6t\x8e\x16a\x8c\x0e\xe5\xc7{\xcf\xff\xd2\xf9\x0b\xfd\xe5A\x98\xcd\xc1\xc1\xc8\x8e\xcf\xe7a\xbab\x01\x87\xbf=\x86\x99o1\xcfqI\x92I\xc7\x14U\xdc\xf2\x960esqMAYt\xd2N\xb9\x93O\xa3b\x91\x9aRP\xaa\xa6\x18\x12\xac)U\xd8 V\x9d\x8e\x9dl\xa8\x93\x08\xecK\xe5\xf5e\xe2\xfa\xea\xd2\xc2\x82\xc9\x8c[\x17\xc2\x82a\x99`\x98\x12\x8c*u\x03\xd9\xe7\xfc<\xe6S\x81L\xf1\\\xf2A\xc2\xae\xeb\xcd\xdb?4\xd8u\xbd\x94E\x01\xfd\xc5m@`\xa9C\x17k\x0eb\x17\xddn\xaa\xc5\xe1\x96\x81\xc5\xe1\x16Bi\xcb8\\G<\xb6x\xceQ8!^\xfb\x01+A\xfeP\x80\x05+ \x8b8:m\xe1\xed\x90{(\x90\xd8\xde\x87\xeb\xf4<\x7fD\xbc\xfeJ\xa1\x7f\x1c\x18\xdbg=Lf~\xb2\x1c\xf6\x00\x12\x01;\x01\xcfC\xe0\x07\x00\x1046\x89\x83\xbd\x81C\x08\x1d\x82GJ}\x02\x84K\xdd\x02\x10\xa5\xdd3DDR\xe7\xc8\xd73R\xffPp\x10\x85\x01\xd4\xcd\x06:\xa9\xd3\xf8m>\xe3\xb7\xb9\x0c\xcbA\xe41\x1c\x0ev\x18\xbf\xcd_|Uwa\x81ro\x01\xd0rg\xe1\xe4P\xf0\x15\x98F\xee*\xfe\x93<\x05v\n,w\n\xdc\xe6\x14\xb8\xcd)X\x0e\"\xa7\xe0p\xb0S\xe06\xa7\xc0\xaaN\xc1\x02\xe5N\x01\xa0\xe5N\xc1\xc9\xa1\xe0\x140\x8d\xdc)p\x9bSPt\x0b\x8cvu%D\xee\xbd\x0e{5?\xd12\x10\xf9,\xfb\x9dfS\x9a\x08\xe4V\x99\x99aJ\x90\x90E\xc4c^R\xcd^\xa7!\xb5E\x90==7&\x95\x94\xe7F\xc7\xe8\xe4\xd9|\xfa\xb7\xc6\xeb\xf5\xfc\xe7\xea\x85\xa9@\x15\xf9\xe1S\xae\n\xbd\xa9\"\x7f\xe7A\xfd\x13\xc0\xa1\x8c$H\x1ea\xece\xeb\x89\xea\x0b\xe3\x13\xb2\xcc\xf5\xe2\xe2\x95\xff\xe5\x17\xcb\xeb\x9a\x88\x92\x82\xe5\x04|\nH\x90\xc5H@\xf5\xab0\xf6\x1e\xc3 =A\x808\xdc\xb2\xb5s\xfd#/\xdf\xc6vt\xa8\x19d\xbf\x9dg\xffL\xe8_A\xbd\x03\xa4\xc5\xc3 \xfb@P\xaf\x16\xa3\x0d\x8a\x13\x04\xd4_\x15M\xe0\xc7B+6,\x8f\xb6fU\xa3\xd0\x9c\xb4L\xa2R\xd8\xbc2\xb9Z\xcd,\x91\x8c`\x0d\xd8\x1b\x96\xc9K\x91\x9fhIj\xc7)%N\xf1\x19\xfd\xfcyS\x15\xf90\xff9\xff\xbcy\x92\x8f)\x05\x0f\x889\n\\\x805\n\\\x96q\xf6\x88c\x8b\x02\x17bZ\xbe\xe8\x93\xe7[\x14\xb0\xac\xcb\xa7$\xf7\xe2\x11\xc4{n'(\x1b\xc8\x00\xeeU\x11\xcb\xbf~N\xd6P=\x845\x1e\xa3\xd4Y\x81:\xcfKx\xad\x17\x8f\xc9\n\xcag4\xff\x04\xe1Ee\xd0\x8aE\x06\x07\xac\x97A\x85\xc6\xcb\xf9\xe4\xb6\x03\xb84\xa6jxp\x96\xca9T\x86\x02\x98PF\xc9\xf9@6\xc9\xb94&\x01\xf80\xca\xcf9\xc1\xba/uS\xaa\x1e\xd4\x0e\xa9\xe5\x9c\x13\xa8\xe4\xfbu\x92z\x8b=\xd0q\"\xdby`\xfb\x0d\xf1\xac\"\xac\xb2T\"\xedW8\xb6\xf3\xe4\xac\xa8\xbeS?\x01YsF\xa9Q|\x07\xca9\xb1\xfd\x87|\xc8\xd6\x00\x99\xab\xc2\xccQ\xbaE(\xe0+(\x01L\x0d\xd5S\xb6\x8a$\xb2\x1dT1\x83k\xb2\xf3\xd74\x1eh~\xae\x97\xa4\xb17_\xa7H\xc0\xb2\xa0\xa29\x96\x08\xb6\xf7\xe4A\x0da\xc3\xc29\xda,X1\xa3\xbaP\xc3\xaa\xe9Ar{Ul\xd8~\xd4p\xa2\xba\x91\xcc4\x15\xab\xda4<\xaf\xca\x0c43\x89\x11*\x9e\xac\x11\x1a\x96\x84% \xaer;0=\x95\xb4\x04\xd9Qk\x96P_-\x0e\xdf\xea\xccl\xebz\x81\x8d\x8bh\x9c\x88A\xb5\x1c|\xaeO\xca\xffB\x9c\x0c \xa7\x1e\xcb\xc9(9\x19\x10\xa7\x9e\x84\x93\xc9r\xea\x95\x9cz\x10'S\xc2\xa9\xcfr2KN&\xc4\xa9/\xe1d\xb1\x9c\xfa%\xa7>\xc4\xc9\x92p\x1a\xb0\x9c\xac\x92\x93\x05q\x1aH8\x0dYN\x83\x92\xd3\x00\xe24\x94p\x1a\xb1\x9c\x86%\xa7!\xc4i$\xe14f9\x8dJN#\x88\x13\xb6\x93T\xe6\x9cz\xf6?\x96\xe38\xfb\xdf\x84\xf8\x19\x085\x97Y\xd4\xa7\xcb\xd6C\xe5\xbbm7\xe8\\\x9f\xd4$\xe0\xca*\xe7e\xc8\x96o\x0d/\x83\xe0e\x00\xbc\x92U\xec\x05\x0f\x99d\x15i\x80\x966)F\x81\x00\x05)\x89\x0d\x80\xd8\xa0\x88\x0d\x85\\\xdb\x81\xe7O\xe4\xfd\x88\xc6\x9e\xbe\xa4\x86\x18>\xf7\xaaZc\x0e\x0c/\xbe\xcb\xc2\x1a\xac\xe5\xf8\xb55\xcbFmA\xf6\x9c\xcbk\x81\x04\xadK\xafgZa\xe7\xd5W<\x8e^d\xf3\xd4\xa7\xad\xb3a)\x9e\xba\xd4>\xcd\xb8\x7f\xcaj\xfbT\xab\x7f\xbf\x057+\xd1\xf3\xae\xb9a\xee\xcf\xb2\xec\x86Y?\xe3\xca\x1b\xae\xe0\xb9\x17\xdf\"\xfd?\xd7\xfa\x9b\xeabOY\x82\x8b\x18\x1d\xbb\n\x17\xf19a!.bu\xdaZ\\\xac\xa9\x13\x96\xe3\xacY\x9f\x7fE\x0e\xd6\xf0|\x8br\x90\xfd3\xaf\xcb\xc1:\xbe\xd3\xd2\x9c\xb2\xee3\xad\xce)\x9eO^\xa0\x0b\xb8\x9d\xb6F\x170;u\x99.`\xf7\xc4\x95\xba\x80\xeb\xd3\x17\xebB\xc3\x1c\xbb^\xe7\xe7\xeb',\xd9\xe5\xcc\x8e\\\xb5\xcb\x99\x1d\xb9p\x973;r\xed.gv\xe4\xf2]\xce\xec\xc8\x15\xbc\x9c\xd9\x91\x8bx9\xb3#\xd7\xf1rf\xc7/\xe5[\xfc\xf6\x89\xaby\x96\xfb\xe2i\x0bz\x90\xddS\xd6\xf4T\xf7?aY\x0f\xd3\xb3+{\x85\xa5\xbd\xc21\x9a\x9c\xa7\xff\xcc\xcb}\x9e\xdf\xb3\xaf\xf6\xfd?c\xb1\x0fTr\xc2Z\xdf?a5\xf8\xacK}P\x80\xd65\xdfs\xad\xf4\xfd\xa7,\xf4Y\xe2\x13\xd7\xf9\x90\x0cO^\xe6\x9fb\xd7?g\x95\x7f\x9a\xc1\xbf\xe3\"\xdf\xff\x9ek|\x88\xf9\xf3,\xf1!\xce\xcf\xb9\xc2\x87\xf8?\xfb\x02\x1f\xd6\xfd\xb3\xad\xef\xfdgZ\xde\xc3|\x8e^\xdd\xc3lNY\xdc\xc3\x9cN\\\xdb\x8b\xb4t\xca\xd2\xde\xff\xde+{\xa0\x82g\\\xd8\x03\xdc\x9f{]\x0fT\xf1\xbd\x96\xf5\xfe\xf3\xaf\xea\xfd\xe7\\\xd4\x83\xccN\\\xd3\x83\xbcN^\xd2\x83\xdc\x9e\xba\xa2\x07\x99>\xc3\x82^`\x93\xa3\xd7\xf3\xec\xcc\xfc\x94\xe5\xbc\x8c\xd7\xb1\xaby\x19\xafc\x17\xf32^\xc7\xae\xe5e\xbc\x8e]\xca\xcbx\x1d\xbb\x92\x97\xf1:v!/\xe3u\xec:^\xc6\xeb\x84e\xbc\xd4]\x9f\xba\x8a\x97\xae\xae\x8e^\xc4K\x17\x84'\xac\xe1\xfd\xa7-\xe1!\xf2\xe3V\xf0\xa2\xc5:~\xe6\xc5:\xcf\xef\xd9\x17\xeb\xf8\xcfX\xac\x03\x95\x9c\xb0X\xc7',\xea\x9eu\xb1\x0e\n\xd0\xbav{\xae\xc5:~\xcab\x9d%>q\xb1\x0e\xc9\xf0\xe4\xc5\xfa)v\xfds\x16\xeb\xa7\x19\xfc;.\xd6\xf1\xf7\\\xacC\xcc\x9fg\xb1\x0eq~\xce\xc5:\xc4\xff\xd9\x17\xeb\xb0\xee\x9fm\xb1\x8e\x9fi\xb1\x0e\xf39z\xb1\x0e\xb39e\xb1\x0es:q\xb1.\xd2\xd2)\x8bu\xfc\xbd\x17\xeb@\x05\xcf\xb8X\x07\xb8?\xf7b\x1d\xa8\xe2{-\xd6\xf1\xf3/\xd6\xf1s.\xd6Af'.\xd6A^'/\xd6AnO]\xac\x83L\x9fa\xb1.\xb0\xc9\xd1\x8buvf~\xcab]\xc6\xeb\xd8\xc5\xba\x8c\xd7\xb1\x8bu\x19\xafc\x17\xeb2^\xc7.\xd6e\xbc\x8e]\xac\xcbx\x1d\xbbX\x97\xf1:v\xb1.\xe3u\xc2b]\xea\xaeO]\xacKWWG/\xd6\xa5\x0b\xc2\x13\x16\xeb\xf8i\x8bu\x88\x9c[\xac3\xf4\x87\x05\x0e\xed4\x7fG\xce\xe4\x0fz-\xcc@\xe3\x12\x9a\xbf1\xa7\x05\x1b\x94\xd8\x93\xde\x82\xb4\xc8\xdf\x82\xa4.W\x83V\x12\xad\x81+\xbcYH\xfd\xfc\x81\xe6\x1f#\xb2\x7f\x94\xc4\xbe\xba\xc0\xb0l\xc7\x98\xb9\x06\xab\xc9\x86)\xd9\xa8\xd2\xc4\x0e\x12-A\xb1\xb78,\xc2 \xd5\x16\xb6\xef\xe1\xfd\xb9fG\x11FZ\xb2OR\xe4\x9f]`/x\x98\xd9\xce\x87\xfc\xd7\xd7a\x90\x9e\xd9\x1b\x14xq'@\xbb\xea\xe7\xb3\x15\xc2\x1b\x94-r\x9b\x9f:\x01Z\xa3\xb3\xf5|\x1d\xa4\xeb\xb38\x9c\x87ix\x16d\xff$h\x19\xa2\xce\xda;\xb3c\xcf\xc6g\x8d\x14\x8ct\x9c`K\x14\xc6K\xcf>\x83\xc0\xb9t\x9a\xa0E\xc2*J*\x9e\x80\xc7:\xa1\x8b\xa8\xf7\xa0e\x0f(\xa2Wa\x90\x84\xd8N\xce\xfc0\xb0\x9d0\xfbO\x98G\x13,\xa3u\xec\xa1\x98!\xcd\x9fun2\x95\x96\x00\x11}\xad`\x8a\x03\xa3\xf6\xc6\x1e\xa2\xb6\x17\x86\xa3x\x00v\x15R\xa7+\x84\xed\x84&/\x9e\x9dI\xccT\x16\xa9Z5\xf5|D\xd7\x91?\x81\xa0\xf3\xd0\x0d\x03\x8f\xc2^\xe4\x8f:\xb3\x8f\x10\xde\xb1\xb1\x97\xa4!m\x85\xe2\x99\x80bi\xc7\xb6\x1f\x06.-|\xf9\x10\x14\xc9N\x1eP\xbc\xf10\xa6\xfd\x84x\x0e\x91\x95\x8d(>\xa1\xe5\xa56\xf6\x98\x0f_/\x12\xad\xc8\xc3\x91\xc0\xe2\x89\xc2`I\x8f=\xf9;\xafT\xebc\xb0e\x95\nu*\x0c\xd0^6\x88\xaa\xca\xe1\x1f-\x06X#V\xaf\x11\xd25\x8d%M\xb2-r\xc8}\xee\x93\xefT1\xf7E\xf8\xc5\xd6\xa0\x00\x06\x0f\xe8Q\x80\x1e\x0f0)\x00\xf7y\xfa\xc5\xb6/\x17q\xb1\xb5(\x80\xc5\x03\x06\x14`\xc0\x03\x86m\xcd\x1cQ\x80\x11\x0f\x18S\x80\xb1~\xfc\x9b\xba\x19\x8f\x15Z\x84E@Fa1\x90]X\x0cd\x1a\x16\x03Y\xa7U\xe2E\xf1\xb9\xb36\x1b\xb1\x18\xc8L\nm\x1f\xb1\x18\xc8X,&\xb3\x97\x82\xc1\x14F\x05\xba\xbf\x8b\x8d\xe8\xb7\xb5\xc3` \xa0 \xfdv\x0b\xfa\xed\x06l\x11v\x91\x7f\xed\xac\xd5|~\xbb\xf5Z\x1b=b \xa0\xed\xfc#M'\xb6R\xdb\xe0\xc7\x00@+\xe1v+\xe1v+\xe1v+\xb5\x08\xbb\xc8?v\xd6j%\xdcn\xa5\xd6F\x8f\x18\x08h%\xcc[\x89\xc2xA\xb4N\xb5\x18%\xa8\xb9\xdfnG\x11\xb2c;p\x8a/qN4?|d\x1f2&Z\xa7i\x18\x14l\xce\xcfs\xfc\"t\xd6\x89\xe6\x05\x01\xfb\x16`\xa2F\x1eZ~\x86\xed\\\x9fD\xb6\xebz\xc1\x92]\x18\xaf\x8cC\xb9\xd1\xca\xbf>y\xd5\xab\xca\xf8\xd7\x19\xaf\xcc\xaa\xac\xcf\x97\xf5\xab\xb2\x11_f\xd5\xf5\x0d\xf8B\xadW\x17\xf7\xac\x17l\xa1\xa5W\x85\x16\xfb\xa9\xe5\x956\xac)\x87<\xa5\xa1\xd7\xa4\xfcg\x9a\xf3\xcd\xe6\x1cBl;\xf3\xb0\x0d-\xddf\xc5\x15\x93\xf2\x01\xc5\xa4\x84@1-#\x0b\xc8D\xdb@R\xb2\xc0U\xf1\xce\xb9\x12\x90\xfd\xcc\x96{\xc1\n\xc5^ZA\xca_\x15\xe6\x89\x03\xe39\xd9t#q\x1e\xa2\x18\xf2\x1f\xa2\x18r!\xa2\x18\xf2\"\xb2n\xd8\x91\xc8\xea!_\"\xcaAw\"\xcaa\x8f\"E\x10;U\x86j\xf7+JX\xd0\xb5(qA\xef\xa2\x04\x86\x1d\x8c\x16Y\xecc\xbc\xd0\xb0\x9b\x11\xfc$\x9eF\xa0*gS\xf06\x85\xa8d\x95E\x132\x0f\xf4\xa5\x0e\xe8K\xfd\xcf\x97\xba\x9f\xdf\xe6}\xbe\xdc\xf9|\xb9\xef\xf9-\xae\xe7\xabx\x9e\xaf\xe2x~\x9b\xdf\xf9mn\xe7\xb7z\x9d\xaf\xe6t\xac\xbc\x02\x9f\xf3U\\\xce?\xce\xe3`\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2m\xce\x85\xe5\xce\x85\xe5\xce\x85[\x9c\x0b\xab8\x17Vq.\xdc\xe6\\\xb8\xcd\xb9p\xabsa5\xe7b\xe5\x158\x17Vq.\xcc9\x17\x05Lc\xdby@\xee\x01\xa34E\xb1\x96D\xb6\x93E^]\x83\xfb>E\x01\xd4\xd2\x8c\x19\x0b\xd7\xba\xba%\"\xf0\xd1\xd2\xe6\xd8\xf72x\xfb\xb8z\x009\xe6\xdf/:F\\\x80\xa2Mb\xa8\x92\\h\x05\xa9\x15f\x83\xba\xaac[\xc2\x11\xb46\x84\xafB\xa1\x1d\x12\x91\xf1\xb1\"s\x04\xad\"\xf3U\x14\"S\x14x\xa5%!\xf6\xdcC\xbe\x8f^u\x16\x0e\x93z)F4\xa6\xdb\xb38\x98\x13F{\x06e)\x98\xfa\x00\x8a\x94;O\xbbT\x1cL$\x18\x0f\xb4\x9e\xc9\x0fk\x89}%\x81}EyY\\\x9b\xb82\xc9\xb0\x92dXQ2\x16g\xb1^\xe5\x05\x0f\x87\x14\xedR\xcdEN\x18\xdb\xe5 Vv\xd1\x9b\xc1\xce\xb8'\xe7\xb6\x93z\x1b\x04\x14\xe4\xcb\\\xe0\xf9*\xdc\xb0k\xe4\xfc\xb9\x80\xff\xc6K\xbc\x145o\x1cMc;H\xbc\xea\\g\x18w\xba\x86\x95t\x90\x9d \xcd\x0b&\xd2R\xbe=\x85\x90\x87p\x9df*:7\xa2]\xc7\x0d\xd3\x14\xb9\x1dg\x1d\xc7(H_eLX\xba$=d\xff\x14Yn-\xddGP\x8e\xc0\xdf\x16\xab\xc1\xda\x15\x81\xd9zk\x90\xe5\\,\xe1o{D9\x1f\xc6\xf8[\x93(\xe7\x03\x19\x7f\xdb'\xca\xf9P\xc6\xdfZd\xfd|0\xe3o\x07\x04\xc0\x84$\x18\x92\x12@U\x8c\x08\xc0\x00\x92qL\x00\xc6\x90\x0c\xc5+\xd4\x1b\xd0I\x9b\xf1\x859\xf2\x85\x93\xdc\"\x0c\x042\n\x0d\x01\xedBC@\xd3\xd0\x10\xd0:\x8c,\xa0\x81h\x0cl#F\x1a\xd0L4\x06\xb6\x14\x8d\x11\x1b\x8b\xc6)\xec\xf6\xab\x8e\xdd\xa5\x15\xfdV#\xfa\xad6\xf4[M\xe8\xb7Z\xd0o5\xa0\xdfn?\xbf\xdd|~\xbb\xf5\xfcv\xe3\xf9j\xb6\xf3\x8f3\x9d\xd8J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xddJ\xb8\xddJ\xb8\xddJ\xb8\xddJX\xcdJ\x98\xb3\x12\x05\xdb\x1a\x07\x91Z\xb7\xbd\x83H\x9f[\xf3 R\xe4\xb6\x7f\x10ipk\x1d\x84\xaa\xcb<\xa1*e=`\xab\xf5\xaa\xb2\x1ePVq\xe5\xd6\xd0[\xcd\xac\xe8L\x9e\xce\xac\xda`\x9a|Y\xd5\x08\xb3\xcf\x95\xf5+\x9e}\x9e\xa7U\x95q\x0b\xf6\xad6\xa8\xca\x06|\xd9\xb0*\x1b\x02eU\xfb\xb8U\xfeV\x1bUt#\x9en\\\x95\x8d\xf9\xb2,\xe0\x10\xf5\xb7\xad\x96\xae\xbc\xd8\xad\x95\xd35\xb3\xff\xf1\xa0mX\x00\x93\xaaY\x83\xee`0\x18\x0c9d\x9e\xc7.0\xf9b\xbc}\x80?0.\x9aM\x13b/mJ!GmJ!_mJ!w%\xea\x85=\x96\x00@NKH\x06\xf9-Q\x0c\xb9nS\x0cz/Q\x0c90Q\x0c\xf90\xa1\x16\xc8\x8d\x9bb\xd0\x93\x9bb\xd0\x99\x9bb\xd0\x9f\x89b\xc8\xa5 \x9b@^\xdd\x14\xc3\x8eM\xdaD\xe0\xdb\xa4\xeaZ\xdd\x9bh\xab\xcc\xc3\x1bX\xee\xe4\n^\xae\x10\xc6\xe4\x01\x8a\xc4\xf3}\x99\xe3\xfb2\xbf\xf7en\xef\xb7x\xbd/uz_\xea\xf3\xbe\xd4\xe5}\xa9\xc7\xfbR\x87\xf7\xa5\xfe\xeeK\xdd\xdd\x97z\xbb/uv_\xea\xeb\xbe\xd4\xd5}\xa9\xa7\xfbrG\xf7[\xfd\xdc?\xc2\xcd}%/\xf7\xd5\x9d\x1c\xf6g,\xf3g,\xf3g,\xf3g,\xf3g\xdc\xe2\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xee\xcf\xb8\xd5\x9f\xf1\x11\xfe\x8c\x95\xfc\x19S\xfeL!\xc2\x0d\x8a\x178\xdcj\x1b/\xf1\xe6\x18\x1d\xaa\x07\xe7\xe5\x03\x01|\xe5\xb9.\n\x1at\xf1\xbb\x00\x9c8q\x88q\x03.~\x17\x80\xf3H\xaa\x86\xf2;\x1b5p\xc7\xc9\xac\xedZ\xa4\xde\xb1rk;\xb9\xe4;Vvm'\x97~G\xcb\xaf\xedd-\xd8\xf3-\xd8\xb7\xb4`\xcf\xb5`/o\xc1\x9ek\xc1^\xde\x82=\xd3\x82\xfdi\x01-\xebXY\xe8p\x94oQ\x04\n\xeeE\xe1[=\x8cB\xab8\x19I\xa0\xecg\x0c\x91\x92\xab14\n\xde\xc6P\xa88\x1cE\xa2\xeas\x0c\x91\x92\xdb14\n\x9e\xc7P(\xcc\xc1\xaa\x81&\xe7\x92\xfe\x91\x1e\xe9\x1f\xe7\x90\xfe1\xfe\xe8\x1f\xe9\x8e\xfe \xde\xe8\x1f\xef\x8c\xfe\xb1\xbe\xe8\x1f\xed\x8a\xfe \x9e\xe8\x1f\xef\x88\xfe\xb1~\xe8\x1f\xe9\x86*\x1e\x87\x8f\xf48|\x9c\xc7\x1d3\xc7\x92`%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dki\x02%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dsi\x02 XKR;\xf5\x9cCq\x055\xcc\xdf\x8d\x91\xb2\xb7Ob\x84\xf3;\xa2\x0d\xaazB\xe3\xecy\x12\xe2uJ\xe0\xaa'4\xae\xf8\xa8~\x0d\xca\x7fU\x18\x8e\x0f\x80\xe0\xd9\xc8\xae$;\x05\x94\x8bOA%-\xa0pE#\x14Z\xa10\xa9\x94M\xf3\x15[\xe6+7\xccWk\x97\x7f\\\xb3\xc4-\xc0\x8a-\xc0\xca-\xc0j-\xc0\\\x0b\xe8N\x92'r\xc3\xc8v\xbct\xcf\xbdu@\x1b7e\xdd1[8\"\n\xd9\xbb\xe9\xda\x90(d/\xc1k\x03\xa2\x90\xbdm\xafYD!{\xad_\xeb\x13\x85\xec\xfb\x034\x93(d_T\xa0\xf5\x88B\xf6\x8d\x08\x9aA\x14rJ\xd0\xad\xa6P\xe7$\xd2{d1{0\"\xd4\x1a\xce\xccy\xfb8L\xed\x14i}\x8b>o\xb0\x08c\xff\xbc(\xfb\xb1o\xb9h\xf9\xd3D\xf0\x1cd7\xd6\xc5\xec\xc6:\xcc\xaex\x0e\xb23L\x89x\x86)\x90\xaf,\x809\x8e$\x12\x1a#\x81\x88e\x01\xc8\xb1\xd7\x93\xc8\xd8\xeb d,\x0b`\x8eC\x89\x8c\xbd\xa1@\xc6\xb2\x00\xe4h\x1a\x12\x19MC cY\xa00\x96\x1e`\xd7\xd2\x88\x0f\x1c<\x8fwI9\x9e\xe6`R\x96\xa7\xfa\x98\x9c\xe9\x89n&ez\xaa\xa7\xc9\x99\x9e\xe8lR\xa6\xad\xfe\xa6\xe0p\n\x93w\xe3\x85\xfes;\xa1\x84\xe1\x89>(\xe1x\xb2\x0b\xcax\x9e\xea\x81\x12\x9e';\xa0\x8c\xe7\xa9\xfe'\xe1\xf9D\xf7\x93z\x1a~nO\x930<\xd1\xd3$\x1cO\xf64\x19\xcfS=M\xc2\xf3dO\x93\xf1<\xd5\xd3$<\xdb=\x8db:\xc7\xb6\xf3\x90EP\xf9y\xce\xf3x9\xb7\x7f\xd4\xcf\xb2?\xdd\xf1O\x10t\x04AG t\x08A\x87 t\x00A\x07 \xd4\x82\xa0\x16\x08\xedC\xd0>\x085!\xa8 B{\x10\xb4\x07B\x0d\x08j\x80P\xdd\x02\xa0:\xdb\xae\xed\xca+\x02\xde\x02\xbbJp\x8e}qf\xe8\xfa\x0b\xded\x05|$\x82\xb3f+\xe0C\x11\x9c5]\x01\x1f\x88\xe0\xac\xf9\n\xb8%\x82\xc3M\xed\x8b\xe0\xac\x19\x0b\xb8)\x82\xb3\xa6,\xe0=\x11\x9c5g\x017Dp\xd0\xa4%\xf6\xaf:{\x93:@v\xacQ\x10\xc3`V`\xae\x1d?h\xcb\xd8\xdeW\x08\xd3dVw\xbe\xe7R\x00\xcbb\x96ad\xe1p\xc8\xacG\x13\x0foP\\\x15s\xefB\xc3\xf95\x0b\x1ad\xdb6#A\x18\x06\x94\x08\x8e\xe3@lH\x08B\x08\xd0E\xae\xdd\n\xb2\xe8g\x7f\x00\xf5\xd7\x80\xc5\x02PV\x8c\xdc\xba\x92\xa1\xde\xd7\x19\x0cQ\xbcX\xf4\x0ds\x00IJ\x81\x86=\x8biN\x18\xdb\xc1\x92\x10c\xc0]\xe9_\x86\x98\xe00\xe7\xae\xd9\xef\x11\xc6\xe1\xb6Dd`H\n\n\xf4\xd7\xc5|a\xd8\x8cy\xa2u\x1c\xe1Z\x10\x0b\xf5\x1c\x9b\xbd\x9c\x90s\xa2qv\x7f`.z\x80\xea\"/\xa8=\xd1\xb5t}\xc4\xe8n\x15\xa6\x14&S\xe0\x9c\xb1\x10]>\xd2aW\xa0Q\xb6\xe9\x0eA\xb7G(\xa8{\x869\x1cZ=\xd6\xb3I\xc0\xd8\x1e\x0f\xfb\xb0\xdf\x11\xb01Bs\x87iW`o\xf6M'5\xe6\xfd> \xcd\x1c\xafQ\x03\xea\xf7\xc7\xec\xcb\n\x88r\xd3\x1a\"\x17\xb4)\x89\x1a\x0f\x1c\x87u\xe1\x1c\x85\x12\x1a\xe8\xb8\x88\x03n\xedd\x85\\\n\xb6\x18,\x16\x0b\x04\xc2(\x15\xa0\xd1\xc2]X \x8eq\xb9\xc5\xc2As\x10H\xf5\x10w\xe1ro'\xc3a\\_\xb1/\x80\xd5-AZkK\xad\x8e<\xe6\xb6\xf3\xb0,\xde\x91ZPH\x83\x90\x8ap\xd4B\xc8\x85$\x15\xe1\xb0\x85\x90\x0bP*\xc2A\x0b!\x17\xaeT\x84V\x0b!\x17\xbcT\x84\xfd\x16B.\x94\xa9\x08\xcd\x16B.\xb0\xa9\x08{-\x84\\\x98S\x11\x1a-\x84\xdc\x0cY\x11\xea\x96\x9c\x90\x0b\x81\xe6K\xad\x8e\x828\xca\xb6\x80\xa8&\x86\xdc\xa7-<\xaa\x89!\x17j\x0b\x96jb\xc8\x8d\xdaB\xa7\x9a\x18r\xa5\xb6@\xaa&\x86\xdc\xa9-\xac\xaa\x89!\x97j\x0b\xb2jb\xc8\xad\xdaB\xae\x9a\x18r\xad\xd6\x00\xact/\x9e\x92\x0f\xc7\xe6K\x8d\x88\xc8x\x02.8\x9b/\xb5&>\xe3\xf1\\\xa86_ju\xb4\xc6\xc3\xb9\xc0m\xbe\x14A\xb90n\xbe\xac\x824\x1e\xcc\x05u\xf3\xa5F\xc5u< \x17\xe2e\x92\xd7Q\x1e\x8f\xe7\x02\xbe\xba\n\x01\x01\x17\xfeU\xba/\x02<\x9e\x00\n\x06+\xc7\x80\xe0\xect9_\x16+\xe4\xc8\x8eQ\x90\xf2\x14D!l\xe3l\xc2\x03\xda\x01D\x98\xf3\xa5\x00\x0c\xc5\x9b\xb5\xa2D$|\xf49_je\x00\n\xe1\xf9X4s\xa3,\x1c\x85\xd0|d:_VA\x00\x87\xe7\xe3\xd4Zz\x11 \x18\xb5\xce\x97U@\nt\x02 \x86\xadk\x11RA\x11me\xb8<\xd4\xe4I\xa0\xf8v\xbe\xd4\xea\x10\x176\x1f\x1b\xedfM\x11\xa1\xf9\xd8\xb7i\x88\x88\x86\x8f\x84\x9b1&\x8b\xe0\x80A \x88\x8b\xf3\x81C\x00\x07\xa2d\xa2\xb3\xc2DP\xcc\x9cu\xd8,l\x86\xc6U>\x82\xaeZ\x91\x87\xab\x10 \x10O/Eh(\xba\xae\xdb \xa0\x81b\xed\x8a\xa6\x0e\xb7\x81\x81\x0d\x88\xbc\xb3a\x87\x08\xbe\x013\x02qxC$R2\x14\x957T\xe2\x0e\x06\xc4\xe8\x0d\x99hT\xe1#\xf6\xf9\xb2\x0e\xd79\x020r\xcf\xef\x97\x17s%t\x07\x9d,\xce\x7fn\xd6N\xec\xbb\xd7rd3\xf3\x8a\xb9\x11\x18\x8a%71\x17\xf0zn\x16sl \x14Cn\xe6.\xd0\xd5\xe4-\xe6W#(v\xdc\xcc^\x80\xe5\xacx6\xdc\xac_\x00\x8bY\\\xcc\xa8,\xa7Xq1A\x01%\xc3\x021C\nE\xb1\xe5\xe2\x86R+U\xe8 Q\\\x0d\xa1\x18r\x81\x05)\x81\x9c#\x81\xa1Xr\xa1\x07\xe1[y8\xd1\xe2\x7f\x05\x86b \x05'\x05E\x0bC\x88\x17;\xdc\x10\x1dI\x1b\xeb-]-C\x90\xecd+h\x92l\xd4\xcax$f\xcc.\x8fH\xb2a+\xe3\xa1\x981\xbbt\"\xc9\x06\xad\x8c\x07b\xc6\xec\xb2\x8a$\xb3Z\x19[b\xc6\xec\x92\x8b$\xeb\xb72\xee\x8b\x19\xb3\xcb1\x92\xcclel\x8a\x19\xb3K5\x92\xac\xd7\xca\xb8'f\xcc.\xe3H2\xa3\x95\xb1!f\xcc.\xf1\x88\xae$\xed 5\x82d\xdc\x96' Ie\x9d\xa4F\xc8\x98\xc3\x1d\xa5J%\xb41\x1f\xca\x99\xc3\x9d\xa5J5\xb41\x1f\xc8\x99\xc3\x1d\xa6JE\xb41\xb7\xe4\xcc\xe1NS\xa5*\xda\x98\xf7\xe5\xcc\xe1\x8eS\xa52\xda\x98\x9br\xe6p\xe7\xa9R\x1dm\xcc{r\xe6p\x07\xaaR!m\xcc\x0d9s\xb8\x13\x95\x81\x9e\x98w\x05 Y\xcb\xa2\xc3e[HW#\n\x8e\xd0\xd2\x00\x0c\x17\xa9\\\x8d\x94=\x174\x02\x8b\"8~$\xd3;\xd2*\xd8(\x12X\xb2\xc0\x01%\x91\x10\x92V\xc0\x84\x95\xc0\xb2\x19\x8e0\xcb\x0c\x92\x94\xb7\x94\xaf \xe4\xac\xd3MR\xceT\x84\x08,\xc9\xe0\x18\x94\xc9NIk\x00\"Q 9\x00\x07\xa5dJK\xae|&4\x05V\x89p\x94J%\xc1\x14\xda!\xadC\x10\xb6Ry\xb3\xf6~@\x06\x9c\xc0\xbaP\x18\xc7V\xa96i\x0d-\xcc\x05\x81-\x95\x98\x93\xf2'q\x82Z\x84i\xbc\x9a\x89B \xbddci\xae\x1a\x85\xb0z\xa9\x12Y/\xd9\xe0ZZ\x93 \xce^\xaa\x84\xdaK6\xda\x96\xd6$\x08\xbc\x97*\xb1\xf7\x92\x0d\xbf\xa55 \"\xf1\xa5J0\xbed\xe3qiM\x82\xd0|\xa9\x12\x9d/\xd9\x00]Z\x93 V_\xaa\x84\xebK6b\x97\xd6$\x08\xde\x97*\xf1\xfb\x92\x0d\xe1\xa55 \xa2\xf9\xa5J@\xbfdcziMpdBl\xf6\xb5\x8fA\x92\x9e\xab\x16\xef\x13\xbb\x83\n\xb5\x89{\xaf\xda\x02\x80\xd8NT\xa8M\xdc\x83\xd5V\x04\xc4\xfe\xa3Bm\xe2^\xac\xb6D 6,\x15j\x13\xf7d\xb55\x03\xb1\xc3\xa9P\x9b\xb87\xab-\"\x88-Q\x85\xda\xc4=ZmUA\xec\xa1*\xd4&\xee\xd5j\xcb\x0cb\xd3U\xa16q\xcfV[wT;l\xe2\xaajDQO\x15\x14\x01\xdbo\x05^\xca\x8c\xe3\x03\xed\xcc\x15\xd0zsN\xcc\xad\x810<\xf9\xad\xbb\x82\xa0\xd8\xbd\x133,\xcb\x19n\xfc\xc6^\x81^\x86X\"\\^\xcap\xe27\xfd\nl\xb1\xc7 \xe6U\x96\x93\xdc\xf8-AR'm\x0c)\x14-$\xb0mX\xd0\x14{\x80b\x9ee9\xc5\x0d\xdaT$%h\xe3I\xa1(\xce\xd0\xc6#\xe1\xb0\x91\xe0\x05\xbd,\x84\xe2 \x9f\xbc\xcb\x08\xaa\xcdI1\xcb\x1a\xc1\xb97\xbbsYjK\xca\x0d\xe2\xc4\xefjR:\x92\xf2#0\x0cW~\xdf\x93PQ\xbec\xd6\xa2\xc6\x02Cq\x85vF\xcbN!g\x08\xf1\x02\xb6M\xc96\xb5p$A\x14_hg\xb5 \xec\x8dd\xcd\x98\x97R\x9c\xa0]WB?s\xbc\x968x\x03ax\xf2\xdb\xb2\x05\x81\x9c\x1d\xcf \xda\xb2%U#\xe7G`h\xed\x01\x9b\xba\x04E\xb5\xaf\xdb\xc2\xb8\x86Q\xbc\xa1\x9d\xdf\x82\x88\xd8\xfc\x15s&A\xb4\xaf\x03\x9b\xc3\x14I\x8b+Q(\x8a3\xb4\x81L\xd1\xb4\x0d\xc74\x8c\x96\x1a\xd8e\xa6\x88\xa43$\x81a\xb8\xf2\xfb\xd0\xa5\x07-\x15b\x02\x12T\xf0\x05\xd2&\xc2\x08\xa18\xa6#\xe5.c,\x0e\x19\xc8#=R\xf6l\xe0\x00U\"\x8a!\xeaC@\xd2\x1a\xa8H\x02b/\n*\xca3CR\xe6Dh\x01\xb1\x16E\x19\xf5\x01#)s\xca 9\xf6\xa2\xb0\x839\x8f\xa4\xa0}y=\x928\xa4>\xc4$\xad\x84\x8a\x19x\xf6\xe2\xc0\x849\xf3\xa4\xd0\x92\x96\xaa\xc4\x91\nyP\xaa\xbd\xb3\x11\xb37_\x898t!\x8eVI\xeb`\x02\x18\xb8\xdf\xc1\xb1Ly\x16Kn\x0f9kQpC\x1d\xdcR\xb1\x85\xbc\x1aQ\xb4C\x9d\xf5j7\x059\x07\xf0\xd5\x88\xc3\x9f\xeax\x98\xbcw\xcb\x99\x0b\xe3!\xfa0\x99\x82\xae\xe4\x15\x89\x03\xa4\xf2\x00\x9a\xb4\x06\"L\xe2Y\x8b#&\xf2\xb4Z\xbb\x19\x889\x1e\xaaD\x18B-\xdb\xf9KY\x8bc*\xea0\x9c\x82 \xa4\xd5\x88\x83,\xf6\xfc\\{ML\xa8\xc5W&\x8e\xba\xe8Sw\xd2\xaa\xf8\xd8\x0b\xe8\x84\xc20\x8c9\xa9\xa7R\x93\xdc\x85\xc5q\x19{\xbcO\xa5\xae\xb6 K\x18\xa8Q\x87\x02Uj\x92\x07&\x92\xc8\xadu\x17\x99\xc0\x08*\x00\xf7\x94#[?\x08\xbe\xdf\x1a\xd9F]\xd4\xedY\xdc{j#\xbb\xd7\x94C\xc5f]\xcc\xbfY7\xb2\xfbu)\xffj\xdd\xc8\xb6\xeaR\xfe\xdd\xba\x91=\xa8K\xf9\x97\xebF\xf6\xb0\xa9\x97\x7f\xbbn\x84\xeb\x06k\x18-R\xae\xd5\xd8\xa0\xcb\xc1\xa6\xe3\x1e\x03\x820&\x8d\x01\x94\x80\xfb4\x04\xd0\x04\xb6h\x08\xa0\x0e<\xa0!\x80N\xf0\x90\x91\x05PL\xdc(&\xce\x06\x16N3\xb1\xc1\x00@\xd5\xc4=\x16\x05\x81L\x06\x04('\xee3\x18@;\xb1\xc5`\x00\xf5\xc4\x03\x06\x03\xe8'\x1e\xb2\xf2\x00\n\x9a7\n\x9a\x87i\x1a\xfa\x9c\x86\xe6\x06\x8b\x00U4\xefq0\x08e\xb2(@I\xf3>\x0b\x02\xb44\xb7X\x10\xa0\xa6\xf9\x80\x05\x01z\x9a\x0f9\x99\x00E\xa5\x8d\xa2\xd20\xe2\xb4\x94\x1aT1\xa8\xa2\xb4Gc \x88IA\x00\xe5\xa4}\n\x01h&\xb5(\x04\xa0\x96t@!\x00\x9d\xa4CZ\x0e@!\x1bF!\x93\x16?\xda@\x1ab\x89@\xbdm\x00\xbdq\x84\x10\x1d\xafL\x96\x0cP\xf0\x86W0K\x05(}\xc3+\x9d\xa5\x02\x0c\xb1\xe1\x0d\xc1R\x01\xc6\xd9\x00\xc6\xe1\x1a\x06Xl\xc5\xce\x125\x11<6\xae\xc0Y\x83!\x02-\xb6\x82\xa6\x12\x96\x10\xa2\x03\xa6\x17\x86\x0c\xb0\xd8\n\x98q\x18*\xc0b+`\x12b\xa8\x00\x8b\xad\x80y\x89\xa1\x02,\xb6\x82\xa6*\xb6a\xc0\xc7\x85l\xfd\xe0\xdb\xf1\xd2\x0bX\xdb\xf8\xb6Q\x95@\x06\xf0\xed^]\x0c\x95\x9aU)\xf0\x95'\xbb_\x15\x02\x9fU\xb2\xad\xaa\x10\xf8Z\x92=\xa8\n\x81\xaf-\xd9\xc3\xbaN\xa0\xa1\xb8j(\x18\xbf\xf8\xd8\xa0\x8a\xc1&\xe3\x1e\x8d\x81 &\x05\x01\x1a\x8f\xfb\x14\x02\xd0\x00\xb6(\x04\xa0\x06<\xa0\x10\x80.\xf0\x90\x96\x03PH\\+\x04\xec\x9b~l\xd0\xe5\xa0J\xe2\x1e\x03\x820&\x8d\x01\x94\x12\xf7i\x08\xa0\x95\xd8\xa2!\x80Z\xe2\x01\x0d\x01\xf4\x12\x0f\x19Y\x00\xc5\xcck\xc5\xc0\xf3\x8c?7\x18\x00\xa8\x9ay\x8fEA \x93\x01\x01\xca\x99\xf7\x19\x0c\xa0\x9d\xb9\xc5`\x00\xf5\xcc\x07\x0c\x06\xd0\xcf|\xc8\xca\x03((\xad\x15\x04\xc4)~j\x90\xa5\xa0j\xd2\x1e\x05\x81\x10&\x89\x00\x94\x92\xf6I\x00\xa0\x91\xd4\"\x01\x80:\xd2\x01 \x00t\x91\x0e)\x19\x00ElhEL\xe4n\xb3\x01\x143Qp\xa4\x0d\xaf-\x96\x0c\xa2\xe248i\xf5\xb4\x0d\xa7\xd4I\xab\xe7m8=OZ=q\xc3\xa9~\xd2\xea\x99\x1b\xde\x1al\x83\x00\x0b\xad\x98Q\xbf\"\x81\x87\xbc\x154 \xd0$\xa0\x85V\xc0\xc4\xc0\x90AT\xfc\\A\x13\x01\x16Z\xf1\xb3\x07M\x03Xh\xc5\xcf'4\x0d`\xa1\x15?\xc3\xd04\x80\x85V\xc0\x9c\xc34(\xb7P\xfb[-\xe9\xd7\nFv\xfer\xce2\x96\x01\xf2-d\xa9 \xe5BA \x84I\"\xc0\xc4\x0b \x00s/$\x00L\xbf\x90\x000\x03C\xc9\x00&a\x08\x84(\x0f\xc3A\x04\xa9\x18\x1e\x07\xc1L\x0e\x06&d8\x14\x98\x93\xe1P`Z\x86C\x81\x99\x19^.09C\xc2D\xf9\x19\x1e#H\xd1\x00@\x08g\xf280Q\xc3\xc3\xc0\\\x0d\x0f\x03\xd35<\x0c\xcc\xd8\x00\xb2\x81I\x1b\x12'\xcc\xdb\x00 A\xea\x06BB@\x13\x00\x82 \x1c\x00\x07\xe6p\x00\x1c\x98\xc6\x01p`&\x07\x92\x0fL\xe6\x90@8\x9f\xc3\"\x04)\x1d\x0e\x06\xa1L\x16\x05&vX\x10\x98\xdbaA`z\x87\x05\x81\x19\x1eN&0\xc9\xc3)\xaa=\xcf\x03kN1\xd5\x03\xeaS-\xdb\x03)Y)\xe1\x03)^)\xe7\x03\x19C)\xed\x03\x19H)\xf3\x03\x1aM-\xf9C\x92*\xe6\x7f8\x92cR@<1D\x0b\x91\xc2\xd3\x9aJ\"\x88#T\xcd\x05q\x84\xaa\xe9 \x8eP5#\xc4\xb7Q9)\xa4\xe5\xdfs\x8f\xe1\xbc\x10Q(H\x0d\x91\x08\x08`\x12\x000AD\x94\x839\"\xa2\x1cL\x13\x11\xe5`\xa6\x88\xac\x1fL\x165\x00Q\xbe\x88E\x08RF\x1c\x0cB\x99,\nL\x1c\xb1 0w\xc4\x82\xc0\xf4\x11\x0b\x023H\x9cL`\x12\x89@\x89\xf2H\x1cD\x90J\xe2q\x10\xcc\xe4``B\x89C\x819%\x0e\x05\xa6\x958\x14\x98Y\xe2\xe5\x02\x93K\x04L\x98_\xe21\x82\x14\x13\x00\x84p&\x8f\x03\x13M<\x0c\xcc5\xf100\xdd\xc4\xc3\xc0\x8c\x13 \x1b\x98t\"pp\xde\x89\x01\x08RO,\n\x02\x99\x0c\x08L@1\x180\x07\xc5`\xc04\x14\x83\x013Q\xac<`2\x8aUPk>\nT\x98ZJ\n\xd2\xa2RV\n\xd0\xacJb\nP\xb6Jn\n\xd0\xbfJz\n0\x89J\x86\n\xb2\x92R\x92\x8a T\xcbS\xb1\x04G\xa4\xaa8R\x80\x12\"\x04\xe7(\x85\x84\x15K\xa6\x98\xb3b\xc9\x14\xd3V,\x99b\xe6\x8ak\x9b(y\xa5\x90\xbdR\xf8&Kd\xeb\x9a_\xc5fPF\xab)\x14%\xb4\x08\x04\x040 \x00\x9c\xcej\xca\xe1lVS\x0e'\xb3\x9ar8\x97E\xd4\x0f\xa7\xb2|f\xad\xc0\"\x0c\x16!Jd\xb10\x08e\xb2(8\x8d\xe5\xf3\xb1=\x0b\xb2X\x10\x9c\xc4\xf2\xf9\x98\x9d\x05\x0d9\x99\xe0\x14V\x83\x12f\xb0X\x88(\x81\xc5\xe1 \x98\xc9\xc1\xe0\xf4\x15\x8b\x82\xb3W,\nN^\xb1(8w\xc5\xc9\x05\xa7\xae\x1a\x988s\xc5aD\x89+\x1e\x08\xe1L\x1e\x07\xa7\xad8\x18\x9c\xb5\xe2`p\xd2\x8a\x83\xc19+^68e\xd5\xe0\x04\x19+\x1a JX1(\x08d2 8]Ec\xe0l\x15\x8d\x81\x93U4\x06\xceU1\xf2\xc0\xa9*FA\n\x99*Hc\xaa\x89*@\x8f\x8ay*^\xb9ji*^\xe1jY*\xde\x08jI*\xde0j9*\xc0X\x8a)\xaa\x86R5C\xc5P\x1c\x95\xa0bi!R\x88\x12\x9c\xae\x94\xd2S\x0c\x9drv\x8a\xa1SNN1t\xca\xb9)\xb6}\xea\xa9)\xbf\x8c\xd4\xa0\xccT]&JL5\x00\xa8\xdcl\xca\xe1\xb4T]\x0cg\xa5\xeab8)U\x17\xc39\xa9\xa6n8%\xe5\xd3k\x04\x16`0\x00QB\xca\xe7\xc3\x7f\x16d2 8\x1d\xe5sq=\x8b\xb1\x18\x0c\x9c\x8c\xf2\xb9\x88\x9d\xc5\x0cYy\xe0TT\x0d\x12f\xa2\x18\x84(\x11\xc5\xc2 \x94\xc9\xa2\xe04\x14\x03\x82\xb3P\x0c\x08NB1 8\x07\xc5\xca\x04\xa7\xa0j\x948\x03\xc5BD (\x0e\x07\xc1L\x0e\x06\xa7\x9fX\x14\x9c}bQp\xf2\x89E\xc1\xb9'N.8\xf5T\xc3\x04\x99'\xaa\\\x94x\xa2A\x10\xc6\xa41p\xda\x89\x82\xc0Y'\n\x02'\x9d(\x08\x9cs\xa2e\x81SN\xb4b\xda3N\x80\xa2\x14\x13N\xbc\xf6\xd4\xf2M\x9cF\x95\xd2M\x9c\x92\x95\xb2M\x9c\xde\x95\x92M\x9c)\x94rM\xbcu\xd4RM5\x9db\xa6\x89\xc6\x1f\x93hb(\x01B\x88\x0e\x9a{T\xd2L4\x95j\x96\x89\xa6RM2\xd1T\xaa9&\xa6]\xa7\xa5\x98\x04\xd9$\\\x85SP6\xa9)\x14e\x93\x08\x04\x040 \x00\x9cMj\xca\xe1lRS\x0eg\x93\x9ar8\x9bD\xd4\x0fg\x930\x13\xd7\xb3\x08\x83E\x88\xb2I,\x0cB\x99,\n\xce&a>\x16gA\x16\x0b\x82\xb3I\x98\x8f\xb2Y\xd0\x90\x93 \xce&5(a6\x89\x85\x88\xb2I\x1c\x0e\x82\x99\x1c\x0c\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12\x8b\x82\xb3I\x9c\\p6\xa9\x81\x89\xb3I\x1cF\x94M\xe2\x81\x10\xce\xe4qp6\x89\x83\xc1\xd9$\x0e\x06g\x938\x18\x9cM\xe2e\x83\xb3I\x0dN\x90M\xa2\x01\xa2l\x12\x83\x82@&\x03\x82\xb3I4\x06\xce&\xd1\x188\x9bDc\xe0l\x12#\x0f\x9cMb\x14\xa4\x90M\x824\xa6\x9aM\x02\xf4\xa8\x98M\xe2\x95\xab\x96M\xe2\x15\xae\x96M\xe2\x8d\xa0\x96M\xe2\x0d\xa3\x96M\x02\x8c\xa5\x98Mj(U\xb3I\x0c\xc5Q\xd9$\x96\x16\"\x85(\xc1\xe9J)\x9b\xc4\xd0)g\x93\x18:\xe5l\x12C\xa7\x9cMb\xdb\xa7\x9eM\xc2eP\x06e\x93\xea2Q6\xa9\x01@\xe5fS\x0eg\x93\xeab8\x9bT\x17\xc3\xd9\xa4\xba\x18\xce&5u\xc3\xd9$L\xaf\x03X\x80\xc1\x00D\xd9$\xcc\x07\xf9,\xc8d@p6 s\xf1;\x8b\xb1\x18\x0c\x9cM\xc2\\l\xceb\x86\xac{U\x1fl?w\x15\x1fV\x00w\x17\x1f\xd4\x00w\x19\x1fR\x01w\x1b\x1f\xd2\x01w\x1d\x1fR\x02w\x1f\x1f\xd2\x02w!\x1fT\x03}\xe7\x1e\xd6\x01}\xe9\x1eT\x00}\xeb\x1ej=}\xed\x1ej:}\xef\x1ej7}\xf1\x1ej4}\xf3\xbelq\xfb\xc1\xcb\x033f\x90\x17UD\xa3\x1d\x05\x01\x07<\x12\x01\x8ey$\x00\x1c\xf6H\x008\xf2\x91\x00p\xf0\xa3d\x00\xc7?\xf6\x00\xabh\x08\xe4q\xe0(\xc8\xc1\xc0\x81\x90C\x81c!\x87\x02\x87C\x0e\x05\x8e\x88\xbc\\\xe0\xa0H\xc0\xe4\xe3\"\x00\x04\x87F\x1e\x07\x8e\x8e<\x0c\x1c y\x188F\xf20p\x98\x04d\x03GJ\x02\xd72XBHp\xbc\x04\x80\xe0\x90 \xe0\xc0Q\x13\xc0\x81\x03'\x80\x03\xc7NH>p\xf8$\x80\xb2\x11\x94\x83\x81\x83(\x8b\x02\xc7Q\x16\x04\x0e\xa5,\x08\x1cMY\x108\xa0r2)l5\xaa\x9ef\x0f\xc8\x83W\xc2\x81\x96@\xc0\xe3l\x03\x80\x87\xd9\xa6\x1c\x1ee\x9brx\x90m\xca\xe11\x96\xa8\x1f\x1eb\xe9\xfd[\xe1\x08\xcb\xc2\xe0\x01\x96A\xc1\xe3+\x03\x82\x87W\x06\x04\x8f\xae\x0c\x08\x1e\\Y\x99\xe0\xb1\xd5gF\x1b\xd1\xd0\xca\xe1\xe0\x91\x95\x85\xc1\x03+\x8b\x82\xc7U\x16\x05\x0f\xab,\n\x1eU9\xb9\xe0A\xd5g\x07\x18\xd1\x98\xca\x03\xe1!\x95\xc3\xc1#*\x07\x83\x07T\x0e\x06\x8f\xa7\x1c\x0c\x1eNy\xd9\xe0\xd1\xd4\xa7\xc6\x1a\xd1`\xca\xa0\xe0\xb1\x94\x06\xc1C)\x8d\x81GR\x1a\x03\x0f\xa44\x06\x1eG\x19y\x14\x86Q\xc1\x88\x89\xeb\xe1F4b\x12\x08x\xc4l\x00\xf0\x88\xd9\x94\xc3#fS\x0e\x8f\x98M9\x96\xdc\xca\x05\xfajr\xc1\xa8\x10\xa6\x95C\xdb7\x12Kf\xae\x1d?\xb4\xf2\x92}I5\xe3\xf3\x80\x0e)\xda\xa5\x9a\x8b\x9c0\xb6S/\x0c\xce\xb1\x17 -]\xc5\xe1z\xb9\xa2 \xd6\x81\x8b\xe2\xac\x98\xa3\xa9K\x18\xc7\x0b51M\x10\x06Ha\xe9s\x00d\xce\xd6Q'\x88\x0d\x91)H\x0e\x91\xe5\xc2+H\xaf\xb0p+\x9b\xe4\x9f\xd4\"\x9eJ\xa5A<\x95B{\xc4\xa2\xe3\x93D\xe7\xa9TD\xe7\xa9\n\xd1)\x8a\xb4D\xd9\xd8[\x06\xe7YT\xc0\x94\xc7dy>Q2\x00\x87\x048(HQ\xac`\xed\x03#E\xed9bA\x18\x08(\x0b\x83)\xc5Q\x90G\xc1\xfbR\\y\x83DF\xbf]D\xffh aaZ-G#`a0$\x0c\x0d\xaa,\x9c\x7f!~\x11\xc6\xfe\xb9cG^jc\xef\x11\xb1P\xccBq\xb8E\xb1c'\x1cr\xcd\"\xd7Q\x04#\x03\x16y\xd2p\x98\x12\xce\xa1\xd4\x12\x00-n\x0c\x00\x16\xb7\x07\x00+\x0c*\xcan\xda\xb8\x98Z;9\xb0\xa4\x99\x1cV\xd2J\x0e\xab\xd0HA{8\xb7\x92\xb5\xe7\x08\x1f\xe4\xb1\x92\xf6pX`8]h\x833\xe6\xc1\n\xd9n>\xab/\xc2 \x8b\xf5\x1e\xd19\x1fR/4\x8b\xa5K\xd6s\x80\x94\x0f\xa1\x17\x06Ql\xf2\xc5=\xa2\xb8\x07\x05\xea\x0b\x93@\x18@\x90\xbe\xe8S\x00\x88\x85E\"\xf8\xe2\x01Q\xdc\x1d\x0d\x01\x06C\x12Q\x00\xda{\xc3\x81\xd5\xbd\x16$\"\xf5g\x9d\xae\xc5\x02\x005a\x04\x9a\x01d\x07\x1a\x01\x99\x82F\x08\xacA\x83`\x83\xb0\x18\xd0&\x0c\x080\x0b\x8d\x10X\x86\x01\x15\x18\x05\xeb(\x8cU\x99\xc9|\xa1\xc5\xfcV\x83q\xb4\xa4\xbd\xfc6s\xf9m\xd6\xf2\x15\x8c\xe5\xb7\xdb\xcaW0\x95\xdff)_\xc1P\xfe\xb1v\x12\x98\x04\x0bM\x82[M\xc2\xd1\x92&\xc1m&\xc1m&\xc1\n&\xc1\xed&\xc1\n&\xc1m&\xc1\n&\xc1\x80I(\x8c\x8f\xecd\x1d\xa3C\xd3O\xb2\xce\x03b\xb2r\n\xd8\x17\x01\x03;\x8e\xc3-\x01\xedq<\xbd\xc0EAZLi\xc5\xcf\xe7Fs\"+m?\xcf\x98\xf86\xc6\x9acG\xe5\xe8\xb0\xb1c\xcf\x0e\xd2\xf3\xe69\x8dO\xe3u\xe0\xd8):\xe4\xc9\x81<5\x82\xce\x83p\x1b\xdb\xd1$\xdc\xa0x\x91\x7f\x9c\xcfs]\x14Lr\xa9\xea\x87\x08c/J\xbcDa\xcc9\xc0\xeaH\x94\xd5\xcb`[4L\xa3EJ\xae\xe3\xbd'\xea\xb9\x1e\x88UU\x9d\x11\x9c\xaem\x05u+\x0c\xf1\x95\xc2|u\x13\xf8\xc7X\xc0W1\x80\xff<\xfa\xf7\x8fT\xbf\xff\xdd\xb4/Q4VW4>F\xd1XE\xd1\xf8y\x14\x8d\x8fT4~\x8a\xa2)\x96U\xb9\xe6\x84Aj{\x01\x8a\x0f\xf5\xa3\xfdy\xe2\xc4!\xc64E\xb1h\xa6\xb7\x12\xecu\x1aN\xc8\x9d\x96\xec\x01\xa3\xddX\xcb\x1e\xf2t\x0c\x0cS\xb0\x86Y{\xe7<\x00bj\xec\xd9\x1buIARPX\x8d9\xf4\x94\x03\x15\x04V\x18M\xcaV\xf8'7\x02\xa0\x84\xdb\xe0\x1f\xdb\x04\xb1\xb4\xf8di\x01JXZ\x0cHK\x8b\x82\xbd\xe8\x10\x85\x89\x97'\x02\x17\xde\x0e\xb9\xff\xd7\xf3\xa30N\xed \x9d\xfcQ\x97\xd8\xf3$\xc4\xeb\x14\x11\x85\x19\xe9y\x8c\x9c\xf4G#\xdau\x88\xbf?\xd1Eg\xc4\xdf\x9f\x14\xcc}\xe0\x04\xcc\x1c\xe7\xcf\x94QAH\x15\x9f\xcc$\xf7\xff\x83\x04\x17\xc9\x88\xff\\\x19)\x01\xb6\x89\x16\x84\xb1o\xb3#u\xf6\x88F\x16\xa370\xa0\xd3\xb0(\xa6#\xc9(>>'X\x0b\xc5\x07J\"\xb9\xe0\x90\x8a\x13\x8d\x85e\xd2)\x88\xa7\xe0m\x8d\xcclt!\x14\x19\nCx\x89\xfd#\x05\x96\xca\xa6jfp\xe6\xe6e\xc3\xbcl\x14f\xa3\xcd\xed\x04\x1d6(N=\xc7\xc6e:;{\xc6\xef\x91l4\xdfsY\xa8\xef\xb9.\xe6\x80i\x18\xb1\xc04\x8c\xb8\xaaS\x9f\xab9\x0fp\x14\x0c~\x00\x9a\x91\xf9\x8ezK\x00\xb4\xb01\x00\x16n\x0f$B\xd1$\x856)8q\xd9P^o\x92vr`q39\xa8\xa0\x95\"\xbb\x1d\xed\xf8e{\xf01\xed\xe1\xc0\xe2\xf6pPA{\xf8\xfa\xcb\xf6PX\xd7\xf3\x0fad;^\xba?7\xb8\xa23\xf6\x01\xf41\xfa\xecq\xf1\xfdym\x8b\xe6\x0f^\x99\x15/f\x90\x92w\xa7kXI\x07ez\xf1\x82IK9'\x86\xbc\xd6J\xfc\xae\xc5\x13\xdaN\xeamP\x03\x19M\x94d\x0c\xd7\xa9\\\xc8p\xcd\xec\x9e-q\xb8=\xe3\x9e@\x82\xe7\xcf\xbf\xa3\xbe\x14\xea\x15\x18|\x95-\x03\xf3S\x11\x9dn\xfe\x9f\x1a\xa8\xab\xa9\xedXQ\x9b\nKC\x95\xf5\x9e\x89Py\xb3\xda@y\x1b\xd9\x16\x18\xdf\xa7\x05\xcd\x06{^+\xa4w\x16R\x98 _\x7f\xb6\xef\xe1/\xe3p{\xd0\xfc\xf0Q\x0b\x93\x9dVd\x0f\xfd0LW^\xb0<_\xc6\xf6>ql\x8c\xea\xb6\xcdm\xe7aa;H\xdbx\x897\xf7p\xd6\xf2r\xc1+)\xa24\x93of\xe5?a;E\xdf~\xd4\x7f\x9a\x88\x9e\x03\x1a\xe5Xu\xba=A\xa7:\x02z:\xe4\xac\xa5\x16^\xdb`\xd7\x89\xe1.\x9b\xeb$\xb7\xc0\x8fFW\xb7HM\x11O\x81:\xcaaI\xc4\xac;\xe6Yu\xc7\x00#\x0d\xdb\xf1\x12\xfd\x7f\xc5A\xbc\xe0\x18\x1f\xe1\xd1OEI\x9d\xa5\x80\x88L \xf2\x9a\xb2\xb4\xcdwz\x90\xeb\xf4\x84\x06o\xf7\x1f\xc0\x17\xb3\x87L0\x1dzAZ\x8fH\xce:N\xc2\xf8\xbc|H#\x93\x95\xed\x86[\x0d\x02N\xea\xc5b\x8c\xb0\x9d\x89\x05\x99\xdd\xc6\xb8\xd3\xb5\x92\x8e\xb3\x9e{\x8e6G\x8f\x1e\x8a\x7f\xec\x1a\x03\xeb\xac;\xea\x9fu\xfb\xfd3\xe3\xa7\xc9\x91x\xb1\x88\xe7\xf6\"\xcd\x04\x0d\x83\x14\x05\xe9\xf9_\xfe\xd2\xf8\x7f\xb8\xd3\n\xe4\xb9\xde\xd1;\xc6 \xdauz\xd1\xaeC\x9e\xf7\xeb\xfd4Q\x86\xe5\x07;c\xdb\xf5\xd6\xc9\xb9\x17\xacP\xec\xa5\x93f\xd2\xe4\xd6\xd1\x93\"\xf3\x99\xe7e\xf4I\x11A\x1a\xba\xfeb\xb2ByN'\xff\xf91\xcf\x98\xee\xce5\xf9\x9cu\x846Ui$\x1a\xcd\xfd\xbb\xd0\xeb\x99\x18Ej_\x10d\xcc\x97\x9a\x1dx\xbe\x9d\xa23\xc1s\xa8/\x11\xa5\xc2\xd0\x89=\xc4IM\xdb\xec(\xd0\n\xa6\xa5~\xd4\xf4Ce\x17\x9d-2\xea\"\x83-\xea\xd5E=\xb6\xc8\xac\x8bL\xb6\xa8_\x17\xf5\xd9\"\xab.\xb2\xd8\xa2\xf1x\\\x17\x8e\xc7c\xa0\x98*\xe7\x00\xbe\xbdk\xa45\xfa\xc3\xfe\xc8\x1c\xf4\x87,\xaa\xf4\xf2\x1aY\xfe\xce\xc3\xbc\xd4\xb3q\x0d\xe3\xb3\x95\x8f\xda:HP\xc3(\xff\x8d\x86\x04(IQf\xa0h\xaf\x15\x11T\xdeM:!\xb3\xaf,\xc2Ej\xb05>\x10\xbf\x9e\x1b\xecB\xa2\xa4k6\xae \xda\x95\x01\xd6\x01c{G`\xcd#\xb0\xfd#\xb0\xd6\x11\xd8\x01\xa3\x17\xe8`\x7fA\x8f\xbd$\xd5b\x94 \xa1q\x08\xc4\x9a{\xf1\x1c\x99\xaf\xd6'94I\xf7\x18i\xe9>B\xc5\xd1*\xa1%\x8b\xed\xa5N\xf4sDm7u\x8f\xdbo\"9&(B\xb1\x9d\x86q\xce\x94\xe0at-A\xfb=\x7f\xd9\xf1\xfc\xe5\x81\x18\xd2\x9b\x9cG\xfe\xab\xeb%\x11\xb6\xf7\xe7s\x1c:\x0f\x02\x1d\x06\x0fI\xc7>\x94\xe7\xe1Mk\x88\\\x17\x9a\x02\xf8\x01k\"-\x95\xd5\x06\x0d\xb6\x0c\xa2\x9c\xf5\x0b\xa9\xc6\x03\xc7Y,\x9e_\xaamlG\x11\x8a\x05\n\xec\x0f\xf4hW\x1a\xf0\\\xef\xe4\x9b&\xa5\x0b\x9d\xeb\x9d^VH\xcd\xf0\xdecVRN\xcf\xf3p7\x01\x9f\xd2\x12\x84Qn\x1a-\xb5\x97Z\x82\x9cL\xeaCe4\x82ymH\xcdO\xb4\x05F;\xf2Y\xf6;%I\x18{\x993V\x99\x18\xaa\xcc\xf5\xe2\xa2\x9a2%:\xa98\x12%N\x88\xd7~0\x01\x9f\n\xc5\x7f\xba\xd8\xe4 \xe0F,\xeai\xfe\x8b\xe6\xa5\xc8O\xaaG\x95E\x0c=\x0b\x97\xb2\x7f\x8c\xea\x9f \x134\x8aB\xc4^\xc2E\x81\xbddR\x9b,\xef\xb9F\xb4\xeb$!\xf6\xdc\"\x1c\xb3\xc6g\x03\xebld\x9cu\xcd\x9f\x84*)\x9d\xb8\x99\xf5\xa9\x1b\x1e:\x1bj\x93\xca$\x8e\x18\xf5I'\xd4;V\xb4\x9b\xe4\xa5\x0b\xdb\xf7\xf0\xfe<\xb1\x83DKP\xec-&U\x1f\x9e\xf7\x0d\xcb\x10\xf2\xee\x06\xa1\xe6\xa2\xc4\xe9$\x91\x1d\x1cH\x03d\xfa>7j\xd5\x9f\x1b\x93\xe2?BV\x9dd\xb3\x84\x82\xa2\\\x85}^\xab\xfdD\xc2\xca\xb71u\xde\xa9_5t[\xcc\x04}]\x9f\xa8HK\xf4\xd1\xdc \x8eWVd\xc7\xb6\x8fR\x14\xff\xf1G6\x15\x90B\xf5\xa2]\xcd\xdf\x8av\x1d\x9db\xef\x87A\x98o\x10P\x82\x0ft]V\xdb\xc6C[\xad\x9a\x06\x1f\x0e\xfc\xca&\x9b\x04\xcch7\xa9\x0e>\x90\xfe`\xa9{\xb9\xc5\xdb\xc3\x82\xedq \xdc\xcd\xc8j(\xba\x02\xd1\x07\xfe\xaa\xeb:\xb3\x10\xe9\xb3\xc3a\xb3\x921\x99E\x8c1\xe6\x16;\x00\x04\x14\xad\xd3M\xedy\x1e8\xa0\xf8\xe9#\xceQ\x0eOV]\xfc\x9c\x8dC\x87\xc6\xdb\xfa\xfc\x90s\x04\xa3\xf3\x85\x17'\xa9\x16.\xf2\xf0\x83a\xdb\xd1;\xfa\x11\xbc\xbaebs\xd5/:9\xe7S\xa7\xf3*\xd7Y\xfc\"\xb3\xbe\xad\x999L\x1eSY\xfa\x8bj\xb5\xd9kV\x9b\x99\x9f\x00kd \x9b\xf3\xfb\x8f\x9a\xa5\xbf\x00\x13=U\x111\xb4.c{\x0f6\xab\xeb%Z\x18\xa1\xa0\x19n\x92\xb5\xef\xdb\xf1\xfe \x1a\xe13\xef\x16h\xa8fQL\x8a\x95'V\xd6\x1a\x95s\xd0\xc4\xf7\x82*\x82\xb5\xb2\xdf A\xd9\x1b\x83\xa3\x9f\xe0~c\x00\xcb\x7f\x83\xe980\xe6(\xd9\xcf\x8e\x01w\xb0=G\xf8\xe9\x1d\xef\xa4\xa9\xfe\xa8f\x95\x922C79,\x0fu\xbd\x1eG\xb9\xc30'\xcc\x1aJ\x02\x95\xfd\x91\x9a\xa1$\x9d[\xc0j\xd5g'J\x95Q\xadi\xeds4\xae\xe8C\x9a\x8f\xd2U\xe8\xca\xe6\xed\\\xcf\xf5\xd6\xe5H'f\xd0A\x16\xa8e\xe3\x05w\x03\x8c\x99\\L\xba\x0b\xe5\xd3ONC\xf5\x04\x9d\xed+\xf2v.\x16\x0b\xc5F\x86\xf9\xd2,3\x80\xe7\xb6\xf5\x97\x92$\xb2\xd3\xd5\x11\xd0?\xfepQ\x14#\xc7N\x11\xa5\xccAD\xf4\xacS{[n~\xbdq\x08\xbdc\x16\xab\x19\xfa\xb7'w\xd0\xc96\x8c]m\x1e#\xfb\xe1<\xffW\xb31\x96\x85c\xaa\xf1R\xb9\x19N\xec\xe8\x0f\x07\xa3h\xc7l\x81\xff\x07\x9a\xaf\x17\xed\xd8\xd3\x9d\xcal\xd8\xcd:,\xbc\xa6\xab\xd4p\xa6\x8b*r\xc8\x16\n\xb1\x17\xe5\xebR\x82\x81\xa9:\xe4<\xdfH\xf3?4\xe9\x90\xd1\xbeZp\xc7\xc8\xad\x18\xe0\xf7\xea\x00\x9f\x98\x95\x9e=\xb2\xe7\xa4\xab\xf6\xad\x19\x19\xcb\xb0m\xc4,5\xe0\xf8\xaab\x19\x85IJ\xbc\x8f\"3p\x7f\xec8c}\xc2\xae\x80\x87\xe6YO\xef\x9f\x19\xfd\xbe0\\\xa1\xb8\n\xa7\x1drN(\xea:\x81\x19(\xb3\n\x1f\xf5p\xf9h9\xd7\xac&\x17\x8em\x98\xbc&{V\xef\xcc\x18\x18g\xfd\x91\x82&\xd7j\x8a,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2\xdeE\x18\xa5\x88\x95kl\"\x13\xf1\x9a\xec\x8f\xcf\x06\xbd\xec\xff\xad\x8a,\xd8\xaa\xe92\xaf\xec$v\xa0\xd8j\x9cN\xd4\xa8B\x0dK\xc4:\xe6\xc0\xb0\x17\x0b^\x9d\xe3\xe1\x991\xb4\xcez\x96B\x17_\"5\xc7,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2>\xb2Sg\xc5\x88e\xe9\xc8tz\x9c\"G\xfaY\xaf7<3\xc6\n\x8a\xcc\xd9*\xa9\xb2\xa8\xec\x14n\xa0\xd4J\x8cNS\xa7J\x05\x19WF\xae\xb1n\xf4\x00\xb7\xcc\xa6\x1cc\xa4\xe6\x96\x19W%e\x16u\x9d\xc0\x0c\x94Y\x85\xcfi\xaaT\xe1\x1f\xe6\xb1^\xc2H\xa6\xbb\x96m\x0fym\x9agc\xfd\xcc\x18\x0c\xdb\x95Y\xf2U\xd2gQ\xdbi\xfc@\xc1\x15Y\x9d\xa6U\x95*\x88\xb0\xbe>\x15:\x98\xd0\xa2\xa2y\xf6\x07\xce\x14\x8d{\xc0\xab\xa5\xc4\x95(i\xb9\xa8\xefd\x96\x07Hzun\xa7\xe9ZR\x0b!\xa0\xb3B>J\xb8\xa4\x9c\x1aY\xa7[\xfe\xa0\xa5^\x8aQk\xaef\xe1\xe14kD\xb3\xd6*\x9eh^\x90Eq\xd4\xd6b\x1eI\xe7{T:\xb5oU%\xd8{M\n\xd2\x1d\xb9.b\xbc*\xb5\xe7\xa7\xad\x82\xa8\x9a\x8bex\xdd,b\xe3\x1b\xd8\xf3N\xedy\x07{l\x1a\x8d<\x89N\xf1b\x16,\xc7\xaf\xfe\x8a\xfa\xd8\\8\xb7bbv\xf2\x99\xcf\x96\xf5X[C\\\x85\x89\xecb\xdf\xbe`5\xa8WeF\xb4\xa3\xceK\x11)l\xc1\xfe\x1e\xbb\xbdW\x08Q\xfa\xf8\x81\xc9\x90\x81\xbeI\xae\xbe\xb5r\xaf\x1aLJhh\x97\xa28\xb0\xb1\xe6\x86N\"\x87\xe6^\xfdGy\x13\x8a\xb5+\xbd\xcdX\xbb\xa8U\xa5\xb5\x8f7\xa8\xa4)\xdc\x11\x12ik\x84h\xb2ALf\x14h\xd3\xf3\xb6 :\xa6\x01\x020%\x7f\xc4fR\x9f\x9e\xb3\x15\xaa\x939\x0fC\x13\xa3\x1dr\xd6)\xaa\xe0\xf50\x98\xbb\x81\xfc\x9d^\x0ci\xa7;O\x03r\x1c$\xc7\xe5>7.\xcfCw\xaf\xe5;\xb0u,r\xd2\x98\xf7?s \x82\x97\x9ez\x86\\/=P'\x16\xf4V\xfab#\x83T\x9a\"M'A\x189i\xb5\x9bkB\xb3W\x8c\x92(\x0c\x12\x94h^\x100f\x96\"\xb9\xee\xc8\x95[\x82\x9eXN\xa3\xa7u\xc6\xaa\x96,\xec\xf8#I\xedt\x9d\x80{\x0fOeJ<\\\x07n\xe8\xac}\x140\xb9]\xe3\xd8d\xf6X\xcf\xfeH\xaa\xce\xcf>1\x9f\x0f\xcd\xcf\x93UY\xef\xbe\x8e\xfc\xc9\xf36\xb78o\xf5?\xd1Zb<\xfd\xe3\x8f\xc2g\\o\xd3\xf5\xed\xf8\xc1\x0d\xb7\x01\xec]2\xca\x18\x05.\x8a\x91;+9\x80\x9b\x7fE\xa0\x93\xbf\xb9\xcd\xa1\x8f\xc75C-\x10\x9a\x91\xa7\x1c\xa8d\x9e\xd1\xef\xf7\xd1q\x9a\xe1\xf6\x9dT\x1aW\xa9\x85\x9dEThY\xc5t\xa2\x038\xad|g\xc9\xedg\x90\xdc>\x1c%\xf0h<_\xe8\xfd\x89\xe2\xbd'\x15\x89\x9a\xd6\x14\xa9\xf3\xe7h\x13}\xd8qd\xcc\x0d\xddy\x82d\xec\xce\x95\n1'T\xba:N\xd3\x8b\xc5BxbN\xb8\xd3\xaaeSW\xf3\x1b\x0e\xed|\xe4+\x0e\xdd\x93G!\xa9\x0ej6gl\x9b\xfd\xfa\x96\xb7TP\x15F1w\xa6\x0b\xee\xfb\xcc\x95\xef<\xa2)69\xb3\x9f\xca=\xce\xecwx\xe7\x93{\x98C\xab\xe0c\xb5\x8fV(H\n\xf1\xb3\xa0\x83z@\xfd\xa24\x06\xd5/\x89ae;\xd6\x8er\xcd\x15'\x18\x1at\xf3\x96\x86\x16\xban\xb1\xdc\xcf\xba\xddAr.y\xe5-W\xc5{\xc0\x9d\xd0\x05\xd6~2\xf4\xdf\xbb\xbe\xe7\xc4a\xfe\x80|iN\xe9!\xbb\xeaHN_g\xce\xe8\x0c\xd8\x13\xd6Y\x1f\xc8\xdcQ+\xd7y\x89\xf8\xc4S\xee)\xe5\xca\x138tJZj\xe8\x8ezc\x138\xed@n2\xf2\xc6&\x0d\xf8\xd1K=\x8c\xbd\xb5\xdf\xf9\x82\xe6g\xc4\x84/\xe9\x97L\xc4P\xb6\xd9\xd4\xeb\xc5\xed\x90\xdb\xdb+r \xc4+\x88\x88eT\x8f\\\xf3\x9bE6\x83\xdaG \x8ej\x83\xa7\x95\x98s\x1a\x96\xe0P\x13\x07\x93\x8bX'n\x9e\xbe^8i\xa7XQ\xba\xbf+\x1dLzr\x13\xbe\xe7\x92\xa7\x1a-\xb5\xe2\xb8\xb5U,,N\x88D[\x94T/`\xeat\x93a\xd6\xcb\xcf\xe6T\xa0\xe0\x85\xb9\xd5l\xd2\xf8p\xe5\xb3\xe5\x89J\xe2x\x7fq\xd1\"\x9bW\x9a1\xc1x\x8e\xa37\x91\xed\xbc_'\xa9\xb7\xd8W\xe3L\x8d}\xaa7\xfei\xce\xd0\xa2\xf4\xfaQ\xdbH.\xa6,3uD\x8f\xd1\x81\x1e\x03'\xf2,\xfdEs\x18\xb5\xce\xd9\x95\x8c\xa5\xa7O\xf3\x13\xa6g\xc2\x13\xa8T\xb1\xc0\x1fO\xe8\x11\x12-\xcc\xd1\"\x8c\x91 aI\xb5\x93\x8e\x9a\x88Dm5\xdb\x11G\xc8\xb5\xbcG\x01\x07r\xeb \xec<\x0e\xd3\xfc\x87\x8e\x91t\xbc`\xe1\x05^\x8a:\xd94n\xc7g\xc4%\xcf\xc9\xf1\x14\xcd{\x12\xb8\x04x\xb1\xf7i\x9d\x15\xff/\x0e\xbe\xe6\xf3b\x1aF\xe5\x9e\x039;\x0c\xd8{\xb1y\xa6\xa9\xf6\xf3S.\xa0\xff\xfb\xbf*\xf2\x07\xb4_\xc4\xb6\x8f\x92N\xd5\xb0C\x1a\x02\xf7\xa0\xf3R\xf4\xa3\x91\xae\xe3\x80t\x1a\xea\xf9\xbf\xff\xfd_\xcf\xccO\x14\xec\xe7&\xa5N\x93W\xc3\x9c\x02I7\xfb%\x0eq\xa2\xd9\x8e\x83\xa2\xb4\xda\xac)\x87dj\xf3g\x19#\x14<\x85g~\xf5\x83\xe0ED,\xdd!\xf2!K\xcc\xb1\x17<\xa0\xf8`\xe9/\x9a\x17\x86P\xba\x15 H1\xcbc\xb5\x9d\x95y8\xba\xab\xda\xdd \xcc\x93 u\xb8\xe1\x05\xdc\x92\xb2\x06\x9d\x81O\xcf3\xa7\x83\xce\xfaU\xb7\xba\x8b\xea\xeb\xdf$\xc7\xcf6(N\xbc0\xd0\xa2\xd8^\xfa\xf6\x81\xdc\xaa\xa8\x83K\xe4\xb3\xe9?\x9a\xea\x8f?|\x94$\xf6\x12==\x82:u\xde#\xe5&\x06\xfcn\x0f\xf9@\xd8\xcc\\\xa0E>q\xd8\xb4\xcb\xc5\xf4\x82\xc6\xfe\xdd\xf56\xc4\x8bE-\xcbY)\x9dmTb\xde\xc9\x171Mt\\m\x97\xba(\xfbS\x8b\xdb\x8fv\x9d~\x11\xf6\xb2\x8bN\xba\x9ay\x1a\xb4\x9d\xb5&\xaf'\xf5\xc8\x83\x9a\xec\x19A\x93?6h&\xfcH\xbc\x8c\xed\xbd|\x05\x9as\x89\xec\x18\x05\xe9s_e8a\n\x9d\xa7A\xf6WK|\xd1\xc5\xad~\xa9\x19\x8e\xee\x9f\xae\x97\xd8s\x8c\xdc\x7fU\xef\x9b\x08\xc2\xcc\xe5p\xb8En=[uM\x8e\x90y?\x00s\xb9\xc9b\x9aer\xd7\x9fx\x04\xdf&\xc7\x0e\x1c\x84\xd9Sa\x8b\x81> \x97_e\x01i\x12\xb9\n\x0b\x0e|u\xf6:]\x85\xb1\xf7\x88\xe8\xeb\xd8\x13z\xb4\xab\xb8T\x07=\xe5\xa7?y\xe1$\xf5\x16\x89\x86\x05\x0e\xed4\xff\xb6\x0cm>p/\x9e\xa1\xdf,\x0f\x0b\x0fc\xf8\xc8e\x86-w\xaa\x80\xfe\xd9\x1f\x8fu\xd4\x03\x92[T9\xc7Q\xcb\xb8D\xa7\x0d\x9f\xe4\x8aZ\xc0\xb8\xe8\xff\xc7\x0fN4\x83r\x1f\xbcxU\x15\xd7\xb13\xadv\xb8\x03\xe2\x0c\x07l\x0b\x18\xe4\xa4\xf9_F\xdd\x95Y\xec\"\xf3\x98\xb5\x83\xb9\x18P\x0e\x0e\xca\xa2\xd3\\3\x0f\x95s\xce}\x98\xb8\xf7Y\xf6B~w\x8ef\xcc\xa8V\x06-\x0f\x80\x13}E\xcf\xfe\xb4\x89-\xbc\xf5\x0bO*\x05\xeb\xa1\x9e\xfd\xa1X\xcf\xd7i\x1a\x06\xec\xdb}\xc2u\x9a\x0d.\xbc\x02\x0bx\xd7\x0b66\xf6\xdc\x03\xbfVIV\xf6\x03\xeat\xfbI\xc7\x98\xc0O\xdb\x0e\x03\xffu\x81\xb83Fe\xd0{\xc4\xc4\x9b\xa7\x18\xac\xea\x1e:\x7f\xbc\xa7\xcc\xd9\xca\x13\xbb\x8ba\xf6\xa7\xb3\x8e\xf1\x8f\xae\x9d\xda\xe7\x9eo/\xd1\xcbd\xb3\xfcy\xe7\xe3\xc9\xdcN\xd0\xa0\x7f\xf6\xdb\xaf7\xbdo\xfb\x8b\xfe\xfc\xcbn\xed<\xea\x9e\xfd\xeb\x9d\xee\\\x86\x9bw\xa6k\xba{\xcb\x9c\xed\xad\x8d\xe3;\x9b\xd9\xfdt;{5~t}\xc7\xbb\xfe\xf5[\xf4\xedw\xf7\xd5\xdc\\\x8e\xaf\xef\xa7\xcb\xd9\xab\xe9\xbe\xf8{\xfd\xf3\xf5\xab\xe9\xf2\xfar\xb7\xfd\xfa\xfb]x\xfd\xe6v|\xfd\xa0\xeff\xfb\xbe>\xfb\xb8\\\xde\xec\xfb\xfd\x9b\x8f\xf8\xfe\xdd\xfd\xb59\xfb\xa0\xafg\xf7_\xfb\xef\xee\x9d\xed\xfb\xfa\xe7\x07\xf3\xfd\xab\xe9\xf6\xfaU\x7f\x7f\xb3\xef\xefo\xee\x97\xeb\xd9\xbd\xb3\xcf0\xb3\x0f\xf9s\xeb\xe6\x1e'\xef>\xce\xd6\xef?N\xfb\xd7\x97\xb3\xf5\xfb\xcb\x9b\xfbw\x1fj|\x9aa\x9b\x9f\x1f\xcc\xf7\x1f\xa6\xdb\xf9+\xfd\xf1\xdd\xfd\xc3\xf6}\xfe\xdf\xe5\xe3\xd7}V\x9f\x93\xbe\xbb\xbf\xee\xdd\xd4?\x17u\xbc\xfb\x90\xd5\xf1\x90=\xdb\xe5|\xef\x97\xeb\x9b\xc7\xa9U\xfd\xfc\xfe\xa3\xd3\xbf\xbe\xbc\x98\xcd>N\x97\xb3\x8f\xaf\x93\xb2m\xe9l\xdf\xdf\xdd\\\xbe\x1e\\{\xa3\x9f\x7f+\xf4\xf4\xf3O\x9d<\xaf[\x9c\xfc*b\xceN\x10j1\x8a\x90\x9d\x92\xf3ZqS\x9f{#\x84<\xa3\xd9SK|f0\x95(\xa8Y\xb9G\x11\xb2\xe3,Z(F\xa4\xfcEm\xecC\xe6w\xc0\xdd\xff\xe9\xafq\xeaE\x18\xfd\xabJ\xfeZ\xd4\xc15\x0b\xf4V\x80\xd1\x9f\xde]\xe9\xbd\x07.\x89\xd8\xcbg\xd8\xa3\xee\x94 8\x19#\x9d\xbd\xe0\xa5\x94\xdd}\xea\x99\xa4\xfch\xe1?\xb3%\xf5/\xc8\xb7=\xfc\xaf3A\xe9\xc2\xc3HX\x18\xd9I\xb2\x0dcW\x08H\x90\x1d;+aq\xb6\x1e\xa3\x0b\xb3'v\x8clRE:\x91l\xa2\x1dh\xc4\x0c\x8f\xc4\x86\xa1;\xce\xfe\xb4\x0d\x8f\x8b\x85\x9a\x15\xff\xf3\xd5\xd5\xbct&\xdf\x8a\x91\x1b\xbb\xeaO\xd2V\xb4\x81\xea\xd6\xb4\x01\xcbV\xb5\xc1\xf2\xd6\x81\xa0\xaa\x95\x7f\xca0\x00d\x8ar6\x07C\x7fq6\xd6_\x00Y\xb6:\xa5k\xba?jF\xb4\xcbF]0\xe5K\x96\xff\xbb\xa7\xbf8\x1b\xb5\xf2\xeb\xc9\xd9U\xc5\xff6\xf5\x17g\x96\xfe\xe2l\xd8\xcaQ\xeb\xb7HX\x95\xff\xbb\xaf\xbf8\x1b\xb4\xf2kaWs#3k\xff\xab\xd1g\xd1(8\x1403\x07y|\xbc\xd9\x9a\xeaQ\xb7\xe8\xf9\xd5\x137l\x92\x01u\xcb\xbb(\x8e:-\x00\xccMUK\x8aw|\x1d\xf8\xd0\x17\xb8\x1fU\x0f\x11\xce:\xe6\x0f%\x13[r\xe4d\xc2\x9c\xd5\x88QN\"P\xc0\xb3\x9f\xd9rV\xc8y\x98\x87\xbb\x03\x19\xf5\x97+Y`mD\xeez\x08\x1eW*\xd5\xb3?peOx\xfd\x86\x80aD\x1dD\xef\xeb:\xf1\xd1\x8d\xc2\x0e\xe4y\xb9J\xf3,HU\x8bP\xba\xae\x16\x85\x98L\xaag\xff\xaa\x9b\xca/\xa5\xa5t?\xe7\x8a\xfa{\xb7xC\x8f\xf0\x8dJt.K#\xf7\xcb\xf27/Tn7 \xcf\x91\x8f\xca\xedn2\x0ef\xcf|\xd0[Q\x8c\xff\xa1Q\xf6G\xf4\xb2$=_\x02T i!\x97\x08\"\xde\xf1\x90\xf7\x83\xfa\xa7\x13U\xd7\xfe\xca_\x85WFKk;\xcf\x7fB.e0^Y\xf9\x1a\xf8/\xc0\"\xd8Y\xd9q\x82\xd2_\xd6\xe9B\x1b\x9d\xbd0_%\x9be'\xb7\xe0/?\x18\xfa\x0f\x9d\xc2\x82\xbf\xfc0\xfa\xa1\xb3\xf1\xd0\xf6\"\xdc\xfd\xf2\x83\xd9\x19v\x0c\xbd3\xfa\xa1\xb3\xf3q\x90\xfc\xf2\xc3*M\xa3\xf3\x97/\xb7\xdbmwkv\xc3x\xf9\xb2\xa7\xebzV\xc7\x0f/\xcc\xab\x17\xe6\xab\xc8NW\x9d\x85\x87\xf1/?\xbc\xe8\x99}\xa3?\xec_\xfd\x90?\xd0\xe25F\xbf\xfc\x806(\x08]\xf7\x87\x8e\xfb\xcb\x0f\xb3A\xd74\xcd\x8ea\xbd3;\x86\xd1\x1d\x0c\x86\xd8\xc8\x9eh\xd9\xbf\xfdN\xaf\xd3{W<\xce\xc40;\xa3\xac\xec\xf1\x87\x97EMY\xa5/\xcc\xab\xbf\xfc\xd4\xb1\xf4\x17\xcdZ\x93\xd6\xa8\xeb\xd98\\j\xeb\x1d\xf35\x9d \xf9\xa2U\xea\x1e\x8b^\x1dV\xaa^\x03,`\xd8\xe9f\xbaw\xe30\x02\xb8K\x19\x8an\xc1\x8c~\x12V\xe5\x87\xae\x8d\xa9z\xea-m\xae!\xd4\xfe63)\x16\xbf\x9a\xe5\xdcP\x7f\xf3\xc3\xe2\x86\xe2\x937\xf8\xf9\x05JuY\xafm\x81\"\xc8\x07\xe8\xd1\xaeS\x9c\x9c\x92\xbe\x04Z\x8ckUj\xb5\xb1&;\x06g\xf5\xc90\x82O*J\xd8\xd2\x17U\x80{6U\x9e\x9c\x9fk\x95V\xb8\xd2\xba\xe9K>#f\x81=h\x16\xd8O8\x9a\x04\xd5\xff\x94\xd7\xce\xd5\xb1J\xaf8/':*[:\x16\xe96'\x9d\xffQmM\xa7\xeb\xe00AZ\xfe\xf8\x88\x94\xfc\xf3e\x9bd\xc2\xad\xc8\x0f\x83\xf7\xd8c?\x03\xf2\x0d^\x8d\xe8\\\x1eN\xb4Ir\x82[\xf8\xa1+O\xef\x98\xfa\x91g\xea\x85\xb5t\xba\xc4}\xd9$\xb2\x99\x1b\x11<&u\xabc\xb9\xb6\x9e\xfd\x11\x9d\xcc\xe5(\xff\x9e\xba\xcc\x8dK\xf5w\x0f\xe5\xcc\xb44\\.1b\x8fh\xc1\x81\xd7@\x14x\x95\xa6\xccF\xa9N\xd7D\xbe\xc2\xebo\xb8\xe1]\xf8*`u\xe4\xa9\x08\xe8C\x0e$\x03~**\xcf\xf1\x8cu\x17-\x81\xf3=\xe5s\x8eN\x0bc/\xcf\xa6\xe9/\xb2(a\"*\x10\x1b\xaa\xeb\x84\x18\xdbQ\x82\\\xf1\xa9#\x81P\xf9c1\xe7\xf2\xac\x1et\x02\x8d\xdd\xc0\x12\\\xa1=*\xd2k\x0f\xe0\xaa`\xb0\xd7o\x82\xc1\xec\xe7:\x1a\xcc\x83\xea~\xa7\xd7'c\xbd,\x8c3\xf4\xce\xe0\xdd\xa8k\x8d;\xc3n\xdf\xe8\x18f\xd7\x18v\x8c\x1e\xd6\xfa]k\xd4\xe9w\xad\xf1;C\xef\x18#<\xd0\x06m\xf1\x1b\xb7W\x90\x05/\x90\x16\xef\xd7~\xa4\xa5a\xfe60`\xe1\";\x01\xc43\x10\xbfz\x8a:;\xa8u\xfb\\g\x03-\\\xdc\x87\x97\x1f\xe3$\xa0\xd5\xbb\xa5\x8aG+/H\x0f\xc4!\xbb\xfcG\xf6cc\x04T \xab\xd1\x1d!\x7f\xc2\x9f\xe3\xab\x86\xff\xae\x81\xfcN~\x14\x08\xf8\x1eo9<\xaa\x04od\xb85\x84\x1c\x9e\xb8D\x95\xad\xfb\x99\xc3F\xe5\xc9\xb2\x02\x9a\xd4W0ub\xf2\x97\xbdR\x9a\x97M\xc2\xbdz\xc1)1{\xeb\xfc\x0b\x0f`\x9a,\x96b\"7Qh\"\x7f\xef5\xcd\x9e \xd1\x9e\xe5-\x86'\x85Ap\xb2\xe8Y\xdf\x13.\x0f\"\x06:w\xbc\x86S\xd5\x13_\xa3\x0d\xf0;\xe9\xcd\xde\x1c\x9f\xe3\xde_\xce\x92[\xac\x07\x90\xddEo\xdd\xf6\x02\x0e\x0b05\xa8\x0d\x99\xf9\xeaQ\xda\x17*F\xc0e\x97\xfa\x82\xc3Q\x1f\x1c\x02\xde\xc6\xa7>\xd8\xb0\xdf\xeej\x91\xb5\xc5F\xc3\xe3\x98\xd1Q \xf1\xda\x90\xa3\xb8\xe4\xa7\x83\x18&\xad#\x12\xc7\xa6|\x90\x08\x0cLM\x0b\xa3\xfa\nVf\xab\xe6\x15;\x96B\x85\xf3pw\x90\x1e\xdai`T\xc2\x19\x8ca\x95\xcd\xcc\xbe\xcc\xa7\xae\xe4\x08\xb7\xe6Ni\xd5L\xba\xd0\x0b\x87,\xf1\xa4\xce\xf4Ty\xcf\xb4\xf4\xec\x0f\xc4\xac\xa9U\xdb\xdaq\xe0\x05K\x903\xb7|\xab^\xdcR\xddn\x17\x1fV\xe4_Q\x97\x8du\x7f\xcf\xfe)\xa7\xe5\xee<\xb6\x1d\xa4\xe5\xabZjF\x84\xceBEq\x18i\x81\xed\xb3\x87\xb8\xa9\x15I#\x1d@\x9c\xfbx\xa5\x18\xcb\x06\x10(X\xfb\xb2\x0b\x8f9(\x0b\xb1\xed\xf4 \x9e4\xba \x8a7(\x16\\\x1f{\xb6\x0bYd%\xa2\xebW\xf47f@\x06\x9dU\xbf[\x9d%\xaf\xee\x1e\x94\x01E\x8fUcE\x92\xdas\x8c:i\xf55\x16So\x01\xba\"\x9b\xd5\xd2eQ \xf8\x85\xdb u\x1f\x82H\x82i\xc4\x9dNy\xe5\xf0\xeb\xfaKWik\xa3\xdb\xe1^\x0eE\x1c|\x87I\xbbN\xe8G\xeb\xack\xadc\\\x0f\xcd\xfc\x91~\x10_\x1cC\x07\xf5E\x9c\xaa\x9d\x88&l\xce\xf5\x978\x9c\xdbX+\xea\xfa\x8f\xbe%*\x90\xb4\xd6S9\x00\x92g\x9c{\xd50$~=S\xf5\xaa/\xc0\xdd\xcb1C\xe0\xed\xb9\x03@/\xc3\xa12nZ\xb5>?\xaf~\xe0\x99\x94\xc3]\x9a\x9fLJ\xe3\xac?\xd4\xbcX\xafg?\xd6,`\xc0\xf8tu\"\xa5O\xbe\xe2\xab\xd8\x84\x82ZU\xde\xefN2IZ\x12dp\xa7|j\xda\xac\xec\\\x80B\xaa7\xb7)\xe9E\xa2\x91fl\xe9Q{\x0f\x03\xe2\xe6 \xf0V\x9f\x92m\xfe\xea\xc6\x9c\xed\x99\xact\xd5vz\x8cI%\x13\xd7b\xf2c\xf2\x8a\xeb\xb7\x9e\xda\xa9Bf\xae\xaa\xbe\x8c\x93\xb0/\x93\xe0\xce\x02\xc1\x1f\xd52\xf9\x17>Ix\xd2\x97\xcdJ\x86B\xfa?\xfe\xc8grI\xc4\xd1\xd7O\x99\x14\x99\n\xba1\xfa\xef\xb5\x17W\xaf\xc7\x11\x0d\x12\"*\xf86+\x1c\xe0i\x03\xfasCM\xca\xac\xe2\xf6\x97R\xf0\xf2e\xd0V1\n\x0e\xd8o\xae6\xb2\xa0]\x8a\x82\xc4\x0b\x99l2\x81\xf0\x14^\x9csLW\xe5?\xccBT&|m\xfe\x13+\x8d\x91+V\x81\x1f\xa5\xfb?66^\xa3?\xf8\xc4\xb5ID\x03\xe5\xda\x91\x8b\x0e\xb8\x17\x0cJ\xb9\x97\x93=\x15L\x0e\x8f\xe2\xd0\xad\xee%5\xc1<\xffjH\x8c\x80\xab\xee\xfc\xa6^\x1aFs\x9b\xfeb\x0dpE\xa7|s\x0eDZ\xfd\x17~\xcd`\x89\xb1O\xdb%{r\xbe\x07\x14\x98:U\x95\xe7\x06\xd9!U%WB\x8eb\xf9^3\xbbIR\x1c\xb9\x90\xaf_\xd8cD\x95\x84E\xca\x06\xd8\xcc\xe2#\xd1\xca\n\xf5+J\xd61\xae_\xd3\xf7d\xad\xe7m5\x9b\xd6\x9b\x93\xea \x01\xca/r\xa2\xc0e\xaevfO\xd8{\x9dy)\n\\\xf56\xb4\xcc$\xa5\x86\xf8seV\x7f\xb8\x80\xbeJV]h\x12\xdf*\x91\x8b\xd3-f!\xed\xf4\xb3WOw\xeb 8\x99\x0e\xa8\xe3p\xa76\xa9\xbcgG\xcf\x9aJ\x1d\x82\xf6\xd2<\xc0\x92\xbf\x19\xf2\x18\xa1\x8a\xa9\x9f\x93\xa3\xd7\xc8\xd1\x9b\x94\xff!\x94#t\x0b\xea\x04$\xb0\xee(\xcf\x0dR\xbf\x1f#<\xf5\xb4\xbc\xd5$\x89D\xc88\xae_\x1e\xf2\x90\x9c\xe1$\xae\xd5Q\x8b\xa8\xb2qG\x0e:^\xb0\x08\xeb;\x1d\xc0K(\xb3\xf2\xce*\xbf\xee\xd7\xf5m/`\x97urt\x87=\xc4\n\xc0\xb1w\xc6?\x8c\x80g\xc5z\x89\xe0w\xda+\x0f\x0b\x19\x0d\xa0\x02\xf6\xf3\xc8\xc5C\x13z\xd8\x87\x1eZ\xc7\xbf9\xa0\xa0,\xdenU\xad\x8f\x8b\xdbb\xea\xe9C\xdd:\xf2\xa4.\xf4\xee\xf7\\\x0e\x9b\xd5\xeeQ\x1b\x11-\xb6\x80\xae\xc9\x16\xb5\xd2\xef\xbc3\x16\x83\xb1\x03xay7\x9f\xdc\x9f\x02\x98u\xe7v\x824\xe0\xe80\xa9\x0b\x93:\xdbZ\xcf#G)Qh\xcc.\x9bF5\x07O{w/\xc1\x95\xff2\xaad\xc1`\xb5\x1c\xae(\xd6\xef\xe4\xcb\x9d{\xc5\xc0\xc2.\x8d\x93u\xc4\x1dd\xb5\x86\xcc\x01\xb7\xa1;\xea\x8f!\xf3\x92\x92\xe7\xaf\xdbST\x057T\xd9\xebt\xa5\xcd\xd3\xe0i\x01\x0e\xbd6\x7f\x8e\x17U\xc8\xa5,\xeeK\xbba\x80\x0e\xf2\x14rN\xf8\xa4\xa6)M\xd4\xcf\x1a\xbb\x912w\x88\xd7\x040)\xd0&4\xd1\x9a\x97\xe3\x01\x9c\xc0\xe4\xa1\xc1\xdeo(\xd2\x89-\xa7\xe6d\xdc\xe1M)a\x1dl8E3#v\xcd\xcbc\xffV\xb4\x13\x1d\xb7bH\xeb\x8f\x8e\xf3\xc1\xbe\x94\xae\xf5&\x9a\x84\xa0\x08\xa3\xd9\x1b\x90R)Q\x1c\x87q\xc2\x0e\xa8\xd4\x06\x18?Y=y0M\x9c0BIg\xd5{\xfa\x94\x9f\xb3\xd2\\\xb4\x90\x1f\x8b(\x1b\xaa1V\xe9\xc1\x0eXu$\xe2\x92\x9acc\xf4)b^\x80E>\xe5C\xd2\xea\xfaZ\xebd/\xf9&\x15-v\xf9;\xdb\nx\xd3\x0b$e\x8fl\x08\xdf=\x7f\x92]\x05U&\xc4\x8b\x9f\xc0M/\x86\xae\x882\x9f>P\x9e\xb4\x06S\x90\x8c\xd6a\x8f\xba\xac\xa44P+\xb99t\xc7\xb1\xf0\xb7\x03x9\xad\xbc\x971\x02\xeej\x8c~\x9a4\xaf\xc6\x02\xdfAV\x00\x0d\x9e\xd6hH\x0d\xfav\xe0\xff\xb4,\x94\x9d\xee\xf2kaq\xb7\no\x9aTZ\xe5\x1d\xf9J\xef\xff\xbc\xfc\xdb_;I\xb8\x8e\x1d4\xb3\xa3\xc8\x0b\x96\x9f\xee\xde\xfd\xd20\xea:I\xd2\xf5\xed\xe8o/\xff\x7f\x01\x00\x00\xff\xffPK\x07\x08_;\x94/\xe8Y\x00\x00\xa8X\x02\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xbdY\x97\x1c7\x92&\xfa\xae_\x81\xe1C\x8b\xecNFj\xed\xd3\xc3\x19\xf5\x19*EUe_\x89\xcc\xcb\xa5\xe6\xce\xd4\xa9\x93Dx \"\xd0\xe9\x01\x84\x1c\xf0\\J\xad\xff~\x0f6\xdf\x02\x9b{x&S%\xb3\x07)\x19\xee\x8e\xc5\xb0\xdb\xf7\x99A\xdc\xe0\xcd\x86T/\xd0\xe7_-\xbe\xf8\xfc3\xca\xd6\xfc\xc5g\x08I*K\xf2\x02\x15\x98I\x8e\xce\xb6\x982\xf4\x1cm\xde^\x9c\xa1?aIn\xf0\x1dZ\xf1B|\x86\xd0\x8a\x88\xa2\xa2{I9{\x81^\xa2\xb7\xaf\xde\xbdG\x94IR\xadqA\xd0\x9aWHH, \xfa\xa5&\x15%\x02a\xb6B\xb2\xc2L\xe0B}\xa3\x92\xb8&\x95\xd0\x9f\x7f\xb9\xf8b\xf1\xc5g{,\xb7B\x95\xe1T\xe7~J\xf6\xbc\xd8\x8a\xd3\xeb/O\x8b\xba\xaa\x08\x93\x97\xfa\x17\xf5\x06B\x1b\"\xcd\x1f\x08\x89z\xb7\xc3\xd5\xdd\x0btf^{\xa5\xdeB\xfb\x8a_\xd3\x15A\xf6[\xa4\xbfE|\x8d\xc4\x9e\x14tM\xc9\n\xd1\x15aR\xfdY\xd9\x94\xf8\x9eTX\x95\xee|\xd5O\xcd>\xaf\x88\xd8s&\x88pY#\xf4\xf9W_|\xf1y\xfb\xcf\x03\xbd\x88\xba(\x88\x10\xeb\xbal\xbe^t\xde\x16\xc5\x96\xecp\xf7{\x84\xe4\xdd\x9e\xbc@|\xf9\x9f\xa4\x90\xbd\x07\xfbJ\x15P\xd2n\xfeF<\n\xea\x8aIQ\xc8\x8a\xb2\xcd\xc1\xc35\xafvX\xbeP\x8d\xf7\xaf\xdf4OWd\x8d\xebR\x86k\xc6P\xcd\xc8\xed\x9e\x14\x92\xac\x10\xa9*^\xddg\x05u\x06\xa3*V\xf0\x15 }\xa0\xfa\xe9\xa6i\xf5V:\xaa\xf8\xfa\xab\xc1\xd3\x1d\x11\x02o\x82Iz\xcb\xb0\"\x12\xd3\xf2\xa02\xee\x1b\\U\xf8\xee\xe0\x19\x95d\xe7\xf9$\xa26#a\xe5\xb5\x9f_\xd6U\xe9\x7f\x9a\xe8$J\xaeqY{\xeao$\xf9u\xab\xdd\xe5\x9d$\xf6\x95=\xae\xf0\x8eHRu\xca\xfc\x1c1\xbcS\x8d4\x1c\x9dJ({\xa1g\x94\xae\xda*\xf2KM+\xb2z\x81\xd6\xb8\x14\xa4\xf3\xc4S(\x897\xbd\xbc\xfe_\x9b\xd8\xc1\x9cc\xfe\nO6z^8gk.\x9a\xa9\xa6\xaa\x19\xa3lc\xa6\x1a\xfd\xc8~\xd4\x9bW^\x0d\x9f>\xdaY\xa5\xab\x82\xae|\x8a\xde\xdb\xf6\x86\xc9=PH\\\xc9KIwst\xe2\x15\x96\xe4\xb9J\xcb\xfb\xde\xaa6\xed=9\xa3\xc4\x84n$\x99Jhr\xefJ/\xa7\xcb\x07\xd4\x91\xc9\xb0\xe05\x93\x94mL\xced\x15\xcfv\xc9yI0\xcb\xae\xc8\x96\xd0\xcdV\xceP\x15\x9f\xfe\xf6xCY\xa0\x99\xa3\xbd=\xde\xd7\x19\xb9\x95\x97W\xe4.<\x8bG\xcb\xec\x99e\xfb\xd2\x9bJ\xfe\xeby\xa0\xe2\xae\x14\x88\n$\xb7\x04\xa9?%GK\x82\xf6X\x08\xb2R\xff\xb8\xc0\x1b\xf2\x96\xfcR\x13!\x17\xe6y 1=c\xebdT\xb2Jq\x04\xed\xb8\x90\x88\xac\xd7\xb4\xa0\x84\xc9\xf2n\x81\xce%\xba\xa1e\xa9\xf2 \xbb\xbd\xbcCt\x1dj\xb8-\xa9\x08\xc2\x15A\x8c\xa3\x1d\xaf\x88\x9a\x05\xebR\x8a\x85o\xe2\xe1\x12\x07\x16\xbdle\xd6\xe1\xf1c7\xcc\xff\x1eR\xa4\xce^kQ\xff\xc1\xea\xdd\x92Tj\x1fj\x8b\x8c\xf05\xa6%^\x96$\\\xdf\xae\xa2\xf5\x80\xb9\xd4\x89}\x16x\xfd\x06\x0b$\x88\xa6\xcb\xce\x17J\xa3\xba\x87r$\xab\x9a\xa8\xed\x0d\xa2lE\x0b,\x89\xe9\xb6\xad\x06\xf5\x8b\xb6#u\x93\xa3\xac(\xeb\xd5`\xd5\xc7&\x17\xd5:\xbe\x16\xd33vg\xab\xb4\xe6U\xa7Nh0\xb9|8\x17\x83\xd6\x1aT\x81\xabA\xa0\xd6R\xb3\xb6\xea\xe1\xd5\x8eG5\xe4\x16v4\xd1\x0d\xe3\x15\xe9W\xc0\x8d\xc6~\x16F3\xc76\xec\xf0\x84\xe3i\xc0\x8a\\\x93\xaa\xf7i\xac\xf1\xec\xdb\xc3\x86\xa3\x9d\x0dhE\xfc#\xa1\x97\x8e\xca\x83\x98\xdd\x18\xafV\xa4Z|\xd6\xaf\xfe;\xca\n\xf2\x02\x15\\\xec\xb8x.VW\xe8\x8b\xc57_\xcf\xaa\x8d\x94\xed\xa6*\xbe\xfa\xe2\xf4\xfa\xcbS\xbd\xe4EL7\x17\xfa\xb9\xaamE\xc951s\x84\xfe\x1a\xed\xf8\xaa.\x89Y4\xfd\xd6\x9b\xb7g_}q\xd1}\xfch\xcd7]5t\xe5\x88\xb3)aj\xf4]j]\xc5\x8eT\xb1sz\xfa\x8c\x81\xba\xdb\x16\xd55M\xb6\xba\x99\n\xce,l\xa0\xa6\x853\xdd\xdbP\xc1)\x13\xe8\x7f>\x7f\xfe\xef\x81\xd4t\xab!\xc9\xaf\x08\xf3\x9e\x11]\xbd\xaew\x97[\xce\xaf>M\xd5^\xfd\xe5g\xa4r\xb7\xcb\xbf\xae\xa8\x1a\x9e\xcc\x14?\x90\x9a\xae\x94Yo\x8c6B\xa7\xc23N\x99Z\x824\x08\xb3&U\xe5v_\xef\xb5Z\x90\xdcV\xbc\xdel\x11F?\x8b\xcd+}\xc4\xaew\xefo\xc3\xa7\xfa\xc0\xc9M\xc9\xcfz\x18\xbd\\\xad*\xb5\x19q\x89!l~8l\x01{\x88\xb6\x03\xd3\x9cSS\xc3\xd2H\xdc\x9a\xa1g\x08\x93j\xef\xd0j\xd6(\xf3o\xd5\xacz=Q\xbf\xea\x0fNm9\xde^\x9c\x0d\xd2\xdb\x11\xb9\xe5\xab\xb6\xfcp\x84;P\x10\x1c\xe1f?\xc2\xe5\xae{z*\xb8\xdccZE\x16?=\xda/\xd4;\x9d\x05\xb0\"\x1b*$\xa9\xb4]O\xcd':\x11\xfbio\xfdk?\xb7O\x1f\xed\xf2w\xa0\x8d\xde\xc3O\xd0\xb5t;]\xda9\xf0\x88\x1eb'K\x9b\x90Z\x06\xcd\xf2Vp&+\\HSs\xef\xc7+\xc2\xf8\xee\xf8\xac\xcd&\x0f-\xb1 &I\xb7\x0f7\xdb\xc8\x1d\xde\xefuO\xf2\xabA\xafxG\x18\xfa\x9bb\x88-\xbf\x11\xb6\xc3\xaa<5\xf6f\xd6S!\xb1\xac\x85\xf7s\xa7\xa6K~\xc3\"hR\xc2\xac\xeb\xf6\x14:\x91\xa6-^\xbd\xfe\xf03z\xfa\x05\xa2\xec\x1a\x97tu\x82\xbetKa\xa1O 'h8a\xb6Bn%\xa9\x18.]b\xcf\xa67\x13au\xb0\x95\xd5\x04\xf2\xe6\x7f\xbf~\xf5\xf6\xf2\xc3\xebw\x17\xaf\xce\xce\x7f<\x7f\xf5C\xf2\xdd\x9f\xdf\xfc\xf0\xe1\xa7W\xc9\xd7^\xfd\x7f\xef_\xbd}\xfd\xf2\xa7\xc0\x8bn\xb9\xcc.@\x1eV\x81\xd0\x1b\xdd\nD\x9bQ\xb0\xb4[\x07\xdd4bK\xf7j\x88\xe0\xc1 \xf1[\x8b\x8dx\x14\xe4)r\xb3M\xc1\xcc\xb5\xf7i\xc7\xc6\xae2\xf7m5\x07y\x18\xc5\xbe\xe8\xfd\xcbnz\xd49\xf5F\xa5\xb5\xbc;\xdc\na\xd3\xa12rpm\xf2\x02\xb9\xbf<\xe9c\xd6\xe9\x7f\xe1\xa4s6\xb8\xcd\n\xd1W\x90\x90\x98\x15\xd6FP\x91\x82W+\x81\xb0^g\x82\x18(g\x82\n\xa9O\x9c\xaa\x01\xd5\x1cs\xed\xc7\xb4\xdcA@\xefq1[5\x9bf;;\x046\x9e1\x04\xafW\xd5\x8e\xa9\xa1\xbb9\xedY z\xbbJ\xcf\x16w\xfa\xa9\x0b\x10A@\x04\x07\xf2 \x88`|\xb4\xeb]h\xbb\x1d\xcc:_\xf9\x928\xed\xecH\xd5\x89k\xf0\x0e\x1c\xb9\xe0\xc8\xf5\xf0G.@\xcdF\xdbj\x015\x03\xd4\x0cP\xb3V\x005\x03\xd4\xec\xf7\x84\x9au\xece\xa7\xbf\xea\x7f\xfc\x96aE\xec\x18\x11\xb1\xdf\x8ch?\xf5[\x11?s5z\xf4F\xc4\xd0^i\xd2\x89.\xc3\x14\x98\xdc\xb7L6\x03F\x8c\x80\xb9\x99\x1ea\x00\x8c\x9a\xff\xd2\xc6\xbf#L\x7f9\x86\xbf\xd4\xd9m^\xa3_\x9e\xc9/\xd9(1s_\xbe\xb1/\xcb\xd4\x97e\xe8\x1bi\xe6\xcb3?\xcci\xe2\xbb\x7f\x03\xdf}\x9b\xf7\xe67\xee\xa5M{3\x19\xf6\xf2\xcdzS\x8czcl\x163\x98,\xc0b\x01\x16\x0b\xff\xf3\xc7d\xb1\x18\xee\x04b\x83\xc4\x8c\xad\xd6\xdd\xca\x9d\xa8 \x95[bH\x12[r\xdb\xee2:\xfb\x0fMb9\xa0\xaa\xd8a\xd4\xfb\xed,\xb0\x7f\xe8\xbcD\xb5\xd9]n;?\xb5\xfb^\xb5\x19\xef<\xf0h,\xb1\xeb\xa5l]\xea\x1c\xb5{1\xad\x8aZ\xfd\x93m.E\xbd\xdf\x97w\xe1\x8dog}:k?{\xa7\xbf\x1a0\xca\x86\xa71\xe9x6X\xea\xd3C\xe7\xf8\xd5\x94\x803\xf4\x94.\xc8\x02\x91[u\xdcS\x93d\xcd\xae\x89\x90nK-\x9e\xb9)\xa1\xef\xac<,\x8b}\xe9\xd1n\xacC:\xef\x8a\xdd\x8c\x19=\xe2\x9d;\xe9\x1a\xb6\x17e]\xad\x1d~;}s>}\x7fl\xca8\xe1\xd3\xf4\xe2\xfb\x03)\xf4:\xd8,\xbdv\xa0\xdeP\xb9E\xb8\xbf \xd7k%Z\x91\x82\xeez\xd6\n'\xa6\x98\xc3\xa3\xa8\x91\xd7o\xde\xbfz\x81\xdeo\x89S\xf8\x9a\x92r\xa5\xedmL\x15\x02\xddli\xb1Et\xb7/\xc9\x8e0i\xbazQ\x0b\xc9w\x9e\xe4\xccZ\xe8\xcbH\xd0\x0d\xc3\xb2\xae4\xfb\xc4\x8ck\xb5W\xd9\xf0\x0d\xdfW\\\xf2\xc8\xb2\xee\xa7y\x1d\x0c\x81\xe9\xcb\xfb\xe1\xc8~{q\x06\xeb:\x82u\xfd\xe1\xd7\xf51\x0b\x99q}\xddQ&/\xb5O\xbah\x90\xed\xa0\x07\xfb\xcf\x94\xc9\x0b\xf7ng\x01sa3Tb\x8dO;jR55\xf5.E\x87\xc9\xda\xb7\x1e\xedZ\x14V[W\xd2s\xb4/\x1d7\xf9\x0c\xf5\xb9W\x87\xd9Nh\x91\xae\x04\xb4\xdc\xca\xefgq\xcb\x98\xb7\x0f\xfb\xcb\xf4\x89\xdb\xd3\xa5a\xe6\xb6\x023\xf7#\x9e\xb9\x9b\x7f\\VX\x92\xf0\x9c}\xee\xde{\x8b%\x19\x9c7\x9a4\x90J\xc3\x1d\xc8\xdc\xc4\xb3'\x15m\xc7@o\xc6\xee%j_x\xb4\x93\xb5OS]\x89\xb6\x95=Qh\xfd,\xef\xec^\xb6=\xab\x99\x83\x08\xa2\xac\xa8\x08\x16D\xe8\xdd5e\x1a\xf85\xfa\xeb\xa5\x98ak\xea\xa9v\xfa\xbc\xd6o\xa1\xc1+0\xc3Y\x81\x19\xee\x11\xcfp\x93\x9c\xf2\xec\xb0$\xfa\xdc\xdfl\x9d\x1aKW|6\xfb}{\xe9\x0d\xf8\xa7\x07\x8eQ\xad\x16\xdcLo\xa0\x83Yw\x8bz/;}\xcb\xd8\x9ap\xd4\x04gM7Hr\x9d\xae\xe7}r\xbb\xe7\x8c0IqyY\xe0\xd2\x19w\x02y\x9b\xa4\xafqE\xf1\xb2$\x9a\x97\xe2>\"\xdd\xa4\xda%#R\x87\xe0\xb8L\xa9H \x0e=\xc8\xd0\x10j\xabB\x19\xd5\xe5\xd5#5\xf0r\xd0aa\\V\x15Y\xd5:\x0e#Z\xe3B\xf2\xc3\xb9\xd4H1On%g\x1b$I\xb5K4\x05BK\x13\xf0\xe5R\xe2\xaa3I\x1c\xca\x98\xdcm\x9a\xc8\xa4\x19x{\x87o/uWbEp\x92\x1c\x97\xed\x0e\xdf\"\x97\xa2\xe7\xddv\x1f\xb3\xa2*\xc1e\x9d\xec\xea\xed\x06\xaf\xfbI3\xfc\xd5\xb2\xb82\x07\xbc\xfb\xea\xe8B\xe2+\xd5<\x15\xb9\xc1\xd5*\xf8\xda8EE|l\x0er\xecO\x81\x15\xdf\xf3\xeaP\x07\x91\xe4\xcc\x0bfJ3\x96x\x1at\x98Ub\xf8\x0c\xb8,y\xa1c\x02a\xe1J\x84l\x89B#\x87\xefv5\xa3\xf2\xeer\xcfyp\xd1\x9eQQ\xa7\xa7\xa8V;\x9cK\xca\n5\xef\xa9%4\xaa\xac\xa4\x96\x0e\x95\x15\xd3T\\\x8f\xa7\xa7\x07\xaa\x94\xdc\x9eZ\x9a\xe2:\xec\xdb J\xb1\xe4\x8c\xbe\x0e+\xfc\x1d\xfa\n\xfd5\xf2\x1dBO[\x03\xb31Z\xab\x06x\x86\xbeCO6Tn\xeb\xe5\xa2\xe0\xbbSCo9mYY\xa7\xea-\xb1\xf8\x81\x14ONr\x93gu\xa9Yw*\xf1!Ok(\x7f\xfb\x1f\xb1\xda\xf6\xfb\xd2}\x0c\x01$y\xac\x00\xbevk\n\x85T\xa1<\x1f[\x9f\xfaf\xd2\x8a\xed 2\x18?\xa3\xdc\xe9\xdb\x99\x12\xb3\x15\xda\xe2R\xbaC\x9d%O\x87\xe6\xb7+\xba\xdf\x93\x95\x89!\x18q4\xf7\x1f\xf6\xc0\xd1\x1c\xces\x8d\xa4\x16\xd3\xdf\xfdyN\xdbC\xcc\xdb\xde\xf3\x9c~\xeeA\x14\"\x86\xa8\x8b\xae\x8d\xe5\xf1\x9e\xd8:5\xefJT\xe7 \xbf\xb1\xfei\xcf\xa8.\x85\x1c\xc4q\x82\x9c\xf9J\xe73j\xbe2%\x83\xf9\n\xe6+\xdf\xf3\xc7<_\xf5\x97\xf6\xf0\xbc\xf5\xce\xbc\xa7\x91$\xbf9\xaae\xf4\xd84m\xa0l\xef\x94\xd6K\xce\xbe\xf0hg6\x9f\x8e\xba2\xdb\x0c\xd7\xaa\xd0d\xd5:\xc1\xb4;7{\x1a\xd8b\x81\x96\x84\xe83\xaff\x8e\x8f\x9e\xe6zM\x905\xdb\xf9R9\xed\xb7\xe4\xe0\x15\xb0\xc1[\x819\xf0\xb1\xcc\x81DnI\xa56\x0d\xa7\xe4z\xa7f@K\xfd>\xfd\xd5\x1e\xb0#\xee=\xd6s\xa1syK'\x88W\x9fA\xde\x9b\xed\xecw\xf6\xd1\xa3\x9d\xe7\x96\xb8\xf4\xdb\xf9\xa2M\xd0+\xaaM\xc2M#\xee\x9f\x8e\x05\xfb\x97\x9f{\x94\xbc\xa1Q^\x8d\xac\xcb-\x16c\xefj\xe9\x15\xa1I\xc4\x15bKn\x9f\x9b\x1e\xa2&\x14\xf5Xw\x14\x81\xd6\x95>\xea\x13\xf4\xea\xcd\xcbaQ\x18\x1f\xaf\x89QS=\xef\xa8\xc9\xf6\x9d\xcf\x05\x12\xe4\x97\x9a\xa8'f)\x18=\xa9\xdb\x9e\x965\x9d\xdb \xbc\xdf9\x9d\xc0\xccm\x05f\xee\xf8\xdc\x9b\xe6\x7f\x19y\x89>\xbc\xfd\xe9\xb4\"\x82\xd7\x95\xea\xdfxg\x9dcjF\x7f\xa9Iy\xd7\x92\xeb\xed\xae\xd2\x80c\xc1\x04\xd5;\x82T\x14\x97\xf4\xef\xc4\xcb\xa55\xa2\xcd\x8e\x05/\xd1\xb2^\xafI\xe5\x1am\x81\xdeo\xa9p&\xd3]-tlI\x89)C8\x84\x86 T\x12,\"\xf6^\xce\x08zr\xfa\x04\x15[\\\xe1B\x92j\xa19\xc3%\x16\x12 \xb2\xd9\x91\xd6)\xf9\xc3\xdb\x9f>\x17C*\x7f_t\xa1*\xb2\xaf\x88 ,\x92\xabJn]\x97\xe5\x1d\xfa\xa5\xc6\xa5\xb9\xc4K\xeb\xd7\xf9?+M>\xc5\x02Q\x16N\xe4\xa3*\xca\xe9\x86\xf3MI\x16Zg\xcbz\xbd\xf8\xc1\xde\xd8\xf2\xf1\x99\xa9\x89N\xb6\x8d\x8f@C\x80\x95\xf6\xc1\xc6\x8c3Z\xe0R\x8f\xa1p\xceO\xc9b\xb38Q\xaa\xd5x\xd4\x93\xc5\x135m1.\xd5\xbcH\xf6\x92\xac\x9e\xf9I\xd9F\xce\x19\xda+e\xd3\x82\x9c I\xf0N\xa0Z\xd4X\xa9c_\x91\x82\xef\xf6T\x9b>\xad\x81vI\x19\xae\x0eG\x98\x13\\\x96Z_\xed\xde\xfb.\x9c\xb5\x99\xeb\x10\xd5\x9e\xd0\xb5\x9an\x995\x023InuS\xbfdw\x0b\xf4g~C\xaeIu\xa2\x14\x11L\xec\xc3\xdb\x9f\x84\xa5\xde\xa8\xa4\"aD\xed\x0cJ\xd0\xc7\xad\x94\xfb\x8f'\xe6\xff\xe2\xe3 \xe2\x15b\xdc>=\xd1\xbd\xb1\xc0\x0cq=:\x95F\xc2 \x12\x89\xea=\xc2\xba\xee\x91|Iu\xad\xbd]\xb0D;\xbc\x17\xa6k\xe9\x92K\xde\\*\xa1-\xf1T\xe5)\x10\x0e!Ajf-K~#^D\xda\xf6\x9f\xd1\xf9\xba\xad\x91\xea\x16\xf6R\xa9USi\xcd\xc1\x17\xa2\xde\xa9#P$\xa1\x97\x0c\xfd\xf9\xfd\xfb\x0b\xf4\xa7W\xef\x11gn\x08\x9a1v\xa7\xc9\xfc8\xf8\xf5_\x87\xc3\xe2\xfd\xdd\x9e\xfc\xed\xaf\x7f\x0b~\x80\\4!f\xfb\x9b]Ft\x0b\xed+\xbe\xaa\x0b\xa2\xfd\x0f\xd5\x12vHMp\xf2\xcf\xe8\xe5~_\xd2\x02[]V\x06p\xb81pC\x81\x0b5\xb7p~U\xef\x91\xf3\xbf_b\x11\x819\xf8\xa1+~_>\xbc\xfdI\x97q\x8b\xafu\x17\xdcu\xc6\xd0\xca\x0c\"\xec\xaa\xa4\xfe\xbe\xe6t\x850\x0bw,d\x0b\xa8\xa7\x8f\x8a\xacyEN\\\x02*],\xe9\x92\x96T\xde!F\xc8\xcaE\xd1\xd0S^u\x1d\x05l8S\xd3,\xdb\x18\x8a\x83\x1e\xb3\x0b\xf4\xf4\x83 \xee\x02E\xa5%\xd5=\xd5\x9ce\xfa'fx\x13\xab\xfd\xb2\"\x06\xc4\xb4 /\x9e\x85{\xd4k.\xc9\x0b$\xd5\x1a\xb2\xaeYaF\x98\xaa\x87\x9d\xbb\xac}\xb2\xbc\xeb\xc6\xad\nO\x97\xaa?r\x1dg%\x1c\xae\xca\xaee\xcbz\x8d*\xa2V\"r\xa2\x81\x1c\x13\x9bDe\xaa\xe3\xbb\xe8\xed\x9d\x1b\x97\xc1\xa4t\x14\x1d}/\xdb\x0d\x95\xdb\xc8\xe2r\xb7'\x0b\xd3\xff\xf1\x9e\x8aE\xc1w\xb1\xd9\xf8\x9d\x1e\xa9\xc2\x84\xce2\xf1b\x06\xb3\x14zj\xb7\x9f&\xd8\x89\x19\xda\xa1\xa8\x8e\x08\xed\xe8f+\xd122)\x99\xa06Tv\xdco\x8c\xa9\xc4^iY Av\x98IZx\xc3\x9e\xdd\xcb\xf1s(\xb9\xbb\xa4\x9f\xd5t\xb4$&\xde\x0b]u68\x07\xfb\x18\xbb\xb8\xe3%\x0fE\xffS\x13vs\xab\xa7nG\xcf{9%\xfb\xf8\x92\xdd}t\xdb#}\xec\xc5\xd5\x92\xcaJ\x0d\xe2p \xbdI\xb95\x02k\xf2\x8bq\xd3\xf27\xad\x9a\x9d\xf5BcJ\xb8\xeco\x0b\x07\xdb\xbffW\x17\xe8\x9a\x17n\xe0\x94t\xa9\x8bm\xd7\x11\xa1\xc9\xad\xbc\xd2+\xf8\x1e\x17W\xa75S\xffS\xeb\xb6\xe9\x17\xfe\x11d\x17\xfa\xf0\xc6\x86\xafQ-\xcd\xc4\xe6\xa6\x07\xa1&V\xbcZQ3W\xa0\x0da\xdag\x7fe\x0fZ\"\xc6@P\xe51M\xe8\xcf\xef\xd5-V\x9d\x1f}\xf9\x02]\xa8\xf2\xaby\xc1V\x057J\xa7\x0c\x9d\xfd\xcb\xbfD\x96\xc9\x1f9Gk\xce\xd1wh\xb1X\x84ovR\x85\xc1\xec.\xfc\x02fw\x0bU\x8c\x1f+\xbe{\xba\xe6\xfcY\xf8\xd5\xc5\"\xbc\xfe\xd15z\xaa\x92\xfa\xa0+\xf2\x9e?\xfd'\x95\xd6\xb3\xe8EU\xb1\xf4~\x8b\xeb\xee\xab\x84\xee\xfe\x03_\xe3\xd9\x94\x87\xbe\xd3{C\x95\xcb\x0c\x1a\xa2\xe2\xe9\x8f\x9c/\x8a\x12\x0b\x91P\x90)\xa2\xfa\xc8\xd4\xb1\xf3a\xb8\x0c\xbf\x05\x9f\x9c\x9e\xaan\x9dW\xc6wxG\xd4\xd6\xe9\xa5)\xed\x86\xc8\x1f\x8cI\xe1\xdc\x86Kx\xfalJ\xe1\xbd\xe9\xc4\xea\x12\xed\x05_'z\xc1\xc5\x9d\xdcr\x16\xe9\x07\xa6\x8c?r\xfet\xb1X\x84\x17\xb6\xa6\x0f<\x8d\xbe\xa3\xc7\x91\xee!S;\x88J\xe4\xdch\xfc\x87W\xef\xce\xde\x9e_\xbc\x7f\xf3\xf6Yh\xbdC6[3\xe6\xe2\x19\x9b\xac\xa3\xda\xfc&\xa1\xcd?\xc5\x186J\x93/\xbeC\xff\xb4_.~\xe4\xfc\xd7\xc5b\x11\xee\x87\xaa\xd0'jC\xad\xbe\xc0\xecn\xbf\\\xbc&7\x89\xf2\xd3\xb5\xfe\xe2\xbf}\x87\x18-\xe3\xf7\xdf\xc5\x94\x1c\x19\x1e\xf1\xef\x06\x15\x8c$cKj\xea\xb6\xf8\xc0v\xb8\x12[\\\xbe\xe7f\xf2\x98\xab\x1a\xdeg\xef5\xaf\xba\xb8j\xd6)w\x08C\xcb\xbbvK\xeaVV\x13\x9a\xd6\x7f\"p\x11\xedj\x11\xd8\xcf}\xee\xd9n\x9e\xae\xeb\xb2\\\xe8\x07j+\xff9\xc2\x9d\x9d\x80\xda%\xe8;\xd4\x03\xeb\xa6\xe9s\xfe\xcc\x9ae\x97\x95w\xee\xcc}`Hi\x8e\x10\x08\xaf%\xf1\xe1`F\xb4\x8d\xe7\xf3\xd3\xcf\xfdY\xd9\xfd\x82+\xb2\xb6\x04 b\xc7\xc8\x935\xe7\x8b%\xaeteoO\xef\x16\x7f\x7fb\xb4\xa8\xcf\xa5\xde\xf4\xc2\xc7t]\xd4'*\x8d\xd0V\xe1?\xde\xbdy\x1dx\xa4ZZ=n\xadNf'\xcd\xd5,b\xb7\x81\xe6d[\x0b\xe2L\xcb\x9b\xba\xc4\x95?\xbd\xc3d\xd4'+\xd2n\xdcN\xdaK2\xed\xacpb\x0e$\xbe\xe4p\xc0~\xd5\xd9T\x19\xbf\xfc\x8f\xffK)\xe8\xa35\xa74\x1b\xd7n\x13\xf8\x87\x81\x9d\xb6^D\x8e`\xb8\xb8RsWk\x12X\xd3\x92\x84W\x1b7\xd7]\x90Jp\x16\x1d\x9c\xd6\x16\xb9\xa6\x95\x90\x97\xba\x1d\x13\xf7k\xda\x0fT\xd7s\xef\xfbo\xd7\xd4\x12\x18\xddJb\xa5z\xa2u\xf9\xe4\x05z\xe2\x1b\x9b}5,L-\xa3l\xd0'\xba~\xaf\xf1N\xa5\xf9?M\x15\xfe=\xfa\x81\xaa\xdf\xe0\xfd\xb1\x95<_\xdb#g\xbf\xaf\x99\xde@\x05\xba!e\xf9\xfc\x8a\xf1\x1bG\x8d\x14\x08\x87\xc37\xb81\xe4{\xd2\xef\xf2'.\x00To\x1c\xb4\xd1\xbbmqT\x07\x0e\x1c/\xb1\xe9\xd2\xfe\xcc>\xea\xc1\xe8\xfa\xf9\x96\x97\xabn\xe0 3\x94)k\xc6\x87%\xa9\xfa\x932C\xc6\x9f\x8f.\xc2\xa2Y\xd4\x9f\xaa\xd9\xcb\xa9\xf0\xc08\xe6l\xc6\x7f\xfb\xeb\xdf\x9eE\x06\xd2\x1c}\xae\x9fa\xbc\xdbiU\xa9$\xbf\\|\xf5\xe5W\xe2I\xa4\x0b\x99\xff\xc7B\x0792v\xfbU\xef\x1c\xed\xa2\xffX\xf8\x8d8\x90xKn\x9bg\x92w\xc2\xbd[\x04P-\x0b\xdd\x89\xe9\xbe\xa2\xfd\x1c\x80\xe0\x16\xa8\x159(x\xc7_\xfd{\x8b\xef:@|\x80\xf9b\xe4C}\xf5\xda\x87\x91\xa0lS\xb6\x15x%\xb7/#\x10\xba\xcd\xc9>\x02\x08\xdd\x0f\xa1g \xc4V\x91c\x10\xe2\xbe\xee\x9d\x00Bl\x05\x10b@\x88[\x01\x84\x18\x10\xe2V\x00!\x96\x80\x10\xfb\x05\x10b'\x80\x10\x03B\x0c\x08q\xe6. \x10\xe2F\x00!\xee\n \xc4\x80\x10{\x04\x10b@\x88S\xca\x07\x848\xf8\x0d \xc4=\x01\x84\x18\x10b@\x88\x01!\xeeI.Z\x07\x08\xb1\x16@\x88\x01!\x1e\x8f\x10;\x1c\xf0\xd3!\xc4\x82\\\xaeI$\x08\xf3\xbfwqaA~$C\\X\x10\xb4&\xcd\xd1|\x8fu\xfc\x96e\xc9\x8b\xabaTf\xfd\xe3I\xdb3\xa8\xf6\x8d\xa5;Zb\x1d\xcfjM\xc8\x0eWWD\xdap\x08\x9f\x0b\xbbT\x9f\xa0e-\x11.\x05G\xc5\x96\x14W\x02\x95\x9c\xad:q\x15\xb7\xb8Z\xadyue\xef\xc3\x0b`\xcd\xba\xf4\xf6\xd1#\xc6\x9a\xbb-\xd2\x95\xa8E\xca\x85\x7f\xb4_\xbb\x1e\xf8\xea\xfc\xe2\xcbo\xbf\xfd\xefM3\xf5\xbe\xeb\xd5\xcf\xc2\xc8ZG\x0d\x8cln\xfb\xf4'\x05\xf80\xe0\xc3\x80\x0f[\x01|\x18\xf0\xe1V\x00\x1f\x96\x80\x0f\xfb\x05\xf0a'\x80\x0f\x03>\x0c\xf8p\xe6. \xf0\xe1F\x00\x1f\xee\n\xe0\xc3\x80\x0f{\x04\xf0a\xc0\x87S\xca\x07|8\xf8\x0d\xe0\xc3=\x01|\x18\xf0a\xc0\x87\x01\x1f\xeeI.V\x07\xf8\xb0\x16\xc0\x87\xffQ\xf0\xe1|t\xb5\xe0\xab<\xe7\xdb3\xbe\n\xbb\xdb\x96\xa5\xbeJP\xf4\xae\xee\xc4]\xe1;\xb2\x18c.\x0fnn \x1ew\x7f0r/^\x9a\xa7\xf3\x96\xd0\xfa\x15\xf7\xb3\x18\x94\xd0\x16\xab\xf7mF\xcc\xea^g\xccB\xd1}\xa9\x9c\xf6\xfb\xf4\xe0\x15\x08gm\x05\xd0u@\xd7[\x01t\x1d\xd0\xf5V\x00]\x97\x80\xae\xfb\x05\xd0u'\x80\xae\x03\xba\x0e\xe8z\xe6. \xd0\xf5F\x00]\xef\n\xa0\xeb\x80\xae{\x04\xd0u@\xd7S\xca\x07t=\xf8\x0d\xa0\xeb=\x01t\x1d\xd0u@\xd7\x01]\xefI.\xd2 \xe8\xba\x16@\xd7\x01]\x1f\x8f\xae\x7f\xea\x0b\x8f\x89\x90t\x87%\xb9\xdc`\x11\x06\xd5_\xd9\xb7\xfe\x84Ekk1U\xfcH\xe4\xf6\x92\xb4\xcf?\xa2j_ \xbc\xa76\x8d\x1e\x9a\xdeI\xe73W\xabG\x8a\xa57\xfa\xe8J\xd4&\x94\x87\x0bo\xb0\xe8\x05\x89v\xaa[\xa9'\x9fy>\xe8\xe8\xac\x81|\xb5\xa1\x9d\x88^\xbb8]4i\x00j;x\n\xa8m\x9e\xd5\x0f\x01j\x0b\xa8m\xf0M@m\xb5\x00j{(\x80\xda\x02j\x1b\x12@m\x01\xb5\xd5\x02\xa8-\xa0\xb6\x80\xda\x02jk\x04P\xdb)\xc0'\xa0\xb6\x80\xda\xb6\x02\xa8\xed\xa1\x00j\x0b\xa8-\xa0\xb6\x80\xda\x02j\x0b\xa8-\xa0\xb6\x7fx\xd4\xb6\xda\x84!\xdbj#\xda\xf9Q\xa8q\xf9\x9fj\xe8\x1b3\x81[\xbd\xf4O\x16\xd9\x1c\x02\xb5\xbfXt\xd5I\x8b\xd4\xaeq)\x12P-\nY$\\\xd97X\\\x16x\x1f*\xbe}\xdc@\x82f\xc66\xeb\xf6\x06\x0b\xa4\x9e\x19+]-\xc8\xea\xde\x8a>\x00=]\xe1\xf7\x15\xdfsA\xaa\xcb\x04n>|\xcf\xad=\xaa\xe2I\xcdm\xae}5W9\x0dKX\x119r\x9b\x1f\xdd\x80\xc4&\xe2\x8a\xc86\xa6\x93\xac+Fl+\xeb\x8d<\xb9\xde5\x105zjxD\x88W\xfa\x0dOb\xcd\x9eEc\xf7f*\xf1\xd5\xd9t\xe3!\xf6r\xbd\xbb\x1cO\xdbmj\xe7\xben\x8e\xc0\x96bl\xeb\xb4\xbcC\xd7;DnIQ\xab\xca\x0cR\xd9`qY\x0b\xdf\x0c\x9c\xa5\xf58 \xdb\xabw\x97c\xc3\xc2\x10h\xcbo\xd0\xae.\xb6\xda\x92\xa2\xe6b\xd5\x83\xeb]3\x03xR\xe9t\xca\xde\xd3^\x07\xffYl\xdc\xb4\xf5\xfe\xf6\x80\xd5\xadt\xf5\xb3\xd8\x9c\xb6\xaf\xf4\x83{\xb5}\x13(\xde\x83\xa7@\xf1\xce\x99J\x8d\x00\xc5\x1b(\xde~\x01\x8a\xb7\x16\xa0x\x1f\nP\xbc\x81\xe2\x1d\x12\xa0x\x03\xc5[\x0bP\xbc\x81\xe2\x0d\x14o\xa0x\x1b\x01\x8a\xf7\x14\x964P\xbc\x81\xe2\xdd\nP\xbc\x0f\x05(\xde@\xf1\x06\x8a7P\xbc\x81\xe2\x0d\x14o\xa0x\x03\xc5\x1b(\xde@\xf1n\x9fLi\x07\xa0x\xf7)\xdez\xbcE\xc2\xc2]\xe8\xe7\xcd%k\x9az\xd1\x0cQ\xd5\xbe\xb7*%\xb4\xe3\xab\xbalL]}\x96\xf7\xf5\xce$\xf2\x99\xab\xe0#\xe5ywU\xd1\x95~\x177\xfa0\xe3\xd4t\x89\xa6\xfa\x1d\xcd\x1cnt\x82\x05BI\xc8\x98\\\xef.W\x84\xf1]\x18O\x8e\x1aKs\xac\x8d\x9d\\\xba\x84,\xbdy\xe3W\x84!\xfd\x882\xb3\x96j\xeb\xaf\xe4\xa8\xaaC\xc6u\xf5\xe1\xab\xbf\xfc\x8c\x84\xc42hF\xd6D\n\x83Y\xf9v\x86\x84\xe1eI.\x8b\x8a`\x190\x15\xcb$I/\xc5\x87\xece\x82$\xdflJ\"L\xb1\xbb\xe5\xb3\xb0\xb9\xc5\x08\xfdI]\xef\x16g&\x19g}\x8cT\xaaq\xab\x18\xca|U\xd2\xb0jV\x85t\xd1[W\x8c\xa1\xc4\xaas++|I\xe8>Bv\x88\x91\xd3\xa3\xd4\xf4d\xcf\xf6\xcf~}\xb1\xdaj\x0b\xda[d;\xa7\x98W\xe7\x17\x02\xd9K\xf5\xb4B8[S_\xbefQ(\xf4\xe3@\xad\x13-\xd4M\xa1W\x1c5d\xcc\xe2b\x1e\xdaMV \x99v\xbe\x89\xe8>\xc8SIM;J\xb6|\xa7\x963\xbc\xba\xd4\xebY\xd8~\x95\xd1Ti\xb5\xa0\xc3\x1c\x91\xb8\xa1\xb2\xd8\xa2\xa7\x8c\x96\x88q\xd5>W'\xe8\x0b\xf4\x1d\xc2eE\xf0*\x06\x826I\x85\x8cQ+\xcc/U\x82\x0fV\xb9~\x86\xa8\xe0\x95Y\xcf\x0c\x06\xfb~K~x\xf9\x06mq\xb5z\xae\xde\xb2u\x8f\xa4g\x92\xe9\xea&YU\x0b\xbd\xa4*\x1b\xe7=\x8f\xac\xad\x83{\\O\xbf\xd9\x12\x8bTZz\xa9\x03\x84\x04\x8ap5\xd4\xbeBm/\xcdH\xe9i*4\x11\xaa\xdd\xda\x17\x0f\xd6\xba\xbd\xec\xd4t\xf2\xe5\xb7_\x0c=\xe3\xfe\x84\x05\xdaW\xb4 \x0e\xee\x8eXb\xd1S\x8f\xcf\x95c\xb5\x9e\xaa\xe9\xca\xf9Z}\xf9\xed\x17\xcfl\x86\x91\xe4\xfe\xfc\xe3\x88\x0ec+\x13\xf3F\x98_u:7\xa7\xb9?\xffh(\xbfO\x19!+\x0b\xb1\x9b=\xb46\x1eFR+Jj\x18\xdd\xd6\xcc\xb8\xb1JoY\x06\xc1)\xc1l\xf0\xe7\xec2\x9f\xf7\x924\x95\xfb\xf6{\xdd\x0e\xaeA>\x8f\x15\xe6\xdf\xe6/\xcc\xbf\xf5\n\xf3o\xc9r,\xef\xfe\x8e\x99\xa4\xf5n\xce\xa2D\xfb\xc30G\xf4\xbd\xfb\xc1-\x08\x87=9f\x88\xe8,\x18H{:\xda\xd4B\xdd\xa0\xe0\x1a\xd4\x92\x94\xf1}I\x1e\xac\xda\xdel\xd1Y\xef\xd7C\x05D\x12\xf4\xad\x98\x08\x17\x92^c\x19\x1e\x04{\xbd\xa7X\xd6\xd5\xe6\xc1j~\x90%\xbah~\xf14\xb96\xf0Dhnh\xa0\xb4PM\xa9zgY\x97\x0fV\xcfA\x86\xe8\xdc\xfe;\xd2\xadQlN\xefuk\x97x\xa8\xb6\xbb\x9aV\x97\x9b\x12\x17\x94T\x0fVcO\xa6\xe8\x15\xdd?\xff\xea\xeb\x7f\xfb\x06=]\xf2\xdd\x12\xadH\x89\xef\x9e\xf5T\x10I0\xb8\x15Lw\xec%\xa9J\xca\x1e\xac\xea\xbd\xec\xd0\xf7\xfa_\x9e\x86\xfe\xaeW\x9bHz\xdd\x19L'\x16\xaag\xc9\xd9\x8a?\\={\xd9\xa1\x9f\xf4\xbff\xaa\xa7I:TO\\U\xfc\xe6\xc1{\xb4/W\xdd\xa5\xbf\xf9\xfa\x9bo}]:\xd6EB\xea\xc9\xef\xd4\x9b\n\xdf=\xb8\x0e<\x99\xaa\xdd\xc4\xf3o\xbf\xfc\xfa\xeb\xe9\xa3z\xaa\nv\xa4\xda\x90KF\xa4\xd8\x97T>\x98\x12\xbc\xd9\xa2\xbf\xd0J\xd6\x86\x80\x7fe\xf1\xeb\xf7[\x82~V/#\xc9#\xe9\xd5B-j\x08#F\xe4\x8d>\x00\xaate\x80\xd5\x87\x90P{\xd9-\xa6\x0fV\xe1~\x863\x0dq\x97hp/\x86YQ?\xdcd\xd6\xcd.Y\xc3\x0c+\x04g6I\x7f\xfd\xf2\x8c\xb3g[L\xd9\x99\xc7^\xe4\x88\xbbc\xbax\xaf\xde7\x81\x8f\x06A\xb1>\xae\xc8\xb2\xde\\\xca\xe6\x85\xef\xef^\xeb\xab\xc9?\xf6.\xdd\xf5\xbc\xf6g,\xb6\x1f]D_\xfbb\x0f\x10o3\xb5O\x1f-&\xee\xbf\x0c?j\xe7\xca\xb9\x7fV_+;\x84\x9f;\x16\x1a}\xd1\xaf\x1c\xd8S\xec\xb7\xba\xed[\x0d\x1e8\x14wZ\xd4%\xdd$\x03\xa8\xf4\xe0)\xa0\xd2yVM\x04\xa84\xa0\xd2\xc17\x01\x95\xd6\x02\xa8\xf4\xa1\x00*\x0d\xa8tH\x00\x95\x06TZ\x0b\xa0\xd2\x80J\x03*\x0d\xa8\xb4\x11@\xa5\xa7\x00\xbb\x80J\x03*\xdd\n\xa0\xd2\x87\x02\xa84\xa0\xd2\x80J\x03*\x0d\xa84\xa0\xd2\x80J\xff\xd1Qi\x03\x94\x9a\x0b\xbd\x16\xfa\x1f\xdd\xe3n\xefLm\x9ej3\xa5k\x97\xff\xc4\xd7\xd8\xbca\x9f\x0e1\xe8#o\x90\xf4\x97\x92\xee\x08\xafe\xa8\x98\x83\xa3\xbf}\x1b\xf1kRU\xfa\xa0,;\xf7\x976O\xd7\xe8[$H\xa1\xaf\xbb\x1a\x1a\xb7\xd5q\xe9\x9d\xce\xe0\xb9\xb6J\xea\xe2\xa8b\xf6\xde*pY\x8a\x87\xa8\x7fE\xc8-)2\xabo^\xee\xe1\xf4L\xc3\xd7\xaa\xca\x1a\x1f\xb7\xabI\xd3\xb8jL\xab\xc9Xr\xb4\xe9\x07\x84_\xe2\xe2j\xe6\n&\xafw\xed\xd5|E\x85\xbe=PH\xdc\x8b\xd7\xdfS@\xef%\x1b$\xdd\\2X\\\xa1\x02\xefe]\x91ck1\x8c\x0f\x9e(\xed\xd0y:P^\xcb\x99hKl~x\xd02\x93e\xbd \x96T=tQ\xc5\xdd5\x9b\xfb\x8a2\x89x-\xf7\xb5D\xabZ\xaf\xe3\xb6\xc4\x88\xb0\xa3\xaf\x03\xce*uIw4w>\xd0\xef\xf6\xc6\xc3\x0e\xdf\xd2]\xbdC%a\x1b\xb9U\xe3\xc2\xd4\xe6\x04-k\x89\xfeN*\x8ev\x04\xb3\xbe\xfd\xacf:\xa1\xe3\xef;>\x84\xeb\xfd@\xbd\xb7\xe2\xcd\xa4\xb6\x18\\M\x18R\xc6\xd8\x1b\x0c;\xf7\x14\x1e[\xd1\x9c\xa9\xad\xadO\xff6\xc2\xcc\xb6\x9dt\x85a\xffZ\xa3^z\xfa\x0e\xbaOTok\xce\x1d[\xf3Q\xd7\x19v/-\xec%\xd7\xd3\xd3\xb1\n\xc8\x1a\xc2\xad\x06\xba7\x15f\xd6~\x86\xcb\x0d\xa7\\g\xd8\xbf\xb4\xb0\x97\x9c\xbb\xc0\xf0X\xdd\x8d\xeb<\x9d\x9b\n\xc7in\xcc\xdd\x86\xc3\x1b\x0c{\xe9\xf9n3\xfc\x04:\xf86\xde}2\xae=\\|\xfe\xf0\xa5\xfe\xb7\x9cR\x87\xeeG|\xe0\x02\x0f.A\xcc\xecn\x93\xaeN\x1c\\\x90\xe8O\xf0\x81{\x99\xef2\xc4L\x1dL\xbbG1|w\xd1\xe1ET\x0f\xab\x8a\xe1\xed\x88\x99j\x98\xe1R\xc5\xc15\x8a\x0f[\xed\xfee\x89\x99\x95\x9et\xc3b\xb8\xf77w*>l\xd5\x0foM\xcc\xac\xfe\xb4\xeb\x16#\x17\xa9\xfa/b{Xmt/R\xcc\xd4\xc3\xa4\xbb\x17\x83S\xa0\xb9m\xf1a+\xdd\xbdU1\xb3\xd2\x93.b\x0cU\xda^\xbd\xf8\xb0\x95\xf6\xdc\xad\x98Y\xf7\xd1\xb72\x0e5\xd2K-v \xe1\xc3j\xe4\xf0\xa6\xc5L\x85L\xbb\xa2\xf1\xd1\xeb\xc3w\xe9b\xa6F&\xdd\xd7\xd8\xdc\xca\xd8KjxC\xe3\xc3\xea\xa0\x7f\x0fcf\xedG^\xde\x18\x9a\x16\x9a\xeb\x1a\x1f\xb6\xca\xddk\x19C\x15\x9etuc\xe7\x82\xc6\x87\xa8\x11a\xda\x12\xb9#;\xdeK\xbbW\x91\xdeK\xad\xb5\xd2\xfe\xfb!\x8d\x95\xb6$\x15\x91u\xc5.WX\xe2D\x99;o\xb6\x05\xd70\x935X\xf252\xefh\xd7\xa4\x07\xa9\x841\xbc_\xfe\xa7\xe0\xcc\xfe\x14\xaa\xc4\xe1\x9b\xc8\xfc\xaf\xaeH\xcf\x88o\xae\xd0\xc4\x0653\xed~lU\x02\xbdGw\xe0K\x03(\x84\x8a\xdd}\xa7q\xe4P\x05]\xd9\x83\xeb\xbcE\xeb\xd9O=\x80\x82)N\xccD\xd2\xbe\x81\x9en\xc9\xed\xb3\x07(t\xbfp\x92\xee\x82hA\xfb\xc6\x03\x14\xab\xd5\xe5\nK\xf2\xbcW.W\xe4}\xc5\xf7\\\x90\xea2\xe1\xdf:|\xcf\xf9\xfd\xb9\x7f\xda\xda\xa8\x12\x12!\xef\xbdB=\x8a\xb3\xabK\xb1\xc5\x94]\xd2U\xa8\x0e\xc3\x93\xbc}\xbd\xf1\xd9\xd5V%\xf33\xa2+\xb4\xc7\x95\xa6\xb1W|\xe7\xab[/-c`\xbb\xb7\xeav\xc7\xc2X/Zy\x1bv\xa1\xd5^\x96\xefocN\xb3\xef\xdb+i\xd3\xde\xb0\xefo?s5\x05W\xd8\xf1\xae\xb0\xefo\xfd~\xb0\xefo\xc1 V\x0b8\xc1\x86:\xa9\x91\xd8t\xd7\x15p\x82\x05'X\xbf\x80\x13\xac\x16p\x82=\x14p\x82\x05'\xd8\x90\x80\x13,8\xc1j\x01'\xd8p\x9f\x06'X#\xe0\x04\x0bN\xb0I\xf7Gp\x82\x8dh.\xf4\x04\x9c`\x87\x02N\xb0\xe0\x04\xdb\n8\xc1v\x04\x9c`\xc1 \x16\x9c`Cbm\x91\xe0\x04;\xf8\x00\x9c`\xc1 \xf6\x919\xc1\xee\xc4f\xa1 \x1f\x0eA\xe9\xa4\x16;QOEA\x0e\x9a-\x84|LA;|\xa8\xc6$$#\x8aXLF)&\"\x13]\x04\xa2\x97\xde\xe1\xa1}\x02\x021 u\x18\xa0\x0bC\xf5\x0c\x90\x86)\xe8\xc2\x00E\x18\xe6\xd0\xcf`*\x8a\xd0\xa0\x05\xfd\xe4\x0f\xb6$S\xd0\x82\x10*p\x14\x12\x90e\xfd\xcf\xb5\xf2O\xb6\xecO\xb5\xe6\xfb\xad\xf63Y\xea\xe7\xb4\xce\xcfd\x91OY\xe1\xa7Y\xde#\x16\xf6\xf1V\xf5\xa8\xf5<\xc3b>\xd5J\x1e\xb0\x86O\xb4\x80\xcf\xc0\x17:X\x0f\xf5\xe8\xe8|\x15[\x0c'\x1a\xbb[\xa3\xf6\xa1\xda\xe7\xad]\x82\xfc\xa5*-\xe8\xdf\x83\xd5U\xcf\x1a\xa6\x17+\xb8\xda\xe95>\xfb\xeaY\xcb\xc7s|'\xf4\xf4\x87W\x17o_\x9d\xbd|\xff\xea\x87\xa3 \xbc\x07,\xcb\x86\x9b\xc7\xebe\xe9\xafO\x8c\xe6\xa8 \x8e\x9e2S\xa6\xef\x9c0\xa9\x1f[\xe8H\x07[W\xbd\xddx\xacki\x06\xdd\xf0b\x0cA7\x8cT\xed\xbd\x19\xbdb\x9b\x0d\xd2!%\xb1\x99\xf0\x05*\xb6\xa4\xb8\x1an\xb8\xf0F\x1d-\xa5\xe9\x9e6\xe5\x15\xa9\xe8u\x97\xc7\xa7r\xc6\x9a/\xfc\xf4/'\xe8\xed z\xf7\xccrn\x0f\x17eR\xec\xbf\xfa\xf6_\xaf\xbeD\xa4,U\xed\n5\xa1]\xcf\xdd\xb5#\xcc\xe2\x90\x8a-W\x18\xa2\xb9\xe8\xe2P\x88\xe62C\x05!\x9a\x0bDs9\xbe\xd4\x10\xcd\x05\xa2\xb9\xe8g\x10\xcd\x05\xa2\xb9@4\x17\x88\xe6\x02\xd1\\\xee\xbb\xc0\x10\xcd\x05\xa2\xb9@4\x17\x88\xe62\xaa\xfa\x10\xcd\xc5\x08Ds\x81h.\x10\xcd\x05\xa2\xb9\xa0\x8e@4\x17\x88\xe6\x02\xd1\\F\xd9\x0c \x9a\xcb\xef1\x9aK\xd5\xc4\xb4\xe8`\x883\x97o\xd6\x90.\x0fT\xe6~\xd9\xf2#\xba\x95\xa3\x87\xd0\xffH\xc8\xcf\xba 6\x8b\xcf\\u\x1f)B\xdf\xd7UW\xa2\xd6#\x8b\x0c\xbb\xaf]\x1f1.H\xff\xbd\xd1e\xef\xbb^\xfdt\x1bZ\x1d5\xd8\xaf!\xad\xf9\x93\x02,\x17\xb0\xdc\xa0!\xf3\x1e\xcc\xa0\xa3'\x1d\xcdf\xdb`\x11\x99u\xd4+\x7f\xc2\xa27\xedl\xb00f`,\x11F\x1bzM\x98\x9ds\xb6\x84n\xb6N\x9d\xbdI\xc6%d\x9f=\xda\xc9\xa5\xd1FW\xa2\xcd\xe1\xe7;6\x9f\x9aYG\xa9\xac\xa1\x89\xa8\x19\xc3\x91\xcf\xd4\x93\xdeG\x9e)\xc7\xaa\xee`\xcei\x12h\x91\x08\xd7\x1c\xa6!`\x02\x82 \xe81O@z\xcf\x17\x99}.\xf4\xf3\xde\xdc\xd3n\x13\xd5\x06\xe7\xb6M\x0f\xed\xf8\xaa.I|\x87c\x12\xb4\xaf<\xda9\xa8\xab\x96\xae\xf4\xc9\xbcF7&\xda\x809n]\xef\xac\x12:Z:\x90\xde\x17.\xf4\x00.K\xe1\xb3M\xba\xdc.\x0d\n}\xb9\"\x8c\xef(S\xa7\x86X\x1dCs\x0eJ\xae\x08(\x13\x06\x8c\x16\x0d-y\xcd\xec\xf1\x13\xef\xf4\x01\xa6{ \x08$X`\x87\xe2\x87\x0e\x8aK\"o\x88[\xce\xbd\x00.)\xb1\x90\xb4\xa0\xf2\xeerW\x97\x92\xeeK\xea\xe3p\xa2\x07\xd5\x94\xb7P]\x1d\xb9H3j\xb14qh\x02\xfd\x13u\xba\x9a^^w8HI\xda\xe2k/\xc8k}^\xcc\x1a\x1cSMd~\x9dM3\xdd\xb24\xb1I\xb0\xb4F\x8c\xee\xb6-\xaf\x07\x95E]\x1a\xbb\n\x156\xf5\x95O 9\x13E\xa4\xfe}\xb7\x8b\xce\x8c0h\x1fo\x1f\xddQ\xa6\xb6\xb5\x97z\xe8O,@j\xa2\xea\xe5\xd1\x8fjDY\xd3\xd7\xccSc\xc4\x0dOR\x8e\xfc\xcdV\x88\xc8m\xd7\x9b\xc4\x87\x87\xbb\x9c\xf3\x86\xdf\x0cU\x0c\x0c\xa9N5]H\xaae\xb0\xdflq\xb5 \xf3F%G\x82\xb0\x95Z\xd5\x9b\xc0\xab\xcdP=\xf8\xc6\x96\xfb\xa2\xbb\x02\xdae\xe2/?\x1f.\x81\xbd\xef\xe3\xa3FoXL\xba\x07\x97\xb3J/\xc5[\x1b\x92(\xdb\xa0\xdbSr=\xb4^\xfa\x96a\xd8\x89\x0f\x9e\xc2N\xfc!w\xe2\x05f\x92\x9fr\xb6\xe4\xb8ZQ\xb6\x19\xb1\x0d\xaf\x88\xac(\xb9v\xcc .q\xa9\x99\xac|\x8d\xda\xf4<}\xbe\xb7\x15\x7f\xd3\xbc\xf9\x8f\xba\x17\xf7\x9dS\xf4|\xd9;\x9f\xb4r\xc4~\xdc.\xee\xad\xf6\x8f\xdc\x95\x9b\xf4\xba\xady\xfe\xfd\x19\xda\xd1\xd5\xaa$7\xb8\xf2M\xee\xb8\x96\xfcR\xdc\xe0\xfd\xa5\xdcVDly\xb9\x9a\xb4\x1a\xddl\xa9$%\x15\x92\xac\xf4v\x97\x11\xdf\xf0F\x89!\x8eb\xc3\x1c\xa5J\xd1_W\x0c\xbe\xd3iG\xeb\xd1\xd3U\x8fi\xd3^B\xe3\x17\x98\x98\xfb\x90u\x18\xb2Ez{q6H\x0f\x9c\x86`uyt\xabK\xc1)SS\xc2\x88\x85E\xdb3Ssfo!9\xb3\x99\xfc\xbe\x97\x91#&\xff\xa9g\xab=\xe7\xe5eQ\x11\xad\xc9\xd4 -\xd8mS\xa5CZ\xd3\x8c\xefB\x0f\x93\xe5TbL\x1bG$\x91wHV}\xa9=\x1b#\xc9\xaf\x08\xb3li\xd4\x18]\xd4\x91W\x9d\xd00\xb3\xc5\n\x13\xf3_\xbfy\xff\xea\x85\xa6\xf7X\xdb\x8c\xe1\xc9PM\xe6>g\xee\xf0\xdd\x8f\x93\x19H\xcb\x92\x0b\xccD\x1f\xca\xb0\x89r.\x1a\x94\x1a-\xef\xd0\x86o\xb8\xc6\xed}\x87d\x89o/+,\xa7u\xa2\x1d\xbe\xbd\x14\x12\xb3\x15\xaeV\x97j\xbc_\xeeIu\xa9\xba\xd6\xf4\xe4\xd4&\"\xd6\xe03,\xfc\x91\xee\x9c\xd3\xa1\x93]:YQ#\xa9n\x9d\x95L^\xd7\x9e\xbfs\xcf\xdb\xbd3;\xf8\x94.\x1e0\x13\xe8\xfa\x9b\x85\xe5s1\x9f\x99\x80\n\xd8\xc1i\x81\x1d\x9c\xe7\xf3\xdf\xed\x0e\x8e\xf32\xb2\x81\xfb\x89\xfeR\xd3\x15\x95w\x17\xea\xbdf#\xa7\xddz\xb7\x04\x95\xee\xb1\xdet\x88\xd67\xcf\xa6\xd3\xdb\xd0\xf5\xd3\xb2o<\xde\x0d]\xab\x98\xae|\x8a\xfeE\x03'\xee\x8c\xbe\xa14\xc7o\xc2\xb1N\x8c$\x93i\x0d\x08:\xbd.\xa7\x0e\xad\xc8\x9e\x0b\xed\xb3}E\xbc\xe6l\x84\xdcF\x02\xd6\xee\xa1\xfca\xd7n#\xb6W\xed0e\xb6\xeeK\\bV\xf8\x0b\xa4\xdf\x80>4\x14\xe8C\xa5\xa6\x10\xd7L\x92j\x8f+y\x97\xd1\x97\xca}\xb0y\xa0'\xfd\xb1{R\xbb\xa9Iw\xa3\xa0u%\xab]\x0e2T\x9b\x0e\x0f8\xbf\xc7\x1b\xab\xf9\xd0\x86d\x92\x81\x89\x91[yyE\xee\xc2\xbb\xdah\xf9\x93~\xfa\xbdnw\x10r\xcb\x89+\x853\x93\xab?m\xd8\n,,\xec|\x817\xe4\xad \xea\xb70\xcf\x03\x89\xb5\xb4\x7f\x95\xacR\x1cA;.$\":\x18\x84\x8e \xb1@\xe7\xb2\xe33\xb2\x97w\x88\x86\xe2\"\xe9\xb0y:R\x08\xe3h\xc7+\xe2\"\x83x\x0d.\\\xe2i\xe6\x91d\xd43\x84\xd2h\xbe\x01\xec\x94\x16\xf5\x1f\xdd\xb0\xa0&\x98I'rF\xa8\xbe]E\x9b\x00k:\xb1\xd0X\xbb\xc1\x02 \"O\x10\x95\xa2\xbd\xcc\xafff\x0eY\x99\xb0\x157T\x1c\xf6\x8f\xf4\x94d\x8a\xd2\x81Px\xcf\xc7\x872\xb4y{q\xd6\x9e\xc9\xed1R\xdf\xcb\xe3E\xb2\x02!\x80\xda\xab\x8c(\xdb\xb8\xd0\x91\x8d;\xce\xd6\x91\x1f\xba\x9a\xf1\xaa\xc3}\xf1\x8e\xef\xdarG\x9dG+\xb2':`\xc1\xf7\xb8j\x1a)\xe1\xa3\xd6W\x8b\xee\xdf!/\xb5\xbe\xfbk\xa8\xf7\xe8\x83a\xffh\x964y\xf8\x928\x1d\x1c\x15\xdf^\x9c\x0d\xd5d\xe7m\xf7O0\x84\x1c\xe8\x07\x0c!\xb3\x1bBbng\xed\xba\xaaV\x95P?\x1c\xac\\v\xa9\xc2v\xbek\xd8\xfe\x94\xf5\xc6\xe6\xa2Y\xd7\xf4\xc4\xb5\x19\x04+jhE\xa9\xb5\xea\x0d+\xeft\xe81\xbeF|\xbd\xd6|\x8c\n\xf5\x8b\x8b:1\xe4\x04\x99\xfb\x9e\xd8D<\xdf\x8e\x12M\xf9Bz\x1cL=\xb62Z\x95\xac\xde\x91\x8a\x16\xee7\xed\xe4\xd9\xbd\x0c\xf1fK\x98S|\xcd\x9aul0\x11\x9f\xeb\xd4J\"D\xabB\x133\xc9\x84\xed\xbe\"#\xf5\xd9O\xfe\x9e\x95\x1b\xb8\xa5\xb3\xa3\xde\xf1w1\xd2.\x95\xe7pC`\x96\xd4n\x0f\xb6<\x85\xba\x1c\xcc\x9a&\x16P\xf7\xa7\xf35*\xc9Z\xba\x0d\x94\xddQ5\x97\xbf\xf2f\x80\x98L\x94\x9e\x97w\x88\xe0b\x8b\xf0~\xff \xb5\xd8\xdd\xd6\xb4\xdf\xc7t\xd9\xf9BiT\xf7P\xae}D5\xb1\x91\xb2\x15-\xb0$M\x88C\xabA\xfd\xa2\xedH\xdd\xe4(+\xcaz5\xd8\x8b`\x93K\x13cr\xd0bz\xc6\xeel\xe0\xd4B\xdc\xd6i\x18 \xed\xc3\xb9\x18\xb4\xd6\xa0\n:D\x83ZK\xcd\xda\xaa\x87W;\x1e\xd5\x90[\xd8\xd1D7\x8cW\x83\xc0qn4\xf6\xb30\x9a9\xb6aC\x81\xfd;\x0dX\x91kR\xf5>\x8d5\x9e}{\xd8p\xb4\xb3-\xae\x88\x7f$\xf4\xd2Qy\x10\xb3G\xe4\x95\x8e \xde\xaf\xfe;\xca\nm\x86\x10;.\x9e\x8b\xd5\x15\xfab\xf1\xcd\xd7\xb3jc\x94M\xff\xf4\xd7r/\x8dGA$|xgm\xeb\xed\xdfzn\xaf\xc3\xf3\xa9\xc5\xbd\\\xd8\x92&\x85&C\xfbK\xd8\xfao_x\xd4\xc6\xffY\x8f\xda!\x13~bO\x93c\xbeOn\x8b\x8e0\xdd\xc7\x0d\xf7ICYj\xbf\x984\x92%\xeb\x966\x90%\x93H\x9fD\xd1=\x98\xc6\xe64\x8ce\x99\xc5\xa6\x19\xc5\xc6\x18\xe8#\xe6y\xe8)\x7f\x94\x9e2\xca\x0c\x1f4\xc2C\x7f\xf9\xa3\xf4\x97|c\xfbT:d\xae\x99=\xdf@6\x83}\x0c\xccc`\x1e\xf3>\x7fL\xe6\xb1\xe1~\x1e\xddc\xd8$\xba,N\xf1~/N\xb5o\xe4\x9aT\xa7\xd7_\x9e:?\x91\xd3_\xed_\x97t\xf5\xdb\xa9\xbeb\xff\xf4W\xf5?\xfdo\xdf&9qU\xd2+\xfd\x89\xbd\xd5\xa8w\xd6q\xbbd\xfb\xc8\x84\xdcP\xab\x19-\xea\x12WH\x077\xc6\xac\x1d\xa6\xb6d\x88\xae\xbc,\xf6^N\xf6\x85G{\xecI\x1d7\xa2]\xcc\xce\x9f]%\xda\xa3\xc6a`\xaf\xd4\xda\xa8\xbbEOuqg\x1ao\xa4\xe7~#\xc3\x0dE\x9f\xb3E:\"\x80n\xeb\xd8\xaa\x93\xf2\xd3\xde[\xe9\xea \x98g/A\xfdj\xb4t\x117\xd8\xb4\x06P\xc6\xc8Cy\x8a@\xc9E\xa1//\xd1\x87\xb7?\x9dV\xc4\xda@\xd5\xf6\xd3\x80g\xc6\x8d\xa0\xbck\x95\x19\x0f\xfb\x88l\xf9\xdc\x06G\x90\x8a\xe2\x92\xfe=|\xdd\x9c\x11}\x1a,x\x89\x96\xf5Z\xef\x15\xcd\x14\xba@\xef\xb7T\xd8\xba\xa2]-\xa43\x06#\x1cR\xb3\x91\x92`!\xe3yrF\xd0\x93\xd3'\xfa><\\HR-\xf4\x91\xb8\xc4B\"A6\xea\xe0\xeb\xaa\xf1\xe1\xedO\x9f\xfb\xe3%;\xd1 \x80.`E\xf6\x15\x11\x84%r7f\xfb\xb2\xbcC\xbf\xd4\xb8T\x9a]\x19\xbd;\xc0Qi\xf1)\x16\x88\xb2xB\x1fU\xd6\xa7\x1b\xce7%Yh=.\xeb\xf5\xe2\x87\xda\xccL\x1f\x9f\x99Z\xe9\xa4\x1bRB4A\xa5\\T`\xc6\x19-\xb0\x8e!\xb2\x8b\x97\xe0)Yl\x16'J\xe5\x1a\x8d{\xb2x\xa2\xf6\x17\x8cK\x84\x8b\x82\xec%Y=\x8b\x05\x1eUr\xce\xd0^5\x02-\xc8 \x92Dm\xbc\xfdIXK\x8aJ.J\x8bEnn'\xe8\xe3V\xca\xfd\xc7\x13\xf3\x7f\xf1\xf1D\xed(\x19\xb7OOt\xaf-\x82\x17\xa6\x1a\xe1z\xd4k\xed \"Q\xbdGX\xeb\"\x91?\xa9\xaeIe\xd4\xb5\xc3{a\xba\xa0\xae\x85\xe4M\xccD}\xa0\xa1R\xf3@q|L\xacyY\xf2\x1b\xf1\"\xd1\xf6\xff\x8c\xce\xd7m\x0dU\xd7q\xe1j\x1a%h\xd3\x94\x10\xf5\x8e\xac\xfc\x11\x1d;\x89\xbdd\xe8\xcf\xef\xdf_\xa0?\xbdz\xef\x0c\x9e\x1f\xde\xfed\xc6\xe6\x9d\xb6s\xe1h\n\x7f\x1d\x0e\xa5\xf7w{\xf2\xb7\xbf\xfe-\xfa\x11r\xe4?\xe6\xfa\x9f\xd9\xc2\xe8\xd6\xdbW|U\x17\x04af6\xa7\xbe\xb3K+\xff\x8c^\xee\xf7%-,\xd7\x16WD\xf5e~c\x88\xa0\x05.\xd4\x1c\xc5\xf9U\xbdw\x80y|8\xb8;U';\x0f\x16uUi\xfa\xd8\xc1\xb5\x0b~\xb1S\x0f\xd7\xa4\xa90\xfb\xd4\x88\xeb\xa8\xa8\"j\xd5#'\xda\x04l\xc8F*sM\xd8\xd2g;7\x9e\xe3\x1d\x86l(c\xaa\xf27Tn\x13\x8b\xd8\xdd\x9e,\xccx\xc1{*\x16\x05\xdf\xa5f\xfawz\x94\x0b\xc3\x8c5d\xb0\xc1\x8c\x87\x9e\xdas\xa8f2eL\x99\xcf\xd0No\xd4\x97\x89 \xce0\xd74\x9a\xe4,\xdb\xc6d.\xf6\xa4\xa0kZ Av\x98IZx\xd9\xcdF\xa2G\x1b\x94\xbf=K\x92\xc7\x8d\x8c\xd9\xc5\xfd\xac\xa6\xb8%1D/\xba\xeal\xbe\x0e\xf6W^/\xec\xbe\xe0%\xbf&N5v\x18\x85\xd4\x92[\xca\x8f/\xd9\xdd\xc7\x16\xcf\xc7\x0c\xe1jIe\xa5&\x83pi\x83\xc9\xb95 \x97\xdcvW\x84\xc3]@\xad\x02zq3\xa5]\xba\xcbS\xbd\xdb\xd5f\x07\x1a\xe9\xce\x17n\xe0\x95t\xa9\xab`\xd7-\x81D\xbd\xd7\x9e\xb7\x92\xa3=.\xaeNk\xa6\xfe\xa7\xf6\x0f\xf1~%\xdc\xc8\x8fo\xba\xf8\x1a\xd5\xd2L\x9an\xba\xd1\x86'\xbcZQ3\xf7\xa0\x0da\xeal\xaa+\"\xb7|\xa5\x8e\xaf\xc1\xf4T\x8e/\xd9\x9dm\xe2p\xbe\xafn\xb1\x1a8\xe8\xcb\x17\xe8B\xd5G\xcd3\xb6j\xb8i\x0c\xca\xd0\xd9\xbf\xfcKb\x99\xfe\x91s\xb4\xe6\x1c}\x87\x16\x8bE4\x88\xb2.\x18fw\xf1\x970\xbb[\xa8\"\xfdX\xf1\xdd\xd35\xe7\xcf\xe2\xaf/\x16\xf15\x98\xae\xd1S\x95\xe4\x07]\xb9\xf7\xfc\xe9?\xa94\x9f\xc5cDg\xa4\xfb[Z\xb7_%t\xfb\x1f\xf8\x1a\xcf\xae\\\xf4\x9d\xde\xdb\xaa\xdcf\xd4\x1e\x15O\x7f\xe4|Q\x94X\x88\x0c\xe5\x99\"\xab\x0fM\xbd;\x1f\xc7\xcb\xf3[\xf4\xe9\xe9\xa9\x1a\x1a\xf9e~\x87wDm\xf9^\x9a\xd2o\x88\xfc\xc1\x188\xcf\x99\x90\x98\x15\xe4\xe9\xb3\xa9\x95\xf1\xa6\x95\xaa[\xb2\xc7|\x9d\xe81\x17wr\xcbY\xa2\xcf\x98\xf2\xfe\xc8\xf9\xd3\xc5b\xf1,5\xd6L\x7fy\x9a|O\x8fI\xdd\xa3\x8e\xedP*\xb1s\xd3\"?\xbczw\xf6\xf6\xfc\xe2\xfd\x9b\xb7\xcfb\xeb0\xb2E0c8]\x08S\x8c\xa4\xb6\xbfIh\xfbO<\xaeh\xad\xe9\x17\xdf\xa1\x7f\xda/\x17?r\xfe\xebb\xb1\x88\xf7_U\x89\x13upP_av\xb7_.^\x93\x9b\x8c\xfa\xd0\xb5\xfe\xea\xbf}\x87\x18-\x93\x1d6\xd9\x08\x89a\x96\xfe~P\xf1Dr\xb6\xf4\xa6\xce\x8b\x0fl\x87+\xb1\xc5\xe5{n&\xa8\xb9\xab\x16|\xfe^\x03w\xc5U\xb3\x8e\xba\xc3)Z\xde\xb5[o\xb7\x030^u\xe1U\xde\xd1\xf1k\x11\xd9\xab~\xee\xd9V\x9f\xae\xeb\xb2\\\xe8\x07\xea(\xf39\xc2\x9d\xdd\x8b\xda\xd9t\x03\x1d\x0dE\xbdh\xfaj8\xd3f\x9b\xc0\xca;g\xaf80P5G)\x84\xd7\x92\xf8x\x8b\xadh;\xda\xe7\xa7\x9f\x87\xb3\xb4{\x1dW\x05mQA\xc4\x8e\xb3'k\xce\x17K\\\xe9\xca\xdf\x9e\xde-\xfe\xfeDk7\x98\x9a9\xdb\xc7\xcd\x1c\xba\xe8OTZ\xb1m\xce\x7f\xbc{\xf3:\xf2X\xf5\x08\xf5Jk\xe9k(\xb0\xea0\xa3\xb7\xb8\xc6\x1aP\x8b\x84\xb9\xb4\"\x9b\xba\xc4U8\xaf\xc3,\x0c\x81\xab\xdd\xa8\x9e\xb4\xf7l\xd8Y\xe8$\x98\x9a\xd9!G\xec\x89\x9d\x0d\xa4\xa1\x04}\xfc_J\xa1\x1f\xad\x19\xabG\xc4u\xcd\x16\x1eZv\xca|\x918\xbe\xe2\xe2J\xcd\x9d\xad\xd9eMK\x12_\x15\xdd|{A*\xc1Yr\x02\xb0\xf6\xe35\xad\x84\xbc\xd4} uuG\xfb\x91\xea\xc6\xee\x1b\xff\xe5\x1d\x8dDf\x11%\xa9R>\xd1\xba~\xf2\x02=\xf1\x8d\xff\xbez\x16\xa6\xe6O\xc2mm\xd3\xd4u~\x8dw*\xdd\xffi\xaa\xf4\xef\xc9\x8fT\x9d\x07\xdfL\xad\xf8\xf9\xda\x1e\xe5\xfb}\xd4\xf4\x1e*\xd0\x0d)\xcb\xe7W\x8c\xdf\x18\xe2\xda\x16\x8b\x88y\xce\xc6\xb84\xe33\xf4R\x7f\xc8\x9c\x98#\xdf`\x1c\xb5\xce\xcf\xa6X\xd1\x01\xc16\x08\x9b\xe1\x10\xce\xf4\xa3\x1e\xf0n\x9cly\xb9\xear\xe6\xcctAY3\xbeP\xc2\x8em\x87]8?]\x9cE\xb3)y\xaafN\xab\xda\xe07\x07\x86M\x87\x11\xfc\xed\xaf\x7f{\x96\x18\xa4s\xf5\xdd~\xc6\xe9\xee\xab\xd5\xaa\x92\xfdr\xf1\xd5\x97_\x89'\x89nx\xf8[\x8ee\xe2\xdca[\xab\x0e\x86\xdb\xe1Zv\xe1\xbff\x0e\xf5%\xd4\x99>\xcd7~\xa5\xb6\xc0\xa4m\xc7\x83\xb7z\xa5.\xa9\xd0\xe8\x83\x90\xbc\"\xab>jm\x17\x04/%&z\x15\x99\x016;\x1ek\x0em>|u:\x17 \xe2+@|\x85\x81\x13cd\x9c\xf2\xf2\x99\"9\x1a\x1a\xc1\x10\x99\xc4\x0e c\xcciV\xc8\x9c\x8c\x909\xd8 \x89^p4\x0b$\x93\x01\x92\xc3\xfe\xc8c~$\x94?\x9e\xf1\x91\xcf\xf6\x082=fay\x8cbxLaw\x8c`vD\xa9\x0f\x91bE\xbf\xcbgr\xcc\xc5\xe2HT\xc3\xfbl>\xe6F\x92\xb51\x95\xb1\x11\\7cl\x8dY\x99\x1aq\x96\xc6$\x86\x06\xd2\xe7Roz\xe1cz\x9a\x99\x11ae\x8cgd\xc4\x99\x17\x93X\x17\xe6@\xe2K.\xc4\xb8\x98\x8fm\x91fZ\x8ceY\x8c`X\x8cfW\x8ccVD\xc8\x05\xb1R\xe5\"\xd2\xb9l\x8a\xd1L\x8aQ,\x8a@%\xa7\xb0'\xc2qzP\x8491\x855a\xd9\x11\xfe\xbe\x1dcL\xcc\xc8\x96\x882%\",\x89\xc9l\x889\xfa\xdc\x08\x16D>\x03\xc2\xad\xc2\x10_{tT\xd7\x033 \xc4\xd7F\x10_\x1b\xe2kC|m#\x10_\xfb\x11\xc6\xd7\x8e\xc5|9\xfd\xb5 '\x12\x89\xb1\xdde\xfb5\xe1_\xd8A\xe4\x17\xd7\xc2\xa1h/\x9f\xb9\xaa\xfd\x0e\x82\xbd\x84\xf8\x1b\x93\xe8}2J\xc3H\"\x109&\xfc\xd9 \x18y\xf4\x8b)\xe4\x8b8\xc9b\x12\xc5Bg\x11H0I\xb0\x98\x81^1\x91\\\x11\x84\xa4\xf3\xa8\x15G\x11+&\xd1*\x10\x0e\xfa\x95\xc8\x92\xe0\x90EoH\x93\x1br\xa8\x0dQe\x8f\xa55\xe4\x92\x1a\x02\x94\x86\x19\x08\x0d#\xe8\x0c\xe3\xc9\x0c\xd9T\x86\x08\x03 X\x9c\xc87\xb9\x14\x86y\x08\x0c\xd1\xc2{\x9eL\xa2.8[\xb4'\xbd\x00qaf\xdaB\x98\xb40\x95\xb2\xa0\xed#\xbe\x82\xfb \x0b\xf3\xd2\x15B\xc7\xe0\x14U!HT\x98\x97\xa60\x9d\xa4\x10 $L\xa2#$\xa9\x07\xe3\x88\x07\xd9\xb4\x83\x91\xa4\x831\x94\x83 \xe1 \\\x9a\\\xe07\x8fl0\x92j0\x82h\xe0\xad\xda\xbc$\x83\x10\xc5\xe0\x08\x82\x81\xd7:\x13\xa4\x17L#\x17\xc4\x88\x04\xf3\xd3\x08\x8e\xefI\xd9\x14\x82\\\x02\xc1\xe1\n\xe8 ~\x8e\xb0\x10\xbc\xa0\xfa\xc8\xa3g\x123G\x19\x8f\xe6`\xbc\xf5}\xc5\xf9z\x94\xb7i\xe2\xf4mK\xb6#\xd5UIL\xf2j\xfe#\xb7TH\xc2\x8a\xe1\x07\xfa\x85\xcb-\xa1\x9b\xad\xef\xa20\x93\x98y\x8c\xb0\xbb\xfcJ\xd5\xcc\xa4|\x83\x05\xaa\x88\xac(\xf1\x19\xa8\x8e\xc0O*rM\x05\xe5\xec\xd2\xc0\x9eG\xda)\xd2\x8e\xfd\xa6\xb1L\x9e-v\xeb\xa2\xe5\x8b\x8e!\x8b\xfb\x0e\xcbMqC\x9aD\xf3\x17\xd7\xb6\x8a\xeakvq\xdf\xd0k\xc2\x9a\xb2\x1c|\x9f6\x80\xbcV\x05P;\x0f\x95\xda[\x9b\xce\x9fM>T \xca\x8aJ\xdb\x99\xd4\xf4#\x0d~oJ\xe1I\xebfKK\x82\xae\x08\xd9\xab\xeaz^p\xe9\xbf6\xc0\xb66v\xe0\x1di\x80\x00$\xf8N\xa3\x04\x820Q\x0b\x84\xcb\x0d\xaf\xa8\xdc\xee\x04\xday\x1c\xaa\x11*\xb6\x9c\xab\xfd\x93w\xbb\xae\xe6R\xd9\xd5\x1be\xa8 \x95\x06\xa8\n\xceV\xd6\"O\x16\x9b\x05\xda\xe2J\x1b\x11\xaf\x84o\xee\xd0\xa3\xfd\xf9\x0e\x17[\xca\xbc\x9b\xa0\xa1\xf9\x14\x9d\xeb\xe6\x11\x04\x15X\x10q\xd2\xd3\xae\xad=\xf5\xd9)\xbb\xfa\x16\\wK_~\xb6Bj\x13BYM\x9c\xe1x\xc7\x19\x95\x06S*\xefLZXS_\x88\xea%8\x14}\xab\xdf\xec\xbe\xfc6D\n\xa3\xcf\xde\xc3qA\x0ef\x89q\x10 q\x80\xbe'B\x9b\xbf:\xe3X\xb7\xdc\x89\xb6\x16\x1b\xda\x85Z\xad\xcdD\xe6\xdf\xb9[\xcd\xae+~`\x06\x8b\xce\x84\x10`\x01\x02,@\x80\x05+\x10`\x01\x02,\xb42\x85\x0d\x10L\x0c\x02,\x1c\xcaL\xcc\x80\xe3\xb8\x01\x13\xd8\x01\xb3\xf0\x03fg\x08$9\x02\xf7\xc0\x12\xb8/\x9e\xc0=0\x05\xc6p\x05\xa6\xb2\x05\xa2sx\x8a/0#c \x9730\x9250;o \xcd\x1c8\x9a;\x00\x01\x16\x92%\x9b\xc6%\xf0&\x05\x01\x16\xa6\xb0\nR\xbc\x82y\x98\x05\x99py\x92]0\x82_\x90\xf4\x0e\x1f\xc91\x80\x00\x0b\x10`\x01\x02,td\x02\x13!\x9f\x8b\x00\x01\x16\xac@\x80\x05\x08\xb0\x00\x01\x16\x0ee:w\xc1\x9b\x1c\x04X\xf0~\x90\xc5v\x80\x00\x0b\xf3q\x1f \xc0\xc2\xd1\xcc\x88y\xfa\\6;\"\x9f\x1f\x91\x17`\xa1q;\xed\xa4\xd2;I\xf7\xd8\x14\x06\xe2\xf0\x13'({1D\x01Z\xe7YY\xd5 \x17\xf1\x89\xae\xb3u\xa6\xeb\xec;\xfdn\xe35\xab\x0f\xdd\xe6'\xb3$\x9c\x7f\x7f\x96\xe7=[\xbbs\xf4\xa3u\x9f5\xf5\x1a\x81\xe5\x8d\xc2\x88\xebY\x02\xe1\xd7\xb1@\xf8\xe8\\ZGo7 h\x0bd\xa7\xc1\xd4\xaf\x87-\x06\xc0.\x00\xbb\x1e\xc91\x0c\"\x00v\x01\xd8\x0d\xbe \xc0\xae\x16\x00v\x0f\x05\x80]\x00vC\x02\xc0.\x00\xbbZ\x00\xd8\x05`\x17\x80]\x00v\x8d\x00\xb0;\x05\x1b\x05`\x17\x80\xddV\x00\xd8=\x14\x00v\x01\xd8\x05`\x17\x80]\x00v\x01\xd8\x05`\x17\x80\xdd<`\xf7\xb1@\xba\xce\xa3xT@\xe4N\xe0\xff3\x97\x80\xbdg\xbb\x89\x8f\\\x96\xce\xe2m]\x96\xfd\x81\x01\xb0q\xd4n\xd2\x8b\x81\xc1\xfd\xac\xec+\x8f\x16\x0f\x1e\xaa\xf6q\x00{1\x9f\xfc6\x94\xc3\xa0\xd1\x82~\xed(] \x94Q(\x94\x1b\xe4\xc0H\x86\xe5\x0d\xe5E\x1002O\xd8\x03#Y\xc1\x0f\x8c\xdcc5F\x87C0\x92c\xf2C\x93B#\x04\x93r%M\x05H022LB0\x9d~\xf8\x84x\xb0\x04#\xf3\x85L0\x92\x0c\x9c`d\xb6\xf0 F2\x83(\x18\x99\x18J!\x98\xdeag \xe7\x1d\x08\xab\xe0d0\xb7\xc6M\xf4GOM2A\x86@\xf9\x839w\x84\xa1 \xc4\x88hb~\xebx\xc4\xc427A\x02\xa5I\x12h\x02Q\"^\x01\x17\x1b?\x87,\x81\xe6\"L\xa0\x89\xa4\x89h\x82J\xb9\xd9\xc4 t\x85\xf4\x12L\xacC)\xc9\x1d2y\xe4\x97\xe8\x80`\x9b8\x01\x06\xcdK\x82A)\"\x0c\x8a\x93a\x82\xdfL%\xc9\xa0\x19\xfb\xee\x08\xb2\x0c\x1aE\x98A\x91\x0d\x8a\x9fj\xe0y9\xc7\x8c\xd1\xa7\x86\xfco*\xb7\x16\x8d\xd6\x86q\x1d\xda|\xc8ip\xd3\xae/\xb9\xce\x8c\xbb\x8d\x00\x95\xa6\xbd\x0f\x1e\xf9k&\xbcwb\x84\xef\xc2h\xaeu\xf7\xf0FL\x06\x9dk\xee\x1d\x8d\xe5\xf0\xd5\xe9\xb7N0r+/\xaf\xc8]\xd8A<\xeb\xfe\x86\xbck1\xff+d\x9er\xa5pQ\x0f\xd4\x9f\xd6\x1a\x8d\x850\xe6\xf7\x0b\xbc!o\xcd\xe5\"\x0b\xf3<\x90\x98\xbee^'\xa3\x92U\n$h\xc7\x85DD\xdbt\xb51X\x87Ah\xa7\xa2\xbd\xbcC4rIxE4\x18\xc08\xda\xf1\x8a8\xe3\xbfo\xf9\x95\\\xe2\xa9W\xa0gp@l\xa7\x08\xda\xf9t\xf6Z\x8b\xfa\x0f\xc3\xb2Q{\x97\xe6\xb6\xff\xd6\x1b1T\xdf\xae\xa2\x0b^3y\xa9\x13\x0b\xcdR7X A\xe4 \xa2R8(F\xa0\x9a\x99A\xb92\xd6\xe6\x1b\xea\xe9\xb6\xe91o\x8a\xd2\x89\x88\xc1{\xbcI\xca\xd0\xe6\xed\xc5Y\x1b$\xc3\xce\xc3\x02\xdd\xa86\xf35\x8f\x1f ,xe\xd2\xd0K\x8e\xbb\xc2\xc6-\x98je\xd4\x06\xec\xaef\xbc\xeap_\xbc\xe3\xbb\xb6\xdc\xd1 \xbc\"{\xa2'\x8b\xefq\xd54Rj\x8b\xd4S\x8b\xee\xdf\xa1\x0dR\x7f^\xb6\xbd\xe7`\x18\x9a($}\xe2\xdd\x11\x81H\x06dA\xd5B\xe6\x88\xd3\xbc\x0e\xa1D\x06O!\x94H\xcet`d,c\xc6\xc1\x0c\xc1\x04s\xd92\xb32e \x94\x08\x84\x12ieV\x06\xcc\x18\xf6\xcb(\xe6\x0b\x84\x129\x96\xe52\x81\xe12\x0b\xbbe<\xb3\x05B\x89\x1c\xc3d\x19\xc3b\x99\xc0`\x81P\"\x10J\x04B\x89\xe42Pfe\x9fLa\x9e@(\x91\xd0kI\x86\xc9\x08vIN\x10\x8a1\xac\x12\x08%2%\x1aG\x8a5\x02\xa1D\xf2\xd9!\x99\xcc\x90\x1cVH\x1e#\x04B\x89\xa0\x89\xac\x8f\x11\x8c\x0f\x08%2\x03\xa3#\xc9\xe6\x98\xca\xe4\x08\xae\x9b\x10J\xe4@ \x94\x08\x84\x12\x19\xc8\x1ca\x1drY\x16\xa3\x19\x16\xa3\xd8\x15\x10Jd\"\x8b\x02B\x898\x993\x94\xc8}\xc4\x10iK\xd1\xb2\x0c\x16W\xe4.T\x94\x01ph\x01{l'rs\xab\x80\x81e\xbb\x08\xe5\xa2A\xf7\xb5In3\xb0]i\xb8^M>)\xc4\xfe\x0d\xd3A\x19\xf4\x99\x9d\xaf\xd7\x82Hu^\xe8\x17\x17u \x05A\xe4b\xa0\xab_l\x90\x14'\xad\xb2\xd6\xb8\x14Im\x05\x0c4\x1e%\x9a\xf2\x85\xf480\x8e\xd8\xcahU\xb2zG*Z\xb8\xdf\xf4\x98/0S\xf51\xd6\xa9-aN\xf15k\x0c\x82\x83\xbd\xf3\xb9N\xad$B\xb4*4&\xb4Z;\xf1_\x91\x91\xfa\xec'\x7f\xcf\xca\x1d\xf0\x1f<\xea-\xe9\x8e\xe6jW\xbf\xebP\xec\x10-\xc2\x18\x8b\xbb=\xd8b\xdeu9\x00\x91\x8di\xa8\xfb\xd3\xf9\x1a\x95d-\x1d\x8d\xc4\xf2J\xdc\x06U\xdb\xb9\xcd\x001\x99(=/\xeft\xbc\x0c\x84\xf7\xfbO\xa8\xc5.\xb9\xa3\xfd>\xa6\xcb\xce\x17J\xa3\xba\x87r=\xd1 \xf5\x07e+Z`I\xda\xb8*F\x83\xfaE\xdb\x91\xba\xc9QV\x94\xf5j\xb0\xfd\xc4&\x97\x06r\x1c\xb4\x98\x06\xb0;\x96p\xb5\x80t8R\x83\xc9\xe5\xc3\xb9\x18\xb4\xd6\xa0\nz\xc7^\x11a\xa9\x06zx\xb5\xe3Q\x0d\xb9\x85\x1dMt\xc3x5\xc0\x11\xdch\xecga4sl\xc3.9/I\x87\xba\xe6i\xc0\x8a\\\x93\xaa\xf7i\xac\xf1\xec\xdb\xc3\x86\xa3\x1drPE\xfc#\xa1\x97\x8e\xca\x83\x18\xa6\x0c\xafV\xa4\x1a\x9e\x0e\xdeQVhf\x9c\xd8q\xf1\\\xac\xae\xd0\x17\x8bo\xbe\x9eU\x1bs\x05\xbf:5\xc4?\x9b\x96/\x08\xd6\xbf\x87\x82`\x19\xeaa\xff\xd2#\x1bK\x85\xaf\x91R\xf5\xdd\x019\xb0I*\x10\x1f+?.\x96\xcd\xdd\xbe\xf8{\x89\x8eu\xd9SwW\xe4'\xa0\xacd\xc6\xa2\x1a\x01\xdbD\x837\xcd\x15\x7f*3\xf6\xd4=\x14{B\xbc\xa9\x1cLh|\x9c\xa9X\xa8\xb2\x8c\x18S#\xe3Ku\xe2Hy\x93\xcb\x88-5g\\\xa9\x8c\x98R3\xc6\x93\xca\x8e%51\x8eT\xf0\x14\x99\x13C*\x1a?*N\x95m\xfb\x17Ve\xe4\xde2\xae\xb0\x8c\xf1X\xba\x9bs\xcd@\xa8T\x17\xdd`\xca\x84D\x98\x19\xe0\xdafd \x93h_W{.\x02X _\xa3z\xbf\xc2R\xfb=\xb0\xc0I}]\x11\xf2w\xdd\xb8z\xce8L)\x1a\xdeo\xf8:0\xd0\x8d\x00\x03\x1d\xe5\xad\x08\xc0@\x07\x06\xfa\x830\xd0\xed\x16w.\x1e\xba\xdb\xaf\x03\x1b\xdd\x08\xb0\xd1\x81\x8d\xde\n\xb0\xd1\x81\x8d\xde\n\xb0\xd1%\xb0\xd1\xfd\x02lt'\xc0F\x076:\xb0\xd13wI\xc0Fo\x04\xd8\xe8]\x016:\xb0\xd1=\x02lt`\xa3\xa7\x94\x0fl\xf4\xe07\xc0F\xef \xb0\xd1\x81\x8d\x0elt`\xa3\xf7$\x97\x19\x0clt-\xc0F\x076:\xb0\xd1\x81\x8d\x0elt`\xa3\xdf\x8b\x16\x81\x8d\x0el\xf4?8\x1b\xdd\x11iO\x7f\x1dp\x93\x1dQ\xbd\xf3\xc0\xfc\x10\xb9\xbe9\xc8\\ooo\xce\xb8\xb7\xd9\xae\xf7\xfd\xb0\xbd]\x0e\xa8\xa3\xae\x9b\xf2dP\xd7\xed\x1b\xbf\x17\xcez\x88\xd02\x89\xeb(\xa3\xbc\x94$$\x93\x83i\xcc\xceH\xc9\xe3\xa3La\xa3\xc4Y'\x938':\x8b@\x82I\xc6\xc9\x0c|\x93\x89l\x93 F\x9f\xc759\x8ai2\x89g\x82p\xf0:\x08\x99\xc72\x99\xc21\x89!\xbfY\x0c\x93\x99\xf9%Y\xec\x92\x19\xb9%If\xc9L\xbc\x92cX%\xa39%30Jf\xe6\x93$\xd8$\xb3sI\xee\x87I2;\x8f$\x9fE2\x8dC\x12Qz\x8aA2\x1b\x7f$\x8f=\xe21\xde\x84\xe7\xd7\x99\x99#)\xde\xc8\x91\xac\x91\x08g$\xb9=I\xf2E\xf2\xf6/\xf3rERL\x91t\x99\xa6\xb1D\xdc\xcc\xeeI0\xc5\x11\x99\x91!r\x04?\xc4\xcf\xea\x8a\xb1C\xe6\xe5\x86\xc4\x99!s\xf0B\xb2\x88\x0d NH6#$\x0cP\x8eg\x83\x84\xd3\xf2\xc2\x04\xb3\xf0@\xc6(+\x97\x03\x92\xd6I6\xffc\x02\xfb#\x84J\xa7\x98\x1f\xf3\xf1>\x8eg}D\xdb\xfbH\xc6G\x16\xdf#\xcd\xf6\xc8\xe1zD\x95=\x96\xe7\x91\xcb\xf2\x08p\x05\xb5\xc8N\x14\x98\x86\\\x81\x8c\x11\xd5\x93\\\x17t\x19<\xdeW\x9c\xafG\xf9\xee&\x8e\xee\xb6Z;R]\x95\xc4$\xafc\x1c\xddR! +\x86\x1f\xe8\x17\x82\xd1i\x8e@O\xb2\x02\xf6d[)\xd21\x0e\xe4q\xa1z\xb2\x02\xf5\xcc\\\xdc\xd1!z\xd2\xe6\x8f9\xc3\xf3$\x83\xf3L\x0f\xcd\x83v\x1e\xffr\x14\x0f\xcc3_X\x9edP\x9e\xd9B\xf2d\x06\xe4\x997\x1cO:\x18O$\x14OlV<>\x0c\xcf\xccAx2B\xf0D\x03\xf0\x84*\xeb p1Wd\x8ba\x19!\xc2\x85\x11\x88p\x01\x11.Z\x81\x08\x17\x10\xe1\xa2\x95)\xec\x83`b\x10\xe1\xe2Pfb\"\x1c\xc7E\x98\xc0F\x98\x85\x8f0;#!\xc9I\xb8\x07V\xc2}\xf1\x12\xee\x81\x990\x86\x9b0\x95\x9d\x10\x9d\xc3S\xfc\x84\x19\x19\n\xb9\x1c\x85\x91,\x85\xd9y\ni\xa6\xc2\xd1\\\x05\x88p\x91,\xd94\xee\x827)\x88p1\x85\xc5\x90\xe21\xcc\xc3d\xc8\x84\xe7\x93l\x86\x11|\x86\xa4{\xfeHN\x03D\xb8\x80\x08\x17\x10\xe1\xa2#\x13\x98\x0f\xf9\xdc\x07\x88pa\x05\"\\@\x84\x0b\x88pq(\xd3\xb9\x12\xde\xe4 \xc2\x85\xf7\x83,v\x05D\xb8\x98\x8fk\x01\x11.\x8efb\xcc\xd3\xe7\xb2\xd9\x18\xf9|\x8c\xdfS\x84\x8b\x01\x95!X\x96\x01i\xa4a#\x1c|vt\xc9\x92\xae\xfa\x03:\xc3\xe8\"\x1f|v\xffE.\xb1$B&\n<\x0c\xd0\xd0\xfd\x06\xf1kRU\x9567th\x02f\xa9R\xd3M\xf7\xf6/\xf3e/1!\xb5\x93~\xef\xb7>x;\xaf_\xfe\x18Ot=H\"7\x9f\x9d\xe97/\xf4[\xad\xcbxYvF\x97\xdb\x16\xd0e\xd18\x8a\xd7\xcb\x1d_\xd5%\xf1{\x82w\xd2\xfc\xccU\xf0\x91\xfa\x81w\xf5\xd3\x95^a\xccK\x067\xb1\xdd\xe0P=}\x85\xb4\x12,\x14J\x02\xc0\x16L\xb8\xb4\x14\x84\x18\xb7\xc8\x8fK\xa3\x186\x8dr\xac\xa79\xe6\xc7\x83\x82\xf64UR\xa1\x916\x87\x8cxc\x0d\xf4E\x83\x05nshI\x1f\x95\xbe\xbe$\xb4\\i3;\x93D\xa3\xba\xc6\xda\xbcP\x9b\x8a&\xb4\x81\xdbHTd\xc7\xaf\xc9\n\xad+\xbe\x8b`-\xfd\xc2\n]\x89\x13TkW\xaf\xc0'\xba\x1bP\xe12t{\x88\x15\x15xY\x12u\xba\x96\xb4\xb4X\x006\xbb\x8a\x0dV\xe7\x8e\xd0\xfdBNy\xfd.\x15o\x10C@\xe9\x8c\xbf#\xe8'\xdd\x99\xe1\xed\xc5\xd9\xb0\xde\xe6t\xd6\x16\x0e\xd8'\x07\n\x02\xf6I\xde\xf4\x01\xec\x13`\x9f\x84\xde\x04\xf6\x89\x16`\x9f\x1c\n\xb0O\x80}\x12\x12`\x9f\x00\xfbD\x0b\xb0O\x80}\x02\xec\x13`\x9f\x18\x01\xf6\xc9\x14\x02\x07\xb0O\x80}\xd2\n\xb0O\x0e\x05\xd8'\xc0>\x01\xf6 \xb0O\x80}\x02\xec\x13`\x9f\xfc\x11\xd8'c@\xf8z\xbf\xa9\xf0\xaa\xc1GmP\xf80(\xff\xc1\xbeo \xb8A8w\xd6\x105\x0d\x86\x8a(=\x05B\xcd\x06A\xe5\x01P\xa3\xe0\xa7\x99\xc1\xa7\x14\xf4t$\xf0\x04!\xda\x0fd\x1a\xd0\xe4fvO\x82)\x98iF\x90\xe9\x08\x88 B\xb4k\x81\x10\xedF\xc6(+\x17FJ\xeb$\x1bB\x9a\x00 A\x88v\x08\xd1\x1e\xd1\xde\x11 \xd1\x08\x88h<@\x94\x0d\x0fA\x88\xf6\x14\x1c\x04!\xda\xe7\x85\x80B\xc7\xe0\x14\xfc\x03!\xda\xbb2\x0e\xcc\xc9\x86rF\x029c`\x1c\x08\xd1~\x0cp\x03!\xda3\xa0\x99\xe3{R6,\x93\x0b\xca\x04C\xb4w]\xcd\xbc\xa1\xd8+\xf2KMD\xc0\x0dxp$\xfd/\xaf\xaf\x95\x07]\x99\xeer\xe5\xc3}\xda8\xbf\xe0j\x05\xaeV\xe0je\x05\\\xad\xc0\xd5\xaa\x95)\x18V01p\xb5:\x94\x99\xf0\xac\xe3\x10\xad \x98\xd6,\xa8\xd6\xec\xb8V\x12\xd9\xba\x07l\xeb\xbe\xd0\xad{\xc0\xb7\xc6 \\S1\xae\xe8\x1c\x9eB\xb9f\xc4\xb9r\x91\xae\x91X\xd7\xechW\x1a\xef:\x1a\xf1\x02W\xabd\xc9\xa6!`\xde\xa4\xc0\xd5j\n\x16\x96B\xc3\xe6\xc1\xc32A\x9e$&6\x02\x15K\xfa\x89\x8cD\xc6\xc0\xd5\n\\\xad\xc0\xd5\xaa#\x13\xf0\xb3|\x04\x0d\\\xad\xac\x80\xab\x15\xb8Z\x81\xab\xd5\xa1LG\xdc\xbc\xc9\x81\xab\x95\xf7\x83,\x8c\x0e\\\xad\xe6C\xec\xc0\xd5\xeah\x97\x8d\xe9\xe5\xa3z\xc7\xbaZ\xb9\x00\xac\xf9\xdeV\xbd\x90\xadA\x87\xabA\xe8\xdb\xb8\xcfU\xff\nO\xf3\xe6\xef\xc0\xed\xaa\xaf;\xf0\xbc\xcaB\xb8\xa6\xe0[\xe0y\x05\x9eW\xa3P+\xf0\xbc\x02\xcf+\x9f\xcc\x8cP\x81\xe7\x95W\xf2q\xa9i\xa8TD\xe9)Lj6D*\x0f\x8f\x1a\x85F\xcd\x8cE\xa5\x90\xa8#q(\xf0\xbc:\x90i\xb8\x13x^\x1d\x896\x81\xe7Up&\x06\xcf\xab\x03\x99\x80'\x81\xe7\x15x^E\xb4w\x04f4\x021\x1a\x8f\x17e\xa3E\xe0y\x95B\x87\xc0\xf3j^D(t\x0cN\xa1A\xe0y\xd5\x95q\xd8N6\xb23\x12\xd7\x19\x83\xea\x80\xe7\xd518\x0ex^e 5\xc7\xf7\xa4l\x94&\x17\xa3 z^\x9d\x0d\xee\x07\xbcg\xe7\xab\x1e\xcc2\x83\xffU\x1f \x02\x17,+\xe0\x82\x05.X\xad\x80\x0b\x16\xb8`\xb52\x05\xcc\n&\x06.X\x872\x13\xb0u\x1c\xb45\x01\xdc\x9a\x05\xde\x9a\x1d\xe0JB\\\xf7\x00r\xdd\x17\xccu\x0f@\xd7\x18\xa8k*\xd8\x15\x9d\xc3Sp\xd7\x8c\x80W.\xe45\x12\xf4\x9a\x1d\xf6J\x03_GC_\xe0\x82\x95,\xd94(\xcc\x9b\x14\xb8`M\x01\xc5R\xb0\xd8<\xc0X&\xda\x93\x04\xc7F\xc0cI\xff\x91\x91\x10\x19\xb8`\x81\x0b\x16\xb8`ud\x02\x90\x96\x0f\xa5\x81\x0b\x96\x15p\xc1\x02\x17,p\xc1:\x94\xe9\xd0\x9b79p\xc1\xf2~\x90\x05\xd6\x81\x0b\xd6|\xd0\x1d\xb8`\x1d\x0d\xec\xcd\xd3\xe7\xb2\xc1\xbd|xo\x94\x0b\x16g\x8c\xe8\xb3\xdd\xe9\xf5\x97\xd6!\xeb\xb2\xfdQ\x9c\xfej\x7f\xa3\xab\xdf\xc2\xbeX\x1d\x9c\xcf\x04A0\xfb\x88iKE\xd6\\\x9e3\x93'\x17@\x94\xd7\x1d\xd0\xa89\x05\x0d\xe90v\xd9\xe4\x8ea0\xd4R4\xad\xc3\xbd\xa7\xa65\xc6&\x15\x94\xa1\xe1\x1ek\xf8\x93+\xa87n}\x8a\x8a\xd7\xd6\xdb\xd5\x02\xd8\x94\x13C\x0e\xcdQ\xd4\xbe\"kz\x1b\xd3\xd0`\x14\xecvTj\xbeP\xc3:V \xb4\x93\xd4\xb0\xfd#f\xbd\x9c\x91\x802G\x83\x92+rw\x99\xae\x0f\xcaou\x94\x07\xa2\xa2\xac\xb5K\xc9\xcfZg\x17FeT4:\xc4rk\x15i\x960\xa5\xca+r\x171\xe6#k\x15+8\x13\xb2\xaa5\xb3\xf1\x8a\xdc\xa1u\xc5w\xfa\xf3\x0b\xac\xe3\x18\xae\\Z\xfap\x1fMnI\x10\xde\xef [=U\xdf.\xfe\x1fr\xa7\xfe\x7f\x12/\xc3\xf0\x0b]\x89\x13]\xf8\xc5\xe2\x99\xdf\xc4\xbd\"%\xbe\xbb\xdc\x93\x8a\xf2cv\xef\x19\x0c\xeaA\xef\xd5\x19#\x93\xf1\x94\xd9;g\x168w\xa3\x7f\xd5\x1e)\x9b\x1dX\xf7lm\x07rc\"\xf4\xa6\xd6\xd9Rx\x9fw\xce\xf1\xc6\x16r\xf0V\xaf\xccn\xaf*$\xaf\xc8jx>\xd6\x03\xd87f\xf7xC\x99>*{\x0e\x9c\xa6\xe3\xb7\xaf4G\xdf\xc3W\xa7\xbb\x080r+/\xafH`\xa9Nv\x96\xe4 \x8e\x07\xe0s\xe2J\xe1x\xcc\xeaOK\x0c\xc2\xc2\xee>/\xf0\x86\xbc5\xd1\xfe\x16\xe6y \xb1_jR\x19\xf2\xbdJV)\x90\xa0\x1d\x17\x12\x11M\xb7\xd1\x1c\x9d\x05:\x97\x1d\xab\xdc^\xde!\x1a\xb9\xb8\xa7\"\x9a\x8b\xc58\xda\xf1\x8a8\xee\x95\xaf'K.\xf1\xd4k\x892\xc6]j6\xd4\xd9k-\xea?\x8c\xdf\x87\xea\x82\x8e.\xd6\xe1&\x85\xea\xdbU\xb4^v.ub\xa1\xe9\xea\x06\x0b$\x88\xf8\xe1\x05\xbf\x01?\xbc\x9e\x80\x1f\x1e\xf8\xe1\x81\x1f\x1e\xf8\xe1\xf5$\xd7'\n\xfc\xf0\xb4\x80\x1f\xde\x1f\xc1\x0f\xaf\xc7\x90\xeb\xa44 \x7f5X\x9d\xe5g{\xf9\xc6\x9f\xeeJ\xb0\xa1\x8f\xc5\xa9eBvX\xb4>\x87\x8b\x8e{a\x0b`\x9e\xe9O\xdfi\x16\x90s\xc3\xe8\xd0\x0e\x0c=\xc8\xe3\x95\xd0$u\xc8\xbc\x0b8jtr\xb2/>Z\x9f\x8d\xa6\xbdW\x97\x87\xaa\xed\x8as\xe0H(\xcb\x11\xa4\x0f\xbf\x9f\xceN9\xd6o\xa3_\xf4(\xa3>\xae\x03\x94\xaa\x07J\xd6\x05e`\x9a\x19UB\x99v1#\x93\x90\xcdHz\x07\xc6\xad\xc8 i^t3\x89o\xce\x8dp\xe6c\x9c3\xa1\x9c\xd3p\xceHr\x94\x8d@:\x8f\xc6:\xe7F;G\xe2\x9d3#\x9e\xe30\xcf\x91\xa8g\xac\x0f7xh.\xee93\xf2\x99\x85}\xce\x88~\x1e\x8b\x7fNB@g\xc2@\xa7\xa0\xa0\x91\xc44>\x9a\xc6A\xef\x05 \xbd?,\xf4^\xd0\xd0qx\xe8\xec\x88h.&:+*\x9a\x8f\x8b\x8eFF\xc7c\xa3\xc9\xa9\xf0Y\x06::\x03>\x9a@H37T\x19(\xe9\x98]\xd7h\xa44\xb6\x08.\xf95\xc9\xc0Js\xcb7#^:\x061\x9d\x193\x9d\x86\x9a\xc6z\x90H\xe3\xa6\x93\x91\xd3@j*\xb7\x14v:\x17z\x9a\x0d\x01f \xa8\xa30\xd4\x84Y\x7f\x12\x8e\x9aJ3hM\x9c M\x1d\xaf\xcc|D5U\xb7 \xa8\xeaD\\5\n\x1de`\xab\xf3\xa2\xab\xf3\xe0\xab\x19}\xe3h\x8c5\x1be\xcd\xc3Ys\x91\xd6\x8c\x8e3\x1em\x1d\x83\xb7F\x10\xd7\x990\xd7\x91\xa8\xeb4\xdcu\x14\xf2\x9aRzt\x08\xa5\xbe\xcdG`\xe7\xc3`\x93\x85\n\x8e\x9f\xf9\x90\xd8\x0c,v:\x1a\x1bHN\xbd\x16\xc3cgFdS\x98\xecDT6\x90\x969C\xc7\xcc\x08id6\x8a\xcd\xce\x8f\xce\xce\x8e\xcf\x86\x11\xda91\xda\x1c\x94v\xf8\xdd)\xfc\xed\xc5\x99=\x8d4\x1f\x81\xfb\xfb\xe0)\xb8\xbf\xe7L\x84F&\x91D\xc0\xfd=\x87\x1a\xe2\xb3\x11\x8c&\x86L\xa1\x85\x80\xfb\xfb\x8cd\x901T\x90QD\x10p\x7f?\x96\xfe1\x81\xfc1\x0b\xf5c<\xf1\x03\xdc\xdf\x8f!|\x8c\xa1{\xccL\xf6\x90YT\x8f\x19\x89\x1e\xb94\x0f\x8f\xcd\x02\xdc\xdf\xfb\x92A\xec\xc8\xdd%\x8d&u\x80\xfb{\x16\x95c\n\x91\x03\xdc\xdfC\xaf%\xc9\x1b#\xa8\x1b9\x8e\xd3ch\x1b\xe0\xfe>\xc5\x83\x909\\\x91s\xa9\x14\xa3\x89\x14\xa3h\x14\xe0\xfe>\x91:\x01\xee\xefN\xee\xc3\xfd\xfd\xd1\xfb\xbd;d\xd8\xf8&\x9f:\xdc\xfb\xf4\xd7\x01y\xe0\xb7S\x83\x90v\x1e\x98\x1f\"\xf7\x13\xfa\xdd\xe5]\x8e\x1e\x8f\xf9\xc1\x9d\x1a\xf38\xcd\xf7\xf2\xb3\xef>Z\xbf\xf9A{\x84\xd0\xc2It\x908\xe8\x97\xb4w\xe5\x18\x8cf\x87\xfb\xf2\xc0\xbe)P_\x1c\xd2\x9b\x04\xe8\xe9,\x02 &\xe1\xbc\x19\xc0\xbc\x89P^\x984\x98\x05\xe4\x1d\x05\xe3M\x02\xf1\x10\x0e\x92\x913!\xbc)\x00^\xcc\xac\x9e\x05\xdf\xcd\x0c\xdeeAw3\x02wI\xd8n&\xd0\xee\x18\xc8n4`7\x03\\73X\x97\x80\xeaf\x07\xea\xee\x07\xa6\x9b\x1d\xa4\xcb\x87\xe8\xa6\x01t\x11\xa5\xa7\xe0\xb9\xd9\xc0\xb9\x97M\x8b\xc8'F\xfc~\xfcx\xdb\xd2\x0c`\xfe9\xb3\x08\xc2\xe9\x07y\x1f@\xd8\xf7\x95\xf7X\xffe\xdd\x8e\"\xecf\xdcB\xa0\x17\xfa\xcd\xc6\xa7\x18\x97e\xa7\x13\xb8\xd5\x8b.\x8bn\xcb\x8az\xb9\xe3\xab\xba$ ?b\x93\xf6gN\x0f\x8f\xd4\x7f\xb8\xab\xab\xae\xf4\nc^j\x82\xf5K\xbd=\x1c\xaa\xa9\xaf\x94V\x82\x85BI\xbcr\x87o/\x1d\xbc|)\xe9\x8e\\\xeeIu\xb9,yqu\x7fT\x91\x1c\xfb\x98.\x1a\xdd\xd5;\xd4\xa0\xdf\xaaxhO*\xa4\x8b\x87\x9eR\x86\x18f\\\x90\x82\xb3\x95xvb\xac\x96\x92\x07\xd2#l\xcd\xab\x82\xd8\xafW\xa4\xc4w\x16\xb0l4\xed`\xb8\x8a\xacKR\xc8\x18`T\xe2jC\x84Dx\xc7k\x8b@R\x07\xbfJ\xc3\xe7\xa2\xccZZ+\x82\x05gx\x19\x04\x8b$\xbe\"\xdaZfa\x0c\x95\x00#\xb7\xd2\x96\xb5f+R!\xa6)0n,\xf8\x99+\xc8\xf8\xab[\xce\xc8B\xf5q\xbcV\x85\xe1\xb4\xd0\x8b\xf2\xd7\xcf\xbf\xbd5\xcb\xf6P\xab\x81\xd4t \xfa].\xde|\x03R\x85\x19\xa3s\x90)\xecL\xd2\x92(\xdaR\x01\x8bb\xf0\x14X\x14\xa9n\xda\n\xb0(\x80E\xe1\x17`Qh\x01\x16\xc5\xa1\x00\x8b\x02X\x14!\x01\x16\x05\xb0(\xb4\x00\x8b\x02X\x14\xc0\xa2\x00\x16\x85\x11`QL!\"\x00\x8b\x02X\x14\xad\x00\x8b\xe2P\x80E\x01,\n`Q\x00\x8b\x02X\x14\xc0\xa2\x00\x16\xc5\x1f\x81E\x91\x81\xd6\x9bh\x12:\xd4\xb8\xf93\x06\xd6\xdb7z \xbdj\xac\xf3\xef\xcf\\\\\n}\x04\xc4\x06\xd5\xf4\xa3\xf2\xf6=\xfb\xec\xd1\xa2\xf1}ut\xe5S\xc0\\\x81\x88\xe2F\\\x10\x0fc\xaf\xb3\xb1C\xecJe\xab\x81\x08\x0bY\"3\xccC\x84\xd5\xbb\xf0n\xfb9z\xf7\xfe\xe5\xfbW\x97\x1f^\x9f\xbf>\x7f\x7f\xfe\xf2\xa7\xf3\xff\xfb\xea\x87\xcb\x0f\xaf\xdf]\xbc:;\xff\xf1\xfc\xd5\x0f\xc9/\xd5w\xc9\x97\xde\xbf\xfd?o.^\xbdN\xbe\x97\xf5\xd2\xd9Oo\xde\x05\x0b\xe6P\xe2\x89\xf5\xca\xb1G)1\xbe\xfe\x8e\xc9A\xed\xb0\xd1\xad\xa5#Uh\xf4\xc36\xa3A\x1a\xc2-d{\x88\x88\xccV\xa6\xca'HU\xe6\x04Ym\x9e \xf5_u\xfe\xed\xd52r6L7\xf7\x0bd\xcf\xb2\xe8\x9d'\\\x8c'%\x95\x8e\x1a\xd8\xae\xf6j\xed\xfa\xcfZ\xe8\x9e\\i\xea\xc1\x96\xa8ID\xdbz\xb7\x98\xad\xc4\x16_yM\x81\x83\x84m%\x87i\xe3B\xad\x93%Yml\xdaM\x9aHH\xb2w\xe0J\xc1k&I\xb5\xc7\x95\xbc\xebOh\x91,}\xf9\x15\\\xad9r\x98\xd9\x02\xbd\xd9\x13\xd6N\x9c\xb8\n\xeb\xaa\"x\xa5\xf1\nA\xd8J/\xf0\x15)\x08\xbd6\xc7\x1a\"\x03va-\xfd>?,\xdc\x92\xa82\x94\\\x10\x93n\x81\x19b\x1c\x95\x9cmH\xa5\x96xK\x9619k>\x84\xce8\x98_\xb4@\xbcZ\x115\xd1$\xa6\xb2\x9b-\xb1\xd6w\xd2\x1d\x13\xfak\xa2KQ3\xfb\x8f\xfb\x9b\xd5\xde\xbc\xfd\xe1\xd5\xdb\xcb\xd7o^\xbf\xca\x18\xf4\xed\x07\x1f^\xeb\xffg\xbc\x19\x7f\xaf\x99\x85F\x95#w\xf2 U\xef\x05\xfa;\xa9\xf8ssDR\x9b$\x7f\xbc\xa9V\\\x8b\xc6\xfa\xdf@1/\\\x1f\xd1\x9dm\xa9\xe6\xc0\x92^\xeb\x96U[=vg\x12=\xb1\x9b\xc2\x1d\xbeC+\xaa\x11\x83u\xc5wf6P/\xc4\xd0\xa8&\xcc\xd3\x1d\xba!\x15Q\xbdWF\xc7H\xafI\xda\x12\xe2\xaa[D\xe5\x12\xc1R\xcd\xd01.\x05\x81\xe0\x98G\xcc5\x10\x175Y\\\x88\x8b:\x10\x88\x8b\xfaI\xe3\xa2\xe68\xf2\xd8\x8dN\x96\x03\x8fs\xd9\xe9C\x01N\xc0q\xc7\n8\xee\x80\xe3N+\xe0\xb8\x03\x8e;\xad\x80\xe3\x8e\x04\xc7\x1d\xbf\x80\xe3\x8e\x13p\xdc\x01\xc7\x1dp\xdc\xc9\xdc%\x81\xe3N#\xe0\xb8\xd3\x15p\xdc\x01\xc7\x1d\x8f\x80\xe3\x0e8\xee\xa4\x94\x0f\x8e;\xc1o\xc0q\xa7'\xe0\xb8\x03\x8e;\xe0\xb8\x03\x8e;=\xc9u\xa2\x00\xc7\x1d-\xe0\xb8\xf3\x8f\xe2\xb8\x13\x0b\x7f\xdaR\x81\x16W\xa4\xbb\xd6\xc5H6\x96U\x83\xed\x14Z\x11YW\xccp'\xba4\x82EC\xc1\xd1\xc6\xb0\xcd\xc0j\xa4\x89\x01\x96\xbf\x16\xa5\xd5\xbca\x1aN\xd7\xa7e\xbe^\x0b\"\xd5N\xbd_\\\xd41\xe6\x0b\xd2#\xe7RfI\x08\x9d\xdf\xda\xf0\xa5k\\\x8a\x11\xf1K{\xa6\x11\x8f\x12M\xf9Bz\x1c\x98%le\xb4*Y\xbd#\x15-\xdcoz\xb4YB\xb3\xb1\x0bm s\x8a\xafYc\x8a\x1b\xecZ\xcfuj%\x11\xa2U\xa11^\xd5\x1a\xd2\xbd\"#\xf5\xd9O\xfe\x9e\x95\x1b\x08L\xdbQoIw4W\xbb\xfa]\x87\x1c\x87\xb8K\xc6L\xdb\xed\xc1\x16g\x1e\xde\xc7\xbf7F\x99\xeeO\xe7kT\x92\xb5t\\/K\xfer[Cma6\x03\xc4d\xa2\xf4\xbc\xbc3l\x08\xbc\xdf\x7fB-v\x19X\xed\xf71]v\xbeP\x1a\xd5=\x94\xeb\xd0\xbfH\xfdA\xd9\x8a\x16Xv\x02\x91\x1a\x0d\xea\x17mG\xea&GYQ\xd6\xab\xc1\xc6\x0f\x9b\\\x1a\xb0o\xd0b\x1a:\xee\xd8\xa0\xd5\xd4\xdd!2\x0e&\x97\x0f\xe7b\xd0Z\x83*\xe8\xbdrE\x84\x05\xf9\xf5\xf0j\xc7\xa3\x1ar\x0b;\x9a\xe8\x86\xf1\xa1k\x88\x1b\x8d\xfd,\x8cf\x8em\xd8%\xe7%\xc1,\xd6\x80\x15\xb9&U\xef\xd3X\xe3\xd9\xb7\x87\x0dG;\x0c\xbe\x8a\xf8GB/\x1d\x95\x071t6\xcd\xc5\x1e\xee\xcb\xdfQVho\x03\xb1\xe3\xe2\xb9X]\xa1/\x16\xdf|=\xab6&\xf9\xa0\x9e\xfe\xdaR\x8f\x7f;\xdd\xf3J\x8a\xd3_-\xf5\xf97\x93Z\xc4A\xb5\xf5Oe\xda5\xf5\xac\xef\x05\xe0sG\xfd\xccU\xedq{\xa3\x06){\x8e\xf8\xec\xbb\xbe\xdd\x11\x19;\xec\xfc\xc3d\xa6\xf3\xf9\"\xae\xa9\xc78\xa6&\xc1\x8f\x98\xfbV\xd2G1\xf1]\xc4!5\xcf\x1d5\xc3\x195\xc3\x15\xf5(G\xd4\x1cte^'\xd4\x84\x0b\xea<\x0e\xa8\xc9\xa6\xcdt?\xbd'\xe7\xd3\x07w=\xbdW\xc7\xd3\xe9n\xa7\x0f\xeat\x1a)L\xdc\xe1t&w\xd3#\xe7\xaaQ\x0e\x9e\xb9n\xa69N\xa6S\\L\xf3\\9\xc6\xba\x97&\xddH?\x81\x13\xe9(\x17\xd2\x07p M\xbb\x8fNq\x1e\x8d\xae\xfc(\xb9\xfa\xa3\xb4OZ\xc6\xf8@\xd9\xeb\x15\x9a\xdda4\xdf]4\xed\x0e\x97Y\xd5#\x1dE\xb3\xdcDe\xc2I4\xea\"\x9a\xacE\xca\x03iN\xe7\xd0L\xd7\xd0\x11\x8e\xa1Q\xb7\xd0\xa3\xeb>\xafCh\xd8\x1d4=`\x86\x0e\x92{\xba'%e\xc4A@j*z\xceY\xe1\x96s7Q\xf9z\xcc\x92\xc8\x1b\xb5j;f\x93\xaf\x19\xcc\xbd3\xea\xa4\x8e\x04\xd9\xe3Jm-\xb5\x1b\x91\xee\xc9\xc2\xa9@o\x84\xa4!4\xeb\xfd\xa5\x7fn*\xf0^\x9b\x0d\xf8\xda\x97\x97\xb0\xe7\xdaf\x9e\xd5\x83H\xa7\xd5\xf9\xd2n\x1c:/\x1e8_V\x9c\xafG\xd1\xe8\x13\xac+\xdb=v\xa4\xba*\x89I^\x15\x84\xdcR! +\x86\x1f\xe8\x17\x82\xceE61\xeb\x07\x82e\xbbV\xd8\x94o\xb0@\x15\x91\x15%>\xca\xe2\x11\xc7:p\xd3J\x16\x17\xdc\xb4\x06\x02nZ\xbf\x137\xad ^Z\x83\xd4\xbaNZ\x83G\xdf\x13\xa1\xe9\x8d*\x89\xb3v\x8bs\xa2\xc9\xc2\xc6\x8c,\x10\xb6\xf3\x97%P8\x15\xaa\xbd\xf9 \xb9f\xc6\x1b\xe6\xe3\x99\x00\xc1a\x0c\x1c\xc6\xc0a\xcc\n8\x8c\x81\xc3X+\xe00&\xc1a\xcc/\xe00\xe6\x04\x1c\xc6\xc0a\x0c\x1c\xc62wI\xe00\xd6\x088\x8cu\x05\x1c\xc6\xc0a\xcc#\xe00\x06\x0ec)\xe5\x83\xc3X\xf0\x1bp\x18\xeb 8\x8c\x81\xc3\x188\x8c\x81\xc3XOr\x9dw\xc0aL\x0b8\x8c\xfd\x11\x1c\xc6Z\xdaR'\x99\xdeQ\xdaQU\x0c\xbc\xe1\x0f\xd1M\xd9\x8b!\x02\xd0:\x02\xc8\xaaN\xba\xbb4N\x11\x86-\x16*\x8b>\xe0\xdecA\xe6\xf7G85$\x85\xcb\x0e\x11\xde\xe7\x9c\xd0\xb1WXT\xf4L\x7fg\x18\xd8\xcee\xc1a\xaf\x96\xf8`(\xf3\xcd\x8f\x03(\xb6e\xfb\xb7]\xb7\xa1\xfd7\x1b\x9f\x86\xd1\xda\x12\xb0b\xae\x10\x9dR\xd9\xb7\x1e\xadWDS\xa3\xd5\xe5a\x1bt\xc5\x11\xee\xbaJ\xf5\xb9J\x0c\x15\xdc|?\x9dGc\x0b\x16\xe2\x0c&Mv\xfd\xa2G\xa3\xe7\xc7u\x80R\xf5@\xc9\xba\xa0\x0c\x186\xa3J(\xd3\x94gd\x12\x18\x1bI\xef\xc0\x1e\x179\xd4\xcd\x0b\xc8&!\xd9\xb9A\xd9|Xv&`v\x1a4\x1bIN)4\x1b\x9c=\x1a\x9e\x9d\x1b\xa0\x1d \xd1\xce\x0c\xd2\x8e\x83iG\x02\xb5\xb1>\xdc@\xb8\xb9P\xed\xcc`m\x16\\;#`{,d; \xb4\x9d \xb6\x9d\x02\xdcF\x12\xd3\x90n\x1a\xba\xbd\x17\xf0\xf6\xfe\xe0\xdb{\x01p\xc7A\xb8\xb3\x83\xb8\xb90\xee\xac@n>\x94;\x1a\xcc\x1d\x0f\xe7&\xa7\xc2g\x19\x80\xee\x0c\x90n\x02\xd4\xcd\xdcPe\x00\xbbcv]\xa3\xc1\xdd\xd8\"\xb8\xe4\xd7$\x03\xde\xcd-\xdf\x8c\x10\xef\x18\x90wf\x98w\x1a\xd0\x1b\xebA\"\x0d\xf5N\x06{\x03\xa9\xa9\xdcRp\xef\xff\xcf\xde\xdbv\xc9\x8d\x1b\xf9\x9e\xef\xf5)b\xfb\xc5\x95\xfa\xdeR\x95\xdbOs\xb6\xefz\xcf\xaa%\xb5]s=R\x1d=\xd8;;g6\x9b\x95\x89\xcc\xe2T&\x99&\x99%\x95e\x7f\xf7{\xf0D\x82$\x1e\x02H\xa4T\xdd\x8axa\xab+I\x10\x04A\x10\x88\xff/\x02\xb9\x04_\xb4j\x89\x10}\xa3d\xdf\x80\x12\x91$\xfd\x86\xcat:@3 \xc0\xf1\x8d\x89\x17\x81C\xf7\x96 \x04'J\xc1^\xb5\x0b!\x07\xe7\x15\x84\xf3H\xc2\x88\xbeq\xb4,\x8c\x16\x86q\xd20V\x1cFt\x9cx\x818F\"\xf6\x88\xc4\x99d\xe2H\xa18M*\x8e\x12\x8bC\x8d\xee}\x85B\xe7\xe2E\xe3|\xb2q\xb0R\xce\xf7'\x9fx\x8c\x90\x8f\xd3\x05dGq\xfc0\x9f\x84\x9cYD\x0e\xc9\xc8\x89B\xb2\xa3,\xb9\x86\xf6\xb9\x11\xc2b\xb2WN\xce/(g\x97\x94\xdd\xa2rNY\x19#,\xc7K\xcbQ\xe2r\x82\xbc\x1c+0{%f\xbf\xe0\x87\x97\xfc\xb02s\x82\xd0\x1c)5{n7Env\x14eH\xb9\xb8W\x02'9{\xba|\xb5\xf1\x8b\xceYe\xe7\x80\xf0|\x1a\xe99W_\x8c\x90\x9fc\x04h\xd7\xf4\xc0\xa2\xb8\xcd\x8e\x0b\xaf\xf6\x8d\xbd\x9e\x0d\xad\xd4\xd8\xef\xd9\x14\xf4\xe4\xda\xdd\xe6\xf12\x06Gy\x86\xad\xb9\xa7;=S\xa2\x00m\x94(`fq\xd5\xa5D\x01\x13\xa3D\x01_4Q\x80\xea\x9a\xb3\xec]f\x8a\x00c\xc0\x9df\x0bxc\xcb\x16`+\xea\xc2Q\xa0\x91=\xa0?\x8d\x02\xf6'\xbfR\xc0>f\x1c\x94\x96\xc4\x88P\xc0>\x86\x0c\xb1\xb9\x08\xa2\xb9\x90\x14*\x84\x02\xf63\xb2 1$H\x14\x07B\x01\xfb\xc7\xd2\x1f \xecG\x16\xf2#\x9e\xfb\xa0\x80\xfdcx\x8f\x18\xda#3\xeb\xd1\xa1H\x8f\x8c\x9c\x07\x96\xf2\xb0\xb8,(`\x7fl\x08\xae\x03;K\x8af:(`\x1fEr\xa4p\x1c\x14\xb0\xef:,\xc8nD\x90\x1b\x98P\xef\x18j\x83\x02\xf6Sb\xdeC\x94\x06\x05\xec\xe3\xc9\x0c$\x97\x81\xa12pL\x06\x05\xecC\"\x85\x11\xc1`P\xc0~\x06\xe6\"H\\\xa4\xf2\x16\xce\xef&\x05\xec\xcf\x8c\x02\xf6)`\x7fb9\x82\xa7\xb1$E4G\x11EQP\xc0~\"9A\x01\xfb\xda(`\x1f\"+r\x8a\x80}\xadT\xcbX\xe9\x0b\xad\xc3_|\x9a\xc0\x0c\xff\xbc\x90\x8a\xad\xf1\x83\xfc\x83g\x13\xc2\x7f\xcc\xe3\xfc\xf5\xe5\x1c\xa1\xfe\xbdn\x8e\x8d\xf6\xcf\x10\xe4?\xaa\x92:\xf0\xc1\xc6\xf9O\x9e\x97K\xdeL\xc2W:\xafJ\x19t\xd0a<\\\xd9\xf5I\x9c:\x99\xa2M\xfa5\xc8$\x05R\\\xc2Q`P\x7f\xcc\xa0>&j\x8fn\xc8\x11\xa5<\x1e\xa5;&\xa9\x8eP8\xe1\xe9\x0e\xa79\xa6(\x8e>\x1d\x00\xa57fV\x1bQZcF\xa51\xa83fR\x19\x8f\xd1\x18\xa3\x15\xc6\x0c\xfabfu1\xa0-fW\x16O\xa3+fW\x15\xf1\x9ab\x9a\xa2\xe8i\xf4\x90\x9e\x98MM\xc4i\x89\x96\xa9\xbc{|\xcd\xac#\x86T\xc4#5D\x8f\x82\x18\x9c\x9e\x04\xd5C\xdc\xfc%\xafr\x18\xd2\x0d\xc3uJ\xd3\x0c\xf5\xc8n)0\xa4\x18f\xd4\x0b\x8fP\x0b\xed\x1a\xbfO+\xcc\xab\x14\xfau\xc2\x1c*!J\xe6\n(\x84h}\xd0\xed\xae\x8e\xd7\x06\xddeY\x9dFYT\xc1\x98\xc6\xc2*\x82\xe16A\xab\x81 Z\xa0K\xa3\x08\xe9\x80\xf9T\xc0\xe35@\xef\xf3>R\xffC\xa9\x7fa\xed\x0f\xa3\xfcy\x1b;V\xf5\xc3j~\x0e\xc5/\x83\xde\x17\xa1\xf6\xc5k}h\xa5\xcf#\x909\xab\xe39\x07\xab\xf0\xe5\xd1\xf7\xbc\x95\xb7\xfc\x92\xa4\xeci\x15\xcfR\x9eC\xd7\xcb\xac\xea\xb95\xbdTEO\xf8Gl\x15\xb7\xebyy\xd5<\xd728\xa4\xe49u\xbc\xbc*^\xba\x86\xe7\xd0\xeb\x92\xd4\xba\xa02\x17\xa7\xcb\xa1U\xb9HM.F\x91s\xeaq\xee\xda`u\x11\x9c\x16\x17\xa9\xc4E\xe8p\xd6[\xcb\xab\xc1\xb9\x14\xb8#\xf47\xabw\xc6\xa9\xbe\xa5io>\x9d-\xbf\xcav|OB+lX}m\xfe\x05\xd4q\xc8\x13\x8d\x05\x9f\xfc\xd7\x93\xbf\xd7\xbb\xfa\x1e\x07@_\xbe\xb0_r\\\xadI!\x14qL\x11\xc7\xbd\xc5U\x97\"\x8e'F\x11\xc7\x14qL\x11\xc7\x14q\x1c\n\xb7 \x8f\x83\xd22+\xfaXM?M\xd5w\x16F\x11\xc7\x14q\x85\xe4+\xfa\x92T\xbd\xac!\xd8\x96\xab\xa8\xc3\x1el\x00\xf6\xa8)\x17\xaa\x05\xa2t\xe2 \xc0\xa2\x08\x01\xd1\xc4}\xd3\xea\xb6\x9e\xbd~@x\x14\xe1Q\xa6\xc5U\x97\xf0\xa8\x89\x11\x1e\xf5p\xf1\xa8\xe1[1\x86\xa2\xf8w\x97\xb5\x9d\x9c\xf4\x07\x99(\xcbW\xa7/\x90\xe0(i\x04G\x11\x1c5\x18\xc1Q\x04G\x0dFpTGp\x94\xdd\x08\x8e\xd2Fp\x14\xc1Q\x04G!gI\x04G\xf5Fp\x94i\x04G\x11\x1ce1\x82\xa3\x08\x8e\n5>\xc1Q\xces\x08\x8e\x1a\x19\xc1Q\x04G\x11\x1cEp\xd4\xc8\xb0\xa0\n\xc1Q\xc2\x08\x8e\"8\xeak\x83\xa3N\x0d\xea,ZV\xad\xdc\xb4\x8e)c\xbee\xd5j\xce\xe7\xf0\xf3\xadp\x0e\x1a\xca\xe1\xe5>\xd2-\xf3\xb3 r\x8663\xcd\xeb\xceJ\xc1qD\xd3\x12\x8b32bqf\x16W]bq&F,\xce\xc3eq\xa6\x9f\x89|L\x8e\xf8\x98\x11\x88#\x8d@\x1c\x02q\x06#\x10\x87@\x9c\xc1\x08\xc4\xe9\x08\xc4\xb1\x1b\x818\xda\x08\xc4!\x10\x87@\x1c\xe4,\x89@\x9c\xde\x08\xc41\x8d@\x1c\x02q,F \x0e\x818\xa1\xc6'\x10\xc7y\x0e\x818##\x10\x87@\x1c\x02q\x08\xc4\x19\x19\x16\x8a \x10G\x18\x818\x04\xe2\x10\x88s4\x88\xc3\x87Y\xd6-\x8a%\x7f)\xb7l\xb5\x11~\x9d\xd6M\xe3\x18\xae\x8b+q\xee\xb3\xc9\xa9=\x9e#\\\xfcjJ\xc3:\x98^\xa2/f\xd8%k\xe8\xc4\xd2a\xe1\xc5w\xecWWG>X\x88\xc7\xde\xd0\xa6u_@\x9fT\xdd\xe1\x08\xdf\x9c\xf5\x9d\x14\xef\xc3\xf0\"\xd8\xa7\x02C\xef\xcc}\xf9\xd9\x9bh\xaf\xc08_\xd4\xdc\x10\x97G\xe0/\xd3\xa1B\xbe\x14\xfa\xda\xf6\x9a\xad\x8a\xae\xc8P+\xac\xbf\xb4\xffL\xf2\xebN>\xa8m_\xe3\xae\xe8\x92\x1d\x9c\xf2\x9d\x95\xdb3 \xf5JMn\x85\x8b\xae\\\xaaE\x00\xe3\xef\xa1R>4\xa2e-\x8eO!\xda\xaen\x1cStU\xe3e\xbd\xdb\x95\x9dx\xdb\xcef\xef\x9f\xf4\xec\x8b\xa4S\xfb\xaeu,\xb2\x9f\x17\xdb\xad ]\xf4\xc8P^o%\xeb\xc1\x0b\xe3SCS\x8d4\xebo-\xae\xac:\xd6\xec\x1b\x01\xf5\x94\xad\xfd\x92z\xcfB>\x08\xf6\xf5\x9fU_hH\x85\xae\xfe\xf4\xa9\xec\x8bMY\x89\xf1\xd2\xc9\xc7\x0d\x87\xf4\x83\x9ec@Jb\xe1\x04\xb2x\xcb\xee\x8f\xa4\xca\x9c\x1dx\xd4\xe7f\xf8\x8e6]\x0bM\xec\xf0\x7f*\xfd\xabh[)\xf2]\x15\x1b\xf6F\x92<\xe7\xf2wGa\x7f\xe3\xdf\\Q\x8c\x00%\xf7|j\xb6\xab\xdb\x0e\x98P\x95\x84\x14u\x0e\x97\x9d1\xf9\xdcw\xf7P\xba\x00\x8b\xee\x865LH\x8eU\x0d\xbb\xbaaZb\xb4\xbdc]\xdd\x15\x0e\x88\x04\xdd\x98aD\xcf\xa9\x9b\x88\xcb\x8bV\x14\xff\x18R\x1fjU\xd4\x90\xe0\\\xf7k6\xf4\xb2>T\xddB\x14\xe6\x9a\xbf~(ZhYw\x06e\xd7j\xb1\xb7\x85C%G\x8f\x95\xd4\xbf>\x94\x96n\x1b\x1e\x8fdU\x0c\x9a\xab\x1e-\x16\xca\n6o\xae\x9e\xf7/\x86\x9e\x89\xb7\xf0\x81?3\xdb\xe3\xb1\xb3\x04\xcb\xba\x91e\x08\xeeB\xf3bz^\xcf\xd7@BZ3[\xc6\xda\x1c\xfa\x8c\xb7\xf5n\xa8\xb7\xd7\x0b\xd5\xb0=\x13\xca\xc7\x0fE\xd3?\xa4\xc0bw\xdc,\xa2\x7f\xbb\x96\xbbS?Z\x00\xc6\x95\xaf\xce\xf5\xb6^\xde\xba\xe0\xcb#\xc6\x1a\xe2n\x83\xd5%\xeevb\xc4\xdd>\\\xee\xd6\xb2\xbe\xeb\xda\xe3\xe0[\xc7\x82\x95\x10\\i\x84\xe0F,2 \xc1%\x04W\x19!\xb8\x84\xe0\x12\x82K\x08.!\xb8\x84\xe0\x12\x82\x8b\x9d%\x11\x82\xdb\x1b!\xb8\xa6\x11\x82K\x08\xae\xc5\x08\xc1%\x047\xd4\xf8\x84\xe0:\xcf!\x04wd\x84\xe0\x12\x82K\x08.!\xb8#\xc3\xe2\x90\x84\xe0\n#\x04\x97\x10\xdc\xaf\x0d\xc15*\xd2\xa3S\xe7\xb7\xec\xdeU\x9f\x89\xb6\xa9(\xa4B}Z$*+Y\x13\x13\xbb8\xef\x91%\xe1$\xdcL\xbci\x02\xa4\xd0\xd8\x99\x0fCz] \xfc@x\x11\xea\xf5\xbae\x1d_\xc1\x8c\xab\x0b\x86\xc8\xd1\xb2\x11D\xc6\xdb\xeao\x8a1\xd664\xd6\xba\xd8\xb6\xc1\xd6r\xb8\x8c,\x8d(\xeb\xe7j\xc7\x89\xbbF\xdd\x8ch\xca\xea\xb0\x13\xf0\xa0\xfa\x9b\x18\x85\x96E\xc5\xefG\xfa\xcbnX\xa5\x1b\xfeP\xf5.\xca\xc9l\xfeR\x94\xb6em;4\xa1t\xea\x1d\x84\x04~\xcb\"\xdbs\\\xfc\x89\x1b\xd7\xb1%\xac\xd1\xbc\xdbrWb[W\x1c\xab%v\x17\xeb%\xdd\xd7f\x0f\x96s$\xfe\xeb\xa8\xb4\xbdtV\x99\x7f\xba\\\xc3\x96\xad;\xcd\xc6)XNO\x99\x85\xe7]\xbe \xf2\"\xbc\x9d\xaf\xef%=R\xec\xf7_\xb0\x15Mbm8\xdf\xd7\x96\xc6\x19\xbcEE\x0f\xad\xc5@\x03\xfc\x1fe\xb5*\x97E\xc7\x06\x82H\xb6\xa08Pu$\xb3\xb8\xb2Zn\x0f\xab\xc9\x84\xb8\x90W\xe9E\xd0\xc9\x13\x13\x92\xba\xe1\x9b\xe7\x9f4\x03\xfc\x9c\x0c.\xef/\xa7\x18\xec\xe4\x16\xc4\x1a\xa2a\xad\x82\x1f\xc4\xeb5\xbc\x8f\xfc\x95;WoS\xb9\xa9\xeaf\xa2l\xe8\xb7q| \xd92\xc7>\xd8\xeb\xba\xde\xb2\xa2\xf2=\xc0\x86\xdd\xb1ft\xaa\xef\xe1\xa9\xa3\xa7\x0f\xae4\x88\xc7\x86\xd9\xdf\x84Q9\xfc\x1aL\xe2\x7fu\xb3b\xcdt\xbd\xf2\xb6\xac\x96\xfcS[\xb7\xbb\xba}\xda\xaen\xe1W\xe7\xbf\xfd\xcd\xc9ZC\x84|\x0cXq\x9fT\xb4u5\xcb\xb6lE\xef\x9aP\xeb\xed\xb1\x0fl\x8a\x80X\xe0\x0f\xa7(\xe1D\xdf\x96\xf5v\xcb\x84\x1b\xfaGu\xc8\xee\xb0\xedJu\xc4Ich\xda\x8bO\xbam\xfe)/b\x0b\xa1\xb1bH\xa2\xedJ\xc6?h\x02i_9\xe2f\xf8\x84\xfd\x06\x1f\x10\xa3\x0e\xfc\xb9\xc4\xc3D\xf1E\xb8|\xb2\xba\x19\xfb(#)\xc5\x98\xf4\x98\x98\xf3O\xd5\x0f\xcaoK\x9cmoq\xd5%\xcevb\xc4\xd9>\x04\xcev\xd6\xb1\xdcPl\xcf\xd9\x9aQZ\xea\x9d\x9b~\xe4\xc1\xf8\xbe\x88\xb9\xe5L\xe5VC\xb0\x1c\xa2\x8am[\xebi,\xff\xda\xc9\xe1J9\xb6u\x8b\xad\x9bz7\x0ci\xb3\xf2<#\x1c\x91\xbb\x93_\x89\xdc\xc5\x8c\xaf\xd2\x88\xdc%r\xd7nD\xee\n#rwnD\xee\x12\xb9\xeb2\"w\x89\xdc\x15F\xe4.\x91\xbbD\xee\x12\xb9+\x8d\xc8\xdd\x14\xf8\x95\xc8]\"w\x07#rwnD\xee\x12\xb9K\xe4.\x91\xbbD\xee\x12\xb9K\xe4.\x91\xbbD\xee\xda*\xa2\x11\x1dgM\xc6\x94S\xce*8H\x82\xd3AIF\xf2K7\x90\xf4\x8fiN\xdf\xe7\xc3Y\xaet\xbeF\xc1\x02Ib\xad\x99\xc8W\x17\x87\xce\xe3k\\Q\x1d\xf4`\x91\xa5Y\x93\x9a\xd6}\x01\x81\x94\xb2\xf7R\xf6^\xca\xdeK\xd9{){/e\xef\xa5\xec\xbd\x94\xbd\x97\xb2\xf7\x86\xdf\x92\x8e\xa8b\xa2\x8a\x89*\xce@\x15\xfb\xb2\xf7\x1a\xab\xba\x1c\x99{\xcde)%\xed\x95F\xe8o\xc4\xda\x92\xd0_B\x7f\x95\x11\xfaK\xe8/\xa1\xbf\x84\xfe\x12\xfaK\xe8/\xa1\xbf\xd8Y\x12\xa1\xbf\xbd\x11\xfak\x1a\xa1\xbf\x84\xfeZ\x8c\xd0_B\x7fC\x8dO\xe8\xaf\xf3\x1cB\x7fGF\xe8/\xa1\xbf\x84\xfe\x12\xfa;2,\x86I\xe8\xaf0B\x7f \xfd\xfdz\xd1_J\xda\x1b\x97\x11\x95\x92\xf6\x9e\xb0q\xc3\xe9f)io\x8eV\xa4\xa4\xbd\x94\xb4\xf7\xe7\x99\xb4\xf7\xb3\xc4\x85\\|\xda\xf7 l\x87T\xc0\xff\xbc8T\x82L\xbec+\x91\xdaV\xd6\xc3\x16>b\xb4\xff\xfb\xfe\x9cg\xcb\xdby\xec\xc8P$\\\xfe\xf0|\x86s\xf7\xc5\x18\x91$\xfd\xdf\xc6\xa1$\x92\x1e\x9f\xe6!\x1e\x05\x96\x8c\xeb\xa2\x8ex\xb0Q%\xfd\xbdd%o\x9c\xbaP\x00=Tl\x97\xce\xfbl<\xb7i:b[\xeeh \x9a\xb4#\x9a\x94hR\xa2I-G\xa4\xd0\xa4\xe3\xa1|\x8e\x92\xaa\xff\xeeB,\xe9\xe4\xf3D\x0c\xa94bH\x89!\x1d\x8c\x18RbH\x07#\x86\xb4#\x86\xd4n\xc4\x90j#\x86\x94\x18RbH\x91\xb3$bH{#\x86\xd44bH\x89!\xb5\x181\xa4\xc4\x90\x86\x1a\x9f\x18R\xe79\xc4\x90\x8e\x8c\x18RbH\x89!%\x86tdX\x9e\x8f\x18Ra\xc4\x90\x12C\xfa53\xa4sZ\xc6U+\x0dP`\xa8\x89\xf8\n~\xa6\xed\xb3\x97\xed\x9d\xf1\xfb\xae\xac.\xc5u\xe0;\xf5\xd7\xcfK)\xd9\xf6-\x1f\xc1J\xf2\xb8X^If\x18\n\"K\xaa\xf0\xe9v\xd2}\x81\x86\xa3'\x85TR\xb5P\x07\x11\xac$-\x19V\xdaO\xf6\xab\x9f\x9cJ\x8c\x121J\xc4(\xcdK\"F\xe9(FI\x0d\xe290%\xca{G\xcc\x92\xe3wb\x96\x0c#f\x89\x98\xa5\xc1\x88Y\xea\x88Y\xb2\x1b1K\xda\x88Y\"f\x89\x98%\xe4,\x89\x98\xa5\xde\x88Y2\x8d\x98%b\x96,F\xcc\x121K\xa1\xc6'f\xc9y\x0e1K##f\x89\x98%b\x96\x88Y\x1a\x19\x96\x1f!fI\x181K\xc4,}\xf5\xcc\x92\x8d\x9dqUN\xe3\x14\x1e\x86\"\xbez_\x17\xb1\xa4\xdb\xec\x9fn\x16i*\xf0\n\xe8\xa4d|\x98\x13{\xe3\xae\xe6\xfb\xe0\x8a\xed\xb6\xad\x1c\xd1\xb40u\xcc\x83\xc5\x88\x86{\x8a\x92j\x03\x9e\xbd~s\\\xd1n\x13PK\xcd\x8d\xe4\xdesb\xf8\x9c:\x92\xf6M]\xafOP\x9f\x1dkn\xb7L\x16\xcf\xdf+\xf6\xb1l\xbb\xc9\xfe\xf2\xa0\xaf\xef\xa4lTa\n\x88(:\xf5\x89\xe1w%K\xfeP\xb4\xfd\xb6\xcb\xf39\xaa\xf3!AP\x95&^)X]\xe2\x95&F\xbc\xd2C\xe0\x95f\x1d\xcb\xba\xa5f\x8f+\x99[\xbb\xab\xd7M\x92\x90\x8e=\xc6\xd7b\x17s9\xdcN+'G\xa7b\xdb\xd6: &\xff\xb2\xc9\x91J\xb9\x07tc\xad\x9bz7\x1d\xcd\xa6\xa5\x15\xb3\xfd\xd6\xe7C\x1d\xd1P\x93_\x89\x86\xc2\x0c\xb4\xd2\x88\x86\"\x1a\xcanDC #\x1ajnDC\x11\x0d\xe52\xa2\xa1\x88\x86\x12F4\x14\xd1PDC\x11\x0d%\x8dh\xa8\x14\xa0\x88h(\xa2\xa1\x06#\x1ajnDC\x11\x0dE4\x14\xd1PDC\x11\x0dE4\x14\xd1PDC\xd9*\xa2\xb9\x1cgM\xc6\xc8S\xce*8\x90\x82\xd3\x01I\"\x93\xc4\x1eI#\x19\x9e\x15)\x0f\xbf\x91g\xf7T\x12\x9f\xa8+\xa8a\xd2Hb4\xbaf\x82vP\xd9w\x0c\xe0a\xa4\x13\xc8\xc2V\xbc\xf3\xf5\xbeF\x0b\xc7\xa4\xae\xad\x0ex\xb0\x10\x93\xbe]\x97V:\xdd\xdf\xb0\xffU\x8a\xf3\xaa\x92\xb0\xde\x16\x1b1\xdf\x12\xfb\x14\xcaV\x17\x88\x10\xf1I\xda\x88O\x9aY\\u\x89O\x9a\x18\xf1I\x0f\x9dOR\x1f\x01<\x9c$q\xa4\xe9\x98e\x85\x93\xf40\xeb\x81\x94\xce\xfc\x94\x92mh$J\x89(%\xd7\xefD)\x19F\x94\x12QJ\x83\x11\xa5\xd4\x11\xa5d7\xa2\x94\xb4\x11\xa5D\x94\x12QJ\xc8Y\x12QJ\xbd\x11\xa5d\x1aQJD)Y\x8c(%\xa2\x94B\x8dO\x94\x92\xf3\x1c\xa2\x94FF\x94\x12QJD)\x11\xa542,1B\x94\x920\xa2\x94\x88R\"J\xc9Y\x93\x07N)\xd5U%\xb32\xb5\x17\x9f\x86\xff\xf8g\x8f/\xb91$c\x83\x9d\xe7\xfd\x89\xcf\xd5iC\x86$\xb5C\x9b.o\x96\xea\xa7\x80\xe1\xb2}\x81\xacZYs'\xcd/\xa4\x8ez\xb0\xe0\xd1\xb8\x1dM\xeb\xbe\x80\xfc)\x18\x07\xa7\xe3O\n\xfd\xca\x8f+\x8f\xd53\x18\xfdr\xb3\xca\xe5\xa1F\xb8\x0dYu\xd8\xb9WaO\xe1\xed\xbbg\xef^.\xde\xbf\xba|u\xf9\xee\xf2\xd9\x9f/\xff\xbf\x97/\x16\xef_\xbd\xbdz\xf9\xfc\xf2\xc7\xcb\x97/\x82g\xf2\xf3\x82\x07\xbd{\xf3\xef\xaf\xaf^\xbe\n\x1e\x87:\xe8\xf9\x9f_\xbfuVL\xd3\x03\x89\xf7\x85\xf1Sr{+\x9e\x93F.\x04\xfb\xa7\x9f\x96`{\x84*\xa6\x1e\xa3T\xa0\xdcOH\xf5\x90\xd6\xf3\x15\x93\xb7|\x06\xfcf\xce@\xb5\xe6\x19\xf0\xff\x85\xba\x81\xd1]z|\x06\xe1\xc7\xfd=(\x1f\x87\xbc\xc3pI\xbc\x1c\xfeb\xeb\xbb\xe7s\x9a\xff:\xb4\xa2'7|\xbc\x11\x92\xc3\x9e \x0d\xe0\xa6\xa8V\xedMqku\x11O\nV79-\xdb\xd8.T\xd1'\xbaLh;\xb6\xd7\xa2\xdb\xb2>T\x1dk\xf6E\xd3\xddK\x9a\x12qI\xdb\xf5\x965\x9f\x8bt\xd3\x8b\x9d\xc3\xeb=\xab\x8c\x01\xb6q\xb7U\xc3\x8a\x95\xd0\xb1ZV\xad\xc4\xc4O\x81\x91z\xcbLD\xd5d\x07\x98VN@\xa5\xcbm\xdd2Y\xee\xb2\xa8\xa0\xaaa[W\x1b\xd6\xf0\xa9\x9f\x10-\xf4\x95\x05'#.\xec\xbc\x9e\xb7Bu\xb3b|\xa0 \x0ce\x1fn\x98Re\x98\xf9N\x88\xb3\x99\xa8\xc5\xa1R\xffq\xbaQ\xed\xf5\x9b\x17/\xdf,^\xbd~\xf5\x12\xf1\xd2\x0f'\xbc\x7f%\xfe\x1fq\xa4\xff\xb8~\x14\x8a\xaa\x07v\xf0q\xdd\xde\xf7\xf0w\xd6\xd4O\xe5\xd2\x99O\x9eU\xf3;\x0b\xd2O\xd4\xd7\xff&\x0d\xf3}\xbf\xcf+\xefl\xd7|\x0c\xdc\x96w\xe2\xc9\xf2%@u/\x0b=S\x8b\x85]q\x0f\xabR(I\x82\x0f\x13\xa3\x01?\xc0\xa7R\xf6\x10\xd9=|`\x0d\xe3\xbd\xb7\xf3\xbe#\xa3G2\xd4\xb0h\xcc\xea\xb1\x8f\xc5\xb2\x13\xf0\x9eQ\x0b\xdb\xa5\xacW2\x07\x94\xd0\xb7|2\xf6\xa0\xbe\xe1\xce\xd9\x05 f\x18\xe2\x1899\xf79\\\x11\xef\x15DtCPWu\x8f\xb9\xaay\xeb\x0f\xca+\"\xe4Zoyb\x9c\x1a\xcd~\xdc\x0f~X\x1de\xb8i\xfd\xec\x86\xc7\xe5\xbe-G\x07\xd1\xb3\xe4\xc5M\xbdw>(\xdf\x04T\x9as\x1a*\x0dq?.xt0\x9d\xc1v\xa8\xb4\xb1bk\xcf\xc4\x04F\xbe\xc6JA\xe5\xcf\xd1\xdd\xf5\xd4\xfb\xd6\n\xf0\xccC\x7f \x8eA7\xb1pOtMq\xe7\x18\xa0\x14_q\x84b\x1en\x87z_\xf0\xd5\xaa\xae\x92\xba\xa4\x1e\xbc\xca\x16\x8aM\xc3\xd8\n\x0e\xfb\xba\x82\xd5A\xf8\xc1|hK??\xb0\x1e\x11xE\xf1w$\xde:\xeb\x12{\xb0\xf0\xdb\x81\xbf^\xff\x19\xf7]\x123l\\\xea\x02Vj)\xd9O\xa1\x0b\xa3_\xf0\x05\xea\xe0k\x157[8\x86O\xfd\x85\xb3\xfe8TW\xe5\xb3\x9d\x8f%\xd6\xbc\xce\xa8e\xf3\xb4\xac}\xb1)+\xb1f\xb6\xac:u\xde]}\x88+a\xe4Qa\x1e\x15\xfb\xd8-n\x99\xe3\xf3\x14|\xdaA\xbed\xd4V\xb3\x9d~\xb5\xe9Z\xe8\xbd}\xf9?\x15nU\xb4j:zUl\xd8\x1b\x99i\xf8\\\xfe\xee(L\x02\xec\xbc\x18^,o@\x06\xbb\xba\xed\x80 \x88I\x90O\xe7p\xd9\x19\xbe\xce}w\x0f\xa5\x8b\xe7\xe5\xdf\x1f&\xe6\x05U\x0d\xbb\xbaa\x9ah\xb3}e\xba\xba+\x1c\xcc2\xba1\xc3\xd1'\xce\xd1I\\^\xb4\xa2\xf8\x87\x8c\xdd\xe1\xddSCx\x06\xf1\xe5\xba_\xb3\xa1\xc5wl!\ns\x8d\xd0\x1f\n>\x88wgPv\xadf\x0b[8T\xf2%]\xc9\xef\xf7\x87\xd2\xd2m\xc3/\xbf\xac\x8a\xb1\xefs=\xf2M\x97\x15l\xde\\=\x1f\x82\x15\x94\xe3\xb7\xe5\xeb \xeb\xe2\xca\x81\xae.\xebF\x96!0_\x9d\xcfZ\xbb\x91\xf9\xaaI,\x8a\xcc\x96\xb16\x87>\xe3m\xbd\x1b\xea\xed\x15=\x1b\xb6gb\xac\xf8\xa1h\xfa\x87\x14\xd0V\xc6\xcd\"\xfa\xb7K]\x99\xca\xb6\xb4E?\x85\x94QH\xd9\xbc$\n)K\xd8\xa2\x7f\xee\xe3\x9f\xee\xd1\xff\x06\xbdG\xbf\xa3@\xda\x9f_\x19\xc5zQ\xac\xd7`\x14\xebE\xb1^\x83Q\xacWG\xb1^v\xa3X/m\x14\xebE\xb1^\x14\xeb\x85\x9c%Q\xacWo\x14\xebe\x1a\xc5zQ\xac\x97\xc5(\xd6\x8bb\xbdB\x8dO\xb1^\xces(\xd6kd\x14\xebE\xb1^\x14\xebE\xb1^#\xc3\xc6\xddP\xac\x970\x8a\xf5\xfa*b\xbd\xe6\x019\xd3X\xaf\x01\xd6\xfb,QV\x03\xaet~\xcb\xee]\xb5\x9a\xe8\x89\x8a\xfc)\xd4\xa0\xde\xb0\xee\xd0T\x92\xef0Q\x87\xf3\x1e\x13\x12\xee\xb9\xcd\xc4\x8f%\xe0\x05\x05\xdby\xd1\x9f\xd7\x95\x90\xfc\xc5\xfa\xbd^\xaf[\xd6\xf1\xb5\xc3\xb8\xba`\xc8\x0b-\x1b\x91\xc4\xbc\xad\xfe\xa6B\xb5\xb4\x0d\x8d\xb5.\xb6m\xb0\xb5\x1c\xce\x1aK#\xca\xfa\xb9\xdaq\xe2(Q7#\x9a\xb2:\xecXS.\xf5\xdf\xc4\xfb\xaf\xe8k\xe9\xa9\xbaa\x95n\xf8C\xd5;\x07'\xf3\xe8KQ\xda\x96\xb5\xed\xd0\x84\xd2\x9dv\x10\xb2\xf3-\x8bl\xcfq\xf1'n\xdc sai\xdem\xb9+\xb1\xad+\x8e\xd5\xca\xb6\x8b\xaf\x92\x8ec\xb3\x07\xcb\xd9 \xffuT\xda^\xba\x89\xcc?]\xaea\xcb\xd6\x9d\xe6\xd1\x14\xa0\xa6'\xab\xc2\xe7-_\x10y\x11\xde\xce\xd7\xf7\x92\xd8(\xf6\xfb/\xd8\x8a&%6\x9c\xefkK\xe3\x0c\xde\xa2\xa2\x87\xd6b\xa0\x01\xfe\x8f\xb2Z\x95\xcb\xa2c\x03\xb5#[P\x1c\xa8:\x92Y\x9c\xca3;n\xceB^\xa5\x97\x1f'OL\x88\xd9\x86W\x9c\x7fL\x0c\xd8r2\xb8\xbc\xbfl'Okr\x0bb\xf6\xde\xb0Va\x07\xe2\xf5\x1a\xdeG\xfe\xca\x9d\xab\xb7\xa9\xdcT\xf54\x8eE\xbf\x8d\xe3K\xc8\x969\xf6\xc1N3\xa6[\x1e`\xc3\xeeX\xd3:Cc'\x0fO\x1d=}p\xa5A\x196\xcc\xfe&\x8c\xca\xe1\xd7`\x12\xb9\x13\xe0\xf8t\xa5\xf0\xb6\xac\x96\xe2#\xd7\xee\xea\xf6i\xbb\xba\x85_\x9d\xff\xf67Y[\xc3\x19\x82+/zQ\x1c\xba\x9b\x8b\xbb\xef\xaeYW|wQ,\xe53/\xabu}\xf1\xa9X\xad\x1a\xd6\xb6\x9e\xf4\xff\xcf\xe4\xf1\x97\xd5\xba\x1e\xa2l\xe5\xdf\x80\x971\x10\xe3\xcbz\xb7\x93\xf3\xa2b\xbb\xed\x8f\x91b\x92*u\xf4@\x1e[\x9b\xe6_\x1e\xabcG\x91\xb8F-\x1e\xe9&z\xa0!\xb8\xbcQ\xe6\x0e\xa1QUD\xbb\xa91\xd8\xde\x96\xfd$W:\x06~(Z\xa6\x9a`\xbe\xd6r\xd6\x11\x82\xd4\x8az\xfcIT\xe0\xfep\x1db\xae=\xa1=!\x9a&\xcc\xd3\x04+(\x0d\xa3\xc9HK\xa2j<\xe5\xcd\x84\x15\x8fw./Y\x13dkr\xd35x\xbe&\x13a\x93\xc6\xd8x\x8a\xe3\x0d\x8a\xa6l\x8e\xe6lr\x936\x91\xacMf\xda&\x8e\xb7\x89$n|}\xb8gq\xb0\xccMf\xea\x06\xc5\xddd$o\x8eeo\x92\xe8\x9bL\xfcM\n\x81\xe3)L\xb09a\x06\xe7$\x14\xce\xe98\x9c\x93\x908q,Nv\x1a\x07\xcb\xe3d%r\xf0LN4\x95\x13\xcf\xe5\x04\x87\xc2o\x11dN\x066'@\xe7 'T\x08B'f\xd6\x15M\xe9\xf8>\x82\xd7\xf5\x1dCp:\xd8\xfaedubh\x9d\xcc\xbcN\x1a\xb1\xe3\xebAm\x98\xd9I\xa6v\x1c\xa5\xf1\xab\x85\xb8\x9d\\\xe4\x0e\x1a?A\xd0;Q\xfcN@RNbxBe:\x95\xacL$O|c\xe2i\x9e\xd0\xbd%\x10=\x89L\x8f\x17[@p=y\xc9\x9e=\xd0j\xe6i\x93q\xe8t\xca\xf9\xcb\xf7g\x16\x12B\xae!}N3\x13\xc8\xac\x03\xa6B\xdb\x98\xb9\nf\x13L\xbb\xe0\xfah\xa8\x0c\xe5$\x18\x19\xe5$\xc0z\xca\x12\xd5S\xcaI\x80\xd1L\xb3(\xa6)z)\xe5$\xc8\xa8\x92\xc6h\xa4Q\n)\xe5$8V\x17MPE\xb3h\xa2\xf1\x8a(\xe5$8F \x8d\xd1A3\xab\xa08\x0d4\xa3\x02\x8a\xd5?-\x93y\xcaI06\x84\xe2\x89\x9d%E\xab\x9d\x94\x93\x00\xa5q\xa6(\x9c\x94\x93\xc0uXP\xd5\x8c\xd041\xd1\xec1z&\xe5$H \xeb\x0f\xe9\x97\x94\x93\x00\xafY\"\x15K\x8c^\x89S+)'\x01$\xea\x93\x11\xea$\xe5$\xc8\xa0F\x06\xb5\xc8T%\xd2\xf9\xdd\xa4\x9c\x043\xa3\x9c\x04\x94\x93`b9\xe2\xc3\xb1\x1ac\xb4\xc2\x18\xa5/RN\x82DM\x91r\x12h\xc3\xe4$P\x81qF\x19\xa3u\xb4\xfay\x1a\xc3\xa7\xff,;\xf14\xe4\xf5\x88\xd4\x04)\x11\x9e\x9e\xbdT\x95b\xd8\xaa\xc0\xd6a\xdbT\xf6\xb1l;\xa1u\xab#\xac\x81\x9b\x86\x17\xe1\xaf7\xac\x82e\xb1\xdd\xb2\x95\xdc\xe6\xac\xa8\xa4ghW\xaf\x0e[v&\x1dhrG\x86\x9dN\x06\xdf\x1e\xf8\xd7\x16n\xca\xcd\x0d\x14;~\x9d\xbe\xbcz=t\xa8M!\xf6\x97\xec\xc4\xec\xa4\x0fi\x96\x1f\x00\x99\xf3\xbfn\x1a&v6\x13\x01\xc6\xc3\x99\xde\x98[[\\\xe9\x83\xdf\xd7u\xfcLM\xebHV$Yqd$+\x92\xach7\x92\x15IV$Y\x91dE\x92\x15IV$Y\x91dE\x92\x15{#Y1E\x99#Y\x91d\xc5\xc1HV\x9c\x1b\xc9\x8a$+\x92\xacH\xb2\"\xc9\x8a$+\x92\xac\xf85\xc8\x8a\x83\xa9}\x87\xb5v#\x13\xca\xdaT\xb6\xc9\x99\x83\xda5\x9fm\x8d\xd6\xdd\x86,&7\xaao\xa7j\xd9\x90\xbay\xa6LI\xf3*A~\x1dH'2?2*\xd2\xe9\xfe\xf0\xc7Fj\xeb\xd3\xa9+-\xb6\xcf\xac\x0e\xfb\xa2m\xa5\xcb\xd3\xdc\xf2^\xfe\xee(L\n\x95] \xf5\xfaeg\xbc\x8a\"\xcb\xb5'kQ\xc3\xc4s\xafj\xd8\xd5\x8dN\x01m\xf5(\x89,\xccG6fx\x83v\xa7\x17\xa9O\x02\xed\xca\nn8$]\xf7k6\xb4\x99O\xdbq\xf8\x87B$_>\x83\xb2k\xb5\xeb\xbb\x85C%;\xf3Jz\x03?\x94\xed<\xe3\xb2\xdb\xf5d\xc6\xcc\xce\xb6\xf2nl[y\x8f\xc3h\xa7/\xe3\xb0w\xf7|b\x14\xc8\xedL\xf1\xb4\x93_)\x9e6\xd4{\x07#\xe1\x9b\x84o\xbb\x91\xf0-\x8c\x84\xef\xb9\x91\xf0M\xc2\xb7\xcbH\xf8&\xe1[\x18 \xdf$|\x93\xf0M\xc2\xb74\x12\xbeS\xb4c\x12\xbeI\xf8\x1e\x8c\x84\xef\xb9\x91\xf0M\xc27 \xdf$|\x93\xf0M\xc27 \xdf_\x83\xf0\xed\x8b\xa7\xa5\x1d\xb5\xe3\xb6+\xa6\x1d\xb5O\xd8\xb8\xe1\xbd\xa0iG\xed\x1c\xadH;j\xd3\x8e\xda_\xcf\x8e\xdam\xc4n\xdaC\xe2\x05\xf5\xdf\x8ar\x18\xb6\xb5TE\xe9\x87\x12o@\xc1\x0da\xb4\x01\x036x\x1b;\x16j\xc0\"\x0d\x0e\xa0!\x03\xce\x10\x013\xc4\xa3\x0ch\x90\xc1\xa3\xff;\xab\xe39\x07\x0b0\xe4\xc1\x17\xbc\x95\xb7\xfc\x92\x04.hO\xb4\xa5<\x07\xb6\x90\x19Zp#\x0b\xa9\xc0\x82\xf0\x8f\xd8*n\xc7\x15\xf2\xc2\n\xaeep\x08Tpb\ny!\x85tD\xc1\x81#$\xc1\x08A\xf0 \x0e;@C\x07\x91\xc8A\x0cp\xe0\xc4\x0d\xdc\xb5\xc1\xca\xbe8\xd4 \x124\x88\xc0\x0c\xac\xb7\x96\x171p\x01\x06G\xe0\x05V\xef\x8c\x13.HC\x0b|\x18A~\x88\xe0\xf8\x9e\x84\x06\x08\xb0\xf8\xc0\xf8\x0b\x88\x0f\xedM\x88\xec\x9d\x94f\x06\xf6\x0e\xd7\xa7\x88\xdd\x91Q\xc4n\xa8S\x0e\x96Y2\xc2\x8aFi\xb2\x91\xb30\x8a\xd8\xa5\x88\xdd\xc1R\x04&ga\x14\xb1;\xb7Lb\xd3qrS\x82\xe0\x94Er\xca.:\x05e\xa7\x13\x08O\xa7\x92\x9eN >\xc5\xc8O\xa9\x02\x94w\x0c\x0fIP\x19E(\xac\x0c\x15)De\x97\xa2\xc2b\xd4\xd1r\x14E\xec\x06k\x96&OY\x8b\xa2\x88\xdd\x14\xa1*$U\xe5\x11\xab\x90\nLP\xb0\x8a\x90\xac\x82\xe1\x86\x91\xb2\x15E\xecR\xc4.E\xec\x1a\x96 n\xe1\xe5-\x8a\xd8UF\x11\xbb\x14\xb1K\x11\xbbsK\x97\xc3\xac\xc5Q\xc4\xae\xf5\x04\x94\x80F\x11\xbb\xf9\xe44\x8a\xd8=Zl\xcb\xd3\xe7\xd0\x82\x1b^r\xc3E\xec\"w\xc05\xf3N\xeb\xbfu\xb5J\xa4\xbc\x1e\xbb\xfe>\xeb&\xb8\xb2.\x8b\xeb\xfbE\xb9\xba\xf8T\xae\xc2AY\xcf\xe4)?\xdc_\xbe\x98\xc5g\xe9[\x1b\xe2\xb3\xd4\x0f2pP\xdf\xe5\xa8\x89\x1e[\x03\xd5~\x7f\xfe\xeb\xc7\xeah\xdbN\xb4F%\x1e\xe9&z\xd8\xb1]\x0b\xd56\x11\x1aa\\3\xa9\xc2\x1c\xe9\xabMQ\xd8h\xbc\xa0><)\xc6\xd6\x07\xf6K5\x81\xea\x8f%}x\xf2+\xe9\xc38\xff\"\x90>L\xfa\xb0\xf3H\xd2\x87\x85\x91><7\xd2\x87I\x1fv\x19\xe9\xc3\xa4\x0f\x0b#}\x98\xf4a\xd2\x87I\x1f\x96F\xfap\x8a\xc4J\xfa0\xe9\xc3\x83\x91><7\xd2\x87I\x1f&}\x98\xf4a\xd2\x87I\x1f&}\xf8k\xd7\x87KsX\xf6eq~\xc1\x9f\xfc\x92\xaf\xf2\xce\xc4'F\xcb\x86\xe5\n\xca\xaa\xedX1y\xb2\xfc\xefJO\x1ei\xac\xfdr\x7fP\x99\xaf\x99\x10\x9aK\xb6RZ\xc6z\xf6\xb9P\x9ez\xe1\xcd\xbbf\x8cwn\x95\xb9\x16\x9el\xcb[\xe1N\x9c\\\xa8\xfdV:\x95T\x1f\x1d\x15w\xd8\xaf\xc4z\xb5\xabu)\xbcs\xc1\xfa\xd0\x1d\x9a\xde\xed\xd6\xd7\xf4\xd0\xddH%<\xa3\n\x0ecE\xce\x92\x81wh`\xe4\x132\x9fH|\xcb\x8f\x9f\x9eU\xcc\xfd\x97\xc9\xed\xc7&g\xc5\xe5 \x8e\xe2\x03\xae\xd9\xf2\xe67\xbfv3\x01?\x88\xdf\xaf\x1a\xb6.?\xaa[m\xe1\xda\xf8\xa3:\x01#e[\xf5\xfe\x1f\xe6e=X\xa5_\xde\xf7b/*\x1b\xa1\xf5\xfa=kf\x0b\x04\xe5\xfa\xf1\x03i\xf6\xcbIaQ[4\xff\xbe?\x88\x04\xfdY;\x92\xa0\x8fq\x08\x03 \xfa$\xe8;\x8f$A_\x18 \xfas#A\x9f\x04}\x97\x91\xa0O\x82\xbe0\x12\xf4I\xd0'A\x9f\x04}i$\xe8\xa7h\xe2$\xe8\x93\xa0?\x18 \xfas#A\x9f\x04}\x12\xf4I\xd0'A\x9f\x04}\x12\xf4\xbf\x06A?A\"\xedw\xb5\\\\\xdfw\xcc\xbb\xb7\xa5\x8e\x9d\xedX\xfb\xae~+_\xe4e]\xdd\xb1\xa6k\xfb\x9d/\x9f\xe9Hj~\x18\x7fz#?D\xb2\x9cj\xbb\xb8:\xee\xc1\xca\xaa\xbaae\x0bDHn~\x07\x87\xad)\x82\xfa\xaa\xbd\x0c\xf5\x10\x87Hh\x12X\xcd\x13H`u\xfcN\x02\xaba$\xb0\x92\xc0:\x18 \xac\x1d \xacv#\x81U\x1b \xac$\xb0\x92\xc0\x8a\x9c%\x91\xc0\xda\x1b \xac\xa6\x91\xc0J\x02\xab\xc5H`%\x815\xd4\xf8$\xb0:\xcf!\x81ud$\xb0\x92\xc0J\x02+ \xac#\xc3\x8a]$\xb0\n#\x81\xf5\x97\"\xb0\"2jK\x1d\xd5()c@\xb0\xe1M8J\xea\x95\x17\x08k\xbdR\x1f|W\x0b\xad\xd1\xd0z\x95\xc6\xab\xc6\x9a\xae\x06\xf3\x9e\x8f\xd5xG\x17U\xc7=x\x8dW4@\x94\xe8\xe7\xf1\x11\xa1\xf4\xdfQ3\x05\xf5\xdf\x91j<)\x90\xe4_\xfb $\xff:~'\xf9\xd70\x92\x7fI\xfe\x1d\x8c\xe4\xdf\x8e\xe4_\xbb\x91\xfc\xab\x8d\xe4_\x92\x7fI\xfeE\xce\x92H\xfe\xed\x8d\xe4_\xd3H\xfe%\xf9\xd7b$\xff\x92\xfc\x1bj|\x92\x7f\x9d\xe7\x90\xfc;2\x92\x7fI\xfe%\xf9\x97\xe4\xdf\x91a\xa58\x92\x7f\x85\x91\xfc\xfb5\xc9\xbf3\xbf\xc0\x91\xfao\x94\xd0\xbb\xabW\x87-[\xa8\xfc\xce\xad[\xe0\xfd7q\xa0\n\xdam\x87\xfd\x90\xb7[\xf9V|,\xdbN\xa8 \xe28\x9d0\xba\xf7\x96$k\xbc\xe3\xeb>\xd2\xcd\xf1P\xd5\xddQ;\x9a\xd6\x914G\xd2\xdc\xc8H\x9a#i\xcen$\xcd\x914G\xd2\x1cIs$\xcd\x914G\xd2\x1cIs$\xcd\xf5F\xd2\\\x8a\xbaE\xd2\x1cIs\x83\x91477\x92\xe6H\x9a#i\x8e\xa49\x92\xe6H\x9a#i\xeek\x90\xe6\xa4\xf9\xd7\xc7B:\x1b+P\xe1\xc0\xb9\xf9#\x10\xc5\\L\x14\xb47W\xcf)\x88\xcer\x02\x05\xd19~'\xa5\xce0R\xeaH\xa9\x1b\x8c\x94\xba\x8e\x94:\xbb\x91R\xa7\x8d\x94:R\xeaH\xa9C\xce\x92H\xa9\xeb\x8d\x94:\xd3H\xa9#\xa5\xceb\xa4\xd4\x91R\x17j|R\xea\x9c\xe7\x90R72R\xeaH\xa9#\xa5\x8e\x94\xba\x91aU\x13R\xea\x84\x91R\xf7KQ\xea\x8e h\xbb\xf8\xc4\xdfGO\xe2\xd2\x91*\xf7\xc3=\xef\xde}p\x1b\x7f\x82\xe3x6(\xabu\xcd\xbf\xb6\xea\xcf\xbcpU\xa2;jM\x96\xaa\x0e{\xe8\xa1k.=\xcc!m\xf9\x85-\xbf\xac\x15\xf4\xe8`\\\"\xd9\x05-\x9c\x9c\x95\"f\xf9E\xab$\xc9J\\\xc2Q`P\xb0\xca W%\x8aUN\x17?N\xaa:J\xa8J\x92\xa9\xa0\xd8n]\xad\x88\x13\xa9R$*\x9f\xe3\x18%Pe\x96\xa7P\xe2TFi*(Le\x92\xa5\x8e\x11\xa5\xa2%\xa9\x0c\x82Tf9* Fe\x97\xa2N#De\x97\xa1\xf0\"T\x9a\x04\xe5i\xf4\x90\x00\x95M~\xc2\x89OQ\xd2Sf\xe1)$;\x1d):y$\xa7\xe0\xf4$(7\xe1\xe6/y\xa5\xa6\x90\xd0\x14\xaeS\x9a\xc8\xa4GvK\x81!\x89)\xa3\xc0t\x84\xbcd\x17\x85}\xe2R^i\xc9/,\xe5\x90\x95P\xbaH@RB\x0bJn\xfff\xbc\x98\xe4.\xcb\xeae\xc8\"#\xc54\x16VB\n\xb7 Z>J\x10\x8f\\N\xed\x90p\x94O6:^4\xf2>\xef#\x05#\x94\\\x14\x16\x8b0R\x91\xb7\xb1ce\"\xacH\xe4\x90\x882\x08D\x11\xf2P\xbc8\x84\x96\x86<\x8a\x8a\xb3:\x9es\xb0\x92P\x1eA\xc8[y\xcb/IR\x90\x96},\xe59\x84\xa0\xcc2\x90[\x04J\x95\x80\x84\x7f\xc4Vq\xbb\x00\x94W\xfeq-\x83C\xd2\x8fS\xf8\xc9+\xfb\xa4\x8b>\x0e\x81'I\xde J9qB\x0eZ\xc6\x89\x14qb$\x1c\xa7\x80\xe3\xae\x0d\xd6\x91\x8e\x13o\"\xa5\x9b\x08\xe1\xc6zkyE\x1b\x97ds\x84`c\xf5\xce8\xe5\x9a4\xb1\xc6'\xcc\xe4\x97e\x8e\xefIhI\x06+\xc8\x1c\x178%E\x90L\xd1SJ\xa71C\xa8\x86zQl\xd4\xc8(6*\xd4Y\x07\xcb,%a\xc5\xa449\xc9Y\x18\xc5FQl\xd4`)\xc2\x93\xb30\x8a\x8d\x9a[&\x11\xea8\x19*A\x88\xca\"Ee\x17\xa3\x82r\xd4 \x04\xa9SIR'\x10\xa5bd\xa9Ta\xca;\x86\x87\xa4\xa9\x8c\xe2\x14V\x9e\x8a\x14\xa8\xb2KTa\x91\xeah\x99\x8ab\xa3\x825K\x93\xad\xacEQlT\x8a\x80\x15\x92\xb0\xf2\x88XHe&(dEHY\xc1\xc0\x8eH9\x8bb\xa3(6\x8ab\xa3\x0cK\x10\xbd\xf0\xb2\x17\xc5F)\xa3\xd8(\x8a\x8d\xa2\xd8\xa8\xb9\xa5\xcbd\xd6\xe2(6\xcaz\x02JX\xa3\xd8\xa8|2\x1b\xc5F\x1d-\xc2\xe5\xe9sh!\x0e/\xc5\xe16\x183\x82\x93\x00>\xef\xb6b\xa2Z\x9e\xdd\xc4\xae\xc4\xef\xf0\xb7\x03kJ&w\x11\x1b\xeeD\x8fz\xa3\x88\xaag\x87\xeeF\x9e\xf5H\xd7\xfd\x81\x06R\x99\xf7n\xda\xa82\xf2 \xe9\x85V\x1f\xa9\xa1\x01\xf47H\x06\x99\xcd?\x02^A\xcd/\xa7\xed\x8a\x8f\x8b\x1d\xdb\xd5\x8b^\xfd\xf1\xa8n(\xfa\xf9PV\xdd\xef\x7fk9\xa4\xfb\xb8h\xcb\xcdb[\xeeJKT\x19\xe4\xbb\xc6\xdf\xd9bY\xb7\xddb\xcf\x9a\xc5\xf5}w,\xce\xed\xbc\x18\xbf\x9b;\xd6\x94\xeb{y=\xb6\xfa\xf5\xef~\xf7\xdd\xff\xf9\xb9.\xd7\xb2\xe5\xfe\xd7\xbf\xfb\xfd\xedw\xf9/\x88\x10\xf3\xe5\xbb\x87\xd2\xef\x95b\xaf\xde\xf17W\xcf'\xe5\x91dO\x92}\xd0_\x8dq\xf9\x02I\xf6$\xd9;\x8f$\xc9^\x18I\xf6s#\xc9\x9e${\x97\x91dO\x92\xbd0\x92\xecI\xb2'\xc9\x9e${i$\xd9\xa7\xa8\xde$\xd9\x93d?\x18I\xf6s#\xc9\x9e${\x92\xecI\xb2'\xc9\x9e${\x92\xec\xbf\x06\xc9\x1e#\xa4\xff\xbdW\xd27MQu\x1e%\xfd\x8d\xcaU\xba-[\xe1\x18\xfe\xe9\xd9\xa1\xbb\xa9\x9b\xf2\xef\xd2\xbf~\x06\xa2\x00\xe9\xd9\xe3\x8fP\xfe'\xe3\x9f\xd8\xe1?\x1b\xab\xe4\xfeGqi\xf5\xcb\x83\x95\xdb\xcd\x062\xedK\xe8^\x85\xd9\xf6~\xcf\x8f\xf3\x1a\x80\xb8\x0e 46\xc09\x99\x00\xe9\xab\xd1\x16\xab\xb7y\x0b\xb3;]<3\xf7\xdc\xba\x1b\x84\xb57H\xd0\xdf\xfc7\xa0\xf3\xb6b48\xc8\xa5\xc3A\xa2\x16\xe7-\x907.Z\x8f\x83\xe359\x88\xd6\xe5\xbcE\x0d\xb9]\xf1\xda\x1c\xe4\xd6\xe7 R\xa3\x83X\x9d\xce\xdf\xb3{\x0d\x0f\xab\xd5An\xbd\x0ep\x9a\x1d\xe4\xd4\xed\xe0h\xed\x0e\xd2\xf4;\xc8\xa5\xe1A\x92\x8e\xe7\x7f\x1d\x8a\x96\xad\xc2Z\x1e\x9cF\xcf\x83\x13jzp\x1a]\x0f\"\xb5=H\xd3\xf7BC0N\xe3\x83\xbc:\x1fDh}\x10\xaf\xf7A\x82\xe6\x87\x182\xbfE\xe8~\x90C\xfb\x83\x90\xfe\x07\xf8\xe9\x19B\x07\x84\xc8Y\\\xb4\x1e\xe8-Mh\x85\x08M\x10\"j\x99Q\x1b\x84(}\x10rk\x84\x90\xa8\x13\xfa\xfbU\x1b\xd6\n!]/t\x96\xc7\xaf\x18\xd2\x0c!\x9bn\x08x\xf9\x0b0\xfa!\xc4i\x88\x10rl'j\x89\x80(\xd7\xe3U\xcb\xa4+BR\xe3\xe2\xf5E@\xdce\x82\xce\x08\xa9Z#\xf8\x05\x15\x94\xe6\x08\x99uG\xc8\xa4=\x02\xae\xc7\x1c\xadA\x02^\x87\x04\xa4\x16 h=\x12p\x1d*^\x97\x84(m\x12|\xfa$\xe4\xd2(!V\xa7\x84D\xad\x12\xe2\xf4J@<\x84\xc0k\x16>\x1f\xaf_BF\x0d\x130U\xf3\xbce\xf9\xf4L\xc0h\x9ap\x84\xae\xe9,\x90\x1f\xe8\xd36!\xb7\xbe A\x8d\x13RuNgirm\xefws\x84\xf5N\xf0k\x9e\x90\xa4{:\x8b\xf2\xea\xa1\x90\xaa\x89:K\xf3d\x01\x96\x96O\x1b\x05\x94>\n \x1a)\xc4\xe9\xa4\x90\xa2\x95B\xb4^\n\xfeQ\x04\x02\x1a\x16D\xe8XX\xed\x14R\xf4S\x88\xd5P\xc1\x7f\xe3)Z\xaa\xb30C\xa9\xc4\xbe28M\xd5\xfbBT\x1b\xbf\xae\ny\xb5U\x08\xe9\xab\xe0\xd7X\x9d\xe7\xa4j\xaf\x90\xb1\xefFh\xb0\x10\xa5\xc3\x82s\x82\xc2>\xee\xcb\x06\xa1\xdd\xa1\xa8\xedU\xd1\xb1\xa7]\xb9s\xb5rWv[\xe6u\x81\xf0\x93\xe1\xc3\x0d\xab\x06\xa5VvGQO&\xde\x02\xdd=\xf7\xcd\xa1b\xabs\xb8t/\xdd\xab\xc3v\xcb\xfb\xb8Y\x9e\xfbQ\xaej\xd6V\x8f;\xe9\xe1-d]\x86\xf6\x81'\xd2)\xb7\xac\xab\x95\xf2\xf0\xfb\xa2\x10~\x1a \xa3\x9e\xce\xba+\xee\xa1\xd8\xef\xb7\xc2k\\V\xc29Utl\xa8\xb0m\";r)\xfd\xc3\xde\x9eB\xcb\x86My\xc7Z\xd8\xb3fW\xb6\xad\xa8uW\x03\xfb\xc8\x96\x07\x87g\x8d_W\xcd\xe2\xd4\xb4G~\x19\x8d\x96\xe0-3\xff\xb0\x85\xdd\\\xa3&i\x85l\xd1\x8b\xf8R\xd3\xee\xa5{\xfe\xca\x0e\xba\xbd\xa5\xac\x89\x8a\xafm_l\xca\xca\xd1\x9f'\xd1\xe8\xfa\xc0>\"\xbd\xa8\xcc\xbf\xea\xc8^\x9b\x8e/\xcd\xabj\xfb\xf5\xec\x8a}\xec\x16\xb7\xec\xfe\xc8\xb8f\xdc6\\\x8e\xfe1\xd4B\x876\xf3\x7f*\x85\xa1h[)\xa9\\\x15\x1b\xf6\x86\xfd\xed\xc0\xda\xee\\\xfe\xee(\xeco\x07\xd6H\xc0\x82\x17\xcb[\x92\xc1\xaen;`\xc2O/\x1c\xfc\xe7p\xd9\x19\x9f\x97}w\x0f\xa5gSR\xfe\xc27\x0c\xaa\x1avu\xc3\xb4\xa0c\x9bRuuW\xa4n\xb9\x1a\x8cJ\x0f\x0f\\\xe2\xf2\xa2\x15\xc5?\xaa\xc3\xeeZ\xba\x91u,\x99\x11\xb8\xe4\xba_\xb3\xa1E\xc6\xf7\x85(\xcc5p|(ZhYw\x06e\xd7jy\xad\x85C%;\xf3J*\x08\x1f\xcav\xdc?\x10Q\xef\x12\x81AE\xbd\xdbN\xbfx6~\xc9)a\xbd2\x8a~\xa7\xe8\xf7\xc1(\xfa\x9d\xa2\xdf\x07\xcbJ\xd7\xc4\x905QT\x0dE\xbf\x1fK\xd0$\xd03Y\xc8\x99xj\x86\xa2\xdf\x8f\xa1db\x08\x99\x04:\x86\xa2\xdf)\xfa\x9d\xa2\xdf\xb1tKV\xb2%\x85j\xa1\xe8w\xd7aAz%\x82\\\xc1\xc4M\xc7\x10+\x14\xfd\x9e\x12@\x1e\"R(\xfa\x1dO\x9e \xa9\x13\x0cq\x82\xa3M(\xfa\x1d\x12\x89\x92\x08\x9a\x84\xa2\xdf3\xd0\"AR$\x95\x12q~7)\xfa}f\x14\xfdN\xd1\xef\x13\xcb\x11\x89\x8c%8\xa2\xe9\x8d(r\x83\xa2\xdf\x13 \x0d\x8a~\xd7\x86IX\xafdl\xa3\x8c\xb2\xfa^j\xa9\xc6\xdf\x86\xa4\xf5\xebb;\x92\xf4\xac^\x85q\xe1\xec4\x85\xef\xda\xcdB\xcb>\xc69>7\xc0k\xe5?>\x1b\x9d|&\x81\x0f!f\x8a\x0e-\x95d\xf11UT\xc0\xae\xe8\x967\xd3\x8e\xbd)\xefX\xc5K\x9a\xb9$2\xde\xe5\x00\x04\x9c\xdf\xb2{\xd7}N\x14v%\xa9\x17\xea\x13\xd7\x88|\x05\xc2\xed\xa9T^%e\xf6\xfa\xbbpVn&^=q\x07|X\x0ei\xea\xafyK\xd5\x95\xf0f\xd4\xebu\xcb:\xbe\x92\x1aW\x17\x0c\xb1\xa5e]\xe6\xd6r\xb8\xae,\x8d(\xeb\x87\xec/\xeafDSV\x87\x1dk\xca\xa5\xfe\x9b\x18\x0d\x97E\xc5\xefG\xfa\xedx\x1fR\x0d\x7f\xa8zW\xe9dUq)J\xdb\xb2\xb6\x1d\x9aP:\x17\x0f-o\xea[\x16\xd9\x9e\xe3\xe2O\xdc\xb8\x13B\xc1\xd2\xbcb\xe7\x01d\xeb\x8ac\xb5\xbe\xef\x02\x17\xa4\x1b\xdd\xec\xc1\x8a\x068l'\xf2\xbat\x9a\x99\x7f\xba\\\xc3\x96\xad;\x0dz(\xf2CO\xdd\x85\x02 _\x10y\x11\xde\xce\xd7\xf7\xc0\x8a\xe5\x0d\x14\xfb\xfd\x17lE\x13\xbf\x18\xce\xf7\xb5\xa5q\x06oQ\xd1Ck\xb1\xc3\x08H\xackU.%\xd4%\xb5@\xd5\x82\xe2@\xd5\x91\xcc\xe2\xcaj\xb9=\xac&\x13\xf3B^\xa5\x17c'OLH\xfb\x86F\xc0?\xad\x06\xce4\x19\\\xde_\xb6\x93\xa75\xb9\x051\xfc6\xacU\x10\x86x\xbd\x86\xf7\x91\xbfr\xe7\xeam*7U\xddL\x14\x16\xfd6\x8e/![\xe6\xd8\x07{]\xd7[f\xc4\xf8[\x1e`\xc3\xeeX3:\xd5\xf7\xf0\xd4\xd1\xd3\x07W\x1a\xf8N\xc3\xeco\xc2\xa8\x1c~\x0dV \xed\xb9nV\xac\x99\xae\x9b\xde\x96\xd5\x92}\x0f2\xe7\xcd\xd3vu\x0b\xbf:\xff\xedo\xb2\xb6FJ\xa2\x9d\x0b5M\xb8\xf8\xa4\xfe\xf1OY\x82-\xf5\xce\x1f\xe5\x11\x92\x11R\x8daR|?\x89_\xc6\xf9x\xf8K\xadJ\xd6\x8f~\xf44\x1e[\xdb\xe5\xf7\x8f\xd5\xb1\xf3\xfc<\xfa\xfa\x8ft\x0bQ\x9a\x9e \xa0\xa3\xe6\x99\xc9\xe2\x94z\x80\xc9\xe7S\x9a J\x13Di\x82\xd4\xc4\xd31b\xca\xf3\xba4\x08F\xe8\xea[V)!DV]\xf7\x16\xbe\x10)*U!\xd7b\xfe\xd5\xebw/\xbf\x17\xebvy\xdc\xd0\xc7\x8a\n.\xabN-\x0dze\xcc\\\x1fX\x0b\x94N\x11\xfb\xc5\xdarS\x15\xdd\xa1am?H\x88\x9cH\xf5\xa6\x16\x93\xf1\xf9\x9az\xd4 \xba\x9b\xe8\x19@\xff\xdf\xeaU\x96\xe8DY\xcdd\xbac\x18\xd1\xc9+8L'\x88\x11%F\xf4\xabaD\x8d\x8fI:!j~\x91\xdf\\=\x9f\xde\x04\xe1\xa2\x84\x8b\x06\xde\xca\x13\x90\x16>/\x8d\x9ad\xba:\xa0\xfaY\xbf\x08\xfa?\xbbZ\x0d{\xfd\xf7i=\x86\xb4\xc8\xd5C\xae\x1er\xf5\x90\xab'\xad\x15\xc9\xd5C\xae\x9e\x9f\xa7\xabgh\x8d\x86\xb5\xf5\xf6\x8e-\xc4z\x15\xdd\x10\xc69zdXo\x8b\x0d\xbfy\xf5\xa3\x92\x87\xc5\x01\x925\xbe9\xec\x8a\xeai\xc3\x8a\xd5,M\x1a\x7f\xe5\xa4\xe3\x86\x9f\xb5c]\xb1*\xba\x02\xd3.\xbf\xfbU\xd6v9\xd2\x05vq}\xbf0|\x166_\x98\x9av;\xfd`\xda\xf3\xc5W\xcf^_\xd8\xc8\xc3\xf4CQ\xdd\xaa\x92\x1f\xe9\xfb~\xd8\x1e&\xd748i\xb9\xee\xf1\x13\x05\xa6\xa2>\x1f\x91\xf7\xd4\xb0\x7f(\xa7w(\xb3o\xc8\xed\x19\x8a\xf3\x0b!\x96\xab\xaaW\xa2\x96\xaajq:\xee\xc8\xda(\x8cQ\x19\xadKi]\x1a\x9c\xc6\xea\xfay?\xeb\xa3\xef\xf7R\x0eW\xfc/\xa8\xea\xc5~hG\x15\x8c\xfa\xce\x8aJ-\xea\x0f\x15k\xda\x8bO\xe2\xbf\x85\x9c\xb3>iIs?gi\x8a'\xf4i\x83\x10=\x0f\x94\x86i\xa2a,\xe9\x1b\xa9\xed\x9a\xc3\x92_j`+Ej\xa6\xaa\x1f\xa3y\xef\xb5\x96&zt\xdd(\\\xd2\x11}6\xf4\xf7\xe1\x01\x08\xed\xec\x96U\xc271\x82\x8a\xd55}\xef\xb2|t\xea8\xdf\xdb1P\xd2\xd3\xcb:\x1e\xb7wL\xd6F\x12\xaa0\x92P\x87\x9f\xb0\x8dI\x12\xaa\x98h\x1a\x13\x9a~]j\xbe!|\xa9\xd9/P\x85Sf>\x05\xd2\xc6\x8f\x95)\xb6f\xeft\xe0m\xa6\xc5\xeb\xe4WZ\xbc~\xe6\xc5k\x8c\xcfW\xae\x0c\xcd\xb7dX0\xea\xcfI\xbfn4\x17X\xfc\xdb<}mN\xb5\xda%\x156\xbc\xf4\x06Ra\x95\x9d\xb8q\xc3\xfa!\xa9\xb09Z\x91TXRa\x7f\x9e*l\xb2\x17tq}\xbf\x10\x97\x8eu\x83\xfep/\xae\x11\xe5\x0d\xed\xcb1\x16\xd2\xb1\xdeP\xeb~\xaa\xbf\xfb\xd5\xf9o\xac;\xaa\xce+\xac\x8e\"\xbfco\xa1\xb9(\xf9\x1d\x1d\x87\x84\x1a\x0e\xc8\xef(\x8d\xfc\x8e\xe4w4\x8d\xfc\x8e\xc2\xc8\xef8\xfc\x84mL\xf2;N\xfd\x8ej^\x83s?N\xca\xb2\xcc\xe7\"\xbd\x90|\xe6\xd5\x1fF~\xc8\xc9\xaf\xe4\x87\xfc\x8a\xfd\x90\xb1+:\xf2D\x1e\xd1Z\xe4\x89\x94v\xe2\xc6\x0d\xfb\xd0\xc8\x13\x99\xa3\x15\xc9\x13I\x9e\xc8\xaf\xc5\x13\xd9.t\x98\x86\xdb\x07\xf9\x8f\x89\x0f\xb2\xfd7u\xca(\xfaa\xb9\x15\xa3\xa9.\xae\xf7I6lS\xb6\x1dk\xd8J|\xe2\xfb\xa2\xccO}k\x8d\x86\x18_L\x1d\xf1`}\x87\xfa\xc6\x1f\xc8\xe4\xd1l\x03\xeb\x01\x88\x19\xa0t\x87\x1e\xaa\xb2\x0b8 \xed\xb7&\xcdy\x83\xd2\x10\xae\xbe\xf0\xcdJ\x0b\xba\xfb\x10\xb7\xac\x0d\xe3\x8c2\x8f\xe6\xb3\xd9\xde\xff$_\x08y\x95\xd1\xbe/\x9b\xf2\x8e\xb9w\x1c0\xcb\xe2\x8d.\xf6a\x81C\xd1\xd5\xbbo\xednTi\xec\xe3\xbe\xae\x98\xdfE\x19ZH\x99f,\xaa\x1c\xab}mq\xad\xa4\xebi6\xd4\xbe\xfe \xbf_\xdf\xfdj\xf8]\xba\x9b+\xb7\x17R\xda\xee\xe0\xdb\xf9GZS\x94*\x8d\xecu\xd1\xeaP7\xf1I\x96\x834\xff7\xfb\xdb\xa1\xd8z\xbd\x9e\xd2\xc4\xd3\x93\xa3\xd2\xfb\xaa\xec\x1e\xb7j\xc5\x138\xed;\xf5H\xff\x00\xdf\xfd\xea\xff\xef\xefq\xa8N\xe8|\xb1\x1b\x8f\xf6\x01\x1bwQ\xafe\xdf\x18\xb6\x95Y6\x8c\xcf2\xdc\xdb\xa6H\xeb\xef\x80\x17\xf1\x98\x17\xf18\xb0\xe5\x84\xb4\xbe\xee\x7f\x80\xdf\x9fAwsh\xbf\x87\xef\x80\x9f/\xef\xed\xf7\x88\xbeZl\xcb\xa2\xf5\xbf\xc6\x98AEZ`h\x91\x86~\xe5C.,m\xea\x16`\xb4\xc3\xa2z\xd9\xf5o:\x12\n\xfd\xc2;\x8f\xc1\xf9)a\xf4X\x8d\xf7\xabP\xfe\xf1\xe9\xc6\x0dE\xb0j\xa3\xa5\xf8A\xf5\x16\xf5\"\x95K\xed\x88\xb6\x9f\x1bnJ\xe3\xd32\x1d7u\x93\x9a/\x9a\x98L8\x0b\x93/\xe6hva\x1a\x7fg\x92\xbf\x81\xf8A\x8e_fz/\xe2o\xf2u}2\xac\xc0\xf9/\xfd\xdd9\xcb\x13o\xbc\xf1\xce\xfd\xca\xf1b\xad\xcav\xbf-\x1c\x8e\xf2\xf8;\xf4\xf41u\xa5~=\xa3\xbes\x87\xcd\x86\xb5|\x95\xa0FW\xde\xd3\xfa\x9b\x0d\x15&\xe7\xd2r\xf2\xe8\xd8\x0dF\xcc\xef3\xdd\x9dU\xc1\xfem\xaf_OMu\xe4\xc7\xe2#nz\xab\xcc\xaf\xba\x14\xe9\x9e\xb0\xcd\xf7\xf0\\\x14\x0b\xcf\xf80h/\xb3\xbd\xdf]\xd7\xe9.=|w\x94\x17\x1a\x16\xf8\xbc\x8e\xeaoz7\xb6\xf6\xa6\xfeP\x81\xd8\xe9V\xed\xaf\xe4,M\xdc\xdd\xb3w\xaf\xff\xed[\xb5M\xdf\xd2\xb7O\xb9\xea\xe3\xadH\xd2.+\xa0\x1e\xb7w\xa7\xa2\xd0\x02i\xb0CS~\x86&|\xff\xe6R\xfa)V\xf5\xf2 \xb6\n|R\xf3y\x03_ ?]\xde\x14e\xf5\xad\xf2D) \xd0Y\x92\x91\x0f\xbd\xac\xe4\xfc\x8a/T\xe1\xf5^\xfe5\xbaY\xa6\xaa\x9e\xb4CS.n\x8a\xf6\xe6\xf3\xb4\xcd\x9f\x8a\xf6F~\x05\xdb\x9b\xe2\xd7\xbf\xfb=\xf0KK\xd0\xbao\xb0}]\xea-\x87\xdf\xbf\xb9t\xcf\x0c.\xf9(\x7fP\x8a\xda\x1dk\xca\xf5\xbd\xd4m\x9dg\x88N\xa5/\xb3*W\xd5\xe3N\xed\x12\x96\xb9Y1\xa3c\xbf\"\x0e\x7fz\xad\xe7\x17\xfe\xafj\xf8\xa1\xf4\xcb\xee~\x1b%cMnt\xb9~Yn\x9f\xee\x1a\x8buQ\x15J\xfcG\xea\xb18\x98\xd4\xe3\xac\xeaq\xef\xd5B%T\xb0\x15s1q\xc5Q\xfa?R\x88\xad\xbf?$\x85\x98\xe4\xd48\xad\x8a\xe4\xd4\x136nX\x08$95G+\x92\x9cJr\xea\xd7'\xa7\x863\xdc\x88 \x1cJJ\x15K\xea\xc1\xc9i\xe5\xeb\xe7\xca\xe9\xcfM8uM\xa9\x92\x16\x80A\xf930\xb9 J\x9f!\x8d\xc2\xabM\x04\xa6}\x10\xbc=iA\xc1\x131\x83\x83\xe0\xaaezl\x84\xd4\x19\xd06@l\x07\x89\x15:12\xa7\x7f-0\x18V\xe2\x8ci\x99\xbc\xf2fX\xdc\x8c\x926\x83r\x0f\xc4\n\x9b\xc7\xc9\x9a\x99E\xcd4I\xf3xA\x13!g\x86\x06\ni\x08)\x13\xf92\x87|)\xd2\xf2\x8a\x98\xbe\xd7\x1c\xe7*\xcb,_\xa6\x8b\x97\xa1\xe6K\x11.\xbd\x95u\xc8\x96n\xd12\xd8\x0fp\x83V^\xb9\x12'Vz\xa5\xca\xb8\xfbr\xf6\xa4\x8c\"%V\xa2t\x0b\x94q\xf7\x14%N\xe6\x96&}\xc2d\xdcm8\xbb\\\x92$)j\xef(\x10)H\xa6\xc8\x91\xc1\xe5\x856\xa7\x14\x99\xa9\xd1r\x89\x90\xe9\x12$Z)\xf3\xcb\x8f\xf9\xda#\x9f\xf0\x18+;\x1e':\"\x1b2<\xce\x1d'7z\xc4F\xac~\x91I\xbe \xf5\x82\xd4\x8b\x9f\x8fz1\x9d\xe5\x8e\xba\x9f\x9cVx\x920w\xc6\x96\x08\xb6\x88\xb5#2g\x1d\xe3\xa7\xeas\x90,d\x91\xb2\x1cL*\x12\xfd\xf2\xaa\xe0\xd5\xb7r\xf1\x10\xe1\xc7\xea\x8b\x8b\xf3g\x8d\xae\xa7\x8e&\xe7\xd6\xc8\xc8\xb95\x18nV\xa1\x8f%\xe7\x96\xdd\xc8\xb9E\xce-\x8b\x85\x06\ni\xe4\xdc\"\xe7\xd6\xc8\xc8\xb953\\O\"\xe7\x169\xb7&F\xce-rn\xd9\x0b#\xe7\xd6q\xce\xad\xd1B3\xe8\xe9\x9a\x14\xd7\xf5\xfb\xa0a=]p\xb9bUW.\x8b\xad\xfc\xe0x\xbcm\xd7\x07>\x91X\xb2\xf2n\xd6\x06\xf2\x0bP\xe8\x8d\x88\xd4\xac\xa7\xac\x84C\x81\xb5\x1d9\xd4\xc8\xa1\xf6u8\xd4b\xd9\xaft\x97\x9a\xb8Gu\xb8\xcdsv%~\x1f\xb9\xc6\x86f\xe1C\xfbGQ\x9e\xdaH\xcc\xea\x01\xfb\xa1\xa8ne1\x8f\xf4\xdd\xe7\xbf\x04\x07\x98\xf76\xa5\xc9r\xa6 \xe8\xd8p\xd3\x17\x80\xb7\xacZ\xbd\x94\x97\x84]\xb1o'on1j{h\xbb\xa2;x\x82N?\xdc0\xb1\xc3^\xd1\x8f\x06n\x9f\x07/\x98\x97\xea\x8a\x92F\xdd\xc0\x0b>\xe5\xe0\x0b\xab\xd5\xf7\xf0^\xa6m4\xef\xa8\xact\xcf-[X\xf5\xc7\x9e\xbbj\xf5c\xdd\xc0\x86U\xac-\xdb3>\x13\x93K\x18\xf6a{\xcfg\xac\xbc\x01\xcc\xd6P\x89y\xe7(\xec`\xaa0\xd5\xb9\x9c\xd7}\xdb\xd5M\xb1ag\xb0\xad\xeb\xdb\xc3\xfeL\xa4\x9c\xdd\x15U\xb9?l\xa5\xdb@\xbcabg\xc1!4\xb0t=\x89\xaa\xfe\xa0Y\xf5[\xc6\xf6s\x16w\xb0g\xe2\xe5\x1dO\x02\xffEm\x8d( h\xf6\xb1l;\xe9:\xb8.\x96\xb7\x1f\x8af\xe5\xba\xec\xb2\xde\xed\x8b\xae\xbc.\xb7ew\xcf\x8b\xd5w\xbf.\xb7\xcc\xbaVUS\x9a\x05\xf6\x05\xb7\xf5y\xc4,Q\x0e\xc4\xd6\xa4\x9fs\x01\xb4\x0f<\x91\x83\xbcm\xb4\x14\x83\x1eM\xcchb\xf69'fQ3\x9c\xf9\x0be\x9b\xe7\x98C\xa5\xb95\x81\xf9wVu\xfc\xef\xba\x9f\xba\xde\xb6w\xc3^\xaa*v\xa2;4U;\xf2}\xb6r5xS\xdc1h\xf7lY\xae\xcb\xa5y\xad\xbe\xb0\x96u]Ym\xcc\x18\x8dg\xd5\xfd\xd8\x8f*\x17\x965k\xa1\xaaU\x99\xc5P\xaa*A\xc6\xdc\xa8\x81|\xfa\xbe\x0e\x85\xcbo\xc4\xb9m4\x92C\xb1(\x86_\xc7\x8c\x81\xb8\xbe7v\x90\x0dn\xf1\xfa/\xea\xe7\xd1,q~\xf3\x0fv\x9a\xe8\x1f\xa2\xbf\xc4K\xea\x9do\x05\xdf\xb1\xc0<+4\xc7\xc2LO\xb2\xcd\xad\xd0\xf3*\xe7\x9c\n\x9d\x06\xc0z+\xf1\xb9\x01\xe4x &H\x96\xf2\xd4\xdc\xc2v\x0f\xfbZLy\xf8\xdc\xcdH\xa6\xdf\x8e\xe6Z\xda5\xc2\xcb\x11\xd1uY\x17\x1b\x94\x8a\x80R\x11L\xec\xa1\xa4\"0\x06\x14\\\x06{c\x08\x9a\x94\x17\x91\xb5\xbe\xfft\xd1L\x97f\xba3;\xc1L7\xe8\x82l]\xfdo\xf2\xda\xa8o\x87\x1aB\xfb\xc9\xa1\xfa\xf3}}\x80\x0fE\xd5\x89E7\x1c\xf6\xe7\xf0g\xc6\xa7\x91r\xf0\xebj>e\x1e\x15Wl\xb7\xd3\xe90$\xfa.\xa7\x0f\xd9\xf2x\x1dm\xb7\xac\xb7[\xb6\xe4\xb7\xfb\xa3j\xb9\xdda\xdb\x95\xb3\x86\xa2\xd4\x0da\xa71P\xea\x06e'n\xdcp\xd2\x01J\xdd\x90\xa3\x15)u\x03\xa5n\xf8\nR7\xb4{\xb5\xce]\xa8\x9d\xd7\xda\x8bOj\xb36O\xfe\x06\xa3\xf1\xde\xea\x02~P\xe7\x8f\xb4\xbe\xbexsc7\xfe\xf1\xe7\xeb\xf7in[>\xfan\x8d\x0e\xaf\xf6\xbd \xf9\xcb\xfe\xca\xfb\xd9\xb2\xd8\n\x1d\xa1\xa9wPTbY\xa0\xe4\xb33\xc3\xb5\x04\xbbrs#\x88\x9a\xf6\xb0cP\xc0M\xb9\xb9Q\x9b\x03\xf6\xe5\xd5\xeb\xa1\n\x9b\xa2\xd5\xabg\xe3=\xea\xb7\x11,\xabe\xdd4l\xd9m\xefe\xaf\x0ex\xae4\x132\xf6\\M[P\x1d\xf4`\xfdW\xba\xa7<\x8ci\xf7q\xbe+\xff\x0e\x97\x81\xd3\xc3\xee\x9e\xdc\xbbZ&\xedh\xa9v\xae\xb4\x16\xe8\xdb\xcd2~'\xcbQ\x83\xe8nb,\x1a\xc6cA\xab\x07\x03\x8d9P\xcaM\xf2s\x01\xf9\xb9\xb2\xfa\xb9\xa6\x1f\x17\xab\xb7k3rw\xf5\xdb\xcaN\n4%\xdd\xe9\x8d\x0c{\xce>n-o:\xd2=60\x93\xe4\x1e\x9b\xfcJ\xee\xb1\xcf\xec\x1eS\xb3`W\x07\xd4;\x1a\xab\xc1\xb6\xdf.\\#z\x96\xaf]\xde\xc8W\xf2O\xa5.\xfe\xc9?u\xc2\xc6\x0d{V\xc8?\x95\xa3\x15\xc9?E\xfe\xa9\xaf\xdc?uq}\xbf0V\xff\x91\x8e\xaa\x1fd\x80 \xc2]\xa5\x1cS\x13f\x7f]7\x86\xabJ\x1f\xf3\xcb\xf3Y\xd9i+{c\xaaC\x1f\xba\xe7\xca5!NZ\xfc{\xfcO\x81I\xa9\xcf\xf7\xe4=5\xecw\xca\xe9u\xca\xecsr{\x9c\xe2\xfcM \x8b_\xd5K\xc3K\xe0Ia\xfd\x82x\xfc\xd2K\xeb\xa7\xc0\xfe%\xb0\x8a\x18\x1f+\xe7\xc8e1Q#\xb4,\xfe\x85,\x8bO\xbe\x18>.\xb0\xceW\xbd\xd8Y\xcf\xa8\x82q\x93\x9e\xc3~\xbf\xbdw\xcfj\xde\xf1 \xf0[q\xd0h\xfa\"'\xc6\xf2\xec\x91\xd0\xf6s\x9a\x8e\xa8\x12\xcc\xd9\x86q\xbf\xea\xe7\x07;\xc30\x1f\x9di_bh!e,}\x96\x92[\x19S\x9a\x83z7\xb5\"\xd6\xbf\xa9\xbd\x0269\x11-\x80YU\xa1\x04U\xccRJpI(\xed\x88)4\xe9g\xa4\x9fM\xec\xb3\xe8g\xae\x1b\x11\x1fg\xe3\xa3\x13L\x801s\xb3\xe8T\xaf\xe6\x97\xda\x99\xfe\xa2\xff#\xcd\xeeg\xedC\xb3\xfb\xcf:\xbb'))<\x95\x07\x92\x92\x94\x9d\xb8q\xc3\"\x08II9Z\x91\xa4$\x92\x92\xbe\x06)IL\xc3\x10\xa2\x91\x9c\xaf\xbd^\x8f\xa5\xa1\xc1\xab\xa2\xb5\x1e\xbe`\xfb\x99{V\xf4\xad\xaa\xdf\x1e\xac[\xc5\xe5\x8c8b\xd1I\xbaM\x9cG\xe4s\xea6\xaaW\xa2\xd6]j\xa55\xe9\xc9\xda\xde\\=\xa7\xed4\x80\x96Y\x0fk\x99\xf53\x15)V%?\xfc\xfa\xc0\xeb\xd9\x7fV\x97\xf5nw\xa8\xca\xee~\xb1\xafu\x9ea\xdbW\xf5\xb9>\xee\xaa\xae\xb7\xa3Ok_\x02\xf0\x12\xc6\x8a\xc5\xe8k5*\xe2\x91\xbe\xc1\x07\xfa\xc9\x1aZ\xc3\xb4/\xf1v\xf5\xff^\xf4\x8ca\xc3D\x9eF\xf7w\xcdp\x86\xbe\x90\xa7\x97u%\xfc\xfeo\xe4\xa9\x16\x89^\x15\n\xc5r\xd9\x1c\xe4\xa8\xc0\x8a\xe5\x00?\xdc\x15\xdbr\xc5\xeba\xfd\x0c\xda/\xa3\x8e|\xb0\xdf\xc3QC\x9a\xf6%zo\xdf\xc0\xfaA'wDy[\xfe\xd3}\x9b\xc4\x046\x88 \xdc\xa7\xb4\xd0\xddJ\x0b&\xd5E\xdc\xad4\xff\x94@\x1a\xaa(\xcc\xf4@Z\xf4$\xc1\xdb\x10b\xfa\x10\x98*HK\x9a0x\xca\x93S \xef\xb4AZ\xfc\xe4\x01\xa7s\x0f\x83\xc7\x0b=\xd8\xc9\x01d\xbag\xcc\xd0\xa9\xac\xe5\xc8]\x19t\x11bk)]\xb0z'\x02\xd3\x1b=\x06\xf6OT\x05\x02[\xc6F\xe3B\xd3B\x1dR\xf7\x97\x18Sh\x9a\xdd[\xd2[\xf3\x85\xa6\xd9\xf2\x8bl\xf21\xedagF\xa6\xab\x0e\xe9\x99k\xcf^5\xb5\x7f\x85\xed3\x9d>\xe9v\xcc.h\xba\xad\x8c\xa6\xdb\x9fy\xba\xed\xf7pMf\xd2\xae\xae8;p\xf4*\xf6\xbf\xceI\xe2\xbc\x00\xf1 \x97\x0e\x17\x9ff\xb3MOj\x9d\xe1-\x8fZ>\x14\xc6\xf77\xb0h\xa0\xf5\xc2\xfc\xe7\xd0\xebG\xdf\xf6\xde~N\xdf\xf6\xe9\x1c34\xbf4^\x1eKi\xa1\xcf|\xc6/<}\xdc'F\x1fw\xfa\xb8'\x7f\xdc\x87\x9a\xcf\xbe\xc4\xae\x9a\xcf\x0e\x1c\xd5\xbc\xff\xf5\xd45?\xc5\xb4\xa4\xaf\xbc\xc7\xa9\xd9\xfb\x06\xfe\xd2\x1f<\x9a\x87\x0ceL\x1c\x01\xf6\xb9G\xd9v\x96\x12\x1f\xe9\xf6x\xa03\x90iC\x99v\xc40\xe1x\x13\xc3\xdfy\xa3\xd1\xad\x9d\xb15\x1f\x04\x94\x83K\xc6\xfa\xde\xaf\xa7\xce\x14\xfc\xb7\xce|\x88G\x7f\xedF}\x8c\xbew\xca\xe8{G\xdf\xbb\x07\xf5\xd5\xe0K\x89US|\x18\x0b&\xdeo\xc7_\xd5)\xcf\xd4\xdd\xea\x0f\x88.\xaao\x06\xcc'\xc4Q\xe8#\xdd:\x0f\xf4\x1bbo6\xd3\xf0\x1f\x85iY\x89\x9d+n\xa4\x9f\xb4w\x86\xe1~\xda-h\xccWFc>\x8d\xf9\x9fw\xcc\x8f\xdc\xbdWm\x00\xaa\"2\xcc\x12}\xfb\xf7\xbe0\x8e\xfb\xe5\xed\xe3;\x0e\xac\x9en\xe3{\x82\x1d|\x07\xde\xb2+>\xba\xdf5\xcf\xdbp]\xb4l\xc1/R\xb7\xacY\xf8\x00\x86\xe0k\x15^\xb4\xc0dk\xd9wbs\xe3y\x05\x067\xe2\xb0\xb9\xac\xa3\xb8\xa2\x12\xc7U5l\xebj\xc3\x1a\x11\x9e\xe3\xd2\xd2U\x08\xd7\xc7\x0bKw}\xdc*o \xec\xd8\xf2\xa6\xa8\xcavg\x93\xd5\xaf\xeb\xea\xd0~\xd9\x06\xb3\xd5\xe0\x01\xb7\xd8h\xa6\xf2\xf9v\xa3E\x84 \xa8\x11\xed\xcd\xd5\xf3Iy4\x03\xa1\x19\xc8\xe7\x9f\x81$}\xb5\x07\x87O\x9c\xb4h\xbcC\xbd\xcb\xc5\xfc8_V\xeb\xba\xff\xd6\x0f.N\xfe\xc1)\xdbViG}\x11-\xdb\xae\x9f\xce\xa0\x1f\xb9\xa7G\x7f\xb2:z4\x1fp^[\x1d\xfc`\xa7\x05\xf2.|\xcc ~-7-\xcb\xe1^\xd6\x87\xe9\xd9\xe3t\xb0\xe5\x0faq]W\xab\x05\xc9\xa5\xd20\x1fX\x92K{\x1b5\xd7\xac7\x8d\xb1(\xb6]\x1bBik\x07\xa3\xc0\x18/\xa83RgL\xee\x8c\xc6g\xc7\xec\x85\xc6\x9f\xc7Ce\xc3\x96\xac\xbcc+\x8f\xab\xcb>\x89t~\x8f\x82\xf3\xcaIi\xc3,\xd3\xfdy%g\x972\x9aj~\xe6\xa9\xa6\xcf\xd9\xf5U\xc8\xe2\xfei\xf3\xc5\xf4\xb3e\x9bA\xf7\xef\xf5\xf3a\x14\xd2\x13\xe6b\xb9<\xec\xd4\x86\xeb\xc6 %\xd3\xfe\xfa\x03z,\xc5>\xd2\x8d\xf2@\xe7\xc2\xbe\x8f\xfc \x86q\x08\xbd\x93a\x9f\x99\xab\xb6\x10\x18# \x14\xa4\x13\x18+ X;i\xc1\xf0\x1c\xc4k\x1f\x9a\xae\x00\xae\x18\xcc\xb4\x05R\xa6.\x9e\x9b\xc7\x86\xe4$Ma\x9c\xa5!\xc3q\xe2\xa62*\xad\xa0]X\xb3\xbc\xeb\xc1y\x86SS\xb3\x8dG\xc3\x0c\xa3?\x85&\x18\x93_i\x82A\x13\x8c\xe1\x87\xcf4\xc1\xa8\x0f]\xdb\x15\"a\xd6\"\x18U\xdc\xbf\xd9\xaf\x87\xb3\xa6\x01\x01z\x91.\xf0\x89Y\xd3\xf8g\x1a\xf3b\x1f\xe9Vz\xa03\x8e\x80\x83+i^\xe0,\x13hR05\x9a\x14L,nR\x00\xa8&\xf4\xbd\xf6F|\xae1\x94X\nyr\xa8\x9ej\x05\xae\xfaVwr\xdb\x8dL\x16'P\x8aY@\xd5\x96wL\xe6\x05,\x96\xb7gPl\xb7\xf5\x87\x16Z\xd1|\xd0\x16U\xd9\xd9\xde\x88\xe5\x0d[\xde\xc6\xa7$\xf1\xdcrpb4)\x8f?T\xdb%.|\xcdJ\x1e\x19e4a\xa2 \xd3\x83\x9a0\xb5\xdb\xa2\xbda\x98I\xd2[yd?3\x12g\x02\xbb\x93\x83\xe5\x1a\xef\x80Q\x05=\xd2\x0d\xf0@\xe7B\xa3\x961\xedK\xbcZ\xc3\x93\xdb\xb3\xa6\xac\x03\xb9PP/\x89g\xf3\x81uS,;\xa7#'x\x95\xf0'\x18&\xbd\xe1%\xefE\xe6\xc7\xd7\xfc`\x1a\x1d\xcd\xbaw\x06\xc0\x9f\x98\xc8\xeaZ\xb6b\xf6Q.E^\xe8\xeeFA6mW7b\xa7 \xc7\xd9\xefnJ\xb1\x97R\xc5\xd8J\xee@\xb1,\xb6K\xe1e\x84b\xcf\x9fLS\x8a\x7f\xeft\xae\xe4\xb6+n]\x0d,&b\xd6\x89\x80\x9c\n\x98\xe2\x9e\x9c1\x15\x0d\xeba\x9e\n\x8au\xc7\xc4&f\xe2\xaeo\nGf\x90\xe5\xf2\xd046\x0f\xdeXlT\xef\xecHbT\x7f\xc3\xb9\x04\xd1\x9b\xa3$\xec\x832-\xef\x88E\x06\xednB\xbb\x9bL\xec\xb3\xecn\xe2\xef\x17\xe3\xb9\xb7\xfa\xee\x05'\xdcaO\xa4\xfe\x14\xd3\xb4Z\x19M\xabiZ\x9d<\xad\x1ej\xdevE\xd3\x95\xd5fq#&\x14\xaezO\x86\xad\xc9Y\xa3\x9b\xa8\xc5)\xc5\xb6?\x08\xd4A\xfd\xbdL_v\xf5y\x9e\xde\xdfQ9\x87!\xbcU\x85\xdcd\xe0\x047\xaev/x\xa0\xb7M{\xf1\xc45#\xed\xc5s\xc2\xc6\x0d\xf7Q\xda\x8b'G+\xd2^<\xb4\x17\xcf/s/\x9e5c\x9b\xa6\xa8\xba\xde\xfb'd\x85\xa2Z\xb2\x8bO\xe2\x07\xd6\xfcS\xff\x8by\xa2\x18\x9e\xe9\xd3T\x83\xb4 \xcfYA\xb1\xdd\xca\x1fx3\xde0\xf5w\xc6\xdf\xec\xe1?\xed\x0e\xc0\xbe\xd0G\xfa\xd6\x1f\xa8\xe7\xafo\xb4\x80\xcb\xa3?N~\xc2\x86\xff\xd4\x8d\xc5\xdfQ\xa3\x81&\x8d3\xd8\x11\x8e\x0fUf\xe2R\x1d\xe3\xa9\xeb\xaf\x01\x93\xfd\xc6\xd5@uh\x99\xbaK\xbdA\xff\xe49OM\x9eW6\xb0>Ts\xb2\x1d\xfa\x0b:\x96,Yo\x8a\xf9n\xea\x9a\xf1;\xea{~\xe5(ix\xee\xf5\xba\xdfz\x8a\x17\xf0\xb8u\xdf\xa2\xa7\x8f\x01\xfa\x1e\x86+\xab\xa9RQ\x89\xdd\xb3\xae\x8b\xb6\\\x9e\x81t\x15\xf3\x7f\x89\x03y\x87d\xae\x87\xd2\x17e\xablp \x1b\xea\xa5\x80X\xc6\"\x9e,\xa0[\x86\xdb3x\xff\xe6\xcf\x17\x0dk\xebC\xb3d\xe2+\"?\xd0\x87\xaa\xfc\xdb\x81m\xef\xa1\\\xb1\xaa+\xd7}\xe2\xc7\xfb\xbd[\xb0\xd6\xfd\x16Z\xd6\x94\xc5\xb6\xfc\xbb;\xb8\x13d{t\xf5\xb2\xde\xc2\xf5a\xbdf\x8d\xf6B\x9cKo\xb3\xbcG\xd8\x1dZ\xb1\x17YW\x94\x15\x14.\x86\x81\xdb\x96\x15m\xe7\xbb\x1e\x9f\xcf~s\xf1\x0d,o\x8a\xa6X\xf2QFH\xf5\xdb\xa2\xe5\xb3\x90\xcd\x8e\x0d3\x8b\xf7o\xfe\xfc\xb8\x9d.\x98\xa7&\xaa\xd6;\xe4}W\xe6E\xae\x0f[\xb1M~\xb1\xe5\xad\xb9\x92m\xad'2\xf7{\x06O\x8a\x96OQ<\xc5\xfc\xc4+t\xb1\xa9\xeb\xcd\x96\x9d\x8b\xd6\xbb>\xac\xcf_\x1c\xe4\xf7\xe3\xa7o\xe5\xfd\x88\x82\xfb\xa5\x8e\xa78\xde\xa0\xfc\xad\xa8\xabrYl\xc5\xe4\xd0w\xf5'\xec|s~\xc6\x9bY|\xdf\xbf9\xffF\xc6\xf2vP,\x97l\xdf\xb1\xd5\xb7\xfe\x1c\xe6\x97\x15\xec\x85j\xb2dg\xd0\xb1b\xc7'Q\x87\x827\xcb\xbea\xcbz\xb7/\xb7\x0c\xcaJ}6\xaf\xcb\xaah\xec\xc8\x8b4\x91\x18\xf9~/z\xa6\x9cS\xde\xfb./\x1dz|\x12\xde\xd5|\xec\xd13y\xde\xb9\xf8\xd2\xb2^\xc3\xb3\xea\xfe\x1c\xfeT\x7f\xe0\xb3\xa13\x8b\xb0o\xda\xfb7\x7f\xd6\xea\x04/\xcc\xa2\xf9\x9b&>\xbb\x0c~\xba\xe9\xba\xfdOg\xf2\xff\xdb\x9f\xce\xf8\xaa\xaa\xaa\xd5\xafg\xa2\x87.\x9d\x83(\x88\xd9\x82\xf4\x19\xc8\xbd\xf4\xe0\xb0\x87B\xbe\x93\xbek\xb3\xe6\x8e5\xb2\x91v\xc5\xbe\x95\xddM\xd4\xbf\xab\xf5['=\x13e'D\x17\x87\xa2\"m]\x0b\x0e\xe3{\xef\xb3\xfe\xef|\xe9\xd3\xdf\x19\xef(\xfb\xa6\xbe+Wl\xd5\xdf\xbc\x98\x11\xb4\xeda\xc7V\x0e\xd5I\x17\xf5\xac\x82?\xbd{w\x05\x7f|\xf9\x0e\x14\xa8\xfd\xfe\xcd\x9f\xe5\xfbw/\x08\x1b_\x9a\xfd\xff\x98\xbe0\xef\xee\xf7\xec?\xff\xe3?=\xa7\x80\xf6nW\xaa\x17\xaa\x95\x93x^\xfb\xa6^\x1d\x96\xfcC\"=\xb7\xf6\xaf\x81\xb4\xff\x0e\xcf\xf6\xfb-_\xf8\xc8vmX\xff\x9d\x11\x1a\xda\x92\x8f?u}{\xd8\xeb\x89\xb6\xa7\xb0\xeb\x82\xaf\xf2\xeb\xf9\xac{j\xef\xdf\xfcY\xd4\xf4\xa6\xb8\x13\x1dsg\xbc_+\xf9\x82\x15\xfa\xc6\xf8\xbf\xef\xea\x92\x7f\xbb}\xef\x1a\xa8j\x8a!\xa6a\xeb\xbaag\xba\x08^r\xd1\x95\xd7\xe5\xb6\xec\xee\x85D\xa8\x17\xcdbhl\xee\x9c\xf9\x00\xa4\xd5\x15\x1f\x92\xab\x0d\x13\xa7\x897\xfa\x1c\x9e\xbco\x19\xf0EIY\xf3\xb5\x86\xe8\xb2|d\x93}\xb6\xa8\x8a\x8d\xbf\x0d\xae\x1b&\x04H]\xf4\xf9\xb7\xbe>\xf6\xaa\xee\xd8\xf7r\x0f\xcc\xf5\xa1Z\xcaw\x8c\xdf\x8d\x1a\xe1\x84\x92Xu\xdb{SU\xf1\xbd\xa7\xc2\xbf'\xdc+n9\x05\xf47\xf0\xfa\xc0\xd7Y\xfc\xfb\xc5\xced\x8e\x84N_X8v\x84\xe0\xa1\xdfY_\x07a\x9b\xb2\xaa\xf8M\x7f(\xbb\x1b\xef\x07\xe9~\xcf\xce\xe5{Q\xec\xcb\xf6|Y\xef\xfcc\xf7[\xf1\x1e\xb7R\xe2\x91\xee\xa2\xc9X\x06OT\x82\x03\xe1\xeb\x08\x0e\x85\xdf\xaamF\xaf\xbdC\x97\xf4k\x95\x9d\xc1\xcc\xc9\xb5<_\x94\x97\xebr -\xdb\xf1i\xf5\xd2:\x83\x84\x90g\x1f9\xa1\nj\x9f\x105\xeb\xfa7>p\xf1\xa9\xa8t\xe0\x1b\xd3\xa5\xd9\x9cHN\x10|\x1f\xc1\xeb\xfa\x8e\xe9\xe6P/\x8ae\xf5\xe4\x11\x13\xff\xc8'\xefb\xe5\xdf\xd5\xcd\xe0\xe0\xfa_\x7fy+\xa0\x80\xae\x06>x4+(\xe4<_>\x0f>\x9d\xb1\x14\xa6>\xa6\xa3_\x10\xf0]\xbf\xeeMW\xfe\x86\xf58I~\xcaH\xf2\xcb\x83\x12'\xad\x92\xa0v\xa9\xee\x80^#e]!\x05\xd6GyWG\xd8\xb5Q\x96\x95Q\xca\xba\xc8\xf7\xf9\xc6\xaf\x8a\x8e\\\x13\xe5]\x11E\xad\x87\xb2\xae\x86b\xd6BQ+!c\xbd\xe3.\x10\xb7\x0e\xca\xba\nB\xac\x81\xb2\xad\x80\x8e[\xff$\xac~\xb2\xac}\xe2W>r}\xe3\x19\x9f\x023\xa1\x13\xaczN\xb5\xe69\xc1\x8a'f\xbd\x93y\xb5\x83[\xebd\\\xe9`\xd79\x91\xab\x9c\xd85\x8e^\xc9\xb8?\x82\xc1\x15\xce\xd1\xeb\x9b\x13pKS\xc3\xce\x92\xa2W5r\xed\xe2\x1e\xb0\x03k\x1a\\\xcd~zV\xdd\xff\xa4\xa7G\"\x0e\xabh\xae\xcb\xae\xe1/\xb1\xbb\x86\xd6\xa2\xf47\xa2\xd8\xd6\xaa\xebAa\x7f\xb4|t\x16\x1f\x1aY\xc3\xeb\xf1\xb4p2\xfd\xebgu\x8e\xaey\xa5_\x9cmy-\xaa\xad\xbe#-\xb4\x87\xfd\xben\xc4\x17|_,o/\x0e\x15\xff?\xfe\xdd\x96\xfd\xc2\xfe\x06\xa9\x0f\xbd{bS\xaf\xe1\xd0\xc9\x81M\x0f\x0f-H\xc6\xac\x94c\x05lX\xc5\x1a\x91bB.\xb4Z\xdfB\x95\xd7G>B\xfb\xf5^~,DD\xd7w\xdf\xc3\x15\xaf?\x1f\x17\xd4\xad\x14}\xa3\x97\x15<\xff\x1f\xff\xc3\xf3\x99\xfc\xb1\xaea]\xd7\xf0\x078??\xff\x9f\xce\xc3xe\x8a\xea\xde}@Q\xdd\x9f\xf3j\xfc\xd8\xd4\xbb'\xeb\xba\xfe\xd6}\xe8\xf9\xb9\xfb\xfbW\xae\xe1 /\xea\xbd\xb8\x91w\xf5\x93\xff\xc6\xcb\xfa\x16>y\xc6p_y\xff\xf4\xb7\xdd\xaf\x03m\xf7\xaf\xc5]\x91\xad\xf1\xe0\x0fbn\xc8\xaf\x92\xa1\x85\xca\xf6\xc9\x8fu}\xbe\xdc\x16m\x1bh YE~\x92\xbcG\xe3Dw\x1d\xfe\xe9\xfc\xe5\xe2\x82wk\\\x1d\xdf\x16;\xc6\xa7N\xcfdm7\xac{!]\n\x97U\xdb\x15\xd5\x92=\xf96\xa5\xf2\xd6r|\xf7\xe2\xed\x05\xbf \xf4\x82\xab\xfb\xee\xa6\xae<\xfd@\xd6\xf1\xc7\xba~r~~\xee\xfe\xb0\xf5}\xe0\x89\xf7\x18\xf1\x1e\x89\x1e\x92\xdaAx!\x97\xb2\xc5_\xbc|\xfb\xfc\xcd\xe5\xd5\xbb\xd7o\xbeu{\xf3\xe4e\xe5;\xe7\xbf\xb0\xbc\xb4\xb75\x7f\x1bh\xcd?\xd6\x1e\xd7%o\xc9\xef\xff\x00\xffm\x7f}\xfec]\x7f:??w\xf7C^\xe93>\xa1\xe6g\x14\xd5\xfd\xfe\xfa\xfc\x15\xfb\x10\xa8\x7f\xb9\x16g\xfc\x1f\x7f\x80\xaa\xdcz;\x9e\xb7\x91=\xaf\x87\xff\xbc\xc9\x0dz\x8aQ5\x95\xf7v\xfe\xbe\xda\x15M{Sl\xdf\xd5r\xf0\xc8u\x1b\xd6\xdf\xde\x89\xf8\x9a\xe5m\xff\x9d\xd2\x8b0\xb8\xbe\x1f\xa6\xa4\xfa\xcb*\xc3D\xec+\x02\x0d\xed\x1dZ\xc7|\xee\xb1e\xbay\xb1>l\xb7\xe7\xe2\x07>\x95\x7f\x0c\x851\x13\xe0\xb3\x04\xde\xb7\\\xdfM\xd9\xe7\xec\x17\xeb?\xbb\xd5\xf6^\xaf\xb9g\x8e\x94~ \xa1\"\xa6\\\x17\x12>\x9e\xc7\x17\x8f\xed\x97R\xf3\x05]e\xe1 \x00\xa6\xde\x91o\xd6u}~]4\xe2f?^\xdc\x9f\xff\xfd\x1b\xd9\x8ab]j-\xcf\xbdL\x17U\xfd\x86\x97\xe1\x9a*\xfc\xeb\xdb\xd7\xaf\x1c?\xf1'\xcd\x7f\x1e\xbcNr&-\x80\x135\x0d\x94+\xdbC\xdbo\xc1\xb79l\x8b\xc6^\xde\xbc\x98N\xe4\xd1\x1f&ng\xc0v\xd7l\xb5\x1a\xa6pgrAb+\xaep\xf8\xaf\x8cI\x95L\x16\xf0\xd3\xff\xc3\x1b\xe8'\xe5N\xe9'\xae\xe6#\xb0\xbf\x06j\xd8\xfa\xde\xb3\x04+\x96\xb7|\xec\x1a\\\x02\xebr\xcb\xdc_\x1b=\xd6]\xb1\xa6\xad+\xef\xcb\xa9|\x91\xeb\xb2i\xbb\x85x\x8e\x7f\x80\xef\xdc%\xf7'\xf0\xae\xa7\x8f\xffu\xf4w\x8f\x9b\xafV\xdf\x88\xb6\xfc\xe6{\xf8\xc6\xf6n\x8e\x9b\xe1\\\xde\xe57g\xbe\xf2\xc4\xfd\xbd*v\xbc\xcc\xffK\xde\xc2\xff\xed=\x81\xdf\xdf\xe4\xf8\xd8\x9b\xbc\\\xab%\xe7\xb8\xaf\xc9\xdeP\xb6\xf0\x81m\xb7Oo\xab\xfa\x83\xcccqS\xb4P\xf8re\xcaw\xc8\xf6\xcb\xb8\xcb\x9f\xc9%\xcc\xe4=\x18\"\xe9Tux\x07v,/\x0b\xd9\xa5\xed\x17\xfbI\xbc\x8c\xba\x9f\xdf\xd4\xdb\x95\x99\xe5S\xbe\xcae\xd5\xbf\x1f\n\xa6\xb4\x17%_\x19\xfbuD\x15\xce\xfb\x8f\xfa\x13>z\xe9&\x9c9\xc7\xb4\xcf\xf8?\xff\xe3?\xbf\xf5\xbcH9\xfa\xdc\xf8\x82\xfen'\x9a\x8a\x17\xf9\xdd\xf9\xaf\xbf\xfbu\xfb\x8d\xa7\x0b\xc9\xff\xf7\xc5\x1e)T\xd1(\xc3\xb7\x8eN\x05\x1b{\x84qT\xda\x8c\xf5\xcb\x16\x97\xa4X\xc5\xa8\xbb\x8a\"\x1bG\xb76*,\xc43\x1ey\x8f\xe9@s\x1b\xc51\xb7=\xc8\xacw\x9c\x17'\xb7Zu\x85My\xc7\xaa\xbe\xe9|\xe9\x9d\x862\x1f\xe9\xfb}\xe8\x1c\xf3\x03Q5\xbd\xac2\xca\xa3\x87q\x8a\xc1\x11/\xb6\xb3\xc00\xb3\x1c\xa0\x96Op{Qo\xb8\xb3\xac$z9\xc8/\xe3\xef%#\xc3\x1c\xa4\x98\x83=\x18\x10\xbd\x18\x10\xfa<\xe0\x9e7D\xb4\x13$h\xf5\xde\xc2\xec\x0e[\xcf\xaa?\xb7f\x0fa\xdd\x1e\x12\xb4{\xff\x0d\x14\xdd\x0dZ\xbf\x87\\\x1a>$\xea\xf8\xde\x02# \xe7\xa3\xf5|\x88\xd6\xf4\xbdE)\xad1J\xd7\x87\xdc\xda>D\xea\xfb\x10\xab\xf1\xfb{v\x02\xef\x9cY\xeb\x07\x9c\xde\x0f95\x7f8Z\xf7\x874\xed\x1fr\xe9\xff\x90\xc4\x00\xf8_\x07,\xff|\x12\x16\x00N\xc8\x03\xc0i\x98\x00\x88\xe4\x02 \x8d\x0d\x08\x0d\xc18>\x00\xf22\x02\x10\xc1 @<+\x00 \xbc\x00b\xc8\xc4Q\xd1\x19\xb8\x01\x08\xb1\x03\x80\x9f\x9e!\x18\x02\x88\x9c\xc5E\xb3\x04\xde\xd2p\x8ct(\xe5RVN\xdaNJ\x833|\xd6\x18=\xf9\x7f>n#\x03h\x8f\xc9QVT\xe6_\xb57\x80r\x94Q\x8e\xb2_f\x8e\xb2@\x88\xc2\x11\xd9\xc9\x0c_\x1b\x05)(\xa3 \x85<\x0e\xafX\xc7\x87vn8\x0b\xc4:=\xb2:<(H\x81\x82\x14\x06\xcb\xea\xc8\x88qbD90(H\xe1XgE\x82\xa3\"\x8b\x93\"\xdeAAA\n\xc78$b\x9c\x11 \x8e\x08\nR\xa0 \x05\nR\xa0 \x85\x8e\x82\x14\x06\xc3\xe0\xed\x14\xa4\xe0\xfa\x8d\x82\x14(H!\xd4\xf8\x14\xa4\xe0<\x87\x82\x14FFA\n\x14\xa4@A\n\x14\xa402,0NA\n\xc2(H\xe1\xeb R0[\xf2H\x8a\x9e\xf6\xb3H\xdd,\x80\xf6\xb38a\xe3\x86wb\xa0\xfd,r\xb4\"\xedgA\xfbY|%\xfbY\x94m{`\xaba3\x0by\xb2?\xf4\xeb\x87\xfb?\xaap G\x0c\x98\x8c\xfd\xba\xbe\x17\xbe\xe9\xd1\x96e\xa3\xc7\xf0\xd8\xda \xbf\x7f\xac\x8eu\x04\x89\xf5W\x7f\xa4\x1b\x88\xa2\xc5\x84\x85\xf0\x12\x8a\x16\xcbz{\x14-\xe6.\x8c\xa2\xc5\x02\xca>E\x8b\x85A*\xc8\x05SA\"P\xe5-\x90\xa2\xc5\x8e\x87\xac \x12\xb4\x82X\xd8\xca\xdf\xb3)Z,\x0d\xc0\x824\x08\x0br\x81X\x90\x04c\xf9_\x07\x8a\x16\x8b\x83\xb3 \x12\xd0\x824H+4\x04\xe3@-\xc8\x0bkA\x04\xb0\x05\xf1\xd0\x16$\x80[\x88!\x93\xa2\xc5\xa4EC]\xde\xd2~\x11\xd1b\xe2c&\xc6\xb3k\xc6*\x90>\x01\xc7\x0e\x94\xda(FL\x18\xc5\x88\x0d?a\x1b\x93b\xc4&1b\xbdK+G\xb0\xd8\xe0\x9d3\xa3\xc6\xa6wgw\xbd\xf5\x07Qp\xd9\xe4W\n.\x0b\xf5\xe9\xc1b\xfd$\xda\x17\xe2,\x10\xeb#\xc9\xea\x1f\xa1\xe02\n.\x1b,\xab\xdf#\xc6\xe7\x11\xe5\xef\xa0\xe0\xb2c}\x1b ~\x8d,>\x8dx\x7f\x06\x05\x97\x1d\xe3\xbf\x88\xf1]$\xf8-(\xb8\x8c\x82\xcb(\xb8\x8c\x82\xcb:\n.\x1b\x0c\x13\x96D\xc1e\xae\xdf(\xb8\x8c\x82\xcbB\x8dO\xc1e\xces(\xb8ld\x14\\F\xc1e\x14\\F\xc1e#\xc3\x06\xfaPp\x990\n.\xfbz\x82\xcb\xcc%.\x05\x97Qp\x19\x05\x97QpYZ+Rp\x19\x05\x97\xfd2\x83\xcb\x18_)VK\xd6\x07\x97\xe9?\xc8\x93\x1cAe/\xd5A\xa2r%\x93\xc1d\xfaL\xfd8\xa7\xb1`\xfa\xa4G\xfa>\x1eh\x0c\xd8\xb8\x05L\xeb\x88\x01!\x06dd\xc4\x80\x10\x03b7b@\x88\x01!\x06\x84\x18\x10b@\x88\x01!\x06\x84\x18\x10b@z#\x06$\x05\xa3 \x06\x84\x18\x90\xc1\x88\x01\x99\x1b1 \xc4\x80\x10\x03B\x0c\x081 \xc4\x80\x10\x03\xf250 \x83\x8d\xd6\xc8Z\xc1\x19\xe5:\xd4\x7f\x9cy\x18\x8e\xc9\x8a\xd0\x89\xef\xae\xa1\xa9\xaa\x01\x97\xb2\"PV\x84\xaf*+\x82\x16w\x8f\xca\x86\xd0\xcb\xcao\xae\x9eOo\x82\xb6\xd2\xa5l\x07A7/\xc6S\n\xa4t\x93\xd2\xed<\x92\x94na\xa4t\xcf\x8d\x94nR\xba]FJ7)\xdd\xc2H\xe9&\xa5\x9b\x94nR\xba\xa5\x91\xd2\x9d\"\x16\x93\xd2MJ\xf7`\xa4t\xcf\x8d\x94nR\xbaI\xe9&\xa5\x9b\x94nR\xbaI\xe9\xfe\x1a\x94n_\xb6\x03JI\x10\x17\xefM) N\xd8\xb8\xe1`zJI\x90\xa3\x15)%\x01\xa5$\xf8\xcaR\x12\\|\xba)\xda\x1b\xcfv\xb7\xb3\xb4\x04=\x08\xd6\xef\x15\xd6\xff\x85\x17\xa5\x9f\xf2(S\xc1/%MA\x12d\xd6y\x19\x8c\xa0\xfc\x80\xf1\xdfg\xa7/p\xecE\ny\xe1',\x92\xf8\nq G\x81A\xba\"\x03[\x91HV8\xf5h\x1cWq\x14U\x91\xc4T@\xe1\xd8g\x0b\xb0DE\nO\xe1S9Q4Ef\x96\x02ERd\xe4(\x82\x14E&\x86\xe2\x18\x82\"\x9a\x9f\xc8@Odf'\x02\xe4Dvn\xe24\xd4Dvf\x02OL\xa4\xf1\x12\x9eF\x0f\xd1\x12\xd9X \x1c)aqT\xb8\xc7\xd7\xcc\x94D\x88\x918\x92\x90\xf0\xf0\x11\xc1\xe9I\x90\x8d\xc0\xcd_\xf2r\x11!*\"\\\xa74\"B\x8f\xec\x96\x02C\xd6Mt\x9a\xf6\xe2\x93\xfc\xff\x05\xbf\x88'\xe0\xedJ\x1c5\xda\x85w\xe8u\xba\xd56\xf5\x1d\xec\xea\xd5ak\xdf\x99\xf7\x8f\xf5\x9d,\xe6\x91\xbe\xe3\x07\x1a\xf0vWwe\xb5Y\xc8\x96\x99/?Fu\x1a\x1d;\xc9\xd6\xde\xb7O\xc3\xb6\xc2}\xd2\xd5\xea\xf8\xf97\xddYM\x08\xaa\xa3\xba\n\xac)\xebU\"\xb0>\xba'=L\xe9\xe7*/\x00\xf2\x02\xd3\xaa\xaf\xd8\xben\xcb\x0e\xd7Z\xe3\x83\x11\xcd\xa5N\xc8\xda^\xbb\xb2Z\xa8r}\xade\x17\xb8\xc1'rC\xa8b\xd2Bb7\x88f\xab\xea\x9do\xe9\x1b|\xa4\xdc\x8a]}\xa8\x1cw)\x0dQ\x0c\xc6\xf1\xca\xedy]\x0e\xfb\x15\x14\xd0\xd5\xb7\xacR\x8eSy;:\xfa\x9aO\\\x8aJU\xce\xe7\xa3\x7f\xf5\xfa\xdd\xcb\xef\xc5\\_\x1e\xab&\xcd\xa5\xf0\xec^V\x9d\x9aN\xf4\xde\xf4\xd6+\x1a\xa9\xb9\x86\\L\xb9/\xda\x96\x9b\xaa\xe8\x0e\x0dk\xfb1\x99/\x1f7\xf5\xa6\x16\x1fr\xfb||\xd4H\xffVV\xe5\xee\xb0\xd3\xbdW\xac\xa1\n\xf1\xd8\xeb\xb6\xd8\xf2~\xcd*\xbeD\xf3\xbeX\xdcv\xc5\xc7E\xff\xced{\xbf\xdd\xf1&\xc5GQoy)Q\xedg\xbc\xc9\xf8|\x8d\xbf\x98\xc3\x0b \xfc1\xf6w\xe4Z\xa9_VeW\x16[\xa5[\xc0\xaf]\x8d\xbe\xab\xab\xeef\xa6yt\xc5v{\x8f\x1bW\xccC\x11\xa3\x8a8<\xeb\x98\xf2\xb7C\xdd\x1c\x1c\xefk\xf0\xe1\x04e\x19\xe4\xd3S\xbdn\xcf\x9a%\x9f\xc1o\xa4\xfc r\x18\xb4]q\xcb\x84r\xd9\x7f\x86$_\xe5\xd2\x92UJ\x06\xa1r\xba\x1e\xdb\xb2\xae\xdar\xc5\xf8\x0b\"D [7\xe8n\x1a\xd6\xf2\xfe\xf3@\xda\x86\xf7\xd8F\x7f\xdc\xfe\x9d\xb5\xa2%Z\x99\x1f\xc2x?\xf7E\xeb\xd0\xe0\xf8\xe4O\xfa\x86T\xaf\xfe\xd5\xf9\xeflG\xde\xb1\xae^<\xb0\xbb\x97\x1e\x91z\x0d\x7fa\xaa\x0f\x88w\xfa\x9d\xe8\"\xf2?\xc5\x97\xdf\x83\x7f\x98\x8d\xe4\xee\x19\xfc\xe6\xd9\xea|\xdaT\xdf]\xfcf\xdcT\x08TPN\x19c@A5W}s\xf5|R\x1ea\x82\x84 f\x9b\xed\x10&H\x98\xa0\xdd\x08\x13\x14F\x98\xe0\xdc\x08\x13$L\xd0e\x84 \x12&(\x8c0A\xc2\x04 \x13$LP\x1aa\x82)\xa4\x1da\x82\x84 \x0eF\x98\xe0\xdc\x08\x13$L\x900A\xc2\x04 \x13$L\x900\xc1\xaf\x1d\x134(0\xa3\x1c\xdfZ\xda8\xa3W\xdc\xe5c34\xf7\xae\x96\x9c\x1b\xff<\x9c\xe9\x1d*\xe4f\x12\xa3\xc2\xbe\x91$\xc47g\xe3\xe6\xfdF\x08\xf5\xfc\x07>'\xffF\xb1\x07\xdfLQ\xba#`\xc2(bNI\x9f\xea\x04+&\xa7\x0f\x19\x93r\xfd_\xfb\xec\xf0\x9b\xf2\x8eU\xd0vEwh\xad\xb0\\_\xd2#}S\x0f\x14\x96\x9b\xb4\x8ai\xdd\x17P\x00uu\x16\xa5Cs\x8f\xf2\x80Mv\xc7\x18\xdb\xa8\xb9\x8d\xeb\x8e\x00\x14\xa9\x06B\xb9\xd2\x93\x05?3#\x94\x167\xb1\x15h\x1c@4\x10 dR\xc0\xb5\x12 \xddm\xdab%Soav\xbf\x99g\xf1\x95[:\x85\xb0|\n \x12\xaa\xff\x06tb\x7f\x8c\x8c\n\xb9\xa4TH\x94S\xbd\x05\xf2\xc6EK\xaap\xbc\xac\n\xd1\xd2\xaa\xb7\xa8!\xf9?^^\x85\xdc\x12+D\xca\xac\x10+\xb5\xfa{v/\xc3b\xe5V\xc8-\xb9\x02Nv\x85\x9c\xd2+\x1c-\xbfB\x9a\x04\x0b\xb9dXH\x92b\xfd\xaf\x83\x9e\xd8\x84\xde\x9b\x93H\xb2pBY\x16N#\xcdB\xa4<\x0bi\x12mh\x08\xc6\xc9\xb4\x90W\xaa\x85\x08\xb9\x16\xe2%[H\x90m\x11C\xe6\xb7\x08\xe9\x16r\xc8\xb7\x10\x92p\x01?=CH\xb9\x109\x8b\x8b\x96t\xbd\xa5 \xb9\x17!\xebBD-3\xca\xbb\x10%\xf1Bn\x99\x17\x12\xa5^\x7f\xbfj\xc3r/\xa4K\xbe\xce\xf2\xf8\x15C\xb2/d\x93~\x01\xaf`\x02F\x02\x868\x19\x18B\xdaD\xa2\x1c\x0c\x88r=\x8e\xd1L\xd20$5.^\"\x06\xc4]&H\xc5\x90*\x17\x83_\x13C\xc9\xc6\x90Y:\x86L\xf21\xe0z\xcc\xd122\xe0\xa5d@\xca\xc9\x80\x96\x94\x01\xd7\xa1\xe2\xa5e\x88\x92\x97\xc1'1C.\x99\x19b\xa5fH\x94\x9b!Nr\x06\xc4C\x08\xbcf\xe1\xf3\xf1\x124d\x94\xa1\x01S5\xcf[\x96O\x92\x06\x8c,\x0dGH\xd3\xce\x02\xa5\xbb\xd3-OCn\x89\x1a\x8225\xa4J\xd5\xce\xd2\xe4\xda\xde\xef\xe6\x08K\xd6\xe0\x97\xad!I\xbav\x16\xe5\x95\xb4!U\xd6v\x96\xe6\xd9&BZ>y\x1bP\x127$\xc8\xdc\x10'uC\x8a\xdc\x0d\xd1\x927\xf8G\x11\x08\xc8\x90\x10!Eb\xe5oH\x91\xc0!V\x06\x07\xff\x8d\xa7\xc8\xe1\xce\xc2\x0c\xb1\x19\xfb\xca\xe0dq\xef\x0bQm\xfc\xd28\xe4\x95\xc7!$\x91\x83_&w\x9e\x93*\x9fC\xc6\xbe\x1b!\xa3C\x94\x94\x0e\xce \x8a\x94r]3\xc5\x91\xe7B\x1e:\x0eS\xd7Q\xb5cExj\x08\xa7\x0f\xab\\a\xe8 \x04\xee\xab7\xaf\xaf^\xbf}\xf6\xe7\xc5\xdbw\xcf\xde\xbd\x7f\xbbx\xff\xea\xed\xd5\xcb\xe7\x97?^\xbe|\x11q\xd6\x8b\x97W\xaf\xdf^\xbe[\\\xbd|s\xf9:\xe6\xc4\xbf\xbc~w\xf9\xea\x8f\xf1\xe7]={\xfb6\xaa\x86o^\xfe\xeb\xcb\xe7\xef\xa2N\xf9\xf1\xd9\xe5\x9f\x9d'\xe8X\xe1\xe8\x06\\\x97U\xb1]\xc8\x04\x05\xd2\x93\x8e\xea$\x1e\xf7\xd6\xbcD\x1d\x15-~\x91\xd9\x0dt\x00\x7f\xc0\x05\xd7\xab\xd1\xf0\xd7\x1b\xe6\xf9d\x0b\x8aC\x8eQ}_\xbd+\x0b\xd8\xbc\xb9z~\xa6\\\xd2:7GU\xbbE\xd3}\xbd?\xc84\x0c\x87\xaa+\xb7~\xb9J_\xe9q;\xce\x94!\xc6oV\xad\x985\xe3\x00\xe4\xd3\xc9\x1f\xdf\xb3\xf6q\x06/\xec\xe8\xc9\xde\xb3V?\xaf\xea\xb0\xbb\x96n\xd2\xfb>\x13\x01*\xb1\x06@q\xdd\xf2IR\xee\xca\x05|\xbf\xea\xaa\xf3\xfa\xeb\x1f\x86{\xf0\x96\x13\xbe\xbf\xc7U\x9d\xbd\xe5\xabz^\xf1\xaa\x8ek\xf7\xaa^\xf0\xf9\xed\xe2\x8euu\xee\xfa\x05\x1a\xdf\xbc\xb4\xf5F\xc4\xc4\xfbnH\xedP\xfb\xf5\xdb\xd0\xed\xb6\x87\xeb]\xd9-\xbar\x97#\x98lUt\xec)/\x0b3\xfa\x19\x97\xd6w*\xfe]\xaf\x8dO%?\xa6m\xcb\xba\xb2W_\xe7\xcda\xd5\xea\x8b\xdc\xc3\xf4\xfa\xfaFX\xb5\x927\xc3gS\xea \xe7M\x88\xec-\xfelU~\xceJ\x9a7c\x15j\xb8\xc4\x0d\x98\x10\xce[\x85jp@\xe5\xaeB\x16\x85\x7f\xc7\"3X\x05+\xefW)\xf3f\xb7B\xe7\xb7J\xcdp5M\xb9d\xf6\xcc\xfe%\x15\x99d\x8c\x1cQa\xe2Me\xafk\xbb\xa2\xf92c\x8d\xa7G\xcc\xea\xa6\xefS\xfc\x85OH\xc4\x1f\xd5\x80\xeb\xff\xec\xa1Z\xe1K\x8dU\x93\xcb\xcf\x86\xaaz\xadg`\xc1\xcf$\xa6m5\xdc:Z\x03-\xeb\x86\xa9W`\xc7W\xcc2\xafd\x01\x9b\xfa\x8e5U1\xdf\xf9O\x9a\xbb.V>sXw tk\x94\xebs\xb8\xd2p\xf8\xb4\xd8}\xb1Q\x83\xc0\xfc\x19\x8d/\xd8\x1f8IH\xd6\xffY9&ml\xae4\xef\xb0\xec\x1f\x8e+\xf6\xb1[\xdc\xb2{{G\nv\xa3 60\xba\xd5\x7f\xb8\xde ]\x0b\xdd\x9f\xf8?\x15yS\xb4\xadD\x8d\xae\x8a\x0d{#\x1f\xc1\xb9\xfc\xddQ\x98\x04\xc9\xc5\xa4\x87}\xecxC2\xd8\xd5m\x07L\xf0+\x02|9\x87\xcb\xcep\xbb\xec\xbb{(]\x82tw\xc3\x1a&\xc0\xa7\xaa\x86\x1d\xef|\nt\xb2\xf5j1\xb0\x1d\xd9\x98\x1e\x98\xb8+\xbb-\xf3\x0cEr\\\xe5\xad(\xfe1\xcc\xfat\x9a\x0c#'\x83\xeb~\xcd\x86^\xf2\xef\xcdB\x14\xe6\xfaP|(ZhYw\x06e\xd7j\xec\xac\x85C%;\xf3J\x925\x1f\xcav\xdc?0 \xbd\xf4\xab\x85\xca\xe9e+\xe1b\xc0\xec\xdf\\=\x9f\xde\x00e\xf9\xa2,_\xc1\xaf$\xe6+\x05 \xc8\xba\xec\xbb\x94\xe5\x0b\x81\xa7\xdb\x94\xbfh4=\x05K\xa7,_\x19\x11\xf4\x18\xfc<\n=\xa7,_\xc7b\xe6 \x88y\x16\xbc<\x1e-\xa7,_\xc7\xa0\xe41\x18y\x02BNY\xbe(\xcb\x17e\xf9\xc2\"\xe0Y\xf1\xef\x14\xf4\x9b\xb2|\xb9\x0e\x0b\"\xde\x11x7&?T\x0c\xd6MY\xbeR\x12e\x85\xb0m\xca\xf2\x85\xc7\xb3\x91h6\x06\xcb\xc6!\xd9\x94\xe5\x0b\x12\xb1\xeb\x08\xe4\x9a\xb2|e@\xaa\x838u*J\xed\xfcnR\x96\xaf\x99Q\x96/\xca\xf25\xb1\x1c\x19\x97\xb0\x98s4\xe2\x1c\x857S\x96\xaf.\x0dc\xa6,_\xdaPY\xbet\x92\"\x89\x19\x1be\xf9\xf4\xdc\xc9Y#9[\xfdi\x92\xdb\xa8\x9dN\xaf\xbc\xdc\xb1\x97\xa9\x1d]M\x7f\x88\xfd\xb8t\x08W\x9e_o\xfc\xbbA\x00M.\x04\xab\x83\x18\xbad]\x04\xe42n)\xdbFn\x01\x08z^\x9b\xd1\xcf\xb8\xcaH8#\xa5.\x12\xac\x9eWB\xfe\xddsu\xc1f\xf4\x7f\x14\xe3\xc5\xcd\xc4m.E\xfe`\x154\xaa=\xaf\x84\xfe\xe5\xb8j\\3VA\xc3\xfeK\x08\xbc\xc1\xdaH\n|^\x17\xf9\xf7\xe3j\xb2.\xca-\xcb\xbf\x13\xec\x9c\xf9\xc7s\xfe\xa1\x97%p\xb0\x9b\xe7G1\xfcHn\x1f\xc1\xeaG\xf1\xf9z<\xbc\xab\xbb\x91\xc3o\xcaD\xb1f4\xfc\xc8\xbf\x14\xabU\xc3\xdaV\x03\nvT(\xc3s\xd5\x95T\x03M\xed\xach\x7f\xc0d\xac\x94\x10\x9e\xaa.ka\xdd\xd4\xbb\xcfR\xe3\x81q:\xbfe\xf7\xaejO\xbe2\n\x13*\xd4L\xbda\xdd\xa1\xa9\x84z\xa3\xc8\x15Ed\xf4L\x91\xd0\\6\x13q\xa2\x8fS\xe8\x02\x9c\xd0k\xbez\x92\x99(\xa1^\xaf[\xd6A\xdd\xc0\xb8\xba`h\xc6-\xeb2\xb7\x96\xc3\x03oiDY?W;N\xbc\xdf\xeafDSV\x87\x1dk\xca\xa5\xfe\x9b\x18\x93T\x12N)?\xdc\xb0J7\xfc\xa1\xea\x15\x9f\xc9\xd7\xfbR\x94\xb6\xe5}\xbeoB\xa9\x91\x1cZ\xde\xd4\xb7,\xb2=\xc7\xc5\x9f\xb8q'\xd4\x95\xa5y\xb7\xe5\xae\xc4\xb6\xae8vL\xbb\xcea,\xa9\x06\x9a=X.9\xf9\xaf\xa3\xd2\xf6\xd2\xf7o\xfe\xe9r\x0d[\xb6\xee4\xbc\xa6h6=\xf1\x11B\xa6|A\xe4Ex;_\xdf\x03+\x967P\xec\xf7_\xb0\x15M\xa4l8\xdf\xd7\x96\xc6\x19\xbcEE\x0f\xadE\xceV\xe0\xff(\xabU\xb9,:\xd6#\x0d:\xa4\x89\x1f\xa8:\x92Y\\Y-\xb7\x87\xd5\xc4\xbfP\xc8\xab\xf4L\xc9\xe4\x89 B\xc9\x90:\xc56\xa0&\xa19*\xec\xfd\xe5tb;\xb9\x05\xe1\x92iX\xabX2\xf1z\x0d\xef#\x7f\xe5\xce\xd5\xdbTn\xaa\xba\x99\x08\xc5\xfam\x1c_B\xb6\xcc\xb1\x0f\xf6\xba\xae\xb7\xcc \xd6-\x0f\xb0aw\xac\x19\x9d\xea{x\xea\xe8\xe9\x83+\x0d$\xb1a\xf67aT\x0e\xbf\x06\xab\x04BS7+\xd6L\xdd?o\xcbj\xc9\xbe\x07\x99\x8e\xf7i\xbb\xba\x85_\x9d\xff\xf67Y[#)\x07\xf0\xc5\xa7~YT\xae|\x1b\xe7\xeb \xa1N\x08\xbc\x1f\xd8g\x81\xd4\x0d\xa9\xf3\xf4\xa1\x97/\xf4\xd3\xb6f\x04~\xa4\xef\xf1\x81'\x04v\xb1\x82I<\xb3\xd1\xd8\xa7\xa3p\xad\xc0\xf8Q }\xbd\xe9|\xbd\xcd\x01\xc1&\x01\x04 \x89h\x17@\xaa\xe9\xd2\x92xHOyQ |\xb32\x91A*27\x17\x89'#3\xb1\x91it\xa4\xa7\xb8\xc8\x94\xbdG\x12\x92\xb9\x19\xc9HJ23'\x19GJF\xb2\x92\xbe>\xdcS\x94XZ23/\x89\"&32\x93\xc7R\x93I\xdcd&r2\x85\x9d\xf4\x14\x86N\xca{\x02~\xf2t\x04\xe5I\x18\xca8\x8a2;G\x89%)\xb3\xb2\x94x\x9a2\x9a\xa7\x8c'*\x83C!.\xfd\xee\xd1Te0\xf5.jB\x85`+cf]\xd1|\xa5\xef#\x88N\xb8\x8b\xab_F\xca2\x86\xb3\xccLZ\xa6\xb1\x96\xbe\x1e\x84J\xb2\x9b\xc8[:J\xebP v\xf30\x97hp\x10\xc1]F\x91\x97\xa1<\x8b)\xf4e\xa8L'\x83\x90\x89\xc1\x8coL<\x87\x19\xba\xb7\x04\x163\x91\xc6\xf4\xe7\xf6\x0c\x13\x99y\x99\xcc=]>\x9c\xc26#\xf9\x19L_{\n\xfa3W_\x8c @c\x18P\xfb\xf4\xc0\x97\x9av\x9cu/11m\xd0%\xe2KJ\x8bG\xd5|\xe7\xa0\x12\xd2\xc6\xe0k\xbe\xb3\xbc\xc9h\x91H\x9b\xef\x04O\"\xda(\xccm0l\x12Z\x9c\xcb'_\x02\xda^;\xf5\xa6\x9f\x8dL>;$\x99u\x94\x17L=\xab\xaf\x12\x9bx6\x83\xa2\x1bH9\x1b|\xd5`\xfa\x14s\xa4\x9b\x0d&\x9b\x8d\xafVD&\xd9`\xf5\xfc\xb9b\xe3\xebv|\x9eX\\\x96\xd8\xf8\x9ay\xbd\xc4 \xf9a\xbd:\x98\xef&\x83\xb9a\x83\xf7\x86\xcbS8\xfe>\x1d\x9d\x15\x16\x97\x13\xf6\x14u\xcf\x90\x0d\x16\x91\x0b\xb6\xf3d\xe3\x82P\x1e\xd8\xe0\xe8\x85\x19\xbf \x9c\x016\xd8\xbc\x80\xca\xfe\x8a(\x06\xfb\xeeD\xe6}Edw\xcd\x9b\xdb\x15\x99\xd95-\xaf\xeb\xa8\x91\xf2duE\xe6t\x0d>\xc1\x84\xf7\xcc\xf9\x94\xf3\xe5rE\xdc\xf9\xe7\x1f_\xb2ep\x0d\xb7f\xbe\xec\xad\xf6Z\xf8k0\xca!\x89J!9I\x1a9)\xef\xcd\xd5sJ\x19 \x9422\xdb\xc7$ \x91\xa4\x94\x91\x180\xd2\xe6!\x8f\xc6\"S\xa0HJ\x19\x99\x11\x85\x8c\x01!\xa30HJ\x19y,\xfc\x98\x80>f\x01\x1f\xe3\xb1GJ\x19y\x0c\xee\x18\x03;fF\x1d;\x14\xe8\x98\x11s\xc4B\x8e\x16\x8f=\xa5\x8c\x1c\x1b\x02k\xc4\xce\x92\xa2\x91FJ\x19\x89\x02\x19S0FJ\x19\xe9:,\x88.F\x80\x8b\x98d\x831\xd0\"\xa5\x8cL\xc9\xba\x18\x82\x14)e$\x1eLDb\x89\x18(\x11\x87$R\xcaHH\x84\x10#\x10DJ\x19\x99\x019\x0c\x02\x87\xa9\xb8\xa1\xf3\xbbI)#gF)#)e\xe4\xc4r\xa4\xef\xc3\x82\x84\xd1\x18a\x14DH)#\xbb4p\x90RFj\x8bJ\x19Y\x9a\xe3s\xbeL\x19\xa5\xd8*q4\x0c\x0e\xd9[\xba\xe6\x90\x9a\xa3(CR\x97\x0b\xa5x\xabrl\xd9]^\xa8#\xfa\xec.\xc5\xb6\x17\xca\x95\x00\xda\x96\xd5f;\xbf\xf7Qj\x17]\xcc#\xdd\x00\x0f4\xb5\xcb\xb8AL\xeb\xbe\x80\xa6\x17\xcc \x13\xe5\xd3\xf2\xe4\x85\xc9\xd9\xdf\xcd2U\xda\xbe#*\x8f\xf1i\x81y-d\x8a@gA\xfd\xabb\xbf'?\xb5\xe3\xeb$\xd2h\x9fj\xc4\xc3\x8c\xe6\x95\x82\x95\xff%\xefS\xad\xea,\xe5\x16\xd5\xe3e9\xfdK\x91\xea-V\xc3\xf6\xf0$4\x196\xbe\x0e\xff\xf3R\xa6\xa1\xd3\xb9C\x1d\x9b\xdc\x8a#\xbb\xf2\xce\xb1\xe2AB;\xfd\xf7\xc7|\xd7\x87]\x8e\xf5\xcf\xd3Rhgca\xa3[\xa5\x9d\x8dQ\x8dI;\x1b\x8b\xe9\xa5\x9e\xc6\xc5Pi\x93\xa9\x9f6\xa2\xd2\x94\x11\x95\x96g\x06HT\x1aQiv#*M\x18Qis#*\x8d\xa84\x97\x11\x95FT\x9a0\xa2\xd2\x88J#*\x8d\xa84iD\xa5\xa5\x80]D\xa5\x11\x956\x18Qis#*\x8d\xa84\xa2\xd2\x88J#*\x8d\xa84\xa2\xd2\x88J\xfbyRi\xb4Gf\xea\x06\x84\xb4G\xe6 \x1b7\xdcGi\x8f\xcc\x1c\xadH{d\xd2\x1e\x99_\xed\x1e\x99=N}\xf1\xa9'\xef<\x1bg\x1am\xa99;\x0dY+\xa4\xba\xcfRV\xc97\x90\xf7\xc6~\xcb+}\xe5\xcb\x17\xc3\xacd\xa0`\x15\x87\xe7\x83\xb1\xd5O\x0f\x9d\xc5v\x81,Il]\x90\xa8\x0e\xaa1\x08\",\xdf,m(\xd1KR\x07+\x8d\xd1`\xb21\xd4^\x82\xda\xc7\x12w\x01z\x9ar;Z-\x92\x95F\x10\xd1yyh$\x0d\x9d\xc6B\x1fOB\x87\x9b93\x05\xede\xa0\xed\xa3\x00\x1e\xcdL 3'\xa5\x11\x98\xa9\x8c\xc0\xcc<\xe3\x13\x81\x99\x04f\xda\x8d\xc0La\x04f\xce\x8d\xc0L\x023]F`&\x81\x99\xc2\x08\xcc$0\x93\xc0L\x023\xa5\x11\x98\x99\xc26\x12\x98I`\xe6`\x04f\xce\x8d\xc0L\x023 \xcc$0\x93\xc0L\x023 \xcc$0\xf3\xe7\x0ef\xf6Z\xa8\xab\xfe\xb1\x1c\x80]\xf1?\xf2Fr\xf08b\x9b^7\x80\xf3\x8e\xff\xfcF\xe2d\x9a\xbc\x11\x1f\n!!\x88\xdc\x86\xba8\xb1e\x9e\x15\xa61\ny\xa4\xef\xf2\x81\x025Fs\x986\xaa\x8b\xbcw{^-\xf1\xdb\xfc\xeb\xe9\xac \x04uH\xcf^\xc0A\xef\xdb\xa8\xda\xc7\xee\x01\xec\xdd\xff7\xae*\xb9\xf6\xfdu\xef\xf9\x1bW\x9f\xe3\xf6\xfa\x0d\xef\xf3\x1bW\x1b\xa7\x074\xe7\xde\xbe\xc9\x10\x85\xf12\xc7\x80\x14\xef,\n\x1ba\x14\xca\x08\xa3 \x8cb0\xc2(\x08\xa3\x18\x8c0\x8a\x8e0\n\xbb\x11F\xa1\x8d0\n\xc2(\x08\xa3@\xce\x92\x08\xa3\xe8\x8d0\n\xd3\x08\xa3 \x8c\xc2b\x84Q\x10F\x11j|\xc2(\x9c\xe7\x10F12\xc2(\x08\xa3 \x8c\x820\x8a\x91a%m\xc2(\x84\x11FA\x18\xc5\xc3\xc5(r` B\xbftc \x7f\x11\xf2\xa6\x06\x12\x94\xd8\xb9\x86\x026\xe5\x1d\xabfw;\xa2\x11\xc4\xb9\x8f\xf4\xfd>P\x0e\xc1\xb8\x7f\xd3\xba/\xa0\xdf\x05\xf3\x81D\xf9\xaf>\xfb\x0e\x8b\xbc%\xb3\xed\xae(\n\xd3r\xb7\xfc\x0f\x9d\xc7\x00U\x19\xa9\x92\xb8j\x83q\x93\x81L\xb6\xd0\xb0e\xd1\xf1\xf7\xf4\xaaak>c\x94\xda\xd0O\xf2\x02\xedOPVm\xc7\x8a\x95R \xd7\xceI\x1e\xf4\x99\x93\xf8 \xae\xde(\xf7\x80*\x96z+9\x9b-\xd7\xf0\xd3\x96UO\xd45\xbf\x85?\xfc\x01\xbe\xfbI\xcd\x94\x8bN\xdd,\xff\xce9\x8b\xfb\xc0\x84\xe7\xf5\xbbs\xb8\xac\xa0\xd8z\xbc\xd2\xd2\xd7\xbb,Z\xd6\x9e)\x8f\xb8\x98\x85M\xb2~9\xcf\xff\xcb\xebw/\x17\xaf\xaf\xde]\xbe~\xb5x\xff\xea\xed\xd5\xcb\xe7\x97?^\xbe|\xe1Z\xa8 :\x06\xab\x0e\x9e,(O]WD\x9e\xf1\xef/\xdf\"\x8f|\xf6\xc3\xdbw\xcf._!\x8f~\xf5\x1a}\xe0\xe2\xaf\x97\xef\xfe\xb4\xf8\xcb\xcbw\xaeS4\xab\x11u\xab\xaa\xb7\xf8\xdf\xc8\x87\xb1=\xa8\xffm\x95\x86}g\xa5\xa9W\xc2\x1c\xce\xa4\x0f\x9e\x8f%\xbai\xce\xa0\xec\xa4fX\xd5\xee[\x90\xa6q\x82\xd5AjxlT\x92g\x19\x8e\xeb\xe3\xd2\xfc=]Z|\x7f\xb7\x9d\xe7\xeb\xf5\xb6\xe3C}\xdfv\x8e\xe7\x0d\xb0\x1f\x1e|\x0f\xa4%\xbd\x0d\xd2\xe40\xe8ob\xf4\xd3\x8a\xeb\x91j\x046>i\xfaOE\xdb\xd6\xcbRh\x07BB\xd1\xbf\xa3\xba\xb8\xbb\xe7\xe1\xab\xf7WQ\x0f\xb6\xe2\x13\xb6\xd7\xe3\x17\xa7\xe0\xb3\x00\xc1>\x88\x1a\xf3\xa5B\xa0j\xed~[\x06\xb6\xb8\x0df\xd03mt\x1b\xce\x1dB\xfb\xe1N7\xf0\x07uO\x93\xd7\xd4y:\xbaN\x98f\xe5\x0di4\xa1\xacB\xc5g\xcd\xf5\x1dk\xaa\xa2Z\x9a\xf3\x17k\x11\xcfd!\xcb\xbaj\xcbV\xefn\xde\x13\xc0\x97/\xce\x86\x99\xd1\x99\xf6\x99\xb9\x1f\x8d\xab\xaf\xcc\xe6\\\xe3ml\xe5,E\xb6!\xed`koZ\\\xff\xa4\x1dl\x01\xb76\xf9\x9av\xb0\x15\x0b\xe4\x18\xb6W\xae\xc6\xdf\\=\x9f\x94Fl/\xb1\xbd\xc1I\x0b\xe6\xc3\x05\xc4\xf6\x12\xdb\xeb<\x92\xd8^a\xc4\xf6\xce\x8d\xd8^b{]Fl/\xb1\xbd\xc2\x88\xed%\xb6\x97\xd8^b{\xa5\x11\xdb\x9b\x82\xc7\x12\xdbKl\xef`\xc4\xf6\xce\x8d\xd8^b{\x89\xed%\xb6\x97\xd8^b{\x89\xed%\xb6\xf7\xe7\xc9\xf6Z7D\xa4\xbdk!\xdc\x8c\xb4w\xed \x1b7\xdcGi\xef\xda\x1c\xadH{\xd7\xd2\xde\xb5_\xef\xde\xb5\x827\xbb\xf8$\xe86\xcf\xa6\xb5\x82\x903cSV\xc1\xddi%1\xf7l\xb5j\x9c!+\x8f\xf4]?\xe0\x88\x15\x17\x94\x92D\xc8\x05\xe3N\x82\xca\n\x82\xeb\xca7\xe3\xd2\xe6\x897 V8c\xac\x89\x8f]\xc7H6\xc9Q&P\xba4C\\\x8cI\xd6\x08\x13l|\xc9q\xd1%Q\xb1%\xc1N\xe0\xa3\xedc){,]\x1fC\xd5#i\xfaH\x8a>\x81\x9e\xf7F\x92t\x818\x92\xcf\xb1Qr8~\x04\xf7&J\xcb\x1c;\x92\x1e9\x12\xec\xc1\xd2\xc2Q#\xb1\xbd\xd9vV(b$\xa6g\xdb\xce\x08D\x8bD\xf6ri }]Z8N\x04\xf9lb\xfa]\xe6\x08\x11\x7f|\x08\xb6b\x19cC\x82\x91!\xc1\xd9\xe9`8\xea\xfe\xa8\x98\x10dm\xc2\x0dyt4H\xceX\x10[\xaf@\xa2\xea\xb1\xa4:\x81\xea\x04\xaa[\x7f'P\xdd0\x02\xd5 T\x1f\x8c@\xf5\x8e@u\xbb\x11\xa8\xae\x8d@u\x02\xd5 TG\xce\x92\x08T\xef\x8d@u\xd3\x08T'P\xddb\x04\xaa\x13\xa8\x1ej|\x02\xd5\x9d\xe7\x10\xa8>2\x02\xd5 T'P\x9d@\xf5\x91a\xa1a\x02\xd5\x85\x11\xa8N\xa0\xfa\xf1\xd8\xd4\xe9Au!@\xba\xea.\xb9\xaa\x11S1\"\xad\xb4|\xd8#\x81\x19\xeb\x1eB\x12\xdbm\xd1\xde\x94\xd5f\xe0\x12\xf9s\xf2d\xc5\xbe\x12\xbf\x8f\xf6\xe9\x1e\x1e-\x7f\x08\xbaD\xd8\xd5\xab\xc3VWo\x84\x1a\xbeU\x87\xc8\xb2\x1e\xe9\xbbz\xa0\xd0\xa1\xd9\"\xa69\x8b\x82\xa0V\xd8\x96\x9b\x8a\xad\x16\xd7\xdbzy\xdb.>\x94\xd5\xaa\xfe\x90\x88\xf3\x19\x8a\xaa\x15?\xdc\x95\xd5B]n\xcf\x9a<\xd7r\xb8\xe6V\xf5\x87\xaa+wl\xf1_E\xb9]\xac\xd48\x92t-\xd1\x89\x16k\xa1D\xd5\xd5bU\x1f\xae\xb7L\xdcGRq\xc1\xaa\xcf\xae'\xef\xe4\x14\x17\x0b\xbb\x08\xd5+\xd6\x7f\xe6foY\xef\x98\xbe\x96\xa9\x10\xf5+g{\xfc\xe2%\x1cO\xcf\\y\x06\xc5\xd8 /\x1e\xc3;\xa8\xea\xba\x88\x87\xfe\x8f\x04<\xcc\xda\xe7k\x07\x1eN\xa0\x15D\x7f\xf0\xf8\xa0RV\x9bEY\xadk\xcfw\xef\xad<\xec\x92\x1f\xd5\x7f\xfd\xd4\xb9\x02\xbd\x17\xcb\xba\xedVJ\x0dEW7\xfa\xc36\xfe\xf4\x19\xc5\xa8\xdf\x1f\xec\x87\x8f\xdf\xd5\xc3\xe8hj\xa6\x94\xdcS\xda\xaeh\xba\xc5\x8d\x97l\x0c\x16\x12\xfe\xd6\x82gp\x1d\xecO\nl\xec\xd4B\xa3\xef0\"\xdb\xaaX\xcfI\xdec\xc5\xff\xcc\xe0\xf5\x1b\xfe\x83\xb3\xb8C\xf5\x94\x7fo\x1d\xeanY\xad\xd8\xc7\x85\x0c\x1d:\xf1\x9d\x87?l\xd2.y\x95\xd4\xbd\x97-\x94\xd5\xb2\x112#\x1f\xf4\xefDv\xdfr\xd7kv\xa2]\x9c\xb4?\xc0u]\xaddD\x0f\xcf\x9ew\xc6\xa7\xfc\xd9\x1c\xf9\xfc\xdf\x95;\xd6v\xc5n\x0f\xa2f\xaa't\x1a5WO\\\xd5\x1eV\"B\xd1Y\xd8\xb6\xbcc\x15_D\xe9)\x9b# \xa2\xde]\xb7]]\xb1\xc0\xf62\xd3\xe8\xb6\xb1a\xef\xf0\xaf7L\x08\xf6\xb2;\x8d\xba\xf2M\xd1\xc25c\x95Q#xr[n]\xef/\xb7\xfa Ic]\x88\xa7\xa7\xb1\xee[\x1d\x18(\x02g\xab%\x9b\xb4\xac\xec\xe9-8o\x12\x80//\xef\xea\xa5\xf226b\xbaWT\xf7\x92Bp_|YW\xebrsh\xd8\x8aw\xd1kvS\xdc\x95.\x1eG\xf6a\xfdJ\x88\xe0\xc7\xa36\xd0\xc99>=\x03U\x1f\xde\xe8\xeae{r\xa8\xe4[\xfc\xad|\xefZ\xdd\xca\x07\x99\xc0\xdcY\x98dz\x0eU\xc5\xf8\x07\xbbh<\xfc[\xc3\x8aU\xab}\xdb\xc8\x97\x1csO\x7f\xd1\xcf\xde\x98{\x98L\xb6\xfe\xf9\xf1d>\xe3\xc2\xebvuUvu\xa3b\xe3KG\x8f\xe8_L\xbe\xa4\xba+\xbb\xfby\xf5\xd5\xa7R\\L\xad3P\x13*m\xbe,\xfcG,\xce)k>e\xcd\x9f\xd8g\xc9\x9a\x0f\xa8\xf7\xd9La!\xefj\xe4\xfb.+\xd8\xbc\xb9z>,\xd8\xd5\"\xb3\x85\x0f\xfc\x99\xd9\x1e\x8f}\xea\xb2\xac\x1bY\x86\xc0\x88\x1by\xf3\xbd\x9b\x9a\x7f\xc6\xc4\xd0g\xb6\x8c\xb59\xf4\x19o\xeb\xddPo\xaf\xa8\xda\xb0=\x13 \xcf\x0fE\xd3?\xa4\x80v3n\x16\xd1\xbf]\xea\xcdX\x16\xf6\xfaB\xcc\xc5\x1a\xca#b+\xe4b\xb4r|s\xf5|\xdaL\xe4&!7\xc9gw\x93x\xe5\x18\xca\xba\x13\x95\xd2\x84\xb2\xee\x9c\xb0q\xc3\xf9b(\xebN\x8eV\xa4\xac;\x94u\xe7\x97\x99u\xc7\xef\xf1\xbf\xf8\xb4\xac\xabv\xa1<\xcc\x9e\x8c;\xe6\xea\xd9T\xbf\xa7KV\xb9;\xf4R\x84\x18\xc9BUI.\x1d\xe0\x91\xbe\xe9\x07*\x03\xdc\x15\xdb\x85\xd9dY\x17\xdb^\xcf~`j\x13\xf6\xea\x07\xe7Fa\xbfQhy\x99\xd5\x9b\xef\xf3\xe5\x87=\xf9\x19\xee6\xbc\xfe\x84\xbc\x1e\xfc(\xff}\x9c\xf7\xde\xf4\xd2;\n\x0c\xf9\xee\xb3z\xee\x91.\xbd\xb0\xd7\x1e\xfd\x9c\xfd\x1e{\xdc\xb3\xce\xe8\xadG\xf9\xeaC\x9e\xfa\xb0\x9f\x1ew_i>z\xa8\x0f\xaepv\x8c\x87>\xca??\xf2\xc3\xbb.\x8a\xf4\xce\xe3}\xf3\x11\x9eyt?\x96\xc2\xc6\xb3!iX\xf7[\x16\xef\x1b9\xdf\xc8\xf9f\xfd\xfd!9\xdf\xcc\xd5\x88\xab\x17\x9a\xc7\xe87B\xffgW+\xb5g\xf2\x8e\x1ae\x9d\x1a)\xeeD\xd8\x7f\xbf\xdcZ\xb1-\xdb\xc8\xa4\x0b\x17\x9f\xd4\x7f\xd4\x8d\xa8\xbfg\xb9e\x0c /\xf49/\x86\x92\xfa%X!\xdc+\xc3\xdfE\x82(\xb9\x06\xeb\xaf\xd5\x97\xa4\x1aI\xbf\xa9\xae\x11\xfb\xaf|%\xbf,\xc4\x07\x7f\xdd\xd4;(*\x19\x81/iJ\x95\xbdQ6\xb3\x8c\xa8\xe7O\xe4 \xe6\xbc7\xe5\xe6\x06\x8a\x1d\xff^\xf5\xe5\xd5\xeba\xd8\xd9\x14-_ew\xe3]\xc0uVK>\x97\xae\x9b\x86-\xbb\xed\xbd\xe97\x18\xad\x1dm\xed\xa1\x8e{\xb0\x8b\xc8\xe1\x11-,u\xd4\xf6%\x06\x88\xa1f\xfe\x97\xfc\xe8L\x8d\xe3\xae\xef\xc1\xd9\x007\xb0\x00j\xcea\x1e;\xb9\xbe\x1e:X\xc5\xbf\x1a\xabI\xe6W\\Y\xee\xf8\xc7~6\xf3\x85nwv\xfd#n\xb7/\xcb}\xbb\xedM\xd1\xf8\x9e~\xda=\xcaR\xd5\x1cQ\xd4~\xe8\xae\xfa\xc7\x86-Yy\xc7V\xae\xbaa\x1bm\x18M\xa6\xe89_\xa4\xab\xb5r}\xcb\xaa\x16n\xf8hu}\xef\x83\x88\x8a\xa5\x98\xb3\xabY\xb9\x9bz\xa9?T2\xf4\xb5\xae\xd8\xd0\xadT*\x96\xd6\x96\xfe\xd1\xdd\xe3\xea\x8e\x7f\xf0\xf6\xf5\x07\xb9R\xa8+\x0f\x94\x17x\xa4\xd7\xc5\xb6\xa8\x96\x81\xef~\x86!\xa1\xaa\xbd\xf9KQ}F~m\x8e,\x06\xdbK\x9e\xd7\xa5\x99\x06St\x08\x95yD\xde\x8e\xfe\xa4\xf1\x07XT\xaar\xbe$7\xaf^\xbf{\xf9\xbd\x08\x96\x95\xc7\x0e\x1f\xc3\xa2\x82\xcbJ;\xd6\xfat4\xad\xb7\x13\xa8`=5\xafw\xbf\xae\xe5\xa6*\xba\x83|\x7f\xe4\xdc\x87w\xc2M\xbd\xa9E$\\*l5\xbcD\xe6\x92E\xac\xe4\x8b\xad\x10\xdej\xf3Ec\x1f\x97l/\x95=kqeg$\x8a\xb1\xdf\x8d\xea\xa9\xd3\xc8D58\xf4N:A\xe9\xb4\x87\xb2\xd3B\x89\xb5\xb0\xe5V\xa8\x83\xfd':e\x95k\xfb\xd4\x0f=f\xbb\x9d\x0cc\xed\xe3\x81\xf6r\x976\x7fO}\xf4\xd7\xa8\x92\xc64\xcb\x8c\xc1\x1b\xe9D\xa3E\xa5e\x8d\x9c\xee\xe0&\x9a\x8ch\xb2\x89}\x16\x9a\xcc\xdf/\xc4\x9a\xcd\xb6\x8e0G-\xbc\x93\xc5\xbaB{s\xf5\x9c\x92\xde\x02\xf9W\xb2M=(\xe9-%\xbd\xb5\x1b%\xbd\x15FIo\xe7FIo)\xe9\xad\xcb(\xe9-%\xbd\x15FIo\xdd}\x9a\x92\xdeJ\xa3\xa4\xb7\x94\xf46\x98\xee\x94\x92\xdezZ\xce\xf5\x0b%\xbd\x9d\x1a%\xbd\xa5\xa4\xb7\x83Q\xd2[\xc3(\xe9-%\xbd\xa5\xa4\xb7.S\xbeHJz;9\x81\x92\xdeR\xd2\xdb\x07\x96\xf4v\x8cc\x19E\x8d\x96\xd3\xe3\xa3F\x02v\xff\xd3\x9c\xfd\\\x8f]\x82G\x02\x9f\x14\x19\x9e\x1avK\x91\xe1'l\xdcpL3E\x86\xe7hE\x8a\x0c\xa7\xc8\xf0_hd\xb8=R\xa1n\xe6\x81\n\x17\x0d3\x905Y\xa8-l\xe1\x8dyX\x1f\xa40:y\x08\x12\xffe\x84#\x8cnY\x1d\xf0`\xe3\x10\xcc'\xf1\xd0\"\x11\xcc\xba\x9d\x1c<~\xa0\xb1\x08\xd7ly\xf3\x9b_?\x9d3\xfa\xde\xe2F\xd3aLHB\xdb,\xbf\xd0\x9d[\xeb\xa0\xef~\x08\x036\xfb\x82\xb7<\x05C\xc97rX\x0b`\x1aa\xd5v_\xbc\x11\x8c:\x1c\xd1\x08+\xd6vz\xec\xc2\xb7\x04\xab\xba\xc6\xfb\x96\xf8\x87\x81\xc1\x9c\x03\xc2`\x88\xf7V\x1a\xe6\xed\x95\xb6l\x98\x1c\xc6\xfcy\xad\x07C>Hi\xe1\xd8m\xd3b\x1e\xbe\xb4I\xeda\xb4\xb4U\x7f\xebs\x0d \xca3\xfb\ntu}\x0b\xfbm\xb1t\xa4\x03\x1elY\xef\xf6[&*\xe2\xde\xf0\xc1\xb4\xa4F\x0c\xa5N\x1e,\xa1!\xc7w0\xdd\x1d\xe7\xa3L\xc6\xe1\xc3\xc6\x06\x1b5\xe2Pp\xa8\x11\x05\xaaUl\x17\x81\xa0\x99\xc1\xa2\x1a1\xbeI&\xf5\x195\x89\xfaM\x87M J\x13\xb3\xf7Q\xcb\x88\xc43\xee\x80+m2\x04\x83\x0fq_\xbcE\x86\xaa\xe8QV\xc5\xda\x04>\xac\xd2\x8c\xe1\xf5\xe90:\xab\x08\x13\xf1\"\x0b!\x07Q\x92\xd9\x8c\xa1\xe6;T\xd72\xfb\xe8\xa2tf\xed\x1e,\xaa\x01\x11\x81\x00\xa6\x85\x82\x02L\xbb\xd4\xc9pD\xec\xf5\xca\x07({\xd2\xda\x0f\xc6?R\xa1\x96\x1dZ\x8a\x8f\xa7\xf5v\xb5h\xd8Z\xe6\xee8Q\xc3\xe5o\xb7\xb7]S\x8ae\xc6\xben\xcb\xae\xbccrYR\xb6\xb2\x05\x1e\xb7\xc3]\"J\xebS\xb8\xb4]\xbd\xdfK\x99\x91}\xecXS\x15[\xb5l\xf27~\xdc+f.\x81^\xf2\xea\x1a\x11r\xa3\x91\x031\x01PY\x89\x1a\xb6ewE\xd5\xc1\x8eu\xc5\xaa\xe8\n\xdf\xeb2\xaa\xad\x9a\xd6\xc8e\xbap\xae\x18\x15P?\xba\n\xc3\xde\xf6\x9b\xf1\x87\xc2\x10\xc7\xb6e\xdb\xc9 \xfc}\xd1t\xe5R({\xaeb\xfa9\xfbcs\x8d\\mD\xc4\xa9'hT\xae\x82\x8d+\xe8i\xf00: \x87\x1a\xaa\n\xc3\xd41\x10\x13\x1a\x98/\x86\xe7\x8a\x81y\"j\x8e\x88\x9b\x1f\x8e\x96\xb9\xe2\x05\xa2\xe9)\xa2[\x0fF\xd3S\xab%4$MO\xa7F\xd3\xd3\xa9\xd1\xf4td4=\x1d,\xa9\xe1\xf2\xb7\x1bMO{\x8b\x9f\x9e\xa2\x06^\xd4\x83\xc6\xdf\xf7\xec\x9e\xdd\xf9\x18\xdcQ[\xb6\xa63R6@\xe9 \xa9\x04#\xda!&I\x83\xa7@3}\x83J\xd5\xe0\xbb\xbe'\x8b\x03\xae%\xcd\x9b\xf74\xdfx5 \xdb\xc7Z\x9ej\xb3V\xcf\xa4\xed\x95\xefch\x8fn5t{9[\x8a\x92L\x08\xf3\xe1=\x83Q\x92 \xc0}\xbcC\x1f\x9e\x9fg\x92\x89\xd9\xed\x08\xb9}\xa4\x0e\xa7e\x97\x18k\xea\xce$\x9e\xc3\x83\xa4,\x13\xb3\x06\xa2,\x13\x98\x0f\x1eP\x96 \xca2\xe1<\x92\xb2L\x08\xa3,\x13s\xa3,\x13\x94e\xc2e\x94e\x82\xb2L\x08\xa3,\x13\x94e\x82\xb2LP\x96 i\x94e\"%Q\x03e\x99\xa0,\x13\x83Q\x96\x89\xb9Q\x96 \xca2AY&(\xcb\x04e\x99\xa0,\x13\x94e\x82\xb2L\x98\x81vFQ\xa3\xe5\xf4\xf8\xa8/\x9de\xa2m\x96\x8b\xf1\xee=\xaez\xcf\x8f\x1c\xd5}\x80\xc1\x8c\xba\xf7\xc0\x0b\x13\x18\xf1\xf4\x0eb#\x8e\x1d\xf7\xb0j;\xe4=\xcc\x8f\x8c\xba\x87\xf1V%\x19\xef\x80r}`Z\x8br}H;q\xe3\x86\xb3TP\xae\x8f\x1c\xadH\xb9>(\xd7\x07\xe5\xfa\x18\x80e\x03<\x92\x85c\xb7*}\xaf\x8bp\xedY\xda_c\xb6{i_\x98H\x1224\xe4l&\xa6\xbb\x93\xeb ?\xf0\xbc!\xde\xb6R'<\xd8<\"C\x17y`ID\xc6}\xd9\x93\xda\x01\xa1\x17b$7\xb0]\x13\xd2\xb6\xda\xec\xcbq\xca\x9f\xb8\x1dE3\xdeZ\xae]D\x7f9\xa1\x85Qq}\x88'!\x0d\x1f\xb9\x81}r\xd2\xa6q|\xa5=\x82\x0f\x1d\xbd\x81\x0b\xdd\x8b\n\xdb\x8bn#\\\xb8^d;M\xc2\xf4JK\x84\x1e\xba\x91p\xa1yQay\xe8F\x8a\xbbm_(\x9e\xda\xebV\x1d\xe2a\xd2\xa4\xf1\x0f\x0b\xff\xac\xae\xe4\x02]\xec\xc9\x0b|\xa9\x86j\x8c/\xd9\x08\x9e\x9b\x1f\xddJ\x96\xa7\x8e\x0f\x9bC\xdf-\x82\xb8\xd7\x16\"\xef\xb5\xe5\x0c\x93\x0b\x85\xc8%\x87\xc7E7P\xbe\xf6\x89\x08\x87\x83\x1b\x0fZ)-9\x14\x0e\xdf\xcf-s\xccI$\\eT9\x18\x07\x17\x17\x037\xaa\xe64=\x83m!\xe0K\xd3\x80\xb9g\xcb\xdd\xf2\xf6m\xd4\xdaC\xa4gh\xcbj\xb3ef\n\x06kQC\xf5<9\x19\xf8\xc7\xa1/q\xf0X\x96\x15oV\xfe\xf9x*\x96\x85l%\xd2CL\xef\x8a\x82\xac\x84Q\x90\xd5\xf0\x13\xb61)\xc8J\xf89\xa6\xef;~K\xdfIi\x16\x98_\xc6`y\xaf@[\xfdj\xa3 \xac<\xcbn\n\xc2\xa2 ,\xbbQ\x10\x960\n\xc2\x9a\x1b\x05aQ\x10\x96\xcb(\x08\x8b\x82\xb0\x84Q\x10\x16\x05aQ\x10\x16\x05aI\xa3 \xac\x948&\n\xc2\xa2 \xac\xc1(\x08kn\x14\x84EAX\x14\x84EAX\x14\x84EAX\x14\x84EAX?\xbf ,\n\xff\x89\x8b\xad\xa0\xf0\x9f\x136n8p\x85\xc2\x7fr\xb4\"\x85\xffP\xf8\x0f\x85\xff\xf4\x00\x9b'\xe6\xe7\x1f\x96\x98\x9f\xbf\xf4\xe7\x8d\"}\x86\xe2\xa0\xac\xd6\xb5\xe8\x9fr\xff\xdf\xfe\xc2}Y\xbf\xb0\xc8\x9e\xa1E\xd4a\x0f6\x9eg\xfa\xccM\xeb\xbe\x00k\xa3w1\xfd\x8c\xa1.\xd3K\x8ef\xa0\xe30\x97\xa1\xb9\x1c\xd4\xa8Y\xde\xff\x14\x9b\xfa\xf6\x013e%V\x1a\xf6\x155\xef\xa6\xacj\x0f\xedb\x7f\xb8v\xb2\x96\xc1\xd6\x05D\x0b\x03\x82h\x02\\\x0bCD+C\x02\xdd\xe4-\xcc.qy\xfc\xa4\xb9)'\x08\x93N\x90@;\xf9o\xa0\xe8n\xd0\xc4\x13\xe4\xa2\x9e \x91|\xf2\x16(v\xba\xc0\xd2Op<\x01\x05\xd1\x14\x94\xb7(EgD\x91P\x90\x9b\x86\x82H\"\nb\xa9(\x7f\xcf\xee\x89),\x19\x05\xb9\xe9(\xc0\x11R\x90\x93\x92\x82\xa3I)H\xa3\xa5 \x171\x05I\xd4\x94\xffu(\xf8\x9a.3\x05M\xbf\xd3\xbe<\xda\xfd\x84\x9bz'2\xdc\xb0\x15\xb4]\xd1\x1dZ)\x04\xcc\x92\xd5H\x93\x87\xb8\xee\x12{\x07\xeaB\xe54\xd3\xb7\xfc\xbb\xf3\xb4'\xb2\x9eC\x9aR\xf5/!\xfc\xd8OAx\xc9Xu\xd8\xb9'\xf8O\xe1\x87\xd7\xaf^,\xde\xbe{\xf6\xee\xfd\xdb\xc5\xfbWo\xaf^>\xbf\xfc\xf1\xf2\xe5\x0b\xf4\x19\xfc\xbf\"\x0f\xbf|\xf5G\xe4\xf1\xde\xc2u&\x92\xa8[\x90 \xd0>\x83\xec\xae2\xad\xc9n\x0c\x06\xed)\x14\x08\xf1\xdb\x93\xb2Zn\xdd\x1f\xfe\x96m\xd7O\x87\xe4Q\x8eN0P.r\xff\xfc\xcfpk\xd3K\x0eD\x81\x80\xad\xd4\x1f\xcb\xb6=H\xb5\xc5\xfd)2x\x83\xa1T\x87\xdb\xd8\xac\xdd\xd17\xd0\x1f7\xe1q\x87\xbfw\xac\xd9\xb5`\xdf\xbf|\xb0@\xfe\xcflD\xc3\xae\xae\xca[fIt3\x18\xe2\x01CD\x1b\xc1p\xd5!\x99\x1a\xdc\x1cvE\xf5\xb4a\xc5J0ybF\x17j#\xc0\xb4\x13(6\xa2s\xb2!p\x9a{\xd4\x9753\xc6i\xe5w\xf8\xb1-7U\xd1\x1d\x1a\x06O\xd8G\xff2\xf8\xfdU\xdd\x08\xc0\xf6\x7f\xb1\xfb\xeb\xa2e\xce\xc1\x1b\xe0\x03\xbbn\xcb.\x87\x0e2\xbacU\xac\xf5\x8e\xf4o\xdb\xb2\xba\xf5\x0d=\xcbCSv\xf7\x0b\xb1VYz\x13\x16\xa6\xd40\xf0L\xa6\x97\xb7\xde \xdb\x15\xe56\x88\x0f\xe8\xa2@\x15\xe5\xbeggN\xa6\xc1RnU\x15\xab?\x04R\xb0\xeboB\xfdj\xaf\xd5\x90A\xd2\x9f\x93\x17Q-L\xaaH\xec\x13\x9aVK?\x9d3(\xd7\xc3\x8fgbDUGx0#\x9d\xab\xb7lg\xd3\xbb\xcd\xc1H\xde\x18j\"_B\xde\x88\x06\n%\xe1\x8do$\x91f\xd7\xd3D\xbb\xb2\xeaS\xf1:\x8b\x1bO$\xbbZgee\xa1\x06Z\xd6\xbb]\xd9\xb6\xd8\x8f\xe6p\xf8\xe8\xc3h\xfcy\x08\x889\xf1'o\xb8\xe6\xa2):\x7f\xf2j\xecS\x01K\xb9\xa3\x1bUY\x81\x8d\x83\xbce\xc9\x02$l\xd1\x03\x0227\xb5X\xef\">{\xa8\xf6\x02d\x9b\x81\xaaS\xc8\xa3\x8fx!\xb4\xc54-\xa8\xcb\xeb\xa5\x8f\xd1m\xc4\x9f\x977\xc5\xfff\xef_\x9b\xe46\x8e|q\xf8\xbd?E\x1e>O,){\xd8c\xc9\x97\x8d\xc3s\xb4\xb1\x14II\xb3\xa6H.\x87\xb4\xcf\x86\xc31\xacFWwc\x07\x0d\xb4\x80\xea\xb9\xd8\xeb\xef\xfe\x8f\xba\xe1\xd6u\xc9*`fH\xbb~oDM\x03\x85\xaa\xac{\xe6/3\xeb\x8d8\x13z\x8b\xe9N\x83' \xfc\xf0\xd6\x82\xd8\xe6\x0eB\x0c\xb0#7\x17\x0f,\x00]\x85\xc1\xb8\xda\x91\x9b|w\xd8\x8d%\xe2-L\xae\x8e\xdd\xcc\xcfH \xf4\x8a\xd6J\x94\xc1\xb2\x91L\x9c\xcfAD\xbd\x9a\x18%\xb5\"\xb976\xb7p,\xa9)i\xe8\x11\x81\xb9'i)$oQ~!\x1e\xf6|w\xf0\x86~G\n\x0e\xbb\xe3@\xa0\x80{\xb5\xd4\xf3P\x18\x11\xc4\x1fL\xb3\xf2\xdaC@\x94=\xb52\xcbe\x97\x97\x17\xfc\xa2\xdaK\xa92a\x17\xc6\xb6\xd3\xf0\xd5#u\xcb\xe3F\xdc\xa0aE\xb3\x82\x8c\xfdyF\x85\x89\x11\xa7\x9e\xd6\x05:\x03\\\x99<_~o|<\"\x0c8BP\x98\xf3\x9c/R\xaeT\xce\x9b\xc3}\xf7\xa58\x08\xf9-\xb4n\x8e\x02\xc3\x82}\xf7\xa3\xc6\xdfu\x96\x0c\xcf\x84D\x84\x1e\xc6\x88\xb4\xc8\x1bAr\xee\x84\x96\xaf\x9a\x13\xe9\x04x\xe4\x06\xc0\xcf\x08va\xf6\xe2\x96\x8f{\xc5\xf0\x0ef\xea\xb4~;\xbd\x1b}[\xe6 \xb0j#u\xad\xc2\xc2\xc5\xb4O\x9e\xb1(\xe9i\xa4\x19p\xee\xaf=n\x84\nV+\x86T\xa4\x8e\xbc\x06z#\xd7\x16\xb9\x0e\x89Sm^Z\xce\x95\xe7\x05i\xb6\\\x18\xda\x87\xcd\xc6\xe8'|\xc6\xcbMA\x99F\x07\x9f9\x91<`AK\x95\x1eO\xc6R2Rd\x87\xa2\xb5\x17\xae\x0f\xfc\xf2o\xfe\xe0\xa1\xec\xa7z\xe2\xb2\xab\x0e\x8c\x8f\xc9Z\x1e\x03\xab+\xa1Bi\xb5[\xca\xcd\x8b7\xd5\xdc\x80z\xa8+4\x7fu8 NF\xbb_\xde\xf0c\xe8*g\x9a\xabIz+\x9b\xb1\xbc\xebm\xd5\xd0\xce\xfd\xd2\xfc\xd1~7\xe6\xcd\x80\x15\xdd\x1b\x11\xa2i]\x13\x8c%\xad\xf2\xd6\xfc/-<\x82\xdak\xfe\xea\xa0\xff\x16\xf0\xc7J\x88u_]\xd3Z\xbbL\xeb\xee\xa2+a\xd2\xb7\x0e[m\n\x10M0\x7fmw(X\xbe/r\xbd\x8c\xf5\xbf}\xf4\xc2`\xd6\xf5<\x02\x8d\xa9>\x9b\xc7\xd2SP\xc4\xe9\xb7&EJa\xf3\x05\x06MMa\xf3Q\xc2\xfc\xa7\x0b\x9b\x7f4.\x84\x7f\xb0\xc1O\xd5\x19,\xdf\xa0\xbd\x96\xd1\xf1M.\xc0)&\xbeB\x8a\x89?\xcf]&\xd4kT\x0e\xdb\x14\x13\x1f\xe1!\xca\xe6\xf0\x0e\x8d\xf1\x0cM1\xf1g\xf4\x02\x0d\xf1\x00\x0d\xf2\xfeL1\xf1\xa7zzFxy\xce\xe2\xe1\x19\xee\xdd\x99b\xe2O\xf1\xe6\x0c\xf1\xe4\x8c\xf0\xe2L1\xf1SL|\xcf))\xd8+3\xc5\xc4Gy`\xc6x_B\x8a\x89o\x81\xd7\xcb2\xc0\xc3\x12\x13M=\xc4\xb32\xc5\xc4\x8f +\xef\xf3\x9cL1\xf1\xf1\x1e\x92H\xefH\x8cg$\xce+2\xc5\xc4\x87H\xcf\xc7\x00\xaf\xc7\x14\x13\x7f\x06\xafF\xafGc\xac7\xa3u\xdfL1\xf1\x8f\x90b\xe2\xa7\x98\xf8#\xcc\x11\x9f\x1c\xebi\x18\xece\x18\xe4a\x98b\xe2\xb38O\xc2\x14\x13_#\xc5\xc4\xef!\xc5\xc4\x97H1\xf1\xe7\x15\xae?\x9a{\x8a\x89?\x87\x14SL\xfc\x14\x13?\xc5\xc4\xef\xb8i\xa7\x7fk\xff-\x7f\x93\x9f\x08\x0e\x92\xdf\xc6\xc8\xef\x91\x11-\xe1\xf1\x0d|\xd6=\xc9\xdb=\xde\x13{^=\xf5\xf9\x87\x9e\xb71Z\xa2hw\xb8\x00\xf2^\xdb\x0c\xc6\xb81w\xe8\xf8\xf0\xc0\xf1\xb8\xb0\xf1Ni\x82W\xa2\x80\xa0\xfb $\nh\xa9B,\xe9\xc7Q^P\xa0\xf8Y\x89?^\xea\xcf\xdc\xe4\x1f<\xfdg&\x02P\x1c\x05\xc8Q\\`h\xf8\x894\xa0\xb9\x89@\x81T\xa0\x99\xc9@at\xa0@B\x90k\x0c\xb7T!,%hfR\x10\x8a\x164#1h*5(\x8a\x1c4\x13=(\x86 \xe4(\x0c\x1d\xfc\xfd\x0eHBwG\x13\xba\x13\xa2P\x18Uhv\xb2\x10\x96.4+a\x08O\x19\n&\x0d\x85\xd3\x86\xbcK!.\xcc\xfbd\xea\x907\xc4;\xea@\x85 \x10\x85\x9c\xba\x82ID\xaeM\x10\x1d\xd8\x1dW\xbf\x19\xa9D!d\xa2\x99\xe9Dq\x84\"\xd7\x08B\x05s\x8f$\x15YJc\xa8@\xee\xf3\x10\x8b\xd0\xec\x18\x04\xb9(\x88^\xe4\x8b\xe7\x1bC1\xf2\x95i5\xb4\xcdD4\n\x17&\x9el\xe4k[\x04\xe1(\x92r\xe4\x8e!\xed\xa7\x1d\xcdK<\x9a\x87z\x84\x18\x1b\x93\xe9Gh\x02\x12\x8e\x82\x84%!!\x06N8\x11)\x84\x8a\xe4\x0c\xc9>\x0b\x1d)\x90\x90\x14GI\n\"%\xf9\x84\xee\x0e\xc3\xeey\x17ON\x9a\x8f\x9e\xe4\xad\x94u\xfe\xccGRB\xd0\x94\xe2\x89J\x96\xe2\x987\xe8\xfa\xacd%\x1f])\x92\xb0d)\xcb\x1fl\xddOZ\xf2\x04Z\x9f\x9b\xb84;u\xc9N^\x9a\x93\xbe\x84!0\x85S\x98\x82HL\x114\xa6P\"\x93'x\xba\xbbvXj \x96\xce\x14Ah\n\xa449\x9a\x1bCk\xb2\x14\x85\x08\x97\x1eCmr\x0cy\x7f\xa8\xf4\x19\xe9M\xde0\xe9wAq\x9ak,\x06\xd0\x9cB\x88N\xe6\xe3\x81+\x04:3Z\xad\xfb\xc0i\x01b\x82\x9f\x8b \xe7\x96\xf2\xb0\xa1\xcf]\x81\xcfq5\x8f\nz\x1e\x1c\xf2\xdc\xab5r\x85;\x0f\x0dv\x1e\x14\xea<,\xd09:\xccyD\x90sW\x88s\xaf\xfcp\x9d=5\xb89&\xb49.\xb0\xf9L\x0d\x9a+\xa49>\xa0y\xbf^\x93*\xde>5)\x94\xb9'R)\x9bnc\xf7\x860\xf7v%\xa0\xa5\x023\x06/\xf7\xc6p\xf5\x07.\x9f\xb9e3\x87,G\x07,\xf7\x86+\x0fo\xe7\xd4P\xe5\xf8@\xe5\xe1us\xf6\xc1l!\xca\xb1\x01\xca\xbd\xe1\xc9\xc3\x1b\x18\x1d\x9a\x1c\x17\x98\xdc[!\x7f\x10K\\\x7f\xcc\x19\x90|J8rL0r\xb4P\xdcaaC\x05\x13\x12\x84\x1c\xb3K\x00:\x04\xb9/\x00\xf9\xa0%\xd3\xc3\x8f\xcf\xb0Q\xe1\x03\x8f\xe3z\x01\xc2\x83\x8e\xcb\xc0\xe2\x8e\xf2&\x85\x1c\xf7\xca\x08Pr\x02T\xb0q\xef\x80\xd7\xc0\x0b\x13\xd0a\xc6\xfba\xc4=\x05\xa2\x03i\xe3B\x8c\xdfQ\xb3C\x82\x8b\xcb\xb5\xccS\xe0\x1c\xa1\xc5\x83\x02\x8b\xdf\xa1`P!\xc5\xdb\x90\xe1\x9e\x02\xbd\x01\xc5\xbd\xa2A\x85\x0bG\x89\x03\xb7'@\x90\xd0f\x0e\x13\xee\x08\x12\x8e\x0e\x11\xee\x95\x05\xaeu3\x06\x07\x0f\x0e\x0d\x8e\x0e\x0c\x1e\x1c\x16\xdc+\x1c\xffi\xca\x17\x03\xb4\x997\x1cxX0pD(p)\x02{ pg\x18p\xaf\xfcf \xa3:[\xf8\xef\x90\xe0\xdf\xfei\x11\x17\xf8[\x85t6\x94g\x0f\xfb=g\xd0od\xc8\xef\xe0\x80\xdf\xfd\xe0\xde\xe6\xc6\xd9\xc3}\xcf\x1b\xec\x1b\x13\xea{\xde@\xdf\x880\xdfQA\xbeu@oSy\xde\x10\xdfq\x01\xbe\x95r\xdbP\x9e=\xbc7:\xb8\xf7`Na\xc3\x0c\xb7Q\x86\xa7\x84\x18N\x11\x865R\x84a\xf7~\xe5_\xf7%\xa2\x9c\x8dR\x84a\x8c\x8b\x91\x89k\x12\xec`\x14\xe3^\x94\"\x0c\xcf\xe8T\x14\xe2R\x14\xe4P\x94\"\x0cOu#\x8ap\"\x9a\xc5\x85(\xdc\x81(E\x18\x9e\xe28\x14\xe264\xb3\xd3\x10C\xb9\x0c\xcd\xe80\x84u\x17ba\xceB\xa1\xaeB)\xc2\xf0\x00\xc1\xceA)\xc20\xca%(\xc6!(E\x18\xb6=\xe6u\x02\np\x01\xc2\xc4\xa6\x0dq\xffI\x11\x86c\x82\xf4\xfa\xdc}R\x84a\xbc\x8b\x0f\xd2\xc1\x07\xe3\xde\x83s\xeeI\x11\x86!\xd2\x9d'\xc0\x99'E\x18\x9e\xc1y\xc7\xeb\xba\x13\xeb\xb8c\xdd7S\x84\xe1#\xa4\x08\xc3)\xc2\xf0\x08sD{\xc5\xba\xe4\x04;\xe4\x04\xb9\xe3\xa4\x08\xc3,\xce\x05'E\x18\xd6\xf8G\x8d0<\x0c\xadh\xab\xf3\xf0)s\x0e\xe1\xbb\xaeshp\xc9m\xde\xb0\xaa\xce3R\\\xe4\xe5\xba:\xfd\x9b$\xd8:\xa2G\xfe\xd8\xbeqV\xae\xab6\\$oeW\xd88f\xa4,U\xb7s\x10\x19rX\xde/t\x93?\xd3\xa8\x90\xbc\x89\xc7\xe7\xffAU\xf8#\x83\xce\x1f\x8bE\x85\x975I\xa6\x83\xb5n\xe05Nn)Y\xd9\x1c5\x9c\xc5\x82\xb7h\x0e\xa5#vp\xe2$\xc9fI\x9a<\x83eQe\x97\xa2\xdd\xf6\xe7}u\x02T\xbd8\xc4\xd7f\"0\"\xe8D\x12d\xbf\xbf\xdfOb\x14\x8f\x12/t\x04N\xc8\xc8\x9e\x1d\xea\x96\x90\xad\xff\\\x1f\n*}\x8b\xf6u\xc5\xe7\x8f\xbb\x8a\xa4\xedOi\x11\xe4\xff\x93mI^\x9e8\xee\xa2*T\xb2\xe0K\xf1\xdd\xbb} V\x84\x11.\x97C&\xeb\xa6\xae#\xb2V\x8e\x02\xb5\x02\xb73\xf1<\xb6d\x83\x97h\x98\xe0*\xd5\xa4l\xe4n\xbe#\xd96/-\x01\x9f\x04\x1b2//r\x8b\xb3(\xe0\xba\xd4\xe5[\x01\xb8\"0\xac@\x80{d\xa8\x8a\xf3\xb2\xe8@\xb7t\xe4\n\xb0\xaf\xe9\xd5=/\x00[\xd2lg\x9e\x8c\xce\xe0e\xe2\xac\xc3.\x1a\xca.\\\xcb\xae\x06\xaa\xa5\x80n-\x87#\xf1\xfc\xe01'Ug\x0c\xcc\xb0\xd3\xf0\x8b\x1cB\xc4\x0ex\xd1\xb7\x03\xed\x1d\xa9YC\xd9\x8f\xa2\x07\\CW\x90\xa2\xd9\x85\xbb\xca\xa8\xaa\xa2\xaa\xa8\xaa\xc7?G\x85\x8dBN\x06\xbe\xecY\xde\xe1?\xddS\xf5\xba\xd8\xe1\xf7\xf4\xc1\xb1<\xd6u\xb5\xd3\xeb8T\x07\xb6?\xb0\xeeo\xdd\xdaa)M$\xe6\xb8\xf76t!\xad\xef\xe7{d\xbf\xbf\xa7/\x89\xf9\xa1\xb8\x10\xf7\xf4Iz\x95\xafh\x99\xd1{\xfa\\;\xfe\xba\xe3\x8fc[\xe2+p\xd5PO\xa4v\x98\xad~\x83C\x9d\\\xc9\x06\xb7\x88\xf6\x98$T\x8aj%\x91{\x8e\xe9\x18sE\x8a\x86:}\x11&\x11\xf1\x9d[\x18f\xf3\xc2\x05\xc2\x97@ 8\xe4X\x1c\x14\x1a\xdfYN\xdf\xb3\"<@\xbe\x04.L\xbe\x04B\xfa\x80\xec\x01P\xc5\xb9\x03\xe7w\xcf!z\x00\x02{\x01\"\xd8\xad\xde\x02\x99\x91\xe6\xe0\xba\x1eH\xa0\xd9\xae\xde\x92:6\xac\x8f\xf5\xaa\x11\xca~\xf5\x16\xb8'l\x8bf\xc1j\x98\x8c8\xc1lX\x0d<+\xd6[T\x9f5\x1b\xc0\x8e\xd5\x98\xc8\x92\xd5\x08c\xcbz\x8bSL\xbe \xd6\xacF({\xd6[\xe0\xba\xaa\x83X\xb4\x1aAlZoi1A\xfa%P\xecZo)C\xf6-\x86e\xab1\x1b\xdb\xb6+p\n\xebV#\x82}\xab1\x0b\x0bW\x03\xcf\xc6\xf5\x165`\xeb\xfaY\xb9\x1aw\xc0\xce\xd5\xb8+\x96\xae\xc6\x1d\xb0u5BX\xbb\x1ah\xf6\xae\xb7\xa4>\xbbW\x8co?\x8bW#\x88\xcd\xeb-M\xac\x13XV\xaf\x06\x0bc\xf7j\x84\xb2|\xbd\x05\x86\xa4\x05\x90\x98\xcc\xfa\xd5\xf0\xa4\x08\x90\x088:z\xefH\x1dBO\x99A\xec`oiL\xb3\x87\x11,a\x8d\x90\x1a\x07\xb2\x86\x9de\x0dO\xb3\x08\xf6\xb0F\x10\x8b\xd8Y\x927\xe9\x80D\x0c\xd3\xd8?>Q \x08$b\x98\xc7\xbe\x02\x19*\x19\x81\xc4\x9e\xd9\xac\x81iy\x04\xd3Y#\x8a\xf1\xac\xe1\x0c\xac.\xe0g@k\xcc\xc9\x84\xd6\x98\x83\x11\xad\x81\x1c]\x93\x19\xd2\x1aH\xa6\xb4\x06\x861\xdd{\x16\xc1\x9c\xd6@v^8\x93Z\x03\xcf\xa8\xd6p\xa4K\x90\x98\x85a\xad\x11\xc4\xb4\xd6\x88a\\k\x040\xaf50\x9d\x84\x98\xae\xb8r\xf0\xccl\x8d\xb9\x18\xda\x1a\xa8jzfl8s\xdbY\xdc\xf2\xd6\xcf\xe0\xd6\x88ar;\x0b\xd4\xb4\nw\"\x06\x89\x18f\xb7\xb3@\xa6\xf5\x98\x8e\xa4\x0c\x12\xa1Loga\x1d\x0b\x1c\xa1B\xf23\xbf5\x9c\xc9\x1a$\xc2\x99\xe0\xce\xe2<\xe9\x1c\xf4Cx\xb6\xb8\xa7\xfb{LrGj\x07\x89P\xf6\xb8\xb3\xb0\x8f\xef_/\x10,r\x8dP6\xb9F\x00\xab\\#\x98]>z\x11\xc92\xd7\xf0\xacL\xe0\x0d\xbf/\x81e\x02c\xd9\xe7m\xb9\xa1,\xf4\xf6\xc5\x106\xba\x86G\x181\xectg\x81\x88t\x11\x121lu\xefd\xf2\xa7\x8e\x90\x08g\xaf{\xd7hO\x1a \x07\x9b\xdd\xf9^,\xd3]c\xce\xf1\x1e\xc0|o\x8bF3\xe05\xec\xa7\x1eW\x1a\n \xa91s%\xa3\x90\x08\xd1(\xc5$\xa6p\x8f\x84\xba\xda\xa1\xd3SH\xb8\x92TH\x84\xb4(*a\x85Dp\xda\n \xa4&\xd3\x95\xc2B\"4\x91\x85\xf9-g:\x0b\xfb+\xf6\xa4\x16\xa6w\xbc\x1f\x89Hp!\xe1Js\xa1\x9e\xc0\xc9;d\xd0LM|!\x81I\x7f!\x81K\x82!q\x07\xcd\x9d+-\x86\x04>9\x86D\xbf\xa6\xb35\xa8}vR\xba\x0c D\xac\xed\xd9\x197\xde4\x1a\x12\xc8\xc1\x00\x81\xf2\x83\x19\x13kH\xa0d\x88I\xb2!q\x87\xed\x0eL\xbb\xe1-\xef \xbdY\xe0\x93oHxSpH\xc4Jaj:\x0e |R\x0e\x89\xd8\xda\"\xfal\xb64\x1d\xc3\xe2|\xc9:$\xbc);$b\x9b\x1f\x9d\xbeC\x02\x97\xc4C\x02YE,\xeb?\xa4\x17\xc3\x93{8\x8b#lR\x8a\x0f L\xa2\x0f\x89@\xc1\xf9\xdcg Zx\xd8\x04 \xce\xe2\xd4\x9a\x1e\x93\x06D\xc2\x97\x0cDb\xd0\xc2\xe9)A$f\xde\x86\xf1IB$Bz\x0d\xc2\x13\x86x\xcb\x93\x85LJ\x1b\"\x81\x94#\x04\xc8\x12P\x89D$\x90\x13J#T\xec\x80N-\x82*\xaa\x97~\x04\x973\xa2\x03.\xcd\x88\xc4=\x08%$\xf1\x08\xaa@\xb9\n{\xd2\x8f\xa0J\n\x93):Q\x89\xc4=\x89\x16\x95\xba\x04U\x9aNo\xe2O`\x82*\x0e'\\T\xaa\x13\x89\x00\x81\x86\xec\x8a\x10!\xfc\xd0\x14(\xde\x02\xafI\xe3J\x84\"\x81N\x87\"\x81\x94WH\xdbgL\x90\xd2\x16\x18\x96&E\x02\x9d,E\"8e\x8a\x04R\x80\xd8\xb3\xab/\x03\x88D\x13\x9eJ\xc5Y\x9e\xd0\xaa\x86%T\x91@\xa4U\x91`\x1e\x9f. \xa7g\x97\x04R\xde\xe8`\x05X\x91\xcf\x96zE\"$\x01\x8b\x04v\n\xc6%c\xb1\x16\xd7\xa5\xe4pz\\\x84'f\xb1\x16%\x13\xb6`\xd3\xb3H\x04'i\xb1\x7f\xbdK\xde\xe2N\xd5\"\x11\x95\xb0\xc5\xddtT\xda\x16\x89\xd0\xe4-\xd6\x82zK5\"\x85\x8bDT\"\x17{\x0d\xf2\x96\xbe\xc2\xdc\xe9\\$\xe2\x92\xba8\x1bCW\x8e\xd4.\x12q ^\x8ef\xab\x08{4\x8c,\xd4&w\xc9\x9b\x80\xfc.\xa3hG\xef\xdf\xbd\x18\xd7=\xa5z\x19\xee\xbe)\xd5\x8b\x01\xd8\xbd%\xd4\x19V\x0e\xe0\x94\xea\x05\xe1\xe4j\xe2\xb1\x05;\xb7\xe2\x9dZS\xaa\x17\x8dPgU\xa7&?\xc4I5\xc895\xa5z\x99\xeat\x1a\xe1l:\x8b\x93)\xde\xb94\xa5z\x99\xc3y4\xc4i\x14\xed,\x9aR\xbd\xa4T/\xe8SR\x903\xa7\xbc.\xa5T/)\xd5\xcb\\\x0e\x96H\xdf>\xafCe\x80#%&IH\x88\xe3dJ\xf5\x12\x93-\xc5\xe7\xf8\x98R\xbd\xe0\x1d\x19\x91\x0e\x8c\x18\xc7E\x9c\xc3bJ\xf5\x02\x91\x8e\x87\x01\x0e\x87)\xd5K\x80\xc3`J\xf52B\xa8\x03`J\xf5b*.\xa5z1\xbe\x80t\xc2K\xa9^\xc2\x9c\xe9R\xaa\x97\x16)\xd5\x8b\x82N\x9br\xc4\xe7\x1d\\\xa3\x87|\xe0\x8e\xd9\xab\xfe\xde&Ha\xc7)4\xfa\xcb\xd2\xc4\x84)`\xe1\x8e\x84&R\x11rPo\x98\xd2\xa6\xbck\xe54H\x99\xa2\x8a1\x90`\x07IR\xce\xe5c\xa2\x10}\xd7\xfels\xa4\xf4E\xd1\xc7\xa02\xf2!5\x1b\x85=A\x9c\x9fZ!i\xd6\x86$\xc8\x1c\xefCN\x9b\x9e\xdb\xa2\x87\xa1\x7f{\x15Z\x83\xc6\x8cx\xda\x8a\x8c%9\xdbj\xda\x0d\xa8-\xa6muGnz\xe1\xcc]\xb5r\x05\xf1\xf7\xd3\xa0\x06\x15\x1f~TW\\\xb3\x16[\x8eB/V\xbc\xad\xea\xb4d\xb5\xd3\x82:k\xbd\xad\xca\xc1^Uz\xad\x01\xfd'q\xa0\xcc\x85\xd6\xb5\xed\x0cKI=\xc6\x86\xb0\xd0\xf7\xfe\xff\xc9\x9e\xd6\xb0'y}\xca\xea\xbc2\xba\xfc\xf4\xf2*}&\x929\xae\x91\x16P\xd7\xcd\xbdeV?c\xe5\x11\xedi\xdd\xe4\x8d\xd1\x85\x86\x0b\xf6bE\xcb\xca\xe2\x07\x1b6\xb9\xba\xd2\x06\xd4Z\xfega/\xc8\xaa\xbc\x04\xf1{^*\xde\xe2q\x89\xbb\xbc\xbc\x18q\xf2#\xeb\xe6c\xb3\x19\xbe\xd4\xb2\xd1\xb7$/\x9f^\xe7+\xdaR.\xbd.\x00\x92\xcc\xc5\x8fGd\xc4\xb6\x96Dk\x90\xe4\xaf\x8e\x015(\x07\xc1\x92\x91{\x8a\x97\x1d\xa3\xf80\xf2i\xc1\x83\x19\x96\x95h0\x89\x06\xe3\xb5\x01\xe1V\xaaD\x83I4\x18\xdb\x93\x89\x06#\x90h0\xc7H4\x98D\x83\xb1!\xd1`\x12\x0dF \xd1`\x12\x0d&\xd1`\x12\x0dF\"\xd1`b\x98$\x89\x06\x93h0\x1d\x12\x0d\xe6\x18\x89\x06\x93h0\x89\x06\x93h0\x89\x06\x93h0\x89\x06\xf3\xcf@\x83 \xa6\x8bTU\xe1 \x8bTU1\xa0\x89\xf0\xc7\x07\xcc\x97\x01;\x84?\xae\xfe\xfe\xf9\x92B\xda\x06\xf71\xa4\x84\xf0F\xf6M\xbcG\xad\xee\xe0\xb4e\xb9-Ye\xc5.d4\x82\x0bW\x0cb\x8f.gJ \x83VK#lU\x15h\x13,\x97\xca\xfbw/\x92\xc9\x15\x92\xc9\xd5\xabo\xc4\xa8\xec \x99\\\x93\xc9\xd5\xfad2\xb9\n$\x93\xeb1\x92\xc95\x99\\mH&\xd7dr\x15H&\xd7drM&\xd7dr\x95H&\xd7\x18\xabe2\xb9&\x93k\x87dr=F2\xb9&\x93k2\xb9&\x93k2\xb9&\x93k2\xb9&\x93\xeb\xb1\xc9u\xec\\m2\xbc\xfe\xb1\xf3\x85\xd6\xe6WR\x14=\xf7g\xad[e\x99\x8c\xed\xbf\xc9\xafDf\x07\xc2\x0e\xad\xf6\xc2ve\xff\xd3\x96\x96\x90\x91\xa2\xa0+\x99>\x97\x94R\x0d#}\xdcO\xa4\xb6J\x06=\x90j\x95\xac*\x9b\x03\xdf\xda`\x9bo\xb6*\xe8{[^?v\xfc\x8642E\x05?\nl\x94#\xacZm\xf3\x06\xf2R\x85\xe5/n\xa1\xa1\xcchE\xee\xda\xae~\xfdlm\xc9.7\xf9\x870\xd3I1V\xf5\x05Y\xadj\xdaX\x9eB\xe9\xaa0\xea\x1e0|r`7\xd7\x7f\x1b\xa7\x10zlW7\xea\xf2\xfe\x0f,i\xb6\x05Zf\xd5Jh\x94\xc5\"e\xde\x8c\xf9\xe8\xa4esh.\xf6\x87\xe5%\xb5\xe6\xf6\xf4H\x17\x10\x12\x06\x841\x14p\x12\x86\x00)C\x84a\xd4Y\x98Y;\xe6\xb8b\xcdm \x05\xbf\x91\x14\"\x0c\xa5\xee\x06\x10\xb6E\x1bKa.\x83)D\x1aM\x9d\x05r\xe1\xa2\x0d\xa70\xddx\n\xc1\x06TgQ\xca\xb0\x13dD\x85\xb9\x0d\xa9\x10hL\x85P\x83\xaa{d\xb7\xc6V\xacQ\x15\xe66\xac\x02\xce\xb8\ns\x1aXa\xb2\x91\x15\xe2\x0c\xad0\x97\xb1\x15\xa2\x0c\xae\xee\xe9\xd0\xcb\xa8\xe3i\xc2\x1d\x18^\xe1\x0e\x8d\xafp7\x06X\x084\xc2B\x9c!\xd6\xb7\x04\xe3\x8c\xb10\xafA\x16\x02\x8c\xb2\x10n\x98\x85\x08\xe3,b\xc9\xfc\na\xa0\x859\x8c\xb4\xe03\xd4\x02\xfex\x860\xd8B\xe0).\xd8p\xeb,M\x18u\x11\xc6[\x08\xa8\xe5\x8cF\\\x082\xe4\xc2\xdc\xc6\\\x884\xe8\xba\xc7U\xe37\xeaB\xbca\xd7Z\x1e\xff\xa2\xcf\xb8\x0b\xb3\x19x\x01o\xa7\x04\x8c\xa1\x17\xc2\x8c\xbd\xe0\xb3@D\x1a}\x01Q\xaeC\xfd9\x93\x01\x18\xa2\x84\x8b7\x04\x03\xa2\x95\x11\x06a\x885\n\x83\xdb\xf2\x852\x0e\xc3\xcc\x06b\x98\xc9H\x0c\xb8\x113\xd9X\x0cx\x831 \x8d\xc6\x806\x1c\x03n@\x85\x1b\x90!\xc8\x88\x0c.C2\xcceL\x86P\x832D\x1a\x95!\xcc\xb0\x0c\x88N\xf0L3\xff\xfbxC3\xcchl\x06L\xd5\x1c\xb3l>\xc33`\x8c\xcf0\xc1\x00m-\x90?\xe82B\xc3\xdc\x86h\xf0\x1a\xa3!\xd6 m-M\xde\xed\xddj\x0e\xbfa\x1a\xdc\xc6i\x882P[\x8br\x1a\xae!\xd6xm-M\x9e\x90]\x19\x90g3b\x03\xca\x90\x0d\x11\xc6l\x083hC\x8cQ\x1b\x82\x0d\xdb\xe0^E\xc0cl\x84\x00\x83#\xd6\xc8\x0d1\x86n\x085v\x83\xbb\xe11Foka=\x932v\xca\xe0\x8c\xdf\xce Qn\xdc\x06p\x98\xd7\x08\x0e>C8\xb8\x8d\xe1\xd6wb\x8d\xe40\xe3\xd8\x0d0\x96C\x90\xc1\x1c\xac\x07\x94\xff&yAWn\xbb\xdd\xb2\xaa\njU\xaac\xb5\x1b\xf2K\xcaJ\xb9\x82\xeb-U:\xae~>u>\xc2\x97\x94\x96\xeai{\x0f\xd7\xd5\xaeM(.L\xef\xd2\x10`\x0cF\x0d\xea\x11[+\xb1-P\x1fR\xa1\x9c\xbbJ\xcb\xbf[_{\"\xeby\xda\x86\x1bW\xff\x12\x86\x1f\xf3+\x08-\x19-\x0f\x96\xd8\xda \xb8\x10\xdf\xbd}\xf3\xf2\xe2\xfc\xc3\xf3\x0f\x1f\xcf/>\xbe9\x7f\xf7\xea\xc5\xd9\xf7g\xaf^\xa2\xdf\xe0\xff\x17\xf8\xf8\xd9\x9b\x1f\x90\xcf;\x0b\xd7N\xccAMpya\xa3\xe4\x89\x1d\x04\xf2Cj\x18\xab\xf3\x86J\xbc\xaf\x7f{\x92\x97Ya\xdf\xf8\x1bZ\xac\x9fv\xb1\xe4-\x83\xa0\x0d\xe7}!\x13\xe6\xdfC\xd3\xc6\x9f\xec\x18\x05\x15#\x85J\xdc\x0fy\xd3\x1c\xa4\xb5\xc5\xbe\x15\xf5\xf8\x06\xbd\xb8\xe4\xb6\x86v\xb5\x9b\xdc\x80\xf6\xb9\x01\x1b\xa2\xffwF\xeb]\x03\xe6\x84\xff\x1d\xda\x06\xb8g\xe8dF\xc3\xae*\xf3Kj\xf0\x91\xef\x80\xe8`\x08\x90\x11t_\xed\x12\xaf\xc0\xf6\xb0#\xe5\xd3\x9a\x12\x19P_\x9c\xe8|2\x02\x8c\x9c@q#\x98\x95\x1b\x02w\xd3F\xfd\xd9\xae\x91\x9d\x9bm\xf7c\x93oJ\xc2\x0e5\x85'\xf4\xc6}\x0d\xfe\xf8\xae\xaa\x19\xdfe\xfe@o\x97\xa4\xa1\xd6\xc5\x1b\xe0\x9a.\x9b\xdc\x96^@\"\xa6\xc5\xaaXc\x8b\xf4oE^^\xba\x96\x9e\xecP\xe7\xec\xf6B\xdcU26w\x0d=}2\xfe\xbc\xb1%tG\xf2\xc2K\x1f\xd0E\x81*\xca\xdefk8\x87\x0e1MU\xc5\xea\x8d@\x1a\xec\xdaF\xa8_\xcd\xb5\xear\xc5\xc8DG\x13\x96v\x7fj\x10|\x0f\x8d\xab\xa5{\xe7\x04\xf2^\xe2\x9a\x13\xb1\xa2\xaa'\x1c4#y\xd6\x17F\xdf\xf1\xf1ns(\xdd\x89pp z\x82\x04\xb4\"\x8c>\xe5e\xcd&$\x99\xdb\xc7.\xa2]^\xca\xfc?\xae\xa1<\xd8\x18{\x7f>N?5\xc6L[\xde(3\x8asbb{\x05\x0c\xe5\x0e\x1a*H9\xa4\xf0'[\x91\x90\x05H\xb2EK\x10\xc8jJ\x98\xbc\xef\"\xb6=\x94\xbc\x00)3Pu\xf2i\xf4\x11\x13B#D\xb4\xa0\xb3\xd0\xe4G\xc3F\xfcY\xe6\xa1Y\xd93\x05u\xe8N\x83' (\xfckAl3\xa7\xec\xe9\xb0#7\x8e\x8c=\x1d\xeeP\x00\xba\n\x83q\xa5\xf3d\x8d$\xe2-L\xae\x8e\xc3l>\xf4\x8a\xd6J\x94\xc1\xb2\x91L\x9c\xcfAD\xbd\x9a\x18%\xb5\"\xb9#\xca\x89F^\xf2\xd9\xd6\xd0#\x02sO\xd2RH\xde\xa2\xfcB<\xec\xf9\xee\xe0\xdci\x00/8\xec\x8e\x03\x81\x02\xee\xd5R\xcfCaD\x10\x7f0\xcd\xcak\x0f\x01Q\xf6\xd4\xca,\x97]^^\xf0\x8b\xeaEwQ\x9d\xb0\x0bc\xdbi\xf8\xea\x91\xba\xe5q#n\xd0\xb0\xa2YAj\x87\x8eH'\xd8RO\xeb\x02\x9d\xb11\xf22\xa3|\xb7lvU\xf3\xb4Y]\xc2\xaf\x17\xbf\xfd\xbd\xf1\xf1\xee P\x95\x17\xdb\xaaX]\xd4t}\x91U\x87\xf2\xae\xcfs\xbe\xf4cR9/\x1c=\xf6U\x93\xb3\xfc\x8aJ\xc7\x90\xfeQ\xecq\xd3\xb5\xa0\xd5\xba9\n\xac\xf6{i\xd4\xa37\x8c\xd6\xfc\x88+]V\xccC\xac\x13N\xbe\xf2h.\xcc~\x1a\x12Vo\x0d \x84<;\x89\x1e\xa6\x89\xb4\xc8\x1b6H\xe0\x08\xf9\xaa9\x01J\xb2\xed\xb1\x1b\x00?#\xd8\x85\xd9\x15Q\x8d{\xc5\xf0\x0ef\xea\xb4~;\xbd\x1b}[\xe6 \xb0j#u\xad\xc2\xc2%\xacS\x15#f[\xa1t0\xd2\x0c8\xf7\xd7\x1e7B\x05\xab\x15C\xca\xc97\xaf\x81\xde\xc8\xb5E\xa5\xae\xabD\x82>\xcb\xb9\xf2\xbc \xcd\x96\x0bC\xc7G\xb21\xfa \x9f\xf1rSP\xa6\xd1\xc1gN$\x0fX\xd0R\xa5\xa3\x93\xb1\x94\x8c\x14\xd9\xa1h\xed\x85\xeb\x03\xbf\xfc\x9b?x(\xbbE\xa3\x11\xb2\xab\x0e\x8c\x8f\xc9Z\x1e\x03\xab+\xda\xcf\xba\xb7P\xde]\xbc\xa9\xe6\x06\xd4C]\xa1\xf9\xab\xc3\x01q2\xda\xfd\xf2\x86\x1fCW9\xd3\\M\xd2[\xd9\x8c\xe5]o\xab\xa6\x97\xe0\xd1\xfc\xd1~7\xe6\xcd\x80\x15\xdd\x1b\x11\xa2i]\x13\x8c%\xad\xf2\xd6\xfc/-<\x82\xdak\xfe\xea\xa0\xff\x16\xf0\xc7J\x88u_]Sy Z\xd2\xb6\xbb\xe8J\x98\xf4\xad\xc3V\x9b\x02D\x13\xcc_\xdb\x1d\n\x96\xef\x8b\\/c\xfdo\x1f\xbd0\x98u=\xdf\xbf\x8e\x9c\xa9\xf2\xd5J\x1f\xc1\x15\xd8\xd3\xa3v\xcex\xc7+\xd9\xe03=\xaf\xbdA\x08\xd4\xee\xcfj\xdc\x9b\xfc\xea$\x9cW\x0eOLTz\xc3.\xac.\\\xde\xa5\xd6K\xd8\x1d4\xf5\x7fl\x0b\xad\xae\x85\xde\xf5\xf9?\x15\xe7\x9d4\x8dT;\xbf#\x1b\xfa\x9e\xfe|\xa0\x0d[\xc8\xdf-\x85u\xc9\xa3y\xb1\\\x90\x14vU\xc3\x80\n\xe6\xb8\xa0\x9c/\xe0\x8c\xf5\x0c\x9e{v\x0b\xb9\x8d\n\xca\xd7P*\xa6qY\xc1\xae\xaa\xa9^\xb3L+\x9b\x18\xab\x13\x85\xe9\xd8\xb3|;\x96T\xd9\xe7Zw\xdf%x\xd5\xcbl/\xe6\x99\xad\xbd}A\x8b\x83\xcd\x85\x9c\x80\x96\xc7\xaf ?\x99\xb1\x13\xc8Y\xa3\x1d>\x1a\xb1\x8aJ\x8b\x9fP\x91]\xe7\xcdp|\xd8\x1a\"|y;\x87Tlh\xdc#\x17V\x8d.\\n\xfbC\x8a\x96;\xfa5E\xcb\xc5\x9d\xb7 \xc2)T\x0e\xd6\x14-\x17\xe1\x00\xca\xe6p\xfe\x8cq\xfcL\xd1rgt\xf2\x0cq\xf0\x0cr\xeeL\xd1r\xa7:rF8q\xce\xe2\xc0\x19\xee\xbc\x99\xa2\xe5Nq\xd6\x0cq\xd4\x8cp\xd2L\xd1rS\xb4\\\xcf))\xd8\xe92E\xcbE9X\xc68W\xa6h\xb9\xb6\xc7\xbcN\x94\x01\x0e\x94\x988\xab!\x8e\x93)ZnL\xc0Y\x9fcd\x8a\x96\x8bw\x80D:?b\x1c\x1fqN\x8f)Z.D:6\x0685\xa6h\xb938-z\x1d\x16c\x9d\x15\xad\xfbf\x8a\x96{\x84\x14-7E\xcb\x1da\x8e\xc8\xa5XG\xc2`'\xc2 \x07\xc2\x14-\x97\xc59\n\xa6h\xb9\x1az\x17\xee\x18\xbe\xddY\xe9\xa9X_\x9f\x1d\xbb\xb0\x0d\xae\xd1\xca\xf1\x8d\x96dYH\xd5\x934\xadr\xb1\xf5\x8c\xe3\"&\xae$\xc8\x9a\x82\xe2\x82\xd87\x9e\xc9w{\x7f\xab\xe9\xcf\x87\xbc\xa6\xabg\xb0&\xc5\xc0:h\xd4U\xe8*wv\xf1\xc5%\xbd\xb5U}diV\xa6e\xa2V\xfd\x9a\xb2C]\xca(\xa7\xd2\xda\xa9\xac{\xad\x1dZ\xe8\xef6#E\x97h\x01o\xa8\xcf\xb6\xfc\x96\xef\xc4U).\xf8\xd5z\xddP\xe1@2\xac.\xf4\xec\x0f\xbd\xc0\xbc0\x8f\xb4,\xda\x1c\x83\x10e\xfdlr\x1ciRTc\x84(\xcb\xc3\x8e\xd6y\xa6\xff&\x16\x08E\xdf\x90\xaa\xac--\xb5\xe0\x0fe\xab=\x1c\x1d\xb4\xcfDi\x05m\x9aN\x84R\xdfvh\xb8\xa8/i\xa0<\x87\xc5\xdf\xb1pG\x96z\x83x\x8b|\x97c\xa5+\x9e\xd5\x14\x08\x9b\x01_j\x96\xfb#XqC\x0e\xc5\xc8\xe2,\xf5H\xfd?\x9d\xad\xa1\xa0k\xa6 \x0f\x8a\x01\xa1O\xb3B).'\x88\xfc\x08\x97\xf3\xf2V\x92\xdd\xc8~\xff\x80R\xec\xd3\x10\xba\xf7]\xb2\xec\xbd\xc1%*Fh\x05\xac>P\xe0\xff\xc8\xcbU\x9e \x96\x9a2\x8f) \x8a\x07\xd5@\xea\x17\x97\x97YqX\x8d\xce\xaaD~\xa5\xb5O\x8ezLX\xbb{js\xbel\x0eX=\x83\xc2>\x9e5\xa3\xde\x1a5A\x1c\xefk\xda(^\x82\x98^\xdd|\xe4Sn\xa1fS\xbe)\xab1CV\xcf\xc6\xe1'\xa4d\xa6v\xec\xd8Q\xdc\xd0\x815\xbd\xa2\xf5\xe0UW\xe7\xa9\xa7\xc7\x1d\x97\xf7h,55\xcf\x84A9\xfc\x1bTq.\xeb\x15\xad\xc7W #\xef\xf77\xb3J#>V\xfd\xe9\xdf\xda\x7f\x8bX\xdf\x7f\x97\xc58\x83\xd7\xb7\xb1\xeb{\xd4\xc1r]\x89\xa1'\xf7\xe6\xee\x07\x15+\\w\xbe9\"\xfc/t\x9b?\xf7\x80\xf06\"J\x14)\x0e\x17\xd6\xddkR\xc1\xd8$\xe6\x0e\xe8\x1e\x1e\xce\x1d\x17\xcc\xdd)M\xf0J\x14\x10,\x1d\x84D\x01-U\x88\xe5\xea8\xca\x0b\n\xdf>+_\xc7\xcb\xd8\x99\x9b\xb3\x83g\xed\xcc\xc4\xdb\x89c\xee8\x8a\x0b\x0c\xd8>\x91\xbd37\x7f'\x90\xc133\x87'\x8c\xc5\x13\xc8\xe3q\x8d\xe1\x96\xe1\x83e\xf2\xcc\xcc\xe5A\xb1yf\xe4\xf3Le\xf4Dqzfb\xf5\xc4\xf0z\x1c\x85\xa1C\xb2\xdf\x01\xb7\xe7\xee\xd8=w\xc2\xef c\xf8\xcc\xce\xf1\xc1\xb2|f\xe5\xf9\xe0\x99>\xc1\\\x9fp\xb6\x8fw)\xc4\x05_\x9f\xcc\xf8\xf1\x06^G\x1d\xa8\x10\xbc\x9f\x90SW0\xf7\xc7\xb5 \xa2\xc3\xad\xe3\xea7#\x03(\x84\x0343\x0b(\x8e\x07\xe4\x1aA\xa8\x10\xeb\x91\\ Ki\x0c\x15^}\x1e>\x10\x9a\xd4\x82\xe0\x04\x05\xb1\x82|Qvc\x98A\xbe2\xad\xf6\xb1\x99\xf8A\xe1\xc2\xc4s\x84|m\x8b\xe0 E2\x85\xdc\x91\x9d\xfdl\xa1y\xf9B\xf30\x86\x10cc2k\x08\xcd\x1b\xc21\x87\xb0\xdc!\xc4\xc0 \xe7\x0f\x850\x88\x9c\x81\xd2ga\x11\x05\xf2\x88\xe2\x98DA\\\"\x9f\xd0\xdd\xc1\xd1=\xef\xe29E\xf3\xb1\x8a\xbc\x95\xb2\xce\x9f\xf9\xb8E\x08vQ<\xbf\xc8R\x1c\xf3\x86B\x9f\x95c\xe4c\x19E\xf2\x8c,e\xf9C\xa0\xfb\xb9F\x9e\xf0\xe7s\xf3\x8dfg\x1c\xd99Gs\xb2\x8e0\xbc\xa3p\xe6Q\x10\xf7(\x82}\x14\xca?\xf2\x844w\xd7\x0e\xcb\x08\xc1\xb2\x90\"xH\x81L$Gsc\xd8H\x96\xa2\x10A\xccc\x18I\x8e!\xef\x0f`>#+\xc9\x1b\xbc\xfc.\x98Is\x8d\xc5\x00vR\x08?\xc9|<\xbcn\xce>\x98-p86l\xb87hxx\x03\xa3\x03\x86\xe3\xc2\x85{+\xe4\x0f-\x89\xeb\x8f9\xc3\x84O \x12\x8e \x11\x8e\x16\x8a;Xk\xa8`BB\x83cv @\x07\x06\xf7\x85\x05\x1f\xb4dzP\xf0\x196*|8p\\/@x(p\x19\xee\xdbQ\xde\xa4@\xe0^\x19\x01JN\x80\n\x01\xee\x1d\xf0\x1axa\x02:\xf8w?\xb8\xb7\xa7@txk\\\xe0\xef;jvH\xc8o\xb9\x96y\n\x9c#\xe0wP\xb8\xef;\x14\x0c*\xd0w\x1b\xc8\xdbS\xa07\xcc\xb7W4\xa8 \xde(q\xe0\xf6\x04\x08\x12\xda\xcc\xc1\xbb\x1d\xa1\xbb\xd1\x81\xbb\xbd\xb2\xc0\xb5n\xc6\x90\xdd\xc1\x01\xbb\xd1\xe1\xba\x83\x83u{\x85\xe3?M\xf9\"t6\xf3\x06\xe9\x0e\x0b\xd1\x8d\x08\xd0-E`\x0f\xcf\xed\x0c\xce\xed\x95\xdf,ANg\x0b\xca\x1d\x12\x92\xdb?-\xe2\xc2q\xab@\xcb\x86\xf2\xec\xc1\xb8\xe7\x0c\xc5\x8d\x0c\xc4\x1d\x1c\x86\xbb\x1fr\xdb\xdc8{\x10\xeeyCpc\x02p\xcf\x1b~\x1b\x11|;*\xf4\xb6\x0e\xb3m*\xcf\x1bx;.\xec\xb6Rn\x1b\xca\xb3\x07\xddF\x87\xdc\xc6\x05\x01\x0e\x8e\x01<*-\x85\x00\x96H!\x80\xdd;\x93\x7f\x85\x97\x88r+J!\x801\xceD&VI\xb0+Q\x8c#Q\n\x01<\xa3\xfbP\x88\xf3P\x90\xebP\n\x01<\xd5a(\xc2]h\x16g\xa1pW\xa1\x14\x02x\x8a\x8bP\x88\x83\xd0\xcc\xeeA\x0c\xe5\x1c4\xa3k\x10\xd61\x88\x85\xb9\x05\x85:\x05\xa5\x10\xc0\x03\x04\xbb\x01\xa5\x10\xc0(\xe7\x9f\x18\xd7\x1fH!\x80-\xf0\xba\xfb\x048\xfb`\x82\xc7\x868\xfa\xa4\x10\xc01Qt}\x8e=)\x040\xde\x99\x07\xe9\xca\x83q\xe4\xc1\xb9\xf1\xa4\x10\xc0\x10\xe9\xb8\x13\xe0\xb6\x93B\x00\xcf\xe0\xa6\xe3u\xd2\x89u\xd1\xb1\xee\x9b)\x04\xf0\x11R\x08\xe0\x14\x02x\x849\xc2\xb1b\x9do\x82]o\x82\x1coR\x08`\x16\xe7l\x93B\x00k`B\x00\x0f\x83\x0c\xf6\x8a\x1a\\\xa7\x87O\x0d\x88?G\x11\x05\x07\x81\x82\xfb\x8bS.\xb2\xdd\x0eV\xc4.\x98\"\xab\x0f\x9e\x90\xa13\x86R<\xed\xd9\x97e\x91\xce\xb0\x8a/{\xd6h\x1daQ\x1be\xad\x01\x16u\xcbmj i\xb3&\x85v.\x02RJU\x93\xa4o\x9cH\x8d\x9c\x14\xa4T\x1deU\xd9\x1c\xf8\xf6\x0d\xdb|\xb3\x1d\x13\x07\xfav\xe6\x0di$\xadd\x90GX\xee(y\x03y\xa9\x8c\xf42\xd0\x96\xae\xa99\x04d\xaf\xf1\xea\xb9\xcf6\x1ad\xd7\xab\x17\x86:j\xb0\x070O\xfaXY\xde\x0f\x00\xe2#0\xf0\xb1q\xc6\xae\x94@h\x04\x01\xa9X\xeb\x9e\x1d}_\xb3\xc2t$\xcaaDK\\Y\xf6\x83\xfep^\xdf\x7fs\x8f\xbe?\xa1\xb9\x08R\xb1\xcbIK\"\xa6\x8d\x03o,u\xaemI}\xea\xc7\x9af4\xbf2s\x0f\x8f\nt\x08\xad[M\xba\xa3\x84\x94\x98`\xc4Hn\x94tn\xdb\xf2\xd5jyk\xa7o\x01\x90L\x90\xf9T\xe0c\xfb\x0e]]\x97\xf2\x8eW\x95\xb4\x1bV\xca\xe6 \xacnU\x96\x93\x96\xde\xe3\xea\xa9\xab>o\xa6Z\xf3\x12\xed\xdf\xf5t\xe9\x92\x14\xa4\xcc<\n\xfb\x19\x96\x84\xb2\xb2\xbak\x02v\xcc\xc8\xddfb1\xd8Q\xf2\xa2\xca\xcb\x1e\x8bN\x0c\x88\x8eyUV;\xbd\xa5\xf1\x0e$\xa5\xaa\x9c\xcb\x9a\xf3\xe6\xed\x87W\xcf\xc4\xadP\xb1\xab\xda\xcd\x90\x94pV2u\xf0l\xed.\x8ds\x10\xa8S\xa9b\x15\xd9\xa7\xab\xf6\x0ek\xda\x83\x0e\x1f\x84\x9bjS\x89#_\xac\x15\xa3\x9bD}n\x14\xff\xc2\x15)D\x00\xfd\xaa?\xd1\xe8MF\xf72B\xbf\xb1\xb8\x9c\xf5,\"\xe6\xd6\xa8\x91:>\x82\xab\xc5A\xc9\xae\x91\xd9\xf1\x9bC\xcet\xc0scaY!\xa2\xfc\xb7[\xf4X\x0c\xdd\x91\xe5x\xb8\x0d\xc4\xd3;\xdb\xf4O\xa4\x83 \xeb\xeaj\x7f|\xe6\x90p\xce1\xf7\xec\xd2\xc9\"\xec\x84$\x14\x95\xd8jk\x1b4\xf5\x7fl\x93\xa5MY\xa16\x9e6{\x05\xecI\xd3H\xfbz?\xa3\xbf\xfc\xddR\x98\x9c\x06\xaf\xe8\xee\x96\xf20$xg\x07: \xf0\xb3Ls'\xf5\x1d16|\xb4wo\x11\xb8\xb107\xe1}N\xba;\x8a\xec\x1eNu\xf7\x0b&\x9e\xe6\x0e\xb9i\xc4\xb8I\xee3R\xdc\xdd\x04ww\xc3\xc5\x81\xc6\xdcrW\xf0\xd3\xa3\xd3\x83F\xc7\xd8\xedj\x91(\xbb\xa3_\x13e\xd77,;$\xcan\xa2\xec\x9a\x91(\xbb\x02\x89\xb2{\x8cD\xd9M\x94]\x1b\x12e7Qv\x05\x12e7Qv\x13e7Qv%\x12e7\x86\xf5\x9a(\xbb\x89\xb2\xdb!Qv\x8f\x91(\xbb\x89\xb2\x9b(\xbb\x89\xb2\x9b(\xbb\x89\xb2\x9b(\xbb\x89\xb2\xfb\xe5Qv\x87\x14\x12[\x9d\x87O\x0d\xea\xdc\xb1\x91\xee\xb8\xce\xf7\xc5\xd6:\xed\x12\xdb\x8e\xc9C&\nW\x8f\xcd\xfcQ\xbfh\xa0u\xf5\xf2\xcbzy]m\x81V~\x97\xe1K\xea\xb1\xcf\x96\xe8%\x05p\x17\xdc.\x1f'\xc9\xab\xacs\x0cu/\xdd\xc8\xcd\x9cB\xb2\xa6\xc2j\x18H\x88r\xb3fh\xc9j\xa7%xb\xfe\xe6\xc9\x11'\xb3\x9aJz\xe0\x96\xe6\x9b\xed\xd4\xa0\x91\x00\x98\xbc\xdb\x12\x18%\xa8\xc6\xa8\x96\xbaG\xd4\xff\xc9\x9d\x98\xff\xa1]\x06\x9c\xa5\xb1\xaa\xba\x84}A2\xa3rV\"\xab\xf8\xae+\xbe\xe9NX\x1f,\x17\x7f\xd2\xfa@\xd9\x0ck\xaaes(\xf3\x1b\x99\xbc\x9e/\x868\xc1tE9\x94\x1be\xcerR\\x\x02\xa2\x02^0!\x8d\x1d}}\xb0U*\x02\x9ez\xc4ax\x05\xb5\xec\xae\x0e\x85\xb4\xea)\x8a \x10\x86\x12\xc1\x1d5\xdd\xd1\xa6\xf0:\xf6\xd3\xc7\xcfPQD\xd0F \x15\xf1\xf0\xac\xccja\x15\x92)\xdf]\xac\x93\xbc\x11\xab\xa4\xbd\xbb\xba\xa6\xf0\x05\xa0*V\x175]_d3\xc4\xb8\x85\x80\xe5\xca\x17\x93R\xe2\x9c\xd5\xb9\x88\xd5\xbe\xaf\x9a\x9c\xf1\xfe\xca\xd7\xbd6>\xee\x9fT\xf8\x85gI\xa9\xdd> \xe2\xbaY\xed\xf7:;7\xa35\xbfo\xcb\xa8\xf363#v:\x19\x0e9\xafx\x1d;nc\xd9\xcf\xba\xef\xdah@\x1a\x95jZ\xd0+R2\xd8QFV\x84\x11\x04\xe5Vm\x90\xd2\xab\xa1\xbf\x82\xf7\x99\xbc\xea\xa1\x18b\xa2\xe9\xd0\xd8\xb0J\xa4\xe0/\n\xa1d\x81&/7E\xef\xa8\xf1\xd8$\xda\xaeb\xfc\xbfF\xde._h\xdb\xd2\xba\x83'\xbf\x0c\x96b)~*\\1\xe8\n\x8a\xbcaw\xc944\xbd~j:\xd5\x8e\x1eL\x0cD\x85\xc4@L\x0c\xc4\x0e\x89\x81\x98\x18\x88\x1d\x12\x03\x91%\x06\xa2\x19\x89\x81\xa8\x91\x18\x88\x89\x81\x98\x18\x88\xc8SRb \xb6H\x0c\xc4>\x12\x0311\x10\x0dH\x0c\xc4\xc4@\xf4 ?1\x10\xad\xef$\x06\xe2\x00\x89\x81\x98\x18\x88\x89\x81\x98\x18\x88\x03`\xd9`\x89\x81(\x90\x18\x88\x89\x81\x98\x18\x88\xd3\xea<'\x03\xd1D2T\x85\x9bX\x86=\x0dH\x9bK\xd1`.m\x0c|\xc3^\xf9b\xc3l\x0b:\xe2\x85\xd9t._Jvy\x93@\xd4\x0b\x9f9-\x92\x8f\x83\xcf3\xcb\xbc\x8f\xba\x88\xd2Db\x94y`\xfafd\xa87O4;$+s\xd6\xa6\x05\x926\xfd\xe5\x98\x9b\xe6\xa4s\xfa \x9d\x1eJ\xa7wPI\xf8\x86\x96D\x00\xb1\x13\xd5\x13\x12X\xb6\x14\xbe\xe7$\xe6%x\xe2(\x9eA$\xcf\x08\x19a\x88\x9e\xc1r\x9a\x8f\xec\x89\xa3{\x06\x11>\x03\x84\x14\xd6\xec\xd9h\x9f\xd3\x88\x9f(\xea\xe7\x9d \x01\xcb\x0f\x9d\xa5\xd7\xb1\xfc\xd1\x80\xd6\xa29\xa4X\xb2%\x84\xd1L=e\xb9I\xa8\xd14\xd4\x08\x01\xcd'\x9f@:\xaao\x00RZF\x10RC\xc6\xf9\xac\xa4\xd40Z\xea\xac\xc4T\\\x9bg#\xa7\xa2\xe8\xa9\xd3\x08\xaa\xd0\xbb@\x1c\x8f\xf7Ak{7\x8d\xfeZ5\x08\x00\xaf\xb4\x88\xc7\x07\x7f \xe7A\xc8}\x00\xd2\x89,\xec\xdcG\xe7d\xf4\x9a\xf5\x07M=\xca\xec\xaf\xd1\xa6\xd3P;t\x9bY\x03\xf6\xa4i\xe4\xee#\xf3o\xfc|\xa0\x0d[\xc8\xdf-\x85\xc9\xbb\x1f\xf3\xa4\xde8c=\x15\x93\xc8r`\xa3Q\xf2\xdb%\x15#\xbb\xacd\x94TE$2\x0dd\x11\x85\x7f\xa20\x1dK\xbeo)k\x93\x00\xd8\xb2B\xf4\x886\xb6\xf6\xf6\x05\xdd\xcf\xa7`y\xfc\x9a\x88\xe0\xfb'\x90\xb3FS\xba\xf8J)\x07\xf3J\xb2\\\xae\xf3\xe68\xe2\xbe\x87\xc1\xed\xbcJ;I\xdd\xa3\xd2\x0c4A\xc9\xf1vk/\x12\xbd[!\xd1\xbb\xe7\xb9v'zw\xa2w\x9b\x91\xe8\xdd\x02\x89\xde}\x8cD\xefN\xf4n\x1b\x12\xbd;\xd1\xbb\x05\x12\xbd;\xd1\xbb\x13\xbd;\xd1\xbb%\x12\xbd;\x86!\x9d\xe8\xdd\x89\xde\xdd!\xd1\xbb\x8f\x91\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\xfd\xe5\xd1\xbb{\x89\xc6/\xe9\xad\xad\xce#3\xb5\xb2K\xeb\x94\xf7\xfd<\xe2\xd2T\xaa\xcc{\xad\x11[(\xf06#M\x97h\x18_\xaa|\x86\xe9\xb7|+\xaeJq\xc3Wi\xdb\xab\x1a\x86\xd5\x85\x9e\x01b\x86\xbc\xecG\xaa\x1d\xa3:\xc7 DY?\x9b\x1cG\xaa\x94.\x07=\x81\xf2\xb0\xa3u\x9e\xe9\xbf\x89\x15\"#%o\x8f\xd4e\xa9,\xf4\xd2\x94\xdc\xaa\x0fG'm\x99\xc5\xbe\xe0C\xa7\x15\xa1T\xb8\x1d\x1a.\xeaK\x1a(\xcfa\xf1w,\xdc\x91\x99\xdf \xde\"\xdf\xe5X\xe9\x8ag5\x7f\xc2f\xfd7f\xc2W\xbf\x0eJ\xdbKER\xffOgk(\xe8\x9ai\xb6\x84\xa2O\xe8\xe3\xac\xd0\x8a\xcb \"?\xc2\xe5\xbc\xbc\x05J\xb2-\x90\xfd\xfe\x01\xa5\xd8\xe70t\xef\xbbd\xd9{\x83KT\x8c\xd0J,4\xc0\xff\x91\x97\xab<#\x8c\xb6\xf61%A\xf1\xa0\x1aH\xfd\xe2\xf22+\x0e\xab\xd1a\x95\xc8\xaf\xb4\x06\xcaQ\x8f swOo\xbe\x16\x19\xf6{\x94\xa0Aa\x1f\xcf\x9aQo\x8d\x9a \xce\xf75m\x141AL\xafn>\xf2)\xa72lC\xbe)\xabzdu\xd0\xb3q\xf8 )\x99\xa9\x1d\xbb\xac\xaa\x82\xf6\xd2\x7f\x1b:\xb0\xa6W\xb4\x1e\xbc\xea\xea<\xf5\xf4\xb8\xe3\xf2\x1e\x07\xa6\xa6\xe6\x990(\x87\x7f\x83*\xe6\\\xbd\xa2\xf5\xf8.q\x9e\x97\x19}\x06\xd2\xdd\xe6i\xb3\xba\x84_/~\xfb\x9bY\xa5\xe1\xf3\xf1a7\xad{\xcf\x8av\xcc\x8e}\xd5\x1c;\xed|\xb8y)\x1e\x01\xf9\xa4Z'jR6D\xa8fu?\x0eD\xfb\xd8\xd8\xc8\x7f}\xac\x9e\x1dx\xbe\xe8\x0f\xfcB\xb7\xf4>\x9c\\\xfe\xff5]?\x83\xc7\xff\xbf\xd3\x9e\xc1UIg\xc1n\x16J:\x0b]7\xbdW?\xfeEW\x85D\xe8\x19 \x11zp\x06!H\x84\x9eD\xe8\xb1>\x99\x08=\x02\x89\xd0s\x8cD\xe8I\x84\x1e\x1b\x12\xa1'\x11z\x04\x12\xa1'\x11z\x12\xa1'\x11z$\x12\xa1'\x86\x13\x93\x08=\x89\xd0\xd3!\x11z\x8e\x91\x08=\x89\xd0\x93\x08=\x89\xd0\x93\x08=\x89\xd0\x93\x08=\xff\xec\x84\x9ee\xb5\xea\xefpyy\xf4'+\xe9f&\xeb\x17\xbb\xb9X\xde2{\xd09\x8b\xc6\xc2\xa9\xab\x18\xe8\x02\xf4\x074O\xa2&\xd7&\x1b\xa8\xe1\xcd\xa3\xd0\x15\x9dIQDJhKT\xff\xcbn\xbb\xfcrpN\xeb\xab<\xa3\x8b\x91\x89T\xa3\x1fh`\xf4\x93\xd9\xfe\xaa\x1e\x1a\x9b\x87\xd5g\\\x06\xe2S\xb2\xcb\xcb\na&~\xce\x9fkm\xc5\xa4\x04\xf9\x87\x9e\xb0d\xf4E\x1d1N\x8a\x95Ub~\xcefK\x16\x1fU\x0f\xdc\x8fA9b\xd4\n\x91^\xfcwc\x8a\xf4b\x1d\xb7n\x15\xd5\xa0\xfd\xfdP\x17\xac\x17\x07f0\xc6\xc6\xe3f4\xe2\xa4 ]\xe3.d\xe0%\xb3y2\x9b\x1b\x80Q\xbbB2\x9b'\xb3\xb9\xf5\xc9d6\x17Hf\xf3c$\xb3y2\x9b\xdb\x90\xcc\xe6\xc9l.\x90\xcc\xe6\xc9l\x9e\xcc\xe6\xc9l.\x91\xcc\xe61\x96\xe7d6Of\xf3\x0e\xc9l~\x8cd6Of\xf3d6Of\xf3d6Of\xf3d6Of\xf3\x876\x9bK\x03\xa4\xd4\xa4\x05\x19\xa0\x1c\xfa\x8a \xfb\xa4\xd7\x02>z\xfdn\xad\x93Afqi\xbfv\x1a\xc4_\x89G\x94\xa5\xfb.\xfc\xa6\xe5\x07\xd4o\x9f\xad\x99\xfb\xde\xc9\x19\x9aZ\xd0\xe7\x1c\x88\x07\xc2h\x1aR\xba\xd3\x8c\xe8j\x08\xc4\x904\x92\xad<\xd9\xca\x0d\xc0\xe8Z!\xd9\xca\x93\xad\xdc\xfad\xb2\x95\x0b$[\xf91\x92\xad<\xd9\xcamH\xb6\xf2d+\x17H\xb6\xf2d+O\xb6\xf2d+\x97H\xb6\xf2\x18ss\xb2\x95'[y\x87d+?F\xb2\x95'[y\xb2\x95'[y\xb2\x95'[y\xb2\x95'[\xf9\xac\xb6rt\xf4gm\x03\x14\x96im\x85\x8d\xb0\x13#\xdc\xa7\xe5\xa7\xa4\xb7\xb46\x19\xdb\xdd\xa7\xc5Pc\xd5\xd0\x8dz6\x93\xf2\x17\xe4>}\xbf\xec\x85\x9ex\xe60\x0c\xcf\xcb_H\x16\xe3d16\x00\xa3q\x84d1N\x16c\xeb\x93\xc9b,\x90,\xc6\xc7H\x16\xe3d1\xb6!Y\x8c\x93\xc5X Y\x8c\x93\xc58Y\x8c\x93\xc5X\"Y\x8cc\x8c\xae\xc9b\x9c,\xc6\x1d\x92\xc5\xf8\x18\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xb3Z\x8c\xadf\x1c\x9f}r\xe6\xf0\xce\x03\x03d\xbc\xfb\xf4]\x98\x1f\x83\xcc\xe2M\xbe;\x14\x84\xb9\x1c\xa8\xcf\xd5#\xa0\x9fm\x80\xde\xd0\xec\xc0\xf8\x8aJ\x86&q\xbeW7,\xdf\x11\xf1\xe3\x864p\x90\xca\x06Y\xe6\xc0\xc8\xad\xcbU\xbf}\xb6\xf6\xed\x0di.\xf2r]\x1d\x8f\x9eAu\xf4cz\x1c\xf0\x7f\xd7;\xb9\x8c\x91eu`J\x1c]\xda~%\xcf\xa3\xb8\xf5\xe03W\xba\x8d\x95\xbc\"\xd7\xa4dte7e:\xf5t\x96\xcc\xfc}`ta\x00?\x90\xe6O\xa2\"Z&;r\x93\xef\x0e;8\x949\x13J\x9c\xeb\xaa\xbe\x84k\xa5\xac\x97:bv\x03\xac\xb2\x14\xb8\xa75\xaf\x9c\xe9D\xc2[\xcd\x85{Om\xfe\x814\x1f\x9b\xaeadW\x1d\xa4\xc5\x92w2\xc9\x984\xabeU\xa9\xec-\xc3\xa2\xa4\x0d\xc23\xa0\xe4C=Z\x03\xff?\xad\xcf\xbb\x9b\xa1\xb3\"\x8cL\x14\xa0U\xb5\x8b\x1b2/ #\xc2PU\xde\x8a\xdat\x19\xfe\x05\xddFo\xa5\xc2\xf0R\xae\n\x8b\xee\x14\xf4\nU\x95\x0b8c\xf0\xd3\xc7\xf3\x0f\x0e\xcdxA\xcb\x0d\xdb\xc2\xbe\xa6\xeb\xfcF\xce\xcf\xaa^\xf1+L\x05\x0d\xe5\xbb\x1b\xa3\xb26\xb2\x12\x87\x82\xe5\xfb\xc2\xa6K\xd6ul\xab\xd0XU /\xf9i'#\x8c\xae\x94\x91]\x1e\xca\x85\xb5\x9d\x9f|\xf6\xd5^,\x91\xab\x13X\x1e\x98\xa8\xa0\xb5\xc5\xbbfs\xd1r_\xf2\xb2a\x94Xm\xfdK\x9a\x11a\x85e@\x8a\xa6\x1a\x9e\xfb\x7fj6C\x12\x8d\xe5\x0ePT\x9b\xc8\xb1\x82\x1b\n\xaf\xab\xcd\xb0bE\xb5\x19\xac\xaa\xb1#\xc2\xf0\x00\xbd\xa2%sP?lt\x13pQN\xc07\x19%|\xd4\x13\xd0\xc5X\x7fE\x88\x9c\x830V\xe7\xcb\x831\x04H\x07_s%\x9c\x8d\x96@4]\x02#\x00\x89Kj`\x98\x8d\x81\x92\x85\x84\xd3\x9e\xd5!\xa0\xc4\xbc\\\xd1\x1bl\x89\xcb\xaa*(\xb1\x9b:\x01=W4^\xf1q\xfc\\\xf7\xb3XH\xa1\xc9\xcbMA\xb9\xec\x9eJ\x8d\xc4\x9e\xe4\xb5\xeb\x02\xc0A\x9a\xa6\xcaras\x91\xa6\xa7R\xce\x11\x9bN\x0c[MQA\xb9\xdd7@:\x9b=\xac\xe8\x15-\xf88\x10\x06h\xc2\x18\xc9\xb6=u\x85\xb5\xc0\xfe\x82\xc0\x1c*RM\x13\xfc>/\x85>\xe5\xbb\xa2R\xcaV\xfd\xcb\x8b-\xcd.?\xdc8\xf4\xd5\xaf \xa3\xf5I\xff\xc4\xdb\xc0\x8e\xdc\xf2\x0b\xea\xcf\x07Z\xe7t\x05\x07.m\xbeZ5T-*f\x89\xe1\xe4%\xa4\xd5\xf4\xec\x89\xd0\x14y&\xaczR\x90rv)\n\xce5\xad\xf9M9g\xccJ\x07X\x1d$\x89K.\x9a\xb6\x96vk\xa9{\xd5\xeco9\x9f\xf9\xe2\xe9\xe2\xee\x01~\x8a\xe3\xbaM\"\x94\xc7\xe7]L\x8f\x8d\xb9\x0e\x8b\xc0\xdc|>\xf0s\xfa \x82\xd7\xe7n\x00a[4\xb7\x0f\xe6\xe2\xf7A$\xc7\xcfY \x17.\x9a\xe7\x07\xd3\xb9~\x10\xcc\xf7s\x16\xa5xHA\x9c?\x98\x9b\xf7\x07\x81\xdc?\x08\xe5\xff\xb9Gv\xcb\x0d\xc4r\x00an\x1e \xe0\xb8\x800'\x1f\x10&s\x02!\x8e\x17\x08sq\x03!\x8a\x1f\xe8\x9e\x0e\x84\xdf\xfd\xbd\x1cA\xb8\x1b\x9e \xdc!W\x10\xee\x86/\x08\x81\x9cA\x88\xe3\x0d\xfa\x96`\x1cw\x10\xe6\xe5\x0fB\x00\x87\x10\xc2y\x84\x10\xc1%D,\x99_!\xf8\x840\x07\xa7\x100\xf70\xe4\xf1\xcc\xab\x84\x92\x089\xc5\x05\xf3\x0c\x9d\xa5 \x0e\"\x82k\x08\x01\xb5\x9c\x91s\x08A\xbcC\x98\x9b{\x08\x91\xfcC\xf7\xb8j\xfc\x1cD\x88\xe7!Z\xcb\xe3_\xf4q\x11a6>\"\xe0iu\x80\xe1%B\x187\x11|\x84\x99H\x8e\" \xcauX\xebg\xe2+B\x94p\xf1\xbcE@\xb42\x82\xbf\x08\xb1\x1cFp\x13\xb5P\\F\x98\x99\xcf\x083q\x1a\x017b&s\x1b\x01\xcfo\x04$\xc7\x11\xd0\x85\xdb\x94\xb5\"\xceZ \xd6\x9e<\xab-9\xc5\x86I\xb1a:\xccj#\x0e\xb1\x0f\x07\xd9\x86Sl\x98\xa9v\xe0\x08\x1b\xf0,\xf6\xdfp\xdbo\x8a\x0d3\xc5\xd6\x1bb\xe7\x8d\xb0\xf1\xa6\xd80)6L\x8a\x0d\x83\xb5\xd1\xcej\x9f\x8d\xb1\xcd\xa6\xd80\xb6\xc7\xbc6\xd8\x00\xfb+&\xaaH\x88\xdd5\xc5\x86\x89 \xaf\xe2\xb3\xab\xa6\xd80x\xfb)\xd2v\x8a\xb1\x9b\xe2l\xa6)6\x0cD\xdaE\x03l\xa2)6\xcc\x0c6O\xaf\xbd3\xd6\xd6i\xdd7Sl\x98#\xa4\xd80)6\xcc\x08s\xc4\xe9\xc0\xda!\x83m\x90A\xf6\xc7\x14\x1b&\xd2\xce\x98b\xc3h<@l\x18d6\x91\xce\xc0\x17\x9fM\x84\xdd\xa8g7\xf48`\xca\x0f\x94}\xb8i\xa4\x83\xe6\x9a\xb2l\xcb\x17\xf9\x9b\x86\xef\xf3\x03\x1f\xdaA4\x94\xdeK\xea\xe7\xfb \x88\x82\x14Z\xafz\xda0\xfa\xf8\x17]-\x92Is\x80d\xd2\xc4\xa9\xc4 \x994\x93I\xd3\xfad2i\n$\x93\xe61\x92I3\x994mH&\xcdd\xd2\x14H&\xcdd\xd2L&\xcdd\xd2\x94H&\xcd\x18\xab`2i&\x93f\x87d\xd2\xd0\xfaV\xc7\x00?Q\x83@)\xe7[[\xc6\xa08\xa1T\xf8\x85\xa9r\xa2\xac\xfe\x9a\x98\x97\xcf\xe4\x1f{\x7f\xeb\xcc\xb4kR4\xfdqd6^\x19\xccV\x16uJV\x15\x05\x15\xb2\xf8^)SD\xf4\xf5#\xb9\xef\xc9&/e@\xfcKzk\x93\xff\xc8\xd9\xf3\x92\xde\xca\x10\xc9r\xebjC\xcd\xf3\xc3<\xd9\xb4\x1e\xa0\x8b\x92\xde\xb0\x0b\xfe\xb0PBnF\xda:!\x0c\x15\xf5\x17\xf8\xa3\xbc2\x14v\xbc[\xa8\xd0\xdc u\xdf\x02\xde\xf2\xe3DU\n-E\xb5^7\x94\xf1\x1b\xd2\xb0\xba\xd03\xa24\x94M\x15\xfc\x91<\x8d*)\x83\x10e\xfd\x90\xe3X5F\x88\xb2<\xech\x9dg\xfaob\x95\xcbH\xc9\xdb#\xf5q[Zj\xc1\x1f\xcaV\x05:\x1a\xdeg\xa2\xb4\x826M'B\xa94\x94\x01\x96/i\xa0<\x87\xc5\xdf\xb1pGI$\x0c\xe2-\xf2]\x8e\x95\xaexV/\x12\xacb\xa4\xe0B^JM\x9fV\xefK\xf5x\x7f\x04\xb36i\xc4\xa0\xb4\xbdT\x86\xf5\xfft\xb6\x86\x82\xae\x99\xd2\xbb\xe6LnC\xfaH.4\xfbr\x82\xc8\x8fp9/o\x81\x8a\x00\xdd\xfb\xfd\x03J1\xab\x0e%\xbb\x10\"A\xca\xb2\xf7\x86\xc8\xb2@E\xfbX}\xa0\xc0\xff\x91\x97\xab\x9c/\xaa\xad\x8dO\xa7\xdd\xe0\x0f\xaa\x81\xd4/./\xb3\xe2\xb0\x1a\x1d\xb8\x89\xfcJkd\x1d\xf5\x98X\xfbz\xba\x7f\xbeevm\x1a\x9b\x02>\x9e\x8d\xb3G\x8c\x9a \xee(5m\x14\xb9BL\xafn>\xf2)\xb7P\xb3)\xdf\x94U=\xb2\x9c\xe8\xd98\xfc\x84\x94\xcc\xd4\x8e\x1dG\xb77t`M\xafh=x\xd5\xd5y\xea\xe9q\xc7\xe5\xdd, 55\xcf\x84A9\xfc\x1b\xb4\x146e\x91\xe6c|\x1f2\x86\x10\xf8\xcd\x1dIC\xd4\xe0bi\xdf\xb2\xbe\x19\xa9\xde\x9f\xc2\xdb\xf7/_\xbd\xbf\xf8\xee\xbf.>\xbe9\x7f\xf7\xea\xc5\xd9\xf7g\xaf^>3\xfe\xb5U\xf3\x0b\xdd\xfc\xa1\x94\x07\xd9\xa6\xaaY\xd7xx\xcb\xff\xf3\xdd\xad\x9e\xf0C\xbd6\xab\xe0\xf9\xf9\x0b)\xc5\xbc\x81\x8c4ccA\xaf>\xcf\xcf_<\x1b\xfc\x9f\xb4\xf8\xf2\xaf\x0f%n-\xe1\xe5\xabA\x11\xfc\x7f\xdb2\xc6\xdd6\xb1C\x8e\xd6\x1dZ\x1ev\xc33\x89Y\xd4\xb6G\x9e\x9f\xbf\xb0\xfd\xc4\xdb1\xe8`\xc9\x97r\x17\xdf\x9b/\xd6\x192:\xd0\x88\x83\x87\xda)\xc4\xbf\xd5\xb2\xc3*)\x9e\x13h\x18\xa9\xf9Da\xf0\xf5B\xda\xd0Y\xcft~\x14\x0b\xaa\xb7 \x88\xdb\x99\xda>\xba\x07f\x91\xbcg\xc5O\x9be\xb4\xe8\xc6\xe5\xbbD'o\x0dz\xb6 \xf9\x1d\xddD\xe43bw\x94\x9c\x8b\x1b\xa1\n\x1b\xe6\xeb\xfa@\xcb\x15\xadwy\xc9\x1e7C\xe1}\xb89\xa7\xa4\xce\xb6\xfd\xe4vB\xb7$\xcb\xdd)#\xa7\xb8\x8d\x18W\xe5\xe1\xa2\xfc\xbb_\xcf)N;\x01\xd4\x92\x18\xef\xbb\xba\"\xab\x8c4\xec\xc3\x0d,\xf5\xbf\xfbB3\x12={o\xfdB\xd7\xf2>\x88\x9e,\x9cH\xc9n\xda\xf0=6ZbT\x9a\xb1-\xcd7[C\xfa3\xc0\x98\xd5{\xbcKK\xa26\x96\xb3\x82>\x13\xe3j)\xb2\xbc\xc8\xef\x19\x9ee7[\xd2l#+2\xe8\x92\x0f\xa3\xe9\xc2\xcb5i\x12\xb3jE\x9b=\xc9,\xb4\x02\xefGU\xdb\xde\x90\x9d,F\x07\"\x82\x17\xd5\xca\xa4\xbf13[\x01|\xecV@Iz \x826`\x12\xff\xa6\x91Q\x10\x9f]n\xfc!\xbe\xd6\xf2+ls\xa2\x0dY\x86\xd7jr}q\xd7I\xcax\xbfW\x07\xb6?\xb4\xe7\xfd^R\xa3\xc7\x0d\x14\xd5fCkxR\x93k\xf5\xb1\xaf\x16\xf0\x935\xb5\x96\x9d\xceRV\xe5\xd3\x15eb]\xcd\x1b\x96g\xa6\x16\x17\xd5\xe63\xce\xc3\xb3k6\x17\xde\xfcX\xfea)\xe1\x1f\x9c\xe0\xcaQ'\xe1\x1d\x04\xe0\xc9\x0d'\xe1\x13\xae\xc4\xc3\xa4L\x13Ez\x9eA\nB\x02\x97EN\x02'\x18 \x84x$\xd0B\x92\xc0\x8bJ\x02\x95cN\"@j\x12\xde<\x07}\x04\x96\x8e[\xaf\x86\xe82\xc5\xb5\x17\xb5\xb2\xeb`\xb8\xae\xc9~Ok\xb8\xde\xd2\xdaE\x8f\xec\xc0\x17\xc0Kz+l%\xf2\x18LjO\x02 \x0d\xd9\xd0F\xab\xad\xc5y\x9d\\\xcbU\xdea\x9a\x0en\xf9\xb9\xf8\x8e\xf4\xce\xd1\xad\xa6\xe5 \x9fZP\xc3\x051\x9c\xaf\xfb\xed\xbc\xf0\xb5W\xab\xe0/\xe9\xedi\x97\x91O\x11\xcbIM\xc7\xa2\xf0\x14\x87\x15T\x88\x98\xc2\x13\xcf9\x8bSI\xe9t\xfa\xb9\xa6\xday\x06\x853\xed\x1c\x044\xe6\xf9w/\xce~\x92\x06\xa9\xd7\xd5\xa6\x1b\xe6\\\xc6\x87\x8c\x1dj\xaa\x1b)B\x92\x962\x81\xa3\x83_\xccnD\x99\xad\x95\xab\xa86\xe6:\xe2j\x88=?\xf0\xc5`%\x8f\x0e\xf6Tc\xa83\x829\x955`\x16\x9c\xe1%\xa4\xb3\xad\xf7r0\xea\x1a\xe2\xea2[\xaaj\xe4\x11\xf5\xf9 M\xb3\xca\xd4\xae\x99\xd1\xc7\xf7\xb6>f\xca/\x1dUQ\x9dF\x1a\x96\xb7\xbej2\xcb\xe1\xca\xbbi\xfa\xb7I\xe6M\xa3\xe8\x95\x02\xa0\xe7\x05\xc4z\x869\xca\x0bJ\x9f8\xabw\x98\xd7?ln\x0f1\xbc\x8f\xd8L^bq~b\x8e\xe2\x02\x13&N\xf4\x15\x9b\xdb[,\xd0_lf\x8f\xb10\x9f\xb1@\xaf1\xd7\x18n\xfd\xc9\xb0~c3{\x8e\xa1|\xc7f\xf4\x1e\x9b\xea?\x16\xe5A6\x93\x0fY\x8c\x17\x99\xa30tJ\xc4;\xf0$\xbb;_\xb2;\xf1&\x0b\xf3'\x9b\xdd\xa3\x0c\xebS6\xabW\x19\xde\xafL\x1e#\x02<\xcb\xc2}\xcb\xbcK!.\xf9\xe1d\xff2\xafB\x00u\xa0Bx\x99\x85\x9c\xba\x82=\xcd\\\x9b :\xdd!\xae~3\xfa\x9b\x85x\x9c\xcd\xecs\x16\xe7u\xe6\x1aA\xa8\x14\x87\x91\x9eg\x96\xd2\x18*\xbd\xe1<\xdegh\x17*\x84\x07Z\x90\x0f\x9a/\xcbU\x8c\x1f\x9a\xafL+\x1b{&o\xb4pa\xe2=\xd2|m\x8b\xf0J\x8b\xf4KsgV\xf3\xfb\xa6\xcd\xeb\x9d6\x8f\x7f\x1ablL\xf6QC{\xa9\xe1\xfc\xd4\xb0\x9ej\x88\x81\x13\xee\xad\x16\xe2\xaf\xe6LT8\x8b\xcfZ\xa0\xd7Z\x9c\xdfZ\x90\xe7\x9aO\xe8\xee\xe4\x84\x9ew\xf1\x1el\xf3\xf9\xb0y+e\x9d?\xf3y\xb2!|\xd9\xe2\xbd\xd9,\xc51o*\xc2Y=\xda|>m\x91^m\x96\xb2\xfc)\x08\xfd\x9em\x9e\xf4\x83s{\xb7\xcd\xee\xdff\xf7p\x9b\xd3\xc7\x0d\xe3\xe5\x16\xee\xe7\x16\xe4\xe9\x16\xe1\xeb\x16\xea\xed\xe6I)\xe8\xae\x1d\xd6\xff\x08\xeb\xf3\x16\xe1\xf5\x16\xe8\xf7\xe6hn\x8c\xef\x9b\xa5(D\x12\xc1\x18\xff7\xc7\x90\xf7'\x10\x9c\xd1\x07\xce\x9b<\xf0.\xfc\xe0\xe6\x1a\x8b\x01\xbep!\xdep\xe6\xe3\x01\xcbw\xb4ad\xb7\x8f\xb4\x93\xe1\xf4\x00\x1f\xf2\xce<\xb1\xaf\xe9U^\x1d\x1a\xc9\xf5[\xc0\xf7U\xad\x08\x7f\x0d\xfc\x1b|}\x029{\xdc8z\xf6Z<+\x86\xff*'|\xad\xb6u\x89XAu\xfbtP\x16\xa5%\xb9\xaaXw\x0b\x975yM\x1a\xf6\xa2\xda\xedrf[n\xbb\xaa\xc2\xb7\xdf\xc2\xd7'\xd6\xed\x94\xb7\x80\xdf\xcd\x9b\xbc\x1150\x15\xe8\xa2)\xb1\xcf\x80\xfd\xc5\x08\xab\x88u\xc5\xec\xd7^{\xe9\x01\xdbV\xfc\x8f\xe6O\xcazY\x8aS[y\xa3\"\x8aT\xf6\x9b\x9d.}]W;\xd1PR2\xba\x80?miMI\x03\xaf\xab\xcd(\x11\xae\xac\xa3m,\xbbL%\xbd\x83\xff\x8e2\xb2\"\x8c\x9c\xb4\xdf\x17\x17\xbda\x13\xfd\xcd\x0b\xcc\xaa\xfb\xcd\xe2\xeb\xafO\xf8?~\xbb\xf8\x9d\xf8\xef\xef\x8e\xde\xf6\x8f\x91\x0f7-o\xdcC\xce\xaaiA\xafH\xc9\x80\xdd\x08*\xb9\xe5B\xace!\x8c\x81\xa6\xf60\xb2iz4;y\xf7U\xa1b\xa0\xa86|\xc9\x11\x87\xc3\x15\xcd\xaa\x15]\x0dG\xbf\xcb\xfd\n\xfa\xce\x1dS\xf2\x07\xf7=KR\xfe\xe0\x14l\xdb\xbbw\xfb\xe7\x99D\x14\xa5*\x05\xdb\xc6\x10\xa9f\xa1Q\xc5\x90\xa8R\xb0\xed\x19\xa9S!\xc4\xa9 \xdaT\n\xb6=\x95,\x15A\x95\x9a\x85(\x15N\x93J\xc1\xb6\xa7\xd0\xa3B\xc8Q3S\xa3p\xc4\xa8\x19iQXR\x94A\xc3\x97\x82m\x0f\x81\xa0AaOI\xc1\x14\xa8\x14l\x1bE|\x8a\xa1=\xa5`\xdb\xb6\xc7\xbcT\xa7\x00\xa2\x13&Ls\x08\xc9)\x05\xdb\x8e\x89W\xed#5\xa5`\xdbx\"\x13\x92\xc6\x84!1\xe1(L)\xd86D\x92\x96\x02(K)\xd8\xf6\x0c\x14%/A)\x96\x9ed\xdd7S\xb0\xed#\xa4`\xdb)\xd8\xf6\x08s\x04>\xc6\x12\x8f\x82iGA\xa4\xa3\x14l;\x92h\x94\x82mk`\x82m\xcf\x9c?\xd8j\xc6qFH\x13q7\x82\x8cO\x1e]\xc5@\x17\xa0?\xd0Z\x11\xc9\xb5+\x04\xc0\xcea[\xb3\xd4\xe58\xec\xa5\xc4S\xf8\xee\xfd\xdb\xe7/_\xd8\xc6\xd2\x0c\xa8\xad_\xdb\xd2\x1a`\x7f\xaaV\xb4\x17EU\xd8.\xdaP\x7f\\\xda\x16K.\xa8h\x87#{.\xbc\x7f\xf7\xc24\x19\xb5\x91\xd74\x1d\\\x1d\xf1\x0c\xfeJ\xebJ\x91b\xc4z\xc0\xab$\xc2\xa3Z\x962s?=\x83\x97\xaf\xde\xbd\x7f\xf5\xe2\xf9\x07^&?\x85\x19:\xa9\x8d(o\x12\x98\xa1P\xad\x0fU\xca\x1d\x15\xbfbK\xe1\xfc\xe5\x1f$ABE\xad7\x94W\x95\xd7\xa4^\x99U\x85\xc6\x11t4\x00D\x8d;J\x01\xeb\xc5h\x14\xb6F.(\x11\xdfG\xae\xd5\x85\x081~Mr\xa3\x973\x17-\x01E\xaf\xe9\xa2\xd3tF}~z\xc5U\xf6\xb9\xb1\xb6\xcfc\xaak\xf8\x9e\x0cj\xda@\xbe\x13tFF\xc7\xd5r\x8f\xfd\x01\x7fADG\xe9\xe8\x0b\xf2\x7fY\x10{A\x152\x1e\xd7\xbd\xf0\x9f\xea\x97\xd0\xec\xeb\xa7\x82cy\xfa7I\x9f\xfc\xbb|\xd5\x92\x8c]\xf0\xa4\xfe\x94\xb3\xed\x87\x9b\xa6M\xc8NTlH\xa1\xfcTL\x0f`7\xed\x88\x1b\xc8\xe9\xb1\x91\xff\xf2\xbb\xc57:\x07\xfa8\x95{\xff\x93\xea\x91\xfb\x89\xf2\x89O\xe7\xde\xafbJ\xe9.\x90X&\x89e\xd2!\xb1L\x12\xcb\xa4Cb\x99\xb0\xc421#\xb1L4\x12\xcb$\xb1L\x12\xcb\x04yJJ,\x93\x16\x89e\xd2Gb\x99$\x96\x89\x01\x89e\x92X&>\xe1'\x96\x89\xf5\x9d\xc42\x19 \xb1L\x12\xcb$\xb1L\x12\xcbd\x00\xac\xc5?\xb1L\x04\x12\xcb\xe4\x9f\x81er\x94=np\x8dV\xf1[\x94\x95T\xfd\x9fZ\xfc\xa4\x85Q'\xdf\xec\xafBy\xf9ll\x0f\xb0RU,Z sF\x89\x94\x0f\x1d\x9f\xf0\x11l\xfa\x9c\x94\x0f}^\xe1\xfa3y\xa7\x14\xafsH1\xe5CO\xf9\xd0\xbf\xcc|\xe8\xc1\xf4\x9f\xbfmI\xb3u\xd3~>\xdc\xf4\xc8>\xec\x86\xcf\xd1~V\xd61e\xe7\x9e\xd3\xf1\xe2\x89:](\x99D\xcfI\xf4\x9cD\xcfQH\xf4\x9cD\xcf\xe9\x90\xe89,\xd1s\xccH\xf4\x1c\x8dD\xcfI\xf4\x9cD\xcfA\x9e\x92\x12=\xa7E\xa2\xe7\xf4\x91\xe89\x89\x9ec@\xa2\xe7$z\x8eO\xf8\x89\x9ec}'\xd1s\x06H\xf4\x9cD\xcfI\xf4\x9cD\xcf\x19\x00K\x95H\xf4\x1c\x81D\xcf\xf9\xa7\xa0\xe7\x90\xa6\xbfD\x0d\xc99\xa4\xd9\xb6L\x81\x1b\xf9\xbf\x9a\x8es\x02\xb4\x94^\xffb\x84m\xe9\x8d\x9a\xc43\xf2t\xfcf\xcd%i\xe8)\xa3\xe5\x8a\xd6\xbb\xbcd\xad\x8d\x93,\xb3\xfcB\xd4\xd3n\xe3\xec\xa9\x08\x9e\x7f\xf7\xe2\xec?\xf9\xd3\xbd\x10\x12\xe2m\xd8\x92rUhE\xb1\xbaa7\xe2y\x95\xf0\xa5\x81U^\xd3\x8c\x15\xb7\xc0\xaa\xb6\xc0\x81\xce\xbb\x97\xe4\xe6\x04\x96\xb7{\"\x13\x8a|h\xab-\xf4\x87\x05\x15\xd1&\xc4\xce\xd5\x96\x7f+\xd4\xbamIj\xfd\xef\x15\xad\xb4+|\xaawqB\xb8\xc8O\x14\x9b@dg\xd9\xefO\xd4L:\x81\xfd7{\xa9lkXU\xb7\x8a\x14D\xbc\x86\xdf\x1b\xa35\xb4\xa2S?\xde\x8f\xf9\xd7j-\xb4\xdb '\x9aL{\xd4\x11\x89\xa2\xda\x04\x99K\xf3r]\x05\xbe`L$\xe5T\xe3\xb9*lL\x9d\x85*\xcd\xa0\x0e\xb4h\x1ac\x8b\xdb\xd7U\xb5\xbe\xa8\xf6Vk\xb2\xc50\xec6\x0b\x1b\xcb\x03\x8f\x85\x1a\\Vj\xf0UH\xc2g\xad\x06]\x8c\xf5W\x94\xba\xd6\x9b\x0e\x0dU\x06J\xed\x0b\"g\xd0\xfd|\x0b\xa3\xc8\x05\xa9\n\xad\xd6o\xf7\xdd\x9a]vKSg@\xc8H\x91\x1d\n\"\xc2\x00\xfdD\xeb\xcb\xc2\xde\xc4\xba\xaa\x98\\\x80E\x82\xa4\xec\x98\xe9\xd7\xc7\x92\xf6\x94\xc7\xda*&/\x94\xfc[%\xe5\x8b\x1a\xffM\x14\xe62\x98\xea\xebSI\xf3\xcdvY\x1d\xc4Y\xb8\xac\xc6L\xb0>$\x15\xc7\xfe\xbb4\xea\x08b\x80>\x19\x12X\x1d\xe4F\xd4\xaa\x9d\xb5\x04\xc5\x01D^\xc5l\x05J!\x0b\x02T\xb7q\x1d_=\xfc}\xa7\xbe)B\xb2\xc9\xfe\x90\xb3\xbf\xfd\x82\x8arU\xe4\x8d\xb0;\xeb\xe7\xcd\xad\x0djg\xe3n(\xaa\x89\x92\xa2\x1c\xb9\xf2\x99\x96e\xbe/5{\x92\x85\xac\xa6n)\xb7[\xf2Qj0\xd6O\xa4\xd5e S\xf1\xa8\x8e\xf6r\x8d\xcd\xfbw/4 {\xdc \xb8\x0e\xd05\x91\x87,k/t=0\xfe\x8c\xa9C\x12\x8bk\xf4kbq\xf9\xa6F\x87\xc4\xe2J,.3\x12\x8bK \xb1\xb8\x8e\x91X\\\x89\xc5eCbq%\x16\x97@bq%\x16Wbq%\x16\x97Dbq\xc5\x10\xa1\x12\x8b+\xb1\xb8:$\x16\xd71\x12\x8b+\xb1\xb8\x12\x8b+\xb1\xb8\x12\x8b+\xb1\xb8\x12\x8b\xeb\x9f\x9d\xc5\xb5\"\xac\xaf.\x8c\x89(a\x0d\x9cb\x89\xed3X\x13g\xf8\xa05^\xd4\x0ce{\xc3=\xd5C\xa5E\xcc'C#r\xd8\xa8k\"\xeaUsZ\x10F\x1be\xdb\xb4D\xe8x-\x1e\x11\x89h\xda\xc4E\xc2r.\xfe.\xc3g\xe9me\x1c\xae\xa3\xf7\xee/t\xfb>S\xe2\x96h\xc7E\xbe\x9a\x95\x1a\xb4%\xcd\xd6\xc5\x0dr(\xd8<\xea\xb5=\xa9\xd9EC\xd9\xc5\x96\x92\x155\x18\x84\xc1Ws\xf0\xd6\x9eC\x84\xec\xf1\xd0\x8b\xacVd\x0d\x171A\xc3.*\xc0\x88\x0b\xfc\"\x03`9+(\xbf\x9a\xd5\xac\xa1\xecG!\xb9\xe3\xee\x96\x0f\x89A{6NK'F\x89a\x88\xc8w\x1e\xbf\xe4;^F\x18\x9f\xbf{\xa1\xab\x16'\xecO\xcd\xea\xf2B\xbc\xfaI\xa7g{<\xeb0\xbb\xdb1\xa0,\x0b\x8e\xde\x91\xcd_\x92&\xcfT<\xbd\xbc\\W\x9e\xdetr\xdb0\xf5\x02{\x87\xf4\x81\x1a;`\x8f\xe1u\x0c\xb2\xdf\xdf\xef'1\xeaj\x89\x17|y,\x9bC\x03\x19\xd9\xb3C\xad\xee+Y\xfb\xe7\xfaP\xd0F\\\xc4\xf6u\xc5\xd7Uw\x15I\xdb\x9f\xd2\x8e\xcc\xff'\xdb\x92\xbc\xbe\xf9\xc3\x9b\xb7\x7fz3\xa1\x84w\xef_\xfd\xf1\xed\x87W\xd3Jx\xf1\xf6\xa7\x9f\xce>L*\xe3\xed\xbb\xb7\xe7\xcf_#\x8b\xd0>5\x13\xe5\x81_\xef\x878\xcf7%]\xfd\xd4l>\xb4\xbeDL\x11\xec\x1a\xf1\x13\xba\xa4\x1e\xa7c\xa0fq\xae\xd6#X\xfb\xf4\x19\xfc\xb1bN\xb5\xc8\x08\xf6~y\x06\xef\xc4)\x87\x14\xb8\xe2|\xaa\x8c!\"&N\xc8\xf5T\xa2\xae\x0e\xa5C\x031D\xd8]Y\xc2\xe5\xf3d\x86_/2D\xe0Z\x07\x11\xeb\x1d\xa0\xaf\xf3\x1d\"\xba\x0f\xb0G\xb21\x82t-CDH\x0f\"%\xc8\x81\xd4\xca\x0c\x113\xee4\xc2\xa7\x84Fh\x87C|\xa7Cl\xc7\x07jz\x86@\xe9}\x86`\xf9\x8e6\x8c\xec<\x9a\xfa\x0e\x11\x02\xc1*Q\x87hU\x19\xfe\x0b\xe7\x10\x13j\x88\xee\xaa\xaer\x96\xc0\x10f\xc4\x8c\xfb\xf0\xf5\x96o\xce\x84\xdf\x8c\xc3\xaau\xb7\x12\x8b?\x86\xf0\xdd\xbdk\x93\xf6Ho{\x00ra\xf4py\x19\x0d\xc1\xd7\xd6<\xcb\xf7\x82]\x9f\x97=\xed\x87r\xbd\xc6\x1fJH\xd3TY.\n\x1a\x18\xf8\xdd\xa07\x8c\x96nS\xe1\x10_@\xff\xb4m\x1a\xf0?\xdd\xfedC\xf4\x8cV*\xfd\x93\xf4r\x9168*5\xd5\xf8\xaeQGN\xcb\x0d}\x8c\xb6\xfa\x17\xff\x88\x93\xa7\xeb\x9c\xf14B\x97s4\xdd\xc6\xd3\x08\xdf3G\xf3\xcd0\x8d\xd0\x85\xd9\x06JP\xff\xc7\x08W\x08\xb6\xa5\xee\xf1\xbb\xd1\xbe\xa6\xfc>\x0f\x83j\xf0\xbf\xa0\xca\x13\x8a\xfeN}\xcf[\x83\x93B\xef2\xe5{T\xa8\x1b\x96\x98\x81\x1dx\x88\x0c=<&u\xc3\x08I\xdd\x90\xd4\x0d~$u\x83\xefiH\xea\x86\xf0\xb3ER78\x10>%4B;\x1c\xe2;\x1db;>\xa9\x1b4\x92\xbaA\"|\xbd\xfdG\xbc1%u\xc3\xe7\xdd?I\xdd\xf0EtNR7\x98\x10#\xdc/Q\xdd \xcej\x17W\x15\xcb\xcb\xcd\xc5\xbe\xba\xc6\x1d,\x03\x07x\xd8\xf9\xac\xdbH?\x8f\xfa\x04\x9d\x87\"k\x82=\x07\x85\x0e\xcb\x97\x9aJ\xc3\xc7\xe6+E\xa4\xe9hM\x9aZ#\xe8y\xde\xc2\xba /\xef\xfa\xc0\xae+^\xd6\xba\xc83\x11-\x98\x8fl\xcf\x98+\xf8\xed\xf8\"+rZ\xb2\x0b\xc2\x18\xc9.\x1f\x9a\xe0\xd3k\xc1\x05\xc2\x07G\"\xa0.\x10X\x1fP\xe75\xba\n\xbc\xea\x05\xd6 \"\xea\x05\x1e\x17-3\"*\x06\x91\x95\x03\x8c\x93\x97\x19\xa1\xae_fD\xb6\x15&\xb4\x17p\xcecf\x04.Xc\xe8\x05\xcc\xebhf\x86\xd7\xfd\xcc\x8c\x87\xact\xe8\x12<\x06\xce\xad-\xb8\xd8\xa1\x1b\xdc\xc8\xd9-\xb84\xa4s\x9c\x19X\x97\xb9\xe0\x82\x07.v\xc1\x8etf\x84\xba\xd7\x99\xe1w\xba3#z \x87\xa9\x995\xa2?\x17zf\xea\xc3\xed\xe2g\xc6\x0c\x15\xc5\x1e\xa9\x86@: \x9a\xf1@k\x7f\x8c\x12\x13\xa6 \x19\xe2\xae\xac\x1d&h\xb35&H\x1b&J\x1cb\xb5\xdc\x1a1Z\xbf1\xe2g\xa4F\xec\xc0\x81\xe9\x83\x07\xa6\x0e\xa0IZq\x8d\x08\xed\xb8\x06\xde5\xd3\x8c \xf2\x9b \xb7p\xe7N3\x10.\x9ffx\xf8H\xc9\xb9\x9d\xfc\xcd\xf0\xba\xfe\x9b1i\xa2L\x9b&z%\xbdX\x17\xc4\x90o\x18\x83\xc9\x03-\x8c\xdb>\xc4S\xf8\xee\xf5\xdb\x17\x7f\xb88{y\xf1\xfd\xeb\xe7?\x04\xf2\xba\xc7\x18\x97\xf6\xfc\xbb\xf3Wo\xf0t\xf5!\xc6\x85\x05r\xdf\x87\x18\x17\xf6\xe6\x0cK\x81\x1f\xa2%\xc4\xcf'\xb6\xf8\xab\xb7\x84\x9c\xdc\xab\xef\x0b\xb2\x81\xbc\\ \xfb\xbb\xce\x0c\xa7&~\x94QF\xa2\xe3\xeb\xe4\x92\x12\xe2{\xe1\x18\xd1<\xca!&\xcf\x93\xc9\xcbq\x001\xe3\x18\xb3U?\xce\xd2 \x11\xcc-\x1bb\xb66Du\xc1\x94\xcb\x96\xc4\x0bq\xdd9\xcf7\xd2\x97\x84\x9f\xd1\xb4]O\xb0\xa9t|\x9d\x88\xa2\xf3\x12\x88*\x1f\x7f\xfd\x9a\xd6&\xf9\xb5a\xd4\xa0\x96b#\xa2\x19\x85iY\xa5r\xf6\x9a4\xeaZ\xc8$\x85\x92\xa8PDAeuZ8\x9c4\xba5\xa2\xa1\xe8\xeb^\xc4\xbe\x1f\xb3\xdbwm\xc1\xbf\x13{\n\x8a8\x01EHA\"F\x16\x12\xd1\xeb\xf8\xa4\x05d\xc2\xe2\xb1?,/<\xb9\xf8\xcd\x88\x16.L\x120\x07]}\xf3\xbb\xdf}\xfd\xbfc^\x9d(h\x98&l\x10\x99_\xb3\xfd7\xbf\xfb\xfd\xe5\xd7_b\xf5\xa7\x9c\xc8\xde\x1d\x96E\x9e\xfd\x81\xde\x0e\x14{\x97\xf4\xb6\xe9%\xf6\x8c;G\x1d\x1a*3 \xfe\xb1]\x90\x02K %\xde\x0e1\xa9S\xa6\\\xe6[\xbd\xf0\xbe\xce\xab:g\xd1\xf3\xf8^\xeb\xaek\x1dR\xd9\xc8\xe5&v\xa1\x89\\\xc7'\x083z^F\xae\xe0\x91\x02\x85 B\x85ik\xf7\x04\xe1\xc2\x14\x01\xc3\xd4U\xfb\xe1*\x1e\xbf^\xdf\xd9j=u\xad\x9e\xb2RO\xe8\x88\xb8\x95\x0e\xe6X\xa3\xef\xbd\xd6q\xbe(\x1a\x91\xd5\x0d\xab*\xbf\x87U\xe5\x05\xde\x08\x16X\xab\xb0\xda,o\xffJJ\x96\x97\xf4\"\xecF\x14v\x13\n\xb8\x01\x05/\xee\xe1Kz\xf0\x0e\x19\xd8\x03\x12\x11k_\xf0~\x18,,\x88\x12\x18\xc4\xee~Q\x82\x838\xe1A\xfc^w\xbf\xd5\x8c\xd9\xd9\xee`O\x8b\xdf\xcd\xe2\x96\xd7(!\x87-f\x12\x13v\xad{\xa8c\xdc\x0e\x15X\xb1\xc0*\x85(\xc1#k\x82Up\x87\xeaN_\xf3]\xf4\x85\xf0\x05|.\\\x01\xa7z(\xaa\x10\xed=\x9fY\xc2\x18\xdd\xed\x85w\"\xab`\x977\x05%+ \xd2\x0f\xd1[\x9e\xf4S4)L{\xf4_\xb3\xe0\xbd\xab\xbb\x7f%\xf7\x9d2P\xbd\x89\x19M\x1e\xa2\x8c\xfc\x8e\x8f:\x80!\xbf\xf8i.^\xb1\x01Jt\x80\xe2\x1a\xa0\x04\x08\xf8\xad\"\x88b\x82j)\xa0[\x0b\x80&\x88\xe0\xfaS\x033\x804\xfc\"\x87\x10\xb1\x03^\xf4\x81\xe4\x0c\x14\x0d\x03C\xb8\xc0\x1c\xa5\xbd\x07h\xe4P\xc0\x0e\x84 \nD@g\xe0h\x0d\xb1\x04\x86H\xaaB$)!\x9c~0\x89h\x80?6\xceE\x1e\x08\xa2 \x04\x13\x02\x02FM\xc0\x04F\x9ed\">\x8e;\xc1\xa0\x8d\xf1\x115\xf04?\xe4\xe8\x845\x9a\x0b\x138\xa2$\xb3A\x18W#\x84\xc9\xdbb\xc6\xb6\x14H\x8e\x0fq\xe3\xfa\xb5)h\x8f\xbbIg\xaf=\xcf\xcbLP\xdf\x9b]\xd5\x08\x9e\xbf\xfc\xc3\x89\xa3\xb8kq\xe4\xbc\xa25\x83\x9c\x01\xab\xc6uqU\x85\x9fM\x97\x941Z\xc3\xc7\xff\x87\xb8\x10\xfa}e\xbb\x96\xa5\xbc\xbf\x02\xa89\x84\x1f\xc8)\xef\xaf\xeb\x8c\x93\xf2\xfe\xa6\xbc\xbf\xc7\xc0\xd6\x04R\xde_\x0bR\"\x1e\x85\x94\x88\xa7\x87\x94\x88\x07\xf5NP@\x8a0\xcd\x83\x04\xc6\x06?\x84_\xcb4D\xe0Z\x07\x11\xeb\x1d\xa0\x95#\x1d\"\xba\x0f\xb0G\xb21\x824WCDH\x0f\"%\xc8\x81\xd4q\x0d\x113\xee4\xc2\xa7\x84Fh\x87C|\xa7Cl\xc7\x07\xea\xcd\x86@i\xd1\x86@\x1bD5\"\x04\x82UI\x0f\x11l/\xd6\x98PCtW\xa5D<\xa1\x12\x8b?\x86\xa4D<_@\xff\xa4D<_D\xe7\xa4D<&\xc4\x08\xf7KL\xc4\x93\xf2\xfe\x9a\x90\xd4\x0d\nI\xdd\xd0CR7\xa0\xdeI\xea\x06\xdf\xb3\x1a\xa1\xb7\xcf\x88\xee\x83\xb8\xb3ER78\x10>%4B;\x1c\xe2;\x1db;>\xa9\x1b4\x92\xbaA\"|\xbd\xfdG\xbc1%u\xc3\xe7\xdd?I\xdd\xf0EtNR7\x98\x10#\xdc/Q\xdd\xf0\x19z\xb2\xa7\xbc\xbfv\x84\x0e\xcb\x94\xf7\xd7Wh\xca\xfb\x1bR/Hy\x7f=\x88l+Lh/\xe0\\\xf1\xcc\x08\\\xb0\xc6\xd0\x0b\x98\xd7m\xcf\x0c\xaf3\x9f\x19\x0fY\xe9\xd0%x\x0c\x9c\x93`p\xb1)\xef\xaf\xcf-\xd1\x8cPgE3\xfc.\x8cfD\x0f\xe405\xb3F\xf4\xe7B\xcfL}\xa4\xbc\xbf\x08LY\xfbc\x94\x980M\xc8\x10we\xed0A\x9b\xad1A\xda0Q\xe2\x10\xab\xe5\xd6\x88\xd1\xfa\x8d\x11?#5b\x07\x0eL\x1f<0u\x00M\xd2\x8akDh\xc75\xf0\x8e\xaefL\x90\xdf\x04\xb9\x85\xbb\xca\x9a\x81p\xa05\xe3!\x9a\x8dv_5\xe3!\xaa\xec\xf7O\xb2\x03\xeb\xf7\x1b\\\xb0\xcbO\xd8\x8c0\xefa3\x1eB\xfcX\xffc3\x1e\xa2\xc6~\x0ff3\x1e\xa2\xae\x01>\xd0fi\x01\x99\xb0x\x04g\xc9\xd2\x88\x16.L\x120\xc4f\xcf\xd2\x98$h\x98&l\x88\xcf\xaa\xa5\xf1\xb0\xd5\x9fr\"\xbb\x83\xac[\x1a\xf1\xd9\xb74B\x89\xb7CL\xea\x94)\x97\xf9}|v.\x8d\x07\xa8\xfb>\xe5\xfd=F\xf4\xbc\x8c\\\xc1#\x05\n\x13\x84\n\xd3\xd6\xee \xc2\x85)\x02\x86\xa9\xab\xf6\xc3U<~\xbd\xbe\xb3\xd5z\xeaZ=e\xa5\x9e\xd0\x11q+\x1d\xcc\xb1F\xdf{\xad\xe3|Q4\"\xab\x1bV\xd5\x94\xf7\xd7\x89\xe0\xc5=|I\x0f\xde!\x03{@\"b\xed\x0b\xde\x0f\x83\x85\x05Q\x02\x83\xd8\xdd/Jp\x10'<\x88\xdf\xeb\xee\xb7\x9a1;\xdb\x1d\xeci\xf1\xbbY\xdc\xf2\x1a%\xe4\xb0\xc5Lb\xc2\xaeu\x0fu\x8c\xdb\xa1\x02+\x16X\xa5\x10%xdM\xb0\n\xeeP\xddi\xca\xfb\xeb\\\xc9}\xa7\x0cTobFS\xca\xfb\xeb\x99\x0e\xc8\xad\"\x88b\x82j)\xa0[\x0b\x80&\x88\xe0\xfaS\x033\x804\xfc\"\x87\x10\xb1\x03^\xf4\x81\xe4\x0c\x14\x0d\x03C\xb8\xc0\x1c\xa5\xbd\x07h\xe4P\xc0\x0e\x84 \nD@g\xe0h\x0d\xb1\x04\x86H\xaaB$)!\x9c~0\x89h\x80?6\xceE\x1e\x08\xa2 \x04\x13\x02\x02FM\xc0\x04F\x9ed\">\x8e;\xc1\xa0\x8d\xf1\x115\xf04?\xe4\xe8\x845\x9a\xff\xa3\xe6\xfd\xc5\xd4\xed;\xe9\xfd\xdc\x00\xa3m\xfa)\xdek\xf2\x87\x13yy\xe2\x95U\xa4\xef\xbd=\xcf\x97\x9a\x12&\xd7\xe2uN\x8b\x95N\xb6EW\xfc\x88\xb9\x1cf\xfd\xea?\xed\xae\xf5\x0f\x94\xbd\xe6s\x9d\x89\x1a\xbe\xa7\xcd\xbe*\x1b\xaa\xd3\x92\xd5\xfa\xffE#tT\xaaa \xffy\xa0\xf5\xed\xe9\xb0\x1cx\xff\xee\x05\xec(\xdbV\xab\xae2z)\xeb\xbd?\xa8\xdb\xf3\x12\x0e%\xbd\xd9\xd3\x8c7\x8a\xd6uU\xb7\x15\xe87\xa9\xc9\xb6t7J\x8dc\xdd\xcb\xec\xbb\x97\xf8\xc0\xf1\x94sL\xb2\xacZ\x19\xe6\xa8\xfb\\\xe3:\x9f\xaa\xc8@AuXQF\xf2\xc2\xb0R\xba\x8e\x04\xd6\xa3\x80\xe7\x08\xe0\xdb\xfa\xf9\xeb\x17\x87\xdaz\xf8C,X\xfe9%\xf1\x1c>\xbe\x7f}Z\xd3\xa6:\xd4\x19\x85\x92\xec\xd4D?\x94\xf9\xcf\x07Z\xdc\x02\x9f\xfd,_\xe7J\xd1\xc1d\x80Xk\x812\xb7V\x9d\x93\"\xff+]\xd9=\xf8\xf7u\xc5\xaa\xac*`yX\xafi\xad;m!S\x86\xc9\xb6\xc1\xee\xd0\xb4\xab\x11\x10\xfbi\xaa\xa0\xa4q\x84\x0e\xabJ\n\x8fN\x1fA\xb6%5\xc9\x18\xad\xf9W\xa8\xb8\xf5AC7;Z\xb6K\xee\xc7\xf7\xaf\x1f7\xb0'lk-MT\xaa\x0d\x0ce\xff*/n}(\x8a[\xf8\xf9@\n.\xc1\x95\x94\xaf\xfa\x94\x90\xe4\x13\xd28ck}\xe2U9\xddT\xd5\xa6\xa0\x0b!\xb3\xe5a\xbdxy\xa8E\x88\x84O_\xc9\x96\x88b\x9bmu(V\xb0\xe4[\x86\xb5<\x02\x19)\xab2\xcfH!\xe6\x90\xfd\xcbO\xe8b\xb38\xe1\xa2\x15\xc1\x1f\x1e-\x1e\xf1\xd5K\xa4\x92\xcb2\xbagt\xf5\xd5\xe2\x17\xf6\xd7\xcfJ\xd8sa\xe7\x19=\x01F\xc9\xae\x81Cs \\\x1c2x\xd6>/xMY%\x84\xb1\xccKR\xdb\x0f\xdd\"{\xdd\xed\x9e\xaa4r\"\x1c\xa0\xf5a\xb9\xd6\xa9l\x89\x87\xa6\x1f\x95\x98\xd1\x1b\xd1\xd5\xcf\xcb\xdb\x05\xfcX]\xd3+Z\x9f8\x0fT\x1f\xdf\xbf\xd6\x076^\x943z\xa0XA)|\xda2\xb6\xfft\"\xff\xdb|:\x81\xaa\x86\xb2R\xbf\x9e\x88\xd1\x98\x91\x12*1;\xb9D\xec\x05R\x06\x87\xbd\n\xcb\xec\xf8.\xad\xafh-E\xb3#{\x95nR\xd4\x9cUmlf\xa1\xae\xcce\xa6;bW0\xae\xab\xa2\xa8\xae\x9bg\x8e\xbe\xfd%\x9c\xad\xbb\x16\xf1a\xa1c\x02\xb6\x8d\x16\x87\x99\xa69\xec\xe8\xca\x11\xec\xed\x97|s\xfa\xf1\xc3\x87w\xf0\xc3\xab\x0f:\xb7\xe0\xc7\xf7\xaf\xe5\x1c\xbb\x15\xfb\xb1\xfd\xcc\xf3\xe7\xf1\xb4\xf8p\xbb\xa7\x7f\xf9\xf3_\xac/\x88\xa3\xf1A\x8c\x079\xde\xd46r\"C\xbaU\xabCF\x81\x94r\x0b\xb3\x13\xeb~ \xcf\xbb(%\x8dH\xa6H\xb8\xcc\xe4\x91!#\x19_[\xaa\xea\xf2\xb0\x07\xe5\x17 K\xd28h\x8f\x95/\xac\xcb\xc7\xf7\xafE\x1d\xb7\xe4J\x0c\xc1]o\x0e\xad\xe4$\"\xbaI\xfc\xdfWU\xbe\x02R\xba\xecA\xb2\x82b\xf9\xa8\xe9\xba\xaa\xe9\x89.\x80\x97KX\xbe\xcc\x8b\x9c\xddBI\xe9\xaa\x91G!\x10K^}\xe5$pV%_f\xcb\x0d\x15/\x899\xbb\x80'\x1f\x1b\xaa\x039q)\xf1\xe1\xc9\xd7,9>II6\xae\xd6/kJ.\xf9\x1a\xa4\n^|e\x1fQo*F\x9f\xc9\x9c\xab\xebC\x99\xc9\x19\xc6\xdb\xa1\xd6\xae\xecP\xd7\xb4d\xc5mOY\xefX.E\xae\xcb\xf5:\xcfrRx\xf6\xb2\xe5a\x0d5\xe5;\x11=\x11\xb1mr\xa6?zh\xa8\x8c^\xd8\xceKkQK\xba\xc9\xcb\x927\x96\x9fi\x1d\x9b\xcb\xed\x9e.\xe4\xf8'\xfb\xbcYd\xd5\xce\xb5\x1a\x9f\x8b\x99\xda@\xc5\xb6r\xa1(\xc7\xab\x14\xa6\x95\x08\xd4T0&\xcfE\xd4\xec\xd3\xf3\xf2\xf6SwY#%\x90z\x99\xb3\x9aOb{\x0d\x8dE\xe9=\x82\x14\x95\x1az@\xcc]\xcbWg\xb1\xd1\xc8\x1a.\x87\xc7\xc2\xd1\xf1\xaf=\xd5Y\x86\xe6;=q\x8a|)\xaa\xad\xf6\x91\x06\x9a\xc3~_\xd5b\x07\xdf\x93\xec\xf2\xf4P\xf2\xff\xf0}[\x8e\x0b\xf3\x0cR\x1b\xbd\xfd`S\xad\xe1\xc0\xe4\xc2\xa6\x97\x87\x86/\xacd\xb5\xca\xe5Z\x01\x1bZ\xd2Z\x84*\x95\x17-\x1d\x9a\xcaX\x1e\xaf\x8f\xecB\xf3\xf7^\xdd\x10>\xf8\xe1\xebg\xf0\x8e\xd7\x9f\xaf\x0b\xaa)\xa4\x9f4\xe1\xc5\xaf~\xe5\xd8&\xbf\xaf*XW\x15|\x0b\x8b\xc5\xe2\xffX\x1f\xe3\x95!\xe5\xad\xfd\x01R\xde.x5\xbe\xaf\xab\xdd\x93uU}e\x7ft\xb1\xb0\xef\x7f\xf9\x1a\x9e\xf0\xa2>\x8a\x86|\xa8\x9e\xfc\x0b/\xeb+\xf8\x9bc\x0dw\x95\xf7w\xb7\xec\xbe\xf1\xc8\xee?\xc8\x15\x99Mx\xf0\xad8\x1b\xf2\xaf\xcc \xa1\xbcy\xf2}U-\xb2\x824\x8dG@\xb2\x8a\xfc%\xd9\xc6\xde\x8b\xf6:\xfc\xdd\xfa\xcb\xe9)\x1f\xd6\xb8:\x9e\x93\x1d\xe5G\xa7\xe7\xb2\xb6\x1b\xca^J\x95\xc2Y\xd90Rf\xf4\xc9W1\x957\x96\xe3j\x8bs\x14\xfc\xc63\n\xde\xdd\xb2mU:\xc6\x81\xac\xe3\xf7U\xf5d\xb1X\xd87\xb6v\x0c#\xe6\x91\x18!\xb1\x03\x84\x17r&%\xfe\xf2\xd5\xf9\x8b\xf7g\xef>\xbc}\xff\x95KW\xd9\xcd9\xf7\x87\xe5\xa7\x9d\xd2\xfc\xadG\x9a?T\x8e\xd8{\\\x92\xcf\xbe\x85\x7f\xd9/\x17\xdfW\xd5\xdf\x16\x8b\x85}\x1c\xf2J\x9f\xf0\x035\x7f\x83\x94\xb7\xfb\xe5\xe2\x0d\xbd\xf6\xd4?_\x8b7\xfe\xd7\xb7P\xe6\x85s\xe09\x85\xec\x98\x1e\xee\xf7F\x0dt\x14\xa3j*\xdb\xb6\xf8X\xeeH\xddlI\xf1\xa1\x92\x8b\xc7\\\xcd0\xfe\xc6/\xfe\xa2\xe7\xf4>\xd5\x0f\xcc\xbe\x1f\xef\xac2\x9f\xbc\xf9F\xa04\x88\xfc\xc8f\xfe\xd4c\xc3q\xf3t}(\x8a\x85\xf8\x81\x1f\xe5\x1f\x03\xe9\x9d\x04\xf8)A\xc5w4\x16(\xc7\x9c\xf9c\xed\xb6[\x16\xb7\xfa\xce}\xa4Hi\xaf\x10@\xd6\x8c\x9a\xf4\xa7\x12B\xc7\xf3\xf8\xf4\xb1\xf9S\xea\xbc\xa0\xab,4\x01@\xd5\x1cy\xb4\xae\xaa\xc5\x92\xd4\xa2\xb17\xa7\xb7\x8b\xbf>\x92R\x14\xf7Rcy\xf6k\xba\xa8\xea#^\x86\xed\xa8\xf0\x1f\xe7o\xdfX~\xe2=\xcd\x7f\xee\xb4N\xf2$]\xf1UD\x1d\x03\xe5\xcd\xf6\xd0P\xada\xde\x1c\nb\x890~\\\x0c\x7feE\xbb\x83\xdb \xd0\xdd\x92\xaeV\xdd\x11N*\xd9\x8d\xc5\x11\x8b\xfe\xaaw\xa8\x92\xaa\xf5O\xff\xce\x05\xf4I\xa9S\x06V\x06\xdd\x05\xe6i\xa0\x96\xadg\x8e+\x18\xc9.\xf9\xda\xd5\xa9\x04\xd6yA\xed\xbb\x8d^\xeb\xde\xd1\xba\xa9J\xe7\xe4T\xba\xc8u^7\xecB\xf4\xe3\xb7\xf0\xb5\xbd\xe4\xf6\x05A*Q\xcf\x7f\x13\xbc\xefq\xb8j\xf5H\xc8\xf2\xd13xd\x9a\x9bC1,d+\x1f\x9d\xb8\xca\x13\xed{Cv\xbc\xcc\xff+\x9b\xf0o\xce\x17x\xfbF\xcf\x876\xf2l\xad\xae\x9c\xc3\xb1&GC\xde\xc05-\x8a\xa7\x97eu]\x8a\xd5dK\x1a \x90\x1d\x1aV\xed\x1cs\xc8\xf4\xcbp\xc8\x9f\xc8+\xcch\x1e\xc8%\xb2W\x1d>\x80-\xd7K\"\x87\xb4\xf9c\x9f\xc4d\xd4\xe3|[\x15+\x15\x15X\xd4\\N\xe5\xbcl\xe7\x07H\x1d\xa8\xb9(9e\xcc\xdf\x11UX\xb4\x9b\xfa\x13\xbezi\x11\x1e)\xc7\xb4\xce\xf8/\x7f\xfe\xcbW\x8e\x894\xc7\x98\x1b~\xd0=\xec\x84\xa8x\x91_/\xbe\xf9\xfa\x9b\xe6\x91c\x08\xc9\xff2\xb2\xe9\x99M\x9e\xc29\xad\xaf\xf2\x8cK\xef4\xab\x9a]\xd5\x9c.ICO;K\xe1\xe9\xd5\xd7K\xca\xc8\xd7\xa7\xc2r\xd9\x9c\xfeM2\xb1\xfe.\x0b\xd9t\xfe\xb0\xcda\xb7#\xf5\xed3\xf8\x81Js\xdbw\xb7?\x8aG\xe1\xe7\x03\xads\xda(\xdb'\x17\xf3&\xbf\xa2\xa5\xe2t\xe95\xab\xdaS\xd9\xe2\xb3\xd5q\x19\xea\x19mx\xeb5\xe1\xf17\xbf\xfe\xf5c\xbb\xf5\x0e\x9aC\x96\xd1\xa6Y\x1f\x8a\xbb4\xdb\xd9\xc9\\Nc\x96\xdb\x94eg\x10y\xf57\x1e\xed\x0d\x8a\x9c\xe5\xac9xk\x0f~\x12\x16C\x91\xaf0\xa4+7\xd9\xca+.\xf0\x8b\x0cI\xaar\x92\xa9,\x81\xe9\xd5;\x8f_\xf2\x055#\x8c\xae\x9e\xc1^\xa8B\xc5\x01\xeeS\xb3\xba\x94a\x98?A^6\x8c\x92\xd5\xe3Y\x87\xd9\xdd\x8e\x01o\x06\x82\xd0\\\x03\xde:\x01\xaa^\x80\xcb\x14\x80\x1a;\xd0\x1b?\xde@\xfa\xde8\xffs\x7f\x12\xa3\x0d\x95\xc0\xc5\xe3\x87a|}WS\x07\x91\xf7\xb1\x91\xf4\xb11\xf3\x871\xf0\x1d\x05\x86F\xc7\x0f\x8d\x83\xef\x8fx\x8f\xe8\xd2{c8\xbbc\xd0\x07}\xc6G%CF\x90\x9fqF\xfbY\xb7\xa8\x06\x02fC\x90@\xed\xa5\x1a\xa8\x96\x02\xba\xb5\xe0\xdfc\xdb\xc7P{\xad\x06f\x1ci\xf8E\x0e!b\x07\xbc\xe8\x91{\xf2\xe8a7\xd1\x19\x1f\xcb\x1c\xd5\"TK\xc2#\x91#b\x8e\xcfU=t\xc8\xea\xb9>8\x96\x877x\xb73\x14mX\xd8\xed\xb9\xda\x80\x0d\x9a=\xd7\xf7\xfc!\xaf\xe7\xfaR@\xc0\xea\xb9>\x89\x0c7=\xd7\xe7\xc2\x82E\xe3\xc3B\xcfS\xbf\xc1a\x0e\x19\xa5\xd9\x11y\x99/$wv\xf4g7^q\xcc\xe2-\xe2\xddU\xbcR\x85\xa0c\xf2\x87\x1b\xc5\xa4\xd3:/q\xb2\x94\xa6\x03yv\xfcw\x95\xa9Sj/~\xf5\xb53e\xe7\x1b\x91\xa5_p\x03\x8b\x82\x0b\x0d\xb6\xb4\xa6\x82\x19%\x16\xae\x05\xc0\x9f\xe8\xe3\x9a\xc2\x7f\x1f\x1a\x06dSS\xean\xae\xa2\x82U5\x1f\x1cB3\xe9\xfc\xbe\xe0\x8c\xee()U\xabd\xd5\x9f\xef\xf7?\x92f\x0b\xab\x8aJ\x1e\x8e\xa2\xd2\xf3\xa2\x1b\xd7\xae\xccn,\x94\x14\x9f\xe3\xc7K~\xbc\x1f\xe8\xb5\x15\xfd]\x9c\xc4\x89\xe2\x1b\xf4\x19\xfdv\xde\x97mKp\xe7W\x9ca\xcc\xfb\x138\xce8\xf0\xbd\x07I\x7f}%V:7\xe6\xc5U\xc5\xe8Cg\xa1\x14u\xb0,KC\x04T\x00\x02+\x01\xbax\xd4\x93\xe8\xa5\xa8\x0f\x9c\x13\x99\xc6S8?\xfb\xe1\xcd\xab\x97\x17?\x9d\xffp\xf1\xe1\xbf\xde\xbdB\xfa[u8.\xe1\xdd\xfbW\x7f|\xfb\xe1\xd5\xb4\x12\x90nf\x1a\xa62\xde\xbe{{\xfe\xdc\xe7u\xa6\xd1z\x9fM\x93\x07~\xbd\x1f\xe2\\\xe4#\xfd\xa9\xd9|Pv\x16I0\xe6\x0b\x95LU\x8a.\xa9G\x19\x18\xa8Y\x02\x12<\xdb\xfb\xf4\x99p\x80\xc2\x86Bp\xf6\xcb3x'N9\xa4\xc0\x15\xe7Se\x0c\x111qB\xae\xa7\x12A\xf9\x0f\xc2\xee\xca\x12.\x97\x1a3\xfcz\x91!\x02\xd7:\x88X\xef\x00}\x9d\xef\x10\xd1}\x80=\x92\x8d\x11\xa4k\x19\"Bz\x10)A\x0e\xa4Vf\x88\x98q\xa7\x11>%4B;\x1c\xe2;\x1db;>P\xd33\x04J\xef3\x04\xda\xffV#B X%\xea\x10\xc1\xee\xc9\x1a\x13j\x88\xee\xaa\xaery\xb9\xa27aU\x0b\x1b\xf7\xe1\xeb-\xda\xa3Y\xe3>$\x16\x7f\x0c\x11\xee\xcd\x9dg\xfb\xf2V\x9c!\xba\xbc\xf4\xb90z`\x82\x9aI\xf0\xb55\xcf\xf2\xbd o\xe7eO\xfb\xa1=l\xd1E\x91\xa6\xa9\xb2\\\x14$\xef\x92\xa87\xe9\x0d\xa3eH\xb2\xf2/\xa0\x7f\xda6\x0d\xe8\x85\x98\x98\x05\x1a=\xa3\xd5\x02\xde\x96\xc5\xadr\xa2\x9068*5\xd5\xf8\xaeQGNd\xe0\xf3\xb6\xfa\x17\xff\x88\x93\xa7\xeb\x9c\xf14B\x97s4\xdd\xc6\xd3\x08\xdf3G\xf3\xcd0\x8d\xd0\x85\xd9\x06JP\xff\xc7\x08W\x08\xb6e\x86\x89\x90\x0c5\xe5\xf7y\x18T\x83\xff\x05U\x9eP\xf4\xf7bX\xad+\x0b+s\x8c\xdee\xca\xf7\xa8P7,1\x03;\xf0\x10\x19zxL\xea\x86\x11\x92\xba!\xa9\x1b\xfcH\xea\x06\xdf\xd3\x90\xd4\x0d\xe1g\x8b\xa4np |Jh\x84v8\xc4w:\xc4v|R7h$u\x83D\xf8z\xfb\x8fxcJ\xea\x86\xcf\xbb\x7f\x92\xba\xe1\x8b\xe8\x9c\xa4n0!F\xb8_\xa2\xba\xe13\x0c\x9c\xdem\xa4\x9fG}\x82\xceC\x915\xc1\x9e\x83B\x87\xe5KM\xa5\xe1csj\x10\xf7n\xc2\xcb\xbb>\xb0\xeb\x8a\x97\xb5.\xf2L\x04r\xe7#\xdb3\xe6Dx\xf7\x0b\x19\xbe\xfd\x82\x88\xd8\xf2\x0fM\xf0\xe9\xb5\xe0\x02\xe1\x83#\x11P\x17\x08\xac\x0f\xa8\xf3\x1a]\x05^\xf5\x02\xeb\x04\x11\xf5\x02\x8f\x8b\x96\x19\x11\x15\x83\xc8\xca\x01\xc6\xc9\xcb\x8cP\xd7/3\"\xdb\n\x13\xda\x0b8\xe713\x02\x17\xac1\xf4\x02\xe6u43\xc3\xeb~f\xc6CV:t \x1e\x03\xe7\xd6\x16\\\xec\xd0\x0dn\xe4\xec\x16\\\x1a\xd29\xce\x0c\xac\xcb\\p\xc1\x03\x17\xbb`G:3B\xdd\xeb\xcc\xf0;\xdd\x99\x11=\x90\xc3\xd4\xcc\x1a\xd1\x9f\x0b=3\xf5\xe1v\xf13c\x86\x8ab\x8fTC \x9d\x04\xcdx\xa0\xb5?F\x89 \xd3\x84\x0cqW\xd6\x0e\x13\xb4\xd9\x1a\x13\xa4\x0d\x13%\x0e\xb1Zn\x8d\x18\xad\xdf\x18\xf13R#v\xe0\xc0\xf4\xc1\x03S\x07\xd0$\xad\xb8F\x84v\\\x03\xef\x9ai\xc6\x04\xf9M\x90[\xb8s\xa7\x19\x08\x97O3\x1e\xa2\xd9h\x87K3\x1e\xa2\xca~\xff$;\xb0\x9e\xaa\xc1\x05\xbb<[\xcd\x08\xf3w5\xe3!\xc4\x8f\xf5\x985\xe3!j\xec\xf7\xb95\xe3!\xea\x1a\xe0\xb5k\xc6CT\x1a\xe9\xf7k\xc6CT8\xccs\xd8\x0c\xbc?\xb1\x19\xf7\xdf\xee)\xb7s\xa4\x03sP\x99vgg3\\\x99+\xcd\x88<\x06\xc7\x1e\x7f\xbf\xa0\x8bg\x10\xefIc\xca\xc9<\xdc.\xaf\x91n\x9c\x18D\xae \x12\xe9\xc6\x19=\xae5\xe2\xa7\xa2F\xec\xc0\x81\xe9\x83\x07\xa6\x0e\xa0\x87\xbeqb\xb2\x9e\x9a!%\xe7v\xf27\xc3\xeb\xfao\xc6\xa4\x892m\x9a\xe8\x95\x14\x95c\xd5\x8c\xc9\x03-\x8c\xdb>Dl\x96V3\"s\xb7\x9a\x11\x99\xd1\xd5\x8c\xf0<\xaffL\xca\xfejF\xfc\xd5[b\xaeL\xb1f\x04\xe5\x8f5#\x9aG9\xc4\xe4y2y9\x0e f\x1cc\xb6\xea\xc7Y\x1a$\x82\xb9eC\xcc\xd6\x86\xa8.\x98r\xd9\x92\xc0f\xcc\x8d(:/\x818\xf3\xe8\x9a1\xa5M\x88\x9c\xbbA\xe5I\xe5\xec8?o\x9b\x897\xa8,W\xd6^\x13\xba5\xa2\xa1\xe8\xeb^\xc4\xbe\x1f\xb3\xdbwm\xc1\xbf\x13{\n\x8a8\x01EHA\"F\x16\x12\xd1\xeb\xf8\xa4\x05d\xc2\xe2\xb1?,/.\xe9ml\x85#\x84\x0b\x93\x04\xccAW\xdf\xfc\xeew_\xff\xef\x98W'\n\x1a\xa6 \x1bDb\xd1l\xff\xcd\xef~\x7f\xf9\xf5\x97X\xfd)'\xb2w\x87e\x91g\x7f\xa0\xb7\x03\xc5\xde%\xbdmzy#\xe3\xceQ\x87\x86\xca\x04{\x7fl\x17\xa4\xc0RB\x89\xb7CL\xea\x94)\x97\xf9V/\xbc\xaf\xf3\xaa\xceY\xf4<\xbe\xd7\xba\xebZ\x87T6r\xb9\x89]h\"\xd7\xf1 \xc2\x8c\x9e\x97\x91+x\xa4@a\x82Pa\xda\xda=A\xb80E\xc00u\xd5~\xb8\x8a\xc7\xaf\xd7w\xb6ZO]\xab\xa7\xac\xd4\x13:\"n\xa5\x839\xd6\xe8{\xafu\x9c/\x8aFdu\xc3\xaa\xca\xefaUy\x817\x82\x05\xd6*\xac6\xcb\xdb\xbf\x92\x92\xe5%\xbd\x08\xbb\x11\x85\xdd\x84\x02n@\xc1\x8b{\xf8\x92\x1e\xbcC\x06\xf6\x80D\xc4\xda\x17\xbc\x1f\x06\x0b\x0b\xa2\x04\x06\xb1\xbb_\x94\xe0 Nx\x10\xbf\xd7\xddo5cv\xb6;\xd8\xd3\xe2w\xb3\xb8\xe55J\xc8a\x8b\x99\xc4\x84]\xeb\x1e\xea\x18\xb7C\x05V,\xb0J!J\xf0\xc8\x9a`\x15\xdc\xa1\xba\xd3\xd7|\x17}!|\x01\x9f\x0bW\xc0\xa9\x1e\x8a*D{\xcfg\x960Fw{\xe1\x9d\xc8*\xd8\xe5MA\xc9\n\x88\xf4C\xf4\x96'\xfd\x14M\n\xd3\x1e\xfd\xd7,x\xef\xea\xee_\xc9}\xa7\x0cTobF\x93\x87(#\xbf\xe3\xa3\x0e`\xc8/~\x9a\x8bWl\x80\x12\x1d\xa0\xb8\x06(\x01\x02~\xab\x08\xa2\x98\xa0Z\n\xe8\xd6\x02\xa0 \"\xb8\xfe\xd4\xc0\x0c \x0d\xbf\xc8!D\xec\x80\x17} 9\x03E\xc3\xc0\x10.0Gi\xef\x01\x1a9\x14\xb0\x03!\x88\x02\x11\xd0\x198ZC,\x81!\x92\xaa\x10IJ\x08\xa7\x1fL\"\x1a\xe0\x8f\x8ds\x91\x07\x82h\x02\xc1\x84\x80\x80Q\x130\x81\x91'\x99\x88\x8f\xe3N0hc|D\x0d<\xcd\x0f9:a\x8d\xe6\xc2\x04\x8e(\xc9l\x10\xc6\xd5\x08a\xf2\xb6\x98\xb1-\x05\x92\xe3C\xdc\xb8~m\n\xda\xe3n\xd2\xd9k\xcf\xf32\x13\xd4\xf7fW5O\x9b\xd5%\xfcz\xf1\xdb\x7fM\x99j}\x9b\x8c\xbf^\x80\x0b6\x80\x9e!z~x}\xf1\xbd\xa1\x02\xe6\xfe$n\x02\x00\xda\xa5\x1fR\xa6\xda!\xfcN\xf3\x88.\xbd\xb7KR\xcaT\xebo \xe07\xbctW\xf2\x8a\x1cB\xc4\x0ex\xd1\xdf\xc5] \xef\x0e\x8dj\x11\xaa%\xe1\xce\xcc\x08\xb7\xe5\xb9\xaa\x87\xf6z\x9d\xeb\x83cyx\xfd\x7fS\xa6Z\x84\xd7\xec\\_\n\xf0y\x9d\xeb\x93H\x8f\xd5\xb9>\x17\xe6o\x8a\xf7,E\xd5\x0f\x7fV\x1b\x7f\x98\xdf\xa1d~\xd2|\x93\x97D\x1d\x9c\xda\xc7\x1c%\xa9\x02N\x94p\xf8\xad\x86\xf0\xfb\xd8w4\xdb\xfe\xe6\x1bUcg\xdc\xca\xb3\x12>\xd0rE\xeb]^\xb2\x13`[^\x17\x15X\xff\x13\x17u\xf3\xe9\x04\x96\x07\xa6\x0f\x82\xe7/\xffp\xe2(\xeeZ\x1c9\xafh\xcd g\xc0\xaaq]\\U\xe1g\xd3%e\x8c\xd6\xf0\xf1\xff!.\x84~_\xd9\xaee)\xef\xaf\x00j\x0e\xe1\x07r\xca\xfb\xeb:\xe3\xa4\xbc\xbf)\xef\xef1\xb05\x81\x94\xf7\xd7\x82\x94\x88G!%\xe2\xe9!%\xe2A\xbd\x13\x14\x90\"L\xf3 \x81\xb1\xc1\x0f\xe1\xd72\x0d\x11\xb8\xd6A\xc4z\x07h\xe5H\x87\x88\xee\x03\xec\x91l\x8c \xcd\xd5\x10\x11\xd2\x83H r u\\C\xc4\x8c;\x8d\xf0)\xa1\x11\xda\xe1\x10\xdf\xe9\x10\xdb\xf1\x81z\xb3!PZ\xb4!\xd0\x06Q\x8d\x08\x81`U\xd2C\x04\xdb\x8b5&\xd4\x10\xddU)\x11O\xa8\xc4\xe2\x8f!)\x11\xcf\x17\xd0?)\x11\xcf\x17\xd19)\x11\x8f 1\xc2\xfd\x12\x13\xf1\xa4\xbc\xbf&$u\x83BR7\xf4\x90\xd4\x0d\xa8w\x92\xba\xc1\xf7\xacF\xe8\xed3\xa2\xfb \xeel\x91\xd4\x0d\x0e\x84O \x8d\xd0\x0e\x87\xf8N\x87\xd8\x8eO\xea\x06\x8d\xa4n\x90\x08_o\xff\x11oLI\xdd\xf0y\xf7OR7|\x11\x9d\x93\xd4\x0d&\xc4\x08\xf7KT7|\x86\x9e\xec)\xef\xaf\x1d\xa1\xc32\xe5\xfd\xf5\x15\x9a\xf2\xfe\x86\xd4\x0bR\xde_\x0f\"\xdb\n\x13\xda\x0b8W<3\x02\x17\xac1\xf4\x02\xe6u\xdb3\xc3\xeb\xccg\xc6CV:t \x1e\x03\xe7$\x18\\l\xca\xfb\xebsK4#\xd4Y\xd1\x0c\xbf\x0b\xa3\x19\xd1\x039L\xcd\xac\x11\xfd\xb9\xd03S\x1f)\xef/\x02S\xd6\xfe\x18%&L\x132\xc4]Y;L\xd0fkL\x906L\x948\xc4j\xb95b\xb4~c\xc4\xcfH\x8d\xd8\x81\x03\xd3\x07\x0fL\x1d@\x93\xb4\xe2\x1a\x11\xdaq\x0d\xbc\xa3\xab\x19\x13\xe47An\xe1\xae\xb2f \x1ch\xcdx\x88f\xa3\xddW\xcdx\x88*\xfb\xfd\x93\xec\xc0\xfa\xfd\x06\x17\xec\xf2\x136#\xcc{\xd8\x8c\x87\x10?\xd6\xff\xd8\x8c\x87\xa8\xb1\xdf\x83\xd9\x8c\x87\xa8k\x80\x0f\xb4\x19\x0fQi\xa4\x17\xb5\x19\x0fQ\xe10?l3\xf0\xde\xd9f\xdc\x7f\xbb\xa7\xdc\xce\xfd\xbe\xcc\xe1+`\xca\xfb+0\xc3@\x08?\xe6\x06\xf1\x9e4\xa6\x9c\xcc\xc3\xed\xf2\x1a\xe9\xc6\x89A\xe4\x9a \x91n\x9c\xd1\xe3Z#~*j\xc4\x0e\x1c\x98>x`\xea\x00z\xe8\x1b'&\x0c\xad\x19Rr\xd8<\x0f}x]\xff\xcd\x984Q\xa6M\x13\xbd\x92\xa2\x82\xde\x9a1y\xa0\x85q\xdb\x87\x88\x0d\x9bkFd0]3\"C\xec\x9a\x11\x1ex\xd7\x8cI\xe1x\xcd\x88\xbfzK\xcc\x15\xba\xd7\x8c\xa0\x80\xbefD\xf3(\x87\x98p<\xed\x1c\x13-\xabV\x86y\xea>\xdb\xb8\xce\xa8*:PP\x1dV\x94\x91\xbc0\xac\x96\xaec\x81\xf58\xe09\x06\xf8\xb6\x7f\xfe\xfa\xc5\xa1\xb6\x1e\x00\x11\x8b\x96\x7f^I<\x87\x8f\xef_\x9f\xd6\xb4\xa9\x0euF\xa1$;5\xd9\x0fe\xfe\xf3\x81\x16\xb7\xc0W\x00\x96\xafs\xa5\xec`2H\xac\xb5@\x99_\xab\xceI\x91\xff\x95\xae\xec^\xfc\xfb\xbabUV\x15\xb0<\xac\xd7\xb4\xd6\x9d\xb6\x90i\xc3d\xdb`wh\xda\x15 \x88\xfdDUP\xd28\xc2\x87U%\x85G\xa7\x8f \xdb\x92\x9ad\x8c\xd6\xfc+T\xdc\xfc\xa0\xa1\x9b\x1d-\xdbe\xf7\xe3\xfb\xd7\x8f\x1b\xd8\x13\xb6\xb5\x96&*\xd5\x06\x87\xb2\x7f\x95\x17\xb7>\x14\xc5-\xfc| \x05\x97\xe0J\xcaW}JH\xf2 i\x9c\xf1\xb5>\xf1\xaa\x9cn\xaajS\xd0\x85\x90\xd9\xf2\xb0^\xbc<\xd4\"L\xc2\xa7\xafdKD\xb1\xcd\xb6:\x14+X\xf2m\xc3Z\x1e\x81\x8c\x94U\x99g\xa4\x10s\xc8\xfe\xe5't\xb1Y\x9cp\xd1\x8a\x00\x10\x8f\x16\x8f\xf8\xfa%\xd2\xc9e\x19\xdd3\xba\xfaj\xf1\x0b\xfb\xebg%\xec\xb9\xb0\xf3\x8c\x9e\x00\xa3d\xd7\xc0\xa19\x10.\x0e\x19@k\x9f\x17\xbc\xa6\xac\x12\xc2X\xe6%\xa9\xed\x07o\x91\xc1\xeevOU*9\x11\x12\xd0\xfa\xb0\\\xebT\xc6\xc4C\xd3\x8fL\xcc\xe8\x8d\xe8\xea\xe7\xe5\xed\x02~\xac\xae\xe9\x15\xadO\x9c\x87\xaa\x8f\xef_\xebC\x1b/\xca\x19AP\xac\xa0\x14>m\x19\xdb\x7f:\x91\xffm>\x9d@UCY\xa9_O\xc4h\xccH \x95\x98\x9d\\\"\xf6\x02)\x83\xc3^\x85fv|\x97\xd6W\xb4\x96\xa2\xd9\x91\xbdJ9)j\xce\xaa6>\xb3PY\xe62\xdb\x1d\xb1+\x19\xd7UQT\xd7\xcd3G\xdf\xfe\x12\xce\xd6]\x8b\xf8\xb0\xd0q\x01\xdbF\x8b\x03M\xd3\x1cvt\xe5\x08\xf8\xf6K\xbe9\xfd\xf8\xe1\xc3;\xf8\xe1\xd5\x07\x9d_\xf0\xe3\xfb\xd7r\x8e\xdd\x8a=\xd9~\xee\xf9\xf3xZ|\xb8\xdd\xd3\xbf\xfc\xf9/\xd6\x17\xc4\xf1\xf8 \xc6\x83\x1coj\x1b9\x91a\xdd\xaa\xd5!\xa3@J\xb9\x85\xd9\xc9u\xbf\x84\xe7]\xa4\x92F$T$\\f\xf2\xd8\x90\x91\x8c\xaf-Uuy\xd8\x83\xf2\x8d\x84%i\x1c\xd4\xc7\xca\x17\xda\xe5\xe3\xfb\xd7\xa2\x8e[r%\x86\xe0\xae7\x87Vr\x12\x11\xdd$\xfe\xef\xab*_\x01)]6!YA\xb1|\xd4t]\xd5\xf4D\x17\xc0\xcb%,_\xe6E\xcen\xa1\xa4t\xd5\xc8\xe3\x10\x88%\xaf\xber\x928\xab\x92/\xb3\xe5\x86\x8a\x97\xc4\x9c]\xc0\x93\x8f\x0d\xd5\xc1\x9c\xb8\x94\xf8\xf0\xe4k\x96\x1c\x9f\xa4$\x1bW\xeb\x975%\x97|\x0dR\x05/\xbe\xb2\x8f\xa87\x15\xa3\xcfd\xde\xd5\xf5\xa1\xcc\xe4\x0c\xe3\xedPkWv\xa8kZ\xb2\xe2\xb6\xa7\xb0w,\x97\"\xdf\xe5z\x9dg9)<{\xd9\xf2\xb0\x86\x9a\xf2\x9d\x88\x9e\x88\xf869\xd3\x1f=4TF0l\xe7\xa5\xb5\xa8%\xdd\xe4e\xc9\x1b\xcb\xcf\xb5\x8e\xcd\xe5vO\x17r\xfc\x93}\xde,\xb2j\xe7Z\x8d\xcf\xc5Lm\xa0b[\xb9P\x94\xe3U\n\x9e\xa8x\x8dt\xb7g\xb7jj\x7fe\xdf\x04\xc5qt\xe9X\x94D\xa3\xc5\xe1<\xdf\xed\x0b\xca7Y1a\xa0\xd9\xd3,_\xe7\x194tGJ\x96g\x16\x1e\xab\x98\xab\x13\x8e@\x88\xfb\x1a\xf6\x94\xf4\x13_\x8e\x96\x14\x88\x8aF\xd9\x1dp\x8e\xce1:\x96\xd1\xb2\xba\xb2\x8fi%\x025\x15\x8c t\x115\xfb\xf4\xbc\xbc\xfd\xd4]\xd8H \xa4^\xe6\xac\xe6\x93\xd8^CcQz\x8f E\xa5\x86\x1e\x10s\xd7\xf2\xd5Yl4\xb2\x86\xcb\xe1\xb1pt\xfckOu\x96\xa1\xf9NO\x9c\"_\x8aj\xab}\xa4\x81\xe6\xb0\xdfW\xb5\xd8\xc1\xf7$\xbb<=\x94\xfc?|\xdf\x96\xe3\xc2<\x83\xd4Fo?\xd8Tk80\xb9\xb0\xe9\xe5\xa1\xe1\x0b+Y\xadr\xb9V\xc0\x86\x96\xb4\x16\xe1J\xe5EK\x87\xa72\x96\xc7\xeb#\xbb\xd0\xfc\xbdW7\x84\x0f~\xf8\xfa\x19\xbc\xe3\xf5\xe7\xeb\x82j\n\xe9'Nx\xf1\xab_9\xb6\xc9\xef\xab\n\xd6U\x05\xdf\xc2b\xb1\xf8?\xd6\xc7xeHyk\x7f\x80\x94\xb7\x0b^\x8d\xef\xebj\xf7d]U_\xd9\x1f],\xec\xfb_\xbe\x86'\xbc\xa8\x8f\xa2!\x1f\xaa'\xff\xc2\xcb\xfa\n\xfe\xe6X\xc3]\xe5\xfd\xdd-\xbbo<\xb2\xfb\x0frEf\x13\x1e|+\xce\x86\xfc+3H(o\x9e|_U\x8b\xac M\xe3\x11\x90\xac\"\x7fI\xb6\xb1\xf7\xa2\xbd\x0e\x7f\xb7\xferz\xca\x875\xae\x8e\xe7dG\xf9\xd1\xe9\xb9\xac\xed\x86\xb2\x97R\xa5pV6\x8c\x94\x19}\xf2UL\xe5\x8d\xe5\xb8\xda\xe2\x1c\x05\xbf\xf1\x8c\x82w\xb7l[\x95\x8eq \xeb\xf8}U=Y,\x16\xf6\x8d\xad\x1d\x03O\x9c\xcf\x88y$FH\xec\x00\xe1\x85\x9cI\x89\xbf|u\xfe\xe2\xfd\xd9\xbb\x0fo\xdf\x7f\xe5\xd2Wvs\xce\xfda\xf9i\xa74\x7f\xeb\x91\xe6\x0f\x95#\xfe\x1e\x97\xe4\xb3o\xe1_\xf6\xcb\xc5\xf7U\xf5\xb7\xc5ba\x1f\x87\xbc\xd2'\xfc@\xcd\xdf \xe5\xed~\xb9xC\xaf=\xf5\xcf\xd7\xe2\x8d\xff\xf5-\x94y\xe1\x1cxN!;\xa6\x87\xfb\xbdQ\x03\x1d\xc5\xa8\x9a\xca\xb6->\x96;R7[R|\xa8\xe4\xe21W3\x8c\xbf\xf1\x8b\xbf\xe89\xbdO\xf5\x83\xb3\xef\xc7;\xab\xcc)o\xbe\x11(\x0d\"?\xb2\x99?\xf5\xd8p\xdc<]\x1f\x8ab!~\xe0G\xf9\xc7@z'\x01~JP1\x1e\x8d\x05\xca1g\xfeX\xbb\xed\x96\xc5\xad\xbes\x1f)R\xda+\x04\x905\xa3&\x0d\xaa\x84\xd0\xf1<>}l\xfe\x94:/\xe8*\x0bM\x00P5G\x1e\xad\xabj\xb1$\xb5h\xec\xcd\xe9\xed\xe2\xaf\x8f\xa4\x14\xc5\xbd\xd4X\x9e\xfd\x9a.\xaa\xfa\x88\x97a;*\xfc\xc7\xf9\xdb7\x96\x9fxO\xf3\x9f;\xad\x93\x14wi)T\xc7\x8e\x8b\x91L\xfap\x1a\xd2\xdcf4\xad\xf6\xb8p\x06\x91w~\x00\xbc\x1f\x11O|\xe3\xe09 \xf4T\xdd\x10sF1\xf7\xc4\x85\x9f\xefC\xceH\xee\xf3|f\xd8\xf3\x16\x12\xa1\xe7SE\xde0Z\n\x9aK\xd4\xfb%e\xd7Um\x91\xa8\xe7]\xc4\x90\xb2\xbe\x9bmIYR\x93\xa9\x19\xf1\xb2W\xab\xb9\xab\xca\xfc\xd2FX\xf4\x14.\x94\xc3w6M\xd8\x8d/\x9d\x9a\xb7\xed\x00\xf5>\xf3\x13\x9b\x1c\xe5\xf4B\xcc\xdb\xd7\x85 \x8b\x8e\xd8\x86bdO\xf6\xfb\x8b\xe8\x97\xa7\x0c\xc7M\x8ea?[__\x1e\xf2bu1\xdc\x0f\x03^\xdfT\x98\xe5\xd9\xf3\xf5\x15\xdd;\xbfn\xe7t:\xf9\x9c\xde1\xef\x1b\x0c\xea\x19\xc2\x9cLZ\xc4\xa8\x17\x8fI\xde\xe1\xaeZ\x1d\n\xea&( \xb2\xa6D}T\x95k}\xbeq\x93J\xc3\xbe\x99miv\xd9\x1c\xcc\xe7\xfc\xf6\xa9\x9fd\xcd\xf2\xde%\x92\x1f\x82\xff(kzf\x8e\x92*\x8fh\x17\xcd\xear\xd2\xe0k+\xf1\xf8\xde\xd2\n3Z[\x01S5\xc7,\x9b\xcf\xf2\n\x18\xeb+L\xb0\xc0Z\x0b\xe4\x0f\xba\xac\xb00\xb7%\x16\xbc\xd6X\x88\xb5\xc8ZK\x93w{\xb7\x9a\xc3o\x99\x05\xb7u\x16\xa2,\xb4\xd6\xa2\x9c\x96[\x88\xb5\xdeZK\x93'd\x87>q>+.\xa0,\xb9\x10a\xcd\x850\x8b.\xc4Xu!\xd8\xb2\x0b\xeeU\x04<\xd66\x08\xb0\xb8a\xad\xbc\x10c\xe9\x85Pk/\xb8\x1b\x1ec\xf5\xb5\x16\xd6\xb3\xa9b\xa7\x0c\xce\xfa\xeb\x9c\x10\xe5\xc6m\x01\x86y\xad\xc0\xe0\xb3\x04\x83\xdb\x1al}'\xd6J\x0c3\x8e\xdd\x00k1\x04Y\x8c\xc1z@\xb9\xaaX^n.\xf6\xd5\xb5-\x9e8Jg\xe3\xb2uJ\xe8\\\xef\x17\xfb:\xaf\xea\x9cyl\x85\x93\xbe6\x0c\xde\xabM\xad\xc6\xd0\xbdF\xb3\xb5\xc6\x9el\xf2R\xf4\xc5qe\x07\xdf\xe8\x1e\x94\x16\x00*\xb47\xbd\xbf\xea\xcf\x99,\xd5\x12\xcce\"\xf5D2\xa77\xccn}\xf5\xca\xd3\xabk\x1b4\xf5\x7fl\xfa+]\x0b-f\xfeO\xa5\xae&M#\xf5\xf3\xef\xc8\x86\xbe\xa7?\x1fh\xc3\x16\xf2wKa?\x1fh}+\x8a\xe1\xc5rIR\xd8U\x0d\x03*\x94\xbeB[\xbc\x803\xd6[\xab\xf6\xec\x16r\x9b\x16\x87miM\x85\xb5\xa0\xac`W\xd5T[\x07L\xfb3\xab\x18\xb1\xd8\x98\xd1\xc2t\xa4mP\xa1\xa8\xad\x8a@\xf1y!E\xf1\x8f\xf2\xb0[J\x9d\xa4v\xa1\xea\xf9\xeb\xd8\xda\xdb\x17tV\x1dJv!\n\xb3-c\xd7\xa4\x81\x86\xb2\x13\xc8Y\xa3m5\x0d\x1cJ9\x98WR\x1d}\x9d7\xc3\xf1\xe1\xf5\xf7>\xa6{\xa0\\\xbfG\x05\xb5\x8e\xe0\xfd\x82\xbe\xbb\xfdQp2\x92\x1f\xb8F\xf2\x03O~\xe0\x1d\x92\x1fx\xf2\x03\xef0+{#\x84\xb9\x11\xc4\xdaH~\xe0S\x19\x1a\x11\xec\x8cY\x98\x19\xe1\xac\x8c\xe4\x07>\x85\x85\x11\xc2\xc0\x88`_$?\xf0\xe4\x07\x9e\xfc\xc0\xb1\xec\x89Y\x99\x131\xac\x89\xe4\x07n{\xcc\xcb\x8e\x08`F`<\x88C\x18\x11\xc9\x0f<\xc6\x95\xda\xc7xH~\xe0xf\x03\x92\xd5\x80a4\xe0\xd8\x0c\xc9\x0f\x1c\"\x19\x0b\x01l\x85\xe4\x07>\x03\x1b\xc1\xcbD\x88e!X\xf7\xcd\xe4\x07~\x84\xe4\x07\x9e\xfc\xc0G\xf8\xff\xd8{\xd7.\xb9q#M\xf8{\xff\x8aX\x9d\xb3#\xc9.\xa5Zj\xb7gF;=g\xd5%\xb5]\xb3\xdd\x92\x8e.\x9ew_\x1fo5*\x13\x99\xc9)&\x99&\x99u\xf1\x8c\xff\xfb\x1e \x00\x12w\x82$\xe4\xee\xf6\x02\x1f\xecV\x16\x19\xc45\x10x\x9e\x88@\x8a\x98\xdcX\x0f\x81\xc9\xde\x01\x93<\x03r\x1c\xf8L\x0f\x80\x1c\x07.\x8b\xdc\x85\x8f\xa4!\x07\xda\xd1F\x8b\x06g\xebLe\xa6W\xd7T\xdd\xebB\xa4\xae`q\x89P\xa1\x0d\xedNM\xc5a5A,\n\xaa\xac\xa7|9\x18\xb63P#\xce\xe1\xb2e?F\xe3\xbee\xdbZ]\xf1\xd3r\xbd\xdd\xb6\xb4c\x96\xba^]P\xc0|\x83\xa9/\xaa\x17\xf8-\xe5\xb7\x86\xfe\xf9T4t\xf3\x02\xb6\xa4\xd4hK\x0fL\xe2\x84F\x1c\x9d\x88\xf5\xf3\xf5\xa3\x01K\x88\xc6\xf0\xae\xacN\x07\xda\x14k\xf9\x1b_mkR\xb1\xf6 .\xb4\xa7\x95\xec\xf8S\xd5Cq\x86\xd5z\xc1\xa5\x95\xb4m\x87.D\xf0\xea\xd4\xb2\xae\xbe\xa6\x13\xfbS\x17\xff\x99;\xd7 \xc5\x1d\xdd[\x16\x87\"\xb6w\xf9\xb3\xbdS\x87\x87+G\x98V\x9d\xc1\x82v>\x95\x06}\x8b\xa0\x8c\xfa\xd3\xc5\x16J\xba\xed\xa4o\x81p6\x90\xa6!G\x98q\x81\xe0GX?_\xdd\x03%\xeb=\x90\xe3\xf1'\xecE\x95\xf1\x1f\xde\x0f\xf5\xa5\xf2\x06\xebQ>Ck\xe8\x9a\x13\x05\xf6\x1fE\xb5)\xd6\xa4\xa3=\xd7$z\x90?(&\x92*\xae\xa8\xd6\xe5ic\x18~\x04\xbf\xd2\x93}\xc6\x88q\xeaX\xc1\xa0\x99\xeaVr\x96\x93\xa1\x04fS\xcer\xe2x=g9\x99\xe0\xe7\x91\xb3\x9c\xe4,'CI\xea\xbf1\xc5wc\x92\xdfF\xcer\xb2\xd4Gc\x86\x7fF\x12\xdf\x8c\xe9~\x199\xcb\xc9\x12?\x8c)>\x183\xfc/r\x96\x93\x9c\xe5$g9\x89\xf5\x9fH\xea;1\xc7o\"g9\xf1=6\xea\x1f1\xc17\"&?\xc6\x14\x9f\x88\x9c\xe5dN\xa2\x901\x9f\x87\x9c\xe5$\xde\xb7!\xd2\xaf!\xc6\xa7!\xce\x9f!g9\x81\x99>\x0b\x13\xfc\x15r\x96\x93\x04\xfe\x08\xa3\xbe\x08s\xfd\x10\xbc\xfbf\xcerb\x95\x9c\xe5$g91J\x8a\x8c\x13\xb1>\x02\x93\xfd\x03&\xf9\x06\xe4,'3}\x00r\x96\x13Yb\xb2\x9c\xec\xd58k\x10\x91\xe8\x06\x98?\x04\xa2w\xcdiB\xba\x85\xd1l\x0b9\xaf\n\x8c\xf7b\xce\xab\xf2\x19;w<#H\xce\xab\x92\xa2\x17s^\x95\x9cW\xe5\xef+\xaf\x8a\xc2\x0d\xb2?\xafI\xd5\xd5+z\xac\xd7\xfbvu\xf3l\xf5\x9a\xfd\xd7E\xb5\xad\xf1\xdd\xceto\xb0\x1d\x1az\xaf\x01\xc5\x15\xc4\xb1\xee\xda\x8e4\xddeW\x1ch\xf0\xb1aqnHG\x9f\xb0\xe7\xc5_6\xc2\xc8\x08\xbe.H\x9fK\xde\xa0\xc8\x0f\xa9J@{\xffrq\x9dQ\x0c_OE\xb5Cytc\n\xd3\x07\xceU\x053SKT{\xcc\xa1\xe5\xfeF\xe7(\x9d\x0f\xb3\xb4>\xa2\x87zI\xef:k\xc3\xab\xd1\xb2\xe96\xb9.(\xc9\xac\x84\xee\xbdcy\xedXr\xb1\xf8\xbct\\S[\x15\xe4 \xa5\\Sf\xe4\x15\xff\xf4\xc1bO\xfc\x11\x81\x9ea\x1ay+\xe4\x80:\xbe,\xa2\x85\xbb\xdb8\xb6PT\xf1\xa6\xd6\x87\xc8E\xa3\xca\x88n\xbf\xcbY\xd69\x8b\xdcs\xc8\xed\xc4\xea\xad\x83\x97\xc8\x0c;\xab&qRM\xe5\x9c\x1a\xe5\x94\xeapF\x1d\xed\x14\x87\xf3\xa9\xcf\xe9t\x89\xb3i\xa4\x93\xe9t\xe7R\xff\x18\xaaGA\xac\xb5\x06N\x14\x15\xec\xde\xbf;\x1f\x9cJ\xc5\xc9\xbfe\xc6UC\x0d\xebc]7\xf8 7?\x1alI\x0f\x16\xec \x9alZ3\xb5\xb6\xc9'?\xd4\x87\xa1RN\xac\xa0\xa1G\xca\xe9\xd3oI\xd3\xf7\xac\x0f1\xd3\xda\xc8'\x97\x89\x95\xb1c?ZD\xab+\xd2\xd2\x15\x9f\x90+\x91\xedm\xa5\xd47z\x8f\xd0\x16^p\x97\xd2\x16\x9c\x7f\xa0R\x1c\xe7\x93\x1e\xe6\x9dGy|8\xb2\xe5\xc6\xaa\xf2\xb7=\xc9\x11|\x10\xb7\xec\xfcm\x1f\x95\xf4.\xe0'\xda\x04=\xa0i\x96\x94\xc7d\xeb\x90\x9c\xe6\x88\xac(\xac\xb0\x95\x19jg\xd2#\xac\xe3\x00\xbb\xf4\xf8j\x1dY\x97\x1eX\xf9#\xfa2W\xc5\xeb\x87UqF\x9c\xdf\xbd\x0b\x0e\x99\xca\xc1R]\x99\xf6\x113p\xc0t\xafp]\xeb\xe3\x9ea)\xfd\xef\xea\x1a\xda\xfa@/{d\xd6\xa9\xee\x15U\xad\x0e\x9c\xaa\xef\x11\xe2\x15\xdbw_ \xf5\xc5\xd06\xa8mi-RyR\x87\x08Q\n\x04\x00\xaf\xef^Dl-\x13\xcf\x1f\xb6e\x97b\x83Yl\xc9\xa5\xb0\xe2F-8\xa7~\x89\xd3\xae\xe6\x90\xc3Tk\xcdk\x9f\x0d\xf2\xa6\x99f\xee\xc1Hf\x92-1\xc7\xe2L\xb1h3,l\x82\xb1%i\x12;/\xab\xfb\xe8\x05\xd1Y\xa1,\xcey\xe1\xd7\x8bs\x03T\x0c\xfb\xd7\x1d\x922'\x08\xc5\x0e6\x99\x15^\x12\x08#q\xf9;D\x04\x8e\xcc\x0c\x15QCB\x14i\xa6\x0f\xe5\xe4p\x90Y\x01 F\xa0\x87\xde)\xda\xf6;'\xc8\xc3\x08\xe6\xd0\xa5\xab\xc2\xe7\x06r\xf8\x036\xe6\x84h\xb8C1\x16\x04_D\x85[\xc4\x85U\xcc\x0c\xa4\x98\x1b:\xe1\n\x91H\x12\x14\x91.\x0c\"I\xe0C8\xd4a^p\x03\x1feW\x10\xc3\xf4\xb0\x85@xB7\x16\x9007\x04\xc1\x19j0#\xb8\xc0\x08'\x98i\x97i{\xd3\xcc\xb0\x80\xc1\xfd\xdf\xec\xbf/\xfc\xdf\x9b\xe7\xec\xefp\xec\x17\xf2z\xf7\xfe\x85\x0e\xfd\x0b\\\xf8]\xee\xfa\x0b\x1c\xf4\x1d\xce\xf8s\xdd\xef\xbd>\xe3\x0e\x17\xfb\xa0S\xbd\xee\xd7\x19\xe78\xaf\xbf\xf3W\xb3-\x93\xdd\xe1\xc7\x1a\x13ryw\xd7?\xe8\xd6\x1e\xe9\xc8\xae:\xd5\xba\x9c\xd5\x97\xb9\xa7\xcfsH\xb7\xfaz\x86\xd3\xb9\xd7\xcd\xdc\xedX\xees%\xb7:#\xc6]<\xe4 \xae\xb8\x84\xcft\x02\x1fq\xfb\x8es\xf4\x0e\xbav\x1b^\xd0\x9ax\xe3o!\x17\xed\xf9N\xd9V\x05\xc4\xbff\xb9Z\xbb\xdc\xaa\x978R\x1bN\xd3s\xdd\xa4-\x97\xe8\x05N\xd0\x9a\x99\xebrq\xd6\x9c\x9a\x97\xbb1\xcfw\\V\x9c\x94g\xb9%;]\x90\xc7\x9d\x8e\x83n\xc6\x11\x8e\xc5c\xae\xc4\x9a_\xad.=\xd6Y\xd3\xef \x1c\xe1\x12<\xe2\x04\xdcWo\x81\xa3\xaf\xe6\xd4\xbb\xc0\x8d\xd7t\xd9\x9d\xe7\xa4k:\xe4\xa6q\xc1\x9d7rA7\xdb\x90c-\x07u\x9a\xe3z\xb5#\x1d\xbd%\xf7\xab\xe6Tu\xc5\x81\xae^\x0f\xb9[\"\xb0\x1d#\xd3\x8b\xc3\xa2\xd63\xbb\xe0\x03fF\x17W&\x17\xd1\x83A\xd9V\xc6\x96\xee3\xf8zt\x9eL,\xce\xd3\x03\x96\xb1\xc8\xddD\x80\x16\x96P\xa6\x954\xe0\x16\x96\xf9\x10\x97%*\x909e&\xf0\x85e6\xfceI\x1a\xcb\x902\x19\n\xc3\xb2\x10\x10s\xf4\x967\x13\xcaBp\xcc\x92\xe7\xcd|\xb2\x10(\xb3\xe4\xf92\x9d\xa4\x83\xcf\xb0,\x00\xd1\xa4\x80dP\x1a\x96\x99\x80Z_\x9bd\xb0\x1a\x96$\xe0\x1a\x96t\x10\x1b\x96$@\x1b\x96\x98\xcc\"\xf3A7[\x8bz3\x89,\x81\xe2,a\xee\xcc!\x0e[\xc2\xa5\xa5\x96\xc1t\x968W\x86\x90\x19\xe0\x1d\x16gF\x90\xc0V\x1c\xc8\x002\xb6K\xcf\x84\xf6l\xc5\xe5\xcd\xf4\x11\xaaA\n\xb0O\x13\xe8\xca\xe8\xb1\x10\xf8\xc3\xb2\x1c\xfe\xd3\xc4\xd9\x1b\xeeB@P\x93\xd592u\xcc\x85\x08\xb1\x8c$\x97\xf0f\xe4\x88\xc8\xc4\xe1\n \x8f\x03\x10\xfd\xef\xff\xd5\xdd\xf6\xc9\x90\"\x96\xb8\xc6\x8fg\xd4\x08\xb54\"\x83F$\xe0\x88\xc5\x8e\xe5\xf7g\xcaX\x06Ab\x99\x07Db\xf1\x8c\xd6\x0cP\x12\xcbH\x06\x8cP\xe6\x8bp\xc6\x0bO\xe7\xc5@\x96X\xc63[X\x19-f\x82\x98X\xa22X\xc4\x01\x9aX\"2V8S<8>\xeb|n<#\xc5|\xd0\x13\x8b\xa7z\xdao\xc9`P, \xc1P,\xc9 Q,\xa9\x80Q,\xfe\x0c\x10\x8e\xcc\x0f\xcb\xa1R,I\x00S,\xe9`S,\xe3\xe0)\x96 \x84\x8a%\x02H\xd5\x1e\x1c\xc9\xcc\xe0HV\xe0\xfaj,L7\x96\x81!\x02f\x15\x0f\xc6d\\0*\x9f\nx\xc5\x92\x10~\xc5\x92\x06\x84\xc5\x92\x06\x8a\xc5\xb2d\xbc#\xb2\x1f\x8cg=\xf8\xeb\x10\x1c\xd7\xac\x9f\x7f\xb9\xbay\xb6z{[Q\x0d\x9cU\xce<\xb4:\x1d\xe4\xc6\xfa\x04\xde\xfe\xfb\x9b\xd7\xef/?\xbd\xf9\xf0\xee\xf5\xf9\xc5w\x17\xaf_\x19\x7f\xf9\xe1\xed\xabO\xdf\xbf6~|\xfd\xff}|\xfd\xfe\xcd\xcb\xef\xf9\xcf2\xa7\xb8G\x94\xdb;\x92W\x90W\x85\x9b\xe38\x925\xfb\xb1\xdd\x17G\xae\xbb\xe0\xf5\xfb\xf3\xe7_re\xd1\x90\xb5\xe2\xd4\xe8\xa8\xb4\xe3\xe3\xea\x8d\x03E\xc5OfO\x15\x0fN\xf6\xa9\x95)\x11\x1b\xfbB\xfb\x17\xf0N\xe5^\xe1\xb7\x15n_|\x95\xf0_\x0f\xf5\xe6TR k\xeeGj\xc9\x93\xfd\xf4\x02\xe4\x7f9\xa4\x91\n\xe8]G\x1b\xa6-\x15A\xc6\x88\xbe#\x0d\x91\xf0\xb4\x05L;\xf0\xf6\x8a\\\x95\xf4\x92\xbf>\xc9\xd1|p\xcc\xeej!E\xc2\x81\x022a\x83s\xce]\xa1a]3-\xfe/O\x9e\xfc\xab\x18\xac\xae\xbe\xa6U\x7f\x12\x97\x95\xb89\\\xee\xeb\xfazR=\xb4S\xae\xafR\xaf\xff\xf0\x030\xc9\"~\x84W\xb1\xe3#\xaeT\x87cN\x8a0\xac\xfb\x17\xda/E\xc5\xc7\xb5!U\xbb\xa5M#\x83k>\xf2\xe6@\xb7o\xea\xd3n\x0f\x04~hw\xaf\xb9s\xf3\xe9\xf0\xf1Nh\x18U\xd2\x0f|>\xbc\xdcl\x1a\xda\xb6 \x1fe:\x89\xfd\x80\xfd\"\x1c\x98q@\xfbYj\xcd)\xde\xe6\xd6\x9e\x08<\xec\x15_\x9e\xecr~T&\x91\xf3\x15\xf7k\xe0\x9dP\xe0\x1dL\x18\x05N\x16\xcd4C\x96>\xef 4\xf7\xe03Ty\xd6<\x04\xe7\\\x84\xa4\xf3\x11\"\xe7$\xcc\x98\x97>\xd5\xee\x98\xa0\x10\xba\xd4B\\c!\xbe\xfb\xfe\xdd\xb9\x903\xdc]\xe1Z\x01\xbc+\xde\x91\xa2\x99\xbc\x08\xf8`\\\x1eIa\xf1\x91q\x0b\x81U\xe3R\xf4\x9ekZ9\xe0E\xd1\xb5\xe2%6\xad\xf5\xbd\x0d\xeb\xa4\xbc\xb2\xa1U}\x98&\x1c\xa3S8V\x8f\xaf\xcb\xa8\x19D\xc9\x0f\xe4x\xe4\x10\xbf\xb5F6\xb1kC|\xa8\xdd\xd7\xb7\xad\x98\xd2L*\x9b\x9cb-\xb4\x1d\xe9N*\xfb$\x1bxY\x0f\x06\x89!\xceZd\xd85\xfc\x85\xbe\xc7^\xbf\xf9\xf4\x03<\xfaRn\xe4g\xf0LNk\xdc0\xcf\xe0y\xbf\x89\x1a\xe2\x84\x88\xc7q\x9d\xa9\x1aG\xb2\xf8\x8d$\xf3 \xcdX2\xff\xa8\x19M\xb2\x8c\x18O\xc3c\xa1\xe8\xed%\xc6\x94,\xe9\x8d*Sr*\xe3\xca\x94\xbb\xc4\xc8\xc2\xe2W\xfa\xbd\x96\xd1\x1b\x8e@\x9c<\xd2\xac\xebf\xc3\x8eBL\xa5p\x82\xa8\xae\xda\xa2\xedx\xee\x96\xad\xa6\xf2\xd9\x8a\xd4\x81\x7f\xb1\xbdq\x8d\xcf\x0eU\xc6\x96\xa1)\xe9\x80\xba\xb5\xb4a\x8c\xc6\x1d\x1a7Y\xe9N7=\x06\xad\xfb\x99\xdd0\x02\xfa9H\x00M\xd6\xd1N-\x1d\xf3\x89\x19\x9a\xda\xa3\xabC\xdaz\x96\xbe\x0ek\xec\xd0\x1d]\x89\xb5\xb6Go\x07\xbb\xd7\xa5\xbbc\xb4\xf7\x88\xfe\x1e\xd1\xe0\xd1:|L\x8b\xa7\xd1\xe3\x9fS\x93\x7f>]\x9eR\x9b\x87\x8d\xf8\xc4\x1a\xdd\xa5\xd3\xa7iuw\x86\x18\xe3Ln]\xa3\xd8qx]\x0di\xef\x9c\xd7(N0ls\xa6\x99\x9ci\x06\"\xcd\x8cI'\xbb\xe1\xad\x18C\xa3\x7f:\xda\xb4\xf0\xec\xf8\xceA\x9a\xb4\xcb\x1b\xfb{H\xe0\xc4=\xdd\xda\xcd\xdd\xfb\xf8\xc4\x1d\xdc\xb7w\xbb\xa6^\xc2\xfd\xda\xda\xa9\x9d\x1de\xee\xce\xe1}\xd9\xbb#{\xf7\xe2\x88]\xd8\xaf\x99\x96\xee\xbc\x9fg\xcf\xfd\x1c\xbbm\x9a}\xd6\xbd\xc3&\xdc[\xf5]5~?EeRT\xdb\x12Sw\xdc<[\xbd\xbe;\xd6\x15\xad\xba\x82\x94\xe7\xa4\\\x9fJe\xab\x8d\xd0.$N\x01pgRR\xa2z\x15\x7f\x0c;\xbc\xf7\xaf6ts\xe2\xceJ\xb0%\xeb\xae\xbf_p\x1d\xf76\x0f\xd6\xechs\x80\xbe\xd5\xe2\x91+L\x19q\xd9\x91f7\x9a\xcdIH\x13\xef\x00\xbe#\xfez w\x977\xa4)\xd80\xc6\x899\x90;\x90o|\x01\x0e\x15\xe4\x1e\x14\xc1\xeaa7\xb4\xe8\x8f\x8a\x7f\xa4@\x877\x86\x96B\xdd3\xcf<\x91\xd1\x916E\xbdY\x81*\xb3\xa1[\xdaP^u\xf1(>\xf5\xae\xa9o\x8a\x16\xf3\xca(\xc2_\xd15\xb9\x17\xad\xf9U\xdf\x89\x17\xd5\x9a\xfd\xf9\xa6GW\xb7\x8f\xee\x1e\x83R\xbe\x81G\x04~\x05\x8f\x9e\xc1\x13h\x1e\xc3\xff\x81;\xf85\xac\x1fs\x19\x8f\x9e\xc1\xaf\xb5N\x84'\xca\x10\xd1\xcd{VQ\xf8\x95\x14\xfdH{\xf4\xa91\x8e\x8f\x1f\xbb\xa7\xf9\x85\xfc\xc7\xab\x82\x8d\xc9\xd5i\xd2,o;\xee\xdcz\xd9\xd0[\xd2l\"wQmC1$\xe8\x96jS\x1f\xeb\xa6S\xdc\n\x0eE\xc5\x9d\xf0\xf8\xff]\xf2\x1d\xd3\xcc\xe2Ph\xb88\xee\xa3\xa4,\xeb5w\xdfc&\x0d~\x11\xc4\x17\xe5\xb2\xa9\x0f\x87SUt\xf7\x97\xc7\xba\x1e\xcb%\xe2j\xc8\xd3\xa7pj\xc9\x8e^\x16r\xccg4F\xad9k\x96\xb7]O\x9fZM\x13\xc4\xb5\xf2y\xa9\xcfQ\xcf}\xa1\xf5:W\xa2V\x85\xbf\x81\xe7\xf0G\xe59\x80G\xbbzWs\xcay\x85\x8c9\xeb\x90\xc7\xf0\x0d<\xd8\x15\xdd\xfet\xc5\x99i4c\x9e\x0eY\x9f\x9ev\xdcg\xfa\x15]\x1b\xe4\xb4\"\xae:\x95\xdc>e\xc2\xcc\xc4\xc2\x7f\xfa\x1fjm\xf5\xb1\x99\xde\xab\xf6\x14a&\x95\xf2\x83\xab\x1f\xfb\x8f\x02\xfb\xa8S\x1b9\xd7\x8eV\xbd\x8d\xfa\x87\xa2\x12N\x08\x83\x1e\x1a\x06U\xf9\xbe\xa0iX\x0b\xf8\xf6V\xa1\x92\xe2)F\xe1\x91\x98\xbeg\xca@\x9f\x0d\x95},w\xed\x8b~\xf2\xd0;\x9e\x08M\xb8\xcdPr\x80\x1b\x8a\x1b\xa7Z\xbb3t\x83*Z\xd6;\xa2\x0fk\xa6HH\xc7\xbd_\xdbbH}\xf6\x91O3\xdc\xb8\xdc} r\xf2\xf5jx\x03\xdb\x86\x8f\x03\x85\xd77lO\xe6{\xbe\x94\xf7C\xbd\xa1%\x94\xc55\xe55\xe8\x15.\xab\x86*\xf6\x19|\xa3\xd5\xf9\x19\x9c\x8e\xc7\xf2~2\xcd\xb7\x1e$\\\xb6\\\x84\xa5\xd7\x10\xe7$\x07\x99\xc1\x15]{\x8ajxw\xde\xb6\x16\xef3\x81\xdf\x8ex\xd4\x0f\x18\xbd\xa2k\x8eF\xf4@\x87\x80\"\xd0\x1dZ\x87\x009b\x01\x1b\xba.\x0e}\xc35\xf8\xe8\xcd\xdb\x8f\xaf_pcL\xf4\n:M\x17\x1c?yE\xd7\xd2\xda\x94\x11p\x9a\xdf+\x02\xa9\x8a\xb4\xb6\xd8U\xa4;5\xb4\xed/\xfc\x80\xab{\x18\x96\xa0=\x87t\x94\xd7;\x0b\x82`\xaf*\xe1\xa9%\x02\xde\xbf;\xb70_{\x02\xf2\xeb\x1c~(\xaa\xae?\x9cO\x9e\x81\x98\xc0\x9f\x9bmG)\xe4\x85{D]\x8f\xca6\x8aP\xcd\xdex?\xd2F\x18\xee\xc3\xa3\xdc\"\x9a\xc5\xb5$\x9e\xab\x81\xc1\xf4\xf7h\xfch\xda2\"\x87\xb3?S\xbc'\xdd\xf4\x04\xb9\x83\x9d\xd4\x90.\x12xbO\xb2\xd9\x8e+\xa6\xeb\x93C\xa3.\x92\xba\x95\xb6|\xa1\x16\x15\x0f7G8\xc8\xee\xc8\x7f\xd5:\xd2\xd9\x96\xf8>\xd4^\x97\x8b?\xae\x17\x139{\xdan\xbe\x86 3\xec\x1dr3\xed7\x0c\xb5\xe3\xa3&\xb8\xeb\xd8\x04\x11\x86W\xe0\xf8\x041G(E\xd4\xacc\x14\xf8\x9a \x01\x97\x13\xebH\x05\xa1\x96\x02\x8c\x1e\xad\xc0>^A\xa4\xc8\xc01\x0b\xec\xa3\x16DJ\x0d\x1f\xb9`\xe4\xd8\x05\x91_\xf1\x1e\xbf x\x04\x83H\xf1\x8e\xa3\x18D\x1c\xc7\x00\x96\x1c\xc9`\xde\x84\n\x1e\xcf \xb2\xc1\x0e7\x9dyG5\x87\x18\xeb$\xe38\xba\xb02\xe9\xc8\x06#\xc76X\xd2\xf0DG8\x889\xc6\x81\xf3(\x07i\x8es0\xf9H\x07\x9f\xe7X\x07\xd3\x8ev\xe0<\xde\xc1\xbc#^\xcc\xa8\xb8\x8fy0\xe5\xa8\x07\xc1\xe3\x1e\x80\xef\xc8\x07\x81\xc98\xeb\x1ch\xea\x87\x91S\xe1b'\xfc\x18\xbb\x84\xdbM\xd3\xed\x12\xfe\xda\x889\x17s\xb5\n\n\x9ai\xb0;zKkNToa\x05\xe2z\xeb\x03\x8e\x18^X7\xb9\xd3\xf4\xf1N\xd0y\x83\x9f\x11\x8a\x1c\xeeb1\x01\x03\x1e\xe8yE)\xdf\xf4\xb8\xdbJ\xc8\x07\xc0\xdf\xd6x[Y{\xddc++wq\xc8[8\xc4\x99<\xbaO\xc7Q}\xf3\xf0\x15y\xf0J\x06\x0e\xa4\x03\x06b@\x01\xda\xedi\xc3\x96\xcf\x8a\xde\x1c\xd8\xbc=\xdf\x93\xa2:\xaf\xabm\xb1\x8b\xee\xd4}}\xa0mG\xc9\xe6\xf2\xaa\xac\xd7V\xcc\x9f\xfb\xd4f\xbc\x04\xedm\xd1\xad\xf7\xf0\xa8*J\xa8j6G\xae\xcf\xe0K\xf8\x06H\xd9P\xb2\xb9\x1f^\x90NG\x1bR_\xb2\xc7\xa6|US\xcc\xba\x00\xe5\xd2\x0d~|\xf8\xb8\xa7\xaf^\xbe\x85=i6O\xd8S\xb2\x86\xf8\xb0\xa8\xa7\"\x8d=cUMd\xb91+\xe7A\x0b\xdd\xb5\x93\x99r\xe4\xd4\xba\xddS\x91|\x89BU+\xb9tx\xe2\x9b\xfax\xace\xcc\xff\xab\x97o\x15\x81}K\xc4o\xb48>\xfb\xfa\xcb\xd9\xbd\xa7\xbd\x0e\xaf/\xde=\xfb\xfaKsZ\xfe\x8e\xb4pl\x8a5\x95\x19\xb4\xd4\x8d\xf9\x11\xcf\x17\xf5\xe2\xe9S\xc5\x18\xa1\"T\xed\xe9\xeb\x8bw\xed\xd3\xa2mO\xb4}\xfa\xec\xeb/\x1f\xcb\x0f\xfc\xfe\xbb\xa8\x01\x10\x95\xdb\x93v\xec\xca\xd1@\xd3\xf8\xdb\xca\x87\xd9\xbf\xe1QE\xe9Fd\xdb\xdaS\xb2a\n\xb5*\xefa]\x16\xbc\xd9\x04\xf3K(\xd2v\xa2\x13\x86Db\x1b\xad\x9a_O\x19\x82\x87\xda+X\xb9\xaf\xbf\xe5=\"\xbb\xe6\xa1*\xfc\x9f\xa6\x0b\xff'M\xf8?Yr\xaf\xee\xffB\xaa\xae8\x1d\xa6\x88\xd6\xfa\xd7\x94\x00\xdf\xca\x1f\x9c\x8b\xcc\xa1\x0ct\xfaO\xbe-\xbbu]s\x07\xb4\xae\xa8\xeacIgW\xd3)\x06\xce\xb5_G*\xacH\x93U'\xeb\xae\xb8aF\xa8\xac\xed\x91\x030W\xa7f7\xa5\xa6\x0f\xad\xd7\xe0]\xff\x8b\xa3V-Oi\xd2\x1a\xd5\x7f,\x07\xb5`?^\x9d\xca)U\xd0:\xcb\x10\x00\x17\xe2\xdf\xb3FT\n\x93]t8\x15\xcd\xe5\xae$\xeb\x826\xb3k\xe8\x10\x02\xaf\x8b\xe3\x93\xe7_\xfd\xd3o\xe0\xd1U}\xb8\x82\x0d-\xc9\xfd\xe3`\x95\x15\x81\xdf\xf8\xc7\xf4\x8a6eQ\xcd\xae\xaa\xf6:|\xcb\xff\xe5\xa8\xd57\x11]\x89\xa2d\xbd\xca\xba\xda\xd4\xf3\xeb\xa5\xbd\x0e\xdf\xf3\x7f\xcd\xac\x17\x8a\x92\xf5\"MS\xdf.\x1ea\x97\x14>\xc4\xbf\xf9\xea7_\x8f\x0d\xf17\xf6n\xa2W\xdf\x1a\xe4]C\xee\x17\xd7\xd9!\x84)\xde'_?\xfb\xea\xab\x98*cE\x15\x81\xc1*\x1fh\xb3\xa3\x97\x15\xed\xdacYt\xb3+\xed\x14\x03\x7f(\x9a\xee\x84iq\xafE\xf6$f\xc7\xfe\xc0\x1e\x06\x91i\x96'\x90\xa9hw;\xd8!\xc0\xf3 \x96E\xd7\xf5i\x9f[\xb6M\xeeI1\xa5\x82\xfa;Sfe\xffj\xbf\x7f\x90j}\x9a\xb4J\xd47&}\x1a_\xc4\x0f\xbbOW\x8aE\xae\xa1$}T\xbf\xfa\x80\x02\xe8\xe3\x8d\xa8\xbfj7\xd7\xab\x8b\x1eP\xc7\xd4\x8a\xd2\n+*nP\xb3\x13\xe1\xaf\xae\x8a\x1d{\xcey(x\xddv\xc5\x81t\xf4wd\xfa)vGf\x1e]E\xcf2\xeb /\xb4\xc4fSQ\x97\x0d\xfb\xcb\x17\xca\x83\x8eJ\xf6\xfd\xa5\xfc\xad?\x8b\xba\x1a\xfa}\x1d\x7f\xea\x99\x1b|\xd2\x89D\xcb\x18z\xb2\x17.z\x8dp\x1f\xa4@o\x86\x0b)\xbb\xfaX\xac\xadOD\x05\xcf\x1a\xf5\xd0\xe6\x16\x8a\xe5gJ(\x8b\x16ss\xe3oj\xca6\xb5\xa6\x92\x11\xda\x90n\xcc;\xde\x19%&\xfa\x81\xbd.O\xb0xn)\x0b\xfbcg}\xe6\xeb\x97\xdf^<\xa1\xd5\xba\xde\xf4\xe8\x1f_U\x97\x08eDV\xc4=\xb1TAr\\p\xc9\xf6\xbe\x9e\x9cKlH\xd5\x12\xa4Wnynq\xee\x91)\xab\xd3\xddM8d\x88\x87%*\xa2\x8af\xbf\x0f\"\x8bjC\xef\x16\xb5N\n\x91-S\xbf%\"\x07yc\xb5^\x8do\xc9\xf0\xfc\xfc\xae[\xdeH\xad\x85e\xbds\xb5\xac\xa1\x87\xfaf<\xec\xca\x1f?*\x04\xf0A\x13W\xeerW[\xf6\xbd[\xaeOnh\xc3I \xbcg\x99\xb0C\x9e\x9e\x81\xbe\xa1u\xb3#U\xd1\"<\x08\xff\xbb>a\"\xf0#\xb9\x07\xd2u\xb4\xe2}\xc4A\xe9\xa2\x95\x88\xcf\x16\xee\xeb\x134tM\xf5`\xd3\xb2\xde\xe9n\xf2}j\x98mQ\xb2M\x17/\xaa\xfd\xc2\xdf\xac\xef\xeb\xdd\x90\x96\x8d\x03K}vF\x99s\xbbT6\x18\xf6\xb8\xc8\x04,\xc1-\xb9Re=Xgp\xc5\xc5\xf3x\xb7B\x8ba\xaa\xf1A\xbd\x89e\xfe\xfd\xdb\xdfA}d\x8b\x9aCamW7t\xf3\x94\x0f\xe6\xb0\xcc\xfb\xb4\xf5\x12\xe6\x18\xd2\"\"D&T\xea\x99\xd4\\L\x14W/\xec\x9b\xec\xe8F\xab\xf6$:\xb3\xc5\xec\xfe\x0dm\xe5=\x04B\x14\xfe\xb5\xf7\xe3n\xd8\x96\xd1\x147ts\x06\xc5\x8a\xaeX\x8fbBsYw\x0e\xb8\x9c\xc1\xd5\xa9\xe3\x89\xb7[\xba> \\\xad\xff\xa4s\x0b\xd5\xb2\xf6D\xef1.m\x1b\xc5\xc5w\xce\x8b)\x9cK\x0c\x82\xb3\x1f\xd2^I\xe1\xbf\x90\"\xddu\x14\xc9.\xa3\xf0^E\xd1\xcd\xbf\x88\"\xd55\x14\xe1K(f]A\x91\xf6\x02\n\xef\xf5\x13i/\x9f\xf0\\=\xb1\xf0\xe2 \xab\xbb;\xc7\xb5\x13i/\x9dXx\xe5D\xe2\x0b'\x16\\7\x91\xfa\xb2\x89dWM\xa4\xbdh\"\xd95\x13\xe3\x97L$\xbbb\xc2w\xc1\xc4\x92\xeb%\x9c\xd7It1\x97I,\xbbJ\xc2qu\xc4\xcc\x8b#\x1c\xd7Fx7\xca\xb8\x0c\x18\xd6\x0e:\xf3\xba\x08\xe7M\xb0 \xfb\xf7\x8b\xf1o'\xbe(\xc2\xbe&\"\xc1%\x11I\xaf\x8807\xc3\x85\xd7C\x88\x8eV%.\xb9\x10\"x#\x82\xe72\x88\xd1\xab \xec\xcc\xec\xf1\xd7@\xd8\xef\xfe\xd5\xd5\xd6Y\x17@\xc44v\xec\xf2\x07\x7f\xdbF/~\x98p\xed\x83\x99.\xdfw\xe5\xc3\xf2\x0b\x1f\xe6_\xf7\xe0\x1c\x97\x99W=\x04/z\xf0_\xf3\x10\xba\xe4\xc1\xd9Y\xb1\x17<\x8c]\xef`\\\xee\xb0\xe0j\x87\x88\x8b\x1d\xe2\xafu\x18\xbd\xd4\xc1qg\x82\xf59\xc73c\x979,\xbb\xca\xc1Y)\xe5\x97\xa4\x978$\xbe\xc2!\xe9\x05\x0e)\xafo\xf0]\xde`]\xdd\x90\xe6\xe2\x86d\xd76\xa4\xbd\xb4!\xee\xca\x86\xd1\x0b\x1b\xc4Y\x7f\xec\xba\x06\xf1X\xf0\xb2\x06\xeb\xaa\x06\xfbk\xb1i\xfb\xc3\xd74D^\xd2\x10qE\x83V\xe5\x94\xd73$\xbe\x9c!\xdd\xd5\x0c\xe9.f\x98?\xba\xa3\x972\x8c]\xc90hi\x95\xe9(\x98\x89Z1%\xa4@\xe1\xfc/b\xcd\xf6\x18\xab\xf2\x80\x90\xd4\x16\x7f\xb1\x02\xa0\x90\xad\xe8\x7f\x94\xa7\x91M}\xba*-\xae\x85 \x90T\x83\xe0P8\xd6\xca\xfa\x95\xff\xcdA\x0d\xbc\xfa_\xc3\xe1j\x0c}\x9eL\xe1\xc6\xcf\x00m\xac\xd4\xe9@]uw\x0d\x14\x7fiS\xb0ch\xcb\xfbZ\x11h\xf4\xebGZm\xb0\x99\xd0\xee\xc9\xf3\xaf\x7f\xeb\x9d\x80\xec\xb4\xde\xae\xe0\x03\xd5\xdew\xb8\x1fv\xbdH\xf5?\x85\x1b\xe2o\xbf\xfe\xea\x9f\xb9\x91\xd0g\x97\x12\xc2\xcaz7\x8f\xa3\x8dNp\x9c\"\xb5q7\x81w\x162\x0c\xf6Y\xfd\xa8\xde>,V+\xd5\x17\x9c\xb5L\xc5J\x0bi\x1a[2\xfa\xf1\xc0\xf5\x9f\xc9\xd8j,n\xceZ|j\xbc\x82\x8e\xcc\xa2\x89Yl!\xd2\xe4\xb2\xc5\xcf\xa3\xb3,\x8e\xd7\xee?b\x10\xbf\xa3_\x89\xe9\x87\x89|7\x16\x17\xeb-\xa4\x8e\xb69\x05\x03\x8e\xe5stG\x0c3\x8e\xc5\xe2\xc7\x85\x1c'K\x8e%\x8cu&a\xcc\xa5\xa0\xd9\xbc\xb9C\x16\xe7\xd1-\xf6\x1cK\x88C\xc7\x12j\xf4b>]\x93fr\xebX\x160\xec\x9a\x1c\x9dmWxv,\x9d\xc5\xb6cI\xc8\xb9c\xd1\x99w,K\xf8w\xb3\x0b\x07.\x1e\x8b?\xaf\x07\x9b\x11\xc6Q\xd7P`=$\xc1\x87\xf5\x892\xa6\xd2\xae1\xc4\xc9\xcf6\xa398C\xceR\x86\x1bJ7DSu\xa7\xa6\xa2\xa2\xeb\xb9AJo\x0e=\xc0\x0d\x8f\x90W\x83\xba\xc1'\xe4\xc6\xa5H\xe3X\x00\xaeCu\x08p\xceH\xcb\xff\xe6p\xc9\x19\xbe8\xdbO>\xdd\x9b\xe7\xfc\x1f}]\xaf\xee\xe1\xe6\x00\xf4\x8e\xaeO\xca!gG\xda\xcbSk\xbb\xe7Lr\x03\x92Bz\xba\xa4\x85}}\x0b\x87\xd3z\xcf\xdd\x07\x99\xcea3\xe2t\x18V\x88y\xde\xf2\xdb\xe1\x963!{\xfd\x87v\xf7T1\xd5\xb5\xf86\xa7\x05>1\x05\x1d\xbd9De\xa0\xf3\xcf\xea^\x82\xaa\x99x\xcby\\\x9a\x16\x90v\x12I\xd8\x9b\x13\xee\x12\xaf\xff\xf0\x03\xcf2\xad\xaeX\xdea\xc8c\xcb\xd9-\x82d\xd7\x0du\xe4\xea\x88 q\xd2\x04@W\xefv%m\xf1\xcb\xea\xf7\x84\xb3\x89\xc0\xfbn\x0e\xabs\xfe\x82\"HN}\xa3b\xa4\xb4\x92\x81z\xaa\xa5\xbc1\xa5\x1e\xecq\xf3\xdbw]C.iq\x9cw$\xb0v|9\xf5\x9d3\x7f\xf8\x986;\x15X\xef\xf5\xc5\xbb!/\x14\xab2\xf7\x13\x16r\xf8\xb6{\xb9V\xa2\xfd\x14\xd9\xea\x1fu\xc7\xe3?\xfc\x80\x7f\x04\xfc\xa3\x00M\x14\xdfc\xa3\xe1Q\x1eK\xde B\x08YC\x12yX\x1cL\x08\x81\x80\xc2\x98\x1aXf\xd0\xd2\xe0BC\x9ch\x85\xb3\xbaV\x90!\x04\x0d\xb8\xd1\x1a\xcf\x0e84\x04j-T\x97\xbd3\xf0\x10\xe6\xf4\xf2\xe2 DH\x12\x888>X\xce\x80DX\xd0\xe4\x99\xc1\x89\x860\xfe\xd7@\x80\"x\x83\x14!\xa2\xee\x13\x82\x15\xc1\x1b\xb0\x18\xff\xa1\xb1\xc0E\x08\x05/\xc6|\xc6\x1a\x8b\xc5\x81\x8c\xd6p\xd8\xc1\x8c0\x1a\xd0\x08s\xaa\xbe8\xb8\xd1\x90\x17\x08:\x82`\x90#\xcc\xa9\xfd\xbc\xe0GC\x88\x11\n\xa9\xfc\xd5\x17\x0d s\xea\x9a42\x12\x1c\xd1\x910\x12! sj\xbd,Z\xd2\x10\x16\x11L\x07\xde\xa8I\x98S\xfd\x84\x11\x94`EQ\x827\x92\x12\xe6\xd45aT%X\x91\x950\x16] s\xaa\x9c2\xd2\x12\xe2'H(\xe2\x12\xe6\xb4ci\xf4\xe5\xbcf\x84\xa30aNC\x96Ed\x1a\xc2D|\xa6\x19\x95 \x81\xc8L\x98S\xe9\xf9!\x9b\x1eA\xda\x9e\xe9\x0c\xe2\x84\x88z& \xe6\x84 f\x984\xa8\x13\xac\xc0N\xf0\x07w\x82\xb8\xaf\xe0\xf6\xf2T\x1d\x9b\xba\xa3\xeb\x8en.\xbb;\xeb\xb8\x1a\x8c\x90\xd2\xa0\x06\xa7\xb8\xbeY\xc5\x16\x1az,\xc9\xfd\x93\xfe\xef\xf0\xa8X\xb1\xa3D%LBu~\x15\xbb\x8an\x1e\xab\xf8L+o$@\xf0\xa8\xf7\x14\x17\x07\xf4\x03Y\xef\x8bJ\xb8\xc3\x8a\x11t\\h\xcdN\xad\xeau\xd6\xf2\xa0j!5<\x1f\x91\xb8\xfdj2UzE\xca\x88\x1bs\xb4\xae\x14\xafH\xd8L\xfeS:\x08\xfc\xe1\x07\x0d\xab\x91C\xb8\xae74&^O\xfbT\xff\x92\xfc\xd8\x9e\xde=A\x80\x81u+\xc7\x8b9W\xaa\xdc\xf8\xf0\xf6\xa5\xfcdU\x8f\xb7,*\x0dU\xad4W\\1\xf5\xb0\x85\x96\xfe\xf9D\xd9_\x90\xcc\x1aM8e\x0cQL\xf2.\xf1\x8a\xf3J:\xf7<\xf8\x16G\xe3\xe7:\x0f\x02\xddc\xd4<\xa6{\xc4+\x93\xba\xa7\xa5\xdf\xd19\xdd\xd3\xd2\xcb-\x1d\xeb\x1fI\xb5\x89\xa7e\x1bPi\xfc3\xde\xbc\xb7\xa5\x0eG\nW\xe5\xb4(rS\x84\xbf\x89\xe7\xf5fz\xfb\xd8J\x8a\\)\x1a\xf0o\xadV\x13\xbc5\x97(\xa9\x06\xd7\x8a\xd8\x8b\xa3\xd5\x16\xc5L\x0b\xf6\xfc\x849\x81\x17\xb7\xcdU\xa0\x98\xe4-\xf2fG\xa3\xbb\xd47\xfb\x14\x81x\x8d\x9c\xe1\x07a\xdc\x92'UO\xe4\x90\x85\x94[\xaf\xc5\xe2\xf4\x1b\xc8\x07RD\xb4\xeb\xa2\x8c\x1a\xa8\xbec\x01\xb5\xe1\x1c\xbd\xe0,Q\xdf~\xaa\xbd.\xad\x11=\x8d\x9f{\xd6|\xf6\x84\xd7\xbc\x01\xf4\xe6`\x1b\x01+\xa3\xcf\xa3\xe0j\x07A\x03!\xd32\xcc\x99/$k\x0ciH\xdd\x18?:\xf8\x1b\xf0s8\xe05\x03!`\xcf'\xe3s\xc0\xe6t\xc0\xc7\xeb\xc0\xa2\xaaN'|\"\xaa\xe9\xa0\x80\xa0\xaf\xa5\xed9\xe5\xf4\x9b\xf2\xce$\x1f%\x04\x90\x8a\x16\x02/5\xa4|#\x05=\x04\xbe5\x07\xc1D\xd9A\xaa\x08\xc2}\x97\x982\x82\x11\xda\x08\"k\xe3\xf0\xa2YD!9\xa4\xa9-\xf36\xc1I%Ap\x85Al+f\xd1J\x0e\x81\x1df\xb6tRK\x10\xa4\x97`\xc9h$\xa1\x9a`)\xdd4q`\xbd\xb4\x13$\xe8\x8a4\x14\x14D\xd2P\x10\xa4\xa2 \xb2=\x13))\x08\xd2R0\xe9\xa31\xf4\x14\x8cQT\x10\xf9I\xe7\xb8\xcd\xa6\xab\x1c\xb2\x14\xd8\xcbIYA\x14m\x05K\x9a3\x9b\xc2r\xc8\x8aDna\x94\xca\x82%-JBkA\x90\xda\x82\x11z\x0b\x96\xd4\x7f&\xd5\x15\x9e^.\xba\x0b\"(/X\xd2\x92\xa4\xf4\x17L\x9b`~\x1a\x0c\x964i\x11%\xe6\x90\xc7V\xbeE\x8bA\x90\x1a\x83%\xf5_D\x93\xb9\xeboSe\x10C\x97\xc1\x92f,\xa3\xce\x1c\x02\x9d\xd6\xaawr\x8dQh\xb0\xa4m\x8b\xe8\xb4\xc5M\x1b\xa7\xd5`I\xe3\x92Rl\x10\xa6\xd9`\x84j\x83%\x0dIF\xbb\x81\x87z\x83 \xfd\x06K\xea>\x97\x9b\xf3\x8a\xd2\xeb\x1d\x86i\x16\xb1v\x86,\xc9\xe19\x98;\x08\xb3w0\xce\xe0\x01\x84Nl~&\xcf+z&\x9b\x07\xcb\x19=\x809\xac^\x10\xe34\xee\xc8Q\xe5\xd9\x08'\x0f\x04aG\x92\xbb\xa7\xf4F\xfa\xf9\xeb\xe0\xa1\x1b\xd1\xfc\x80\xa1\xb6\x93!M#\x1d\x91s\xa5\xf8\xa7)&\x0fP\x9b\xd4\x87\xfc\xf2\xbe\xc5\xbfcPC\xdb\xd6\xeb\x82\x87\x8d\xf0p\x00\xf6\xf0\xae\xb8\xa1\xead\xb9\xa6\xaeD\x92:\x9f`44\x86R\x10\xafL`\x15>6dM\xf99mr\x87\xa6HYk\xb6IIjT\x88\xf8\xd2/\x94w\xf0*=\xc1$\x8b\xacb\xec\xab\xca3kR\x96\x12Ch(\xdb\x92\x17M\x17\x14\xa1mACx27\xd5\x04\xb5\xd5w\xe0mQ\x96u\xc7S\x07\x9bS\xc3\xe1Q\xfc\x04\xd0>\xb8\xb3,\x0e\x855\xc3\x8a\xaa\xa3;G\xbe\x90\xa2\xea\xbezn~\x9cK\xd0\x86\xed@\xee\x8a\xc3\xe9\x00%\xadv\x1d\x0fs\xc6Z`\xf8\xe5_hS\xc3\x81\x92\xaa\x85S\xc5_\xee#\x0c\xfb\xe9\xfa\xc2\xfc\xc80\x91\x8dV\nK\x10\x08\xce\x0b\xe1\xe8\xb6=\xf1f\xf2\xb3Us*i\x8e,ZF\x0bE\x06\xab\xe4\xc8\xa2Dt\xcf\"\xaa'r\xb0rd\xd18\x8d\x93#\x8brdQd\xed\x93P09\xb2(P\xeb\xa4\xd4J$<\x9c#\x8b\xa6S&9\xb2H)\x93\xdb\xb1\x88\n\x99\xdd\x8cq\ndrC\x92\xd2\x1e9\xb2h\x16{\xf1\x8b\x89,\x12n\x95\x07z\xa8\x9b\xfb\xc8S\xaf\xf6\xcep\x9c\x16\xff\xd6O\xd3\xe2Yt\xe5\xbftA\x9c\xe1\x8f(/\x0e_\xe2\x08\x9f8Q\xd7[\x11'\xc0\x01P!\x05\xa1\x8a\xcb\xffhkG\xb6\x8cQ\x8cH}\xaf\xf7\x89\xa4\x1a\x08\x82\x9dO0k\xaa\"K\x1bf\x05\xd1\x12\xf9V\xb9\x9f\xa7:\x88]-\x8e\xcf}\xb2{\x1d\x1b\xdbRz \xcd5\xedf\xa4\xa4\xa9\xeaK_\xd8FL\xae\x17\xe5u6\xc5\xd7rZ^\xbc{\xa2Eb\xb06|\xa9\x1d7\xbe\xc43\x96\xb6\x00\xcb\xb2\x95\x8bAJ\xbd\xc4\x03\xc6e\xef,m'.\n\xe0!>\xe0U\xa3\xc7\x02\x9f\x82\xab\xfaT\x89\x14\xb8\xe2\xe2\xf6\x8eG\xf1\x88V\xad\x89\xbc/D\x95G\xbb[J+\x81\x8a\xf5k\xa8$mW\xac\x8b\xee\xfe\xf2p*\xbb\xe2X\x166(9\xa3)\xdap8?\xa26B\x82?\xec\x08\x87\xd0\x10\xa9\x94\xd1*u_\xc4\x03\xd1\xf2\x88\xed\xc9\x0d5T\xc2\x9e\x16\xbb\xfd\x18\x06:\xb9\x15\xaa\xec!\x9dZ'R\xf0\xa1j\x15\x7f5\x86\xa3\\\x9fJb8n\x17\xad\x90\xb8Y\x19\x93k\xa4\xdeF \xd70\xcd\x8d\x1e\xeb\xc7\xf8PT\x97;\xd2^\xf2\x99\x1d\xa7L\xb4\x86k\xef\xeb\xa0]Q\xf5\xe3\x86\x7fE\xca\x8fUF\xd2\x18\xd5\x86\xe9\x04E\x9c\xca\xcd\x1a5\xf4OAw5\xff\xcbUM\xcf\x14S\xaa*q\xc0+\x8e\xa54;-[YWC\xcb\xd3\xb1*W\x05\xf5\xf3\xf2\x0b\xe5\xe3\x13\x18b\x8fR\xfc{\x0eks4\x94M\xca\xcf{\xab\xab\xf7RW3\x99\x1d.Vy\xa9\xab\xa3\xddF]\xfb\x86\xf7/\x0e\xf7\x14\x11$\xb2\xc5\xd2\x1f\xeb\x85_Z\xec\x91s'\x06\xefn\x0c\x1e\x1d\x02\x89we0wf\x88\xdd\x9d\xc1\xbb\xadA0\xdc%\xec\xad\xb3l\xb76\x1b\x86{\xb7\xf9 \xe7\x06\x0e\xe3\x9b8|\x96\x16/\xdb\xd4\xcd\xb6\xf1eel\xec`l\xee\xe0\xdf\xe0\xc1\xa7\x19`I\x0bgn\xf8\xf64\x95\xdb\xbfc\xd3\x07\xa7*\x87P{&\x1b\x00\xe07\x02\x82\x1f\xf2\x9e\xd2\x17\x1a\x04f?w{\x97Q\x00#\x86\x01DT\xddr8Kd$@\x94\xa1\x00\xb3\x8c\x85\xbf\xa9;\xd9\x9aT]\xbd\xaa\xab\xab\x9a4\x9b\xa2\xda\xcd8\xab\x89e2\xc8\x88<\xb1\xe1{0\xbc\x07\x17\xdf\x9e\xc3\xa1\xd8lJzK\xfaS89u\xf5e{K\x8e\x97\xdd\xbe\xa1-;\x8c\x06\xad\x81\xdb}\xd1\xd1\xb2h;\xba\xe1\xca\xb8\xa2\xa5e>L\xcd\x8e\xa9\x0f\"\x9e\x87\x95\x93\xb0\xf47S\x9a\x82\x03\xeb\xe9\xe0\xbf\x8d!\x80\xb3B\xa9\xa6\xf0$\xc2\xaa\xcd2\x06\x02C\x0d1&A\xe4\x90\xc3\xd8\xb0\x83\x7f\xe9\x87\x87\x1f\xe6f\xdb\xf7\xf2Y\xa6\x9d\xa7\x1b\xfe\x8em=jb\x14q\x86\xb3O\xc5\x07^\x99\xac\xea\xc1\xa9\xee\xc1oU\x842\xb38-\x8b@]}\xd6E\xe0\x95\x91\x08\xbd\xb9\x8b\xc0\x90\xb3d%\x18\xa2\xc4\xba0~\x8d_\x1c\x10\xb1U\x80\xbd]@\x1e\xc1\x9f\xe1\x08\x8en5`n7\x90\xc7\xf1g8\x8e\xe1\xad\n\xcc\xed\n\"\x14\xb6s\xdb\xb2\x01_\xff\xb6\xc5\xfa$\x84Ph/ i\xef\xdf\x9d\xcb\xfe\xe8\xf7\xef\x98\xadr\x06H\xc6\xde27\xcb\xb4\xe7ZsW\x0d\xf4yhg\x0d\xae\x92\x19\xbb\xabo\x7f\x0d\xac\xeb\xd0\xca\xf6\xae\xed`\xbd\xfd\xeb;\xf8Zx\x8d\xa7[\xe5I\xd7\xb9o\xa5O]\xebq\xfb\xaes\xe7\xcdc\xab\x96\x9f\xf3\xd8F\xed\xc8\x8e=9\x8f\xb0Z~\xce#<\xbeW;v\xeb\x98M\xc0\xb3c\x03\x1c\xc9N\xf4\x9c\xb9\xe1E\x9d\x0e+z\xd7]^\xd3\xfbH\xfb\xc1{\x8fq\x08\x8c\x1d\xbe\"\xc9\x0d\xf6\x9f\xc8\xad\x1eI+\x88\xd6w<\xaf\xc3\x9fO\xb4\xedV\xf8wC\x08\xa73\xf9\xebL\x1ck8\x85C\xddv@\xb7\xdbb]\xd0\xaa+\xefWp\xd1\xf1\x18_\x9e\xf1\xe3p\xec\xee\xa1\xd8\x9a=\xba\xa7\x0d\xe5\xf7\x7fV5\x1c\xea\x86s-\xa7\xb2\xd3\xf8\xf2\xae\xee\x883\xf1k\xa0S\x1c\x97\xe4\xfa(t.\x9e\xf7\x06\xff\x8f!hYT\x05\xc8\x0d)J\xce\x96Y\xf5W;\n\xa3\xe5\xb9\x10s\x0e\xdf\x92\x16Z\xda\x9dA\xd1\x89\xbb\xe8\xd9\xf7N\x15\xae\xc1\x0d\xd4\xac\x1fn\x8bv\x18G\xff\x18\xbe3sn\xd4\xd8\xbfWt\xb3\xc1\xfc\x0c\xbb\xf7\xef\xce\x07\x8bP\xdc\x0f\xcf\x83.\x1b\xee\x92\xa4\x08\x1b\x82H\x8bj\xc7W\x17m;\xf9\n\xec%\xf7\xae6Sk\x9b|\xf2C}\x18*\xf5\x9f\x0em\x05\x0d=R\x9es\xe4[\xd2\xf4=\xfb\x0d<\xfb\x1f\xae\x87\xb56\xf2\xc9\xf5\x0d<\xd7\x9e\xfc+\xff\xc7\xb8\x91\xdc\xce\xb2\x92\xa5\x197\xc1LN\xc4!OP\x17\xb1'\x8d\x00W\x08\xa1\xed,\x1f2\xa7l_\xcb\x0f\x996\xcf\x08\xfe\x1e\x8a\xe1\x1b\xc7^w\xf1\x8e\xc3;\x93X\xf9l\x0dA\xda\xe9\x94\xc2\x1a\x9a\xce^\xc6\xb9DLw\x87\xe0\xeef\xab+\xd2\xd2\xd5\xcd\xb3+\xda\x91g+\xd6\xeb\xd1Z\xd2\x98-\x8e\xc16g\x86\xf5\x88{C\x9d=\xf6\xf8\xfa\x92\x01\xd7\x89\x93\x98Q-\xae\xd6+r<\x96\xc5\x9a\xd7\xa9]qO\xbd-m\xd8&\xf4\x8a\xd5\x96\x87\nE\xf7\xea\x91t\x93\xae\x11\xd2\xd6\x0e{Y\xf3n\xc2\xdc\xef\xf5\x16\x8eu\xd3=\x15\xfe>Plh\xd5\x15\xdb\x02C\xcd\x84\x0f\xb1LF3HcV\x89\xf2\xcf\xb6>5\xc3\x1d8\xdbS\xb5\xe3\xb7\xae\xf3\xe1\xd1B4\xc6'\x06\xd8>\x9a\xfa\xc8\x8a\x8f4\xb4$\xf7\xac~\x8e\x8f\xb9{a\xe8q\xfd\x16y\xfb\x13\xac\xcd\x17\xe7\x1f\x9e\x7fiHW=0\x95\x1e\x10\xad\x17\xbd\x04E\x85F-&\xd3\xef\xf6\xa3Sa\xa2\xafQK\xab\xcd\xa5p\x855\xbb2x\x19\x986\x1fT)\xc2\xb9\x8c'\xf3\x10isZ e \xeb\xa6n\xdb'8Sp\xad\xc9z\xe3\xbd6\xda\x8c(\xb4\xe0C\xfe\x92\x1c\xfb\x86\xaeiqC\x97\xd7\xda\x104\xab\xe2\xda\xe1(Pmw-\x1c\xde\xa8-\xe5\xb9\x9d.\xbe=\xef\xbf\xa2\xb9\x8a\x8a7\x85\xf2\xa9\xe1\xd8\xd0\x1bZu@\xa0-\xaa\x9d\x9c\\xQ\xd0\x15\xe5\x19\x96\x84\x98\x86n\xce\xb8xe\xb6}\x94\x0dy-\xfa\xa0\xff\x14\x86\x15\x9e(W~\xdd\x9eV\xf2U\xb8\"\xd5u\xbf\x85\x089\x1fh\xb5\x11\"\xbe\xe8\x15\x8c\x94$7 mYt5lI\xd9\xd2\xd1 \xcd\xb7\x16\xbe\xdc~O\xda\xfdd\x1b{\xeaui\x98\xf8\xa4\xa8`O\xef\xc4\x81\xf2\xb1T\x13z\x03\xf8\xe2W\xd6\xa7c\xa0\xf5|hV#b\\\x0c\xfb\x97\x9cy\x13#{\x8e+\xaa\xc9]\xc7\x9b{\xd9\x0d\xdb\x8a\xf3=\xf7\xbb`m10\xdf\xe2_\xb0\xdd\x18\x92\xa4Z5\xb6\x1c\x88\xdcv\xc0\xb3\xf5@t\xdbfmA\x96\x14\xad\x87\x12lE\x8a4\xb1\xdc\x1d\x1brhK\x1a\x9f\xf7\xda\x14\x8c\x9e\xf8\xd8\xac\xa53\x7f\xfa\xc9\\\x99\xfa\x9f\x99\xbf\xb2\x17\xc9\xa2\xf3L\xba\xa5\x12\\,\xf1\xcb\xc5\xbf`\xe2\xdb9{\xd1\x84\xfb+\xed\xc2q.\x9d\xc8\xc5c\xd5T\x9d\x7f}\xcc#\xb3E\xd4j\xb5\xbe=\xc8\x0dFk\x1f\x18\x1e0\xa2\x14\xfa\x9f\x8bJ[\xa2+c\x15D\xed\x00\x19\xd4\xce\xa06xW!\xd7\xd2\xe7uUQ\x8c7\x9b\xb7;x\xe1\xda\xb8]\xe25'\xf5_\xa2O\xc0\xe4}\xc2\xe7R\xe0\x1cM1\\\xac\x11\x86+\x81x\x7f\xac\xaf\x9cuu\xf7\x96\xbcAV}c\xe6>\x9a\x08\xdc6\xd4\xcf\xe7\x0d\x90r\x1fk\xc1{H\x84\xd1\xadu\xe9\x11\xd7\x10'\xeeZ.\xac\xec\x91\xdaQ\x17B\xc7]X\xd0\x9a\xd9G_S\xd3(\x07\xe1\xb1\xe6\xc4\xa0\x8bc\xcb\xde\x890\x8eO\xe1\x8fL\x85\xe1Z\xf8\xaen\xb8\xee\x98<\x9f\xdd c\xd4l\x8c?-\xfc\xbf\xeb\x12\x1eP{\x81\xd1\xf3\xce\x19\xf1\xbe\xe3U\xc7\xe4Y\xd7\x0d]aRS6e\xce\x99\xa4\xaa=\xb5\x1f:\xd2\xd1\x7f/\xba\xfd\xef\x950\xf7\x88\xa9b\xa5\xbd\x91^'B\xae\xb8\x96\x01\x1f\x9b3\xa1\x1azS\xb4E]Y\x99\xdea\x99%\x81]\x89\xb2\xf1\x1eT>\xb0\xbcgXW\xafOM\xc3-!=gZ_\x9dY\xe9\x00\xc2\xd5\x11q\xfdl\x02\x0b\x8b\x14\xb3|\xc8o\xbaW\x84\xa6\xf0\xde\xb0\x0f\x95%Zw\xef\xc5{8\xa4\xacQE\xb5n\xf84\xa6\x1b \x1dP\xb2\xde\xf7_\xdd\x17\xa5j\x89^Sz,\xf4D\xeaR\xde\x1b4\xb2\xd8'Zr\xa0+\xf8}}Koh\x03m}\xa0\xca\xd0\x93rW7E\xb7?\xb4p \xf7\xb0\xde\xd7u\xab{t\x7f\xa1\xf5\xacD\xddD\x8d\x8a\n\xd6\xb4\xe9\xc4M\xab\x1bqe-]\xedV<72\xeb\xd4\xeb\xf6\x0c'\xd8\x13q\xa7\x8a*\xf0\xaa\xa1\xe4z\xc8\xcc\xdb\xc2\x05\xef\xd4\x96\xc2\x9a\xb4\xb4=\xd3\xfa\xe8M\x9f\xfc_\xed\xa3V\x876t]\x1f\x8e\x05;^U\xdc.\xa2pUT\xa4\xb9\xe76\x15k\xafi\x0eJ]k\xe5]\xa1wG\xba\xee\x80\xbb\x18\xf3\xfc\x9aB \xb2ae\xe7\xd4z\x0b/\xab\xfb^\xdb\x9cq{\xe9\xd3\xfb\xef[\xdc\xa3\x0di\xe2Vk\x0b\xfa\\\xef\xe9\x81\xc2\x8f\xfb\xae;\xfex\x86\xff\xdf\xfex\xc6\xac\xc1\xaa\x16\x7f=\xe33eM*\xa8\xf9\xcc\xe7-e\xca\xe9t\xb4\xba\x9b\xb5\xd0\xfa\x06mn\xb8~$\x1d\x1c\xc8\xb1\xc5a\xe75\xed\xea\xde\x95\x88\xdb-B\xa9\x91\x16\xb6uY\xd6\xb7\xed\x0b\xab\xf7\x7f\x05\x17\xdb\xa1nl\xb8\x8eM}Sl\xe8\xa6\xaf>7W\xda\xf6t\xa0\x9b\x95\xfd\xfa\xcb\n~\xff\xf1\xe3;\xf8\xdd\xeb\x8f\xf2\x1e\xaaO\xef\xbf\xc7%s\xcf\xad\x1d\x02\x7f4'\xde\xc7\xfb#\xfd\xd3\x1f\xffd\x08\x93\xf7/\x15\x95\x1ce\xdc\xd9x\xff\x1d\x9bzsZSf8\xd1\xa6\xa9\x1b\xd3]\xf1W\xf0R\xb1\\9n\xc0\xef\xe2B\xd4bM\xd6l-\xd6\xf5\xf5\xe9\xd8\x1f\xde\xfb$'\xb6\xc2\x00\xd6\x08\xfe\xdd=\xb9\xe1C}Pf\xe3\x06\xa7#\x91\xd5d\xff}S\x17\xcc\n\xb4\xafJ\xc4\x8f\xf2\x05\xd6\xd0m\xdd\xd03\xf9\x1a\x93F\xba\xe2\xaa(\x8b\xee\x1e*J7R\xcbs\x05\xd0\xdcX\x19Zx&r\xb9\xe1\xb0\x05\xc1V\xc0\n\x1e}j)\xdc\xd0\x86iz\xd6^6!\xd8Z\xc6\x19A*\xb2\xb3\xdbg\xee_\xab\xc7\xe6\xd8\xbe\xa9;n:\x14m\x9f\x10\x93\xf0\x9a\x8a5=\xd80\n\n\xe2\xea\xcc\x9a\x03?6\xf4!\xa7\x034\x94iTz\xc6-\xe9\xa2\x93\x1f\x18\x98\xee~\x86_\xd1]QU\xac\xda\xcc\x8e\xb1\x14\xe4\xfd\x91\xaep\xae\x91c\xd1\xae\xd6\xf5\xc1\xd67\x1f\xf8Lo\x11Xa\xcb\xa82\xd7+<\x12G%D\xa6pi<\x86\x03\xdf\x90\xaf\xac\x05\xc9\xab\xc9\xcf\x05\xbd\x1d\x8f\xe7\x82\xf6H\xd7\xc5\xb6XCK\x0f\xa4\xea\x8a\xb5\x06]\x197\x95A\x8c\x85\x17\xc6\xf3\xac\x1d\xf4\x07\xb6\x08\xaf(\x10\xf6\xb1b\xa3^@e\xee{\xf2R\xa6\xab\xfa\x86\xca\x8a\xdb \x82X\xff~1\xfe\xed\x1f_V\xf7?\x0eP0;\x1b5WE\xd7\xb0I\x1f\xa8\x83\xd4]\xa4\xac\xb5\xf6\xe3\x99K\xedv\xa6a\xb8\x02\xc4:\\\xd9\x06\x80\xfa\x1d\xb9\xa7kS\xe1\x9d\x9c|eq\xc5+&\xf4^\x7f\x89\x06\xbf=\x86\xac\xaf\x9f\x9e*\xf6\x7flw\x10\xd9|\xedYnn\x86\xf5\x16N\x1d.\xeb>\x97,S&d\x83\x86&)aG+\xdapWNG\xaa{\xf3gR\xdd\xaf\xd8\x87\xbek\xea\xc3\xa3m]?6\x1fX\xadL\x0d\\l\xe1\x11{\xed\x13\xaf\xd6\xc7\xfa\xd1?\xb0\xf7\x1e;\x1cY\xedw\xff\xeaj\xeb\xf3\x91\xb6\xfe\x1b\xb9!\xb3\x1a\x0b\xdf\xf0\xbd\x9eI\x9c\xd8\xb6\xa2}\xf4]]\xaf\xd6%i[g\xd3\xf0\xd3\xecQ\xac\xb1\xf2\xb8\xf9\x95\xbf\x1a\xff~\xfa\x94M\x91\xd0\xb7?\x90\x03e[\xe7K\xac\xc5\x8ev\xaf\xf02\xab\x0b~a\xc2\x9a>z\x1c_)\xe7\xdbv\x1d\x1d\xe3\xf2\xd5\xc8\xb8\xbc\xbb\xef\xf6ue\x8d\x0c\xd6\xe2\xbb\xba~\xb4Z\xad\xac[\x83\xe5\xa8R1\x03\xc5^\xb8\xc0\x1ez\xf5\xfa\xc3\xf9\xfb\x8bw\x1f\xdf\xbe\x7flRf(\x18\xe7\xaaK4\nw\xb4\xfe7#\xad\xff]m6\x9c\xb7\xfc\xc57\xf0\x0f\xc7\xab\xd5wu\xfd\x9f\xab\xd5\xca\x1c{V\x993f\xd8\xb0\xe7Hu\x7f\xbcZ\xbd\xa1\xb7\xcez\x15[\xfe\xdc\x7f\xfb\x06\xaa\xa2ty\x89\xdb\x9dbM5\xd73F%\xadW\xc4w\xb1~\xabO\xd5\x814\xed\x9e\x94\x1fk\\Bs*\xa5\xfc\xf2\x91\x03\xd7\xeb\xeb^\x1bJ3\x14\xae\xee\x07CA\xeaj\xa4\x8e\xeeA\xde\xe5vj\xb5]\xf9\xa1\xc3\x10x\xcaNN+\xfe\x07f\x1a=\x14g\xe5\xde\xb6\x90\xa4\xa3\x18SU\\\xaf\xa0\xab\xf2^Z\xfe\xd6A\xac7\xbaD>\xffN\x9e\xfd\x1e>}\xa8\n\x13\xc7\x0e\xf9Y\xbc}\xf3\x85\xd9\xbb<;z\x7f\xb6\xec\xd9_f\xfe\xf0\xed\x1am\xefS\xdb'\xdf\xdb\x9dJ\xd2\xa8R\xec\x97;\xee\xcb3l\xb5gC\x04\x85X\x11gb\xf7\xd6N\xa4\xca6\x88\x80\xe8\x8f\xff\x935\xedG\x01\x87j\x1c\xb2\xec\xa8\x95\\\x80/,3\x92\xac\xaf\xd9\xda\x1b\x0e\x19\xdb\xa2\xa4\xa6&\x93+\xf4\x1dm\xda\xbarLQq\xd6\xdf\x16M\xdb]\xf2\x9eu\xc6U\x88\xc7\xd8\xd0\xca\xa7\x9e\x07\xb5&+\xf6\xd7\x1e\xf0\x16?x\x01\x0f\\sUo\xca\n\xeb\xfc\xe0\xcc\x96\xc2k\xfb\x86\x1c\x98\xa4\x7f\xc1\xaa\xfd\xab\xe31V[\xe3\xa9P\x95/\xb6\xc2\xfc\xd5\xc7\x12\xc7\xa2h\xe1\x96\x96\xe5\x93\xeb\xaa\xbeE\xec{O\x94k\x1cq\xee\x0d\xb2\xf4Is\x86f\x9b1\x93\x06&X|\x90M\x10\x9e\xd2\x9fO\x0fU\xdc\x8f|\x9a\xca\x99\x82\x99\xea\x14\xcc\x9cO\xf2\xa2\xeag\x18\x08\xd4@L0U\x12\x17\xdd\xcf*x\xc4\xd6\xa1l\xa8u`\x95H\xc9\x9f\xfe\xf8\xa7\xc7\xd6\x04\x9c?\xba\xbap\xd7\x00\xf3\xe62A\xcfV\xcf\x9f=o\x1fX\xc3&\xff\xcb\x0d\x8d\xf3?\xbb\x0du\x1f8\xafP\x1e&\xce.\x96\xb2\xb2~\x85\xac\xbd\x06/b\xcf\xba)\x81\x89\x04\x80\x17\x9fw\x1e\x95\xc2Wk\xce\xc0\xe4\xbdx\xfc\xcc\xcfGa\xf0nFj!\xf6\xde#\xee(- \xd8>\xf8~\xa4A\xd7QV\x12`\x1d\xe1t\x14\xb8\x00I7\xf1s\x14h@\xe7\xa6\xf3\xc80(\x84}\xa4v~\x84\xdf\xa1\xa2\xee\xe7|B\x8ak=90\xd4\xb0\x91\xdc\xb1}\xb0\x03R!Z!DK*\xf7xj\xf0\x8eGv\xde\x0c$@\xc4:E9\x97#I\xf7\x06-%\x16]\xef<\xa7\x8b1 \x08\xed\xa5A\xaf9\xeb\xe6\xae\x1fdr\"\x93\x13\x99\x9c\xc8\xe4D&'\xb4\x92\xc9\x89LNdr\"\x93\x13\x99\x9c\x08\xbc\x9b\xc9\x89LNdr\"\x93\x13\x99\x9c\xc8\xe4D&'29\x91\xc9 !(\x8a\x9cp\xc3\xd9N\xb8Q\xa5\x1e\x14\xb0\xcf\xc1;\x88\xbf\x0ba\x03\x8e\x18\xe4\x1e&f\xf4\x10'\xf4K\x01\x9b\x9a\xc8fT\xf4rt\"\x18\xe3cZ@WY\xb4\x1c\x02\x92\x90\x81\xd67\xfc\x94m\xc1@\x12Hnx\xb68M\xbdU\x1c \xa0\x1c\x06\xc4\xa3\xe1\x8a\xad\xa9\xbe\xcb\xe5:j\xe8\xa1\xbeag\\\x0c\xb0\xea\x11\x0b\xf5+\xa2\xb2\xac\x82gpb\xb3\xd38h\xf0\x03\xba\x10,\x17\x92\x88\x8bb\x06JW\x94\xe2HMpi\xed0>\xaao\xb6#\xa4%\x9c\xea\xa3D\xac\x1f\xbf\xa8\xdf\x0c\xe7\x98\x11\x188\xc9\xff\xf9K\x0c\xce\xf3\xceP\xf0\xccR\x98t+\x18\x8c\x9e\xe1\x97\xcdZC\x98\xd8_\xbd3\x17\x12\xcf^\x18\x9f\xc1\xb0x\x16\x1b\xc2\xf5=!\xcf\x1b\xcb\xeb_\x08\\\x13O^\x07\x1e\xe6&~.w\x99\x9d\xc9\xecLfg2;\x93\xd9\x99\xbedv&\xb33\x99\x9d\xc9\xecLfg\x02\xeffv&\xb33\x99\x9d\xc9\xecLfg2;\x93\xd9\x99\xcc\xcedvF\x08\x8abg\xc0\xed_\xcdN\xed\xf5\xba \x12d\x15\xeb\x1a/\xb6\xb1\xdc\xb6\x8fM]o#\x83#\xb4s\x88\xbc!\x8e6\xd7%E1L7\xd0\xbb\xa2\xed\xe8p\xcb\x14\xff\x83\x1d\x83\x81/\x0b\xf7~\"\x93iq\x94\x9dK\xba%<\xe5gSP\xf58<\x01\x93\xcc\xd9\xa1rv\xa8 \xf1+\x8a\xc0$A,ju\x7f\xda\xecP\xa3d\x85F\x1a\xc4s\x15\x1f\x94X\x0e\x9b\xaa\x80oi\xcb\x8f\xd5\xca\xea\xe0=~\xc6\x91\x9ej]\x9e6\x9c,\xc6\xe5.\xad0\xd17\xfc&\x04!0\xa8\x19\")\x91\xe9\xdc\xa0\xca\x89\xcc\xa3\x8f\xa3\x93_;\xe2oT9\x0e\xb50\x1a\x8b\xa3 6x\x1d\x97\x00=.G<\xe1n\x05\x04Z\x02^.h\xf8\x9b\xa7A0\x8ajaI\xc8\x0ea\xf1sDX\xd21EX\x92\xf1EX\xbc\xac\x11\x16\xd7\x91%\x92;\xc2\x92\x8aA\xc2\x12\xe6\x91\xb0\xccb\x93\xb0\xcc\xe6\x94\xdc}\xc7\xbd3\xbc\xcc\x12\x96\xd9\xfc\x92S\x1a\xea:\x0f\xcb\x84e \xd7\xe4\x14x:\x02q2NX\xe6\xf0NNA^.\n\xcbBFJ\n\x89\xe0\xa5\x9coFsUX\x160VX\x16\xf0V\xbe\x85\xee\xa9j2F\x0bKZ^\x0bK2v\x0b\xcb8\xc7\x85%\x19\xd3\x85\xc5\xc7waY\xc2z\xb9u\x85\x83 \xc3\xe28|\xfa4\xe6\\V\xcc)\xcc\xc7\x94a\x99\xc9\x97aq\xb0fXFL\n/\x83\x86%\xc6\xe2\x98\xc9\xa6\xb9\x95\xa9d\xd8\x0cN\x0d\xcbXm\x96\xf1k\x968\xce\xb79X6, \xb86,\xcb\x187K\x1c\xb7h\x9c\xc6\xc3B\xf6\xcd\xfe\x92\xc5\xc6aY\xc2\xc9a \x92UX<\xfc\x1c\x96Q\x96\x0e\x8b\x03|\xe7%\x9e\xb1\xc3\xe2\x93c\xe1\x9d\x0b9<,\xf1\x9d3\xc6\xe7a\x19\xeb\x85Qn\x0f\xcb\x04\x86\x0f\x8b\xc5\xa4\xf0\xe2c\xfb\xb0,\xe7\xfc\xb0\xccg\xfe\xb0\x04Fv&\x0b\x88%\xc8\x05b\xf13\x82\xfd\xdf\xbd\xbc \x96@\xe7\xc6r\x84X\xc6\x98B,\x06_\x88e\x01k\x88%\x82;\xc4\x12\xcf b\x19\xe5\x11\xb1\xf8:\xd13\xad\xfd\xcf\x8f\xf1\x8bX\x96\xb1\x8cX\x02U\xb6~_\xc4;Z\xd2\x0c\x1e\x12\xcb\x126\xd2\xfe\x82\xc5NbY\xc4Q\xdaU\xd69K,)\x99K,>\xfe\x12\x8b\xc5bbI\xc3ebI\xc6hbI\xcbkb\x89c7\xb1\x8cr\x9cX\"\x99N\xed\xe1 \xdf\x89\xc5\xb1\xba\xc0\xc9\x8ea\x89\xe5\xc8\xc2\x0c\xa8\x90\x15\xc7\x83\x8a\x87\xc7\xd9P,\x8e\x06\xa5dF\xb1,\xe2G-i\x16_\x8a%\x1dk\xaa|& w\x8ae\xe9\x1c\x19\xe5Q\x85\xb8\x116\x15\x8b\xba3\x85Nb\x0b\xa3\xdf4Y\"\x12N\xfb\xcd\x15\x10\xe7\xa8\x95\x0c\xd1i\xbb\xba\xa1\x1bP\xc9\x0e\xa9\xd0\xb4[\xb4\\\x97!\n\x12@\xb9\xefP\xd2>\xc3#\xf1\x8ck\xbe\xe70\xdfs(\xdf\xf0\x8f!~R!\x1bkM\xc5\x15\x15\xec\xde\xbf;\x1f\xf8G\xa1_Z\xb8\xe5}\xad\x1bG\xeb\xba\xc1\x07\xb9^\x94>\x0eR%15\xccQ'\xb5\x99Z\xdb\xe4\x93\x1f\xea\xc3P)\xa7Vj\xe8\x91\x07\xb5\xc1\xb7\xa4\xe9{\xd6\xb7\x7fjm\xe4\x93\xcb\xdc=\x1d\xe1\xb5^jvF\x1c\x19\xbe'\xe4\xcd\x8c#;M'M[\xfeZ\xc0\x99$\xaa\xc1\xa7\x99\x0d>\xf9\x1b\xcc\x96\xb2\xbc@\x167@\x8e\xec\x8a\nK}y\xf1\xed\xb9\xd0\xc8\xc1\x1e\xd2r\xaf\"\xfd>\xbd\xab\x8c\x1b\x9b\x84[\xc8gf\x9a\x83>1A,5\xa0\x97\x96z\xc6\x8c\xf8\xc6$\xa9V\xb4\x87Lx\xebO\xe7%\xe3\xf4\x93Y\xea)\xa3\x89\x1a\xd2\xbc\x1a}=\xcb[F\x93\xe1\xf5\x9cI\xe1;\xa3\x7f\xa9\xb6\xbcgR\xf9\xcf\x84;/#\xc1\x88\xd7\x0b\x84\xf4\x1f\x96\xa0\x9b ,V\xcdXF\xbc` m5\xa3U6\x96\xb1\xd0\xc4t\xea\x1b\x8b\xd3;\x06\x16\xabrK\x9c\xc7K\x06\xe6\xabuKN\xc0[\x06f+{K\x8c\xeb\ne\xeb\xa14\x8a\x1fK\xc8{\x06|\x1e4\x01\x8e\x17\xcb\xcc%\xde\xe5\xa4#9\xe9HN:2\xca$;\xa5\xe5\xa4#s\xb9g)$\x82\x81v\xbe\x19\xcdJcY\xc0McY\xc0P\xfb\x16\xba\xa7\xaa\xc9\xb8k,i\x19l,\xc9xl,\xe3l6\x96d\x9c6\x96\x9ct\xc4\xc3\x89c\x99\xc9\x8cc\xc9IG\x163\xe9\x96\xb8\x9ct$'\x1d\xc9IG\xc6Y|,\x13\xb8|,9\xe9\x88]r\xd2\x91q\xff\x00,\x11^\x02X\xe2}\x05\xb0\x8cz\x0c`\xc9IGr\xd2\x11,)}\x14\xb0\xe4\xa4#9\xe9\xc8(\x1b\x9e\x93\x8e\xe4\xa4#csd\xd4cB\x88\x9b\x9ct\x04\xbct\x98\xf2P\xe8\xb8\xa6\xf3\x81\xff^t{\xc1\xc0(\xc9I\x0c\x9eM\xaa\x17U\x8c\xa2Y\xf6\x0ep\xdfHJ\xe2\xaeq\xeb\xf4\xf4\xb0/\x9f\xc8\xb1\xa5C\xc9\xb1\xa5Xrl\xe9\xcf=\xb6tqTid<\xe9\xa7\xe3\xae!\x1b-\xd1\xd2d'\x87\x93\x90q\x99o\xb9^@#&#\x10shi\x1c9\x88\x84\x84\xd5G9\xb44\x87\x96N#\xee\x9c'\xfbd\xf4\\Zb.\x19%7N\xc6%\xa3\xe1rhi\x0e-\x9d@\x88\xe5\xd0R\x07\xc5\xb5\x84\xdc\x8a\x89\xb6\xcc\xa1\xa5J\xc9\xa1\xa5\xb2\xe4\xd0\xd2\xbe,\xa0\x8e\"H\xa3x\xbah\x94(\xca\xa1\xa5K(\x9e\x1cZ\x9aCKsh)$\xa3U\x16\x11*9\xb4tjh\xe9\xdc[\xae\xdd\xc0\xef\x18\xc4\x18\x0fn:\x84(\x00\xe7*\x06\xe1\\\x969o\x009s\n\xbd\x8csf\x9c3\xe3\x9c\x19\xe7\x84\x8csf\x9c3\xe3\x9c\x19\xe7\xcc8g\xc69y\xc98g\xc693\xce\x99q\xce\x8csf\x9c3\xe3\x9c\x19\xe7\xd4\xca\xfc\xd1M\x8fs\x9eGd\xcd[\x00u.\xccX\xe5\x96\xe3\x05<\xeb\xc3\xa1\xe8\x0e\x02\xf4\xfc\x81g\xdd{\xd7\xd0mq\x17\x8dn^\xd3\xfb\xcb\xa3\xf2\n\xf8NY\xd6 \xcb\xf4eU?\xcf\x1a,\x93\x00\x92n\x0f\xf8\x05D\x1a:\xf4\xe1\x96\xbb\xddG\x84\x98\xda\xae9\xad\xd9 \\\xd3{\xd86\xf5\x81?\xf7\x8ep\xd5\xb8\x91/\xf5\x0b\x81\x1c\x8f\xb4\xdaN\xd6\xd7\xb4k\x85d\xd6z\xcf46X\x13}A(\x97F\xf6\x08\x85\xd2xZ\xa9a1\xae\xe1\xa7\xd5\xe9\xa0\xce\x94'\xf0\xe1\xe3\xcb\x8f\xaf/?\xbd\xb9xs\xf1\xf1\xe2\xe5\xf7\x17\xff\xff\xebW\x97\x9f\xde|x\xf7\xfa\xfc\xe2\xbb\x8b\xd7\xaf\x1c\xcf\xb2'\x1d?\x7f|\xff\xbf\xdf\xbe{\xfd\xc6\xf1\x17\xedgak\xbf\x88\xfc0\x0f\xbf\xa0\xcd\x914\xdd\xbd\xafW\x94G\xf0\xc6\xe1X\x951\x89\x94r\xa80\x98\xcfJ\x19\x9c\x93Pu\xb5$\x13F[dB\xfc\x98\xa9\xd6\xf8\xd1\xd5b\xf5\xd7\xcf\xd5\x18mFF5\xca\x10\xe8\xce\xce\x81\xf9\x01\xdd\x8d2wg\xb0g\x89\xb4\x02\x86\xc4\xbb|\x13\xee\x97\x91Y\xbd\x95\xa3k\x1cy\xe1\xfcY\xe1\\V\x83,\x01\xe5\x1c\xc0i}\xc1N\x93\xad\n\xe3\xfdY\xe6\x85!\xc3il\x8c\xe9\xb9\x8c(=\xb1\x8e\xfc\x11\xa7\xef\xc0\x8eZJ^\xb9\xe9\xa8O\xa6\xe31\xdd\xde\x91\x86\xc8m=\xc2X;\x90\xbbK\xf4\x91\xa5\x9b\xcb\xae8P\xd6\x8f\x97We\xbd\xbeN\xd0\x95\xda\xc4;\x90\xbb\xe2p:\x80\xfc\x1c\xb0\xcf\xb1~\x06\xfe9xTTP\x91\xaan\xe9\xba\xae6\xed\xe3\xb3~\x8b\xa7\xd5\xb6n\xd6\xea\x04\xc27\xf8H \x9fmv\x0e>\xb0\x9dWz27t[\xb2\x83\xb4\xe1\xaf[\x92fG\xdb\x0e\xc8\x81-`\xbe\x9a\x0b\xe9a\xce\xd75\xd74\xe8\xf4\xd7P\xd2\xd6\x15\xb9*\xef\xa1#\xd7\x94\xbb\x86\xa1?\xaa\"\xb0\x93\xe9w\xb0N\xa7jC\x1b\xa8\xf8\xed\x16\xc0z\x9b\xdf\x16c\x1c&\xc5U\x10+x -\xd9\xb2\x8f\xd6\xc5\x9a\x13j_=\xf9\xfa\x8e\x8b\xf4\xf4\x92c\xc2\xe1\x88k\xd6RKy\xcb\x94y\xd7wO\xe8\xe8\x8e\x89[\xf8\xd62\xbc:\xeb\x96\x18\xb9a0\x8d2\xcf\xb4\x0eY\xf8m\xc9z\xab\xde\xa2;\xb8\xbe\x83\xf0/\xbaN@\x18F!\x04\xfeDw\x81\xe1\xcb\xe2R\x0d\xd2 \x1b\x92\xb5\x00%\xdd\x92v\xf0\x104j\x17et\xe4+\xc4\xf2\x15b\x90\xaf\x10\xf3\xe5\xa4\xf2\xa9\xb6xW\x06K\x84//\x95C\xb1\xf6?-\xc9N\xd5\x9b\x02\xde\xfcT\x91\x91o\xe2\xb09G\xcbL=\xda\xe8Ur\xe2\x01\xee\xb6\xc0\xbe\x0d\x96\xc5\xb8\xc1\xb287\xf7\x12uV2Y\xf4\x1b$\x8f\x80\x83\x94Qp\x10\x15 \x07)\xa3\xe1`\xe4\xea\x9d%Qq\xae5\xee\xb9v\xa7\x8b\x89\x95\x83\xc5\xf1r\x0e\x81\xee\x0bwfF\xd1\x81\xff\xb2\x9dyH\x19D\xed\xff3#\xeb\\j/p\xc5N\xb8\x1e\xcb\xa2\xec\x0ca\xa1\xcbu\x12D\xdbA\xea\x88;pD\xdd\xc1\xf2\xc8;CZ\xe7\xbcRgI,\x1e\x8c\x85\xa8A\xf82\x9d\xd1\xb8<\xf0\xde,\x11\x1f\x9f\xe7\x97aE6,\x8a\xd5\x83 \x9d1\x16\xb3\x07\xa3\xed\x1e\x8d\xdd\x83i\xf1{\xe0\xb9]$te\xce\xf2X>X\x14\xcf\x07\xa11\x9c\x19\xd7\x07c\xb1}0zM\xce\xd8%9\xde\xce\x8c\x8d\xf5\x83\x88x?p_\x8e\xb3 \xee\x0f\xe2b\xff`R\xfc\x1f\xc4\xc4\x00\x82\xff~\x19\xe7\xe7=\xcf\x8e\xc5\x04\xc2\xe2\xb8@\x08U\xd4\xf85i\x8c ,\x8c\x134D\xb9/\xbcI\x1a9\x08\x89\xa3\x07a\xe4j\x1b\xe7\xc56i\" !e4!$\x8f(\x84\xe8\xa8B\x88\x89,\x84\xf8\xe8B\x88\x8c0\x04\xdfE6\xee\xaf\xc7\xc6\xa3\x8d_b\x13\x19q\x08qQ\x87\xe0jF\xca\xe8CX\x1a\x81h\xc8r^\\\x93.&\x11\x92\xc6%\xc2\xe2\xf90\x1a\x9f\x08\x111\x8a`m:\x0ed\xba\xff\xbb\x9bB\x07\x9dFW\x92\xa5)<\xba\nt\x0b=\xa1\x91\xe9\xfc\xef\x8a@\x17\x99\x0e?oN\xb0\xa1]S\xd0\x9b\xcc fN0s\x82\x899\xc1\x10+7\x81\x17t\x89\x99\xc5\x0d.\xcb\xeb\x98\xd39.\xa3\xca\x92\xd1d9\x9dc\x1c\x1d\x860\xbe\xd5G9\x9d\xe3\x14\xdak!\xe5\x95\x98\xeeZ@u-\xa0\xb9\x1c\n#!\xa1\x95\x96\xccJFd\x8d\x93X\xc9\x08\xac\x9c\xce1\xa7s\x9c@4\xe5t\x8e\x0e\x1ai \x85\x14\x93\xe10\xa7sTJN\xe7(KN\xe7\xd8\x97\x05\xb4N\x04\xa5\x13O\xe7\x8cR99\x9d\xe3\x12\x9a&\xa7s\xcc\xe9\x1cs:Ga\xfe& T\x16\x91)9\x9d\xe3\xd4t\x8efB\x9bq\xff\xfd\xd8L :\x07s\xf1\xca-Z\xff\xbcx9\xf3#\xea\x1f\xe2\x08\x89\xcc\x8fd~\xe4\xef\x86\x1fY\x98\x05\xd6'i\x0eK\x821\xaf\x93\xd9\x91\xa3\x12\x1c\x0d\xe64?\xdaq\xb4C\xd4\xac\xb4\x93\x0e\xf5\xe6T\xd2Y !\xa2B\xada\xe6\"\x0fCH)C\xafaQ\xf85,\x0e\xc16\x84ID\xb9\x9b\x1a\x86\x0d\x9f!\x14\xfb_=KG\x9f\xaes\x96\x8c\x08\xf2\xf6\xa6L\x0e\xac\x95\xc9\xabd\x90fm\xc3J\xa0\xf5\x84\x14\xd3\xce\xef\xba\xbf\x0d3\xc2\x0b\x17d\x7f\x02g\x06\xa8\xe1kv\xde$g\xd6$g\xe3\xb0\xf8\xa3\x14CY\xa1 \xd4^\xf1\xe7)\xd9\xa1 \x90!\n\x02\xad\xc5\xe2\xc9\x14\x05\xd1\x95L\x911\nF\xb5\\\xda\xccQ\x10\xc8\x1e\x05\x10\x93A\nFk\xbc \x9f\x94=\xcd0\xbb\x14\x189\xa5`j^)\xb5\xfe\x8ep\xdc\xf9 \xa6 4]\xccDS01\xd9\x14\xf8\x13NA0\xe9\x14\xf8\x12O\xc1\xf4\xe4S\xe0M@\x05)\x93PAH\xe3\xf8\xf5\x8dG\xad\xc2\xd8*\x1e[tK\x92S9\x84\x89|\x1d\xce\x04U\xe0MR\x05\xe1DU\x90\xbe\x91\xda,\xf77\xd6!\xc9\xce\xcd\xe5x(\x94\xbc\n\xc0\x9d\xc0\nR'\xb1\x82\xf0\xde\x16\xde\xdd\xc2 \xad`lD`,\\\xcf\x97\xdc\n\x12$\xb8\x82DI\xae 2\xd1\x95\xeb9w\xb2+\xf0&\xbc\x82\xcfrtX\x9a\x80\xd9\x10\xe7\xd8\x9d\x96\xa6d6\xc4]\xdd[i\x99\xc1L\xcd\x0c\xc1f/L\xd1\xacH\x92\xc9\x9a\x95\x9f\xf4\x8c\xcd\xca\x1f\x16\xa6mV\xbf\xaa*'w\xeef\xc8x^\xfc\x02\xc9x^\xc6\xf3~\x89x^\x144\x11\x05JXp\x04\xbc\x7fw.\xbf,\xf0\x08\xf8\x96\xb6\xdc\xf3\xc6\xb6\x8e\xce\xb8;X\xb5.O\x1b\xaeHq\xa1\xcb\xdd\x13{E\x08c\x1b\xac\x14\x1c\xd4\x0c\xf1\xf8\xc7t\x98p\x107/w\xdd\x84\xb4\xd0n$\xc1i\x12\x19\x96]\xdf\xc1v\xdal,^{?\xfa\x1b\x93\xa1\x14\x1f\x98\x12\x02\x18\x82i\xa8g\x99\x9daX%\xc2\xec\x9c\x0c\xad\x84\xc1\x951x%\x08\xb0\xc4W7\x15\xc82f\x11\xc22\xa0\xc5!M\xc0 ^\xa8%\x16l \x9d \xd2A-#`\xcbD\xb8E{\xdb\x81\xb7,E\\\x82\xf3\xc7\x85\xbaL\xc7]\x82\xc8\xcb\x18\xf6\x12@_f\xe1/!\x04&1\x063\x1b\xf7\x0d 1\xa3\xcb}|m&\xc6c\xc6\x11\x99\x10&3\x8a\xca|\x96\x06\xcf\xc7f\"\xd1\x99q|\xc6\x8f\xd0|\x06\x8cfd\xbb\x1c\xdb0\xc7\x91\x9a\xd1Q\x821\xb4&\x8c\xd7\xa4Al\xd2a6\xf1\xa8\xcd\x14\xdc&\x84\xdc\x04{8p\x1a4f\xd3\xf4\xe4\xe5\x0e!\xff\xa5\x0fQ\xc2D\xe6X|\x11\xd8F5\xa4A\xd3vuC7\xaaU\xde\xaf\x0du9\x1c\xc9\xae\xa88|d\xa1\x0d\xc3\x9f\xfa\xf3\xcd\xf0H<\xb2P\xd1\xbb\xee\xf2\x9a\xdeO<\xc3\x87\xe3=\xfe\xcb\\\x0f\xf2+\xf2D\xc6\xfeS\x04\x14\x91V\x18*\xef\xc8\x8e\xbeG\xb2u\x85\x7f7\x84\xfc\x99\x9d\x81\xf8\xeb\x9c\x14?\x92\x1d;g\xb6\x1dP\x1e\xc6\xc3q\x8a\x15\\t\x8a\xd7\xde\xb1\xbb\x87bkNJ\x8eG\x91\x86BU\xc3\xa1n\xa8\x8c\xbbR'OWw$6Zt\x1c\xd8\xb0\x14\x04\x17\xcf{\x83\xff\x07\xc2:l\n\xc8\x100%r\xc9\xac\xbf\xdaQ\\\x93^r!\xe6JfG\xcb\x96v\xec\xa0\xda\xca\xf8\xb5\x96;\x11 \xf2\xc6a\xbc\xdbB\x996\xfe1\xc4O*\xa7\xeaZ\xf3\x8a,*\xd8\xbd\x7fw>\x1c\xb4\x85\xbbb\x0b\xb7\xbc\xafu\x13y]7\xf8 w\xa5\x94\xfc\xba\xf4p\xdc\x93\x16\x8dl\xb5\x99Z\xdb\xe4\x93\x1f\xea\xc3P)gv\x88\x86\x1e)W\x15\xdf\x92\xa6\xefY_\xb6\x12\xad\x8d|r\x99\x0e\xb4\xd2\xa7\xd1\x83\xff\xe1\xfcD_\x0d\x0d\x00\x98\xb4 3\xd4\x97\xa1\xbe\x0c\xf5\xc5B}q\x0eH\x16\xd6'\x83\xb3m\xc8\xcf\x0f\xc1}\x18\x0e\xb2\xd6\xbcW\x0f\x9d\xb1GM\xc7\x01\xd3}\xac\xb4\x0e\x93\x93\x8e\x90n\xa5\xaeg\x9c)\xb6\xba\xcd\xc3g\x05\x8f\x06\x17F Fis\x18\x84\xbd\xd8+,\xf6\xe13\x10\xd5=\x03\xf6\xbfP7\xa0\xd5hP\xde\xa3=\xf3\x02D\xe0\x17\xd6\xcf|\x8f\xbd\xf5\x02^\x9ag!\xb6c\xfc\xc7\xa9\xe5\x00B\xc3\xf9\xaa=\x85\xfaH9lc\xc3*F'{\x04\x92\xf5uU\xdf\x96t\xb3\x13\x02{A\xd0v\xf4\xe8:\x80\x89\x0f\xe8\xe7\x19u\xf0<\x9fZ\xd7\x87cI;\xf3;\x81\xa9(\xa0*u2\xc6%\xd8W\xb6\x13\xa7\xee\x8eD mdp\x02\x92\xec\xfe\xe42\xa4\xcf=\xc9\x17 z&~'\xea\x1a\x80\xec\x86\xa1B\xa8\x8c\xdf\x1b\x8b\xff\x19=N\x9ek\x0f\x9c\xf8\x18\x8af\x93(<\xa4?\xfduw\xc3\xcf\xe7\xdf\xbf\xfd\xa0|`\x92\x1e\x83\xa0\x81\xea\xd2g\xa2\x87\xa2\x95\x19+X\xc3\xb3\x89\x8a\x0db\xfa\xd5\xa3\xdc\xc0\xa5\xe0D\xd5'j6\xf0h7E\xda\x0c\xb5\xe6\x00h,\xa5\xa6|\xc1\xa7\xcd\xe0\xed\x91V\x03\x8eL\x1a\xb5\x07\x1aJ6\xfcD\xd82\xa5H\xaa\x0d4tM\x8b\x1b*\xc1f\xe7\xe7q\xb0\xcc\n\\Q\xf6\x9d\xb2f\xcb\x9aIZ\x93\x8a\x1d\xf4\xca\xba\xda\xd1\xa6\xbfC[~\xabn\xe4\xa7\x94/\x18\x1f\xad\x9b\x0dek\xcaZ\x99\xb7{*r5Pu\xba\xf1\xe7)\x97}\xaa\xc4?\xa6.\xd2\xb7\xef_\xbd~\x7f\xf9\xe6\xed\x9b\xd7\xde\xb5\x89\x8f|z\xc3\xff\xdf\xf97\xf3/\xfd\x82\x1b\x91\xee_g\xbe\x8a\xbd\x80\xbf\xd0\xa6~\x82\xc7Lfu\xc9\xee\x90}\xa7\x8f\x9fQ\xf5\x17=\xa7 \x08\x8c\x0d-\x8b\x1b\xde\x87E\xc5#\xb0\xb9\x983\xc1r0\xe3zS\xf0\xcc\x0c=\x10\xc6\x1f\x00\x0d\xff\xec\xb9\xd6{\xb8e\xa7\xd0V\xb9,K\xab\x87U\x0b\xd2\xa8U\xa0wd\xddq\xd3V\xf9\x92K\xb8\x90\xed\x06\xeb{os}ey\x94x\xd4Q\xf1X7s]\xca-@\x82'\x96\xf0\xc3\xe9\xd8\xdc\xfaV\xc4\xbeb\x8a\x12\xbe~\\Y\xad\xe4\x16\xf8\x85\xf5S|ue\x7f\x0d]4\nz+\xb0\xfc\xbe>\xa6\xb4N\xb45 M\x15'_\xdd\x9e\xf1\xdd\x06\xa7\xabHE\xcf\xfbN\xce\xad\x16y\x0b\xf5\xc3\x1c\xc2\x14\xed\xe4\xd8U\xd7\x90\x9b>\x0c\xf2F5\xf6\xc6*Z\x1f \xb3\xdc\xa44\xf1\xae\\8E\x0bd\xd7P\xba\x81\xd3\x91\xd9E\xa7\x06\xd9;EOs\x81\xee\xf5/\xac\x99~\x97=\x16GZ\x16\x15\x95\x81\xe2l\x91<\xa9\xab\xb5T\xdar \xdd\xf7\x0e[2\xef\x8c\x10\x88\x81G-\x1b\xd7\xde\x85\x8c\xc3'\xe8\xd4%k\xcd\xf7-\x91\xdb\x8c\xef\xe3\x94k\xf5#G\xc7j\x89\x8e1m\xceZ\xd3\xafa>a\xcc\x87\x85\xb2W\x1e\xf4\xdans\xee\xfc\xb7V\xa4s\xac\xfc+1\xd9*4V\xa0k\xf5\x85\xa6Q\xfc\xaa\x13/8\xafr'\x9a\x1c\xe3\xa8\xe4\xeas\x05\x95\xcf\x96\xb3\xf6s\xb6\x9c\xb3\xe5\x9c-\xe7\xa8E\x9a-\xe7l9g\xcby\xca\x1e\x9e-\xe7d\x96s\xac (I|6w,xu\xae\xb5\x16\x05\x8aZ6\x96\xc3\\3}\x1ex5\xf9\x8e\x80\x0f\x08Q\xa6\xcf\x83\xd7\x96~\xcb\x06U\xb5\xe5\xbc\xd4IP\xbd\xfa\x14\xb7Ki\xc7(lw\x07-V\xd4\x7f\x03%\x1dT\xd0\x9fE9\x8b\xa9\xc6G\xd2k-\x8a/\xa2\xbd7\x8c\x86kJ\xbc\xe3u\xb28\xb5\xd4\xa7+Y9c\xa1M>\x179\x85\n\x9a\xc4\x16\xdb\xd2?\x9fh\xb5\xb6R\x95\x1bB=,\xb9\xf6-q\x94\x96\x12\xe5\x176\xa4#\x91\xd25W\x1dMv\xef\xbf\xc1\xa4\x19\xf9\xaf\xda\xfe\xcbl\x88V\x81\xf5\xa2\x8c\xa4\xc6\xb4\xf0<\xa2\xc5\x9aW\x0e*\xba\xa6m+R\x12\xcb\x80\x07\xaeR\xb8'\x94\x1c`\xfc\xe4\xe0>\xd8\x9e\xa9v\xb7\xfcE\x1a\xb9\xc7\xc1\xd0<'e\x89t\xb6 \x809q\xc4V){[\xeaj\x99R[\xabM\xc1\xb7\xc4\x86s\xf1\x85$\x86e\x8e*\xce\x8b\xca\xdaX\x95\xe1y\x98\x89\xac\x8cO\xfb!e\x8d\xff\xce\xd7d\xe7k\xb2!_\x93\x9d\xaf\xc9\x16\xa5\xcb\xd7d'\xba/\x00\x96\xdf\x19\x00\xe9\xef\x0d\x80ew\x07\xc0\xb2\xfb\x03\xdcK\xd4Y\xc9d\xb7\n@\xf2\x9b\x05 \xe5\xed\x02\x10u\xc3\x00\xa4\xbce\x00\xf25\xd9\xae\xcf\xcc\xbc\x9d\x00\xf25\xd9\xf3n/0\x84\xe5k\xb2\xf35\xd9\x112\xf25\xd9z\xc9\xd7dc\xc9\xd7d\xe7k\xb2g\xdd\xb7\x00\xf9\x9a\xec.\xf2F\x06H|+\x03\xe4k\xb2\xf35\xd9Snq\x80\xf8\x9b\x1c \xee6\x07\xc8\xd7d\xe7k\xb2\xf35\xd9\xea\xcb9m\x1c\x8a^V\x9d\x1cK\x9acI\x95\xbfD]\x03\xe1\xa5\xe4d0\xe9\xfb\xd1l\xf6\x1eA\xbe\xfb\x1f<\xa4`\xbe\x1f;\xdf\x8f\x9d\xef\xc7\xce\xf7cO\xe1\xbb\x16r]\x89y\xae\x05\x1c\xd7\x02~\xcb\xa10\x122YiY\xacd\x0c\xd68{\x95\x8c\xb9\xca\xf7c\xe7\xfb\xb1'0L\xf9~l\x07\x7f\xb4\x84;\x8a\xb92:\xdf\x8f\xad\x94|?\xb6,\xf9~\xec\xbe,\xe0s\"\xb8\x9cx\x1eg\x94\xc3\xc9\xf7c/\xe1g\xf2\xfd\xd8^\xf6%\x19\xf3\x92\x96u\x89c\\F\xd9\x96H\xa6%\x86e\xc9\xf7c\x0f\xb2\x16\xb1(\xf9~\xec|?v&F21\x92\x89\x91L\x8c\xcc'F\xa6S!\xf8\x9e\x1d\x12%\"\xf6\xe2.\xf8m\xe7\xa8\x14W\xfc\xd2\xc4,$\x10Z\xed?\xcf\xdbD\xbd\x19J`N\x96\x12\x08\xba\x03@\xc2l%\xb0(c \xc4\xf4} k \xa4\xcd\\\x02\x7f\xab\xec%\xf092\x98\xc0\xe4,&\xf0\xb7\xc8d\x02v6\x13pf4\x01X\x94\xd5\x04\xa6/\xfa\xd1\x0c'0\x92\xe5\x04\x02\x99N 2x~x6\xb4^\x17\x07\xd3\x9b\x82>cP\xbd,\xa3\xd9O\xe0s\x05\xd9c\xf1_\xf6\x13\x9b \x05|[\x17\x04\x83g\x9dYQ 4?a\x94\xc9\x80\xd4\x19R\xc0\x9d%\x05\x02\x99R`\xac 32\xa6@(k\xca\xf0\xc1I\x97\xed\xfb\xe3\xa7\xadn]\x9eI\xc5\x10X[\x9e\x07#\xc9U\xc0\x95`\x05\"\xda\x92*\xd1Jh\xe6-NU\xa8\xc8\xea\x93\x16*\xbf%\xca\\\xa8~eA\xfaB\xc8'\xf5YG\xe3|R\xcf'\xf5_\xccI\xdd=\xe8\xae\xd32\xc4\\\x85!\x14\xe4\xfbw\xe7B\x92\xbc\xffB\xfcS\xbd\xf9\xf6|\xd8\x17c\xae\xbdE\x03\xab\xd7\x04_\xa8\x1a$t\xe1\xad\x1b\x03\x98q\xd5\xadx\xd1\xd4\x86QY\xcc\xa2\xef\xb9u\xdek9\xe7\xc4\x1f\xb4M~\xee\xb7Y\x06\xcf\xff3\x11\x80\xb13EZ\x14`)\x0e\x101\x1a#H@r,\xe0o\x88\x06|&<`\x0e\"\xf07\xc2\x04\x9c\xa8\x80\x0f\x17X\x8c\x0c\xccR\x0e\x11\xa7v\x88@\x08\xc2\x18\xc14\x94`|M'C\n\xfe\xa6XA$Z\xf0Y\xf1\x82\xf0\xf5\xc0S0\x83\x00j\x10\xc2\x0d\x02\xc8\xc1\xc8\xc1;\x06=X\x82\x1f8\xc5)k\xd0\x1e\xa8\x10\x860\xda\x98\x998\xc2\x08\x92\xe0\xc7\x12Fn\x9aw\xd6\xd3\x87(,\xc4\x14,i2[\xab]\xb7q\\\xc1\x83,\xccl\xd7L\xc0\xc1\x92c\x03\x10\xe0\x9f\xfa\xe35u\xe7~\xc5\xe2\x9f\x85\xe3r\xfb\xed\xc5%:\xa4\x85\x13f\x86\xc5\xe2\xcc\x0f\xeb\xa8\x87y)\xae\xb4\x0b\xf2\x8d\xb8\xf9F\xdc|#n\xbe\x117C\x80\x19\x02\xcc\x10`\x0c\x048\xed:\\\xb9\xcf\xda `\x08\x96\xeb\xad\xc3\x0c\xd0e\x80.\x03t\x19\xa0\xcb\x00\xddT\xe5\x10\x05\x98e\x80.\x03t\x19\xa0\xb3\x1e\xc8\x00]\x06\xe82@\xf7\xd3\x00t\x83A`\xf8\xd1\x13eNf\xa4.#u\x19\xa9\xcbH]F\xeax\xc9H\xdd\xff\x83H\x9d\x98(FX\x9d\x179\x9b\x1aVg \x8a\x0c\xab{C\xef\xba\x0f\xe2&\xb9\xf7xx\x9e\x0c\xde\xf1\xedP^Gw)\x8e\xe0&\x92\xe7q<6\x96\x94\xe8%\xbe#J\x89=\x8a\x80*D<\x9b\xbd\x9b\xd5?\xc4i\xa8\xac0\xb3\xc2\xfce+\xccAU\x99\xa4\x06\x9a]a-\x19Pv3\xd4\xe5\x07Zm\x16\xea\xca\x96Vc\xa9\x1a\xa6(J\x8e\x82f-\xb9P-e-\x99\xb5\xe4/[K\xfa\xb4\xd4|m\xc9\xa4D\xaaH\xbc\xfc\xf7\xa5~-\xeed=i\\\xab\xbb@\x85\x89p\xbeP\x9e\x07D\xbaT\x95\xb6\xe0{Yef\x95\x99U\xe6/Me\x06\xb5\x96v\x89\xb9\x98\xd9\x08\x8f\xf5\x10!\xd3\xa22\xe3\xb7\xd08\xb8\x82I\xd9\xd6S\xc3\xe3\x84\x18\xe7\xba\x9f\xa6w\xa7{\xe2\x98\x97\xab\x9b\x9a0\xadG\xcet&F[\xb2\x92\xe2\xf0\xdc\xe5\x8fe\x161\xe3\xfc\x8c\xf7v\x7f,\xf6\x1d\xff\xa3\x9f \xe83\xa3\x0eG\xf7\xad\xff\xe2I\xed\xee\x7f,\x11_u\\|\xaa}\xb3G\xc4\x99|#\xdb_\xdb\xd7\x88\xa9\x0d\xb5:!z\x18'\xa9\xee\x0b\xc4\xf53\xadhS\xac\xd1\"\xd1\xee\xe2\x97s\x9f/\x19\xee\x0e\xae3\x03\xa2\x16\xc3\x95\xfc\xadu'\x7f{68\xa3\x1c\xbb\xd6\xf0\x07:'e\x89\nK,\xe6\xe2\xaa\xc4\xf5\xcc\x84\xc8T\x03\xf2j\x01\xadn\x05\xe7\x87\x1b\xe3\x9e\xebn_\xb4\xfa'd\xfa>N\x8a\xc9zZ\xd5\xe4)\xea\x89\xacf\xe6\xcc2g\x969\xb3\xcc\x99eK\x9d\x97l\xa9gK\xddk\xa9w\x0e'\xf7\x18\x84\xc3m2O\xc29\xce\xfb\xfd|\xb2\xa5=\x98\x02\x0b\xd0\x86\x8cn`\xc9:3\xeb\xcc\xac3\x1d\xe6fPW\xcd\x026\xe4\xc7g\xe3\x1b\xc3\x9a\x97\xa2&\x00\x1cC#\xa6c\x1b\xca!1\xc3\x1a\x19\xd6\xc8\xb0F\x865\xfa\x92a\x8dY\x06I\x865\x14a\x19\xd6\xc0\x92M\xf4l\xa2g\x13}\xf8K<\xac\xe1\xb0n\xe7@\x1a\x8a\x98Ih\xc6{\xdc\xa4'\x1b\xd6\xc2C\xd7\xf2e\xbb\xaa\xeb\x92\x92\xca\xd4'\xedi\xcd\xcc\x0d\xd8\x96d\xc7\x9bRl\xa5}\x80\x80BF+\xe6\xeb\x9e\xac\n\xb3*\xfc\xa5\xa9B\x17Za\xe8\xa2X\xa8\xc2\x00)\xa4Z \x80\x15g1h\x85\x107\x15\xb3\xf8TI\xd5\xf8r}=\x1d\xb0\x90\xc7\xe2yp\x85\xb5f\xc3\xbe\xc42\xa4\xf3\xd4\xd7\xd9<\xca\x0d\xf5\x11\xeff{Q\x8a^V\x9d\xac$\xb3\x92T\xfe\x12c/\xba5\x0b\x84\x92<\xa9\xaf?\xd5\xdf\x8f\xb4\x12\x87\x97PG\xff\xf24\x9a\x817fE\x96\x15YVd?\x13Ef\xe8\x949\xbal\xc6\xf1\xf7\xc3\x90\x14\xce\x9a\xfcj\xb6\xa6\xd1\x94a\xc6sJ\xda6w\xb26G\x8a6Gb\xb6I\xe9\xd8\xdc8g\x8a\xd4k\xf3\x12\xae\x8d\xf6\x99'\xcdZ\xa2\xe4j\x9f=\xa5Z\xd2Dj\xf1\xe9\xd3>k\xd24\xe5c\xeb\xba=\xd4\xed\x8a\x9c\xba\xfd\xea\xe6\xd9\x15\xed\xc8\xb3\xd5\xcb\xcd\xa6\xa1m\xfb\xed}G\xdb\x8f\xf5\x07\xbeV&[\x01\x04\x85\\\xe2R\x0b\x00<\xeem\"T\x07\xbf\xd6\x10o\xe1\xe3\xd0\x1c\xd7BZ\x7f\xcd\x8d\\.E\xb5\xe6\xd9\xb7X\xe3\x9f\xb4\x9bk\xf8r\xf5\x9b\xdf\x86\xbb\x03\x85~\xacy\x95fw\xc7\xd5}g\x1bFcpW\xb0\x8b\x9c\xf5\x1a\xed\"\xfet\xaa\x1e\xfa\x96\xb4\xf4\xe5\x9a/\xa2\xa9\x1d\x12\xec\x8a\xe3\xe9J\xa7\xf7&Xd\xec\xd1\xcbS\x13K\x83\x85\x13\x9e\xbd\x84O\xef\xbf\x7f\xda\xd0\xb6>5k\n\x159P\xb4\xc6\x90Wg;\xa8d\xd6\xb1\xdfyw;o2liS\x90\xb2\xf8\x0b\xdd\x98\x9c\x17\xbf`~]\x97pu\xe2I\xee\x04U\xb4\x82\x8f\xfb\xa2\x15u\x86\x03S\x8dl3g\x06\x87\xbce\xce\x94\xc4\x94\xfd\x83\xa7\x0f\x98\xcah\xc8\xba\xa3\x0d\x93A\xa1$L\xad\xd2\x1d?\xe7\x8b\xcd\xe0\xd3\xfb\xef\x1f\xb6p$\xdd\x9e\x8b6\x04\xf5\x9c\xb9\xf9\x05\xbe\x8f\x9c\x98\xe9\xf0\xe7\x13)yv*\xec\x15!\x96\xb7\xff\x11a[\x8f\xf9\xea\x8f\xecc\xdeK\xf5\x7f|\x8cu\xe5\xc2\xda}}*7L\x9f\xb1\xc6\x1ar\xd6\xa4B\xfb\x85\xaf\x17\xf3+\x8f\x98\x05v\xc6\xba\x87\x13u\x0fV\x0f\xd8\x92\xa8\xea\x0e\xc8zM\x8f\x1d\xdd<\x1e&\xbb,\x17\x15\x1cY\x87\x15kz\x06\x1d%\x87\x16N\xed\x89[H\xc7\x862m_\x94\xac.]\xcd\x1byUT\xa4\xb9\x07R\x96\xbc\xbdf\xb25i\xae\xdf\x9b\x9f\xa1wG\xba\xee\xa0\xe8\x98\x86>\xb5T\xa6\x15\x94L}\xbd\x85\x97\xd5}o\xb0\x9e\xf1u\xfb\xe9\xfd\xf7-\"V\x864&@\xb9pK\x96v\xbd\xa7\x07\n?\xee\xbb\xee\xf8\xe3\x19\xfe\x7f\xfb#g\xea\xabZ\xfc\xf5\x8c\xcf\x14\xb6y\xd4|\xe6\xf3\x962\xfb\xf6t\xb4\xba\x9b\xb5\xd0\xfa\x06mn\xb8\x89M:8\x90c\x8b\xc3\xcek\xda\xd5=\xd5\xc9\xad\x12a\x17\x93V\x98\x1f\xed\x0b\xab\xf7\x7f\x05\x17\xdb\xa1nl\xb8\x8eM}Sl\xe8\xa6\xaf>\xfb\x91\xb4\xed\xe9@7V\xca\xd7_\xc1\xcb\n~\xff\xf1\xe3;\xf8\xdd\xeb\x8frc\xff\xf4\xfe{\\2\xf7\x05-7@\xe0\x8f\xe6\xc4\xfbx\x7f\xa4\x7f\xfa\xe3\x9f\x0ca I\xe7J\x8e2*e\xde\x7f\xc7\xa6\xde\x9c\xd6\x14H\x05\xb4i\xea\xc6LW\xf8+xy<\x96\xc5\x9a\x8867\x94\xcd\x91\xfa\x16\xb7\xe45Y\xb3\xb5X\xd7\xd7\xa7c\xcf\xeb^\x11\xb6ac\xa5\xad\xaa|z\xff=\xff\xee\x9e\xdc\xf0\xa1>(\xb3q\x83\xd3\x91\xc8j\xb2\xff\xbe\xa9\x0bf\x16\x98I A|\x94/\xb0\x86n\xeb\x86\x9e\xc9\xd7\x984\xd2\x15WEYt\xf7PQ\xba\x91\x07\x05\xae\x00\x9a\x1b+\x01*\xd32\xfd\x99\x85-\x08\xb6\x02V\xf0\xe8SKe.?\xd6^\xee\x15C\x0e\xf8\xcc\x81Tdg\xb7\xcf<\x02\xad\x1e\x9bc\xfb\xa6\xee\xf8\xe9\xb3ha{\xaa\xd68WYM\xc5\x9a\x1e\x8e\xc1\x8a\xeb\x81\xab3k\xeema\xfb\x1b\xc8\xe9\x00\x0de\x1a\x95\"`\\t\xf2\x03\xdc\x9e\xe2\xe7\x92~\x86_\xd1]Qq\xab\x94\x1d\x85-\x05y\x7f\xa4+\x9ck\xe4X\xb4\xabu}\xb0\xf5\xcd\x07>\xd3[\x91\x1b\xb3\xdb\x93\xca\\\xaf\xf0H$\xefFw\x10\\\x1a\x8f\xe1\xc0\xcftW\xd6\x82\xe4\xd5\xe4\xde\xc1\x05\xb3L\x99\xa2G/\x1by\x9d)\xb4\xf4@\xaa\xaeXk\xfe\"|\xaeGn\x94qN4\xd6\x0e\xfa\x03[\x84W\x14\x08\xfbX\xb1Q\xb6Ak\xdf\x13[\x08\xb9\xaao\xa8\xac\xb83\xff\xae'o\xa1\xf6\xed\x1f_V\xf7?\xca\x0d\xb3eK\x964WE\xd7\xb0I\x1f\xa8\x83\xd4]<\xa5\xa6\"\x0e\xf3\x1e\xaa\xdd\xce4\x0cW\x80X\x87+\xdb\x00P\xbf#\xf7tm*\xbc\x93\x93\xaf,\xaex\xc5\x84\xdek\xa1=\x1d\xb9\x83`Ws\x9b\xfd\xe9\xa9b\xff\xc7v\x07\x1c\xb3\xd6\x9e\xe5\xe6fXo\xe1\xd4\xe1\xb2\x96K\xa7\xe5\xeeZC\xb6H\xee\xc2\xc6]M\xd0\n\xec\xef`a\xdf\xc1\x8eV%\xbe\xbe#lr\xc1\xb3\x17\xdc)\x8e\xaf\x14Q1\xd2w\\Q\xc1\xf9\xaf\x7fm)\xe9\xef\xea\x1a\xb6u\x0d\xdf\xc0j\xb52=Y\xd8\xe7Huo\xfeL\xaa\xfb\x15\xfb\xd0wM}x\xb4\xad\xeb\xc7\xe6\x03\xab\x95\xa9\x81\x8b-\xd2\xd6\x7f#7dVc\xe1\x1b\xbe\xd73\x89\x13\xdbV\xb4\x8f\xbe\xab\xeb\xd5\xba$m\xebl\x1a~\x9a=\x8a5V\x1e7\xbf\xf2W\xe3\xdfO\x9f\xb2)\x12\xfa\xf6\x07r\xa0l\xeb|\x89\xb5\xd8\xd1N\x9c\xf2/\xaa\xb6#\xd5\x9a>z\x1c_)\xe7\xdbv\x1d\x1d\xe3\xf2\xd5\xc8\xb8\xbc\xbb\xef\xf6ue\x8d\x0c\xd6\xe2\xbb\xba~\xb4Z\xad\x1e\xdb\xf3\x0dG\xe5\x91\xe3/|&\xf2\x91\x8a\x19(\xf6\xc2\x05\xf6\xd0\xab\xd7\x1f\xce\xdf_\xbc\xfb\xf8\xf6\xfd\xe3\x17V\xaf\x0cs\xd5%\x1a\x85;Z\xff\x9b\x91\xd6\xff\xae6\x1b\xce[\xfe\xe2\x1b\xf8\x87\xe3\xd5\xea\xbb\xba\xfe\xcf\xd5je\x8e=\xab\xcc\x193l\xd8s\xa4\xba?^\xad\xde\xd0[g\xbd\x8a-\x7f\xee\xbf}\x03UQ\xba\xbc\xd8\xecN\xb1\xa6\x9a\xeb\x19\xa3\x92\xd6+\xe2\xbbX\xbf\xd5\xa7\xea@\x9avO\xca\x8f5.\xa19\x95R~a\xc7\x0f\xde\x97R\x1bJ3\x14\xae\xee\x07CA\xeaj\xf4\xd7\xbc\x97 \x1e\xdb\x82Ua\x0f\x1d\x86\xc0SvrZ\xf1?0\xd3\xe8\xa1\x80[{\xdb\xa2'\xabqLUq\xbd\x82\xae\xca{i\xf9[\x07\xb1\xde\xe8\x02\xb2\xed\x04\x04\xce\xcf~\x0f\x9f>T\x85\x89c\x87\xfc,\x9e3\xa8\x98[\x0f\xb6u\xbd\xba\"\x0d\xaf\xf0\xdd\xd3\xfb\xd5_\x1e`[\xd1\x926\x8f\x03\xfcs\x0f\xd8S\xfaf\xf1o\x1f\xde\xbe\xf9\xc2\xec]\xf6\xe3p\xb6D\x0b\x85G\x14\x88\xed\x1am\xefSK%\x88\xb1;\x95\xa4Q\xa5\xd8/\xb3\x077t\xd8j\xcf\x06\x0fO\xb1\"\xce\xc4\xee\xad\x9dH\x95m\x90\x07Q\xc1\x8f\xff\x935\xedG\xe1\x1c\xd0\x1b\x0ejG\xad\xe4\x02|a\x99\x91d}\xcd\xd6\xdep\xc8\xd8\x16%55\x99\\\xa1\xefh\xd3\xd6\x95c\x8a\x8a\xb3\xfe\xb6h\xda\xee\x92\xf7\xac\xd3\xefS<\xc6\x86V>\xf5<\xa85Y\xb1\xbf\xf6\x80\xb7\xf8\xc1\x0bx\xe0\x9a\xabzSVX\xe7\x07g\xb6\x14^\xdb7\xe4\xc0$\xfd\x0bV\xed_\x1d\x8f\xb1\xda\x1aO\x85\xaa|\xb1\x15\xe6\xaf>\x968\x16E\x0b\xb7\xb4,\x9f\\W\xf5m\xc5W\xcd\x1e]\xd5OmW\x1f\xc4\xdc\x1bd\xe9\x93\xe6\xcc\x08\x0b\xc0\x994\xb8_\x8b\x0f\xb2 R\xed\x80\xe0\xf4P\xc5\xfd\xc8\xa7\xa9\x9c)\xfb\xba\xdc\x08\xcf\x95\xe1\xeb\x1c\xb7\x103\x0c\x04j &\x98*\x89\x8b\xeeg\x15>\xff\xfa\xb7\xd7\xcf\xa6\x0b\xd3f \x8e\x90\xe6\xf1wd?Q\xd6\xf9\x92\x01\x066\xa8p\xa87\xa7\x92\xfa&8\xa7\x87\xc5\xea\xee\xb9\x8d\x8bW\x93\xe7\xbaT[\xe3\xbc\x84\xd6\x8e\x87\xeey\xb9z\xfe\x10?\xecr~\xf4\xd7\xd6\xbb<\xc4\xeb\xf6\x9b\xcaR\x89\xe8\xa0\x8bj[O\xee\x99\xa2\xda\xd6Cwh\xadg\x7f\x92u\x96\xea\x8d\xff\xd6_\xe2\xd1o\xafh>+\xaaxe\xf4p\x14\xabc\x8d\x0e\xf8\xb1*\x8b=\x02\xdf\xb7 \x10\xe7\xe9c\x92 \x04\x92\xc1(\x1e\x06iY%\x082K\x90\x94]\x82\x94\x0c\x13\x84X&X\xc64AB\xb6 F\x19'\x98\xcb:\xc1\x12\xe6\xc9\xd5c\xf7G>_<\xec\x13,a\xa0\x1c\xb2p\xa9{X(X\xc8D9\xc4\x9d\x8e@\xac\xe3g\xff\xad\xa4\x8c\x14,g\xa5 =3\x05\xcb\xd8)X\xc6P\xb9\x97\xa8\xb3\x92\xc9x+H\xce]AJ\xfe\n\xa28,H\xc9cA\x80\xcb\x82\x85|\x96k\x8d;\x18.\x88e\xb9`1\xd3\xe5\x10hs_0\x9f\xff\x027\x07\x06c[| \x1bA\xcc\xfe?\x93\x13s\xa9=\xc9\x92\xe1\x88hO\x84\xeb\xb1\x8c\x1f3\x84\x89\x0b\xe8,\x8e\x0c\xd2\xf0d\x90\x9a+\x03\x07_\x06\xcb93CZg1h\xb0\x90E\x831r \xfcl\x1a\xc40j\xe0\x86\xc9'1k~\x19\x16&\xb9\x88e\x83 \x9d1\xc6\xb6\xc1h\xbbGY7\x98\xc6\xbc\x81\x8b\x12 0p\x90\x84\x85\x83EL\x1c\x84\xc6p&#\x07c\xac\x1c\x04\x999\x18a\xe7 4\xb0\xb1,\x1dD0u`\xb3u\xb0\x8c\xb1\x838\xd6\x0e&1w\x10\xc3\xde\x81\xb7\xd3\x9cS\xd6\xf7\xec\x18\x9b\x07\x8b\x19=\x08U\xd4\xf85)\xbb\x07\x0b\x19>C\x94\xcd\xf7Aj\xce\x0f\x12\xf3~\x10\xe0\xfe\xc0\xc5\xffA2\x0e\x10R\xf2\x80\x90\x9c\x0b\x84h>\x10b8A\x88\xe7\x05!\x92\x1b\x04\xd7\xfa\x00'\x8b\x04\x13\x98\xa40O\x08\xf1\\!\xc4\xf1\x85\xe0jFJ\xde\x10\x96r\x87\x86,\x8bI\x84\xa4l\"$e\x14a\xf1|\x18e\x16!\x82]\x04c\xd3\xf1\xb1\x8c\x10\xe3\xbbh\x058\xba\xf3\xdfM\x91\xe3\xa6\xc0|\xd8\xbb\xc4\xcc1\xb6My@G\xfe\xc3\xe4\xd7?F\x00\xfe\x93\xc1~\xa2\x86q8\xdfq\xbf\x07^\xa0\xdc\xdb\x8b9\xe4\"\x87\\\xcc\x07\xbe\x11\xb0\xb3\xfa(\x87\\L\x01\xb8\x17\x82\xdb\x89\x81\xed\x05\xa0\xf6\x02@\xdb\x89\xae&\x83\xae\xd3\xc2\xd6\xc9 \xebq\xb8:\x19T\x9dC.r\xc8\xc5\x04H9\x87\\8\x00\xe3%`qL\x14B\x0e\xb9PJ\x0e\xb9\x90%\x87\\\xf4e\x01\x80\x1b\x01\xde\xc6\x03\xb7\xa3\xa0m\x0e\xb9X\x02\xc8\xe6\x90\x8b\x1cr\x91C.\xd2A\xa7\x8b`\xd3\x1cr\x11\x15r\xe1\xb6\xc4](`0\xdd\x96\x0eF\xc2\xfbw\xe7B\x92t\xc4\x1fG\x1bg\xa4\xc5\x11/\x9axcT\xaa\xc0\xe8\xbbZ:\x8f\x07\xaf\xf7\xc45v\xb4J\nO\x86=w\xd3A\x94 A\xca\xa0\xcf\xee\x02\xa02\x1dT9\x06V\xce\x84+S\x03\x96\x01\xc825h\xe9\x85-\x17\x03\x97\x96<\x9f\x7fnZ\xf0r1|\x99\x1c\xc0\\\x04a\xa6\x071\x13\xc2\x98\xa9\x81\xcc\x84Pf\x0c\x98\x99\x10\xce\x0c\xf9\xdd.\x814-an\x9f[\x87E\xe1\xd2R\xcb`NK\x9c\xcb\xdbv&\xf0\xe9\xf1\xb4\x0dl\xc5\x01/\xdb\xb1]z&\x04j+.\xaf\x7fm\xa8\x06\x89\x81P\x17\x14\x9a\x04\x0cM\x0c\x87\xba|j\x17B\xa2\x9a\xac\xce\xe1O\xbb\x04 \x1du\x1f\xf5z\xd2\x8e\xc2\xa4n\xb7\xb4x\xa8\xd4\xfd\xfe_\xddm\x9f\x05\x98\xc66~\x0c4\x0d\xb7t\x148\x9d\x04\x9d\xba\xdc\x0f\xfd\xfe\xb2\xcb\x01\xd4%\x10\xaaw\xb4f\xc2\xa8\xa3^\xb2!\x1f\xd9\xb0\x87\xac\xa7\xf3b\x01\xd5qH\xd5\xe1\x19\xbb\x00V\x8d\x02V\xa7@\xab\x11\xe0\xaa\xc7\xcd\xd4\xf1Y\xe7sc \xebR\x98\xd5[=\xed\xb7\xa4`kr\xb851\xe0\x9a\x16r\x0d\xf9\xba:<]\xd3\x00\xaf \xa1\xd7\xd4\xe0k,\xfc\x1a\x01\xc0FC\xb0q \xac\xd3\xb3\xd5\xf5\xd5X\xb0n\xcc\xab5\x12\x8c\x8d\x82c\xad\xca\xa7\x84d\x93\x83\xb2)a\xd9\x94\xc0\xec\xb2\xf1\x1e\x05g\xc7\xe1Yuc\x10\x89 $\xde\xc9\x0f\xf7|H\xef\n\x9e\xc0\xa5\xff\x8bx\xc3uy\xaev\xd6P\xae\xd0\xd5\x93h\xf4?\x0b\xc5'\xc1\xdeacp\xa2\xa7\xf9\x86]Q\xf2\x0d\xbb\x8e\x1bv\xc79\x86\x88\xd4\xf3\x16\xc9\xd0:X\x06YO\xa7\xcb\xf3W!\x12\xe2\x07\x9e'F\x88\xfe\xf6\x9e\xa9\xd8\xb9|Dv\x7f\x9e\xc8-$c\x16\xb2\xfb\xf3\x026!\xbb?Oc\x10\x16\xf2\x07\x89\xd9\x83\x05\xdcAj\xe6 \x19o\x90\x965H\xc6\x19\x8c3\x06\xc9\xf8\x82\xec\xfe\x9c\xdd\x9f\x97\xa0\xfe\xd9\xfdy\x19\xba\x1f\xe3\x11\x9c\xdd\x9f\x95\x92\xdd\x9fe\xc9\xee\xcf}Y\x80\xd3G\xa0\xf4\xf1\x18\xfd(B\x9f\xdd\x9f\x13\xe3\xf1I\xd1\xf8\x94X|v\x7f\x86h\xfc}\x14}\x8f\xc4\xdec\x90\xf7\xec\xfe<\xc8J\x8c\xb4\xa7\xc3\xd9\xd3\xa1\xec\xf3Gw\x14a\x1f\xc3\xd7G\xdd\x9f\x03\x88`\x10\xa5Te\x9c\x1b\xcbL\xb4\x1b\x8b3\xb9 \x8c\x9b\x14\x81$'\x10iq\xcc\xc4\xc2\xdd\xca\xd4\x9b\xf0\x04\"j\xb3\x0c\x1d\xb7\xc4q\xb4\xdc\x99\xfc\x04\xd2 \xe5X\x96\xe1\xe5\x968n\xd18\x8d\x87\x85\xd8\xb9\xfd%GB\x14X\x88\xa8c\x19\xc9\x0d\x02\xa1\xe4(\x10\x83\xb1cqf-\x98\x84\xb7c\xf1\xc9q\x84\x82/B\xe0\xb1\xc4w\xce\x18\x1a\x8fe\xac\x17F\x91y,\x13\xf0y,\x8e4\x14\xc1\x84*\x90\x04\xb1\xc72\x1f\xb7\xc7\x12\x18\xd9\x99\x18>\x96\x91$+0\x92h\x05F\x93\xad@x\xc0c\x11~,c8?\x16+\xf9\n,\xc3\xfc\xb1D \xffX\xe2\xf1\x7f,\xa3,\x00\x16_'z\xa6\xb5\xff\xf91v\x00\xcb2\x8e\x00K\xa0\xca\xd6\xef\x8bX\x03K\x9a\x95\xbc\x05\x16r \xf6\x17\x1c ]`)\xc3`W\xd9L\xf2\x02\x89y\x07,\xfed/\xe0N\xf8\x02\xc9\x98\x08,\xc9\xf8\x08,iY ,q\xdc\x04\x96Q\x86\x02K$O\xa1=<\x92\x0c\x06\xdc\xab\x0b\xf6\xdc\xf2_\xf5\x83%\xf2\xc2\x1f,!\xd2-\xfa\xf2\x1f,]\xfc\x15@\x8eok\xad\n\xb3\xa1l\xf6K^\xf6\xea>\xb3\xa2\x99\x15U~\xff\xa5\xb1\xa2qt\xa8 B_\xea\x8b\xe4\xfd\xbbs!\xcf\xe2C\xafHu\xdd\xd3\xa1\xafhU\x1f\xde\xdeV2\xee\xd1\x9a\xc6\xf6\x14\x16N\x11&\x0dj\x0c\x92\xbe\x82\xf1\x95~Qu\x83o\x05\xee\xb2\xf5m\xc5V\xf5\x914]\xb1f\x06\"lX\xc5\xc4\xb2\x93\x93\xe4\x8a\x94\xec\x88l~9j\xd1qyQ\x93\x8b\x1c\xd8\x00G<\xea_\x7f\xe7u\xa1h\x10\xe8\xeakZ [Uk\x18\xdfCH%>\xa9\x9dY\xdf\xbc\xfd\xf8\xfa\x05\xb7\xb0\xf1\x8f\xc2\x8c-\xb8F\xba`[\x117 z\xdcV\xb3\"p\xcc\x15im\xb1\xabHwjh\x0b\x0d\xfd\xf3\xa9h\xf0T\xb5\xabw5\xdf\xb3W\xf6\x84\xec\x1b4L\x91\xbeIm\xd7\x9c\xd6L\xdc`\x1eq#\xa8\x02\xb2\xe6\xcbC\x19\xd5\xba\x11V\x8e4\x91\\\x83\xcc\xd5\xd15\xad\xb8.\xd1\x8cs)PN\x17\xdec\xf8\x9b>+\x86#\x83)Sv\xeb\x87\x82M\x1e\xb1\x0c\x9e\xb4\x9bk\xf8r\xf5\x9b\xdf\x86\x16\xc6\xa7\xaa\xe8\xa2\xd7\x851\xc3\xc6\xa7\x0c\x7fa\xe8Al\xaf0\xf2UB\x98m\xb3\x95x\xfaT\x15\x1d\xa7c\xe1D\xba\xfa\xf0X.\x0dzw\xac+\xaaN[\xfc~QutG\x9b\xfeW\xa97u\xb5\xe9G\xb9\xa5\\\xb5\x9a\xc7\xfa\x16\x15\xe7\xb3/\x87\xbf\xe3\x80W\x14iqEBC\nq\x06\xbe\"-\xbd\xc4fp\xf3\x03\xeaf\xc3\x8e\xbe5Pv0V\xda\xdaw\xfe\xc3\x16\xdb\xad\n|&\xba\xe2\x1bx\xf6\xe5\xff\xe9\xbf?\x08W\x9f\xe5\xc4\xb5\\y\xca\xf7\xeb-\xf6\xdf\xc0\xca\xae\x1b\xca,!2|\x9b=\xf4\x90=\xf4P\x11h2<\xfd\xf7\xbf\x81\xdf\xb2\x13\xc3\xa9}\x01\xcf\x80\xbd\x85\xf5\xfb\xad1N\xa4,HK\xe7\xf9\x90\x18sI\xecsB\xa2n\x16\x89Y$\xff&\xb7\ne&\x8d-x\xde\x03\xca\xa0\x13\xb1\xe8M\x02\x82\xa0Pu\x0dH\xe5v\x12\x9d(\xc6\xbeX\xcb\xf5\xe8^q?\xd0\x8elHG&,\xb8\xa1\xf6\xa1e\xc7+u\xc9j3\xaf\xdf\xa3}w\x1c{L\xf0l2F.-R\x10\x964}\"b\xb1\xd5\x06\x16\xb7\xf2\xc0\xe2V!X\xc6Z\xb4\\\x9d`Y\xa8T\xdc=m\x7ff\x8a\xaa\xc1\xb2P\xe1X\xf2P\x01y\x88\xe5\xa9\xca\x07\x8b\xa5\x82\xb0\xb8\x16\x04\x16kY\xa8/8'v\x02\xd5\x84%t\xc4Y\xa0\xa6\xa4\xf08e\xa5\xb5IQ&\xe6\xca\x94-Tw/\xd6<\xf1mX\xd7\xfd\x99\x9d\xcd\x8c)\xa6\x82\xb6\x94\xd8\xcb\xe6\xb7\xf9o8\xd5\x1e\x0dN_\xec/C7\xc9#7\x9f3\x8a\xbco\xe0\xcb~\x8al\x8a\xf6X\x92\xfb)u\xd3\x86E\xbc\x0fE\xb5)\xd6\xa4\x13\xb6~{\xda\xedh\xcb,2\xb1R\xd9\xe0\xf4\xd5\xb4_G\x87\xe9u\xc9\x0e\x98\xfd\x11\x91i\xbc)\xf5z\xe8\xb4\xf7\xbezh\x8e\xe8C\xaeJ\xd5\xa3\x89\xe6\x8d\xc7m\xf7Gt\xf7\x02\xce\xb9 x\xc9\x96\x94\x94\xd2\xde\x1f\xae\xearJ\xb5\xb4\xa1\xc4\xd7\xe5\xf9\x0e\xbf%~\x93^r\xed\xbe\xbe\xad\x80\xbb\xaaK\x87\x1c^\x9b\x97\x1f\xdf\xfe\xf0\x18]\x1e\x15\x81k\x1d\x0c\x17s\xa0\xe5D\x03~Dt\xb1\x0e\xf3\xbb\xbbJy\xb6\x1c4\xbc\xd3\xf9\x92\xfbE\xb3+\xc6g\x82\x07\x03\x05\xcf\xa6\x0e>\xd0\xc7\xb3\xb9\xc3H\xfc\xa1s\x93\x87\x90^\x93\xef\x85\xd1D\x80\xf9\x18\xa9S\x98\x83X\x19\x8a\x0f+\x85\xbe!n\xbc\x14F0S\x88li*\xec\x14\xe6\xe1\xa7N9A\xa2f(\xd3qTX\x88\xa5:\x05\xf6\x84N Pg\x1e\xa6\n~\\\x15\x02\x8b\x0c\x8b\x07_\x85\xf1\x05\x92\x0cg\x85Q;*\x01\xde\n0\x15s\x05H\x8c\xbb\x82\x85\xbdB\xa8\x97\xc3\xcbr \x0ek\x88Rf\xdd\x97\xda\xd4\xb2\xf0X\x88\xae\xaf5\x84\x0b\xb1YE\x84\x13\x9f\x05\x0b\xa3\x85\xe8\xba\x8eb\xb5\x00i\xf0Zp`\xb6\x10]Mk\n,\xc6o\x0dy<\x80}m;4\xc7\xe2\xb80\x86\xe5\x82\x89\xe7\xc2\xfc\xc6'\xc2v!\x0e\xdf\x851\x8c\x17\x9c8/,j\xdf\"\xcc\xd7\x10\xd7\xd5>\xdc\x17`\x0e\xf6\x0b\xe3\x1d\xe2\xd7\x07\xd3q`pa\xc1A\x9b|\xdcV\x8e\xcf\xf3\xa1\xc9r\x1c\xe7\xe0\x82\xa7\x98X\x93\x12\x0d\x06\xbb\x02\xfd7\xafNl\x07[S\xee\xbc\x8a:\xaf\x0f\x8f\xc7\x83\xbe\xd8:\x8b\x8a\x1fF\xd8a7\xfaH\x90O\x01\xf9\x14\x90O\x01\xf9\x14\x90O\x01\xf9\x14\x90O\x01}\x89\xabk>\x05`\xc9\xa7\x80|\n\xf8\xfb<\x05\xa47\xfcG-s\x1e\xb9\xd0\x8a\xe3\xc7d\xf3\x1c7\x9c\x9a\xcb0M\xf4\xb4L\xb8\x15V\xa3Jq\xee\xfdZ\xa7'\n\xb1\xc1b\x11Yj]\xfeF\x86\xbf\x9b\xeb\x1fym\xcc\x82\x9eM|Y\x92\x96\xf0_\x960\xc1\x87Y\xbf\xc7\xd1bXBM_\x1c\xc2\xa3I\x93\xe1<\xda\x8f\x8b\xa3z\xf4\xc5 \"|\\\xb3\x12\x02\x81>\xda\xf3A\xb5\x98\x9d \xb2\x13\xc4/\xc3 \xc2\xbf\x8bi\x13\xf3\xfd\xbb\xf3a;e\xb6\x89\x90a\xbf\xce\x1f\xc5\xdc\xd3\xfd\x8aq\xad\x95\xaf\xbf\\}\x15\xb9\xbd\xe6}5\xef\xaby_\xcd\xfbj\xdeW\xf3\xbe\xfa\x0b\xdcW\xe36Tu+U\xbc\xc6\"vRo\x94\xf9P\x91v1\x83\xf4\x99\xf7Q/\xd7\x14DV<|S\x08\x0c\x0f\x86\x1b:7\xc9\xf06\x19\xd8(G\xb6J\x88\xd8\xf9\xe4S \xf9\xa7\x11\x06*\xccA\xc9&\xf9Y\xa8q\x1e*\xb6\xd5)\xb9\xa8tlT4\x1f5\x97\x91\x9a\xc3I\x8d\xd54\x8a\x95Z\xc2K\x05\x99\xa9\xd0r\xc4\x12`\xa7\"\x16QR\x86jlS\x86T,\xd5\x1c\x9e\xea30U.\xaej\x91\xb1\x9e\x90\xb1\npV\x1e\xd6*\xbe\xe6\x8e\x81M\xc0]\x8d\xb3W.\xfe*\xbe\xd6Q\x1cV:\x16\xcb\xcdc\xc5W\xd71=\xe6\xb3Y\x96(%F\xd9\xc5gMc\xb4\"8-\x07\xab\xb5\xa8+\x12r[\xd1\xec\xd6(\x9d\x03^\x86ki[S\xf2\\cL\xd7\\\xae+\xa2{BZd\x1e\xe3\xe5\xe4\xbc\xacOi\x9d*\xadr\xe8S\xebs\x9c\x82\xab\x1b-\x80\x95k~\x11\xa6\xd7\xd0]\xd1v\xb4\xd1z\x93\x7f2\x07\xef\xe5\xf3\xf5/\xf1|m\x1dk'2\xbf\xedL\xea\x17\xe3\xa8'\x9f\xa5\x8fJ\x1e\x03\xaby\"B^[\xd0Jpvo\x1aj\xb1\xd9X&\xac,w\xd88\x04l\xf4\x9f\xdeI\xd3\x937ax\xcf\xce\x9d\x00\x11[R\xca\x1c\n\xd0\x9f\xd2\xcd<\n\xe0\xce\xa5\x00\xa3\x15L\x90S\x01R\xe7U\x00wn\x05X\x9e_\xc1\x9c_\\\x1d\xdb9\x16`n\x9e\x05C\x86\x99u\xc1\x9dk\x01\xf8 \x85\xf2-\x80s\x0e\x06\xd4\x96\xae9\xb4=\xd4\xd6Y|oa\xc7\xd7\xbb\xa7l\xdd\xabZ\x84+\x85\xa0\x8eR&\xcbdE\x953\xa8LZ\xfd\xee\x95o\xad\xfaQ\xe3J\xb3P\xa6[Zx\x12\xea\x19-\xb6\x16Ty5_\x89Lu(LL\xab/y\x11\x91\xc0^\xe7v\xca\xac=&[o\xd9z\x03\xef\xf8\xf9\x94\xd3\x08;2\xbc\xd1S\"(\xcfy`\xfb\xc7\xa0f<\x8a\x95)b\xf4\xbfEcr\xb2\x96\xcc \x19\xe2\x88\xf3\xcf\x90\x90ad\x08\xb5\xb9\xb4\xd3&S\xcf\xa0\x0bq\xdb\xba\xbf.\xa6\xdfn\x07:\xfda\x0b\xad\xfcT\xcfd#\x9a\xda_b\xc8{p\x84\xa1\x9b4\x1f\xa7\x1f,r6\xa5_h6%kr\xe5\xbcJ\xbc\xe4\xcd\xdd\xac\xc3\xcfzs\x0f+g\xf7q\xc7\xa3\x96\xb9BFaR\x1f\xcb\x8a\x86\xd5r\xbb\xc4I\xe2\xc3\xe9x,\xef\xdfn'k^S\xcbMXI\xd9\x04\x18W\xa0\xa1Yf\x0cY\x10\xfa\x13\xa0\x9f|gZV\xa6\x8fl\xb5\xe0\xab\x93\xe7G\xcb_\xcb\xfb\xf2\xcfo_\x16\x9a\x16\x07\xa8\xdf\x8f\xf1_\x02l\xe5\xfb\xafxat\xfb]xxW\xbbe\x84\x89\x9c\xa0c\xf2n\x9dwkpT\xd4\xa7\xd7b\x94\xa8\xf2\x9a\x90f\x91'\x1em\xaa\x9c\xfa\xa3\x15\xa8\xa1\xdc\x1c\xa345 n?}\x17B\x80\x03\xec\x87\xe24\xbcO4\x7fS\xb0\xaa^\x9d\xd8\x97\x95\xcb\x7fJ\xba\xe3Z@\xfcW\xdd\xbc\xa7\xb7\xa4\x89\xef\x14q\xb5^\xdd\\\xc6\\\x97\xd5(\xc2\xe1\xefk\x0fzE\xd7\xd3\xb6!\xd8\xd0uq \xe5\x8c\xdd\xe8\x15]\x7f\x9e\xdd\xc8\xdd@\xef,1\x9d\xab\x86!\x11o\xa2K\x85|\x89{)JQb.\x8c\xcd\xd0\x89 \xd7\xd7\xf5\xe1p\xaa\x8a\xee\xfe\xb2#w\xc1\xa9\xc8\xbd\x19\x99\x80\xba\xa5\xcd\xa5{b\x86lZM\xd3\xaa\x0c\xd9G\xe9\xd8i\x08\x1fFp\xe0\xc8\xf8L\xe0\xcc\x93\"\xac\xac\xab\x1dm\xd0\xd7D\xf9Yl\xd3wO\xd5~\x12\x04\xec\xc3Vt'\x1c\xe8zO\xaa\xa2=\xc8=\xe6\xaa\xaeN\xed\xe7k\xa8K\xfaO\xd4R\xb6\xd26\x0d\xb9\xe5\x9a(EB\xf2\x96r\xf7EAn\xca\xad\xc7Q\xa9\xb1I\xccw\xabs95\xdf\xd5u9\xd9z?\xd6\xf6\xed\x1bYo\xfe\\\xf4\xa6\xd5H6\\}\x93z\xa5\xc4\x7f~\xd8\xaahZ\xe0X\xe9\x9c0\xf1n%\xda\xeb\xb2\x93\xde\xbf;\xb7\xcf\x99\xfe9;h~T\xf8\xd3\xf1`\\\xac\x7f\x9fp\xf0\xdf\xe7\xd4\x15#f8\x04\xe0od\xbdnN(\x86({y\xc8x\x08\xcf\xa3\xf8\xe9l\x89\x98?\x97\xf9\xb1\xe1g=\xa1\x03V\xb5*\xcf1\xb9\xcd\xfd]}\xfc\xe7\x1e\x84\xe4\x8f\xd8\x1dyu\xcc\xbfj\xc1R\xf5V\xd3\xe5\xb1\xbbl\x0d;\xc4\xf9\xe2z\xa7,\xee1\x1d6\xd7\xb6\xc7\x12g\xe1;\xeaa\xaa\x99\xc15\xd8\xafj\xea\xfe\x86s\x035\xf9\x1ck0o* 7\x15D\x9f4\xe3\xfatP F1\xec\x13v\x12\x97\x16\x9f\xb3\x9d\xa8rf\xee)u\xf3\x07\xa9\xb0\xa7o(\xbd\xae\x9f\xb7\xa7\x84\x8en\x83h\xad\xeb\x95\x9f\x95\xa5\x85\xe75\xec\x95j\xc7:-v0\\\xcd\x9f<\x12\xaa\x90\xd9\xc3\xf0\xef\xe2\x08\xf8\x12w\xcd\xc9c\xa1\x1d!\xc7\xc0,\xa3k\xccw\xb5.\x1fz\xb9\xcf\xa9Q\x0b\x9cyRG{\x1a8\xa3\xb7\x0dIS\xbb\xfc3\xfa\x9d\xeb4\x85\xe9v\xbe\xc0\xe3\xdc\x03\x0e\x81_Q\x87A\xa2\xc0\x8bc6IR\xc0\x08\xfcP\n\xcc\x87S`\x1c<\x82\x84\x1d0\x11H2\xc4U\xf5g\xea\x81\x11P \xfa\x1e\xf0\x02K.g\xeb\x08nC\xe0Q\x13\x97e\xafC\xd9\xe9\xbfh[~\\\x9a\xb8F\xd7\xfd\xab\x9eu:<\xa0\xadU\xe5gm\x97\x91I\xc87\xb3\x17\xadY\x1b\x08\x1ci~\xfa \x91\xcf\x92xh\xb6Y\xe8\xa9\xde\xe4\x94DS\x0f/\xcbR\x12 \x96P\xdf\x05\x03\x93;~\x03t\x08Q\x16\xd9\xa45\xf6Jy\xe4\xa2\xda\xd6\x93W\x1a\xfbw4wf\xcc\x11\xf3]\xb7\x85\xd7?&\xed\x0e\xb9\x06[Zn/\xaf\xeajs\xf97\x014\xf2a*\xe1a\xca\x1a;\x83\xb5(\xb7\xca)\xbc\xd5\x8fVn\x85\x9a\x87\xfcg>\xe4\xcb\xb6\xdc\x00\xc90\xaa\xccfhVS\xd4l#\xe6\xed\xa9k;Rm\xf8M*I\xe1\xda(\xd3\xc3z\x17\xb2\xdd\x11\xbd\x9c<\xd5\xfb\x99\xdb\x1d\x10\xec\x92\xc0\xc4T\xe1\xd2z\xf8+<:UO\xe4\x19\xa2zlO.\xb5\xa2\x18\xcd1,\xe2\xa2\xa2wGZ\xb5\xc5\x0d\x85\xae\x86\xae!\xeb\xeb3 eY\xdf\xb6\xd0\xf2\xee\x80\x96pbq\xbd\xa7\xeb\xebq\xf4,be\xcdX\xef\x8e\xde\x98\xbb\xe2?\x94\xa4\xdd\xcf\x08;i\xf1\xbd\xcf\xbb\xa3\x0d\xac\xcc\x916E\xedaY\x9c\xcb,\xe0\xb9\xb7m\xc8\xba\xb3\x8e7\xb3\xf6>\xbd\x1b_\xdf\x18)\xcb\xd4\xb9\xc5;\x0c({d\xa5\xc9\xf8=-v{\x1ev\xc9&X\xb1\x16\xf9\x90\xc4\x11\xba\xed\xea\x86{U\xea/\xf1p\xcf\xa2\x85\x8a\xd2\x0d:Y\xaeI\xb9\xe6A\x9e@\x8e\xac?\x9b\x82\xff7\xaeo\x9e\x0d\x8b\\\xb3\xf5\x81I?\xf4\x0e\xa9\x1b\xcd~\xc1\xd5O\x1a\xda\x1f\xc6+ \xdb\x8e;\xbea3\xf6\xa4\x85z\xbd>5\x0d\xf5\xd1\x0db\x82\xe8\x96\x92\xf8-|Z\x1du\xb7\x9d\xe1a+\xe5L\xd8\x8c\xb2\xffl\xf6\x9f\x85H\xednh\xd1\x19*]H\x98\xa0\xc7\xfbW_\xae\xd7\xa7\x03\xc6w\x9f\x1bG\x8d\x08E\x9eO'?\xff\xd3\x89\xbb\x81\xe1 \xa0\xedC\xc3\x03\xcax\x0b1\xa6\x11tM\x8f\x1d\x10\xd6S\xcd\xa9\xaa\xd8\x96\xc1\x97\x12m\xcex\xde\xc9+mW\xe8\x80T\xf7\xd0\x15\x87Q\x97\xbc\x80\xf1\x12=W3r\xf2\xcb\x9e\xa8s\xad\xf8\xdevGyI\xcc\xf6\xa8\xb9:\x98u\xd1s\xd4o\xb3:'\x85s\x87\xb4-T\xeb\xdd\x91\x9e\x9ee\x8fN\xb4D\x13\xd9\xa0\xcb\xadO1\x94[Jw\x0d\xa9\xba~\x18\x7f\xc7\xfe\x15=p\xfc]\xda\x8c\x8c\x97\xff\xac*\xde\x97{\xbfD\x89\x05\x8bzji\x83\x8f\xc8,\x03lz*\xd9\xf1\x0b5\xa3\xf2\xf6T\x0d\xf8!\n\xb6rML\xac\x18\x0dU\xec\x8a\xb2Z\xe1\x83\x9b\xff\xcb\xde\xbb7\xc9m\x1c\xf9\xa2\xff\xebS\xe4\xe1\xbda\x0e\xedas%\xdb\xe7\xc6\xe1\x1e9v\xc4\x8746EN\x90C\xf9l8\x1c\xcd\xea\xee\xea\x19,\xd1@\x0b@\xcf\xc3\xbb\xfe\xee7\xea\x05T\xa1\xb2^@\x0d-\x9f\xed\xfaG\xe24\x90\xf5@=2\xb3\xf2\xf7\xcbq\xeb4Q\xa4\xe2\xba\x11\x7f\xe9qk6\xb3\x7f\xc5\xa1\xb5\x0f\"\xe51\xc2N\x8ez+\xe8\x0fOA\xac\x16\xf6\x7f\xfcA\xba\x81-\xa5\xc3K\x93Tx\xf6\xe8\xf2\xd0\xc4j\xab~\xd7\xcc\x19||\xff\xe6YC\xdb\xfa\xd0\xac%\x9d*\xe7u]w\xdd\xfe\xd3\xa9\xf8o\xfb\xe9\x14\xea\x86\x19x\xe2\xd7\x81Q\xbc\xe63_\xd0\xf0\xd2\x0e\x0e{k\xb8Y\x0f\xad:hsC\x1b\xd1Q\x8e\xa4\xe3\x9f\x9d\xb7\xb4\xab\xd5\xfc\x15ZM!6x\xd2\xc2\xb6\xe6\x87\xf3sk\xf4\x7f\x0d\xe7\xdb\xa1m\xecsIR\xc4M\xdf|\xae\xc3\xb4\xeda\x870\xde\xfd\x1a\xce*\xf8\xe1\xf2\xf2\x02\xbe\x7fu \xd2I\xff\xf1\xfd\x1b\xb1d\xee\xb9\nD\xe0/\xe3\x89wy\xbf\xa7\x7f\xfd\xcb_G\xc2@\xd9\x86\x95\xfa\xca\xe2\xb0\xe6\xe3\xb7o\xea\xcda\xcd61\xa0M3\xc4Ij-\xd9\xb33T\x1ej\xec8S\xfb\x1a?(\xd7l-r\xba\xbc\xde\xb0]\x11f\xef\x8bF[M\xf9\xf8\xfe\x0d\xaf\xf7\x9a\xdc\xf0O\xbd\xd3f\xe3FLG\xa2\x9a\xc9\xfe\xff\xa6.\xd8Fns\xae\x8bJ\xf9\x02k\xe8\xb6n\xe8\xa9z\xcd$\xc6c\xa7z\xab\\\x11l\x03hn\x10*\xde\xba\x02\xc5\xd3\xcc\x16\x04[\x01\x0b8\xf9\xd8R\xb8\xa1\x0d32X\x7f\xd9\x84`kY\xcc\x08R\x91+\xbb\x7f\xab\x86\n\xdd@\x8a[<\x19\x7f\xdb\xb7uG\x9f\x0b\xaa\xbf\xed\xa1Z\x8b\xb9\xcaZ*\xd74\xd7\x07\xaa\xae\xbc\xd7=\x04\xd8`\xd6\xdc)b\xbb\x05\xd4t\x80\x86\xb2\x1d\x95\n\x1e\xc3\xa2S\x15\x1c\xd8\xe7\xe1F|?\xc3W\xf4\xaa\x106\x12\xc6\xad\xcf\x9e[\x88\xb9F\xf6E\xbbX\xeb\\A\xaa|\xe03\xbd\x15N\x07\xb6\x8c\xaa\xf1z\x85\x13\x19\xa7\"\xbc6bi<\x81\x1dW\xd6V\xd6\x82\xe4\xcd\xe4VC\xaf\xdc\x0b\xab\xa1g-j\xe9\x8e\xe9!k\xc3\xad\xc3\xe7z\xe4A\x19\xe7\xeb\xb2N\xd0\x1f\xd9\"d\x07\xbfPC\xb5c\xd0:\xf7\xe4\x11BV\xf5\x0dU\x0d\xb73\x9e\xb2\xf1\xe5\x7f\x93\xce$\xae\xf0\x01?(\xeb\x86\xf6\xccv\x7f\xfa\xe9\x03\xd7]\xbb\x1a\xd8\x9ai\xd8\x1e\xc0u\x1d1L\xec\x0cS\xfb\xaeG\x9b\xe4\x0e\x9b3\xa5\x8f$;\xcc\xe3\xd5#\xce\x93=\xfcSiel\xe6)U\x8eY^B\xdd\x9c\xa4\x17Y\xaa.LW\x8br\xaa\xbd0V}\x01S\x7fanc\xb3\xa8\xc2\x10P\x87\x01\xff\xe6\xf0Pj1\xb8=\x1d\xbe\xbbO\\E\x06\xdf\x10Cp\x98!\xaf\xba\x0c^\x95\x19\xb2\xaa\xcd\x90Su\x06\x9f\xfa\x0c\xf3Th\xc8\xa8FCP\x95\x86\xa9\xea4\xccQ\xa9\xb1\x11c*\x86[\xad\x869\xaa5\"K8#\x1c\xea5\xccT\xb1\x11qL\xe9F\xd5l\xc8\xaej\xc3|u\x1b\xf2\xab\xdc0O\xed\x86y\xaa7\xbeD\xd1FfS\xc8!\xbbR\x0e9\x15s\x88R\xce!\xa7\x82\x0e\x1e%\x1df*\xea\xd8\x1aw\xa4\xc5\x8aR\xdfa\xb6\n\x8f\x08\xb4\x95z\x98\xae\xd8\x03\xae\xdcC\xe8\x88w*\xf9\x10u\xfeOT\xf6\xb1mO\xa9\xff\x9a\xc2\x0f\x99\x95~o\xc8\x9e\xa5\xf4{\xefw\xe5\xcdn\xff\x92\x8fp.`d\xb4\xdf\xdd\x7f/\xd4\xeb\xe9\xe6\xc6\x03\xdf\x96\xa1\xa6\x84wf\x85\xa6\xce\x0c\x83\xc2\x9e\xe0\xcc\xc0\xb0\xf5r\x87Q\x91\xa1\xd9\xd9L\x8b\xb0q\xe14/\x1e\xd0\xc0\xf0\x98\x18\xfe\x00K\xb7\x99\x11\xd8\x85\xc2\x03\x0f\xf9\x8d\x8d\x90\xb9\x91\xdb\xe0\xc8lr\x04\x8c\x8e\xd9fG^\xc3#\xc6\xf4\x98a|\xe45?\xa2\x0c\x90\xbc&H\x84\x11\x92\xdd\x0c \x18\"\xd3L\x11T\x90\xd7<\xc9b\xa0D\x9a(\xe8\x9bIf\xcbl\xc3%\xb7\xe9\xe26^2\x9b/\x0fa\xc0d6ab\x8d\x98\xccf\x8c\xdf\x90\xc9n\xca\xb8\x8d\x99\x04sf\xbaA\x83\ns\xddS\x882\xc3\xa8q\x9a5A\x95\xc2k\xda\xc4i\x1c\xf9\xcc\x1b\xb7\x81\x93\xdb\xc4\x01\xa7j(\x0f4\xbe\x19\xac(\xad\xa0h[\xc9\x05\xc3*\x1a\xdd5L \xd0&\x95\xfeWe*\x1d\x03\xb4\x8f\x01\xday\x03\xb4\x1d\x96\xbbmI{mx]\xc63D\x88\x11\xa6\xadZ\x1fJ=\x102\xf6\x8f6\xfe\xd1\xc6?\xda\xf8G\x1b\xffh\xe3\x1fm|\xec\x91\xa3\x8d\x7f\xb4\xf1\x91r\xb4\xf1\x87r\xb4\xf1\x8f6\xbe,G\x1b\xdf\xb2\xf1\xfb\xad\x86\xfd\xf3q\x1b\x19Yx\xb4\xf6\x8f\xd6\xfe?\x9b\xb5\x1fe\xe4[\xe6\xbd\xef\xa6\x9e2\x85\x84\xd9Jc\xe3\xfd\x95\xfc!\xd9zW\x12\x1f\xd6vw\x19e3\xac\xe0\xac\x86\x98\xcf\x08\xcbi\x80e4\xbe<\x86\xd7,\xa3+\x9f\xc1\x152\xb6&\x1aZ\x93\x8d,\xa1\xd8!\xa3\xe54\xb0&\x1bW(<\xca \x90\x9agT\xc1ao\xc9s\x19TS\x8c)\x9f\xe14\xdbh\x8a2\x98R\x8c\xa3Y\x86\xd1\x0c\xa3\xc8\xa1\x95g4~r\x1b>\x19\x8d\x9e\x18\x83'\xa3\xb1\xe36t\xb2\x1a9\xb8\x81\x13i\xdcL5l\x1c\xd1\x98\x98Q3\xd9\xa0A\x8d\x19\xcfQ\xec1bB\xa7t.\xe3\xc5m\xb8\xf8Z\xf0\xe9\xac\xba\xff\xa4\x8een\x0f\x90fUt\x0d[4\x9e\x96\xa8}\x90\x94\xf5h,\x04\x0d\x86\xf9)\xd8n\xc57T\xd1\x92\x95\xadn\xe8u)\xeda4e.\xd4\xc4-\x8b\x15o\x9e\xdcG[\x9e\x10\xb6n\xf8 \xb4'\xeb\xcf\xcf\x0e\x15\xfb\x0f;w\xc4wl\xb1Ub\x1f\xb8\xf5\x16\x0e\x9d\xd8 \xd4\xf2kA\xf0\xc3\x16b-\xc2\x15\xadh\xc3\xd9Y\x84\xde\xd9_)\x9c\x8d\xf6#\xf1 L\xf9\xaf\xee\x08g\xb8\xf8\xfa9\\\xb0\xf6\xb1u'\x9bJ\xfa\x01-*x\xf1\x9b\xdf \xc7\xc0\xeb\xba\x86m]\xc3\xb7\xb0X,\xfe\xd5\xfa\x99u\x96T\xf7\xf6\x0f\xa4\xba_\xb0\xea^7\xf5\xeed[\xd7O\xecG\x16\x0b{\x9f/\xb6p\xc2^\xfd\xc8\x1bxY\x9f\xfc\x8a\xbd\xfb\x04\xfe\x13\xd9\xdb\xb0\xf7\xff\x8e\xf7\xfd\x9b@\xdf\xffHn\xc8\xe4\xce\xc3\xb7\\\xd7`R'\xf4\xb4hO^\xd7\xf5b]\x92\xb6utT4\x81=,\xda\xae\xbd`\xd7\xf5w\xeb/\xcf\x9e\xb1\xe9\xe4o\xc3\x07\xb2\xa3\xec\xe8>\x13\xad\xb9\xa2\xddK\xba%\x87\xb2;\xaf\xda\x8e\x19?'OR\x1a\x87\xbe\x8f\xb5\x15\xfdZ\xbf\x0d|\xad\x8b\xfb\xee\xba\xae\x90\xef%\xda\xf2\xba\xaeO\x16\x8b\x85\xed\x89\xea\xbf\xd5 \xfa\x1b\x9f\xaf\xfc\x0b\xc6~@\xf6\xd2\xb9\x18\xb1\x97\xaf>\xbcx\x7f~q\xf9\xee\xfd\x13\xcc\x195\xcci\xbc\x02Q\x05:\x1a\xbf\x0b\x8c\xc6\xf75\xe2Uc#\xf1\xfc[\xf8\xd5~\xb5x]\xd7\xff\xb9X,\xecy\xc1\x1au\xca\x14.\xf6$\xa9\xee\xf7\xab\xc5[z\xebh_\xb1\xe5O\xfe\x8fo\xa1*Jt\"\xa0\x83\x84LG\xfc\xb9Q\x83\x91\xd7d\x0bD[\x17\x1f\xab\x1di\xdakR^\xd6b\xd1Mm\x9e\xf1\xb7KN\x13\xb8\xfe\xdc\xef\xb3Ji\x86\xd5\xfd\xa0\xc2\xa8\x93@\xb8g\xee\x99V\xce\xa6:;\xf6Mq\x8f\x11\x95\xe4\x19\xb3\xff\x16\xfc\x07\xa6\xbe=fz|\x7f*\xb1\x13\x8b}g~]\xcc\xbf\xb5)\xb0\xdf\xfe\xab\xf2^\xd9,\x96A\xd9\xab\x86\x92\x16\xa7Sv\xec\xe3g\x8fMq\xd2hRU\x0b+\x89\xcay\xf7h[\xd7\x8b\x15ix\xa3\xef\x9e\xdd/\xfe\xf6H\xf4X\xe8\xfe\xb6\x19\xc3\xab|\xc4\x9e\x1b\x1fA\x7f\xfc\xf0\xee\xedW\xf6H\xb3?\x0f\xd6\xb2\xd0\x90j\xb6\xaa\xa4z ,\x86C\xdb\xe7\xbc\xbb:\x94\xa41\xe5\xd8\xafw<\xbb\xcbp\xb0\x9f\x02\xdd\xad\xe8f3\x1c\xf1\xa7R[\x18\xd9\xd8\xda\x81+\xc8\xb0>\xfd\x1b\xeb\xe4'y\xf7\xd6++\xfa\x90-\xd42}\x8e\xa8\xbcd\xfd\x99\xad\xd1\xc1D\xda\x16%\xb5wA\xb5\x96/h\xd3\xd6\x15:y\xa5/c[4m\xb7\xe4\xe3\xfc-|mK\xea\x1fd\x9f[=\xf7Mp\xdfe\x05\xab\xf5\x11\xef\xff\xa3\xe7\xf0\x08\x9b\xc7f\xb7\x16\xa2\xf5\x8fN19\xbc\xddo\xc9\x8e\xc9\xfa\xdf\xa2\x89\x7f@\x1fd\xed\x1e=\x17j\xfc\xf9V\xaa\xea\xe67\x16_\xa8h\xe1\x96\x96\xe5\xd3\xcfU}+h\xd1\xae9s\x9d\xe41\x13\xf3R\x97fN\xa7S\xa1>\x8e\xe6\xd8\xe0\x95\x95U\xb2\x89S]\x01\x11\xd3\xc6\x14\xf8\x89Ob5\x87\xae\xebrc0\xa9\xf1%PT\xfd\xdc\x03\xe9\x1b\x91S\xcf\x94\xc5\xc5\xf73\x0eN\xd8jU\xdd\xb5\x0cq\xe5\x17\xfa\xeb_\xfe\xfa\x04\x99\x9cs\xbe\xb7Y\x01\xfe\xc9y\xb7\x99\xa8\xaf\x17\xdf|\xfdM\xfb\x08\xf9\x8c\xea\xff\x0c;Ay=\xa1\xa1\xdd\xa1\xa9D\x1a:\xf5\xc7v\xce\x9dCw\xa4\x80\x85\xe3\x9d\xc3?\xe0\xcea|\x03\x10y\xe9\xa0^\x93\xd2\xde_\xbcP\x8d\x8c\xbc|\xc8~\xf3\x10\xb5&\xba#\xa7\xda\xfcK\x84#\xa7\xda\x8c\x8b\x83#\xa7Z\xdae\xc1\xcc\xab\x82\xcc\x17\x053\xae r_\x12d\xbb\"\xc8{A\x90\xedz |9\x90\xedj\xe0\xc8\xa9\xf6\x7f\x1d\xa7\x9a\xbf\xee\xcc\x0e~\xdb\xbd\x9f\xc1\xb9\x9f\xd5\xb5?>\x0cg\xba\xf5\x11W\xfe\x1cG\xbe\xd7\x93\xedp\xe2\x07]\xf8\xb6G-\xde}o\xbf\xfbw\xac\xaf\x93\x1c\xf71\x9d\x0d9\xed\xdd}\x0b:\xec\x13\xdc\xf5c7\xa7\xcbU?\xdfQ?\xddM\x8f~\x97\x89.z\xaf\x83\xde\xed\x9e\xf79\xe7\xd1\xc1\x8au\xcc\x87\xdc\xf2#\xa7\xfc\x0c\x97|\x84C>\xde\x1d\x1ft\xc6#\xben\xab:\xe4\x99\x90\x13~\x9e\x0b\x1em\x94\xf6\x97\xac\xce\xf7\xcc\xae\xf7\xac\x8e\xf7\x9cnw\x97\xd3\xddr\xb9\xe7q\xb8gs\xb7\xe7u\xb6\xc7\xb9\xda\x83\x8e\xf6H7{\x8c\x93\xddr\xb1\xdb\xb5\xc5\xba[\xfd\xee\xf5H\xe7z\x84k\xddhrN\xb7zf\xa7z>\x97z>\x87\xfa\xf4\xaf\x1bt\xa6\x87\\\xe9b\x97\xf6\xb8 \xa7\xf8\x1f\xd5;\xbe\x90\xe7\xab\xfa\xa6w8\xbe\xa4\xfb\xba-\xe2\x93i\xecy^yR.\x8bI P\xc6\xde\xfeA\x9a\xe1\xee\x17^B(6j\xa3R\x0f\xaa\x83h#\x9a]'e\xf5\xe8_2\xea\x92\x7fU\xa0_\xda\xc2\xb6\xa9wF\xadC*\x8cQR\xa0\xee\x01\x02\xbb\xffAi\x8a\xd2r\x14U\x13\x92\x13\x9dW\xdd\xc3$'\xb2\xba&+\x17\xfe\x18\xf9}\xc5\x9b\xfd\x14X\xd8\x8b\xaf\x1f\x10\xb9&t\xd0\x8b\x94h\xc8b\x7f^\xf3\xab\x88\x1e0\xde\xd5\xe2\xaf]\xd1\x07\xdc\xe93\xd7\xbd\xfe.HCv\xf1\xf9\xb2vE\xb5\xdc\xe8+\x17\x8e\x93\xf1\x97:\x19\x7f,\xaabw\xd8\xf5\xfb\x8cHr\xa5\xa6\x05\x9b2\x94S&\xdc\xd4\x9c\x15A@\xfa\x95\xac\x1d\xb9S\x1f:.\xed\x94\xdb\xb1\xf3#\xb9\xe3\xed\x10bx3\xceXO\xd99L\x1b>wU\x13\xd9\xc0\x0e\x13\x17\xce\xab\xa2+\x8c<\xc4\xc2\xff\x05\xdf\x18\x9av]u\xd7X\xe2\\c\x8a\x8fnu\xf9\x9fD\xa2(\xfe\x10S\xd4\xe1\xaa\xbe\xa1M\xc5Y\x0f\x8c\x1d\x18Y>\x17\xf2\xf7\xe8\x95\xf3\x0b9\xbf\xf8\xcd\x85}\x92\x1c/\xea\x8e\x17u\xc7\x8b:U\x8e\x17u\xea\xf5\xe3E\xdd\xf1\xa2\xeexQw\xbc\xa8;^\xd4i\xff>^\xd4\x1d/\xea\x8e\x17u_a\xad8^\xd4\x1d/\xeaD9^\xd4\x1d/\xea\x8e\x17u\xc7\x8b\xba\xe3E\xdd\xdc\x8b:6+Iw\xd0\\q\x86n.~4\xdd\x9b\xca\xc7+~\x1b\xf6f\xd4\x04\xa1\xd5\xc1\xf0\xb4?\x85\x8b\xf7\xef.\xde}8{\xb3\xfcpyv\xf9\xf1\xc3\xf2\xe3\xdb\x0f\x17\xaf^\x9c\xbf>\x7f\xf5\xd2\xfb\xdc\xcbW\x17\xef>\x9c_./^\xbd?\x7f\xe7\x7f\xf4\xa7w\x97\xe7o\xbf\x8fy\xf2\xe2\xec\xc3\x87@\xbd\xef_\xfd\xf1\xd5\x8b\xcb\xc0C\xaf\xcf\xce\xdfh\x8f\xc8\xc3\xe5yDg\xb7EE\xcaeG\xca\xf2~)\xbc\x0b\x8eOa\\&\xd8o\xa9kT\xfe\x0b\xf0_\xa4\xb7\xc2\xf2\xd6\xc2\x9f\xaf\xa9N\xce\xc8\xc18b\xd1\xf4\x1f\xf7\xa6 p\xf5\xfe\xe2\xc5\xa9\xb4\xe2\xd5%\x033\xae\xf7\xf5\xfePr\xfb\xe3PuE92h\x94\x88\xc7\xad\xe9\xfc\xe7k\x9dV\x1b\xba\x19O\x99(\xff\xf0\xe3{\xda>\x8e\xb4y\x8dq\xbbgV\x97\x18\x9b\x01\x9a\xc3\xfexSw\xb4\x1d\xdd\nhb\xc8\xaaeG\xc9\x94*\xe5\xabv\xb5\xea\x87@\xd5\x8f\xabzRW\xab\xda\xae\xb2\xaaC\xb5U\xf5\x92\x1d\xb4\xcb\x1b\xda\xd5\xd3j\x1d\xdeG\xeb\xe7\xc78\xff\xd5\xd3\x92\xf6\xb0\xda\x15\xdd\xb2+v\x16\xd0\xc7q\x85\xb1!\x1d}\xca\x9ewl]\x83@\xd5*\xfe\xff\xf5V\xdb\xc2\xd83m[0\x93C\x89\x10\xd7R\xb4\xdadl\xcbX\xaaj\x10e\x8a#\xfb\xb7vY\xa45\x86c\xc1\x8eW\xa2\xff$W\xa2\xc6\xd7\xea\xa7\x1c\xc7\x04jW\x90\x1dro&\xf6\xc9e\xdb\x91&\xe7\n\xb0\xc4\xaaF\xf1\xbf\xb0\x9d\x99\xffQ\xaeK|YJ\x19y\x97\xc3H\xa8\xb5\x1a\xea\xad::\x906\x19\x92\xd4M\xa9\xa1\xa1\xac\xeb\x86\xca9\xb0cza\xc3\x1dd\x04\xbb\x81\x0d\\\xc0~\xd0t#\xab\xc3\xbaj\x13\xa3\xd6D\xaa4q\xeaL@\x95 \xaa1^\x15&Z}\xc1\x97\xb69z|\x9c\xb8\xbfR|\x1d\xe9O\xe6\xbfQ\xf9e\x86\xcf\xa1&\x8cw@\xbd\x0d\x1b\x85A +\xdf\xa5\xb4\x86\xbe\x89]\x93\xf9\xbb\xb6w\x8d\xaa\x80\xcd\x81[{\xdd\x10\x8c%+5c!B\xdf\xdbn\x81\xf1s\\\x03\xc4j\x8a\xad_\xcc$\xbbb\xf1wO\x8d\xc6\xb7T9z\xd45\xab@\x87{\xaaU3\xd4\xaeX\xfd2\xb5j\x9e#\xa8\xa1\xec(\xf4\xb6@,\x01\xbb~\xf1\xf7\xa9\xb5oIQRW\xa4\"\x8fo\x94\xb1$\xc9\xc8h\x87f\x10\xa5O\xa3!#\x10s\x93\x84@\xe3\xf3\x84\x8f\xc0\xd0\xa5\xba\x89lT\xe6PHp(7\x98\xca\x05\x98\xda\x05n\xd5\x0b<\xea\x17\xb8T0\xf0u\x1e\x9c\xaaX\xe05\xff\xdd\xdf\x0c\xb5\xcc\x924G7\xb3\x84I]\xcd\xfa{\xbc\xc2\x06\x96\xa9\x16\x1bTi\xbdih\xb2Y\x83+a\x14`\xe9\xfa^\xd8\xde\x11\x13M\xad\x1a\x1b\x19L\xadW\x93\x9e\xf5I\x85\xc0=\xac\xf9\xe2\xdc\xcd\xbc\xcb\xc0\xb3\xa3\xe5\xdc\xd3\x9c\xbbZ\xfc\x1a\xcd\xb3\xb3\xf9\x0d7{ws\xeco\xde\x1d\xce\xbf\xc7yv\xb9\xc0>\xe7\xdb\xe9\x02\xaf\x86v\xbb\x9c\xfb]\xe6\x1d\xcf\xbd\xe7\xa5\xeezs\xf6=\xff\x10\xce\xdc\xfb\xcc\xf9)\xf6Atm;\xf6\xe1>\xc6V_\x19\x8d\xe0\xd4\xa1\x9b\xfeg\xf5\xf6\x91\xab\xe9\xc8\xd5\xf4\xcf\xc1\xd54>r\x13\x8evon\x08\xebl\x171\xec\xc9'\xbb\xf4\xe2\xec5\x90\x87\xd5#\xe3\x19;J\x9ev\xb4a\xbb\x97\xb8M\x10\x8e\xa8\xa2\xba\x9a\xb4\xa2TU#<\x01D[\x0f\xea.M\x1d\xe5(t\xa1\x87-\xf8zm>\x14\xd1m\xf9\xc2\xa4~\xa3\xa8\x198\xda,\xd3\xcf\xf0\xac'\xf8\x03\xd8,\xb3\xb07\x10\xc0\xdf@\xf4z\xb1cF3bq\xc0\x81\xc7\x81\x11&\x07\xc4U\xa7\x7f=\xea\x8fD\xacF\xfe\xf8\xa4\xb5\xf8\xf3\xa1n\x0e\xbb\xc8\xc1\x8c;\xd3\xedQ\x96_\x7fO\x9b5\xad:v\x1a\xb3\x0d\x8b\x9fgmG>S\x1e\x0e\xdeo\xa7TN\x0fy\x17l\x9d\xeevP\xf2\xba\xae\xdabC\xd9\x84\xe4\xbeZ\xe3x\xbenh\xcb\xbe\xe7\x17\xea#\x9b!\x8d\xda\x94\xff\xbd\xbf\xb4\xdd\x8a\xa8\xfe~\xbe3mf\x012&\x11\x9fE\xff\xb2\xf8\xbd\xde\x91\x1b\xda\xd5\xcb/\xdc\x1b\xa1\x0c\xd4[\xf8i\xb8\x0b\xedj\xb8\xe4\x9fN\xfc\x93\x9f@\xe3\xee\x05\xbf\x18\xeb\x0c\xdd\xf4\x03\xa0\xba\xfc\xf5\xb3\xdf\"\xee\x03\xe4\xc8\x8f\xd1,$\xd0M\xcf$\xed\xd1(d\xe3\x93u\n\xd5\xeb\xe7SV\xdf/\xd4\xa5i\xa1\xe2\xc0w\xde\xbaO\xdb\xce\x99\xb0x\xa6\xf5\x9b\x11-\x07\xc1D\xc5\xf9Ps\x90\x139\x07\xa1\x14\xc5\xddt\x04\x1ddD\xd1A\x10I\x07S\xd1t0\x07Q\x87\x8dX8-\xf1dd\x1d\"+\x98\x92x\x0e\xc2\x0e\x11\xe7MG\x9c\x17i\x07\xf3\xd1v\x90\x1fq\x07\xf3Pw0\x0fy\x87/Q\xb4\x91\xd9\xf0x\x90\x1d\x93\x079qy\x10\x85\xcd\x83\x9c\xf8<\x08\xa4\x13\x9e\x83\xd3\xc3\xd6\xb8#\x95p\x17\x83\xde\x83\xd9\x08>D \x9eDx\"\xae\x0f\xdc \x84\xbdG\xbc'\xefV\xcc\xf9?\x11\xeb\x87m{\xce\xec[\xa1v\xcc\xc3\xfd\x8d\x84q\x14 \x9a\x83+\x0b\xfe\x0frc\x00\x01\xc1\x01\xc2|,\xe0HZ\x87d\xe3\x9a\x87\x0e\x84\x10h\x0e|9\xb9\"\x90\x82\xe0J\x94\x93\x80\x18t\xcb\xb0\xb0\x16\xb3\xd0\x83\x900\x18!\x14!\x04\xfb\x1dD\x13B\x1a\xa2\x10\xf0\xe4H\x9el]9\xd0\x850\x0ba\x08\xbeo8\x11i\x08!\xb4!\x042w\x85rwy>l,\xfa\x10\"\x10\x88\x80\xe5\xf0\x9a\x85D\x8484\"$!\x12!\x06\x95\x08\xceAC\xa7\xac\xeb\xd9\x10J\x11f#\x15\xc1\xd7\xd0\xd1_\xb3\xa2\x16a&rq$\n\xcb\xf5\x95\x19\xcb\x08\x99\xf1\x8c\xe0\xcd\xf8\x85\xe6\xfc\xca\x85m\x84\x9c\xf8F\xc8\x8eq\x84h\x9c#\xc4`\x1d!\x1e\xef\x08\x91\x98G\xc0s\x80\xe1Y\xa1\xe2\x11r\xa1<`\xd1\x18H\x88\xc3A\x02\xd6\x8d\x9cxH\x98\x8b\x89\x1c\xc9B\xf2\x83\xe5DIBV\xa4$\xcc\x9e\x0fA\xc4$D\xa0&at\xe8\x8c\xd1\x930\xb6tR\x10\x94\xe03\xf4\xc6HJ\x08E\xc9\x07\x9fu\"*\xf1\xc7]\xa8J\xfci\x0bY\x89?\x86\xa0+\xf1\x07G\x08K\xe0\xe3\x1c S\x10\xc5\x87\xb4\x84\xa0\x81\x9a\x01q9\x928\x13v9\x92\x868=\x95\xd4\x18$&L\xbb\x93@P\x99\x10\xf2V\x18\xe3<\x15\x9d .\x84&$U?\x17\xa9 (Z\x13\x92\xda0\x0d\xb5 ^\xe4&$\xb5\x00\xf5\nM\x82u\"r\xb0\xc6\xa3`O\x88\xb9\xa9\xb3\x91e`\xed\xb8\x93\x80\x9f\xa0\x05\xf7\xd8h7\xc8\xd4\xb6\x89@P^=\x0e\x06\x058F\xfa\xfc_\x1b\xe93\x1dR\n~X)d\x9a\xcf9 \xa6\xe0\x83\x99B\xde\x86N\x83\x9cZ\xd2r\xc0N]\xf3\x1c\x0d\xa0\x88\x8a\xd0P\x8dJ\x8a\xfdT8\x81\xc9\xa1\x1a\xff\xbd\x91\x1dhp\xc7\xe4M\xb6s\x86x\x04\xf6\xd9\xf0\xa6 \xf9\x03=B\xa1\x1e\xb9\x83=2\x87{\x04\x02>f\x87|\xe4\x0d\xfa\x88 \xfb\x98\x11\xf8\x917\xf4#*\xf8#o\xf8GD\x00H\xf6\x10\x90@\x10\xc8\xb40\x10T\x9074$KpHdx\x08\xfafR\xc8\xc8\xec\xa0\x91\xdca#\xee\xc0\x91\xcc\xa1#\x0f\x11<\x929|$6\x80$s\x08\x89?\x88${\x18\x89;\x90$!\x94dz0 *\xccE\x11-\xca\x8c\x80\x12gHIP\xa5\xf0\x86\x95\xc4i\x1c\xf9BK\xfc\xc1%\xe1\xd6d\x0d0\xf1\x87\x98d\x0b2\x99\x1bfb\x89\xe3\x1a\x0d\xaa<\xe4\x0d5q\x05\x9b\xcc\x0f7\x89\x88\xb1\xf0\x86\x9cD\x06\x9d8\xefq\x13\x03O\xdcr\x90\x0b\xaf\xd9\xe1')\x83\x13\x13\x82\x12\x1e\x85\xa80\x94\xe4@\x14\xc7\xbd\xbe7\x18%W8\xca\xdc\x80\x14\xef\x97\x9d\x11\x94\x12\x11\x96\x12\nL \x87\xa6x?xJxJ\\\x80\n\x1a\xa22;H%:L%5P%2T\xc5=\x88\x8ei\xed~>&d%G\xd0\x8a\xb7\xc9\xd6\xdfg\x85\xaeX\xd2\x90P\x96\xac\xc1,\xaep\x96\x99\x01-v\x93\xed\x00\x97\xfc!.\xfe \x17G\x98K\xce@\x97\xcc\xa1.\x0f\x11\xec\x92\x12\xee\x12\x19\xf0\x92\x14\xf2\x12\x1f\xf4\xe2\x08{q\x05:\xc4\x87:\x84C_\x92\x82_\xa2\xc3_\xd0\x0e\xe5\x0e\x81\xc9\x1b\x04\xe3\x08\x83\xc9\x1d\x08\x93;\x14f\xfe\x1c\x89\n\x87\x89\x0b\x88\x19\x1flXP\xcc\xcc\xb0\x18\xaf\xb1\x8a\x85\xc6\xa4\x05\xc7$\x87\xc7\xa4\x06\xc8D\x87\xc8$\x04\xc9D\x86\xc9$\x07\xca\x84Ce\xc2\xe6\xf6\xacp\x19K\x1a\x16>\x93;\x80\x06\x0d\xa1I\x0f\xa2\x99|\xf7\xe3\x08\xa5 zi\xb2\x85\xd3x\x02j\xd2\x1a\x91#\xa8\xc6\x15V\x93\xd6\x92\xe9\xa15\xa1\xe0\x9a\xb4v8\xbcc\xb9Bl\xf0 \x1bO\x98M\xd4\xdd)~\xab\x9e-\xd8&\x14n\x93\xaf\x8d3\x82n\xbca7\xee\xc0\x9b#q^r(N\xe6`\x9c\x07#\xce\x9b\x17\x92\x13\x0c\xca\xc97\xebs\x85\xe6\x04\x82s\xb27xz\x88\xce\x83\x04\xe9Xb\xfb\xb8\x97a\xde\x97\xa54\x99\x15\xe9\xa0+\xd77\x1c \x08\x8f\x04\x84\xbf`\x02\xc2\xffB\x83\xd0\xd2x\x82\xfa\xe5\x91\x12\x86v\xc9\xcc\x81\xf7|\x08\x92\x03\xd1\xb8)\xe1XK\xc2\xcc\xc0\x99A\xa7\xd3|\x1ds\x11\x85\xeb\x9d\xa6z\xff\x12r\x11y\xc22\x91i\x1a\xb3&\xf8kI\xeb\xe1\xa7\xba\xa3\xc9\x0b\x81\xf5\xe8\xf9\x94\xf9\xec\x8c\xb1\x9c\xb2\xf3\xe5\x8b\xaed\xfd\x99\x94\x07\x80\xbf\xa8>\x8c\xf8\x87\xa2\x1c\xf6T'\xc2\xbd\x9e\xbb\xc5Z\x9b\xf9K\xbao\xe8\x9att\xc3\xb4\x0d\xba\xa5\x8d\nd\xfb$\x84\xb5\x9f\xa0\xa8\xda\x8e\x92\x8d\x0cy\xecU\xda\x96v\xf6\x05=;\xe8\n\xda\x8e7t~\xf7\xb6\x11\xd7\x14\xc5\x16>\x95\xb4:\x91\xf2\x9f\xc0\xb7\xdf\xc2\xd7\x9f\xe4\xd5\x07\xe9d'\xb8s\xe2\x96\xf2\x90\x92\xaf\xc7\xea\xecy\xc5\xa3\xf6F\x7f\x15A,k\xd2\xd2\xd6\xf0\x9d\xf03U\xc1\x8e\xbb\x1a~zw\xf9j\xf9\xee\xe2\xf2\xfc\xdd[\xdd}\xb4\x88\xfbL8\x88\xcd!\xd3\xfb\xdc\xbf\xbf\xfa\xe0\xfd\xfd\xec\xbb\x0f\x97g\xe7o\xbd\xcf\xbc}\x17\xf8y\xf9\xe7\xf3\xcb\x1f\x96?\xbd\xba|7\x9a\x15\xd2\x9f\x16n\xb8\xfcN\xd8,~X\xbc\x066\x9bE [u\xeamc\xc9\x8a\x00\x1ea+\x88N1\x0dC\x04\x07\xf2\x80/qS\x83\x8a\xdb\x1cD\xb8\x1e5\xde\xc7n\x1c\x03\xa6,\xee\xe9\x85\x84Y\x84=m\xcf%\xec)|FaOZ\xf3\n\x7f\xc81\xbbDI\x98c\xa2\x88\xe5\x8e\x0dN\x8a\xa7Jn\x1a\xda\xde\xa9\xfeD\xda\xb6^\x17\xdc}\xca\x0f\xd1\xfew\xf15\xbdF\xb3e\x17\x00\xfc\x99K\xa5\x1bv\xd2\xbd3g\x1ba\xc7C'\xed=q\x96\xf2\xffi\xf7e1\xce\xfd\xc6\xca\x87\xa2Z\xd3\xe7\xf2,}\xdan>\xc3\xbf,~\xf7\xdb\xd1\x8a\xf5\xb5F\xceG\xd5\xeb[\xd9\xb4\xd1d\xfd*\xa9Vw\x8d\xac\xc7Z_\x07\xeb\xdbk\x83\x02\x9c\x8979=k\xdb\x8d\x93\x0e\x9d\xbf<\x1d\x8e\xbb\xd3>%\xb5\xf5\x85\x8cvY\xbaF\x8c6\xc3[\x11\xc7\x03\xca\x1eMG\x96p\xcdl\xac\xc8\xfc\xb7B\x95 \x9a\x8f\xb7a\x19\xb4\x1f\xd7\x89\x11:-\xe6\xe9@\x96\xb8\xa2riA\xd9\xf5 \x97&\x94Y\x17\xf2~8\xd7\xcde\xec\xa6\x1f>\xc7\xe2\xce\xb0\xe0\xf9\x15}v%\x9d[\xa8v\xf4e\xdd\xean=)<\xf7E\xc9\xac+\xa5hK\xc1\xb3\xdd\xa71\xa5\xcc3\xecy\x97\xd6\x14;\xe7\xb0g\x1d\x9aS\xc2\xfc\x13%i\x16\x8a\xe2\xd6\x9f\"F\xf9at\xa8\x90\xde\x02y\xf5\xa8\xa0N#J\xa8M\x93\xb4\xa9\x88\xba}\xf5N\xd5\xa9riUV\xfb\x84wI\xdf\x13\xc4\xb1&\x86\xe1x\x19\xd0\x1d/\x03~\xe9\x97\x01\xb6\x06\x1fk\x1dD\xa4 \xe0.\xd1\x0b-iG\x84]0\xce\xae\x81~\ntn\xba\xe7\xe5\xdcl\x1a\xb0\xd2W\x80+u\x06\x92hbb\xe3\xff\x806\xbe\x99\x90&\xc3\x86\x85i)2\\\xe91&\xb6\x1a\x1d\xf2\xa9\xe90\xcc!O\xca}\xa1\xcd:\xb0\xf2\xc0\x88\xf1\xe2\xb7BEu%[PW\xce\xcb\\\xd7\xac~\xaf\x05\xccE\xcc\xea\xd1e\x12:\xc2\xb3/\x91\xac\x0b\xa4p5s.\x8e\xccK\xa3p]\xe9\x97E\xf8EQLM\x99/\x88\xb4O\xae) mG\xaa\x0di\xe4%\xa3\xdc4\xe2\xf3\xcf\xff\xd4\xdf\xe4DL \xd4\x97\xe1]\xa8\xa3#*\x8f\xe7b\xe4\xb3\x08\x7f\x8at?\xc5\xd8Vs\xef\x8c\xf3\xbc\x12\xe6\xcd\x0c\xe2\x8f\x98\xeb\x89\x80s\xbd\x82\x91\x0f\"\x9b\xf7\x01\xfd\x04c{0\xc6\x06\xf4\xd9}![\xcfc\xdfE\xd8t\x91v\x9c\xe5Gx\x08\x9f\xe14\xffXF\xef@\x9c_\xe0\xe8mru\x01\xb7\xf0c\xdd\xaaY\xacz\x9f\x81\x94\xc9\x92\x9f|/\x91l\xb7{j\xc2k\x99b\xa5\xe7\xb0\xcf\x1d'\xec;mA[\xb3@_+\xa1\x15\xe2Z\x17\xbe\xd5\xe0X\x03\x81\x99\x1f5\xdf\xf1-I\x9bV\xaco\x1c\xca\xef\xda\x8f\x94\xc2R\xdcP]\xff\x95\x92\x86O\xa4&\x83s\x80\x9c\x0d\xd5\xa6AU?\xad\xf7\xe8\x82\xb1\xc6\xf5\xf9\xf8\x0f\x9a\x18\xa5\x01\xfb\x85\xc8\x8f\xf0\x1c\xfb\xe3 \xac2\x94\\\xbf\xc4\xb7\xef\x9e\x8f\xfem\xf4-J\xc2\xf0\x95\xc7\xb2\x86_L\xa9\xa6\x9a\x1a\x9c\xebEu\x95hl;\xd2\xe9\x86\xd5\xba\x884\xba\xc6\xf3z\xeb\\F\xd9\x10\xf7\x9b`\x8c\xd9\xfbit\xe7\xe3\x15\xcd\xe9\xc7\xfbp\x9ck\xe2\xf0\x83\xfd\xbf\x8f\"7>\xa2\xc3\xd3m\xe6\xb1\x8c\x1fT\xb3\x8fb\xe7\xd1(\xe7i[\x92\xf6\xba\xa8\xae\xfa\xc9\x9a\xb8:\xdb\xe2\xaa\xa2\x9b\xe5\xaa\xac\xd7\x9f\xdb\xe5mQm\xea\xdbH\xe3O\xb7\xfdvE\xb5\x94\xa2\xf6\xb4I\x93\xa3y{6\xf5m\xd5\x15;\xba\xfc\x0fR\x94\xcb\x8d\xdc\x00\xbcr\xf8\x00,\xb7\x9cp\xae\xae\x96\x9b\xfa\xb0*)oKz\xf5\x96,\xd1\x9aTA\xc6T\x90\xfbQ\x0f*\xd6\xb6$\x91/\xb8\xa7\x9cZ o\xb4\xfa\xa2\xb0\xab7\x87\x92.<\xdfzN\xd2\xf5q\x9ec\xd4\x86\xc1-\x18\xff\x9c\x01\x9f*\x8c\xcd\x1d\x08\xcf\x9f(\x99\xa3K\x84\xd0\\\xf2\xc8\x8c\x99S\x9e\xd7\x9dM\n\xce\xaft\xa1\xd9\xe7Z\x7f\xc9\x90+\xbdoh\xfe~(\xae\xaa\xa2\xba:\xaf\xb6u\xf2$\xbe!%\xff,L\xc1(\xaa\xad\xe5\xc0\x8b\x9a\xce\xd2W\x14\xf5\x15\x04\x08\xea\x1a\xb1\xff\x82\x9f\xcdy\x9b\xf3\x83\xc6GW]\x93\xee\x8a\xb6\xb5\xa8\x14E/VE\xb7#{\xddZ\x17\x1fj\xc9\xd1\xe2\x89\xdf%\x82\x92\xda\xfa6\x97\xc5\x8e\xb6\x1d\xd9\xed\x05>]~\xa5^\xa5T_C\xb4\n6\x07\x0e\xde+\x99\x8dF\xdb1m\xa8\xda\xa4\xcc\xdb\xcc\xdd\xaa\xed\xea\x8a\xa2Q\xfe\xab\xba.)\xa9\x12\xda\xfb\xe7k\xca]\x95\xe2c\x1a\x93\xe6\x9a\xb4\xb0\xa2\xb4\xd2\xea\x84\x93\xcfE\xc9\x1a^\x1f\x98\xfa4\x92\xd5\xbfj}g\xda=\xe1\xf7\xb9\xd25[3\xd5\xdf\x1c\x131\xa7\xb8\xd9F\x7f>\x147\xf5Z\x1a \x0d\xfb\x1c#y\xa4\xba\x17\x1e\xd6qE\xeb\xba\xda\x16W\x87\x86n\xd8$Y\xd1krS\x98\x04\xa4b\xee\xa8)\xc7/]\xa3\xf1 S\xd7\xeb\x19\xc8z\x98\xc6)\x1a\x00'\x87J\xcc\xfe'b\xe6\xb6j|\x0e\xf2\x12\x9d\xd3\x90\x8e\x04\x1d\xaa\x8a\xaei\xdb\x92\xc6\"\xe3m(\xd9\xb4\xe6\x02q, w[\x7fR_C;\x17tW\x8f\xfa\xf9q\x0br\xe7\x07\xb6\xf3\xf3ShWWEW\x8f\x86\xac\xbb\xa6\x85\xf1\x8d\xd4D\x07v\x0c\xdf\x14\x9d\x0e\xdd\x12;\xf2\xf8XQ\xe7\x9eQ!\xbf]W\x10\xb0\x1bRr\xcf\x92:L\xbe\xd2\xa4\x99\xc8\x1f\xe4\xb8\x8b9V\xb5\xd7\xa4\xb4\xf7\x17/T\xaf\x92\x0f\xdatu\x11;]\xf3z\xc5\xd1c\xd8\xb3\x10\xdcG\xb1\xd7\x15\xeb^?\x0fq \xfb\x8e\xe4\xc9\xcd\x0c\xdd\x14d>\x9a=\x87s\xee\xe3\xd9A\x9d\x92\xf3\x88v\x1f\xd2\xbec:\xea[E\x81\xd3\x91\xef\x95\xf3\xb8\xc6\x0fl\xf7\x91\xed;\xb4\xc3-\xcfyp{\x8e\xee\x99\x87\xb7%\x8d;\xa5]\xc7w\xcc\x01\x1eu\x84G\xcd\x99)\xeb;\xdbQ\xee=\xccS\x8es\x7f\x9bg\x1c\xe9\xe6\x98\xf7\xc7\xbb}\xa8\xc7\x1c\xeb\xbe\xa3\x9c\x94\xe5\xd0\x10\xb5\xa8\xb0\xa0\xca\x04\xc3\xf2\x18\x0cy\x0c\x86To\xb8\xbf\xa1\xa8R\xd3\x04k\x83m\xb0\xa88\x0d\xd9\xa0\x1cJ\xaa\xbf\x16n\xf9X\x9b<\xa5\xeb\xba\x11\x0fr\x8aB\xa9\x9f\xf6\xec\x80lO\xe6\xfb\x81\xdeM\xa3o\xea\xc9\x0f\xf5nh\x14J\x10\xd8\xd0=\xe5.\xf1\xefH\xd3\x8f\xac\x8b\xca\xd2\xe8#\x9f\\c\"K\xc1\xfb\x17\xd2\x98\x93Q\x0d\xbb\xa5\xab\xb6HS\xec\xe4+hK\xd4oeQ}\xeeOr\xba>4Ew\xbf\xe4\xf3c\x1d\xf2\\\x9b\xfb\xe0\xe8]\xb4R\xba#\x05O\x94\xde?\x0e\xf2q\xd5\x84\x0d\xedHQ&i\x13\xf2\x15\xb5\x05\x0b\xa0n_\xa5\xfc\x15YK\xda|D\xbd\x1b\xda\xc3\x9eY\xfdC\xd1vuS\xacI\x99t\xa7qM\xc9\xc6\x9e\xd7Q\x9b\xa6L =\xda\x0b\xc5\xf5\xc5\x8a\xb4\xc5Z\xfa\x1d\x8b!\xbc\xc9S\x07x\xb9\xb8\xb8\xa4\xf1\x1f=G#\x84\xf8\xf8\xc8~\x9fO\x9c\xdf\xb6\x7f\xc16\xa4\xaa=\xb4\xb0&{\xb1\xcd\n\x93P\xfd\xb99\x94\x03\x1d\xc7\x9a\xb6\xad\xf0\xf5\xa8\xd1\x1b\x89\xe3G0\xfbi}M\x8a\xeat|\x8bYT\xeb\xf2 r\x99\x95\xa5\xf6 \xb3\xde \xeb\xdba-\xda\xa0\xd0\x90\xa2v\xd4\x9b@\x86<\xea\x8f-\xc6\xbd\xb6cfY\xd7\x90J$F\x81\x1dY_\x17\x95\x11\xa2\xc2k\x8e\xe5\x8d\xce\x12\x80=!\xf4\x1e\x8b\xf0\xe1\xc9\xf9\xf8\xe0\xd9\xad\x173|\xdf\xd0\x9b\x8c\x13\xfc\x9a\xb4\xd7\x13'$\x92\x80{O\x9an\xd9\xd2n9^\xde\xaa8[\x08\xdeV\xf2W\xed\x8b\xfe\xfe'.\xb5\xa8:zE\xed\x00\x1d\x08D\xc8\x80s\x18 4\x14\xe0\x1f\x8e\xfe\xa3]\x90\xa6ki\xf7\x03\x1f\x95\xf1\xe7\x16WIK\xbb \xc1\x19dU)\xabc\xa2\xc4\xda\x12\x13\x85-A\xed9\xf6\xcf\x0c\xd5\x0d\x11.\x19\x84\x8d\xdb\xbem\xea\x1d\xdf&\xc8~\x0f\xf5\xa1\xdb\x1f\xba\xe1o\xc3\x1a\xd0$\xf0\xd0\x95\xacm\xeaw\xca\x0c\xb2\xc8~\x9fA\n\x9f/2>\"\x838z\xc3\xf4\xb15\xcd \xaa\xff~\xc3\xf12\xda\x9e\x040\x96\xa6\xda\xbaa\xa0\x92XU\x86\x97\xac?n\xc4\xfd\x96X\x05bO\xd2|FHlB\xde(d\xf6W\xb7y\xef\xdd[\xfcG\xbb-\xda\xe8\xbe\xcb\xe2\x7fl\x07x*9\xff\n+\xba\xbe\xee}\x06E\xc5S\x89.\x8c\xe7\x87\xf5\xb0?\xac\xacP4\xef\xe6\xee\xdb\xda\xd9k\xcbC\x83\xee\xed\x81\xdd74J\xc0o\xba?\xbe\x7f\xf3\xac\xa1m}h\xd6\xd2\xfa\xe1v\xa0\xe0\x0e*\xef\xa5Q\xb2-\xe4\xe8\xb1:q\xbdD\x94!\xa5\xb0\x1d\xe5\x08\xa2\xaf]\xbd\xaeKX\x1d\xb6[\xda\xa7S\x95!#\xa2/\x02w\xad0\xd7\xa4\x83\x92\x92\xb6\xc3\xe5\xd5\x15\x85G\xcf\x1eq\xf77Yw\xb4Yp\x0b\x9c\xdfq\xb4\xf4\x8a\xd9\xd9\xeaK\x7f|\xff\xe6q\x0b{\xd2]\xf3\nPq\xbdW\x05\xaf\xadC\xb2M\xf31\x93U\xf0\xd19!ly\xe3\x02>\xb1\xea\x9d\x19]?=\x11\xad\xe7\"\xdb\xeb\xfaPn`E\xf1HqV\xd6\xa4\xaa+f]\xf0\x8d\x00\xaf\xf1\x84.\xae\x16\xa7l\x08\xb9\xfe\xf9h\xf1H\xdd\x18\x9353\xfb\xe9\xe6 \x9e\xdb\x8ds-\xef\xb9G~MO\xa1\xa3d\xd7\xc2\xa1=pv\xac}C\xd7\xf5n_\x94\xacu2\x8d\xee\xaa\xa8Hs\xcf\xa9\x910illZ1\xb9\xbak\x8a\x04\xc1\xb2B\xef\xf6t\xcd\xbd\x10\x92\xfbI\xc6L\xb0\xc9@\xef\xf8\xa7<\xab\xee\x17\xf0C}Koh#\x92s\x7f|\xff\xc6^\xbb\xac\x08\xd7\x84L\x13\x8eW\xd8\xae\xaf\xe9\x8e\xc2\xa7\xeb\xae\xdb\x7f:\x15\xffm?\x9d\x8a\xd0\x19\xf9\xeb)\x9fek\xcdV-\xefQ&l\xe07x@x_\x1d\xf5\xd1\xe6\x86\xca\xcb\xf1\x1d\xd9\xb7b\xca\xb0\x1e\xb0\x1e\xab\xa0@\xbe_q\x05\xbe\x05\x82\xf7m[\x97e}\xdb>w|\xbb_\xc3\xf9v\xe8\x01\xfb\xe4*\xe3{\xdfI\xe9\xe2;\xec\xe8\x06e\x96eB\xce*\xf8\xe1\xf2\xf2\x02\xbe\x7fu\xa9r\xe4}|\xffF,P\x91\xf2\x1c\x9f\x99Vv\xe4\xcb\xfb=\xfd\xeb_\xfe\x8a>\xcc\xcf\x9b\x03\xff\xd6r\x0e\x89s\x8d\x7f\x85}So\x0ek\xcac\x89\x9af\x1c\x1c\xae\xca\xaf\xe1l0\x8bZ\x1e\x16K\xd8\xf8\x88\xdb\xbc5Y\xb3=\xa1\xae?\x1f\xf6}\x04\xe5\x8a\xb4t\x035\xce\xe8\xec\xda\xde@\xa4\x84\xe7\x81T7|Z\xed\xb4\xb5\xb0\x11\x8b\x81\xa8n\xf4QAf\xc4\x93^D\xa3\xf8\xb2o\xe8\xb6n\xe8\xa9z\x99\xc9$]\xb1*\xca\xa2\xbb\xe7\x94\x96\xea\x1e\x8boQ\xcd\x0d\x02\xb8\x10\xa5\xae\xe4\x0d.\x7f\x81\xaf\xbb\x05\x9c|l\xa9\xf2\x0e\xe89\xf2\xc5\xbc#\x15\xb9r\xf5x\xd5P\xee\xd5PB\x17O\xf0\xd9\xf2\xb6\xee\xe8s\xc9~&\x83\xfe\x08o\xbb\xdco\xd6\x87\xa6\xe1\xe1\xcdzXp\xe5\x1c\xea\x9a\xc7C\xdb\x11\xc1\xa2\xa8\x89\x05\x0de\xa7\x03\x95N\xeb>\x1c\xa6\xc7_\x0f\xebkE\xaf\x8a\xaarY*\x1c#\xe3\xdc\xb8F9\xb9];\xe6\x07\xbe\xdaZ\xe9f\xea\xaeI5\xdeY\xe0D\xfa\x16EX\xb7X\x9eOPa;\x1el\xbarl$\xbc\x83\xdcA\xdd;\x94\xe5\xb5\xc2\x9e\xae\x8bm\xb1\x86\x96\xeeH\xd5\x15k\x84\x86\xdc\xe2\x11U%\xa0Rx\xcd\xb98\x8d\xe3G\xb6u\xac\xfa\x18TMa\xb0t\x03y\xa8\x92U}\xe3P6DW\xe5t\x1ew3\xd4\x9aOg\xd5\xfd'\xcd\xdb]\x01iVE\xd7\xb0\xc5\xe7i\x95\xdc\xa3-q\xa4\xac\xab+ye`\x7f2\xb6k\xf2M_\xb4je\xabSz\x9dJ+B\xa6\xd9\x85\x9a\xf8e\xb1\xe2M\x95\xfbz\x0b\xeda\xbf\xaf\x9bN\xb0\xc6\xae??;T\xec?\xec\xbc\x14\xdf\xbb\xb5\xddVR\xa3A\x95\x87z\x0b\x87Nl>j9\xb7l\xe3SW\x00\xa4\x84+ZqN\xaa\x8d\xbc\xbe\xe8\x95\xea3d\xbf\x13\x9f\xc8\xaeGe\xd7\xff\xfa9\\\x10\x01~\x03\xd9t\xd2\x1f\x88E\x05/~\xf3\x1b\xc71\xf5\xba\xaea[\xd7\xf0-,\x16\x0b4*\x9e\x0f\x02\xa9\xee\xf1\x1fIu\xbf`U\xbfn\xea\xdd\xc9\xb6\xae\x9f\xe0\x8f-\x16\xf8\xd9Sl\xe1\x84\x89\xf8\xc8\x1b}Y\x9f\xfc\x8a\xc9x\xe2\xcc\xf6\xef\x92\xf3w\xf7\xd8|\x13\x18\x9b?\x92\x1b2{p\xe0[\xae[1\xe93F\xa1hO^\xd7\xf5b]\x92\xb6\xf5\x0c\x82h\x12{A\xf4G{ \xaf\xf7\xef\xe8_\x9f=cS2\xdc\xa6\x0fdG\x99\nr&ZwE;I>|^\xb5\x1d\xa9\xd6\xf4\xe4IjcQ\x19\xae\xb6;\xbf\xeco\x03_\xf6\xe2\xbe\xbb\xae+\xc7\xb7\x15\xedz]\xd7'\x8b\xc5\x02?D\xfa\xefz\xe2\xfc\x9d\xcf}\xfe\xc5S?8{\xf9\\\x8c\xe8\xcbW\x1f^\xbc?\xbf\xb8|\xf7\xfe \xee*\x14U\x895\xe2\xaeLT\xe7\x1c\xad\xdf\x05F\xeb\xfb\x1a\x1f(>R\xcf\xbf\x85_\xedW\x8b\xd7u\xfd\x9f\x8b\xc5\x02\x9fO\xac\x91\xa7L\xd1dO\x93\xea~\xbfZ\xbc\xa5\xb7\x9e\xf6\x16[\xfe\xf4\xff\xf8\x16\xaa\xa2tN \xe7 :\xa6\xb5\xfb\xf9QG\x1c\xaf\xcbV\x89>,>V;\xd2\xb4\xd7\xa4\xbc\xac\xc5\xc2\x9e\xdbd\xeb\xef\x97\x9c\xfcf\xfd\xb9?\x07\x94\xb1\x01\xab\xfbAUS'\x96@\xb6\xdd\xab\x90mK\xda\xa1Et\x9e\xc7\x88\x1a\xf6\x8c\xd9\xe2\x0b\xfe\x03Se\x1f\x03\xd1NUv\xe2\xca\xeb\x14\xbb\x06>w\xecJ\xfac\xac*\xef\x95\xddh\x19\xfc\xbd\xea\x0cd\xdbQ\xa1\xcd\x95\x04q(<~\xf6\xd8\xaeB\x1a\xb4\xaa\x89\xc2\x82\xa5r~?\xda\xd6\xf5bE\x1a\xde\xb9\xbbg\xf7\x8b\xbf=\x12\xa3%l-\xdc\xac\xe4My\xc4\x9e\xc5\x8e\xd7?~x\xf7\x16\xf93\xfbb\xec\xa7\xc1\xe3\xd13\x002\xa5\x95\xabF\xc2*;\xb4T!\xc0\xae\x0e%AP\xbc\xb6\x08\x11\xe92(4\xa7\x03\xcaN\xae\xd6S\xa9)!~\x12M\xc1\x10\x11\x14\x9f\xfe\x8du\xfc\x934\xe7{\x85M\x1f\xc6\x85\xda\"\x9e;\xcc\x05\xb2\xfe\xcc\xf6\x88\xc1,\xdd\x16%\xc5wk\xb5\x9f\\\xd0\xa6\xad+\xe7\x02\x91\xbe*\x8e\xfaZ\xf2o\xe0\xc2\xe4\x0d\x0fs\x17\xb5|\xf6\x9b\xe8\xb3\x82\x15W+\x1e\xf1\xb1y\xf4\x1c\x1ea\xeb\xc3\xec\xeeB\xf4\xe8\xd1\xa9K\x16\xef\xcb[\xb2c\xf2\xfe\xb7h\xf2\x1f\x9c\x0f\xb3\xbe\x8c\x9e\x8d\xed\xd0\xf9V\x9a@\xe6\x9c\x10_\xb3h\xe1\x96\x96\xe5\xd3\xcfU}+\xc2m\xaeyp\xa8\x0c\x94\x11\xf3y,\xd1\x9c\x82\xa7B\xd5\x1e\xcd\xcb\x01P+\xabe\x13\xad\xbaB<\x18|\xda\xd9\x95|\xe2\x0bB\xcd\xc3\xeb\xba\xdc\x18!<|9\x8dbd\xd8\xcfr\xfa\xda\xf2x5\xfd\xcc\x85\x13\x8e\xd8\x91Ca9P\x94\x8f\xf0\xaf\x7f\xf9\xeb\x13\xc7$\x9f;G\xcc\x8a\xdc\xd3\x84\x0f\x03\x13\xf7\xf5\xe2\x9b\xaf\xbfi\x1f9>\xbb\xfe/\x01\x83\xc3}\xe2\xd3\x08\x11\x14\xb0N\xe2\x80o%\xe4\xcdp\xe9\x0fh7\xf94\xbf$\x13\x80\x14K\xa0\xc2\xfc\x08\x08\xe3W\xf6O\xe3\xd6\x9b\x11.\x06~h\x0c\xf3\x81\x13Q\xe9\xb3\x1eW#\xff\x8f{_M\xb1\x1e\x13\xdcE\x06\xeeG[\xb9\x9f4pW\xfe\xc7\x06\x04\x96\xeb9TX\x14*K\x15\x11\xb98\xf5\x1eH\xc6=\xda\xb1\x96\xdc\x07\xc8\x7f;)\xaau\xb9\x80\x96\x96\xdb\xa7C \xe6\xe8\x0b\x0c\xc1\xabX\xdcg|{\x909;\x16=\xdcK\x89\xe45\xe2\x8fE\xdb\x1e$\xa4\xd0{;5`\x14\xc6\x1d\x18\x85\xd2\xe1?\xe9\xff0.\xc8\xf4\xbfw\xb4QIV\\\xd1\xb10\xfdr\xcb\n\xe0\x1bJ\xc0\x11\x953\xa8o(vx\xdfPR\x1a\xe4p}M\x0f\xfeC\xc5\xd5\x8d\x15\x068\x14+ p()=I\x0d\x12\x1c\x8a;\\p()-q\x8c\xe9\xc4\xc8BT\xd6(\xdap(V\xdc\xe1PR\xba\x90\x10\x8b\xa8J\x7f^\xe4\xa5\xdf\n\x8d\xec\xb8Z5\xaa\xa7\xcc\xb2\xec\x7f\x14<\xfe\xd7#R\x84\xee\xba\xb0\xf7\xaa\xf1\x91|u\xa8\x10\x8c\xe9\xa8n;l,\xaa\xc3S\xc9\xa1\xcc\x8a}]\xde1#\xae\x18\xf6\x14Ow\xbb\x9a_\xe4\x94\xb4\xa3\xae\x0e\xafG\xf8\xd7\xa1\x18-^\xdb\xd0\xbb\xce\x04\xb1\x0d\xf0\xbbL\xfb\xb3\x1bf;\x94\xd0\xa8br\x12@[\xa8\xbc\xfer\xc7\x0f\xc2\x1d\x8a\xa7\xff\x10\x8c\xad\xc3 \xbaC l\x00\x109D \xab\x99\x80Mt\xca\xc3p\xb2C\xc11\xbfC\xc9\xd8\xb1t\xac\xa3S\x94\x8d\x81\x0cc\x83\x87\xe2E \x0f%s\xd7\x93\x11\x93Ni\x9dM\xb3\xe1C\x13\x0f\x05\xc5\x15kr\xe3\xae\xfd\\;+D\x0e\xc8\x1402\xbe\xa1\xe8\x00eU8\xb39-\xb7K\x0c\x02'\xca\x0c\xdd\x1d\x91nY{\x8f[n[\xc0\x86\xaeK\"\xf8Kx\xdeDK\x98|J \xc2\xfcvh:\x82\xffi<6\x1cXu\xb5\xbc\xae\xcb\xcd\xb2\xa1[A\x89\x92\xd0q\x9f\x9e\xe0\"\xfe\x12\x0e\xaduW\xde\xc3\xben\x8b\xae\xb8\xa1\xec\x98\xe4w\xff\xfah\xf4-\x1c,\xf1\xb6\xab\xf7{\x8c+\xf2\x1e\xe8]G\x1b\xa6\n \x8e\xf4\xd6\xd1\xd9b\xe3\xb0\xc9\x92\xb3\x8f;&\xbc\x17\xa3\xe0\x1e\x92\xb2hy\x80\xd2\xd0\xe9b\xd3\x9e\x02%\xebk;\x9c\x8e\x9dY\x9a\n\x84-zs4\xb5\x9f}S\xf5'\x0d\xa1b\xa1VN\xa1\xab\xaf\x84\x9f\xa4\x07\xf4 \xd3S\"\xd6d`\x1f.\xf1\xb1\xe0\xf2Pf\xaa\xf4\xad\x17\x0d\xd0;\xb1\x1e\xc5\x9a\xe5\x1aOQ\xb5\x0b\xf8 \x89\xbe\x0cq*\xfcf\x1c!G\xd8\xaa\x11\x1b\xa0t\x91\x1bbOE<\x0f\x0fC\xa9\x9b\x86\xae;X\x93r}(\x95\xcf\xd9\x10\xb6=0\x03\xea\xab\xd1\x04\x1a\x16\\\xcb\xfb_\x1f:6?\x1a\xa1B\xd47\xdc\x84\xecmj\xf8\xf35\xadDW\x804\xe6\x96\xa7{\x16\xccZ\xcc\x8fv:\xda\xb1\x8b\x96\xa9,\x9b\xa2\x87T\x12\x1d\x10z{]\xb7f==\xa3\x9eY\x89\xfe\x19\x8a!\x92\x89W6|I\xd1\xf4\xa1\xa9\x9b\xa2\xbf\x92\x19\xeb\xac24\xc7\xac\xc5\x18\xff\x85L\xfa#\x91\x9f\xec\xf0]\xd1\xfe\x13\xd0\x0d\xbfz\xe1SI\xb2\x89\x89\xe6\x99\x12w\x87\xb2+\xf6e!\x1aa\xca\xe7\x0f\xe23\xdbDQ\x0d\x17\x00\"f\x99ODm\x88+\xb1|\xd9\x80j$\x14R\x14\x0fv\xee/\x18%\x89UW7\xa2\x03{\xd2\xf0\x91\x930.\xb9\x0f\xb1]\xbd\xe3SP\x188{\xda\x88\xbcf\xdc\xb9[}\x92\xc2v\xf5\x10\xa3\xda\xd05\xad\xbaQ\xc3\xd5\x8f'\x9f\xaaO\x8a\xc9#\x85m\xf4U\xdd=\x95\xff\x14\x18\xfd\xf6\xb0\xdf\x97\xf7\xea\xd2\x99\xfd$\xc5\x8d'\x86c88\x83i\x16\xbe\x8dec\xbc\x8b\xbe\x8f\xcb0\xe5\x98\xda\xaa\xd3u\xe1vZ\x048< \xa4\xff\x8e\x9c\x96\x19\xb8< \xcc\xe7\x01I\xad\xca\xc2\xeb\x01\x0en\x0fHj\xca4\x8e\x0fK\x8ceP\xcc\xe6\xfa\x18\xc9+,\xb0\xf0|\xfa\x8f\xb1\xc0\xca\nOA\x07\xdeb\x05\x81\xa9\x13\xddb\x08\x01\xff\xb7\xc3\x98B\xbc\xaf\xf8\xbf\xd1d\xd6\x90\x91\x9c9\xd4!#Q\x92Hd<\xcd\xa3\xd8D\xc0\xdb\xe1<\xac\"\x9a@#Lz&\xc9\x88&\xc9\xa0\x1bqu\xc8\xb1\xed\xb3*|L\xd7Z\xff\xde_\xbc\x90\xb2\xc4\x90G\x9e1u3\xc8HO\x0e\x83\x9c6\xd6A\x9b\x17\xa6\x19r\xa6%_*D\x9cNA\x87\xe4\xc3\x9cPQgTZ\xdb\xb2\x9dS\xee\x93*\xadA\xd3O\xab\xd0^8\xf7\xc4\xb2\xc4 \xb6*\xeb\xcf3O-[\xde\x16;\xb7\x1c'\x97\xe3\xec\x9a\xb1\x18\xd0\x13,\xf0M]\xa7\xd8,\x07w\xae\xb3,\xebi\xe6:\xcfRN4\x7f\xd7g\x9dj\x86$\x8d7\x0b\x9b1\x19N6\xebl\x03\xc7^h\x9c\x0f\xc3G-\xcb\xd1\x8ao\x1f\x0fiY\xec}\x11K\xcab\xd46<0\xb2O\xfb?KW\xaej\xcb\xd0\xea\x04\xcb\xe8\x98\xdc\xe5\x98\xdc\x05\x9c\xdf/\xa8[9U:]\xc03L\x82\x96Z7Z\xb9\xfb\xa8\xbcys\xb4\xbc\xc1\xb5\xfae\x95\xbc\xf9d\x1c\x99t\xb1\xa0\x1e\x16\xdb\x9eL\xfa\x97\xe5R\xd5[\x91|\xed8\x89\xe1I\x84\xba\xd4\x95#\x10L\x94\x80&\x18\xa6z\n\xab \xa2\x8cZ\xa3FU\xfek\xc8\x8528\xb7\xbb\xba\xfe\xec\x10\xb6/\xc9\xdaB\xef\x82\x88\x1b\xda\x97\x94\xd7\xe3\x8a\\H\xe8\xb3/za\xd4\xefQ\xc5\xaa{\x87\xaa\xb8\x1b\x02\xbf\x86\xbe\x0d\x8fc\xbd\x90\x01NK\x87\xe6(J\xb0\x17q\xdfeT\x97q,K\xd5[>R\n\xf0\xf9\xe6P\x8a[L\\\x9e4\x05\x80t\x81Nf\xec\x9c\xa7\xed]\x1d\xdf\"=``b\xb3\xbc\x81\x00\xa2\xc8\xd3\xf3\\%Z\x12\xd7\xfe>\x0e\x1d\xa6]V]\x83\x85\xa0&\x04t\xc8\xdac{\x10\xec\x80sF}p\x06z\xf0^\xa0A\x1e\x0eQ2\xf4#\x18\xea\x01Q\xd3\x1d9i_\xb1\x16\xe9\x11\xc0Z|\x05\xdfs\xf1L\xa8\xc0I$nH\xd5\xb1\xd3\x9elHG\xbc\xa6\xaf\xba\xe7\"\")\x1c~\x83'\x1f\x8a5C\x90\xde\x88\x8bi\xa1\xb6s\x05\xbd-\xaa\xabR;3\xf5\xb17\x84\xb1\xbf\x8d,gq\x15.%\xe8\xb7\xe5l\x98\xd8\x96\xf6\xb4n6\x94\x19Q\xa5vow\xb4\x00\x8e\x16\xc0?\x87\x050^?3L\x01\xaf\xa8)6A\x1fA\x95l\x08\xf4\x0bu\xac\xfeG-\x1b?\xc3\x9es\xa6\xf8\xb7\xde\x89\xdcz\x03\x97\xdeH^\x88Y\xcf\xcf\xab\xe7T\xa8\xdd\xcat\xe7d\xd4\xf3\x9e\xa6\xe1\x03)3\x97\x9e\x9fI//\x8f^V\x16=/\x87^7\x8fA/'\x7f^\x98=o2w^N\xe6\xbc.\xcc\x9b\x97\x935/\xc8\x99\x97\x991\xcf\xcb\x977\x85-\xcf\xcf\x8c\x97\x81\x17/\x8a\x15/\x8d\x01o&\xff]^\xf6;\x17![V\xe6\xbb\xfc\xbcwYY\xef\xe28\xef\xb22\xde\xf9\xf8\xee2\xb3\xdd\xb9\xb8\xee\xbaX\xa6\xbb\xa9\xbaH6\xba4.\xba(&:\x07\xa9\x1bZ\xbd\xe3\xd9\x18\x06\xba\xf9\xfcs\xce\x86\x8e\xfe:\x8by\x0ec\x9a\xcb\xc83\x87\xb3\xcc\xcd\xe2\x98\xc38\xe5r3\xca\xf9\xf8\xe4P6\xb9|\\rY\x99\xe4\xf2\xf3\xc8\xc5\xb3\xc8Eq\xc8I/M\x0c\x83\x9c|4\xc8\x1f\x87\xb2\xc7\xe1\xb5\xc7\xb2\x82\x85\x99\xe3\x12x\xe3\"Y\xe3\xacn\xe4f\x8c\xcb\xc9\x17\x87\xb2\xc5\xe5\xe5\x8a\xcb\xcb\x147o>D\xb1\xc4\xc5p\xc4\xe9'\x07\xc6\x0f'l5\x8c\x1d\xceo\x03ef\x86s\xf2\xc2a\xacpf\xacm&N8\xa7\xd1\x8a\xf1\xc1\xc5\xb2\xc1Eq\xc1\xc51\xc1\x05y\xe0\x12X\xe00\x0e8g\xff\x8d\xd1\xce\xc3\xff6\x040M\xcf\xfak\xcd\xc8\xb1\xd09\xbco\x03V\xd0u\xb5\xecn\x98\xf6\x8fy\x8co]\xfa\xb5\x8b\x93\xeb\xcd\xeb\x921\x9a\x9f\x89\xe7\xcd\xcd\xf2\x16\xdf\x14\xd4\x014\x9d\xdf\xcd\xc4\xfb\xaa\xe2bwsr\xbb\xc5\xb7\x7f*\xaf[\x98\xd5-\xbe\x0d\xe8\x18\xe6\xe3ss\xb0\xb99\xb9\xdc\xe2\x1b\x9e\xcc\xe3\xe6gqsV\xec\x0e\xde\xf1\x8fcf\xf6\xb6\xf1\xa1\xe9\xe4n\xf31\xb7\x05;\x89G\xe7\xc5vt&c\xdb\xd0\xc5 _\x9b\x8b\xadm\x1c?8\x91\xabm\xc2\xce\x1afi\x0b/\xbb\xbc\x0cm\x89\xfcl\xce>C0*\xd6\xcd\xe2\xe5]\xce\x105(\x90\x9d\x93\xcd\xc7N\xe6\xe7c\xcb\xd4\x9dlLl&\x9bA\x1a\x0f[\x14\x0b[\xc6\x0e'\xf3\xaf9n\xe8\xc0\xecw,\xfb\x9a\x97{\xcd\xdb\xcdp\xe4\xb21\x08S\xe8\xd50*\xb5 \x91\xdaD5x\x0e\x85\x1a\xff\xebH\xde \xc6vT\x05\xe9\xd3\xa2cm\x83'W|@]\x9b\x974\xcd\x1fG\xeb!L\x13]\xb2q\x0b(j\xc13C'\xc4\x14\xe6%IsP\xa4\xb9\xa7anz\xb4\xac\xe4h85ZFb4\x9b\x16-\x1f)\x9anl\xeb5\xe4$DC\xe9\xd0Vy\xc9\xd0\x10*\xb4\xdcDhi4h\x0e\xa4\x9b\x15T\x1a\x11\xd9j\xbf<+\x9c5\x1d\xd8\xd6\x7f\xf8\x07\xc6\xb3\xf9#_\xbd{ZH\xad\x98\x18\xff\xea\x94s\xcc-\x1d\x19\x0f\x1b\x8a\x88\xcd\x1d\x13\x9b9*\xf6\x98[\xda(9#d\xc5l\x0d\xc4\xc8\xe6\x8d\x92\x8d\x88\x93\xcd\x1e){\xcc--JRd\xed\xec\xd8\xda\xdc\xd1\xb5\xc7\xdc\xd2z\x89\x8b\xb3\xcd\x1ci{\xcc-}\xcc-}\xcc-}\xcc-\x1d\x8e\xca\x8d\x08E=\xe6\x96\x8e\x19\x9c\x98H\xdd\xf0(DE\xeb&\xc7\xeb\x1esKcr\x83\xd1\xbb\xa1\xf8\xddp\x04\xef1\xb7\xf41\xb7\xf4\xa8\x1csK\x1fsK\x1b%kD\xf0C\xc4\x04\xa7D\x05G\xc6\x05'E\x06\xc7\xc7\x06\x1fsKO\x89\x14\xce\x1b+|\xcc-\xed\x8b\x1a\x8e\x8b\x1b>\xe6\x96\x9e\x18G\xec5\xc1\x8f\xb9\xa5\xc7\xd2\xb3\xc7\x16\xdb\x81\xc0S\xdb\x83\xcc\xd9\x9c1\xc6\xe0\x882\x06w\x9c\xb1\x15\"\x99)\xd2x\xf2\xe5\xd61\xb7td\xec1*\xee\x98[:k,\xf21\xb7\xf4P2G''\xc4'\x1fsKk%S\xbc\xf2\xe4\xfd9\x1c\xb5\x1c\x1eUL\xce\xbc\xc8\xe5\xe4\xd8eo\xff!\x18\xbf|\xcc-=\xb7c\xd9\"\x9a\xe7\xc54GF5g\xefzrl\xb3SZw\xcc-\xcd\xcb1\xb74\xa4\x84GG\x1d\x9bi\x89\x943\x87I\x87\x02\xa5\x8f\xb9\xa5\xb5\x9f}S5w\xf0t\xe6\xf0\xe9cn\xe9\x84P\xea\xff~\xb9\xa5a<\xbb\x87`d\xe3\xe4\x1c\xfe|L\x8e\xa3\xca\x91\x1a{\xdc\x86\x7f\"jlO\xe0~\x1c!6\" \x017`&AO\x86\x0c\\\x17m\xe7Xa\xec'cmi\xb9\xa8\xf9\xca\x15\xe1\xc0\"\x01\xbc\xf4%LZd\"\xd1<6\x9b\x92\x80\xba2B\x12\xd1\x18\xc4,[\x91\xb6X\x8b\x14\xf5\xbc\xfd\xf6s>S\xd3ohr\xa9\xb8M\x12\xb4H\x82i0\xc8~\xff0\xa2C\x8a3\xc0\x0b\x05\x8d\x805\xd9\x8btpB\xd9W\x7fn\x98\xb6\xc7\xa7\xf5\xbe\xa9\xd7\xb4m\x85I\xcf\xc7\x03\x91'\xf7d\xfe3\xcf\xf2}\x8a\xdd\x87\x15\xd5\xba<\x88\x0b>\xb6U\xf5\x0f3+\x86\xb0\xfe\x1e\xd6\xa2-R\x91\x91\xadpb\x1b\xc8\x10`\xfc\x18Iy(n\x89(t\x0d\xa9Zq\xff\xb7#\xeb\xeb\xa2\xb2\xe2\x12y+\xd0\x84'\x9eO\xe1\xca(\x14\xa5\xc8\xe2zlv\xa8+\xbf\xdd\xe6\x03\x8d\xf7N\xac\xa0}Co\x1eh\x01]\x93\xf6z\xe6$wD\xb6\xeeI\xd3-[\xda-\xb1mF\x95\x80\x97)\xd4z\xc0\x8fD\xe3g^CQu\xf4\n\xc9\x92\xa9J8\xa1\x8co\xa8 f\xb8 r\xd8\x94\xe1V\x7f\xb7\xc4\x9b\x145#\xd1&\xc8\xea\x99X\xb1\xae\xc5\xa4c\xcb\x7f\xf4,\xfbS\xe6\xea\x07\x0d5\xb3\xe0q\xbf\xf8\x956W\xfc\xf7{\xa8\x0f\xdd\xfe\xd0\x0d\x7f\x1b\xd6\xdaH\nW\x16\x1f\xac\x8d\x03\x16.\xaf\\\xb2\xdfg\x96\xc8\xe7\x9f\xd4\x073\x8b\xa6\xcc\xda\xaa\xd64\xb3\xd8\xfe\xfb\x0f\xc7'\xb2\x8d\xb2\x9d\xa6n\xe9\xd4<\xfeq&\x88X\xd1\x86v\xd7\x1f\xab\xc2\"\x13+N\xec\x99\xfa1xC\xca\x96\xa2\x18\xfe$\xc0{\xf2\x85F\x08s\n\xa1\x81\x89Qw\xf2\xe1O!\x11\x83\n\x118T\x08\x1fT\xa1c\xaa\xf3`R!<\x82\x109\x8a0\x03\x9f\xea\x14\xd8\x19@\x0bG\xb4\xf0D\x9c\xaaS\x98\x07\xbf\nS1\xacNi\xbcQ\x01\x1c+@\x06,+L\xc7\xb3:\xe5\x91(L+\xcc\xc3\xb5\xc2Tl\xab\xbb\xd9e\xc9\xc7+\x88o\x85\x89\x18W\xa70\x8el\x8b\xc0\xb9\xc2\x0c\xac\xab[ \xedBxW\xc8\x89y\x05\x08\xe2^!\x17\xf6\x15f\xe1_!\x1d\x03\x0b9p\xb00\x03\x0b\xeb\xd9\x9f\x1c&\xb1*\x991\xb1\xf0@\xb8X\xc8\x8f\x8d\x85\x04|,L\xc6\xc8z\xf7p?N\x16&ae\x9d\xa2z\x0c\xad\x07/\x0bR\x05\x88\xc4\xccBn\xdc,\x04\xb1\xb30\x17?\x0b>\x0c-\xc4\xa9@A\xf39^K\xca\x89\xa9\x85 \xae\x16\"[6\x0d_\x8b\x8aRg\x84\x1fc\x0b9q\xb60\x0fk\x8b\xca\x93\x07\xbd[\xb1\x99\x81\xb9E\xe5\xb1\xf6t\x0e\xdc-d\xc1\xdeB\x1c\xc4\x14B\x18\\\x88\xc7\xe1\x82\x0f\x9c6\x01\x8f\x0b\x01y\x0eDN\x06l.$\x0f^\x1cF\x17\"G(\x12\xab\x0b0\x01\xaf\x0bnpc\x10\xb7\x0b\x19\xb1\xbb\xe0j|\x02~\x17\xc2\xb3`\x16\x8e\x17 \n\xcb\x0b\x11x^\x88\xc2\xf4Bx\x82\xa4a{!\x1a\xdf\x0b.\x8c/\xe4\xc0\xf9\x02$`}a\x02\xde\x17\xe21\xbf\x10\x18d\xcf\xf2\xf0\xbf\x17\x87\x01\x86L8`\x085\xc7\xb12&a\x82QI\x9eL@\xa2d\xc5\x06\x83\x07\x1f\x0c30\xc2\xa80W\xbe Qf`\x85Qyn3\xdd\x8f!\x067\x8e\x182c\x89a\x16\x9e\x18\x15\x87a\x8ca*\xce\xd8\xb7m9`\x99\x90\x88?\x86x\x0c2\xa4\xe2\x90! \x8b\x0c\xee\xd5\x0d\x1e\xbc)$`Ncp\xc9\x90\x8aM\x86\x14|2\xb8;9\x03\xa7\xecYC\xd8/3\xf0\xcb\xf8\xdcva\x98a2\x8e\x19\x17\xe5\xc26\xb3\x92\x1b\xdf\x0c\x99\xe6\\$\xce\x19\xa2\xb1\xce\x80\x1e\xe68\xe6\x19z\xef\x00\x8e{\x86H\xebz2\xfe\x19\x95\xa6\x826\xdd\x18hp\xe2\xa0a\xdc\xe2|Xh\x08\xbbRpL4$\xe1\xa2\xb1\xa7\x1d\xd8h\xd7\xa3\x18>\xda~\xd6)4 '\x0d\xe0\xc2JCx\xbc\x8c/\x95\x0b3\x0dCL\xb4\x137\x0d\x89ms\xcc\xfbd\x0c5*E\x07)\xb8p\xd40jQ\xa8\xc1\xda?\xe6\xe2\xa9a\xfe%\xad\x07[\x0d\xe1/\x01\xe3\xcee\xc3XC\x00g\x0d\x13\x1a\xe7q\x8dN\xc1\\;\x85\xa9\x92(\xa3\xd6\x81\xc9\x8c#\xfe\xa6Xt}N=c\xa2vu\xfd\x19\xf6%Y\xa3H\x0d\x10\xfe\xf8}Iy\xc5>/^\xe2\xa0\x84$[\x96X@\xc2\x8c\xd6;\xef\xea\xb4\xee\xb0\x9b\xd9\xed\xa0\x03N\x14\xa9\x1c\x9fW\xeb\x86c\xca\x84\xab\xcd\x87Y/Z\xbe\x97\xba\xae\xbf\x13\x1d\xaf\xa2$\xf5(\xaaC\xde\x0f\xfd\xc1\xe9\x90\xe5=\x8bw\xc6\x8a\x92\xe2\x92\x85\xe8\x19\xa9\xab\x90\xafX\xb34\xcf\xa3\xb1\x90\xc4\xf9\xe3\x8e'\x06\x8e\xa3\xbc!U\xc7\x94W\xb2!\x1d\xc1\xe6\x9f\xd1*e\x06\x92F\\N\x18\x15\xca\x1f\xc7BB\xdd\xd2;dF++o/\xe1\xbcE\xc5\xfaP\x12\xcd`B\x88&\x86\xe6TW\xdc\x08@\x9cX\x9cT\xc6\x90(I\x19\x8c\x8b\xf1Q\x95\xfd\"\xb7\xc49\xeen\x1dj\x85[\xa5\xf0\x12\xbcNb\x912\xac\x05>\x81\x8f\xda\xcaQ[\xd1\xcbQ[9j+Gm\x05+Gm\xe5\x9fT[\xf1\xee+\xde\x0f\x14\xee\x8f\xd5\x17\xddIH\x7f>\x147\xa4\xa4U'\xd4\x07\xebaD \xbd[\xd3}'\xa6i\x81R\x1c\x0d\xac\x03\xfd\xee4B\xb4\xc8%*\xce/~\xdf\x84\xdc\x8b\x02\xb4\x87\xa2\xe3\xcet\x1ezV\x16\x0eJ\xa5\xde\xa9\xa8\x8f\xadod\xf4n\xc6\x0e\xc7\xa8\xdf\xe6\xf4\x92\x8a\x93\xd9\xb8\x9e\x9b*e\x14\x8c>\x9b\xe2\x90\xfe[=?\x92n\x1fI\xb7\x7f\xa9\xa4\xdb\xe6\xd5:z\xa9\x10\xba\xb80^\x92\xd2\x92/\xd6?\xaa\x03\xe6\xa5\xb5 \x88O\x13q\xa9!\x0e\xa9\xe7S\xd6F\xe0\"\xc19\x1f\x8c\xb1t\xde\x12\xe0\xd7\x03\xf8U\xc0\xe0\xbb\x9e\xd1\x12KH\xa0%\xa8\xe9\xe9\xb9-~XN\xca\x08\x1b0\xa0 \x85T\xa3\xf0 m\xdbz\x05n\xe5i\xaa\x113\xe4PQ\x0e\xe3.\xc2\xac\x8b\xecg40`l\xa7\x15\x98\x896\xf4\xc8g\x85E\xd8_\x19\xaer|\xd6\x96\xc4\xe3\xc9GJ\xc1\x81\xc5\xd4\xcc\x8d+r\xbe\xa1k\xca\xd4[\xd2y\xbb\x96\xa9K\x9e6wul[B&P\xe4\x0c EI\xe60x\x12M\x9d\xc8\x96O\x0b\xef\x9cb\xd2831AD6\xa6\xf0tF\x8e\xb8\x91\x1dc\xa4?\xf2X1\x01\xfb\xc5\xebgE\x83\x8b,\x7f\xab[\xc7Cz\xc1\xc6\x8d\xc7\x90\x96\xa5\xf0\xb1\xb6EuUR\xdd\xbf\xaaU+\x9c\xa9\x83@\xb6\xe3\xf4\xafhA\x94\x15\x1b\x0f\xb6'=\xad\x9b\x0dm\xe8\x86;qE\x13\xf1\xe6\xe9yCFF\x84O\x7fAz$\x05\xc6Gc\xf4a\xb5/m\xfd)Z\x7f\xd1\x9c\xac_($c\xa81\xd3\xd1\x1d\xd0\xa3DI\xd9C\xb3\xe8T\xa2\x044+QR\xda\x96E\xcb\x12%\x0f@\xdc\xc0\x7f\xeb\xc3\xc1\x17\xa9\xf8Q\x1e;\x96\x9f1\xb4{i\xcb\xbdg\xe1\x18\xa2\xebdT\xba8\xdc\xaei\xc9\x9d?\xa4\x02\xb2\xe6\xdb\xbf\xdd\xe1s\xa6P\xd9~\x83\xfa\xb6\x12\x8e\xa3\xba\xd2\xbe\xa5\xa4\xe7\xe4\x04\xb5\xf5\xba }`5\x1fU-B\xd9\x96\xb7e\x92\xecz\x1c\x9f\xc2q\xf0O^\x0cV\x18\xa3(\xdeo*|\xac\x89\xaf\x85\xbe\xde\x0b\x11\xf8\xa8\xfce\xfcC\x0d\xb1\xe9C<$\x1fh\xf6\xddv\xe2\xb3\xd9#\xf7\xf6\xdd\xe5\xab\xe7\x9c\xe0H:\x83\x05SP\xc1\x8f\xaf\xf3Ji\xc6=\x85\xa8\x0cw\xc4)`\xc4\xe6jW\xd2\xa3\xcf\xd9|\xfd\xf9P4bR\\\xd5W5g+\x89\xf5)\xe1\x87\x81\xe9Qz\xe9\xf2&\x19\x92\x06\xf7\xd9W\xd8\x8cI\xf6\")\xcf\x91.\xeb\xe88::\x8e\xf4\xbf\xff\xd2\x1cG\xb2\xa1\xa6\xbe\xe5\xd3|\x9c\x9a\x97.\xe0\x19&AS\xbdb5\xafdu\xab?\x03\xc6:V\xd4\xa2\xf0'\xce\x88s\xd3X\x9f|b\x9a\x8c!%\xc6H^(A\x86?5\x86\xf3\xd8s\x1fz\x9d3\x11\x86\xf7\xcc\x0b\x1d_\xd3\xd3^\x00~\x11\xefOx1%\xd5\x85;\xa5\xc5\xa4d\x16\\<\"\xcc\x9b\xc6\xa2\x9b\x97\xc0bb\xea\n\x94P(\x9c\xb4br\xba\x8aI\x89*\x98q\x8a\x8dX8E\xc5\x94\xe4\x14.\xca\xf8`Z\x8a\xa9 )\xd8.\x8e\x88\xf3\xa6\xa2\x98\x92\x84\xc2\x9fl\"C\x9a\x89\xa8\x04\x13i\x89$f\xa6\x90\x98\x9a<\x02\xd0\xf8\x16W\\P\xd6\x84\x11\xf9SEdM\x12\x11\x97\x1ebZb\x08\xc7\x00\xfbRB\xa4'\x83\x18\x92>`k\xdc\x91\x06\xa2\x8bM\x0015\xf5\x83H\xf1\x80\x08\xc4\x93>\xccH\xf7\xe0H\xf4\xe0=\xe2\xbd\xc9\x1d\xc2\xe7\x7f\xbe\x84\x0e\xbeT\x0e\xfevLK\xdf\xa0v\xd2\x910_\xe2\x86L)\x1bf$k\xc0W\x12v\x94\xcfH\xd0\xc0\xea\x1bI\xeb\xd0\xd4\x0cs\x932\x043\nx\x121D\xa5`\xc0\xd9\xc0\xd3\xd2.\xe02,\x1e\xde\xd9I\x16b\x07#&\xb1\x82\xbf\xdfQ\xc9\x14\x12\xd3(`\xd4\xee\xbe\xd4 y\x92&\xccK\x97\xe0\xfc\x863R$\x04\x93#\xf8\xd3\"\x84\x12\"8\x073% BL\xfa\x03$\xf1\xc1\xcc\x94\x07\x91\xc9\x0e\xd2\xd2\x1cD%8p\xe4\x04@\xabw<\x1b\x93\xc8`~\n\x03gCG\x7f\x9d\x94\xb0\x00<\xc9 2\xa6%\xc0\x13\x12LME\xe0L;0#\xe1\x00jx\xf9\xd2\n\xa0 \x05\xf2\xa5\x12\x98\x9eD\x00I\x180)U\x807-@|B\x80\xa8T\x00\xd2K\x13\x93\x04@>\x1a\xa4\xffG9\xf1\xf1\xdac\x89\xd7\xc3d\xff 4\xff\x91\x04\xffV7f\x90\xfa\xa3\x04\xfe3\xa8\xfb-_\x12J\xda?\x8d\xae\xdfE\xcd\x9f\x97\x94\x7f\xde|\x88\"\xe2\x8f\xa1\xe0\xd7O\x0e\x8cv_\xd8j\x18\xe1\xbe\xdf\x06\x9aL\xb2\x8f3D9\xe9\xf51b}\xf3\xae;\x13\xa5\xbe\xd3h\xc5h\xf4c \xf4\xa3\xa8\xf3\xe3H\xf3\x83t\xf9 D\xf9Q,&\x83\\m\xb4\xf3\xd0\xe2\x0f\xc1\x1cX\xbcC\\K\xac\x199\x16:\xdc\x998\xe8\xef\xf5\x9b\x13\x97,'j\xc1\xdd0\xed\x1f\xc6\xb5\x8d\xfe\xf7(\xb2\xfb.\xfd\xda\xc5Im\xefu\xc9\x18\xcd\xcfDg\xef&\xb2\x8fo\n\xea\x00\x9aB[\xdf\xd3\xd3#\xf2\\\x84\xf5N\xaa\xfa\xf8\xf6O\xa5\xa7\x0f\x13\xd3\xc7\xb7\x01\x1d\xc3|4\xf4\x0e\x02z'\xf5||\xc3\x93\xe9\xe6\x87\xa8S,\\\xdcYq$\xb9\x995\x8e\xe3\xea\xd4\x18F\x10\xcasg\xf6H\xdc\xf8\xd0tR\xc9O\xa2\xf0\xf3\xc7\x87\xc7vt&Y\xbc\x81\x86\xf7\xd3\xc4\xbb\x08\xe2\x8d\x96N\xa7\x86\x9f\xb0\xb3\x86\x89\xe0\xc3\xcbn*\xf9;\xac0\xffu\"\xed\xbb\xb3\xcf\x10\xc4\xe3\xbb\x89\xbe\xbd\xcb\x19\xa2\x06\x05&Q\xbasvn\x874\x1fg\xb7\x9f\xc6=Sw\xb2\x91\xb6\x9b$\x7fit\xedQD\xed\x19;\x9cF\xcb\xeecF3\xfa\x1dK\xc8\xee\xa5b\xf7v3\x8c\x9d1\x06a\n\xbb:\xc6\xa2\x1e\xe4O\x9f\xa8\x06\xcfaK\xe7\x7f\x1d\xc9\xd3\xc1\xf9c;7\xc8\x90\x1e\x8d\x04 \x9e\\\xf1\xe1r\xedD\x0et\x07\xea\xc3\x8f\xf7\xd0Q9\xf3\x11r\xe8\x0c\x9d\x1018\x87\xd3\xdc&\xdbv\xb0\x99\xbb\xa7\xe1\\\x06s\x18\x05\xc5L\xe6*\xef\xb9\xc95a8KyF~r\x9b\x99<\x1f'\xb9nl\xeb5\xcc\xe0!\x17\xbc\xe3\x9a,\x94\x81|5\x93{|\xb4\xd9#\xac\xe3\xb3\xf8\xc6\x11~\xf1 \xb3\xb8\\s!\xa8\xa30\xd4\x11\xbd\x88\xfb.y\x91\xd4\xd1X\xea9D:0\xee\\\x16Du\x18S\x1d\xd1\xac \xae:+\xb2:A\xa3\xeek\x8f\xedA\xb0\x03\xce\x195\x05c\xed\x10\x95B\x19\x15\x9e\xee\xf9\x90\xd6A\xac\xf5\xa89\xd3\xd0\xd6\xfe>\xcdE\\\x1b\xc2V6\x95\xe5\x14\x00\xf6\x11\x9bv\xc4\xa6\xfd\xa2\xb0i\xf8\xf7\x8bW\xc0\x13\xa1j\x98\xa8)t\x01\xe9\x06@\xbf@\x1fX\xef\xf7\xe3\xdb\xe2\xd5ld\x83\x9e\x88rs\xca\xf9\xd7 \xce-\x84t\xf3\xaa\xdf>\xe5\xbbs\xe2\xdd\x82'ph\x94 ?\xea-\x84{\xcb\x8d|\xcb\x8c}\x0b\xa0\xdff\xe3\xdf\xf2\"\xe0b0p3Ppyqpb\xb6\x06\x90py\xb1p\x11h\xb8\xecx\xb8\x00\"n\x1a&\x0e\x15\xe4\xc5\xc9eA\xcaEb\xe5\xd07\x93\xf0s\xb3\x11t\xb91tn\x14]f\x1c\xddC \xe92c\xe9b\xd1t\x99\xf1t~D]vL\x9d\x1bU'6\xae(\\\xddtd\x1d*\x8c\xa3\xed\x1c\xd8\xbaY\xe8:'\xbe.\xa8Rx1vq\x1aG>\x9c\x9d\x1fi\x17nMV\xb4\x9d\x1fo\x97\x0dq7\x17sg\x89\xe3\x1a\x0d\xaa<\xe4\xc5\xdd\xc9e\x84th.\xf6.\x02p\xe6\xc5\xdfE\"\xf0\x9c\xa0\x96D\x14\x9e[\x0e\x12\xfd?\x1b\x8b\x97281x\xbc\xf0(Da\xf2\x92Qy\x0e\x90\x93\x17\x99\x97\x0b\x9b7\x17\x9d\xe7\xfd\xb23\x10z\x11\x18\xbd\x10J/\x8c\xd3\xf3~\xf0\x14\xac^\x1cZ\x0f\xc5\xeb\xcdF\xecEc\xf6RQ{\x91\xb8=\xf7 :\xa6\xb5\xfb\xf9\x18\xfc^\x0e\x04\x9f\xb7\xc9\xd6\xdfg\xe1\xf8,i\x08\xae/+\xb2\xcf\x85\xed\x9b\x89\xee\xb3\x9bl\xa3\xfd\xf2\xe3\xfd\xfc\x88?\x07\xe6/'\xea/3\xee\xef!\x90\x7f)\xd8\xbfH\xf4_\x12\xfe/\x1e\x01\xe8\xc0\x00\xbaP_\xf1\xb8\xaf0\x0e0 \x18\x8d\x05D;\x94\x1b\x0f\x98\x17\x11\xe8\xc0\x04\xe6F\x05\xe6\xc6\x05\xce\x9f#Q\xd8\xc08t\xe0\xf8`\xc3\x10\x82\xca\xda\xc40\x82a\xeb-3N\xd0\x83\x14\xc4\xb1\x82\xa3\x16\xe6B\x0bzMp\x0c1\x18\x8f\x19\x8cD\x0d\xc6\xe2\x06#\x90\x83\x90\x82\x1d\xc4\xd1\x83\xf1\xf7@y\x10\x84\x10\xc0\x10\xc6\xb7\x07\x99\xb39\x91\x84\xe0\xc0\x12\x9a\xad\xf05P\xfb\xc7<<\xe1\xe4\xcb-'\xaa0\xe8\x882:\x92 Y\xe8\xc3\x16\xa65\xc8\xe1\xfa\x9a\x8e0D\xc5\xd5\x8d\x13c\xe8A\x19\xa6\xf5d*\xd20\x06k\x98\xd6\x12\xc7\x98\xe6C\x1c:1\x87\xe0F\x1d\xa6u!\x19y\x18\xc2\x1ez\xab\xf7\x85_\x85F63\x061\x01\x85\xe8\xc7!Fu\xd8\x15k\x19\xdf\xe9\x99x\xc4$D\xa2\x1b\x93h\xc7\x85ND%N\xde\x9f\xc3\xd8\xc4\xf0\xa8br\xe6\xe1\x13\x93\x11\x8a\xde\xfeC0\xfa\xd9\x87S\x0cn\x00\x109D\x90\x1d\xad\xe8\xc7+\x86\x10\x8bY;\x96\x0d\xb78\x0f\xb9\x18\x89]\xcc\xde\xf5d\x04\xa3S\x9ai[Dc\x18\x03(\xc6`\x87C;+D\x0e\xc8\x14\x88#\xbe\xa1\xd8\xb0\xc7\x08\xe0\xe3,\xdd}\x0e\xfc\xd1\x12&\x9fr\x03 # \x90I!\xdb\x11\xc7&\xa6'\xb8\x03\xb4\xdb\xbc`\xc8\x10\x1c\xd2\x0b\x88\xc4\xe3\x13E\xf1\x82a\x1c\x13\xde\x1bz\xef\x1e\x92\xbc\xe0H'<\xd2?UsC$3\x83$]0\xc9\xac@I\x0c*\x99\x13, N\xb8d^\xc0\xa4\x032\x99\x1d4\x89\xc2&\xf3\x03'#\xa0\x930\x9e\xddC0\xb2\x16\xa8Q\x96\xbc\xa7?\x1fh\xc3D\x0d\xcf(!G\xe8\xc0\x11:\xf0\x0b\x82\x0e\x8c\x1b\xea\x88\xd0\x8f\x86\x06s \x80\x94\x15B\x08\xeb\xb9\x93\xc5\x90[\x13\xd8\x99'\x10\x8b\xcdG?\xd4\xc8\xcb\xe1\x80\xe1\xae\xe8\xfa\xfa\xb7\xdf<\x8dE\xe3\x0e\xf0\xd9\xb6YOi\x8811Pi\xb6\xbb\xde\xc8\xf3/\x83\xe2\x15\n@\x93&\xdf\xb7\x9b\xbai\xbb\x8cM\xd5\xa4\x05\x9a\xba\xa1m'\xb7.M\x92j\xf9\xb8\xbd\x16\xa4\x18\xd3\x9f\xe6\xe2;\x02\xa0\xe1\x89\x1aiHM\x1f\x83\x83\x8d\xfd\xdd\x82\x08\x1bc\x88\xa2\x84\x11|p\x00\x19\x1c\xd1\xb1\xa9\x1e\xaa14X\xef\x9b\x89\x0f\xd6;\xe6\x11cv,\x00\x16\x9ea<\xf9\xa0\xc1\xca\xff\xa3~\xbbej\x97\xb7\xfdmG\x9anl\xfd }\x83-\x99\x8c\xed\x1e\x84\xaa\xf57\xa8W\xda\x92{\xaa\xdd\xf7 \xad\x8cOC\xdc\xca\xd1\xbb\xe6\xf2|\xda\xa8\xe1\x88Y\xe53W\xe6b\x84\xff\x91\xa6\xe6\x14\x14\xb0\x86\xf7\xb5\xe4y\xccL\xdf|\xd0O\xd2\x11\xd8\xd7\xdcG4\xb8o\x0f\xee5$\xd9@_\xa3\xde1\xc4\xd7\x10n@{\xf1\xe6\xea\x0d5\xa3e\x94\x85J`O\x9a\xae`\xaa{c@z\x87\xaa\xfaog\xe0y\xf9\xfd\xb9\xf1\xb6<#\x0d\x87\xf7H|\xbfLL\x1fm\x84\xc2\xc2\x879Zkq\x1e8\xe8\x8c\xc4\xe7\xa2\xe9q\x9fw\x96\x98g\x87\xf3\xd4\xf0\xb6\xce>)\xc6w\x02\x13\x0e\x04\xe4\x00pn\xfda\xdde\xd6\xde>\xde\xcb\xb1]<\xdc\x04c\xa5\xce\xdd\xb3\xcd-\x03\xdb\xad\xf1}\xda\xfb\x1dG{\xf3\xec]9j?N\x98\xf7\xd8\xee\x9bo\xdfEw\\\xe3\x0b\xce\xda\\\x8d\x0d5v[I\xc6E\xeb\xcdX\xd2agB_\xc7E@H-\x0e\x9a\xc1\xa9d\xb23\xb7\xb0\x914K\x19\xf6\xaa\xc2\xc1\xceD\x90\xc6f\xdb\xe0 \xa4\xdf:[\xeb\x1f\xe0Y\xbb\xdfH\x16\xa2\xd7\xba\xb4\xda\x89\xad\x9d\xbb7\x8e\xc4y\xb4Y\xb7.\x1b\x9c\x16nW\xcf\xf4\xfd\x12b\xf7L\x88ia\xbc/*\xdf\x1e\n>\xcd\xd5\xfd\xd5gm\xac\x9a\x9c\xb1\xce\x1aV\x14\xc2\xca\xa9\xb1\x0f\x83\x957\x9d \x8d\xd7\x12\xa8K\x81E\xef\xb5\x1e\x1c\xc4\xb3\x93\xa6K\x89F\xbe\xf4\x88\x83e\xd6\x992\xe94\xe9\x95\xf79Y\xa2-!\x13=v\x10\xf6\xda\xc57\xcaZJ\xd3=x#A.\xaf\x18\x84=y\x90\xa3\xf9s\xbdz\x10\xe8\x03J\x18\x88y\xf8\xc0O\x1a\x9b\x1e.\x14\xa6 \xf48\x07 \xe0 \x80\xe0\x10\x8b2]\xe5A\xc5\xd9\x96\x9cVU\x98#0\xb2\xc3s#+\xa6\xe9I\x01Qv\x87#\xe8\x04\x03\x1d\x8e\xe9L\xaaN\x85\n\xf1Y\x99Cq{\x0d!O_\xa6j\\\xee\xa9-.O\xdd^D\x88\xe0\x1f\x8c\x9c\x95N\xee\xc1,\xfa\x98(\xd1Z\x99\xac9\xae\xe5\x81\x86;>\xd6\x1cm\x0d\x15\x18\nj \xcf\xa1\\\xfa\x9b(8\xc5\xe0D\xef\xa3\xf5\xaaS\xf1L\xf3BjBt\x7f\xa4\xcd,8\xcf\x1b\xa9 \xb2bG\xbf\xc8\x05\x99\xcf\xa1\xe0\x15\xe8\x13\n\xc7sx\xca\xb1t<\x87\x91r<\x87\x8f\xe7\xf0\xf1\x1c\x16\xe5K\x9c\xc3i\xf7\xeeIw\x95I^\x16C\x94\xe6q\xd1|-\xa2d\xf0\xb8\x98\xf2\x0c\xef\x8b(\x86\x0f&\xc6\xab\x14\xdb\xd5Q\xcf\xd4\x84\x90G\xff\xc8\xa94\xa3\x87\x13|J\x08\xf9k\xb4K\xc9\xe3\x11B'R\x9c'(\xd6\x054x9&\xd4n\xbd\x1c\xa8\xfd\x1f\xa3\xb6}\x81\xb8\xa6i\x19\x0e\xfe\x81\xb1J\x99r\x16\xfcc\x02\x90\xd2r\x13D\xe4\x00\x98\xd9\xfc\xd99\x08\x8eqD\xbf\xe48\xa2\xc9\xb9\x03\xb2\x04\x13\x0d\x92]f\xbd\xf1z\x1fm>7G\x80\xb4\xde\x85\xb0\xf4\x84\x00\xf1\x07\xe5/,fh\xca\xd6\xfdEB\x85\x92\xb7\xe8\x19!B\xc6\n\x98\xbc\x15k[\x9f&\xcen\xe8\x84\x06\xce\xd8r\x8f\xc1@\x89\x9bg8\x18\xe8\x0f\x9eMg\xdaV\x19\x11 \xd4\xa3+\xa2\xf7\x0ew\x02\x83\xf0\x843\xc6vb\xba\x82Qz\x02}\x88\xf1D\x05\xee\x14\x05\xa8\n\x8c+\xc0\x1d\x9a\x90\xc0yX\xfb\x15\xb3\x8c\xe9\x07\xdc\x89\x07\xf2\xa5\x1c\xc8\x96l\xc0\x99f\xa0\x9b\x9e` Wj\x01\x7fR\x81I\xe9\x04&'\x12\xe0\xfd\x1d\xbbj\x9c)\x04&'\x0f@9\x07\x1ci\x03\xe6$\x0c\xe0\xc9\x01\xc6\xbdA8\x1d\xa7$ p'\x04\x98\x99\n * @<\xe1\xff\x0c\xaa\xff\x19$\xff\xc8\x86\x91\x91\xca?/\x89\x7f6\xfa\xfe0q\x7f6\xca~\x17Y\xff\x1c\x9a~\x94\x92\xbf\x8b!\xe3\x9fJ\xc3\xef\xa4\xdc\x9fH\xb6\x8f\xd0\xec;\x0f\xca8\xf4\xafu\x82N\xa4\xd3\x1f\xa8\xf3\xb1\xf1\xfd*\\\xf7<\xf2|A\x96\xaf\x89\xb3i\xf33\x10\xe6\xcf\xa3\xca\x1f\xcd\xf2\xf1a8\x93\x1e_\x0e\xb4.q\x0e\x11\xbe\x97\xe5\xddA~\x1f\xa4\xbd\xb7\x19\xa0\xe3\xa9\xee\xedw\xff\x8e\xf5u\x12\xb1}LgCd\xf6\xee\xbe\x05 \xec\x13\xa8\xeb\xc7\xf4\xdc.\xba\xfa\xf9D\xf5\xd3)\xea\xd1\xef2\x91\x96\xdeKH\xef\xa6\xa2\xf7\x91\xd0\xa3\x83\x15K<\x1f\xa2\x9c\x1f\x91\xcd\xcf\xa0\x99\x8f \x98\x8f\xa7\x96\x0f\x92\xca#\xdc\xecVu\xc83!\xf2\xf8y\xb4\xf1h\xa3\xb4\xbf\xcc\"\x89\x1f\x93\xc2\xcf\xa1\x83G\xe8\xdfg\x11\xbf\x8f\x89\xdesR\xbc\xbb\xc8\xdd-Z\xf7<\x84\xee\xd9\xa8\xdc\xf3\x92\xb8\xc7\xd1\xb7\x07\x89\xdb\xa5\xad\x1f\xa2l\x97\x8fy\xc9\xda-Vs\xbb\xb6X\xdam?5{$){\x04\x1d\xbb\xd1\xe4\x9c\x14\xec\xb3\xc8\xd7m\xb2\xf5|4\xeb\xf9\x08\xd6\xa7\x7f\xdd \xa9z\x88N]\xed\xd2c\nuaI\x8c\xc9\xd3\xdd\x1a{F\xc2t\x94*}L\x92n\xb4$\x07=:j:\x8d)\xd1c\xc8\xd0\x834\xe8a\x02t/\xf5y$\xe9\xf9\x98\xee\x1c\xed\x9f1\x8a\xf3)\xce\x87\x00\x8f1\xb9y\xb8vc6\x8d\x05\x0d>\xeb4*\xf3^N;4q\xa8\x13o\x88\xf6\x0f\xc3U\xae\xff=H\\\xde\xc5\xbb\xbcQ\x9ar\xa7!o45\x0359NJ\x1eW\xbd\xe5.\x98NA\x0e\xa3X-@\xc9\xc7Q\xda\xf1\xb8\xb6N\xa1\x1a\xf7\x93\x8c\xc7\xd5;\x91A\x1cc\x0bGy\xc2\xe3Z\x91\xc4\x0d>\\\xf8\xe5\xba\xb66&\xcaX\xbc\x1a\x91 \xec\xdf\xe3\x93\x05\xe5\xfd\x1e\xea\xcbw\xdd\xed\xe8P\x97\xc8\xec=t@\x13\xe7\xe5\xf4\xc6\xd8\xbc\xc7\x17\xf1\x13x\xbc\x13\xb6+?k\xb7\x7f\x7f\x98\xc1\xd4\xcd\x9d\xa4#qq\x1c\xddh\xdf\xc0\x0br\xc0\xd9\x9b\x9dK\x0d\x82\x1d\x87\xac\xfc\xdb.\"f7\xe7\xf6\xcc\xa6\xa73l\xa33[\x954n\xed \xabv\x86\xce%sh#\x97\x14`\xf2\x87\xc7\xb0g;y\xb3\x9d]J \xb7\x98B\x87=\xa6\xbe\xf6\x92^'\xeats(\xae\xf9_\xbf\xd2;:\xa0\"tc\xcaKk\xfd%\x02Y\xda\x99\xc4\xd5\x11\xc1,N\xb2j\xd1\xf4\xa8pdkf\xf9\x83\x87\x8c.\xce$\xa2v\x9e\xe1\xfco\xf8\xf4\xc9I;=\x9fpZ]\xffJ\x81C\xac\xc4\\\x92\xe9\x11\xb1\xf4LJ\xe9\xc1z\x93\xf2\x062\xe9\xd94\xd2\x92\xf6V\x8a\x1b\x08\xa4W\xf9\xa8\xa3G\xa4\xd19\xe9\xa2\x03D\xd1\x1d\xad6\xb4\xd9\x15U\xc7\xbd\xbd\xed\xe2\xbb\xb2^\x7f>\x7f)\x96\x91\xa5N\xd8j\xc45i\xaf#w\x14\xed>vO\x9an\xd9\xd2nyM\xc9F\xb7\x07\x13\x943'\xf7qQu\xf4\x8a\x9a\x87\xb1+\xce\xd9l>\xc4\x1cG\xc6\xb5\xb2\xdc4.H\xd3\xb5\xb4\xfb\x81\xf7\xe6+\xed\x079\x9c\xd8H\xff\xa0u=b\xa0e\xc4\xc2\xf3q\xd5+\xd2\x16kX\xb1z\xa0\xa8\xb6\xf5\x94\xa1\xe4o'\x0e\x83\x15\xdbN\xf6\xfby\"\xdc\xc7\xe9\x0b\x15n\x07k\xb2g\xdb\x86\xd2,\xd5\x9f\x1bvbp\x1dy\xdf\xd4k\xda\xb6BKV\xa32\xd2`\xf8\x9f\xd7\xd7\xa4\xa8N\xcd\xcb\x86uy\x10\xae\xd4\xb2\xd4\x1eb\n\x08a\xfd8\xacE\xdd\xea\xf2C\xd4j)Hd\x08\xadyl\xa0\xac\xdb\x8eo\xb2\x0d\xa9Z\xe1o\xdd\x91\xf5uQ\x0d\xd1\xca\xac\xb6P\xf0\xebd;u\x86E\xc8\xfd\xf7|@\xcc\xd6\x89\x19\xb8o\xe8\xcd\xcc 8w\x19zv\x14p\xb5\x04\xbcf\x11\xb2\xbb\x80w\x87\x81\x00\x9a\xc2\xee\"\xf8\xba \xbe@\x16\xe7\xae#?\x15\xd7v\xbb\xe5\xb4\xbd\xb9\x17\xcf^\x17\xf3[|\\\xb6\x0c\xe43\xec\x7f'\x8a\xef\xcf\xdev\xa2\x80q\xfb\xb8c\x9d\x1f\xba\xfb=\xd4\x87n\x7f\xe8\x86\xbf\x0dsS\xbe\xcd9\xfeg\xb7a\x88\xff\x9d\xf6>\xd9\xef'\xbe\xc9\xbf\xafT\xca&\x8a\xa0L\x03\xa9\xd6t\xe2\xeb\xfd\xf8\x0f\xdb\xaf\xb6\xec\xd9\x8a\xaa[\x1a\x1b\xcam\xc97\x0e\x011\xb3\x0d+\xb5\xdf\x86\x05PF\xccL\xb1\xe6Q}\x86\xad\x91\x0fj\x8dD\x1f\xb6\xa3\xd5\x8f\xafzl\xb5O\x19R\xc7j\xd6\xba\"\xcf\xfeE\x7f\x0eFwdt\xb2{\x1bd\x1c\xc7\xc6i\x1e\xfb\x1a~\x82g<\xbd\x91\x93;\xc7\xa9\x8d\x9e\xd8\xbe\xd3Z\"\x1f\x98\xce\xbf \xabu\xd1c\x1f\xce\xbe{q\xfe\xa3\xb8\x17}S_E\x7f\xa6]{\xb5,\xaa\x0d\xbd\x9b2\xe7JU\x11\xe0\x9f\x8a\xde\xd0\xaa\x9bf;GCy\xf9\xe3\xc6_\xb7u\xf3\x19n%\xecB8\xa9\xba;\x1eEM\x1bV\xc3Bk\xd6\xa1\xcd\xd5\xa8\x8f\xed\xd0\xa4\xc1GuEZ \xebN\xc0\x88\xd8\xb1,\xd0+\x98\x006\xa4\x83>v7\xac\x01.D\xc2\x83\xbc\xdf\xe5=\xd7]\xa3?\x0b;\xc5#\xfbn\xe8\xa8\xee\xdd\xf6%\xd3\x0b\x8a\x96\x07\xd1r\x1d\xa1\xa1\xdd\xa1\xa9T\x88\x8e\x8aj\xe2\x17\xad\xd5\xa6\xa4\x8d\xb6\xd0\xe1\xbc\x83\x1f?~\xb8\xd4\xc4\x99\x10\x87\x92VW\xdd53;\xb6\xc5\x9d\xc0\x0dr\x006\xe77\xa1{\"n]X\xad\xa22\xe1\x9d\xa3\xa3U\x0e\xfa\xee\xd2\x1a\x81\xb5/\xe9\xbe\xa1k\xd2\xd1\x8dD\xdd\x89\x98@\x0e\xbf+\xca\x12\xf6\xf5^\xf8\x05Oau\xe8xCh\xc3\xf5\x0bE\x97\xa2 \x93\x8b\xea+\xa3;k\xc2\x01_\x1d\x90\xb2\xad\xcd\xf0\xc2\x1f\xdb+3\xaf\xd6\xc7\xf7o\xd4D\x0di!\xa3O\xc26C\x93\xcb\xae\xbe\xe2v\x04\xfb\x96l>\x85?\x86\x14|To~\x11\xea\x0d\xc0H\x81\xb5\xdf\x1cG\xd8\xa9\x12\xd6\x8c\xf8\x01=\x9c)E;\x90\x1e|\xa6\xf7O\x07}\xe1\x14H\xdb\xd6\xeb\x82\x0c\x0e}\x8cL\x8d\xcf\x19\xa7\xaa3j\x82\xd0\x0e\xf8F\xdd\xea\xa6\x02l\xe8\x0d-\xd97\xe0\xf7\xf6\xa4\xeb\xc8\xfaZ\x0f\xd7\xd5\xa6\xb39\x9bFA\xef\x8ag\xe9uQ\xf1\xc8`\xee4\xe6\xa7\xa1\xfa\xe5\xc55]\x7f\xbe\xbc\x1b\xa1\x04\xde\x90\x8e6\xa7\xc2D!\x127\xb3#\xf7\xb0\x1a2:\x1e\xb8-\xd5]\xd3\x96\xca\x85\xe2P\x95\xfe\x90UU\xd2d\xa9\x9dM\xfb\x93o5\xeb;\xd5\x17X\xd46\xfe\xda;\xcdC35#\n\xdb\x87\xc3\xce\x89\xc4\xce\x88\xc5\xf6\xa0\xb1g\xe1\xb1\xf3!\xb2C\x98\xec\x89\xa8\xec\xdc\xb8l\x0f2;76\xdb\x89\xce\x9e\x8d\xcf\xb6\xe4\x11\xdeW\xa4\x9e\xac\x18\xed\xd9(\xed\xec8\xedYH\xed\xfcX\xed\x8ch\xed\xdcx\xed\x8c\x88\xed\x18\xccvF\xd4\xb6\x1b\xb7=\x0f\xb9m \xc3\x90\xdc\xe2\xc8\nb\xb9\xe7\xa2\xb9-q6\xba{2\xbe\xdb\xa1wz\x8eb\xe7\xe5X\xf8\x94\x9e\x88\xf4\xb67.\x85\xfc\x16\xe3\xaf\xfd\xeekAf\xbc7\x86\xf8\xce\x82\xf9\xce\x8c\xfa\x06\xe4\xc0\x9d\x89\xfc6du\x16\n|\x1e\x0e<\x00\x8evb\xc1#\xd0\xe0(\xc03\x01\x11\x8e\xbf\xffw\xbc\xef\x93p\xe1\xb1\x9d\x0fa\xc3\xfd=\x0d\xe2\xc3!\x05!\x8e\x00w\x9d(\xf1\x1c8qG\xe3\xa2\x90\xe2\xce\xaf5\x11-\x0e~\xbc\xb8\x0f1\xee\xc7\x8c;?`,n<\x8c\x1c\xb7\xb0\xe3\xb3\xd0\xe3\x10\x83\x1fOA\x90G`\xc8\xf1AB\xa6#\xfe\\\x08K>\x17M\xeel\x9e\xf1\xb7\xac\x98\xf2\xec\xa8\xf2\xcc\xb8\xf2\xbc\xc8r7\xb6\x1cA\x97\xe7\xc2\x97gD\x98\xe7\xc6\x98\xc7\xa2\xcc#p\xe6\xd1H\xf38\xac9\x826\xc7\x10\xc9\xf1\x98d?\xe2<\x1as\x1e\x85:\xb7\x1a\x9f\x13y\x9e\x1d{\x9e\x13}\x9e\x13\x7f>\xef{\x071\xe8a\x14\xba~0\xb8o\xab\x0d?\xa8}\x0b\xa3\xfc\xa7\xc3#\xfc\xa3\xb3u'n\x9d\xce\xaa{\xf3\xe2\xc8\x03\x171Z!\xee\xe74R[\xb1\xb5\xf4>jnv\xe1\xcei\xcf\xad\x9f\x16.\x10}\xf5\xd7\x19\x97.\x88)\x88]\xb4t\x0f\xe0(F\xaeR\x9c\x86i\x8a\x19\xeb\x8b\xaf\xc8v\x81.J\xe8\x1a\xdd\xd5\x98\x8ca\x1e\xb3\x03<\x9c\x93\xeb\xf2.9]\xe8\xe4(\xea>\\\x8f\x9d\xe2*\xfaP\xf3\x8etw\x11!\x80\xc6X3A\xda\x15\x0e\x0f!\xec#\xc2\xeb\x0dm\xf7$H\xc1,\xdb\xc4\xce\x0f\xfe8(\xd0\xed\x8bzC5Yc11\xe1e\xf6\xfe \xee\x7f\x99<\xd5\xce\x88[zl\x93\xe1\x9f\xf6T\x99\x13\xf2\xd1\x86\xdc.\x13/\x93\x8d\xb5\xc3\xc6S\x86\x01+\xef\x8d\x1e\xde\x07e}uE\x1b8asK\x08}\xb2\x80\x1f\xf9\xb5\x99&\xa5\xaa\xab\xa7\x1b\xda\xf1\x00\xcc\xa2\xed\x8a\xb5v\xcf\xfd\xc0\xdb\x0d\x12\x0c\xa8\xcb\xc1\x83\xcf\xdd\xa1\xe7\xc6X\xea\x82\x90\xddk|\x97\xae?\xfee\xae\xad;\xe4\xa6]\xfb\xc5}\xfb\xec\xbeu\xd7_\xc7:!\x8a\xa3+\xa2x;$\x8a\xbf[\xa28\xef\xe4E \xf4P\x14\xcf\xfd\xbc(\x11RB\x0eRU\xa6\x1eB\xfe\xc6\xbb\xc2\x12E \x9d\x02f \xf7d\xf2 \xe6\x9dcX\xfbg\x1fpz ul\xfa\x15\xbd=\x86Zt\xa3\xf5\xa3uA\x0f\x81\xc6\xcd\x0dx4\x84)\x15_\x86=\x86j\x8f\xdd\xfa\xd9\x12\xd9$\xed\xfaE\x1fJ\x08Q'\xd2\x19\x1a\x05\xa2jt\xd7\x93\x1c\x85\xe89\xa9\xcf\x8c\x00\xbf\x86\xfe|\xa0m\xa7\xae\x9a\x06\x85cb\xa4at\xc5*\xa0\x90C^\xedj;+\xe6=\n1\xd6\x1d\xc9\xf3\xe7\x07l\x1c\xc9\xf3g\x04i\x1c\xc9\xf3\xd3\x023f\x86ed\x0e\xca\x98\x11\x92\x91; #[8F\xde`\x8cl\xa1\x18\xe1@\x8cla\x18G\xf2\xfc#y\xfe\x9c`\x8a#y\xfe\xbc\xa0\x89\x18>\xf9#y\xbeV\x8e\xe4\xf9\xaa\x1c\xc9\xf3\xfb2#\xfc!\"\xf8!>\xf4!\x18\xf8p$\xcf\xcf\x1c\xe6\x905\xc8!g\x88\xc3\x91<\x1f\xa2\xc3\x1a\x82A\x0d\x91!\x0d1\x01\x0dG\xf2\xfcAV\xe6\x00\x86|\xe1\x0b\xf9\x82\x17\xa6\x7f\xdd`\xe0B(lA\xed\xd2]\xb1\xa3mGv!z\x10\x8f\x97\xb6\x18\x1cI\xfb\x86\xde\x14\xf5\xa1\x15W\xa9\x0bx\xcd\xec`~\x9f\xda\xc2\x1f\xe0\xebS(\xba\xc7b\xd8o\xf9_\xf9\x14\xd9\x14\x06\xa8o\xa0\xe4\x03\xe9\xba\xea\xdbh&\xfb\x84\x9b\xba\xebujY\xe3\x1b\xd2v/8]\x92^\xb9&\xef\xdbo\xe1k\x93&\x8c\xb5\x88\xe9\xd4m\xd1\xf2\x9a\xd4qs\x04\xa2\x1e\x81\xa8G \xeaC\x00Q\xfbK$\x19[\"\x04\xf4\x98S\xa1\xb7\x0d\xc4A\xc8-\x03H/\xd3\xe9h\xab\xe8[#y\x84\x98\xc6U\xb7\xd4%Z\xd6/7\xefvt\xd7\xc9_\xd5+PR\x06\x8a\xb2\xaa\xa3\x9c\xbb\xb4\xa1\xa4\x857\xf5\xd5(\xb4K\xb4\xe5\xd4r9i\xdfR%`>\xed\xa5se\xd1l\xa8\xde\xc8\x08\xd6\xe0o\x16_\x7f}\xca\xfe\xe7w\x8b\xdf\xf3\xff\xfe\x9e\xbf\x81\x7f\x97!\xda&t\xb9\xa7RGCw'8\x0f\xd8L\x1ag\xd9\xbf\x1c|\xdb\x1d\xb9j\xb5\x8bR\xa1\xed*e\x99\xf3\x03\xb4\xe2\xd8\xddP\x9e\x95Y\x0b\nZ7\xf7\xfb\xae^p>\x85\xb6\x18rQ\xbf\xa8w{\xb2\xee\xbe+\xba3\xb6\xd9\x89M\xc1\xda\xcc\xec\x0d\x8c\xdeu\x0dY\xae\x8a\xae]\xf2\xdc\xfc\xd6\xadXL\xe4\x0c-\x8d\xbd\x14\xdd\xb5\xfc\x04h\xff5ph\x19\xfd\x10\xfc\x15c/ gD\x13\xf1?\x94;B\xd9v\xb1*:\xb1\xd1\x0f\x03^p\xc2Z\xeeL\xecj\xa0U{hh\x7f\x9d\xd1\xa7\xbc\xe6_\xac#\x9fi\xcb\xef\x0b\x04=\xb5\xce4,\xe5\x89\n\x85)\xc2\x15\x0d!A#\xf2W5V5\xab\xa1\xa1d\x03-\xd9*'\xac\xf8;\x1bON_\xcb\x89\xee\xebJ\xba|\xe1 \xfci\xfd\x87\xee\xee\x16mqU\xe9\xf9\xc6?\x14W\xd5\x8f}p\x935\xcaz^\x9b\xa7\xf0\xe1\xfc\xfb\xb7\xcb\x1f\xdf\xbd|\x85\xa4\x91\xd1\x7f}y\xfe\xfe\xd5\x8bK\xe4\x87\xcbW\xff\xe7\xf2\xe3\xd9\x1b\xe7+\xcb\xb3\x8f\xff\x07\xf9\xf1\xcd\xab\xef\xcf^\xfc\xfb\xf2\xec\xc7\xf3\xb7\xef\x96\\s\xb5\x9fyu~\xb1\xfc\xfa\x7f}-\xa7\x81\xcc|\xe3n\xb0#bO\x8e\xc6\xa0\xf9\x8a3\x8a\x8f\x19\xec\xd8/\xc2\x83\xdc\xb5\xc0\xd4\xea>\x0b\xc7\xd5\x814l\x7f\xa2C\xdc\xe8\xa5\xc8J\x7f\xd8iWu\xeb\xbaj\x8b\x0dm\xd8\xd2d\xa6[\xd1v\xcd=\x9fze BSg\x95\xf1\x9a\x06\xdah>\xb3^\xf0O\x08t]\xb7\xf7mGw\x0b8\xdb\xef\xc5\x8agS@\xdc\x9b\x89I\xa9<\xa3\xbdP5\xd9z\xd1\xf2e\x11\xde\xc0\x1bW\x16\x9f\xa9\xfe\xaeT\xd4\xb5w\xb4\xb0H6G\x0f\x0d\x91\x89\x08\xea=\xad\xd8(\xedX}\x17\xef\x81\\\xb1-\xb9\x93W\x12E\xc9\xe5\x92\x0d\xebrEoaMz\x1a\x15\xae\xf5\x17\xed0\xec|\xb8\xa4\xb3Xn\xc5E3\xb4\x01\xdaZ\xfa\x93\x8b\xed\x96r\xd6g!\x88\xb0\xde\xf0+ \"\xc6\xb8\xed\xd8\xfc\x97w- \xc9\xc4\xb9\xf8\xe1\xf4u\xccg\xc7\xac\xe9\xbd\xed2\xdd\xff\xf0\xb5\xfa\xa9\xc1V\xa4\xb4\x91d\x1d\x0d\xfd\x0f\xfeU\x16X\x9db\xca?\xb7\xfe\xa2\xd74\x9a{\xdc\x9a\xe2\xb6?\x1b\xb2\x97\xf5Z\xee\x02R\xfc\x0dm\xc4\xbe\xcf'i\x1f\x1e#\x8eP\x11dl\xb5B.\xc9\xe7\xf6\x9f\x84\x82&\xa8\xc6\xcdv\x88y\xc3z\xcak\xbc\xd7\xc9\xbdF\x89\x85:z\xd7\x1dHi9%\x98\xc9\xb7W\x06\x86\xbch3\x9f\x91\xf2x\xdb\xc7C\xd4\x7fD\xecD\xfe\xfd\xbf\xb8G\x9bm0\xf6\x88\xb3\xbf\xc6\x8c\xba\xb6K\xbc\xac\xd7/\x8b\x86\xae\xbb\xb3\xc3\xdd\x02\xceZ\xa8\xf7\xfbZ\x1e\nc\xf1\xa7b\xf6\x0d\xd3xSS\xbeq\xf7\xb3\xe4\xe7C!\xc7\x98\xa9\xa1\xaav\xce\xdb.\xee\xbf\xe4O\x8f\xe1\x93\xf8\xbf%\xd3J?y\x87\xa1Og\xe0\xdfJ\x9f\xfb~\x14S`E\xd6\x9foI\xb3iGW\xa1\xf8\xe8\x9c\xed\x8a\xaa\x16\xaa\x86\xb6 \xa0\xa1\xbb\xfaF\x84\xd7\x0b\xbf\x1c\x9bV\xe8\x8c\x94;\xf9s\xfbO\xda7\xe2wG\xfd\x80\xb2s\xef\xd5\xf9\x05\xf0g\xd4\xe8\xe9\xfb\xa6\x1a\xa7\x97\x7fZ\xc0{\xba}\x0e\xfc\n\xf1\xf9\xb3g\xb4\xd8\xb7\x0b\x9e\x14\x80\x1ev\x8b\xba\xb9z\xf6\xea\xfc\xe2\x03\xfb\xf3Sv\x9a\xc8\xf7^\xa8;\xd4S\xa4QE+\xb7r\xb1\xaf\xb3\x1137\xb4\x1b\xd2\x14\xa4\xea\x94\xdb`u\xe8\xafN{\x1dd`\xbf\xff\xf0\xf2O\x9a\xcbt\x01\x97L%\xe0K\xe9\xd5\xf9\x05k\xd3)\xdc\xd7\x07~\x0d=\xec\xa2{\xd2j\xbe\x9dO\x97w/\xeaj[\\}\x12+\x95;~\x10\x85G\xbe\xffI\xb5\xf6\x07\x81\x8b\xf8\xa4\x86\x93\xd5&\"NX\xa3\x98M\xb2\xa1\xebb\xc3\xf7s\xe1W\x95\xa7\x85\x14$_\x19\x7fb\xdf\x1c\xfd\xfd\xe2\x1bC=\xe9\xa9\xf8\x0e\xddu\x12\x03\x9d\xb6,R\xbd\x08\xffo\xc3&\xc4\xe3\xff\xe7\x99\x16\x8c\xf1\xccn\xd2\x07^\x03k\xd4\xe3\xfee\xb7\xf1\xa5\xb7\xc7\xe4\xe0\xd5\xb6\x96!3\x9c\xdc\x026j\xa1\xf3a\xd7\xc4\xc94\n\xda_\xd8\xda\x12\xech\xf5\x96+\xcb\\Y\xe1\xf1\x1c;\xd2\xad\xafQ\xb1\xea$\xf8\xae\xde\xdc\x9b\xf4\xea\xbd\xc1\xc3\xbf7\xf7W*\xa9\n\xce\xb2o\x8a\x1d\xbf\x1a\xe6\xb2z\xdb\xa2\xae\xa8\x15{\xb3'\xf7\xed\xd8\xaf\xb4\xa5\xfdr\xdfR\xcd7\xe1\x1e\xc3\xd7\xb4OH\xb3\xa5\xe2x\xbd\"-\x94\xc5\xae\xe8\xfa\x91\xd3\xedU\xad\xed\xb2\x91F\x06\x91Q$P\xa8?\xbc\x17}\xd3\x85lJe\x12 M\xce\x90NB\x97n\xa4\xb4X\xd7\"\x15\n\xbd!\xe5A$\xe5\xe0\xe7^\xbd\x11\xb8\x93M\xcd\x83HU\xbe;M\x8c8\xd2\x85\xabB\x17\xaf\xae\xcf\x87\xe9R\xb4*\xbf\x05m\xbbb\xc7}'7\x05;\xcbv2s\xc8b\xb4.\xa2b\x05\x85\xc5\x82\x05@\xd8\x1e0\xd4\xff\xe5\xf1~\xf9|_\x1bZ\xd5;\xcc\x0f\xe5\xf5_a\xad\x0d\xbe\x16\xf2\\\xbd\xa8\x8bJ3\xd7y\x8a\xcb!\xe1IU\xef\x8aJl\xa9\xecS\x92J6\x02\xe3\x10y\xfb\xee\xf2\x95\x00\xadHC\xb0' $\x15\x9cW*{]\xbfS\xebNsK\x98\xb8\xef\xb2+\xe9\xa7Q;\xac\xff\xd5=\\\xd5W571\xcd\x1b>\x89~\x91\xed\xb1\xe8-E\n\x16\x19\xeeD\ny\xbem\xa9>G\xafH\xbb\xe4\x8b21L\xc6\xca\x82\x81\xe7\x11\x02\xbd\x8a1'\xe8\x15\x91f\x8c\x9c\xfb\xdc0g\x07\xd0\xb0-\xd8\x93Nzz\xc6C\xb7\xe2q_<\xe1\xe2\xa1\x8f\xc0\xe5QlP\xaf\xd7\x87F\xdfK\xf6\xe4~Z*N\xabk<\xfb_K;\x91]g\xb4{)\x8cb\xc1\x14\x00N\xf2M\xee\xd5\xee\xb1e\xd6&\x9coG\xf2zQ\x03\xc3\nY\xf3\xe4U\xe2t\xd8\x93\xfb\xe1\xf5\xf1\x10\xf0}\x9euM<\xcb\x83\x92\xba;\xd5\x9e\x13\xb1G\x1e\xa4\xad\xc5\xff\xbaQv\x1e\x9f\xc8\xe3\xc1V\xe7\xf8\x13\xab\xa6\x96vr\x1f\xec\xdf\xe6j\xf1\xaf\xab\xba\xfb\xb5\x8cv\x13\xfb1;\xe4\n\x91\x12J\xcd\xe7\xb1,u\xba!g\x82>O\xb9\x89\x1e\xfb\xd5\\S\xb1\xd8\x0eC\xcc\xce\x031\\'\xb4\xe8\xf3\x18\x1b\xdfpH\xe0xpD=\x0b\x01|\x08\x9e\xa8Hs\x05|\xe05\xf0v\xf7\xa9\x0d\xc7_\xac\xe6_\x94}M\x1d\x1ba\xb4\xee\xb1\xf0V\xacHI\xaa5es\xc6v\xa8\x93=\xdb\x8d\x9b\x82tT\xabTY*@\xefx6/\xd1\x19\xc9\x11_\xdbP\x0e\xf6\xa8r!\xf4RZi\x00qS`K\x8aR\xbe\xd4\x15\xfb\x185\xe0\xb2\xd8\xabU\xdfg\"\xed\x8a\xbd\x16w\xa8\xbb\xce\xf9@\xf0\x9d\xaa`\x1b27\x9f4a|\xbf^\x8cn\xddu&\xd8\xe2\xaa\xaa\xd9\x8eYl\xf5\xae\x16\x9b\xeaq\xa7\x14\xf1\xae\xd8\xb7\xa7P,\xe8B\xfd@6\xa6+\xdb\xd03>]\x16\xfb\x97t]7\xa4\xab\x9bO\xacYE\xd7\xc2\xben; D\x8ep2\xf7\xb6\xdc\xf1\xe86\xca\xf1\xe8v\x1f\xdd|',t*\xc1\xae\xd8\xefS\xf7?\xf1N/]$&\xe9\xe3P\xe5\xc1\"O\xa5~\xff\x95\xb5\xe2NVu&\x8c\xa2B\x95\x8a/\xf7Ma\x1f\xf5\xf0/\xe5p\xe76\xbf\x8a\xbf\x1f\xed\xf3\xb6\xcd\xf6]S\x93\xcd\x9a\xb4]\xb4\x8b\xfb\xbb\xf7\xef\xce^\xbe8\xfbp\xe9\xf6s\x8f\x1e\xf9\xee\xcd\xbb\x17\x7fr\xfd\xf8\xe1\xdf\xdf\xbep\xfdv\xd6\xff8dj\xf7\xd7\x8e\x8f\xa7\xd1\xc9\x91\x8bd\xa5~\x1b\xfc$\xec\xcf\x97w\x1fhsS\xac\xe90B\xf0\xfeB\xb5T\xccN\xddQ\xean\xd7s\xf8\x1bmjyw\xcbc3X=\xea\xccvJ\xe0\x83\xf6\x1c^\xbe\xbax\xff\xea\xc5\xd9%\x93sh)6z\xeaPS\xde\x13L\x90r\xa7\xc8\x93\xa7\xcf\x10\xc8\xfd\x16\xdc\xe4\xbd\xf9\x97\xc5\xef\xfe\xbf\xc5\x1d\xd4\x15wd-\x9c\x0dcUZ\xdf\x81\xb7C\xdbE\xee\x86q\xd5\xbc\x84\n\xc7\xb9.\xf9\xdd\xd1-)\xfa\xd4\x8fl`\x08\xc8\xfb_\x8d\xf7\xbd\xe7\x03\xaf\xab\xf2\xde\xdd\xa83\xb4UgS\x9a%\xeb\x10\xb4\xed-\x14;\x1e\x11\xd2QQ\xbdg\x05]\xde\xbd\x17\xaaI\xb4K\xa6\xbb[r\xf7s\xea%\x1e\x8cg\xba\x12\xa46\xa1\x86\xdcb*\xde\x0e\xc1\xe8\x8f\xea\xd2\xd7:\xc4\xadw\xf41}\xcd\xa3\x0fh\xeb\x1e\xfd\xfd\xccx v\xfd\x83\xf7\xc4\xcb\xb3\x0fh\x02\xd9\x8e\xa0\xfds\xbc-@\x96\xad\x01\x952}{\x80\xec[\x04\xda\xc0\x87\xd9& y\xab@\x1b\x97\x7f\xbb\x00\xf7\x96\x11<\x95\xfa\x8d\xa3_\xbe\xf2\x9fl\x85\xf63\xd1\x9a\x87\xfdkR\xde\xfb\x8b\x17\xfd\x0c\x0cnT\x89\x84&\xdd]O\x174\xde@\xa2\x14\xed1!\n\xc4x?\x9c\xce\x0f\x079\n\x7f\xe2.!\xd9\xa3\xf1]|D)\x80\x93\xa5x\x85\xc7\x90\xa6\x80E\x9c2\x88L\xc93;\xea\nJ\xa2\xc2\x9f2\x88T zl|\x84*\x80\x91\xaa\xc4\x8b\xfe\xaf\xb1I\x12\x8b\xb2\xf7\x13\xac\x80\x0fn\x0f\x16\xd1\n|!\xc3\xcfI\xbe\x02\xde\xef.\x8a\xfb\xeb\x03N\xc4\x02!\x8b\x12'd\x01\xcf`\x88\xe2a3\xf1\x0c\x8c(a&\x13.\xc2\xf1[\xa0C\xa2\x84\xc8Z \xd8AQ\xbc\xa4-\x10\xd3YQ\xc2]\x16%@\xe0\x02q\xbd\x17%H\xe4\x02\xf1\xd2B>\x04\xbdL!u\xf1\n4Y\xc7\xbc\x8f\x8a\x8e\xc41\xa0\x88\x12\xd7\xb3\x9c$/\x10$z\x81\xe9d/\x0ei\xce\x01\x88\xe9~F*\x18V\xbct0\xe0\xa2\x84\x81\x88\xc6f\xa5\x86\x01\x17=\x0c\x04[\x12{\x80u.\x9a\x18\x08\x9d]&]\x0cD\x9f\xb5Sic\xc0A\x1d\xe3\xad9RWI\xa4\x91\x01\x94J\x06\xb27$@+\xc3+\xbc\xc3\x1a\x80\x1c\x06\xee\xed\xbfs\xe4\x08\n\xec\xcc\xa1\x95\x90\x95r\x06\x02\xb9\x82rR\xcf@N\xfa\x19\xf0g\x0c\x9aEC\x03\x19\xa9h HG\x03S)i`\x0e-\x0d6b\xf7{\xe5r\xc6\xb3\x07\xcd\xa0\xa7Ad\xf5\x91s\x80f\x10\x9aGS\x83\x88\xe3\x81\xe8\x1d\x9aE(7]\x0d\xcc\xa7\xac\x81\xfc\xb450\x8f\xba\x06\xe6\xd1\xd7\xe0K\x14md6R\x1b\xc8Nl\x039\xc9m \x8a\xe0\x06r\x92\xdc\x807\xdb\xd0<\xb2\x1bl\x8d\xa3\x19\x87\xc4V\x13\xa4\xc0\x81\xd948\x88@,\xef\xd0dr\x1cp\x9bb\xde#\xde\x93\x7f(\xe6\xfc\x9fH\x98\x83m{\xce,D\xa1v\xcc#\xcf\x19 \xe3T:h.\xa2,$:\x90\x9bH\x07\x102\x1d\x98O\xa83\x92\xd6!Y\x89\xe6Q\xec@\x88y\x06|\xb9\x89\"\xe8v\xc0\x950$\x81v\xc7-\xc3\",\x98E\xc1\x03 \x83\x11\xa2\xe2\x81`\xbf\x83\x94<\x90F\xcb\x03x\x92\x18O\xd6\xa2\x1c\x14=0\x8b\xa6\x07|\xdfp\"]\x0f\x84({ \x90\xc1(\x94\xc3\xc8\xf3ac)| \x82\xc6\x07\xb0\\F\xb3\xe8| \x8e\xd2\x07\x92h} \x86\xda\x07\x9c\x83\x86NY\xd7\xb3!\xaa\x1f\x98M\xf7\x03\xbe\x86\x8e\xfe\x9a\x95\xfa\x07f\xd2\xff\x8cDa9\x8f2\x13\x02AfR \xf0f>Bs\x1f\xe5\"\x08\x82\x9c$A\x90\x9d(\x08\xa2\xc9\x82 \x860\x08\xe2I\x83 \x928\x08\xf0\\Hxv\x9cx\x9a\x99P>\xa4h\"!\x88#\x13\x02\xac\x1b9I\x85`.\xb1\xd0H\x16\x92')'\xd5\x10d\xa5\x1b\x82\xd9\xf3!H;\x04\x11\xd4C0:t\x10\n\"\x88v\xb1\xdb\xb7\x01\xb3\xe8\x88\xac\xfdzS\x90jDI\x040\x97\x96h$L4\xc9\xa6&\x02\x1f=\x118\xae\x93\xbb/p\xab\xde9.\x8c\xbd\x16\xb6\xff\x92\xd8\xd5lQ\x1e\xf6\xfe\xdb{\x0d\xec\xed\x93(\x81\xab\xdf\x08 \x1e\x8a#\xe8%\xb8h\x8e \xb8&T\x99Nw\xe4\x10H*\x9b\xf2\x08\"\x9a3\x95\xfa\xc8\x12\xa4]\xabY\xf4G0\x83\x02 \xe6\xd3 Ap\x1c\xb2\xd2!\x01F\x89\x04\x90\x81\x16i$O\xe8\xbb\xb5\xad=g\xa3G\x82\xac\x14I\x90H\x93\x04~\xe8\xcf,\xba$MPO\x9c\xa4S&\xb12\x856)*\xe4Q6\xbb\x8fy\x94\xff\xee\xb4\xa0G\xf9\x1a\x12\xfa\xe8\x8dt|M\xe3#\x1b\xc7\xa0\x1al\xe3\x9fK\xab\x87\xc2}\x9c\xdb0\x0e\xf3q<\xee\x8b\xa5\x9b\x0c\xed\xd1\x85\xccA\xf5(\x14\x8f./\x1e\xc03\x13w\x8b`n\xd11t`m1pc&\x8c-\x8e\xaf\x8d\xc5\xd6\x8ep\xb5h\x9f\xdc\xfb\xc5l,-\x87v\xeaKa\x02\x8e\xb6\xcb\x88\xa1\xc5\xf1\xb3\xb3\xb0\xb3\n-\xab\xc9\xf3\xe0f-\xcc,\xfaE\xb0\xe9\x94\x15';\x1d#;\x19\x1f\xab#b\xf5\xb1\x9a\x84\x8dM\xc0\xc5\xe2\xb3\x9bsa\x08u\x02\xdf*\x14\xe4\x95wT\x1d`r\x05\x7f5l\x1arK\xe1KX\" ,\x06\x0dno\x02w[\xf1}\x90n\xb7t\xdd\x15\xfd\x05\xda\xa3+\xd2\xee\x9bbM\x1f\xf5\xea\x8f\xd8&\xfb\xf9.\xd2S\xd4;\n\xbbbWT\x87\x9d\xacV\x05s\x0c\x01\x19;\xba\xdb\xd7u\x89\x9ft\xdf\xd3\x8e\xab\x90\x7f.\xba\xeb\xcb\xbbvB\\\xff\x03q\xc1\\\xde98`\xba;\xa1M\x8c\xc6ud\xa0\xcaw\xf9?\x96\x85E\x8f\x18\x879\x88\x07\x028n[\xf7\xa4\xe9\x96-\xed\x96\xd7\x94lpXhZ\xb8W\xdd\x11g\xac\x97+\xee\xdb\x17\xf5mw\x11B\x06\x9e\xf3bY\xeeP\x17\xa4\xe9Z\xda\xfd\xc0{\xfc\xd5\xe8G>\xd7\xce_\xea_g\xda\xa7\xc93\x9e2\x98\x02\x19\x01\xd1\xdc\x15i\x8b\xb5D\x8a0\xcb\xcc1R\x93x\x87G\x9d\xd7K\xd0\xc0\xf6\xd0{\x88B\xf6\xfb\x87\x11\x1d2\x84\x99\xd2X\xb5\xb4j\x0f-\xac\xc9^\xe8i\x9d\x08\xdf\x92\x7fn\x0e\xa5\xa4e2\xcc@>\x1e\x88<}Y\xf3\x9d\xdf2\x08\xc5Sl\xe3V\xd6\xde\xf0\xb0\xb0Tz{f\xd8\xb7E+\x9c\x01\x8bF\xc4-Va\xdb\x91Nn@\xc2\xe9\xb9#\xeb\xeb\xa2\xa2c\x13\x96\xb7\xc2\xd8\x81T\xf1|\n\x0c\xed\x14x\xc5\xbf\xce\xbbb75\x80dC:\xfa\x94\xbd?z\x82\xbb\xef\xed\xfdU\x95\x19+\x03\xdf\x94 \xd4`\x08E\xbd\x04\xf6cU28\xe0\x1c\xfbt\xff\xb3w\xbfV\xc5\x8f\xd6\x11\xc5=T\x103\\\x10\x1e\xb2\xc0\xbe>z\xc8\xdc\xdfU\xe1Se\xcd\xdd\xc5\xcb\x9c'\x0e\x0c\x153\xb1b=\x8b\xdd\x9a-\xfb\xd1\xb3\xecO\x99\xab\xe7\xfeq\xd2\xd5M\x9bY\xf0\xb8_\x83\x0bj\xbfW\xd8\x80\xfeo\xfb\x86\xde\xa0\xdbgE\xef\xba\xe5\x83\xb5\xb1\xdf\xd13\xcb%\xfb}f\x89|\xfe\xc9`\xd1\xcc\xa2\xe9M\xb1\xa1\xd5\x9af\x16\xdb\x7f\xff\xe1\xd8D\xf4\x0f\xb6\x11\xd5-m\x96\x923$W\xfd\xc6!/\x16\xbcI\xb0\xd8\xbb\x079\xa5\xb7B\xd2\xb2\xe7\xf4\xe3\xcf\x05\x16MR\xd1\x0c\x03\xa3\xff#bh\xa8\xe2\xbcZ \xec\x863\x03&/\xefZ\x8d\xb4w%1;\xc2\x04\x14\xba\xc2\xbfI\xd3\xe4\x07~\xb8\xff\xe6k4\xceHx\xcbxT~Yr[G\xc0\xc1\x1ay\x19\xb7\x00\xf83}\xdcP\xf8\x0ff\x08\x92\xab\x86\xd2\x81\x89\x15\x91'\xf8+\xb9\x1b\x00\xad\x8f#,v\x94T\xb2\xf5\xa2\x89g\xfb\xfd\x0f\xa4\xbd\x1e\xec\xef\xc1\xcdN[\xca\x9ae\xaa9r\xb2\xbed\xba\x96\xe1\x11o\xa9\xc0Z\x98v\x1a\x97\xb514;M\x9cZR\xb3\xa7\x0e.\x08\xe6\xcd\x1f\xa7^\x10\xd2\n6\x07\xa1Q\xd2\xe5M\xdd\xd1\xa5\xbbq\xa2\x04\xb5\x90p\x8d\xac\xf0\xba\x88\xfb\xf7\xa8\x8a \xb22P\xe2\xbcO\x04W\xa2^\xc6t\"x\x11\xdc\xc6\xaf^.\x7f\xfc\xf0\xfd\xf2\xf2\xdf/^-?\xbe\xfd\xd3\xdbw\x7f~;\xe1\xcd\x8b\xf7\xaf~zw\xf9j\xda\x9b/\xde\xfd\xf8\xe3\xf9\xe5\xa4w\xdf]\xbc\xfb\xd0\xf3\xf6\xbb\x8aA\xbb\x9f\xde\xdf\xf06f\x16N\xc8\xbb\xf9\xb1\xbd\xba\x94\xa1)\x02\xdd\xc2\x96\xb4\xf4\xaaj\xf1\x81n\xb8\xeaP\xfa\xe3\x0c\xdd\x8cF\xc5\xf9m\x9e\xc3Oug\xdd\xe3EJ\x10\xe3\xfc\x1c.\xf8\xe1IJ\xbf\x18\x97%f\x96\x84 \x1d\xa3\xd5\x8b\xd2\xd4\x87\n1\xac\xcc\x12gJ\x88\xa2U\xfd\xdbo\xbc\xcf\xba\xcd:\xb3D\xee\x1d\x90\xb0\x7f@\xd0\xaa\x19J\xc2\xb0C\xe8\x84\x1f\x97(S\xd1, \xa3\x01\x89#\xc2J\xc0\xa84K\xca\xbcP%~j\xaa\x12\xfb\xa1 \xfdcA\xea\x07\x8b4T\xd1Wp\xb3u\xfc(\x1a\xd5\x85<\x18\xdf\xd1\x90\x8f\xc5,\xbd%\xe7\xd6\xf7\xcd2\xa1%\xc1\xa1\x1e\x1a\x11\x88\xf1\x11%e\x1e\xc6\xefO\xfd\x1dp\\\xf5yG \xfd\x18e\xa7\xd5\xd0fu)\xd4\x8f\xa4$B\xf5\xb3X\x80\xdc\x93\x8au\xb1'\xe2~G3\x0eU\xb8CP\x84\x16\x06e\\\x94\xe0\x85\xdeu\xb4\xc2=\xe4f\xf9\x05\x8ds\xdff#z\xbe3Y\x14\x16\xf0\xae*\xc3\x03.\xe2\x1f\x85\xab\x9a\n\x07Vx\x88\x87\xa8\x1d\xdfS}3\x97\xff\x8c\x93y\x18d\xef\xb4\x0e\nc\xd3~<\xad\xc3#l\xcd{dZ\x07\x85\xb0 \x80}\xe0\xa8\xef\x972h|\xc0\x8clW\xfb\x862\xbb\x0c\x8cj\xf9_\xb6\x0dBe\xab\x97\xc1\x9b\xc7Z\xed\xef\xa5\xa6l\xbb\x1e\xe1\xe6\xe1\xeah\x1e\xc6\xbfy4\x0f\x87r4\x0f\x8f\xe6\xa1\xafD\xee\x1d\x90\xb0\x7f@\x82\xd5\x910\xec\x90vf\x1e\xcd\xc3\xa8wb?\x14\xa4\x7f,H\xfd`G\xf3\xd0*\x13Z\x12\x1c\xea\xa3y\x98~\x8c\x1e\xcdC\xad<\xf48\x1f\xcd\xc3/:\xc8G\xf304h\xbfd\xf3\x90\xeb\x14\xcb\x9b\xba+\xaa\xab\xe5\xbe\xbe\xf5+:\x91\x130N\x8f\x18\x0e\x92/[o\xd49\x9eXc\xe8\xfc\x8e\x9d./\xd5\x152\x9b3\xaf\xe4\x05\xf2p\xe1\xae\xae\x94ETF?\x80Nq\n\x18q[3\x19\xdb\xb2Xs\xc8\x03\x87\xfb\xe2s\xa2d\xd6\xceR\xf0\xd6/9\x98\xf1\xf3\x97\xba\xc8\xd6Z\xb8\xf4\x84\xce\x8a\x12Q'D\xd6\x0b\xfd@E\xaa\xfa\x91uCB\xfd\xe0\x88x\xc6KB\x03 \xb1\x11\xe0\x8b\x99\xc6Kl$5^\x12\xfb\x02\x13\xfa\x03\xfeXl\xbcDn\x00\xe3\xa26\x04g\xdc6^\x9c\xd1\xdcx\xf9\x92\x8d\x8b\xdd\xba\xc6%.J\xbcz\x1b\x0e/4\xcbXHd\x8c\xa2Y\xc6B\xde\x9e\x87B\x15\xcd2\xa4\xe7\x9e=,\xe9\xa6\x97(b\x91m^\x97\xe4\n\x8aj\xc3\xef\xd9Z\xc9\xba$\x17`\x923Y\x94\xe1\xfe\xbb\x10W\xb2\xa1\x17\x86\x92\x1c\xcfc\x96\xc9\xf3y\xf26\x17qqj\x97\xd9\xcdL\xf3\xa4\x8a\x12\x1dSa\x96\xd9mM\x1a\xd2)\xca\xbb(\x82\x99\xf9Cq%br\x99\xee\xa1\xee\x11x\xb4\x81B`'\x88,* RnX\x9d\x9f\xd6v!}\xcc\xa8*\xaf\xb4%\x0f]\xbc\xe9q\xcbs0\xee\x06BX\xa2\xc0\xe8\x83\xa7\xc3\xdf\x93a\xfd\xb54h\x12$\x9cq)'\xdb\xd0\xd6\xf0\xb3\xa9'y\xc2)\x9e\xd0;QR\xfa(J\xf2\x1e7i1NX\x88\xfb\xc3j\x19\x91Wy(\xc9\x83\x05\x93\x06\x8c\x15\xba\xf9\xe6\xf7\xbf\xff\xfa\x7f\xa5\xbc2q\xe0`\xda\xe0\x01\xa7\xd2\\\xef\xbf\xf9\xfd\xff\xfc\xfc\xf5/\xb9\x99S\xb4\x86\x8b\xc3\xaa,\xd6\x7f\xa2\xf7\x86\xb3\xe43\xbdo\xb5\x14yig\xfe\xa1\xa5\x82`\xf7\xa7~\xe1G\xbe\x1d\x1b\xa4e\x96I\x83<\xc5`\xeb}d\xfb\xa6\xa8\x9b\xa2K^O\x0f\xdaF\xd5\xba\x98F%.\xef\xd4\x85\x9d\xb8\x0fN\x18\x9c\xe4\xf5\x91\xb8\x03&\x0e\x10L\x18$\x98\xb6\xf7M\x18,\x982`0u\xd7\xfbr\x0dL\xdf\xef\xb2\xefvS\xf7\xba);\xdd\x84\x81M\xdbA`\xce\x1e\xf7\xe0\xadK\x8b\xe3\xed\xdfJkV\\\x93\x98N^W\xcb\xb0\xa3=\xb2\xf6\xb8ZW\xf7\x7f#UWTt\x19\xa7Q\xc7i\xd2\x11\x1at\xf4f\x18\xbf\x05F\x9f\x10\x91#(J\xc2\x1e\x12}\x1eDw\x1e\x92\x06\x00Rw\xff\xa4\x81\x80\xb4\xc1\x80\xf4\xbd\xfea\x9b\x93\xb2\xb3\xc7\xee\xe9<\xb7`H\x18$\xee\xe6i\xdbQ\xd2\xa0\xc5m\n\xa2L\xd8\xb5\x1f\xa0-i;td\x03\"\xab\x8eq\xdc%\xd6\x18r\xca\xc5\xfa\x87\xde\xb0S\xe2\x05\xc7\x1b\x9cq\xb8A\x08\xf5 |\x86t\x1d\xdd\xedE\x92\x87\x1avE[R\xb2\x01\"0\x0e 0\x0e\xba\x83H\x0b\xf12\x07\xca\xb9\xcb\xb9w\xb4\xec\xfc\xce\x8eKb!/\x82\x18\xde\xba\xf8=\x12;\xa3\xe5H\xecl\x14\xdfe\xa3O\x85z(\x8e\xcd\xa8\xeb\xbf\x88\xc1\xf3_\xe9\xa5^\xde%^\xd3%^\xc8\xc5_\xbdM\xbad3\xbe\x7f\xf0v,\xee\xbe+\xfaf+\xe2SE\xcc\xf2\xc0\xf1\x96P\x89\xffX\x0b\xde*%\xd4\xe4\xe8\x8eqn\xc6^\xf3\xb8/o\xfc\xc7p\xf4\x85\x8c\xe3\xb2e$\x0e\xbdz\xd9\x93+\x99Dl\x184\xa3U\xc3\x03Z&2\xed\x8f\n\xe2\xab\xd2\xbfi\xe9\xbf\xb0\xbd\x04\xdfAx\x04\xace\xd28?\x97\xf3#\xf9\x92\xa9\x0d\xb5\xa8\xe4_\xec\x7fU\xfa\xb1\xb6\xa5\x1b\xf6\x8f\x0brE\xdf\x8b\xe4K\x0b\xf1\xfbH\xc8\xcf\x07\xda\x08$5\x13\xc7F\x82\xc2\xaen;\xa0\xdbm\xb1fJKy\xbf\x80\xf3N\xcb\xf8\xbb\xef\xeem\xb0u\xd7\xf3JW5\xec\xea\x86\x8f\xe0\xa14\x13>\"\xc7]pP\x10\xf8\x98\xcb$\xe1\xe2\xf9h\xf0\xff\xa9\x0e\xbb\x15mD\"-\xde\x14\xcd\x08\xb1\xda\xaf\x0f\x14O\x19\xb6\xe4B\xc6\xd0(63y\x8e\xac\xa2ke\xe6\xab\xa2\x85C%\xe6\xd2\x06j6\x0e\xb7\x854o\xf0\xf5\xe0\xc8\x91\x94\x92xp$B\xb5R\xe5 T\xffF\xd3:\xfe~\xf1\x8d+u\xd3\x90\x05Q|$k\xca\xdb\xd3\xbd\xd389\xe6\xa7bRc\xa0\xf2\x87\"\xe9\xcd\xba\xbbec4\x12m(\xdeXp\xe8\xca\xc1I\xe8\x9c\x83\x97\x8ap\\\xca\xd5'\xfb\x9d\xadt9+2\xc6\xe1\xd2LE\xc5\x957}\x19\xad\xeb\x0dm\xf7\x04\xa74G\x84\xcb\xb6\xbe%;\xf1Z\xbf\xc9\xbd\xa87t$\x17\x13\x89)\xa0\xee\x911\xba\xd2On&;\x86\xcc?46\xef\xf9R\xe6[e{\n\xc5\x16Hu\xaf\xcbm\xc8\xed\xb2\xac\xaf\xa6\x88\xb66X\xf6\x1d$f\x02\x83MBY_]\xd1\x06N\x1ar+\x85?Y\xc0\x8f<\x03\xeeHRUWO7\xb4\xa3\xcd\xae\xa8\x8a\xb6+\xd6\x86%X_\xb5X{\x1f6G\xf5\xae\xbdrs\xea\x84\x0c\x0f\xbf\xc9a\x8d\xbf(^u\x05K\xd5\xad\xbf\xf6\x8f\xc9|\xcdE8~\x8b\xd2\xbf\xfcI\xbdE\xf1wP\x94\xa0k8\xd8YQ\xc2]\x16%\xc2\x1f\x1b\xd1{Q\x02\xe9\xbfE\x89\x94\x16\xeb\xe8aeH\xe4\xddkz\xd5\xf0A\xe0\xb6!\xfb=m\xe0\x96k.R\x81\xf2\n$\xd5F\x9e\xf9\xa4 \x90\x1f\x89\x8e\x18\xf9+\xd9.\xc1\xb7-\xe2\x07\xd6p\x9e\xf4\x12\xef<\xbd\xa3\xebC\x87\xe4\x11\x0f5\xf6\xec\xbb\x17\xe7?\n^\x9f7\xf5U(\x116\xa9D~{\xa6\xef\xdc\xf1w-\x81\x8a\xf7\xb2\xac\xafR,\xae\xd8\x03\x8c-\xbe\xcd\xa4\xb3\xab\xa8\xb6\xf5\x94\xb3\xf6lH_\xae\xa5\xa8W-\xf0\xd7yE\xda\xe5-\xa9:\xba\x89\xac9RW9\xeb\xf3\xb3^\x91V\xa5\xac\xa5\x82\xaf\xc9\x91T\x9e5\xe5\xd0>lC\xd6u\xd5\x1ev\x92W\x0coFw\x875 \xc9\x85\xcc^Y\x1e\x1ag6P\xc7\xce\x1cZ \x00g\xf0\xf1\xfd\x9bg\x0dm\xebC\xb3\xa6P\x91\x9d4\xf6\x0fU\xf1\xf3\x81\x96\xf7Plh\xd5\x15\xdbB^\x17u\x92\xf2\x15\xdf\xb4Z\xda\x14\xa4,\xfef\xa6\x0cV\x85g\xec^\xd7%\xac\x0e\xdb-m\xd4\xbaY\x88\xbcD\xa2\x0f\"\xe7\xad\xda\xd6H\x07%%-J\xb4VW\x14\x1e={\x04\xebk\xd2\x90uG\x1b\x91l\xb7$m\x07-\xbd\xda\xd1\xaa_W\x1f\xdf\xbfy\xdc\xc2\x9et\"\xa5.\"\xac\xa7\xe4\xc2jb\"\xb6\x87\xb2\xbc\x87\x9f\x0f\xa4\x14\xa9\xab\xf9HI\xf1|LNH\xeb\xe0+\xfb\xc4*~vU\xd7W%]\xf01X\x1d\xb6\x8b\x97\x07\x9e\x16\xb8\xfa\xf4D\xb4\x9b\x0bl\xaf\xebC\xb9ak\x8cu\x1e\x91\xb5&U]\x15kR\xf2\xd9\x8a\xd5vB\x17W\x8bS6l\x9c\xa6\xe4\xd1\xe2\x113\xdbx\x8e)\x99,\xf8\xc9`\x82\xea\xe5\xbc\x82=\x1b\xc8bMO\xa1\xa3d\xd7\xc2\xa1=\x10\xd6mAL\xb6/\x98i\xae\x12\x0d\xaf\x8a\x8a4\xf7\xec\x00\xc3F\xec~O\xe5F\xcf\xc9\x0c\x91G\xe8\xdd\x9e\x1d\x87E\x07]\xcd\xa3Cd\x82(\xf6\xe9\xe9\x1d\xfftg\xd5\xfd\x02~\xa8o\xe9\x0dmN\xf9B\xff\xf8\xfe\x0dv\xd1(<\x93L\x88\x83\xf7\xb0]_\xd3\x1d\x85O\xd7]\xb7\xfft*\xfe\xdb~:\x85\xba\x81\xaa\x96\xbf\x9e\xf2\x19\xb5&\x15\xd4{\xb1\xf9\x95\xf7\x88c\x8b\x95\xc3^\x92\x1f\xa3u\xd1\xe6\x86'\xe4&\x1d\xec\xc8\xbe\x15\xd3\x83\xb5\x9c_=\xc9\xb3B3\xc2\x81\xb4\xb0\xad\xcb\xb2\xbem\x9f\xa3_\xe6\xd7p\xbe\x1d\xda\xc9>\xa7b3\xec\xbb\xc2\x9d\x82-\xdf\x89P\xba\xbb_\xc3Y\x05?\\^^\xc0\xf7\xaf.e\x021\xd6&\xb1\xdcxjj \xf0\x97\xf1$\xbd\xbc\xdf\xd3\xbf\xfe\xe5\xaf\x88@P\xfe\x95J\xcd\x04\xb1}\x9e\n\"\xbbzsX\xf3\xec\xf4<%=\xa6R\xfc\x1a\xce\x86\xd3N$y&l\x0c\x84glM\xd6l-\xd7\xf5\xe7\xc3\xbew\x10\xadHK7`$\xc7W\xc5\xa5C}|\xff\x86\xb7\x88\xe7\x86\xef\xae\xe9N\x9b\xcb2k6Q\x1d`\xff\x7fS\x17\x1bf\xb4\xa2\xc2Ds\xf8rmx\xfa\xfdS\xf5*\x93H\xbabU\x94Ew\x0f\x15\xa5\x1b\x95\x18\x9co+\xcd\x8dC\xc9\xa9+\x99]\x9e?\xceW\xcd\x02N>\xb6T\x11o\xb1\xd1`\xd3\x87\xed\x0eb\xfe\x90\x8a\\\xe1}]5\x94|fk^\x8a\\<\xc1f\xc2\xdb\xba\xa3\xcfe\xa6\xfbC\xb5\x163\x9d\xb5Z\xee\x12\xebC\xd3p\xbf\xa2\xee\x8fs&\x9c\xe3nH\xdb\x11\x07j\xb7_\x1d\xb6\xd0P\xb6\x87\xd3S\xae\xa1\x17\x9d\xaa\x88\xa7L\xe7\xa7w\xbf>V\xf4\xaa\xa8*\xdc\xc6\xb8-\xbakts\xbe\xdf\xd3\x85\x98\xb7d_\xb4\x8bu\xbd\xc3\xf7\xb7\x0f|\xf5\xb4\xc2 \xc8\x96g5\xde\x0f\xe0Dz^\x84\x17U,\xb7'\xb0\x1b\xb9\x8eTY\xa1\xcb\x9fw\x8b\xc7F\x14\xbb}I\xd91$|\xd7\xed\x9e\xae\x8bm\xb1\x86\x96\xeeH\xd5\x15kK\xd3v\x98b\xde#\xde{\x85\x10>\xff\x7fT\x19\xe6%\xfb\xe5p\x80[\xa7\xb5\xd2QW\xf5\x0dz\xf4\x8b\xee\xc9 \x9b\xa2\x07\x7f:\xab\xee?ivC\x05\xa4Y\x15]\xc3\x16\x96\xa7=r'\x1d #e]]\x89\xf1'\xe3\xcf\xc3\xf6;\xbe-\x8b\xf6\xacl\x95F\xafOi'\xd6d\xbaP\x13\xbb,V\xbc\x91r7n\xa1=\xec\xf7u\xc3O\xb4=Y\x7f~v\xa8\xd8\x7f\xd89&\xbem\x8b\xaf$\xec(\xaf\xb7p\xe8\xc4v\xa2\x96i\xcb622\xa8\xe6W\xb4\xa2\x0d\xa79\x15\x9e\xe5\x9e>\xec\xcc\xda\xbf\xc4'\x19\xd7\xf1\xea\x8e\xb0)\n_?\x87\x0b\xd6N\xb6>e\x93\x89N\xe6\xff\xe27\xbfA\x0f\x95\xd7u\x0d\xdb\xba\x86oa\xb1X\xfc+\xf2\x00\xeb8\xa9\xee\xb1\x9fHu\xbf`\x95\xben\xea\xdd\xc9\xb6\xae\x9f`\x0f-\x16\xd8\xc9Ql\xe1\x84\xbd\xfe\x917\xf5\xb2>\xf9\x15{\xff \xfc'\xba+\xe22\xfe\xee\x1a\x8bo\x02c\xf1GrCf\x0d\x06|\xcb\xf5\x1a&yb\xbf\x8b\xf6\xe4u]/\xd6%i[g\xb7ES\xd8\xe3\xa2\x17\xda+X\x8d\x7fG\xfe\xf6\xec\x19\x9bp\xa1\xb6| ;\xca\xd4\x843\xd1\xaa+\xda\xbd\x147\xcf\xe7U\xdb\x91jMO\x9e\xa45\x12\x95\x80\xb7\xd9\xf1\x0d\x7f\x1b\xf8\x86\x17\xf7\xdd53\xd1\x10\x99\xa2E\xaf\xeb\xfad\xb1X<\xc1\xe7\xad\xf8\x82'\x8e_\xf9\xac\xe6_6\xe5\xc3\xb2\x17\xcf\xc5\x08\xbe|\xf5\xe1\xc5\xfb\xf3\x8b\xcbw\xef\x9f\xe0n\xb9a\xee\xbb\xaa\x11\x159F\xe7w\x81\xd1\xf9\xbeF\xfd-ld\x9e\x7f\x0b\xbf\xda\xaf\x16\xaf\xeb\xfa?\x17\x8b\x056gX\xe3N\x99\xd2\xc7\x9e%\xd5\xfd~\xb5xKo\x9d\xed,\xb6\xfc\xd9\xff\xf1-TE\xe9\x98$\x8eAC\xa7\xac\xeb\xd9Q\xe3\xd1We[D\xbb\x17\x1f\xab\x1di\xdakR^\xd6b\x99\xcei\xe8\xe8\xaf\xcc\xdc\xe3\xe3\xae\xf6m\x9d\x9c|?>]\xc4\xd5\xee\xbd\n\xe8\xe0\xd1\x99#\x81\x8f\x11%\xe8\x19\xb3X\x17\xfc\x07\xa6<>fVF\x7f\xda\xb1\x93P2O\x8eD\x89\x191\xae\xa0?`\xaa\xf2^\xd9Y\xff?{\xef\xdb%\xc7m\xe3\x8d\xbe\xcf\xa7\xc0\xd5\x8bG\xf6\xb3\xe3V\xe4$\xbbgu\x9f\xecY\xfd\xb3\xad\x8d-i\xa5q\x92={rF5\xdd\x9c\x99ZuW\xb5\xbb\xaa\xa5\x99<\x9b\xef~\x0f\xc9b\xfd\x05 \x80U=\xf6\xe6\x12olMW\xa1H\x90\x04A\xe2\x07`r$n\x0dU\xc8\xaeje-)s\x1a\x7f\xf8\xe8\xe1\x98as\xd8s\x8d\xb1\xa7;\xd5\xcc\xd0\x07We\xb9\xba\xcc\x0e\xa6\x1b\xb7\x8f\xeeV\x7f}`\xa5`\xcf)\xd8\xc1\xcb|\xf6\x81~r\xba\xcd\xfd\xdb\xfb7\xaf'\x7f\xd4c\xa0\x7f\xe8N\xfe\xd6J+\xf5ZlL\x12{\xc29V\xca\xb9~\xaf\x8f\xdbl\x92g{\xca@?\xbcQ\x9d)q\x06jw\xa96\x9b\xce\xa88k,\x94\xc9}Ao{\xbf2\x9d\xfd\xf0\xaf\xba\xbb\x1f\x9a#\xee\x00\x9d\xe1\x84\xb7rK\xfb j\x86g\xeb\x8fzewG\xbb\xab|\xab0}\xeat\xc0[u\xa8\xca\xc23\xc9\x9b[\x1aSc\xfa\xc2H\xfd\xf7\xf0\x18\xe3\xd6>j\xa0\x94\xcd\x93_\xb3\xf4\xb8&\xfc\xeb\x0f\x8c4\x1e<\x81\x07\xd8\x8c\x1fvqe\xfb\xf1\xe0\x0c\xe7dz\xf0:\xdbin\xff\xc76\xf5_<\x8f\xea\x1e\x8c\x9e\xe4t\xe3\xd5Us\x98\x18\x8e\xbd\x1d\xb7\xbc\x82\xcfj\xbb\xfd\xeacQ~.\xccZ\xbc\xc9*\xc8`}\xac\xear\xd7\xcc\xd9!\xbf\xe1D;\xb3\xa6\xech\xf6u8\x90\xe6\xa3zB\x15\xd7\x93\xbb$3\xb9\xc6\x1f\xf8`&\xbc\x9bk7\xe5v\xd3\xe4\xe9\xed\xdad\xee\xa5\x9a9\n\xcdMP3E\xc7\xdc\xcc'\xda\xb9 _\xe8\x15\xeeD0\xb9hp\xb7a\x7f\xf9\xcf\xbf|\x89N\xe3y\xf3a\xf8\x11\xdf\x940\xdd\xd7\xcc\x1e\xaf\xbe~\xfcu\xf5\x00\x1d\xe4\xee\xff=X3\xefq\x8d\xf0\x06\xe4\xdd\x85\xe2\xfe\xa0>\xe5\xe5\xb1j\xea\x17\xc07\xe5\xa1A0T\xf0/\xf0\xf8\x0c\xf2\xfa\xa1\x1d\x9a\xcf\xe6\xaf\x93\xdb\x85\x9d\xda\xe4\x99\xd6EcQ\x1a\xbd\xe1\xda\xdd\x1e\x18\xec\xd9\xcf\xa4\x82\x1f\xd4i_}\x9fUu\x03%\xd3\x8d\x181\xb3M\x82\xdf\xff\x1e\x1eOR(\x9b\x16\xea\x13J\x95W\xe6\x8b\xfd\xad\x11s'\xd7\xf7\xe0U\xaf=\x0e\xe3\xe0 ;\xec$\xf65\xdb\xd2i\xfd\xdfA7p\xb0O\x96\x08\xd7/\x83\x03Q\xf6\xc7r\xb8,\xcb\xad\xca\xb0[;jM82\xfe\xc3\xceal\x00\x90U^\\o\x8dW\xf8\xab\xce\xf1y\xd6/\xfean\x8cp\x86Ya\xe7\xa0\xd4uh\x1d\x99\xe6\x9e\xb2\xea{\xeb`\xa3>\xa9\xad\x1e/sIg\x8a%\xdc\xf46\xf3 \xa3\x9e[\x0dj\xc4\xe0v\xc8\x9co\xf2\xc2\xd8\x10\x06Of\xb6 \xf7\xcb\xf3\x1b\xb5\xfex~\x8b\x9cb\xbe\xcfju8\xeb{\xa3*\xd8Y\xcf\x9dCn\x1dM\xe2\xf4\xfaFU\xaaY\x8c\x92\x0b\x9b\xc6\xd3\xdb:N\xad\x0f\xbba\xe4\x9c\xba\x8d-\xdb%i\xf7x\xc7\xa0\xb9\x93\x9ch\x90~\xeb\x1c\xba\x15\xea\x9b\xb2R\xbeO4\xedp5[F\xfc\xac\xbd[N\xadg\xc7\xad\xcb\xc6Z\xd4j\x05\x7f\xbaQ\x07\x95U\xf0}y]\x8da\xb1\xbaMg\xe8\x95d\xcf\x80\xdb\xa9:\xdbduv\xd6~\xc1\x98\xcf\xc3F\xf7\x1b<5]Q\x88\xe0\xd7\xab\xc7\x8f\xcf\xf4\xff\xfcv\xf5;\xf3\xdf\xdf\xb5o\xf9\xc7\xad\x03\x0fR\x0e\xef\x83\xda\xaaOYQC}k\xb3\xdagE\x7f{q\xbd2\xd7\xe0\xfd\xf6\xd6\xd9u\xd5\x83\x1c\xd83\x81Ko\xbf-\x0dn\xd9\x98\x10\x1b\xb5.7jc'\xc1\xa0\xc5\x03\x90c\x10q\xd9\xc7Z\x9e\xdf\xb6\xd0J/r\xb22s6\x02?\xd9S\xbe\x98\xaa\x9f(\xf8\xf9(\xcb\xcau|\x9bW\xc6\x0d\x86\xc0-+\x04o)m\xa9g\x03\xf2m;x\x14S`\x8f\x08\xa1\xd0h|&\x8e\xd0\x0c~P\x84\xd2\xf4\xe24\x83\x9f\xe0b51\xb4\xa6c\x8c\xe3\xf6B\xd2\xe2a61\xd4&_^\x14r\xd3\x83\xdd\xe4\x7f`\x82\xdf\xe4\x03`h\x04'\x81\x83\xc1P\x9c!\xd3\xcdc\xb6\x05M\xb6\xb0\xb9\x16\xc4s\x86g\x86%*\x8c\xcc\x83\xea$\xad8?\xb2\x93\xb2m \xd8#i\xdfR\"\xb3\xe43\xd9\x07\xbfS\xc8D\x0e\xce\x93\xee\xae%\x12\xeb\xc9\xea\xba%\x8e\x00,1\x10\x9fLYXb\xa1>\x05\x1c)\xc3yHR\xec'-\x1c \xfa3\x06\xff\xc9\xefa\x14\x06\xd4?\xfd\xb5R$Q\xa0K\xe3@\x03HP\xae \x16F\x832\xf0\xa0\x01D(\xa7\xd13P\xa1\x1en~\\(\xdd\x1e\xee\xd6X\x87\xb0\xa1\xe4\xae8\xc5\x87\xf2\xf7\xf39\x18Q?J4\xda\xa2\x9c\x8b\x15\xf5\xa1EO\xd1 \x06ft\x8a\x1a\x0dn+\xd4\xa5\x17\x8e\x1d%\xf5;5Kay\x04)\x85!]\x1aE\xba0\x8e\x94@\x92\xce\xc6\x92.\x8b&\xe5\xe0Ig J\x97\xc5\x94\xda\xd9J\xa0J\x97\xc5\x952\x90\xa5\x8bcK ti\x1c\xbe\x14e\x14\xc4\x9c.\x82:e\xe2N\xd17EX\xd4\xd9h\xd4\xa5\xf1\xa8~D\xea\xc2\x98\xd4S\xa0R\x17\xc6\xa5r\x91\xa9\x0bcS\xc3\xe8\xd4\xc5\xf1\xa9~\x84\xaaU\\,\x8cjDk\xd7!~\x8a\xe0\x01\x8e0>_0\xc0\x0bm\xdb\xad\xcd\xdd\xe3\xbe\xacj\xf8\xf4\xeb\xd5o\xffqu\xfb\xc4\x9e\xdal\xb2Z\x0b\x96\xe9\xdeB\xb7\x88\x94e\xb8\xa1\x94e\x18\xc92<\xe91\xda[OO\x9b^\xf2;e\xde\xc4\xa7\x0c\x82\x83\xe7A\xec\xcfo\xabgwv\xffhX\xbd{\xfb<\x08\xb9\xff\xa1\xdc\xa8W-\xb6h\xb2h\xa6\x0b\xc6\x1a\nO\xc6\xfdn\xec\x87\xf6\x14\xd6\xb3)\xaa\xfc\xba\xe8Ae\x05\x0bs7\xcd\xa3k\xbf\xa6\x7fp\x12\xd1\xec\x0d\x8eD\xff\xcdyW\xd0/Ch\x02c\xa5\x05\xbe\x82\xf7\xaf\xbe}}\xf1\xc3\x9b\x17//~|\xfd\xfe\xed\xcb\xe7\xaf\xbey\xf5r\\l\xa1\xff\xd4\x8bW\xef^>\x1f\xd7\x04\xe8?p\xfe\xf2\xcf\xe7?>\x1dW\x02\x98\xb2\xb8x\xfa\xe3\x9f\x03\x0f}\xff\xf2\xdb\xa7\xcf\xff\xe3\xe2\xe9\x0f\xaf^\xbf\xb90\xa7d\xff\xb3/_\xbd\xbdx\xfc\xcf\x8f\x07O\xb4%\x07\xe8\x0e\x86\xcd\x95\xf7\xf9u\xa1\xe7\xd0x\xe4{cb\xfd\x96u\x05\xfa\x88_\xa9\xf5\xf1\x90\xd7c\x9b\xff\xfa\x98\x1d\xb4=\x80\xed\xcd\x06,\xa4\x87\xa7\x87\x92Y\x97E\x95o\xd4A\xefwpP\xd7yU\x1f\xee\xcc}\xd6v\x0b\xf62A\xb7\xc14`\x82\xc5l\xceo\xcf\xcdb\x00\xb5.\xab\xbb\xaaV\xbb\x15<\xdd\xef\xabF)\xd6\x0d:\xc5\xeae\xe7m\x9b\xc2]\xcc\xb7\xc6\x1f\xe8>\xdd\xf0\xb4\xc8I\xd3\xf8m\xfeQ\xf5Y6\xf7 \xbdw0X\xac*\xd6\xe5\xf1\x90]\xdb\xe6\x94{Uh)\xefto\xdf\xbe\x83\xecZ\x1bMu\xe3\x8e\xcf\xb7\xe6\x03\xd9F\xcb\xa6P\x9fa\x9dM\xed1s]\x91W\xdd\xf8\x19\x017\xfe\xca\xc6^\xca\x0f]\xab\xa0*\x1b\x97f~u\xa5\x0e\x08h*\xd3\x1d5@\x89\xcc\x0eOUk\xbb\xbeA!\xd8\x95\xd9\x0c\xe4\xd4\xb6\xf6\xac4\xcf\xfcl}\xc1\xc6\x91{,\xba\x01o'\x9d\xb6\x82\x9a=p\xf4\xad\x83\xfa/3\xae\x93\xa3\xcat\x11>\x99\xfc\xa5\xff\xe5\xd1,w\xf0#+\xd3\x17\xe5\xda\x82\x14\xc6\x80\x9eO\xea`\xed4\xb3,Z,\xb35\x8b\xf5\xb1#\xd0\xaaFy<\x99\xfe\xc9\x1e\xe2\xae\x8e\xc6\xba\x1c\xb4\xcbN=- \xf3\xe5;\x0b\xcb\x1d~\xe3\xe6\xb8\xcb\x8a\xaf\x0e*\xdb\x98\xdd\xb6V\xb7\xf51\xdbN\xaez\xf5\x99j\xefT\xac\x05\xaeLd\xdb\x7fc<\xca\xa6\x8bc\x89\xf2\"\xe9~\xf7kz\xb4\xb4\xca\x9c\x8e\x98\xfe+g\xd4\x10\xbd\xf6\xa2\\\xbf\xc8\x0fj]?=\xde\xae\xe0i\x05\xe5~_6\x96\xda\xf83gvv\xb7\xebe\xc4nS*\x03U\x19\xf7\xf5\xa0~:\xe6\x07\xb7SUm\xe3\xcaO\xdaj0\xc0\x92\xe6\xa7\x87\xf0\xc1\xfe\xdf\x85>\xe4~\xe0\x89\xed\xb7\xff\x18\x12\xdbd\x13y\x12\xfa\xd1N\xb1\xcbl\xfd\xf1sv\xd8T#\xc8RX\x9aOwyQ\xda\xa3Hoa\xc2A\xed\xcaO\xb6\x0e\x8a\xf5\xbd\xe8\xe9\x1b\\\x01\xcd^\xf6d\xfa\xa7\xde\x18;\xab\xc06J\xdbH/_\xbd\x05\xf3\x8c\x13o\x7f\x07\x18\xcb\xf1\xc5\x1fV\xf0N]=\x01\x03\xe2y\xf2\xe8\x91\xca\xf7\xd5J\x19\x93\xf9\xb8[\x95\x87\xebG/_\xbd}\xaf\xff\xfc\x95\xdeW\xc7\x03\xf1\xdcA\x9f\xce\x90V\xe6U\xb3]\xd9\xbdK\x8bt\xa0\x82\xc7\xda\";\xe4YQO\xce\xee\x97\xc7\x16\xfc\xd4\"\x82\xcc\xb9\xd7\x9a\x83/\xfe\xd0s\xb9\xad\xe0\xbc\x04U\x98\xa5\xfd\xf2\xd5[\xdd\xe6\xf1m\xef]y4\xa03d\x97\xd0\x87\x93\xeeB\xfe\xc3\xf9\xed\xf3\xb2\xb8\xca\xaf?X\xc5bn\xeb\x8b1*iz\xad\xfa\xc1u\xf2\xbb\xac\xd8l\xd5\xe1\x83\x1b\x16\xdd\x1a\x8b\x83\xd5\x8d\xdee\xba\xd5\xeb|cv0\xeb\x8bk6\xca1\xc7\xe6\xdd\xf1\xdca\xad\n[\xb9C\xd3\xee\xb8\xad\xf3\xce\xecc\x86\x84:\xa3y\xf5\x83~\xbd\x0b\x0fu\xd6\xa9\xfe\xeb\xd0 *,\xaa\xdd\xfcR\xe5\xd7}\xcbt`_9\xce#\xe4\xd0\xd8\xc6mm\xeb\xf2\xe0a\x1d\xb6\xf6m\xc3\xd96\xffe^\x9b\x8b\xda\x89\xd5\xef~\xe8->\xab\x03L\xa9J\xbd\xc35\xc3\xd3\xb6.\xeb\xf6\xa7\x8e\x19\xffD\xa0n\xebCvq\x99\xd7\xd5EU\x97\x07#\x08}F\xf89\xa20\x16\x0c2_6\xbc|\xb1\xc0r:\xa4|\xb1`r_\x18\xf9\x9c\x00r\x14\x7fXs\xc2\xc4c\x03\xc4\xbd\xc1\xe0\x91a\xe0\x08DYv\xc7\x0d\xe4\x0e\x1a\x19\xe8\xdd\x05uc\xf2\xfd\x15\xfd\xedya\xdd6\x8c\xbb\xc7n\x1a\xd0\xbd@(\xf7\xbc \xee\xd1,\x1fo\x863\x03\xb7\x1bA\x0f\x0e03B\xb4\x83\xf1\xc7\x9e\xb0l2 {\x1a\x9b\xc8\x0f\xc2\x9e\xbe\xfb7\xac\xafQ!\xd7\x9c\xceRa\xd6\xfe\xbe\x91\xa1\xd5\x82\xa0\xeaq\xe0\xa8/\x90z~\x08u|\xf04:.\x91\x01\xd3\xc1Pi\x7f\x90t(<\x1a\x15\x167$\x9a\n\x86\x1e\x85A\xcf\x08\x80f\x84>\xf3\x83\x9e\xc9pg$jx\xf29\xe4\x19*\xacy^@3\xda\xa8\xde_f\x85/\x8f\xc3\x95\xe7\x04*#\x81\xc9\xb3B\x92\xc7!\xc8K\x06\x1f\xfb\xc2\x8e'\x01\xc7\xcb\x84\x1a/\x16d\xbclx1/\xb0\x98\x0c)f\x06\x13s\xc2\x88'\xf1\xb6\xd3\xafq\x03B\xc3A\xc3\xccpaF\xa0\xf0\xa0\xc9K\x06\x07\xcf\n\x0b\x9e\x86\x01/\x17\x00\xbc\\\xe8o\xfc\xe8\x92\xe1\xbeT\xa0\xaf\xd3\xd2-`\"\x1a5\xc5\x04d\x10\x10\xa8\xba\xc5c8\xe4\x89CY\xf5\x98u\x11W=\xff2\x82\xc7\xf8\xa8\xee\x1e\xba\xfb\x9dJ\xfdtTE?\xd7\x97\x87\x8f\xf0\xb9\xb9\xc7\xb4\x17q\xf5\xed4\xfap\xaf\x0e\xba\x11\xabQ/\xa6\xa9\x98g\xf7\xe1\xdb\xac\xfa\xb1\xea\x1a\x9c\x0d\x922g\xeb\xda\xde\xda\xbb\xec\xcc\xaeA\xf6\xba\xd53\xc0\xf6\xc7nJ\x9a\x7f\xb5\x1b\xc9\xac\xa1\x9cV\xf3 \x05 \xbc_{\x91\xd5\x99\x05\x90\xdeY|\xe7A\xd5\xc7C\xe1\xc2\xa9\x9d5an\x91\x8d\x13\xbb\x97a\x1d^\x8d\xfd>?\xfc\xf8\xfe\x1c\xb9^\xdc\xaa\xe2\xba\xbe\xd1;\xc0U~k\xe7\xb9q\xf9\x19m\xa6\xf6\xd9!\xab\x95\xfd\xba\xfd\xa8\xde@\xb5A\x83'Il\x1bPM\xce\xe7}5xnQZ\xda67n0m\xa0\xed\xcb\xbdY\xe3\x9b3\x03 \xd0\x0dR\x07S\x98\xc3\x85?\x8e\x186\x9as\xfc\x9dK\xb5\xce\x8c\x03\xa6\x86l[\x95Cs\xff\x87\xeaz\x18M\xa9M\xff\x1e\x83I\x99\x0e\xef\x98\x86\x87\xee\xfb\xf2z\xf8a\x13\x98\xdd\xd3.\x9e\x11\xf4\x89\xb3\xdf\xc6T\x9d/\xd8\x05Kt&\x90T\x9d/U\xe7\xfb\x19\xab\xf3ET\xdehjl\x8c\xf89E<\xfa3\xba+\xf4\x9e\xe9+\xd6\x9fI\x99\xa4\xaa\x07\xa9\xea\x01\xca-U=\x80T\xf5\x00\xff\xceL@\x89c\xc2\x80\x95\xa0o\xb2\xa1&\x96f\x00N,\xcd\x80\x9d\xf8\x16\xba\xa7\xa9\x8b\x01R,-\x0bK\xb1\xb4\x188\xc5\x12\x0dQ\xb1\xb4\x18P\xc5R\xaaz\x90\xaa\x1e\xd8\xfb\x8dT\xf5\xa0G\xf3\x003\x13vu\xaaz@\x83l,Q\xb9\xf5i\xc0\x8d\xa5T\xf5@\x06\xd0\xb1\x94\xaa\x1eL)U=\xa0A?\x96\x18\xd0\x1fK|\x00\x90%\x12\x06d)U=HU\x0f,- <\xb2\x94\xaa\x1e\xa4\xaa\x07$\xc4%U=HU\x0f\xa89B\xc2\xa0\x1av\x11U\x0f\xc2g\xb1\xc1\x1d\xfb\xd4\x11\xe9\xee\xe7\xbbG\xccD\xd1k\xda\\\xb9\x8c\xb8=-\xee\x90D\x99\x81\x98y\n\xae\xc1H2\xeb\xde\x19\xc16(\xbc\xc6y\xbegC4\xac\x9b\x7f\x8cw!\xd2\x01M\xf8Z\xf2y\x1c6\xaa('\x89^\xbdw\x02\xe3\x16\x05\x1f\xf7\x83n\x00\x9e\x97y?\xf1u]~TE\xb3?\xd8&\xb9<\xd8Z\x1b\xe8s\xba\xf9\xf0\xc8N|\xfd\xe6\xfc\xe5\x13\xb3\xaf5\x80\x88\xd6o\x9e\x15\xf0\xaa\xa8\x9be\xdb\xde\x96\x0c\xd6\xae\x1d\xa4\x01\xbf*\xbf.\xb2\xfaxP\x95K\xdb`\xac\x99\xeb\xf2\xba4k\xa5\x07\x86\xb0H\xbd\xe6\xb3\x13T\x86\xd9\xa7\xf2\xfd\xaf\xdc\xc3\xfb\xbd:\x8c\x87q$.\x97/\xd9<\xdbr\xb4@\xb5\x11$\x0e\xf6\xd9\x9d\xd9\x87\x9a{%\xf7%\\\xde\xe7\xf9\xbeEd\xe5\xfb\xee\x96l\xa7\xea\xec\xab\xbe/\xaf\x15\xaew\xdd`\x980\xf6d\xbe,7H\xc2\xb4r\xd3&\x00o\x92\xd3\x9bKBs\xf9\xdf\x93e\xd7\xcc\x91\x14Yx\x14\x97\xe7>\xf9\xf2\xea\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe\xbc!%_^\xf2\xe5\xd1\x16G\xf2\xe5%_\xde\x80\x92/\xaf\xa1\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe_^s\xbdn\xe3\xa7\\\xa5\xd4\xf6\xaf\xf6\xd6\xc3F\xda\xd8\x08G\xd5\xbaWF\x9c\xba\x82\x12c\x11\xd9*\xbc-O\xeb92\xe3\xd3\xc4\xff\xeb\x99f\xa33\xcb+S\xc5\xa4)\xe2;\xe2\xf3\xf4X\xdf\x98\xa4\x0b\x93*x\xbd\xdc\xdb\xb6n\xef\xf9\xed\xc3\xaa\xe7\x12Z\xc1\xcbl}\xd39\x86\\\xb2\x85\xc6E3)l\x96\x99I:\x8d\xc1\xaa\xdbj\xb2z\x972;\x94^\xb7\xa6\xda9\xe45\x94\xeb\xf5\xf10\x8d\x11}f\xc2{?\xa9\xc2\xad\x10\xf7\xde\xb8A_\xb8K\xde\xb6\xb0\xb0y\x0e\x1f\xb3\xc9]\x90\xc9j}\xa5\x0e\x07{\xf5\x969\xd7L\xbe3\xe7\xea.\xc1\xc4>\xbb\xb3\xbf]\xa9\xb1K\xd4\xd1\xe7\x9br;-\xb4\xd7\x8f\xad\xef\xfe\xbcS\xbb\x12s\xcf\x88\xc3K5#\x17\x19\xdc]\x08\x14e\xad\x1e\xad\xcb\x9dq(\xd8 \xe9\xc6\x07F\x0e\xa6\x89\xe4\xff\xf4\xf4\xdd\xebW\xaf\xbf}\xa2\x95\xc3z\x9b\xdb\"\xcc\x9a\xbd\xcd\xe7\xb0\xbd\x03u\xdbd\x8bW\xb7\xb5\xbb\xf8/\xcazZko\x9dm\xb7Fa\xeeJ\xb4\x84U\xafP\x85}\xf2\x83n\xf8\x07\x17\xcf\x0b_Tj\xcc\xd2\xa55\xbf\xce\xeb\x9b\xe3\xa5Q \xd6M\xf7\xa8\xf3\xdf=\xca\xab\xea\xa8\xaaG\xff\xfc\xf8\xeb\xaf\xbf\xecK]\xcf\xb9\xf2X_\xd8\xa2\xfcL\xf9\xd3\xa5m'\xb5~\x9b\xef8O\xdf\xa5 :\xb4\x1fm\xac0\xab\x94m\xa4}/o\x84Q\xfaE9\x9e\xbd\x97\xad\xb7\xd0\xda\xa8F\x8d\xdfd\x83\xd5\xaenkUTyY\\\xd8k\xff\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfd\x1bS\xf2\xfe%\xef\x1fmq$\xef_\xf2\xfe\x0d(y\xff\x1aJ\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfd\x83\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf>\xcd\xf5\xec$\xef_\xf2\xfeQs\xe4\x84\xde\xbf\xe6V\x7fr\n\x9b\xdc\xb0\xdb\xab\x9b\xf6\x1c\xe6\xfej\xc6s\x9d\x15\x9d\xd7\xe5r|\xc20\x97\xf7\x13\x97\xdc\xe7\x1bU4\xea\xc8V\x9b\xe8\x7f\xa7(k\xa8\x8e\xe6\x9eA\x15\xf5J\xcfKm/Y\x05V)S#{\xc8\xces;\xacg\xe9:+\x1e\x9a\x93\xad\x0d<\xdcX\x07\xdb\xc4\x13a\xaa\xdb\xda\x82\xd1=&EY\\\xac\x0fy\x9d\xaf\xb3\xedEr;$\xb7\xc3\x80\x92\xdb!\xb9\x1d\x92\xdb!\xb9\x1d\x92\xdb\x01\xa1\xe4vHn\x07\xda\xe2Hn\x87\xe4v\x18Pr;4\x94\xdc\x0e\xc9\xed\x90\xdc\x0e\xc9\xed\x00\xc9\xed\x90\xdc\x0e\xc9\xed\x90\xdc\x0e}\x9a{\xa5\x9c\xdc\x0e\xc9\xed@\xcd\x91\xe4vX\xdc\xedp\xd7\xce\xba\xfc\xba(\xfbAR\x83\xd3\xe9\xf9\xed\xb3^\xf24\x93H\xcd\x14\x11\x1d\x94\xdd\xd4\"\xc8\xb6\xdb6\xb0J\xff\x17\xcaO\xaa\xbd\x12\xcb\x8e\xf5M\\\xf9\xda6\x92\xaa}\x11\x8b\xfeh\xf9\xb7)\xed\x8e\xf5My\xc8\xffj\xd7\xd7A\x99\xbav\x81|o\xfd\x19\xe5\xae)\xece\xaa\xed\xd2\x99\x0bJ\xda\x95\xfa@\xab\xa5z\xd5\x06\xc9t\xd1[QI\x14'w\x1atm\xd1a\x89\xdb.\x9f\xe0 4\xae\xf7\xf7\xe6R\xb7^\xdf4;fSt\xb0\x0dg\xeb\xb1\x1bF\xc5u\x91l\xc3\xd0\xb5\xbal\xcaV\xae\xcb\xa2P\xebZ\xab\xab\xf6\x83&\xeb_\xbfHX\x8f\xe16\xff8\xb0\x14B\xe5j\xb5\x89VVfn\xd8\x994\x9a\x9an\xb4\xf5!g\x93\x1d\x1a\x03\xa8\xbd`\xbb<\x94\xd9f\x9dU\xa6q\xc3\x1c\x84x\x96\xc1gm\xf2\xc0\x9a\xce4\xe8\xa2\x04\xa3\xc6\x9c\x9d8\xb3\xf6x\xd9\x02\xd7a\xd4\xed\xd2\xa2\x9e\xb5\x90WmI\x8f\xda\x82\xde\xb4\x80'm\x96\x17m9\x0f\x1a\xe5=\x8b\xf4\x9cE{\xcd\xecM=\"-\xaf\xc7,\xda[fM\x98 ?\xaf\xa7l\x8e\x97\x0c\x8e\xfb ?\x9f\x87,\xc6;\x16\xf2\x84\xcd\xf6\x82\xb1<`\x12o\xd7,O\xd7\x0c/\x17\xaaV\x16\xf5f-\xed\xc9Z\xd0\x8b\xc5\xf1`-\xe8\xbd\xf2{\xae\x16\xf5Z\xe1\x1e+\xc4\xc4\xc7\xb4T\xac\xa7\xcaz\xa5&\xec0/U\xb4\x87\n\xf5N\x05\xb6\xe2\x80W\x8a\xda\xa5\x97\xf2F\xf9=Q\xa1\x16\xcc\xf3@Y\x8f\xd3\x80!\xe6}Z\xc4\xf34\xcf\xeb4Y%\xd3\x0dwIoS\x8dx\x9a\xe6y\x99\x08'\x8a\xd7\xbb\xc4\xf0,a\xd7\xac\x12\x8f\x12\xf6\xfe\xdf\xf0\xbeGz\x91x\x9d\xa7\xbdG\xa1\x9e2\xbcF\"\x8f\xd1\xf4^\xdc\xef)Z\xc2K4\xc7C\xe4\x19\xadh\xcf\x10\xe1\x15\ny\x84\xc2\xde \x8f\xf0\xf8^ \xda\x034\xf1\xfe\xcc\xf2\xfc\xb0\xbc>\x12\x8f\x0f\xc3\xdb\x83\xbaM\x90\xcf\xa2\xcf\xd1\xde\x9d\xb9\x9e\x1dO\xf3\x06\x7f\x9b\xe5\xcd\x99zo\xe6xnPO\xcd,/\xcd\xd4+\xb3\xacG\xc6\xef\x8dA<1Kya\x16\xf4\xc0,\xed}\xe1z^\x18^\x17\xb6\xc7\x85\xe7mA\x1c\x13\xd8W\xb9\xb7\xe7\x94\x87\x85\xed]ayVF\x8d_\xd6\xa32\xcb\x9b\x82yO\x96\xf4\x9c,\xe95\x993\xde\x0co \xed)\xe94\xbc\xff\x9c\xe0\xae@#R\xb2y\x92\xb0E'`\xf3\xa4\\[2\xdd\x1a\x96j\xad\x96\xa7Y[0\xc5Z#\xa7\xc1\x9d\xc1\xac\xd4j\xd3djH\"\xb5a\x125\xf4\xf4\x1b\x9a2K&N\x9b\x934\xadI~6j\xdb aZD\xb2\xb4\xe8Di\xbe$i\xa8|=\xc9\xd10\xd7\xd8\x92I\xd1\xa8\x84h\x81\xa8\xa4:\xf9F\x06\x94|#\xc97\x92|#\xc97\x92|#\xc97\x92|#\xa3\x9f\xa8]:\xf9F\xea\xe4\x1bI\xbe\x91\xe4\x1bI\xbe\x11H\xbe\x91\xe4\x1b1\x94|#\xc97\x92|#\x8e\xb8w\xe5\xc97\x92|#cV\x02\xdf\x08\x16=2'r\x04\x89\x15Y0N\x04\xb9\xdb\x9b\x95\x96\x8a\x9b\x92*]\xfe\x0e)]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5o\xba\xfcM\x97\xbf\xa3\x9f\xa8]:]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5\xaf\xfb-]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5oC\xdc\xcb\xc0t\xf9\x9b.\x7f\xc7\xac\xd2\xe5\xaf79\xd0\xc2\x89\x81\xb0\x0c,/\xd4\xba\xdc\xa8\xa7\xbb\xbc(\xdf\xa9\x9f\x8e\xaa\xaa\xd9\xf9X2\xfd\xd2\x85\xbd\xbf`\xc2\xa7\xdb\xd3\xe7\xa0g-|\x1ak\x8e\xeb\xf0\xa1\xf9\xa7Y\xad\x0e=\xff^\x1d>\xe5k5\xecG\xc3\xec\xdd\xdb\xe7\xcd.\xd8\x9aK\xef\xf3b\xad\x9e@\x07\x0c\x87_\xaf~\xfbO\x1c\xc9T\xfb\xb2\xa8\x94P4\xffU\x95E@0,\x19\xd8\x0fwBh\xfe}\xcfR\x90N\x8d\xfa\xf6B\x0f\xf5\xc4#AM\x8b\x89X\x1c\xa3V\x00\xd9\xe7i\x84DX\x901\xf3ha\xe1 gO}\xdb\xc9\x8d\x99\xb5\xeb\xfc\xf6\xa1O\x80\xae\xe3\x1b\xd3\x98\x8d\\|\x8c)\xe8\x843\x12\xe3,\xe1\xbd,fj\xa6\xc8\xe57\xfd.s\xea\xf4^\\h\xfe\x0c\x9a\"\x9cD\xa7\xd0\xceH{\xb8\x9a\xe9T\xc2\x91N\x8d\xd3\xac\xad\xc1\x1e\\\x822M\x0b\xaf\xaeA\xf3E3la\xf9 \xe7\xd5\xc9T\xbb\x15\xda@?\x99\xb7+\x9e\x1c\x19\xd3\xd1Ii$O\xb6\x14kUl\xd4a\x97\x17\xf5*\xbb\\\xe7\xab\x97\x9fT!\x98y\xfa\x91\x90\xd0\xb2\xba>\xe4\x97GD\xb6\xcb:\xf2?\xaa;\xb6\xe3@\xe6f\xc8\x8b\x8d\xba\xc5\x9f\xbe,\xcb\xad\xca\xfay \x07\x03jD\xf9\xd4 \xc0\x86\xb7Vyq\xbdU\xba\xb9_\xd9\xf3\xfd>\xcb\x0fg\x90UU\xb9\xce\xcd\x1dws8\x07\xa5\xdf\x0eM\x13\xc3\xde\xfa\x01+\xc8:\xff l\xd4'\xb5\xd5b\xb2 \x16\xeb:[\xdf\xf4\x8f\xf7\xbd\x94\x8aP\xb7\x9a\xab\x99\\\xdf\xe4\x85\xb98xfB\xfc\xb4m\xef~y~\xa3\xd6\x1f\xcfo\xdd5\xd2\xf7Y\xad\x0eg\x83\x8c\x88\xb0\xcb\xee\xb4\xb9\xff\xd3Q\x1dr\xb5\x81cer&\x9ac\x84\xe9\x8e\x99\xf6\xe8\x8ck\xc5\xc4\x9ez\x83\x11GFo4\xca\xc8\x13\xa3\x91\x9d\x8e\xe9)F\xb3\xd7\xfb\xf5\xe1n_\x97\xab\xb7&\xca\xf4\x0f\x8a\x9f4Rm\xbe\xfe\xdd\xef\x1e\xff\xb3\\[Uj\xbd\xff\xfaw\xff\xf8\xf1\xb1\xf4\xd5\xe6\x90\xda6\xb5\x89\xa9\xb6z\xe9\xa3\xba\xabz\xceQ\xad\x98\x8e\x95\xb2]\xffc\xb6\xcd7Y]\x1e\xaaa\xdfk\xe3\xd65\x93\x8c\xdd\xed\x1b\x95m\xd4a\xdc\xf4\x91\x8a\xc0\x15D\xe39\x1e.\xe3\xa6S\x97Y\x95\xaf\x9b\x90V\xbd4\x86\xcf\xe0j\xc8\xaf\x88\xc0r\x1a\xff1\xa0`\xc0\x1f\x8ak)\xdb\xef\x97c\x17v\x8c>\xd7\x0b\xbd\xa8\x8e\x15\xac\xb3\xbd\xcb\xfajp%\xcd\x9f\x0f\xc7\xad\xaa\xcc\x1071\xbc\xf6\xea\xc7Io\xc4\xaev\xb1\xc2\xe6N\xe2l|\x0f\x93\x17\xeb\xed\xd1^\x1em\xb7\xbd\x07a\x93\xd5\x99\xee\xdbqm\xdb\xe0.\x85\xed\xd7Q\xacTO\x01>\x9cdI\xae\xea\xacn\x0c\x1a{\xcf\xb4\xcb\xd67y1\xf0\xd7\x9a/_\xe4\x9b'\xc8\xf8O\xc4<\x8e\xaf\x0e<\xda\x8d\xc6x0\xea|\xa7\x84,6Y\xad\xbe\xd2\xef\xf5~5\xb7\x9dFx\x9e\xd6\x8bf\xefMV\xddD\xce6\xc4\x0d\xbf\xcf\x0e\xf5E\xa5\xea\x8b\xf1\xdau\xe4m!\x04[i^-\xeb\x0c\xad\x1b\xe9\xb8\xe6E\xad\xae\x07Y\x89;\xf2\x8d\x89#\\\x0c@\x89\x02\xc2\xe2\xe8\x14iv\xa8+U\x7fg\xa4\xf2+\xe4\x01\xa3\x19_\xbd\x18\x0f\xf3\xba\xdc\xed\xf2\xfab\xda:r\xe6LZ\xd3|H\xb3\xb2k\xca\xaea\xbd\xf4z\xcf\xe9\x7f.\xf0\xb9O\xed6\xb0\x00\xb3q\xdb\xdb\xcc\x16\xd9~\x0f\xe5\xb1\xde\x1f\xeb\xeeo\xfb\x83\xfad\xbb\xd6\xe3P\xa8\xdb\xfab\xd16\xb5\x1ar\x01^\xd9~\xbf\x00\x173_\x1a4\xd8\x02\xec\xd4\xa7|\xa3\x8a\xb5Z\x80U;~\xdd\xb62\xdaw\xf5\xc2/+u\xb8hR\xa8\xcc\xf9\xde`\xc3\xb3\x0bn`\xbd\xb4\xdb\x8c\xbdyv\xa9-\xf4sn{\xd0\x8b \xca\xec\xa8o\xd1\xa6\x8bJ\xea\xa2\x9a\xc6+\xd9\xf0\xf6~~\xdb\xf8\x0c\xdc\xc5\xbc\xd95\xad\xdb\xc0\xee\x91\xffj\x05\xb0\xfa\xcelp\xff\xf0x\x023x\xfd\xe6\xfc\xe5\x13\x0b\x86\xddnu\x07\xe1F\x19\xdf\x84\xb2\x8b|\x05\xf0'\xf5\xf0\xa0\xe0\xbf\x8eU\x0d\xd9\xf5A)\xbd\xc1\xa3@D\x9b\x82\xc7\xb8\xc7&\xdf1 \xe6\x9d\xca\x9c\x97\xc36\xeb\xe9~\xff]V\xdd\xc0\xa6T\x168gM\x08\xd5\x1c2\xea\xdb\x1e\xa2\xac\x99d/\xb4-1\xf0^V\xca\x82\x99\xfb'\x97\x86\xcf\xc69\x85\xfb\x1a\xc3M\xfd\xa8)0}\x19\xe2\xe6\x81\xb8\xb4\xf2\xe6h-\"u\xf1\xa9\xac\xd5\x05\xde\x10K\xc1]\x98\xda\x87\x01\x0c\xff\x0c\xff\x8dd\x0e\x8c\x0f\x80c\xe3\xfd\x95\xb1/[R\xc5q\x17b\x03\xf0\x15\xbc\x7f\xf5\xed\xeb\x97/.~x\xff\xed\xc5\xf9\x7f\xbc}y\xf1\xe3\xeb?\xbc~\xf3\xa7\xd7\xc2\xb7\xde\xbe{\xf9\xc77\xe7/\xe5o=\x7f\xf3\xc3\x0f\xaf\xce\xc5\xef\xbdy\xfb\xe6\xfd\xd3\xef\x03\xaf5\xde\xbf'\x11\xfd\xa3\xe0\x94}z\x9f_\x17j\xf3Cu}\xde\xf8\xa0-\xe8\x1b\x9ab\x12='u\xa0:\xaa\xa3v\x8b\xf0\x94\x88k\xc9+\xff'\xf0\xc7\xb2F\xe0\xf5\xe4\xdbV\x9eO\xe0\xad\xd9\x8c\xb2\xad\x9f\x05v\x1a\x18\x12srRV\xa9\xa5Cy,6\xf4\xd7B\xe6\xaf\xa5\xde\xe7~\xf3\xb5\xf79\xfch1$\xc6\x1a\x07\xe6:\x87\xa0\xf5\xdd\x11S\xa4@Y\xe4}\"\x8f+Cb\xf6\x1a\x04=\xd7\x148\xd8\x8c\x1ed\x8e\xb3#\xde\xf4r\xc4\x19\x04\x90\x0d\x04H\x06\x83qXB\x1f\x9f\x1e\x9d\xc6\x8f\xedTUg;\xe4R\xa5\xf7\x10\xafS\xa1s\xf9\x90\xda\xd3\x06n\xd3\x0eI\xf8\xf5\xa0(\xbb\x0f\xa37\xd9}\xe2\xce'\x9e\xdeh\xf3#\xd2\x9f\\\xa6\xa7\xb2mJ\xef\n\xbdbCM\"\xbaVZ\x90\x9b[\xa6;\xa3\x13\xf2u\xbe\xcfjoArKy\xd1;\xd08\xefL\xf0\x8d\xde=\xb15o\xbdO\xb7\x80\xa0_\xb0,\xdb6\x0e`\xa3\xcd\xb9\xdc\xdd\xcd\xad\xe0M\xb1\xf5\x15\x8b\xb7d\x032\xec\x15\xa3\xb2\x17\x1ea1\xbaD\x9f\x0c\xf1]\xfcO\x98\x94\x9d \xe9\xe9\x19\xe4\xd6\x9f\xbahLe\x9f&s\x17\x99\x9eA\x06z`\xb1\xc1#\xc7\x87+ #\x9c\x16\x8d\xa8\xed\xca\xfdA\xe9\xb3\x07\x0c>g\xferu(w\xb4J4}\xf5\xf7\xaag|b?\x9bc\xcfe:\xf6\xa4c\x0f\xa4c\x0fJ\xcc\xc9\xc9\xb3K\xd3\xb1\x07\xf8\"\x05\xfe\xfe\x94\x8e=\x03\xe2\x0c\x02\xc8\x06\x02$\x83\x91\x8e=\xdc\xaf\xa7cOC\x92m*\x1d{\x16\x96e:\xf6\xe04C\x90\xf4\xf4\x0crK\xc7\x1e\x9c\x16:\xf6\x98}\xfa\xe2SY\xe7\xc5\xf5\xc5\xbe\xfc\xec7\x18\x18\x13\x8a\xde\x9b;E~\xfao\x91{\xa4\xe0+\xa1\xbd\x913\xf4/\x9c\xfbN\x8f\xff\xcb\xc6y\xd792\x9d;\xcfz\xad[!\xa1\xac\x9a\xf3G\xfd\xb9\xd4\xef_ms[i[\xcf\x18d\x8c\xb7\xda\xaa\xbf\xb0\x850.\x0cz\xf4\xe3)\x9d\x87\xbd\x16]x\xa0s\x96\x18f'\xf5-h\x85\xc10u\x19\xdf\x03\xe67\x01A/\xe2\xc4\xfc(\x08>\x0c>\xfc#N\x1cT\xa4\xe7M~\xdbA\xd8~\xf0\xe3*qb,\xd41\xb9\x85\x8bb0qB\x91\x998\xddG\x838jeL|\xc4'\x8b\x1d\x8a\n\xa5p\xa08I\xd0\xa1,\x86c\x04i\x183\x8a\x13\x07I\x8a\x13\x8e/\xc5I4Y\xe8k\x18G\"\xb6\x9c\xfd\xb2OS4\xab\xe7\xb9\xb8F\xd0GMG\x01<,N'\xd6[\xdc\x0b\x05\x90\x0b\x07\xf8\xe6xG\xc2\xdb\x1eGB)A\x84\xa4\x00\x04\xb7@\x8e\xb8\xa7\xf71\xc9f\xb7#\xc9`B\xdc\x80B\xcc\xa0\x8ao\x8dF\xafQ\xb7G\x8e\xc2(d\x9c\x842\x10\xf6\x9d\x87c\xc6\xc9\x83n\xc6\xe9\x94\xdd\x08b\x91q:es\xf0\xac\x14~\xe2\x02\xb1Y\xcc\xc6`m\x9ch\x087N\xa7\x14[\x08\x04\x8e\xd3)[\x83\xc3\xc8q:e;\x08 :N\xa7lP\x00\xca\x8e\xd3)\x1bC\x83\xe1q\nC\xe4q:]?\x16\x00\xd9\xe3d\xb7\x1a\xaas\x02\xdbDb\x93\xfcB,k\xd2\xf1\xe9Hj\n\xf1\x1c\x1a\x8e\x92I\xed\xa5dR\x1b\x92MkG\x92\xc1\x84\xb8\x01\x85\x98A\xbd/\x93\xba\xab#\xcd\x91\x82\xed\xfd4r\x04'4\x9e\x04'\xf1d\x94OE\xa7A.\xae\xb6\xd95\xf7\xa5\xc8\x01\xa7\x01OC\xfa\n\x9e}\xff\xe6\xf9\x1f.^\xbd\xb8\xf8\xe6\xfb\xa7\xdf2\xc0Ac\x1asx\xfa\xec\xfd\xcb\xd7a<\xd3\x90\xc6\x0c\x18\x80\xa8!\x8d\x19\xbc~\x15\xc2E\x0d\xa9EI\xcd\x13\x83\xec\xdc`\xc9.\x94\xcd7\xdb\xec\x1a\xf2bc\x9c\x1eM\xa5\x02\xb7\x88H\xc0\xd4\x90:\x07b\xce\xbf\xba\x14\x82\x15\x86\x145G\xa3T\x12\x03\xc51\xa4YM\xe3_\xbbYb9\x9a\x874\xab}l\xd1\xc5\xdc\x8d\x03<7\xe6\xe7\xfb\xfc\xda\x02\xfa\xf4>\xef.\x8f\x8d[\xd6\x85\x0d2\xd9\xe5\x05d\x0dO\xea\xc2X\xda^\xcbu\x18\xe8\xd8\xfa\x08m\n\xc5\xc6\xec\xfe\x9c\x11\xa8\xc0\xd6\xec\xae-\x96!s\x11\x93\xddq\xdb\xdf\xfan\x0dU\x8a\x81\x0d$\xf7\x1b\xee.\xd3\xb5\x8d\x9ay\xfc\x1d\x94\xb9{2{b\x89\xdb\x1fK\"=$^H\xc2E\xb4?^^ y\x96p\x12 \x05\xc4\x82\x01,\x0d\x0eEb\x01\x81\\H\x80\xa7\xd9\xa1\xe8~\x9a&\xdd\x9d\xb9\xf9~\x98\xec\xf0\xac@\x14q\x90&C\x12\x0bSzpi/_\xf6\x87\xbc<\xe4\xb5hM\x9c\xa4]\xaeETC\x04\xcbR\xb2 \x05zJ(\x04\xd1\x1c\x17h(\x81 @(\x0c\x90\xeb&\xa1P@*\x18\x88\xd1J\xa7o\x94L\x1fq\xb5\x91\xa9D@1\x03W5G\xa0\x8b\xa4\x9aH(@\xfej\x87X\x1dt\xb2\x16\xf1A\x81\xed\x1b\xfc\xa6\xd0\xcd\xd0\xf6jY\\\x84/l\x19_\xa4\xbfty\xf7\xd7\xac\xa8\xf3B]\xd0\x16'mi\x12\x16&KI\xf1T\x13KC3$d\x89\xb9\xceY\xfa\x98\xd5I`w\x14$\xda\x97\xdda\xe0w\x1ad\xba\xf64M\xe0jV\x89N\xb5\x85\xe7\xc2\xfcX\xda\x94\xaf&\xd8\xc2\xa1\x17\xae%\xa1\xd6\\\xf0\xfb|\x0d\xc9\xf8(\xe3s\xd4E\x91\xe0+s\xa1\xcc\xdfk\xad\xfc\xdc\x00\x8a\x9f\x1a<1\x05g\xb6\xf7\x0d(\xaf\x1e\x88=\xabk\xb5\xdb\x1b(s]\xc2.\xaf\xb6*\xdb@f\x01\xcc`\x01\xcc\xee\xa2\xa2\x87[\xe9\x04\x82j\x1e\\\xcb,\x92\xf0\x11q\xe4Y\x1e\x98\xab\xc5\xe7\x9cK\x99\x1e\x07?y\xe5\xe7\x88Z*\xbf\xbcL\x8f>\x87\x90\xcf\x9cX2i\x18\xe9\xa2!\x84\xe2w\xbbH\x1c,\x02W\x8a\xc0i\xc2s\x8f\x88\x1d!\x83q$\xbd\x18\xb4o\x82\xe5\x85 \x86\x81\x98\x99\x81\xad\x81\xc9\xd8\xbf%\x04=\x00L\xeeH\xb3\x07\xfb\x0c\xf7Z\x1e\xbfp\xf7oY\xa2Kt\xfc\x92\xbc\xc7mx]\x8e'\xbf~\xf5\xe2\x9bv\xa1M\x84\xd3_L\xe1\xe5\x13\\0\xc1%\xe2[\x14\x8ce0\x7f\xe2Od\xf2\xbc\xb7CO4\xd8To\x8dwetza\x1b\xc0h'\xc6w\x11l\x07\x9e\xee\xbe\x12#bv\xea\xd4\xe0.\x1ba\x03xv\xd6\xf0\xae\x1a\xdaQ\x974*\x82;(\xba{b;'\xb6k\xce\xad6\x11\xdc%\x03\x9d\xc5wG\xee\xce\xc8\xdc\x15\x99;\"\xbd\x1b2T@G\xf3\x95AG\xe4\x0e\x18\x10q`6yv=\x063|\xb7\xf3\xeet\x0c\x8e\xa3\xe6-\xb4\xbb\xe1;\xdbr\xbb\x1a\xb1\xa3\xb5\x0dg+p\xcfBB\x058^<\xf4\xb2!\x17\x0c\xb9TB\x8b\x84\xb9<\x96Y\x18\x81%\x11\xdc\xf4z\xf3\x0cY\x00\xc1W\xc7\x93\x1e\x99\xee\xbcO/2\xb9'\x93\xedE\x9b\x94\x9b1\xcf\x06\x89\xb8\x05;\xc2d\x0d\xa3\xeb\xd7oP\xceL\xb8=+\xd9\xb6M\xaf\xddo\xfb$\xd1\xf6\xbc$\xdb\x8b$\xd8\x9e\x8e+\x16\xf7\xce\x1e\xe8q*j\x81uf\x1e\xed\xfd;\xa0\xc7\xb1}\x9c\x9b?\x8d\x9b1\x8d\x9f#\x8d\x99\x15M\x94\x07\x0d/9\xe5H\x9a\xeb,\x94\xcfL\x9a\xc1L\x9a\xb3,\xdd\xdcA\xba\xb9\x1b\xd3\x89n\xee<6&9\xdd0\xfb\x920\x82I\x9e\xa3\xae\x05\xf3a\xc9\xe7\xb2\xc7\xf6\x95\xb6\x8a\xf2\x1f\xc4d\xab\x1ad\xa4\x1a\xf1\xf3\xe4\xa7\ne\xa4\xf2\xe4\xa0:IO\x05\xb9\xa4\xba\x94C\xe3\xe5\xec\xcb\x1e\x85\xe5#\"3D\xcd\xec\xe6d\xe7\x10gz\x9ads\x1a\xf2\xe3\xa4o\x1a\xbe!\xc8\xd7\xe4\xef\x8a4'\xd38\xf7\x12\xd2\x01\xf7\xd9qV\xd9d\xc1\xb4\x94,\x98\x96\xc8u\x99,\x98\x1e%\x0b&Y0\xc9\x82I\x16LD7\x93\x05#\xb6`BH't405\xe9M\xfb\xc8\xe60\xef\xbe\x13\x9f\xebqI\x19{ \x18\x1b>h\x1a\xc6\xc9U\x98\xf8\xf6\x8b,\xf9&0&\xb1\xa2n\x11;\xfd\xd4&\x05j{\xf3aH\xb8\xf6)\xfe\xac\xbf.\x01\xdfN\xf5=\xed\xa9A \xb2W\x81\xd4<\xb0\xb0\xdd\n\x11\xb6\xab\xef\x1d\xaaj\x80\x0f\x99\xcd2\xf90\xf3\xc9\x93\x14#l\x93\xf9l\x01\x08\xa6\xb7\x98a=\x9e\xca\xc0c\xd8\xbc@\xb5\x1c\xc8\xd6C\xd8\xfe\x05R\xde\x8e(;\x18\xc84\x10\xa4\xb8\x80\x16\x19\xc3.\x86\x90m\x0c~\xfb\x18\xa8&\x86\xecd\xa0me\xe0\xf2G\xba\x1e\xb4\x9b\x81\x1c\xc3\xd0\x9a `\xbdb[KY\x99\x10oS#\x9cX\x99\xeb){,\x90\xa5\xfe\xe4RX\xc2\xde\x86\x90\xcd\x0d\x81L\xf3\xa4\xed\x0d\xf7+\x02\xe1\x94@\x18\xe2\xd9\xe29&:\xf2\x9a\xc0N\x07r\xf3_\xce^\x07_\x8aw\xac\x9eU\xb2\xf8\x92\xc5\x97,\xbe\x01%\x8b/Y|\xcdO\x9c\xa9\x9c,>\xa0\x06\x8a\xb9\xd1\x0b\xb7\xf7d\xf1%\x8b/Y|\x8eP\x8b\x8f\x8aI\xf5\x8e\xa4O\xbd{om\xa3\xb8-\xe7\x8c\xf2O\xac\xa5nt\xc1w\xab\x0b\xec\x92:\xe8\xde\x8d\xef\xd7D\xd1\x9c\x08\xab\xbd\n\x97\xc5\x99c\x11\x9d\xd6\\!K\xdbH\x0b\xda\x90m\x02V\xbb\x80W\xb2\x86e\xe6@or\x93\xd5`\xc8\xa24K\x7f\x92\xd6\xda\x8e\xf8\xc5f\xa0+$\x13\xeaj;\x9eP\xf3K\xccH\n\xcb\x18\xbe\xa6U\x01\x86\xd2r2\xd2\"2t\xe9\x18\xc6\x90R\xc9\xac\x19,xf}\xb8\x10\x8c\xe83T\xf6If\xa9\x97\x05W4\x9d\xac\x98\xd5A\xa0,\xa1\x8eX\xc7>G\xac\x9e\x02\xbb\xb7@\x1f\x07\xdb\xc7X\xc7BG\x9cy\xe4\x88\x169H\xc4\x0e|\xd13\x8f\x8f\xa3\x87\xc3y\x9f\xf9\x05TX=b\xf5D^\"\x85Q\x18e\xa9\xe6uV\xeb=}p,\x0f\xb2jI\x1b\xab\x82\x91\xac\x0e\xc9R}\xe0V\x1aY\xea{t-\x91\xa5\xbe$\xa8\x16\xb2\xd4'\x99\xf5@\x96\xfa\x1c\x88*~\xec\xd9u>\x96i\xdf\xc0\x98\x9b_\xc9#T\xbf\x83\xdc\xac\xe8M\xea\xde\x8c\x1a\xa2\x06\x07o\xf7\x0b]\xac9J\xd6LG\xac\x9e\x02\xbb\xb7\x90\xac\x99\xa5\xad\x19_\xaa\xa2>\xd9\xbe\x84\xf3m\x93\x99\xb6\x99S\x81;\x11\xc84G}\x12\x0c\x06\xaf\xea\x04\x1d\xb9\xce{\x8fYa\x82\x8cr\xe7\xbdFW\x93`F\xc4\xe3\xc4\xcdX\xb8\\\xbd\x082\x13S\x9f\x18\xee\x9a! f\x8d`\x013\xab?D|\x9c:k[\nfw\xeaSD\x0b\x88\xee\xf3\xaf\x99\xf8u\x1bL\x96\x01\x06'\xfcf\x86\xd7\xa2\xf8\xf4\x1b\x1e\x86\x8cz\x0c\xddlE\xab0\x04\xb5iX\x87v\xdf\x0c\x19u~m\x1f\xd4\xf4\x0c-\xcf\xd1\xf0\x8c\x15\xca\x9c\x9e\xac\xa9\xc9\xc8r\xcb\xe8\x180;\x07\xfc\xfc\xb6\xccN\x02\xb7\xa3 \xc9l\xbb\xfc\xc7y;\xc4\xb2\x19m\x19\xf9l9)]\x81/\x10\x9e1\xb9\x97\xe4\xb1]\xe8\xcb\xfb`\x8d\x01r\x8a\xd3\x93\x9b\\\xb7\xac\x8e0f\x13\xb9b\xc9\xce\x00\xabC\xc0]\xab\xac\x8e\x01\xafs\xc0_\xa5\xcb~\x96\xb3>\x97\\\x9d\xe4\xda\xe4\xadL\x96\x10\xa8\xb5\x01\xb25\xb9\xc87)\xef}\xfb\x1c\xf51\xdf\x87\x02Y\xf5\xbd<}\xbc\xe8\xbc\xf9>\xcba\xc9\xf4\xb6'\xca\xa8\x1a\xd0'\x84&\xa1t\x08\xa1=\xc8\xa1e,]RW\xcc\xff\x88\xbbx\x90.\xfe\xd0\x12\xa7\xe6=s<\xf1\xc5\xc5Z\xca\x91_\xa0\x96\xadxi\xdd\x07L&2\x85{\xef\xb8\xd0c\xc6M\xdc\xee\x0d\x88\xfc>\xaf\xf8Ib}@\x1bV\x02\xb8\xc9\xc2\xf5-X2\xf42\xc85\xc4\x19<\xc1\x98\x96f\xea\x17\xf3z\xfc\xba\x0f\xdfwI\xe0\xfb\xbe7\xfc \xfe\xc0\x1b\xc4\x0d\x97\x00\xd0oI\x0c\xebw\xafq\xee\x07\xe4\x10\x7f/#\x02\xfao)&\x00\xc0\xff&\x15\x06`\xe9\x1e\n\xf3\x04=4\xf6\x0b\xe1\xfb|\xda;C\xf9f\x18\xa7\x06j=\x02\xc3E\xc0\x10\x17\xd0{\xb2%\x81?\x86\xd1;`\xf6\x10\x80\xe9\x89\xe1\x8c\x9b#z\x8a8\xa2\x04\x0c|!\x03W\xd0\"\xef\x0b\xc3\xf7B^\x053:\xc0\xbb\xfae\xdf|\x0b\xbe\xe8\x15\x15\x19\xba`\x893/\xe8\xf5L^f/\xd1#\xfe6\xb0\\\x90\x83%V\xa8\x83%*\xe0\xc1R \xec\xc1\xd2\xcf /q8\x84\x97\xdd\x00\xb1\xef\x17\x95/4\xc2\x12+@\xc2\xd2\xcf*,z\x9ay9\x8d\xa7\x1f\x7f\xfe\xf1\x82(, C),q\x841#\xac\x02\xe5wU\x1e\xf0^\xa0\x11\x17\x96\xb0H[K\xc9\x9cO\xe6|K\xc9\x9c\x0f~a\xee\xf6\x9f\xcc\xf9d\xce#\xc4\x12t2\xe7\x81#\xaad\xce\x93vV2\xe7\x1bJ\xe6|\xbc\xb0\xe8i\xe6\xe5\x94\xcc\xf9\x01\xc5\x98\xf3\x94G\xa7y*\x97\xfe@lK\xbcp\xec\x86\x9d\xdfL\n\x99FD\x80\xb6\xa5\x99\x87=\"d\xdb\x12\xc3\xcc\xa3\xbe\x03D\x10\xb7%\xc6\x87\x80\xf91\xe0\x84u[\x92\x06w7o\xf1\xda\n\x82\xf6\x02/\xdc\xdb\x12c\xaf\xe8\x93[`d\xe8\xb7%2\x00\xdc\xd2)\x1bA-\xf91\xf1\x03\xc3IV]\xe0xdx\xb8%i\x908\xc9\xd0\xf6@\x1a*nI\x1a0n\x89\x0e\x1b\xb7\xc4\x9e\x08T\xb4\x95%6;jO\xeaS8\xa8\xbcyF\xfea\x1e\xe8\x9d\x19fn\xe9D\xba\x85s\xc8\x05\x99\x10\x80g\x92v$\xb8]p$\x90\x06\x08%\x02\xc0\xbcup\xc49e\x8e\x89?C\x1dq\x07\n\xe4\x83\x05\xd2\x01\x13\xddR\x8c^ \x07~Y\xe2\x07\xb3[\x12\xf4W\xd0Oyx\xbb%F\x90\xbb\xa5S4\x9b\x1d2n\xe9\x14MX6\x10\xde\x92,\x1c\xde\xd2)\xfa\xc6\x0d\x90\xb7t\x8a\x16\xd0!\xf3\x96N\xf1mA\x10\xbd\xa5S4\x82\x19Vo\xe9\x14\x0d\x90\x05\xda[\xe2\x87\xdb[Z\xbe\xdd\x0b\x07\xe0[\n\x85\xe1[bn\xd4\xdc\x0d\xfag4\x15\x89P}K\x12[\x80\xbeyv\x94l\xc4d#RO\x83`\xa0@>X \x1d\xb0S\xdb\x88\x9c\x14\x01\x96lO\xc3\x89\x02,\x91\xe9\x02,\x89&\x96lZ\x89\x12\x08X\x12\x0f$/\x99\x80\xa5\xd8\x94\x02\x96\"\x13\x0bX\x8aL/`I\x9ed\xc0\xd2\xacT\x03\x968\xe1j}Z*\xed\x80%Q\xf2\x01Kl\xcf\xed\x90\xc4\xf3N\xac>\x98I ,E7\x87wWc\x89\xf4\xd6\x0d)\xbaM,\x11I/C\x97L_\xd0\xe7\x17\xba-\x94\xb4Q\x94\xd0 \xc8\xa9\x9f\xec\x80\x93\xd6\xc0\x12\x91\xdc\xc0\x12C\xf7s4>\x95\xee\xc0\x12o\xe7b\xecZ\x8cV[\xe2\xb4\xdd\x12[W\x88\x16\x81`\x01\x90\xc1\xd6\x8e\xd8\x9d\x07\x91\x00\x80\x0e\xa3\x1c\x92H\x10 \x13\x06p\x02.\x87t\xda\xe6HvAI\xfc&\x83\x1d\x15\xe19$\xca\xbd>$\x91\xd0$\x06<+2tH'hK8\x15\x83%\xe6r\xe2.$\xa6\x1e\x11t\x96=O\x99\x1a\x84\xd9a\x10t\x1ad\xbaC\xd0y\x90\x08\x00\xa4Z\xe3t\x0d\xe1\xeb\x8bE\xb5\x85DWH4\x85@P\xbc\x95 1:b\xf1V\xf0\x10I\xed\xd3\xbc\xcf\x87?\x1dH\x16a\x89\xf8J\x98;\x9d>\xc2R\xd8\x12\x0bX`\xa4\xf2\xa0U\x06\xa9!Yrf\xacER\x1f\x92\x9d\x01V\x87\x80\xab\xfdX\x1d\x03^\xe7\x80\xaf\xeb\x96\xfd,G\xb3ItZJ_\x13\xfa&OC\xcd\xd2\x19?'\xa612_\xc6\x84O\xa7\xed\xe2\xb3f\x98\xb6<\xeb\xb0i\x13\xed0\xd5\x04\x1eh!\xaaWp=\x82]\xff{\xd5\x92_\x15ya\x80\\\xe0_P\x15\x86U`\x00\xceG.\x007\x7f\xbch9/Ho.kjfJ\xc0v\x08\x98\x0e\xe1\xc7\x83\xd7I\x01u\x03\xc0\x1c.\xc00\x84\x8e\x0b\x9a\xf3\xc3\xe4\x02C\xb1xuK\x1c\xe0\xc6b\xe7\xd3Q\x04lm\xc6\xca\xf0\xfb\xaf\xd8\xb3\xd7\xb3\x15\xb3\xdc\x87\xa4yC\x9b6\xa9\xc8\xe5\x80h \x17k&\xa2-\xe4\xc3\xb3\x02\x80\xac\xd8\xcf\x93P\xa4X\xc6\xcb\x80\xa7xp\xa9\xd86R \xa8X\xbe~hS,G\x06`)\x965\x01C\x8ae\xcb\x03\x17\xd1p\xa2\xb8\xef/\x04\x12\xc2`A\x11F\xda\xe2\x9ba*\xf5\x9cv\xc11\xdd\xc3.\x18\x82\xaa\xd86\xe2\x17K\xdek%b\x88\xa8\x01b\x81L\x18\xc2\xa3\xd2z\xc80\x14B\xb0\x88\x10\x1e\xc2\x07\x84DA@\x06\xe3Ob9x(\x0d6.\x831T\x8cY~_\x89\x02H\x0c\x85\xe0K\x9e\xee\x0c\xb61\x11\xe8\x01\x854\x84\x8f\xbe\"\xd8\x02\x02M\x18\xb1C\x81\n\x1eh\x02\xaa\x07\xf0\xd5\x9f\xb2#\xf7\xdf$\x14d\xca\x8e\xfcw\x97\x1d\x19\xf7lG\x18\xa5\x0b[\xdc\x81i<\xc3\x84\x0cN`rf\x11\xf3\x8a\x98\xba\xf3\xd8/?i\xc3S\x965j\xd8teL\xd6(\xde\x94\x03\xc3\xcbt\xcc\x10\xbf\xaf\xc7|\x07\xf6\x03\x93\xe96\x9db\x81\xec\x03\x82\xad(\x90_ b=\x9e\xa0\xb2|0G\x00\xd7A\x00T\x1b\x80l\x07\xd0\xb1\xff\xe4b\x83\xde\xcc\x08\x86\xd8\x07\xa3\xfb\x97\xfa\x0c\xedD\x80xGBH\x82Lg\x02\xccq(x\xf8\xb1\xe3\xf2\xb9\x8e\x05 c\xf0\x89\xe1\n\x05Q\x91#M\x1d\xcb\xfd\x11\xf5l\xd6\xa1\xf3\x03#f~\x81Uw\x1f\xf7\n\xcc\xeb\x18\xe0\xf4\x08X\xbd\x02 \xaff\xa0\xfd\x1au=\x03\x8c\xb9\xe0\x88\x8eKb\x89\x14xbe^\xd9\xf4\x1e\xf4\xc7\x1b\xd1\x0e\x0c\xe0\xb4\x9el5\xdf\x99\x01t\x84\xf9\xdc\xe6\x90\x8e\x03X\xe0#\xcb8:\x80\xed\xec\x80\x05\xdaL9>`\x81o\x84\xe3\xbb\xe7rg8D`\x81\xcf0b\xb4\xe7~\x82\xe7(\x01\x96\xb3\x04f\xb7g!\xc7 \x04b\xaag\x18\xb4'\xdd\xf0\x03q\xd1\xf4N\xd2c\x8e\xc6@\xa7\x9d\x1e!\xbaW\x90vz\xfcA\xffNO\xc5\x13\xdbv\xff\xbc\x05hY\x8e\x1b\xe0\x0b\x99\x8e\x04\x96:q\xb0w\x18Q\xbfBg\x0e\xf6J8\xc27\xca\xa9\x03\xc0C\xef\xb2cx\x07~\x1fj\xf2{\x7fg\xfb\x85\x80?\x13\x98\x8b\x8d\x11\x91+\xfc \x1d}K\xfa\x8b@\xfe\xd5@7\x17\xf6\x1dMXz\xa0\x93\xf1>$L\x97\x85\x02^\x03a\xae^5\x15\x00\xd2\x06\xc2&B*\xf3T\xbe\xed{p\x95\x12a\x12\x0b\xe9zF\x80\x04\xa33\xc0\xe9\x10\xd0\x97\xfa\x96\x96\xfb \xadV\xc5\x1e\x00/'\" \x82ri\x01\xaf\xe3\xb4\x85\xc4\xf0\x18X\x9a\xf95\xdc\xd5\x05\xd4\xd4\x0cO\xca\x13\x9e\x9d\x88\x15E\xae'z5\x91k\x89\xec\x00\xd0\x9d\x00\xde*Z\xe6S\xd4\xfaYj\xf5\x04\xd7\x0e\xbdr\xc8\xceR\xab\x86\xb9ff}\x87\xf2\xb8\x01\xf5\x01\x8c\xb9'l\x11\xe5\x83\xbd\x1f\x0eL\xc4v\xd6\xb9\x95f=+<\xd0s\xef,\xf5\xac\xe7\xc0J\x0e\xad\xe1\xc0\xea%\xc6=\xb8\x8c\x82k5\x9e\xf1\xd2\x0e\xec\xd0\xbcd\x8c\xcdt\xc2\x93KJ\xc85\xb4|\xd8\xd3\x1d9Z\x04\xdf\x1d\x1e\x1bp\x03;2VnZ\xc9!:B\xceV\xec\xfa\xaew\xe73Y\x02\xd3\x89?#8\x0eu\\s\x1c\xd6\x11\x86\xbf\xc71\xcdR\x94\xa8\x87\x18u@\xc7\xb2\xa3 {Q\x0e\xe6Vz\xe3\x05\x13v,G;\x94\x91\x08\xb5\xa0#\x99\xe3@\xc6\x1d\xc7\x1e1c\xf7\xc6\xde\x11\xf1i\x9c\xa9C\x98d\x81]\n\x04\x1c\xbf\x11\xb3w\xd9\xa0\x0d\xf2zw\x86\xe1\x1d\xb8\xc6\xb5\\\x99\xd7\xeb\xa8yu*\xf7\x0cy-\xeb\xbd\x8e\x0d;\\\xc9\x993i\x0d\xcf\xb1\xeaq\xa8J?\x17tBJ\x99\xcdw\x90\xd2\x8eQi\x9bB\x0eP)/\xdc\xd1)\xe5B84\xa5\xec\x02\x8eK)+\xdaA\x19vL\xca\xbe\xb7\x80\x03r\xecx\x14\x18\x1e\x8bl\x14\x88#\xd1\xaf\xe1zL\x06\x8e\xc3\xb4C\x0c~\xfa;\xdc!|\x8e:\xdb\x9e\xd3F2\x90\x0e8B(~\x87\x9b\xc4\xd1&p\xb0 \x1ck<\x87\x9a\xd8\x91\xb6td\x14\xcb\xfbE\x0c\x0313O\x97\xde\x85\xf0f1\xb9#\xcd^\xd0k\xe5?:\xcd\xf1RM\x13\xd1\x0c\xbdS\x9e\xb3sS\xed\xda\nk\"\x9e\xfer\xa2\xaa\x88S5\xc3\xe9\n\xe1D=pV\xf5\xef\x81p\xff\xdb WZ\xd9\x1b\xab\xe0\xcd\xad\xd7\xcd\xad\xce=\x19\x90\xf6~\xaa?\x18\xc1\x9b\x8c\xc9\x02E\xe772\xab'\xf7\x87\x02S\x04\xbd-$m\x91\xd1\x92\xf2\xdc\x0d\xca\xd8,w\x138\xf3r-p\xe3\xc7\xe2\xe1\x9f\n\xef\x9d\x07\x991\x1b\xd2=v\xba\xc7\xfe%\xdfcO\xdd\xa6\x02\xad\xb3\xc0 \xce3\xdd\xbc\x93\xcd?\xd5\xbc\x13-8\x1b\x02s!0\xc5\xe2X.;\xb9\x16\x08\x96sDL*\x11\xbf\xd9\x8e\x91\xa9\xde-k~\xb0^\xdd\xdaM\xde\x0f\x8e\x8f#\x94\x0d\x85?3\xb4\xa3\xbc\xcfL\x8e\x1e\x84=\x05\\\x9b\n\xbcv\x15,d[y\xfb\x84\xd8W\xbeg1\x1b\x0b\x90\xab\x13\xd6\xcc\x80\xe9u\x89}o|\xd4\xc7\xaeI\xa6W$\x02E7\xff^,x\x15\x12\xa1\xed<\xd7\x1f\xb8<\x1c\x85\xae=\x96\xbc\xf9 ^s\xa0W\x1c\xf3<\xa1\xc1\xf3q\x90O\xaf\xe9\x1d\x8b\xbc\xd8\xa8\xdb\x989\x86\x1cs\xb9_\x0f\x9d@\xcd\xf1\xb5\xbb\"\xb8\xbc3+\xb6\xab\xdd\x9e\x9bS\xee\x9d\x99c\xf9:\xdfg\xb5=\xe5vW\xb0\xc3+\x85\xfaF\xf5\x17yVU\xe5:7/\x99E\xe2\x0e\xc5\xea\xb6V\xc5\xd0\xb3\x1a\xd9\x9b\xff\x9e\xf4\xa6\xe5\xad\xa7\xb8>Lo\\\xb7z\xbe\xbe\x15\xbc)\xb6w\xb6\xa3`\xdd\x92\xca\x9e\xaf{\xec\x1a=VMZ}\xb1\xdch\x84\xda/\x1f\x97\x1e\xaf\xc1\x08\xd9\xee{\x06C\x93O\x1a#\x19\xe0M7\xcd>\xa8\xfdAU\xaa\xa8\xcd\x0d\xc9A}\xd2\x7f\x1c\xb02\x7f1\x0e\x96^\xb2\xdcn\xfa\xf4\xb6 \xfd\x8fjWV\xab\xcb\xacR\xab\xde\xae\xfd\xe9\xf1\xa5\xaa\xb3\xc7\xab\xa7\xcf\x9e\xbf\xfa\xf7\xa3:\xdc\xbdS\xd5^\xbf\xc7\xde\xc4\xd7\xe5f2h\x81\xf5\xd7\xea\xb2my\x1d\x1c\xeb\xbc\xb8*\x89\x07\x90\x95\xcf\xd8\x95\x90c;=\xc9>e\xdbc\xc4\xdc\xdc\x1f\xca\xf2\xea\xa2\xdcOT\x1ck'\x1b\xbc\xd7\xbd{\xda\x0b\xe4\xa1Q6\xfa\xbbow &\xb9\x899\xdbY\x87\xe7\xb2<)\x90\xfb[=Xo\xf6\xad\xa5\x9f\x15\xa0\xc5d\xd4\x9b\xb6\xef\xedJ^g\xdb\xf5q\x9b\x19\xac\xcd\x0f\xea\xf0q\xab\xe0P\x96\x08\xa6\xfe\xfcFY\xfc\xc4\xbah\x85\xb4\x990\xcc\x0b8\xef\xd4K\xfb\xb3_\xf6\x0d\xefJ\x7f\xba\x91\xa7Y5\xee\x0bNUo\xf3\xca\xdc\x11\xbb\xe7\x87\xbd\x11\xf5\xa3B:2\xd4\xf5\xd3.D\x1b\xc1Z?V\xfbl\x1d\xd2\x1e\xb8t&:yp\x06=\xb8?v~S\xb7/\xb5/\xc2\xf5\xbb\xb7\xcf\x1bn?\xe9?tB\xe3 \xcc}\xd9r\xc3\xa5\xd60\x1c\x8a\x8c\xd8nd9\xd9\x13\xde\xacG\xb1\xec\x12\xde,\xe1\xcdB\xb3w\xc93eB\x13L\xfb\x1b\x8d&Hx\xb3\xde\x1b oFr\xf9\xff!\xde,\xbc\xb7\x8d\x99j[G\xcf\x90\xf2\x90_\xe7E\xd6l@\xedc\xceSr\xd6t\xa3\x9eX\xb9\x99\xb6\x95\x9e\xa9\xf5\xcdo\xbenZ\xb3\x1ao<\xaf\xfaf\xf0\x19\xd4};\xeb\x83\x16K\xf5\xe1\x0c.\x8f\xb5\xbb\xd2}\xff\xe2\x0fg\xf0\xd9l\xb8\x9f\xd4\xa1\x86|\xac\x14\xebr\xfc\xcd\xf1'\xf5\xde|\xa9\xeaZ\x1d\xe0\xc7?{,o\x1av\xd7\xb5\x1aE\xe0\x0dOe\x02C\xac\xbe\x9d\x7f\x96Eu\xafw\xae\x85'\xc5\xf9me\x01!\x9fsm\x824wY\xf6\xb8a\xad\x86\x7fm.u\xbe3[\xfe?<\x9e\x8c\xf1ks\xb5^\x94\xb5\xb1b\xea\xdb\nn\xd4A\x1f\xea\x9a{\xa5\x15\xc0\x9f\xd4\xc3\x83\x82\xff:V5d\xd7\x07\xa5\xb4\xc9S\x16\x88\x15S\x1e\xf4\xb8\\\xe5\x87\xaa\x9e|\xc7\x18\xe9;\x95\x15M\x8bm\xb3\x9e\xee\xf7\xdfe\xd5\x0dlJU\x99F4\x98\x19\xcd\xbcR\xba9\xdd\x1ch\x96\xdd\x0b{\x1a\xedac\x9ax\x12c ek-\xaaj\x80\xbdi\xed\xb8\x86\x95\x1a\xe4c\x04\xd9\x14\x98\xbe\x0cq\xf3@|\xa7\xd1\x9ek.>\x95\xb5\xba\xc0\x1bb)h\x97P\x96\x89q\xf4\xa9\x0b\xf4\xde\x02h\xe6\xc0\xf8\x0086\xde_\x19\x96\x8a%Nn\x0d\xca\xab\xc5{k\xea\x7fc\xbe\xc5\xca\xb2A\xfa\xe8\xa6\xc4\xf6\xdaa\xafR\xa9\x12:\x92z\xf6\x82\xcc<^\xbf)I\xfc\x80\xbc\xb7}\x9e\xc1)\x85\xf28YbNN\xcaN\xb7\x14\xc8\xecd\x89>\x10X\xc2\x91\x07\xb8!1{\x0d\x82\x9e\x03\xb02D5\x0f2\xc7\xd9\x11oz9\xe2\x0c\x02\xc8\x06\x02$\x83\xc18>\xa2\x8f\xfbsI\xb9\xc7~\x8et9,|\xb4#\xe1\xd7\x83\xa2\xf4z\x8d\xa7\xc4\x9dO<\xbdq\xcf \x82@\xb8M\xc5\xf8\xac\x83\x0c\xc7\xfe\xec\xb1\x17{J!W\xea\x90\x10O\xf7\x94~fY\n<\xe6Af\x987=\xf8\xc2\xd8\xc1>\xa5\xa0\xcb}J\xbf\x18A\xd2\xd33\xc8m\xec\xd6\x0f>\xcc\xf1\xf4\x07\x190\x9d\xffS\xe2\nH\n\x10\xa0U\xa2\x05\x0ex\x9f\x1b` \xa6d\x8e=\x97\xe9\xd8\x93\x8e=\x90\x8e=(1''\xcf.M\xc7\x1e\xe0\x8b\x14\xf8\xfbS:\xf6\x0c\x883\x08 \x1b\x08\x90\x0cF:\xf6p\xbf\x9e\x8e=\x0dI\xb6\xa9t\xecYX\x96\xe9\xd8\x83\xd3\x0cA\xd2\xd33\xc8-\x1d{pZ\xe8\xd8\xc3\xc9\xcb\xd8\x15\x9d\x06!\xeb\xa4\x0e)j\xc0i\xc0\xd3\x90$\x89\x9eq\x12\xa4\x7f\xc6I\x90\x14\x1a'^\xaah\x9c\xc4 \xa4q\x92\x9d\x1b,1sP\x0b8\x92\xd9\xaaq\x12\x81\x15\x86\x145G\xa3T\x12\x03\xc51\xa4YM\xe3_\xbbYb9\x9a\x874\xab}l\xd1\xc5\xdc\x8d\x03;e7\x93]\xb0\x1c\xed\x90\xa4\xed\x15%\x01'\xb9\xa1I\xc2G\xa9\xc1q\xea\xd6\xd0\xa4\x8c\xed\x90\x98\xfb\x0dw\x97\xc1\xd2\x18\xe3\xc4\xdfA\x99\xbb'\xb3'\x96\xb8\xfd\xb1$\xd2C\xe2\x85$\\DD\x81\xdd!\x89\x84\x02b\xc1\x00\xa7|\xe8\x98\xc4\x02\x02\xb9\x90\x80J\xfd\x8c\xd3\xfd4M\xba;s\x13\x013\xd9Q\xb9\xa8q\xe2 M\x86$\x16\xa6\xf4\xe0\xb2\xa7r\\\xe3t\xc2v\xed\xbd\xc5\x85\x87$X\x96\x92\x05)\xd0SB!\x88\xe6\xb8@C \x04\x01Ba\x80\\7 \x85\x02R\xc1@\x8cV:}\xa3d\xfa\x88\xab\x8d\xb4\x9ea1\x94\xea\"\xa9&\x12\n\x90\xbf\xda!V\x07\x9d\xacE|P`\xfb\x06\xbf)t3\x1a\x1e\x06bf\xa6J\x9a\xf7_I\xd3W\xf6\xe2\x99\x05\xc9W\xbd\xb2RFL\xf6\x873{H\xd5\x0di`5\xfbQ\xc6\xce\x86\xcdU\xae\xb6\x1b\x97ISm\xf4\x8ex9L\xd6I\xe6'\xffV\xd5\xe6\x9b\xcf\xeel\xf6GqU\x8c\xe9\xd6$\xd9aggZM\x15\x8cF?\x0e\xb7\x96Q\xfcL\xf3\xcc\xc3\x17j\x7fPZYm\x9e\xc0~\xab\xb2J\x19[\xffC\xb5\xf9hQ\xf4\x1f /\xaaZe\x9b\x87Q\xc3\xba\xccXx\x03\x98\xb8\xe1J3\xcc\x8f@\xe0\x11\xdbD\xf0\xc6\xf0xC\x88\xe6\xb2\xa6\x0ds~\xe8\x0f\x12\xd6\x83\xf0\xe3\x05\xfaH\xc2z&!;\xb8\x00\xc3A<\xdc\x90\x1d\x7f\x80N`(|7N\xacE\x8d\x0d\x1c\x1eF\xc3b\xe7\xdb\x93\x89\x80\x98\x19+\xe3T\xb63\xe38\x01T\xcb\x81l=\xf8u|\xfb3y\xbc\x00\xc6\x11\x03H\x94\x1b).\xa0E\xc68r\x80oopD\x87w\xb0fb\xe8@\xc4\x08\xd4\x08\x84e\xc4~\x9e\x8c\x14\x88e<\xee\x17\x19\x03\x81\xaaO^4Cl\x1b\xa9\xb8\x84X\xbe\xfe\x08\x83X\x8e\x8cX\x81X\xd6\x04\xea?\x96-\x0f\xbfO\xa3\xf5\xe3\xbe\xbf\x10\xee~Zv,\xc2D\x9b$\xbb\x87\x96\x0f\xee\x02\xf1:?\xe2O\x89\x1c\xb3g\x81$\xf8\xb0p\"| \x92\xe1\xc3\" \xf1\xa1\x9b\xac\xf3\x93\xe2\x03\x91\xdb^4u\xfc\xe9%f\xcc\x9f\xe8\x8c\x14\x82\xc4\xf9@\x7f\x0d\x18_\x042\x89>\xf0>\x04\xcc\x8f\x81c\x17|\x82\\\x89}\xe2\x01\xae\xe3\xb2L\xe2or2Mz\xdfd\x82\xab\xa32N\xc2\xbc\xac\x93\xc0RcCZ4\xfb$H2P\xc2\xec,\x94>\x0e\xfcL\x94\xc0\x0e\xd6\x12Lh\x8eUo\x89\x15\xa0\xc5;JX\xf2\xf9~\xa6\xc4\x0d\xcab\xea\x0e\x10\xe8\x0f O5\x1d \xc4\x0e\xd4\x0e?&\xd6QqH\x02i\x80P\"\x9aD\x01W\x92y\xe1\x88?5\x1dq\x07\n\xe4\x83\x05\xd2\x01c\x1eT\xd1W8AU\xa4\xeb\xbb}\x90\xdfQ\xea\x8eeH,\x17N\x9f\"ZB\x8aZ\x90\x01\x13\x84\xf3\x90\xaf\x9f\xd8\xf1 \xa7\x90\x80|\x1bef\xc7$\xf9\x04\x0b\xdd\x03\x99!\x13DY2\x81\x9b)\x13~Yr^*s&\xc4d\xcf\x04V\x06M\x90g\xd1\x84_\xaa\x90\x83\xd3\x9ad6I\nKf\xd6\x84%\xb2k\xc2\x9c\x0c\x9b \x14\xdab\x996A\x90m\x13\xe8\x8c\x9b@\x16\x1b\x00\xbeQ\xc35f\xd2\xf10\x1d\x0f\xfd\x94\x8e\x87|\x1b<\x1d\x0f)\x12\x88\x1dd{f:\x1e\xb2\xde\xe1\x0e\x14\xc8\x07\x0b\xa4\x03\x96\x8e\x87\x13\x8ah )\xeat<\x94o\xa3\xe9x\xd8\xa3S\xcb9\x1d\x0f\xefU\xc8\xe9xH \xed\x97|<\xe4G\x17\x01\x7f\x02\xf2\xec\x08f\x81\x06X\xfa\xbb\xac}\\\xf8Ej\xff\xe6N\x97\x05\x8b7\x80\xb8\x80\x03D\x14q\x00\x9e\xd9\xcb1u\xd9\x05\x1d\x80\xf7M`~\x17$\xc5\x1d\x80\xffm\x10|\x1f\xd8\x85\x1e@\xd6\x00\x106\x02dE\x1f\x00\xf8Hj\x9c\x84}\x81\x88\xfe\x80\xb4\x08\x04\xf0\x15\xc0\x98\x9cB`\xd7^\xb0$(\x08\x01\xf7\xdc8\xae\xea\x1a\x13\x0f%\xcef\x87\xa3\xc9\xb9\xd7N\x8e\x08\x8c9N\\\xe49\x9b!\x86P\xa7\xf1\xe88qQ\xea8I\x8aK@\xcc\xc4\xe3]\x9f9\x12\xb3\xe7\xee\xf9}\xe2\x16\x9c\x80y\x0d\xa2L\x82!\x89\x8bO\xc0\xfd\xe9N\xc9%\x0f\xc4 \x0ddG\x96\x8e\"n\xe9\x1cEH\x0f\"%\x08 \xbc\xbds$\xb9=\x19\x93|e8\x92\x0e8\xc4\x0f:\xc4\x0e|\xd4m\x9f#\xc1\xad\x9f#:\xc2\x01\xa7\x08\xb9D\xc8\x83\x1f#\x81\x93\xa8\xa0\x05\xdcS\xb7\xc8\xb8\x06\x9c\xee\xa3i\xfcD)\x1dq\x03=\xd8\x0c}\xf1tS\xe2\x85\x89\xe0t\x1f\xe2\xa4\x02Mp\xba\x8f\x96I\x8aa\xc0=\xb5\x89\x11\xec\x82\xd3}4N\\$\x03\xee\xa9a\xbc\x80\x1b\x9c\xe80\x1c\x9cN\xdf\xaf\x98\xd3\x193\xde\x87\xc5\x8bS\x8b\x03\xd8\xf58@n\x96I\xcd\xb1_\xe0\x81\x84\xe5\xe7w\x14c\x11\xf2\xfdj\x8e\xd2ID\xb0\x06-\xa5\x93\x88\x97\xe4K\xc2\x91t\xc0!~\xd0!v\xe0\xef\xfb$\"\xab\xfb\x01\xadD8\x99\xcb\x1d13\x98;\x8a\x9a\xc0q\xd3\xd7i&a-\x10\x9831x\x18\xc4!I\xd2V\xf9I\x90\xd0\xcaO\x82TW~\xe2%\xc1\xf2\x938=\x96\x9f\xe4G/K\xccL[B\xaed^.?\x89\xf1Z\x12\xeb\xb8\xa8\xc5\x18\xb1\x10Y\xd9\xa6\xfb$\x16\x16D \x0c$\x19\xa9\xfb\x14%8\x88\x13\x1e\xc8\xb2V\xf7\xe9~\x9b\x19c5p\xb3\\\x0bX\xc6\xd52\x01Q\xf6\xeb>E 9\xe6\xc0\xb6\x97e\xc8\xee\xd3=\xb4q\xcf\xacs\x02\xf2\xe5-]\xd8B=\x18!\x1c\xf1\xfa\x10j@\xa1\x80 BH\x10\xa7\xfb\"\x84\x051\x02\x83X\xadw\x7f\x0d\x94\xeb\xbb\xc5\xb5]\xac\xae\x8b\xd1t\x11\x82\x95i\x10\x98\xa3\xe3N\xde:\x19\x8e\xb7}K\xd6,^\x93X5U\x80\xffu\xdeW%\xf5U\x80mI3,h\xb62\xe4\xab@\xf6\x0e\xc1\x94\xa0%\x81\x0ea\xef\x07\xec\xce\x83H\x00 \xd5\xfe\"A\x80L\x18 \xd7\xf5\xa7m\x8eD\xb3su:\xb3\xf6\x95L\x9b\xcb\xd4\x91Hh<\xa5`)Bk\x9f\xa0-2\x0d\xcdl\x00\xf3\xd3\x9c\x8b;\xe1\x17\xa9K9\xee\xfd\xd0\x925^ \xbe\xce\x0b\xf8j\xbd@H\xcb\xf95\xda\xe2\xf9\x9d=Nb\xcb\x8f\x91T~\xe2\xf8M\x89\x9dQJ\x89\x9d\x07\x14r6\x86L\xa8S\xe5\xd8d\xb9\xff\x18\xc2\x0b\xbb\xf4\xa4\xce;\xa1\x9bN\xe8\x90\xe3\xbb\xde\xa2\x9clK\xd7\xa1\x01\x89g\x8b1T\x8cY~?%\xcb\x18^%\xc1\x97<\xddY\xb0^\xcd\x84\xddd\x1bf;d<\xce\x96\x11;\xd4\xf5\xd2\xd6\x03\xe9d\xe6J\x88\xbc\xcf\x8b\xb5\x01\xe4U\xbb\xb2\xfa\xaa\xda|\x84_\xaf~\xfbO\xa9\\\xc8\x84\xc8i\xe5&U*\x17\xd2=\xc5\x0b\xdaJ\xe5B\xfa\x7f\xe5\xb0K\xe5B\xc6D\x19-\xc9\xaa\xc4\xa6J*\x172\xfeQ\xd0/2\x8a$\x95\x0b pdDP\xc4\xb2\xfe\x9f\\.\x84\xde\xcb\xc7\x1f0\xf5\x07o\x14\x94\x87\xfc:/\xb2f\xa3m\x1fs7\xd9g\x08+\xdbYmMf\xda\xb6}6,:\x88\xbc\xf0\xaa\x80s\xe5\x8a\x0f\x9eA}\xa3\xbf\xdd\xa4%\xfc\xa0EV}8\x83\xcbc\xed\x0c\x84\xf7/\xfep\x06\x9f1\x15\xd6T;\x84\xbc\x86\xba\x1c\x7f\x1b\xfb\xb4\xb6M.U]\xab\x03\xfc\xf8\xe7\x80\x81MGVt=HEU \x15UIEU(\xdb)\x15U\x19>CYo\x96x\x88\xf5\x945\x97\xd7_Z\x8d\x0d)e\xcd\xa5\x9d\xff \x9b\xd0\x9c\xb3\x8f%V4\x1d\xef\xc0e)\xe4D\x19\x127j\x8e\xa9;@\xa0?\x80<\xfbu$\x10;P;\xfc\x98X\x07\xea! \xa4\x01B\x89h\x12E\xbbI\xe6\x85#\xfe\xd4t\xc4\x1d(\x90\x0f\x16H\x07\x8cy\x9cG_\xe1D\xad\x91\x97\xf3\xed\x83\xfc\x8eR7QCb\xfb\"\x1cE\xb4\x84\x14u\xca\x9a+\xdfFS\xd6\xdc\x1e\x9dZ\xce)k\xee\xbd\n9e\xcd\xa5\x84\xf6K\xce\x9a\x9b\x8a\xaaH\xdfL\xc7\xc3\x8e\xd2\xf10\x1d\x0fC\xc4\xd4\x1d \xd0\x1f 8u\x08\xc4\x0e\xb2=3\x1d\x0fY\xefp\x07\n\xe4\x83\x05\xd2\x01K\xc7\xc3 E\xb4\x84\x14u:\x1e\xca\xb7\xd1t<\xec\xd1\xa9\xe5\x9c\x8e\x87\xf7*\xe4t<\xa4\x84\xf6K>\x1e\xfe\x8c\xa1>\xa9\xa8\xca\x94RQ\x95TT\x85zN\xd4\x00\x106\x02RQ\x15KL\x050&\xa7\x10DuKRQ\x15\x9aRQ\x15\x9c\xb8X~\x9cRQ\x950\xcdh\x10e\x12\x0c)\x15U\x91\x1cY:\x8a\xb8\xa5s\x14!=\x88\x94 \x80\xf0\xf6\xce\x91\xe4\xf6dL\xf2\x95\xe1H:\xe0\x10?\xe8\x10;\xf0Q\xb7}\x8e\x04\xb7~\x8e\xe88\x10\x9c\"\xe4\x12!\x0f~$ N\xa9\xa8\x8a\xaci\xb2\xcc&\x96\xb8\xe10l\x86\xfc\xfc\xa3\xbc`\x1a\x9c\xeeC\x9cT8\x0eN\xf7\xd1\xb2TTE\xd8\xb8TT\xa5G\xa7\xefW\xcc\xe9\x8c\x0e\xfd\xe1k\x96TTeLr\xb3\x8b\xe5\xe7w\x14c\x11\xf2\xfdj\x8e\xd2ID\xb0\x06-\xa5\x93\x88\x97\xe4K\xc2\x91t\xc0!~\xd0!v\xe0\xef\xfb$\x92\x8a\xaa\x90Y\x95p\x8a\x9e\x18<\x0c\xe2\x90\xa4y\x99p\x12fk\xc2I\x98\xc3 '~f'\x9c\xa2\xf2=\xe1$?zYb\xa6\x8d\x12re%\x99\xc2I\x8c\xe7\x19R\xf4|\x8eVs\x0c\xc7\xe9\x94f7Sv\x93j\x89\x8d\xa9\x18\xd2\xec\xb6\x8aD\x1ac\xbc[\xe2f\xdb\x12\xb0LEUB\x8f\x8a\xf68\xc9\xce\xc6K\x01\xedH\xb6\x93\x0bvqA\xef,I\xfahI\xac\xe3\xa2\x16c\xc4Bd\xa7\x90v$\x16\x16D \x0c\xa4\xa9\xa5\x1dE \x0e\xe2\x84\x07\xf2\x94\xd3\x8e\xee\xb7\x991V\x037%\xb5\x80el\xa1\x01i\x8ajGQB\x8e9\xb0\xed\xe5\xa9\xab\x1d\xddC\x1b\xf7\xa9\xa8J\x80\x84\x1aP( \x88\x10\x12\xc4\xe9\xbe\x08aA\x8c\xc0 V\xeb\xdd_\x03\xe5\xfanqm\x17\xab\xebb4]\x84`e\x1a\x04\xe6\xe8\xb8\x93\xb7N\x86\xe3m\xdf\x925\x8b\xd7\xa4TT\x05'\xbe\nd\xef\x10L Z\x12\xe8\x10\xf6~\xc0\xee<\x88\x04\x00R\xed/\x12\x04\xc8\x84\x01r]\x7f\xda\xe6H4;W\xa7\xa7\xa2*\x03:A[d\x1a\x9a\xd9\x00\xe6\xa79\x17w\xc2/R\x97r\xdc\xfb\xa1TT\xa5\xa3\xd0h\xa6\xa2*\x0c\xf7*\xb9\x1d\xd1[PJ\x7f=\xa0TT\x85\xe3\xa5\x12\xba\xe9\x84\x0e9\xbe\xeb-\xca\xc9\x96\x8a\xaa\xb0\xb75\xd2\xab$\xf8\x92\xa7;\x7fwEUFm\xf8\xef~\x1b\x9e\xd9\x18\x9e\nj\xd5\xe6\x9a\xd6\"\xb4?\x9cYsS7\xaa\x81\xac\xedG\xc9\xba{\xac\xaer\xb5\xdd\xb8t\xd9j\xa3w\xfc\xcba\x9e\xeeISZq|\xabj\xf3\xc1gw6s\xf3;U\xed\xcb\xa2R.e\xf8\xc1\xfd\xdb\xb4\xcd\x85\xda\xdbw\xff\xfd\xa8\x0ew\x8f\xc6\x1c\xe0\xdd\xdb\xe7\xb0S\xf5M\xb9\xd1\x1f\xb6ecV\x97Y\xa5V]WW\x9f\x1e_\xaa:{\xbc\xfaV\xd5\xdf\xeb\xd5fy\xb8\xaf\xdb96\xd1\x97S\x0d9\xdd\xc9Q%\x8b\xab\xd6\xe96\xe4\x9d\xc3\x9e\x99\x1b\xdc\x99#L'\xcf\x0e\xcc\xb6t&;\xee\x92\xe9\xed\x83;*\xba\x93\x8e\"\x0f]A\xa1\x17j\x7fPZ\xc7n\x9e\xc0~\xab\xb2J\x99\xeb\xb2\x0fm\x0d\xa2\x0f\x90\x17U\xad\xb2M*24!R\xcd\xba\xf1KE\x86\xba\xa7xA\x8c\xa9\xc8P\xff\xaf\x1cv\xa9\xc8\xd0\x98(#>\x9d\xb2\xb0\xa9\x92\x8a\x0c\x8d\x7f\x14\xf4\x8b\x8c\xaaB\xd5'/.*\xb6\x8dTTS,\xdfTd\x08\x80\x17\xcdC\xc7\xed\xc4}_XI\xc7\xae\xb8T>'\x95\xcfI\xe5s\xfcVA*\x9f3|\x86\xb2K,\xf1b\x13R~d^\x7fi56\xa4\x94\x1f\x99\x86y\x80lBs\xaczK\xac\xb8I\xdeQ\xc2R\xc8]6$n|$Sw\x80@\x7f\x00y\xaa\xe9H v\xa0v\xf81\xb1\x8e\x8aC\x12H\x03\x84\x12\xd1$\x8ak\x94\xcc\x0bG\xfc\xa9\xe9\x88;P \x1f,\x90\x0e\x18\xf3\xa0\x8a\xbe\xc2\x89O$\xdd0\xed\x83\xfc\x8eRw,Cb{\x9d\x1cE\xb4\x84\x14u\xca\x8f,\xdfFS~\xe4\x1e\x9dZ\xce)?\xf2\xbd\n9\xe5G\xa6\x84\xf6K\xce\x8f\x9c\xca\xe7H\xdfL\xc7\xc3\x8e\xd2\xf10\x1d\x0fC\xc4\xd4\x1d \xd0\x1f 8u\x08\xc4\x0e\xb2=3\x1d\x0fY\xefp\x07\n\xe4\x83\x05\xd2\x01K\xc7\xc3 E\xb4\x84\x14u:\x1e\xca\xb7\xd1t<\xec\xd1\xa9\xe5\x9c\x8e\x87\xf7*\xe4t<\xa4\x84\xf6K>\x1e\xfe\x8cA]\xa9|\xce\x94R\xf9\x9cT>\x87zN\xd4\x00\x106\x02R\xf9\x1cKL\x050&\xa7\x10D\x15jR\xf9\x1c\x9aR\xf9\x1c\x9c\xb8(u\x9cR\xf9\x9c0\xcdh\x10e\x12\x0c)\x95\xcf\x91\x1cY:\x8a\xb8\xa5s\x14!=\x88\x94 \x80\xf0\xf6\xce\x91\xe4\xf6dL\xf2\x95\xe1H:\xe0\x10?\xe8\x10;\xf0Q\xb7}\x8e\x04\xb7~\x8e\xe8\x08\x07\x9c\"\xe4\x12!\x0f~\x8c\x04N\xa9|\x8e\xaci\xb2\x1c6\x96\xb8\x81\x1el\x86\xbex\xba)\xf1\xc2Dp\xba\x0fqR\x81&8\xddG\xcbR\xf9\x1ca\xe3R\xf9\x9c\x1e\x9d\xbe_1\xa73f\xbc\x0f\x8bW*\x9f3&\xb9\xd9\xc5\xf2\xf3;\x8a\xb1\x08\xf9~5G\xe9$\"X\x83\x96\xd2I\xc4K\xf2%\xe1H:\xe0\x10?\xe8\x10;\xf0\xf7}\x12I\xe5s\xc8\xfcY8EO\x0c\x1e\x06qH\xd2\x0c\\8 \xf3r\xe1$\xcc\xd6\x85\x13?\x87\x17NQ\x99\xbdp\x92\x1f\xbd,1\x13\x84 \xb9\xb2\xd2\x89\xe1$\xc6\xf3\x0c)z>G\xab9\x86\xe3tJ\xb3\x9b)\xbbI\xb5\xc4\xc6T\x0civ[E\"\x8d1\xde-q\xf3\xaa X\xa6\xf29\xa1GE{\x9cdg\xe3%\xfbv$\xdb\xc9\x05\xbb\xb8\xa0w\x96$}\xb4$\xd6qQ\x8b1b!\xb2\x93\x85;\x12\x0b\x0b\xa2\x04\x06\xd2$\xe2\x8e\xa2\x04\x07q\xc2\x03yrqG\xf7\xdb\xcc\x18\xab\x81\x9b|\\\xc02\xb6\xa4\x844\x19\xb9\xa3(!\xc7\x1c\xd8\xf6\xf2$\xe5\x8e\xee\xa1\x8d\xfbT>'@B\x0d(\x14\x10D\x08 \xe2t_\x84\xb0 F`\x10\xab\xf5\xee\xaf\x81r}\xb7\xb8\xb6\x8b\xd5u1\x9a.B\xb02\x0d\x02st\xdc\xc9['\xc3\xf1\xb6o\xc9\x9a\xc5kR*\x9f\x83\x13_\x05\xb2w\x08\xa6\x04- t\x08{?`w\x1eD\x02\x00\xa9\xf6\x17 \x02d\xc2\x00\xb9\xae?ms$\x9a\x9d\xab\xd3S\xf9\x9c\x01\x9d\xa0-2\x0d\xcdl\x00\xf3\xd3\x9c\x8b;\xe1\x17\xa9K9\xee\xfdP*\x9f\xd3Qh4S\xf9\x1c\x86{\x95\xdc\x8e\xe8-(%v\x1eP*\x9f\xc3\xf1R \xddtB\x87\x1c\xdf\xf5\x16\xe5dK\xe5s\xd8\xdb\x1a\xe9U\x12|\xc9\xd3\x9d\xbf\xbb\xf29m=\x90Nf\xae\x84\xc8\xfb\xbcX\x1b@^\xb5+\xab\xaf\xaa\xcdG\xf8\xf5\xea\xb7\xff\x94\xca\x85L\x88\x9cVnR\xa5r!\xddS\xbc\xa0\xadT.\xa4\xffW\x0e\xbbT.dL\x94\xd1\x92\xacJl\xaa\xa4r!\xe3\x1f\x05\xfd\"\xa3HR\xb9\x90\x00GF\x04E,\xeb\xff\xc9\xe5B\xe8\xbd|\xfc\x01W`\xb0<\xe4\xd7y\x915\x1bm\xfb\x98\xbb\xc9>CX\xd9\xcejk2\xd3\xb6\xed\xb3a\xadC\xe4\x85W\x05\x9c+Wz\xf0\x0c\xea\x1b\xfd\xed&-\xe1\x07-\xb2\xea\xc3\x19\\\x1ekg \xbc\x7f\xf1\x873\xf8\x8c\xa9\xb0\xa6\xc8\"\xe45\xd4\xe5\xf8\xdb\xd8\xa7\xb5mr\xa9\xeaZ\x1d\xe0\xc7?\x07\x0cl:\xb2\xa2\xebA*\xaa\x02\xa9\xa8J*\xaaB\xd9N\xa9\xa8\xca\xf0\x19\xcaz\xb3\xc4C\xac\xa7\xac\xb9\xbc\xfe\xd2jlH)k.\xed\xfc\x07\xd9\x84\xe6\x9c},\xb1\xa2\xe9x\x07.K!'\xca\x90\xb8QsL\xdd\x01\x02\xfd\x01\xe4\xd9\xaf#\x81\xd8\x81\xda\xe1\xc7\xc4:P\x0fI \x0d\x10JD\x93(\xdaM2/\x1c\xf1\xa7\xa6#\xee@\x81|\xb0@:`\xcc\xe3<\xfa\n'j\x8d\xbc\x9co\x1f\xe4w\x94\xba\x89\x1a\x12\xdb\x17\xe1(\xa2%\xa4\xa8S\xd6\\\xf96\x9a\xb2\xe6\xf6\xe8\xd4rNYs\xefU\xc8)k.%\xb4_r\xd6\xdcTTE\xfaf:\x1ev\x94\x8e\x87\xe9x\x18\"\xa6\xee\x00\x81\xfe\x00\xc1\xa9C v\x90\xed\x99\xe9x\xc8z\x87;P \x1f,\x90\x0eX:\x1eN(\xa2%\xa4\xa8\xd3\xf1P\xbe\x8d\xa6\xe3a\x8fN-\xe7t<\xbcW!\xa7\xe3!%\xb4_\xf2\xf1\xf0g\x0c\xf5IEU\xa6\x94\x8a\xaa\xa4\xa2*\xd4s\xa2\x06\x80\xb0\x11\x90\x8a\xaaXb*\x8019\x85 \xaa[\x92\x8a\xaa\xd0\x94\x8a\xaa\xe0\xc4\xc5\xf2\xe3\x94\x8a\xaa\x84iF\x83(\x93`H\xa9\xa8\x8a\xe4\xc8\xd2Q\xc4-\x9d\xa3\x08\xe9A\xa4\x04\x01\x84\xb7w\x8e$\xb7'c\x92\xaf\x0cG\xd2\x01\x87\xf8A\x87\xd8\x81\x8f\xba\xeds$\xb8\xf5sD\xc7\x81\xe0\x14!\x97\x08y\xf0#IpJEUdM\x93e6\xb1\xc4\x0d\x87a3\xe4\xe7\x1f\xe5\x05\xd3\xe0t\x1f\xe2\xa4\xc2qp\xba\x8f\x96\xa5\xa2*\xc2\xc6\xa5\xa2*=:}\xbfbNgt\xe8\x0f_\xb3\xa4\xa2*c\x92\x9b],?\xbf\xa3\x18\x8b\x90\xefWs\x94N\"\x825h)\x9dD\xbc$_\x12\x8e\xa4\x03\x0e\xf1\x83\x0e\xb1\x03\x7f\xdf'\x91TT\x85\xcc\xaa\x84S\xf4\xc4\xe0a\x10\x87$\xcd\xcb\x84\x930[\x13N\xc2\x1cN8\xf13;\xe1\x14\x95\xef '\xf9\xd1\xcb\x123m\x94\x90++\xc9\x14Nb<\xcf\x90\xa2\xe7s\xb4\x9ac8N\xa74\xbb\x99\xb2\x9bTKlL\xc5\x90f\xb7U$\xd2\x18\xe3\xdd\x127\xdb\x96\x80e*\xaa\x12zT\xb4\xc7Iv6^\nhG\xb2\x9d\\\xb0\x8b\x0bzgI\xd2GKb\x1d\x17\xb5\x18#\x16\";\x85\xb4#\xb1\xb0 J` M-\xed(Jp\x10'<\x90\xa7\x9cvt\xbf\xcd\x8c\xb1\x1a\xb8)\xa9\x05,c\x0b\x0dHST;\x8a\x12r\xcc\x81m/O]\xed\xe8\x1e\xda\xb8OEU\x02$\xd4\x80B\x01A\x84\x90 N\xf7E\x08\x0bb\x04\x06\xb1Z\xef\xfe\x1a(\xd7w\x8bk\xbbX]\x17\xa3\xe9\"\x04+\xd3 0G\xc7\x9d\xbcu2\x1co\xfb\x96\xacY\xbc&\xa5\xa2*8\xf1U {\x87`J\xd0\x92@\x87\xb0\xf7\x03v\xe7A$\x00\x90j\x7f\x91 @&\x0c\x90\xeb\xfa\xd36G\xa2\xd9\xb9:=\x15U\x19\xd0 \xda\"\xd3\xd0\xcc\x060?\xcd\xb9\xb8\x13~\x91\xba\x94\xe3\xde\x0f\xa5\xa2*\x1d\x85F3\x15Ua\xb8W\xc9\xed\x88\xde\x82R\xfa\xeb\x01\xa5\xa2*\x1c/\x95\xd0M't\xc8\xf1]oQN\xb6TT\x85\xbd\xad\x91^%\xc1\x97<\xdd\xf9\xbb+\xaa2j\xc3\x7f\xf7\xdb\xf0\xcc\xc6\xf0TP\xab6\xd7\xb4\x16\xa1\xfd\xe1\xcc\x9a\x9b\xbaQ\x0ddm?J\xd6\xddcu\x95\xab\xed\xc6\xa5\xcbV\x1b\xbd\xe3_\x0e\xf3tO\x9a\xd2\x8a\xe3[U\x7f\xafg{m>\xfbNU\xfb\xb2\xa8\x94K\x18~p\xff6-s\x01\xc7\xff~T\x87\xbbG\xc37\x1bv\xef\xde>\x87\x9d\xaao\xca\x8d\xfe\xa8-\x19\xb3\xba\xcc*\xb5\xea\xba\xb9\xfa\xf4\xf8R\xd5\xd9\xe3U\xcb\xa1\xb5\xaa\xdf\xab\xda5\xc1N\xb3\x89\xca\x9c*I\xab\x16\xc7F\x07:\x1b\xb1\xbd ;2c\xda}\xa2\xd5=\xda\xdc\xa7\xc5=\xca\xc0\xbbj<\xe7\xd0\xc0\x1e\x12\xda?\xf4k\x17\xc7\x03\xba\xbb\x13\x0b\x97c\xcd>\x85\x1f\xdf}\xff\xe8\xa0\xaa\xf2xX+(\xb2]\xb3\x86\x8eE\xfe\xd3Qm\xef@/\xac:\xbf\xca\x9bSX\xdddR\xf2a\x0e*u\xc8\xb3m\xfeW\xb5\xc1\xc3\xc1\xf6\x87\xb2.\xd7\xe5\x16.\x8fWW\xea\xe0\xe2\xd6W6\xe5\xb7\xed\x0b\xec\x8eU\xbb\xc0!\xaba\xab\xb2\xca\x93\xc3\xa0,\x14\xabo\xcc\x07Pvm\xc4;\xfe5\xcd\xe6\xea\xb8\xdd\xde\xc1O\xc7l\xab\xa5\xb2\xb12k>a\xa4\xf3EVy\x13\x02|\xd0\x9f\x7ft]\x96\xd7[\xb52\xb2\xb8<^\xad^\x1c\x0f&\x86\xee\xc3\x97\xb6\xf5\x86euS\x1e\xb7\x1b\xb84i\xaa\xf0\x88\x88uV\x94E\xbe\xce\xb6f\x81\xe0_\xfcB\xad\xaeWgZ\x84&\x1a\xf0\xc1\xea\x81\xd6\x11&\x95\xfbz\xad\xf6\xb5\xda|\xb9\xfa\x15\xfe\xea\xab\x02\xf6Z\xa8\xf9Z\x9dA\xad\xb2]\x05\xc7\xea\x98\xe9\xee\xdb\x0c\x00\xfb|\xab[W\x97\xa6\xf3\x97y\x91\x1d\xee \xdbnq\xd9\xdd\xedU\x93\xce\xdd\xe4\x0dA\x1fR\xb7{\xb5v\x95\x03\x8e\x95K\xd1e&\x83\xba5C\xf9\xb4\xb8[\xc1w\xe5g\xf5I\x1d\xce\x8cj\xfb\xf1\xdd\xf7\xf8\xa9\xde\x1a\x02\x9a\x8d7\xcdH\xb5\xbeQ;\x05\x1fn\xeaz\xff\xe1\xcc\xfe\xb7\xfap\x06\xe5\x01\x8a\xb2\xf9\xf5\xcc\xcc\xb2uV@iV\x93\x91\xc0t'\xb1t\xdc7\xf9\xc6<\xdfS\x87O\xea`\xc5\xb0\xcb\xf6M\x89\x05\xdd\x03s\xdek\x12\x93\x99{\x8f\xdc&\xa6\xcf\xf0\xbe]\x95\xdbm\xf9\xb9z\xe2\x19\xbb\xff\x0d\xaf\xae\xba\x1e\xe8!w\x89E\xdaN\x9a\xfd\xb9\xaa\x8e;\xb5\xf1d\x9e\xf8\xdf\xf0\xb4\x80\xef\xce\xcf\xdf\xc2\xb7/\xcf\x9bl\xfe\xba\xadv\x81\xde\x99\xdd\x0b\x9f\x99\xff9\x9e\xe2\xe7w{\xf5\x97\xff\xfc\x0b\xfa\xb0\xd1\xe5G3\xd6\xcd\x1c\xb2\xfa\xfe\xcc\xe6\x9a(7\xc7\xb5\x82\xac\x00u8\x94\x1e\xd8\xf6\xff\x86\xa7](je\n\x13dZ>vS]gk\xad\x13\xca\xf2\xe3q\x0fM\x10\x02\xe8\xcdm\x03e\xe1[\xe8\x9e\xa6\xfe\xf8\xee{\xd3\xae\x9b\xec\x93\x99V\xbb\xdeZ\xd8\xd8\xc5\x90\xb9n\xe8\xff\xffT\xe6\x1b\xc8\n\xdf\x85\xadm\x94Y\xf6\x07uU\x1e\xd4\x99{Y\xf3\xcc\xea\xfc2\xdf\xe6\xf5\x1d\x14Jm*k \x80QQ\x87O^\xa4LYhuX\\+\xf3\x82Yw+\xf8\xe2\xc7J\xb9(y-\x15=\xed\xb4\x9e\xb1\xf3.+\xb2k_\x8f/\x0f*\xfb\xa8uG\xc3t\xf5%>[^\x97\xb5zb\xeb\x86\\\x1d\x8b\xb5])\xba\xed\x8d\xbeY\x1f\x0f\x07U\xd4\xdb\xbb\xde-^ \x14\xba\xbc\xba\xca\xd7y\xb6\x0d\xec#\x97\xc7+8(\xbd;\xa83\x13\xa0\x9c\xd7\xeecG=\xb8\xc6\xeei\xd7\xd7\xa5\xba\xce\x8b\xc2g\xe4j\xb3\xcd\xa3\xf4\xef\xf6je\xe7s\xb6\xcf\xab\xd5\xba\xdc\xf94\xe6{\xb3\xda*(\xeb\x1b\xbb\xc8\x8b\xb1f\x81/\x1a[L\xed\xf6\xf5]\xb3<\xbfD\x99\xed\xcc\x95\xcf\xa5G\x91\x98\x0e\x1a[3\xdf\xed\xb7Jotf\xf2C\xb5W\xeb\xfc*_C\xa5vYQ\xe7k\x04Pd\xd6[\x84I!9\x07x,\x8e\x1f\xb4\xea\xb8T.\x15H\xcf`\x98\xd8\x06.\xc8\xfc\xb2\xfc\xe416lW\x9b\xe9<\xee&\xd5\x9a\x0fO\x8b\xbb\x0f\xdd9\"+ ;\\\xe6\xf5A/\xbe@\xab\x1a\x1d=a\x97m\xcb\xe2\xda\x8eH6\x1d2\xad5\x8d\xd2\xb7\xad\xba\x9c\x9aS\xfdo:\xab\x08\x99fo\xdd\xc4\xdf\xe6\x97\xa6\xa9\x8d^\xaf\xa0:\xee\xf7\xe5\xc1\xec\x9c\xfbl\xfd\xf1\xd1\xb1\xd0\xff\xd1\xfb\xa5\x1doc\x95\x8c\xd9\x19\x8b\x065\x1e\xca+8\xd6V\xf9\xb8\xe5\\i\xc5\x97m6\xb9]\xdbp\xad\nu0\xf9\x8b\xec\xd1\xa1\xcd\x0b\xf0\x14\xd1wv\x88\xa6\xdfyy\x9b\xe9 \x0c\x8f\x9f\xc0[\xdd^\xbd\x8e\x9b\xa6g\xfdL\x9d\xcf\xff\xe1\x1f<\xdb\xd47e We \xbf\x87\xd5j\xf5\xff\xa2\x8fh!d\xc5\x1d\xfecV\xdc\xad\xf4\xa7\xbf9\x94\xbb/\xae\xca\xf2K\xfc\xb1\xd5\n\xdf{\xf2+\xf8B\xb3\xf8\xd14\xfa\xbc\xfc\xe2\x7fi\x1e_\xc2\xff\xf5\xe8S\x1f\x9f\xbf\xf9e\xf35!\x9b\x7f\xcb>e\xb3\x85\x03\xbf7\xb6\x95\xe6>C\ny\xf5\xc57e\xb9Zo\xb3\xaa\n\x08\xc16I\xbf`\xfb\xd3{ \xff\xee\xdf\xd0\xbf>z\xa4\xa7$\xdd\xa6\xf7\xd9Ni\x13\xe4\xa9m\xdd\xb5\xaa_\xd8k\xa7WEUg\xc5Z}\xf1\xa5\xb4\xb1(\x0f_\xdb\xbd#\xfb\x1bbd\xdf\xde\xd57e\xe1\x19[\xdb\xaeo\xca\xf2\x8b\xd5j\x85o\"\xed\xb8~\xe1\xfd\xdd\xcc}3\xe2\xd2\x01\xd7/\xbf\xb2\x12}\xf1\xf2\xfd\xf3w\xaf\xde\x9e\xbfy\xf7\xa5\xef\x9e\xa9[#\xfe\x8f\xd9\xcfy\xa5\xf5[BZ\xdf\x96\x9e$$ZRO~\x0f\xffk\x7f\xb9\xfa\xa6,\xff\xefj\xb5\xc2\xe7\x93n\xe4\x9964\xf5\xd3Yq\xb7\xbf\\\xbdV\x9f\x03\xed\xcd\xaf\xcc\xd3\xff\xcf\xef\xa1\xc8\xb7\xde \xe4\x15\xa2gZ\xfb\x9f\x1fu\xc4\xf3z\xd3*\xdb\x87\xd5\x8f\xc5.;T7\xd9\xf6\xbc\xb4\x0b{n\x93'\x7f\xd7\x87V3\x1an\x1f\xe8g1\xdc\x8fw,[\x8b\xec\xce\xdd\xfcN\xb8\x1d+\xc4\xe6y\x88\x98a\x8f\xf4Y|e~\xd0\xa6\xecC\xc8z\xbb\xaa\xdeq\x9b\xa45\xd3/\x98\xb93\xfdH\xbb\x8d\x15\xdb;wn\x9c\x1c\xf8[\xd3\x19\xb2\xabZYkn\x9b!\x17\n\x0f\x1f=\x9c~\xa29\xd0\xba&\xda\x13\xacj\xe6\xf7\x83\xab\xb2\\]f\x07\xd3\xb9\xdbGw\xab\xbf>\xb0\xd2\xb2g-\xfcXi\x9a\xf2@?\x8bm\xaf\xff\xf6\xfe\xcdk\xe4\xcfz\xc4\xf4O\xdd\x8d\x87\xb5\x1eK\xbd\xaa\x1b\xd3\xc8\x9e\xca\x8e\x95rw\x8a\xd7\xc7m\x86\xa4\xef\x9b\xb2\xd0\x8foTg\xd0\x9c\x81\xda]\xaa\xcd\xa63m\x9a{\xd2\x0c\xb9'\xe9\x19\x18\xf6\x82\xf4\xc3\xbf\xea\x8e\x7fh\x8e\xf3\x83\x8b_'\xc6\x95S\x11O<\xc7\x85l\xfdQ\xeb\x88\xeeXz\x95o\x15\xae\xad\x9d>y\xab\x0eUYx\x17HsWe\x8a\xd8]\x981\xf8=<\xc69\xb6\x0f\x1bom\xf3\xec\xd7\xec\xbdB\x93\xaf\x15\x0f\x8cl\x1e<\x81\x07\xd8\xfa\x18vwe{\xf4\x00+\x17ix\x99\xbe\xbc\xcev\x9a\xdf\xff\xb1M\xfe\x17\xef\xc3\xba/\xa3g\xb9\x1dzu\xd5\x1c\x81\x86s\xc2\x8ef^\xc1g\xb5\xdd~\xf5\xb1(?\x17f\x05\xdf\x98\n\x96\xebcU\x97\xbbf>\x8f9\x0e\xa7\xe0\x995\xb5G\xf3\xd2\x95@l?\xab'Zq\x8d\xdc`\x98i7\xfd\xc8\x07\xb3 \xdc<\xbc)\xb7\x9b&=X\xd72sW\xd7\xcc_h\xee\xc5\x9a\xe9;\xe5g>\xd3\xce\\\xf8Bk\x02'\x8a\xc9\x05\x8a\xbb#\xfc\xcb\x7f\xfe\xe5K\xcf$\x9f;G\x86\x1f\xf2O\x13#\x06\xcd\xee\xf1\xea\xeb\xc7_W\x0f<\xc3\xde\xffW\x08B\x128s\xfa}\xd2$>&\x82\xeb\xe0\xc0\xf8\xc7.#lO\xd58OJ\xeb|\xf8\xaaR\xad\xf7j\x9f]\xe7\x85\x91]\xd7\x98\x01\xcf\xee\x81\x16\xd9\x94\x15\xfd\xbf:\xf6\xce}\xd3\xed\xc05\xe6>\xc0\x1d\x07&q\xca\xc4\x03\xe1\x95\x87\xf7L\xefw\x81A\xef+N<\xfa\x7f\x9b\xeb\xa9\xac\xaa\xec\xbd\xdb\xdb\xecZ\xbdS?\x1dUU\xaf\xec\xef#&?\x1d\xd5\xc1&\xe0\xd5\xec\xb4$\x14\xec\xca\xaa\x06e.\x7f\xccm\xd1\n^\xd5\xbd\xb5\xbb\xaf\xef\xa69z\xeb\xb6\x1ciQ\xc2\xae<(w\xcb\xd77a\x10\x94\x04)\x14$\xeb\xa0\x0f\xc9f\xd8\x1bi\x98\xff)\x8e\xbbK{\x87\xe1.\x1c{\xb7^\xe3\xf6\xf7\x05\xb5.\x8fE}a\x98\x8c\x97\xf9\xe7\xac\x82J\xd5g\x90\xd7\x95\xbb3\xad\xe0X\xd8\xc9\xb4\xb1\xd7N\x9f\xf3\x06\x15G\xf8\x0d1\xdf]\xd0}\xd80h\x9d\x88}\x06\xcf\xeel\xfdX\xb1\x1f\xf1u\xb9Q\xaf\x8a\xabR\xec=l\x8c\xc7\x8b\xa2\xdc\xa8\x8b\xbc\xb8*\xc7^@\xd6Zq\x97;\x17h\xfeP\x94\x91\x9f\x99\xf9\xe5k\xc4\xa3\x1f\xbcU\x0bL5o\n\xd0x\x86h\xd2\xce8v\xc3\x11\xd8\xb0V\xd66\xafjU\x18\x80\x05\xeb\xf9B\xd5\x9f\xcb\xc3G\xd6\xb3\x81!\x9c<\xbb\xbe\xc9\x8aBm+\xd6\xc3^\x1d\xb9+\x8b\xfc\xe3xC\xf301ks\xf6\xf4\xaao}\x15\x0c\x02cx\xd8\xafE\x15\xcb{Y=\xa7\xebB\xb0\xb8\xb4\xa1\xcb\x92M\xb6\xdf_\xb0\x1f\x96\x0c\xf3u\x1e\x02GN\x1e\xbf<\xe6\xdb\xcdE\x9d]\xf3\xe6\xc5u\x19R\x1b\x1e\xee\x1b\xb5G\xb9O!i(\x1c\xcd;g\xc20\x82}V\xa3\xc0\xbd\xe0\xcao\xf7\xba]\xb99n\x95a2y(\x90xY\xc4\xbc\xe13y\xae\xc21o<\xde\xeb\x1b\xb5\xfeX\x1d\xc7\xd9\xe9\x9b_\x7f\xb0_\x1e\xdbw\x7f\xb4-y5L\xb4e\xb7\xb2\x8bj\xf3Q4\xe8\xed\xc7\x1e\xbe\xcf\x8b\xb5\xc9\xe4\xa5\xf9|Um>\xc2\xafW\xbf\xfd\xcd\xc3\xf6\xd9\xa1\xf5\xd9\xb5\x01\xb5?\x91\x9d\xb3s\x1aL\xb8\xf57\xff\xc9k<\xc4\x90{Mo\xf0\x0d3\xc96\xff\xfe\xaeX\xe7\xc5\xb5x\x97\xaf\xec{c\xf5sY\x96[\x95\x15\xe1\x9e\x8e\xbe\xc9\xech\xf3Vd?1\x9bH\xdc\xe9\x04\x8cro$`T\x02F%`\x14$`T\x02F%`T\x02FYJ\xc0\xa8\x04\x8c2\x92J\xc0\xa8>%`\xd4\x84\xf8\xd8\x9f\x04\x8c\xc2\x1eI\xc0\xa8\x04\x8cJ\xc0(K \x18\xe5(\x01\xa3\x120*\x01\xa3\x120\xca\xf7p\x02F%`T\x02F%`T\x02F5\x7f\xff\x1f\x03\x8c\ny\xef\xee\x19\x1a\xf5]/c\xd0d\x8aO\xa7\xf7\x14\xa6A\x148\x16,\x1b\x04\x83$\x9f\x1e\x13\xdc\x91\x94\x85\xff\xd2\x8aW\xb4\x17\xb8\xc5x=\xe5v\xb9\x05u\xd1B\xb9CA\xe0%s\xa9\xa2\xb8\xd3\xb2\xb7\x88\x08\xa3\x9d\xc6\xc3\x02\xb3\xc1\xd7\xc6\xe9f\xb2b\xe5\xa0hC\xb8\xd6$\xb7\x0d\xbe\x8a\x90\xdc\xf7\xa7u\x1b\xb9o\x06\xaa+rYxj r_\x0fW*\xdc{k\x11\xa2\xfc\xfd\xba~\xcc\xc8\xed\xca\xe5!\xd7\xb6b\xa3\x98a\x9cs\xe9\xacir\xad\x0f7}\xb7q\x06\xcf\x86 \x97z\xbf\xbd*\xe0\xbc\xdd\x98\xcf\xac\xff\xce\x1d\xc4>\xe8\xaeW\x1f\xce\xe0\xf2X\xbb\x9b\x8b\xf7/\xfep\x06\x9f\x95\xcb\xe7d}\xf5\xfeo\xf5?\xa5\xf7\xa6KU\xd7\xea\x00?\xfe\x19\x01p\xd1\xd5\x0f\xbb\x966\"\xe8\x8a\x1c\x12\x96\x86E\xc1\xb1-\x8d!\x92\x10\x1d>/j\xd0\x03&\x0d\xbe>\xc4\x05\x0e\xd0\x80\xa1\xb7\x07\xc8? \xde\x8f\x90\xd6\xdbCY^\xbd\xd9\xb3\xc5e\x1e \xb5xp\x1e\xe1\xae6\xadi\xa5o\xe1\x8b\xaa\xe9O\xff\xd8\xa5\xbb`O]\xad\xafx\x9dm\xd7\xc7mf\xd2\x92\xfe\xa0\x0e\x1f\xb7\n\x0eeY[PNo\x07X\x97\xc7\xee~\xe0R\xf5\xfc\x86\x0e\xb8`\xef?5\x9fBiSL\xfff,\xa8\xfem_\xa1\xad\x98\xcb\xf2\xd8\xebPQn\xda\x1b>\xad\xa1\xba\x1b=\xeb]?\xef\xaf\xce\x0c6Gke\xb5>D\xd7Os\x9a\xb7\x0f\xba\xc3A\xeb\xfc\xeb\xd6\x10c\xd94\x0c+\xf6L(\xf7'\xc6\xe3\x0d\xa7Z\x9f\x05b`x\x81x\xc1\x8b\x81\xe9Qx0\x11c\xf9\x84\x1c\xd2\xf3'\xe8\xa4\xc1\xc3ij)z\xb2\x0e\xb8\xf4'\xee`\xcaZ\x1aN\\K\xcbM_K\xc3IL,{\xb3\x7f6\xf2\xda\xeb?\xb5\\/\xed\xed\xc36\xaf\x0c\xb6\xcc=\x1f\xb9\xec\xaa\xe5\xd6]{\xb4f/<\x8e\xcd1\xc1\xa6\xa2k\x0f_y5\x8aD\xf5\xae\x820\xfabA\xdc\xa9\x1fq\xba\x1c\xd6t1\x94\xa9\x17_\x8a9\x9a\x98\xc8\xd2\xa50\xa5a4i\x14\x8e4\x1aAj\xfa;\x06>z\xb1\xa3\xd1\xa8Q{\x95?\xe2\xe6\xc1\x8b\xceA\x8a\x1aT\xe8\xb87\x883/\x06\x1d\xeaG\x82\xce\xc4\x80\xb2\xd0\x9f|\xa4\xe7\x0c\x8c\xe7\x0ct'\xa20\x16\xc4p.\x8b\xde\\\x0c\xb7I#6\x17\xc3j\xfaP\x9as\xf0\x99(\x16\xb3\xe6\xa00c\xf1\x97^\xace$\xca\x12\xc1Wz7J\x9e\xffe\xb2\x83F\xe2(;\xcc$&\xdf_\xd1\xdf\x9e\x87\x9a\xb4(\xc9\x1e\xbb)^r\x01\xa4\xe4<\x8c\xe4h\x96\x8f7\xc3\x99\xb8\xc8F\xd0}\x8es\x10\x90Ax\x9f\x07\xf5H\xe2\x1d\xa7\xd0\x1f>\xc6q\xfa\xee\xdf\xb0\xbeF!\x1a9\x9d\xa5P\x8c\xfe\xbe\x91\xc8E\x01fq\x8c\xcb\xf2\xe1\x14\xe7#\x14\xe3\xb1\x89\xe8\xb8D\xe2\x11\x83HD?\x061\x84>D\x85\xc5E\x1cRX\xc3\x11\xcap\x06\xbe\x90\x81,\xe4c\nI4!\x02\xca\x9b|\x0ey\x86B\x0d\xce\xc3\x0b\xa2\x8d\xea\xfde\x16:p\x8c\x06\x9c\x83\x03Dp\x7f\xb3\x10\x7fc\x84\xdf\x92\xd8>\x1f\xaao\x82\xe7[\x06\xc9\xb7\x18\x86oY\xf4\x1e\x0f\xb7G\"\xf6\x9a\xb3>\x85\xd5k\x1e\x0b\xa2\xf4&p\xb6\xe9\xd7\xb8x\xab0&\x8f\x89\xc6c\xe0\xf0\x06M^\x12{7\x0bu7E\xd9-\x87\xaf[\x0eY\x17?\xba$\x9a\x8e\xc2\xd19-\x8dc\xe7\xd0\xf3\x04\xe6\x9a\x0f \xe5\x98<\xe6\xe0\xe2\xa8k\xce\xce)\xc5\xbe\xe8\x1c\xa6PA\xfa0\xcd\xb3\x82<\xc4q\xd2ayU\x90\xc7\xb0|*\x187$\x8f\x8a\x97\xdb0\x7fJ}\x02?\n\x96+\xc5{H%s\xa4x\xf2\xa3\xb0\x19byQ\x90\x9c(4?$\x17\x8a\xc4/\nD\x0e\x14\xb4\x01\x9c\xdc'K\xe6=\xe9-\xa4\xfd\xd7\xfbUc\xea\xbb7\xd8\x0b\xc9\x9f\x15\x0c\x9dJ\x9e\xd4b\xe3L`\xde!\xf2\x82\xe6~ \xc8;o\x96/\x84\x0d\x9a\xdd\x0byn\x92\xd5+R\x0dM\xb3x\x05\x15w\xef\"i\x92\xb9\x0byq\x94\xb1K0\xf4x\x96.\x8f\xdc\xbd\xd9\xb9F\xcf\x87\xe7\xf6\x9b\xae\xb1\x8c >m \xd28\xb4a\xe1F\xbdm\x16\xce\x1f\xfb\x83\xc7h\xcf`\xad\x04\xc7p07G\xeb\x83\xff\xe2`Mp^\xfb\xff\x02\x00\x00\xff\xffPK\x07\x08\n0\x17z\x15\x95\x02\x00\x9e\x11%\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81k \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xef\x0c\x00\x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81wF\x05\x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(_;\x94/\xe8Y\x00\x00\xa8X\x02\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81S\x01\x07\x00swagger-ui.cssUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\n0\x17z\x15\x95\x02\x00\x9e\x11%\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x80[\x07\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x08\x00\x08\x00E\x02\x00\x00\xd8\xf0 \x00\x00\x00" + fs.Register(data) + } + \ No newline at end of file diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index b95ab125c..f9a07a8c1 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -801,33 +801,29 @@ paths: format: byte tags: - Query - /canto/onboarding/v1/params: + /ethermint/evm/v1/account/{address}: get: - summary: Params retrieves the total set of onboarding parameters. - operationId: OnboardingParams + summary: Account queries an Ethereum account. + operationId: Account responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. - type: object - properties: - enable_onboarding: - type: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module + balance: + type: string + description: balance is the balance of the EVM denomination. + code_hash: + type: string + description: code_hash is the hex-formatted code bytes from the EOA. + nonce: + type: string + format: uint64 + description: nonce is the account's sequence number. description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + QueryAccountResponse is the response type for the Query/Account + RPC method. default: description: An unexpected error response. schema: @@ -847,79 +843,207 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte - tags: - - Query - /canto/coinswap/params: - get: - summary: Params returns parameters of the module. - operationId: CoinswapParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - NOTE: The amount field is an Int which implements the - custom method - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + Protobuf library provides support to pack/unpack Any values + in the form + of utility functions or additional generated methods of the + Any type. - NOTE: The amount field is an Int which implements the - custom method - signatures required by gogoproto. - tax_rate: - type: string - max_standard_coin_per_pool: - type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - NOTE: The amount field is an Int which implements the - custom method + Example 2: Pack and unpack a message in Java. - signatures required by gogoproto. - title: Params defines token module's parameters + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the ethereum hex address to query the account for. + in: path + required: true + type: string + tags: + - Query + /ethermint/evm/v1/balances/{address}: + get: + summary: |- + Balance queries the balance of a the EVM denomination for a single + EthAccount. + operationId: Balance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balance: + type: string + description: balance is the balance of the EVM denomination. description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. + QueryBalanceResponse is the response type for the Query/Balance + RPC method. default: description: An unexpected error response. schema: @@ -939,115 +1063,420 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the ethereum hex address to query the balance for. + in: path + required: true + type: string tags: - Query - /canto/coinswap/pools: + /ethermint/evm/v1/base_fee: get: - summary: LiquidityPools returns all the liquidity pools available - operationId: LiquidityPools + summary: >- + BaseFee queries the base fee of the parent block of the current block, + + it's similar to feemarket module's method, but also checks london + hardfork status. + operationId: BaseFee responses: '200': description: A successful response. schema: type: object properties: - pools: + base_fee: + type: string + title: base_fee is the EIP1559 base fee + description: QueryBaseFeeResponse returns the EIP1559 base fee. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - id: - type: string - escrow_address: + type_url: type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string description: >- - Coin defines a token with a denomination and an amount. + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least - NOTE: The amount field is an Int which implements the - custom method + one "/" character. The last segment of the URL's path + must represent - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in + a canonical form - NOTE: The amount field is an Int which implements the - custom method + (e.g., leading "." is not accepted). - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + In practice, teams usually precompile into the binary + all types that they - NOTE: The amount field is an Int which implements the - custom method + expect it to use in the context of Any. However, for + URLs which use the - signatures required by gogoproto. - title: liquidity token balance - fee: + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: type: string - title: liquidity pool fee - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the + URL that describes the type of the serialized message. - corresponding request message has used PageRequest. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryLiquidityPoolsResponse is response type for the - Query/LiquidityPools RPC + Protobuf library provides support to pack/unpack Any values + in the form - method + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ethermint/evm/v1/codes/{address}: + get: + summary: Code queries the balance of all coins for a single account. + operationId: Code + responses: + '200': + description: A successful response. + schema: + type: object + properties: + code: + type: string + format: byte + description: code represents the code bytes from an ethereum address. + description: |- + QueryCodeResponse is the response type for the Query/Code RPC + method. default: description: An unexpected error response. schema: @@ -1067,144 +1496,432 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - It is less efficient than using key. Only one of offset or key - should + URL that describes the type of the serialized message. - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + Protobuf library provides support to pack/unpack Any values + in the form - a count of the total number of items available for pagination in - UIs. + of utility functions or additional generated methods of the + Any type. - count_total is only respected when offset is used. It is ignored - when key - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the ethereum hex address to query the code for. + in: path + required: true + type: string tags: - Query - /canto/coinswap/pools/{lpt_denom}: + /ethermint/evm/v1/cosmos_account/{address}: get: - summary: |- - LiquidityPool returns the liquidity pool for the provided - lpt_denom - operationId: LiquidityPool + summary: CosmosAccount queries an Ethereum account's Cosmos Address. + operationId: CosmosAccount responses: '200': description: A successful response. schema: type: object properties: - pool: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + cosmos_address: + type: string + description: cosmos_address is the cosmos address of the account. + sequence: + type: string + format: uint64 + description: sequence is the account's sequence number. + account_number: + type: string + format: uint64 + title: account_number is the account number + description: >- + QueryCosmosAccountResponse is the response type for the + Query/CosmosAccount + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - NOTE: The amount field is an Int which implements the - custom method + protocol buffer message. This string must contain at + least - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + one "/" character. The last segment of the URL's path + must represent + the fully qualified name of the type (as in - NOTE: The amount field is an Int which implements the - custom method + `path/google.protobuf.Duration`). The name should be in + a canonical form - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + (e.g., leading "." is not accepted). - NOTE: The amount field is an Int which implements the - custom method + In practice, teams usually precompile into the binary + all types that they - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - title: >- - QueryLiquidityPoolResponse is response type for the - Query/LiquidityPool RPC + expect it to use in the context of Any. However, for + URLs which use the - method + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the ethereum hex address to query the account for. + in: path + required: true + type: string + tags: + - Query + /ethermint/evm/v1/estimate_gas: + get: + summary: EstimateGas implements the `eth_estimateGas` rpc api + operationId: EstimateGas + responses: + '200': + description: A successful response. + schema: + type: object + properties: + gas: + type: string + format: uint64 + title: gas returns the estimated gas + title: EstimateGasResponse defines EstimateGas response default: description: An unexpected error response. schema: @@ -1224,915 +1941,65461 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte - parameters: - - name: lpt_denom - in: path - required: true - type: string - tags: - - Query -definitions: - canto.epochs.v1.EpochInfo: - type: object - properties: - identifier: - type: string - start_time: - type: string - format: date-time - duration: - type: string - current_epoch: - type: string - format: int64 - current_epoch_start_time: - type: string - format: date-time - epoch_counting_started: - type: boolean - current_epoch_start_height: - type: string - format: int64 - canto.epochs.v1.QueryCurrentEpochResponse: - type: object - properties: - current_epoch: - type: string - format: int64 - canto.epochs.v1.QueryEpochsInfoResponse: - type: object - properties: - epochs: - type: array - items: - type: object - properties: - identifier: - type: string - start_time: - type: string - format: date-time - duration: - type: string - current_epoch: - type: string - format: int64 - current_epoch_start_time: - type: string - format: date-time - epoch_counting_started: - type: boolean - current_epoch_start_height: - type: string - format: int64 - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + URL that describes the type of the serialized message. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - cosmos.base.query.v1beta1.PageRequest: - type: object - properties: - key: - type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: - type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: - type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - count_total: - type: boolean - description: >- - count_total is set to true to indicate that the result set should - include + Protobuf library provides support to pack/unpack Any values + in the form - a count of the total number of items available for pagination in UIs. + of utility functions or additional generated methods of the + Any type. - count_total is only respected when offset is used. It is ignored when - key - is set. - reverse: - type: boolean - description: >- - reverse is set to true if results are to be returned in the descending - order. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Since: cosmos-sdk 0.43 - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + Example 2: Pack and unpack a message in Java. - message SomeResponse { - repeated Bar results = 1; + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: args + description: args uses the same json format as the json rpc api. + in: query + required: false + type: string + format: byte + - name: gas_cap + description: gas_cap defines the default gas cap to be used. + in: query + required: false + type: string + format: uint64 + - name: proposer_address + description: proposer_address of the requested block in hex format. + in: query + required: false + type: string + format: byte + - name: chain_id + description: >- + chain_id is the eip155 chain id parsed from the requested block + header. + in: query + required: false + type: string + format: int64 + tags: + - Query + /ethermint/evm/v1/eth_call: + get: + summary: EthCall implements the `eth_call` rpc api + operationId: EthCall + responses: + '200': + description: A successful response. + schema: + type: object + properties: + hash: + type: string + title: >- + hash of the ethereum transaction in hex format. This hash + differs from the + + Tendermint sha256 hash of the transaction bytes. See + + https://github.com/tendermint/tendermint/issues/6539 for + reference + logs: + type: array + items: + type: object + properties: + address: + type: string + title: address of the contract that generated the event + topics: + type: array + items: + type: string + description: topics is a list of topics provided by the contract. + data: + type: string + format: byte + title: >- + data which is supplied by the contract, usually + ABI-encoded + block_number: + type: string + format: uint64 + title: >- + block_number of the block in which the transaction was + included + tx_hash: + type: string + title: tx_hash is the transaction hash + tx_index: + type: string + format: uint64 + title: tx_index of the transaction in the block + block_hash: + type: string + title: >- + block_hash of the block in which the transaction was + included + index: + type: string + format: uint64 + title: index of the log in the block + removed: + type: boolean + description: >- + removed is true if this log was reverted due to a chain + + reorganisation. You must pay attention to this field if + you receive logs + + through a filter query. + description: >- + Log represents an protobuf compatible Ethereum Log that + defines a contract + + log event. These events are generated by the LOG opcode and + stored/indexed by + + the node. + + + NOTE: address, topics and data are consensus fields. The + rest of the fields + + are derived, i.e. filled in by the nodes, but not secured by + consensus. + description: >- + logs contains the transaction hash and the proto-compatible + ethereum + + logs. + ret: + type: string + format: byte + title: >- + ret is the returned data from evm function (result or data + supplied with revert + + opcode) + vm_error: + type: string + title: vm_error is the error returned by vm execution + gas_used: + type: string + format: uint64 + title: >- + gas_used specifies how much gas was consumed by the + transaction + description: MsgEthereumTxResponse defines the Msg/EthereumTx response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: args + description: args uses the same json format as the json rpc api. + in: query + required: false + type: string + format: byte + - name: gas_cap + description: gas_cap defines the default gas cap to be used. + in: query + required: false + type: string + format: uint64 + - name: proposer_address + description: proposer_address of the requested block in hex format. + in: query + required: false + type: string + format: byte + - name: chain_id + description: >- + chain_id is the eip155 chain id parsed from the requested block + header. + in: query + required: false + type: string + format: int64 + tags: + - Query + /ethermint/evm/v1/params: + get: + summary: Params queries the parameters of x/evm module. + operationId: EvmParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params define the evm module parameters. + type: object + properties: + evm_denom: + type: string + description: >- + evm_denom represents the token denomination used to run + the EVM state + + transitions. + enable_create: + type: boolean + title: >- + enable_create toggles state transitions that use the + vm.Create function + enable_call: + type: boolean + title: >- + enable_call toggles state transitions that use the vm.Call + function + extra_eips: + type: array + items: + type: string + format: int64 + title: extra_eips defines the additional EIPs for the vm.Config + chain_config: + title: >- + chain_config defines the EVM chain configuration + parameters + type: object + properties: + homestead_block: + type: string + title: >- + homestead_block switch (nil no fork, 0 = already + homestead) + dao_fork_block: + type: string + title: >- + dao_fork_block corresponds to TheDAO hard-fork switch + block (nil no fork) + dao_fork_support: + type: boolean + title: >- + dao_fork_support defines whether the nodes supports or + opposes the DAO hard-fork + eip150_block: + type: string + title: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 + HF block (nil no fork) + eip150_hash: + type: string + title: >- + eip150_hash: EIP150 HF hash (needed for header only + clients as only gas pricing changed) + eip155_block: + type: string + title: 'eip155_block: EIP155Block HF block' + eip158_block: + type: string + title: 'eip158_block: EIP158 HF block' + byzantium_block: + type: string + title: >- + byzantium_block: Byzantium switch block (nil no fork, + 0 = already on byzantium) + constantinople_block: + type: string + title: >- + constantinople_block: Constantinople switch block (nil + no fork, 0 = already activated) + petersburg_block: + type: string + title: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople) + istanbul_block: + type: string + title: >- + istanbul_block: Istanbul switch block (nil no fork, 0 + = already on istanbul) + muir_glacier_block: + type: string + title: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block + (nil no fork, 0 = already activated) + berlin_block: + type: string + title: >- + berlin_block: Berlin switch block (nil = no fork, 0 = + already on berlin) + london_block: + type: string + title: >- + london_block: London switch block (nil = no fork, 0 = + already on london) + arrow_glacier_block: + type: string + title: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch + block (nil = no fork, 0 = already activated) + gray_glacier_block: + type: string + title: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block + (nil = no fork, 0 = already activated) + merge_netsplit_block: + type: string + title: >- + merge_netsplit_block: Virtual fork after The Merge to + use as a network splitter + shanghai_block: + type: string + title: >- + shanghai_block switch block (nil = no fork, 0 = + already on shanghai) + cancun_block: + type: string + title: >- + cancun_block switch block (nil = no fork, 0 = already + on cancun) + description: >- + ChainConfig defines the Ethereum ChainConfig parameters + using *sdk.Int values + + instead of *big.Int. + allow_unprotected_txs: + type: boolean + description: >- + allow_unprotected_txs defines if replay-protected (i.e non + EIP155 + + signed) transactions can be executed on the state machine. + title: Params defines the EVM module parameters + description: >- + QueryParamsResponse defines the response type for querying x/evm + parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ethermint/evm/v1/storage/{address}/{key}: + get: + summary: Storage queries the balance of all coins for a single account. + operationId: Storage + responses: + '200': + description: A successful response. + schema: + type: object + properties: + value: + type: string + description: >- + value defines the storage state value hash associated with the + given key. + description: >- + QueryStorageResponse is the response type for the Query/Storage + RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the ethereum hex address to query the storage state for. + in: path + required: true + type: string + - name: key + description: key defines the key of the storage state + in: path + required: true + type: string + tags: + - Query + /ethermint/evm/v1/trace_block: + get: + summary: >- + TraceBlock implements the `debug_traceBlockByNumber` and + `debug_traceBlockByHash` rpc api + operationId: TraceBlock + responses: + '200': + description: A successful response. + schema: + type: object + properties: + data: + type: string + format: byte + title: data is the response serialized in bytes + title: QueryTraceBlockResponse defines TraceBlock response + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: trace_config.tracer + description: tracer is a custom javascript tracer. + in: query + required: false + type: string + - name: trace_config.timeout + description: >- + timeout overrides the default timeout of 5 seconds for + JavaScript-based tracing + + calls. + in: query + required: false + type: string + - name: trace_config.reexec + description: >- + reexec defines the number of blocks the tracer is willing to go + back. + in: query + required: false + type: string + format: uint64 + - name: trace_config.disable_stack + description: disable_stack switches stack capture. + in: query + required: false + type: boolean + - name: trace_config.disable_storage + description: disable_storage switches storage capture. + in: query + required: false + type: boolean + - name: trace_config.debug + description: debug can be used to print output during capture end. + in: query + required: false + type: boolean + - name: trace_config.limit + description: >- + limit defines the maximum length of output, but zero means + unlimited. + in: query + required: false + type: integer + format: int32 + - name: trace_config.overrides.homestead_block + description: homestead_block switch (nil no fork, 0 = already homestead). + in: query + required: false + type: string + - name: trace_config.overrides.dao_fork_block + description: >- + dao_fork_block corresponds to TheDAO hard-fork switch block (nil no + fork). + in: query + required: false + type: string + - name: trace_config.overrides.dao_fork_support + description: >- + dao_fork_support defines whether the nodes supports or opposes the + DAO hard-fork. + in: query + required: false + type: boolean + - name: trace_config.overrides.eip150_block + description: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil + no fork). + in: query + required: false + type: string + - name: trace_config.overrides.eip150_hash + description: >- + eip150_hash: EIP150 HF hash (needed for header only clients as only + gas pricing changed). + in: query + required: false + type: string + - name: trace_config.overrides.eip155_block + description: 'eip155_block: EIP155Block HF block.' + in: query + required: false + type: string + - name: trace_config.overrides.eip158_block + description: 'eip158_block: EIP158 HF block.' + in: query + required: false + type: string + - name: trace_config.overrides.byzantium_block + description: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = already on + byzantium). + in: query + required: false + type: string + - name: trace_config.overrides.constantinople_block + description: >- + constantinople_block: Constantinople switch block (nil no fork, 0 = + already activated). + in: query + required: false + type: string + - name: trace_config.overrides.petersburg_block + description: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople). + in: query + required: false + type: string + - name: trace_config.overrides.istanbul_block + description: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = already on + istanbul). + in: query + required: false + type: string + - name: trace_config.overrides.muir_glacier_block + description: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, + 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.berlin_block + description: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already on + berlin). + in: query + required: false + type: string + - name: trace_config.overrides.london_block + description: >- + london_block: London switch block (nil = no fork, 0 = already on + london). + in: query + required: false + type: string + - name: trace_config.overrides.arrow_glacier_block + description: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no + fork, 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.gray_glacier_block + description: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no + fork, 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.merge_netsplit_block + description: >- + merge_netsplit_block: Virtual fork after The Merge to use as a + network splitter. + in: query + required: false + type: string + - name: trace_config.overrides.shanghai_block + description: >- + shanghai_block switch block (nil = no fork, 0 = already on + shanghai). + in: query + required: false + type: string + - name: trace_config.overrides.cancun_block + description: cancun_block switch block (nil = no fork, 0 = already on cancun). + in: query + required: false + type: string + - name: trace_config.enable_memory + description: enable_memory switches memory capture. + in: query + required: false + type: boolean + - name: trace_config.enable_return_data + description: enable_return_data switches the capture of return data. + in: query + required: false + type: boolean + - name: trace_config.tracer_json_config + description: tracer_json_config configures the tracer using a JSON string. + in: query + required: false + type: string + - name: block_number + description: block_number of the traced block. + in: query + required: false + type: string + format: int64 + - name: block_hash + description: block_hash (hex) of the traced block. + in: query + required: false + type: string + - name: block_time + description: block_time of the traced block. + in: query + required: false + type: string + format: date-time + - name: proposer_address + description: proposer_address is the address of the requested block. + in: query + required: false + type: string + format: byte + - name: chain_id + description: >- + chain_id is the eip155 chain id parsed from the requested block + header. + in: query + required: false + type: string + format: int64 + tags: + - Query + /ethermint/evm/v1/trace_tx: + get: + summary: TraceTx implements the `debug_traceTransaction` rpc api + operationId: TraceTx + responses: + '200': + description: A successful response. + schema: + type: object + properties: + data: + type: string + format: byte + title: data is the response serialized in bytes + title: QueryTraceTxResponse defines TraceTx response + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: msg.data.type_url + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a canonical + form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types that + they + + expect it to use in the context of Any. However, for URLs which use + the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + in: query + required: false + type: string + - name: msg.data.value + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + in: query + required: false + type: string + format: byte + - name: msg.size + description: size is the encoded storage size of the transaction (DEPRECATED). + in: query + required: false + type: number + format: double + - name: msg.hash + description: hash of the transaction in hex format. + in: query + required: false + type: string + - name: msg.from + description: >- + from is the ethereum signer address in hex format. This address + value is checked + + against the address derived from the signature (V, R, S) using the + + secp256k1 elliptic curve. + in: query + required: false + type: string + - name: trace_config.tracer + description: tracer is a custom javascript tracer. + in: query + required: false + type: string + - name: trace_config.timeout + description: >- + timeout overrides the default timeout of 5 seconds for + JavaScript-based tracing + + calls. + in: query + required: false + type: string + - name: trace_config.reexec + description: >- + reexec defines the number of blocks the tracer is willing to go + back. + in: query + required: false + type: string + format: uint64 + - name: trace_config.disable_stack + description: disable_stack switches stack capture. + in: query + required: false + type: boolean + - name: trace_config.disable_storage + description: disable_storage switches storage capture. + in: query + required: false + type: boolean + - name: trace_config.debug + description: debug can be used to print output during capture end. + in: query + required: false + type: boolean + - name: trace_config.limit + description: >- + limit defines the maximum length of output, but zero means + unlimited. + in: query + required: false + type: integer + format: int32 + - name: trace_config.overrides.homestead_block + description: homestead_block switch (nil no fork, 0 = already homestead). + in: query + required: false + type: string + - name: trace_config.overrides.dao_fork_block + description: >- + dao_fork_block corresponds to TheDAO hard-fork switch block (nil no + fork). + in: query + required: false + type: string + - name: trace_config.overrides.dao_fork_support + description: >- + dao_fork_support defines whether the nodes supports or opposes the + DAO hard-fork. + in: query + required: false + type: boolean + - name: trace_config.overrides.eip150_block + description: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil + no fork). + in: query + required: false + type: string + - name: trace_config.overrides.eip150_hash + description: >- + eip150_hash: EIP150 HF hash (needed for header only clients as only + gas pricing changed). + in: query + required: false + type: string + - name: trace_config.overrides.eip155_block + description: 'eip155_block: EIP155Block HF block.' + in: query + required: false + type: string + - name: trace_config.overrides.eip158_block + description: 'eip158_block: EIP158 HF block.' + in: query + required: false + type: string + - name: trace_config.overrides.byzantium_block + description: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = already on + byzantium). + in: query + required: false + type: string + - name: trace_config.overrides.constantinople_block + description: >- + constantinople_block: Constantinople switch block (nil no fork, 0 = + already activated). + in: query + required: false + type: string + - name: trace_config.overrides.petersburg_block + description: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople). + in: query + required: false + type: string + - name: trace_config.overrides.istanbul_block + description: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = already on + istanbul). + in: query + required: false + type: string + - name: trace_config.overrides.muir_glacier_block + description: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, + 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.berlin_block + description: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already on + berlin). + in: query + required: false + type: string + - name: trace_config.overrides.london_block + description: >- + london_block: London switch block (nil = no fork, 0 = already on + london). + in: query + required: false + type: string + - name: trace_config.overrides.arrow_glacier_block + description: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no + fork, 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.gray_glacier_block + description: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no + fork, 0 = already activated). + in: query + required: false + type: string + - name: trace_config.overrides.merge_netsplit_block + description: >- + merge_netsplit_block: Virtual fork after The Merge to use as a + network splitter. + in: query + required: false + type: string + - name: trace_config.overrides.shanghai_block + description: >- + shanghai_block switch block (nil = no fork, 0 = already on + shanghai). + in: query + required: false + type: string + - name: trace_config.overrides.cancun_block + description: cancun_block switch block (nil = no fork, 0 = already on cancun). + in: query + required: false + type: string + - name: trace_config.enable_memory + description: enable_memory switches memory capture. + in: query + required: false + type: boolean + - name: trace_config.enable_return_data + description: enable_return_data switches the capture of return data. + in: query + required: false + type: boolean + - name: trace_config.tracer_json_config + description: tracer_json_config configures the tracer using a JSON string. + in: query + required: false + type: string + - name: block_number + description: block_number of requested transaction. + in: query + required: false + type: string + format: int64 + - name: block_hash + description: block_hash of requested transaction. + in: query + required: false + type: string + - name: block_time + description: block_time of requested transaction. + in: query + required: false + type: string + format: date-time + - name: proposer_address + description: proposer_address is the proposer of the requested block. + in: query + required: false + type: string + format: byte + - name: chain_id + description: >- + chain_id is the the eip155 chain id parsed from the requested block + header. + in: query + required: false + type: string + format: int64 + tags: + - Query + /ethermint/evm/v1/validator_account/{cons_address}: + get: + summary: >- + ValidatorAccount queries an Ethereum account's from a validator + consensus + + Address. + operationId: ValidatorAccount + responses: + '200': + description: A successful response. + schema: + type: object + properties: + account_address: + type: string + description: >- + account_address is the cosmos address of the account in bech32 + format. + sequence: + type: string + format: uint64 + description: sequence is the account's sequence number. + account_number: + type: string + format: uint64 + title: account_number is the account number + description: |- + QueryValidatorAccountResponse is the response type for the + Query/ValidatorAccount RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: cons_address + description: cons_address is the validator cons address to query the account for. + in: path + required: true + type: string + tags: + - Query + /ethermint/feemarket/v1/base_fee: + get: + summary: BaseFee queries the base fee of the parent block of the current block. + operationId: FeeMarketBaseFee + responses: + '200': + description: A successful response. + schema: + type: object + properties: + base_fee: + type: string + title: base_fee is the EIP1559 base fee + description: QueryBaseFeeResponse returns the EIP1559 base fee. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /ethermint/feemarket/v1/block_gas: + get: + summary: BlockGas queries the gas used at a given block height + operationId: BlockGas + responses: + '200': + description: A successful response. + schema: + type: object + properties: + gas: + type: string + format: int64 + title: gas is the returned block gas + description: QueryBlockGasResponse returns block gas used for a given height. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /ethermint/feemarket/v1/params: + get: + summary: Params queries the parameters of x/feemarket module. + operationId: FeeMarketParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params define the evm module parameters. + type: object + properties: + no_base_fee: + type: boolean + title: >- + no_base_fee forces the EIP-1559 base fee to 0 (needed for + 0 price calls) + base_fee_change_denominator: + type: integer + format: int64 + description: >- + base_fee_change_denominator bounds the amount the base fee + can change + + between blocks. + elasticity_multiplier: + type: integer + format: int64 + description: >- + elasticity_multiplier bounds the maximum gas limit an + EIP-1559 block may + + have. + enable_height: + type: string + format: int64 + description: >- + enable_height defines at which block height the base fee + calculation is enabled. + base_fee: + type: string + description: base_fee for EIP-1559 blocks. + min_gas_price: + type: string + title: >- + min_gas_price defines the minimum gas price value for + cosmos and eth transactions + min_gas_multiplier: + type: string + title: >- + min_gas_multiplier bounds the minimum gas used to be + charged + + to senders based on gas limit + title: Params defines the EVM module parameters + description: >- + QueryParamsResponse defines the response type for querying x/evm + parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /canto/onboarding/v1/params: + get: + summary: Params retrieves the total set of onboarding parameters. + operationId: OnboardingParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /canto/coinswap/params: + get: + summary: Params returns parameters of the module. + operationId: CoinswapParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + fee: + type: string + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + tax_rate: + type: string + max_standard_coin_per_pool: + type: string + max_swap_amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: Params defines token module's parameters + description: >- + QueryParamsResponse is response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /canto/coinswap/pools: + get: + summary: LiquidityPools returns all the liquidity pools available + operationId: LiquidityPools + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pools: + type: array + items: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryLiquidityPoolsResponse is response type for the + Query/LiquidityPools RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /canto/coinswap/pools/{lpt_denom}: + get: + summary: |- + LiquidityPool returns the liquidity pool for the provided + lpt_denom + operationId: LiquidityPool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + title: >- + QueryLiquidityPoolResponse is response type for the + Query/LiquidityPool RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: lpt_denom + in: path + required: true + type: string + tags: + - Query + /ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address: + get: + summary: >- + EscrowAddress returns the escrow address for a particular port and + channel id. + operationId: EscrowAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + escrow_address: + type: string + title: the escrow account address + description: >- + QueryEscrowAddressResponse is the response type of the + EscrowAddress RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: channel_id + description: unique channel identifier + in: path + required: true + type: string + - name: port_id + description: unique port identifier + in: path + required: true + type: string + tags: + - Query + /ibc/apps/transfer/v1/denom_hashes/{trace}: + get: + summary: DenomHash queries a denomination hash information. + operationId: DenomHash + responses: + '200': + description: A successful response. + schema: + type: object + properties: + hash: + type: string + description: hash (in hex format) of the denomination trace information. + description: >- + QueryDenomHashResponse is the response type for the + Query/DenomHash RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: trace + description: The denomination trace ([port_id]/[channel_id])+/[denom] + in: path + required: true + type: string + tags: + - Query + /ibc/apps/transfer/v1/denom_traces: + get: + summary: DenomTraces queries all denomination traces. + operationId: DenomTraces + responses: + '200': + description: A successful response. + schema: + type: object + properties: + denom_traces: + type: array + items: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used + for tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible + tokens and the + + source tracing information path. + description: denom_traces returns all denominations trace information. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryConnectionsResponse is the response type for the + Query/DenomTraces RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/apps/transfer/v1/denom_traces/{hash}: + get: + summary: DenomTrace queries a denomination trace information. + operationId: DenomTrace + responses: + '200': + description: A successful response. + schema: + type: object + properties: + denom_trace: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used + for tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible + tokens and the + + source tracing information path. + description: >- + QueryDenomTraceResponse is the response type for the + Query/DenomTrace RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: hash + description: >- + hash (in hex format) or denom (full denom with ibc prefix) of the + denomination trace information. + in: path + required: true + type: string + tags: + - Query + /ibc/apps/transfer/v1/denoms/{denom}/total_escrow: + get: + summary: >- + TotalEscrowForDenom returns the total amount of tokens in escrow based + on the denom. + operationId: TotalEscrowForDenom + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QueryTotalEscrowForDenomResponse is the response type for + TotalEscrowForDenom RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + in: path + required: true + type: string + tags: + - Query + /ibc/apps/transfer/v1/params: + get: + summary: Params queries all parameters of the ibc-transfer module. + operationId: TransferParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + send_enabled: + type: boolean + description: >- + send_enabled enables or disables all cross-chain token + transfers from this + + chain. + receive_enabled: + type: boolean + description: >- + receive_enabled enables or disables all cross-chain token + transfers to this + + chain. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /ibc/core/client/v1/client_states: + get: + summary: ClientStates queries all the IBC light clients of a chain. + operationId: ClientStates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + client_states: + type: array + items: + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + title: client state + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + IdentifiedClientState defines a client state with an + additional client + + identifier field. + description: list of stored ClientStates of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + description: >- + QueryClientStatesResponse is the response type for the + Query/ClientStates RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/client/v1/client_states/{client_id}: + get: + summary: ClientState queries an IBC light client. + operationId: ClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryClientStateResponse is the response type for the + Query/ClientState RPC + + method. Besides the client state, it includes a proof and the + height from + + which the proof was retrieved. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client state unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/client/v1/client_status/{client_id}: + get: + summary: Status queries the status of an IBC client. + operationId: ClientStatus + responses: + '200': + description: A successful response. + schema: + type: object + properties: + status: + type: string + description: >- + QueryClientStatusResponse is the response type for the + Query/ClientStatus RPC + + method. It returns the current status of the IBC client. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/client/v1/consensus_states/{client_id}: + get: + summary: |- + ConsensusStates queries all the consensus state associated with a given + client. + operationId: ConsensusStates + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_states: + type: array + items: + type: object + properties: + height: + title: consensus state height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each + height while keeping + + RevisionNumber the same. However some consensus + algorithms may choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as + the RevisionHeight + + gets reset + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state + description: >- + ConsensusStateWithHeight defines a consensus state with an + additional height + + field. + title: consensus states associated with the identifier + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStatesResponse is the response type for the + Query/ConsensusStates RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/client/v1/consensus_states/{client_id}/heights: + get: + summary: >- + ConsensusStateHeights queries the height of every consensus states + associated with a given client. + operationId: ConsensusStateHeights + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state_heights: + type: array + items: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms + may choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes + of updating and + + freezing clients + title: consensus state heights + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStateHeightsResponse is the response type for the + Query/ConsensusStateHeights RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}: + get: + summary: >- + ConsensusState queries a consensus state associated with a client state + at + + a given height. + operationId: ConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + consensus state associated with the client identifier at the + given height + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes + of updating and + + freezing clients + title: >- + QueryConsensusStateResponse is the response type for the + Query/ConsensusState + + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier + in: path + required: true + type: string + - name: revision_number + description: consensus state revision number + in: path + required: true + type: string + format: uint64 + - name: revision_height + description: consensus state revision height + in: path + required: true + type: string + format: uint64 + - name: latest_height + description: >- + latest_height overrrides the height field and queries the latest + stored + + ConsensusState. + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/client/v1/params: + get: + summary: ClientParams queries all parameters of the ibc client submodule. + operationId: ClientParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + allowed_clients: + type: array + items: + type: string + description: >- + allowed_clients defines the list of allowed client state + types which can be created + + and interacted with. If a client type is removed from the + allowed clients list, usage + + of this client will be disabled until it is added again to + the list. + description: >- + QueryClientParamsResponse is the response type for the + Query/ClientParams RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/client/v1/upgraded_client_states: + get: + summary: UpgradedClientState queries an Upgraded IBC light client. + operationId: UpgradedClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + upgraded_client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + description: |- + QueryUpgradedClientStateResponse is the response type for the + Query/UpgradedClientState RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/client/v1/upgraded_consensus_states: + get: + summary: UpgradedConsensusState queries an Upgraded IBC consensus state. + operationId: UpgradedConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + upgraded_consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: Consensus state associated with the request identifier + description: |- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/connection/v1/client_connections/{client_id}: + get: + summary: |- + ClientConnections queries the connection paths associated with a client + state. + operationId: ClientConnections + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connection_paths: + type: array + items: + type: string + description: slice of all the connection paths associated with a client. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was generated + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryClientConnectionsResponse is the response type for the + Query/ClientConnections RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: client_id + description: client identifier associated with a connection + in: path + required: true + type: string + tags: + - Query + /ibc/core/connection/v1/connections: + get: + summary: Connections queries all the IBC connections of a chain. + operationId: Connections + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connections: + type: array + items: + type: object + properties: + id: + type: string + description: connection identifier. + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: >- + list of features compatible with the specified + identifier + description: >- + Version defines the versioning scheme used to + negotiate the IBC verison in + + the connection handshake. + title: >- + IBC version which can be utilised to determine encodings + or protocols for + + channels or packets utilising this connection + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain + associated with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty + chain associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will + be append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: delay period associated with this connection. + description: >- + IdentifiedConnection defines a connection with additional + connection + + identifier field. + description: list of stored connections of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionsResponse is the response type for the + Query/Connections RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/connection/v1/connections/{connection_id}: + get: + summary: Connection queries an IBC connection end. + operationId: Connection + responses: + '200': + description: A successful response. + schema: + type: object + properties: + connection: + title: connection associated with the request identifier + type: object + properties: + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: >- + list of features compatible with the specified + identifier + description: >- + Version defines the versioning scheme used to negotiate + the IBC verison in + + the connection handshake. + description: >- + IBC version which can be utilised to determine encodings + or protocols for + + channels or packets utilising this connection. + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain + associated with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty + chain associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: >- + delay period that must pass before a consensus state can + be used for + + packet-verification NOTE: delay period logic is only + implemented by some + + clients. + description: >- + ConnectionEnd defines a stateful object on a chain connected + to another + + separate one. + + NOTE: there must only be 2 defined ConnectionEnds to establish + + a connection between two chains. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionResponse is the response type for the + Query/Connection RPC + + method. Besides the connection end, it includes a proof and the + height from + + which the proof was retrieved. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/connection/v1/connections/{connection_id}/client_state: + get: + summary: |- + ConnectionClientState queries the client state associated with the + connection. + operationId: ConnectionClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: >- + IdentifiedClientState defines a client state with an + additional client + + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionClientStateResponse is the response type for the + Query/ConnectionClientState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}: + get: + summary: |- + ConnectionConsensusState queries the consensus state associated with the + connection. + operationId: ConnectionConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionConsensusStateResponse is the response type for the + Query/ConnectionConsensusState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection_id + description: connection identifier + in: path + required: true + type: string + - name: revision_number + in: path + required: true + type: string + format: uint64 + - name: revision_height + in: path + required: true + type: string + format: uint64 + tags: + - Query + /ibc/core/connection/v1/params: + get: + summary: ConnectionParams queries all parameters of the ibc connection submodule. + operationId: ConnectionParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_expected_time_per_block: + type: string + format: uint64 + description: >- + maximum expected time per block (in nanoseconds), used to + enforce block delay. This parameter should reflect the + + largest amount of time that the chain might reasonably + take to produce the next block under normal operating + + conditions. A safe choice is 3-5x the expected time per + block. + description: >- + QueryConnectionParamsResponse is the response type for the + Query/ConnectionParams RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /ibc/core/channel/v1/channels: + get: + summary: Channels queries all the IBC channels of a chain. + operationId: Channels + responses: + '200': + description: A successful response. + schema: + type: object + properties: + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: + + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: >- + - ORDER_NONE_UNSPECIFIED: zero-value for channel + ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: >- + IdentifiedChannel defines a channel with additional port and + channel + + identifier fields. + description: list of stored channels of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryChannelsResponse is the response type for the Query/Channels + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}: + get: + summary: Channel queries an IBC Channel. + operationId: Channel + responses: + '200': + description: A successful response. + schema: + type: object + properties: + channel: + title: channel associated with the request identifiers + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: + + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + description: >- + Channel defines pipeline for exactly-once packet delivery + between specific + + modules on separate blockchains, which has at least one end + capable of + + sending packets and one end capable of receiving packets. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryChannelResponse is the response type for the Query/Channel + RPC method. + + Besides the Channel end, it includes a proof and the height from + which the + + proof was retrieved. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state: + get: + summary: >- + ChannelClientState queries for the client state for the channel + associated + + with the provided channel identifiers. + operationId: ChannelClientState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: >- + IdentifiedClientState defines a client state with an + additional client + + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}: + get: + summary: |- + ChannelConsensusState queries for the consensus state for the channel + associated with the provided channel identifiers. + operationId: ChannelConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: revision_number + description: revision number of the consensus state + in: path + required: true + type: string + format: uint64 + - name: revision_height + description: revision height of the consensus state + in: path + required: true + type: string + format: uint64 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence: + get: + summary: >- + NextSequenceReceive returns the next receive sequence for a given + channel. + operationId: NextSequenceReceive + responses: + '200': + description: A successful response. + schema: + type: object + properties: + next_sequence_receive: + type: string + format: uint64 + title: next sequence receive number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QuerySequenceResponse is the request type for the + Query/QueryNextSequenceReceiveResponse RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send: + get: + summary: NextSequenceSend returns the next send sequence for a given channel. + operationId: NextSequenceSend + responses: + '200': + description: A successful response. + schema: + type: object + properties: + next_sequence_send: + type: string + format: uint64 + title: next sequence send number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryNextSequenceSendResponse is the request type for the + Query/QueryNextSequenceSend RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements: + get: + summary: >- + PacketAcknowledgements returns all the packet acknowledgements + associated + + with a channel. + operationId: PacketAcknowledgements + responses: + '200': + description: A successful response. + schema: + type: object + properties: + acknowledgements: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve + and store + + packet commitments, acknowledgements, and receipts. + + Caller is responsible for knowing the context necessary to + interpret this + + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryPacketAcknowledgemetsResponse is the request type for the + Query/QueryPacketAcknowledgements RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: packet_commitment_sequences + description: list of packet sequences. + in: query + required: false + type: array + items: + type: string + format: uint64 + collectionFormat: multi + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}: + get: + summary: PacketAcknowledgement queries a stored packet acknowledgement hash. + operationId: PacketAcknowledgement + responses: + '200': + description: A successful response. + schema: + type: object + properties: + acknowledgement: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryPacketAcknowledgementResponse defines the client query + response for a + + packet which also includes a proof and the height from which the + + proof was retrieved + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: sequence + description: packet sequence + in: path + required: true + type: string + format: uint64 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments: + get: + summary: |- + PacketCommitments returns all the packet commitments hashes associated + with a channel. + operationId: PacketCommitments + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commitments: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve + and store + + packet commitments, acknowledgements, and receipts. + + Caller is responsible for knowing the context necessary to + interpret this + + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryPacketCommitmentsResponse is the request type for the + Query/QueryPacketCommitments RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks: + get: + summary: >- + UnreceivedAcks returns all the unreceived IBC acknowledgements + associated + + with a channel and sequences. + operationId: UnreceivedAcks + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived acknowledgement sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedAcksResponse is the response type for the + Query/UnreceivedAcks RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_ack_sequences + description: list of acknowledgement sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets: + get: + summary: >- + UnreceivedPackets returns all the unreceived IBC packets associated with + a + + channel and sequences. + operationId: UnreceivedPackets + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived packet sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedPacketsResponse is the response type for the + Query/UnreceivedPacketCommitments RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_commitment_sequences + description: list of packet sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}: + get: + summary: PacketCommitment queries a stored packet commitment hash. + operationId: PacketCommitment + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commitment: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryPacketCommitmentResponse defines the client query response + for a packet + + which also includes a proof and the height from which the proof + was + + retrieved + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: sequence + description: packet sequence + in: path + required: true + type: string + format: uint64 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}: + get: + summary: >- + PacketReceipt queries if a given packet sequence has been received on + the + + queried chain + operationId: PacketReceipt + responses: + '200': + description: A successful response. + schema: + type: object + properties: + received: + type: boolean + title: success flag for if receipt exists + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryPacketReceiptResponse defines the client query response for a + packet + + receipt which also includes a proof, and the height from which the + proof was + + retrieved + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: sequence + description: packet sequence + in: path + required: true + type: string + format: uint64 + tags: + - Query + /ibc/core/channel/v1/connections/{connection}/channels: + get: + summary: |- + ConnectionChannels queries all the channels associated with a connection + end. + operationId: ConnectionChannels + responses: + '200': + description: A successful response. + schema: + type: object + properties: + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: >- + State defines if a channel is in one of the following + states: + + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: >- + - ORDER_NONE_UNSPECIFIED: zero-value for channel + ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other + end of the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which + packets sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: >- + IdentifiedChannel defines a channel with additional port and + channel + + identifier fields. + description: list of channels associated with a connection. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionChannelsResponse is the Response type for the + Query/QueryConnectionChannels RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: connection + description: connection unique identifier + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/auth/v1beta1/account_info/{address}: + get: + summary: AccountInfo queries account info which is common to all account types. + description: 'Since: cosmos-sdk 0.47' + operationId: AccountInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + info: + description: info is the account info which is represented by BaseAccount. + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + account_number: + type: string + format: uint64 + sequence: + type: string + format: uint64 + description: |- + QueryAccountInfoResponse is the Query/AccountInfo response type. + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the account address string. + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/accounts: + get: + summary: Accounts returns all the existing accounts. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + + + Since: cosmos-sdk 0.43 + operationId: Accounts + responses: + '200': + description: A successful response. + schema: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: accounts are the existing accounts + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAccountsResponse is the response type for the Query/Accounts + RPC method. + + + Since: cosmos-sdk 0.43 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/auth/v1beta1/accounts/{address}: + get: + summary: Account returns account details based on address. + operationId: AuthAccount + responses: + '200': + description: A successful response. + schema: + type: object + properties: + account: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryAccountResponse is the response type for the Query/Account + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address defines the address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/address_by_id/{id}: + get: + summary: AccountAddressByID returns account address based on account number. + description: 'Since: cosmos-sdk 0.46.2' + operationId: AccountAddressByID + responses: + '200': + description: A successful response. + schema: + type: object + properties: + account_address: + type: string + description: 'Since: cosmos-sdk 0.46.2' + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: id + description: |- + Deprecated, use account_id instead + + id is the account number of the address to be queried. This field + should have been an uint64 (like all account numbers), and will be + updated to uint64 in a future version of the auth query. + in: path + required: true + type: string + format: int64 + - name: account_id + description: |- + account_id is the account number of the address to be queried. + + Since: cosmos-sdk 0.47 + in: query + required: false + type: string + format: uint64 + tags: + - Query + /cosmos/auth/v1beta1/bech32: + get: + summary: Bech32Prefix queries bech32Prefix + description: 'Since: cosmos-sdk 0.46' + operationId: Bech32Prefix + responses: + '200': + description: A successful response. + schema: + type: object + properties: + bech32_prefix: + type: string + description: >- + Bech32PrefixResponse is the response type for Bech32Prefix rpc + method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/auth/v1beta1/bech32/{address_bytes}: + get: + summary: AddressBytesToString converts Account Address bytes to string + description: 'Since: cosmos-sdk 0.46' + operationId: AddressBytesToString + responses: + '200': + description: A successful response. + schema: + type: object + properties: + address_string: + type: string + description: >- + AddressBytesToStringResponse is the response type for + AddressString rpc method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address_bytes + in: path + required: true + type: string + format: byte + tags: + - Query + /cosmos/auth/v1beta1/bech32/{address_string}: + get: + summary: AddressStringToBytes converts Address string to bytes + description: 'Since: cosmos-sdk 0.46' + operationId: AddressStringToBytes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + address_bytes: + type: string + format: byte + description: >- + AddressStringToBytesResponse is the response type for AddressBytes + rpc method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address_string + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/module_accounts: + get: + summary: ModuleAccounts returns all the existing module accounts. + description: 'Since: cosmos-sdk 0.46' + operationId: ModuleAccounts + responses: + '200': + description: A successful response. + schema: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountsResponse is the response type for the + Query/ModuleAccounts RPC method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/auth/v1beta1/module_accounts/{name}: + get: + summary: ModuleAccountByName returns the module account info by module name + operationId: ModuleAccountByName + responses: + '200': + description: A successful response. + schema: + type: object + properties: + account: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountByNameResponse is the response type for the + Query/ModuleAccountByName RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: name + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/params: + get: + summary: Params queries all parameters. + operationId: AuthParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/authz/v1beta1/grants: + get: + summary: Returns list of `Authorization`, granted to the grantee by the granter. + operationId: Grants + responses: + '200': + description: A successful response. + schema: + type: object + properties: + grants: + type: array + items: + type: object + properties: + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If + null, then the grant + + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: >- + authorizations is a list of grants granted for grantee by + granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGrantsResponse is the response type for the + Query/Authorizations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: query + required: false + type: string + - name: grantee + in: query + required: false + type: string + - name: msg_type_url + description: >- + Optional, msg_type_url, when set, will query only grants matching + given msg type. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/authz/v1beta1/grants/grantee/{grantee}: + get: + summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. + description: 'Since: cosmos-sdk 0.46' + operationId: GranteeGrants + responses: + '200': + description: A successful response. + schema: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: grantee + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/authz/v1beta1/grants/granter/{granter}: + get: + summary: GranterGrants returns list of `GrantAuthorization`, granted by granter. + description: 'Since: cosmos-sdk 0.46' + operationId: GranterGrants + responses: + '200': + description: A successful response. + schema: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/balances/{address}: + get: + summary: AllBalances queries the balance of all coins for a single account. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: AllBalances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllBalancesResponse is the response type for the + Query/AllBalances RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: resolve_denom + description: >- + resolve_denom is the flag to resolve the denom into a human-readable + form from the metadata. + + + Since: cosmos-sdk 0.50 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/balances/{address}/by_denom: + get: + summary: Balance queries the balance of a single coin for a single account. + operationId: BankBalance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QueryBalanceResponse is the response type for the Query/Balance + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/bank/v1beta1/denom_owners/{denom}: + get: + summary: >- + DenomOwners queries for all account addresses that own a particular + token + + denomination. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + + + Since: cosmos-sdk 0.46 + operationId: DenomOwners + responses: + '200': + description: A successful response. + schema: + type: object + properties: + denom_owners: + type: array + items: + type: object + properties: + address: + type: string + description: >- + address defines the address that owns a particular + denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DenomOwner defines structure representing an account that + owns or holds a + + particular denominated token. It contains the account + address and account + + balance of the denominated token. + + + Since: cosmos-sdk 0.46 + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomOwnersResponse defines the RPC response of a DenomOwners + RPC query. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: >- + denom defines the coin denomination to query all account holders + for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/denom_owners_by_query: + get: + summary: >- + DenomOwnersByQuery queries for all account addresses that own a + particular token + + denomination. + description: 'Since: cosmos-sdk 0.50.3' + operationId: DenomOwnersByQuery + responses: + '200': + description: A successful response. + schema: + type: object + properties: + denom_owners: + type: array + items: + type: object + properties: + address: + type: string + description: >- + address defines the address that owns a particular + denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DenomOwner defines structure representing an account that + owns or holds a + + particular denominated token. It contains the account + address and account + + balance of the denominated token. + + + Since: cosmos-sdk 0.46 + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomOwnersByQueryResponse defines the RPC response of a + DenomOwnersByQuery RPC query. + + + Since: cosmos-sdk 0.50.3 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: >- + denom defines the coin denomination to query all account holders + for. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/denoms_metadata: + get: + summary: |- + DenomsMetadata queries the client metadata for all registered coin + denominations. + operationId: DenomsMetadata + responses: + '200': + description: A successful response. + schema: + type: object + properties: + metadatas: + type: array + items: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given + denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + + raise the base_denom to in order to equal the + given DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a + given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges + (eg: ATOM). This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the + registered tokens. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/denoms_metadata/{denom}: + get: + summary: DenomMetadata queries the client metadata of a given coin denomination. + operationId: DenomMetadata + responses: + '200': + description: A successful response. + schema: + type: object + properties: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: denom is the coin denom to query the metadata for. + in: path + required: true + type: string + tags: + - Query + /cosmos/bank/v1beta1/denoms_metadata_by_query_string: + get: + summary: >- + DenomMetadataByQueryString queries the client metadata of a given coin + denomination. + operationId: DenomMetadataByQueryString + responses: + '200': + description: A successful response. + schema: + type: object + properties: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataByQueryStringResponse is the response type for + the Query/DenomMetadata RPC + + method. Identical with QueryDenomMetadataResponse but receives + denom as query string in request. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: denom is the coin denom to query the metadata for. + in: query + required: false + type: string + tags: + - Query + /cosmos/bank/v1beta1/params: + get: + summary: Params queries the parameters of x/bank module. + operationId: BankParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params provides the parameters of the bank module. + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status + (whether a denom is + + sendable). + description: >- + Deprecated: Use of SendEnabled in params is deprecated. + + For genesis, use the newly added send_enabled field in the + genesis object. + + Storage, lookup, and manipulation of this information is + now in the keeper. + + + As of cosmos-sdk 0.47, this only exists for backwards + compatibility of genesis files. + default_send_enabled: + type: boolean + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /cosmos/bank/v1beta1/send_enabled: + get: + summary: SendEnabled queries for SendEnabled entries. + description: >- + This query only returns denominations that have specific SendEnabled + settings. + + Any denomination that does not have a specific setting will use the + default + + params.default_send_enabled, and will not be returned by this query. + + + Since: cosmos-sdk 0.47 + operationId: SendEnabled + responses: + '200': + description: A successful response. + schema: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status + (whether a denom is + + sendable). + pagination: + description: >- + pagination defines the pagination in the response. This field + is only + + populated if the denoms field in the request is empty. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QuerySendEnabledResponse defines the RPC response of a SendEnable + query. + + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denoms + description: >- + denoms is the specific denoms you want look up. Leave empty to get + all entries. + in: query + required: false + type: array + items: + type: string + collectionFormat: multi + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/spendable_balances/{address}: + get: + summary: >- + SpendableBalances queries the spendable balance of all coins for a + single + + account. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + + + Since: cosmos-sdk 0.46 + operationId: SpendableBalances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: balances is the spendable balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QuerySpendableBalancesResponse defines the gRPC response structure + for querying + + an account's spendable balances. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + description: address is the address to query spendable balances for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/spendable_balances/{address}/by_denom: + get: + summary: >- + SpendableBalanceByDenom queries the spendable balance of a single denom + for + + a single account. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + + + Since: cosmos-sdk 0.47 + operationId: SpendableBalanceByDenom + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QuerySpendableBalanceByDenomResponse defines the gRPC response + structure for + + querying an account's spendable balance for a specific denom. + + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/bank/v1beta1/supply: + get: + summary: TotalSupply queries the total supply of all coins. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: TotalSupply + responses: + '200': + description: A successful response. + schema: + type: object + properties: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: |- + pagination defines the pagination in the response. + + Since: cosmos-sdk 0.43 + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the + Query/TotalSupply RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/supply/by_denom: + get: + summary: SupplyOf queries the supply of a single coin. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: SupplyOf + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/distribution/v1beta1/community_pool: + get: + summary: CommunityPool queries the community pool coins. + operationId: CommunityPool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool + + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards: + get: + summary: |- + DelegationTotalRewards queries the total rewards accrued by each + validator. + operationId: DelegationTotalRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. + + + NOTE: The amount field is an Dec which implements the + custom method + + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + description: rewards defines all the rewards accrued by a delegator. + total: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: total defines the sum of all the rewards. + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}: + get: + summary: DelegationRewards queries the total rewards accrued by a delegation. + operationId: DelegationRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: rewards defines the rewards accrued by a delegation. + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/delegators/{delegator_address}/validators: + get: + summary: DelegatorValidators queries the validators of a delegator. + operationId: DistDelegatorValidators + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validators: + type: array + items: + type: string + description: >- + validators defines the validators a delegator is delegating + for. + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address: + get: + summary: DelegatorWithdrawAddress queries withdraw address of a delegator. + operationId: DelegatorWithdrawAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + withdraw_address: + type: string + description: withdraw_address defines the delegator address to query for. + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/params: + get: + summary: Params queries params of the distribution module. + operationId: DistributionParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + description: >- + Deprecated: The base_proposer_reward field is deprecated + and is no longer used + + in the x/distribution module's reward mechanism. + bonus_proposer_reward: + type: string + description: >- + Deprecated: The bonus_proposer_reward field is deprecated + and is no longer used + + in the x/distribution module's reward mechanism. + withdraw_addr_enabled: + type: boolean + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /cosmos/distribution/v1beta1/validators/{validator_address}: + get: + summary: >- + ValidatorDistributionInfo queries validator commission and + self-delegation rewards for validator + operationId: ValidatorDistributionInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + operator_address: + type: string + description: operator_address defines the validator operator address. + self_bond_rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: self_bond_rewards defines the self delegations rewards. + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: commission defines the commission the validator received. + description: >- + QueryValidatorDistributionInfoResponse is the response type for + the Query/ValidatorDistributionInfo RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/validators/{validator_address}/commission: + get: + summary: ValidatorCommission queries accumulated commission for a validator. + operationId: ValidatorCommission + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commission: + description: commission defines the commission the validator received. + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. + + + NOTE: The amount field is an Dec which implements the + custom method + + signatures required by gogoproto. + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards: + get: + summary: ValidatorOutstandingRewards queries rewards of a validator address. + operationId: ValidatorOutstandingRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. + + + NOTE: The amount field is an Dec which implements the + custom method + + signatures required by gogoproto. + description: >- + ValidatorOutstandingRewards represents outstanding + (un-withdrawn) rewards + + for a validator inexpensive to track, allows simple sanity + checks. + description: >- + QueryValidatorOutstandingRewardsResponse is the response type for + the + + Query/ValidatorOutstandingRewards RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/validators/{validator_address}/slashes: + get: + summary: ValidatorSlashes queries slash events of a validator. + operationId: ValidatorSlashes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + slashes: + type: array + items: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: >- + ValidatorSlashEvent represents a validator slash event. + + Height is implicit within the store key. + + This is needed to calculate appropriate amount of staking + tokens + + for delegations which are withdrawn after a slash has + occurred. + description: slashes defines the slashes the validator received. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + - name: starting_height + description: >- + starting_height defines the optional starting height to query the + slashes. + in: query + required: false + type: string + format: uint64 + - name: ending_height + description: >- + starting_height defines the optional ending height to query the + slashes. + in: query + required: false + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}: + get: + summary: Allowance returns granted allwance to the grantee by the granter. + operationId: Allowance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + allowance: + description: allowance is a allowance granted for grantee by granter. + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + title: >- + Grant is stored in the KVStore to record a grant with full + context + description: >- + QueryAllowanceResponse is the response type for the + Query/Allowance RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + description: >- + granter is the address of the user granting an allowance of their + funds. + in: path + required: true + type: string + - name: grantee + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + in: path + required: true + type: string + tags: + - Query + /cosmos/feegrant/v1beta1/allowances/{grantee}: + get: + summary: Allowances returns all the grants for the given grantee address. + operationId: Allowances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + title: >- + Grant is stored in the KVStore to record a grant with full + context + description: allowances are allowance's granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesResponse is the response type for the + Query/Allowances RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: grantee + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/feegrant/v1beta1/issued/{granter}: + get: + summary: AllowancesByGranter returns all the grants given by an address + description: 'Since: cosmos-sdk 0.46' + operationId: AllowancesByGranter + responses: + '200': + description: A successful response. + schema: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + title: >- + Grant is stored in the KVStore to record a grant with full + context + description: allowances that have been issued by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesByGranterResponse is the response type for the + Query/AllowancesByGranter RPC method. + + + Since: cosmos-sdk 0.46 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/evidence/v1beta1/evidence: + get: + summary: AllEvidence queries all evidence. + operationId: AllEvidence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllEvidenceResponse is the response type for the + Query/AllEvidence RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/evidence/v1beta1/evidence/{hash}: + get: + summary: Evidence queries evidence based on evidence hash. + operationId: Evidence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + evidence: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryEvidenceResponse is the response type for the Query/Evidence + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: hash + description: |- + hash defines the evidence hash of the requested evidence. + + Since: cosmos-sdk 0.47 + in: path + required: true + type: string + - name: evidence_hash + description: |- + evidence_hash defines the hash of the requested evidence. + Deprecated: Use hash, a HEX encoded string, instead. + in: query + required: false + type: string + format: byte + tags: + - Query + /cosmos/gov/v1beta1/params/{params_type}: + get: + summary: Params queries all parameters of the gov module. + operationId: GovParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + voting_params: + description: voting_params defines the parameters related to voting. + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 + + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: + type: string + format: byte + description: >- + Minimum percentage of total stake needed to vote for a + result to be + + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + veto_threshold: + type: string + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + + vetoed. Default value: 1/3. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: params_type + description: >- + params_type defines which parameters to query for, can be one of + "voting", + + "tallying" or "deposit". + in: path + required: true + type: string + tags: + - Query + /cosmos/gov/v1beta1/proposals: + get: + summary: Proposals queries all proposals based on given status. + operationId: Proposals + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proposals: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not + populated until the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: >- + abstain is the number of abstain votes on a + proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: >- + no_with_veto is the number of no with veto votes on + a proposal. + submit_time: + type: string + format: date-time + description: submit_time is the time of proposal submission. + deposit_end_time: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + voting_start_time: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + voting_end_time: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: >- + Proposal defines the core field members of a governance + proposal. + description: proposals defines all the requested governance proposals. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryProposalsResponse is the response type for the + Query/Proposals RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_status + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + in: query + required: false + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + - name: voter + description: voter defines the voter address for the proposals. + in: query + required: false + type: string + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}: + get: + summary: Proposal queries proposal details based on ProposalID. + operationId: Proposal + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not populated + until the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + submit_time: + type: string + format: date-time + description: submit_time is the time of proposal submission. + deposit_end_time: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + voting_start_time: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + voting_end_time: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: >- + Proposal defines the core field members of a governance + proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits: + get: + summary: Deposits queries all deposits of a single proposal. + operationId: Deposits + responses: + '200': + description: A successful response. + schema: + type: object + properties: + deposits: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: >- + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to + an active + + proposal. + description: deposits defines the requested deposits. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}: + get: + summary: >- + Deposit queries single deposit information based on proposalID, + depositor address. + operationId: Deposit + responses: + '200': + description: A successful response. + schema: + type: object + properties: + deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: >- + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to + an active + + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: path + required: true + type: string + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}/tally: + get: + summary: TallyResult queries the tally of a proposal vote. + operationId: TallyResult + responses: + '200': + description: A successful response. + schema: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}/votes: + get: + summary: Votes queries votes of a given proposal. + operationId: Votes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field + is set in queries + + if and only if `len(options) == 1` and that option has + weight 1. In all + + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: >- + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + + + Since: cosmos-sdk 0.43 + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + description: >- + Vote defines a vote on a governance proposal. + + A Vote consists of a proposal ID, the voter, and the vote + option. + description: votes defines the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryVotesResponse is the response type for the Query/Votes RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}: + get: + summary: Vote queries voted information based on proposalID, voterAddr. + operationId: Vote + responses: + '200': + description: A successful response. + schema: + type: object + properties: + vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is + set in queries + + if and only if `len(options) == 1` and that option has + weight 1. In all + + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: >- + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + + + Since: cosmos-sdk 0.43 + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + description: >- + Vote defines a vote on a governance proposal. + + A Vote consists of a proposal ID, the voter, and the vote + option. + description: >- + QueryVoteResponse is the response type for the Query/Vote RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: voter + description: voter defines the voter address for the proposals. + in: path + required: true + type: string + tags: + - Query + /cosmos/slashing/v1beta1/params: + get: + summary: Params queries the parameters of slashing module + operationId: SlashingParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: >- + Params represents the parameters used for by the slashing + module. + title: >- + QueryParamsResponse is the response type for the Query/Params RPC + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos: + get: + summary: SigningInfos queries signing info of all validators + operationId: SigningInfos + responses: + '200': + description: A successful response. + schema: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + un-jailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is + bonded in a block and + + _may_ have signed a pre-commit or not. This in + conjunction with the + + signed_blocks_window param determines the index in the + missed block bitmap. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed + out of validator + + set). It is set once the validator commits an + equivocation or for any other + + configured misbehavior. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to + avoid unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the + Query/SigningInfos RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos/{cons_address}: + get: + summary: SigningInfo queries the signing info of given cons address + operationId: SigningInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + val_signing_info: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + un-jailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is + bonded in a block and + + _may_ have signed a pre-commit or not. This in conjunction + with the + + signed_blocks_window param determines the index in the + missed block bitmap. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out + of validator + + set). It is set once the validator commits an equivocation + or for any other + + configured misbehavior. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: >- + val_signing_info is the signing info of requested val cons + address + title: >- + QuerySigningInfoResponse is the response type for the + Query/SigningInfo RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: cons_address + description: cons_address is the address to query signing info of + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/delegations/{delegator_addr}: + get: + summary: >- + DelegatorDelegations queries all delegations of a given delegator + address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: DelegatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + delegation_responses defines all the delegations' info of a + delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations: + get: + summary: Redelegations queries redelegations of given address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: Redelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + redelegation_responses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation + source operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + unbonding_id: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding + has been stopped by external modules + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular + delegator's redelegating bonds + + from a particular source validator to a particular + destination validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + unbonding_id: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding + has been stopped by external modules + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a + RedelegationEntry except that it + + contains a balance in addition to shares which is more + suitable for client + + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except + that its entries + + contain a balance in addition to shares which is more + suitable for client + + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryRedelegationsResponse is response type for the + Query/Redelegations RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: src_validator_addr + description: src_validator_addr defines the validator address to redelegate from. + in: query + required: false + type: string + - name: dst_validator_addr + description: dst_validator_addr defines the validator address to redelegate to. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations: + get: + summary: >- + DelegatorUnbondingDelegations queries all unbonding delegations of a + given + + delegator address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: DelegatorUnbondingDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + unbonding_id: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has + been stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryUnbondingDelegatorDelegationsResponse is response type for + the + + Query/UnbondingDelegatorDelegations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators: + get: + summary: |- + DelegatorValidators queries all validators info for given delegator + address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: DelegatorValidators + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators defines the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}: + get: + summary: |- + DelegatorValidator queries validator info for given delegator validator + pair. + operationId: DelegatorValidator + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total amount + of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation + of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided + by the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/historical_info/{height}: + get: + summary: HistoricalInfo queries the historical info for given height. + operationId: HistoricalInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + hist: + description: hist defines the historical info at the given height. + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the + validator's operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must + contain at least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name + should be in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, + for URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message + definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup + results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently + available in the official + + protobuf release, and it is not used for type + URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of + the above specified type. + description: >- + `Any` contains an arbitrary serialized protocol + buffer message along with a + + URL that describes the type of the serialized + message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods + of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will + by default use + + 'type.googleapis.com/full.type.name' as the type URL + and the unpack + + methods only use the fully qualified type name after + the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" + will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded + message, with an + + additional field `@type` which contains the type + URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to + the `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature + (ex. UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height + at which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time + for the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a + fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate + was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has + been stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to + coins. Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When + coins are delegated to + + this validator, the validator is credited with a + delegation whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: >- + QueryHistoricalInfoResponse is response type for the + Query/HistoricalInfo RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + description: height defines at which height to query the historical info. + in: path + required: true + type: string + format: int64 + tags: + - Query + /cosmos/staking/v1beta1/params: + get: + summary: Parameters queries the staking parameters. + operationId: StakingParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params holds all the parameters of this module. + type: object + properties: + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding + delegation or redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: >- + historical_entries is the number of historical entries to + persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission + rate that a validator can charge their delegators + description: >- + QueryParamsResponse is response type for the Query/Params RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/staking/v1beta1/pool: + get: + summary: Pool queries the pool info. + operationId: Pool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + description: pool defines the pool info. + type: object + properties: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: QueryPoolResponse is response type for the Query/Pool RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + /cosmos/staking/v1beta1/validators: + get: + summary: Validators queries all validators that match the given status. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: Validators + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators contains all the queried validators. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: status + description: status enables to query for validators matching a given status. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/validators/{validator_addr}: + get: + summary: Validator queries validator info for given validator address. + operationId: Validator + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total amount + of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation + of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided + by the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + title: >- + QueryValidatorResponse is response type for the Query/Validator + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations: + get: + summary: ValidatorDelegations queries delegate info for given validator. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: ValidatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}: + get: + summary: Delegation queries delegate info for given validator delegator pair. + operationId: Delegation + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_response: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the voting + power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + QueryDelegationResponse is response type for the Query/Delegation + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation: + get: + summary: |- + UnbondingDelegation queries unbonding info for given validator delegator + pair. + operationId: UnbondingDelegation + responses: + '200': + description: A successful response. + schema: + type: object + properties: + unbond: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. + description: >- + QueryDelegationResponse is response type for the + Query/UnbondingDelegation + + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations: + get: + summary: >- + ValidatorUnbondingDelegations queries unbonding delegations of a + validator. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: ValidatorUnbondingDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + unbonding_id: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has + been stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryValidatorUnbondingDelegationsResponse is response type for + the + + Query/ValidatorUnbondingDelegations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validator_addr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /cosmos/tx/v1beta1/decode: + post: + summary: TxDecode decodes the transaction. + description: 'Since: cosmos-sdk 0.47' + operationId: TxDecode + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeResponse' + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + + Since: cosmos-sdk 0.47 + tags: + - Service + /cosmos/tx/v1beta1/decode/amino: + post: + summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. + description: 'Since: cosmos-sdk 0.47' + operationId: TxDecodeAmino + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amino_json: + type: string + description: >- + TxDecodeAminoResponse is the response type for the + Service.TxDecodeAmino + + RPC method. + + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + type: object + properties: + amino_binary: + type: string + format: byte + description: >- + TxDecodeAminoRequest is the request type for the + Service.TxDecodeAmino + + RPC method. + + + Since: cosmos-sdk 0.47 + tags: + - Service + /cosmos/tx/v1beta1/encode: + post: + summary: TxEncode encodes the transaction. + description: 'Since: cosmos-sdk 0.47' + operationId: TxEncode + responses: + '200': + description: A successful response. + schema: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the encoded transaction bytes. + description: |- + TxEncodeResponse is the response type for the + Service.TxEncode method. + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeRequest' + tags: + - Service + /cosmos/tx/v1beta1/encode/amino: + post: + summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. + description: 'Since: cosmos-sdk 0.47' + operationId: TxEncodeAmino + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amino_binary: + type: string + format: byte + description: >- + TxEncodeAminoResponse is the response type for the + Service.TxEncodeAmino + + RPC method. + + + Since: cosmos-sdk 0.47 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + type: object + properties: + amino_json: + type: string + description: >- + TxEncodeAminoRequest is the request type for the + Service.TxEncodeAmino + + RPC method. + + + Since: cosmos-sdk 0.47 + tags: + - Service + /cosmos/tx/v1beta1/simulate: + post: + summary: Simulate simulates executing a transaction for estimating gas usage. + operationId: Simulate + responses: + '200': + description: A successful response. + schema: + type: object + properties: + gas_info: + description: gas_info is the information about gas used in the simulation. + type: object + properties: + gas_wanted: + type: string + format: uint64 + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gas_used: + type: string + format: uint64 + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler + execution. It MUST be + + length prefixed in order to separate data from multiple + message executions. + + Deprecated. This field is still populated, but prefer + msg_response instead + + because it also contains the Msg response typeURL. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted + during message + + or handler execution. + msg_responses: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + msg_responses contains the Msg handler responses type + packed in Anys. + + + Since: cosmos-sdk 0.46 + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' + tags: + - Service + /cosmos/tx/v1beta1/txs: + get: + summary: GetTxsEvent fetches txs by event. + operationId: GetTxsEvent + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: events + description: >- + events is the list of transaction event type. + + Deprecated post v0.47.x: use query instead, which should contain a + valid + + events query. + in: query + required: false + type: array + items: + type: string + collectionFormat: multi + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: order_by + description: |2- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + in: query + required: false + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED + - name: page + description: |- + page is the page number to query, starts at 1. If not provided, will + default to first page. + in: query + required: false + type: string + format: uint64 + - name: limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: query + description: >- + query defines the transaction event query that is proxied to + Tendermint's + + TxSearch RPC method. The query must be valid. + + + Since cosmos-sdk 0.50 + in: query + required: false + type: string + tags: + - Service + post: + summary: BroadcastTx broadcast transaction. + operationId: BroadcastTx + responses: + '200': + description: A successful response. + schema: + type: object + properties: + tx_response: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + raw_log: + type: string + description: >- + The output of the application's logger (raw string). May + be + + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where + the key and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where + all the attributes + + contain key/value pairs that are strings instead + of raw bytes. + description: >- + Events contains a slice of Event objects that were + emitted during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed + tx ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the + weighted median of + + the timestamps of the valid votes in the block.LastCommit. + For height == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a + transaction. Note, + + these events include those emitted by processing all the + messages and those + + emitted from the ante. Whereas Logs contains the events, + with + + additional metadata, emitted only by processing the + messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + in: body + required: true + schema: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: >- + BroadcastMode specifies the broadcast mode for the + TxService.Broadcast RPC + + method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x + onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest + + RPC method. + tags: + - Service + /cosmos/tx/v1beta1/txs/block/{height}: + get: + summary: GetBlockWithTxs fetches a block with decoded txs. + description: 'Since: cosmos-sdk 0.45.2' + operationId: GetBlockWithTxs + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + description: height is the height of the block to query. + in: path + required: true + type: string + format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Service + /cosmos/tx/v1beta1/txs/{hash}: + get: + summary: GetTx fetches a tx by hash. + operationId: GetTx + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: hash + description: hash is the tx hash to query, encoded as a hex string. + in: path + required: true + type: string + tags: + - Service + /cosmos/base/tendermint/v1beta1/abci_query: + get: + summary: >- + ABCIQuery defines a query handler that supports ABCI queries directly to + the + + application, bypassing Tendermint completely. The ABCI query must + contain + + a valid and supported path, including app, custom, p2p, and store. + description: 'Since: cosmos-sdk 0.46' + operationId: ABCIQuery + responses: + '200': + description: A successful response. + schema: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + info: + type: string + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + proof_ops: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle + root. The data could + + be arbitrary format, providing necessary data for + example neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type + defined in Tendermint. + description: >- + ProofOps is Merkle proof defined by the list of ProofOps. + + + Note: This type is a duplicate of the ProofOps proto type + defined in Tendermint. + height: + type: string + format: int64 + codespace: + type: string + description: >- + ABCIQueryResponse defines the response structure for the ABCIQuery + gRPC query. + + + Note: This type is a duplicate of the ResponseQuery proto type + defined in + + Tendermint. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: data + in: query + required: false + type: string + format: byte + - name: path + in: query + required: false + type: string + - name: height + in: query + required: false + type: string + format: int64 + - name: prove + in: query + required: false + type: boolean + tags: + - Service + /cosmos/base/tendermint/v1beta1/blocks/latest: + get: + summary: GetLatestBlock returns the latest block. + operationId: GetLatestBlock + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing + on the order first. + + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer + address, formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, + we convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing + on the order first. + + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + description: >- + Block is tendermint type Block, with the Header proposer + address + + field converted to bech32 string. + description: >- + GetLatestBlockResponse is the response type for the + Query/GetLatestBlock RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/blocks/{height}: + get: + summary: GetBlockByHeight queries block for given height. + operationId: GetBlockByHeight + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing + on the order first. + + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer + address, formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, + we convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing + on the order first. + + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the + application. Only valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the + validator if they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + description: >- + Block is tendermint type Block, with the Header proposer + address + + field converted to bech32 string. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + in: path + required: true + type: string + format: int64 + tags: + - Service + /cosmos/base/tendermint/v1beta1/node_info: + get: + summary: GetNodeInfo queries the current node info. + operationId: GetNodeInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + default_node_info: + type: object + properties: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + application_version: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/syncing: + get: + summary: GetSyncing queries node syncing. + operationId: GetSyncing + responses: + '200': + description: A successful response. + schema: + type: object + properties: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/validatorsets/latest: + get: + summary: GetLatestValidatorSet queries latest validator-set. + operationId: GetLatestValidatorSet + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Service + /cosmos/base/tendermint/v1beta1/validatorsets/{height}: + get: + summary: GetValidatorSetByHeight queries validator-set at a given height. + operationId: GetValidatorSetByHeight + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + in: path + required: true + type: string + format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Service +definitions: + canto.epochs.v1.EpochInfo: + type: object + properties: + identifier: + type: string + start_time: + type: string + format: date-time + duration: + type: string + current_epoch: + type: string + format: int64 + current_epoch_start_time: + type: string + format: date-time + epoch_counting_started: + type: boolean + current_epoch_start_height: + type: string + format: int64 + canto.epochs.v1.QueryCurrentEpochResponse: + type: object + properties: + current_epoch: + type: string + format: int64 + canto.epochs.v1.QueryEpochsInfoResponse: + type: object + properties: + epochs: + type: array + items: + type: object + properties: + identifier: + type: string + start_time: + type: string + format: date-time + duration: + type: string + current_epoch: + type: string + format: int64 + current_epoch_start_time: + type: string + format: date-time + epoch_counting_started: + type: boolean + current_epoch_start_height: + type: string + format: int64 + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in UIs. + + count_total is only respected when offset is used. It is ignored when + key + + is set. + reverse: + type: boolean + description: >- + reverse is set to true if results are to be returned in the descending + order. + + + Since: cosmos-sdk 0.43 + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; PageResponse page = 2; } google.protobuf.Any: type: object properties: - type_url: - type: string - value: - type: string - format: byte - grpc.gateway.runtime.Error: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a canonical + form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types that + they + + expect it to use in the context of Any. However, for URLs which use + the + + scheme `http`, `https`, or no scheme, one can optionally set up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along with + a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + grpc.gateway.runtime.Error: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + canto.erc20.v1.Owner: + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + canto.erc20.v1.Params: + type: object + properties: + enable_erc20: + type: boolean + description: parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. + enable_evm_hook: + type: boolean + description: >- + parameter to enable the EVM hook that converts an ERC20 token to a + Cosmos + + Coin by transferring the Tokens through a MsgEthereumTx to the + + ModuleAddress Ethereum address. + title: Params defines the erc20 module params + canto.erc20.v1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + enable_erc20: + type: boolean + description: >- + parameter to enable the conversion of Cosmos coins <--> ERC20 + tokens. + enable_evm_hook: + type: boolean + description: >- + parameter to enable the EVM hook that converts an ERC20 token to a + Cosmos + + Coin by transferring the Tokens through a MsgEthereumTx to the + + ModuleAddress Ethereum address. + title: Params defines the erc20 module params + description: |- + QueryParamsResponse is the response type for the Query/Params RPC + method. + canto.erc20.v1.QueryTokenPairResponse: + type: object + properties: + token_pair: + type: object + properties: + erc20_address: + type: string + title: address of ERC20 contract token + denom: + type: string + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + description: |- + QueryTokenPairResponse is the response type for the Query/TokenPair RPC + method. + canto.erc20.v1.QueryTokenPairsResponse: + type: object + properties: + token_pairs: + type: array + items: + type: object + properties: + erc20_address: + type: string + title: address of ERC20 contract token + denom: + type: string + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC + method. + canto.erc20.v1.TokenPair: + type: object + properties: + erc20_address: + type: string + title: address of ERC20 contract token + denom: + type: string + title: cosmos base denomination to be mapped to + enabled: + type: boolean + title: shows token mapping enable status + contract_owner: + title: >- + ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external + address) + type: string + enum: + - OWNER_UNSPECIFIED + - OWNER_MODULE + - OWNER_EXTERNAL + default: OWNER_UNSPECIFIED + description: |- + Owner enumerates the ownership of a ERC20 contract. + + - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. + - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. + - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. + description: >- + TokenPair defines an instance that records a pairing consisting of a + native + Cosmos Coin and an ERC20 token address. + canto.inflation.v1.ExponentialCalculation: + type: object + properties: + a: + type: string + title: initial value + r: + type: string + title: reduction factor + c: + type: string + title: long term inflation + bonding_target: + type: string + title: bonding target + max_variance: + type: string + title: max variance + title: >- + ExponentialCalculation holds factors to calculate exponential inflation on + + each period. Calculation reference: + + periodProvision = exponentialDecay * bondingIncentive + + f(x) = (a * (1 - r) ^ x + c) * (1 + max_variance - + bondedRatio * + + (max_variance / bonding_target)) + canto.inflation.v1.InflationDistribution: + type: object + properties: + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted minted_denom that + is + + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted minted_denom + that + + is + + // to be allocated to the incentives module address + + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + + community_pool defines the proportion of the minted minted_denom that + is to + + be allocated to the community pool + title: >- + InflationDistribution defines the distribution in which inflation is + + allocated through minting on each epoch (staking, incentives, community). + It + + excludes the team vesting distribution, as this is minted once at genesis. + + The initial InflationDistribution can be calculated from the Evmos Token + + Model like this: + + mintDistribution1 = distribution1 / (1 - teamVestingDistribution) + + 0.5333333 = 40% / (1 - 25%) + canto.inflation.v1.Params: + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + exponential_calculation: + title: variables to calculate exponential inflation + type: object + properties: + a: + type: string + title: initial value + r: + type: string + title: reduction factor + c: + type: string + title: long term inflation + bonding_target: + type: string + title: bonding target + max_variance: + type: string + title: max variance + inflation_distribution: + title: inflation distribution of the minted denom + type: object + properties: + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted minted_denom + that is + + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted + minted_denom that + + is + + // to be allocated to the incentives module address + + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + + community_pool defines the proportion of the minted minted_denom + that is to + + be allocated to the community pool + enable_inflation: + type: boolean + title: parameter to enable inflation and halt increasing the skipped_epochs + description: Params holds parameters for the inflation module. + canto.inflation.v1.QueryCirculatingSupplyResponse: + type: object + properties: + circulating_supply: + title: total amount of coins in circulation + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + QueryCirculatingSupplyResponse is the response type for the + Query/CirculatingSupply RPC method. + canto.inflation.v1.QueryEpochMintProvisionResponse: + type: object + properties: + epoch_mint_provision: + description: epoch_mint_provision is the current minting per epoch provision value. + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + QueryEpochMintProvisionResponse is the response type for the + Query/EpochMintProvision RPC method. + canto.inflation.v1.QueryInflationRateResponse: + type: object + properties: + inflation_rate: + type: string + title: rate by which the total supply increases within one period + description: >- + QueryInflationRateResponse is the response type for the + Query/InflationRate + + RPC method. + canto.inflation.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + exponential_calculation: + title: variables to calculate exponential inflation + type: object + properties: + a: + type: string + title: initial value + r: + type: string + title: reduction factor + c: + type: string + title: long term inflation + bonding_target: + type: string + title: bonding target + max_variance: + type: string + title: max variance + inflation_distribution: + title: inflation distribution of the minted denom + type: object + properties: + staking_rewards: + type: string + title: >- + staking_rewards defines the proportion of the minted + minted_denom that is + + to be allocated as staking rewards + community_pool: + type: string + title: >- + // usage_incentives defines the proportion of the minted + minted_denom that + + is + + // to be allocated to the incentives module address + + string usage_incentives = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + + community_pool defines the proportion of the minted + minted_denom that is to + + be allocated to the community pool + enable_inflation: + type: boolean + title: >- + parameter to enable inflation and halt increasing the + skipped_epochs + description: QueryParamsResponse is the response type for the Query/Params RPC method. + canto.inflation.v1.QueryPeriodResponse: + type: object + properties: + period: + type: string + format: uint64 + description: period is the current minting per epoch provision value. + description: QueryPeriodResponse is the response type for the Query/Period RPC method. + canto.inflation.v1.QuerySkippedEpochsResponse: + type: object + properties: + skipped_epochs: + type: string + format: uint64 + description: number of epochs that the inflation module has been disabled. + description: >- + QuerySkippedEpochsResponse is the response type for the + Query/SkippedEpochs + + RPC method. + cosmos.base.v1beta1.DecCoin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + ethermint.evm.v1.ChainConfig: + type: object + properties: + homestead_block: + type: string + title: homestead_block switch (nil no fork, 0 = already homestead) + dao_fork_block: + type: string + title: >- + dao_fork_block corresponds to TheDAO hard-fork switch block (nil no + fork) + dao_fork_support: + type: boolean + title: >- + dao_fork_support defines whether the nodes supports or opposes the DAO + hard-fork + eip150_block: + type: string + title: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no + fork) + eip150_hash: + type: string + title: >- + eip150_hash: EIP150 HF hash (needed for header only clients as only + gas pricing changed) + eip155_block: + type: string + title: 'eip155_block: EIP155Block HF block' + eip158_block: + type: string + title: 'eip158_block: EIP158 HF block' + byzantium_block: + type: string + title: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = already on + byzantium) + constantinople_block: + type: string + title: >- + constantinople_block: Constantinople switch block (nil no fork, 0 = + already activated) + petersburg_block: + type: string + title: 'petersburg_block: Petersburg switch block (nil same as Constantinople)' + istanbul_block: + type: string + title: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = already on + istanbul) + muir_glacier_block: + type: string + title: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 + = already activated) + berlin_block: + type: string + title: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already on + berlin) + london_block: + type: string + title: >- + london_block: London switch block (nil = no fork, 0 = already on + london) + arrow_glacier_block: + type: string + title: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no + fork, 0 = already activated) + gray_glacier_block: + type: string + title: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, + 0 = already activated) + merge_netsplit_block: + type: string + title: >- + merge_netsplit_block: Virtual fork after The Merge to use as a network + splitter + shanghai_block: + type: string + title: shanghai_block switch block (nil = no fork, 0 = already on shanghai) + cancun_block: + type: string + title: cancun_block switch block (nil = no fork, 0 = already on cancun) + description: >- + ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int + values + + instead of *big.Int. + ethermint.evm.v1.EstimateGasResponse: + type: object + properties: + gas: + type: string + format: uint64 + title: gas returns the estimated gas + title: EstimateGasResponse defines EstimateGas response + ethermint.evm.v1.Log: + type: object + properties: + address: + type: string + title: address of the contract that generated the event + topics: + type: array + items: + type: string + description: topics is a list of topics provided by the contract. + data: + type: string + format: byte + title: data which is supplied by the contract, usually ABI-encoded + block_number: + type: string + format: uint64 + title: block_number of the block in which the transaction was included + tx_hash: + type: string + title: tx_hash is the transaction hash + tx_index: + type: string + format: uint64 + title: tx_index of the transaction in the block + block_hash: + type: string + title: block_hash of the block in which the transaction was included + index: + type: string + format: uint64 + title: index of the log in the block + removed: + type: boolean + description: >- + removed is true if this log was reverted due to a chain + + reorganisation. You must pay attention to this field if you receive + logs + + through a filter query. + description: >- + Log represents an protobuf compatible Ethereum Log that defines a contract + + log event. These events are generated by the LOG opcode and stored/indexed + by + + the node. + + + NOTE: address, topics and data are consensus fields. The rest of the + fields + + are derived, i.e. filled in by the nodes, but not secured by consensus. + ethermint.evm.v1.MsgEthereumTx: + type: object + properties: + data: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: data is inner transaction data of the Ethereum transaction + size: + type: number + format: double + title: size is the encoded storage size of the transaction (DEPRECATED) + hash: + type: string + title: hash of the transaction in hex format + from: + type: string + title: >- + from is the ethereum signer address in hex format. This address value + is checked + + against the address derived from the signature (V, R, S) using the + + secp256k1 elliptic curve + description: MsgEthereumTx encapsulates an Ethereum transaction as an SDK message. + ethermint.evm.v1.MsgEthereumTxResponse: + type: object + properties: + hash: + type: string + title: >- + hash of the ethereum transaction in hex format. This hash differs from + the + + Tendermint sha256 hash of the transaction bytes. See + + https://github.com/tendermint/tendermint/issues/6539 for reference + logs: + type: array + items: + type: object + properties: + address: + type: string + title: address of the contract that generated the event + topics: + type: array + items: + type: string + description: topics is a list of topics provided by the contract. + data: + type: string + format: byte + title: data which is supplied by the contract, usually ABI-encoded + block_number: + type: string + format: uint64 + title: block_number of the block in which the transaction was included + tx_hash: + type: string + title: tx_hash is the transaction hash + tx_index: + type: string + format: uint64 + title: tx_index of the transaction in the block + block_hash: + type: string + title: block_hash of the block in which the transaction was included + index: + type: string + format: uint64 + title: index of the log in the block + removed: + type: boolean + description: >- + removed is true if this log was reverted due to a chain + + reorganisation. You must pay attention to this field if you + receive logs + + through a filter query. + description: >- + Log represents an protobuf compatible Ethereum Log that defines a + contract + + log event. These events are generated by the LOG opcode and + stored/indexed by + + the node. + + + NOTE: address, topics and data are consensus fields. The rest of the + fields + + are derived, i.e. filled in by the nodes, but not secured by + consensus. + description: |- + logs contains the transaction hash and the proto-compatible ethereum + logs. + ret: + type: string + format: byte + title: >- + ret is the returned data from evm function (result or data supplied + with revert + + opcode) + vm_error: + type: string + title: vm_error is the error returned by vm execution + gas_used: + type: string + format: uint64 + title: gas_used specifies how much gas was consumed by the transaction + description: MsgEthereumTxResponse defines the Msg/EthereumTx response type. + ethermint.evm.v1.Params: + type: object + properties: + evm_denom: + type: string + description: |- + evm_denom represents the token denomination used to run the EVM state + transitions. + enable_create: + type: boolean + title: >- + enable_create toggles state transitions that use the vm.Create + function + enable_call: + type: boolean + title: enable_call toggles state transitions that use the vm.Call function + extra_eips: + type: array + items: + type: string + format: int64 + title: extra_eips defines the additional EIPs for the vm.Config + chain_config: + title: chain_config defines the EVM chain configuration parameters + type: object + properties: + homestead_block: + type: string + title: homestead_block switch (nil no fork, 0 = already homestead) + dao_fork_block: + type: string + title: >- + dao_fork_block corresponds to TheDAO hard-fork switch block (nil + no fork) + dao_fork_support: + type: boolean + title: >- + dao_fork_support defines whether the nodes supports or opposes the + DAO hard-fork + eip150_block: + type: string + title: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil + no fork) + eip150_hash: + type: string + title: >- + eip150_hash: EIP150 HF hash (needed for header only clients as + only gas pricing changed) + eip155_block: + type: string + title: 'eip155_block: EIP155Block HF block' + eip158_block: + type: string + title: 'eip158_block: EIP158 HF block' + byzantium_block: + type: string + title: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = already + on byzantium) + constantinople_block: + type: string + title: >- + constantinople_block: Constantinople switch block (nil no fork, 0 + = already activated) + petersburg_block: + type: string + title: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople) + istanbul_block: + type: string + title: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = already on + istanbul) + muir_glacier_block: + type: string + title: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no + fork, 0 = already activated) + berlin_block: + type: string + title: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already on + berlin) + london_block: + type: string + title: >- + london_block: London switch block (nil = no fork, 0 = already on + london) + arrow_glacier_block: + type: string + title: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no + fork, 0 = already activated) + gray_glacier_block: + type: string + title: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no + fork, 0 = already activated) + merge_netsplit_block: + type: string + title: >- + merge_netsplit_block: Virtual fork after The Merge to use as a + network splitter + shanghai_block: + type: string + title: >- + shanghai_block switch block (nil = no fork, 0 = already on + shanghai) + cancun_block: + type: string + title: cancun_block switch block (nil = no fork, 0 = already on cancun) + description: >- + ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int + values + + instead of *big.Int. + allow_unprotected_txs: + type: boolean + description: |- + allow_unprotected_txs defines if replay-protected (i.e non EIP155 + signed) transactions can be executed on the state machine. + title: Params defines the EVM module parameters + ethermint.evm.v1.QueryAccountResponse: + type: object + properties: + balance: + type: string + description: balance is the balance of the EVM denomination. + code_hash: + type: string + description: code_hash is the hex-formatted code bytes from the EOA. + nonce: + type: string + format: uint64 + description: nonce is the account's sequence number. + description: >- + QueryAccountResponse is the response type for the Query/Account RPC + method. + ethermint.evm.v1.QueryBalanceResponse: + type: object + properties: + balance: + type: string + description: balance is the balance of the EVM denomination. + description: >- + QueryBalanceResponse is the response type for the Query/Balance RPC + method. + ethermint.evm.v1.QueryBaseFeeResponse: + type: object + properties: + base_fee: + type: string + title: base_fee is the EIP1559 base fee + description: QueryBaseFeeResponse returns the EIP1559 base fee. + ethermint.evm.v1.QueryCodeResponse: + type: object + properties: + code: + type: string + format: byte + description: code represents the code bytes from an ethereum address. + description: |- + QueryCodeResponse is the response type for the Query/Code RPC + method. + ethermint.evm.v1.QueryCosmosAccountResponse: + type: object + properties: + cosmos_address: + type: string + description: cosmos_address is the cosmos address of the account. + sequence: + type: string + format: uint64 + description: sequence is the account's sequence number. + account_number: + type: string + format: uint64 + title: account_number is the account number + description: >- + QueryCosmosAccountResponse is the response type for the + Query/CosmosAccount + + RPC method. + ethermint.evm.v1.QueryParamsResponse: + type: object + properties: + params: + description: params define the evm module parameters. + type: object + properties: + evm_denom: + type: string + description: >- + evm_denom represents the token denomination used to run the EVM + state + + transitions. + enable_create: + type: boolean + title: >- + enable_create toggles state transitions that use the vm.Create + function + enable_call: + type: boolean + title: >- + enable_call toggles state transitions that use the vm.Call + function + extra_eips: + type: array + items: + type: string + format: int64 + title: extra_eips defines the additional EIPs for the vm.Config + chain_config: + title: chain_config defines the EVM chain configuration parameters + type: object + properties: + homestead_block: + type: string + title: homestead_block switch (nil no fork, 0 = already homestead) + dao_fork_block: + type: string + title: >- + dao_fork_block corresponds to TheDAO hard-fork switch block + (nil no fork) + dao_fork_support: + type: boolean + title: >- + dao_fork_support defines whether the nodes supports or opposes + the DAO hard-fork + eip150_block: + type: string + title: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block + (nil no fork) + eip150_hash: + type: string + title: >- + eip150_hash: EIP150 HF hash (needed for header only clients as + only gas pricing changed) + eip155_block: + type: string + title: 'eip155_block: EIP155Block HF block' + eip158_block: + type: string + title: 'eip158_block: EIP158 HF block' + byzantium_block: + type: string + title: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = + already on byzantium) + constantinople_block: + type: string + title: >- + constantinople_block: Constantinople switch block (nil no + fork, 0 = already activated) + petersburg_block: + type: string + title: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople) + istanbul_block: + type: string + title: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = + already on istanbul) + muir_glacier_block: + type: string + title: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no + fork, 0 = already activated) + berlin_block: + type: string + title: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already + on berlin) + london_block: + type: string + title: >- + london_block: London switch block (nil = no fork, 0 = already + on london) + arrow_glacier_block: + type: string + title: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = + no fork, 0 = already activated) + gray_glacier_block: + type: string + title: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = + no fork, 0 = already activated) + merge_netsplit_block: + type: string + title: >- + merge_netsplit_block: Virtual fork after The Merge to use as a + network splitter + shanghai_block: + type: string + title: >- + shanghai_block switch block (nil = no fork, 0 = already on + shanghai) + cancun_block: + type: string + title: >- + cancun_block switch block (nil = no fork, 0 = already on + cancun) + description: >- + ChainConfig defines the Ethereum ChainConfig parameters using + *sdk.Int values + + instead of *big.Int. + allow_unprotected_txs: + type: boolean + description: |- + allow_unprotected_txs defines if replay-protected (i.e non EIP155 + signed) transactions can be executed on the state machine. + title: Params defines the EVM module parameters + description: >- + QueryParamsResponse defines the response type for querying x/evm + parameters. + ethermint.evm.v1.QueryStorageResponse: + type: object + properties: + value: + type: string + description: >- + value defines the storage state value hash associated with the given + key. + description: |- + QueryStorageResponse is the response type for the Query/Storage RPC + method. + ethermint.evm.v1.QueryTraceBlockResponse: + type: object + properties: + data: + type: string + format: byte + title: data is the response serialized in bytes + title: QueryTraceBlockResponse defines TraceBlock response + ethermint.evm.v1.QueryTraceTxResponse: + type: object + properties: + data: + type: string + format: byte + title: data is the response serialized in bytes + title: QueryTraceTxResponse defines TraceTx response + ethermint.evm.v1.QueryValidatorAccountResponse: + type: object + properties: + account_address: + type: string + description: account_address is the cosmos address of the account in bech32 format. + sequence: + type: string + format: uint64 + description: sequence is the account's sequence number. + account_number: + type: string + format: uint64 + title: account_number is the account number + description: |- + QueryValidatorAccountResponse is the response type for the + Query/ValidatorAccount RPC method. + ethermint.evm.v1.TraceConfig: + type: object + properties: + tracer: + type: string + title: tracer is a custom javascript tracer + timeout: + type: string + title: >- + timeout overrides the default timeout of 5 seconds for + JavaScript-based tracing + + calls + reexec: + type: string + format: uint64 + title: reexec defines the number of blocks the tracer is willing to go back + disable_stack: + type: boolean + title: disable_stack switches stack capture + disable_storage: + type: boolean + title: disable_storage switches storage capture + debug: + type: boolean + title: debug can be used to print output during capture end + limit: + type: integer + format: int32 + title: limit defines the maximum length of output, but zero means unlimited + overrides: + title: overrides can be used to execute a trace using future fork rules + type: object + properties: + homestead_block: + type: string + title: homestead_block switch (nil no fork, 0 = already homestead) + dao_fork_block: + type: string + title: >- + dao_fork_block corresponds to TheDAO hard-fork switch block (nil + no fork) + dao_fork_support: + type: boolean + title: >- + dao_fork_support defines whether the nodes supports or opposes the + DAO hard-fork + eip150_block: + type: string + title: >- + eip150_block: EIP150 implements the Gas price changes + + (https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil + no fork) + eip150_hash: + type: string + title: >- + eip150_hash: EIP150 HF hash (needed for header only clients as + only gas pricing changed) + eip155_block: + type: string + title: 'eip155_block: EIP155Block HF block' + eip158_block: + type: string + title: 'eip158_block: EIP158 HF block' + byzantium_block: + type: string + title: >- + byzantium_block: Byzantium switch block (nil no fork, 0 = already + on byzantium) + constantinople_block: + type: string + title: >- + constantinople_block: Constantinople switch block (nil no fork, 0 + = already activated) + petersburg_block: + type: string + title: >- + petersburg_block: Petersburg switch block (nil same as + Constantinople) + istanbul_block: + type: string + title: >- + istanbul_block: Istanbul switch block (nil no fork, 0 = already on + istanbul) + muir_glacier_block: + type: string + title: >- + muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no + fork, 0 = already activated) + berlin_block: + type: string + title: >- + berlin_block: Berlin switch block (nil = no fork, 0 = already on + berlin) + london_block: + type: string + title: >- + london_block: London switch block (nil = no fork, 0 = already on + london) + arrow_glacier_block: + type: string + title: >- + arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no + fork, 0 = already activated) + gray_glacier_block: + type: string + title: >- + gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no + fork, 0 = already activated) + merge_netsplit_block: + type: string + title: >- + merge_netsplit_block: Virtual fork after The Merge to use as a + network splitter + shanghai_block: + type: string + title: >- + shanghai_block switch block (nil = no fork, 0 = already on + shanghai) + cancun_block: + type: string + title: cancun_block switch block (nil = no fork, 0 = already on cancun) + description: >- + ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int + values + + instead of *big.Int. + enable_memory: + type: boolean + title: enable_memory switches memory capture + enable_return_data: + type: boolean + title: enable_return_data switches the capture of return data + tracer_json_config: + type: string + title: tracer_json_config configures the tracer using a JSON string + description: TraceConfig holds extra parameters to trace functions. + ethermint.feemarket.v1.Params: + type: object + properties: + no_base_fee: + type: boolean + title: >- + no_base_fee forces the EIP-1559 base fee to 0 (needed for 0 price + calls) + base_fee_change_denominator: + type: integer + format: int64 + description: |- + base_fee_change_denominator bounds the amount the base fee can change + between blocks. + elasticity_multiplier: + type: integer + format: int64 + description: >- + elasticity_multiplier bounds the maximum gas limit an EIP-1559 block + may + + have. + enable_height: + type: string + format: int64 + description: >- + enable_height defines at which block height the base fee calculation + is enabled. + base_fee: + type: string + description: base_fee for EIP-1559 blocks. + min_gas_price: + type: string + title: >- + min_gas_price defines the minimum gas price value for cosmos and eth + transactions + min_gas_multiplier: + type: string + title: |- + min_gas_multiplier bounds the minimum gas used to be charged + to senders based on gas limit + title: Params defines the EVM module parameters + ethermint.feemarket.v1.QueryBaseFeeResponse: + type: object + properties: + base_fee: + type: string + title: base_fee is the EIP1559 base fee + description: QueryBaseFeeResponse returns the EIP1559 base fee. + ethermint.feemarket.v1.QueryBlockGasResponse: + type: object + properties: + gas: + type: string + format: int64 + title: gas is the returned block gas + description: QueryBlockGasResponse returns block gas used for a given height. + ethermint.feemarket.v1.QueryParamsResponse: + type: object + properties: + params: + description: params define the evm module parameters. + type: object + properties: + no_base_fee: + type: boolean + title: >- + no_base_fee forces the EIP-1559 base fee to 0 (needed for 0 price + calls) + base_fee_change_denominator: + type: integer + format: int64 + description: >- + base_fee_change_denominator bounds the amount the base fee can + change + + between blocks. + elasticity_multiplier: + type: integer + format: int64 + description: >- + elasticity_multiplier bounds the maximum gas limit an EIP-1559 + block may + + have. + enable_height: + type: string + format: int64 + description: >- + enable_height defines at which block height the base fee + calculation is enabled. + base_fee: + type: string + description: base_fee for EIP-1559 blocks. + min_gas_price: + type: string + title: >- + min_gas_price defines the minimum gas price value for cosmos and + eth transactions + min_gas_multiplier: + type: string + title: |- + min_gas_multiplier bounds the minimum gas used to be charged + to senders based on gas limit + title: Params defines the EVM module parameters + description: >- + QueryParamsResponse defines the response type for querying x/evm + parameters. + canto.onboarding.v1.Params: + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module + canto.onboarding.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + enable_onboarding: + type: boolean + title: enable onboarding IBC middleware + auto_swap_threshold: + type: string + whitelisted_channels: + type: array + items: + type: string + title: Params holds parameters for the onboarding module + description: QueryParamsResponse is the response type for the Query/Params RPC method. + canto.coinswap.v1.Params: + type: object + properties: + fee: + type: string + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + tax_rate: + type: string + max_standard_coin_per_pool: + type: string + max_swap_amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: Params defines token module's parameters + canto.coinswap.v1.PoolInfo: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + canto.coinswap.v1.QueryLiquidityPoolResponse: + type: object + properties: + pool: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + title: >- + QueryLiquidityPoolResponse is response type for the Query/LiquidityPool + RPC + + method + canto.coinswap.v1.QueryLiquidityPoolsResponse: + type: object + properties: + pools: + type: array + items: + type: object + properties: + id: + type: string + escrow_address: + type: string + title: escrow account for deposit tokens + standard: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: main token balance + token: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: counterparty token balance + lpt: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: liquidity token balance + fee: + type: string + title: liquidity pool fee + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryLiquidityPoolsResponse is response type for the Query/LiquidityPools + RPC + + method + canto.coinswap.v1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + fee: + type: string + pool_creation_fee: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + tax_rate: + type: string + max_standard_coin_per_pool: + type: string + max_swap_amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: Params defines token module's parameters + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.base.v1beta1.Coin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + ibc.applications.transfer.v1.DenomTrace: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used for tracing + the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible tokens and + the + + source tracing information path. + ibc.applications.transfer.v1.Params: + type: object + properties: + send_enabled: + type: boolean + description: >- + send_enabled enables or disables all cross-chain token transfers from + this + + chain. + receive_enabled: + type: boolean + description: >- + receive_enabled enables or disables all cross-chain token transfers to + this + + chain. + description: >- + Params defines the set of IBC transfer parameters. + + NOTE: To prevent a single token from being transferred, set the + + TransfersEnabled parameter to true and then set the bank module's + SendEnabled + + parameter for the denomination to false. + ibc.applications.transfer.v1.QueryDenomHashResponse: + type: object + properties: + hash: + type: string + description: hash (in hex format) of the denomination trace information. + description: |- + QueryDenomHashResponse is the response type for the Query/DenomHash RPC + method. + ibc.applications.transfer.v1.QueryDenomTraceResponse: + type: object + properties: + denom_trace: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used for + tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible tokens + and the + + source tracing information path. + description: |- + QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC + method. + ibc.applications.transfer.v1.QueryDenomTracesResponse: + type: object + properties: + denom_traces: + type: array + items: + type: object + properties: + path: + type: string + description: >- + path defines the chain of port/channel identifiers used for + tracing the + + source of the fungible token. + base_denom: + type: string + description: base denomination of the relayed fungible token. + description: >- + DenomTrace contains the base denomination for ICS20 fungible tokens + and the + + source tracing information path. + description: denom_traces returns all denominations trace information. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryConnectionsResponse is the response type for the Query/DenomTraces + RPC + + method. + ibc.applications.transfer.v1.QueryEscrowAddressResponse: + type: object + properties: + escrow_address: + type: string + title: the escrow account address + description: >- + QueryEscrowAddressResponse is the response type of the EscrowAddress RPC + method. + ibc.applications.transfer.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + send_enabled: + type: boolean + description: >- + send_enabled enables or disables all cross-chain token transfers + from this + + chain. + receive_enabled: + type: boolean + description: >- + receive_enabled enables or disables all cross-chain token + transfers to this + + chain. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QueryTotalEscrowForDenomResponse is the response type for + TotalEscrowForDenom RPC method. + ibc.core.client.v1.ConsensusStateWithHeight: + type: object + properties: + height: + title: consensus state height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state + description: >- + ConsensusStateWithHeight defines a consensus state with an additional + height + + field. + ibc.core.client.v1.Height: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: |- + Normally the RevisionHeight is incremented at each height while keeping + RevisionNumber the same. However some consensus algorithms may choose to + reset the height in certain conditions e.g. hard forks, state-machine + breaking changes In these cases, the RevisionNumber is incremented so that + height continues to be monitonically increasing even as the RevisionHeight + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes of updating + and + + freezing clients + ibc.core.client.v1.IdentifiedClientState: + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + title: client state + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: |- + IdentifiedClientState defines a client state with an additional client + identifier field. + ibc.core.client.v1.Params: + type: object + properties: + allowed_clients: + type: array + items: + type: string + description: >- + allowed_clients defines the list of allowed client state types which + can be created + + and interacted with. If a client type is removed from the allowed + clients list, usage + + of this client will be disabled until it is added again to the list. + description: Params defines the set of IBC light client parameters. + ibc.core.client.v1.QueryClientParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + allowed_clients: + type: array + items: + type: string + description: >- + allowed_clients defines the list of allowed client state types + which can be created + + and interacted with. If a client type is removed from the allowed + clients list, usage + + of this client will be disabled until it is added again to the + list. + description: >- + QueryClientParamsResponse is the response type for the Query/ClientParams + RPC + + method. + ibc.core.client.v1.QueryClientStateResponse: + type: object + properties: + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryClientStateResponse is the response type for the Query/ClientState + RPC + + method. Besides the client state, it includes a proof and the height from + + which the proof was retrieved. + ibc.core.client.v1.QueryClientStatesResponse: + type: object + properties: + client_states: + type: array + items: + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + title: client state + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + IdentifiedClientState defines a client state with an additional + client + + identifier field. + description: list of stored ClientStates of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + description: >- + QueryClientStatesResponse is the response type for the Query/ClientStates + RPC + + method. + ibc.core.client.v1.QueryClientStatusResponse: + type: object + properties: + status: + type: string + description: >- + QueryClientStatusResponse is the response type for the Query/ClientStatus + RPC + + method. It returns the current status of the IBC client. + ibc.core.client.v1.QueryConsensusStateHeightsResponse: + type: object + properties: + consensus_state_heights: + type: array + items: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is incremented + so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes of + updating and + + freezing clients + title: consensus state heights + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStateHeightsResponse is the response type for the + Query/ConsensusStateHeights RPC method + ibc.core.client.v1.QueryConsensusStateResponse: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + consensus state associated with the client identifier at the given + height + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + Height is a monotonically increasing data type + + that can be compared against another Height for the purposes of + updating and + + freezing clients + title: >- + QueryConsensusStateResponse is the response type for the + Query/ConsensusState + + RPC method + ibc.core.client.v1.QueryConsensusStatesResponse: + type: object + properties: + consensus_states: + type: array + items: + type: object + properties: + height: + title: consensus state height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state + description: >- + ConsensusStateWithHeight defines a consensus state with an + additional height + + field. + title: consensus states associated with the identifier + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: |- + QueryConsensusStatesResponse is the response type for the + Query/ConsensusStates RPC method + ibc.core.client.v1.QueryUpgradedClientStateResponse: + type: object + properties: + upgraded_client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state associated with the request identifier + description: |- + QueryUpgradedClientStateResponse is the response type for the + Query/UpgradedClientState RPC method. + ibc.core.client.v1.QueryUpgradedConsensusStateResponse: + type: object + properties: + upgraded_consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: Consensus state associated with the request identifier + description: |- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState RPC method. + ibc.core.commitment.v1.MerklePrefix: + type: object + properties: + key_prefix: + type: string + format: byte + title: |- + MerklePrefix is merkle path prefixed to the key. + The constructed key from the Path and the key will be append(Path.KeyPath, + append(Path.KeyPrefix, key...)) + ibc.core.connection.v1.ConnectionEnd: + type: object + properties: + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: list of features compatible with the specified identifier + description: >- + Version defines the versioning scheme used to negotiate the IBC + verison in + + the connection handshake. + description: >- + IBC version which can be utilised to determine encodings or protocols + for + + channels or packets utilising this connection. + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain associated with a + given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty chain associated + with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: >- + delay period that must pass before a consensus state can be used for + + packet-verification NOTE: delay period logic is only implemented by + some + + clients. + description: |- + ConnectionEnd defines a stateful object on a chain connected to another + separate one. + NOTE: there must only be 2 defined ConnectionEnds to establish + a connection between two chains. + ibc.core.connection.v1.Counterparty: + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain associated with a + given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty chain associated + with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + description: >- + Counterparty defines the counterparty chain associated with a connection + end. + ibc.core.connection.v1.IdentifiedConnection: + type: object + properties: + id: + type: string + description: connection identifier. + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: list of features compatible with the specified identifier + description: >- + Version defines the versioning scheme used to negotiate the IBC + verison in + + the connection handshake. + title: >- + IBC version which can be utilised to determine encodings or protocols + for + + channels or packets utilising this connection + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain associated with a + given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty chain associated + with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: delay period associated with this connection. + description: |- + IdentifiedConnection defines a connection with additional connection + identifier field. + ibc.core.connection.v1.Params: + type: object + properties: + max_expected_time_per_block: + type: string + format: uint64 + description: >- + maximum expected time per block (in nanoseconds), used to enforce + block delay. This parameter should reflect the + + largest amount of time that the chain might reasonably take to produce + the next block under normal operating + + conditions. A safe choice is 3-5x the expected time per block. + description: Params defines the set of Connection parameters. + ibc.core.connection.v1.QueryClientConnectionsResponse: + type: object + properties: + connection_paths: + type: array + items: + type: string + description: slice of all the connection paths associated with a client. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was generated + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryClientConnectionsResponse is the response type for the + Query/ClientConnections RPC method + ibc.core.connection.v1.QueryConnectionClientStateResponse: + type: object + properties: + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: |- + IdentifiedClientState defines a client state with an additional client + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionClientStateResponse is the response type for the + Query/ConnectionClientState RPC method + ibc.core.connection.v1.QueryConnectionConsensusStateResponse: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionConsensusStateResponse is the response type for the + Query/ConnectionConsensusState RPC method + ibc.core.connection.v1.QueryConnectionParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_expected_time_per_block: + type: string + format: uint64 + description: >- + maximum expected time per block (in nanoseconds), used to enforce + block delay. This parameter should reflect the + + largest amount of time that the chain might reasonably take to + produce the next block under normal operating + + conditions. A safe choice is 3-5x the expected time per block. + description: >- + QueryConnectionParamsResponse is the response type for the + Query/ConnectionParams RPC method. + ibc.core.connection.v1.QueryConnectionResponse: + type: object + properties: + connection: + title: connection associated with the request identifier + type: object + properties: + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: list of features compatible with the specified identifier + description: >- + Version defines the versioning scheme used to negotiate the IBC + verison in + + the connection handshake. + description: >- + IBC version which can be utilised to determine encodings or + protocols for + + channels or packets utilising this connection. + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain associated + with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty chain + associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: >- + delay period that must pass before a consensus state can be used + for + + packet-verification NOTE: delay period logic is only implemented + by some + + clients. + description: >- + ConnectionEnd defines a stateful object on a chain connected to + another + + separate one. + + NOTE: there must only be 2 defined ConnectionEnds to establish + + a connection between two chains. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionResponse is the response type for the Query/Connection RPC + + method. Besides the connection end, it includes a proof and the height + from + + which the proof was retrieved. + ibc.core.connection.v1.QueryConnectionsResponse: + type: object + properties: + connections: + type: array + items: + type: object + properties: + id: + type: string + description: connection identifier. + client_id: + type: string + description: client associated with this connection. + versions: + type: array + items: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: list of features compatible with the specified identifier + description: >- + Version defines the versioning scheme used to negotiate the + IBC verison in + + the connection handshake. + title: >- + IBC version which can be utilised to determine encodings or + protocols for + + channels or packets utilising this connection + state: + description: current state of the connection end. + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + counterparty: + description: counterparty chain associated with this connection. + type: object + properties: + client_id: + type: string + description: >- + identifies the client on the counterparty chain associated + with a given + + connection. + connection_id: + type: string + description: >- + identifies the connection end on the counterparty chain + associated with a + + given connection. + prefix: + description: commitment merkle prefix of the counterparty chain. + type: object + properties: + key_prefix: + type: string + format: byte + title: >- + MerklePrefix is merkle path prefixed to the key. + + The constructed key from the Path and the key will be + append(Path.KeyPath, + + append(Path.KeyPrefix, key...)) + delay_period: + type: string + format: uint64 + description: delay period associated with this connection. + description: |- + IdentifiedConnection defines a connection with additional connection + identifier field. + description: list of stored connections of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryConnectionsResponse is the response type for the Query/Connections + RPC + + method. + ibc.core.connection.v1.State: + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a connection is in one of the following states: + INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A connection end has just started the opening handshake. + - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty + chain. + - STATE_OPEN: A connection end has completed the handshake. + ibc.core.connection.v1.Version: + type: object + properties: + identifier: + type: string + title: unique version identifier + features: + type: array + items: + type: string + title: list of features compatible with the specified identifier + description: |- + Version defines the versioning scheme used to negotiate the IBC verison in + the connection handshake. + ibc.core.channel.v1.Channel: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of the + channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: |- + list of connection identifiers, in order, along which packets sent on + this channel will travel + version: + type: string + title: opaque channel version, which is agreed upon during the handshake + description: |- + Channel defines pipeline for exactly-once packet delivery between specific + modules on separate blockchains, which has at least one end capable of + sending packets and one end capable of receiving packets. + ibc.core.channel.v1.Counterparty: + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of the + channel. + channel_id: + type: string + title: channel end on the counterparty chain + title: Counterparty defines a channel end counterparty + ibc.core.channel.v1.IdentifiedChannel: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of the + channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: |- + list of connection identifiers, in order, along which packets sent on + this channel will travel + version: + type: string + title: opaque channel version, which is agreed upon during the handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: |- + IdentifiedChannel defines a channel with additional port and channel + identifier fields. + ibc.core.channel.v1.Order: + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + title: Order defines if a channel is ORDERED or UNORDERED + ibc.core.channel.v1.PacketState: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: |- + PacketState defines the generic type necessary to retrieve and store + packet commitments, acknowledgements, and receipts. + Caller is responsible for knowing the context necessary to interpret this + state as a commitment, acknowledgement, or a receipt. + ibc.core.channel.v1.QueryChannelClientStateResponse: + type: object + properties: + identified_client_state: + title: client state associated with the channel + type: object + properties: + client_id: + type: string + title: client identifier + client_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: client state + description: |- + IdentifiedClientState defines a client state with an additional client + identifier field. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + ibc.core.channel.v1.QueryChannelConsensusStateResponse: + type: object + properties: + consensus_state: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: consensus state associated with the channel + client_id: + type: string + title: client ID associated with the consensus state + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryChannelClientStateResponse is the Response type for the + Query/QueryChannelClientState RPC method + ibc.core.channel.v1.QueryChannelResponse: + type: object + properties: + channel: + title: channel associated with the request identifiers + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of the + channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which packets sent + on + + this channel will travel + version: + type: string + title: opaque channel version, which is agreed upon during the handshake + description: >- + Channel defines pipeline for exactly-once packet delivery between + specific + + modules on separate blockchains, which has at least one end capable of + + sending packets and one end capable of receiving packets. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryChannelResponse is the response type for the Query/Channel RPC + method. + + Besides the Channel end, it includes a proof and the height from which the + + proof was retrieved. + ibc.core.channel.v1.QueryChannelsResponse: + type: object + properties: + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of + the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which packets + sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: |- + IdentifiedChannel defines a channel with additional port and channel + identifier fields. + description: list of stored channels of the chain. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + description: >- + QueryChannelsResponse is the response type for the Query/Channels RPC + method. + ibc.core.channel.v1.QueryConnectionChannelsResponse: + type: object + properties: + channels: + type: array + items: + type: object + properties: + state: + title: current state of the channel end + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + ordering: + title: whether the channel is ordered or unordered + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + counterparty: + title: counterparty channel end + type: object + properties: + port_id: + type: string + description: >- + port on the counterparty chain which owns the other end of + the channel. + channel_id: + type: string + title: channel end on the counterparty chain + connection_hops: + type: array + items: + type: string + title: >- + list of connection identifiers, in order, along which packets + sent on + + this channel will travel + version: + type: string + title: >- + opaque channel version, which is agreed upon during the + handshake + port_id: + type: string + title: port identifier + channel_id: + type: string + title: channel identifier + description: |- + IdentifiedChannel defines a channel with additional port and channel + identifier fields. + description: list of channels associated with a connection. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryConnectionChannelsResponse is the Response type for the + Query/QueryConnectionChannels RPC method + ibc.core.channel.v1.QueryNextSequenceReceiveResponse: + type: object + properties: + next_sequence_receive: + type: string + format: uint64 + title: next sequence receive number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QuerySequenceResponse is the request type for the + Query/QueryNextSequenceReceiveResponse RPC method + ibc.core.channel.v1.QueryNextSequenceSendResponse: + type: object + properties: + next_sequence_send: + type: string + format: uint64 + title: next sequence send number + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryNextSequenceSendResponse is the request type for the + Query/QueryNextSequenceSend RPC method + ibc.core.channel.v1.QueryPacketAcknowledgementResponse: + type: object + properties: + acknowledgement: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryPacketAcknowledgementResponse defines the client query response for a + packet which also includes a proof and the height from which the + proof was retrieved + ibc.core.channel.v1.QueryPacketAcknowledgementsResponse: + type: object + properties: + acknowledgements: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve and store + + packet commitments, acknowledgements, and receipts. + + Caller is responsible for knowing the context necessary to interpret + this + + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryPacketAcknowledgemetsResponse is the request type for the + Query/QueryPacketAcknowledgements RPC method + ibc.core.channel.v1.QueryPacketCommitmentResponse: + type: object + properties: + commitment: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryPacketCommitmentResponse defines the client query response for a + packet + + which also includes a proof and the height from which the proof was + + retrieved + ibc.core.channel.v1.QueryPacketCommitmentsResponse: + type: object + properties: + commitments: + type: array + items: + type: object + properties: + port_id: + type: string + description: channel port identifier. + channel_id: + type: string + description: channel unique identifier. + sequence: + type: string + format: uint64 + description: packet sequence. + data: + type: string + format: byte + description: embedded data that represents packet state. + description: >- + PacketState defines the generic type necessary to retrieve and store + + packet commitments, acknowledgements, and receipts. + + Caller is responsible for knowing the context necessary to interpret + this + + state as a commitment, acknowledgement, or a receipt. + pagination: + title: pagination response + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryPacketCommitmentsResponse is the request type for the + Query/QueryPacketCommitments RPC method + ibc.core.channel.v1.QueryPacketReceiptResponse: + type: object + properties: + received: + type: boolean + title: success flag for if receipt exists + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryPacketReceiptResponse defines the client query response for a packet + + receipt which also includes a proof, and the height from which the proof + was + + retrieved + ibc.core.channel.v1.QueryUnreceivedAcksResponse: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived acknowledgement sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedAcksResponse is the response type for the + Query/UnreceivedAcks RPC method + ibc.core.channel.v1.QueryUnreceivedPacketsResponse: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived packet sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedPacketsResponse is the response type for the + Query/UnreceivedPacketCommitments RPC method + ibc.core.channel.v1.State: + type: string + enum: + - STATE_UNINITIALIZED_UNSPECIFIED + - STATE_INIT + - STATE_TRYOPEN + - STATE_OPEN + - STATE_CLOSED + default: STATE_UNINITIALIZED_UNSPECIFIED + description: |- + State defines if a channel is in one of the following states: + CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + - STATE_UNINITIALIZED_UNSPECIFIED: Default State + - STATE_INIT: A channel has just started the opening handshake. + - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. + - STATE_OPEN: A channel has completed the handshake. Open channels are + ready to send and receive packets. + - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive + packets. + cosmos.auth.v1beta1.AddressBytesToStringResponse: + type: object + properties: + address_string: + type: string + description: >- + AddressBytesToStringResponse is the response type for AddressString rpc + method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.AddressStringToBytesResponse: + type: object + properties: + address_bytes: + type: string + format: byte + description: >- + AddressStringToBytesResponse is the response type for AddressBytes rpc + method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.BaseAccount: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + account_number: + type: string + format: uint64 + sequence: + type: string + format: uint64 + description: >- + BaseAccount defines a base account type. It contains all the necessary + fields + + for basic account functionality. Any custom account type should extend + this + + type for additional functionality (e.g. vesting). + cosmos.auth.v1beta1.Bech32PrefixResponse: + type: object + properties: + bech32_prefix: + type: string + description: |- + Bech32PrefixResponse is the response type for Bech32Prefix rpc method. + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.Params: + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: Params defines the parameters for the auth module. + cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: + type: object + properties: + account_address: + type: string + description: 'Since: cosmos-sdk 0.46.2' + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method + cosmos.auth.v1beta1.QueryAccountInfoResponse: + type: object + properties: + info: + description: info is the account info which is represented by BaseAccount. + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + account_number: + type: string + format: uint64 + sequence: + type: string + format: uint64 + description: |- + QueryAccountInfoResponse is the Query/AccountInfo response type. + + Since: cosmos-sdk 0.47 + cosmos.auth.v1beta1.QueryAccountResponse: + type: object + properties: + account: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryAccountResponse is the response type for the Query/Account RPC + method. + cosmos.auth.v1beta1.QueryAccountsResponse: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: accounts are the existing accounts + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAccountsResponse is the response type for the Query/Accounts RPC + method. + + + Since: cosmos-sdk 0.43 + cosmos.auth.v1beta1.QueryModuleAccountByNameResponse: + type: object + properties: + account: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountByNameResponse is the response type for the + Query/ModuleAccountByName RPC method. + cosmos.auth.v1beta1.QueryModuleAccountsResponse: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountsResponse is the response type for the + Query/ModuleAccounts RPC method. + + + Since: cosmos-sdk 0.46 + cosmos.auth.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.authz.v1beta1.Grant: + type: object + properties: + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, then the + grant + + doesn't have a time expiration (other conditions in `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + cosmos.authz.v1beta1.GrantAuthorization: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the grantee + and granter. + + It is used in genesis.proto and query.proto + cosmos.authz.v1beta1.QueryGranteeGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. + cosmos.authz.v1beta1.QueryGranterGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + cosmos.authz.v1beta1.QueryGrantsResponse: + type: object + properties: + grants: + type: array + items: + type: object + properties: + authorization: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, + then the grant + + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: authorizations is a list of grants granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGrantsResponse is the response type for the Query/Authorizations RPC + method. + cosmos.bank.v1beta1.DenomOwner: + type: object + properties: + address: + type: string + description: address defines the address that owns a particular denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + DenomOwner defines structure representing an account that owns or holds a + particular denominated token. It contains the account address and account + balance of the denominated token. + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.DenomUnit: + type: object + properties: + denom: + type: string + description: denom represents the string name of the given denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' + with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + cosmos.bank.v1beta1.Metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit (e.g + uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's + denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of + 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with exponent + = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). This + can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used to + verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + cosmos.bank.v1beta1.Params: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + description: >- + Deprecated: Use of SendEnabled in params is deprecated. + + For genesis, use the newly added send_enabled field in the genesis + object. + + Storage, lookup, and manipulation of this information is now in the + keeper. + + + As of cosmos-sdk 0.47, this only exists for backwards compatibility of + genesis files. + default_send_enabled: + type: boolean + description: Params defines the parameters for the bank module. + cosmos.bank.v1beta1.QueryAllBalancesResponse: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllBalancesResponse is the response type for the Query/AllBalances + RPC + + method. + cosmos.bank.v1beta1.QueryBalanceResponse: + type: object + properties: + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QueryBalanceResponse is the response type for the Query/Balance RPC + method. + cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse: + type: object + properties: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit + of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). + This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used + to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataByQueryStringResponse is the response type for the + Query/DenomMetadata RPC + + method. Identical with QueryDenomMetadataResponse but receives denom as + query string in request. + cosmos.bank.v1beta1.QueryDenomMetadataResponse: + type: object + properties: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit + of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). + This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used + to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. + cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse: + type: object + properties: + denom_owners: + type: array + items: + type: object + properties: + address: + type: string + description: address defines the address that owns a particular denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DenomOwner defines structure representing an account that owns or + holds a + + particular denominated token. It contains the account address and + account + + balance of the denominated token. + + + Since: cosmos-sdk 0.46 + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomOwnersByQueryResponse defines the RPC response of a + DenomOwnersByQuery RPC query. + + + Since: cosmos-sdk 0.50.3 + cosmos.bank.v1beta1.QueryDenomOwnersResponse: + type: object + properties: + denom_owners: + type: array + items: + type: object + properties: + address: + type: string + description: address defines the address that owns a particular denomination. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DenomOwner defines structure representing an account that owns or + holds a + + particular denominated token. It contains the account address and + account + + balance of the denominated token. + + + Since: cosmos-sdk 0.46 + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC + query. + + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.QueryDenomsMetadataResponse: + type: object + properties: + metadatas: + type: array + items: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + description: 'Since: cosmos-sdk 0.43' + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + + + Since: cosmos-sdk 0.43 + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains additional + information. Optional. + + + Since: cosmos-sdk 0.46 + uri_hash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. It's used + to verify that + + the document didn't change. Optional. + + + Since: cosmos-sdk 0.46 + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the registered + tokens. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC + + method. + cosmos.bank.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params provides the parameters of the bank module. + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + description: >- + Deprecated: Use of SendEnabled in params is deprecated. + + For genesis, use the newly added send_enabled field in the genesis + object. + + Storage, lookup, and manipulation of this information is now in + the keeper. + + + As of cosmos-sdk 0.47, this only exists for backwards + compatibility of genesis files. + default_send_enabled: + type: boolean + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + cosmos.bank.v1beta1.QuerySendEnabledResponse: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + pagination: + description: |- + pagination defines the pagination in the response. This field is only + populated if the denoms field in the request is empty. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QuerySendEnabledResponse defines the RPC response of a SendEnable query. + + Since: cosmos-sdk 0.47 + cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse: + type: object + properties: + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QuerySpendableBalanceByDenomResponse defines the gRPC response structure + for + + querying an account's spendable balance for a specific denom. + + + Since: cosmos-sdk 0.47 + cosmos.bank.v1beta1.QuerySpendableBalancesResponse: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: balances is the spendable balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QuerySpendableBalancesResponse defines the gRPC response structure for + querying + + an account's spendable balances. + + + Since: cosmos-sdk 0.46 + cosmos.bank.v1beta1.QuerySupplyOfResponse: + type: object + properties: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC + method. + cosmos.bank.v1beta1.QueryTotalSupplyResponse: + type: object + properties: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: |- + pagination defines the pagination in the response. + + Since: cosmos-sdk 0.43 + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the Query/TotalSupply + RPC + + method + cosmos.bank.v1beta1.SendEnabled: + type: object + properties: + denom: + type: string + enabled: + type: boolean + description: |- + SendEnabled maps coin denom to a send_enabled status (whether a denom is + sendable). + cosmos.distribution.v1beta1.DelegationDelegatorReward: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + cosmos.distribution.v1beta1.Params: + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + description: >- + Deprecated: The base_proposer_reward field is deprecated and is no + longer used + + in the x/distribution module's reward mechanism. + bonus_proposer_reward: + type: string + description: >- + Deprecated: The bonus_proposer_reward field is deprecated and is no + longer used + + in the x/distribution module's reward mechanism. + withdraw_addr_enabled: + type: boolean + description: Params defines the set of params for the distribution module. + cosmos.distribution.v1beta1.QueryCommunityPoolResponse: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool + + RPC method. + cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: rewards defines the rewards accrued by a delegation. + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + description: rewards defines all the rewards accrued by a delegator. + total: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: total defines the sum of all the rewards. + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: string + description: validators defines the validators a delegator is delegating for. + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: + type: object + properties: + withdraw_address: + type: string + description: withdraw_address defines the delegator address to query for. + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. + cosmos.distribution.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + description: >- + Deprecated: The base_proposer_reward field is deprecated and is no + longer used + + in the x/distribution module's reward mechanism. + bonus_proposer_reward: + type: string + description: >- + Deprecated: The bonus_proposer_reward field is deprecated and is + no longer used + + in the x/distribution module's reward mechanism. + withdraw_addr_enabled: + type: boolean + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: + type: object + properties: + commission: + description: commission defines the commission the validator received. + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse: + type: object + properties: + operator_address: + type: string + description: operator_address defines the validator operator address. + self_bond_rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: self_bond_rewards defines the self delegations rewards. + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: commission defines the commission the validator received. + description: >- + QueryValidatorDistributionInfoResponse is the response type for the + Query/ValidatorDistributionInfo RPC method. + cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: + type: object + properties: + rewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: >- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) + rewards + + for a validator inexpensive to track, allows simple sanity checks. + description: |- + QueryValidatorOutstandingRewardsResponse is the response type for the + Query/ValidatorOutstandingRewards RPC method. + cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: + type: object + properties: + slashes: + type: array + items: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + description: slashes defines the slashes the validator received. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorAccumulatedCommission represents accumulated commission + for a validator kept as a running counter, can be withdrawn at any time. + cosmos.distribution.v1beta1.ValidatorOutstandingRewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards + for a validator inexpensive to track, allows simple sanity checks. + cosmos.distribution.v1beta1.ValidatorSlashEvent: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + cosmos.feegrant.v1beta1.Grant: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + title: Grant is stored in the KVStore to record a grant with full context + cosmos.feegrant.v1beta1.QueryAllowanceResponse: + type: object + properties: + allowance: + description: allowance is a allowance granted for grantee by granter. + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + title: Grant is stored in the KVStore to record a grant with full context + description: >- + QueryAllowanceResponse is the response type for the Query/Allowance RPC + method. + cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + title: Grant is stored in the KVStore to record a grant with full context + description: allowances that have been issued by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesByGranterResponse is the response type for the + Query/AllowancesByGranter RPC method. + + + Since: cosmos-sdk 0.46 + cosmos.feegrant.v1beta1.QueryAllowancesResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + title: Grant is stored in the KVStore to record a grant with full context + description: allowances are allowance's granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllowancesResponse is the response type for the Query/Allowances RPC + method. + cosmos.evidence.v1beta1.QueryAllEvidenceResponse: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllEvidenceResponse is the response type for the Query/AllEvidence + RPC + + method. + cosmos.evidence.v1beta1.QueryEvidenceResponse: + type: object + properties: + evidence: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryEvidenceResponse is the response type for the Query/Evidence RPC + method. + cosmos.gov.v1beta1.Deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1beta1.DepositParams: + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1beta1.Proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + submit_time: + type: string + format: date-time + description: submit_time is the time of proposal submission. + deposit_end_time: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + voting_start_time: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + voting_end_time: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1beta1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1beta1.QueryDepositResponse: + type: object + properties: + deposit: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC + method. + cosmos.gov.v1beta1.QueryDepositsResponse: + type: object + properties: + deposits: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to an + active + + proposal. + description: deposits defines the requested deposits. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1beta1.QueryParamsResponse: + type: object + properties: + voting_params: + description: voting_params defines the parameters related to voting. + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: + type: string + format: byte + description: >- + Minimum percentage of total stake needed to vote for a result to + be + + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + veto_threshold: + type: string + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + + vetoed. Default value: 1/3. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1beta1.QueryProposalResponse: + type: object + properties: + proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + submit_time: + type: string + format: date-time + description: submit_time is the time of proposal submission. + deposit_end_time: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + voting_start_time: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + voting_end_time: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1beta1.QueryProposalsResponse: + type: object + properties: + proposals: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + final_tally_result: + description: >- + final_tally_result is the final tally result of the proposal. + When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + submit_time: + type: string + format: date-time + description: submit_time is the time of proposal submission. + deposit_end_time: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + voting_start_time: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + voting_end_time: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + description: proposals defines all the requested governance proposals. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1beta1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1beta1.QueryVoteResponse: + type: object + properties: + vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set in + queries + + if and only if `len(options) == 1` and that option has weight 1. + In all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1beta1.QueryVotesResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set + in queries + + if and only if `len(options) == 1` and that option has weight 1. + In all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defines the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1beta1.TallyParams: + type: object + properties: + quorum: + type: string + format: byte + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + veto_threshold: + type: string + format: byte + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1beta1.TallyResult: + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + no_with_veto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1beta1.Vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set in + queries + + if and only if `len(options) == 1` and that option has weight 1. In + all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + description: |- + options is the weighted vote options. + + Since: cosmos-sdk 0.43 + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1beta1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1beta1.VotingParams: + type: object + properties: + voting_period: + type: string + description: Duration of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1beta1.WeightedVoteOption: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain duplicate + vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: |- + WeightedVoteOption defines a unit of vote for vote split. + + Since: cosmos-sdk 0.43 + cosmos.slashing.v1beta1.Params: + type: object + properties: + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + cosmos.slashing.v1beta1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + title: QueryParamsResponse is the response type for the Query/Params RPC method + cosmos.slashing.v1beta1.QuerySigningInfoResponse: + type: object + properties: + val_signing_info: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a + block and + + _may_ have signed a pre-commit or not. This in conjunction with + the + + signed_blocks_window param determines the index in the missed + block bitmap. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator + + set). It is set once the validator commits an equivocation or for + any other + + configured misbehavior. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their + + liveness activity. + title: val_signing_info is the signing info of requested val cons address + title: >- + QuerySigningInfoResponse is the response type for the Query/SigningInfo + RPC + + method + cosmos.slashing.v1beta1.QuerySigningInfosResponse: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a + block and + + _may_ have signed a pre-commit or not. This in conjunction with + the + + signed_blocks_window param determines the index in the missed + block bitmap. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator + + set). It is set once the validator commits an equivocation or + for any other + + configured misbehavior. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the Query/SigningInfos + RPC + + method + cosmos.slashing.v1beta1.ValidatorSigningInfo: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a block + and + + _may_ have signed a pre-commit or not. This in conjunction with the + + signed_blocks_window param determines the index in the missed block + bitmap. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator + + set). It is set once the validator commits an equivocation or for any + other + + configured misbehavior. + missed_blocks_counter: + type: string + format: int64 + description: |- + A counter of missed (unsigned) blocks. It is used to avoid unnecessary + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their + + liveness activity. + cosmos.staking.v1beta1.BondStatus: + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + description: |- + BondStatus is the status of a validator. + + - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. + - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. + - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. + - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. + cosmos.staking.v1beta1.Commission: + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be used for + creating a validator. + type: object + properties: + rate: + type: string + description: rate is the commission rate charged to delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which validator can + ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + description: Commission defines commission parameters for a given validator. + cosmos.staking.v1beta1.CommissionRates: + type: object + properties: + rate: + type: string + description: rate is the commission rate charged to delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which validator can ever + charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the validator + commission, as a fraction. + description: >- + CommissionRates defines the initial commission rates to be used for + creating + + a validator. + cosmos.staking.v1beta1.Delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + cosmos.staking.v1beta1.DelegationResponse: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + DelegationResponse is equivalent to Delegation except that it contains a + balance in addition to shares which is more suitable for client responses. + cosmos.staking.v1beta1.Description: + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: security_contact defines an optional email for security contact. + details: + type: string + description: details define other optional details. + description: Description defines a validator description. + cosmos.staking.v1beta1.HistoricalInfo: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + description: >- + HistoricalInfo contains header and validator information for a given + block. + + It is stored as part of staking module's state, which persists the `n` + most + + recent HistoricalInfo + + (`n` is set by the staking module's `historical_entries` parameter). + cosmos.staking.v1beta1.Params: + type: object + properties: + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission rate that a + validator can charge their delegators + description: Params defines the parameters for the x/staking module. + cosmos.staking.v1beta1.Pool: + type: object + properties: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: |- + Pool is used for tracking bonded and not-bonded token supply of the bond + denomination. + cosmos.staking.v1beta1.QueryDelegationResponse: + type: object + properties: + delegation_response: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an account. It + is + + owned by one delegator, and is associated with the voting power of + one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it contains + a + + balance in addition to shares which is more suitable for client + responses. + description: >- + QueryDelegationResponse is response type for the Query/Delegation RPC + method. + cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an account. + It is + + owned by one delegator, and is associated with the voting power + of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a + + balance in addition to shares which is more suitable for client + responses. + description: delegation_responses defines all the delegations' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: + type: object + properties: + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryUnbondingDelegatorDelegationsResponse is response type for the + Query/UnbondingDelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: + type: object + properties: + validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + description: validators defines the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. + cosmos.staking.v1beta1.QueryHistoricalInfoResponse: + type: object + properties: + hist: + description: hist defines the historical info at the given height. + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which + this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to + be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding + of this validator + description: >- + Validator defines a validator, together with the total amount of + the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided by + the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + description: >- + QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo + RPC + + method. + cosmos.staking.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params holds all the parameters of this module. + type: object + properties: + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + min_commission_rate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission rate that + a validator can charge their delegators + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.staking.v1beta1.QueryPoolResponse: + type: object + properties: + pool: + description: pool defines the pool info. + type: object + properties: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: QueryPoolResponse is response type for the Query/Pool RPC method. + cosmos.staking.v1beta1.QueryRedelegationsResponse: + type: object + properties: + redelegation_responses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds + + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it + + contains a balance in addition to shares which is more + suitable for client + + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except that its + entries + + contain a balance in addition to shares which is more suitable for + client + + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryRedelegationsResponse is response type for the Query/Redelegations + RPC + + method. + cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: + type: object + properties: + unbond: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: |- + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + description: |- + QueryDelegationResponse is response type for the Query/UnbondingDelegation + RPC method. + cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an account. + It is + + owned by one delegator, and is associated with the voting power + of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a + + balance in addition to shares which is more suitable for client + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + cosmos.staking.v1beta1.QueryValidatorResponse: + type: object + properties: + validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + title: QueryValidatorResponse is response type for the Query/Validator RPC method + cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: + type: object + properties: + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorUnbondingDelegationsResponse is response type for the + Query/ValidatorUnbondingDelegations RPC method. + cosmos.staking.v1beta1.QueryValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + description: validators contains all the queried validators. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators RPC + method + cosmos.staking.v1beta1.Redelegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source operator + address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's redelegating + bonds + + from a particular source validator to a particular destination validator. + cosmos.staking.v1beta1.RedelegationEntry: + type: object + properties: + creation_height: + type: string + format: int64 + description: creation_height defines the height which the redelegation took place. + completion_time: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initial_balance: + type: string + description: initial_balance defines the initial balance when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created by + redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: RedelegationEntry defines a redelegation object with relevant metadata. + cosmos.staking.v1beta1.RedelegationEntryResponse: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completion_time: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry except that + it + + contains a balance in addition to shares which is more suitable for client + + responses. + cosmos.staking.v1beta1.RedelegationResponse: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds + + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it + + contains a balance in addition to shares which is more suitable for + client + + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except that its + entries + + contain a balance in addition to shares which is more suitable for client + + responses. + cosmos.staking.v1beta1.UnbondingDelegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the encoded address of the delegator. + validator_address: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: creation_height is the height which the unbonding took place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + description: entries are the unbonding delegation entries. + description: |- + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + cosmos.staking.v1beta1.UnbondingDelegationEntry: + type: object + properties: + creation_height: + type: string + format: int64 + description: creation_height is the height which the unbonding took place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to receive at + completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbonding_id: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + cosmos.staking.v1beta1.Validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's operator; bech + encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: security_contact defines an optional email for security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the validator + to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be used + for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which validator + can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + + + Since: cosmos-sdk 0.46 + unbonding_on_hold_ref_count: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped by + external modules + unbonding_ids: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of this + validator + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing results + in + + a decrease in the exchange rate, allowing correct calculation of future + + undelegations without iterating over delegators. When coins are delegated + to + + this validator, the validator is credited with a delegation whose number + of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + tendermint.types.BlockID: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + tendermint.types.Header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + tendermint.types.PartSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + tendermint.version.Consensus: + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + cosmos.base.abci.v1beta1.ABCIMessageLog: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and value + are + + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + description: |- + Events contains a slice of Event objects that were emitted during some + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI message + log. + cosmos.base.abci.v1beta1.Attribute: + type: object + properties: + key: + type: string + value: + type: string + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + cosmos.base.abci.v1beta1.GasInfo: + type: object + properties: + gas_wanted: + type: string + format: uint64 + description: GasWanted is the maximum units of work we allow this tx to perform. + gas_used: + type: string + format: uint64 + description: GasUsed is the amount of gas actually consumed. + description: GasInfo defines tx execution gas context. + cosmos.base.abci.v1beta1.Result: + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler execution. It MUST + be + + length prefixed in order to separate data from multiple message + executions. + + Deprecated. This field is still populated, but prefer msg_response + instead + + because it also contains the Msg response typeURL. + log: + type: string + description: Log contains the log information from message or handler execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated with an + event. + description: >- + Event allows application developers to attach additional information + to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message + + or handler execution. + msg_responses: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: |- + msg_responses contains the Msg handler responses type packed in Anys. + + Since: cosmos-sdk 0.46 + description: Result is the union of ResponseFormat and ResponseCheckTx. + cosmos.base.abci.v1beta1.StringEvent: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + cosmos.base.abci.v1beta1.TxResponse: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and + value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted median + of + + the timestamps of the valid votes in the block.LastCommit. For height + == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated with an + event. + description: >- + Event allows application developers to attach additional information + to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, + + these events include those emitted by processing all the messages and + those + + emitted from the ante. Whereas Logs contains the events, with + + additional metadata, emitted only by processing the messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and metadata. + The + + tags are stringified and the log is JSON decoded. + cosmos.crypto.multisig.v1beta1.CompactBitArray: + type: object + properties: + extra_bits_stored: + type: integer + format: int64 + elems: + type: string + format: byte + description: |- + CompactBitArray is an implementation of a space efficient bit array. + This is used to ensure that the encoded data takes up a minimal amount of + space after proto encoding. + This is not thread safe, and is not intended for concurrent usage. + cosmos.tx.signing.v1beta1.SignMode: + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED + description: |- + SignMode represents a signing mode with its own security guarantees. + + This enum should be considered a registry of all known sign modes + in the Cosmos ecosystem. Apps are not expected to support all known + sign modes. Apps that would like to support custom sign modes are + encouraged to open a small PR against this file to add a new case + to this SignMode enum describing their sign mode so that different + apps have a consistent version of this enum. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary representation + from SIGN_MODE_DIRECT. + + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not + require signers signing over other signers' `signer_info`. + + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, + but is not implemented on the SDK by default. To enable EIP-191, you need + to pass a custom `TxConfig` that has an implementation of + `SignModeHandler` for EIP-191. The SDK may decide to fully support + EIP-191 in the future. + + Since: cosmos-sdk 0.45.2 + cosmos.tx.v1beta1.AuthInfo: + type: object + properties: + signer_infos: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' + description: >- + signer_infos defines the signing modes for the required signers. The + number + + and order of elements must match the required signers from TxBody's + + messages. The first element is the primary signer and the one which + pays + + the fee. + fee: + description: >- + Fee is the fee and gas limit for the transaction. The first signer is + the + + primary signer and the one which pays the fee. The fee can be + calculated + + based on the cost of evaluating the body and doing signature + verification + + of the signers. This can be estimated via simulation. + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gas_limit: + type: string + format: uint64 + title: >- + gas_limit is the maximum gas that can be used in transaction + processing + + before an out of gas error occurs + payer: + type: string + description: >- + if unset, the first signer is responsible for paying the fees. If + set, the specified account must pay the fees. + + the payer must be a tx signer (and thus have signed this field in + AuthInfo). + + setting this field does *not* change the ordering of required + signers for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer field) requests that a fee grant be used + + to pay fees instead of the fee payer's own balance. If an + appropriate fee grant does not exist or the chain does + + not support fee grants, this will fail + tip: + description: >- + Tip is the optional tip used for transactions fees paid in another + denom. + + + This field is ignored if the chain didn't enable tips, i.e. didn't add + the + + `TipDecorator` in its posthandler. + + + Since: cosmos-sdk 0.46 + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip + description: |- + AuthInfo describes the fee and signer modes that are used to sign a + transaction. + cosmos.tx.v1beta1.BroadcastMode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: |- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC + method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + cosmos.tx.v1beta1.BroadcastTxRequest: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: >- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast + RPC + + method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + description: |- + BroadcastTxRequest is the request type for the Service.BroadcastTxRequest + RPC method. + cosmos.tx.v1beta1.BroadcastTxResponse: + type: object + properties: + tx_response: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of + + the timestamps of the valid votes in the block.LastCommit. For + height == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, + + these events include those emitted by processing all the messages + and those + + emitted from the ante. Whereas Logs contains the events, with + + additional metadata, emitted only by processing the messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + cosmos.tx.v1beta1.Fee: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gas_limit: + type: string + format: uint64 + title: >- + gas_limit is the maximum gas that can be used in transaction + processing + + before an out of gas error occurs + payer: + type: string + description: >- + if unset, the first signer is responsible for paying the fees. If set, + the specified account must pay the fees. + + the payer must be a tx signer (and thus have signed this field in + AuthInfo). + + setting this field does *not* change the ordering of required signers + for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer field) requests that a fee grant be used + + to pay fees instead of the fee payer's own balance. If an appropriate + fee grant does not exist or the chain does + + not support fee grants, this will fail + description: >- + Fee includes the amount of coins paid in fees and the maximum + + gas to be used by the transaction. The ratio yields an effective + "gasprice", + + which must be above some miminum to be accepted into the mempool. + cosmos.tx.v1beta1.GetBlockWithTxsResponse: + type: object + properties: + txs: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: txs are the transactions in the block. + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + pagination: + description: pagination defines a pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetBlockWithTxsResponse is the response type for the + Service.GetBlockWithTxs + + method. + + + Since: cosmos-sdk 0.45.2 + cosmos.tx.v1beta1.GetTxResponse: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the queried transaction. + tx_response: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of + + the timestamps of the valid votes in the block.LastCommit. For + height == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, + + these events include those emitted by processing all the messages + and those + + emitted from the ante. Whereas Logs contains the events, with + + additional metadata, emitted only by processing the messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: GetTxResponse is the response type for the Service.GetTx method. + cosmos.tx.v1beta1.GetTxsEventResponse: + type: object + properties: + txs: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: txs is the list of queried transactions. + tx_responses: + type: array + items: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the + key and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all + the attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx + ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of + + the timestamps of the valid votes in the block.LastCommit. For + height == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated + with an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a + transaction. Note, + + these events include those emitted by processing all the + messages and those + + emitted from the ante. Whereas Logs contains the events, with + + additional metadata, emitted only by processing the messages. + + + Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: tx_responses is the list of queried TxResponses. + pagination: + description: |- + pagination defines a pagination for the response. + Deprecated post v0.46.x: use total instead. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + total: + type: string + format: uint64 + title: total is total number of results available + description: |- + GetTxsEventResponse is the response type for the Service.TxsByEvents + RPC method. + cosmos.tx.v1beta1.ModeInfo: + type: object + properties: + single: + title: single represents a single signer + type: object + properties: + mode: + title: mode is the signing mode of the single signer + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED + description: >- + SignMode represents a signing mode with its own security + guarantees. + + + This enum should be considered a registry of all known sign modes + + in the Cosmos ecosystem. Apps are not expected to support all + known + + sign modes. Apps that would like to support custom sign modes are + + encouraged to open a small PR against this file to add a new case + + to this SignMode enum describing their sign mode so that different + + apps have a consistent version of this enum. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation + + from SIGN_MODE_DIRECT. + + + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode + does not + + require signers signing over other signers' `signer_info`. + + + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + + + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum + variant, + + but is not implemented on the SDK by default. To enable EIP-191, + you need + + to pass a custom `TxConfig` that has an implementation of + + `SignModeHandler` for EIP-191. The SDK may decide to fully support + + EIP-191 in the future. + + + Since: cosmos-sdk 0.45.2 + multi: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' + title: multi represents a nested multisig signer + description: ModeInfo describes the signing mode of a single or nested multisig signer. + cosmos.tx.v1beta1.ModeInfo.Multi: + type: object + properties: + bitarray: + title: bitarray specifies which keys within the multisig are signing + type: object + properties: + extra_bits_stored: + type: integer + format: int64 + elems: + type: string + format: byte + description: >- + CompactBitArray is an implementation of a space efficient bit array. + + This is used to ensure that the encoded data takes up a minimal amount + of + + space after proto encoding. + + This is not thread safe, and is not intended for concurrent usage. + mode_infos: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_infos is the corresponding modes of the signers of the multisig + which could include nested multisig public keys + title: Multi is the mode info for a multisig public key + cosmos.tx.v1beta1.ModeInfo.Single: + type: object + properties: + mode: + title: mode is the signing mode of the single signer + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED + description: >- + SignMode represents a signing mode with its own security guarantees. + + + This enum should be considered a registry of all known sign modes + + in the Cosmos ecosystem. Apps are not expected to support all known + + sign modes. Apps that would like to support custom sign modes are + + encouraged to open a small PR against this file to add a new case + + to this SignMode enum describing their sign mode so that different + + apps have a consistent version of this enum. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation + + from SIGN_MODE_DIRECT. + + + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does + not + + require signers signing over other signers' `signer_info`. + + + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + + + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, + + but is not implemented on the SDK by default. To enable EIP-191, you + need + + to pass a custom `TxConfig` that has an implementation of + + `SignModeHandler` for EIP-191. The SDK may decide to fully support + + EIP-191 in the future. + + + Since: cosmos-sdk 0.45.2 + title: |- + Single is the mode info for a single signer. It is structured as a message + to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the + future + cosmos.tx.v1beta1.OrderBy: + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED + description: >- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting + order. OrderBy defaults + + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + title: OrderBy defines the sorting order + cosmos.tx.v1beta1.SignerInfo: + type: object + properties: + public_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + mode_info: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_info describes the signing mode of the signer and is a nested + structure to support nested multisig pubkey's + sequence: + type: string + format: uint64 + description: >- + sequence is the sequence of the account, which describes the + + number of committed transactions signed by a given address. It is used + to + + prevent replay attacks. + description: |- + SignerInfo describes the public key and signing mode of a single top-level + signer. + cosmos.tx.v1beta1.SimulateRequest: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: |- + tx is the transaction to simulate. + Deprecated. Send raw tx bytes instead. + tx_bytes: + type: string + format: byte + description: |- + tx_bytes is the raw transaction. + + Since: cosmos-sdk 0.43 + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + cosmos.tx.v1beta1.SimulateResponse: + type: object + properties: + gas_info: + description: gas_info is the information about gas used in the simulation. + type: object + properties: + gas_wanted: + type: string + format: uint64 + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gas_used: + type: string + format: uint64 + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler execution. It + MUST be + + length prefixed in order to separate data from multiple message + executions. + + Deprecated. This field is still populated, but prefer msg_response + instead + + because it also contains the Msg response typeURL. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to + + ResponseFinalizeBlock and ResponseCheckTx. + + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message + + or handler execution. + msg_responses: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + msg_responses contains the Msg handler responses type packed in + Anys. + + + Since: cosmos-sdk 0.46 + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. + cosmos.tx.v1beta1.Tip: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip + description: |- + Tip is the tip used for meta-transactions. + + Since: cosmos-sdk 0.46 + cosmos.tx.v1beta1.Tx: + type: object + properties: + body: + title: body is the processable content of the transaction + type: object + properties: + messages: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of messages to be executed. The required + signers of + + those messages define the number and order of elements in + AuthInfo's + + signer_infos and Tx's signatures. Each required signer address is + added to + + the list only the first time it occurs. + + By convention, the first required signer (usually from the first + message) + + is referred to as the primary signer and pays the fee for the + whole + + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. + + WARNING: in clients, any publicly exposed text should not be + called memo, + + but should be called `note` instead (see + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeout_height: + type: string + format: uint64 + title: |- + timeout is the block height after which this transaction will not + be processed by the chain + extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by + chains + + when the default options are not sufficient. If any of these are + present + + and can't be handled, the transaction will be rejected + non_critical_extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by + chains + + when the default options are not sufficient. If any of these are + present + + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + auth_info: + $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' + title: |- + auth_info is the authorization related content of the transaction, + specifically signers, signer modes and fee + signatures: + type: array + items: + type: string + format: byte + description: >- + signatures is a list of signatures that matches the length and order + of + + AuthInfo's signer_infos to allow connecting signature meta information + like + + public key and signing mode by position. + description: Tx is the standard type used for broadcasting transactions. + cosmos.tx.v1beta1.TxBody: + type: object + properties: + messages: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of messages to be executed. The required signers of + + those messages define the number and order of elements in AuthInfo's + + signer_infos and Tx's signatures. Each required signer address is + added to + + the list only the first time it occurs. + + By convention, the first required signer (usually from the first + message) + + is referred to as the primary signer and pays the fee for the whole + + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. + + WARNING: in clients, any publicly exposed text should not be called + memo, + + but should be called `note` instead (see + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeout_height: + type: string + format: uint64 + title: |- + timeout is the block height after which this transaction will not + be processed by the chain + extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains + + when the default options are not sufficient. If any of these are + present + + and can't be handled, the transaction will be rejected + non_critical_extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains + + when the default options are not sufficient. If any of these are + present + + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + cosmos.tx.v1beta1.TxDecodeAminoRequest: + type: object + properties: + amino_binary: + type: string + format: byte + description: |- + TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxDecodeAminoResponse: + type: object + properties: + amino_json: + type: string + description: |- + TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxDecodeRequest: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxDecodeResponse: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the decoded transaction. + description: |- + TxDecodeResponse is the response type for the + Service.TxDecode method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxEncodeAminoRequest: + type: object + properties: + amino_json: + type: string + description: |- + TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxEncodeAminoResponse: + type: object + properties: + amino_binary: + type: string + format: byte + description: |- + TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxEncodeRequest: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the transaction to encode. + description: |- + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. + + Since: cosmos-sdk 0.47 + cosmos.tx.v1beta1.TxEncodeResponse: + type: object + properties: + tx_bytes: + type: string + format: byte + description: tx_bytes is the encoded transaction bytes. + description: |- + TxEncodeResponse is the response type for the + Service.TxEncode method. + + Since: cosmos-sdk 0.47 + tendermint.abci.Event: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: EventAttribute is a single key-value pair, associated with an event. + description: |- + Event allows application developers to attach additional information to + ResponseFinalizeBlock and ResponseCheckTx. + Later, transactions may be queried using these events. + tendermint.abci.EventAttribute: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + description: EventAttribute is a single key-value pair, associated with an event. + tendermint.crypto.PublicKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + tendermint.types.Block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.BlockIDFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + tendermint.types.Commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.CommitSig: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + tendermint.types.Data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the order + first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + tendermint.types.DuplicateVoteEvidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus + for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus + for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + tendermint.types.Evidence: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they participated + in + + consensus for the associated block. + + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid for + precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they participated + in + + consensus for the associated block. + + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.EvidenceList: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid + for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from validators + for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in + consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only valid + for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from validators + for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed + two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and the + rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + tendermint.types.LightBlock: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.LightClientAttackEvidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a + block in the blockchain, + + including all blockchain data structures and the rules of + the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the signature is + for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a + set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.SignedHeader: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.SignedMsgType: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + tendermint.types.Validator: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + tendermint.types.ValidatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.Vote: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated in consensus for + the + + associated block. + extension: + type: string + format: byte + description: |- + Vote extension provided by the application. Only valid for precommit + messages. + extension_signature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + cosmos.base.tendermint.v1beta1.ABCIQueryResponse: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + info: + type: string + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + proof_ops: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. + The data could + + be arbitrary format, providing necessary data for example + neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type defined + in Tendermint. + description: >- + ProofOps is Merkle proof defined by the list of ProofOps. + + + Note: This type is a duplicate of the ProofOps proto type defined in + Tendermint. + height: + type: string + format: int64 + codespace: + type: string + description: >- + ABCIQueryResponse defines the response structure for the ABCIQuery gRPC + query. + + + Note: This type is a duplicate of the ResponseQuery proto type defined in + + Tendermint. + cosmos.base.tendermint.v1beta1.Block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted + as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we convert it + to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they participated + in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if they + participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - canto.erc20.v1.Owner: - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + sdk_block: + title: 'Since: cosmos-sdk 0.47' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, + formatted as a Bech32 string. + + In Tendermint, this type is `bytes`, but in the SDK, we + convert it to a Bech32 string + + for better UX. + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - canto.erc20.v1.Params: - type: object - properties: - enable_erc20: - type: boolean - description: parameter to enable the conversion of Cosmos coins <--> ERC20 tokens. - enable_evm_hook: - type: boolean - description: >- - parameter to enable the EVM hook that converts an ERC20 token to a - Cosmos + NOTE: not all txs here are valid. We're just agreeing on the + order first. - Coin by transferring the Tokens through a MsgEthereumTx to the + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - ModuleAddress Ethereum address. - title: Params defines the erc20 module params - canto.erc20.v1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - enable_erc20: - type: boolean - description: >- - parameter to enable the conversion of Cosmos coins <--> ERC20 - tokens. - enable_evm_hook: - type: boolean - description: >- - parameter to enable the EVM hook that converts an ERC20 token to a - Cosmos + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the - Coin by transferring the Tokens through a MsgEthereumTx to the + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - ModuleAddress Ethereum address. - title: Params defines the erc20 module params - description: |- - QueryParamsResponse is the response type for the Query/Params RPC - method. - canto.erc20.v1.QueryTokenPairResponse: - type: object - properties: - token_pair: - type: object - properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: - type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - description: |- - QueryTokenPairResponse is the response type for the Query/TokenPair RPC - method. - canto.erc20.v1.QueryTokenPairsResponse: + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit + + messages. + extension_signature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + + consensus for the associated block. + + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlockID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: |- + Block is tendermint type Block, with the Header proposer address + field converted to bech32 string. + description: >- + GetLatestBlockResponse is the response type for the Query/GetLatestBlock + RPC method. + cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: type: object properties: - token_pairs: + block_height: + type: string + format: int64 + validators: type: array items: type: object properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: + address: type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + protocol buffer message. This string must contain at least - was set, its value is undefined otherwise - description: |- - QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC - method. - canto.erc20.v1.TokenPair: - type: object - properties: - erc20_address: - type: string - title: address of ERC20 contract token - denom: - type: string - title: cosmos base denomination to be mapped to - enabled: - type: boolean - title: shows token mapping enable status - contract_owner: - title: >- - ERC20 owner address ENUM (0 invalid, 1 ModuleAccount, 2 external - address) - type: string - enum: - - OWNER_UNSPECIFIED - - OWNER_MODULE - - OWNER_EXTERNAL - default: OWNER_UNSPECIFIED - description: |- - Owner enumerates the ownership of a ERC20 contract. + one "/" character. The last segment of the URL's path must + represent - - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner. - - OWNER_MODULE: OWNER_MODULE erc20 is owned by the erc20 module account. - - OWNER_EXTERNAL: EXTERNAL erc20 is owned by an external account. - description: >- - TokenPair defines an instance that records a pairing consisting of a - native - Cosmos Coin and an ERC20 token address. - canto.inflation.v1.ExponentialCalculation: - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - title: >- - ExponentialCalculation holds factors to calculate exponential inflation on + the fully qualified name of the type (as in - each period. Calculation reference: + `path/google.protobuf.Duration`). The name should be in a + canonical form - periodProvision = exponentialDecay * bondingIncentive + (e.g., leading "." is not accepted). - f(x) = (a * (1 - r) ^ x + c) * (1 + max_variance - - bondedRatio * - (max_variance / bonding_target)) - canto.inflation.v1.InflationDistribution: - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted minted_denom that - is + In practice, teams usually precompile into the binary all + types that they - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted minted_denom - that + expect it to use in the context of Any. However, for URLs + which use the - is + scheme `http`, `https`, or no scheme, one can optionally set + up a type - // to be allocated to the incentives module address + server that maps type URLs to message definitions as + follows: - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - community_pool defines the proportion of the minted minted_denom that - is to + * If no scheme is provided, `https` is assumed. - be allocated to the community pool - title: >- - InflationDistribution defines the distribution in which inflation is + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - allocated through minting on each epoch (staking, incentives, community). - It + Note: this functionality is not currently available in the + official - excludes the team vesting distribution, as this is minted once at genesis. + protobuf release, and it is not used for type URLs beginning + with - The initial InflationDistribution can be calculated from the Evmos Token + type.googleapis.com. - Model like this: - mintDistribution1 = distribution1 / (1 - teamVestingDistribution) + Schemes other than `http`, `https` (or the empty scheme) + might be - 0.5333333 = 40% / (1 - 25%) - canto.inflation.v1.Params: - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - exponential_calculation: - title: variables to calculate exponential inflation - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - inflation_distribution: - title: inflation distribution of the minted denom - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted minted_denom - that is + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted - minted_denom that + URL that describes the type of the serialized message. - is - // to be allocated to the incentives module address + Protobuf library provides support to pack/unpack Any values in + the form - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; + of utility functions or additional generated methods of the Any + type. - community_pool defines the proportion of the minted minted_denom - that is to - be allocated to the community pool - enable_inflation: - type: boolean - title: parameter to enable inflation and halt increasing the skipped_epochs - description: Params holds parameters for the inflation module. - canto.inflation.v1.QueryCirculatingSupplyResponse: - type: object - properties: - circulating_supply: - title: total amount of coins in circulation - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + Example 1: Pack and unpack a message in C++. - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - QueryCirculatingSupplyResponse is the response type for the - Query/CirculatingSupply RPC method. - canto.inflation.v1.QueryEpochMintProvisionResponse: - type: object - properties: - epoch_mint_provision: - description: epoch_mint_provision is the current minting per epoch provision value. - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - QueryEpochMintProvisionResponse is the response type for the - Query/EpochMintProvision RPC method. - canto.inflation.v1.QueryInflationRateResponse: - type: object - properties: - inflation_rate: - type: string - title: rate by which the total supply increases within one period - description: >- - QueryInflationRateResponse is the response type for the - Query/InflationRate + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - RPC method. - canto.inflation.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - exponential_calculation: - title: variables to calculate exponential inflation - type: object - properties: - a: - type: string - title: initial value - r: - type: string - title: reduction factor - c: - type: string - title: long term inflation - bonding_target: - type: string - title: bonding target - max_variance: - type: string - title: max variance - inflation_distribution: - title: inflation distribution of the minted denom - type: object - properties: - staking_rewards: - type: string - title: >- - staking_rewards defines the proportion of the minted - minted_denom that is + Example 2: Pack and unpack a message in Java. - to be allocated as staking rewards - community_pool: - type: string - title: >- - // usage_incentives defines the proportion of the minted - minted_denom that + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - is + Example 3: Pack and unpack a message in Python. - // to be allocated to the incentives module address + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - string usage_incentives = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; + Example 4: Pack and unpack a message in Go - community_pool defines the proportion of the minted - minted_denom that is to + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - be allocated to the community pool - enable_inflation: - type: boolean - title: >- - parameter to enable inflation and halt increasing the - skipped_epochs - description: QueryParamsResponse is the response type for the Query/Params RPC method. - canto.inflation.v1.QueryPeriodResponse: - type: object - properties: - period: - type: string - format: uint64 - description: period is the current minting per epoch provision value. - description: QueryPeriodResponse is the response type for the Query/Period RPC method. - canto.inflation.v1.QuerySkippedEpochsResponse: - type: object - properties: - skipped_epochs: - type: string - format: uint64 - description: number of epochs that the inflation module has been disabled. - description: >- - QuerySkippedEpochsResponse is the response type for the - Query/SkippedEpochs + The pack methods provided by protobuf library will by default + use - RPC method. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - canto.onboarding.v1.Params: - type: object - properties: - enable_onboarding: - type: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module - canto.onboarding.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - enable_onboarding: - type: boolean - title: enable onboarding IBC middleware - auto_swap_threshold: - type: string - whitelisted_channels: - type: array - items: - type: string - title: Params holds parameters for the onboarding module - description: QueryParamsResponse is the response type for the Query/Params RPC method. - canto.coinswap.v1.Params: - type: object - properties: - fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - tax_rate: - type: string - max_standard_coin_per_pool: - type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + JSON - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: Params defines token module's parameters - canto.coinswap.v1.PoolInfo: - type: object - properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + The JSON representation of an `Any` value uses the regular - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: counterparty token balance - lpt: + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. type: object properties: - denom: + next_key: type: string - amount: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: |- - Coin defines a token with a denomination and an amount. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: liquidity token balance - fee: - type: string - title: liquidity pool fee - canto.coinswap.v1.QueryLiquidityPoolResponse: + was set, its value is undefined otherwise + description: >- + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: type: object properties: - pool: + default_node_info: type: object properties: - id: - type: string - escrow_address: - type: string - title: escrow account for deposit tokens - standard: + protocol_version: type: object properties: - denom: - type: string - amount: + p2p: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: + format: uint64 + block: type: string - amount: + format: uint64 + app: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: counterparty token balance - lpt: + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: type: object properties: - denom: + tx_index: type: string - amount: + rpc_address: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: liquidity token balance - fee: + application_version: + type: object + properties: + name: type: string - title: liquidity pool fee - title: >- - QueryLiquidityPoolResponse is response type for the Query/LiquidityPool - RPC - - method - canto.coinswap.v1.QueryLiquidityPoolsResponse: + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC + method. + cosmos.base.tendermint.v1beta1.GetSyncingResponse: type: object properties: - pools: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing RPC + method. + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + type: object + properties: + block_height: + type: string + format: int64 + validators: type: array items: type: object properties: - id: - type: string - escrow_address: + address: type: string - title: escrow account for deposit tokens - standard: + pub_key: type: object properties: - denom: - type: string - amount: + type_url: type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + protocol buffer message. This string must contain at least - NOTE: The amount field is an Int which implements the custom - method + one "/" character. The last segment of the URL's path must + represent - signatures required by gogoproto. - title: main token balance - token: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - NOTE: The amount field is an Int which implements the custom - method + (e.g., leading "." is not accepted). - signatures required by gogoproto. - title: counterparty token balance - lpt: - type: object - properties: - denom: - type: string - amount: + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. description: >- - Coin defines a token with a denomination and an amount. + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". - NOTE: The amount field is an Int which implements the custom - method + JSON - signatures required by gogoproto. - title: liquidity token balance - fee: + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: type: string - title: liquidity pool fee + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. pagination: + description: pagination defines an pagination for the response. type: object properties: next_key: @@ -2150,87 +67413,424 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryLiquidityPoolsResponse is response type for the Query/LiquidityPools - RPC - - method - canto.coinswap.v1.QueryParamsResponse: + description: >- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.Header: type: object properties: - params: + version: + title: basic block info type: object properties: - fee: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: type: object properties: - denom: - type: string - amount: + total: + type: integer + format: int64 + hash: type: string - description: >- - Coin defines a token with a denomination and an amount. + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + description: >- + proposer_address is the original block proposer address, formatted as + a Bech32 string. + In Tendermint, this type is `bytes`, but in the SDK, we convert it to + a Bech32 string - NOTE: The amount field is an Int which implements the custom - method + for better UX. + description: Header defines the structure of a Tendermint block header. + cosmos.base.tendermint.v1beta1.Module: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos.base.tendermint.v1beta1.ProofOp: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. The data + could - signatures required by gogoproto. - pool_creation_fee: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + be arbitrary format, providing necessary data for example neighbouring + node + hash. - NOTE: The amount field is an Int which implements the custom - method - signatures required by gogoproto. - tax_rate: + Note: This type is a duplicate of the ProofOp proto type defined in + Tendermint. + cosmos.base.tendermint.v1beta1.ProofOps: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle root. The + data could + + be arbitrary format, providing necessary data for example + neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type defined in + Tendermint. + description: >- + ProofOps is Merkle proof defined by the list of ProofOps. + + + Note: This type is a duplicate of the ProofOps proto type defined in + Tendermint. + cosmos.base.tendermint.v1beta1.Validator: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: type: string - max_standard_coin_per_pool: + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: type: string - max_swap_amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - NOTE: The amount field is an Int which implements the custom - method - signatures required by gogoproto. - title: Params defines token module's parameters - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.base.v1beta1.Coin: + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + cosmos.base.tendermint.v1beta1.VersionInfo: type: object properties: - denom: + name: type: string - amount: + app_name: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos_sdk_version: + type: string + title: 'Since: cosmos-sdk 0.43' + description: VersionInfo is the type for the GetNodeInfoResponse message. + tendermint.p2p.DefaultNodeInfo: + type: object + properties: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.DefaultNodeInfoOther: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.ProtocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 diff --git a/proto/buf.yaml b/proto/buf.yaml index 6c2c18d35..faf79bc46 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,6 +1,6 @@ version: v1 deps: - - buf.build/cosmos/cosmos-sdk:v0.50.1 + - buf.build/cosmos/cosmos-sdk:v0.50.5 - buf.build/cosmos/cosmos-proto - buf.build/cosmos/gogo-proto - buf.build/googleapis/googleapis diff --git a/scripts/protoc-swagger-gen.sh b/scripts/protoc-swagger-gen.sh index d75d15533..b7292660b 100755 --- a/scripts/protoc-swagger-gen.sh +++ b/scripts/protoc-swagger-gen.sh @@ -2,8 +2,16 @@ set -eo pipefail +mkdir -p ./third_party +cd third_party +git clone --branch v0.50.5 --single-branch --depth 1 https://github.com/cosmos/cosmos-sdk +git clone --branch v8.0.0 --single-branch --depth 1 https://github.com/cosmos/ibc-go +git clone --branch dudong2/feat/cosmos-sdk@v0.50.x-cometbft@v0.38.0-2 --single-branch --depth 1 https://github.com/b-harvest/ethermint +cd .. + mkdir -p ./tmp-swagger-gen -proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) + +proto_dirs=$(find ./proto ./third_party/cosmos-sdk/proto ./third_party/ibc-go/proto ./third_party/ethermint/proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) for dir in $proto_dirs; do # generate swagger files (filter query files) @@ -20,6 +28,7 @@ done swagger-combine ./client/docs/config.json -o ./client/docs/swagger-ui/swagger.yaml -f yaml --continueOnConflictingPaths true --includeDefinitions true # clean swagger files +rm -rf ./third_party rm -rf ./tmp-swagger-gen # generate binary for static server From 21d14f9301ffe8ef3ec2a908148f2d7581372370 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Apr 2024 13:36:47 +0900 Subject: [PATCH 69/96] feat: Move ValidateBasic logic from method func of msg to msg handler --- app/ante/utils_test.go | 1 - x/coinswap/handler.go | 41 --- x/coinswap/keeper/msg_server.go | 56 ++++ .../msg_server_test.go} | 79 ++++-- x/coinswap/simulation/operations.go | 93 ++++--- x/coinswap/types/msgs.go | 148 +---------- x/csr/handler.go | 21 -- x/csr/module.go | 5 - x/erc20/client/cli/tx.go | 39 ++- x/erc20/handler.go | 29 -- x/erc20/keeper/msg_server.go | 37 +++ x/erc20/keeper/msg_server_test.go | 129 +++++++++ x/erc20/module.go | 5 - x/erc20/types/msg.go | 75 ------ x/erc20/types/msg_test.go | 248 ------------------ x/govshuttle/handler.go | 28 -- 16 files changed, 358 insertions(+), 676 deletions(-) delete mode 100644 x/coinswap/handler.go rename x/coinswap/{types/msgs_test.go => keeper/msg_server_test.go} (67%) delete mode 100644 x/csr/handler.go delete mode 100644 x/erc20/handler.go delete mode 100644 x/erc20/types/msg_test.go delete mode 100644 x/govshuttle/handler.go diff --git a/app/ante/utils_test.go b/app/ante/utils_test.go index 43b386316..2f8093f29 100644 --- a/app/ante/utils_test.go +++ b/app/ante/utils_test.go @@ -178,5 +178,4 @@ var _ sdk.Tx = &invalidTx{} type invalidTx struct{} func (invalidTx) GetMsgs() []sdk.Msg { return []sdk.Msg{nil} } -func (invalidTx) ValidateBasic() error { return nil } func (invalidTx) GetMsgsV2() ([]protov2.Message, error) { return nil, nil } diff --git a/x/coinswap/handler.go b/x/coinswap/handler.go deleted file mode 100644 index 47607019d..000000000 --- a/x/coinswap/handler.go +++ /dev/null @@ -1,41 +0,0 @@ -package coinswap - -import ( - errorsmod "cosmossdk.io/errors" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -// NewHandler returns a handler for all "coinswap" type messages. -func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { - msgServer := keeper.NewMsgServerImpl(k) - - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) - - switch msg := msg.(type) { - case *types.MsgAddLiquidity: - res, err := msgServer.AddLiquidity(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgSwapOrder: - res, err := msgServer.SwapCoin(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgRemoveLiquidity: - res, err := msgServer.RemoveLiquidity(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.MsgUpdateParams: - res, err := msgServer.UpdateParams(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - default: - return nil, errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - } - } -} diff --git a/x/coinswap/keeper/msg_server.go b/x/coinswap/keeper/msg_server.go index 1ad93e70d..853e1adc0 100644 --- a/x/coinswap/keeper/msg_server.go +++ b/x/coinswap/keeper/msg_server.go @@ -25,6 +25,26 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { } func (m msgServer) AddLiquidity(goCtx context.Context, msg *types.MsgAddLiquidity) (*types.MsgAddLiquidityResponse, error) { + if err := types.ValidateMaxToken(msg.MaxToken); err != nil { + return nil, err + } + + if err := types.ValidateExactStandardAmt(msg.ExactStandardAmt); err != nil { + return nil, err + } + + if err := types.ValidateMinLiquidity(msg.MinLiquidity); err != nil { + return nil, err + } + + if err := types.ValidateDeadline(msg.Deadline); err != nil { + return nil, err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { @@ -50,6 +70,26 @@ func (m msgServer) AddLiquidity(goCtx context.Context, msg *types.MsgAddLiquidit } func (m msgServer) RemoveLiquidity(goCtx context.Context, msg *types.MsgRemoveLiquidity) (*types.MsgRemoveLiquidityResponse, error) { + if err := types.ValidateMinToken(msg.MinToken); err != nil { + return nil, err + } + + if err := types.ValidateWithdrawLiquidity(msg.WithdrawLiquidity); err != nil { + return nil, err + } + + if err := types.ValidateMinStandardAmt(msg.MinStandardAmt); err != nil { + return nil, err + } + + if err := types.ValidateDeadline(msg.Deadline); err != nil { + return nil, err + } + + if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { @@ -79,6 +119,22 @@ func (m msgServer) RemoveLiquidity(goCtx context.Context, msg *types.MsgRemoveLi } func (m msgServer) SwapCoin(goCtx context.Context, msg *types.MsgSwapOrder) (*types.MsgSwapCoinResponse, error) { + if err := types.ValidateInput(msg.Input); err != nil { + return nil, err + } + + if err := types.ValidateOutput(msg.Output); err != nil { + return nil, err + } + + if msg.Input.Coin.Denom == msg.Output.Coin.Denom { + return nil, errorsmod.Wrap(types.ErrEqualDenom, "invalid swap") + } + + if err := types.ValidateDeadline(msg.Deadline); err != nil { + return nil, err + } + ctx := sdk.UnwrapSDKContext(goCtx) // check that deadline has not passed if ctx.BlockHeader().Time.After(time.Unix(msg.Deadline, 0)) { diff --git a/x/coinswap/types/msgs_test.go b/x/coinswap/keeper/msg_server_test.go similarity index 67% rename from x/coinswap/types/msgs_test.go rename to x/coinswap/keeper/msg_server_test.go index 2988000bf..e25993163 100644 --- a/x/coinswap/types/msgs_test.go +++ b/x/coinswap/keeper/msg_server_test.go @@ -1,22 +1,25 @@ -package types +package keeper_test import ( - "testing" - "github.com/cometbft/cometbft/crypto/tmhash" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) var ( sender = sdk.AccAddress(tmhash.SumTruncated([]byte("sender"))).String() ) -func TestMsgSwapOrder_ValidateBasic(t *testing.T) { +func (suite *TestSuite) TestMsgSwapOrder_ValidateBasic() { + msg := types.MsgSwapOrder{} + suite.Require().Equal("/canto.coinswap.v1.MsgSwapOrder", sdk.MsgTypeURL(&msg)) + type fields struct { - Input Input - Output Output + Input types.Input + Output types.Output Deadline int64 IsBuyOrder bool } @@ -25,30 +28,35 @@ func TestMsgSwapOrder_ValidateBasic(t *testing.T) { fields fields wantErr bool }{ - {name: "right test case", wantErr: false, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: "", Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("131stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid input coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", -1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, - {name: "invalid output sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: "", Coin: buildCoin("iris", 1000)}}}, - {name: "invalid output coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("131iris", 1000)}}}, - {name: "invalid output coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: Output{Address: sender, Coin: buildCoin("iris", -1000)}}}, + {name: "invalid input sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: "", Coin: buildCoin("stake", 1000)}, Output: types.Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, + {name: "invalid input coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: sender, Coin: buildCoin("invalidstake", 1000)}, Output: types.Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, + {name: "invalid input coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: sender, Coin: buildCoin("stake", -1000)}, Output: types.Output{Address: sender, Coin: buildCoin("iris", 1000)}}}, + {name: "invalid output sender", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: types.Output{Address: "", Coin: buildCoin("iris", 1000)}}}, + {name: "invalid output coin denom", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: types.Output{Address: sender, Coin: buildCoin("131iris", 1000)}}}, + {name: "invalid output coin amount", wantErr: true, fields: fields{IsBuyOrder: true, Deadline: 10, Input: types.Input{Address: sender, Coin: buildCoin("stake", 1000)}, Output: types.Output{Address: sender, Coin: buildCoin("iris", -1000)}}}, } for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - msg := MsgSwapOrder{ + suite.Run(tt.name, func() { + msg := types.MsgSwapOrder{ Input: tt.fields.Input, Output: tt.fields.Output, Deadline: tt.fields.Deadline, IsBuyOrder: tt.fields.IsBuyOrder, } - if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgSwapOrder.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + err := suite.app.CoinswapKeeper.Swap(suite.ctx, &msg) + if tt.wantErr { + suite.Require().Error(err) + } else { + suite.Require().NoError(err) } }) } } -func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { +func (suite *TestSuite) TestMsgAddLiquidity_ValidateBasic() { + msg := types.MsgAddLiquidity{} + suite.Require().Equal("/canto.coinswap.v1.MsgAddLiquidity", sdk.MsgTypeURL(&msg)) + type fields struct { MaxToken sdk.Coin ExactStandardAmt sdkmath.Int @@ -65,7 +73,7 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { name: "invalid MaxToken denom", wantErr: true, fields: fields{ - MaxToken: buildCoin("131stake", 1000), + MaxToken: buildCoin("invalidstake", 1000), ExactStandardAmt: sdkmath.NewInt(100), MinLiquidity: sdkmath.NewInt(100), Deadline: 1611213344, @@ -129,22 +137,30 @@ func TestMsgAddLiquidity_ValidateBasic(t *testing.T) { }, } for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - msg := MsgAddLiquidity{ + suite.Run(tt.name, func() { + msg := types.MsgAddLiquidity{ MaxToken: tt.fields.MaxToken, ExactStandardAmt: tt.fields.ExactStandardAmt, MinLiquidity: tt.fields.MinLiquidity, Deadline: tt.fields.Deadline, Sender: tt.fields.Sender, } - if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgAddLiquidity.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + res, err := suite.app.CoinswapKeeper.AddLiquidity(suite.ctx, &msg) + if tt.wantErr { + suite.Require().Error(err) + suite.Require().False(res.IsValid()) + } else { + suite.Require().NoError(err) + suite.Require().True(res.IsValid()) } }) } } -func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { +func (suite *TestSuite) TestMsgRemoveLiquidity_ValidateBasic() { + msg := types.MsgRemoveLiquidity{} + suite.Require().Equal("/canto.coinswap.v1.MsgRemoveLiquidity", sdk.MsgTypeURL(&msg)) + type fields struct { WithdrawLiquidity sdk.Coin MinToken sdkmath.Int @@ -172,7 +188,7 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { name: "invalid WithdrawLiquidity denom", wantErr: true, fields: fields{ - WithdrawLiquidity: buildCoin("131stake", 1000), + WithdrawLiquidity: buildCoin("invalidstake", 1000), MinToken: sdkmath.NewInt(100), MinStandardAmt: sdkmath.NewInt(100), Deadline: 1611213344, @@ -225,16 +241,21 @@ func TestMsgRemoveLiquidity_ValidateBasic(t *testing.T) { }, } for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - msg := MsgRemoveLiquidity{ + suite.Run(tt.name, func() { + msg := types.MsgRemoveLiquidity{ WithdrawLiquidity: tt.fields.WithdrawLiquidity, MinToken: tt.fields.MinToken, MinStandardAmt: tt.fields.MinStandardAmt, Deadline: tt.fields.Deadline, Sender: tt.fields.Sender, } - if err := msg.ValidateBasic(); (err != nil) != tt.wantErr { - t.Errorf("MsgRemoveLiquidity.ValidateBasic() error = %v, wantErr %v", err, tt.wantErr) + res, err := suite.app.CoinswapKeeper.RemoveLiquidity(suite.ctx, &msg) + if tt.wantErr { + suite.Require().Error(err) + suite.Require().True(res.IsValid()) + } else { + suite.Require().NoError(err) + suite.Require().False(res.IsValid()) } }) } diff --git a/x/coinswap/simulation/operations.go b/x/coinswap/simulation/operations.go index 9e7d7a7e5..2b2f7fbf0 100644 --- a/x/coinswap/simulation/operations.go +++ b/x/coinswap/simulation/operations.go @@ -19,6 +19,13 @@ import ( "github.com/cosmos/cosmos-sdk/x/simulation" ) +// coinswap message types +var ( + TypeMsgAddLiquidity = sdk.MsgTypeURL(&types.MsgAddLiquidity{}) + TypeMsgRemoveLiquidity = sdk.MsgTypeURL(&types.MsgRemoveLiquidity{}) + TypeMsgSwapOrder = sdk.MsgTypeURL(&types.MsgSwapOrder{}) +) + // Simulation operation weights constants const ( OpWeightMsgSwapOrder = "op_weight_msg_swap_order" @@ -94,32 +101,32 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B standardDenom, err := k.GetStandardDenom(ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "failed to get standardDenom"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "failed to get standardDenom"), nil, nil } spendable := bk.SpendableCoins(ctx, account.GetAddress()) exactStandardAmt := simtypes.RandomAmount(r, spendable.AmountOf(standardDenom)) if !exactStandardAmt.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "standardAmount should be positive"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "standardAmount should be positive"), nil, nil } maxToken = RandomSpendableToken(r, spendable) if maxToken.Denom == standardDenom { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "tokenDenom should not be standardDenom"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "tokenDenom should not be standardDenom"), nil, err } if strings.HasPrefix(maxToken.Denom, types.LptTokenPrefix) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "tokenDenom should not be liquidity token"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "tokenDenom should not be liquidity token"), nil, err } if !maxToken.Amount.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "maxToken must is positive"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "maxToken must is positive"), nil, err } poolId := types.GetPoolId(maxToken.Denom) pool, has := k.GetPool(ctx, poolId) if has { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "pool not found"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "pool not found"), nil, err } reservePool, err := k.GetPoolBalances(ctx, pool.EscrowAddress) @@ -132,7 +139,7 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B minLiquidity = liquidity.Mul(exactStandardAmt).Quo(standardReserveAmt) if !maxToken.Amount.Sub(reservePool.AmountOf(maxToken.GetDenom()).Mul(exactStandardAmt).Quo(standardReserveAmt)).IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "insufficient funds"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "insufficient funds"), nil, err } params := k.GetParams(ctx) @@ -143,7 +150,7 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B spendTotal = spendTotal.Add(exactStandardAmt) } if spendable.AmountOf(poolCreationFee.Denom).LT(spendTotal) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgAddLiquidity, "insufficient funds"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgAddLiquidity, "insufficient funds"), nil, err } } @@ -163,7 +170,7 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate fees"), nil, nil } } @@ -182,11 +189,11 @@ func SimulateMsgAddLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk types.B ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate mock tx"), nil, err } if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, err + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to deliver tx"), nil, err } return simtypes.NewOperationMsg(msg, true, ""), nil, nil @@ -211,32 +218,32 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank spendable := bk.SpendableCoins(ctx, account.GetAddress()) standardDenom, err := k.GetStandardDenom(ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "failed to get standardDenom"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "failed to get standardDenom"), nil, err } if spendable.IsZero() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "spendable is zero"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "spendable is zero"), nil, err } // sold coin inputCoin = RandomSpendableToken(r, spendable) if strings.HasPrefix(inputCoin.Denom, types.LptTokenPrefix) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should not be liquidity token"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should not be liquidity token"), nil, err } if !inputCoin.Amount.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin must is positive"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin must is positive"), nil, err } poolId := types.GetPoolId(inputCoin.Denom) pool, has := k.GetPool(ctx, poolId) if !has { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } if _, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom); err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } // bought coin @@ -246,29 +253,29 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank return false }) if coins.IsZero() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "total supply is zero"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "total supply is zero"), nil, err } outputCoin = RandomTotalToken(r, coins) if strings.HasPrefix(outputCoin.Denom, types.LptTokenPrefix) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "outputCoin should not be liquidity token"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "outputCoin should not be liquidity token"), nil, err } if !outputCoin.Amount.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "outputCoin must is positive"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "outputCoin must is positive"), nil, err } poolId = types.GetPoolId(outputCoin.Denom) pool, has = k.GetPool(ctx, poolId) if !has { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } if _, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom); err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } if outputCoin.Denom == inputCoin.Denom { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "outputCoin denom and inputcoin denom should not be the same"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "outputCoin denom and inputcoin denom should not be the same"), nil, nil } isDoubleSwap := (outputCoin.Denom != standardDenom) && (inputCoin.Denom != standardDenom) @@ -277,26 +284,26 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank if isBuyOrder && isDoubleSwap { inputCoin, outputCoin, err = doubleSwapBill(inputCoin, outputCoin, ctx, k) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, err.Error()), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, err.Error()), nil, nil } } else if isBuyOrder && !isDoubleSwap { inputCoin, outputCoin, err = singleSwapBill(inputCoin, outputCoin, ctx, k) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, err.Error()), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, err.Error()), nil, nil } } else if !isBuyOrder && isDoubleSwap { inputCoin, outputCoin, err = doubleSwapSellOrder(inputCoin, outputCoin, ctx, k) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, err.Error()), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, err.Error()), nil, nil } } else if !isBuyOrder && !isDoubleSwap { inputCoin, outputCoin, err = singleSwapSellOrder(inputCoin, outputCoin, ctx, k) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, err.Error()), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, err.Error()), nil, nil } } if !outputCoin.Amount.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "outputCoin must is positive"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "outputCoin must is positive"), nil, err } deadline := randDeadline(r) @@ -318,7 +325,7 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate fees"), nil, nil } } @@ -336,11 +343,11 @@ func SimulateMsgSwapOrder(k keeper.Keeper, ak types.AccountKeeper, bk types.Bank ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate mock tx"), nil, err } if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, err + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to deliver tx"), nil, err } return simtypes.NewOperationMsg(msg, true, ""), nil, nil @@ -358,7 +365,7 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type account := ak.GetAccount(ctx, simAccount.Address) standardDenom, err := k.GetStandardDenom(ctx) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "failed to get standardDenom"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "failed to get standardDenom"), nil, err } var ( @@ -369,23 +376,23 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type spendable := bk.SpendableCoins(ctx, account.GetAddress()) if spendable.IsZero() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "spendable is zero"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "spendable is zero"), nil, err } token := RandomSpendableToken(r, spendable) if token.Denom == standardDenom { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRemoveLiquidity, "tokenDenom should not be standardDenom"), nil, err + return simtypes.NoOpMsg(types.ModuleName, TypeMsgRemoveLiquidity, "tokenDenom should not be standardDenom"), nil, err } pool, has := k.GetPoolByLptDenom(ctx, token.Denom) if !has { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } reservePool, err := k.GetPoolBalancesByLptDenom(ctx, pool.LptDenom) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgSwapOrder, "inputCoin should exist in the pool"), nil, nil } standardReserveAmt := reservePool.AmountOf(standardDenom) @@ -395,20 +402,20 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type liquidityReserve := bk.GetSupply(ctx, token.Denom).Amount if !withdrawLiquidity.IsValid() || !withdrawLiquidity.IsPositive() { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRemoveLiquidity, "invalid withdrawLiquidity"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgRemoveLiquidity, "invalid withdrawLiquidity"), nil, nil } if liquidityReserve.LT(withdrawLiquidity.Amount) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil } minToken = withdrawLiquidity.Amount.Mul(tokenReserveAmt).Quo(liquidityReserve) if tokenReserveAmt.LT(minToken) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil } minStandardAmt = withdrawLiquidity.Amount.Mul(standardReserveAmt).Quo(liquidityReserve) if standardReserveAmt.LT(minStandardAmt) { - return simtypes.NoOpMsg(types.ModuleName, types.TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, TypeMsgRemoveLiquidity, "insufficient funds"), nil, nil } deadline := randDeadline(r) @@ -426,7 +433,7 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type if !hasNeg { fees, err = simtypes.RandomFees(r, ctx, coinsTemp) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate fees"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate fees"), nil, nil } } @@ -445,11 +452,11 @@ func SimulateMsgRemoveLiquidity(k keeper.Keeper, ak types.AccountKeeper, bk type ) if err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to generate mock tx"), nil, err + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to generate mock tx"), nil, err } if _, _, err := app.SimTxFinalizeBlock(txGen.TxEncoder(), tx); err != nil { - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, nil + return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to deliver tx"), nil, nil } return simtypes.NewOperationMsg(msg, true, ""), nil, nil diff --git a/x/coinswap/types/msgs.go b/x/coinswap/types/msgs.go index 824366760..e064bb1c9 100644 --- a/x/coinswap/types/msgs.go +++ b/x/coinswap/types/msgs.go @@ -1,10 +1,8 @@ package types import ( - errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) var ( @@ -18,25 +16,14 @@ const ( LptTokenPrefix = "lpt" // LptTokenFormat defines the name of liquidity token LptTokenFormat = "lpt-%d" - - // TypeMsgAddLiquidity defines the type of MsgAddLiquidity - TypeMsgAddLiquidity = "add_liquidity" - // TypeMsgRemoveLiquidity defines the type of MsgRemoveLiquidity - TypeMsgRemoveLiquidity = "remove_liquidity" - // TypeMsgSwapOrder defines the type of MsgSwapOrder - TypeMsgSwapOrder = "swap_order" ) -/* --------------------------------------------------------------------------- */ -// MsgSwapOrder -/* --------------------------------------------------------------------------- */ - // MsgSwapOrder - struct for swapping a coin // Input and Output can either be exact or calculated. // An exact coin has the senders desired buy or sell amount. // A calculated coin has the desired denomination and bounded amount // the sender is willing to buy or sell in this order. - +// // NewMsgSwapOrder creates a new MsgSwapOrder object. func NewMsgSwapOrder( input Input, @@ -52,47 +39,6 @@ func NewMsgSwapOrder( } } -// Route implements Msg. -func (msg MsgSwapOrder) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgSwapOrder) Type() string { return TypeMsgSwapOrder } - -// ValidateBasic implements Msg. -func (msg MsgSwapOrder) ValidateBasic() error { - if err := ValidateInput(msg.Input); err != nil { - return err - } - - if err := ValidateOutput(msg.Output); err != nil { - return err - } - - if msg.Input.Coin.Denom == msg.Output.Coin.Denom { - return errorsmod.Wrap(ErrEqualDenom, "invalid swap") - } - - return ValidateDeadline(msg.Deadline) -} - -// GetSignBytes implements Msg. -func (msg MsgSwapOrder) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgSwapOrder) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Input.Address) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -/* --------------------------------------------------------------------------- */ -// MsgAddLiquidity -/* --------------------------------------------------------------------------- */ - // NewMsgAddLiquidity creates a new MsgAddLiquidity object. func NewMsgAddLiquidity( maxToken sdk.Coin, @@ -110,54 +56,6 @@ func NewMsgAddLiquidity( } } -// Route implements Msg. -func (msg MsgAddLiquidity) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgAddLiquidity) Type() string { return TypeMsgAddLiquidity } - -// ValidateBasic implements Msg. -func (msg MsgAddLiquidity) ValidateBasic() error { - if err := ValidateMaxToken(msg.MaxToken); err != nil { - return err - } - - if err := ValidateExactStandardAmt(msg.ExactStandardAmt); err != nil { - return err - } - - if err := ValidateMinLiquidity(msg.MinLiquidity); err != nil { - return err - } - - if err := ValidateDeadline(msg.Deadline); err != nil { - return err - } - - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) - } - return nil -} - -// GetSignBytes implements Msg. -func (msg MsgAddLiquidity) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgAddLiquidity) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -/* --------------------------------------------------------------------------- */ -// MsgRemoveLiquidity -/* --------------------------------------------------------------------------- */ - // NewMsgRemoveLiquidity creates a new MsgRemoveLiquidity object func NewMsgRemoveLiquidity( minToken sdkmath.Int, @@ -174,47 +72,3 @@ func NewMsgRemoveLiquidity( Sender: sender, } } - -// Route implements Msg. -func (msg MsgRemoveLiquidity) Route() string { return RouterKey } - -// Type implements Msg. -func (msg MsgRemoveLiquidity) Type() string { return TypeMsgRemoveLiquidity } - -// ValidateBasic implements Msg. -func (msg MsgRemoveLiquidity) ValidateBasic() error { - if err := ValidateMinToken(msg.MinToken); err != nil { - return err - } - - if err := ValidateWithdrawLiquidity(msg.WithdrawLiquidity); err != nil { - return err - } - - if err := ValidateMinStandardAmt(msg.MinStandardAmt); err != nil { - return err - } - - if err := ValidateDeadline(msg.Deadline); err != nil { - return err - } - - if _, err := sdk.AccAddressFromBech32(msg.Sender); err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) - } - return nil -} - -// GetSignBytes implements Msg. -func (msg MsgRemoveLiquidity) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) -} - -// GetSigners implements Msg. -func (msg MsgRemoveLiquidity) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} diff --git a/x/csr/handler.go b/x/csr/handler.go deleted file mode 100644 index 832127fe8..000000000 --- a/x/csr/handler.go +++ /dev/null @@ -1,21 +0,0 @@ -package csr - -import ( - "fmt" - - errorsmod "cosmossdk.io/errors" - "github.com/Canto-Network/Canto/v7/x/csr/keeper" - "github.com/Canto-Network/Canto/v7/x/csr/types" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// NewHandler for the CSR module. This will not handle msg types because all transactions occur directly -// through the CSR Turnstile Smart Contract. -func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) - } -} diff --git a/x/csr/module.go b/x/csr/module.go index 3627f0953..4a308aaf8 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -7,7 +7,6 @@ import ( // this line is used by starport scaffolding # 1 - "github.com/cosmos/cosmos-sdk/baseapp" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -125,10 +124,6 @@ func (am AppModule) Name() string { return am.AppModuleBasic.Name() } -func (am AppModule) NewHandler() baseapp.MsgServiceHandler { - return NewHandler(am.keeper) -} - // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go index c7782c1e5..93ff13e7d 100644 --- a/x/erc20/client/cli/tx.go +++ b/x/erc20/client/cli/tx.go @@ -5,11 +5,14 @@ import ( "github.com/spf13/cobra" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/ethereum/go-ethereum/common" ethermint "github.com/evmos/ethermint/types" @@ -69,8 +72,23 @@ func NewConvertCoinCmd() *cobra.Command { Sender: sender.String(), } - if err := msg.ValidateBasic(); err != nil { - return err + if err := types.ValidateErc20Denom(msg.Coin.Denom); err != nil { + if err := ibctransfertypes.ValidateIBCDenom(msg.Coin.Denom); err != nil { + return err + } + } + + if !msg.Coin.Amount.IsPositive() { + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err = sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return errorsmod.Wrap(err, "invalid sender address") + } + + if !common.IsHexAddress(msg.Receiver) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) } return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) @@ -120,8 +138,21 @@ func NewConvertERC20Cmd() *cobra.Command { Sender: from.Hex(), } - if err := msg.ValidateBasic(); err != nil { - return err + if !common.IsHexAddress(msg.ContractAddress) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) + } + + if !msg.Amount.IsPositive() { + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err = sdk.AccAddressFromBech32(msg.Receiver) + if err != nil { + return errorsmod.Wrap(err, "invalid receiver address") + } + + if !common.IsHexAddress(msg.Sender) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) } return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) diff --git a/x/erc20/handler.go b/x/erc20/handler.go deleted file mode 100644 index 41fe6b055..000000000 --- a/x/erc20/handler.go +++ /dev/null @@ -1,29 +0,0 @@ -package erc20 - -import ( - errorsmod "cosmossdk.io/errors" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// NewHandler defines the erc20 module handler instance -func NewHandler(server types.MsgServer) baseapp.MsgServiceHandler { - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) - - switch msg := msg.(type) { - case *types.MsgConvertCoin: - res, err := server.ConvertCoin(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgConvertERC20: - res, err := server.ConvertERC20(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - default: - err := errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) - return nil, err - } - } -} diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index f180adb16..f9d20a996 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -9,6 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/ethereum/go-ethereum/common" "github.com/hashicorp/go-metrics" @@ -24,6 +25,25 @@ func (k Keeper) ConvertCoin( goCtx context.Context, msg *types.MsgConvertCoin, ) (*types.MsgConvertCoinResponse, error) { + if err := types.ValidateErc20Denom(msg.Coin.Denom); err != nil { + if err := ibctransfertypes.ValidateIBCDenom(msg.Coin.Denom); err != nil { + return nil, err + } + } + + if !msg.Coin.Amount.IsPositive() { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err := sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return nil, errorsmod.Wrap(err, "invalid sender address") + } + + if !common.IsHexAddress(msg.Receiver) { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) + } + ctx := sdk.UnwrapSDKContext(goCtx) // Error checked during msg validation @@ -66,6 +86,23 @@ func (k Keeper) ConvertERC20( goCtx context.Context, msg *types.MsgConvertERC20, ) (*types.MsgConvertERC20Response, error) { + if !common.IsHexAddress(msg.ContractAddress) { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) + } + + if !msg.Amount.IsPositive() { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err := sdk.AccAddressFromBech32(msg.Receiver) + if err != nil { + return nil, errorsmod.Wrap(err, "invalid receiver address") + } + + if !common.IsHexAddress(msg.Sender) { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) + } + ctx := sdk.UnwrapSDKContext(goCtx) // Error checked during msg validation diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 7c51eb627..5a33c76b1 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -14,6 +14,7 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/ethereum/go-ethereum/common" + "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/stretchr/testify/mock" @@ -71,6 +72,134 @@ func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *ty return validMetadata, pair } +func (suite *KeeperTestSuite) TestMsgConvertCoin_ValidateBasic() { + msg := types.MsgConvertCoin{} + suite.Require().Equal("/canto.erc20.v1.MsgConvertCoin", sdk.MsgTypeURL(&msg)) + + testCases := []struct { + name string + coin sdk.Coin + receiver string + sender string + expectPass bool + }{ + { + "invalid denom", + sdk.Coin{ + Denom: "", + Amount: sdkmath.NewInt(100), + }, + "0x0000", + tests.GenerateAddress().String(), + false, + }, + { + "negative coin amount", + sdk.Coin{ + Denom: "coin", + Amount: sdkmath.NewInt(-100), + }, + "0x0000", + tests.GenerateAddress().String(), + false, + }, + { + "msg convert coin - invalid sender", + sdk.NewCoin("coin", sdkmath.NewInt(100)), + tests.GenerateAddress().String(), + "cantoinvalid", + false, + }, + { + "msg convert coin - invalid receiver", + sdk.NewCoin("coin", sdkmath.NewInt(100)), + "0x0000", + sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), + false, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + msg := types.MsgConvertCoin{ + Coin: tc.coin, + Receiver: tc.receiver, + Sender: tc.sender, + } + _, err := suite.app.Erc20Keeper.ConvertCoin(suite.ctx, &msg) + if tc.expectPass { + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *KeeperTestSuite) TestMsgConvertERC20_ValidateBasic() { + msg := types.MsgConvertERC20{} + suite.Require().Equal("/canto.erc20.v1.MsgConvertERC20", sdk.MsgTypeURL(&msg)) + + testCases := []struct { + name string + amount sdkmath.Int + receiver string + contract string + sender string + expectPass bool + }{ + { + "invalid contract hex address", + sdkmath.NewInt(100), + sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), + sdk.AccAddress{}.String(), + tests.GenerateAddress().String(), + false, + }, + { + "negative coin amount", + sdkmath.NewInt(-100), + sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), + tests.GenerateAddress().String(), + tests.GenerateAddress().String(), + false, + }, + { + "invalid receiver address", + sdkmath.NewInt(100), + sdk.AccAddress{}.String(), + tests.GenerateAddress().String(), + tests.GenerateAddress().String(), + false, + }, + { + "invalid sender address", + sdkmath.NewInt(100), + sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), + tests.GenerateAddress().String(), + sdk.AccAddress{}.String(), + false, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + msg := types.MsgConvertERC20{ + ContractAddress: tc.contract, + Amount: tc.amount, + Receiver: tc.receiver, + Sender: tc.sender, + } + _, err := suite.app.Erc20Keeper.ConvertERC20(suite.ctx, &msg) + if tc.expectPass { + suite.Require().NoError(err) + } else { + suite.Require().Error(err) + } + }) + } +} + func (suite *KeeperTestSuite) TestConvertCoinNativeCoin() { testCases := []struct { name string diff --git a/x/erc20/module.go b/x/erc20/module.go index 698bd6a65..a0993fe85 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -7,7 +7,6 @@ import ( "math/rand" abci "github.com/cometbft/cometbft/abci/types" - "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -118,10 +117,6 @@ func (AppModule) Name() string { func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {} -func (am AppModule) NewHandler() baseapp.MsgServiceHandler { - return NewHandler(am.keeper) -} - func (am AppModule) RegisterServices(cfg module.Configurator) { types.RegisterMsgServer(cfg.MsgServer(), am.keeper) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) diff --git a/x/erc20/types/msg.go b/x/erc20/types/msg.go index aba5208cf..69c201f5d 100644 --- a/x/erc20/types/msg.go +++ b/x/erc20/types/msg.go @@ -4,15 +4,12 @@ import ( "fmt" "strings" - errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ethermint "github.com/evmos/ethermint/types" protov2 "google.golang.org/protobuf/proto" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" "github.com/ethereum/go-ethereum/common" ) @@ -21,11 +18,6 @@ var ( _ sdk.Msg = &MsgConvertERC20{} ) -const ( - TypeMsgConvertCoin = "convert_coin" - TypeMsgConvertERC20 = "convert_ERC20" -) - // NewMsgConvertCoin creates a new instance of MsgConvertCoin func NewMsgConvertCoin(coin sdk.Coin, receiver common.Address, sender sdk.AccAddress) *MsgConvertCoin { // nolint: interfacer return &MsgConvertCoin{ @@ -35,44 +27,6 @@ func NewMsgConvertCoin(coin sdk.Coin, receiver common.Address, sender sdk.AccAdd } } -// Route should return the name of the module -func (msg MsgConvertCoin) Route() string { return RouterKey } - -// Type should return the action -func (msg MsgConvertCoin) Type() string { return TypeMsgConvertCoin } - -// ValidateBasic runs stateless checks on the message -func (msg MsgConvertCoin) ValidateBasic() error { - if err := ValidateErc20Denom(msg.Coin.Denom); err != nil { - if err := ibctransfertypes.ValidateIBCDenom(msg.Coin.Denom); err != nil { - return err - } - } - - if !msg.Coin.Amount.IsPositive() { - return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") - } - _, err := sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - return errorsmod.Wrap(err, "invalid sender address") - } - if !common.IsHexAddress(msg.Receiver) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) - } - return nil -} - -// GetSignBytes encodes the message for signing -func (msg MsgConvertCoin) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) -} - -// GetSigners defines whose signature is required -func (msg MsgConvertCoin) GetSigners() []sdk.AccAddress { - addr := sdk.MustAccAddressFromBech32(msg.Sender) - return []sdk.AccAddress{addr} -} - // NewMsgConvertERC20 creates a new instance of MsgConvertERC20 func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, sender common.Address) *MsgConvertERC20 { // nolint: interfacer return &MsgConvertERC20{ @@ -83,35 +37,6 @@ func NewMsgConvertERC20(amount sdkmath.Int, receiver sdk.AccAddress, contract, s } } -// Route should return the name of the module -func (msg MsgConvertERC20) Route() string { return RouterKey } - -// Type should return the action -func (msg MsgConvertERC20) Type() string { return TypeMsgConvertERC20 } - -// ValidateBasic runs stateless checks on the message -func (msg MsgConvertERC20) ValidateBasic() error { - if !common.IsHexAddress(msg.ContractAddress) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) - } - if !msg.Amount.IsPositive() { - return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") - } - _, err := sdk.AccAddressFromBech32(msg.Receiver) - if err != nil { - return errorsmod.Wrap(err, "invalid receiver address") - } - if !common.IsHexAddress(msg.Sender) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) - } - return nil -} - -// GetSignBytes encodes the message for signing -func (msg MsgConvertERC20) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg)) -} - // GetSigners defines whose signature is required func (msg MsgConvertERC20) GetSigners() []sdk.AccAddress { addr := common.HexToAddress(msg.Sender) diff --git a/x/erc20/types/msg_test.go b/x/erc20/types/msg_test.go deleted file mode 100644 index 15e4cc678..000000000 --- a/x/erc20/types/msg_test.go +++ /dev/null @@ -1,248 +0,0 @@ -package types - -import ( - "testing" - - "github.com/stretchr/testify/suite" - - sdkmath "cosmossdk.io/math" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/evmos/ethermint/tests" - - "github.com/ethereum/go-ethereum/common" -) - -type MsgsTestSuite struct { - suite.Suite -} - -func TestMsgsTestSuite(t *testing.T) { - suite.Run(t, new(MsgsTestSuite)) -} - -func (suite *MsgsTestSuite) TestMsgConvertCoinGetters() { - msgInvalid := MsgConvertCoin{} - msg := NewMsgConvertCoin( - sdk.NewCoin("test", sdkmath.NewInt(100)), - tests.GenerateAddress(), - sdk.AccAddress(tests.GenerateAddress().Bytes()), - ) - suite.Require().Equal(RouterKey, msg.Route()) - suite.Require().Equal(TypeMsgConvertCoin, msg.Type()) - suite.Require().NotNil(msgInvalid.GetSignBytes()) - suite.Require().NotNil(msg.GetSigners()) -} - -func (suite *MsgsTestSuite) TestMsgConvertCoinNew() { - testCases := []struct { - msg string - coin sdk.Coin - receiver common.Address - sender sdk.AccAddress - expectPass bool - }{ - { - "msg convert coin - pass", - sdk.NewCoin("test", sdkmath.NewInt(100)), - tests.GenerateAddress(), - sdk.AccAddress(tests.GenerateAddress().Bytes()), - true, - }, - } - - for i, tc := range testCases { - tx := NewMsgConvertCoin(tc.coin, tc.receiver, tc.sender) - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} - -func (suite *MsgsTestSuite) TestMsgConvertCoin() { - testCases := []struct { - msg string - coin sdk.Coin - receiver string - sender string - expectPass bool - }{ - { - "invalid denom", - sdk.Coin{ - Denom: "", - Amount: sdkmath.NewInt(100), - }, - "0x0000", - tests.GenerateAddress().String(), - false, - }, - { - "negative coin amount", - sdk.Coin{ - Denom: "coin", - Amount: sdkmath.NewInt(-100), - }, - "0x0000", - tests.GenerateAddress().String(), - false, - }, - { - "msg convert coin - invalid sender", - sdk.NewCoin("coin", sdkmath.NewInt(100)), - tests.GenerateAddress().String(), - "cantoinvalid", - false, - }, - { - "msg convert coin - invalid receiver", - sdk.NewCoin("coin", sdkmath.NewInt(100)), - "0x0000", - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - false, - }, - { - "msg convert coin - pass", - sdk.NewCoin("coin", sdkmath.NewInt(100)), - tests.GenerateAddress().String(), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - true, - }, - { - "msg convert coin - pass with `erc20/` denom", - sdk.NewCoin("erc20/0xdac17f958d2ee523a2206206994597c13d831ec7", sdkmath.NewInt(100)), - tests.GenerateAddress().String(), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - true, - }, - { - "msg convert coin - pass with `ibc/{hash}` denom", - sdk.NewCoin("ibc/7F1D3FCF4AE79E1554D670D1AD949A9BA4E4A3C76C63093E17E446A46061A7A2", sdkmath.NewInt(100)), - tests.GenerateAddress().String(), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - true, - }, - } - - for i, tc := range testCases { - tx := MsgConvertCoin{tc.coin, tc.receiver, tc.sender} - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} - -func (suite *MsgsTestSuite) TestMsgConvertERC20Getters() { - msgInvalid := MsgConvertERC20{} - msg := NewMsgConvertERC20( - sdkmath.NewInt(100), - sdk.AccAddress(tests.GenerateAddress().Bytes()), - tests.GenerateAddress(), - tests.GenerateAddress(), - ) - suite.Require().Equal(RouterKey, msg.Route()) - suite.Require().Equal(TypeMsgConvertERC20, msg.Type()) - suite.Require().NotNil(msgInvalid.GetSignBytes()) - suite.Require().NotNil(msg.GetSigners()) -} - -func (suite *MsgsTestSuite) TestMsgConvertERC20New() { - testCases := []struct { - msg string - amount sdkmath.Int - receiver sdk.AccAddress - contract common.Address - sender common.Address - expectPass bool - }{ - { - "msg convert erc20 - pass", - sdkmath.NewInt(100), - sdk.AccAddress(tests.GenerateAddress().Bytes()), - tests.GenerateAddress(), - tests.GenerateAddress(), - true, - }, - } - - for i, tc := range testCases { - tx := NewMsgConvertERC20(tc.amount, tc.receiver, tc.contract, tc.sender) - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} - -func (suite *MsgsTestSuite) TestMsgConvertERC20() { - testCases := []struct { - msg string - amount sdkmath.Int - receiver string - contract string - sender string - expectPass bool - }{ - { - "invalid contract hex address", - sdkmath.NewInt(100), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - sdk.AccAddress{}.String(), - tests.GenerateAddress().String(), - false, - }, - { - "negative coin amount", - sdkmath.NewInt(-100), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - tests.GenerateAddress().String(), - tests.GenerateAddress().String(), - false, - }, - { - "invalid receiver address", - sdkmath.NewInt(100), - sdk.AccAddress{}.String(), - tests.GenerateAddress().String(), - tests.GenerateAddress().String(), - false, - }, - { - "invalid sender address", - sdkmath.NewInt(100), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - tests.GenerateAddress().String(), - sdk.AccAddress{}.String(), - false, - }, - { - "msg convert erc20 - pass", - sdkmath.NewInt(100), - sdk.AccAddress(tests.GenerateAddress().Bytes()).String(), - tests.GenerateAddress().String(), - tests.GenerateAddress().String(), - true, - }, - } - - for i, tc := range testCases { - tx := MsgConvertERC20{tc.contract, tc.amount, tc.receiver, tc.sender} - err := tx.ValidateBasic() - - if tc.expectPass { - suite.Require().NoError(err, "valid test %d failed: %s, %v", i, tc.msg) - } else { - suite.Require().Error(err, "invalid test %d passed: %s, %v", i, tc.msg) - } - } -} diff --git a/x/govshuttle/handler.go b/x/govshuttle/handler.go deleted file mode 100644 index ad5794c70..000000000 --- a/x/govshuttle/handler.go +++ /dev/null @@ -1,28 +0,0 @@ -package govshuttle - -import ( - "fmt" - - errorsmod "cosmossdk.io/errors" - "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// NewHandler ... -func NewHandler(k keeper.Keeper) baseapp.MsgServiceHandler { - // this line is used by starport scaffolding # handler/msgServer - - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) - - switch msg := msg.(type) { - // this line is used by starport scaffolding # 1 - default: - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) - } - } -} From 9af7a83ea9375a4b33d1a5ce3f9b1120d06c79b8 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Apr 2024 13:46:32 +0900 Subject: [PATCH 70/96] chore: Revert Network/****/genesis.json --- Networks/Mainnet/genesis.json | 34 +++++++++---------- Networks/Testnet/genesis-files/genesis.json | 34 +++++++++---------- .../genesis-files/plex-genesis/genesis.json | 34 +++++++++---------- Networks/Testnet/genesis.json | 34 +++++++++---------- 4 files changed, 64 insertions(+), 72 deletions(-) diff --git a/Networks/Mainnet/genesis.json b/Networks/Mainnet/genesis.json index 2686d5a53..e9e3acfbe 100644 --- a/Networks/Mainnet/genesis.json +++ b/Networks/Mainnet/genesis.json @@ -3,24 +3,22 @@ "chain_id": "canto_7700-1", "initial_height": "1", "consensus": { - "params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} - } + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis-files/genesis.json b/Networks/Testnet/genesis-files/genesis.json index eaf241cc1..f562ca03b 100644 --- a/Networks/Testnet/genesis-files/genesis.json +++ b/Networks/Testnet/genesis-files/genesis.json @@ -3,24 +3,22 @@ "chain_id": "canto_740-1", "initial_height": "1", "consensus": { - "params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} - } + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis-files/plex-genesis/genesis.json b/Networks/Testnet/genesis-files/plex-genesis/genesis.json index 989c48c91..68fa935c4 100644 --- a/Networks/Testnet/genesis-files/plex-genesis/genesis.json +++ b/Networks/Testnet/genesis-files/plex-genesis/genesis.json @@ -3,24 +3,22 @@ "chain_id": "canto_740-1", "initial_height": "1", "consensus": { - "params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} - } + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} }, "app_hash": "", "app_state": { diff --git a/Networks/Testnet/genesis.json b/Networks/Testnet/genesis.json index fccf7cc8e..6c7ac84f2 100644 --- a/Networks/Testnet/genesis.json +++ b/Networks/Testnet/genesis.json @@ -3,24 +3,22 @@ "chain_id": "canto_740-1", "initial_height": "1", "consensus": { - "params": { - "block": { - "max_bytes": "22020096", - "max_gas": "-1", - "time_iota_ms": "1000" - }, - "evidence": { - "max_age_num_blocks": "100000", - "max_age_duration": "172800000000000", - "max_bytes": "1048576" - }, - "validator": { - "pub_key_types": [ - "ed25519" - ] - }, - "version": {} - } + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} }, "app_hash": "", "app_state": { From 8d49df179eee09f542e4a3a6503651a1a5b20f6c Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 26 Apr 2024 14:36:25 +0900 Subject: [PATCH 71/96] test: Fix sim test to not run on normal test --- app/sim_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/sim_test.go b/app/sim_test.go index 37c38f5f4..9050c565c 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -71,7 +71,7 @@ func TestFullAppSimulation(t *testing.T) { config.ChainID = types.TestnetChainID + "-1" sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, true) + db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application simulation") } From 3ec4b10c0f126af3343134be758340af973d7069 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Mon, 29 Apr 2024 12:45:55 +0900 Subject: [PATCH 72/96] feat: Apply ethermint changes(remove cutsom GetSignerFunc from MsgUpdateParams) --- app/app.go | 5 +---- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/app.go b/app/app.go index b3a35e7ef..020047472 100644 --- a/app/app.go +++ b/app/app.go @@ -126,7 +126,6 @@ import ( erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" evmv1 "github.com/evmos/ethermint/api/ethermint/evm/v1" - feemarketv1 "github.com/evmos/ethermint/api/ethermint/feemarket/v1" ethante "github.com/evmos/ethermint/app/ante" enccodec "github.com/evmos/ethermint/encoding/codec" "github.com/evmos/ethermint/ethereum/eip712" @@ -322,10 +321,8 @@ func NewCanto( }, } - // evm/MsgEthereumTx, evm/MsgUpdateParams, feemarket/MsgUpdateParams, erc20/MsgConvertERC20 + // evm/MsgEthereumTx, erc20/MsgConvertERC20 signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgEthereumTx{}), evmtypes.GetSignersFromMsgEthereumTxV2) - signingOptions.DefineCustomGetSigners(protov2.MessageName(&evmv1.MsgUpdateParams{}), evmtypes.GetSignersFromMsgUpdateParamsV2) - signingOptions.DefineCustomGetSigners(protov2.MessageName(&feemarketv1.MsgUpdateParams{}), feemarkettypes.GetSignersFromMsgUpdateParamsV2) signingOptions.DefineCustomGetSigners(protov2.MessageName(&erc20v1.MsgConvertERC20{}), erc20types.GetSignersFromMsgConvertERC20V2) interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{ diff --git a/go.mod b/go.mod index 4c7efa53a..4d0ff82bf 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 564035c6e..24cb3f179 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a h1:nhd08s7VShhOKzHfFWLwqB+e0QfebgIktk99vrEmqaM= -github.com/b-harvest/ethermint v0.0.0-20240326054419-4ae15feb0e8a/go.mod h1:RCk8XMeT47RKxOAeaz35Gct1bYt9nNwrF+Uw913WM84= +github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07 h1:malOQOeoVJivkP8rp6mB7CpErAgLv4i/HbgJtbe1z4Y= +github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07/go.mod h1:RCk8XMeT47RKxOAeaz35Gct1bYt9nNwrF+Uw913WM84= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From 722fb254ac4fa4c40426f6798d6f8ab5b0a038f9 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Tue, 30 Apr 2024 18:42:04 +0900 Subject: [PATCH 73/96] chore: Revert Network/****/genesis.json --- Networks/Mainnet/genesis.json | 2 +- Networks/Testnet/genesis-files/genesis.json | 2 +- Networks/Testnet/genesis-files/plex-genesis/genesis.json | 2 +- Networks/Testnet/genesis.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Networks/Mainnet/genesis.json b/Networks/Mainnet/genesis.json index e9e3acfbe..7dc452db1 100644 --- a/Networks/Mainnet/genesis.json +++ b/Networks/Mainnet/genesis.json @@ -2,7 +2,7 @@ "genesis_time": "2022-07-26T17:27:56.407386144Z", "chain_id": "canto_7700-1", "initial_height": "1", - "consensus": { + "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1", diff --git a/Networks/Testnet/genesis-files/genesis.json b/Networks/Testnet/genesis-files/genesis.json index f562ca03b..2284b0abc 100644 --- a/Networks/Testnet/genesis-files/genesis.json +++ b/Networks/Testnet/genesis-files/genesis.json @@ -2,7 +2,7 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus": { + "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1", diff --git a/Networks/Testnet/genesis-files/plex-genesis/genesis.json b/Networks/Testnet/genesis-files/plex-genesis/genesis.json index 68fa935c4..d25e1492e 100644 --- a/Networks/Testnet/genesis-files/plex-genesis/genesis.json +++ b/Networks/Testnet/genesis-files/plex-genesis/genesis.json @@ -2,7 +2,7 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus": { + "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1", diff --git a/Networks/Testnet/genesis.json b/Networks/Testnet/genesis.json index 6c7ac84f2..9c8f45c1d 100644 --- a/Networks/Testnet/genesis.json +++ b/Networks/Testnet/genesis.json @@ -2,7 +2,7 @@ "genesis_time": "2022-07-26T04:07:10.395216142Z", "chain_id": "canto_740-1", "initial_height": "1", - "consensus": { + "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1", From 9cafddf503f54a159abcf057a7aa71434a7f5dca Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 15:43:48 +0900 Subject: [PATCH 74/96] test: Add MsgUpdateParams test --- x/csr/keeper/keeper_test.go | 7 ++- x/csr/keeper/msg_server.go | 3 - x/csr/keeper/msg_server_test.go | 62 +++++++++++++++++++ x/csr/module.go | 1 + x/csr/types/codec.go | 11 +++- x/epochs/keeper/keeper_test.go | 7 ++- x/erc20/keeper/keeper_test.go | 7 ++- x/inflation/keeper/keeper_test.go | 9 ++- x/inflation/keeper/msg_server.go | 3 - x/inflation/keeper/msg_server_test.go | 84 ++++++++++++++++++++++++++ x/inflation/module.go | 5 +- x/inflation/types/codec.go | 28 ++++++++- x/onboarding/keeper/keeper_test.go | 42 ++++++++++--- x/onboarding/keeper/msg_server.go | 3 - x/onboarding/keeper/msg_server_test.go | 70 +++++++++++++++++++++ x/onboarding/module.go | 6 +- x/onboarding/types/codec.go | 35 +++++++++++ 17 files changed, 348 insertions(+), 35 deletions(-) create mode 100644 x/csr/keeper/msg_server_test.go create mode 100644 x/inflation/keeper/msg_server_test.go create mode 100644 x/onboarding/keeper/msg_server_test.go create mode 100644 x/onboarding/types/codec.go diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index fe4535aa7..40ec23dd2 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -15,6 +15,7 @@ import ( "github.com/Canto-Network/Canto/v7/x/csr/types" "github.com/cosmos/cosmos-sdk/baseapp" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cosmosed25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -84,9 +85,9 @@ func (suite *KeeperTestSuite) SetupApp() { suite.denom = "acanto" // consensus key - privCons, err := ethsecp256k1.GenerateKey() + pubKey := cosmosed25519.GenPrivKey().PubKey() require.NoError(t, err) - suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) + suite.consAddress = sdk.ConsAddress(pubKey.Address()) suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ Height: 1, ChainID: "canto_9001-1", @@ -139,7 +140,7 @@ func (suite *KeeperTestSuite) SetupApp() { // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) diff --git a/x/csr/keeper/msg_server.go b/x/csr/keeper/msg_server.go index 6ed6eac74..bdf6217e7 100644 --- a/x/csr/keeper/msg_server.go +++ b/x/csr/keeper/msg_server.go @@ -33,9 +33,6 @@ func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParam ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - // if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - // } return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/csr/keeper/msg_server_test.go b/x/csr/keeper/msg_server_test.go new file mode 100644 index 000000000..14c855145 --- /dev/null +++ b/x/csr/keeper/msg_server_test.go @@ -0,0 +1,62 @@ +package keeper_test + +import ( + "math" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/Canto-Network/Canto/v7/testutil" + csrtypes "github.com/Canto-Network/Canto/v7/x/csr/types" +) + +func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { + suite.SetupTest() + + // change mindeposit for denom + govParams, err := suite.app.GovKeeper.Params.Get(suite.ctx) + suite.Require().NoError(err) + govParams.MinDeposit = []sdk.Coin{sdk.NewCoin(suite.denom, sdkmath.NewInt(1))} + err = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) + suite.Require().NoError(err) + + // create account and deligate to validator + _, proposer := GenerateKey() + initAmount := sdkmath.NewInt(int64(math.Pow10(18)) * 2) + initBalance := sdk.NewCoins(sdk.NewCoin(suite.denom, initAmount)) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, proposer, initBalance) + shares, err := suite.app.StakingKeeper.Delegate(suite.ctx, proposer, sdk.DefaultPowerReduction, stakingtypes.Unbonded, suite.validator, true) + suite.Require().NoError(err) + suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) + + // submit proposal for change params + changeParams := csrtypes.Params{ + EnableCsr: false, + CsrShares: sdkmath.LegacyNewDecWithPrec(20, 2), + } + msg := &csrtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: changeParams, + } + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() + + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() + + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.CSRKeeper.GetParams(suite.ctx), changeParams) +} diff --git a/x/csr/module.go b/x/csr/module.go index 4a308aaf8..97cbc7f28 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -127,6 +127,7 @@ func (am AppModule) Name() string { // RegisterServices registers a GRPC query service to respond to the // module-specific GRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) } diff --git a/x/csr/types/codec.go b/x/csr/types/codec.go index 5356c4e70..69de2e136 100644 --- a/x/csr/types/codec.go +++ b/x/csr/types/codec.go @@ -3,12 +3,13 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" ) var ( amino = codec.NewLegacyAmino() ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) - AminoCdc = codec.NewAminoCodec(amino) ) // method required for x/csr msg GetSignBytes methods @@ -19,8 +20,16 @@ func init() { // register interfaces for the AminoCodec func RegisterInterfaces(registry codectypes.InterfaceRegistry) { + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgUpdateParams{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } // register csr msg types for Amino Codec in adherence to EIP-712 signing conventions func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgUpdateParams{}, "canto/x/csr/MsgUpdateParams", nil) + cdc.RegisterConcrete(&Params{}, "canto/x/csr/Params", nil) } diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index 64686d83b..812091805 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -14,6 +14,7 @@ import ( tmversion "github.com/cometbft/cometbft/proto/tendermint/version" "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -77,9 +78,9 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.denom = "acanto" // consensus key - privCons, err := ethsecp256k1.GenerateKey() + pubKey := ed25519.GenPrivKey().PubKey() require.NoError(t, err) - suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) + suite.consAddress = sdk.ConsAddress(pubKey.Address()) // setup context suite.ctx = suite.app.BaseApp.NewContextLegacy(checkTx, tmproto.Header{ @@ -127,7 +128,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 1f5c8ea56..2e4cbf93e 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -20,6 +20,7 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -88,9 +89,9 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.signer = tests.NewSigner(priv) // consensus key - priv, err = ethsecp256k1.GenerateKey() + pubKey := ed25519.GenPrivKey().PubKey() require.NoError(t, err) - suite.consAddress = sdk.ConsAddress(priv.PubKey().Address()) + suite.consAddress = sdk.ConsAddress(pubKey.Address()) // setup feemarketGenesis params feemarketGenesis := feemarkettypes.DefaultGenesisState() @@ -173,7 +174,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.app.AccountKeeper.SetAccount(suite.ctx, acc) valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr.String(), priv.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) require.NoError(t, err) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index 04a31c599..3e26dcbdf 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -14,12 +14,12 @@ import ( tmversion "github.com/cometbft/cometbft/proto/tendermint/version" "github.com/cometbft/cometbft/version" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "github.com/ethereum/go-ethereum/common" - "github.com/evmos/ethermint/crypto/ethsecp256k1" evm "github.com/evmos/ethermint/x/evm/types" "github.com/Canto-Network/Canto/v7/app" @@ -68,9 +68,8 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { // init app suite.app = app.Setup(checkTx, nil) - privCons, err := ethsecp256k1.GenerateKey() - require.NoError(t, err) - suite.consAddress = sdk.ConsAddress(privCons.PubKey().Address()) + pubKey := ed25519.GenPrivKey().PubKey() + suite.consAddress = sdk.ConsAddress(pubKey.Address()) // setup context suite.ctx = suite.app.BaseApp.NewContextLegacy(checkTx, tmproto.Header{ Height: 1, @@ -117,7 +116,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) - validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) require.NoError(t, err) validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) diff --git a/x/inflation/keeper/msg_server.go b/x/inflation/keeper/msg_server.go index b35dea17a..c6fd5bf84 100644 --- a/x/inflation/keeper/msg_server.go +++ b/x/inflation/keeper/msg_server.go @@ -33,9 +33,6 @@ func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParam ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - // if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - // } return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/inflation/keeper/msg_server_test.go b/x/inflation/keeper/msg_server_test.go new file mode 100644 index 000000000..cdb126c0e --- /dev/null +++ b/x/inflation/keeper/msg_server_test.go @@ -0,0 +1,84 @@ +package keeper_test + +import ( + "math" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/evmos/ethermint/crypto/ethsecp256k1" + + "github.com/Canto-Network/Canto/v7/testutil" + inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" +) + +func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { + suite.SetupTest() + + // set denom + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + suite.Require().NoError(err) + denom := stakingParams.BondDenom + + // change mindeposit for denom + govParams, err := suite.app.GovKeeper.Params.Get(suite.ctx) + suite.Require().NoError(err) + govParams.MinDeposit = []sdk.Coin{sdk.NewCoin(denom, sdkmath.NewInt(1))} + err = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) + suite.Require().NoError(err) + + // create account + privKey, err := ethsecp256k1.GenerateKey() + suite.Require().NoError(err) + proposer := sdk.AccAddress(privKey.PubKey().Address().Bytes()) + + // deligate to validator + initAmount := sdkmath.NewInt(int64(math.Pow10(18)) * 2) + initBalance := sdk.NewCoins(sdk.NewCoin(denom, initAmount)) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, proposer, initBalance) + shares, err := suite.app.StakingKeeper.Delegate(suite.ctx, proposer, sdk.DefaultPowerReduction, stakingtypes.Unbonded, suite.validator, true) + suite.Require().NoError(err) + suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) + + // submit proposal for change params + changeParams := inflationtypes.Params{ + MintDenom: "btc", + ExponentialCalculation: inflationtypes.ExponentialCalculation{ + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2), + MaxVariance: sdkmath.LegacyZeroDec(), + }, + InflationDistribution: inflationtypes.InflationDistribution{ + StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000, 6), + CommunityPool: sdkmath.LegacyZeroDec(), + }, + EnableInflation: false, + } + msg := &inflationtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: changeParams, + } + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() + + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() + + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.InflationKeeper.GetParams(suite.ctx), changeParams) +} diff --git a/x/inflation/module.go b/x/inflation/module.go index a1c718c49..8a1865c8f 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -41,7 +41,9 @@ func (AppModuleBasic) Name() string { } // RegisterLegacyAminoCodec registers the inflation module's types on the given LegacyAmino codec. -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} // ConsensusVersion returns the consensus state-breaking version for the module. func (AppModuleBasic) ConsensusVersion() uint64 { @@ -135,6 +137,7 @@ func (am AppModule) NewHandler() baseapp.MsgServiceHandler { // RegisterServices registers a gRPC query service to respond to the // module-specific gRPC queries. func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) migrator := keeper.NewMigrator(am.keeper) diff --git a/x/inflation/types/codec.go b/x/inflation/types/codec.go index 091e3000e..134b15412 100644 --- a/x/inflation/types/codec.go +++ b/x/inflation/types/codec.go @@ -3,6 +3,8 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" ) // ModuleCdc references the global incentives module codec. Note, the codec @@ -10,7 +12,29 @@ import ( // // The actual codec used for serialization should be provided to // modules/incentives and defined at the application level. -var ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) +) + +// method required for x/inflation msg GetSignBytes methods +func init() { + RegisterLegacyAminoCodec(amino) + amino.Seal() +} // RegisterInterfaces register implementations -func RegisterInterfaces(registry codectypes.InterfaceRegistry) {} +func RegisterInterfaces(registry codectypes.InterfaceRegistry) { + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgUpdateParams{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +// register inflation msg types for Amino Codec in adherence to EIP-712 signing conventions +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgUpdateParams{}, "canto/x/inflation/MsgUpdateParams", nil) + cdc.RegisterConcrete(&Params{}, "canto/x/inflation/Params", nil) +} diff --git a/x/onboarding/keeper/keeper_test.go b/x/onboarding/keeper/keeper_test.go index 342a29eeb..eed487238 100644 --- a/x/onboarding/keeper/keeper_test.go +++ b/x/onboarding/keeper/keeper_test.go @@ -6,6 +6,7 @@ import ( "github.com/stretchr/testify/suite" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/tmhash" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmversion "github.com/cometbft/cometbft/proto/tendermint/version" @@ -15,10 +16,10 @@ import ( feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/x/onboarding/types" @@ -32,13 +33,13 @@ type KeeperTestSuite struct { app *app.Canto queryClient types.QueryClient queryClientEvm evm.QueryClient + validator stakingtypes.Validator } func (suite *KeeperTestSuite) SetupTest() { // consensus key - privCons, err := ethsecp256k1.GenerateKey() - suite.NoError(err) - consAddress := sdk.ConsAddress(privCons.PubKey().Address()) + pubKey := ed25519.GenPrivKey().PubKey() + consAddress := sdk.ConsAddress(pubKey.Address()) suite.app = app.Setup(false, feemarkettypes.DefaultGenesisState()) suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ @@ -71,16 +72,21 @@ func (suite *KeeperTestSuite) SetupTest() { suite.queryClient = types.NewQueryClient(queryHelper) // Set Validator - valAddr := sdk.ValAddress(privCons.PubKey().Address().Bytes()) - validator, err := stakingtypes.NewValidator(valAddr.String(), privCons.PubKey(), stakingtypes.Description{}) + valAddr := sdk.ValAddress(pubKey.Address().Bytes()) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) suite.NoError(err) + validator = stakingkeeper.TestingUpdateValidator(suite.app.StakingKeeper, suite.ctx, validator, true) valbz, err := suite.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) - s.NoError(err) + suite.NoError(err) suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) suite.NoError(err) + validators, err := suite.app.StakingKeeper.GetValidators(suite.ctx, 1) + suite.NoError(err) + suite.validator = validators[0] + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) suite.NoError(err) stakingParams.BondDenom = "acanto" @@ -90,3 +96,25 @@ func (suite *KeeperTestSuite) SetupTest() { func TestKeeperTestSuite(t *testing.T) { suite.Run(t, new(KeeperTestSuite)) } + +func (suite *KeeperTestSuite) Commit() { + suite.CommitAfter(time.Nanosecond) +} + +func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { + header := suite.ctx.BlockHeader() + header.Time = header.Time.Add(t) + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }) + suite.app.Commit() + + // update ctx + header.Height += 1 + suite.ctx = suite.app.BaseApp.NewUncachedContext(false, header) + + queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) + evm.RegisterQueryServer(queryHelper, suite.app.EvmKeeper) + suite.queryClientEvm = evm.NewQueryClient(queryHelper) +} diff --git a/x/onboarding/keeper/msg_server.go b/x/onboarding/keeper/msg_server.go index d5eec660e..cf4f3960d 100644 --- a/x/onboarding/keeper/msg_server.go +++ b/x/onboarding/keeper/msg_server.go @@ -33,9 +33,6 @@ func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParam ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - // if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - // } return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/onboarding/keeper/msg_server_test.go b/x/onboarding/keeper/msg_server_test.go new file mode 100644 index 000000000..f6abffc3a --- /dev/null +++ b/x/onboarding/keeper/msg_server_test.go @@ -0,0 +1,70 @@ +package keeper_test + +import ( + "math" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/evmos/ethermint/crypto/ethsecp256k1" + + "github.com/Canto-Network/Canto/v7/testutil" + onboardingtypes "github.com/Canto-Network/Canto/v7/x/onboarding/types" +) + +func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { + suite.SetupTest() + + // set denom + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + suite.Require().NoError(err) + denom := stakingParams.BondDenom + + // change mindeposit for denom + govParams, err := suite.app.GovKeeper.Params.Get(suite.ctx) + suite.Require().NoError(err) + govParams.MinDeposit = []sdk.Coin{sdk.NewCoin(denom, sdkmath.NewInt(1))} + err = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) + suite.Require().NoError(err) + + // create account + privKey, err := ethsecp256k1.GenerateKey() + suite.Require().NoError(err) + proposer := sdk.AccAddress(privKey.PubKey().Address().Bytes()) + + // deligate to validator + initAmount := sdkmath.NewInt(int64(math.Pow10(18)) * 2) + initBalance := sdk.NewCoins(sdk.NewCoin(denom, initAmount)) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, proposer, initBalance) + shares, err := suite.app.StakingKeeper.Delegate(suite.ctx, proposer, sdk.DefaultPowerReduction, stakingtypes.Unbonded, suite.validator, true) + suite.Require().NoError(err) + suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) + + // submit proposal for change params + changeParams := onboardingtypes.NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"}) + msg := &onboardingtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: changeParams, + } + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() + + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() + + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.OnboardingKeeper.GetParams(suite.ctx), changeParams) +} diff --git a/x/onboarding/module.go b/x/onboarding/module.go index 85deea094..0c7a29110 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -40,7 +40,9 @@ func (AppModuleBasic) Name() string { } // RegisterLegacyAminoCodec performs a no-op as the onboarding doesn't support Amino encoding -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} // ConsensusVersion returns the consensus state-breaking version for the module. func (AppModuleBasic) ConsensusVersion() uint64 { @@ -50,6 +52,7 @@ func (AppModuleBasic) ConsensusVersion() uint64 { // RegisterInterfaces registers interfaces and implementations of the onboarding // module. func (AppModuleBasic) RegisterInterfaces(interfaceRegistry codectypes.InterfaceRegistry) { + types.RegisterInterfaces(interfaceRegistry) } // DefaultGenesis returns default genesis state as raw bytes for the onboarding @@ -118,6 +121,7 @@ func (AppModule) NewHandler() baseapp.MsgServiceHandler { } func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(cfg.QueryServer(), am.keeper) } diff --git a/x/onboarding/types/codec.go b/x/onboarding/types/codec.go new file mode 100644 index 000000000..9f156bd84 --- /dev/null +++ b/x/onboarding/types/codec.go @@ -0,0 +1,35 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" +) + +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) +) + +// method required for x/csr msg GetSignBytes methods +func init() { + RegisterLegacyAminoCodec(amino) + amino.Seal() +} + +// register interfaces for the AminoCodec +func RegisterInterfaces(registry codectypes.InterfaceRegistry) { + registry.RegisterImplementations( + (*sdk.Msg)(nil), + &MsgUpdateParams{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +// register csr msg types for Amino Codec in adherence to EIP-712 signing conventions +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgUpdateParams{}, "canto/x/onboarding/MsgUpdateParams", nil) + cdc.RegisterConcrete(&Params{}, "canto/x/onboarding/Params", nil) +} From 44cef591d35dc710391949986c2fc2e385936f7e Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 15:53:27 +0900 Subject: [PATCH 75/96] chore: bump cosmos-sdk v0.50.6 --- go.mod | 56 ++++++++++++++-------------- go.sum | 116 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/go.mod b/go.mod index 4d0ff82bf..90faad56e 100644 --- a/go.mod +++ b/go.mod @@ -5,25 +5,25 @@ go 1.21 toolchain go1.21.4 require ( - cosmossdk.io/api v0.7.3 + cosmossdk.io/api v0.7.4 cosmossdk.io/client/v2 v2.0.0-beta.1 cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.12.0 cosmossdk.io/log v1.3.1 cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced - cosmossdk.io/store v1.0.2 + cosmossdk.io/store v1.1.0 cosmossdk.io/tools/confix v0.1.0 cosmossdk.io/x/circuit v0.1.0 cosmossdk.io/x/evidence v0.1.0 cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.1 + cosmossdk.io/x/tx v0.13.2 cosmossdk.io/x/upgrade v0.1.0 - github.com/cometbft/cometbft v0.38.5 + github.com/cometbft/cometbft v0.38.6 github.com/cosmos/cosmos-db v1.0.2 - github.com/cosmos/cosmos-proto v1.0.0-beta.4 - github.com/cosmos/cosmos-sdk v0.50.5 + github.com/cosmos/cosmos-proto v1.0.0-beta.5 + github.com/cosmos/cosmos-sdk v0.50.6 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/gogoproto v1.4.11 + github.com/cosmos/gogoproto v1.4.12 github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.0.0 github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6 @@ -33,7 +33,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-metrics v0.5.2 + github.com/hashicorp/go-metrics v0.5.3 github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.6 github.com/pkg/errors v0.9.1 @@ -42,8 +42,8 @@ require ( github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.9.0 go.opencensus.io v0.24.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 - google.golang.org/grpc v1.62.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de + google.golang.org/grpc v1.63.2 google.golang.org/protobuf v1.33.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -107,7 +107,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/linxGnu/grocksdb v1.8.12 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -133,13 +133,13 @@ require ( go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.18.0 // indirect + golang.org/x/tools v0.20.0 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect gotest.tools/v3 v3.5.1 // indirect pgregory.net/rapid v1.1.0 // indirect sigs.k8s.io/yaml v1.4.0 // indirect @@ -159,9 +159,9 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/iavl v1.0.1 // indirect + github.com/cosmos/iavl v1.1.2 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set v1.8.0 // indirect @@ -215,12 +215,12 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.18.0 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.47.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.52.2 // indirect + github.com/prometheus/procfs v0.13.0 // indirect github.com/prometheus/tsdb v0.10.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rjeczalik/notify v0.9.2 // indirect @@ -238,12 +238,12 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/zondax/hid v0.9.2 // indirect go.etcd.io/bbolt v1.3.8 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 - golang.org/x/net v0.21.0 // indirect - golang.org/x/sync v0.6.0 - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 + golang.org/x/net v0.24.0 // indirect + golang.org/x/sync v0.7.0 + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect diff --git a/go.sum b/go.sum index 24cb3f179..3c017b9a4 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.3 h1:V815i8YOwOAQa1rLCsSMjVG5Gnzs02JLq+l7ks8s1jk= -cosmossdk.io/api v0.7.3/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.4 h1:sPo8wKwCty1lht8kgL3J7YL1voJywP3YWuA5JKkBz30= +cosmossdk.io/api v0.7.4/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= cosmossdk.io/client/v2 v2.0.0-beta.1 h1:XkHh1lhrLYIT9zKl7cIOXUXg2hdhtjTPBUfqERNA1/Q= cosmossdk.io/client/v2 v2.0.0-beta.1/go.mod h1:JEUSu9moNZQ4kU3ir1DKD5eU4bllmAexrGWjmb9k8qU= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= @@ -202,8 +202,8 @@ cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced h1:l5rW4cKGOGyo2ZinzmuhleebC5OpMEv3qsabKyRXUV0= cosmossdk.io/simapp v0.0.0-20231103111158-e83a20081ced/go.mod h1:EdpAqccZXp8XnV2FFMCdEt+Xq+3pbzIb2KzGAyi6GGc= -cosmossdk.io/store v1.0.2 h1:lSg5BTvJBHUDwswNNyeh4K/CbqiHER73VU4nDNb8uk0= -cosmossdk.io/store v1.0.2/go.mod h1:EFtENTqVTuWwitGW1VwaBct+yDagk7oG/axBMPH+FXs= +cosmossdk.io/store v1.1.0 h1:LnKwgYMc9BInn9PhpTFEQVbL9UK475G2H911CGGnWHk= +cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= cosmossdk.io/tools/confix v0.1.0 h1:2OOZTtQsDT5e7P3FM5xqM0bPfluAxZlAwxqaDmYBE+E= cosmossdk.io/tools/confix v0.1.0/go.mod h1:TdXKVYs4gEayav5wM+JHT+kTU2J7fozFNqoVaN+8CdY= cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= @@ -214,8 +214,8 @@ cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c h1:EFBlwazEIqkvKV5L1JfQZ6lhUJF9cMguAqQk1xSmbfM= cosmossdk.io/x/nft v0.0.0-20231023160833-026631cd833c/go.mod h1:PELWSey8Y7pq8iSgqEav82APBbgMb/SDbbjyuP8tvWc= -cosmossdk.io/x/tx v0.13.1 h1:Mg+EMp67Pz+NukbJqYxuo8uRp7N/a9uR+oVS9pONtj8= -cosmossdk.io/x/tx v0.13.1/go.mod h1:CBCU6fsRVz23QGFIQBb1DNX2DztJCf3jWyEkHY2nJQ0= +cosmossdk.io/x/tx v0.13.2 h1:Kh90UH30bhnnUdJH+CmWLyaH8IKdY6BBGY3EkdOk82o= +cosmossdk.io/x/tx v0.13.2/go.mod h1:yhPokDCfXVIuAtyp49IFlWB5YAXUgD7Zek+ZHwsHzvU= cosmossdk.io/x/upgrade v0.1.0 h1:z1ZZG4UL9ICTNbJDYZ6jOnF9GdEK9wyoEFi4BUScHXE= cosmossdk.io/x/upgrade v0.1.0/go.mod h1:/6jjNGbiPCNtmA1N+rBtP601sr0g4ZXuj3yC6ClPCGY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -325,8 +325,8 @@ github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= @@ -370,8 +370,8 @@ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1: github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.38.5 h1:4lOcK5VTPrfbLOhNHmPYe6c7eDXHtBdMCQuKbAfFJdU= -github.com/cometbft/cometbft v0.38.5/go.mod h1:0tqKin+KQs8zDwzYD8rPHzSBIDNPuB4NrwwGDNb/hUg= +github.com/cometbft/cometbft v0.38.6 h1:QSgpCzrGWJ2KUq1qpw+FCfASRpE27T6LQbfEHscdyOk= +github.com/cometbft/cometbft v0.38.6/go.mod h1:8rSPxzUJYquCN8uuBgbUHOMg2KAwvr7CyUw+6ukO4nw= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -386,19 +386,19 @@ github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= -github.com/cosmos/cosmos-proto v1.0.0-beta.4 h1:aEL7tU/rLOmxZQ9z4i7mzxcLbSCY48OdY7lIWTLG7oU= -github.com/cosmos/cosmos-proto v1.0.0-beta.4/go.mod h1:oeB+FyVzG3XrQJbJng0EnV8Vljfk9XvTIpGILNU/9Co= -github.com/cosmos/cosmos-sdk v0.50.5 h1:MOEi+DKYgW67YaPgB+Pf+nHbD3V9S/ayitRKJYLfGIA= -github.com/cosmos/cosmos-sdk v0.50.5/go.mod h1:oV/k6GJgXV9QPoM2fsYDPPsyPBgQbdotv532O6Mz1OQ= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.6 h1:efR3MsvMHX5sxS3be+hOobGk87IzlZbSpsI2x/Vw3hk= +github.com/cosmos/cosmos-sdk v0.50.6/go.mod h1:lVkRY6cdMJ0fG3gp8y4hFrsKZqF4z7y0M2UXFb9Yt40= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.11 h1:LZcMHrx4FjUgrqQSWeaGC1v/TeuVFqSLa43CC6aWR2g= -github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= -github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= -github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= +github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= +github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= +github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= +github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= github.com/cosmos/ibc-go/v8 v8.0.0 h1:QKipnr/NGwc+9L7NZipURvmSIu+nw9jOIWTJuDBqOhg= @@ -727,8 +727,8 @@ github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.2 h1:ErEYO2f//CjKsUDw4SmLzelsK6L3ZmOAR/4P9iS7ruY= -github.com/hashicorp/go-metrics v0.5.2/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= @@ -839,8 +839,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.12 h1:1/pCztQUOa3BX/1gR3jSZDoaKFpeHFvQ1XrqZpSvZVo= -github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -955,8 +955,8 @@ github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6 github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= -github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -977,32 +977,32 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k= -github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= +github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/prometheus/tsdb v0.10.0 h1:If5rVCMTp6W2SiRAQFlbpJNgVlgMEd+U2GZckwK38ic= github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSgwXEyGCt4= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= @@ -1202,8 +1202,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1215,8 +1215,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1243,8 +1243,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1305,8 +1305,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1332,8 +1332,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1348,8 +1348,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1449,13 +1449,13 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1537,8 +1537,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1715,12 +1715,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= -google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= -google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014 h1:x9PwdEgd11LgK+orcck69WVRo7DezSO4VUMPI4xpc8A= -google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c h1:NUsgEN92SQQqzfA+YtqYNqYmB3DMMYLlIwUZAQFVFbo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1762,8 +1762,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 62ea35b0670c0350b422887c1f5fca18d91308f7 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 18:28:27 +0900 Subject: [PATCH 76/96] feat: remove ibcfee module --- app/app.go | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/app/app.go b/app/app.go index 020047472..013cb9277 100644 --- a/app/app.go +++ b/app/app.go @@ -111,9 +111,6 @@ import ( "github.com/cosmos/ibc-go/modules/capability" capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - ibcfee "github.com/cosmos/ibc-go/v8/modules/apps/29-fee" - ibcfeekeeper "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/keeper" - ibcfeetypes "github.com/cosmos/ibc-go/v8/modules/apps/29-fee/types" "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" @@ -194,7 +191,6 @@ var ( stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, govtypes.ModuleName: {authtypes.Burner}, ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - ibcfeetypes.ModuleName: nil, evmtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, // used for secure addition and subtraction of balance using module account inflationtypes.ModuleName: {authtypes.Minter}, erc20types.ModuleName: {authtypes.Minter, authtypes.Burner}, @@ -246,7 +242,6 @@ type Canto struct { FeeGrantKeeper feegrantkeeper.Keeper ConsensusParamsKeeper consensusparamkeeper.Keeper IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - IBCFeeKeeper ibcfeekeeper.Keeper TransferKeeper ibctransferkeeper.Keeper CapabilityKeeper *capabilitykeeper.Keeper @@ -375,7 +370,7 @@ func NewCanto( govtypes.StoreKey, paramstypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, authzkeeper.StoreKey, // ibc keys - ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, ibcfeetypes.StoreKey, + ibcexported.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, // ethermint keys evmtypes.StoreKey, feemarkettypes.StoreKey, // Canto keys @@ -586,14 +581,6 @@ func NewCanto( authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - // IBC Fee Module keeper - app.IBCFeeKeeper = ibcfeekeeper.NewKeeper( - appCodec, keys[ibcfeetypes.StoreKey], - app.IBCKeeper.ChannelKeeper, // may be replaced with IBC middleware - app.IBCKeeper.ChannelKeeper, - app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, - ) - // Create IBC Router ibcRouter := porttypes.NewRouter() @@ -601,7 +588,7 @@ func NewCanto( // since fee middleware will wrap the IBCKeeper for underlying application. app.TransferKeeper = ibctransferkeeper.NewKeeper( appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), - app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware + nil, // ISC4 Wrapper: fee IBC middleware app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), @@ -772,7 +759,6 @@ func NewCanto( // ibc modules ibc.NewAppModule(app.IBCKeeper), transfer.NewAppModule(app.TransferKeeper), - ibcfee.NewAppModule(app.IBCFeeKeeper), capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), ibctm.NewAppModule(), @@ -836,7 +822,6 @@ func NewCanto( govtypes.ModuleName, genutiltypes.ModuleName, ibctransfertypes.ModuleName, - ibcfeetypes.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, @@ -861,7 +846,6 @@ func NewCanto( stakingtypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, - ibcfeetypes.ModuleName, capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, @@ -907,7 +891,6 @@ func NewCanto( evidencetypes.ModuleName, ibctransfertypes.ModuleName, authz.ModuleName, - ibcfeetypes.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, upgradetypes.ModuleName, @@ -1459,7 +1442,7 @@ func (app *Canto) setupUpgradeHandlers() { case v8.UpgradeName: setupLegacyKeyTables(&app.ParamsKeeper) storeUpgrades = &storetypes.StoreUpgrades{ - Added: []string{crisistypes.StoreKey, consensusparamtypes.StoreKey, ibcfeetypes.StoreKey}, + Added: []string{crisistypes.StoreKey, consensusparamtypes.StoreKey}, } } From 79c99d11274d8563581d921c92121a37f5debc08 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 18:29:40 +0900 Subject: [PATCH 77/96] feat: add new vesting account msg to disabled authz msgs --- app/app.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/app.go b/app/app.go index 013cb9277..ead974387 100644 --- a/app/app.go +++ b/app/app.go @@ -1019,6 +1019,8 @@ func (app *Canto) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64, DisabledAuthzMsgs: []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), + sdk.MsgTypeURL(&vestingtypes.MsgCreatePermanentLockedAccount{}), + sdk.MsgTypeURL(&vestingtypes.MsgCreatePeriodicVestingAccount{}), }, Cdc: cdc, Simulation: simulation, From 23516e5a2f2eb9cb2368899515a28314d844343a Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 18:33:22 +0900 Subject: [PATCH 78/96] feat: enable gov module to receive external tokens --- app/app.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/app/app.go b/app/app.go index ead974387..0d622c856 100644 --- a/app/app.go +++ b/app/app.go @@ -1308,16 +1308,6 @@ func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router, swaggerEnabled bool) return nil } -// GetMaccPerms returns a copy of the module account permissions -func GetMaccPerms() map[string][]string { - dupMaccPerms := make(map[string][]string) - for k, v := range maccPerms { - dupMaccPerms[k] = v - } - - return dupMaccPerms -} - // BlockedAddrs returns all the app's module account addresses that are not // allowed to receive external tokens. func (app *Canto) BlockedAddrs() map[string]bool { @@ -1326,6 +1316,9 @@ func (app *Canto) BlockedAddrs() map[string]bool { blockedAddrs[authtypes.NewModuleAddress(acc).String()] = !allowedReceivingModAcc[acc] } + // allow the following addresses to receive funds + delete(blockedAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + return blockedAddrs } From 5afc5c9ec70db75fa923e9c2353d31f52e169d56 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Thu, 9 May 2024 20:13:54 +0900 Subject: [PATCH 79/96] test: fix TestHandleMsgTransfer --- x/onboarding/ibc_module_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/onboarding/ibc_module_test.go b/x/onboarding/ibc_module_test.go index 1889f61ed..6b525c355 100644 --- a/x/onboarding/ibc_module_test.go +++ b/x/onboarding/ibc_module_test.go @@ -173,7 +173,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().Equal(coinSentFromAToB.Amount.Sub(swapAmount), sdkmath.NewIntFromBigInt(balanceErc20)) // IBC transfer to blocked address - blockedAddr := "canto10d07y265gmmuvt4z0w9aw880jnsr700jg5j4zm" + blockedAddr := "canto15jtrcjvkrtajx76zfnuf76vfnse4m4m7rhv5sc" // onboarding module coinToSendToB = suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom) msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), blockedAddr, timeoutHeight, 0, "") From 354fb4c3803087ba983be918cb35f43efbf2c6fe Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 10 May 2024 02:01:00 +0900 Subject: [PATCH 80/96] test: Add prooposal test --- app/app.go | 1 + x/csr/keeper/keeper_test.go | 5 +- x/csr/keeper/msg_server_test.go | 68 ++++++---- x/erc20/client/proposal_handler.go | 13 -- x/erc20/keeper/keeper_test.go | 20 ++- x/erc20/keeper/msg_server_test.go | 170 +++++++++++++++++++++++- x/erc20/proposal_handler.go | 79 ----------- x/govshuttle/client/proposal_handler.go | 12 -- x/govshuttle/keeper/keeper.go | 4 +- x/govshuttle/keeper/msg_server.go | 3 - x/govshuttle/proposal_handler.go | 54 -------- x/inflation/keeper/keeper_test.go | 5 +- x/inflation/keeper/msg_server_test.go | 100 +++++++++----- x/onboarding/keeper/keeper_test.go | 5 +- x/onboarding/keeper/msg_server_test.go | 60 ++++++--- 15 files changed, 340 insertions(+), 259 deletions(-) delete mode 100644 x/erc20/client/proposal_handler.go delete mode 100644 x/erc20/proposal_handler.go delete mode 100644 x/govshuttle/client/proposal_handler.go delete mode 100644 x/govshuttle/proposal_handler.go diff --git a/app/app.go b/app/app.go index 0d622c856..ad4b7e5e5 100644 --- a/app/app.go +++ b/app/app.go @@ -651,6 +651,7 @@ func NewCanto( app.AccountKeeper, app.Erc20Keeper, govKeeper, + authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) app.CSRKeeper = csrkeeper.NewKeeper( diff --git a/x/csr/keeper/keeper_test.go b/x/csr/keeper/keeper_test.go index 40ec23dd2..c871edbcd 100644 --- a/x/csr/keeper/keeper_test.go +++ b/x/csr/keeper/keeper_test.go @@ -149,10 +149,7 @@ func (suite *KeeperTestSuite) SetupApp() { suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - - validators, err := s.app.StakingKeeper.GetValidators(s.ctx, 1) - require.NoError(t, err) - suite.validator = validators[0] + suite.validator = validator suite.ethSigner = ethtypes.LatestSignerForChainID(s.app.EvmKeeper.ChainID()) } diff --git a/x/csr/keeper/msg_server_test.go b/x/csr/keeper/msg_server_test.go index 14c855145..a7884d2b9 100644 --- a/x/csr/keeper/msg_server_test.go +++ b/x/csr/keeper/msg_server_test.go @@ -14,7 +14,7 @@ import ( csrtypes "github.com/Canto-Network/Canto/v7/x/csr/types" ) -func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { +func (suite *KeeperTestSuite) TestMsgExecutionByProposal() { suite.SetupTest() // change mindeposit for denom @@ -33,30 +33,52 @@ func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { suite.Require().NoError(err) suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) - // submit proposal for change params - changeParams := csrtypes.Params{ - EnableCsr: false, - CsrShares: sdkmath.LegacyNewDecWithPrec(20, 2), - } - msg := &csrtypes.MsgUpdateParams{ - Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), - Params: changeParams, + testCases := []struct { + name string + msg sdk.Msg + checkFunc func(uint64) + }{ + { + "ok - proposal MsgUpdateParams", + &csrtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: csrtypes.Params{ + EnableCsr: false, + CsrShares: sdkmath.LegacyNewDecWithPrec(20, 2), + }, + }, + func(proposalId uint64) { + changeParams := csrtypes.Params{ + EnableCsr: false, + CsrShares: sdkmath.LegacyNewDecWithPrec(20, 2), + } + + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.CSRKeeper.GetParams(suite.ctx), changeParams) + }, + }, } - proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) - suite.Require().NoError(err) - suite.Commit() - ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) - suite.Require().NoError(err) - suite.Require().True(ok) - suite.Commit() + for _, tc := range testCases { + suite.Run(tc.name, func() { + // submit proposal + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{tc.msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() - err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") - suite.Require().NoError(err) - suite.CommitAfter(*govParams.VotingPeriod) + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() - proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) - suite.Require().NoError(err) - suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) - suite.Require().Equal(suite.app.CSRKeeper.GetParams(suite.ctx), changeParams) + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + // check proposal result + tc.checkFunc(proposal.Id) + }) + } } diff --git a/x/erc20/client/proposal_handler.go b/x/erc20/client/proposal_handler.go deleted file mode 100644 index 8b4ffe387..000000000 --- a/x/erc20/client/proposal_handler.go +++ /dev/null @@ -1,13 +0,0 @@ -package client - -//import ( -// govclient "github.com/cosmos/cosmos-sdk/x/gov/client" -// -// "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" -//) -// -//var ( -// RegisterCoinProposalHandler = govclient.NewProposalHandler(cli.NewRegisterCoinProposalCmd) -// RegisterERC20ProposalHandler = govclient.NewProposalHandler(cli.NewRegisterERC20ProposalCmd) -// ToggleTokenConversionProposalHandler = govclient.NewProposalHandler(cli.NewToggleTokenConversionProposalCmd) -//) diff --git a/x/erc20/keeper/keeper_test.go b/x/erc20/keeper/keeper_test.go index 2e4cbf93e..0744aa549 100644 --- a/x/erc20/keeper/keeper_test.go +++ b/x/erc20/keeper/keeper_test.go @@ -65,6 +65,7 @@ type KeeperTestSuite struct { ethSigner ethtypes.Signer signer keyring.Signer mintFeeCollector bool + validator stakingtypes.Validator } var s *KeeperTestSuite @@ -90,7 +91,6 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { // consensus key pubKey := ed25519.GenPrivKey().PubKey() - require.NoError(t, err) suite.consAddress = sdk.ConsAddress(pubKey.Address()) // setup feemarketGenesis params @@ -173,12 +173,18 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.app.AccountKeeper.SetAccount(suite.ctx, acc) + // Set Validator valAddr := sdk.ValAddress(suite.address.Bytes()) validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) require.NoError(t, err) + + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.NoError(err) + suite.app.StakingKeeper.SetValidator(suite.ctx, validator) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - suite.app.StakingKeeper.SetValidator(suite.ctx, validator) + suite.validator = validator encodingConfig := encoding.MakeTestEncodingConfig() suite.clientCtx = client.Context{}.WithTxConfig(encodingConfig.TxConfig) @@ -342,7 +348,12 @@ func (suite *KeeperTestSuite) DeployContractDirectBalanceManipulation(name strin return crypto.CreateAddress(suite.address, nonce) } +// Commit commits and starts a new block with an updated context. func (suite *KeeperTestSuite) Commit() { + suite.CommitAfter(time.Second * 0) +} + +func (suite *KeeperTestSuite) CommitAfter(t time.Duration) { header := suite.ctx.BlockHeader() suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ Height: header.Height, @@ -351,8 +362,11 @@ func (suite *KeeperTestSuite) Commit() { suite.app.Commit() header.Height += 1 + header.Time = header.Time.Add(t) suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: header.Height, + Height: header.Height, + Time: header.Time, + ProposerAddress: suite.consAddress, }) // update ctx diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 5a33c76b1..98a0ce898 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -2,22 +2,28 @@ package keeper_test import ( "fmt" + "math" "math/big" sdkmath "cosmossdk.io/math" - "github.com/Canto-Network/Canto/v7/x/erc20/keeper" - "github.com/Canto-Network/Canto/v7/x/erc20/types" - inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/ethereum/go-ethereum/common" + "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/stretchr/testify/mock" + + "github.com/Canto-Network/Canto/v7/testutil" + "github.com/Canto-Network/Canto/v7/x/erc20/keeper" + "github.com/Canto-Network/Canto/v7/x/erc20/types" + inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" ) const ( @@ -1500,3 +1506,161 @@ func (suite *KeeperTestSuite) TestConvertERC20NativeIBCVoucher() { } suite.mintFeeCollector = false } + +func (suite *KeeperTestSuite) TestMsgExecutionByProposal() { + suite.SetupTest() + + // set denom + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + suite.Require().NoError(err) + denom := stakingParams.BondDenom + + // change mindeposit for denom + govParams, err := suite.app.GovKeeper.Params.Get(suite.ctx) + suite.Require().NoError(err) + govParams.MinDeposit = []sdk.Coin{sdk.NewCoin(denom, sdkmath.NewInt(1))} + err = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) + suite.Require().NoError(err) + + // create account + privKey, err := ethsecp256k1.GenerateKey() + suite.Require().NoError(err) + proposer := sdk.AccAddress(privKey.PubKey().Address().Bytes()) + + // deligate to validator + initAmount := sdkmath.NewInt(int64(math.Pow10(18)) * 2) + initBalance := sdk.NewCoins(sdk.NewCoin(denom, initAmount)) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, proposer, initBalance) + shares, err := suite.app.StakingKeeper.Delegate(suite.ctx, proposer, sdk.DefaultPowerReduction, stakingtypes.Unbonded, suite.validator, true) + suite.Require().NoError(err) + suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) + + var ( + erc20Address = suite.DeployContractDirectBalanceManipulation(erc20Name, erc20Symbol).String() + ) + + testCases := []struct { + name string + msg sdk.Msg + malleate func() + checkFunc func(uint64) + }{ + { + "ok - proposal MsgRegisterCoin", + &types.MsgRegisterCoin{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Title: "MsgRegisterCoin", + Description: "MsgRegisterCoin test", + Metadata: banktypes.Metadata{ + Description: "ATOM IBC voucher (channel 14)", + Base: ibcBase, + // NOTE: Denom units MUST be increasing + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: ibcBase, + Exponent: 0, + }, + }, + Name: "ATOM channel-14", + Symbol: "ibcATOM-14", + Display: ibcBase, + }, + }, + func() { + err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(ibcBase, 1)}) + suite.Require().NoError(err) + }, + func(proposalId uint64) { + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, ibcBase) + pair, ok := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().True(ok) + suite.Require().Equal(suite.app.Erc20Keeper.GetDenomMap(suite.ctx, pair.Denom), id) + suite.Require().Equal(suite.app.Erc20Keeper.GetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address)), id) + }, + }, + { + "ok - proposal MsgRegisterERC20", + &types.MsgRegisterERC20{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Title: "MsgRegisterERC20", + Description: "MsgRegisterERC20 test", + Erc20Address: erc20Address, + }, + func() {}, + func(proposalId uint64) { + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20Address) + pair, ok := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().True(ok) + suite.Require().Equal(suite.app.Erc20Keeper.GetDenomMap(suite.ctx, pair.Denom), id) + suite.Require().Equal(suite.app.Erc20Keeper.GetERC20Map(suite.ctx, common.HexToAddress(pair.Erc20Address)), id) + }, + }, + { + "ok - proposal MsgToggleTokenConversion", + &types.MsgToggleTokenConversion{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Title: "MsgToggleTokenConversion", + Description: "MsgToggleTokenConversion test", + Token: erc20Address, + }, + func() {}, + func(proposalId uint64) { + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + + id := suite.app.Erc20Keeper.GetTokenPairID(suite.ctx, erc20Address) + pair, ok := suite.app.Erc20Keeper.GetTokenPair(suite.ctx, id) + suite.Require().True(ok) + suite.Require().Equal(pair.Enabled, false) + }, + }, + { + "ok - proposal MsgUpdateParams", + &types.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: types.NewParams(false, false), + }, + func() {}, + func(proposalId uint64) { + changeParams := types.NewParams(false, false) + + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.Erc20Keeper.GetParams(suite.ctx), changeParams) + }, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + tc.malleate() + + // submit proposal + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{tc.msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() + + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() + + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + // check proposal result + tc.checkFunc(proposal.Id) + }) + } +} diff --git a/x/erc20/proposal_handler.go b/x/erc20/proposal_handler.go deleted file mode 100644 index 6d37ea215..000000000 --- a/x/erc20/proposal_handler.go +++ /dev/null @@ -1,79 +0,0 @@ -package erc20 - -// -//import ( -// errorsmod "cosmossdk.io/errors" -// sdk "github.com/cosmos/cosmos-sdk/types" -// sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -// govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -// "github.com/ethereum/go-ethereum/common" -// -// "github.com/Canto-Network/Canto/v7/x/erc20/keeper" -// "github.com/Canto-Network/Canto/v7/x/erc20/types" -//) -// -//// NewErc20ProposalHandler creates a governance handler to manage new proposal types. -//func NewErc20ProposalHandler(k *keeper.Keeper) govtypes.Handler { -// return func(ctx sdk.Context, content govtypes.Content) error { -// switch c := content.(type) { -// case *types.RegisterCoinProposal: -// return handleRegisterCoinProposal(ctx, k, c) -// case *types.RegisterERC20Proposal: -// return handleRegisterERC20Proposal(ctx, k, c) -// case *types.ToggleTokenConversionProposal: -// return handleToggleConversionProposal(ctx, k, c) -// -// default: -// return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) -// } -// } -//} -// -//func handleRegisterCoinProposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterCoinProposal) error { -// pair, err := k.RegisterCoin(ctx, p.Metadata) -// if err != nil { -// return err -// } -// ctx.EventManager().EmitEvent( -// sdk.NewEvent( -// types.EventTypeRegisterCoin, -// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), -// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), -// ), -// ) -// -// return nil -//} -// -//func handleRegisterERC20Proposal(ctx sdk.Context, k *keeper.Keeper, p *types.RegisterERC20Proposal) error { -// pair, err := k.RegisterERC20(ctx, common.HexToAddress(p.Erc20Address)) -// if err != nil { -// return err -// } -// ctx.EventManager().EmitEvent( -// sdk.NewEvent( -// types.EventTypeRegisterERC20, -// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), -// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), -// ), -// ) -// -// return nil -//} -// -//func handleToggleConversionProposal(ctx sdk.Context, k *keeper.Keeper, p *types.ToggleTokenConversionProposal) error { -// pair, err := k.ToggleConversion(ctx, p.Token) -// if err != nil { -// return err -// } -// -// ctx.EventManager().EmitEvent( -// sdk.NewEvent( -// types.EventTypeToggleTokenConversion, -// sdk.NewAttribute(types.AttributeKeyCosmosCoin, pair.Denom), -// sdk.NewAttribute(types.AttributeKeyERC20Token, pair.Erc20Address), -// ), -// ) -// -// return nil -//} diff --git a/x/govshuttle/client/proposal_handler.go b/x/govshuttle/client/proposal_handler.go deleted file mode 100644 index ce7435307..000000000 --- a/x/govshuttle/client/proposal_handler.go +++ /dev/null @@ -1,12 +0,0 @@ -package client - -import ( - govclient "github.com/cosmos/cosmos-sdk/x/gov/client" - - "github.com/Canto-Network/Canto/v7/x/govshuttle/client/cli" -) - -var ( - LendingMarketProposalHandler = govclient.NewProposalHandler(cli.NewLendingMarketProposalCmd) - TreasuryProposalHandler = govclient.NewProposalHandler(cli.NewTreasuryProposalCmd) -) diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index 1db65c8c2..0b888c392 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -33,10 +33,10 @@ func NewKeeper( storeService store.KVStoreService, cdc codec.BinaryCodec, ps paramtypes.Subspace, - ak types.AccountKeeper, ek types.ERC20Keeper, gk *govkeeper.Keeper, + authority string, ) Keeper { // set KeyTable if it has not already been set @@ -45,13 +45,13 @@ func NewKeeper( } return Keeper{ - cdc: cdc, storeService: storeService, paramstore: ps, accKeeper: ak, erc20Keeper: ek, govKeeper: gk, + authority: authority, } } diff --git a/x/govshuttle/keeper/msg_server.go b/x/govshuttle/keeper/msg_server.go index f8e207752..2f9381089 100644 --- a/x/govshuttle/keeper/msg_server.go +++ b/x/govshuttle/keeper/msg_server.go @@ -32,9 +32,6 @@ func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - //if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - //} return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/govshuttle/proposal_handler.go b/x/govshuttle/proposal_handler.go deleted file mode 100644 index 42f151818..000000000 --- a/x/govshuttle/proposal_handler.go +++ /dev/null @@ -1,54 +0,0 @@ -package govshuttle - -import ( - errorsmod "cosmossdk.io/errors" - "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" -) - -// Return governance handler to process Compound Proposal -func NewgovshuttleProposalHandler(k *keeper.Keeper) govtypes.Handler { - return func(ctx sdk.Context, content govtypes.Content) error { - switch c := content.(type) { - case *types.LendingMarketProposal: - return handleLendingMarketProposal(ctx, k, c) - - case *types.TreasuryProposal: - return handleTreasuryProposal(ctx, k, c) - default: - return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s proposal content type: %T", types.ModuleName, c) - } - } -} - -func handleLendingMarketProposal(ctx sdk.Context, k *keeper.Keeper, p *types.LendingMarketProposal) error { - err := p.ValidateBasic() - if err != nil { - return err - } - _, err = k.AppendLendingMarketProposal(ctx, p) //Defined analogous to (erc20)k.RegisterCoin - if err != nil { - return err - } - - return nil -} - -// governance proposal handler -func handleTreasuryProposal(ctx sdk.Context, k *keeper.Keeper, tp *types.TreasuryProposal) error { - err := tp.ValidateBasic() - if err != nil { - return err - } - lm := tp.FromTreasuryToLendingMarket() - _, err = k.AppendLendingMarketProposal(ctx, lm) - tp.GetMetadata().PropID = lm.GetMetadata().GetPropId() - if err != nil { - return err - } - - return nil -} diff --git a/x/inflation/keeper/keeper_test.go b/x/inflation/keeper/keeper_test.go index 3e26dcbdf..df35b2f44 100644 --- a/x/inflation/keeper/keeper_test.go +++ b/x/inflation/keeper/keeper_test.go @@ -125,10 +125,7 @@ func (suite *KeeperTestSuite) DoSetupTest(t require.TestingT) { suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) require.NoError(t, err) - - validators, err := s.app.StakingKeeper.GetValidators(s.ctx, 1) - require.NoError(t, err) - suite.validator = validators[0] + suite.validator = validator suite.ethSigner = ethtypes.LatestSignerForChainID(s.app.EvmKeeper.ChainID()) diff --git a/x/inflation/keeper/msg_server_test.go b/x/inflation/keeper/msg_server_test.go index cdb126c0e..d3b00d7be 100644 --- a/x/inflation/keeper/msg_server_test.go +++ b/x/inflation/keeper/msg_server_test.go @@ -9,14 +9,13 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/Canto-Network/Canto/v7/testutil" inflationtypes "github.com/Canto-Network/Canto/v7/x/inflation/types" ) -func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { +func (suite *KeeperTestSuite) TestMsgExecutionByProposal() { suite.SetupTest() // set denom @@ -44,41 +43,74 @@ func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { suite.Require().NoError(err) suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) - // submit proposal for change params - changeParams := inflationtypes.Params{ - MintDenom: "btc", - ExponentialCalculation: inflationtypes.ExponentialCalculation{ - A: sdkmath.LegacyNewDec(int64(16_304_348)), - R: sdkmath.LegacyNewDecWithPrec(35, 2), - C: sdkmath.LegacyZeroDec(), - BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2), - MaxVariance: sdkmath.LegacyZeroDec(), - }, - InflationDistribution: inflationtypes.InflationDistribution{ - StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000, 6), - CommunityPool: sdkmath.LegacyZeroDec(), + testCases := []struct { + name string + msg sdk.Msg + checkFunc func(uint64) + }{ + { + "ok - proposal MsgUpdateParams", + &inflationtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: inflationtypes.Params{ + MintDenom: "btc", + ExponentialCalculation: inflationtypes.ExponentialCalculation{ + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2), + MaxVariance: sdkmath.LegacyZeroDec(), + }, + InflationDistribution: inflationtypes.InflationDistribution{ + StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000, 6), + CommunityPool: sdkmath.LegacyZeroDec(), + }, + EnableInflation: false, + }, + }, + func(proposalId uint64) { + changeParams := inflationtypes.Params{ + MintDenom: "btc", + ExponentialCalculation: inflationtypes.ExponentialCalculation{ + A: sdkmath.LegacyNewDec(int64(16_304_348)), + R: sdkmath.LegacyNewDecWithPrec(35, 2), + C: sdkmath.LegacyZeroDec(), + BondingTarget: sdkmath.LegacyNewDecWithPrec(66, 2), + MaxVariance: sdkmath.LegacyZeroDec(), + }, + InflationDistribution: inflationtypes.InflationDistribution{ + StakingRewards: sdkmath.LegacyNewDecWithPrec(1000000, 6), + CommunityPool: sdkmath.LegacyZeroDec(), + }, + EnableInflation: false, + } + + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.InflationKeeper.GetParams(suite.ctx), changeParams) + }, }, - EnableInflation: false, } - msg := &inflationtypes.MsgUpdateParams{ - Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), - Params: changeParams, - } - proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) - suite.Require().NoError(err) - suite.Commit() - ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) - suite.Require().NoError(err) - suite.Require().True(ok) - suite.Commit() + for _, tc := range testCases { + suite.Run(tc.name, func() { + // submit proposal + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{tc.msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() - err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") - suite.Require().NoError(err) - suite.CommitAfter(*govParams.VotingPeriod) + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() - proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) - suite.Require().NoError(err) - suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) - suite.Require().Equal(suite.app.InflationKeeper.GetParams(suite.ctx), changeParams) + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + // check proposal result + tc.checkFunc(proposal.Id) + }) + } } diff --git a/x/onboarding/keeper/keeper_test.go b/x/onboarding/keeper/keeper_test.go index eed487238..ad063472e 100644 --- a/x/onboarding/keeper/keeper_test.go +++ b/x/onboarding/keeper/keeper_test.go @@ -82,10 +82,7 @@ func (suite *KeeperTestSuite) SetupTest() { suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) suite.NoError(err) - - validators, err := suite.app.StakingKeeper.GetValidators(suite.ctx, 1) - suite.NoError(err) - suite.validator = validators[0] + suite.validator = validator stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) suite.NoError(err) diff --git a/x/onboarding/keeper/msg_server_test.go b/x/onboarding/keeper/msg_server_test.go index f6abffc3a..0658e2a57 100644 --- a/x/onboarding/keeper/msg_server_test.go +++ b/x/onboarding/keeper/msg_server_test.go @@ -9,14 +9,13 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/Canto-Network/Canto/v7/testutil" onboardingtypes "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) -func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { +func (suite *KeeperTestSuite) TestMsgExecutionByProposal() { suite.SetupTest() // set denom @@ -44,27 +43,46 @@ func (suite *KeeperTestSuite) TestMsgUpdateParamsByProposal() { suite.Require().NoError(err) suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) - // submit proposal for change params - changeParams := onboardingtypes.NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"}) - msg := &onboardingtypes.MsgUpdateParams{ - Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), - Params: changeParams, + testCases := []struct { + name string + msg sdk.Msg + checkFunc func(uint64) + }{ + { + "ok - proposal MsgUpdateParams", + &onboardingtypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: onboardingtypes.NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"}), + }, + func(proposalId uint64) { + changeParams := onboardingtypes.NewParams(true, sdkmath.NewInt(10000), []string{"channel-0"}) + + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.OnboardingKeeper.GetParams(suite.ctx), changeParams) + }, + }, } - proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{msg}, "", "test", "description", proposer, false) - suite.Require().NoError(err) - suite.Commit() - ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) - suite.Require().NoError(err) - suite.Require().True(ok) - suite.Commit() + for _, tc := range testCases { + suite.Run(tc.name, func() { + // submit proposal + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{tc.msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() - err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") - suite.Require().NoError(err) - suite.CommitAfter(*govParams.VotingPeriod) + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() - proposal, err = suite.app.GovKeeper.Proposals.Get(suite.ctx, proposal.Id) - suite.Require().NoError(err) - suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) - suite.Require().Equal(suite.app.OnboardingKeeper.GetParams(suite.ctx), changeParams) + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + // check proposal result + tc.checkFunc(proposal.Id) + }) + } } From a263595f4942837f6183f5ef05eaf6a80dcc3569 Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 10 May 2024 02:39:32 +0900 Subject: [PATCH 81/96] test: Add update params test for coinswap module --- x/coinswap/keeper/keeper_test.go | 90 ++++++++++++++++++++++++-- x/coinswap/keeper/msg_server_test.go | 97 +++++++++++++++++++++++++++- 2 files changed, 179 insertions(+), 8 deletions(-) diff --git a/x/coinswap/keeper/keeper_test.go b/x/coinswap/keeper/keeper_test.go index 7102d7fe9..495e5d6ae 100644 --- a/x/coinswap/keeper/keeper_test.go +++ b/x/coinswap/keeper/keeper_test.go @@ -4,16 +4,23 @@ import ( "testing" "time" + "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/suite" + abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/tmhash" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + "github.com/cometbft/cometbft/version" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/Canto-Network/Canto/v7/app" "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" @@ -40,30 +47,99 @@ type TestSuite struct { keeper keeper.Keeper queryClient types.QueryClient msgServer types.MsgServer + validator stakingtypes.Validator } func (suite *TestSuite) SetupTest() { - app := setupWithGenesisAccounts() - ctx := app.BaseApp.NewContextLegacy(false, tmproto.Header{}) + suite.app = setupWithGenesisAccounts() - queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) - types.RegisterQueryServer(queryHelper, app.CoinswapKeeper) + // account key + priv, err := ethsecp256k1.GenerateKey() + suite.Require().NoError(err) + address := common.BytesToAddress(priv.PubKey().Address().Bytes()) + + // consensus key + pubKey := ed25519.GenPrivKey().PubKey() + consAddress := sdk.ConsAddress(pubKey.Address()) + + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, tmproto.Header{ + Height: 1, + ChainID: "canto_9001-1", + Time: time.Now().UTC(), + ProposerAddress: consAddress.Bytes(), + + Version: tmversion.Consensus{ + Block: version.BlockProtocol, + }, + LastBlockId: tmproto.BlockID{ + Hash: tmhash.Sum([]byte("block_id")), + PartSetHeader: tmproto.PartSetHeader{ + Total: 11, + Hash: tmhash.Sum([]byte("partset_header")), + }, + }, + AppHash: tmhash.Sum([]byte("app")), + DataHash: tmhash.Sum([]byte("data")), + EvidenceHash: tmhash.Sum([]byte("evidence")), + ValidatorsHash: tmhash.Sum([]byte("validators")), + NextValidatorsHash: tmhash.Sum([]byte("next_validators")), + ConsensusHash: tmhash.Sum([]byte("consensus")), + LastResultsHash: tmhash.Sum([]byte("last_result")), + }) + + queryHelper := baseapp.NewQueryServerTestHelper(suite.ctx, suite.app.InterfaceRegistry()) + types.RegisterQueryServer(queryHelper, suite.app.CoinswapKeeper) queryClient := types.NewQueryClient(queryHelper) - suite.app = app - suite.ctx = ctx - suite.keeper = app.CoinswapKeeper + suite.keeper = suite.app.CoinswapKeeper suite.queryClient = queryClient sdk.SetCoinDenomRegex(func() string { return `[a-zA-Z][a-zA-Z0-9/\-]{2,127}` }) + + // Set Validator + valAddr := sdk.ValAddress(address.Bytes()) + validator, err := stakingtypes.NewValidator(valAddr.String(), pubKey, stakingtypes.Description{}) + suite.Require().NoError(err) + + valbz, err := suite.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + suite.Require().NoError(err) + suite.app.StakingKeeper.SetValidator(suite.ctx, validator) + suite.app.StakingKeeper.Hooks().AfterValidatorCreated(suite.ctx, valbz) + err = suite.app.StakingKeeper.SetValidatorByConsAddr(suite.ctx, validator) + suite.Require().NoError(err) + suite.validator = validator } func TestKeeperTestSuite(t *testing.T) { suite.Run(t, new(TestSuite)) } +// Commit commits and starts a new block with an updated context. +func (suite *TestSuite) Commit() { + suite.CommitAfter(time.Second * 0) +} + +func (suite *TestSuite) CommitAfter(t time.Duration) { + header := suite.ctx.BlockHeader() + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }) + + suite.app.Commit() + + header.Height += 1 + header.Time = header.Time.Add(t) + suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }) + + // update ctx + suite.ctx = suite.app.BaseApp.NewContextLegacy(false, header) +} + func (suite *TestSuite) TestParams() { cases := []struct { params types.Params diff --git a/x/coinswap/keeper/msg_server_test.go b/x/coinswap/keeper/msg_server_test.go index e25993163..f23aba363 100644 --- a/x/coinswap/keeper/msg_server_test.go +++ b/x/coinswap/keeper/msg_server_test.go @@ -1,11 +1,18 @@ package keeper_test import ( - "github.com/cometbft/cometbft/crypto/tmhash" + "math" sdkmath "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto/tmhash" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/Canto-Network/Canto/v7/testutil" "github.com/Canto-Network/Canto/v7/x/coinswap/types" ) @@ -261,6 +268,94 @@ func (suite *TestSuite) TestMsgRemoveLiquidity_ValidateBasic() { } } +func (suite *TestSuite) TestMsgExecutionByProposal() { + suite.SetupTest() + + // set denom + stakingParams, err := suite.app.StakingKeeper.GetParams(suite.ctx) + suite.Require().NoError(err) + denom := stakingParams.BondDenom + + // change mindeposit for denom + govParams, err := suite.app.GovKeeper.Params.Get(suite.ctx) + suite.Require().NoError(err) + govParams.MinDeposit = []sdk.Coin{sdk.NewCoin(denom, sdkmath.NewInt(1))} + err = suite.app.GovKeeper.Params.Set(suite.ctx, govParams) + suite.Require().NoError(err) + + // create account + privKey, err := ethsecp256k1.GenerateKey() + suite.Require().NoError(err) + proposer := sdk.AccAddress(privKey.PubKey().Address().Bytes()) + + // create account and deligate to validator + initAmount := sdkmath.NewInt(int64(math.Pow10(18)) * 2) + initBalance := sdk.NewCoins(sdk.NewCoin(denom, initAmount)) + testutil.FundAccount(suite.app.BankKeeper, suite.ctx, proposer, initBalance) + shares, err := suite.app.StakingKeeper.Delegate(suite.ctx, proposer, sdk.DefaultPowerReduction, stakingtypes.Unbonded, suite.validator, true) + suite.Require().NoError(err) + suite.Require().True(shares.GT(sdkmath.LegacyNewDec(0))) + + testCases := []struct { + name string + msg sdk.Msg + checkFunc func(uint64) + }{ + { + "ok - proposal MsgUpdateParams", + &types.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + Params: types.Params{ + Fee: sdkmath.LegacyNewDec(0), + PoolCreationFee: sdk.Coin{denomStandard, sdkmath.ZeroInt()}, + TaxRate: sdkmath.LegacyNewDec(0), + MaxStandardCoinPerPool: sdkmath.NewInt(10_000_000_000), + MaxSwapAmount: sdk.NewCoins(sdk.NewInt64Coin(denomBTC, 10_000_000), + sdk.NewInt64Coin(denomETH, 10_000_000), + ), + }, + }, + func(proposalId uint64) { + changeParams := types.Params{ + Fee: sdkmath.LegacyNewDec(0), + PoolCreationFee: sdk.Coin{denomStandard, sdkmath.ZeroInt()}, + TaxRate: sdkmath.LegacyNewDec(0), + MaxStandardCoinPerPool: sdkmath.NewInt(10_000_000_000), + MaxSwapAmount: sdk.NewCoins(sdk.NewInt64Coin(denomBTC, 10_000_000), + sdk.NewInt64Coin(denomETH, 10_000_000), + ), + } + + proposal, err := suite.app.GovKeeper.Proposals.Get(suite.ctx, proposalId) + suite.Require().NoError(err) + suite.Require().Equal(govtypesv1.ProposalStatus_PROPOSAL_STATUS_PASSED, proposal.Status) + suite.Require().Equal(suite.app.CoinswapKeeper.GetParams(suite.ctx), changeParams) + }, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + // submit proposal + proposal, err := suite.app.GovKeeper.SubmitProposal(suite.ctx, []sdk.Msg{tc.msg}, "", "test", "description", proposer, false) + suite.Require().NoError(err) + suite.Commit() + + ok, err := suite.app.GovKeeper.AddDeposit(suite.ctx, proposal.Id, proposer, govParams.MinDeposit) + suite.Require().NoError(err) + suite.Require().True(ok) + suite.Commit() + + err = suite.app.GovKeeper.AddVote(suite.ctx, proposal.Id, proposer, govtypesv1.NewNonSplitVoteOption(govtypesv1.OptionYes), "") + suite.Require().NoError(err) + suite.CommitAfter(*govParams.VotingPeriod) + + // check proposal result + tc.checkFunc(proposal.Id) + }) + } +} + func buildCoin(denom string, amt int64) sdk.Coin { return sdk.Coin{ Denom: denom, From fad4908e41d4aaa8b457422f7bc801adb9146c4e Mon Sep 17 00:00:00 2001 From: dudong2 Date: Fri, 10 May 2024 04:32:55 +0900 Subject: [PATCH 82/96] feat: Apply autocli --- x/coinswap/autocli.go | 84 +++++ x/coinswap/client/cli/query.go | 155 ---------- x/coinswap/client/cli/tx.go | 173 ----------- x/coinswap/module.go | 13 - x/csr/autocli.go | 68 +++++ x/csr/client/cli/query.go | 194 ------------ x/csr/client/cli/tx.go | 23 -- x/csr/module.go | 12 - x/epochs/autocli.go | 40 +++ x/epochs/client/cli/query.go | 109 ------- x/epochs/module.go | 12 - x/erc20/autocli.go | 80 +++++ x/erc20/client/cli/query.go | 128 -------- x/erc20/client/cli/tx.go | 391 ------------------------ x/erc20/client/cli/utils.go | 25 -- x/erc20/module.go | 12 - x/govshuttle/autocli.go | 27 ++ x/govshuttle/client/cli/query.go | 31 -- x/govshuttle/client/cli/query_params.go | 34 --- x/govshuttle/client/cli/tx.go | 204 ------------- x/govshuttle/client/cli/utils.go | 55 ---- x/govshuttle/module.go | 12 - x/inflation/autocli.go | 52 ++++ x/inflation/client/cli/query.go | 206 ------------- x/inflation/module.go | 10 - x/onboarding/autocli.go | 27 ++ x/onboarding/client/cli/query.go | 58 ---- x/onboarding/module.go | 10 - 28 files changed, 378 insertions(+), 1867 deletions(-) create mode 100644 x/coinswap/autocli.go delete mode 100644 x/coinswap/client/cli/query.go delete mode 100644 x/coinswap/client/cli/tx.go create mode 100644 x/csr/autocli.go delete mode 100644 x/csr/client/cli/query.go delete mode 100644 x/csr/client/cli/tx.go create mode 100644 x/epochs/autocli.go delete mode 100644 x/epochs/client/cli/query.go create mode 100644 x/erc20/autocli.go delete mode 100644 x/erc20/client/cli/query.go delete mode 100644 x/erc20/client/cli/tx.go delete mode 100644 x/erc20/client/cli/utils.go create mode 100644 x/govshuttle/autocli.go delete mode 100644 x/govshuttle/client/cli/query.go delete mode 100644 x/govshuttle/client/cli/query_params.go delete mode 100644 x/govshuttle/client/cli/tx.go delete mode 100644 x/govshuttle/client/cli/utils.go create mode 100644 x/inflation/autocli.go delete mode 100644 x/inflation/client/cli/query.go create mode 100644 x/onboarding/autocli.go delete mode 100644 x/onboarding/client/cli/query.go diff --git a/x/coinswap/autocli.go b/x/coinswap/autocli.go new file mode 100644 index 000000000..bb2bd12ce --- /dev/null +++ b/x/coinswap/autocli.go @@ -0,0 +1,84 @@ +package coinswap + +import ( + "fmt" + + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + "github.com/cosmos/cosmos-sdk/version" + + coinswapv1 "github.com/Canto-Network/Canto/v7/api/canto/coinswap/v1" + "github.com/Canto-Network/Canto/v7/x/coinswap/types" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: coinswapv1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Query the current coinswap parameters information", + Example: fmt.Sprintf("%s query %s params", version.AppName, types.ModuleName), + }, + { + RpcMethod: "LiquidityPool", + Use: "liquidity-pool [liquidity pool denom]", + Short: "Query proposals with optional filters", + Example: fmt.Sprintf("%s query %s liquidity-pool lpt-1", version.AppName, types.ModuleName), + }, + { + RpcMethod: "LiquidityPools", + Use: "liquidity-pools", + Short: "query all liquidity pools", + Example: fmt.Sprintf("%s query %s liquidity-pools", version.AppName, types.ModuleName), + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: coinswapv1.Msg_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "AddLiquidity", + Use: "add-liquidity [max-coin] [standard-coin-amount] [minimum-liquidity] [duration]", + Short: "Add liquidity to a pool", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "max_token"}, + {ProtoField: "exact_standard_amt"}, + {ProtoField: "min_liquidity"}, + {ProtoField: "deadline"}, + }, + }, + { + RpcMethod: "RemoveLiquidity", + Use: "remove-liquidity [min output coin amount] [liquidity coin to withdraw] [min output standard coin amount] [duration]", + Short: "Remove liquidity from a pair", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "withdraw_liquidity"}, + {ProtoField: "min_token"}, + {ProtoField: "min_standard_amt"}, + {ProtoField: "deadline"}, + }, + }, + { + RpcMethod: "SwapCoin", + Use: "swap [input coin] [output coin] [isBuyOrder] [duration]", + Short: "Remove liquidity from a pair", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "input"}, + {ProtoField: "output"}, + {ProtoField: "deadline"}, + {ProtoField: "is_buy_order"}, + }, + }, + { + RpcMethod: "UpdateParams", + Skip: true, + }, + }, + }, + } +} diff --git a/x/coinswap/client/cli/query.go b/x/coinswap/client/cli/query.go deleted file mode 100644 index 5b85ebc32..000000000 --- a/x/coinswap/client/cli/query.go +++ /dev/null @@ -1,155 +0,0 @@ -package cli - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/version" - - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - NewQueryParamsCmd(), - GetCmdQueryLiquidityPools(), - GetCmdQueryLiquidityPool(), - ) - - return cmd -} - -// NewQueryParamsCmd implements the params query command. -func NewQueryParamsCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Args: cobra.NoArgs, - Short: "Query the current coinswap parameters information", - Long: strings.TrimSpace( - fmt.Sprintf(`Query values set as coinswap parameters. - -Example: -$ %s query %s params -`, - version.AppName, types.ModuleName, - ), - ), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - resp, err := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - - return clientCtx.PrintProto(&resp.Params) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func GetCmdQueryLiquidityPools() *cobra.Command { - cmd := &cobra.Command{ - Use: "liquidity-pools", - Short: "query all liquidity pools", - Long: strings.TrimSpace( - fmt.Sprintf(`Query all liquidity pools. - -Example: -$ %s query %s liquidity-pools -`, - version.AppName, types.ModuleName, - ), - ), - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - res, err := queryClient.LiquidityPools(cmd.Context(), &types.QueryLiquidityPoolsRequest{ - Pagination: pageReq, - }) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - flags.AddPaginationFlagsToCmd(cmd, "liquidity-pools") - - return cmd -} - -func GetCmdQueryLiquidityPool() *cobra.Command { - cmd := &cobra.Command{ - Use: "liquidity-pool [liquidity pool denom]", - Short: "query a specific liquidity pool", - Long: strings.TrimSpace( - fmt.Sprintf(`Query details of a liquidity pool . - -Example: -$ %s query %s liquidity-pool -`, - version.AppName, types.ModuleName, - ), - ), - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - lptDenom := args[0] - if err := sdk.ValidateDenom(lptDenom); err != nil { - return err - } - - res, err := queryClient.LiquidityPool(cmd.Context(), &types.QueryLiquidityPoolRequest{ - LptDenom: lptDenom, - }) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/coinswap/client/cli/tx.go b/x/coinswap/client/cli/tx.go deleted file mode 100644 index f221cda84..000000000 --- a/x/coinswap/client/cli/tx.go +++ /dev/null @@ -1,173 +0,0 @@ -package cli - -import ( - "fmt" - "strconv" - "time" - - "github.com/spf13/cobra" - - sdkmath "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -// GetTxCmd returns the transaction commands for this module -func GetTxCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - GetAddLiquidityCmd(), - GetRemoveLiquidityCmd(), - GetSwapCmd(), - ) - - return cmd -} - -func GetAddLiquidityCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "add-liquidity [max-coin] [standard-coin-amount] [minimum-liquidity] [duration]", - Args: cobra.ExactArgs(4), - Short: "Add liquidity to a pool", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - depositCoin, err := sdk.ParseCoinNormalized(args[0]) - if err != nil { - return fmt.Errorf("invalid coins: %w", err) - } - - standardCoinAmt, ok := sdkmath.NewIntFromString(args[1]) - if !ok { - return fmt.Errorf("invalid standard coin amount: %s", args[1]) - } - - minLiquidity, ok := sdkmath.NewIntFromString(args[2]) - if !ok { - return fmt.Errorf("invalid minimum liquidity: %s", args[2]) - } - - duration, err := time.ParseDuration(args[3]) - if err != nil { - return fmt.Errorf("invalid duration: %s", err) - } - - deadline := time.Now().Add(duration) - - msg := types.NewMsgAddLiquidity(depositCoin, standardCoinAmt, minLiquidity, deadline.Unix(), clientCtx.GetFromAddress().String()) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func GetRemoveLiquidityCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "remove-liquidity [min output coin amount] [liquidity coin to withdraw] [min output standard coin amount] [duration]", - Args: cobra.ExactArgs(4), - Short: "Remove liquidity from a pair", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - minOutputCoin, ok := sdkmath.NewIntFromString(args[0]) - if !ok { - return fmt.Errorf("invalid output coin amount: %s", args[1]) - } - - liquidityCoin, err := sdk.ParseCoinNormalized(args[1]) - if err != nil { - return fmt.Errorf("invalid liquidity coin: %w", err) - } - - minOutputStandardCoin, ok := sdkmath.NewIntFromString(args[2]) - if !ok { - return fmt.Errorf("invalid output standard coin amount: %s", args[2]) - } - - duration, err := time.ParseDuration(args[3]) - if err != nil { - return fmt.Errorf("invalid duration: %s", err) - } - - deadline := time.Now().Add(duration) - - msg := types.NewMsgRemoveLiquidity(minOutputCoin, liquidityCoin, minOutputStandardCoin, deadline.Unix(), clientCtx.GetFromAddress().String()) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} - -func GetSwapCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "swap [input coin] [output coin] [isBuyOrder] [duration]", - Args: cobra.ExactArgs(4), - Short: "Remove liquidity from a pair", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - inputCoin, err := sdk.ParseCoinNormalized(args[0]) - if err != nil { - return fmt.Errorf("invalid input coin: %w", err) - } - - outputCoin, err := sdk.ParseCoinNormalized(args[1]) - if err != nil { - return fmt.Errorf("invalid output coin: %w", err) - } - - isBuyOrder, err := strconv.ParseBool(args[2]) - if err != nil { - return fmt.Errorf("invalid isBuyOrder value: %s", args[2]) - } - - duration, err := time.ParseDuration(args[3]) - if err != nil { - return fmt.Errorf("invalid duration: %s", err) - } - - deadline := time.Now().Add(duration) - - msg := types.NewMsgSwapOrder( - types.Input{Address: clientCtx.GetFromAddress().String(), Coin: inputCoin}, - types.Output{Address: clientCtx.GetFromAddress().String(), Coin: outputCoin}, - deadline.Unix(), - isBuyOrder, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/coinswap/module.go b/x/coinswap/module.go index b2e20af85..8004993b1 100644 --- a/x/coinswap/module.go +++ b/x/coinswap/module.go @@ -7,7 +7,6 @@ import ( "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -18,7 +17,6 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Canto-Network/Canto/v7/x/coinswap/client/cli" "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" "github.com/Canto-Network/Canto/v7/x/coinswap/simulation" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -70,17 +68,6 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } -// GetTxCmd returns the root tx command for the coinswap module. -func (AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.GetTxCmd() -} - -// GetQueryCmd returns no root query command for the coinswap module. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - // TODO: add cmd - return cli.GetQueryCmd() -} - // RegisterInterfaces registers interfaces and implementations of the coinswap module. func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { types.RegisterInterfaces(registry) diff --git a/x/csr/autocli.go b/x/csr/autocli.go new file mode 100644 index 000000000..32f9c63bd --- /dev/null +++ b/x/csr/autocli.go @@ -0,0 +1,68 @@ +package csr + +import ( + "fmt" + + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + "github.com/cosmos/cosmos-sdk/version" + + csrv1 "github.com/Canto-Network/Canto/v7/api/canto/csr/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: csrv1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Query the current parameters of the CSR module", + }, + { + RpcMethod: "CSRs", + Use: "csrs", + Short: "Query all registered contracts and NFTs for the CSR module", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "pagination"}, + }, + }, + { + RpcMethod: "CSRByNFT", + Use: "nft [nftID]", + Short: "Query the CSR associated with a given NFT ID", + Example: fmt.Sprintf("%s query csr nft
", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "nftId"}, + }, + }, + { + RpcMethod: "CSRByContract", + Use: "contract [address]", + Short: "Query the CSR associated with a given smart contract adddress", + Example: fmt.Sprintf("%s query csr contract
", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "address"}, + }, + }, + { + RpcMethod: "Turnstile", + Use: "turnstile", + Short: "Query the address of the turnstile smart contract deployed by the module account", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: csrv1.Msg_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "UpdateParams", + Skip: true, + }, + }, + }, + } +} diff --git a/x/csr/client/cli/query.go b/x/csr/client/cli/query.go deleted file mode 100644 index 6a3178967..000000000 --- a/x/csr/client/cli/query.go +++ /dev/null @@ -1,194 +0,0 @@ -package cli - -import ( - "context" - "fmt" - "strconv" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/version" - - "github.com/Canto-Network/Canto/v7/x/csr/types" -) - -// GetQueryCmd returns the cli query commands for the CSR module -func GetQueryCmd(queryRoute string) *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - CmdQueryParams(), - CmdQueryCSRs(), - CmdQueryCSRByNFT(), - CmdQueryCSRByContract(), - CmdQueryTurnstile(), - ) - - return cmd -} - -// CmdQueryParams implements a command that will return the current parameters of the -// CSR module. -func CmdQueryParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "Query the current parameters of the CSR module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - request := &types.QueryParamsRequest{} - - // Query store - response, err := queryClient.Params(context.Background(), request) - if err != nil { - return err - } - - return clientCtx.PrintProto(&response.Params) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// CmdQueryCSRs implements a command that will return the CSRs from the CSR store -func CmdQueryCSRs() *cobra.Command { - cmd := &cobra.Command{ - Use: "csrs", - Short: "Query all registered contracts and NFTs for the CSR module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - pageRequest, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - request := &types.QueryCSRsRequest{ - Pagination: pageRequest, - } - - // Query store - response, err := queryClient.CSRs(context.Background(), request) - if err != nil { - return err - } - - return clientCtx.PrintProto(response) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// CmdQueryCSRByNFT implements a command that will return a CSR given a NFT ID -func CmdQueryCSRByNFT() *cobra.Command { - cmd := &cobra.Command{ - Use: "nft [nftID]", - Args: cobra.ExactArgs(1), - Short: "Query the CSR associated with a given NFT ID", - Long: "Query the CSR associated with a given NFT ID", - Example: fmt.Sprintf("%s query csr nft
", version.AppName), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - // arg must be converted to a uint - nftID, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - request := &types.QueryCSRByNFTRequest{NftId: nftID} - // Query store - response, err := queryClient.CSRByNFT(context.Background(), request) - if err != nil { - return err - } - - return clientCtx.PrintProto(response) - }, - } - flags.AddQueryFlagsToCmd(cmd) - return cmd -} - -// CmdQueryCSRByContract implements a cobra command that will return the CSR associated -// given a smart contract address -func CmdQueryCSRByContract() *cobra.Command { - cmd := &cobra.Command{ - Use: "contract [address]", - Args: cobra.ExactArgs(1), - Short: "Query the CSR associated with a given smart contract adddress", - Long: "Query the CSR associated with a given smart contract adddress", - Example: fmt.Sprintf("%s query csr contract
", version.AppName), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - request := &types.QueryCSRByContractRequest{Address: args[0]} - - // Query store - response, err := queryClient.CSRByContract(context.Background(), request) - if err != nil { - return err - } - - return clientCtx.PrintProto(response) - }, - } - flags.AddQueryFlagsToCmd(cmd) - return cmd -} - -// CmdQueryTurnstile implements a cobra command that will return the Turnstile address that was deployed by the module account -func CmdQueryTurnstile() *cobra.Command { - cmd := &cobra.Command{ - Use: "turnstile", - Short: "Query the address of the turnstile smart contract deployed by the module account", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - request := &types.QueryTurnstileRequest{} - - // Query store - response, err := queryClient.Turnstile(context.Background(), request) - if err != nil { - return err - } - - return clientCtx.PrintProto(response) - }, - } - flags.AddQueryFlagsToCmd(cmd) - return cmd -} diff --git a/x/csr/client/cli/tx.go b/x/csr/client/cli/tx.go deleted file mode 100644 index c7a6243dc..000000000 --- a/x/csr/client/cli/tx.go +++ /dev/null @@ -1,23 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/spf13/cobra" - - "github.com/Canto-Network/Canto/v7/x/csr/types" - "github.com/cosmos/cosmos-sdk/client" -) - -// GetTxCmd returns the transaction methods allowed for the CLI. However, currently all transaction or state transition -// functionality is triggered through the Turnstile Smart Contract. -func GetTxCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("%s has no transaction commands (everything transaction is triggered via the Turnstile Smart Contract)", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - return cmd -} diff --git a/x/csr/module.go b/x/csr/module.go index 97cbc7f28..cc69cb6cb 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -9,9 +9,7 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - "github.com/Canto-Network/Canto/v7/x/csr/client/cli" "github.com/Canto-Network/Canto/v7/x/csr/keeper" "github.com/Canto-Network/Canto/v7/x/csr/types" abci "github.com/cometbft/cometbft/abci/types" @@ -80,16 +78,6 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } -// GetTxCmd returns the csr module's root tx command. -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.GetTxCmd() -} - -// GetQueryCmd returns the csr module's root query command. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd(types.StoreKey) -} - // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/epochs/autocli.go b/x/epochs/autocli.go new file mode 100644 index 000000000..559ec84bc --- /dev/null +++ b/x/epochs/autocli.go @@ -0,0 +1,40 @@ +package epochs + +import ( + "fmt" + + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + "github.com/cosmos/cosmos-sdk/version" + + epochsv1 "github.com/Canto-Network/Canto/v7/api/canto/epochs/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: epochsv1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "EpochInfos", + Use: "epoch-infos", + Short: "Query running epochInfos", + Example: fmt.Sprintf("%s query epochs epoch-infos", version.AppName), + }, + { + RpcMethod: "CurrentEpoch", + Use: "current-epoch", + Short: "Query current epoch by specified identifier", + Example: fmt.Sprintf("%s query epochs current-epoch week", version.AppName), + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "identifier"}, + }, + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + EnhanceCustomCommand: false, + }, + } +} diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go deleted file mode 100644 index 3852a7643..000000000 --- a/x/epochs/client/cli/query.go +++ /dev/null @@ -1,109 +0,0 @@ -package cli - -import ( - "fmt" - "strings" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/version" - "github.com/spf13/cobra" - - "github.com/Canto-Network/Canto/v7/x/epochs/types" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd() *cobra.Command { - // Group epochs queries under a subcommand - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - GetCmdEpochsInfos(), - GetCmdCurrentEpoch(), - ) - - return cmd -} - -// GetCmdEpochsInfos provide running epochInfos -func GetCmdEpochsInfos() *cobra.Command { - cmd := &cobra.Command{ - Use: "epoch-infos", - Short: "Query running epochInfos", - Example: strings.TrimSpace( - fmt.Sprintf(`$ %s query epochs epoch-infos`, - version.AppName, - ), - ), - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, _ []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - req := &types.QueryEpochsInfoRequest{ - Pagination: pageReq, - } - - res, err := queryClient.EpochInfos(cmd.Context(), req) - if err != nil { - return err - } - - // return clientCtx.PrintProto(res) - return clientCtx.PrintObjectLegacy(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetCmdCurrentEpoch provides current epoch by specified identifier -func GetCmdCurrentEpoch() *cobra.Command { - cmd := &cobra.Command{ - Use: "current-epoch", - Short: "Query current epoch by specified identifier", - Example: strings.TrimSpace( - fmt.Sprintf(`$ %s query epochs current-epoch week`, - version.AppName, - ), - ), - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - res, err := queryClient.CurrentEpoch(cmd.Context(), &types.QueryCurrentEpochRequest{ - Identifier: args[0], - }) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/epochs/module.go b/x/epochs/module.go index 78f00f112..e8d279b7d 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -11,7 +11,6 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -21,7 +20,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Canto-Network/Canto/v7/x/epochs/client/cli" "github.com/Canto-Network/Canto/v7/x/epochs/keeper" "github.com/Canto-Network/Canto/v7/x/epochs/types" ) @@ -81,16 +79,6 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } -// GetTxCmd returns the epochs module's root tx command. -func (AppModuleBasic) GetTxCmd() *cobra.Command { - return nil -} - -// GetQueryCmd returns the epochs module's root query command. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/erc20/autocli.go b/x/erc20/autocli.go new file mode 100644 index 000000000..ac8aea6aa --- /dev/null +++ b/x/erc20/autocli.go @@ -0,0 +1,80 @@ +package erc20 + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: erc20v1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "TokenPairs", + Use: "token-pairs", + Short: "Gets registered token pairs", + }, + { + RpcMethod: "TokenPair", + Use: "token-pair [token]", + Short: "Get a registered token pair", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "token"}, + }, + }, + { + RpcMethod: "Params", + Use: "params", + Short: "Gets erc20 params", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: erc20v1.Msg_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "ConvertCoin", + Use: "convert-coin [coin] [receiver_hex]", + Short: "Convert a Cosmos coin to ERC20. When the receiver [optional] is omitted, the ERC20 tokens are transferred to the sender.", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "coin"}, + {ProtoField: "receiver"}, + {ProtoField: "sender"}, + }, + }, + { + RpcMethod: "ConvertERC20", + Use: "convert-erc20 [contract-address] [amount] [receiver]", + Short: "Convert an ERC20 token to Cosmos coin. When the receiver [optional] is omitted, the Cosmos coins are transferred to the sender.", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "contract_address"}, + {ProtoField: "amount"}, + {ProtoField: "receiver"}, + {ProtoField: "sender"}, + }, + }, + { + RpcMethod: "RegisterCoinProposal", + Skip: true, + }, + { + RpcMethod: "RegisterERC20Proposal", + Skip: true, + }, + { + RpcMethod: "ToggleTokenConversionProposal", + Skip: true, + }, + { + RpcMethod: "UpdateParams", + Skip: true, + }, + }, + }, + } +} diff --git a/x/erc20/client/cli/query.go b/x/erc20/client/cli/query.go deleted file mode 100644 index 2f977d60a..000000000 --- a/x/erc20/client/cli/query.go +++ /dev/null @@ -1,128 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" - - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// GetQueryCmd returns the parent command for all erc20 CLI query commands -func GetQueryCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: "Querying commands for the erc20 module", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - GetTokenPairsCmd(), - GetTokenPairCmd(), - GetParamsCmd(), - ) - return cmd -} - -// GetTokenPairsCmd queries all registered token pairs -func GetTokenPairsCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "token-pairs", - Short: "Gets registered token pairs", - Long: "Gets registered token pairs", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, _ []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - req := &types.QueryTokenPairsRequest{ - Pagination: pageReq, - } - - res, err := queryClient.TokenPairs(context.Background(), req) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - return cmd -} - -// GetTokenPairsCmd queries a registered token pair -func GetTokenPairCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "token-pair [token]", - Short: "Get a registered token pair", - Long: "Get a registered token pair", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - req := &types.QueryTokenPairRequest{ - Token: args[0], - } - - res, err := queryClient.TokenPair(context.Background(), req) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - return cmd -} - -// GetParamsCmd queries erc20 module params -func GetParamsCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "Gets erc20 params", - Long: "Gets erc20 params", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, _ []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - req := &types.QueryParamsRequest{} - - res, err := queryClient.Params(context.Background(), req) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - return cmd -} diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go deleted file mode 100644 index 93ff13e7d..000000000 --- a/x/erc20/client/cli/tx.go +++ /dev/null @@ -1,391 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/spf13/cobra" - - errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - "github.com/ethereum/go-ethereum/common" - - ethermint "github.com/evmos/ethermint/types" - - "github.com/Canto-Network/Canto/v7/x/erc20/types" -) - -// NewTxCmd returns a root CLI command handler for erc20 transaction commands -func NewTxCmd() *cobra.Command { - txCmd := &cobra.Command{ - Use: types.ModuleName, - Short: "erc20 subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - txCmd.AddCommand( - NewConvertCoinCmd(), - NewConvertERC20Cmd(), - ) - return txCmd -} - -// NewConvertCoinCmd returns a CLI command handler for converting a Cosmos coin -func NewConvertCoinCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "convert-coin [coin] [receiver_hex]", - Short: "Convert a Cosmos coin to ERC20. When the receiver [optional] is omitted, the ERC20 tokens are transferred to the sender.", - Args: cobra.RangeArgs(1, 2), - RunE: func(cmd *cobra.Command, args []string) error { - cliCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - coin, err := sdk.ParseCoinNormalized(args[0]) - if err != nil { - return err - } - - var receiver string - sender := cliCtx.GetFromAddress() - - if len(args) == 2 { - receiver = args[1] - if err := ethermint.ValidateAddress(receiver); err != nil { - return fmt.Errorf("invalid receiver hex address %w", err) - } - } else { - receiver = common.BytesToAddress(sender).Hex() - } - - msg := &types.MsgConvertCoin{ - Coin: coin, - Receiver: receiver, - Sender: sender.String(), - } - - if err := types.ValidateErc20Denom(msg.Coin.Denom); err != nil { - if err := ibctransfertypes.ValidateIBCDenom(msg.Coin.Denom); err != nil { - return err - } - } - - if !msg.Coin.Amount.IsPositive() { - return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") - } - - _, err = sdk.AccAddressFromBech32(msg.Sender) - if err != nil { - return errorsmod.Wrap(err, "invalid sender address") - } - - if !common.IsHexAddress(msg.Receiver) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) - } - - return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - return cmd -} - -// NewConvertERC20Cmd returns a CLI command handler for converting an ERC20 -func NewConvertERC20Cmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "convert-erc20 [contract-address] [amount] [receiver]", - Short: "Convert an ERC20 token to Cosmos coin. When the receiver [optional] is omitted, the Cosmos coins are transferred to the sender.", - Args: cobra.RangeArgs(2, 3), - RunE: func(cmd *cobra.Command, args []string) error { - cliCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - contract := args[0] - if err := ethermint.ValidateAddress(contract); err != nil { - return fmt.Errorf("invalid ERC20 contract address %w", err) - } - - amount, ok := sdkmath.NewIntFromString(args[1]) - if !ok { - return fmt.Errorf("invalid amount %s", args[1]) - } - - from := common.BytesToAddress(cliCtx.GetFromAddress().Bytes()) - - receiver := cliCtx.GetFromAddress() - if len(args) == 3 { - receiver, err = sdk.AccAddressFromBech32(args[2]) - if err != nil { - return err - } - } - - msg := &types.MsgConvertERC20{ - ContractAddress: contract, - Amount: amount, - Receiver: receiver.String(), - Sender: from.Hex(), - } - - if !common.IsHexAddress(msg.ContractAddress) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) - } - - if !msg.Amount.IsPositive() { - return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") - } - - _, err = sdk.AccAddressFromBech32(msg.Receiver) - if err != nil { - return errorsmod.Wrap(err, "invalid receiver address") - } - - if !common.IsHexAddress(msg.Sender) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) - } - - return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - return cmd -} - -//// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal -//func NewRegisterCoinProposalCmd() *cobra.Command { -// cmd := &cobra.Command{ -// Use: "register-coin [metadata]", -// Args: cobra.ExactArgs(1), -// Short: "Submit a register coin proposal", -// Long: `Submit a proposal to register a Cosmos coin to the erc20 along with an initial deposit. -//Upon passing, the -//The proposal details must be supplied via a JSON file.`, -// Example: fmt.Sprintf(`$ %s tx gov submit-proposal register-coin --from= -// -//Where metadata.json contains (example): -// -//{ -// "description": "The native staking and governance token of the Osmosis chain", -// "denom_units": [ -// { -// "denom": "ibc/", -// "exponent": 0, -// "aliases": ["ibcuosmo"] -// }, -// { -// "denom": "OSMO", -// "exponent": 6 -// } -// ], -// "base": "ibc/", -// "display": "OSMO", -// "name": "Osmo", -// "symbol": "OSMO" -//}`, version.AppName, -// ), -// RunE: func(cmd *cobra.Command, args []string) error { -// clientCtx, err := client.GetClientTxContext(cmd) -// if err != nil { -// return err -// } -// -// title, err := cmd.Flags().GetString(cli.FlagTitle) -// if err != nil { -// return err -// } -// -// description, err := cmd.Flags().GetString(cli.FlagDescription) -// if err != nil { -// return err -// } -// -// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) -// if err != nil { -// return err -// } -// -// deposit, err := sdk.ParseCoinsNormalized(depositStr) -// if err != nil { -// return err -// } -// -// metadata, err := ParseMetadata(clientCtx.Codec, args[0]) -// if err != nil { -// return err -// } -// -// from := clientCtx.GetFromAddress() -// -// content := types.NewRegisterCoinProposal(title, description, metadata) -// -// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) -// if err != nil { -// return err -// } -// -// //if err := msg.ValidateBasic(); err != nil { -// // return err -// //} -// -// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) -// }, -// } -// -// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") -// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") -// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") -// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { -// panic(err) -// } -// return cmd -//} -// -//// NewRegisterERC20ProposalCmd implements the command to submit a community-pool-spend proposal -//func NewRegisterERC20ProposalCmd() *cobra.Command { -// cmd := &cobra.Command{ -// Use: "register-erc20 [erc20-address]", -// Args: cobra.ExactArgs(1), -// Short: "Submit a proposal to register an ERC20 token", -// Long: "Submit a proposal to register an ERC20 token to the erc20 along with an initial deposit.", -// Example: fmt.Sprintf("$ %s tx gov submit-proposal register-erc20 --from=", version.AppName), -// RunE: func(cmd *cobra.Command, args []string) error { -// clientCtx, err := client.GetClientTxContext(cmd) -// if err != nil { -// return err -// } -// -// title, err := cmd.Flags().GetString(cli.FlagTitle) -// if err != nil { -// return err -// } -// -// description, err := cmd.Flags().GetString(cli.FlagDescription) -// if err != nil { -// return err -// } -// -// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) -// if err != nil { -// return err -// } -// -// deposit, err := sdk.ParseCoinsNormalized(depositStr) -// if err != nil { -// return err -// } -// -// erc20Addr := args[0] -// from := clientCtx.GetFromAddress() -// content := types.NewRegisterERC20Proposal(title, description, erc20Addr) -// -// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) -// if err != nil { -// return err -// } -// -// //if err := msg.ValidateBasic(); err != nil { -// // return err -// //} -// -// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) -// }, -// } -// -// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") -// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") -// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") -// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { -// panic(err) -// } -// return cmd -//} -// -//// NewToggleTokenConversionProposalCmd implements the command to submit a community-pool-spend proposal -//func NewToggleTokenConversionProposalCmd() *cobra.Command { -// cmd := &cobra.Command{ -// Use: "toggle-token-conversion [token]", -// Args: cobra.ExactArgs(1), -// Short: "Submit a toggle token conversion proposal", -// Long: "Submit a proposal to toggle the conversion of a token pair along with an initial deposit.", -// Example: fmt.Sprintf("$ %s tx gov submit-proposal toggle-token-conversion --from=", version.AppName), -// RunE: func(cmd *cobra.Command, args []string) error { -// clientCtx, err := client.GetClientTxContext(cmd) -// if err != nil { -// return err -// } -// -// title, err := cmd.Flags().GetString(cli.FlagTitle) -// if err != nil { -// return err -// } -// -// description, err := cmd.Flags().GetString(cli.FlagDescription) -// if err != nil { -// return err -// } -// -// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) -// if err != nil { -// return err -// } -// -// deposit, err := sdk.ParseCoinsNormalized(depositStr) -// if err != nil { -// return err -// } -// -// from := clientCtx.GetFromAddress() -// token := args[0] -// content := types.NewToggleTokenConversionProposal(title, description, token) -// -// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) -// if err != nil { -// return err -// } -// -// //if err := msg.ValidateBasic(); err != nil { -// // return err -// //} -// -// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) -// }, -// } -// -// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") -// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") -// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") -// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { -// panic(err) -// } -// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { -// panic(err) -// } -// return cmd -//} diff --git a/x/erc20/client/cli/utils.go b/x/erc20/client/cli/utils.go deleted file mode 100644 index f9f77de39..000000000 --- a/x/erc20/client/cli/utils.go +++ /dev/null @@ -1,25 +0,0 @@ -package cli - -import ( - "io/ioutil" - "path/filepath" - - "github.com/cosmos/cosmos-sdk/codec" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -// ParseRegisterCoinProposal reads and parses a ParseRegisterCoinProposal from a file. -func ParseMetadata(cdc codec.JSONCodec, metadataFile string) (banktypes.Metadata, error) { - metadata := banktypes.Metadata{} - - contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) - if err != nil { - return metadata, err - } - - if err = cdc.UnmarshalJSON(contents, &metadata); err != nil { - return metadata, err - } - - return metadata, nil -} diff --git a/x/erc20/module.go b/x/erc20/module.go index a0993fe85..0ff6065e3 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -16,9 +16,7 @@ import ( authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" "github.com/Canto-Network/Canto/v7/x/erc20/keeper" "github.com/Canto-Network/Canto/v7/x/erc20/types" ) @@ -77,16 +75,6 @@ func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *ru } } -// GetTxCmd returns the root tx command for the erc20 module. -func (AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.NewTxCmd() -} - -// GetQueryCmd returns no root query command for the erc20 module. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - type AppModule struct { AppModuleBasic keeper keeper.Keeper diff --git a/x/govshuttle/autocli.go b/x/govshuttle/autocli.go new file mode 100644 index 000000000..0de231179 --- /dev/null +++ b/x/govshuttle/autocli.go @@ -0,0 +1,27 @@ +package govshuttle + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + govshuttlev1 "github.com/Canto-Network/Canto/v7/api/canto/govshuttle/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: govshuttlev1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "shows the parameters of the module", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + EnhanceCustomCommand: false, + }, + } +} diff --git a/x/govshuttle/client/cli/query.go b/x/govshuttle/client/cli/query.go deleted file mode 100644 index d649d7fa3..000000000 --- a/x/govshuttle/client/cli/query.go +++ /dev/null @@ -1,31 +0,0 @@ -package cli - -import ( - "fmt" - // "strings" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - // "github.com/cosmos/cosmos-sdk/client/flags" - // sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd(queryRoute string) *cobra.Command { - // Group govshuttle queries under a subcommand - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdQueryParams()) - // this line is used by starport scaffolding # 1 - - return cmd -} diff --git a/x/govshuttle/client/cli/query_params.go b/x/govshuttle/client/cli/query_params.go deleted file mode 100644 index 9a02f25be..000000000 --- a/x/govshuttle/client/cli/query_params.go +++ /dev/null @@ -1,34 +0,0 @@ -package cli - -import ( - "context" - - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdQueryParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "shows the parameters of the module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/govshuttle/client/cli/tx.go b/x/govshuttle/client/cli/tx.go deleted file mode 100644 index e0db33d8c..000000000 --- a/x/govshuttle/client/cli/tx.go +++ /dev/null @@ -1,204 +0,0 @@ -package cli - -import ( - "fmt" - "time" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/gov/client/cli" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - errorsmod "cosmossdk.io/errors" - - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" -) - -var ( - DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds()) -) - -// NewTxCmd returns a root CLI command handler for certain modules/govshuttle transaction commands. -func NewTxCmd() *cobra.Command { - txCmd := &cobra.Command{ - Use: types.ModuleName, - Short: "govshuttle subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - txCmd.AddCommand() - return txCmd -} - -// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal -func NewLendingMarketProposalCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "lending-market [metadata]", - Args: cobra.ExactArgs(1), - Short: "Submit a lending market proposal", - Long: `Submit a proposal for the Canto Lending Market along with an initial deposit. -Upon passing, the -The proposal details must be supplied via a JSON file.`, - Example: fmt.Sprintf(`$ %s tx gov submit-proposal lending-market --from= --title= --description=<description> - -Where metadata.json contains (example): - -{ - "Account": ["address_1", "address_2"], - "PropId": 1, - "values": ["canto", "osmo"], - "calldatas: ["calldata1", "calldata2"], - "signatures": ["func1", "func2"] -}`, version.AppName, - ), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - propMetaData, err := ParseLendingMarketMetadata(clientCtx.Codec, args[0]) - if err != nil { - return errorsmod.Wrap(err, "Failure to parse JSON object") - } - - from := clientCtx.GetFromAddress() - - content := types.NewLendingMarketProposal(title, description, &propMetaData) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - //if err := msg.ValidateBasic(); err != nil { - // return err - //} - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "1aevmos", "deposit of proposal") - if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { - panic(err) - } - return cmd -} - -// Register TreasuryProposal submit cmd -func NewTreasuryProposalCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "treasury-proposal [metadata]", - Args: cobra.ExactArgs(1), - Short: "Submit a proposal to the Canto Treasury", - Long: `Submit a proposal for the Canto Treasury along with an initial deposit. -Upon passing, the -The proposal details must be supplied via a JSON file.`, - Example: fmt.Sprintf(`$ %s tx gov submit-proposal treasury-proposal <path/to/metadata.json> --from=<key_or_address> --title=<title> --description=<description> - -Where metadata.json contains (example): - -{ - "recipient": "0xfffffff...", - "PropID": 1, - "amount": 1, - "denom": "canto/note" -}`, version.AppName, - ), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - propMetaData, err := ParseTreasuryMetadata(clientCtx.Codec, args[0]) - if err != nil { - return errorsmod.Wrap(err, "Failure to parse JSON object") - } - - from := clientCtx.GetFromAddress() - - content := types.NewTreasuryProposal(title, description, &propMetaData) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - //if err := msg.ValidateBasic(); err != nil { - // return err - //} - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "1aevmos", "deposit of proposal") - if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { - panic(err) - } - if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { - panic(err) - } - return cmd -} diff --git a/x/govshuttle/client/cli/utils.go b/x/govshuttle/client/cli/utils.go deleted file mode 100644 index 91ec5835b..000000000 --- a/x/govshuttle/client/cli/utils.go +++ /dev/null @@ -1,55 +0,0 @@ -package cli - -import ( - "encoding/json" - "io/ioutil" - "path/filepath" - - "github.com/Canto-Network/Canto/v7/x/govshuttle/types" - "github.com/cosmos/cosmos-sdk/codec" -) - -// PARSING METADATA ACCORDING TO PROPOSAL STRUCT IN GOVTYPES TYPE IN govshuttle - -// ParseRegisterCoinProposal reads and parses a ParseRegisterCoinProposal from a file. -func ParseLendingMarketMetadata(cdc codec.JSONCodec, metadataFile string) (types.LendingMarketMetadata, error) { - propMetaData := types.LendingMarketMetadata{} - - contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) - if err != nil { - return propMetaData, err - } - - // if err = cdc.UnmarshalJSON(contents, &propMetaData); err != nil { - // return propMetaData, err - // } - - if err = json.Unmarshal(contents, &propMetaData); err != nil { - return types.LendingMarketMetadata{}, err - } - - propMetaData.PropId = 0 - - return propMetaData, nil -} - -func ParseTreasuryMetadata(cdc codec.JSONCodec, metadataFile string) (types.TreasuryProposalMetadata, error) { - propMetaData := types.TreasuryProposalMetadata{} - - contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) - if err != nil { - return propMetaData, err - } - - // if err = cdc.UnmarshalJSON(contents, &propMetaData); err != nil { - // return propMetaData, err - // } - - if err = json.Unmarshal(contents, &propMetaData); err != nil { - return types.TreasuryProposalMetadata{}, err - } - - propMetaData.PropID = 0 - - return propMetaData, nil -} diff --git a/x/govshuttle/module.go b/x/govshuttle/module.go index e99c0a24c..8402d8aba 100644 --- a/x/govshuttle/module.go +++ b/x/govshuttle/module.go @@ -8,11 +8,9 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" - "github.com/Canto-Network/Canto/v7/x/govshuttle/client/cli" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/client" @@ -82,16 +80,6 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r // this line is used by starport scaffolding # 2 } -// GetTxCmd returns the capability module's root tx command. -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.NewTxCmd() -} - -// GetQueryCmd returns the capability module's root query command. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd(types.StoreKey) -} - // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/inflation/autocli.go b/x/inflation/autocli.go new file mode 100644 index 000000000..fb42769ef --- /dev/null +++ b/x/inflation/autocli.go @@ -0,0 +1,52 @@ +package inflation + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + inflationv1 "github.com/Canto-Network/Canto/v7/api/canto/inflation/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: inflationv1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Period", + Use: "period", + Short: "Query the current inflation period", + }, + { + RpcMethod: "EpochMintProvision", + Use: "epoch-mint-provision", + Short: "Query the current inflation epoch provisions value", + }, + { + RpcMethod: "SkippedEpochs", + Use: "skipped-epochs", + Short: "Query the current number of skipped epochs", + }, + { + RpcMethod: "CirculatingSupply", + Use: "circulating-supply", + Short: "Query the current supply of tokens in circulation", + }, + { + RpcMethod: "InflationRate", + Use: "inflation-rate", + Short: "Query the inflation rate of the current period", + }, + { + RpcMethod: "Params", + Use: "params", + Short: "Query the current inflation parameters", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + EnhanceCustomCommand: false, + }, + } +} diff --git a/x/inflation/client/cli/query.go b/x/inflation/client/cli/query.go deleted file mode 100644 index 13fd81cbb..000000000 --- a/x/inflation/client/cli/query.go +++ /dev/null @@ -1,206 +0,0 @@ -package cli - -import ( - "context" - "fmt" - - "github.com/spf13/cobra" - - "github.com/Canto-Network/Canto/v7/x/inflation/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" -) - -// GetQueryCmd returns the cli query commands for the inflation module. -func GetQueryCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: "Querying commands for the inflation module", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - GetPeriod(), - GetEpochMintProvision(), - GetSkippedEpochs(), - GetCirculatingSupply(), - GetInflationRate(), - GetParams(), - ) - - return cmd -} - -// GetPeriod implements a command to return the current inflation -// period -func GetPeriod() *cobra.Command { - cmd := &cobra.Command{ - Use: "period", - Short: "Query the current inflation period", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryPeriodRequest{} - res, err := queryClient.Period(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintString(fmt.Sprintf("%v\n", res.Period)) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetEpochMintProvision implements a command to return the current inflation -// epoch provisions value. -func GetEpochMintProvision() *cobra.Command { - cmd := &cobra.Command{ - Use: "epoch-mint-provision", - Short: "Query the current inflation epoch provisions value", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryEpochMintProvisionRequest{} - res, err := queryClient.EpochMintProvision(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintString(fmt.Sprintf("%s\n", res.EpochMintProvision)) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetSkippedEpochs implements a command to return the current inflation -// period -func GetSkippedEpochs() *cobra.Command { - cmd := &cobra.Command{ - Use: "skipped-epochs", - Short: "Query the current number of skipped epochs", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QuerySkippedEpochsRequest{} - res, err := queryClient.SkippedEpochs(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintString(fmt.Sprintf("%v\n", res.SkippedEpochs)) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetCirculatingSupply implements a command to return the current circulating supply -func GetCirculatingSupply() *cobra.Command { - cmd := &cobra.Command{ - Use: "circulating-supply", - Short: "Query the current supply of tokens in circulation", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryCirculatingSupplyRequest{} - res, err := queryClient.CirculatingSupply(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintString(fmt.Sprintf("%s\n", res.CirculatingSupply)) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetInflationRate implements a command to return the inflation rate in % -func GetInflationRate() *cobra.Command { - cmd := &cobra.Command{ - Use: "inflation-rate", - Short: "Query the inflation rate of the current period", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryInflationRateRequest{} - res, err := queryClient.InflationRate(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintString(fmt.Sprintf("%s%%\n", res.InflationRate)) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -// GetParams implements a command to return the current inflation -// parameters. -func GetParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "Query the current inflation parameters", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryParamsRequest{} - res, err := queryClient.Params(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(&res.Params) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/inflation/module.go b/x/inflation/module.go index 8a1865c8f..bef6627d4 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -18,9 +18,7 @@ import ( stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - "github.com/Canto-Network/Canto/v7/x/inflation/client/cli" "github.com/Canto-Network/Canto/v7/x/inflation/keeper" "github.com/Canto-Network/Canto/v7/x/inflation/types" ) @@ -83,14 +81,6 @@ func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *ru } } -// GetTxCmd returns the root tx command for the inflation module. -func (AppModuleBasic) GetTxCmd() *cobra.Command { return nil } - -// GetQueryCmd returns no root query command for the inflation module. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - // ___________________________________________________________________________ // AppModule implements an application module for the inflation module. diff --git a/x/onboarding/autocli.go b/x/onboarding/autocli.go new file mode 100644 index 000000000..d44fc533a --- /dev/null +++ b/x/onboarding/autocli.go @@ -0,0 +1,27 @@ +package onboarding + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + + onboardingv1 "github.com/Canto-Network/Canto/v7/api/canto/onboarding/v1" +) + +// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: onboardingv1.Query_ServiceDesc.ServiceName, + EnhanceCustomCommand: false, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "Params", + Use: "params", + Short: "Gets onboarding params", + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + EnhanceCustomCommand: false, + }, + } +} diff --git a/x/onboarding/client/cli/query.go b/x/onboarding/client/cli/query.go deleted file mode 100644 index a5112adb2..000000000 --- a/x/onboarding/client/cli/query.go +++ /dev/null @@ -1,58 +0,0 @@ -package cli - -import ( - "context" - - "github.com/spf13/cobra" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - - "github.com/Canto-Network/Canto/v7/x/onboarding/types" -) - -// GetQueryCmd returns the parent command for all onboarding CLI query commands. -func GetQueryCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: "Querying commands for the onboarding module", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - GetParamsCmd(), - ) - return cmd -} - -// GetParamsCmd queries the module parameters -func GetParamsCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "Gets onboarding params", - Long: "Gets onboarding params", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, _ []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - req := &types.QueryParamsRequest{} - - res, err := queryClient.Params(context.Background(), req) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - return cmd -} diff --git a/x/onboarding/module.go b/x/onboarding/module.go index 0c7a29110..4db847368 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -9,7 +9,6 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -20,7 +19,6 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Canto-Network/Canto/v7/x/onboarding/client/cli" "github.com/Canto-Network/Canto/v7/x/onboarding/keeper" "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) @@ -80,14 +78,6 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *runt } } -// GetTxCmd returns the root tx command for the onboarding module. -func (AppModuleBasic) GetTxCmd() *cobra.Command { return nil } - -// GetQueryCmd returns no root query command for the onboarding module. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - type AppModule struct { AppModuleBasic keeper keeper.Keeper From aa940e92e70bc34cf85518527a0f4c50afcb5036 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Fri, 10 May 2024 13:30:00 +0900 Subject: [PATCH 83/96] chore: bump up ethermint --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 90faad56e..a9dda8ae3 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/cosmos/ibc-go/v8 v8.0.0 github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6 github.com/ethereum/go-ethereum v1.10.26 - github.com/evmos/ethermint v0.19.3 + github.com/evmos/ethermint v0.22.0 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 @@ -254,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 3c017b9a4..0ab01605d 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07 h1:malOQOeoVJivkP8rp6mB7CpErAgLv4i/HbgJtbe1z4Y= -github.com/b-harvest/ethermint v0.0.0-20240426083134-b156e23dfe07/go.mod h1:RCk8XMeT47RKxOAeaz35Gct1bYt9nNwrF+Uw913WM84= +github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927 h1:S6t+7hP138ag45KCxrUnKif/gMumkjr6LiiQVz6vCa4= +github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927/go.mod h1:rDpY5NJw21HOAkydMFeexE2jmvKtZXhP9ycsvGC42WA= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From c7865156f7b66bb50310e5fe86eadb60c6a7f7ba Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Fri, 10 May 2024 15:38:54 +0900 Subject: [PATCH 84/96] feat: Remove UpdateParams from govshuttle module --- api/canto/govshuttle/v1/tx.pulsar.go | 1161 ++----------------------- api/canto/govshuttle/v1/tx_grpc.pb.go | 45 +- proto/canto/govshuttle/v1/tx.proto | 30 +- x/govshuttle/keeper/msg_server.go | 17 - x/govshuttle/types/codec.go | 3 - x/govshuttle/types/tx.pb.go | 464 +--------- 6 files changed, 135 insertions(+), 1585 deletions(-) diff --git a/api/canto/govshuttle/v1/tx.pulsar.go b/api/canto/govshuttle/v1/tx.pulsar.go index 7dfe219af..bb72c9ba3 100644 --- a/api/canto/govshuttle/v1/tx.pulsar.go +++ b/api/canto/govshuttle/v1/tx.pulsar.go @@ -8,7 +8,6 @@ import ( _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -1983,861 +1982,6 @@ func (x *fastReflection_MsgTreasuryProposalResponse) ProtoMethods() *protoiface. } } -var ( - md_MsgUpdateParams protoreflect.MessageDescriptor - fd_MsgUpdateParams_authority protoreflect.FieldDescriptor - fd_MsgUpdateParams_params protoreflect.FieldDescriptor -) - -func init() { - file_canto_govshuttle_v1_tx_proto_init() - md_MsgUpdateParams = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgUpdateParams") - fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority") - fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params") -} - -var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil) - -type fastReflection_MsgUpdateParams MsgUpdateParams - -func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgUpdateParams)(x) -} - -func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message { - mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType -var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{} - -type fastReflection_MsgUpdateParams_messageType struct{} - -func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgUpdateParams)(nil) -} -func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message { - return new(fastReflection_MsgUpdateParams) -} -func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgUpdateParams -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor { - return md_MsgUpdateParams -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType { - return _fastReflection_MsgUpdateParams_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message { - return new(fastReflection_MsgUpdateParams) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage { - return (*MsgUpdateParams)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Authority != "" { - value := protoreflect.ValueOfString(x.Authority) - if !f(fd_MsgUpdateParams_authority, value) { - return - } - } - if x.Params != nil { - value := protoreflect.ValueOfMessage(x.Params.ProtoReflect()) - if !f(fd_MsgUpdateParams_params, value) { - return - } - } -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.authority": - return x.Authority != "" - case "canto.govshuttle.v1.MsgUpdateParams.params": - return x.Params != nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.authority": - x.Authority = "" - case "canto.govshuttle.v1.MsgUpdateParams.params": - x.Params = nil - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.authority": - value := x.Authority - return protoreflect.ValueOfString(value) - case "canto.govshuttle.v1.MsgUpdateParams.params": - value := x.Params - return protoreflect.ValueOfMessage(value.ProtoReflect()) - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.authority": - x.Authority = value.Interface().(string) - case "canto.govshuttle.v1.MsgUpdateParams.params": - x.Params = value.Message().Interface().(*Params) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.params": - if x.Params == nil { - x.Params = new(Params) - } - return protoreflect.ValueOfMessage(x.Params.ProtoReflect()) - case "canto.govshuttle.v1.MsgUpdateParams.authority": - panic(fmt.Errorf("field authority of message canto.govshuttle.v1.MsgUpdateParams is not mutable")) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - case "canto.govshuttle.v1.MsgUpdateParams.authority": - return protoreflect.ValueOfString("") - case "canto.govshuttle.v1.MsgUpdateParams.params": - m := new(Params) - return protoreflect.ValueOfMessage(m.ProtoReflect()) - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParams")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParams does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgUpdateParams", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_MsgUpdateParams) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgUpdateParams) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - l = len(x.Authority) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.Params != nil { - l = options.Size(x.Params) - n += 1 + l + runtime.Sov(uint64(l)) - } - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgUpdateParams) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if x.Params != nil { - encoded, err := options.Marshal(x.Params) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err - } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x12 - } - if len(x.Authority) > 0 { - i -= len(x.Authority) - copy(dAtA[i:], x.Authority) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority))) - i-- - dAtA[i] = 0xa - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgUpdateParams) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - x.Authority = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if postIndex > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if x.Params == nil { - x.Params = &Params{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - -var ( - md_MsgUpdateParamsResponse protoreflect.MessageDescriptor -) - -func init() { - file_canto_govshuttle_v1_tx_proto_init() - md_MsgUpdateParamsResponse = File_canto_govshuttle_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse") -} - -var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil) - -type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse - -func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message { - return (*fastReflection_MsgUpdateParamsResponse)(x) -} - -func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType -var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{} - -type fastReflection_MsgUpdateParamsResponse_messageType struct{} - -func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message { - return (*fastReflection_MsgUpdateParamsResponse)(nil) -} -func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message { - return new(fastReflection_MsgUpdateParamsResponse) -} -func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_MsgUpdateParamsResponse -} - -// Descriptor returns message descriptor, which contains only the protobuf -// type information for the message. -func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor { - return md_MsgUpdateParamsResponse -} - -// Type returns the message type, which encapsulates both Go and protobuf -// type information. If the Go type information is not needed, -// it is recommended that the message descriptor be used instead. -func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType { - return _fastReflection_MsgUpdateParamsResponse_messageType -} - -// New returns a newly allocated and mutable empty message. -func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message { - return new(fastReflection_MsgUpdateParamsResponse) -} - -// Interface unwraps the message reflection interface and -// returns the underlying ProtoMessage interface. -func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage { - return (*MsgUpdateParamsResponse)(x) -} - -// Range iterates over every populated field in an undefined order, -// calling f for each field descriptor and value encountered. -// Range returns immediately if f returns false. -// While iterating, mutating operations may only be performed -// on the current field descriptor. -func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { -} - -// Has reports whether a field is populated. -// -// Some fields have the property of nullability where it is possible to -// distinguish between the default value of a field and whether the field -// was explicitly populated with the default value. Singular message fields, -// member fields of a oneof, and proto2 scalar fields are nullable. Such -// fields are populated only if explicitly set. -// -// In other cases (aside from the nullable cases above), -// a proto3 scalar field is populated if it contains a non-zero value, and -// a repeated field is populated if it is non-empty. -func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool { - switch fd.FullName() { - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) - } -} - -// Clear clears the field such that a subsequent Has call reports false. -// -// Clearing an extension field clears both the extension type and value -// associated with the given field number. -// -// Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) { - switch fd.FullName() { - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) - } -} - -// Get retrieves the value for a field. -// -// For unpopulated scalars, it returns the default value, where -// the default value of a bytes scalar is guaranteed to be a copy. -// For unpopulated composite types, it returns an empty, read-only view -// of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { - switch descriptor.FullName() { - default: - if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName())) - } -} - -// Set stores the value for a field. -// -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType. -// When setting a composite type, it is unspecified whether the stored value -// aliases the source's memory in any way. If the composite value is an -// empty, read-only value, then it panics. -// -// Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { - switch fd.FullName() { - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) - } -} - -// Mutable returns a mutable reference to a composite type. -// -// If the field is unpopulated, it may allocate a composite value. -// For a field belonging to a oneof, it implicitly clears any other field -// that may be currently set within the same oneof. -// For extension fields, it implicitly stores the provided ExtensionType -// if not already stored. -// It panics if the field does not contain a composite type. -// -// Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) - } -} - -// NewField returns a new value that is assignable to the field -// for the given descriptor. For scalars, this returns the default value. -// For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { - switch fd.FullName() { - default: - if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: canto.govshuttle.v1.MsgUpdateParamsResponse")) - } - panic(fmt.Errorf("message canto.govshuttle.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName())) - } -} - -// WhichOneof reports which field within the oneof is populated, -// returning nil if none are populated. -// It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { - switch d.FullName() { - default: - panic(fmt.Errorf("%s is not a oneof field in canto.govshuttle.v1.MsgUpdateParamsResponse", d.FullName())) - } - panic("unreachable") -} - -// GetUnknown retrieves the entire list of unknown fields. -// The caller may only mutate the contents of the RawFields -// if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields { - return x.unknownFields -} - -// SetUnknown stores an entire list of unknown fields. -// The raw fields must be syntactically valid according to the wire format. -// An implementation may panic if this is not the case. -// Once stored, the caller must not mutate the content of the RawFields. -// An empty RawFields may be passed to clear the fields. -// -// SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) { - x.unknownFields = fields -} - -// IsValid reports whether the message is valid. -// -// An invalid message is an empty, read-only value. -// -// An invalid message often corresponds to a nil pointer of the concrete -// message type, but the details are implementation dependent. -// Validity is not part of the protobuf data model, and may not -// be preserved in marshaling or other operations. -func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool { - return x != nil -} - -// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. -// This method may return nil. -// -// The returned methods type is identical to -// "google.golang.org/protobuf/runtime/protoiface".Methods. -// Consult the protoiface package documentation for details. -func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods { - size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*MsgUpdateParamsResponse) - if x == nil { - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: 0, - } - } - options := runtime.SizeInputToOptions(input) - _ = options - var n int - var l int - _ = l - if x.unknownFields != nil { - n += len(x.unknownFields) - } - return protoiface.SizeOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Size: n, - } - } - - marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*MsgUpdateParamsResponse) - if x == nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - options := runtime.MarshalInputToOptions(input) - _ = options - size := options.Size(x) - dAtA := make([]byte, size) - i := len(dAtA) - _ = i - var l int - _ = l - if x.unknownFields != nil { - i -= len(x.unknownFields) - copy(dAtA[i:], x.unknownFields) - } - if input.Buf != nil { - input.Buf = append(input.Buf, dAtA...) - } else { - input.Buf = dAtA - } - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, nil - } - unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*MsgUpdateParamsResponse) - if x == nil { - return protoiface.UnmarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Flags: input.Flags, - }, nil - } - options := runtime.UnmarshalInputToOptions(input) - _ = options - dAtA := input.Buf - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow - } - if iNdEx >= l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - if (iNdEx + skippy) > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - if !options.DiscardUnknown { - x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - } - iNdEx += skippy - } - } - - if iNdEx > l { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF - } - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil - } - return &protoiface.Methods{ - NoUnkeyedLiterals: struct{}{}, - Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, - Size: size, - Marshal: marshal, - Unmarshal: unmarshal, - Merge: nil, - CheckInitialized: nil, - } -} - // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.27.0 @@ -3025,186 +2169,87 @@ func (*MsgTreasuryProposalResponse) Descriptor() ([]byte, []int) { return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{3} } -type MsgUpdateParams struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // authority is the address that controls the module (defaults to x/gov unless - // overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // params defines the x/erc20 parameters to update. - // - // NOTE: All parameters must be supplied. - Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"` -} - -func (x *MsgUpdateParams) Reset() { - *x = MsgUpdateParams{} - if protoimpl.UnsafeEnabled { - mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MsgUpdateParams) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MsgUpdateParams) ProtoMessage() {} - -// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead. -func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{4} -} - -func (x *MsgUpdateParams) GetAuthority() string { - if x != nil { - return x.Authority - } - return "" -} - -func (x *MsgUpdateParams) GetParams() *Params { - if x != nil { - return x.Params - } - return nil -} - -// MsgUpdateParamsResponse defines the response structure for executing a -// MsgUpdateParams message. -// -// Since: cosmos-sdk 0.47 -type MsgUpdateParamsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *MsgUpdateParamsResponse) Reset() { - *x = MsgUpdateParamsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_canto_govshuttle_v1_tx_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MsgUpdateParamsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MsgUpdateParamsResponse) ProtoMessage() {} - -// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead. -func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return file_canto_govshuttle_v1_tx_proto_rawDescGZIP(), []int{5} -} - var File_canto_govshuttle_v1_tx_proto protoreflect.FileDescriptor var file_canto_govshuttle_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x02, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, - 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x35, 0xe8, 0xa0, 0x1f, 0x00, 0x82, + 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, + 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x24, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x02, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x4c, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x35, 0xe8, 0xa0, 0x1f, + 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, + 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, 0x72, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, + 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, + 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x30, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, - 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x30, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, - 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x19, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, - 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, - 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, - 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, - 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdf, 0x02, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x62, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x15, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2d, - 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x35, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x10, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x2a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, - 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, - 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, - 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, - 0x74, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, - 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, - 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, - 0x6f, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xfb, 0x01, 0x0a, 0x03, 0x4d, + 0x73, 0x67, 0x12, 0x7d, 0x0a, 0x15, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x2d, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x35, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x73, 0x67, 0x4c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x6e, 0x0a, 0x10, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, + 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, + 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, + 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, + 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, + 0x65, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x31, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, + 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x2e, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, + 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x47, 0x6f, 0x76, + 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x47, 0x6f, 0x76, 0x73, 0x68, 0x75, 0x74, 0x74, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3219,33 +2264,27 @@ func file_canto_govshuttle_v1_tx_proto_rawDescGZIP() []byte { return file_canto_govshuttle_v1_tx_proto_rawDescData } -var file_canto_govshuttle_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_canto_govshuttle_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_canto_govshuttle_v1_tx_proto_goTypes = []interface{}{ (*MsgLendingMarketProposal)(nil), // 0: canto.govshuttle.v1.MsgLendingMarketProposal (*MsgLendingMarketProposalResponse)(nil), // 1: canto.govshuttle.v1.MsgLendingMarketProposalResponse (*MsgTreasuryProposal)(nil), // 2: canto.govshuttle.v1.MsgTreasuryProposal (*MsgTreasuryProposalResponse)(nil), // 3: canto.govshuttle.v1.MsgTreasuryProposalResponse - (*MsgUpdateParams)(nil), // 4: canto.govshuttle.v1.MsgUpdateParams - (*MsgUpdateParamsResponse)(nil), // 5: canto.govshuttle.v1.MsgUpdateParamsResponse - (*LendingMarketMetadata)(nil), // 6: canto.govshuttle.v1.LendingMarketMetadata - (*TreasuryProposalMetadata)(nil), // 7: canto.govshuttle.v1.TreasuryProposalMetadata - (*Params)(nil), // 8: canto.govshuttle.v1.Params + (*LendingMarketMetadata)(nil), // 4: canto.govshuttle.v1.LendingMarketMetadata + (*TreasuryProposalMetadata)(nil), // 5: canto.govshuttle.v1.TreasuryProposalMetadata } var file_canto_govshuttle_v1_tx_proto_depIdxs = []int32{ - 6, // 0: canto.govshuttle.v1.MsgLendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.LendingMarketMetadata - 7, // 1: canto.govshuttle.v1.MsgTreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata - 8, // 2: canto.govshuttle.v1.MsgUpdateParams.params:type_name -> canto.govshuttle.v1.Params - 4, // 3: canto.govshuttle.v1.Msg.UpdateParams:input_type -> canto.govshuttle.v1.MsgUpdateParams - 0, // 4: canto.govshuttle.v1.Msg.LendingMarketProposal:input_type -> canto.govshuttle.v1.MsgLendingMarketProposal - 2, // 5: canto.govshuttle.v1.Msg.TreasuryProposal:input_type -> canto.govshuttle.v1.MsgTreasuryProposal - 5, // 6: canto.govshuttle.v1.Msg.UpdateParams:output_type -> canto.govshuttle.v1.MsgUpdateParamsResponse - 1, // 7: canto.govshuttle.v1.Msg.LendingMarketProposal:output_type -> canto.govshuttle.v1.MsgLendingMarketProposalResponse - 3, // 8: canto.govshuttle.v1.Msg.TreasuryProposal:output_type -> canto.govshuttle.v1.MsgTreasuryProposalResponse - 6, // [6:9] is the sub-list for method output_type - 3, // [3:6] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 4, // 0: canto.govshuttle.v1.MsgLendingMarketProposal.metadata:type_name -> canto.govshuttle.v1.LendingMarketMetadata + 5, // 1: canto.govshuttle.v1.MsgTreasuryProposal.metadata:type_name -> canto.govshuttle.v1.TreasuryProposalMetadata + 0, // 2: canto.govshuttle.v1.Msg.LendingMarketProposal:input_type -> canto.govshuttle.v1.MsgLendingMarketProposal + 2, // 3: canto.govshuttle.v1.Msg.TreasuryProposal:input_type -> canto.govshuttle.v1.MsgTreasuryProposal + 1, // 4: canto.govshuttle.v1.Msg.LendingMarketProposal:output_type -> canto.govshuttle.v1.MsgLendingMarketProposalResponse + 3, // 5: canto.govshuttle.v1.Msg.TreasuryProposal:output_type -> canto.govshuttle.v1.MsgTreasuryProposalResponse + 4, // [4:6] is the sub-list for method output_type + 2, // [2:4] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_canto_govshuttle_v1_tx_proto_init() } @@ -3303,30 +2342,6 @@ func file_canto_govshuttle_v1_tx_proto_init() { return nil } } - file_canto_govshuttle_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgUpdateParams); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_canto_govshuttle_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MsgUpdateParamsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3334,7 +2349,7 @@ func file_canto_govshuttle_v1_tx_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_canto_govshuttle_v1_tx_proto_rawDesc, NumEnums: 0, - NumMessages: 6, + NumMessages: 4, NumExtensions: 0, NumServices: 1, }, diff --git a/api/canto/govshuttle/v1/tx_grpc.pb.go b/api/canto/govshuttle/v1/tx_grpc.pb.go index 5c8b0fdc4..90ed1a7f4 100644 --- a/api/canto/govshuttle/v1/tx_grpc.pb.go +++ b/api/canto/govshuttle/v1/tx_grpc.pb.go @@ -19,7 +19,6 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Msg_UpdateParams_FullMethodName = "/canto.govshuttle.v1.Msg/UpdateParams" Msg_LendingMarketProposal_FullMethodName = "/canto.govshuttle.v1.Msg/LendingMarketProposal" Msg_TreasuryProposal_FullMethodName = "/canto.govshuttle.v1.Msg/TreasuryProposal" ) @@ -28,9 +27,10 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type MsgClient interface { - // UpdateParams updates the parameters of the x/erc20 module. - UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // LendingMarketProposal append the lending market proposal of the + // x/govshuttle module. LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) + // TreasuryProposal append the treasury proposal of the x/govshuttle module. TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) } @@ -42,15 +42,6 @@ func NewMsgClient(cc grpc.ClientConnInterface) MsgClient { return &msgClient{cc} } -func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { - out := new(MsgUpdateParamsResponse) - err := c.cc.Invoke(ctx, Msg_UpdateParams_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) { out := new(MsgLendingMarketProposalResponse) err := c.cc.Invoke(ctx, Msg_LendingMarketProposal_FullMethodName, in, out, opts...) @@ -73,9 +64,10 @@ func (c *msgClient) TreasuryProposal(ctx context.Context, in *MsgTreasuryProposa // All implementations must embed UnimplementedMsgServer // for forward compatibility type MsgServer interface { - // UpdateParams updates the parameters of the x/erc20 module. - UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // LendingMarketProposal append the lending market proposal of the + // x/govshuttle module. LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) + // TreasuryProposal append the treasury proposal of the x/govshuttle module. TreasuryProposal(context.Context, *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) mustEmbedUnimplementedMsgServer() } @@ -84,9 +76,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") -} func (UnimplementedMsgServer) LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LendingMarketProposal not implemented") } @@ -106,24 +95,6 @@ func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer) { s.RegisterService(&Msg_ServiceDesc, srv) } -func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateParams) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateParams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Msg_UpdateParams_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_LendingMarketProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgLendingMarketProposal) if err := dec(in); err != nil { @@ -167,10 +138,6 @@ var Msg_ServiceDesc = grpc.ServiceDesc{ ServiceName: "canto.govshuttle.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "UpdateParams", - Handler: _Msg_UpdateParams_Handler, - }, { MethodName: "LendingMarketProposal", Handler: _Msg_LendingMarketProposal_Handler, diff --git a/proto/canto/govshuttle/v1/tx.proto b/proto/canto/govshuttle/v1/tx.proto index a9599b6d9..6b94267bd 100644 --- a/proto/canto/govshuttle/v1/tx.proto +++ b/proto/canto/govshuttle/v1/tx.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package canto.govshuttle.v1; -import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; @@ -14,12 +13,12 @@ option go_package = "github.com/Canto-Network/Canto/v7/x/govshuttle/types"; service Msg { option (cosmos.msg.v1.service) = true; - // UpdateParams updates the parameters of the x/erc20 module. - rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); - + // LendingMarketProposal append the lending market proposal of the + // x/govshuttle module. rpc LendingMarketProposal(MsgLendingMarketProposal) returns (MsgLendingMarketProposalResponse); + // TreasuryProposal append the treasury proposal of the x/govshuttle module. rpc TreasuryProposal(MsgTreasuryProposal) returns (MsgTreasuryProposalResponse); } @@ -60,25 +59,4 @@ message MsgTreasuryProposal { // NOTE: All parameters must be supplied. } -message MsgTreasuryProposalResponse {} - -message MsgUpdateParams { - option (cosmos.msg.v1.signer) = "authority"; - - // authority is the address that controls the module (defaults to x/gov unless - // overwritten). - string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - option (amino.name) = "canto/MsgUpdateParams"; - - // params defines the x/erc20 parameters to update. - // - // NOTE: All parameters must be supplied. - Params params = 2 - [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; -} - -// MsgUpdateParamsResponse defines the response structure for executing a -// MsgUpdateParams message. -// -// Since: cosmos-sdk 0.47 -message MsgUpdateParamsResponse {} \ No newline at end of file +message MsgTreasuryProposalResponse {} \ No newline at end of file diff --git a/x/govshuttle/keeper/msg_server.go b/x/govshuttle/keeper/msg_server.go index 2f9381089..d0eb7ca41 100644 --- a/x/govshuttle/keeper/msg_server.go +++ b/x/govshuttle/keeper/msg_server.go @@ -3,10 +3,8 @@ package keeper import ( "context" - errorsmod "cosmossdk.io/errors" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) type msgServer struct { @@ -21,21 +19,6 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { var _ types.MsgServer = msgServer{} -func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) (*types.MsgUpdateParamsResponse, error) { - if k.GetAuthority() != req.Authority { - return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", k.GetAuthority(), req.Authority) - } - - if err := req.Params.Validate(); err != nil { - return nil, err - } - - ctx := sdk.UnwrapSDKContext(goCtx) - k.SetParams(ctx, req.Params) - - return &types.MsgUpdateParamsResponse{}, nil -} - func (k Keeper) LendingMarketProposal(goCtx context.Context, req *types.MsgLendingMarketProposal) (*types.MsgLendingMarketProposalResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) legacyProposal := types.LendingMarketProposal{ diff --git a/x/govshuttle/types/codec.go b/x/govshuttle/types/codec.go index 139543121..4913b1f5c 100644 --- a/x/govshuttle/types/codec.go +++ b/x/govshuttle/types/codec.go @@ -44,7 +44,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { // this line is used by starport scaffolding # 3 registry.RegisterImplementations( (*sdk.Msg)(nil), - &MsgUpdateParams{}, &LendingMarketProposal{}, &TreasuryProposal{}, ) @@ -59,8 +58,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { } func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgUpdateParams{}, msgUpdateParams, nil) cdc.RegisterConcrete(&LendingMarketProposal{}, "canto/LendingMarketProposal", nil) cdc.RegisterConcrete(&TreasuryProposal{}, "canto/TreasuryProposal", nil) - cdc.RegisterConcrete(&Params{}, "canto/Params", nil) } diff --git a/x/govshuttle/types/tx.pb.go b/x/govshuttle/types/tx.pb.go index d6d9d8226..bca1a7b65 100644 --- a/x/govshuttle/types/tx.pb.go +++ b/x/govshuttle/types/tx.pb.go @@ -12,7 +12,6 @@ import ( _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -244,152 +243,47 @@ func (m *MsgTreasuryProposalResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgTreasuryProposalResponse proto.InternalMessageInfo -type MsgUpdateParams struct { - // authority is the address that controls the module (defaults to x/gov unless - // overwritten). - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - // params defines the x/erc20 parameters to update. - // - // NOTE: All parameters must be supplied. - Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` -} - -func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } -func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateParams) ProtoMessage() {} -func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_d69de145343701ce, []int{4} -} -func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateParams.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateParams) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateParams.Merge(m, src) -} -func (m *MsgUpdateParams) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateParams) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateParams.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateParams proto.InternalMessageInfo - -func (m *MsgUpdateParams) GetAuthority() string { - if m != nil { - return m.Authority - } - return "" -} - -func (m *MsgUpdateParams) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -// MsgUpdateParamsResponse defines the response structure for executing a -// MsgUpdateParams message. -// -// Since: cosmos-sdk 0.47 -type MsgUpdateParamsResponse struct { -} - -func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse{} } -func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateParamsResponse) ProtoMessage() {} -func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d69de145343701ce, []int{5} -} -func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateParamsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateParamsResponse.Merge(m, src) -} -func (m *MsgUpdateParamsResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateParamsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo - func init() { proto.RegisterType((*MsgLendingMarketProposal)(nil), "canto.govshuttle.v1.MsgLendingMarketProposal") proto.RegisterType((*MsgLendingMarketProposalResponse)(nil), "canto.govshuttle.v1.MsgLendingMarketProposalResponse") proto.RegisterType((*MsgTreasuryProposal)(nil), "canto.govshuttle.v1.MsgTreasuryProposal") proto.RegisterType((*MsgTreasuryProposalResponse)(nil), "canto.govshuttle.v1.MsgTreasuryProposalResponse") - proto.RegisterType((*MsgUpdateParams)(nil), "canto.govshuttle.v1.MsgUpdateParams") - proto.RegisterType((*MsgUpdateParamsResponse)(nil), "canto.govshuttle.v1.MsgUpdateParamsResponse") } func init() { proto.RegisterFile("canto/govshuttle/v1/tx.proto", fileDescriptor_d69de145343701ce) } var fileDescriptor_d69de145343701ce = []byte{ - // 574 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0x8d, 0xd3, 0xaf, 0xd5, 0x97, 0x09, 0x12, 0xe0, 0xa6, 0xaa, 0xe3, 0x16, 0x37, 0xb2, 0xba, - 0x88, 0x22, 0xe2, 0x69, 0x03, 0x05, 0xa9, 0x0b, 0x24, 0x82, 0x84, 0x84, 0x84, 0xab, 0x2a, 0xc0, - 0x86, 0x0d, 0x9a, 0xc4, 0xa3, 0x89, 0xd5, 0xd8, 0x63, 0xcd, 0x4c, 0x42, 0xb3, 0x40, 0x42, 0xdd, - 0xc1, 0x8a, 0x47, 0x60, 0xc9, 0x32, 0x12, 0x3c, 0x44, 0x97, 0x15, 0x2b, 0x56, 0x80, 0x92, 0x45, - 0x78, 0x0c, 0xe4, 0x9f, 0xfc, 0xd4, 0x99, 0x48, 0x85, 0x0d, 0x1b, 0x6b, 0xee, 0x3d, 0xe7, 0xde, - 0x7b, 0xee, 0xb1, 0x3d, 0x60, 0xbb, 0x85, 0x7c, 0x41, 0x21, 0xa1, 0x3d, 0xde, 0xee, 0x0a, 0xd1, - 0xc1, 0xb0, 0xb7, 0x0f, 0xc5, 0xa9, 0x15, 0x30, 0x2a, 0xa8, 0xba, 0x1e, 0xa1, 0xd6, 0x0c, 0xb5, - 0x7a, 0xfb, 0xfa, 0x36, 0xa1, 0x94, 0x74, 0x30, 0x44, 0x81, 0x0b, 0x91, 0xef, 0x53, 0x81, 0x84, - 0x4b, 0x7d, 0x1e, 0x97, 0xe8, 0x05, 0x42, 0x09, 0x8d, 0x8e, 0x30, 0x3c, 0x25, 0xd9, 0xcd, 0x16, - 0xe5, 0x1e, 0xe5, 0xd0, 0xe3, 0x24, 0x1c, 0xe0, 0x71, 0x92, 0x00, 0xc5, 0x18, 0x78, 0x15, 0x57, - 0xc4, 0x41, 0x02, 0xdd, 0x44, 0x9e, 0xeb, 0x53, 0x18, 0x3d, 0x93, 0xd4, 0xae, 0x4c, 0xed, 0x9c, - 0xba, 0x88, 0x65, 0xbe, 0xcb, 0x02, 0xcd, 0xe6, 0xe4, 0x29, 0xf6, 0x1d, 0xd7, 0x27, 0x36, 0x62, - 0x27, 0x58, 0x1c, 0x33, 0x1a, 0x50, 0x8e, 0x3a, 0xea, 0x3d, 0x90, 0x43, 0x5d, 0xd1, 0xa6, 0xcc, - 0x15, 0x7d, 0x4d, 0x29, 0x29, 0xe5, 0x5c, 0x5d, 0xfb, 0xfa, 0xa5, 0x5a, 0x48, 0x46, 0x3f, 0x74, - 0x1c, 0x86, 0x39, 0x7f, 0x26, 0x98, 0xeb, 0x93, 0xc6, 0x8c, 0xaa, 0x16, 0xc0, 0xaa, 0x70, 0x45, - 0x07, 0x6b, 0xd9, 0xb0, 0xa6, 0x11, 0x07, 0x6a, 0x09, 0xe4, 0x1d, 0xcc, 0x5b, 0xcc, 0x0d, 0x42, - 0x0f, 0xb4, 0x95, 0x08, 0x9b, 0x4f, 0xa9, 0x8f, 0xc1, 0xff, 0x1e, 0x16, 0xc8, 0x41, 0x02, 0x69, - 0xff, 0x95, 0x94, 0x72, 0xbe, 0x56, 0xb1, 0x24, 0xae, 0x5a, 0x97, 0xd4, 0xda, 0x49, 0x45, 0x63, - 0x5a, 0x7b, 0x78, 0xf0, 0xeb, 0xe3, 0x4e, 0xe6, 0x6c, 0x3c, 0xa8, 0xcc, 0x34, 0xbd, 0x1f, 0x0f, - 0x2a, 0x46, 0xec, 0xc8, 0xb2, 0x75, 0x4d, 0x13, 0x94, 0x96, 0x61, 0x0d, 0xcc, 0x03, 0xea, 0x73, - 0x6c, 0x9e, 0x65, 0xc1, 0xba, 0xcd, 0xc9, 0x73, 0x86, 0x11, 0xef, 0xb2, 0xfe, 0x3f, 0xb3, 0xea, - 0xc9, 0x82, 0x55, 0x55, 0xa9, 0x55, 0x69, 0xa1, 0x12, 0xb7, 0xf6, 0xe4, 0x6e, 0x15, 0xa7, 0x6e, - 0xa5, 0x7b, 0x98, 0xb7, 0xc0, 0x96, 0x24, 0x3d, 0xf5, 0xe8, 0xb3, 0x02, 0xae, 0xdb, 0x9c, 0xbc, - 0x08, 0x1c, 0x24, 0xf0, 0x31, 0x62, 0xc8, 0xe3, 0x7f, 0xed, 0xcf, 0x03, 0xb0, 0x16, 0x44, 0x1d, - 0x22, 0x83, 0xf2, 0xb5, 0x2d, 0xe9, 0x96, 0xf1, 0x90, 0x7a, 0xee, 0xfc, 0xfb, 0x4e, 0xe6, 0xd3, - 0x78, 0x50, 0x51, 0x1a, 0x49, 0xd5, 0x61, 0x79, 0x71, 0xb1, 0x8d, 0xe9, 0x62, 0xf3, 0x0a, 0xcd, - 0x22, 0xd8, 0x4c, 0xa5, 0x26, 0x0b, 0xd5, 0x7e, 0x64, 0xc1, 0x8a, 0xcd, 0x89, 0xda, 0x04, 0xd7, - 0x2e, 0x2d, 0xb5, 0x2b, 0x15, 0x93, 0xea, 0xa2, 0xdf, 0xbe, 0x0a, 0x6b, 0x32, 0x4b, 0x7d, 0x03, - 0x36, 0xe4, 0x3f, 0x63, 0x75, 0x59, 0x1b, 0x29, 0x5d, 0x3f, 0xf8, 0x23, 0xfa, 0x74, 0xbc, 0x0f, - 0x6e, 0x2c, 0x7c, 0xdb, 0xe5, 0x65, 0xad, 0xd2, 0x4c, 0x7d, 0xef, 0xaa, 0xcc, 0xc9, 0x3c, 0x7d, - 0xf5, 0x6d, 0xf8, 0xba, 0xea, 0x47, 0xe7, 0x43, 0x43, 0xb9, 0x18, 0x1a, 0xca, 0xcf, 0xa1, 0xa1, - 0x7c, 0x18, 0x19, 0x99, 0x8b, 0x91, 0x91, 0xf9, 0x36, 0x32, 0x32, 0x2f, 0xef, 0x12, 0x57, 0xb4, - 0xbb, 0x4d, 0xab, 0x45, 0x3d, 0xf8, 0x28, 0x6c, 0x5e, 0x3d, 0xc2, 0xe2, 0x35, 0x65, 0x27, 0x71, - 0x04, 0x7b, 0xf7, 0xe1, 0xe9, 0xfc, 0x25, 0x27, 0xfa, 0x01, 0xe6, 0xcd, 0xb5, 0xe8, 0x76, 0xbb, - 0xf3, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x38, 0x12, 0xbe, 0xe5, 0xb3, 0x05, 0x00, 0x00, + // 475 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x93, 0x31, 0x6f, 0xd3, 0x40, + 0x14, 0xc7, 0xe3, 0x94, 0x22, 0x7a, 0x5d, 0xc0, 0x0d, 0xc2, 0x35, 0x60, 0x22, 0x8b, 0x21, 0x8a, + 0x14, 0x5f, 0x5b, 0x28, 0x48, 0x6c, 0x14, 0x09, 0x09, 0x09, 0x57, 0x28, 0x30, 0xb1, 0xa0, 0x6b, + 0x7c, 0xba, 0x58, 0x8d, 0xfd, 0xac, 0x7b, 0x2f, 0xa1, 0x19, 0x90, 0x50, 0x37, 0x98, 0xf8, 0x08, + 0x7c, 0x84, 0x0c, 0x7c, 0x08, 0xc6, 0x8a, 0x89, 0x11, 0x25, 0x43, 0xf8, 0x0e, 0x2c, 0x28, 0xb6, + 0xd3, 0x84, 0xd4, 0x96, 0x60, 0x62, 0x89, 0x72, 0xef, 0xff, 0x7f, 0xef, 0xfd, 0xfd, 0xb3, 0x8f, + 0xdd, 0xea, 0x88, 0x98, 0x80, 0x2b, 0x18, 0x60, 0xb7, 0x4f, 0xd4, 0x93, 0x7c, 0xb0, 0xcb, 0xe9, + 0xc4, 0x4b, 0x34, 0x10, 0x98, 0x5b, 0xa9, 0xea, 0x2d, 0x54, 0x6f, 0xb0, 0x6b, 0xd7, 0x14, 0x28, + 0x48, 0x75, 0x3e, 0xfb, 0x97, 0x59, 0xed, 0x1b, 0x1d, 0xc0, 0x08, 0x90, 0x47, 0xa8, 0x66, 0x23, + 0x22, 0x54, 0xb9, 0xb0, 0x9d, 0x09, 0x6f, 0xb2, 0x8e, 0xec, 0x90, 0x4b, 0xd7, 0x44, 0x14, 0xc6, + 0xc0, 0xd3, 0xdf, 0xbc, 0x74, 0xb7, 0x28, 0xcf, 0xd2, 0xfe, 0xd4, 0xe5, 0x7e, 0xa8, 0x32, 0xcb, + 0x47, 0xf5, 0x5c, 0xc6, 0x41, 0x18, 0x2b, 0x5f, 0xe8, 0x63, 0x49, 0x2f, 0x34, 0x24, 0x80, 0xa2, + 0x67, 0x3e, 0x60, 0x1b, 0xa2, 0x4f, 0x5d, 0xd0, 0x21, 0x0d, 0x2d, 0xa3, 0x6e, 0x34, 0x36, 0x0e, + 0xac, 0x6f, 0x5f, 0x5a, 0xb5, 0x7c, 0xf5, 0xe3, 0x20, 0xd0, 0x12, 0xf1, 0x25, 0xe9, 0x30, 0x56, + 0xed, 0x85, 0xd5, 0xac, 0xb1, 0x75, 0x0a, 0xa9, 0x27, 0xad, 0xea, 0xac, 0xa7, 0x9d, 0x1d, 0xcc, + 0x3a, 0xdb, 0x0c, 0x24, 0x76, 0x74, 0x98, 0x50, 0x08, 0xb1, 0xb5, 0x96, 0x6a, 0xcb, 0x25, 0xf3, + 0x29, 0xbb, 0x12, 0x49, 0x12, 0x81, 0x20, 0x61, 0x5d, 0xaa, 0x1b, 0x8d, 0xcd, 0xbd, 0xa6, 0x57, + 0xc0, 0xcd, 0xfb, 0x23, 0xad, 0x9f, 0x77, 0xb4, 0xcf, 0x7b, 0x1f, 0xed, 0xff, 0xfc, 0x7c, 0xa7, + 0x72, 0x3a, 0x1d, 0x35, 0x17, 0x99, 0x3e, 0x4e, 0x47, 0x4d, 0x27, 0x23, 0x52, 0xf6, 0xb8, 0xae, + 0xcb, 0xea, 0x65, 0x5a, 0x5b, 0x62, 0x02, 0x31, 0x4a, 0xf7, 0xb4, 0xca, 0xb6, 0x7c, 0x54, 0xaf, + 0xb4, 0x14, 0xd8, 0xd7, 0xc3, 0xff, 0x86, 0xea, 0xd9, 0x05, 0x54, 0xad, 0x42, 0x54, 0xab, 0x41, + 0x0b, 0x68, 0xed, 0x14, 0xd3, 0xda, 0x3e, 0xa7, 0xb5, 0x3a, 0xc3, 0xbd, 0xcd, 0x6e, 0x16, 0x94, + 0xe7, 0x8c, 0xf6, 0x7e, 0x19, 0x6c, 0xcd, 0x47, 0x65, 0xbe, 0x63, 0xd7, 0x8b, 0xbf, 0xab, 0xe2, + 0xa8, 0x65, 0xec, 0xed, 0xfd, 0x7f, 0xb2, 0xcf, 0x63, 0x98, 0x31, 0xbb, 0x7a, 0xe1, 0x35, 0x35, + 0xca, 0x46, 0xad, 0x3a, 0xed, 0x9d, 0xbf, 0x75, 0xce, 0xf7, 0xd9, 0xeb, 0xef, 0xa7, 0xa3, 0xa6, + 0x71, 0x70, 0xf8, 0x75, 0xec, 0x18, 0x67, 0x63, 0xc7, 0xf8, 0x31, 0x76, 0x8c, 0x4f, 0x13, 0xa7, + 0x72, 0x36, 0x71, 0x2a, 0xdf, 0x27, 0x4e, 0xe5, 0xf5, 0x7d, 0x15, 0x52, 0xb7, 0x7f, 0xe4, 0x75, + 0x20, 0xe2, 0x4f, 0x66, 0xc3, 0x5b, 0x87, 0x92, 0xde, 0x82, 0x3e, 0xce, 0x4e, 0x7c, 0xf0, 0x90, + 0x9f, 0x2c, 0xdf, 0x57, 0x1a, 0x26, 0x12, 0x8f, 0x2e, 0xa7, 0x17, 0xf5, 0xde, 0xef, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x1a, 0xb8, 0x4f, 0xab, 0x60, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -404,9 +298,10 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // UpdateParams updates the parameters of the x/erc20 module. - UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // LendingMarketProposal append the lending market proposal of the + // x/govshuttle module. LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) + // TreasuryProposal append the treasury proposal of the x/govshuttle module. TreasuryProposal(ctx context.Context, in *MsgTreasuryProposal, opts ...grpc.CallOption) (*MsgTreasuryProposalResponse, error) } @@ -418,15 +313,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { - out := new(MsgUpdateParamsResponse) - err := c.cc.Invoke(ctx, "/canto.govshuttle.v1.Msg/UpdateParams", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) LendingMarketProposal(ctx context.Context, in *MsgLendingMarketProposal, opts ...grpc.CallOption) (*MsgLendingMarketProposalResponse, error) { out := new(MsgLendingMarketProposalResponse) err := c.cc.Invoke(ctx, "/canto.govshuttle.v1.Msg/LendingMarketProposal", in, out, opts...) @@ -447,9 +333,10 @@ func (c *msgClient) TreasuryProposal(ctx context.Context, in *MsgTreasuryProposa // MsgServer is the server API for Msg service. type MsgServer interface { - // UpdateParams updates the parameters of the x/erc20 module. - UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // LendingMarketProposal append the lending market proposal of the + // x/govshuttle module. LendingMarketProposal(context.Context, *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) + // TreasuryProposal append the treasury proposal of the x/govshuttle module. TreasuryProposal(context.Context, *MsgTreasuryProposal) (*MsgTreasuryProposalResponse, error) } @@ -457,9 +344,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") -} func (*UnimplementedMsgServer) LendingMarketProposal(ctx context.Context, req *MsgLendingMarketProposal) (*MsgLendingMarketProposalResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LendingMarketProposal not implemented") } @@ -471,24 +355,6 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateParams) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateParams(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/canto.govshuttle.v1.Msg/UpdateParams", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_LendingMarketProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgLendingMarketProposal) if err := dec(in); err != nil { @@ -529,10 +395,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "canto.govshuttle.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "UpdateParams", - Handler: _Msg_UpdateParams_Handler, - }, { MethodName: "LendingMarketProposal", Handler: _Msg_LendingMarketProposal_Handler, @@ -704,69 +566,6 @@ func (m *MsgTreasuryProposalResponse) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } -func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.Authority) > 0 { - i -= len(m.Authority) - copy(dAtA[i:], m.Authority) - i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -846,30 +645,6 @@ func (m *MsgTreasuryProposalResponse) Size() (n int) { return n } -func (m *MsgUpdateParams) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Authority) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = m.Params.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgUpdateParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1340,171 +1115,6 @@ func (m *MsgTreasuryProposalResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Authority = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From df065d9a64b4f95501ffba64ce06bdfe3bea27d4 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Fri, 10 May 2024 15:42:36 +0900 Subject: [PATCH 85/96] feat: Block all module addr to receive external tokens --- app/app.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/app.go b/app/app.go index ad4b7e5e5..84b2669f7 100644 --- a/app/app.go +++ b/app/app.go @@ -199,11 +199,6 @@ var ( onboardingtypes.ModuleName: {authtypes.Minter, authtypes.Burner}, coinswaptypes.ModuleName: {authtypes.Minter, authtypes.Burner}, } - - // module accounts that are allowed to receive tokens - allowedReceivingModAcc = map[string]bool{ - distrtypes.ModuleName: true, - } ) var ( @@ -1314,12 +1309,9 @@ func RegisterSwaggerAPI(_ client.Context, rtr *mux.Router, swaggerEnabled bool) func (app *Canto) BlockedAddrs() map[string]bool { blockedAddrs := make(map[string]bool) for acc := range maccPerms { - blockedAddrs[authtypes.NewModuleAddress(acc).String()] = !allowedReceivingModAcc[acc] + blockedAddrs[authtypes.NewModuleAddress(acc).String()] = true } - // allow the following addresses to receive funds - delete(blockedAddrs, authtypes.NewModuleAddress(govtypes.ModuleName).String()) - return blockedAddrs } From 02e21b119462a9ae4139988967aa7edc3810d66d Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Fri, 10 May 2024 16:59:09 +0900 Subject: [PATCH 86/96] feat: Bump up ibc-go v8.2.1feat: Add ibc-go upgrade handler codes --- app/app.go | 4 +++- app/upgrades/v8/upgrades.go | 24 ++++++++++++++++++++++-- go.mod | 2 +- go.sum | 4 ++-- ibc/testing/simapp/upgrades.go | 10 +++++++++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/app.go b/app/app.go index 84b2669f7..0f461d997 100644 --- a/app/app.go +++ b/app/app.go @@ -1390,7 +1390,9 @@ func (app *Canto) setupUpgradeHandlers() { app.ModuleManager, app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()), app.ConsensusParamsKeeper.ParamsStore, - app.configurator), + app.configurator, + app.IBCKeeper.ClientKeeper, + ), ) // When a planned update height is reached, the old binary will panic diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 20fbb4b5e..3ba3eebe7 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -10,20 +10,40 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + clientkeeper "github.com/cosmos/ibc-go/v8/modules/core/02-client/keeper" + "github.com/cosmos/ibc-go/v8/modules/core/exported" ) // CreateUpgradeHandler creates an SDK upgrade handler for v8 func CreateUpgradeHandler( mm *module.Manager, legacySubspace paramstypes.Subspace, - consensusParamsKeeper collections.Item[types.ConsensusParams], + consensusParamsStore collections.Item[types.ConsensusParams], configurator module.Configurator, + clientKeeper clientkeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { sdkCtx := sdk.UnwrapSDKContext(ctx) logger := sdkCtx.Logger().With("upgrade: ", UpgradeName) - if err := baseapp.MigrateParams(sdkCtx, legacySubspace, consensusParamsKeeper); err != nil { + // ibc-go vX -> v6 + // - skip + // - not implement an ICS27 controller module + // + // ibc-go v6 -> v7 + // - skip + // - pruning expired tendermint consensus states is optional + // + // ibc-go v7 -> v7.1 + // - apply + { + // explicitly update the IBC 02-client params, adding the localhost client type + params := clientKeeper.GetParams(sdkCtx) + params.AllowedClients = append(params.AllowedClients, exported.Localhost) + clientKeeper.SetParams(sdkCtx, params) + } + + if err := baseapp.MigrateParams(sdkCtx, legacySubspace, consensusParamsStore); err != nil { return vm, err } // Leave modules are as-is to avoid running InitGenesis. diff --git a/go.mod b/go.mod index a9dda8ae3..04cc873d0 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.4.12 github.com/cosmos/ibc-go/modules/capability v1.0.0 - github.com/cosmos/ibc-go/v8 v8.0.0 + github.com/cosmos/ibc-go/v8 v8.2.1 github.com/cosmos/rosetta v0.0.0-20231205133638-3bc76705a1c6 github.com/ethereum/go-ethereum v1.10.26 github.com/evmos/ethermint v0.22.0 diff --git a/go.sum b/go.sum index 0ab01605d..d075b7583 100644 --- a/go.sum +++ b/go.sum @@ -401,8 +401,8 @@ github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= -github.com/cosmos/ibc-go/v8 v8.0.0 h1:QKipnr/NGwc+9L7NZipURvmSIu+nw9jOIWTJuDBqOhg= -github.com/cosmos/ibc-go/v8 v8.0.0/go.mod h1:C6IiJom0F3cIQCD5fKwVPDrDK9j/xTu563AWuOmXois= +github.com/cosmos/ibc-go/v8 v8.2.1 h1:MTsnZZjxvGD4Fv5pYyx5UkELafSX0rlPt6IfsE2BpTQ= +github.com/cosmos/ibc-go/v8 v8.2.1/go.mod h1:wj3qx75iC/XNnsMqbPDCIGs0G6Y3E/lo3bdqCyoCy+8= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= diff --git a/ibc/testing/simapp/upgrades.go b/ibc/testing/simapp/upgrades.go index 81b4902da..58139ee62 100644 --- a/ibc/testing/simapp/upgrades.go +++ b/ibc/testing/simapp/upgrades.go @@ -55,7 +55,15 @@ func (app *SimApp) registerUpgradeHandlers() { app.UpgradeKeeper.SetUpgradeHandler( upgrades.V8, - upgrades.CreateV8UpgradeHandler( + upgrades.CreateDefaultUpgradeHandler( + app.ModuleManager, + app.configurator, + ), + ) + + app.UpgradeKeeper.SetUpgradeHandler( + upgrades.V8_1, + upgrades.CreateDefaultUpgradeHandler( app.ModuleManager, app.configurator, ), From 9ef58a03e7e77ac89477825e66ab739e346c6ccc Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Sun, 12 May 2024 22:19:05 +0900 Subject: [PATCH 87/96] chore: Remove unnecessary comments and fix ide warnings --- Makefile | 2 +- api/canto/csr/v1/tx.pulsar.go | 77 +- api/canto/erc20/v1/erc20.pulsar.go | 128 +- api/canto/erc20/v1/tx.pulsar.go | 317 +++-- api/canto/inflation/v1/tx.pulsar.go | 85 +- api/canto/onboarding/v1/tx.pulsar.go | 85 +- app/ante/handler_options.go | 1 + app/app.go | 7 +- app/export.go | 4 +- app/upgrades/v7/upgrades_test.go | 1 - app/upgrades/v8/upgrades.go | 1 + client/docs/statik/statik.go | 2 +- client/docs/swagger-ui/swagger.yaml | 1797 +++++++++++++++++++++--- proto/buf.yaml | 2 +- proto/canto/csr/v1/tx.proto | 1 - proto/canto/erc20/v1/erc20.proto | 3 +- proto/canto/erc20/v1/tx.proto | 3 +- proto/canto/inflation/v1/tx.proto | 1 - proto/canto/onboarding/v1/tx.proto | 1 - scripts/protoc-swagger-gen.sh | 4 +- x/coinswap/keeper/msg_server.go | 3 - x/coinswap/module.go | 5 - x/coinswap/spec/01_state.md | 6 +- x/coinswap/spec/02_messages.md | 8 +- x/csr/module.go | 5 - x/csr/types/tx.pb.go | 49 +- x/epochs/module.go | 4 - x/erc20/keeper/evm_hooks_test.go | 1 - x/erc20/keeper/integration_test.go | 4 - x/erc20/keeper/msg_server.go | 3 - x/erc20/keeper/msg_server_test.go | 1 - x/erc20/module.go | 5 - x/erc20/types/erc20.pb.go | 69 +- x/erc20/types/tx.pb.go | 112 +- x/govshuttle/keeper/keeper.go | 2 +- x/govshuttle/module.go | 5 - x/govshuttle/types/proposal.go | 2 - x/inflation/keeper/integration_test.go | 3 +- x/inflation/module.go | 5 - x/inflation/types/tx.pb.go | 50 +- x/onboarding/ibc_module_test.go | 2 +- x/onboarding/module.go | 5 - x/onboarding/types/tx.pb.go | 50 +- 43 files changed, 2151 insertions(+), 770 deletions(-) diff --git a/Makefile b/Makefile index d7f2b29e3..983459587 100755 --- a/Makefile +++ b/Makefile @@ -535,7 +535,7 @@ proto-update-deps: ## Importing of tendermint protobuf definitions currently requires the ## use of `sed` in order to build properly with cosmos-sdk's proto file layout ## (which is the standard Buf.build FILE_LAYOUT) -## Issue link: https://github.com/cometbft/cometbft/issues/5021 +## Issue link: https://github.com/tendermint/tendermint/issues/5021 @mkdir -p $(TM_ABCI_TYPES) @curl -sSL $(TM_URL)/abci/types.proto > $(TM_ABCI_TYPES)/types.proto diff --git a/api/canto/csr/v1/tx.pulsar.go b/api/canto/csr/v1/tx.pulsar.go index d5bfddd0c..237839890 100644 --- a/api/canto/csr/v1/tx.pulsar.go +++ b/api/canto/csr/v1/tx.pulsar.go @@ -8,7 +8,6 @@ import ( _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -968,45 +967,43 @@ var File_canto_csr_v1_tx_proto protoreflect.FileDescriptor var file_canto_csr_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, - 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, - 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x0f, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, - 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, - 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, - 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x62, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, 0x0a, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x2e, 0x63, - 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x92, 0x01, 0x0a, 0x10, 0x63, 0x6f, - 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x07, - 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, 0x73, 0x72, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x18, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, - 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x01, + 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x62, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x54, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, + 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, + 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x25, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x92, 0x01, 0x0a, 0x10, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x63, 0x73, 0x72, 0x2e, 0x76, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x23, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x63, 0x73, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x73, 0x72, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x43, + 0x73, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, + 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x43, 0x73, 0x72, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x43, 0x73, 0x72, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/canto/erc20/v1/erc20.pulsar.go b/api/canto/erc20/v1/erc20.pulsar.go index e71627489..510d57947 100644 --- a/api/canto/erc20/v1/erc20.pulsar.go +++ b/api/canto/erc20/v1/erc20.pulsar.go @@ -4,7 +4,6 @@ package erc20v1 import ( v1beta1 "cosmossdk.io/api/cosmos/bank/v1beta1" fmt "fmt" - _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -1714,7 +1713,7 @@ func (x *fastReflection_RegisterERC20Proposal) ProtoMethods() *protoiface.Method var ( md_ToggleTokenConversionProposal protoreflect.MessageDescriptor - fd_ToggleTokenConversionProposal_Title protoreflect.FieldDescriptor + fd_ToggleTokenConversionProposal_title protoreflect.FieldDescriptor fd_ToggleTokenConversionProposal_description protoreflect.FieldDescriptor fd_ToggleTokenConversionProposal_token protoreflect.FieldDescriptor ) @@ -1722,7 +1721,7 @@ var ( func init() { file_canto_erc20_v1_erc20_proto_init() md_ToggleTokenConversionProposal = File_canto_erc20_v1_erc20_proto.Messages().ByName("ToggleTokenConversionProposal") - fd_ToggleTokenConversionProposal_Title = md_ToggleTokenConversionProposal.Fields().ByName("Title") + fd_ToggleTokenConversionProposal_title = md_ToggleTokenConversionProposal.Fields().ByName("title") fd_ToggleTokenConversionProposal_description = md_ToggleTokenConversionProposal.Fields().ByName("description") fd_ToggleTokenConversionProposal_token = md_ToggleTokenConversionProposal.Fields().ByName("token") } @@ -1794,7 +1793,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Interface() protoreflect. func (x *fastReflection_ToggleTokenConversionProposal) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { if x.Title != "" { value := protoreflect.ValueOfString(x.Title) - if !f(fd_ToggleTokenConversionProposal_Title, value) { + if !f(fd_ToggleTokenConversionProposal_title, value) { return } } @@ -1825,7 +1824,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Range(f func(protoreflect // a repeated field is populated if it is non-empty. func (x *fastReflection_ToggleTokenConversionProposal) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + case "canto.erc20.v1.ToggleTokenConversionProposal.title": return x.Title != "" case "canto.erc20.v1.ToggleTokenConversionProposal.description": return x.Description != "" @@ -1847,7 +1846,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Has(fd protoreflect.Field // Clear is a mutating operation and unsafe for concurrent use. func (x *fastReflection_ToggleTokenConversionProposal) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + case "canto.erc20.v1.ToggleTokenConversionProposal.title": x.Title = "" case "canto.erc20.v1.ToggleTokenConversionProposal.description": x.Description = "" @@ -1869,7 +1868,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Clear(fd protoreflect.Fie // of the value; to obtain a mutable reference, use Mutable. func (x *fastReflection_ToggleTokenConversionProposal) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + case "canto.erc20.v1.ToggleTokenConversionProposal.title": value := x.Title return protoreflect.ValueOfString(value) case "canto.erc20.v1.ToggleTokenConversionProposal.description": @@ -1898,7 +1897,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Get(descriptor protorefle // Set is a mutating operation and unsafe for concurrent use. func (x *fastReflection_ToggleTokenConversionProposal) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + case "canto.erc20.v1.ToggleTokenConversionProposal.title": x.Title = value.Interface().(string) case "canto.erc20.v1.ToggleTokenConversionProposal.description": x.Description = value.Interface().(string) @@ -1924,8 +1923,8 @@ func (x *fastReflection_ToggleTokenConversionProposal) Set(fd protoreflect.Field // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_ToggleTokenConversionProposal) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": - panic(fmt.Errorf("field Title of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) + case "canto.erc20.v1.ToggleTokenConversionProposal.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) case "canto.erc20.v1.ToggleTokenConversionProposal.description": panic(fmt.Errorf("field description of message canto.erc20.v1.ToggleTokenConversionProposal is not mutable")) case "canto.erc20.v1.ToggleTokenConversionProposal.token": @@ -1943,7 +1942,7 @@ func (x *fastReflection_ToggleTokenConversionProposal) Mutable(fd protoreflect.F // For lists, maps, and messages, this returns a new, empty, mutable value. func (x *fastReflection_ToggleTokenConversionProposal) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "canto.erc20.v1.ToggleTokenConversionProposal.Title": + case "canto.erc20.v1.ToggleTokenConversionProposal.title": return protoreflect.ValueOfString("") case "canto.erc20.v1.ToggleTokenConversionProposal.description": return protoreflect.ValueOfString("") @@ -2518,7 +2517,7 @@ type ToggleTokenConversionProposal struct { unknownFields protoimpl.UnknownFields // title of the proposal - Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // proposal description Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` // token identifier can be either the hex contract address of the ERC20 or the @@ -2574,61 +2573,60 @@ var file_canto_erc20_v1_erc20_proto_rawDesc = []byte{ 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x01, - 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, - 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x3a, 0x04, - 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x7b, - 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, 0x22, 0x75, 0x0a, 0x1d, 0x54, - 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, + 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xa4, 0x01, 0x0a, 0x09, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x52, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, 0xc8, 0xde, 0x1f, + 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x06, 0x18, 0x01, 0xe8, + 0xa0, 0x1f, 0x00, 0x22, 0x7b, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, - 0x1f, 0x00, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x11, 0x4f, - 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, - 0x4c, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, - 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x04, 0x88, 0xa3, 0x1e, 0x00, 0x42, 0xa3, - 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, - 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, - 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, - 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, - 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, + 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, + 0x22, 0x75, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, + 0x06, 0x18, 0x01, 0xe8, 0xa0, 0x1f, 0x00, 0x2a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, + 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x57, 0x4e, 0x45, 0x52, + 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x57, 0x4e, + 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x04, 0x88, + 0xa3, 0x1e, 0x00, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x72, 0x63, 0x32, + 0x30, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, + 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/api/canto/erc20/v1/tx.pulsar.go b/api/canto/erc20/v1/tx.pulsar.go index aa9f51a63..7d1c0374a 100644 --- a/api/canto/erc20/v1/tx.pulsar.go +++ b/api/canto/erc20/v1/tx.pulsar.go @@ -10,7 +10,6 @@ import ( _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -4715,7 +4714,7 @@ func (x *fastReflection_MsgRegisterERC20Response) ProtoMethods() *protoiface.Met var ( md_MsgToggleTokenConversion protoreflect.MessageDescriptor fd_MsgToggleTokenConversion_authority protoreflect.FieldDescriptor - fd_MsgToggleTokenConversion_Title protoreflect.FieldDescriptor + fd_MsgToggleTokenConversion_title protoreflect.FieldDescriptor fd_MsgToggleTokenConversion_description protoreflect.FieldDescriptor fd_MsgToggleTokenConversion_token protoreflect.FieldDescriptor ) @@ -4724,7 +4723,7 @@ func init() { file_canto_erc20_v1_tx_proto_init() md_MsgToggleTokenConversion = File_canto_erc20_v1_tx_proto.Messages().ByName("MsgToggleTokenConversion") fd_MsgToggleTokenConversion_authority = md_MsgToggleTokenConversion.Fields().ByName("authority") - fd_MsgToggleTokenConversion_Title = md_MsgToggleTokenConversion.Fields().ByName("Title") + fd_MsgToggleTokenConversion_title = md_MsgToggleTokenConversion.Fields().ByName("title") fd_MsgToggleTokenConversion_description = md_MsgToggleTokenConversion.Fields().ByName("description") fd_MsgToggleTokenConversion_token = md_MsgToggleTokenConversion.Fields().ByName("token") } @@ -4802,7 +4801,7 @@ func (x *fastReflection_MsgToggleTokenConversion) Range(f func(protoreflect.Fiel } if x.Title != "" { value := protoreflect.ValueOfString(x.Title) - if !f(fd_MsgToggleTokenConversion_Title, value) { + if !f(fd_MsgToggleTokenConversion_title, value) { return } } @@ -4835,7 +4834,7 @@ func (x *fastReflection_MsgToggleTokenConversion) Has(fd protoreflect.FieldDescr switch fd.FullName() { case "canto.erc20.v1.MsgToggleTokenConversion.authority": return x.Authority != "" - case "canto.erc20.v1.MsgToggleTokenConversion.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.title": return x.Title != "" case "canto.erc20.v1.MsgToggleTokenConversion.description": return x.Description != "" @@ -4859,7 +4858,7 @@ func (x *fastReflection_MsgToggleTokenConversion) Clear(fd protoreflect.FieldDes switch fd.FullName() { case "canto.erc20.v1.MsgToggleTokenConversion.authority": x.Authority = "" - case "canto.erc20.v1.MsgToggleTokenConversion.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.title": x.Title = "" case "canto.erc20.v1.MsgToggleTokenConversion.description": x.Description = "" @@ -4884,7 +4883,7 @@ func (x *fastReflection_MsgToggleTokenConversion) Get(descriptor protoreflect.Fi case "canto.erc20.v1.MsgToggleTokenConversion.authority": value := x.Authority return protoreflect.ValueOfString(value) - case "canto.erc20.v1.MsgToggleTokenConversion.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.title": value := x.Title return protoreflect.ValueOfString(value) case "canto.erc20.v1.MsgToggleTokenConversion.description": @@ -4915,7 +4914,7 @@ func (x *fastReflection_MsgToggleTokenConversion) Set(fd protoreflect.FieldDescr switch fd.FullName() { case "canto.erc20.v1.MsgToggleTokenConversion.authority": x.Authority = value.Interface().(string) - case "canto.erc20.v1.MsgToggleTokenConversion.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.title": x.Title = value.Interface().(string) case "canto.erc20.v1.MsgToggleTokenConversion.description": x.Description = value.Interface().(string) @@ -4943,8 +4942,8 @@ func (x *fastReflection_MsgToggleTokenConversion) Mutable(fd protoreflect.FieldD switch fd.FullName() { case "canto.erc20.v1.MsgToggleTokenConversion.authority": panic(fmt.Errorf("field authority of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) - case "canto.erc20.v1.MsgToggleTokenConversion.Title": - panic(fmt.Errorf("field Title of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) + case "canto.erc20.v1.MsgToggleTokenConversion.title": + panic(fmt.Errorf("field title of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) case "canto.erc20.v1.MsgToggleTokenConversion.description": panic(fmt.Errorf("field description of message canto.erc20.v1.MsgToggleTokenConversion is not mutable")) case "canto.erc20.v1.MsgToggleTokenConversion.token": @@ -4964,7 +4963,7 @@ func (x *fastReflection_MsgToggleTokenConversion) NewField(fd protoreflect.Field switch fd.FullName() { case "canto.erc20.v1.MsgToggleTokenConversion.authority": return protoreflect.ValueOfString("") - case "canto.erc20.v1.MsgToggleTokenConversion.Title": + case "canto.erc20.v1.MsgToggleTokenConversion.title": return protoreflect.ValueOfString("") case "canto.erc20.v1.MsgToggleTokenConversion.description": return protoreflect.ValueOfString("") @@ -6141,7 +6140,7 @@ type MsgToggleTokenConversion struct { // overwritten). Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // title of the proposal - Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` // proposal description Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // token identifier can be either the hex contract address of the ERC20 or the @@ -6228,157 +6227,155 @@ var File_canto_erc20_v1_tx_proto protoreflect.FileDescriptor var file_canto_erc20_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x04, - 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x24, - 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x14, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd1, - 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xc8, - 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, - 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x1a, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, - 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9f, 0x01, 0x0a, 0x0e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, + 0x2a, 0x14, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x43, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x3a, 0x1a, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xae, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0f, + 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x3a, 0x2c, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, - 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x0f, 0x4d, 0x73, - 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x36, 0x0a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x6e, 0x6b, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x04, - 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2c, - 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x19, 0x0a, 0x17, - 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x10, 0x4d, 0x73, 0x67, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x36, 0x0a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x3a, 0x2d, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, - 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x22, - 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x18, - 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, - 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x35, - 0xe8, 0xa0, 0x1f, 0x01, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, - 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, - 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdb, 0x04, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x12, 0x55, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x14, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, - 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x19, + 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x10, 0x4d, 0x73, + 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x36, + 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, + 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x3a, 0x2d, 0xe8, 0xa0, 0x1f, 0x00, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x16, 0x63, 0x61, 0x6e, 0x74, 0x6f, + 0x2f, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x22, 0x1a, 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, + 0x0a, 0x18, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, + 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x3a, 0x35, 0xe8, 0xa0, 0x1f, 0x01, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x1e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, + 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x20, 0x4d, 0x73, 0x67, 0x54, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xdb, 0x04, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x12, 0x55, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x69, 0x6e, 0x1a, 0x26, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x43, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x27, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, + 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, + 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x1a, 0x27, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x63, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x30, - 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x42, 0x07, - 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, 0x6f, - 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, 0x6e, 0x74, - 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, - 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x1a, 0x28, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7b, 0x0a, 0x1d, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x76, 0x31, + 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x61, 0x6e, + 0x74, 0x6f, 0x2e, 0x45, 0x72, 0x63, 0x32, 0x30, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x43, 0x61, + 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x45, 0x72, 0x63, 0x32, 0x30, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x61, 0x6e, 0x74, + 0x6f, 0x3a, 0x3a, 0x45, 0x72, 0x63, 0x32, 0x30, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/canto/inflation/v1/tx.pulsar.go b/api/canto/inflation/v1/tx.pulsar.go index 54c2c0e5e..fef2a0776 100644 --- a/api/canto/inflation/v1/tx.pulsar.go +++ b/api/canto/inflation/v1/tx.pulsar.go @@ -8,7 +8,6 @@ import ( _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -969,49 +968,47 @@ var file_canto_inflation_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, - 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, - 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, - 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, - 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x6e, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, - 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xbc, - 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, 0x43, 0x61, - 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, - 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, - 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, + 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, + 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xb2, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x15, + 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x32, 0x6e, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x60, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, + 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x2b, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, + 0x42, 0xbc, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x69, + 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, + 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x69, + 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x66, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x49, 0x58, 0xaa, 0x02, 0x12, + 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x12, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x49, 0x6e, 0x66, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1e, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, + 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x14, 0x43, 0x61, 0x6e, 0x74, 0x6f, + 0x3a, 0x3a, 0x49, 0x6e, 0x66, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/canto/onboarding/v1/tx.pulsar.go b/api/canto/onboarding/v1/tx.pulsar.go index 3fc152f7b..ca5e73311 100644 --- a/api/canto/onboarding/v1/tx.pulsar.go +++ b/api/canto/onboarding/v1/tx.pulsar.go @@ -8,7 +8,6 @@ import ( _ "github.com/cosmos/cosmos-proto" runtime "github.com/cosmos/cosmos-proto/runtime" _ "github.com/cosmos/gogoproto/gogoproto" - _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -969,50 +968,48 @@ var file_canto_onboarding_v1_tx_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, - 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, - 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, + 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, + 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x21, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x3e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, + 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, + 0x28, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, + 0xe7, 0xb0, 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x70, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x62, 0x0a, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, + 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x1a, 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, + 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x28, 0x82, - 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, - 0x2a, 0x15, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x32, 0x70, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x62, 0x0a, 0x0c, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x61, 0x6e, 0x74, - 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, - 0x2c, 0x2e, 0x63, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, - 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0xc3, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6e, - 0x74, 0x6f, 0x2e, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x61, - 0x6e, 0x74, 0x6f, 0x2f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x76, - 0x31, 0x3b, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x43, 0x4f, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x4f, 0x6e, 0x62, - 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6e, - 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, - 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x4f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x43, 0x4f, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x2e, 0x4f, + 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, + 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x5c, 0x4f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6e, 0x74, 0x6f, 0x3a, 0x3a, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 4215347fd..f71b53ca7 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -56,6 +56,7 @@ func (options HandlerOptions) Validate() error { return nil } +// newCosmosAnteHandler creates the default ante handler for Ethereum transactions func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return sdk.ChainAnteDecorators( ethante.NewEthSetUpContextDecorator(options.EvmKeeper), // outermost AnteDecorator. SetUpContext must be called first diff --git a/app/app.go b/app/app.go index 0f461d997..b83c728a0 100644 --- a/app/app.go +++ b/app/app.go @@ -1327,8 +1327,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(slashingtypes.ModuleName) paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) paramsKeeper.Subspace(crisistypes.ModuleName) - //paramsKeeper.Subspace(ibctransfertypes.ModuleName) - //paramsKeeper.Subspace(ibcexported.ModuleName) // ethermint subspaces paramsKeeper.Subspace(evmtypes.ModuleName) paramsKeeper.Subspace(feemarkettypes.ModuleName) @@ -1354,11 +1352,13 @@ func (app *Canto) setupUpgradeHandlers() { v2.UpgradeName, v2.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) + // v3 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v3.UpgradeName, v3.CreateUpgradeHandler(app.ModuleManager, app.configurator), ) + // v4 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v4.UpgradeName, @@ -1476,7 +1476,4 @@ func setupLegacyKeyTables(k *paramskeeper.Keeper) { subspace.WithKeyTable(keyTable) } } - // sdk 47 - //k.Subspace(baseapp.Paramspace). - // WithKeyTable(paramstypes.ConsensusParamsKeyTable()) } diff --git a/app/export.go b/app/export.go index 9aebd281b..b8408023b 100644 --- a/app/export.go +++ b/app/export.go @@ -77,9 +77,7 @@ func (app *Canto) ExportAppStateAndValidators( } // prepare for fresh start at zero height -// NOTE zero height genesis is a temporary feature which will be deprecated -// -// in favor of export at a block height +// NOTE: zero height genesis is a temporary feature which will be deprecated in favor of export at a block height func (app *Canto) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) error { applyAllowedAddrs := false diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index e7217ac7d..75c70f859 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -31,7 +31,6 @@ type UpgradeTestSuite struct { } func (s *UpgradeTestSuite) SetupTest() { - // consensus key priv, err := ethsecp256k1.GenerateKey() s.Require().NoError(err) diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 3ba3eebe7..7c3d73264 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -46,6 +46,7 @@ func CreateUpgradeHandler( if err := baseapp.MigrateParams(sdkCtx, legacySubspace, consensusParamsStore); err != nil { return vm, err } + // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") return mm.RunMigrations(ctx, configurator, vm) diff --git a/client/docs/statik/statik.go b/client/docs/statik/statik.go index d40b7c8e4..6dd4112ff 100644 --- a/client/docs/statik/statik.go +++ b/client/docs/statik/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04<IDATx\x01\xbdW\x03\xcceY\x0c~k\xdb\xb6m\xc4^\xc7^\xdb\xb6=F\xf0\xdb\xb6m\xdb\xb6m\xf3\xa2\xd3o\xf2\xce3\x7f5i\xeea\xdb[\x1f\x8d\xa3\xa0\xaa\xea\xa9\xb2\xb2\xf9\xa4\xacH?\xf27B\x92\xd7\xabx<\x02\x94\xe4\x8d\x1a\xfeFa\x0fgpV\xb3S\xa0\xa8\xf2\x85L\xf8{E\x91\xfa\x88Tr\x04p\x96\x05\xf9\x91\xef^l\x8f\xbe\x9d?\x96\xdef\"S\x820\xaf\xd1\xf0t\x03\x95\xb4zRb\xe5\xcf\x14^\xf4!\x90\xc7?Qq\xab\x07\xef\xd5\x13\xce\x08\xc0]\xa6\xf1.h9\xc9\\\xb9\x98\xff N\x10[\xdf\\\xa6\xbc\xa6\xe3\xf4o\xc4\xdd\xf4\x99\xa7\xc6&\xfe\x13q\x17\xe56\x1e\xe3;K:\xa1Y\x88\x04\xd0t\x94\xf9\xd5|\xa1A\\\xae\xea\n\xa1_\x82\xaf\x01q\xa7\xf0\x97\xa0\xab\xa9\xb23\x084\x84Y\x9a\x98\xf6\xb5v\xff\\0g\xc7\xa2\x90\xfc\xb7Al[\x18\x9c\xff&\xb1\xc3\x1a\x08\xa1^l\xcb\xe6q\x82\xb9G\xc6+ \xb0#\xe8\x9e\xf6\xa2\xa1\x10 \x16}\x02\x0e\x07u\x01C\xf2\xdf\xc2\xc5\x1d\xc5\xa0\xbc7H\xd0\x87c\x9a\xaa\xfeB\xf6\xd8 b\xa8\xea\n6\xba\xf8\xb5\xcf9T\xd1\x11@\xab\xebs44Uk\x97\xd1\xe0T\x0d\xadn\xcc\xc3\xfe\xf4\xb5\xef\xb9F{\x15\x9d\x01\xba\xe80\nQ\xc4\xb9\xf0vS\x87\x8b.\xfd\x82\x00\xe3sm\x94\xddp\xc8\xae\x00\xd9\xf5\x07il\xb6\x85\x00\xb1e_\x1b\xed\xfd\x1ct\x95.:\x90\xb4t\xb6g\xbb\xf4`1\x8f\xc3\xc7\x94 \xa2\x00\xb0?\xfa!\x87\xd5\xfd_\xd4}\x04\xa8\xed\x890\xdb\xcbi8\xa2\xf5\x05\xb9\xef\xa4/ u\x8a\x90C\x0c\x9b^h\x19L!\xc0\xef\xa179,\x00\xb4\x08h\x1dL3\xdb\xfb;\xfc\x0e]h2\xef\xa75P\x05&\xc8b8`.@\x1a\x01~\x0b\xb9\xdea\x01~\x0c\xbc\x1cL\xa8u(\xdd\xd2>|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4<B\x8b\xab\x13\xa0\x81\xd0\xb4.\x00\xab\xd8\xaa \xf6\xc7<\xac5A \xe6\xf4\x05\xab\xf7k#\x13\x9c 42\xc1\x17:\x13\xe4\xc3\x04\x10\xde\xae \"0)\xb6\xe6\x84\x13\xc2 \xcfr\xda \xfb'+-;a\x8bpB)fw\xc20\xc0f\x18\"]\x0b\x01\x10\x86\x92A\"\xbas\x0f\x12\xd1\xed\x06\x89HzZ\x9b\x8a\xe5>,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\x9cT]k\xdc:\x10}\xdf_1Q\x1e\x92\\\"\xfb&\x81p\xf1\xb5\xfd\x90\xa6\xa5\x81\x94\x06\x92}(\xa5\x14\xd9\x1a{\xa7\x91\xa5E\x92\xf7#!\xff\xbdX\xf6\xae\xb7\xdd\x90BYX\x8f\xe7\x9c9\x1a\x1d\x8d\x9c\x1ep\x0e\x1f\x1f>\xddBe,8/<\x95 \xc9yKE\xeb\xc9h(Z-\x15B\xd1\x92\x92\xc0y>I\x0f\xae?\xbf{\xf8r\xf7\x1ef\xbeQ\xf9$\xed\x1e\xa0\x84\xae3\x86\x9a\xe5\x13\x80t\x86Bv\x01@\xda\xa0\x17P\xce\x84u\xe836}\xf8\xc0\xffc\x03\xe4\xc9+\xcc\xef\x97\xa2\xae\xd1\xc2\xf4&\x8d\xfbL\x8f*\xd2\x8f`Qe\xcc\xf9\xb5B7C\xf4\x0c\xfcz\x8e\x19\xf3\xb8\xf2q\xe9\x1c\x83\x99\xc5*c\xae\xd7\xe0-E!\xbb'A\xa5\xd1\x9bbjD\x8d\xf1\\\xd7\x9b\xeaJ,:\x9c_\x9c\xaf.\xce\xa3\x008zB\x97\xb1\x90a\x10\xff\x9d\xde\xd9\xe5\xea\xec\xf2\x17\xbd\x90\x19\xf5\xc2\xc6\xfa\x18\x82\x9bC\xf8<<\x01\n\xb3\xe2\x8e\x9eH\xd7 \x14\xc6J\xb4\xbc0\xab\xff\xb7\xb8Y\xa0\xad\x94Y&\xc0\x1b\xf3\xc4]i\x8dR\x85\xb0\x8e/\xd0z*\x85\xda\xe7\xf2u\x02=q\x83\xbdL\x86\xe0\x9f\xd3M\x90\x14X\x19\x8b\xe3\xbb\xa8<\xda7\xfb#=CK~O\xb40r\xbdW\xd8\x08[\x93N\xfe\x1d\xdb+D\xf9X[\xd3j\x99\xc0a%\xba\xdf(\xd5\xfd\xa7\xf1\xd6\xaf4\xee'\xac\x0b;\xf9\xc1OI\x0b \xb9;\x0e,OcI\x8b|2\x18^Z\x9a{p\xb6\xdc%\xf1~\xc6\xa3\x1f\x8e\xe5\xdd*\x81\x94\xbfY\xe1\xbc\xd0R(\xa3\x91\xcf-:\xf4o\x14\xf7/K\xd2\xd2,#\xa3\x95\x11\x122\xa8Z]v\x17\xec\xf8\x04\x9e7N\xc51\\\x85{&\xc0\xad\x9d\xc7f\xc8\x97F;\x0f-A\x06\xc3m\x99\xde\\\x85\x9e\x8fGG[\xab\x12`Q<t\x19\xadE\xa3\xd8\xe9\x16\x96\xa6\xf9N2\x81\xa3\xc3q\x1bG;0\xe2\xfc\x96\xf4c8Io[\x1c\xa1~\x83.\x81\xaf\xdb\x14\xfc\xdeG4\x90\"1'w\xfa\x1a\xef~\xeb\xd8]\xa0n9\xdfvVRmM\xfaO+\xf5\xa4\xe8\xda,\x83\x97S\xab^\xd3RbmZ\x9f\x00\x1b\x17\xbe\x0d)\xb6\x19\xaa\x93\x8d\xed\xc3\xd1\x04\x7f[\n\xc9\x970d\xe3\xf9\xa5q?fi\xdc\x7f\xf4~\x06\x00\x00\xff\xffPK\x07\x08\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8\xc4VMo\xe36\x10\xbd\xfbW\xbc\xf0\x10I\xb0\xab\xa0=*Q\x82\"\xd8C\nl\xb7\xd8 \xbd\x04\xc1\x82\xa6\xc66\x1b\x99\x94I\xca\x86k\xfb\xbf\x17\x94eK\xb2e\xd4=u\x0e\x968\x9cy\x9a\x8f7\xa4\x1fn2-\xdc\xba \xcc\xdc<\x7f\x1c<\xf8\x07r\xae\xa6)#\xf5\xd3\xdb+{\x1c<\x8cu\xb6\x86V\xb9\xe6Y\xcaL\xa9\xc2\xc8k\xef\xbc\xda?kO+\x8c,\xdc\xe3\x00\x00\x82\xd2\x12\xac3R\xb8\xe0\xbe\xd2LJ%\x9c\xd4\n\xa6T\x08#l*\xad\x97%7\xd0\xbct\xb3_\x90b%U\xa6W\xb1.H\x91\x89\xed\x8aO\xa7d\xde^\xbeS&\x0d \xf7\xad\xb2\xbb\xef\xf8ZR\xee\xd5qGHk\x9c\xd8\xfae\xd7\xca\xd4\x08o&o\xecZ\xca\xae\xb5\xb4\x7f\xf2\\f#,\x8a\x11\xb81\xf7\x83\xe3\xb6\x9c \xbc\x13:\xa3\xad\xd3\x9f\xa4\xb6d\x8c6w\xb1#\xeb\xc2:\xfa\\\x0b\xees\x8dg\xdc\xce\xa2v\xae^\x16E\x93g\xc72\xb6\xe5\xd8\xd7LM\xc3\x9f\xa3&\x9e\x1d(\xb7\xd4\x07r\xf4\xb6\xc4\x8d\xb8\xe8\xdf\xc4\xce\x8dA\x8aE\x11\xdb\"\x97.d\xb7,j\xef\xc5\x13m\xbep1\x0b\x8f\xcd\n\x97#9\xfa\xc1\x8d\x89\xb0\x81\x7f\xbe\xcb\x0f\xa4\x08X\x80!\x96\xb1\xa1\"\xe7\x82\xc2 \x0dF\x08X\xc2\x82\x08C\xbf{\xbfk\x80\xabP\x17\x05\x9e\xf0\xdb\xeb\xb7\xdf\xe3\x82\x1bKa\xb0\xf1\x08\xfe\x9b\x7fi\xa9\xc2\xcam\x17\x8c:9\xa2M\x9b\xf0\x93\xd6#,y^\xd2iA\x0fb\xc8\x95F\xe1\x93\xd6H\xd3\x14\x8c\xe1i\xef\x80\x04\x19\xf9\x96\xbd}\x7fy\xd6\xf3B+R.\xdcc\x9d!\xed\x8e\x9a\x08 6\xad\xea\xd5\xa4\xa8+\xb8g\\\x9a6\xfc\xebr$l!\xd7t\xf3\xbf\xb1\x153\x9a\xf3xJ.d\x93\\\xafX\xb4\x8f\x96\x0bA\xd6>\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8\xec\xfdyw\xdb6\xf68\x8c\xff\xffy\x15\xd7\xfa\xf6\x9b!kZ\xb1\x9d\xa5\xad\x13\xc5\x93\xc5m\xb3g\xe2\xa4\xcb\xa8\x1a\x1fZ\x82,6\x14\xa8\x90\x90m\xb5\xf2\xef\xb5\xff\x0e.\x00\x12$\x01\x10r\xdc\x99\xf9<\xcf\xc3s\xdaX\\\xb0\\\\\\\xdc\xfdn\xc1tI\xc7,\xc9h@\"`!\xfc\xf9?\x00\x00\xbd\xec\xf4w2f=\x18\x0c\x80\xad\x16$\x9b\x02\xb9\\d9+\xe0\xd6-\xd3\xd3y6Y\xa6\x04\x0e\xe5\x1f}\xf5\xf6\x00X\x10\xc2\x01\xf4T7\xfaG\x132M(\xe1-\x8a\xbf\xfa\xf1|\x02\x87\xf2G0\x1c\xe1\x80\x0e\\\x839T\x7f\xf5\x8f/\xe2\xb33\x92\x7f|\xfedI'));&\xe6'\xffs\x15\xb0YRD\xd5\xf4\xd5\xd4s\xc2\x969\xd5\xc0\xa2\x1e\xf0\xeb<\xce\x81\xc1\x00\xfe\xbcz\xf0?\xe5M\xf5*\xd0 \xd7_\xe6W2\x85\x80\x0d\xf3Q\xa8\xda\xe5?\x14t\x1e\xd4^\xe5mg|t\xc3|\xc4\xbb\xa8=\xc4\xb6\x0e \x8fZw\xd3\x03\xd8\xdak\xdf\x96]\x1c\xc0\x9fW\xb5gW\xf5N\xe5\xa8\x08\x1f\xd58N\xd3 S\x83\x8b \x8b@\xfbEC\xfe3\x85\x01l\xedj\x0f\xca\xd6\xaand\x9b\xb4?\x87\x01\x90\x08h\x7f\xcc\xa7\xc5\xff\x98\xc0\xa0\x8ep\x11\xb4@F\xfb\x99\xc4\xc5\xf5\x1a\xde\xe2\xd2\xf7\x05J\xbc\xcb\xb3\x05\xc9\xd9J~\xd9\x86\xd08\xa3\xd3\xe4l\x99\xc7\xa7)\xb1\x80\x85.\xe7D=\xdfm??#\xec\x00\xf2:\xc4\xc2j\x8e|\x0e\xb46\x87\xe6\xe8\x15\x86 Z\x93\xfe\xc9 )^\xab\xbd\xd1\xc25\xfdR+\xc1\xe7\x1a/SV\x1f\x03\x1c\xf8}\xed\xb1\xd6\xb4? X\x04\xbd\xb8\xc7\x81\x1c\x01\xabO/k.Q\xb3;\xd9\x8c\\\x99E\x9e\xb1\x8c\xef\xca\xfe,.\xde^P\xb5F\x02\x9b\xf0\xfbz\xfb\x0b\x18@\xef\xf6$)X/\x02\x1a\xd0>'\x12w\xef\xde\x13\xaf]\x05\xc3\x06~P\xbd\xff\xde\xb2 P\xb0<\x19\xb3^59\x9d\xdc\xd0\xe0\x1b\xd5T\xd4D\xb5ZS\xf5\x8f\xbe\xbdw'\x0c\xbc\xbe3\x0f\x81\xe9+-\xb6\x08S+\xd9\x05PN#\xb6\x02\x02 -XL\xc7\x9c\xbe\xb10\x046\xcb\xb3\x0b\xa0\xe4\x02>\xac\x16\xe4(\xcf\xb3<\xe8=\x8d)\xcd\x18p\xe0B\x0c\xe34.\n\x88\x0b\x88\xcb\x1ezacG\xde\xcct\xaaG\x1c\xc1\xf3\x08)\x15\x0d\xf6\xef\xef\x87\xf5M\x94\xc0\x00\x82\x1c\x06\x90\x85|\x07\xe4\xf5\x1d\x90\xc3\x81\x01y%\x9cZ\x1bO\x1f\x8f\x01\x96M8\x96t\x98\x18\xc1\x8c\xafd9\x04|\x06|\x13\xef>\x00\n\x0f\x81\xf5SB\xcf\xd8\xec\x01\xd0\xedm\xd3G\xa0f\x8d\xc4\x99\x8e\x1e\x18\xdf\xc8\xfb\x15m\x81A\xfd\xe7z\xcd\x89\x11\xe4}\x9d@I4\xe9\x9d\xc7\xe9\x92\xf4 \xa1\x90s\x88\x05y\xff\"OX\xf9F\x18A\xb0\x1bA\xa2 \x10\xf2\xc9\xe5\xfdOd\xc5igk(\x0djo\xda\xb9%\x009.\x18\x08\xb0\xf6*E*\x16h\xdb\\\x1c\x04\xb9\xbc\xcf\xbf\xd6)H\xbd\xcf+\xbf\x1d\xa5\xef\xc4\xfaHJ\xc4\xa0\xc17\xf7\xef70\xadB,N\xca\xff\x9dX\x7f\xf7\xde\x7f\x0e\xe9\xad\x04\x84\xe8\x14\xe3=\x99\x92\x9c\xd0\xb1\"\x1b\x9c\xd7\x81Y\\\xd0\xbf18%\x84BB\x13\x96\xc4iR\x90 \xec@\xb1\\\x90<\x08kop\x12C&\xbd\xd0x\x86l1\x8e\xd3%c\xb65\x18@p\x9e%\x13\xd8\x85\x01\xe7\xd2\xe0\x10zK*N\xedI\x0f\x0e\x9a(\xcc\xe9\x1bg$+\xaep\xab\xe4\xed\xf8\xc7\x04\x0e\xf4s\xe9\xaf[R\x18@\x1cp\xec\xfa6l\xaci&\x1f\xdd\xb9\xfb]\xf3Q\"\x1f\xdd\xbd\x17\x86&>0n\xb3\x05\xea|6p\x05\xc4\x8d\x1e\xc4\xb6\xb9\xae\x87'\x16\x90\xdf\xba\x05t\x99\xa6\xb8\x92\xccr\xf6\x1cs,\xe1\x8ceN\x8a\x82\xcfs\xbe,\x18\x90\x84\xcdH\x0e\xa7D4\x90\xe5\xdaa\x14\x01?\xacz\xb0\xbd1v4\xd0\x8eT\x04\x88o5d@\xab\xd7\xf9\xe8k$\xca\xc8\x19\x16,_\x8eY\x96\x9b\xa0\x0d\x88\x0f\xe9\x92\x1c\x00i3\x85\xd0d\x1c\x0d\x8c%\xbf\x14\xdd6\xb3\x96\xd0fPw[/5\xc87'\xae\xf2PPk|\x88\xd3\xcfk\xc7\x01\x13\x92\xce\xc9 \xc2\xe0\xe4\x84\x1fT\x1b\xf2\x01\xb8\x1b*\xa0\xe7\xae\x83\xd6\xbc\xd5T+|\x85\x1e\xe7y\xbc\xd2x\xc3\"M\xc6D\xdb*\xa0o\x17f=\xae\xc5\xdc\xeb\x8b/\xf9\xceqNbV;\x99\xc20\xd2\xf1\xa4\xaf-9\xe7\xc7\x1b\xdb\xc8<\x14\x03C\x0f\xd5\xee\xc5}-6\xec\x8b\x80\x84^-\xe6\xce\x16\x97U\x8b\xbf\xfa\xb6\x989[,\xaa\x16_\xfa\xb6\x98t\xcf\xfa\xd6-\xd8J\xab\xa6\x7f\xf0m\xda@\n\xb5\xa6\xb7\x82-\xc1\x1c\x91\xe1t\xe4\xd7\xe0\xd2\xb7\xc1\x85g\x83\x85o\x83\x13\xcf\x06\xd3\xee\x15_\xaf\xb1[\xaf\xe6\xc6\xbe\xe3\x9b\xb5\xc6\xa7\xffbA.X7\x16d\xea\x8fD\xfcA\xfbI\xf1\x9c\x95\x9ck,\xee\xbc$+\xc2\xc5\xf5\xa5|\x81N\xc8%\xde(\xc4\x8d\xc7E\x91\x8d\x93\x98%\xe7\xfc\xa3T\xdc|\x9bOH\x8eo\x8d\xf9\x0d\xd5\x06\xef\xba_\xb5\xc0\x07\xd0?&\xfc\xbcJ\xda\xf4c\xca\x05\xc4\xbf\xff\xfd\xe4\xe4\xf9\xeb\xd7\x1f?<~\xf2\xea\xe8\xe4\xf9\x87\xa3\xf7\xf8\xc7\xc9\xdf\xff\xdekS\xd6E\xfb\x8b\x97G\xbf\x1e=\xb3\xbc>1t\xf0\xe6\xd9\xd1/\xd6\x0ff\xed\x0f\xde\xbe\x7fv\xf4\xde\xfa\xc19\x0c\xe0^\xfb\xf6\x1c\x06\xb0\x07\x0f\x1f\xc2\xb9A\xf1\x00\x03\x98\xc3\x0e\x18\x8e\x96\x15*\x9c\xda\xf7O\x8dZ\"\xa8\x8e\xb2\xad\xbd\xd6SC3'\xd7i\xc6F\xcb/\x9c\xd8J\xfa\xd8$g\xc4\xf6\"O\x92|dn\x91\xc8\xa3\xa1lp\xd7o;]\xf2\xd3\xcc\xf6\xf0\xd8q\x12q\xbee\xbd\x86\xdd\xb6\xf4W\x13*_\xc7l\xd6\x9f\xc7\x97\xfc\x90&R\xb2\x84\x1dT\xb4\xf0c\x88\xb3Tx8\x06\xa8O\x13Rh\x06\x0f\x81>\x80\x8c\x8b\x9f\xf90\x1b\xf1\xe3j\x98\xc160\x83\xac)A\x99{\xcd\xf6\xa9s94\x9e\x8c\xf4\x8b\xe4\x0f\x05S\xfcs\x80\x0cE\xc2\xe9\x02#\xc1cq\xba\xf2'^\x1d\x7f\xb2B\x12\x99P\xba\x9c\x9f\x92\xbc\xc6\x82\xba$o\x8a\xd0\x7f\xf4\xe8\x91 \xfc\xa0\x1a\xe5|&\x15\x1c,_\xa9\xbb\xfb\xdf\xdd\xfd\xee\xfe7\xfb\xdf\xdd\xc3\x19\xd2R\x05\xfb&~cn\x85/2m\xe3\xba\x0d|\x0c\x1e\xc2.\x1c\n o\x03\xab\xc9,\xe0\x00\xcec\x97\n\xaf\xc1\x14\xda\xdaxkb\xe2\x1aM\x05rm94\xe4Zs\xe8\x08\xa1\x1e\x1e\x0e`\x87\xe2\xc9^g\xce\x0d/3x\xc4\x01\xe85\xb0w\xd6\x95\x97\xa3z-G\xee\xb9a?\xf8\xb6\xc7\xfc\xda{\xed\x018}c\xc0!P\xce]\xcb\xc5\xd6\xf77\x83m \x9c\xf5n\x087\x9cC\x12\xef%\xa8di\x9d\xf4\xfa/\x8e\xdf\xcf9\x1dhS\xe6\xdf\xf9y\xd1\xbe\xfd\x06\x06\xb0\xdf\xbe\xfd\x9e\x9fR\x95tW\x19K\x8eW\xf3\xd3,\xe5\xeb(\xfe\xea\x8bM\x9d\x19\x8c \xcf\xc4I\xa7^0\x1cm\xaf`\x00\xef9\x8e<\xb3\x1d\x01\x1f\xcd4\x87\xcd\x92\xa2O\xc9%\xf3f\xc6?\xab\x95\xb2\xe8\xa8\x94\xc1\xa4Z(\xbe\x05\xf7j\xcb6\xe4\xdf;\xa8(\x1cB^\x9e!\x19\x1c \x91v\x9e\x86\x99Y\xb2\x9bd\xd4v\xe2z\xd2\xea\xef]T\xc19$\x81~\xcequJ\x9a\x96A\xfd\xe1\xe6>\xb7~\xf4ec\x9f\xb8\x19\x83\x866H\xb3\xf4!\xcexu\xf1\x93\xb9\x0be\x91\xe1C\xb5\"\x82\xd4!\x08\xa3\x85\xdf\x8c~tw'\x0e\xd3\xf7Hk\x87\xefG|\xcb\x90\xe1\xb3\x91a\x08\x0d\xb5\xcc@?\x13\xd5\xf0\xbcF\xf4\xb3\x07\x8c\xd5\xc9\xabCXp)^]\xbcpv\x81\x1a\xa0\xe6\x91\xa3\xb6cB\xd0 \xab\x84\xe8>\xcb\x8e\xc9g\xbc\xa5Z7\xb7\x0d\x1aP\x0b\"\xc5'\x93M\x18\x95X\xe4\x02\x181\xae4(M\xa9M\xbfut\xb9 cF&\x82A\x83,\x87DIE\xa27\xc8\xa6b\xcb\x15\x11\x7f\xfa \xa5\x1b\xf1\xe8\x00\xb5\\\xb6n\x8d\xab\xc8\xaf+_d\xfb\xf5\xcb\xe0\xdeg\x19\xcab\n\xe2r\x11\x96\xed\xb5 \xfdi\x9e\xcd\x8f(\xcbW\xe5\xcb\xc4w\x94/\xbfl\x94\x86\x81\x11} |\x9cR\x8aT\xb7\x96\xdec\xfb\xc19\xb6\xe0\xcb\x07\xa7F\x13\"4\x19\xdeo\x8cL\xff\xf5QSU\xb1\xec\x98\xe5 =s)\xdd\xb4\xc1\xf6\x86\xcf\xe5\x01=\xea\xd5{\x88\xe0c\xff\xe5\xd1\xaf\xc70\x80\xe7\xfc\xef\x9f\x1e\xbf\xfax\xc4\x7f\xfd\xce\x7f\x1d\xbd\xf9\xf0\xfe9\xfe|\x13\xd5\xfaOh\xc1Q\x1f\x06\xcdQe\xcb|L<G\x85\x07\xbc\x9aIs\xea\xb5\xfe\x86\xafF\x1b\xb4\xd9l\x88\x05/\x84\xde\xe2E?\x9bz\xb6\xf3\"\x88\xf3\xb3\xe5\x9cPV\xb4\x06\xf6\xa2>e\xf2\xd9\xb3M\xd3\xd8^\\\x7fQ\x11|''%\x00{|$\x7f\xf6\"\xe8]\xf5\x9cc\x1e\xc7\xe3\x19yO\x8a\x0e\xeb\xa8\xd6\xd5\x96\xe8\x0b?\xc4sOt-e\xbd\x8f\x14\x1fL\xf0\xfc\xd2\xdf\x1c\x88\x17+\xac\xef\xb3L\xc8\xb2a$\x1eI\xc1Q\xfbH\x9e-\xf2\x05\xd74\xca\xfe\xbb\xac\x18\xdaDR\"\xbdx\x04\xa3\xd8\xd2\x01\x98{\xc8\xf2\x0d\xba\x18wv\xc1\x82_#x\x11F\xf0km\xf1\x15\xbd\xf5\\\x133\xa6\xbf\x14-\xbf\xf4\xc7\xf4\x97\x0eL\x7fY\x1b`EI=\x9b6\x0d\xf1\xe5\x0d#\xfc\x90#\xfc\xa8\x8d\xf0/o\x18S\xf6\xbcz\xf8\"Liw\xc1\x82\x1f\xc4z\xfe\xe0\xbf\x9e?8\xd6\xf3\x87\x06\xe5b_\xb6\x96/\xfaI!Z\xc8\x08\xff\xa5\xb4\xb7\x1c\xbd\xa5\xba\x96\x8f_S\xe4\xbelko\xbf\x8a\xe0\x9f\x11\xfc\x12\xc1?\xdaJ\xd3\xe3\xa3\x7f\xa0\xc2\xd4&9\x12\xe2\x10\x1dOb\xe4\xca\xd0\xa3L'6\x1b\xb1\xaf\xcc\xd2\x83\xe2/\xa5q\xe9\x13Y\x15F\x1eR\x8cDr\x83\xd5PN\xf8\x07\xc2\xc7\xadF\x077\x19\x1auN>\xa9\xf4\xf3\x96\xf9\xa3\x80\xe1\xaf\xa0\xcb\xbb\xbb\x93\x86\xb3\xa8q\xef\xa9<\x0c\x86#\xaf\x8e2KG\xea,\xaa\x0c\x18\xff\xf04\xb0 7fm\xf0+\xdeZ\xf0\x95\xd4\xb5\x12\x12\x0cG\xa1_\xbbq\x07r\x08\xa3fR\x883\x0fy@\xd9\x05 \xdb\\\xf3\x93\xea\x8d\xdc\xfc\xc6\x1f\xd5\x1b\xd4\xfc\x86Q\xca9\xac\x84\x9cR\xf5d\x16*\xbfL\xd2\x19~\x8a\xe0|\x04\xfc\xb8O6\x92x6\x92Y\x97\x1d@/\xcc\xc2\xdc\x97OO\x08r74\x8b\xc2\x8d\xe4?7\xb0\xc5\x80\x1e\x06|(W\xd7k\x08)\xf1T\x97\x11\xc9\x9a\x99\x81\x9a\xd9D\xf0\xd2\xca\x91\xf0\x03\xa2\xb2l\xecE\x10\x0b3F\x0c\x0f\x07\x90<\x80\xd8\xeeF\x07r\x1cK\xde\xc6\x90r\xd1\nv \xe6\xb2\x95\xc5\xad\x0e\xd4b\x0b\xbd\x1e\x0b\x96\xc3\xbdQ\x84\x8a\xbb\xe5pw\xc4\xbf\x8c\x80\x84\xa5\xa6$\x86mh+\xe1\xa0%~\xa9K}\xd6zhU\xfb\x936\xab\x8c\x9et~Df\xfc\x17/\x93q\x85\xac\x90\x15+\xe7\x02\x0c\xc7\xc6\x8f\x81\x93\xa5P\x97r\xfe\xf0_X\x05\xfc\xedmx\x04 \x1c:\x1a\x07?u\xa7\xba\xacjOu]\xc1\x01|F\x07F.\xcaKL\x12\xe8L\x86{\x8d\x93\xa8\xfc\xa8}\xdb\x03M\xb2\xfc\x1ax2\xb5;\xb1*\xca\xa4y\x94\x0b_L\x8eR\x11XQ\x83\xe3M\xfd\x0c\xa3\xd5\xbe\x91\xba\xcf\x0c\x9bx\x19\xd0\xb0?\x8f\x17\xd5\xba\xbb\xda\x05m\xd2\x08Q\x0c\x1d\xa06\x10:Ts\x13b\x1d\xd2\xaf\xff\x81!\xa9-\xd0^t\xb4\xeaD\xd0\xeb\x99|\xcd\xf8\xd5\xeb5=\xf7\xf0;N\xd3\x17\xde*\xab\x85\xfbT1\xf0#/9\x1b\xc1\xa1\xb4 \\:\x7f\x95\x14\"\nfB\xc4\xf3_\xeb\xcf_\xc7\x0b\xa1\xbb\xf2\x1a\xce\xc4=\x1ce=\xae\xf9]\x0d\x14O\xdd\xd4\xaa\xe9\xaf\xf9Acf\xdf\x11\x1cwHe\xbe$\xb0%\xf5\xef\x0c-\xcc%Fm\xd9\x18%\xc1\x82j/\xeem\xa0\xa6\x97N\x08o\xa7V#\x06So\xb8\xb6f \xb8y\xf9f\x10\x868\xa1\x00=\x0f\xf4\xbb\x9bN\x10\xec\x93\xf4\xa7f[f\xc7Q\xd2'\x9f\x97qZ\xa0J\xde\xf4\x02\xd3^\xd8Ro\x07\xcc\x93#?\xf7Z\xf2\xee\xe5\x8d\x03\x11M\xa4\xd9\xb5+\x87\x07\xed&+o\xca\xc7\xda\xcd\xe6\xe7''\xb3\xb8\x98\xb5\x1a\xa8n\x97\xaf\xd4\x1e\xac\xd7B\x7f\xcco.\xe5\xb0\nu\xa3\x907\xc6\xea\xc6\x18=\xa5;\x90\xb2\xe9\xc1!\x0d\xd1\xf8\xdb \x1b\xe5Z\x81\x9e}\xe6\xb6\xf9H\\\xac\x06J\x88})#\x04\x1d\xe6\x8f>9'\xf9*\xe8T\xa8\xa8K\xb1B9\xda\x00\x83P\xec\x82Nv\"\xe3@\x98\x91 CNQ8/\x06\x94\xc3\x15o\xeeb\\\xa1\xed(\x00\xf4\xdf\x97\xfdq.\xc2c\x8f\xa8q\xda\x16\xa8\xe5gc\xee\xbc\xf1\xaaZ@\x0b\xcd\xd1\xd5\xbe\x88m\xda\x0d\xdbB\x90\xb4 \x0exg\x0d\x0f\xf9\xe6\xa5xK\xc7\x12\x10\xa9\x05\x81\x01$f\x08\x1b\xa17\x15\xc10\xc6/\x16 \xb6\x8frE*\xd1\xc7\x14<\xa8_\x1c\x9e\x9c\x13\xdd\xc2\xd8\xb4\x00\x9d\xa43\xfe{\x86<\x01\xe9\x9f\x11\xf4\x8a\\\x85\xfc \xbf\xab\xddB\x1cQ\x185\x95\x1ek\x06\x8a \x885V\xf1q\xaa\x11\x13\xbe\xa8\x0b/\xba7w\xd3\xbd-T4\xea\xf1bsM\x02\xe2\x1c\xbbj\xc0\x8c\x8fB\x9f\xa3\xbc\x1e\x1a\xfa\xa4\x86/\xcb\x1e\xdc\x86\xdd\xd2\x9fE\xfa\xbd\x84\x91zC}\xe8:\xd8\xfeY\x0e\xed\x9ff\xc4\xf9\xa7\xb4\x19tl5\x1b\xb4\xce:\xa0U\x8b\x8c\x11*\x02O_\xa1\x15q9\x0b\x99\x97b\xd5X\n\xad\x0d\xf3j\x9c\x91@\xbaZE\xa0\xe2\xfb\nF\x16\x10\xc3\xfb\x98\x9e\x118]\xc1n/\x8cpo\xe19\xb4\x1b\xd5W \x0d5\xe8[z\x1bv\xc3\x08i\xba\xf6\x02\xc5e\x94K\x18\x9f\x16\xe8z\xc8\xe0\xa1\xe4\xd8\xf8\xdb;T\x99pN\n\x16\xe75\xdd&\xa1\x13M\xb5y\x82C\xc3\xc1\xeaX\xa3\xa3\x07\xfe=&I\x1a\x04\x0cv8\x01\xbe\x0d\x94\x8bV!\x97\xcd7\xc3\x9d_JX\xfeb\xc6\x9d_\xbe\x0cwN\xcd\xbaD\x81/\x9aJ\xe9\xf1i\xc1\xf2x\xcc\x9a\x96 K\xb3'\xc4\xe5fz\xe1|z$\x9f\xea\x0f53\xd6\xf0\x1f#\x15`\x1a\x10\x12\xc1K\x8e\x19z\xdc\xc3\x19\xe9\x0c\x04\x82\x86\x15\x86\x93G\x94\x0f4M\xfb\xf0\x932g\x84\xa3\xb6gc\xa3\xcf\x8dL25\x7fY\xadG\xe9![S-U\x1e\xb2\x03\xc8\x85\x8b\xac\x15W\xa4\x8a\x88\x04t\xc80\xecn\x07=\xba\xb2\x11\n\x7f\xbc\xa3jgf\x1c\x15\xadT;\xf3\x9a\xac\x9fu\xc84Q\xe3\x14Z\x937\xbe\x95\x9956\x9bikJ <B\xf5\x87\x8b\x03\xf3\xd2\xb88\xb5-B\xd3B\x84\x04^\xad\xcc\xf66_\x9b\xedm\x83\xaa\xe5\xca`9c$\x82_9\x91\xba>\xaa7\xbd\\M\xa8/\xf4\xc3CbD\xf9Z\xdf\xb3\xb8p&\x02\x80\xa6\xa5S4\xdd\x08\x93o\xa9\x02\x1a\xbd|\xe9\xc6\x12\x9d\x8a\x9dU\x99\xaa\"\xc9V\xeb;-\x11;-\xe1;-{\x00\x89;\x16:\xe6\xdf\xe3bf\xb0\x03 \x1c@b\xd1\xf35vf<\x8a n\xee\xc6\xc4\xa8\xb4\xb5\n\xa3\x89\x17\xc8\xae\xb3=%\xb8\xac\xfbS\x03\xa1uw\xe6\x9d{8\xb9\x89=\xbc\xd9*(\xc8\xa1\xa65\xfb\xf7\xed\xf9\x98\xef\xf9\xd8o\x8fk\x8b8\x9cU\x87\x1c\x95\x87\x1c5\xee\x8b\xd2[\xc5c\xad\x91\xf7\x0dk\xbb\xb2&4iB\x86\x85{V\xd8\xf2SP7\xcb\x86v\x94\xb1\xe8$\x9e\x04\xd4\"\x83\x96\xbb8{\x00[\x01F\x9cKyT\x08\xa4\x18\x8b\xb7'\xb4\x10A&d\xe2\x08\xf2\xedm\xb9\xab\x1e\xd8\xa5\x91\xbc s#L+}\xf5\x8d\x025\xcb7\x86\xaaE\x9d\xf3D\xd7\x12\x8b\xed\xf2\xbd\xa5Y\xcb\nl\xbe\xd5\x98\xb6\x0e\x1dZ\x0e\\$\xe1\x8c\x8e{@,\x8dX(\xaf\x8d\x10\xe4\x12\xe5\xf3\xff\x02\x94\xaf\x0e\x15\xfd\x14)C\x08D\xca\xa2\xb6\x83\x80~\xa0\x94\xc6\xa8\x07\x1e\xcc[6LF\x11'T\xadC\xc226\xbeK\xa8\xa6%\x12\xbb\xe4A\x17\xdd\xa4.m\x12\x9a\xd8\x86\xc9H\x84C\x96c\x8b\xeb\x03;\xcdI\xfc\xa9\xbd\xa06lk\x1d[\xc6\xe5\xfd\x8f\xed\xbe\xc6\xc2Z \x9ai\xb1\x8d/\xdf\x08\xab\x8a+\x01\x8f\xaac\xb5Ka\xd8\xbdQA\xc1\x0d\x11\xa5\x02\x9eC\xb1(\x82\xf2\xe4\x1e6\xbe\xe6\xb4.+\xf67\x1f\xfa3\xbcsI\x03\xe6\xe4\xfa.v\x0dA\x1b\x0e\xa1\xf7\x9e,H\xcc`8\xea\xc1A\xf5\x0b\xbd \x98\xa6\x16\xda\x86^u\x0f\xbf\xe5wX2'\x05\xb4\x9d\x8e\xe7\xd7g\xcaML\xb8\x18\x82\x81\x01\xaf\xf5\x93\xd0q\xba\x9c\x10o.|Ft\xc5W;*\xab\xd1<\xa6,\xf0\x99Hm\xffpPYQ^\x8b\xd9\x13S\x85\x03\xa5\xad\xab\x8d\xec\x83\xb0\x13\xc3\x8e\x08\xa6k2\n\xcd\x91\xe6\xe4\x9c\xe4\xc5&n\xda\x1dp\x9d\x90\xcb\xb7\xd3\xeb\x83\x15\x0eQc\xb8\xb3\xe7\xec&\x8d\x0b\xf6\xfc\x06\xba\xaa0\xb4\xb3\xcb\xeb\x0bS*UT\xb9\xc4\x98+\xcaJ\xb0\xca\x03\xa36\\\xda<\xd1\xa8S A\xbd\xe6\xb2\xb9\x94\xb3\x11\xab\xba\x19\xb1Vl&<\x04\xaa(N\xc5\x02Q \x89\xd0\x98\xf0F]7\"~xP\xd8\x1a4\xa5\x91\xd2\x13\x0fI]\xf5\x0e\x87m\xcc\xd4\xa6z\xde\xb6\xf7s\xfa\xbe\x92\xf4}u\xc3\xf4\x1dU\xc6\x8a\xbc\x8b\x1f\x1au\x17\xda\xddm\xe8\xf5\xfb\xfd\xea.\xa1\x13\xd8\x86@\x08\x15\xeaE\xb2\xe0\xed\xc1\xe9\xaa\xf69Y\xf0\x86{!\x9e\x07\xed\x93`u\xb3'\x81\x1an\xa5\x8b\x84\xaf\xebCi\x9d\x11\xabk\x9d\x11\x8as\x08\x08\xec\xe8}\x87p[\xeb\xcf\xba?0@zW\x18\xe452!n\xf05B\x9d\xf84\xcd\x0c\xb6\x87\xc6\x90\xbd\xcf\x9d\xc6\xa1Rv\xaa\x1d.\xe8R \x02\xb2\xcb\xa7\x91\xb0\x15\xe0\x19S\xdd\x0d\xe1\xe1\xa0\xf4-]\x91`7\x82\xddP\x1eO+\x89\xdcg\x84\x05\xbaU@\x99\x0c\xf8}f\xb8\x8f k\x9f]\xab\xeb\x1c6\xe7eTemy,\xf6-\xf8\xbf:\x92\x0c\x06|.vi@d\x17p\xaf3\x94\xf6D\xb5\xd0\xb5\xf3 4\x13mp\x89\x03\xed\xc3j\xf5\x85\xe7#\x0eGB\xd4@sV7s\x16V\xd8\x8dz\xc3J$\xe0\x90\x93\xf2`k\x03S\xf8\x1a\xf3\xe0iw\xeb*G\xeaT9\xd6%\xc4\x08\x12\xa3\x06\xd1\xbcl\x19l\x8b\x11\xed\xf0\x01\xe4\xfe\x0b\xd4\x92\xd7\x8c\x00\xdc\xfc\x00\xae\x80g\x1co\x03\xa0\x969\xf9\x02\xd9\x0c\xce\x9b8\xec\x95 \x9d9\xd5!\x0d\xe8\xf3E\x7f\x84\x16\xc9\xbf\x98\x03P\xca\x17\x94\xd7c\x1f\x91kuC\x0c\xc1\x8a4\x16F\xf8}\xc8\x1fe\xb8\x1d\x9aU\xc5\x13\xfegy_\x92,\xf9 \x9eq\xe7ed\x91\x81\x8f8%*\x9d\xd3 \x89\xe0\x94\xe0\x9f\x17\xd5\x9fG\xea\xcfSRF\xf4\x887\xb5@\x1e\xf1\xbe\x0c\xf29jH0|\xa1/\x89-\xbb\x04\x9el\xc9|\x89 &v\xf6\xab\xd3\x8e\xdf\x0b\xaa$,\x11\xec\x87*\x7f\x06\xbe~\xe0\xbfk\xee\xdf\xbbw\xe7\x1e\xdc\xe2\xe7\xd9\x9a\x13s\xfb\xc6)\xdfd\xe2M;\x92\xe3^\xd9F\xb7\xbbG\x8f\x1e\xc1\xde\xfdP\xde\xe1O\x02V\xde|\xf8\x10\xf6\xee\x8b\xdc3!\xac\x9b\xce\xf8\xb6P\xa6\xe3._Il\x1en\xc1\xde\xee7w\xbe\xb9\xbb\xf7\xed\xfe]X\xc3\x9d\xfd\xfd\xbd\xfd\xfd{w\xbf\xe1O\xfc\x9c2\x9fZ:\xd2)&\xac\xd7\x8e\xe0\xeb\x92\x86Z4\xd5\xdd>\x8f\xaa\xa3\xb6\x07\xa3\xbb\xe3\xae\x9e\xb7\x9a#4Px\xc5\x18\xa8qY\xe6P\xa5=\x18\xd8}\xce\x12\xf4)\xdc\x92C\x15\x0e;\xc2\xa7\xc21P\xd0\xf0t\x17\xd66\xe7(<BEv\"\xe5v\xf1\xaf\x81\x9e\xa3\xe8k \xe1\x03\x8e\x18\xda\xcd\x07!\xe0k\x04n\xeb\xef: \xee1 \x0c~\xce\xedC\x0e\xc1R\xa0\xb4Q\x82Ea\xa7\xb2`=\x82\xdfky\xcb;\xf33<#Cb\xb1@\x19=V>q\xec\x8d\xe0\xbd\x80\xf5\x1b\x993\x83`:\x1cxF0\xf1\x19>\xe7T\x1c\x1b\xe7K}\x9d,\x0bp :\xdb\x08\xc7gq1{\x9aM\x88\x06\x19u\xcb\xa4\\\xc4\x96\xaa\x90-\x1d\xa4\x9e \xb43\x9e\x1f\x9a\xbe\xaa\x08\xbfw\xc2c\x8d\x84a\x97\x1a3\xa9\x9c\x0b\xcb\xaf\xc9\xf09\x19y}\xb9\xf5\xd6:n\xb05\xceOS\xb4q?/\x8e\xaaT\xd8\xe8\x0egz\xe25\x16[g\xdd\xe0\xd5\xbf\x96\xa3\xa0\xd9\x84|X-\xf8\x96\xdb\x0d\xa1\xb8H\xd8x\x06Au\xbf\xab)~\x8d\xe3\x82\xc0\xdeA\xe7{\xa0\xd1\xfe\xfe\x92&\x9f\x97\xe4\xf93\xfb\x1c\xd5\x85\xcd\x7f\xb7a\xf3\x93l\x8c\x01\xc3G)\xe1\xff\x88\xc96n\x96cp6mVj\x83\xdcR\xdaj\x19\xdf3\x7f\xcd\x97k{\xfb5\x89\xf4\xa3\xef\x16\xbc\x16{\xff5\xee}G\x88\xc8\x07\x12r\xac/\xa4,z=G\xd7\x06\n=V6\xd5\x01\xfe@\x97\xe7\xa6\xc7`\xefMFw\xc8%#\xb4H\xaa@\xc2\x02\xe2\x9c`\x92\xe38M\xb3\x0b2\x81\xb8\x80OdU\xf4\x9b\x89\xb3\x9b\xdd\xf3\x0de-n\xf1\xdc\x98\xc3X\xbf|\xd2\x11\xab\xab\xbb*\x86~iI\x8c;\xde\x94|\xbay\xf1\x01\xcc~\xb1\xea\xc2\x15j\xac\xc3\xa6$C\xb2\xc9Z$\x89\xc6\xc1\x9b>\x08\xad\x0d\xb9\xd5m\xfa\xa5\xcb\xda\xfe=\xf7\xe3\xc5\"]I6\xde\x12\xd1\xaf_W\x91\x83L\xf23\xb0\x03\xb2\xddD\xb0\xe6\x94^\x91\xbc\x16\xde\x7f\xa4\x08!\x96AA\x18\xc4@\xf9>\xa8 \xa7\xc6\x08\x19\x95{\xc2\x89\xfa\xfc*\xe7`\x9f\xfd\x06\xf4\xc4y\xeaot\xda+\xe5kI\xd68\xc3\xa0e\xb41\xe6\x03h@\xeb'4]\xf1&\x85\xd6\x14\xd5\xa4c\xe1\xd4{J\x80s\x0fd\xd2\xf7\xf4\"\xfdd\xe1\xedKu\x0c\x13\x8c\x92f\xa1 \xf5b\x16\xfc\x85;{\xf0\xb5HU\xd8\x1f\xcf\xe2\x9c3/\x8fY@Q\x98\xb1\x8aG\xc7\xa4\xed#\xad\xff\xe2\xbd?&U\xc6\x84\xa48*ic\x9bj\xbc\xf5\xdaa,_9\xf0V\xa9;\x8d4\xf3\xcf\xab\x08z\x7f\xefE\x82]\xb4\xea\x04\xc6\xb18\xe2]{\\\xf6cs\xf57\xa0Y\xd8\x16\x97\xdf\x91\x08>XE\xe6\x9fI\xfc\xe9u\xdc\xd02\n\x06/xGd\xe6\x02\xf9\x92\xa1qqF\xb6\xa1\xfc\x1c;<9I\xe6\xf3%\x92p\x8em''\x8d\x14\xed\x1d)\"\x03lE\xfc\x0e\x9e\x93&\xd2\xf3\xfe\x7f\xe7o\xec\xdd7$\xa6\xe4\x0f\xf6\xef\x192\x1f\xbf\xb7\x0cY\xb2\xf86)\xfa\x95e\x03\x9c\x91@\xc4f\xa1tV\xb9\xcd/H>\xcd\xf2\xb9P\x7f\xc7\xa2\x8d\x8b\x84\xcd \xa6\x90\xd0iB\x13F\xa0H\xfe \xbe;\xf0\xa3[\x8cw&\x0d\xfbE$\x0d\xfb\x8cMp\xfeb\x1c\x94\xf9\xd3\xf9\xb3>\x1f\xd9\xeb%\x8byO\x85\x16\xd6\xd2\xa5\xab\xce\xad\xe9\xed^\x91\x80*-?\xedO\xb3\xfc(\x1e\xcfj\xf1V\xc6@\x06u)R\x8a\xdc\x15m\xa9\x9b\xd4e\x8a\x82\xf6\x03\xe7g\xef\\ \x7f\x90\x8el\xe6\x1fI\x04'|\x9e\x1f\x89G2\x9d\xd2| B\x8a\xcb\x038r\xa9\x88\\\x8bd%!\x1d\x15\x86`{\x00\xfb]\xa2\x14\xda\x85\xe1Q\x95@\xc6p,\xbfN\x8a\"\xa1g\x82 \xc3^?\x91\x95\xc8f\xc1\x86\xd4\x94fR]\x82y\xe6/E\xfcU\xde\x97-\xdc\xbds\x9d\x11\xfc\xd76_\n\x85\xa7\x96\x01\xeau\xbc\xb0\xa6<\xfb\xf8\x85\x96\xc5\x93<\xcb*\x959\xff\x81\xa2s\x19K#\xf26\x85&\x93b\xad\xebb\xa3\xae\xff\xa1'\x85r\xcf\xa9 \xec9\xdd\xa0i\x9c\xc8r1\x89\x19y\x8e/\xaf\x0c\xd5\x0cm\xdfn\xba\xb29\x99g\xe7\xa4S\xd26\xccz\xe5nxBR\xc2'\xe0\xdbtk\xd6\xbeS^m:e\xd1IsA\xdc\x89\xa3\x85\x08Y\x92\x17\xa5G;\x94\xae \xa12\xce\x94\x13\x18\x92\x91l\xd4c,m\xf4\xb0\x8c\x06\x83]\xd1)R\xc6b\n\x14w\xf8\xc8\x96$\xda'\x91\xc4\xb9\x8c\x03\x15\xa6\x8d\x95]'\x1aw\xfa\xe2qr\x17K?<;Q<\x97)c\x12YM\xcbb\xd6RW\x01\x03\xc8\x82\xa5\x83\x06\xca\xe5*p\x02K\xe9\xac\xdb\x8e!\x03\xab\xd4qF\x82\x04cH\xd0p\xc3\xf7n\x04\xbd\x84\x9e\xc7i2\xe1\x94\xf8]\xccf69\x88\xcf&\x85\x01\xc4.\x0fT\xfe\xd2XNy\xc5\xa7\x8c\xd4*\xe5\xfb\xc9\xfe\x01?\x07I0\xae\x16\xd0\xa9(\x9d\xe2\xec\xc7r\xf6\xe2\xd7\x8a\xff\x92\xbb=H9\xbe\x06I\xc5\xcb\xb0\x10\xcf\x8e4\x82\xa9\x81\x07\x90{\x9eR\xd4\xe9Z\"\x1ee\xdfy\xd9\x9b\xe4\x9aZu\xd0\x1a;`\x9c\x92\xd8Y\x94Hk\xbc\xed\x16\xc3\x84?\x84<p\xb2\x0bJ\xf2\xe7\xcf\xe0P\x86\xc2\xca\x18\xc6\xddH?)\x06\xc8\xdd\xa9[\"x\x7fP\x9e\x15\xf2n\x9c2Y\xefdK\xde\x0c%w\xe7\x9c\xcc\x9c\xe4g\x9d\"\x91\x82\x14\x93pU]\xdb\xf3\x01\xb6\xfb\xf8\x993\xbfZ?\xae\xf3\xa4\xec\x08c\xa3\x9b|\xd2^\xdb\x91\xa3\xdd]\x9d@9Mz\xa6\x1e\xac\xd8R\xa7\x99,B\x08G\x1eZ_\xf9\xbdE\xe0\x17\xcbp\xa8\xfe\x92:\x1a\xc1%\x1f\x00\x1d\xea\xd1x\xa3M\x8f\x0fl\xf2\x19\xc1`\xd9\x8d\xd69c\x9b\xad1\xef\xc3k\x9d\xaf\x05\xfarX \x0bX\xd8yP\x95#\xfa\xdf\x88\n\xb8Z\x87\xfa\xaf\x9bE\x89\"\xcb\xbb\x8d\x15r\x9c\xefX\xf03+\xcd\xfe\xdd\xed>Ym\xc0:\xea\x8d\xb3\xee\xf6k2P\xe7\x04J\x8b,_\xa9\xb8x-t\x11&\x06@\x8e\x86 b\xb1\xfeE\\<\x16\xf44@\x1f\xb6\xfe\xc9 \xa1\xc52'o9\xbd\x0e\xea\xc4[\xb1R\xce\x81\x97\xbd{\xee\xc1\xd6\xf9P?7\xf4\xd1pQ\xec\xd2\x0d\xb6\xb8x\xae41\x9b\xf5\xaf\xf7\xd3\xb12%\xc86\xebA\x9e[\xce\xb67spR\x1a\x11r\x01/\xfde\x9e\x8d\xbc\xd0\xbe\xd4\x89Y;\xdcKo\x1b\x94\x03\xdb\x99E:\x88\x08\xba3\x93\x80a\x82\x19\x86\x19eL6\xf7H\x94}\xea\x80\x80\xb6\xda\x9d{K\xed\x98\x8a\xc11`+?\xd2\xfeI*\xd6Fgk\xa2*\xaf\x03\xb24\xc8\xe15\x1a\xd2r?\xe8\x0c\xce\x9edp\x0c\xd3I\n.\xb9\x0f\xe0\xb3\xc1s\xe8{\x12\x01\xb2W\x8dd\xc0\xaf\x1f\xbf\xb3TO{\xc2\xdf\xd6\x81dS\x0f\xfedO\xfc\x81\xc3oOH&*j\x19\x1f\xac5>\x9c @,\x9d\x9c&l\x8e\xe0PN\xb14\x13.\xc8\xd4\xab\xcf\x9f\xaf\xd3\xe78[Rv\xed._\\\xa7\xcbOd\xf5\xa3`\x8aY\x0b\xba~\xdd\xfezs\xdd\xae\xbc;}\xd9\xdd\xe9 \x13\xa5FK\xa7\xe6*\xc2\x86V\xbe\xcd\xf1\xf8\x93H\xd3\xa9(\xcaW$\x90\xbf\xfc\xb4\xa1?t\xa6x\x14\x15\x90D\xc6\xaaVRJ[\xb3_u6k\xa6m\x1ce\xac\xe5o\xd1\xab\xf8\xc0\xe6\x8eyr\xb2\xc8\xc9\xb9\xc9\x14\xec\x97\x85\xe5\x9f\xbeIQ\xeb\xc5_\x9f8\xf2\xf6fJ\xaa#\x11d\xa5H\xc7\xf0\x87F\xe9\xa8\xb8!\xa5\xbb\\\xfc\xaa\x13\xbd\xcck\n\xbf8\x93R\x7f\x8fz\xed\xe0{>\xa0\x7f\x92`\xd73\xff\xdd?\x9c\xb8z.k\x92\x9b\x8d\x9c\n\x15-\xab\xadt8\x17\xc1\xa9\xc5\x9d\x12d~\xd8\x8b\xe0\xc4\xa1\xbc\xc1\x04pL\xf5\x86\x91/\n\xbc\x11h\xcaU\xb1\xb8I\x04q\x18\xc1\x96T}T~U\xe6\x0eD\x1e\\\x19~\x18$\xb2P\xd7!\xe7\x02\xa4\xf6`g\x0fK~\x1d4\xab\xc9\xf1\xeb\xcae\n\x17zvl\xc6g\x14{U\xf9\xc6\x9fp\x9bW\x93\x1cZ\xa1'\x8a\x8f\x19\x1f\x9b\x82@m\xc8C\xea*\x8b\xb2>c\x16\x95\xd4\x07Q\x97\xb4\xd5\x14\xa4\xa5\xa3@O\xb8\\p\x08\x19\xee6\x93\xbe\xc2\x82\x8f\xd2\xe9\xa6\xd4/\x89\x05\x8d`\xe9\xe4U\xb8D%$\xb6\xc0\xf8\xe9\x01GD\xb9\x9e\x84\xf3#G\xc12\x8c\xe0(\x881\xeb\xc3\x05?'D\x0e\xd7!\xff\xcc7\x9d;cn\x1e\xaa\x95\xa8\xf4W\xe1\xf6\xd9\xba\xff\xc2\xcf\x13\x976\x80c\xea[l\xcc\xf2\x08\x1b\x0c\xf8\x02h\xac\xf3\x8br\xa6\xb2\xbaP\x04\x99\xc9\x96\x83\xbbW$\xde\x0e\xaa$_U\xcb\x07\xda\xdf\x8f\x1e=\xe2\xf4\xe3\x16\x9c\x99\xf7\xf9\xb2\xde\x08\xba\xe9k\x1fY),\x1f\xef\x8f8^\xaci\x1b\xc3Z\xfc\xb1\xc4qI\xbd\xea\xb0\x82\nl\xc3\xb9\x84\xccH\xe8\x15\x07\xf5\xd5\xcdB\xfe\xe5C\xf1\x1d\xe1+\x0d\x070L\" \xbeK\x9e3\x17\xbd\xac\x12k`\xf5\x82Z\x86\x02Z\x9a\xe8:\x12\xdfph\xd1a2\xb2\xd3\xcc\x02M\xb46\xeds\x1c,\xd1-:\xe0\xaf\x15\xf5\x8c\xc6>~ \xd3V4\xa1\xba\xae\xc2\x90\x1f_\x8be1\x0b\x0c\x9eEV\xf2\x12+\xa0e~@\xce\x9c@.w=zmUj\x95[\xb7\x00\xb3\xb0\xd6\xd4+\"'c\x99\xd8Wl\x7f?\xce<q\xef\xeeJ\x94\xb33\x15P\x86\x8b\xa1\x0e\xbf\xaeL\xc3\xf1\xd6\x92Q\xd7\x9e\x0b\x95\x90]\x13\x8f'W\xd9\xb9S\x0d/\xb2Qf\xa1\xd4\xc3g\x1d+g\x03H\xec\xb3,b\x9b\xa3e\x88\xf6\xa7 ?\x19<\xd0\xaf\xfc\xb8J\x9c\xdb\x1ed\x18j\xd6.~ \xebiv\x91\xaeV\xa7\xd8\x9a\x93\nLy\xa8}s}S{.\xa3\xa1\xcaO\\+\x0eh\x02\x97\xe7Q^\xb7\x9av\xba\xfc\xd6\xe4\xef\x95\xac1\x8a\x80\xc7.\xad\xdf\x1a\\&\xf0\xb6\x1e\x04c[:u\x11\xe5\x96\xc1,\x8d\xd5\xebI\x97\x04\x0d\xcbJ\xd3a6*\x1dB\x0c\x03\xc5\xcc\xe4\xb5\xa3/\xa0\xc3]O\x89c\xd9q\xd2\x82\x0c\x0d \xbe\xbd\xf7\xedw\xdf\xdd\xb9{\xef;\x11\xcb\xb33\xc0@\x18\x11\x07s\xf7\xce\xde\xfd{\xf7\xbe\xb9\x7f/\x0c9\xb3\x87\x0f\xf6\xe1\x16\x94\xdfh\xf7\xef\xf2\x93i\xff\xde\xfe\xfd\xbb\xf7\xf6\xee\xdc\x8b\x80\xc0\xb6l\xea\xdb\x08\xf6\xf6\xbf\x11\xcd\xab{{\xf7\xfd\xa6Q0O)$\x97(~\xec\xaa(\x9a\x0d\xd9H\n\x18\x8d\xde\xf5_O\xd0\xd5E\xf2fO\x949\x1c\x06\xfcoa\x85\x8b\xaa?Q\xa7\xfe\xa4\xb2\x99G\xf0S\x87S\x84}.\xb5\xc3P\x97\xde\xe5\xb1(\x98\x8b\xac:\x16\xe1!\xc4\xe2t\xb4\x12\xd2\x19\xe1\xe8\x99\x0d\x93\x11G\x9d*\xd7\"\xbf\xb1\xe7]\xca\xbc1+\xab\x19^\xe7#\x9d3\xc4b#b\xc7Fx:\xd7\xa7\x9b\x8a\xe9\x8e\xf1<V\xd3M\xe1!\x8c\xd1kk\x86T\xa2\x18\xa68\xa9\x07\x90no[\x18\xb2)\x0c\xc4wf\x81l\n\x87\xa2\x99\xbd\x11\x0e&\x83\x03\xce\xfdj\xcaI\xf3w\x82\x0f\x0e\x96\xe8\x195EW\xb2\xa3 \xe1R\xd4\xb2\"\xa4EGv\x1c\x0c\xe2\xc0`\xad\xad%\xff\x7f\xe9\x9a\xf0h\x00\xa9)L\xc5\x89<\xea\x12R\xad\xf2X\xbct\x18\xdck\xe8&\xb9>\x12\xc1S\x82\xc9h\x87\xbc\xa3QX\xe3\xc8\x98\x0fG\xa6.\xe5l\xc0\x86\xb6\x04x\xea\xca\x10\xab%\xf9'5\x115FEKl\xad\xfe\x01F.J]\n\xd9\xcd\xb4\x99wU8\x8d\xf2|\n\x0b\x90\xd1a\x9a\x82W\xc9\x99\xd6\x8e\xb9d\xb7\xe0\xb8\x85\x14\xa9\xe8\xb2\xf9\x1f\"\x7f\x9dJ\xdb\xff\x0e\xec\xc1!L\xfa\x8bLT\x82\x98\x0cSN\x8dZ7\x86|\xe4\x9c\x1f\x9f\x08\x06S\xfc\x0e#\xec9hh\xff&\x95)\\ \xcc\x11L\xbaX\xd2\xab\x08~\xbc693F\x97!vY6+\n\xf5\\\\ \x82z\xfdp\x11\xf9IP\xf6\xb1hF\x12EC\x84\xa6\xd7J\xd8x\xc3\\\xce\xb9%\xb8\xbb24\x1b\x95\xb3\xc3%\x13\x8f03\xf2H\xc4q \x19\x89\x99\xd8\x89&x\xaeM\x17k\x99\xa1U\x02\xe8\xa7$\xc8m\xa0\xd2\x04D&Y\x1e\x8a@b\x0e\xa9\xb2P\xf0]\x9a\x9f\xa7u\x18\x9a_\x1acL\xe5\xd6\x00\x82\x14n\x81 \xb5\x91\xae!\xa1\xce\x1a\xca\x1c3AUtz\xc9D\x93\x08|s\xe7\x0b5B\\.\xf3;|\xef\x8d\xe1\x10\x16\xc3\xe9\x08\xdc!\xeb3\xa1(\x9b\x08\x0b\x8cX\xe8\xfaZ\x99g'\xd4\x04\x13\x8f\x83B\xc0\x01E\x97\x85F\xde\xc7N\xf2\xeep\xf3\xaaU\xfc\x92\x0c\x01\xdf\xcf\xa2\xde\xcc<\x8c\x103v\x1fHV\x9f>\x80%\xa6\xf9\xe1\xb81\x80\xbd\x10\xe2\xe1r\x84hp\x0b5\x0bl\x98lo\x8f\x1c5\xeb@\x13J\x87\xf9H\xa8\xb8\x84/|\x80 \x05\xb7\xb1\xda\x98\x81\x90\xf0\xc7\x8b\x08\xd2\x08\x96\x11\xcc,\x90\x94\xe79\xff\xbf\x08S/\xa1\xc4\xe5?\x16,\x86{\xf0/\x98j\x9c\x8b\xba\xe3h\x0f?\xde357\xab\xda\x99\x99\x11\xf1tSr\x7f\"\xd1m\x86\x14\xfc\x00R\xf8\x17\x92\xfd\x14\xd6`\xc1\xd0\x0b\xed\x93\x82\x05\x8b\x08\xa6\x11\xcc\"8\x0d\x9b\x01\xf8\x1d\xe2\xc7yY\xed\xa3\xf2\x80\xb0\x1f\xb5B\xbdZ\xa6\xbf\xc9\xb5\x08Z<Y\"W\x11\x89\x16\xb3 0.\x0fk\xbc\xa9\xa88\x07\xb9,8\x17k\xc4\x9f\xbf\xb5\x17rV4\x1ea\x9ck\x0c\xdb\xd6\xd4\xb8\xd0}x\x0b\xa8\x19A\xd6\xc1!\x95\xba\x00\x055k\x9a\x12(\x15\xea\x08\xb5m\x89TY\x05\xb9R\xa0\xf0\x01]R\x03\x9dP\xad!\xe8\xe4\x9e]\xc2C\xc8p\xc7\x86\xfc\x96\xa4\xedA\"\xb6,\x15\xaf\xef\xec\xa1vV\xdc#\xc3%l\xfb\x94s\xb3\x14\xfe\xd0q\xcfzd\x9e\x96\xecDiE=i\x984/\xea\xdc\x850\xd1\x9eDp\xd1:/\x7f\xfe\xf7\xb2\x13\x0eF\xa2\x83\x8f\x10\x0cAf\x17\x91\x128\x84\xc4\xc4\"\x98\xfc&\x7f\xfe_\xc6&(\xd9\xcc\xf8B\xeaq\ns6!\x1d.-d\xba\x10\xc17\x9e\x8c\x01a\xc1x\xd3#Z:\xd2z\xf4P\xf2\x14h\xaf\xb7\x1c+\xdd2\xdc\xce\xce\x02\x1e\xc2\xf4\xdar[\x8d\xc0\xeeF\xe6\x03\x9e\xaa\x03^\x08\xcd{BR\xae\xc42NARy\xe6\x17\xf0\xf0!\x1e\xf9\xddb\xda\x18\xc54\xd3b\xd5\xde\xac\xa2\x82\xf1\x98]\xe2\x9fH\x1b\x83\x0c\xd6\x03.L\xc5\x82\x9f\xe0\x90\xb7\xb6\xd5)\xafU$$3\xb2\x16\xa0\xd8\x8b\x149\x8c\xa5\xd5\xcc\xb8\xd8\xde6\xaf\xf9d\xd3S\x9es\x8a\x05zY/\x91bN\xec\xe4rR\x92K\xe5\x00\xb2hP\xcbY\x9dZ\nNj\xc1\x99\xa4&\xd9xqmj\xf9\xdf\xacKz\xf1\x9f#\x86\x92\xae\x99w9\xadr-JC]9\xc7\xa5\x96\xc0O(\x7f\x84\xbe\x872\xcd\xaf\x0e\x07-\xa5p\xc3\x18\xca%\xf9\x7f\x90\xbekYq\xee\xe3\x9a\xd5T\xfa\x11i\xb0\xe4\x13\xe0\xac{j3\x9en\xaci\xe9\xd6\xb2\xfc\x075,/\x0c\x00\x98\xb46\xf8\xaf\xd7\xde\xe0J\x8c\xc1=Y\x0ee\xc5\x11DE\xd4\x89\x1b{#\x13C\xf2\xeb\xcd\xec\xc1\x86*\xd7\xb8LH\xf2\x10\x83\xeb\xc3\xb4.WP`\xf5\x8c\x12 \xb4y,\xc3\xd6F\\\xaa\x80\x15\x8e\x91p\x00\x05Z\x02\x8chT[5lqP\x96!\x92\xcbf\xc2[\xb9\xec\xa2K\xc3\xaeG\xa2S\xed\xfc\xd6\"\xd7t\xe7\x95s\xed\x0b\xf3\xed\xda\x1a8I;m\xd1\x91\\\xd0\x91\xacQ\xb6\xe8\x01\xe4\xb2\x84L\xee\x95\"\x99\x96\xf5K\xd0\xf3`\xa4\xd7\xbblN\xeeG\xf3,~\xbe\xb1\xc9 &\xd3oj\x16^\xa7\x14\xbe\x1a\xf32\xf3;\x1c\x14 T\xd9g\x92~\xad\x1c\x83\x0d\x16`\xd2\x9e\xfezM0(\xf9RC\xd7\x16Z\xb1\xe0%\x89\xe0c\x18\xc1K\xbd\x17J.Y\x97\xe7y e\xa2\xa0\x8c\xfe\x95Q\x15$ \x9c)\x1f\x00s\x16mP\xf5'p\x91\xec\xeap\xe4AD\x16T\x13G\x06J\xcc\x96\x13up\xacIY[\xb5\x12\xc2\x85\xcffn\x82\x92\xba\xae\xaa\xdc6\xb9\xda-]\xdd`}3Y\xc5B~\xa2\xe1]h\xec>!\xc5P\x80O\xb9\xa7\x1eb\x99=Q\xf3\xacslz\x97\x88\xf6\xf5\x0e\xdd*\x8d\xa4\xfa\xcc1\x06\xb7\xa2#\xe9\x92\x16\xf0%\xb5L5\x00\xa8\xbbn\x19\xa2\x81_0\x80\xafH\x90X\xed\xe7\xe0\x14\x17\xc6\x19e \xdd\xa8\xf8C\xbb\x7f\xedW_\xf8\xccv\xecj\xa8\xb6\xa7mct\xe6J\xb5\xe6Im\x10\x90:0\xf9*\xa7|\x06s\xb8\x0dw\xdb-\x8f\xd5\xb3\xfd\xf6\xb3i\xf9\x9d\xcds\x7fa\xf1\x188\x97\xb1CG\xc6\x80a\xe4\x9b\xbb\xf3XZ\xe4\xea \xe6\xc9+\xa9\x9d\x99/\xa4\x18:\xec\xaa\xe7D\xdd5\x1e\xc4`r\xa9\x03\n^\x89\xe3:\x87G\"kt\x0e\x0fa\x0e\x87p\x81\x99\x07\xf2\x08U\x0c\x18g\x8a\x85 X@\xfb,\x13\xf2w\x88ei\xd9\xc6n1\xe8'r\x9c\xfc!z6\xa4\x01\xe9\xd2\xf4\x96\x9a\xda\x0e\x7f\x13\x93\x17\x89\x9f\xa7\xc5\xc4\xed0\xa2\xe5\x01\x99\xb1\x8e< \x0b\x16\xc1\x05\xe1l2\xf3\xc8\x03\xa2 \x1f\x81=\xc6r\xc1\xb4#\xeeKsZ\xbcJ\n\x06\xc3^\x04\xbdQ;\xa9E\xad'\xcf\xa4\x16\x89\xaa\x15_%\xc5\x0f\xcb\xac\xe4\xa4\x9e\x95\xdcq\x9ar\x01\xb6d-1I3\x8e<\xcb\x93\xb3\xc4\xe6\xd9\xa6d.\xde\x13\xed\x8b2\xa1\x04n\xc1\x99!\x14\xd2\n '\x0c6\xcb\xae\xe1k\xbf@\x901\x04\x99d\xabjU\xf3\x1dE\xa00\xb1\x7f\xe5\xc4\xc6\xe0\xa1\x96\x0dvs\x975\xc0c\xe1!\xec\xc2!|\x92\x19\x0cq\x9b\xed\xca\x08SqsW\xa8\x1f\xf7\xc43f\x8c.\x03\xb0'\xd8c\xe8\xfb\xa4\x16\xd3\xfcNe\xcf9aq\x92\xba\x19*\xe5\xdeo})q\x06\n \x14\xdfb\x94\xc08^\xc4\xe3\x84\xad\x84A|\x00\x97Xo\xbb\x195 \xe4A\x14\xb12\xf1R\xd6x\x89\xf4ORrN\xd2\xea]\xfb\"n%~\xe1\x06\x89\x08\x9b\xa8BL\xcbuV^\xf6b\x14\x1c^\x9b\xb8\xdc;7\xd3\x05\x82E\xac\x14~\xad \xa4\xcf13z\x17^\xb9\xe2,k\xdbj\xb3\xf4-H \xcaJ\x1c\x9aU\x03 \xcb,\x992T\\h2\xaf\xcah\xaf^R\xba\x0d\xf1p\x91&c\xe4\xdb\xf6lQ\xbb\xb5\xc1&\xb4 \xf9&d\xa0\xd1\xcbn'8\xfe\x0d\xc9$tjZ\xfeTK\xab'\x9b\xc0\x15\xe6\xf8\xd3\xc8>!%%\x81j\xd7NE\xc1\x19)'(\x16\xcbb\xd6\x05 %\xbcU\x11\xfa\x96]\xae\xc1\xc9\xca \xe1\x1b\x16\xbai%\xe0\x9f\x90\x11\x91dQ\xd9R-;\xbe\xe6\x16\xbc\x8b2\xbb\x96\x16\x11%w*\xe8*l\xe3\x1e\x1e\xe6^%\xd9\xea`\xcb|\xf3:|R\x87\xecn\x04;{\xeeV\x97\x14wWW\xcb\xad\xf5\xb8\x16\xb0\xad\xa1a\x9f\xf0\xc8\xd9\xf1\x05\xb3#\xfbd\x99HnH7\x07\xb1\x17(\x9a@\xee\x00\xf0&\x89W\x1e\xfb'^i\xf7\xe1\x95\x90\xa3\xd9\x91o\xe2\x95vw\x1b\xe4\x19y\xec\x97g\xc4\xdc\x87\xd7\xb4\xce\xaf\x93\xd7\xe3qg\x9e\x91&\x9fx,\x08\xad\xd7\x89\xa6o\xc2v\x11\x8dz\xcb\xbe\xf5\x97\xce\xbf\xa8\xee_9\"Y\xe2\xaf\xac\xfa\xe7\x1e\xddfI\x19\xca\xedi\x17gOJ\xe4\xb3\xaf\xcd\x06\x05a0\x14\xb1\xabB.\x9e\xa8\xa7\xec\xdfW\x04\x86b\xd1\xd6\x8d)\xd0F\xd9)\x9aur\xa5\xfe\xd8 _\xbc\x02\xa1s@\xa1\x04\xc1\xa2\xd7w\xa6\xd7\xad\xec\xdc\x98\xc8_\x92d\xe2\x82\x05:\x9b\x135\xb8\x9c\x1a\x87\xa3s7\x91\xc6\xdcl\x94\x90\xc2\xb4\\I\x81\x12\xf6\x00&\xac\xad\xc1\x9a\xb1v\xe2\x89W\xcf\x8f?X2O\x9c\xa3\x05]\x83\x9cM\x7f5gV<\xc0\xb1\xa3h\xac%-\xa8f\xd2\x8cn\xd3\x7f\x9d\xb3\xe1\x8c\xa9`\x90sV\x05\x83\x9c\xb32\x18\xe4\x9c\x95\x89\"\x9f\xc8\x9c\x91\xda\xbbx\xbf|[\xbd\xa5~\xe1\x8b\xa5\xfd\xed\x89\xb2\xc5i\xb7\xd5\x17\xea\x17>\xaaR{=)\xf3|U\x0f\xcadOOj\xd9\x9f\xf0\x85f\xe2\xa0'\x0d\x89\x19_\xd2\x93\xf4<\xd1r\xf6\xc8\x87z\x0e\x9d'\xb5\xa4:\xa2\x0b=\x03\xce\x13=#N\x04\xf3\xb6\x08\xf4\x84L\xb3\xdcd}\xb4iZh\xe9\xd0\x84\xde\xcc\x0c#\xdb\xca\x8d\x81\xeb\\\x86^hL\x97Y\xbb\x88\xfaC\xe1\x13e\x0e\xad\x15\x0e\x80\x8f\\\xadK=\xe1p\xc4O2s7\x99\xf4\xbb\x10\xaaHs/LT\xbd\xb0S\xf2\x18\xf4Q\x0c]\x06,,R\x1fs\xba\x15\xd7\xc0\x8c\xb0\x85\x1d\xd4q\x86!\x8e\x06\xdfJj\xa0jSe\xe3\x80\x85\x95,\xf3\x80\xf2\x12\x06p\\\xe5\xce2\xcf\x7f+1\xabTj\x8e\x13\xbb\x0f\xa0\x10.\xa6\x05\xfaIJX\x14\xa3R\xfc\xb2\x12\xe4\x0c\xddD\x96%\xf48\x8d\x0f#X6)\x98\x01G\x1fO\x19i\x1d\xef\x9d(\x1a\xd4q\x14\x83\x8c\xbf\x00S\xa5\xf5\x13\x85\xfa\x0e\x84\xcd\xdc\x08k\xee\xc4\x0b\x07\x93:\x0e\xda,J\x88\x839&\xcb\xe4\xd8\xa5\x83\xd1\x80\x82\xf8Rf\x86\x0c\x1a\xbf6DN\xb5Y\x9c('\x9b\x8ceoRY\x91\xa1\x92/\x92~mq9M\xceD\x85\x11\xc4udi\x1fog,\x82\x15\x8b8\xd3\xe0J\xa3~b?\xad*^]\x1d\xe2F\x08KEay\xb2\x1b_\xc2\x04-,\xc8\x1dQ3Ryf\x87O-\x91\x88d\x1cv\xc3\xc6\xc4\xa0\x16\xf7\xcc\xe7\xb6\x8c\xc0jc\xad\xe9q\x96\xb5rV\x16O\x13u)b\x12K\xff\xa5C\x85`\xe2x?PQ\xee\xf8\xd3\xce\xa3\x82\xf4K\x89e\xe5\xc3]\xf4\x8c\xdd\x81\xd8\xfd \xaa\x18\xf9k\x16\xbe\x11_y\x04s\xc4\x1d\xfe\xf2\xdca\x0f\x95@\xe8\xe4\xe1\xd5\x95\xa0\xe3,\x9fvZ\xee\x87SG\xd1\x11\xd0\xd4\x12X\xedq'\x85\x03N5\xdd\x9f\xc8\x96\xd1\xb3k9$\xe6\\)`\xdcvx\x97/a\xd1t\xcb\xcfPs\xdc\xb1\xac\xc2\xa9\xd5\x7f\x01S$/\xf5\x05L\xe0\xd1#\xc8\xdc\xdf\x8d1\x00f\x9b\x1f\xeb\xea\x03\xc72\x8d\xcb\x05\x1d\xdf\xf0\x82\xe2\xb9\xf6\xc0\xea`\xa1_|\xed\x8d\x19]L\x97Z\xf4\xa5M\xe8k^\x89,\xb2\xc7E\x9d.\x85|\xf3ZJUh\xe7\xcbv;\xbe\xba\xf80\xd2\x86/a\x17\x82\x83.\xf5#\x92\x8f\xe1\x00\xd2.$\x079\xf2X\xb8\xa2\x17\x98y?\x13\x87R\xc2Q\x83\xf2S;\x0b\xedn \xe0\x9c\x92co ]l=\xf6K(qaL\xf6c;D\x96\xad\xec\\\xe7\x0e\x8d\xc2\xb2T\x93\xc3\x0e\x17\x92\x96\x9a\xaa\\\xfc\xd4T\xe5\x0co(=9\xc5_U\xd6\xa3e\xa9$\xcf\xf0\x87&5&\xe2\x86\xd4\x97\xc7\xe2W=\xb9\xd7\xd2\x0b\x14G\xcc\xa5Q;c\x18\x06}\xc6\x07$\xec\xfa\\|\xf34\x85_\xb6\xa1l\x03q,\xfc\xf1er\x1ewL\x05\x11N\xf3\x0f\x15qS\x8a\xd9\xd6\x07\xc8\x0b#^j\xbe\x14\x99kc\n\x96\xb3\x83sK\x1b\xc4u\xb8td\xcc\x19\x0b\x13\x9f\xb4\xe5\x89\x8d\xa1`\xe1\xd4$\x8d\xc5 \xa5\xf2F\x05\x92\x0d\x136\xde\xb2c\x18\xc0\xd8\x1c6h[\xd1\xa2>\xf2\xf2\xf8'\x95[\xa6\xdeUT\x83\x9d\x80<\n;-\xde\x12\x0e\xcb\x9b\xcaD\x16\xeb\xe3l\xc7 \xd8\xf0\xe6\xd8\xce\xd3\x95j6\xf4\x07(c\xf0\x88\xe6\x99J\xa4\x07\xea\x9c\x05\"?\x97dK\x91+\xe5\xa3\xe2\xe2\xa5g\x1a\xc3\xa7\xf6\x91\x94\x16\xf4\x86\xedW\xb7\xac\x9a\xf9A\xf1\xe5C!\xd0(V\x10\xb6\xe1\xdc\x86t5sD\xc9DJ\xbe\x15\xbf~ \xfc\x16\xd0\x15\x07\x0b\xab\x0eJ\x1f\x06\x11\xaa\x95\xa3'\x03\xffhg\x00\xe7N\xc4\xeb*\xf3n\xad\xe8\xe5L\xd2\xa3\x05\xbd\xa8\xa83Q\xeeX\x7f\xa2\xe2\x0f,\xe5\x8d5\xb3\xbe\x9en\x07\xf33\xd8\xd9\xf6\x0e\xf6?\xf1a\xff1\xc6\x03\xb6m\xc5\x19\x96\xa5\xcc\x8c\xd8H\x91\x9b>@\xb3\xd1.\xfe\xbd\x8d!c\xbc\x05\x83\xc7\x02\xc7\x87\xb8\xb9\xbf\x92.2\x15s\xdc[j\xd8\x86\x86_\x13\xa7R\x13\xfb+\xd1#\xd5\x91i\xac\x82N\xb7a\xccG\xfd \xc4\xe7r\x1fa\xf5\xac\xb4\xbe\xe3\x0fa\xa8\x8cG\xe9H\xee*.\xd8\x8da[e\x1f(\xf8\x9f\xe7\x86\x11\x8d\x85L\xc8\x1f\x8f#QF}\xcc\x0f\x00\xf1o\x82\xff\xba&2\x15\xd2X\x82\x11\x04\xf8\xe72|\x00\x0b\x0e\x11\xec\xb9\xe0\xbb\xc9k\n\xb5\xa1\x8b\xf1\x9a\xf1n\xd2\xe5N2\xc3 \x8a\x87\x18#!\xc8\xc6RH\xdc\x07|`x[Soat\xe3\xc4\xbc\xb2X0]|s\xeb\x16\xc6\x01\xa3h6i\xa8 :h\xc5\x1c#X\x90\x90\xa7bz\x9c\xdf(\x1e\xc0\n\x1e\xc19\xff\x87S\x82.Y\xe2\x14\x060E\n\xb22+I\xd4\xc5\xbb\x9bK\x92s:\x12\xfdV\xbf\xad \xa4\xcc\xfc\x9d\xfaP\xf4|\x8e\xb4\x0b\x060\xe9\xa0L\xa0\x18|\x05\xb2\x80/\n\xc6\xac\xcfj\x8a\x93\x1c\xd9\x98e\x88g\xdd\xa3\x01,B\x8898\x16\xb8h\xf8o!\xdc\x16*\x07\x85VSR\x0f(\xda2\x85O\x96\xee\xc8\\8\xce8\xa5B\xfcp\xae\x9c\xdc\x87\xa9S\x98\xe1\x0bs\"\x84\xeeG\x8f\xf8\x81\xeeZ\x18>\x80\x13\xa4\xae\x8b\xea\xf5\x10Ns\x12\x7f\xb2\x7fu\"\x05\xb5\xed\x01\x04bK\x85\xf05\x9c\xe0&\xd9)!#\xf7\xd3\xf0\xc4,\xdc\x9a\x177\x15X\xfdH\xaa\x11E;M\x90\x16|ev`\xcc\x97(\x15\xfb\xe1\xa1\xd8\x0f\xb5\x0f\xca\xe5,8%\x90\xef+\xea\xb2#\xa9\xca\x8e1\x8ar\xe3\x94\xa4KTkT\xc7\x89`\xbbI\x8d\x9d_V\xba\x1d\xc08\xce\xca\xbd*\xd5\xdd\xabf\xbe\xeeU\x9cL\\\xb0 \x16\xe2\x0eFj6\xa3\x1b-\xc7\xf1c\xbf|\x91\xb9\x9e/\xb2\x16A_eY[\xba#B0)\xb6\x93 F \xc6\x9a\xbe'\x15\x10~$\xf7l\x82\xeb++\xfd\xc5A!RJ\x8aU\xbf\xe9\x94\x92\xb9\x88GK7@\x8f\x04\x1e)\xa7\xc9[\xb7D\x82\xa8\xca+9A\x92\xa2 \xdf\xccrcY\xa9\xb7])\xe6\x84[\xf5.*\xe5\x94\xce\xfa\x9co\xcas\xaf\xf6\xdf\xb9\xdbw\x16z|.\xdc\xe1>\xb0\xaa\xbe#\xbf\xb5\xb1\xdf\xcd\xf9\xff\xfa\xfa\x8e\x1f\xdcP,Ka\x8e\x9b\x08gk\xf0\xb5oJ\xbe\xba\xea\xe1\x9dfT\xb1+!\xaa\x14\xe1(\x02\xe1\x8f\x03\xb4\xdb\xf7OD\xea \x91;<\x15\xf6e\x8f\xdc\xe1^sz\xeeT&\xac\x842a\xc5{|\xcd\x02Q\xdd\xe6\x88\x05\xadP?K\xeb\xbf\xbb%\x0ci\xda\x89\x14KoM\xbd\x14K>8)\x1c\xfc\xbcHI\xc1,\n\xff\xa2\xe2\xf8\xf9\xd1\xba\xb4\xa9\x12\x06\"o\x93\x19o\x85~\xa2KQ\x18K\xf28\x10\xda\xd3\xea\xe7>|\x0d\x89r\xdcD\x1b\x910V\xb6\x93\x9fZDXu\xc9\xfe\xb5\xf9H\x15\x0bJk\x96}\x14\xf6Y\xf6\x92\xac\xc8\xe4\x98|\x0e\xc2\xcd)3\x19\xeeZ\xb8\x86\xb0?M\x93E\xc0;x\x1d\x8b|:\x1anr\xa2\x9b\xd7p\xb5\x8e\xb9\xba\x933:\\\xa0\xf1L\x95}c\xa10\xfe)%\x86\xe6\xdc\x1bkj\x0bND\x96J45(/\xb5X3\xabm\xa6B\x80\x18Qi\x19\x0e\xf7F]\x8b\x9d\x0b\xd5\x9eXG9\n\x91j\xdd:\x081?\xe9L\x1f+\x12Z\xb5\x10\xcbB)\xb2\x19+\xc9\xb0\xf1=\xb9\xfc\x9e(\xca!|\xc3%\xe5\xc8\xcc\x9c\x0c\x07\xe3kt\x7f\xf7\xcc\xbc\xfc\xa6\xc3\xeb\x04\xdd\x954\xaf\x93\x93eA^\x92U\x01U)\x0bE\xf1\xdaI|m\x9d\xbe\xb7\xd0tc\x8f\x9b7\xff\xec\xafm\xfe\xd5_\xdb\xfc\xc7\x8e8\xb6\x7f0W\x8aXV\x1bA\xbd{~\x83o\xf1.\xafN\xad9CR\xe6\x08\x8b9\xaa\xe2%\x9d\x0d\x9d\x97e\x92\xe5G\xb2\xfe\x19\xfa^9\x15b\xfe\x83\x05}7\xc9n\x02\x0b#\x12\x99*\x8a\xf09\xcd\xe2\xa2\xd3\x0d\x15\xf4\x8e\x12:N\x97\x13R4\xab\xda\x97-\xaa\x176kv\x16\xdb[\x1c\xc7\xe3\x19yO\x8a%\x86Q\x12\x1aaE3\xe9Q\xf8\x91\xe2\xe3Z\xd9.W\x04\x93\x12C\xcc\xce\x14P\xa7P\xadzV\x9e\x8c\xa1\xf4:\x14\xbc\xa1]\x1da-v\xa5y\xa7n:?\xa1\xef\xe5\x07\xc1\x9b.\xa9^i7UW\xa2]\xbb\x98\xaeXx?'Vu)\xbbf\xee,_\xab.\xe4RHg\x1d[uU\xfb\x0c\xdd\\\x87\xbb\x1d\xd9\x90\x00\xc3:\xd5\xbb\xda\x87{\xa3H\xfb\xbb\xe5^\xd8\xbc\xdcfQ+\x19Q\x97-\x8b\xb9\x1f>\xf2\x95\xc2\x15\xfe\x9d\xcbLp\x00\xbf[\x11\xa9v\xd3F{?ws\xba\x9d\x148o\x12\xdd|s\xd2b\xa7\x01y3\xa4\xd3\xa7\xa82\xc6\x81bbz7\xc5\xadj\xa6d\x18&\x8c\xbe\xf6\xa2\xc4Nn\x14\xedp@N\x02\xe43\xbck\x13\xa0\xac\xc3\xd9\xa6N\x83\xf2\xa0\x9a\x91\xfaXZ\x04mD)\xeb\x98\xb2\x99(\xf9\xcc\xb9\x86\xc3o:\xeb*o@i\x94\xf8\x9atR\x19t\xb4\x93\x04F\xc9\xaf\xf6\xb7\xcf\xa5OZ&h\x83\xdbE\x05}\x13\x9c4H\xc9\xef\x1cZ\xcbHC\xb6\x18)\xd0\x92\xe3\x9bq\x01\xc0\xa2NhUE\xb4\xec\xf1\xef\xbb=\xd7\xdc\x1b\x9c\xea,\x16m\xeev\xba s\xe4\xe2\xb2\x88`\x7f\xd02\xe7\xcd \xa9S\xe0\xa3y\x06\xa0sW\x1b\x8c\x13\xf4\xbd(\xa4D\xdb\x961pW\xa8Yj\x90-W:\xc1\xb2'\xd4\x04\xc8\xbc\x8f;{\xb0cHa\x0d\x92{h\xd2X+WP\xa7\xb1\xb5\xc6--_\x8f\x8d\xeb\xe0\x0e\xa9\x81\x97\xa3\xe6\xe8\x90\xff8\x0f\xd7Q\x8c\xe4*\x82-\x1b\xec\xcc\xb1E\xae\x19\x19\xcfx{\x0f^[\xfe\x0f_\x95_\xc7\xc9\x8e\x9b1k\xa2\x9a\x15\x8f\xcf\xcbD\xbd~\xc7o\x86\xc7\xd4\x8a\xf7\xb2\xb5U\x11\xc4\xccq\xfaf\x7f-;P\x8e\xa7\xcd\x0bH[\xbb\xa1\xb4P(t\x98\x0e\xa6\xc0\xe5My\xae\xc5 \xd8\xcf\x98\xa5\xb9*/t#|\xe2p\xeb\x05%5\xe8|\x02~P%R\xdc\xde\x8e \xe3\x0d\xe5\x12\x02hn\xb6\xe7\xf9\xe4Sm\xfa\x84\x81Z<7\x1f\xe1\x03\xa6&\x1f\x918*/v\x03m\x036\xc3\xd3\xf9S\xe1\\\xdc\xc9\x8d\x80\n\xca\xa8s$\x89\xfb\x0be\x08K|\xb8\x12\x906\xb1b\xb8\xeb\xb0\x9a\xa9\x0b\xb3Y\x1a\x13\x83\xeaW\x1d_\xc6h*\xd4r\x02}\xc6\x8a\x882\xb7:\"\xcf\xd8\xcap\x82U\xf01\xf3;~\xb6\x81'\xbe\xc4\x8fX\"N\xf9\x0c7r#\xe2B\xc4\x1e\xdcF\x1f\x1c\x0cDD\x9f\x1c\xf9\xfe[Y\xc1,\xeb\xcc\x9b\xc4\xd1\xe6\x9d\xa8cf\xb7'|@\ni \xc8\xe1\x04\x0c\x12X\xaf!\xe6\x7f\xc5e\x8f\x1c&}\x96 \x15\xbav\x10\x07a\x05)\xf3\xa0\xa4\x93w\x0c;&\xcc,`0\x10\x9e~\x01\xdfl\x85tD\xda\x85\x03c\xa5\x89s\xe9\xd5\xe8>vR\xc5bV\xe1\x06K\xac\xac\xa5\x8c\xa1\xcb\xca\x80\x18\xc1\x16\x9eR\x992\x8b-\xcb4>A\xda<+<\x8ea\x99\xe1\x86\xc9p\xd3*)\x10\x93E\x15\x15\x93\xb6\xcd\xe9$\xa6\x9b1\xf8\xb1\x85\x11\xa4_\xa6\xa7\xca\x9c<NRf\xd5\xab\x1c\xb3,\x84\x0e\xad\x03\xb5p\x9c\xfa\xfak\xa7\x86C\x07\xa4\xa8\xaf#\x8a\xb8\x10\xae\x04\xd6\xe7i'1\xbe\x16\xcb&}o\xd7k\xd8\xc2r\x90\xf1\xf66<\x84\xa4\xdal)\xa7A\xa5VN\x9ec\x14\x0b>\xe09\x96!\xda\xa4\xc2\xbcf!F\x11\xb4\xdd\xe5\xaf\xf45\xbe\x9e\xb2N\xda\xf4x\xff^K\xe4\xd6\xd3)\xb4\xd1Zm\xab\xf8\xec\xeb\xe3\xb1\xbc7|\x96\xaa\xb5z\x10B\xd6yZrxmo\x17\xf0HC\xf9\xae\x93\xd8+\xfa\x1d\xba\"\xe0\xf9u\xe5V\x13\x10T\x13tM\xa1\xe4\xaa1 \x96\xd2\xe2\x11\x0c\xb0g\x91\xa8\xa3\x13\xc9'\xcfU\x92\\\xf4\xc6\xd05\x95\x9b(\x08\xeaXk;0\x7f\xf2=0\xddd\xfb\x86x`;\x19K|\xf6\x08 \x1c.\xef\xe72\xc8\xc2E\xa7\xba\x11\xdd\xc1i\xa7\x9d\xa4J\xa4\xe4\xc6\xd3\xb2\xc9u\xa7aE\xb5\x8a\x16\xdb]\xb8\xd9\xee0\x02C\xa0\xe5\xcd\xf0\xdc7\xb0,Y\xee\xb3.\x9b0\xf7_~\xdel@\xb0p\x93\xe3\"\x19\x12\xb5\xabk\x92uP\xa4De\x1d\\JZ\x11\xd6Y\x7f\xa4\x0cY\x832d\x918\xc2\xb2.\xba\xd0-7L+\xabG\x07\x8f\xcf1\x04+\xf9\x8d\xf1/\xde\x81\xe0\xf2\x8a\x1a\xde\x8ee<\x93\x83\xbd\x87\x8bY\x92\x12\xb0:\xe5\x81\xae\x0e@\xdb\x95>\xf3\x04\xfb\xd8\x88\xe6\xf9 ?\xde\x88\xe1\xe3\x8b-\x01\x0e\xfcE:e\xa9s$\x07P\xce\x86\x04E\x07\xed9WUC\xac[\x99_\x85\x89\xb2e\x1d\n\x04\xd0\xb8\xe7-\xf4\xbcJ\xe1!\x16\xac\xb9\x05q\x80U\xfb\x90(\xa7\x18\xa8\x0d\x07*M7R\x04*\xcb\x01$()\x86\xa5$\xb1\xb5\x8b\xc59\xedxeW\x95\xf3\x85\xe5_\xb7K(\xfd\x15\xa6\x8c\xdc.\xae\x81\\\xc5aG\xa1\xf3\x1b\xa3R\x92\xadJ\xbc\x94\x14\xc4\xcbd\x02\xea\xdc\x92\xa9\xe672\xcf\xa6\xbe\xf4\x06d/\xb9\xa4\x00\xa5\xfb\xf5po\xc4%T\xd4\x10\x06K\x15O\x81\xd8\xc5\x8f\xd18H\xab#\x93\x96\x84#\x8f\xc4\xf9\x99v\x93E~-\x85sn\"K\xa3\xa5\xad\xe5u\xb6\xa0\\\xb4\x90\xac\xa3g\x97\x1di\xbb(`\xd7\xaa\xdd C\xbb\x01E\xf533\xfd\xec\xa4\xa8\xc2#\x13]@M\xf2\x8b\"\xb8Kk\xda\xe8\xccN-\xc5\x9eT\xda\x8d\x9a\x83 \xeb(\xe2$\xe1>\xccq\xe4\x99(\xbdx\x08\xe2C\xe9^\xc6\xac\xee\x83e\x96i\xeb\x11\x91\xf4\x8b,g~\xd2\xacb\xa2\x022\xbc3\x8a\x80\x0e\xef\x8c\x10\xcb\xc9p\x7f\x04;@\x87\xfb\x86\x0c\xc1aU\x90\xbc\x91\x95\xc1j\xb1I\x86l\xa4v\xd2\x00\xf6\xdbm6+\xf4\xb9\x1a\xe2\xa0\x1f\xee\x99\x06&8\xd7_e\x8d\x0f\xe1\xd6\xfdR\xfc\xfa!h(\x04m8\xf5\xc2\x89S\xc2\xdfE\xc3+\x0f\xbb\xd1\x17\xe2 \x1fJ\x89\x1bV\xbc\xc8\xc9d9\xde@\x87![\xff\x15=+\x05;G\xd1\x87S(*,\xf9\xf2\xdd\xb6\x0c\xd4\x8a\xe5&\xdfWG@\xca&\x03\xaf\x0f:\x12\x89\xf9\xcc\xc3\xf5\xf4|\xff\xd5\x8b'\x13\xf5s\xec[N%\x8f\xbfu\x0b\xa8\xa6\xbf\xad\x85M\xae\xd7U4\x82\xf8\x05[\x03\xde\xedz-b[\xbd\xc6\xfb\xb2\x8a\xbf\xf8\x02\xa1Y\xea:\xf91OH\x90\xfbz8\x97k\xd6\xf2\xb3\x04\x81\x84\xf3\x84\x06u\xcb\x14\x0c\xfc\xf6u3\x0b\x9f\xf0\xf3\xac\xce\xc4\xdfE\xbcv&Bx\xb6T\xfd\x0bM\xa2\x81Z\xfa=i\xa9\x10\xe4\x95\xd9\x92\xf0\x81\x06\x94\xf6|\xba\x05Y\xe2\xc1\xb9\xe5\x9e\xc0U\x97\x022_\x1f~2\xc1O\x01\x86\xb0W>\x97\x1c\xdf\x1d\x07\xfe\xf5\xf5m\x1e\xec\xff\x06\x9c!\xaef\xa7\x00\x86\xba \\\xce\xe4\x9a\x80\x92X\xe0\x02\x88H@\xd2/\xb29\xb9N\x07\x1c\xbd\x1c\xcd\xcb\xfaR\xffFFJ\xe5\xc7\x8c\x11\xbb\xa5\xb3\xaf,Gq](\xe2\x00]\xb3\xbcy\x81\xf8\x87\xce\\\x08\xc2\xc4\"jr\x90\xfe8\xa3\x05\xcb\x97c\xd4,\xfb\xd1\xf7\xaf,\x8e\xdeI\x99\xcdFD a\x89\x116\xcb\xb3\x0bD\xf1\x0f\xab\x059\xca\xf3,\x0fzG\x97\x0b2fd\x02\xc3\x97\x11\xfc4\x02\xb6\\\xa4\xe4\x00z\xb0\xdd\xcaHk\x19\xc3?\xdd\xd1U\xaf\x88\x8cG\x08#x\xea\x1b`\xf5\x8b\xbb\xcd\xa5\x00[^\xb1A\x19\x17x\xbd\x9a\xfe\x87\xbb\xe9z\xc4V {\xfaUc\xb88\xb7\x15j\x81\\^\xbd\x12\x8f\xea\x1c\x9c\x14\xd7\\zT\xee\xf6\xd6\x13\xb41\xce\x9aY\xdd\xf1-\xe9\xa4/\xf3\xac\xbf\xd0\xb3\xcbW\xdf\x0bm\x13k\xa7.\xb5\x8c\x9eu\xe6\xba'\xf0Hf\xa3<\x10\xc5>\xe0\x10v\xf8\x0f\xbfs\x9fZ\xb6\xf2\xb9\xf4E\xfb\xc9x\xe0\xa3\x14m\xe7\xa5\xf9\xd3\x9f=0\x1f\x8f\xc0\xd3\x94@\x96\x03\x06E\xef\xa4\xc9\xa7r\x0f\x98I\xbc\x18\x14\x1f\xb5\x81@X\x97\xd9\x0b\x16yG\xe2d\xc1A\x94$\xd0\x99SLX\xb0\x13Z\xb0\x98\x8eI6\xd5*\x9e;\x9c\"\x10r\x88\x1e\xf5Ok\xc9>\xf3\xc0\xa6z.\x9bpr\xe8\xfc\xa2\xa8\x96\xea\xd6\xb2\xc6U(\xe5'\xb2*\xac~\x89\xea\xda\xf2\xe3\xca\xf4\x8b\xe5+\x8f\xb7\xf8\xc5\x8c\x11\xae^\x9d\xa8K\xceeB\xa6 %\xef\xf2lAr\xb6\x92\x9c\xaf\x7f+\xfc:#L\x13-7\x19\x83\xbat\x12$\xc2&7j\xe2\xaa\xdb F\xbf\x8a\xdax;\x8fo\xd3uF\x1a\x89\x98#\xe8=\x8d)\xcd\x18o\x1d2\n1\x85\xa4L\xcf\x9b\x93q\x96O\xfa\xbd\x92d\x8ah;\x07\x8bi\xba\xba3\xb7\xa9\xcb\x12\x8d\xd0\xbc\xae\xfa\xa7 \x9d\x04U\xd4]\xf7gW0\x8e\xd9x\x06\x086\xf7\x80\xae\x02\xe5\x9a\xae\x8e\x88X\xea'\x90\xeb\xa7\xf1\x9c\x94\xa1\xc3\x9fD(^\x8c?&d\x1a/S\xf6\x13\xe7\x960\xe7\x8c\xb5\x1b\xfb\x00\xc4\xea\x88\x80\xc3\x8f\xa4\xa9\x98P\x97\x05q2\x94)\xcaS\xab\x15C\x9d\x99t]\xa5\xe4\xa7\xb1P\"\xda\xb1\xa9h\xd3\x7f\xb1\xe0\x1d\x8b\xe0#gL\xde\xdd\\\x95\xaew7Y\xa5\xebm>!9\x99\xbc\x8e\x17\xf0g/\x82\xdeU\xbbV\xd7\xbbk\xd4\xea:\xd7k\x04\xf0\x95\x125\xfc\xed\x90\xadyh\xc9b:\x18F\x8a\x1f\xd2PT\xa6m\xd5\xd0z\xf7o\xaenS\x96\x9d\xe1S\x92I\x95\"}\xb4\xb5{\xa1\xcc\x88\xe0\x1c\xf5f\x95\xbf~g\xae\xdaG\xef\xae_\xfbHo\xb8]\x06\xb5\xd6p-\xf5\xb8\x0f\xb0+\x90U\x9f\x06\xa8\xb8\xd1 \xa7?rv\xbf\x91nDGD+\xf2i\xa30\xd8\xd2\xba\xdc\xe8E\xbe\xb9\x80\xa1\x0e\x90\xa1\x05\xd6\x12\xde\xe57/\xbf\x12\x17\xed\xa1O\xf3l~DY\xbe\x12\xbaRM\xf9\xd3\x8d+\x9b\x15J\x10\xc2\xdf\xa0U%\xc1#\xbf6\xab\x11\x85Z\xb7V3BEH\xe4\x12\xd5?\xb2.+\xdf\xd5\xaf\x99t\xe5$\xfe\xd5\x16\xd4\xd1\xc2\xf4\x9d-\xf2^\x18$\x1a\x84dRh\x84t\x00\x1fX\x1d\xbe\xc3\x99\xaanP\x83zY\xe7\xc0\xb0o#`\xc1\x1b\x16\xc1\xafa\x04o\xaeA\x81\xdb\x82\x1fR`\x13&\xd4\x9ao\xc4\x0dt\x96K\x13m\x8b\xa2i\xce\x86Q?rL>oD3\xb0q\xf5e\x9b.\xbc\xa9\xc3\xcd+T\xe8\\\xab\xc8l\xc67\x0e\xdf\xef\x159\xdc2%\x1b\xac\x8dQ%\x1b@\xa3\x86\xf74A\xd7\x1d\x89y*+\x87=8\xfc*l\x05\x896\x80 0\xb7\x13;t\xb2h\x06\x02\xa7\x02\x9fk\x87\xcd\x06`\xc8\xaf\x03\x06\xda\x00\xc3<^\x18\xf0\x15$\x18Z\x85_\xde|\xd9\x19\x119B\x94\xda(\xa99\xe0\xd6&\xaf\x99\xf3<\x1c\x97I\xc0l1KW\x9c@\xa9|\xcb\xff\x14\xeb\x10\x8a,=e\x0fV\xd5y\xd9|\x16\xc9|\xcd\x14\x0eD1 SWa'Q\xd8\xechB\x1b\x9f\x0e\x96\xd0\x01Au<\x99\x8f\x0bZ\xd7=\xb5\x0c\x1aV\xd4m\x82\xcd\xba\xa8\x9e\nye\x19\xa2N\xef\x8bRL@\x83\x8aP\x1a\xa2\xa2Y\xac\x02\x16\xc4G\xbf\xb0\xd2\xbcbZ\x0e\xd7RT' \x0b\xde\xb3\x08^\x86\x11\xbc\xd7\x97\xca\x14\x08\xe8I\xc4\xcbh\xc06%\x7f\xffe\x9b\xab\x93\xd2\xd8\xd7\xc7\xb8\xe9\xbcy3\xdca\x08r_\x96\xcc8S?\xbc\xff\"\x84\xbd\x11\x0ce\xbe\x18\xca\x14\x862\x85\xa1\xa2\xda\x96\xc2K\xaf\x9aa,x\xc6\"\xf8!\x8c\xe0\xd9\x97s\x10\x0e\xe4{v#\xc8\xf7Wb\x18\xf3\xc7/\xe3dn\x0c\xbf\xfe\xc3HT\xe1\xcf\x86\x88\xf4Jr\xba\xaft\xe8\x10)\xcct\xf1\x10\xedu\x94,D\xb3\x9fW\xff\x95\x88\x84\xc7\xa5\xed!\xbf\xbeb\x81\xb5\x88\x9e\xe6d\x11;\xdf*\xd1\x15K\xf4\xa30 \xaa\x12\xa3\xd8Z\xdd\xdc\x157-R,\xbf\xdaz9#\xa2\x1b\x81\xfd_\x83\xe8\x1e\x91\xa1~{\x01\xca\xf0\xca\x9a[\xb8\xa3\xa2\x86Z/\xd6\xe5e\x89\xde\x95\xae\x11\x82@\x0eS\x18\xa0~)\xde%\xee|S\x0e\x1e\xf7r\x06\x87\"\x91\x8b@\x89\x1cQ\xa2\xba\xb9'n\xee\xb5\xf3\xe5\xeb\x97\xc5e\xd1\x83&\xd4\xce\xe1z\x1a\x827\xf6G\xcf\xec\x8f^\xd9\x1fa\x8e\xaa \xa7\x11\x9c\x10.ZP\xed\xcd/T\xb0.\xa9\xe4A\xb7\xa1g\xd5\xb0\xd6:\xdc\xf8\xf8\xaci\xd4\xf9\xe7o/he\xf2qw\xe6\xa9L\x10v\xd0YY\x1d\xdd\x85\xe6\xf5\xcd[\x1b\xdc\x90\x18\xe2\x94ks\xe1\xe2\xeba\xf5\xb7\xd2Y\x18b6\x9b3\xf1R\xfeV\x92\x89Qe%\xfa\xbfuK\x1b@M\x9fk\x9eli\x1f\xd7l\x03v\x9dT\xff\x84\xcc\x17l\x85br\xf9c\x001\x95\xa2\xf6/\xa4\x9d\xf2\xb41UO\x8dq{\xd1*+\xb5\xb0P\xffM\xb3j-\xe9'\x9a]P\xf8DV\xd0\xfb\x1bl\x03\x81m\xf8[\x0f2\n\xfc\x97\xc2c\x8b\x91\xbc\x06\xbd\xad\n|\xb2\x98~Y\x8b\xc3\x8c\x14\x1ez\xc3\x9a1\xa1\xbeD\x85\xd2ku\xe0V\xad,\x846\x9a\n\xe7\xe0\xa0Z\x87v\x1d\xe6\xda\x1ax*\xd7\xed\x1b\xc7OCZ\x9f\xa9\xccS\xea\xca\xac\xd8\x9a)\xeb\x9ci\xfb\xe8\xae\xcd\xf4\x86\xb4\xfd\xce>\xae\xcf\x1eX!\x91\x07\x06\\k:jZ:\x00])e1Y_uk\xd8\x8dS\xbc9v\xf3\xdf8C\xe25\xc1\xff\x84 \xa1\xbeA62\x0dT\x1b@\x06\x0d\xf8\x1a\x04\x1ap\xa8w\x82\xcc\x16z\xd7j\xc0\xb1\x15\xa8\x8c\xc5\nuxO\xd7\xed\xd3\xf2\xd7\x19a\xefT\xf3o\xa7\x9c\xb4\xd8\x11E\x1b\x7f\xde\xcc\xe4\xed\x17(\xb2\xec(\x99--\xfe\xebu\xdd\xcb\xb0\xaf\xee\xf6\xde\xa3\x93D\xcf\xab\xb3\xc2\xdd\x993'\xfd9E\xff\xde\x94\xcacgk\x1c\x94\xc9\xe9\xf9\xb3k'\xa7O\xae\x9d\x9c\xde\xc5\xc1\x97\x92t<\x99\xd8\x8b\x11\x18\xb6\xa6\x17 S7 \xb7\x82-\x04\xe1\x16\x19N\x9b9\xa4\xeb,zF+[UFK\x0bUy\x1b\xeb`\x97\x0f\xda\xe5\xb73*Jdk\xd5\xb2\xab\x9b?'\x18\xd4\xa2\x1e\xf0\x9f\xd5\xc3V\xf9m\xf5\xe0\x19!\x8bF\xf1\xed\xfa\xc3F\xb3\xeaV\xfd%c\x01\xef\x8c\x1aJ\x8dg\xd4XA\xbc\xbc\xdd\xae \x9eQ\x8f:\xe0\x19\xed\xdb\xeb\x80\xe3CW\x1dp\x16\x144\x82#\x8ey\x05\xbd1\x07\x93\x82\xa2-Yf\xd0\xf6\x96D\x02Nq\xfb\x9f\x88\xb0?\x9bZ\xbd1\xa9\xaawL\x98U\x9a*\xbeH\x9a\xaa\xb8Vg\xbb\xf1d\xe2\xdb\xee\xa4<g\x9a,\xebV3}|\xb3\x17O.\xd3\xdeQ\xc91\xba\xfb\xf1\x12\x9e\xec\xbdH!\xc9\xdd\xc7\x92&x.:\xfb8/\x13\x04\xa3\x03q\x89\xa3\x91\xb1\xe6\x9b\x1c\x91\xa0\xfe\"\xa0\xac]\xdf\xa0\x83\xfd\x915\x0dl!9aU\x0fL\xf2\xcd2\xc1\xd4L9\x05\x95^,:\xd7-S\xd7\xd4?\xb6\x9d=\xd6!\xd6j\xfb\xed>\xc0\x9aq\xac\xac\xbcC\xb7\xb7CH\x026\xa4\xa3\xb0}\xec85\x8a\xe5\xb1\xcd\x8f\x1d\x8b\xfa\xc6x\xec(\x07\xa9Z$\xc1p\xb7yx4\x96>\xa1\x8c\xe4\x05\x19\xb3\x9b]\xfe*\xa3\x12\xf3\xab\xbd.0\xc4/\xbeC6\x94\x98NeS\x18\x9f\x17\xcb~-,0\xf0\x14N\xbfg\xd6'\xe7$_y\xb4\xac\xae\x12\x1dJ#\x8cE\xf5\x0b\x02 \x90\xcd\x93\xa4\xc5\xa6$\xeefZ\x1aHR,OY\x1e\xff\x7f8\xf2o\xc2\x91\xeb\xc6ry\xa2\x08&\xb2\xbai\x14Q<\xa4\xcf1\x85`\xc43G\xab\xe5\x10\x81\x93\xebi\xf4$9H7I=/K\xaf6\xd1q\xafCM\xd3\x1e\\[\xe7T\xdf!Y\xce|y\x819\x0d~.\xbdw:Nf\xde\xee\x93\x95\x8f^\xc2\xd08\xebn\xff/\xd2 \x15\x7f\xadz\x85iZ\x85\xb61\xcf#3t\x90c\xcc\xb9\xafa\xd88\x1d?\x85Xk\xc4\x9b\xea\x80L\xf9\xb0;\xd5[\xc5\x7f^\xfb\xb3\x99\xc2G\xf65\x8f?\x91\xe0\x0bu>8\xfb\xa48FM|J\xdb*\xa01\x8d`\xcaq\xac\xf7\xf7\xbf\x9f\x9c<\x7f\xfd\xfa\xe3\x87\xc7O^\x1d\x9d\x1c\x1f}89\xf9\xfb\xdf{mG\x90\x05\x7f\xbb\xf0P\x1aM:\x11\x81X\xaa5\xb1f\xb5&\x05\x05U([j\x88\xb1\x1c\x9c<4\xa5w<\xae\xf0|\xc1V\"|\xba\x04\xa3\x9f\"b\xd6\xbd\x17\xebJ\xae\x85#\x08\xa3\xcaf\xdf(_G\xd5\xb4\x88\xc8\xea]\xad)\xf3M\xc2}\xee\xa4Kc\xcc;\x10\x8c\xf9xg40\x99j,\xed\xce\xbf@\xa5u!TZg\xb4\xd2d]\xfc\xbfM\x93u\xe6\x86_\xa9\xee3\x14X\xd4\x7f-\xe8pJ\x95\x03\xddBSj-*\xa5\xd6\xa2\xae`R?\xeb\x0f$k\xb0\xa0\xba\xcej\xe1\xa3\xf0Y\xb8\x14>\x8b.\x85\xcf\x82\xaa}\x08\x038\xa7\xf2\x06\xdf\x8a\x88\x92\x11\xb0`N9q\n#\x98\xdf\x9cFh\xfe\x97h\x84\xe67\xa9\x11\x92\xfe\xf7.\xc5\xd0\x9cV~\xfa\x82r\x9f\x19(\xf7\x8aFp\xca\xf7\xc9\xdc\x83\x16\x9flJ\xd8N\xffC\x84\xed\xc2 \xcd\x95 l+>\xde\x13\x1a<\xf7/\xbby\xf4\x05\x84\xed\xad l\x97\x1aa\xe3\xb7\xfaKZ\xcc\x92){\x9c\xa6\xbe\xd1\xfc\x97\xde\x8a\xee\xa7nE\xf7)\xad\x1clO\xf5\xbdvA\xe5\x0d\xb9\xd7Np\xaf\x1d\xd1\x08.8\xb5<\xba\xb9\xbdvt\x93\xbb\xe2\x98\xc5\xe3O0\xe4\x1bb\xd4\xde\x10G\xd7p\x05\xa9\x1b\xe3g$6\x14\xaaG\xbd\x15\xd1\x92r\x93\xf0\x81H\xbcNvv\x1e\x84\xf8\xbd\xf0\xaa\xb2\xef\x058\x04\x99\x84\xc6\x14\xf7W\x1b\xf9\x82\x90O\x1b\x01\x88\x8f\xba2\x1c\xf2_\x86\xec\x1d\xad^\x96\xc5\xac\xab\x97J\xdbP\xae\xaf\x9f\xd6\xa1\xd4\xf4\x95\xce$\xb8\xfb\xb7[\xedD\x1a\x03\xcc\x07\x1e!0\x9bo\xc1\x0e\xecq\x88?\x12j\xc3\x9d\x9d\x10?\xb3\xf1\x05\x98Y\xa5lcH-\xb9\x0f\xf9\x825\xd7\x82_\x86D\xcbu|\xb4\x04S\x96\x9c6\xae\x87\x16o\xd5\xac\x18*\xef\xd6\xcb\x9f3\xe9\xda\xff\x98\x9a\xc5\x93\xd6\xe2=\xe6\xa4\xc8C0\x91\xead\xb4u\x05$\x0c\x05G\xe4^\xbf*\x07I\x87\xd4\x82\x0c\xb8\x19\xba\x1d\x9b\xaa\xe4\xed\xcb\xf0\xa0\x0d84&\xb2\xe4\xd9P\x00*4pT\xa7\x10\xeb\xdfN\x9d\x0f-2\x8aw\xca\xc0X\xdb\xfa\xb3\xc6\xfa\xd3\xeb\xae\x7f\xdb\xfd\xba\xb5\xfeYge*\x1de\x8b4\x19\x93`\xcf\xdd\xa6<\xa66i\x97\xa3\xa1\xa7:\xca\xd4\x95\x0f\x067\xbb3\x9d\xa2\x8d\xd67\x9fF\xb6\xb8\xce,6\xb12}i|\xb6D\xa9\x06\x06m\x82W\x9c\x15q\x83\x8d#\x89\xcf\x91\xc9\x89\xca[\xe9\xe8Q\x0e\xd6\xc7\x15\x8cbq\x11\xa2\x7fe\xd6p\x7f\x08jM\xd7-TeG\x17\xa49\xfa*M\x8f5\xc6\xaf<\x99\xf2\xda\xc9\x84e\xce\xb2:\xc9\xe2\x07\xcd\x83\x10\xeff\xee\xd3\xdd\xbd\x88yc\x11\xb3k\xad\xdfcj\xaa0\xddX\xc3\xcd\xd4V\xa5.\xa9\xad\xb9\xaa\x10\x94\xe3\xeacZMH\x9f\xcc\x86a\xc8\xfa\xcc\xf6,z\xa8\xa3kkAe\xdc\x81\xbe$\xd5\xd1\xa2y~\xb9\x90\x82\x8a=\x977\x10!\xaf%\x13\xccU0\x08\xd5\x92 \xe27y\x07\x13\xe85Y?\x1d\xa9\xd7l3\xb3\x0e\xb1\x9a\xa9\xf1\xec\xcb\xfdNn\xcf\xc8\x84N\xaf\x7f\xc5O\xe4]\xf1\x03\xb2\xdf\n\xd0\x91\xf0\xec\x17\xcb`Q\xd1\x98g(Z\xead\x1e\xba\xb2\xf393\xf3\xf9D\x05\x1c\xa1\xd6\x15\x85\x9a\x01\\\x1a\xa4\xf7c\x1a\xc1S\x93\xde\xf5\xc3\xe3\xa7/-\x9a\xd7O\xfc\xfd#\x0fi\xffq\xe9\xae\xd7\x91?\xb4.\xf3\x7frf\x94\xa9\x98\xe1L\xe7\x84\xb3\xa6\xa3^V\xd1\xbf\\\xfc\xaaS\x07\xbf\x94\x81o\x9d\xa7\xee\xb1\xd0\x03\x1cs\x80<\xa6A\xcb=\xc5\xd2\xe8\xbbnq\xb1D{\xabYR;\x9c\x86\xa8\xa3cCjH\x84k\x85\xa4\x9e\xbe\x8bU\xbc1\x0d#\xa8\\&\xb5\xd0\x88\xe3\xd5\xfc4K\xb1B\x82\xeby\xb3\xadf}|\xfd\xd7':|Z\xaa\x17?\xf9h\x03?\xb9\xb4\x81\x9f\xba\xb4\x81\xbc\x0b\xdd\xb6\xf6D\xb7\xb5E@\xfb\xcf+\x02\xf91\xe2\xcbDM\xe9\xbfdJl\x8f4_\xafH\xe0bE@.8\x91\xb9qE\xa6\xed\xeah_\xaf\x8d6zh0\x06U\xbe\x07\x8b\xe9\xcdi\xdaV\xd8c\xa61\xad\x15\xc4\xbbm\x9a\xc0\xb2\xe7tB.\xc9\xe4\x98|\xf6\x00\x8cF\xe2\xdf\xcb\xa8s\xbf^^\x1c\xfb\xb7\x8e\xc01\xa6\xc2\xf6\xd1\xccc\x82\xdf\x9e\xfa\xa4\x07\x9c\x85Y-H6\xc5\xfc\xda/\x8eQ\xe7\xc8\xff\x10\x16\x1e\x0b\xf8P\xbb\xc4\xdf\xf1\x9d\xde\xdb7\xff-\x13|\xfb\xa6\x9c\xe2\xdb779\xc9\x97du\x0d<y\xa3e\x18\xf1\xeb\xe7u\xbc\xf0\xef\xe2\xa3\xdc\xaa\xd5\xf0\x9a\x1ax\xb0\xf5#\xc8\xa1GW\x1b\x90\x83?-\xd5\xb8\xea\x02\xc1\x7fl\xb3W\xd9{<\xa6-\xc7\xfc\x8e]\x1f\xc2\xa5\x11\xc2\xbf\xbb9\x0d\x96\x82\xb2(SvE'\xa5\\\xec\xd9\xfbF\xdd\x167\xd9\xed\xc6\x9b\xe4\xd9F\xc4t\xa3\xe6\x8b\xfa\xact\x82\x8f3[6\x9fW\xab\xac\xd4\x10jN\xbe\x84\x02\x19W\xff\x11\x1e\xdd\x18\xe8_%\xc5\x06K\xbe`7\xd5\xaf0C\xf8\xf7\xdc\x1b\"\xc7r\x9a\x92Q\xcf\xa7\x87\xca\xd4\xe1Y\xfe\xc2\xaa]\"\xb0-\x92dc\xa0n\x8f\xffj\x1eF\x92F\xa9\x1e_\xc7\x8b\x05\xc9\xc3\xfe\xefYB\x83^\x04\xbd\xb0\xfa\xd4g\xec\xe3\x8c\x8e\xe3\x0dV\xe5\x07u^xM\x144\xde\xdb^\xa0E]\\f\x19\x92Q_\x8c\x89\xb3\xbc\xfe\xa7\xaf\xba\xe40ca\xcc\x13evQ\x9b\x83a\x8f\x07\x82)\x84C\x881%\xf9\x01,I\x80\xfca?)\x04\x9fX\x1a\x01\x87dd\xa4\xdc\xfau\x15\xfa{z\xebW\x89\x00\x0e\xafo\xfd\xb2U\xec\x80\x9a\xb1 kZy:\xa2\xfa\xf7\x1a_\xb9\xc7}.+!d\xc3]\x8f:\xcfIeo\xc5EX\x06 z\xec\xaa@\xdc\"\xd0\n\xad\xb6\xebm\xa9\xcb\x9e}\xf5\\V\x89\x92\xd5/Lu\x8d\xd5\xa5(9\x96\x96\x1e@\xda\xa4\xa28&.q\xaa\xa7\x8a\x9e\x86\x91\xba7Mc\xc6\x08\x0d\xb6v\xa5%\x06\xb5\x8b\x86\xa2'\xce\xad\x00\x128Z\x9aQ/t)\xad\x9d\xd8\xb5\x1b\xf8\xd0\xee\xa3\xaa\x10\xcb\xe9\x8a\xd9r\xa2.;\xc0\xafDm\xb4v9[|\xa8\xd4\xb7\x06wh?vDy\xf4\xfa\xa4M\xd6\xd9\xb5\xba\x07\xb1O\xbc\xc1\x8c8\x12#\x1b\x0b!\xb4n\x11\xca\xf2\xa46V\x9f\xa1j\xfa\xbd7~\xdd\x9c\x93|\xe5y\xa6xr\xc1\xd4\x91\x8a\xbc\x83\x0b\xce#p\x95\xfc\x04\x15h\xae\xf4\xf9\xe8w\x8a_h\x85\xd6\x84\x96hk\xcf\x02\xfc\xa6# \x98\x01#\x88\xae'd\x9a'\xd7\x1fz>AC\xf8\x13\xd8\xfa\xa4\x93F\x8f\x1eU\xa3\x10\x98\xfcS\xcc\x89\x1aX\xcc\x1b\xa0\xebI\x0f1\xa1\x89\xb9<\xb8aXB+\xb4\x19,j\xc8\x125W\x9c\xa1\x84\x8ay\xbbYh.Sc\x18\x08\xe7@|6o\xa3oRZR\x04=\x84C\xe8aE\x028\x80^\xd4\xb3c2\x83\x01\xf4\x0czTu} \xa6\xbbp\x9c\xcaR\xfd[{\xe8\xb2\xba-,%\xfc_t3\xdaR%\xa4\xb4I\xe1\x9a\x96^4x\xe6\xf4\xda\x9c%\xc8\x1d\xe0\xc5\xb7}\"\xab/ ?\xcf\xbdVt^\x93C=\xd0\xaa\xdcb\xf5\x94\x9d^\x9d\x89\xb3t\xc3\x0d\x16A\xe6\\\xe0\x06\xae\xb5\x1cT\x1e\xc2>\xe6G\xe4\x98\x02\x07b\xc3\xb6\xb6\x83\xae\x06\xc0\x9a\xb5\x0e\xe4\xc8\xe0\x10\x82LR9l.\x94\xed\x92\xb2\xf4\xad\xa8\x18\x988\x0b2\xe7\xfe {\x9f\x9c\xcd\xd8\x86pS\x84Ig\x84*C\x94\x9b>I\xaeG\x9a\xdes\xab\xdd\x1dl\x83\xc6^\xfcq\xb7D*=\x19\xaeWWh\\\xbe&\x06?\xb9\xde!\xc1\xb9\x91\xcdz\x14yYD\xac\xdc\x1b\x8a\xa5\xc2LY0L]\xe5^5&\x9a3\xb3\x06\xe4\x80\xb9\x1f\x94\xba\xbf\x80\xd6\xfc\xee\xd5\xcb\xe9\x92\xbd\x8a7Q\x0f\x88}\x8d\x1e2\xbb\x11\xec\xecy\xf5\x92\x14G\xf3\x05\xf3\xb11\xc8^4\"\xae\xcb\xe9M\xc9\xfd@.c\x9d\x19\xf5\xe0EmFH\xaf\xd9\x8c\xb3%m\xee\xfc\x8e\xf9<\x0dH\xa5J\x12\xdb^\n\xb0\xe2\xe3\x0d\xf4*\xd8\xfb\x13_\xf6T\xf6\xefK\xa5@\xa3T\x1fI\x10V\x06)W\x06<%\xe5\x98\x88w\x17\xeb\x8a\xdf\xcb\xbc AU\xa7\\T\x12\xe7\xbbR\xcfy\xec%\xb5i2\x97\x99\xddU\x97\xa3\x94\n\x9e\x05\xba\xb9\xcdR!\xefJ?o}V\x8f|^\xc6\xe9&\xc2\xd69)\xc9\x86W\xfb2k\xa6\xc7V\xd3\x1dN\xcdk\x8b\x81Z\xfd\x13L\x97W+\xceDHu\xdf\xcd)\xd6\xab\xb7\xfeN\xc3\x86\xaa\xd5\xcd'\xd6\xaa\x1at\xf9\x8e5>&\xc6<\xa0\xea\xba\xf2\xe4\xf7\xc4.}\x93m\xb8\xdf\xa5\xf8\x81;|\xa3\xd3\xa5\x14Y6\xe7,,\xd5\";xn\xea']V\xc2%m\n\x97\xbc\xefa\x16\x01\x1d9\x05L/\xd6\x8aO\xff%\xf1%n5o\xf4M\x84=T\x8dQc\xa9]\xf3\x98\x1agd\xc7\x8a\xe8 7\xb3z8\xda\xb2\x99MF\xb1!rx\x0e\xa5\x02\xdc\xa6\xe3\xf1_-\xcf\xa1\xbc$r\x05\xfdF\x91o\xcc\xbc \xe8\x1f\xfb5\x9f\xc6\xec\xf5\xb5\xa51\xdf5\x02m\x13\xffb\xae\x93\xa4\xae&m\xabk\xea\xbb6\xb2\xd6Bn8k]\xc7\xa1\xae\x895o\xf1\x8d%O\xd9\xe2\x06ga \xd9\x1f5)\xc1WD\xd0\x8f\x12\x7f\x8c\xe1\xa7\xdd\xab\x0d\xcc\x90\xf5\x82y\x1e\xd8R\xa1\xa4.\xef\xfa\x14\x1f\x9fa]m\x9b>5\xaa\xfcd}\x07\xfe\x9cz\x0e\xddTnZ\xf8\x03c\xa1MUa:\xabU\x98\xee\xcc\xb6\x9c`\\\x90GV\xe4\x00}\x1a\xb1Z:\xc6-\xa9\xa4\xc4I\x04+\xceJ\xafB\x14\x13V\x95\xbf\xa7\x19D\xaee\xf1:\xad\xce\xf2l\xb9\xf8w\xb0\xe2~6\xbc@f\xbb{\xc7P\xd5\xc5\xf9wO\x06\xde\xc8\xb9w\xe9\\\xf8\x95\xb59w\xfe\x99\xe0\xdc\xbb\xf7\xb5~I\xf0\x04\"\x04r\xbd\x86\xe1(\xc4\x18\x06\xccY>\x8c#HFp\x00\x89\x87q\xd0A\xc7\xec0P(\xe8G\x81\xb3:\xe5\xed4?U\x14\x8cD\x90\x04&\x12\xa9.\xcb\xf87\x165f\xf1&r\x06\xd2!\x99py%b\x08V\x9e\xbd<\xdf\x84\x86\xab~\x9e\xd3M{J\x8a\xe3\xe5\xa9g\x81\xcfR\x06\x1c\xd8|\xc2\xcaJ)\xc2\xea,y\xf4J'\xe4\xb7\xb4\xe5y\\&\xc6\xd9 \x9f\x96y\x8a\x0b\xce\x0bm2\xc9\xc05K 3m\x96ay\xd3\xffT\xfbDVo\xa7\x1b\x0c\xa9<\xd483\xb7\x11$o\xc0H(\"\xce\xfd\x8f\xf8\x9aV\x86\xef\xea\xe7-)\xd5\xa7\xdbts5Z\xab\xe4W\x1f\xf9Y\xff\xfe^^g],\xbc7\xae\xb11\x97U\xbb\xefy|\xb9A\xaf/\xd8F*\x8cy|\xb9\xe9\x99\xfa\xa2\x96\x8f\xc8\xab\x13?\xa3Yk\x06p\x08\xef\xa9pa\xf9\xe8'(\xcd\x13z\xfd\xe9\x88\xee\x98\xe8\xcewn9\xd9\x18\x13\x8d!\x8f`n\xbe\xf8\x94,6\x80\x9d\xd6\xfe\xeb\x98\xcd\xfa\xf3\xf82\xb0T$\xb6t\xd6\x14\xbe}\xa5\x04\xcb\x1e\xe3M\x06D\xbb\xe3=\x90\x9fgI\xba\xa1\x99\xa1\x1c\xccO\xd74l|J\x16\x1f)K\xd2\xcd\xba\x15@WC\xdeL\x05%\x12\x82m\xd6_\xdb\xcaa\xc8\x0c\x06\xe6\xfeX\xfc\x89l\xb0\xbc\xacf\x80\xb8\x06J\xf1\xfen\x18\xa5x\x93\x9b\xa3\x14\xff\xeaKP\xea:\x92\xc4?\xbc\xb8[\xad\x84\xd1G\x8aj\xdeZ\xf26\x8c\xac\xec`x\x15;\xcd\xac\xdaeuq\x91.\xab\xc7\xe6i\x05Zja \xd8\xb1\xbb\xb5sY\xcf\xbf\xa3\xec\x7f\xc9\xb8\x19\x04\x1f\x82*\x91e\xd7\x0c\xb5f*\xe9\xa7\xfc\xf6\xd6-\xd8\xde\x8eQH\x95\x0dZ\n\x95\xab\xeb*\x8c \xb6\xbeq\x15\x81^\x06\xe9\xbfhU\xb2|\x93e!5o,\xfe\x9d[\xae\xe5\xd7\xd2\xe1Q\xa2.9N\xcf(K\xfdB\xdf\xa9e9\xd3\xee\x0f\xc0?\xe2Q\xbf\x9c\xd1\x8f\xfae\x89\x95\xd0/e\xba\x89;\x8bS\xa9K\xe8\xf0kE\xaa<\x1c\x1aUD\xa3\xac\xdf\xeb7\xd1B:\xab\xfa\xbd\x9d\xe2\xdb{\x1d\xae\xad`\xdaki\x04\x05j<\x0f9i\x1b\x0c\xe0\x8d\x14s>s\x8c,\xf0\x05\x91\xe6o)=C\xfe\x0b\x16\xb7\x8b\x088)\x80\xf1\xe1\xe6\x9aW~\xf0\\\x97\xa9(\x0f\xad\xcd\x98\n\x15C\xb0!_\xba\xb9\x186\x8b\x8b\xd9\xd3l\xb2\x81\xa3\x0b\x9bU\xd9\x05\xb0\x8a\xf3L\xcf6\xd0\xcd#@\xb9\xbd\x84\x83\xf2`\x00{p\x1bv\xcb\x8d\xe6 ]\xcaL:\xeeT\xf0\xf9\xb9\xf2\xa36\x16\x0ea\xcf\\\xf5\xb6|M\x0c\xcck\xf1\x1b\xdf\xf0\xd1^\xa2\x90~\xe7\xee\x9d\xfd\xef\xf6\xbe\xbds\xefN\x18\x95\xb7\xe1\xe1C\xd8\xbb\x07k`\xf0\xe8\xd1#\xd8\xd9\xbb\x17\xc1\xdd\xfb{\xdf\xde\xbd\xf7\xdd\xee7\xcd\xf7\xeeh\xef\xdd\x89\xe0^\xf5\x1c\xd3\xb9\x07\x0c\xb6\xe1\xce\xb7\xf7\xef\xee\x7f\xb7\xbf\xf7\xdd}Xs\x98\xfe\x8bo\xe9\x7f\xc9\xcf\xf6\xeeG\xb0\xbf\x7f\xf7\xfe\xb7\xfb\xfb\xf7\xca\xe6\x8f\xe5\xe7\xd8M\xf9\xe6\x9d\x08\xee\xec\xdf\xbf\x7f\xf7\xdb\xef\xbe\xdb\xfd.\xd4\x9bpl\xb9@\xe7\x0f(\xd6\xba<\xdc\x10j0\x80;{\xf05\xe4\xb0\x0d\x9fi\xf0\x94\xe0\xa6yJ\x02\x16\x86|F\xf6\xce\xc1sw\xaaKh\xc5\xaf\xd1K}R>\xdd\x943\xc2\x8e:;\xd8\xacq\xcfvCc9k( \xa2\x89\x14\xd6\xee4\x95\xc1|/~\x10\xc9\xc9\xb4\\\x00\xfa\x1b\x1f\xe8p\xaa\x02\xbc?\xd0\xe1+\xfe\xf7\x07i\xb2(\xf8-\x19:*n\xcb\xc0\xea\xf2\xbe\x1e8\x04\x03xF\xf1IB\x8b\x85\xc8\x8d\x8f\x9f\x1cg\xcb\xbc\x9eW\xc6\x04\xb2\x86\x12I\xba\xb7\xd6g\x87\xad\x8fgqBE\xdb\xd2\x96)ng\x94\xc5 F\xa5\xe3\x10\x84\xee\x12c\xc4s\xd3)9M\x93\x0dB#K\x01\xe5#\xb3\xae\x84I\xed\xb38j\xb9\xf7\xfbZ\xff\xedT1\xb7\xcb\x02N\xe1n#\xc3j)M('\x89a\x12A6\xb2\x17\x9f\x06\x10FU\xcd&\xe9)4\xce\xe3\xc5\xcb\xba\x0f\xb2/\x8c\xae\x01\x04\xbe\xeeMXt\x89\x19-X\x88h\x04\x07\x10\xb0\x93\xeb\xec\xd6\xd7\x14\x93\x9btf\xeexn\x07\x92\xdaI\xf5\xbe,\xed\xfc\xde\xd9\xce\x90E@F^\x8d\xbd\xb1\x90\xc3\xe6\xd9\xdc\xb1\xd9\xb6\x88O2.h\xc3\xd32\xac\xf773\xac\x9d\x1b\x1e\xd63\xf7\xb0z\x05\xd2\xc0\x9a\xf1\x03\x0e\xe1\xc5\xf1\xdb7}\xf1(\x99\xae\x84\xdaVRK\xcf\xdc\xa2\xaf\x9c\x04\xf8\xd8\x9a\xc9\xd3\xd2\xdc\xc7N\x0c\"\xf0\xb0\xe4\xe0\x08<\xc2\xbfw\x90\x9d\xf3\xea\xe0\xb3G\x07\x9c\xf5\xd9\x86\xfd\xfb\xf7\xee\xde\xbds\xef\x9b\xfb\xdf\xc16\x04\x843d\xf7C\xf1\xe7\xa3G\xb0\xdf>}\xeb\x0b%[{M\x87\x0bu$\xbe\xae\x8eD\x19\xa8\xc5\xef5\xceD\x91^\xa0|\xd08\x14;\x89\x9a\xec\xb6\xb1\xb0\x0c\xa3o\x0f0\xfc\x161\xa5>p<\xd82s\xf2\x93/M\xdf\xe0\xa73\xbf\xd1\xc0\xa9=\xbf\x93b\x9a\xd0 JO\x9e\xdd~\x817\xdd!:\xd3\xc1\x01\xec\xb4\xfd\xffLfN>*?\xc3\xd5\xb9\x9e>S\x99\xa8\x9c\xa3\xd1\xd2\x0c\x97{\xc7\xcb\xd53\x8d\x0b\xf6\xfc\x9a#+\x8dq\x7f\xd9\xe8n\"~\xc3\x13qn2~\xc3\xb7\xcb\xc5\x06}*Dm\x86\x15\xd9\x9d\x98\xf9:U\x96\x02.u\x8a\xa0Z\xb1\x10\x98\xf6j_\xfe\x89\x15\x8c;\xb23\xf2\x8b\xa8\xec\x8c\x9c`\xef*\xe7~t\xce\xafRDt\x04\x85VI\x15\x959\xa3\x03{J0\xef\xc9\xd1\x1eB\x0e\x07\x90\xab\xd0\xfdc=\x02x_94\x88\xd61\xc7\x81gP\xb0r\xee\xfc\"\xf2Qz\xab\xfe\x15$\xe4:\x8e\x9f\xa2\x9a\xbdW\xeb7\xe4\x9a\xe8\x89\xfd\x1b;\x0d6\xd2k\x87\x88\x82\xaa\x14]]\x0b\xa5e^\xafG\xd3\xdc\xba%\xf8\x8b\x99\x96dU\xe1\xed\xb5\xfc\x11EUmKV\xa5M\xdd\x117s^j\xc1\xe3\xd1\x00v1\x07\x85%\x90\xc8\x02(d\xbefUt\xd1\xce^\xf5\xa5<\xb4Z\xd5\x14\xc1v\xc61\x92/\xb2b\x13\xd3\xe6\xf5\x93|\xf8\x99\xf5\xaa\x12\x03%\n\xec\xc3\xd7\xea\xd7\x0e\xec\x89\x02\x03\x0e\xcb\x9f-\xf5\xa1~)\xa3\x01s\xca\xe5\xeaJ\xbe\xd8V\xd79 \xad\x8d`+\xc1R\x00b]Eh)\x17\xd1\xb30\xd4\x92\x96b\xb3\xf2\xbe\xb3\xe5+\xde{\xe4\xca\xa3\xa1C\xd4l\xb6\xf3\x06i\x84\xb0\xaa\x19\xd0~\xc7\xfe;'\xefo\x0f\xbd\x86\xfd\xac\x84l\xc6!\x1b\xc3\xff\xe5\xb2\x03\xdfz\x1c\x07\x92\x9a\x0b0\xc6\xfc\x1e\x88w\xe0\x10>\xf3\xb9\xc7\"\x1d)Zm\xd4\xcfL\xa5\x8c\xed\x02\xbf\xd3ZbIU^Q \xefm\x9c\x92\xf8\xdc\x87\xf3Rf\xb9!\xefbd8\x94C\xc7bq\x1e\xe5\xa5 \x00J\xff\x12\xc1\xcb~6EgZ\xebg\"?\x89\xe6\x9d\xef<gY\xb9\xf1\x83\x92\x18\xc8{\x9c\x0e\xc8\x8c4QE\x89\xfc|\x9c6u\xb9[!\xb3S\xb1H>}\\\xc3\xbf\x8e\x1f\xf8\x9e\x11\xaa7\xed\xde\xe3y\xf2\xffq-\xbd\xeaK\xf5\xc7+\x1a\xb9\x90\xcd{\x0c?'l\xe6sN)\x99G\xef\xc5\x8do\x9c\xa7S\x01\x02\xed\xf1\xdbL\x96\xb5;W!\xa7\x08Uz\xd8\x89\xd27\xe87\xcb\xba-\xef\xd0q\xbd=\xfc\x8dy,\xc4 Q\x0bZ\x9a\x95\xbd\xe4\xb4\xeb\xe6\xd31T\x9d\x86\x9b\xd9l\xd8|\x95\xc3\xcd\x03\xda\x89\x96g[\x94\xd0\xaeY \xf4\xc7\x9a%A\xbf]3)\xfc\x1a\xe9J\xda\x10\xef\xbd\xac-\x9f\xb8\xf7C\xadiq\xef\x84\x18>\xbe \x86\xaf\x8fH\xf3\xf36TT~\xb9\x03\xa0m\xb8\"P_\xb4\xef?\xcd\xd2\x94 \xa4\x0f\xe0\xd4\xe0\x03\x81\x01b\x1f\x0d\x0f\xf4\xb4\x92\xefX\xfb\xb9\xc8\xcb\xb70<\x91\xa9\x02\x8f\x8c\xa3d\x07P\x18\x1e\xe8Y%\xe7\x86\xe7\xef\xc98\xcb'\x07\x90\x9b\x9e\xc5\xf4\x8c\x1c\xc0\xca0\x89\xf7dAb\xde\xa4\xe1YR\x1c\xc0\xccp\x7f\x9agsLmkK\x97|\x15\x01\xe9\x93\xcbE\x96\xb3\x02\x93\xc4 \xac\xbcr\xfb\xb4\xf5\x96\x05\x81\x82\xe5\xc9\x98i\xf9i\x94 ]\xdbn\x9a\x0f\x8d\xdeQ\xb3u\x15\xfb\x16G\xb0\x8c\xa0hn$L\xc6\x1e\xb00\x82-\xe3\x1e\xe6]\xa7m\xfa\xa7\xa5\x01C=OX&L;\xca\xf3,\x0fz\xaf\x13\x9aL\x132\x01r9&\x0b> \xc8\xc6\xe3e\x9e\x93\xc9\x03\xe0\x93d3\x024\xa3;s\xf5\xe2\x84\x9c\x03\xa1\xe7I\x9eQNu1\x02\x8b\xbf4]\xa6)\x10\xde*\xccIQ\xc4g\x04b:\x81x2Ix\xb3q\n3\x92.\xa6\xcb\x14.\xe2\x9c&\xf4\xac\xe8\xf7\x0c\x14\x9b\xa4\x05q\x90\xfc1\xe7i\x9a\xc0r\xf8\xf7L\xed\xfcfP\x07\x05\xeb\xe7d\x91\xc6c\x12\xdc\xfe\xbf\xc5\xed\xb3\xa8\x9b\xa8AE\xd8\xc6\xc3\xe9\xf6v;\x84\x17\x90\x8a\x85a\x9f\xc6s\x0c\x8dxN\xcf\xe3<\x89)\x83\x9f\x92,\xc5\xe4\xdb\x86\xfc\x92\xad;l\x96g\x17\x90\xf6\xa7y<'\xc5\x87\xec\x1dV\x91\xd9k\xa6b\xd3\xb0\xfa\xcb\x91\x98\x06w\xee\x86f\xdc\xcd\xaf\xdf\xba#K\xa2L~>!\xd3\x84\x12\x95\xfc\x9c\x8bE\xbd\x93\x13R\xbc\xce&\xcb\x94\xf4L\xa4T:I5\\\x9e0\x8f\x12\xe7\xbb\x9ef\xf3yF\x8f.\x19\xa1\x85\xcc\x7f\x8e\xf7\x1bwH1\x8e\x17XS\xf1UB?\xbd\x8b\xb1\xae\xa2J\x9d\xdf\xba]\xcc\xe24\xcd.\x8e>/\xe3TV#d\xfd\xd3e\x92N\xbe\xcf\xf2\xf9\xb3\x98\xc5\xe2\xb5,g$\x97OY&o\x92<\x89\xd3\xe4\x0frL\xe2|,\xda[\xc4y\xa1\xff>#\xec8\x9e/Rr<\x9e\x91\xb9\xf8\xee<N\x93I\xcc\xc8\xbb8\x8f\xe7\x8d;\x8c\x91\x9c\xd6\xee\xbdN\xe8+\x91\xe2\xa8v7\xbe4\xdc\xfda\x99Lj7\x9e\xc5\x8c|H\xe6\xa4v\xb3\xac\x00W\xddz\x92e)\x89\xeb\x1d\x7f\x9f\xa4\xf5\xef\x9eSF\xce\xd0\xa6R\xdd{\xb3\x9c\x9f6nqR4_\xce\x9b\xc3-\xef-\xf2l\xf1tF\xc6\x9f\xe4ws2\xcf\x94\xd8\x90\xd4\xd2\xd3\x0b\x8a\xd76\xd2\xf2\xefN\x02\x1a\xdc\xdd3I?\x99|\xba\xf7\xad\xe9i\"\x9f~g\xfc6\x96O\xf7\xef\x98\x9e.U\xbf\xfb\xa6\xa7\x85zz/l\xd0C>\xaf\x17\xc7o\xdf\x88\x9d\xd1\xe9\x01\xc6\xf2U\x07\xb3\x8c\xb6*D5\xab\x8eF\xe8\xa8o\xdd\x82^\x86\xbd\xf6D\x11\xb2\x86\xb1\xa0\xb7\xa4b\x9fNzp\x00\\\x82*\xf8\xc6\x8d\x97)\x0b\x03\x16\x86\x8ex\xd7+\x18\xc7l<\x03q8\xb6\x1e\xcb\xef\x1a\xd9\x1b\xae\xf8^\x16\x03J\xa6\xabNH\xc8F\x8e\x05\xc3|$\xf9f-\xa9<\x1c4\xfb\xc6\x1e\xe2<\x8fW\x1bt@d\xb3\xe8]\xa3\xff-\xeaI\n+\xefp\xd4\xeeH\xb0%\x92O\xd2z\x03b\x0eM\xe3\xabr\x84\x1eT\n\xae\xe6\xb3\x9eAB\x0b\x16\xd31\xc9\xa6\xb0RK\xd2\xe7[\xd2\xf5i /\xc6\x01U\xcf\x86\x8b\xb7\xd2\xb2)\xce\xb8\xcb\xb4\xbc$\xec\x8b\x8c\xce8\xdb\xea\x95\x8a\xd9\xac\xde4\xd5Nd\x98`\xf0Cv\xcc<\x0b\x05)\x15\xa3)\x87\xbb\xd2\xfd\xecF\xb0\xacP\x91\xb4\xb3\xf3v [\xe6\xf0\xc5!3$\xe80\x14\xbe\xeb*\xc6N\x879\x17\x0f\xc90\x1f\x89\xf4\x8at\x99\xa6fMt+\x13&\x82\x8cf\xf9\x1c\x0f\x0f\x81s\x03\xb8\x8c\x90N|O}\x91\xd6<\xc1vOIQ\xd2\x9dc\xd9\xc7\x92\x8eo\xbe\x175\x11\xaff\x9b\x99\x9a\x8dT\xe2u\xbc\xf0A'+\xca4\x93\xfa\xba\xf4\xa2\xf5ue\x01_Y\xa1\x8a5\xe5\xee\x84?\xdb\xa5\x84p\xc8\xef\xb1\xcb\x7f\xdb\xa8K\xc5x9^\xa7\xee$s\x1e\x08Y\xd7\x81 U\xda\xfcn\\\xdd\xa5\x18r\xb1\x01\x98\x8aU\xc1\xc8\xfc\xc3lI?\xbdN&\x93\x94\\\xc49\xf1E\x9c\xee\xfd\xcf\xfa\x93\xa4X\xf0\xb3I2\x8eH\x97\x9cp\xe9n\xd4\xf4\xb2\xd3\x82\x05\x1d[\x08\xcd\x93\x01 0\x959\x0b,\xbel`\x14#\xccw\x0d\xe7\xa0\\#\x0e\x80e\xf14\x9btC\xf9\xbcL\xb2\xa5\xaal[I4+55\xc1\x05?[.\xf8D\xfc\x93\xa8+\xe0\xec\xf7Ty\xd4m\xe8\xf5Bc\x06\xa5\x10\x19pK0\xf3\x95\\f~\x82\xf9l<\x8c\xce\xa9N9\xa5\xc0\xe1\xbc\xa7\xfc3\xd0\x8a)V/\x8a\x13\xb2\x0d\x0eu\x9a\x11\x99\x83\xc0p\xec2\xce>\xb0\x91\x1d\x96\xf5^\xfaI\x81\x9dQ\x91\xf8\xfe\xa05\x88\xf6\xfcg\xc9\xd9,M\xcef\xdd\xdc\xa5Z\xe1I6Fu\xab\x99\x01\xd9\xaa\xf8\x8c\x9e!s\xaf\x08N`\xe4\x92=\xcd(#\x94\xa94\xac\x8f\xe0\x1e\xb9S\xc5\x03\xe9\xafX'\xdf\x8d+\xb5\xec0\xba\xd2@\xa4\x83\xab\xfa\x88\x90\x0b\xdf\x8dP=\xb2\x1c\xee\x8e\"\xd44\xecE\xa8@ \xfd\x84R\x92\xff\xf8\xe1\xf5+\x91q\x18\x16\xa8V\x10r\xb2\xa8g\xbb\x80\x87\xf0\x0d\x92\xc9\xdf~\xc3\xfdJ\xa5\xe7\xdc\xd8\x99m\x86\x03\x84\xf7\x94\xaa\xae\xb7\xb7\x8b\x910\xafM+\xd8\xecE\xb05\x86\xf5\x1a\x16\xf0\x08\xbe\x15\xbd\x08\xaa\x80w\x87\xb7\x7f;\xbe\xddg\xa4`\xc18\x8c\xf8\xdb\xfc\x83\xdb\xc3\xaf~\xbb\x18i\xf7\x83\xdem9\xb2\xf5\xbal\x80\"iN\"\xf8[\xefo\xa0\xdcN\x92\x08z\x7f\xeb\xe9?\x97\xc3\x02v\xe0\xee\x08\xb6\xd1)\x9e\xf2g\xbd\x9d\x9d\xdf.\xefp\x99\xbc\xba\xf5\xf5\xed\xdeh\xb8\x18\xb9\x8de\xb8,SQ\x98\xa1\x1f/\x16\x84N\x9e\xce\x92t\x12\xc4\x9a\xc8}\x94\x12\x8efA\xafX\xc4\xb4\x17\x86\xfd\x82\xb0\xc7\x8c\xe5\xc9\xe9\x92\x91\xa0W\xb0\x15\xaa\x03\x86\xbdq\x96f\xf9\x01\xfc\x9f{\xf7\xee=\x80iF\xd9\xce\x05\x11 qO\xb3t\xf2\xa0\x17\xe1\x8a\xe1\x7f\xfa\xabxo4\\\xc0!\xae\xdd\x1d8\x84}8@\x08\xdf\x87C\xb8+\xff\xe6\xf7\xef\xc0\x01l\xdf\xfeW\x10\x07\xa7\x05\xcb\xe31[\xa7I\\\xac\xe9d\xadL\x0fk\xbeg\xd7E0_\x17$g\xe1\xe1z\xc9\xb2p}\x1a\xc4\x05Y\x93\xb3\x84\xae\xb3,\x0dHL\xc3\xc3uN\xe2O\xeb\x15#\xe1z\x8c\x8f\xf9\x81\xb3\x9e\xc5\xf9\x1aE\xdb\xc9:\x8d\x8bb\x9df\x94\xac\xb3\xf9\"]g\xb4`\xeb\x8c\xb2\x84.I\xb8\x9e\x90\xe0tyvF\xf2\xf58\x99\xc7\xe9z\x9c\xc69YO\x03\xbe\xc7\xd7$\x0f\x0f\xd7 M\xd8:\x0d\xc8Y\xcc\xc8\x9a0\x12\x1e\x86\xebI\xb6\x9ed\xcb\xd3\x94\xacI0\x9ee\xeb\xb48L\xa6\xeb\xb4 A2\x0d\x0f\xf9<\xb0\xf6\xe8\x9a.\xe7\xebsB\xd9\xfa2\x18\x93\x05[\x93\xf1z\x11\xa4\xc98a\xeb,g\xe1\x9a\x91\x80N\x8a5*M\xd69\x0d\xc3\x90w\x9d\xa6l\x96g\xcb\xb3\xd9:N\x0b\xb2Nh\x9c\x06\xe9\x8a\x0f\xe5\x92O'\x8b\xf9\xd7\x01\x89\xc73>\xfb\x84p\xb0e\xf3\xf5\x92\x8e\x03\xbe{\xf9\x00\xcf\xd2\xec4N\xd7g\x19\xcb\xd6g\xcb8\x9f\xac\x93`\xba\x9e/\x02\x81\x03\xc5Z\x1b\x04\x0d\x12\xb6F\x95~p\x92\xd11 \x0f\xd7i\xc2\xa1\xb5dk%\xfa\xacY@\xf2i<&k\x92\xd38\x0d\x0f\xc3\xc3u\x11\xae\xd3 \x9e\x9fN\xe25a\xebl\xfci\x9d\xd1\xb3p=\x0f\x92q\x9e! \\\xa3\x8ai-\xd4\x08\xe1\xfaM\xfcfM\x83xN\x8a\x05o)f\xc99Y\x93K\xb6&\x17\xeb$]gl\xbdL\xd3p\x9d\x05\xc8\x16\xad\x17\xc2\x10\xbe\xce\xd7K\xb6>'y\x9eLH\xb8^\x04\xf1\xf8S|F\xd6q\x1e\xcf\x8bu\x9e\x9c\xf3u\xc93F\xc6\x8cp@\xb0l\x9c\xa5\xeb\xe5i\x9a\x8c\xc3u\x1e\xc4 \xc7\x98 \x9ed4]\xf1\x85\x9b\xae\xcf\x92\x82\x91|\xbd 1[\x7f^&y5\xefb\xbc$k\xa1b[\xb3|\xb5\xe6T1\x0c\xd7Ep\xba\xe2\x8b\x1f\xa7d\xb2&\xe9t=\xcbr\xb6N\xce(\x99\xac\x93?\x10<1K\xc6kT\xe7\xacY\xbe\x1c\xb3\xf5\xf2\xb4\x18\xe7\xc9\x82\xad\x97\x0b\x92\xafWt<\xcb3\x9a\xfcA&\xeb\x8b\x84\x8dg!\x87\xe8|\x91\xf2\xc1\xcf\x08]\xcf\x92b=\xcb\xb3\x8b\xe2p\x9d\xc7\xb4H8\xd2\xe4K\xb2\xceW\xeb\xd5\x82\x041\xee\x8f \x99\xae\x93\xc9\x9a\xc6s\xb2\xce\xa6a\xb8^\x064\x18K4\x9f\x90i\xc0\xd9E\x8e'\x19]\xa7\xa4(\xd6\x85\x18#K\xd2p]\x90u\x91\xf0\x05:\x0f\xe2|\x9d\xe4l\x19\xa7\xeb,\x99\xacQm\xca\xd7\xe7\"\x18\xcf\xe2\xfc\x84\x89\x01\x91\x9c\xacgIJ\xd6 \x9b\x85\xeb\xcb,_\xaf\x12\x92N\xc2\xaf$\x01\x9cr~iw\x14r\x16T'9\x8a\xdc| \x97\xecM6!\xc14\x0cC\x91Al\xc1)\x94\xa0\xeb\x9cF\x1c\xf0\xf3c\xaa\x1d\x00{{\x0f`k\xb8\x17\xc1\xed\xe1o\xb7\xff\xbc\x1a\x06\xbf\xedl\x7f=x\xf8\xe8\xe0\xc1\xfa\xb7\xdf\xfa\xd1\xe1\xd6\xad\xbf\xff\xfft\xfa{{\xf8\xdb(\xac\xdfhPhI\xa0\xc7\xbc\xe3\x0cS\x93sR\xff\xb0\x07[x\xceH\x12=.\xa9\xf3\x98\x1fS\xdb\x90\xc26\x12\xe8m\xd8\x1b\x95\x7f\xee\x8f\x90 \xffvyg\xbc\xb5\xb3\xd3So\xf2{\xb7\xbf\xae\xff\xbc\xcdi\xe1\xff\x11-\x8e\x86;;\x8b\xd1\x03\x87\x07\xcf\x14\xb6\x070\xf6e.\x8d2\xda<^|\xc8\x1a|\x97M\xf5as\xb1\xe4\xc7b#\xc9~\xf9\xcapo\x04\x87\xf5\x9f\x07\xd0\xfbDV\x06\x96D)\x06\x0d\xed\xef[\xdb\xdf\xaf\xb7\xbf?\xaa1[\xaf\xe3\x85\x89\xe1k0\x90\xaf\xe3E?)\x84\x96\x04=\x81\x84\xf7\xc3\x06\x1cd\x9dc\xa4\xa2\x82\x0dE\x0b\x89\x89g\xe4\xfd\xd3*\xef\xfd^\xa5\x11\xea\xcfI~F\x02\x93\x14x.\xa3\xe5\xbbG\xc3\xdf\xe4\x8c\x155V\x07\xe2O\x0bK\xf4\xbc2\xecl\xed\x99\x9fM-:]p*=K\xe6o\x11\xc1\x04\x06(~&\x9a\x96RE\x06\x04!\xa6 \xe4\x83\x0b\xf8\xb6\x9e\xd4\x1c\x85\xc2\x07r\xd8..\x8e\xf72\xe3\x14\xc3'8\xfd\\\x8e%\xab\xc62C\x17Y\xe7Ws\x0e\x83\xceP\xf63|k\xaf\xe3\xad\x15\xe7i\x83\xb3\x08h\x99m'\x82\x9c3X\xc12\x82yS\x0d\xad_mTPB\xc7\x8a\x0b\x1d\xb1r\xfe\xc0\xec\x87\xb1H\x9a\xb72s\x83\x06b\xa1\xab\x86\x8d\xdf\x8c\xa5k\x05r\xe5\x86\xef\xa7\x9c\xfbHm\x18a\xc7\x15~ma \xdeI_n\n\xedo[\xe2\xe6\x8e\xee@\xf1\xf7\xa14\xe0M}\xe1\xd0\xba#\xc7\x14\xb7I)\xb9D\x8e\xf4\xfb$%o\xe29\xf9>\xcf\xe6R\xa6y\x96\x14\x8b\xac@\xe3\xeb\x8f$\x9ex\x94\x95W\"\xde\xedi\x92\x12~l\x0fz\xc1\xf0_\x0fF_\x87\x0f\x0e{\xb7\x93>\xb9$c\xa3\xe1\x00\xcb\x9e\x08\xdb\x00g\xea\xebm\x94MT-\xd8\x88\x93\xaa\x9e\x82\xcdh\xb2\xa1F\xaa\x8c\xf9\x19\x94\x12n\x99\xa6m\x08-\xe2b\x1c\xa7O\xe3\x82\xc0\x00\x9e\xd6\xef|/\x07\xd9 \x1a\xd9\xc3\xd3\x80Tf\xe2\xdf\xfa\xc3\x7f\xf5o\x8f\xbe\xfe\xea6\x17%B\x93\xc6*\xa6 K\xfe \x1f\xf3\xb4\xb3\x07\x0e\x802vlK\x8b\x1d\xe3\xc2\x9a\xd0u\xb8ekM18\xd6{\x0e\x8dG\xf0\x19a\x8f\xc7\x9c\xcb\xe7\xd8\x92gi\x9a\xd0\xb3\xf7\xa4Xd\xb4\xe8\x86F\xe3$\xab\x14\xfe\xfd\xa4\xd0\xb4\xff\x9a:\x84/\x8dMcP?\xf6\xccoV\xfa\xa5\xbaCx\x97Wry\xc2\x15,\xceY\xf1s\xc2fAo\xbfW\xea#u\x15*:\xe9\xf5\xc6b\xf7\xf4\xf04\xfd\xf3*\xac\xb0\xd0V\xa8\xc1LlK\xd5N\xd0\x93]\x88&\x8dv\x12K\x1b|\xcb\x06\xd40.s#a\xa9|\x93\xa6.5v\xa1\x0d2CVA\x887\x9b\xb7\xf1dB\xc8\"]\x1d\xb3<Y\xbc$\xab\x06\xbff\xf1\xc6\xbf1\x96\xaa\\\xe6\x0ee\xa0!\xdb\x89\xc1D\x84;L)\xb1\xb7\xaea\xd5\xe4 ji\xe9\xd6k\x9d\xfcq>\x8e\xbaLmJ\xf3\xdeP\x86\xffye\x0eLi\xe0hf09\xd9\x15\xdaU\x1cQ\x1edC6\xc2\xbdr\x08\x13\x92\x12F\x80\xdf\xe1B\x0d\xff\x87\xf3\x03\xe2\x0dj\xcce`\xcaV\xabl\x03\x06\xb2\xa7\xa2!\xbd\x08\x89)`\xd6\x95\x19HV We=\x95Y\xd7r\xa6X\xad\x16\xa4k\xc1\x89\xb0Z\x94\x87\x12 \x1d\x0c\x84F|s\xad\x89\x08\x84}o\xdf\x00R\xc5\xect\x19$\xcdQ\xc2\xe0\xe2\x13\x88#\x15\x03\xebS\xf4\xbd\xf8\x90\x95\xfe\x1c\x1ek$\xbe\xb1\xac\x91\xd6\x9b\x15M\x1a\xa6\xbf\xfa{\xe7\xb2\x92\xe7I@\x83oL>\x12ctH\xba\xf7\xcd\x9e\xe1\xd9T~x\xef\x1b\xa3{\xc5B\xb9f|\xbbkz<)\x1f\xdf5=\x9e\x95\x8f\x8d\xe3:\x97\x8f\xef\xdf36>W.%\xbb\xf7L\x8f\xcfpV{\xdf\x99x\xff\x95\xfc\xf4\x8eqR\xa7\nX\xfbw8\xe2\xd7\x9e\x97\x04\xfa\xa4\xc3w\xe1\xd6-\x0c\xe1P\xbeU\xd2\xb5\xd8\x8c\x8b\x12\xa5M\xa5\xea\x9bQ\xf3\xfa/\xbe\xb0\x170\x80\xf2\x08lO\xe5\xc8\xe0\xc0\xd3\xad\xd9o\xc9\xc8fsL{\xb06`]ndv\xae\n\x047&on\xfc\xd8\xd9\xf8\xd6\x16q\xdaW}(\x95c\x0dtO\xa9\x89\xfa\xc8\x06\x86\xa7\xce\x91\xf2~\x17U\xbf\xfc\xe7\xd4\x7f\x18u\x07\xaeN\x16\xce\xa1\xf8\xd9\x8c\x8b\x18Z\xc4a\x0b\x8br\xc7\xda\xf8\x9dz\xe3wD\xe3NN\xbcn\xa2\x97} \xefQ\x7f\xc8\xca\x87\xeb5 `\xcfk\xc7\x88\x0e-\xab\xfd\x18\x9d\x84\xab\xfc\xdf\xb4b\xbfM\x9a\x15\xd0\xfd\x00\x86\xd4\x92\xf6\xces\xa3\xc1!h\x02AR\x04\x182\xc5Q\xd5\xcaq\xf9\xa05\n?\xb6\x06|\xfc\x0e\xf0\x08'\xf8i\xd6&\x06\x82{k\xd4l\xeb*`\xb3\xc5{\x99k\xc3\x1cR\xceY\x0d\xa9\xc1\xeau\xd5\xdc\x12\xeds\xef\x93\xc5\xe1\xb1s\x7f\x80\xb2\xa7\xc2#\xa8\xc2\xc4{?\xc5\xe9\x92\xc0|Y08%\x90\x92\xa2\x006\x8b)\xc8\x96\xbd\xca\xd9?\xb68fn0\xa6\x87\xf61\x9d\xa1\xc2=\x97\xc3\x12\x8d{\x0d\xeb\xad\xd9\x85\xb4\xfb\xb4@9\xf3\xf6\xbfv\x0e\x7f\x9bl\x07\xbf\xf5\xf9?\xe1\xa1\xb2\x0chRjc\xa01H\xb6\xc7gp\xef,>\xaf\x9b\x8d\xcecP\x14#\x01\xcf<\x87\xf5\xc1\xe4\x9b\xeb7&<\x95\xb6\x02\xe2\xf0)\xb4Cn\x9a\xa4\xc4k\x80\xaf-\x0e\xc5~c\xec\xb1|Iz\xb2n0?D\xa7qZ\xe87\xb6v\xb5\xbf\xf7\x14#o\x1b\xf5\xa9\xe8\xdek\xe0\xcf\xcd\xce\xd1~\xe3\x16\x835\xa8{\xecc\x93/\xfb\x0c\xedw\x9b3\xb7\xdf\xe0\x92\xe2M\xfc&\xe0\x9f\x95\xce\xc2\x8e\x95V\xcd{\x8d\xec\x8d\xc9\xef\xdcoTJ\xd8S\xa2F\x9fe\xaf\xb2\x0b\x92?\x8d\x0b\x12\x84\x11l\xdd\xfe\xd7\xf0\xcf`t8\xdc\xdd\xf9.\xde\x99\x8e\xfe\xfc\xf6j\xa7\xfc\xfb\xae\xc7\xdf{\xfbW\xc3\xf0j\xe4E\x18\xf8\xc8\xbd&\xfc\xde\xea~\xefOL+\xde\xc4\x8f\xce\x8b.\xbc\x86\xf7\xcc\x1a3\xb0\xf9\xf06 \xf9\x1b\x8c\xf0\x95%\xd2\xc1{|[\x94\\\xc0{rvt\x89\xfe\xc8\xae\xa5\x9dfi\x9a]\xc0Bv\xd2\x83m\x93\x03{\xfd\x0co\xc7et\x8e\xec\xba\x9c\xed\xad[\xb5\xdfv\xae\xd6\xc6\xf1\"\xab\x87\x94\xe74\x9b\xac\xa4RY\xa8\x17\x13\xda\x13N\xf2\xf8\x0b\xcdX'\x97\xf3\xb4\x87\xee\xf2\xda\xcd\x9eEU\x99T\xea\xce\x9c\xa0\x9b\xc2\xc4\xf6j\x0c\xc2;J\xbe^`\x84\x8b\xe8\xc8\xa2\"\x8e\xcb\xd5\xca\xedv\xc7X47\x97|\x8e\xa5\xf3\xb1\xf6\xa6d=,oN\xab79q\xb6\xbd\xb6\xa8^\x9bf\xf9<f\xb6\x17'\xb51\xca\x1d`ywV\x1b\xa5\xfb\xdd\xf3\xea]\x89\xb8\xa6\xb8:\x0eG\xe1r\x85i'\xb2\xd0\xb6e889\x16kj\xb9\x01\xe0\x97\x99\xb9\x7f\x90\x9a\x8c\x1eFOh\xef\xd7\x85\xe6\x0cY\xf1L\xa2\xba\xbd\xa9SSSf\x93\xa3jR\xa6:\xb2\xb7y\x82e\x898G\xa2\xcd\xc6\xce\xd6\xd8\x1bB]\x86b\x12\xaa\xb6\x82L\xa6\xf2@\xb1\xc41\x90#\xfe}\xa5K\xab}\xbe\xdb\xf9\xf5%\xffZ1\x7f\x9b\x7f~l1\xb1\x832\xbf\xb5\xb4\x10S\xbb\x1f\x9fS\xb7\xea'\x99\x1dw$\xd3\xc7PP\x8b\x868s)c\xd5\xa5\x85;ea$\xfb\xb3~\xd1m}V\x97\xa2E\xc2\xbc\xddC\xbaO\xf8\xf1&\xc6)\x02\x12\xcb\xb3\x0f\x8f\x07\x1cK\xcfX{V]f\x7fm\xbe\x1d\x9fr\x92>\x8f\xe0,\x82\xd3\x08N\"\xb8\x88\xe0(\x82\xcb\x08\x8eG\x0d\xe1\xd59\xf6J\xdfd|\xc5V\x92\x0eYB\xe4\x9f\x9f\x86\xcd\xb9\xbf\x97\xb4\x1e\xa6 I'\x90\x14@3\x06\x8b<;O&x\x02\x98(\xb6j\xf4\xdc5X>\xf1\x8f0\x80WA\x16\xc1\xb9\xc3%\xe1#\x1a8\xc4x>\xfa\xba\x1a\x80\x1c\xc2\xa4\xda:\x93\xae\xd1|\x86\x01\xbc\xe7\xa3\x998F\xf3Y\x1b\xcd\xe7MG3\xeb\x1a\xc2\xf70\x80g|\x083\xc7\x10\xbe\xd7\x86\xf0\xfd\xa6CXV\x00q\x96\x1d\xe1\xa3\xf9\x03S]a\x91\x11\xfbh\xfe\xd0F\xf3\xc7\xa6\xa3\x19W\xa3\x19w\x8d\xe6 \x0c\xe01\x1f\xcd\xd81\x9a'\xdah\x9el:\x9a\xfa\x91\xd85\x9e\x9f\x1c^K\xeaB\xee&\xf8 5\xe41#;\x8c\xcbQ\xd8\xfc\x02\x0e\xe1\xf7\x00Uh\xbd%\x176\xca\xbbo\xc4\xdd\xe7\x82\x88\xda\xf9\"u\xc9\xd9\xfedsb\xa9\xc8l\xfd`\xeb\x9a\xdf\x8f0\x80\xd7\x81\xab\xda\n\xce\xee\xc7\x0d\xc6\xf8c\xf7\x18k\x87g\xd7\x10\x7f\x86\x01\xbc\xed\x1e\xe2\xcf\x1b\x0c\xf1\xe7\xee!\xd6O\xe8\xae1\xbe\xc0\xec\x8d\x9dc|\xb1\xc1\x18_t\x8fQg\xb0\xbaF\xf8k\xc7\xd0N\x91\xf9)\xd90\x9f\x81\xfe\xaax\xd6\xe74\x18\xf6\x12F\xe6E/\x02\xc1g\x8f0\xc9N\xcb\xcc\xdd\xe5\xe9\x01\x9a`\xd5\xb5\xed\xf8U\xc3\xa4_\xd1E\x82#\x0b\x86\xaa\xd6\x97P=|'\x1f\xeaT\xe0Wd\xc0\xf8\xd3\xe7\\\xa8\x8c\xa4\xb9]\xac\x83{\xb0\xfcJDVKC\xde\x95\xe6\x85\x995\x0e,\x99\xc4\xd4\xe5\xac7\xdb\x89\x13\x1a\x83\xdc\x85\x12/a\x00\x1f\xba\x91\xf6\xa5\x0f.H`\xbd\xf4\xa5\xc6V\xab\xb7\xc1{\xa5\x9dF\xc1\xcd))7\xa3/w66X:Az\x05m*\xf6\xb7\x0cZ\xa6\xf8g\x0e\xef\xdb\x97\xf3T\xea\xae\x98U\xbeK\x84\xcf\xd5\xe5<\xc5m\x8b\x7fa~\x12\xd7\x9a\x0b=\x0f\xff\x86K\xf9\xf2\xdb?\xaf\"\xfe\xfdW_\xe5d\xaa;\x03\xac\x16\xe8\xb4F\xfa\xb8\xaf\xc5\x9f\x0b\x91\xcf#!\xf2w\x95\x16\xe6]\xf5\xe4\x10\xfe\xf6\xf0\x907~N\xf2\"\xc9\xe8\xa0\xb7\xd7\xdf\xed\x01\xa1\xe3l\x92\xd0\xb3A\xef\xe3\x87\xefw\xbe\xed\x1d>\xfa\x8dJ\xb7v\xf8\xe5\xf5+ \x97\xb8\xc40\x8e)g>O \x9c\x11\x8a\xc9\x19' B\x94\xfef\xf5~R\xd7yY^\n\xa7\xd3\x9fsQ \xb8\xfd\xdb\xf1\xd7\xbf\xdd\x0e~;\xde\x0e\xbf\xba\xed@\xf6\n\x88\xb2\x84\x94'*C\xddXx\xa6,\xb5\x93\xa7\xa8/\xfb\xe5\xf5\xab#17\xe1J\xe2\xe3\x01r.\xcb\xaa\xd5\xdb\x13\x9b\xe0\xfb<\x9b\x8b\x8d \xdbk\xcfH)\xc5l\x92]\xd2%\xd9%a\x08\x87M?\x98\xa4\xf2\x83\x81\x83F\x8eJ\xe9\xa3\xa9\xa7?q\xba}\x9d\xcb\xcc\x86\x7f\x1at\x85 \x93\x17V\xe2|\x9a\x8d1\xcbN\xbf\xc0\xc6-\xfa\xa5Joi\xdbZ=\xa1\xa4w)MD\x16\x94byZ\xb0<\xd8\x0b\xfb\xc5\"MX\xd0\xbbe\xd2\xc6\x80\xee\x9f\x9eCB\x81\x86@\xfb\xb3\xb8x{A\xcb\xdc7\xb9pS\xc4(\xc3a>R-\x0e\xb8XE\x86\x132\xce&\xe4\xe3\xfb\xe7O\xb3\xf9\"\xa3\x84\xb2 \x1f\xee\x8e\xc2\x11\x0c \xe7T\xe8\xd6-0\xbe\xb37\x12v\xd5\x9e\x0f>\xa9m\xdd^\xb3v\x1a\x1b7m\xb5Z\xc5\xfd\xca\x97\xab\x81\xd0\xd6\x8cD\xca\xfdA\x0f\xb6MO\xc9\x90\x19\x0d\xb3\xfd\xdf\xb3\x84\xe2\xf2\xb4\xa7&S\xf5\xb8\x07\xa5\xe6S\xcb\xb9\xa1r\x17Sr\x01$`\x9a\xb9\"\x82\xde\x92Mw\xbe\xed\x85au\xb7w\x1a\x17\xe4\xfe]\xd3\x18\xaa\xd4A\xed\xae3\x0c6K2Z\x1c\xe3[6\xaf\x9d8]\xccb\xcf\\\x83\xa0\xbb\x8f)m\xe2\xac\x17\xe2\x16J \x07h\x9c\xf3)i\xcf,G\xb6yc\xce \x9be\x93k\x8fF|n\x1b\x8fz\xea\xcdD\xb4\xc7\xc8\xe2\xb3\xbf\n\x9c\x8d!{\x0f\xd2\x80\x99\x8d\x14S~\xec\x8c\xc9I\xa5\x8a\x8d\xe6\xe4\xc7z\xfa+_^b\xf5\x10\xd1\xd8\x96\x1c5\x88\xbd\xeao&x\xbb!\x8d\xf8\x06\x8dL\xfb3\x0f\xb5\xc4k\xfb\xbb\xb7\xcf\"\xe8m\xf7\xc2\x91\xdc\x9f\xa6%\xb5R)\xe6\xda\xd4\x86\x94]\xb5\x95\xb48\xd6\x94J3N\xb8f\x15\xe1\xa2\x9aSN\x97\xcb\xc8F\x1e#\xf5\x91\xd7a\xae\x94b\x96\xbcd^\x04\xd8X\xa0\x063\x8ektL\x9a\xb31\xa5Q\x9e\xcc\x03m\x91~\xc3\xecx\xbd\x13\xb4\xd8\xf4z\xae\xe1Z\xb2\xaay\x0d\x93\xc3\xec\xb4\x82\xd9\xc7\xb6{Yd\xc8\xe3\xe6\xd54ig\x9b\xe8N\xc2z\xfb_\x97;%s\xdd\xb9l\x915\xf7\xdc_9Bi\xffY\x97\xf6\xa5ui=ZK\xbb\xd8ZZ\xbd\xfc\xa7\xf2?\xd5\x83\xb2\x90\x16\x0d\xee\xdd\x0d\xfbO\x96\xd3)\x91\xde\xe2\xd7\xca\x06hN\x88\xd9\x9cfI\xa9\x8c\x92\x99\xc8\x15\x0f\xff\x7f\xf2\xde\xbc\xbbm\x1cK\x14\xff\xbf?\xc55\xa7_\x8a,\xd3\xb4$\xaf\x91\xedx\xb28\xdd\x99\xc9\xf6b\xa7\xea\xd7\xa3\xf2xh\n\x92\xd8\xa1H\x15\x17;\xae\xb2\xe7\xb3\xff\x0e.\x00\x12\x04\x01\x92rR\xd3\xfd\xde\xe3\xc9\x89E\x12\xc4r\x01\\\xdc\xfd\x9e@\x15\xcb\xf2\x13\xf1\x83\x9c\xc7\xa2\xfc\x17$\x0b(\x81p\x047a\x16\xe6\xb0\xc8\xf3\xd5x{{\xe6\x07\xe4:I\xbex\xf30_\x14\xd7^\x98l\xa7\xf4\xbb\xedi\x12d\xdb\xf8\xf1\x16#\x9fRo\x91/\xa3\xd3P\xc4nd\x94\x86\xcb\xf3\xb9A\n\xc7\x90\x1fA\xba\xb9\xe9@\x0c\x9b'`=\xf1\xd3y6\xb94Q$\x157\x97\xa2\xcb\xaeB\x1f\xb2:\xeaq5ED\xcd$\xed\x1f\x94\xb3\n\xc8\x99uG\xe2l\xa2\x99\xa4\x16\x1dS\xe5\x15\x98C[\xd2\x1a\xd8\x12\xc58j\xc4\xca\xca\n\xef\xbb\xc4\xa8<P\xf4]\xb4\xd7\xd6\xf1\xb1\x1f'\xf1\xdd2)\xb2g\xcf\x14F<\xd4\x12TQ\x98\xe5\xfdr\xed\xf0\xbd\x16\xd1\xceZo\xc3,\xb7(\xa7#i%5\x1b\xaaIk,\xfdU\xbd\xb9\xee\xdd\x1dp\xf0X\xef\xfc\x15\xb6Y\xfa\x0f\xf7j1)\xfd\x84\x1e\xddp\xe5j\x84\xed\x1b\xbc\xbez\xf5&#\x8f\x01\xf79a\xd0>'\x14\xd8\xe7\xa4\x1f\xac\x932\x1a\xf1#\x9a\xacB\x19\xcbcf\x1d\xa8nz\xf5#\xcb\xfd\xe0\xcb#\xba\x80\x11\x98\xd9\xb8\xe9/:r\xfa\xb7W\x9b!\xb7\xd0}D\xb3\xc2\xb8\x17[\xd6\x18\xfd\xf6j?\xc5H\xcfk\xb5^\xd4\xb3\xbd\x88\xa8=\xad\xca\xa8\xf2\x84\xc84'\x04\x8b\xac\xc3\x8c\x102x\x06{p\n\x19l\xc1\x1e\x8c1\xf3R\x00'\xb0w\x04\x01\x1cCv\x04\x01E\xe3\xd1$\xa0\x05.\xe5\xda&AKb\xf0\x1b\xee\xa5n\xb6\xa3\x86R\xdb3\x93\xe9\xac\xd4c\xc1\xb0\x8d\xe2:q\xd1\x16\xd0\xd4\xc4\x9eux\x8a\x03\xb75 \xdb\xe5\xdf\x1c\xdcR,h\x8a\xc3\xa3p\x8afOSzb\xc2\x7f\xd1\x9f\x05\xfd\xf9_\x90\xcc\x90Zd\xcfV\xecYV\xacV\x11=\x7f\xf2\x84=O\xf0\xb9\x0b\xe4\xeb\n\x03\x9c\x80\x1fC\xe9\xd8\xe1\xfd=\xe3\xa1\xbf=\x8d\xe8A\\z)\x19\xc8\xb3\xbch\xe5X\xc4EK\xde \xe7\xb2\xe8H\xe9\xde\xa9\x8b\x16\x97\xb0\x8d\x99\x95\xd9\x03\xdb\xacN\xe4\x0b\x1d\xf3y\x1eJ\x91~h\xb2taQ\xaeo\n9\x8f\xc2pQfP\x88\xda<\xf1\xc5E;?/\xe5W\xf3\xd6\xf2f\xd8\x1a\x82\xc5\xf5\xda\xe4\xd9\xc2_\x911\xac\x9aoD\xa07\xed\xcb\xa5\xbfzY\xbe\xef\x8d\x1ef\x88\x9c\x1ew\x06F\x18\xe5>\xb3\xf5\xe7\xb6\xb6\x87X\xbc\xd9Z\xdb\xf9\x8a\x9f\xf4<+\xb5'#V\xd0<\xeb\xdaN6\xb9\xcd\xae\xb3\xcap2\xb1V\x0dg\x8d\xae\x9f\xbf\xf2~\xfe\xca\xfb\xf9+\xf6\xf3WM\xd9\x94\xc7\xfb\xcfl\x8b\xed\x7f\xcb\xed?\xe1D\x87.\x9b\xb3\xadi6,S,d\xf6\x9a\xc7\x99\xec&&z\n~\xb3\xaf\x82+\x11|t}\xbb\xf2\x11h\x9c\xc7\x84\xfeu\\\x1f\x1e\xb3R\xa5\xef\x85\xfc}\xac\x8e_\xf4\x97\x16\xaa0+r\x1ae\xcen\xbb\x14>\x03\x06F\xac\x05\xdf}\xd0\x8c\xac\xd00]\xe2]\xce\x8f\xe1\xb4\x0c\x9e\xa7\x9b\xb0\xb5N\xe0}~\x02\xefK'\xf0\xbe\xee\x04\xde\xef>\x81\x05\xd5\x00'\x80\xa6+)\x0b\x9e\xc7\x8c\x1c]\xe1\xbd\xcb\xe2\xb3\x9e\x02QQpm`2\xe2\xe5\xc9\xe8\xa5\xe3\xb14u\xa2\xc0\xf6\x1b\xe7\xe3\xad\xcfl\x9f\xb2\x15 \x18S\x16\xc6\xac@\x88\x05<\x94\x97\xb0\x86\xebk\xad\xb1\xa2\x98&A\n\x0f\xbc1t\xb4++\xf6\xc2\xac\xec\x96\xfa\xcd\xa0\x16\\U7\xed\x99\x96\xfco\xd2ar\xf4D\xed\xec\x8b\x89\xa7P6\xa9X\xec\xac\xd5\xe44B\xda\xa6#\x87\x8f\x81X \xdb\x89\x95\xa8/\xb1\xf2_\xa5\xac\xe0\xbft\x14\x8aQ\xec\xd8\x8c;\xe2\xb4\xc2=2\xc9\x1b\x9b\xa0\xaf\xe0\xaeI\n\x02\xf2\xc6\x8b\xb4\x1b/(7^\xc4I\xdfH\"}g\x8c\xf4\x9d\xc11DG0\xa3\x1b/\x98\xcc\x9a\xa4\xef\xcc\x10\xd0i\x85\xaa\xa6\xc44\xe7\xb1\xbdj\x9ds\xbaf\x0b3\xfd\x84F\xd0\xf6\xeaQKB\xa2_3\xcd\x92X\x18\x96D\xd8E\xbf\xa2K\x00#\xd5\xfa,\x10fW\xc1'S\xef\xe7\xa3\x19\x00-#\x1ce\x0d]\xc4y_\xa5\xc9\xea\xa2\x1cS\xd6\xe8{\xb9\xe2\xb4\x99V\xca\x95s\x83\x91\xab\xca\xc8\xf5.\x92\xb8\x03\x97\xd3\xac<\xa1-,\xe1\x18\xe6G\xb0\xa4\x8b\xc4<\xa5\x18ZJE\xb27.,\xcbEL{9\xa1\xfd]\xd2_\x97V\x89t\x03\x13\xb5K\x81x'\x9f\x82\x08\xae\x12\x80w\x1d\xf3\xd0\xb1\x19\x85xC\x17.\xbb\xb9\x1f[\xb7`\xa2\xdd\x82a\xb9\x05\x13\xc7\xe5 \x10\xc1\x87cH\x8e\xc0\xa7\xd0\x0c'~}\xbb\xf9\xe6s\x0eQ\x07vU\x01r\x88:]\x16\x7f \xf3\x8d\xb8r\xb7\xab!\xa2[\xae~\xfe\xcaq\x84\xdaq\xf8\xe58B\x8eJB \x95\x14\x0c\x95\x14p\x0c\xe1\x11\x14t\\\xfe\xa4h\xa2\x92\xc2\xa4E\xe2(\x8cLrC \xe3^\xca\xda\xf6\xd2\x17r\x97]H\xfb\xc9NV\\\x08\x9a\x91 \x89\xa7e\xd7\x9c\xe6V\x8bM[\xad\xc9\xe6\xb6o5\x90\xa1\x8b\xe1~\xe5H=\xe5\xbe\x9b\xb1}G\xb1jP\xee;\x8a\x9cW\x1c9\x9b9T\x81N3u\xef\x05.\xcc\xca\x99G\xa4\xb8\xf5\x8c\x02\xc5\xa6\xe3\x08&\xb3K\xfa\xcc\xa9v\xa1\xdf\xc6s2\x8bi\xe3Nl\x92\xe5\xa0\xc5\x8a\x0fNs\xf5\xea\x0f\x98l\x9d\x9d<3\xd3\xe7\x92\x05\x8bb\xb7U1\x060\xae\xbdk\x9eK\xb1\xa9\"\xb4\xd1\xd2r\x15\xb5:G\x97Z\"\xee\xff\xa5\xd3\xfe\xb1\xc7y\xd1~\x9cO\xff\x87\x8e\xf3\x9b2\xcec%\xffi=X\xbb4\xebK\xc4x7-\x18o\xd9\xb5\xeb\xe9)\xbdTw\xfd\xc2\x85\x9b\xda\x89\x8b\x1c\xe2M\xf7Y\x0b=%J\x9d\xc6\n\xed[u\xd5\xdc\xaa\x95|G\xfeT\xfc\x925\x85\xcc~\xecQ\x8a\xa3\xed\x1f\xcb\x9f\x8c\xc3\xde\xf2\xb3,\x9cWl\x92\x1d8p\x1e\xc6\xd3\x94\xc0y\x92.\x8a\n\x01\xfdk\x14\x06$\xce\x08\xbc{sQ>\xfcq\xbb\xfc)tR<\x8d\xd9\x9c\xe4\x92)\xd7\xf9\xdd\xf2:\x89\xb2\xa6\xae\x8a\x97\xae%\xb9\x94\xbek\xea\xae\x1a\x1fp\xcb\xca\xbb7\xd9Y\\,\x19\xda9\xd2\xc2\xcdH\xc4\xe8=\xa9pS\xf3\xe6\x18\x94Z\xc3\x89\xdcp\xbb<\xba\x83\x85u\x93\x7f\x1d\x98|\x11\xc9\x04\xb1\x8e5%\x96\x0b\xd6\x1e\xb34\xd4\xc2\xee\xbd\xbf$\x99M\x9c\xc9\xe0\xb2\xb5\x0355\xf1\xef\x0fL)<8\x82\x18\x8eaH\xffR\x84\x97O\xac+\xba\x15X\x0f1\x0f\xd3\xcb\x85\x9f\xbeL\xa6\xc4\x8e\xd1t.\xd6\xf7\xd7\x1a\x0cG;\xbb{\xfb\x07\x87O\x99}KK_s\xc5\xa6\xadK\xc4\x95\xabq\x84\x00$\x0b5\xab=\x8c\x8bXw-I\x91\xe8<L\xc9l\xbe\x08\xff\xfe%Z\xc6\xc9\xea\xd74\xcb-!#\xb241\xe5\xcc=\x9e\x90K}\xecU\xc75\xb4#\xcf,\xa5\xc6\xec\xda\x9a\xc2\xc8w\xa9S\x0d\xb6\x8eFZ}\xf2J\xa8\xd4\xbf\xa9\xd0\x87\xed\xc0)\xd4\x9a\x83\x0e\xdd\xa7\x9c1\x82'\x8ah\x07J(\xe2\x96\x9e`\x94\x89\xfb{\x99D \"\xf2+\xdd\x14\x94|\xe4G[\xbdK\x95\xddr\xe0G\x11\x99\xc2m\x98/\x98\xe4*I\xa12\xb65\x9b\xeb\xf2\xb3H\x15b\xda\xc4a\x89-\x86G\x90\xc1q\x83`8\x82LOUJdF\x183\xc7\x08\xd6BE$d\x97\x8e\x03 3\x08\x89]\x88\x98\xa9j1\x89p\x0fM\"S\x00jcJ\"\x1f\xb3\xaf\xeal\x92A\xa5\x9e\x07LV\xe8\x97\xc3@\x91aXv\xc6\x9f\x04\x97\xa2?\xf47\xeb\x12\xfe\xea:\xe5\xebw\x82B\xfbS\xfd\xf5\xa3\x8e\x9e\x9b\xd2fa\xa8F\xb1CS\x0b\xfbP\xb5e\x08Y\x16\xce\xbd\x81\xf2\xdc\xc7\xa8\xa0\xf6!\xfa\xc9\xbcyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw\xa6\x14\xa6+8\xac?\xa2+\xc2\xba\xbaBk\x977q\x8e)\x12\xdep\x9a\xfe\xcf\x149\xbe\xf3\xf3\x85\x97\xfa\xf14Y\xda\x92\xb1\xea\xce\xbe\xc3\xe3E\x8f\x1c\x9d|<j\x13'2\xdfh\xe2\xc5\xc9\x94 #\x85\xd1\xe7\xe6rN\x0f\xdf\xc12\xbc5\x16Z\xf3P\xfb\x19\xbdca\x1b\xe8[\x0bp([9\xf9\x9a\x8f+\x92\x0e\xacu+ \xcbU~W\xabA\x9a\xf8\xe6x\x836S\xa5#\x1e\xae\xf6*%1\xaa^J\xfb\x9f#\x07\xcf\xc9\\\xcb\x0c\x90\xd6\x16gZ\x08\x0b\x91q36s\xec]-\x92\x0c\xf3\x1a0\x91@>\xc9p3\xb4\xb6\xb2\xd2\xb6\xc2\x94\xd7\xc4\xbb\x9aE\xfe<\x83'PPZ\xe5\xa5\x1f,\x08K\xa5@[\xd1\xcbxo\xcaLG\x154\xe8\x17)\xd1$\x80\x06\x11\xa7\x82%m\xc2\x82M\x9c@\xc6\xb2\xb8\x02\xed\xe7\xb55!zV\xed\xea\xc3Vm\xfb\x0d\x8fx\x1fO\xc2\x8e8\xea\x19\x02\xddw\xbc\xabi\xb2|\xf3\xaa\x9d\xa2f\x16\xb2Z\xaeN\xbepTGU\xd4\xd1\xe4\x08\xa1\x91`P\xfa\xf3\xf0:\n\xe3\xb9Yy..\xda`d'\x94\x8b\xecjP\\3\xdbw\xa1\xcd\xa3K\xbe\x02\x9e\x91FC\x08\xa8\x97Y\xe7L\xaf\xd4\xb6vF\x16\xed\xa7\xb1\x98A5\xdd\\\x12bi\xde\x9f\xe8\xd7\xe6\x9f\xf4\xdf\xeb\xb6\xc0\xb4\xb9\xb5\x19\xd1\x9aU4(\xbd92\xec~&qa\x96\xd7\xb0\x81%M\xc4\x03w\x7f#\x98\xda\xdb[\xf9)\x89q\xc3:\xb2vA\xb3\x01p?U\xc5\x0d\x83\x83jI\x91\xd2U\x11\x87q\x84U\xa4\xde*Y\xd9\x8e\x83\xd8\x8a\xf6Y\x98U>y\x02+z\x96\xaa(E\x90\xac\x7fj\xb6%\xb8\xe3\xfa8\xe7$\x7f\x19%\x19\xc9rq\xc6\xbcN\x93%\xed\xf2\x18\xa6\xaeZ\xb4Y\xa6\x9d\xfc\x12\xf4\xfeT\x1b\x97^\x82 \xca\x0b\x99I\xba\x84\x13y\x18\xc2\x9c\xfb\x87\xd5\x81\xd8\xe8\x1c\xfd\x86vLt\xb2\xabsa=\xfb:\x91Z\xc6\x98\xcc\xd6\xce\x0e\xba\xf2T\xcf%7\xba\xf2Y\x07\xa7\xc3V\x98T\xdc\x11V\xf7\xa4\xaa\xfb#\xae\x13\xd4\x8f\xda\xd6\xce.\xb6\n'\xf5\xb7\x86v\x8e\xca@\xfcl\xc5\xe4b\xc5\xe01!\xf7\xdd\x08\x7f\xa9P\x1b\x84W) \xe8\x96\xadvl\xc3nD\x14\xe1KC!ub\xf9]\xafe\xd3\nf&L\xe7\xd1\xb2\xe9\xc9Y\x1b.\xdd/E\x14\x19\x8d\xa5\xf5<\xf8\x02\x9f\xaa\x04\xa4\xdc\xc5\xea\xb0\xac\xbeR\xce{\xe6\x1d9\x06k\xe4\xedy{\x96\xaeMM\xc0\xe6\xab+\x86\x01\xe8\xdf\x13q^~+);\xd0\x19\xe0N\xac/a<\xa5|}J\xb2$\xba!,\xf7Z\x9ca\xae)z#D\xc8\x1ff\xf4n\x95\x92i\x18\xf89a\x9f\xacR\x92\x91\x18\xcbq\xf3\xffs\x9e\xec\x8de}{\x1e\x85~F2\xeb\xb2I.O\xac,\xf0#?\xc5\xb2\xe4\xd7\x82\xc4\x01~\xb7\xf4W\xab0\x9e[\x97\x1d\x92\x11#y\xe5\x82__ \xe1\x8c\xe5\xb9\xc8\x85'\xac\xcc\xe1\xe6}\xc3\xb4\xd3Z\xb6x\xd8 \x0f\x9d\xc1?\xcc\xd0w\xb7b\x1bS\xfb\x87\xcf\xf1\x978\xb9\x8d\x81\xa9.\xc0\xfa\x81\x13\xa8?X\x10f\xb0$9%\x80\x90KD\x03oHf\xac\x0cae\xfe\xf6\xfc\xdd[\\\x04\xde\x0f\xcaju\\\xc8\x17a\xe6\xe5\xfe\x9c\xae8~G'\x0f7:\xfe\xe0\xf1\xed\xf9;>\xa1\xf8Z\xfc\xbe\xbf7\x8b\x96@b\xd3\x15\xb3\x07^c\xb9.\x98[Ky'\xd7\xda\xea*\xa1\xad\xb5Z`,\xbctu[\x1fO\xb9\xf4\x18f+\xef\xd4Q\xf35\xc9\xc7-\xee\xea\xa5\xe4\xc5\x8a\x05k\x0f\xeae\xe5\x85\x8c\xec\x1cs\x1e\x95\x9f\x96\x1f\xf8B\x9e%hB\x8c1 \xaf\xb7\xb8\xaf\x08'\x9e\x90\xcb\x9eK\x93^\xfe\xa4d\xc6LR\x9f\xc6\x82\xf2\x1d\x17\xf8\x92\x0e\xab%-\xd6\x95ii\xe3Rc\x0b\xbb\\\x82b\x81W\x165\xf4@\xea\\\xd9\xbdx\xf4\n\x85\x8dvG\x8em\xdd~\xc9\xd4\xf8j\x8c+\x1f\xee\x1b\xd8\xf2\x1d\xc7cR\xdd&s\xaeM\xdc+\x99\xe3\xda\xfd\xfc^\xf8\x02G\x91\xdb\xfd=\xd8\\\xf6\xe6\xd3\xd9\x0f\xc5C\x1f\xf5\xb0cH\x1c\xdbb\xfda\xc6`\x92\xb3\xd4\x83\xe3ey\x82\xa9\x92\xd3>\xb0\xd1#\xfd\\\x0e\x15_\x0f\xdc%\x80\x19\xda\xb1\xbd\xb7\x7f\xa8\x06\xacO\xf8\xab\xa7CG+7\x08\x8dC\xef\x1f\xa3\xde\x10\x9f\xfe\xe1O\xcd_\xe5\xbel\x13\x89\x0bmD\xdb\xc1\x00\x1c\x81\xab\xf6}\x15\x11\xa7\x17\x81)\xce\xf1\xa5\xf0\xae\xfa\xb0\xb3Y\x90\x08\x05S\xb0Gz\xa5,_\x96\xf1}\x88!\xe1\xcc\xef\xfd\x8e`*\xed1\xd8J:\xb5`bH%\xeb\x19\xc1\xbck\x98\xe3\xa6@\xd5u-\xef\x1a\xe3V\x18%[\xb0\xbcj\x94EbHW\x8e\xa4\x9e;G|\x9c\x06\xe6\xb5_`\xb7\x90\xa7\x16\xf3\xb5\x88\x0e\xa0_\xbe\xaf\xee\xa0t\x1b\xe8\x18\x9bIi\xc6\xb2\xf64c\xd0\xb3i\xe0\xcb+\x14(\xd67W\xa7\x1f\x9f\xf6\xa9\xe0\xa1\x1a/\x1f\xd8\xea\xd4\xd0\xcd:\x91\xb7\xd0\xe6\xfayN\x96\xab\x1c\xf2\x04\xa6\x84\x1d\xf5E\xca\xbc\xd9\x84\xbdni`\xa0*\x03\xaa\xcdl\xf7\xa2^%:u\xbf\x1d\xc9\x0f\xf7\xb5H~4\xfc\xbf\x16\xc9K\x07\xa0^\x1c=\xdc\xd3\x82d\xf7\xa9F\x1a\x1d\xdb\x0d!u\xc1\x1e\xab\xa9M\xfaz]\xa3\xf2\xc1\x05f\xbd\xb2\x02\x0c\xe0\x0d\x99\xf7Z\x8f\xaa\xa6e\x81\xbf\xe8\x0b,\xca\x02\xe7\xfa\x027e\x81\x8f\xfa\x02\xcb\xb2\xc0\x0b}\x81yY\xe0g}\x81;8\x81)\x9cB\"\x92.\xd1\x99\xe5\xd9\x97~7e\x11\xbb\xc6h&\xa5\xb6W_\xe8\x8a\xd7\x9c\xc2\x18\x16\xf4/\xcb\xecd\xa7\xbc\x95\xdf\x1f\x9c\xaa\n\x03\x9b\x8f\x9a\x9ei)\"\xca\x1d:1\x98\x9a|\x03\xf3\xe0^)\x11\x8a\xae&\x11\xd3\xb1\x14\xf6\x1d\xaa\x7f\xe8h(\xb1\x1d\xc0)\xbe\x841\xaa\x81\\\xb8c:!\xac[k\xbf\x85\xa5O\xb14\x8caI\xcb\xd1JB{\x86&yc\x98c\x07\xb0\x9a\x13\x98\xc1i\x07c\x00\x12\x83_\xd1\xb8z\x0b?\xf9B\x96n\x11f\xb5x\x1e]\xe2\xd3\x0c\xf3#\x83\xad\xea\xd6\xba\xbe\xa3W\xe0g\x04\x06\xe3\xcerP\xb7\x8f\xd1L\xa1za\xcd\xc3\xf5k\xb6u\xf8\\\xbd\xb0\xf2\xd1c*\xd7\xc60\x92\xaf\x0ea\xb1Z\x996W\x99\xb8\xccu\x95b)f5C\xe7\xdc\xad\x94\xa3\xfa\x1a5\xdau\x90\xc4\xa1\xd5\xfebr\xd9r\xc3\xea\x02\x88\xb3d\xd47\xca\x86\xa8N\x91\x19\xae\xfe\xd7\xfc\x0d\xaa5]\xc0of.\xfb\xcc\xb6\xef\xbc\x1b\x96\x14\x1b7^u\x87\xb8\xc4a[n\xe6r\x8c\xf4\x89~sM\xff\xdb\xb8\xa6\xaf\x9e<\x01\xdf\xbev\x01\xab5\xa7(\xc9\xbc\xd7\xcci;\xf3\xfe\x02'0\xa2?\xce\xe1\x04v\xe9\x8f\x8fp\x02\x87\xf4\xc7\x0bZf\x9f\xfe\xfa\x19N`\x07K}\x86\x13\xd8\xc7b\x9f\xe8\xdb\xd1\xa1[\x93\xb70Q\xfc\xbaR09\xeeT\x85=n\xc3x\x9a\xdc\xd2!\xb1_\xde;\x0c2q\x82ZL8\x15\xef\xc7\x86\xcf3\x12a\x10e\xfaW\xfd\x14\xdf\x8dAL\x84m\x89\xd9^\x84\x99\xe5\xc8\xa6_Zq\xdb\x9c\x8b\xdb\xe6\xdf(n\xeb\xe2\xbc\\~b\x8f\xf6\xd5\xd3\x16\x03\x81\xd1S\x9eE\xcaN\xeb\x9cT\xda\xceI\xa5\xa6e\xa1e\xa0\xda=\x1aPBEx`\xb0\xb0\x96\xd9(w\xb5\xc7\x7fT\x901h\xd4\x83\xa44r\x1ak9\x9b \x89g\xe1\xbch)q\x9b\x86\xb9x[\x1f\"\x86\xa0g\x07r\xec\xd6T\xb1\xd0=wfym \xd1\xd8\xde\xdb\xd9Q\xa6\xa8\x9a\x91Z\x7f\xf4M\xeavH\x8d\xfb\xd4\x8b7\xe3>\xfd\xff\xc6\xb5\xa7\x8e\xeb\x8f_z\xe52j\x17\x15\xd6\x94%\xc3#\xc8\xb5\x860\xb9\xde\x10\xe6F\xcd\xd4\xa0\xb5NoDr\xeb\xb0\xea+\x0dUx\x8072I/\xb9\xf7\x94\x89\xe3\x01\xbd\x89\x00<v^\x05\xf9\xbfa\xcbh\xf1D\xc5\xaa\xf7\xf7\xb0\xc1\xd1\xea4 \x10\x04\xbag<\x1a\xd1YD\xd0\x92\xbe\xc9N4!\x1b\xf8\xf1\xe7\x8c\xbc\xfa\xf0n\x0c\xa9f\x17\xe3\xdb\x9f\x93\xf4\x0bI3\x13\xeaf\xafM\x1f\x9f\xdd\x908\x7f\x1bf9\x89\xb1\x0ed\xbb7l\xd1u\x7f:\xad\x95\xc0\xb7\xe2]\x9e\xfb\xc1\x02_k\xc8rV\xfdO!\xb9\xa5\xfbKT,\xbe\xcd\x82\x94\xe8\xcc\x1a\xc2\xecM\xcc:<\x86\x0d\xe3\xfa\x96wm\xf2\xed\xb3\xdb\xb1\x0eu\xc2\xb8\xa4\xcd\x88\x87g*L\xd9\x02\xc6\x82\xcab\x14\xad\xd3\xed\xbf\xfd\xcb/\xf6\xe4\x97_6\xac\x7f\xf9\xf3\xffz\xf2\x83\xed\xfc\xb8\xe9z\xbfl\x8f\x8f\x8eO\x9e\x9d\xfe\xeb\xe4\x97\xcb\xff\xbc\xfa\xaf\xdf\xef\x1f\xfe{\xeb\xd2\xd9\x9e\xf7\xf4\xb7\x15\xfd\xb0 <;\x81\xbd\xbd\xd1\xd3}\x14\x11\xc2\xf1 \xec\x1d\xec\xec\xee\xb0\x0d\xc5\xdf\xef\xef>=\xa8\xde\xef\xef\x0d\x06\x07\xec\xfd\xfe\xde\xde\xce\x1e]I\xfc\xd7\x13`\xf2&z\xb7\xaby.*\x1c\x94\x95\x1d\xb2\xe7\xc3a\x95]J\x14\x1a\xee\x96\xa5v\x86\xb5\xcf\x87\xa3\x83\xf2\xd5p\xef\xa9\x03<\xbf\xd63\x18\x0e\x87\xbb\xc3\xe1\xd0a\x97\x04\xd3&T4\xbe\xba!\xcf\x02\x87\x9d6\xa11\x8a\xfe\x18\xc06\xc1\xb6 l\x9d`\xf9}\x07\x9e=\x83\xa1\xca\xbe\x8b\x8b\"\xbf\xbd\xfd\x9d\xd1\x80~5\x1c\x8cv\x10&FM\xaf\xce\xac\xb6I\xf5k\xd1\x9a\xeeS\xad)\xf8\x0dw6\xdd~bO\xfc\xad\xdf\xfe\xe5\x92\xfe?\xd8zz\xf9\xfb\xd0\xdd\x19>8G\xdbs\xc5\xe0\x8dR\xc5\xdb\xff\xf9/\xb6}:\xfe:\xf1\xb7f\xbc\xf0\xe1\xc3\xfd\xa4\xfc\xe98\xdb\xcaW,\xe7\xec\xeep_+\xb4n7\xc5R\xc4\xa5|\x88\x89\x1d\xf0\x14\xcc\x01\xe3\xd0w\xf6PO\x92{\x01\x1f\xf1\xf3\xdc\x1e\xe0\xb2\x88Dx.F\xabc|\xab\xaf\xcc\x946\x9f\x0c/\xeb\xb9\xaf\xe0\x140\x80\xea\x9b8\xb7\xf3\xd2D\xcf\x85\xe1>\xa5h\x1a\xaf\x86\xf4\xd5\x00\xe3\xb4\x16v\x8cD\x8f\x01\xcc+\n\xb8\xc9\x93\xe3g\xd6\xe5v\x1d8S\xe9\xcd\xbc\xfe\xaai\x02B/\xeb\x895\x06\xeb\x89\xbf\\\x1diB#[\xc7\xf86\xca\xb5/\x9f\xe1\xcb\xb9\xf6\xe5\x0f\xd6\x0f\xf4\xe5\xafE\x92\x1f5b\xd15\xa7\xed\xc6\x88S\x16\xb2\x11\xb6\xac-\xe0V\xba=\x84x\x93K\x06a\x86\x1eK\x9a\xc1\x85\xe1:\xfa\xe0\xd6dVR2Lq\x0c\xe6z#c\xb4`\x149H\xf8W\x06\xe6\xbeKum\x0coH/2\x89/y\xe4\x1bm\x19]\x0c\x91\xfa<95Z\xdb\xc5l\xc0=\xd2\xe9q\xa0[\x1368\x8e@.y\x04\xf3V \x11\xff\xb4q<\nSW~\xbe5\xcd\xa9\xeb\xdd\\\xf8xN\xd3\x9fE\xcc\"\x1d\xbek\xcfgWJ\x1e\x84b\xd4\xfa\xe5\x17\xcb\x81c\x18p\xcd\x16)\xe3,\x86.X\x7f\x1eZ\x8e\n\x99\x9f\xfc(\x9c\x9e\xc5y\x98\xdf\xbddf(>}\x81x3\x99\x92\x8fI\x88j\xea\xc2e\x9ajZ\x17\x96\x0eI/A\xb4\xd4\xb5'\x86\x9ee\xae\x9c\x18\x08\xbb\xc5\x06\xff\xd7\x1c\x03\x84w\xb6\xb1\x12I\xd80\"\x83\xa8v\xea\xc2\x8d\x0e\x19\xb51Ak\xc9\xd8\xa5\xa0\xd6U\xe0\xcbS)\xc1;\x8c\xf5\xf2\x98\xae\x1e\x19E\xeb\x0dn\x8f1K\xfb\xeai\xcbD\xeb{\x87Z\xd1\xfa\x81Z \x13\xad\x0fGj-\x8f\x93\xad\xbb\x92\xf4\xdc ^_t\x89\xd7o\xba\xc4\xeb\xcb.\xf1\xfa\xbcK\xbc~\x07'L\xb6\x8d\x923.\xe3f\n\x13!A7\x8a\xbc\xcd\xa2\xf5\xc5\xba\xf2\xf8+8\x81kI\xd8G\xbf\xb9\xae \xff~\xd7\xa5Q\xaaD\xechY)\x89\xd8\xd1+\xd3f\x82v\x14\x91\xdfA]\xd0~\x87\x82\xf6S\xb8\x831\xc4\x0eJ\xd4\xe9\xb1\x8c\xc2\xa5\x00\x8fp!&G\xc9\xb9Q\xa0X\x98\x04\x8aw\x8c\xc4\xb8c\xe2@!2\xfc\xec\xb8\x80\xb2\xc2\x0d\x9ee,\xe4\x02\xc3\x15\x06\x08\x10\x02y\xf1\xd6\xbe\xe2\"G\xa301\xf5\x02\xa6\x9eJ\xdc\xffi\xc1\xa2Y\xf5\xa5*\xb3\xb8\xeak\xa0\xaa\xc4\xf8\x06Uw\"\xdd\xa0\xdb\x96J\x00\x15\x9a}hP=\xdc\xf0\xa8\x01\xdc\xcc&\xc4\x1c\"\xda\x85W``KtM0R\xdf<\xf22*\x95\xed\x82\x85\x11\x15~\xec?\x9c\xa0\xe1\x0coH\n\xba\xec\xbb%\xf9\xe4\xa0U\xcd\x0f\x0e\x8fF\xf6\xactu?\xde.}\"\x9e\x19\x03\xfe\xaegP\xa7\xf1X\x8b\x99\xea3\xb7\x0b\xc7\x85\xd4N\xbd\x8f\xb0 \xa9\xf7\x1a~\x84\xa4=\x02\x83\xe0o,\x0b&\xe4\xd2\xa6c0\x02)gF\x03\n\x05}\x7f\x0f9w\x88\xa3_K\xd9\xe0\xeb\xc3u0 #\xc6O\xae\xb15\xddG\x15\x8e\xba\xeaU\xdc\xc3\xfa$_\x84\x95\xd1\xfa\x83,on\x9a\x19\xd0\xfab:\x0c\xa3\xb4\x1aq\xd5\xc0\x05r\xe3G\x8em\xb1\xc7U\xf5F# \xcd\xb1Y\xc9\xdc\x11\x93\xb1[\x1d\xaf\xf6\x9d\xa4\x905Q\xe3S\xdd\xe6\xfc\xfe\xa2\xc6^\x9e\xb37\"\x19E\xa3\x01\x91xb\xacMT\xb1\x08\xb3<I\xef\xf4/\x93\x15\x89\xc7\xb565\x85\x82(\xc9Hg\xa9\xd7a\xa4\x162\x8d\x17\x04\x87\xd1\"\x0f4Y6\xe9\xad^H\xb94\x9a\x9bQ\xecX\x93qR\xdcb\x98\x94\xb6\x18%\x99\xedo\xaa(-\xcc\xc6G\xd1DL,\n+\xcb\x05\xebE\x94\\\xd3\xbf\"\xca\xbeu\x89vJ\xb4\xb76Fx\xa9\xdb)\x1d\xf1q\xb4\xf1H7<Em\xc2\xec\x98\xcc*\xd6\x82\x92\x08\xd2\xee\"\x93\xe2\xb2\x84\xe2\xa4\xd0\xb8/B\x83\x9f\x82\xd6\xdd,\xae\x98\x9b;\xa5z\xbb\xce\x0e{\xa3v3\xa7\x0d\xb4\x9c\xf7%\x13'\xbf\xdd\xc4\xa9\xab9\x10\x9e\\\x82\xd5\xd5g\xd1\xd4\xc0\xa1\xbe\xda[\xa1\x12$q\x96D\xc4\xc3\x90\xd9\x0d\xe6\xafv\xd7\x94\xc4\x1b\x0c\x92\x1a\x07\xc0\xff\xe3*\xcd\xf2q)\x90I\xcd\x91 \xdaN\xfc\xc6\x0c\x00\xe8\xad=\x05\x85U\xc3\x81\xd5(\x13/_\xf8\xf9'\xac\x8dN\x08=e\xe4G\xaf\xfd(C\x9b*{c\xe8(\xef.\xd2\x82\xbf\x1a\xa8\xaf\xde\xa3G8\xa4\xe8\x1a\xde\xf8n\x11\xb6\x1e*\xda\xd3_\xa9\xe39\x17.\xf5\xe1{k\xc2\x95\xef\xa4a\xe0\xa2\x13\xb6\xfaJ\xc7\xca\xdc\x05\xab:|-U\xb3\xcb\xb5\xba\xb2\x9a\xd3i*-B;\xb6G{r\x80\x12\x0c`\xfa\xfc|G\xc8:\xc2\xec\xfc\xd6\x9f\xcfI:j\x1d\xfeM\xe9\xe4\xc3\xf2\x8c\xb3oT!X('\xf6\xacI\xd5\x84\xb2a\xa8\x15\xe6\xe6^\x96\xfbi\x9e\xfd\x1c\xe6\x0b\xdb\x1ay\x03UTC{\\:\xfd\xfe\x9c\xfa\xab\xd7~@\x0f\xfd>SV\x160\xf1\xf0j\xb9\xd0\x84\xe7C\x91\xd89\xf6\xb2\x15 \xceIDh/2\xcd#\xbc\xfb\xb7,i\x15\xf7\x89\xa3\xcc\xf4\xad. \x8e\xb8x\xa7}\xbb\xa0\x0cmi \\\xd7\x1e\xd25\xa8XH\xff\xfe\x80\xb1lb\x9d\xa5\x80|}H\xc3\xb1\xc6\xdeF\\\x0f\x18\xd5\xd3\xd4l\xeeB\xd8\xf7x\x85j0\xe2\xd4\xb8\xf5\xd3\xd8\xb6p\x95\xde\xa6\xfejE\xd21\x04I\x11M\xe3\x1fr\x98\x13\x16\x17\xd4r\xdc\xa6\x9fa\xb3 \xad\x17\x99@dt{\x0c\xfe\xa1\x86\xf4\xcd\x86[\"\xe3\xf2\xcdGiZ\x7f\x15\xaa\x9bO0\xae\xcd\x944\xcc\xf9\xae\xbe\xc9v\xbc\x81g!\x8d\x9fW\x0c\xdan\x17\x13f\xe6\xfe\x0f\x9d.\xeeU\x1d\x15:\xc1\xa7h\xe3\xcf\x08\x91J\xde\x8eqCE\x02l?\xe6\"\xf7\x0d\xc3\x88\x1f-R\x1c\x1d\xa8RBLy\xd1\xe4\xd1d*\xa0\xa4\x06\x18\xda\x96\"\xb2\x887M\x8e*\xa5\xfcb\xd2\xcaQ\xea\xa1\xa7\x0f\xcf$\x8f\xa6\x1f\xaco\xfa\xc4V\x16\xae\xbdL\x03[\x03\x03\xed\xba\"\x0d[s\xa9tx?\xd6\xfc\xb2\xdb\xcc\x7f\xae\x8b\xf9E\x92D2\xb3\xd9\xab}I\x90\xac\xda\xa7\x0b\xab\x1bu1\x84\xdcv[uZ\xf2+k\x80\xfa\x99-\x9f\xb23\xa6\xf1\xdc\x95\xa2\xe6\xd4\x0b\xab\xd1s4\x87\x13\xba\xb4\xa3\xeb1\xda\xe8P\xb4\x8a\xe4Qj\xc7\x8ekN\xdb_\x1e\x0d\xa2\xdaZ\x89\x1a\xe1\xfe\xd0h\xcf\x9a\x93\xdcb\x91j\xe8\x9cg\xe2\xae\xb9I\xad\xe7A@\xb2\x8c\x9e\x7f\x18\xab\xb9X\xd19#S\xd36\xb5\x90d\xe1u3\x86\x8c\x99\x87\x95\x0e)kn\xe4~Vb\x0dw\x84\xb5\xac\xc4\x1e\xd7\xa4\xbab\xbe\xa5\xc9N\xb7a\x83\xcb\x81\xce\x88,\xb6w\xf6v\xb5\x8a\x91}Uz[\xf0\xe2\xaa\xe7\x02J\x9f\xecCu\xafD\xac\xd1]u\xe4L\xf1\xaf\x96\x9ei\\\xadV\x18\xb0\xb3\x0eS\xb4L\x9b\x93\xfcc\x92Dd\xaa\xe6\x87Xh\xe4\x1a7%2)\x1f\x97'\xeb\xb2\xc1\x1d\x9cy\x98\xde\xea\x13 \x928\x08#r\x91\xfaq\xe6\xb3\xd2O\x9e\xc0\x0d0'\xff\xe1h\xc72YOP\xeem\xa2l\xdb8\xccY6\xcfq;\xe3\xc5<]\xc34\xbf+i\xdb\x8ce\x18\xc3\xbc\x18\xecX\xae}\xa5\x88\xa54\x82\xabu\x1a\xd98\xa9\x9a\x81S\xb0g(\xb5\x0d\x08%\x19\xcd\x9f9.\xdc\xdaH\xfe\x95\xdf\x9e\x18\xc3\xb0?\xa8t\xe6z\xc0 \xfc(\xba\xf6\x83/\xff\xbb \x05\xf1R\x92\x91\\\x11{<\x16\"\xf5\x9a\xe3$\x0fgw\xcf\xa3H\xad\xbd\x1a\xc8\xa5nI\xdd5\xe3\xff1\x1f\xe7j\x98\xd2\x9a\xb2\x9d6\xb8\xf2\x95\xebj\xfa\xd7\xd8\x07\xa2\x19\xcd\xba=i[\xd5R%\x1b\x83v\xdb\xa8\xeb6\xe35\xe2]-\x93\"\xce1\x15\x06lA.\xdf\xb7V{\xd5F\xdej\xe1\xa2\x88G\xeb\xab\x96\xc5\xfe\x18\x8ev-\xc4\x9c\xe2\xb9C\x7ffI\x9a\xdb\xd7\x8e\x0b\xab\xcd\xcdz%Ud\xba*\xaca\xce\xa3\x1a6\xd7\x0b\x17tR\x04:\x9b\xc4\x06\x0fQ\x1f\xe7\xe8jE\xe2i\x18\xcf_\xf2\xd9\xcb\x9a\x0c\x1c\xba\x156\x0b\x96\xb3_xQ2\xbfHVo\xc9\x0d\x89>a\x88'c\xa0\xa3\x1b\x1e\xbd\xd6\x90\x9e(\xf4\xae\x82\"MI\x9cs\xc6\x0c\xf3\x89c\x9e\x03?\xc8E\x1b?3\x16\x0b\x8f\xe4\x88\x8d\xa2\x11g\xcba\n\x03\x8be\x03,VS?',\xb8WD\x97\xd4{\x7fI\xe8\xaa\x14\x0c\\\x1e.\x89\x9dt\x19\xab\x00\x87F\xe6\xadH:K\xd2\xe5g\xac\xf7\xcd\xec=\xa1\x84\x85\x9f\xde\xd9\xa1\x8bF\x0d\xcd\x85\xcct\xa7 *n\xa5F\xcf\xe2)\x8b\x0c\xae\xe7>{D\xbe#\nf \xf1\xaf\xf4\xaf\xedO\x82K\x97\xef\xc2\xe2:\n\x03\x11\xb8\xc6V}>\xfe\xd4\xfc\x95\xd8\xb2\xdf\x19D*R\x9c\x93\\\x1a\x1b\x9f\x90\xac\x03\x8d\xf1\xad8oC\x87\xc2-4I\xfb\xe0\xc4v\xb4\x14z)\x89\x88\x9f\x11\xbb\x89\xa0\x1c\x03\xd6b_\xb6!\xa4Z\x9d\xba\x99\xee@v]\xa1\x86\xf8\xd2\xea&\xb6\xa1\x02i$\x16$\xcf\xd1\x89>M\xc6N\x88\xc2-E\\\xd0\x93\xe2\xd5R\xa1k\xd6\xf3\xa7S\x8a\x9c\xc3x~\x91\xd8w\x8a8\xef\xb6M\xcc\xc9\xa3\x0b\x95h\xf1\xfe\x1e\x16\xc6(Y\xb3\x0e\xb7:\xa1\x88\xbb\x93\x8f\x1c=\x86!b\xf0\xf6\x95HKO\xd7\xc2]9\xad\xba\xd4v\xdaN\x19{\xc3\xa8<}\xf3\xe2\xe4\xd0\x04\xb5\x03-\xfd\x08\xb9|\xd4\xd7\xd6tWG\x8d\x82\xa4\xb3\x06/`\\\xed,2V}\x81^Sn\x8cL\x19\xee\xcb\x9a\xeb\xb4\xcc\x17\xd3\xb2`\x97t,7^\xbd\xaaf\x05m\xfb\x84\xe3\xb9\xcf\x1c\xb5\x97\xe75\xd1\xdbP\xf2\x16\xc3\xec\x05m3\x8c\xe7\xbcQFFb\xa0\x81\x9c\x0b\xe8PZ\xe0]\xb1C\x03\x8b\xbfGm\x08\x17Ji^\x9c`N\xbc!\xd2\x98\xdaQ\xb5\x8ed\x16\x15\xd9\xe2\x85\x02\xd5[\x85\x19\x8a)G\xceT\xca\xcd\xe5\x88/\xf5\xf3g\x16\xb1\x88\x8b\x94L\xc3\xbe\xe5\xb4\xe2>\xbd\xb6\xb0I^\xb0\xfe\x08@\x9f\xe7\xa9\x9f\x93\xf9\xddz}9\xa0}\xd1gOQ\x00\\\x92T\x87\xf8\xc95\xdd:\xbe\xf2Es\xda\xc5GO\xe9G7\xfa\x91\xb5M\x9a\x9f\xf9\xab\x1e\xa9T\x03[\xb3\xe6\\N\x97\xf0[\x8f\xd5\xf5\xd2\x8f\x7f\xc8\xc5\xb2\x06?\xc6&@\x1cP\x10\xc6\xe0c\xe8E\xf25\x87\xdb\x05II\xc1\x87\xe2c\x08\x85\x1c\xaeI\x18\xcf\xc5\xf6\xf4\xe8\xb8\xa6%5\x80\xfds\x19n2\xb2>z\x81\xd6\x19>]C\xce\xb0\x11\xdb{C\xc7l\xb4\xc3q\xc0\x01\x9d!\xbd*\xe9\xf7\x07\x17,\xbf\xa1B\x02FytP\x06r\x13]s\xeaxU\x9c\x8c\x87G\xa84\xc5\xd3.O9\xcc~@\xc1\xf2T\x17\x1f\x07_\x8d\x86\xea\xab\xd0\x14h\xa2\xd4b\xa0\xcd_\x861!\xe4\xf7\xa5\xf6\xa4\xd3[^\xc8tUSWz=@\xd7\x8e\x95\xf5\x0b\xdd\x1d%U|\xaf$\xe5Q\xcf\xe4\xd7,\xe2i\xa9\xa0\xa9\xcc*O\xab1\x8e\x0d]]\xcf\x83\xe8\xbb*D\xc4/\xd9;\xb1\x1b\x18\xd2\xac\x9d@hW\xfa\xae\xd6)\xe3\xfd\x97\xc3JR\xe8H\x86\x00c\xd4\x03U\xddk\x9d\xc3\x7f\xc4\xfc\xad\xd1\xf7\xc7oG\xb3\xd4\x93\xb3\x97J\xc4O}S&\xfc\xd6 \xd0\x9a^Bgx\xfe=\xc6( T\x0d\x86\xe6\xaa\x84\x94\x0bTu\xf2T;\xb6\x9f:.L\xaci\x98\xad\xe8\x01\xf2\x12=\xa9-\x17\xac\xab\xdcOylVz\x1b\xfbyx\xc3\xfc+1\x96c\xf6\x8a\xcd\xf7\xc7\x94\xd0gd\xca\x9eRT\xee\xcf\xd1\x08\xee<OV+\xf6\xfcJT_\xbaf\xd6\x9e\n\x0e5\xb3.5\xc2]\x0d\x0fx\xb7\":\n\x15\xdfa\xafMo\xf92\xb8\xe0\x85B\xd5|\xa3\xf9\x05\x8e\xee\xe3\xc2\xcf\x8c-^\x17\xd7\xd7\x11%\xdd\x0cM\xd2\x91E\xcc\xf7\xdc\xd0\xe5pI\xces\x7f\xb9\xea\xc2\xbb \xcb\xb5\xca\xaf(\xe9\xf4\xca\xcf\x89\x17'\xb7\x1aS+\x0d\x9d6U\xa6\xce\xd4\xb10\xbbH\x8b\xac,P{\xafE\xbdY\x8b\xe53g\xdc\xe5e&\x85\x9f\x94V\x1b\x0fZN\x9fJ\x8b\x0e\x1aI:\x84n<\xaf\x05\x94LR\x0f\xc3\xdb\xcf\xfc\x80\x18di>\xa5\xa94B\x1f\xca\xdd%j\xd8p\xdf\x18K\xdb\x10\x1d\xad4\xfb\xd3ft\x03\\\xd4\xa7\xd8i\x96\x01\x8e{\xe3Y\x0c\x00\xec`\xf0y \x8f=D\xc5\xecX\xfa&\x9e\xf8\x9a\xdc!\x0d\xe8\x08Y\x1d\xe6B\xf5\xd4Y\x87S\xdd\xc31l\xb08\x8e1\xb7\xde\xfb\xa9i\xbc(i\x84\xbd&\"\x80\x13\xa0\xdcU\xd8\xb0\x9aR\xf6\x1bZY\x89\xc8\x9d\x1a\xc4\x81<\xb1\xbe\xfc\x9f\x9acN\xedL\x96\\\xd5\xa7l\xc5\xfa\xf6J\x9c\xea=$L\xcdAmh&\\H \xd4\xd5\xda,\xc9t\xd5\xc4\xabw\x05}\xa1\xea\x8fl\x87\xd9\xf8a\x88\xcc:7#M\x08\xafM~r\x02h\xadf\x9e\x95\xc6\x8c\xb4r\xa7Y\x9e\xac\xa4I\xe9\x00\xda\xfa\x80P\xeaGH(\xcfZ@\xc1\xb0\xea\x0bD\xbd\xbc\xc2\xda\xa3\x13\xa6\x80\xee\xbd\xb8:\xc1\xb1\"i\x86\x99\xc4\xbb\xd7N\x98}d\x85\x19\xdaj\xb4\xd3\xd6\x8c\xfc\xadv\xbf\xd4J\xf7\x96\x9a\xd6\xa6\xa7\x07\xae\x84z\x0c\x0d\x96\xd1\x0c\xf1\x0f\xd3\x84k\xa3\xd3\xeb\x94\x15\x95\xd0\x9aebB\x146\x89//\xb5\x12\xd1j_;.dU\xe7\x98kc\xe6\xf9\xc5|I\xe2\xfce\xe4g\xbd\x1dNd\xb8\xa8\xbe'5\x1f.\x84\x8d!b\xda\x0d\x8fn\x10\x93[\xf5\x18J\x99\xec\xbf\xfc\xd0\xa9\xdda\"\x16\xf9A\x9d\x98\x06\x8c\xa6.\x8f3E&\x18\xfbR>f<<Q\x87\x8f\x85\xe4g.$u\xd1,\xa1OfI\x91\n\xcbQ\x94/\xa65\x9bE\xe5\x93\xcc\xf0\xc97\xb9\\=\xdd\xed4\xba\xea2,\x91\xf8\x87\xdc\xe4\x91 \xc2\xb2iE\xe6m\xd1\xd1T\xc3\xcaVc\xc8\x92\x02c2\xf7\x86\xb0\\\\\x9a\xe0amA\xd4\x1a}\xe8\x08\\\xd7\xec\x8610\x9a\xa9';\xfd{\xd2\x92A\x16L\x9dquD\x164\x851\xf5\xed\xa44\xde&\x7f\x10\xa1\xdc\x8cq\xdcT~\xbd\xf7\x82\xddU\xddl\xb9\x17\xd2\x9ea\x1d\x0b\x03\xaa\xae\xf5\xcc{\x9ez3^\"\xb1\x87\xb4\x98\x89so\xad\xa5\x7f\xd4\xaa\xf59\xdaV\x83\xad\x8d\x0d\xa2\x9a\x1f\xf4J\xd9f\x14@vv\xfa\xa6\xf4\x1elD\xb3\x11Ez{\"\nf\xdd\x1c\xcf\xe6\xdb\xc1WK\x02Re\x84\x93l\xd2\x98\xd4\x97v\x01\x96$_$SHb\x00\x16\xe0UKmw\xcdq/\xe1AK\xa4\xf8\xed\x1f7\xea\x13\xf7#\\,\x08\\\x17\xb3\x19Ia\xc9\xe4e\xb34YB\x9cL\x89\xf7\xf7\xcc\xc5\x03?\xa7e\xd2\xe46#\xa9\xa7|\xafV\xf7\xaf~\x91/\x92\x14\x00^\x934\xc92x~\x9d\x14_\x16\xfe4\xfc;Y\xc0\xf1\x0c\x1f\xfe+\xfb\xe3%\xe9\xfc\x19\x1c/\xf2|5\xde\xde\x96\x9e5*\x15\x19:k):\xd9\xcb\xed\xda}\xb5\xbb\xf7F\xaa\x9d\x17\x94[|\xaf\xe1\x1e\x0c\xa5\x08e\xb4?\x94M\xb0\xa1.ulY\xf9\x99w\xf1\xb7\x8fg\xaf\xae\x9e\x7f\xfa\xf4\xfcoW\xe7\x9f?~\xfc\xf0\xe9\x02Na4\xdc=\xd8=\xdc\xd9\xdf=\x801\x0c\x07\x07;\x07\xbb\xc3\xc3\x91\xe2}jh\xb00\xea\x1e\xe8\xe2\xa3\xdd9\xaeG \xf9\xe4\xc7s503\xa5H\xa6\xe0\xa7\xa9\x7f\x07\x8cPkI8h\x1a\x85M8e\xf49\x8c\xf3C\x16\x10=w\x1c\xef\xea\n\xa9\x9e\xab+\x8c\xf3]\x91D\xe3Z\xf2D$\xdey\x05\x19\xfd\x8eR\x1a\xa5\xb9V^\xb3\xb6\x84\x16xdm\xfar\x96\xc7L?\x80\xfb{\xa4\xa4\xe4\x00\xb0\x99S\xcb.^U\xdd\x84\x0d\x9a\xa26\xbd\xa6\x8c\xf2\x9b\x9a\xe7\xc9\x89>\x9e\x8b\x98\xa4\x19\x908H\xa6a<\xafgD\xc8\x17$\xc6\x8d\x87\xc9\xd2\xca\xc3\x0fD\xe0\x17\x1fx\x03\x06e\xb88c\xb9\xc1@/\xd57\xffF\x18\x19\x18\xcc\x04\xf4S\x13\xb5\x88\x85\xc0\x0cCC\x8c\x9b\x1f\x84}n}\xdc<\x9b\xa6\x0f\xac\xa2\x16gp\xbd\x03\x1d\xae\xdb\x17\x0c\xdb=y\x82LO\xb9\x1e\xe4w\xcdC\xbe\x85P\xc3\xd0>\xde\xf5]N\xde\xf2l\xdd1FWA\xcf\xf3\xea1\x1cWv\xcb\xeaV\xfd!\x99\xcd2\x92\xff@\x97@R\xe4\x90\xcc\xe0:)\xe2if\x9a]\xb5MZ9l\x82\x8d\xb6\xfd\x03\xc7\xd8\x0e\xdbs\xfd\xdb\xc9\xeb\x99\xd1\x99!juO!\xd5@\nuE\x80\xae\x08n\xe0\xb1\xee1\x05\xb3\xbe'\xad\x88)oCD\xb4\x00\xcf|\xd8\xbaU4J\xe2\xda\xec\x8f\xf5\xde,\xdd\x04\xa1\xb84\x9f#@\xcb\xe8\x0e\xf7\xf7\xcc\xed\xde*\xf2\xd9a\xdb\xd4od^\x98\x9dq\xbca\xc7\x8ei\x13 \xd4bIh\x83\x1d\n\xac+%\xee\xd1\xed$\x90\xce\xd3\x01\xdc\xc3\x82M\x9c\xde\xe2\x10\xf8\xe1\x8a\xd3\x81\xc7V\xea8\xdem\x1a\xe6<N\x9c\xbe\xfe\x04G\x9e\x96\x07\x04\xe1\x91\xcc\x06\x94\xafx\xf4t9]\xc9\x80\xc5\xc5\x0c\xfe\xc2\x8cm{\xcc\xcfd\xe6\x7fJ\xa9\x07\xdc\xc3\xd4\x16\x8eJ\xdd^ql\x1fT\x80\x89\x1d\xa72s\xc6\x932\xf7\x82duG\xdf\x0d\xf0_\xech\x116h\x916@Gt1Q\xa0\x1fJ\xf481h\xc0\x8c\xf7\xf7`q\"\x02\xc2Xb\xd3K\xdc.yZJ\x06`\x18\xc6\xa1\x84\x19-\x94b\xe8\x1a:f\x8ce\xd7\xb6A\xcb\x11\xb0N\xf0hyh?\n\x18\xc0&\xf7\xa6~\xeeW\x07:\xab\x8d=\\\x03\x8c\xb8\xda\x0d\x88P\x97\xfa\xe2u\xfb\xd1\xec\x02\xeb\xaf+C\x90\xdf\xb8\x90\xa4\x8c&\xdb\x8a\xc2/\"\x8e\x9bgi\x8ei\x85}\x81\x96CX\x93\xb8\x16\xd4\xb3wC\xa6_\xf4h#\x0b\x7fk\x1c\xbd\x1d\xc7.\x8bTyL'S{\xf4\xe8+\xe5\xe7yL\xe6(MV\xb3\x98\x19F\xa9\x8f\xd0(z\x11\xa0\xadW\xb9\xdbr\x1e\xe9l\x00c\xb1s)\xf9\xb9\xa1=O:\x0cu\xeb\x06\xda\x9b\x9b\xb1#\x82\xe4i\xd4\x06Z4e\x1a\x92>3/HX\xa7\xdcL\x8d\xe1\x98\x11\x91\x84rZ$\xb9)\x1bUJi\x08\xfag\xf3\x04\x86t`\x18\xbax\xb4\xb7\x07O \x9f\xa4\x1a=\xd7Z#\xd4$^\x85r\xdd<;\xa1\xbc\x95\x89jy^e\x96\xf1#\x0c\xbfB\xf8\xce\x82\xc8O\xe7\x842\xa8~\x0cK\xffk\xb8,\x96\x90\xa1;\xc7\xe0+\xe5\xb3}9\xcd\xf5p\xdfAWNJ6i)\x9e\x12a\xdf\xf7\x1c\xd4\xa2u%J'\x8b\x9c;JH\xcb\xf5\xdb\xb4\x0f\x92\xd6\xdasHe\xbc0\xfb)$,\xd0H\xf31\x9d\x88\xfb{ \x06\x14/\xf7\xb4\"0\x9b\xbd\xd5\xb8\xd6W\x8c\x9e\xa5\x13r\x80\xb4\x9c\xdb\xa1\xc0\xa9\xcd\xb2'\x9a\xedU[\xbe\x1b\xc3\xa3#\xa7\x14\x0d\x1bOB\x14\x88Z~\x16\x84\xa1\xa5\x17\x8b\xb2\x12\x91\x9f\x87\xf1\xb0\xb5\xc8u\x18\xfb\xe9\x9d\xa1\x08H\x12(\xfdq\xc2*A2\xaf\xad\x95\"\x9fm\xb5\x96`\x84vg/^\xdb\xc41\x02\x1c\xaa\xe6\x82l\xd4\xde\x9f \xdb\xea(\x91\xcf\x86\xfb\x11\xe9*\xb3\xd5R\x08\xaa~\x8f\xe0\xc7v\x08.\xc8\xd7\xeeZbx\xf6\xec\x19\x18\xac\xb6\xf9t\xfa\x19\xd9\xdf\xed\xae\xea\xb7.@\n\xa32cE\xa8\xedpzO\x0cp&\xcc\xc6\x1d\x95;\xf5\xe8f.\xcf\x8f\xd6\xf8T\x95\xbe\xeb\xd1\xd7M\x1b\xc7\"\xf6\x16\xd1F\xc6\xe7riz\xfc\xb9\xe2\x10L{5\xba\x94\x98*\x83\xc6\xa1B\x01\xa4\xa4\x189\xc0\xb64\xd3h\x10\xb7\xc4\x94;L\x99\xf0\x1cOn\xe49\xe1\x99,\x91;\xc575\x11\x1d=\xdd\xb7\xca'\x87 b\xa1I\xcf\x1cV\xe1f\xecB\x98\xbd\xf7\xdf\xdb\xb1S\x16K\xf8\xe1\\\xca\xb7\xb6`\xe8\x08\x91\x80(T\xbe\xdcDZ?\xa6\x07 \xe9p\x84@\xcb\x95V8\x00\x8f\xfe$7\xdd\\\x19@\xa2\x8c`m1\xa3\xd7\xcc\xcdm\xf4k\xafk\xf9A\x8bH\x8c\xd9\xdd#\xcf>K\x93%\xe5\x15S\x07\x15\xc35\xae\xac\xc6J\xe5\x15\xfb\xb45\x841\xcc\x95\x15eX!Z\xe1\x13\xaf8\x87'H\xeb\xb8\x069\x83\xe9\xd0\xad\xc4\x17\x92\xf6\x97\xc7\xd9\xc5\x08\xa4\xa7\xadE*\xf5\x04\xe7Z\xb5\x85#?\xcb\xdf\x18>\xc0\xb1O\xf2\xcb\xb6\xd1ky\x97\x1b?* {\xc1\xae0\x08Q\xce\x843Z\xfd\xe8q\x15\xfe\x06d\x12\xb2\xf0l\x86\xd8o\x85\xb4p\xf5%2\x89\n\xd6O\xb1\x14\\\x95\x89\x14\xd8\x89\xc6\xf8\xef\xb4\x8a\xc6\x99*h\x14\xe9!~\xb8q\xa1\x15>\xe0gY\xfd\xd1\x96\xf4\xcc(/@\xb2\xb6\xa2\xd8GL\x18X\xddw\xee+\x9fEO-`\x9bEQ\xe5\x7fc\xfc\xab\xd9o\x8dG\x8a`\xd6\xd4Q\xde\x8dai\x92FX\x00{\xe2\xa5\xc4\x9f~~\x13\xe7\xc3\xfd\x17gv\x0e?\xea\xdc\x18\xf5\xfb\xdc\xa8E\x16\xce\x8e\xa6A#M\x87j\x98#\x08\xe1\x18\x8a#\x0877\xf5L\x19\xf0\xc6px\xa1\x83\xfdG\xad4OQ\x1cp<\x1c\xc2\x16\x04\xadr\x1dQS\xf9!]9\xb4\x9b\xa1\xe3\xb2\xcfa\x93\x03(+\xe7-\xa0\x001V\xc9\x91\xec\x16K\"\xc1j\x0ca\xeb\x84\xf7\xc6\xe5P0 g3lb\xd8\x84\x0c\x9eAQ\x9e$\x05lA\xe60\x7f`\x84\xda3d\xe6\xc2\xad\xad\xb6!\x97\xc4\xf3\x8c\x07\x0b\\1\x1ep\x05\xc7\x90\x1d\xc1\xaa\x0d\xe8P\x03<l\xc2\xca\xc1Q\"\xf0W\x9d\x90\xa6\xd7\xac\xc5\x8bN\xbe\xaeS\xe2\x7fi-\xa5\x97\xe3\x00\xef\xe2\xac\x9c\xaeP[\xce\xa8\x01Q\xa6\xc6\x84\xf8\xee:\xb4\x03t\x82\x98\x17\x19\xa5\x10\xee\xefu|\x8c\xb0p\x95\x0em\x0d\xc5\x9b\nZ\x86WG1\xcf3\xe6q,\x02\xa4\x8e\x91ZK\xf4-\x84\x9d\xb83\x84\xff\x05#\xca\xcb\x0d\xf4R\xa1R\x9d\xb8 _[TO)<\x83\x10\xb6aTv\x0d\xef\xda\xe4\x0f>[{>\x1cCz\x04\x9b\x9b~\x1b\xfa\xa0\xc7\x84\x9c\xf7\xa2\xb8\xce\xf2\xd4\xa6|\x82\xef\x02O\x8d\xa1_X8H\xa4\xd6\x8a\x8a\xa0\xf0\xf5e\xc9\x84\xee4f\xba\xdb\x03\xe9\x89\xcaz-\x9a\xeb\x8eE\xc3+{a\xbf\xa6\x1bJ^\x16\x0e\xaa\xe4\x9a&@\xa6\x96\xae\xfa\xb6d6\x18(\xeb\x94smM.]Y\x14V\xb2\xf2L\"\x963\x87K&8\"r\x02\x94\xb8C\xa2\xafK\xa8\x98\xaf;\xe8\xdb~\x83\xae\xc1\xa6W\xc5g\xfd*~a\xff\xb6~\xa7\xbf\xf6\xad\xbb\x97V\xa3\x92W\x96\xde\xb6|\xd6\xa4\xadF\xa4\xa0\x15\x1b\xb6\x9d\xd3\xd3i\x84i!\x1c\xbe \x19+!\xcd\x9f\xcf\xf9M\xcaO\xc3!\x8f\xdaL\xd1\xc6\xde\xbe\x0b!\x9b\xf6\xc4)\x7f\x9a4yF\x94\xfc\xf0\xad\x0b\xfe\xbc\x8d\x9f\xad\xb3\x10t\xd8q\x8d\xc5\x84SH\x91\x07yq\x97\x13\x91\xf1\x9dbU\xf5!WQ\xe5u\x9b\xae\xb6~\xbdl\xeb\x17\x05\xf3;?_x\xcb0.i\xc6\x1e\"[:\x9f\xe8\x1aq\x04 \x8an\xdb\xd0&\xa5\xbd]\xb4\xafu1F\x07\x99$-\xc9\xe5\x03\x11,\xc1X\x82\x9e\xe0\x11e\xa5w\x9e\xc2)\xec\xc2\x98\xdd\x8dv\xe0\x14v\xf8\xdd\xf0\xe9\x10Na\x04c\x93\xe8\x05iE\xd8\x84\x19\x1c\xa3\xb0O\xc8\xeffm4D\x9f\x04\xb8\x11\x1c\xc3ptX\x12rQ\x8b^ \x04\x9da.\xd2'-.m\x8er\x19\xc3\xa7#x\xc2\x88X2\xa1\x83\x1b^:L8@\xd9\x17{g\x08O r\xe0\xf8\x18\xf6\xe1\x1e\xf6w\xe0 %^\x9f\x89\x0cb\xd8\xdd\xec;t\xd7`\xf6).\xb9\x7f<3>\xde\x8d.]e(!\xf6\xbe\xfe\xcc\x97F4\xdc+G4\x1c\xc1=\xd8bL\xf2\x10}:\xc4\xd1`\xf7\x80\x7fw\xcc\x13\x96\xdd\xdf#9+%x\xfb^\xe3\xdf}\xfc\xf8\x8b\xf2ng\x0dh\xd4\x9f\x15\x06\x08\x1d*\x10\x92@\xe6\xd7AV8\"\xef\x1b\xad\x89\x82\x8c\xa5\x92\x1bI`\xd2\x0eQO\x12\x97\xc6X\x94/\xc2\xcfi\xdd;.\xee\xe4!\xc5s\x81\xdc\x9e\x1d\x94i\xe4\\H\x19>\x0f\x98\x18u\x00O\x00\xf3\xc5\xdd\xb3I\xe4\xdc\x0c\xcb%w\x0f<\x95\x1cer\xc4w\x18\x1bg\xf3\x04fM\x8co\xc2\xd2\xdd\x14\xc9M\x19\xa7\xa9M|\x8a\x8aq\x8a^\xbe\x94$\x9f&\x1d\x1d\xb71>\xe7b\x10\x9d\xde\x02$\xdd\x85\xa5\xc9V&\xaeT\xaf\x0c\x04(\xc3\xa2\xa4\xa8=\xa4\xc7\xeb\xe6I\x9f\xce\xf0\xe3&u\x99j\xeeK\x07\x11\x157\x81l7\x8eO\xf9.\xf7\xb8b\xe9\x84\x1e\x0e\xb9w\x1e%\xb7\xe5\x93\xf6y\xd8$U\x84N\x82\x12V\x0dC\xc0\xba\x95y\xa8\xba\xb37\x1b\x1e8\x90{o\xde\x9f\x7f<{yq\xf5\xee\xf9\xffw\xf5\xe2o\x17g\xe7t=\x0dL\xb2\xb8\x139\x89\x0e1\x98\x05\xe9\x9fwy\xf6\x18\x83\xdf\x0b\xdf\x1a\xc5di\xd8a\xa2R\xb3J2\x9fie)\xbd\x00\xb0\xe5\x18N\x92\x1e\x01\x13\xc4\xc5{\xb5\xdb\x94\x1f\x89K\x8f;\x1e\\\xd8\x1dqZi\x96$\xb6c\x14\x87\x12\xca\x901K\xd3'O\x84'x\xf9\xcc\x1eb\xc2\xbcJ\xa9\xd8\\\xaa\x9d\xd9\x0d\xf8\x1864\xb2\x93\xfa\xbab\xf1u\xbe\xbc\xf3\xbf\x96\x91\xa3|\x1b\x05\xcb\xab$\x89\xce\xc3\xdf\xe8t\x1e\x0e\x9fb\xf2\xa1+\xeea\xd3\xb9\xe2\xb5\x13[sJT=\xbf\xb8`\xbb\x87\x1f\x8cT\x7fd\xf3\xf0EZ\x0b\xcc\x16!\xb5\xec Y\xeb\xa3v]\xd1\x91k\xcb\xb8\x06\xfb\xc9st\xf5\xa7\x0d\xb1_\x18\x1c<d\x11W\xb2I\xfd\xd9%\x93\x98\xd1W\xfa@ \x99\xab\xd4\xd2\x96/\\\xefv\xad\xa4\x04\xaf\x83\x89\xa9\x11\x10\xed\xac\x07\xfd5l?\x854\x10Y><h\x06\xc2\xacI6\x84d\xe6}\xa7:\x0b\xc0\xb4*\xef\xcd\xc22{\xf4Xy(=\xd1 \xf8\xae\xd5\x82@\xf8\x1cg\xfe\x8c\xf4]\xe23Qi{u\xf4\xb4\xf8\x1eU\nmO\xdf\xba6\x84y9\x0b+\xb4A\xbc+Q\x85\xa6\xf6 Y\xae\xfc\x94ty\x8d\x80l^YZn`\xfd\x8a>J+!\x13\xdetY\xa9Xa_hmM\x98\xe1K\xdd\xd5\xad\xcd\xccAV\xec16</\xef\x12\x8cV\x8bDm\xc9I2SZd\x0dC\xca\xd0\x1b\xdc\xb4\xb0\x1b\x93\xe4\x92\xe5\xce\x9a$\x97m\x87H,8G\xd6\xfe$18\xbfC\xab\xec\xd6H\xf4\xc5p\x8c\xdb\x01\x95zh\x8e\x04\xa7@\x7f\x0ft\xebE\x98\xbfv\xae\x18\xc1Vr\xe5\x0fi(\x7f\xf4\x03\xee20\xf8^&\x1c\xff\x03\xf6(=l\x1c\xfeI\x0d@t\xfe\xf8\xd0\xc7\xcc\xa27\x9d\xc0\xd0C\x1c\xf8yo\xec\x10Ji\x02T\xd3\xc9(\xccr\x9d\xe9d\xccL\xac \x99 \xa4`\xb2\xa24\x18>\x08\x02ZGc\xdf\xd43\xd0\xc9\xb5\xd5\\j\xb5\xd0B\x0c\x933\x0c\xd2\"\xd5\xa5\xbc\x07\x99\xc4\x97FvK\xc8\xa5j\xc7\x83\xad\xcb\xb3\x0f\xdcV\xdc\x84\xee\xcc\xbd0\x13\xe7>7F1\xb3\x812\n\xf7\xff\xa0\xf9\xa3\x97\xcf\x8c\xb9Q\x13\xce\x19_\xe1 \xdf\xb1\x16\xa1Z\xb7is\x91J\xce\x1e'\xb0p\xa1F\xe9I\xc7\xe7\xc6\xa0\xfe.\xbb\xf5W\xc3\xfd\xb6x\x9d\xa0\x06\x0fh\xd3\x13\x11\xad\x9eH6\xd7\xe4=\xc9(\x89]\x99\x0e/\x8b(\x0fW\x11\xa1\x10\x1c\xeeo]\x87\xb9\xf6X\xac)\x1a\x06Gh\xbeK\x8e\xd8\xf2\x1b9p#\xe2\x9f\xba\x98\xb4R\xc7\x7f e\x82\x1cB\x04\x04\x10\xeb`\xd9\x19}W\xb0\xec~#XvF\x8f\x02\xcbn\x03,;\x8e[=\xa2`b\x7ftZ\xb85\xa0\xb5\xbf\xfb]\xa1u\xf8\x8d\xd0\xda\xdf}\x14\xb4\x0e\x1b\xd0:\xd0Ck_y<b\x7f\xf6\x94\xc7;\xec\xcf\xee\xe3a+\xec\x93\xfbBw\x00\xf7\xed\x10\xaei:0\x10\x9b\x85\xd6\xe2h\xe2!h\xd4J\xeb\xf1\x92\x8ff@)\xf3\x1e\x9e\xe9r\x7f\xd2\x16M>\x9d\xe8\xda\xf9\x83F0\xcc\xe6LX}a\xfc\x16x&\x8f\xa7\xf2(\xb1\xfa\xd5\x8b~S\xb1Z\x890\x90\x90\x1f\xa2\x19\x1e.\xba>M\xa0\xd9(\x96>>\xa1\xbd\xe5w\x9d\x1f\xe3\xeac \xa4\x89\xe4\xcc%\x19(\x1b\xa5\x1b\xd0\x83\xee\x14\x17\xef\xc5\xc7j1\x9b\x9c\xac\xa0\x0f\xb5\n\xbd(Vq\xf1\xc6_\xae\xd3x\x1b\x9d+.^\xef\xf3u\xeam\xa5\x8e\xa1\x1f\x85,.\xde\xfe\x87u\xda\xef\xb4\x1d\x86\xaa\xe2\xf3u*n\xa1\xc6\xa1\x17E\x0e=\xa9rX\x872\x87j4\x17\xfdF\xd3I\xac\x03\x94v\xd1Z\xc6\xfa3\x8b\x0eUz+\x8e\xb51\x14\xd4\x8b0w\xc4M\xb0\xac\xbef\xd3\xa0\xa5\xc9\x1eD\x0c\x12\x1c\xac)\x0cI\x1d\xa9\x93_\x0b?j\x8f\x1f\x01ZiC\x87lA:\x0c\x85\x8df\xeb\xc1\xc3\xcf\x80\xfb{\x8e,KY\x88\xde/\\\x19E\x18g+L+\xd6\xefd2)F\x98\xffRC\xca\xdf\xdaqq>=\xe3f\xd3%]Q\xba\xf3 \x8e\xe4\xfe\x92\xde\xd2\xcf\x83\x85\xbd\xed\xfd>z\xd8\x9e;\xde\xdf\x930\xb6-\xb0Dx\xb0\xb22\x9e\xec\x89\xa5P\xf7<\x0f,\xc7q\xc1:\xe6\xf4\x06\xae+]6\xf4:\\\x0c\xf2\xa4N\xa3\xf6\xef?\xd5*\x8fW;YU\xcfmf{\x8e\xda\x11\x0e\x90\xb1Z.-\xed\xb6\x94\x17\xcc\xd6,i\x9c\xa8\xb9\xf0u\xa7'pY\xef\xfd=\np\x06,\xd5\x9cr4\xeb)>\xee\x8f\x9e\xd2G\x80\xf6\xd1\xa6\xf1\xa6\xf0\x8c\xf7'\xa7\xbfZ\xdd\x84\xaa\xf2\x9d.\x04Je\xe6RH\x07\xb8\x10\x97\xbf\xd2\xf2WR\xfe\xaa6_/\xf1^\x88\xae\x03[t\xf5`\x0e,\xd8\xa2\xcb\xa9\x90%z\xa1\x0b\xbe\xc3\xcc7\x10\x9c\xa5^0\xe1*\xd8\x9ae\n\xd3\xec\x0e\x8e`\xc6\x0ci77gf `4\x991 `0\x99\xb5J\x00i7ia\xd6KZ\xda\x8c\x83\x1f!\x01\x0c\xe1\x18\x8d\x90Q\x02\xe8\xc31\x84f \xa0\x8c\xa5\x82\xa8\x98\x92>\xb1\xc6\xa4\xb6\xb8q.\x82\x92\x9b\xe3\xdbf z\xd3\xba\x7f\xad\xc6\x96\xf5\x90\x1a\x98:\xaf\xad\x11\xc9\xe4\xff[\x1b\x1a\xb66\x84\x1e\xfaz<fBbJ\x94\xb6\x92\xc4e\xe2#i\xa7\xbb\x9c\xffj\xd4Rz\xa0\xa8\x08J\x1f4%e\xd1b\xd7\xaa]\xbf\x84\x99\xf8.{\x1d\xc6\x18\x97\xc0\xd1\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0b,P\xc7\xc4\xe5\x91t.\x1d\x96\x18\x14\xa2$\x9eS~U\xe4\x1d4\x07\xd4\xb8g\xb2z\xd1\x89\xd8\x81S\x8a\x98\xd9c-&\xe6\x1c\x04\xe5\xcdd\x7f&V\xb6\x8fQ\xfe\x8d\x1cE\xb74\xaf\xd3\xc4\xed4\xb2V\x89\xe4\xe0$\x07\xefyV:5\x89\x88'\x8c\xbf\xc3_\xbd\xd0\xbe\xe4\xdc\xcb\xd6bR\xe4Y8-\x83R\x99\xe3\x93\xa4e\\\x01c\xbc\x8c\x1az\xad;\x89\x1aUz}\xf8/\xbe\xd9\xee\x94@9\xfa)\xefd\xbd\xfa\xb1]\xbc\xcd\xeb5\xda\xec\xe2\xb8x\x95WkT\xf9\xad\xaa\x08\xa8\x9a\xbd]\xa3\xd9N\x1e\x8b\xd7y\xb6F\x9d\xfft\xca\x8e\xaf\xbd:\xdf\xc9M\xa1\xa1\xfbZ\x9c\x94\xc9R\x17\x80\x1941\xe7S\xd5k\x8a)\x1c\xbb\x9dOUi\xd7\xbf\x9d\x7fx\xdf\xc5Qp\x88\xe8wh\x8e\xa1\xe1E0\x10=\xcb1\xf5s\x7f\x0c\xaa'\x1d\xd2GU\x1e-\xef\xcaOS\x11\x1b\xcc\xed\xc6\xa5J\x8cM\x8aX\xbe\xc0 \xec\x0e\x9e\xee\x9bB\xc6=o;\xb3\x85\x04M'Iz\x8cYp\xcd\x1c\x18u\xbe\xccfLcef\xa3\xc1)js\xcd\x0cd?\x87\xde\x0f\xff\xacC\xfc\x1e\x83\xfb\xd8gpf\x1bD{\xc3$\xf5\xb47\xf8\xe1*\xb1Oiu\xca\xea\xb6d\x0d\x08\x96\xc5\xf6_\xce\\\xe5\x10\x18\xa1\xc3\xf4M\xbf\xdad\x12\xb6\x0c=\xe95\xf4\x8b\xb6\xa1\xd7L\xd1\x15\xc6C\xee\xde\x80u/-\xf5x!\xd7\xe4$\xa6YK'\xe1%l\xc2ho\x1f~\x84t\x122\x1b\xeao\x1c\xcb\xbb\xb6\xb1\x08\x8d\xc4\x105\x12,6\x869\x92\x8d\xc5H@\x91\x10\xbe\x08\xe3\xdcl\xdf\xb1\x89d\x901\xee\xdbEz\x17\xc6s\x0cl\x82\xe9\xab\xe1\x9a\xdc%\xf1T\xd0>\x0cf=\xbdp\xdf\xd4E\x10\x86\x1cm}\xa5\x10?X\xac\x0f\xda0@\\X\"\xe2\x87\x984\xd99\xba\xa8\xf1\xe5\x1f\x1a\x03\x03\xa9\x91\xfe\xd4\xd8t\xa6\xeacz&IB\x07s\x1c\xcc)\xf9\n\xb2x\xa1'D\xff\xde\xc1\x0c\xe5\xa5O\x7f\xce\xed\xa9\xf7p\xc2\xf5z\xc9\xda\xeeU\xadud\xaf\x17\x17Fu\xc3\x1d\xee\x8e\x96\\\x02\xea!\x9e`P\x9e\xe3c8\x84\x1f)\xfd{\n \x8ca\x08[\x908\x0e\xdahk^\xf4\x1a\xf0\xfb\xb5\x06\xbc;z\xba\xfbt\xff`\xf4\xf4;\x8dz\xd7<\xea\xbc9\xac\x1d\x1c\x16\x03F\xaf\xc1}\xea\xbd?\xbeea\x99\x96j\x0b>y\xf4\xfa|U\x1bQ[J\xc6\x90\xeeB\x04\xc0\xc0e\xa0v!\xe1<\xae\\\xc7h\x87\xbd\xa3\x10\xd8\xed\xd5\x87\xb7\x8f\xee\xc3\xa1\xa1\x0f{#\xf6\x8e\xf6\xe1P\xe9\x83|\x97\xa9t]\x1f\xfb\x1d\xe1\x15\xd7OI}\x02\xff\xfd\xdf\xc4U\x83`\xe6p\x8a\xa9Z\xfe\xfb\xbfs\x97\x9d\x14,\x0c\xe5&=\xb5\xcb\x1dBD\xc4\x11B\x0f\xf6\xf2Q\xeaT!\xc9\xec\\\xf9&\x17\xdf\xe4\xe57\xb9\xf4\x0d)\x9f\x10\xc7`\x03\xecT:\xcf\xd2\xea\x1aaa\x0c\x90\xb9\x96\xfc\xa4\xa4\xc0`K\x8d\xcb/\xae\xb8\x0c\xf3\x9b\x08q\x86\x81\xbb\xa81\xe7\x9cNH8\x19\x13S\"\x80\x0d\x04)\x00\xd2\x95\n\x07\xaa\x85V\xf7\x80P\xd8\x0f\x11\xd5\xe0\xedYO\xb9\x1a\xe1\x92\x19!\xb8A\xaaM\x90\x13\xb2|\xa3\x05\xf7\x89\xe56!\xdcgoX\x12G\x9b\x9bt\xd89\x17\xae\xffxB\xe9\x1e\xe7\x88\x13\xb5\xec\x1b\xd8\x84\xf0\x12~\xd4\xb9v\xebIY\xfd\x88_\xfccF\x0c\x9b\xb0\xb5\x95\x8bq\x1f\xe1\xd2\x1et\x0c\x97~\xf0\xed\x03>\xec\x83\x10\x84\xc6\xa9\x1c\xe3\xd0U\x15\x1cl\xe2\xfa\xb48\xdco.\xab^\x8d\x8e\x0c\x8drK\x0f\x04\xca\xf0\x12\xcf\xfc~\xfdhN\xf6\xb7\xf5\x03\xa9\x8dZg\xfa\xf4cg\xf4Hx\xec\xaa\xfd\xb0\xcd\x00\x91\x1f\x8d\xf0\x11\x8b\xf37\xdc?88\x18\x0d)\x17Q\xbe\xdf\xe9\xd9\xedG\x82\xaf\xd1\xedF\x1f(gc+#\x18\xee7\x87P\x1b\xd5\xcee\xab\x08\x9fv\xfb\xff:\x8c\x06\xcfN\xf8\xe7\xc3\xd1\xa1\xc3E\xe1[\x9cv\\%\xb76\xa5\x12(X\x1d\xc7\xedF\x07\xff\x10\xf4W\x03\x8c\x84\xdb\xd2\xcb#$/\x9bX0T\xb0`\xda\x0e\xa4P\x03\xa4\xd0\x08\xa4\xb0\x07\x90\xbe\x13\xcaD\xdf\xebr\xc5\xa3:\xefG\xc0\x88\x10[\xd2>@\xaf\xd3\x9e\xd8u\x0d\xe4j\xc4fM8\xde\x88\xd8\xaaF\xe4b\x84\xfd\xce\xe8`\x9f\x0e2\x86S\xc6\x08\x0d\x86\x07\xfb\x03\xb8\x87\x18\xc6\xdd\x14\xc8\x1a8\xfa\xd1\xc3a\x83\xb8\xaf\xa1\xf0?n8\xdf\x0f\xd5\xaf\x87\xe9\xebx\x92>\x1b\xed\xf6\xean?\xe8\xf7\xef.\xb6\xdc\xect\x0f\xe4\xde\xd5\xdd\xd7Q\xe2k\xb0\xfb\xe3\xba\x9b`\x95\x95\xa2ac \xb8\xbe^\xdd\xf8^Pktc\xd8\xb7\x1b\xaf\x92\xe2:\"\x8f\x04\xc7ag?\x06\x82\x01\xed\xd7\x8fG\xc2\xa3\xbb\x1f\xc3>\xfd@\xe6\xd9\xc8\xcd\x18\x848\xc8\x86n\x92\xda\x01\xc7\xacXPm\xfbF5 P\x0f\x93\xd8\x81-\x8a\xf2M\x8e(\x899\xc6_\xd8\xe2\xf4\x81\x1b\"\xafBN\x13AI\xc4\x8dc\x92\x15eD\xc4 \x10\xd8\x86\x84\xc9\x81\x8c\xe8\x8d\x16n\xc5b%$\xb5d\xc2?\x10\x921\x161BSc\xa4$AS\x88\xcfJ\x88nm%\x18 \x8e\x93\n\x1a\x90&\x02\xa4\xe1w\x03i\x83\xa8h\xb7`\xd1\x00U\x85%E\x16{{.\xeaQ\x8c\xf9~pv\x10\xe4\xb3(IP\xd2\xcd\xb1\xb5\xbc\xca\xb8\xc9\x7f\xaf\x81\xe8(\x90o\x1e\xcb\xc8e\x92\xe3\xb6\xd1\x9cj\xb6\x87[\xcd\xd9\x90\xcd\x19\x8aH)M\xf5\xf7Z\x03,G*=|z\x0e\xb27\xa5\xfc\x07\x0e\x92\x8fF\x1d$\x1f\xbbf\x90\xc3\xb5\x06\xa9\xa3V\xbey\x90\xbb\xae$\x12\xef5RF\xb3\x88\xd1\x8ev\xa5\xe1\x8e\xaa\xe7\xc3}\xc3\\k\x963\x85\xcc{\xfd\xf4\xb7\x92E\x12d\xfe\x80\xe9_\x1f2\x06\xa8\x0c\x0dP\x19\xe9\xd7\xccN;d\x86\xbd!\xb3\xe6\x11+\xa4\xc72X6\x8c\x06G\x02\xd57\x8e\x07\x0c\x1d\xad\x97\x9d6\xce\x96\x84\x1d%[\x1a7o\xbd=\x18\x9e\xc5\xfa\x83\xa5#J\xef#Op_:n\x88\x10y3\x89z\xc1~\nsLv\xb6\xd3\x01]\xe2\x97\x05\x86(r\x95s\xdf\xa6\xa7\x94\x0f\xcf\x9e\xc1\x80\x9e\xa3\xc5w9\xaf\xd6\xa4\x00\xfeO\x99\xe8\x16*\xe2\x9b&[\xcc\x85D`\x84\x15\x81\xb1\xf6\x8co\xfecf\xfc\x0f!P\x86\xa3\x03\x17\xb6\x86\xa3\xc3\xb5i\x14R\xd3!Q\xd02\x9f\x84\xe1\xb7\xd0/\x7f \xf9\xb23:\xd8\xa7cE\x19B?\xd4\xfe\x07\xd20\x7f \xf3\x88\x81\xfe\x81t\xcc\x1fH\xc6T\xf9\x10\\%\xedA\x8f!\xb7\xcfm\x0f\x12\xa7F\x12}\x13A\xf3\x07\xd23f\x10\xd5\xb7o\xcdHB\xec\xe2\x1eP\xfc'\"~\x0c\xf2\xa7v(\xbeR\xe6\xac\xcb\xab\xa2ji\xdd\xf9RZ\x1a\xf6j\xc9$Ejo\xea\xedc\x06e\x12\x14\xad\xd5T\xe7\xa8\x82du\xb7\x1e\xddR\xa5\x9b\x1c\xa0Cd\xe9\"X\xd9\xd5\xe7\x8a\xa7\x97\x94\xa5\xa42E\x90\x0b\xd0\x0f\xf3\xb2F\xae\xe2HK\x12\x10\x9d\x17\x98\xf7eWz\xa7\xb0\x11 \xa5\xea\xa0\xdc\xad\x8e*\xf26\xc3\x9b\xdcO\xe7$?\xcf\xfd4\xef\xce\x86Z\x9a\xf1\x003\xd6T\xba\xa1o!K\x8a4 k\xb4\x90\xb6\xf5\x97\xd5v\x16O\xbb\xebJ\xeb\xce\x17%\xf4\xeb3*\xd9_\xe5\x18{iK\x9a\xa8\xda\xcbM\xadU.\x12\xb4L\xbf\x95\xea\xe3\xd6\xe3\x1cTn\xa8\x18t\x99+\x07\xb1\xc5\x96\x904 \xb0t \xc3#HxV\x83\xad-4\x0bK`\x13\x10I\"\xae\xa3w\xba\xb8/\xa5\x93\x11eA\x86d\x07X\x18\xaf\xf5\xb2\xfe\xb105\x8aY\xda\x1a\xedk\xf3\xb9d$\xaf\xf2\xb8\xd4Lubf\xf6\x14:\xfa\\\x98B\xef\xd7\x86\x08fa\x14\xad\x87\x084NWkg\xb6\x16\xe9 0\xa4\x06?6\x95\x1d\xa2M\x9f+\xe1\x85\xe6'.\xcf\xba\xd1\x95\x19 $\xde\xaa\x16\xb0\xdcdy\x04\x18\x80\xe8\x18m\x8c\xc5Am\x88\x8ff\xce\xb7\xaa&\x9b\xd1\xe4\xc33\xf9\xb3\x97\x19\xbf\xfb&\xf36\x80\x1d\xdb\xad\xe7\x02NM^\xc5&\xcf\x8fF{<w\x89.\xdf9\x07\x16K\x95d4\xfa\x15\x9e`\x12\xfa9fgC\xfd\x91\xd1*\xfaCoO`\x0c\xe7!eqZ\x84\x99\x1eK\x85\xa6\xceV\xce\xbcJ\xa2\xeb\xd3Zo\xc7<\x89\xdc\xc0\x85*\xb2\x07=\xe5\xb4i\xe1\xcd\xf8Dc\xb1\x8fH\x84i2\x0cH\xc4,M\xf0\xd1\x96O\x8eU\xc82\n\xbf\xb6c\x91\xd2>\x95\x12`:-\xc9\x9b)\xcb-\xe2T\xe9\x17a9\x00n\xab\x87>\xca\xb5A\x08\xbc\xe8OB\xf8_P\xaca\xb3\x977b\xe4\xd4\xfb@\x07\xfb\x19N`{\xf2\x9f\x9b\xbfl\x0f\xb6\x9e>\xdf\xfa\x0f\x7f\xeb\xb7\xad\xab\xcb\xed\xb9\xc9\xf5\xe6\xd7\xf6\x10\xae\x80\xca\xd9S\xb0\x06\xe8\xf4_O\x13:V\x1e\xd4\xfbfh\xf0\xb5Q\x01x\xa3\x0f\xd0\x96\x03\x8f\x8a3\x84\xed\xce\x1c\x97\x95\x83L\"\xc2\xf3\xeb\xf2:\xb4\xa7P Y`\x9bFb\x07\x07\x9ea4\xef=qD\xef\x1d\xec\xec\xee\xb6!\xdc\x90\xe7\x873\x97\x80r\x93>\x83\xbd\xfd\x9d\xe1\xd3\xae\xc2\xf4b\x89(vh\x7f\xb6\x86\xb43<\x99\xc4h\xe7\xa9\x0b\xc3\xa7C\x17\x86\x87O[\xd0\xba\xb8\x82$\xce\xc3\xb8\xd0\xe7R\x12\x979{\x10\xf0\xbe\xfb R?\x19\xa5z\xf2\xf5O\xd4{\\$\xed-u\xb6\xd2\x9e] \x97\xc9\xfe\xce\xc8\x98BP\\\xfd\xa0\xe2\xfe\xc1]\x8e\xb9\x8f\xc6>lR\xban\x8b\xa7 8>\x86!3t\xd9\xe2\xa3\xd1\xd6\xc0O\xc5\x84\xf3==\xc6c>\xc9\xab\xfd\x1b\xb3D\x15]\xfb\x8c58d\xd9Y\xba\xd2\x1f\xf0\xce\xc4\xad\xe3\x10\xf37\x1a\xec\xf6l}\xb4^\xeb\xf0\xec\x19\xe62\xc0\x00\xdb\x98\xd0 \xa6w\xa3\xc3^\xdd\xc2y\xea\xd7\xaf\x9d\xf5\xfb\x85I\x17F\xa3]\x16\xc2\x03\xf6\xe1 \xed!\xf6n\x8d\xbev\xa0F\x1c\x07O\xd9\xa0\x8b3 \xd2i\x05\xc9\x94\xc0*1x\x91\xc9U\xb2\xf1\xee>b\xbc\x87t\xbc\xbb<d \x1d\xbe<\xe0\xc7\xc1\xa0\xf1\xd4\x1c\xd3\xe3O\xf5b\xb5\xdb\xf2\xec\xfc\xad\xf5\xb0N\xbd<\xa92\xf0T\xbcM\xeb1Ww\x08i[M\x82$\xf0\xf24\\bx\x1c\xfa\xc3vx\x1e\xc4U\xe4\x07\xc4\xde\xfe\xcf_\xb2\xcd\xfb_\xb2\xcd?o\xcf]\xb04\x99\xfa\xe9\xf5`\x13\xa7\xfc\xe43\x96s*\x92w\xd4/x\xdcQ\xc5|\x8b\xa8\x92\xa8B\xd9<\x01\xeb\xc4\xf0\xa1\x18Csbl\xd23M\xd1\x8b\x0ef\xb1\xee\xcb\xc5\xb8b\xc6\x82`\x1a\x1f&\x14\x91\xa45I-\xad-g\x9fs\xce0\xf3P\xd2F&W\xf5\xeb,\x7f9\xdc\x7f\xdb\x85\xd8\xde\x19\xf2\xa1=\xb8f+\xac\x9b*\x13\x16\x12>\xe4\xeb*I\xf3\x0cN\xe0\xf7\x07\x89v,\xc1\x106<\xd2\x1b\x9b7#\xf9E\xb8$I\x91\xc3\xc2g~\xa0\xd7\x84\xc4 B\xe6W\xf0~\xd04\xe0w7\x10D\xc4O\xbf\xa1\x89\xa2\xb9\xe0\x19n\xc5\x18`e\xef\xab\xe8\xc2\xe5#\n>\x95o\x16T\xe3\xc9 \xf3\xe2\xda`\xf9\x8e5\xf5\xd0C\xb6z\xecv\xd4\xab\xcf\xb7!\xaab_\xd4\x97\x81\xc8\x0f\xa17\x955\xa6\xef\x10U\xb2\xa5SF\xcb\xd79\xfc\xb7\xb6\xd0\xac\xab\x94\xd2v\x07\x0f\xa8&l\xa3Z\xac\x8d\x95\xa0\x1d\x03f\x9d\x11\xdf\xc8\xbc\xa6\xb4\x10O\xe5\x9b\xb1\x8av[\x13k\xd0\xeaU4-\xdf\x19\xe6\xc9\xd4\xa9\xda\xe2=\xad\xdf\x8e\xd5,\x89\xad\x1d\xa3M\xa8Y\x15\xcb_\xb6\xb4\x9a\xe8\x1e\xe7\xa9\xcd&Jb\xb3\x00C\xbf\xd4\x9f\xcdx\x12\xda\xe6\xc6Y5f\x04\xb3\xb7b\x1a\x0b\x9bW\x05\xa5X\xe0\x14[\x14\x01\xc4\xed\x08\xc3\xa7b\xdd.D\x92\xecuj;\xed\xfbu\xdah\x16\x89\x88\xc0\xc4L\xd2\xb3\xad\xb0W\x1a\x8a\x01\xfb\xd8\xc6KR\xa6S\xf4\xed\x083\x11\xe9\xd79~@\xb1d$\xe0\x8aA\xc4x\xf6\"\x9e\xf2cv\xe9\xa5El\x9b<\xfc8(\xe4&;v \xf0D\xcfl\x8f\xea\xe6N\\\xfd\x8ev&T\xa7\x98K^\x86U\x1a_\xe9\xa1\xdd\x16P\x12Q \xab\xc8G\x14\xc8b5h+\xa5\xabV~\xe1\xf6o\xc6\x8c\xc2\xc4\x95\xda\x06\xf9\x12\xf4\xc2^\xe2\xean\x08d\xf2K\xc6\x9b\xe6\xe6a\xad.@\xa3\x01\x8eL;\x1a0\x8f^\xfb\xe6A\x05\xd8C\xebN\\h\x858(\x0b\x9c\x15(9\xe1B{\x96\xe6\xe8D\xcaZ\xaa\xab\xee\x86n\xec\xaa\xc5\xc4\x8b\xc9\xd7\xfc\"\x0c\xbe\xb4\x12\xa7b\x9fR\x8a\x80\xd1\xbc\x8d\xb8\xcdM\x93!\x94W\xa8\xc5\x9e\xc1\xb0 \xce\x12\x17\xc4\xcc'\x93\xb2*\xea\x97G\x10onRr-f\x86XR\xe8\xe8F\x98\xfd\x883\x1b\xe4V\x80\x0fe\xf7\x98\x15Z\xa2\x07\x03\xfa_aO%T\xe8\xc2B\xb6\xabG\x00\x9b\xcfF> <\x1c+[\x8e\xd5\\\xd4\xaaM\xbc<\xcc#\x0cJz\x9d&\xb7\x19I-\xfa\x90\xff\xe6a\xf2\x13\x8f\xc47H\x07\xd2\xdf~:\xbf\x11y5\xbd\x1b\x92ft\xfeX$\x93\xf2>+K\xe3\xbb\x1b\xfcn:}\x1bf9\x89\xb1\xde\x1b\xf6\x12\xdd\xd1\xd9\xef\xd9L\xfcL\xc92\xb9!ja\xf6\xf4y\x14\x89\x17\x99xC\x96a.~\xafR\xb2\"q\xa3%\xfe\xf8C\x1c4\xea\x8d\xa4\xea\xccK\x8d\xef\xc0\xc9e\x1dz\xd7a\xdc\x99\\\xa5A\xb5\xae\xd2$ YV~\xccC\xa4HA\xf1\xea\x8d\x04\xb7\xd3\xb6\xf9\x16\xac\xd2\xb6\xa5|\xb6\x98\x86\xe9\xe3z\xc6>\xed\xeaW\xb1\xf4\xb3/=z6\x90\xb6>h\xb8\x10E\xc5o\x15\x19AEO\x90KL\x9c\xcc\x90\x98G\x84\x1a\xa0\x8a\xd8\xda\x90Uu:}\x0f\x06\xb1\x15\x03\xf5\xcb\x8aU\x19C\x83k|\xc4@\x9aH/\xd5\xe2\xd0\xca\xbe\xe6\xa4\x0bk&f\x94\xd8\xc0p\xc7'0\xa4\x88E\xd2\xdeT\x98jx\xc9\x835\xc8\x8f\x9a\xf4DlLx+duZ\xb0\x19\xd7\x07\xa8\xc2{\xb5\xd7Lt\xcfP{\xea\xa8\x02|\x9fb\xdep\xe2\xd7\xb1\xaeof\x961\x17\xd6\x86\x88\xa2\x19\x0b\xd0 \xc3&\x91\xa1\xa1GnHzW\xcb\"\xdd\x95\xda\x0c\x19\xb7x\x92^j\xf8\x1bts\xb1\x19W\xcdp2\x9b\x04\x17B\xc7a:\xb5\xd05s\xf2Z\xde\xbb1\xf15\xc2\xb5 \xc7\xb8\x84cN\x0f;8\xc5\xe0\x14C\x1e\xd98e\x07\x1c\xcb\xb9 )\x85k<I\x9b'Zz\xf9\x0d\x13\xac\xefXZu\x8c\xcb\xb6\xb9\xc8$?\x82\x84v$\x9d$\xf5N\xe8\xa4!=L\xb5So\x95\xacl\x83j\xaf\xe8-\x04\x13#a\xd6\na\xc6\xb3]O\x06\x97\xa8U\x9c\x0c.al\n\xfa\x01\x82a\xc9\x1b+\xac\x8b\n\x14H^\xc7H\xb6\x88\xf9\x8di\xbb\xc4U:\xc3zK\x7f\xb5F\x7f@Z\xfa]\xbd\x00\xec \x0f6\xeeB\x9b\x00\x17t\xa7\xd29\x89H\x90')\x04)\xf1\xf3$\xcd\x80|\xc5x\xeb~\x14A\x18\xaf\x8a|+\xe3E2\xc8\x13\xb8&\xe5\\f.\x86\xdf\"\xfe\x14R\x12\x90\xf0\x86L!_\x10\x98%Q\x94\xdcbP\xb1\xbb\x15\xc9\xc60\xb1P4\xb7 \xd6\xa5Ad \xadD\xb5\x80\x85\xb6\xc0\x03E^\xda7\x99\x06)LZ\xb7\x93\xb8\x84\xd8xs\xd3\x05_\xa9\xc1\x10{_\\\x0f\x97\x82\x13\x8fM\xaa\xee\x86mL[Wjtr\xdb\x0e\x8f\xe1\x19\x8c\xe0\x14\x95H#\x8ez\xe8\x8e\x1f\x95\x91\n\xc5\x8e\xa7\x05\xbaw\xbd\xb8\xc4\xee/\xea\x8bXk8(_\xa5\x8cJ\x99\x00:\xe0\x12F\xa9\xd3\xb2\x1eZ\x96\xb2\x10\x19*\x95\xf7\xdfb\x14S(X\xa6s;\x83\x8ap\x072\xea\x97\x84\xccy-kX\xce0>3\xa9\x9d\xe4-\xa0\x16\x97\x00]\xfb\xa6\xef\x03}6\xc4Y\x9a,[Yv;4\xcc\xc3\x83\xf1\xb8\x8f\xbc\x94dE\x94\xbf.\xe2\x80\xae%\x17\x9f\x04\xc9rU\xe4~\xce\xd9\x94\xce\xcd&6Z\xe3\xe5\x03\xab/#\xf9\xa7GWJgH[q\xed\xa1L\x0c\x88_\xb9wuE\xb2w\xc9\xb4@\xf6\x8d\xf2i\x98:\xd6/\xa2\xfc\x1dY&,soB\x9f\"\xda$\x02\x8b\xbedH\x94\x11\x1d\xe5\xcb<-\x82\xbcH\xc9\xb4D\xb6}\x18\xefGP\x99\xbeBe6\x99s+\xc1<\xb8F\xea]\xc8\xfeM\x1dg\x87C\x06\xb30\xcd\xf2*^\";\x18\xfc\x18X\xf5p\xbb )\x01\xe2\x07\x0bX\xf1\\\xbb\x94\x11\xf0A\x9c%\x9a\xa3\xc3Gk\xb0\xb2SG\x0d\xa0\xd0\xbd\xc6\xd3\xf8~!wYC\x88UR\x8bq\x1dU\xb5\xf9\xc3\xd3\x0dY_\x0e\x8e\xdb\x93\xe4\"Z\x84\x9cW\x08\x81\xd3~\x03F\xfb\x11N\xfb\xe5\x93\xb4\x9d\xee\x03i(^J\xa6E@l\x85\x13\xea\"\x98\xc9\x84R\xcb\x97\xcc\x18R\xa3\x8es\xe1\xf7\x07E %\xb1\x9fu\x91\xb6\x8f\x04L}\x99\xd3\xf5m'z\xb5\x97\xc2\xa7 \xee#\xb6\x87\xc3\x03\xe5@D\xc6\xc6\x1e\xed\xee8zV4\xb6\x87\x83\x01\xa5\xfc\xda\x1a\x00Y\x84'\xd2'$6Z\xabK\x83\xea\x91TLZ\x12\xcc\x18tM\x96\xb4\x1a\xea\xc1\xaeaD\xed\xcc\xf5\x86\x1c\x0b\xd5\xc4G\x8b=\xb6\xf1H>Z\xedq\xac*$\xeb\xfb\x8e\xc9\x9c\xc6`\x8d\xbc=o\xcf\xd2\xad\x12\x8d\xfd\xe1\xd5\x153\xd4\xa4\x7fO\x84\xdb@o\xf0\x8d\x0e\x0e\xd6\x86\x9f\xcc\x85\xca)\xe7j\xb2\xeau\xa7Q\xbf`\xf7\x0ev\x95\xe7!\x7f\xbe\xa7<\xa7{\xc7\x9ap\x9c\xf8\xbe\x88\xa2K%Tx!\x17\xf8,\xd2\x9d\xab\xa524n?E\x13\x04f\x0fx\xe1\xcf\xcb\xcc\xde\xdf\x01R\xd2\x89Bo\x0b\xcc|2\xe6\n\x16\x08c\x8ev\x99q'\nF\xc6\xc8&?\x16\xb0{OGz\xc8>\xdd\xeb\x9cx\x0d\xbd,\x96q\xc2\xdej\xb7E\xca\xb2\\\xc4%\xd8\x1e\xdb\xf7\xd1Su\x96Y\xdf\xf7w\xd41\xb1Uqp\xd89$\xc3\x0c\x85\x0c\xde)\x83w\xb26\xbc\xf5\xb2> !\xef\x0e4#\x91NXJl\xb4\x93\xd4\x82V\x99h\xce0\x89s c\xa42\x84U\x98\xf9\xbc\xab\xbdx0\xc0\xad>\x96\x90\x1f\x14\xfbR\xb5\xa1\x17\xc6\x0b\x92\x86\xfc\x149\x1c:\xcd3-\xb6w\x06\xeaL\x16\xac\xae\xda*\xac\xea\xb2g.\xf8\xd2\x9br\x80\x19\xae\xbd\xa2\xd2\"\xf0\x14I\x83#\x88\xe0\x18*uFD \x80\xe6\xda\xa5\x04t6\x89\x14\x18\xce\xaa\xfa&\xc1%\x8a\xb9\x94G\x94)\x93\x1f\xb4\xebwg\x86C\x879\xc7\x88@\xda\xc9\x0cfU~IJ\x12\xce\x1a\x84\x96_W\x95\xb9P\xa8\x0f\x10\xfbo\x08\xd7\x89\x94\xf8S\xff:\xe2\xb1c\x17aV=9a^\x80\xf5\xf2\xb7i\x98\xd7\xcb\x97Oxy\xa6q\x89\xa2\xe4\xf6\xaf~4\xfb\xb0\"1'\xd3\xeb\x15\xd5K\x94\xb55>,\xabL\xe2\x80\xd8\x16\x89\xa7\x96\x0b\xabvp6\xb5\xf4\x9a\xba\x85\xc3\xc1\x95\x18\xc0y\xee\xe7\xc4#\xf1\x94L\xe9\xcb\xb4\xd4\xc5\xd9S\xd6\x85.\x1d}c\x0e\xb16[E\x0d\xf4\xe2;\x99\x1d*\x1f9\x19.\xaf!\x17,\xd1\xaf\xbf\x86\xf3\xc5\xcf~N\xd2w~\xfa\xc5r\xd56\xe2bIRZn\xdc\xd0\x85\xcfI>n\xa7\x98\xc5\xe6\xd6\x00b!7[\xdf\xfc\xd5\x80\x1c\xb7\xd7P\xa6$\xcb\xd3\xe4\x8eL\x1b\xdd\xef\xddE\xc9\x9f\x86\xf5V\xacS\xec-]@\x8d\x12\xb5\xf1TK\xac\xfe\xa5W\xf6\x0d\xbd\xce4\x80(\x0b(d\xb9B\x08\xd4\x06\xa2\xc7\xc8\x7f\xfc\x10*\xfd\xb3i\x10\xb4\x88Q\xe1M\x19,I\xe1z\xc5\xbf\xea:\xe4\xb1Av\x80\x14Q$6,\xae}W\xdeGyM{\xff]\x0e\xca\x9d\xe1\xc8\xb1\x1f{\x8a\x93\xca=\xabT\x91t\xd1\xe8k\xf6o\xff@w\x90\xb3\x10\xf7\xfe\xd7G\xf6;\xb1\x07.\xd2\x1e\xdf\x00\xccu\xcbk\xa9\x94\xa1flvl\x1f:]\xf2\xbe\x90;~z\xe2l\xfb\x98$\xc2\x16\xc0\xc4@\x0b\x82\xa6\xf9\x1d*8\xf4\xb2;\x19\xc1 \xc3Pz\n6\x05\xd6F\x0bez\xd0\xd2\xef\x1b\x86\"\x1a\x9a\xb2}\xd4D>\xca\xf1h\xa7\xe7\x8cm\x8d\xf6,t\xb7\xc5\xedVP.\xde\x16\x9bH\x03\x1f8\xe6\x1b.I\xa2\xf3\xf07R\xe2\xad:L\xe8vl\xa4o\xad\xdd\xfa((\xab=*\x1a\\&\x16\x9cNi\x9d\x94\xb9I\xc6\xed\xa8@\\%\xfb\xda:-q\xad\xcf\xdc\xba\"\xf6\xe6$\xa7\xf7\x88\xac\xd0\x01\xca\xa7O\xcb\xf1\xa2czu{\x02\xc3\x81C\x0b\xa4$\"~F\x98\x84\xaf)\xa1}\xd0\xa8oc\"\xd2\xa9b\x83\xe9X\x05\x08\xbd\xf2\xdbD-\xd5\x0b\x06\x8fY\xe4 \xeb\xa6\xd6Y\xe8\xa0[\xec1\x8b\x10\xe0\xe8\xc0\x01\xda5\x0f\xbauO\xab\xe8\x03\xce|\x91\x92\x06@\xbbD;\xe2\xfa\x16h\xa5\xdf\x05Zi\x19G\xa9\x114Z\\\xfd\x01\xd6\x88\xc8\x00z\x98\xcd\x92\"\xed\x02Y\x8bT\xf1[\xa0\x96|\x17\xa8%R\xf4\xa9\xd4Q\xf5\xf9\xe2Z\x0bp\xae\xd6\xf1\xb8\x8e\xca\xf4Gg\x81O\xdb\xe4ju\x03\x7fmq\xb3\x98tO\x95.%\xfcy\xb7l\xc4p\x94\xa7v\xb2\xfe9.\xf7\xe8\xd1-s\xb9\xd1#\xc8\x08\x89\xfa\xda\xd1\xcb\x8a\x0e\xb5\xe2\x96\xe1P}\xce\x98\xfd\xe1\xfe\x81c[Y\x1aX\x1a\x9e\xff5\xefH)_k\xca\xdfX\xfe\xc1\xc2\xf1\xb2U\x14\xe6\xb6%J\xcaR\xd8\xd8\xde\x1f8\"a\xf99F\xca\xe8\x03$\xce=\x93\x9a\x05\x98m\x94~\xe1\xda-tr\x84\xc8d\x0d\xafx4FH\xe4\x87\x14s[\xb1\xbf$\x16\x1a\xd1$\xd5=7\x9fDIxi\xd2cK\x9f\xf9\xd5\x17>/\x87\xf2\xd6M\xf6{\x0c\x19\xb3H\xe0\xde\xcb\xb9\xe3\xb0\xa8b,\xb6\xcbi)c\x871\x14\xe2\xb6\xf64\xa9\xd6\xc4\x18\xec)\x89HN\xf0\xbd+\xbd\x92\xd7\x94c\x97\x93(3\x85\xe54\xb5hu\xf84h!\x87\x04\x14\xa7}&>Ja$a\x87\xdc\xfeZH\xa1sM\x94z:9\xf4\xc1\xa9\xc4A\xc0\xb8\xcb^\xa5\xd76\xeb\xa4\xbe\xf5\x9bo\xb4o\x10\x81\xef\xeckw\xdf\xde\xaeJ\xc53Q\xdb\x81Z<\xe3\xc5UYj\xc4\x9f\xab\x12\xbb\x80?W\xeb\x99\xf1\xe7*2X\xa1\xd0\x8ci\xb3\xce\"B\x0f\xc4z\x81\xa9T\xe0\xb5O\xc9\xe4\xbbz\x81\x05+\x10%\xb1\xbe\x82\x1b8\x81\xb4\xfeh\xd9I\xb47t7\xd0<\xc8\xe7Z\xb2\xf9\xe5\"\x8c\xa6)\x89\xc7\x86sx\xe9\xaf\xc6\x10zK\x7f\xd5$\x0b\x80 1\xcf\xfc`A\xcb\xf0\x9f\xfarAR\xc49-\x85?\xf4e\xf2\x045\x9f\xb4\x14\xff\xa9/\x97\xc4\xd1\xdd\x18f\x8dw\x1a\xca\xe5e\xb2\\%1\xa1M'^y\xd3,\xf7\xb1HI\xadl\xedA\xb3|m\x05\x8cA\x03\x1cy\x86\xc7\xa0\x81J\x98\xfd\xe4G\xe1\xb4,Rx\xf5'\x9aN\xa6\xc9\xea\x82\x99De\xa6.\xbd\x8c\xfc,\x1bC`z\xcf\xd7\xe4\x18\xa6\xa6\x12\xef\xc2\xafa<\x86e\xf3\xfd\xab\x0f\xef\xc6\xe07\x9f\x97J>\x8d\xf1\xe9\xd5U\xb6J\x89?\x1d\xc3M}q\xea)\x829>\xfdc\x90Nc\x93\x87L\x12\xf0\x94\xb2\x1e\xf6h\x7f\xbf\x12\x14V\xe2\xa5\x85\x9f}\xb8\x8d\x85\xc8P\x8b\x9cF\xfb\xaa\x9eO\xcf\xa1~!wc\xd8\xd0XA\xa6d\xa6\x7fqu\x95\x91\xc8\xfc\x0e)\x84\xb1\x9a\xbeX\xeb\x10\x9a\x19O\nI\x9cG\xbc\x94T\xbbJ'?\x8e\xfaU\xf3\x85\xdcI\xd5\x88_BU\xa1\xe1\x1cX2C\x03Y\xd2\xd4*\xd3\xeb\xcf\x7ff'\x96vE\xe6\x98^\x994_\xe0\x1ch\xb6\x16NA\xdc|\xbeJ\x93U6\x86B\x03\xff\xe46\xa6|PhZ\xd6P\x01\xa7\x8a\x0b#\xbd\x0f\xea\xc7\x88\x060:`\xa4\xcc\xd0\xfaw\x1d\x97\x06&\x0b\xf0\x15\xe8,\xc0\xd1\x9b\x96\x11\x04:\xde\x19\xd5S)\x84t\xf1\xe4,3\xcf\nm9R2s\\\x88\xc4\xc3\x19:\x98\xc0&\xa0\xd2\xcfqky\x06=\xb6\x84\x05\xe91.\x9f4\x8b1z\xb7^\x10\x9f!\x1d\x14\x96\x921\xe6\xb5\xb6Q([\xd3\xe6\x99\x87}f\x1f\x93OR5\xe3.\x05\xdfTg\x18\xb5\x05\xa3&d\x98\x0eh\xea\x80\xef\x05\xfc\x8c\x84Fl\x8f2\xe2\xc3\x14\xbd\x944\xcb\xb4T\xf2-J\xc3\x9e)\x85\x11S\xef\xdd\xc01L\x8f\xe0fs\xd3\x81\xc5\xe4\xa6n\xd8s\x83\x811\x9b\\\xee\xc0\xad\xf7\xa9\xee\x8f\xf8\xd0\x18 \n\xdf\x88\xb0?\xa3\xf0\xcat=\xa5\x9d\\\xa21\x87\\\xb2\xd9|\xb5.\x96N\xcd\x96\x8c\x02^\x9a\x81e\xc3\xe0\xfeA\xb77\x02\xba\xdag.\xac0\xa9&z4\x05E\x9a\xd2\x03\x10\xfc\x1aK\x13\xd4\xc9\xaa^Fp\xca&C\xb7\x9e\xd2 P\xbbWs\x8f\"\x0f\xae\xa4P\x9a\xa7G\xfa\xf3x\xfa\x89\xc5F\xf8w\xd2\xa9t\xa8\xc6\xe81\x86\"w\x19\x96\xa5\x7f\xf8>\xa0?\xf8:'\x1e\xc3*\xf4\x17b\x1eu\xfc\x12M\xd1\x13_\xf8\x0c\xb8\x94\xa8\xb4\x7f\x7f\xa8*n\" \xd4\xba\xd0-\xdc|\xb5\x00~8h\xce~\x0cj\xdd2\x16\x8d\x87_\x17\xd2\xf1kHg!\x90\x0e\xdb5\xe5\xf2\x90q\xd0T\xc5A\x0c\xdel\xe1\xe39.\xaf\xe9\x12mi\xde9\n\xb6\xf1\x0d\xd8\x86=\xb7e$F\xf9\xbb\xba~\x8c\xe2\xbd\x15\xf3\x81\x99\xd1?cqG\xcbj\xb0\xd3rM\xec\xb4t`\xd5\x07;-;\xb1\xd3\xbc\xc4NK\xc7\x85;\x86\x9d\xee\xe0\x18\x96GpG\xb1\xd3|rW\xc7Nw\x06\xecT\xeb\xd0\xbc\xd7\xfe\xe7{c\xea\xc2B \x81\x9b\xba\xfe\x9c.\xfe:u\xfch&\xb8\xa6Gc\x0bD\x90\x12\x0c\x8d\xc9\xad\xca\xa4i\xf0'\xe8&M%\xb1\xd3\x81\xe3\x9d\xdf-\xaf\x93HO\xe9\xa6\xebU7:\xd4\x9b\x0d\x0d\x0f\xbf\xcd\xd6m\x83C!\xa9\x0c\xd0q\xc1\x7f\x8b\xdd\xdb\xc8 \x81|\xaa\xaa\x19\x19\xd3\xbf\xdf\xb0#bt\xf5\xfe\xb0sdf\x94+E\x12\xe4f]p\n\x13r\x89\x96g\xfe\xb7\xc8\x131\x1e~cxJ\xf8\xbb~\x13\x11\x1aB\x972\x95\x1b\xa9\xechH\x13W`\xe0b\xd8lD\xe1\x11k\x7f\xc0j\xa4\x93I\xfbF\xe8\xddV\x02\xa7`m\x0d,J_u\x8c\xbf\xc6p\xe9$E\x9cUb\xe7+F\x1c\xea9C\xc4\xcb\x8a\x15I\xaf\xb8yq\xc5lU\xd6c\xacR;\x97eqM\xec\x15$\xb1\xd0E\x9a\xc4\x17\x98\x98_\xcb @\x87]\x8a\xb8\x84\x89\x82\x9e\x0b\x03\xd6\x8dY8/D=\x1a\x9f\x81\xda\x93\x87\xbaU\xf1\xa3\xc0\xd6\\\x0e\xaa\xd7\xb9\xc2\x88\xc45(\xd7\xe0Z\x9f\x80\x98\xdc\xa2\xe9r-.w f\xf8\xfe\xb6\x07\xfb\x9d\x9b\\\xb7kj\xa6\xceJ\x98\xd8\x97~\x1c'9\xd0\x86\x11\xc5%)\x14q\x19sH\xbb[\xbe\xcb\xa0\x1a^\x1f\xcaxyt@\xfb\xa0\x81@P\x10\x91b\x04_\xba_S\xb9\"\xe6\xfb\xdb\\\xdd\x9ch\x19\xab\x99c\xe5\xfe\xf02\x9d\xd0\xec\xe3\xc9\xf4\x87x.\x89\x93\xa8>\x04\xdd\x0c\xd9\x03\x17B1 g\xed\xc3\xa9\xe7\x8c\xb9\x06\xa0\xb5\x18\x0d\xab;M\xf2\x99\x16f\xab\x18\xff\xf7\xc3\x8cr\xa8\x98X\xe6\xfe\xbeK\xceT\xc6\xd6\xe6Lm\xccX*\xd2dj\x1b\x10|\x048\xca\xc7\xa5\x9c'\xed\x92\xf30S\xef\xfb{a\x06\xde\xc4\x0b \xefg/\xcc\xde'\xf9\x82EcH\xdd\xda\x0b\x06\x8a>\x04K7=W\xf5An\x83\x0b\x93\xfb4\xa1\xee\x04NBpjbB\xc9\x079\xd5o\xad\x99\x94\xac\x88\xdfo\xdd0\xcf\x1e\xf5\xe8\xc6\xa5\x133\xda;f^\xd61lb\xd4L\xcc<M\xb4S\x9f\xea{\x13f\xef\xc9\xdc\xcf\xc3\x1b\xf2\x1f$M\xfa\x8c}PE\xb8\x7f\x8f\x1e\x19\xde\xfb\xb3\xbf<\xbfx\xf3\xd3\xd9\xd5\x9b\xf7\xaf\xdf\xbc\x7fs\xf17,\x81\xe4\x84\xbeQ\xf25'\xf1\xb4/\x08\x98\xd4\xaf\xc9\xdc\x98\xf8\xc2\x98a\x1e\n:\x0c\xe2,;s\xe5e\x8cB\x06\xbb\xb4\x82\x1d\x99`\x1c\xfeI\xcc<\x9a\x1a\xde\xaa\xdf\xf3\x0c\xa8\x0e6\x13\xbd>P\x85\xc5\\\xefL\xcf\xc1\xe6F\xf4[e\x81\x1a\xcby1\x18/\x8c\x83\xa8\x98\x12\xa1\x95\xe9p\x1fG\xef\xe0\xb2\xad\xda\xeb\x07\xae\xc9\xed[S\xb3\\\x9bEM\xee\xe5\xfe\x9c\x9b[\xd3_O\x9eP\x1e>\xa4\x8b\x88\x89\x92\xe9O<\x13M!a\x1f\xd0\xaeJkJ\x86ofa\x94\x93\xd4n]\x91PAn\x8b\xc7J.\xb1v\xaeV*\xad\x93\xe6\x84i\xa2\x16r\xf3\x15\x9c\x0e\x14:\x88\xdf\xf7\xf7hK\xc6\xde/WQ\x18\x84,\x1dIy#\x97 _\xa5\x12\xe5\x8d\xae\x8e\x9e3\x85\xb2A/J\xfc\xe9\xbfs [Y\xe0G~jq1\xbex%\xd3Y\x89m]\xa0s&\xbac\xc6I\xbc\xc5\xbeA\x84LO\xbc|A\xa0\xec\x7f\x14f\x18\x07\xdf\x87,X\x90\xa5\xef\xc1\x1b\xf1*%Y\x12\xdd\xd0\x13!\x99AV\x04\x0b\xe6\xed\xdf\x08l\xe3Y\xcdIe\x86=\xc9r\x15Fd\xfa\xa6\x82\x9c\xcf]\x08,\xd1\x01\xcb\x85\xc9\xa5\xfa\xc1\xd9\xd7\xe6\x07\x02\x9e\xda\x0f(m\xf9\xce_)\x14v\x03\x9etK\xf2\x1d\xa4\xd5X\xd0\x8b\x01k\xac\x95\xdf\xe3{\xf2kA\xe2\x80\x98K,\xfd\xd5\ns\x1f\x98\n\xcc\xfc(\xba\xf6\x83/c9h\x97\xb8\x1e\x94H\xf3\xd0q\xea\x8b+\x9e\xb0\xadx9\xc1m\x8af\x16\x9eh\xa9z\xa6\xf1\x15m6GQ9a\xa8\\\xe7\xa7|\x84q\xed\xf3#\x16,v\xe8H2'R!!U\xae\x08Fj\xd2\xd6\xae\x16\xc3\x9aP\xc9Jz\x15\xde\xab\xb3\xd7\xcf?\xbf\xbd\x10\xfa\x95R\xc1\xdf\xb6\"\xc4j\xa8w3\xbb\x0d1\xb2\x9c:h\x1d\xdc\x03?#0\x1ck\xe7\x03\x83'\x8a~)p\x9c\x0c\x0c1\x02\x0c\xf1\x96\xb1\x9d\x91\xb9\x1d\xb9b\xb5)\xd5G\\\\\x86\xa6\x04\xd3\xa2\xfd\xa6\x86d~N\x93x\x0e\xcc3\x141\x88h\x12\xd7\xcf9\xc3&|\x16J\xe9D\x9b\xba!\xe4y.SA\x0e\xa2\x83u^{\x92;.l\x90^\xf1_\xc49+[K\x17\n\xa2R\xf0\xe6\xf9\x8a\x04\xe1,$\xd3\x12-\"C\xcfQc\x06v\x92RD\x19\xc6\xf3\x88\xf0\x11r_]\x07\x83\xc6\xfba,pn\xed\xad\xa72\xb5k\x84\xb1\xd1\x0d#\\w\x18\x7f{\xfe\xee-\xc7\xde\xb51P\xbci\x1a\x81\xf4\xae\xd1\x7f\xb1\x8f\xc9-\x14\xb6\xe6\xdcb\xc7\xa7V\xaa#\xf0\xf8X\xf5\x05\xac \x93\xbb\xad1\xd7$\xf6\x86\xc3\x9a\x19\xdf\xa1\x96\x96K\xda\xe4\x956\x81'\xf4\xa5\x1aXLn+\xd4\x1e+\xef>\x9f_\\}>?\xbb\xfa\xf8\xe9\xc3\xc7\xb3O\x17\x7f\x1b\xeb\x92\xa1\xfe\xf5\xf9\xf9\xd5\x8b\x0f\x1f\xde\x9e=\x7f\x7f\xf5\xd3\xf3\xb7\x9f\xcf\xc6\xb0\xab/\xf5\xfe\xf3\xbb\xb3Oo^\x8aR\x87\xfaR\x1f?\x9c\xbfA\xd6@)>2\xd4\xfa\xe1\xa7\xb3Oo?<\x7fu\xf6J\xed\xc6\xce\xa8\xf9E\x18\xd3\x85\xf1\xea\xc3;\xc1\x10\xbfD\x19[\x97\xf3\x12H\xb2\xd1P\x7f:\x02'v\x89\xc7\xab\x0e z8\x98NS\xe0\xe2h\xe2\xbd\xfa\xf0\xeey\x9e\xa7\xe1u\x91\x93\xf7\xfe\x92d+?\xe8\xfe6\xd3\x7f\xdb\xf5Y$>\x13\x00\xe8\xf5U \xbez\xc7\xe3\x9d\xbc#\xf9\"\x99\xf2\xef\xf4\x98\xba\x94W\xccP^\xe1\x85\xd9\xcb\"\xcb\x93e\xd9_J\x18\x16\xdeU\xe3\xb9\xb0\x97\xe4^U\x9a/\x9d\x16\xba\x1f\xf0`]\x95s\xa0\xea\xd7fL\x12f[\xbb\x87\x96\x0b\xb3\x16co\xdaw\xa4\xcd\xbc<y\x9b\xdc\x92\xf4\xa5\x9f\x11S,1qQ\x1e5\x9e\xcc4q\xf4\xe4ka\xa4\xe3\xe4\xcb\x97gVk\x0b\xd6\xfa\x05\xae\xa3\xb1\xc1rC\xbdV\xd2r\x18\x83F\x1f\xab^\xcb\xdaJ\xe8\xdb\xcc\xb2\xc8\xf2\xcfY\xe9)9\x86\x04\xfdK\xbd\x06\xae\xe9\x003\xbd\x16~\xf6\"I\"\xe2\xc7?1a<\xaf\xab\x81\x91\xfa\xd5\xf5\xbeX\x924\x0c\x9au\xd5\x10Q\xbf\xba>&Y\x98\x877\xc4X\xa7\x1e\xcb\xf5\xab\xfc\xc3\x0dI)\x07E\xa6\xc6\xe1\x9b\x90b\x93\xc9\x95/\xc3F\x06~\xf2/<\x05\xe2\xb0 \xf8L\x1e\xa5x\xa6\xefd\x19*(\xb5\xad\xbd\x01\xee?\x174[\xb4ms\x03\xdf\x9a7\xe8\x9c>\xeb\x08[\xb5\xf0j{\x02N\x14sA\xf9\xd2\xbbi\x00:\x96k\xb1\x88\xad\xd4\x8e;\x0es|\xcd(\xaf\x17\x19\xbf\x92w\x1b\x9c@\xc4\xca\x07\xc6\xf2\xf5\xcd\x06'\x10\xb0/dD7\x99]6lv\xc4\xa5\xe1\xd7jO4\xbeq\xd6\xf8\xf9\xd6\x7f\\\xf9[\xbf\xfd\xf2K1\x18\xbc\x1cl\xe1\xdfW\xfb\xec\xcf!\xbb}\xcdn_\xb3\xdb\xd1\xeb\xd7\xf4\xcf\xce\x01+\xbcs\xf0\x8a\xfdyMo\x87\xaf\xf1\xedh0x\xb9\xc5\xfe\xbe\xc2?\xac\xf0hx\x88o_\x0e\xd8\xed\xeb3z\xbb3\x18\x0c\xe9\xed\xab\x03\xfc\xf6\xf5S\xf6\xf6\xf5\xab\x97x\xfb\xea5\xbb}\xfd\xfa\x95&|Is\x05\xbdyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw6\x06k\xea\xe7\xfeVJ\xfc \x0f\xa7Vs\xfb}\xfa\xf0\xe1\xa2\xed\xa34Ir\xcdg\xf5/\xae\xce/\x9e\x7f\xba\xb8z\xf9\xd7\xe7\x9f\xb4F\x85Ji^\x0e6\xc1\xfa\xe5\x97-o\xb0\xf5\x14\x81\xfc\xe2\x00\xa19\xe0\xc0\xddg\xd0\xdcy\xcd\xa0\xb9;\xd0t\xa3Z\x1cz\xae\x1e]\x0d\xb3,d\x8e\xd2\xf1\xd4O\xa7\x0c\xff\xeb\x91y\xcbQ=n\xa4\x16\x00\xb4DV\xca\xf7\xa1\xb3\xea\xfa \xa6\xfai'\x13jj!3\xe2\xc00\xf5\x03\xb7\xbd\xb2I~\xe9\xc8\nr\x8d\xd6\x15\x8c\xa8B|3ln7\x13)\x8a\xe6\xcdFS\xcf\xef\xceO\x1c\x1c\xee\xd4\x18\x8a\x1df\xa3\xfc\xd4\xc0W4x\n\x8a\xef\xfc`\xf1\x89\xcc2.\xe1Bi\xc7\x157\x9d\xe264:a\x87\x9e\xcfX&E\x9cK\xf6\xf1\xea\xd8P\x98\x1f\xa2\xb5\x94^.V eZ\xaf\xc6\xae\x7fi\x94\xe7\x10\xb5\xdf\x92\xce\xa7\xf9\xd2K\xc9\x8cI\x91\xe7$\xffD7\xff;\xda\xea'\xe2O\xefl\xc7#\xf1\xaf\x05)\x08z\x04R\xcc\xdc\x86_\xe7$\xffk\x92\xe5\xef\x93i\xe7\x8e(\xbb*}c\xb7:6\x17q+P\xb5\x8dxSRN+3\xb1S&\x94>S+n\x08\xb0\xeb\xfd\xe0\xf1\xf3Z'74M+\xe3\x8c\x94^4'\x12\x95:(T\xc6\xc4\x13!\x97/_\x05I\x9c\x93\xafF\xdfdM\n\x10\x90\xd6S\xeae\x8b\xa4\x88\xa6\x9fWS?'\x08\x14_\x9ft\x18\xf0\xacA-B\x1d\x82\xbe\xc3\xec1\xeb \xb0\xc5\xa8]\xf6\xd5\xe3\x16`\xdcc\x016\x11P\xdbT\xadH:K\xd2%\x1b\xef\x9b\xd9{\x12\x90,\xf3\xd3\xbb~\xfe\xcb\xc4\xbb*\xf0\xcb\x17~\x1e,\x98\x86\x8f'\x8a\xc51\x9ajo\xac\x9f\nk\xe81`\xf8=0\xe0\xc8\x10\xedo\xb8\xfbT\xab?\x1b\x19\xfc6w\xf6\xd4\xf2\x183\xad2\x08\x91\"YN\x93\xa0\x10\xd3\xab J'^{\xe2\xc7\xbb\x84)q\xf4\xb5\xc5\xfeM8\xc7h\x9erf\xe5\x93\xe6{\xaf\xc8H\xfa|\xce\x1b\xde\xfe\xe5\xfal:'\xbfl\xff2\xdd\xf6r\x92\xe5\xb6\xa6\xa0\xf6\x1c\xd0\xf8x\xd0\x8d\xd7\xf0\xa9\x00\xd9\x82\xcc\x8b\x93\xa9\xc1:*\xe69V\x995\xa7~W\x8b8\xedz\x8e\xa5\x16?\x9e\xc7\xb1\x8cK:\x00\xc3Y\xb2,h\x93\xf4\xd2\xc5\x1d\xa5\xd9\xbch\xc5Z\xed\xb6E\xbe\x8c0\x8a\x1c\xda\x8e\xd1;\x07\xc6\xd2{\x8aP(\x1c}V\x00\xf1\x8bi\xfd\xd6\xd6]\x84Q)\xbbv\xd2p\xc8=\x16(\xdc\xf0?\x94db\x02\\\xdd\x0b:\xf7\x95\xd9B\xed=\xa5\xe1\xea2\x0bf\xeb\xc1\x03\xeb\x89\x92\x82a\xf9\xfc\xe9\x0d\xc6\x83\xd2<f\nK\x06\x8bS\xb03\x9b\x9d\x04a\x9c\x914\x7fAfIJl\xf6\x1d\xba\xbd\xc2\x18l\xe3[\x17-\xafe\xcfT\xddZ\x0bL^\xb0Hg\xd4\x86(\x81\xbbY\x8f&\xa8\x18\xaf\xa8\xb9f\xe3\xc4 \xf4\x0dJ\x1fF\x1duK\xc1b\"\x95\xe9\xea0\xbe\xe3\xae\xbfcn\xf9+.\xdd\xfa\x99qh^\xa4\x840\x88\xb2\xa4S3\x91G\x11\xdd,\x7f\x0e\xf3\x05-\xd1e\x1fA\xbc\x95O\x0f\x14JD\xd4*(\xa7\x89\xf0i\xaa\xbaB\xdb\xc2\x83\x05\x0bv\xb5\x80N\xd3\xe5\xd6f\x02\xbc\x9c\xe5\x8a\xc4\xb9\xf3W+\x12O\xe56uM\xfd\xf5\xe2\xdd\xdb~-\xe1\xa6=\x81\x9cY\xe3\xf2Ah\xbb\x7fA\xb7o\xaf:sV\x12\xf3\xb1\x19\xea\xac\xd9\x13\xfe \xbaO%I\xa2\xdf\xf0\x16d\xe7\xcf\xcenwlV#\xd9$H\xa6\x0d\x05\x9b\xc6,\\\x0cZ\x93)\x18\xb0D\xa1\x05OD\x96A\x95\xa1\xf2\x0867\x0b8\x86L\x9b\x01M \xb5|R\x18\xe4\x9c\x01Eyp\n\xa1\x1dO\xa2K\x17\x08\xfe\x1fa\xe71h\xa4\x1a!\xb4\xac\xba\xb2\x02\xc3\xdcr\x98V\x8e~\x8dy@N\x99g\x7f\xe4B\xe0\xa0\xf1\x94\xb81\xec#x\xb4\x1d[-PF\xad\xbe\xd2<2\xb6wwUR\xa2\xb2\xfa\xab\xd9\xeb\xf6j\x92\xd6w\xa8\x8b\xe2(\xe8\x16\x91\x05\xda\xde\x1b8\xae\x08\xe29\xe0 Rb{\xf8\xd4\xa9\xa2?\\\xf8s\x0b\xa9\xcc\x13\xb0^\x9e\x9f\x7f*\"L\x81\xe4\xbe<??\xcf\xef\"\xf2\x8a\x04\x91\x9f\xa2L\x89>C\xe1\x1c+\x10\x85\x84\xd2\x94A\x8e\xb7\xaf>\xbc\x93\x7f\xb3\xca\xc5\xddE\xf2\x85\xc4\xec\xc6\xcf\xfd\x8b\xd4\x8f\xb3\x19I\xdf\xe4d\x89\x0f_\x87\xbcQ\xba\x9d\x9fG\xd1\xcb$\x8a\x18\xc7\x8bO\x94\xdb\xd7I\xba\x14\x0e\xca\xf4\x9e\x85t\x16O\xde\x91i\xe8ce\xef\xc2%\x1e\x80\xcc\x8d\x9b\x9e\x03S\x8a\xce\xde\xf9+\x97\xfe\xc52\x1f\xfd\x90\x8e\xe1\xd7\x82d\xac\xeb\x1f\xa3b\x1e\xc6\xfc\x0f\xfb\xf2\xfc\xa7\xbf\xbc\xc5\xb5\x8e\x05\xce\x7f\xfa\x0b#\\\xc5\xddG?_\x9c\x93yy\x9b\x84q.n$(\x9c\xff\xf4\x176\xee$e\x83f\xd15^\x14\xb3\x99\xa8\x8b\x82\xfb|A\x08\xfb\x9c\xa2\xa1\x8b\xd4\x0f\xbe\xbc\xe4\x00/\x1f\xb0\xbb\xa4\x08\xb0G\x96\x88\xe7\xe1\xd2y\xcc\x18\x99\x93\xa1(Dl\xd1L\x1f\xb4\x93\xee\xccb\x92iv&\xddK)\xdd\x89\x8d73\xe0\xfb-\xa8,G\x15t\x81\xce\x1b3\xee\x8a\x94`\xc8Q\x17\"\xba\x10'\xd1%\xdd\xee\x1e\xc2\xb5c\xcd\xab8\x91\xa1\xa62\xbcI\x17\x024\x1c\xe9\xb1\x08T\xe2eQ\x18\x10\xfb\xd0\x85\xada\x97!\xafi\xbb\x9b[\xeb\xce3\xd5\x99c\xea{\x04\xc7\xeem\xd8o$xj\xee \xf6\x10\x9e\xd0s\xbf\xb9\\\xea\xee\x07\xf6\xc8PNrd\xb0w\x0de\xb8\xbb\x84\xa2;_\x0fAJ\xb8pG\xe5\xbd8\x0f\xb7o\x8a\xd8\xde;xp\xe5\xe5\xe3B\xd2\xb5\x84\x8c\x1d\xdc\x1d8\xdeL\xd7\xc3=},\xe6&\xee\xee\xda z&\x82E\x99M\xd0\x1e%\xe6&\xc6D\xf6\xc9\x08\xb9\xf6\x93\xa0l\xac\xb92T\x97\x93\xbe3\xb9&\xa4\xba\x98\xf4\xdd\xbd=\xc7\xde\x18\xd4D\x95\xa3\x9d\x03\x87\xc7\xedq\xc1jF\xcf\xd1\x9bG^QR\x8eG\xfb!\xc2\xfe\xee\xaa\x9e\x82\xe3\xa1%\x06\x8f\xb0\xb6\x12\xd1\xc2\xae4>\xfee\xb8\xba\xabPooRK\xfe}\xaa\xa5\xa8\x10\xa8<]L\xe3\xf54\x895\xe1\x18\x90\xdbB\xff\xdb\x9c\xf1Wbl\x9b'\xa5\xaf\x84n\x8e\xcd\xaeK\xbc\x9d\xa1qn\x1d\xed\xe4\xfe\x13!\xf5\x162n#\xb6\x87\x83\xa1c\x1b\xa7\x9a\xb7{@\x11\xbb>\xae\xef\xef\x0f.X~#\x8c/\xf4\n\xe5+7\xd1x\xa9\x88\xe7\x1c\xcf_\x07\xe8\xfd\xe0\xda\x9aQ|c\xa3!Vn\xcf>\xadU\x8ftat#\x89\xddk6e\xb3(\xdd\x01\xc0\x02\xcb\x86\xf1#\x17\x1c\x81g0@\x1e#ET\xf1t08\x18>}:\xda\xdb=\xd8\x1d<}:\xa4,\xc7\x9a4\xfd\xb7d\xb5lM\xa1\x07[0d\xe6\xc0\xd6\xbb0fVs(\x12\x06B\xc9\x0f\xf8\x17\x0cyFi\x90#\xb8 \xb30\x87E\x9e\xaf\xc6\xdb\xdb3? \xd7I\xf2\xc5\x9b\x87\xf9\xa2\xb8\xf6\xc2d\x1b\x15\x99\xdb\xd3$\xc8\xb6\xf1\xe3\xad) \x92)ar\x9f\xd30\xbe\xf1\xd3\xd0\x8f\xf3\x13\xac\xb2\x96:\xa6L\x1bHQ\x8e\xf5\xc4O\xe7\xd9\xe4\x92\x95\x8bi\x15\x9f?\xbd\xa9d\xdfRb\x19\xd8\x84\xa1\xeao\xc4\xea\xc0Qc\xae\xb6\"\x8a`I\xb2\xcc\x9f\x13t\xb4\xcb\x08>\x8f\x93xk)F<%7@\xe2\x9b0Mb\x14\xaf\xd2\x8f\xf1C\x1cG\x06~<\x05\x7f:\x0d)\x80\xfd\x08\x16$Z\xcd\x8a\x08n\xfd4\x0e\xe3y\xe6)n27<,d\x95oHM \xc0\xa8\xbc\x04\x85d\x14\xf6o\x04p\xe0\xa70\x89\x90\x9d\xc2\x8c\xb8\xb3\xd4_\x92\xec\"\xf9\x98\xac\xe0\x84\xceT\xf2\xc8\x8d\xd1\x87\xbe\xe3IC)]CJ\xb7\xeb\x1c\xc9\xd3\xf5Vk\x8bI\xa7x\x03\xedj\xaa\x86\xf7\x998\x03\x1a\x91\x04\xa1\x81\xf4r\xe1\x1d\xd5\xba+\xa4\xc6j.Up\xdat\xb1\x1aW)L\xf0\xd9%\x93\x94\xc6\xcd\xc8\xc0\xd887T\xe9\xdb\xbcu\xcd\xca\x9b\x932\xf2z\xdf\xa3\xdc\xb5_\xa5\x1a\xaf7\xa5\xa6\x0fi\x99\x8ee\xcdJMu2}M\xbf\xaa4\xda\x0bm\xadl\xd6{\xd7\xaaqU\xd7\xd6\x8aa\x0f\xfa\xd7\x8a\xc5;k]\x1b\x9e\xb2\xab\xa2\xae\xc2Od~\xf6u\xd5\xb7\xb6r\x8d\xb2\xcf:\x16i\x0f\xa7F\xb9\xee\xfe\x8e\x8dR\x1b\xaf\x14\x0f\x84^\xbd\xa7\x1fu\xf4\x1dq\xea\xda\x15\xe3WR\xcd\x0c\xcfIf\xe5X@\xd7\x9e0\xea\xe8\xdd\xa4(\xd5\xb9d>\xa6\xe1\x12\x0d\xfc\xfaV]\xedk\xd4\xeb\xe9P\x07\xbe\xd0l/|n\x88\xe5\xa0[\xe2P\xcf\xc4\xa7\xed?\x93O1\x970~S\x16{p\xca\x185\xb1\xbd\xb7\xebx\xec\xbd\x9e\n]\xdf\xfdWs\x8e\xe1\x04J\xc1K9'#\x0e\xd9\xbf=\x7f\xf7\xf6\xeck@V\xfcx\xc5\x97)\xf13\x9cY\xc2\x1f,\xfd\xf4\x0b\x0b\xfc\xc0n9\xe9pR%v\xa1\xe5)\xcc\xec\"\xfe\x12'\xb71\xb0g\x8e\xe5\xc0&/\x85\x95\x9c\x82\xc52\xfe\x89'\xe5)f\xe3\x99b9n\xd9\xe5U^\xa4\xe4<\xf7\x83/\x17\xa9\x8fQ\xc6\x0codk\x19)\xee\x01\xad\x10\x9fe\xb4$\x86\x0d\x14\xc4\x87\xc3\x9f\xd1.K\xe9\xcd\xca_iK|\x0b\xd6 9\xedOj\x8c\xbb\x90\xd6_\x8a\xb1\xb6\xae\xec\x1b9\x1b\x01\xce\xd3&Xc\xd0G\x0c\xc9)e\xd79 .lT\xc1\xfcq\x1e0\xe1\x07\xa3\nM\xd3\xe1(\xa1\xb4\xd6\x8e\x83\xd3%\x8884E\x91\xa0\xd3\x94*>$\xa5\xff\xc8$\xb6wv\x07\x8e\"h\x15\xbe\x83\xf8\xfe`o\x88\x96W\x07{#\xb5\\\xe5j\x82\xe5vx\xb9]\xfew\x8f\xff\xddw$w\xf1G\xecN\xf1T\xe6\xaat\xe9:b{\xd4Hu\x11r\x13\x08\xf5\xb90\x8dP\xa5\\E\x15\x103\xf5\xe6L\x14NX\x0c\xaf&\x92\xc8L\xd2-\xd1\xd3\xb61\xaaeso\x1af+\xca\xc82O\x0fo\xb5\xf032\xfdD\xe6a\x963\x05\x08Z\xeeNbs\x14\x89\xc2&\x8d\xa0\xec\x0f\xf4Y\xdc\xb4\nJ\x99\xaa\xdd\xbb\x12\xcd\x8a\xa1\xa2\x01\x8b\xf6\x05\x8b\x1c/\xbdy\xc3\xcf\xb6\xc6'\xe5\x0b\x17\xeaq\x86\x9a@\xd4\x04\xd4\x14\xe1\xfaz\xc1\x03\xa5\xfc^\x9e\xfa7$\xcd\xc8\xc5m\xf2\x91\x96\xb3\x89w\x95\xfb\xe9\x9c\xe4\xb4+.dJN\x9bf?\x02\xbd\x18}\xad\xbe\x98\xe6\x97\xd9\x99\xc8\x1dj\x14\x03!\x9e\xa3|=\xa6\xd6@\x05\xb8\x00$\xd3M7#X\xd2K3\xfaX\x1d1@]\xe6\xd1\x1c\xff\xcc\xb4H\xd1\xc8\x85\x99s)PH\x95\xf1\xb7-\xef\xce\x8f\xf5 \xa1\xfb\x9a\xafj\xcd\xc0\x1f\xb3\x84\x93o[\xc2\xd0 \xc8U\xdf\x05\xadB\x80\x16\x9a\xa9\x0bw\xa0I\xc6\x04\x1c\xae\xd3\x86\xce\xd7\x0f\x82bYD~^.\x85W\xbcM\x92u\x19pb\xf0\x83\xa8\xd5R\xb2\xad\xfa\xf3/\xe1\xea\x02;\xde\xab!U\x15nj\xe8U\x98\x92 _s\x14\xab\x9e\x95\x9f\xc59I\xdf\x12\xff\xc6\x00\xa6\xd2\xb4W\xd7R\xb5\xed\xaajlf\xcd;\xe3 ]L\xabF\x7fRO\xf1\xe97\x1f\x8d\x86\x93Q\x1fy\xaeyb\xf2\x88\xceC\xdd\xc9\xa8;I3\xc3I\x1aUI\xa6~Ws0a\xcc\xf9\x86\xc9\xd1\xacK\x8c\x04b+\xd9\xa1G\xbe\x92\xa0\xc8\xa5y{\x13\x7fH\xa7\x84\xd3\xedh\xfb\x95}$i\x86\x1b?\xb7\x193&\x13\x94\"\x0f\x91\xdd\xd8\xdd\xf5^\xf5f\x8f\x11\x81n\x0cZ+\xeb\xcd\xb9\xb3\xca\x86\xad\x95-\xfaVfy(\xe9\xf4\xae\xd2$A\x93\xaa7\xaf\xea\xf5\xd6\x17\xd2M\x03\xadH\x1e\x00\xcdF\xd8\xcb\xb3\x1b\x12\xe7\xccl\x01\xe7a\x0c\x89\xa7\x7f\xd3D\xf4\x8dr\xd9\x0b\xee\xde\xa7\xa9\x83\xbfk\x9d\xb2\xa2\xa4\xdb\xfa\x19\x06ku\xe51S@ZOw-\xfcR<\xd6\x1cD7\xdce`\xd1H\xf4I/;\x9a\xe4,\xfbh\xc4\"\x81\xfd\xfe\xe08\x93\x10#H\xe8\xeb\xc2\x94_\x8d\xf3\x81\xd9\xebd\xda0b>\x1a|z\xd3p\xfa\xb1\x1a\xbc\xeeY \x866\x00J\x84o\x0f\xa3|\xa1I\x8b\xb4=\xa3\xe4C\x9f9\x00)6\x84v1\x8b\x0b\x835XI\xfc2\n\x83/\x96>\x90B\xa3\xdcK\xc6\xe6\xf6(\xfe*)\xae#\xd2\xb7r\xa9t\xff&\xde%EF^%\xb7\xf1:e\xd7\xac\xfe]r\xb3V\xd95\xab\xff\xbc\xea_\xb2\xbbj\x90\xf4t\xf6\x06\x92\x8a\xfeu\xc4\x12\xbcbT\xc0\xdc\x05\xeb\xba\xc8s\xb6Cy2H+\x8cWE.?\xc8\xd0\x14K~\x92\x93\xaf\xb9\x9f\x12\x9f?sZ\xbc\xa8[#s\x88K\xf4\xb2\xe98\x05\xa0\xea \xc4\x85\x87s\xe3\xcd\x03\xb3\xceV]'DDJ\xf59\x8bY\xed\xc8b:=\xeeH\x8dx\xa8T\xf2SZ~\x92^\xb6a\x00\x96/\xe8\x11H`=\xb4\xc5\xf9\x8a\xdb0\x8a^\xd5Z4=g\xed\x9bG\xae\xc7AX\x1dO\x81\x94N(tz\x0c\xfey\x14\x95lC\x17\xd5)\x98<=\xe0\xeby\xbc\x15\x12[\\\x14O6\xfcpc\xb4\x82\x89&\xf1\xe5$\xbflC\x8ab\xfcf\xf0\xeb\xc4\x06\xe2B\xf8\xa4\x86i\xd0=\xb7\xb9\xa1<\x87)\xef`\x8f=\xf1\xa0J\x90\xf2\xd4\xe7\xc7{\x7f\xca\xbb\x84g\xe8\xf2\xa3r\xc5H\x83\x9a\xfd\xa1\xdff\x7f(.a\x87\xe8O2\x03|p^\xba@O \xda\xc8\xab\x8dF\x1e\x83\x19\xf2\xccv8D.7\xa4\\\x91~q4\x11K\xf3 \xdf\xdea+\xbc\x99\xebU\x13\xdefR;\xc0\xbe\x05\x1a.X!\xba\xd2$ Y\x86U\xffo\xdaHW\xf5b\xcf\x04M\xe8\x94\xfc\x01d\x88%\xe1\x14V0\x86\xa9\xe32\x80Q\xaa\x0c\x93\xb1\xfa^JP\xd5\xfd\xd2/\xe6\x8b\x9c\xe9\xc2[\xbbyu\xb5*\xd29\xe90\x81\x89*S\x0fc=\x12\x91\xf4\xc2\x8f\xbf\xf4\xcb\x8f\x1d\xd5\xeb,\xef\x0c,!\x0b\x01\xf0\x8d,a#\x85\x97` \xd5$A\xfa\xe8:7!\xb9\xed\x9aK(\x83\xe9\xd1\xd2U\xd0n\xbc\xd5\xaf~1\xfd\x89\x16e\x82\xf0\x99\xf4n\xc3x\x9a\xdc2\xcb\x81\xb2b\x8d\x87%H\x87P\xeea\xe2\x85W\xdcKM_\xb8<\x0eO!\x16!o\x7f\n\xc9-\xc6t\xe5\xfe'?\xb3\xc6\xc7\xc0z\xd1\xdc\x85MffJr?\x8c\xfa\x00\xac\x04\x12\xfb\x84\xb6\xdb\x199\xbb5B\xa6\x0b\x89\xda\x16oCRZIy@\x1bf\xa3\xf8\x85\xe7\x17s\n5\xcc\xa3e\xfb\xcc\x0bT^\x94\xfe\xb7/J\xb5\x93\xcb\xe4\xa6\x13_\x10\xcc\xa7\x1e\xe4o\xe2\x9c\xa4\xb1\x1f \x01\x1d\xdd&\xa8El\xdb\xae=\xc4R\xe5t\xe8\x9bi\xab}\xe1w\"\xd3\xbaF\x9e{\xff\xae\xdd\x90\x92\xbe\xde$#1C\xcah\xd7\xac\xc7?\xbdTS8\xa9\xd5\xf7\xdb?nH\x8d\xbcLVwi8_\xe4`\x07\x0e\x8c\x06\xc3}\xf872\x85\x9f\xfd<KbO*\xf86\x0cH\x9c\x91)F*g\xa6U\xef\xde\\\x88\xc7`\xbf{s\xe1\xb8\x90\x11\x19>\xdcT\xec\xefdz\xcb\xea\xabl\xc5\x02\xbaz\xd1E\xb0,\xff\xe3\xf6\xffQ}\xdc0\x1f(\xfa\xcd\x05u\xab\xd6:)\xa9D\xbd,\x91G3t\x02\xc8\x14\x16\xe1\xd9\xbe\xa5\x10\x17\xcdh\x95-\xe1,\xc4\x86\xafl\xeat\xf49plo\xcc\x9f\x0c\x92\x90\x85\xcbaR3Q\xa5$\x958\x81P1Y8\x81\xd0\x01\xc2\x9c\xfe\xda\xa8\xb32}L\xddb+u\xca\xaf\x13\xcf_\xad\xa2;\x9eP\xa9\x95\xbf,+\xaby\xc3\x86z\x82O\\\xe5D`F\xa0\xd4\x11\xc6\xc6\xa9\xc8\xcb\x93rG\x17\xde\x1f\xff\x9b\xe9G\xc2\xf2\xceZ\xd0\x1aKR\xc6c\xacy\x814\xeai0\x92\xd2\x85\x0eGk\xd7\xb4\xa2-x\xb2\x9e\x9e\xfa\x81C9\xc7\xd8\xb4(\xcb\xade\xf7\x95T\x9e\x0f\xf6zV\xc8\xdc.\xb8\x0f\x8a\xe3\x9e\x1b:\xd5\xf3?\x81A\xaf\xda]\x16*\xbc\xde\x9a\xe8i\xea\xc7\xd3diw\xfan\x18\xbak1\xf36\xdb\xf2\x82$\x0e\xfc\xdc\xae\x85\xc4\xc74\xc6cJeX\xce\x95\xe5\x82\xbd\xb9\x19\xc3&\xa4Ne\x0e\xb1\xb3\xff\xf8\xe43\x8dh\x06<\xb5e\xe39Sp\xec6\xe6\xcb\x07\x83\xd5|\x05\x8d\xdcc\xd9o\x87\x83\x81\x03\xa7\xfa\xd2\xd0-ZF\x94V\x06Y\x0d\xe9\xf2\xdd\x188.\xa46\xe5\x9d\x13\xa7\xdd\xd0\xdd\x14\x8c\\\xb6v\x7fh\xb4g\xcdInQ\\\xc1\xacW2q\xd7t\xfc\xb2\x9e\x07\x94aKR%\xdc\xb4\xc9\xf3\xcbBw\x0c^7\xe5\x0cE\xb2i\x0f_P\"\xf1\x11KTsP\x89\"\xeb\x9a\x17\xc7e\xce\x88F\\\x9f>=\xc1\x9d\x11\x9002l\x9aY\x94$iW\xef\x0c]\x0b\xb3\xf7\xfe{\xf4\x81\xd9\xc44\n\x03\xe6\x12\xc3v}\nc\x88\xd7O\xe8!\xe1\xa4Q\xaf<Q\xad+TN\xe3fJ\xba$\xc4\xf3Z\xf9}[\xacf\xa1\xd4\x12\xbd1*\x00@>\x87J\xe3>\xc3\x99\xa6\x91\x1b\xb4\xc4qn\xf4\xc1 \\R\xcaK\xddh\x98\xd6\x88\xcb\xd4\x93\x9d\xfe=\xd1\xb0n\x9aO\xea\x9d\xa91p\xf2\xa5\xf0\x8c\xba\x05\xd9\xe7\x0c&\xd5\xa9[\x92ofC\x08X\xe3\xd05\xef\x97\x7f\xa0\xe7\xaa\xd9Gr_\x9f\xc8b\xcf\xe4\xc3\xd9\x89\x0eR;Y?\xffZ\x97\x98gO/\xe69\xd0Iy\x98\x87Y\xf3\\\xc4A\xd5\x1f3\xbd\xff\xb0;\xc7\x9e\xd9\x14.cF<\x1ao[\x96\x94\xdeGk%\xcb\x82 \xb9\xd4\xb9\xf7\xa2\\\x7f`\xf0\x06\x8f\x1a\x11\xd8C\xb3\xe7\x1cH\x82']8`!^\x9ad\x97]\x84\xaaT\\\xe3%\xe72\xef<6\xa6f\x02\x0d<?\x13\xee$ZKE\xe6B\x80\x14\x02\xb3\xb1\x97_e.\x8cXB\xbb\xd3n\x11\x80\xd8\xe6\xd5\x91\xc8\xaczUZ\xa2\xa7\xd8\xa2^\x8f:\x9a5\x17\xb2tp\x0d\xf7\x1d\xdbZ\x92\xdc\xb7\xf4\"J]\x9a0\x8do2[\xba\x1a_\xe6\xa2I\x04g\x15\xf9\x17fg_s\x12cX\xc9\x9a\xb3u\x0b$T?\xc2z\xe5\x11s\xdf\xdck\xf3\xde\x94*\xcb\xec\xd2\x0f\x89\xdc\x908\xe7\xddI\xe2\xcc\xfe\xfdA\x15\xb7klh\xda\xe7\x0e \xc8T\xe7\x03\n8\x0b\xe8\\k>s\xc21X\x1f,\xd8\x84\xcdMM\xf2oq\xddj\x93l@\xe3\xdc\xc1'\xad\x92\xf9\x99H\xeb\xa2\x8dfB\xaf\x7f?\xfb\xdb\x184\xf6#\xef\xcf\xce^\xe9\xd3\x17\xce\xfc,\xffw\xa2\x86\x873mg\xcc\x1a\x90\xc8A5\xb5n\x0b\xcc[]\x9f\xb6\xf2\x14\xacs\xca\xfdX\x1f\xd1X\x9f\x98e\x1d\x1b!NOk\x04a,\x97\xd5:\xf4\xdaj\x97{lT\xd4\x9bu\xd6R6P]_\xc4\xa5\x9fLq\x86N\xd2K/lNl\x13\xf2s\x92\xffL\xfc/\xeb@\xfeQ\x00\xd90\x84H\x84&<6\x86\x7f\x088zi\x05\x92\xf8uJ\xc8o\x9dBn\xa8*\x8f\xd0\x1e\xd4\xa3\x8b\x9b\xfe\xc2\xd8vO\x9e\x80\x00\x13\xfd\x1d\xd8u\xb6K\\:\x02\xb0\x8d6c\xfc\xee\xef\x0fe\xb8\xe77\xd9Y\x19yC\xfb\xf5Z\xb4\xc9\xef\xdf\"]\xd6W\xadw{\xcf]\xb0\xaa\xc8F\x0d\xf7w\x8e\xf2\xe4xG\x947\xf7^\xbe={\xfe\xe9\xea\xc5\xdfPs\x847\xf8\xeb\xfd\xd9\xcfW\xcf?_\xfc\xf5\xea\xecS\xf5\xe0\xfc\xe3\xd9K\xfa\xe0\xea\xc5\xf3\x8b\x97\x7fm<.\x1f\\\xfc\xf5\xd3\x87\x9f\xdfkJV/J\xc5\x05\xedCLn/(}\x1b\x9f\xa5\xed\x9eg|u4\x97\x0e\xc5A\xda\xa8\xcd+\xff.J\xfc\xe9\xb8%\x83$\xd4\x89y\xb5C\x18/\xf3[z\xa59@\xca^\x91\x8e^\x9c\xafH\xf0\x8d@\xc9\xbe\xbd\xf9o\x06\x81&\xbe^\xef></\xf2\xc57\x82 xl\xf3AD\xfcV\xa9\xadP\x134<\xff\x9f\xc1\x00\xea\xd9\xe0\xe5<JpZ\xbf\x1d7\x08\xf2\x8e\x11iR?\xac1\xa2\x17w\xff#c\xeaC\x05\xaa$\xe5ZP\xd0\xe4\xda\xe8\x86\x82\x82\xa2E\xb8\xb6\xe1\x81N\x86\xfa\xfd\xd3\xf2\xdep\x13W\x0dB\xb4H\x9a^\xc5\xe4\xf6\n\x99\xfd\xf8\x8a\xa4\xa9&b\xbe\x11\xc5j>\xbf\xba\xa6;\xd7j2\x01\x0d\xc4]~\x9c\xadH\xa0i92\x1f\x02\x8dO\xb5\xad\x06\xbac\xa5\xfc\xd4/\xf2\x85\xa6\xd5Y\xedT\xc2\xd2\xb8\x80\x95b\xab\xaa\x18;\xc9\xaa\x92W\xd7w\xcc-\xb37_\xb6\xaf2X\\\xc6\xaeK\xdcY\xba?3\xa5\xc0\xe5\xda\xe1C\xdaH\xed\xfb{\xb4\x0fa6?\xc4\xa1\xef*\xeasMfs\x7f\xc7\xe1\xec\x96\x0b\x16s?5E\xaf\xeaE\x98H5\x0f\xf4\xee\x88\xfb\x0d\x19\x0bO\xf7?\xd03\xb0\xfb\x03\xbd\xf0e\x7f\xb0\xdb7\xdc\xb1\x10nli\x98\xa1\x98[U\x01W\xd3\x0c0\xe6\x16W\xe2\xd6\xd7\\\x92r?c\\@\xb6s\x04\x9b\x9b9\x1cCl\x0c\xb3\x99\x1a3\\3\xafa\x92\xdb)f\xcfK'\xc3\xcbv)\"\xbd2\xd9\x0b\x98\x9f@\xa9[{\xccm\x0fO \xa9?\x9f\x13\x96\xfc\xaa\xf6p\xe1\xa3\xe5J\xfda\x86%\x8b\xbauK\xb6\xde\xdc\x0f\x07{}$c*\xd8$\x93\xd0\x13)_x\xbc\xb5u\xd4\xe4C\xb8\x94~\x12_\xb2\xfc\x83\x92\x19\xb0\xf6\xac\xd8\x1a>z\x8f\x0c\xba\x93\xd1kFS\x0d\xe4\xeaj\xea\xe7\xfe\xd5\x95\xb6_\xa9\x9d;p\n\xf1D\xc3:\xe7\x94u\x16\x8f\xc7`-\xfcla\xd1\x134\xf6\x96\xfe\xea\xd1\xe31\xb8C\xed7\xe2\xf2\x89\xf0v\x06w\xa8]\xfd\xc6\xec\x11\n\xd7\x84\xeeD \x9dlA\xde\xa5!\x85\x86.:\xc6)\xf86*\x93\x12\x9b\xe0\xba tg\x89T\xddc\x94\xb8v\xc0M\xee\xdbZ\xbd'\xde-\xb9^\xf9\xc1\x97\x8fIt7\x0b\xa3\x88\xab\xe4\xa7d\x95\x92\xa0\x99\x17\x14=\xdeW~\xbe\xc8\xb8=I\x15z\x99\x7fY\xde\x9e\xb0\xf4\xb3z\x06\x8f\xb8`\xb1dM\xda\xd8f\xb5p\x91\x9a\xf0tk\xc5>#^\xd4x\xad0\xd6\xad\xfd\x0c\xffG\xfa\xa8\x11\xc64\xfa\xd8\x9c\xad\x13\x18>R_\xab\x9a&\xd4\x07@w\xdd\xf6\x7f\xda\xa7\xe3\xc1\xfdd\xb8\xf5\xf4\xf2\x97\xe9\x8f\xce\x9f\xb7\xbb\xb6\x88\x01\xa3$\x95\xb1\x8f>\xef\xfb\xc6\x86\xfd\xff\xb3\xf7\xef}q\xe3\xc8\xe20\xfe\xff\xbe\x8a\xc2\xe7\x9c\xac=\x18\x03I&\x97\xce\xb0,\x03\x9d\x1d\xce\x06\xc8\x0f\xc8\xcc\xce\xaf\xc3\x971\xb6\xba\xdb\x1b\xb7\xddk\xab\x9b\xb0\x9b<\xaf\xfd\xf9\xa8$\xd9\xb2,\xd9\x86\xb0{.\xcf\xd7\x7f@[\xd6]\xa5RU\xa9.T9\xd3\x18\n\xc9`\xc4*{\xf2\x04\\\xd5EI\xde\xf0A\xb2\xb1\xc7M\x87\x0b\x1e]\x80xX\x80\xc0\x1f`k\x97\xff\xfa\x0f\xf4e\xcfi}\x8c\xc5\xfb\x80\x99\xd2]L\xf5\xcd\x82\xed(\x17\xfa5\x8a\xe9\xa2\xf9z\x8b+\xd8\x18\xf1\n\x86\x03P\xba\x82*\xae}\xc8\xa1\x83\x90\xd2\xb1\xa1`\x1f^Y\xc8\x9dg\xfa\xfd\x99 w\x9e\xe9\x0e\xc6\x05V}\xa6\xd3\x99\xa5\x99*M\xc5%\x81^\x0d^\x18\xb9\x85\xd7&\xa4S7\xf7\xdats\xea&Zj\x8c\xa9\xa1\x96:\xc7\xd4\x95\x96\x8a\xe1\xdd\xea%q\xb9\xe1\x91\xe2m(\xfc9!\xb7W\x08vk\x97\xbb\xe3`\x7fQ\x97\x8c\xbb\xacqw=\xae\xd5\x947\xca\x9e\x84K\xb5X\xee\xf1\xd01j\x96\xf7E\xbeHJ\"\xb3%\x01\x0f*N\\^_\xd8\xc8|A\xa8Z_\x88YV\x8d,\xbf\x90\xf0\x93\xd6\xec\x8ao\x0fw=\x08ZK\xe3=_\xa62\n|c\\9r\xcf6\xfd\xbc\xd8\x9d\x8b\"\xf4\xc1>\xa4n\xc6\xdd\xdbh\xd7~\\\x81P*)\x18/\xf7\xf1Z>\xea\xbc\x967\xac\\\x9b\xa6\xc5z\xa6\xc3\xea\xc1\xe9\xb4T\xb1\x1cVE\xb5\xca\x96j\xe2a\xd5\xe0\xfa[\xaa\x98\x0f\xab\xa2\x82\x8fFn\xa3\x8a\x81\x8235\x05\xf2AV\x0d\n\x89\xfd\xecu/\x95e\xbf|\xce5\xaeG\x88nF`\xb4%\x13}W\xb4arq\xaa\xf49F\xb4v\xbf%T\xe1\xd8\xf2\xd5\xce\x90Au\xf2\x0d;\xdc\xb9>\x1e\x82\xe8[\x97x^\xcdJ\xc8x0l\xf3f\xf0\x03$o<\x94i\x91I\xee\xd2I\xb6\xb9y\xe5]\x19\x07\xcf\x8d\xf2\x90\xd7\x16\xf4\xa8\xa6_?h\x02\xccr\xfb\xfaZ\xb45\xb4\x0d\x1a\xacIQ&\xdc\xef\x92PE\x92IA\x92\xc5\xe4\xf3\xd9\xd4u\xd6;\x81\xe3u\xe7\xd8e9\x9e<\x11\x02:s\x8eW,\xcf~\xcf\x85cF>\xd3\xcb$\xd2n\xb1z\xf4u\xfaUX\x18V\xad\xd5X~\xefDa\x9a\xde\x84\xd1'\xa7\x92\x1eb\xf8Y\xb8!\x8aZ\xcb\xef-\xaa\xc5ka\x07\xc7c(\xb4\x94\xb3\x8de$\x8e4\x06F\x92\x0f\xa2\x85\x9d\x1e+_\x8b\xc2\x97|$*\x08\xe4LZ\x8d}\xa0G}K>\xed\x1a{ie\xf5\x11\x1aT\\]\xdb\xa2X&\x1f=\x10\x89\xfat\xe9w\xc9\xe7Q\xbbjU>\x93Ooo\x9f\xffk{k\xd5N\x93OW\x87\x07\xd9b#.D\x12SRS\xee\n\xb6\x90\xb3 \xb9\xb9B\xc8\xd0\x9e\xdc \x1e$\x93ps\xf3\xaaa\x8d\x10\xf6D\xe5\xfd\xe6YQ\xcd\x03zt\xfd\xbf\x0e\xbd\x81\xd68<\x14\xe3\xd5hL=wU\x07\x89\xdf{f\xcdx\xbb\xa6\xb5\x89\xcc/\x84\x97E\x93<2\xe9;\xb2\x92\x0c\x91\xe0$\xbb\xc2s(S\xfc\xc2u\xd9\xb5Y\x84\x10y\xf5]\xa9F\xfe\xca\x83i\x91/\x00\x9d\x83\x85i\x9aG\xca\xcf\x0fY\x19NI+\xe1\"\xcdo\xb5#\x81\x91\xa3n\xe2\x16\xdc\xa7\x0c\x0d*w\x94\xa1\xe7C\xe2\xe6<~b\xc8\xdb\xea\xa7G\xf0h0x\xce4\x1f\x0c\xceA\xe34\xc8rq\"\x88\n\xcc\x94\x8biRX\x0f\xf9\x1c\xdc\xb3\x8b\xbdg\x97\xd6\xc5\x8e\xeeI\xb0j\x9b{6I\xae\x0d\xc1\x14\x98\xc2\x05\xc2>\x14\xc14\x91Z\xc1\x8c\x86\x13\xaf\xcaoT\xb07\x8c],z\xaf\xf2\xe9?a\xec\xf5\xd2\x98\x16E\x01\xbe\xff\xc2\xce\x15\x01\xeb\x81`G{\x05\x87\x83h=u#e\xee\x8b\x97\xdf{\xae3\xcd\x8bq\x18\xcd\x9dA\xa8\xa8O\xe3\xf5\xd9\xaeY\x10\xf1\xcc\xe2\x06r\xf7\xb5.)\x10\x82\x88W\xaa\x18\xd7\x1dL\x8c#R\xc3\xf8$+T\xcfL\x8d3\xdb\xbaC\xfe\x01\x9e6\\\xe5n4\x84\xban)\x9c\xc3r\x97\xb1D\xb0/\x0c\xc2\xcb\xc6\xd1\xf5T\x04\x8c\x94\x8c\x0dFO[\xa1I\x13\xe7\x0b6\xd0n\x08\x93\xc3J\x7f\xd3\x89\x1c\x11\x93KI#2\x04\x97\x92v\xebx\x9e\xcf\x0d\xe1\x1b\xa3\x82Z\x91\xc6\xe0\xc6\xb0\x19\x96%kgP\xc5\x9fI\xfbs\x1d\xa2G\x8fK\x0c%\xdb\xfen\xee\x96\xac[ld\xb5x\xf6\xab\x17\xcc\x86\xf2\x83b\xa9|\xdd\xef@u\x0di^\x15\x945\xf1@\x06\xe6\xc5I\x1b\x8b\xf3LY\x1c\x86\xceh\xa5\xec\x03#H\xc4=\x88\xf8\x8e\x16\xe8\xcd\xef\x19\xb7qS\x1a\xe5\x1fqA\xd3\xba\x0f\xca\x17\x0d\x18$ \x945 \xac\x0c\x80P\xb6\x00\x01},\x98\x16\x1d\x05\xd3\x86%G\x9bd\xc3J7A\xc1\xa0\x01\xa4\x82B\xa9\xafv*V;\xf5D\x0c\xbd\xe8~(\xa9\xc6\x12\xadp\xb9\x02I<5_\x01={f2\x18\xcb\\\x8b\xb0rwW\x17nrt\xb7\xfbB\xc7M\xdc\xa7D[R\xa9\xaa\xbd\xb8TS\x82\xd5\x87\x88\xbe\x05\x97&\xb8\x8e}\x98\xfb\xb0\xf6a\xe1\xc3\x0c\xf6`\xa9\xaa\x89\xdbhU);n}dD\xa5Y\x94w\x87\xc2\x06\xde\x11\x06\xd9Oa\x04:\xbae\xcf\x0d\x92\xe0\xcd \xb6q\xc6\xb3\x1e\xe3\x8e\x84r8i\x99v\xb0\x1a\x13wf\xd4\x19E\xba3\xe6\xa6\x072F\xef\x1b\x88\xe1\x0fp\xf3\x06n67\xcd\xd46\xab\xd1]\x08G\xacwn\xe8\xce\x91T\xbd\xb9\xf2\xf0\x8em.\xee\xd8\xee\\L\xf3P\x06\x81\xb7_\x0b\x1e\x0b\xb2\xba\x9a]4!\x1a\xcd\x7f\xcd}\\\xc3\x1eTq'\xde\xc0\x066\xb9F\x8e\xc3\xf5\xbc \xce3b\xb8\x14\x06\xb5\xb3\xb9\xbb\xf6\xe1\xce\x879\xb7\xc5\xe3w\xc4\x03\xba\xf6\xd5\x0b~<\x1f\x1f\xfc\x99\xc7j\xa5\xc1\xf9\xf8\xf2\xc3\xf9)\xec\x89\xdd\xf6\x8d\xe7\xb3\xd5'u\x11\x1c\x8d\xdf\x1e|xw \xfd\xfe\xa9ww^\xf5\xf8\x9d~)\xfcL\xbf\x12\xff_\xdf\xdb\xdf\xb4BR<\xb7\xdcm\xec\xe8\xdb<1\\\xf1\xdc\xdf\x94\xd1rH\x85Fm\x8aD1pD\xee\xc5\x0d\xb1<J\xe7k\xf2\x19\xe5gT0[_\xbe\x80\xc1\xe7\xdf \x14\xda\xb7\xbc\xc6\xbbu\x9b\xcbO\xb3o\x99\x82$YB\x930M\xfeN0<e\x88\xbd\x19p\x01\x8aZ%\xb4.\xf2K\x11.\x97\xdc\xf3/~\x9a\x11z\xd9\xfe\xeaJ\x97\xfd\xb7<\xe18K\xe8QHCvB\x1b\x92%\xc5\xb6\x87\xc7\xb2\xb1\xa0p\x8f\xc0\x03\x9a\x95\xc7\x99\xd2(\x9e\xbc\xad\xce\x1b\x94\xc3\xf5\x82f[\x06\xf3\x88l\xb1\x9b[U\xf6\xcehu\xa9j\x1c\xcc\x90q\x88\xf8\xf9&?^\xb9/\x85\x94>\x18\xddd\x83\x00\xad6a&\x1f\xec\x96\xd6+W\xa8\x869O_\xeaGCU\xcchc]}\xb5-\xdc\x0e\xa7}\xd9\x7f\xdep\x05\xa7\x07\x82\xc9\x8cxp\xf8\xda \xb39FQ\xde\xe2(\x10\xa6I\x16\xa6ig\xd7:;\x0eP\xb9&\xeb\xcf\x08r\xa4Q\x9a\x97b\x00\x9d\x05\x9aF\xe6\xdcu\xc5\xe0\n\x86\x0c\x0e\xba\xe6\xde<g`\x94\x85\xd9S\x05<GC \xb7\xb1\xbaCl4\x1a1\xcfl\xb8\x88S\xee\xe4\x0d^\xbf\xd4\x11\xab3\xbb\xbb\x14P\x10,\xedt\xd9\xd7\xbf\xe8&t\xc5%o\xb9\x19 \xf2\x8f\x85\x02\xea(p\xa9_\x95\xc8'BI\xe9\x9ba\x00}|\xd9\xfa\xb2\xb7gw\x92\xa0?\x86M\x9a\xc1&\xec\xde\x07\xce\xbf\x19\xec\x0c\x90%7\xcc\x10\xa0\xb2`8<\xc2\x9d\xa7\xafl\x18\xee\x9f\x0c\x8b\xc2\xc9\"\x03\xc7\xf6\xf0\xd4g%\x9bo\xaf\xe5\xb7\xc0q\"\xd0\xf0\n\x89\x1b\xd4\x90\x089\x1eR~\xaa\xfe\xcdV\x9e\x94\x7f<\nx&\xf7\x02\xc1\nA\xfe\xeb\xa1\x0f,\x9b^\xa1b\xda\x10\xdbH\xb1\xd8iq\x1d\xb3o\xa6\x16\xcd\xaa\x98\xcfZv\xebfR\xb1\x8c\nB\xb2\xbf\xd8\xe8\x1d\xfe\xf9W\xdb\xe7\x08\xa3\xc5[K\xf3\xcf\xf6\xd2\xb4H\xd1\x8c\xd4\xd2\xf6<\x99\xd2\x8e\xefa\xda\xf5uAh\xd8\xf1yF\xe8I\x1e'\xd3\x84\x14\x174\xa4d\x84\xae\x1bun\x84=\xdcA\xf2\x10DS\xa9\x96\x05\xbc\x8cy{J\x89\xd8\xed<\x89\xe6\xe8\xf7\x85\xa0$k\x84v\xe8{\x15\xf7\xff\xbcz\xdbm\xf8)\x92\x8f\x01+\xf2f\xad\xc4kA\xd2\x90\x92xX8 P\xd5!\x1b%\x85j\xe9\xb4\xc8e\xc0~\xee\xa2((\x8bH&\xec\x03 h.\xdfF\xd0\xc8\xde\xde\xbe&\xaa7\x9c\x91\xbf\xdc\xa3\x93\x0e\x16\xa8\xe6\x93\x04\xf8\x8eM\x0b(\x85M\xc8\x03\xe1\xff\xf9\"*\xf24}G\xa6th_~\xbdo_~\xd5\xfa\xf2\xab\xd2\x97_\xdb}\xb9\xcc\x97\xfdh\xa4zo\xdf\xe6\xfd\x0f\xf1R)\x8d\xa2\x9e\xear?\x198CWR\x0cQ\xf7u\x02\x1f\x8b\x8f\xd9G\xfaqz\xb5\xdd\xfc\xce\x8e\xc7\xed\x1f\xdc\x8d\xad\xad/i\x92}\xfa\x92\xe5eT$K\xfa\x85!\x80/\xe2wI\xefR\xe2\xd5\x95|\xdc\xfe\x83^O)\xda\x7f\xe5\xb9\x9d\xb7\x13\x00\xd2'+\xba\x18\\\x86\x11\xf9p~\x8c\x87h\x12\x94\xeb\x19\xdeA$YF\x8a\x9f.O\xde9B^@\x82*\x89\x1d\xe7m\xcc\x80\xbc\x80\x19\xa8\xd0R\xac`\xf5\xc6\xc2\xf3\xaa\x08\xf3&\xb6\x93\xeb\xc4\xc9\xda\xf1\xbcF\x13\xce\x0f\xe5z\xf6\x07\x8c\x9b\x06\x9b\xe0\xfc\xb0\x8d\xaf=\x94N\x86\x84\xea4)Jz8O\xd2\xf8\x0dd\xea\x9b\xc7/\xdeI\x16\xe3\xbb\xab~4\xec\xe9&\xf0*T\x16\x9b\xbe<\x88\xc2\xecCI\x8e\xceNL\x92\x1a\xc6\xe4u\x8e\xb69\x92\xb49vp\xd0\xef J\xea\x94/O\x9e\xf0k\xa0\x81\xeb\xcb}\xd5\x9e\xe6\xb1P\x15\xae\xdf\x83\x82,\xd30\"|\x1a\x88\x0f\x04\xaf\xabQ\xed\x99\"e\xe9\xfc\xc0\x9b\xa7\x93\x1d\xf4#\xb8\x92\x1fm\x98\xa3 \xc2\x83 \xc3\x99\x87\xf3\xb08\xccc\xe2\xbe\xf8\xfe\xe9\xcb\xd7\x1e[P\xf3*\xae+k\x11e\xc9\x8c9wy,\xcd V\xa8\x98}\xc4\xf2\x8b|-\x06\x85\xf7\xc0\x99\xb0\x06b\xe4\x8e\xbb\xe3\x9b\x08/\xc1\xc5j\xf0\xad-=g\xda\x1b\x9cM\x0d\x1d\xf7\xb6\x12\xea&\x89\xb6'\xce\xef\x9f\xfc\xf0\x87\xab^\xf5x\x0b\xb6\xbc_lN\xf4\xca\xb7\x89\xda|\xdd\xa7\x03\xd2\x06\"b7\x0f\xa4m\\\x1a\xae\x0bB>\x93\xa8\x15{\x1a@\xba\xd2\xb0\xd9)\x81d-\xb0\x11s\x03a\xdbu\x8b|V\xed\xab\x05\x90\xd8\x81\xfb\x83GM?\xae\xff\x93U\xbcNh\xe7u*\xcffA$\xa0\xf8\x80\xbaa\xa7+\n\xae\x01\xd6\xa3T\xc5\x88,\xe7\xc9\xdfV9}\xd3\xe1\x8b\x83=7\x05 ?\xd9\xb3\xf0\xd6^\x0di-\\,\x1f\xa5\xb1\xd7C\x1a\xfb\xb7\xcfO_>Fk/:\x14\x0d\xa1j-}\x94i|\xd1\xa3b\xc8\xdb\x9a}k[\x83t\xd8\xa2<\xa3I\xb6j\xdf\x0c\x81\x95\xc5\xe3|0j\xf6\xbb l2\xfcX\xaen\xf8\xb5\xb5\xbb\xf2!\xf4\xe4e>\xe3@\x19+\xbc\xa9#:s\xe5b\xaf\xca\xfa\xf7Y\xc9v\xe50\xd2C\x0c<\x92\xbaH\x83\xea2\xfa\xa67\x851\x0b\x852\xb5\xd9@\xaf\xcd\\\x96\"\xbf\xce@ [\x92\x96FId\xb8\xb5\x9d\xa2p\xa1\x99\xb6l\xa3\xabvx>\xf6\xd0|yp\x93\x17t\x04N\xc8\xfe\x1b\xd0\x1f\xcb\x92%\x0b\x0c\xe11\xce\xe2\x11\x94\xae\x13\xca\x04\x92\xc5\\\xff\xb9\x99\xd4]\xcb1%<\"H\xb3\xaeD&\xeb5\xd6\x1f\xba\xeb\xbd\xa0!\x1b\x89Zg\xc9\x92\xf4\xfax\xa2\xb1\xae\x1f\xd3U1\x02\xe7&]\xe9&\xed\"\xc3a\x98\xbdO\xc3\xbb\x118Q\x98-\xd3\xf0\xae3\xdb\xe5\xbc\xc8W\xb3y\x9d\x9b\xf2\x04K\xa1y\x98\xcd\x08\xcb\x8c?,\x99RT\x01w\"\x8c e\xce\x92/\x96y\x99T\x0b\xe6Du\x82uu\x94Bb\x1e\xd5b\x1dS\xa6\x14\xfc\xb0\x8cQ&\xa0\x96\\a\x9a\xadhF\xc9gzB\xb2\x15\x16\xc2\xb7\x05\xc9V\xb6\xecK\x9c\xf8|i\x9b\xf5\x15v{e\xe9\xa9\x12\x1ek\x04N|\x93v\xcc\xe1Q\x11\xceX\xa6\"\x9c\xd93\xf0\xd9ey\xac\xd3\xca\xb3QRT\x19)\xb1\x80\x16f\xfd\x9cP\x99\xf3sb\x1bG\x11\xce0\xc0\xa3\xc8\x99\xb2\xdf\xf6\xacg\xeb\xaa\xf5|\xdd\xd5\xb8\\w\x96\xb3c\xc1\x8f\x8a|\x89\xb9\xf2\xa5%\xc3\x8ao\xd7\n\x9ec\x91\xd0\x05\xd7\xe3\xc5\x92&\x84\xcd'\xe1\xbf,\xd9\xb2\xa8\xb8[R\x9eQ\xfe\xb6e\x8dE\xb6\xd8\x9a\xa5(r67\x84\xfd7gy\x9bG\xabr\x04\xce\x94\xfd7g9\xce\x96\x08x<\x02\x981\xcb\x9f\xc9\xddQ~\x9b\x8d\xc0\xf9D\xee\xe2\xfc\xd6\x82\xca\xfeL\xee\xde\x17\xa4,y\xbe%\xfbi\xcd\xf8a\xc9s\xad,\xab\xf0\x0e-\x93\x19\x0f2\x92f\xca\x8cs\xe9\xca|Bh\x18\xab\x05\x16\"\xc1^H\xc2\x0c\xcb\xdf\x013U\xe0\xb8\x118\x0b\xf6\xdb>\x07U\x108\x99\x95qW\x1dY\xcfp\xee1gn\x9b~\x9e\x91\xef\x03\x9e\xd3\xba\x11D\x988\x99\xd16\xbb\xef\xc3\x121\xdd\x92\xfd\xb7eY\x95<\xcb\xaa\xb4e\xe1G\x89\xfd\x1ca\x19\x92l&\xf2$\x99\x05\x19\xbd/\xf2\x99\x80\x9b\xa5\xf8i\xcex\x1eRRm\xcb\"\xa4\xa4kKr \xdb\x08\x9c\x12\x7fX2\x11\xf2 \xb7Y\x89?\xec\x99\xf80J\xfe\xcb\x96-\xe5\x91=\xab.\x962\xa5\xb3\x9f4LS\xde\x07\xfe\xcb\x92mU. b\xec\x92\xff2g\xbb$\x9f\xa9\xdc\xd1T\xfe\xb6dM\x16\xa4:\xf3h\xb2 ]\x87\xdde\xbe\x8a\xe6\x87a\x16\x116\xa5\x94\xbdE\xf8\xd6\x91\x9d\x1f0\x98\xd7\xde_\xf6U\xec\x17\xcci\xdf/\x98U\xeeX\xcc\xdb\xb1e\xf1\xda/Q\xa9>Z\xa5\xd4d_3\xcdX\xd1\xcfy\xbaZ\xd4P\xb7\xc6\xd7\xae\xf5\xfc%L(\x87\x96[\xfe\xcb\x92mNp*o\xd9\x7f\xcd\x04\xb4Y`\xcex(\x1e\x85\xa6\n\xa2w|\xe4\xc0\xa6\x90\x18\xb9\x8d8\x04^P\xa6ID\xdc\xa7^\x93\x1dX\xa3j\xdb?\xbe\xa2VE\x93\x94>'2\xd2Z\x1d\xa4\xb0}\x990 p\xad\xa9\xa2~\xf99:\x8f\xf9)\xcc\xe2\x94\\\xe6\xcbwdMRw\x1d\xcc\x1b \x9e\x0f\xeb\xa0]=\xec\xf5{ll\x8e\xa2$t\x9ca@\xcc\xbe\xae\x19\xdb{\xf2\xc4\x98\x1e\xd4\xd5\xb6\\\x01j\xb3X\xb6\x9b7\xb5.5\x88\xdc\x0dc?\xbe|\x01\xe3\x87\xa0\xaa\xdf\xed\x0e1\x97b\x81\xcb|\x80S\xd1\x86\xa4\x98\xfa\xd0\xed;O>b\x00=j}\x95\x16\xde\\D\"\x99\xcc\xaf`\x0f\x96\x9b\x9b>D\x13\xf6&\x82\xfcV\xaf\xed\xe5\xe6\x11 `\x0f\x92V\xc0\xc6#\xc20%\xc9\xa2\x84\x94\x13r\xd50f\xcb\x87\x08\xb3P\xcb\x9d\xed\x1c\xabu[\xa1\xc7\x99\\\x89X2+\x1e\xa7\xd8\x91{\x9d\xcb\x86Wht/v\xbd\x07\xfbfp\xa2E\xb8\xfcqu\xc3\xd6\x11?(\xb5\xf8\x12e\x08\xb3\x9d\xd4\xe5G\xfd7\xd5\xa8\xd4 \xaa}@%Gg'H~\\\x88\xf3\x96W\xe4TGqc\x02\xe4\xa1\x0c\x1b;\x9d}\x16\x01o\x95\xf6\xaa\xea\xeb:\xee\xd9cC\x0d\xc6\xc2\xbf\x1c\x9f\x1e\x9d\xfdr\xfd\xd3\xc1\xe9\xd1\xbb\xb1\x1c\x0bR\xd4r(x\x86p\xbe\xbb\x1e\x9d\x9b\xba\x92\xde\x16\xa3s\xef1\xbc\xb7\xa2dUEf\xc1}\x96\xf2\xd8\x17_\n\x01 \xf3\x04\x90`uI\xe6\x08\x15\xd7\xc1\x93\xd5\xecO\x92\xf5\xf5\xa8U\x81\xec\x10\x96G\x1a\x97u\xca\x87\"\x10\x1f\x85N\n\xbeck\x98\xc0\xba\x1d\x9b\xf7\xd6\xb0\xb6W>\xc4\x93\xd5\x15\xef.n\xc7\xbdVHy\xe8;.\xf4Z\xfb\x03\xd5\x80b\x867\xa8\x9f-\x85bK7\x1aK\xfd8\xfdhB\xcf\x90\x8e\x88\xc86<4\xe9\xfbpF\xfe\xf2k\xcfA\x86\xb7\x17\xfa\xad\x1e+\xdd\xe9Kz-\x9c\x86\x9a\n\xba\x0e\xa2\x19\xfcm\xd2\xe3\x92\xf7$\xaa\xd3\x06UQ\xa0k|$+W\x85\xc0`?\x87\xe9\x8a\x9c\xe4YB\xf3\x02 \xba\xdeq*\xae.\x90T\xc0K\xdcu`\x984\x97\xed\x80\x0d\xcc\xb41\xed:|\xd8$\xac\x82\x82L\x0bR\xce\x95~\x95\x96\xfb@\xd3R/\xf8\x18\x94\xd2\xe8\xebzZ\x87\xecR\x1fm?To_-\x06\x08\x83<\x904\xc5\xd4Ur\xa5\xd1P\xb4\xe6\x94k\xb4^\x17\xab\x94\x94\xd7\xd7\x0d\xdd\xf0\xeb(\x8c\xe6\x04\x13-\xd7\x8b\x85Bp\\_O\x93,\xc6\xdcv\xaa\xa5\xad\xf7W5-\xc8\x04~\x8d\xb7\xb5\xfb\x06\xa8\xd5\xb1`\xb3\xe0ds3\xbbB\x85\x01\xae*s\x0fO\x83\xbe6\x82(_,\x93\x944\x07a\xbaB'\xa2\xfb\x06\x96\x83M\xa1\xe3hT\x0cQ\xc6)\xecI\xddn\xda\x8e\x04\x84\x13\x98\xfc~<L\xe9\xc0\x82\xec\xa1\x95\xdf\x10\xe2\xc1\x0f\xdc'\x18\xe5\xd1\xf6\x0c>\xe3\xf5\x18\x07\xa8\x95\xa2\xae\xfe?\xd0\x07q\xaby[ OY\x92\xc7\xda\xe2\xae\xf3:\x86oD\xa9\xec\xc9\xd4)p\xd1!X\x86\x13!\x07G\xf9\xe0\xbe|\xd1Z\xe5#\xcd\x82if\x88M\xdd\x1a\xad\x0d\x1cB:\xd0\xf2\xa5\xa8a\x99o\x01\xa3\x11\x1a^\x12\xb1\xbe\xea>\xa3\x19Doq\xb5\x81B\xb5\x8c\x16V\xd1\xef\xc3\xa2$\x05\xb0\xe9C\xc3\xb2i\xbeB~\x1f6A7K\xd7\xf6Eq\x15L\xa5\xf1g\xebK\x98b$c\xfc\xff\xe5\xcb\x90]\xdf\x9c\x9d\x1b2\xcd\x0bb4\xf7k\xb9\xb1ZK\xcfx\xbd\x93\x94Hm\x9c\x8eI\xca\x1fs\x92\x82r\x89l|\xee\xc3\x8e\xc9\xf5!C+F\x13R\"\xd9K\x93C\xc4if4/\x0dS:\x82\xa4\x9e\xf2\xd6\xb6\xbb\xd7\n\x84SJ\x8a\xff=\x0b\xc0o~\xff\xa7-\x02\xc34\xf7@\x13F\x04\xa0M\x08\"/\xdb$\x18T[z'\xc10q8 \xc5cM\x02\xefA\x9f\xf2\x17\xcb\xd0\x0cJ\x8b\xae` \x8c\x00e\x06\xdc\xe3cs.\x86\x1dy\xf5Y\xd9\xd2\xa0\xe7\x87\xd9\xb0j4\xba\xa4\xda%fU!\xca\xce\x1e\xc3N8g]\x87E\x98\x853R\x8c \xc9\xd6a\x9a\xc4bg0\"\xc5\xb4'\xa0\x8d\xbd\xe9\x95:*=\x84\x13\xe6\xbe\xef:\xc5I\xd9Z(}\"\xdc\xeee\xf2\xfe\x17\xcc\xe5\xeec\xcc\xe5\x8cP\xde\xbb\x01jo\xc2\xcb\xc1\x9e\xdeB\x0d\xef\x15\xe1\xe9\xb6\xfa1!W\xda\x1e\xfd\xea\xdf\xdf\xf3{\xbf\xbb\x93\xce\xbd\xbb\xe6nC\nn1hq\xd6\x8e\x16\xc0\xc12/O\xc2\xcf\xed\xaf+\xf9\xb5\xfd\xa9\xc4OIy\x9c\xbd\x0boH\xda>x\x94\x8f^M\xc7\x9b\xf2\xa5,\xcf\x87l\x11\xd2hN\xe2\x8b(_\x92\xb2\x8e\x0dj\xfc\xbc\xb5\xe5\xb7*C>\x05{\x8bf\xf5x4)\x9d\x10\xa2\x14F\\\xed\xbe\xe1\xa3\x82\x1f 4z\x9ag\xfdz\xcd\x0fN7\x07\xa1\xca\xaf\xea\xecaq\xcf\xf3 \xdb\xdclCr\x15\x82\xfb\xf53\xe1\xdb\x11\xbd\x04\xb2\x9f[[V\xd2\x99\x0b{\xcc\xbc+\xea\x80\xb5\xbe\xb4u\xabP)\xb7$EP~J\x96\x97\xf9'\x92\xd9\xc3\xef\x80\xa2\x11\x0f\xfb\xdc\xc5\x19_l\xcb\xa4\xc3\x1e\xf7\x0cb\xfd\x9a\xc1\x16\x9ft\xbe\x06+}\xfeK\xff\xe1a\x15^\xdb\xa2`r)\xba\xeb\xfc\xdd\xf1\x8cq\xa5\\%\xb6r\xa7V\xaa\xd4w\xbd\xa8=B\x15\x02\x8f\"\xc1C]\xc7a\xc3\x17\x0d\xf6j\xa3\xa9\xf5\x0f\xd3\xb8m\xc8IL\xa1H\x9d\xc30\xfb=\x85(LSX\x10:\xcfc\xc830b\xd4\x96\xcb\x8d{\xcew+&\xa20S\xd8\xf5\x02)x\xd2no\xd0a\x87\x08\xe0\xe2\xe6M%\xf5^\x1f\xa4\x96\xc5H`\x1f\xb4\xaa\\\xf4:\xaf\xd8\xb1\xdd\x7f`}\x9d1 S\x14\xd5\x15jD8\xcdW\xb8\xc0\xb6y\x1b\xc1!\x8dd\xf2\x97\xedr\xedt\x19\xae\x9c\x87]+\x10\xe1\xc8\x18\xd3^\xdd\x9e\xa1\xe6\x8eJ\xd1?\xc7\xd9\xf4\xfeun\xfcs\xbak\x83\xe4<[\x93\x82\x82p\xfbKsX\x16\xc9\"\xa1\xc9\x9ap\xefON\xdf.\xd3\xd6\xb9\xe9\x0c\xec\xfb\x9d\xfb\xfa\xe5\xd0\xadpd\xd4w\xdd'\xb8\xf0\xf4\xf5B\xd7\x1f\x0dE\xfa\xae\xe7:\xc7\xe3\xeb\xf7\xe7g\x97gz\xd0\xd1U+jA\xe3s\xd9%\xc8\x02)\xcc\x12\x8e\x99\xdc\xdd\xef_x\xae\x93L\x8bpA\xf4\x86\xe4S\xe0\x05\xa0\xcdS+\x8f\xc2\x12\xa0I\x10#7\x97ix\x07{\xe0dyF\x1c\x1f\xa3R\xecx\x0d;\x17\xee\xa4\xb0,\"\x96\xed\xaf\xe1:\xe4VE#\xc7\xe7\xa4(\x0dP\xe3/\xa3\xbf$Y\x9c\xdfV\x08\xc3\x0b\xf2%\xc9\\\x1e*\xa0H(q\x9d\x1fx\xd1?T\xc2\xec\xb7{\x1c\xbf\xfe\xf0q[|r0?\x1a\xbc\xba\xc2\x95\x14 \xde\xbe\x81bk\xeb\x8d\x07\"<\x8b\x12oe\x92L\x8a+\xc3\x8d\xa4\x00\xcc\xd2\xd5\x0e\xc4\xaecE\xa0\x1eP\xa3\xb6Zi-#\x02\x16\xa2v\xe9.Kq\x8e\xcf\x8f\x17N\x91\xa0\x03t\x1f\x9a\x9f\x85\x93\xd3I\x88n,\xd1\xfe\x04=\x9fka\xd4\xa5\xe3h7\xfb\xff^D\xfa\x17O=\xd7\xf9D\xeeJs`\xdf\xdd\xdd\xfe83\x96\x8e\x17\x82\x86w\xf1\x07w(\xf9\xe0~>5\xd9$\x17\x13\x871\x11\x05\xd9\xfaky]\xce\xc3\x82\xc4\xd7\xd7\x8el\xd4\xfc\x0d\xef\xfb\x1f8\xa2\\\x8e(\xe7#\xfa\xc7\xd7\xbe\xf1\xd8\x10\xab\xa38\xd2\xf7\x9b\xd7\x90~R\xbe\x97 |6\xf5M\x04\x99O\xf3wy\x14\xa6\x84\x9f#\xbe<P|qf9\x92\xda\xf2\x87\xb9oT\xc1\xc1\x1cA}\xf75C\x91\xa8k\x9e\x17:\xa4pL\xfe\xd2\xe6&\x9daX\x8fq\x8e\xc7\xa2\xfc \xa7\xbb\x06\xd2q\x1b\xea\xe5\x06\x99\xe4\xb8\x02d\xe2\xfc\xf1\x8fU\x7f0)\x990dp\xf5P\x00{\xad\x9fC\xca\xc0\xe5\xfc^\x863\xd3\xd8+\x17\x9e\xa5 y;\xcf\x1e1\x92\xca\x03a#\xc3W\xd7\xbb7pJ;0\x1fB#\xfeT0\x1dZ\x97}\xc8x\x0c\x9c\xd8\xa9\x03\x18\x89O\xa7\xab4\xc5\xa0N-\x9f\xaeH\xbat\"p\x80.\x1f\x11\xd5\xfaQ\x83\x8e\x8d\xdd\xbb\xc2W\xf4\xb3W\xf1\x0b>\xe4\x9e'\xb0u\x82~\x07\xd1\xa1\xacsVG]B\xbb\xb2\x02\xcd\"-T\x18;\\\xc34%8be\xe9F\xc2\x12\x19\x1e\x00<f\xcf\x85\xbb/\xff/\xf0\xfc_\xe0\xe9\xa0\x1bv,\xf4\x82T\xb7\xbc\xefjV\x0c8\xc6Or\x1dFEF!u\xf5Ud\xfd%>8\xde5#8773\xd8\x84\xc2\xab\x18\x13F\xc4\xf7\x9dl\xd6\xbd\xf0\xd2\xe2\xea\xf7\xd9\xffx\xb6\xf7y\x0f\xa9\xf4\xe2\xe5C{\xfb\xa8\xa4\xd2\xee\xeeK/\x98\x9a\x899\x93\x07\x17\x13\x9e\xea\x1b\x87\xf9\xbe\x07\x95a6r$V3!='5A\xeeC\"\x03\x84\xa2\x03\xb6\xf6foz\xa25\xdd\xecH\x87\xc6\xcd\x8d~\xcf\xb9\xea\xf5\x80\xf3t\xd74\x03\x18{\xbdw-\x19#b\xcf\x04\n\xcem3X(\x03_\xf2\x18B\x82\xa7!\x0d\xdf\x11\xc6XI\xa0\x13L\x8c\xa5\xf9\xf2Eu\xd4\x9e\x19$a?\x86\xb1\x8cW\x04\n9ju\xcf\xc7=)g\x95\xec]}\xaa\xcb3\x11\xd5J\xa0\xd1*\x11e\x13\xe8\x8eVc\x1d\xbf\x81uy\xfa\xbdY\xd4\xf0\xbdM\xce\xd9\x07\xbe F\xefd\xc8\xbf5W|k\xfc\x9b\x03\x9b\x90\xa1\xbf\xdb8'e\xf6{\na\x14\x91%\x85\x82\xcc\xc8\xe7\x96\xd3[\x01\x11\x02\xa9~\xdb\xa6f[\x14\xa5\xc5\xfd\x9b\xd3x\xc6\xc3\x1el\x07\xdb\x9aH\xc9x\xe2:\xdb\xc1\xb6\x03\x13r\xe5jnu\xaa\xa3\xd6(\x80\xef=\xbe\xe9\xa4\xb8\xe2\xf6\xb8\xb0am\x03z\x8et\xd3\xfcn\xdc3\xe0\x11\xc5\x8d\x8c\xb4\xfd\x90\xec=L(\xb27F\xac\xda2Q\x16\xa2\xad\xd6 \xc9M\xa0\x9f\xefx\xc1\xf4\xa1k\x9b\x07\xfc\xcc\xe7\xec\xa9|\xe1\x81\xa1\xfe\xf1\x15\x83.\xd4\x19\xfe\xa1Gtq\xae\x91\xc4!xAs@\xdd\x1d\xd4\x97'\x90d\x1c\x93\xac0f\x95 c\x0b|\x1c\x06\xd3\xd65I\x1f\xac\xb7\x97DH\x8cf\x84*\xfc0\xef\xb6\xd9\x8d\x07\x0fXz\x7fT\xdf\xa1\xcd\xb5\xfd\xddFs\x90\xdf\xc1\x1fc\xc2\x05iI\x9e\xc19\x89VE\x99\xac\x89\x94\xb8\x92\xcf\x94dq\x92\xcdZ\xc5\xc2\x15\x9d\xe7\x05\xfc\x9c\x84\xd1\x9c\x94i\xb8\x86w9-\x17a\x96\xaf\xe1\x87T\xfe|\xf5\xfa\x8f\xb3E\x98\xa4A\x94/\xfe\xd0\xaa#M\"\x92\x95\x04N\x8e/\xb5oz\xd6\xcb9\xe6\x82w\xa2\x84{r|\xe9\xf5\x949\xcc\x97wE2\x9bSp#\x0f\x9e\xee\xec>\xdbz\xba\xb3\xfb\xca\xd8\xe5\x9e\xaa\xde\x93b\x91\x94\x18\x14,)aN\nrs\x07\xb3\"\xcc(\x89}\x98\x16\x84@>\x05\x06_3\xb6L9\x84\xd9\x1d,IQ\xe6\x19\xe474L\xb2$\x9bA\x08Q\xbe\xbc\x83|\xaaW\xcf\xce\x11(\xf3)\xbd\x0d\x0b\x02a\x16CX\x96y\x94\x84\x94\xc4\x95\x1e/Zf\xc04II .\x9d\x13p.D \xc7\xc36c\x12\xa6\x90d\xed\xca \xc8\x9cp\x9b\xd0y\xbeb(\x9d\x83M\x92g\xbe\xf0s\xcdz(?\xa7\xc9\"\x11\x0d\xb2\xe28\x8b%\xd0\\\xaf{U\x12\x1f\x07\xe5\xc3\"\x8f\x93)\xfbOp\x0e\x96\xab\x9b4)\xe7>\xc4 k\xe9fE\x89\x0f%K\xc4\x05\xf4\xd9(\xb7\xf3\x02J\x92\xa6\xac\x86\x84\x94\xc6\x89\xa9\xfb\x8eE\xf0\n\x80-\x06\x15\xd3\xcbz\x05\xb7\xf3|\xd1\x1cgR\xc2tUdI9'X&\xce\xa1\xcc}\xbd\xfarU\xdd+\xb0\xd2\xd3<M\xf3[6\x0fQ\x9e\xc5\xdc\xfc}4\x000\xc3\x9b|Mp\x1a8\xb8e9M\"\xbe\x8e\xb8\xb2\xcb\x1az\xc4\xa7r\x1e\xa6)\xdc\x10\xe9b<f\xc8(\xd4\x1d\x99~WML\x01\xe8\xfe\"\xcch\x12\xa6\xc0\x10'\xeb\x1b\x839u\xd4A__\x7f\x1a\xc3\xc5\xd9\xdb\xcb_\x0e\xce\xc7p|\x01\xef\xcf\xcf~>>\x1a\x1f\x81sp\x01\xc7\x17\x8e\x0f\xbf\x1c_\xfet\xf6\xe1\x12~98??8\xbd\xfc\x15\xce\xde\xc2\xc1\xe9\xaf\xf0\xe7\xe3\xd3#\x1f\xc6\x7fy\x7f>\xbe\xb8\x80\xb3s\xbd\xe6\xe3\x93\xf7\xef\x8e\xc7G>\x1c\x9f\x1e\xbe\xfbpt|\xfa'\xf8\xf1\xc3%\x9c\x9e]\xc2\xbb\xe3\x93\xe3\xcb\xf1\x11\\\x9ea\xfb\xa2\xe6\xe3\xf1\x05\xab\xfbd|~\xf8\xd3\xc1\xe9\xe5\xc1\x8f\xc7\xef\x8e/\x7f\xf5\xe1\xed\xf1\xe5\xe9\xf8\xe2B\xaf\xff\xed\xd99\x1c\xc0\xfb\x83\xf3\xcb\xe3\xc3\x0f\xef\x0e\xce\xe1\xfd\x87\xf3\xf7g\x17c88=\x82\xd3\xb3\xd3\xe3\xd3\xb7\xe7\xc7\xa7\x7f\x1a\x9f\x8cO/\x038>\x85\xd33\x18\xff<>\xbd\x84\x8b\x9f\x0e\xde\xbd\xc3\x96\x0f>\\\xfetvn\xea\xfd\xe1\xd9\xfb_\xcf\x8f\xff\xf4\xd3%\xfct\xf6\xeeh|~\x01?\x8e\xe1\xdd\xf1\xc1\x8f\xef\xc6\xbc\xe5\xd3_\xe1\xf0\xdd\xc1\xf1\x89\x0fG\x07'\x07\x7fb}?\x87\xb3\xcb\x9f\xc6\xe7\x98M\xf4\xfd\x97\x9f\xc6,\xa957\xa7pp\n\x07\x87\x97\xc7g\xa7l\xcc\x87g\xa7\x97\xe7\x07\x87\x97>\\\x9e\x9d_V5\xfdr|1\xf6\xe1\xe0\xfc\xf8\x82\xcd\xde\xdb\xf3\xb3\x13\x1f\xd8R\x9c\xbdeY\x8eO\xdb\x9d>=\x1d\xf3J\xd9\xaa5\x17\xf7\xec\x1c\xdf?\\\x8c\xeb\x9e\x1e\x8d\x0f\xde\x1d\x9f\xfe\xe9\x82uH\xcd\xacC\xcdv\xe3]\x9e%`!\xf7\xa5\xf4\x02\x92\x8c\xc1g\xc4\xe3\xfc\x8a\xf3\xb5J9\x12\x97$\x8d\xc4s2\x1b\x7fn:\xf1S\xe2oAS\xc7\xdd\xd88\xea\x874Z\xb6q\x10R&AE\x04\xaa}\xf9\xab\x0e\xca\x00#dI\xa8\x12\xa6\xc1XU\xa5x\xc26<\x1a\xd0\x19\xbc\x92\xf7w\x95M\x89\xa7\xb2U,\xc1E%\xa4\xcbdA\x1a\xd2.k%|\n\x1b\xd5\xf0$\xa3ZVK\x17\xebCF>/I\xc4N\x992\xa1+\xe1\x83e\xd0\x8a\xe4VI\x97\x14\xd3\\_#o|}\xedT\xf7PUh\x99\x96\xb0\xab9ak\xe1\x94\xcbH%\xda\x00\xc1\x10\xe0h\x17\xad\xccd\xd4\xfa:\xd0G\x1d g\xe7\xaa\xd3\x96\xc6R\xefS\xaf%\xab\x9c\xec\x18\xae\x14\xe5M,7\x9e\xec\xce+*\xe4jz\xb5N\x1aZ$\xf3\xeb\xf3\xaa\xbc\x0f\xbb\x06\x9d=k\x14M\xc3\x04\xa0\xf9]%\xe0\xc4\xb7\xa6~\xe0\nidA\xb2~\"w\xa5\xbb24iu\xa1\x0f\nc\x84\x12\x9f\x90\xfb\xa2G\xe1I\xee\xa2gz\x1e\x19$T\xc1\xc2\xd0S\xd2\xe8\xa9\x8c\x9c\xeb\x86\x93\xb2\xba\xf54h6\xaay*\x90%f\xeb\x06\xf5Y\x0b\xa5\xea\xc9\xd0x\x8cm\x03\ntN\xd5\xdd\n\xa8\x8b\xa2\x85G\xaf\xee\x83\xd9~i\x8e\x0c\xa35\xe5\xe2\xba\x97\x8bw\xb3F\xa2\x90\xf9\x8a\xb7\x04-\xd6\xd5\x94\xb6\xf7-\xf5\xf9\xea\xf9\x90[s|E\xdd\x96\x11?\x06\x9a\x13\\\x88O\x86\xd5\xa3\x8d\xd5\xa3m8\xa3ze\xbc\xd7\xbc\xc2f:\x0f,l\xec\xa0!d%\x1bMhA1\xcd\x80\x94\xcf=\x11Oq\x10\xbf|\x1f\xa5K\x9b\x00\xbb\xbd\xf4D\x89\x92\xc4\xd6\xd6b\x94\x88\xcc\xba\x01u\xb4\xd4{qZ'W(\x11n\xe7\xcf\xb8>\xba\x1et\x9a=\xea\x8e\xa7\x86\x1do\x0d7,Q6\x9d\xe4\x96\xbdc\x0c\xb9\x94\x08\xffqO\x9e\x98\xa6\x85\xf1\xf7[\xbb\\\xc6W[\x08M\xf2+6\xbcb\x92_a<\xf7\xc3\xa4\x88ViX\\90\x92\xa9\x04\xb3\xf9\x90 \x97\x0e;\x08P\xe2\xa3!\x00\xaa)\n\xac!\xf6#\xe56ih\x9f(\xcc\xd3D\xda\xd0\xf2\x0bR\x96\xe1LV!\xdf\xf6\xea/C+*i\x18}\x12\xd5\xf0\xdf{2\xd5P\x85\x14\xc57w\x04\x03\xf0 \x06\x922\xde\x06\xe1m\xca\xe4\xad\xf8\xc2-?\x84\x1f_\xe0~\xd5\xf2\xecn\x91\xafJ\xc7\x83Mpp\xfe\x1f\xacP\xf8\xfd+\xf35\xe3\x0bc\xc8#\x96n\xf2|\xcc\xd2\xf5k\x80\x95H\x7f\xed\x99\xcc'K\xbb\xd8\xc9\xa4\x10\x8d\xda8J\x84\xbb\x1d\xae\xf0j\xd0\x9d\xe2zS\xdc\x19? \x0b\xd7{\x03\x9b\x9b\x14~\x80\xcc\xa8S,g\xa2\x1do \xa4\xec\xbc$\xd4-0\xfeW1\xd9\xbd\xb2\xe9\xed\xd6\xbf\x14\xa5'\xde\x07\x86\xac\xfdF\xb2P\x8f\xc2`\x1ceS\x15\x9em\x94f\xe2<d\xf8-l&\x96\x98s\xe5\xdf\xdf/m\xbd\xf6/\x9eyn\xe6>{\xe9\xf9\xe0\x9c\x84K\x9b\x10x\x90V\xbc\"Un\x85\xd0\x13\x10e\xf1\xea\xf8\xc2\"\xd2|\xd1\x12\x81\n\x88\xda\xd5E\xf4\xa5H\x7fi\x84\xb4\xd4\x0ei\xc2< \x0ei\xc8\xad\x140\x1a\x99\xd1\xca\xaaL\xfe\xce\xf1\x05\xfbaX\xf4\xd4\xb0\xe8\xb9\xdfH\xae\x16=i\xa6\xf3E\x0f\x9b\x89|\xd1W\xcdD\xbe\xe8es\xd1S\xe3\xf2\xa8C\x1e\xacN\xdb\xf0\x9b\xb2\xb5\xcb\x1d\xa7\xd0\xca\x9c\x98\xeb\xdcK\x1f$\x9b\x9b\x19\xfc\x00\xc5\x1b\x0f\xc8$\x87M\xc0\xf81\xed\xb05\x92o\xd3\xe6l08\xbdx\xaa#\x1c\xa1\xf2\xfcZ\x07\x1bcL6\xa3\xaaS\x0b\xda\xba\x84\xc4m\x18\x0c\xd5\xe0\x8a]\xec\xb9\x8a\xb1\x90,@B\\Q\x1e(\xdc\x90\x1b\xb6[E\xc7Z\x8dj\x10\xb8V\xbe\xaf\xba\x03\x1dF\x83\x9a\xf7\xf4\xea\xbe\x8b`>%\x9e\xebkcZ\x83\xf6t'\x9a\x97\x8c\xf6\x14'\x03\x16\x0eq\xd37\xaa\xb6\x08u\xc7A\xab\x99\xb3\xaf<\xe8L\x15E\x15\xd56\xb8\x87\x92\x8dU;\xbd\xd9\x9ey)\x06!\xed\x0e\x1b\xb1z\x95\x9e\xe9\xab\x015\xf2m!e\x90\xbaB\x16\x8e\x08\xffl\xd0 \xcbcry\xb7D\xd2\xc9d\xfe\x88\xf7Af:\x92;\xa4\xc7zH\xa3\x1e\x83\xe9%\xdfW8\xbb\xd5\xd4\xec\xf1\xab&\x19t^\xb0&&\xbf\xe0l\x1e\xdd\x15\xec\xc3*HJ-7\xb2\xd4\x9a\xde{{\xfeAgPv\x9f=\xf7\xaa\xcb\xd5!z7\xafwv^\xee\xbe~\xfd\xf4\xfb\xe7/\x9f\xef\xbc~\xbd\xfbP6\xc5\xe4\xbf\x1d\xe7\xf1\x0f\x8c(\xc7_\xff\x81\xbe\xf1\xb93\x02\x02?\xec)\xa2\xb0\xfek\xb1{\xf5\xa6\x1b1I\xdc\xde\xba\xd4\xed\xe9\xceC\x80\xfb\xe9K\x9d\xc0\x04\x01\xdd\xdf\x08\xc1l\x13\xe4\x8f\x00\xc1\xd5NH\x1a\x10\x8cU\xa3\xb9cDJ\x83\xc5\x9env\xd0\xca\x00\x9d\xf7\xe0 \xe5]u\xeb\x05\xf9\xdb*)H\xe3\xc5uV4I\x1d/`\x03\xb3xb\x01U\xae\xfc\xe5\x8b\xdc\x8e7 \xdeD6^du\xc6zz\x02[}u=\xfbf\\=`3v(W\x99\xaf\xd6[FT\x0c\x04\xb6?\x06_>N\xdc\xfd\xd1\xe4\xffL>^]}\xf7\xc5\x9d8\xbf\xbf\xf2\xdc\xfd\x91\xbb\xbf\xf1q\xd7\x9b\xfc\x9f\x8f\x1f\xaf\xbe|\xfc\x18x\xdf\xed\x7f\xdc\xf5>\xea\x81Yx\x00\x98\x8f\xb7\xdf\xfd{oH\x07\x8b!S\xc3\x8eI\x17\x8bV\x92t\x01\x98F\"k\xc3\xad\xb0\xc7\xc6\x1ed\x08\xd4%R1JB\x158B\xa64\xdc\x0em\xa0F .?\x8f\x05\xc2\xa3\xc8n$\xea\x9b,A\xf9\xf6H\xa4\xd3<\xf7^\x86\x0e\xf7BD\xf7\xa4\x1f\xcd\xf2\"A\x99pm\xd3\xcaE\x17\xf5\xc1\xb9\xbe&\xe5I\x1e\xafR\xe2\xe8\x1a B\x1bAU\x08AC\x9b\x05Y\xe4\xc9\xdfI|\x11.\x96)y[\xe4\x8b\x8bhN\x16\xa1\x90*\xf0\x8f\x87\xa8,\xf8\x97\x93w\xe3\xcf\x98\x8d\xb3\x10\xf8\xf3/\x8bT+\x94dSR(\xefe\xbbfq\x00\x824\x81i\xd4\xac(z(\xec\x98\x89\x1b\x0b\xdd\xcc}\xf1\xfd\x0b\xcf\xb0\x0f\xf0\xd3\x8b\xd7\x9e\x91\x97\n\xed\xeb\x83\xa0\x10\xd4\xf3(T\xf5\xdaXKFF\xd0\xddZ\xfd\xae\xfdk-|\x19\xb6+\xe1\xa2\x99\xe1qm\xa5,\xa7\x95\xc7\x10F\x8bg\xbd&\x8b0I\xef\xd1\xc2\xaa$\xc5\x1f _\x8c \xca\x17\x83\xda\x12\xfdb,(\xd9\xa2\xc9\x828\xc3[t\xe5\xf5\x95\x17\xd0\xfc\xf8\xe2L\xa8\x84\x19\xf8\x02\x83<\x05\xd1\xc4\xf0\xb6\x06\xc5u\xe3\x95^O\xd3<\xa4\x8f\\u\x92Q2{\xf4\x0e\x0bT\xd8G\xff\x83\xb2\xca*\xf6\x94\xb88\x10 \x8dW\xad\xf2\xa5\xdd~\x13\xdc\xdb\xbcLw'\xa4\xcc\x82mt\x17\x9d\x0frr%\x99\xdeyF\xff3 \xc4f4h3a\xf2AO6\xc14/\x16\xa1\x812\x02\x81\x12V\x13\xd4O\xbcv`\x13\xb8\xa9\xcc\xca\x18\xd5S\xc2%\xf6.)\xdf\xae\xb2\xc8s\x13\xc6c%\\O\xda\xf9\x90}\xca\xf2\xdb\x0c\xb5 \x85K\x1b\xec]\xd7\xd4\xa46\\Xa%\xcb\x0d\x93<2[7\x89\x7f\x00\xa4\xa3\x15U\xd6\xfa\x8ep\xf7\n\xf6\x9b\xaf\xa3\x96)\xa8|r\xd3RP\xcbR \x99\xd9\xb1\x14<t\x91\xc0\x1f\xe6,\xe8\xd6U2\xc6 1\x10\x93 \xe6+\x0f\xc2\x98k\xd2\x84\xe9\xfb\x9e\xfc\x11\x8f\x99D\xc9\xc2\x92\x01\x15\x1b\x03\xa12sN\xc2\xf8,K\xef\xccY\x97j\xd6_\x8a\x84\x12\x96\xd7|\xc1\xabN\xbf\xd7\x84\x9d\x98\x90ez\xc7\xf0\xd9\xf2\xcf\xe4\xcesC\x1f\x9c\x7f\xff\xf7\x82L\x1d\xff\x1e[\xb5-\xbe\x17\x87\x94\xbc\xd2p\xfe\xcd\xf1\x90\xabj\xefU\x8b\x16\xc0\x86\xe1\x0eC~[y\x0d~\xdaLcw\xc4\xcf\x03\xd9F$g\xc3N\xa6cCaQ\x84w\xedS\x06Z\xb8\x06D\xcd\n\x83\xb3\x07\x89m\xfa\xd8\xb6\x89M\x90\xbd\xb2@6\x08\x8f\xdf\xa6;/P\xa5\x8akF)\xc6\x1e\xc4\x935F\x9bc\xff\x83\x98,\x0b\x12\xa1\xca\xdd\x97/\xcdO\x85\x805\xa4K\xa7\xad\xcf\xb7\x12\xbe\xf0\xfb\x12\xb5T\xe7,\xc3\x1e\x10\x97\xe5`4\xa1E\x9b\x04'\x9a\x1b\xaf\xa4\x1e\xcc\xb5\xed\xb2\xdb1\x9a\xca\x8bHj\x06\x05PG\xbc0\xcdc\xea\xf90\xc3N.|t\xf5z\xc7\x9d\x9f\xdc\xc1\x0f\xf0\xfc\x0d\xdcmnz0\x9f8\xcd.1\\y\xc7\x8663wK\x00\xfd\xbc\x0d\xca64-\xe0\xa7\x12\xb34\xaf2\xa3 \xcc\xee\xce\xa6\x0cy\x8b\x9f\xc1\"\\\xf6x,\x84\x86L\xc0\xd7=\xb3\x02\xee\xac\x96\xea@\x14\xe4\x19\x91M\xe1\xcfGljB\xdc\x88}ex\x9c\x06$[-P I\x9e\xd8\xea\xef\x91X\xaa\x8c\x1d\x87\x18F\x9cu\xcfsy1o\xb2s\x857vIJ\x1c\x1eG\x13\xf6\xa1\xe4w\xff\x1c\x975z\xa0\x9d\x19\x0c\xcb\xba:\x89?H\xecH\x82\x92\xe7\x7f\xf2\x84\xcb\x8fe\x02\x1a\xe0\xd7\xa7\x01\xff\x8e'\x8c\x82\x86X&\xad_V\x0ed\xd0\x81\xca\xaf\x01\xfeigjr\x9f3\x95\xcb\x92\xedgjC\x92\xdcy`&\xf7<0\x93\xbe\x033\xe9>\xca\x97\"P\xe1\x8035V\xb3Vg\xaa9\xef\x1c[\x16\x00m\xce\xb26\x844\x93\xcf\xa2\xe3\xdb\x0c\xc9\xb0\xcf\x0bC\xc0f\xf60\x1c6\xc3;j\xf3\xf7\x1b\xfc\xbe,\xc841x\xb4b\xcfuU\x03F\xab5g\xba\xe5S\x9b\xad\x16\xe6\xef\xe3\x8aG\xb6\x1c\xe0a\xc7\x01\xceN\x90\xd4C\xa8\xfa\x97\x9c\xe2a\xdf)\xee\xb2Y\xbd\xc3K\xff,\xa7\xe1\x8cM\x8e\xc3\xcd\xa5\xdc\x1b\xd8\x87\x1bF\x96\x8f\xd0>\x16u\x01\xee|\xb8\xe6\xde\xd2\x17\x13\xf6\xdd\xf9\xbcH\xb3r\xc4\xce\x8e\x1b\x96 _\xd1_\xc1\xb5\x85\xc0Q\x0f\x05\xc48\x91\x0d\xf9\xb2\xdc\x11\x83\x07\xd8\x03\xfe\xff\xcb\x17\x98qK\x10\x9f\xa7HU\x0d\xe5\x85\xe5\xe1P\x023\x11\xa9>\xae\x88\xbf\xf5$\x93nn\x9b'\x04\x9e\x0d\xd3\x81ns\xe5\x13\xc9\x1d\xc8\xfd\xb6\xb2\xca\x85\xdf^v\"\xe4V\x9d\xa6\xd6\xf94g\xad\xcf\xef\xdd\xba<V\xee\xdd\xba\x9c\x06\x91\xf3\xca\x87\x05\xa2\xd6\xaa\n{\xab\xd7!\xa5\xc5\x08\x16\x96\xca}X\x9b\xa1\x91a\xf6\xcf\x1d\nxb\x81\x0c\xab\xe2~\xe3\xb2|\x1e4+>|\xb6\xac\x8b\xfb\x8d\x0bs\xaf\xf6E\xaeV\xa6\x01\xe4\xb6U;\x91M\xfd\x85\x99\xdc\xee!\xa7\x0f\x199\xad\xec\x19\xb4$\x95\x1b\xf0\xc2N\x9d\xb2\xbe]\xe8q\n\x0e9\xde\xd8\xb8\x98\x1c*\x84\xf7\x97/\xb0T?\xd4$7#\xc6-\xd3\xd5h\x87\x95\xe2H\xa2\xfa){(\xde\x03\x06\xb3h\xa9\xd2\xb5l\xf2a\x03\xff\xd4R\xbc\xc3\xba\x90Jc\x9d\xad\xde&;Wv\x96E}\x0ed\xff:\x0fm\xfd9\x93\xa5\x04D\xd91\xbd|\x16\x93j\xd4\x12\x1d\x1e^UG\x16\x92M\x07l\x04\x07\xd04\xb5\x9dN\x0e\x91\xef\xc1\xff\xcdOg,\xfd\x8c%~b\x7fJ\x9c\x8b\xee\x85\xf9\xdaw\x80\xc9\xa7\xd9\xd9=hw\xbe\xe1\xf3H\x9dA\x8d\x18\x94\x03p\x1byx\xba\x05\xce\xd5\x87\xad\xfa{d\x99.\x86\x15h\x82\xc7{Tw\xe5;\x05\xd1\xa8pa\xf0^\xa2[\x8e\x04\xde\xf7L[\x17j\x94\xcc\xa4h\xa8\x0fQ7\xa9\xcd\x118\x07\xd9\x1d\x9d\xa3\x0dT\x98\xc1\x0dAc7\x0bU\x80\xe1Q\x86\x9e\x08zC\xa5\x8doeH\xee\x11\xcf\x99\x018R\xcc\xdc\xb8 \xffSv\xd4W,\x15&\xcd\xd9\xf9\xdbB\xff\xb7lQo9WV\xa2]\xb8Xa\xc6\xe1M\xcc}\xb7\xf6\xfb\xab\x0fcV\xd1X\xef\xfaW\xe3=\xc8\xd4x\x89'\x05\x8e\x11\xff\xda\x84R\x86\x0d\xb3\x86\x9c+\x97x\xc3s3\x93\x19lL\xa24\x94\x81{M~\x0b\x92,\xc6\xc0*\xceG\xaa\x85c\xd3\xaf\xe1\x00\xcda;.\xa5X\x7f\x92\xba?\xd3\xbe\x1b.-\x7f\xda\xaf&Q\xcd][t\xcf\xd5\xf0\xc8\x9aq\x87\x95V\x9ex\x15\x87\x05O[\x84\x9f\xabxrU\xc6Fb\x85\x1b\x95 hw\xc1`\xd7$\x85\"2OCl\xd8YY~?\x8ds\xd5\xd8\xa0\xbb\xe2\xc4Z\xb1\xeaz\xc5\xb0\xd2\x0dGY>d\x01\x06W\x19/\x12\xca\xdd\xdcc\x9a\x12\xac\xa3\x9ayy\xbb\xd8\xf8\xaaMz\x9dG\xac\xfeI\xf3\xfb\xaeV\xbe$z\x0e\xbb\xd4\x03\xa9&\xe5\x06\x9b*\xc6(D\x06\xa8\x10\xbe\xebL\x1e\x152X\xacJ\xca\xd0g\x08<\x1e\xf2\x9a\x88[)\x8b\x1b\x05#\\\x11\x0eo\xf5\xcc6GD\x16 \xed\xb7\x9f\xe7\xfe\x8f|X\xf9P\xfa`\xf0\xc4\xac\x83\xb9\xabm\x03\x0c!'\"\xe5\n+\x1c$\xc4\xd4l\x01~F\x05'\xb7\x9d\xce\xd5\xd2\xda\xe9\xd2\xd0\xceDo\xb1\x9e\xa1\x8b#U^\xe3\xa9\xc6oc^5\x9f|\x03\xcd\xc3F\x1f eZ\xbe.\xbf\xff\x90E\xe1j6\xa7>\xac\xb2rI\xa2d\x9a\x90\xb8\x1a\x1bv-\x00\xf7\xf7\xb0\x89\x0e\xa2\x1d\xcf\xe4.\x84\xb7\x17\x05\"j5\xa7\xde\xa3&\xdak\xcdq\x82^\xa2\xd4\x19\x98\x90+\xbb\x92\x05\xd7\xc2\xc8<\x0f\xca\xdb\x04UXt9\x97i\xca\xa2\xb0$\xb0k\x8e\xf4/\\\xb0\xa2[t3\xd5\x82>\xa4\xdb\x9f\xb0\xd2\xa7\xbd\x95\xfa\xcdu\xba\x7f\x13\xcf\xee\xd9\x84\xfa\xf6\xf4\x9e\x0d\xca\x9b\x7fc\x99UE\xd4\xf7[\xe1\xb1\xfd\x18.\x97\xe9\x9d\xe8\xe0J\xd7{\xad\x84\xf4\xb9k\n\\\x83,\xd4\xfd\x1a\xc4C/\xc5\xeb-n\xda\xe2y\x95^t\xc9C4r\xc7\xe5Pnnz\x90N\xca+\xad\x8bF\xfc\xa3j\x954\xb1L\x18\xc7J\xcc\xd0N\xe5!\xb6\xe3\xc26$oX\xfc\xce\xa4\xb2\xda\x1aYV\xa7^\x17\x96\xecAU\x0d<\x93\x91[5\x02)~cx\xd3u\x94/\x0e\xfa\xff(\\\x1a\xc8.y(\x90\xaf:8\x02\xaaU<!W\xb0\xaf!;\xb6\xa5Y\xb9f\x924\xb6b\x95h\x15\xec\xc1DK\xf2\x81^\x193R\xdf\xd4\x98\x8eVYs\xb7a\x91\x89\xf8J!7\x9ck\x1d-\xe8(\xcexl\x8e\x0c\x07\x11\xd75F\x9f\xacUt\x83\xba\xb9J\xec\xce\xef\x05,\xbd\xe1\xce\xf5\xa3<+\xf3\x94p\xe4\xef:n\x96\xc7\xc4\x03\x96\x05uh\x96yY&7)\x81\x06\x99\xc0\x88\xbf\xe2\x0eR\x12~\x82\x98P4W\x0e\xe0?bH\xab^\x87q\xcc\xd2>\x94\x04\x08/\xa5\x9f\xf6\xae\x074\x87$\x8b\n\xc2\x90\x0d\xfa\xb7\x08\x9c\xd6\x92J\xe4\xea\x9b\xe9/\xd9\x7fZ\x84\x11\x1e\x82\x8d\x04\x0cL\xd7u^\xe7h<d\xdeZz\xce\xa87\xf6\xca#\xed,\xc9+\xb0#\xa8\xf1A\xa1+M\x87\x0d\xce\\\x811\xda\xe5\x18X7s\xf4X\xcc\xb6f&\x16\x9d6\xd0O\x85\xcdt\x13\x01\xd3v\xcf\xeb\x1dX\x87\xbc\xe2\xd3\x91\xf7\xccu\xb3g}s).\x94\x12N(\xfdS0\x18V\xa3\xe3/}\xf3z*\xa2k\x97G\xdco\"$\xaa\x13@\xc4\xf1`+*\x0dn\x0b7S\xd0\x1a\x06\\\xabg\x95e\xaa\x9cd\xb7q\x91\x8aI\xb5\x19m\"\xd3\xe6G\x8eOu\xc6\xb3y\x16\x1a@\xaa:\x0d\xc37\xb0\xda\xdab\x18\xc7\x10-\x10$\x0f\x8bqI\xe5(\xd9[=.6\xcaF\x82\x18h\xc7U \xec\xe9\x0b\xaf>\xe6\x00\x1b`\x15\xb9&<\xfa\x8du5\xd9\xc3\x03\x88d\x12\x83\xee\x83[\xfd\xdec\x8c\x8dyU\xd0\x08[F\xd8J8M\xf0\xad\xeb\xd4\xbf\x13\xfb\xb7\xdaA\x9a\x0e\xe3\xad\xd6F\x07\x81\xad\xed\xd1\xb3\x156:\xc6\\\x15\xe5\x9ci\xeb\x8ax_g\xf4\xd1\x87\x98~\xe6>y\xd2\xb9/\xda]2\xb7f\x05t\x8a\x0e\xc8\x1a#\xd6\x97G8\x02\x90K\xd8\x9eh\xa3\x0d\xb7J+\x19\x8a\xe8\x8dh\xf0#cC\xaa\x0b\x0eF\x9e\xa6\xb0\xf04\x96\x93!\xb3\xa1\x03\x83\xc6\x04N\xd0\x9bjo\xbc\xb1W:\xa9\xf6\xcc\x16\xb4\xf8\x0e1\x13]\xcbh\x03\xeat\x10,\x9b\xc8\xd26\x8d\xc4\xdd\xf1\xea\xdbx\xbfE\xfc\x19(?I\xe3\xc3H\x8b\x16e\xea\xeba\xbe\xca\xba\x05\x02:\xbboS\xae\xa0\xed\x85m\xc3YRy\x94\x14\xd3`q\xa0R\x87+\x96\x16\x9c\xfd\xf8F\xe3F\xec#4\x1c\xe6\x95\xbaJ\xa3T\xbfI\x80n\x0cD5\x0f4\x99\xfbl\xe7{\xcf\x0b.hA\xc2\x85\xa0H\x82s\x12\xc6\"\x02\x1b\xbe\xffR$T\xbcg\xee\xee\xeb\xefQ\x80y\xb4Z\xa6\xe437\x80\xe3)\x97E\x98\x95\xd3\xbcX\xf0\x8aww0\xf5}X\x96\x97\xf3\"_\xcd\xe6<\xf3\x8b\xe7\x83LMz\x1d\x01\xf28_&T,\xdc9>\xdf\xf1l\xf4\x9fA\xd7\x1e481II\x12\xc6|\xa1|\x84\x07\xaa\xe0\xa7PF\x8b\xbbf\xd24\xc9\x92f\xc0E\xdb9\xbd\xd19\x07\xfa#-\x0f\x08o\xd4~\xb6\x93F\xaf\xec\xf9\x04R*\x8c\xe6\xfb\xea\xb3\x16^d\nd\xe0o\xc2\xc8 \x82P\x1f\x1a,\xb9\x93\xc5\xe8fk\x8b\xf1y\x18v\x1d+`3h-k\xbe\x07\x02\xac1\xca\x8bO$>'\x7f[\x91\x92\x96o\x0b\xf4\xe9mJ\x96\x8bDP/\xcdPlO\xd3\xdb\x92\xcfW\xee\x91\xa5\xf5\xedk\xc7\xeeV\xb7\xd3]\x9b\x0fYq\x11\xc6\x06\x0dn\x8a\xfc\xb6\xe4\xd4\xcb\xc4Y\xef\x04\xbb;\x8e\x0f\xec\xc7\xeb\xc0\xb9\xaa]\x81\x04kR\x94I^y\xf9\xf0\xe1{\x8fk\xd2\n{\xda\x04\x87w\x99\xe8KpW\xed\xd3\x0b\x1a\xa2-\xfc\xac\xdd\x9dT\xd8\xad\xbc\xd0\x8e\x954H\xb29)\x12\x81\x15^\xed\x1aX\xaa\xc8h-\x02(|\x12z\xa6#\xdc\xe0\xcf\x06\x99IL\x05\xfe\xd1=\x0e\x80\xd4uvw\x9f\xefJG6\xed,\\u\xebC\x92\xd1W(i\x025`\x8d\xd7R1e\x03\x98\xfb\xa8\xa1\xc5\x1a}iE\x0d\x0b,l\xf983bg\x10\"6\xee\x82\x8a\xa3C\x0420\x84Q\x05e\x1fSU\xf6k \xd5\x11\x99\xf0\x8b\x8e\x93<fUnl\x10%\xc1\x17\x81\xe5\xdb\xf9\xf4\x14\xc6\x98m\xf0\x10D\x0cB\xce\xaa/\x06bK\xeeu\x12\xcc\x93\xd9\xfc\x97\x90\x92\xe2$,>\xd9\x15\xfc\xeaz\x7f\xea/\x10\x19z\xb7\x0f\xbb/`\x04\xbb/\x9e\xbdzn\x99\x85FW\xd0\xaa\xf4\xcb\x17A\x0c\xe7\xb0\x0f9\x8c\xc4\\\xa4\xf5\x87\x94Q$)\x8c \xf2\xcd\x95\xd4\xb1~\xdc\xf6w\xafF\xe6az\x18\xa62,\xa7/\x0f\x02\x12\x1f\x15a\x92\xa9\x89\x1c\xe7i)\xcdr\xfclh\xa6\xc5\xa4\xa4E~'\x12\xcd+\x82\xf1\xf99\x7fE\x82\x98Dy,\xa2\xc9\xd8N\xaaF\x1eVxZ\xb5\x86B\xb2q\x16\xe5\xa2\xb7\xa4\x95\xf6\xe5\x0b8+:}%\xe5I*\x13\x87 l\xc5\xb5\xa1rD\xab\xe4)\xef\xb2HJL\xd8\xfb\x0dn\xe5\xf7\xdcZW+\x9cg\xa8\xff\xd2\xab\xb8\x0b\xedC\xb3\xef\xc4\xe4A\xdc\xaeoU\xec\xd8\xad\x84RpY\xf4]\x16u\xe7\xe3\x81\xe0\xb0\xe3\xd1\x8d\xfd@d\x14c\xff\xa8\xe4C\xb4\xb9%\xb2\x81\x8a\xc6 \x15\x7f \xf7\x1eII\xe6+\xbf\xd9\"X\x1b\xf9\x8a\x871\xf5\x0c\xc4\x87\x99\xa6\xd2\x9f\xad-\xe5x\xf71r\x80[\x9fJn\xeeC\xe1\xf9\xca9\xe5^\x08\xa6\xdco\xad\x03\x97\x9br\xb9\xa8\x14\xa9\x12\xc1\xd8\xf3+,V\x19\xe3\x15\xdc\xdc-\x1e\\\x81\x0f\x17\x1cT\xecZ(\xe89\x8aO\x00es\xd0A\\\xf5+\xf8\xe0\xad\x01\xec\xc1\xd8\xd5YD\xfd \xf1\xcc\x90{\x07\x7f\xb7\xb6 C\xde2\xb9\xa2dX\xea-gB}\x8cfZ\xba\xd78\xcd\xfcj4gsv\xed*\xef\xf6\x91\x1b\xbfXi!\x05\x01\xa8@Y'\n\xf8kl\xfa\xba\xdb\x8d\xfciX\xd2\x1f\xbb2T`\xa6\xd4\x88\x8a\xcem$\xaa\x03\xc2\xae\xb9\x03\x92\xdf\xdai`-\x8d<\xcc\xc8-\x84\xfcf\xb11\x016\xba\xe0\xce\xbc\xad\xb9\xe6s\x930\xd8p\xe7\xfc\x12\xec\x8ew\x00\x8d\xbe\xd9\x8f\x06-\xe05\x1c\xa0\xdeY|\x9f2n\xf6V#\xfaX~N\xa6(\xe1\xa2ok\x0e\x0e7\x08\x9e\x94f}\x0c\xbe\x86\xca\xc5\x87\xc4\xcb\xe2\x8b\xed\"A|^\xeb%\xd7u\xd1\xb5\xbd\xac8\x01\x95\xc22e\xaf\xfej/\x8eg\xb4R\x98\xbf\xef\xc9/\x9e\xe7\xc3T\xb9-\x1e\xb4\xa67M\xa4\xc8E\xe9\xc6k\x03\x15\xec\x19\xfaP\xf6F(_\x05>\xc7\xcb\x03\xe5\\\xc4\xa8+r\xa6\x18\xe6\xa4\xf2$\xe4a\x87\xf9\x17\x97\xb7^\x7fSk\xd9\x1d4\x9ake4\xa6Ad\xd0\x17\xf0Q>\"\x06\xa3<\x83\x9e<\x01\xaa\x10C\xb8\x06-\xe2Hb\xe4\x98\xa59\x06,\xfc\xd5\x15\x07\x84\xc68\x16n\x8d\xbb\x07\x8d\xf3\xd6\xdawj\xa4?\x0c\xb6\x0c\xeb\xca\xb1\xb2\x86:\xcc\xb2\xa0j\xf9PD\xcfo#\xd8\xc9g\x9b\xbf\x8a\xf87b&;\xc1\x91\x8b\xcd\xcd5\xf4\x8a\x0e\x83AtZi@l\xe6\x93(\xa9e\x05\xe6\x0c\x95R\xf4\x8a\xa3\xcd\x92\xcf\x1b:\xfd\xcb\xf1\xc6\x82k=\xa1w \xbc'\xc3\x1c\xbb2\xd0'\xce\x86\x0f+\xd8\xdc3\xc9\xd3\xd8\x93\x07a\x9a\xf2\x83\xa0\xe4^\xd8\xe4\xee\xe3;\xa6\xf2\x92\xe6\x83\xe30\xd2\x82\x1f\x00Mx\xd9\xdc\xc4\xac\x1dG\n'I\x18\xb9b\x11\x0b$\xa2\xaf\x89*\xe7\xf1\xecb\x04qN`?l\xe7L\x1b\xd6\xbb(\x08)&\xee\x94\xc8T\x9c|\x10\xcdW\x99\x85\xd1\x92\x0f\xea\x0b\x05DP\xf6\xddy\xb99r\xbf\x88\x87\xc1}\xb5B\xbb\x88\x99\x1a\xdc\x1c\x8c \xad\x16-\xf5\x19\x036\xd5\xc0\xc1<al\xcfW\x08\xd3\xbb\xd7\x1d\x15\xa0\x97\x04\xe1\x97W\"\";4\xf4Iy@A\x19\x8d\xb2\xbe\x05\x93\x0c\xc3\xc3\xe3\x1e{DR9\x04\x12:\x88\n\x9e\xad}F\xb7\xfa\xc5\xbd(Ud\x11\x7f\x15\xd38\xa8_\x9f\xadx\x93\x88\xe3\xb4fa\xac2J\x0dy\xe3\"\xe8\xc4x\xc67m\x93\x86S\x88\xf6\xea\x8bc\xc1\xfc\xec\xf9:\xec0\xb8\xb0\x0eJ\xe2\xf8q\xd7u\x13\x07\xa2\x81\xdcfsL\x8c\xa6kH\x0e\x18Z\xb4\x10/\x82ZA\xac\xa4!3M\xf6\xb0\xd3\xe0\xaa>\x0b\xae\n\xb9\xa3\x81S\xdau\xf4\xca\x83\xbd\xa6\xb9\xf9\x1e\xb2\xd4ZW\xa9\x87\x0bhn\xa4Z\xb4\xc8H^\x86\x06fM\x07\x9d\xc2\xa7\\\x8f\xb4\xbc:\x85*\xf1\x96\xb6\x07xx\xf0\xc9\xd5\x1b o<6\x0c\xb4=\x92\xa28\x9c6\xebJk\xe1\xe9\x0c\xc2\xca>A~\xb7\x171\xb3s$e\x1e|p\xf8pZ.\x92\xf4gF\xe8\x08\x0d\xad\x84\xc8\xb5\xdbI\xa3\xfe\xa8\xb7{\xd5\xd4\x1b\xdc\xda\xa8\xcfW\x1f\x1c\x8d\xe9\xe6}\x85\xa4\xacE\xbfBYI\xcbX//\xe3nH\x18\x07\x8e\x0f\xce\xd1\xf8\xfd\xce\xce\xce3\x8b\x8f3ho\xf0*\xb9\xd7\xfd\x99\x85E\x10\xb1\xb4\x9e<\x11\xbf\x82yX\x1e\x0b~\x0bl\xa1C\xa5\x9b\xe8z\x99&\xed\xd2Wh(\x07{\x03s\xfb\x16X\xb8\xf3\x0d=\xeb\x08\xe0\xd5/O\x92Z\x90\x1bsU\xdf\x94\xd4\xfc&\xdb\xed\x9c\xe3\x92\x0e\xa6\x9a\xbc\xa4\xc2\x8f\xce\xfaN\xcb\xaf\x88\x85\xe6\xbd\xe2;y\xce5\"\x9c\xb4\xee\xe5}P\x15G\x97\xc9\x92\xf4a\x07.\x01h\x1e4uP\x90\xc30\xcbr\n\xac\"\x1f\xd8\xafB\xdcp\xea\xac\x88\xd6r[$i\xbf\xa3C\xb2\x9e\x1b\xf0\x1b\x18s\xbb\x8d\xfd\x86\xc1#7\x88\x0b\x85\x8d\\\xa5\xab\xd01:W\xa1_V\xae8\xdd\x02\x17\xb4P'4\xb6\x1fi+$\x0d\x94\xe2\xdc\xed\xaa;L\xf0**Y\x06\xd3\"_\xe8\xf1\xe3\x00DH\x05\xcb\x16D\"\x85\xebWpT\x8dT\x18\xe3\x0b\xf6\xf1U\"@FmsEX\xbc\xe1\xd1$\xd3\xcd\xdak;\x86\xac\xaa}\xe1\xf9\x90\x0b\xb9\xfb\xfe\xb0\xb3[R\x03\n\xc8\xf0\xa5\x0f\xa7\x94\x14@\xb2\xd8\x16d\xd3D\xdd(G\xb4\xc5y\x86\xd8\x8b\x19\x9e\xdc\xab\x16\xe7m\xe7\xd2A\xb9\x9e1Y-\xc9'\xb4\\$\x80B\xdc\xd4\xa4\xf2>\xf7\nN\x1az\x80'\xe1\x1dn\x15>\x11\x98\x1bQ\x0fF'+Q_\xc0\xf1\x8c\xd1\xa3\xb9,A\xb1\xa3\xc989\xd4\xbc\x8er\x0dm\x1eg\xeb0Mb\xc8\xf2l\x8bW\xbb-N\x1a\xe4s\x1c\x0f\x95\xc5\xb9/\x8e\xe6\xbc\x87\xcdy/xJ.\xf9\xd0v\x10\x10\xb9\x069\x97\x99\xf2\x00\xd2n\xde$\xc0B\xc3\xde\xaf\xa4A\xb6\xf5AU\xae\xdek|S\xd5}\x078\xd1o\xf4\x8c\xd7Axw#\x17E\x8b[\x82{Jl_\xda\xe1\xc2G>F\xf2H}\xbeVz\x18\xf6\x8a\n\xee\xb2\xa4\xda\xa0\x8c\x88\xcc\x95\x0d\xcf\x15\x03,\xce#\xcc|\x9e\x94F\x18\xf8\xce\xc2\x18\xb9@>\x95\xd8j\xd3\xaa\x1b\xc9\xeaF\x0b\xb8:8\x12m\xde\x0c\x9a\xcb \xed\xfd\xa6\xeck\xa7\xc3GR-\x18\xc4\xed\xc1\x05\x0c}p\xc3=\xb6\x19\xd8Z\xfb\xfc\xdb\xb8\xe0n`\xc3\x1d7\x02\xc3\xcd\xbb\xfaH\xb1\xc2\x08\xf4P\x84\xda\x83\x07\xce\x08\xb2\x1eY\x85\x90<\x8c \xe9\xce\xc8v:\x8fgo\x07M\x1f-\x86S)\xca1O\xc3\xc8\xc8\xe4\x1b\xf3Z\x85<\x9b{\xd0vs\x06\xb5\xa4G\x95\x94\xacj\xfc\xd1\x89\x9e\xcb.\x8c\xb5\xf2A\xa2\x8cvL\xa0& \xc3\xa0j\x10\xf1\xa4\x11\xee\x1c\x1a77\xbb\xea^eCjo\xf0l\xcdV\xda3 \x1b\x16H\x9e\xbflm\xf9\xca\xad(:\x82\xac\xef\xcb\x14\xa9\x07\xbe\x19o\xcf\xda\x02\x13\xbc=\x93$q'\x11X\x12z\xd4\xba1\xef\xa6\x95\xd0\xd6\xd2\xe2\"O\xb8\x99\xa2\xf9\xbb\xfc\x96\x14\x87a\xc9\x8d,6\xdc\x893'\x9f\x19w$\xee\xdd\xd9\xff-\xfc\x11\x96Q\x92\xb0\x1f7I\x16\x16w\xf8+,\xc9\x8b\xe7\x98+*\x9f\x8a\xff[OE\xb1\xdd\x17\xe8k\x17k\x90\xbf\x8b\xf0VQ3r l\x82\xe3xZ?P\xcf\xa8\xb2\n\xd0Ng\xe9`\xb2\xde\xf3\xe8d\xb2G]W\x83+\x83\xf2\x81I3\xd7\xca&5X\xe6[\x93\xda\x89\x91\x83&U\x9c\x83\x91\x91\xe2F\xae\xba\x97\x93\xee\x18W\xe3\x80h\xef\xdd\xe6\xe8\xbc&\x84]\xdf\x87\xcf\xc8\\\x85J\x15\xd7C\x1e\xe3\xc4\x19\xb1\x96,\x96)Y\x90\x8c\x92\xb8\x87\xb5\xa9/\xe7\xb8h\\\xfdF\xb2x`g\xaa\xbb\x8c!{\xdb\x1a\x90 \xa9\x02\xc2\x055\xe2\xeeW\x11\xbd\xdf\x8b\x99\xa8\xcd\xbf\xa1\xe9$\x83{\xa8\xaf\xee\xa8\xa5\xcc\xabP\xf1MQ\xab\xb0\xc8\xcbc\x8e\xe2p\x87\x16R6\xcb\xd8\xad\x06\xd2\x192S\x80\x07q\xad\x1f\xb4S 7\xfdJX]\xd5\xb9\xaf\xd2\xb2\x19\xbf \xcc\xb3\x88TB\xb7\x0e\xd2\x8d\xd6*G;\xbe\xa2\x9a\xd5\x16Q\x83r\xa8\x14-Fe\xe0\x16\xacT\x97\x8c\xdb\xee^\xdbJY-\xd3\xd5v\xa5\x84\xae#\x14\xd1\x81\xf6\xd8\xda\xdb\xbcl\xf4\xc7\xca\xe7Z\x9aw;\xdb\xc7\xd8\x8d\xf7\xdc\xf9\xf5%\xf7Z\xfe\xd6\xb6\xe9*S\xf3ToZ\xae:O/\xbf\xcb%%Y\xecz>\xd0V\x0c\xf8\xdf\xd5=U\x03\n~\xcf\xa0\xd4}\xb6\xf3\xcac\xc7\xe1\xf1bA\xe2$\xa4\x04\x13w\x87\x85\x0ex\x8c(\x83F\x04\xf2\xbbf\xe7\xbf\xb9\x1b\x99\xfb\xe2\xf5\x8e\xe7z\x95\xdbN\xc6-a\x98\xc8\x17\xafw\xbfa\xa8\xeb\xcam\xfc\xcb\x1ds\xf0\x84\x17\xa6\x88?\x99\xfb\xea\xa9!\x86\x97n]-\x0e\xf6f\xc6\x95)jSWx\xa0R*E\x867\x9a\xff\xc5\xb4\xa1.y\xdf\x05\\W^\x1b\"_u\xa5\x0f\xb51\xa2\x12\x9f!\xb4\x98W6\xcb\xe1\x85@\x86\xc1W\xb9A\xb0W\x9b\xbaF\x9a\x93\x05~F\xa0sI\xf4p\x11y\"\xce]\x04\x7f\xd8\x83\x1d\xc6&\xb0\xb4\x914H\x96vN[\x90\xba\xa5\x1by\xde\x1b\xe0a\xee`s\xd3p\x1d\x85z>\xaa\x94\x95rq\xc2T\x1c\x8d\x13z\xe5C\xe1N\xbdz\x8c\x1a\xbf&R\x15w\xc9\xdf\x00\xcd\x0d#\x89\xd6i$\x05\x95Z\x07\x86\x11\xb5&\xd1\x1b1\xd3\x8bHaJ\xc2\xc4nD\n\x8aT\xb8\xf1\xe1+\x97\x12tw\xaa\x06,\x967\xce#\\r\x11\xc0\xe1\x92|\xa6\xa7yL\\\xc7\xe9p\x1cn\xd0\x00QT\xaf\x06\xdc\xaf \x83\xd3\xc1\xe6{\xf2\x80\xe7\x97\xeb\xdc=\x16\xb5\x9d\xdfC\xfc_f\xfd\xfe/\xb11\xe3W\xb3D\x05\xad\xd6\x9a\xe4\x94E\x8e[;Z\"B\xf3\xa3\xca\x8f'8\xd1c\xd0\xc8\x077l\x1e\xc4!\xe5\xe1|\xf6`s3\x81\xff\x80\xa7\\\xdd\x01k\x0b\xcay2\xa5.z\xa1\x10\xe2\x17ix-(<b\n\xc2\xe0\x05\xf9MI\x8a5jJ\x99'/\x9a\x87E\x18QR\x1c\x854l\x84\x1c\xa9k1\x03I?\xbd\xc0\x9e\x02\xef\x1a)\xec\xdb\x08V.\xe5\x9eP\x1f\x08w\x98,.(\xf1\xf6\x96\x13\xc0\xa6\xc9\x19\"\x16\xfb\xea\xdf/\xaexgT's\xf7+zT\xb1|3\xdb\xa1t4\"\xf7'kF\xfe\xee\x12\xa3\x1a\xbbr\xb2\xa2\xe8\xb7\xeb\x8c\xafxm\x1a\x9b\xbb\xadO\xf6]i\xac\xfa\x17r\xf3\xe7\x84v4`\xc9\xd0\x06%\x1bJ1\xef\xa8\xde\x98\x87\x80\x8c_\xe1\x9a\xa2E\x7f\xb5\xf1H%\x0f\xbb\x9f\xafP\xdaaX\x0e%\xc3\x90\x0e\xd4\xd9]\x0e\xec;\xe6\xce\xb4\xa4r_\x95-;\x88\xae\xfc\x06*\xebQ\xc3\x10]\xfct\xf6\x0bJ\x03?\xbc?:\xb8\x1c_\x9f\x9c\x1d\x8d\xd5\xf7\xb7\xc7\xef.\xc7\xe7j\xca\xbb\x83_\xcf>\\6\x82 \xad\x96qH\xc9\xbb\xf0\x8e\xcd\xf3\x00*\xd7@\xb2cD\x0f\x83\x80u\x19\xde\xa5y\x18w\x84\xfb\xa9;\xf06I)\xe9>\xe5{:`\x10\xc9\x0e\xeb@9\xcfo\xfb\xc9C\xc6\xa0\xb6|B\xf5\xf8>\xe7\xc1\xb4\x94\x04#UE*\x17\xb0\xba\xfby\x06\xc5\xb6\xe1\xae:\x86ke\x1b\xb3\xd9\xc8\x14\xbf\x8e=l\x16\xb2\x91\xe1.\xc5f]\x88s\x17\xcd\xc3lF\x84UW\xff\x0c\xdes\xfe\xda\xbe\xe3\x1d\xe7\x11\xa70|\xe4)\\\xe41\xb9\xd7\x0c\x9a\xb8/c\xd0\xae\xf6\x06vR\xdc\xb1\xd7|\xf7\\\xf37\xa7\xcd\x9f\xb5\x91\x81Vr\x8a\x1b\xcfi\xb3p:Z\xd1\xca\xb1\xc1:m~\xae\xc2J2;\x83+\xee\xa2\xf2\xbf\x1ea\xe2\xf5mH\xc9\x8fd\x9a\x17d\xfc\x99D+\x14l\xd2 \n3\xf1\x8a~.y\"k\x0cOR%m\x1e\x96?\xe5\xe2\x12\xa6\xfa\xfeKB\xe7'\x84\xf2Y[\x86E\xb8 \x94\x14\xe6\xd4\xe3,JW%\xab\x94P\x9ad\xb3\xb7ya.\xf6\xe3\xddqL2\x9a\xd0;\xfc\x1e\xa6i~{Y\xdc\x1d\xd3\xb3\x15\x95\x85\x16\xec\xa8\xafn\x0ddj\xa1\xbf\x96\xcb<+\x89\xb9P\xa9\x16)\x1b\x05\xf8\x1b\x0dg3\x12\x9f\xc9\xb1\x96\xcd\xa1\x97\xac\xbb\x97\xe1\xac\xca{Dh\x98\xa4\xd5\xab)\xfby\x9e\xd3c\xaet\x87r)\xca\xa3Z\x88\xf6\xe6rzo\xc2\x92\xbc\x0f\xd1\xacO\x00@Rw`\x9ad\xf1Q\x95\xc6+!\xd1\xaaH\xe8\xdd\x91\x96U\xa6\xf3i.\xf2x\x15\x89\xa6\xa2<+W\xb2\xdd\xbc9\xc2eH\xe7\xb2\xfcb\xcd\xfd!I\xe3g\xfcM>SRdaz\x94G<_\x92M\xf9^M\xca\xb3\x83\x8bg\xbc\xec\x92D\xd5\x8f\xff,9\xa8\x9c\x932O\xd7$\xbeX\xdd\xd0\x82\x88\xe6Y\x06\xedC+\xbdQS\xf5r\x91\xaf\x8a\xa8\xce|Ay_WE}\x19\x8b,\xaf!>\x82\xa2\x15\x94\xb9\xafLA\xdaQ\xa5'GyA\xd1\x0c\xf1Wt\x87\xf8+\x9aH\xafn\x13cm\xbf\x97\xd0nVa\xb0\x1c\xfd\x08\x17\xecL\x9d\\1\x96bF\xe8q\xe6N\x9c\x05\xa1\xa1\xe3\x83\x83K\xe6T.\x9e5G\xb5\xd4\xf3a\xe2T\xdb\xact\xae<\x1f\x0f\x8d\x12Eh\xffy\xe1\xb9\x93+\xcfC\xc8\xea\xb1\x87\x94\x97\xa0\xc1I\xb8\x0c\x92\xf2$\\\nE%\xec\x93\xeb`\xb0\x06\xaf\xd6\xf4\x16\xc9I&\x12\xb5\xb9A2\x81\xf7\xe4$\\z*9\xea\xab\x98\xe1g\xae\xe0\xd2\x7f\xf7a\x9a\xae\xf7Bj%)\xbf \xb1O\x94\xe7\xf1\x0e+\x93%\xa7\xea]RR\xcf\xf5\xbc\xa0 l\x1f\xb9\x8d\xaet\xdd\xc1\xc8\x08\xa4\xb1\x081A\x959\xd9\x97o\x88\xb8\xaf?/R\x87[5\xd4\x89]r\x19F\x9c\xbbj}\x9b\xe0\x04\x0el\xca\n\xf8r0\xb0j\xce\xbb\xbe\xfc\xffP\xa3\xa87\xa7\xbe<\xe6AX\x8e\xb3\xff\x1a:\x87\xf1\x84|\xf2\x83\xa4d\xffT\x81$ \xca|A\xbe\x11f+\xe0\xd4\x94\x8d\xfbf\xe4\x92\x07\x1d\xba\xf49>\xa5$\xa3,\xc9\x0c\xabz\xc7\x14\x08}\xd3\x9aH6\xd5\xb1K\xbcj\x9f\xf7\xed\xef\xd6~f\x0b\xda&\xd5\xb8\x8b\x92\xfb\"\x8f\x81\x953Tz\"n\xceZ\x1fQ\xa7\xac\xb5\xb5x\\]r+vW\xbb\xd8\n\x1d\x93`1yb]\x8bM\x811\xd2\xcd_Fp\x89\xd1\xf30j\x15\xcb\xe8,V)M\x96aA\xb7\xa7y\xb1\xd8\x8aC\x1a:u\xb6\xbcX\x1c\xb1\x14\xcc\xcapE\x12\xe1q\xb8\xfdy\xeb\xf6\xf6v\x0b\x8b\xac\x8a\x14\xaf\xd7I\xecT~\xda\x8d\x04\xb96U\x06h\x14\n*\x15\xc0\x189\x1aI\x894\xf2\xe5\x9d\x00Z\x1d\xe3\x87\xf5\xe1\xde \x83&dy/\xb0c\xc7\x8a\x9c}\xc3\xa1\xd2\xc6*\xd1\xaa(HF\xdf\x0bR\x84\xd3e'\xcdS\x19A\xc5\xfd^\xbfrY\x99y\x04~1\xf4\xd2k\xd6\xc1\xce\xff\x893#\x14\xe1{\xc5\xff\xe5%\xfe\xe7\x1e\xba\xd8\xaf|\x89D\x0f\xfb9'a,\xf6B4g?\xd0\xcb\xa6\xa3E\xd2\x88z\xc5\xde\x15Wf;\xd7\x00Z\xf7\x9fS\x1e%M\xa5VX\xd1P\x08\xcb/HJ\"\x9a\x17\x9e\x1b\xf5\x05\x82\xac\xb0\"\xee\x8b\xaaBM\x9d\x9fs\x04\x9cHz\x94\x86V\x85\x1e\x15\x9d7Q\xd3d\x8f\xd2\x0c\xab\x8e\xa3\x0cG\xf7\xfc\xef\xeb\x04\xe1\xa35\xc8k\x14\xcdf9\xdd\"qB\xf3\xc2\xd6\x01A\x9e>J\xf3\x7f-\xf3\xac\xa2>8\x18\xe9\xb3\xacm\x86%\x87$\x8dp~\x94\xce\x14\xa2\xbe\x9e\x0e\xf9Vz\xbe\x97\\R\xdbC\xecSh\xccB\xf7\x11\xc5Qr\x8b\xce\x91\xcd\xca\x80\x89\xc3\xe8\x03~M\xa8\xa6d\xdc\x8f1\xce\x05\x8f\xca\x8a \"~b\x19\x9c\x151)H\xccg%X\x90bF\x18\xc3S\xd3\xa9#\xdd\x16K[\xbbx\x08\xb3\xf4mK\xd9\xdd\xd3\xa5\xdf\x00<\xcf\xd7\x97\xbeZ\x87\xf6\xaa7\xde\xe7*\xff7\xa8c\xd3\x96\xbaC\xb3\xc6\xb5\x88#)\xb9K\xf34\xcc\xfd\xee\x0b\x16\xd1\x98n\x0f\x8a0+8\xd8\xfe\x8a\xbb\x86\xf1Wi\xaf#\xc8\xcai\xde\x9e*m\xae\x16|d\x1aG\xfd\x98\xddP\xab6\xac\\\x83\xb57\xb7\xbb\x1e\xd8\xae\xda\xaa\xa8\xb3u,h\xc3\x9f \x84%\xe5\x0c\xe6\x0e,\x06v`{\xbd\xefNv\xb6^_}\xe7}\x0c\xda\xbf\xb6\x93\x80|&\x11#p\xb8\x0b\xb7]\xd3lH\xe9\x87\xb9+\xf1\xc0\xae\x10I\xeb2\x02\xaag\x12\xee\xdaB\x18s\xe3\xb3\xbe\xc6\xf1\x0e\x9a\x07\x0e \xca\xe4\xef\x04~\x80]\xaf\xb9\xfb\x05\x17\xdbf)%\x03\xd7\x93\xad\xb9\xd6\"\n\x1d\xec\x83K\xda!\xe9H\x87\xca]\xdd\xd5\x8d\xaad\xd5Uk\x18bc\x1bV\x83\x1c\x10F\xae\\\xb3\xb6\xf0d0\x15\x97K\xd9\xf0\x9a\xb7\x8f\\W\x1f\xb6\x9a\xbd\x9a\xf2\x0bB\xe7y\xdc\xab\x9f_-\xb7U\xa6.\x9f\x84U\xc6\x18\xfb-\xc6\xd8\x9bU\x07\x80\xc3\x95\xe5J\xdat/\x8f\x87\xf0\xa8\xb9\xda\xfanh\xbc\xdf\xe8r\xc3oCR\xbc\xe1\x0bB=\x974\xd9\xb8\xbe\xe3\xe5Z\x97f>vGd\xd5}\x1d\xb9\x95\xc8\xab\x12\xb2~[O$\xd5)\xeak \x9e\x0c\xc8\xca,\xf8}\xd4n(U\x1b\x89\xfc\x968\xba\x97\xd0\xab]\xbfY)=d\xd3\xeav}\xa0W\xbe\xd031\x82xS\xb0!\x08g[\x15v\xb5\"\xd4 F\x99D\xeb\xa6\xdcoI\xe2\x1fe\x96\xd5.\xda\x85\xa1P\xcd\xb6r3\xf0(\xed\xcb\xfa\x8cK+\xee#\x1e\xa5!V\x97\x99I\xac.@\x1e\xa5\x1dQ\xdd\x006\xa5\xfbf\xc6\xdc\x99;\x1fn|\xb8\xee\xbe\xceku\xac\x11\xd8\xdd\xaa\xc5Qe\xe7\xd7\x8c\xaeSu\xd0\xe9\x9b\x02\xf9\xa0\xd7\xa3\xae\x0c2\xd3FS\x18\xda\xaf\xb5\x06j\x07o\x13:\x97\xaa6\xe5\x80\x91\x19+\xd1p>'Z\xe4\xd0\xab\xf4\xa1#W\x1f\x03b\x17|\x8ekP\x11\xd5\x9f\xaf5\xe3S\x1f\x04\xcd\xdeU\xe9\x8f\xdc;\x83E\xb2\xfe|m\x85\xb6o\xe7\xb0~\xb6\xfbpnt\xca\x80|\xe4c$%\xb4\xbd\xa5\xa1h\xae\x97#\xeeC\x1fe\x8b\xb3\xbaz\x0f\xc7\xc6\xfbg\xd9\x87\xfa\x8a\xb6\xf7\x94\x92S\x82~\x81*\xc4\\]\x02q\xe5\x01W\xd9G\x83\xee\xcf\xa05\x1a\xe5\xc6\xcc\xa0?\xd1\x89\xc6\x9a\x83\xbc\xd0\xd8\x08\xe5z\xda<\xed\xb7>\x8c\xfd\xc1\x13A\x06\xdf{\x81r\xc6+`N\xab\xf3YEl|5\xaflJ\xb7\xf2d\x0e\"\xf4\xab\xcfH\xf8]\xf4\xcc'\xf7\xa2\x10\x02\xe9\xf0\xd0\x07QZ\xfdD\x06\xce\xb2@=\xc6A1\x8c\xbf\xd32\\G\xe8\xd9\x03\xfb\x08C\xfb \xf6\xed\xff\xd5\xea2\xf4^\xcbZuC\xb9w\x94w\x8c\x1d\xfb\x11TPn\xc8\x9fz6\xee!'\xb1\x0d\x8a\x18\x83\x10F\x95i\x10\x9c\xe2x\x0e\xf3l\x9a\xccJ\xb6<\xf6\x85\xc5\xcb,\x06\xb8\x17yAM>\xd0\xe5\xc3\xfd\x10\xd7{\x92\xe7\xef\x04\xf5\x0b\x94O\xe4\x05\xfd\xf1n\xd8\x9a(e\xcd\xee\x00\xba\x02\xd4\xea\x8f\x9c\x0f\xa3\xdej!t\x1fV\xd8?R\x94\xca\x1cL\nK\x14}P\xe9\xeb}\x90]\xe8\xb0\x11\xff\xea5)\xa6>\x0f\x0c\xf2\x9e\xdd\xd8g\xe9\x83\xbc\xee\xb3\xbe\x1a\x93\xbc'^z\x02{8t\x8aU\xb8\x05^\xd0\xf7\x0eV\xc1\xdb\xdd[\xbb>\x96F\xdc\xd9[\xd6\x01z\xa0\x8a\x0e\xca\x11$\xf7F\x04\x86\x9d\xd9\xdc\x82\xbe\xa6\x07e><\x86\xca\x9ck\x192\xaf\xf0~\x17\x1a\x9f\xf0LST\xb4\x1e\xa93\xbc\xbe>&\xa1\xf1~\x80]ik\x90=J\x8f\xb4j\xef\xd5\xb13\x8e#\x9b\xban\xf7\xe0O\x0e\x95\x1b_\x96U\xb2\xc9&\xa8P\xb4\xeb\xee\xd1\xc2\xa7\xc1-\x98\xb4\xfa\xee\xd1\xd0\xc1\xe0\x86\x0c:\x85U;\x1d\x0dh\xc6)M\xbd\x10\xa3\xfa\xe2\x90\xdeK\x04v\xef\xbbw\xa3JW\xf3|5\xa3\x92\xfcA\x8a \x03\x9b\xb4\xcaW\x8a\x81\x9c\xb0\x14E\xe7\xb89\xb2\x06\x9d,\x15\x9c2y\xc9\xe2\xd8\xc6\x08\xe2\xa4\x1eX\x0b\xa6\xcd\xc3r\xce\xc5\xac\xf8\xf30\x8f\x89q@\xa0\xe3y\xc3\xa5\x9aXq\x93\x11\xca\x03Y\x85JQI\xed\xb6Y\xf7NMi\xb7o^\xb7N,\xf3\x9ec\x99\x1ee^\x1d\xda-\xc2y\xe9)+\xab\x16\xc2@\x13\xa9c\x7f8\x98^'\xb2\xa3\x0c\xab\xe6\x0cf7\xf4{\x1f\xe3.\xbe\xffh\xfe\x19\xdb\xf7\x1b\x01\xa5\xb0\x80\xc7P\x90\xb0\xae\xca\x99\x98\x93\xdc0\x95&\xe5\xf0oD\x83\xbc\xd0\xd5c\xa1\xb8\x07T\x97\xd4\x9ah]\xba\xa1\x0d\x04\xd7y1\xa5N\xa4<\xac\x0c\xb8\x02p/Z\xd7\xc1\x8e}\xd0\xf7\x17\xf2i\xcd\x0e'\xfa>W\xf5\x93k\x1d\xff\x07Hj$\xdanH|\x8d:r\x06\x17<\xdc\xcc\xb1V\x1a\xc5\xf8\xcf\xce\xb6\x08K9\xd9Q\x02\x12\xaa\x11\xa2do\xe0\xd2\xde\x9f\xff\x81*\xa9lRz\x95R\x0d\xb3p\xf2\xaf\xd155\\\xa3\xa0\x99\xb2\xf4\xf1\xd2\xb9\xbd\x1f\x88\xd0\x85\xccU(y^y\x9d\xf7A\xb9T7\xe5#\xaa\xe5\xb5;\xbd\x97@x\xff\x83A\xac\x1a\xaa\xa0x\xa7\xd4\\\x8a\xdf\xb5\x7f\xb11\x1e7\xe5p\x95\x05M\x1f\nl\xcc\x8fP\xaa\x0b\x16!\x8d\xe6\xee\xf6\xffq'\xe1\xd6\xdf\xaf\xd8\x9f\x9d\xad\xd7\x9b\x1f\xb7\x82\xab\xef\xbc\xd1\xb6E\x0b\x97\xbb\xa0HJ\x19\x90\x80\xb1\xed\x1c\x92\xb3V\xd0\xc1\xd6)\xcb/P$\x8a\x14\x92\xef\xd6G\xe7Z\xac\x0f\x1f\x9e\xc33\xe6\x9ar^\xc3\xf6\xc1`h\xd47%\xa2s\x13gN\xe9\x12\xd54)]\x96\x8a\xb7\xac\xe3\xaa$\xf7\x90U\xb7\xdce\xf4\xd4)\x0d\xe9\xdd,zd\x8a\xc7\xa1S\xecF\x19-\x8d\x07\xdb\xe6Rp/z\xdf,M\x96\x03\x02\xcfJqj\xe5\xfa\xd1\xa0\x0b\x93\xa9\xeb\xd8\xc65\x7fm\xf7\xc4\x8c\xd6\xf61\xde#W\xf3> \x97\xda\xb6\xf9\xaf\xb7\x8d#\x8a5\x9c\xf8\xddp8\x98\xcf\xd4\xd7\x92p3\xf3\xa6W\xc2\x92\xd0\xd6+\xe7\xc7\xb9E\x12J\x80\xc7\x8b%\xbdC\xfb\x9f\x8az\xc6\xaf\x12N\xf1\x93\xb4\xa8\x92\x89\x9a\x16\xe0a\x18\xcd\xd5:M\x86S\x82O7\x7f\xc2\xb4\x0bi\x9c\xb5\x0c\x8b\x92\\\xe6\x95U\xd5\xc5\xf8\xf2\xfa\xe2\xf0\xa7\xf1I\xc3\x9c\xfa||q\xf6\xee\xe7\xf1\xd1\xf5\xc5\x87\x1f/\xcf\xc7\xc6oj\xda\xd9\xfb\xf1\xf9\xc1\xe5\xf1\xd9\xe9\xf5\xc9\xf8\xf2\xe0\xfa\xe7\x83w\x1fx\x99\xc3w\xe3\x83s\xf6~\x8c\xf9\xde\x1f\x9c\x1f\x9c\\(_\xce\xc7\xff\xbf\x0f\xe3\x8b\xcbF\xca\xc5\xfb\xb3\xd3\x0b^\xfc\xdd\xd9\x9f\x1aYXoO>\\\x1e\\\x8e\x8fZ\xe9\xedw\xa5\"S\x0fD\xdf\xc7'\xef/\x7f\xe5\xe9\xd7\xc7\xa7\x87\xef>\\\x1c\x9f\x9d\xaa\x19\xf0\x93\x9a\xf0\x9f\x17\xcd\x0c\x1f\xce\xdf\xa9\xaf\x17\xef\xc7\x876\x034\xd8\x83\x1b7s\x9f~\xaf\x93\x9d\xb9\xf8\xf2\xea\xb9\xfe%\x91e\x9e\xe9_B\xf1\xe5\xf9S\xfd\xcbJ\x96\xd9i\x15*\xc5\xa7g\xcf^\xe9\x9f\xd2\xea\xd3k\xfdS$\x9b\xfa\xdek\xd0\x8f\x1c&/\xfaT?%\xb6z\xc7\xe8\x8e\x82,\xd30\"\xee\xf6G\xba=\xf3\xc1\x01\xd0\xf1\x96\xcdkc\xad/\xd6Fsh/q\xdd>\x1f+3g\x8d\xaej\x9e\x1c\xcd\xbd\xf5-\xb6\xf9\xa7\x1d]\x18\xe0\x1c\xe0\x03j\xe9?\xb8\xf5\xdbok\x9d\xa1\x85\xde\xc5\xec\xe9\xc2\xf8\xa1]\xe0\x06\xf6\x88\x13\xcd\xbc\xb8! bO_>w\xf4\xc5\xcc\xa9q\x95?\x8b\x86\x9e8P,\xf7?x\xb4\x9f\x86\x0b2\x02K\xf0\xa8%?\n\xac*\x85I\xf9\x97E\xaa[\xfd\x00\x0crL\x80\xf3\xd6)\x89\xb4\x1b\x9b\xfe\x8b\xa6\x0f\x87o\x9d\x1c1\xb9\xddSS\xdcsjR\x12\x16?\xeb\xa7\xed\x83A\xfb\xf8A\xf3q\"\x14D\xdbj\x1c\x03\x96U\x9av\xa1\x91a\x1f)\xdb\xd3\xfd\xbf>\xa8\xfb}\xbb\xc1\xb2\x9c\x9f\xc8\xdd\x08tS\xbd\x87\xcc\x80\xb4\x1d\xfb\x1f:\x03\x1a\x1f{\xcf\x19`\xf0\xab\x10\x96\xdf2\xf6\xcb\xc7\x1d\xbbT{\xbe\x87\x0f\x10eD\x92r\xfe\x96\x01\x9d\xfc\xb7\x18PI\xe8}\xd9[\xdb\x80\x8e\xee= \xce\x9ew \\6^\x0bx\xca\xf1\x1ad\xc3\xb6\xf16\x89\xd9iEd\xbe4\xd9\xa5e\xaen\xd1\x19W\x05Z\xf4\xe5\\|\xda}\xd9\xfa\xb4\x96Ti\x9b\xcc]\x88O/_\xb4\xc8\xdcY\xf5\xa9Ej\xdfI\xc3R\x13\x93{c=\x14dh\x1e\xd51\x04\xe9v\x0ca%w\x1a\xf3xm`\x1e\xd0\x14Q\xfa\x9fA;\xc8\xe6\x18n\xdb\xfcG\xa3\xc8\xaaH\xb5\x12c\x03\x07\xd3(\xc2\x95\xa8\x1be>\x9b\xd8\xa0F!<\xd2\xb5R\x83\xb8\xabF-\x84\xf1\xc9\xbc\xae\xfa\xfaF\xab\xf5\xd0\xc2\xc7\xf1\x8a$\xf3l\xec\xd0'\x13O\xc8\xcb\x95\x84^\xcb\x8bt\xad\xd4\x81\x81\xb3T\x0b!\n\xd3\xca\x9cup\xa9uYq\xe9m\xa9\xe3\xbd\x81\xf3\xe5e\xd3|f)ca\xa0y1D\xb9\xb6Q\x9e\x18\x99\xf1fAS\x8b\xc7\x9d\xec\xbdZ\xbesi\xfe:@\x8a\xd0\x00\x95J\xccz\xbd 4\x14\x87j\xb3\xceS\x8b\xb4\xa2QOm\xde\xda({\xde#\x051\xd6q]r\x81\x8bV\xd7Q\x05\x0c\x95\x80\xc5a\xcb/e\xaa\x8d\xcc\xef\x86\xaa\xb8\xb9;>\xba\xa8\x16R\xc5J\xdc\xa6\x9bH\xab\\zS\xe8\xd3K\xfeV\x19:\xad9\xb8\xc5\xe7\x01\xe6,\xcdGLQe\x937J\x96\x8c\xdc\x99\x10)\x8a\xce\xea\xf8\x95\x9c027g \x85{R\x83\x1c\xd4\x1a\x16\x10\xc3@\xc0\x97/\x90\xb8\x18\xb0\n\xc1\xb6C\x87\xabD\x0bqF\xda\xb1i-\xda$\x1d{\xbez\"h\x91\\\xaa\xa0\x0c\xa7\xe4]\x1e\xc6\xc6h]j4=\xf3T\xf2\xa5a\xf4t\x9e\x8aX\xfb\xe8\xf1-\x0f2r\xcbx\xf6qq\x9fN\x9b\xa7\x8f=)Y\x93t\x042\xa0\x935\xdf\x82\x94e8c\xc4GP\x90\xb0\xcc;\xcc\xe4\xd2$\xc3|\x8b\xb0\xf8\xc4OQ\xf6+`\xc9\xa8\xdb[\xbfmb\xe4 .:\xb3\xcck{\xf2l[\x05\x03\x1d)\xde6\xf7\xc0Uba\x85\xb0\x0f\xce*\xe3\"et\xf2\xc1\xb6VTo\xad\xd0\xe3&\xe0M\xd1\x88\x1bz\xec\xd0\x1fH#}0\xc4\x95\xfb[\xa5\xbf\xa5Hf; a0\xecM\xab\x86d\xe5\x85\xa8\x7f\x7fBus6`\x8f\x82t\x83\xde\xbbO\xa1\xf2\xff2\xed\x00\x8a\x15\xecA\x18L \x8d\xe6\xf6L%f\x12S\xd5\x01`\x98\xed\xe0\xc2\xc0\xe3\xc8'\xaaD\xb2\xb8\xfa)\xec\xc3?\xbe\xc2\x08R{\x91\xa9\xbcT\x14:\xc2f\xb5\xa0\x0fh, 7\xe6mXd\xdc\x91\x84\x98\xa2\xc6:7\xc2tB\x99d\x11\x81\xf5\xb3`w'\xd8\x810\x8b\xe16IS\xb8!P\x90E\xbe&1$\x19\xac\x9f\x07;\xc1\xce\x1bX\x95\x04,r~\x11\xd0s\xc3\xf1|\x0ep\xb6XW\x0c4\x18i>\xedRv\x8e10\xd9\"\x8fI*/ZN\xc2\xa8\xe8\x88*5\xc7\x12\xd5\xcdVO\xee5\xe6\x16C9\xce()\"\xb2\xa4y\x87R\xf5B\x94\xe0\x04\x8cR\xc42\xcaz\x95\xeb8?y\xe5i\xc1\xad\x9dG\xf0\xfb\xf6\xca%x\x1e\xac\x8a\xd4\xaa\xfe\xc5&\x8fq\x15\x11\x83\x88wIFNW\x8b\x1bR\xbc\xcd\x0b\xb4\xcf\xdb\xb7}h\x86\xdd0\x84\xc2\x90\xcf]\xd5\xcd\x0bZ\xd8\\w\xcb\x1b\xb7\x0eT\x8f[\xca\xe8cH>\xac\x8dN3\xe4\x9b\xb0$Gyd\xe5\x1dA\xb8\x00mB\xc8\x08b{\xf6&x\x8c\xa0c\xd3\xb7ac\x04\xeb\xae\xec-\xc0\x18\xc1\xc2\x98\xfd\xab\x17\xd09\xc9\x06\xe8WA\xe3\x8e\x95M\x98\xbd\x03\xec\xe1\xf6\xad\xfc\x1a\xd6\xae*\x9eL\xc1Mz \x0c\xa8$\x02\x0e\xba\xf3\xcf\xcc$\x06\x082\xa3y\xfb\x9f\xe1\x1do\xa6(\xd6t\x0d\x11T\xe5\xbc\x81\xda\x9a\xeac%K\x08?\xcf\xd9\xa4LWi*\xb6\xc8\xcc\xbd\xf3\x95\x14i\x15\xc0\xd2\x96\xdc\xc8\xb5\x91\xbd~ \xfe\x9a'\x99\xeb\x04\x8eZ\x04)\x15FU\xcb\xd8\x93$\xa0\xdcE\x9b\x9c7\x1f\xb5s\x84\x8b iu\xccr\x9a\xef\x93\x89\x0f\x8e kz\xa3?\xcb\xa7\x11\xcf\xaa#\x10\xa8\xfa\x08\xb9! Dc\xbd\x85\x86X\x01\xda\xa1\x8e= #\x13/qV\xc6E\xf1#j\x99\xe4\xdf`9XhWfvS\xaaVr\xcb\xfc`r\xa5\x1dGo\x85>\xda\xa2&\xc6\xd8kZ\xbf\x96\x15Y\xcdh\xc7\nh\x81X\x03\xdfQ5b\xa8\x0f!\x0f\x80\xe2C\xec\xc3\xdc\x87\xb5\x0f\x0b\x1f*k\xdf[\x1f\xc6V\x85\xa1\xba\xed\xdbb\xd0\x86\xc1p\x0bo\xdexP\xde&\x9c\xca\x0f\x96\x05F\xfc\xe2\xc1\xd0\xbb6Z\x14\x96\x04vF\xddk;\xe5\xe7\xd7\xdf\x82\xf2\xae\xa4d1d\xe3\x12\x19\x8c\xf1y7\xdc\xb0\xe7\xa6 a;\x92\x9a\xfa\xd8\xc1\x05lH\xc2\x89\xc9\x8d\x00\x1e\xe9\x05`\x04q\x9e\xfd\x9e\xc2<\\\x13\x08\x81\x0f\x06h.\x0c`\x08\xe4\x99\x0f\xe1M^\xd0$\x9b\x05\xdcaQxS\xac\x96h\xe2\xc1\xda\xb0\x05\x07\x069\x93\xcf\xfbg2\xd3yQ\xc1\xc6\x92\xa2\xa8)d\xc1\xb1N3\x1fi\xe2\xbc\xa2\xf2\xf8P8\xef\x97#E\xaaS\x9e\xa1\xa4<C\x1f)L\x9dAV\x1cCU=\xb0\x86\xb8U\x9fjI_\xfdW-):\x9f\x1b\xc1\xc5m8\x9b\x91b\xeb0MHF!\xc68\xc2\x14\x96E\xbeNb\xb6\xb2\xbf5g\xeb7!\x8b\xf6!\xce\x93l\xc62\xcf\x1f\xbc\xc2\xaf\xbaWXt|\xfe\x08\x84\x1cR\xb2\xd3\x9a`\xf3\x91PU\x8d\nY\x1a\xa3\xea\x16&r\x1a\x1d\xac,t\xb2\x19\xa5\xc1\x0b\x13y\x8c2\xdf\x85\x89\x0c\xc6\xe3\x93#\x94\xdd]\xbf\x86\x83\xdd\xe7>\xfc\xade\xee9\x04\x94\xd6\"R\xe8`\xacK\x0dw\xf3\xb6\x87U\x1eb\xe8\xd4\x14\x91\xf0\x12\x91\xf0\xa2\x1fh\xe1\x1bp\xb0\xe9\xf9\x16\xbclz\x86\xe0j\xd3S)\x14\x8au{\xeaw\x99\x1b\x9a\x1el\xf9\xe9\x83[\x0e9\x91K2\xea\x0b\xb6\xbc \xe5*\xa5'\xe1\xd2\x17\xbc5\x83\xf2_\x12:?\xe4\x0e=%\xcaV\xa0\xed\xa5\x0f\x89\x9b\xe2\xf9z\xbfi\x93O\xc5tL9\x1f6\x8c\x96\xd2\x1f\x13[r\xf7\xb0\xaat\x96\xe5\xe6a\xd5\x98\xd8\x19\x83\xa2\xd2\x90\xc7\xc8\xea\xdc\xde\xbb\xaa>bQ\x7f\x10\xbc^>\x18\xbc\"\x05\xbc\x96\x88x9\x9f\xc4\x8f\xba\x88sWP\x04a\x9a\xe2 R\xba\x1e\xf7f\x86\x8c\xcc\x10n\xc9\xf6\x0c\xe4\xa2lO\x9b\xbbZ\"w\xb5\xd4\xcc\x16\\.\xa1\xb8?\xfbdz*l`b\xa0\xe6\xee\xfa\x7f\x1b\x03ez\x1e\xc2T\x99\x9e{3Z\xa6\xa7\x9f\xf92=\xa8Pm`\xba\x16\xd2\xbd\xf6\xac>WW\x885\xe3\xf6\x87\xb4\xfa\xd0\xa2\x83\x1e:\xbd\x15f\xef\x94\x10u=\x96\xa3`\x04\xf6\x08\xf0\xb6\xe7A\x88h\xf7\xfb\xfba\",\xe4\x90,v\xeeW\x0e\xd4\xcdX\xd2|i\xf1\x91cz\xba\xa9g\xf9|\xc5\xe8\xf1&G\xb6\xc6\xdc6\xc9\xa4\xfa\xb4\xae\xf0z|)\xa8O5Xs\xd0\xcf\xde:\xba\x07\xfd\x95Q\xc3\xab\x8an\x13\xb8d\x00bW \xd6\x9d\x9a\x9c\x0d\xbb\x93\xab\xcac\xcfR\x9a\xd0\x074\xff\xcf\x8b!D\x84\x15\x9c\xa7\x8a\xc8X\xd4\xd6=\xc0\xae\xf5\xe1\x90\xdb\xc3~\x8e\x95\x83\x92{-\xafxz\x1f\xaf\x8dx0\x10I&>\xed\x06\x07\xe4\xf1\xfaz\xf4\xba\xbbG5c\xf1\x1aO\x87\x1d\xec!^V\xba\xbb\xbb\x9e\xafK\xfe\x02j\xbb{\x80\x8aL\xed\xa1Sc\xb3\xa1\x83\xcb\xc6>\xae \xd3\xdef\x9e\xd9\x9b\x19\x8a\x11\x86\xec\xfe6\xd0\xab\xbb\xda\x87\x89\xb1\xd4\x841j\xbb\xaf\xafZ\x1f\xaf\xda\x0e2\xe0\xd9\xf7\x0d\x9d{\xab\xb5\xc77^\xec\xffM\xc6\xc1\xf4+\xa8\x03\x0cC\xfaV\xf7LX\xbd}m\xdb\x02\xdc\xd3\x11x\x8fJ\xdcy{\xff~\x8b\x8e\x9fT\xd8l\xaf\x99m\x80\xfe\x10\xdb\x1c+o\xfdO\x1a\xdd\xc4\xe2\xc0F\x0cO\xc5\x83\xf7\x1bi\xcb0\xe9[\xd6\xee\xf0A\xa3\xab\xb4\xa5\xcdC\xe4.\xc1\xef\xbd\x84]\xf6X\xdf\xae'\x7f\xf1\xcf\x18\xe9#\x98\x13\xf0\xb058\xea\x9f\x85\xe9\xc2\xf0iS\xb7v\xd3\xbc\xed\xc1j\xae\x03&\xa5_=\xd7\xfc\xb9`'\xb6\xc9\xcd\x81e\xc9>uAK\xc3\xb8\xef\xbf\xe7h\xffv\xaf\xd1\x1e\xf4\x8c\xb6e\xe0\xf8\xbfa\xd0g]\x83n\x18y\xf6\x1e\x9c\x1d\xe34\x8c\x857\xff\xbe\xab\xf9\x96\xd9io\x17\x86*\xe5\xd9Tn\x8aa*{\xf9P\x95\xbd\x95&\xeb6\xe7\x12\xf1\x06\xc3\xf2YOu)\x12\x96\x0c<\x18\xca3\xe7\xe1r$qW`\xcc1\xc5\x1c\x95\x8e\xa8\x05m\xc2\x1e\xacl\x9c\xc1\xfd\xb4S\xac\x9a)\xe6\xec3\xbc0\xe0\xacD\x9b|M\xa6\xe0\xce\xe0\xc9\x13\x98)\xa1\xc7\xf4w)y\xd2\x93\x85{\xd2~\xf1\x93\xa4iY\x0d\x1bBK\x86{\xc7\xaa\xcf\x89\xf6\x1e3\x98\xa5w\xc6\x0b\xcf;\x1d\x07\xb9\x93\xd4\x87\xe8\x8am\x84\x8c\xad6\xd2X^\x17\x9bJ\xd4)\xd9k\xbe~\xf9b\x8d\x1f\x00\xca\xd6P\xcbLx\xc3\x1d\x1e\x0c\xdd\x0dt\x0e\x8e\xa1\xfcv\x84\x8b\xa52\xf9;w\xda\xe1\x9a\xea\x82=p\x0c\xbe\x97\xc0\xcc#\xa0H\x07\x83\xc8}\xa6\x1f\xaa\xc8Lq-\xfa\x91\xcaH\x01\xcd/\xd0\x12\x96\xb1\xcf\x02<*\x00?\x8eQ\xc8\xa7\xbe\xefi\xdfG\xbcP\xca\xfeD\xa2\xf3\xcd\xfcY\x90/\x8fcw\xc6\xefc<\xd4)\xe5d\x96k]\x136\xa97\xb0\x07)l\x823r`\x13\"\xf3\\2v\xb6\xe0\xb1>\xca\xa0D\x1c@\xe2\x0bLro\x90ko%w\xe8_]\x8bjX\xbe\x9f\xc3\" oR\xd2\xa5\n\x05\x18,\x9d\xe5\x1eU=\xe9\x96\x08\xb0\xa5,\x97aDFpc\xcd\xf8\xb5_\xbap\xfb\x08=\xedo\xbf{\xce\xabv+\xf7>\x15t]{\x12\x91\xec\xc35\x8c\xe0\xd6G5^=R\x1d\x0e\xa2\x9d\xec\"\xa0\xf0\"\xad\xa8u\xa2L+\x9d\x17B\x87!\xdfm\x7f\xe7\xd8\x17y\xac\xb6\xfac\x1es\x9c\xc4\x8b\x9bK\xb1\xc1\xdd\x05I\xf9\x9f\x17g\xa7\\0\xed\xb9cT\x8cW\xab\x81=`\x19\xb86\xbc;\xf6F0f\xfba\x8csi\xc8<\x16\x93\x0c\xa3\xf6\xa7\xf6\x86n\xa5\xb0\xa1|\x163\xaf\xb8\x01\xf9\x07z\xe6m\x8f\xe33\xee\xc4\x9bU\x92J2\xcc\xfd\xec\xf9P(\xc4\xa8\xab\x1c\x90\xf5A\x08\x9f\x0d\xb5\x11\xc3\x11\xa6R\x19\xbd\xfeq\xd7\x0d!\xe0\x84\xea*:\xea\x93\x9bG\x99u\xab0\x16m\xc2\xd32\xc0\xbc\xe1\x9bD>_U\xf8k\x0e\xd3p\x97\xcc\xc6u\x01{p\x14R\x12d\xf9mG\xa8\x9bLRg.\xd1\xd5\x05\xad\xd3F\x83x\xc5Qj\xa3\x0d\xd8\x82\x8bj\x0dyO-c4\xa8O}\xf5\x84\xa0\xad\xbfyuJ{\x1a\xea8c\xb9\xf6F\xd7}\x0b)\n.^\x98\xab~m\xccg\x9ei@\x8d$\x0b\xafI\xdan{\xf4aK\xf5\x04\x83\xa3\xaf\x1d\xab\xa3\xaf\x9d\xa6\xa3\xaf\x9d+T\xe37P\xef\x15%\xda\xfe\x96uR\xa0\x89\xd8\x07\xb9b\x9e\xc3}\xfeP\x0c1\xc9\xcb9Wf\x1fi\xdd\xa4\x9bT\xd2$\xc14\xebR\x9a\x0f+}\xd5\x01\xf4;\xe9\xe7\x07\xca\xea\xf6\xdf\x16\xa5\xce\xed>\x0c\xb9\xfa\x80\xe6\x1d\x8b_K\xd8\xa9\xfc\xb0\x1d_W8x\xednl\x8a\xf7\xc9\xed\x03\xcb\xce\x08D\xa6\xa3\xca\x9c\x9d\xd1J\xdb\x9f\x17\xe9v\x12P\x86\xac\xa6\x96N\xccq\x00\x15\x81\xd8\xe8\xbe\x0f\xb1\xfd\xec\x16\x80\xb0\xd2\xb8C\xd4},\x9a\xb85\xb1md\xa1\xfcm\xd1\xbf\xe7\x8a\xdf\x96\xa5\x96\xd8\xa2\xdfb\xd8V^\x92\xc4V\xednS,\xdc\xa9\xa5\xab\xc2\xb4\xd9b\x9fa\x0c\x97\xbb4\xa0\x1c+\xce\xc1_=\xce\xa8H@>/\xf3\x02\xfd>7\xe7\xbb\xb2\xf1\xcd\xdc\x97\xcf\x9ej\x90P\xdb\x087\xbdO\x19\x9b\xb4\xb57@,\x89\x91]\\n\x00\x12f\x11\xbaUD\nKA\x80\xe8\x11\xb4\x80$\x03\xe2\x01\xde\xea\x03\x9b,T\xb4p\xd1\x1f\xeb\x08\x92,\xca\x8b\x82D\x14\x92l\x9ds\x07x\x1b\x16W\x8e\xe4~3hv\xe7U\xd9(\xb9\xaf\x9f+\xcdT\xc3\x0f\xa6CD\"\x19\xb9\x1d\x805Y\x8f\xda{\x8d\xd15\xc1\xb2\xc8\x17 \x8a4YUdX\x9096\xe9\xca\xfcRm\xbe\xb3\xf6,;?\x861\xbc\x17mEyV\xd2b\xc50\xb3M\x97\x11O \x1f\x0f\x1b\x83\xbc\xd6\xf3y\xe7\xc5\x05*\xcb\x84\xbe\xe5D\"\xa3~1M\x0b.\xf3U\xb5;\x1c\xb4t\xf5\"}\xbfcZ\xa4\x01bB\xd4\xb0\xe3GW\x921\xd8D~\x9aLrv\x16\xe3\xbf=\xa0\xec\xdf\x08\nVG\xee\xe3\xeb\xbf\x04\xf2^>\xdf\xb5\x8c\xaax\x8c\xea_\xbd\xb0\xd4\xce@M\xd7g\"\x9f\x97i\x12%t\x04\x13\xd6\xb1\xe7\x8c\xe0u_>\xff^\xfc\x7f\xe1\xa9\xdeP\x1f\xde\xbb\x0eJR\x99\x97\x17\xbb\x167\x93\xec\x9b\x8e\xea@\xd0=\x9a\xc7\xca`s\xeb\xea\xbb\x91\xb7\xef~\xdc\xfe\xb8\xed\xed\xbb\x93\x8f\x17\x1fK\x0c\xc9\xd9.\x1eb\xf1\xc9\xc1\xd6\xff\x1f+\xe0\xffw\xb6^on\x05W\xdf\x8dX\x05\xdb\xedB\x8c|\xb1\\\xad:\xff\x86\x9e#\xc3r\xae\x87\xf3\xae\xb3\xec\xb3,\x7f[\x91\xe2\xce\x9eg[\xfatDG\xca\xd6l\x7fd\xd9\xc2\x15\x92x\xbb\xb6\\\xa7\xe1)\xeb\x13\x8fH.\xaf\x86w;\nl\x8f\xdc\x8f\xf1\xa6\xf7\xef\xdb\x18\xc8\xbch\x14\xebo\x04{\xac5\xd4*c\xa8\xa6}\xce\xc9\x87M\xe7\x08v\xcd-\xe3D\x8e`\xb7\xf5Q\xf5# \xaa\x9b\x8d\xd4\x8e\xaf3\xaepo\xb3\x94C\x015\xfa\x83s+\xc3m\x1a\xa4\xe2\xd4\xe2\xc2@\x8bp\xd5\xb9I\xf3\x9b\x91#d\x9e\xcb\"\xa7y\x94\xa7\x1e\x87{v\x96\xb8\xab\x8c\x94Q\xb8\x94\xbc\x13\x9bF\xcf7WH\xd2\x92\xe8\x8e\xea\xf6t\xf7\xd8\xf2A<\x981\x1cX\xb7E\xb0b\x1fJO\xeaz\x14\x93\xcc \x91\xac\x1bR-\x99\xad\xda\xd6uS\x84\xa1\xdb$\x03\x94\x90\xba\xacr6_\x93LG\xaf\xf2Ql\x14\x8a\xa0L\xc3rNP\xfc\xec\xd6o\x8c\xb0\xa5\x9cQ\x9f\x17dj\x8a\xfa\xd3J\x91\xbc\xe9\xef\x9a\xd9\xccp\x11u{;\xad\x02\xfaZ\x89g\xf3\xa4\xc8\xb5\x1e\x01\xe5\x0e\x9f\xd9\xbf\x80\xe6\xef\xf2[R\x1c\x86%A)\x8fc\xb1v\x17\xa3\x1f\xc1\xc6\x06\x9d<\xb5\xec\xbe\x82\x94\x94U\xff\xac\xbd\xd1\xf4+V\xf3\xd0\xa7\xb6C\x14*J\x8f\x1d\xf1*\xb17\xad\xbdPW0E\xcd\x82\x176\x83\xdc\xec\xa9\x94\x1a\xf7sn\xc1\xb0\x12\xc1\x91-\xdc\xcc\x02j\x97\xdd\xe6\x1c3\x96c\x9eX\xb8\x8a;\xd8\x83\x9dv\x7f\x10L+\x88f\x84\xd3\x02\xad\xf5\xe5f\xaaR\xb8=\x8e\x8f\xcb\xcf\x1d@s\"B \xfe\xb3Q\xf50\xabJ\xe4\\\xcc\xe7\xf1\x82)RH\xec\x9c\xdap\xd9q\x13\xb9\x84{.\xf6\xbc\n\x0f\xe0\x85H(A\xdd\x87Y\x03\xea\xe5\xef/_ \xe1\x1eu\x95\x8cU\x15\xc8\xf8\xc9\x17DL\xea\x9b\xe3\xf8\\l\xc1h7\xea7ku\xd7\x93\xa7l\x83N\xb6\xdd\xe0;o\xbbq\xf4xo\xe0\x0e~\x80\xb5\x10s\xbc\x81\xbb\xcdM\x0f\x91\xb5\xcbx\xd8\xf5\xe4\xee\xca\x9b\xec\\\xf9\xdc\x12{\xb2{\xe5C\xc9f\xa5\x84}\x98M\xe6\xb8\xef\x19|\xb7]j\xb2\x1c\xff\x8f\x1b\xa3,@\xfaX.=~\xc9\xe1dh\xfe\xa2f_\xb2>\xee\x83++\x15\xa0\xb3#tT\x95\xa4\x1861\xb7\x87A\x87\xb5\xfczf,\xcfs\xc6(\xfc\x15\xbb\x9c\xf7C\x14\x8eq\\z1\xdek\xcf\xf3\xe5@\xf1\x9f\\\xa5\xe5\xe4\xd9\x15\xae\x96Hd+\xb0\x9c<\xbfR\xebe\xff\x9a\xa8\xc0\xb0}8`\xcd\x02<\xe9\x90\x14\x12\xbf=\x84+\x15 @\xf1c?\xab\x8e\x91 \x9a\x87\xc5\x01uw\xc4\xdc\xea\xdfy\xef8GQ\x9f=\xa2\xd5*\xd3\x00?\x11\xa0\x92\xdd\x18\xe9\x0c9\x14g\xdb\xf1\x82r\x99&\xd4\xe5?\xe5\x0cn\xedz\xd2a5Q2x\xbep\"\xc1A\x8e\x1b\xbce\x93\x02\xb6\x18\xfd\xc1\xb7\xd2.7s\xdby\x03\xc5\xd6\xd6\x1b\x0f#{\xe0M\xd9\xa4\xb8B\xcf\x19\xac\xba\x08#\x13\xec\"~\x0d\x9a\x19\xdcf\x0e\x1fB\x06\xd6#\xee\xb7\xc3\xdd\xa9\x03Z\xb8 \xf7j\xe0C\xab\xc4\xd6V\xb7\x94\x19\xd7&\x0bVY9O\xa6\xd4u\x1c\xcf\xc7~\xb2\x89\xceq\xa9\x82\xea\xed\xcb\x17\xc8\xb8\x0e\x1cf\xcb\x84\xce\xfc\xb6)\xa2\x8a\xb2*\xbe\xbabl\xde\xd8\xb7\xbc\xa0*f\xe0\xfa\xa93\x19a\x97\xff\xe0\x85yf~{\xc8\xdeV%)\xc4b\xb36\xca\xf26/b\xfc\xcc\xbe2B\x13\xa7d\x89\xdf\xd9\xab\\\xb5Q\xab\xfcr\xb2S\x81}\xa3.\x86#\x04\x02d_\xf2\"\x99%\x19oP\xc1\x86\xa2\xbb\x88l\x93\x94\x8c*\x98\x95y\xf6\xd5\x97Mp\xb6\xb7\x1d\xd8\x94\xc5F\xe00|\x8dM3b\x01\xab\xaf/3\xb53Q}\x9b\xf2J\x85)B\x1b\xc4KBG\xbd\xac\xa7|\xf0\xe0\x13'\x94\x19R*\xeb\xaf\xae\x0bh\xae2\xca9\x86n\xa5\xd1\xdeX\x17\xd2\xdd\x84\x8b\xd4\xaa<\xa8x\xa0\x85d\x82\x17\xc9=\xe6_C4{9\xd7\xd0c\xee*Zc0K}H\x14p\xdd\x17~1\x12 \xb2I\x05\xb2\xd5\x95/\x0f(o\xc8Q\x8d\xc3\xe92\xd7\x84\xa1#\xa98\x9a\xa1\xa3I\xf8\x96\xe2\x13\xbd\xb9'\xba\xcbS\xd9$\xcb\x1e?\xc64#O7\xb4c\xdb\xa3\x8f\xf1\xe6\xbfos\x1a\x9a\xb2Yv\x85\xffxe\x0b'\x12!\xd0`\x99/\xdd\xaa\xc3bSS\x81\x96F\x8e\xa7\xcc\xbf\xfc\xa8\x14\x7f\x9c\xc9\x97 \xd17F\x95\x08\xa2\xcd\xf3\x94\xf5\xa9\xa6\xa56z\xa2N\x0f\xeb\x95\xa4\x8d\xfa\x94\xbcQ\x0c\xd0o\xf4=\xc8\xd6\x13\x0dW\xd9\xc4V\xad\x0b'3\xfbx\xe0\x8f\xc0\xf97\xcb\xb5\xb6\xfaHhP(\x82\x0da\x16\x1e\xb2M\x05&\xe5V\xf5\xf9*X\xc2\xc7@\x15R\x8c=\x08~\x8d\x99\xccF\x1f\x15\x05Rr\x02\xa1\x84\x1f`U\x91\xaf%;\xe7\xed\xf3\xcd\xca10ZM\xca\x0e\x0d\x9dT\xd2q\xc9$\x9d\xec^\xb1\x1e\x8a_\x1a5w\x8fnK\xa2\xa1>\x11\x93\xc6\x89\x98\x18O\xc4D=\x11\x13\xc3\x89\x98\xe8'b\"O\xc4\xa4\xa1\xde\xd3\x0e\xeei\xba\x9f\x14\x05F=\xb2o@\xd7vMNI\xf1\xa5\x8f\x04\x89\xf0\x8c\x84\xf5%\xd3\xbb\x0e\xcd\x1b\xca\xe5\xd1v>\x0f@\xc6\xc9\x95\xe3\xb7\xd0e\xd8%1s\x85\xdc\x04\x85<\x1c\xb7\x18\xa9\x88B\x07\x81\xb8;\xfa\xc4\xe3\xb4n\"\x1d)\xd0\xcb>\x9f\xf2\x91\x1d\xf9U\x97\xfc\x15\x9d\xc4 \xcc\xcd=%\x8d\x11\x7f\x15\xb9T}\xe7\xc7H\xfd\x05I\x7f\x96\xfeGG\xfe\xcc\xf8J\xf3\\\x92<D\x1c\xafHo*nU\xb0\x13\xfb@\\\xf1\x9b\x07\x9e\x16?\xeb\x86\xf7%gP\xe3\x8c}L\x15\xf8\x02\xa9U\x86\xea\xd4\xc1\xb0w3P5R\xbe\xfa0\x0d\xc8gZ\x84\x11}_\xe3\xf0\x88%Wb\xb5=H\xd9\xfb\xdf\xd8v\xce\xfd\xe6\x1d@U\x1b*,\xa4)^\xee\xba\xcfv\xbdo\x90T\xd7\xe2\xe8]]\x1a\x8d\xda&\x99\xfb\xca\x1c\x10*A\xd1\xa1\xc9\xb3o\xd8R#@E\xc56z\xa8p\x17\x81$\xb3\xbb\xde\xa8dR\x13\xd2\x11O\x98\xcb\"$km\x12\\A\xe5w\xe4\x0f\xb0\xb5\xcb\xb6e\xe1:\xaf_8>\x10\xcf\x87\x8d4X\xa6\xabY\x92\x95\x93\xec\xaa\x0biR\xb9\x86\xe35\xc9h)\xeby)\xeaQ\xab\xe9>5\xe4)G\x03\xb2\x167\xab\x1d\x1e\xad\x14D\x9fd\x10z\xb0r\xc3Iy\x85\xeb\\z\xb2\x17\xaf\x1c\x94;\x19<_\x82\x11\x17\xab\xd7\xb4\xed\x95\\\xd9h\xfe\x94w\xf94\\\x90\xa3\xa4\\\x864\x9a\x0b\xedd\xb6\x19\xcen\xb3\xcaP\x99{\xc9b]{\xed\xa0*BGY!8m\xceA\xad\x8f\xb1\x9c\x87%\x89\xcf\xc9,))\xd7q`uhS\xc6A\xcd\xb0|\xd5\xfc%l\xfe\xacR]\xaeS\xab\x0d\"\xf1<(\xdd|\x92\\\x89\xe9\xe8\xd9\xe9P\xa3?=\xae\xed\xefLy6HPh\xc3B\xfcR\xba\xed\x0f\xa2\x07>c\xd3;\x17\xaf\xb4/\x9e^'\xbfB/\x19\xf5\xc1\x17kwg\xa7\x02\xe7\x8e\xccH\x06\xb7s\x1c\x91%\xc9b\x92EI\x95M\x01\xf1Iv\x15\xc4J\x0ee\x10\xf2\x97\xa4K\x9a\xfd\x16\xfb\xaam\x95e\x83\xa7\xb6\xda\x91e,\xfd\x19\xd5!\xb5s/\xf3\xb2LnR\xd2\x82M\xe1\x01\xa0 \xa1\x19;\x9e\x10y\xbc\xc7\x11a\x8c\xc9>\"#\xafVf\x97\x9d\x81u0\xba\x8a\x83\xe7\x92&~0\xb0\x95\x0bu\xd6\xbf\xa7\x1b\xe5\x8fw\\)e\xc0M?\n\xa5,\xb2f.\x0e\xc3k\x11\xeb\x0e#m4\xd1G\xa7\xe6\xe2N\xc5\x8e!\x133\xeeI\x10\xadH\xb9\x93\x8b\xafr.\x9f\n\x9c\xc4\xf3\xe0\xad8\x17\x80\x0dD\x9fH\xa1\xf6L\xf4\x8c\x88 \xe6\xc0\xf66/p\xd2\x87\xce3 \xe2\x06T\xb7\xc7\x8flUk\x13V\x17\x16\xf6\x1d\xdc.\x84\xb2*\xb3[g]\x1b\xc3\x86\x8e\xbbNqn83\x08\x8f\xcb\xa7\x02)\xd4\xac1`^\xf9\xe0\xc9\xaeC@\xd1 V\xa0\x80\x96}\x96\xb2Iq\xd5\x01uP\x1f:b\xc2\xdbQ\x85\xe4\xd3u\xfe\xcaG\x92\xcd\xab4\xed\x82\xaa\xeb\x82\x94\xa4\xb1}Gv5Nh\x11[\xb9\xb8\xe4A\x8fg\xad\x8d\xc3\xe5\xe1\xe2\xb2\x94\x91]\xed\xe1Wd\x8e\xe4'\x8c\x97O\x12\x88\xedg~\x1f\x12\xa1\x1e\x0f\x9e\xdb\xde\xd7\xa2{\xd4\x88\x13$Yk]\xd6\x8evC\xbc>\xf6\xa0\xd0\xdb\x0d\xd5v\x8bI\xd8\xbc\x804j\xd9\xaa\xf4;_\xcf\x87S\xe9\xdc\xa3\xa2\x99VG/\xd0\xee\xd3\xdd\xa7\n\xdd+Hw\xf7\xb51\xfe\xc6\xaaC\xdd\xad\xa6\xb9P4\xfc\xe5\x0b8\xab\xecS\x96\xdff[\xb8\x8e\x9a\xf0\x85\x04\x11w\xe9p\x19\x163B\xf1biF\xe8i\x1e\x93\xb7E\xbe8\x16\xf7\xa8n\x81\x97\x84\xfb\x10\x06I\xb6\xce?\x91?\xad\xc2\"&\xf1a\x98\xa67a\xf4 }Cp\x7f\x99\xd8-\x82W\x14\xe6\xbcU\x16\xdf\xd0zc\xef4\xa9\x8a\xb6\xdeER\x8e\xb38)\xe7}\xf8X\xecK\x87\xe6\xcb\x93|U\x92\x0fK)\x94b\xd3C\xf3\xe5e\xbe\x8a\xe6\xe3,6%\x1f\xb2\xf1\xa7\xe2K\xd7\xb6N\xca\x93|M\x1e\xd0\x1dV\xcc\xd4\xb2\x92\xde\xdd\xee\x05\x0d\x0b\xfa\x80\x86\x8f\xf2\xdb\xcc\xd40\xd67\xa0e\xa1\x82{\x94\x14$\xa2\x129\xf4u\xa2>\x1c\xaf\xe5\xe9\xf8.))\xc9\x88M\x0b;k\xe6\x960i\xc0\x03M?T\x94\xd3\x10\x8cXx\xe6\x18\xa1\x8dA\xb4\x19\xde3\xcf\x18\x18\x18\x14\xfc\xc4\nS\x97\xd83J\x95<#\x90\xfb\xc6 0}\xac\xc6[},\x06-\n/M\xca\xe36\x95j\xb9\x16]WV\x80C\x97\xa6\x18\xbc4\xec\x9c\xd5\x9d0w\xe8\x01I4\xb6\xf3\x06r\xf8\xa1v\xd5\xfc\xe4 l\x90 )\x19b\x0fg\\[\x9e\xe6\xcb%\x89]\xef\x0d\xe4\x9b\x9b^\x8d\x1d'\xf9\x95\x0fE[U\x12\xa4\xc2\x10^X7\x90\xa9!\xe3\x03W\xe9!K\xc4Fr@/\x8b\xd5`J\xbe_\xbay\xff\xed\x06\xf7\xdar`\\[\xdaI\xbc)\x84!\xbf\x19\x87\x1f\x1a7\x7f\x1d+\\lnv;\x18B\x8azR\\\xb1Ue\xe4\x9f\xa2\xfd3)\xdajG\xa0\xdc\x15\xa0\x87\xe0'O\xd8\xa6\xe6\xc1\xb3e\xc1n!\xa9\xbe\xd8Xe\x97\xfaU\xe7\xde\xee\x847\xda\x05U\xf3\xb0\xac!\xaa\x0f\x80\x14\xf1E\xbb\xbd\xaeV0\x9e7\xef4C\x98\x0cq\x0el\xab\x08\x0ce\xf5@/\xed\xd6t\xd4|\x9f\xd6Zh\xbd\xbb\xb5\xa4<`k\x81\x0e#{\x91\xa5\xe4\x18\x82\xba\x14\xcf\xdb3\x9ew\xf9-Zw,\x16y\xf6\x90\xe6,U\x0cj\xfb}\xc8\xce\xa1{\xce$6\xd9,\xd93\x8f\xb4\x08\xd7\xa4(\xc9\xe5m\xfe\x9e1\x8c\xc3\x14\x11\xaa\xe6\xf4\xe2U\xa1!m\x8e3J\x8aw$\\\x1bZE\xd7\xe6FYu\xab\xed\xba\x1a\xadp'\xfc\xa0\\&\xc93\x93g\x0f\xfe\xf10_,\xf3\x8c\x11\x03\x05\xe9]\x00\x90'l\x1b\xbf\xb4Q7\xaf\x9fU{\xc9\xc7\x10\xa6C\xea\xcf\xcd\xf5\xff\xce\xfcfa\x8f8\xc6x8{\x042 U\x95\\\xf1:\xb9\x0dd\xcc\xb1\xaah\xcb\xa4\xa33j\x14kUQ\xa1\xc2\xc9\xee6\x86\x02\xe5^M\xe3FL\xccN\xcb\xca\xac\x9b}je/\x08\x1a\xca\x1c\x86\xab\xd9\x9c\n\xd7\xe1\x9d\xb2\x02v\x8aY\xcdr\xd6\xc2&\xd4\x12\x14\x86\xdb\xe4\x14\xf5Y\xf4\xadp\x91<\x1c.\xcc\x164&n\x97S7\x94\x13\xd7_\xbe\x00 \xca\"\x1a\xa7dA2|\xbfM\xb28\xbf}\xa3O+\xdb\xef4@\x9b\xaer\x99gq\x92\xcd>\x94D\x96\x93\xfaG\xd6\x1c\x9e\x0f\xcfxh\x9c \xcbc\x82F\xfd\xfb<\x8c\x1c\xc9\xf0\xe0i\xe8(|\xab5\x8e\xd0-t\x9f\xaa\x163y\x10\x85\xd9\x87\x92\x1c\x9d\x9dT\xe0\x1b\xe7\x11\x1a\xef\x06\xc9b\xc9{\xca/'\x9f<\xb1}\n\xe6a\xf9\x96\x84tUH\x7f'\x1b{\xd6z\x94\xcc\xae\xe3\xf8\xa8\x1d\xdc\x98\xd9\xed\xef\xbekB\xcdwp8'\xd1\xa7\x92Af\x98q\x81?$%\x94\xab%[_\x1e\xc0\x89\xce \x08.IP\xc7\xe82=['E\x9ea7\xb4J\xf56N\xcf.\xc7#\xb8\x9c'%\x8f\x0f\x95\xe5\x14n\xf3\xe2\x13\x08\xa3\xbd\xf4\x0e\xa9\xce,\xcf\xb6f\x8c\xc6I\"\xde\x13\xd6\x8fh\x0ea \xbf\xf1H\xca\xbf\xf9z\xd5\xbf\xa1\xb8\xee7\x1f~K\xf30f\xff\xd1\x08\xfc7\x1f\xa3Q\xfd\xc6\x1ds\xfc\xd6\xd7\xc1\x1f\xf3\xa2\xc8oK\x98\x16\xf9\x02N\xf2\x98\x14Y\xf2\xf7\xa2\xaf\xd4\x1f\xd1^\x14\xfe\xc1\xb5\x0f\xbe\xd6\xd7%\x17\xab\xe94\xf9\x0c(D\x84L\x98\xaf\xcf\x02p\xa24\x89>9z\xbdUE\xfb7y\x9e\x920chq\x89K\x8e\xab\xc3\x16\x07\xd7@$\xa2\x9c\xb7\xb1J\xed\x1a\xa51AU#c\\dE\xedenW\x90\xb036\x0b\xd3\xd6\x874\x89HV\x92z\x9a\xe0Y\xb0\x13\xec,\x0b\x02\xee\xe1\xaa\xa4\xf9\x02~\\%i\xec\xc1\x1789\xbe\xd4\xcao7\xde}\xbb-\x9e\x8eL\xd0~@\xddS_\xbe\xf0[\x82\x0d\xd7 \xe3\x18\xe7Z\xd2\xc8\x0e\x83Z\xb9GjVA\xbfY\x91\x1c\xb5\x93g\x0el\x9a\xfc`\xa1PP\xad\xecM\xbbOF\x92e-\xae\xa0\xab\x8d\x1a\x15$\xa4\x12=\xb9N\x9c\xacM\xea\x1daP\x12z@i\x91\xdc\xac(q3\x1f\x84\xb3\xe47\x8e\xd0\xfe7\xaa\xc2\x84\x93\xcc&2\x05\x85\x9d@Mb\xae\xbdr;'\x95\xd8\x0c\xa4~\xf2\x10\xac\xc2\xef\xe6\x03^\xde\x07\xe7Y\xb0\x83\xaa\xd6\xc9\xa3!\xd3\xd6\xd1}\x90\xd2\x118aJ\xffL\xee\xf4\x90\xbayF\x8b<\x1d\x81\x13\xd1\"m\x7f?!4\x1c\xa1\xdb\x82\xb0\xfd\xf1b\x9eLY\xcd\xa8W\xcd>\xd7C\xb0\xd0:\xb6\x03\x0e\x0dW\xb3\x90&k\x82\xf3\xd3\x86\x12\xf43v\x92\xc7\xc94!\xc5\x05\x0di}\x8d\xd4\xfe\xd4bO%\xa0\x16\xad\x1b\x83\x8aS\xc43dc\x83\xaa\x90PC\xc1\xb0\xf3\xbau\xcd\xf2\x08K\x99\xb9\xaf^\x1b\xd4_2\xf7e+=\xe1j1\xbb\xdcv\xf4\xd9k\xfc\xf7t\xf7\x95\x1e\xfd\x9a\x8b\xe4w\x9f\xeb\xe5W\x98\xfe\xec{\xb3X\xbe4b\x151d\x93h\x92S\x18\x93\xdd+!\\\xa7\xe8\xb5\xf8\"\xb9I\x93l\x86\x1eu\xa6IQ\xd2\xc3y\x92\xc6\x86)_\x8b\xab\xf6\xc4\xedc\xafH\x90d%)\xe8\x8fd\x9a\x17\xc2\xb1D]\xa1q0\x91\xad\xaeB\xd4\xc58\x0dQ_\x8b?3\xe94XM\xb7Z3\xb3ob\xdcl(07+\xeaTaK\xec\x840\x8fI\xa4\xcc\xb8]\xb8\x95\xba\xdc\xee\xba\xe0\xd7\xf7\xdc\x82\xbdCk4\xafh_\xf5\xd1\x88g\x1c\x1cZ$Q\xb4\xdaA\x91s:l2\x97\xd6\x03l\x88\x1c\xae\xba\xcf\x9d\xec\x1a\xee\xdfb\xac\x1b?\xef\\\xf1;v\x12\xf0`\x9b\x08\x89-\x0eK\x0355+\xed\x1eFl\x83\x89\x8e\xe5\xab\xc4\xef\xddK\x87|P\xcfR5\xfbZ\x0cc\xfc\xe6\x0861\xa3\x15\x8b|U\xa6w\xe7d\x99\x86\x11a$?\xe3\xe3N\xc2\xe2\xd3j\xd9DS\xeb\xb6k\x8c\x9e\xf2-\xef \x05\xcfuD\xd2d\x91P\x12_\x92\xcf\x03\x0d<\xe4\x84\x11\x8571K~\xf9\xbda\xe7\xb4\xe6\"\x1c\xe8>\x17\x9e\xa7n\xe1\xeb\x14\x08\xeb\x19\x8a\xf6\x18\xe4\xe4x=\x02\xfb\xe0\xae\xf0\xde\xcf\xf3!v\xf9u(E\xd5||\xeb\x95]-\x8b<\"e\xf9\x01=\x14\x97\x03\xc4e\x0d\xeb\xae\x9d7\x90)\"\xe67\x90\xd9u\xab+\xf0\xb2\xea\xabHS\x98\x02oXm\xf5@\xa5]\x7f|z1>\xbf\xbc>98\xff\xf3\x87\xf7=j\xf6\x88u\x0b\xe9\xd8\xc7\xe7GJ\x11\x84SJ\n6\xa7}\xd1\x0d\x06\xd9\x05\x9c\x9c\xfd<\xbe\x1e\xff\xe5\xf8\xe2\xf2\xf8\xf4O=\x1d\x9a\xf2\x0eL\x85\xb8\xf6\x9f\xd4\xa3\x8b\xf1\xc0\xf9 \x1b\xf3\xf3\x18M_\x8e\xffry}xvz9>\xbd\xeci|\xf5\xe8\x8d\x9f\x8fq-N\xcf\x8e\xc6=m/\x9b\xeb0T\xc9\xe9\x9e\xf2\x9a5\xa6>\x88\x1a\xb3{\x01\x9a\xd3\x05#\x9f\xe7\x94.G\xdb\xdb\xb7\xb7\xb7\xc1\xed\xb3 /f\xdb\xbb\xaf_\xbf\xde\xfe\xcc>kd\xf3\"\xa4s{\x99W\xdb'!\x9d\xe3\x9f\x93wZ\xc9r=3\x16{\xba\xb3\xb3\xb3]\xaeg\n\x01\xfe8C\xed%u\xd5\xe8\xe9\xb5\x0d\xf6\xc9\xc5\xc1r\xc9\x10(\xfe@S\xde\x0f\x19\x0f~\x1f\x85\xe9[y>*\x94P%\x826\xaa\xbfvV\xd3\x1f\xd6N^L\xa9\xad\xb4aI\x17\xac\x8e\x1e\xdb\xdb\x8cQ\x8d=s_\xed\xbc4\xd0\xf1\x99\xfb\xf4\xc5+\xcf\xcd\xdc\x97\xdf{AR\xfe\x1c\xa6I\\\xc9\xe6\x1a\xb9CE\x19\xdee4\x7f{\x12nV\x94\xe6\x99\xd9\xaf_4'\xd1\xa7\x9b\xfc\xb3\xf9k\xb2\xc0\xf8\xfe\xa6O\xf3$\x8e\x89\xa5\xd2\"\x8c\x93\xdc\xf2\x89\xa0\xed\xa6\xe9S\xb9\xbaY$t\xd4\xd2L\xb6i \xe9\xeb\x8d\xe2\xee\x0dv\xc8\xe3\xa0H\xfc.\xc9>10\xac?`x\x04\x99\\\xb8\xce\xab\x97N\xaf\xae\xb2\xde\xcc\n\x95X]\xadR\xa9\x9f\xc8\x93\xf2\xec\x10\xe5mR\xc7\xfc\xd5\xab\x9ev\x0c\xdePZ\xed\x88Q\xf5\xb4\xf4\xba\xd1\x92\xfc\xc5\xc002\x9a\xd2\x8a\x88\x11Ch-P\x18f2\xa1\xa8\x93\x19N\xb8.\xd6\x15\x17N\xcb\xee\xf0\xb7\x82\x84\xf1Y\x96\xde\xf1\xb78)\xc3\x9b\x94\xc4\x8c\xbcb\xfd\x1f\xa1\xcb\n\xe1 \xeb\xd7|%\xc3\x83\xc6\x10\xc2o\xd8\xad\xdfX\xd2\x12h\x0e!\xa3y\x160MH\x1a\xc3mB\xe7\xf9\x8aB\x98\xc1o\xb2\xc1\xdf`\x1efqJ\x8a@\x91\x93\x16$\x8bI\x01!\xb0\x8el\xe5\xac'XC\x00\xc7\\\x90\xc7\xeb+\xe7\xf9*\x8d\xe1\x86\xc0bEY\x171\xd4\xfeo\xc22\x0e\xbd\xf7\xfd\x16\xc0\x19\x9d\x93\xe26)\x19\x99@(\x90\x84\xbd\xab\x1d\xc8\x0b\xf8M\x8e\xf8\xb7\xc0d2n\xd9~$~\xf8\xfc?\xe2\x94\x8b\xbe\xfc\xb7\x98\xf4C\xd1\x97\x7f\xd2\xb4\xcb\xd2#H\x026\xf3\xbf\xeb\xc8?\xb5\xda\x13-\xdb\x9b\x16u\xc8m|\n\xbf\xcb\x99\x11\x94q\xdb\xfc\xbf\xd3J\xb0\xe5\x08\xe95\x9b31\xa9\xdc\xff\"\xe4S\xf8\x8d[~m\x82\xf3[\xd0\x0ckh\x94]::m\x00\xa2Oq\x0b) \x18\xbc/\xf2%\x1aE\x0c\x83\xcc\xa62td\x03^6\xbe\xc8\xa4\n-%\x16\xd1\xa4\xb8b\xc74\xe7\x9a\x1c\x06\x88\x8e/\xee\xeb\xf2\x0e\xcb\xa9D\xf5\x89\x83\xe0\xcd%\xdb\x89\x0c\xfb\xc7\xba5\xedV\xdb\x99T\x99\xafP\xd5\xdeN\xde.u!\x81|zI\xd4&d\xcd\x08\xfdY\xc7\xbe\xa6.V\x9a5\xf5\xf1\xb5\x8f68(\xbc\xa8\x12\xff_\xf6\xfew\xbdm\x1cY\x18\xc4\xbf\xf7U\x94\xf9;\xa7\x0f9\xa6\x15\xc9v\x9cD\x89\xe3\xe3v\xdc\xd3\x997\x89sbg\xfa\x9d\x9f\xc6G\x0f-A\x16'\x12\xa9CRv<\x93\x9c\xeb\xd8o{\x0d{\x01\xfb\xec%\xed^\xc2>(\x00$\x08\x14H\xcaq\xf7\xf4\xec;\xfc\x90X\x04\x88?\x85B\xa1\xaaP\x7f\xc4_\"X\xf5\x8d\x15\xc4\xdf\xee\xfb\xc4\xa6=\x8d\xbd\xeb\xa7\xea\x11\xaa\x8d\x84\xd9a\xf5Z\x1f\x81|\xdd4\x06i)vVn\xc6V\xc1\xb7+$T\x94Ql\xd7/\xe4\xfd\xa9\x1c^m|M\xb3q\xb4\"\xab\xc8vJ\xf2{\xa4\xfd\x10\xce.*\xf8\x1aFI\x10?\x1c;\xd5!\xb1\x08\xe8\xfd\x12|\xa7\xe4\x18\xb7\xcc2\xfb\xe2\x1f*\xf5\x8c\xa9\xc4\xb1]\x88\xa0\xd2f\xa0\xda)cI\xa9\xd5\xa0k7Z\x95T\x15N\xab\xcb\xd26|UO\xe5\x98\xb4/b*\x90\xb3@\x92L\x96\xc8h\x18\xc4\\@\x06\x8f#\x8a\xc4M\xb6\xc1\xc1\xaa\xa7\x95<\xd0X\xf0\x0dv\x06\n\x0bd\xae\xd6\xca%\xabN\x83\xdd\xa6)\x0e\xb9\x8f\x95\x8a2q\x9f\x8e\xcc\x87\x16\x0du\x00\x8f\xb0\x0e\xfeQ\xf0}\x82\xdc*\xda\x1f\xa2\xa0Xa>9\xe5FB\x80N-\xa2\xa4\xba\x9a\xec\xdbwFZl\xb1\x9a\xcf{i\x16#\xec\xc2\xedZE\xadV\xd1z\xff)\xa1\xfb\x89\xdd!%\xb2q\xdc\xa8cjW\x84\x87\x90\xb4\x10\x15\xe1\x04\xc4\x0fg\xcf\x9aK\x08*\x00#\xcd\x8a\xf89\x06Q\xb2\x071\x03\x7f+\xab\xdc\xb3G\x91H\x99\xb9\x95\xfal\xc4\x7f\xa1\xaa\x1e\xffp\xdf\xf8\x96\xd06\xd6\xef^\xc8\xd9y\xc1\x15\x9c\xeb\x0b\xb75\x10\x7f\x132\xa6^\xb7\xd0\xea\x12\x17\x8b\x18\x81'\xab\xaca\x85\xbd\x94\xbd\xceU\xd0I\xd7=\xb7B\x1e\x12b\xf5\x10\x91\x88wUl5\xfe\xe6\xa8^%\xb6\xaa\xc40\x84Z\xfcG\xbc\x8dV\xe9\x9a\xd1T\x07\xff\xc4\x97\x9f\xd8\x9d|\xf7\x89\xdd=\xc4Z\xd17\xcb\"Tf\x1bAV\xac/M\xaa\xbdCo\x08\xdea\xdf\x11y\xd1\x1bb\xf1\xae\x9d\xba\x9bH\xf8\xa3\x80\xfd/\x9c9\xf6=4J\x08\x14u\xf7\x1f\x8d\x0e\x87\x97\x8f\xae\xc3\x0e\xe7\x87\xbaZ\x1e1\"\x96c\xa3._\xc5\x0f\xfdV\xa0\xf4q\xda.\xa0\x1c\xee\xf2\xe2\xe1&@\x11\xe0\xf0U\x8466\xea\xa3\xb7)\x87\x95\xf8\x8dQ1Y/__ D\xf4w\x05\x83S\xbd\x18\x04\x81\x06M\xff\xb0\xff\xe5p7xx\x80V\xf8J\xd3\x8a\x07 \xce\xec\xe2\x8a\xf6\x0fP\x916\x18\xec\x9a\xd7\xe6\xf2z]\xde\xab\xef\xef\x05\x9d=\xda\"BN\xec\xb1\xe4\xbf\xd6l\xcd\x04\xdfP\x8f\xccm\xb7@h\xbbJ\xdb I\x94\x1a\xcf?\xfd\x14+\xe8C\x0csQ\xa9\xb8\xe4\x82\x8ah/z*B!\x11\x014\xb3\x8e@\x92\x04fF\x8a\x8e\xf2\xf7\x0b\xd8\xed\xe3\x95\xdb6x\xe0\xf3&\x86\xc0q5\x93a\xaeB\xf0\x02^\x16x\xa0g\xffs\x87\x16p\x9d\x1fh\xeb\xed\x1a^\xa2\x0e}\xad\x03\xbd\x01\xdb\xed?\xce\xdf\xa6\xeb\xa4h\x97\xa0\xd4R\xd1\xfd\x83n\x86RH3\x94\xdeXH\xfclZ\xdaT\xd77\x89!I d\xaa\xecr\xbb\x08\xed\x8b2\xd9k\xe9\xbc\x88U\xed\xe1\xa9mc\xaf-\x94\x9cEu\x84\xd2\xeeb\xbd\xf1\x8a\xa1\x95\xa9\xea,\x87#\xea\xad\x08\xbf\x88\"\x13\xf5\xcd!\x8c\x8a\xcb\x10\"\xebB\xbb\x11 \xaf\xa51^\x07\x11\x93\x91\x03%\xdej\x03\xa5\xbe)\x07\xda\xecM \x07\xfac\x9aM$-\xe8\x8aM\xf4bH\xe3\xder@Z\xc3(\x98\xf0\x11\x15fJ\x0crH\xf2\xe6\x1e-\xaa\xba!T3\x9aH#\xf4rd\xd8\xf0\x7f\xf0\x9e\x14\xac\xaa2\xbdo9l=\xc1\x82\xa6\xd4\x97\xbf|\x02\x99\x85\xf5_\xd5\x90\x17\x84\x9b\xa2a\xd2\x80\x86\xc9e \xf0\xb0\x0b0\xcfYA\x01\xd2\x05\xc5\xc4 E1[?\xa1\xc0\xf8\xe5\x0b\xd0\x05\x870\xba\x0c\x02\x85\xb0|\xd4\xa6{\"=jy\xe3\xe4\xd8=\x0e,\xa86\x8327\xc7h,\xac7\x96\xc9\x0e\xf9\xf9\xdb\xbe1\xcc\xe5\xec\x0093\xd6\x99.\xf7I]\xc0\xee\xae\x87#\xe7\x07\xea\x86l\xc77x\xc9'\xfe`/\xa0\xb8\x90\xbd}\x9a\x0b\xe1<\x86\xee\xaf\xa9\x8f#\xbd\xff8\xba\xdd\xed\xdeT\xc1\xdeP\x928I\xa7\x8c\x16j&\xf3(\xe3\xa5h/\xccP\x1b\xc0yI_(\xbaU)^M\x0d\x84?ARZ\x06\x0e\xf6\xf8\xde\x92\xc8P\xc0\xcbC\xd8\xdbE\xd5\xc1^\xa9[(`\x08\x1bJ\x9a\x15h\xad<\x15\xd2\xc5`\xf7)y\xdd\xbao\xde\xc2b\x98\xc7\x91`\xa1${si\xb0\xe3k8\x04u\x0d]\xe9V\xeaurB\xfbR\xaf\x81q\x0e\xcb \x80\xf5\xb2 \x86,\xa8+k\xec\xdb\x89\x85\x90\xeae\xde\xc3M\x97[\x18a\xf3\xf7\x18\xaa\x8b\x05|\xdfD\x8dJ\x0fdf,\xf2\x84\xe24\xa15\xe9\xd3\x0c\xe7\xa4\xd4Ex\xb5\x8c8\xa8$\xd2yO\x1a\xf7\xaam~X\x0f\xfe\x9e\xe8w\x01\xc2\x8eK\xf4\x94\x04\xbc\xea\xec\xbe\x08\xb5\xfb\xecI a\x8c>\x83j5\xcff!4\x82\xbe\x93\xbc\xa2\xf7\xe3\xcaJ\xd3\xb2eA&1\xd2a\xe7\xb3\xde\xd5]\xc1\xde\x08u\x12\xcd\xf8b6\x9a\"\xe8\xe5\xac\xf0\xc5\x0f\x0cb\xdd\xe6\xdec\x8e^\x05\x87\xc4\xf5\x9b\xc7yo<f\x9f\x0b\x96L1\x12]+\xf1\xee\x1a]\xc5g2~\x9dHca\xb7\xa3d\x81\xcci\x10\x82\xa3\xd3\xa5\x9dv'A\xc0\xa5\xd0\x83Rk\n\xa6#\xb5\xc3\x85\x89\xa0\xe0 \xfd\xacV]\xdf\xfe\x02\xe4\x8d\xa7_'\xa5\xad\xaa\xfc\xe8w[\xd5\xc7\xbf\x83yQ\xac\xf2\xe1\xa3G\xd7q1__\xf5&\xe9\xf2\xd1y\x11e\x13\x14V\xb2\x9d?D\x93O\x8f\xfep~\xf6n\xe7}TL\xe6\xfa\x97\xfe$\x80\xdd\xfe\xe0 \xfc!\x8d&\xf3x ?\xb3\xbc\xd0\xb3\xd0\xfe\x0e\xde\xbe\xbe\x00\xe9\xc1\xa2\xbd\xae\xbcRJ\xf07\xea\x8f\xa5\x1e\x92\xd5,#)\x81.\xa6\xe9U\xdd\x0e\x98\x91\x17{%B\xa9\x8d!++\xddj\xd8`=Y\x08\x1cC\x95 \xe1 \xaf$\xe9\xfa\nZ\xa3\xd4\x84\xe2\x92\x1a6 \xca\x052j\xf5w\xf5\x9bU\x16\x08\xb8f\x92J\"Gg\x06v\xb0FG\x01\x96\xd0I\xc8\xefv\xa4^\xb5\x0cY\xe9=\x12D\xd9.\xf8o\x0fS\xec\xca\xf4\xb8R/\xf4\xdf\x8f\xaeC\xf0\xfe\xbb\xefi\xba\xa2??\x12/\x07-f0k\xb7\xfc\xde\x0c\x16k\x89\xcaK\x02w\xa4-\xbc\xab\x1fe\x97\xc6y\xc5Yz\x0c\xdc\xeb\x88\xe4\x1c\xd7\x13\xf1\x94,&o\x89\xf3\x9f\xc8wb\x06\x9256\x8f\xf7\x14D\xeb\x1c\xb5Z\xa8\x8e:\xeb\xa8\xcb{\x93<\xca(q\xbd\xb1\x18\xda\xff`wxw\x84\xaf\xa6\x8c\xadN\x16i\xc2\x1a\x0f\x11e\xfa\xab&D\xc1MXv\xca\xd9\xd3F\x9dr\xd0Z\xa2e\xfc\xb3\x0c1\xec\x93V\xb5\xa2\xe1\xca\x9c\xb0\xb1mZ\xc5\xd0\x18\xc9Z]\\9\xb6\xecW\xcc@\x9fsI\xe7\x1aS\x95\xbb\xc1T\xd1\x15IABi\x80^R\x10x\x01\x19i\xdd\x8f\xac\x96o\xb0\xc7\xc7\x05\x06\x19|y\x08\xfbO\xc5\x05\xd9\x8bCx\xfc\xc4} \xc3\x9fd{\xbb\x81\xf8\x10\xd74|~B3\xfd>*\xe6\xa5R \x0e!\xe2EJmm\x16\xba\xc1\xa0\x00\xaam\xfc\x01n\xf2G\xfa\xc6\xff\xef\xbe\xd8\xf8\xfa\xbeG\x94\xc4\xa8\x0b\xc5\xfc\x03\x9b\xac\xb3<\xc6$\x86\xebP\xf8r\xf1\xf7mWB\xb8w\x8d\x8dk\xedX\xc5\x95H\xaabs\xab\x9e\xa7|(\x84s\xb8f\x1c%\xe84z\xda\xce\xd2u\x82~\xbcY\x9a\x16\x8e\x9c\x98\xe6~\xc6I\xce\xa3\xfc\xa3BhmB\xc0\xec`\xf3q\x15\xc4\xb0\x99{\x16&B$fuq\x8e\x01\xcb{ \x94\xfe&u\xec\xc5c\x90\xfc\x1a\x14\xf4}\xe4\xc0\x02\x02\xd9\xd4\xf3\x95\xcc\\V^\x94\xb9\xc6\xa7\xae\xdbb\xdf\xb4u\xd5\x9f\x08\x15\xaar\xd4\xeeyjg|\xd4qV\xe9(\xb9l\x99\x18\xb9\xdb\xaa\xe4w_\xeb\xb2~3\xef^\xa2E\xa1\x19(;\"yH\xc3\x12\x91\x92\xbdL\xf9\xa9l\x9cD\x96,\xe1K\x89\xb9 \x12\xf9\x13\x0fl.\x89\xc8\xdfe.fyh\xf0wE\xc6\x98\xe5\xd8EN\x14\xcd\xb5Y]B\xf0q\xdbh{\xa3\xe8!w)l\xb1:\xc6\xd0\xa8d \xcb7Q\x08\xef\x83\xc7\xa6\xbeD\x08\xefOLY_\xba8\x0e\x1e\x93.\x8e\xcf\x06OZ%\xac\x86k\x04\xce\x06Q\x97\xc0\xbc\x81]G\x19\x17\xf2\xf7\x1ce\\\xc8\xdfw\x94q\xf1\xfe\xc0Q\xb6\x82Cx\x0c\xea:\x9cH\xa2<\x05y\xfd\xbd&iV9\xd9\"\xe4\xb4w\xde\xc8D\xdf\x84\xb0\x0c1\xd1\x1bnKL\xea\x96\xfa\xd7A\x08W\x98kv\x8d\xd9\xe4\xf6\x82\x10\xc6\xfcL\xf1\xef*6\xfbV\x90\x99S\xf4\x05?\x82)\xefo\xccE\xa4\\\xfd\xeaW\x06R\xcfa\x0c/\xe1\xf69\xdc\xba\xb6*\xdf\xa6\xfe\nc_p\xa2,\xa3\xe4/\xe1\x10\xae\xfc\x1b8\x84\xbb\xd1\xede\x08\xb7!\xf0\xc1\x99Z>\xb3\xa1$\x80\xd3\xd1-\xe7\xf5\x974\x11\xe1OI\xc5\x96A\xb7TA\xa0\x18\x9a\xbdf\xbf\x17\xd0\xcfjw\xff\xa0\x9a{\xdc\xb9\xb9\x9b\x0e\xad\x1dtn\xed\xb6Ck\xbb\xed\xad\x9d\ny\xe5\xc6\xbd$\xda\x891i\xe4\x7f\x14\n\xc3\x11\x17K\x86\x80\xd9\xf5&p\x04\x13\x18\xc2i\xad\xba\xe9\xeax/\xcd\xa9\x14\xdb\xc4a^j$\x8a\x10\xbc*\xd3\xb7g\xfa^H\xd3z\x9d\x0d\xe3T\x13Sv\xa5Y\xfcW\x95\xde\x1d\xcf\xdf\xf2\xe5\xf1\x04\xed\xca\xa4-\xda\x0fQ\x1eO\x8e\xd7\xc5\x9c%E\\\xa6bpV\xff1\xcd\x96\xef\xa3,Z\xe6F\xad\xd5jA~\xfe\xbeJ V\xf4V\x19;V\x05\xaf\x97\"!1\x16\x9c\x9c\xbd\xfb\xf1\xf5\xef?~8\x1d\x1f\x7f\xbc\xf8 _\xfd\xf1\xf8\xcd\xebW\xc7\x17\xa7\xf8\x83\xbf=\xfb\xf0\xfa\xff\x7f:>\xe3\x7f\xee\xe2\xcb\xf7\xb2\xbaU\xf0\xe6\xec\xf7g\x1f/\xea\x1f\xe2\xaf\xf3\x9f\xce~\xc6O\xc6\xef\xcf\xde\x7f|\x0f\x87\x8a(|W\x81T\x86\xcf\xf5\x13\x7f\xff\xb1yE\x9f\xca\x92\xdd=\xea\xf2\x1e\xbf\x19\x04\xb5C*\x9f\xa7\xb7\xaf\xf8\xa2\xc6\x1c4\x9d|\x9e\xecm_`\xea\xf9 A\xa1\xa3\xbbE\x1aM\x87\xcdbG\xb9\x16\xdf\xd2;A\xfe\xbb\xf5\xbeH\xaf\xd3u'V\xdf\xd5\xf5\xea\xbe]\x97\x13?\xe3\x7f\xed~\xcb\x18\xa6\xf7\x1d\xc3\x04\xa3=\xaf\x05\xe2\x7f\xcb\x08\xe6\xf7\x19A\x1d\xb1#\x85\xbe\xfdg&\xfe\xaee\xd1\x9ee\x96\x92\x0bV\xa7OZ\x9e\x10nEJn\x13&\x1e\x15\xf5\x92\x8a\x1c{zJ\xacv\xcf\xa26\x89\x89c'{|\xab\x8dW\xe9j\xbd\xf2\xec+\x8c:%\xf0J\xcc0\xaa\xae\xea\xf4\xc3\x13\xc8kT\x9ab\xcaK\x17\xf9\xf1V\x19\x1b\x97\xed\x8fSD=/\xa4\x89\x98gU4\xa0?\x17}i\xc4\xd0S\x17\x97\xd8\xa6E8\xbd\x12\xe1p\x10^\x8d\x1a9\xe8o+NV\x9c\x1c\xc5\x95\x94\xcay\xdcp\xc7X\xb3!\xe2m\xd1cY\xd6XKx\xd2\xf3\xc6\xe8\xf2H\xc4,K?\xb1\x84\xae ,\xa8\xa5[#]e!\xf2RM\xe6l\x19\xd15&\"\xc2E\xb4t\xf8\xfb\x8b\x9b\xb1kV\xf8\xdel\x91\xdeR\xe1\x82d\xc4\xf4uO\xe2x/\xbf\x8d\xae\xafY\xf6\xf1\xf5\x076\xc5\xb8\xcf\x822\x85\xe0E\xe51+t\x063\xcep\x88\x1c;\xbd\x84\xdd\xf2e;\xcd\xcc\xa4\xfe\xea\xe1\x8d\xbc\x9e\x92G\x04\x7f\xf2t\x9dM\xd8P\xe5\x90\xa7\xe1\xc1n\xd8b\x08\xdem\x94%qr\xed\xa8%%\xc1!x\n\x8f\xc4\x91\xbf\x8c\xee\xe0\x8a\xc1\x1a\xddgCXEy\xce\xa6\x90\xa3y\xc5m\x94\x83\x88\x0e\x86J\x8e\x9ce7,\x83\xf7F\x95\xe4\xdf\n\x89ml*\xc2|a\x1eRQ\x9b\xb0C\x0cB\x88z\x18J\x0c\xed+~M\x10a\xafm\x00\xf2\xfb!\xc4j\xdd\x03?\xa2<\x821\x13\x97qH5\x0c\xdf\no\xa8\x1e\xdc C\x88\x88.\\$U\xa7\n\x14\xaf\xf6\xeb\x92\x04\xd6\xb8\x11c\x11X\xc3\xb9\x11\x059(\x13\xab\x91u\xd62\x84\x87\x98\xa0\x9b$Tu.\xac\x8bt\xf5L\x84zu\x11\xb3\xa4x\xedhk\xa6\xd59g\x93\x8c92\x9b\xaf\x9c&\xba\xfc\xb9\xce\xa2\xa4\x18\x8b\xf3\xdfS\x03s`\x1e\x7f\xf2I\xca\xabrp\xa6+\x96K\xfbF |\x16\x01\xac+A\xf5\xa0\xc7\x9e\xa3l.}\x15\xcd\xf7JKy\xc5\xa5 A\xc0\x16p\x04\xf3^\x9dL\x1c\x82\x87\xf2\x06\x9a_\xf2\x1d\x92\xf7\xae\x8a4\n\xfc\xa8\xcc\xf8\xba\xc6\xbbM^\x96V\xbbgEy\x9d\xf3G-:\x89\xfc\xae\x8f\x14 \x87\xb0&\xe9\x8a\xcc\xc1[\xce\xc2\x9f\xa0\x06`*\x97s\x1cs\x08M\x82\x10f\xf5\xf79\xae3\xdf<\xe8\xba\xd5y\xf2\x93r\xf2\xb3\x00\xd3\xec\x99\xf2\x9b\x83&\\\xa5\xd3\xbb\xa1ji\x1d/\xa6\\8{\x15\x15Q\xe0\xaf\x1c\x8a\xcdu\xb6\x18\x8a\xe0\xce\xbe\x87T\xe3c\xb60Y\x0e\xf5\x08\xb8\xc6\x0eD`\xd1\x94e9\xc9\x96\xf2\x07AH\xb2\xcdPR3\xe2N\xdcI\xafB\xb7\xb0\xf9[\"U\xa9\xac\xc1w\xdf\xb7\x10\xb3f\xe2\xb2\xeeH\\l\x93b\xfd\xa9a\xe7\xb0\xcb\xce\xdc\x84\x8a\xd0\xc1\x00\xd4S#lr\xfbL26eI\x11G\x8b\xbc\x9d\xc4\xa5m\xb4\xcdI\xa3\x1eb{M\xee\xb3e6\xd9{r\x83\xb4\xec=\"r~\xc7\x0d\xe4\xd6\xe9\xb4\xdb\x00\xb98\xf3D\xba:\n\xc6\xf6c\xb6hV\n;m\x8f\xb3\xb2\x8fV!\xa1h\xe5\x1b\x8a\x96\xadVt\xd8j\xc57o\xb5\x1a\xbaG\xfa\xbe\x1bO8\xc7\xefF\xf7 f\x08(z\x13g\xd81\xac\xa5\x0e\xa6!8`\xa1\xd5\x12\xc7\xd4\x10\xd6\xee\x9aj\x11\xc7\xeb,\x1e\x12V\x04\xd0\xb8\xc3\xb2\x07\xd8af\xd2U\xf5\xb4\xef\xb0t\x93\x1df'\x9c\xbe\xd7\x0e\xa2\x95\xa8\xff\xdcJ\xb5\xe7a\xb6\xd2o\xe6\xd4\xfa\xbbm\xe3\xbf\xff\xe6\xbc\xff\xf1\xb7\xd9\xe6\xfc\xa5\x8e\xbf\xeaZ\xe4\xc1x\xc7\x99C\x13%\x90\xfe\x9a\x152\xeb\x1f]+\xef\xc6\x7f.:i\xcf\x84\x824\x8d\xf2\xbds\x0c\xae\x9e\xbaR\x15 \xbdh\xbeb\x93\x96\x8a\xabrx-\x15\xa7Ho8\xe68\x96\x0e\xcbQ6\xa0+\xdc\x94W2(}\xcd\xe1\x08\xfe\xf6\x15\x9cR\xc6\x12\xdb\x93\x08AW\xb9\xae\xb7\xb8T-.\xe9\xeaw-\xec\xf9\x95\xd05dD\xa4 \xfe\x8c[4\x97\xb7p\x08\xfeJ\xc3\x07\x1f\xad\xe2\xff\xf65\xe8E\xd3)\xde\x11E\x8b\xff\xe0\xf0\x11\xd6\xfa\x82-\xa3\xdb:%\xae\xaf\xf4\xb2Y/\xce\xcf\x8e\xcf\xf7\xfc\x80\xcb\xb0\xfd\x10\xa2J\xa0\xbe\na\xd2\x13\xb1\xf7\xd9\xf4\x1cul\xbe\xc8\xac\x0cC\xa2\xee\x8c\xcfXV\x08\xeb^\xe2\xbaU\xd1-\x1c\xd5\"\xf6\x89\xa6\xb2\xaa\xa9\xdb@\\\xa6\x9f\xca\xb4\xf4\x87`\x08\xfa\x7f\xfb\x1a\x82,\x0c\xe1\x96\xb2\xe3\xe3[\xee3\x1c\xc2i\xe9\xd1\xe0;\x88\xc89\xd1\xbc\x93\xa8\xf2\xf3|\x85a\xcc+\xd9\xf2\xd1_\xf24 \xa1`\x9f\x8bG\xabE\x14'!\xfc\xee\xd1\xef\x1a\xa8\xbcw\"\x82[\xee\\\xdc\xad\x98g4\xf6y\xe7\xf6\xf6vg\x96f\xcb\x9du\xb6` ?\n\xa6\xb6b\x13\x04\xb5\xba\xa6\\\xb3z3VL\xe6\x8eY }\xfd\xec\xd8'\x18\xd6i\x08\xde*\xcd\xcd\xdb\x0c\xf5\x94d\xf5\x9c.\x97\x12\xfd\x8dc_\xe0i\xe18\xf9e\x9c\x1bt\xf3\xe2`N\xb3!\xac\xfd\xa0g\xbfw}\x9f\xaf\xd2$gD\x03V\x81\xd5\xc0\xd7\xa0\xc7\xf92\xbf\x99[\x02\x8d+\xd3,KYo\xcaO<\xf7\x92#\xf5\x97.\x91B\x1b\xfd\xe5\x0bx\xaes\x0d\xd4\x15\x88\xfc\x02;9\xd5>\xa3\xed X/\xfd\x84\x0e\xcc_\xbe@\x06G\xb0hWw\x83\xa6\xf2v\xd0Z\xe8\xa8\xd2\x86\x8e\xeaqhP\x7f\x13\x16\x85\xa0T\xe0yG\x158\x94\x8c\xc1\xd8=\x00\xa9\n\xb7\xf9zP\xdd\xfd\x03\x00\x8f\xf5\xf2\"*\xd6\xf9\x05\xfb\xec\x9a\x08\x85\xe6\x98\xaai\x03<\xaf\xacQY\xa0l\xfch\x04D\xcb\xc5r\xb7\x89\x9b]\xf5K\xec\x90\x06\xae\xf9\xa6\x0c\x00P\xfb\xc4m\xf2C\xe7\xa6\xd2\x1f%\xdbh!M*\x17\xad#}\x03\x8bL\xa4\xcd\xe6E\x99\xdc\xb9\xc2sp\xfb\x10\xbc\x10\x98H\x16%\xc2\x04\xe0\x0ft\xee\xc5\xbf\xc6S\x96O\xb2x\x85b\x9e\xfe\x91\xf6\xbe\xf6\xa9\xfeA\x93m\x92\x96k\xcb\xf6\x0e\x02\xa0|\x86\x00\xfd\xec\x7f\xf3\x18\xbd\x01\x1a\xd7^\xfd\xf6l\xab\x10\xad\xfe\x14-\x17\x82\x81s\x99\x10\x95\x19\xa7\xc8\xe8\xbb\x98k*\x15!U\xeb&\x12Y\xb3\x89\x84\x91\xbb\xb6v\xb7o\x0d\xac\xd1\xd8\x94\xdedR\xea\x89\xab\x0bk\x0c\x87\x1cM-g\xea\xc6\xc4p\xb2\x19\x91\x0fT\x13X8\xa2^\xcc\xb3\xf46\xe1\xa8\xaa\xd3\x9f 4q\xfe\xb7\xb7\xf4\x8b4\x9a2a\xc8vq\xf6\xfb\xdf\xbf9\x1d\x0b\xeb\x8bs|\xf5\xf1\xfd\xab\xe3\x0b\xfdU3^\x98\x16\xc5\xbf\x14Z\xacUh\x86Flh\xb1=\"\xb4\x11\xa5\xed\x91q\xd2s\x0e\x9e\xd9 *PrH\x16\xe9\xf5\xf5\xe2\x9b\xcc\xd1\x08\xe5\xe5}\xac\xa1\x88e\x93\x064\xf9X@\x8ep\xc9&\x96\xbf\xfcH\xcc\xcc\xd3W\xa0D\x9br\xb2m\xba\x86\x1a\xfd\xbf\x07\xf6\x97\xafK;\xadL}D\x07AG\x03\xfd<\xc3\x8bmi\xae\xcf\x92\x9b\x9aA\x7f!\xcd\x17\x95\xc9?\x92\x1b\xe4e\x95}?\xe7\xbcr\xcd\xe0\x7f\x95\xe6\xc20[\xfdz\x1bq\xc1M\xf5%\xed\xb7e1\x9e<zu\x11\xe1\x01}$\xeb\xaf\xde\x185'\xd1d.\"P(g\x84\xfcu\xf2&\xba\xc2J[\x03\xd5~\x9c|2\xbf\xe4\xef\xa4\xc4\xa6\xf7\xb3\xe0\xdf~L\x96\x98\nxz\x8ewy\xfc+cE\x009\x87\xcayv\xb5\xce\xe7\xef\xcbQ;\xd7Z\x83\x95\xb0Vva\xb8\xc7\xe5N\xe2l\x95 \x14\x865\xa0\xd8\xd5\xe4QnA\xae\xbe7\x02\x02\xdc\xfaV5'\xd8\xb8ek-)'m\x0d,~\x10\xda\xd3g\x01\xbd\xbc\x15V\xb8\xc6\x83\x0b\x7f\xce\x8a6\xdaVsG\xaaPFwH:\x04\xa6\x1cs\xabr\x1c^\xdft\xa1-\xcbG\x18\xc6\xb7h\x1c\xdd\xefY'%#\x83\x17\xf6\xc0\xe0\xc8\xe8\xac\x16\xab\"\xdc<\x02\xc0\xafpB\xe6\xac8\xaf)\x95\xda\xd6\xa6\x85\xca\x13\xfa\x80\x92\xca\xd3\x8cn]\xa7\xf51[8oQ\x93h\xc9\xf2U4!\xb9S'+\"g)5\xc8?\xa4\xd3;\x8c\xb0\xdc\xf1\xb6\x07\xe1f\x0f'\x91\x86G\xc5\xfc-*j\xc8\xdb\x1e\x17\x8c\x08\x9b\xb0\x16\x18\xc9\xd5sY$\x95\xc3\xa0.\x17:\x02F\x92\xd5\x0b\x11\x9b\xe0\xef\x05\x1a\xe2&\xe2\xef\n\x1a!\xfd\xfe\x02\xb0\xb1\xcb\xc4\xcd\xdfrs\x985\xb1z\xf7\x85\xd9\x10\x1c\xb7#J/Ih\xedZ\x80)\xf6\xf7\x1f\xa3,\x8e\xae\x16l\x93=(,J]\xd0,\xa9\x82\x0b\xa4\x9f\x18!?\xa7j\x996\x02u\x13\x0f\xeb\xa2n|\xecNXk$\xcd\x01\xf0O\xec\x8e\xa4\xaa \xd6q\xa8\xe5\x96T\x8fs%\x0c\xc9F\xe7\xa6\xcfO\xdf\x9c\x9e\\\x9c\xbe\x1a\x9f\x9f~\xf8\xe3\xe9\x07L\xe1\x1a\xe5{\xe3\x9c\x15c1\x07\xd3\xc4'\xd5?\xffp\xfa\x1f\x1fO\xcf/\xc6?\x9c\xbd\xfa\xd3\xf8\x8f\xc7o>\x9e\xd6Z\x90j\xe3\xf1U:\xbd\x1b#\xf6y\xb6,e5&\xb3T\x8d/\xfe\xf4\x9enN2Vx\xbfk4\x18\xd5\x1b<\x7f\x7f\xf6\xee\xfc\xb4\xa9E\xb1\xd3\x9b\x9a\\\xd7\xe1\xc5\xc14\xfe\xe3\xf1\x87\xd7\xc7?\xbc9%\xe6,\xa06\xbe\x91\x08/\xa7\x8d-\xde\xeb\xd8\xbf\xd1\x02\x95R1\xc2\x12\x7f\xb7O\xba\xc2\x0e\x1e\x9b\xf1\xad\x84/\xecc\xb3\xbap\x85}b\xbe\x16\xee$\xfb\x8f\xcd\xf0\xa8\x0b\xe19kjK&b,\xfbf\xf5\x99\x18\xcc\xb3\xc0\xf7\xe2\x82e\x11Fv\xaaWYq\xfe\xdf\x1f]b,\x14\x8c\x9c\x91p\x8e\x1a\xe2\x04\xe4K\xdf\xf4ui\x94\xd2@Sl\xcc\xe3\xbc\xbe-*\xc8:\xdd}Q\xfa\x9a\x87\xca\xd3\xd5l>\xf7\x13\xacdFQ\xe2+u\x17\xc2U\x08c\xe1\xea\xda\xae\xe0\xc50\x10\x98 \x0b\xf3R\x9c\x94\x9e\x8e'V~Z\xf5tr;\x15148\xe4\x1a\xf2\xad\x89J\x88\x9fM\xd5\x80\x96{\x1b\xebk\xdf$\xec\x16\x12\xe9\xa7\xee\xc8\xe7\xa6\x9eMT\xa9\x9b\x8c\xa8\xfbH\xec\xbe\x08\xf3\x13\xf4P\xc4\x10\xb5\xaf\x15B\xdb\x95>K\x07 \x0e[8<\xa4n\xe3\xce\x85\xd8k\xbd?\x11\xdc\x02\x1d#\x8e?\x9f\xe0\x10NF3\xcc\xfas2\xf2\xfe\xfd\xdf\xcb\x8d\x85\xafn8>\x9d\x8cn.\xed/\x8f\xe1\x10>\xa1\xc3\xb4\x7fC\xdc|\x9d\xc1!\xdc\xc0\x11|\x86#\xb8\xf5=\x96\x14Y\xccr/\x80!\x1c\x97~\xd9\xf6g\xe8\xd4\x85\xb1&\x84~\x1f\xfb\xef\xc9\xafyoF\x82@\x8e\xf5\xefQ\x1f?\x86C\x98\xf8\xefeT6v\x0b,\x08\x02\x8c\xe5i\x86\xbc\xe2\xd5\xc7\x98\xb3\x13?\\\xf8\xe3\x10N\xe55\xb7\xb8\x93S\xa8\xa0\xdf1\x8c%\x94\"^}\x16\xc24\x08B\xf8\xcc[\xc0\xbc_\xe5\x02\xf1\x1e?\x89X \xbc\xf5s\x19i\xf4\xb8#\x95\xf9T\x05c0\xb4i8\xba\xef\xbf\x87\xadk\x0c>\x8f[}\xeb\\,\x90\x1a\xda \x0e\xed8\x08a=*\xb8\xa8z\xcc\xff:\xe5\x7fMC |\xa49\xfc\xee\x9c\xf6ObNC\\D\xbej\xb7\xbe\x9a\xa6\xe3\xaeS\xc4Y^V\xd5\x91n8*\xcbU\x1d\xc2\x19\xb1U\xe0\x9a\xdeV(\xd8_I\x1f}\xfc\xff\x84O=\xe6S\xbf\n\xe1ntuI\\\xa8\xa2\x03x\xea\xa7\xbd\xf7\xb0\x0di\xefG\xf8\x1d\x08o\xff\xf3\x00\xe9\xef\x1d\x1d\x80e\xc3(\xf7\xfa)\xb0\x95\xf8\xfb\xfb\xa8\xd5\xddJ\xfc\xc7\x83\xc0\x9dQP\xf6\xf5\x04\xb6\x0e\x1d\x829?\x80\x0f\x02\x99\x9f>\x04/\xb2ds\x10\xc9w\x86\xedDL\xf5f\x83\xdc\xc0\xb6^\xe5\\!\xefg:\x07\xdaxLG\xc9|B\xe5\x85\xe1l\xc1^\xe0[9cd\xb0\x8d\x83A\xe0{\xafO\xc7\xef?\x9c]\x9cy\xf7\x0e\xb0\x11\"g\x92\x92\x894\x84\xc2\xd2z\xbdp\xc5M\xc3P\x82\xeb\x00\x12\x0ci\x89z{\x7f\x8d\xb0\xc0\xa8\x902\xc4/\xf1\xe1\xf32 \x0e\xbc\x84\xfcy \xbf\xe3G\xc0(\xdf\xde\xbe\x14f2\xff\x1d\xfb\x0bl\xed\xcb\x97\xaa5\x1a=\xcd\xa8\xe2\x9d\x17hw\x10\xf4T\nb\x1a\xa4\x99\xb8\x8fP\x95d\xd0\xdd\xcdzq\xa1\x01u\x0bb/\xb5\x8d\x0e&\x1d\xa7GN\x06\xd3\xac\x07\x8btj\xe4$\x8a\x08\xcdy\x8ca\xe8F\xf1%\x0c\xe9\x13\xc1\x0en\xaf\x07 \xad\x97\x1e\x19\x91\xef\xab\xc3hX\xffL\x86\x88:\x82\x08\x86T\xe4\xf8\xce\xd0\xdf\xdb#\xa0\x9f\x8d\xbc\xf1x\x92fl\xe7/\xf98\x9fG\x19\x9b\x8e\xc7\xe2\xa8\xf7]e\x87\xf0\xb7\xaf\xad\x1b\xcf\x01\xd2t$r8\xfa\xa9\xd0\x9c\xfe\xedk\xd02\x1f\x17=\xbd\x9fF\x91%\xeb%\xcb\xb8\xf04\x84-\x7f\x00\xdf\x03E\x01\x94\xf7\xb4\xaa\xb7\xeb\xa8w\x9b\xc5\x85\xaa\xb3\xef\xa8\xa3\x14#\xb5\x82o\xba\xd8\xa9Z.\xb7\xef\xfe\xe3\xc0\xdf\xd2\xb5\xd4\xfc\xddA\xe0\xcbh\xbf\xe0\x89?\xbc\xa6$\x1a\xa8g\x1e\x17p\x08\xd2\xa2\xaeT\xca\x8f\xe3\xfa\xcdG\xe8>U\xf8\x98\x98L}/\xda\xb3!Rj\xe0\xc71I\xc5\x12xyXQ\xc6#b\x15%L]<\xe34M\x98\x9d\xe0\x15\x86\x18\xcc\x0d2\x91\x7f\xa0\x9a\xdb\xf6a\x19V\x8f:Feg\x04\xaf,\xfb\x19\xd4\xfb\xd1\x10z\xc3cr0\xa0\x03R=\xde\xbb\xefv++4\x05\xd3\x8fC\x88\xc4y(\x17>\xf5\x0bS&V\x0f\x1e\x05~\xe2(\x15A\xa6]\xd1\xd2\xe4\x98rx\x01}\xe1\xd7\xfeR\xb8V28\x02\xcf+\x85\x00\xbeP1\xb6\xa4\x05/\xcc\x83\x00^\xc0\xe3\xc7\xbb\xcf\x0e\x90\xbd\x83\x97\xf0\xf8`o\xf0L4\xb4\x0d\x03\xe9\xa8\xc9iKd}\xcc+\x88\x06\x0e\xf6v\xb1\xf3\x887\xf0do\x7fO\xf6/\xeacG0\xc44H\xe2m\xbe\x88'\xcc\xcfC\xec\x04s\xd5D\xb0#\x9b\xd9\xe6\xe3\xdc\x91\x83z\xf1\x02\x06\xfd\x00\xb6\xe1\xe0\xf1\xe3\xbd\x83_v\xb7\x9b\xfa\x11\xa9\xab1\xb1G\x86-3\xe9\xbeT\xd5\x98\x1a\x9c\xb5\x0c\xf1a\x9e\xc6RWs@\xebj\x06\x96ng\"\xeb\x9b\x83\x94\xca\x9a'\xffT\xd6\x10\xcf?\x955\xfa\xf3Oe\x0d>\xffT\xd6\xfcSY\xf3Oe\xcd/\xa6\xacqjj\x06duw\x18\xd1\x03\xc7\xdd\xc9\xe3\xbe\x83o\xd3\xc2\xb3w\x12DQ\xfcL\xdb$\xa5\x0d\xf9\xca\xb7Q1\xef-\xa3\xcf6\xcf J\xe2\xa4\xc3 \xe9\x18\xb0d\xb4\x19\xf2\\}8\xe2b4l\x83\n\xc2\x19\xfb\xcc\x88\xc9\x0f\x1b\xac\x8f\x9e\xc8#4\xb2\x96\xc4\xb9\x9e1c%_\xbf\xceOK\xb9/,\xd27\xe9$Z0)\x1b\x95)Qpo\x9c\xcd\xbc^\xbeZ\xc4\x85\xef\x85\xde\x86\xec\xfb\xde\xde\xaf\xa2Dq\x04\xad\xdd\xa5\x95i\xc8o\xe5+6A\xfa}\x8f\x15\x95\xea\xb2H.hk\xca\x14\xcd\x13,\xc2CH\xfd\x16Q\x923?\nF\xf1e \x13\xef\xa4z\x92\xf3\xeeh-b\x17\x87J)h\xddR\n^v\xff\x89 \xab\\nL\x07/{`\xf2\xc4\x13Zs\xc2Y\xd9\x89\xca\xcdl\xb3\xb0\x93^\xce\x8a\xd7\xcb%\x9b\xc6Q\xc1l~u\xd2\x9b,X\x949j\xcc\xb1\xc6[a4\x7f2\x8f\x92\x84\x19~\x867X\xe3U\x9c\xaf\xa2bb\x98},m\xe5\xe55\x11\xca\xe7\xae\xed@CA\x1e\x0ea\x9b\x9fe6I\xe6'\xcf\xb5\x99:\x85\xce\x90\x01\x9a\xe1\xc5\xb5\x93\x9b\x95A\xd2x\x85\x10\n\x9f\xf0 \xa8\xbd1\xa6s\xd5\xcad\xdf\xc9\\ \xc2Q\xa5\xdeV5\"<\x96\xa7(D\xae\x1a\x9b\xac\xa5\xfd\x18]\n\xad\xed\xe09D\xd95n\xed\xbcR\xec&\xcf\x03\x95C\xa3,\x1d%\xdb\xdb\xe6I'\xf7\xcf\xf5h{{y\xd9\xb6<k\x9f\xd6@\xca\xf8\x8a?V\x03\xb7\xad\xb0C\xc8\xfce\x10\xc2\xf2;\xedUs\xb8/mu\xf4\x8f<\xb9\x05p\x08\x89\xff\xecY\xe0\xcf\x024To\x84\x1dro\x17\xf1\xe4\x93\x1f\xf9wh(>\xd0\x02(\x7f\xe5\x0c&_\x87\x9b^\x92\xde\xb6\xb6\x86\xb5\x9c\x0d\xcd\xe1H(\x13|$\x93\xec\x16\xe6A\x8f\xd3\xbd\xdd\x10R\xfcc\xd0K\x93*\xb4\xf9\x95\x08T\x1f\xf9qo\x95\xe6\x85\xdc\x85Hk\x06\x18\xcfi\xd2\x8b\xa6\xd3\xd3\x1b\x96\x14o\xe2\xbc` C\x9aN.\x86\xd6\x00r{\x93^\xbc\xe4=\x9e\xa3\x17P\xceG\xd6<\xb5\x89>\x06<@=/\x04\xefw\xf54\x07\xf6\x88|ON\xc8C\xaejK\x8c\x1c]\xa5\xd2$c\xd1\xf4\x0e\x03\xee\x89p|(]/|O\xf8&a\xaa\x15\xf7\x88\xf2^\xb4Z\xb1d\x8a\xf9\xe8}\xed\xab\xa0g\xb7\xdc\x86\xc3y/c\xcb\xf4\x86\x89\xc6\x90g\x0e\xcb}\xea\xf4\x1c\x80\xa6\xcc\x959+.\xe2%K\xd7\x85\x86\x11\x9c\xe9\xa8\xbe\x0f\xeaF\xb3\xd6\xf7V\xa4Y\xa4\xd5C\x98VM\xe0_]\xb9\x15\xf7`\x1b\x9doh:\x8a\xeaF\x9a\x1f\xbf\x19\x02k'\x9b]\x1cv\xdc]\x13\"\x1f\xc8\xae\xdb:n\x81\xde\xa6\xec\xce\x13:D\xff\xe0I{V3G\x9e\x8f\x0cie\xea\x17vj8\x91\x90\xa8-\xb5q\xdc\x9b\xb9\xb2\xfe\xfa\xfd\x10\x92^\xc6\xf2tq\xc3\x02\x8cl\x8f\xa9\xfc\x96\xb1\x96\xdfjC\xc0X\x10\x10\x80yF+\x01\x91\x0dDg\x86v&\x90\xe2\x00\xe9|\xf3\x98\xc7\x8f\xcb\xc9Z\xdaT\x91wF\xb2x[[\x9c\xc9\xf3>\xb0\xeb\xd3\xcf+\xa4\x8di-%\xe6\x86s\xb6\xf8<\x95\xb0\x81\x9c\xf3\xe3{\xe1\x82ZN?\xed\xc9\xab7\x11\x9aA^\\\x89w\x9cK\xb10>\"\xc2\"F\xd2A\xc0O\xf0\x161\xeb\x9d\xa3C(\x17ac\xb7\x05\x00\x88l\x9e\xb6\nA&\x8c\xf1B\x88\xee\x0d\xc4g\xae\xdb\x84Zf\x97Nr\xa9\xa6\xeb\xc9\xea\xc9\xc57\x1a\xd1\xee\x9eC\xa69\xd8Cyc\x12\x15\xbe'\xf8)O0\x1dB\xc2\xab\x875\x9e\xd5\xeez5\xbe\xf4]\xb4d\xbf\x8e\x9c\xbdk\"\xa2\xdc\x934~Z\xe6\x0fR\x9aylj\xce\x854c\xdd\x9eKaf\xcf\x14Z\x16.@\xbc\x92\x0e\xc8\xba\xe4&\xe0&lS\x8e`\x01- peF$\xcc\x98'\xae\xf9\"\xbf\x90\xda\xb7<h>\xd2\xccL|`\x1eH_\xad\xaedN\xa5\x92\xf4\xa6\xfeV\xd6\x9bii\xfdB`\xa3\xe2\xb2m\xc5\xcc\xe5Jp\xa7\x96\xb1C\x1el;\xa8D\xae\xf8\xc9\xa5\xe0\x8a-~\xa6\x13R\xb9Y\x94\xd2\xdd3\xf1\x1f\xef\x99\x18Ty\xeb\xd4\xfdr\xbat\xd9v\xed\xf4\xec\x80\xde\xa4O\xcc\xf7\xb1c3\x08\xf4\xb6\xac=\xe4\xbd\x93\x95tGS\x94Ey\x1e_;\xd4Q[\xb8\xb5[L\xaa\x944KE\xb4-\x1c\xef9\x92\x9c\xdf-\xaf\xd2\x05\x15[\x06\xb9\xe9\xe8j2e\xb3\xeby\xfc\x97O\x8be\x92\xae\xfe+\xcb\x0b\x8f<)e:\xd1'!dJ\xbf\xe4\x05\xbdY\x9a\x9dF\xad\xd1\x1a\nq\x86\x18\x0e\xadA(,\xc4r\xe1l\x1b\xf0\x0e\xca\xf3I\xdc\x95\x89\xa2\"\x08d\x98L\x0f\x93\xeeVn\x16_\xeb\xcc~\x9b\xd7\\\x84{\x9e\xc3\xdc\x94rC\xa49\x83PFK\x9f\x85\xa8!\x89{\xb3\xe7\x90\xc3KX<\xb7\xf9\xd2\xb2\xe5\x95\x90=\xd7\x9ap\xbc\xe0\xc2q(\x14!\\\xfe\xf3\xa7\xe510\xf1\xa7B\x98\xf1\xa7A\x88\x8a\x90y9\x86\xa5H\xc2u\x03/a\xf9<\x00I&\xa6!\xead\xe6\xa3eiQ\x95\x8cV\xa8S\x1f\xad\x1c2\xb8\x96a\x0d\x86\xdd\xb2J\xb5\xed\x9eA\x9f\xe6\xd7\x06\xa6nI\xec\x9e\xdd\x03j\xf7\xf8\xbc\xe0\x80s\x8f\xfe`\xf7 \xa8\xd9{<\xc5\xd7\x8f\xf7\x1e\x93)\x1a\xd6\xd4\x98\xa1t\xd7\xcc\xd2U\xae\xb9\xfdV)\xd4\x95_o\xc6f\xb9\xcc\xe2\xc7\x7f\n\xafh\x9c\x19\xea\xef5Jc\xf7\x9d\xff\x1d\xfb^\xd4\xdd\xa8\xd7\x9aof\x9c\x7f`\xd1\xa4\xd0\xf3\x10\xf2\xed\xa2W\xc9e>\xfd6\x9e\xb1\x8c\x85e\xe4\x82wg\x89\xc7\xbc\xbe[\x87e\xca\xf8\xa7\x8f\xbd\xa0>\xbf\x9e\x91\xd3\xbf\xbc\xaf\x0ceD\x05\xa2\xae\xcab\xafR\xb7\x85\xe0\xa9)\xd4u\x06\xfa$gi6a\x1f\xed\x00\x01\xe4j\x19\x1d\xfeX}\xab\x04x\xd6qp,\x04O\xeb\xba>\xbeE-\xab\xf1Z\xcfj\x9c\xd7\xf3#\xb3[X\xd4^\x1a)\x97s.\xd3\xe5z\x03ZkA\xfd\xcb8\x7f\xbf\xce\x98\x85\x15[\xfd&\x95AY\xd3r\xe5\xe2\x8di\xa5\xb9\x86\xa8p_\x82\x92\xf8\xcf\x02\x9b\xbc\x18<Z\xfe\x16\x930O\x9b4%PQ;\xd3\x80\xa9>\x0bc\xf5l\xfe\x90\xae\xafa\x861\x0c\xba\xfe\x07\x91\xcb\x13q\xb5k\x1fjk\x10\xf5+X;nb\xee\xbf\x04\n\xe8z\xc2\xb0\x07n\x9aT'\n^\x84\xef.\xf1\x17\xdf\xb8\xf5_\xbe\x97q\xdc\xed1q\xaf\xe4\xa1\xc9\xf0A\x7f\xd0\xdf\xfb\xc5F\x9a\xf8\x8f\xf7\xefm\x9d\x86\xe2\xd6\xd6`C\xd6\x98\x1eP\xed\x82\xf0\xfc\xf4\xe4\xc3\xe9\xc5\xf8\xd5\xd9\xf8\xdd\xd9\xc5\xf8\xfd\xf1\xf9\xf9\xf8\xe2\xa7\xd7\xe7\xe3\xb3\x0f\xe3?\x9d}\x1c\xff\xfc\xfa\xcd\x9b\xf1\x0f\xa7\xe3\x1f_\x7f8}\xf5\x0d\xees\x0f\xe65O\xc1u\xd7\x12\x0f\xa51\xe0\x01\xed\x92\xf7\xd82\xd0\x92v^\x074\xc3\xbd\xfb\xe4q\xdd^\xf4\xc9\xbe\xfe\xbb\x87)\x13=\x91k\xfe\xbcH3\xe65\x98}\xaa\x05\xed]i\xb3\n\xabV\xd2\xe5U\x9c\xb0\x0fl\xba\x9e\xa0\xd7gkKi\xcd\xdb\xa0j\xe9*N\xa6\"\x8c\xd0 \x1fY\xda\xa9\xb1\xd8\xd1X\xb4Z-\xee\xde\xc6\xd3\xe9\x82\xddF\x9d&\x189Z\x9ap2\x9fwia\xbd\xb1\x1b\x85\xe3 Ps\xe8\xd0g\\\x1bs\xd1\xd3o\xcb\x80\xc9|\xb0V\xf46\x8e\x8aFJO\x92.a\xf4\xb3\xda\xad/\xe7\xb1\x11\xf9\xc4\xb5\x98(38m-\x15\xf1\x16\xff\x88:\x9f0\xa5/\xc5BED*\xe5\xd3\xcf+\x8c\xf9\x00\xc5\x9c\x01K\xe6Q2a\x19\x14)\\1\x88\xca\xe9\xf6\xa8\xe8\x8ajq}\x16\x08C\xd9Z\x0d[+A\x8e\xa9h\x1bS&\xb0\xbf}H72\x99/\xa1g\xc6{j\xfb\xf5\x84pM\xe1\xef\xf1\x9e\xda~\xbd\x92\xa7W\xad\xa0D\x88)\xa9\x8e\x9c\xe1\xda\x8a\x1c(\xe2\xfa[X\xc6\x06&\xb0\xe8F\xe7MVS\x8bNM\xdc\xd0L\x8csAX\xd3\x82,\xd4\xe5]\xebj\x80v}M\xa5O\x95s\x98\xfaA\x08\xb32\x9a\x8dU\x0d\xb4\xa94\xda(\x8a\xd4\xdb\x0d\x15@\xea,\xb6\x06!\xef\xd5\x1e\x91\xfe(\xd9}&\xb23\x9f\xd9W\x14\xe63C\xfd\xc4\x84\xf9I\x08\x03\xda\x8a\x0b\xac]A\xbfu\xad\xe4\xd2\xbd\x92[Y/B;\x02k\xe9d\xf08X\xae\xf3\x82/\x19\xc6\xe2\x05!x\xe5=\xf8\x983\x98\xac\xf3\"]\xc2\xb2\xa4\xe8\xa8e\x88\xf2\xbbd\x02\x91\xf8\x9c\\^#-:\xeb\xa1l`\x0d\xe1\xdf\xca!Dw\x98\xb2}\x1e\xdd0\x88\x12(\x83\x1d\x83\x87jiPvG=\xf8\x89W\xb9K\xd7\xb0\x8c\xf3|\xc5\x16\x0b6\x85\x08PD\x89\x92\xe2\xe8\xdf\x1c\xa3Y\x11\x00P\xa7g\xd9\xfdT\x1a\x804\xce\xcd\x1dFs%E\x1bNSr\x7fA\x9a\xc2~\x85Y\x9cD\x8bEc\x1b\x03\xfb3\x9b|\xe8\xf6\x12\x9c\\\xcd\xc4\xd9 \x93\xa6k\x89\xe1\xb7\xb7]\xc8\x7f#3\xb6\x17\xa3\xc4aD\x92\xb6^\x80\x82\xa6\x92\xfb\xce]m\xe9\x0c\xc8\x15\xf7^\xbf{}Q\xff\x94V\"\xadI\xc3L\xb5hd\xec\xf1|}\x95O\xb2\xf8\x8a\x91\x11\x96\xafKq\x87\n\xf5\"\xe4'\x89$m\x92\x1f\xdc\x9bp\xf2\x93,a\x9f\x8b\x0f]O3\xf5H\x1d\x0f\x05Y\xf58!\xac\x1e*Th})BX\x8f\xd2^\xd4j?sS\xf9)\x11I\xacu+Fz\xb8\xdaJ\xb5C\x1a\x14\xb4 5\x91\x0e\xeb\x8b\xbb\x15\xa3\xe0\x9d^\xc9t\x89\x12\xd8\x8a\xec!\xac\x9d=\x96\xe4\xb6\xddJ\x9f\x95\xf6\xd4\xe2/\x7fn\x9e\xeb\xfaC\x93~@)\xa2\xe1pQ\xa2Ma9\xc3\xeaO\xa3\x0d\x82z\xd6\x89\x06\x7f;l\x90z\xba\x9cQ\xf8&\xe8\x843P\x0d\xcf\xf2&\x01\x81|\xcc\xc2\xc6\xf2\x05\x11)\x87\x0b]\xb4K\xecc\xeb\x0e0&Q\x91\xef\x94!x\xff\xfe\xef\x9c\xb9\xfc\xfc\x88\xff\xac\x07\x93\xff\x06\x89Z\x17\xf1\x1d~i\xd6\x9d\x8d\x14E\x1f\x9bWB\\\x1a(o\xc7\x84\xd8|I\x84\xc2Qfk.\x9f\x87\x9cp\xfa\xad\xd7\x10\x1eh\xa5Mo\xad\x8c\x1f;\xb9a\xb3X\xaf!\x92\xb9\xe2\xb5\x81\xe8\xa6v\xc1\x1c5\xea4\x90{\x89\x91{\x01\xcc\xd7\x8a\x7fm\xa1hS*\xdal^\xbc\xc0\x1b\x93\xc8b\xcbxs\xa8$\xe6\x1cIQ5\xd1\xb7\x9bH\x90\x1d\x17\x8e\x07a\xcd:\xda\xb3mY\xc8\xa3\xca-\xd7%\xba+2\xbe\x91\xf0I\x02^uV\xa1\xf7\x83 \xda\xe3~\xd0\x8bzB\xa3e\x82~cm\xd5\xa6\xf5\x9dkm.u\xc9\xcc0\xf2.\xacP\x97\xc7x_\xa6q9exIq\x19\xa8Y\x83^\xda\x8b/xQ\xc5\x18\x95\x08\xd0|\xda\xd0\xac\x8d\xdd\xf8\x80n\xbc\x18\xf5/I\x04)zBz\xf5k\xb0l\x18AWB\xca\xfc\xa2\x87j\x18\xc9\x80\x87\x15T\x88\x13\xc88\xec\x1fDq\xf8`J\xbc\x10\n\x15\x00\xb9\x8b\xf2S\\\x10\xd5(\xb7&}\xc0\x11xq\x12\x17q\xb4\x107P\n,*\xabr\x91\x82\xae\x9b\x83!\xa6\x1c\xbf\x89\xd3u.\xd3)gl\xc2\xe2\x1b6\x85\xab;]\xffP\x8b\xec\xaakM\xcb\xd1w\x81e\xb5g\x9f8\x9cQ-\xdb{y\xb1i\x1e\x19\xca\x84\x9frG\x1d\xc0#\xd3\x98]\xb8Q\x1cA=b\x02\xe5\x90\x86r\x0d\x1cA^\x1e\x07e\xc5j\xf5)}5GJ\x8a\xba\x13y\x06\n\x97Q \xaf\x1f\xfb5\xcb\x95\x82KXh\xc3kW\x8d\xf4\xaa\x0bL\xee!\xe8y\xc0\x17\xd6\xa3i~A4\xa6\x08z_\x18\x9fp\x1c\xe3@,\xf8\xaf\x9d5\xc7\xaa\x9d>G\x96d\xb3\xadS\xed{\xa7\xbd\x9c\x96\x0f\xa8\x84\x0e\x9e>\xe2\x08\x92\xb6t\x87\xa5G\x1f\xbe\xae\x0f^_\x0cm\x80Ay\xb6%\xfe\x9e2\xf0\xde\xdc\xfc\xb6\xcd\xbcag l\xbf\xe5\xa9\x8b\xb6\xf4}\x18j\xb1\x01\xd2\x92\xb0g\xc1s\xd8\xde\xe64={\x1e@*\xe8y\xe1\xb3Qr\x89\xcaT\x87\x1dh\xba\x19\xd4\xb5\x83\xf1\xc9A\xe0{E\xfaq\xb5b\xd9I\x943\x97\x15'}Hv\x02\x0eqA\xaf\x06\xb0C\xd8\x1c\x8bh\x97\x94\xaf\x7f\x81>_\"%\xc6!\xec\x14\xf0\x12R \xcb\x14\xb6\xd1h\x0b]\x81\x12Y\x90r|\x0c\xca\x8f\x12\xd8>\x844\x10\xe0\xe6\x1f'\xf2\xe3\x04v\xf8\xef\x97/1v7\xff\xe3\xd0\xcczU.h\\.U\x8aK\x95\xc1\x0bH\x9f\x07\x10\x8f2\xb4\xa5\x19e|$\xf4a\x17\xb7\xac\x92\xb9D|.\xc2\xc2\xd5\xf7F\x7f\xfe\xf3z\xb7\xdf\x9f\xfe\xf9\xcf\xeb\xe9\xd3~\x7f\x87\xff?\x9b\xcd\xfe\xfc\xe7u\x7fO\xfc\xec\xef\x1d\xf0\x9f3\xb6\x8b?glw\x86\xdfL\xf1\xe7n\x7f&J\xfbL\xfc7\xbb\xdc\xdc`W\xce#\xe9\x15,/\xdaM\xcf\xbabG\x08\x19\x85 \xa9\x03A\xe2\x86\xbdD\xac\x1a\xdee\xc6\x12\x03\xf8\nmo\xa7\x97\xb8v)\xbc\x80\xf8y h\x9e\xcfw\xd7(\xbdD\x0f0\xc76\xdb\x90\xb8U\xdbl\xf0\x9420\xae\x84\xf1J\xcdA\xc6\xd7\x8fI\"\xe3\xd6\xb3\xa0\xe1\x9a4\x04)\x9c\xf6\"\x05\xad\"H\x89[\x83\xa4M\x84US-\x99,ZQ-v\xde\x11(\xdeLXldhx5\xea\x13\xa6\xcf\xa0\xd6[\x04*\xb7\xc5{<\x0f\xb9\xec\xe5\xa7\xd5A\x17c\x1eHs\" \xc7)r`\xd7\x07`\xd7,q]e\x00\x88{9o\x14/\xb4\xbe|A'\xc1\xdaG_i\x94)\xbfO\xd8\xad\x1f\xf7N\xf0\x17\x97\xe38\x0bo\xe0\x13\x7fT\x15\xcc\x8e\xa0\xef\x9ax3\x94\xb3ng\x05\xfbd\x19\xf5\xc6\xba\x04}\x9c\xdf%\x13%,\x9b\x82tM\xd6vUZ\xeb\x95~\xcf\x12\x116\xc0U;\xd7k\xbf\xcf\xd2\xcfw\x97\x8e\xab\xf7\x16\xf9\x18\xad\xff\xdb\xc4\xe1\xcc\xe5F\x81\\\x0c:\x95\xe2_\xeb\xf2\xaf\xb8\xfc\xab\xcd\xc8\x86\xa2\xdd\xb6\xd6\xa1\xc52\xb8y\x92\xa5i\x17\xb5\x01\xdd\xeax\x0d\x11m\xff'\xfe\xb4d\x86jmY\xf8\x8fm\xd2\xecWj\x11\xf4\xd4\x10\x1b\xa2\xfa\xa0\x1f\xf8\x89\x7f\xb0\xff$\xd8\x88{ih\xd0\xdc%b\xf3\xec?i92\xcbKo\x19\xfa\xc8q\x80\nv\x15\xad\x0c\x95.\x06\x8a\x92h\xab\xa2-\xe53\xb4\x95\xfa\x89\xf0kV\xf4\x1c#\x02&h\xae\xaa\xf7\xc7x\x97m\xa7r\xc3\xacim\xdc\xee3\xda0\xe4\xc0\xca2\x14\xa1\xb1n\xed\x15\xa7\x07\xbbm\xd8\xae\xd8\x80<\x84E\x08\x13\x8a\x19@g\x02\xf8\x9e\x0c \xaf1\x8cv\xa9\xc8\xa8Dq\x07x\x1f\xc6\x019E \xfb3@\x1f\xdd\x97\xb0j&%\xc2\x8f\x9a\x9f0\x94nm\xce[\x11\xc5\x9a\xe85\xc7%\xb6\xdb\xbaq\xf08Kq\x87f\xbd\xbf\x96`\xe0\x12\x17?\xb63B\xf4\x04\xc5\xf9\xa0\xbb\xb8\xa0N\"!k!dE\xce\xfb\xdc\xc0\x0bX=w\x1d\xe5\x98\xa7\x96\x8c\xef\x02\xd2)\xba\x18\xdd\x10we\x1c\x00y\x80M\x8c\xf9\ns)\xd9\xbf\n\xe1\x0eC\x1d\x15\x88\xa1\x13\xcc\xca\xe8\x8b8F7\"\x9d\x13\x7fK\xb7\xa6\x99r\x8c]*\x1f^o\x1c`\xea\x9a8Y;\x92\x0c.\x0d\xcb:\xfd\xb9\xcaX\xf4\xc9*\xb1I!:\xa77\x8db\x0b\xa5\xf1V]V\xed\x93\xd8\xbf\xc6j\x9cA\xbd\x13\x9a\x1a\xbe\xfb\x17\xd2\xcdTl\x8bIP\xe1\xd2\xb50\x06p&\xbdl\xea\xb1 \n\xe0\x84\x04\x90\xd0\xf8*\xe2\xa7\xc4\x18+\x86/\xd0\x15\xee\xa3\x85\\\xdar\xe0\x8e\xe1|\xeb\x82\x90\x87\xc8\xa4'<\xcaQCZ\xfe(\xeaN\xe9\xf8\xd7\xbd\x84\x95o\x92\xf35\xc9\x9e\xc4\xac\x9a\x98\xefT\xcc\x97\x84\xa9e>N2\xbf\xf7$\xe8}\x8c\x93\xe2)\x8a\xb1\x0fr^\xee>\xa3B\x80r\xb1\x87\xbe\xc79\xd8\xbf\xaf\xe8)\xe2\xa5~\x93/\xddSz\xac\xbb\xedcr\xeb2b\xa1\xa5q(g\xf8l\x8e0\xf4_\xe6\xc7!$\x1d<U[\xb1\xd1\x01\x9f\xd1\xe5}\xe1r`)J\xd5\x1a\xd2N\x86.}\xebS\xf3\x8aN\xbaa\xed\x99\xcd\xe4\x12u\xcc\xfa\x0b\xe2.\xce\xb8\\\xeb\xb0P\xd4*%\xca\xbf\xb0V\x02\xf2\x06o\x0b\x95\x9at\xe4\xe6YY\xbe\x85\x96j\x11Yke\xd4\xdaB\x8e\"'\xebNAry\x13\xf4\x00\xe4\xff\xac\xecZ\x9c\xd5\x98\xa2\xa7R\xa5,\x14\x02\x04?DG\xc4\xf9\xac{.\x11,\x01\x07\xc3\x12\xe2\x84\x0b\x11[\x85\xa0\xd7\xa5\xd7\xe3\x12\x05[\xe4\x86J\xb7X\xc0\xac\xf68D|\x9d\xcef9+\xaa\xd7\xde*\xcaX\"_\xe0\xf7+Q\xf1j=\x9b\xb1L\xabxuW\xb07F\xa3\xf8\xf2Lk\x12[X\xfb\xcb\x10n\x02\xfc{.\x0e\xbb%\xbd\xb5\xe6\xf7\xc6v\xcb\xc3Qa;%\x1f\xf3\xf7&o\xcc\xd1\x1d\xb5Jq/\xce/\xeeVl\x8a\xf4\xd4\xc6\xfd\x08\xa3TE\xa8\xe3\xa0\x11w}?\x12@\xa1\xb9yKfQ+\xa8]\x91\xf9\x89efY\xff\xab3@\xf7\x9e\xb6\x92O\xc7X\x998+9*v\xf0\xf5\xfe\xc5\xa1\xa2\xa4lqK\x8d\x1e\x92*\xe2\xa0\xce\x8c\xa2\xb8\x86!5\x05\xadz8H\x1e\xec\xd3\x9a\x9b\x83\x0e\xfe\x10\xee\xb9\xd7\xfc\xc2R9\x82\xac\x0d\xda\x0d\x83|\xd6:\x18\x8a\x04+5\x8cM\xb8\xc4\xc5\xd3\xbf\xc2\xc0\xad\xa1)0K=\x97\x83wP\xf8-\xeaI\x0b7\x9b\x81\xa5\x08S\xe1\xce(\x02\xf0.zg\xef\xfeG\xff\xf9\xe7|\xfb\xcb\x9f\xf3\xed\x7fytmo\xfbG\xff9\xda\xd9\xbe\xec\x7f\x1e\xf5w\x9eE;\xb3\xcb\xed\x7fy\x14\xdb\x07\xe0\xa3\xff\xec_\x8d\xfa\x03\xa2t!J\xd3Q\x7f\xe7 Q\xccO,L\x92\xfa\xda\x15\x13\xaeY\x99\xe4%\xeb\xe5\x95\xa4\xcf\x95\xc9\x98\xda\x92\xb6X[S\xb0\xc5vy\xe6\x08\xd2\xa5\x16\xdd\x11\xd7^\xc6\xc6\xc3\xa8\xf5\xf2o\x9fSJB\x88\x93!\xb6\x85\"d[\xc4uv\x05?\x07\xf3fu\x8b\x98\xa54\xca\x95\x91\xad\xb6\x8d.\x99\xcc)\x8f\xd6\x8f~\x14\x82G\x99\xd3'h\xfa#\xafCH\xcc\xc5C~\xa1\xaa\xc0\x11L|&M\xdcw\xd1\x8a\xe3\x08va\x08O\xf9\xac\xd7Z\xb5\x18\xc7t_\xec>p\xa4D8x\xfc8\xf03\xc7\xd6M7\xebc\xd0\xa7\xa3R<q\x1c\xa1\x16\x07\x18u=9h\xc6\x1b\xa5\xe7\x88\x13\xde&m\x0dfB\x93\x17\x1e\xb4$\xb5U\xdb\x0ck<\xaeE\x8e\x8d\x18\xb5k\xa51\xcb\x10\xf4\x9b\xfa\xb5\xb8\x84\x8e\x13\x10\x953?\x19\x15\x975k\xe7N\x8bF[\x8fh\x17\xe3\x0d\xd7c\x89?\xd87\x1d`t\x10^\xd9\xf0(\x83\x1b\xee\x1e\x0c\x8c/\xafz\x1fX4\x8d\xae\x16L9'\xdf\xd5+$\xfe\xe0\xd9^\xd0\xc3\x98`\xa7\xcb\xb8(XF\x03\xbc\xf1DR\x8f\"6=\xe53\x91\xfbE \x81m}@\xc4Q\x10\x02\xc4^\xdf\x14 \xa0\x8a\xbb\xb8?\x08z? #J\xf3\xfc\x85& \xd7\"q\x04V\xc0\x9dR \xe9\x0f\xfa\x07\x06\xe0f\xbd8\x99\xb3,\x16\x06\x06\xfeS\x13\xb07\xd27\x86\xef?\x93\x8f\x04)\x0cPZ<\xfe\x1e\xd9\xe9Uo\xca\xae\xd6\xd7\x8b\xf4\x1a\x8e\xb4\x1fH\xdfX\xb4\xc4\xf8\xc9-c\x9f\x8b\xa8\x06\x89\x7f`\xf9\xf9\x81\xd4\xc6p`>qN\xcd\xbf\n!'&v\x0d\x870\xf2X\x96\xa5\x99\x17\x827Y\x08\x7f5o\xca\xf2\"K\xef0\xb0N\xb4\x16\xef2\x96\xaf\x97\xcc\xbbt\xb9\x08\xdd9\x11&\x06y\x1b\xc3a\x88\xde\xe0ROf\xce\x154\x1aU\xe8F\x86\xb1]\x0f\xbd\xc9\xc5\xed\xd3\xdbt\xca\x9b\xdc\xdab\xda\x0b\x19Z\xd9\xb7\xeb\x99o\xbe|\xc1O3\xb9\x7f\xce\xca\x12\xc7\x1d\xa40r\x98\xc7\xd7\xf3\x9f\xa3\x82eo\xa3\xec\x93\xbd& id\xd5\xeeO\xed\x1f\xac\x89\xd1\x1d\xc1\xe0\x00\x8608\xd8{\xba\xef\x80Bm(\xfc,\xe0S\x12'\xa42\xa5\x10\xb0\x88\xaa\x82(\x90\xd9c\xd6!\xdd\x08\xc6\xfb\x9d-\xd24\xf3\xedr\x15\x96@\x08\x8a \\\xeeo\xca\x84\xed\x18\xe4R\xcb\xd8\x1e\x8b<\xe9\x9c\x8f\xd5_\x9d\xa4k\xf4\xa5W\xf5f\x8b\xf4V\xa4\x1a\xd7j\xb2D\xa4\xc8/\xf3\xb5\xb3d*\xe8W\xed-\x87\xb2\xf8\xb6|\x85.>\xc2\x9d\x05\x7f'\x8cM\x15\x91\xac5(Z\xa3\x8a\xd4\xda\x89 \x8aF\xfbbC\x9cO\xe6l\xba^\xd4G#\xf7\x8f\xf9\x12-\xe9N\x93I*\x87\xca\xacw\\\xae^\x17\xb3\xa7*\xe3|t\x1b\xc5\xc5\xab,\x8a\x13\x0dNr\xaeo\xd3\x8c\xd5\xdb\x9f\xa4S\x96\x99\xe0+{\x13oY\xf5\x8a\xa3\xc4\x1c/\xb2\xe6\x92\x82<\x0bzBE\xf1J\xb4\x15\xd8M\xb3[\x98\xfbU#\x81\xdd\x8fVX\xc3W\x97\xe7\xd7\x95\xdb\xf3\xcb\xa4\x1c[\x88\x8b:e\xb8\xaa8\x08>\xb4+\xd2\x95\x0dG8\xce\x8c\x03\x92\xd7\x17DK\x04\xa9\xa8\xad\xb8\n\xf1 \x14\"4\x03\xcc\xebV4\x06\xdb/w|\x10\xba\xd8f\x89\x1b\xda\x87\xea\xcdaU\x1a`\x14\nW\xdcx\x07 \xc7\xd5m\\\x16B\xeab\xe9%\x17\xc1\x0c\x88\xd8`\xabL\xcd\xe1\x08\xfc\xc8\xd8c\x9d\xf8\x04\xd4\x8d\x8b=\xac\xd6\xc9\xee\xa7\xaa(\xf1\xcc\xd5\x1ah\x9c{Y\x99\xb7\xde\xe4b\"\x94\x01\x8a*!\xd4%\xddRy\xd3\xc2*\xb1\xd06o\xb8N}aX\xb1\x91d'\xf6\xed\n\xa0\xb9xI\xb9\xfa!\x9c\x93\x97\xf7\x1ct\x11\x86.\xf2\x91f#\xbew\x82+B\x81\x9es&\xa2\xe4,zq.\xd8'?\x13\xce\x07\xfa\xb6A\xcd%e\xbb\nztn\xa5*1NKa\xa8W\xf7Mz\x9d\xdcD\x8bx\nI\x9a\xec\x88f\x1f\xc9\xc3a2_'\x9f<39\x9dz\xf0\xb8wLDnk\x02n\x11F\xb0\n!F\xe1\x93\x13p\xbf\xe4bb\xcc\xc7c\x0cY\x1a\x9c\x96\xf1\x97\xfb\x1c\xa3]\xf37?&\x93\xc5qi\x16\xb3\x0bi6\xc7\x1c6\xcdv\xde\xc6\xdc\x16\xbdY\x96.i\xdc\xc0 f\xfc\x94\xd6\x8f<{\xbe\x9aC\x9e\xe0({\xeb$\x9f\xc7\xb3\xc2\x0f \x9a\x15,\x03\x96L\x81\xdd`\xf0\x8f\x00s80\xb48\x10!\xfa\x10X\x02U\xbb\xb4\x8d[F5|z\xf6\xa3h\xd2\"\x0eQyd`nK\x0em\x8c\x0bXn\xda\xdb,\x96\x97{&\xb4\xa5\x8e\xaeJ\xf5\xa5\x8fw\xc0{\xfbT\xed\x9bz\x99\x0ci\x8c\xe9\x9ej\x03\xa2\xb0\xcfT,\xb6\xad\xd5\x16\x93`\xe2$\x84\xd5\xb9 \xdc$r\xc0/L\xe6\xb0b\xba\x98\x93\x8e|\xf5\xcd\xf8\xe3\x0e\x1a\x7f\xab\xd1xj\xc0E\xc9E}\xff=\xd4\xddEp)\n\xc1\x16\x1d\xf1)\x88\xb5\x9eFE\xc4\x97\x1ac s\xa0\xf9}\xb1\xa6\x1d\x89\xa2@\xd2\x92\xa6*\xe4Kx\x1b\x14\xa5\xad\x01\xee\xfb\xef\x914\x06\xa1XT3\x10d\xed\x17\xed\x94q\xa5\x87q\xf2J\xc6\xeb\xdb\x93\x9f\xea\nc\x82\x7fP\x01\xad\xea\xaf+\xce\xcf^bB\n\xae\x8d\xc7\x89\x80\x8e\xee\xfd\xc6\xfe\xf9 \xdf\xee,\x13\x82\x06\xbf^\xc5\x88,\xd5\xdf\xf5\n\xe3u\xa2\xd7)\x7f\x19\xb5\xaa:\xad\x87\x99\x90\x06\x10;\xd6\x8b\x05G\x10+\xccw\xbdq^\xb7K\xc37\"EE\x06\xe4\xf29\xc9AVG\xf4\x04\xcfoC{Th1\xdb|\xa4kxld&7/r\x15eu\x86\x9b\xa1;\xa1 \xfb\xc2\xba\x07U\xac\x9e\xf4\n\xc3\xa0\xa9\xe3*\x1c\x1a\x126;\xfcH\x1d&r\xcf\xb5\x9e<r\x8eZ\xf3B&\xe0\x1c\xca\x96\x19Y\xb8\xdeE\x9c\xbf\x8f\xd69\xeb\x9aYmK:\x93\x11\x18*\xe9SSg9\xd3\xa5\xa4Ns\xea&\xc7X\x9b\xc5\x10k\x1c\xf5t\xe1F\xd4\xa8\x8f\xdeV\xac\x9c\xc2!<\xdd{\xfa\xf4\xa0\xff\xd4\xa5/\xf9\xecD\xdd\xf2r\xed\xc5\xa1H\x8ah\xd3\xf1\xa2<\xb2\xfbHf-\xea\xcc\xc4\x85\xd1Q\xfd@\xd0N\xd5\x924\xcfY4\xc5\x04\x18\xaalXU\xc3\xec\x98/\xa10\x0e4\xc1D\x9b\x1a\x83vBVN\xec\xe5!\x9c\xa2\xee\x9e\xff\xcf;\xd9\xd9\xe1\xb2\xd6\x17>\xe4\x97/_\xc2\xa0\xf6k\xb7\xf6k\xbf\xf6\xebi\xfd\xbb\x83\x10\xd8\xf6v`:]\x83\xe0\xb6\x03T>\xbd\xa8q\x17\x0c\xe7\xab\xa0\xa9\xcf\xbc\xb04\x06\xfd\x10\xfa\x1dc\xdb\x9c\xd3PPW*\xed\xc2\x97\xdd;\x97\xf3-e\x05\xc7\xfa\xa9\xef\xf1\xd7\xea\x9d\x17V\x8b\x1eP\xdfH\x9d\x88\xe2\x04\xd2*\xf5\xc6 \xba\xa3\x0d\xe1\xa4f\xe6\x02\x0d\xf3<\xa1\xe7)\x87\x04j\x92\x9e\xc8\xb0\x80\x0c\x87\xfe\xee\xc2N\xea@\xf7\xf3\xc9}\x82\xd4\xf4!\xc8\x82\x9b\x1a\x92~\xa8O\xf2X\x10\xd6\x8e\x13<vv\\3 \xab\x82\x95l\x95\xddK\x86K\xdb\x7f[E\xc5C\x16\x15\xc3H\xed\xaf\xa9\xef-\xa3\xbb+\xc6W\x0d\xe7\x81\xea\x85\xbe\xa7\xb3i!\x1a\x13k>\xbb\xca!\x864\"\x01\x0bXV\x9c\x16\x17\x10\xce\x9c\xab\\\xeaK8x\x8bx\xf2\x89\x1ag\xa7>\xde\xb7\xaf\xb0\xc2v\xa1y\xa3zB|w(\xe6,eZ\x85\x90\xa8\xd9\x96\xe8\x18\x82\xb9d\xdarn6\xa5\x8bo%\x02\x88bS\xdf\xe3\xe3\xa9m\xeb\xe7\xf5AJ\x0b\x01\xa5|\xf2\x83\xe7\x86\xc0\xe3\x1a\xe1\xdb\xb6C\xc88z\x8eDWH\x1d-F\xa9<R\x94\xf89\x84-!\x1b\x19\xc9\x9b\xfd\x9a\x02G?\x8c\xca\x98\xd4CP\xee\xe8\xb2\xa4\xe1\xe0\xd2\x05\x0d\x19\x12\xba\xdc\x11\xa1V\xb4`Q\xe6\xa3l\x93t\xb8\xa2TO\x83\x86\x82\x89\xbdk\x1e\xa02\x87\x8f^\".\x8d\xfb2T\xaf6t\xaa\x1a+S\xf30 \x03\xa2\x8bB\x83r\xd2\x16\xb2[\x7f*\x8a\xc5[\xa5/\"\xd4\x93\xd9N\x01\xe6\x83W\x9986\xb7\n\x8e\xc1\xce!\xa4N\xa2\xa4\x1e\xc4\xf6\xe78\xb8\x04\xc95i\xe3\xae?7\xd2~S\x0c\xa0y\xa0\xa0nd\xe0%\xc4\x15\x1c\xe3\xea\xc4wX\x9f\xab\x07}\xb2qA\xb4\xcfS.\x1d\xc7\xc2\x8b\x15\xfd\xcc\xf4\x85\x16\x9b\xc7\xc7\xe9G\x8d\xb6\xdd\xea\xb1\xda\xf7\xb7\xb7\xb3P\x82\x03W}.\xb4\xcc\xf2\xcd\xb0zS\xf4\x8a(^H=\xbf\x14\xe0U\xe5PB\x08\xaa!F.\x8d\x9c\xfe\xb8M\xca\xd5\xf3u{{\xd3X;\xa0\x99\x06\xa9\x89\xee\xa0\xcb\\J\xd6\xff*Q\xba%\x0b\x85\xfe(\x1c_\xf4\xa2\xc5\"\x9d|L\xf2h\xc6\x9c!\xf8\xd4\x93u\xdc\x15)\xa6us\xcfM\xec\xd4I\xba\xbaC\x95\x07.\x7f\xa6o\xdf\xd6-\xc0G\x92m\xb6\x05\xb2_k\x0b\xc4rf\x95u\x05\xecp\x86\xaa\x1fB\xf4`8\x9f\x86r\xfe:\xceg\x9b\xe0|\x16J\x90\xfc\"8Oc*l\x8a\xf3iH\xa8\xb7\xa1\xc2\xf9F\xc5\xb8\xbd\xef\xc4W\xf2\xbc\x0b\xab\x13\x963\x8a\x8e\xcb\xecz\xf7.6\xe1\xf5\xb722\xe2zGN\xfc%\xf4\x89@\x8a\x1eKJ\x11\xc5\x0f<\x98D\x18\x181M\xf0N\x81-W\xc5\x1d\x08%4\x15 \xb1\xd0\x95\xe4B\x08\xd0\xef_4\xf6\xff/\xc2\x99\xa9#\xfb\xff\x17'\xadaF\x8f}\xc9\x80\xc9I\xf210\xe3\xb2\xba\x1fJ^\xd6\x12\xe9|>{\xaf\xe3\x98\xdeu\x13I\xfaB\xfbU\xb9\xb0\x08\x07\x16\x0c7D\xe2\x15_$\x91\x93\xa4\x16^\x8a\xb8g\x92%;\xa6\xf4\xa0\xff\xd2\x15:\x99\xd8\x93\xcd\x1a\x02)Mx\xe2\xecd\x9a\x91$\x9f\xef\xc0\xb4\x95\x02\x0d\x01 \xa5\x0dM 1\x8a\x00\x8d\x9er\xfd\xa4r\x832\n(\xa9\x9b\xd0\xfeZ\x9al\x0d\xc3\x0f-\x99\xee\xcb\x17\xa5f\xa8n\xac\xe5\x8c\x87`\x89\xef\xa2\x9d\xb0\xfc$l\xd4\x01\xbd\x16\x97\xc40\x84s\x95q\x81\x13D\xd7<%\x81>T*\xa8@k-p0\xfe\xdf\x7f\xafzq\xb5\x8d|\xb2\x0c\xd0Q\x03\x8d\x13}\xa6\xbe\xc7\xebUJ\x82\x10C|\x18Q\xae\x04\xe4\xaa\x93\xc6\x96\x97q\xfcS\xe5\xf6\x00\x0b\x96\xe7P\xcc\xa3\x04ny\x8de\x94}\xf2\xc4\xb8P\xb9\xaa\xc0\x86\xcd*\xd1\xeeH\xad\x05\xff\x91\xe2\x95\x19\xde!\xa4b\xe1\x91\xbf\x93R\xf94\xc5\x01{A\xa8}_S\xa9HM\x91\x05@J\xa3T\xd38\x9aJ\xb5@or\x10\x1a\x82\xb0X\xc1\x04WP\xae\x8aX\xdaL\x1e\xf1}8*\x05\xbc\xa1<\"\x8f\x1cz-\xfe\x7f?\xd0u\x7f;\xa8\xec$gQ\x02\xd01\xa3\xa4\xdaJ\x9a\xc2C\xe2\x8f\x1a*\xea\xc6\xcbk\x94\xda]\x14?\xb0\xea\xa7\x9b\xa1 \x1ew\"(Z\xc3\xc4\x85\xa6\x80x\x00q\x8e\x81s\xe3\xe5JdH`6\x1d6n b\xcc2\xd2\xca\x8c\x96\x82\xd6<v\x84\xd4\x88\xbb^N\xe4\xb71\xba\xe3\xc7\x9a\xe1\x94\x8b\xb5\x9aD9\x83\xfe\x90,\xe3O\\\xdac50{\xc8\x04\xd1\xc5\xd8\xfe\xa0K\xfb#\xf9g\x08\xae\x04\xcf\xd0\xdc\x95Jk\xd6\xd6\x97\x8a\xb0m\xd5#\xdc\x80u\xd3\xb3m\xccO5\xf5=\\\xd2 \x7fw\xf8\xafSHWE~\xf8\xaf\x7f\xf1\xc2Zm\x9a\x1f\xbb\x91q\xd9\xfd-\xbc\x03\xda\x1aH\x85\x1cK\xa6H\x96\x98\xbc\x03\xca\x8bi\xba.\x8c7,\xcb\xe0\x08&0\x84+\"fky\xde/H;b\xf5L}/M\xd6 \x1f\xa8'n\x93T\x90/q\xf9.\xf4(Yo\x1e\xe5\x1f\xb1\x96\xb8\xc1\xae\xbd\x104`\xea{\x93\x05\x8b\x92\xf5J\xe9\xd4\x96\xe9\x0d\xab\x12\x08+\xf3\xd0k\xb2t\x16'q>\xf7B\xb8#\x8b\xa7Y\x14'^\x083\xb2T\xed\xcf%Y*g\x17\xc2\"\x109S\x8d\x8f\x13N\xaa'\x0deWd\x99\xa467AX\xc6\xbd\xde\x8au-!^\xeb\x8fo\xb3\xb8\xa8]\xbcn\x99/\x91\x08\x96\x9f\xcc\xa88\xb9_\x1b\xd6w\xe2\xbc\x8a\xc6\xb5E\xceP\x18\xeeM;\xc5\xb2\x8e\xeb\x06#\x1a\xef\x8b<B\xd2K\x93 S\xa0\xc1\xf4L\xbd4\xa9A\x99\xc6\xf3Y+\xc5\x05\xc2\xae\xa2MN\xef&@\xa8Gn\xd6\xb3\xe4\x95\xc4']\xad\x1b\x18Z^<\x7f\xaa\xdf;;\xd5yV\xaf\x85\x99\xd0\x04>\x04\xf2\x8c\xab\x8cQ9^\\X\x17\"\xea!|\xeb\xc9X\xc6\x02\xc6\xd5.\xa0A\xac\xb20Pes 24\x00\xd4\xb2!8O\x05\xc4$1\xc1P\xb6\x14*j\xc5Jk\x1c\x8e\xbeBt\x91\xd1@k\xe4\x12\x1d&%qW\xa1\x0ej\x15^\xc2\x80W\xda\x11\xcd\xbe\xf3+\xfa/x\xcc\xad\x95b\xa2f\xd1\"g\x80\xddB\xc6\xf2U\x9a\xe4,\x04ek\x9e\x98\x17\xb0\xb5%n(\xdd\xde\x96\x93\xeb\x8bl\xca\xbc\xbdMw\xe3\xb2\x05\x88\x8aT\x15A\x08W~+5\x13\x08'\x10L\xbc\x17\xe7\x82\xc1\x98\x10\x11!\x9a\x06y\xed\xdcV-\x84\xf9\x8a\xa4 \xee\x8e\xee\x9ai\x93l\xbb\xf5\xb8\xd8\xb4\xdb\xab\xa6n\xab\xc3.\xe9\x89\xbf\xbb\x9d\xfdJ\x9e\x15;\xb1$\xfed7]o\x07\x00\xac`n\xba\xb1\xef*c+\x96L\x15P*/=\xb3D\xe4\x98iP\xa1\xf7\xc6h\xc2\x97\x0b\xe4\x91?F\xc5%\x1cA\xe4\xeb/\x02\xb4\xe3\xab~\xd7-\xb2j\x9f\x1e\xc2( k\xaf.\xb1\x8a\xf0\\J\x1c\x04OCeu`\x8b\x03\xa5\xce\x1f\x88w\x06W \x90^\x9e3|3\xc7%\xa1\x95w{\xc8\x8aU7r\x89\xbc\xcd\xf3\x03\xebR\xdf2\x82\xb1\x18\xf3&\x9d\xd5F*\x03\xf7\xdaWL\xd4\x90Jz\xc1\x1f\xc2\xc9%\xd6b9\xeb\x1c\xbdR\x11\xce\xe3\x9c\xfeh\xe0\xfe\x88U\xcc\xa5,\x87#lIXq(\x89Q\x96\xe1Qi8f\xd8^\x19\xfa)8\x90\xd6\xf0j\x11KvA\x18\x13%R\x92%p\x18\x9d\xfd\x9c\xfcB\xe9\xf0#\x0f\x0b'\xa8S\xa8\xcf\x9c\xde,\x9b\xce\x8an\xa5\x163\xb4\xff\x1cb\x0c\x15\n\xf1\xf6v\x00\xd9(\xbet\xc1\xa0Qak\x19\x0e\x01I\xa6nd\x9c\xc3w~Q\x9d\x9f\x0d:8D\x89H[l\xf9\x99\xca\xd9\x13\x850\x08\x0c@\xec\xa0\xe4cc\x93d~\x14\x08\xe5_\xa3\xfe\xa5\xb6{]\x0b\xdf\xb49S\xeb\xc6\xb5Ib\xcek_Vn\x10\xd2p\x83\xc60A\xd1\x05g\x12\x94\x82\x98\xdb\x00\xadT=(\x02C\xf0l*FRe\xb3\xa2\xdao\xc1\xe5.B=\xe0]Q]\x89\x9c\x11.G|\xe7R\xef\xc5\x85\x88\xa5\xc9\xc9\x1c\x0eM\x99\xa6\xec\xca4}\xcey\xa9<\xd4\x04\x853\xb9\xa6\x9b\x1c\xabM\xeb\x1fM\xcb\x93\x0e\x0e\x0d\xcc\x08\x0dU1\xdav\xb4\x98\x19\xde\xc8@\xfb\x9d\x00]\x9e\xb9\xc6QS\x9d2\xcc`\xf7[1\x15\xa4YJ\xdd\xd0D\x19\x1fY\xe6'\xf5\x1b\x88\xf7\xa4\x01\x12\xe0\xd9*\xd1<\x08(;CC\x0f\xc5\xb9\xdb6@U\xaaV\xbe\x8b\x04\x87\x0dr\xb2B\xc7\xd1\xb0E\x82\xb0\xe3>\xc2\x83\x1b\x99w\x87\x05e\xfd\x1c\xd1\x14s\xf2\xab\x0e\xd3\xbd\xcd\xa2\xd5F\xa7\xbb\xfb8\xef|\xf6g\x8e#\xa2<\x1eR\x8c\xc7\x83\x0c\xa5\x10\xa7[\xc5^NN\xa6\xbe\xc7g\xb3bS\x90\xc2}R\xf7\x97P\xba\xf8f\xc9\x99 \xcb\x87nnP\xf2\xec\xd6\xaf\x0f\\Z3p^c\x16\x9a\xa9\xb6\x8d\xbc\xa5&A\xf2\xd6%,HW4\xfe\xe8\x90P\xc2i\x0d\x14~Z\x9b\xa3\x90SS\x8e.[\x89\xe17R*\x95QS\xafY\xef\xa7B\xa4\xf7\xcd\x0f\xb0\x9e\xb2JQb?\xce/\x0d\x04\xd1U\xba\xf1R\x90\xa4\xb6l\x806\x93\xba\xcf\xd4<\xceG\xe9%\xd4c7kR\x81,\xf4UE\x0d\xa9\xdb\x1c\xee[\xd1K\xab\xcb8\xf3/B%3=\x85F\xc7\xf5\xfe\xca\xe1\xdc\x80\xfa\x1agt]^1\"\x83\x84Hp=\x8a/\xb5\x9d\xde\xbb\x8a\x93\xa9\xa4n\xbc\xa8\xc1#\xa7\xd0\xbd)\xdb!\xa3\xa1\xd0X\xde\x1f\x16\x81\xf2\xfe\xce\x14\xe7Z\x89\x11\xf6Di\xda\xd3\xc5\xddD\x91\x90\x9ao7\xe9z\xc2\x92\xf5\x92e\xbc.\x97\x13lj\xb3\x91k\nEak\x17G\xf6\x1c\xeb\xb3C\xbf\x8f\xf1,K\x97\xfcT\x86Cx\xfb]UV\xcf\xac\x10b\n\x1eG\x82\x05C0\xae\xe5j\xb0\xe3Mti\xa2-\x1b\x90\x88\x99Q\x16\x94\n\x83\x94<\xaa\x1b\xb4,_\xc9Q\xd7?\x97~,\x1d\x0c\x8f\xee}\xd7\x03m~D\xee\xd0\x02\xe23K;M\xbc\xaeZsn:\xf4\xb2\x8e\x84\x9f\xde\x11:\xe1\x94\xd6\x9b\x1b\xf4\x83p\xae\xb1\xb3%\xd3\x93*yA9Y\x08s\x9d{\xba6i\x17\xa7\xd6\xc0\xfcF\x08\xd4?\x96\xaf\xfd\xf2\x04 ;h\xb8\xb7\xe4=\xce\x11\xe7\xcb\xf5 &bv 5(\xf3e\x1dV8(\xbc~E\xd0\x92\xfa,\x87\x9cU\xfbYzd\xb5\x10\x93{\xc3}@\xf3w\x99\x1d~\xc1\xf2\xa1\x996\xb6`\x84u\xf8\x96\xe5\x1d\x90\xdf\x12#\xb0\xca\xcd)\xd4+\x08]Vs\x1b\xc6\xa2\x9aNU\x06\xf9\xe9\x9ca\x87\x0c\xc8\x96\x95\xa1g\xaa\xfbvDd\xafL>\xabG\xcf\xca\xd9B\x04\xb5\xe4\xff\x7f\xf9\x02\xb7q2Mom\xfa\x92\xd2\xe1\xef\x91\x93p93\xd1Y.\xa0\xc4\xb4xZ\xf9N\xf5\xc6h\x89\xfd#\xd2K\x07x\xf0\xcb^\xce\x8a\x8bx\xc9\xd2u\xd1Q\xccI\xd8-\xc4~*N\xb0\xeak\x8c\x87P1@!\xe0\x00d\xa1\xa5\xb7\xc0~_'\x05\xcbn\xa2\xc5=;V\x9f\xd3=\xabR\xa2k}d\xa8\x80\xa9}\xd0*\xffH.\x1f5\xb1\xbe\xd5|\\S\x97fl\x86\xb6\x91\xba\xec=3\xe6k|\x84\xed\xb6\x81\xa4\xb6\xc6\x02\"YX\xe2\x011g\x96d\xe9b\xd1EA\xa4C\xc7g\xbc\xb9\x05\x93?_OQ\xfc\xd0_\xd9\xf8\xc5{['D\x7f\x0f\xd2\x99i\x0e\xc7{\x1b#\x9c\x8f'E|#\xb4\xaf\x91\xfa\xf3[:\xa7/\x08\xe5M\xaaV\xd5\xaeW\xc0\xcbC\x99S\xc9l\x15\x0e\xa1\xda2~+/\xcaz\xe34Q\x93\x17\x97\x12\xe5o\xea\xb6\x87p\xb9\n1\xa4\xd5n\xa0\xf6\xdcr\xc9\xa6\xb1\x08\xce\xd2N\xc2\xea_Ta+*Rh\xd5\xe08X\xb2.za\xb9\xf36\x1c\x82\xf1\x0d9\x08\xbbNm\x18\xf5\xe2\xea|\xe8\x94\xe0lc\xe6\xd9\x11S-Eeb\x9c\xebq\x88\x9a\xf1SY$\xe1\x9d\x82\xe7\xc16\x17\x82q\xbeE\xfa&\xbd\x15 \xc9|\xa7\xfd7\x1a\x11ys\xf6\xd9\xa3\x8d{D9FBj\xa9\xb0\xd3\\#\xca'q\xdcX\xe3*N\xa2\xec\xae\xb9J\x94\xb3\x83\xfd\xe6\x91L\xf2\xdd\xb6\n;-5\x8a\xd9\xe0`\xc1\xda\xea\xec\xb4V\xca\xa2[G9h\x1e\xda\xfd{\xda\\\x95\x1e\xde\xf6\x16\xaf\xefnG6,\x8a\x931\x08\x95B.\xdc \xac\xab'\xb8\"\x81\xed\x0c\xbc\xba\x90\x92S\x11x\xd6r\x11T<\x7f\x1e\x94\x03s\xb6\x0c]p\x17:\xe1\xafz:\x0c\x12\xba\xa0!tBE\xe8\x88\x8e\xd0\x15%\xd5\xa3M\x03k\xb7\xcdd\x11\x15q2h\xed\xbdq\xf7\xaaG\xf5-\xdbl\xeb\xbaq\xbbC'\xd2\x02\x1dh\x9cz\x94\xba\xae\xc1\xe8\xa9mO\x82r\xb1h\x0e\xb2\xa5\x1eN\xb3}I\xb4\xeb\xf4ZD\xa3\xd0R\xd8\xea\x0f\xa5#\xa4n&\x1d\xd1{\xc5\xe5b\xed\x989<\x94\xd1\nE\x120\xdb+\xc4\xfb\x98|J\xd2\xdb\x04\x14\x15\x18\x82\x18\xb6[{\x88V{uJT\x05v(#\xd3Q,W\x07\xb4\xc7F\n\xf6\x99C)/\xdb\xe4\xac\xd3B\x80\x8e\x88\xd1\x08n#\xd7VR\x81\x1d\xcc\xe2\xc5\xe2M\x84z\xba\xf5\xfd{i\xc4j}^\x93\xda\xbcf\xa2\xc7\xbd\x8dzlDX]\x89),\xc0\x0ea\x15\"\xe7\xe4k\x1d\x9b\x92B\xed\x17\xd6[Dy\xf1\x8e\xa1\xa0\xadB#\xf2W\x17i\x81\x92\x92\xfe\xeed\x1e \x9f:\xdd\x1f\xb0\xa6\x0d,\xff,\xcf\xaa\xc8&\xf3\xa5\xa9\xc5\x8bC\x18\xec>QIb\xe0\xe5Kx\x0c\x87\x87p #B\xe3\x9b}\xfef\xb0\x0fG\xb0\xa7^\xed\xf1W{}8\x82}\xf5\xea\x80\xbf\xda\x85#\xd8\x19\xc0\x10vv\x1b\x87\xb4v\x1c\x9fJ\x1bXM\x7f\xa7\x0e\"[\xca\xdf\xc4\x05\x1a-Ov\x9f\xf2\xbd\xec\x0f\x9e\xed\xc2\xf7\x98\x14<\xd0\xac\x99\xeaK\xe1\xfd\xdf\xff\xd7\xff\xe9\xa0\xb2\xe8cTU\x97\x16\x83\x9ak\xd8\xa0\xe9h\xa5\x062p\x0dd\xd08\x10\xa0\x06\xb3k\x0c\x06\x7f\x9b\x1d\xee\xba:\xdc\x95\x1dv&\x9e\x85T\x88>\xa7\x90L\x93$\x12t\xb0\x1f\x1aX\xffB\xf36\xc3x^\xe8\x97YCy\\V}\x1f\xf0\x0f\x03c_\x94\x89\x0d\xeb\xfcVho*\x11\x17\xac\xa9\xa32\xc2\x99\xbe\x9f\xcb\x11\xefh!\xd0\x9a\xf7^N\xaa\x00\xf8z\x95\xd9T8\x8a\x07\xf0\xaf\xb0\xcb7P\xbfI)_\xa5n\xf4K\xf2\xee\xb6#i\x0e\x04\x80\xd7\x91\x93y\x94\x9d\xa4Sv\\\xf8\x9a\x0f\xac\x199Z=\x18b\x9f\x8b\xdd\x8f\x1f\xef>;\x004\xcc\x7fq\x08\x8f\x0f\xf6\x06\xcfj&_\x06.Y\x04m\xdfX\xb8Q_\xa4-\xd6 \xb2{i\xd6\x19Xu\x06\x97!$\x95\xa3\xfa\xce\xe0\xfeF\x1e\x14\xde\x9a3\x19\x103\xd9m\x9f \x1f\xa5c\xe1*4C\xa87\"\xd2\xc2M1\xeb7\xe2G\xda\x81$n?\xa8\x9c\xec\xf5\x8d\xd4r\x11\xe4&\xc7\x0d\xdc\xcb\xb6ksj\x10\xe8\xdb\x01\xc1\xc8\x95h\x84\xcc\x84\xdcbj\xfc\xd66\xdb#\x89T_z\x9b\x1c\xd5\xd6J\xb2\x1a\xd2\xf1\xcc71b\x0fv !\xb0bOY\xa4%j5\x1a\xf1\xa3\xd6\xf47\xed\x87 t\x0c\xbf\x86iI\x0b\xcd\x9a=\x1c\xaa\x91[\xe9\xa8\x11;\xcaA\xf7C\x04\xb0\x81\xa9\xc3\x16lX\xb9\x99\x1d\xc7\xf9\xd0\x0c\x8ci\x03\xf3\xd4\x06\x0b\xada\xf5WQ\x8f\xe7\x06\x87\x10\xd75\xd3\x8a\x91t\x0b\xff\x95\xcdmy\x06\x95\x82\xa1\x01~\\\xb6\xd0t|\xee\xb4\xff\xe3*\xef%\xfab\x96\xac\x99b\xe2\x85\x9c\xe3\xe8\x18t\x03%\xd5Mhs\xbb\xf5\xbd/\xec\x14\xd1\xe5\x9bD\xa3\x04c\x92V\x00\xd71\x89\xf3\xfc\x9c\x10$\x81\xe2/\xeao\xf0:I[\x91:\xd4\xa5\x88\xd0xK\xf5\xc0\xf8\x8f\x1cV\x1d\x9d\xebc\x92RL\xe3]\xc2\x8d\x99\x17\xbd\x81\x01\xae\xec\x93+\x8aAs\x0e\x19\xbc\xe0M(\xd2hW\xba\x91\xd9\x03\"\xbf\x18e\x97\x0e\xfe#E\x0d}\xd9L\x8a\x8e\xbcB_\xaf\xa1@\x8aG_\x08)\xdd\xc8\xce\x0e\x0e\x86\xaf\xde\xce\xae\x10\xb3\x9b\x06\x86\x8c\x956\xb2\xa0\xf3\x18v\x7f\xfd1\xc8\xb60\xf8\xce\xa1\xca\xd2Y\x1f\xd5\x1e=*\xd5y}\xfb\xb8M\x8bQOhly\x9b*\x96\x01\xfb\x8d\xaf\xad\xf3-\xb1\xa9\x8c\x1e\xa0\x01v\xc0O,\xcaMn\x0c\x9a\x05\xef\x0b\xcfijh\xf5|a\xf5\x0d\xa3\xa9\x17\x9a\xa9g};\xbe \x08\xa9C4h\xe4\x85\x1eT@\xa9C\xeb\xde\xc3\xd1\xc4\x98\xfa\xa45 \xc68\xa5\xeeu5\xa3\x9b\x1ei9Nn\xb4\\Pt\xa63LcS\x164\xa9\xd7\x11\x87\x11\x04\xb5\x84*\xf5\xb4 \xb1\x9d\x01\xabfu_Zc\x14Y\x94\xe4\xb34[\ns\x0c\xca3\x06C\x83_\xa8z\x1dl\xa7\xc0d\x9b\x8d^h\xa9*\xe9\x95\xb5\x9a]9*\xb1\x0d\x0f\x9c\xc9\x95[J\xdb\xca\xea\xf2\x983v\x80\xe068\x84\xae\xa2\xc9'\x15\xaaf\xb9^\x14\xf1j\xc1\xa0\x88\x97,w\x86\xbcW\x03\x99\xaf\x93O\xa5\x9bJ9\xba\xea\x8d\xcc\xfaW\x94W\x852ut\x88Y\xf8\xdc\x93M\xbb\xda\xc5\xf3'5Lw\xfc\xd4\x8al\xaeLd\xe1\x05\xa4D\xe0\x8d\xaa+\xdf,\xb6z\xfcZ\x99\x81Ri\x04\x19\x9bj\x88C\x99I\xeakN\xd7\x90`\x14\xf1.\\\xc5\x1c\xf4\x8d5*u3\xafT?/h\xfb%\xc2\x13\x83\xaa\xa6E\xf3h\xcc-RNT3y\xaa\xde\x1d\xea5\xdc\xa9Ff\x8bu>\xd7\x1a\x10\xbf\x0fU\x89\xb2\xbaG\x9b\xedU\xc6J_\xbd\xa8M1J\xf1S\xca\x1d\xa3\x8eg\xe4\xc8\xf4\xd1\x1c\xe9\xbfj\x99\xd3Hnl]\x12\xd7\xfa\xa2p.r-\xc9U\xb5\x7f\x9a\xe7\xb1v\xb1}\xb5\xab\x14\xc2\x88\xd4\xe6\x12j\x99GY\x15\xee\xde\x8a\x14\xa0\x0eL\xeb\xa2\xe3$Z,\xf86\xac\x16y\x9a&\x0cn\xe7,\x81\xdb2\xa9\xd2\xd6!\xf4\xcd\\\x86B\x8bi\x10\xcd\x1au\xdc\xb0\xbb\xbc\x88\x17\x8b\xdaV3\xbb,!C\xb8\x03TB[j\xa5V\x0b\xb5w~,\xd8\x95x\xc3\xe0\xee:\x816']\xa3 \xa5\xdfS\xbd}\xcb\x9d\xac\x1ay}0\xb5\xfd\xd6&)X\x00\xae\xbev\xc4\x98qvk\x8b\xb2t\x97ug\xb3\xa63\x13\x85\x13\xfd\x80\xe1P\xa9\x1dB\xac|\xa3]\xb7\x17!le\x06\"\xd1\xf2Q\xe7#\xc7\xcf\x8c5\xc2\xf3\xe5\x17:q\xbe:Al:\x174\xdf\xaa4\xc2\xb6t;)t\x88\xe25\x82\x02\xb8\x88\"\\cW0\x0c\x93\xc9\xc0\xf4-.\xcb\xd7\x1b\x0dU\x93\x15\x03\\\xf4\xea\xdc\x960!\xb6\xb7A\xdf \x89\x8e\xa9\x1at\xfe\xccd\x14\xed\xd6\x8c-\xd6l\x90Q\xf8\xc2fZ\x10Y\xe1Cn\x12w\x83\xb8\xdc\x8b\xd7\xd6\x98j3\xeb$G_\xcc#\xa9KEiv\x1aM\xe6\xf5\x8aq\x95\xdf~\x92\xb1\x1a.tK\xdf\xab\xf0*\x16D\x93\xa4\xaa\xd2\x8a\xb4\xb4\x1am\x03 \xe7\x069\x8eug\xb4iV\x10M]\x12\x99`\xbe\xc08\x80\xc0F\xc9\xa5U\xf9\xab/\xf3f\xa3\\`\xaeUX\xd34\xc2}\x97\x8b\x84g\x00\x7f\xfb\x86&5\x0c\xd0Sen\x92\xb7\x16\x89\x1d\xb9jq\xfe.z\xe7c\xfa_\xd4b\x14B\x7f\x817w\xdf\x7f/\xd5\x15;\x98\x9b!\xc5\xe8\xd6\xc32\xfc\n^ \xb5\xa7O\xef4\xc7\xba\x0b\xce\xc1\x93\xa7\x81\xcf\x87$\x916\xca\xf3\xf8:\x81!\x16=\xfbV\x9b\xc2\x10\xd2\x10\xb3\xc9\x85\xb0\x0eA\xf5h\xec\xadNv\xbd\xd6\x85\x05\x7f\xb4\xb8 Evg|E{g-B\x90Q\x00I'\xacI\x9a\xcc\xe2\xeb\xb5r\xc3\xea\xd3\xcc\x7f\xe4t\xd2js\xe2\xc2,\xd8C0\xcc\x80\xb5u\x85IT\xda\x8fU\xa7\x93\xb8\xf4Xhw\xb9\x99%Y7\x0f\xdd=\xec\xfa\x90\xab\x91\x88\xd0\x86$\x14\xc3\x8d\x13\xd4\xa35\x0cJ\xa6\xa5.\x0b\x1d!ez\x0d?\x13\xf9\xc1\x05K\x81\x9eZ\xd5*e\xfa\xad\n^\x17\xc9\xd4\xd2\x83\x83 \xc4\x8c\xa8\xa3\xcb\x10\xe2v\xaa\x1aR\x1ap\xce\xf9\xacG\xec\xb2d\xe6\xf9\x8fz\x15${\x05\xf6\xf3\x1c\xd8\xce\xce\xf3@\xb9\xb9z\x91\x07\xdb\xe0oo'A\xa5\x82\xda;0\xe5zM\x8f\xa2\xdc&|o\x96\x88\x9c\xb9XTJ\x1c>o\xb0\x90Q\xeeC\xf0\x02\xd8\xe6\xff\xfcM\xb51K\xa4\xc3\xa68;+\xc7\x81\xe7\xf0\xf5y\x9de\xec\xbcF\x04\xc5G\xf9\xc6\xb1f\xaeD\xf2 \x9eZE`\xa9\x1e\xec\xbd\xc9\x9f\xc8OB3\x01\x95\x03\xfd\x81\xba^\xfe\xfa\xad\xc4I\x88\x1cT&u\x1a\xe9\xeb\x00\xaa\xaa]\xb3\xe2\xec6Q\xd5^\xb1|\x92\xc5\xab\"5\x0c\xa8#\xd7\x07\xef\xa2\xa5\x19\xd3d\xed\xaa{~\xb7\xbcJ\x17y\x87\x93\x89\\cA\x82\xe5\xd1\x9c\xf9\x85\x89\xa7('\xea50\xca@\xe4\xe7\x81bv*\xf1\x9b\xce-G\xae4\x7fpOg\xa1H\xba\x9eQ>\xb6\xfa\xd2\x93M\xa0\xa1\x86\xfd]\x1d\x81\\\xaa\x0e\xcc\xe7\xbe\xfe\x07\x9b\x89n\xe0SJ\xe8\xb4\x9c\xfd]\xbd\x95o\xdc\x15\x8f)\xfe7\xf1\x07\xfb\xe6n\x89iO0\xce\x9e\xde\x17I\xf9\xc1Fd\xc2\xe3\xfb\xa7\xa4v\xa3\xddK\x12\x0c\x19\x92+\\!\xbd#\xc1\x87\xac\xa9\xe5HF\xd9%\xfa8)_\x8a\x08\x05\x12\xf5\x85\xb5$I\x0b\xa0\xf5>\xba1\xfcr\xe8[[R\xdb'B\x10\xd4\xd3\xc8}\xf9\xe2P\xe0![\xefR\x10\xceY\xdbh;\xa1\x05\xcdH\x15!x\xe31\xcb\xdf\xa6\xd35\x9a\x9c\x98K\x89\x8c\x8e.W\x06\"\xde<\xda}v\x81\x88\xbdX9\x17\xae\xdf/\xd6\xd7q\x92\x0f\x1d{\x8be\x99\xab\x08\xb0\xed\xe9z\xc2\xb2|\x08~\x9f\x0b\xbar<Ac\xea\x87\x08\x07\x9a\x0f\xa1!{B\xce\x16lR\xa4\xbc\xe55Y\x890\xef\xfb\x8e\xfe\xf5\xd5\xe6\xa2\x05\xc3\xb3k\xe6\xf6\xe7\xdb\x0fYA\x11\xc1\"\xebU+\x02G\x90\x01\x05 eyk\xc5O\xae\xfd\x8c\xf0\xf0O\xfc\xc1\xee\x93 \xb0O'^\xb4\xb7\xfb8 \xef\x98r\xfa\x8eI^\xf1WCt1\x12J\x046\x93\xff\xebjT\xc2\xfdY\x0bm/$T\x89\xb8\x15Y\x9aG\xb9v\x98\x8a-/\xec\x18P\x03^ \xb44\xff\xa6c/{ !\xf6\xc16\x97M\xc6\xf9\x1a\xed\xee\x9a\xab\x97\xaa\x92=\xfd\xf4\xef\xb61olG\x1c\x8d\xbf\xff\xdb\xd7\x107UVm\xaa\x82o\xb1w\xa7?\x8f/~\xfap\xf6\xf3\xbb\xf1\xe9\x87\x0f\x1a\x90\xda\xec)\x92\xde*\xba[\xa4\xaed+\x88\xfc\x187\xa9\xecOx\xd3\xbaw?\xc7\x82!xx\x92&\x0e+\xdc\x06\xc7\x81\xdez5\x8d\n&\x15\xfd\xb9\xd7\xa6w\xd1\xbe\x95\xf1\xf5\xfa!D\xbd7q^\x04~\x10\x08\x19B\xbc\x9be\xe9\xf2\x0f\xe7\x81\x1f\x93\x01d\x1a:n\x8b\x07\xc3\x9b_\xd7V\x84q\xa6\xf2\xfc./\xd8\x92\x0cvb\x1fz\xed\xab:\xfe\xe1\xf8\xe2\xe4\xa7\xfb\xac\xad\x13\xda\xc2\x1a\x7f\x19\xad\x1a|\xdc\x8dO\xea\xa0\xb4q\x83}3nP\xe0\n\x1f\x1e1d\x8e\xb2\xfa|H^\xf3\xb7\x8a\x1a\xe7\xefOO\x1ev\xbb\xa7r\xbb\xeb\x00q\"\x0f\xaf\x9c\xf6rV\xf8\x1e_W.I\xe7+6\xf1~\x89\xc5\"vq\x1a\x04\xbd<\xcd\x8a\x1f\xee: /\xe8\xd7e\xd7|\xc8\x8b815\xdc\xea\xf9\xfa\x0f\x88\x03\xff\xdf!\x0e\x88C\xff$\x0d\xdf\x86\x16\xc7\x1f/~zX\xd2\x10[\xa4\xc1X^\xce\x9ad\x0d\x01\xc5b\x91\x02L'\x17\xd1\xba\x98\xffZ\xe4\xe2\x1f\xe6\xd0?ysz\xfc\xa1A\xe2UOy\x19\xe8\xde\xc8hM\x85\xa6\x9f[\x92\xea\xc9i\x06.\xb1\x004\x840>\xe9\xcd\xe2E\xc1\xb2\xee\xc4\x80\xf5>\xb1\xbbs\xf6_~\xd0c7,\xd3\xc8\xb4\x13\xb4`u_\xb4d\x0bD\xa9mT4d6Q\xb2?z\xb8f\"\x16aw\xb2\xefDg\xd6[\xb2\xec\x9a\xf9N \x19\xc5T\";\xdc\x06X0\xfe\xe1O\x0f\x8d\x08\x9a\x1e\xa3\xf2 N~\x0dtH\xe8pZ\xbf\x06\x805)\xb2.\xc2\xc5B\xe5\xb6k^\x97\x89\xcb\x0f\xf3m%\x94\x0f:\x0b\xe5j2\xa6\\./e\xec\xc9\x95\xaa\x03\xc3{\xfa;\xfb/>\x83\x85uG\xc5\x19\x9b!\x18WS\x0bv\xc3\x16\xc32`|\xadl\xc9\xf2<\xba\xe6Go\xe9\xe6\x8d\xb5\x8c\x1e\xff\xbe\xa2\xb7K\xaf\xd5\xa4\xe1\xb4`\xfb\x97\xfc|\xc5&C(z\x9c\xc98W\xda$\xfc\xf5\x87<M\xfc\xa0W\xa4\x7f87C6\x91\xd2\xb8\xa1\xdaZw\xd8\xa8n}\xf7M\xe9\xddP\x19\x9d\xa0\xd2\x84&k\x8aA\xeb\xbe\x07\xa1\xa6\x04%\xabP\xe4Oi\xd9\xdb\xce\xc2I\x9a\xe4\xe9B\x06^\xf3\xbd\xd2\xea\x85e\x02\x97\x862\x1ch\xabB>\x04\xd6\x91\xb28f\xf35\xe8\xc0\xb1\xaaok\xa2\x80\xd8\xa1\xf8b\x15 \xbe\xc4l\xba\xc2G\x87\xf6\xf0\xc9\xae\xa9\xd4\x7fH\xed!Er\x08\xf7\xf8\xff\x15\xf4\x80 \x87\x8e7\xd3\x11\xd2\xe4]q\x8f\xc6\xff\xdc\xab\xfe\xdc\x0f\x02a:\xf3\xf7'_\xb4!\xa3\xeb\xc0\xe8\x80\xc67e\xb41\xc4ZI\xc7\xbd\xa0\x17'S\xf6\xf9l\xe6{\xd2\xe21\x9dA\x84g\xbd\x9f\x07\xa6\x11)\x947\xd1/a\xc7\xe9\xf6\x7fS:q\x1b] \x07ft \xa3:S\x96\xb6\x98\x05\xa1\xf0\xbd\x90\xea\x1e\xf4i\xe7z\xfb\xa1\xab\xc3>\x92\xd8\xed\x0ebB\xadqq3\xe1\x9b\x88\xd0\x90\xd7\xcdh\"\x91i\xdc*'4\xb1\xab\xe5\xef\x970\xc0\x83}\x1b\xbc4\xc3\x18)\x05\x0c!\x1b%\xb0\x0d\x83K\xa3\xea\xae\xac\x8a\xc0\x0b\xc1\xd3kj%X\x80\xbf\x9c\x03\xfc\x1a\x82\x97\xcf\xd3\xf5b\nW\x0c\"\x97Z\xc3O6\xc9$\xe0&~\xbf\xe9\xfdD\x9c\xbdEO\x1c\xfc$\xa1\xd1nu\x1dD}\xb0\xf7TCZ\x071\x0f\x91_\xfcMC\xe6\x1b(\x8dkw\xfa\x14\xf9\x11&@\x9e\xf2s\xeay\"e\xeaj\x11M\x98\x9f\xb0[\xf8\xc0\xaeO?\xaf\xfc$\x04\xef\x9aW\xf7\xbc\x80\xd2\x1b({\xa2\xdf:\x1e.\xa2\xbc@ss\x11Yr\xb1\xc0\x1fy\x19\x16\xd6@+R\xb4\x10\x98\xf6\xd8|\x1d[M\n\xa5\x8b0{U\x0cl\xd0q\xf5\xea\x80l\xd3\xb1\x94k\xae\x8b}JXU\x9a\x16cm\xaa\xa9\xd6\xc1B\x8f:n\x1aB\xd9=oG\xe3\xc8\xbf\xc5$\xe9A\x97\x9d\x90F\x1cs\xb0a\xdb\xe5\x92}\x11\xdd\xa5\xeb\xa2\xdb={)\x88\xfc\x03\xdc\xafS8\xfeP\x1c2}\xbf\xbe\xdb\xef\xbb\xef\xd7\x9fv\x16\xe5\xffW\xe0\xab\xff\xbe\xdb\xca\xc6\x99P\xaahvM\xa3\xa8HaM\xfc\xd0X\xb3& \xb4\xb0\xab\xe6\x98\xa4\xd3\xb8\n\x96hm\xaen\xe7\xa3J/\x90\x86\x90\xf7>\xbe\x7fu|q:~s\xfc\xa7\xb3\x8f\x17-\x8a\x82\xfaQ+\x88\x00\x9e\xa0R\xb9\xa7S\xc2\xc6\xde~|\xfd\xe6\xe2\xb4M\x91\\\xefM\x08\xde\x9b\xf5v\xfe\xd3\xd9\xcf-\x9dX\n\xca^>Oo\x13\x9b\x0e\xa9\xa3b]j\xed\xabO\x8ay\x9c\\\xbb\x1c\xe0\x94\x16\x1f\xdb\x95\x87T\xd5\xc8\xdf\xf8\xd8;\x1ev\x1c\x0e\x19\xe1\xd8\xd8\n\x07 \xf5\xb7g\xafN7\x06\x07\xce\x8d\x06GUi\x99N\x99c\xfa\x18\xea\xdc\x1fy\xbcJ\xee]\xaa\xfb\xab\x84\x0f5\x13\xb1C\xd0\xc6\xd9\xabO#\xfd\xad\x1c\xa5|\xd9\xce\xd7\xcbe\x94\xdd\xe1\x94o\xe7\x91\xc8\x0f\xc4\x7f\xc4\xf99_U\x11\x86}\x9de,)~D<\xd5\xdf\xb8\x98-u\xec<\xdd\xfbUO\x1d\x82\x95\x13de`Z\x97\xe5\x92\xda\xe8T\xa5\x9aS\x07\xf6\xe8Z#\x13\xda\xf2\x86\x04\xb4\xba\xb6&\xc9\x80S\xdd\xb50\xd6\xa5 {\xb4\xd6\x8brw'i\xb6\x8c\x16\xf1_\x19\xba{\x05\xd2\xfe\x1d\xfb\xd6wp\xae\xef\xe0\x00\xcb\xeb\xaf\xf9w 9\xcc\x1a\x0eu\xda\x8d\xa5\xdd\xab.\xa0\xd7SX\xe9\xa6\xb1pT\xff\xe9\x8e\x9e\xd3>kj\xef\x1a\xea\xe5\"0\xa6jo\x1bA\x94\xbaK\x06\xb6\xfc\xdb\x81\x1d\xdfBf\xc3c\xd3\xb8Hk\x18\xd2\x89\x94T\xf2\xcf\xdeAG\xd7/N\xa5\x8c\xa1\xd0jt9\xc0\x14\xf3\xe6d~\x12\x8c\xfa\x97!$\xa3\xc1%zc\xfa&EoTm\xab\xbb!\xd6\x13\xcd\xda\xc2\xa90\x14\xd7\x90#\x16\xfec\xd2\xc8Y\xa4\x0e\xac\xf7\xf8]\xfd\xaf\xce\xb0zb\xd2\x0c\xa9\x96x\x16\xf8^\\\xb0,\xc2\xa5\xb0\xc9\x9b\xe1K\xd9\x06o\xc7\x8a\x9b\xa1\xf4\xfd\xac\x87\x0dk\xc9\xc71{\xdaa\x8d\x9f\xddp\x8a\x8dsI\x8d\xb0\"\xf6\xfa\xab\xe5\x1a=\xb9\x1ce\x97f\xfe\xbdX.b\x93\xa4\x06\xaa\x1f#*Q(\xa1\xc8)NM^\xa5\x1a\x108\xb1[oA\x83 \xedx\xd3\xd9r_\xc4AB?\xe6*\x84\x93\x19oE\x913\xf3=\xbdi4\xc0\xd1R!?\xccb\x02\xa6X\x86Y\x97\xda\xa0\nMr\xb0z\xa6i\xc2\x86b\xdc\x9d\x83^\x878\xb0\x0d\xba\x8f\xa86\x98\x1f;\x08\x03\xeb\xe0\x1e\xd5\x05\xcb\x7f\x05\xfe\xe9\x97VE\xe4xk\xea^\xbe\xdb,Z\x1d+\xfdBC\xee\xe8\x7fH\x85\xc5\xde\xaf\xcb:.Paa\x99\x94\xaf\xcb\xa2\x81Y\x94\xcb\xa2\xbd\xfd\x03Z\x97AD_\xfd\xa7.\xe3\x97\xde\x97$:\xadHw\x81X\x95\xec\x99%\x91,yj\x954i),!c!\x9b\xd9\xb3\xba\x9eH\xb5\xc6\xc0x?\x93\xefwI\x84j\x08S\xfaK\xd8\xb9\xd4\xf4,\x99\xa6g\xd1\xac\x0f\xb3\x10fJ\x06?\x7f\x7fz\xd2M\xefQ\xe6G\xd0\xa2\")\x81\x1b\xa3\xe9\xa2Z\x04-Ru\xa5\x08\xe8\xa3V\n\x01\xc7`>~x\xd3m,\xb2\xb3u\xb6\xd0\xfb\"\xc4\xf6\x86\xce\xfep~\xf6n\xa3\xde\xfe\x92\xa7\xa6\xb4u\x96MY\xc6\xa6\x9a\xee%\xe8\xdc\xff\x87\xd3\xf3\xb37\x7f<}\xb5\xc1\x18P\xf8\xc9X\x9e.n\xd8\xd4\xbb|\xf8\xb1\x8c\xcf?\xfep\xf1\xe1tc\xad\x0c\xad\x8fI\x84\x13\xbd]\x98J\x13\xdab\xde\xa2\xa4Qs=__\x15\x193e>]\xad\x14\x04\x0ehd\xdd\xa1\xf0\xfe\xf8\xc3\xf1\xdb\x87\x9a:\x9f\x9d{\xe6Y\xb4|\x17- \xd0\xc4U\x85\xd7\x84\xd6o]\x15\xdb\x85y\x13\xcc1\x9cg/\xce\xff\xe7\x92\x88 7!tB\xea\xbd\xf0T\xe6\xe7\xcf\xfc$\x9d\"\xd1\xda\x8a\x05g\x0dG\xb0\x16\xaa\x88$Z2\xa17\xeby\xb0\xad\xde\xc6\x89|\xc7?\xde\x11\x05\xaa\x1d\x1f\xf3\xf7\x97_\xc4\xf61\xca\xe9\xea\x02\x8e\xc0\xc3\x19\x8d?/\x17\x1e\x0c\xe5/Z\x7f\xa0i\xf7\x18\xe6\xf3F\xeb$7\xd6dA\x08#\x0f\xa1\xc9\n\x86Wv\x93\x10f\x97A\x08yg\xac9}\xfb\xfe\xe2O\x02w\xc6\xaf\xdf\x9d\xbc\xf9x\xfe\xba\x95\xb0l\x84EoY1O\x89\x1a\x0f\x83Kq2Y\xac\xa7\xect\xb9*\xee\xfe\xc8Ak\xf3-\xc2\x1cx+.y\x1ee\xc2v\x1be\x89\xef\xfd\x1ce \x06\x1el\x02\x08L\xd0\xe4\"I\x0b\xb8f \x17^\x19D\x80c\xfb\x1f\xec\xae\x87\x16d6\n\xe4\x18\x1d\xd7\x81#\x0f\xb3\xe8c\x04@\xce\xd9g/\x84\x9c\xaf\xfd\xba}\xed\xffx\xfc\xe6uE3\xce\x7f\xbd\xe5\x8e\xf3\xb3\xe3\xf3=z\xad5\x05YGH\x04\x84\xfa\x9f0\"\xe7\xb4\xe3\xd1\xe7\xe5\xe2Q\xdc+X^\xf8\xb1\xd8\xde\x1c\x0d\xd6K\x96\x8f\xc5\x96\xa4\xbe\xe4{x\xd2\xe3\x9ca\xc4\xa1\xf3s\x8c\xf3\x8bd\xcc\x10ArB\x18\xb1\x86!6\xdfcl4]c\xb7_R\xd3\xefx\xfb1S\xd6\x8f\x1a\xed\x10m\x95\x8e\x15\x94\x01\x95K\xecV\x18\"\x8e\xb0\x9bh\x11\xf3\xc9\xbd\xe7\xad\xa3\x91\xfb\"\x84\xb4\x835\x18\x87FAR\xe4\xa2\xa2\xc8!(\x0b\x85Ks\xfe\xa4\xd1\x93\x1d\x15\xa5}\x7f\x08\x93\xfco\xdc%\xdavx(\x1cH\xdaq`t\xd9\x15\x07\xbaX\x03\x81\xc5F\xd6\xacCj\xdd\x12\xb0\xdf\x18\xf0\xe7\xa7\x17\x9c\x9b{\x7f\xf6\xee\xfc\xc1\xb8\xb8\xcc\x8c\x07\x035\x1e\xce.\xc3k\x9d\xde\xd2A\xc8\xd6\x0ef\xc3_\xa3\x13\x1d\xc2\x07\x8e\xc0\xd0\xea\xdb\xa0\x15\xd6\xd2dP,\x8e\xfcC\xd1V/!\xcf\xc6\xd2\x90_T\x92? \x9e\xaa\x88\x8au\xce\x19\x16U\xb5zS_\x9bP\x96g,_\xa5I\x8eY\x02\xb2\xa07g\xd1\x94\xa19\xd2\xba\xfc\xfb\xcb\x17K?\xc0\x17c\x824\\\xe3}\xb1\x1d\x8e*i\x08\x91\x8b\xdd_;(\xe4B\xc1\xae\xf7\xc3\"\xbd\x12\xda\x97iTDzPm\xbb\x8e?A\x8a\xed\x1aD\x08^\xc1>\x17\x9cr\x88\xd6\xf8\x112\xe9\x88\x95\xff\xf1\xf1\xf4\xbc\xedJ\x7f\x03\xa4\xfc\xaf\xcd\x902\xd6\x90\xb2U\xec\xf8\xaf5\xcb\x0b9\xe9\xd8\x05\xf9.\xa2\x05\x9f\xf9\xdb\x8f\x17\xc7\x17\xa7\xaf\xfe\x91 \xb0\\\x17Q\xc1\xa6\x1f\x1e\x0e\x10\x929<{\x7f\xfa\xe1\xf8\xe2\xf5\xd9\xbb\xf1\xdb\xd3\x8bc~B||0:\xd5$r9\xa4\"\x01\x92O\xec\x8e\x96\xa6F\xad,\x85\x83[\xeaz\x1eYN\xa0\xe5J(V\x0e\xb5\x0e\xae\xcf\xf3 \x080{dY\xbd\xd2\x0el\xfcI\xab\x90\x8d\x9f\x1eUX\xe2\xaa\xb7\xe0\x87ll\x9f\xaci\xd0M\x1b$\x98\x87\x87>\xc5\x9a\xb0\xa3qOL\xd9\x82I&C'\x87Y\x08\xe9e;\xde\xab\xc9<\xe8\xd6\x7f\x98\xb9\x94{\xbb\xe3T8-;?\xf9\xe9\xf4\xed\x83\xadI>\x993\xeat\xfe&*\x96\xf2s,\xd6\x11\xd5\x13\xfdTT,\x13\xca\x87/_\xb0\x9e\xbc\xb6\x1dR\x1fxc \x83s\xf1\xe6\xb2\x9e\x97$(\x7fv\xbe\xbf\xdd\xa3c\x99=\xdb'4\xdd\xf2\xb67_\xb1I\xccr\xaf\x8b\x1d\x00\xb9\x16!\xb2d\x99\xcf\xd0_?/\xb2\xf5\xa4H3\x12zZ*\xa8HK\x0f\x7fx\x08~\x82mD\x01\xdf\xdb\x98\xdbh\x08\xa9n+\xd0\xe9*\xe1\xa6\x16\x87\x15\xe7\xb8\xff\x8cV\xd8\xef\x99 \x91\x86\x85\xfb\x94\xce>\xf1\x07V\x948\xa9\xb1\xa7\x14\xf6\x93\xde*K',78\xdbU\xc9\xfd\x94\x89\xf6k\xe5S,\xafg\xc0\xaf\xd7\x98c\x8d\xb7\x82\x9f<\x99GI\xc2\x0c\x85\xdb\x0d\xd6x\x15\xe7\xab\xa80\xc35/1\x1di\xed\xd55\x11\x80\xee\xae\xed*\xf7F\xa67\xd8\xb6\xc3_\x83\xd4\xea\\\x1bWJ>s\xe6\xbeW\x97Z\xd7V(R\xf5\x08\xba\x82\x15B(|B\x92\xa9\xbd1\xa6s\xd5h\\\xc1\x1fu\xe1%x\xcez[\xd5\x88V|\xe7O1\xc6\xc1\xaa\xb1\xc9*G\xba\x8c\xd6\xcaQ{\xf0\x9c2lJ\xaa\xe8\xaa\x95\x11S\xb2\xbd\xed\xb8g\xbb\x1emo/[o\xda\xd7\x8e$\x1a\xf2\x06\xe8\xc7j\xe0\xa1\x15\xae:\x84\xcc_\x06!,\xbf\xd3^5\xc7\x86\xd7VG\xff\xc8\x93[\x00\x87\x90\xf8\xcf\xf6\x02\x7f\x16\xe0\xb5l#\xec\xd0\x94\xe1\"\x9e|\xf2#\xff\x0e\xe3\x94\x0ct\xfe\x0f\x86p\x83\xc6`\xbd$\xbdmm\x0dk9\x1b\xc2\xd0\xc2\xb12\x19N\xd8-\xcc\x83\x1e'{\xbb\xfct\xe2\x7f\x0czi\"\x8578\x84\xab\x10\xbb\x8b\xfc\xb8\xb7J\xf3B\xeeB$5\x03d>&\xbdh:=\xbdaI\xf1&\xce\x0b\x96\xb0\x0c\\\x01\x0b\xb5\x06P\xdb=\xe9\xc5K\xde\xe39\x86S\xcdU\xd0c\xf7\xd4&\xfa\x18|tt\xe3\x07\xca\xef\xea\xa6\x87\xf6\x88t\xa7\xa1\xab\x10\xb6\xc4\xc8y_^\x9ad,\x9a\xde\xa1\x1d\xc2d\x1e%\xd7\xcc\x838\x81\x85\xef\x89 \xaf\x1e_>\xf7\x88\xf2^\xb4Z\xb1dz2\x8f\x17S_\xfb*\xe8\xd9-\xb7\xe1p\xde\xcb\xd82\xbda\xa21\x91 \xa7\xdc\xa7\x06\xce\xd6\x16\xb5a|\xac\xb8\x88\x97,]\x17\x1aF\x84\xd0\xaf\x1f\xb8\xfa\xd1g}?\x84\x95q\x06pZ=\x84i\xd5\x04\xfe\xf5\xedq2\x1bM\xebh:\xea\x08\xc2\xcd\x9f\x9b!\xb0v\xb2\xd9\x18\xc9\xb5\xb5kBQ\x02\xb2\xeb\xb6\x8e[\xa0\xb7)\xb3\xb3\xfb\x94dvv\xfb\x8f\xef\xc3\xe2`\xb2\x10\xa4\x95\xa9_\x88|\x1b:\x9b#\xed\xedJK\x08[\xf1\x82\x91\xa2{3;\xa5\x98\xf8\x82\xf3\xc2\xa8\x05\xe3b\x92\xb4\xa4\xe5\xec\xc32\xce7\x8cs[\x8fu\xffd\xef[\x02\xda\x17\xba\xe5\xc0!l\xb9\xcc\xb9w\xfb\xbf\xa4Q\x8e>\x1eY\xa7\x8b\xa5d+\xf3\"\x9c%\x1d\xa1\xc5]\xa8\x8f\x89\xe1\xd40j\x8aw2\x9a\x13\xd8\xe3\x81\xccOC\x88\\\xb5\xa112\x85zn\xa4\xb3}1J/\xfd\x88\xd0\x10\x98\x8f\xd0\x0e\xa2\x8a\xc2Y\xb7=\x8a\xb3ztF\x9e\x0c$\xa3\x1e\xdb\xe0K=x\xeb\xb7\xeeM\xd3\xa4\xda7%`\xd5N\xf0\xf3\x00c\xfav\xd0\x80\xab'\xf3=\xce<x\xd6\x95\x82\xfe\xb4z[\xeaO\xe6\x8b\x08\x89-M:\xeeN\xf8\xc3\xe7A\x16~\x95\x83mW\xcboF\x04\xda\x82]?u\xd9{s\xf4\xce\x0cE\xb8\xbc\xbe\x1d\xc2(\xf1\xf7\xf6\x07\x81\xc6\xe0}\x03my\x80\xc1\xec\xf6\x9f\x06\x86\xa1l\xbc\\-\xe2I\\`\xf9\x93\xfd'\x01:\x82\xef?\x95\xff?\x13\xff?\xeeo<\x89j\xb8\x07T\xf8|.2\x92\xe7\xcd>\x15\xcb\xc8\x1b\x89\x88\xd7 \xd2'\\\xb6exq\x918\xc2^\nM\xc0\xb7R_\x84\xc9\x8e\xe5\xff\x98\x0d\x87\x8b\xdb\x9b\xa1Q5\xe9\xc1>}\xca>1\xe5j\xa9R\xd83St\xca\xfc\x15\xe6\xa1,\xc4\xf0\xa7\xfd.g2\xba\x1f\xe4\xd4\xc9\xbc\x15\xa1d\xa9TP\xf5\x8dX\nb\\\x84\xdf\x19\x84(\xb2\xa3\xa7|\x8aQ\xe2\x82@Jb\xa1\x90\xdaa\x07\x06!J\xe9\xecy\x99o\x12\xc5\xbe\xed\xed\x05\xbc\x80\xc9s\xd7\x81\xc2%\xa4\xb5_\x8c\x16\x97\x0e\x82\xcc\x05w\xc2y\x81O\x01{\x995I\xc7\\\xa6_\x8d\xa6\x0e\xe9XO\xaf\xcd\xbb\xe1\xc2C\xee\xdf\x840\x0da\xc5\x99{QA\x98r\xceQ\x80\xb9\xe1\x9c\xfc\x0d\x0c!\xe6c\xc6@\x17\xfc\xcd\xe8\x92\x9f\xceT\xf8!\xebM\xe6\xaf\xb0\x83y \x00\xc6\x87\xf7\x9d\xfb\x13\xb5>\xf7E\xc2\xbd\xfdN\xbc\x1bq\x14{\xe31\x9a\xb9\x8e\xc7b\xaf\xe0\x9e\xe0\x8c\x88\xfc\xc0\x86z{V\x9cZ\x12\x19\xa2\\Z\xa1\x12V1Zb\x1a\xc3\xbf\x01\x95\xd7\xa3\x82\x0b\xf7\x1b\x9a\xb5k\xf4\xc9\xe4\xc5\xd261\xab9\x10\x16C\x95\x9c0\xc4\x0d\xc1\xab\x9b\xe2\xb6\xc5\x8f\xc10\x94\\&E\xb3\x07B\x06p\x9b\xf7\x7f\xf5\x1d\x8b\x9dv\x81\xc7/lN\x1cBQ7\xa1\xc8Q\x17\xcd>\xb3\xc9\xba`\xf2N\x0b_ \xfb\x81?\xe4ir\xbeb\x13\xed\x95\xfc\xe9\nJ\x11\xfb\x89\xbfO\x862\xe7%\x83=\x87\xa3<\x91\xecX\xad\xc5/c\x0b\\\x9bL\xa3\x0cU\xa9\xec\xf3\x15\x9bH\x07\x05R\x1aj\xc4VfX\xf6TL{(L\xd1rv\x91rx\xcbz\x89^\xc55\xa1\x90Z\xa9_c655\xa1\xa9\x1b\x0c+\xc71\x14 #\xcc\xe5\x04\x11\xbc\x80\xe29D\xdb\xdb\x01\xc4\xa3\xe8\xb2\x96&$\"\x0e\x08\x13d1\x82*N\x14\x06\x7f\xa8_\xcf\x9dD\x939\xa3\\\x8c\x94\xd4\x11\x8f\xfa\x0e\x07\xa5\xdc\x0eP\xbf\x0e\xab;\xce\x80\xb2K\xe0\x8f_\x8f\xb9I\xe5\xacq\xf2\xe9F\x7f9\x1a{\x05\xbd\x7f\xc9\xd8\x8c\xa3<\xdeb\xf3\xedh\xcc\xd2W\xa3\n\x81]n\xc2\x80\x87\xd4F\x7fh\\!\xcd\xb8\x94\x0c\xda[\xa4\xd7\xb2k\xe1\xb6\xea\x9b\x1a\xdc\xfah-J\xb5\xc1h\xcb\xb0\x8c\xf7\x1f/\xc3`\xc7\xd2\xae\xd0\x8aRcP\x95\xbf?]\xef\xa2c\xb8\xd1c\xbd\x9d\xa4\xcbU\x9a`VJ\x0b\x04e\x94\xb6\xf3\"\xcd\x1c\xd6\x01Z\xa0b\xbb\x02\xde\xaa\xd5z\xb1\xeb\x08\xab\xa6\x8c%S\x96\xd9\xa5\xb9\x0c\x1c\xfe\x89\xbd\x8dV+6=I\x93\"\x8a\x13\xaa\xea\xa2\xdc\xbeK\xb6L\xe3\xbf\xb2\xc0\x8fDvr\x91>:F\x1e\xdcJ\xa2\xe5T\x0bfiZ\xbcN\xf8\xda8\x9d\xd9\xf4\x99\x0d\x810\x1c\xe7\x0f1\xf8\xa19\xd0\xdc\x1e\xe8\x02\xc7J7)\xa05\x84\xb5\xfdYd\xdd\x88\x80\xc5\xcb\xba=\xd5Z/\x9a6r\xf6\x02\x0d\xd9(\xc2\xd9\xe2\xf4\x05\xbf\xa8\xe3\x17Tk\xeft\xfe\x02d\xe58\xf3\xfe\x94bf\xd0=\xea7\xb2\xf1uTD\xfa'p\x04\xff$0\xb0\x81y\xbb\xe6\xcc\xdbcj\xbe\xd7$[\x17\xcb\x12\xda\xe5\x0cK\xac\xd6\xd6\xaa5\xca\x01\x11?1\x0b\x16\xb2\xc0\xead\"\x0b\xac>f\xb2\xe0\xc0,X\xe1\xd2\x99\x97\xe4S\xac\xbe2\xde\xcee#O\x9eXC\xbd\x11\xe2\xffc\xf3\xfa|)?y\xfa\xf8\x19\xcd\xe6^\xff\xbal._W+\x1d\xb4C\xe5k\x13\x81\x06\xa3l \x8eR\xa7\"Y=\x9a&\xb9\xad*\xd4\xaf\x18\xf2\x8aM\x12\x1a\xefL\xda\xe1L\xcc\x02?\xeb\x952\xb3\x8a\xe8\xbf\xae\x19\x9594\xe7n\x0d)\x90:\x04\xfd\xd1F:\xab\x19\x06%r\x98\x8b\xda\xdbQ\xfb\xdc?\xb1\xbb!xb\x1f{\xf4A\xa0?\x9224r\xec\xd4#\x07>-\xf5\xd7\"\xee\xc7\xa9Hl\xcf\xe9\x91a\xbf\xf67\xf4u\x0fdn\xf3U\x96\xaer\xf9\xf7$M\n\xf6\xb9h\x81#\xb4\xc2\xf2\xebe\x10\x12\xe1\xd8\xcbb\x7f\xd5+\x89\x9dK9\x8d\x98KC-\x95\x9c\xc2\x0d\x1fp\xc2&\x85\x16\xdb\xa4-\x80\xeb\x8dL\x8eo\x9a_\x7fE31\xe6S\xd1'\xd5\xa3PD?\xbe\x96\xd1\ns\xd0_\xa4\xfc\x04@\xdb\xe7v\xa9\xc1h\xb0}\x9d\xf1\xde\x9a\xba\xc7\xd4\x1f\xf7\x9a|\x0d\xfc\xa4\x8c\xf1D\x146d\xf6Ij7\xee\x0d\xd4d#J\xb2\x01\x15\xf9\xadP\x107t\x1f\x96rl@5\xeeC1Z\xa8\xc5M\xef}\x96\xde\xc4\x9c\x97\xef\xd0\x18 j\xa6Y+j\x82\xe0\xb16\xa3Qn\xf2t_:\xdf@\x97Zh\xd2W\xb1\x81`h$\x0ci\xb4\xf4j\x8c(]r\xc6)\xe7\x8c\x1b=\xa7by\xd9JS&\xd2\xba'\x1670\xc9(\xbd\x0c!\xc3\x7f\x19\x99\x88\xa6i6c\xbc\xacp\xb0\x9f\xc44\x85\xcdc\x830\xde,\xb1C\x9d0\xb8x\x1c\xf58(\x82\x9b|\xeb\xa4\xff>\x14C\xa4\xac\xc5\xda8\xb6\xf6\x93\xe2\x8a\x03'\x12Z~\x8c\xb2G\xa3^\x13=\xb5\xa9J\xb1)U\x11\x14e\xa2\x90\xfb\xe7x\xb1\xf8\xc0&,\xbeA\xa1%o 2&\x81id%\xf9\xa3M\xb8\xda\xbd\x9b\xd2\xd4\xafM\xa4\xa7#y\xdc\x944\xaa\xcb\x06\x0e\xd8e\x1d7\x14 \x8a\xa4\xd3\x96\xa6\xee\x8b8A\x18\xb9n\xdc\xf4\xa7@a#\x0e\xc1\xcb\xd2\xb4p\xdd\\\xa8\xa7\x9d\xa5\xdb\xd8\xec\xc1A\xfa\x1a\xc8\xde\xd7P\x97B\xc9\xedn\xc5c\x03\x8db\xa9\xaaY\x08\xde\xf1j\xe55\xcc}\xde\xabl/x\x7f\xbek\xe6q\x88\xb7\xa2\x81\xc5\xcc\xb4\x1aUTJ\xb3$Z\x12z\x8e\x16\x90{\xd3\xf8\xc6\x92\xe5\xd5\x93\x17w\x0b\xd6\x14\x14i\x15M\xa7\xe8B\xee\x0d\xd8\xb2\x01k'\xe9\"\xcd\x86\xe0\xfd\xff\xa2(r\xe4\xbd\xb3W0\x04\xef\xff\xf9\xdf\xff\xb7\xff\x03<\xf7\xf9\xea\xc5\x9e\x00\\\x08\xdeI\xe9\xa8.\xd7\x96/\x0c\xe6\xbf>\x84\x02\x8e\xc0\xe38\x0f%\xb5\xf0`\xc8\x17\xd1\x0b!g\x0c\x8a9+\xbd\xe3=+\xe4w}b\xb7\xad\xca(\xb5&\xdd\x18f\xb9B[>\xab\xd8o!oW\xdcx\x9c\x7f`\xd1\xa4h\x17.\x9a\x0dI\xf5\xa7\xf3\xd1\xa5\x9e\xf2\x08k\xa7:\xd0\xc2\xdf&N\xfe6i<\xad\x92{\xf0\xb7\xd0*\xd5\xd1'RB\x9eHI+\x9f\x0b\xdd\x89\xb9z6%\xea\xea\xa9\xae\x02:\x9cI\xea\xe9 \xe1&n\x1a\xdcI\xc2\xc5\x1bwz\xda\xd2\xbd\xa8Dl\x01\xa3\x06\x0d\xa8Y\xb5\xed\xde\x1dZM\xfdJ\x06\x95\x91\xb7\x83Yy;\x88\x96\xa9\xe2v0\x85\x17\xc0\x9eC\xba\xbd\x1d \xd7Y\xbb\x1dt1\xb0\xa0\xdf.\xe9h\x9b9 \xd7\xc9TP\xb6XOG\xc5\x87\xea\"\x92\xe36\x89G:d;VL=\xc27\xbb\xc0c\xc6\x8d\x1f\x8e\x99Q\xd4\xddPgW0\xb4\x94\xc6\xf6\x19\x9d\x86\x10\x9b@\x8ag\xe0\x97\xc6[U\xe2\xbf4\x90A+\x13v\x0b\x17w+v*\x12x\xbdcl\n\x11\x88\x0fB(R\x981\x0e\xfd\xa8:#z\xf0s\x94\xc3u|\xc3\x12\x880\xd5\x8d\xaf\x99\x04\xa5\xfcPY'BM>\xe5\xe7\x89q\xe1\x9aZA08\xd6 \xa3-3*\x84\\U\xce\x8b\xc5\xbc]\xe4(\xb0\x1b\xfe\xf3N\xb1\x9f>\xfa\x14\xe0\xcf[?\xc2\x1f\xb7\x82[\xf3\x99\x1f\xf4\x16\xe9\xb5\x0c\xeeR\x9d\x86\xb38\x99j\xc7\x1e\xe70$\xb3Q\x0e\xa0\xd3%\xa1\xdb|_Nx\x08\x89\xff\xe4\x89i\xc8W\xe9\x8c\xeb\x97\x03]\xba\xa4\xaf'\xdc\x03\x99G9^\xb3\x0bG\x89w\xe9\x94\xe5C\x18<D\x9f\x9a\xd1\xde@[\xb9\xc4\x7f\xda\xc5x\xca\xc4TE\x14\xd6\x8bEe9\xe5{{}O.\x0d`\xdcY\xe1\xaa'\x82\xb3\xc6\xb9\xa2Ipd\xbc*\xf8+\xce<\xac\xf3\xb9$3B\xc7\x08L \x86\xf0\x82*_\x10_k\x81\\\nd\xfdy\x03\x97\x0f\x01\xb8M\x0c\xca\x88\x99\xb2\xd2dA|0\x14W\x11\x85\x90Y\x93p\xe3x\xbcm\xcbk%\xb7\xc3\xfb\xb4\xf5b\xd12%\xc7\x12o\xa5\xc2R\x7f\x12%\x1fs\xf6\xea\xec-^\xfe\xf161\x1e\xc3I\x9a\x14\xc8\x8b\xc6 L\xd3 \x9e'=\xf5\x87\xa4\xdf\xc8\xba\xeau\x87\xe0\xc5I\xc2\xb2\x0b4r\xd6\x85\xef\x07\x81@\x0d\xc1\x95j!\xf1\x0f(\xa3T\x9fo\x80\xb0\xf9@.\xd9F\xe6f1\xb7\xba\xa9bA\x99\xa6\xfaL\x8f\x86Q\x04\x0e\x12\x7f\x12%\x9c\x02r\\\xe1d}\x11\xe59D9Deo\xce,b\xe2\x9cf\xea.a\xcc\x9b\xb8\x8a&\x9fr\x89\x0d\xe5{\xa1\xb93_G\xd95\xe7s\xac\xc6\xedsP\xb1p\x1a\x9f\xc3\x92\xffZ\xb3ukPw\xf5\xd8\x034\xdf|\xf9\x82\xbe\x92\xc6kA\x15\xb4)VS1^\xd4\xbf\x97o\x15Q\xb1\xe7\x18\xd6f\x93\xa4E<\xbb;\xe64\xad\x9dqS\\\x991T7cRX\xa3u\xd7M\xca\xbaQvMsl\xa5\x15A#\n2\xe5e\xba\xc5\x89\xb7\xfa!h\xf8\xee\xbe\xb7)\xd2\xb8\x99GM\x95Zq\xa1\xb2?\xc9\x8c\xb2Qz)\x15x\xa8\x0cu\xa5S\x05}\xdc\x87\xd0\x0f\xab\x81\x1f\xc2\x06\xf1\xa8\xf5\xa5\x9d\xcc\xd9\xe4\xd3*\x8d\x93M\x02d\x9b\xa09\xb2\xf0R\x0ekH\x0c\xcb\x18@\x96\x8ao:\x89\xdaf\xc7|\x95\xeb\xcb\x81v\x19\xf4`\x84\xfdE}\x03TE\xad\x9b c9\xeb\x04\xa4\x8d\x10\xa7\xad\xd7)\xab\\\xe9:v\x8d\x03\xa5\xfc\x19\xadD\xb1\xb5\x0b\xc5\x9a%q/\x9aN\xdf\xa7\xe9\"N\xae/R\x15z\xfc^\x87\x92\x9b\xd3[\xa4\xd7\x17\xe9\xea\x0d\xbba\x8b\x0f(\x16\xe6C\xd8zhNo\x9f\xb4\x92H\x9b\x0c\xd78\xdcm\n$\xec\xd5\x92t\xca\xdeY:\xba\xf2:\xf2\xfb\xef\xf9\xb9\xbeZK\xb6?\xe9\x15\xe9\x9b\xf4\x96e'Q\xce|a4\xe4\xe1\x8e\xbbJ?+\xad\xd6\x97/\xe0e\xd14N\xe5\x0b\x9d\x19\xb2G\xde`\xc6\xdc\x1b\xdff\xd1j\xc52\xbc\xf3\x15.m\x17Y4\xf9\xc42\x03\xa8\xa0\x891\xf5\xb6\xc6\xd7\xac\x90\xdf\xfc\x98\xa5\xcbw\x18{\xaby_\xca\xeec?\x13Qm\xc4\x91\xae\xbe\xf6\x99\xa9\x89\xab\x83\xb6\xe0\x9d\xb5u\x81\xfcB\xdc!H\x02\x0e\x81w\xcb\xbbWC\xe1\xe7#\xf9\x15\xc8eM\x05\x03-VFH\x812\xd2\xa9\xfb;\x0e:icu\xcd\n\xcdH\xec\x15\x13\x8e\xddi\xe6\xd7<a\xab=\x8d\xaa3g\xc3k\xceWb\xd4\xc0Q\xe2\xd0I\x14f\xf4\x88$p\xa6\xcc\x8f\xf8\xf0\x1aJsQ\xea;\xed\xc5\x92&\xcd\x83\xee\xea\x11\xf5\xaa_MZ\xe46\xf7\x11\xf5\\\xb3b\x03u\x9a\x92\xbd\xf9t\xab\xcb\xb0\x86\x8b\x08w\xc7y\xad\xe3V;\x89r\xc1\xb8x\xcf\xe1\xa9\xdf\xc5m~\x15\x12\xb4\xc4\xf7\xd1\x9f\xa6-O\xf2\xae\x00\xd2z\xc5\xdd\xe65+\xfe\xb8\xa1*S\xc2\x9e\xcel\x00\xad\xc06\xbb\xdb\x00\xe2\xf7\xea\xb1HW\x08#\xbc\xf4\xe8<\xc9\xad\x0d\x06\x08\xedkC\x9e\xfd\xfa\xf3U\xe8\x03E\xf4\x10N\x0b6F\xa4\x0d/\xd4\x85\x97\x07.\xc6\xeb\xd9 \x86\xa1\x98\xb6\xad\n\x12f\xe6L\xf2\x02\x1ai\x8e-\x0f\xff\xb2\x81\"\xa8\xb6/\x9e\x078\xf5\xad>\xddX\x12\xc2:\x04\xe1V\xa4\x90\xd5w\x10T4\xdb\x16\xb1\x93\x1c'\x838\x94\xd7x\n$x\np\xc4Jz\xf2,\x80\xa1\x8a_\x87\xb1\x89\x9d:\xee\x05\xca\x11\x92\xfd\xec)\xa4\xc6hl[\xfd\xc6\x03\xd0\x81\x8e\x8dwR4,\x0b\xa1U\xd1\x1b4\xb8@\xd26[g\xd0\x84\x1b\xec7\xf1\\\xf5Q\xcbKC\x93\xceO\xd1b\x8cz[\xc4K\xa2\xc4SE;\x8bt\x12-<\xbb\x06[F\xf1\xc2~\xbdL\x93bn\xbfN\xd6\xcb+F\x8ck\x15\xe5\xf9m\x9aM\xed\x92\x8c\xef\x07\xfbu\xce\xa2lBtP0b0\x9c\xef'\xde\x923^gD\x03\xb7\x8c}\xaak`\xdb\x94tN.W\\N*v\xb6\xfe\xab\xce\xb5\x92\xac\xae\xce\xe5\x16p\x04[[\xd9Hp\xce\x98b\x8e\xcf4\xcaX$+T\xe3}p\xfc\x12\xa9\x03\xcf'\\\x8c|\xc3f\xc5\xd0\x0c\xe1U\xabq\x91\xae\xac\n\x19\x9be,\x9f\x8b\n\xb8m\xf3\xb6}\x98\xf5\xac~Q:\xf8\x1c\x9aE\x17)\xfaK\xf7\xeejm\xb4\xee\xc3\xec\xdb\xe1\xe4R\x83\xfa\x83\xc7\xa6u\xbatM\xb7B\xc1E]\xd4W\x9c\x82\xb7\x86\xd6f\xbdY\x9c\xe5\x05\xaa\xf4\xddZ\x1b\x94\x9f\x12\x112\x06\xd3ic}\xferO\x8aS\x1cC/\xeeV\xd5\x89s\x93\xc6S_\xbc\xc7\xa5\x83\xc3v\x0f\x15@`k\xeaX\x8bU\xd2V\xc5T\xfbvW\xf9r\xae\xba\x15\x82{\"a]918\xe2\xc4]\x04\xd3AMy}j\x15\xde\x04F0\xa6o\xa0\xdc\xdd(\x07}\x1f\xcbz\xb3t\xb2\xce\xcds\x86v^~\xf0\xdd\x1f%\xf1\x12c\xdb\xbf.d\x90\xfb\x93t\x9d\x104\xf6*\xcd\xa6,{\xbd\x8c\xae\xd9\xd9\xba@\x06\xbf\xa1\xca\xf9\"\x9e\x10$Y\xab\xf1s<\xa5\x8e\x95\xab\xf4\xf3\x8f\x0b\xf6\xd9Y\xf0\xfb,]\xaf\xc8\xd2\xb3l\x1a'\xd1\xc2Qa\x92.\xd6K\xd7\xdcDan\x17\xcc\xc8\xa1\xcc\xc48n\xe9\x92\xf7i\x1e\x17\xf1\x0d1{^z>\xcf\xe2\xe4\x13]\xf6\x8e]G\xee/1\\\xb1]t\x9d\xc5\xd3\x0f\xd4Xd\xc1iB\x1c\xc5\xb2\xec|\x15%\xee\xc2\"\xca\x08X\xf1\xd2\x13\x84WS\x99\xb3WQ\xec\xeeX\x96\xd3}\xcf\xd2\xa4\xf8\x99\xc5\xd7s\xa2l\x11'\xecd\x11-\x89\xb5\xe7E?9>KW\xd1$.\xee\x88\x02\x1a\xdci\xb6\x9aG\x14\xaa\x14\xd1\xd5y\xfcWb\xedn\xe3izK|\xf0\xd7\xd7\xc9\x94\xc2\xae\xbf\xa6\xe9\x92\x98z\xbcX\x9c\xb9\xc6:[\xa4\xe9\xd4Y\xca\xb9\xd9\x86\xc2,\xfd\xc4^E\xf9<\xca\xb2\xa8\xb1B:\x9b\x91\xdb^\xd4x\x1b\x17,[\xc4\xcb\xd8Y\xa3e\x0c%A(\xcb\xbe\xda\x17p#\xefgv\xf5).\xbc\x10\xbce\xce\xff}\x9b\xfe\x95\xffw\xe6i\x9a\x1e\xa9\x89\xf9\xc4\xeer?\xeb\xe2\xee\x9d\xdauh\xa7\xe3Q\xeba\x0e\x9a:\x11\x13WL\xe6Qv\\\xf8\xfd\xa0W\xa4\x1f\xb90+5\x99\xbc,__ \xc3\x0b\x7f@\xd9\xa4\xa3!\xe8%gf\xf4\xd0\x97X\xa6\xa98\x8d{\xca\xd8\xa2\xf1q\xfe1\x89\x8b\x05\xcb\xf3w\x92i7\xdcs\xf3y\x9a\x15\xf3(\x99*\xad\xd5\xe9\xe7U\x94\xe4\"'\xa3=\xc5\xabh\xf2\xe9:K\xd7|\x8f\xd3\x00\xa8j\x1c\x17E4\x99/\x19Ev\xed\xda'\xb4\xaccW\xc4#\xa4KEA\x8d\xd3\xe4\x7fnR\xf9O]*\x7f`+\x16\x15C*\x8d)\xa1:\xb1;i\x87\xdd\xfd\xc7\xdeiD\x92\xc29F\x81\xa5\x8eC\xba^\xe9\\\x98\xc76W*W\xb6\xfb\xd0~H\x8b\x82\x93\xc2\xa6\x01\x8a:\x9d\x86)\xaav\x1a\xac\xa8z\x8f!\x0b\xf1\xa9i\xc0\xbcF\xa7\xe1\xf2\x8a\x9d\x06\xcb+\xdec\xa8\x1f\xc4y\xd84V\xac\xd2i\xb0X\xb3\xd3h\xb1\xe6=\x86\x8bbg\xd3`/\xd2U\xa7\xa1^\xa4\xabN\x03\xbdHW\x1b\x0d\x93\xf3&\xae\x11\xf2\xb2\x96Ny\x95?FY\x1c5\x11\xca&\xfeG\xafC3\"\xeaib\x87\xd4\xc3[\xf91Z\xc6\x8b\xbb\xae\xf3O\xd7\x05o\xd8\x05\x02Y\xdc\xb2D\xb2V\x0b\xacd\xad\x86\xe5\xf9\x8e\xfe\xe5P\x15\xc4\xf8\xf6\x9b\x84\xaa\xc4\x7fj\x06\xe3K\x85a\xd0`\x1f\xe3\x02\xee\x89\xf0\x80O\xfb\x96\x83\xbc4 \xc2rv\x0b\x1f\xd8\xf5\xe9\xe7\x95\xef\xfd\xe7\xc8\x83m\xc8z\xc7\x17\x17\x1f^\xff\xf0\xf1\xe2t\xfc\xee\xf8\xed\xe9\xf8\xfc\xe2\xf8\xc3\xc5\xf8\xe4\xa7\xe3\x0f\xb0\x0d\xde%]\xa9,\xfe\xdd\xbfXi\xcd\"\"\x1e\xfbZ\x06\x80(_\x96w\xa5\xb9\xf3\xaetkkmG`\xc7\x00\x81\x11\xf1\x9e\xcb\xfd2\xfb\x1a\x1a\xb4\xf9\xeb\x11\xbb\xc4\xb0\xaf\xa8\xdd\x85!\xf8\x91\xf6\xa6\x16H\x9bNs\xdc\xc5\x9e\x10\xf3\x84\xcc\xa3\xfc\x874]\xb0(\x11:\x80\xef\xbf\x87\xad\xaa\xe8\xddz\xc9\xb2xR\x16\xc5\xf9\xbb\xe8\x1dg\xfeT\x05%\xce\x99\x15\x0bx\x01\x83\xb2\xd6\xd9\x0d\xcb\x16i4eS\xab\xaf\x01\xa9\xc0\x03\x89<\x13[\x1f\x87V\xcbo\xa3\xec\xd3z\xf5c\x9a\xbd~\xd5\xaaJ\x13\xd3\xcez\xaf_\x8d\xeb\x88\xc0q\xe0\x90cHj\x85\xb4\xae#@\xce\x8a\xe3\xa2\xc8\xe2\xabu\xc1\xac>\x1d\x8c.f\x9b(\xbf\xf2\x89\xee\x89\xe0\xefM3\xfd\x90\xa6m\xd7\x95\xe5T?\x9c\x9d]\xd8\x93\xfd\xb7C\xcf\xfb\xb7\x0d\xe6i\xf4HB\xd7\x9a&\xd1uXK\xdcK\xf4k\xccT\xed\x8c\x0ePV\xea?\xbc\xfc\xe6\x1f\xc5,'\xf6\xd7Q\xad\xc2\x08U\xc8\xb4Q\x15j ]\x82\x0bF\x8b\x14.\x1f\xa5~\xd0\xf3huc\xe9\x07\xd6\x8b\x14tl\xb3\x0e\xf5\x94\xf6\xff\xe6n\xfc\xf2E\xbcl\xd8@\xfdRE\x1e\xab5\x86!\xfe\xad\x90\xbb\x93\xbe\xb2\xc4\x9d8?Y\xe7E\xba\xac\x16\x15\x01X\x91\x0d\xbc\xc1\x1a\xa2\xf8V\xf5 \x01\xba\xc1*\x1b\xbdtXl9\xc4\\RL\x15{\xa7\xc00#\xc6`<\xaf\x05\xd1\x11\x80ndk\x880\x92\xb6\xe0[a\xe1[\xd1\x8co\xa4\x1f!h8\x94\xf60cW\x9c&T\xbeD\xf5\xf0\xa6\xe2@hw]\x06~l\x913GgP\"x\x8a\xee\xbd\xba\x02\\\x98}\x89\xabb\x13pb\xb9\xe8\xeeT\x9b|\x02y\xf11/\xed>\xd0$Q\x81\xe8\x8eo\x8cK:@\xabzZ\x06\x0e\x9a\xbdQZ\xdfq4\x93\xa4?k\xfb\xa3|\x15M\x1c{\xb5\xfa\xea\xc8\xa0~\xef\xce\xfd\xb5\xc8\xa2\x877\xbc\xe8.O\xed\xe8\xb4\xd3\x8eN\xac\xf6}l:P\xa9\x8c\x8c\xf7\xd8\xa5s\xc4\x8e+|\x9b0\x08Hc\xd0}\x82\x14\x14\x06^Lz\xdaV\xd2(\x86\xdcA\x1d\xf7\xa0\x8b\x0886a.\xf3\x00\xf8\x8a& P\x89\x84\x15\xfaXmH\x15%\xa4\x1a\xc7V\xc7\xf4Mh\x145\x8c\xee==\xf0\xc9\xb71%r\x9e|\xa5\x85\x7fgJ\x94\x06\x9c\xad\nU\xf0\xe3\x06r\x84\x1d\xdb\x04\xc2\xbd\xd9\xab\xa3U' \xee\xddj\x1f\xabG\xc0F1\xb2\xd3\x03\x0c\xfb\x8b\x7f{\x0e\x9fc1J{a\x8d\x93\x9d8d\xc5\x97\xf4>\x12\x17\xe2m\xc8R\xfer\xc8f\"9\xe77\xcaf\x03*lq\xe2\xef\x0e\x1c\x11\xc6\xcdp\xeb2\xcf\x97\xd9\xca\xba\x92\xdc\xb6\x06\xa4\x91lnq\xb1x\xd7\x8bV\xccY\x9a\xa25\xcd\xebW\x95\x0dv\xcd\xdci\xc5\x92i\x9c\\\x7fD\xa3\"\n]\xda\xbe\xc1\xe5\xb7\xb1\xc6\xf0.\x10w\xed\xf2\xcaU\x06C \xf1\x04\xc3\x9aW\xf6B\x94\xfdL\xc5\xb1|\xff=(\x03>\x89\x98>\xeb-\xd7\x8b\"^-\xa8\xb4P\x15\x1e8\xc5=\x82X\xde\x94\xd9\xd8\"\xcc\x81B\x1b(\xf5\xd2UaGEu\xde\xba\xa3\xbbA&\xc4d\xdd\xe5 \xa9\xbb\x1cd#AhG\xe9\xe5\xff\xcb\xde\xbbv\xc7\x8d\x1b\x0d\xc2\xdf\xf3+J\xcc\xacCF4\xad\x8b\xc7c\xb7G\xd1\xeb\xb1\xe5\x8d\xb3\xe3\xcbZ\x9e\xe4\xeci+Z\xaa\x1b\xdd\xcd\x11\x9bdH\xb6de\xac\xe7\xb7\xbf\x07\x85\x0bA\x12 \xc0\xb6<\x93d\x1f|\xb0\xd5$\x88K\xa1P\xa8*\xd4\xe5\xac\x93\xc0\xa4\xd5\x92\xd2B\xdcn\xc1L\x89X\xd0\xcd\x0e\xb1\x8b\xa7\xf9\x197\xa4\xd2\x93\x02\xacPaLU2\xc7[\xf1\x0d\x9e\"\xed\xe7Gj\x82xQ:\x1a\x13\x137\"A\xc3\xa6\xde\x02O{r\xda\x01R\x907\xb3@&\xa0l\xdb!t\x87\xba\xa3#\xac\xb1\xe2k\xe2\xc7\xd3\xbd\xee\x17F\xcc\x12\x7f\xe9\x05\xef%\xa9\xff\x9cW5\x06Mq8\x9f\x84<\xc1b\x19\x99\xecA\xf3\x8c\xd9\x01Nz\xd6\x8c\xe2\x8d~\xb3q_xv\xb8\xf4\x97k\xf0\xc8]\xe7\x9b\xac\xfe\x1b\xeb\xcba\"\xe2\xa0U\xf6\xb6\x8e\xdd\xed\x8c\xbf\x07>QZ$\xc8\x9c1*\xc9\x92:\x89Sn\xb9*\x08\x07et2\x984!?\xf1\xbdI\x8f\xc9\x12\x8eU\xecs\x83\xaeP\xc2\x7fX\xcc\x17EXw\x8d%\x8e\xa20@\xf2\x10\xceoy\xe7\xec\"\xcf|~\xeb\x0e\x04\xdf\x85\xba\x9b\xd8\x0eP\xcd\xb9\xe3*.|\x1ec\xcb\x18\xd5\xe0\x96\x85\xaa5\xd9\xf9_\xc7\xd5kN\xbc'\x92\xa0\xd7\x0dA\xefch\xa8\xa6\x8d\xa8\xf9\x8eW\x13r\x1eu\x16\x99\xbe\xdc\xa0\xc9\xcfF\xb7\x8d\xc3\xee^e\xc1\xa3\xf1\xd3\xe7\xcc!\xc8\xb6\xc6\x06/\x0f\x15\x13\x87\xfa,\xf2\xaaf\xa0\xd7\xec-\xd3\xc6bVmZD\xb2n\xb1\xd6\xc8\x0cY\xe7\xa1e\"\xd6\xfe\\Y4{_Je8\xd2-\xb1\xbe\xdf\xd2N8\xc4\xde.\x99\x7f\xb6\x8da \xd9q\xaf\x19A\x08%Ztex\xb6i*42\xd3N\x0f\xbb\x8e\x07\x9amW\xa5]\x0c\xd5\x15?D>\x13\xaf\x17)G\xfe\xfa\xaaLm7\xb0m\xae\xe7u\x19O\xfbx\xbf\x1b\x91\x80g\xcdy\xd45q\xdc\xf0\xe7\xdd\xfb\x8c\x8a;:\xd3\x0e\x809<3\xdewx\x13 \x19\x93N<==\xb4\x96m\xd6\xab\xf7\x11\xcd\xfb<\x1c\x97\x91\x8fxz\xa2}\x91/\x8f\xee\x88\x98\xc7\x00\xf1\xd3\x0e^J\xb9\xccc\xd9\x92Zi\x8e\x86\xf4b\x86\xb3\x88)\xb1h\x03z\xb9S\xeb:\x84A\xfc4\xa1:z!=D\x11|\x8bI%\xbb\x17\xc2\x0cv]\xbc@Ax\xf9\x0eU\x80\x16\x0d\xa3\xbcu\xbc\xd6\xe6nP\x0bg\xab\x85\xf2\x18\x9e\xaf\xc8\xec\x12\x03K\xf1\xc05,\xf55\xe4\x0b\xf8\xbf\xe8\xa3\x05\xbb\xe0\xfd\xdfH/\x9a\x82Q\xb1\x03\x8a!\xb5A\xac\xf5\xf3\xe8<\xbf\xceHI \x87\xef\xed\x1f\xeeyMX\x89\x04\xd5\xc9\x13 \xf2\x10f6\xae\x98\x16MV,\xb6\xec\xc8\xb7\x1c\xc1\x86#\xdc\xab\xac&e\x16\xa72|\x8b\x8f\xc1%]<`\xc4\xac\x1a\x8cQ3p\xdd\xbb'NPf\xf5\xda\n\x95\xa5\xffF\x8dfK9\xc3&\xa4\x8c\xcb'%\x0b%(?\xea\x03\xc9g\x10\x088\x082r\x0d\x15\x9b\xae/~\xb3\x1a~\x1e\x04\x11\xe7\xb2)\xa3\x83\x87}\xd6zr\x04\x19C4\xbcr\xcb\xe7]r\xc16\xae)7\x99\xc7\x9c\x12\xba9\x89\xdb\x0b\xc3\x9d+s\x0c\x1c\xe1#\xb5G\xec\xd8\xf7\xc2\x86\x02\xb4q\\\xde^\x9c#\x00\xd1p\x8fy\x8f\xcbGk\x96\xc1\x97\xb9)w\xf3+\xd1\x92\xfb\x95\xea\xbf\x98t\x05\x86s\x16\xc9\xa1N0g\x8a\x1a\xe4l\x02\xcd\xadC7\x81,{\xf3uN\x92\xef\xbay\xd6\x94P\x17}\xd4\xfd\xf3\xdb\xd3\x0f=\xc7\x00Z\x9e\xbf}\xfd\xee\xed\xe9\xab\x0f'\x13\xd0\x88\x02'\xaf\xdf}\xf8?\x138\xe8\xbfY\x92\xfa\xc3M\xe1\xc4\xb8\xb7/~;'\x01\xdd\xe8\x11v\x83\xea\xea\xa4\xfak\x9c&s\x11\x15\n\xd1\xd6\xb0 \xf8\xbeN\"9\x05\x98@\x12\xd1\x99\x8a\xa4g\xa5\xef\x1d<\xd2'o\xec\x88\xd4\x067\xf1/\xb5=`\"x\x1f, f\xc68Y\x17\xf5\x8dD\xa4\x97\xf1\xac\xce\xcb\x1b'\x88R\x92o\x9bR\x1f;\xfa\x8d\xb1]\xe7\xd4\xa5\x90\xa7\xed\xb0l`\x90Dl\xa2\x94k8\x82<\xbcS\xd8\x9a7\x07\xdf\x05,Ve\x0f\nm\xf5\xf3\x95\xd6K\xdcpL\xd8\x00\xc5\x81\x94S\x04\xa7Tk\x9fR-\x86\xa9\xdc~\xc4v\xd5\xaf%\x83\x8e\xddb\x82ZK\xfbI\xf5\x01\xdd;\xc6M\xa8\x15\xc8&\x19l_\xac\xb7\xce\xd2\x88\xbd\xfc\x9f$#e2\x93cx\x9e\xc6\x95\xd5! \xf8\xd2j\xb0\xbeO\x9bX?\xad\x89:w\x92\xb8l-\xf9\xeb\xeby\x19\x9aQ\xfb\xe1#\xc6\xe1\xef\xf7rj\x08YB\x97\x81S\xec \xff\xa0\x9fiD\xd1\x94{\x91\xa7\x11,\xbc\x89\xe7.\x08H\x9c\xa1\xfc\x8b\x86\x7fW\xef\xceItIn\xe0\x18\xe2\x88T\xb3\xb8 >>\x08P\xc5T\xe7,G\xaa\x7f\xf8H57\x12\x7f\x8d\x89\xd9\xd51=\xa2\xc7\xc6\x9e\x92+\x9e\xa7\xa9\na\x16\xea\x13q\xd2E)BLr\xc2gQ\x1b\x04 %\xd2\x1e\xe5\x00\xd1\xb7\xcb\xbb`\x92\xaaxD\xf9\xaa\x9a\x13\xa2&\x94\x9a\x88\x94\xd10O\xbc\xae\xc26\x89'\x0dTy\x17u\xf4\xcd7|d\x18\xf4Or\xf83\x7f\x81 \xf1<y\xa9\xbb\x81]H\xe9\x84\xd1\xb0+\x0bB0\xdcB\xb0\x10<\xda]r\xc5\x94\xccM\x93T\xec\xdf\x05\x8d\xd2\x84B\xa5\x1b\xcbM\xaf~\x96q\x84\xd6Lk\xbd\x86\xefe\xf8\x9f\xa7\xb0\xde\xdd\x0d`E\xc5'\xe2\x17\x18\x91}}\x16\xc2\x15\xce\xa5\x08a\x1d\xf0\xd5\xd3\xa8R\xccW\xf7\xb4\xb7%\xba\x1b\x9b,\x08\xe8\xf0\x976\x8d\xe4M\x88\xa1\xe7\x97<.\x82\xc5\x18a\xc9#2\x91\xac.\x13b\x89\x85*\x81r\xce\x80\xb2\xe3\xdf\xc0\x11\\D\x19\xe5\x8e\x83\x00\x93h?m\x01\xe6\x86)\xf3\x14\xd8\x9c\xef\xee\x9a\xa1#\n\x85\x92}$\xc6\x01\x0c\x8b\xa9\xc0\x01u\xdd\x8coXL\x05\x8c`\xcc\x12\xd6\xca\x99]O\xf7\xf9\x92Krq=\xdd;\x0b(\xe2\x89\xb9\xee\x89\x99\x0e\x83\xd5`\x8e\xa0U<\x1c\xc1\xdc\x86\x00'\xb8\x1d\x86U\xcfT$\xe1\x04m\x08CJ\xdfCYG&\x8af\xde2gl$\x9f(;\xcc_\\'\xf5\n.\xc9M\x05\xbfPI]\xf5\xaa\xa9\x83\xe8\xe7<\xc9|\xda\x0e\x05\x8fw\xeb\xc1\x04>\x85p\xa2\x07\x8b\xc6\x0e\xa3\xf7\x84\x13\x94U\xeb\x05\x86\xda\xf0\xbc\xae\xb9\xc5\x97\xfaA\xb2\xd0\xa9h\xcb\xb2 \xa1\xc2tn3v(\xeeuo\x7f\x17\xec\xf6\xf7Q'\xe0%S\x7f\xe9N\xad\xc2\xec4\xfe\x92\xd7Q\x04lq\n\xf5\x177k\x02\xe4\x98\xf2\xa9\xf5?\xa2G\xbb\xb4!\xf6\x98\x07\x12\x06\x89\x0c\xa2\x92\x14i<#\xfe\x83\xe9\xc7\x8f\x7f\xff&\xfa\xe3\xee\xb1\x1fL?\x9e\xfdr\xfb\xf9\xec\xc12\x04\xef\xe3\xc7o\xeeyJ\xb5vW\x9f\xa5oT\x10\xfd\xf1\xd8?>\xfa\xf8\xf1\xa3\x1f|\xc6m\x1b\xed\xf2\x07g\x01\xb6\xf4\xcd~\xf4\xc7c\x86\x18\xdft\x03\xc2\xeb\xbd`\x85~\x8d\x8fV\xa7n\x96\x06|hF\xdc\x0d\x10?\x184X\xd8,\xef\xb7\xbf\xf9]\xff\xaf\x8e\xb2\xae\xe1*\xd8\x11\xb3(\xf3\xb5Qm\xf2:\xc6T\xde\x85\xff:.Z\x06|\xaf\xe3\xc2AQ\xd3\xaa\x85\xdbL\xb6\xd6y\x1e\x18\xdb8%5\xfb\xe8\x94\xd4\xad!\x9c\x92\xdaa\x08\xadZ\xca\x10\xfa\xcf{q\xa4\xaex\x92r*#\xbc\x8e\x8b>b\xae\xf8\xcbS\xd2am\x9c\x12\x9a\xcd\xa3\x8a\xd4\xecm{\x0d\xc3v\x0e\xea\xa1\xe5\x9fGK\xd2\xd7@\xb3D\xb8\xc3\x0d\xcc\xb9i\xa0\xe6\xe3\xd8\x16T\x8ew\xde\xe0\x8f?g4\xb4g\xa1\x85l\xf2\xf0@VQ<\x9fkF1\xecx\x0e<\x07\x83a\n\xd6\x98\x94\xfd)\xac\xf4Sh6\x94\x8e)\xba\xe2\x99\xe6\xbb\xee\x07\xc0\xb3\xf2\xe9\x9e/\xad\x13\x03Eg\x1a\xe9C\x1ai\xda\xbd\x19\xd3.&~~\x95\xd5>\xe1\x1e\x9b\xfe>ej\xf74\x8a\x8a-P[\\\xdf-\xb5T\xef\x8ae\xc8\xac\xc7c\xbd8s\xf4\xed\n\xab\x8bi}6~?\x0c7\xcd#.\xe9\x9av\xdd-*\xafq\x15D\xeb\xb8\xf0o\xb6\xd8.\xc3\xe3\\\xb3l\xf8\xddD\xf9.\xbb\xc9 \x00k\x0d\x00\\\xf7\x9a\n\x80\xb5\x1e\x00\xbf\xeb\xffE\x87E\x05\x85\xe9\x99\x8e/97\xf3%yo\x1eF\xf3\xa8+\x99\xc2y\xb6J\xd2\xf9\xab\x17:\x99\x0c\xc3Oe\xd2\xab\xfa|\x8c\xb5\xd7\xb5E\xc8\xf6>f\xd8G\xc6B\xd13\xcd\xffO\xd9e\x96_g\xc8s\xf8h\xc2\x0f~\\\x03c\x80\x16I\xca\xa2\xf2H\xd6\xe6\xef\xd1\x1f\xa7\x1f?~|p\xf6\x80Y\x1c\xef\x827au\xd3$#\xccM\x9a>\x0c<\x14<\xb19\xa69\x9b\xc3\xc5\x0d6\x9b\xc9\xf7\xaa\xf3\x87nB'}\xb8k\xf4\x05\xde\xef\xc9\xba\xa8o\xb0\xc1q\xf7\x1b\xde\xefk\xf2\xa96}(\xd4\xd8\xfc\x8f \xff#\x9a'U\x91\xc6hY\xca\xdc\x98\xf0i\xc6\x7fJ\x80\x0e\xce\xec\x93\x01\xa3B\xc4\x90Sz\xde\xbeh\xba\xd1Z\x97\x94\xa2b\xa3\x91\xefW\xcaE\xa5\xb7\xd7\x19)_\xbd\xe8a\xab\xd4\x8b\xa2\xe5\x8c\xae\xef<\x08B\xb8\xc6\xfc\x91\x80\xb1\xc8\xcf\xab|S\xce\xda\x1cE{'\x9d\xf6\xb4\xb6yvJXH\x9d\x92dcL\xab\xf4\xd6\x92\x14\xd03\xdf\xdb\x7f\x88\xd1\x923\xb9\xa1\xe8\xee\xeaW\x97\x92z\xc9$\xf5\xb2\xa5\xbe(\x87-\nY\x8e\xb9\xd2\x90Z\x1f\xb8\x0e/\xf7\x13\x93m\xa1\x1ck+:\x7f\xdc\x8cY\xaf\x8c\x8b#\xc2\x83\xf9(\xcch\xeb!6\xbaO\x1b\x8d\xa3\xa4z\x9do2\xba\xc9Xo\xdf\xed\xb7;+\xe2\x92d57\x90R~\x1ea\x8cr\xe5\x01^\x8e\xca\xd6\x0f<&\xec\xc9\xf7.\x176\x1d\xd5h\xf6\x03Y\xe4%y\xdd\xbaAu3\xe7/}c\xb8H\x0e\x87 h2\xaf\x03FSc\x03\x9e@\xa6\xaf\xc0\xec\x9e\xcc\xf6oby&05\xac\xbd\x84\xb9\xd9V\x8f\xc55\xe4\xc1s\xc6Z#\n\xc8\xfd\xc4\x1b\xd1\x83n\x9b\xddC1JA\x194\xfe\x91\x98\xd5\x8bb\xd5\x1b\x96y)\x87N|\xfd`\xea\xf6V\xae\x95a1\x97Va\xf1\xa6b\xf0\xc6r\x95\x92g\x030\xdbf\x8c\xa8\xc7m\x01\xac\x8e\x94\xb5\xdd\xdd\xb5\x8c&[\xdf)\xc8X\xa4\xc7\x16\xa4\xf6\xf5\x90\xaa|\xa2K\xc7x!\x82\xf7\x0f\x8d\xbb\xd8\x94K\xc2\x87N\xe6r\xf0\x95\xc5\xd5\x14\xc3j\x9eF\xe7EI\xaeHV\xbf\xdb\x94\xcb$3*j[\xc9\x94\xf6\x9e\x02\x81\xef\xe1B\xd2fb\xa6\xcd\xb4\x9c\xfb\x17Sr\xe6\xaa8\x03\x9c\xf8@\xd0\xfa\xe1[\xdaf\xb7\x7f\xc9\xe2 \x85\xcaN\x17\xa9\x86\xfa^\x92\xfa9\x8f\xecW\xc7\xb3\xcbg\xf39\xc9\xe6\x9b\xb5\xebHtVO\x836L\x82~\x9c\x0c\x86\xaf.\x99\xe5$Z\n\xe9\xcf\xbe\x1av\x8f\x18\xeb@\x1a\xae\x81s\x11\xd2*\xcav\x9e\x80\xa2\xe4Z\x88\x08\x87\x06\x8aL\xc1N\x9b\xcf\xa3\xf39\xb9\xd8,_\xbd0\xae\x00\x8e\x0d\x99\x9d\x16L\x7f\xb8y\xf5B\xc4\x9c\x17EcB\xdb\xfd\xc4\xb6\x14\x12\xcd\xf9z\x00y\x1a\xb0!|B\x8e\x9f\x08\xce\xeb\x1d\xdf\xbcC\xc8\xd3\x15i{\xb8\"\x8f.7\xfc\x18\xc4T*\x124\x12\x0b\xa6\xf5\xb4t\xaf0\x8f\xae#\xe8\xf0\xb1\x83\x839q\xf3)n\x1at\x1d\x84\x03\x18\xc4\x19\xe9\xd4=g\xb9]\xbbw\x87\x01\x12\x0e\xb6\xefpT\xecO\x89\xf2n\xa3{'\x19$\xb7\xe19@G\x1e<N\x038Ez0\xa6{\xfd\xa6G\x91Z\xb3:\xc6\xc1\xb6\\&\x04]r\x1b\xb3\x8b\xc9\xc7\xd8\xf5\xd4\x88\x9e5O\xdd\xa5\x11[k\x11&\xda\x11 \x7fR9P\xb7\x81;\xac\xb4\xc2\xfb\xf4\xf2\xac\xf4\xc7\xf0>\xcfk$Gi\xff\x15Y&UMJ\xc2\xe8U\xdc\xe5@\xaa\xd5\x9b<;\xad\xe3l\x1e\x97\xf3\xbf\xc5e\x96dK$\xbe\x0e\\\xb0\xf1FB\xa4>,I<c\xa4\xdcv\x10\x9aD\x00\x10\xaa\xca\xe1s \xb8$.\x04h\xe3\xd9\x04n\xc9'\x99\xa1\x06\xe3\xe1\xccUA&]\xcc\xe1X'\xd7\xc3\x90\xfc#\x8aP\x01M\xf8\xd2\x8b\xdfN\x1f7:!\xf1\xb9\xa2%\xd2\xe0\xafZn\x83\xa7\x90[\xef\xaf\x85\x88\xde\xdam\xf9\x00\xd7\"J\xdc;q]\xbe\xdat\xf5).\x1fUp\x841\x01zK\xb0q[\x02\xe0\xd1\xe4Y\xeezA\xb1\xf4\xd8#\x8a\x13v\x80\xc4\x10\x8bs\x16\xb4\x10!\x85cH\xc7!\x02t\x90\x815\xe1\x8e\x0c\x00\xcc\x847\x97&\\\xda\x1a\xda7\x86\x88\xc0j\xe9S\x04_\x131aP>(\xf2\xc2N\xaat\xd8\xecH\xa2N2\x94;\xb5/\xc6\x86\xda?\xc5\xa7\xdb\x1b\x010G\x97\xeeu\xbf\xde\x9e\x969\x1b\xba\xe9{\xa09gH\x14\xcf\xe7'T\x80\xfc\x91{+2'\xa8\xeeSn\x1e\xb6\xb3\xaf\xb5\xadn\x1a]\xe7Wc\xd2\x8a\x08\xff{C_c1\x90\xc5\x9b\x881\xa4'6\xc9'\xd3<\xf0=\x8a\x00\xbb\x0c4w<\x959\xd1w\xb3\xcd,L~\xb5\xfd\xed?\x8b\x8bzS:\x06\xee\x80\xedW~\xef\xae\xc15\xb0\xf2\x9a\x8bKQ\x06`f\x1f]\xa9\xff\xd8\x05\xcc%\xe7\xa0^\x88$\xba\xeaL\x8d\xe6\xdf\xad\x84kwA\x0d\x1e\x1f\xe8\xc2\xf8\xd1\xe7\xfaP\x11\x87\x8f\xba\x99\x00\xb8[\xddw\x07A\xbb\xfd\x8d.M/\xf3aM\xf2\xecy\\\xc4\x17I\x9a\xd4\x89=u\xc2\xd5\x97&\xa0\x80\x8e\x14\xe6\xb7SQ\xdc\xbb\xc7\xb2Ox<\x8d\x00^\x1b}\xfe\xdcKI\xc1\x9e\x95\x1b\"*\xceXL\xff\x93yR\xc7\x17]\xa7`\x93\x03o\x92g\xaf\xb2E^\xb2(\xf4\x16\x0c\x17\x1a\xb6x`Jz4\xc5\x18\xfb\x04\xdd>\x8c)\xbe+1\xa0\xf7\xccc\x1c\x03\x1cj\x97\xc8G\xb7\x91M\xa4\xce\xc2'Zy\x1el'nI\xaa:/\x89l\xc7i\xf9\xd9\x05[lJ\xda\xc3tZ\xca\x9c\x0d\x13\xc6j\xedi\xeb\x14\xed;G\x9c\xe9\xc7\xab\xb52\x84\xdc7\xe5l`\xa1\xe30!\x90\x19z%\xd6\xd8D\x95\n\xbe2\x84*\x08!\xf1\xcb\xe1\xd0E*\xcc\x9d`\xa5\xd7\x1azr\xda\x18l\x1e\x13Q\x90\x007\x96\x1e\x83*\x16\x93^\x81\x17~\xa8\x87,\xc9\xe6\xad\xaa'\xd9\xbc\x8f\x15\xfd\x81I\xebP ^\xd9B\x7f\xb3\xab\xbb\xd6\xb4\xf1m\x12a\xbf\x1f\xee'\x87\xb8`\xf2\xf5\xcc\xb8\x8eD\x08*\x01\xf7\xb4\x12\x18b>)8\x10\xefg\x11=1\x10\x80\xbe7[\xc5e<\xabI\xe9\x85p\x9f\xa7\xf9\xe2\n\xee\x01\xb1\x04A\xcc\x1b\xa2\xcc\xe3`3\xdaV4Y\xfa\xb9\xddR-\xd2]\xbd\xc5\x98\xf7\xd5\xb0*\xe1\xf3\xe7a\x941\x98\xb8\xe3\x04F\xaa\xef+\x03\xf2[n\xd0\xea\xa82\xe3*3\xbb$\x99&\xd6\x15E\xc5V\xaa\x7f\x91\xb6\x9b2w\x86\x1d\xd4\xdd \xb4v\xd8\xd9\x0bp\x04\xaf\xe3z\x15\xad\x93\xccG\xa7\xad\xd6b\xfd\xc6\xfb\x02\x1dt\xf86\xf8@>\xd5\x83[!\x89fy\x9a\xc6EE|d\xe1\x12\x13bg\xf2e\x0fYs\xb8\xcf_\xb3Y\xe9\x12\xcf\x8aH[\x95\x82\x93CQ\x94\xf4<\x12\xcb/\xb8\x15\x8f\xe4\x96\xe2\xa6\x830>\x01\xee\x8d\xd9q\\\x11\x02\xa2XO8n\xfe\x14\xdcy\xd0\x84\xe2\xeb+B\xf5\xea\xa5\x86\xf7\x9e\xd5\xc9\x15Q\xf2\x08\x91\xe8\"\x9fwRH \x81z(\xbc\x8f\xee\xbb\xdf\xb5\xff\xda\n\x9cW6\xef\xdb\xc7z\x86\xb3\x17f:\xd6\xfb\xea\xb2(\x0e\xfb\xdfv\x1b\xafZ.^}\x0f\xaf\x94\xf5\xf2\xb0+\x15\xcf\xf8\xf3n?\xcc8\xfe\xf0\xdb\xee\xf3\x82\xcf\xad\x1bub\xce\xfa\x17\xe1\xb0\x1f>\xea\x0e`\xc5:z\xdcy|\x85\x8f\x0f\x0e\xba\xe3Z\x8364\xdb\x92u\xdf\xcb\xdfu\xc3\xb9\xf6n3\x17\xaa\x03\xdb\xfe\xc3'\xddQ\x9d\xf3\xee\xbb\xd3\xb9n\x1c\xdb\x92~\x00\xe4N\xe5\x13\x8cQ\xa6\x8b\x1f\xdc\xaa\xf6 \x8e\xba\x9e\xd2\xa7p\x04O\xda\x8f\x9e\xd3Z\x9dj\x97\xc68\xde\xcf\x8c&h\xcc4L&\xcf\xa2\xbb\xf6\x14\x1fu\x93qMZ)\xc8\xba\xac\xae\xce:\xec\xad\xb9Sz\xb6\xca\xa0\x80\x8c\x84\xabO\xfck\x96\x8ew\xd8\xfa\xec\x9d\xd8n!\xf2\xa4\xdd\xbe\x90\x96\xb7\xa9\x06%O\x8b\xa8\x9f5\xdbtv\xc6\xe6\xe8=\xec.\xd1\x14\xf2\x03\x8e\xc0C/~\x16\x8ck\xc2L\x155w$1\x1cC\x0c\x13\x88\xbb\xf6x1\x9a\xe2\x05\xa1T\x95\xd5\xc9\x9a\xf4\xaet{\x13\xa6\xfb~\xd5\x89\xf3@\xc1\x94\x85<6\x01w\xa9D\x07\x98n\xf8\xa8DU\xcd\xd1\xfe\xe8Q\x95`\xc8\x81s\x16\xbdC1\xa0\x88\xcek\x0eD\x1e\x0e\x89e\x87\xffQ\x8d\x88\xf0*\xabsLa\xbd\xc1\x85\"\xb8P\xd9\xb0\xb5\xe4\x07eUuKJ\xc9\xe3:B\xe0\xbe'\xb3<\x9b%)\xf9P\xc6Y\x153\xfeuI\xeawy\x9e\x92\xb9\xbf\x83\xcc\xc1,\xdaT\xe49\x9e\xe6|\x01;\xb3\xce\xa3\x82\x94T\x02\xf5\xdf \xb1\x11\xe4|\x10\xe1`\x7f%I \xe5)\xf2\xe1i\xbd6\xe9\x8d\xf0*d/\x84U\xb4\xc94\xeb\x86\xd6D\x9d\xed)\xf8\xec\x9e\xf4\x15<\x85\xbaI\xfb\xf74\x80\x9a\xab\x81\xf0\xb7\xaf\xbc\x1b\x1e\xec+\xb3\xa5\xf0\xb3\xf1\x96\xc2U\xa4\xcbj\xae\xf3Q\x13f%t\xe9>\x7f\x86\x9d,:_\xe5\x15\xbf\xdb\x18cC\xfc\xb3\x91\xf4\xec\xf8;\xdc\xdeU\x02u\x07\xfd\xde$\x1f)\x9f\x9dj\x9e=\x1f\x06\xdc\x1b3\xe0\x1c$U\x0e^=\x9b\xce.\x88\xef\xdd\x1b\x0fN\xdc\x06mX\xf20{\xfd\x9bW\x93e-\xbb\xf6\xc2\x16\x9e\xe7Y\x1d'\x19)_e\x8b\xbcO\x05z\x07\x83\xf8\x8bN\xf1}\xffl{a\xb3\x88\xc7\x08R%^\xbe\xc2\x11\xbc\xefZ\xa95\xc3}\xa1\xf8(%U;\x88\n\x0f\xe7\xf9\xa2\x15\xd9\x06\xe3\x11\x0d\xf4.\xe6N\x07\xa0\x10\xfdfn\xb4A\xde\xd3\x87\x1e1T#\x82\xd2\xb9\xff\xd8\x93\x8c;\xdfL\xe0E\x87\xeb\x10A\x11\xaa\x1fn\x18\x01B(L\xe0\xb2\xc3\xd4a\xa2\xd4\xd7y\x96\xd4\xb9K\xc4\xc7\xae\x84\xd1\x112\xcf\xd9\xbd8\xedl\xc0\xd2U\x7f\xe8B\x03\xb6\x1f\xa3\xd6\xb8\xfc2\xb4\xab\xaf\xaf\"\x92\xfdcC6\x82T\x8b\x00\x19\x92x\x86L\x08\x95\xf5\x9e\xc7iz\x11\xcf.\xd5\x8a\xb9F~\xa2\x87\xd8\xe0\x9c\x196\xbc!\xd7\xd6ik\xe7\xfc3\xcf\x19R\xfa\xde\xe1w^\x10\xc2&\"Y\xb5)\x89\x92\x14\x97\x03\x02\x93J\xf77\xab\x10=1\xde<\xc6\x13\xee\xd6XG\x17T`!sf\x0dQ\xf9\x1f\xd0\xacY\x8cJ\xdf$\x0b\x8c+1\x89o$#\xad\xb8\x9c\xc6g\xf4\x8bp8\n\x07\x83\xd6\xe9\xe6\xa2. \x9e\xf2\x92(8C\xacc\xc6\x82\\`\x11\xadbT\xaerH>\xa6\x90\xfcQ0\x1f\xba\xee\xd4N\x1c\xd6\xf7\x8bF|\x15]\xc5i\x82&#\x1c\xeb\xfc<\xe4|\xde\x8b\xb7\xaf9A\x11\x96\xec\xad0C\x0dr<\xf1B\x93\xad\x8c\x07\x94\xaa\x93\x18\x83\xa3\x15qU%\xd9\x12b`\x95!M. \xfca\x9e\\\xfd!\xc4\x97\x80\xfdr=\x85\xe8\x07\xdf\x07\x90\x97\xf0\xfd<\xb9\x82\x07\x7f\x8a\xd0-DL\xd0\xb1\xc7YJ\xdb\xc7\x0e_\xe6\xf9@w/\xf3\x9cu\xf62\xcfEg\x99\x1a\x03Z\x89U\xc6\xf9f\xec\xf5\xc3*\xa9`\x1d\xdf\xc0\x05\x81Y\xbc\xa9\x98W\xcd&K\xf0\x02!\xc9\xb38Mo \xcd\xe39\x1dP}\x9dC\x92\xcdIA\xe1\x9b\xd50\xcb\x8b\x84Tt\xc8lL\xdc\x07\xc7\xb0\xa5\x98\x9fX\xdc\x19\xf9\x0b\xd3m\x1bR\xf8 h\xe2\x9ci:\xb0\x9a\x9fRq\xbb\xe0n\xa7\x06\x05\x122H\xe7E\x99\xcfHU!o\xc6\xc3\x99\xfaUt>c\x7f\x1a\x15B\xf4\xeb\xa5~\xe2T\x92\x7f\xe3\xeb\xf2d`\x12\x8c\xa1QSa?\x1d\x12{\x0cSY\x80\x7f\xee\xcf\xd8\x15\x80Y\x07L{X\xb0\x1e\xfaB\x05\xe5\xde7\x17i2\x93\xf1\xbb-\x96)sa,k=[\xd4\x9237\xf3\x85\xf9\"\x14@\xab\xa1\x17E\x9eq\xba\xc3\xd2O1\xac@\x82\xa4d\x1e\x84\xb0\xd0\xb6\xa3\xbfk\xfd\xb1'\x07<\xc3\xd8xvS\x0e\xe0\xc0]!\x1f\x99\x19\x00\xb7\xa6\x12\"r\x84;o}\x93\x82\xfd\x06\x8e\xe0\x95\xb1\x89\x0b*\x82a\x13)\xfe\xab C\x00\\9\"\x89w\xf7d\xa5\"a\x16\xc2E\x08I\xe0\x88\x08\xc6C\x8b\x1bK\xe3\x92^\x07!\\\xdb\x8f.\xb7\xfb\xfcf\x95\x07N Ud\x1c\xce\x08\xa2_X\xdb%\xd6\xcf\xcd\x81\xf8p\xcfD\xe6j\xdc\xed:\"\x83\x8e\x0c\xc6T\xb5\xaf\xd0n{_Q\x96\x7f\xe0\x01\x020\xd4D\xa3\x9191\xd0/!V\xed; '\xaf\xcb\xddc/\xa7u\x8f/9\x0b\xfb\\\xcek\xa1;@\xeb\x98\x9e\xb7n\xeb\xa7F\xf7\xa0;\xde\x93\x10b\x1dD(\xac\x14N\x8e\xb9\xa5\x0d\x86c\xdd\xe0^\x1b\n\xee3\x8ffq\xf6\x9el*\x9e\x19\x8a\x8eb\xd3\xc92C\xc5\x0b2\x8bg+\xc2v:\xad\xa1oQP\xf6M[_6\x8f\x9e\xff\xf9\xe4\xf9\xff:\xfd\xe95\xaa\x16\x99\xf6Q\xdf\xc2\xa6\x97\x93c\xc4\xc7\xe2t\xd8D\xf9\xa6&\xe5\x9f?\xbc\xfe\xd1\xd4Ke\x1b_\x08\xdd\xa8\xbc\xa2\x88\x13b \xb5Q\xe1\xe2Y\xaf\x16\xe9\xba\x90\xa9\x97O\xe2\xce)\x94\x9e\x94A\xa8\xfaWf\xcc\xb1r\xb0e\x10\x8c\x80H\xf5\\\x06\x9c\xe1\x91\xbf\xe5j\x1b<LD\x91\xeaQ\xe1\xde\x83\xcd\xf0\x1f\xc7p\x7f\x9f\xf2W\xc6\x16n\xfdE\x08\xb3\x81\xf3\x92\x1e\x0c\x1e\xf8\xb34!Y\x1d\xa0Nr\xa1\xe4\xa0.\xe0>\x1c\xec\x85P\xc0.\x1c\xec\xa1S\xf4\xc7\x0c\xfc\x8a\x94W\xa4d\xd5g\xe6\xea\xfa\x99\xe9tWtg\x1dx!h\xaee\xfb4\x03\xb5K\x86F\x0e\x19\xaf\xdd\xd3\xef\x19P\x81\x07\x98r\xd5\x90\xe9'\x94GIV\x91\xb2\xfeP\x12\xc2\x1c\x1b}F\x9d\xe81`\xe4\xd3.X\n\x80P\xb3\xd3kE\xab>\xf2:\xefG|\xfa\x85\xf7O\x87\x8f\xbe\x0d\xf4\xcd\x9b\x8f\xa5\xc6\x0fH\x03$TM*\x1a\xe37|\xed\x98\x95@\xd9DS}\x1a\xa01\x8fN\xb9l\xd0A\xb1\x060\x00\xeb\xb1\xf6;\x98\xc8Z,\xe4+\xcf\xeb\xd7\xb3\xf8\xfb\x82\xab\xbb::?'\xd5\xeb|\xbeI\x89F\xcd\xc3C\xb2f~\xf7\xea\x0d\xc3\xe7b\xbc|4\x7f)\xd5f\x8e\xa1\xd4Z\xd8\xcd\x859\\\xdb\xb4\xeeV\x1d\x0d\xaf\x83r>\xff;\xaaVqA:f\xd3t\xe7\xce\xca\xe4\x82L\x94\x8at\xfa\xa8\xc2\xfa\xc7&)\xc9\xbc=\xe2yR\x15\xf4,v\xfe\x80\xf9\x94\xd5C=4+\x10\xdc\xe1\x12\x84-8\x98\x11W\x7f\x0b\xcd\xaf<\xc0\x14\x16I\\\x89\x90\xb2\xccK\xf5\x8e\x04\x1f\xf4\xb8.\xfd\xddt\xbd*\xf3k\x8c\x80t\xc2\xbfj/\xa9\xde\xbc\xdb O\x95\xcb\xe4\xc7\xdd\x1bJ~\x9b\xdc\xb3S\x14\xa9\xae\xba7\xa41\xaf\xdf\xc5\xde\x0d\x7f\xdem\xbf\xe2\xcf\xbb\x17\xc0\xfc\"\xb9\x97^\x80_$\xf7\xd2\x0b,\xf8\xf3\xee\xc5/\xbbH>x\xa2\xbbH\xce\xfc\xc3\xc7\xddy\xb1\xfb\xe3\xfd\xc3n\xfbW\xbc\xfd\xee\xb5\xfa\x9a_\xabw\xdbY\xf2\xe7\xddy\xb1\x1b\xe4\xde=\xf4\x05\x07\x7fw\xba\xe7\xbc\x99\xeep\xae\xf9\xf05W\xc4\xb4zw\x94\x9f\xf0y\xef\xda\xfa\xb4\xafN\x7f\x0eG\xddh\xda\x97p\x04\x0f\xdb\x8f\x9eQN@\x04\x00|V.\xf1\x12\xa9:\xebD\x18|\xab\xd6\x12\xa1\xeb\xba\x95\xde\xa9\x950\xf4n\\\xe7\xa5\xa9\xf6\x07\xb5\xb6\x88<\xd8\xae\xf2\x9a\xdfb\xcb\xdf\xd3gg\x94g\x9b*\x03.\xe3\x9b3O\xf7\xf4\x87\xcdbA\xca\xde\xbb\x17q\x1d\xff5!\xd7\xbd\x17<\xc7\x87\xee\x03\xd2{\xf82\xcd\xe3\xfa\xf0@\xdf=\xbe|\xf4P\xff\xf2UV?6\xbe\xd9\x7fd|e\xea\xecu\\\xf4\x9e1\x17\x14\xf1\xf8C\xe7-\x8b \xd8\xfb\xe8\x94\xd4\xfdg\xc8\xdf\xf5\x1f\xdf\xac/\xf2\xb4\xf7\xf8\xa7\xc487|\xf5<\x8d\xd7\x05\x99\x9bk\x98\xa6O\xdf\xb5\xe6O\xc9\xbc\xf2\x1e\xc9\xa8\xf8\xeam\xe7\xe3\xbf\x91\xf8R\x02ig?\xd4262,\xef\xab\x10~\x0e\xe1M\x08\xefu\xb7w/B\xbc\xbb\xc9\xe0\x1e\x9c\xf6\x99\xeb\x9f\xf8\xab\xe7\xfdW\xff\xe0\xaf.\xdb\xe7\x03ei_\xe1%\xee\x0b*\xb5\xc31\xbc\xa2\xe3\x90#\x98\xd0\xdfA\x10\xaa\xda\xd3\x17R\x84x\xd1ol\xe7Z\xcd[\xdaa\x9e\xe8\x0c^\xe2\xbdBWJ\xa5\x9f\xbe4\x89\xc1thW~M%\xee\x1fe\xd3\x18\xd5\xf7E\xf7\xe02\xc4\xbf\xa5\x1d\xff\x13\x8e`E[\xe9\xbd\xa5\xe5\x078\xa25\x8e\xe0-\x15\xb8\xf1\xafwz\x05\xc6\x85:\xc1\x8a\x8e\xe2G\x83\xaa\x03[\xf9 \xdb{F\xff\xfa\x01\xb5ToLr\x81\x98\xeeO\xac\xee1\xfcr\x0b\x13Xv'\xff\x13\x1c\xc3\x82v\xbd\xf1_0\x1d\xe7\x04f\xf4w\xcc\x7f\xf7\x1a7\x82F\xf4\xba\xf3z\xfa\xcf3\xd9\xc1\x1b\xee/\xfb\x8bA\xefH\xc7\xb8\xa6\x1d\xfe\x93N\xbf\xdf\xdb\xef\xcc\xbf\xde\xa3\x0d\xde{`!\x18\xcb\xa0\x8f\"\x7f\x85#x\x8f\x9aj\x1d\x9a\xfcU\x0e\xf2\xaf\xfd\x97\xef16#bF\x88~\xed\x0d*\xca\x08`\x92}\xe9\xd9t\x00\xde\xdcbXC\xbf\x14\xbb\xb1D&\xe7}\xd7\x12<\x08u\xe8\x7fn\xeb\xd2p\x9f\xf3\x02\xc7\x9d\x87\xa0t\x9c\xbbvLa\xf6g8\x82\x7f\xc01b\xc6\x1c&P\xc0\x04\xff\xbe$7\xd5\xab\x0c\x03\xe2\xf6:\xfd\x1b\x1c\xc1K8\x16{{\x02\x7f\xee\x01\\h5\xfd\xbf\xd1U\xab\x15\xde\xcf4\x93\xbf!5)1\xc6\x13z\xe8\x9e\xa1%\xfd\x0b\x9c\x8f\xdb\xec\xe4\x93\x91\x1c\xe7\xc1\x93.\x87$8N}\"\xaa\xef\x1e\x8f\x9669<\x12\xe6u\x81W~;\x18Z\xbc\x95\xeb`\xe4\xb8\xf7\x1f\x1b\x92\xc2\x1ety2\xce)?\xd6g\x85=x\xd2}\xbei\xc2\xf62\x0f[\x11A\x97\x1d\xa0\x15%#\x83\n\xdfV\x94\x8d\xe9\x19\x8b\xb2\x81\xce[\x14\x04<\xcc\xc6\xb0{{{}a\x02\xb1\x1e\xe8N\x06\xc1\xeab\xeb\x81v\xd8cX\xb9{\xd4\xf6\xab\x8d\xcb\x9c\xb4\xaeuG\xae\xf0\xe3\xc7z\xcc<\xec\xc9H|\xb0\x8f\x0f\xb7\x1dl\xe2+\xa9\xa0\x99\xc9\x18&\xec\xf7\xbe`\xf0]4\xcc\xa5\xde2\xfed\x1b\xa6\xfeF\xa3Q\xa3@\xaeZi\xd7\xa8L\xe1Z\xc6\xfb\xb0\x0f\x13\xc0\xe0\xfd}\xe2e\xbdc\x93\xa8KA\x1a\x0b\xb9\x82\xc5\xfd\xbc\xbf\xcf\xaebs?i:c\x1d\xa1\x14\xc9\x82\xf7o\x82\xa7\xb0\xbb\x1b\xc3\xf7\xb0y\x1a@\xc5\xcd\x11\xa65\xecB|\xa6?\x17Y\xe3\xfawr@\xa9\xec\x816\xb5/{\xa9\x9f\x06\x90\x8a^L=\x08\xf6\x87\x05\x0c\xcd\xfc\nS\x8a\x11\x96S3\x04\x9d\xdeo\xfb\x85\xefn%a\x0f\xbe\x1f\xf8\xa5\x01A\xbf\xc0\xf7\x91S*\xa6\x15i\x12\xab\x87\xe05*\x16\xaf{Y\xce\xb3\xd3*w1\xb7\x81A\x05c@B\x0d\xd5\xcbzZ\xae\xa6\xf5\xa7=H\x99\xf7$\xea\xe2\xd9\x0dV3\x05\xc9\x1f\x90\xfe1^w\x04N\xd1\x884M\xe9/\xafr\x9b\xc0\xbc^,q\xdayTs\\\x11\xb4\xdedQ}\xc94;3\xd8\xdb)\xb0\xa4k\xd9\x80\xc2\xcf\xfc\xfd'\x07\xc1\x17h\xcf\xbe\xf6\x92\x1bM \xf54\x03\xc3\x88\x18\xbd\xa4\x92l\x91k3\x87\xd1\x92\xe6Km\xee0\xc0\x94\xb5e6\x81C\xfdKT\xdcM\xe0a\xef\xa5\xc659\xb3\x1ao\x82\xb2nSrF\xb9\xb6\xfb\x9a\xfb\xd0~\xd3\xccOs\x96g\x8bdYEi\xbeDs\xc0~=F\x02J5\xdb\x00\xa8f\xa7\x89\x8d\x91`\x97Z\x92 \xcb[\xafDR\xc5\x12\xfe\x04\xfb\xa8\x87f'\x00\xa5\xca\x94\xb0\xee?\x05J&\xcb\xa7\x10\xef\xee\x06\x94F\xd2\ngjkZ\xb2\x89\xa0\xfa\xd3\x91\x12\x92\x95+M\x83)9\x8b\xe2\xa2H\x11\xe5\x06\x0d\xda\xc5\xe9\x1a\xd1\xb5D\xfd6&)f\x17\xee\x1e}\x88\xf7\xb3\\/\xdb}\x8fOY\x05\x8aD\xbd\xf7\xf4!{\x8d\x18\xd8{\x8fO=\xad[>^Vc\x0e\xa8\xca\xe4\x17\x8f\xa8\x99\xf4\x91\xc00]\xa7S\xc2\x9a\x07\x8e21]M\xe3\xd7\xb9vpc\x8f\xc4\xc6\x978\xae\xa5u\xfa\xb3\xc0\xc0`\x90\xce}\xc4:\xbe$\x7f\xae\xeb\xc2\xa7\xc4\x97\xbc\xa4\xaf)Y*\xf2\xaa\xc6\x1f\x06\xd5\xc3\xc5&I\xe7\xef\xc9?6\xa4\xaa\xd5\xe6\xd4\xe7\x06\xd2\xc1r{\xab\x1f\xf1G\xfa\xfa%\xa9\xf2\xf4\xaaU\x9f?\x1a\xac\xcfMM4\x9f\xf17\xfa\xaf+R&q\x9a\xfc\x93\xbc'\x95\xfa\xad\xfa\\\xffe^\xbc\x9a\xab_\xacHZ\x90\xb2\x8a\xe8\xf3\xbbEc7\xdc\x91\xc4\xad\xd6\xeb\x0c\xf0\x84\x9e\x96\x8d\xfa\x84\xfe\x10-\xf7\xe9\xd1\x15w\x1d\xa1\xb5\x8cGQ2\x81\xd2p\xd2\x98\xa3\xe3\xf2.'\xba\xa8<\x1aM\x8e\xe0C\xe8h\x91+\xc8\xc5\xa0Q>W~\xa1\x97N\x94r\xcd\xa7|a\x00=\xf0If\x1anF2\x15k\xceNDx\x0d\x83\xe7wGp\xd0\xb9\xdd\x00^\xb9\xe5\x9c\x7f\xf9\xfc\xd9\xc0A\xb0\xaf\xf5\x90e\xfb\x7fS\xc6\x17)\x19\x00e\xb6Y\x13Q\xc7\xc0\x10,I\x8f.\x01h\x82\x10C\x1d\xd9On\x01\xb0\x1e\xbf\xa8\n\xe9\x96#\x9f\x88-\xd3\x1f\x138Dl\x11\xad\x8c\xc0\x9d:\x9a\xfbY\x08^\xcc\xfd\x8a\xb3\xfe\xd4s\x17\xfb\x18\xde\x9c+\xef\xdaO\xbdRG\x05KL\x05\xb5_Gt?\x1f\x1c*\"\xaf?\x1d\x1c\x82J\x072\xff\xe1\x81\xf2e8<\xf8\xce\x97\xdfn\xfbek\xb4\xe3\xbe\xdc\xba\xcf\xc3\xc3\xc7\xe6O5R{\xfb\xd0o\xbd\x92$\xb2\xd4c\xb7@-\x0dr\x13c@\x1fy\xf6\xdb\x93T\xea\x07\x93\x1b\xf1M\xec\xb6.\x1f\n\x7f\x82\x83\x8e\xb5x\xc3\\\x1e\x9c\xc1q\xfb\xe7\xc4\x98\n\x8d\xb29\xbe\xa6\xf5Cc\xeb\x87\xed\xd6\x0f\xcfP\xff\x1eDW\x07o\x0bRbL\x9aWh^\x12\xd7 \xc6/\xb9y\x9d\xcf5\x1e\x9f*\xa8[\xa9\xddTE\x0b&kP,\x10&\xe8\xf87\x13\xf4#\xf0I\x10\xb0(Qy\xd39s\x84U\xd2r}\xac0\xc7\x96\x174\x86a\xab\xf6'\x01L \xe1W[\xfaE\x1e\x9e\x9e\x9e\xbej\xfd\xc5\xcc\x02\xc9@8K\xdd\x12\x8dC\x00\xfb\x12\x99\xc8\xad\xc0A\xbfnG\x84\x80]\xf0\xce1}P+QZ\xb5\xf3\xff\xfd\xfe\x9b\xff\xf1\xf7{\x7f\xf4\x83\xf3\xdd\xa3\xe9/\x1f\xcfn\x9fN\xbe\xff\xd3\xe7\xe8\xe3\x83\xe3\xf0\xe3\xc7?x\xde}\x96<\xed\\g\x99\x0b\x0df\xb0\\\xe8\xcc\xf3\xb0\xb1\xa1\xdbo\xfa\xad\x95~}\xff<\xf8\xe5 \xbc\x0dD\xd3J\xe6\x12\xff<\xf8\xa3@\x80\xe6\x83\xe9\xf9Y\xf0\xc7o\xf8s\xcb\xc6UF\x851X\xe7~M\x87\xd1\x0f\xa4nX\xdc\xd8v\xa0\xf0\x06\xbd\xfb\xfdtL\xa667\xb66+N\x1fw\xf6\x90\x03q\xc6\xc4\xcaDWA\xdc\xc1\xb1\xe0Vb\xcf\xeel\xb3g?\x7f\x86\x1d\x12\x15q\xbd\xaa\xfa\x8du\xaa\xb3jC\xb1-@Qs\xf1\xea\xfd\nR\xb6\xcf!\xc9\xa0\xd4\x9b\xa8*\xeaXZi\x9a\x1b\xa2\xcc\x03\x87\x85\xf7\xee\xd9\xfbg\xafO>\x9c\xbc?e\x83O\xa2:\xff\xa9(laSD\xb9\xe2\x0eg\xb4\xa7ibP\xa6\x8aB;\x8c\x07\xe9el\x83}\x1cX\x87\x04\xd0\x18j\xdbk\x8aR\x15df\x8c\x13\xa6+t\x95XX\xd1\xdc\xfd\xa35\xa9W9\n]-(\xbb7 i\xfed \x9c\xa8Z4:(]\xc1\x0c4\xbe\xc9\x06]-(\x85\xa1W\xb2D\xe8\xcd\xe0Gz\xa7\x97\xfe\x9b\xf6\xaf\xadT\x96\xa0U[b\xe3\x9a\x0bp*g\x95~\xe6\xef?\xee\x06\xff\x00n\xb6\x86o\xbby(\xea(\xa9\xde>;=t\x125\x98.$/H\x16\x17\x89\x91\x89\xe0Y\x15(\xae\x17\x0d\xae\xd3\xc9\x1ez\x1a\x16<\xa9N\xaf\xe3\xe5\x92\x94\x07#\xc6P\xb1O\xb6\x18\xc3\x81n\x0cy\xf1j\xce\x12\xf0\xd7Q2\x7fY\xe6\xebwq\xbdz\x8d\xf8\xcd\xdcI\xeb(%\xcbxv\xf3\xaa\xff6\xa6o\x97\xa4\x96\xc7\xf9\xfb\xf8z\x84\xf8\xc2\xd9[F}\x8f\xd9Ib\xd7\xd7J\xc9/\x12[\xd7\xbc5\x18!f\xbb\xd5\\+\x11\x8b\xcb&\xa1\xdf;x\xe2$\x83'Nb\xa3z\x89\x12\x19i\xc7p\xef%H^\xa2\xf2\x85\x83\x0c\xca4\xf7\x13\x19\xf0\"\xf6\xf9\x1f\x9b\xb3\xa8\xca\xd7\xc4\xb7\x03\x14\xba+\xc2\xee\x16\xb5uu\x91\xd7\x0c\xd9\x10\xd0>>\x9bK\xdc\x80#\xd8\xd0\x87$\x9e\xad\xd4\x87\x15\x8b\x93Q\xaeQ\xcb\xc5w\xc4\x98\x0dQ\x90\x99~mY\x005D/\xb3\xd4\xa1\xb3\xd9\xc1\xb5F\x96\xaf\x8e\xbe\xf9F\x8emn\xba\x8b\x82\xde\x89m\x0c2+\x0e\xda\xccx\xca\"\x9f\xbd\x17\xc2\xa2uZ\x0e\xac\x9d\xc0\x18\xcc\x92\x15\xafIMJ\x0d\xdb!\x8a\x1cgE\xc7\x19\x07\xb0\xe3\xb0\xe7D\x91r\xe0\x948\xf0\x08;\x9did\x0d\xf6{\xb3<\xab\x93lC4\xa9a\xd4r\xc5]qs\x9f9\x7f\x99\x9cqE\xa1\xddj\x83\x02uK9\xad\xa8tB\xffc\x91\xca3\x8a\xc6\xf8\xf4\x08\xa6\x99ev\xc0\x87\x86\x87\xcb\xb4r\xa8M\x076k\x84\xa6\xfd\x00f}{'\x13\xbd\xd4\x15\x12\x9d\x9f\xe7e\xb2L\xb28U\xc4)\xe6\x96\xa1}\x83\x12\x8cBT\xc2\xf6O\x96\xb7\x9f%L\xe7W\xed\xd6\x81\xe8\\\xab\xbbE\x86\x00Td\xc4\xac-\xf4\xba\xcd\x98\x02\xbc\x80#\x98M\xf7\x1c\x00NKa\x84\x91\xe9\x0d\x15P\xda0*:0\xaa\xac=\x9b\x19%\xfb[\xe4\xe5\x9bm\xcc\xce\x18\xeb\xb6\x04\x0e\x9d\xb9%U\x84ZV\x06\xda\xd7-\x92^\\QzQ\x07\xe0\x15e>\xdf\xcc\x08\x1f\xdc\x15\n\x02\xb3<\xab6\xeb\xf6\xb3\x8a\xcc6eR\xdf\x88g\x9f?\x83\xbf\x9a^\x9d\xa1\xb1\xdb\xd5Y\x08s\xb6\xf3V\xba\x0ca\xddB\x01\xb3A\xc6f\xa5\x909v\xa64\xed\xd0\xbf\xb97\xa0\x03\xc8\x80\x83m\xcd\x14\xf5N\xf5\x81{\x18\x98\x14\xe1\xbar\x03G\\Ab\x9f'X3pt\x8b\\\xa0\x8b\x10\x9d\x16(\xd1M\x1b\xa2;\x0f\x9e\xc2\x8eO\xa7\xe8_\xc0\x11\x9cG\x19\xf9T\xfbA\x10\xcd\xf3\x8c\x04O\xf9\xe4]\xc1%\n\xed\x8f\xb2z\x17,\x00\xa8\xdb\xbcD\x91#>\xa1(um'3\xdd\xc2n\x90N\xce\xc6\x8eZ\x94\xde.\xa3\x0c\xcf\xc9\xb6\xad\x01\x87\xc7\xa7\x91h\xa4+\xa7#QKW\x9e\x8fD7]\x19\x87\x82\xba\"\x17\xf92D\xa7\x95\x0eZ^\xd3\xe5\xa3\x98I\xa1\xe6_\xc2\x11<\xebb\xe6'\x8e\x99;\xf6\xab\x981\xe5\x8a\x87\"\xbf\xdc\x06uu\x85bb\x87\xd7v>\xc5mE\xde\x1be<F.\xff\x8b{\xfd\xf3\x90\x83u\xf4MI\x16\xec5\xfe\xc5^\xe3\x9f\x9c\x89m\xde\xab\x15d\x0d\xf6\xe0\x8b\x87|\xcbT|\x14 \xba\x04\x8fc\xcb\xad&\xa0\xaeki\xb9\xe5m\xdd\n\x88=\xb9\x17\xe2\xbe\xda\x1eD\xb7\xb0HXt\x9c/\x1b\xcd\x97\xefLZv0l\xde\xb3\x88\xe3\x97\xf2\xf7\x17\x80\x1c\xeep\x9a\xc0\xc9\xf4i\xc0\xfd/\x9f\x7fQs\xc3\\\xd7P\xd9\xee\xcb\xf1_q\x97\x13\xbaw\xe0\x08(ytn\xc2\xad\xb3\xed6\xc4\x92#\xff\x8d3\xf2o\x83\x01\xe3\x91z\x07\xc3\xd8\x9c+\x08|>\x1e\x81\xb7\x19*p\xc4\\\n\xc4\xbcq\xfe\xd4q\x9d\xac\xb5\xb6\x150n\xfdJ\x0f\x1b\x8d\xf9K\xef\x89<\x89T\x85\x08G\x8e\xceMQ_E\xbb\xe0J\xd8\x87\xdf\xe9T\xb4\x85P\xd1\xf6\x82Z\x03\xf7\x17\xb6k(\xf8\xf0\x98\x07\xa4b\x11\xa1\\\x15rs\x08\x8d\x06\xab\xdf\xe9jL\xa7D\xb9w\xfc\xfb\xc7\xeb\xb3\x07\xcb\x84]\xfe\x0d\x80u\x9c\xe9\xc1\xe3'\x036\x16\xffo\x98\x1e\xdc\xcd\xd5s\x9a\xc7\xf3S\xa3\xc2\xb0\x94\x9c3\xd3R\xd0\xe6\x0d\xe9\xdb\xf5\xc9\xc6\xe4\xdb\xcb \x90(\xbf43\xf2\x9b2\xa5U6e\xca\\\xc5\x8c\x15\xab:\xae7\x15\xe6$\xc1\xbfl5Y\x8aPQ\x9b\xfe2\x7f\xb1\"\xf1\x9c\x94\xd5\x04\x12\x9fD\xfc\x87\x81B\xe8\x1b\x89\xe1\x08r\xf1\xe5\xd4\xe3y\x84\xee\xd3\x9d\xe7\x19\xf4\x10\x1b\xccC\xf9\xf93\x9c\xfb\xb1\xd9\x0f\xca\xdf\xa0kKM>\xb1\xf8\xe5\x17i~\xc1\x14X\x17\xe8'\x1e\x88\xcd\x1c\xd5+\x929(\xb9)\xc9\xceY{hH\x97G\xf3\xb8\x8e\xd9\xdf\x9b\xc0r\x00]\xf5\"\x01;(\xea\x84\xa63.\x8a4\x99\xa1\x02\xe9\xc1\xcf\x15\x8bO\xc1\\w\xfer\xfa\xf6MT\xc4eE|LA\xb4l\x8c>\xe3\x05\xf91\x8f\xe7C\x0c\xf4-\x1d\x85\x0e\x84\xa2\xe4\x98\x01\x01\x8e(\x85\xc8\xa3\xfc\xe2g0j\xf5\x9dX\x83\x9c\x8d\xf5\x84\xdbl\xeb\xb9\x01\xfd\xe9\xc3a\x91\xf7\xa9\x83\x9b\xe1B2\x9cT\xaaO\x19\xf6\x8c\x94a\xafM\x19\xf6\x18e\xd0\xe3\xaa\xce\xbf\x04\x94\xa5\x15\xe3SC\x8e\x10\xa1\xd6e\xf6@:\x1d\xaf\xf9r@ \xba9\xcd\xe8@\x85\xbf \x9a\xfaGI\xc5\x1d\xa1\xa6\xd9Y\x00\xc7\xac\xd2\x04\xa6\xf4\xff\xb3\x10\x7f\n\xb9\x8b\xe2\x93\xf0U\xd1@\x1d\xf1\xb7\x1b,s\xc0ld\xe0\xa4\xd0Gfy\x99\xf0#C\xc4\x89\x13\xcfd\x9c\xd1\xa3\xadl\xaeVm\xfb\x0dS\xe0\x17\x12\x15I\xf1\xa5\x06,\xcdM\xe3,Oy\xd6\x9a\x97\x98\xf0\xcc||\x90(N\xd3\xfc\xfad]\xd47\x18;\xd8|||\xd9\xcc\x8fE\xf2\x1dJ\x1f\xf5WX\xdd\x04@es\xfdb\xc8\xc8\x1f\xfb9\xcb\xdfp\xc1\xa2k\xa8 \xcd\xe5\xd7y\xff\xe3+\x91~'\x9b\xe5s\xf2\xd3\xfbW\x86\x80P\xa0p\x92\xa8\xcdM\xb8j\xe8\xa6\x99]\x1eX\x1dma\xd0\xfc\x16l\x81\x19\x95\xcf;\xf7\xe4:\xee0\x08\xcdW\xbe\xb9m\xa9rfd\xd4\xde\xbf8C\x97G\x18\xfe\x1d\x8e!\x8f\xd6q\xe1'A\xf4s\x9ed\xbe\x17zt\xf3z\xebMZ'\x0c}\xd4J0\xe9\xd4\xd7\x03`V]M\xc0\x0b\x0d\x06\x99\x15\xbe\xfd\x1f\x07{\x86\xf75{\xbf\xf7\xc4\xf0\x9en\xbfj\x02\xdeg\xaf\x0fP\xa4^\x94\xe9\xc0\x14\xd0\x9e\xe7\xb4M\xab\xe1{\xe0\xceU#\xda\x02\xce73U'7Dx\x85\xd1\xd64\x1b\xb8>\xa1\x9bvg\xa7\x8c\xaa\xcb\xa48\xa1\x88\x9ed\xcba\xab\x82\x9c\x87\xeb\xefo\x0bc\x88V\xe0l\x95\x1d\x83EQ9\xf6/\xa2)\xc6^ny\xe2\xbf\x9d6\x82v\xa3Q\x88\"6\xf84\xa1\xc7\xcf\xc6\x8f\x8d\xeeJ\xa2pc\x1fC\x1a\xd2\x10\xf2 \xd4\x05v\x0e)Oo$0\xeb\x86\x9dB\xa90Y\xa0\xe1\x91~\x14l\x85\xcc\x0e\x0eI6Of\x14\xa3u\xf1R\xbb9o`\x00\x8f\xd3\xdf\x8e\x95Aq\xc3*\xf9\x08\xee\xd4\xf3\xd0\x9d\\[=\xc7\xd6\xfe\xb1!\xa5!\x8203\xa9Y\xe4\xe5Z\x7f\xd0\x0c\x86fM\xfb\xfb9 \xc6X\xb3@\x83\x04\xb1\x9fL\xc9\x19;)\x07\x10|`3\x168\x15\x83\x8c\xc3d\x12\xf9\xf29\x7f\xf9\x01_\x9a\xed;P\xe8{\x80\xf4\xbb\x88\xcb\xfa\xe3\x03\n\xa9\xfbT\"y\x90D5\xa9j\xbf\xb0\x9a|\xf08j\xa6\xf8\x9d\x80J\x04.\x01d\xe4\x1a\xe6\xa1\x06\xa8=\xf6\xd4*\xd6\xb06\xa3\xb8(H6gAu\x92i}\x86\xf6\xbdC\x00\xd6om\xa6\xf4\x94\xe3\xac\xfc\xc40\x1d\x1ez\x98\xe1T\x7f\x07j\x91L\x1bq\x058\xf8V\x98)\xb2*\xd2\xa4\xf6\xbdco\x00\x01\xae\xa0g\x0b\xbc\n\xa1\x1b\x8aB-K\xba\x9b\xa6{\x03G ^ O\xf7\x07j\\\xa0=\x86\x19\x85nl\xf8q\x8e\xe9\x96\x04 db\xe6\xcd\x00\xb2t\x90#\xd7 \x87\xeb\xa6\xe3\x8bu>%f%6e\xab.ZCl\xa8\xf4\xf9PFmP\xa9u?\x0b\xa7(&\x8c3\"\xc4\xb5-\x9d\x8d(\xf2fSG\xb0C\x96\x0c\x08\xcfG\x12\xb0l\xbf{O!\x83\xef\x81<\x85lw7\x10bYC\xb8\x87\xac\x8d\x04gRG\x8b$\xadI9~1\xccZ\xfb[\xc1O\xde3\xb9@@\xd3LI\x8f\x84c\x0fv\xf1(\xf7\xfal\x1d \xa3p\x11BE\x99^}{L\xe1u\x04K\xd8\x85\xeb\xb0\xd9\xd4x\x928\xecj\xed\x94\xbe\xb2\xc1q\x08uT\xad\xf2M:\x7f\x91_gi\x1e\xcf\x9f\xa1Z\x8deg%\xe9\xc2p\xdd.\xed\xc3\xfc\xcc?\xe8eK\xa4Eh\xc5\xf7\x86\x94\xe2Z\xa3\xe6\xb9\xd0\xa7\xeb^\xae\x1a\x8b\xe7\xfe\xcb+\xf1Rc\x0f\xad\xba\x1a\x0b\x9b`\xf9\xec\xcf\xec\x8c\x136\xc1l\x07Ri\xf8m\xf9\xbf\xe9\xea K\xce5)\x97\xe4U\x86\xcf\xde\x96\xb4\x02\x1cA\x8ao\xb8\xc3\xb7C\xc0\x1bh\xd6Zz\xdf\xd8\x11\xdf,\x11\xb2]Y\x7fq3\xda\xfa\xb2E\xad\xfb\xad(B\xf2\xeeg\x90a \xbaK\xab\x9b\x03\xaa\x8c\xf5,2\x08\x82\xaa\x01\xbf_\xf2\xc8\xe85\xfe\x95\xf9\xa4\x97\xa8[6\xd1F}Z\xf9\xe0;\x8d\xc5\xfdZ\xa0\xb5\x169\x97\x02\xc5\xbe\xd5\xbd\xbd\x11\xdf\xf6Ru\x02?\xf5\xe4\xae\xd2\x83\xa3\xed(op\xda\xe8\x83a\x02\x9a\xf4\xee\xdd\x1d\xc0\x8f\"\xdbI \x88?=2\xaf\x14S+y\x94\xad\xe3\xf2RRj f\xae\nUL,!\x17Kn\xa0\x97\x01\xf6\x8d2\xc0~[\x06\xd8?\x1b\x08C(Ng9\xcc\xeb2.\x1c\x0f\x14\x16\x82\xfdi\x00\xd5u\xc2T\xc5QQ\x92+\xe4\x8d3\xf2\xc9\xca6\xce\xe2\x8a\xc0\xded\xb0\x0e\x08\xd3,\x93\x10[\xdb\x84X\x91\xc2\x1e5\x02\x14\x96u@O\x1c\x0c6\xbf\x92\x04\xac\xf9\xfb\xf3gL.\xa7\xdd6q\x10\xc2N\x1c\x95,\xa4\x04\xa6)\x9b\x91\xa2\xce\x07w\xb9Z\x18`\xe0\x08\xf6\x1d\x0d\xb1.J\x12_Zk\xda\xef\x87\xe5\xb5$\xef\xff\x11\x9d~\x7f\x1e\xda\xfb\x17\xb5\xe0\x9a=r[3\x12\xd5{\xcc\x1c\x9fdu\x08\xf4\xe7h8=\xf9u\xc1\xc4\x87\x1c;\x00\xe1\x89\x1d\x08,\xe3lmYjlm\xdfa\x1f(\xa7_<$|\xc6&\xe13\x1c\x96/y8+\xce\x81\x19\xbb\x90<\x9a\xb1\x1f~\xb8\x88\x08z\x92,\xec\x1f\x86\xca\x0ex\x14\x82\x8f\xf9\x1eJ\x8c\xed\x82\x071\x06y\xa1O\xcbt\xf8\"\x0b$\xe0\x1c\x90Q\xb2\xab*2\x8aa<\xa1{]=@|\x16\xaf\xd4\xadw\x07,\xa0[A\xed\x1a HU\xe4YE\xbe\x84\x82\x1c|\xf7\xebn\x8d.\x0598d$\xa47\x13\xa3\x0eP\x14\x84\xdc\xc1\xa1\x1b\xe4HT\xef\xb7\x89\xc8\xfexP=\xfauA\xc5\xc7l\xc9\x0f\xc3\xc0\xe0\x82\xbe\x8c\x8c\x18\x9c\xc3Da\xcd}goN\x82\xe5\xd0\x01\x83\x10$.\x1d;n\x04I\x0b\x0e\x9e\xe0b\x1e\xb0\xbb\xb4\xb8\x9e\xad\xfc\xfd\xc3\xc0\x10\xafFW\x9ai\x1c\xda\xa7\x01w\xb8\xba\xcc\xc4\x8b\x8e\xdd\x01.\x87\x0eh\xce\x1a\xf4s\xae\x94c\x19%J\xc5Z#\x08\xf8\x8f\xe7\xf9\x1c\xc3\xc5\xf2\x9fL]\xc5L@ \x97{Q\xde\xc6G\xf5A\xa8\xbb\x99S\x0b\x1b\xa5\x03\xda \x19\x8b\xf2\xcb\xd1\xeb\xf3\xd0\x02'Q\xeev}\xf0\x16\xd1\x0d\x9c\x89\x0e\x9c\x89\x04'}\x1cv\x93\xcfw\x0b\x82\xf1\xe1\x81\x1d\x8c\x92\x8c\xc6\x17\xe5\xa6\xa8}\x8f=\xf0\xc2^ \xefna]X\xf0 +y$\x9b{#\x86R\xd5y1`\"\xa9\x07\xf9-K\x93\x871S\xa7\xc6o\xa7\xf4\xcc?x\xa2\xd7\xf9i\x02\x18\xdc\xea\xd4D|\xa0v\x85t\x03\\\x16\x92\x10\x07'%![(\x8d\xdbnVB\xa125*{\x06%B>\x98\x07\xfe\xcfU\x9e}\xfe\xb4N?\xdf\xc4\xeb\xf43\xa6\x00\xfdx\xf1\x80\xf1\\_|\xb9\xd3\x8d\x10\xb2\xad9\xe1\xc3\xfd\xffxk\xc2\x81\xc1\xb4/1I\xa0\x06Q\xfe\x1eCi\xe2\xd5\x97\xf7\x00\x83\xa0\xe0M\xba]F\x16\xe6\x04<ztc\x11\xfa_\x18\xda\xe5\xbf\xf6Z\x81\x80\x1e\xb0\x87\xfb:\x13Q\xa1\x94}\x80\x97\xfcn6,\x89\x83\"M?\xee\xbc\x98\x80\xc7\x07f\xba\xca\x8f\xeb\x951\xa4\x06\xd7\x9a\x1a\xee \xd7\xa4\x8eu\x89\xef\xdc\x961v\x98\xd5\xc2\x9f\xf9D\xe8\xc6\xd7\xc1\xb8\xd5\xaa}nC\x83\xee\xf3,\xa0\x80\xd6\xc1\xfd\xf3g\x98\x9eu\x83\xef\x0f\xda\x139*5\xa7g\xa1\x1e\x1f\xdb\xf3\x18`\x95x\x8b\xb2\xd7h\x96g\xb3\xb8\xd6\xea\xf8\xd0U\xbf`]\xf8{!\\\xb7\x0c&Z]:\xf47-\xcf\x1c\xbb\xac\xd1\xeam\x9a)\xa1\xca\xcf\xfa)W\xb7\x89\x03$\xaeG\xa6\x9a+\x14t\xa4W \x1d(dwH\x1f\x97\xa3\xaeT?b\xfd\xa9\x9dK\x0dn)`\x91\xeb`\xa1\x1dbw\xf9\x87\x86\xc6\xae\xd5\x9dq\x03\x9a\xf5\xaa\\\xf0\x03\xc0\xec\xd2\x9d\xf4\xe7\x98\x983\xa7\xd0\x89\x15\x96\xc9\xc4\\\x83\xba\x0d\x16BkfN\x98\x08\x03\x93\x8b\xfb\x93\x8b\x9d\x16\x90\x8fa\xe6\x97n\xc8\x9c\x8e>\x99`\x02\xddkTS\xe3\xb3\x01\x13)#\xa3\x85\xbaR\xba9\xd8\xbc\x9b\x00\xcfti\xce\x95\xa5\x19GZ5S\x991+g\x9d9\xaa#i]\x0c3\x19\xeeW\xa4\xfc\x0b\x85\xf1\xd2\x8d\xcaiL\x85\x9d\xf1\x19i\x94ua6\xca2\x0db\xee0\x08Q\xb9e&\xeb\xd4\xfaJ\xdf:zAY\xf6\xb8\x88\x9b4x!\xe1\xc5\xf3\xb9\xb0\x8a\xff\xfc\x99\xb2#\xeb\xfc\x8a\xb4\x9f0\x06\xc5\x10\x99\xc6\xb8/;\xc6Z\xa6 ^\x0d\x82\x0f\xa7\xff\xf93\xd0\xb9\"$\xd7\x9b:\x16\x90D\xc9\xfb\xc6\xd1\xd4x=\xd8\xcf\x15o\xdfo\xe0AA\xd7\x07\x80|\x8a\xb7\x16\xbag/\x08)\x9a\xe7n8\xb4t\xc0\xa1\xaf\x8e\xc87Fcl\xb3\x87\x06\x1f\xe1\xa9\xbc\xd6Z\x92\x1aM\xaf\x7f\xb8y\x97'\x19\xa5\x08\xfd\x18\xb8\x00.n\x0f\x82\xbcw\xb2\x86\x86\xda\x88\xd1\xbf3\xff\xbas\xa3\x84\xbe\xecz1t\xeb\x7f\xce_\x1ej\x0d\x06\xae\x87\xec\x10N\xc4\xa7\xda\xdb\xdcO\xe26W\xf7\xf2T|\xaa\xb5~x>d\xc3p)>\xd5:\x0c>\x13o\x1f\xf7\x8d\x18\x9a+\xdc>4\xe3\xf9|2,'\x8b2(3\x81\x90\x9b\xe8>\x1d0\x1c\x1c\x92\x9b@\x91\x9d\xb4\x154\x08\xd6o\x89\x93\x85 $\xbaw\x94\x8a\xde\xe9|9a\xb6Ny\xfb !\xf5\xba\xab1S\xba<Q\xc8\xb5y\xdc8;FM\xad\x93\xfb\x9a\xeb)\x89\xf7o \x02<<~S0\xe0\x1d\xe4\xa7\xfa\x8e\x81\xc0[\xfdm\xa7\xb6$\xf5\xabl\xdc\xc4\xea\x9e+\x83\xcd\xfd\xb0\xcf\xde\xa2\xb3\x0dj\xdd\xa6\xf5\x99\x96 \x07`j^\xcd1\xd9\x9f\x05\n \xefX\x86\xf1\xd6\xa8\x06|,X\xc0Q.\x8d\xffr\x1b\xb6\xd8\x17_\xf8p|jx\x06Z\xc7h\xaf\x0fr\xb9X\x84?:\xbf\xdc\xaf\x0d*\x1c`R\x06\xe5\x85\x06\xda\x13\xca\x04\xc6\x84\xb0\xa6\xccj\xfa\xcehK\xfa 33\x0f\x15^\xa4\x81\x14mt\x9a\xf0!R\xa1\xdd\x10\xd2W\x91\xa0\xbb\xcc\\\xed0\x81\xd8y\x02\xd2\x8eu\x83\x91\xbd\xf8\xe0\x07\x9a\x07\xde\x05\x06\x99e\xd5\xa7\x1b\x87pci\xcf\x81\xb1r\x08\xe3\x97\xda\x86\x02\x8a\x91e<\xdd\x9c1-\x8f\xfd\xfe \xeb\x1e\xc1LH\xfa\x06\x97gQZ\x1a\x8d\x8a\xf9\xc18\x8fm\xa1Gk:\x04\x87\xa0gr\x85\xe6t\x85\x9c\xe2\x1a\x02\x87\x9eSj\x88E\x08s\xa78\xcc\xa2\x88\xe9\\6\xd3\xa1?\x9f\xb5g\xb7\x08B\xb0\xad\xb0Z\xdc.\x03i\xb9\xed\xc0r\xc1\xd4\x14'\xed\xfe\xe7!T\xd3yW_\xabm\xcfZ\x83#\xcb\xc2\x05Ex]s\x84@\xc3\xe5\x9a\xb2\xe1\x1bI\x98\xcasT\xe4\x12?\x05\x91+|\xb1Sm\x94`\xd5\xd7\xaf\x89Ou'\x8a\x91p\x8b\"\xd5,\xe8blG\x1a\x07\x16Y\x14F\xc9\xd9\x8dK>\xe8\x1a'\x8a8\x899\x19\xca\x86\xa3\xe5\xdc\x06\xdd %\xad\xb7!L\x87\xb6\xa3\x89\x9a\x9b\x0e\x1ae=\xdb\x8a\x0b\xdd\x9a\xdaV\xf1\xaa!\xb6\xe6\x11f\xcc\xeb\xf85\xa9c\x1c\x1d\xa9\x00\x83}\xadI\x8d\xaa\xcd\xb5_3\xd5B\xc7\x8f\\\xd0\xfc\xcf\x9f[xEk^\xe9)\xd7U\xc8\x9b\x15\xe9l\xafl00\x9e\x85\xf5Y\x10\xde\xf1\xc8m\xc0\\v\x0e\xc7a<\xbb\xd0\x83`)A0\x1ee\x14\x06\xe0\xc2\xc8\x00h\x9f\x8a\xdd\xd7{\xa9a\xcf\x8a\xb8$Y\x8d\xa1\xba5<\xda\x10\x83\xd6\xf1\xf0\xac\xed\xf1\xaa\x95\x84\x9aG\x98B\x17\xf1\x95]\x9b0\xbf\x97\x92\xf9\xbd\x18aE\xfbE\x9f\x18\xd4\xc3\xa2s\xb0\xa5O\xf1\xba\xef\xfd\xa3\x01\xc6\"\x8d\xeb\x9ad\x13\xd0\x04}Yl\xd2\xf4\xe6\x8d\x08g\x84s\x1e\xe1;\xbe\xf0g~\xea\x93\xae\xf6\x1a\xf4\xe3\xc8:\xddh<1\x93\xea]\x99\xaf\x93\x8a\x8c\x18D\xc1\xb5\x86s\x9f`,\x14\xa7\xb1p\xcf\xae7\xe4\xda\x117\x86\xe3\xa3\xf0\xa1\xe0}m\xa5U\xb5\x01\xb8\xa8\xdb`\x08\xcf\xc1U\xc4j&\xf7\xaeL\xd6I\x9d8kA\xdcg\xb9\xf9\xcdg\x99T\x7f\xa9\xf2\x8c\xcb`+\xdd\xfb\xe7L\xde\xed\x89i\x16\x84\x92jn!/\x9b\xb4\xdc`\x1a\x18\xefQ\xe3\x1b\x9fT\xaf\xb9&b\x02W\xba\xd7\xcf\xe6s\\\xb0\xa6\xdaZW\xed\x7f\x92\x8c\x94q\x9d\x97#\xe6\xf5\\\x92d\xe5\xfb\x97\xcd\xd7ns\x13\x1fL@\x93P \xa9\x18\xdb=\x81B\xf7\xf2\x84\xe5\xaeu\x1eq+x\n~\xdc\x1fc\xeb \x95\xdf\x15C\x1f\xa9\x0c\xfd\x9dRap#t\xa3\x8e}A\xae\xb4'\xdb~\xba?\x94fm\xf8\xd3'{\x03\x86M\xb6O\xb7\xcebw\xb0\xf7\x9d\xf9\xd3\xff`s*q\xbfw\x07\xfeJz>\x8c\xe5o\xe8;\xae\xe8k\x97\xbcv\xcfF]_\x9d\x850\xb8N\xea\xd5\xf3\x92\xccIV'qZ\xc11xI6K7s\x82&`U\xbc&\xf7Y\x9cx\x8d+\xb6`\x03\xc4z\xdb\x14yd@hB\xe7\xbe\x81Pm\"p\x9d9\xbd&`G]XML\x01\xecX\xf5\x1e\xb0\x8cyTA\x8d\x177,\xfc=\x9b\xd1\xb6&\x9a\xd0g\xc6\xcf\x06\xd2\x1b\xcd\x9a\xe5\x99h\"\x88\x01\x8aw\xaea\xe0@\x95c/\xf2\xb9>x\xa7.\xcb\xc9\xef\xcc\xbf~\x85\xdb\xbdd\xe8\xb2,\x1e\xf0\xe9]\xc7\x97,\xb7\xf2_N\xdf\xbe\x11N\xbd\xb3\x94\xc4\xe5\xf3x\xb6\"6\xbb\xd6**\xd2\xcd2\xc9\xaa\xa8$\x8bJ\xf9\xb0cB|\xeb\x9aQ\x1eT\xc2R\x9b\x17J\x10\x97z\x95\x18\x92\x99\x9c\xa0X\xd8\x19\xe0<\x9f\xe1\xf0X\x14]\x12\x84\xdd\x19,TX\xf8\xd7C\xeae\xddf2\x84;\x01\xd3f\xba0\xe0\x97~JB\x8c\x9a\xb6\x07m\xd0i\n\xeb \x01N\xd5\xb0cI\x81\x931MM\xd3X\x13\xf2>\x08\xf5\xdf\xad\xf5\xdf1\x9cN\x08~\xc7\x8f.$\xec\x85\xb6~\x9c\xa6o\x17A\xd8\x8d\xf9n\x06\xb55k\x9b\xbc\x11\x1a\xa6<\x17qE^\xe4\xb3 \x9clCi\xf8\xf0\x07IfW[\xa1\xe5\xbdE\xa1\x82\xfe\x8b\xa4\x9aQ1$c\xec\xaa\x86\xebmj\xf3\xd5y\x1d\xcf\xca\\\xcb?\x8b\xb2\xce\xe7$\x15\x94\x86W\xefGE\x01\x854\x9e\xbb\xe4E\x86\x8eos\xdc\xac]b\xf4mv\xd5\x1b&\xdb\xb8\x1d\x8b\xf2\xa5\xee\xc7\xa2\xb8\xba!\x8b\"\xcf\x8a\x9e\x07\x87\xc9\x16\xb4[\x98\xeb\xa0[\x8fc\x1c:D\x91#\xb48v\x882\xac\xf2\xe6\x8e\x1e\xe6f\xb4>\x1b\xa283D\x9d\x0f\x9c}8D1(\xd2\xfd\x00&0\xeb%\x13\xb3\x9d\xe6\xa0\x90^\xc2N\x083\x8b9\x94pl1\x1cd\x8bE\x92\xa2{W\xff~\xde\xc4\x8fT(\x8c\xbe\xee\xaa\x1d\xb0\x0b3\x17\x19R\xdc\xb1]\xd2\xa3E\xfa\xcak9\xc66}\xd1\xd7^\xf2\xa6U\xc2\xa5\xaf\x89\xf1\xe3\x9dy\xf9\x0b^\xdb\x91\x97?g\xebr\x99\x14B\x97\x87<\xa7\xbe\xf25\x8b\xe7U\xd7\x1a\x19\x1d\xb8\xc1\x13\x89\xf8Ibd\xfai\xad\x13tc\x0e\xb1E\xbc\xd5\xbe\xa6\xffl\x04\x9d\x0b1fN\xed\x97\x18\x91\xd1\xcck\x8c\xe03\x1cy\x8c\xdb\xc0?\xe1t\xbf\x9b\xfa\xbd\xcfZn8\xf7\xa8\xb5\xb4\xe2\xd2\xfc\xbe\xe6\x15K\xbbY\x19Rnf\xfe\xd6\xba\x83\x83\xbd\xad\x93\xbb?\xd9Z\xfe\xdfZ\xfa\x1f\x18\xabU\xf6W\xdf\xdc\xb9\x10a\xe2\xc8\x0d\xfaOy\xa2\x9b\xd9\x03TAE\xb3\xb8\xa87%9\xad\xe3\xd9\xe5\x872\x9e\x1186\xbd\xe1\x04\x9d\xfe\x1b\xcd\xf2\xac\xaa\xcb\xcd\x0c\xdd\xdf'\xecYEkR^C\xfan\x06\xec\x99\xe5\xaaA\x1fx+k\x05\xde*Y\xe0\xad\x92\x05\xde*ww\x03\xc8\xa6e;\xf0Vi\xe0\xacqpkRU\xf1\x92`\xae\xc6\xbd\xb3\x90\x99\xd0\xd4\xad\x93J\xa7l7\x11\x8c\xac\xb9\x8bW\x9dUC\xf5\x05\xcf\xedC\x8f`\xf5\xa9\x02:\xfai\xd8q\xa8\x1a\xad\xf5\xfb\xed\xf12\xa9^\x96\x84\xa47o\xe25\xb1\xe7w\x90\x86\xe4S\xd2\xf2\xc7\xd1\xae\x1d;\xc4\xa5\x0b\x9d\x91\x80\x97Q\x92\xcd\xc9\xa7\xb7\x0b\xca\xa5\xfc \xee\xefS\xda\x9d\xcb\x87Y\xf30q\x0d=)WZ4BX#}$\xb1\x12e\xf4i\xf2\x1a\xb9K\x17M?\xc7:\xb80 \x1dX\xe5\x85\xa0f5\x0b\xc1\x13\xe7\x05\xfe\x10\xf9\xf8^\xb4\xbf\x98\x89\x90\xb4\xd5\x83j\xb6\"\xeb\xb8\xfb\xb4\xd5\x88\xf2\xbc\xdd\x95\xda\x0c\xef\xe8\x946\xa7\x1f{\x82cg\xfd= \x9f\xe2u\x91\x12\xefl\x0c\xc6v\xc8\xf7\xc3/ \xc3\xadW\xff\x96*X$G\xc6\xedp\x07\n\xda\xfe6B\xf3\x86~03\n\x87\x8cG\xf9\xc3`\xef\x8c\x9c\xed \xc5T\xef3r%\x91>\xb9F\xab\x8f~'\x1d!TP\xdd~E\xb1g\x90r\x97\xa4\xca\xd3+\xe2w\xb5\x82\x96}[G\xf3\xa4\x8a/R\xc6]-\xe2\x19\xc1\x00Q\xdd1\x84\x18]\xfb\x92<+\x92\xeaC\xbc\x94\xd9C\xfd:\xd0G)\x1e\xa2A\xb34!\x99\\\xc1Nt\xb7\xdfL\xcbxh\xd62\xfah\xed\xffm\x80\x91\xe4\x1e\x05\xba\x8a\x82\xa1\xd4\xa7\xf3\xa9\xc4[\xad\xb7A\x8a\xbb\xf9;\x03SY\xfa\xa9!\x8cb\xe6\xef?2\x06Q\\\x0cEP\xd4\x86\xb0[17\xf9'\x86\x00\x8a\x99\xff\xad\x8e#^s\xbe\xb7\x0d\xd8\x1ce\x0d48\x94\x82A\xae\x06CL\xe5\x8f\xe8\"\xc9\xe6~\xb6I\xd3\x90\x7f\x16\xf0X\x1f\x14\x9f1m\xad\xd2\x04\x7f|\xba\xb9\xa8KB\xdf\xce\xd5\xb7\xe4\x13\x99mj\xb4\xd0\x11\x7f\xd3\xc7\x9d\x18\x8fi\xebA\xabB\x13\xf01\xed=\xa4\x15\xdbJd\xe5g\xc82\x85\xb0\xb3\xe1\x87M\x92\xf2f\xae\xa2w\xcf\xde?{}\xf2\xe1\xe4\xfd\xf9\x0f?\xbd\xfa\xf1\xc5\xc9\xfbS\xd3f\x82#Xi_\xd0\x0f.h\x9b\xef\x99\xd4\x84\xed\xaa\x0f\x10r$-X\x9f\xfd\xdd\x90\x17\xaf\xe6\x13Xc\xe2\xfb\xf6\x86\xc0q+<Z\xff[\xba\"\x13e\x1d{\x158\xa0G\xdc\xf1\"\xc1B\x9e\xf2\x05k\xb4\xf2\x03e\xf9\xd0\xbc2qW\xa12\xb6\xda\xa8\xa0\x009 \xach\x16\x82\x01\x03-\xe21\x9e\x10\xeb\x85O\xbc\xa9Wy\x99\xfc\x93\xccy\xc3\xe2\x01.\xd9\x80=\xa4\xb9s\xae\xf0\xfd\xa9L'\xba\x98\x99\xd8\x0b=e\x8e\x9b?'\xfc@\xd3\xb6\x89\xa6\xedNw\xfc|[M\xec\xeaR!\x8a\x98\xef(\xf8\"\xcb\xbdz\x17\xeb\xc7n\n\xf9\xa4\xcd\xd5\xfa\x8aj\xb62N\xda%0\xa8%\xf8\xf1\xda}A\x8fI\xa4Z\x03\x8di\x14\x17\xe2\xb0\xee\xbe\x11\xcd\xe9\x17\xb2{\xaa\xbbxB\x90H$\xfb>-\xc8\xac\xd1\xe2\xf1\xffY\xd8\x17\xfe\x00\x9d\xfc\x98 \xc5\xfe4\x99\x8e\xdao [\x14\xa5\xbd\xcbm\x17o*n\x0d \x84`\x1d(.\xe8y4\x96fe/l\xf4R\xc8\xc3xt\xef{\x83\xbe\xbb\x94\x08WRi\xcf\x02\x88\xd7\x06\xed/\x89Vy\x85\xbe\xba>\xff\xf3\x082\xfc#@ 3I\x80\xbf\x17\xbf\x8e`\xca\xc5\xdcY\x9e\xca\xe8(\xde\x84\x8a\x13^p\x86_^\xc4\x15y\x17\xd7+\xfe\xa9\xfcy\x04T\xba\xb3/\x80\xaa\x03\xc9\xc7\n\xca\x16e\xd3\xde\x80\xd01\xfc\xe9\xfe\x17\x98\xb8l\xadW{\xb2\xf7h\xdbO\x0f\x1fn\xad\x1f{\xb27` \xf4\xef%\x9a\xa9\xbf\xee\x9c\x1bG\x9bdv\x01\x89\xb8I \xd5\xeb\xb8\x18\x08.\x9e\xc3@\x84\xf0d\xc8\x1dX\x1a\x0chu\xbe\x9b![\x83j\xc8W8\x15\xedj\x87$\x82\xa1\x1fj\x9d\x85\x17C\x9e\xc42C\xa86h\xb4\xe0\xe5\x0f\xf6\x86\xdc\x81\x87Y2E\x14\xbd\xf6I@E\xc1\x02\x8d\xb6\xad\xaa\x1a\x11n\xfdP+5\x89x\xeb\xda\x81\x8b8\xda\x87\xda\xb7\"\x8e\xf6Cm\xc3\"\x8e\xf6C\xed2 o\xf0\x87Z\xafm\xe1\x0e\xfeP\xeb\x98\xed\x94\x08A\xb9\x00\x1e<\x80;\xf9\xb5\x98\x98K\x82^.\x12\xf6b\x98\xcdd,\x92g\xf1'\x99\x93\x8b\xcd\xf2GrE(\xe7\x98d\x8b\xdcR_\xde\xfaO-\xael\xac\xe2\x9f\x93\xaa\xce\xcb\x1b\xb3\xd5\x9a(\x8cy\xb07+|s\x1d\xaa\x16\xcc:|.Y:\xdb\x07U\x1dSi\xc46\xd4\xc2\xb5\xbd\xc6\x0c\xc3\xd2\"\xaf\xf8\xa1$d\x82\x9b\xea\xdc,4\xa9\xa5Z\xe5\xd7/\xe8\x02\x9a31\x89\x12\xa7\xa93\x1c\xd8\xd2Q2M\xa5 FY-h\x91&\x17\xafI\xbd\xca\xe7\xd5\xa4\x8b\xab\x9dd0\x14u\x035\x10\xbcu\xdc\x1d\xc6\\\x93RJ\x14\xca\xc1\x04\xfc\x06eI$\xb7w\xbe$5S\x16\xf0\xceE\x05n\xf3\xad\xd6\xe3\x8f\xfa\xd5Wq\xf5~\x93\xc9\xaa\xecg\xbf\xdau\x19\x17\x05\x99\xbfk\xce&\xfaT\x98\xfa\xac\xe3\xc2\x97\xd5X\x1d\xa5\x89@\x84\xe4\x91\xc0\x89\x1a\x13j\xd1\x01\xc7>fD\xd4T\x8c\xe7s\x7fz\x166\x1cp`\xf9\x80\xe3\\\xf3\x11\x7f \xbf\xdb\x14\xf3\xb8&\x1c\xec\xbe\xda\x94\xde\xd2`\xd0\x11\x87\"\xc1\xbcA\x02\x12\xc2\xd4L\xbd.\xc9\xcd\x04<\xa4L\x03h\xc7Y\x03\xbb\xee@\x14\xe4\xef\xe94\x1a\x9a\xc7\x8c\xf5m\x1f\x82z\x9bV\x87Z-1\xbbBc\x17j\x19\xaa\x8c\x8f!\x83\xfb\xb0\x0f\x13\xd8\x0bBd?\xf6\x9fB\x0e\xdfC\xf6\x14\xf2\xdd\xdd\x00\xcai\x8e73\xadK\xb6\xdc\xc1%\x17\xdd\xbfy\x94\x95 J\xf3e\x13\x86Jc\xbd\xa1\x16\xb39\x8b\xc1Fd\xe8\x90a\xcbtE\xca\x8b\xbc\x1a\x8a\x04\xb1\xd5B\xc9v\x99\xf3_{\xd9l\x0d\xc0\xbf\xcf\x82M\xbd)\x06\xce\x84]\xf0\xce(C\x7ff\x8b\xca&\xcaWX\xcb\x86*\x8dYNKx\x05P\x04dAE\\lk\xd4\x827\xb9\x83*\x13Qr\x83\x08\xd0-B\xfa\x99*\xf4\x99\x9ex\x98F\xb8d\xd70h\xf4\xde\xab\x10\xc0\x04t\x04\xda\xc7\xb0m9\xbf\xc9Qk0\xe9G\xc4\xab\xca\xad\xdcu\xb7\\m\x93P[\x14>\xd1\x9d^\x889\xcc\xc5G\xaeHy3\xce\xb1Y-R\x86<\xe2I\x98\x9d\xbe4$\x1bkU\xb1o*\xde\xb7T\xd4tL-K?\x0f\xc1\x988\xb1[0\x16D\x08\xb3\x10\x16!\x14\xe8\x14\xbf\na\x8d\xee\xab7\xf6\xb1\x80n<m\xc3M\xe7\xe8\xed\xa03\xe0,\x85\x01g9\xca\x80S\x94\xb1\x86\x9c\xa2\xdc(X\xc7 J\xc13\xb6wQ06\x83\n\xd8\x10.B8\x0f\xe1:\x84\x93\x10>\x85p\x1a\xc2\xf3\x10.Cx\x16\xc2\xdb\x10\xde\xb9A\xbe[,+\x11o;~\xd0\xadL,V&\xdeje\xbae\xdb\x95\xea\x16\xcch\xdd\xa7A\xf9\xa8\x00\x16C%\x96\xf9r\xb6[\xa4nq\x0fk1T\xec!*l\x85\xa5b\xb8$7x\xd3\xbf\x98.T#\x9a;\x07\xde\xc3\xff,\xe0\xf1\x9d\xd7L\x0f\xe3D\xe3\xd9\xe9\xa3>\xf9\x92\xdc \x0d1%.u-,\xe2\xff\x97o\x93f\xa4\x8f\xbfl@\xe0\x96\x11\xc4V\\\x93H\xd9\n\x9a\x89)\x98\x1b\xa2\xe2m1\x9d\x9f\x85\xa8G[H\xab+\xd5l*\x08Q\x8d\xa6>\xc2\x93\x1dC\xa9\xcc\xf1\xcfu\x88\x87B\xa2\x0dD1\x9b\xe6\xd17\xdf\x94dq\xc6\xb2\x95\xee\xec\x85\xa8=\xdb\xd9gf\xbf\"\xed\x91\xa4\x99\xfb\x0fC\xb4\x0d\xee\xb8\xbe\xd0\x9fU\xf3\xd3\x98 \xd3\xb58\xa7C\xb2\x15J\x1c0\xce\xc5'8\x82\x13\xc4\x1d?\x08\xa2y\x9e91r.Eb\xe4\xe1\x7f\x18m\xc0\xe8&p\x04\x9fD\x10\xf9\xe7p\x04\xf9\xf4\xf4,\xc4\xf8\x95\x0b!\xf7\x9c\x06!\x86\xac\xd4\x9c^\xcf\x83\x10\xdeb\x96\x17\xc4\xb2\x10\x06\xd3\xfa\x8e)\xf1\xd8\x84H\xb6\xf2\xaf\x04\xf5\x9dg\xff\x0d&K\x91^W:\xb2\xf6\x16\xe5\xb6\xd9\xf4\xed\x19\xd2\xb4\x80Y\xb8\xa5d\x19\xd7\xe4\xff$$\x9d\xfb\xa5\xcf\xd8\xd6\"\x08\xc1\xab\xf7\xbc\x10\x0e\x1e\xdd\x05\xcdr\xc9\x81e+\x18x\x9aJ{\xa7,d\x0c=\x83\xef\x1c\x1f\x0e-)\xb8\\\xcb\xbf\n>P\xa0\xbd\xc3\xcc\x06\x19\x8b\xd0\x96a$\xbbw\xff\x0d8K\xe9r\x80\x87\xfb\n\x0b\xf8\x1c%\xbcK\xcc\xddZ\xdc\xc5\xfe8tt\x15\x1c*\x82Q\x89\x9b\xf4\x8b_62\xb8CV\xf0\xf0Ny\\\xc7\xcc\xaaC\xe5\xce&v\x07\x94M\xb2\x91\x87\x98\xb3\x153\x0b\xc6\"c\xde\xc3\x80\xf3\x9e{\x8c\xf7\x8c\xadi\x02m\x85\xc9\x1cw \x9b\xcbq?Ty\xe1\x87\xfb!\xec\\P2s\x12\xf1]\xa4\xfc\xddM\xc05\xb68\xa5Hs)\x9426c>\x0ca\xe7\xfc\xce\x89\xe2\xc3;\xd8\x81\xf0/D\x14Y\xde\xbd\xeb/\x9b\x14[\xc1;\xd86\x92D/\x92,\xa9V\xfe\xc3\xc3;\xc1-\x87D\x89\xb6\xd2\x1b\xd9\xde\x9d\x8c\xec\xf1\x97\x8dl\x1b?sS\x913t\xf4?7\x95\xedp\xf26\x84\xd8\x9e\x98\xd0V\xa6Tj\xa7$\x97\x92\xaf\x87\x8f\x1dB\x1a\x9b\xca\x94\xd2\xbc\x10\xa9\xc8\xc3\xef\xdc\xee\x0e\xba\xc5\x10\x15r\xa8\xdc\xb2\xc4\xf1\x9d\x8b\x83\x9b D\x9b+\x0c\xc9\xcb\xcf\x8d\x82\xeb.\xe6\x8a\xeeBj\xe2\x1f\x852f\xac\xa2\xba\xc8uw\xf8\xdd8mc\xf5\x19\x88\x81[`1\xa5\xd5\x18\x84x\x8d\x1e\x02w\xa1\xae(%\x97\xb4\xa5zb;\x9a<\x1e\xdf\xf9N[\xc2\x11\xac\x85\xc6\xa1\xec\x88m7\xfeR\xbcZ\xf28\xa3K)\xc1\xed\xefo\xb3J\xfb[p\xa4\x02\xdd$l\xb7\xd0En\xc1\x97\xb1\xf1n\xc1`\xcaq\x1el\xc1Pn=\xd0-N>\xb9W\xf7\x1fQ\xe8\xb2\xd4\xd3\x9cA|\x14\xf0\xfd\xbd\xc7\xf6w9\x9a?d\x12\xfa\x16\xfc\xa0\x1c\xd6\x81JO\x0e(\xff\xb7\xa0<\xdfJ\xe1\xffV[\xf2\x7f\xce\x99\xc4\xbb\x85%3\x16c\xa2\xfc\xdd\xd6\xf7}\xe5\x97j\x8b~-Z\xc1\xf8\xb3\xf9\xb8An\xad\xa0\x91\xee\x8c\x9c\xcb9\x18\xcb\x7f9\xe73\xef\x96^\xcfc\xf9+\xd6\xf3\xc8\x93\xe8K\xf8'9\xe2\x91\xfc\x92\x1b\x0e\xdc\x86P\x8e\xe7\x87\xa6\x8fB$(t\xf7\x1e\x8ca\x7f\xa6\x07\xc8\xee\xd0Mu\xe0\xc8\xee8\xb07\x16k\x8a[\x9f\x04}\x03\xe2\x9c\x99\x1d\x96\x81\xcd\x8a\x18\xa4=\xe8\x9bxM&\xc0\xa3.|\xfe<\x14~Q\x94V\xe8Y\x95!\x92\x8f\xfd\xdc2\xfa\xd1Q\x8d\xecVN\x94(\x8d\xb6r\xb2\xd1@\xbbw\x9b(\x8aE\xe4\xaam\x16\xdb1\x1eU\xbc?\x9c\xcc\n\xa4\xf7\xd6\x92\xd4\x82\xd3\xac^\xe6%k\xce\xaf\xd5\x8c\xae\xbf\x0d\xd0U\x83\xec;\x84\xbd4\xec\xecX|\xb72\xd8J\xc9K`\xa1\x0c\xb9\xd2\xfb\xcc-u\xa7Z$\xe8q\xe8\x16\xe0~\x05\xe8. \xc7hno?\x02\xb8\xd6\xf9\xa9Q\x13\"\xd9\x11\xa5\x06>\xb1\x1c\x1f\xaa\xd7n\xcb\x1f`Z\xf3\xfc3_\x11\x14\xef7\xd9\xf3|\x93\x0de\xb0\x1a\x0d\x0buB]\x98\xfbDl\xb0\xaf8)\xde\xd7\x87d\xc8 \x7f\xf4\xb4\xf4K\xdc\xcc\xcbm\x951\xe2\xcf\xb4V\xedeX\xf2\xaa\xaf\x08\x0fA\xe7^es\xf2\xe9W\x03\xc9\x87\xa4\xc0\xe4\xcbj\xe7N0\xf2\xb2\xcd\xfa\x82\x94\x1e\xec4\xbe\xd9p\x0c\xf7\xf7\xc1\x94&\x0d\xee\x04Lt\xb7\xde%t$\xbdkX\x83\xbb\x1f=w@\xd8\x96\xae9\xd8\xc8\xb6\xcc\x92\xc7\x916_C\xd4\xb2\xb3\xb6\xbf\x87\xf2\x9c\xa7TG\x1f\x8c\xa1x\x91_\x08+v\x80}E(\x0d\x03\xa5a\xf1\xda\xe9;\xe8f\xe1y&F\x1e\xach\x8d\xd7\x0b\xec\x1f@\xc6\xbd\xcd\x19Dm\x8bE\x0bf\xd8\x19NY\xa1\x16\xb4\x9b\xd0\x1aqKV\x025\x82\x19sK\xf0\xbb+\x00\xde\xff\xcck\x88!\xcb\xb3\xfb,\x0f0\xf3\x1b\xf3Bp\x19-\xf0!d\x91\xf4\xf1b\xb1\x83\x1b?.1\xf5\xb0\xc5Ys\x1e\xcb'2=\x91\xf0\xd5\xec\xb19\xcd\xf7l\"\xad\xf7\x1fV$s\x82+h\x8cM\xd5\\\x1a\x1a\x88U\xd2\xcd\xca'\\\xed&\x86\xbb]\x7f\xe2\x14\xd0\xf4\xc5\x96E\xb2\xc3\xba\xcc\x15\xdd\xe2\x96\x93D-\xfd\x8c\xc7]\xfc\xb463,\xb0~\x0d\x8e\xbc\x03\x991D\xc3\x06\x97v\xe6\xebvL\x16\xb1\xd2hO\xd1qJP^!\x19\xd5\x19\xe3\x88Z\\\xf5\xae\xc8\xb4\xbf\xdc6xdA$q\xba+\xfesM\xe2)\xe6BW\xc75\xc1\xf0\xbev\x14p\x0c\x1ebY\xe1\xe1\x11\xb3\xc0\x14\xd8\xaet\x81mvp3dJ\xa7\xbf\x02\xb2\xb0\\\xc6\xdb\npV\x84iq[]:\xd5\xc4\x07\xb4\x81\xe8{\xd8\x13!n8U\xfeP&d\x0eu\xce\xf3;C\xdc\xf6\n\x86z\x15\xd7\x90T\xd9\x1fj\xa8W\xa4$;\x9e\x0c\xb7\xd9\x1dFU\xa4 \x95\x18C\xd8\xff\n\x00\xee\x11\xdf\xaf\x05^'>\xb5\xd9c\xfc\xafN\x14\x19''!\x11eN\xb7M]\xb6\x154S\xcd\xac\x95m\xfb\x070\xbe\x81\x06\x8d\xd9\xfe\xe9x\xbb\xda\xdc(\x03~\x890\x0e \xee\xfdkB\xa5\xaa\xe5k\x1c\x07\xaa\xd2h\x0c\xee90\x90\x8d\x97\x18\xa0\xe6p/\xd4\x0bBH\xe1\x04\x15h\xa8\x1c\x93'\x05\x95k\x9eW\xb8\x1f-\x01\xd8\xbf\x00\x1c\xcf7eI\xb2\xad\xa0\xe2\x08\x11!w\xe8\xb4u\xfc\x15\x1f\x04\x7f\xfa\x95tG\xfd\xfeG\xccu\x14\xf5\x89\xf4\x92\xbb\x95\xb6\x9b\x00\xe6\xd7\xb0\xfbU\xe8q\x17\xf4#\x00b\x83\x87:\x97\x99\xda\xc7W\x99\x05')o\x17\x1fn\x8aQ:\x80\x11\x1b[\xd8<|\xa5\x8d\xf8cr1b\xe0\x8e\x83F\xf07a+\xee~\xe0\xe7K\xf25t\x8f\x0d\xcb\x8a\xc9\xf1\xdb\xdc\xeaW\x80\xbf\x12\x14\xe3+\xcc\x86m\x82&\xfc \x9d\xd4\x90\xb8\xb4\xf54\xaa\xadf\xe1\xbe\x07z\x13\xa9\xe8D\xbe\xce\xd9\xc4\x83\x8f\x8c\x99\xc8\x98Y\xf44\xe8\xc6\xc3\x08\xfe\x04>;\xd1\xbf\xc6,gi\x9e\x8d\xa2X\x8e\x93\xfc\xcb\xe9\xdb7<@\x1feMsE6\xfd\x1a\xe7\xab\x88\x8d5b&\xb6\x89H\x97lb\x9f4-\x84 \xce-\x81W\x93\xcc\x97k.\xda\xac( a\xfbH\x14\xd09\xfe\xedW\xc6\x99sM\x19\xc0\xba\xb9\xcf\xb5\x19\xc9\xa0R\xcf\xc9\x11_D\x8ck:h\xf1\xec\x0e\xc2\x06\xed+\x97\xda\xa8\xdc1\xb8v\xb7\x88}i\x8a\xb0\xa6+}\xe9\xe4\xeb\xf6f\x87\x85\x88\x96\xed6\n5\xb6+\x9ekN_\x89\x00b\xf8\x1d\xfba\xfd\xce=\xca\x04\x1b\x8d\xaa\x8a\xf5\x13\x11\x0eI\xa0I\xa3\x9a\x0dB\xf5\x9e\x99\x07\xb3M\xbed\x131]0\xbbV@\x9a\x8c\x11C\xd5\xdfx\xd3\x16\xb6\x1f\xb2\x0c\x1e~\xef\x19Rl\xca8k\xea\xff \xf6\xf7\xb4\xd7\xe5\xd6\x98\xbc\xa2\xb0\xf5\xcb\\\x17O,\x9cT\x99r?P\x99\xf4\xc3\xf7\xfeF\xfepE\xa0$\xf1lE\xe6\x10\xc3*.\xe7\x90&\xeb\xa4\x86|A\xc7\xcbMT\xa0\xdcd\x95g\xa3V\x0eD\xa2DW\xb9>\x87.5\x93zK\x03\x97}&\x92\x08i\x9b\x19oy\x00\xe3\xac\x0f\xc0\x01\x00\x00\xd0_\xfe8M\xfd\xcd\x97\x8e\x0fi\xa0\x88\x97\x13\x82\x0cmfm\xe56p\xcdN\xd0-\xdb\x91\xb4/\xd8\xa9\xbc\xc3Q\x03\xcd:Xv\x04\xa5}\x89\xc4\xb9\x9aE\x1a]\x85o \xab'J\x8e\x0dtu-p\x1f\x1cla\xc7]\xa6\x95\xaa\xd9\x97\x0bPD\x11\x87\xc7P&_]\x89\x99\xf1\xfe\xa8o6\x8e\xd1\xa3\xd4\xe2\x0e\x06Qdh\xb2\x8a\x99 w\\\x08J\xbf\x0e\xd9\xaa\xfe\x98\\\xf8A\x10<\x85\x1d\x9fB\xc0\xaf0\xa9A\xcb\x8c\xff)\x87M\x00\xc4\xaf\xf8\xe5\x87\xf3`\xc6\xdft\x89\x12s\xcbi\n0;\xc5\x11\xe5\x16\x16I\x16\xa7\xe9X\x80\x8d\x071-; %\xd7\x85bL]Hc\xeaQ\x8dm;l\x10\xeer\x01\xb70\xde\x8c\xfa\xdc\xcd\x86\x15\x9ck\xde\xb2;p\xd2G0\xeb\xe7\x12Q\xac\xe2\xb0(\xed+Q\x8ck\xeeO-\x91A\x9d\x8cQEa'\xfe\x04\xfaY\xfeu\xe56p\xb1\xa4\x1d\xb9\xceRTj\x99K\x95cf\xd12!2%\xec\xee\x16\x97\xf8i\xd6\x1a\xd2,\xc0\xf1`\xbc\x1dxo\x90\x8d1&}\xef\xd5\xad\xeel:1J\x07%YT\x13X\x0b4\xd1\xd3sL\xa1<\x81\xe5p\xad&\x05\xd7\x04n,Ue\x04\x9c \\\x88\xaa\xfd\xa9\xb4O 5\x0c\xf9u;By\x93ay\\<\xf8\xc3\x87\x03\xf1\xe0\x87?=x\xfc\xdd\xb6\x9f>\xde:\xa5\xe4\xc1\xf6\x91\xef\xf7\xf7\xb6\xfdt\xff\xbb\xed\x13\x04\xec\x7fIF\xca\xd6+\xa9\x94\xf9\x8d\xe2\xed\xeb\x07\x93\x1b\x95\x98,2LT\x93\x8aY5\xe9\x07\x80\xb5jq\x80Q\x99\xecm\xebV\x9d\xe5Z\x8a\xa1$i\\'W\x04~z\xffc\x08\xd7I\xbd\xca75\xac\xe2\xab$[B\x0c\"\x13E\x84Y\xbe'\xf0\x07\x19\xf4\xf4\x0f\xf2\x1d\x7fZ\xe3S].Bh\xa0\xf8\xa9'\x97\xd6Z\xf5w\x9f2\x89ep\x82^b\x84\x9e \x9f\x0c \xcf\xf3M:\x87,\xaf%DJ\xb2 %\xc9f\x04.\xc8,\xa6X\x93/&\x80\xb3\x16\xb92\x11\xc3:c6\x0d$\x1e\xc4)\x1f!\xe9\x05h\xa3P\xfb\xde\xef=\xb7V7\xc6\xe9 \x9b\xbfwS\xa2\x89o\x8b\xda\x084\xe09\xd5\x98\x9eeA0\xc0\xb1 \xab\x80\x14\x99\x90\xe1U\xa6\x0c\xc2E\xc3 ,{\x8b>\xec\xbfr~\xce\x15\xabz\x1eA\x97\x91\xc6\xca\x10\xf3\x91\xa9C\xe1v\x81\xee\xb8W\xf9\xa4+\xce\xda\xfaKM\xf8\xed\xb6\xd0\x95\xbe\x03!B\xeaWY\x88\xcep\x0c\xbae\xae\x038\x86\x1a&\xd0_\x96:\x80 \xf8\xb4U8\x82W,G\xf8_N\xdf\xbe\xe9\xcf\xdb\xc8O\xf2\xcey\x1b\xb5>U`\x88\xef\xdd@\x90Zq}\xa6\xbd\x85f\x9a7.\x17\x7f\x0f\xfbR5V\xf7\xeb\n\xdc>\xed\xde\xd1\xe91\x1d\xcd\x18\x9b\xac\xe4e\x87\xca\xf6\x89J\x91'YMJNG\xe8\x9e\x87yN*\xacC>%U\x0dI\x06\xf3|\x86\xa1\xa9\xb5\xf9Th\x91\xadh\xce\x14\xcd(\xf9t\xbb\xc9\x16\xf5P\x9e\xe9\x11\xad\x95\xfe\xb21\xf9 \xea\x8c?\xdc\x14\x84\xeb\xfbN>\x15dV\xa3\xaa\x8f}\x14\xc2\x12\xadi\xe9\xbcU\x90\xd1\xc3\xd3\xdbd,\xaf\xcc\xdc\x03\x96|\xe0\xaau\xa3c\x9e\x92\xf7\x80Y(\x92\xe9\xde\x99\xbc!!Q\xb5\xb9\xa8\xea\x12s\xc1\x80\xe7\xc9~\xa6g0\xc1\x0cXHb\x1fx\x01\xd3\x86\xb9a\xdfb\x90~\xeb@\xc3\xd9\x82\x13\x89J\x9b\x8cT\xb3\xb8 >\x91\xc9\x9f\x1e\xfc\xd7\xfe\x83e\x88\xb9\x9d\x94g{\xf8\xec\xbf\xbazP\xd3\xd0\x8a\xc1\xa15\xfdkzg\x1d\xed\xa9\xbd\x7f|\xc0\x1e\xee\xbbv?\x1fdP~\xf6\xeb\xc6\xa4wG\xa3\x95\x11\x9b\x97D\xb3U\\>\xab\xfdZ\xda\x0b\xe9\xe9\n\xcb^\x86\xa6C\xf7u\x1e\xfe\xbc/\x8e_j\xdac\x8a!;\x98\xb9^ \x0e\xfb\xf1{\xfe\x03k\xd0_;t3;M~%\xf8\xcc\x10\xb4:1q\x0d\xf5\x01\xef\xc5K\xcdpsL\xf5\x95\xf3\xc0\x15\x1f\xf0\xda\xb9\x0cA\x1b2Sh\xd2\xec\xa7\x0e\xf4\x01\xc1)\xe01\xdd\x12\x13\x84\x00\xb22q\xe1\x17A\x93@Z\xdb\xda\xad\x9f\x19V#\x86#\xf0\xf1\xee\xc2\xfb\xbe*\xc8l\x1d\x17\xf7);\xf8'/\xa0\xd4\xed\xf7\xd8\x89\x9ep\xd6p\x84\xce\xfc\x1d\xdb\x81\xe9Y\x80i\xcf^\xe43\x0cZ\xea'\x98\xca\xd0\x86B\x1b8\x02\xcf3Q\xffq\x19\xadi[\x1b:|\x84Q\x81\xb7\xaa\xf9t\x83$\x86\xfe\xef\xda\x9c\xd2$n\x92\x18c\xb6\xcf\xfd\xd8h\xe8\xa1\xe3h\x86\xe7\x9eO\x13\xbc\"\xc2\xff\xb9\x93\n\xbf\x7f\x89\xbb\xfbW\xfdu\xe7 \xbd\xdaC\xa3Kr5\x94\x93k=\x94Xk9\x98\xb0K\xa6\x82\xd2~{1\x94X\xeb\x9c%\xba\xd5e\xb3\xbd\x16}jSH\x9d\x88>\xb5\xcd~\x1aL\xf2{:\x94\x13\xeb\xb9\x18\xae\x16J\x97B&\xef\xbfz\xc6\xd3\xea\xbf'\xcb\x93O\x85\xef\xfd\xdd\x9f\xc6\xf7\xffy\xb6;y\xf0\xe0\xf3\x83\x07\x81\x17\x82\x97x\x9a\xef\xder}\xf5\xf3\xe6\x8c\xf5(k\xf7\x9e,\xf0\xf0\xf6\xec2\xb4(x\x03&2M\xe2\xc7,_\x7f\x87\xebGk\x00\xe0\x17\x9c:\x04\xef\x0f\xf2\x1d#\x87\xbd\xe7\x1f\xf8\xa4\x07\x94?\xaf\x8d\x8a(f\xcd\xf1MI\x16\x06K\x0e\xa1\x91\xec\xce\xdf@\xdbE\xc1\x8b\x00\xbc\x86a\xa7\xd2^\x08\xda\x83I\x14\x94\xc8i\xad\xcb(\xa9^\x96\x84\xa47o\xe25\x99\x07~e\x0d\xeeN\xfb\xc2\xb4sJ\xf6#?\x93\x14\xd3~1\xaag\xe2\xda\xc20\x05\xd1\x04\xd6\x9b\xaa\x86\x0b\"Y8\xf0)\x9a\xdc\x7fO\x16\x81\x913U\x0bk\xc5\xe1\xfe\x98\x8f}\x02\x0e\xd9A\x16\x1b\xbc\xa3_\xd9,\xcamW\xa4\x14\x8e\x0b8B\xb1\xdc\xdek\x81\xa1\xb7\xf7\x1c\"E`\xd8\xee)\xf3\x9b\xb5en\xa3\xe5\xca\xf1\xbe\xca\xed\x02\x85\xb6\x96\xd2\xae\x0b8\x86\xdc/BH\xa9 gL.+\xca\xb8\xdb\x01\x8e, =-\xec\xb5A\x15X\xe6v\x88\xc0\x18\xd4\x01\x8e>\x0c%\xae\xdc>p\xc5!\xd0\x1f\xc8\xad\xd7V$[6\x91\xc7\xac\x9d\xdd8\"\x03\x12\x90\x95?\x0f\xe1*\x84\n\xcd\xbb\x1c\x16\x029\xa1M\x9aR\xb6\xeb\n\x8e\xc1\xbfA\x91y.\xfc\x07\x19\x9f\xe8/\x05u\xf1o\x02\xc62/9\xd1\x1dV\x93q\x99\xf6_\x06%\\)\n\x8c\xc6\x88\x80\xee\xa9%OhD\xe9(Bh\xe3_\x850\x0f\x82\x88+\xad\xe0\x18\x96\xf2\xef ,\xbb&]N[\x0ddl\xa3\x11\xbb\x0d\xb6\x00/\x8c\x051l\x01f\x18 j\xb0o@\xe0j\xa4\xa5\xc6\xc5\x98\xd3\xa9\xe9\xa9\xa2\xdeZ\xe7W\x84\n3\xb0t\xc8\xfaE\xf7\xefEK\x1b$\xa4\xe4\n\xd3\xdf\xb8-\xc77\x1c\xae\xd6\xca\xb63\x0b\x84\xc6\x89\xee\xca+\x14R\xd3f\x96\x17\xa12N\x91\x1b\xd0\x9acT\x14\xb9\x94W\xd6\xea\xb7\x81\x03\xe8\xdc\xce+\x10\xc4l\x9c\xc5\xb6Z\x84\xfa@\xab\x005\x15iST\xc4\xf5**\xc9|3#\xfe\xd6C\x00\xf52\x96ytNk\xbc:\x9d\xd6nA\xa2h\xc1\x8c\xfd\xee\xfb\x08F$\xa55\x15>hU7\xcc\x9d\xe4\xb9\xb2$S\xb5'\x7f:\x82=\xd4U\xec\x85\xcdmn\xe0\xd7AG\x1cv\xf2\xa4\xd3\x15q\xb1\xe3\xd7\xd3\xcc\xe1\xb2\xbf[\x86\xe2\xf2\xe8\xca\xad_\x8f1\xb7\xb9\xf5K\xe1\xa5q\xd1\x88\xe4\x17\xd6o\xed7\x12\xdd\"p\xc9\xc6\xb5\x81\x95\x011\xbf5\\\xf8\xf7\x9ejd\xb0W\\\x80T$\xbc\xd7&23\xcfg\xcf\xe3\xd9\x8aL\xe0\x9d\x1e\xb5\xe3\x8b*O75I\x167\x13\xc8\xf5uf)\x89K\xde\x8c\x9b\xd2\x85\xf33;\\\xf1;')\xa9 \xbb\x8a\x98t\xf1\xf7\xdd6\x91-\x94\x16\xcd 6\xa8x\xf4\x93TE\xf0 \xbc\xd5W\xba.\xe3\x82\xd7H\xf45\x96\xa4F2n0\xbfG\xdd\xf7\x04b\xfd[\xf2\xa9.\xe3Y\xfd\xb2\xcc\xd7\xd8\xc8F_M\xde\x06\xb9.\x87r\x19x\xce\xee\x920\x81\xec0\x88W$\x9e\xa3\xa1\x87}\xd3<\x9b\xcdHQO\xc0\x8b\x8b\"Mfh\x8f\xf3\xe0\xe7*\xcfBP\x9f\xdc\xc4\xeb\xd4\x1b\xde/\xc3\xf47\xcd\xe3\xf9)\xdaF\xef\x98\xe3\xaf\xdd:\xdf\x0c\x8a\"\xe8^\x84G\xf6\x80\x91\xce\xb6-_K\x02_\xc5\x0b\xf2c\x1e\xcf\x07=\xb4F\xe1-\xc7\x19#\x0fH\x97\xe1\x1dcF?\xe4\xe8\xa42\x81\x99\xbe\xaa\xb8\x1f\xf9\x8b\xfa\xc9%\xc9&\xb0\xe8\xd3\xa5\xa0k\xb9\xc3\xa7\x08G\xf0\xaa\xaf\x8a\xfc\xd9\xaa4\x17*V\xa2^\x0f\x10\xf5z\xa0cp\xd0\xeeD5J\xa9{\xe6FcMZ\x1enm\x0ds\xf0\xed\xf6\x9f>\xfa\x02C\x1a\xf5\xcd\xaf\xa0Z.\xad\xeb \xdb\x1a\xec\xc0\xb0\xd1\x0e\xe8\x8fI\x93\xc29\x17\n\\3\xba\xf6\x87\xc1\x14\x95h\x12\xa7Q!\x99\xb5\x94 ^1\xe8\xa7\x85lv\x1c\xadI\x1dS\xa4\xe6\x7f\xb24\\6\xe5\xe6f\x1b\xe5f\xdeUnn\xacZ\nf\xd0\xd4Isk\xfb\x08T\x0dl\xfb\x16\x1a!\xd8\xe813\x88i\x9b&\xc3$\xb5\x08;\x8fH\x88\xabL\xb1m\x89\x003\xf8Vhn],\xdag\x98\xee\x04\xb7\xc3\xf0X7[\xf0.\x80\x1d`B,8\x82Y\xcf\xfe\xa2[\xa8x\xcd\xf8\x1d\xfc\xc0\xdfca\xd89\xfb\xf4\xcbm\x08\xb3 \x88\x10\xd6n:\xd7i\"\xe5\xe8M\x08\xbf\xdc\x062c6\xe9\xf8\xa78\nb\x887I;\xc4\x97\xfd+\xe0_624\xe5\xb8\xed\xb8A\x0b.\xa4\xa3\x8b\x81\xa0W]\x13\x89\x94`\xfeqH2h#*\x8b\xbdT\xb9\xe0)(\xe6\x1d\x1d\\\xb5\x9bU;\x9b\x18'\xd1\x9a\x94K\xf2\x82\x90\x82\xae\x98E`\xba\xb5\xc5n\xe2\xad.\x98\xac\xdci|\x16\x04!\xcc\x18]\xa2\x84J\xd6\xe2\xba\x9b\xa9D\x96M\x08\x1eV\xf3\x02\xfaM\x9fG\x10\xc5Y\xd6i=\xc1XTc\x0eu\xeb\x19\xd9z%e\xf7\xdf\xc8\xd8T\xfd\xf5+\x1c\xd8\xf9\xd0\xadl\xd2\\\x90\x8e?&\x1b\x9b\xf0Qgei9+{\xd9\xd6q\x1d\xec^\x82\xe2\xbc\xec8\xa6O\xcf\xec\xea\x9d\xfe\x1d\xa2E\x1c\xe9wC\xa9q\xd2\xb1]+\xa3\xaa \xb3\x10\xaa\xa1})e\x90\xfey\xe2@\x84\xdd\xb4}\x9bi}\xa6,h\x19\xc9\xa5{\x1d\xcf\xca\xdcO\xed\xa4e\x94.E\xe0]\xe3\x87j\x0bR\x03\x0d$\xf2\x0e9\x1dv\xec\x18P\xb4\x04\xea\x8a\x88s/\x0bac\x10\xb3\xb4O%!\xd64d5\\\xfdoJ\xf6oB\xc9\x9a\xa4\xcd\xa3(\x99i/\xd0\xd1\xc6z\x1aa\xda\x08\xd2\xb1qC\xd9\x122d\x06NK<\xdd\xb4w\xf4:\x9f\x93T\xc0\x9d\xedjZ\xc7\x80\xeaN\xbbY\xe5\xed\xed\xbbx\x14\xe3>~\xaf\xc5\xff\x8f\xef5\xfd`\xcc.*\xd2T@\xdf\xf3l\x95\xa4\xf3\x92d\x13]\x8cq\x16e\xb0v3BM\x86l\x95\xe4\xe1&b\"\xca`\x0b$*\xca\xbc\xce\xff\xca\x9fgp\x8c\xbbe\xd3\xde-\x99R\xab\x89P\x8a\xc6\xc4W\xec\x99\xbf\xa7\x04\x8c\x08|\x12\x89\x99i\x94\xcb\xc6\xd3T\xb5\x84e_Ok\xc3\xa5V\xab\n\x1cAB\x913\x13\xa3\xd1\xba\x19t=\xf9~u\xc2\x19\x0fY\xfcm\xf8\xcbC\xdd\xcbJ\x98\xd7i-\xe8RA\x90\xb5\x0d\xcfTM\x91 \xf2\xae\x17i\x9d\xb4\xf6\xcc\xb0M\x86o-\xf3\x9cR\xc1\xdc7\x9a\xba\x81\x8d\xe8t\x1c\xc9I\x08S\xf3hd\\\xac\x11\x81\x89\\\xb8\xb9\xabnP\xf5\xb8$\x19\xc6\xc2\xda\xb1\xa5\x1bB\x1b\x13[\xfb\xa0\x08\xc5dJ\xd4t\x03v\xd5\x08p\xa3\xe3L\xee\x00;K\x17O\xcb38\x86\xc4\xa7\x7f\x0821a\x8fq\xbd\xe8\x83\xc1V\xb8\xe7u\xe2\xcb\x85f\xcdl\xd2t@\x91\xae_\x7f{\xc0\xa9;\x8e;G\x17\xc5\x97\xb1;\xa7g\x81\xd6\x19FL\xccE\xed$\xd9\x04\x19\x15\x92\x81$S\xd3,*\x7fS\x9ei\xef)\xe4\xf0}c\x87~\xef\x1e\xf8\x0c\x03\xf2\xb3\x10|D\xb8\x86lN\xcb\xb3\xe0)\xe4\xbb\xbb\x01\x0b\x911--\xd7\xfbb\x1a\x18\xe0E\xa1\xd7_eu\xd8\x8e\x18\xb3F\x0e\xdb\xaeu\x03A\x945\x82cfi4Q\x9f\x1e\x888\xc9Hu\xd0\xafE\x11\x1cu6\x0dN\xfb\x12Ui\x8dA\xa8\x05\x0f@\xdd\xc9#6\xa4\x98j9\xcd\xd0\xa8\x9eE\x8e-Y\xfe\x85\x1c\xad\xd4\xd0\xe8?\x04\xfalxg*\xc4w\xf4V4\xfa\xb7\x9b\x99\xf7\xd9X\x06o\xf8\xd6\xe5p\xc0\xf1\xf9\xdf\x8b5T\x7f\xfd\n\xdc\x84\x10\xc3\x1e\x0e\x89aZnB\xf0!\xfbZ\x8b{\xc1\x88\xeck\xe5;\xc9\x89<2q\"\x99\xff\xed\x00\xf6\x0cr\"W<\x03Y\x87\x99\x94\xa2\x1bKs\xab\xf2*\x03\x9b\x1a\xb7%f\x0b\x9e\x85\xb0\x08\xa1\x08a\x1e\xc2\nMF\xd7h\xbdv\x03G\x10\x97Kt5T2m\x1d\xa0uYc@!\xabL\x0f\xe8!\xda\xfaI\xf9v\xfdn\x97Z\x141\xf6\xeb\xd29\xf2\x14\x9e.O\x9f\x06P]'L>\x14\xd9, \x86\xce\xb1\xd11LW\xe8\x90\xd5S(\xce\xe1\x08nx\\\x99\x93\xacNJ\xf2\xa1$\x84\xa5\x18\xbe\x11\x86\xf5,\xb50\xad\xf6\x8f\x0d\xa9\xeaWYM\xca\x19)\xea\xbcd\xc9\x86\xe9\x9b\xaa\xc8\xb3\x8a\xb4^\x15\xf8\xaa\xad\xe7b\xd9Jo4\xb22\xcbGl'\xd2\x80\xa10\xea\xd5\x8b\xa4\x9a\x95\xc9:\xc9X~\xbe\xcc\x8d{\x92\xa6~\x06+\x90n\xe9O\xd9x\x83\xdf-\x1a\x98L`\xe1\xf6m\x1bh\x13(\xdc>\xebCu\x02s\xeb\x97\xb7!\xda\xce3\xf6[\xa6\xbe9\xbd\x8e\x97KR\x06\x0e!\xf3\xa0 {h\xadKe\xb15\x86\xf2d\x8aY\"\xb2\xac~\x1bv%\x8cN\xea\x0d*\x8c\xael\x863\xa2\xb0\xe1\xac\xdd\xc0\xd6\xcf\x80\xe1\x1a\xad\xab\xbaL\n\x11\x85\x14\xedl\x06\xadcD\xb1^\x12\xe1&\xfe\xd6y\x13/\x99\xe3/\xc9\xea\x10vJJ\xc2\xda\n|\xe6\xdb\x99\xa9\xcc\xe7\x12\xc1\xcfW]\x91\xf8\x97|Y2\xf4\xd6C\x16\x9f\xaeQ|Qn\x8a\xda\xf7X\x87^\x08K\x97\x19X2\xad\x8e\xc9\xac*\xb5\x18\x96L\xaaF\xc6\x960VI\xebb\xd8\x9f\x8a\xb8\xa5\x93j\x8b\x81\xc3F\x0e\x0d\x93\xb0p\xb9X\x9e\x14V\x9d\x99\x1f\x8ce\xaa\xfe\xbdX#\xfd`\xf2A&@s2\xef\x19O\xe6\xbd\xf6\xc9\xbcg:\x99{kjSE1\x0b\xe97\xf1z\xc0+\x809d\xaf1\n\xbb\xb9\x16\xc6\xe2\x8d(Yf\xe1\xb2\x0c\xb9\x9a\x9dG\x08|\x94\x89\x1eV\xfbFX\xed\xb7a\xb5?\xc4\xc5\x80\x8a\xdb\xe4\x13\x99mj\x16rZa\xcf\x86\x891#\xc2\x04I\x8ay\xc7\x86]\x1aDB\xf0\xfa\xe7\xae\x87O{G*}\xbc\xa9H\xf9\x92\xd4\xb3\x95g\x8d\xc1&V\xd4\xca0\xb0%\x9d@9\\M\x0d\xcaeI)\xac,\xffP\xa8\xb4\xdb\x10\x12\x831\xb7\xf5\xd6\xde\xac\x1f6\xed\xb6\x9a\x1d\x1d\x94\xe6k\xbb\xe4*\xd9\x0b\xfd\xdbF\xcd\xc1\x03\n\x1c\x03\x95\xd4\x0d\xa0\xcd\xb1-\xbe\xcc\x1f\xe2\xa5\xbeV\xd2n3\x87c\xf0\xf87\x1e\x18\xcd\xa4c\x96\xec\xe7\xe0m\x03\xe4\xe7\xf9\xba\x88\xeb\xe4\"I\x93\xfa\xe6u>7\xec\xe2\x8d\xc1\xdb\x96\x96\x05\xbe3\x92\x12\xc6\xaf\x90x\xb6\x92\xdd\x06\xf4\xa8\xb0s\xfa\x8d\xb6\xdbNb\x18\xd8l$&\xc5Z\x12\xc7\xf4[\xdaO\xa3:^Vp\x0c3\xfeg\x00\x13\x98&gc\xcd\xc0[\xce\xb4G\xaa3\xad]\xbb\x8a1\x1cX`\x1c\xfc\x8f\xddF\x0c~\x06\\\x97\xcd\x00\x9e\x17\xaf\xe6\x81\x9f\xe2\xfd_n\xdb\xf0\xa2\x0c\xa3\xc6\x04bk+:W\xedn)PDv\x1b\x11\xe7\x98\xed\x8d\xc2\x18\xba%\x8a\xa0_\x86\xfd\xd2-\x12q\x9c\xfd\xd9Z\xe4\xccL\xdeE\xb1\xf9wQ\x8c\xdaLgg\x01\xd0\x7fwwCH\xa6\x9e\x07\xbb0\x83]|D\xf1\xa5\x18n\x83\xa9\xa9\x9b\xb0D\xf4\xecK\xb0M\xfb\x8aP\xcc\xa4\xa2)\xed\x8a\xa2\xa4C\x04a\xacz\x04s\x16\x8a|\xfcp\x81wK\xe5^:L{m\xeeyA+\xb7:\x9c\xd3\xde\xcc\x89\x9bAQ\xe2\xb31\x17\xc6\xba\x06\x06Z\x7f\xa9\xd66;\xfb\xcaj\xb0\x10\xea\xa8\"\xe9\xc2\xe0'\xac\xde\xb2\x1d\xf6-\x10\xd6\xf1%9aL\x0c\x1cQ\xb2\xc1\x1e=+\x92\xeaC\xbc\x94\xb4\xa1\x92\x7f5\x95\x9d\xf4Vw\xc0\xb2\xea\xf7\x1dj\xce\xd4\xe1\x1b\x9d\xf63^\xb3hMh\x80\x1a\xd9h\xe2v\x07*t8?s\xad\xd9\x85Ic`\xa2\xb5\xa5\xe1@\x96w29$\x99\xe9>KVJh\xa5r\x9a\x9f\x0d*\x9c$\x81\xab\xb47\xf4\xc0x\xb5l\x9a\x9f\x05\xd8Xs\xf8V,,\x8d\xb9i\xceMO\xf0\xebi\xa2W\xf2\x9b\xf9\x0e}\xc3q\x91T\xba`\x81=\x1b\x0d=\xe6\xffK\"\xfaV \xf8\x8f\xd9\x03nK\xd9\x9e*=K\xfa\x84Q(\xf6\xbf\xd5\x9a T\\u\xdf\x7f\x93\xda\xb0\x02\x9a%\xd1\xbalj\xd6z6\xc6}\xa5g\x89\xca\xb4\x12:\xd7CMW\x0b\x16.\x8d\x1d\x1a\xfa~\xba\xf03:\x17*\x88\xa9\x13\xdf\x9a\xa5\x19w\x07\xf6\xe4` \xce\xf1\x7f\x86\xa6\xe7\x0b\x85O\x85\xd14\x1f\n>\x89*2\xdb\x94I\x9d\x90*\x04\"\xee*0JPV\x7f\xb8)\x08{\xca\x14\x08\xcac\xc3I\xc3\xa4\xaej\xb6\"&\xd9\x8c\x89\x9c\x9a;\x11m\xed\x8a\xd7\xee\xdf\x93h\xab\xcf\x98\xdc\xcd\"\x19\xfcT\x1ax\xf2\x05\xd6\x92\xea\x0f}\xa5\x82\x81\x87\x0f\xf4\x87|~\x13\xa2\xb6\xb8\xbc\"\xa5a\xf2s\xaeP\xa6U\xfe\x1a\x97I|\x91\x12\x83S\xed\n\xab\xae\xea\xdapE\xb1\xe4R\xaeP\x93\xe8k\xdd\xb4k\xfd\xb0I\xd2\xb9\xb1\xb2\x08\xe2\xf5)J\xaa\xb7\xcfN\x0f\x03\xbf\xd6\x1c\x147\xe8\xaeO\x1b~\x0b\xc7p.\xef!\x95\x88\xe8\x86 \x83\xef\x8c\xc4bS\xa6\x13cd\xa3YI\xe6$\xab\x938\xad&\x80Z\xf6Ut\x9d\xd4\xab\xe7\xcds8\x06/\xc9f\xe9fN0\x0ca\x15\xaf\xc9}\x16C\xcc\xd0h\xe3\x08l85gy~\x89q\xdeuF\x84\xfd\xf9\xc5\xa8\xfd\x7f\xa7A[z\xb4\x07!T\xb2B\x0fS\xe1\x08*\xca\xf4\xf3\x1a\x12\xed(=7\x80\xf2\x83\\\xaa%\xa9%\x91}\x1f_\x07CQew>\xa8\x91U\x9f\xfb^\xc3\xa4P\x89'\xc3\xd0\xb1Y^\xc3\"\xdfds\x9d\xab\x10\xed\xfb5F\x9e\x94\xd4C\x0f\xbeWmm\xd3k8\x86_na\x02\xaf\xf5\xd5\x7f\xc66\x87t1o\xb0\x86\x10\xd7\xf5\xf3{\x17m\xca\x14v\x8f\x8c\xa6\xa1\x83\xaa\x01F\x93\xcc\x01\x03$\xcd0\xdeT\xb2\x8dm\xbcU\xec\xec{c\x18\x9dF'\xf1\xc6pdr\x1d\xc4\xcf}\xcc\x0cB\xd8\xc9\xa4\xa5\x8d\x88(\x10ql\x0e\xe1]\x1fr\x12joBx\xc7\xd7\x80\xa2\x17J\xc1?\x07Q\x9d\xffT\x14\xa4|\x1eW\xc4\xc7\xa08G\xb0d\xca%=~\xbc\x97*\xfej\xfa\xe6\xccT\xb3\xe4\xd8\xce7b\x14\xa3\xbb=e\xa7\x0ch\xf7\x02\x8e\xe0\x99\xe2\xa9u\xea\xbfR\xc8_\x104\xcf\xdf\xb7\x9ek\x9a{1B+'4\x8a7S\x12%\xd9\x80-ai\x89\xb3\x85\xaa\xbd\x8b|~\xe3\xc9\x18\xb2\x8ca@\xbc\x8b\xd5\xbf\xa3\xc6h_Z\xb4-;\x11\xb5\xd0:\x8a}\x94\xc5k\xfck9e\x7f\x9fQn\xce\xf0>\xc1M\x1e\xb10\xadX\x19&p\xe9\xb3\xbfCx\x11tn;D\xc2\x96\xeb\xb8\xcc|\xef\x9d\x80+\x8f\xd4\xcf\x9a\xc6p\xfdI\x05\xf1\xfa\"Yn\xf2M%\x83\xdb\xd7+\x02<\n3\xee=X\xc5\x15\xac\xf3\x92\xbe\x893\xc83\xd2(\xfa1;\x00~\x91!\xee\xf7z\x88\xb39\xbe.\xe2\xaa\"\xf3\xfbI\xa6|\x8b\xba\x8d\n\xe6 \x8b#\xc6\xfa\x848\x83?$\xd9\x1f\xd8\xdb\xc8\x0bB\x11\\\xebh8\xf6bG\xd5%u\xeb\x8a8\x86\x91\xb9\x1bsCy\xf2\x85\xbd\n\x8cCHJ2\xa7\xbfvH\x84\xb7\xe2'\xeb\xa2\xbe\xf9+3\xf9nH2\xf7\xe2|/>h&\xd8\x06\x06\x856\x9dgQ\xe6W\xc9\x9chI\xb5:\x99\xb7]L\xf3\x98;\xa8@E\x8ev\xf5M\x81\x88\xa2\xd1@\x976\xaf\x0d\xe0[@I\xa3:\x90.\xdf\xcdK\x03d\xa02\x058M\xb48\xec\x85;\xb6vqA\x84\x97\x8c+\x1c\x91!\x041\x18\x15s\x80l\xf2\xbd{\x90Y\xb4\xce%\xf9\x871\x0e\x8d(rl\xd6@h\"3\xc1p-E\xa9\xfcj\xb8\xa6\xcdz\xc4\xd9\x9c\\\xa7f\xa6\xa4\xf1\xc7\xbe\xa9\xc3/\xcc*@\x0f6u\xe8N\x9d\xa0\x9d\xf1;\xcem\xd2\x9e\xae\x9b\x9e~\x0c\xe1]\xc0\x83\xef\x9ct\x1e\x07\xe2\xcc\xc3M\xda\xb6\x80\x97\xe7a`\xf1\xbd\xa43\xfc\xa9\x9f\x8aM\xf9~l\x98/q\x9c\xc8&\x8c\xde\x18\xa0J\x96\xbb\xe0cP\xfb{\xc8\xdeb\x18\xec&goE\xca\x04M\x8b\x06l\xceoC\xfa\x99\xbe\xa7\xe6\x10~\x8ec\x82#\xf8\xa9\xbf6\xfd\x13\x9c\x0d\xee\x9d\n\xe8>\xc3\xc1\x02#\xa17\xf6\xab\xec\x7foHy\xf3\xb6|\x99\x97\xeb\xc0\x7f\x17\x84\xf0\xeew\xed>Z?m\xf7\xac\xcama#\xb20\xb9\x97\x9e\x80ng\xbbMV\x06)/\xdbo\x14K\xa7\x1b\xc5\\\x11\x02\xcd\xb5\x12'A\x15\xa4\xbc\xec$TB+\x99!\x12\xffXp\xe6\x03\x86{\x15\xdf\x02J\x92\xb6:\x84\xa9\x87<\x9e\x87\xf7\x85~\xc9\x82\xd3Rv\xf1\xc7\xfc\xbaa\x17=6\xb0\xca;\x0bD\x9c\xb7\x81f\x1cj75\xcc\x03N1n\xbb\xf9\xfd\x8c\xc7\xd94sj9\xc5fDi\x97,\xae\x14\x91\n*\xc6\x8dL\x85*\xcd@6\xa59*\xdb\xd0\x0d_!c\xe9\xe5\x01\xfc \xee#\xcf\xe6\xa7\xec&\x86\xce\xb2\x9a\xaaUL>\x93;io\xba\xb2\xa1j\xbawF\xc7'\xda\xdb;\x0b(1\x14\x8dz\xbfxM\xcfn3o9zL\xcf\x98\x87\xc7\x83_\xfc\xe9\xdfo\xcfv\x83\xdb\x07K\xd5\xcf\xe3)\x0bs\x81\x862> \x9e\x06T\xb6\xd8T+\xbf\x9c\xee\x9f\xd9}6\x0d*`?\xdd\xe6f~\x16]\x89\xfd\x85\xbcq\xf3sJ\xac\x97\xa1b\xc2\xed\xaf\x86\x8fo\xe0\xc4g\xc3\xef\xf3\xa5\x0d\x9b\xfd\xb3\xb2\x13\xc9\xfd\x17\x99\x1c\xe6\xd6\x0b\xc1[\xda\x02\x81\xd0\xa5O\xa5\x97j9\xe8\xccd\xba\xdb\xd4\xf7\xd0\xb5\xc6\xb2m\xac;\xb9\x1c\xb1\x85\xcd\xae\xef\xc2\xe2\xcb\xd6 ]\xca\x95<\xb6\x19\x93l\x8b\xdfPj\xbe\xa9-\xdf\xd0\x13\xe6\x9d\xcf\x1dLgy\x8a\xb4\xf4\x9d_\xb6\x1f\xd8F\x9b\xe0\xbe[\xe5\x15z\x1e\x96\xf8\xd7\xf0\x17\xcc\x85\x8e\x92s\x14T\x1c\xfap\xc9\xac\xcb\xf1E\x84O\xf3\xe97H\x9e\x138\x86\x9cb\xf4\xe4\x01\xe6\xd4\xf0\x13\xd8\x85\x18\x9d\xf0\x82\xe9F\xf5\x00\x84c\xd8\xb4\\\x99`b\xc8\xbaz\xeb\xa7!hr\xb2\xdf\xfa\xe8\x9bk\xa7\x15\xe3x\x8a!=8H\x8e\xc2\x85\x0b\xc8\xdb\xc7z)R\xb2XX\x8c.j\xe5\x03\xa8E\x97\xb7}oT\xf3 T\x98\xf4K\xfc`;\x0e\xfd\xad\x8cma\xf4/\x8a!1\xc3\xcd\xa4\x83\x9b\xab\xba.\x06p\x87\x19\xf4\n\xdcL\xe4_C\xf8\x96\xe27\"\xb0\xbb\xad\xf6\xcc\x82\x99]\xac\x9caz\x17<E\x8fY\x9e\x17\x81\x95\x15\xec\xb2\x88\xf9i0\x9du\xb0r\xd6\xc5\xca\xbe\xc1\xcfm7\xac\xe2\xbf\x8e9\xc8\xe3\xad\x9d\xae\xbf\xd5:B\xa5C\xce\xdc\xb3&DF\xd7\x06\x85\xf4MJ,wc\xe6{\x15\xb6/\x17\xe6k\x9f\xd2\xb2\xb9s\xb7\xcb\xb5\xc4A\xa6H\xad\xf2\xc4\xcc\xe9\x16h\xc1%\x04y\x8f\xa7\xad\xb5\x92\x86\x80\xaa\xc5\xf0\x94oE\xf0\x10&\xf4\x0f:w\xfa\xbf2G\xfaS\xcc\x85\xfe\xcd\xc6\xcc\x9e6\x91\x94({/\xc6`\xe4\xdf\xafD(\x05$\x0f2\x8b\xa0F3@w\x1b2\xae;x\x1c`\xba+&\x0c\xa6d\x19\xcfn^\xcd_\x96\xf9\x9an\xf6\xd78\x9c\xc0OBHM)\xb0\xd6p\x04o\xa3\x8bM\x92\xce\xdf\xb3K\x1c\xbf\xab\xd8\xd0\x8e\x97\xa9X\x0cd\xb6m\x9b\xac\xaf\xa3\x9a:\x1b/\x16\x04\xd8\x8c\x9eNt\x95t\x81\xd6oCX\x0dxb\xac\xa3\x8b|~\x83\xe0\xa3\xb3-\x9a\xd9\xb27R\x0c\x9b\xf7\xde\xb0h\xde\xbc\x81\x9e\x83\xa1\xa8\x14\xc2\x95\xbf\xee\x100JbT@\x0b\xc31J\x9b\x7f*S\xbd\xa9\xc5\x02\xf7\xbfOI\xc0#\xda,\xf3\xa6\xd4 Q!h\x8c\x96\x02\xcd\xc5[\xad\x8f\xe7\xaa\xe9d\xff\x90\xf7\xb2\xa7\xedE\xe4\xa1\xfaV\x9b\xd9i\x8d6\x08\xdfi\xde\xb0,Tk\xcd\x1b\x91\x81J\x9f\xb4Id\xa0\xfaV\xeb$z.\xdejs[\x89,T\x8f\xb4TWd\xa1z\xa4\x85\xc8'\xa3\x0d\xcb\xa9\x95\xde\x82\xdd\xde\xc4\xc9\xdc\xe49G\xaf\x9b\x06\xbd\x9a\xab\xcb7y\xfd2\xdfd\xf3\xbb\xcc3\xa5\xa6\x9f\x1f\x9fg\xea\xb2\x05\x98\x01\x85\xa0\x90Q\xa3E\x92\xd6\xa4t\x88\xe6\xd2\xfa\n\x99\xec~\x10aQt\xa3\xed\x0f\xf6\x99\xd3*\x8a\x93\xd3\xe4\xd3\xa2\x0b\xf164\x87\x9a\xdd\xa6!q\x11\x7f\xd3\xd6)\xf7\xc1~\x8a\xbb,0OO?\x14\xa1a\x9d\x1a\xf4\xaa\x8a\xd6PQ\xe9\xd6c\xf5\x01\xdd\xef\xa7Dg\xec?x\xcdD\x0b\xcf\xed@?\x9f\x96\x031SM\x8azJ\xa2\\\x96\xf9\xad\xddbK\xa5\xc8ZK\xac~\xab\xef\x9c\x90Gj\xb1\x8fAI\x13\xfa\xf1o\x98\x12\xd43\xe6\x92\xda\xd6\xf2\xeb\xf1\xd6\x81\xae\x0f\x86l\xc6,\x9fn\xdd\xe9\x93\xc3\x81\x0c\xf7VC5\xf5\xcdW\x11\x05\xc4\xd5\xa7\x0ek\xe8 ?N&.\xc9?\xf4\xec\x0bH\xd6{ RL-x\x0d'\x94g\x97\x1aw>>\xc9\xae\x99+\x96\xf6\x89\xf0\x1b\x17&\xc6\xf2\xbfy\xf80E\xdd\xc4n\x98e\x8di&i\xa2\xe6nU\x03\x82\x7flH\xf9\x95V\xc86{ &\xb3\x8e\xbd\x8ep|\x08\x03\xf6\x17\x87\xc0\xce>w{\xbbw\x0f\xbc\x8b<OI\x9c11\xbb\x94w\xd4\x18\xdb\xc7[\xc4iE\xbc \x94\x8er\xf7\xee\xc1\xd4\xcb6\xeb\x0b\x82\x1e\x8cIV\x93%)\xbd3\xa9\xaff-(\xcarlg\x0f\x8d\x03\x021\x90i)\x01m&\xdf\xb3<M \xc2\xf5e^\xae\xe3z\x82yg\xdb\xcf\xccP\xe2{N\x9f\xaf\xcat\xca\n?\x9c\xb2kD\xd0QS\x0eF\xe5\xb9\x12\x81Np\x8ef\xbd\x9b\x80\x05\x9a\xf3+?\xf8\"5Oz\x83929\xeb\xeb\xe2\xf1\xf5\x1e\x15\x98\xc8\xeb_\x10gk4\x94:b\xff\xcb\x83\x8ci\xd6Ki\x9bq\xeb\x85@\xb2Y>'?\xbd\x7f\xf5<_\x17yF\xb2\xda\xcf4\xbe\xa7:\xcb\xea\xbc\\\xbf\x88\xeb\xf8_\x12\x00~\xc64\xc1=\x0b\x16F\xa5\xe8\xd8\x11<\xf8\x87D\x13\xfa\xcbiC\x89-a\x1ee\xa7\xe3I\x7f,\xe6o]\xb6\xab\x1ei\x1d\xfc\x05\xfe\x93\x03\x0d\xa8\xbf\xee\x9c\xc5\xe8\xcb\xf9\xf9\x90\x12P\xc4`\xd2\x8a\xc8B-\xf9\xed\xe3q\x81r\xff\x05\x08\x8e\xb9bC\xa9\xcdu\x10*QU\xdf\xa4\x03\x95P/K\xd14\x1d\xf6\xae\xe9\xabr\x86%\x18\x8c_g\x1b!8moZp\x16\x13HP?_%\xeb\x82\"\xd4\xe0\x17|J\x13\xd8\xd0ol\x990X6\xa0 \xec\xec\x1b\xab\x99$\xcb!\xfa\x9f\x0b\xd2\xaf\x0bL\xf2\x1f\xc9\x98\x99\x19\xb06K5\xcc\x88l\xfa\x91\x0e\xbcM\xc6mF=n\xdb\xa5\x04+\xd2\x99\xb6\x8b\xe2\xcd )\xde*\x86\x8d|Op\xc3\xb1\\me\xa4\xb4\x0f\nq\xca\xacY!\xdb\\$\xc5\x8c\xa9\xbc}?\xf3\x86\x0fAQ\xf8n\x19\xb5\x15E\xc1-\xe9\x98r\x95\xf7\xe3\xe8\xce\xcew\xa7\ni\xb7\x0f\xc5\xb6\xe3\x07\xf6{\x82f<s\xb6\xdcU\xbc`~\x1b%\x7f<\x9cP\x0d\x0cz\xb7n\xa9.\x93\xe2\x84rbI\xb6\xb4\xc6\x8f2\x9b\x81\xde\x06th\xc2`\x96\xb2\xd7Hhz\xa1\xa0(\xc1\xa2\xbc\x0e\xab#p\xef\xde=\xf9'\xa5N\x92\x02w8\xf6\xe6\xf9\xf1(!\x04\xbe\x00U\x9c)78SohpD\x995\x03\x8b\xfdKI\xc9\xd5\x8bl \x18d=\xad\xe7\x97l\xeb\x0e\x11\xce\x86l\xce\x88v\xcb \xda\xafO\x8a\x1c\xd0\x08\xbe\x00\x95\xe0\xd7\xa0:[`\x14\xdc1&\x80\x036\xc0\x18\x8c\x00\x0b\xe9\xd1\xbe\xba\xbdCM@5B\x13P\xa9\x9a\x80\xaa\xa7 \xa8\xeeZ\x13\xf0\xef\xaa\xc1\xdbHm\x13S\xd8\xb5mb\xb9\xee\xe9\xf3g7M\x9f\xf3^\xc4\xfd\x97Y\xc8\xb9\xdd\xc1\x80o\xb6L\xd9lV6\xbcK\xb8\x11\xf3\xd4\x93.\xb3\x13n\x0bc\xaeK\xc4\xacs\x82G\xbb\xf3\x7f7\x941\xdfd\xe9\xcc\xba\x86\xf8c\x9d\xf7\x1c\x08\xef3\xe5C\xbaB\xb9\x8d6P\xe6\xbc\xe5)\x84v\x16\x9dd\x8ae\xd0Z`aw\x96I\xde\xf7\xc8\x1b\xa2,=\xd7\x83\x0d\xec\xba\xe3<\xb8\xe2=8\xe1>\xb4\xf0\xd0IP\xcd\xc6\x1dJ\xee;e\xf4\xa1\xd0\xdf\x1e\xad'\xb7}U\x0b]\xdf\xa9\xc7</\xbd\x10\xbcxS\xaf\xf2\x92G\\\xa5\x0ff\xcc\x9d\xff~}S\x10\xaf\xc3i\xfc'\xab\xbc\xf4\x83\xb1D\\\xf0\xbf\xd8~\xf8\x97\xdb b\xe8\xa7G\xa2\x0c\xda\x91\xb3\x8dV=\xe2\x06D\x0d!\x87\x07\x0c&l\x88\xea\xfc\x14\xbd\xe3\xfc\x00\x1d4\xfa\xe1\xe6@\xc9K\x07\x18J\xff\x18Es\xc5\xb9\x8f\x08\xc7\xab*b\x0d|\xc8\x9f\xaf\xe2\x12iB\xe0\x93\xc0\xd1\x13\x82\x0fx\xd6\x98\x84\xa4>S(K\xe6\x8c\x12\x9e\x9a\xbf\xec\x9ad\x11\x14\xbb\xa6g\xae\xdd\x81\xeat!\xc1\xb0\xff\xa8\xe3\xe5\xac\xdf`[t\xe2\xfd\x0f\x14\xfcM\xed\xfd\x9c'\x99\xefi\x9c\x13\x95w\xd0E\xd8_]#\x9b\x0cid\xe3F#\xdb\xd5\xb9\xb2[\x90\x17I\x85\\!\x99S\xfc\x88g5;\x01\xf3P\x1f\xc3\xdeb\xb8i8_\xb5VF\xf5X/\xb0Krcc\x04\x9cTl\x16M,3\xfd\xb42D\xcc\xafk\x88\x1e\x00W\xeb\xda\xe7(\n\x87\x13\xe6\xd6\xb2Ku\xe2(\x1c\x8e\xe1h8\x8f\xa0\x7f\xe6\x88\xc2\xa2\\2\xa6\x92\xb15M\xb6\xdc\xf1{lc\xca;/7Qhrv\xc1\x81\xa4\xf1\x05I\xbb\xe3`.\xf2_e4\xd1\xe0h\xd6q]&\x9f\xbe2X\xc6&r\xe1M\xb2,2 \x1c\xd3\x83\x84\xb9\xfbQ\x06\xef)\x05U\xcdX=\x0c#2a\xaa\xce\x10\x7f\xe9\xc70\xe0\x8e\x8a``\x8a\xb4#\x9b\xa7\xbe\x90`\x13\xee\x1c\xdb\x8ccB\xfb73\x9e[\xc0\x15\x1c`\x0b\xcaBkn\x02\xc0(\xed\xb3-Q\xc43\xf2\x82\xa4\xc9:\xa9)\x93\xee4\xfd\x94O_\x99\xf8o;o\x0f\x83\x15\x18RX\x0d\xcc\xbeH\x8a\xd1\x93\x9f\xfd\xcbM\xfe3\xc6\x0eu\x9d<w+j Y\xbe\"\xef\xd5Zy/V\xed\x16\xffE\x0f\xb9\xd8\xed\x90\xdb8\x1dr\xd5\xafp\xc8\xe9\xfd\xc1D\x19:\xe4\xcc\xe3\x16\xc9\x94\x1d.\xb0\xc4\xb9\xd3:\x16\xe1\x18}0\xc7\x87\x18\xc0\x98R~6\xad\x1d\\d}&61\x82-\xa2\x0b\xd0\x0d\xe5\xc7\x14\xfb\x04-\xa5O\xf5\xe9\xdfo\x85\x19g\xeb(\xfd\x95\xc7\x1e\xe10#\xed\xe0#\xa7\xc1\xb7N^*\x81\xc4\xbf\xf2\x14\x9e\xe2`\x9f\xca)\xb0\xe3t\xdc\xb0\x0d#\xb6\x12\xd2\x9c\x8f\xb8\x1c5\xe2\x90\x8f\xb8\x190\x02Z\x1e\xfe\xfah\xfc\xcd\xd8\x95S\xfe\xd7\x855\xc3\x8e{\x12\xb5\xbf\x08\xed\x19\xbd6\xd1v;\xdd\xfa\xd5is\xe2Dt\xe3_\x81\xe8&[\x13\xddqT4\xf63\x1d\x81b\\\xbex\xd9\xddI]\xc6V\xd4kc\xadx\xda3>h\xde\x0d H\xeb\xa1AE\xc7\x1d\x92\xbe}\xc2\x1c\x92\x1e\xe9\x1d\x92\x985\xf9#]~\xff\xd4i%\x05\xec&\x0f\x8e\x7f?=\xfb\xffv\xbe\xb9\xf7\x07?\xf8\xe3n\xf8\xf4\xc8\x93\xf7\x19\xdcp\xb6?\x15\x8d&~L\xa7\x0f\xfe>\x8d\xef\xffs\xef\xfe\x93\x8f\xf7\xa3\xf3\xff:\xdb\xfd\xe6A\x12\xd5\xa4\xaau,\xd7\xb6~\x01O\x0e\xf7\xb7\xb7\xd1?\xd8\xfe\xd3\xc3/0\xefo\xbd\xfa\xb7\xd4\x8a\xca\x00\xa9f\x95\xa6\xdd5\xb5\xec[ a\xcc\x9a\xc1\x84(\x96\x08\x95\x9a|(\xd8\xe6`\"\x14\xb3\xdb\xef\xa2\xef=\x8bw\xa3\x86\xcbbtR\x8c\x84\xc2\x9d\x18\xdc{\xe7\xed1\x16b\x8c\x06\xdfeLx \x80\x89F[q\xeb\xd7\xd4\x10n\xe4\n\xb3-\xdc\xbb\x07;;\x1d\xfd\xea\\D\xc8\xd2\x7f\xb8\xee\xc7\xc6\x8aC\x98z3a\xf6\xac:\xfd\xde\x9c\xb2\xf0\x00<\xb6\xcfP*)\xe5\xa6l\xd1\xbd\\]H\xe3\xb4E\xdb8\xad3\xf42P\x14\xd8W\xf4\x1f\x16\xd3\xa6s}\xd5\xc0\x0bG\xd5\xfc\x94a\x7f\x8e\xc1_il4\x06X\x13\x19\xe0&\x83$\x1bN\xde\"8\x98\xf9t(\xb6$p\xa4^O\xb3\x01{\x0f\xb4\x07\xb0\x9d\xd3R\xa1\xcb\xf3\xd6\x7f\xfel\xbb\x10\x03\x8e\xfd9zN\x0c\x9b\x9b\xb0!X\x9bCy?.\x92\xffEx4\xcc8\x00\x0f\x17\x93\xdf3\xf2\xe0\x98\xfeB8\x19\xc8\xeb\xf0$\x08\xc1c(\xd1\xab+.\xcf;\xb5\xd9\x9dp\xaf\xb6\x08\xc0\xa6\xd6\x1e\x9e\x1d\xa8>\x18\xcc/^\x8c\xde\xce\xf2\x80\x8c\x01\x1aW\xc9L\x8c\x86\x85\xccp\xfd\x1e\x14\xae \xc1@\xc1\xf6[\xcfnAuYT\xc4Uu\x9d\x97\x03a\xcatE\xc8\xb3\x8a\x7f,\x0buA\xd9\xa3\xca\x01z\xa2\xc8\xb5\x8a\x9e\xa9w\x8ep\x04\xde\x0f\x14<L\x85\xe4\xd4\x9c\xd9zF-\xde\x05\x89\xcb\x06e\x18\xd8\xdbh\xa3\x19\n~\x83c\xd1\x84\x84\xe9\x16\xc5*\xc7\xcb)e?\x18\x89\x1dW<\x8aX\x19\xd5\xf9%\xc9\xc01\x81\x93(\x94\xfa\x17\x18G\xb7\xaa\xce\xb1\x05\xf7o\xaf\xf0[\xfc\xe8\xdc\xbe\xcbEA\xaa*!\xbbst\x04WmS\x17\xf4\xef\xbdj@\xe9\x05\xe1\xc0\xd2_ahS\n\xed\xe1\x94;0\xb8\xea\x86`T\xbd\xa7\x98g\x87r\xe7m\xaf\x8f\xdf\xecvM\x1bL%\x1e\xf2w\xd84\xf7r\xdd\xab7\xdd\xc5\x9a\xe1\xc0\xba\x92)\xd3,\x0cS\xa9rs\x18\xee^[\xadr\xe2\xe8R\x0b;\xc5\x02\x9b\xc4u\x1d\xcfVJR\x81\x97y\x89\xd6e\xef\xe2\x9b4\x8fM\xf1\xb3\xd5\x81*\x1f\xf7\x91\x1a#O\x18\xccKJ\xe1 m\n\x17\xae\xc4\xe40LR vj\x80)\x0b\x1e\xa2\xf1}6\x04)\x99c\x84-e\x0d\x86\x88\xc4\xaa\x1f\x9bu\x1eq\x93\x0e\xf6\xdd@\x08\x96\x029&)\xf8\x15L\xf0\xeb\x8f\nO|\xda\xda\xccD\xe6h\x0dl\xed*h\xec}\xa6\x1e_\x98\xfb\x1f\xd0\xb6\xc4\x9c\xd5K\x12\xd5\x9d\xc2\xc6HQvt5\xdd\x1b`\x91\xd6\x1d3\xbb\xfe(\xd6,\xbf\xf6\xdaY\x83\xcf\x06XH.s\xb0\xf5\xc2\x1c\x89\x85Y\x00R\x16\xbf\x07u|\xe3\xc5E\x91&3\xc4\xa7\x07\x9f\xee___\xdf_\xe4\xe5\xfa\xfe\xa6L\xd9E;\xbf3)\xe8bpy\xa1\x89\xd2\xb8\xde\xa4uR\xc4e\xfd\xc0\xa3\x1c\xad\xf1\xc2Ao`\x16\xabl5r\xc4\xd2\xdbO\xcfy\xbb\x9b4#\xf9 \x99\x9b\xd3`<D[\xa8\xb8\xb6u\x9b0ey\x990\x1b|\x1e5.\xc9\xaa:\xcef\xe2\x0d\xe5\x0e\xb5\x9f\xfd\x90\xe6\x17\xf234\xf7o}K_\x07-O\xedE\xf4\xc3f\xb1 e\xfb#\xf14J*\xf6\x87\x9f\xa3\x0eG\xb5\xab\xdb\xe9\xac@n[\x81<\xc0su\x83\xd1\xef&\x1d\x9b\x87\x9c\xaeN\xaeX\xf8\xf4M\x04\xf3@ze::d\xban\x85\x00\x8fS\x81\x19%\xfe\xe0\x1e\xfbe\xd0\xfe\x15v\x8f]:&L\xf4|*\xe9*]\xb1\xfey)B\x88i\xe3\xe0\x88\x08b\xfb\xdaH7\"\x84\xd8\xbe62\xd0\x82)\xd0\x06\xd45\xc3\x9a\x9eo\x07B@\xfc\xb7\xa2\xe7\xb7S\xf4T\xe3\x14=.\x9cI70\xd8\x80\xa2g\xe1\xa4\xe8)\xdac\\\x881\x1a\x82}\xcd\x99\xc3gAf|\xb7\x18x\xb1U\xbb\xd99\x1c\xc3\xf4\x0c\x8c\x89G\xae0\x84\xb1\xaa1\x1a\xd0\xfb\x14\x8d\xc2H!.\xc5\xb0\xc2h\x89QeE\x0f/(\x8dK\xe8\xcaU\xc6cq\xa6\xe8\x82f]]\xd0L\xea\x82f}]Pb\xd0\x05\xad\x9b\xa3\xba\xa3\x0b\xaa\xda\xba\xa0J\xab\x0b\xba\xfa\xea\xba\xa0\xe2n\xb4<y#J\xda\x05\xc1\xf1*!z\xc8-\xadZ+\xe0\x1bp\x83\xca#{\xddT\x04w\xcdGJ\xb2\x8b\xe6CW1v[eUe\x83\xbe(\x82cWU[\x9b(A'W\xfeh\"\x94Y\xd5\x80\xdd\x8aZfSLJ\x8b\xff\x89]0\x9d\x9fM7\x8d\x16\xcb\xda\x0e\xe7YUMT\x05\xc7\x90\xf0\xed\x85qIe^\x9e\x8e\x90.+M\xc0O0b\xdf\xa3\x87}/\x95F9%\xd5C\x8d\xce)\x08\x07\xdaW\xf4?\xa2yf!\xa3hT0\xfav\xca\xb47T\xc4\xed\xa9!\x16\x1d5\xc41,h\x1b\\ 1\xd4\xfdB\xea \x0c\x06L0R\xc50\xfb\x17R1\xdc\x95\xa2\xc0|8\x96.\x07r\xe2\xc4\n\xc4\x06)^_{\xe3\xa4/\xd0\x8b\xaf\xfe]\xa9\x01\x0c\x19.\x155\x80)\x89!\xaa\x014Q\xad\x82\x80\xb1\xcc\x18\xfb]\x84U\xd9\x04h\x9a2$g\xc6=\xc1\xa0\xa4\x92\x7f\xb5\x91\xb1\x9a\xcd\xdf65Y \xe7\x8e\xa3\xb3s;Y\xa7\x9dR\x89S\x0b\xe8\x16\xdd\xfc\xeeE@\xb4]\x18{\x8bD\xdc\xef\x13<Z4\xb0\x13g\xfe\xf00\x15\xd1\x18\xe5\xe9y\\\xc7\xde\xdd\x0f\x97\xc7\xf5\x11CNt\x8b\xad\xa6^\x18\x1c\xb2]\x15\xa0\xd13HE\x8aQ!-\xc5\xab;\x99\xba(\x02\x04\xed\xdcgf\xe2\xaa\xa4 \xdb3\x9f\xfb\xe9W\x1b\xa7\xc3R\x89\xd2\x1a\xab\xfe\xfc\xf6\x91YM\x03\xeb\xa2\xc6\xb60C\xd0\x8cq[\xd99\x1e\x14\x807\x8dd\xdd\xfe\x94>\xfcN\xf1\xbf\xbc\xe5\x81*-R\xae>R\xa1\xe0r\xf9\xb9\x87a\xdf\xe9\x06\x8eVq\xf5\xf6:\x13'`{x\xb9-_\xb2d\xb3 \xcf)Bi\xfa\xdeS\xa8\xe1{8\xf8\xf6\xd1S\xd8\xdd\xad\x03 ,\xda&\xf3\xca\xa1t\xff{\xd8\x7fD\xb9\xb1=\xc5\xf2\xb1\xe5\x17\xd4q\x0c2\xab\xef:>:\xbeR\xb3\x8ebJ:?\xe4l\xca\xb6\xb3V\x91\x18\x8e\x00s\xce\xd5Q\x91\xc6I\xc6>\xa7\x9c\x1a\x87\xdd\xac$qM\xfcl\x93b|y\xca\x0b\x96l\xda%|/\x1d\xb8\xe8\xdc\xcb@UV\x91iy\x86\xf8\x98\xd1?\xd8\xef\xee\x92sS\xe9f\xcd1)6)\x97\xa43\xfe,\xec;\x92\xa2\xba\xb6IC\xd9\xe1\xc3\xd9\x0d\x99T\x7f \x9d\x9b\xd6\x03\x81\xd6\xed\xc6\x0e\x96\xeb\xa8\xb3\xa5E*gVDk\xfa%r\x9cS:\x1d\x83\xe8\xe5\xe7\xedE\xf8\xfc\x99\x8a(i\x9a_\xbf\x13\x18\x8c\x0fw\xcah\x16\xa7\xa9\xdfEo\xba7\x18\x11 S\x0cv\xbb\xb37b\xc3\x0fy\x809LK&\xcd\xecBLp\x87D\xbb\xfa\xbd\xa0\xcd}\xef\xdf\x8c\xcd)A'\xd0\x16\x9aS\xdc@m\xa7\xae\x95^#\xc7\xe0g}\xc1:\x0b!\xd1*\xc0\x18\x8c \xbe>\x062M\x10\x9f\x15\xad\xb6\x84\x02}\xc5k\xfc\xff\xec\xbdk\x97\x1c\xc7\x95 \xf6]\xbf\"P3KU\x0d\n\x8d\xee\x06@\x11MAt\xa3\xbb\x014\xd4\xe8n\xf6\x03 \x00a\xa0\xac\xcc\xa8\xaaDge&\xf2Q\xdd\x8d\x11\xe6\x90#\x8a\xc2\x83;\xb3\xde\x91\xa8\x91=cy\xd6$H\x00\xb3^\xdb\xeb\xb5\xd7\xf6\x8e\xf7\x1c>\xd6>Gs\xa8\x99\xbf\x80?\xb0\xfe >\x117\"2\xf3\xde\xc8\xac\x02 R\x9c\x1d\xd59\x12\x1by\xe3\x1d7\xee+\xee\xbdqFcp[\xfcSc\xeeB\x81M\xe2o(X%\xf9B\x8e\x97\xbe\x9cjS\xf7\xf8a\xda\x0e\xada4\xd6\xe1j\xd2\x1b^\xf7\xebc6ms\xc2#v\xf4\x88\x01\xe8t1bT\xde.\x01\xbe\x90\xa6\xfe \x9cDs\xd4\x18\xca\xf3\xcb\xa6\x0f\x13\xd2H\n\x88\x9d]\x0foX\x06\xc6\xd1\xc0<.$\x95F'A\xfb\x8b\x93\xaa7\xa8_\xc9\xb1X\xce.|Tf\x17f-\x946\xc0<<iUq&\x9c69n\x90\xb0\x1a\xc7-N\xe4\xac\x92\x1e\xb4\xe5\xc8N\n+OaY#q\xc1\xa4\xab\x18\x12\xd7\x97\x07\xad\n\xa5\xcf\xaa\x94\xde\x8e\x80pD\xdd\xa1\x93,E\x1e_\xcc\xac\xa9\x02N\x9e\x92\xc3\x96\xd9\xd7N\xbe\\\xfc}\xba\xf4}n\xbe\x04\xf0\xd9\xf7\xce\xb0\x93\xaf0\xf9\x1c\xcfw\xcf\xb0S\xdf1__>e\xbe\x9e\x9e5_O\x7f\xc7|\x9d\x9b\x9f\x97q\xc5G\xf5\xc0\xe4\xa0\xd8\x82\x80\xb2\xb9\xf9W40\x12\xd8\x0e_\xe7gO\x96>\xcf\x9d\x9eg\xb2\xd9\xef\xb1\x97o\xb0\xa3\xe2\xcb\xfc+\xecG\xec\xe5\x13\xec%f\xea\x9c:5\x7f\xfae\xd3\xff\xa9\xef\x9c8y\xb2hb~\xfe\xa4nbn\xbe\xdc\x06\xb4\xca^b/\x9f\xb07\xddND\x0bs]\xb9\xb0/\x9f:u\xe2e)S\xcc\xcd\xce\xcb\"\x1d\xf6\xdd\xef\xb2\xb9Y\xf6#\xa6\xbe\xa0\xb5\x97; C89k\x86\xf0\n\x19\xc2\xdc<\x19C\xf3\xd0:\x0d\xac\xc2\xce\xd5\xddh\x14;ns\x14n\xf5\xcd6\x8aaQ\xefV\xdd\xc5Cd\xbdr\xa0\xe2g\x9cD\xf1\x02kE\xd5\x0c<w\xd5\xfbpB\xa6\xabEy\xd2\x96\x19n$ Rr\x03\xb6)\x9a\x89z\xb7\xaeG\xf2}eAN\x0b1T\x92<\xbf\xd3\x95B\xf0\xec\xab,g\xdfeN\xa9\x8f|\x92\xce\xe4\\\xcf\x1bL\xa12H\xefzZ#[X\xf8\x96\xb4n\x99\xd7\x8a\xe5\xbf\x8e\xa9\xe4{\xe6R\xd7(\x15\x92}\xd5+7rojl\x13\xcc,|j\x85\xcb\x04\xf3\xd0A`\xcb\xc0bC\xaff\x95\xab\xc0\xa4W\x0b\x11\xb5\xf1vX\x9av\xe2(n7\x04\x8cf\xd2\xe0 v7\xd4\xbb\x8b\x83\xc1\x9b\xf4?3\xa8D\xa1Z\x04h\x10!T\x8b*rtv=\xba\xa1\xf4NH\xe2\x1f5\xc5\xa0T\x86'T-\xfb\x82OXcV\xab\x05\xb63\xc4a\xfd\x14\x1e\xffk<\xd8Z\xeb\xbd\xae\xdeQ\x86*7@\xf9%:\x9aV\x8d\x94\xacB:T\x97\xe0Sthp\x1bg\xac\xe2\xea^I>{\x96fI\xeef\x91zH\xbb\xf4\xa1\xe8\xab\x16\"4\x85b|\xdfb_VaU3/\x16C \x1bTS=\xfe\xcf\xe6g\x8f\x0f\x8a\x16\xca\xf7\xc4\xd5\xc50\x97\xb2\xad\xadsK'N\xbf\xf22J\x1f\xd3\x97i\x89\xe1m \x8a\xbd[\xe7\x96\xe6\xbes\xe2\x95ib\x8c\x88\x90\x19uY\xeb\xa8-\xf3\x04\xa5\x13jh\xcf\xd1\xcd\xc4+\xe6j'f\x1e-\xf5W\x8b\xc0a\x00f\x95\x9eo_\xf5\x0e\x02E(6P\xbe\xbdF\xb7/l\x9f\x9e\xc3a4\xbe\xfa>\x8f\xbe\x9b0W\xb5\xbd\x93n\xfdY\xe9\x04H\xef\xc8P\xbf{\x02O\xb9H\xc7\xac6/;\x9b,;\x99<\x13\x19\xf9\xf8\x1a\xe33\x03\x9e\xed\xf8#\xde\xee@\xf5\xd2\xbf\x17T\xbc\xfe\x11x\x19\xcf\xa2!Vt\xa6\xe2\xbb\xcc\xf62\x03\xe7@\xca\x9f0\xb0\x05\xf9\x97\xfcc\x9aY2\xb5\xf0A\x97\xb9\xf5t;oC\n\x97\\\x12h\xb52G,~f\xba\x02/\xf6\x0fhp\xf1\xef\xa9\xea\xfb\xd2\x80\xa0\x0b\x1e\xf1\x85\"\xa03\xe3\xe8\xd3\xd1\x01\xf3\x91\xfag\xd6\xe92\xc7\xcc\xb4\x81\x07\xa5\xb2\xe9z&#\xad\"\xe94\x13ef\xb2\xca\xbc\x083E\xbaDSm\xc9\xd0\x02`bA\xc5\x18\x14\x1c=\xda|\xe7);\xbe\x1e\xdcP,.\xb81U\x87\xba\xc8\xb4\xe9\xfeX\xad~\xa7\x7fc\xf5\xe8W4\xf1\x8d\xd4X\x96\xcaj\\\xf6\xb4\xc67M\xd2\x8c\xba\xe4s\xb5{\xde/v\x88\xc5\xd3n\x90\xdc\x9c\xfeL\x1a%Y\xbb\xd3e\xb1\xf9K\x06\xea\x95\x9e\x88\x14{\xf7=\xd8\xc3c\xc7\xeawM\x0e\x04v\x8c\xc5\xd3l\x98\xc1\x8e/\xd8\x99\x8c\xed\xbb\x1e\xdc\xe8\xb2#N\x9b_wotY&\xff?\x9c\x8c\xdbZx\xd14\xa8\x90yi\xfa\xfd\xbb\xc5\xb1\xab\xc0\xee\x96\x1c\xa6\x8c\x7fR\xde,kHu\x9c\x15Y\x17\xcfT\x1e\xce\xbaki0\xadm\xf0H\x1bH\xab\x95\xa8\x8a\xef:\xffV\xe9\xbbA\x0e\xe9\xcc\xa9;\xa9(\xfb3n\x14\xcb\xb7\xf8j\xc0\x92_I\xf1\xa8\xa0\x0c\xea!d[\x8f\xd7go<\xaf\x04\xa49%=(\xc0\x0e\xe8u\xb3\x8d}\x9e8=ka\x9f\x13/\x98\xd5\xe2Fj`H\xad\xbbK\x19o\xd8\x9e?1[1\xb4_L\xa3pS\x1cw\xfd\xa0\x9b3S\xfc\x13\xacN<^\n\xa2P>*=s\xd3\xfc\xb3*\xee\xe5\xd6%p<oz\xd6glb\x99\xb4\x89\x0d\xfdT\x85n7\x10\xa1\x90\xef/G\xaeL\xef\xf6\x1c^\x97\x946&|\x14\x8d\xf9\xf4c\xd5\xbb.\x06\xdbxh=\x1e\xf0\x8c\xcbr\xd3\xcf\xa3\x9ev\xc38\xbd\x85\xe9U!\xdb\\\xa5\x10\xfe\x15L\xf6Kl\xddW;\xe5/\xb6\xb9A;\xec\xc2db'\x1b\xd6e!\x91\xd4)A\x87\xa3\x9d\xd4\x89=\xda\xc4\xe2\x8a\xc6\x1b,\x10\xb1\xcc\xb0,\x06\xde\x90\x1f\x13\xde\xe1\x90C\xec'\xd1\xc8\xbe@\x9d\x19\xb5\x84\x8d{7\xcdx\x1c\xcf\x9bn0\xe2\xcf\xfa\x82:\x95u\xcdp\xbf)H#X\xcb\x97A\x1a\xb1#\xcd\xa9k\xbe\xfe5G8\xfa\xa5w\xe0\x8b\xafn&]\x84\xa6]]\xb5`\xd3\x0e\xab~\x1d\xa0[\xbf\x0d\x04\xb9\xa0TS\x07\xaf\xd0\xa6o\x0e\xf8\xf3\xcf\xa4\xe8Y\x11\xd6\x17\xbf\xe6\x95/h\xdc\xd4\xae\xc2\xbe \xbbvf\xfct\x15\xde\x8c\x83\xf4\x91|&\x8d\xe5\x0b\xedY\x97\xcdV\x96X^\xc3}\x05\x1cBZw\xb1\xcb\xa0\xfeM\xb5\x85\xcf\xcb\xfe_\x18:\x1a:U^\xb5\xb9\xce\xf5Y\xfa\xca/\x9b~2\xffD\xf9{>#\xfe[G\xc8s\xa9+\xd4\x11\xa2\\&O\xa9;\xdc\xf9\x8c\xf8o\xf5@\xd9\x14\xaa\xc0*\xa9Kw\x03\xd0K\xean5\xb5\xd5\x9e.\xa7d\x02\xa2w\x0b\x17P\xd4\x1f\x8f\xab\xfcO\xc3i\xe4Mt\x97\x85\xb0q\xa6\x8cM\x8bs\x95\x93JR\xe3\xa7R ~\xd3\xd2\xcf\x91\xb9\"\xbc\xeb\x8cN|.\x1f\x98?2\xdb\xe9\xaa\x82V--a\xaf\xb1Dp\xc2\xd9.\xe3\xf2\xeeDH[l\x81\xc5\xf2\xa3\xcc\xb8\xdcR\x179\x00\xa2\xab4V\x99\x0d\xed\xe8XAE\x8b\xa5\x95\"=x\xb0{\x9e\xee7\x8a\xcd\xce\xb93\xa5\xe6\xe4\x1d\x8a:\n\x16\x9b\x9dlF\x9d\xc7\xe7jJ\x8bl\xe2T\xd6\xb7,\xa5C\xd3\xacT\xa3\x05\x8eO\xd1\x93D\xd4\x10D\x94.\xc3\x0d\x89\xad\xaa\x0c\xa1S?\x06ql\xca\x1d\xdaw@\x9a@\xe4\x11cg\x04\xf75\x88\xd81Od\x01\xb8\xc3\xb2a\x12\xed\x8b-#\xcai\xbb\xb5#\x1a0\xce\xc1\xac\xef\xf8\x01\xf7Z]\xd6\xdaY\xd9\xde\xb9\xb9\xb1\xb9\xb2\xb5\xb8\xb3\xba\xb1~\xf3\xdc\xe2\xea\xda\xcarK\xa2T\xd8e|\x82\x18\x86\x16G\xac8E\x92\xba\xcd\xad\xae]i\xc5\xab[\x88\xb7:\x0f\xecf^\xd9\xaa<\xef\xb4\xcd\xb0\x90\x18j\xeb&\xcd+h\x1e\x81g?\x8c\xe2\x1f\xca\x8bL\x9ed\x87\xccOY\x18eL\xa8\xf9Q\xbfX\xe2\x94\xa9\xa8J\xe6\x87l\xeb\xdc\xd2\xb1\x97O\xcf\xce\x8b\x05/\xd6zc\xf3\xe6\xea\xfa\xe5\xc5\xb5\xd5\xe6\xf5\xd6\xcbR%V\x95\x7fE\xca\x92\x8fT)\x8eU)m\xe6l\x03=`\x90WW2\xd0\xac\xdd:\xde\xb2\xd8>a\x17\xc8\xe7!;\xc3,\x8f\x16\x8cKv>\x0b\xb31!b\x146h\x80\x1d\xd6\x84\xe3J\xd3\xe2\xa1|\x1a\xae\x8e:\nb\xf8\xaa\xf5\xcaWl\xf9@\xda\x16\x877\x14\x95-\x11a\x08\xde.\xc7\xb3]\x1f\xdc`\xaf\xc9)\xf4\xc18\xd6\x9e\xed\xb2\xa1N\xc5z\\f\xe7\x1b\x8a\xee\xc7\xec\x18\xe4\xe2o\x8f\x98\xa1\xbc\x95\x00^\xd9\xf8aA\xb8G\x82R\x0f\x8f\x1e\xc5\xf7\xc8^\xad\x89_\xe2\xfa1@\xf4AG.\x9e\xa7\xad\xee\xd6\n\x0d\xae\x8aL\xe3\xbf\xb4\xf6\x95\xa5\xd2A\xa7\xf9H\xac\x1c\xc4\xdc\xcd\xb8\xc7\x9c\x90\xe5a\xea\x0f\x04\xba\xf7\x9c\x94\x1f\x9b\x9be\xea9d\xa6\x08\xf3\xc8\xd9\xf3\xc3\x01\xcb\x86\\6\x96\xf0>Ox\xe8r\x0f\nH\x80\xf4\xe9c<\xe0\xf2\xa8\xef\xfb\xd9P~\xbe\xc3\x93\xe8\x98h\xd6\x03\x81\xb5z\x8a6\x17w.\xdc\\][[9\xbf\xb8vsqkk\xf1\xea\xcd\xd5\xf5\xe5\x957\xd4\x99\x02\xed\x8e5\xbd\xe5W\x9d\xb2\xdc9\xb1\xa0\x7f\xfc\xc7\x83iu\x1b\xa6\x96p\xc8\xbew\x86\x8d'\xdd\xcb\xc8\x85\xae\xf2H\xf1e\xc0\xbeg6q\x021\x1fr\x19\xc6\xe1\xf7}\xbd&\xec\xd2\xee\xf6\x0e[\xdf\xd8a=\xce\x06\xd2W7a\xd9\xd0 a\xc5\xa5\xc1V\xd0'\xb5\xb8\xa9\xa0Jf\xc9\xab\x0bzyqmw\xe5\xe6\xc6\xee\xce\xcd\x8ds7\xcfn\xec\xae/oO\xbf\x96\xf2\xde \xd8\x92\xb4\xdc\xa7\xd7\xc5\xf4n\xc0\xedV\xd8e^\x97\x0d\x04\x99\xeb|\xfd<\x8b\xd5\xd1R\xfd\xb3\x08\xccE \xc3@\xb9\xc5\x1c9\xc3\x06E\xaa\x83?n\x15\xf8\xe2\xcc\xe4!\xe4\x9a\xdct\xb2a\xe1)8\x90\xa7\xbb\x113\xf0\xaa\xe5\xdf\x9cU\xab]1\xbaZ\x1e\x032Y\xc3\xa8l\x02s\x7fz\x81\xd9&\x16\x13\x07\xe1\xe6\xa5\x91\x7f\xb3\x94\xdf\xce\x05\xe5a\xa3<\xcd\xc4qq\xc2\xe2\x18l\xaf\xbc\xbe\xbb\xb2\xbe\xb4rs}c\xe7\xe6\xe2:\x10\x14\x1c\xe12-\xbb5\x9e>\xf2F\x9f\xef3\x1d\xd6\xa4\x0e\xb9\xf2\x00\xebB>Msk\x9a\xb3\xef\xb2\xf4U\x96\x1f=\xdaa\xfe\xf5\\\x86`\xcau\xba\x9e\x0bN\x05\xf7\xf7\x12R\x16\x8d\xac\xda\x8bO\x054\xbfqC\xe2 \x1bRw\x0bU\xbd\xf6\xa2^\xf4\xd3IVJ\x96rB\xa6\xba\xa9\x10&\xb5%\x1bg/\xae,\xed\xb4\x00k\xc5z\xbcJFy$\xbf\xce\xc5\x01\x9a\xb6\xdf\xafD\xa2\xab\x1f\x9eq\xbe-_\xd9\x81\x826\xe5xEa:b\x87\xa9\x86-\x0cr\x8aa)\x9f(9\x92\x82\xc4\x1d\x07\x12\xa7>\x177\x81\x8dc\xfdv\xfdX\xe5\xa9K3'Q\x1c\xbeu\xbc\xf5\xed/6\xde\xb2\x1a\xc7\xa9\x1a\xc7\xa5\x02 X\xadm\xb9\xa5\x027\xedr\x8b\xc2t\xb9\xe3\x84\xa7\xe2X\xb5U\x88\\/\xe0\x025~(F\xf5C\xe6\x84\x1e\xfb\xa1\x18\xcd\x0fK(\xd4\xa9n\xcd\xb9\xad\x8dK7\xb7V^\xdf]\xddZ\x994W#/\x98\xa9V\xd4c\xf3\xb5P+\xcd\x02\x94o\xa1\xb5Eq\xca\x99\xcb\xd2\xd3O\xdd\xf1\xbc\x1fv\xd9\x0f\xd5\xc8\xd4\"\x88\x115,\x02\xc8\x1b_\xfd*83C'\xdd\xd5\xc9n\xdaz%\xbeyK\xb1\xb4\xb8.H\xdd\xd2\xc6\xfa\xce\xe2\xea\xfa\xcd\xdd\xf5\xe5\x95s\xab\xeb\x13\x96\xc6r%Q6\xc5\xa8e\xa87cB\xa0\xb4<\xe3\x85:\xd8\x98_\x83)kxD+\xd8E 1\x1e_\xd2\x98\x94\x1d\x05\x15I\xfd\xb3y\x0f\x96\x9cP.4OdT\xb2\xa3\x16\xb7$\xe48\x99\x14f=\x9e\xfa \xf7\xa4u\xcfB\x03\xd5\xba..\x97W\xb2I\xe6\xab\xc1\xad\xb2\xe5\xc2|,\x0c\x0fM+\xed\x83W\x99\xa3\xdc\xac\xa2\xe7\x9a\xb8\x98be\xce\x8e\x9c\xa9\x10\xf33\xe6E\x1c\xf0\x91\x1f\xf8if\x99\xfd\xee\xfa\xd6\xca\xf6\xc6\xda\xe5\xc5\xb3k+\xd3\xce\x7f\n\xfaZ\x8fQ\x81\x10\x07\xdb\x16\xff}\xfdk2\xd0\xea\x1f\x18j\x81\\O\xbc\xa3\xab\xc9}.~wo\xd0c\xa3\x7fb\xaa\xd2\xeb\xbdq\xc9\xe4\x9c\x03\x99\xf9\xe2K\xec\x9a\x98\xc7\xd4\xfb&\xd9\xc3\xd4\xfb\xd6(\xd7yZ\xae\xc3;f\xf7\x8b\x93B\xd4\xf3Iq/J\xb8\xd6\xdd\x87\x1d\xd6oW\xe4\xeb\xb0\xd3\xc5\x02\xb7\xd0\x03~\xf4#\xa1\x11\xd0F\x1aL\x1e\x89L\x19\xf6\xa3\x1f\xd5\xe5\x01\xac\x84t(\xd7\xfc\xc2\xab1\x12\x82y\xd2\xe6\xd7\xa3\x1b\xd2\xb79\xd4\xc6\x9dI1\x0b\xcd\xee\x81\x926\x94\xfdn\xf1\x1a\xd7]\x81\x88\x1f\xecLm0\x99\xf9K:\xed\xca\xf7\x92\xcf\x1enF~\x98I\x0f\xfa\xc0Du\x17\xfc\xee\x0cs\xcdW\xd8\xdb3\xaco\xbel\xc9p\xbd\x04\xc7\xe7\xe2y\xe9\x0b2u\x8bb\x91\xd4A\xebM\xbe>\xc5V\xadaR\xd6\x8c\x8a\x85\x12\x13\x1c;\x81\xef9\x99\xf4\xe9\x8aK\x1f\x84\xd6\xe5}K\x15\x9b\xc6\xb3-l\xcf\xbfR\xea\xbd\xd6w\xdb\xa6h\x1dI\x94\xb72\x9f\xb9\x99\x81{\xac^\x9e\x9d\xc3\x98\xab5Y\x0de@U\xe6\x0b\xa9#\xe1.\xf7\xc7<\xe92\xf3\x96\x84L)\"x\xe2\x11|\xcc4*!\x1c\xf9BQ\x0b_(\xad\x0cM)SN'Sr\ni\xcf\xcfw*\x8ew\x96<25\xbe\x93\xf4\x909\xfd\x8c'k\x91\xe3M\x13a \xafk\x93(\xcaVC\x08\xc4>C?\xe9w\xc9\xd1\xf7\x19?\xf4\xb3\x8d\xc5<\x1bB\xb2\x98<\x1b.\xca\xde\xd2\x197\n\xfb\xfe O\xb8\x80Zj\xc6 7)\xdc\x16e*(is\xee\xf9\xa1\xd7\x86\xcb\x0f\xe94\xdeT\x0d\xf2\x1a\x9dan\xb5\x16%O\x94\xa5\xa6\x99\x93\xf1\xcd \x1f\xf8\xa15\x0eD\xfcD?u0&W_\x12\x87t\x81Ez\xb3\xeay\xb7\x03\xcb\xd2\x185\x96\xf2\x80\xbbY$Z\xb4\xbf\x0fY\x93\x95\x16r\xdd\xd4\x0ft?q\xe2E\xdd\xbf\xfdQ\xae\x89\xee!U\xdaa\xdd\x05\x0c(v\xb5\x8a\xf0\x91B\xf8\x13\xa7O\xe2\x9c\x19>\xbc<\xd4\x9e?A\xb2M:\nt\xe2\xf4)\x0c\xca\x0dH\xe6\xd90\xb0&\xb7c`C(\xdbc\xd3\xed{&\xa3J(iWQW6\xbc#\x89\xea&$\xe80\x91D*\x05@\x06\xd1\xdf\xfczX\x93K\xa2L$x9\xff\xa7M6\nj}\xaf\xa7\xcfzY\x93\xf1\xb2Y(s5\x89\xb5\x18\xdb\n\x9d\xacL;\x0c\nQ|/\x1e\x0d\xd9\xd6\xa7\x85\x16\xca\xa5\xcdR\x14\x12\xdc\xd5r\xfaMz5?\xddX\xdc>\xd1\x91 \xcd&>\xb2\xc1\x16\xd8\xf5\x96%\xd3b\xcb\x12\xa6*\xd4\x82\xbc\xdd\x11r\xc8j\xd8\xben\xd2E\xa4]v=\xbbA\xd2\xc1\xc0F\x04\xec5\xe6\xcb\x07\x99\x13\x94\n\xb3![\x99\xfd\xdc\xebdq\xb5\xae5:u\x9c\xcd\xcf\xd2F0\xc5\"8\x0b,\x98\xc9\xa2\x8b\xdb\xe8=gHS+NB#\"\xf4\xeb\x1c\x8d4U\x98\x1a\x0b\xfci\xb0\xc0\x81\xb7[j\xb1 7O ~eX \xc3\x98-X\x907aA\xca^c\xd1\xf3b\x81\x0d\xcb\xd5\x96\xa5So\x19\xfb\xa6\x89F]\xed\n-\xa5#\xca+$\x84d^r\x14d\x8e<\x00\x90Kq\xf5;\xe8+$\x1b\x9e\xc3\x11\x16\x81\x8a\x87\x98\xb7\xf2\x14\xf7\xeb!\xa7\xfa\xaf2\xa9\x97\xfeT:'kT\xca\xc9\xdae\xc1\xcc\xf6\x85\x8d+7\x17ww.\xdc\xdc\xdc\xd8\xdc\xdd\x9c\x90oY\xfb\x95e3\xb1-\x9f\x9f\x9e\xd1L\xca\xb3v+\x1dF\xfbe\x84\x17\xa8Q\xda;\xfbx\xc4P6\xb6V\xaf\xad<\xefH(B'&Op?\x89F\x17\xb7;BW&\xa5\x80\x90\x0c\xc4\x80\x8b\x1c\xc1-x8CV\xbe\xe4\xc4\x1d\x1c\xf8n\xd4%\x1ef\xc9\xe16\xbf\xdd\x9e6\xe3\xba\x96\x0dP\xbaN\xdee8\xb0U\xff\xe4,\xaf\xcf\xd6\xe46H$t\xae\x06\nIe\x159i\xc1 \x17T*\x939\xcfjl\x0c\x95T\xab2\xc7H\xe9\xa5\x1d\xbf#W,\x92[\x1c\xda\xcdG\x85\xa9\xac\x94\xdf\xd4\x9a\x97\x87\x95\xc2}\x8aq\xca\x93.\x86\xa9\xb9R\xebFC\xfca`\xaf\xab\x19\x96u\x9aLm|\xdb\xccET\x0e\xbbL\xd5ot\x9f.xe^?*H3\xb7P\xce\xa6\n\x8f\x93\xf5\xb2\xc8)?\xdaS\xf7Ls\xa7S\x1e\x96\xda\xba\x1b]\x98j[\x7f\x98\x98\x11B\x066\xc3y,\xa1\xb7\x10\xad\xa6?\x8a77\xc4\x9f\xf3/\xe6D\x86\x92Q\xdb\xcfaX\x97,\xd9\xa9\xf1u2\xe7\x10\xde\xeb!o\xfd\n\xaa\x17u \xcfH\x95\x14$z]$\xd6T\x96\xc6\x81\x15\x96\x88\xd7\xb9\xd1-\xe7\x05\xac[\xaa\xb5\x8d\xf3\x1b\xbb;/f\x81,\xc4hf\xdf\xcf\x86\x97\xf2\x0c\xaeG\xa6\xc8\xa8h\xc9\xe4\xd5\xf8\x8c+\x9f\x81\xc0\xb2\xda\x10^\x0b\x9a\xd5\x98N,\xb8\x96L^\xc0\xa5\x8d\xf5s\xab\xe7w\xb7V$/z\xde\x85l\x1a \x18\x16,\xdcG\x8d\xea\xb7+\xc0t\xc1\xf6\xb8\x04\x83\x94s\xf2\xd3E\xb3x\x90\xd4\xad\xfaO\xaf`\xa9\xe7\xa2d\x0bLY\xe0\xbe\xa4\xd2\x0f\x94\x98\xee\xd9\xc3ug\xc4S\\q'2}H\x90`\xd5a\xa9\x9a\xe5\xb8i\xdbS\xde\x0e\xdb'\x89t\x15)\x08\x95\xa1 o\xc3),D9J\xb4z\xbe8\xe2\xafDV\x1a\xab\x04B\xf5\xc7\x8a\x9a\x05\xcb\x967\xcb\xe2\x01\x19\x82\xec\x90Z\xe5\xe8\x08enr\x1f\x8a\xbc#\xd9\xa9\x83p\xa6v/'\xf7\\\xd3\xf1tb\x0b\xd2\xa2l\x0f \xb4\x8d\xec\xe4\x80\xecT\xfb\xcaQh\xe4\xa05?\xcd\x88\x90\xc5\xca\x96\x8b\xe7\x16\xb4\x18\x12\xb6\xa2\xa9\x84-fD\xaa:\x81\x8b)\x9c\xae\x17\xbaXIYt\xac\xe2c\xb9T.\xc9T\xd2\x95/%\x86\xe0\x1b\x9b\xa7\xc3vn#\xb9]\x9c\x17\x91\x92\x12\xeb\xe1o$\xa7S#@H\x11\x80\xce\xcb\x8d\xc24\n\xf8\xcc\xbe\x93\x84\xed\xd6\x95\xc5\xad\xf5\xd5\xf5\xf3\x0b\xcc>2?e\x1e\x8f\x13\xee:\xe00\xeb\xb1}?\x08X\x8f\xeb0\x1e\xed\x91\x19\xf2\x83\x8c\x8d\x9c[Q\xc2\xc6<I\xfd(\x9c\xb1]\x91\x99;\x06;b\xd6\x0b\xc9\xd3\xa2\xa1\xa4\xe1_\x06\x0d\x9b\x11\x82\x7f1<g\xa5\x0dz>\\g\x9aB7\xe2;\xd3\x04\xbb\x11\xe7\x99\xce`,I\x98?\xa1W\x1b\x8f\xc1\xbf\xca\x9b\x039PF\xa9\xba(\xd7\x95T\xd0\xbc\x97^b\xed6\xbcp\xa1$\xe3(\xe6i\xab\xd3\x99\xd9\xe3_h%\x99\xf4~v\xa30s\xfc0U\x17N\xb2\x87T\x8bI\xdc\"w\xeb\xdf]\xe5\xc1\x98+I(\x08\xa2}\xeem\xc3\xa8\xba,\xed\xa8\xe46\x99\x84\xfb]f9\xe9\xba\x1d\x1f\x9e\n\x95\xb9\xcd\xec\xf4\xc0\xaf\xa3\x07\xddI\xa2B\xfdbh|u\x92\x81\xbc\x08L\x0b\x07\xb79V\xcd\x15f\x8a\\\x9f\xbb\xc1^\xab\xfes\xa1\xe9TMEtT\xa16\x18\xfa\n\xaec\xe7~e\xc6\xa3\xfa\xecL\x9f\x84\xdc\x1c\xf14\x1a\xf1)\xc5fSG \x1e/\xe1\x9b\x9f\xa4Y\xbb\x06G\xac\xb2t\xd3.V\xe4\xbf\xc9\xfc}\x82da3rh\xa2\x84\xb8 \x92D_$\x13\xa9\xeeg1\xa6\x06\xe2\x0b\x9b:\xe3\xa7\xe2?\x10\x1b|\xe4H\xa6\x8c\x95\xcf\xbd\xcf*\x97#2\x9b\xf2\xce\xcc\xc8\x89\xa7h\xa5\xd4\xd2\x91#!\xec\x7f\xddv\x1b\xaf\xd1#s\xb6\xad\xd7\x87\x0b\x99W\x19E\x84\x8a\xa2\xf0\xa5\x11A+F\xe5]\xff\x16\xfbFhD\xfc\x80\xbb\xb9\xf4,\xb0j!]\x95\xe5f\xfe\x94E\xd7\x90\xd6\xceH2\x88\xa4\xaa($\xcd\x8aB5^\xb8\"\xe1\x17\xe3\x99R/\xad\xa0\xb7]\xcd\xcf\x9a\x04)|\x9aj\x9f\x83\x89\x94\x1a\\\xe7\x8e\xe8\xa8\x0c\xd6\xd90\xaayr,\x97%\xa6x\xc1M,C\x968\x0d\xcf\xc9\xd6\x1f\x95\xe2\x80/(\x03\x90>\xeeb\x9f\xaa_\xd4\x89\xae\x97\x1eJ\xd4\x7f\x81%5*\x88\xdc~+hb\xfb\xe5W\xdd\xca\x1d\xe0VMS\xf6s_K\xc8x\x1b[\xa9\xac\x0d\x80\x93_\xcd\x1by\xb0\xa3\x0b\xcc\xb1\x83K\x0f\xde\xd4\xd8(\xcb\xaf\xe6X^\xbf\x95rJ\x1d-\xfa\x86P\x89/\xe3\xf1\xd2\x0f\xebnB\xd3\xa1\x94\xd8Vn\xe7N\xf0}~\x08(\x86\xbe\xd1\xf5\xaa[*j?\x917G\xdf\x80\x15\xa4#K\xdba\xfb$y\xe7:2>\x16\x13\xfd\x8dj\x05I>\xd3\xb7\x10\x16{\x82\x02\xf1\xf3\xa2\xfd0\x98\xd2\x1d\x89Y\xc8emj\n\xfd+\xf4D\x9e$\xea\x02\xb9Y]aZQ\x9at\x8d\x8c\x7f\x8e\xa94u?\x10\xf8Tp\xfb\xc95\x02I\x9f\xfb<s\x1b\xdc\xd2\xf5OF \xb6;\xe8\xc9S\xfc3\xd6\xb8~\xb3\x0c\xac\x7f\xbe\xcc\x01]r\xd4\x84\x04p\xf2\xdd\xac4s\xb2<\x95\x89\xeagg;\x85@\x97\xc7\x9e\x93\xf1\xb5\xc8\xf1\xfcp\xb0-\x0b\xb5[\xca\x85\xb1\xd3\x05o\xc4\x9da\x12\xed\x87+I\xd2F\x9am\xc8\xf7\xa1\x8fv[p\xb84u\x06\xbc\xdc\xdd\x0e?\xc8:\xe619\xde\x98\x85\xa8\xfcK\xa3<q\xf9\x02k\xc9\xe5lM\xacs\xb7\xa3\xe2\x98\xdbG\xccLq\xb2XX\x8b\x97^\xaa\xa7Tu\xbf\xe6\x0c\x9d\xf8\xa7\x0f\xdc$\xc5\x1a\xff\xe4e\xdd\xee\xd6Z\x8b\xf9a\xf1\xae*{M6&\x16zwk\xad-3\xee\xc8<\xdf\x9e\xf2\x10U\xe2\xe7\n\x84\xcf\xb6[\x8e\xd0\xba\x87 \xef\x83\x83\x91\xbc6L\x17Z\xe54\xb1n\x04N\xe5\x1a\x04\x9a\xbd\xeap&\x88\xe0M-Sv\xdae\xd2\xbf\x1a+H\x81+\xad\xcd(M\xa5c\xe8\xc8?\xe0\xde1\xfd\x1a\xbb\x9f\xa69\x7f\x8d\xed\x0c9\x8b\x05\"\xed;)\x13$\x88{,\x1a\xf3\x84\xc1x\x8f\x1fg\xbd<c\x0e\xf8\x92\x163:\xcaZ\xc7\x8f\x8bE\x92\xf5L\x14\xf2\x0c[\x1arw\x0f|\xda\x0f\xa3\x9c9 \x87\x98\xb4,\xe3\xa38\x93\xb1\xdf\x91\xec\x07\x86\xc3\xd4pfZS\xa3k\xf9\xf7\xbc\xa8[\xfe\xd9\x1e\xbco\xfa\xa9C,1\x0d\x1d\xd4\xb0\xde8\x82\x7f\xf6\xa8q\xdbO\xd2\x97\x99(\xf1\x07~(\x11\xca\x825\x00\xfd\"8\xe3O\x873n\x12\xa5\xe915\x88\xf6\xd2\xc6\xd6v\xa7\x8c9\x02\x014\x100D\xfd\xeb(ku\x8a\xa0\x86\x91t\x1c\xcf4\xaa\xc9\xa2\xb5\xb3\x91u\x0bD\xe2,\xe5\x89@HX\xffT~r\xa3$\xe1n\xc6\xbe\xbd(_l=\xb6\x14\x85Y\x12\x05\xc7\x16\x85\xd4r\xec\x0f\xbe\xcd\xf4c\x9b\xff\x08\xd0\xaa\x8aJ\xfe\x8bF\xa5\xe9\x92\x11\xe3\x1f,\xf6T\xc5'\x0f\xe3\xae\xf5\x153\xfc\xab\xe1\x8ei.\xb7\xb8%\xa3>\xa0\xc4v\xcc\xddv6\x93 ~'\xf4\x8a< \xda\x9d\"\x93\xbf.\xb6\x9b\x04u6\n\xfdk\x1e\xbbL\x14#8\xac\xea\xa2[7\xc6\x00\xfe ,\xdc\x0d\xb8\x934\xbc\x8d\xa1\x7f\xcf\x83dB\xfe\x0f\xa6h3O\x82\x05[\x9e\x16\xfc\x13\x03\xde\x96^\xd1G\x1a\x1e<\xd4?\xf5 \xe9j\x98\xf1\xc4\xe5q\x16%\x0b2=\x0f\xfe*\x96j:\xf9\xb5\xfc#w\x8du\xbf\x1a\xef\xee\xf2/\xe1i\x1c\x85)'C%\x9f\x7f\xfbcu\x13\xee\xf10\xf3\x9d ]`\xad\xd4\x19qEg\x1b\xe2\xe0\xf4O\x91\xb7&\xa7\xf6\xf2OP\xc98[\xa8\xbe\xe2y+\x8d\xc2\xee\x1f\x1c\xff\x83\xc9\xe4\xad\xf9\x94\xdc\xed\xccdC\x1e\xb6\xfb]\xd6o\xb8$\xb0Bj\x96\xc9r\xc8\xa6\xd5\x8c\xb4@x\x1d\xa2\x1d\xcc\xd1\xec\xb2V\x11*\xa4i\x8a\xf9\x08zG\xab\xe1\x0d\xf4\xaa\x1553&Nx\\N\xdf\x01r\x95\x11G\xfcg\x01\xc4p)\x90Ws h\xdf\xa8\x92\x1d6\xebLdT\xd9a,\xa8\x85\x90\xb5n\xc2\x02\xddT\x93\xbb B\xf8\x04\xbcQ\xae#\xb6\x04n\xfaW\xb3I\xe4\xab\xcd\xff\xb9V\xb7\x0d\xaa\xdbh7\xe3N\xb7\xb9\xc6)\xa2\xce\x8c_\xfe\xddm\xb2\x0c\x97\x7fU+qe\xb8pc@\xcc\xd4\xfag\xbb\xd9\xb0\xda5i\xe7\xd3\x04\xd8L\x8a[113\x8d\xd9!u\x10N3v\xd5\xa3\xd5B\xb3\x0d\xd8\xf6S\xb3\xb6\xbc.g<\x98 \xd1)]\xf0nQD\xe6;m&=\xf5\x98\xdc`\xed,\xa2\x88j\x1e\xa0\xa2\x9b\xfa-\xfb\xbf\x90\xb5k\x82\xe7O\xf5\xab \xca\x99\x9f:&\xe7\xab\xf2 \xfa\xed\xda\xe5\xbe\xace\xf3\x85\x9e\xa4\x1a\xf32\xab\xe2M\xdf\x8e7\xf6\xba\xea\xdai\xbaH\xb9t\xe6EG\xca}\xe9x6j7u\xdba\xfb\xf4 \x12\x9c\xa6\xee\xa8N\x9c\xb0\\R\xc9\x00NZ\xc5Q\xa0\x93\xb3\xb3\xb6P\x04\x00\x11\x0bm\xaa\xc6pr\xb6\xe6\xecXB\xb9\xfe\xe9\xc5\xb3}\xcd\x01\x18c\x95T\xb2\xda\xc8\x80gk\x91\xeb\x04 `-4\x9b\x03\xb5\xf7\x834K\xc4N\x92\xf2\xab\xceHU\xed\xb4\x0bi\xa9q,\xbf}bf\xec\xd8g\x0fw\x130Tk\xfb>|op6\x85\xf3S\xb9v\xc0U'^w7_\xa2\x96\x169\x9b\xe9\x87`C\xef`E\xb9\xee\"^O\xe9\xb9\\#\xac\x06*}\x99[\xb9*\xa0\xf2\xb7<\xb7\xe6\x9cFh9\xda\\)\x1f~\x97\xf96\x03\xbf9\x0d~\xfd\x1dIh5\xe2\x87U#>{\x8d\xb5\xa3&\xfb\xbdR!:\x02w\x9f\xab\xd8n\x12\xb4[\xe2CU\x89\x08KV\xfd\xc2\xa8?\x93'\x81@2x\x81]HH\x99\x8a\x84#\xe7%\x04\x03\x89ED\xfd\x06\x9f\x9f2\xe6\x0fx6%\xa6q\x15\x0d\x83\xdf\xdf\x94\xf6\xfc\x05\x19J\xf8\x0d\x9d\xa5v\xef\xe8*\xe1q\xde\xf6\xda\x9f\xf4\xf0\xf0\xbf\xbc\x87\x07e\xb0u\xb1~\x82U\xdb\xef>e\x00\x91\x8e\xad+\xc5sE]\x96\xce\xecn./\xee\xac\xdc\x84\xd8\x86\xed A\x0df\xef\xe0\xb9\xf1j\xb4J\xa1\x04\xd0P\n\xdc\xeb\xce\xc6\xf9\xf3k\xd3\xf6\xfa\\1)8U\x89\x19\xb2\x8a\x05;\x82\x02=\xa2o\xc2=\xf7\xf3\xc9\xd3\xd7\x0d[\xb5\xd9\x1f\xa6\x91\xad\xa7\x90o+ \x16\xea\x8b1e-\xe0\xf8\x15\x8d\xe7\xd09\x9f\xfb\xbe\x91C&\x1b\x95c\xb4[xtNa\xb2f%\x84\xda\xf7C/\xda/.3\x86NZ\x93\x00\x0d\xff\xb2\x99\xc09\x8c\xf2L\xc7uKJ\xbe\xccy\xbc\xe6\x87{\x17\x9ct8\xcd\xfd\xd2\x04\x1b]-\xf4K\x98|\xc4\xae\x9a\xfc\xb6\xb5\x1b[\xf2\xcc\x99\x90\x06\xc4$\x1d\xdaq\x06\x0b\x85\xbb\x10\x1dJ\xe5\xcb\xdd\"\xd1\xacEUq\xa4\x9a`UU\x00\xf4\xb2-|\x07@\xdf\xb1+\x17\xce\xd7'W\xff\xf6 \x89\xbc\xcc\xd8v\x93(\x08v\xc0\xf5.U\xffPw\xe0\xf2[\xc2\x1d\xefp'\x82r\x8a\xb8\"\x1c\xae\xd45!X\xcd\x0e\x8f\xfd\xda\xb8\xf6\xbe5\xf2\n\x0c-'g\xb1\x97d\xaej\x9c>AR\xa34\x86\xb6c\xde(\xdf\xa0l\x07V\xac\xe8\x7f}X\xc1\xd4*\xc5\xe5e\x9cH/\x0b\xc67\xc9\xcf\x06\x9c5\x81&5\xc4\xbdLKp+\xef\xf8c\x0f{\xd8h-\xafU\xde\xc2\xcfT\xee\xe3\x08r\x1f\x17\x9e\xf6y\x8d\x99\x1e\xb2*V\xa9y\xd4\xe9\xb2\xb0\xdd\x91\x8f0\nT\xf4\xc3Ag\x8aG`\xc5\xfeG\x13#D\\Yj\xae\xe1\xd6 0O@k\xa14\x10Bi \x84\xd2\xa0\xa1\x9eV\xa6\x13!\xef\x8b\xe3#+\x9fK\xa2\xd1j\xba=\x8c\xf6\xc3\xef\xf3C\x89\x88u\x0d\xc8\xdca}\xf4:ls\x7f1\x8d&\xeeO\x8e\xa5\xf1\xd8\x19\x16O\\\xa9\xa1,\xd5\xb4Rr\xc0n\xa7\xac\x9e:B\xcc\x12\x93\xef\xc8\xa4\xa2\xf5u\xe7\xe5\x9d\x8cyX\xf65\\\xbb-\xe3\xd0\xe1\xcaA\xd3\xa4M'\x83v\xd9Q\xe6Iw\x16\xf1\xd7P\xaaTs\xd5\xf6^z\xe9\xb9\x1b\xac\x8b\x84\x98\xea.\xbe\xaa\x07N\xff\xb2Z\x95hT7\xc4\xc3\xf4\xb7\xf9j\xa4\xd6\xd8\xca\x8a\x8b( \x107\xa1\xcd\x9bYTs\xfdd\xae\x9dp\x1eIE\x06\xafs\xfaTW\xe3T\x86\xb5\x0cf\xaa95[GX\x85RV\xe4\xb2z\x0c\x9f\x92`2\x85\xe6`z)\xa8p\xa7J\x9f$\xbbh\xc2\x8f\xb1\xc9\x06\x04\x0f\x90\xcc5\x1c\x8d\xd6\x11\xf08\x13\xc4\x8c\xe9\xcc\xf9\x91\xa9\xd8\xe9J\xc4o*\xd1L4|\x9c\xf9w\xfah\x12\xfd\xd3'\x9e\xebwhT\xba\xdd\xf6\xf1\x9b\xc7\x07]\xd6b\xad >\x1c\x13(\x94#\xe9\xa8o\xe8\xa6\xa0\xa2\xbb%\xaa\xda\xf6\x1b\xe6\x18J\xfe\xdav\xba\xf0\xdc@h\x8eP\xdby!\xe7rl\x95\x9f&2\xf3\xa9,l\xac\xe2\xf7\x8b\xd0S\xe0\x9f\x96\xeb\x043\xa9Y\x03\xd7xi\xf9i;\x01\xfd;0Z:\xef\x80\xe1:D\x1a\x0c\x92\x11%g\xc7e*\x92\xa5-t\xacq\xddF5\xb2\xe8\x8b[\xb9f!A\xca\xbd`&\xec\x87\xc5Zn:\x89\x98/\x17\x92\x8cY9u\xd7-\x0b\xc8G\x1eg\xb2\xa8\x96\xac\xff\xd68\xc4@\xae(\x96\xf7\xa7\xb1\xd7O\xc3%d\xbb\x8aWP\x87\x1340\xbb\xe5\xa9\xda\x8d=\x9e\x01m\xc4\x94f\x04M\xf0\x8d\x97\xaf\xfeC\xe1U3\xe5\x97\x84|\x14\xe7\x19\xf7\xb6\xb3\xc3@\xe6#\xae\xad \xd6\xb4\xe5\xf4\xd2(\xc83\x95S;\x99\x89\xa3T\xc6\xea\xd4W\x93\xf1\xf7\xec5v\xbc\xed\xe4Y\xf4#X\xc7\x1f\x0d}\xcf\xe3a\xe78[\xa8\x02:\xc7\xeb\x99O\xab\xef\x1fp\x0f\xf7\\\xbc\x90f\xafidx\x99^\xf0U\xf9\x1fG\xf0\xe0b\x91^\xad\xa7\xd221\xbdm\xa5\x9cN\x97\xb5\x8f\xc8wTZi\xe6d\xbe\x0b\xae\xd3\xe5\x81\xbd\xf4\x12\xf3eZ\xe0v2\x13\x8dy\xd2\x0f\xa2}v\x94\x15\xff\xb8Z\xf9\xd7\x1b\x9d\xc2\xdd\xde>\x17=\xd3IX\x88\x14\xc5 \x960\xc0\xf3\xdaT\xa9\x93\x8d_\x88\x96-\xb0\x86D\xe7\xba\xec\x02\xab\x89q\x13\xbf\xcaQ^`\x83\x06,.\xb3\x9f\x056\xae/I\xa4\xae\x056\xb4\x13\x1f{\x1b\xa5{\xe9\xfa\x95\xa8r\xa6i\x1d\xbf\x18\xc3\x9e<i\xd1H\x83\x08\xd1\xe0)R/3LIX\xf4\xaf\xec\xa4_R\xaf\xb2\xc9\xea\x15SDfr\xba\x02\xa6o\xe0\x1b\xd5,V\xacR$\x939\x16\x8fP\xb4\xe0\xb9\x9f\x1blA\xbe\x99W\x06\x1d\xcb\x9c\x81\x00\xcb\xdc\x8e\xf6\x97uY\xf3R\xd6\xab\xb1/l)\xb1\xdb\x81\xed\xf7\xfcK9\xb9$\xe4\x89\x98\x9fn\xd1\xcb\xeb\xcd\xe4\xfb\xaf\xaf\xb1\xebQ\x979bi\xf1\x8a\x17\x05&-\xfc\xf3\x9c\xc1\xc2\xd9\xa4!O\xa2E\xbb\x9b~\x9f*\xd7$\x95c\xd8- \x94 DZoz\xca?{\x02-\xab\\\xf1\xdc\x0e\x7f*\xb9\xc5\x14\x94\x02\xf2g\xd9\x17t\xca\xdb\x0d\xa1H,\xb0\xd8\xde<\xf9\xfa\x8f\xe5\x92V\xd9D\xa6\xf1K\xe0\xec56\xf4\xd3,J\x0ee\x86\x8fm\xc1RUVr\xe5\xad\xfb{\x10\xb9\xc6\x16\xac\xd7)Bvj}CWb\\\xcaTo\xbdn\x90\x1eP6[\xb6L\xf5]\xe7\x18e\xcd\xe5-\x00\xe4\xde\"U\x80\xd9\xb2\xca.>\xccM\xef$\xf5UZ\xac\xed\x01\xb4_\xd4{\xa44\x8b&\xa9\x1e^;\xf1\xbb,\xb7SgDX\xb2\xa1\x9fvY\x9d]\xd5\x08\xc1\xa9\xd5\x90\xed\x1aCv\xda\xe9J\xeb\xed\xec\xab\xac\x0f\x8f\xf8\xf5\x8f\x1e\xed0\xf7z\xbfj\xc8\xee7\xbf\x16/\xd8\x9cO3\xa7\xc2 \xe5\xbb\x83\xc1\xcc\xcd\x9b\xd2\xb9\xec\xe6M\xed\x12]\xf2)\x0f:\x1d\xe9a\xa6L\xe2\xbc\xcb\xae\x8b\xba&\xc9\xb2\xdb\xe9\xc8\xf0\x99(\\\x8b\x1co\xa2\xfdL\xff4\x07\xf6g\xe2$\x8a\xd3\"\x93\xc2L\x16\xc1\xc1j\xca5\xc0\x14\x17F\x92G8\x939\x83\xae|\x04U}]\xf5\x1a8*\xbe2\xadH\xb0\x82?\xd4\xe9\xc4p\xc3\x10\x12G\x02{V\"J\x96K\xe6\xe9\xbc\xb4\xd2\xf06<\x92I\x82.\xaby\xf6hO\x88=\xad\x84\x87\x1eOj\xcc\xa6\x8a\xdaL\xbc]a\xc5\xa0Rdq0Q\xaai\xec\x84\x84\x9c\xd1F\xfa\x0b\xf0\x9c\x04\xe0Cm\xe1\xbb\xdd\xda\x9e\xb8z\x90B\"F\x1d?\xa7\xab|\xa3\xd3E)\x19\xee\xb6\x8b.\xcc\x15\xf37\xda\x87\xe7\x1bG\xfaCi\x176\xff\xfc\x1d\xd9/\xfd~G\xf6\xbf8\xd9\xb7\xe8\x85\x9a\x13d\xce\xe0\x0b\xd3\xec\xf0w4\xfbw4\xfb\xab\xa6\xd9\xcf\xe7\x1ag!?\xb5It\xa28='\x13\xb2=\x87\xe3R10\xc4Kt\xba\xaf\x93\xb3\xa7-L\xe3E\xe5\xfb\xfa\xe6\xeeG\xa3\xb7(\xc9{gy/\xa5TA\xbe\xd5~\x86\x85&`\x13\x87\x0f\xfc\x97\x85\xa1\x93\xcc\xd4l\x8a`\xa8)\xed\x19\xcc\x04\xeaB$\xf9tlD\xff\xa6\xf5\x1e\xc2?U/\x91\x0f\xc0w\x1b\xbc7'\xb6f7\x9a\x19h\xb3\n\x03\x13\xbf\x98F!\x9e\xfc\x146L\xf6%\xe6os\xe3jwf\xa2P\x90\xdc\x80g\x96G!m?\xb3\x8c/\xbd\xc4Zz\x10\xe5@\xcdP^\xec\xa6<\xdb\xf1G<\xca\xa5\xbb3<\xb8\x7f\x86\x1d\x99\xeb|\x95+_\x0b\xad1s\x92\xaf\xd3\xd2Y9\x15\xeb\xa1/\xefF\xf9\xbd\xc6\x96\xe7d\xce\x82?r\x06\xfcx:\x1e\x1c=\x18\x05\xaf\xf6\x9c\x94\xbf|\xb2\xbbya}\xfe\xda\xe1\xd9\x13\xce\x95\xadYgy\xd6\xbftkq\xdf\xbd0\xf0W\x97\xceF\xd7\xae\x04\xa1s\xe1\xf5\xd3\xab\xb7V\xf7/]8{r\xd5_\x1c\xf0\xf3si/\xbctzu4\x9c\xf5.,\xbe\xbcvx\xfa\x84w\xc2\xcd\xbd;\x97\xf2\xde\x89\x8b\xe1\xda\x9d\xd5\xfdK\xcb\x8bc\xf7\xc4\xb5p\xd5?;\xef\\\xb9|\xe2\xf5\xd1\xe9\x93\x9b\xdb\xab\xfb\xab\xcb\x8b\x83K;\x8b\xfb\xab\xcb+\xfb\x97\x96V\x07\xee\x85\x8b\x81;\x7f\xf9\xd0\x1b]>\xeb\x9e8\x1b\\=\xb1\xb5}\xf5\x8d\xad\xb8wg\xd6\xe7+s\xf1\xb5s\xc1\xbas\xe5u\x7f\xf5\xfczz\xf5\x8d\xf5;\x9b\xdb\x17\xd3k\x17.e\xee\xe8t\xda;\x1f\xe4\xd7\x0eW\x07\xee\x89\xadS\xbd\xf3\xbb\xa7WG\x17\x87W\xe7\xb3\xd0\x1d\x9d\x9e\xeb\x8d^\xcf\x9c+s\xc3k\xf3\xbb/\xaf\x9e?5\xee\x8dv\xbf\xb3z\xbe\nw\xcf\x9f\xbe\xe3\x88\xbe\xe6O\xbe\xbcz>\xc8\xc5\xdfW\xaf\xec\x0f\x9c+\xa7b\xef|0\xec-\xa7\x83\xab\xa3s\xb7\x9cy\xef\xb0w\xe2r~mi\xee\xf0\xda\x1bg\x83\xabo\xbc^W\xde\xdf\xbcup\xcby\xe3\xe2\xad\xde\xf9\xdd\xc1\xd5\x13\x83\xd3\xab\xb7v\xf7W\xfd\xb3\xb7\xf8\xce\xac\xbf\xbe\xb3\xe8\xaf\x9e\xbf\x16\xf7\xce\xef\x9f^\x1d\xc91\xf9\xab\xe7O\x85kW\xce\xcdz\x17V3\xf7\xc4\xd6ao>\x0b6\xb7/~\x87\xcf\xaf\x8f{\xa3k\xf1\xb5\xc3S\xb7z\xf3\x07c7\x9c;\xbd\xea\x9f\xcd\xaf\x1d\xce\x0d\xbd\x0b[\x87ko\xac\xcf\xba\xa3\xd3\xc9\xb5\xed9\xb3o\xfcDv\xab7\x7fj\xe4\\qso>\xd8\xf3\xce\x0fO\xf7\xb7W\x07\xbd\x91\x9b]}ck\xd6\xf5\xe7\x0eQ\xdb\x87W\xafl\xc5\xde\x1b\xeb\xb8\xdc\x1d\xef\xc2\xc5\xb13\xbf\x9b];\x7f\xee\x8es\xfe\xdc\xa1;:w\n\xd5\xdd\xbb\xfa\xc6zt\xf5\x8d\x8b\x87W\xdf\x08d\xfdb\xfc\xab\xb7\xd6wv\xe7\xc4\xffV\xfd\xb3\xa6-\x18\x93X\x93\x15\xb1&\x87\x9b\xdb\xabw\xd6K\xf5\xd6\xael\x0d\xdd\xf9\xe1\xd0\x0d/\x0e\xc5z]\xda\xb9:\xbbvk\xef\xce\xa5;W\x0f\xd6\x97/\x1d\\\xba\xf3\xfa\xfc\xfa\xf2\xca\xdc\xea\xf2\xee\xfc\xda\xad\xbd\x13\xebw\x06'.\xed\xbc~g\xfd\xce\xe0\xf0\xd2\xce\xa5\x93\xab\xb7N\xber\xf5\xca\xa9\xb8w\xe5\xdc\xec\xb5\xcb[\x87W\xaf\x9c\xbasmt\xfa\xb0\xb7}V\xae\x99s\xe5\xe2\x9cw\xfe\xf2\xc6\xd5+sb\x8dg\xdd\xd1\xb9\xdc\x9d\xbf6vG\xb3\xfe\xea\x85\xadS\xae\xc0\xa1\xf0\xe2\xd8;\x7fn\xf6\xda\xf6\xea\xe0\xea\xfc\xb9\xf4\xea\xec\xdc\xf8\x9a\xc4\xad\x83\xb87\xba<t\xfd\xd5\x817:\x97zW.\xdf\x01|\xde\x95\xff\xdb\xb8si\xfe\xd2\xd2\xe2\x1c\xfcou\xe0\xcc_>u\xf9|\x90]{\xe3\xd2\xe9\xd5[\x8b\xdf\xb9\xb4\xbd:\xb8v\xe1\xb2\x98\xf3\x81{\xb8:\xb8:\xba\x1c:WN\x9e^\xbdu\xf6\x8eX\x0b\xc0\xab\xade\x81g\xde\xf2\xac\xef\\9\xb5w\xed\xca\xb5\xb87\n\xc4X\x8en.\x9d\x1e\xf6F\x81\xd8\x9f\xe0\xf2\x85\x8b\xc3^\xb8>\xea\x9d\xb8\x98m\xde\xda\x1f_\x9d\x0f\x0e\xaf\xce\x1f\x04\xe2oq\xe66\x07\xd1\x99\xd67D\"X\x8a\x82\xc0\x89Sx\xbab\xcd\x0f\xf7\xe4\x1f\xe0\xcb#\xff\\\x0d\xe3\x1c\xfe\xda\xe1\x07\xd9b\xc2!\x0d\xea\xd9<\xcb\"\xe0\x16[\xd2KX6\xa5\xfe+\xb3}\xcb\xb7{\xeb\x82\x11\xa5\xff51Ch\xcf\xecW\xac\xafS\xf6mF\x10G7f3i\xf4mF\x90T\x01H\xef\x81\x02\x10#\x88\xab\x00\x15#\x88\xf4\x13\xb7\x9b\xbf\xbf&\x87m\xdaqLx\xbd\xb10p\xab\x85!3\x16\x06\xae^L\x98}\x95\x85\xec\xbb\x8c\xbf\xca\xc2\xa3G;L\xc5\x0d\x17\x16\x86\x10\xa9\xe1jb\xd9tI\xa3U\xe9#G\xd0\xac:3\xb7\"?l\xb7X\xab3\x93%\xfe\xa8\x8dEg&\xb5\xfc2f\xd5wd\x96#\x9b\x14\nLl \x99R\xdbSb\x1c\xc9\xa8a\xa4|G\xdc\xe9(\x99\x05\x8a\x17\x12K]\xec+\x1aIPj\x0b\x9e\xdfE6\x85\xccj=\x98`9\x98\xd6j\xa0\x11\xa4\xd0\xd6\xebET\x95\x834\x0f\x82\xd4M\xb8\xed\x81)\xfd\x0bM\xc9\xfa2\x96\\q\xbc\xcb\xae\xb7\x8a\xf6e&\x9d<\x08j\xdf\x1e\x93\xc9\xec\x8cg\x8e[k\xf5\xe0 \x88B4\xaf\xad!\xed\x84\xd4J\xf7\x9d\xc1\x80'\xc7\\\x8dn2\xabN\xc8^c\xadcr(l\x81\xb5\xea\xbc\xc6\xa7\x1fG\x9b>3\xe97\x99e\xdc\xc0I\xd3u\xf9XZ\xdc\xf6g\xcc?+\xafj\x95\x7fw'\xbb>\xde\xe8Tb\xfd\xdb\xae\xc5\xceR\xa5\xde\x1e\xf1\x97\x1bE=?\xe0bI\xaa\xfb\x9c9\xbd\x80g\x0b\xacu\x0c\xfeB`\x8f\xa7{Y\x14\x0b\xb8\xfa\x13\x15\x08\x9cd \x9a=6\xf4JW\xb3\xafV\xe8A\xf0;J\x00\xbf\xdf\x1a%\x18\xfa^CV8\xa0\x01{\x9c\xc7K\x90\x8d\xb3\xa1=I\x0b\xf8\x0c\xa0\x93\xd0\x02\x01m\xba\xd2\x9bB\"\x88\xf8Sb\x05\xf1\xdb\x90DC\x0cE\x90\x8brw\xe2\xdf\xd0\xa2|\xabQ!\"k\x19\x94c-\xd9b\x8b< k\x86%\x93\xf1\xbe\xf4\x12;\x12NAe\xc0\xb6*C\xe8\x9b\xa9\xcc\xf5\x1a{\xb6\xe1\xd89\xf3C\xe65\xbb>z(\xedG;\xefL\xd2\xf6\xf5u\x83W\x1b\xec\xa4\x7f\xa2\x83\x1c\x1e\x0d2F\xdc)L :\xc8\xa9\xa85\xb1'\xa6z\x0b\xd8w\xd9\xdc4}0\x99\xd4Q\xbe\xe5\xd2\n\xa3\x90\x0b\x02=mT\xad\xa0\xea~\x98O\x91hob =\x84^\x10\xb9{0\x86\xae\xf9\xe8F\xc11\xf9(\xa5\xfc\xde\xd8\xd6\xf3\xda%t\x0cW\x8c\x0c%\xd7K\\\xc1\\\xca8u\x88=\x11\x97\xbf0\xa7J\xb3\xc3\xa0\xf6yl\xfd\xf3\xfc4\x0e\x9c\xc3\x05\xe9}\xacv\xd1\xf2nG\xf9\xd7`9+1\xc7\x9a\x14J/\x86\x19v\x8d\xc2\xf3;\xb6\xf3\xe2\xd8\xce$T\xf4\xfc\xb1\x1d\x0dK|jZ\xc9\xa9\xa8R\x16\xa1Z\xfb\x89\x13\xc7<\xa9u\xd2{!\xd8S\x1c\xc4vI\x85\xfe\x1d&}}\x98\xd4\x93\x8b\xfeU#\x93\xea\xe5+\xc5\xa5\x8e\xfe&\x98?\xcd\x91Y\x1af\xabF|.\x19t\xeaQp\xd2\x82f\xfc s\x12\xee\xb4*\xb7\xec2\xb5\x936\x1d}\xf1\xc6}\xd1\x02j\xb9r\x86\x8c\xa1j\xaa3Tw\xa1Ws\x80(\xdb\xd4\xe6\xab/z\xb0dV6(-\xc7b\xe9b\x08\x85lo\x81\xeb\xe8\xcc\xba\x17 \xd4jB\x00\xa7<02\x15&\xfc\xb5\xc0\xf8\xcc(\x0f2?\x96V\xa7\xeb\xad\x96\xf4\x0bo\x89S \xaf\xf6j\xb3\xac\xaa\xa3\x17Q\xa4\xedZ/~\xf5\xef\x1bC\x13\x9e_\xa9Q\x0f\x0d^\x16\x1d4\x14\x06\xedF\xafj}\xb9\xa4hte\x14g\x87\xb2\xdd\xfa\xe2\x91\x1e\xab\xdc\x17\xd8?\xf9<\x12{\xcd\xfe\xbd-\xb3u!\xc8\x17\x15\xfa\xc4\x81jt\x0f)Q\x16+\xf9\xab\xad\xa8\x17\xaa1\xab\xac\xc6\xb6\x86\xe5 \x97\x86N8\xe0\xc6?\x05\xfei-/P\x94\xbdV?\xdd(V\"n\xfdt\xd5\x80Z\xf6d\xd6w\xbb\xacu\xecX\xab\xa3DWA\xf6\xaaq\xca\xd3\x054|\x99\x012}R\x1a\xa2 Y1\x91m\x999\xb7)}\xfd\xddnQ\xe8\xb7\xc9\xc2\n|92\x87\xac\xfe\xd5\xa3T\xbd\xd7\xa8\xda\xab\x86\x93BM\xcb\xd4\x81\x9e\x99\n\x8a\x95\x9b\x9a\x18\xf2\xc9'\x91\x1a\x08\x9e\xd6m7\x93\x83p\n*\xe3K\xab\x02\x84\xd7+N3\x939\xc9\x80g3\x80Ei\x83\xf3\xb43\xe1\xa5\x1b\x01\x8f\xd8k\xcc\x9f\xce\xd0\xaf\x7f\xc6\xb7\x06\xe8\n\xb7\xfb\x91\xdd}\x9e\xe0~\xd3\xa4\xc4\xe7\x9a\xf6\x04=\xd4\x93\x97\xe5\xba\x103\x04\x81!\x13\x0f\xbbS\xd3l\x17\xdc\x1a\x12[\x88>\xc2\xff\xeaR\x8f\x85\xd0`.\xd8\x9a':A\xe8g\xbfe\xc1\x9f\x91\xb9\xb2\x17\xc2\xec\xd9d\x86\xcf\x9e\x83\xe9\xb3)\x88\xab\xf3e\xf4\x00\xe8 X`\xad0\x8ab\x1e\xf2\x84\x85Q\xc2\xfb<Ij\x07\xaf\x7f\xd3\xe8\x10\x81\x1f\xee5\x05\x97>\x9fCe\xd5e\xb0\xce\xb6\xd1\x8c\x98c\xf3\x04\x9d;\xf4\x03/\xe1\x96\x90\xeeIK\x0e\x9a\xbc}U'\x9a\x8d\x86\xdc\x1f\x0c\xe5c\x13ymR\x18\xf1\xebE\x89\xc7\x93\x05eUj\x10H\x9cd\xe0\x87\x0b\xac\xe1\xa1\x92\xd8\xf1<?\x1c,\xb0\xd9iW[\xe6\x15\x91w\xf9$\xbf\xc8\xdd\xaa\x01\xa0t\xf7>\x95\xfa\xf2O\xc9\x04\xb0\x1ee\x8b\xa1?r2\xee} \xc9_\xdfN\x17'\xccO7\xc4Y\xf5\x1a\x84\xc2\xb1\x8e\x19,\x1fL\x85\xf0\x82\xb1\xd4\xe2v\x18\xa5n\xe2\xc7\x99\xbe\x00\x98@6\xef\xda\xce\xc1oO\xe5Q\xab=I\xdb\xd1\x0b8I\xdb\xa9'\x11\xac\xb41\xec5p:\x0e\x95\x8f1,\xfc\xc4\x9dI:F\xe3!\xe8by\xb3\xe3\xc5\x8b\xa6z\x15,\xa2\xa9\x1a\xc6\x82v\x00d\xec\x9b\xe1\xffK\x9dp\xbcZ'\x1c\xcf\xe6j\xe3\xeb*6\x1f\x1c\xcf\xe6j\x93+\x8057\xa2gs\xb5 \x14\x80\xe4\xecw\x15\xe0\xf4+\xa71\xa8\xaf@sd`\xb1\x86\xd8\xfdt\xbc\xaf\xc7OG\xffE\xb4\x91\xe7\xa5\xf5E\xfcQ\xd2\xb5\xa5 \xc1d\xbc\xd6\x8c5!\xee(\xa8\xc4\x1d\xb9\xe0\x15\xe4B\xdc\x91{\xf4h\x87\x05\xd7\xdd\xaaW\x90k\xb9\xe0SK)\xa8\x866\x99\xe5\x84\x11\x81\xdf\x19aF\x115\x9b\xd5\xc5\x1c\x052\xe6(\x99\x19\xf0\xecR\xe4\xf1@HO\x13E\xec\xd2\xf8\x94\x17?7^\xfc\xad\xdf;^z\x15\xfbxKf\x93+2\x87\xfd\xe1\xcc\x1f\xfc\xde\x0f\xca%~p\xfcx\x97\xb5\xa4\x05\xc0\xd6\x96k\xd2\xd8\x1eO\xdd!\x1f9\xa4\xc9\x9aB\xbaQ\xd0\xca\xc8\x14\xee\xaaIo\xf1\xfe\xb6\xac\xf2<\x93N\x14[\xab\xbc\xbf;\xd3\xf7C\xafx\xde\xdbf!\xb8\xdb\x85\x9c\x14\x84\xa1'\xc4 \xa5V8H\xad\xc2\x81\xf3<\xc2\xc1\xd7\xca\x18Uj!\xb9=\xcdJ:\x9f\x98\xff\x94)2\xca\xa7}\xf9\xd8\x81\xc2r\x83\xebK\xe5\xb2T\xc2o\xe7~\xd2\xc4\x99SY.l4\xd2\xb9\x8a\xcbo\xf1~}\xa1\xbe\x99\xc3f\xeds\xf9L\x11`>\xa3nz\x9b\x8d\x832\x8dd\xbb\x05\xecN\x9e\xe4V\x83\xb9b\x08\xa5%\x95\x9aXx\x0c\x857\x13\x7f\xe4g\xfe\x98O\xac0bgX+\x92#i\xd0\x1e\x06\x82\x04\xc2\xab\x902)\xd0\xef\xff~\xc2\xfbuna2 \xa9|\xccx\x00\xe1\x0f\x1a\x07\xcbt\xab=\x10\xb4\xec\x88S\x14sJ\xc5\xccIo\xa7P\xcc\xb8\xa3\x04\xb5\xd6\xdcI\xa1~\xe5[\xa2\x91\x18\x06\x93\xff\x7f,\xf3\xb3\x80\xd7Z<_`\x7f\xd0\xd3\xcd\x9b\x19?\xc8j\xfb\x8b\x05_\x10\xbc\xa8\xb6c\x7f4h\xec7M\xdc\x05\x16\xb6O\xce\xcd5!\x95V/\xe7g\xe3\x83\x86\x8d\xdf\xf7\xbdl8\xb9\xd8Du\x96\x19\x15t\x8d\xf7E\xbfs|4\xe9\xa5=\x95\xbcL\x92\xc2\xc0\x11\xd8<\xa1F/\xca\xb2h\xb4\xc0Zb\xb0\xb5%k\xe2_\xea\\G\x04\x15=\x94\x89\x1a\xfctcq\xfbD\xbbS:\x07\x1e\x8f\x13\xeeJ\xcd\xad\xa6z\xba\xef\xcbL\x84\xae1:J\xbe\xe9\n\xa5\x8c-\xb0#G\x06]y\x06\xcb\xa7+;\x8c9\xbc\x997j2\xf9\xb8N\xca\xcd\xd9]h\\\x99 \x87\xc7\xa3\xb6\xa1\xc6\xe6\x18Bo5\x86\xc6:\xcfelb*\xc0N\x90\xdc\x05\xd6@\x9d\xf5\xaf\xe0F\x8d\xf7)\xfa\x07\\\xa6\xf1\xa12\xfd\x0b\xe5\x14\xa7xL\xbf\xc0\x85\x05v8\xb9\xb8d;\x0b\xccm^\xb4\xa6\xcc\xb1\xb0\xff\x8e\xe0\x0b_n\xfb\x87_r\xfba\x08/v\xf7\xff\xf1m\xa8\x96I\xea\x1e\x8b\xd3\xbf)\xf6T\xbd\xf8X\xbf\xa9P,\xccG=\x9eL,\xe6\x87\x19\x1fLQ\xae\x17E\x01w\xc2\x86rZ\x03\xfc2\xc86\xfe\x92vh\xa6\x91C\xc9\xa9\x13\xef\x02\xd9\x7f\xe9\xd8d\x85O\x8c\xe7\xac\xb5\x0c\x95\xb0s(\xb7d\xe70\xe6\xd4,\xa4\xd7\xa8o\xf6YZ\xa2\xb9w\xc9\x89\xa5Lm\x93\xd0\xab\x1b\x17\x9b\xaaB\x97i\xae\xa46o\xca*\x15\x95\xa3\\\x0b8Um=\xd8\xcd\xa28\x1c\xc4j\x99\x92\x88?\xa9\xa8\xa2\xf1E!q\xc4\xaaE\x8a}n*\xc5\x0fbG(\xac\xb1`\x87EA \x00hx\xd3\x14*\xf1VS.\xf0\xd3\xf2\xc2\x14\xa8Q\x8d\xa6\x87L\xa5\xbf]\xfb\x9e\x18Q\xea\x08\xdd\xfd\x8e\x0c\x90\n\xa8\xc1/\xb7Y\xd6\x84\xe6\xda\xce\xc1J\xd6\x95EN\xce\x9d\xea\xd8\x8c\x7f\xb2\xd0\xec)\xab\xfdO\xc2\xe6N\xd8\x0dm\xf9\xd7kh36\xb0\x19\xc7\xf3.D\xd1^\xbb\xd5\xe3\xfd(\xe1\xdbjy\x14\xd9M\x1b\xd3:\x9a{\xe6a\xc2\xfb0\xcc\x94g\x8bY\x96\xf8\xbd<\xe3m!\x80\xb7\xba\xf6\xdb\xbfN\xb74LlzM\xa7q\x89;\xfe\x87\xd7\x17\x8f]\xfbA:{\xec\xf4\x91\xd7~0s\xe3\xe8\xef\x1f\x1f\xa8d\xc5Ug8\xba\xda\xf5i\x98\x8a\x85\xd1\x88\"\xf0\x94\xae\xf5\xe2\xf2\xf2\xcd\xc5\x9d\x9d\xad\x05v\xbd\x05\x97\xe8\xadj\x86P\x92\xda\x82\xd5\xe6c\xc2C).\x11\xd3(O\\\x8bE\x00\xee\x19\x1a\xfc\x89\xfcBm8s\x06\xee\x0eZ\xd2w\xbc*B\x08\x95;mgE\xd6\xe6\xa4N{\xac\xbb\x94\xach\xabN\xb2\xe7E\xfbaU\xa4\xbbK\x0d\xac\x10\xbbq\x86\x85|\xbf\xb0c\xd6\x08\x8f\xc3l\x14\x88clg}\xd9a\x1c\x0d\x12'\x1e\xf2\xa4\xbeP/\xe1\xce^Z\x0f\x0f\xfcp\xcf\xef\x1f6\x17\xd8\x91\x9b\xbc\xc0Z7{\x81\x13\xeeY\xd2\xa8w\xd4EK;\xb3(\xd0\xae\xcc\x12\x96\xa3\x850w</\xbd\xc4r\xf1\x7fB\xbf\xfb2{\xd0&I\x9a\x8a]\xb1\x8c\xcas\xc2\x01O\xa2<\x0d\x0e\xb7y\xb6\x1a\x86<\xb9\xb0si\xadN#\xbfy\x13v\x83*\x1fHH\xe8\xe00\x85/q\xbbS\xce\x00!\x88\xeb\xec\\\xe7\xc54V\x9d\xe3\xa2\xe3\xe6\x99\xc0\xe2O\xdeB\xe6\x02\xc7@\xfe\x1aA\x16{ \x1f\x0b\xc8\xa7\x7f\x82\xeb\x18\xc8\x8f1\xc4]`\xadg\xf7\xfeo\xf2\xd9\x93\xdf\xff#\xf9\xbe\x02\xe5\xff\xee\xdf\xe2\xce]?\x11m}B\xfa\xd6\x80\x7fE\x000\x8f\x8f\xffW\xd2\xd4\xe1\x02k\xfd\xfd\xbf \xe5\xe5\xe7\xff \x97^ \xfc\x81h\xff\x1d\\\x9e+\xc0#\x0c\xe8\x8b9\xbcE\x96\xaf\x9f,\xb0\xd6\xff\xf7W?{\x9b\x94W\x80\xff\x0e\xd7\x18$\x8e\\\xd6O\xde\xc4U\x0c\xe4\xbf\xc7\x90\x80\xf7\xd3\xc3\x91\x18\xc1\xdb\xff\x8e\xc2\xe2\xa1\x15\xb2\x18\xc4Cg\x81\xb5>\xff\xafI\x15\x05\xf8\x9fq\x8d\x91\xe3\x8aa\x7fJ\x86\xa6\x01\x04\xb1FN \xd6\xeb\xd9Gx\xd7\x17/m.\xb0\xd6K\xa4|l\xf9\xba\x18J\xccy\xfc\xe7\xb84|\xbf\xf7!\xfd\xae@\x8f\x7fNA\x00\xf8K\nH\x83H>)\xf1\xec\xf1_P\xe0X\x02\xfe\x1b\x02\x90\xb3\xbbGvDz\xa6\xb6\x9e=z\x9f\x02d\x94\xac\xb5\xca(\x85\xf9`,\x02\x90\xe3\xc8\x16?\xb2\x03{\x12\xf8\xd8\x0e\x94\x07\xf2\xd1\x13;P\xf6\xf9\xe8\xa9\x1d\x08\xb3\xf8\x1b;P\xe2\xfc\xa3\x7fm\x07\xca\x85y\xf4?\xda\x81\x12#\x1f\xfd\x1b\nL2\xb9\x02\xbf\xb2A\xc6r\x8e\x0f\x08]\x01\x18L\xe3\xaf(0\x05\xfc\xbfGhE8HEo\x9f\xfc\x84\x02\xee8\x89\xc0\xe7g\xff\xfc?`T\x8c\x06\xd2\xee\xfa)9\xd0\x1a\x80[[\x8c\xe2>\x1c\xf5\x7fO\xaa(\xc8\xcf\xff%\x86\x88S\xf0\xec\xfe=\xf2Y\x10>\x89\x88d\xe9bID\x1fcJ\xe6\x00F\xdf\x7f@\xbe\xfbr\xc1\xee?$\x80(]`\xado\xe3Y\xc4qpxN1#+\xa9s\xe28\x89\x0ej\xc6-@\xfc\xb6u$\x8b\x89\xf4\xac\xb2l\x83\x06|\x80k\xa4.\x10\xcf\x7fI\x0e\xb1\x81\xfco\xa4N\xea\x0f\xe4\xc0\xef\xff\x8cT\x12X\xf0\x07\xe4\xeb\xe1\xa8f\x17\x04DM\xe6\x9f\xe3n2?\xf0$\x8d&L\xd1@\xfe\x07\\'\x17\x02G\xeb\x13\x82Q\xea;!!\xfbn\x14\xfa!\x1c\x14\xcc2\x9d}\x05\xf9\x08S\xf5\x9e\xe3\xee\xb9\x11\xd0\xab\xfb\xefZ\x80<N\xfd@n\xeeo\xf0\xea p\x9c\xf8R\x04~\xf6&f$\x02\x9a\xfa\x92\xfd\xdc\xfb[;\x0c\x96\xeb!^\xae\xb3\x02\x1a\xc8g>Z\xcf\xee\xbdG\xa0\x89\xa4\xbaO1}\xef9\xc9\x98\xcb\xb1<\xc0\xfd\x9du\x92}.1\xfb]\xcc\xbb{\x05\x08\xa3\x1a\x80\x80dS`/\xd9\x13\x80?%\xf3\xee%{\x99\x06\x92%\xab]\xeb\xb3 s\x90\xfd\x81\xcf\x98\xe7\xf6\xbc\xdby$\x97\x1dK\n=\xee:y*W\x0e\x8f\xec\xac\x04q+\xac\xd7\x08\x1b\xc5\xd9\xa1\\\xf4G\x98\x92\xf4\x04~X\x91\x83'a\x94\x8b:oc>qV\x82\x82\xc0Ok\xc0\x99\x9430\xf9\xeb\xa9\xef\xff\x0b\xfd\x0e\xa2\x0c\x1dB\xb6\xcf9\x1co\xd2\x89\x96\xb4\xc8\xbej\x00f6=\x7f\xe0\x02\x05~\x88\x05O\x01\x02\xd1\xf3\xd9/0 \x16\xb0\x1c\xaa\xe1\xc3\xdf\xf3\x07\x91\x17\xc1\xb9\xc4\xb2\x93\x80\xc5\x01l\xe4GX~\x12\xc0\xcc\x1fq\x80ZF\x93\xdeV}~D\xd0\xdd\x1f\xa4\x99#\xb9\xc5_\x90\xa9\xfb\x83,\xf1\xa5,\"\xf4&Q\xe6=rr\x8b2\xd0\xc3{\x98\xd6\xf4\xfcAnF\x8e\xa9W\xcf\x1f\xa83\xfa\xd02)s\xda\x1e\x92\xe5\xd8s\x92h_\x80\xde\xc7\xd4\xa2\x178\xee^\x10\xdd\xe1J\xb8\xfa\x10\xcb,\xb2@z;w\x12 \x7f\x0f\x0b<\x12\xae'%K`5\xa1R\xc2,\x0d\x968*\xa5\x02\xb8\xb5}\xf6\x0b\xb2;\xe5R\x89\xbaT~\xf6\x1e\x96\x02\xa4\xae- \xff\x023\x86^\xb077/\xeb\x90\x03\x12\xec\xcd\x9d\x94\x10BE\x82\xbd\x13\x00\xc1\xc2\xb2LO !\x98\xa1\xf5B\xb1\x18g\x9e\xfd\x183\xda^\xc8o\xe7\xbe$\x07\xf7\xff\xda\x02^\x07\x94~\x8a%\xc0^\x08\x80w\xb1\xbau\xd6\xc8B\xff\x07\xaebd!2nh\xeb\x01\xe9]_i\xdb@\xfb\x99\x0f\xe8E\xe6\x1a\x1d\xf4@J\xf9\xf0>\x05-\xaf \xc8\xcf\x7fa\x81\x04\x12\x82YT/:\xf0\xa0\x0eV4\x04D\xd6\xf9\x19^\x04\xd1\xda\x96\xac\x83%\x11\x01\x91\x07\xd6\xb2\x08\x07\x1e\xd4!\xa8\x10\x1dx\xb2\xce\xcf\x08O\x8f\x0e.\xc8*\x96\x01H2\xfa3r\xf6\xa2\x83\x0b\xcb\xb2\nVo\x05D\xb2\xce\x9fciD4\x06u\xe8.\x1c\x0ce\x9d\x9fa\x92,Z\xdb\x95u\xb0\xbe\" \x92\x95\xfc\x9c\xf0\xfc\xe8`\x08u\xb0\x02$ \xb2\xce\xcf\xc8i\x8e\x0eF~\x08\x04\xea\x01\xa1\xf2\xd1\x81&^\x0f\x08k\x8d\x0e\x0c\xd5}\x80\x15\xb5^t\xb0\x0b{\x8e\x95\x0d\x01\x01<\xc1\x82i/:\xc8\xa1\xce\x7fk\x81\x00\x9e`\xa5S\xb4\x06{\x8e\xb5N\x01\x01<\xf9\xa5\xa55\xa8ci-\x07<\xb1`\xddeY\x85\xd0\x92\xe8@\x9e\xfd\x9f\x11\xca\x16\x1d\\\x06\xd4\xb2\xec\xece\x89[?'\xb49:\x18C\x1dB\x95\xa3\x831\xe0#V\xb6Dk\xb0j\x844F\x07\x97a\xa5\xb1V'Z\x83:XA\x11\x10Xi\x0b\x0e_\x86U\xb3\xec\xf5eXi\x0b\xfa\x8c\xa1\x8e\x05y\xc6\xb0\xd2\x04\x0b\xeae\xe8\xb3\xca\x98\xf6k\xb2o\xf5\x80qO\xb2\xf7\x8f\xf1a=\x0bZ\x10\x95\xb7zF=\xfa\xdf \x84\x8f\x84p\xf7\xec\xad?#\x90:\xc9>Us!R}/\x8d\xc4:\xff\xe0\x07\x96\xefR\x85\xff\x90\xc8#i\x14\x0c\xd3\\\x02\x7fEHv\x1e\xc8m{\x93lu\x1e@j1\x1bH)o\x7fj\x01HM\xf9 \xb6L\x08\x08\xe8\xcax \xce\xe6F\xdf\xb35\xa7@\xb8\xd6\x92\xb6E~\x8a%3\xd7@~J\xea\x80\xfc\x88\x89\xbc\x12G\xefar\xe9:\xb16ta\xf9\xcbu\xe2^\xa2d\xc3\xc7\x98\xd5\xb9N\xac\x9a|\x8c\xf5\x7f\x01R\xb5\xf0\xe8\\'VB\xecc\xcc9\x96\x9c\xd8\xcf\x9c`\xd9\xef\xf7y\xc2\xc3\xccw\x02\xc9\x14~\x82w\xdaubPY\x1e\xff\xe7\x7f\x8f\x1bq\x9d\x04\xb6\xf3-,1\xbaN\"\x15\xd3_\xd3\x05;\x0c\xf8!h\x17X\nqu_\x8f1\x82.\xe9\xf6>\xc5<\xd35\x10Z\x87{\xbe\xd4\xc7\xc9\xb2\x18\x08\xe6YKJW\xf8\x14\xa3\xb4\xab\x01xc\x96J\xaa=V\xc0\\7W\xf3\xa1\xa3\xce\xe34\x95\xc7\xf41f\xf6K\xb0e\x9fb\xb3\x8b\xab\xbe\x93\xfdW\x93\xf9\x18\xcb\xa9K\x02\x1086\x90[R\x1b\xb1\xce\xe6J\x7f\x86\xd6\xc7\xf8\x84.\xf10\xe3\xc9\xb2\x1c\xc4\xc7\x98\x1c\xb9\x12\xe8\xd9\x81K\xfd\xc4\xbe\xdfZ\x9f\xc3D|\xe9\x02\xa8\xd6x{\xdc\xa1\xfc\xfe\x0fdC\x87\x1c$\xe5\xbf\xc4b\x98\x84\x8c\x9c\xc4\x0e]\x1a\n\x12\xfa9\xedF\xaa\xcd\xa4\x17\xb0\xe4\xfd\x82l\x00\xa0\xc6\xaf \xd5\xf0\x13W\x91\x1a,\x9f\nP\xc0\x9d$\x89\xf6\xb56\xf2\xce\xffY_\xc6\xe8\"\xef\xfc_\xd6B\x1eX\xc4\x9e=\xc0\xb2\x8a\x02k\x0d\xf8\x01\x96K\x14\xdcS\x06\x9d\x07X>Z\x92\xf0e%\xd0c\xd9E\xd5\x16L\xf5cL\x9c\x15l[T\xfcs|\x9a\xa0\xd9KF\xd2\xc3B:\xc07\xb5\xb0\x87%u\x00\xef\x18y\xcf\xb2\xba\x92c|\x88\xb5z\xd7\x07=\xd3\xb6\x1f}}\x8c?\xc2\x07\xd2\xf5\x93\x11\xd8^\x9fb\x0b\x82\xeb'\xa9B\x8b\x0f\xb1\xcc\xb5$\xd4\xb7}?\xe5KQ\x98Ey\xb2\x1af|\x908\x923\xde\xc3\x87n)\x88R\xbe\x94'\xc1\xe1r\x94\xf7\x02\xfez\x1ee w\x90-1%\x8b2dc\x82\xbc'\x97\xe6\x97X\x0c\x93\x90\xdc\xcf\xac\xc0\xa5\x08\xac\x89\xcf\xee\x91\xe3\xad \x0b\xb6\x1ap\x03\x83Ey\xd7\x80\x88\xfd\x16@\xb7k`\xa3\x91 Y]\xdbw1\xec\xff\x8a\x02\x80\xd5\x12\x16\x14\x8d\xe2>L\x07Kb\xae|\x19a\xc4\x15\xdd\xb6\xd5\x0c\xf8\x01`\xd7\xdbx_\x8d\x99\x90p\xca(\x1chv\x8bI\xddR\x14\x0e\x92\\ux\x1f\x0b\xbaK\x05\x0f!\x18V\x80\xf0\x11\xb3\xe1\x15-#\xb5t\xdb,\xb4\xfaNw N\"\xb8\xd6\"\xacI\x82r7\xb3C76\xaf\nR@d\x9e(>\xac\xfb\x9e\x02g\xc0\xe7q)\xca\x05?i<B\xd8\xb8\xe5&\xea\n\xe8\x1d,\xaa/%Q\n6/\xb2\xba\x1a\xf2\x97d\x04F\xf2\xc6\xda\x82k \x84\xab*\x81\xf8)\x96,\x05@\x1e\x85\xa7XcsS\x10\xdd\x9e\x12\xa2\x93\xe6 \xdc>%\xa2e\xa6\x90\xec!\x99M\xee9I\"W\xe7}26 \x93\xeb\xf3>^\x1f7\xe7\xb1\x84<$s\xcdy*9\xc7C\xacM\xb9y\xa0\x97\x1b\xdbv\x01$\xa7\xf5>\xd6A\x96\x94\xbd\x95\xf0i\xf8~\x0f\xab\x9an.\x84b%\xf9\x126\x92\xc7J\xfe&\xd7:nn\xe4e\xc2\x96s#/\x13\x11+\xd7\xf2\xf2\x03K\x83\x11\\\xe4\x91c\xaf\x84\xbc{O,\x02rn\x90\x92\x90T \x92\"\xe0\xfbX\x8dv\x05y\xe7\xb7\xe3\x84\xbb5\xdb\"\xe1i\xee\xd6mN\x12\x1cjc.\xd6\x80$\xb00\xe7\x12\\\xcd\x93D\x1a\xe6?\xc6J\xb7\x9b'c$\xb3\xd0\xad\xd7E\n\x91\x85N\xbc~d\xea\xba\x87\x0e\xaa|\x83F\x04V}\x83v\x0f_\xc5\xb8\x87\x81\x9b \xda\xf3\xec]L\x90\x97e\xaep\x01z\x13Sc\xaf\x00a\xc1\xd4s\x02}\xa3\x81\x0f\xd8\xb2\xdeh\xd2\xdc\"\x00~\x8aq\xde\xd35(\x00\xc4\xb171QXv\xd2!\\\xb0\xe1\xbd\xf14\xe4\x01f\xea^\xc9>\x8f\x97\xd5\xeb\x05\xd2\xd3\xe0\xd7X\xc8X6Z\x15\xde#\xcf@pc\xcb \xb3cv\xe2\xc1g,\x1e,\xdb\xb5M\xf0\xf5\xf8 >\xb3\x9e\xd7\xb0]z\x1d\x7f\x8a\x8f\xf3\xf2r\x94%\x0e\x984\xdf\xc7\x94\xd7\xf3\xa2,\x05!\xe41FQ\x8f\x0b\x0e\xff1\xd6\xe7\x969p\x1e\xac\x18,\xf3\x00\xae\xbf\xc8\xdc5\x00\xcf\xde+\xe9_\x18i\xbd\xbe\x9f\xc2\xd1\xf9\x00\xbb\xe0,k\x85 \x8f\xc0\xd3\x00\xb28\x17\xe0B\xe9\x03l\xeb\xf5\x86\x0ep\x8a\x9fb!Y@`=\xb1\xcc\xb0\xec;n\xe2g\xbe\xeb\x04\x8bun[\xa52\xa06\xfc\x1a\x0b\xa7\x95\x12B\xd6\xd5mQ,,J\x9eW\x9eT?\xac/\xb2\xa3\xae\xeb\x7f\x8d\x8dx\x9e\xefH2\xfb\x10[\\\x96}g\x14\x815\x86\xc0\xbc\xc90#Gcs\x9e\x80\xa75\x10\xb9h\xd8 N\xad0\xe4\x00\xf8\x03\x07\x04\xe3\xdf\xe0U\xf2\xfc\xd4\x97b\xeeCL\x18=y\x13\xf4 \xc1n\x7f\xec\x83c\x83\x1d\x12\x85\xc6\x94\xfe\x90 \x9a?\x8e\xc2\x03+h\xf9\"\x9ct\x8c5\xde-P\xda\xb1\x1c\xe3\x05n\x94\xc8\x81\xbf\x8b\xf9\x9b\x17\xb8\x89|b\xe0\xd9\xbb\x98\x0f{Q\x10H\x94\xfe}\xdc\xbd\xb9\xa9\xc2:\xb2gD]\xacH*c\x06\xde\x0e\xaf\x06q\xa3Li\xc2?&(\x16eJ\x9f\xc1$[B\x94Pq\x1f\xd3\xa0\xe5([\xb9\x9d\x83<k\xabi\xeeB\xeean\xe3E\x99\xbe\x0b\xb9G\xa8N\x94\x15W\xaa\x0f\x08E\x90g\xae\xe2?\x81\x91\x0d\x8e\xa5M\xe6\xc6\x12'\x94\xacYF\x0d\xdc\x0f\x17\x13\xc5\x81\x08\x0f\x842k\xbc\x9f\x15e\x08\xd73e\xb6\x84PQ\x14\xc4\x13/\n\xee\x80\x84A\xd8\xa4*\x11\x85\x83J\x97\xbf\"\xcc\xbcR\xae\xda\xed\xaf\xb0\xa1\xa6(\x8c\n\xe2+S(\x88&\x81\x8fE\xa9\x90\x9a\xc5\x03\xfb\xc2\xee\xc6E#\x14\xb1\xa0Du\xf1)\xfa\x8bR\x97y\"\xe9\xe7Y\xe0\x14\xf70\xa7\xa8\xb4Ad\x15\x01uj\xb7\xd7+C\xadue\xcb\xaa\xeb\xf7k\x0b\x94\xe7\x8a\xb5\x17QH_\xc6\xfc\x1d\xe1\xf2\xd1~h\x06!\x8f\x0b\x91\x12\x04x\xe8$q\x14\x85Z\xae\xa5<\xb1(c\x04[\xca\x1e\xa3\xfd\xd0\xa0\xcbe\x19\xaf%\xca}@\xf1\x19\xca\xedp^*\x85i\xa0.U\x14y\x07+S\xd5\"j\x11?\xc0\xc64QJ\xa3S\xa9?\xac3\x98bE\x99\x9fb\xc3\x08*\xa3{\xc4\xba\xb3(\xa6q\x97\x9e@ +\x10\n\x1b_\xbd\xa4$\xb0\x12\x9a\x98\x18\x9e\x81\xc7\xef%\x86g`k\xfb\xb2\xd1\xd8I%\x03!gu\x1b\xb8\x19\x11PS\xe0f\xf8,yp\x85\xf6\xecC\xac\x12-\xa7Y\x12\xed \x81\x99L\xc6@\x08\xd6\x1a\x15\x9f\x08\x87Y\"o\xfd\xde\xc3\xa2\xa1\x00HK\x0f\xf1}\xf1r-\xcf\xe1\x93\xe3\xe5C\xb5\x83\x98\xae{\xfb\xc6\xe3\xe6\x11\x96a\x96\xaf\xc1\xca\x10e\xe2\x0e\xac\x0cY\xe3;\xfe@k\xc1\xbf\xc2\xc3^1q\x0c\xf8b\x85\x1b\x08\xb6\x1bq'\xcd@\x17x\x8c\xcd]+F;\xc1\x96nn \xd8F\xce\x95\x01\xf7>>8+:f\x01S\x0c\xae\x01\xd8Z\xc1\xb5\x9d\xf4\xd9}\x8c\x1f+\xb0hX\x0d\xe5\xb0fX\xca\xe1\xcbJ\xd2 \xaa\xc9\x8a\xba\x05\xc2\x83\xd5Fz\"cpU\x01\x1fR8\x9f?\xc1R\x1c\xef\xeb\x860cZ\xd1:\x066\xc3p\x0d\xc07FR\x8bz\xf6\x04o\xc5\x8a \x8b -\x19\x08fy| \x89\xf7\x132\xedA\xaa\x8e\xca\x13l\xe4\x05e\xed \x96\xe2VJ\x86_\xd2\x7f\xe0\x87\x19OdW\x7f\x86 \x13\x87K\xed\xb71\x93\xe2\x01\x0c\x0d\xef8\x0f\xcc\xd0\xf0\xda\xaf\xe8\xe8\x0b\xbc\xc6\\\x03H'B_\x94c\xc6\x04IBR\xb8\x86%@\x99ky{\xe4\x04\xc1\xb6\x91\x08\x7f\x81\xe5\xe3B\x17\xb5\xd7\xbf\xcc\x13\xdc\xc6{\xd8Y\x84\x8fRI{\xdf\xc4\x9cS\x00\xe6NH\x10V\xa3$H\xba\xbe\xbdI\xfa]?\xbf\xc0Z\x9f\x91\x83'-\xef\x9f\xe1\x0b8\x1e\xaa\xce1G^\xd1.\xfe\x0474\x80`\x87\xd1\"\xb0M\x8e\x1b-\x82\xe0`\x0cT\xf4!\xc1\x80\xd8IR\xe0\n\xd8*\xc3\xb5\xf4\xfe\x18Sx\xe5\xb4\xfb9&\xd6+\xc6\xd9\xfbs\xda\x8f\x01\xe1Z\x02$\xb6\xf67\x04p[_\n\x12\xba\xc7o\xd7\x931~[y\x97\xdc\xc7k\xcdo\xa7\x81\x13f\x83,\xb1\x1fT\x00\x07<\xb5\x9f\x16\xa3\x07=\xa6#\xcd\x1dy\xc4\xce\xd8\xaah\xad\xdf6\xa0\x9c\xc3\xb5\xe8}\xcc\x92Vn\xe7~\xe0\xf7\x12?\x97s\xf9)\x16\x18JN\x946\x08\xd8\xae\x1ec\xa5\x81\xdf\x1e\x17\x1b\x8e\xa5h\xaeY\xe0\x07d\xc3\x13Mq\xf1\xa1_\xd1nA\xd8\x10\xc55\x00\xf3m\xaeI\x0e\xd1&W\xd4\xbe=\xc6\xd7&\xbcnCW\xc0tE\xf8\x06|&|i\xe7\x82\xa0\xdb\xb8[\xb0\x96~\x82'\xb0\xa2\"%\xc8IV\xdf y\xc9\x13\xe9R\xff'\xd8A\x8a\x1f\xb8\xa2\xc2\x11\xf2\xd9\x87\xad\xbf\x87\xe9\xd1\x8a\x80\xa4V\x10?\x88\xb9\x9b9:^\x86\xac\xfa\xca\x01${\xf0\x9d@^/S\xdeY\x14\xb03\xd7\xbe\x13\x04\xbe\xbc$T\x96G\xc2d\xcf\x81\x98\x80\xa5\xe6>\x88 \x98\x82\xf6\xf9Hu\xf5K|\xf3\xd0\xef\xfb\x10\xf8\xf8\x9f\xff\x06\xcf\xb3\xdf\xd7\x10Z)\xd0 \xdc\xd59\xcd\xe4\xb1\x9c\xd6\xd7\x00L\xe2\x8a\x01`5\xe2\x9c\x1f\x04\xdc\xc3l \x13\\(ec>X\xec\xea\xdf\x82\x9e\xfa\xb70 p\xc0B\x87\xc5\xaeb\x9e\x18\xeb\xfbA\x16J\xf4x\x0f\x9f\xd3~\x18 \x06\xf0\x9f\xc8\x96\x19\x96\x81\xf5\xb3\xbea\x19\xf8\x10\x9d\x8b\x92E\x10'\xee\x91=\x88\x12\xa7\x1e$\xfdX\x1eb\xc3\x87\x00\xc0\xbd\x00\xe6g\xe7\xa2<\xf1y\x92%p\x0bL\xe6\x14;I\xa6\xfd\x1e\xb0\x10\xdaO\x1cW\xba\xb3\x7fL&& \x92\xa9\xff\x04\xd3, \x12L\xfdc\xbc\x9f\x12rJV\xc2\xc4_\x82^\x96 <\x01 zE\x82\xb0\xe0.@\xf30\n\xb2 \x02\x04}aF$@\xd2\xe1\xfec\xac(I\x08T\xc2\xfb%A0\nl\xfa\x13\xa0\x93P\x0bK\x19\x02t\n\xa6\x85e` \x82\x06\xb1=W\x80\xbe\x03 l\x13\xe8'\x0e\xb0\x97\xb7\x08%HT\xe8\xc3\xbbX\x08?\xa7y\x05\xd9{\xa3\xfbb\x81p\xa0U\xaf\xff\x07\xf3\xe2\xf3\xca\x08\xfd9\xdevm\x9d\xfe\x1c\xb3\x17Y\xc3\x13\x12\x08^\xb8\x81\x81\xe0\x15\x18\xc0\xcd\xed\x13l\x97<o\x02\xd8\xf1\xc2\x0c\x0c\x04\xb3\xfa\xf3\xda=\xeeS\xbc0\xe7\xb5K\x1f\x19\x98\x06\xe0q\x9d\x07\xe2L\xe6\x0e\x9f\xc9\xcc\x95\xe2\x85\xef\x10\x95\x8f\xc8\xa7X\xb4\x18H\xa6r\x1f\xab\x1d`\xa3\xbd\x8f\xe5\x89\xc1\n\xa87Xt\x19\x80\xda\xf3\x10\x1f\x96\x81b8\xa4\x1d~\xfbvM\xbf \xb1 \xe0c|T\x06p=`\xfb\x0eW\xd2O\xb0\xd2>0\xa2\xc9\x13L\xd6\x00$\xf9\xfb\x13L\x8e\x15\x0c\xe6\x8a\x91~\xc0S5Yz\xf3.`0\xc8'\x988\x9c\xd7\x1c\x0b\xab\x17\x03\x0d\xc0\xec\xf7\xbcTd\x1fb\xda4\x00? ,\xac\x0c\x065\xc5\xfd\x11l\xce\xdbXx:\xaf\xaeN0\xa7\x1e\xa8\xab\x13\x82qpc\x80\x9b\x19Hg\xcfgO\xc8\x1e\x83\xbc\xf2\x04s\xaeApK~\xc7\xd3\x1d\x84\xea\x00\x92\x05\n\x8b\x98a\x0b\x10\x10\x98\xec<x\x81=\xc1\xca\xf6@\xb9\x80Y\x01\xb7k\x9aR\xc2\xeaC\x8c\xad\xe7\x0d\x13&(i\x980&\xcf\x83\x9a;\xc5\xf32\xc3IR\xdc\xcc\xe0\xf5,\x17XS\n\x0d9p\xaa\xd0\xb9<\x08\x8a\x96\xc8\xb0\xa1\x90\xfa\x8f\\\x0dB\xa6\x00\xa6\xfb!\x9b\xae\xe0\xdb\xe2\xac\x16J\x14^\x05U\xaa\xd0\x96\x08\xb52\xdc\x00\x0f`\xa0\x19\x08\xd9p\xad9\xe0\xb6\x06:\xd0\xe0 \xf6\x1e\x10\x108\xcbXQ8\xbf\xb3\xc0Z\xdf\xc3\x1f3\xfb\x01\xcb,e\x07\x99\xa2<\x84\x90e:\x04\x1f_\xdc\x0c\x8c\x99\x15\xf3\xfbA\x16l\x82R\xff\x08\xcb*\x83\xcc\xe8\x95\x8f\xb1\x883\xc8\x92\xd2\x01\xc1\xecK@\x95\x0e\x88U\xc7A\x96\xd4\x0f%\xe1\xb7\x83:,\x93P\x03\xa6\xdc K\x82:\xc4\x19dI\xed\x06\x8ey\x92\x15\xa7\xd0B]\xc7\xfa\xb0S\xd8\x05\xc7\xe5{6\xd7\xff\xa1\xe3'\xcaP\x83Qi\xe8\x04}\x9b\xa09tF~ \xd7\xe5m\xac*^X\xdcR\x1e'X\x1d\x18: 8\x9d\xfc\x03\xe9F\xbb\xe2`\x96\xa0]\x1e\xde\xb1\x01\x14\xfa|\x80\xe9\x94\x80\xc1\x1d\x06V/.H\xb5\xe3\x0fqy\x88\xfey\xf66\xb6\x9c_\xd0\x02\x07&\xc4C\x0d\xc0\x14h\xc8\x9d\x04\xb4\xd8_\xdaA\xda5\x81B\x83\xc0\x87=\xc0v\xfd!O\\\xd0|\x1f\xe0\xcb\x90\x0b\xca\x81\x1f\xa3\xd7P3L\xdc\xcd\x05?\xe8\xf1$\xdb\x8e\x1d\x97[wo\xb8\x97rs\xcbC\x06\xb9\x97\xee\x1b \x19f\xa4\xaf3\xf0]\xc20\x1aep5w\x0fK\xb4\xc3(\xda\x0bx?+\xee\"1k\x11%\xe4\xd5^Q\x04\xe3\xd5\x05\xedK\x8b\x15\xa5\xa1a1\x98\xe5\x0f\xa3Dm\xfa\x9b\x98\x8e\\\x88\x12\xffN\x14fN\xb0\xe6\x03\x87$\xd1\x9d\x174\xe5%\xabg\x88590&9\x03\xc52s\xddD\x96\xd4@0\xed\xbc\x90\x8f\xe4\x1d\xf2\x85\xba\xe8,\x01(\xd8\x1b\xeerx\xa8C\xc1\xde\xc2\xa2\xcd\xf00\x1eB\xfc?\xf1r[57?x\xa1}\x03\xc1'\xce\x97\xb4\xff-l\x83X\xd575x\xdc\xbe\x06\xe0\x1b\xa4U\xa0)XV\xf0\xe13\xa6\xdb\xabJ\x96\xc7\xa6\xa2Uu\xdd\x837\xdd\x87\xfb\x9e\xbf\xc7z\x95\xaf\xecX\x1fc\xa5\xc0\xef\xf7\xad\x04kU\x9dH|\xdb\xe3\xeb\x13\x89\xf7x\xd5\\\xad\xe0C\xec\x1b\x086\xae\xf9\xf2\xaa\xf1'\x98\xee\xf9\xbe\xafM\x06\xa4-\x0d\xb9G6\xc8\x0f\xfb\xe0\xa6\xf4!\xd6\xb7|?\x926\xc5go\xe3C\xb9z\x11\xcc4\x9fb\xcf&_Y|>\xc5\x9ckud]\x96U}\xaf\x82\xcf\xb4\xaf\x01X\xc6\xf0G\x0eh^\xb6\xb6\x06~\xe8$\x87\xab\xf6\xd5\x199\x83@\x9d\xe8\xb71j\x0b`\xec@\xca$\xbaw#\x99\xc5\xb4\xf5)\xd6\xd4\xfd\x91\xb4<={\x80Y\xb8?\x8a\xa5\xc3\xec\x7f\xc2\xf8\xb4:\x8a\x03\x1f\xd4\x1f\xe2`\xe2\x87l\xc1v\xf9\xe5\x87\xae2\xb0\xbd\x8d\xafc\xcc\xde\xdd\xc3\x8a\xb7\x84\xa8\xd0\xfd\x0f\xb1\xbe\xec\x87*\x87\x06\x99\xd1\xaa\xc2\x12\x82q\xea;\xd9\x8d0s\x81\xc6<\xc0B\x9c\xca\x08\x0d\xb1\x1a\x98\x81V\x9c\x97,\x8d\xf2\xa4\xae\xd9Uy\x11\xc8M\xf6$\x92X\xc4\x0f\xb3\xc0I\x86\xd2 \xf7\x11\x16\xda\xfc0\xd3A\x14\x1fa!q5\x1c\xfb\xa9/\x1d\xac\xc0fb![\xba\x88\x89qz\x0bK\xe5\xab\x1b@I\xb0m\xd5\x8f@\xf4!X\xabo\xbc0\xc1\xf35\x00\xdf%\xac\x1a\xae\x86\xf9\x92o \xd8\xac\xb5\n'\xf9s\xcc\x07\xd5 \xff\x1c\x0b\x16~\xed*\xf9Z\xca\xfe\x18\xb3\xf9U\xcd\x15\xc9\xe12\\\x11k?\xdaC\x92\xe2|\xea\x87Z\xf0&49\xf5A\xc8}HF\x9d\xfa`#~\x88\xbd_%DZb\x1fb\xca$@c\xfb 2\xfb\x0e\xeb\xfcS\x9f\xe2\xcbp\xdf@\x08\xc1\xcc\xf7\x00-\xb0\xee\xe1+\xc0?`s\xe8\xaa\xbaq\xc1\xac\xdbW\xdf1V\\\xd4\")\x9e\xfa-\x0d\xc0\xeb\xa8l\x1b\x18%\xc0\xb4\xf1\xf7xm/j\x06\x86y\xff-\x0d\xc02\xca-E6\xff_L\x1d/\x1a4\xc5\x87\xe4\x96\x81`}\xea\xa2\xc1!,\x94\xde2\x10\x8c\x90\x17S\x9e\xc0d\xf0\xce\xde\xd2\x90\x7f\xc0\xf2\xc4E\xbdQ\xd8\xa6uKo\x14\xe6\xf8\xdfw\xe2X\x9e!|\xe6\xf64\x00\x930 \x90\x97\xbfX<\xf9\xbe1\x8abo\xa5=\x03\xc1\xab\xf9}\x18/\xe9\x1d>\xe3\xbe\xbf\xafw\x0b\x0b^{\x1a\x80\x91zo\x90@B\xa8O\xb1\x90\xf5}\x15\x0d\x8cwdOE\x03cn\xf5}\x85qX8\xd9S\xd64,\x7f|\xdf`\x03\xa6\xf1{\x06B\xea\x18l\xc0\x82\xd6\x9e\x86\xfc9&\x9b\xc1\xa2\xd6\\\xf0\"\xae\x99\xfc\x02\xf88\x04\x06\x82W8pJ1\x04\xf80\x06\xce q\xe0\x16\x13\xb3\xff5g\xd4\xf3$\xbe`\xdc\x0f\x0c\x04\xabOk*k\xe6\xaf\xb0\xf8\x14h\x00\xdeM\x01\x80\xfc\x8e\x98\x11\x05\xc6\xb3\xccR \xcc\x8exC\xd7\x1c\xf9\xe2\x9a\xbe\xc4\xc23\n\x1cH\xb8\xf61f\xf0kZ\xab\xc7RK\xa0\xed\x00\x98\x85\x98\x986\x1b@\xc6\xf6\xfd\x14\x8b\x18\x12\xd2\x97\xec\xe0}|\xf9 `\n\x84e#\x01\x02\xe1\x81\xa8\xa2\x02\x14\xc8\x95x\x07\xcfH\x06\xd6I\x81\xe5}\x8a)\x89\xb6\xe7|\x80y\x8f\x80e\xb2\xda;\x98\xcb\xa8\x1b\xd2'\xa4\xa7\xc5\xcc\xf1\xa1'\x8a'\x06\x84\x89z\xe0@D\xf2\x13,\xfe\x0b\x00\x98\xa8\xfe5\xb5\x18\x05g\xd5\xb2\xbf\x8f\xa9E\xd0\xd3\x10|\x98\x03\x9d\xe4\xef\xaf\xb0n\x10\xf4\x12\xb0:\xfc\x91\x0d \xea\\\xa7\x80=9\xecGX\xd1\x16\x904\x00D\xc6\x1c\x12`2\x8f\xd1#\xcc\xac\xd6\x8c\xb7!V\xd0\x03\x03\xc1B\xca\x9a!\xbd\xf8\xf8\x05\x06\x82\xa5\xa4\xc0\xe5\xb0\x13\xefb\xd6\x13\xb82\x16\x15\xaf\xc1\x1a\x90F\xb2\xa5\xf0\x99t\xec\xb9R@}\x1f\xb3\x89\xc0\xe48\xc4\x84QB\xc0\xe2AN\x9d\x97x\xda\xe1\x143\xf1\xc0K\xf2T\x03\xc9.x`\xd2x\x87l5\x18!1 \x06\xf2r\x1f\x9fT\xe9\xf2/\x88\xcfY\x81\x07\xe01GhP%.\x80\x90\x81\xb5\xb2\x0d\x89R\x8f\x8a\x85\xc9V\xb7\xec\xedN(\x89)\x80\"\x04\xb0,g\xba\xd1\xc7\x90\x1cj\xd1\xd2\x12\xf7\x03H\xc7J\x91C\xc0\xc1\xf9\xbf\xbc\x14x\x19\xa1\x94t\xd7.\xf9\x8dc\x0b\x85.Ur\x1b\xc7\xb6\x9ej\x11\xed5\x8ei\x87(u.\x88\xa0\x8dw\xb1\xe9VLZy\xe0\xeb,\x7f\xc4\x1f\xbeT\x06\x02|\xdf!\xe7\x85\xf73\xb3|\xa0\x1ec+5\x0d\xf8 FaQ\xa4j+$\xf6\x99\x80\x14!\xadT\x8b\xa4\xb5[-\xcb\xa8iA)r>t\xa9\xf4v\xee\x0f\x8a\x1e1\x11\xb6\x05'`\x8a[\x8a\x9e!\xa1\xa4\nV,\x8c\x0d\x83\xab\xd8\x82%\x1d1\xd4l\x98p^\x84\x98\xe1\xd9\xc8FJ)\x1f\x1f\xe0S_.\xa0\x90\xe9CL\x9c\xcbe\x8c}\xf2\x01\x16\x93D)\x08\x92)\x0d\x19\x0b,P\xa8:-|\xa7\x0feJ\xa1\x1aXG(\x17\xd0\x07\x00\xeb\x04(\xda\x03\xe3.\x8d\xf4 \x82\xd0\n8\\S\xfc\x80\x0bi\xba\x19p\xc1CD\x1a}\xf3C k\xc9'\x80\x9e\xbe\xb4\xee\xbb\xba\x99#\xf2\x9e\xf1 x\x8c\xd7+(\xf9\x04`\xedM\xc1\xe4\x1a<\xc1\xb4&\xe0\xa9\x9a\xacE\xce\xe0\xa9r\\x\x82o\xd4\x03\x9e\xa6\xa5\xab;,\x81\n\xb0\xb6\x13`\x0dZ\xc0\xf8m\xe5\xf7jYc\x01\xd5`\xb25k<M%~\x96\xae\x80I\x1b\xa2P\xf5\x1e\x99\x92\xea4-\xb5p\x9f\xf0k\x9e\xa6j\x08\x04&\xea\xea\xdb\xe5'\x98\xba\x8b\x8a\xfa\x96\x90\x9e\xc34E\xd7\xcex\xefE\x91\xe2\xce\x99\xb0\xef\"\xd2\x99\x10\xea~-'X\xd3\x1a$\x11\xc84\x80\x08\xd4\x03\xfb\xa2\x80\xc7\xcd\x13\xa2\xa1\xe8\x98i\"+\x0f\x9dD\xca\x82\x94\xf3\x0c\x9d$\xb7\x9eZ \x91\x8b\xf3\x01Q\x9e\x86\xbd\x00\xf2\xbbb#\xc0\x9a\xd2`\xb1\xafe\xa04X\xc2:\xc1\x0d\x06\x13\x14\xb8z\xb9O\xfa\xd5Z\x0e\xe1}\x81\x0c\xc9\x05\x1c\"A\xb9k\x15\xf1\x86\xe8\xb0\x81Y\x9d\x0f\x88.\x11\xa8\xa8\xa5_`%vm\xe4+\x0b1!\x00\x1a\xf2\x199\xc5\xa3(\x87\xfb\xf7?\xc5v\x0d\x009\xee\x90\xdb\xc1\xda\xaf\x85\xack\xd9\xaf\x85\x02A\xca$\xd4K\xf9\xb5\x90E\xd4~-6\xc0\xed\x9a\xa6\xb4_\x0b\xa1\xb8\x91\xd6\xb0\xb1\xa9<0\xf7\xa0\x04\x19#\xa5\x1aQ\x89\x8e\x04\xbebc\x9d(Q\xd9g\x12\x1a\x1b\x90\x12\xb66,a\xb3\xd8\xa0\xa4\xbb\xaa\x8aI$\xba6\xb0\x17\xc3\xad\x89b#'N\x81g\xfc\x8a0O\x1a\x9dK\xe8`\x14\x0eP'D\xc7\xa6E\x08Q\x89\xa2\xb8\x9a#\x85\x9c\x06]\xa2H\x91B\xf7V\x85\x94<\"\xa6\x10c\x91\"\x8c\xcf@\x88\xa9\xa1\xc8VN\xd4\xf2R\xaerbC\x8a\xf6UZ\xb9{\xf8z#\x88\xf6\xe1Z\xfb&\x19\xde>O\xaa*\x14\xa1U\xa2\x08\x12\xb0 \xe1\x8a\xeeHrA\x94\x80\"\x95\xb8\x0d&\xcdC$\xc7x\x00k\xd9\xb6|\x06\xd7\x92GD\x18\xd0~:T\x1eOJ\x04\x92X{\x12\xa5\xc0R\x01=1\xb4\x91\xec\x00\xa4\x00z\x93X>\x12E3\x1f\x10\xca\x98:Z\xf9\xc6\xf8\xb9\xa6\xafF\x88dh\x8c\x92X\x98ZS\xaa5\xa1\x95\xb5\xdfk\xa4\x81\xc08}ac\x88\x80\x80`J8vz\xbbg\xb3\xc7\xa4z\x82\x041Rc] B\x92vb\xf8\x8c\xc8\x8b\x06\x82\xed\xbbk;\x0b\xac\xf5]\xfcQ\"\x05\xe5\x9a\x99\xa5l\xa0\x9d\xce\x08\xdd6Ng\x84\x86d\xb5\x82\xa4T\x8c\x16l:QP\xa8K\x84=e\x9a\x9d\x7f@hQ\xc9U\x8d\x98v4K&t$K\xe0:\x97hK\x81\x0e1&\x89\xf3\x83,\xd1\xeerdRy\xe2\x19\xc3\x0e9\xb3ybB\x90\xc9\nV|\xd0>\xb2H\xf3\xda\x07\xcd\x02S\xb7\xfa\x1f\xe3\xdb+\x13.\x83g0r\x80\x16\xfc%\xd6\xec\x04\x80\xc3\xe3\x1b\x04v \xc4\x89\xf71\x91\x1e\xc1\xf7w\xf0\x94\n\xfeT\x032\x96\x0dl\x1e\x03\xb0a)Xa\x03\xb0\xb2y\xe0k\x92\x91\x93\xec\x01\xc5z\x0f\xdf\xfd\x8et\xb6\xc5g\x1fa\x99\xf9\x12H\xa0\xd8\xbc7\x82\xcf\x98\xbd\x8eL\xca*l\xe5\x18\xe9H\xe6{\x98\xb1\x8f\xb8\x93\xe6 \xf7\x8a\x07\xb6\xb0\xf2q\x89{~>2Ndoa\x82{\x89\x07\x81\x1f\xeak\x01l\xf4\xbe\xa4\xd5\x01l\x88\x1bi\x00>\xe2\xa3\xa1\xdc\x9c\xb7\xc9\xea\xfb\xae\x0c?\xfb\x18K:*-\xe8=l(\x19\xf9\x9e\xfd\x8d\xa2\x91\xef)\xba\xf0\x14\x13\xd6\x91\xef\xd5\xa4\xcf-\xb2\xc0`\xb2.!\xf0\xc6\x16^\x1b \x82\xd1a \x0e@R]\xf9\x08/\x81\xcc\xc9\xaa\x13\xaf\xde\xc3\x8cq\x14\xb8\x90\xad\x10\xdb\x8fG\x01<i@\x9c\nGa\\\xdbX\xe4\xa9\xd0\xe9\x07x\xc1/\x19Y\x06kF#\x03\xc1\xea\x89\xca\x02\x8a{\xb9\xa4Y\"F\x8f\x91a\x89\x84\x16\xa4\x19<\xa9E_D\xbc$V\xedsr(\xe4Wr&rA\xb5\x81\x14< {\x90\xd7AB\xa7\x07n\xfc$\xcd\xd8\xba\xbe\x0b\xfc\x0c\xd3\xec\xd0@\xf0z\x85\xe6\xbd\xbbg?\xc6\xd8\xa3\xb4\xa1\xfb\x98\xa3\x84\xe6i\xb2\xbf\xa3\x833\xaf\x90\xd9`r\xd5>\xb3\xb4g\x1e\x1a\xa3\xb0\x0c\x1e9\xf8%\xa6M\x12\x02f\x85:\x18\xf8\xfc`\x1f\xbb\xb0'\x9d\x8c?\xc6\xd4:,R\xcc\xd3\xb1\x97r\xc9S\xa0\xce$\x89\x97}]\xdf\xe5|\x86\xb7*4\x10lz_\xd7w9\x9fa\xae\x11\x1a\x08\x96:C\x93r\x96\xf6S\xce9k\x19\xb9Jt\x89Q|\x1d\xc88\xd6\x14B\xf8\x8c\x15\xca\xd0Pw|\xbaT\x82_\xb2\xd4\\{F\xbd\x8fYU\xc8\xf5\xdd+V*D% y\xc7\nQ\xaa\x02\x85\x99\x88g2\xfdu>p2\x7f\xcc\x11\x1fy\x13KW\xba\xdc\xce\xd0w\xf7\xa6*\x16N.u\x99'\x87\xcd%Ko\xf5`KS\xc8S\xaer\"a[AX\x04l[&\x9cf\xdc\xa3A%$\x82\x02\n\x96-\x7fD\xde]\xe7\xfb\xca1\xf9\x07!\x19\x82 \xaf&\xf4\x86\x17\xf1\xd5\x18\xb6\xae\xf9.6\xb8\x85\x1a\x80\x87\x19\xea\x988\x8a\xd9*,\x0e;\x16\x86:\xce\xcd\x06\xb8]\xdfX9\xd6\xcd\x06O\xeb@:4\xccRI\xef\x13\x96\x1aB\x1d\xd6b!\xc9\x03\x00a\xb95\xd4\xc6[\x028\x9f\x01\x06=\xa5\x030\xd1\x0eX\xb7\x0cM\xb8\x03!\xacCexx\x8a\xd5\xbbPj\x0b\xf7\x08\x0e\xc3Cq\x0f1\xf3\x0b}\x10>\x1eb\xa9/\x04\x8c'\x0d\xad+\x93'V\x11Be\xf2\xc4\xea^h|8\xb0\xba\x19\x1a'\x0eZGI)XD\x0e\xf5E2]Du\x97\x8c\xa5\xb5\xb0z\x13L\xc7P\xb9\n&\x03\xb1\xdc \x92M\xb2\\!\x92\xed\xd278dx\xc5\x15\x8emJ\xe5[\x1c\x1b<m\x00\x01\xb5 #\xd1&hK\x1d}\x0e\xb0>\x19jM\xdbr\x0e@\x1b\xa3\xddh\xb5\xf5!&W\xa1\xd1[\x1fbkZ\xb8\xa6\xce\xc8\x13:8-\xc1c6\xb5\x1e\x9dM\xb8#Y\xd8[\x98\xbb\xadG\xa1\x04\xfa\xe1@\x13w\"l\xac\xebX\x11\"\x9d\x18\x01\x16K\xec\xfam62|\xd0\n\xf0\xe7\xf5(\xab&\x95\xc7<D\x14(\x12dc\xbb\xd3z\x94\xd9\xd3\xffa ~=\xca\xca)\x93\xb0\x00\xb7^NaIW!\xc3IZ(\xcf\x8a\xb2\x95\x06\x9e\x11ee>\x86\xc9_\x01.\x06\x81)\x7fQ\x06\xc5b\xda\x86b\xe3\x9d\x0d\xe5\x0c\xf7\xc4V\x9e\xa2\x08\x0e\xcclh\xadX&\xcc2\xd6\xa3\x8c\x86\xe2\xd8ZB\xf18\x14\xe1\xa3L\xb9B\x13I\\@\x8c/\xb4\xbd\xa2r\x87\xb6\x03\xc7N}\xbb\xf0\x10\xf4C\xac\xd9\x02\x0cr\x98c\xe3\xd5z\x94aO\x00r\xe8Q\x19\xe3\x0c`[\x19\xabG\x00\xa1\x15\xb2`\x0d\x8dS\xb0by1\xd5U\x05\xca\xc8c\x1dHY\xea\xb2\x0f\x95^\xac\xd6\x95+p\x06\x93\xd7\xf5(\xab\x93\x07\x9f\xfc+[sT(|\xf2\xd7\xb6\xadV\xa2\x00\xf6\xc8\x93\x10\x85\x04v\x18 \x01\xd6\xa9\x01\x06H\x805\x8f\xf5(\xdbL\xb8\xcb=\xf5\xd2\x0b\xb6\xf3\x95\xe0f\xad\x9e\xfc\x1b\xdb\xe4t\xb1\xea\xba>\xb4P\xac->\xe6I\xca\xcbD\x0fOG\x94\x92\x195\xcb\xc8IdlTHc\xa7EOA%\x8b\xe1Y\xa86\xe4\xc1\xd9\xce{*\xe7\xdb\x03+\xb6\x97K\x15\xcdYX\x84.\x18\x8b9C\x83\xd6\x01V\xcb\x15Mb\xd3\x97(Z\x8c\xedO(k7\x05\n\xb7\x1c\xa2#\x8b\"\xae\xcb\xb9\x07\xbb\x8e\x0d\xfa%x\xb1\xeb\xd4XQ*\x86v\x1d\x1b\x1aK%\x8b\xf3\xf4\x1f\xed\x0d\x96\x16\xea\xc75\xb3Ck\xf4\xc0\xc23\x8bn,\x93\x93\xc0\x82\xccXx\xa2,Qeg\xc4Z\xa4J\x15=Y\x86\x81\x99?\xd1\xd6\xe3\x1a\xa9@\x00\x9c P \xf1mPH\xcd\xf1\xf4o\xe9+\xb4\xa1\x8e\x80\xbbG\xa5\x810\x8e\x02\x1d\\\x88M\xc9!<RB\x88@\x18'n\xce\xad\xc79\x8c!\xa2\xcdB\x13B\xfd\xba\x86\xad=\xae\x1e\xee\xb2\xd5K\xb4\xe2\x81o\xb3B\xf3\xd6\x076\x8fJ\x88\xec\xec\xfd\x7fki\xd0\xc4\x91\xff\x15\x05nU\xb5\x04\xdagUC\xa0=k\x81\x99\xe8\xd6\x89\x11\x981\x95 \xe1\xcd\x17r\xee\xc2\xd4\xd5\x0b\x8dOP\x98\x82\x91\xc3v\x0cM\xa8\x04\xbec\x08\x8d \x96\x184\xd3a\x94du\xc29@\x9b1P+\x1dt\x0e\xea\x9a\x92\x1c\xab\xd0\xbczo\x01\xd5\x0f\xa5\xf6\x84\xa4\xb7\xf5\xab?\x84\xeeJ\x18\xd8\x1b \x01\x0d\xd5#B\x0f\xe8 \xf2\x9e\x14\xc0\x9e\xfe\x84\xa2\x89\xee\x8a\xd0R\x01i\xa0\xc6\n\x0c\xf3\xae\xab\xactI{\xbfn\x1d\xae\x08\x82z\xbb\x06'B\xf5\xec\xd1\x03b\x04Ms0>?}\xc7Z &Id\xcc4\x8f\x1b\x88\xb2\x02\xabI\xd6T\xd6\x93\xb4\xf4\x9b\xa9|;D\xc8\xd7qx\x9f\x10\x8b\x96\x81\x10;T\xa6\xbc\xd1h/\xe8yr\xaa\xe2\x96K\xc0d\xa8\xaeK\x9e/\xa7\x07\xbfRD\xb5C\x04\x0dy\xa5A\xec\xc3\xf2+1\x0f\xcb,\x9a\xbfG\xbfrH\xda\xf86\xbe\x13\x0es\x9d-\x96\xd8\xb3\xc7\xfa='\xcb.^^\xd6\xcf\x14\x12+\xd8e\xf3\x82!\xb1\x18\x8cM-B\xe6\xc6\xa6\x16Y\xc6\xb1N\xbbe\x19\xc7\x18\xf2\xcf\xd8 \x17t\xb8\n9\xbc\xe3\"\xfe\x1d\xdf\\\x85cm\xcbz\x1f\xdb\xe9\xc3\xb1\x8ee\xb0\xf5\x06. v\x88\xb9\xc4\xb7\x815\x0b{\x9f\xd0\xdd\xb1\xe1\n\x0f\xfe\x9d\xad\xa6~[\xf8?X\x80\xfb\xc6\xe8Oh\xda\xbe\xe6\x99\x04\x15\xf65\xcf\xb4B\x14W\xa3\xb0P\x9b\xc7\xf1\xd5\xe1\x86I\x11\x81\xef*\"\x03\xc1W\x81Q\xdd\xf3\x99\x91\xba\xac%\xeffn\xe8\xf4\x11XF\x894\x00kc*\\\x1b\xef=Dk\xff=\xd6\x89\xa2\xda\x1797\xf4\x9bM\x9f\xe1k\xed\xc8@05\x8a\xe0!\x98g\x1fa\x9a\x13\xe9\xd7\xce\xb0\x93V\xe4\xa5\x91\n{\xc2\x96\xdd\x8d\x15H\xbd\xf0\x19\xde\xff\x88+\x00Y\xf8\xbeZ\xc6G\xd8\x95iC\x1b\xfeI[\x1a\x80\x0f\xa6\nV\xff5\xde\xa9\x0d\x93\xc4\x824e \xd8\xa4\x1d\x81\xb1\xfdC\xcc\xba\"\x9d\xa8\xe7\x116\xc3DC\x81\xfd\x9fc9&\xaa{\xa112\xa6hl\x06\x8f\x02\xbd&d\xeb\x03\xf3(\xe1#\xec\xb4\x13\xe9\xc4\x12o\xd2Z0\x17,\xcbn(O\x98\xcf\xb0\n\x1bi\x006]o\x8c\xf8\xc0\xb1\xceR\x01~\x83\x19\xe8\x86\xf4\x8f\x90\xe9\xa7\xb1M3*@x\xef#%R=\xc2\x86\x9fhT\xfb.\xec\x861\x9e\xe2+\xd2\xc8@\xb0\n`\\)\xb1\xf1i#\xe6\xa1\xf5\xc5U|\xbdo\n\x16E\xb0_Z\x14sx\xf0\xf0\x11\x96\x11\x8c\xef%y\xc5vC\x0e\xeb1\xa1 N\xe2k\xbf\xc8(\x17\x04)\xc0\xb3\xf01\xa6\x14Q\xe2\x81\xb5\xe7mL\x8b$\x04R\x8a\xd8`2\x13\x17\x16>\xa2\xc4\x13\xb8\xff1A\xe4\xc4\x1f\xa8\xec$d#\x13\xf5b\"\xde\xc6(I\x83\x08D\xb9\xc7\xf8>7J$\xa9zLH\xb1\xfd%\xe1\x0d\xa3\\\x90\x01k\xc7\x0fB\x89u\x8a\xa4O\xc8.\x1a\x08!\x94\xeau\x8f\x07\xb8\xca\x86\x11\xf4\xf0\xf6F\x06\x82\xa9\xc8F\xe1s\x8bq\xb2p\xc7%\x8f\x1a\x03\xc8\x81zx\xa97T\xb6\x06\xb2\xd2\xea;\xd9\x9a\xb1\"q\xefbanc\xccu|\x11!2\x12\xa6\x82k\x9f\xfd\x19fe\x1a\xaa\xc2 \xff\x94\xac\xfb\x98'\x9bN\xc2\xc3l\xc8S\xb86\xfc3|\xd4\xb42\x85M\x06B\xd7\x13\xd8\x87\xe7Q\xd1\x01-\x95\x94\xb8\xf2\x14s\xfc\x92}\x82B\x94m\x02\x016\x9d\xc4<\xcfF\x81\xc0\xc61\xf9\x8b\xe13&}1O\\\xc91\xfe\x19\x05\xf82\x1f\xca\x0c\x05\x8c \xd6\xf3Mlt\xd6\x94\xe7\x01\x99>O2\x1eJ\x81\xecM\xac\x85lj\xfe\x8ayu\xac\x01XX\xde\x84\xa7\xd2\xb1\x96\x1b\xc3S\xe9\x98\x1c\xc7Cxu\x00\x1f\x8ax\xa8^q\xa6\xfeX\xf1P=\x17\xfd\x17\xf8&tS\xf6\x8c\xe9z,;\xc6\xfc.\xf63wX\x9b';\x86Q\xe1S\x12\x07N\x08\xef\xc7\x93\xa4i\x00\x82\x84jx\\\x02\x06i\xb7-\xd5$\xd1?j\xf9\xec(\xc6\xff\x11\x16\x92\x05\x104\x7f|\xb2\x04D\xd7\xc2\xa6\x04\x01\xf3\xa4\x9aE\xde\x81\x93 p\xf3#\xb8\x11\xe4\xe0\xd3\xfa\x18\x0bE\x9bA\x9e\xea\x87\xd9?\xc6h#\xaa\x8d\xc2:\x88:l\x1f\x11\x1c \xf24\xdb\x97c\xfc\x08\x8b\xeb\xf1\xc8\xd6\xdaf\x04\xc9\xa8\xc4\n\xcba\x92\xcc\x83\xb1\x90\xb9\xb4\xa1\x10c\xd9\xa6\xbe|\xc5bml\xa4\x04l\xbf\x8a\xa3\\>\xf6\xf81\xde\x95M\xb9\xecO0\xd3\x05S\xe4}\xcc\x0d\xe3DE\x18a\xc2nL\x94\xf7\xb1<\x1d\xc3[\xf5O\xc8y\xd0\x96K\xfa\xdd\xad\xe9\x9b\xbb\xa50&:\x02\xee\xaaw\x83\xad\xe3(\xdf\xb3\x90\xb6-\x97,5%\xaa\x96\xf6\xda^\n\xab4f2e\xe3\xab\x05T\x8e\xd4\xc2\xb2\x96\x84+;\xce\x13\xccu%P\x87Ya\xe9J\x00\xb5\xc5\x10\x0fh3Q\x16\xc37\xe9\x16i\x08>E\x12\x92\xdaq0\xd1Qht\xf8p\xc1j\x19z\xc3\xc0\xd5S\xed\x98\x02m\x96\x1ej'\xd4)\x89\xfaN\xa0\x04\x00\xac\xb3\x08\xa0V3\xde\xc5\xca\x94\x00\xa698\\\xbfKx\x87z\x7f\xed\x1e\x96D7\x93(\x8e\x12\x9dI\xed\x1e\xc6\xcc\x02\xac\x12\xb5\xe1\xfa\xa2a\xf0\x9b\xb7\x80\xea\xb6-N\xf2\x04\x04\x83\x07\x98en\x1a\xa1\x11\xdb\xc6bc\x91\xc6\x86\xc9Mx\x95\x87\xac\xbf\xfc\xfc\x1b,\x96\xc6y\xe8*\x13\x17\x06\xbd\xae9,&\xd7\xb75\x00\xef\xc8\xed\xbal\x8b\xafk:\x87\xcd\x13\xb7\x0d\x9d\xc3\xec\xe2\xb6\xc1\xd9\xb7\xb0\x80\xf9\xbaY\x15\xact\xdf6\xab\x82\xf9\xfc\xed\xdc\xc9x\x12\xfa*3\x01\xc9\x8c*\xe0z\xf4\x98\xeb\xea\xd8\x94\xd7l\xdf\x15\x91\xc2\x02\xd5\xeb\xbb\x1b;\x0b\xec\xdb\xado\xe3*Qf\xf9\x9c\x98\x84KX\x9b\xd0B\xec\xbd\xbf\xfd;\xcc{\xb6\x8c/5\xde\xa0\xc4@0\xc3I\x1c\x0f\x12\x90\xde\xc3;\x91\x94\xb34a\xfa\xb1\xa5c;1\x1a&\x1a\x80u\xf0\xc4\xa4U\xc2'S@\xe4\x94\x1ea^\x9f\x14 \x97hs*s\x12fo[Z\xd9\xc4R\x97\xb9\xfc\xa2\xfd\xab\x1a6\x00\x10\xbc\x0f0]KLR%:\xe6\"\xa9\x12\x19Bq\x97f\x81\xa8JX\x84J\x8atKXQL\x8atK\x18\xf1\x13\x93n\xe9\x03L\x0f\x92R\xba%\xac\xe9l\x99tK\xefc\xa4O\x8aLLX\xd2(]\x03\x92E7 \x97\xb0\xc2\x94\x14\xb9\x98(\xeae>\x10M\xac5IH\xa8\xfd\xe7q\xbd-\x93\x8d [\x18\x13\x03\xc1\x1c%1y\x9a0\x05HL\x9e&\xb2[:O\xd3]\x1b@\xd4\xb9A\x01*O\x13\xa6\x84I)O\x13\x16\xd3\x93R\x9e&<\xa3-\xe3\xa7\x8f\x15\xfb\xc4@0\x03\xdf2~\xfads\x0d\x04\xd3\xd6\xc4\xe4i\xc2\xc6\xb3\x04\xf24\xe15\xd8\x02\xcd\x91\xe0>8\xc3b\xad'\xd1y\x9a0kM\xbc\xc0\xa4\\\"\x87\xdf\xe4p\"\xf8V\xe4p\xa2 \x15\x17Jh\x19\xc8\xe9\x04?9\xf0t+@g\xc9%\xd4\x99;\x81\xc9\x92k\xab\x08\x88K\xc6\xc6A\xdey\x0f\xeb\xae[+\xe7\x05\x91\xc3|5\x81W\xfe\xf1g\x8b\xff\x0fvV\xd6E\xd03r5\xc5vcT\x90<\xb7\x9a\x14\x890\xb0=\")\x12a\x90\xe6U\x0eh\xb2BZ\x90 \xdd\xe8\xc4\x16\xf8\x16\xdb\x84'\x93\x17\x7f\x13\x9d\xd8\xe2\xa7\x04\xe7\x8a\xc4\x16\x98ln\xc98\xba\xcf\xb1\x8e\x95\xc8\xcf\xbf\xa1]DR+'\x8cX\xc6\x88\xe3|]\x18\x8bQ$9\xe6>\xc8}\x820\xa7\xaa\xf7\x84\xb5v%g\x17fTE\x89J\xd4\xfbO\xf1\xfd_\xd1\x91I\xda\x85\xe9\xbfl\xaa\x9c\xb5\x0b\x93\nY\x80\xa6\xed\xc2*\xb5*\x86\xf3v\xe1\xd3b\x8a\x95\x12wa\xb3\x16*\xa3\xf3\x0ea\xf1G\x16;W\x8b\xa7\xe5\x04V:\xc2\x95\"Z\xa9\x10\xf8\x06P\x8c\x13EP\xf6.\xeb:\x97\xf2\x80A)\xc2.D)\x9c{\x8bPf\x9ff\xd4\xb2.\xa2N\x97\x85em\x0d,\xb0\x13[F,\xcfr\x13Z(\x8a\xa0\x8cYx:\xc4\x17\xf1\x01\xa1\xceVG\xc4\xa6B\x85\xf7\x1a\x96\xdad1\x925\x0bK\x04\xaaTur\x98R\xa9B\xa5\xa4WX\x8b\xab\x94\xd0\xf8\x87\x05s\x94\xd3\x8c N \xae\x9b\xc0\xbak\x02\x87\xee\xd7D\x88\xf2\xd3\xea\x83\x8d\xa4\xa2I\xa6CP1\xd0\xe9 \x08\xfa\x05\x90\xf3\x81HQEf\x1bL\x0c\x93jf\x1b\x02\xd6\x81\x0cO \x933 d0WLL\x02\x19\xbc\xe8\x89I \x83iKbn\xd3\xb0&\xb8\xa5uQ\xc2\x95\x8d.J\x04\xde\"/ \x1duqGB\xf0/\xcaC\xaf\x94\xe0\xfe\x03\xac\xde'0\xc6\x8e\xe53\xdc\xf8>\"\x9a]\\r;$<\xc2d\x03!\x04\x19\x85\xf0\x90\xb3[d\xea\xc0\x06\xb5-};E\xebh]\x1b\xfb\xc6l)\xc9\x8b\xec}\xedw\x99\\\x83\x08\xd1&\xb9\x06\x16l\x93\"\xb9\x06\x01\x15\xa9)\x082\x17t \xc7ni\xdf\xc3\xf7\xb0\xa5\xab\xe4db\x81H<z\x0f_\xc1 \x88\x8e\xfe\xf9\x10\xcb\xf8[y\xc0\x97y\xe0\x1c\xca\xe7\x10\x9e}\x885\xb2$\x0fL\xa2 l\xc2I\xa41\xf1m\xac1n\x1bm\x1f\xd3\x84\xd4@\xf0\xe6\xa5=\xbd\xb6\xb8\xce6\xa4 \xc1\xe6Pp\xb4\xbc\x8f\xd5\xefTE\x1c?\xc1\x8b\xb0m\xb4\x12\xac\x19\xa4\x06\x82\xc5.\xe3\xb4y\x1f\xcb\x96\xa9\x0b\xf6F\xbcZ\xc6\x97\x93\xf4\xae\xf5\x1b\xbcX\xa9\x81`\x8b\xcd\xb6r\x88\xf9\x0c\xd3\xfeT\x030\xc1H]m \xc5\x87&u\x95\x81\x14+\xb4ia\xd9\xc5\xf2a\xea\x96\x8e6&\xde\xa91\xfa\xe2+\xbam\xd0\xbf\xe8ZJ\xfd\x0b\x0b/&7 \xb6\x12\x08\x00\xdc\xe9\x90\x96<\xe5K\xf0\x18\x0b\x05i\x11<\x8d\xa5\xcd\xd4\x04Ocu55\xc1\xd3VHM\x9e\xa5\x144\xa6\x8f1\x99O\xf9H\x9c\xb3W\xc9\xe7t_\xb9]\x91e\xe6Y\x91\xa6\x02\xeb\xc5\x02\x18\xd6@\x0e\xe4\xc2\xfd%\xde\xd1m\xad\xc3\x90\x1a\x1a\x80\x913\xad\x7f\x025\x15\xc2\xa0\x80\xfc\x12kD\xdb\x17\x96Try2\xa1\xa1\xab\xd2\xcbc\xaa\xbf\xadj`:\x92\xaa\xf2\xd8\xe0\xbb=\x8c\x12)D\x17r \xc6CYd\xad1\xf3p\xc5!\x1asR\xea\x0f\x8d1G\xf60AW\x92ev\xe3\xa2\x00\xf6#K\x87b\x82\x1fcAb\xdb\x1f\xc0\xdb\xafdX\n\xf0\x1b\xecf(\x01\x82\xcc\xff\x06k\x1c\x122\xb6C\x94\xe7!\xfd\xae\x13 `\xcb\x9eq\xf5\xa6\xfdkOo\x0b\x04RU\x11\n\xe7\x8fT\xbaHBy\xf5\x93\x86\x84\x90\xf9#\xf5\xf0&&\x8a\xa9?R\x99\x13\xb0\x18\x95\xfa##\x14a-=\xf5G\xe6\x01A|\xe1\x94\xd6f\xae\x97\x8fg/\xf9\x89\xab\x92\xec\x10\x1a \xe0\xcd\xc7w\xe4\xa4Cy~>\xc2zE:\xe2\xc5\x93\xf7d\xbc\xb5\xe8:\xf2a0\xefR\x88\xdc\xc9'd'G*\xaf<65\x08\x00\x84\xaa\xfd\x0d\xcd\x02\xb5\xbdqn\x07\xce*\xa9\x16\xf538\xadX\x9c\x01G\x9f\xe3\xf4\xab$\xe3\x1fb!_\x00\xd4E\x1aa!F\xf0\xc5rQj d\xc9bG]\xc1\xfe\x92\xa0\x99\x04\xe9w\xfd,\xd0\xc4z\xf0\xd3\xdbJ\x96x@\x98\x9f\x80\x80\xaf\xd1\x9f\xd3\xb5Ko\xab\xdc!\x0f\xb0\xb0,!P\xefg\x965\xbf\xad\xfcg\x88\xd4t[\x076`\xb5\xa7\x08\x94x@(\xce\xedR\xf8\x82\xb5^\xe1\xd7o\xab\x0b3 \xb4\xd4D_<\xc04P\x82L \\\x0dPuH\xebJK\xd9{\x98\xd5\x97^\xae'R@=\x08j\xe1g\xa8\xc8.\xd2p\xc0\x86\x02\x85R\x8f\x17\xcb\x16\x06\xd8X\xa4h\x8a\xb0\x11Yn7\xd4#\xa6\xf8\x93;p\x83L\x1e\xf2Oo\xe75\x80\xda\xeb\xa5msk\x89u\xc8\xd4hR\x98#\xa7\x0d\x02I\x03mJ35\xee\x87\x98jogp\xfa\x08 U\x80\xbf\xb0\x01d[\x7fAD\xc6,q\x04\x9f\xe6q\xea\x07r \x7f\x83\x95$]D9_as\\\x9a%\xd2\xeeE\xb2\xdfm\xc3\x01|H\xf0Z\x1dL\xc2r\xf3\x9e~\xb3\x9b\xa8\x0e&\x16\x89\x02\xe0d\x91\x19\xe7=\x9d\xaa\xe7)\xe1\xbayo\x94\x83\x07\xf3S\"[\xe7=\x90\xfa\x9fb\xbb\xa2\x80@_\x84\xc0\xe6=\xcdE\x9f`\xb2\x9c\xe6=\xc3E\xb1^Z\x1c#\xdb\x1a\x990*+H\x11\x05\xcb\xb4\xcb\x11T\xd6\x0e\x8b\xb3d\xaf\xad\x12\n\xdb\xa6 \xd0\xdbu\xeb\xa3\xfd\x1f\xb1-A\x80`\xd3\x9f\x12\xec\x11 \xc8\xf2F8\x86\n\xf6\xa2\xfaj\xee\x96]\x8f\xb0\xd6*\xc0e\xd7#\x8cL\xe5`_\xd2\xb6%\xd2\xb7\xa6\x04r=\xaa\xeb\xa5\x14\xe1k\x19\xa7\x0eY\xb3\x80\xca\xaeGD5\x15p\xedzD\xd4S\x01\xacUPs\xb7^\x0b\xcd\xdd\xe1\xce\xd0\xb1_Bm\xc3e\xd2=\xc2\xf7j\xbf\x83!\xf0\x97\x98\xb8n\xc3v?\xa4\x15\x80}\xd2\xd3\x1a\xcf \xf2\x82OO\x9a\xc7\xf3\xe2;\x91M\xf3\xf8\x84\xf8N\x84\xc7<\xd6\xe4\x05[ \x05H#(\x11XM\x84 \x05\x009\xa0\xd8\x1e\x1b\xd2\x83\x05\xb8j@w\x0d\xb08\xa0\x96\xa6\x87\xca7\xfcWXQ\x9405 |!\x9c\xe6\xb1I\xdbJOSl\xa8!\xa55\xb1\xa2\x86Dp\xcdcE\x0d)\x1d\x8855|J\xc45#\xed\xd8\xb6\xbfn]*b\x90eI\xca\xe1\x94V\xa8\xa6h\x96\xa1\x96)\x9ae\x8e\x9a\xa2\x11\x9e\x9e\xc7z\xad\x89\xc0!@@\xd1\x08\xbb/b\xd6\x88\x19\xc6\xc4\xacachjb\xd6\xac\x90\x9a\xbc\xd7\xe9~\xa8\x8d'D\xba\xb9\x03\x91S\x9f`=q\xc7\x113\xfaA\x86>gN2\x80\x9dy\x17Oh\xc7\x91!\x9aX\xaf\xc8\xe4\xe7\xdf`\xe4\xcf\x94\x9d\x9f\xf8\xea\xef\x18k\"i\xc9@\xb0\xa6\xb1cl\x80\xd8\xfe\x92\x19\x08\x96\xa9\x94zF+H\xdd\x0c#\xbf\xce\x9c\xfcclw\xcdx\xa0\xbcb\xdf\xc5\xeclG\xdb\x8b\xf0 \xcc4\x00\xdb\xcd\xb3!O\xf8I\xd1\xd8=\xb2,\x02\xd4\x8f@b'\xd0\xac\x11\xba3\xe4\xf0\x06*\xa6g\x99\x06`\xb6)\x01\xe9\xa1\xc0\xf7\xdf\xe0\xc3)ac;\xc4w\xf7J\x197\xf1A\x91\xf0:cJ5\x03\xe2[\xbf\xa2/\xf5gC?T\x9e\x8d\x98\xdeU\xb3\x1dbh6\xdcS\xb1\xbdtD\xf5\xe3\xb9\xb0\xb1\xb5.N\x066\xc7d\xc3(\x11X\xf8 \xe6\x1c\x86\xbb\x93\xb6t<\xce\xaf\xb1%\x1a\xa5\xdb\xc0\xc4\xce\x92k\x03\x8bq(\xd1\x06\x99\xa0\xba!\xf9\x84\xe0\xa0\x00\x80\xec\x8d\x15z\x00\x01\xc1\xf8\x88\xa0\xa8\x00\xc2\xbb\xb9XP\xc9\xea\x1e\xe0\xce\"\x0e>B\xd8n\x99\x81\xd7\xee\x03r\xd2\xa3\xb8\x07\xe7\xed],\xd0dQ\xac\xd3\x18\xe3\xa1\xed\x18\xdb\x06\xa6\xed\x99\x81`\xca! *d\xe3)6\x1bdQ\n\xc3\xc6rSVx_\x93\xa3\xb6\xb5\xb8,\x99\xe4\xdb\x84\xb0$\x0e\xec\x91\x05R\\\x9f\xbf\x87\x15.\x0d\xd4\xde\x0b\xefaA\x0d\xc7\xee\x93\xac\xea4t\x9f\xa4W\xd7E@F\xc6HJ\xe2\xfa\xc9\xa5\x9a%\xac\x9f\\\xafe\x89zU\xe5\xd9/\xb0IL_\xc9\xd9z6\xb6\xc1\x8f\xb0\xdc\xbb\x93\xf8q\xc0\x97\xeb\xe8\xb2\x80\xaa\x9a\x96\xe1\x02\xea\x7f\x88]\x06\xb3\xc4\xcf\xd4\xd6~\x84e\xa3,\x89\xf9\x1d\xe5F\xf5gx\x0fw\x8c-\x00k\xbe\x99\xb1\x05\x10\xa2\xa5nz0\xfb\xcf\xd4U\x0f\x96_v\xb4\xf9\x9f\xa0\xb7\xb6\xff\xe3E\xd81\xcf\x0f\xd0>4\x04_\xc0d\xfb>\\\x8c\xdc'\xdb\xb4\x1f\x0d\xb9\xe3U\xf3K\x12\xea\x08\x85\x90w\x13&1\xbb& \x1e\x1f\xba\xdc@\xf0~\xefj\xd1\x07\x8b*\xb9\x96\x960?\xcau\x0d\x0c\x10M\xe9\x00\xfb\x0f\xf0\xb6\xec\xf6\xd4\x93\xca\xf8\xa67W\x80\x7f\xc0s\xde\xed%\\\xc6y\x7f\x86\x97,7\x10L\x13wu\xb4>\xde\xb3\\\x030\xfe\xed\xc2\xa8\xb0\x1c\x93\xc3\x98\xf0\xa9\xcf=\xed:\x809\xc6\xae \xd6\xc7\x04<7\x10LZs\xe3\xca\x89M]y\xe1?\x88\xf9\xe1\xae\x16s\xb0\xd8\x91k\x00V\xd7vM\xc0<\x16as\x03\xc1\x879\xd7\x9e\x85da\x86N\x02\xeen\x98d\xe6& -\x1ern\xde\xc5\xc2\xdaJ.\xdf\xa7\x12\xa0w1\x95\xca\xcbOWY\x80*6\xe5]l\x1e\xcd\xcdC\x18X\xfc\xda\xd5\x11\xf2X\\\xcf5\x00\xbb\xedC\xb0\xed\xc7\x98\xc1\xee\x86\x9e\x8e\xa9\xc5\xef\xe5\x00\xc8\x84\xd4\xe2Ce\xc0:\xa6\x16\xd3sY\x00\x07\xd5\xe2{(c\x8a}\x88\xf1SBt\xb6\xff\x07\xf8\xa8\xed\xaad\x0b\x9fa\x0c\xc95\x00k\xf4\xbb\x86\xc5c\xcd-7\x10L\x04\x9b.\x1cw\xe3\xc2\xb9\x86\xd0\x95\x02f\xa9Wv\xda|\x1f\xdb\x8c\x15\xb8r'KOh\\\xbd\xb3\xc5\x8a\xc5n,\xa4\x81b|\x18\x9eW\xe1\x96\xfa\xd8+\x98\x9c\xeaX91\x9aw?\xc8\x19\xd2%\x8a\xa7\xa4\xc8a\x8ak\xb77\x8e\xf1[MX\x9b\x94E\xd0\xad1\x96awU\x08\x14^\xe4\\}\xc7\xeb*\xbe\x0fm\x15v\x8d\xc1\xfbs, \xe6\x85-\x9cn\x93v\xbf\xc4\x95$\xa4\x187mSa\x10x\x7fb\x99=O\x0c\xa9\xc1\xe7)/?\x02e\x01jRC\x16\\9\x19~F6Z\x03\xb0\xd8\x92k\x0f\xaa_`\x82\xbbkD\x1d\xc2?\x8c\xa8\x83U\xb7\xdc\xbc<\x84\xeb\xecj\xdd\xe83L\xbbr\x03\xc1\xf2w\xae\x9d\xbb0M\xca\x8d\x0b\x17\x96ps-\x0b\x90\xd5\xdeUy\n\x08\xe1V\xdf\xb1.\x97\xef\x1ba\xfd\x11\x96\x9d\xc6N8\x80;\xc8G\xb8\xb9\xb1\x934\\\xab\x8c\x9dD(\xce\xd2c\x01\xaf\xd0\xd8I\xc2H\xe8\xbe\xf0\x9a\x06\xc6\xc2\xb1\x93\xd4\\\xc6\x08\x88o\x0b:\x17\x80\xfa\xb8\xc6\xb1\x16\xa7,\xed%Vz\"\x00\xe0`\x8f\xe5\x86\xb1\x93\x18O\x0clR\x11\xb0\xea\x1d\x03\xbd\xd2-\x97Q7\x0d5\x85*\xa6\xbd\xe62\xca\xc0g-\xa4-\"\xc4\xb6!`H\xd3\"\xaf\x03\x97\xca\x18\xaaH\xfc\xa1/+\xcd\xfa)f\xe1c\xc53\x9e\xe2\x83 \x002\x8a\xef)>\x08\x97A$\xc4\xe4l\x0c\x9f\xf1\xf0\x8a$f\xb8\xeb\"\x87\x19\xee\xa1HaFFe\xea`]H\xb6&%\xaf\xa7\x98\xe3^V\x9e\x9c\xf8\xa6m\x0c\xdfI\xea\x991\xe7j\xb9\x1e`qx\xcc\xb9\xd2W\xb1\n1\xe6A\xe0\xc3\xbd\x02&w\x97y\xa2\xda{\x93\x1c\n\x0d\xfa\x11\xad\x93\xd5\xd5\xc8j\xca\x97\x13\x9bb\xb9T\xc3\xd5\x13\x17u\xd5\xb7y\xec$\x8e\xf2+\xff+,B\xebR\x85\xe5\x07#3}\x04\x04\x13\xe5\xcbZ\x0c\xc7\xc2\xf6X\x030\xee\x8e\xb5\xc4JQ\xdf\xe4\x8e\xb4dz\x1c\x9b\x9c\x8b\x96\x0c\x89\x97\x8dx\x86\x95\xf1\xb1\x81\x10:[\x1b\xef=6o\x17\x92sg\xd8\x16!R\x86ma\xc5z\\\xba\x01\xb6\x90\x8b\xd2-\xb0\x15j\xeeKj\xa0\xbc\x8eZ].\x0e\x17\xd6\x00\xc6w\xfc\xc1\x1dG\xb2\x82G\x18\xf1\xafh\xbfV\xcc\xfd\xf65\x00\xf3\x9d}\xee\xa9\xf3\xf0\x18+\x00W\xb8\x07Q\xbd\x0f\xf1\xe8\xf65\xe4\x1e\xde\x17 \x81C\x89qj\x9f\xfb*[\xcc\xdb\x18\x97\xafht\xc3\xf3\xd9\xd7\x00<\x9f+\x063\xb0\xa0\xb3o \x98\x94\xec\xdb;\xdfO\xac\xa7g?\xe1N6\xb4\x82\xae\x18D\xc2\x87`\xdf \x12\xd6A\x0e\x94'\xd4C\xcc\x04\x0f\xd4\xce<\xfb\x05\x16\xc0\x0e\x94\x13\x14\xd1\x9c\x0e<-\xfe\xe0k\xe67\xf4za\x9b\xc2\x81\x06\xe0\xfd?\xd0\x0f\xb5\x90\xb7o\x0f\xb4\x8eL\x9e\xbb}Cf#\xc06\x90\x03\xf9\x15\xab\x00\x07:\xbd$y\xcb\xf7@\xdfA\x927|\x0f\xd4\xf3d\xe4!\xdd\x03\xfd\xe2\x0bf\x05\x07:\x99\xe0Gx\xaf\xde0\xe8\x80\x95\xef\x03\x03\xc1,\xef\xa0\x88\x0d\xc1l\xea 2\xd6A\xb2\x91:<\x9d\xbc\xdc{\xa0}>\xc8\x83\xbdo\x18L\xc2\xc4\xea\xc0`\x12&\x8a\x07\xc6;\xee#l\x1f<0\n\xd7G\xf8\xb6\xed\xc0\x88\xcc\xa4\xa7q\x0dK>\xd8\xaf%\x00W\x8d\x8d\x0e\x93\xdfC\x03\xc1\xb8yu\x11\x84\x12\x8c\xe6\x87\x0e\xd8\xaf\xf0\xfe\\\xd5$\x0b/\xda\xa1\x06`\xbc\xbc\n\x1d`\xd9\xe6\x10\xda\xc7\xa4\xfd\x90\xcbdBX5\xbb\xaaO\n\x96\xdf\x0f5\x00\x8f\xe7\xea*\xf4\x8b\xef\xa2\x0f}\xe8\x18+\xadW\x0d\xe2a?\x9fC\x03\xc1D\xff\xaaA\x14L \x0f\x0d\xa2`JxU\xd9\x0b\xb1\x08t\xa8\x0c\x86\xa4<\xe8;\x9f\xe1\x83z\xa8\xf4 l\x00\xb8fBQ0\xc2\xdf1\x10LT\xae\x99\x1b\\\x8c\x1ew\x0c\x04\x93\x90k0\x0d\xbc\x8cw\xe03F\x82k\xea\xe5vL\"\xee\xa8\xef\x98\xa6\xdc\xe1\\?\xe2\x89\x19\xc65\x9eDW|/\x1b\xd6?\xa3vM]\x9fb\xc9\xf0\x8e\xfa\x8eq\xe5\x9a\n\x9b\xc6]\xdd\xd1\xc8E\xa6\xa3,\xfe\xa4\x030\xf8\xff=\xee\xe0\x8e?0!c\xf8l^\xd3ar\xf8\xb6\xed\x8e\xc1;|v\xae\x19\xbc\xc3D\xfa\x8e\xc1;|p\xef\xec\xdf\x92k\x85 \xd7\x9d\xfd\x10\x00\xef\xb6\xcc\xf7\xbb\xf2\xaf\xbb]\xd6\xcfC\xe9g\xda\xe6]\x96uY\xd8a\x7fd\n\xb5\xf2\x94\xb34K|7k\xbdj\xbe\x8e\x9d\x84%\xec\x0c\x0b\xdb'\xe7^\xe9T\xbb\x8a\xe4\xf7\xf9\xeftf\xf2\x90\xa7\xae\x13\xf3K^Q\x93\xcf\xf0\x838J\xb2\x94\x9d\xa9\xf6[\xeeTw\x11v\x99\xdfeN\x97\xe5\xec\x0c\xcb\xaa\xdd\x88\x9fh\x84\xcf\xc4Qz\xc99x\xb5\x02\xf5\xfb\xac\xfd\xf2,;sF\x14H\x13w\xc6\x1d:\xc9R\xe4\xf1\xc5\xac\x9dup_\xe2\xd7\x8f\x12\xd6\xce\x8e\x1e}\x95e\xec\xbb,}\xd5VF\xb7<\x07-\xb7Cfo\xbe\xc3\x12\x9e\xe5I\xc8\x8e\xcc\xbdZ\xdb\xc8\xcb\xf3\xb2\x91\xd0\x14v\xd8\x19\x96\xb4\xa36\xb4\x98\x06\xbe\xcb\xdb9;\xca\xe6\xc4\xeat:]v\xe4\x08\x9f\x89\x9d$\xe5\xc9\xcc\xd8 |\xcf\xc9\xf8\x9a\x1f\xee\xb5\x9d\x0e{\xe9%\xd6\x96+!\x16\n\xea\xf0\x99\xc0\x0f\xf7\x96\xa20\xe3a\xc6\xce\x88e<2\xdb\xb1\x8f\xe7\xb4\x1a\x8bhGV\x17K\xc0^\x13\x7f\x9fa\xf3l\x81eG\x8f\x92\x8aw\xc9\x173\xebo\xd5\x97\x93\xeb\xec\xb33lV\xad\xb4\xe8\xf3\xc4<;\xd2\xb4\xa0\xa2\xcc\x91v\xc8\xbe\xc7^\x11\x7f\x86\xec\xbbl\xeed\xe7\xd5\x0e\x19\x81XX\xebd:j.t\xfe<Hy\xc3^\x9f\x9c-Z;z\xd4g\xdfcs\x1d\xd6K\xb8\xb3W\xbf\xb5'\xe7\x8a:\xc7\x8e\xf9\xec\xbbl\xb6\xb1\xce\xe4\xd5U+\x9b\xcbe\xca\xe4v\x0btA\xc8\"\x11e\n<!\x88aPG\xe2H\xe7\xc5\x92\x08A\ndJ?\x97\xaf\x84\x99\x9f\xf9<\x9dD\x0fl\xc4 \x93\xc7\x83#\x0c\xce\x92C\xcb\xe6\x89\xb2\x1ew#\x8f\xefn\xad\xb6\xb3*\x9e\xdce\xae\x93\xb9C&\xbb\xb1.3\x0f-U_\xd8Z\xbc\x08\xb2\x18\xd9 \xa2_\"\x88\x14\xea\xd8O\x17\xa5\x9c'NJ<s\xe4\xd1<]\xfc}r\x16\xfe\xae\xa5o\x9a\x88v\x99:6\x8eA\xd5\x93s\x1d8\xf0\xbe\x95\xb4\x8an\xeb\x8f\xff\x99J\xaf\x13\x08]R9\x14\x91\xa1\xa0\x02\xb7\xe9\xf9\xb3Q\x0b\xbf\x89\xf4Y1\xa6D\xf2\xbe\x04\x9eLw\x18\xcc*d\x89?j\x9b\xb3\xd5>\xfe\x83\xf4\xe8\xf1A\x97\xb5X\xab3\x93E\xf2\x0eg\xc9Iy\xfb\x85\xe0\xf0F\xef\x16w\xb3\x19\x8f\xf7\xfd\x90o&Q\xcc\x93\xec\xb0\x9duY\xeb\xe6M\x9e^\x8a\xbc<\xe0\xad.\xc1\xd6 \xe7\x0b\xec\xc8l1\x82N\x97\xc9V\x9c<\xc8\xca\xd3\xac\x99%\xc5\x147\x1a\xc5Q\xc8\xc3,]`\x8en\x89\"\xfb~\xe2\xc4K\xa5\xa2y}\xd14s2\xbe\x19\xe4\x03?L\x17jXA\x1as\xb7\x0e\xc6Tw\xdb<\x90\xb9&\xd2\x05\x96\xd0^\xf4/-J\xf9\xd6Bw\xedu\x9d<\x1b>\xc7\x08\xa2\xe7i;r\xd2\x13Mm;r\x8f\xd2\x05\x96\xd6\xcf+\xe1^\xeer\xd1\xb5[\xbf\xd4\xfaWZ\x84\xc0>P\xf2\xf5n\xcd)\xbcK\xe9l\xdc\x0e\xdb'\xe7\xe7;\x16\xc9\x14@'0\xc87\xa0\x93\x18$\x88W_\x82NaP\xaeA'H\xadT58\x7f\xe2e\x0c\nt_'\xc9\x08]\xdd\xe0\xc9\x13\x9d\xce\xab\xdf20}JX\xbf\x9e\x1c\x08\x02\xc6g\x8a\xc3\xc8^c\x9c\xd96Um\xce\x02\xe3u+j\xe98\xa6\x1d\x0b\x92Mz-\x88t\x95\xd4j\x0e\xfeGw)\xbb \xf3 `G\xce0N\xe59\xc9P$\xcfc~\xc8xG\x93\xa18\x89\xb2(;\x8c\xf9\xcc\xd0I7\xf6CM\x90f\\'\x08\x04Q\x0bA\xd6\xc9\xae\x877\x04S\xb9\x1e\xde@|N\x0d\xb3L\x8b\x04-,-\x02\xfbF\x90J?\xdd\xdew\x06\x03\x9e\xcc\x0b\x8e7\xe3\xa7\x1b\x8b\xdb'\xe4\x9f)O\xc6<I\xe1ow\xc8G\x1c\xfe\x8ee\x06X\xf5\x0f7\n\xd3\\CzN\xca7\x9dl(\xff1\x8c\xd2L\xb5\xe3\xe6\x89\x9f\x1d.\x8b\xf1\xfa\xf2\xa0C\x01'\xbd\xa0\xcbx\x15\xd8\xf8\xffg\xef_\xb7\xe36\xb2\x05A\xf8\x7f=\xc5&>\xb7\x1b(\x82\x103y\x91\x942\xc5#KtY.\xddJ\xa4\xec\xaa\x93\xe6\xc7\x03&\"\x99\xb0\x90\x00\n\x17^l\xb1\x97{fz\xaek\xcd\x03\xcc\x9f9o0\xefp\xde\xa4=/2+vD\x00\x01 \"\x80$)Y\xd5}\xb0\x96\xad$\"\x10\xd7\x1d;\xf6}'a\x00\x9b*\xfaf\xe7\xbe\x92\x1bl\xbf\x0d\xf1\xed\xd6\x8e\x12\xc6}-\x8cW[\xd1\xde\x07]=\x1d\x13W\x0d\xd8;#\xc5\xe1U^\x10z\x91R\x1c_aP\xfc\xeb\xbb\x9c6\xa2&\xday_\xf6\xa6\x0b!\xdf\x16\xc7\xce\x1cz\xec<?M\xa3+\x9b-\x93\x0b~vV.\xe9-\xe4PrB[\xd8\xe9E\x8b\xf1\x1a\x0b_\x1a\x89\x05\x901\xc4\x87\x0f8\xdc\xc4{\xe9\xa7\x8e\xdd\xa2\x8a\xbb\xf8\xcb\xb7i\xed\xcc\x9ba\x02Q\xb12\x8em\\^\xde\x19=\xd3\xcd\xf6UhP\xdd~\xe9\x0e\x9c\x10\xdd=\xdb\xfa)Ob\xcbm\xcc\xac55\x05\x96\xbd\x93\x9e3\x92'\xd19 V\xea}\xde\xbb_\x02W\xce:\xdc\x0e\xc8\x88k\x96\x94qa;\x94\x17f\xb8\x0e\xf6 \xb2 %t\x8b\xe6\x08\xeaF\xda'Y\xbb\xc5\xa6\x85\x90\x17\xe1ylO\xad\x9a$\xb3\\\xb0\x10\x17\xf9\xb9u\xech\x01\xee\x1a\x07)a\x18\xdf\xee\xed\x8e^}\xf4\x0b\xec\x91\xe3>\xcb\x85\xcdc\xa7\x851\xd5\xf8\xec\xa3\xcc\x94\xf7t\xc8\xb0/\x9fq\x03\xf4\xc5L\xd94s\xb7\x89\x85\xf1o E\xe3\xdf\x12\xfe\xc6\xbfk\xdc\xce\xfe\xac\xd0\xfe\xddLI,e\xffvUw\x8f\x91C\x1d\x82\x83)\x84\x13\xbcXn\x86\x7f\x95\xb8\x17\x87\xed\x85\xf9K\x1f\x89\x15F\xfe\x18\xcee=\xbd\xce=\xfb\xb9MP\x0c\xed6\x93\xc4_\xbf?=#\xe1\x9f\xa3\xe4IY,\x92,\xfc\x99\x18\x88\x8a\x9cR\xd1JZ\x9e\x96\x8c\x1e\xa8Hy\x05!\xe2+ \x91\xd2D\x88\xe4\x9f\x86\xd8\x16\xbf\xe8\x84#\x0d\xaan.\x95-\xee\xceP\x7f7k\x87.\x83}\x7f\xed6\xccvq\xab\x8c'\xdc\x01\xc2+>t\xdf{\x11\xe6\x85\xd3\x06\xfe\xeav#q\x91]\x1d\x92\xbf\xdb\x8e7O\xb2\x03\x7f\xb60\xcc\x0d\xa4[\x93\x1d\x06\xbe\xee\x0e\x1d\xc7\xd8Q3\xa2\x14R\x8a\xe9\xe6\xb1\xba\x14u\x0e\xd3\x91\xa6\x94\xe2\xdf\x92Q\x01\x94\x0d\xb1\x14g\xd8J(\xcb>\xb6P\xbe\x84bn\xfe\xc1<J.r\xcbY}\x8ap\xa3i\x02\x1f\xae~\xaa\xc0\xc91\xfdtA\"\x9b|o\x9e%\xcb\xef\x0e\x1d[/0\xa0\x0f\x9d\xa6Qb\x00\\\xaaA\xc1\x1a#\x93\xbf\xcb\xa2 Dl\x91\xda\x05\x96av\x80\xfeb\xefI\xa3\x01\xf1\xa2\xef\xc3|\x96\xa4$\xaf>c\x7f\xf6}D\xf7|\xd2\x04\x00m\xfdk\x0d\x03\x11#\x03\x92\x96\xf9\xc2\x8e\xc9\x05\xf8\x14\x81\xf3\x1b\xbd\xda\xd6_\xaeQ\x056\xf3\xe6aT\x90l\x00|@}\x88\x18FE\x91-Q\xd6\xbdv\x1cG\xc1v8.X\x8b\xa2H-\xfc\x14!\xd7\xf2\xd3\xf0\xcf\xe4J\xbc\xa1\x84\xc2\n\xc3/;\xfd\xd0>\xe2?\xc8\x7f\xadt\xe5*\x99\xbfJV@o\x8d\x8a\xad\xf2\"\x12\x9f\x15\x0b&2\x7f\x92e\xfe\x95\x9d\xc1c\x18\xc1>d\xb0\x01#\x98\xc0\xa6\xe3\".\x18=\x82\x10\xbe\x82\xec\x11\x84\xeb\xeb\x0e$\xd3\x90V8\x96[\x9b\x86\xc7\xdd\xcd\xa4}\xfaws\xd9\x97\x155\xe3\xd3\xcb=j1\x8b\xd3\xe2\x98\x92\x8b3\xbf\xb0\x13\x87r\x93mV3\xd1^\xff\xac\xe0\xf7\xbf\xff[\xf2\x8c\x9a\x9a\xbdK\xa1\x82\xdc\x06W\x1f\x0f\xe3\xebVe\x91\xef\x84\x8d\\\x99\x81\xbd3\xd6y \x03+\x13%\xf5\x86\xa1Z\xa7GB\xa0\xd5\xe4E\x1d\xde\xd6\xc8\xd7\xe6m\xbev\x18\xf1\xb2\x12\x8f\xe3\xf6*#\xccK[\xe1\x9fB\x89\x7f\xe2\n\xff\x14\x1c\xff\x14\x12\xfe\xc9\x18\xfe\xc9\xe0+(\x1eAF\xf1O<\xcd\xba\xf8'\xd3\xe0\x9f\x04Ug\xb7\xc6?\x127E\xf1\x8f\xdfB/1\xc59]\xd1\x8e\xe9\x88\xaf\x84\xd7?)+E>gV\xa9\x8b\x07\x99\x0e\xa2\xa3MH\xaa\xa2\xfb*N\x88\x15u\x98\xa4Z\xa9\xf1P\xaf\xd4\xd8T)5X\xd1H%\xcdcEz\xa5\xc6\xd6\xef\xab\xd4\x10\xbfd\x91\x7f\xb3\xa1\xa7~\x14\x9d\xfa\xb3\xf7\xf9\xa4&b\x9as\xf9\xb6(\xd2'\xa8\x88\x8b\xd4\x15\xde\x12Lc\xf5u\x12\\Mj\xfa\xbcY\xe7\x90a#\xad\xfa\x92\x97?M\xe2\xc2\x0f\xd1\xdfL\xa3\xbc\x94:;\x08B\xf4V\xc8\xd55_\xa7\x84%\xff\xa9\xfa\xd6(\xe9\x12Q\xf1E\x18\xbf\x9f@(j}\xe6\x87\xc3\xb7c\xbb\xab\x9fKxI\x07\x90C\xbc\xbe\xec\xd8\xa6p\x8cUF\x14l\x91\xa8XQ'\xf1\xd1A\xb4\xff.%\xa8\xf5B\xc0\xedr-\xb1\xb8\x18*ex\xb7\x0e7\x0cI\xc9\xec\x8d_,\xba\xe5LJbU@TA\xa6\xa5\xb0)\x0b\xe7`\xaf\x15\x95\x1e\xb0:\x03\x9cH\xe0\xe9ul+O}J\xf5\xd0\xdb\xc4\x05\xebU\x02\xd5$\xda\xcc4\x9d'SI-\xfd\xb4\xa6-z\x94@\xda\x8e\x83\xf0\xbc\x03e\xe2yO\xae&\x12c\"\x9ekW\xdf\xdcb\\\xcd\"\xc6\xeb\xaf=\xc8\\\xc7\xaa\xf1\x81Z_|\x91\x91\xb9\x10\x13\xecc[0\xb9\xd9\xf8A\xcc!W\x16_\xab\xc6\x17\x99XI\xba\x9b\xf2\x00\xa3jc\xe90\xd5\x8c-\xf0=\x9bUR\xaaa\x02\x83\n\xf7LZ\n\x0c\xf9\xd1q\xd3\xd0\xbf\xf3\xa5\x0b\n\xfe\x94\x98\xd6\x12pX\x13\x98\x99\xc5\x01\xb8\xe4Q\x8f\xc8\x00\xfd\x86,s\xa5%)\x16I\xd0\xdbV\x8a\xee1=\xa2\x15q\x9e\xe9=\xc3\xd8t\x17r\xba\xdd=\x12\x99(J.\x8e\xb2\xab\xe7\xc5\xeb\xb2\x98\xb4\x8d9\xe5\xe7Z!<\xd0\xbdo\xbfko\xe3\xb0C\xcb\x8eY\xfey\x194uo\xa3Pu\xe7\xd0\xcb\xc8\x0e\xc5\x9d\x13\xf6\xdf9\xe1\xe7}\xe7d5\xf1\xa1\xbbu\xa4*\xdf\xd3\x85\xeb\xd6\x0b\x07\xdfNX'\x9e\x87g\n\xa8/\xab\xfb\xabb \xba\x95\x98\xb1\xf8<\xee\x96D\xec\x0ee\x06\x84GW\xa9b\x9c3\xac\x12\xe6\x07\x97dV\x16\x8a\n\xf3\x9e+4\xc5\xf2$~\xba\xf0\xe33\xc5\xf7\x01\x82\x8d\xf5\xd2\xcf\xde\x07\xc9E\xac\x92?.X\x95e\x12\x90\xe8\xe0\xd2_\xa6\x11QU;g\xd5:\xb4\xa1\xaa\xee\x12\xb85q\xc1\xe4\x01\x01\xc9gY\x98\xd2\xad\xb7*]f\xf7\xb3\xb3\xd6g|\xe9\xf8'\xe4\x02\x12\xefu\x16\x90\x8c\x04/\xfd\xb4y\xce\xe9ZG\xb4\xda\x99\xf7\x9e\x08\xe1w\x98\xe5E\x9bu\xa3\x80v\x05{p\x86]\xa8\x90\xd6)\xec\x81\x95\xe0)fw\xd3U\xcd\xef\xa3\n\xdar\x81\xc9f\xdb\xb6?H\xa2\\\x19n2\xbc\xf5(\xeb\x1b\xce\xf0B\xba\x97\xcc\nRl\xe4EF\xfc%\xbf\x08\xe9$\x98\x91k\xe4\x85q@._\xcfm+\\\xfag\xe4\x1e[\x88N\xa1_\x06a\xa2+<\x0f\x03B\x0bu,\xf0 \xdb\xd6\xe7qZ\x16*m\x03\x9f\xcb\x0c\xf6\xeb\x0b\xae\x85DOt7\x1d\x93f[\xf3\x90b<e\x0d\x01\xb8\x93\x1e\x19\x88xR\x9bx,Z\xa5G[\xcd\xa7\xb2\x9a^~\x14v~\x0eL\xb4S\xb0\xc2\x9ad\xe4g\x80\xe1\xe4\x1c\xfc\x8c@\x9c\x14\xe0\x9f\xfba\xe4\x9fF\x04\x052\x96\xabok\x96\x04\xa4nN\xbb\xdd\x8e\x0b\x16,I\x10\xfa\xb8P\xb9g\xe9\x04\x07\xc0A\xe7\x14\xe5V\x8d\x16/7...6\xe6I\xb6\xdc(\xb3\x88\x19\x98\x07&HZ\x96Q\x11\xa6~VP\x98\xd0\x01\xc5\x05\x03\x8a\xef\xf2$F\x1b\x04\xff\x9b$[\xeat\x17\x07B\x88\xc2-\x19\xd8\x99u!\xaal6\xacc!\x07\xac\x8f\xafc\xb7/2\xf1\\\xc2\x1e\x1cT\xed\xa5\xec\x06\x0dI\xaekE\x0b\xb3\xf4\xb2\x90\xf5\xda\xb1C\xa9\xe0J\xaf\xddh\xc5\xb0\x9d&\xbax\x16\xf9y\xfe\xcaG\xf7\xd1\x82\x02\xc7\xc6\xac\xe2a\xba\x10h\xe8\x04?\xae\x80F_\xed4 \xae\xaaj\x97M\x9a[% \x13\x8f\xd0%\x1c\x08\x01\xed\xdf\xcb0\x93\x04\xb4\\i\xeaxa<\x8b\xca\x80\xe4va\xa0\xe7Jqu\n%\x95\xbejTW\xa5P\xea\x17\xa6\xcasa;g\xec=\xa8\x9b\xe4\xcb\xc4p\x1f\x7fG\xc4\x1dF\xdf\x99\x08cz\xf1Y\x94~\x8b\xcf\xd8\x89)\xd9\xf9:\x0dc?\xbb\x92\x0e\x91u\xea\xe7dw[p*jF\x81\x03\x9d~\xeb\xb2~\xee\xca`\xd9,CZ\xeag\xfe\x92\x14$\xcb\xbb@\x06}\x80\x16\x18\x87!w3K\"\xa8\xbb\xda\x98%\xd1I\xec/\xc9\xea}\xf6q\x96R\xa7>\xecK\xf3;\xc1\x0e\xa1\x82V\x98t\n\xb5\xa3)\\lL;(.'\xd0\x8f*/\xae\"b\xb2^\x07\xf4\x1a\x880\x98\x07\x1d\x9d\xb6b\xf72\x026F\xeb\xdf\xfe\xf5\x8f\x96\x90}\xdf\x14\x07\x81\x0e:NN\xf0p\xea:/]\x88(\xc0\xdf|\x85\x1a\xbdfI\xba\xc1O\xb8v\xba\xf6\x17\xfc^p,\xe7#L7 iFf~\xa1\xdb\x0b\xca\x95\x0b\xbcQ\xd5\xa4\x97\x82\xfc\xb7\xd8\x0d\xd3\xf8nw\x88dj\xb8w\x9c\x12\xe1\xec\x1a\xa9\xb0\x06+\xab\xabta\x1a\xf6<6\xf2\xfeA\x98\xa7~1[<\x8f\xc3\"\xf4\xa3\xef9\xcb\xaa`J\xc4\xc3n\xff (\xf8\x12\xf1H\x13\x9c\xa0\x9f\x94\x05\x1b`\xc1\xbaz\x01\xb4\xcd\xc8\x9c\xde\x04B}E\xcehs\x13\x06\x8a\xcf\xe7\xb0\x0f\x01L`\xae\xffhU*\x15\x18\xa5\x8azu\x83\xfd\x86z\xef\x9d\n\x1f(\xa5\x1dZC<\x18p\x07\xc9 \xb24\x9d\xfd@\x05'yRf32\x81es\x04\x86\x83\xb2P5\xd3\xbbW5K>\x01_\xc1p\xcb\xfc\xf8\x04\xcan\x0dr\x99\xfaq\xf0\x8c\xa4\xc5b\x02#\x85t@\xf0\xdbJ\x01\x9c\x80\xda+a\xb8\x83$\xac\x02\xf8jA\xd8\x9c \xc2d\xe2WQ\x9f\x13&z.\xe4\\w:3Y\xfb\xa3!\x12j M\xd5\x15\x90\xd58B\x96L#\x06\xec\xdd\x19\xe8]<Pl\x90\x02\x8c[\x10\xf4\xb9\x0b\xdeP\xcd\xd8\xd1MV*R\x9d\x82\xb4\xa3\xb2\x14\xea\xd1\x8e\x9f\x98P\x8evTMB5\xaa\xf4\xf6\x8a\xedM\xa5NT&Q\xe7B28\xe7\x92\xc1\xcf@SJ\x9755\x8a\x03\xab\x91\x15&g\x10\xa6\x04\xa8\xa4\xee\xc5\"\xcc)\x0b\xe4r\x93\xa7V\x81]x''\xe8\xe0urR\x9bk\xd4\x95\x1c\x87[%\xb0\xea\xb5\x03\xcd\x00\x8cK\xdb\xca\xa5\xb6\\ |\x18~\xe3\xed\xb4;\x17$\xfc\xad\x8c\xc4\x01\xc9\x14\xcc\n\x07P\xa3)\x03\xc8\xe6\x0c\x8b0\xf7(1f\xb8\xc9\x99\xa05\n\xe3\xf7\xfa:L\xd2J)l\xc3\xbd\xc8\x151MI\xabc\x167\x8a'\x14b\x03\xdb\xaa\x144\xcf\x03\xc6\xb5\xb5\xdf\xbf%sSS~\xdd\x94\xc4\x1a9\x92$Q~\xed\x15\xc9w\x87v\x0fw\xab\x12\\\x1a\xf9\xbe\xd9Mi\xd9Al\xc6\xd2\xcf\xce\xc2\xf8\xeb\xa4(\x92\xe5\x04\xac\x91\xb7C\x967\xe07>\xe9 \xefz\x8c\xa7\x15\xe9\xa2\xad\xd2\x90\xbc\xc5\x14\xeb\x95\xb0\xaf\xad\x9e\x18g\xcc\x89\x9d\xee\xed\x05B\x98\xc8\x996\xedh\xd2L\x12\x03VJn\xf8\x17\x0b\x8dW-\xfa\xaf~\xb2\x19\xff\xd4\xd4\x81\\\xc9zS\x818X=f\xaf\xf2\x83\"i!\x04Y\xdbCQd2\x87Z\xd1nY\xbd\x8a\xd1\xc2\xcb\xd3(,l\xeb\xc7\xd8r\x86)\xd3\x15\xad\xc4\xf0\x186a\x9f\x1b\xb3\x11X\x87\x91\xe3\xfd\x94\x84\xb1m\x81\xe5\xc0:\x14`V\xe0\xf2\xcat\x10\xeaM\xa3\xb8\xaa\xa5\xa9\xf5\xc5\x06\x8d\x1d&/\xfa\xe5z\xd8\xb6\xa8\xa8\xf3\xe6=q\xdc4,\xb4#\xafF\x91\xb2\xe5#\xef\n\xf6 \xc5\xb7\x9f\x1b\xf13S\x918 /\xe8\x908!/\xe8\x908>/Pz\xbb\xcfT$N\xce\x0b:*\xcf\x88\xdb\xe9\xd6c\x9d *gf\xa0rf\x9f\x9e\xca1;e\xf6P9x\xa5\xbb<ZU\xd9=\x85m\x02\x86\x93?\xdd\x8a\x95\x05i\xae\xb4 \x8d*\x0b\xd2\x1ce\x0c\x18Ci\x86\xd1\xaa`\xb6\xbe\xee@4\x9d5\xadEg\nkQI\xe8\x1eV\x1e\x1dm\x12\x8c\x19\\v\xc8\xb0\xacI\x86\xcd\xfcHX\xa8#\x13\xbd\x08\xf3\xca>=\xc2\x90U\xa1'L\xce\x18\xd3\xd3k\x88M\x9f\xd0\xcbI\xc1\xbe\xaa\xd5Hx\x06\x14gY\xee\xe3{?\x0b\xfd\xd3\x88\xa0\xc8c\x85\x0e\x85R;\xec#\xc8bn\xb3^(\xfa\xd3\x7f\x951O\xfc2\xcbH\xcc\xbf4\xd3j\xd5\xa4\xcfH\xf1\xa4(\xb2\xf0\xb4,\x88m\x05~\xe1o\x9c\xf3>\xfb\xe8\xac\xe6\xc2\xa9\xaf\x06K,\x8d\x05{\xd5\x8d\x82\x91pb\x83\xa9\x0e3\xa66\xc68AZ9\xd1\x97\x9f\xfb\xd1\x04|e\xf1\xb5f\x8f\xabE\x1f\xb4\xa3\x8c\xe3\xc0\xddd_R.\x97\x04\xac\x85\x8e\xe9/\xef\x04\xcd\xdc:\xdc\x00\xfa\xafh\x90\x08\xb4\xbd7T\x9cE8\x8c\xb3\xa8\\\x8b\x9f\x85\xc1\xcb\xa4\x8c\xdb\xc9\xff\xe0\xa32\x19\xdcB^\x0d'\xa4 \xbcH\xf9\xd3\x96\xebcZ\x08%>#\xc7\xcb,\xb2\xfa/^\x15Y\xd7Z\x8b\x1f\xc2(zKf$<\xc7\xcb2\x1f\xb0&\xbd\xa7|\xc8\xa2\xc4\xb2sJ\xdf\xc9^\x15\x1f$\x955{\xe3+\xf5\xdaS\xba\xaf\x1eqk#\xd0\xb5\xab\xf9\xceD\xc4\xd1\x15@/\x19o\x1e\xc6\x81D\xfc\x0d\xa4\xfc\niwyl\xc5F\xdf\xda6LF{h\x8c\x11Vdl\x0b\xb0b\x15`\xe9\x1b\xb3CVO`\xc9\xdc\xaa<>\xa2\x96:zu\xfa7\xb1[\xf3\xc5o>|\x80\xac\xc7\xb0\x11$\xac\xd9n\xa2\xf7Cf\x92\xda_\x0fqj\xa1P\xb7Zz\xe6\x0e\xd4\x08\xb7\xa7Ha\xb31\xf4`\xdf\xa9\xf8\xc4\x8c\xd3\xee\xfc\x98\x0f\xdc7\xcd\xe9\x1e `9\x98\xcf\xc9\xac\x08\xcf\x89\xf8\xd2\x88E\xd0\xfb\xaa}\x92{\xd5\x1d\xb2k\x94|\x92MgW{\x82\x06\x1e5\xb3\x04\x87\xc7\x14\xf4\xf2\xf0g\x0d\n\xe4c\xceo*\x14\x91\xd5|\xc2\x13L\x0d\xd8\xae\xbe\x93\xc8?%\x91\xb1\x9bE\xb1\x8c\xbeA%\xf3\x8d;aa\xd1\x8c\xbd\xd4\xea\x03\x04\xf0&y\xad\xeb0fT 3\xb7k\xda\xa2\x98\x00\xa6o\xe1\x13&p\xeb3\xa0\xe6g[\x8693:C\\!W\xd7\x03\xa7\xdb\xa8\xa7\xb3G\xf6\x8a\x841N\x8e\x905\xf5\x00\x1374\xbe\x0b\x88\xa3\xb4LY\x90`\x83\x8eP\xb7A\xd6S^\x0b\xde\xbd}1\xb1\x0c]7Dg\xa1\x9d\xe1\x8c\xb4\xb5\x17\xdb\xb5d\x8b\xd3\x0c\xd2y5|\xd8\xb4s\xd2Wk\xd89\xf9\xab\xdd\xa9}\xe0\xd5c\x89\x03z\x7f\x0d\xf1\x98\xce\x1a\xda\x06\xd4~\x1bC\xea\xf1\xdb\x95\xc4\xe5\x12\xcd\x11ns\x8e\xe9\xd3\xe2\xe8z\xaf\xf9\xfa\xec\x13\x13\xcfkZ\x8e\xc6\x14V@\x050`\xbf\x06\xa2\x03\xa8\xe2?\x92`B/\xf3\xbd=Hl$\xa6\xfa\xa9\x1c\x86\x1a\xfa\xeb \x9cc\xacH\xb1\x87\x89\xfaq`\xa2\x9fm\x88\x96\xb8}\x93\xe5\xa6\xb5\x05\xb9T\xf1s\xf2\xc3G\xccW\xa2\xcf&\x0e\x86\x83\x83\xb9\x91.\x0c\x9a\x16D\xeb\xf0Q[Ctj\xf4\x88[\xeb\x05\xee\x13\xbb\xce\xf1\xed\xe7&v\x8dtb\xd7H'v\x8dtb\xd7H'v\x8dtb\xd7\x88\x89]\xebQEL\xc0\xaa\x12\xabF\x9f^\xac:\xbb\x8dXU\x12\xac(\xa4\xa7]\xad\xadVy\xdc\x92Z\xdeJy|+\x11\xcf\x9dr?}\xbcM1\xc4)F<L\x8b\x9c\xf8\xf9\xd6\x80\xcaYU\xf9 \x0e\xd7P5\x19\xe0\xdf#\x9ePf\xc6L\\\x03\x8b|o=M\x8c\x84d\xc9jq\x87\xe7\x1e\xad\xf0 r0\xa4\xc7$DF\xa5\x9f\x82\x1cF\x1c\x9eE\xc9\xa9\x1fm\xb0I\x9bl\xd2\xc1L\xcd\xf8C;\x14\xe1;.2?M\x95\xb0(\x9eer\x1aFd\x02\xa3\xf1\xaa\x83Y\xcd \x95\x8fh\xa3\x08\x8bHo\x04\xcb\xf7\xd1D\xb3\x96F51\xeb\xc5hs\xd8`\xf0'\x10{yCll\x02\xc9\x8e\x8cy\x02YW\xf0\xdc\xf3}\xe7\xfe\xae\x1aYA\xb8\xd8\x11<\xb0\x89\xac\xd6\x82J\x12Q\xb7S\x95\xe2{\xf5\x8e}\x12\x82`\x86o?7\x82 \xd5\x11\x04\xa9\x8e Hu\x04A\xaa#\x08R\x1dA\xd055c\xe1\xc6s\x85\x01\x9a\x9d\nm,\xfa\xa06+\xa0\x8b\x87=\xdaT\x92\x12\x8ah\xe0\x1f\x9b\x94\x08`\x0f\xbe\xe1\xfd\xd7\xe1\xbf\x9bc^\xf4\xea\x86$\x92\x83\x18\xb8\xd3\xc1\x1a[\x90\xa4\xea7\xa5G0d9\xab\x8dc2\xdfT\xa8 \xc3\x83w\x94\x1c2\x07\xb8\xbeI\x8b'\xac\xfcO\xed\xd0\xcb\xf1[\x9b\xe8HzJ\xd4d\xe4\x16}Q\xc4U\xf8\x05\xe9\x91\x8d\x979\xc9P\xe3\x15\x84\xf3\xab\x1ewsW1{\x95.\x0f\xc4\x04\xf2\xd5\x06=X\x0f\x0c\x95\xec\xd8\xe8\x05-?L\x86\\\xd9\xf6\xf6pv\xc2\xbf\xaa\xe5\xaa\x87\xf1\xc9\xb2\xe3\x1e>\x19\xe9\xa3\xa6Q4\xb7\xa5\xeb\xb5\x10\xb2\xa5\x98\x81I\xdbMk\x1f\xa1w\xee1+\xa4p~\xe5\xd8\xed:\x15\xd2\x17\xb0>GI8\x962\x0fE4\xe5a\xf3\xe8\xe3\x9d\xb9\x8b\xdb\x0fYX\x90\xd7qt\xd5\xc0\xbc\xedG\xa7\xabp%\xb0\x1f\x0c\x08\x83\xa1\xb7W\xcc\xc0\x80\x96\xe9\xee\xaa\xd3g\x02\xd9\x85\x1f\x07\x11y\xbd\xea\x88[\xa0;\x14\xd0(\x10\xdf\xfb)O\xe2{\xa1W\x90\xbc\xb0\x0b\x16\xc0^\xb6\x1d\xe0yf`2\xc8\xa6\x00VY\xbe\xf6\xe17m\xaf\xbc\x91vlX\xc1\"9;\x8b\xc8\xf3\xfc \x08\x8b\xaf\x93K0$\x99\x91\x1f\x19\xbf\xb2\xb1\x0f[y\xe9\xdb~\xb9W(F5\x815\x8c'\xc0\xfe2~\xa7\xb6\xc0\x84\x1e\x98\xc7\xa46\x9d\x08W\xf2#\x8fE\xe1|!\x9e\x0e\x82\xd6W\xe5\xa7A\xa3p\xa4\xc3\xea\x14t'w{f\x1bV\xb2\xa9\x80\x15\xf8o\xfa\x08\x05u\xe3\x16\xaa/\xf1\xc1*S\x1d\xf6[\xdd\x02\x02V\xb1\x82\x001\x85\x16\x9e\xe0\xb6\x04\xf5\xdf_~\xa9\x9e\xaa-Ur\\X\x93\x1a\xab\\N\x18\x11\xd8\xf8\xb3\xd2\xeb\x0f@\x0b2d\xae\x8e\xf1o\xbc\xd4\xcf\xc2\xe0]\x1a\xf8\x85.\x08\xc2M\xd7X\xa2\x11\xf8*\xcbo\xb4\xeb\xac\xda\xa5;\x9a\xb2V\x10\x05+\x1e\x86a\xeaxXA%\x0f\x15ie\x88\xb6\"?\x99P\x9f\x0f\x101A\xa5\x9f\x1fx?\x86\x98O\xce\xfa\xba,\n\xb3c#p\xba+\xb3\xad#rY<\xc9\x88\xd2\x15M~JV}\x11\x9e-\xa2\xf0lQ<M\x02\xa3U\x1f\x888\xde\x08-\xf4\x18\x99\xebR\x16/gW\xb5\xb9\xe2\x1c+V\x87\xce\\9\xc5\xca\x8dK\xa1\x97\xaa\x8cn**\x83\x96\xac\xe84 \xae6\xd0G\xc4\xe0\xb0\xe0\xc2\x1cM\x181~\xf2\x0d\xc4e\xa0\xed\xf4\xe4d\xb8\x1e\xa7'bXK\x8d\xdf\xa4\xfa\x0c(\x0f&0\xa3\xb3\xd3\xcd\xcc(\x04\x03\xc3\xcc\x04 ?lr\x86\x11\xba\x1fc\xbb7\x98nQcR\x01l\xdb?F\xbf$\x085~\xf2\xc0:5\x81Y\xb8B\xa7s\xd8\x07\xeb\xb4\x88a\xe6\xc73\x12\x81bo\xd8``\xc2\xea\xd1?\xf4\xb5z\xa1/\ng\xef9\xf0\xb5\x08f\xf3\xc9\xda\x07\xeb)\x8e\x10\x07B?\xa9\x02#\xb8\x90\x9a@s\x95\xd5\xc0\x19.\xa3\xad\xa1\xf3\x18tY\x89\x87(\x04\x1bv\xa2W\x04\x83\x99\x08w\xc1zK\xdb\xb3\x94\xd1\xf4A}?\x1fw\xb34\xd9\xb9\xf7\xa6\xcc\x88J\xe8\xb9\x10K\x8a$`\x87\xaa\x97<\x86\x1bA\x87X`\xf1F\xd5\x86\x872\xa5\xa6gup\xc6v\x98\xf1\x1aG\x05\xd5\xfb\xebf\xfa\xce\xc5\x1f\xf8\xcb\xcfJ\x02\x8b\x0e/\x1d\x81\xaap\x85Q\xba\x01+}d\x84+\x8c\xd2\x0dX\xe9##\\a\x94n\xc0\xb3\xb6\xb2v\xa6W\xd6~v>0\xb0\x9a\xf4T\xe1\xee\xab\x97\x9ef\\zz\x13W\xe0\x81\xd2\xd3\x94U\xcc\x0c\xa3@\xf2\xad\x8f<E\xcf\x9c\x1ew\xdb\x08\xeb0\xd1\x9b\xbe\xd6\x0c\xbb;\xe3x\xa8'\xcb`6\x80\x9f\x8f\x11s\x9a\xc6\xce\x03&\x18\x82\x8b\x1a\xef\xf7kWa&jd\xe0o\xe8j\x0d\x15\xa3\"\x96\xe7\x8eY\x95\xbe]\x86J\x7fn\xdei\xa8T\xe7\"]\x0d z\xa9a\xe6`#\xa4\xbb\x14\xe1\xe14\xac\xe1\x11\xf2~\x07\xe6n\xf8\x8a\xf5\xc1=\x0c\x0cJ-?\xcc\xe2\x80d\xd9\x00\xeb\x04\xa8\xcc\x0e\xfa\xf7\x8e\xa5\x0c\x11A\x15\xcduY\x021\xebmr\xd1W\x93\x87\xcb\xee\xb1O\x80Jc\x87\xb9\x8e\x0e\xb2L\x1d\xa3S~f\xac\xfe\x10\xb7}\xa8tx\xd6w\xe52=J\xde\xf8\xc5\x82\xc5\xeb6\x7fD\x19<\xbb\x90\xd4\x07U\x846\xc7+\x92\x17\xc9\x85\xc8*nn&\x10\x80Sc8\xf3\x07\x0b\xc4\x87~\x14\xe1J\xe4\x18\x17t\x85\x9cG\xe2i\x1a\xb8\xd3\x95\xc5`\x05hdh\xfc\xb8\xcfG\xc5:\xf5\xf3p\xc6b\xcb\xa5}#\xa1G\xe7\x1c\xf6 \x80}\x08\xb8\x81rN2\x0c\x84&\xc8e}w0\x98ufd\xb7\xb6\x92d\xfe\xab\xad\xd30(N\xa4\xa8\x0el\xb0\x0eF?\x03{Q\x14\xa9\x0b_\xd35p,}s\xf3>\"\x1f\xaa\xf0\xd5SK\x91M\xcer!9\xee\xd9'\xc7\x85s\x13\xa3a-vk\xab\xe7*o^`\x19XS\xbfo\x99fC\xe6%b\x11\xa8\x82R\xf4\xcf\xe9\xc6c\xab|\x13\xf8\x94\xdfqH\x9bX\xb8Rz\xfe\xb4\x15\x01\x15,\x17\xce\xf1_\n\xa2\x06 \x83y8\xbd|\x1e\xacd\x17\x0b\x9ck 3\x12\xe0\xed&\"b\xf6~\xc5\x08\xa2\xfa\xe0\xf5\x7f\xd1q\xae\xe8\x91\xc7\x00\xdb\xbb\xbb\xdc\xbc7~\x9e_$Y\xb0\xf2\xe6\xfd\x11\x9fO\xb1w7\xdb\x0d\xbf,\x12z\xddG\xa4\xa0\xbb\x12\x93\x8b\x8d\x94\xcfu\xc0\xd7\xb1\x08\"8\xf8\x0b\x0ea+|q\xf3\xdd_\xe8\xfdkz\xc2z\x88\xa7\x07\xdd\xe7C\xf6\x85>\x84^\x9e\x83,\xe4\xa1\nf\xda[\xd5\xe0\"\xc8\x8a\x0dF\xf4\xda\x12\x11\xb6\xe4\x94\xf8\x19\xc9\xf8\xbdj\x82\xf7\xdf\xe9\xc6\xc3\xe1\xdd\xea\xca\xbb\xf1u\x87\xd7B\xf0\xd9]u7\xba\xe6\xee\xf6\x8ac\x16\x89\x16.\xcf\xe7\x86\"\x87_m\xab\"\x9c\xbb@6w\x81h\x86#\x99\x01\x08\xc6\xe8\x7fl\xda\xa9a\x08\x81,\xfb\xeb\xd4\x11\xab\x12\x0c\xf6\xfe\xed\xd1\xd1\x1b\xccLK\xe2\x82\xcbR'P\xc6y\x99\xa6IV\x90\x80IR\x08\xa5\x97\xac\xffh\xc1:\xa4\xb0N\x7f\xddN\xfc[\x0f\xaf\x16\x017W8\xed\xb3e\x919\xf6.{\xd1\x002\xb9)c4r\xc6\xab7-\x98\xf4\x1b\xcf\xb4\xab\xccLH_+D\x0b\xb5\x1e\xd5$3c33\xf1e\x95\x82\x92\xaf\x1d\xcf\xe9\xc3\xc4e<h\x8c\x9a\xd1\xf2a\x1f\xca\xa9\x7f\x8cqp&\xd8R\x88_\xf6\xdb(p!\x8a&\xe4\x98!\x8f\xa4\xfc\x08i\x90\xcd\x07\xabs\xad\xea\x02O\x13n\xfe\x91|\xa5f\xda4m\x9f\xa5`\xfe\xbf\xd50U\xbe\x0b\n\xf40Xl_\x85\xa9\x8a\x94a\xaafU\x98\xaa\xc8qq\xc8\x9b\x8f`\x0e_A\xf4\x08\xe6\xeb\xeb\x0e\xcc\xa6\xf3f\x98\xaa\xb99L\x95\xafU\x0fh\xc2T)T\x04\xba0U3\xbcR\xfd\xae\xafF\xaf2\x04$\xabK\xbfO<\xca,ZRej \xf1\x08\x0b\xe1b\x91h\x84\xc8|M|o\x9ed3\xc2l\x95l\x1c\xbe&\xd2\x11\xaai\xe8\xdd4\xa1\xb7T\xa6\x8cz\xe4k\\L>\xfd\x02$w\xb3\x00\x9d\x99\xa8\xb2\x92\x1b\xb3\xbe\xd1;'O}J\xe3\xd6\xab\xa7\x96\x1e*s\x9d\xd1\x01\x9d\x99\x00\xca\xb4\x9cd\xc8r2Q\xbby9\xd9\xc5=h9\xd9\xeau\x86l\x17\xd5\xec\x15\x06\xb7\xf54\xe5\x15\x87\x9e\x94\xbf\xe2\x11\xa4E\xefT3\x96g\xbe\x17r\xe2\x95\xa7*\x0f\xdbp\xdbK\xd0\x90\xd5\xd0\xa0\x1fL\x15\xe9G\x0d0tM\xb4k\xa9r\xbc\xfa\xf4\x07q\x05LT-\xa7j\xe4\x03\x82\xc8\x19h;\xe5)T\xc7\xa9Q\x07\x8d\xcb\xebxn\xd2\xd5\xe17\x12\x08B\x87\xa0\xba\xbd\xfa\xf2ws\xf6MZY~\xfbp\x03\x85\x82\xde\xaaYGW\xa7\x06 \x96\xf7\x95R>k\xf1\x80$\xa1\xe7<iy&\xb9\xe8\x9a\x19\x86\x02\xb3\xcb\x99\xf9\x85\x02\xf6\xa1\x0eG\xcd\xf3\xd0\x14\x0bMh\xdca:\x16=\x10\xcb\x06KIz\x1a%\xb3\xf7\x1b9a4X5\x88\x8d\xbeh@\x1f\xa3\xfb\x8d\x05\xf1\x03\x83\x1f\xf1\x9d\xf4Y\xf8\xa77\xee\x07\xe5t\xc3\xba\x11S\x1b\xe4 \x9c[Fq\xfcJ\xf3\x13\x1dK\x02\xae\x0d\xe17\xfd1'\xbc$y\xee\x9f\x19\xa6z\xb4 9J\x1f|\x17\xac\x8d\x88\x9c\x93\x08\xb8\x81$$\xe7$\xcb\xc2\x80@\xb1 \xc0\xdc\xcb9\xb2\x15U<\x93t\xd0\x1ck{u'j\xa1\x02>\xbc\x8d+u\xe5;pKo\xea\xa2\x11[p\xb8;t\xdb\xa1\xba\x9eT6(\xc2\x9b\xd6\xa3Z4\xa4*U\xef\xfe\x8d\xe2Yw\xe5J\xffhB\x83\xed-\xbd\xd4`\xab\xc3\xd3\x87UQ\xc7\xad\xd9\xaf\x8a\x1e\xe8d\x07\xdb[\x0fu\xd2\x83\xedme\x8ckV\xf4yX\xf2\xc9\xfb\xd9lHX\x8dHym\x9aSyR\x16\x8b\xe7\x05YJ\xb9\xc7\x9b\x15\xea\xec\x0c\x93ZR\xd0\xacR\xa7\xa2<an\xa2\x92\xfc\xb6Y\xf3{\x92\xe5\x94T)\xfce:\xa9\x89\xaaf%Lv+\x05aj\x81@\x1c\x851=\xbfa\xe0\x17I\xf6\xb5\x1f\x9c\x91IM\xeb\xb5V\xe7\xf7\x85k\x17\nO\xec\x00\xec\xf1\xc4V]`\xcf\xb5\xa9\xa3s!\x93\xc2\x1f\xa3-G\x05\xf59&\xc0\xe9\x9c\x15f\xbb\xb4\xb5\xa3\x80xZ\x7f[ \xb8\xf9\xa7\x05\\!P\x8a\xc9E\x0d\\\xb65K\x96\xcb$^\xfa\xd9{9\x84KD\xd1x\x8b\xbd\x88\xc2\xf8\xfd\x11\n\x9e'`\x9d\x9cF~\xfc\xde\x926\xa0\xb9\xd63dq\xa4\x0d\xd1\xb3X\xe7U\xcak\xa6\xf8\xea\xe2yFMWWx\xb7BX\xed8\xaa9cJ\xa5b\x02\xbb&]\x8a\xb1~u\xa2;\x0c\x10\xe51\xaeB\x9bv3\xafDe\xb9\x1f\x87E\xf83\xc9\x1c\xdb\xd7T\x9e)\xe0P<B;[\xa7\xdd\x14\xf1\xc1sL\xbe\xc9\x9c\x8b\x98g\xf0M3\x04\x06~|F\xb2\xa4\xcc\xa3\xabCR<\x8fc\x92}{\xf4\xf2\x85)}\xc9\xc9\xc9\xa2XFz\x03U\xf5<k\xda\xaa%\x1d\x0c]\xc1\xa7\x91\xa06\xaa\xeb4\xd2\xce\x83\xa5:\x13\x94\xd3\xa9\xa1M}\xbf2\xee\xf1\xf5\x93\xc3\xad\xea&\xfe!\xf3\xd3o\xfcY\x91dW\x8e=c\xfd\xfc\xbe\x88\xaa\x8b\x93|;\xb6\x1f(#\x9a\xf8*l\x15\nd\xa3B*\xfe\xa7E*\xed\xd5\x0f\x0d\xab?\x04\x03\xbc\xce\x14\xa4o\xdcUB\x11\x17\xa6\xd6\xeb,\xb4T\xb1\x1aX\x08n\x9d\x9d\xac/b?\x18lc\x11q\xf7\xd8\xc3\xa2\xf4C\xb2K\xee\xd6@l\xeb%1\xbd\xf7uz=\xb48\xd5(\xe1\xe6\x08\x01\xd6\xb7E\x91\xd2&\xda!\xb6\x04\nY\x14E\xca\xcc;xpn\x96\x8a\x18\xf6\xeb\x938\xc4\xa2\x02\xa5*\x864\x80\xaa\x8d\xc13\xaf\xf8F^9ef\xc2z\xd9\x94\x16\xf5\xcd\x04|\x8aM\xac5\xfbQ\x13F\x1d\x98h\xa7\x8d\x07]:\x89\xf8\xf3sC\x06\x0b\x8a\x0c\x94\xbe5\x0b\x9d\no\xa1S\xe1-t*\xbc\x85N\x85\xb7X-\xc5\xde\xc2n\xe7w\xa40k/\x0cq\x8fR\xfcl\xdez\x1bT\x9f\x8d\xd9w\x94\x1fQ\xe1\xb7\xc5\xa7\xc5o\xc2\xcex\x90RP)<\x1e\xac\xf5\x13\x02\xfb\xbbp\xd41%\x83WGkA\xc8\xd7&7\x10\xc2\xc4\x98\xc9I\xd5\xd2>6\xa6<%3\x1e\xb6\xd0\x9ba?\x98\x90\xeb\xeb\xab\xe7\x01\x89\x8b\xb0\xc0\xa06b\x08\x7f&W\xa8*\xc2\xbe;\x8db`mQ\xf5i\x12\xe7\xe5\x92\xe4?0\x01\xd1JB\xfb\xdea\x17\x8aa\x8b\x0eQX\xe0\xd8Ek\xd0\x9a\xe12_\xcf#\xfft\xd0\x00\x05\n\x97\xd2\xf2\xb1\xbc\x0f\xb0\x8f\xd1\xe0z-%\xea\x0f\xbf\x0f\xf3\x10\x85'k\x9bj*\x8d>\x14FN\xfd\xd9\xfb\xba\xb2:\x1c\x14\xa2QK\xd4^uP\xdd^\x0cCR\xcd\xc00(FO\xab\xd7\xde\xec\xc2\xa5\x98\xbbzT\xca5U\xf6\xa8A\x1f\xf0\xb9j9\xf4\xbb04z\x04\xd3n%\xf1Qv\x95\x94\x05:\x07\xeb+'\xbc2\xf3g\xee\xa9\x1cr\xbd\x99X{}M\x96\xe5\xd2\x8f\xa2\xe4\xe2(\xbbz^\xbc.\x0d\x96P,\x87e\xc1\xeb\x1d\xc4\xfei\xa4\"\xd5\xc4\x83\xf1\x1f\xbc\xb9A\x0b\x12\xad\x10\x0e#\xa8\xebb\x1ag}\xcd\x05\xd6\x1c\x18L\xf6\xbc\xaa\xdc\x1b\x1fv\xc9\xb6`H(\xd9\xb3\xaa\xea\x80!\\UZ\xce\x97\xa8\xc5\xd4\xd7<\xad\x06\xfb\xc6\xa8\x13=a\xdd\x0b\xad\x8e\xbe\xe2\x05\x86e\xaeQf\x8f\xc3\xd8\x01\xab. \xa5?\xd2\xc8%\xfb\x80\x07\x85;BZZ_\xfb\x90\xd5~Z\xa1\xca\x1e\x0f\xb0\xa7\xac\xfe\xdb\xdaM\xbc\xef\x8b\xf7\xb0\x07%\xa5m\x0c>\x7fO(Q\xe5\x859e\xbe\xf4\xb5^\xc3\x1e\x9c0\x16ArS7\xcd\xee\x0d\xec\xc1\xa9\x97G\xe1\x8cP\x9c\xb51rx\x82\xef\xc6\xf7F\xe5\xdf\x8dS\xad\x1a\xb4oZ\xcd\xcd\xc7\xe8\xacO\x05w'}\x0eP\xf5\xdd\xb8\x9f\xd5\x838T>~\x155\xd3\xcc\x1c\xac\xfdX# \x02\xc5l\xc3\x82,\xc1\x82u\x9e}\x8b\xd9\x93v\xae^\n\xf7\x96\x8f\xaa\x1b]2S\xc3\xca\xac\xa0\x13\x1c\xa6\x04\xd5\xf6\xc4#2W>F\xf5ZQv\x86\x1f\xba\x9a\x9er\x0c\xd9x?\xd1~J\x83\xf9h\xdb\xd9\"\xb9\xfe17\xb3F\xedR\xcce\x17\xcd\x9bu-\x1c\x98\x06J\x18\x0d\xa2\x14\x8b\x88\xa7A3\x193=6H1]r 9K\xb3\xf1\xb4\xdd\x02*\xe5\xf5\xaf\x1b\x1e\x10r=\xf4fI\x19\x17\xf6\xad\xceD\x0b\x1c#2\xa0cmg\"7\xcf\xb0\xee$\xc4\xb8zO\x14\xe7W\xa0\xa6\xaf\x96\x0d\xa8\xb3\x18<\xe2Y\x12\xc1,\x89N\xd8\x85\x03\x8d\xdd\x8aN\xd0IK7\x13\xeb\x15\xbap}\x8aq\xc8nO\xda\xe1<\x93}\xa3\x1c\xe3\xb8\x1a\x99\x94\x06\x99P\x82\x8c:%\x9f \xee7\x9fV]\xbd\xf4S/\xcc_\xfa)\xf3\x17R\xd8\x1f\xd2\xe7\xda\x0e\xa5\x8e\x07&o\xd2\xcd\xe7\xa2\xcf\x8fh\x1e\x1bc\x95@G\xcaj\x88ZB\x1fA\xc1O\xe0\x94\xd1\x80}\xd9\x84j\xb6g\x02\x06\xfe\x80>\x99\x7f\x81W\xe6\x04z\xe2T\xa4\xac\xd6\xa2F]?\x84\xc8\x82\xf8\xb5|\xc9\xbe\xc2\xf4%\xc6v\x98\xdb\x94\xec\x94h\xae\xdf\xcc\x04\xd4\xe7\xa3#\x7f!\xa4H\xf2\x97-QV\xff\xbaK\xb2t\x03\x07%jsNo\x02\xe7}\x8b)\xb8\xb7 \xf4\x04\xd7\xaeBEN\xe0\xbd\xb6\xa2.^h#;\x1c\x06\xd8\xbb\x0b,\x7f\x13\xe31m\xc7i}\xdd\xbfJ m\x90o0\x01\xcbj\xdc\x9bm\xb2\xe6\x8e\xee\xad\x8a\"\xab\xef.\xb8\xcbY\x1e\x1a\x07\":\x9f\xf0\xb0\xe2\x98Z\xb2K\xb8\x1a\x0e\x8a\x8c!\x14,c\x1f\xc1y]-\xf5\x13\xdb\xa1\xa4\xe2\xeb:t\xab\x9e9\xb8\x93\x95\xff\x87d/oJ\x0f\xd7\xe0}\x82w=\xa3\xda_\xd7r\x01\x8c7\x80; \xfd\xa9\xbd\x81\xb9$\x03#%\x1a \x83\xa6\x87\xb1\xae\xda\xa5iN\\\xe6y&\xe2\xfb>\xade4\xdc\xff\xe8\xccmk\x8a\xafL + y\xf2 \xf05\x10\xe9\x00\x1c\xef=\xb9\xc2\x1b\xdfH\xa8\xf3\x8b\xa1_\xd8/\x9e\xa5\x97\x93\xe2mg\x06\x03r\x1c\x8bh\xf8fd\x0dm\xdcn\xacmr\x0f\x1e\xc6\xfeI\xd1<\xf9\xd2m\xa0\x06Zw\xcaM@r\x93\x83t\x17\xb8\xf1\xa9\xd1,\xb7Blo\xf4+\xd2\x08\xfc\xf8zP\xbd\xef[\xe0\\\xbd3\x01s\x9d\xf8\xa1/\xf9\xaf|i\xaf\x06\xc1\x03\xdc\xdc\xb5\xa6T\xedG\xa85W\x9be?\x84\x03W0\xcck\xea\xdb\x8e)\x0f\x19C\xe3\n3D\x9d\x12\x0f'\xb5\xe5sY\x0dr\xc0\xa9\x84\xd5h)\xf1\xf0\xc3\x9c\xd0^\x9f\xc7L5\xd4\xfba_\xa4\x90\xc1\x88g\x95 ~Fh\xa7F\x97\xab_\x03Z|t\x03\x8bo\x95\xa5\xf7\xb9\xe8M\x1dD\xb6%\xa9\xe9\xcb\xb5\xd4\x12\x01\xf5Uoi\xb8\xba\xda\xcd\x86\xbe\xac\xab\x92\x95\x94\xdb\x13\x98\xd6!SZ\xf1h\xe9\xaa\x06\x06\x1b\xaf\xf3\xcf\xd0\xa8\xc6e\xa6\x0b\x1d\x03\x16\xcc)\x95\xc1\x1e$H\xecdM\xd3\x91\xccl:\xd2\xf4\x93k\x81\xac_[\xe8\x89W\xab\x98)\x0e4\x94SZ\x83\x85\x83\x84\x9a\xbaZ\\?\xadod\xe9G\xea$\xedyq\x15\x11\x9de)%\xfb\xcf\xb2\xa4\x8c\x83\xa7I\x84\x19\xdc\xff\x7f\x0f\x1e\x9e\xce7\xb7\xbb\xf7t\xeb\xe4\x19\xc6\x92fj\x19\x9dL\"\x9c3\x1bx\xab\xdd\xa8E\x17\xdf\x92O\xfegj\x0d\xd6\x03E\xd9\x10(\xd2\xd8K5\x0dj?\xcf\xe9\x07\xdax\x16\x81\xce\x18.\xd0\x19\xc3\x05:c\xb8@g\x0c\x17\xacf\x0c\x17\xa8\x8d\xe1\x82\xda\x18\xae\xebd\x93r\x0f\x81-\xa5\xb1[\xf0\xe9\x8d\xdd\xcc)\xfe$c7\x15\xed'\x19\xbd(L\xde:\x9e\xc2\x83M\xdbn\x95Q\xf8\xf31\xbf\xe93\xae)jO\xe0\x1es\x11JPO-t\xde\xd98M.\xadc\x03}O!L\xeb%\xcc\xd7i\x8d\xf9M\x88\xe0\xc2\"\xeeX\x9a\x91\x99_\x08i\x80\x1dsI\x8e\\\xc0.\xd7>U\xda0\x86\x8e\xcd\xa7n}\xe3\xc2\xcf\xe20>3\x89\xffE\xdd\x89uW|e\xec\xfd\x94\x84\xb1m\x81^\xe8\x91\xe8{J\xbd\x97t\x16\x1d\xfa\xf3\x97kW\x86\x01\xc3Pd\xb9\xb9\xc9\xb6\x88\xa4\x94#5d\x0b#\x97\xa9\x1f\x07\xcfX\xbd\xbaoOzO\xcf\x9b:\x01\xd4\xcd\x1c!\xfb\x1c \x19_\xa6\xbf\xb3\x16\x9f\xe75\xf4\xef\x0e\x1a\x9f\xad\x83\x86\xc15C\xaf\xa8\x890\x91c\x97\x89\x02~\x93\x87\xde<\xc9\x96\xbe\xa2_\xee\x92\xc1\x03\x9a\xab\xfd1\x84K\xd7\xda\xde\x1eD\x18\xd9\xfb4\x8c\xfd\xec\x8a\xbd\xc1\xecB\xd6\xa9\x9f\x93\xddm\xf1F\xef\xa9\xc1@_\xef\xd2\xa0\xf4\xe4\xe0\x01\x12\xe7\xa12\xdd\x90\x84\xeaJ\x1eS\n\xf6\xc1\n\xe3s?\n\x03\x8b\xc9\xe0\xbbm\x86E\xd4\xfc\xa2\xd4\xd4\\E$\x9a\xdbU\xcaK:\xda|\xba\xa9\x08\xd2\xaf\x90\x07\x04a\xce\xd9\xdc\xc2\x0b\xf3g\xfc\xaf\xe6a\xf8\xcch{\xb7\xca\xbd\xdfL\xef\x0duR~\xe1\xe8\x9e+\xde\xd5u3\x92\xa7I\x9c\x13I\xea\x01R\xa6\\\xcd\xebJ\xde\xc3\xdbnEN\xd2\xb9\xcb\xc6\xf6}\x05\xd6\xd3\"\xb7P\x8b\xdc\x8c\x84R\x15\xf0\xacP\x06<\x8b\xab\x80g\x94\x88\xccX\xc0\xb3\x0c\xbe\x82\xe2\x11d\xeb\xeb\x0e\xc4\xd3\xac\x19\xf0,\xd3\x07<\xab\x15\xf0&\x92\xadJzwx\x95\x17di;M\xdb\\\xfc\xeb\xbb\x9cN\xc7HW1Z\x96\xd9e:v\xc6r\xbf2j\x96\xad8?\xde\x0d^L<\xad\xdb\xf6\x0f\xdd_\x8a\x8d\x0c\xcd\xd1J\x854\xb6\x80}\xc0\xd4\x18\xcd\x06\xacc`\x81t\x9b/\x95x\x0e)\xd5\xe7\xb1\x1d\xf3\xec\x05-XW\xc0]kl\n\x03\x88V\xd3Sag\xfa\xcc/|\x8b}\xe22\x85\x03\xcbZr\x8c}\xb78YWw\x18\xee\xaa\xffn\xe3\xa6\x81\xa8N\xeb\xdd\x8d\xa4\xd3\xba~(j\x84\xd2?\x14q\x1eT\xae\xcc\x98\xb8\xa1\xbe\xf0\x84\x0f\xb3\xd6\xc9:\x91P\x9b\x9are~\x00Ul*\xc59\xc6\x80\xa2\xfb0\x0d\x11|;s\xc2\x98\xcf.\xc4\x02\x94\xf5\x15\x9a\xe7\x0bH\x94\x13\x15S\x8b\xbc\x96\xa6\x9d\xa2\xdb\x8ei\x1b\xb3a{\x93\x0f?\xc8\x9f\xc9\xa6\xc4C6\xc5\xbc#\x03\xb7#6n\xc7\n{\x11W\xaa\xb4\xcc{\x9dq\x17\xf5\xd4\xb1\x1d\xe5\xd6t.\xed!\xfb\xe3Br\xbb\x9d {w\xc6\xef\xdb\x99\x84\xc5\xddeq>\xf7k\x84\xe2\x9b6\x8a%#\x17\xa8G_M\xb5e\x08Mn\x9d\x82\xa8\xa7\x89G\x9de\xa3\xb4}\xa2\xbcrl\xdah\xac\xd9\xb6\x81\xb1\xbai\xeb\xa5\x97\x914\xf2g\xc4\x8e\xc9\x05\xbc%g\x07\x97\xa9m\xfdb\xc1:`D\xc6k\xcb\x05\xeb\xccr:*9\n\x11\xa5\x04\x1f\xf8\xf3\xf7\xa5+\x95\xca\x8e\xd2\x8e\xedqG\n\x1a\xf2\x92Q'4\x0fSX\x8c\xb7v\x95T]\xf9;\xb2\xac\x14\xfb\xfer\xed\xb6\xa5\x82\x99\x0b\xbe\xf7\xee\xcd\xb3'G\x07'\x87\x07/\x0e\x9e\x1e\x1d<;9<x\xfb\xfd\xc1\xdb\x1e\xe3\xce\x8a\x02\xf2R\xff*J|\x85i\"\x8b\x88\xd9$\x82\xdee\n\xfb\xc8\xa4r\xde\xc7\xc3\xa7ft\x13\x8a\x16\x93[\x92ZLG\x1c6\xdcd\xaf\x1d\xe3\xb2\xbc=\xf8\xcb\xbb\x83\xc3\xa3\x93\xaf_?\xfb\xdb\xc9\xf7O^\xbc;\xb8\xab\x95\xd1\xc4\x15\xe7\x0e\xc2\x06\x9f0\xbf\x12BT#N\\\x18+$\x04\xf4\x94\xfa\xd3M\x85\\\x13\x13\x04NG\xe6\x85j\x93K\xa5\x0by\x93p\xbc\xc9J>}\xfd\xea\xe8\xe0\xd5\xd1\xc9\xd1\xdf\xde\xfc\xfbZ\xaa\x88\xe0\xd5\x16\xf5\xf0\xcd\xebW\x87\x07\xbf\xcf\xaa\xeadR\xaa\x98\xac=\xeb\x91\xb8\x10\xeaH\xf1U\x16\x84a\xaf\x93\xef\x9f\xbc}\xfe\xe4\xeb\x17\x07w{du$\xc4 \x0c\x16{\xef\x89\xc2\xa8\xc5\x17K\xad\x069 \xef)\xef\xfe\xcc\x85\xd0H\x11b\x05\xe3V\x94.\xf8\xcd\xf5\xcdnq%\xd72\x8fQ[\xbd\x97\xf0\xd7;\x0f\xa4\xfb6\xa1\xcb\x82y\xf4\x92\xec\xc0\x9f-l\xbdh\x01\xe9>\xef^\x18\x07\xe4\xd2\xfb)gr?-\xd5Gw4\xb1U1\"\x88G.\xd3$+\xf2)#\x80R?\x9f\xf9\xd1S?'\xdf\x84\x11\xa1\xdb\xe8\xd8\x85s\x8c\x1b#.\xd1}\xe9w\xdbAH\xba~\x07-\\loo\xefR\xb2H\x8c\x03\xd7eg\xb43\xe8k\xc3\xb2\x0b\x1b\x8d\xad\xb1L\xd0\xd4\x11\xbd\xecU\x0c5*Z#\x93\xa6W P\xdfd\xc92\xcc\x91r\x89\xed\xed\x9d\xfb\x8e\x0b\x87H\x91\xd7\xa65^^\xf8Y\x91\xff\x102\x0dIlo?\xd8\x1d4\xc3\xd8~8FM\xef\xc3\x07\x9dU\xda\xde\x19\xd6F\x1fpno?TB\xe7\xf6\x8e\xca\xc0%\xb6\xef\xb7_3b\xef\xfeHZ\xe9\xe6H\xc7[\xf7\x1d\x1b\x05n.X\xf8\xaf\xd5\x83\x87P\xbbt\x82\xd2;\x9b\x08'\xb3\x13\xda\xff\xa6\xf8\xe3=ES\xf5~\x18\x92x4T\xa6'\n!|\x15\xac\xe0Da\xd7\x18W\x85\xe1\xfa\xba\x12{\xac\x11\xdcTxL\x19\x94J\x9cm\xd7s\x10\xa2\xb9\xc4\x1e\xa1MzB\x0f\x9bE\x0f;\x8b\xd3\xc6\x8d\x0cYZ\xd9\xfa\x1d\x992\x99C\xec\xe2O\x89;\xbav\xab\xcah]\xf3D\x08*Q\xd7\xc0W:\xb3Y\x17\x0e\xfe\xac\xabg\xb6E\xe2\"\x0b\x890\x9co\xc3\x8f\xbc~\xf2F\xca\x0b\xac\x8e\xd0\xd8\xfb\xa5j\xaf\xf9*\xaaP\x17\x8b\xb9\xda\xdd\x93 \x89)\xdb\xb2f\xa6\xfdoy.F;\xeas\xf1\xb0\x1d\x95\x91\x1d\x8b\x87m\xc1\xb6\x8f\x9c\xc6#\xe9,\xeflb4\xf3\xd8\x1e=tl+,H\xe6\x17\x98CV\x0f\xbb|q(,\xd5\xb3k\xa1\x82>y\x1b\xa9\x11\x11\xc6\xef\xf6U:\x9e\x98\\\x16\x142Gn;u\x00\xed.\xc4\xb6)+\x0b\xcf\xaba\xaf\xb6\xdc\x12\xc2Q\xdf\x86[\xbb\xeau\xdd\xd5\xe2\x95\xedm\x07\xf6\x95\x9coHr\xe81@N\xecv\xa2\xa1Jk\x10\xbb\xb8y!\xaa\x07\x90\xda\xadT\x079S\x16\x94\xf0\x18\xf2G\x0ed\xde\xdc&\\\x182\xcd\xd7\xd7\x8f](\xa6q[\x08!\xa8\x8c\x9b.\xd8\xfd\x91\x9a|\x18\xa9!q{g[\xb3duw\x1a8\xab)\x0e\x96wFGQ\x94l%\xf4q-#$9\x84\xcaES U\xa3\x14\x1c#\x05iBI\x1cv\xa9\xc2\xda\x9e\xde\xb5\x117\xed\x11D\xf0\x18f\x8f\xf46\xc0\xb45\x9bne>\x9d\xad\xaf\x1f;\xb4\xcd\xd2\xa9\xcdU:\x1f2\xe1S\x7f\x970[_\xef\xe9\x16\xaf\x87\x19\x841\xe4Ho\xe4\xd3\xd91\x0b+\xea\xd4r\x0f\xac\xf2\xe1\x03j\xa2\xaak\xe5\xcb/a\xa3\x19\xbbhE\x1c'a\xb3]\xd5\xa9{\xe9\x17\x0bo\xe9_v\xc1\x88\x95\x84q\x1f \xe9\x11\xba\xcd\xb0\x0dq\x1c\xf8\n6a\x9f\x9e8X\xa7C\xdc\xa4\x97 C)7F\"\xea\xf9P\xac\xbds'\xc0\xaf\x83\xfc\x10\x83\xb8SHbD\x9eM k\x0d|\xb3#\xa2\xf3k\x8dPp\xc8\x0e\x88B+\xc1\xc6\x94\xe3\xda}\xf8\x009%/\"\x14\x87\xf1X\xb4\x9c\x9a\x9d\x80\x8dr8o\xb6\xf0\xb3\xa7I@\x9e\x14v\x8ek\xbe\xb33~\xb8K\xbf\x0d\xe11\xec\xecn\x8d\x1e\xb2\x86\xd6a\x84\xe0\x87\xb6\x04\xb6\xdf\xf9\x98V`\x0d\xecn\x8d\xb1s\x9f6p\x7fk{\x8b\xf7\xcf\xeacGt'a\xc2\xdf2/\xbd\xdc\xc5N\xc6\xb4\xcc\x87\x0d\xde\xcc:\x1d\xe7\x06\x1f\xd4W_\xc1h\xd3\x81u\xd8\xdd\xd9\xd9\xda\xbd\x1b\x08\xef\xdc\x1f\x1c vu\xd8\x90\x02\x8b\x83\x12e~\xa5\x0d\x8a*\xdc\xbd7\x90\x19\x13\x1f\xb6\xc4\xf0\xc5\"K.\x802\xef\x98%\x1dO\x80\x05a\x0eqR\x00R\x00\xa7\x11Y\xd3X~dv\xc1\xa2\xf0\x11g\xc5sB/\x81\x07\xc88\x8c\xb7\xb7\xf1\xdf\xed\xdd\x87\xec\xdf\xfb[\xec\xdf\x07\xfc\xfd\x83\x9d\x0eg\xb1\xbb\xe9\x08\xaefHg\xbd\x84\xd4\xaejgd\xd2(\x99\xc6\xf6\xe8\xbec[E\xc2N\xd5\x91\x7ff!\xdbi\xfdlQVn\x9d\x82\xfc\xda\x1eX\xd3\x04o{\xf8\xf9\xd8b\x0c\xd7\xfd-\xc7\xe6\x14@\xed\xc9\x00UCV?mU\xb5\x89\xe9j\x90l\xa7\x90i\x1dK\x1ah\x0c\xa94d-\xe4\x85\\\xa3\x1c\xfe\xa6\xc32\xac\xd8\xa3\xcdQ\xbf\x0d\xf5}:I\xb5(\x9f\xae\xe3\x03\x87Y\x1e:.X\xbe\xd2\xfe\x10\x83ik{i\xf7\xd6)l\x99\x088\x9e_\xaf\xc1\xa0\xf9KDK?\x11\xa2\xb8;0)\x0d\xbb4\xc4\xd5\xf8\xa8s\x0c\xd5z0Le#\x9d\xc3*\x02\xb6\xcdTG\x02$\xd8\x86d6\x13U\x89\xf3U\xf5\xa7\xd2\xb0\xe9\x1bE\x1e\xe5\xf5|\xf56\xd7>\xcep\xdb\xf8\xc6z\xea\xc7\xff\xb1\x80Y\x12\x9f\x93\xac\x00\x0e\xe9E\x02i\x16.\xc3\"<'\x8c\xcdZ\x95\x9a\xef;\xf3\xdb\xbbm\xc91\xc3\xc6\xe3\xed-%\xcd:RJ\x15Z\xec\xd3\x03\xc1>\xdd\xff\xef\x99}\xd2\xb0\xa5\xdb\xbb\xea\x95\x1dw\xc48>\xc7\xca\x94 }~p\xf2\xe6\xed\xeb\xa3\xd7\xed\x80\x15e\x9b\xdfo\x16\xb7\xc5\x01\x9d\xf58g\xb9+\x0b\xde\x15E\\\xe1<3D\xc6@+\x0c-5\x84$w\xe1\xa1S\x90\x17\x84y\x1a\xf9W\xf4v\x88\x93\x18\xf3E\xdb\xe3\x9d\x11\x9a\xf5\x938x\xba\x08\xa3\x00Y\xb7\xc2\xcb3\xcacX?\xf9\xe7>\xf3\xe9\x9dXU\x16J\xee\xfb\xf7C\x18\x07\xc9\x85\x17$3\x14\xa18^\x92\x92\xd8F\x18\xb9\xc8\xc2\x82\xd8\xd6W\xec\xd3\xc7\xa2\x8a\xf7\xcd\x1eC\xd1_\xfdx\x8f\x17\xa1j\xd7\x9bEI\x8e\xe9\x0ds<\xc1\xdf<\x82lc\xe3\x91\x03\x01\x89HA \xaf\x01i\x1aN\xb3c\xbdMYn\xb7`H\x8dI\xf9E\xc1,8)\x9dfD\xad\x889\x95tF\\F\x11J\x90)\x15g\x97-x'\x0ecpcrA\xf9\xbef1s\xff\x8aYZ^\x82\xa6g\x98\xd5\xc2qei\xab\x90p%v|+\x9a\x7f\xa46\x1e\xec\x9c\x08\x0e\xf9\xdb\x0f\xf4\x94\x1f\xbd\x98\xff{\x90\x1d\x8cF\x0f\xd4d\xf1\xb8\x8d\xa0\xb9\xf0`w\xd7\xb1\xd7\xda\x02\x075\xca\xb8\xc1\xfd\xce\x97\xa8\xe4\x84t\x17\x17\xe0\"u_Sfiz\xacX\xf3\x98\xf2\xd5\xa5\xc3\xa4\x04>\x8a\xf31%<^\x9b\x91\x88,\xa4\xf8\xf0\x11\x14BX\xcb\xf7\x03\xbf\xa3\xa8\x01w\x83\xb9\xa8\xfc\xa7\xd0\x8e\xb0\xb5\x0f\x1f\xea\xd6\xd4[\x14\xddt\x8b\x1e>\xd4\xac$\x83N\xdb\xfa\xd9r\xd0\xd5\x82\xd2\x81\xcf\xf3\x83\xb8\\2\xbe\xc1\x96`\x18L\xe6\xd1\x82\xd2=\xac\x93\x83\xd0s\x8d\xe6;y\x1a\x85\x85ma\x8e}\xde!\xb9\xf9 \xed@\x95\xd0ti.\xa7m\xdd\xdc{'\xd3\xe0\xd6\xff]T\xf5\xdf\x92\xa8J\x83\xb2\xb6w\xdb\xef\xc3\x01\x94\x8c__\x94\xd5\xc5e\xbcN\xcfH\xf1FT|=o^\xab\x1aX$\x02\x9d\x01fp\x0e\xf1dMQ\x1b\xad\xa2\xf0)\xa9\x90\xc4y\x91\x95\xb3\"\xc9\xd0\xe4 \xc28/\xfcx\xd6-\xddo\xfe-\xdd\xbe\x93\xe6g\x1c\x0f\xec\x83\xdf6\x00_q\xfdw\xb6nz&9\xfe\xc8V\x17XT\xf7'g\x1f(;P\xb1\x0c\x0f( \xcd\x98\xca-\xc7\x15\xde\xf0[\xfc\x82E\xc6\x80'\x8f\xb5G\x9bc\xc7\xe5>\xb5\x94Z\xc0\x83\x1b\xb5\xb8\x05\xf6\xaa!kp\xd1s6\x17\xba\xb3\xa0\x13m\xe1\xe9\xe1\xe1\xdb2\"/\xc2\\\x11\xec\xe0\xe9\xe1\xe1!%M\x9f\x91Y\xe4\xb3x\xd3\xdd\x80 O\x0f\x0f\xd1\x14\x817\xd1.\x8dB\x12\x17o\xc9\xacP\x97?{\xfd\xd2X\xc8\xe6\xa2->J\xde\x93X=\xf8g~\xe1\x1fe~\x9c\xcfI\xf6\xbc Ku\x1b\xdf\x84\x91f\xe4\xdf\x1e\xbd|\xf1$\x8a\x9e&Q\xc4\"P\xa9\xab\xf4\x95\x7f\x93dK\xee\x85\xa4\xae\xc0\x9c%\xb4U^\x92 \xf4\xd53|\x19. e\x89qs\xbb_\xbe\xf2\x97$x\x95\x04\xe4\xa5\x9f*J\x93@\xb3\xebo\xfc0\x16\xe1O\xd4K\xf3&*\xcfB\xc5|\xd9{\xcdp\x0e\xbf\xff\xd3\x0b\xbc\x8a\xd4m\x1e~\xff\xa7W\xe5\xf2\x94d\xda\xe27\x98%X\x03\x0b\xb4< c\xcd\x80\x0f\xbf\xff\x93 \x90\x0e\xbf\xff\x13\x83\x94$\xd3\x80\xc9!f\\\xfb\xba\x9c\xcf\xb5\x03\xa4\x07\xe5pAH\xa1^\xd5#rY\x1ce\xfe\xec\xfdS\xddQ\xa9jh\x8a\x93rV\xad]Ur\xed\xa2+zb\x07\x945a\x94\xf89|\x05\x0b\xc1s\xc2\xf9\xfa\xba\x8aZ]\xba\x18\xc9~1=W\x18\xbcQ&4\x98\x9e)JN\x91\xacW\x95\x9c\xc0\x1e\x9cR\xa4\x7f\xaa\xba\x90\x80_\xc5'H~\x9e\xd0\xfb\xf7\xc3\x07(\xed\x13\x17f.\xa4\x8e\x0b'\xd3y\xfdn\xee\xc2\x19E~\xd33\xca\x80\xa5.\xa8\xe2\xd2 r]\xd2[=s\xe0d\xba\xc4\xcfC\xfa\xf9\xd2\x85l\xba<\xae\xc5\x9b0\x14a\xf7\n\x804J\xcb\xed\xfbj\xbe\x03\x11w\xe3\xbd_Q\x94:&n\xbc\xbd\xfb\xefv%\xff8v%z\x82\xef\xbec[e\x9c\xcf\x92\x14\xbdU\xda$\\\"\xfc\xf5T\x07\xa6\x123@2\xcd\x8e\x99R`\xe7\x01\x1a\xaff.\xfc\xa2\x97\xf6u\x98\xfaiv<%\xf4\x18\xc9\xf6\xf0\xca\x99\xe8$\xfeF\xd8\xfb\x0c\xed\\\x84\xb1\xa9/(\xa9\xf1v[\xc2\x92W\xc4V\xe35\xa7\xb0\xc6\xaa\xb8%*\x8d\xcf\x9c5\xdf\x16\xd4\xb0p%\xf7\xb7[\xaf\x03\xdez\x1b\x85,8\ni\xd7?\xe7\xef\xdb\xf6\x10K\xd6\xebN\x1b\xb5\x9c\xf1\xf7[\x8e\x97\x93\xd6\xba_\xb1\xb6\x1elvb\xe1\x9dr`m\x8f\xea\x84\xb7\xd6\x1e\xd5\x05\x7f\xdf\x1e\xd5\x01R\x9a\x95\x8c\xbeYx\x89\x85i\x96\xccH\xde\xf2D?\xc4\"\xae\x98k\x16=\x85=\xb0\xf8Gx\xceg\xf6e\xab\xd7\xf7f\x89\xee\x13\xb4\xb0\xdd\x83So\xde,xM\x0f\xc4\x9aY\xda[dW\x1a\x9eW\xe0\xc8C/#y\x12\x9d\x13\xbb\xbdz\xf2\x83\x1e\x1aM\xf6g\x8f\x1ea\xa1\x1e\xccS2C\xfcr<(\x1b\x96x\x88\xfd\xde\x85\xf7z\xd6\xf7\xba\xcb\xd2\x83d\xc7\xf0\x14\xfdQU|\x1c\xdf\x8b\xb7\xe4'F\xd9\x1e\x9c\x93\xb8p\x98\x0fK\xb1 \xb1\xfd\xde\x919\xb4\xa2\xd3\xcd5\xcc\xfcb\xb6\x00\x9cCK\xf9\xd6\x06\xbf7\xbdsF\x15\xb5V\xa8\xbcf\xaf\xa5\xf4\xbb\xe6d*m\xb5\xcd\xe21\xd0a;8\x85\xe6h[\xe0r\xd4\x87\xed@\xe8\xb9\x88w\xa2\x95\x88\xd02\xc4\xb7\xea\x0d8\xe7\xb6\xcb\xc4;\x99\xa9k\\\xe95\xaa\xf2\xd3\xe0.\x89wr\xcex\xcb\x11`\x8c\x9a\x93\x9c\xb1\x97\x9b\x8c\xb5\xac\x05K}p\xc5\x85\x995\x02M`\x1f\n/y\x0f\x13(\xbc\xb9\x1f\xf6\x84@\x87*A\x14?\x1c\xfd\xd5#^\x9d\x02\\\x7fm\x9649H\x96~\x18\xab\x17P<\xfa\x13,?%\xa5?\x124\x1b\x19\xf3\xb5[PP\xf9 \x89)\xfck\x0fF\x8e+\xe2\xff\x94H\x81\xec\xa1I\xb5\x8d\x81*f\x1e\x89\x0b\x92\xd9\\\xa7P\xda\x19\xf2\xe8\x98\xa1\xd8#\x97aas\x06\x7fm\xd3au\xf6\xd0\x1b\x81\xdbX\xefCd\x1f\xd8\x16?w\x1b\xb3\x85\x1f\xc60\xbb\x9aE\xc4B\n\x08Ma\xde\xd8\x14\x82\xf7!d\xda\xd2\x18\xfdK\"Z\x9cc\xc9\x04\"[\x91\x1dP~\x1a\xe7\xb2wYp\xfck>\x9f\x1f\x9fDd\xf7\x84\xdf\xbc6\xe0#\x88k\xd9t\xf8\xc8\x01\xdf\x8e\xa7\xe1\xfaz[9 ?\xf4\x90\xa0\x90\xdc\xad\x8e\xd5\xc8\x05\xd42\xaf\x89}z\xa9\x1b\x93\"z\xe6\xb5\xe9\xf8\xbf\xec\xc5Egl\xf1s\x03\xfd,\x1eD[(\xc4\xe5f\xfbxB\xb5\x13\xa5[\xfc\xbc\xa3\x80\xa9J\xe7\x14\x08(<Q|v2\x0c?<\x85}\xb8\xf4\xc82,(\x1d\xba\xf0\xe3 \"A\x85\xd5\x99O\x0e*\xb7P7\x9f{I\\\xd5\xcaD-\x0c\x15\xdb\x13\xfc\x94\x83qo\xe8\xd3\x8c\xf8y\x12O \xd1\x83\x08\x8e&\xc3\xd1\xd0\xeb2\x89\x08\xf7e\xc0\x186\xd2O\xdbz'\xc6*\xfa\x87L\x9e\x9a\x0e\"\xaa\x03\x8d\xf7\xdfs\xa6/\x18\xc3\x04\x0f8\xf1N|\x89\x03\xc1\x15/<\"\x0c\x9e\n\xef\xbc\x0bP\x8e \xa2\x9e\xf7B\x14\xbf\xc6FLS\xc9!\x9a{s\xe0p>|\xc0C\xe0\xf0\xa3c\xea\xed\xa7\xde\xdeV\x85_54\xca\x80U-\xfa\xb7l7,\x01S\x05\x87\xa9\xaa\x02\xdf.v\x0b\x9b\x92u\x0e\x00'\x01J\xf4L\x0d>\xfa\xc6\x9dz\xd5\xbbv\xc2T\x8er\xaa\xddu)\xbc\x93\x00\xaf\x10\xfcA1\xbd\xcb\xd6\xa0\xf0N.hA\xe1x'\x94\xa2\xa7d\x85wB/\xc81\xfe\xf2\xc5W\xccG\xfdd\xc6\xed\x0d\xe9Eqd\x17(\xc40\x8e\xfc\xed\xb0\x91\xbb\x15o\xaeV\xf5\xac\xc5\xdeI\xa0\x03\x86\xb8\x9e\x14*\xcd\xf9\x9c4\xd7\xaf\xf9\xda\xa5\x9d\xb1\x1b\xb0:X\xf5\xe5\x073\xb4\xec9\xa5\xa7\x19\x89\x87\x00\xc2\"'\xd1\\\x97?\x8f>\xb8\xceo\xd0\xbcj\x7f(\xf1\x04\x12\xaf\xde\x7f\x17\x9e\\L\xc0\x90l\xb1\xaa\x16h\xd3\xb2\x8aGC\x95\x8bg\x18\xc5\"\x0c(\xe9}\xfc\x16/\x98\x11\xde\xcd\xaf\xf8\xef\xbb$\x03^\xb1\xbe\xb2\xde\xc0\xdb\x86\x9b\xdf\xa1wL\x05\xfe1\x03\xff\x11\x85\xef\xd8\x855\xddx\x87\x8d\x93\x8f\xcf<\x91\x01\xfb\xd7\xb3w\xd7\xda\xf9w\xe7\xdd\"2\xea\x1d\x7f\x8dg\xfd\xd0x`\x17<\x82\xe7\xa1\x0b\xe2PX.X'\x0b\xcbq1\xd4\xa9\x0bY\x9d\xc5\xbau*\xd4\xe0Cl\x04\x13\xd6n\x05)\xe2\xcf\x16r1.\xfa\xabf\xfe\xec\xe6\x97\xd5_\xd7.\xbb\xc4\xf5\x93d\xd2>A\xd9\xb1\xbf\xe4\x9b\x97\xbd\xc9e f h?\xfc\xeb\xbcSy!Wf\x84b= \xa7i\xdeco?\x189\xf6\xa1l[\xdb\x1e\x1f\x89\x07\x84\xfa\x17\xac\xdc\x13{)v\xcd\x9cS\xfc=\xec)\xd9T\xa6\x7f\xc6\xb3A\x19\xacf\xad\x9a3G\xba\x97br\xce\xfd \x19C\xefb\xfe\xe7\xa4\xb5&\xb3*\x07U\xb5\xc6\"Y\xcc\x89\xdf.\xcbi\xd9\x11\x9f\xc7\x1a\x05\x93Xp(\xcd}n\x9e#\x04\x97\xbe(v\x92\xc5\"\x13!\x88q\xeaa\x88kG{\xe5\xd41\xb9\x80\xecQ\x17\xba\x04U\xc8n\\\xfa\x86\xdf(\xa8'}\x8b \xd5GNU\x84Z\xe6=v2\xb0D\x86\xe6SoNwy\x88\xb2\x98\xe0\xcdv\x88\xdb\x89?}JA\x93\x0b\x16\xf4m\x82\n\xf5\xc6$\xe7\xf6\xdc\xfb\x13\xac\xc3\xdc\xfb\x01\xff\xff\x0d\xfc\x11\xd6^\xb7\x01\xf2\x8d \x8a\x0e\x1b\x1f3\x13S[\xc6\x15\xdc\xfe}\xec\xd8\xf2+\xa6v\x90L\xe0Y\xc7\x87\x8d.%|\xd3\x9e\x1b]\x9e\xbeM\x16\x04\xd2\x13\x15f\x02I\xf4\xb4\xe9V\xdc\xbe\xc3\x14\x16j@\xeb\xacS=\\\xbb\xa4+\xbc\xf6\xda1\x8e\x1a\xf7\xbbo\xd8|T\x17v)\x0eG\xb5o\x870\x81>\\\xd7\x19\xda\x9a\xfd\x9a\xc9\xeb\xb7\x1fl\x99\xa2\x85\x1ez\xcc\xea\xd9\xc3\x13d\xbf\x97\xc1\xc24-?\x8a\xfa\xa6$\x93\xaa\xea[\x8fa-\x9d\xf1\x10\x8b\x86`\x14\xdf$\xbc\x8a^d\x13\x0e\xe7T\x05\x1e\x9d\x1a\"4\x03o\xd2\x90$\x1f\xb8~m\xa4\xa7\xb1\xce).\xa7\xd7\xc8p9\xeb9\x0f\xb6\x14\xae\xaf\xf7S\x80\xe8!a\xe8\x1f\x90\x98F\xcc\xcbP =\x9b\xeb\xebn--\xa3\x10\x81(r\xf8\x08\x01;\xa6\xa4E.\x88\xf4iy\xcc0\xdf\xc6\x062\x18\x99\x1d\xf7Q\x85Z\xa6\x198\x98KM)\xeb]\xeb\x8f|\xe8\xa1-Ub\x87\xde\xf9\xd0\x8b%\xf3g\xbdg\xf7\xae\x00]\x0f\xc5\xc9\nP\xbc:luw\xbd>v`\x90\xe6i\x93\x08jw a;\x90\xd9\x89i\x07$\x14\x84?o\xa4\"dB\xaf\xf6\xd4\x91\xc7\xb4\x1b\xb6]\x05\x8a\xed\xb9\xaasmo\x0f\x98\x84\x07\xc2\xb8f\x0dk\xa7\x8f\x18\xd6\xc1\x9a@\x18\xcf\x92,\xa3\xb7u\x18\x9f'34K\xd2\xb9\x9a\xdd\xdc\xbe\xb8\xa3\x02\x14z~\xb5;\xf7\xf6}\x95\x9f\xbc\xc2\x86\xbb\xe4f\x01m\xcdc\xce\x9bi\xdb\x02F,\xb0W\xe3\xdd\xac\xe5C\xc2u\x1c\xa6\xdd\x98\xbb\x90\xaa\x08\xa8\xc0\x85\x85\x0b\xe7\xae\xb0\x07Ia\xbf_2\xd4Y\\\xf1\\\xa30Ze\xff|\xc5|Fq E-p\xeb\xd4;E\x13\x96\x0e\xdc(I\xe6\xb3\x9b\xfa!\xa20\xd5>sT\xf3C\x9dJ\x802|a\x9d\xe0<\x82\x00\x1e\xc3\xe9#8\xd5Y\x9a\xa2\x95\xe9\x92\x07\x8c\xbd\xb2}\x9b2#dzz\xecL7\x8f]XLG\x18+\xf0\xca\xc6wN\xed\xa7\xba\xc4\x9f\xb3\xca\x0cu\xd9<\x8ej\x13X\xa6\xf7\xc1da\xdcq\xea\x11\xaca\x97\xe7^L.\x0b\xdbq\xbc \x89\x89\xc6\x1a\xb7\x1alb\x9f\xbbp\xe5\xc2\x82\x07\x82\x82b\xd8\xd0\xae\x1d\xef\xeb\xb7\x07O\xfeL\xc9ezq\xbd=8z\xf7\xf6\x15\xec\xc1l\xb5C\xb6\xd3o%-\xe07\xe90\x90JFW\xe0:\xd8\x87\xc2\xa6\xf7\x14.\x7f\xcc\x97\xbfh_\\\x15\xafk\x8c,I<\xd6\xacB\xe6\x87\xe0'\xe1\xaf\x90\xa1\xd8\xb0rhs\xdb\xfa\xc6?4\x7f\x0d^\xab\xae!QR\x1b\x99Hf\xa0M@7Y\x98\x0c3\x1f\xe1+*\xcd\x11\xaf\x11;cv3L\x8c\x87\x86W\xd3\xe4\x98\x0b\xf5n<G\xa5G\xed\x809\xb2\xe5QO\x8d1=\x92;4\x8b\x14g\x9c4=!\xd5\x8c\xe9U$0\x1e\x9d#e\xec\xa6\xd6?\xfdS5 fw6\xcdl\xe2\x1c\xf7L}\xe8\xf5\xa9B\xd5Y%\xf1`\xa6\xebMp\xcc/B\x06\xc9\x02i)\x00z\xe6\xe7\x046'J\xa4\xc0g\x88\x86\xd96\x8bk\xca\xd4\x8c\n\x8a\x02\xdb\x19\x0dh\xa7\x98n\x1e\xcbm\xb9\x80o4-\x8e\x07\xb6H[\x19)\xda\xe5\xef5\xado\xad\xd4:\xfd\xffX\xdb\x07/\xd5\xf4\xb4}\x83\x9e\xe8\xff\xb7z\xfa\xe3u4\xf8D\xeaB\xc4N\xbf\x95WZ\xc76*1X\x17\xd1C\x98y/\xcb\x02\xa9\xb1\xd7\xa7,T\x1d2\x0b\xde\x0f\xe4\xf4\xcfa\xd1.\xeb\x12K\x99\xda<\xa8\xc4\"\xa5yP\xde6\x0fB\xa7#\xdb\xef\xbbU\x94\x92$q\xd3DC|@\xb3\x8e\xab6\x88{9g\xe8\x11]\xe4\x98TNh0Q\x83\xfe\x08\xc8#\x1d]\xc5\x94\xc4\xf3\xd8E\xb9\x16\xc1\xbb\xfc&\n\x96\xc4\xee\x91\xa7whs\xf9a\x97\x1aA\xbd/\xde\x9a\x92\xa45S\xb7\xdby\xdb}\xd3h\x85/\x083\x99h\xc2s\x97R\xcb\x1d\xe4\xe1\x8c{\xe2\xe3Z\x1d\x85\xb3\xf7vdl\x10C/#'\x122\xe8\x8c\xfd\xf3\xf0\xcc/\x84n\xb9\xfa\xd3\xa3LJ\xe0GI\xac\x90\xfa\xd3\x06PXT\nfM\xb7\xa0\x14Xf<\x942\xe3\xf34j\xac\xde)\x8ag\xc6\xd8\xc4h\xb0.\x82\xcdyP\xfbI\xa5\xeaQ4\xafZI\xf5\xe9\x983!\x84\xb2\x8b\x14\xf6\xa0\xf28f.\xbeG\xe4\xb2x\x95\x04\xc4\xb6T:>&:\x8d\x1c/a\x98\xc3NuY\xa1f\x0b?\xf3g\x05\xc9\x9e\xf9\x85?Q\xba\x94q\xfb\x9c\xde\x85H\xbd\xc0/\xd0j\x8aNe\xde\x03\xdfJ$\\\xf5\xa1<l\xe7<\x9e\xbc\xba\xfby<\x01M s\xe6\x91\xcfNR\xdf\x16\x01\x9e;4\x1a\xc1\xf3\x81\xa1!]F\xae\xa1\xb7x\xe2\xd23\xee0\x87\xf6D3\xa7\x15\xef\x8d\xfb\xfdnVj\x1a\xa7\xb2fK(\xff_8\xcc\xe9,\xa1\xb7^B\x89\xf8;\xe1\xf0\xfb\xec\xfb5\xb7^\xd7E[\x90\x9d\x9a(\x04\x0d\xb3\xce\xbe\xf5P\xddGtG\xb2)i\xf9\x063\x83\x144~*\xa6>\x9a\x85'\xde\xdc.\xd0TOA\xf0a\x82\xb4\x12\xb9\xe0\xaeK\n\xac\x1aX\xa5\x90\xe3M\x88\xa7u\x14nLo\x18\x89\xfc\xa4%U\xed\xde\x7f\x82Y\x9b\xde?\x9ef\xc7m,\x1br\x16\xae\xef\xec'M3y`\x13`,\xd4<K\x96v\xd8c8\xc3.\xcf\xb1vM\xd4\x86\xb1\x83\x8d\xed\xeb\x10+kI\xed;\xdb\x127\x0baz\xfb\xbd\x9ah\x90\x16N\x8dq\xd0\xef_\xb1\xa6P\xdd\xbb}\xab\n&7\x01\xf10\xa7\x80\xb8\xbb\x01\xe2Q\\m.\x0el\x85\xee}U\x1b\xc4\x0e\x0d*p%r\x8fW\x83\xf2>\xac\xd3q H\x04\xe3\xaaB:\x1d\x1c\xc5\xd3\x12t\xfc\x01\xb8\xf3C#t\\fg\xde\x1bX\x87\xcc{kP1\xcd\xc3\xd8\x8f\xa2\xab\xa1\xd2w\x9f+\x8d\x93*j0\xe5\x88\xc5\x1f\x1a\xd1{\xacSr\xab\x92\xd9\xb4\xd5\xc7\xb1,\xa7\xd4\x1ab\xf3\xcfJ\xcchj;m\xbd\x8a\x89\xcc\xeal\xb4\xfc\xa8\x8c\xcb(\xebF\xa9\x8b\x8f<.\x86`V\x1b\x96^u\xf9\x11\x81\xb7\xebP\"\x02\xf7l\xb7\xc0\xf1\xd0\x00\x88E6\x18\x08\xf1\"\\\x84\xb9\x01\xdcB\xa5}\xad\xd0J\xc7\x1eACwn\x0b0\xa9\x953\x8e\x1d\xa3\xd2\xa4_M=dAc{\xfb\xc1}\xae\xa5\x7f\xc0\xff}\xd8\x8cj\xc7\xc3co?\xe4Q\xed\x1e\x8a\xf7;\xfc_\xfe\xfdC\xfe\xfdC\xf6\xfd\x0e%G\xf0\xdf\x11\xffw\xcc\xff\xdd\xe2\xffn\xf3\x7fw\xf8\xbf\xbb\xfc\xdf\xfb\xfc\xdf\x07\xfc_\xde\xde\x88\xb77\xe2\xed\x8dx{#\xde\xdeh[\x19e\x8f9\xdb\x0eY\x8b^0\x1aw\xc2x\x87U\x90J\xbc\x92\x9f\xf2\x10\x8f]\x94(WJ\x02\x82\xfe\xc1-\xc8CD\x88\xe6\x04k\xcc\xd0}\x84\xf1V\xaa\xa0\x19Ul\x91\x0e\x82\x94\x1b\xed\x83\xd0:o\x9f+\xb4\xdc8\xe9n\n?_$\xed{\x0c\xbeVL\xc0\xa2\xc2\xed\xc1z\x9d\xc8\xcf\xc78; \xc5'\xa3\xd1h{4\x1a9\"v>C\x18o\xfd\xf8\x8c\xebH\nYG\xe2\x03\xa6\xb3\x84Y\x12\x10H\xe9dtv\x96\\i]\xc0W,\xba%\xecc4 \x0cy\xca\xa2_\xae\x83m\x17\xb0\xb1\xc7\xca\x1dx\xfc\x18\x10~\n\xf8\x0f0\xda\x1co\xc3:\x8b\x99\xd9\x9b1\x17$\xfc\xcb\xb3\x0c[\xb7\xc3a\xbd`\xa6\x8b\x1b4\xda\xdcR`+\x0dPd\xfe\xc5pP`\xb15\xbc\xcc\xbf\xe0LiX\xcbnM\xe0A\x81\xa7d`\x12\xc3c(\x1f9\xc0-\xb9x\xe4\xd6bZ\xae\xaf\x1f;\x18F\xe2+&kiV\xa8\xc1\xa6<6X\xab\xf9w\xb3\xf4\xea\xeb\x83\xe2\xacM\xc7\xb6\x8a,\\Z&\x85y\x9b\x9bV-\xaa`\x059\x15\xb2u\xbb\x01\xf7\xc2\xca\x8e&\xd6\xdf\xa6:\xbc\xd4\xf6\xc3\xf6{\xba}\xd6\xd4\x82u\xf0YD\xce\xaeXS$\xdb\xfa\xff\xd3Z%\xff\xcf\xfac\x9b/\x8a\xea\xaau\xa5/\xda\xb5f\x03\xb8o\x90\x85\x12\x8aT\xb2\xc0\xc7\x1d\x0e#S\x04k\xb2\xe6O\xc9\xb1\xcd\xbc\xf3~\xfb\xf5\xff\xf8\xb7\xff\xc2\xe2\x9d\xf2\x9fX\xa6l\xe3Zs\x8b\xd3\xb5I\x98;s\x89J\xbe9\x86\xe3\xed0\xca\x807\xfe\x97_\x82\x9dLcZ;GWnA\xfbR\x94_\xca\x07\xb9e\xf9\xd2Z\x809\xec\xc1\xcc\xa3\xb0\xda\xc7\xa0\x81\x04\x8er0eT\x05\x8e\x803\xef6\xe1jE\x96]-w\xc1\xc2\xbc\xeccM\x85HTh\x11\x1ej\xc1\x82Z\x0b+\x8fT\xaem\xfdX\xfc\x18\xffx\xfe\xe3\xfc\xc7\x0c\xfe\xed_\xff\xeb\xff\xf5\xeb\x7f\xfd\xd7\xff\xf3\xb7_\x7f\xfd\xed\xd7\xff\xfc\xdb\xaf\xff\xc3o\xbf\xfe\x8f\xbf\xfd\xfa?\xfd\xf6\xeb\x7f\xf9\xed\xd7\xff\xf9\xb7_\xff\x97\xdf~\xfd_\x7f\xfb\xf5\x7f\xfb\xed\xd7\xff\xfd\xb7_\xff\x9f\xdf\xfe\xf3\xff\xfd\xff\xfe\xfa\xeb\x8f\xe5xs\xfc\x00\xff\xff\xf0\xc7rN\xe6sk\xc8\x19\xbb!M9\xde\xde\xc1(n-vF\x8f\x91g\xe2\x8a~\xd2{I\x0b\xd5q\xafm\xf3 $r\xc3 \xea\x02\x8a\x8d:\xe1%(n\xb1,\x8f\xc4\x01\xe6_Q1x\x14\xc8\xe9\xa7[\x8em\x89z\x96\x81\xa6\x11u\xfaVJ\\_\xa1X*\x17\xe4\xf6\x95\xe76V\xdcg\xf0\x18F\xb0/\xa5#\x1e\x1d\xd7\x06\xcc\xcaV2\x96\xf1\xc7\x1c\xd3\xacl\xe9Iy\xee\x1b\x11\xf9\xddN\xd0\xe493 \x18~j\x0d\xbc\x82O\xc7\xcdM\xe1\xd1\x0f\xb3DM \xf7\xdc)a\x03\xeaK\xbbd6\x15\xf9\xef\x02O\xf7\xc7J\xde_\x06\x8d0\x9eEe\xc0\x82]\xe8@C\xd4\xe9\x03\x8d\n\xed\xff\xa7D\x02\x8e\xba\x07\x0fS;\xbd\xc6\x08\x91\xab\x80\xc3\xed\x0ecc\x99\x06\xe3\x8e\x8c\xa4\xc4/&x\x83\xef:+v\xd9\xb7_\xa3\x91\x96\xb6\xb8\xa9\xb4\xb8\x0e\xdcO\x99`\x05x\xa3\xc0E\x91\x89>\xe4\xf1P[\"S\xf48\xe5a\xfaC\xd8\xdb\x83\x11\xdc\x83M\x05Ca=M\xca\xb8\xa8\x1d\xb7br\xe6\x17\xe19is\x12<j_\x08\x8f\xdb&^\xfc\xb1Cx\xfc\xf8\xf1\x1e\x8c\x1c\xee\xe9\xba\xbe\x87&I\xf4\xded\xce\xaf1{\xf5\xa8\xb5Q\x9fP&\xb72\x86\xaesd\xf5\x1d\xc4\xba\xa6\xe9(\xd6\xb5\xfa\x0e\xa3\nO7\xfaP\xed\x01\xcf\xaaVa\xcbUN\xa9[\xc5\x1e\xd5\xa5\x8e\xc8n\x80]3\xdc\xb8\x1a\xbb\xc6\x94]\xa2k'\x0c](v\xcdn\x85 t<\xca\x16eQ\xfcx\xb6H\xb2\x95\x98\x14#Y\xc8w\x03#\xdd[\xb1\xbf$V\xc3L\x03\xeez\xfc\xa7\xe1\xd9J\x83\x1f2v\xd6\xa6\x85\xff}\xcc\xa1Ga\xfc\xfe\xee\x07\xcf[\xfd\xf8\xc3O\xa2\xe0\xeeG\xff)F>\x0f/\xc9\xdd\x0f\xbd(>\xc9\xd8\x93\xb8\x98%\xd1\xc78\xb2\xb4i:|\xd1\xfc\xc7<\xb6\xb4\xaf<\xfc\x99|\xbcY\xf0\xd6?\xe6$\xc2\xc2\x8f\xc2Y\xbe\xd2\x1c\x86L!\xfc\x14\x80\xb42\xf2\x19\xb4\xfa\x88\xf6\x17\x19\x99\x7f\xe4\xa5\xcf\x97~\x14\xad4\xfc!\xa3\x17\xad~\xf4\xc5\xa7\xef\xdf\xaf\x06\xfc\x83\xc6/\x9a\xfd\xf8\x13(O\xef~\xf4\xe5'\xc1\xfey\x99~\x84\xa1\xa7w4\xf4\xd8\x1e\x8d)\xb9\xbc\xf4\x8b\xd9\xc2rad\xae.\x0dfZ\xd5S\x8a?\xd5k\"\x1e\xc1\x19\x10\x93\x921\x91e\x0f(z\xa8\xd2\x99\xc5\xd3B\x9f\x19C2\xafO`_\xd8\xe11/\xaa \x9a\xc0q)o\xecL\x8bc!\xc8\xcf:qA >\xbe\xe1jrQ\xa3\xe5\xc2\xf8\x06\xeb\x99)<4`\xd0\x92\x86}K\xea7\x964\x93\x974\x1b\xb8\xa4\x12?\x91a\\\xb3\x04W\x95\xbd\xe1k\x19:,N\xd3\xdd\xadhN\xfc\xec\xdf\x01\xf4\xee\x963\x8d\xc2B \x9e\x1d\x03K\xfd: \x0dGl\x8fw\xda\xbe& D!\xdd\xd7L\xef\x86J\xb4\xae\x90\xc4\x9a\xa1\xf1\x8a\xe5\x9f\x9e\xce,\x9ew\xe2\x9e}\xea\xfc\xf1\x9eC\x99\xe3\x0f\x1f`\x1bu\x1e\x05\xc9\x8b\xba|\x7f\xe2\xdcsac$\xc2:\xd1zc\xac\xe7\x9f\xca\xb5|lH\xaa\xc4\x1a\xf3\xea:\xde\xbeC\xffkT\x92\xcb\x1d[*\xa3\xdc;-\xaf\x8a\xbd\xfd\xaaP\x05r\xe7\xdc\xf7Y\x12\xa8\xde\xb3\x9d\xfd\xfd{\x1e\xb9$3\xdb\xb2\xe8\x1c\x15P3DO\x02\x92\xad\x9a\xd0]\xaa\xe3\x06@\xd3'gOx!\xf14<\x95%\\;\x95\x8a\xfc\xedZ\"\xa7_\xab\x83\xe8\xe1\xe8\xd4\x9f\x9d3K\xff\xdc\x85\x08\xc3T\xcfY8}\x93\x93z\xc0B}\x86gq\x92\x91\xa7>\xc6\xf6\xb3B\x0b&\xf4\xda\x83uZ\xb6,\xa3\"\x8c\xc2\x18\x8b\x96\x8d\xa22\x0eQ\x11\xbf\x0fV\xd9(\xc8\x8bp\xf6\xfe\x8a\xbe\xbf\xe2\xef\xf5CX\x98}\xe4\xcf\x9b\xbbY\xc0>l\x8f\x1fn?\xdc\xbd?~\xb8\x83\xe6\xfe\x8f\x1f?65\x80\xd1g\xeb\x03O\xbc\x1c\x83\xa3\xbb\x10\xc0:Xg:\xfb\x01\x94\xfea\xd0\x06t\x8e\x90Z`J\xce%o\x876\xf2\x85\xbd\xbf\xf6\xe3\x8f\xb9c\xb9\x10\xa84\xd4\xd5\x83\xfe\xeeK\x06\x8b<\xbe\xe7\x9amG\x18y\x0cE\xcd\xb0\x0e\xf9t\xf3\xb8\x82\xf0\xc7\x80\xf1\xd5\xec\x94\x07?\xe12\xa5\x85+>p\x1c\x17\xd6\xd0\xb6\xbf!\xf1\xc2\xa4!\x9b\xc7\x95F.s\xcd\xe4O\xe3\xc1\xa9\xcf1.\x01\xcc\xe1\xab\xae\xe4{\x03\xc6\x8f`\xbe\xbe\xee\xc8;S\x8b\xd8\xe6h\xe8k\xe3\x8f=\xa5D\xbc\xf1\\;nw\xf0|9\xbe\xaaC0\xa2]\x00s\x14J\xe9\x07l%F\x0e\xcf.!-\x1b\x8b1\x1f\xb9\x90V\xad\xee\xc1\xb9\xe3<r`\xe9E~^<\xc7\xb6Q\xcb\xc1\xfb\xf9\xf2K\xb9\xa8\x1d \\<\xfc0.\x98\xa2\xa6\x0e\x06\xbe6c\x0dP\x94\x899|>|\x00\xbec,\xa3O{\xfb\xe8\xa0\xeb\xc1\xc19\xecC\xca\xcb6]8\xc7O:#hY.3\x8f\x06kS\xa0F!\xd3\xdct\xa4\x15\xb3\x07a\xb6\xe6\xa5\xd9FW\xb0\x0f\xd3c\x98\x08\x1cT g\xdb\xdc\xa0Z\xcc-\xd1\x08\x1a\xa2\xeb\x06d\xd5\x8d\x08\x01\x89\xac\x8ak\xb2*\xeb\x90U\xb1\x8a\xac\xcaV\xa5\x03\xcc\xf2\xfa\xd4\x8e\xed\xedQ[\xec\x9c\x88\x92q\xbb$\x14%;\xed\x12\x9f\x97\x8c\xee?h\x17\x95\xbchgk\xb3]\x94\xf3\xa2\xadNO\x11/\xb9?\xden\x17\xcdz\x03\xf7U)\x98\x88wrB\xf2\x97IPFD\x97C\x14$\x99\xff/\nW\x10\x8c\xbb\xc7r\xe2\xe9B\x99\xd5\xf9\xdex\x0c\x86v\x8a!o\xe1\xe7\xaf/b\x91\xbe\xb5\nC\x17s\x95\x0d3\xb6 \xdd\x84oP\x83\x10&\xa6\xf3\xcb\xa8\xe0\xa1\x99\x9a\xa0A7e\xbb\xb3Ts\xae|q\x1e\xfd\xa1z/\x96\x0eR-\x8b\xdaY;\xcc\xf4<Q\xac4\x1f\xd2\xa4mb\xf1\x87\xee/\xba><\x18Y\xa3.E\x92\xd6Y0\xde\xdd\xd9\xdd\x1c\x05-E\x1b\xbdv\xad-o\xf4\xc0\x1b\xb7J\xe8}j\x9d\xfa\xf1OI\xab\xe0\x8c\x16\x1c\xfa\x85\x0b\xe3\x1dxR\x9e\xc1xs\xf4\x006\xefOv\xc6\x93\xf1.\xfc\xe9\xe5\x91t\x10\x86\xe9\ns\xb1\xf4\xde9\xc9\xf20\x89s\xbc*;/?|\x80_\xae]E\x89\x97_\xf8gg${\x17*\x9d\x97x\xb5 (\x02\xdd\x9e\x85\xc5[r\x1e\xb2\xf2\x85\xb2\xfcY\x98\x15W\x13\x08\xba\x85\xa7e\x18\x05G\xe1\x92\xe4\x85\xbfL'p\xd6\xad\xb2\xf4g\x8b0&\x93v\x0c\x85.\x07Ph\x1d\xaf\x82dy\x12\x06,\xcf\x94\x1ao\x06\xc9\xf2U\x12\x10S\x95<%\xb3\x89\xde\x88*\x8b&J5,/\xccMMG\xfeUR\x16\x13\xb0\xbe\xf6s\xf2\x02\xff\xd0\xb4\x14$\xb3\x83\xcb\xd4\x8f\xd9r[Q\x98\xebj.\xfd\xcbg,\xf5( \x8e\xfc3c\xff\xf30*Hf\xaa\x81\xe6\xa4~\x91d\xefp\x9e\x8b\xa2H\xf3\xc9\xbd{IL)^\x01=^\x98\xdc\xab*j\x86\xc5|\x97r\xfdB\xce\xca\xbcH\x96\xfar\x9eO\xf5uJX\xea\xaa\xe7A7\xa9N\xab.\xcfz\xf4\xac\xd4%\xbb\xaa\xea\x13\x92\xbe\x08\xe3\xf7a|\xa6\xaf\x94\xb1\xd6\x9e\xc7\x05\xc9f$-\x92\xacOc[\x7f\xc9\xb0\x97\xb2\x82f\xba\x19\xc9\xd3$\xce\xc9'\xea._$\x17\xe8\xd3M\x02\xbejj\x073\xa8q\xeb\xcb$ \xd1[\x12\x07$\xc3u\xb3\xc8\xa5\xbfL#\xa2\x83`\xe9+\x04\xe5\xe0\x19I\x8b\xc5\x04\xb4{R\xd7\xcf\x87|@\xa7ppY\x10<#\xb9~\x1fi\xbd\xa7\xc9r\x99\xc4\x83j\x97)\xc5\xc3$8,O\x97a\xc1\xa2M\xe4\x13\x98Zg\x04\xd5.i\xc9\xfeIr\xfc\x97e\xd1\xa5\xbf\x92\x94nU\x8e\xfa\x01\xe2\x07X\x89\xcb8\xad\"\xf3g\xc4\xd20\x9eiFrR\xd0>\"\x81\xb0u51C\x17\xad\xa9\xa9\x10\xc6a\x11\xfa\xd1!\xddX\xfd\xd1\x9a\xc7\x86c\x99,\xd3$\xa6|\xcb\xa4\xed<\x05jp\xa2\xfc?%\xd3\xe7^\xeag99D\xb9Y'M p\x82\x89x\x1c\x057\xf1:OF\xac)\xa5X?\xe5\xdd\xf8b\x8d\x1c\x9b\xdeq\x05\xd2\xde\xb1\xa2\xb7+\xed5\x91_\xe5\x05Y\xaa\xc8\x08\xf1T\xd8+\xf5\xf8\xcfU\x0eW\xb5M\xa9\xc7\xf7V\x03kl\x9b\xda\xb3\xd2\x8eJ\\\x1ff~U\xd4J=\xf6K\xdd\xb7x\xc4\x95\x90z\xec\x97\xb6\xb2f\xaeP\xdf\x98\xc6~X\x1d\xdd\xc5)\x1e\xbc]S\xaf\xcc\"\xfd84;\x01\xa9'C\x7f\x97@V\xc4&\xe8\xfb\xa4\xa2\xa7O)=\xdd\xaa\xdd\xfa\xbbEZ\xdb\xa7HRK<d\xb3\xfa\xf4\x14\xa5\x02\x1c\xee\xaf\xbc\x9c\xbf\xec\x02\xfe \x17\xb7\x94\x02D\xec\xab\x16q~\xe2e\xe4,\xcc\x0b\x92\xd9\xd3\xd4\xe3\xd0\xd7#\xe1\xe0\x97\x86z\xd3(\x82H\xbd\xb9&\xe2\xb2\x8c\"\xe8\xf9\x10\x7f\x19\x81<e3\xec\xeeJ\xe3\xcdu\x9b\xef\xa0\x0bp\x01{p\xe2\x9d\x91\xe2\x10\xcf\xad\n\xb3\x1c\xf4\xb2b \x11\x8f\x17\x1e\x85F\x96\xb91\xc9r\xda\xf4\x8bd\xe6GO\xf1\xa8\xc3~O\x05\x0c\xab\xa1\xc3\x9f\xc0\x19M5\xaaJ\xb9\xfb>\xfdS\x15\x9a\x078`\xb2\xdc#\xa5\xc0\x86\xb0\x073\xc7\x85\x13/'\x05\x1bCn\x97\x8e\x0b\x17\x02;=\xc1\x99\xe7^\x94\xf8\x01 0\x8fI\x9d=\x9d6\xb5\x16\xd3CE\x7fZ \xf2\x84\x16KQ\xb0\xe9BX\x8f\xb2\xc4y3^p\xd3\x85\xa4S\"%|ck$:.\xd3\xc0/\xc8\xbb,\xb2-\x0b\x07\xd6-|\x91\xf8A\x18\x9fQ\xe8/s\xdb\xca\xcb\x19\x06~\xd1\xd4>L\xc9\xcc\xa6\x83\xc8:\x83\xc0d)\xcdo\x82\xe4\"\xa6s\x07\x0c\xea\xc1g\xaa\x1d\"\xd6\xe8\xf4+\xda\xe0\xc5\xe8\x81#6\xc0\x81\x0b/C\xd2\xa7\xde\x14\x17\xac'i\xaa\x93\x97V\x91J\xb0\xfeI\xa8\x0d\xcd\x0f\x1c0s9\xb2\xc6\xdfK\x92] \xf8\xab\x9b\xd0\x8bR\xab\xe1\xe5bXj4\xc9\xa3\x89P\xe0\xc0T8\xbceL\x06\xd0x\x89`\xf7\xe1\x03\xf04\x1e\"k\xc7\xe1\xfb0MI\x00YM\x07\xc6 \xfc\x0bk\xe5_ \xc9\xf07\xfd\xf8_\xe0\xc2\xcf\x11\xed\x87\xf3\x90\x04\xbau\xe2x\xe8\xa2\x8b\x18\xba\xe7\xeb\x92bB\x0e\xf2L\xa6\xc8~\xbf\xcb\"\xa5\xac\x0d\xe5\x98\x8dM\xee\xbc\xa0G\x9b\x9d\xa8\xaf\xaf\xdeq\xb0Y3\xd6\xf8\xf0\xc1\xd8\x82\xe2\xfa\xc6K\xed\xb2;\x1d\nlo\xc92)\x08\xfb^M\x81\xab\xd8\x90\xd4\xeb\xbeU}\xa9`)\xe8\xa7\x9d\xd7M\x1c\xec\xc2\x01fb\xb0\x8d\xf3\xbc\xa4\xd5\\\xb8\xa0\x87\xf1@r\x03\xba\x96<J\x05\xf9\xd3\xa1\xc4\xfc4\xcc'P\x91\xbb\x9a\x8f\xd9E\x06+\x07&\x1c\xb5s\xdb%\x18\x84\xea\xbb\xc3\xd7\xaf\x98\x02\x83\xfdT\x91\x879\xca=\xc3\xf9\xd5\x04h\x1d\xaf\xfa\xbb\xb9D+[ys\x88L\xea\x06\xb9\xec>\x91,\xe9\xa5E\x1c2\xe1\xd8\xde\x19=\xe88\xf0\x8ev\x1c\x8f\x8b\xfd\xde\x93\xab|HC\xf5\xcau\xac\xa0\x99\xb6\xf5\xe1\xae4\xe1\xd8\x1e\xef\xdcwx\xbaM\x03\x95\xd1631\xbb\xed4\xb3s\x03\xacnX\"/C\xb3\xa3J8\x18\xdb;\x9d\xc0\xb0\xb5pq\xd2\x9fb\xb3\xb3\x03\xdc\x83\x1b\x1d\xbe[\xfbp\x7f\xdb\xf1\xe6rL\x94!-\x0e\x9cD{\x9bn7\x89\x9d1\xf3\x07\x1f\xdd\xe7~\xe4c\xeeW>\xbe\xaf\x04\xaf\xc3\xab\xe5i\x12\x0di\xbb\xd7J_\x9d\x8e\xb7\x13\n\x83G\xe9m\xe7\xb2\xe4\x913\xda[\xca\x83\xf4\xee\xb4\x83\xf1\xf2\x19\x8c\xb7\x1d\xef\xcf\x07\x7fk\x96\xb1\xd4\xa1;\xed\xf1\x88\xcc\xa1\xed\x011\x81\xf6\xc3vX\xa1\x94{\x87\xb4\x8d\x13x\xea\xd0\xb6O\xc2\xa2\x82\x94\xe6\xfbs\xfe^\x9d9tg\xdc\xae/2\x87\xb6'\xcc\xb2\x86n\xb5G\xc3R\x86\x8e\xdb\xb5Y\xc6\xd0N\xdc\x87\x0b\xbe\x9a\xed\xb9\x1e\xb0%h\x8f\xf1\x92Wo\xcf\xf5\x90\x8f\xbd]\xff)\x1bL'X\xca{\xb6\xe5\xed\xd7O\x04Bj\xbe~\x0d{\xf0\xb4\x9d$\xf4\x0d\xec\xc1\xfb\xf6\xcb#\xcc\xfb\xd9z\xf9\x12/\x08\x06\xd7\xcd\x92\xe7\xd5\xd5\xd1|\xff\x13\xec\xc1sJ.<\xafQz\xb3\x06\xbd`\x02\xdb:Y\x84A@\xe2\xb6\xca\xff-+-\x927Y\xb8\x0c\x99\xbfM\xb3\xc63\xd4\x03y)g(\x9f\xe7\x07q\xb9d!\x91\x9b\x15_\xd0\x1b\xd2\xb6r\x1c\xfd\x06c\x05\xb3\xabvs\xef\xe4Z\x9dd\xc6\x7fg\xa5I\xba\xa1\xa9\xf0\x0d\xecu\xb4I\xcd\x1a?\xeb\x02\xc2\xbcl\xd6\xfb\x1aW\xf4/\xac\xb1f\xd1\xf7\xb0\x07k_cf\x88\xaf\xa5\x8c/\xad\xbf\xbdy\x18\x07O\x17a\xd4R4|\x0b<\x82odvr\xe6w\xce}X\xdb\x83K\xfb\x0d\xf2fh\xd7\xab&\xd0\x87\xc5\xd8\x82\xba\xe17\xb2\xad\xb0Y*\xc2\x93,\xdf\xd7V\xbav\xbcn\xd0#P\x8aA\xae\x9dv\xddkG\x0eg\xa3\xb1]\x03 !\xbf\xb6\xbfQ\x9b\xd3d\x92\xac\xe2\x9biq\xec\xc2\x9b\xaa=\x1e\x10\x92 \xb7\xf9\x0d\xfd\xf9\x06\x9b\xe9\x04\xc0\xbf\x86 \xbcin\xd9\x0f\xbd|\xbb\xe0\xd9\xdf1\xaf\xf1K\xfbe\x0d\x08&\x1d%fL\xef\xaa'\x9b\xdd\x7f\x07{\xf032\xc5\x0c\xea\x1bP\xeb\x89\x9b\xbb\xb1\x88\x06\x80R4B:\x0b0\xa8\xa5F\x94\xfd\x97\xa6\x19\xfcm`l\x80\xaa\xe1=\xb1I\x7f\xb3\xff^m\xe0\x15\xcb\xe2\x02{p\xc13\xd6\xd1w\xb4$\xb1\xdf\xa1\x91\xc4>\xc6\xd7\xa9\x10\x10f\\\xa5\xfd\xbdby\x85\xa7\xaf\x8e\xa7\x053s\x11\xbf\xf7x\x0e\"\xdc\xb4Xw\x10\xea&)\x17\xb1\x89\x89\x8bT\x90\x0d\x93\xba\xc3\x0f\x1f\x18\xf4\xbdr\xe1\xc0\x1ea6uJ\xa6\xd4\xfd\xd2\xe1\x7f[\xad\x06\xfd\xb6\x86V\xd3b\xfey\x88q\xc8\x95\xd2\xf5\xad\xd6\xbc\xb3\xe0\x1fK\x9e\xe8\xb3\xa0CKXj+\x16e\x97IP\x98\x1fe\xf2\xc8\x81\xbf\xa1\xfe\x1d\xc3\x05&\x18\x06\xa60j\xdf\x8d)7\xfe4\xf88=k\x18\xaf\xe0\xc6\x13\x96\xaaP\xdb\xf3\x1a\xd6\xae\x01\x08A\x83\xe5\xf7\\K(0\x11f\xc1e\xaf\xd9\x05\xa2\xec\xda\x17\x9f\xff\xf9N\xfc\x16%\x0cz\xe8o\xbay\xe4\x18\x0b\xdbv4\xcd)~1d\x8f\x98\xdd\x05]\xff.\\\x0b<U\x0d\xa9\xe0C\xfa;\x0b\xa0\xaf\x17\x1d\xc6\x88!\x0d\x06\x87b\xa1\xe2n\xe3\x9d\xa3B\xf9\xd0\xc6\x89\xe2p\xdb\x0d\x0dvmZ\x8e\x7f\xee\xdd\xf1v\xf4\xa2#\xfb\x84\x85\xb3\xc8x4\x9a\x90G\xa3i\xe6\xf6e\xa3\xa7\xc4\x16K\xf1\x8b;C1\xdb\xab\xea\x17\xda\x19d<\xae\x90\x1en\xda\xd2\x85\xc6\x9f\x7f]y\xfc\x1c\x85\xb1\xf1\x1fa$\xb9\xbf\xc3\x04\xf8\xa4B>)\x11\x89\xa9\x9e\x94\xff\xc8\x11{\x82\x87\xcd\x17\xb3\x8a9\x04\x7f#v+dSz7-\x0c\xe70l\xce\xaa\xae\xf73nmi\xdb/M\x81\x0d1\x08\x14=N2\xa2\xef&\xc4\xb0\x18IZ\x87{\x92\x92\xd0w\xf2b\x9c\xf3\x8cj\xa9\xca\xebw\xb3\xe1\xf5\xbb)\xf9\xe6\xbb\x9d)6\"B*\xaf\x13\xe0Y\xdajl\xc0SZ\xfe\x9d](\xcd\x03\xce\xfe\x9a\xbe:\x16\xf8\xc2\xae\x8f\xbc\xb8'\xbe\xad\x0d\xe9\x10\xa9\xab\xd2\x1d]+\xa5|H\xf2}O\xff\xf7-\xdd\xc3N.@\x18\x14I5\xa7T^\x8bXp\\\xf8\xa1\x99\xeeM\xce8h\x15I\xe5\xe3\xdd'\x04)0C\xdf\xfb?\xc8M?\xc5\xa4t_\xb8\x94E\x81=\xf8\x1bF\x90\xdby\xe8\xe0_\x87\xf8\xff\x7fF\xae|\xbc\xc3\xde\xfd\x89\xf1\xe8\xbb\xec\xaf\xbf\xf2\xfc\xc6k\x94\xdf\xdc\xc6e-\xe9\xfc-\x15\xc3`\xb9\xf4kD0\x0b\xfc\xbaWR\xf5\x83\x1d4$2t\xc4\xbe\xedc\xaa;\x1fS\xdd\xf9,[\xda\xcf\xed\xf5f ;\x91\xe8\x16Y\\V\x1d\xe7\xbfPva\xe1\xe7\xcf\xf9\x01p\xc3\xfci\x12\xcf\xfc\xe20\xcd\x88\x1f \x9b#(0\x17\x9d\x85\\n\xbd\xeb2\xd7\x0c\x97\x07\xe8u\xd1\xde\xd3\x958)W\xec\xcc\x91\x7f\xe6\x96q>KR\xda\\.LC-\xd7\xa2\x17\x01a8\xe2/\xf5!!\xe4\x91\x03\x81\xfd\x97)!\xcd\xb4\xe65\x12\"\x98\x8f*\xf0\xf2\"\xc9\xe8\xe5\x12\xf3V\nR7\x13\xd3f\xce\xed\x82L\xe3V;t\x05\x0f\x1bk\xc7Ox7B]\xbf\xfdG%;{Ao\xb5\xf5=\xb47\xdf\x87\x17\xf4TM\xd8?{\xdd\xe4\xea-\x04\xfc\x9e\\}\xd3\xdf\x15Z\xe0\x7f\x87\x16\xf8\xc6\x9c=>0\x1a\xb8\x83\x9b\xa0\x19<-\x8c\xe1\x85ZCA{z\x81t\xdc\x9e\x9c\xba\xc3H\xc6\x9799$\x05\xaa\xb1\x8d|\xda\xf7\xaa\xf0\xc0\x9d\x96\xc2e\x1a\x91!-5\x93\xcd^w\x8eJk\xa3\x19\xc3\xdb\x8dq\x84A\xd4\x07$+\xedZ%\x17\xb0\x0f\x976\xa6\xa5\xfc\xb3}\xc9h\x1d\xe3f\x07d\x1e\xc6D\xa8\xa8'\xf07CqH\xf2 \xfc\xb9Y\xe1\x8c\x14\x92\x8a\xfb\x19\xc9gY\xc8\xd4\n_\x98*\xbe\xf2\x97\xb4\xb1\x7f6\xd5a\xc7 \x9f\xc0_\x1b\xeb\x88\"\x96\xe6b\xdakx\xc5\x1a\x98|q\x11\xbel\xc7<\x16\x8c\xda4.\xa3\xe8\x18c\x99\xfdd\x0b\xba\xd3\xfa\xe5\x9a\xbf\xe9\xae\xbd\xdf1,m}\xc26\xb7\x851\x1d\x17\xac\xef\x0e_\xbfR\x04\x01\xa9\xb4\x0c+\x10?\x9cd#\xc7\x8c\xa3\x18=R\xc5\xe0\xa1,\x05\xa7\xc9\xea\xeb>ib!\xf1\xf0L\xde\x9c \x1a\x1d\xbb`\x9f\xda\x9d\xa4n\x9c\xc4\xffN\xf6\xbf9\xe3\xd5\xecb\x089.\xfaRJ\x87X\x987\xa44;\x06\xf5\x8eK\xfb-\x1c\x0d\x1a\x00\x0e$t\xect\x1a.\xfc\xc4\xb5*\xcf\xbb\xc2\x87\x06XIB\x84\xe9[$\xc6c{g\xd3\x91\x85\x0b.\xbcm\xd4cI\xb6^\xcf1_\xe8\xcb\x1aq\xb3\xbf\xfdb\xe1\x82E\xff\xb1\xf8=;\xe7j\xa6\x1a\x06\xd66\x07\xa9\x00j\xe9xG\xca)\xa2B\xa9\x93\xd8QBaU\xbd\x94\xe0\x073e\xda\xb7\x98\xc5\xe5\xed\x1a\xce(2HV\xa0\xea\xbb\\\x00O\xf1\x11\xed=\xf4\xe6,/\xcb\xe6#(kH\x8d\x1e9\x90W\x16\xe8\x94`/\xa7\x11\x12\xe5HN2\x10V\x1f`Ia\xb8\xda\x8av\x84\xdb\xc2\x9b\x90\x92]\xdd5\xfd\xe5\xda\x13\xa4D\xb3\x10\x83\x03\xd5\x86\x14\x02\x96/\xc28H.P\xc9\\\xfd\xe2BS\x05F\x84}C\xa1\xcdZ\xa0\xb8]v\x8b\xab\xb5\xa3\x83\xa88\x0c\x8akM\xd9H\xe1\x07l\xf2\x18G\\\xe58\xeb\x95n\xe9\x93\xd5T\x04\x88\xca\xda\xaa7\xf9\xbb\x18\"w\xf4Q4\xd1<\xc06\xcf\xbf\xdc\xd4\x14\x0e\x02\x00\xa6K\xb1-?\xbf\x8ag\xcfWR\xc8\x89OY\xfa\x12\xa4\xa5\x07}\xa7\xd6|\x15\xde\xe9UA^\xb0#0\xe4\\F\xdas\x89\xe9\xa5:%\x19\x96\xb4}:\xf9Ro\xd1\xdb\x13\x83/9p\x0f\xb6aC\xe2\xcd\xaf](\xbc\"\xf9\xfa\xaa <3\x9catm\x9e<bi\xedQZ\xb0\xc9\xb9\xef\x18/\x14\xc4\x04\x98\x02f\x05)%\x8e\xb3\x80uZ\x89\x8d3n\x81\xc2&z{\xfb\x0e\xc70\x9b\xcc\xe7\xcd\xe7|n\x06\x1b\xb0\x0d\x13Ze\xce\xd0\xce\x1c\xbe\x82\x19\xfdg}\x0f\xb6\x1d\x16\xbdwJ\xbc\x19\x0f>\xfd\xa4\xb0\xe7\xce1|\xf5\x15\x8c\x1e\xc0\x87N\x11\xac\xc3\x88\x17\x8f\xd5\xc5cV\xbc\xab.\xddr\xe8JL\xf3\xf5u\xbc\xa60\xb2\xf2.| \xe3\x9d\x9d\xf6\xfb\x07\x9d\xd7\xe3\x9d\x1d\xf8\x12Z\x89\xa4\xc6<\xc5\xb5\xb8:\xd5\x93\xd1\x0c\x96\xce\xe5\xf1c\xd8\xeev\xd2\xc2\xb6\xa3A\xbd\x8c6\x8dK\xb6\xad_\xb1\xc7\x8fa<x\x01\xd47A\xd9\x04\xe0y\x96,o\x06\xc2\xa4r\x96\xc4+\x01\xfe\x03l\xb5\xa4I\x1c\x98a\x03\x92G\xe0\xc3WP\xd2\x7f\xd6\xf7`\xb4\xbb\xf5`\xcb\x11b\xa3\x19\xdef.\xc6\x06\xc6\x12x\x8c\xb1nK\x98\xd4\xef\xdabV\xb6\xd2 \xec\xf3d\xb0S\xda\x0d=?\xbc\xd1l\x8a\x8b3>\xa6\x87wZ\xb0u\xfd\x12v\xb7\xe8\x0bko\xcfB)\xf7\x98\xb7\"\xf6\xcbf\xed\x8cq\x1f\x1e8\xb0\xaemx\xb4)Z\xa6\x80Q\xb5\xcc\xbb\x1aK]Y\xed\xa1\x0b)L7\xdc\xf4\xb5\x82\x7f\x16B\xc7D\x12>Ze\xcc8\x8f@N\x0f\xfb.\x8c\x8b\x07l\x1f\xf7\xe5?&,\x9f\x0b\xdb\x14\xeb\xc9\xd7O\x9f\x1d|\xf3\xa7o\x9f\x7f\xf7\xe7\x17/_\xbd~\xf3\x97\xb7\x87G\xef\xbe\xff\xe1\xaf\x7f\xfbg\xfft\x16\x90\xf9\xd9\"\xfc\xe9}\xb4\x8c\x93\xf4\xefY^\x94\xe7\x17\x97W?o\x8e\xc6[\xdb;\xbb\xf7\x1f<\\\xbfg\xf1h\xdc\x0c\x8f\xf8\x95t\xbe\x84\xaf \x7f\x04\xeb\xeb\xa5\x03\x19K\xc6\xedOK:\xf0\xa9/\x83r\xe9`,c\x95[[\xa4\xc7\xea\x02\xd8\xba\x84U\x01\xff\x01\xb6)\x1a\x13\x8c6E\x9e\\\x16\xf8<f\xc1\xde\x19\xf7\xe0\x01\xbfF\x96e\x8eq\x1b}@\xd7\xf44\"\x90\xcca[%\x1dd\x80.\x82x\xd2\xcdT\xee\xe5\xc6\x88\x87^e1\x1b\xf7\xa0p\\\x98b\xe0>\xc1vn\xc2\x84!f:^9mfw\x1df:\x8c_g\x8cB\xf7S9:z\xc1v \xa6\xff\xac\xef\xc1\x96\x83\x00c\x13\xba\x13\x14\xe5P\xec9\xda\xbd?\x1a\xed>\xd8d>\xf6\xd3\x92\x9e-\x06\xe9\x14\\w\xc6\xbc\x84\xa1\x0fV>>\xa6\xac\xb9\x80|;\xc4\x8cZ\x08\xff\x0f$\x98\x0f\xf1\xcd\xb8\xfdfWz\xb1\xbb\x05_B\xd8\xe6\xa9*\x8a\xa6{\x14\xaa_\xc9\xd4\xda\xb0d\x08\xdaD\x08\xda\x1dS\xd0\xb2NTE[JzC^\xcd\xc2\xcb\x88\x1f(T\x81<(\x8a\x02\x0cCW\x10\xea\x0f\xe0\x8f\x90PZ\x80b\x06\x85`\x94.\xfc\x88\xaek\xe9\xa8k\xa0\xbf>\xaeY\xb7\x8c^\xcb\x1b\xf7\xbb\xef\xd1~\x06\xf6\xb1\xe3\x11LT\x01\x0bR^e\x83\x96+\x9a\x0e\x10QR2a\xde\"w\xb8\xc3\xfe\xfa\x1e\xa4\x0c\xc3\x04\xf0%\x9f\xc3\xc6\x8cM\x02\x02x\xfcx\x0f6f\x94rX\xa7'\x18f\x18\xd8\x14\xeb\x8fwv\xe1\x8f\x10\"\xc2d\x1d\xb8 \xda\x9b\xc1\xc6\x1e<p\x14=\xfa\xcc\xfe\xa0\xddS\xd8\xec)\xabz\xf2\xab\x9e\xfc\xe1=Q$\xc1\xa4?\xa1\x83c\x1d\xc1\x06\xb4\xcc_5\xb9\xfdXHXt\xf3wj\x06a\x1f^\xf9\xaf\xe8\n\xc3=\xd8\xa4\x84WP\xad\xb9Bd\x80\x17\x1eF\x17M\x93\x0b{\x8c\x81\x98!\xa4\x03mzl\\\xab\x0e\x86\xdc4\xce\xfa\x8f\x8d\xa6B\n\x84\x0dC\xd2\xc2\xbb\xc8B\x14\xb9\xaa\x01\xdb\xa5\x8b\xd0\x85m\n\xd8,\xee\x07\x07o\xdar\xa2\x06\xdeY\x05\xde\x91\x06\xbc1z\xbc\x06\xbc)\x8c\x8e\xb7\xaa\xcb[\x9e\xcd\xc6x\x9b6\xd8xu\xff\xbe\xa3\x86u\n\xcb\x19G\xab\xa1z\x18\x0b^\x85.\xdf\x86\xa2\xfc\x1c)(\x1e\xf0W\xc8\x071%\xca=\xfe\x9e}\xbb\xa9\x80\\z'\xe1@\xfd\xd3\xdc\xa6\xc8>\xcc_\xf9\xaf\xb8\x8c\xa7\xc0\xb6\x18x\xec\x83\x8dY\x04D1o\x92!\xef\x19j\xe9}\xd1\xd6<J\x92\x8cE\xa2\x8d\x12\x14\x18\xddc\x05/^\x8dQ+\xfbG\x16\xff\xa3\xb1B\xbe\xe3\xc0W,\xe6\x85\xedol\xd0k\xf9\x8f{@\xeb\xb3x\xc2\xf4\xa4\xcc\xe1\xf1\x1eF\xb1M\xe1\x1e\xe40\x81\xb4\x05H\xf4H\xcc\x1d\nb9\xad:f\xad\xad\xaf\xd3\xd6\xee\xb1\xd6\xaavfbN\xf2$\x1a\xbd`\xa9]`k\x1b\x0cr\xe5\xce\x12\xd6\xda\x1e`*\x03\xac\\\xb4\xaa\xcc\xf5\xdf\xed\xc1\xa6\xe3<\x82\x84v\xf6\xe0\x11\xd2g\xeb\x10\xd4do\x89qY\xf6`Aq\xf5=\xc4\x17\x94x2\xa1 \x9f\x02s\x02\x1f\xe8\xb7\x11\xfd6y\x04\x11\xc38\x9d\xe6\xfd\xbay\xbfj>R5\xcf?\x85\x0dX\x1c\xc3\x87=\x18\x8d\xe9\xc1:o\xddp7b\x8a\xb9\x10\xa4)\x9c\xb6\x0b\x17\xac\xda\xac\xb5#B\xe5\x96S\xb2\xb1\xab4bAj^)\xa3G$\xbcd\xac\x8c+\x81%[\xaa\xb8\x12X\xa2\x8a*A\x0b:_\xe4\xbc\xa0\x13l\x82\x99\x9a\x8e\xef\xb7U\xaf\xcc\xd6\xb4mf9\xc7ff\xad\xb7)o\\\x11\xe6\x82\xd9\x9a\xee\xec\xb6\x03]/\xaaO\x1e\xb6?\xe1\xf6\xa6\xe3v\xdfK1\xb7\xce\xac\x99\xc5\xa9&\xa0\xc3\xd5\xa7\x0f\xe8p:D\x1a&%\x1bm\x82\xca\x89IU_M\x8b(UA\x92t\x9e\xb15J\xe5{\xed\n\xb8\xd6\x88\x0d\xb4y\xdc\xd5\xcb\xab\x82\x7f\xb4\xdc\xc9\x84a\x8d\x8b\x05i\xbb@-p\xcb\xcd^\xc1\xbd\xce\xc5+\xb8\xcd\x9a\xbc\xe3L\xde\xc7\xd0\xf1@\xd6\xd7\xcb\x92\xa4x\x1eS\xd4\xd1S\x11\xe7\xfdF\xccN\xe1\xd4\x0c]M\x99xN\x932\x0e\x0e\xc5\xc45\x95\x8a$\x89N\x93K\x8d\xc34bz4\x00\xa8\\\x18\xe9\x1d\x81\x16\x01\xd5\x1b\xef4\x8c\x03\x1e\xf0\x87\x95\xa1\x82\x99\xdd<{p\xeaVn\xd63\x14r|w\xc8\xf6\x9ayUr\xe1[\xb3\x93\xfe\xb0\x85\xe2\xa9\x18s\xda\xfe\x99\xc7\xf6\xf9hQ\xc6\xef_\x86A\x10\x91\x0b?#\x8e\x1d;\x86\xc0i \x06\xf2\x12\xe1FNN\xde\x1e<{\xf7\xd7\x93g\x07\xdf\x1f\xbd~\xfd\xe2\xf0\xe4\xe0\xafG\x07\xaf\x0e\x9f\xbf~u\xf2\xf4\xf5\xcb7\xaf\x0f\x0fNNP\x87\xc7\xbcGsE$\x1c\x90\xc8\xc6M\x97\xd6D=\xe9!\xaa\xdd\xf9\x84\x12;b\xfa\x9ez\x98\\\xffS\xa5*wTf$6?\xaf\x8eXk\x0cO\xc2\xbdK\xd1\x1a\x05\xdfVN\xb5\xf8\x17?\x1e:\xadRk\xbce}$\x89\x0b\xd3\xee\xba\xbf'W\x13\xb0\xe8f\xd1\x19)\xdc\xa2\xf9\x05gTCC\xcb\xc2\x04a\xa6;\xdf\xe6\x90U\xe8\x81\x8dFLx\xc0hz}l\xd7\xd4\xa9\x07txp\xc4t\xb0\xf2\x0b=\xb0\xc9y\x80\x81\xd8&\xd0\x16\x0f\xe5}\x18t\x879\xa37\x1cJ\x91b\xc09\xfe\x1a\xc5JNC\xdb\xa8\x06KU\x9b\xdf\x94\xf1\xac\xf1-\xb1\x0b4\xa0\xd5y\xf9\xaa\x1aQ\x8c\xc0[\xfai-:\xd7jW\xe5\xa7\x1e@\xc7\xde\xb5\xfd\\;^F\x82rF\xec\x0b4\xa35\x0f\x957\xacA\xa0\xc0t4mTg\xeb\x02\x00^p\xfc\xc5qU\x8c,\x01\xb7\x06m\x1cH\x85\xfe\x03\x9a\xd7r\x1f\x00\x08\xfcF\x9b\xd6O\xf1\x9c\x07\x17U\xc0\xedX\x0b\xb7\xe3\xe6\xfd=>\xeeq\x0d\x07Nd&\xde\xc2\xcf_\xa0\xb7\xb6yD(T\xd0W\x19\n\xd3\xa8\x07T\xa9\xdf\x0b\xcf\x9f\x17${\xc1\x9d\xa7\x91\x83X\xdbt\xe1\xc0\x96J\x1cY3\x1f\x9bB:\x9a\xcf\x84\xdc\x0c?\x1e}\x1e\x12\xd52M\x14\xd9\x9f\xc5c\x82\xdc\xbb=`\xcd\x99dB\x18\xd1\x7f*\x07\xcd\x03\x00TY\x80\xeb\"\xfd4\x85<GY\xe1\xba^\xf8\xea\xc0\xa9N\xaa\xfa\xfc\xdd\xfcB\x91\x9a\x19p\xa7\x98\xae\x14\xa2\xbbRL\xa4u\xebJQ\xe9K\xc5S\xc8\xe4\x13\xbdEm\xc7\x0b\xc2\x1c\x03\xf8\x98/\xa2\xf6W\xf8\xd3/4$\x0d[\xdd\x9a\xa8\x84N\x0c\x06\x8c\x14\xc1\xdb|[\x93\xb8\xb6DD\xfe\x90\xf9iJ\x82'q\xf05m\x89;h\xa3\xe0FS\xa5\nea\xc7\xedm\x97\x89S:n\xa4\xfbr<\x9c\xe2\xfd7\xb1\xdc\xbb\x08@\x81N\x17\x15\xc4d\x047\xfb-^'\xd9m\x80\xa6&\x8ao\x0132U$-\xf7\xcdG\xd5\xdc\x8d\xdb\x8f\xac\xbd\xebZ\x18\xabVc\xd2\xa6\xef\x8d\x9fPh\x9c4\x81S\xe61L\xdf>\x95\x18\xb0z\xd3\xc5\xbb\xa1\xad\xf0\x18T\xba\xe3\xd13\x02\xceG\x16\x82K\xe2o\x06u\xfe|9\x81\xb9XZ}\xb5\xb7\xc4\x9f\x15\x93:H\xa2\x1as\nn\x8cqi\x12\xcf \x18\xc6\xe5\x96p\xce\xa7u{p\x92\x07\xa9\x8bX5xdw9\xb0\x01\xc2\x82!c\x87\xce\xf8\xbbo\x0c3\xcaW\x99\x91\x96\xb7Q\x0c\x14\xf6\x14q\xf7\x06\x0f\xab\x894\x07\x0c\xcdxE2b\xc4p\xef {(b`\x0bLmW\x97\x18\x9f\x99,.a\xbea\x8c|JN\x7fz\xe9\xa7\x0e\xbdA\xfa\x97\ndZ\x89\xf1\x18\x99fW\xb9\x87V+\xd6\x0f\xa9X\x93\x9a8\x1bB\xe6\xf7RH<\xc6-F\x82&\xd3\xf8x\x85H\xe0\x82\x10Y\x91\x0c\xe9J\xf8br\x013\xef\xa5\x9f\x9a\x19\x05\xe0\x84\x89\xcc\x15\xf7s\x93k\x99)\xc2\xb0\xfc\x08\x93\x80lZx\x94\x1d\x18\xd0x/\xa3\x0d\x12'u`\xc7\x8e\xc9_N~\xf8\x88\xab D \x97\x0c'\xc6/\xf5\xac(\xa8\xc4\xbe\xed\x07aO\x0d\x95\xc8\x0f\xbbm\xa8,\xe4\x08X\x9b.\x04\xde,Y\x9e\x86\xb18M\xb9\xc3r\xea\x9f\xf6&\xc97\xa3\xdf\xa3\xabt\x88L\xa8W\nC\xa6\x9b\xc7^\x91\xbcKS\x92=\xf5sb\xa3\x11P\x15+\xbeW\xec\x86\xa7\x9e\xcd\xcd\xb1\xf5H\xa2\x1aP\xacH\xe7!?\xe7<\xb6y\xac\xcc\xf8-\x1eTT;\xf28\x92&}\x9c\xc1:\xc5u\xa1\x9aU\xba\xcd\xa5L\xc9\x13A+\x0f\xd8\x80!\xb72\xdfN\xdb\xca\xab\x86o7@N\xef\xdfbx\x02\x915\xc7\xe7\xf3v\x07\x82\x05^\x06d\xc5\xcb\xa0\x03T\xc4`\xd6\xa2z\x1a\x02\x06\x8a^\x1c\x13\xa0\x14\x9dL\xe0\xf2\xa3a\xb5o ?j\xeel\xc0n\xf5\x9ef\xba]\xc3\x98\xd1\x06_\xa8\xf2W\x07\xdd\x86\xc6\xcd\xfd\xe8\xbfpi\xaf*\xac0\x8d\xeb\x0c\x0e\x1b\xf7\x9dc\xef\"\xf3S>\xa4\xdeK:\xe3\xf8U\x03h\x03\x04\xbe\xe2\x0e\xca\xa6q\xcf\xb5\xc6\xbbD\xe3K\x14\x10 A\x91\x9d0\x1f\x17\xb4UL\x8e\x1d\n]m\x9ad\xc8P@Z\xaa\xde\xa3\xd9~\xc4\xbd\x88\x87\xa3!\xaci\xa9:\x14Q\xc4t\x8fB\xbf\xd8~\x90\x90\x90\xcfY\xe6\xc8\x16\x89\x92\x87\xb2\xb4\xad\x10\x13\x12\xe4P$\x954\xaa\x96\xd2\x16\x0b\xbf\xe0\xafs\xf0\xb1\x91\xaa\xcc\x0e \x14\x0b\x02\x17\xec\xe4\x00CD\x8e\x0e\x11\xc9\x0f\xef\xe8\xc0\xcez$\xdd<\xf0\xe67\xbcO)\x88\x08\xbd\xafM$\x82\xb6\xf8n\xf1\xc4*\xd7\x8e Q\n\xa2\xce\x8c,\xb26\xb2\xa8%D\xfd\x01\x0e\x9a'S\xce\xa5\xa3J\xe7%?\xe2TN3 9<4)\x16A\xb87)qL\xc2\xd0J5\xf8^\xc4\x12v\x10K\xb1\xc2\xf0A\x16\xcaO\xb3a\x88\xc5\xef\"\x16\x9f!\x16\xb4x\xf5\x99M\xaa\x82\xd9\xe9\x1d\nH\x14\xd5\xca\x88\xa5\xb2\xbe\x0d\x15\x1c\x0d3Mb\x83\x0d\x1dn#\xcdlr\xc3GP\xae\xaf;h\x0e\xdd\xe0M\xca\x9e\xe5\x10\x8f@\xf1\xc8\xcf\x990\xda\x94\xcb\x8b\x9e\xc7v\xe2\x1cS\x8e{\xe6\x17\xb6\xaf \xad\xdb\xcfM\x10\\hBp\x02\xc0~?\x0c\x17\xf6\xa1\xb7\xc2\x80\xde\xd4<\x0e\x08\xf4\xa6a\x81n\x87\xdeP\xca7\x08\x99\x0d\x90\x94fM\x0b\x17\x15.X]^\xd0\x14\x08\x10\njL\xec\xad^\x0e\xf7v\xe2\xbe\xa6|\xfd\x1fg]\x06#\x16\xc1m\xb3C\xabr\x11\x15\xcf\xf5G\\\xe3o\xe2\x01K{c\x99\xe5<n\x8a+\xe7\xddp=\xd0\x19p\xf7M\x9f\xecU\xc8\xda\x07L\xe5\xae\x98\x86J\xac)\xfa\xd6r\xe8|\x91\x9a7Z\xec\xc0>\xc4+\x93\xc7z\xeaV\x83\x92\xaa\xb05<\xb6\xf9\xbe~\xf4\xd0\x96,\x8b\xb2[m\xce\x9d\xd2jJz\xaa\xd2\x98T\x14\x99\xb3\xa2\x84EEa\xf5RFz6\xb0\x97\xc1\xe1-\xf4\x1e/\xf9ix\x84u\xc9\x8f\xb0\"?2\xa7\x8a\xe6\xe4\xc3W\x90=\x02\x9f\x92\x1f\xe1\xd4o\x92\x1f\xfe\x00\xf2\xe3\x9c\xa7C=\xb0cAl`*$\x0d\xa9\x11\x1a\x93W\xf2\x87O^i\\\x81\x89(m\xd6c\xe9\xd8\x85\xcd\xa2\xca\x1b\xdb4X\xd7|\x14q\xc5] )\x08\xc6\xe6\xfa\xf0\xa1\xa3\xf1\x13jt\xf5R\xcah\xca\xab\x85[\xed\xc8\x1d\xe2Q\x9f\x18\x99\x84\x1f\x80nl4(<\x0d\xc5\xbc\x9ff\xc4\xa7\x07\xcd\xa9\x10\x17\x90\xc1\xa6 \xd2\xc6\xd7\xce\x8b\x85\x99\xcd\xe8k\x1a\xe4\xeb\xb4\xe8\xb3\xe1\x82\x017\x9b\xfc\x08\xe9\x1f\x05\xfd~\xf8\xd6\xbb\xff\xb7\x1f\x94(\xdeB*!\"\x06\x0cZ\x1e\xe0\x1d\x0e\xabI\x1f\xba5\x138\xf7^\x1d\xfcpr\xf4\xed\xdb\xd7?\xbc:9x\xfb\xb6_\x03#\x1e\xcc\x80\xa0\xcf\x92\xa5zR\xff*J\xfc\x80\xa5\xf8Y\xc8j\x84AM\x98\xb5\x1bX\x03\xe6a\xecG\xd1\xd0-\x12@\xd5[\xd9\xdc\xb5\xc9\x02\xb0p\xb42\xd7[b\xaa\x97~\xca(\xe8\xe4M\x96\xa4C\x90\xd5\x10\xf9\xb7\x11\xcf\xf4\xb6\x04M\xac\xd2\xb2\xe3!\x03H\x9a\xdb.\xc93\x8e^\x87\xaf\xca \x92q\xd8\xb2\x0c!\xee\xec\xa6\x87\x02\x8a\xe5\x0dVL\xc8\x81\xd5VG:P\xea[\xb6c\xfam\xf5\xea\xdaV:\xaa\\hCG\xddZ\xc5\xab2\x02-\xd4\x0d\x9b\xac\xa2\x1b\x0d\x8fT\xde!\x0dA\x860\x03\x95\xb4\"\x83\xea\xcbF\x9a\xcd\xea\x05\n\xd8j\x96\x04)\x9a\xd6\xd5\xd6\xaa2\x80Z\x15T*\x91\xc8r\xe6\x1a$\x91\xf0*\xf9\x1a\x067\xe8H\xe9\xf7\xc1n}\x89&\xb6\x9c\x8c\x9b\xc6\x14\x18x\xf4\xea\xf6`\xa7\xd91\x86\x95\xc1yu\x1b\x99&.\xc4\xc7\xc6\xaf\x9bp\xa7\xd0\x19\xb7\xbe\x91\x13\xfdk\x9a\xd5\xba\xee\xcb\x8c}w[\xdb\xbb\xaa\x8a\xa1Y;\xddC\x18\x9b]B\x98\xa261$\xe5ow\x18V\xa9\xa3\x1aoe\xd5\x8f6\xc2.\xc8\xb2\xd5a\xca\xa2j.%\x9d\x8b\xdfG6\x9c\xf3,K~\xaf\xa8\xb2 `9\x93\xd6\xd2O\xa7\xf9\xb1+$\x9fye\xb1\xde\xd8\x96\xee\x9bir\xac|)O\xb2\xb7\x02\xed\x13\xe3z\xf4Ub\xf3\x13\xb0\xdfW\xdd LU_\xf2}\x88W\x8d\xf4I#2\xa1*J\xc4\x81>Z\xc6\xaa\x9e$*\x9c\xe9xQr\x86\x02]\x850$\x96\x93\xa9\xef1Ij\xcb\xf7\xc3D\xec\x0b'F#\xb1\xa0'\xa3\xa5\xb0\x98*N8\xab8\xe1B\x84\x12\x7f\x04 |\x05\xc5#H('\x9cQ\xf8\x92W@wb\x05\x82GcpN\xa7\x13\x17\xa6\xf4\xba\xaf\x00&SY\xae\x0c\x8d\xe5\x85\x11C\x9a\x19\xc3\x08\xcfE\xd7\x036\xd7\x7f\xe8\xfe\x92\x13\x8d\x9f\xe0\xdb\xdeX];[c\x85\x17\xb0\x9c\x14\xa9.U\x07\xc8S{\xca \x9dE\xdbI\x99\xb4\xa3\xca_\x0f\x19g=\xae\xf1\xa64\xdc\xcc\xce0\xcce\xc6b\x86\xb2|7\xda\xb8\xa1\xedX\x9e\x98+\xc5\x9b\xd7#q\x86\x0c\x85.\xd9\xb6)\x87\x94\x9f\xe7\xe1Y<\xa4\xa9\xfeY\xe9'\xc3z\x99`\"\x98-g\xc59\x98\x93\x0c\xc9\xa7\xf2Z\xbd\xfb\xd9\xed{\xa1\xeb\xd8\xf6\x9ef\xb1\x055\xc1\x1a\xb7\xd4\xb9\x8cv\xb6\xdaYyJ\xcc\x1aP\\$O\xf8\x01\x7f\x93$\x11i\xa5{\xc3Yx\xf3\xa4\xccL\xb5\"\xd8\x83{?\xde[\xbfw\xa6\"\x86gZ\xbfi\xdb\xb2`\x1d\xd0\"\x13MG\xed\xc8\x05\xeb\x8b/\xefYf\x94>W\xca>Q\xd0C\xeb\xf0\xfc\x1c\xf4\xcfY\x12\x17\xe4\xb2`1<\xf9\x9b2\xa6\x7fo\x1a{Hu\xe7Ul\x0b\xc1\x9e\xba\x18_\xd0\x9e\xd8m\x0b\xd33_\x99\x84\x19\x0f\xb1\x81\xac\xaf\x9bg\x1aHaI\x94\xf3\xcdH\xce\xf0\x98\x98\xf1{r\xf5&#\xf3\xf0R\x9a3_\x94\xb8\xb3(\xd9J\x8b\xb2\xe8_\x146\x9c\xee\xb2\xf8XZ\x8d\xad[\xa14\xaci.\xafi\xb7\x98\x02_\xc9\xd66o\xadms\x03\x9a\xc4WD\xa9\xfbs\nq\x19\xaeo\xe8\x15\x0b\xbfx\xcb\xd4\xac\x02\xd8)\x05\xcf\x13\x9e\x02\xcb\xe1\x98xa\xfe\xbd\x1f\x85\xc1ADh\x0d\xda\x0e}\x1f1\xc6 Jb\xf2$\x0e\xde2x\xfe3\xb9\xa2\x1d\xf8\xb0\x0e\xf6ZD\xe7\xcf\xe2\x9e MF\xff\xa2T\x01{\xbf\x0f\x96\x05\x13\x98\xd9\xf8\xa7\x03\xeb`\xdd\xb3\x1c\x0cU\xe8\xb8\"\xf0n\xe4\x98\xc1\xe5\xdc\xee\x0f\xcf\x04{`Y\xcd\x85\x113dq\xb9h\x8d\x19e\xc0\xd9\x10\xba\x1c\x03\xdd\xab\x802\xd2\x88\n\x02\xbb\xc0([\xd8a\xb3\xb2O\x87\xb3p\xa1\xa4\\\x92\x97\x91\x88\xf89\xb1K\xf3\x1c\x96=We\xe3\xce\xaf\xef\xf4\xb9\x14P7 \"\x95\x81I\xcd\xd88\x1a(\xaco\x9d\x8e\xc6\xcb\xce\x01\xa1\x9b\xe2\x07\x01]\x830>;J\xec\xb9\x98\xe8\x8d\x06R\x1dd\xa9W\xf9,K\xaf\xefp\xcc\x81\x0by\x8b\xae9\xeb\xc8>\xe7Iv\xe0\xcf\x16\x93^b\x06\x84-7\xb3\xb5\x96\xa2\xac+\xec\xc5\xabk\xb4 I*\xb7f\x84\xa3\x94\x85\x84\x9aWp\xd4\x8e\xc3\xdc\xc4\x0cK?\xfdH\x03\x9e*\xa8`\xfe\x15\x9e\xbf\xcc\x15\xbb\xc0\x9c\x8f\x8diJ\x96~\xfa<.\x92\x1f\xc2b\xf1g\xb1\xdb\x98?5\xf6\xa3 \x9c7+\xe3\x8e\x0e\xd0\x00\xf2\xd1\xe0\xb2-\xd9h\x8ckU$\x88\x12\xfb$y\x82\x95\xe8[\x80B,\x80\x1a\xa5vRg\xd5\xf0\xa9\xa6\xa2\xce\xf0\xed-\xa9\xa8\xd1f\x9b.\xc2\xc0\x7f\xb1\xfd\xc0\xe9\xb34\x16)U<\x91R\x85B+g\xa3\x86H<\x9b\xdf\xa5I\xda\xa3\x83b\xa7\x17\xfdjY(\x16Epr\xdd\x06\xc4\xe4\x02\xbf\xef$gP\xd0\x8a\xe6Y7R\x85\xd1&1)\x8fm\x8dw0\xc7\x85\x84\xdb*\x1fN\xc5\xfaPv\x92\x16\xa5I\x12\x1d\x86?\xd7n\x9d\xcd5\xa1\x97\x9b9\x9d\x04\xa5 \x92.\x01\xdb\x1d\xb7\x8c\xdf\x06\x9c\x15\x90\xc5`\xc6m\x89\x1bc\xe61%\xe3\x1a{\x01g\xf0}\xfa\xb6\x9a/K\xc7T\xfd\xb9\x07#L\xc6$\xb0\x18\xec\xd1\xbbS\x91\x9bIAZ\xc6\xa4I\x83O\xda\x0bB\x9f\x0e=?p\x0dn\x02\xe4 \xad\xddJ\x80\x0e*`\x8fyl~\xd5r\x80\x12\xe6A\x05\xf7\x9dT\x15\xa0^\xceb\x91\x91\xce\x82\x0e\xb90\xe0\x96\xab\x95\xdd\xc9je\xae\xf0\xcb\xeb\\1\xe2\x19\xbe`\xcax\x1e\x8a5\xeb\xf2\x81\xdd%3\x98\x91\xdcf\xd5\x92;Y\xb5\xa4Z5FM\xa8\x9d\xc0VZ\xb8NB\x88n\x0b\x9a{\x8d\x99k|\xac{m\x9b\xa5Z\x1e\xef\xdeW\xc5\xa2\x8b\xed\x9d\xadv\"]\xbf\xbe\x10c{g\xbb\x13^\xaed\xe5\x0f\x1d\x17,\xaf\x9d\xc6\x95N\xc8\x9aX\x9ax\xc5\n\xc4#\x08-\x0c \xd2\xcdx\x80\xef\x05cB8\x8b\xe4{$\x9f\xf9)\xb1 c\x92&\x18Z\x9e\xe5Q\xb0\xb7v\xdb\xd22\xb8\x990\xae\xa2\x06y\xdc\xccj\"\x84\xc7w\x9a\xb90\xd7\x11H\xa9\x8bq\xf2\x84\xb9F\x1761_I#05\x86\x91\xfd\x12\xacSz\xa2\xfcX\xbc\x12YP\x90|sk\x07F\xbcd,\x16\xab\xd9\xc27X\xd7\x8a\xcb\xe5)\xc9\xe47\xf5\xaa\xf2.\n\xef\x8b/\xf8\xc8\xd0\x15\xb2\"wg\x94{)\\\xca\x83\xb2\x00\xcd\xfbP\xc2: \x05\xb2\x89L\xb0\xe3\xc2HM\x13/0\xc6\xa5\xf2\xc8\x9c#\xb3)59\x81\x18\xd6A\xa1y\xa1\xab\xd2\xe4\xcf\x0b\x8d\x06\xa1\x92j/\x99\xc4zII\x8c*\xbc\xf6r}\xdd\x81\x05\xac\xef\x01\xb1S\xba\x0f\xd3\xe5\xb1\x0b\xe78\x97\xd4\x85\xa5\xc3w\xaf;\x02Ml[\x90\xd8\xa2P\x99\x8d\x10\xf8\xf0\xcf\xfaP\xd8\x95\x8b\xd1\x04\xcf8m\xd7\x13Z\xe6\x0c\xc1\xa0\xf0H\\d!\xe91s\xa9\x16\xe5\x84-\xca\x9a}\x05{p\xea\xc5\xe4\xb2\xb0\x1d\xc7\x0b\x12L\x1d&-\xcc\x15K;#\xad\xcd\xc9\xfa\xba~u\xc4CW\xa9\x7f$\xda\x01\xe8\x17H<t\x12\x17\xf5\xf8\xf4#\x11\x0f\xe6B\xb1\xa5\x99]`~\x88sL\xeb\xc4\xd1\xc5\x05\xc6lY\x87\\\xccuS\xcc\xb4\xc7\x04JYz\xcd`\x05\x0fr\xe3\x88\xf5\x01\xc0\x01\x1e\x07\xf5Q\x11\x0f\xe5\xf59B3AHf[[#\xcb\xadS\xb00\xf9\xf71\x1b\xc9%\xec\x8b\xd3\x0f\x17a\xb1\x80\xf7\xe4*\x87_,X\x171Q\xe9\x0b\xbbpx@q\x17P\xd4d][0\x81K\x17\x0enf\x1b\x015\x0e]4\n0|\x97e\xddH\xa7a\xbe\x00\x95\xd6\x91<\xb7\xe5\x97_\xf2_U\xc2\xe5\xeeEi\xfd\xd3?\x89BK}K\xeb\xb9$\xc1\xe3\xe1Ue\xb3\\\xd5\xd3\x0c\x93>\x91i\xd2\x8e\xe1\xae\xcdSU(\x92P\xdd\xc1\xca4\xc7\xca\x0e\xc2P\x0e_\x0d\xc6\xd6\x9e5\x01koS\x03\xc1\xd6\x04\x8b\xc7V\x17J\xb4\xf2\x02\xeb\x0b\n\x93\x1d5\xc0\xbd\xe9\xde\xe4\xf8\xdeY\x1fc.5TL\xc9q\xb7_#GY\xc6w\xb3(\x9b8m\xdd\xa2\xec\x8di\xf1d\x95Ea\xcba[\x1e;\xccd\xba\x89\x1az\xbaV\xeco\xd4D\x13//O\x19\x15`\x8f\xd1\x97Pz1r\x1ci5\xed\xbd\xcd\x0f{c\xe7\xee\x17\xb4\x86W\xf5\xd9\xb9\x13\xfd\xd7\xfd]\x87\xc7\xe8\xfc\xc6\x9f\x15Iv\xd5=\xc5\n)\xc0\x84\xa2H\xbfM\xa5b\xd1\xe9i\xc6JOO3e\x85 \xc8H\x9e\xb3:\xec\xb7\xb2ZFx/\x19Qw\x94\x15\xe1,\"\xbc\x0e\xfeVV\xcb\xc3\x80W\xa2\xbf\x94U\xca LX\x15\xfaKU\xe5\x14\x8bO\x95E~\xce\xda\xa7?\x94\x15\x82\x90\x95\x07\xa1\xba8\xe1\xc5\xea\x9e\xc33V\x1c\x9e)\x8b\xa3d\xf6\xfe\xefeR\xf01T\x7f*+'\xc1\x15\xab\x96\x04W\xca\nl\xeb\xd4\x1bwZ\x16E\x12\xb3\n\xf8SUi\xe6\xc7\xe7>\xdb\\\xf6S])\xa5\xe0\xcak\xe1oe\xb5\x90\xcf\x8a\xfePVH\xf8\xd6\xd2\x1f\xea\n\x11/\x8f4\xc5gYR\xa6\xa2\x0e\xfe\xa1\xaa\x18\xf8\x05\x03F\xfaCW!\n\xf3\xa2\xaaD\xffPV\x0cX\x95@YH\xd8p\x03\xa2\x1cn@\n?\x8cr^\x05\x7f+\xab\xcd\xd9\xca\x06s\xe5\xaa\x06\xa1\x1f%\x0c\xa6\xd8Ou\xa5s^\xe3\\Y\xcc\xc7\xa9\x1e&_\x05\xe5\xfc\xc9\x12\x0b\xc9R]xJ\x02^~J\x94K4\x0fI\x14`\xd2\xe7\xcc\xb6\xc4\x1f\xea\x8ag2\x98\xd5\x7fj*\x97\x19\x11\x15\xcbL L\xf3$\xc1\\\xb5\xff\x1f{o\xda\x1d7\x92$\x08\xbe\xdd\x8f\xf5+\x9c\xf1\xaa% \x03\x0c1H\x89\x94B\xa2\xd8J%\xb3[\xdd\x99\x92FRVMw0\x8a Fx0PB\x00Q8xdQ\xef\xf5\xcc\xec\xdc\xf7\xee\\=\xf7\xd9\xb3;\xf7\xb1\xc7\xec\xce\xf4\xf4\x87\xce\xfc#\xf3\x07\xf6/\xecs3w\xc0\x017\x07\x10$\x95U\xbbo\xf1\x81D\xf8\x05wssss3s3Q\x08^\xe9B\xc9R\x16I\xc81.\x86\x90\xbd\x18\x92\x99\xdb\x98\xb9Mf\xee`\xe6\x0e\x99y\x1f3\xef\x93\x99\x0f0\xf3\x01\x99\xb9\x8b\x99\xbbd&\xf7qB\xc4\x8b\xad\x80\x04\n\xbe\x92\x85\xcaU\xb6\xb0\xae\xb1\x85l\x85n![\"\xca\x89\x17\xaa\x00\x92X\x92\xc0\x06\xf3\xc4_\xe2\xe4\xe2+Yh\x89K\"X\x92\xeb!\x88V9\xe2\x1c\xbc\xd1ERY\x80\\\x95\xefO\x10\x90\xefOH8\xbe\xe7\x97\xa7\x1cQ\x15_\xa9B\xa1\x7f\")\x04\xbc\x91E\xf8)\x8f\xf0K\xf8J\x16Bh\x85$\xb8\xc2 z/\xb3\xa3\xf7T\x81\xa5\x1f`G\xc5\x0b]`%\xf3\xc9\x89^\xfa\xc9{\x99\x9f\xd0\x1f\xe0Q\x8e\x05x\x94\xdb\n\x04\x99$%\xea\x07]P\xd2m\xf1b) \xb1\x17\xde\xa8\"\x91\x8f\xa40\xf2IR\x18\xc5\x18M\x19\xcb\xc8\x1fTA<0B1y\xac\xa5\n\xe1\xf4\xd2\xdbU\xbc\xca\xca\x85\xa4~X\n*\xba\x17[i^\x9cg\n\xa7\xf1\x95*\x84\xdf\"?\xb2\xf2\x13\x1fg\x00\xde\xc8\"\xc14StU\xbe\x93\xc5T\x11[v|Zp\x8c\xea\x07U\xf0gP\xe2gTV\x82\x03I\xc8\x91$\x08\x85\x84\x84@\x92\x9f \xcf$^\xa8\x02\xd8/\xb2C\xa9\xbf\xc4\xef\x8a\x17\xb2@\x89:v\xc4I\xf9\xb4\x98N\xf9N\x17\x0b\x15~\xe1+Yh\xe9\x87\x88b\xf0F\x16\x89\xf3d\x8a\x13\x82\xafd\xa1\x95/;\xb4\xf2\xe9\xdedI\x1c!I\xc5W\xba\xd0\xa5d\xe0\xe1\x8d,\x92#\xeb\x9d\xe6$\xf3\x9d\xe6\xcb\xa5\x9f\\\xca\"\xf0N\x17\x93\xf3@\xaf\x97\xcc?\x91\xfd\xc80R,Q\xa4\xe0\x9d3\x1b\xf3\x9c!\xd9\xcdH\x92\x9b\xf1\x8b\xac8\xd2\xa8\x1fdA\xc1[`)\xf1F\x16Y`\xfe\x82\xceT[vf\xdb\xb3\xb3@n\x87\xe2\x85.\x90)x\x887\xb2\x08R\xcd\x8c$\x99Y\xe2O\xdf\xcb|\x7fJ\xd2x$\xf0$u\xcf\x11As\x12;\xcf|\xfc\xf0\x99O~\xf9,\x98q<N\xc1\x1bU\xe4\\\x1er\xce\xe9S\xce4H\xd4\xa9\x12_\xc9Ba\xb0z\xed\xcbyP?\xa8\x823>W\xfc\xfa\x9c$\x11<\x0c\x83\x95<@\xcaw\xaa\x18\xae$\x9a5Y\xfa\xa7\x92\xbb\x11oT\x910\x88\xb0\x84x\xb1\x15\xf0\x93_K\xfcY\xc0\xa3\xac(Z&Q\x95\x96~\xaa\xf6\xf1\x94\x9c\xe3\x95\x82\xd0\xca\x02\x9d\x95\x9fe<\x89T\x19\xf1N\x16\x8b\xc3\xcbSI\x00\xe5\xbb\xadX1R\xf5\x83*(\xc6\xe4\x87\x95\xd1V\x93\xc8J\x8a\xb8&6\xd2\x9a\xc5\x92\xc8d1M\xec\xcf$=<#\xe7Q\x10\x85\x82:\x90\x05\n\xa2\x9b!\xd5\xad\x94\xb0\xc8\x88P\x05{\x0b2\xa2\xaa]f\xb5w2\x1a\xfb\xae\x1e|\xac\xd2 eMv\xc3~\x18\xc6\xd7\xf8\xe1\xba\xe95j`)\xfdk\xe4\x0c\xeb\xe1\xb5r\xd9\xf7zq\xb4\xa8\x7fp\xff\xbeeL\x8df\x1f\xcal\xe3&\xf2s&\x8doi\x19\xba\xfa\xcaT\x94x\xf2\xc4\x8f\xe2\xe8r\x19\xe7\xe9\xd3\xa7\x84\xa8tn\x95\xaf\xfah\x99v\xe6\xf4\xe0\x8dB;\x06\x82#\xc1\x98\x9e9\x85\x12\xd5RN\x0c\x17\xca\x15\xe3\xb6\x14Dm*\x14\x95\x8aUKA\xc55\x9f5q\xcd\x0c\x19\x8e@0\x1cg\x8eR\xde\xda\n\x02\xd0\xb1 \xbc\xda\n\xfa\xd1\xe5\x88-\x9cD7\xb3{ \xdab;(_\xcd\xdb\xe4\xdd\xeaQ\x9a\x9c\xaa\x7f\x1fk|\xcc\xfaS\xd3wh\xb7\x9a\\\xdd\x94b\xe6\xf4\xd4U\x13\xf6u\x8f\xf5!8j\xefk\x16\xcf\xcbx]\x98\x91`\xc6\xc2OY \x03\x16\x8b\x9a\xef.W\x9cEq\xe6\x83\x8a>\x88\xd2`\xc6\xd5P\x07m~\xb0\xce\xe4\xbd\xc0\xac\xd5\x99#\xdcn\xad;[k\x83\x01\x93\x9f\x00+F\xc7\xef\xee\xf4CBF\x05f\x16\xc3\x8f\xc5\xf0\xeb \x12 \xc5\xb4\x14\xd3\xd2|\xb5\n\x03>cY\xacC\xcdc\xfcb\xc5\xa7\x19\x9f1?B\xe8\x0c\x08g\xb1\xfa\xd3|Q\xbfP8\x87\xa8p\x0e\xd9\x13-\xc8u\xd8\xefw\x05\x0d\xdc\xd6p|\x8f\x85\x05f\x89\x1e\x8fE\xdfC\xf16\xe9y,\xef\x0091AS\xddf\x11.\xe5\x95\x16\x0e7\x18,ey^\x7fl>T\xe8\xa5\xc8q\x93\xea\xe0Q\x80\xdd|%\xae\x89\xe4|\x0d\xc4\xce?>b\xe7\x9d\x11\x9b\xa5At\x1ar\x8c\xbf \xd9\x80\x9ba\xf9M&\xde\x16^Ja\xe8\xf7J\x887\x1cp\xba\xa6\xad\x0e\xdey\x8e\xf1\xeeN\xe4/\xc1\x98\x95\xb8\x9fC=y\xab}\xb1\xedA\x1c\x1cL\xe3\xa8\xb8;qu\xc5\xaa)\xd0\x9bri\xb7c\x9fz\x94\xd1\x99\xd1X\xa7\x16>\x00\x14\x7f)\x90]\xcd\xa4\xa8\x0e%|(\xf1\x8bCw\x0b\x17\x05\xfa\xafk\x12\xb9\xc6\xbbL\xf5\x07\xd0f\xe9\xf0q6q\xeb\x0c\x86>\x01I9\x01\xb1\x05\xd8\x91IY\x80\xa4\xbc\x8cg\xbc\x95\xa3\xb8 \x0cm$\x03\xf9\xca\xef\x95`\xfc\xc2875\xd6V@\xeb\xbbZ;M\xea\xc6\x81UL\xba6*\xf1\xec\xd7_\xcb\xebpd\xf8\xcd\xd61k\\\x17\xf8\xa5h\x1d\xb6\x18\x90?X\xf8\xe9\xab\xf3\xa8\xb8[\x1ev\"\xfd\xac\x99A\x1b\x00\x83\xd6\x8d5c7e\xcf\xd8/\x80t\xc5\xd1\x1a[4q:\xd0<\xe5\x18\x07\xb4\x06\xbb\xbe\x9b-\xdd\x02A\x8a\x95\xa1{X\xe6\x05\x83\x9e\xeb\x17\x8fm\x8f\x18\xd4J\xcc<\x07\x7f\x1e:\x8c\xdb\x97\xa6Xp\xbf\xf1\xf6\xd5\xcb\x01\x9eu\x83\xf9\xa55\\\x80z\xd6\\i`\x1f\xaao~\x1d\x96Z\x1c\xc1\x8eY,\xcf\xa6\xfd\xf2\x1a\xe8\xf2\xee\xb2\xdd\x9cL=\xb7\x862\x157\x1f[\x8fYV\x99\xe9\xac\xfd(\xa6dAb\xef\xec@\x1f\xa9\x9d!*:\x1e8\x1bC\x8f\x15\xb3\xa7\x9c\x87T\xe6\xa6\x80\xd5\x80\x1d\xd6\x8f\xa5\xb0},\xf8\xf4}\x01\xc6\xd4c'y\xc6\x12>\xe5\xc1\x19\x9f\xb1_I\x99\x9f\xb1 \x9a\xf1\x0b\xf6+\xe9\xa0\xe7\xb1\x13\xf4\xed\x05\xf7\xa4k`\xb3\xcf\xee\xf7\xb2\x04\xa5o\xd1r:\xfc\xf6\xe9`\xda\n\xe2\x9d\xbc\x8f\xeaWX\xd3jo\x05\x81v;QG\xd6\x99\xc6vY\x9f\x96\xa5x{\xeb-]t0\xddT\xcf\x0d\xa7\xf4\xff;\xac\xc6\xd7\xf8\xc5\xaf\xd7\xe44:\x1d\xe0\nfa\x1cv\xc4\xd9i\x97f\x99lz\x0en n\x85\x0f\x99\x17\xa0\x9e\xb7\xd6i^\x12\xdd\x16\xcc\xed1%\xfc\x02BK~oX\x9fv\xc6\xfa\x10\xb0\xbe\xee`\xae\xfe\x18X\x1f\xde\x00\xeb\xc3[\xc7z\x85\xc2>:\x93\x04\xfe\xa9\x8dk)V\xca\\\xac\x94N(-J\xaf`\xa5\xcc;\xae\x94\x8d\xd5zpz\xcf\xe5\x99l\xdeL\x8e\x8f\xa2O\xfdY\xa1\xc2\x10\x195\x9e\x0da\x80\xd7\xf9{L^\x139\x8a@\xd3\x06\xb7J\xc8Z\xfa%\x13\xe5\xa7K\xd6\xef\xb0L\xcf\xe4\xa5\xb2\x95\x93zln\xae\xf6y\xb7\xd5.\xe0\xb6(\xc0\xb6\xf8\x05\xadc#\xf5\x83vE\x92\x99>\x87(\xfcQR+y\xfd\xef\xa0pR\x7fu\xc5\x86\xec\x1ed\xc0K\xc6F\x8c\xc3\x85I\xb8\xed\x07\x0cZ\xa5\xb5\x0f\x96o\xcfhJ\x02\x17g\x97<M\xfdS\xae\xf9\x18J3\x7f\xfa\x1e\xee2uj|A7^\xe4\xa37O`V|\x8f\xa5@\xe1\xc9\xfb\x95\xe2\x81\xd86>J\"\x81\xe8\x84\xe2=\xf0\xd8\x1c`\x92\xa37\x1ep\xb1\x13#+\xfa\xdc\x0f\xc3 :-D\x0e)\x83\x95\x03\x8e\xb9\xd9,H\xf84\x0b/Y\x90\xb2(F65N\x04\xd18\xb9\x84\xc0*_\xaf\x92x\xb5)\x88N\xfa5[\xf9\xd3\xf7\xfe)\x1f\xb0\xafR\xce\xbe.\x1a\x1c\x00\xc3Z\xfct\xdc\xaf\xc5:\x9b\xfaa(\x9aX\x0e\xd8\x1b\xee\xcf\xd82N\xb8\xe0\\\x17Y\xb6\x1a\xdd\xbb7?\x19,\xf9\xbd<\xe5\x9bP{\xb3\xfc\x8eu\x91hx(f<\x19\x07\x13v\x007+\x8b\xcb\xa1*\x0d\x89\xc4\xbb\x05/\xcf:\x15\xa2\x19\xa4`\xe5(\x18\xef\x94%\xfcgy\x90\x80TQ?O!\xdf\x1dd\xa9<j\x05)\xfbZ|H\xd0Q\x19k\xf4\xa3|\xa3\xb8\x1c\xab>$\x067b\xdc\xa9\xe0H\xdb\xa5k\xa6+\xe61\xbc3\x92\xa1\x0d*<eq\xec\n\xd27\xaa\xa7\xf5z[\xa63\x17\x0b\xc6\x9f\xd1\x18\xdf\xb2!{vO\xa3J\xd7bW\xe1\xc8\xb6O\x9d\xdc-\"Xt\xda**[\xea\xa5\xa8\xdeuW\x15\xa9\\\xb1\xf5r\x9e\xccI\xa9_\x19\xa2!\xb6\xa4\x9d\xb3\xa7\xe7\x01zn/\xae\xca\xd1\xf0\x99\xfa)/n@\x8f\x1a\x8aH\xcd{S\x91\xf2n6]\x8a\x95\xd0\xde\xd8\xa2'\x03\x1bR\xa6\x08\xed\xcd\x10\xd7\xc4Y\xd1\x8cd\x97\xec\xad\x90w\xa7U\xdb\xd9\x80\x9f\xf1\xe4\xd2Y\xb6\\7\xae^/\xe7z\x13\xb6Q2m\x85u\xe3H\x99qk2\xc2[\x93\x91\xbc5\x19\xb6iW\xd6\xbaEY\x7f>\xb4^\xba\xd6B\x1co\x10\xd7\xdd\xd5#\xc6\x10c,\x91\xa4\xdbm\xee\xa4v\x9b\xbb\x8b\x10\xe11\xdb\x80\x10\x91A\xed\x16ucMV\xeaBb\xbcB\xadM\xe4\xd0\x0e\x9a5nvS}\xea\xc8\xf5\x82\x17\x9f\xae7\xbbAx-\xf0cc\xe9\xf8\xe3\xe1\xa4\xd3@X\x17\xd9\x8e\x0d\xa3\xa5[\xd8\xf6\x05k~\xbf\xeeu\x96&s\xa7\xcdWL\x95\x9e\xc5\xba?\xd5\xe5\x85\xec\x80I\xbb(\xe0\xfc4\xf1\xfa\x1b~zx\xb1*\xef\x81\xf7XGG@\xf2K\xca\xf4\x08\xaf\x9c\x82;\x89\xb7ZJ6\xee\xfd\xea\xaf*\xd7\x1b\xef\xfc\xd3\x1e,\xe0\x16k\xb2L\xef &\x9bpD\xa7W\xa2\xe3\xaa\x07\xf58r6\xe0^\xda\xddwiN\x98a,\x05\xb5+UZx\x07\xd9\x84\xbc\x9a\x9bSR~m8\x01ht\xb0T\x99\xa1\xcf\xfcL\xfb\xfa\xcc\xcfx\x8f\xc6J\xa3&\xcemY7\xe1\xa7\xfcbE\\1\xb6\xa1Q7x\x9e4#+-\xd0/v\xec\xe6\xad\x1a\x91\xb6i\x1bn\xdd\xf6\xd4\xe8\xfd\x088\x9b\xc6=\xb4y+\xc620\x03M\x05$\x98;\xf4\xa8\xa9C]iL\x9b\xd3\xb7\xea/YIs>\xc9\xf6Q\xc5V\xa6xl^;\xa9\xb0}\xc1J\xcf\x07z\xc2\xdc\xd3\xa4b7\xf0C\xd0\xe4x\xa7P\xe9\xdfR\xfb\xbd\xe1\x83\xc1\xee@z\x1e\xb8Vkg\xa5\x8f\xe9\xdd\xfb\xee\xa0\x88\x98@Y\xf3\xb6\x19\x1b\x07\xb2\x9d\x07\xa4}\xef\x83\xfb{\x16\x83]\xdfQ\x92\xb9\xdb\x18\x87aG\x8c\x9d\x1fn\xd3n\xa3\xeb&\xca\xa2\xb3\xbdep\x11Di\xc7I\xad/xuf\x19\x13\xd2\xc3\xd4j\xef\x8b\x9f\x1c\xb1\xdeg\x87\x9f\xbfxyx\xfc\xe5\xb3\x97\xbfe\xf1\xad\x90f~\x16L\xbb\x95])\x0c\xefTZ\xfaS]\xa3\xc2\"\x08g\xcf\xd7\xadu\xca\xb3\xcf\x90\x1a@\x84\x9dj\x9d\xe3/\x0f\xdf\xfc\xda\xe1g\xf6\xaa/\xa2 \x0b\xfc\x10\"\x17\xadY\xf5\xb9\xd6\xddu\xaa&<\x82\xbb\xb4\xaa\xc6\xab\x97\xcf\x0f\xad \x94+\xe8\xc7A\x18~\x89\x8eK;\x80\xa4\xa8\xf6Y0\xbbF-\xf1\xb17\xa8($@j\xc3\xa3E\x9c\x0bp\xc86\xbeZ\xcd*\x10\xed:\xc8z\xbd.\xfd\xfd,\x98]\xa7\x1a|.Zv\x86\xcfW/\xdf>\xfb\xfc\xf0\xf8\x9asB\xd5^\x1b\xc8T#k\x0c=\x87\xa2\xc5\x1c\x8dX\xef\xd5\x8f\x0e\xdf\xbcy\xf1\xd9\xe1\xf1\xa7\xcf\xde\x1e\x12\xbc\x8f\xd9Nh%:\xb0\x10\x93\xe0\x8c\xcf`5}\x9e\xc4\xcb\x86\x15\xd9\xe5[S\xeb\xb7fA\xba\n\xfd\xcb\x97p\xe3\xbb\x13G\xce\x80\xf0j\xf5X]\xac\xab\x1e\x8b\xd6H\xd1\xd4\xce_\x13\x1cgK(\xb9B\xed\x11\xa1\x9a;\xaa\xb8a\x8b\xfa}W\n\xb4\xc7\xd1d-\x15\x17AJ;\xf7\x9b\x0f\x8c\xda\xe2\x88.C\xa6\x19y\xa4\xabP\xd6\xd0\xb5k\xf7\xca\xd2\xa1\x1b\xf4\xc5\xd8;\xd6\xe8N\xad.8\x13\xaa\xa7\xed\xb3\x85c\xa4B\xcb#\xb2\xf4Z\x08\xa9\xed\xc6kt{\xa5q\xa9\n\x84E\xda\xba\xf0+\x98\x87\xce\x1d\xd8\xe8^\x94u[C\xac\xba\x8e\x82\xa8\xbdU\xf5(>\xaf\xdd\xa6_=\xd0\x9f\xba)`\xd4\xd9\x14\x90)\xb1\x97\xe0\x16A\xd3\xd9\xed\xb3\xe2 \x9c\x8d\xd8cw\xc1\x88\xf6y\xe8\xa7\xe9\x88\xfdV\x9c3\x1f\xf4!\x19_\xae\xb2 :eY,C\xcf0\x9f%<\xe5\xc9\x19\x9f\x01\xa6\x88\x9ez\xec\xeb_I\xbf\xf60\x16>n\xd8\xd1\xd1\xdd\x8c\x9dp\x06\x11\xf2A\xb4\x0b3\xdac\xef\xf9\xe5\x80}\x86M\x05\x19\xf3S\xe6G\xa5\xc1\xb4j\x11R\xb8?{,\xca\x9c\x07a\xc8\xd2L\xfc=\xe1\xcc\x9fNy\x9a\x06'a\xd1\xb8n.~\x97vRo{\x94\xd8\x0b\x80\xd6A\xea\xa5\x1e\x90~\xad3;L\xe3\xb9Cs\xa2\xd9\x01\x0b\xc7\xd1D\xca\xe9\xbb\xf7\x83\x95\xa7\xcb\xc0\xa1\xb6C\x10{\xe4\x1e\xebu\x9e_1\x95\x02\xb2\x97q\x9eh\xb6\xc2\xa0 \xcb\x16~\xc4\xe2h\xca\x07\xec\xdd\"H\x05\xe4\xe7a0\xcd\xd8\xd2\xbf\x14s3\xcb\xb9h\xc9\xc7Mm\xd0C\x07\xc8gq0s8\xc6\x95_\xc0\x8b\xc7\xa8\x80S\xb6\xa7Y\xff\xab?\xf2#\xb4\xc7\xe5\xfa\xd3\xde\xac\xbd\xc4\x07\xa42\xeb\xd04?\xcf\xe2\x93 \x9aU-\xee\xd7PA\xd3\x81u\x98f#\x98\xd6\x11+\x13\x88\x95\x8e3;b\x9d\x10U\xee\xdc\x11\xc8Te\xe1\xd0Ml\x05\x8f \x12\xc2\xdc\x9fr\x1bB\xc5g<I\x82\x99D\xa9y\x12/%R\x89\xda,]\xf1i0\x0f\xa6``>`\x87Q\x9a#\x86eXj\xc9\xb3E<c\x91\xbf\xe4)\x9b\xc5\xa0\x00\x16-\x86\xfe\n\xddfBOd1\xb04\x84\x18\xb4\xb2\xf7:\xd3*]\xdc^]\x91\x0c\xe3uF\xf6Q\x96J\xd6M\x19\x07\x8c\x9b=X\x86U\xc2i\xb1\x0d5I\xc3]c\xb8y*\xc8~9@\x9c\xc08);%\xc8\xb8\x1c {\x81\xa4\xdbc?\xcd\xd3L\xd6M\xf8i\x1e\x8a\x0dJ\x99\xd2{b\xdf\xc9\xc04t\xfd\xef\xaf\xfd5\x9a\xa0\x9e\x15\x91\x91J)\x9cu\xc5\xc7\xa0N:>NDg\x9f\xe5Y\xfci\x10\xcd^\xfbAb\x89TY\x8dR\x19\xd5\x97\x99\x0f\xcbl:@\xee\x1f\xa6T\xbe\xbb\xa4\xbfw\xf5\xc0\x1c\xd7\x1bC\xbb\x8a\x1cC\"\xb6\xedJg\xf2^h4\xce;X\x8e\xad`\xd8\xc6\xf7\xda\xf5\x80sg\x85!w\xa6fm\x97M\xc7\xf9D\x0c:li\xa9\xc1\xef\xb3\xfe\x881\xcd(\x02\xd8\xd6S\xd6d7\x0d\xc6+\xe0\xac{\x05\xb7\xdc\x86H*\x06\x8a\x92w\xdb\xc1\xc0P\xbfmR\xf4\xe7L\xba\xcfN[\x03\x96\xeaO\xe0\x80\x13q;\x13\xb0\xac\x13@\x99\\_\x81_E\x85\x11\x81 \xd1l\x15\x87\xc1\xf4\x92\xfdJ\n(\xfd\x9e\xc3\xeb\xf9\x82G\xb8\x02O\x81\xdd,\x96\xa6\xa8\x02\xc4x\x89\xb3\xdf\xd0\x9d\x03\x96`\xe4\xd2\x85#^\x042\xb0\x11\xd5C\xf4\xe0\x8be\xcf\x8a\xb2\xdd\xa0/\xddA\xcb\xda\x1d8+(\x1ec\xd0\x93\\|\xc7+*7\xd6m\xe0\x15\xcc-\xbe\x13\xa1\x9fY\xf7\xfb\xea\xb1$p\xa4AY\x83\xaf~\"=\xf3Xo\xc9\x93S\xaeB\x1c\xbd\x8c?\xcbW\xa1\xd8\x90\xf9o\xf2\xcb\xd4qG\xec\xb9\x1f\x89m\x17\x8a\xb1(\x8e6\xb1\x99\x14\x08x\xe62\xe2\xc8\x82Q\xca*:=`\xf8Z\xbf\xf5.\x91\x06-\xf8\xb5\xec<\x96\xf4;\xc5\xed^p\xfa\xa9\xbf\xe4\x18\x06]l\xbd\x9dv\xd6\xc7\x02D+\xf0\xf0*\xf6\x044\x92SE\xa7~\x9eJk\xb2\xf3\xb8.\xb6u\\\xb1\xc5\xd5\x0e\xd3\x8e\xab8\x0e\xc9w\x8b\x15P\xe9\xa7\xd8\x1c\x17\"\xf5=\xbfL\x15\x0b,\x19S\xcb\x0dUeB\xd8 -\x16m\x96\x88:{i\xdd\xf70\xb04F\x83\x15\x10\xf1\xcaH\xb2\x96{\x8e\xe2\x81C\xad\xa5\x96]=\xaaL\xe2\xca{(I{\xe1\xd2\xd6#\xb2\xef\xde\xe0^\x98\xf0\xd5\xcc4\xa5\x9b\x13\xe3\x14\xc0\x0b\x1dV\xa4\xdbz<\xbb1\xe0\xad\x00\xb7\x02\xf5\x9a]]\xb6\x1e\x1524\x9e\xa3\x94\xc4\n\xec\xb5/\xd5[1C\xd1\xa9\x87P\x13\xb4\x82\x86)\x83\xd6\xe3\xe3 \x85J`\xe3\xb7\xb1E\x96&H\xaa\x89\xb4\x97\xed\x1d\xac\x88\xea\xaf\xddG\xda\xde\xa5S\x1fO\xac}\x94\xfe\xc1\xa5\x02\xa9\xb3p\x0b\xfa\x87\xf2\xf8d\xc0\xa3\x9f\xe5<\xe7o\xb4\xa6$\x86\xad}z-\x06\xdc\x11N\xca\x16g\xa3\x0e\xb0\xeb\xc3\xea\xd8\x1e\xd6\x97iF\xa2\xce\xb1\xaeT\xd7y{vB\x90\xb6\x12\xb2M\xe42\xab\xa9T\x93\x06sPV\xa2\x89yXP\x91\xd7\xee\xdc\xe9\xf0e\xf5T.\x11r\xb2]\xcf\"\xeag\xfd}\xb6\xdd\xd6>\xab\xc9,\xdb\x8f\x05L\x9e\x88\xb2q\xc4\xfal\xd8\x81O\x85\xe0\x0b\xfbH\x99\xe2\xeb\xfaA\xf8\x00\xe8\xab\"\xda\xad\xa4t\x9b[C\xe7&|\x0e\x0e\xc4\xbc\xca\xbaP6\xeaQi1\x9fq\x19\xcb\xc7>\x90\xc2\xcaWT\xa9\xb1\n\xec\x80Lv\xdcV\x81^\xe0\x10\xacY\x0evuUs2`\xa6\x7f\x85\xf8\xc4\x88-\xc5\xc9W\xa2\x7fq]]\xf0.\xe2\xd3=\xb1\xb9\xe8\xea)q\n@~_P\xc14\xd0\x14w=\xb7\x06\x91\x9c^\xad-'\xde\x04\x84\xe5\x15c\x97\x88\x9f\xb3cOO\xac\xf8\x10\xc1h\xc8Z&\x85\xe22\xa8_>\x90!O\x9d\x95n\x00\x9e\xb9\xae\xc7VN\xe6\xb1S\xf5\xc2\xd5\xcb%\xec\xb0u\xb5\x08\\EP\xc1\xe6\x0bMI\xbd\x98\xe3\x82\xacB\xef\x1c*\xda=\xd6\xc3\xc0\x07pnr\x06\x83\x81`\x98M\xd1\x16NO\xb0\\\xa15\n\xf3\xd9\xd7\xd8\xc0\xd7\x92\x93\x04f:u\xf5\xf1\xcb@%N-I\x86\x9bj\xe4w\x9a,\x93n`\xd0s\xd6\x12\xd3\x0c\x0co\xca\xe2\x91cs\xe6g\xa7zr\x00F\x0cg\xee\xca\xe0\x96\xc3\xfb;\x10\xdd\xf2v\xc7\xb3\xbdG\xdb\xe2<x\xb0M\xda\xe2<xP/\x0f\xd68*\xd4\xcf\xcb<\x0c'5=y\xae\x17\xf8JY\xb0\xd7K\x81\xe6l\xe0\x8bs\xf1\xc0\x1fh\xe6\x9bl\xc4\xf08Uv?\x1b\xf8]`\x19i\xc1\xd2*V\x96\x18\xee\xcbg#\x06\xeb \x15+\x16\xef\x85\xa1\xddj<\xf0\xc5\xcb\x88\x05\xf0r\xbb\x10\x7f\xf0`H@\x9c\xa0\x83)\x0f\xe7\xd0=\xed\xff\x00\xbb \xe3\x90\xaf2\xc7\x9c,\x01\xcd\xab+\x16\x8b?\x9f\xab\x0e\xf7\xd4BY\x04i\xcf\xd5\x03\x14\"P\x83\xeb\x0f\xd1\xb1O\x88\xe2\xbbm\x07t\xfcC\x0f\xae\xa6\x97\xc2n\x96\xec\xf9\x07\xb7\x88G\x1b9;C\xf7V\x0c\xd4\xe8U!\xaf\x0eZ\xc4\xa5\x01\xd8\x8fW%\x02\xe6J\x89\x0b\xd46\x17\xc9m\xa1\xbf\xe2\x95\x02\x84\x0c\x07YT\xa5\x84x\xd0\xadB]\xc8\x96%\x97\x04\xbb\xc4\xa5\xf8\xa9\xd6\x11\xf5(\xc0\xd5\xce+\x1f\xd8\xd4\x07\x83[n\xa8z\xd4\xf1\xd5\x97]tinV^\x98;P\x1d\x88\xd8\x88\xcdx\xc83\x8e\x8e?\xf4\xe3\xec-,\xce\xfa\x04\x17\xf3\xd0\x1d\xf6\xaa\xe7j\\\xb7\xd9=A;\x1e\xb8\x03_\xdda=\xe5b\x93\xc6\xae\xbe\x9a{\xb2\xfb\xc6\x92\xbeA\xa4\xa3\xfah\xed\xb12\x8b2\xa4\nF\x89x\x9c\xcc\x89\xdc\xba\xa2\xa7\xfav+\xfdl\xda\x10\xd4\x15T\x8a\x16\xddF_*N\xc2\x8cx\xb3g\xe5\xf5\x1c1\x9d\x8fj\x88\x0f[A%\x02ge78\xc0\x7f#K\x99\xf3 \x9a\xc5\xe7\xec@\xbd(\xd2Q\xdc\xba\xe3lT\x97>)\x1b\x00\xb1\xd5\xc5.Ek\xfd\x12*5Z\x0b\xc1X\x1f<t\x1dn!\xbb\xfa\xe8\xbb\xb1A\x01\xba\xd8;\xe7'+\x7f\xfa\xfeu\x1c^\xce\x830\xb4\xc9r\xb2r\xd1\"7J\x8at24\xafJx$\xd9\xca\xe2\xa7\xe0\xa9]\xb5p\x06\x08\xd1R\x17\xec\xb1^\x18\xfb3>\xeby\x96#$\x8f\xf2%O\xd0\x01\xfe\x86%\xd0\xe8)\xef*]Q[\xf3\x80\x96\xb5\x13b\x82\xc6\xbe\x07\xdf{\xbf\x83[\xe9\xb7D\x93\x8e\x9d'\x1b\xcf\xea\x08\xc4\xf6\xd9\xd0Bv\x18uz\xb8\xc1\xfao\xa3E\x80\xb7\x9e\x14A\xe3M\xa3*\xca\x927\x95\xe0&\xf5 >Iyr&\x86.\xce\xdcp\x0bXK\x1a\xc9\xa0\xbc\xe2P\xad\x12{\x10\xd1]+\xb4\x8fvr\x19:\xc7\xd6\n\x92;\xf0\xf7\x02\x91\x8a\x80\xc7\xf0\xcf\x00Bn\xa4\x98[\x8fYP\x11\xf0\x04\xb4\xcb\xa2\xb3\xc2)N@\xc8f\xb6<\x1a\xc4|\xecO\xf0\xe2\xa7xA\x07G\xb6\xbd\x8ai\"\x11\xbd\xc7u\xeb\xab-\x93\xd8\xa6\x16F\x8a\xe6\xbc6:\x08\xca\xaa +\x04\x04E\xc5F\x91\xe9\x99\xe6a\xabY\xf2\x85\x07C\xec\xbamm\xeaO\x06\x1e\xc7\x04;\xfb\xe2\xe5\x8bw\x8d\xc5?\xb4\\Q\xd5No\xb1\xcb\xb2E\x12\x9f\x83P\x05n\x119w\xdf\xf0Y>\xe5 \xeb\xdde}\x96\x81\x1b\x90\x9e\xc4`>c\xc5V\xc9fy\x82*[\x90 \x05\xdfH\xe3\x9b\x17sT\xaf\x81\xd8g\xe5\xa7)j\xe2DZ\"[\x0e\xd2\xb2\x19\x8f]\xc69\xca5\xf8\xc5*\x0c\xa6A\x16^\x16\x0bf\xc1U\xfb\xd8\xe0\x80\xbd\xab'\x81\xfe-\x8a\xc1B\xb0h\x15\xba!\x1a\x9e\xc5\xd1\xdd\x8c\x9d\xfbQ&:\x91\xf2\x8c\xf9\xd2\x01\x81X'\xa0\xbf\x93\xbd\xc2\x8eL\xfd\x08\x0c?\x80\xb9\x91\x86\x83,\x9ek-7\xb9\x96\x11\xd3\x1f -\x10\xad^\xdc{\xfd\xe6\xd5\xa7\x87\xc7_\xbd\xfc\xcd\x97\xaf~\xfc\xf2\xf8\xd9\xf3w/^\xbd<\xee\xb1>\xfb\xd2\xcf\x16\x83\xc4\x8ff\xf1\xd2q+\xa1\xcd\xb5\xe0\x9e{\xee ]\x85A\xe6\xf4z*\x80o\xe3\xe7k\x93\xdb\x15\xbd\x10\xb5\xe8\xed\x86\x01>\xdd\x00K@\xbb\xbfJ\xe2\x13\xf1\x1ed\x0b\xe63\x1c6|v\xc0>\x83 \x12\xcb5\x8b\xd9\xc2\x8ff!z\x99P\x98\xce\xfa\xec.\x8b\x13\x16g\x0b\x9e0\x1f\xd6 \x88\x18z\x08\xe1Ozh\xd6\xb5\xf2\xd1<\x8a_\x82\x8d\xd54\x06/\xa3 X\x96\x06g\x80:\x85yO\x81q\x1a\x9aM\xf3$\x01\xa3\x03\xc0)\x81\x1c~t\xc9\xf2\xe8}\x14\x9fG\xea\xbb\x1e\xcb\xa3\x90\xa7)\x0b\xb2\x1a\x12\x07\x11;_\x04\xd3\x05\xde \xa4>PAZ\x8f%\xfc\xd4Of\xd0X\x8c+\x06\xbf!\xc1\xd2\x0d\xcd\xd1\xa9\x86\xc0\xd9\x13D\xd9\xc1]\x8b&\x86\xd0\xfe95\xd3\xa0\xca\x01\xd3(\x0e\xc2\xf1\x06\xfa\xddEo)\x96\x87\xd83\x0b\x9d\xa4\xd2`<e[b\xaf\xd0\xf8\xeb\xa2\xc8xk\xc2\x0e\xaa?Gb\x0b#\x87\x99\xe9\x8d\x8f)U\x82X\"\xa9Bg\xc2\xdcJ\x13<\xef\xb3\x8d!\xee\x94b\xc7\xd4\x9c\xfc\xe5]\x9c\xfc\x9dI\xd3\xa8|\xec7\xec\x04S0\x9e\n\x1bJ\xcc\xa5\xa35{\x89\x15\xf8K\x9b\x8b\x03\x02M\x1ajd\xa1\xd1\x80\xe8LZ?\xc5Nho\x90\x81V\xaaJ\x10,\x16L\xb4\xfe%\x18\x87\x82'Xy\x00\xe6\x04\xcd\xa2\xc4\xb4\x9bn\xda\xcc\x06\nq\xc6\x01\x0b\xd8\xc8\x8a\x94\x1fhQ\xd4\xb0\"Y\xde\xde\xdb\x86s\xd7\xf6\xde}W\xb3\x95UX\xccb\xf2\x94^(\xbe\xc1Vf V,\xc9\xef\xf5~-8\xe3\x8ax\x00UC7\x18w\x81hF%\xd9w\x05\x95\xeb\xdd\x05}\x8a\xaf*\x80\x0b\xae\xbb^\xb1kB%\x0e% B;`\xefb\x16\x9cF\xe0{H5\xd1\xba\xb9\xae\x12~\x16\xc4y\xaavW\xb9k\xe2~\xa9m\x8e@\x9c\xe3p\xc6\xa2\x18\xb7\xcfr\xb7\xd4\xa5\x01\xe4\x86y\xb7\x9c\x12x[\x8b\xeb5\xa7$\xe9$8i\x90\x9bd\x8e\xb2\x9dP\xdbci#\xd1,Ma\xdd\x848V\xd7%\xa5\x17\x009\x88\xc7f\xbd\xd2g^)\xd3\xad\xf91\xa8/\xbd\xdeI\x10\xcd\x9e\xc1\xd7\x9e\x8bs{\x9c\xa4\x84\xcfi\xb1\x89\xfaE\xc7\xbdb\xae\nw\xab\x88\x9f\xc5w\xd8\x01\xeb\x81\xd2O\x9co\x8a\xfe\xf7\xd9\xdd\x01\xfb,\x98!\x9a$A\xc6Y/X\x8a#&\xab\xf5`\x9e\xc4\xcb\x9e\x8e\x11\xaa\xdc'\xccO\xc9\xc2\x07wk\x00\xa9\\=\xab\x1feb\xf3(\x13u=\xcaD\xe3\xc0BPs\xab/VrFA\xbb\xea\xc4x\xc4I\x9c\x1ct\x87\x16\x1cb\x9a^\xea&KB\xa5\xd60\xd1z\x0e\xa4v\\\x0f\xb6J\xe5\\\xa4\xa2\xf0\xe7\xf2R_\x86ff\xe5vZ\xbf\x7fT_rM\x9e\xb0J\x81f7\xf7W\xbc(h\xdf\xf7\x04G\x92\x83:Z\xb0-\xf6r\xa1\xe5j\xbaz\xec78\xd5s\xca3i;\x93\x0f\xd4{\xf3\xe9N\xf5\xaa\xab\x07O\xf5Hp\xa5\xba\xac\x9bz\x1a\xcc\x1a\xe8-[6\x1c\x82Zz\xe9\xaf\x1a\xd4KD5\xeeLm|\xa5\xa7t\x8d5\x9a\x1a\xbaN99b\xb9\xc2=\xbe\xbc\xe9,R\x02-\xb5|\xccH\xae\x9b\xb0\x15o\xf4\xe6_w\xd4\xa0\xe9\xa1\xfc4\x0dNA\xa4\xd9\x0c\x99\x8axe\x88N\xb8\xeb\xab\xab\xd1\x19\xb7\xa2g\xe5\xc2\xb29\xe3\xae\x1aAD\xae\xa9Q\xa9\xea\xc7P\x9c\x1c\x81\x9c\\\x90%\xa5\xe7\x1f'\xc4\xc5\\+_E\xf1S\xd7\xa2Ov\x99\xe4\xf11O\xbf\x8cgy\xc8\x0d\xb1$0\x17\x15I$J \xa7\xf1\xf2$\x88\xb8<uRR\x1f\x00\x94\xa7\x14\xee\xbbu\xc3\x02\xb1M8\x02\x0fb\x00N2(;\xc1\x0eX\"\x0e\x15\x06D\x94\x07\x97\xba3@\x9d\x06\x9b\x1d\x0b\x94\x1d\xc8/\x01\xe8,\xe0\xd9\xfb\x88\xc01\xb5\xb4b:\x1eT\x14i\xb2n\xbbd\xd7\xd8\xf7\x9b\xb7 \xdb\x9e\x1fQ\x87\xce'\xfblK\xacw\xedhT;u\x1639\xf8\xd2_\x81\x01\x96^\x80\xde\x01\x92\xd6#\xa8b\x98\x07\xe7A\xb6\xf82\xc7\xa8(iI\x90\xad\xd7\xae\xb2k\x08#\xc5|;[\x1e\x08$]'\x12\xdb\x97\x03\xfe\xf3\x1b\x8ev\xa2\xbc?\x90\xbeS\xf9K~\x81;\x9e\xeb\xc4\x80\xbf \x08\xc1S\xd1\x90\xd5\xfc\x8e\"\xd5V\xde\xda\xabh\xb3\xb2\x9b/\x1fiL\x85\xa1\x03>\xc6\xb2\x12\x14\xc9\x80\x8f\xb2\xf8*/\xbd\xbc\x88\xceb4\xdcz\xed'>\x84u\xff\xb2\xf0\xb1\x9b\x15\xac\x84\xf4\xf4@\x124\xf0\x16$\xb6\xae]\x97\xd8\xbbD\xd6\x83]#+(\xb2\xf6\\\xf2X\xeb[\x95\xba\xd2v\xa4\xb2\xfey\xf3\xfa\xb7\x1e\xc0\xb5\x05_\x1bj\xa2\xe6\xd8[\x0bd\xb1^\x8d\x82\xff/1\xe9\x15\xbds\x04\xe5%\xa61P3L\xcdU\xf0}\xcf\x15E\x9c\xed\x8e\x9f\x82\x1a\x89\xa6\x0e\xb5\x1b\x81\xa4\xb9\xa5'\xbb\xb7Y\x9cp6\x8b9zc^\xf8g\x1c%\xf3\xc1L\xc9\x1c\x06\xecK\xff=g\xf2*//#\x8c\x94J\x85\xfa\xe6\x1b\xa4\xday\xf7|\x11\xa7\x1c\xa7&\x05\x99\xb0l7\x1d\x10\xc1k}I'\x0b\x14s\x0d\xed\x13\xba\x0d-\xb6\x84\x17\x19\xaaM\x07A\xaa^\xf5\xb8.\x85\xbbd\x1f$\xd8A\x8aB\x91\xe2\\\x9e\xd5\xa2\xa2\xa8\xc1e18&\x88*\x81\xdf^,\x979\xc4\x83/\xbeZ\xdec\x9a\xc7a\x18\x9f\x07\xd1\xa9rx\x10\x80S\xaa\xbb\xac\xcf\x02T\x1a\xdc\xedy\xacw\x17eL\x83\xbb\xe6\xd8\xe1\xc0%f\xef-\xff\x19(#\xf0\\\xe8\x0e\xe6A\x98\xf1\xa4\xe5\xa8 \xc7\xbba\xdc\xdf\xaa\x1da\xeaZ)Y/\xd7e\xc0\x07\xac\xa7]\x19\x04\x81\x04^\x94,J\x1d\xb0\x9e\xf2\xeb\xd0c\xa3\xe2G\xc0S\x14\x97\xe1\xc0ss\xe0l\x1e\xe7\x118\xa5\xbe\xab&E\x03\x7f\x16\xb3y\x10\x15a\x83\x04\\Q\xf0\xaf\xe4_\x853 \xbcC.\xc5\x1a\x0dp\xd6\xef>\x96\x9dD\xff\x13'\\J\xeaf\x83\xbbuw\xca\xb7\xbf\x1b\xde\x1aE\xf3\xd6\"\x0euo\x9c]tH\xa4d\x13UH\xa0\x1a\x12X\xaed\xa7\x97+)\x0bEQ\xe7\xad\xc8?\xeb\x02(M\xb6y+\x13\xa4W\xacB\xab\xa0\xd0b\xd7\xae\x07\x00/\xe7\xa9:#]>\x199\x8fP\xc4\xfd\xe8\xa1[\xedy\xe4<\xd8\xdb\xead\xe0Y\x1e\xa1\x87\x86\xafC\xe9l\xf0\x91\xeb\xf4\x8a\xd8\xe0\xa4\xad\xf3\xde\x96\xc5\x8a;r\x86\x0f\\\x8d\x8a\xaeq*\xb0\x1d\x084ER6\x8e\xd1c\xad\x16\xbb\x1c\xee\x14@4\x81:\xcdJ\x1c]~\xd7 \xc0\xcdV\x86\xf7~\xe2\xfc\xca\xf6\xd6\xd5Q\xea~\xe2\xfc\xd4?\xf3\xd3i\x12\xac\xb2\xab\x99\x9f\xf9\xee\xbd`i\xc2\xf2\xde\xf8'G\x17\xdb[\x9bG\x17{\x87\x93{\xa7\xf5\"\x01\xb69\xfe\xc9h\xd2wG\xf7N\x97\xe6qk\xdc\x1b\x08Bt\xaf7\xa1\xe1]\x05h\xeaGA\x16|\xc3\xbfJ\xc26a\xd5\x99\xb4\xb5\xf1\xe4\x8e!\xaf\x95\x89cA\x8fRKw\x12\x10j\x05\xfd\x010\xec\xaf\xe6\x0e\x1foM\\\xf6\x94m\x12\xee\x97\x9d\xdc\x95&\xe7N\x04\x12\xc0\xa5\x9fM\x17N\xe0\x8ad4\xd9\x11\x873\x96\x0c2\x9ef\xe8\xb6\xa4\xe7\x9f\xc4y6: \xfd\xe8\xbd\xd86r\xb8\x1d\xae'V\xbe\xb3\xa6\x15e\xb9<\x1e\xd8\xec\xff\x1f\x0e]#\xdci\xc3f\n.\xa2\x07Y\xfcE|\xce\x93\xe7~\xca\x1dpG\x02\xfa\xa3\x03&\x90\x94\x8d\x0c\x1f\x1f\x96\xe5\x15\xaf7\x84]\xca\x9e>r\xb6\x1f\xda\x96\xaf}z\x95\xb0\xdbI\x1c\xeeVG\xb3\xe6\x1a+\xbb\xb7W\x17]|/\xa6\xe4`H\xdelF\xde\x0d$g\xff\xbf1y1\xc7\xf5 \x8e\xba\xd9\x8cw\x03t!d\xb9\x96\xe5\xb8\xbe\xa2)\x84\x13\xeb\xc1r\xa3g\x8f\xf2\xaf\x0b\xcb\xea\x9aCh\x96\xf5\x80\xc5\x03\x19\x94@\x814F\x12\x18 \xd1\x90\xe2y\xa34\x93\xa8\x0e\x96\x91hd\x91\x0d\xa6\x0b?y\x969[\x16%L*\xcb'N\xe4\xb1\xa1\xb2P\x82\x08!\xd9 \x0d\x83)w\x1a\"\xb0\xe4c>\x01\xc5wU\xd8\x7fm\xda\xbb\xfd\xb0\x1d\xc4\xf6cl\x0c;\x9a\x14\xdf\x93\x98T,2\xe9\x02\xea\x80\xc5\x82w\xf7\xd8\x06\x98\x01D\xec\xe9>\x8b\x95Ux\xf1\xa9\xeb\x8e\xe6\xc1^\x9d l\xc1\xbb\x9b\xd0g\x8e\x08\x02\x97\xb4\x92\xf6\xc5b\xe3h[\xbf\xc4Ks\xb65>\xa1\x10\xb97>:\xcag\x0f\xb7\xb66\xc5\xff\xf9|^\xbf\xf4\x96\xa8B[;Xhkgw~t\x94\xcf\xf96\xfc\x9c\xf3m\xf1s{k\x06?\xb7\xb7\xcc&\xe0\xc6\x00|fg:\xc6\xcf\x9c\xd8>\x07\x86~\xe3\x9f\xb4t\n.\xf49\x07#\xbd\xd1\x19\xdf\x85\xe2\xb3\xf9|\xe2\xfe|\xfb\x03y\xc5Oo\xf7d>\x9f@\xc2\xd4\xfe\xa1T~\xa8\x08\xe1sU\x84\x01r\xc5[\xef\xa0V!T\x9f\x99\xf3-\x8e\xff\xe6\x93\x03\x15\xe1\xc9\x91\x9d\xde\xde\xda\x9a\xc9V\xc7\x18\x93)\x9f\xc8\x95~\x85A\xe2\\k\x1b=\xf7\x93\xfaY`\xaa\xf5r\x1c\xa8\xae\x1e\xf4\xf0\x1a<(\x08\xa3z\xfb\xb5~\xcf\xd9\xbe\x0c\x8c\xe0\xc0\xe8\x9c\x83\xfdr\xa40\xe8)F\x8a\xec\x9d\xf6\xae\xbb&\xb8\xe4*\xe7p_t<\xb9\xee2\xde~hc\x08m\xcb\x98\xf2%/G\xdb\x1b\xdf\xfdo\xbf\xf3\xbb\x93\xde\x8dF\xd6\xbc\x9d\xa8\xdd\xdd \x1c\xb1o\x14,\xbe\x0f,\xbe\x0b\xce\x1ez\xbd\x1b\xdd9\xd2h\x9c\x058\x06\x0b\n\x87\x9e\xf1\xd1\xc5T\x1c\x8bf\xbbG\x17\xb3\x87\x9bG\x17\xf3\xdd\xa3\x8b9\xbc\xcc\x8f\xf2\xad\xa1X\x19\xf9\xd6po>\xb9w\xda\x00\xc2u\xc9\xc3M`\xed\x80\xd0\x1a\xa4\x82 \xa9U\xd0\x0c<\x96\xd4a{} \xdew\x9d\xea\xd7{\x7f\xf8;\xbd\x11\xeb=\xab\xad\x9b\xde\x1f\xfe1:\xf9\x8f\xd3\xc9\x7f\x82N\xfe\x1f\xe8\xe4?I'\xffC\x91\xec\x1b\xc9\xff\x88N\xfe\xc7t\xf2?\xa1\x93\xff)\x9d\xfc\xcf\xe8\xe4?-\x92\x9f\x1b\xc9\xff\\$O\x8d\xe4\xbf\"\x92\xeb\xde\xf1{\x7f\xf8\xefD\xf2\xccH\xfe3\"\xb9\xee;\xbe\xf7\x87\x7f\x96N\xfest\xf2\x9f\xa7\x93\xffg\x91\xcc\x8d\xe4\xff\x85N\xfe\x17t\xf2\xbf\xa4\x93\xff\x82H~a$\xffE:\xf9/\xd1\xc9\x7f\x99N\xfeW\"90\x92\xff5\x9d\xfco\xe8\xe4\x7fK'\xffU\x91\xfc\xd2H\xfe\xf7\"92\x92\xffG\x91\xfc\xcaH\xfe\x9f\xe8\xe4\xbfF'\xffu:\xf9o\xd0\xc9\x7f\x8bN\xfe\x0f\"96\x92\xff#\x9d\xfc\xbf\xd2\xc9\xff\x1b\x9d\xfc\xbf\xd3\xc9\xff\x89N\xfe]\x91\xfc\x95\x91\xfc\xb7\xe9\xe4\xbfC'\xff]:\xf9\xff\x14\xc9\xb9\x91\xfc\x7f\xd1\xc9\xff\x99N\xfe/t\xf2\xdf\x13\xc9\xf5\xd8\x01\xbd?\xfc}\x91|i$\xff\x01\x9d\xfc\xa7D\xf23s9\xfc\x9eH\xf7\xcd\xf4\xbf/\xd2\xdf-\x8c\xf4\xff*\xd233\xfd\x1f\x88\xf44\xad\xa7\x7fK\x93\xe5oi\xfa\xfb-Mh\xbf\x05\"n\x90\xb7o\xff\x04\x9d\xfc'\xe9d\x80\x80A\x0c\xbf\xfd3t\xf2\x9f\xa3\x93\xff\x02\x9d\x0c\x84\xd6\xa0\xa8\xdf\xfeY:\xf9\xcf\xd3\xc9\x7f\x91N\x06\x12d\x90\xe5oij\xfd-P&\x83Z\x7f\xfbW\xe9d \x13\x06\xfd\xfd\xf6\xaf\xd1\xc9\x7f\x83N\xfe[t\xf2\xdf\xa6\x93\x81\x04\x19\xf8\xf6\xed_\xa7\x93\xff&\x9d\xfc\xbbt\xf2\xdf\xa1\x93a\xcd\xfe\x9a\x91\xfc\xf7\xe9\xe4\x7fH'\xffc:\x19\x16\xe7\xa9\x91\xfc\x0f\xe8\xe4\x7fD'\xff\x13:\x196\xfb_7\x92\x7f\x8fN\x06\x1e\xc0X\x98\xdf\xfes:\x19\xb6Xc\x07\xfb\xf6_\xd0\xc9\xff\x8aN\xfe7t\xf2\xbf\xa3\x93a\xfb66\xb6o\xff%\x9dLo\x9a\xdf\xd2\xbb\xe3\xb7\xff\x9eN\x86\xed\xe47\x8cd\xd8N~j$\xc3v\xf2\x9bF\xf2\xff!\x92\xdf\x1b\xc9\xff\x89N\x86\x9d\xe0\x0b#\xf9?\xd3\xc9\xbfO'\xff\x01\x99\xfc\xdd\x1f\xa3K\xc3.\x13\x1a\xc9\xff\x85N\xfe\xafd\xf2w\xbfC'\xffq:\x19H\xaf\xc1\x8d|\xf7'\xe9\xe4?M'\xff9:\x196\x01\x83\xa5\xf9\xeeO\xd1\xc9\x7f\x86N\xfe\xf3t2\xd0o\x83I\xf9\xee/\xd1\xc9\x7f\x85N\x06Bm\xf0\x17\xdf\xfde:\xf9\xaf\xd2\xc9@c\xdf\x18\xc9\x7f\x83N\xfe[t2P\xcd\xc4H\xfe\x9bt\xf2\xef\xd2\xc9@\xa8\xdf\x1a\xc9\x7f\x97N\xfe\xfbt\xf2?\xa4\x93\x81\"\x1b\\\xc1w\x7f\x8fN\xfe\x07t\xf2?\xa2\x93\x81\"\xbf3\x92\xff)\x9d\xfc{t2\x90\xde\xccH\xfegt\xf2?\xa7\x93\x81\x98\x1aL\xe1w\xff\x82N\xfeWt\xf2\xbf\xa1\x93\xff\x1d\x9d\xfc\x1f\xe8d\xa0\xb1\x06\x0b\xf9\xdd\xbf\xa4\x93\xff5\x9d\xfco\xe9\xe4\x7fO'\xffG:\x19H\xef\x8f\x8dd \xbd\xe7F2\x90^\x83\xc7\xfd\x0eH\xaf\xc1\xcc~\xf7\x9f\xe8\xd2@z\x7f\xdbH\xfe\xcft\xf2\xef\xd3\xc9@L\xbf1\x92\xff\x0b\x9d\xfc_\xc9\xe4oav^\x98\x1b\x0f\xc0*0v\x9e\xef\xf0\xb8fp.\xdf\x01\xb3\x14\x9b\xe9\xc0X\xde5\xc9\x1b\xec\x1bi\xa9\xd9\xb5)Hi\x8f>\xd7\x16rw\x12\xb0\x11\xce\xd4F`\xa3[\xa9p\x03\xc9Z=\xf6\xa3\x12;R\x96\xdf\x84\xc4M\x9am?l\xf7\xbcG\xabT\n\x0b\xc5}\xd0+x\xba\xea\x04u\xf4\xfa\xc0AA%\xd5\x10~\xa9\x86\x80\x00T(\x87\xcd\xba\xc9a)\xb5\x01\x18Tlmm\x1e]l\xcf\x8f.v\xfc\xcd\xa3\x8b\xfb[G\x17\x0fN6\x8f.v\xb7\x8e.\xf6\xc4\xcb\xde|\xd2\xbfw]%\xa3\xeadt\x93N\xfa\x9b\xdfL\xc6\xcf6\x7f{r\x05\x7f\x7f\xbe\xed}\x80\xb4\xab\xf1\xd6\xe6\xa3\x89x\xc5L\xf9\x02\xa9W\xe3\x9f\xe0\xcf\xad\xcdGlr\xef\x9a\xdd\x8f\xd0Pb-\xb5O\xa1\x939:\xba\xf0\xa7GG\x17'\xc3\xa3\xa3\x8b\xd9\xde\xd1\xd1\xc5\\\xfc\x01\x01\xab\x008B\x1c@\x8e0\x07\xa0#\xd4\x8f.NP\xe0\xba%\x05\xae\xbbsvt\x94\x89\xea'GG\xa2\xae\xbf\x05r\xd9\xf9\xfc\xe8(::J\xa0\xd0\xf6C\xfc\xf7\xe8\xe8(\x1f\xee>\x14%\x86\x0fA\xf9 \x1a\xc2\x7fC\xfc\xb7\x8d\xffv\xf0\xdf}\xfc\xf7\x00\xff\xed\xe2\xbf=\xfc\x87mn=\xc2\x7f>~\x01;\xf7@\xfc\xdb\xd9\xda\xda\xaa\x11\x18\xd46\xf5X\x9fE\xac\xcfz\x16M\xd2\xac\xdf3\x17\x1cH\xa1\xb7\xf7\xe4\xb0\xf7Nh\xa5\x91\x98j\x01\xd4\xb9\x80\xd4|\xf7\x08\xa5\xddG\x17\xa6\xea''5Q\xaak\xa0\x18\xa9}\xd0\xda\xf4\xb3\xcd\xdf>BA;H\xdaQ\xd4~t1\xe36u\xd3\x1az\xad\xf0Zz-\xd0\x18\x8d;\xf7k\xae)\x98\xfcB\x0d\x96S\x8a\xa4\x95Vt\xda\\t&\x8b\xae\xa9>\xb8\xb2\xa9\x12\xdd\xba2naU\xc6\xcd,\xca8R\xf5\xc8R\x8f\x85\x9d\xf4s3Z?wV\xd1\xcf\xd1\xed\x89\xbc\xda}\xcbe\xa9b\x19OQ\xa3\xa7\xe0\xdf\x17`\x03\xc5\x95s0\x9a]\x85\xe1\xd5\xf2*\xe1W\xe9Uvu\xc6]\xf7@\xaa\xef\xc6\x89\xc7\xa6\x1e\xeb\xfd\xb0g\xaa\xff\xd8\xcah\xe8\xb3\xab/\xbe\xb8\xfa\xf2\xea\xcd\xe1\xd5\xdb\xabwW?:\xac5\xc4\xfalnk\xac\xec\xdf\xbcK\xffT\x8d\xb6\xcf\xf7<X\xef\x9f8\x07\xa3\xe1\xdbwW\xdb/?\xbb\xday\xf3\xd9\x95s\xb01\x1en\xefL\xdc\xa3\xa3\xd9\xbb_w\x9d\x83\xfd\xa3\xa3\x13 \xe3\xc7\x13W\xaf\x93fW\xdb\xd1\xecj'\x99U\xead\x8b\xa2\xce\xb3\xcd\xdf\xc6:\xb1\xc7\xce\xb4\x81\xddHG\xa56\xafe\xb7\xcd\xcb\xcer<\xaa\x9b\x89H\xcb\xd0\x9dz:\xb2\x1c\xc3vs\x8dz\x8f\xd1\x9dt\xf0\x8d\xe0*\xb6<\xe5\x17}\xe6g\xfe\xf11y\x87w\xe1\xa7\x8b\x11\x18\x1c'\x9e\x91\xb9\xf4W\x90\xe7\x04\xe0\xd7\x95\xb0qA/<\xb2\x81J\xee\xf5\x19\xb3G\xb4y\xdd\x83Gt\xb0\xee\x07\x8f\xea\x0c\x9b\xe4\xcc\x1e\xd5\xcd\x8cr\x99\xfe\x88\xbcD\x92\xdaM\xd16\x87\xe6\xc8\xc5\xd6\xae\xb3\xa8\xc0\x9d\x92\xd61pG\x15=\xa6\x87\xdcO\x1c\xf71\xeb\xf73\xf6\x84E\x8f)\xf6WA\x82\x93\x97^q\x82y\xe6$h\xc19\x1eZ]\x86\x95o\xa9\xee\x07\\\xf4\x01}\xb6\xeb\xc9\xd2.\x0d\x9c\xb7\xeb\xe9\xa7\x1cl\xf1\xaa\x89\x0b_ \xa1_ML\xa1d^5\xa0N\xd7\x9b\xfb\xe1\xf6\xa3ka\xbc\x86\xe2 Z[\xe5!\x847\xfa\xf9\x07\xaf\xba&\xae\x8b\x95\xdb\x86\xd5\x81\xc2\xca\xba\x82\x1e\xb1r\x87\xb6q\xdb6N\x1d9X+\x1f)w\xd5\x83\xfe\xc1\xf3\xd2S\xfb\xd1\xe4\x87\xf7L\x9eB\xf9V\xb6Ys\x86\xad\xf6\x9eS\x08\xdeE[s\xce\x89\x90\x99&S\xa0\x8c\x05~\x02\x9c\x01\x9a\x10\xceK\x85\xfd\xbd\xf1\xd1\xd1O~8\xf8\xa4\x7f\xe0\xb8\xe3\xa3\xc9\xcf?\\M\xee\x9d\x02%\xff\xe1\x9d\x9eV\xac\xfa\x99\xab\xc2\x00\xd8\x1d|r\x004\xfd\xc8q\xaf`\x05\x0d\xfa2a\xe2BK?\x1c\x0e>9\xc0\x1d\xeb\x87\xd7\xa6\xec\x1b\xce\x06\xd8t \xea\xa6l\x10\xc0\x14\x97\x1d\xb0\x15\x18A#\xe3\xef\x17\x0eG\xd9Z\xa8S\xdc\xb5~d\xbdk}o\xfc\x93\xc1\xa4\xff\xc3{\x03~\xc1\xa7N,z\x10\xc35\xb1\xf2m\xf0\xe2\xf0\xf8\xf5\x9bW\xef^\x81\x91~\x0f\xac\xb8{\xe8\xc8\xd1I\x93\xa9{<\x1c\xa0E\xd3\x88\xf5z\xd7\x85\xc4F >\x18@`\xd6k\x8c\x14\x91~\xcf\x1d\xf7\x8e\x8f\xa7q\xc27\x7f\x9a\x1e\xa7\x0b?\xe1\xb3\xe3c\x9b\x95\xfdu\xa5\nv\xdf6\xed2\x83\xf6s[7\xb0\xa9\xad\x01\x88\xcb\xc2\x87\xcd\xe3\xce\x1de\xde[!JcN{\x05)\xe9\xd2\xe6>\xcb\xd8\x01\x1b\xb2\x11l\xda\xd7\x05\xbf\xa0\x9e\xc4 \xeb\xf88\x8cg~\xba8\x16{\xfdqqg\xe8\xf8\x988v\xb5\xb8OX\x17\xb9*PR\xf0\xa8\x02#\x983\xc7pZ\xcc\xb4\xf3sf\xc0\x8fULN\xf7\xd1\xa6\xb4\x98\xee\xa6@J\xb2VPx\x15\x86\x95.\xbeP\xd8\xfd\xde.\xf0\xbf\x7fx\x16\xc6\xe7\x07\xd5+>0\xc4X\x1b\xf8\xed\x0e\xb4\x01\xcb\xda\x06\xd9\xe4=\xacu\x9c\xe5\"\xeaW\x17#rdC\x8fEb\xe8\xfbh\x8d\xaf\x89\xd82i\x9d\x9c!\x83pS\x02\xd1\xc6\x96\x8c'\xb7\xc4\x88\x0cw(\xf6\x18\x83\xd7h\xcc\xd8*\x0c\xa6\xbc\x0d\xf2\x9d\xd0\x8bf}\x13D\"rN6\x9c\x88=A\xc7\x11N\x04\x9e\xa0\xd4\xd5\xd4M6\x14\xebm\xb0\x8a\xd1WD\x89\x8f`\x1e\xef\xb1\xcd\xcd\x02H\x1e\xdb\xba\xd6\x9e[@\xe9\x174z\x1c\xbb.\xba\x1dG\x93\xf1\xb0m\x0b\xba\xd5\xa1\x146\xaa\xd5\xb1\x08rW\xb91\xf6\x11\xba\xd2u5\x9b\x80\x8d\x01\xb0\x91\x15\xb0\xb1\x04\xac\xd3\xefkH\x12a\xec\xd0\xb1\xf8\xf0\xc4\x85\x08P\xe3X\xc0[F9j_\xdb\x0d\xc3\xddn\x1d\xae\x0d\x89\x12\x15\xf9\xcd\x95G+\xdb-\xa1\xebr\x01\xad\x14\xc9\x8e\xdf\xd2S\x1d\xd9\x9d\x1e\x9e\xe8\xd1\x81\x1b\xf0\x9bQ\xbe<\xe1\x89\x96\x90\x02\xe7\xa9%\x9c\xc4q\xc8}\xe9\xf4M\xf0\xa6\xc7\xc7@\x89\x8e\x8f{2\x10\xc0Hs\xce\xf7}\xceFe\x1d\xc0d\x9c\xf2\x0eb\xfc\x8f\xdc\x07\xdc\xa1>f\x1f\x1a\x16a\xd9\x0fz\x05F\x80\x8c4e\x03\xc1\x034\xeeU7\xdeHnk\xc8\x8a\xc9\x8d\xf7fK\x8f\xb6{7\xae\x8eI\xe5\xdc\xfdV\x90X\xa6\xa5(\x80{\x10\xe9u\xef\xac\xe2w\x9d\xbcI\x06\x8e/b's\xa9\xfa\xaa\x8dT\x11\xb8\x1d\xa2\x05&o\xaa\x05\xe0{(j\xec\xbb\xfe\xc8q\xa4N>\xe6\x13\xb8|\x90wu3k\xa6\x9cI\x8f\xbc\xbc\x00\x87\x95\xf3\x0ea'a\x07,\x1f\xa7\xc0C\x87\x82\xc1\x0c F\x9a\xb1\x1bH\x03w\x87\xf5[ \xf2\x02\x84!`AL\xd8~\xd4*A\xb2\x12\xc6\xd8F\xa3\x87\x15&\xe6\xce\x1d\x96\x8d\xb7&\xe3\xed \xde\x19\x14\xef[\x82\xbd\x13/\xc3\x89\xd8\x82\x8ao5\xdd`\x8e\xa4\x13Q\x88\xb6\x16QAB\xaf\x0d\xb5\xa1qwF]\x8d\xa3\xa064%U\xdbm0\xc4\xaf\x0bd#\x80\x99\x02\x1d\x91n4\x8d\xe1\x0b\x04K\xcd\xe4)\xdbg\x1b\xb9y8,\xce\xf4\x85\xdf\x98\x8dZ\xfc\n\x10\xb0\xf2\x8a\xc7\x03\x96nnZ\xa5\xabs\xd1\xbdqjq}=\x85`\xa18\xbbs\xc1G\xc0\x166\x9e\x8f\xb7&\x02\xb97\x1c\xf1\x06b\x92\xd2\x93\xcdFS\xac\x0f\xe8\xdec\xd6\xef\xa7\xec \x0b\xad\xbdZ\xb1}\xe6\xa8\xae\xb9V\xe7i3\x10\x0d\xaf,\xb9\x0b1IV\xaf\xde\xc5\xd0l\x04\xa5\xe6\x90\x04B\xdco8\xab\xe6\xd1\x8aG\xc6}\xb7\xd3\xbe3\x86Q)\x1bBQ\xe7.\x94\\\xb2}\x96;3\x8f-<\xb6\xc2U\xe1\xb13\x0b\xc5\x04\xba\xabwy f\x12\x0b\x8f\xcd<\x16\xb0+y_\xeeL,\xcae\xf3\x08\x1afP\xd5\xba\xc1\xa1\xad\xf5\xeai}J\xea\x07HT\xd1\xacu\x86\xbc\x01\x8b\xd8~\x04\xca:\xf3\xb5\xa2\xac\xe4\xd5o\xbd\xc3\xfa\xc7T\x7f\xbb\xf1x\xb7\xf4\xad\x9b\xf2r\x16\x8d\xe0C\xea~\x9fH\xaf\x97\x07b\xbd\xd5\xead\xa1\xeb\xa9\x8c \xbfLy\xd9\x8a\xe7ft1\xa6\xb1G\x91\xa5\x15V\xf0Gb\xab+\xdcT=a>\xdbd\xc3bM\xe6\x95\x83\\\x15\xd3\xfb\xfdH\xa2\x90H5\x9b7\xc6!\x17L\xe0\xe4\x1d\\M[\xf8Z\xc5\xd6\xde\x90\x93\xb5n\xc5u1\x9ade\xb7\xa9x\xa7\"\x9d\xd2\x1c \x14\xaa\xab?Sl\xbf\xaeq\x08ew\xea\xcdL%\xdfTO\x9f\x9b\x9c\xc1J\x0f\xac\xfaLy\xf0\xac\x9b\x97\xcc\xaa\xa5\x12\xff\xb2^b\xa1\x97\xc0M\xbb^\xe4\xec\xe6\xc2S\xc5\xa2,=v\xea\xb1K\n\xffO\x04+\xe2PG\xa1c\xc8\xc9\x88\x9cs\xb6\xcfN\xd8\x01\x9b\xb1\x11\xcb\xc9\xba\x87l\x9f\x1d\x17%\xa86.\xc4^/\x1a:\x17\x9c\xcd\x8a\x1d\xb0\x05\x1b\xb1sW\xfc\"8\xa6\xb7\xa2\xb8h\xf5P/~h+\xfe\\5|h.\xe7\xe7bK\x0fA\xd7e\xaedX\xa5!\x9cb\x8a\x8d\xd2\\l'\xe0+\xc5\x83A42>\xc5\xf76.\x8a\x06/A*x\xa964\xd7c'\"e\x8a\"\xdb\x98\x98\xb5\x11\x0bd\xeay%\xc3\x1c\xdb\x86\x13\xb1;lN\x0eM\xcc\xf6{\xb6\xcf.@\x0c\\\xb8\x96\xe9\x1d\x1f\x9f'\xfej\x05\x82jb\xa2\xc4\xf3\x8c\xed\xb3\xb7Z\xb5\xac^\x8d&w\xef\xc5\xb8\x9e5\x9d\x07_\xb1}\xf6\x9e\x1d0>\x00Wr \x11mp\x9a\xfe\x9a\xed\xb3g >-\x8bg4[d\x05\xf6\xa9\xf3\xcac\xaf\x15\x1c/\xdb|^\xd3l\xd0\x06L\xaac\xb6\xee\x9b\xd3w\xfd\xad\xd1\xd8\xea\xe4\xc1o\x9b6\x96\xd9\xdd\x1ev\xf5\xe3zv\xcbf\x1du.M\xb7\xef\x80\x02\xfel\xe6\x80w\xe1\x1a0\xc4\xe3k\xf4\xcd\x9f\xcd\xc0\xabP\x99\"\xb6D4\xca\xf0\x0d\xfb\x8b\xa0jj\xe1\x93\xf0\xad\x037\xba\x99\xae\xa6\x13O$w\xd3\xc8\xed\xb4s~\x9f\x8cX\xfb\xb7\xec\xbae\x00\xbb\x93\xb5}\xc2\x8a\xd06/I\x86\xb9\x93d\xf5\xb6(7\x17\x14\xdf\x90K\xfc\xafo\xf8\xa9L\xaf\xb7\x13\x9a\x1b\xbb\xe0\x01\xb6\xcd\xed\xbf\xd8\xa3?E o}\x93\xae\xf0\x03\x9f\xf9\x99aiZa\x05\xc0\xa3e#+\xf0\xa5\xbf\xa2\xf8\x00-\xd8\xfb\xf2\x84\x1bM,\xf5\"h\x97R/r\xaa\x17y\xcb\x0dn\xe3\xb2\x92\x0f\x12\xf0z\x91\x93J\x11\x10\x81\xd7\x8b\x1c\x1b\x8c\xcf\xa7\xf9|nv\xf8\xbc\x066\xffG\x01?\xaf\x17:,\x9c\xaa\x15\xeb\xde\xe2\x9b\xea\x02\x18\x83\x03v\x88\xfb\xc2\xabyg\xd7k\x8aX'\x1e;\xf4\xd8[\x8f=\xaf\xe3~z\x1e\x80\x0f4R\x8e\x05q\xdc\xceGF:\x93; \x1f\x9c\\f\xfc\x0bd\xf77\xc41P\xfb}u\xc50\xff\xd5|\x9e\xf2\xac\xcc\xc7\xdf\x8d\x1c\x88x8x\xa3:\x01\x00{\xd2\x1b \xfe2\xcbCG\x8f\xe9\x8e\x16:\xcb\xb6\xden\xbcu\x04u\x8f1\x18\x0c\xbce\xaeKl\xfe\xf0\xb5\xb9\xf95H_Y\xd2\xcf\x1a{\x178}\xee\xb1>%y\x86\xda\xb3\xc6\xda|\x10\x81Oq1&x\x03O+K\xe53\x1c\xc2\x9d\xe0\x0fK\xf3KK\xa7/\x9b?\x8b\xfa\xa0~\xc5(\xa9R\x7fA\xd7W\xbcZn\xa9vj\xaf\xf6\x0c5\xfd,\xb4\x8b\x8b\x80/sD\xfb)x{\x85\xb3\xde\x86\x12R\x00\xbb\xfa\xac\x15\xfb\x14\xfb\xf6\\\n\x1b\xec\x9f{U\xb4\xf5\n\xe0aa\xd8\xd8\xd5>\x9bz\xecyy\x14\xb5\x7f\xf858\xb4{\x0f\x88\xf8\x1eC\x15\x94\x0b\xb8\x91!|^\nm<\xf6\xda\x02\xde\x13\xfb\x8a.\xf9\xf8\x0b\xe55P\x0cJ\xfe\xb0J\xaf\x99\xb6\xce\xda\x94\xcf\xed[\xf4\xba\xec\x9c\x0c\xe1\x04\xd3K\xcb\xaa\xb8\x195\x82\n\xa5\x0e\x0d\x8e\xfb\xfdl\xc2\xf6\xc1\x86\x9e\xd7\xee\xa2\xb9\x1fC\xc4\xf5q\x86\xd786\xbe\xf6\xb0\xecv\xb3\x8f(\xf1\xc7\xd0\xe4xn\xe9\xb0\x8f\xf2\xde\x94\x02\"\x08@\xd8\x1d\x16\x9bp\x9c\x82f\x8e:\xcb\x0b6hJ\xf2\xffb=\xcc\x05\xe1H\x9c\xcc\xd5tC\x1b\xa1\x95z\x14\xd1\x8a\x04\xe34\x7f\xccV\x0dJ\n\xc1:M\xc7+\x8b$\x7f\xc3 A\xc0\x00^\x9aG\x9aA\xdb\xcc\xed\xa8\x95\x10\xdfX\x80\x190E\xc1\xc47`4\xa9\x0c\x87R4\xba \xa8\x98\x12\xf0o\xd4\xbc\xab\xa6\xba`-U\xf1P\xea\xdf*\xa0\"\x18\xb9P\x1c\x9eV\xec \x9b[!s\n\x1a\x10\x05\x1f\x8b\"\xe4\x12,\x07g\x16\xf0\xf9n!\xfe \xe1B\xe5%\x1cWg\x80E\x1c\xf0g\xc4|G\x9c`!\x15\xd1+\xb5)~u\x05\xc4 ;\x10=\xdc\xdf\xc7\xd3w.\x1bA\xd4\x84vO\xecJb\x90\xa8\xd0\x14\xfc$\xe1\xfe{#\xc7T\xe1.a{\x03\x9exZ\x1a\x92\x83m\xc6\xac\x89>\x83\xea\x07\xf0wi\x03\xfc1\xb0\\Z\xab4\xe8\xcf\x81\x17\xd3\x8a\x99\x03:\x16\xeb\xe6\\|\xad\xda\xc9@F\xec0R3\xd4D\x91\x01\x06\x8fE\xde\xb1.\xa6\x86\x14\xb2,|\xf3\\/{\x8eF\xdf\x08\xfa\x0e\x1bX\xaao\xa1\xc5\x0f\x81\xe0g?\xa8V\\\x9f\xf4\x13\x87\xcfJ|\xc7\xcd!F\x83\xb5 (\xd0\xdc|\x0b\x03>\x8e'b)E\xec K\xacK\xc9\x87\xa5T\x8fZ(\x9e\xcc\xf1\x01i\xd1\xac\xd9 \xc6q\xbf\x0f\xb1\x0e;\x80(\xf8\xde\x00\xa1\xa23\xaa\x91\xf2\xc7.K0(cf\x04'\x91\xbdKZzg7E\xa0\x05\xf9\xf7\xa9\xfb\xe2\x94\x94\xbcm\x0b\xb3\xc8\x1dbiZ\x9eHf\xeb\xc6\xd0\xb5|\xa7\x953[\x170C\xcbMz\x03`>\x84)-\xc1\xe3\x8f\x0b\xf0}\x1e\xc6~\xb6\xb3-\xb5\x08\x80\x80\xb5\xcc\xdd\xfbt\xe6\x8b({h\xcd\x19\xeeZ\xb3l\x1f\xfb*\xb06\x08Y\xcfC\x7f\xb9\xe23{ \xdb7E^\xe5\xa3\x1b[\x9e\x9e\xafaP\xad&\xdd^E\xf0P\xcb+\xe48\xb5\xf4R\x08afp#Q\nr\xea\xb3!q\xc5\xc8\x00\xa9N-MIrj\xc9J\x17TKVB\x9dZ2\x08r\xeaiRxSK\xfe1\xf7\xdf\x17\xfd\xd8\x18z\xeb-\xc1@.\xc1\xd8\xe1E\x94&\xb1\x1fm\xf8c\xb1*o`\xdaK\xfb\xa0\xd85\xac\xdfn\x81C\xae\x8f\x0dc5\xe9\xf1\x98L\xfb'u\xf6\x18O,,[$6\xe7\xc2\xec\xc6\xd5\x9c\xf6G\xae\xb9\x91o\x00\x03~\x87e\xa8\xea\xb5\x10\xe86\xcb\xd7\x86\xb3\xc6\x9e\xebh\x81\xb6<\xd93\x8b\xe9\x05}\xfd\xc8N\xe5v\\\x07\xae8y\xac\xa7\xd6\x8b\xed\xe2\xd9\x0d\x9a~\x9d\xc4\xcb \xe5\x1f\xa1\xe5\xb7<\xfb\x08\xad\xca\x95uK-o\x1b\x97v\xe5\x8aX\xdf\xc0\xb3\x12\x856.B8gE\x00\xda\xa8\xe1\xf4\x15\xc0\xf1!\xb2\x1c.\x90m\n(\xb6 \x99\x0f\xe9\x06<q|\xd7\xe6\xae\x86\xdd\x06\xc2\x1b\xe6|\xeaB9m\x1c\xb9\xb3E\x99\x8fD\xce\xd0\xb8\x98\x9e[fC\xda\x16<\xaa\xeb \xd0\xb8\xc0P\xd9M\xcd\xb3\xfe\xbc\xa3u\xa1\x85\x14\xfb\x92\x14\xe7\x18\xb2!uB\x98\xd9\xac\xdd\xeaR\xf1\xbb1u\xc5@\xfb\x82\x1e\xebT|\xc9/\xae\x0b\x05X\x13\\\xefd0\xc1Sv\xc5\xe6\xb7b\xb3yo\xfc\x93\xc1\xf8h2\xe9_\x1d\x8d\x9d\x83\x91\xb3yp4\xeb;\x07\xa3\xa3\xc1\xd1\xac\xef\x1e\xb8W\xce\xb8ww\xe2:\"\xef`\xe3h\xdb\x1d\xff\xe4\xe8hrut4p?9p\x8f\xb6\xdd\xa3\xc9\x95s\xb0\x0f5\xae\x8e\xc6G\x13\xb7|\xbd\xfa\xa1\xeb\xd6\x1d~\x0bD\xb9wt\xe4\x1c\x1d\xb9\x07\xf5<eS] \xc8c\x03)\xb5=\xb0\x12\x9a\xf7w\xd1\xca\x15\x02e<\x8fg\x1c\x82eh\x9b@\xaf\x07RXu#8\xa9\x82\x0b\x95\x13\x81\xed\xc0,\xdbH \x10\xad\x1ek\xe9\x87C\x88\xb1\x01\xc1\xaa\x898\xe1\x10\xa8\xad:m\x16\xfa\x12\xac3\x89bE\xd6\xb5p\x02\xd0\x0f\xda\x0d\xb4\xea#<+\xee\x91p\xaf\xa1\x98z$\xb4\x0b;\xfc}\x067\x89#\xe5r\xc0\xab\xc9\xf4\x18\x02\xc1HC\n9\xf5\xa7\x0b\xfa\n@\x1b\xa9j=|4,m8\xd5n\xec\xa3\x04 \xab0\x16\xd7[S\x91c\x89\x1024.\xf3K\xe3\xf1\xfa\xe4I\xf2\xb8S/\x9e[\x0e8\xa9\"\x83m\xd3mv\x9a\xe9[V(\xcf\xb8\x82~:Yy\xe1\xcc-\x0e\xfas\x14\x15\xb1~?dO\xd8\xb4\xd1\xaa8u\xb2q8\xb1\n\xaf\xe6J\xa2\xa0`\x0f\xfd[\xb9\xae\x8bB'\xb3\x1e\x976\xc8\xd5\x15D\xcd\xe9\\,@\xd1\xc7\x8d}6e\x07l\xceFlc\xc3\x996\x081$y\x9f\xc2\x7f\xdfYyl*e\x10\x8evS\xff\xba\x18\xb1{\x9f\xf6\xe3\xb0{\x9f\xf6.bn\x8d~\xd79n:L\x1c\x08\xde\x008\xe6\x11\x8c\xe7\xc6\xcb\xca\xf2\xb1\xa2@\x17O{Y\xf5\xd6b]\xbbq]\x90\x0fw\xd6\xbf\x92\xb1N\xf7\x93\xda}fv\x93\xce\xee\xde\xb7\xb1T\x16?\x1f[\x94_\xc0/\xfdl1X\xfa\x17m\xc3\xa6\xc9\xc0\x992\xa8\xedd\x87\x04\x8b8/\x0eq\x9bC\xf3\x08\x97j\x8dE\xb2\xb1\xc0v\xfcJ\xe1\x9a\xa5Xp)\xe8\x19s\xd6g)\\\xc6\xf5p7\x8a\x05\xbcw\\\x8f\xa57G\xdb\xc2\x02\xc1J\nc-\xea\x14\n6#\xd6g\xb0\xe5\x0f\xd9\x88m\x0e\xdd\xc7`'\x11ln\xb2\x11\xeb\xf7\x03\xf6\x84\xc5\x8f\xcd-_\x80)s\x04\xd7\xee\x81\xe5Ty\xec\x0dH0\\\xff\x96\xec\xce\x16\xa9\xf2b\xf7\xea\x86\x1bp\xf7f\xb0\xf7ho\xf7\xd1\xcep\xe7\xfe\xc3\xdd\xed\x9d\xe1\x83=\xbe\xb3\xf5\xb0\x0do,\xcbE \n\\\x84\xc1c=\xb2\x01\x82\x03\x82\xd7\xcd\x18\xb3\xf1\x16\xed\xa6\x80\xde\xd0e\x9f\xb0@\xa0\x96\xc23\xceF\x80\x1e2\"\xadJ\xb9.,\xb6\xad.\xaf\xe8\xe5\xb4\xfb\x80v\xb3i\xec\xcc\xb9\x04u\xfb\xb9\xd0\xbe\xc6\x10\xbf\x91\x1a\x8b\x15A\xe2A\x84\xdbQ\xd1\x0c\xc6\xf4S\x81\xce\xc4*\xd0\xd6D\xdb\x82h\xc0\x99\x9d.\x03\xa1F\x11\x91\xdd\xae\xf1\x8d\xc0F\xc7\x0dDt\x03\"\x85fE\xc9\x1a9u=\xb6\xb1qm%\xf0\xee\x03K\x14\xa3N\xb3gEv\x14\x8a\xc3\x87\xe3kC~\xf7\xc1}\xd7YKx\xd1N\xd5Zw3\x9a\xe6\xb1:\xdd\x13,`\xa0_<\xf5`9$\xf0\x96\x83\xa9\xa8\x12f\xe4\x16a\x06\xd3q}\xcceX\xd8~?&\x8elL\xed&\x18P<r\x82q:\x01\xff\x86\x81\xe2\x05\x8d:\xa6\x02\xd28)\xb0\x9b\xec\xc7{\x9d\xdc\xeb\xb6\x01<\xb2 \xbf~\xbf0*6\x84\xc8\xc2)'NT\xee\x1a\x1c\x1b5\x8b\x163\x08\x14\xad\xd8\xb9\xc4\xc4\x81\x10\x016-O\xbfP\\\xdf\x88\x8b\x07\x82\x87\xfarc\xf3\xd9\x13q\x10\xbes\x87m\x0c\xe1Nb\xec\xe4c\x7f\x82&\x0f\xeec\xbb@\xc3\xe6\x10\xa7\xd3L8v\x16L_C\xf5\x83\x10+\xd7\xf8\x83\x87\xee\xe0m\x96p\x7fi\x16\x01U\x99x\xe9i\xa6\xdb\xacf\xbeM\x13p\xa6\x8c\xb5\xc5\x06g\x89\xea\x1a\xc3V/ \xed\xc4\xe8\x0e\"\xe2\xe7Ri\x88\xf5dD\xceXy\xd62\xbb\xc8\xe4\xb1\x8e\xb0\x8d\x13H\xd1C\x05\x83\xaec\x06\xc2\xe4\x00\xf7\xc4\xc7\x9a\xe0\xfe=\xbfL\x1d\xee\x8e\xb7&\x13\x17M+\x8ey\xc8\xb5[\x892AZ\xeb\xa1\xd3=L \xa6q\x1e\x81Oh--\x9aqH\xcb\xeai)\xfa\xe1+\x133\x9e$\xf9*\x83{\xb7*\x99\x86X\x88g\xce\xb1E\xf09\x97\xc2\x1e\x13\xe9\xd5|\xad\xec2\x8a*\x18L\x9b$\x92\xc7W\xcf\x14%=\x8d\xab\xbe\xfe\x14\x1bE\x9f\xdd\xdd\x87\x98\xf8\x10\x16\xba\xcf\xee\xf6\xeeZ+~\x80\xd3\xc48\x9b\xb8\x96k\xf4mw&\x98f6+1\xc20GR\x0f\xd8\xdb)\x14\xa2\xcd\xeeX\x95L\xed\x8b\xc6,\xc7r\xf5\xa4\x83c?\xcb\xc0\xe1\xd1\xca\x91?\xc0X\xe1x:\xf33\x10j\xce\x11\x9cN\xef\xc9\xc6\xf8\xf9g\xcf\xde=\x03/\xcd\xaa\x84\xe6\xa0\xefhr4y\n\x0e\xf7&\x93\xc9\xe4iQ\xfc)\xba\xde\x9bL\x9e\xf6\xa0i9\x9b\x80\xfa\xa1\xd4\xb1\xcd5 _\xda\xd1\x06M\x7f\xc8\xb5u\xc0z0 H5V\x16;\x10\x18(\x87\xccF\xaa\x0b\x05\x15a}6\x84C\xb73G'D\x1e\xc8Z6\xb6\x8a\xde\x02\xebLO=\x93\x9cP(\xa8E98\x1b\xf5VF;t\xf6\x8c\xcf\xfd<\xcc\xec\x93^\xf4'%\xbac\xddvi\x88\n\x8a2b\x01\xbd\xa8\x0b\xfa0\x12\xb3F\x16\x11\xe0\x0cN\xf2\x8c\xa7#6\xa5\x8bL\xe3(\xe3Q6bs\xcbW\x80\x84\x8dXd\xeb\x04P\xae\x11\xcb\x9b\xf2G5\xb6\x82\x19\xa0\xf8`\xd9G\xf2\xa6}\xa4B\xc87\nd\xcb\xb4\xcd^\xe0\xb3-\x84t\x02B\xd3\x92\xcc\xe2\xc9\x14L\xa0\x04H\x8aS\xbb\x9dj\xc6\x86QFQ\x04\x9d\x07\x18\x8d5\xad\x1d\xc5>\x96\x95\xd2E0\xcf\x9c\x06D\xd5.\xfe\x03k\xd1\xb64E\xf9\xc0\x89\x8b\xbd\xcb\xde\xb2x\x00\xf8q\xc3\xa2\xa2)-\x99\x8aS\xe1$\xec\xa9\xf4%\xa6\xf6\xbc\x91\xd8\xc0Y\x9f9\xd2\xc8\xfd\x80\xf5\x9e\xdc\x13TM\xfe\xee\xb3\xde\xd3\x9e^Jn\xa0\x82\xa1\x8aD\xe9\xa3Hf\x83\xa6\x10\xe4\xa0\xd4\xc2\xb3\xcfb`\xdf\xc2\xd4)kC\xc7\x138J\x96\xbf\x07\xfej\xc5#\xf0\xef\xe0\xe9\xf84\xc0\xc4\xb8\x92\xa8\xcc\x18\x9c\x0dq\x06\xdd\xd8\xeaB\"\xe0N\x06br\x01\xb5*\xbc4pi\x80*W\xbf2s=`=\x86e\xb5<t\xb6\xcd@\xf1\"\xeb&0C\xaay ~X\x1b*\xed\x9emN\xd4\x04W\xa6e#\xa9/IUC/Hpj2:F\xec4\x99\xaf\xd9\x8e\x17$\xcd \xe8\x05 \x0d\x9c\xa3i$P4,2\xe7\xcaFY\xd0\xbb<\x1c$R\xe0\xa1\xd9\x01\xde=\x91.\xb5,\xb4X\xb0\xd5=;\x0bg#\xf3+\xf8P\x01\xd1\x0d\x19\xc7\xbdL\x11\x87\x97\xe2\xe7\xc8\xfa\x8d\x99\xb4\x05\xb6/\x95\x85}\xf7\x9f!\xce\xf0\x8b\xec]0}\xef`\x8c\x935W\xe2Y#\x7fX#v\xb8\x10\xa7\xe0@\xd2\xf5\x90}\xdf\x98\x17\x9c\x0c\xec\xf6\x00s\xa9u\xd9R\x85\xe6mDX\xa0\xc2\xd4N\x1a5^\xa8\x8d\xde\x86\x03\xbe\x0c2\xa7'\xb8\xb3\x9e\xa7\x07\xcd\xaf?\x82A\xc1\xf9\xefHT\x9b\xe0\xb8l\x84c\xee\x9c\xc9;\xbf+\x0fn\xa5\x83\xeb:\xd0\xc6\xaf\xf5\x95S\xeb\xf0\xc5L\x85mP\xe6\x1f\x0b\xca\\\xf0z2\x89G\xb3\x1e\xfcL\xb8?\xf3OB. \xb0\xca\x9f\x86q\xca{M\xd3\xd2y:\xea)\x92\xe0u\x18\xc7\xcc\xbc\x91\xcf$JD\x83\x19\x9f\x86~\xe2\x03\xc4\xc1\xcd5,v-\xd5\x83s\xaeE\x84\xc4\x934\x88\xa3\x11\xeb\x0d\x07\xf5(/\xea\xe1\xd14\x9eA4\x80d\xa0\xde\xe1\\\xfd\xd5\xbb\xcf7\x1f\x9a\xe8\xf8\xc1c\xc9 \xcd\xfch\xe6\x87q\x84\xa7\xe6TO\xd8\xaf\xe4\xbb\x1e[:t\xefz\x07\x17\xcb\xb07j\x98]8\x10\x8cX\xdau\x12\xe4\"\x9a\x16\x07!\xb1Qy\xacw\xf0\x14C\xbc3\xb8B\xa7\x0e=\x07\xd4\x15\x1b\x1b\xb3\xc9\x14m\xa7Q\x16\x8e(\xd2f\xa2\xbcT\x02\xb3u\n \xc8<\x96P\x16\x0dl\x84\xcb\xf5\x14N(\x07\xcc\xa9\xe2\xea\x96\xc7\xc0#\xfe\xb4R\xf5\x83f 9\xe0!_\xa2H\xa1L;,\xd2\x1a\xb1O\xadCz\xb8 p\x181\xdf1\xdc\xd4\x86\xc1\x94\xa3\xc9\xa0\xaf\xcc\\mB\x18q\x1a\x1a5\x08Y\xf5\x07\xc4ux\xf5\x1ex*\x97e\x8b$>\x072\x0e\xd6\xabN/\x8a3\xe6\xa7ip\x1a\xf1\x19\xcbb\xe6\xb3\x95\x9f\xf0(\xdb\xa0\xf8\x07\xf5\x9ci\xfe\x91\xe8^\xaa\xa7\xf4H\xa3 f\xec\x0d\xe7\x8e\xd6[IT#\xaf\xd2\x02\x8a\x80\xfa\x82\xc1P\x94\xd6\xf5\x9agE\x7f\x14{\xe9P\xbc\xa2zlT\xca\xc2f\x08\x9a\xd7uJ\xb4\x0d\x17\x0d<\xc4\xd0\xe0\x84\xcb\x95\xd7\x1d\xc1\xe7\xaa\x1c\xd1\xd3\xce$\xd3*\xfa\xac]d+~}pK\xc7\xc3\xce\x83\x07\xf2\x80\xdd$\xe8W\xdbyu\x80\xbd;\xbd\x11\xeb\xdd\xf1\x97\xab\xc75\xa2x\xb7wW\xe4\xfc,\x8f\xb3zV\xef.VZ\xc5\xa9\x91\xf5\x04\xb2B\xb3\xceS\xc88\xcd\x1ek\xc1\xfa\xda\x04\xe3\x16\xa9\xb8$^\x92\xb2\x01\xf1*\xc4=\xce\xf8N\xef\xc9\xd3\xbb\x18c\xa1U\xd8\xa6\x04\xccFP>\xe0\xd9\xca\x8e\x92\xd0\xad\x91G}\x08\xf1\xe3\n\xdc\xa5\x19\xc1\xa3\x1dwpx\xc6\xa3\xecp\x19d\x19O(o\x1f\xe6A:\x913\xbd\x08\x0cu\xb5x\"\xe7\xe1\xd0ub\x0f\xfc\x97\xc4\x837%\xc5\x14_\xbc\x0f\x89?N\x82\xacH\xdc\xdd}\x00\x89\x9f\xe5\xab\x90_\xc8\xa4]Hz\x97\xf8Q:\x8f\x93\xa5L\xdd\x83\xd4\xd7~\x9a\xbe[$q~\xba\x90\xe9\x0f!\x1de\xe2x\xb0\x8bu\x97\x1f\xc1\x8a\xb7\xe97\xce4\xdf]6\xc9yL\x9fF\xf9\xe0\\\x0d\x07U \xb8\xd5\x88D.j\x80\xd5\xd8\xca\xcfS\xae\xbd\x1a\xc7&\xfa\x93\x01I\x85\xa2r\x1f\x82\x16\x13\x9e\xe6\xcb\xca{\xe3\xa9,\x1a\xc4Q\xc1\x92\xc5`,\x08 \x89\x1fD=\x8f\x05\x90r\x1c\xa4o\xb3Y\x00r\xfcL\x1b\x18\x1e\x9e\xc1\x119\xd4\x12l\x9c\xc7r`\x88\xc4od\xdb<\x96\xd6\xa5xg\xd2Ztch\x83oN\x0e\xd6\x87\x8f\xf9r\xc7\xe5H\xc7\xbaA/\xed\xd0 y\xa9\x8d\x0ff<\xcd\x92\xf8\x12\x17\xb6\xfc\xd1\xf5\xb3!M\xb7\xc5\x16:u\\OZ\x02$\x830H3\x1e\xf1\xe4\xb9\xd8\x87\xa4\x13\xe1\x1e\x17\x9bi\xcfU\xfbk\x9d\xde\xd2_\x9cZ\xd1d\x19\x9f\xf1/\xe4wjsndj\xf3oV\xd5\xe7\xb9\x9eW\xce9Y\x13F$\x98%\xea\xabz\xae\xed\xab\xd3\xc6\xafN\xc9v\xcb\xdc\x86\x95\xa0\xc8-br\xa5\x9f\xf5\x14\x1d\xdb\xa7\x06\xb6O\x8b:\xd5\x14<\xca\x08\x02\x04gL\xaf\x95\x86\xbb\x10`\xa9\x89\xac\xf7\x04!I\xb3$\x98f=\x92\xaa\xdf\x1f\xba\x03\xbc\xadDZ\x08\xec\xb6z\x9c\xaf\xe3R\x81f\x9cD\xb3\x8d\xf6m\x8d\x15\xa6\x91\x9ci7E3Wg#\xdf]\xae\xb8d%\x9f\xfb\x91\xe0&\xc5>\xc3|6\x0d\xfd4e~\xca\xfc\xe2K\xc4\xb9\xf0C\xe9\x86\x1b\x19\x9e\x05\xf7g\xd2LK\xa6d~\x10VS\xe4y`\xdf\xea\\\x99i\xbb\xbc\xe9E\xaa\x99QS\xbc\xad\xe5h\xe9g\xbe\xd5;Y\xc4/2\x94G\x99\xe34y3}(O\xc1\x16\xa9\x18.\x88}@Q>\xaa@%\xab\x82$\xf3\x98\x8c\x01\x80\xcdT\xa1\xe1U\xc6\x9eG \xfc\xfe\xf8\xc3/\xfa\xdb\x05\x062\x06\x89\x06 \x10\x06\xebc\xac!\xc6:c6Fl#\xf0R\x00V\xb6\xdat`\xe5\xeaH#z4\x10\x10\xa1\xcf3\x12\x01\x87\xc6\x10\x0f\xaa\x03\xaa\xe1x}\xca\x8b/ \xf0\x16\x91A\x949\x05a\xce\xde\x04\x11\x15\xf5\xae\x11\"M\xbdkY\x81\xd5\xaf\xfd4\x0e\xda\x1d\xb8#\xfc\xf7\xeb\xf0\x97\xd0\xa3|\xe6Tn4\x15\x9d\xc5kM=\x14\xc7\xc3\xacHoH\x02n\x8f]\x16\xb1\xfe>\xe8\xc03\xcb\x9c\xd1f\"5\xf8\xc5\xd1\xd4o_D\xcdcJ\x06~\x18\xc6Sg\xcbb\x8an`LQ\xb3\x0d\xedJ\xc8\xc0\xb19F\xb3)\xf9\xbd\xaf\xa2\xd4\x9fs\x87\xb3\xa7O\x9f\x82x\xd2\xaf\x82/\x17\xd3\xf9\x98\xf9\x8f]\x00\x9c\x0f\xdf@\xa8\x06x\xa3>\xf7@\x97\xb6\xbaD\x9b\x1fQ\xa5\xaf\nV\x0c||\x04\xba\x0d\xc4\x81\x01\xe2\"\xe1\x83`\xb5d\xf4\xb7 JW|\x9aU~\x0c\xa6y\x9a\xc5K \x13\xa5t\xa6\x98\xa0q\xbd\xe0\xa4 \xd9\xd5j.*\x11r5\x1c\xd6\x88YI\x8e\xe5\xf2\xa6(\xae]\xfa,to\xa0/\xd2\xc6k=rw6H\xa2\xb6\xef\xea\xeeN+nH\x8eD=\xb0\xefC0\xcb\x17\xcb%\x9f\x05~f\x95jH\x05\x0d\x1a\x19I\xbf3\xe6}7\xfd \xe1\xa2\xbb=\x7f\xda\xa0\x9baRw\xc3\x07\xb3x\n\x922{\xb9Uitt\xca\xb3\xd7\nI^\x81R\x83\xcc\xb0\xba\xb0\x12M\xad\xc0\x92D\xc0\xe4]\xb0\xe4q\x9e\xc9\xe8\x88\xdc+\xfd\x1c\xac\x92x\xca\xd3t\xd2\x835\xfc\xf3\x0fEpIy!x \x0b\xa0\xb1m\x1b\x1dQ\x8f\xa6\x07j\xa4\xdc\xfa\xb3p\x88\x0b_\xea\xb1 \xb8\xd8HG\x9d\xa6O\x80\x12u\xb0\x8a\xd3\xecK\xe9@M\x9c6\xf9 X\x8a%\xf9v\x9a\x04\xab\xccj\xef\xa3\x1eE\xc47\xb6\x9a\xa5\x88LJ\x12\x05\xb3nu\xd1\xa6?\x05\xf3W\x94o\xdb\xf4\xeaOF\xeb\x10\xf4\x07\xf7\x86\x12\x02N\xaf\xe7\xb1\xde'=y\xaa(?\x1c\xd5o\xd9UZ\xa1g\xc2qA\"%\x9b~\xbe\xf0\xa3\x88\x838\xdb\x01{J~\xce\xaaY\xee@\xc0}H\x0f\xb8\x11\xb9\x16\x0e\x07\nn\x93y\xae\x81\xa7\x01tb\xbb\x02\x14\x0b\x16\x82l\x0c\x16b/\x8e\x12\xee\xcf.\xd3\xcc\xcf\xf8t\xe1G\xa7\x1c|\xdd\xcc\x07\xd3\x84\xfb\x19\x97\xa2w\xa7\x97\x02R\xf5\x04`\xc0\x8eq^\x90\x00Yd\x9d\xae*\xd4\xb3~\xc5\x8e`\xd9\xc0\xec\xf1:\xe8%E\xbdt+\xc8d\xc5\xf2d\xfc|\x11\x8430s\xced\x9e\x1d\x8fD-\x94m\xabZv\xc0w\x87SI\xed\x9c\x85\xc7\xb6\x8c\x1bF\xea\x11\xa4\x03\xc43=}\xcf\xf8\xa1\xd8\xed\xe0\x16P\xe2G\xb3x\xe9\xc8@\xb5\xc8m\x14=h4a\xcc\x06i\x9c'S.ob\x08\x8c\xd1\x83sI\x1b\xa5\x812\xe9\x93|\x172%A4\xe3\x17\xaf\xe6\x8e\x0f\x02\xbd\x85\xd3\x97\xe9\xa0pq\x14\xd3b3q\x14\xeb\xd8\x9f\xcd@\xd8\xaad\x14\xb0*\xeb\x89NO.\xba\x1el\x7f\x1bC\x10\xfc\x0e\xfc,\xf3\xa7\x0b(\xe9\xf4\x8a\x85)\x052Ig\x00T\x89\x8c/XX\xa43\x96\xf9\xf5p\x93*&\xa1\xf3\\kR\xb5\x8d\x9a\x19/\x97DGy7q\x80\xd1\xe6MF\x7f\x156\xbd48.\x14\\\xea\x10\xb1 \x11\x0f#\xe4>#\xf6DwM\xd0\xef\xbb\xca\x97@Qo\x0c\xaaA\x8b\xdd>\xd3\xec\xbe\x9aW\xa1\xd8\x8fO\xfc\xe9\xfbF_\xe3\xe2\xf1\x93\xd3\x942\xb8S\x0fq\xacU\x8f\xdc\x86\xc2q:A\x01w\xe2\xa4\xae\xc7\xd2~\xdf\x86p+<\xa2\xe9sG\x1c\xa4\x1b\x8c\x08f\x0d\x16%\x18\x947\xac\xdfhd-M6\x18\xa9\x80t\xd4\xa5\x88\x04\x0d\x94\x86\xe88L#\xca!\x19\xebV=p\x85\xad\x8d\xc8N ?|\xf5'K.;p\x02\x1b\x1dW\x8f\xfe\xa8\x81\xa0RW\xa0Y;\x83\xa3\x9e\x04\xea \xack\xee\xbdz\x94\x91u\xd2\"\xbb\xa0\x1e0\xbc\xde\xb2\x1b\xdfRO\xa3\x01%\xf5\xb4\x98i\xd7\x1f\xe8\xd3p\xdd>%\xe3-\xeajw\xd3s\x9d~m_\xa7_\x1eK\xc6\xc3\xef\xa3w;\xd7\xef\x9d\xf8\xbb\xfd\x91\xfb\xd8j\xebM=\xa0\xb0\x0fA\xe4@\xd8{P\x0f\xcdQWJ\xd8\x98\xa3\xa2\x00\x9b\x07\x91\x1f\x86]\xe8\xc3\x0c\xd8\xb9i\x87\xf3\x825\xb7\xab\xe1oM\xb6\xe7\xf4\x8a\x98\x05:/\x94\xf2p^^aW\xf7W\xb3E\x90\xc2\x0d\xd7\x11\x14\xd0\x94\xc0\xba\x11\xc0\x0e\xec\xc5v[\x80\xee\xd7\xa2\x8a\xed\xc3B6\xed\xc4\x17\xadV\x06a<\xf5\xc3\xb7Y\x9c\xf8\xa7\xbc9\xe6\xda\xd4\x07\x02\xd8\xe6\x15\xa45\xda\x19\xd3U\xca\x95\xef7\xc6^\x97>#\xc0\x9c\xac\x97%9\xc7\xc3?\x9e\xfb\x9d\xc8\x1dd\xf1\x17\xf19O\x9e\xfb\x84\x06Y\xff\xd5\xf9^\x1fS\x97a\x9c^\x14\x7f\xc6W \x9f\x82\xe9ZO\xbb\x97g\xf6Wi\x9b(\xd7\xaa\xf5\x9b\x82M\x1b\xfe\x06ycS/\x119=\xd0\x10\xd5\xbaV7>\xb29\xf7f`\x90\xd0\xcb\x12\x7f\xca+M\xb0\x036\x8d\xa34\x0e\xf9\x002\x1d\xf0w\xa4\x92\xce\xfd$B7\xe0\xb0\xf7w\\SL\x17\x17 \xa9\xc9@%UZb\xb5\xadC\xebR\xea\xb4\x86hA\\\xc5\xf9N\x99\\j\x0cw\x86\x96+\xe5[\xbbd\x00\x98\xc0\\\x1f\xa8\xdc\x03\xc2\xa0\xe9\xf7\x82\x12\x890v\x98\xe1N\xbb4%!\x02\xe8\x8b'\x1e\x04\xd1\x82'A&\x1d\xc1\x0c\xc1\xd2C\xa59\x01\x9a\x99\x04\x9a`\xfd8\xd3\x8cF\x9a\xa0\xc5\x007\xf0\x94\xdc\xea/\xa4\xc1\xb6&r\x86\x8f\x1et\x9a\x9fj\xad\xdd\xebT\x1a>\xba\xef\x96f1\xd7\xac\xaf\x19\xd0ti\xa1M\xe3\xbc3\xa4\x02\xe8\x8bt\x8bK\x82\xbd\xf6[\xea\xf5\x89\x92\xaa\x08\xbc\xac]\x1e\xe0\x0c^H\xa2\x9b?\x88\xe2d\xe9\x87\xc17<\x81k\xa9\xa0\x96s2\xed\x8678.+\x95\x0d\xa5G\x0c\x7f\xe0\xa7\x97\xd1\xd4E\xcf\x04\xfe`\x95\x04\xcb \x0b\xce\xc4\xd6\xa7\x8c`\xd8A\xf5\x13p\xb1z\x0b\x0e\xeb\x19\\\xb3\xc0\xaaF\x89m\x17<\x7f\x8f\xea\xb5\xb5vE\xb1\x1d\x17bQU\x13\xf70Q\xbc>\x84f\x8a\xae\x82\xe5\x8f\xb3\xb7\xf5\xc8\x95Q\x8d\x96\x8146r\xf6\x86\xa0\x9f\x19\xcc\x82t\x15\x97\x89\xbb\x90\xb8\xf4/\x9e\x9d\x16i{*M&lc\xcd\x84\xcf\xc1@\x85'*}[\xac8\x81(\xfe\x9a\xab\xa6\x0d\x91v\xf7(D\x02\xa1\x8f\x7f\x92\x9a\xa8\x049\xf30\xd6\x1dbwC'\xa5>J_\xfa/\xd1_\x05\xba\xe8\x00,\x11Get\xa7\nN?\xee\xdcaA\xfay\x10\x05\xe0\xa2\x1a\x1c\x0dq\xf0\xf2\xe1\xc4\xd2\xdfP\x9bQG'0\xd4\x88\xc3\xde\xb6\x0b\x82[\x18c\x1a\x9cF0\xf5\xbb{;\x9d\x88F\xfb'\xac\xfb\xb3Re\x15\x1f&\x17\x18m6\x05h/\x0d\xe0\x9c!z\xa5\xdbT\xbf7\xb7\xb7\xd6u\xe7\xb1\xc60\xec\xb6\x99\xdadz\xe5\x8c\x03Q\xd0=\xb2pi:\x81>pn\xa3\x9f%b?\xa0\xbd\xd2\x0e\xef\xd7\xfd\xdaH\x02Y\xf7\x98$\x03V\xee\xd1\x01+\x05\x9dm\x86\x0e\xe3\xb4\xb3\x81\x08oCUgX\xec\xe5\xe8\x10\x03n^I\x97\n\x15\x9a\xebjtG\xd1\x1b\xc2\"\xfc\xd5J|<ew\xa1\xf4]\xe6G3vW\x16\xbf\xcb\xa6h\xe4s\xc2Y\x9e\x82\xc5\xf8)\xcf\x16<\xa9\xcb\xcb\xd5e\x8d\x8ak^=n\xe0\x92/\xe3\xe0\x1b\x0c\x1c\x08\xaa\xa3h0\x8f\x13\xb0\xc3\xcd\xd8\x08\x9d.\xe5N\xe97\"+\xde\xa2r\x18\x81$\xfax7\xcc\x17M\xa7h\xb1\x15\x0b&\xa3\x95\x87\x8e\xc6\xd9\x04\x8c\x05\x1d\xf1\xe6\xb1\xd0\xb8R\xf4\x01\xcd*\x8fWI<\x0fB\x9e\x1c\x1f\xa3q\xa1\x9e\xe2\x84p#&_\xcd\xfc\x8c\x1fFgp\x9bz\xa0\x06x+\x8b\xa7\x15)\x8d\xe8\xaa\x02'\x95\xb0V\xe3\xb3N\x82hfb)QPL\x95\x89\xb6\xbaW\xe1JfJ9f^\xc9y\x7f\x91\x1eF\xf9\x92'\xfeI\xc8\xdb\x08B7/&\xe4e(\x01\xa4)^N+\xf1~\xdb\xe2\xc2aU)\xb5\xd3p\xbc+WS\xecD\xe8\xfd+\x94\x07\xfe\xdc\x11\xb8\x06z\xe1\xe9 \x8d\x93\x8c\x8e\xcc\xb0\x02\xbf\x9c\x80\xfc+\x98\xeeQ\xe96\xa9E\xe6>\x1d\xf3 l\xe8\xca\x9f\xf4\xb4\xe6\xce\xa8\xe5\xcc\x9bbEt\xd8z\xa0\xda =6\xf7X4\xe6\x13\x88\xe9\x81Nx\xc8K\xe5\xb6\xe3\xea\xad\xe0\xf2\xae%\x16\xe0\xce\x90\xf6K9\xbco\x89 \xfcp\xcf\x1d,y\xb6\x88g)Ejw\x0d\xff\xc0\xa9\xe4\xec\xeaG\xa8\x90^\x0cp,\xac\x96\x9cv]6\xf3re\xa0\xa6\xb1\x9a\xad\xd9(\xa0(G\x12\xcb\x80\xd7\x86\x82!1\xe3\x9a\xdf\x80\x05\xa4\xf2e\x90uXX\xc4Q\n\xec\xbb=vVD*\xf5\xd8\x89\xc7\x8e!\xc8\xec\xa1\xc7.0\x9a\x96\xc7\xde{\xec\x99\xc7^y\x10tk\x0e\xe7/\x9a\xe2c\x00\x11y\xa1\x14i\xb9\xdc\xbd\x0b\xf14\xee\xd6\\#\xe8\x1aW-\x10\xff\x02\x9cu\xea\xc9\xae\x07Qq.\x06\xa7<\xf3 \xf2\xcd\xc5 \x15\xaf\x97\xf0\x8a\x9a\x0d\x0f\x02\xd9\\\xa0\x06\xc5\xf5J\xc1\xcc \xe1i\x1c\x9e\xf1$\x85\xe6_\xc9\xad\xa5H\x15\x8b\xfa\x19SA\xf3\xed\"-Vn\xc0\xd2\xb4\xaa\xa0 &\xf9\x10\x1b\xf2+\xf8\x1e\xf8\xbeq\x02\xb7\xec\xd2>n\xd2K\x91\x08\x8aIb\x9b|-f\xab8\x89C\xe0]_Z&\x9f\xf2\xac\x07\xab6@s<\xd7c\xaf\xc9\xe8%\xa2\x0f\xe8tO\xf0LAi\x808-\xe8 \x9e\xe2\x83\xf1\xd6DP\x80\xb0\x9e\xae\xfa\xbc\x8f\x9e\xa1\xecB!bd\x8a\xb7H\x9c\xde\xf3 \x99\xe6\xa1\x9f\xb0 :\x8b\xa54\xc7c\xbd\xe7/\xde<\xff\xea\x8bgo\x8e_\xbc\xfc\xd1\xab\xe7\xcf\xde\xbdx\xf5\xd2\xa6x\x17\xad\x9e:\x01!\x8bA\xa5\x92\xe8C\x03\x18o\xa9'r6^\xa3J2\xf6\xd8s}^R5/R\x89/\xf8\x90*\xfd\xf4\xd8\x99[x\x15\x14\xeb\xa3Q\xe0\x06\xc7gzV-C\xc5\xbb\x02\x8dh\xa3\xae\x13\x14\xa8[\xe2\x90\xc5\xaa\x10\xf4m:\xb2\x97xT\xc7\x97Rf\xc6F5$s=\x1b\x9a\x17\x9d\xbe\xe5IB\x93\x000\x19&\xa6\xa9\xb8C\x8eV\xad\xa6'l\xdd\x93\xfa\xed\x92\x02\xfd\x8e'lyRT\x0c\xab\xd0\n\xa6\xb8qZ\xe3*5\xa0\xfc\xda\xc12\xbd)5h\xe8\xdc-O\xdf8\x16k,\"'/V\xf3\x16U\x82\xf21\\c>\xa9\xfc\x8f\x93\xe04\x88\xfc\x90T\xf8+n}\xc4\x9e\x99\x99\x92\xd5\x7f \xde\x83`\xb7W?\xcd\xb2\xa7<\xebr\x15T\x0e\xf2U\xc1\xe8\xbdr\xb8\x0b\xbb\xdc\x01[\xa2\xb3\x07\x89\x14\\L\x86I\xf5\xcc//\xfct\x8d/[\xe6\x91r\x12o~\n\xf7\xdb._\xb3\x900\x86\xfd\xa5{\xc00\xaa\xfa\x9d;\xec\x12-\xa5\xd8>{\x0d\xbc\xaa\xb4`\xc0\x1f\xefu\xb4\xc0\x9c\x1e\x86\xa8\xa3\x1cE\x99\x83\x006a\xd4\xae\xf2P\xa2\x15\"N(\x83\x80\xc8w\xee\xb0\x13q\xe6\xd3X#\xaf\xe8\x18|\xa5\xd7\x15\xb0q4j?\xb52M\xa0#\x16\x7f!\x10y\x0bz\x0f6\x02\x1b\xac2\xf9y\x91,\xa1TZRA\xfcW\xf0\xe41\xab\x08\xf5i\xdf\x15f\x7f\xc5\x18Glaf\x14\x87\xe1\x0e\x00\xe6\xc8\xd9\xca\xe5i~\xb6\xbe\xbc\x8fMV\xcd~\x95\x05-\x8b\x1a\x883.A8\xe5\xe1\xf1\xae\xe4d2\xe0d\"\xe4\xd1\xfc2\xc6]\xbdC\xeb\xec\xe9\x85\xa8[\xb6&7\xbfj\x93\xacmi\x11\xe4\xa3\xdcTp\x17\xf1\xcb\x00}\xf5\xfe\x9e\x83\x14\xbd\x95\xf5\xe0\xad\xb0\x93\xdd(\x87.\xf7\xdc\x91\xda\xef4\xb0r9k\x02\xa0%u\x8b\xb0\xb3bE\x9b\x82\x97\xc3\x8f\xd6O\x1f\x82\xd8K\xd8\x93\xdd-\xb1\xa0\xa1\xe3\x1210\xe6\xbe\xd9\xff\x95\xf3\xcc#\xfa\xac\x0b\xbfF,\x00\xd7UV\x12\x1b8\xc7D\xae\xa4]\x81\xe3\xab\xd3\x8e\xf9\x15\xd8\x89\x02\xe7\x9c\xca\x83\xbd\"p\x0e\xcd>\xfbE\xca\xad\x1c\xf1w\x86T \x10q$\xb7h\x99\xea\xe2-\xb1\x97\x83`r0\xf5WY\x9e\xf0\xb7\x99?}\xff.\xf1\xa7\x9a(\xa9\xe2\xab\xa3U#\x15I{D\x94wR\xd1n\xf3\x8aphH\x88\x90\xd2\x9a\x90\x89<\x0b\x07N*\xddm\xe5\xb8\xa9I\x8f\xa4\xca\xa9=hdR\x19\xd50\xc2\x9b\xb8\x81*\x1b\x0d\xa6\xf1L\xe0^\x0eWu \x08D\x84\x8c\xea\x9a\x0e\xa8\xd7\x90\xc7\x93j\x05\xdc\x81\xa5\x90\x02}\x85t\xd7.H\xf7n\x0e\xed\x15e\x1e\xc7#\xd6K\xfcozu\x1ae\x96=\x11\x18\xdf\x9b\x9d\xfb\x1d\xcaf\xc97\x97#\xd6\x13\xffz\x06\x8a\xf3\xc1<\x8eY\x9f\xf1\xc1\x89\x9f\xc0\x7fQ\x0eh\x83\xe8\xca\xec\xdc\x87z\xb7,\xb8\xdd5\xa2B5Hn\xd7\x08\x9c`\xd1\x10\x94\x17q\x02\xc3\xe4\xd6c\xdb5\xbe\x1blu\xb9.\xe9\x04n\xb4b\xa4M\x8a\x1a\xedV<|\x9c@\xfc\xd1qBX\x9b\xb6\x9a\xecD\xe8\xac@\xac\xebV\xf3\x0bd\xf8\x87\x8f\x99\xcf\x9e\xb0\xf41\xeb\xf7}y\x85\xadX\xa0\xfe\xc4\xc3\xf8\xd4\xca=Q\xee\x9a\xea\x13\xcd5KT\xe8EHL\xff\x18\xaa\xc3\x87CT\x1dj\"vT\x1e>\xdc\xfe\xd8\xcaCz\x12\x15\x8f\xa1\xf9\x96\xed\x15Z\xf5\x1ex[\xac\xceC\xe3\xa4\xd26X\xb7-P\xa6\x94#\xda\x00\xda\x96S\xbd\xe3\xb2\xd31x\xc3-\xe6\x06\x8fg\xeb\x1a\x9f\\\xab\xef\x04\xc5\x94\x9f\x18\x91\x97\xa6\xf0\x16\xda\xc8\x98\x9ak\x0e\x1c\x86}\xe7\x0e\x8b\xc7J11\x11\xebr\xdd\x10\xb9\xed\xa8)\xd0\xfc\x01\xe2\xbf\xbc.W\xb9s\x9b\xf9A\xa4V\xc3\xee\x0dV\x83\x82\xb6N\xe6\xd7\\+M{]R\xf6Ulz\x1b\xcae\x88Ju`\xf7R\xbe\xeb\xeby\xf38\xee\xdd\x8e\xaa]\x0d\xd3\x00\xa5\xbc\x0es]l\xa8\x1d\x11+\xcae\xf6\xf46\xf5\xef\xb5\xeb\xa4\x9er\xc8N\xe9\x80\xe6\xb4^t\xd5Y\x953\xeb\xaa\xcaY4\xabr\xce,\xaa\x9c\xda\xe7\x96]5>\xa7\xed\xc1n\xab\x15.I\x8a1\x8d\xa3yp\x9a\x83\xf6\x95\xa6\x1a\xbc\xd0\xce\xd2\xae\xaf\x95\xa7\xa4&\xba\x92\x1b\xdf\x164*i\xe3V\x98\xe2X\xac\x87\xb69\x185\x9c\xea\xb8\xd7;>\xe6\x1c\x0c\x07\x0e4\x07s\x90&\xcer\"\xe9rp\xe6\x87\xb9\xe0h\x16J\"sV\xab\xed\xb1K\xd7\xd3\n\xcab\xd1\x98O\xd8\x01\xe5t]\xe6\x88\x7f\xe8\xb1\x0d\xacO!u\x9f\x8dQ\x9b\x9aM\xca$\xe9\xad\xa3\n\xb1\x1a\x8d\x8f\xa6|\x04\x94\xbe\x1b\x94<\xdd'\x98z*\x80\x8a\x95[>c\xb9F]\xee(J5u\x8c5\xe0*\x992\xdah\xb7\x8a\x05\x07;\x02\xba\xaf\xa2i\xe1\xd4\xe7\xf8\xb8#(\xe6\xf3\x11\xf0\xbe]!!\x89\x04-\xe7F`l\xd0hS\xf1\xa7@\xd7\x97q\x80J\xc4r\xc7|\xd2\xa1\x9e\x896\xe8`T\xd46!\xc6\x14\xeb\x1d\xe0\xed71y\xc98\x98\x08\x1e6pY\\\xfa\xe5\x8d)\xb8b\xae`\x94\xb7\x95s*%\xd2\x97(\x98\x8c\x03i%7\x14\x88\x99\x0c\xd2\x15\xdc|\x0c<6\xa4\xee\xee\x81*-)?\x9b4~V\x8ac\xa3&\xeb\xf8\xb6iG \xa2\xdfzG\xf1\xac\xf0j\xd18\xef\x16:!\xb6\xe3\xb8:\xa1\xf6\x19\xa1\xe7\xb1\xd9\x19<\xccbD(\xc9d\xac6-\xde\n\xdew\xcc\xf0\xc8\x92\xb1',\x12\xd3\x9d\xb9,\x18g\"\xb3z\xd91k\xb8\x08\x07\x1f\x8d\xc1\x81\x05^h\x95\xedn=\x06\xc2\x1b\x8b\xca\xd8\xb4\\\xc5I\xa9\xc9!\x1b\x95\xbaTu\xa3\xac>\x96&\x00t\xb9\xb55+\x88\x0b\xe8\xa9\xec\x03c\xedw\x8b\xba\xdc\xc6\xaa~\xaf\xc6\xb0\xdc\xfc\xeb-\xb7\xad\x9a\xbe\xeeU\x84G7\xebK\xa7[U\xbf\x10\xfc\x14\xcf\xaa\x06\x05\x1b\xe6\xfd\x80\xfe\xf5\x81\xf2\xc6,8\x8b\xa9S\x17z\xe2^:u\xe2z\xba\xd8X\xa6N\xe0R\x84g\xea\xe8\xe6\xd0hG\xb8t~\xfe\x01\x85q:{\xdc\xec\xf5G\x19\x8bi\xa1*\x17N\x88\xce\x88\x8bSc5T\xa4\xc72e\xb4\xc4\xf6Y\xfe\x03vS\x8eY\x9e\xa3\xea\xb1~\x1b\x04\xab\x04\xdb,\xf88\xd2=q\xf9\xbdf\xe7\x01\x1a\xdd\x1f,\xfdU\xbb#hU\x81\x1d\xb0\xcc\xe1\xe3\x08T\xcf\xe2\x7f\x15%\\\xe9|\xc9\xc9+Zi\xf3\n\xff\x07o\xbdc\x0d\xc8\xbd@\xe0\xd516O O\xc5\xbe\xa1Zq\x05\xd7u\x12D\xb3\xf6P\xb6\xddg\x16\x8f=\x8f(S9\x9c\xa8 \x85\xff\xd7<\xd5\xc5(\xda\xe0\x10\xce\xfdv\xba\xdd\xe9 \xadD\xcb\xc8\x98\xe2H\xe6I\\\x0b\xc8\xd5t\xdcF\xff\xed\xe0]\x00\xe6p\x0c\x82d\x0fe\xc4\x13\xd7c\x9f\xc6q\xc8\xfd\xc8\x01V&+}.C\x01\xd4\x05\x81]\xf4m\x8cY\x13\xe4<\xdav\x07A\xc6\x13?\x8big\x8e\xc6\\\xca%\xfa\xc8fAN\x1a\x90\x1bK7\xa5\xe5\xc9!\xbd\xfe\xa7\xf2\x9bur1\xaf\xe3U\xa7c\xb5yX\x9e\xdd\xc6a\x94\xc8\xd7\x0f\xa3f.\x1c\xe6\x08\x1f\x8c\x1f\xac'\xf9\xeaQ}\xddET\xb2\xa5V\x13\xcaV]\xd2\xdbF]\x128Z*%\xf3)J\xe6C\xe7B\x06\x08\xbf\x90\x0e\x12\x99t\x19\x0eh\x0e\x13'R\x02\xf4\xf8\xec\x16\xbe\xf2\xaa\x8d[\xfc1\xc0 \xe8\xc2zF\x9c3y\x89F\xaeN4\xf7tN\xb5\x10\xc5\x82\xa4 \x16\xc9\xdb\xdb\xf2\xc2\x9e8\x9f;\xcb\n\xc71t!b\xd9>\xe3p\x19}i\xe1\x86\xf0T'\xbe\xda\xc2\x85W[\xaft\xaa\xe2f\xe4T\xb05\x91\xcb\x96h\xcc\xc7I\x0bJ\xf5\xc8\x91.\xc9\x02\xe6\xa5R3e !\x03\x7f`/\x040\x9f\x1bzdf*'\x9cs\xe8n2\xb1\xc2\x02\xe0p\x02f\xae\xe7\xf2J*\x1a\xd2\x08\x82\xa9\xe0#\x0e\xc8\xe2l~\x02\xce\xc5\x9c\x128\x1b\xc7\x83Y\x1c\xf1\xc7.(\xe0/\xd8\x81b\xe2\xd0\x1a\xf8\x18%&\xd2\x90\xbd\xf8%\xf6ogVHS\x0e=\xb6p\x96\xb02fp\xddJ\x82\xf9\xb0\xfe\xd1~\xdf\x125K\xcc\x1c\x11\"\xa84\xf7\x9c6`\x03@\xe0\xb4\x123\xdb\x1c=\x8c\xd7\x03\xb9]\x0d'\x0e%B\xc8Py\"GZ%\xed\xb3\xc3\xc1t\xe1'\xcf\xe3\x19\x7f\x969[\xae\xcb\x9e\xee\xb3\x07\x0f\xb6\x1f\xed\x82\xc5\x12{\xb2\xcf\x1e\xec\xee\x0c\x1fA\xf9Cp:9\xee\xf7\xa3\x89\xb4g0\xc0y(\xedG\x0e\xad <+Ax&A\xd8\xef\x9f\xd9\x81v\xd6\x82\x8e\x1a:\x89=\xf0\xd4D\xb8\x02z\xbe\xa3\xad\x9d\x1a\x00\x9dS\x97^P\xe40%4\x15o\xd7\x1d_H~\x00\xbb2\xab\xc8\xee<\xb6,/\x89B\x8c\x90\xa2\xe6\x0d\xf6\xf5\x9a\x96\xe2\xd1\x8e\xd4R\\.O\xe2\x10U\x12\x8f\xee\xdf\x82J\xa2v\xc2)\xf48\xb5-\x1e>[\x91\xc3\xb6\xe9vH\xbe\xcb\xdcb\xc8{(8J\xcd\xf9Bm\xf7`\xfb\xb2\x88\xd3\xcbx\x9a\xc9\xee\xd5\x8d:i\xf5\xa22o\xac\x9b>\xddD\x89\xa8\x97\xd9H\xc6\x95Q\x14,\xd9\x04\x953F~\x16\xbfV\xdaM(B\x95\xc0N\xbf\xf3O'\xb7\xc74\xea\xba\x0e\x8b\x8aC!_\xfdZL\xd8\xac\x90\x98v\xd54\xcc\xbbi.V\x84B\xc2d\xfa\xc2\xfa\xed\x90\x1az\xed\x1b\xe8U;\x97\x14X\xb5\x06\x1a%\x8e+=\xda6i\xa5\xeb\xeaf&\xe7`\x81\x9b\x80\xb3(\xbb\xef50}57\xbb \x92\xc0\xc5\x98c\xac?\x8c\xa1<y\xec\xb2~?!\xc9\x17\x14\xddg\xb2\xe8DE^uV(w\xe9\xfd\xea\xaf\x82w5\x8f\xe5\x83\xd3T\xf2N\xcdg\xd2\xd2^\x02[BaK\xe6\xb1\x1c\xf9E\xc8\x19\xd6\x8f\xab\x15\xa3w\xdd\x93m\xd0\xc8\xf4\xc2\x85\x00\xc3k\x04\xed\x14^\x12\xca e\x10i\x88i>q-wF\xe3\xca)\xb4z\x98\x8f\xbb\\\x8f5\x89[\xbd\xb3\xfc\xd6:\xeb\xc3\xcdrP\x04\x01\xf4CG\xf3j!\xc5h\xda^\x0b\x01\x1a{\xa5\x15\xa1\xe0B\xa6ND[ \xce8\xfa\xa2\x0c\xe2\xe8\xf8x\xc4r\xf0/\x9aQ\xe6|\xc7\x91\xbf\xe4e\x993\xa7n\x02\xfd\xa1*\x1f\x99:q\xfd\x93\xf38\x11\xd5\x9b\xb1L\x0ez\x86\x8a0\xf87\xc2\x7f\xfb,v\n\x8anHE*\xbf\xdf\xf3\xcb\xcf\xbb|\xccb:\x0e\x8b/cA\xc4R`jgv!\xfel\x9cM\xd0\xd6\xb9\xd4\xdc4vm\xe1\xa7/$\x96(X&\xa8\x06\xd1r\xd0\xa2\xaf\xa7\xa5\x18\x01\xd3\x83\xf49\xc8\xaa\xde\xaeT\xc8\x97Zsf\x01\xd9\xaa\x99a6.\xf7\xb1z\x932Y5$\x7f\x1a\xd5\x97\x82\x1c\xd6\xeaB\x9a\xac\x08\xefF-\x19\x19\xa9VO\xc5N\xc2\x9a\xf2\x97Q7\xe5~b|\x12\x13eM\xfcaV\\\xf1i\xc0\xd3zMLUU\xf1\x17Q7\x0c2\xa3f\x18dE\xbd0\xc8\x8cZ\x1a\x0fP\xab\xab\xe5\xc8\x16\xb4\x14\xa2\x9d\x82S0\xda)r\x8av\x8a\x14\xa3\x9d<J\xa7\xf1J\xa0A\x1d\nZ\x8elGK\xa9\xd8\x91\x00\x89\xd1\xa8R}\xe5kDN|\xa3.>W\xddS\xdfoT!\xeb\xc2_E\x95j+\xae\xd6\xb1\xd8\xde1\xfd\xcb]\xbe\xaa\xc8\xb7\x031\xdcQ\xf01\xa8\x91Q\xd6g=\xd70 \xad\xfc\x863\xc5\xaby\xd7\xaf\xa6\xb5\x98Z\xcc\x1c\xe5\xbc:\xcaXG&\xaf\x0d\xac\xea\xfa\x89\xfc\x0e-\x1e\x95\x8cw-B<8\xc8(0\xce\xd1;E\xf7\xaa@D\xe8\xd5\xb4\xe7)\x98\xf6\xb0B\xd0^!\xae8\xe3\xafp\xcct\x13UHPM\x94l\xf9M\x1cj\xe9\x02\xda\xdd\xb5=\x19\xa1\xdf3\x108P\x9c\x03\xba\xf6/\xf8\x06\xfa\x1c$'\xeb\xd6\x8dG[E\xfc\x1b\x1bx\xd9\x87D\x93\xab+\x91\xaf\xc7*\xc0\xb2o\x8b\xb2\xe0\xc6\xb4\x1e\xca\xe0\xce\x1dV-2\xae\x16\xaa\xce\xfcm\x0cYM\xa0a\x12\xa5>U]\xc6`K\x81\x12\x88.\xcb\xb8\x10\xc0V\x17\xb2\xe3\xae\x8d*Uk9\xee\x02x\xe2_,\x04\"gg\xb8}\xed\xa1\xd8\xdd\x06\xfdR\x0d\xb2\x12\xf2|\xbd\x01\xa6\x86CqX\x18\x88\xe6\xa6)\x88\xf2\xcf\xa1\x1d)\xb0o\xa2R\x0d&\xee\xedY\xcc\x9e\xe9^`\xd6\x1d*\xc1N7O\xef\x01\xb1XR\x9e\x91\xd7g\xe1\xaeQ-\xea\x9d8\x12\xd1\x91\xa4\xa0t\xe2\xf0\xc1)'.\xd3i\x01R\x07)\x071a\x06/\xfbP'\xe5\x10\x9d\\\xdenC\x15\xa0\xfa\x81%\xf0\x07\xdc9\x93\x01\x8f\xb0\x90\n~$\xca\xe0\xad)\x88\xd1\x0d\xfd\x94\x1f\xc8\xd0\xc1Dv;\x14k\x8d\x89)\x04 J\xdej\x1eb\xb5\xa0\xff\xbd\xff\xbeW\xcd\x97\x87\xa2\xfd\xf2\xd20\xc8e'\xeec\xb6\xb9\x99@D\x9f\xfe>\xeb\xfdw V\x00q4\x89 \xd9\xf77j\xb5\x19\xea\xf7%Ik\xbfB\xd8\x12\x95\xc3\xcb\xf0\xd6`\x82\xf2{A\x02\xb8\x18h\xac\xc2<\xe1@\xb3q\xbf\x9f48\xf61\xd0\xb5\xcb>Q\x8b'\x7f\xcb\x17\x18\x86\x86\n8\xae\x8b\xf8Z\x00mc\x1f ]i\x06*)3=\x82\xd3\xbc\xdd\xc5\x8beA7\x9f\xe6\x99f\xc2JwG=\x01\xd8\x8bZ\xb3}\xeb\"QOPD\xdf\xf2\x8b\x15\x13\x8c}\xb8\xba Fe\xaf%>-J\xda\x06\xc0\x14>>f1{\xc2|\xb6\xc9\x86\x8f\x9b\n3\xd9\xb0t\xa7\x07\"\"\xb9?\x04\xa0\xed\xe4\xe3x\xe2j\x0eW\xad\xdd+Z\x83.\x0e'\xa0C\xe9\xf7ckaS\x05\xa9\x1e\xf9\xad\x96>\xb1\x03\x15\x8eN~N\x81\x8fl\x97\xfe\x9a6*#\x9f\xb8M\x9eV\xd0\xc8jo)\xd0(@ao\x03\x1a\xe5\xcdh\x04\xd2\xc4\x8eh\x94\xba,\xc7\x10\x0e\xfd\xbe%\xf0PK`\x03@\x1ah\xe3\xeaJ\xbe\xec\xb3q\xe3DS+\xb3\x9ao\xcd\x9e\xc8\xab{\xe2;\xf2V\x9c\xc4\xd4M\xe9\xfc\xc3 \xcaI\xcfa\xd2c\x81\xf6h(\x1b@\xd5-i\xe4\x0e\x19\xa2\xa2\xc7\xf2\xf1P&~\xc4\xae\x17}\x1fN\xc6\x01\xe0\xb8\xff\xf8F\xfdv=\xd5\x18N\xe05\xf0WJ8\xc9p\x8b\xe6P\xd7\xf3\x8e!\xdd\xc74`\xb2\xdf\x8c\xc9\xb9\xb4/o\xc6\xf5\\\xe9\xc1\xad\xa5B\xd8\x0e:\xac\x05\xc9l\xf9\x02\xbb\xec\x8bAT\x81X\x80\xe3\xb4\x0b=\x0d4,\xedNO5\xee\xdf\x07t\xc8\xc7\x81FO\x9bIi\x88\x88\xe2\xa3\xa7&\xec\xebp2\x8e\x01\xe9\x82k\x10\xd6[\xe9Yq\x15\xb7\xe8\x8c\xa8\xaf\x0c\xf7c\x0f\x10Z\xe4U\x92\x1e\xb3\x0d(&\x15\xe0w\xee\xb0P\x117\x176\xdcp\xb0\x8aW\x8e\xeb\xe1\xa4\xc8_n\x87\x96\xd7X.\xda}\x80.\xeb\xa4\xab\x03\x16\xc9\xa7\xe8|\x89\xd9\xfc\x0f\xe8_7\xe0\xca\xaa\x9a\xff\xbd-y?\x11\xdd\xd2\x0e\xc0\xa9\x9dt\xec|\x93+\x89k1q\xfa\xb7\xd79\xca\x81\xc2\x9b;?\xff\x00\x84\x92;/\xfd\x97x\x0b\x91;;\xf7\xbf\xcf\xb3N\xc1\xf5o\xec\xdf\x8e\x1c\xac\xca:_\x13\xack\xf2\xc6u\"y\x1bl\xb1F.2\x0f,\xe1,fpU\xe6-.\xb9\xb4h\x1cwZuU&\xab\xcd\x7fh\x8642\xc1\x03W\x84\xbf\xfa}\xee~\x9c\xbdP\x93XA\x10)\xd8\xf87`\xa0x\x86\xaf\x12\xab\xa8\xf2\x9b\xa0\n\xb7Ct\x08~\xe5#\xd0\x9b\xdb<\x05\xd2B\x06\x1a\xd5#++j\xe3\xe3\x08x\x10%\x83\x1b\x1e#\xad\xbe\xaf\n\x89@\xc1:\xa1\xa142\x11\xbc\x95\x89h\xdc\xa6\xb3\xca6\xddr \xeb\xc434\xb2\x96-\xfd(\x97\xb7\xfc\x8c\xf5\x10\xd6\xba\xd2\xad\xc7\xa9\x02\x9c\xd2\x00i\x0b\xaf\xdcD\x8fY\xae\x81\xb3\xe0\xc0\xfd\xb2\xa7\xa9\xe4\xc0s\xc5\x81\x8b\xbcT\xe3\xc0surH;\x9c\x1c\x9aN\x0d\x96\x13\x03\x9c\x16R\xf8\xe8p\x02N>\xfa\xfd\xbc\x0b\xdd\xbc\xce(\\O}\x06\xce\x11\x99\xc7\x02\xb0/\x10hHxN\xee@\x0b;a8\x1es\x91\xcb\xc7\xc1\n\xb2\x14\x82\x18 \x93\xc7\xbbk\xe3<\x9e\xa1B8C\xb5\xb3\xa6)B$W\xc1\xbf\xe5)\x0d\x91\xdf_\x03\xf9eo6\x1a{\xd3rd\xc8\xf4\xcf\xe7&#\x9b\x13,r^e\x91\xd3*\x8b\x9c\x16,r^\xfe\"Xd\xb3ekO%G,f\xaa#xn\xb0e\xd9 9\xbb\xe6\xf2\xf2t\"nv\xf5\x07\xf4\xaf[\xda\x03m\xbe\xc1\xe9\xcb3;C\xfa\x82\x9b\xe9K\\\x1aY\x1a\x17_R\xdb\xcd\xb7j\xb1\xf5\\\x84[6m\x88\x16!\xe3\x18\xb4\xdcx\x97B\xd3\xb9\xc7V\x1e\xd8WN\xa5\x81\xa21\x1f\x8b\xa6\xcc3\xd0n(\xc7sf\xfe\x12\xf2\x95\x13\xc6*F\x97\xf5\xc0$\xbc\x99\x97S\x9cF\xe9_\x98\xc4\xad\x04|C\xa9\xa8\x0ep\xaf\xd4*\xa9\xa7\x9d\xad0\xe5\xb1/A3\xbb\xb4`\x9f\xb7<\xb69\x14[\xc3\x99\xbc}2/\x9c\"\xac\xc4\x9b\xa9s\xead\xb1\x1c8\x1a\x00\xd9Y\x83\xe1\xf2\x87\x1a\xf8\xe2H\xb9\xe9m\x87]\xe3\xf5v\xf2\x02%+\xcc\xdd4\x17\x05$\xcct\xc3\xbd}6\x9e\x81\xcb\x8aH\x19\xf1!u\x8f\\\xd4\xc1\x01h \xeeM= nH`\x91\x89tb%}L@\xa8|e\x93\xdfbD\xa3\x1e\xe0?\xect\x94\xf2\x15\xbb\x901\x0d`\xbf^\xa0\xf7\x8d\xd2%2\xac-\xf4\x07\x1b\xe0~%\xbd\x19'\x10M!\x8e2~\x91A,\xa6\xe44u\x0b\xfb\xcd\x04\xe3G\xc4\x88)A\x89BbNlq\xa2[I#\x86\xfb\x96k\xab\xcd\x0d\xc7\x19^\x8c\x94F\xe1\xd6E\x11\x89\xa1\xf3jd-\xe9\xffC5\xcf\xb8\x1da\x14\xff\x8c,\x05\x1f\x043\xbb\xe4O\xfa\xc2d\x8d\xf1\xfc\x01\x03q\xbb\x13\xadaOf\xe3\xb4t\xdb\x8b?\xe2R'ct>\x03W\x9a\xa9t\x80\xc8\x0e\x98\xd2\xec:\xe0P\xdcY\xa0\xe0\xdc\xde \x86\xf6lbnG\xb8\xe2\x1b\x8bbh\xe7\x06Q_\x89Ri\x89R\xa9G\xaf\xaeXF6\x88\x8b;\xc9nCI\x14\xc3\xd5/\xc7C\xf5n\xd7\x90\xf5Gk\x8c\xb7\xdc\xb4gr\\\xe8)\xdc\xc2\xb5\xa1\x087wBy\x9b\xd9\xf4\xfeB\x1d\xb6q+\xa6\xa8\x00\x97\xbc\xb4\x94\xb3\xca\xae.U\xb3\x1c\xe2\x03NOp\xc9E\xb8\x00}\xcd\x05\xf9\xb2\xc5\xfd\xcc\x07OR\xd9\xb4\x03\x95\x85\x95#I\xe1\x1adr0=\xa9Q\xca\xc1\xf4\xc4-\x0d\xa0\xc5\xcf\x02\xd7\xf1G4\x08\xc4\x96)\x9d\xef\x001e\xa3\x12\xa9\x89\xeb\xe38\x8a\xc2\x9bu\xfbvA\xb0\xeb\x14\xb1\x9c\x01\xb1\xbc\xba\x02BY\xec\x9c\x0b\xdd\xabv\x95\x84b\xa2FEU$\x19 \x98 n\xb1\xf5^\xb9\xbcn\xa7r\xa2\x0bD\xff5>\xa6\xe8\x0f4\xaa\xba\x13\x0b\x8cl_\x1d\x92\xce\xc8\x9e\xf3\xa2\xe7&\xea\x1ac)~\xde\n3k2\xad\xc8\xcc\xee\x191\x18\x03\x99^\xbf\xc4\xed\xcb\xf4\xba7]\x15K\x8c\x0epc2\xb9\x1dn\x0c\xc5N/[p\xf0\xd8/\xfe\x8fd$d\xb8X\x1fG\\\xfd/\xd2\xdd:[\xabB\x19val\xb5\x0b7\xc6\xac\xc4M\x99s\xea\xa6\x11S\xa62[\xca\xec_]\x0e\xac\x96)\x14T\x1c\xfc\xa3\n\xf2\xb3\x01\x91\x96\xe8k!w{\xac\x0f\xde\x1eX\x9f\xf5\xee*3\xcf3?\x0cfL\x0dv\x19\xcf\xb8q\xf1\x8d\"I \xee\xeb\xb65\x11Z\x02\xf4\xc2\xb0r\xc7/ES1:X\xf5\xa5\xc9\x14\xb1Q%\xf4\xe14\xc2\x8aC\x8f\xcde\x13f\x19\xd1\x95i\xabS&\xbd4`\xee\x98\xb2\xb7Q\x8f\x18BH\x04\x9c\xfb\x12yj\xce\xb8\xf8=b\x9f\xf1\x8cO3>cy\x14'3\x9e\xf0\x19\x13\x88x%\xb0\x8e\xdd)\"sC\xf8\x9e\\t\xcec\xe7\x8b`\xba`A\xc4\x002K\xff=O\x19F\x1fc3hMpC\xf1\x9c\xa5\xf9t\xca\xd3\xf4\xde\xdc\x0f\xc2<\xe1,X\xae\xe24\x0dNB\xce\x9c\xf3\x05\x8fD\x13wu\xec\xbe\x0b\x13\xeb\x1eE\xcf\xe3(\x0df<aY\xcc\x12\x1e^\xb28bwE\xb7\xee\xb28\xc1:X\x16\x8c\x02\xb9?\x1b\xd8\"\xd9\x00(\x80\x04\x17\xfa\xb2\x04\x04P0\x17\x9cd9\x92\x06\xee\x93fqVml\xa6zByg\x0c\xb0\xc2\xe8\x95\xfc1\x87\x1f\xc5\xc6\x95\xac\xd7\x17\xd8\x03i\x94\x9e\x81A\x84(\x80D\xc7\x95T\x07\x8d\x8ag.\xf3\x07\xe2g\x07V(u\xa6\xc8\xac(\x96\x82\xe4PZA\x92:+j\x7f0{_\xd0\x10\xa4\x8a\xaa\xbf\xf6\xe3\x19y\xc3\xd6\x87\xab\xf6\x1d\x16\xc5\x1b\x9e%\x01?\xe3%\xc5\x99\xc5\x1c Q\xb0\\\x85\\0E\n\x0d\x15\x12\xdf%\xa9\x92z\xf0\xd3\xce\xd4c\xd4\x88k\xe3+\xa8\xfd/\xe38\xab\x8b\xd56\xde\x86\xbe\xc9\xfa\xb7\xd6\xbd\xa2?\xeb\xf5P\xcd\x08Do\x905Ht\xac\xa4\x94\x8cW]\xc4\x80\xbe\xf2l;\x8dM\xc4\x00\xfb`\xbfO{\xf5k\xb0s\x82;\xa3d%\xa6\x0e\xf8]i\x12}\x8e\x87\xc1\xd0t\x87\xfef\xee\x04\xae\x8d\xc7\x0f\x00\xd6\x10\x98\x11\x80\x0e\xa7\x8d\xa0Fl\x9a\xfa\x98\xea\x9e\xc3\xf4\xe7\x83h\xc9w\xbaO[Gn_;`\xcf\xf1D\x023\xd5\xe8\x84\xb114Z\x0cT\xb2A>\x80N\x04m3*?\x1c7\x1f\x1b\xc6 \x15\xbd\xc8\x02\x89\xb5N\x0e\x84'T\x9dc\xac\xf0\x96:\xbbh9S$k\x9d)H\x13\x97\x8fz\x8a\xa8\x8b\xa6\xa5\x90\xe0#\xe9\x89\x9b\x14\xb7JOY\x06\x90k\x06[\x86\xe7\xe3\xfa\xc5\xfc\xea\xe5\xf3\x9b\x03\x88p}\xa5NYm\x91\x96\xad\x86*\xe8\xf9\xfdV\xe7Q\x9c\xca\xd6\xbf\xbd\xd1\xe8\xa2\x1f\xaf\xe28\xe5\x15\x19p\xe8\xa6]\xfc\xd3\xa2\x895H\xad\xcd\x89\xa3\x0eC\xaf\xfd4\xe5\xb3B\x10\xa3\x05\x84\xc6K4\xc1\x9c\xcf\xea\xf1\x8cn\x17~{\x86JG\xcc\xf3\xbd\xf1Qt\x94\x1c\xe5\xdb[\xdb\x0f\xe1\xef\xa3\xc9\xbd\xd3u\xc1\xac\xd0_\xcc:\x89\xfb\x85\xc2\xe2)\x1bnm1\xe5\x80.\x93\x0eX\xb7<\xf6\xe8\x11\x1c\x13\xff\xdb\xef\xfc^O\xde\xff\xcf\xd4=iAq\x9b\x97\x8a\xfc\xcao\xbc}\xf5r\xa0\xc0y\xe9pW6?\x04\xc5Fm\x19\xdd.p\xff_\x83\x9cJ\xcf1~\x19G\x9b\xd3\x98'S<\xc6e\xb1DD\x17o\xf2N>\xea\x85\x8d\xdb\x88\x11o\xd3&\x96\xdf\x0b\x06\xb3 ]\xc5\xa6L\x85p\xa9)\xfaV\xb3\x81\x08 6<w\xa9\xd8\xe9`PR\x88l \xbd\x08\x0d_\xe0|\xc9\xa5\xa8\xdd\xb2\x12\x19\x86\xea\x06\x03~VI\xa4#\x19\xac\xb1\x86\xba\x85\xe8\xa2\xd8\xfcU\xfb\xcd\xcb\xa4&\xffk\x88\x93\x97\x839\x1du\xa2\xabu\xa5\n\xb1\x1ac\xd6i\xb4\xdc!\xc6g\xe1k\xbe\xafQ\xdd.\xb2\xdbt\xf26l7\xc5\x8f\xbeE\\\x99K\xc2N\x8b1\x8dUC\xeb\xe0MQ\xa6\n\xa3T\xcd\x99\x179A-\x9a\xf6\xca\xce>\xa5\xa2\x9dg\xa7]W\xe0\xcc\x03\xa7B\x1e\xab\xf93\x05\x89#\xf8\xe4AY\x0b\xdbg+\xc5\x96.@\x89P,\xd0\xd4\xb2@\xd3\xe2\xc7\x01\xeb\xe1za#\x06\xbea\ny#\xeb\x8b\xcf\x17\x1d%\xf1u\x86\x0e\xd6R\x9e\xbd\x0b\x96<\xce\xb3\xf6sO!\x00\x8aH\xe1\n\xb7\xe9\xbb\xc4\xa7\x06y\x94\xf0\xb9\x18@\xf9\xcb\x81\x88\xa7\xe0UNt\xe6\xce\x1d\xd6\x8b\xf8E\xf6.\x98\xbe\xef\x81u\x90J\x86\x05\xa4\xba)\x12E\xc5\xf5\xfb/\x8f,\xcb\xbasa\xd9\xff3[\xff\x97\x95\xfe/\xb5\xfe\xb7hpj\xf3@.\xfb\xca\xd8f\x18\xef\xbf\xd0\x98\x8a\xb3\x15B\xc8\x80\x0c\xa7 \xa3\xd7^\x92A\x15\x05.\xf1\xcf\xb9\xd8XE\xb3g\x18\x1ct\x7f\x7f_\xcf\xb9\xba\x92Q\xdb\xcb4\xb1m\x0fvvv\xd8\x88M\x9d\xb9\x83\xa6\xe8z>\x1aGmI\xcc^\xb2}\xf6\xf3\x0f\xd2\xaf\xd6\x90m\xb23\x97}\x82\xd2M%\xaa\xa8\x03\x07t\xde9\x05\"\x18\xec\xd5\x15\x83\x01\xb2}\x0dK<\x16\xb4O\xbbE\xda!\x1e\x0d\xaa\xfb\x1aT\x1d\x0d\x84\x9e\xae\xb0\xabl\xa1h\xbb\xe6\xc4\xae\x8b\nA\x08\xe8W\xb1\xb3\x91\xc6\x03\xd2b\xae\xb2\x8c}'@Hu\x12O\x84\x1e\x0b5 \x05\xfc\xa4$\x9c\xa6\xdf\xa7\xea\x1eT\x839\xbd\x0d\xcd\xdaP\x96\xd5\xd1\x96\xdc\x8b\xd0\\I \x01bp\xec,\xbb4\\Ctn`\xb9\xe5c\x88q\xc6\xf8\x8b\xdf\xb7\xb2\x05\x1a\xbe\x98\xd5\x11\xf3\xd1\xda\\\xb3\xe0\xca\xa4\x01\x87\xd8\x0e\x9e\xb2\xb8\xc9\xb7\x08\xbf\x98r>K\xd9\xd2\xbf\x08\x96\xf9\x92\x15z\x8b\x0c\xa1\xf2}9\x1b\xd9\x1e\xde\xdf\xbb\xffpg\xf7\xfe\xde\xf5\xdbk\x07\xe76\xad\x17\xdd\xd5\xafx\x04bG\xee\xb8\x1d\xcb8R\xc4^\x9c\x14{q.\xdd\xc0Kk\xf258\xe5\xe6\x8d\xd8G\x13\x9bf\xc4\xd7\xdd\xfb\x02\x8b0X\x04\x99\xeaZ\xbb\xc1\xc0i\xf9)b\x0b\x12\xa3W^\x11\x0cr\x00\x99\xd2\x1d\xc2m K\xcb\xe46(\x9f\x83\xf6xW\xeb\xae\xb1\xb32\x044q\xf3\x01\xc2F\x9a\xc9y)\xff23\xd3\xa6\xcc\x10<A\x92\xebP\xa2\x1a\xe5\xe9o\x11t\xba\x91s&/\xc8\xa4\xe3\xa4\xc1\x94w\n\xc6\xe9\x0dw\xdc\xf3\xf1t\x82\x86n)j\x1c\xa7\x1e\xdbh\x8cm#j\xf5\xfb\x11{\xa29\xd2\xa3\xdbg\x9a\x90\x10\xcc\xb3}\xb1{:\x89\xeb\xb1\x84\xac`7\x0f\x97\x1bp\x8e7 \xa5+\x15\xebG\xe5%\xd2\x0d\x19\xbe*\x07\x83t\xf7\xb1\x0b\xc6`A\x94\xafuW\xa99\xd2\x87z\x94\xa8(\xb5\n\xc8\xc502\x9d\x9b\xc8\xc7Y\xa9RM\x81\xb5\xd8\xdc\x8c\xd4\xf0\xb2F\x9bw\xd0\xffG\xc5\x99<\x94\xae\xab\xe3`\x06\xf6\x8fMF\xe8\xeb\x03\x87\x91SsC\xd3tyMg\xe8U\x16XeA\xe1\xb0\xcc\x0f\xff\x80\xfeu+T\xca\xf4\xb6\x1b\xd3\x87\xce\xa0\x99z\xf9vg\xbb\xe5g\xe3A\xc2\xe7\xcf\xe3<\xcax\xd2q\xeb2\xf7\xad\x1c\x8cV4\xf0i{Ul\xd9\xab\xe2n{U\xdaA\x00\x91\xcb\xe8v\xe2\x1b5G\xcc\xf5\xfd\xa8U5\xd0\xef\xe7uM\nu\x86jm\xa7X`\xd6\xc6\x8a\xfd.ma\x7f!\x90\xa1\xa9\xa0\xf2+\xc6\xdf\xb6\x1e\xbc\xe1\xf3\x11K\xba\x9dH\xb8\xf27\xa4\x99\xc0\xd2\x8bX\xbb\x8b\x86vM\xe5\xb5\xb0\x1cM\x15767sut\xa9\x9cV6\xb6 F!yc\x8c\xd8\xc0Ny\xf6F\"\xe8\xf74\x8e\xadr\x109\xfa\x93%\xd6\xff\xcd\xc4ZZ\x08\"j\x81E\x1e\xabyi\x8eJ\xa7\xbd\x1b\xd2io\xc6F*\xacb\xeb\xee\x00\x86e\x83\xe7o\xdf\x8a\xe9\x80\x97\x01O\xa7\xfe\xaa\x94\xa8\xea\x89&\xa8\xd4\xce\xd2\xbe\x07)\xb7\x0cFT/\x8b!\xdb\xd7\xe5g\xbff \xffY\x1e$<e~\xe9\xfd\xcej\xb4Tqy\xad\xf9\x99\x92^\x98\xa2\"\xca\x82 \x9e\x9bC<\x07\x0b\xf2\x82\xbct%b\xc2c\xd6\xef\xc7\xec K\x1e\xbb\x00a\x19\xc3G/\x14\xc3\xd5\xc7\x80\xf5\x05\xf4\x9f\xee\xb3!\xb0\xc1\x82\x03\xd9\x19\x02\xdd\xd9\xdec*\n!\x00 \xc6\x02O\xf7\xd9\xfd\x87E\xd9\x07{P\xb6)\xff\xce\x1dv\xff\x01@P\x10\xc6\xa3#\xf0\x1bU*'\x86\xbb\xa0\xcca\x82X:\xd0\xd7\x18\x9b\xdc\x90\xde\xbb\xef?\x00C\x12<A`W\xb7\x1f\xca\x0c\xd5\xc1G\xe5+\xddCH\xdd}P\xa4>\xda*R\x1f\xed\x15\xa9\xc3\xedm\xb8\x0f\np\x02\x18 \n\x8e]\xae&\x02\xdcz\xff\xf7\x1f\xfc~\xafq\x1d\x9av\xef\x84\x1d\x85\x8e\xb1 \x82\xc178j{\x15D\x96a>\xabK\xb5\xea\xbe;\xd1\x05\x87\x1f\xdc\xe2\xc2N\xe4\xec\x0co\xe2\xdb\x93\xf4]/\x1a\xee\x1d\x1f\xf3\xf4\xcbx\x96\x87\xbcW\xa7\xda2T\x90\x1eJ\xc1EY\x0f\xc4\xd3k\xb2UQF\x00\x89*\xec\xb1X\xbd\x96\x1b\xd0\x07\x93\xdd\x08\x1cq\xb8}Pw\xf3\x1b\xcb\xac\xfb\xdb\x10\x95\xb3\xc8S\x1d\xc0\x90cd\x1f8\x12\x99r\x9c\xd2\xef+\xb5Ca\x9c\xc0\xba\x9f\xbe\xf5\x88\xe9/\xc7\x04\xa8}\x87&\x8b\xd3x\xb9\x8a#A\x0e)8\xa8\xe7\xd9j5b\x97\xc5\x0cZ\xcb\xf9y\xb6\x88\x93\xe0\x1b_\xf4\xe4u\xbc\xcaW#v\xd2\xbd\x1a\xff4\x8bF\xecx\x8d\n\xafV<\x81\x8fA\xcd\xf3n5\xd3\x11;l/\xf9,\xcf\x16/2\xbe\x1c\xb1\x8b\xf6\xc2\xa2\xd9C4{{\xdb^:\x16\xc5\xb7G\xecY{Q\x7f\x15\xfc&\xbf\x14}\x19\xb1\xe7\xed\xc5O\xfc4\x98b\xe9\xf7\xed\xa5\xe5\x91\xe4U{\xc908\xe3ox\xba\x8a\xa3\x94\x8f\xd8\xeb\xf6\nA4\x8fG\xec\x8f\xb4\x17|\x11\xcd\xe3\xe7\x18\xd8\x9d'#\xc6y{\x95\xdf\xc8\x97\xabw\xf1k_\x8c2\xebP>\x8e\xc2 \xe2?\xf2\xc3`\xe6gq\xf2\xa9?;\xe5#\xf6\xaeCE\x85]\xe9\x88}\xb9F\xf1\x11\xfbi{\xe9\x02u\xdf\xe6\xcb\xa5\x9f\\\x8e\xd8\xcb\xf5+} A1G\xec\xcd\xfaU\x11~\x9f\xb5W\\\x04\xa7\x8b08]d\x82\xe1\x18\xb1\x9f\xb5\xd7H$\xa6\xa4#\xf6y\xf7\xd2#\xf6M\xf7\xc2\x9f\xc6\xb3\xcb\x11\xfb\xb4\xbd\xc2\xcaO\xfc%\xcfx\x92\x8e\xd8\x8f\xd6(\xfe&>\x1f\xb1\xdfh\xaf\xc0/\xf84\xcf\xf8\x88\xfdV{\xd9\x05\xf7g\xd0\x91\xdfl/\x0bF\xb4\xe9\x88\xfdZ{Q\xb8\xc5\x17e\x82y\x1d\xb1\x1f\xb6\x97\x8f\xcfxr\x16\xf0\xf3\x11\xfb\xed\xf6\xc2\xf38\xce\xc4\xc2\x8c:,\xb4\xcf\x830\xe3\x89\xb6\x9a\x93\x0e\x95^\x0b\x88\xe3t\xc6\x1d\x8aO\xf3$\x1c\xb1\xa0C\xc9t\xba\xe0K\x81\x83~\x87\xc2o\xb1\xb0\xd6\xf7\xbcC\xade<\xe3\xe1\xe1\x85\xbf\\\x85|\xc4\xc2\x0e5\xbe\x145~\x9c\xf8\xab\x95\xf8\xc6\xb4k\x8d\xe7q\x18\xfa+\xb1F\xd2\xaeUFl\xde\xb5h:b\xab\x0ee\x0f\xa3|)\x9b\x9eu(\x8e\x8c\x8e\xac\xb0\xe8P\x01\xcc6e\xf9\xb3\x0e\xe5\x0bg\xf7\xb2\xce\xb2S\x1dd\xb8F\xec\xb4C\xe9w\xc9\xe5\x8b\xecU\x9e}\x9ag\x99 \xeb\x97\x1d\xea|\xe9'\xefg\xf1y4b\x17\x1dJ\x7f\xea\xa7\xfc\x0b\xff2\xce\xb3\x11{\xdb\xa1\xfc\x8fx\x92\n\xde*\xf1O\x97>\xae\xb7\x11;\xe9^\xf1m\xe6/W#v\xdc\xa1F\xb1a\x1c^d#\xf6\xc5z\x15\x80|~\xd5^\xe7\xb5\xa2\xb7\xf0\x91__\xa3\xc2\x8bh\x1a\xe63~\xb8\\\x89\xd9\xfcq{\xcd\xa2{\x10i\xe4\xc5\x1a\x154\xaap\xda^\xed3\xceW_\x04\xd1\xfb\x11;\xef\x00e\xc1\xff|%H\xda\x1f\x1d\xc8\xd7\xe6\xb2\x02ap\xeb\xc6\n\xeaw\x03i;;}\x96\xa6\\p\xf8\x87E\x87\xc8\xd2\x9d\xe4\xd8\xb4\x9frV;K<\xef\xa4F\x88:\xb5\xf5\x9eh\x8b\xd4\x1c\x8dg\x05\xbc\xd9\xbc|M\xcbW\xbf|\x0d\xcaW\xeal\x8az@\xf9\x8a\x87\xbb\xb0L\x88<6-\x7f\xad\xca\xd7E\xf9zV\xbe.\xd5k\xe3\x89\xf7\x15\x87\xe0\x03\x8f\xa8#/\xe6m\xef\x1a\x11\x8e\x8a\xbc\x9d\xedz\x9e_\xe4\xdd\xdf3\xa2\xe5\x14y\x0f\xef\x1b\xf1\x80\xca<\xe3\xf8\x1d\x96yF_\xa6E\xde\xa3\x9dz\xde\xbc\xcc3\xfa\xb2*\xf3\x1e\xd6\xf3fe\x9e\x01\x97\x85\xca\xbb\xbfe|\xef\xac\xcc3\xda\\\x16y\xc3\xadz\xde\xa9\xca{\xb4c\x8c\xef\xb2\xcc3\xc6pR\xe6\x19\xdf;.\xf3\x8c1\x9c\x17y\xf7\x8d\xbe\x1c\x96y\xc3z\xdeE\x99g\xcc\xfb\xdb2\xcf\x80\xcb\xf32\xcf\x98\xf7\xf7e\x9e1\xef\xcf\xca<\x03.\xaf\xca<c\xec\xaf\xcb<c\xec\xef\x8a\xbc\x07\xc6\xd8\xbf,\xf3\x8c\xb1\xbf(\xf3\x8c\xb1\xff\xb4\xcc3\xc6\xfe\xb2\xcc3\xc6\xfe\xa6\xcc3\xc6\xfeY\x99g\x8c\xfd\x8b2\xcf\xc0\x89\xaf\xca<\x03.?+\xf3\x0c\xb8|^\xe4\xed\x1ac\xff\xa6\xcc3\xc6\xfei\x99g\x8c\xfdGe\x9e\xd1\xcf_/\xf3\x8c~\xfe\xb8\xcc3\xfa\xf9\x1bE\xde\x9e1\x7f\xbfU\xe6\x19c\xf8\xcd2\xcf\x18\xc3\xaf\x95y\xc6\x18~X\xe6\x19\xf3\xf7\xdbe\x9e1\x7f\x7f\x14\x94\x94\x8f\xf6\xea\xf6\xe7\x7f\x04\xeb\xfc\xd1Z2\xe7e[\x06\xac2-\xd3\x00V\xa4e\x1a\xd0J\xca\xcc\x87\x06\xb8b-\xd3\x80W\xa0e\x9aD^\xcb4\xa0\x92k\x99\x06XR-\xd3\xc0\xebP\xcb4\x800\xd52\x0d \xcc\x8b\xcc\xfbCc\nWe\xcdG\x06\x10fZ\xa6\x01\x84\x85\x96i\x00\xe1L\xcb4\xbe\xb9\xd42\x0d\x08\x9dj\x99\x06\x84.\xb5L\x03B'Z\xa6\x01\xa1c-\xd3\x80\xd0\xb9\x96i\xa0\xc9a\x91\xf9\xff\xb0\xf7\xaf\xddm\xe3\xc8\xc2(\xfc\xf1]k\xfe\xc2\xfb\xa5\xa43;![\xb2\"\xf9\x9a(q\xb4\xdd\x89\xd3\x9d\xe9\xc4\xce\x8e\x9d\xeeg\xb6\xac\xf6\x82)Hf\x9b\"5\xbc\xf82\xe3\xeco\xcf\xff8\xbf\xe5\xf9eg\xa1\x00\x90 \x80t.3s\xd6:Z+\xb1\x04\x82\xb8\x14\n\x85\xaaB]F\xb46\x95[\x05\xb6\xb5\xa9\x9c\x14o\x0e\xeb\xc4\xef\x15{z\xc0_\xad\xc1\xef*\x7f8\x1a2\xda\xa8\xd3\xab\x1fP\xbd]^M\xab^\\\xdd\x95\x994yW\xf7\x8f\n\xf3\xa6\x86M\xd2\xd8+*IM\xfc\x10\xa8\xdbd\xf7T8R\x88\x9b\xa6\"g\xbd\xc9OI0g\"\xa4@^\xe7\xb3\x06\n\xc7\x1a(\xfc\x8b\xae\x17\n\xbb\x8c\xcd\xa7z\xbb\x8c\xada\xb5\\8\x1blU\xcbE\xcc\x94\xcd\xaa\x19\x1aw6\xd8\xdcn\xb4\xd84\x1be$\xc2\x8a\x1f&\x10\xc3\x18H\xbf\x06\x8e\x00\xea\xb7\xb2\xf0\x02\xb6\xb4\xab\x95\xb0\xbe|'\xed\xc3\xb6\x8b|xPru\xd6CN\x1d\x97m\xfcz/\xf0\xdc\xc1\x91\xd6L\xb0}\xddu3\x06G\x83 81\x06(\xc1pBcH1N\xb3x\xab\xbc\xeel\"\x0f[{u\x12\xe5\x01\xe4\xb8\xc5\x96\xb3\xeaSR\xe0f\xf9.\xa9M\x97\x8c\xd8\xb3\x81:{[C\xb7_ \xf9>\xdaq\x07\xdc\xebv\x11G\xab6\xcd5\xd9\x1amW\xc7\xceQzs\xa8\xc5\xe8=}\x10\xa0\xad\x1a\x04D\x10\xa0\xadj3b\x1a5w\xc9\x807\xbfU5\xb2\xf5x\xfd]ugDN48\x81\x1eD\x837\xf0\x03tX7#\xd7\x12\x8e\xa3\x00X)\x8d\xb3\xdb\x87.>\xaa\xdd\x02\xb2\xaaM\xf1\xc1\xaf\xf3\x14Y\x11\x8f\x84)\xc3\xf6\xd4j\x82\x10\xaf\xb4F\xf5\x98\x06z\xc2\xff\x8c\xf9H\xf5-\\j6\xaf\xbe&\x13\xc9\xd0\x19\x14&\xc5\x1b\xd3\xd1\x0c\xc6\xc2\x82D\xff\xda\xaalar\xad\xaf\xb54\xe7\x05ab\x9b\xe7\xac5\xd6\x1a\xec\xe4Y\xe5\xae\x1d\xb1s\xdd\xc7\x01n\x96\x06\xb8\xa9\x0c\x106]\xb7_$\xa9\x86;\xb8\xbfg0\x14.\xe7\xac\xa9\xcc\xb93D|\xc1\x83\x0c\x83\x9b\xd1\x1b\x98\xa3!G\xe2\xac\xf3\x00x\xcf!\x85\x97\xb0|\x0e\xcb^\xcf\x05\x8c\xea\xbe\xec\xc3\n&p\xed\xac\xa7\xcbY\x1f\x96\x8c\x8c\xb0\xaf\x86\x10+\xe6^\x99\xf4-\x0e\xc6\xb5p\xf7\xc7A<\x87\x0e:f,\x06!\xbdM\x1d\xd7E\x0f\n\xcd\x10\x88\xb3@\x17\xadi4\xc0\xab\xe8>\xb0\x01q\x8b)Q\xa4\x19\x944b\x924}\x9f5W\xc9%\xa6\xe0\xfd7!\x1b\xd5\x8d\xcd\xc9\xc6\xb3\x9d/<\xc10{6;\xc9\xe3\xc1B\xd4\x89\x9c!\xab\xc8\xa6NyT\xeb\x07\x12\xef\xd0\x19\xed\xed!)\x15\x14\xf5\xd9\xa6 \xac[\xe2\xef\x9e\xf8\xfbTKh?p\xf3\xc46]Y\xc0\x95\x87\xcd\xec\xcb0\xbf\xb5\x88i\xbc\xcb\x9a\x83A\xa0'\xd0\x92$VI\xe8BO\xb8\xd7\x82u\xa9\x14\xcf\xf9zU\x87r)\x1a\xa9\x96_\xf3N\xb7\xab\xe5+A\xe7\xab\xe5KQ\xbe\xe3\x0e\x12ZQ\xcb\xde Z\xbf\xe3:U^_\xf4^\x9d\xda\xb9h\xad*Y\xde\x88\xf2*;u\x88\xb1ws+\xb3\xf2\xc3[\x1eI;\x8e<\x9aT\x82q\x9e\xe0#\xb1\xee\xe5G\xaf\x18\x05\x17/!\x01\xf7\x9c\xdb*w_1\x0f\xa9(b\x0f`\x1fw\xc9\xc5`Q~p\xcc\xd8\x97\x8e\xdd\x04T\xef\xcf\x0e\x8a\xdd\xc9\xc9\x00\xa3\x8f]S\xa7\x8aG\xea\x87QC\xa7\x9cZ\x17\xed\xa6\xa6\xa13z\xe6*\xb9\xcbg\xad\xac\xfd\xe4\x87:W}\xb82\x1b\xc3\x1b\xa2\xe1\x08\xc2\xe5\xbcb\xf4]{>\x8a\xb5\xf8H\xff\xe0\x11\xd3\x0e\xafi\xc8M\xdb(w;\xbbr\xd5\x94\xa7\x9a\xa0\xf7\xe6 \xc8\x9f\xab\xe8\xf7\xa1q\xce\xd7\xf5\x8c\xa5P\xcc\xa3\xe3t\xd6\x0e\x8fi\xa9\x8b\xea\x84G\x11\x1f\xb6p\xa2)\x0f\xa7<\x98\xd3\xa6`\x85 M\xf0\xe9\xe0\\\xebM\x0bH\x83\xcfCt\xa7\xd4/\xc0\xb5\x08xH\x07\xe7\x9e\xbe\xc6]\xb3\xc5-\xa8\xd2#O\x18z~\xcd\xcd.\xd1\xd0\x91\x0e\xce\x93RZ\x8c\xbcE\xa37\xb9\xfc\x08c\xd8\x82|F\x18\x817\xba\xc2\x98\xa5\x0b\xe2[nq\xe4'\x11\xf1.ps4W\x0fDu\x86p\xcd\xb5=\xac=\x8fV\xc4oH\xede\xde\xc1\xea'c\xf2\x0c\x1at:\x9b\x02v\xe8\x14\xfb\x07\xda\xb5\xe2\xaf}tj\x15\x0e\xb2\xac>\x97\x83\xc6\xe0\xa0\xb9\xbd7\xa0aJcG\xf0\x1f\x19\xba\xbap\xdfPo@o\xfd\xd4\x11\xeed\x9d\xa1\xcb\xeb\xb0\xdd\xa6\xd8\xe2\x07\xce\xa1\xd3\x15\xfbn\xc3\xbb$~\x08\xde\x9d\x17\xd0.\x0fI\xcd\xd6\xf1\x83\x13rk\xd8<1N\"\x9cA\x13\x87\x9f\xd8\x81\x13\x9b\xa9\x01T\xf7e#Xp\xfc\x1d\"\xe6'&\x11\xe8\xdc.\xd5\x8f\xde\x95\x07\x9f</\xb8\xa5\x97\xe0?w\x818\xe1\xd4\xef\xf5L9\x8e\x80\xef%O\xe4\xba\x90\xdbj\xd4\x07t\xa7\xe9\xc8uzo\x1aSsD\xee2\xb2\xbdo\xa4EK\x91+\xa4\xc1y\x00J\xc2J,r\xd3\xb2\x1dj\x9c([\xe2\xb7\xb5p3\xf9S\xccJ*\xc3\xcc\x9c\xb7\xa3\x0f\xaf`\x02\xb7\"\xc6U\x16^\x92p\x1e\xd0yN\xd5\xbb\xc8$\xd1<\xe4y2\x88\xc2\xbcV,k\xa1\xa9\xb1cG\x16\x81\xc6\xda\x8c\xd0\xea'\xa6$\x89\xc21X\x92\x95\xe2hb\x1e\xc5?\n\x93(\xa0H\xb4\xe3\x01\x9a\x0c)_\x9d\xee'9\xd6<\x04_\xacN\xcd\x84\x11\xf9\x86\xc6\xf3\xef-W\xdel\xc2\x1878\x1d\x9c\x93\\$\xeb\xf3\xf0\x9c\xe9 \x8fW\x98\x0e\xae\xeb\x08\xe5\xda0\xeam#F\x89cl$2]s\x8c\xe6t\xc6\xc1\xe1\xdc\xdf\xe3&p\xc5\xd6\xb1\xf5\xf6Gco\x0f\xc5_=6\xaa\x88\x95\x03\xfdg\xbe\x1a]\x89S\xa9\xc0\xa9\xbc\x82X.~\n[P\xaa\x0d:ITb{\xaa\xf5\xd6\xb7\xae\xd4Q#\xec\xa4\x8e7\xbd\xf4\x93:\\\xd2\xc19\x0fb\x8a_x,U\x11\x13\xea\xfc\x06\xed\xf8\xdd\xc1\xf9\xb5\x8c\xecz\x8e>\xd4\xf8\x8d\xc8\xb7\x08\xaf\xec\x89 O\xec\xa08uR\x94D\xad#\xff\xd8n\xe4\xfch\xd2\x0f\x9e{\x15\x0e\xce\x8d\x01=\xc3bR(`\x8b9\x19\x8e_\xfb\xb1\x8b:q\x19\x98\x99o\xac\xe2\xf0\x03\x8f\x84\x8f1\x8c\x98`\x1e\xe6\xe0\xa7 \x0d\x16\xb60\xba\x08\xe7\x0f\xe8&=i\xcb<\x81\"Z7\x9f\x85\xe77c\x08\x9b9\x93\xf3\xf9X\xcd\xf1\xaf\xfb\x18\xb8r\xf9i\xc7\xb1\xa4\xf9E@\xe0|\x14\x01\x9e\xd9\xf7#\xf1\xfd[\xb2\x01Gy\xbe\x8c/?\xf9]v\xc6\xe4\xe8\x1fr\xf4\x1f1\xfc\x0e\xfb\xd01\x8d\xb7\xdd8\xc5\xf8\xec\x13i\xb1~\x0dk\xf7\xd98\x7f\x8deQy\xbb*\xfe\x11\xb8\xd7O\xac\x1b\xf6RD.>\xe9\x83\xdc\x14\xdd>t\xcf/\xbbn\x1f\xe6\xdc\xd5Jx\xcc\\\xfaU\x17;=\xfaP\x07\xd1\x84\xb7\x9bc\x8a\xfcY!.V\xa0\x1f\x15=\xd7\xe0\xa1\xa8\xbb\xfa\xfc\x107O\x925Ppv\xfc\x97z\xf2\xf2\x92\x84\x8b/\xfc\xc7\\\xf2~\xf8\xeb\xbaV\xf9R\xad\xcc\x19\xc5b@nq\xa5&\xd4\x1d\xbb\xaes\xa2\xc4\x8c\xaa\x8d\x8f\x86\xe3fQP\x8ar\x07\xceJ\xae\x9ak\xd3\x15FWe\x9dtGI\xce\xca\xcey\xb67\x98\x80e\xd4\\\xe3\xd9\xc9jq\xe9\x07\xd9\x18v\x16\x8b\x9f\xe3\nL\xbc\"\x97\x8f\x841k\x80\x7f\xad>K\xd8\xb3S1\x8f\xceH\x0dTS^\xe7\xf2>Bti\xd2\xdc\xcb\xebH\xd6\x11\xaa\x10\xe48\xcd8$\x82\xe8\x18\x89\xb9\xd4\xc1\x84\xf4\xa6\xea\xb8\x89\xdd\x14\xe9\x07\xa8\x98\xa18Q0\x04\xecG\xbc\xaf\x1a\xb9\xf9#\xc6\xa4\xe0\x93#\xf1D\xc5\xe6\x8b\xc1\x82\xad\xb2\x15\xa5\x8b\x08\x0f\xfb\xfb\x80>r\xfc+a\x1c4\xbd\xe1\xbe[c\x0c-R\x9a\xe4\xc2Y\x0c~\x82\x1e,\x06\xbf\xe1\xffx\xbfr\\E\xc8\x0f\x92):)\xbd\x1c:\xcf\xf6\\G%\x15B\xbb\xba\xeb:j\x11\xa9*Xy\xbf'\xa5\x1e\x15rS\x9d\x1a\x83N\xd3\x1aK\xfe\xe8@G\x98@\xd1<1\xf4\x14\x10w\x1d\x1e\x8aD\x8bg50\x15\xc3u2\x06\xe0\xce\xb1k\x1d5.w\xd3\xb0\xc5\xa8n\x9cL\xee\x8d|\xd9Nro_+\x9aV \xe9\x1c\xb3\x86\x1ao\xc8N\x06x\x84\xbb\x03\xdc@\xce\x95\x8a\x15\xb6i\x91 h\x9a\x92\xca\xa9\xea\x0f=N\xb4R\x83\xd2\x92\xbb\xf2Z\xb57\x91\xa8b\xd6\xd8\xf8\xed\x05UIFm\xb9 A4iI\x90\x0f2\x96\x8b\x99\xc5\xbaf\xa4\x9c\x9d\"\xed\xd5\xac\x18|\x01\xf6\xc1\xef\xf5\x9a\x19\xc0\xc4\x90\xb6C\xfd\x88\xec\xc9\x9c\x02\xb2\xbd\xd9\xeb\xf5\x0be\x19\xc3\x88\x96\xa9\x0e\xd4O\x82\x9cE\x92'q\xc8D\x12\x89\x8d\x0d\x94/b'lb\n\x8d23\x084W\x9a\xd2\xd6\xd3eG\x90.\xc6\x03\x1e}\xc2\xf1\x07\xd7m\xcf\x95\x98x\x8d{\xf7[!\xba\x19\x8b\xa3\x07`\xf1\xc3q\xab\xbe\xea\xc5\xb6\x03\x8b2O#\xdd\x82}\x05\xa2\x81\x08\xc0\x1b\xd9V@!A\xf8\xf5KmMtgu\\\xdcuc\x94\xc1\xf2P\x93\x1b\x1f\xb9\xce4\x8f\\P\x87\x9cG\x12\n\xc3\xb1~%e\xb8\xa1 P\x8c%L\x85\x9aT\x03\x12lg\xd4\xa2\x9dt:\x9c\xa9m\xf5!\xd5gd\xc7\x167[\xb6\xc8Z\x19i\xda\x15\xe5\x86\xd6\xb7\x1e\xd4:\xfb\x7f\xd3\xd8\x87xj\xe8i\xfb\x0bzb\xffo5\xf4'\xea\x180N\xe9B\xc4=\xc66\x94SQ\x8b\x91f\xbb\xb1\xea\x8d\\d\xb9\x1d\xc5\x14\x84\x83\xf7Y\x8a.1\xc7\x17 \x8d\xaf)\x06v\x88\x07\xbf\xd1\x8b_\xfc\xb4\xfa\xac\xfc>O#\xad\xbd\xde\xcc\xf0\x91\xf6z3\xa9^o\x86\xce\xb3-\xd7!M\xd7\xf9ZNX\x1ay\xb5\xca+\x19\xf7ui\x13\xf0> \xa5\x00\x94\xde\x88\x90*\xa4\x06\x16o\x00\x9e\x035&\x98\xe6J\xeeE\xd8G\xbe\x9c\xa2\xdd\xc5\x97(\x88\"M\xd2\x0cPEScl4\xc8\xa3\xd5cl\x1c$\x04\xa9\")\xb6\x8d>V/)\xb5\"\x00\xc2\xaf|\xca\xf8\\\x9e\xaf\xbf\x00'qy\"D\xdb\x9a\x90\x81\x0cv\xe9\x04\xd6\x06\xf3D\x1e\x1d\x9fcgH\xae\xfd%I\xa5n<\xff9HR\x12\xceI\x10\x85\x1a\xad\x05\xc6\x7fC\x83\x1ey\xda\x98\x00z-\xf2\x7f\xe5\x15\x1d\x83\x1a\xaeq\x8a\xf2\xe3\x89\xc8\xa5\xadu)|\xce\xad\xda\x8frU\x95.M\xb5\x06\x92\xfa\xdd\xb1\xe0\\\x94\xb6\x8b5\xec\xc3<\xf2x\x94\x1c\x1e\xff\xeb\x94\xde\xa6G\xd1\x9c:]\x9d\x8e\x92\x8b~\x81;\x888\xe5p\xd6\xba\xb0Q\xec\xe3]\x92\x98x)\x8d_\x93\x94\x8c\xaby2@J|m\x00\xb1\x1e\xccI\x8a\xb7\xbel*\x8b\x06\xfc\xd6\x12\xe1\xbc\x0f\xedf\xbb\x16A\x08\xf5\xdd/\xc21\xc4\x06~\x0cS\xb2\xf2\x9d\xd4\xb4D\x80\xfb\x8e\xc7\xb2b\xef\xc1>\x86\xcf\xa5<\xfe\x0c\xcf\x0e\x1a\xa2\x9e\x1c\x1f\x19\xe6\xd4\xea\xdch2\xbd2\x9c&5\x93J_o\xa8\xc5\xc5\xef\x9a!\x8fLA\xae\xda\x804\xd0\xfe\xdaN\x95,\xb0>\xc1,\x8f\xa8\x15\xf1\x88Zq-D!W\x07\xe1ej\xcaD\x06\x8cf\xbapR\x0c\x93\xaaa\xc0\xa2p\xe1/\xb3\x98\\p#\xdb\xfa\x12/i\xda\"\x0c\xa0\xa2\x0djB\xcd\x07\x9e\xff\x8d\xeb\xa87\xa13\xaccm\xd5\x89\xc1\xf2*\xcbm\xa2\x8aNc'\x1e|\x80\x1e\xc4\x83\x8f\x16i^\xa4\xf7j+\xe8\x10\xa1\x9e\x8b$G\xc1\xf6\x82/\x7f\x18\xa4\x9c\xd0\x84\x1e\x9a\xa0c5E]\x08\x93blF\x93\x17\xf1\x1aOH\xe0\xb8U\x11\xd6v H\xe5\xa8\xb6\x82\xee\x1a\x8f1\x99}\xf8\xee\xe3\x12\x91\xd3\x1e4,\xb3\x96\xe8;\"o\xddt\xcf\xcfM\xf7\xca\xe8xbA\xc44n\x8d\x84\x11#\x11\x987\xda\x88n\xbe\xd6\x92A*\x00\xc3\x01E\x93\"\xa1u\x1d\x17r\xb0\xeb\x84(\x9f6k\x04\xdb\x00T\x82\xce\xba\xde&b\xf4\xd9A\xa32\x99_\xc2\xe9*\x15\xbb5+J\x0c\x01?\x88\xe9\x92\x864f\x0c\xd8\xc7,L\xfd\x15\n\xdd\xc2\xa9gIS\xc5\x95\xe7\x88\xach\xe2\xc4\xee\xc0\x0f\xe7\xf4\xf6x\xc1\xda\xaf\xbe\xdcu\xe1eM\xe3\xe5\x83\x08c\xa7\xeb\xae\x809&{\xd1\x0d\xa8\xe0c\xcb\xd6\xb7{\xec\xd4\xc2\xb4\xec\xfa\xb7\x94\xc8\xf9\xc8;\xd5yx\x11}S\xf7~\xb1p\xc6\xeb%\xeb`\x8b\xf7\xb5\xeb\xae\xb6\xa5\x18u\xd6\xeel\xf4;\x0c\n\xa37tU\xaf\xf8`\xd5\xb1\x9c/v\xd95\xab^\xcb7\x91\xdd\x93\xbb\xd5E\x14\xc0D~\x19\xd7\xccVA\x9c5\xfe\xc0O9@\xd0\xbe\xf1?\xffS\xfe\xec\xd6\xeb\xa3\x8e\x92\x87}}[~\xa9T\xa6y3\xc17e\xb0\xc3S\xb2\x14\xef)%\x9a\xb7\xf0\x92*BX\x95\xce\x94zMOX\xf7\x99\x91\x15\x04\xc2z.\x04\xc8\xf0\xa9\xa8\xe9\xb9\xad8w\xc7\xd4\x0d\xecC\x80\xb9\xa6d\x93\x0c\xde\xee\xe0&&\x8c\x99?\xaf\x93))\x03t\x93,Y\xd3pN\xe7')\x89S\x0d\x0c@H\x04E\xcd\xbf\xfa4\x98\x1bj\xa2C\n\x8f\xa9\xe4\x87:\x90\x820\x06\xefz\xd1j\xcd\xf6\x92\xa9\xa5k\x9ePA\xfbl\xa5qC\xc4\xf2)\x995\xd1Bhb\xce\xf4\xc0Z\x16\xbbfI\xd3\x0fr\xe3\x1c/\xf4#\xbc\x83}X\xb2e^:K\xe7\xbd3\x9d\xb9\xbaKS\xf48\xb9C\xb3(\x14n\x85pw\x87I\xb3ej\x91;\xcd\x8blD\x17h\x9c\xad\xde\xf9\x1e\x96~\x95\x028;+M+\xb7\xa5\xfa\x17\x15\xeb\xed\x93>\x9cT\x8an\xfbp2M\x18\x88o1MW@\x90\xc6\xb3\xe5\xfcIb\xa4<L\xba}\xf0\x06~R+o\xb4\xe4\x81&\x8e_8j*C\xd3\xcb\xeb\xd2z\xba\x93J\xab\xc2\xfd}\xb8\xc5\x8d_\x1f-\xb7FKK\xd3\xba\xbf\x87t\x10\x92\x95!\xc1\xb27X\x91\xf8\xaa\xd5|\xc4P\xc4\x92$%\x04\x82\x89\xbe\x9cQ\xfd\x1343\xa3\x83\xf3s\\\xa9\xf3s\xbe. \xf7jA\x19\x91\xaf\x87fF.\x1a\xfb\x991\xe2\x82=\xd7\xcf\x8b\x08\xc2\xd1zbf\x16\xf3\xfc\x9c\xdc\x10\xbf\xe6++?\x1aeH\x1f^9W\xc5\xb8\xdd>(\xbf\xf8\xa5\xcf\xd7mp6\xc3\x83\xd2\x19\xb2\x0fW8m\x8c'\xaeu+\xb5!j$n\xe8\xaf\x9cs\xf5\x0d{dh\xed\xde`\xa7\xf9\x04\"t\xca\xe2\x1e]\x0f\xb9'\xcbU\xcb\"\x9f\x0e\xe5\x8e]Jk\xfa%\xd0\"\xf7+\xc4\x8f\x8b*vuY\xd97 \xb2}\xb8\xc8O\xe3\x074\xd6\x9d\xf2\xd3\x18\xf2\x01Ur\x1e\x82\\\xe0+z\xd7\x9c\x8a\x04\x14R35\xa46\xa8\xf9\xaf\xa7\xd2\xa8\xc4\xba\xbe\xec\x94\xbe\xa6qB\xab\\\xb4\xfa\x91\xa3\x83f;>\x91\xd9@\xde\x1d\x19\x15\xd4\xeaG\xca\x06\xe9`\x1d\xadMZM\xf5\x83\x0c\xb5\x98fn\xd0\xc3\x91\x08\xd3h\x84\x1c\xb5\xb8\x91\x92^l\x94\x1f\xb3\xa5\x1c(\x02q\xde\xde\xd0\xd6\x9e\x96Hx|`l\x91\xdf\xf7\xe1\xb4D\xe8\xf4\xa0Q\x0e\x8c1\x9c\xeaW%\xa6 m\xb4\x02\x91\x1f\xccz\xc1\xedp\xe8\xb5b\x9a%\x14y\xf2gBCy\x81;8\x17?B\xf1L\x81'\xffM\x03\xba$\x18\xa5\x84'\x92\xc4\xd2\x15\x86 \x95\xd9\xc0\xba\xa2\x94\xc4K\xa5\xa54\xbe;\x0c\xd3\xd8\xa7\x89\xcc\x97\xec|p\xfb\xd0i\xb0h,\xa2\x9d\xb3uG\x91\x17\xbaiWxo\x88P\xdbCW\xe1N\xb8v\x86;Kux\xea\xb4\x9eL\n;\x12 \x86X\x1d\xe1[i :z\xf0'i\xb4n\xa1\\\x03i\x00\x95\xa3\x8f\x19\xb7\xa5\x0dU\x05H\xd3\xe1l XP?\xb2\xb8\xd8`*}\xd4\x93p\x98\xd0\x01\x1eJ\xf2\n\x86-\x82\xf9eU\xd3\x14_\x93zb\x020\x83\x821\"L\x8c<\xbc\xf5\xe8:\xc5\xa8\xb4\x0f\xc4J\x06\x9c|\xa0v\x00\x156\xdf\xcd\xb4*vL\xa9\xf6\xd5\x8f\xd4J\x0d\xc4\x96\x140\xecC&\xf0\x16m\xc4\xc5NA\xef\x11\xae\x04\xaf\xa3\xba\xc4s\x86\xcc\x1d\x8b_\x85y\xe4\x12\xc5\xfd:\x1aHg\x9d\x0d\x18=\x07\x1fU\x11\xcfacC\x1b\x17B\xfd\\\x8b\x1c\xffU\xac\xf2\x1b\xcc{@H\xb1\xa4\x15\xf2\x81D\xc08\x8a\xc4\x9e$\xac\xb7w\x91\x97\x13\xe8\xd8\xe9\xd2pn3\x1d\x97\xad\xc8W\xe1\xc5>\xe4d\xabi\xa2 &\x8b\xb9kD6\xf4>tQ\xc3\xf1.\xf2\xba\x96\xd3M\xfd\x04\xe5\xd7\x85J\x18\x1bhw,\xe1\x9dm\xd0f\xb4P\xa3\xcc/0=/\x1f\xb0\x02\xb7\xa2\x10\x1d\x10\x9a\xc7\x01\xda\x96\x8b\xb9\x94\xdaV\x8a\x1b\x1b\xfe\\\\z&\xdfs\x8a\x8d\x0d\x7f6i\x1et\x1f\xbc\xa3\x0d\xd4\xfc\x1b\"\xf7F\x1a\xdfA\x92\x92\x94b\xd6\xf4\x1b?\xbd\x8c\xb2T(\xc5\xa2X\xde\x07\xb4Yy\xf8n\x10\xb7\xd6\xb0\x98\xf9?\x84\x84\x93\x8b8[\xa7-l\xac\xe5G\xe15\xed\x94*\xcc)\x95\xf1Z@~r&\xb0B\xa9B\x03\xbf+?\\\xb9\xaa\xa1\x18\n+\x10W\xb6rny-\x96*.-U3VI\"m\x10\xe8\xd5\xcfEL\xc9\xd57]D@}&\xa6)\xc5\xc6\xc5y\x8f\xfa\x02\x99>\xac+}z\xf0\x16Q\x01\x0e\xc8\xd4%\xbe2el\xcc\x17\xac\x9c\x05\xdb\xe5a\xe2s\xd7\xd7\xfc`@-^#wA\xe4\x11K\xfb@\xc4a\x99\xf6\xb11\xc7\xc2=\x8a\xa3W\x1do\x1f\xae]a\x0e,GA\x1d\xf2 \x06N\xbe\xf6\x00\xa4\xff\x16\x1cVi\xc58<4\xcb\xc6\x1fLJ\xf3\xc7\xf6a\x0c\xe2\xea\xa3R\xd3\xc9Y7\xb9\x83\x04\xf3\xc2\xfe\xd6\x98s\xd1D\x19\xc0\xfctf=\x84Q\xbc\"A\xa9\x07y5\xed\xa8o\xa4n\x1f\x0c\x1e\x7fz\xa0/\xfc\xd0O\x1a\xfd\x13\xf2\xda\x05\xc7o'2iNd\xda\xf9\xd3k\x88L\xda\x82\xc8\x84\xea\x8e\x11\xdbKe\x9csL\x0c\x95\xad\x81\xc9\x89\x17)\x8d\x19e\xe9\xa3\xe3\xb8 h\xf0P\xb2\xdd\xca\xdbC~\xfe\xfd\xa0)\xa8\x92\x80d;\xa2\xcb\x8d\x84\xdb\xb2\xa4\xa0\xd9\xb5\xb1\xd8\xb5\xcd\xfd\x81\xa26\x8b\xed\xbb[\xfd|0\xd9d\xab\x1f\xfb\xb1\x0e\x05\xc10\xcb\x11\xf0\x85GG\x8d\x0b\xf2\x03&\xca\x07\x82\xef!iJW\xeb\xb4\xfb j*\xb5\x01x\xe32\xae\xea%\xad&\x82\xea\x0eR\x94\n\xf6\xe5\x91Woc\x8c7`\xe7\xecc\x9adAzDVt\x0c\x0d\x01-\x18]{\x17yc\x83m\"p\x85\x0e?\x9d\xb8\xe2A\xa1\xab9u,\xc4@\x03q\xac\x95VM\xc0J?sy\xf6\xbcA\xcd+q\x95\x9f\xf1\x8a\x9eI\x89\x0fs(\xf2\xe6\x1d\xea\x01Q\xcb\xa7\xe9D\xaa\x82[\xfb\x0e\x11Z\xe5S\x07\xef8\xa7:[f\xb1\xc8\xfe\xe0\xdc\x0f\xaf#\x8c\x02j\xb3\x15P?\xb9\xdd\x80U\x8b\x99\xb7f\x8a\x95(?\\s\xc8\xd6n\xae\x11\x08rm-\xf8 \x90 \xa6d~\x07q\x16\x86~\xb8\xb4\x89\x01E\xabZc\xf9jU\x95\x1e\xe5\x19\xc6\x0d\xd9\xf0\xe5GL\xf4\xadA9\x0e\xcd\x9a\x85\xb0\xe0\x00\"<\x96\x10O\xfd\xe7\x8d*Z\xc9\xf6\x85\xf9\x06m&\xef\xa4\xa9Q\x10\x0dg\xe8\x14B\x18\x064\xd3W4\x96m\xd32\xc8\xca\x08\xe3\xeb\"\xafns\x1f\xa0(\x85\x1a+\x7f\xa9x\x06\x12\x13\nZ\"\x97\xc7\x85Pjb\xc3B\x0d\xdb|\xfe\xe4\x92\xb9\x8a]E\xa3\xcd0+\x90x!q\x92m\xbc\xcb~\x9b\xde\x01\x9d\xa9j\xba@\x07_m\xf0v\xe2C/1\xb6\xa1BU\xc3\x01\x97O\x9d\x82o\xe5\xad6l\x18\xd8\x87\xb9\xbd\x8a\xd4\x17\xdd\xe4D\xa8\x19\xb1K\xdcq\xd2\x9a\x99\x10\xc0\x957 \x13\xb8\x841\xac\xfb \x8e\x8b\x87\"i\xe3u\xa6\xfa\x11I\xfd\xb0\xabvZ06\xc6\xb1\x18k\xe3\x0b_\xb3\x07T\\MrQ\xc3\xc9\xf1\xae\x90Y\xa4ZV\xd2\xad\xc4\x8eX\x06F\xbaV\xfa\x99-}\xd8\x07\xe2\xf6+\xc97M\xc7\xf0\x8d\xed\xc42;S4\xaeX\x8ai\xb5$z\x99\xd7\x89\xc4\xcb\xdc\xb3\x07\x87\xd1v\xa6\x8d\x11\x1c\xda\x0eQ,E\xc3\x08\xdb\x0e\xab\x15\xd0\x0f1\x9e\xa0\xe1\xe1\xad\xed\xe1\x89\xed\xe1+=0\xa6R\x01\x91c\x9d$=\xb3\xfc\xce\xcal\xd8&?\"hg;\xf1Le\x83\x05\x93\x84v\xb2\xadW\xb7j\xee\xaa\x9f\xf0\x95\xc5\x9a\xb4Nu\xd4\xd1\xa83\xb1\x19\x1a\xe4]\xf9\xad,\x8d\xe9\x8dt\xa7W \xda\xc0\xc3A\xc9\xb2\x90\x07\xbc\x8ey\x90\xbc\xa6\xd7@\xe1:n\x1c:\x0dg\x18a n\xc9{Hr\xd5\xd9\xdf\x177Fm:\x04\xe5\xa8\xc9\xda\x13a\x10\xd7\x11 \xbf@n\x1e!\x14pE\xcb=\x8dE`\xa0(E\x03L\x05\x8bV/]\x17&r\x1dr\xef\xa2` \x9e>\xc8\xb8\xa3\xfaI\x1d\xb9\x99\xa8X\xa2V\xaf~~\x88\xeb\xae\xfaI\x9d|\xd3>\xacC\x17\xc6u\x10|\xd5\xd4\x93\xdc$\x01C\xc9'-\x07\xd2j\xc8\xcd\n\x04\xe2d-x/\xb1w\xd2Z\xb0\xf8R\xad\xb6T\x08\x14J\x06\"K;\x87\xa0\x8f{z\xcc\xa8B\x9dv\xb5\"]\x07\xd6\xc8/<\xec\xa6\xd4\x0bL\xe5\xfd\xacF\x11U\xb0\xb9F\x99\x13or\xea&\x0e*\xb3\x92\xb6`\xac}L:/\xc74\x10\x80\xa9^\x1f\x17\xca\xd8\xc2PB\xcc\xd5\xd0e\xaev\xbc6\xd3\x84T\xc3:\xe5\x1d\x943\xd0\x9f^\xd2\\\xa1\x02\xf3\x88&\x10F)\xac\xe3\xe8\xda\x9fS \xf0\x18\xdf\x7f\x0c\xbcA\x93b\xc8\x86\x0b\x9aH}\xdaE\x8c\x90*\xc7}e%\xc5\xa85\xf4\xb9&H\x0bz,\xf1\xcf\x02\x80Hh\xc5\xebK\xac\x81\xa8\xbc\xeb\x89\xf4B\x90Tm\xe0\x95\x88\xe0\xed\x9dt\x8a4D\xe8\x9dfx}!\xe2\x99\xa7\x85B_\xa8\x9b\n\xee\x02\xcf\x95\xb4\xa4P\xb2\xdb\x19\xe8f\xc0\xb3\xcd\x8f\xcb\xef6\xa0@\xbe\xfc|\xd0\xe0s\x1c !\x88#\xc4\xd4W\xab\x9d{lwa\xd1o \xae\x1d\x1e\x03\x9d\x0egu\xf4\xa9\xaf\xc3\x88\x9b\x9ar\xa0\xc9\xcbd\xcc\xc72\x9a\xb9}\xd8T\x1f\xabz|\xa0\xdc\x1d>\xd7\xd2c\xd1\xd6\xcc\xad\x9b+\xa19]\xdan\xce\x1f\xecs\xa6\xea\xed\xd9\xfd\xbd\xf6\xfa,\xcdMR\xa4L \xbd:R\x8e\xbf\xa5F\xf6\xab\xd1\x94\x0d\x03;\xd5\x0f\xac2W\xd8\x87\xa9}]\xb8\xa9G}e08\xacd\x92\x8f9\x10\x8b\xc8N M\x9d\xea\xfd\xbei\xa4\xef\xf5#E\xaaj\xd3\x16\"|\xa7\xc4p\x07\x81\xb4]\xa1\x12<x\x9f\x81\xffC\x1a#\x07T2\xed\xc6\xcdk\xca@\xa4\xbe.,\xcfh\x9e\x7f\xc1r`\xc8\x83lcd\xe7\x10\xd5X\\\x906\x9adBa\x96\xd9\xeb\xc5\xf0\x02hn\x9c\xd9\xf8\x1e\x88iDy\x94\xc3\xd8U\xa0\x9738\xd3\x187\x91j&\xd8\xcc\xb0\xd6\x9a \xd56\x86}M8s\xf5\xd3|\xe5\xec\xe7\xb7\xc7\xda\x9aM\xd2(4 \xc5\xdc\x83\xfamC3&\x04\x7fk\xf3\x813\xe17\xaar\x0c\xe1\x13\xb9\xdaF\xe7\xac\xfe'\xfd\xaf\xcff\xf7KE U\xaa\xdb\xdd\xf0Z9\x026yV\xeemWs\xecp\xd7\xca\xbd\xdd\xa16_\x98\xafq_\xab\\\n\xe8 ^E\xf7\x9f\xfb}t\xa1\x07\x14z\xd0e\xc7\xe0\x9c\xaec\xea\x91\x94\xce\x81\x84s\xf0H\xc8\x0e\xc6\x0b\nYB\xe7\x83n\x95\x92\xd5\xbf\xe5\xaeN\x98\x8e\x01g2\xdaU\xd3m\x0c0%8\xf7f~Z~\xf2\xe6\xe0\xed\xbb\x93\x837\x87\xe7'\xaf~>|\x7f <LK\xc9:\x06\x7f99>R\x9fom\x8fJ\xcf_\x1d\x7f<,?/eU\x1a\xbc>|s\xf0\xe9\xdd\xe9y\xb5\x9fQ\xa5\x1fY\xef\xcd\xa7w\xefJ\xf5\xb6wJ\xf5\x82\x88\xcc\xf1\xc2\x94}\xa9>8\x08\x82\xfc\xd9\x01\xe3 \x8a\xc7 Y\xd0w\xf2]\xf9CWA\xb6\xa1\xfcV\xab\xcd\xb3\xd5\x1a\xb95\xf6\xa5\xfa\xfek\xf9P\xfeP+\xfc\xf5\xe0\xfd\xbb\\q-`\xb0W\x9a\xdb\xfb\xb7Go\xdf\x1f\xbc\xb3-G[0Z \x98x\x84\xbb\xedv\xd9\xb7n\xe9\xd9\x9a\xc4\x18F\xd1w\xba\xf8\xb5\xfc\x14\x93\x19\xcb\xe7\xe2G\xb9\x06\x99\xcf_\x95<\xa5|\xa7[.\xeb~\x93M\xfc\xb4\xea\x06\x1d\x15\x00-\x95\x8b\xb4Z\xdb\xfaDq\x08\xbdRyV\x80\xacT\x9eh\x9cE\xad^\xa1\x01F\xbd-\x15y\x18\x07\xbaL\xaba\x1f\xb6\xcaE\x0c\x81\xb6\xcbE\xf3z[\x97\xf5\xb6\xae\xebm\xad`\x1f\x9eL\xcfn\x87\xc3\x8d\xb3\xdb\xe1\xd3\xb3\xdb\xe1\x8fg\xb7\xc3Wg\xb7\xc3\xc3\x8d\xb3\xdb\xd1\x9b\xb3\xdb\xbd7\x1bg\xb7O\xb7\xcfn\x9f\xeen\x9c\xdd>{s\x96\xbdy\xf3\xe6\x10\xff\x7f3\xbb\x9f\x9ee\xaf\x9f\xb2\x97\xb3\xd7?\xbey3s&\x1dV\xf2\x8a\x97\xb0\x1a\xee\xbd3\x19O\x7f/W\xbb\xff\xdd\xadT{R\x1e\xd6R\x0c\xeb\xe9\xceY\xb69\xdc|\x8a\xff?\xab\xd6\xba\xc3Z\xfd\xb3\xe9\xd9\xec\xec\x1fg\x9f\xab\x8f/\xd8\xe3\xdf\x9d\xc9\xb8s\xdf\xe9\xdcw\xa6d\xe3\xefg\x1b\xb3^\xc7\xfd\xf3\x13\xbf\\\xf3\xbc\xa89\xfd\xbdh\xcfu&\xe3\xff\x98\x0e7\x9e\x91\x8d\xc5\xec\x1f\x9b\x9f\xef\xf9\xf7\xbf\x9fm\xfc_\xcf\xcf\x9e\x9cM\xc6\xff\xf9h\xff\xacw\xf6\xe7\xfe\xf9\xd9\xa0\xf3?g?<>s\xce\\\xf6\xf6\xcc\xfd\xe1\xcfO|\xddYqc<+F\xc3\xc2\x8an\xb4\xc5\xbf+\xd4\xbc\xde\xd4\xa1\xb1\xa9gEK[\x9b-Z\xba}HK8\xbe\x87\x8e\xf5\xc4\xd8\xc3\xf6v\xd1\xd4\xb3\x91\xf2}K\xe9b\xb3\xf4c\xa7E\x87\x1a\xbd\xbaF\xc5,\xc7\xf0\x14^\xec\x0bgI\xf6mg\x0f\x13Zn\xb0\x07cx\xb6\xc7\xca0\xaa\xf8\xd6&\xdc\x0b\x9bF4a\x1c\x0d7\xd1\x9ca\x83U\xea1\xb0\x8cacd\x1d\x98F\xff]\x8c\x82Or\x02\xdd\xb3a\x97\xf7\x9c\x97\xfc\xff\xb0@\xadr\xc1JF\xa3]\xa5(\xc5J\xd5\x82Q\xbe\\\xac(\xe4EjK\xd7X4\xdcT\x8a\x16\xbc\xd6\xb6R\x14\xf3Z\xa3\xa2\xe8\xff\xcfJ\xb6\x94\xd7\x00\x0b\x8a\x97\x1ew\x1f\xc3\x18\xb6\x95i<\xc1\x11\xaa=\x9d\xb1\x92=e8\xff\xe7\x7fc\x9d\x1d\xa5\xe4\xff\xc6:\xeaL\x91*\xb0\xd2\xa7\xc3J\xe93V\xda\xedZ\x17\xe1\xc0\xb8\x08\xb8\xfe\xbb;;[;0\x01\xeet\x87y\x0b_]\x92\xf8U4\xc7\x9c\xa8c\xed\x83\x9d\x9d\xcdg\xbb\xd0\x03\x87!\x0eka\x17^\xbe\x84\x11\xe3uvv\xb76\x87\xe5G\x8f\x18\xbc\xb7\x14o\xd9\x82_\xcb\xed\xe4\x8e\x85\x9a\x043\xee9\x9b;\x8c5\xfb\xa0);\x054\x97;\x85\x17\xb0\xb9\xb3\xfb\x1cN{=\x17\x8e\xa7\xa73\xd8\x87+\xe7\xd4\x85 \x8c`\x0c\xc3>|(\nu\xc4\xe9\xbdV\xc1\xa9\\\x94Dx\xdf\xc7\xc3\x17\x0f\x16~@C\xb2\xa2\xa8,\x0b\xd7Y\x8aN\xb4Q\xe2\xa7huH\x07\x81\x1fR\xb5\x0c6D!:\xd0\x97\xe6^\x1f\xcb[\xedX8\xcf,\xc6i}\xff\x0f\xed\xfbt\x10\x85\xbf\x918\xf4\xc3%w\x8d\xce\x7f\x8a@\x85\xa8U\x12\xed\xeb\x16\x87\xad\xcbQMe\xc4\x18\xb7\x9a\xd1\x99V\xb9{]$\xa4\xab\xcb\x8e\"7\xf0>\xd0\xc15\x8d\x136\x8dG\x8f8$\xba\xf3l\x1d\xf8\x1eF\x1d\x84h\x01\xff\xc1\xba\x84\xb9\x1fS/\xf5\xaf\x91\xc7\xe2IC\xf2\xa4:\xf9\x9b\xe5\x9a@<\xc6`&@o\x89\x97\x06w\xc0d]\x99\x03\x12\xe3E\xb3A\xb0-\x85w\xe0O~w\xd8\xa17\xeb\xb9g\x03\xf9\xed\xcfO\x06\xf4\x96zN8\x1d\xce\xb8\x17\x1b\xef\xc8\x0f\x82\x8dE\x14\xaf\x98\xa4\"\x1a\x04L\xb0I\xa1>Z\xc6\x8e!\x03\xf96L\x9d\x18\xc3B\xe2^\xf1\xcb\xe5\x9b\xb2\x9c\xcf.*z\xcbB>\x13r\x11\x88\xf6%\xccD\x9f20\x1b\xe7?\xe5\xc3}\x081\x12%\x1dx\x97\xd4\xbbz\xe7\x87\xf4\xc7\x98\x92+\x0c{\xc1v\x90\xec\n\x0d\xdc7\x8b\xaf\x7f\x88^\x93l\xcd8Y:o\xe8\xb4\xb4\xba\xd5\xccb\x07?=\x0c]\xea\xb8\xb2iX\xed\xd3\x83\x9f,\x8b\x9d\xdeDE\xc2O\x06\x988\x07\x08\xf2\xc7\xb8\x0e\x17\x83\x94&\xa9\x13\xa3\xa8][\xda\x94,\x81'o\x01g\xe1\xc7I\x9a7\xe8J \x94\xc6\xc0zI\x84\xeef\x90\x92\xe5{\xb2\xc6\xcb[9\xe2\xc7\xe9%\x8d)\x9a\xbb\xc1:\xa6\xd7~\x94%\xc1\x1d\xcc\xa9\x17\x90\x98\xce!\xc9\x16\x0b\xff\x16\xa9b\xf71\xf4 \x86\x1e<\xee*\xc3x\xec\xf6\xe1\x9c\x0f92\x0fy\x1dS\xd6\x8c\x93P/\n\xe7-\xc6,\x07;\x8dg\xb6xr::\xfa\xd1b'\x89\xb7\x0cy>\xb5\xf2\xba\xa2f\x10^\xe8QA\x18\x93Ib+\xdcH\x11q\x8c\xd1\x81\xf1(\x89\xb8\x83\xad\x8fw\xbfB\xed\x06\x11\xbc\x00\x9f\xfd\xe9\xed\xc3\xc8\x15<\x83C\xb0\x8e'\x8e\xb4\x03\x06PW\xf0~/\xf6y|8\x82|\xcfh\xb4=\x1a\x8d\n`\xd3\xdb5\xf5\xd8\x9e\xb8&\x81?\x87\xbf\x9c\x1c\x1f\x15\x11\x0cuv\x8bhp\xb5\xe2\xab\x96)4\x84-E\x92\xc6\x94\xac\xd0\x16\x89\xf8a\x02a\x14n\xacc?\xe4[=o6\xd1\xb6+n=\xd8\xbc2\xd3\x9ai\x96\xecu\xb1d5\x87M\xbc\x7f\xe1\xeb\xd5\x87\xa0\xdc'B8\x1e\xf8 \x17\xfd\x9cP\xc1@\xa1\xaaY\xd1xIaE\xd6k?\\&\xcf\x11\xdb\xc4\xdd\xd6\x1c\x92(\x8b=*.9\xd8&P\xc9\x1aC\xc3\x8c\xaf\x1e\x13\x16\x1d\xc58\xf6\x8a\xdea\xa2\xb7|A3x\x01\x01\xfb\xc3\x17\x14\x9dd\xa6\xd9,\xdf{)\xda&`r!\x1e\x95 \x9c\x12\xb6\xeb\xf9\x0fU#\xae\x03\xcf;\x05\xa3\xd5t\xaa:P\x05}\xf0\xeax\xcd\xb0\x90\xb3MN\xa4\x9e2y\xc4\x11\xf8\x07\xe6\x83N\xc9r|GV\xc1 \x8a\x97\xfd\xcd\xe1ps\x8c\xf0\x13\xa6\xf3u4gm\xf3\xf4\xd2~\xc2\x99\"\xdf\x96\x958\xe0\xe0\xf4\xf0BL\xc2.\x80\x17\xe0\xb1?\x1cv\x12\x17\xfci0\xd3\x9b\xe4!\xf6\xe6\xd5\xeau\xf09\x1d\xfc\x91\xf0\xbb\x95$\x8f\x82\xcc T\xa7X\x13^\xe0p\xbe\x08\xd8\x1e\xc3\x0c_5\xd6i\x1f2\xfe\xa4`\xb0\xca|\x01\x9dK\x14\x83+z\x87!M\xd2i\x84\x17\x7f\xf9\xadM8\x8dfZ\x01(\xb5.\xfe\xa7V\xb2\x94\x102D\x8aMN\xa3\x14JR\x8c\x1c\xf32\x15?{=&Vl d\x98\x80\xa3>\xea\xe7\xa2\xa6\xb5E\xce\xcb\x15\xaf1\x1e\x9d\x83\x87\x00\x02\x16\x9d\x9e\xd8\xf6\x92\x84\x8aSx|\xd6\xc3\xe4C\ng\x8a\x13\x90\x8dY!\xf37\xd3\xd9]J\xc69\x94\x19\xfflSx.\xb2~GZchqyr\xe8D\xees\xd7\xd4Z\xaf\xa7\xb6\xa7\xdd)\xb8\xdb\xb6\xb8he\x08\xf0?\x8f,\x979mz\xd6\xbe\xfc\x19n.}\xc62\x8c\x86\x05#7\xda*\xbe\x8bb\xc3\xb8;7x\x14\xe12\xd6k t>a\xf2\x90f@\xf7!fx\xc5\xd7\xfbm8\xe7\xe6\xcd\xc3\xe7R\x90e\x0b\xa0>d\x95\x1f<\xed\xcf\xba]\xb6!8\xf4b\xba1G\\e$/\xf8c\xcel\xce\xe9\xc2\xf7|V\xec\xe3S\xe4\xfe\x91k\xb3b\xe5\x1b\xc3~\xed\x8bD\xb3r\xc8ZR\xd0q\xb6wpl\xa6\x8d,2\xe7n\xefr[\x01\x0c\xfd$\x84\x96z]\xe81\x82\xdaTe\x93\x13\xc1\x90m\xc5\xad\xbe\x80MC\xff\x9d['u\x1bd\xc8\xbfke\xc0QNjTf\x81\xeb.R\xcc\xda\xcfc\xce\x15\xcf\xe2AL\xd7\x94\xa4N\xf7\x0c\xcdd`\xa3\x94(K\xd7\xf5\x8f\xda\xae\xafE\\A\x89Q)\xd1X\xe2\xf9\xdck2\xf4.\xaby\xb3A\xa8\xa5u\x99Q2M\xae\x11\xeetQ\x08\x95\xbcM1=\xfe\x831\xb8\xf2;;,\x88\x90 \xda\x11+lk\x9b\x93\x13\xfc~\xebX_Dtp5\x97\xbe\x92\xb9\xed\x0c\xfbP\xa6\xffHbY\xf1\xc6\xc8\xad\xef\x96}\x06c\x99\xbb*\x0b\x82v\xa3\xafu\x9f{.\xf0\x0d\xc2O\xdf\xdf\x04q_\xf0<\x1e\x1d\xcc\xce\xc2\xbb\x92\xc8\xe1\x96\xc7\xd7\xa6\xf3~q\xd8#-\xc8\x8f{1\xa5\x97\"^\x8c\x00\xb0+\xce\xb1\x0b2W\x89\x00\x93Z\x08$\xf4o\x19\x0d=\n4Lcm\x94\x80|b\x15\"\x93ji\xa9$\x01\x9dL\xe0\x08\x13\x9c\xd0W'\xc7\x1dd'\xe8\xe0\xca\x0f\xd1\xaaG\x8e\xa0\xdb/6\xd3>\xe3\x0c\x9b\x18\xca_\xcd4*g1\xf95\xbev\x07T1\x9dMq\x8b\x9f&N\xf3\x11P\xd8\x0f\xe8\xdaQ6\x0c\x9b\xbfI\x03C\x84X\xc9\xafv\x18U\xde\x15\x1cP\x9b\xd3\x82\xf1@\xc8\xcfw\xcc\xdcA\xe5\x851lq.)b\xef\x12%\x01g\xb7\xd3\xe9\xb6o\x85\xbf\xd1\xedC\x99\xd11\x98<\x1b\xd9\x816\xdd\xd5^\xcc\xd9\x00\x85\x0b\xd8\xdd4\x1e\xfd\n\xe5(lF\xd8\xecc\x9d \\\xdaem\x86W\xb0\x89Y\x98K\xb04\x9cK\x9d\x80\x10Do\xfc\xf4\xd2\x0f\x81\xc05\x8d/H\xea\xaf\xd8\xcaW\x15<\xa6p \x82sS\xe6\xdb\xb9\xe5\\\\\xbe\x9al\xaf\x11\x98H \x98,\xa5\xceC\x08\x90B\x10\x06z\xeb\x05d\xc5\x11pE\xe2\xab\xa4\x9b\xa7k\xae\xc0\x82\x1dP%\xf1\xa1\x87\xc9\xed\x84bG\x95QCR\xd1\xe9T\xfaL2\xef\xb2$r\xcb\xcc\xe5U\xf4\xe1\xa4\xbd\x1d\xdc\xeb\x0b\xdd\xbc\x9ew\xb9R\xaa\xd0\x15\x18!\xb5\x08\xa2\x1bF.\xd9v\x8d\xe2\xd2\xf8\xcb\xab\xa6#\x7fx\x90u\xce\xf5\xfd1x5\xc0h\x8c\xf6\x1b\xb1\xcb\x03KH\"\x1a\xc3\xb8\xae\x06\x0b]\xa5F\xaep\ng\xa8\xe6\x1a\xb3]*N\x89\xa2\x16+\x93Ou\x8f\xeb\xf2\xb3\xac\xcf\xb5mY\x98k\xd6\x94UG\xcdZ\x88\x9a\xb5\xc7\x98\xda\xdeJ\xbc\x7f6\x13o\x0dY~\xca\xc9r\xf8\x15d\xd9\xcc\xc8\xe8Is\x08\xa2\x86J\x9e\x0d\x03(af\x15\xab\xe5\xc6\x0d\xc5\xc6\xe5\xa2f\xe7\xc4 \xd9\x0en\xd3\xa2\xf6\x84U\xb6M\xae\x03)\xf6cy\na4\xa7\xb0\xca\x92\x02\xdfH\n\x01%I\x8a\xaa{E\xcbV:\xa6\xed\xbb\xa9a\x81\x7fS\xb4a\x9as\x01\xddqQ\x1b\xb6\xea\xc3\xb2\x0fw}\xb8\xe8\xc3y\x1f\xae\xf8e\x94\xe6\xd0~o8\xcc\xff0\x1c\xe6\xcab\x07~\x92\xd2\x90\xe6\xb2\x12\xff\xe5t\xa35\x0d1\xbfx?\xc7~~}\xa3@A\x16\x08~E\xfe\xcc9\x15^\x80jO\xd8Gc\x88u\xc1\x97-\xf8W\x11q\xad\xca\x88:\xefs~\xb5\xcc\xbe\xc1\x84\x03\x01\xd3_\xa9B\xa6\x90:\xf0\xba\xae\xfa\xf0\x85P\x84\x9d\xa2\xf1\xa5\x8b\x17\x1e\xec\x85\xd3\xfa\x19*N\x14\xe4\xa0\xee\xefq3>w\xcb\xc3\x9b\x14\xa3[q~\xec\xbb\x0c\x12\xc6\xd8\xbcn\xfdV \x832\xbfg\x83\xf4\xf3\x1b\x9cS\xf6`-6\x15\x93\xfa\xce1\"w\x0et/'i\x98\n\x80\x1d+}\xb8*\x1f5\xa5{\xc4\x1cR0\x01\xde+\xca^W\x08\x9c\x87\xdc\xb1\xf4\x0b%ob\x96\xce@X\xee\x98%4\xf6YXBr\xcf-\xcf.%Nj\x9f^[\x9f\xae\xacO\x97\x86\x0d\x08\xc2\x8eF\x97\xa7\xf2\x0b\xe4\xc7\x85PY\xb7\x93\x1f3\xa3\xe7\xbf\xf4Vn\x16'\xfbB`\xe6B\x1b\xa9\xf0\xb4\xbb\\(@\x81f\xe7\xa9\xf8~\x7f\xcfhyl\xb5\x84F\xad\x13\xd2\xc1\xb0\x0f^.\x02\x1auP\xea{\x8a\x80\xd7\xe8F\x880n\x03\xb1C'c\xfb\xdcP\xb5\x81\xbfR?l\x84;\xdc\xde\"s\xe1\xd6\xd4y\x85S\xce9F\xc2X\xf8\x94&k\xe2)\xa7\x8f\xaa[\x05td@\x0e\xfa\x8a\xdemp\xd3\xea\x84\xae \xf7\xf0\xc8\xd9\xe9\x8b \xf2\xae\xa4\xd6\x9a\x1d_(l9x\xd7\xb0\xe8\xc3\xbc\x0f\x97}\xb8\xe6w\x05n\x1f\xf7\xc6\xb5\xa0\xd2\xa2\xe8N\x109\x81\xdc\xc8|\xb2\xbf\x97\xf9\xfe\xc57$\xc1\xb7\xc3\xa5e<?D\x8c\xbb\xc2\xf0^\x1c=I\xe9\xdc \xfa\xd6H\xab\xf2\x93\xdf\x13\xa1\xb3KL\xc9\x9c\x1d\xfc\xfe\x8aq3~\x9a+\xf4\xd7\xc4\x8f\x9f\x03\x01/\n\xa2\x90Az\xe5' 59B\xc9\x8f\xd9A\xafU\xec\xc2o5O\xdd\x1c\xcbK\xcf\xd5\x17l\x82\xab,H}\xdc;W\xf4\x0eV\xe4\x0e\x84\xad\xb3\n\x15\xbc\xde0\xcfM\xfbD\xccx\x97\x8b\\\x19; \xbf\x0e\xd9\x84\xd4\xde\x19\xb2Cp\xc9\xdbSppX\x88\x96~(\xc3r\xb1\x0d\xa2_X6[\xe4\xf3\xf2\xb5}\x8e\xe1\x1f\xa3 \x88n\xe8\x1c.\xee\x80\xe05hJ.\xb2\x00/{\xe8j\x9d\xde\xe1\xe5\x06g\xfc\n\x9a\x88\xd7\x19\x9996 [\xd8\x12\x892\xea\xa0\x1c\xc9\x07\xae9k\x11\xf1R6]u[ 6@Q\x8aa\xce\x90:lW\xc2\x1dV\x0b\xde\xb2\"\xad\x99\"\xba\x1a\xa6&\xd7\x9beV\xbdY \xefLQu\x9aTg\xb5\x97\x8c\x9e\x1b\x88i&D\xbb+\xa9\xdaj\xbb\xabP\xb5I:Y\xe2_\xd9q{W\xea\x17\xc3I\\\xf5\xe1\xdc\xad3@&\xee\xa7z\xab\xdbg\xe3\xf0p\xb8\xeb>\xf2+\xa6\x04\x88\x97vF\xe9\xba\x91Q2\xe5'a\x80\x17\xe6\xa0\xce\xba\x19\x17\xf8\x9d\xd8\xb3\xad\xbe\xd0\x83sM\xac.P\xbd\x85\xf2\xb1>G\x9b\x9caX\x1beQ\xf9a\x1d\x8e6wD\x8fC\xde\xe3?\xda8\xf4|\x01[\x15\xbb}0\x80\xa1|\xf2\x0b\xfc_[\x19\xab|\xab\xb1\xbd\xda\x06\xbc\xe2\xbe\xb0.\xbe\xf2\x9b4\x8e\xbb\x97%\xdc\xbdVp\x97\xd1\xdb\x1c\x7falR\x1b\xc7\xe6\xc3d^\xf0\x1f\x9c>\x82\x17\xadV\x04.hzC\xa9P\xf8xQ\x10P.\xc0R\xeeD\xc8H\xa3\xc7\xb6\x95H~\xc9\xc5=\x1f\xef\xd99\x9a\x88\x13a\x0dm//@F*%\xf6\xeb\x8a\xd4\xcdU\x0e\xe5\xeb\x84@\xb9N\xf0\n>%Q(h\xa9\x19\xe3\xc2\x97\x05z\x02\xf9\xe5H!\\ \x8ew\x8d\xe4Xj\x9b\xdb\xe0Qe\x04\xba\xb1/\xca$\x9f\xad1\xd2\xb8\x18\xe9\xbc\x874d\xc1]\x81'\x10\xf3{\x13\xac\xc0\x17A\xa9\xc3*\x89\nI\xb5ga\x1e\xde\nI'\xe0\xcc\x1f0G\xd6-\xd6\x1f\xb5\xd8\xb3\x0fQ\x13W\x90\xb1\xaasd-\x9d\xb3\xd1\xa2\xee\x83 \xd9<\xfdn[R]\x15T\xe7f!\xd5$\xf0y\x96g\x0b\x0c\x8a\xab}\xb4\x86Z\xfe9\xf9\xd1\xe9\x01 \xa7\xa9b\x11I\xf3\"\xba\x82\x87\x7f0\xe1\x16\xb7\x08\xa4\x15\xddntP\x04I\xa6\x95\xab.\x8f\x04$.S\xacnW\x12\\b\xf0deC\xdb\xde\xb2N\xbf.h\x89\x1bU\xe22\xfc\xdcg\xe4k\x82+-\x1a\"\xc8\x7f\x8d1\x80\x17\xc7K~=\xcd\x99\x1b\xef2Z!w\xb3B\x86\x92q-\xfe\xc2\xd7[\xe1A\xb3\xd8\x83b\x80\x83\xc4\x83\xbbI\xa0\xbc\xc8\x93ne\xb9\xb3D&\x9d%6F<Ka\xb3\xa0<\x14\xcc\xe7D\xe1\xd4r\x06Ye\xd9n\xfcyz\xc9\xe7\xc6\xc5\x06\xbe\x12\xcf\xc1O\x15o\xc8\x80& \xa4\x97$\x84\x88\xb1\xc40\x06/oZ\x01O\xa8iZ\x85\x11\xdb\x8d\xb8\x03\xa0\x07>\xbfF\xf1`\xdf\x18\x11\xbe\x8e5\x0c^\x87\x0e1\xea\x16\xac\xe65m0D?\x0ey\xaf\x86]\x9b\xf9\xfe-\x89Y\xc6!X\xc7\x07_3FP\xc7\xd9\xb9q\x88r\xcf\xad\x19\x90aC*\x1b\xce0P\xc5\x1a\xa8j\xe4\xd37\x8d\xbe\x9d\xf2\xc4\xe9x5Y\xe9\x05;\xe4\x1e=\x92\xd6CDc=\xd4\x06b\xe6%\xebxP5{x \x0bdC\x169{\xc1\x1f\xb8}\xb8A\xd4[\xf7z_\xbc\xd9\xeb\xb3\xb3\xe3C\x82\xf3\xbe\xae\x98\xd3TLf\x02\xf4A\xe9\xc1\x1a\xc6\x8c\xb5\x1e\x8b\xb70\xc4\x88\xcc\xf1\xa8\xd8\xe2\x9c\x85M)\x0f\xecA\xed\xcd\xaa\x0fa\x11=\x01\xb6Q\x18\xc7\xb0\xca\xd9\xb8\x96\x83\xe7Zo\xf9\xe6\xc8\xfa\xe6Z\xf0\x8ccA\xed\xd60\xd1M\x17\x90\xee\xd8\xdaix^\x1e!\xb7\x16\xee\x0c%\xe9\xea\x8b\x83\xbbj\xfe\x05\xd5M\xf8\xdc\xfd\n\\e\x9f\x8fB_\xaaj`;\xa3\xb6\xa4\xd3(@W\x8ek\xc9A=P\xbc\xd53'[\xcf\xbe\xfez\x12\xdar\x0bUi!\xc6\xec\xbd\xfb\x9a\x0b\xc76\xe3\xb1\xb0\x1c[\xdc\xa0\xdf\x9a\xf2\x82\xd5\xfb(8\xf6\xd2\x821\xee\xbe\x01,e\x9e\xa5\x00\x8cE\x17\x18\x97\xe6Y\x85D\x19\n\x863\x0e\xa9\xd7\x8d\x83\xb7\xe6\xf9\xd0#1b4\xf6\xe3\xb2\xc3H\x88_u\xf0\xf2}\x94Kt\xfb\xfb\xfb%\xc3\xdfG\x8f\xb8\xf1\xe4\xc4\xca\xefK\x1f\x9f\x82\xe3O\xfcp\x19P\xf8[\x16\xb1\xaab\xedEBJ\xf3,5\x1b\xe9!b\x86\xbe\xd3o\xb1ST\x01\xc3\xb0k\xb69z\xb4P\xd3}\xfb]\x13\xa29\x85v\xd7\xb4\x18\x8fU3\"|W\xb3|\xd0Z\x8a6t\xabC2!>\xaa\xb16e\x9b-\xf6\xa2\xae\xab\x9bvW4\xae\x8a\xfd\xe6}\x98\xeb53\xee/\xca\x90\xfex\x9a\xcd\xdc\xd2\x01\xf3\x01}G\xd4I\xb6h\x11%\x9c\xd1\xa60\x83\xc3`\x93l/m\xa2+\xf1^.\xcal\xc3\x18\x9e\xee\xe4?\x99\xd80t\xe1%\xfb\xaf\xc5]Y\xc4/\xb4}n\xb4\x1d\xb1\xf7\x9eC\xb4\xb1\xe1b\xef\xaf\xda\xc2\x8a )0\xc1f\x1c\x1f^\xbc\x80m\x17z@r\x91*\xdf\x81\x97\xf4\x96\xcc\xa9\xe7\xafH`wiR?*(\x0f\x1c\xbf\x82/f\xbe\x85\xc3RR\x81\xab0\xba \x81&\x1eY\xd3\xdc\xd8\xd3\xd6u}g\xd8)iVPR\xbe\xf5M\x94\xb4\xde\xf0w\xa2\xa4\xf3(\xbbhCI+\x83i\xc1K<\x84\xb4\xeaG\xa1%\xad\x8a\x1aG\xc95o\x0e\xbd\xc6!\xad\xa7\xaa\xdb\\\x87\xd1|\xf1\xdd\x86\xaa\x1a\x1aie\xee\xc4M\xe0n\x85\xf5[\xe7\xc4\x89\x19\xd9l\xd3b}0\x0f2y\n|\x92<\xc8\xe2Ic\xfc\xd8/\x9b:)*\xf5J8\x16\xd5\x10\xf2q\x16\xe6j\x80\xb9\x18G\xc5(N9\x93T5}8\xab\xde]\xd5\xd9U\x86&_j\x8a\x82ZWO\xea[\xd9IiV\xce\x99/\xba\x19z\xdd:^3b1\x88\x9c8\x1ew\xfb\xe4D\x1a\x85\xde\xad\xa7\xc5\xf7\xedM\xa5|\xab\xf8.\x15}\xf8cW\xad\xf4L\xf9\xae\xd4\xd9\xdaS\xea+\xe5\xcfx\xa8\x07\xcf\x8a\xe5x\xe2\xec*\xdd\x0b\xb5\x99\xc7u\xf4\xb7\xcd\xdbHHg\xf7\xf7\xdc\xbe\x8f\xa1y\x8b\x8d\xd5\xcc\xaeD\xe8K^fw\x85\xd5\xba\xd8`\x9e\x95\x0b\x11\xd6\x19\xd6Dp|A\xbfh\x8a\x16\xe1YI\xaf\xb8\xb5\xd3v\x10\xf6\x01\xa0\xafL\x8b>\x9b\xb4\x12\x8dGM1G\xafY\xfb\xc8\xda\xbc\xc1\x8a\xcdV\x10Y\xaef\x91\xd74\x8a\xf1Y\x90\x17p\x95\x89rrn\x8cjw\xd4\xfb\xf6\x04o\xf2C\x14\xf9\xfd\x8b\xb5U\xe2#S:X+\xda\x839\xab\xc0\xe7\xfe\x1f\xdcx\x80\xd1'u%\xc4\xfduI\xe7\x16|{=\x8e\xbe\x14/\xc08/\xc3\xe9gg$y\x191\xde\x0d\xc8\\\xdb\xe6t\xfbp((\x9fS\xae!\x0c\xcd\x0c\xcb\xd1\xe0\xf2`:\x11\xabC\xedtr2\xc2]\x82\x05\x99Y\x94\xe8\xcb\xba\xaeQ\xe1\xacH_ZQr\xf2\xf7\x87@\xa1\xdc\xd1:\xf7f\xc9\x8d\x0d\xba\x93.\xea\xa6,u\x95\x12q\xb3[\xd8\x81\x15gur\x19e\xc1\x1cmu.\xc95\x05\x12\xdeI\xcbk\xbc\x84\x95\xfe\xde\xad\xaf\xbb\xf3{\xc5Buv\x9a\xcf\n\x8d<\x85\x8dg\xa5i1\xean\xa7[\x14\xe8\x9d\xcd\xba\x93n1S\xab&y\xc9ugw|\xed\x85\x11\xd2\xe9\xdd:OZ\xf7\x1c\x96\xf0\x02\xee\xd8\x1f\xf4\x1f\xb7\xd2\x1c\xe7\xa2\xde\xcet9s\x072\xe0\xbb2u;\x9dPp\xe2b\x90'lW]\xd3\xe4:_\xf0\x1b\xe6/\\\x82o\xbb\x7f\x05\xb1/<!\xee\xd6\x94w\x8d\xd8~\x7f\x0f\xdd\x05 \x82\x0b\xe2]ug}\xb9<\x13\x10p\xb3V\x9fb\xedYi\xa6\x02F\x8f\x1e\xc1\x05\x7f\x85\x17\xe3W}(\x19\xc4h|\xce\x96\xbf\xf3\x02\x83q\"${\xf0\xf8%\xa4d\x897O\x02\xe7/\x84\xef\x84h\x9d\xf1\x8a}\xdc\x08XJ\x8b\xd2\xc7\xe8\x7fS[e\xee\xf0\xde\xb4\x92_\xb8t\x85\x11\x9a\xb8'\x13\xdd\xa31\xd9\x9c\xa2\xbcS\x99a\xf7eq \x87^N\xaa\x8f\x14\x97GY\xc5\xeaKU\xa1T\xc6\x8cj\xb6\xe2\xf7\x82(\xa1\xc2\x8c\xbf\xb2\x93\xd9\x81^\x9b\xf8\xfd=\xfc\xf1\xa7\x02\xbf\xf2\xaf\xb9\xef\xc2_\xday\x16*\xe4\xbf\x86\xa4:\x0fC\xc1\xfa)a\x84\x84/A=\x8c\x10\x1d\x04tI\xbc\xbb~\xee\xd2\xc3-\xbeU\xb1\x81\x9b=I\xb5U\x0b\x97E\\\xf1\xb2\x9c\xd1\xfcV\x1f:N\xe5\xe6h(\xf8\xee\x0eZ\xf4\xe8\xb5a8W\x02\xed\x9d\x13Mrd\xc9\xdf\xadMC\x16Yv:\xebk}\xddJ\xe2\x9e\x8c\x87\x02/\xb8\x1b\xb7p\x0f\xca\xe3!\xa1\xac\x89\xa2\xa5\xee\xdaX5g\x0e\x81\xb7\xd4m\x88\xcc\x00\xdf(:\x03\x94ohkAh\xd4O\xe3\x1dm\x9b!\x98\x89\xb6\xc6G\x93\xc7_0\x1f\x05\x16\xee\xde8SkH\x07\x90`\xfdn\x88\xc5>\xb1t\xe7\xb6`T\x0b\x86N\x19\x13\xbfw\x16\xc7\xdb\x91\xf0\xf0;\x9a\x863\xa9cc\xf4\xf4\x0f\xa1q\xe0\xf44W\x82\x15hZ\xd2<\xfc\xc9\xdcy\x99\x1e\x0c\x15\xd1H\xec\xf7\xc2=\xdfN(\xdaV\xe4\xf1\x1c\xdaW\xdet\xcb\x11]D\x84\x07u\xdc\x0c D\xb3W\x13T\xd0\xadH\\\x8b\xdb\xf2[\xc1\xd3\x8bi\xa2\x9d\xc6Z1N+\x03\xa6N\xa4\x1f=\x82%w\xf0,\xaf\xbd_^{\xc8Cq\x84Q\xb8qp\xf2\xea\xed[%\x9eL\x02$\xa6\xe0\x87)\x8d\xd71E\xc7\x87\x04\xc5\xad<\xe8\x9c\\\xda\xa4\x166\xa0\x85<;\x81\xed\xddf \xbb\x82\x15h\x80\xb0RA\xf1\xa4\xdeP\xa9d]\x1f\x1a\xc5\xa8\x0b\x15\xe8Yxp\x94\xd6\xc3z\x18\xff\xd5\xd1Fa,bAQqv\xa0\xcc\xc3\xce\xc8\xa1\xe4\x17\xf2\xb8v2d\x0c-\x03\xa0\x98\x02\x82@\xc4\x92\xb1Wrhn^\xd0\x87\xdd\x9d\xcd=\x11+U}i(k\xb2r\x8e\x15#\xb7J\xfb\xaeE\xde\xe9\x90\xde4\xdf\xaca\xe6 \\B\xc0DL\xf8[F\xcfds/~\x08\x96G\xd4Id\\\xf6T~\xbd\xbfg27>,\x02Y\xb2\xe7\xc5\xafr\x13\x9c\x13\xc1*\xe2\xeb\xfd=W\xeb\xb3\xa7\x18\xa0\x8a=\x93\x91\xaa\xf2'9\xbb\x86o\xca\x1f\xe5\xb6KB\x8cL\xc2\xcd\x07\x8a\x81\xc0\xfd\x80\xce\xdf\x8a:2\x97 \xe7\xdf\x0d\x95O\xf9\xd3|\xe8\xb8v\x052\x88rE\x171\xccG\x8b\xea\x08\xf5\xa7\xd4H\xa8e\xaa!\x10O\xf7,\xf7'\xf2\x17eB\xcb\x97S\xc3\x04\x86b-\x11\x93\x86\xdd<pPX\xdf\xa6\xa1r\x00\xb9\x10\xaa\x83\xe0n\x1aai\xdf\xeaX\xce\xe7j\x9d\x17E\xc0\xc7\x0d\x18=w\xe1/\x8e\xc1\xc38,\xe6f\xdd\xa0\xbf\x98\xd4\xd1\x8a*\x1a\xf6\xf9>\xaev\xe5\x97s\x93t\xf2\xdc$EZ\x12_3#%$V\x11\x82-\x86\x17\x10\xb1?<\x04[\xea\xf8\xd3xf\xa7-?i7\x9c\xdc\x99\x7f\xd5\xad\x1f\x1b\xb1p\xe8\x96\xd9P4\xfb\x95\xd5\x1a\x89%\x95\xb5$X\xa7C\x8dOA\x91\xc9!r\x8a\x8b\xc3\xfc\x86>\xa7\xa0~\xa8P\xd7>\\d),\xa2\x8c\x9drQL\x1f\x94\xc9\xa1He\xf0K\xbf\x9e\xfa\xe0\xa7\xbe1kA\xd3-D\x8b5E\x94\x89\x07\xf46\xa5\xe1\xdc\xa9\x83\x8fo\xea1\x90\xf2|Xg\x95\xe5\x90\xc8\xf7\x85\x8d\xfdI\xf9\xa9M\xe3`\xa5\xccb6?}\xe9l\xea\xf1\x81\xbf>c\x81.\x98h\xe4\x94B/V\xa7\x81tL\x1c$\xf2l\xb9\xc8\x16\x0bN\xba\xeb$3,\x93\xccX\xfc\xf4\xa2 [\x85\xa5@\xa7\x05\xde))\xd8\x07K\x9a\x9e\x84\xfezM\xd3&\x00\xd7\xcc\xd5\xeb{\xb1\xa3\x0c\xd7U\x95\x06:\xd9\x1bD\x00\xf8m\x85c\xd8\xdb\x11\x11p\xc4\xadKi\xb6\xc2:\x80\x1d\xe7\x1b|?w\xcf\x86g\xf1Y\xf8\x7f\xfe\xb7\x9aU\xa0;\xf0\xc39\xbd=^8\xcah\x90\x8a\x1f\xa4N\xc4\xef/\x0c!\xab\"\xd8@2^\x06\xf2\x06\xf6\x9b\xc2\x13\xd8\xe4\x9c\x87^X\xc3q\xc3`0\x00\x1c|o\x1fv\xf4RJ\x1bw3\x04\x91/ A\xea\x90 \xf0B\xc5\x0d\x85\xbd\xfab\xd0\x10#X\x1c\"\xc8\xf8F\x052-\xa0\xe2\xabP!\x0c\xbe_\x01\x15\x81Q\x99\x84\x87\x98\x00\xe7\xea\"\xee\x8aX\x98R\x02\xaa\xa1\x84\xe4\x95\xa1\x01x\x8f\x07\xcc\xefUkAO\xb3\xe6=\xe5\xbc\xe8A\xf7\xf7\xaeJ\xa0\xd4=\x94F\x9c\xfb\xb5\xe6\xe6UB\xf6u\xbb\xda3\xbe\xd8\xfa\x8caE\x0e\xe2\xb1\x1fr\xe1\xb1x\x86\xd1\x92\x1f\xe3U9\xe3XH\xca%\x186)\xa7\xa0\x04(\xd7\xf5\xd8\xdc\x04%(\x9e\x8b\x02~\x05\x82;\x10\x85r|VP\x03G\xa8\xa8x/c\x0e5\xd4]j\xc9tNi\xbe\x92h\x8ev\x953Em\x9d\x9d\xc6\xb1\xa3 \x87\x93\xa4q\xb7_\x81\xf5\x95\x1f\xce\xc7\xc5}n\xe9Y\xae\x90\x1d7\x98w\xd4t\x9e\x98D\xa2\x94\x8b\x00\xca\x07\xbb\xfb/\x82\x00\xfd\x9b\x11\x02\xb9c\xde\xb7\x85A\x95\xb9\xfe\x97\xc3`E\xd6&\x18\xe4\x8e\xb6\xdf\x16\x04\x15\xd7\xd0\x7f=\x08\xd8\x08\x1f\xb4\x13\xc4\xedA\x13\x00|\x19\xbe\x07Ek\xabm\xf0u\x9e\x8cR\xc8\x01&h\xca\x98\x9d\x8f\x1eA\xf7\x7f\xc4\xcd\x1d\xf2\x02E\xb9\xd3\xc5 \x15\xcf\xbaG\xd5\xdf\x9f\xde\xbd\x13\xbf+\xbcv\xf3R7\xac\xb4\xad\xb9uL1\x10Y#\xe0T\xcc\xc1Q\xdaZ\x8d\xe9:\xa6 \x0d\xd3\xb1\xa6%\x8f\x84Q\xe8{$h\x98\x01\x14\xbdv\xffG\x93J\xb3~5\x12D74\xf6HB\x1f\xd02\xaeK\x9b\xc6\xb3\xf5\xfa\xc1\x8d\xe3\xa2\xb6i\xdc#+\x1a<\xb4q\xfd\xc8m\xeb2\xa7\x0b\x92\x05\xe9Iz\x17\xd01tsxu\xff\xe5\xfb\xfd\"\x8a\xfe\xa9\xfb]c?\xd5z\xbf\x97\xf6u\x1agT\xdd\xc7\xa7\xd5\xdf\x1f?\x1d\xca}\xcd\nv\xd4\x97\x17$HJ\xb5\xdf\xd4\n\x0e\xde\x9d\x1c~)]\xb0m\xe4\x87\x0c\xfc[\x12\x90\xeeT\xa4\x13\xf81\x8a\x02J\xc2\x19\xef\xa3\x96\x9cN\xb2\xa12\x03\xed\x17\x93\x1b\x1dQ0&\xc8\x95\xf6\xa00\x91\x00\x1a\x83X\xa56\xdbXG#Z\xf5\xc5\x81=\x96\xeb\xdd\xa6/\x1d\xc9h\xd7\x97\x9c\xd7\x1b\xc3\xbc\xfe\x1d(\x88)C\xe2\xee\x03\x93\x9c\xd6\xb2\xa7\xed\x14\x03\xd54D\xda7\xb4\xa74$\xbfUI]\xa4#u~\x98\xfe;P:\xae\xb4Q5\xd8Z\xcc\x89\xccn\xf5\xba\xa8\xde \x95'q\xa3ylw\x83\x1bB\xf1[\xd4i4C\x19\xad\xdb\x13y\xdesY\x8eN{\xbdh\xe6\xf6\xa1;\x14\x99\xfe\x8d\xe29j=z\x82!\x8b\x1b=\xbfp\x14\x17\xbcQ\xb5+S\xfb\x90\xbby\xf4z<KM\xfc\x1c\xa2^\xcf|]\x0d\xb2\x97\xf3\xea\\m}\x94\xde\x1cJx0\xe0\x8c\xc4\x8f\xc6@\x02\xea'\xd3\x07\x15P?f\x13\xcb\\K\xc1\xba\x17\xb3\xd0\xe7\x9d6_\xa6wo\x1b\x16\x0e\xfe\x05\x80\xed8\"d\x007\xdbP.F\"\xae-\x08E\x00\x81\xfb{\xd8\xdda\xdf\xc3\xbct\x0f\x0dUx\xee\xc5\xa2t4\xdc\xb4[hW?\xff\xd2\x85\x11\x178m\x80\xfde\x80F \xfbN\x15\xb4\xad!\xd4\x00\x1d\xfd\xac\xdaAE\x1f\x19\x81\xd5\xdfo\xdc]-\xe1\xf6p\x98\xe1\x1b\xe3|\x08-l\xc4;\xe4\xcb\xa0k\x81\xac\xd9\xcd\xd9\xe9`lJ\x05H\xc8\xc2\x8e\x15r\xfd\xe4wg<\x1dn\xec\xcc&\x98\x8c\xcf\xed\xfd\xf9\x89\xb4c\x10ZM\xd7\xfd6Ll\xe5\x043\x1f]\x8682\xbe!\x00\x97\x98\xacH\x86\x12\xe7\x1a\xe6\xeey\x97\xcf7\x06\xe1\xdf\x1e\x10\x8f:O\xce\x9f,\xfb\xd0E#\xe2\xd2q\x16O\x87\xba\xe3\x8c\xd5)\xd8\xff\x88G\xaa\xe57\x06\xa2\xe5\xfcN\x9f5P\x1cy1L0\xe2m~\x042FN\x9c\\\xf1t4\x83 D\xf0\x83\x92\x9bP4\xb4\xe9\xf6a\xd3e/\xdeZ*\xf7a\xb4\xcb*UK\x9f\xba\x184\xa5\n\x8bq\x17\x0dg\xe2A\xb2\x0e\xfc\x14\x7f\x0f\x16Q|H\xbcK\xa7\x99\x15\xf5\x07Y\x98\\\xfa\x8b\xd4\xc9\xbb\xa2\x98FQc\xcc$\xdc\xa4Et\x80Q\x1f\xfc\x07t\x84\xd7\xb5\x14~`X\x12\xc2\x0f\xfb\xb0\xab \xac\x83\x96\x8a?p\xcb\xa7\x1aP\x86Vd\xfdb\xc9\xe7([]\xd0\xb8\xad\xe0\xc39\xce\xff@\xa6\x86\xdf\x17u\xe2\x81\x9f\x1c\xd1%I\xfdk\xfa\xdf4\x8e\xbeF<\xba\xf0C\x12\xdf5M\x01T\x19Bx\xa7v\x87\x17\xc2\xceV\x8c\xd8\xe1\x98\xb6\xa1)\xcf\xf1\xba\xbe\x02\xf5\x0d\x1ayiI9\xf4\x80\x11U:~*\x06T+~\xd0x\x84\x83\xedCFT\xf4UE\"\xd0\xf7\xa18\xf2>\xa4\x9fb\xe6\xb7\x959\x8ev\xddA\x1a}b\x02\xe9+\x92PG@\xa2\xb1\x9a\x0526\x1c\xab\xc8\x85b*\x15I&aO\x0f\x02\x9f$4\xb1\xe1\xe2t\xb3\x0f\xdd\x0b?\xecjR \xe4\x98>\xedC7\xf2R]\x95\x1c\x8e\xd3\xd1\x10\x13Uy\xbaZ%\x88OG\xbb}\xe8^\xd2\xdb\xee\xf7\xbd\x0b0\x8b\xb5\xe5b_\x08\x90\x1f\xe9\xf2\xf0v\xedt\x7fw&\xe3\xe9Fo6q&\xe3\xe1\xfdt\xb4\xf1l\xc6\x8e\xd8\xf3\xd9\x0f\xae3\x19\x9f\x9d\x0d\xe4/VaJ\x0fgXY\xa4\xc4\x9d\xdc\xe7\x15z\xda\xc7\xc5/\xd1\x8c3\x19\x97\x0f\xf2\xa2\x07^\xf9\xecl\xe0L\xc6~\xb8\xb8\x7f\xcb\xfe\x1d\xbdq\xefyQH\xc2\xfb#rt\x7ftp\xe4\xba\x7fV-\xef1.?&\xedU:\xa7O\xcczB\xad\xf0\xbc\x08\"\xf2]\xc4gU\xbf\xcdoF\x18\xa5u:\xbe\xe0`\\\x95\xf9\xa1S\xd5zo\xf6\xcdy\x1am@\x189B\xd8\x07\xc9G\x08\x03\xe4\x1a;2H\xa3w\xd1\x8d\xdc\xd2\x8c\x97\x80 ;\xc8\xc7 b\x00Og}\xe8\xf66\x94+tdX^\x8a\x13\x86\xdf\xa1\x16\xccH\x1fX\xcdE\xc1{\x08\x0b$\x98\x88\xc3l\xf0\xe1\xf8\xe4\xed\xe9\xdb_\x0f\xcf\xdf\x1e\xbdy{\xf4\xf6\xf4\xaf0\x96\x8f\x8e\x0e\x7f:\xa8>\xea\x0eB\x12\x16\xcd\x1d\x91#\x18CZf1\x04is\xd2/\xe33\xa22\x9f\xf1\x86!\x8e\x95\xd3\x10\xb6w1\xe74\xa2\x07t\x95JN#f\xaf\x9b9\x8d\x10~`|\xf3\x18\xbf(\xa3J\xff\x9dx\x0d\x873\x1b\x9d}\xee\x8d\xa1\xe15\xda2\x1b%Bi\xc2\xf8P\xaf\x1c\xf2\x93#r\xc4\xfa\x82\xe4\xc6O\xbdKp\x8c\xca\x03\x8f$T\xd5D\x8e\xb5\xb5@\x01\x0e\"\x9f^<\xe2\x8d\xe5z\xdc6\x8d\x1d\x1d\x1cY\x1b\xcb\x15\xb5\xad\x1a#G\x1a\x8dl\xe1\xf8l\xdcnB\xeb\xf7=\xa0\xc5v\xfe7\x83\xd6\xdb\xa37\xdf\x0eZo\xc3E\x1bh\xd5)\xd0\xf7\x83\xd6\xc67\x05\xd7\xc67\x85\xd7F#\xc0t\xbb\xbdx}8\x18j\xc6\xa2\x9cKe\xbe\xb7\x0f$\xcf\xe95\x810?\xa6\xba\xb4\xcb\x0e\x14\x1e\x083\xb4\x11\x93\x7f\xd6mC\x8d\xff\x8aj\xfcW\xce\x1e)\xff\xb9\x1b\x8e\xe9\xc7\x9f\xbb\x8d\x1c]c\x8b\x93\xca/\xc6\xbb\x9d\xa6\xb3\xfb)\x9c\x9d\xa5\xb3\x9e[z8V{/\xfd\xe0\x0c\"/\xf9\xc1\xe5\x1c\"\xb6\xf0\x83\xf3\xdf\xf7\x0ec\xc6\xdcj7\xa5\xf7\xdd\x89\xebNJ\xac\\\xab\x1b\xdd\xd4_\xd1$%+\xa3)\xcb7\xe7\xd6\x8a\xb0\xe5\xd1\x80\xdeRO0my\xa9/K\xbf\x03\xbf\xa6\x89\x87b\xb85Y\x0b\xf7L\xfd\xb9\x97\xdf\xe0 \x0b\x96\xcf\xc3\xcd\xb9\xb2b\x12j\x9erW1\xf3>\x8c\xe3(v\xba\xafIJs\x9fZ\xca\xcat\xc1\x99|\x91W\xb4\x97NG3\xce\xfc\xf4\xd2\xe9\xe6\x8c{-\x11\xfesk\xd6\x87N:\xdd\x9e\x15f\xb0\xf4\x06X\x07\x0e\xfbo\xf0\xe9\xf4\x95#\xc0\xa0\xf3\xc3\xf3E\x98\x8a\x1ek\x82G\xa9\xe8\xa5\xd3\x9d\x19\x8fO\xd1K\xa7\xbb\xb3>\xa4\xd3\xbd\x99\x89\n\xa3\xca\x15\x03\xdfN\xf7f\x82+\x1d\xf6a\xcb}\x0e\x8b\xc2\xa7r\xeb\xb9\x0b\x0b4\xf0\xd3Q)l\x87u\xb7\xa8\xd3?\x13z\xa5\xd3g3\x04<[\xb3]\xba\x0d?\x80\xb3;\x84\x1f\x10Z\xc3\x19\xf4\xa0\xe7\xa4\xd3\xd1h\xc6\xd0l(\x95\x80\xb8 \xea\x9b\x1bkW\xc4g0\x82M\xc1\x9e\x85\x8bQ\xd5\x1f=\x02o\x90\xd0\xf4\xd4_Q\xc7\x1b,\xc57\x1760\x88\xa6gCa?LR\x12z\xf4x1\xc6\xeeZph\x96M\xc6\x88\xfa\xdb\x93cA\xd7\x8d\x8e\x00\xdf\x8a\x10?\x90\xcc\xf0\x04\xfc\xdf\x8f\xc4t_\xbcP\xac\"L\xe6O\xdf\x0e\x0c\xc5\xcf4\xbe\xab\x0c\x8b\xc3hg\xdb\x1d\xfc\x88\xb6\xc2E\xaf\xe0\x11dd\xd8L>\x97\x1a\xb4(\x18\xba\x07?\xbez}\xf8\xe6\xa7\x9f\xdf\xfe\xe5\x97w\xef\x8f\x8e?\xfc\xd7\xc7\x93\xd3O\xbf\xfe\xf6\xbf\xfe\xfa\xdf\xe4\xc2\x9b\xd3\xc5\xf2\xd2\xff\xe3*X\x85\xd1\xfaoq\x92f\xd77\xb7w\x7f\x1f\x8e6\xb7\xb6wv\xf7\x9e>\xeb=\xd9?\x0b\xcf\xe2\xee\x03%x\xae\xe4\xf9\x1e+\xf6\xc57\xe0\x06J\x1d5^\x8e3\xfa\xe8\x1b\xae\x88B\x1e\x030\xe4\xbeC\xa1\xed\x9e\xa8\xe3 i'\xb9\xfcK\xa5\x19;\x8f\x06\x08\xbb\xdb\x8d7G)\xbc\x80a\xab\xdb\x1f\xd4\x8b\xefj\x1f\x1b)a\x0c\xff\x01OQ\x01]\xc6\xfb\xaf>:\xa3\xb2\x02cz\x16\x9f\x85\xfb3\xa1\xc60\x03=\xb2.K\x86\x91\x80\xb4\x8f\x12\xf3r\x07\x86;\xa1\xdc\xd3{\xf8\x1c\x18\x94\xc9sH{=\x17R\xf8\x0f4\x05\xe3*\x13~\xa5\x13\x88L\x11\xf0\xf2%\x8cv\xe1\x11l\xee\xec\xb8}P\x8b\x9fVK7wv\xe0\x11$\x8c\xec'\x98\x0e\xe4\xc5\x0b\xd8\x85{\xc8rt\x88$:\xa4\xba\xe3U,\xd1\x10dH\\\x82\x03\xfb\x01v\xf1\x9a\xe6\xab\x86\x04c\x18=\xcdu=\xe5\xb6\x86\xda\xb66E)\xbe*|\x0f\x19h\xd4:\xdb\xf9\x9b1\xa6\xdfX\xc4\xd1*\xff\xe2\x04(\x16 \xbd\xc7\xaf\xdf\xd4~\x15C|0)\x87S\xd0\xf67'm\x11:\xe6n.F\x82b@>\xd2Hk2\x0b\xad1`\xe7V\x05;q\xe7g\xd3\x08\x97\x8f-\xfa\xee\x16\xf2|J\xe9\xa6\xaet\xb7R\xb8\xbb\x05\x8f\x00Mr\xd8\x8c\x9c\x88a\xecS\x17z@\xa7\xa9\xf9R\xb5\x8c\xa0[\xfc\x0e\xf1\x1b\x8f\x08\xc6\xb0Y\xa0k\xa9\x9d\xa1\xae\x9d\xedZ\xe1\x8b\x17P\xedqw\x1b\x1b\x1e\x15\xc8\\j\xb9>\xc0\x17/j\x0d\xefn\x97\xdb\xebC\\F\xbc\xfc\xd7Ws\x10f\x89\xb6\xa6\xff+\x87\x9c\xacs\x08F\x85\xe1\x03\x99\xb4\xc8\xe2\xd1`\xf0\xea\xf8\xca3\xdfd\xcf_\x91\xd7\xb8*\xdcx\x1cP\xdb~\xe3\x97\xd2A\xee%\xccv_\xf8\x9c+\x83\xcd\x1ed\"uh0MgE>\xb0\\]\xcb\x01>\xeb\ny\x15\xd5\xb2q\xb3Q\x87\x88\x89\xe3\x87\x10\xdb\xadx\"\xd1$Jj\x16\x8eB\xd6\xcf\x1a\xbb\x96\x9f/\xb2\xd6A\xe6\xa7\xb9\x0fVM\x98!$\xf9\xa1H\x9a\xc1\"\"[\xb4\xca\xdf\x91#Ny[~!\x83S\xd7O\xfc\xb3\\\x8dZ\xec\xfa/\xdc\xc4k\xe2\xc7\xc9\xbf\xd7.\x16\xbe\xbb\x96\x9dJ\xc4\x8c\x0e\xe2\x98\xdc9\x99t\x81\xcco{\xd8\x16\xce\xbel\x0bg\xb8\x85\xf5[7j\xbdu}\xf4\xe7G\xc3!\x85\xe2^\xd1\xbb\x84\xbd]u\xf17\xb5B\xa6\xe9\x8c\xd12\x7f:d\xe7\x0c\xfe\x9d\xcd\xfe\xe9hoXG\x1dW}]\x0d{&R\xd1\x18\xd6\xd1/\xad#\xd1\xae#1\xad#[-\x82\xab\x15\xd5@\xdc\x07_\xc0.\x12\xb0\x8b\x10vF6\xc6\xff7\xd8\xc1\xe5s\xfb\x81\xfb8\xa1\xc6\x0bt\xbdw\xe1\xf7\xdb\xc4\xd6#\xd6\x0f\xc1\x10\x08L9\xc9\xc2\xbe\xb0D\xccIm8Mg\xd6\xfd\xf2mQ\xdeD\xe9\xff\xed<*\xffH\x9ed\xe1\x9c.\xfc\x90\xce\xbfR\xfbb\x81\xc3\xc3\xa1\xea\xd6\xf2\xcd?T\xa6\xbb\x8e\xfc\xb9\x8c/f\xeb]'\xcd\xd94\x7f\xffn\xae\xd1\x7f$Ob\xba\xa4\xb7\xdf\xe5F\xe5\x01\xca3\x1f\x03\xd5`\xbd6\xe7S\xeeW\xa7\xe7\xb3\x19\x11xr\xf6\xc4\x99.\xfd\xd5\xec\x07\xf7\xcfO\xe4\x05\x87\xbez\xac 9\x00\xd2z\xfa\x89\xd4\xbe\x0f\x8dw \xfc\xc2C\x9a\xf2\x86\xd3\x11\xcab\xf2\x16\xe1%\x93K[\x9c\xd8\xac'4\xeb\x9d\xa6\x85!P\\\xb2 *\x9a\xa9\xb5\xf2\xbd\x8f\xe1\x7f\x0e\xc4\xe56Q\x80\xceo\xe1\xaa\xd0-\x19\x13\xf5\xc1\x001\xbc\xd0*.H\xd3~U\x96\xf9J*\x913j\xbc\x83\xb6&1\x0f%(\xd6\x05a\xb0\xea\x01\x1d$Q\x16{\x14z\xac\xc0\x08X:X\x06\xd1\x05 \xc4\xd5_o\x1f\xbaK\x1e\xb9\xaf\xc8D_<Z\xf1G\xfe2\x8cb\xfa\x8a$\xea3\x9f=K\xbf\x175{\xaeT\xca\x0f\x18%8\xd3\x8d\x1f\xce\xa3\x9b\x1c)\xf8\xcf\x01M\xd6\xb1\xbf\"\x15\x03\xc1\xa8\x994j/\x15\xfeH\x9e\xc8\xd1\xff\x8b\x89c\xfd\xd6F~r$p\x10 \xd8\xea\xbb\x06E!\xc8t9\x03\xb4\x12c\x9b\xc1.\xab\xc7$\\\xd2\xb1U\x007E\x19\x15\xbb\xe3C\x1c-c\xb2\xe2\xbb\"\xc4Xxl\xc9d\xa8\xb1\x8bh~\xa7\xc4\xe5\xe9\x1e\xde2\xd4O\xfc(<IIJW4L\xbbJ\xd5\xe9p\x967\xe1t\x0f\xe28\xbay# \\\xbcY}\x81\xe6O\xf8\xbb\xe8\xff\xfc\xd0\xb74\xb2\xbez9f\x83A#\xa5\xfe*z,\xa2\xe54/~\xa4,|h[x\xfb\xa2\x7f6\x90s\x93\xeb\x0b\x1ek9\x16p!V.\xc3H\xfcV\xb1\x80\xad\x8e\x16\x0b\x8a\xaa9\x16\xb0\xbaF$(\xd7\xaf\"\x01C\xb6\x07\xbf\xa51\x87xC\xfc\x80\xce!\x8dr\x9b\x88\x9c`\x98\xefT\xb4\x1d\xacILV\xc9\x03\xccC}\x19`5$+\x1d~\x8a#R\xdb\x19B\x1c\x17\xba\x0f\xdd\x1f\x83\xc8\xbb\xaa\xec7\xf3[\x08\xbe \xc2@\x02\xd0\xf1\xfb\x10\xcaH\xc2S\xb4``\x07\xf2t4\xe3'\xb0\xb8xQ\xabw%\x81\xc0\x08R\xc5\xab\xfc5\xbb)\xcd\x17\x1f\xd1r\x00\xff\xd4C:?vs\x1b\xb6\xefk\xeb`\xf2\x05\x18\xee\xe9L\xc7\x9c\xd1v\xb5>\x11\xf5\x9fV\xca3\x9b\xd2\xaf\\5i\xd6.\x94_\x08`\x1f\x9eU\xc8 \xec\xc3\xa8r\xad\xb5\x80}\xd8\xda\xac`\x03+\xdb*\x97\xcdY\xd9v\xb9\xec\x92\x95\xed\x94\xcb\xaeY\xd9^\xb9l\xc5\xca\x9e\x96\xcb\x96\xac\xac2\xbe;\xd8\x87\xed\xcaX.XY\xa5\xdfsVV\xe9\xf7\x06\xf6a\xa7\xd2\xc7!\xec\xc3n\xa5\xbd[VV\x99\xdb +\xab\xf4\xf1\x8a\x81\xaf\xe2\x93x\xc5\xca*\xef\x1e\xb0\xb2\xddr\xd91\xe6/\xacT\xfc\x80\x85\x95^N\xb1\xb02\x95\xf7\xb0\xafA\xfa\xe1\x18\xbaggC\xcdQ\xb4\x87O\x88\xe6\xc9S|r\xa1y\xf2\x0c\x9f\xa4\x9a'#\xdeQ\xa8{4\xc2G\xd7\xbaG\x9b\xf8h\xa1{\xb4\x85\x8f\xaa\x0c\x1d\xfbl\xf2\xa1Wu\xd1\xec\xb3\xb5=\x86\xc7gg\xdd\xc7\x9a\xb1\xf3\xbe\xce\xce\xb4\x9d\xf1\xde\x8et\xcfv\xf9\xd4\xceu\x90\xda\xdc\xe2\xad\xbe\xd3?\xe4\xad~\xa8(\x1a\xcaU\xdf\xb2\xf3\xba{\xd7\xedC\xf7\xaf\xec\xbf;\x9a\xe0w\xf1\xe7\xf0\x84\xfdA\xb6\xb7{\xcc\xff?b\xff\xe3W\xfe-\xc2\xaf\xfc\xffc\xac\xbdX`E\xf1\xe7\xcd\x9b\xeeL\x17U\xe3\x8f:\x9d,\xb4\xb6\x95\xabhn\x82\xb2ou-\xeb\xf3\xc8\x19\x9b;;.\xe7\x85n\xbb<\x80\xeff\xb9\xad\xdc\x1a\x19\xab\xef\xee\xecl\xc9\x172\xf1\xc2\xb6\xe6\x05=\xd7\xde\xe1\x8dlo>\xdb~\xb6\xbb\xb7\xf9l\xc7u\xcb\x11q\xbdhNa\x1d\xf9\xa5\x8c\xb9<\x00\xe2\x8a\xdc\xc9L\x0c\xcb\x98\x92\x94\xc6<\x19\xc3\xf0\xf6\x8d\xf8\xe8X\x07\x1c\xe8'1\xd0\xa7\xe5\x95-\xfd\x92\x87\xde\xd9YW\x84u,\xe28\x0e\xf1\xfd\x8d\\Vv\xa1\xa7\x08p\xba\xc8%G\xf5\xc5R\xa2X\xf3x\xe1y\x98n_\x06\xc9\x961\xa7\xdf\x93\xf4r\xb0\"\xb7\x0e\xa6\x0c\x17\xc5\xf7\xf7\xb0\xe9\xcah\xdfW\xfe\xfamxM\x02\x7f\xce\xdbR~\xab\xa1\xb9\x17At\xf3\x8e^\xd3\x00\x99X?9\x8a\x18L\x97\x0e-\x9e\xb8\xd2\x17I)\x93\xbd\xa4w\x81\x08\xc1]:YMLu=%p\x93Ym\xe1\xdb\xff\x8f\xcf\x06\xcds(\x12\xa2pk\x0d\x9e\x845\xae\xdc\x1b\xa4\xf9\xd5\x0c\x8f\x04\xe0?\xe7ARG<Iy<\x8d\xc4\xed\xae\xd8\x0b\xe9\x94\xa0;w\xa7\xc39\x1aRX\xb1nr\xdb^\xf6\x9aF\xb0e\xa8Argn\xb7\x0f\x0e\xcf\xe9V\x89J>\x90\x89\x86X?\xac=\x91\xe4!\x18\xa8>\x97}\xc8xg\x19^\\\xab\x8f\xa6\x19\x1b_8%3\xd8\xaf\x06\xc3\x05E\xcd]\xc6gGA1\x868\xd8b\"\x0d%s\xdc\x89\xe2\xf4\x17z\xc7\xb3\xcf\xe4?\xca\x01\xddC\xfa\x9b?\x97\x01\xd5\xf3_\xf7\xf7\xf0T\x86C\x0f\xa3\x8ft\xc1\xdb\x10_\xd5\x16\xc2\xe8U\xb4Z\x93\xf4=\xdb\xce\xbc\x8eR\xa0\xd6\xf4\"\x86\xdd\xe8zu#@\xa9\x14\xa85\xbf \x84\xbcLOd{\xe5\xf0\xb6\x1cu\x1e\xd3`\x85E\xe4\xfaR\xb6F,\x99g\xec\x0d\x92Ra\xaf\xc0K\xb3\x84\xce_\xabOJ\xb1\xfet4\xe2\xa3v3!\xd2\x8b\xdd\x14\xc1~%\x9al\xea\x8at\xc6\xfc~nc\xc4\xf1\x9a\x8d-Q\x83\xa5\x81\x0f/ y\xeeb\xda\x064`\x97\xd9\xfa\x85K\x1f;\xfb\xc1w\xd1\xec\x87\xfb\x8a\x88\xac\x16\xa2\x83\x04\xb3\xbd\x95\x9e\xb0.ydW\x1f\xad\x86\xf8\xf7P\xd5C\x9c Q0\x14x\xdd\xdb\x87\xc8eC\xec\xedW]\xcb\x04\ngV\x10\xbd\xb6\x85\xe3\xd6\x87\xdb\x95\xe4\xf2\x07H]k\xdb\xef\xea$Z\xca\x1c\x08\xb1\x05\xc3>\xfe\xd5\xbe\x8e\x9f\x8c\x0dmm\x96\xa3T\x8d6wQ~\xdf\x1dU\xc3`m>\xdba\xbf\x18\x87RxP0\x96D\xfc\xba\xbf\x87\x9d\xbd\xad\xed\xed\xf2{\xec0\xdeb\xbfx~\x8a\xbc*+\xdf\xadt=\x1am\x8fF#\xebD\xfef\x9c\x08N\xb1\xd2\x0f\xb6\xcc\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebM\xf1\xf5\xd2:\xac7\xc6a=\xf9\xfd,\xfc\x01dT\x13u\xb9\xe57\xb6\x91\xfe^\x0f<\xf2#cs\xcaE\xbf2Y\xa5\\\xf43\xe3m\xcaE\xbf\x01\x06\x99\xae\x0f\xf2/\xf6\xd0\xebl\x1c\xbej\xe7\xd4\xd1\x84B \x0c\xe5\x0b\xdc\xe9<\xeeG\xfd\xe9{N\x07j\xe5\x8cS\xfd$\x12\x92\x96r\x96TV\x12\x83\xf3t\xde9\xfc0\xca\xb0\xec\xbc\xf8z[|\xbd)\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebe\xf1uU|\xbd+\xbe\xae\x8b\xaf\x1f\x8a\xaf\x87\xc5\xd7e\xf1u^|\xbd.\xbe\x9e\x14_\x0f\xc4\xcc\xcc\x89^49\x1f\xd2\xbaJ(7y\x18r\xba\xaaP\xd9^\xcfv\xb3\xd5\xf9$\xc8\xae\xd2\xbf\xafD\x05\xfaM\xaf\x04f+\xf7\x96\x8d\xfdoZc)\x13\x83\xfd\xc5\xc3\xd4\x0e\x12 \x9f\xe7rd\x1d\xf6a\x01hQ\xcdX\x15\xe4Ya\x03\xde\xe3\xe9\xf2\x92[\xf1vA$\xd2\x9c\xbeg'\xc3\xac\x8f\x88\xe9\x1b\xf4\xdc\xb9P\xc1@\xf4\xb5\x00\xd1n$\x1c%\x0e\xbaq\xa8\x7f2\xb7&\xc6\x85\xdcM\x00\x13\x08\xe1%<\x83\"\xed\xd2o0\xc6\xf2\x9fa\x0c\xbf\xc2\x98\x8f\xb2\x13\xf1\x87\x7f\x871\xfch%m\x7fU\xa8Fu\x85\xe8`\x9e\xadJ\xbc\xb7\xe9.\x84\xdf\xfe\xa6\xd5\xdb\xdf\xee\xe3\xc7\x86\x9b\xd9N\x85!\xe3\xa1\xfd\x19H\xde\x16!\x08\x14W\xd3\xc7\x18\xa0\x1dz\xec\x9b\xfeF\xd9\xcf\xb9\x0b<zU\x01&\xb48\x0e\x88\x84\x02*\x93)\xa4\x91\xbc\x05\xfe\xc5\x0f\x1d\xa5R\x1f\xb6\x87y\xbed\xfe\xda\x06\xf8\x86~\x18\x05\xc4tD\x8a\x80\x03/Y/\x18)\xee\xe5\xbe\xfa\xa0>;\xe9\x94\xfc\x17'\xed\xf3$\xc6\xbeH\xdeL\x14\x85\xa3\xd1eY\x80\xb0Q~\x92\x1f)G\xe97\x02\x94\xdcYd\xc0H}\xa6\xd9\x90\x87D\xe3\xd9\x82\xccv\xa8 p\xa2\x9ah6\x9c\xe5\x19H\x15T0\xc5n\x04\xeb\xbd\x0d@\x9e$\xa9\xbe{\x8d\x96\xaf\xe8Q\xfd\xf7F?jM\x06{\x90o\xff\xd8\xf8\xb6\xc0\xed\xc2\xe7\xe51z\xbb<~\xdcuM\xf8\x0e\xb2\xf5_\x9b[\xbfg\xad\xff\xc2\xf3\x04r\xbca\xcd\xfe\xe4|dE\xbe)M\"\xb6\xfess\xeb/\x8d\xad\xb7\xc67(\xcb\xee\xb0\x0fO\x9c\xb3\xb0\xe7:\xd3\xdf\xcf\xc2\xd9\x0f\xee\x93\xa5~W\xa9\x1f\x94\xc9\xb3\x9a|\xe1r\xd9DP\x96\x0c&\x90\xa1\x9aA\xb8U@4\x08H\x92\xbeeo\xf0\xfc\xe0\x7f\xce#\xd3\x0d\xfb\x98\x7f;u\x0d{Z\xfd\xa0\xa8~\x16\xcaP0Ct\xffd$^\xfe6c,\x88\xc9k$l\xf5#b\x0c\xc6\xaa\x0b\xb01\xc1\xa7\xfaam'\xc0\xc3\xbc5O\x04\xc4\xc9\x15O7\x1b\xc6\x0cyJ\x18>\xcb\x00o\x80|\xb6\xd3\x13\xe81Y\x0f\x13\xdc38\x88\n0a_\xc7<\x9f\x1d\xf4\xe0\xcfN\xc0\x85I\xbc\xb5\xb0vf\x8ey \x05*\xfa\xc6J\x9f\x19z\x12\xb7 \xdb\x7fk\xc4\xf6\xc7\x98\xac\xa4\xf9~O~rA\xba\xe0\xca\x85\xa4l\xe4\x91\x84\xce\xb4\xc2\x08\xbd\xe4\x02\xda.\xa0\xe7\x0e\x13\xd7v\xb7F\xc8\x04\xd4\x83\x95\xfa(\x15\xf3wv\xb76\x87PD.\xdd\xda\xdeb\xc26*\xa6\xfepF\xc3Mt`Na\x83\xb7\xce\x93\xc9l\x88\xd7z\\\x86c`c\xbc\xdb\x98\xeb\xbc\xde\x0b\xab\xd9\xde>t\x90\x93\xf9\xe4`Zh:\xf5g0\xe6\xa7\xdc\x1fz\xb74\xf5#\xafSmk\xe6\xf2\x8c\xa2\xfa\x86D \x08\xf3\x92\x95t\xba\xfej\x1d%\x89\x7f\x11\x08\xc7\xf71\xf8BU\xc9\x8d@x \xb2n\x13c\xf7\xd9\xb1\xcb\xf3\xbf\x983K\xc1\xbe\xe4\xd7\xa4\x02\x10\xe3\xafin\x01\xe221)\xc5\x95\xd2\xea/B\xb6\xdfx\x8em\xfd{\x9b\x9c\x1e\xe5\xcf\xd8(\xba\xbd..\x97\xdc\x94\x1b\xfc\xb09\x0b\xbb\xd6\x19\xfed\x14\x84MCf\xb8Q\x90\xd4\x8d\x11\xa6\xf7\xb4\xf6\xf1g-\x14\xd1\x1aAq\xbcV\xc9k\xce\x1bTl\x87UE\x96<Z`\xfa;\xa0;\xa9\xa2\xc3\x1a\xf2cb\xc8\xe5\xe2n\xf79\xae\x97Bh\xf1h \xf9\xd1\xe22F\x0fsCI\x03&\x02/\xc1\x87 \x10\x18s\xd9Zd\xed\xe4\x96]Rs\x15\x0b\xadU,\xb4V\xa4\xaeW\xcdY}\xd1@_\xcd}\x9a\xf7)\xbb\xc3j\xaaj\xcc-\x12@\xc9b\xae\"\x83q\xa52&\xfd\xad\xc5\xf5\xd3-\xc6\x7f\xeb.\xb2A^[K=\xbb\x88q\xa1\x81\xbe\x00/;T\xb8\xc9>\xe2CY+:\xae2\x90\x85*\x9d\xc0\x0b\x08\xd8\x1f=\x07\x89\xa2\xa3\xe31)oJf\xee\xa0\x88s\xc0P\xc4\x1b\xe4\xf6\x06\\\xcb\xdd\xf1*5\xba\xdc\xbc\x80aR\x9e9\x90\xd3XY/Z\x80\xfaR\xdeN\xder\xa5#F\xfal\x82.\x95\xea]\x98\x80\x87\xdf\xc7\xd0\x9dt\xfb\xe0\x0dr\xbb\x04\xdb\xb1\xc2\xdaXp\x95\xa8\xb8\x1a\x99b33>\x0e5>N\xdfh>\x91\xf1\xbb\x00\xb5K\xee\x13\xa1\x94\xb03sa\xa1\xe2\x06\x0d\x80\xfaA9/\xa9\xf5\x85\x11-\xca\xf4\x99'\xe8\xf7D\x82\xfe\xc7/1k\xbf\xe0\xfdc \x9eG\xd7i\x82Wo\xfc\x04\xe6i\xc2\x10\x02\x8f\x9bN\x9a\xf2\xb4\xa6\x8b\x19\x9f\x99\xf9\xe41OY\x8a\xc3\xb1\xb6\x8a5\xfe\xb4\xc6&K+\xe6w\xec\xfa\xd1\xffU\xd2\xf1\xf1M_\x95\xd9\xd5\xfb\x83|\xc8a\x9fo\xe5\xb0\x0f\x9d\x11F\xc1\xc9\x7f\x0e5\xd9\x82\x13\xc8\xb1\x847Q\xcd\xdb\x9a\x13?U\xa4}\xc1#\xc4\x95\xa5\xdcjVS\xd6|\xd0\x87E\x1f\xed?\xea\xdeR\x0cAQ\xd9\x91?B\x17\x1f\xf9\xa4\xae.C\x85\x9d\xa3h(\xc5\x8dXqI\x92\xcb\x04\xa1\x8b7f\x85o\x06\x02\xeb\xd1#\xb6\x05\x95\x02T\xdb\xdc\xdf\x83P\x84K\xa5\x02\x12\x86\x97 R.\xfb\xa8*u\x85Z\x8aVn_\xa6\xc1\xcc-\xa0\xdf\xfd!\xa6\x8bs\x86\xe3\x15\xf1\xderQ\x8d\xd3\xc2\xb6;\x9a\xc6q\x08\xba\xf2}\x9eR\xdc\x00W\x97\xaf\x1c\xcf*\xab\xde_\x8aU\x96\xc7\xcd\x04\x9cN\xcd\x96I\xa3!\x92\x9f\xb2r\xb9\xaf.\xb0\xc5\xa2\x95\xdf\x1c\xa7\xc4\"\xe0]V\xeeYM\xb9\xf1\x91\xd6H\x1f\x04y\xa5\xe8\xc2%~w\x9aT\x80J\x0e\xd9\xe2$\xd0\xb4\xa3\x145\xb4\xa8\xbe\\\"u\xf9u\xe7*K\xd0\x92\x80\xc0\x05O|\xc3\x13\x98\xdb\x8c\x10\xa1\xa4b\xe5,\xc4e\xe9\xbe\x8d<\xe72\xd8\xc8E\x95=\x135\xc4\x823\xc8\xf8\x0c\xa9\x1d\x0c\x89$\xae\xb5D\x88\x89p\xca\x18\x9c\xcb\xa9?\x9b\xf5\x05\x8d\xe1\x96\x80\x19O\xcb\xce\xffq\xbc\xc7\xdd\xd5b\x07 \xe4\xc7\xbd\xc1\xbe\x15\x1e\x15L\xf0\x90\x89\xe0e\x1dO,\x1d\xd6,\xe77\x9f\x88 N\x13\xc6\xa8\x8a\xaf\xd0\xc5\x8d\xd7\x93\xaf0\x0e\x83S\x81\xd2\xdc\xd4\xa9$|\x1a\xc1\x17\xf4<.z\x1eC\x97\xe1uo_\xed\xdd$\xedHZ<W\x08\xf1\x1aI\xdb?>k\xa2\xee\x89}&g\xe4K\xda\xe2\x14t\xe4QNG\x90\xc9\xe3\x9d3\xd9\xac\xbe[m[\xb5b#\x914\xec\xd3\xa0y\x9fz-\xf7i5\xa7\xb6\x97\xa3o%\xa7vV\xbf\x8a\x9f\xa0\x00\x8eR\x93\xa0`\xfc\x18\xc2\xbb\xddn\x1fq\x02\x95 S\xb6?\xbci\\`3N\xb63\xe2\x87_\x01\xd22N*\x8dq\x04\xcb\x8a%f2\x96q8\xc8x\xa3eF\xbd\x0e\x17\xaf\xb099\x14R\x1e\n\xb2\xe6Y{lR\x8f\xf5\xee?X\xaf \xeb\xbf\x11\xa3\x9a\xd0\xa9\x0b]\x05\xa9\xeac(\xa8\xa5\xf6`.\x1d-e\xf0~\xc9iRx\x00\xdb03\x93\x98i\xc16\xc5l'4\xd9\xe8\xa8\x84\"D[\x1d\x95\xe4)$4B\x12J\xcad\xa6%1\xc1\xb7\xba\x1b\x0c!\xc4W\x9e5\xb8Xy\xfb\xc2g\xca\xc2\x13\xce!\xcd\x9a\x16\xfd\x9fAF\x1a\xd6\x88\xb4X#\x85\"\x84&\x8a\x90\xf3\xbe\xd3xV\xdeA*1\xf091h\xd8\x8c\xae\xd0U\xb6\x82;Q7\xdc\xb4+S-7\xc2\xbe \xf0\xad6\x9cY\x94\xcc\xb7!\xd7(\x89@\x03I\x93\xf4X2\xd5k\xf4m\x84\xaa*-\x0b\xb98F.\x02\x8a\x9eT\x10-\x801/|,i\x048W$Kz!K/'\x95\xf9\x87G\x8f\xf8\xc5\xa4DbT\xe0\xd6\xc1]+i\xe2K\xca\xab\xc1\xc5N*\xc4\xce\xeeKu=\xfed\xee\xa8.\xd2\xe9D\xb5\xff2+\x03sm\x94.\xd4\x8c\xce\x1d\x87\xc7\xbb\x94-\xa3\xfb\x97\x89~*\xb4\xb3\xbe\xa2\xb9\xe5c'O \xa6\xd1\x80\x98}\xec7\x94\xc0\x14\xa1zO[Xy\x15ia|\xdc\x9c1\xf7ui\xbc\x85\x0fy\xbd\xd4\xed\xf3ce\xe0'<\xb4C\xaa\x89\xce.?Uf851\xc3\xd4I\xa7\xfeL@\xcd<\x12{G\xd5X\x11\x15K\xb8\xc8\xd6y\xc4y\xeb\xb0\xee\xc4\xca\xd0$\xe2dZ\xb9R\xf5\x0d\x97\xa8\x90\xaar-\x82,\x9a\xfa\xd3p6\xabL+\xd5\x98\x03\xe6\xe12b\xbb\xd2\x8fR\xab\"\x9b\xb5s\xc43\x02\xb0S\xe8\x1fUOB\xa9\x97V\xcc2q3\x84\xc8\x03\x85}6GZ\x9c\xb0\x13\x08%\x8b\x85\xda\xcbR\x0e\xf2b\xe7\xe5n\x9fr\xfbR\xaadh\x1f$dA_W\xac\x15,\x96{|\x8a\xf1\x80\xde\xa64\x9c;\xf5}\xc4m4\xc7@\xca\xab\x85'~et_\xe4\xf6\xa3z\xb1Z\x07,\x0d\xe9\xd5\xac\x07x\xd9\xd6q(\xecC\x8f\x9aC\xcaX\xa3\x99\xf3h\xe1\x97i\xba\xd6\x04\n\xe7\x0fo\x12C\x0cq\xd1\xdfS\xc1\xec\xd57T\xd1\xb8\xae \xd9zC\xf3\xdb\xdb[\xf6\xf6\x17\xda\xb1+-l\x8e\xec\x0d,\xa3\xf5%\x8d\xedm\xec5Lr\xe1\x07\xa6P\xebzs\x04\xeda\":\xf9\x16\x98%\x1d\xca\x1a\x83\xc4\xd47~d\xbc\xde\x99S/\x9a\xd3O\x1f\xdf\xbe\x8aV\xeb(\xa4a\xea(Q:\xcfzh\xb2\xc0\x18+\xcd\xceM\x07\xdc\x7f\xc2_\xdc5!{NT\xaa\xf1\x05$\xed\xd1\x9e\x8c\xdcQ\xdc\x0f\xa1\xcb;R\x9d\xcd\xf95\x0dZOO\xd0#\xde\x85X(6\xd1H\xf2\xd1#\x10G\x0f\x0dkS\x8cP\xb2\xdbG\xb6\xa0\xfe\x94'\xf03\xd0\xbe\\\xf4I\xd1O\xf2\x8f\xc8\x0f\x9d\xee\xa3\xae[!o}H\xb9go 2U\xb0\x94.\x92\xd1@b\xfa\xfb\xfe\xe4\xd1\xac\xe7\xeeO\x9c\xe9\xef\x8f\xb8\x95\x04\xae\xfa?>?G(\x86V3\x01i0\x159\xe8\xb4i6\x8fb\x156\xabg\x0b \x9b\xe2\x87\xfc\xba\xd7\x89\xa7\xfe\x8c\xb1\xc9-x\xa6\xf8a\x08^\xf8FnU}\x1a\xb9o\xe4\xde\xee\xb6\xd67rk\xb8\xa9\xf1\x8d\xec\x1e\xde\xae\xa9\x97\xd2\xb9\xaag+W\xcb\x14\xdf\x97\xf2\x93$\x7f\xe2\x87-\xc8\xb8\xe1\xcaL\xdc\x94\xf5a\xdd\x87y\x1f.\xfb\xe8\xc9\xa8\x89\x01\xba2X\xe2.\x0d\xe5w\xa8\xf9-\xafSE\xb5Yl\x8a\x92?\xf4\xe9\xdd\x9ar\x9fh\xa2\xe6R\x06\x950\\\xe8\xcf\x10\xb9+\x03=\x02\xe1\xddK\x1du\x04.\x04\xec)\xec\x8bh=\x1c\x10)W\x1a\xd3\x01Y\xaf\x83;'\xeeW#>}6\x0c\xf0\xdc\xech\x8f\x16\x12\xb0\x01\xe6\xfc\xedJ\xbc\xa0Kn\xb7\xf2R\x90\xa1P\xdei\xa0\xe8\xc0Z\xb9f\xcf\x16\xad\xc6t\xa35\x97dC\xa2\xb8\xb3t\xbbj\x01\xce\xb9\x9ac\xe3\x90\xed\xe0Z\xb59\xec\x83\x08\x05\x1fe\xa9s\xd3oa\x94\"A\x91\xc2\x068\x08\x0f{\x00\x88%L a\xdc\xdaB\xbep\xed\xd6\xf3s\x00ga\xabn\xdf\x06\x88\x1cZ\x1d\xad\xe7\n2\xa0Av\x00\x13\xb8`\xaf\x8c\xf9\x9d\x8e\x8a-5 M\xdf\xe3m\xd3\x1a\xe81\x97\x01\xea\\\x0bz\xb6Bl,$^f+\x1a\xa6 \x0f\xe4\x9f^\xfaI\x1fo+\xa8Ei\xc2^V\x90\xad\x10\xbf\x9b\x97\x0f\x14t\xe5\xbd\xd4\x91\x80 $\xab\x02fkmC\x9f\x1d\xd3\xc2\xb3\xd1-]u5\xea\xcd_8\x97m\xe4\xf0\xfa\xc6BSyG\xd7\xa8\xdb\xaf\x8cT{r`\xaa\x0bF\x85\xee\xefQFrB\xae\xfbA:\xd9a\xe7-\x99\xfb\xe1\x92g\xdap\x18\x95\xec\xae\xc8\xedo\xc4O\xbb<p\x1cL s|'\x1c\x88b\xd9\x12\x1a\xe2,\xfaH@\xbbiL\xfc\x009\x08\xf6\x0eL\xb0iY\x08c\xb8s\xfbp;\xf0H\xe8\xa1Cc\xbelZ$\xe3\x93\xcf\xfd\x04\xbc\x80\x92X\xce|\xeeJ\xca\x8ft\xf0R`w\xb1\x05\xca\x10a\xbd.\x82,\xb9l\xeaT\x07\xf8 \xaca\x0c\x87N\xe4\xd4\xa23\xc0m^\xf0\xd0\x03y\xcfm8\x05\x0d\x9cd<\xc0\\\x17at\xe3<P\x90R:\xdf\xdej\xea\xddp\x06K\xfe\x8c\xbb\x7f\xe6\xc1\xf9\xe2\xbc\xfe\xc3\x86\xc48\x90=\xb7_\x8eI\xe4\x8cv\xdc\x81\xe0\xbe\x974\xfd \x19\xf0\xe3E\x9b&\x8bY\xeeUy\x18\xce\xf3ln\x8f\x94\xc9\x87\xce\xe6\xce\x9e\xebt\xcb\x1du\xfb\x8d\xeb`'9\xa2R\xe4\xc4\x1a\xe2\x9e\x7fk\x15\xf6B\x85M\xb9#i\xc4\x87`|V\x99\xec\xf99M\xdeG\xf3,(G\xb4i\xbb,{C\xdb\xb2$_\xb1,\x9b\xaa\xc1D\xec\xc4\x83\x93>ty\xbb\xb5PS\xe5~p\xa2{#\x97u\xff@ *\xdd\xeb9\xe1-]B\x0f\xab\xac\x05\x82\xe43\xa1\xaf\x0f\x9d\xd8\xa9\xc4\xcd\xccs\x08\x15\x0c\":`\x8c\xc1#\xe1\xe3\x94\xcd\x0dH\x02\xb9|\xd9\xa9\xd8O~\xd6\xef\xd0\x1a\x80\xc6\xa0]\x14\x14-\xba\xe7\xe7\xd8\xfe\xf99R\xe4\x7f|\x86I\x15LZ-\xa89\xe8\x16\x8fC\xe7l?s\x1di\x15\x85\xe2`\x9f\x81vw\xe8\x0e\x16NUp\xee\x832\x0c\\\xbc>l\xba.\xeb\x7f*\xc3\xd9u\x1c\xaa\xda\x8c\xa1\x9aM\xe78\xd5\x14y*\xd5G\xcd6\x9e\xb0*0\x8cl\x87\xa8\xebK%\\\x8aFx\xf9\x9c\xd0\x1cM\xd0@\xf6\xb8\xae\x06\xad\x9a\xc1\xfe\xe33\xbf|\x19\x8b\x83\xa6\x82z\xde%\xf5\xae\xc6\x8aEv\xebM\xab\x92\xf5\x02\xe5\x8b\x8d\xdb\x82\xe8\x1b\x8f\x1d\x0fC6\xf0:\x0f\x1b\xd9\x97\xed}\xde\xdf\x18\xc7\xff\xcc}\xe0~oV\x1a2p\xed|E[\nx\xab2\xb4\x90\xad\xf7\xb4I\x88\x9d\xad\xbd-m\xdc\xa1\xa7\xba\xb0C\xa1\xb3]\xad\xcd\x07\xfft\xbbZ=\x10\xe5\xd5\x83\xc0\x13\xbdVG\xb9\xe0\xf5w\x86\xa5\xd3\xf0\x99\xf2+\x1a\xf8![\x1a\xa7\x82U\xeb\x1a\x19Z\xf8\xe1\xfc\xf5\xf1\xfb\xa3hN\xc7Ui6\xa6\xe1\x9c\xc6c\xf0\x07\xfc[e\x92\xe1*\xca\xc24\xd7\n\x1d\xa4\xbc\x11\x7f\xa0\x7fR~\xfb\x9a\xc6\x89\x1f\x85cH\xaa\xad&x\xc3v~\xc1\xe8\x05\x9d\x7fZ\xcfIJ\x931d\x83r\x89\xe15>\xd2\x93\xec\"\x8d)}\x1b\xa6\xd1\xab(L\x89\x1f\xb2y\x14\xc2\xabB\xa1\xf5\x91\x1a\xcf\xcf?\x1e\x1e\xbc:=\x7f}\xf8\xeb\xe9\xf1\xf1\xbb\x93\xf3\x9f\xde\x1d\xffx\xf0\xee\xfc\xe7\xe3\xe3_\xce\xd1CWk9e\x7fM,\n{\xbbU\xc5\x8ar>\x87\xe7iL\xa9.i\xf8\x92\xa6\xaf\x82(\xa1I\xfaV\x10\xe47q\xb4\xe2\xab\x12\x0f\xccO5\xba\x16\x8aK\xc6*\xc8\xcaM1\xc3@\xb9b\x18\x88e\xa0\xf3|\xcc\xfc\x02\x921\xfb<a\x1f\xc5,7\x9a~\xb8\x04W\n\xe0 ?\xd6\x10\x84\xef\x19\xca\x8d\xab\xc9\x8e>R/\n=?`\xcb_\\h|\xaepH\xeboAL\xf6\xf6\xaa\xd1\xca$5\xa9\xeewNM\xf6\x9e\xea4u\xac\xbc\x1a\xdd,\x13\xe5U\xaa$\x88\xe1\xd3j\xbf\x81(\xaf\xf6\xcb\xe9\xc9\xde3==\xa9\x11\xc35'3\xa3*Y\x9a\xf3\xf2\xcd\xea\xe1w)\xcaG\x95\xf2kQ^\x9d\xeeJ\x94W\xc9\xe4R\x94W\xc1p'\xca\xab`\xb8\xe0\xe5[\xd5\xf6\xcfEy\xb5\xfd\x1bQ^\x9d\xef!*\x18\xdb\xf0n|{6\xc4\xce>D>\xeeP\xb8p/\x07\x87\xd74L\x0fW~\x9a\xd2Xl\xf0\x8f\x94x)\x96\xbf\xf3\x93\x94\x864vVn^\xf7C\x90-\xfd\xf0\xe7\xecB\xd4V\n\x8f\xe39\x8d\x1dR\xad\xfb)\xf5\x83D\xd4.Q\x0bga\xab\xcaj\x9c\xc6\x84\x91d\x12\xa0\x80\xde<\x82\xe4\xc7\xbb#\xb2\xa2\x9a\xfbC\xf69\xf1W\xeb\x80*\xd5\xc7pS\xa72\xecs\x18\xa64~G\xc9u\xb9v\xa6\xaf\xfd\xea\x92\x84\xcbrMCv\xb3\x13\x1a\x94\x07<\x86s}\xcd\x1f\xe9\"\x8a\xe9\xdbp\x9d\x95\xab\xd7]\xb4>#d~\x8e\x92\x02\xb8\x020?\xb1\xb5\xf3\xbd\xbc\xf8U@\x92\xc4\xf1\x8c\xf5O\xe9mZ\xa9|\x89\x95_\x1f\xbf\x97\xd7T\xa2\xaaR\xf2*\n\x17\xfe\x1235\xb4\xab\x99\xb4\xaey\xc1\x17}\xb5f%\xe5\xb1\x96\x0b\xdf\x10/\x8d\xe2\xbb\x16\xb1>\xa5\xc2\x81\xde\xc0\xba\x1a\x98\xb2\x80\xa68\xcd\xf3\x0d!\xc8\xf5iL\xc2\x84\xf0\x1e\xee4\x15\x7fd\xbc\x80\x1f.O\xd2\x98\xa4ty\xe7\\c\xa5\xda\xd8\xc3k?\x8e\xc2\x15\x0dS'0K\xf3\xf8\xed\x8b\xc8\xbf\x99F\x08\x00\xfb\x8cw\xa9\x03\xa8Kb\x9flxY\x1c\xd30\xed\x8eu\xf7 \xbc\xca\x9c\xa6\xc4\x0f\x12k\x15?a\xac\xcf\xdcV\xe7\xd2\x9f\xcfih\xab!\xfc\x02mU\xae\xe8]r\x19\xc5\xa9\x97\xa5\xd6\x01\x05\xe4\x82\x06\xb6\nq\x14\xd09M\xbc\xd8_#\x07e\xa9J\xb24\xf2\"FMRj\xab\x87\x92\x97\x1d\x06\xf4vM\xc2y\x03\x9cH\xb2\x8e\xd6\xd9\xda:=zm\x9f\xde*\x9a\x13{\x05\x19\xb5\xbc\xb1R\x82d\x8c-\xaf\xadj\x14\xfb4LI\x13,\xf1\xce\xfa2\n\xe64\xb6V\x8bi\x92\xd8\xc1\x14S2\x8f\xc2\xe0\xce^\xe7o\x99\x1f\xdb\xdb\xe1\xd3k\xa8\x13\xc5\xd6\x1drM\x82\x8c\xae\xc8ms\x1d\xdf\n\x1d\xac\x13F7\x8duRzk\x1d\x10I\xa3\x95\xef\xd9j\\d\x89\x15t\x81\x7fm]\xef\x98\x06\xf4\x9a4\x10\x0eF\x7f\x16\x0b&\x9f[j-crqa\x87?\xa3\xc2\xd7\xb8]i8o\xe8\xd4\x8b\x02\x8f\xf1\xe1\x0du\xd0P\xae\xa1N\xb2&\xd6\xe5\xf2\xa20\x8d\xa3\x06\xca\x884\xe6\x82\xce/\xac\xe0F\xcf\xe8\x15M\x12\xb2\xb4\x82}\x11D7id]8F\xf9\x82\xa6\xfe\xa2\x9b\xd0:\xecu\x94\xf8aB\xadP\x8c\xa3\x9bFH\xc7\xd1M#\xa4\xe3\xe8\xa6 \xd2 M\x13\xff\xef\x08\x99R\x8d\x8a\x00\xf6\xfa\xf8\xfdA\x9a\xc6\xfeE\x96R\xc6\x1a\xb2s\xaf^E\xf2\x1dy\x8d\xbc\xc2W\x9c\xc2\x8aFgX\x95V\xc4\xd5\x81^\xa3\xb3\xb7W\xad.e\xb0\xaap#e\xb0\xaap\x83q\x08\x9f\xf5a\xb4\xd5\x87\xcd\xbd>lmV,[\x990\xb6\xb9\xa9 \x14\x1d\x0d<\x12~J\xe8\xeb\xe3\xf7\xa8O@\xde%\xf1\xd9\xcc\x91\x0fE\xbd/O\x11Q~\x19\xc5\xb5R\xda\xfcjS\xf3\xc8\xc3+\xda\xf7\xd1\x9cb3\xb2\x00\xa4\xc3\xa0,\x18\xa8U\xab\xca\"~\xd3Zm\x9c\xf1\xae\xd5\x01\xb2\x07\x1d\xee\xb2\xe7\xd4\x0dk1\xf5\xbbHv\xc1V\x9f\xb8F\x05\xcaz \x14C\xac\x06\x9a\x07\xbd\x0dS'/u\xdc>\x8c\x86.\x8f\xe7\xa7\x11?+cu:\x1e\xc8HT\x0b\xc0\xec\xbe\xec\x0b\x86\xe4\xabL\xf6Z\x13\xa6{\x95G-\xc5t\xbc\xaf\x84W\x03\xe35K\xf5\x96\xdax\xd2\x17\x85\\\xa1\xe3\x00\xd9g}I\x12:\xffH\x97~\xc2\xf8X?\n\xe5\xb6\xd0Vg\x9f\x8b\xec\x82\xf1zc\xe8F\xa1\"\xb9X\xbc\x10<\xb2N\xb3\xb8\xfe\xca+^^\xb7\xe5\x87\xfa\xde\x96\x9f9]\xd3pNC\x0f\xd9\xdai7\x8d\xd6*\xda\x86\xf3n\x1fX\xe1/\xf4\xee\x03\xe3\"\xc4O\x862b\x98\xf8\xfb\x03IR\xda\xd5$\xe5\xab\xf7\xea\x95\x9a\xffN\x80\xac\xce\xa1\x1d,\xcbo}#p\xfe\x18d\xb1\x80\x92 \xb2\xaf\xa3\x9bP\x0f\xe7_\xe8\xdd\xa7\xb5\xf8\xfe>\xca\x12\x8aU\x1f\n\xe7\x93\x94\xc4\xdf\x0be_U\xba\xf9\x02X\xe3{\xdf\x15\xdabd\xff,xs\xc9\xf6\xfb\x03\x9c\xf7\xf3\x05\x10\xe7/~W\x90\xcb\xb1}C\x98\x97J*\xe3\xbb\x13\xaa\xbe\xbc07\x9b\xba\xd0^\xa5I{r\xad\xb2\x83[C\xe7C\xb3ZD\xd7r\xf7\xa2G\xc5\xab\xf2\xe1\xabk\x18gim:o {\xd0D\xd3S\x9b\xe3\x105\x19\xa8\x97@k\xa9\x84ki\xb7\x00\xd7\xc4\xac\xb3F0j\xb2\x1c\xd7ymhL \xafe\xde\xb7\x01W\xa0\x94G!:1\x05A\xe9\xceIJ\x90\xbbIa\x02\xe9\x80\xfd\xac\xdeI\x14#b]\xdd\xe4,Y}t\x87\x92\x8f5\x84\xa6\xcd\xfa\xba\xd8\x0e\x1e\x86l\xb3\x99FC\x13^\x82\xbaT5\xf2\xd6\x18\xf3k9\xa8\x9e z\xe39]\x17\xec\xbczX\x07\x87\xe1\xbc}\xf3\x82Z<\xac\x07\xfeR\x13\x9d\xe0\xd7O7\xdc\x96\x10\x85\x8fG\"J|u\xb8h=\xd7df\"1M\xd9\xc4\"\x92\xd3\xa3G\xca\x8e-\x07\xba\x16\x031\xf7\x8e\xab\xe1\xf6AI\x18^\x16\x08\x00\xf9a\xf6.\xc6q\x17\xe1{kMp\x1c\xab>:\x0c\xd1j\x8f\xe7\xa9c\xf2\xcd\xcd`I\xd3\xd7$%\x8e\xcb\x81\xb3\x0f>\xdawEQ@\xe7NTu\x05`X\xbd\xc0,\xc4E\xa5\xac\xd8\x03udO\\X\xf0]V\x8bsbp\x05\x95\x97\xd9\xe7Z\x7f\xfb\xdc\x92GDH\x91m\xb7qn\x8c\x07\xc4\xf3\xb2U\x16\x90\x94\x9e\xdeD\x1f\xd8\xf1\xfb\xdaO\xd6x\xf9\x9c\xe0E\xca\xc2J\x8dn\x1b\xf6;\xa9\xcf\xbf\x83\xd1\xa2\xe6U\x13\x9fo\xb6\xe3[m\xc7s\xa7\x1a\xb0F~\xda\x1c\x1c\xf2\x93\x1fF7\x97\xbew\x89\x8bp\x0d\x13\xbe\"cp\xee\xc4u\xd8\xaa\xa9\xabBd0\xf7\x95\x1bv\xe3\xfa\xea\x1b\x04\xe5&\x02Q\x1dc_\xdf\x15C\n\xf5\xef5\x86\xd9S\xf6]3M\xc1\xad\xdc\x82\\0d\xb81\xad,:5\xd4\x17\xb6\x88\x0c\xd7\xf1\xd8\xdc\x04\x07cj\x05\x14\xc0)\x1b\xbb\x11z\xfe \xa6\x01% un\xdc~~\xe0\xf5\x0d\x01,\xf5\xae\xce\xeda\x06\x0fBu.O\xb6Z\xabo\x8e\xe1\x8f\x1eA\xa7\x85iD\xe5m\x87\x0e\xbc4\x0e~\xa1w<b\x0c \xd2\xfc\xfb\x8a\xa6\xe4\x17z\xe7ruJQ\x11\x03\xca\xf0\x8a\x96 ^<*\xa5Nm!F,\xcd+\xda\x1f\xb7\xad\xc8\xc7e\xb1\xa5l\xfb\xf1\xdb\xef+\xd7r\x06^\xe7\x11\xbd\x8a\x93h9P43\xa6SI\xb4\x98\xc8\x93\x83\xf4\x9b\x0e\x86\xc4\xedC\xf2\xa7\xfaH\xd9\x10Nj\n\"zMC\x1e\xf2o\x0c\x95\xe02\xf46\x8d\xa5Y@2\xaeiC\x0dv\x9fb\xc0\xd3C\xb5^_=\x8cb\xd7\x14l\xdd`\xafz\x82\xa5_\xab\x90\xadZ_p}l\xcd\xe8YX\xd8\xedl\xb9:\x1e\x9a\x18R:\x9d\xc7Q\xc4\xd3;\x8b\xdf ck\xd8\xd9!3\xce,)\xfetd\x06\x9es\x99\x1eHT20\xf5\xb1CT3\xd8r\xd7s\xca\x93\x9dFq\x83 Hi\x8cJ^\x9b\xd20\xd5r\xdb\xe0\xa0.\xc6\x8a\xc9\xb5L\xe2\x8e\x97W\\\xac)\xc65Q~\x0c\xb0\x06\xdb\xc0y\xd1\xd4w\xaahS\x1b\x02;@\x1a\x86\x80\xae\xdc\xb5\x19\xe6\x1b\xb7\xfe\xa8N<\xd0s\xa9/\xfd@+`\xd4k\x1f\x10\x03e\xc8km\x8d\xa8\x8e&\xdaz\xbe\x1a\xe5\xa0V\x03\x9dT)\x0flL\xe1\x05\x8f\xc7\x12N\xe9\x8c\x07\xce\x99\xd2\xd9s\xa0\xbd\x9e\xe6\x8cE~\x10C\xa3n\xe8\xfc\xac\xb1a\x86\x08\xa3\xe7<\xfa1\xe1-\xb3\xea\xa9l\x1d\x93\xa3\xcd\x9eCj\xec!C\xe7\xb7\x970\x82 \x8cX\xed\xdc|\xb9^\xdf\xb8\"\x08\x01\x1e9\x95\x8a\x08\xe1\xb5:&\xfa\xe2\xf6!\x1a\x90\xf9\x9cQ`?\\\x9eFh\xba\xa4\xd2\x1a\xf2-h\xcd\xf6S-\xf1\x88,\x0cya#M\x82\xc0\xe1\xbelJm\x1de\x18\x90l\xb9\xca\xcdv\xa2\x1aq\xc0\xddP&+\x95\xc9F\xff\xdfd\x1f8\xd9\xd1\xa8z\x1f\x17\x19\xae\xfb|\xfdu\x1f\xd1\x9b8Z\x0d\xb5\x0dv\xda[;\xd5\xc6\xb9]\xe5f\xed\xa8[\x88r\xbda\xe5\xd6N\xd5ns\xae\xbdG\xf2.yrk=_\xf9\xb5\xeaal\xbc\xb5N\x18k\x7f\x07E\xb0\x18\x05\xff\x11\xf8\xde\x95\xf8\xfe&\xf22\xa9\xf8U/\x90j\x1a\xe2\\%\xcc\xed\xfe\xfc|f\x8d\x8aa\xdd&\xba\xd4\xe1((\x18\x99(\xfc\xe4|\xc0W(\xdfKzV2\xe6Y\xa8\xf7\xa1\xeb\xc9\xd9Fv\x8e\x92\xf1o\xd5\xb0\x01\xa0\\W\"\xe3P\xeajU\xbb\x19fu\x97Fe\xf7\x9dYqz\xe9\xacpBh\xae]\x9eP\xd5\x12\xdf\xb9\xe87\xe5{\xbb\xd0\x84\xd7\x18\xd0\xf0o\x19\xcd\xb85g\x82\xaeX1\xe3\xb9<\x9a$X\xf6_\xec\xa9\xd3i\x88\xd3}^c80!\x95s\x8d\x9a_\xef\x12\x9br\xbaQ\x98\x83\xfdNx\xa0r\xc6K\xc2\xcc\xde\xcb\x8dVd\x97rt0\xc8\x10\x14\xbf2\xfe\xe9\xed\x82\xa3\xde\x9cM\xa9\x86}1*@\xf0\xe8N\x07\x89\xcf\x17\x1f\xf5m\xef\x07\xe7$\x08\xa2\x9b\x13Y\xf8\x81$\xc9\xe9e\x1ce\xcb\xcb\xba\xca\x083L\xc4E\xfcw\xeb\xe8\x0f\xb5\xa3\xcf\xf5 \x1c02D\xbe\xe4\x00\xac-\xde\x9avH\xb1k\x85^b\x02\xce9\xe3\xbe\x1bu\x1f+\x1e\x05\xc1A'ow@R\xd3\xea\x95\xf7/\x86\x04C\xbddNT\n\x0d\xeby\xcd\xd3\x96}\xfc\x8a\x95\x00\xdb \x0bG\xeeK\x11\xe9\\k!\xc1\x80\xae\x7f\xf0\x12\x9e\xba\x15\x93\x82\x13\xe3\xbe{\xd5\x16g\xd7\xc2Z&\x9f\xfd\xd5\x17\xe0\xeeU}\xf3IY\x80\xc7l\\+69\xa8\xf9\xc5\xbd\x8fp\xb8+\xa7\xf6\xab7~\xf0\x10Dx\xf5\x0d\x10A\x03\x92\x07 \xc4\xab\x86D\x16\xc7\xa6\xe9\xc8\xcdR=_\x94\xbc\x0c\xf9IT+S\xf4\xfe\xf9\xfeB \x87\xf6\xd1|h\x1a\x0d?+k-\xa7\x8d-\x9f6\xb5\xccO\xdb\xf2L\xf4\x84\xa2\xde]\xdeVe\x9f\x9d\xf0}\xe6c\xd3_\xba\xcd\x9eU\xb7Y=\x9b\xbb\xaa\\\x99\x97I\xb0\x99\xc4\x8e\xa1S\xb1\x80;\xf7\x93\xc2+\xe0$[3\x8e\x961B'\xdfB_s\x9dG+\x14q\xc3QF\x9b\xf0;\x93\x9aO\x14\x86j\xe0\x16Tu\x91\x0d\x97\x8c[\xd2\xf2\xb5\xc1K\x1b\x9e\xd9\xd8\x1d\x84\xd1\x9c\xca\x8d\x9d\xe5\xbf\x06i\xf4.\xba\x91\xe9\xc81\"\x84X\x17\x1e\xd3\x96\x1bh\xf9\x01\x95y\x13\x90y\x99`l\x14\xc6z\x1f\xc2\x18Y\xed[\x18\xc3\xda\xc1D\xd6'\xe2\xd1)\x8cE\xc4@\x1e$\xf0\xa0\xac\xf96)H\x8b\x1b[9F\xbd\x02Q\x1eO8Be\xc8iyJ\x88]]\xb4\n\xbf\x88n%\xa5\xc3Y\xb0\xb9\xc6d\xeeGj\xa9\xc6?\xc1\x11\x11\xb3\xd9\\>\xb8\x1ayJ~\xd8\xd0\xd1\xa2\xcf\xd1s\x80\xf2\x83\xf7\xba\xf9\xbe\xb9t<]XD\xa8\xb1\xa8\xf8*\x1b \xba1\x8b\xdcQ\x1a\xda\xd6HX\x01J\x810\xc1\xaa\xac\x96\xbc\x0d\x1d\x9c\xdf\xc4d\xbd\xa6\xf1I*\xb2~\xa4\xe5\"\xf3\xd5\x01gT0\xd0\x980\xd7\x0d8\xaf\xd3\x0d\xb3\xd5\x05\x8d\xf3\x95c\x0b`\x19\x0b(\xacw\x97\xe7\x8c\xc3\x03\xcc\xdc3`\xf4\xb5%Ms\x93TG\x9cyn\x112\x17\x1d\xefk\x15\xb4+\"?\xfa{\x8dz)\x9eB\x81\xd1\xe1D\xafp}\x8f\xa5_)*\xef=\xd595\xab)\xde#q\xa4\x8a$\xe2V\xb4i\x197\xd5@\xe0\xf8\xe5\\L\x17\xf5\x85\x928\x18\xd60\xd7\xe2\xce\xaf\xcfV\x00\x13\xa0\x0e\x0f8\x92]\x04\xbe\x97SMd\x02\xe2\x01\x99\x17n\xa8\x07\xc9G\xba8\x8d0m_\xbf\x1ab\x0bp\xe1B.\xc8\x0d\xce\xa3\x9b\x90Vc\x96\x16K\xc8\xc4\xb7\xe42\xca\x02!\x06\xb5\x81\xa6\x84I]r\x03\xa9\xae\xac]a\xe4\xd0\xa7\x06\xe8c\xb9\xc8\x86\x16\xd3\x85LL)\x86_\xbf\x0f\x89\x8c\x03\xf0\xb5\x03P.W\xecX\x90\x13\xcb\x94\x8f\xc3\xc7\xafb\x1c}\x08\xf1m\x0c#\x9eG+,\xde\x8e\x90\xc0\xf1\xbdY\x062g\x89\xdb\x80\xf7\xff5\xc8\x8a<;\xe2fLW\xd15-\xa3';\xf9\xbf \x82~\x075\\)\xe2\x80Q\x03iP<v\x9c\x0e?}\x0b\xc8(\x91\xf9\n\xaad\xa9\x93#\x83\x8e\xdf\xbc\x16\xb1\x1d\xcb\x9dk\xb6\x7f\x9dK\xd3-b\xe4\x84\xc8\x18\xc5Nw4z\xd6\xc5|\xfb\xf9\x18q\x81*\xb0\xefW&\xad_\xda\x87w\xbe9\xd4\xe5D\x91\xb3\x0du\x94O\xc3%\xe2\x06c\xf8\x9dL\xc5\xdd\x01\xd5\xbd\xc9\x8f\xeb\x1c\xce\xd5\x9c\xdc\x8d\x87\x98\xff\xe5\x88\xa663\xed~\xa4\xc9:\n\xe74V\xbcr\xbb}\xe8\xd6|\x8bY\xe1)YWJ\xb4\x8e\xc5\xecA\xcd\x87\x18\x1b\xad\xba\x0b\xb3B\xbdg\xb0P)~\xd1\x0c\xaf\x1b\x1dUj\xcab_\x14W\x95\xd1D\xab,^EYBq\xea&\x0dp\\Q\x15\xa3b\xf7}\xfe\x9aA\x15\xac\xd1\xdf\xe2;\xc7\xb9J\x96\xff\xbc\xa6q;\xfbg\x1c(.\xcf\xc3\x07\x8a\xaf}\x9f\x81\xda6t\xa6\x85\xb8*l\x92\xfa\x98\x1a\xa5\xc3\xcc\xc6\xa9\x97\xc7[\xb0\xfaN8\x88)J\xb0\xa7$^R\x1e\xb1\x13\xad=\x0e\x03\xba\x12i\xed\x9a\x8c^\xca\x1d09\xaa`3\xca\xfdvJ\x02\xbf\xb9E4\xb7\xe0I\x11\xcd]f\x03\xe13\x84\x82%OroH\x02\xdc\x90j\xefZ\xd8\x19f\x03< _\x0bE\x81Y*@\x0e\x02&\xb0\x90\xe9\x02\x7f\xf5)\x1aH.\x06k\x12\xd30\xfd\x8d\x8fL\xca\xda\xda\x86\xf4\"@\x1d\x98BKb\x1e>\x8a\xfc\xe6\xc1^\x0b\x13G\xedR\xa7\x91Xh\xf3\xfb\x1e\xe6\\\x9a@d\x89\xfc\xe2\xac\x8d\xc1V\xd8\xe73_\x81 W8z\xe6!\x8b\xf0\xa0\xfb\xfb\xe0\xb5\xc4\x94\xb9h\x16D\x92\xe4\x04\xc6|\xb05\xf5G`\xb8\x96\x07\x19uD\xb4\xe2Y[\xf1,\xad\\WlZ\xc9\xa0 P\x88\xd0\xb8S\x0ds\xc9ov\xf0\x9d\x80S'V\xcc\x17\x0c\xd3`]WVq_\x17\x95\x17\x04dV\xfa\xd1 \x81\xc60\xca\x96\xd1\x08\xd0\xaf\xca\x83\xa2\x9c\xb6\xb3\xe2\xbc\x7f\xf6\xab:\xa8y\xd9\xce\xa98D\x95{\xa9\xeb>\xac\xf8&w\xfb0e\xbf\x1a \xa9\xfe\x8c\xcf\xb0\xf4+\x0f\xd2Z\xf4\x1bv\x8e\xca\x00+~\x14\x0e\xde\x7f:9=\xfftrx\xfe\xe1\xe3\xf1\x87\xc3\x8f\xa7\x7f\xad\x9f\xafj\xf5\x9f\x0fN\xce\x7f<>~wxpt\xfe\xeb\xc1\xbbO\x87\xf5c\xb7Z\xfd\xe8\xd3\xfb\xc3\x8fo_\xe9\xaag\x9a\xea\x1f\x8eO\xde\x9e\xbe\xfd\xf5\xd0\xf6^\xa2y\xef\xf8\xd7\xc3\x8f\xef\x8e\x0f^\x1f\xbe\xb6\x0d0\xd0\x9eR~\xf2*K\xd2h\x95k;\xc6\xf0\x91.\x0fo\xd7J\x94\xfc\x94&\xe9\xe0\xc2\x0f\xe7NHo\xc4c\xa7\xfb\xbb3')\xb9'\xb1O\xdc\x0d\xcc\x01\x14\x0f\x0eNO?\xbe\xfd\xf1\xd3\xe9\xe1\xf9\xd1\xc1\xfb\xc3\xf3W?\x1f|\xc4\xbc@?\xfc\xb9\xab\xcb\x1ao\x0f\x85\xc1><\xb3\x8e\xd6\x07\xb9x\xfc\xea\x92\xc4\x185\xd1R+I~\xa1w\x96\x1a)\xc6\x1c3=\x0e\x82\xe8\xe6M\x16\x04'^L\xa99\xb6\x0c\xd6\xc3\x08%xjx\x96\x0e\x03\xcbp\x13\xcb\xa3\xbb\xd03w\x9f\xa5\xd1+\x11\x12\xc3\xdcD\x96F\x1f\x02rglE\\\xec\x9b\x9f\xd3 \xf8@\xe6s?\\\x1a;auN\xd6\xc4\xb3\xd6\xb9$\xf1\x89e\xd5\xbcK\x12\x04\x14-\x1c\x8c50\xb4\xc7\x18\"\xb87\x8e\xd6\xb7\xc0\xc2\x0bH\x92\xbc}m\x7f\xceYLS\x8d(H\x8cA\x89\xbc\x88\x01\xc1\x8cV^\x14\xa64\xb4@\x80??\x9c\xfb\x18\xe8\xc3^\xef6}O\xc3\xccZ'\xc6\xc1\x9a\x00%*\xbc\xf3\x13\xdb\x88\xa2xnFO/\x8e\x92\xe48\xf61L\x92\xa1\x0e\xb7\x0c2?\xa4\xa7\xbe\x05\xdey|\\\xc3,\xe6t\x81\x81 \x0dO\xfd\xd8\xdc\xb2\x08\x96c~9\xba \x83\x88\xcck\x91 \xf3\n1Y.\xad\x0bEC\x8f \x04\xc6\xe7\x8b(^Y\x1f\x1e\xd8\xe9\x14\xabr\xd8\xa2\x8f\xf74\xbd\x8c\xe6\xd6*G\xd1\xaf$\xf0\xb9\xff\xa9\x01 \xac\x1a\xe7\x0f\xcc-\xc5dE\x7f\x8cb\x8c\x16i\xa8sI\xc9\x9c\xc6f\xa4\xba\xa4\xfe\xf2\xd2\xdc\x05\x0f`d\x1c\xe4\xa5\xbf\xbc4\xbf\x1b\xd3\x85\xf5\xe1;b!`\x97\xe9*x\x13Y&\x96\xa6\xeb\xc3\xbfe\xfe\xb5\xb1\x86\xefY\x16\xd37/\x10\xden\xbd\xc7\xf0\x8d\xc6\x1a)]\xc6~j>\x81|3\xc4\xaf\xe8\xdd\x07\x12\x93\x95\xb5\x86\x15\xc9\xae\xfc\xd0<z\x8c\x85byj\x01y`#NA\x14\xad\x8dx\x10D7\xc6\x17W$\xf4\x17\xd4\xd2\xf2\x8a\xc4K?\xfc\xd9\x8e\x88\xbc\xd2o\xfe<5#\xdc\x8a\xdc\xda\x9e\xbdC;bs\x0d:\xf7\xcd\xb4\x13\x9f\xfe\x14G\xd9\xdaR\xc5\xba\xefW\x16\xb2\xbd\xf2\xc3\xa6\xd1eA\xea\xaf\x19\xf5\xb3\x1c\xc7\xab,m8\xb0C\xdbq\x1bF\x18p\xd4\xf8\xb4\x91fEk\x0b\xad\x88\xd6\xa9\xbf\xca\xcc\x14xM\xd2\x94\xc6f\x18)a\xb4lu\xee\x92\xb7a\xe0\x87\xe6A\xae\xa3$\xb55\x11S~\x0e\x19\x9fG\x0b\xdfr\n\xe1\x15\xb7\x1dQbJ\xe6\xc7a`f\x12cv\xce\xc64\xfe\x10\x05\xbe\x85\xcd\x8d-\x1b]\x86\x01\xb3\xf4qM\xe3\xc4V!\xb2\xcd2\xba1sfqt\xc393\x8db\x8e}\x12\x12\xce/\"\xf3^M\xbc\xc8B\xfd\xf0\xa9y\xd8\x89\x17GA`c\x8d\x13JV\x01M\xcc\xcc\x9a\x0c\x8ff\xddI\xc9%\xb1\x0d\xd2\xff;5\xc2\x87=4S\xff\x04AgzuM\x83\xe0\x15\x0fwnz?\xf6l\xcf^G\xd6\xc7\xd639\x89=\x9bL\x91\xf0\x08&\xa6UO\xa9yK$\xe9\x9d\x05\xdb\x92l\xb5\"\xb1y#\xa4\xe4\xe2m8\xa7f\x8cJ\xed\x8cT\xea\xa7\x96\xdeS\xdbY\x9c%\xf4=1\xcf\x0bm\x1b\x8cOo\xac\xc7\xd9\xcd\xca\xc6\x83\xdc\xc4\x96n\xc9E\x94\x99\xa7\xcb\x84\x04\xeb\xa4\xfc\xd0\xca\n\xacc\xba\xf0\xcd\xc0\x96\xa6\x82\x16\xda\x94DYl9j\xf8\xbd\xa3\x19\xa8\x91G.\xccsgr:Y\xfb) p\x13\xda\xaaEq\x8c\x11\x85-uN\xf0\xae\xc4P\xc1\x8b\x02\x0b\x8b\xea\xa7t\xf5!\x8e\xcc\xcb\xc4*\x9cpbg\xa02\xac\x86\x95\x17d\x15,26{\xfc\xd1\xc2\x86\xc74\xc9\x82\xd4B\x8c\xa8\x97Y\x19\xdd,,beV#\xd5\x81\xfe\x0eJ\x17\xb1N\x0f\xfe\xb2\xfe\xa9\xcb\x7fox\xbc\xc0p\x13\xa5h\x15\xba\xf8\xddP/\x97/\xba\x8b\xc8t\xfd\xa6\xc8\x18\x98[t\x83\x1d\xaa\xd7\x9a4\xdc\xdaI\xd6b\xeeik\xbd\xcfx\x04Q.5\x1aa!\x08I+c3P\x8d2xb\x15i\xaf.,\x1f\xea\xe6Y\xe6\x0b\x8d\xdch\xacS\xb2\xe5\xeb\x8c\xc4e\xf6%I4\xd6^\x13\xa0\x063/nI\xe6\xc2\x18\xe8\x00c\xdf\xfa):Yw\x8a\x9f\x83\x0b2\xc7\xfb_@\xe7\xeb\xd25\xd3\x80\x07\xc6\x14\xf70\xc5\xddYCw\xda\xe9i\x0c\xc8J%\x06\x05:\xbf\xb5\xf9J\x05\xfa\xe6\xa8\xea\xcf\x14iU\xc8\xc25\xe3\xd5\xa5\x1f\xccc\x1a\xe6\x89\x19Bg\xef\xd9\x96;\x98\x93pI\xe3(K\x82\xbb\x0f\xda\x9au\xa4\x13YT\x8f\xa29\xfd\xcdO/\xdf\x93\xf8\x8a1\xab\xb1\xda\xd6G]\x9d6\xb0\xf9V\x06/u\xd0\x84\xce\xd3\x07y\x9d\xed=\xd3\x07\x93\xac\x05\xa0G\xb3\xdd\xd0y\xeaV\xdd\xec\x00\xcfJ;LZnI\xb6\x1dU\xbblnb\xb2\xb3\xdb\xc5\xec8\xe2\xd7\x1e\xfb\xd5\xfd\xf9\xf4\xfd;i\"\xabZ\x11\xb3\x1aO\xb1F\xdd\x8c\xcbJ\n\xa4\x95\x15q\xd2>d\xeet83ov*nd\xd9$e\xba]D(4\x7f2\xec\"~]\x19\x95\xea3\x08a\x08|\xda\xd7\xed\xbe\xca>3$WK\xbe\x052\xd5\xd0C\xe4\x87xVE2\x11\x9b\xf4\x99>?\x84.\xd9L\xac\xac\xe8\xa40\x9d\xe7\x89x\x04\x85r\xbas\xff\xfa\xffa\xefM\xdb\xdb\xc6\x91E\xe1\xef\xf3+`\xde9ij,)\x96\x9d\xc5Q\xe2\xf6u;\xce\xe9\xdc\xc9\xf6\xc6N/\xa3\xf6\xf8\xc0$$\xf1\x84\"8\\d\xbb;\xf9\xef\xef\x83\x02@\x82d\x81\xa4lgf\xeey.?\xd8\"P\x00\xb1\x16\xaa\n\xb58\xfa\xbe\xb7\xb9\xf2\x1e\xfe\xfd\xb7\xf4//\xdc\xdf\xae\xb6\x07\x0f\xf1Q\xe8\xa5\xdbX\xbb\xca\xcf\xc5\x9a\xa2\xee\xd6\x04\xd1DL:\xfd[\x91\x8ab\xf8\x8af\xde\xd2M\xdb/>\x01Ug\xb3\xc9yU\x1f\xbc9\xf1\xa8yVH\x94np\xe0\xd6u'\xe1\x82\x1bkd4\x0e\xa2\x88%b\xbb\x08\x9c<\x9b\x9c\x93m\xc2\xc86 g\xbb\xc8\n/B\x1a{\x00\xbds\xfe\x9cx\xa3\xd1\xf3\x81\xd4\x0c\x1d\x874\xcd`\xe1V\x17\xa6\\\xda\xd5O\xb1\xe6\x90\xce\xb5B\x98\x9a\xf4\xf4\x87\x9b3\xba\x80H\x0d\x8e\xf4\xb7^?a\xe7:`\xb3\x8c\x16\xadgkH\xb8;\x1f\x8c\xe7<9\xa1\xde\xd2\xcd\xeaF\x80E/br \x83~\x81\xfa\x89\x1b\x8d=\xd1x\xb1m\xd3\xc1s\xb3?\xa2\x87Z\xdfQn\xe42\x0f7\x99,\xf1\xfc\xd7\xfb\xd8\x7f\xfb\x96\xcdm_\x82\xaa\x1d\xedkT+7nI\xcd\x1cTC\xb7\xaa\xd0x`\x86#~\xf0\x808r\x06\xc05\x03T\xb2\xe5:)\xcb^G\x19K\xd64\x94\xe9\x83\x8a\xde\xbc\xa9\x13)p\xb3 \xcd\xe1\xf3r*\x82\x14\xfe\x8b\x06\x8bO{4\x0c\x19S\xf5\x83\xa9G\xc6V\xaa\xda\xea2\x13%\x0eI\xa3\x12 \xa2\xc0\xf6\xbf\xdb\x98\xa3\xdc\xaf6\x7f b'\xe1\x0d\xd5c\xb7U\xd5n\xb6\x85r\x86\xc3\x08\x16+20\x99\x91\xad\x0c.\xc1x\x81\x8c\xc8\xa4\x18 ]\x1c\x9d\x9c\xb1\x1c7\xa3\x9ez(\xf9AK\xbc=\xb5.d?\xcb[v\x18F\x15\x87\x1d\xc1Jf\x9c\xbc&UX\xec\xbaH\xef:7\x13[U\xfa\x9e\xe0\xe4\x05\xc9\x9e\x13\xbe\xbd= \xd1\x8c\x9f\x8bI\x98q\x04\x05i\xf5\x9c\xe6\xdcO\xc9\x8c\x9d\xdf\xef\xb6\xb3\x1c{XP\xa4\xbb\x1ec\xa0\x13\x89h\xed\xcd&C\xf2\xdd\x0b\xc9\x1f\x16\x02\xec\x03'Kr\xe6|\xff\xdd\x908/\x1e\xca\xcc\xef\x9d\xf3\xe6\xc1(J;/\x80\xb1\xfc\xde\x01`\xf5\x1b\xf1\xf4=\xdb+a_d\x97\xdc\xbf\xf9\xfeE\x96\xe8b\xc9\xf7/\x1e\xaaDK\x1d^\xd9\xda\xf5\x82\\\xaf\xc2(=\x00\x8eo\xfa\xf0\xe1\xd5\xd5\xd5\xf8jo\xcc\x93\xc5\xc3\xdd\x9d\x9d\x9d\x87\xe9zQ\xb4~\xbdhT5G\xa9x\xe7/\xceT\xf6\xe8\xf0\x85\x1f\xacU\xcb\xe0\xd7y\xf38\xa4 \xa3\n\xfc\xc5\x8a\xc6\n\x1a~!\xd0\x1e\x0f\xa7d\xb6\xdb\x1c\x01\xddi\x8f\x87\x8b\x84\xe7\xba\x9e\xe2\xd56\x1a\xe2 \xd9\x82E\xben\xc4<`\xa1\x9f\xb2L\xd5P\xbe\"%c\x9a\xd0\x95.(1\x8b*\xa6_\x90BY\x82vAM`\xeb\xdc\x11y\xb7\xb0\x90\"wDn\xcacy\xad\x8bdyT\xe5!l\x92\x1e&4\x13\x9a\x84\xe7\xcc9\xcf\xf0\x9c%\xb3\xdcog~#\x08\xa0,0\xad\xbb\xa7,w\xfa\xcc\xf1\x82\xc4\x0b\x81\xc5\xf5\xc2 \xfe@\xb3\xa5\xf8\xed\xb39\xb8n`a\x18\xc4)d/\xc4\x9f`E\xa5\xaf\x07\x08\x80\xa2\xfe\xd3\xe4?\x13\xea\x07,\x02-\xdd\x15M\xc1\x03D\xac\xaaR72\xf0\x93\x877\x0b^\xfc\xd4u\x88\xc244\xebHddJ'\xcd\xb8\xf4\x0d\xc1\xae\xa5\x060\x84;8/(\x1b\xfba6\x07\x0f>\xc4\x1b\x12*\x7f\x99\xc1xk^N:i\x88@\x9c6\\\x9e\"\xf3\xda)\xa2N?p!\xe4\xfcEpV\xd4\x02\x11T\xe8?\xe7/\xa5m\xb5\xf3\"\x0c\xa2\xcf\xe4\xe1\xf7\x0e\x99\x12\xe7\x85\xa3HP\xe7\xfb\x17\x0f\xcb\xdfN\xd9\x95`<\x0f\x12M}\xa9\xe4C\xd9e\xd4\xd3\xed]\x0f\x01T\xc8`Qwoe~q\xe1BO\xeeW\x1f\x9d\xb8\x82(\xe6\x83\x99\x80\xab\n%\xfb\xd0\x0e/\xa2>\xac$Nl\xde\xc1<\xa2S,\xd1p@\xa3\x19\xc9z$=-\x97\xa8\xcfI\x8eK7R5\x85x\x9c\xc1\x86\x02\xa6\n[\xfa\xa4\xce\xbe\xaa0\x83\x0dW>\xb1\xaa\xbe\x9e.\xe3\x0cN\x1e\xd7;+\xe3\x0c\xee=\xae\xc3\xaf\xf1\x15\xa5\xc2\x0c\xee\xd4;\xab\xc2\x0c\xee\xd4 \x91\x1b\xd5\xfc\xfa`\xaa0\x83\x0d\xbb\x8d\x0b)\xb5\xd9{6\x18B\xb8\xc4\x9d\xba\n\xa4\x8a7\xd8\x18\xbe\x13U\xf0\x11\x14\x9c<n\x14\xbc.\xe5A\xca\x8d\x90\xf8\xbf;\x81\xff{\x8f\x9f\xd4\xe1O%\xfc\xee\xeec\x80\x10\x0dZ\xd6@\x8e\x05\xae\x1a\xfb,d\x19\xd31\x07\xab\x10\x9f\xc9\x01Yc\xdb\xa3\nvD\x0e\x88?\x0e\xa1\x8a3^\xcd{O\x0eH<\xae\xdbo\xc8\x90\xe6\xb5C\xe7\x03\xba\xdd\xa5\\\xa9i\x91O\xc0\x16O\x10\xfa\xd3z\xac\xe8\x1a\xd5w&\xd0\xe3\xc5\xc52[\x855\x91z\xd3]\x00\x01\x1dC\x89N0\xaa\x92T\x11\xd0\xa9\xe0\xcc\x14\x12\xb6\x81\xa7y\x0cQ\xb4\x8e\xab\xaa}?\xd3$\x82\x8e54\xeek\xcd\x7fM\x0e\xc8\x04u\x1d\xf2\xdf\xcd\x13F\xb0S\x1d\x9c\xd8\x85\x8a4\xa7hhe:\x08\xa6\x04\xa8\x8a>\xf8\xeb\xebB\xa2`r\x0b\xa2\x85\x16{\xf7\xa8\x10\xf9;\xe4l\x19\xa4D\xd0\xf6\x82c%W4%:L,\xb9\xbc!\xff%\xce\xa9H\x9cS\xff5Fn6\xfed\x7f\xd3\x1f(Ka./\xde\xa1'\x83\xb4Z\xfd?36\xbe\xc8\xe8\xe2\\\x1a\xd7(s\xcfl\xac\x97\x85\x1e)\x99jY\x0c\x8a\x1fu&{O\x1dA\x1d\x88\n\x87\xf6\xc1?$\x0e\x81\x0btA\x8f\xa9\x91P\xaa;\x84\xcf \x9c\xda\x96\xb2\xe5\xc0\x8b\xe1\x1a\xc3\x91\x0f\xf6\x89]M\xb4uO6\xfc\xc9\x0eHu\x11\x9b\xd9\xb6\xfa\xce\xc0\xa3\xa4\x15B\x8a\x94\x9fL\x9cA\xa5\x81p\xcf^1\xd158\xf72W\x14\xddu\x86\xb0\xec\x07\xed.M>\xb6x\xdc\x90N\xb6\x133P\xfd\x15\xea!\x19\xf1\x88\xa8m\xa6\xd9\xf8b \xa1<U<\xe9\xd7\xd1\x9c7w>!\xda[\xe4\x05\xac\xf2\x07\x0f\xf4\xcfRN#h\xb6\xd7`\x99#a\xa6\xe2W\x87 \xd3\x91\x9b\x0dI\x00>\xb2\x16L\x06\x8e\x85\x88\xc7\x1f\x19\xf5o\xdc\x81v\xa6\xe5\xbe\xc4\xee\x0e\xa0QQ\x9aM \x12\xeb\x99\xa0\xb6v\x16\x97\x9a\xa1:3\xa6\x88\xdf\xe7\xafVKQd\xb6^6\\ \xcd\xc7q^\xc6\xc1\x05\xe7\x92\xa2\xcd\xca\xcfd\xbd\x85*Y\xb7\xa7}i\xbci|l5\x8ey*G\xf0g\xe9\xca\x02\xbe\xd8^\xcd\xa7F5\x97\xb7\xa9\xe6\x1f\x8dj\x16\xdd\xd5\xe8_b5\xbej\x1ca\x19\x8f\x8f.y\x02w\xd3\xe2\x7f\xed\xcc\xcbx|L#i\x0e\xe0x4\x8aCzc\x05)\xfc\xe1h\xc8L&4\x0b\xbc\xcc\xe5|\x1c+\x0f\x85\x8e\xaf\x12<\xcc\xab`\xc6\xe3\x93U\x9c\x05\xe0K\x90\xc9_\x08H\xe4%7q&\x81\xf4o\x0c\xccW >\x9a\x9d$p\xa3\x0e\x91\xfd\x9a\xd9o8\xf5\x99/\xfd\xd6:!\xbc@\xc8\x0f\x0b\xe0[\x96Q\xdf\x04^\xa9\x04\xbc\x80\x8a\x9f\x04\xb0)\x12\xe4\x08\x1c\x96\xe7\xa9\x18\xb0X\xfcG\xb2\xe5L\xe1\xd3$2\x81\x88\x80\xfc Z _$\xa0X\xe6\xc4\xeag\x13\xe8#\xcdX1s \xcd\x98m\xd6N\x19\x03\xf3\x0b'\x85\x1f8\x80lQ*\x7f! \x19\x0d\xa5\xcf\xc9T\xfeB@\xf24\x06I\x8f\x93\xca_M\x90\xb3`\xc5t\xb4$'\x0bV,\xc7B\x1ae<\xfe\x89\x87\xf9\xaa\xec\xdd\x1a^m\xfd\xfb\x99\x06\x99l\xfe\x95\xfce\xd0\x11\x18 \xf6{c\xff^\x8f\xb3\x84z\x9f{\xec\xfd\x1f\x1aeK_\xcb\x82\xe0~\xfdR\x1f\x98{\xf5\x8b\x1a\xb1\xf3\x199 \xea3\xd5\xcc\xc2W\xbe.\xfe\xc8)<\xf4ft\x81\x1du\xd2\xd3{\x00\xba\xfb\xd6 ?\xeap\xc6\xdd\xb5\xcb\xeaMW@\x05>\x06\xb9\xa9/\x86%\xfeA\xba\x1bU\x0e\xdc\xd4\x1e\x01\xb9\x8f\xfc\xcf\x06\x96k\xe0\xcb\x84\xd1\xcf\xcd,\xd9\xb0u\xe03nm6\xcd\xfd\x00\xcb%\xa6\x0c=+]a\xdb\xfbp>$\xaf\x06\xe4U]\x1e\x93\x01\xb1\xd7Vx\x1c\xe7\xe9\xd2E\x86 \x1b\x92W\xb3\xec\\t\xdcB7\xb7v\\j\xac\xdd\xef\x8c\x9cH4Y\xe0\xcb[\xceI\xb0Z|\xf3v\x0d\xc9\xb7\\Us\x9e\xac\xee\xb7\x0b\x1f\x19h\x88\x11'Q?Z\xbap\x9a_\xae\x02)\xb4\xd4\xbfn\xd7\x8d\xc0\x128E\xad \xe9*\xce\x1a\xd7\x8b]g4a\xf4~\xc7\xe1\xb5\n/>\x14\xad\xd3?\x99=$\x01\x82;\x7fj\xe0\xce\x1b\xa0\x9b\xe4\x89\xd0\x87p\xfa\x11\xe5\xfd\xe5%\x07&k\xb8\xa4\xe2\x94Fs\x12<\x1d\xae@\xb0\x0c\xb6\xba\x14\xc7\x1f\x96\xb5\xb4\xd4\x15\xac,\"\x90@\xc6\x14\xc5\xb2>\xb3\x9b\x05\x8b\xf0\xbc0\x88>\xe39\x82\x9e\xc1s\xd4\x1d\n\x96\xa5Ug\xb1<8\x0e\xf1\xac\xab\xcbN\xe1\xcd\xcf\xe84\x89Uf\x95\n\xc5\x89\xad%j5w}\xf3\xff\x80\xff\xbe\xe6WW,\xca\x83\x8c\xad\x90\xf2\xe4\xc7\x9ap\xedW\xd0\xa2\x99\xd1\xd1\xefG\xa3\xbf\x9d\xab\xff\xd3\x8b\xdf\xc6\xbf\x8d~\xf3\xcf\xff\xf2\xe7\x87U\xf0\xbf\"\xb7\x95\xff i\xb5\xd3\x06#B\xfe\x8cJ3\n\xedJ\x1d^\xd0\x199\x03\xf2\xfd\x01\xd9\xa9J0\x02[\xa4\x92\xbfA\xb0\x01\xe4{\xbf\xb4\xc5\xd8\x13|{\x15\x17u\x85\xc4\xf9Oy\x03\xfeW\xf03\xfb\xe5\x0bq\x7f\x05\xf3su\xcf!\x08\x98\xc7\nW\xfeU\xdf\xbd4\xdc\xbc\x16\x04NUFb\x86\x03\xc9\xe8\x824\\C\xea\xcc\x88\xaeX\x1aS\x8f}\xfa\xf8\x9aT\xe3ph\xb9\x94\xbee\xa8e\xc7 [\x07<OOAL\xd1\x92w\xcc\xe3\x9bZ\xfe\x92\xa7@\xe9!\xc9\x1f@\xe3\xad\xde\x94\x922< ;:\xd5\xe7\xabjBC4Q\xab\xa6\xe2\xc3\xb1\x9a%\x0eO\xb6f\xa1\xc2\xa0\xb5\xdcyH\x17\x02\xb1\xef +\xe6\x97\xb1\x1f\xa4\x82\x0b\x01\xd5\xc0\x03\xe2\x80\\\xe2\xe5\xfb\xb7\x85\xd7+gH~\x19\xbf\x0d\xae\x83\xa8\xb1\xa7W\x82\xdd-\x00{;NEF\xe5o\xdb\xdb\xf5q\x89\xc6\x17\x81\x7f,\xbe\xc0\x922\xb72\xc8Y\xeb\xd0Y\xe4@CB\xc1\xf5\xc5\xbc\x88AR\x13\xd0\xc5 \x8f\xd3faM\x9f\xb7R\xe4\xa4\x17\xfd\xdaI\xa9t\x10\xf6\xa4\x07\xbd&\xf3\xc5\x81\xd1\n\xd0\xca\x1d\xf4 W\xdbIy\xfd\xa0\x0b\x18\x1f=\xfd\x14\x14I\x8bs\x1bB\x94\x93\xbcVy\xda\x0fr\x95\xb4\xa8\xa5[(1\xd2I\x8d\xe9g5^\xd5%?C2\x97n^\xc5:[\x89\x16\xfe(\x96\xaeX[:\x7f\xd0\xd9\xf4\xdfU\xd3;\x01\xef\xa1\x8fR\xb5\xa1\xa5\x93\x8b\x8eN.\xf0N\xde\xa1IV2W?7\x1dM\xba\xb9\xe5\xb8\xdf\xc3pv\xd0\xe0\x04D\x8f\xed\xad\xbf\xbce\xeb7^5\x8d\x16\"\xde\x8b\xe7\xc4}g4\xa1 D\xc8\xa1\xf6\x18Z9\x8d\x87pC\x9d)D9\x15\xd8\\\x9c\xe4\xda\xbfh\x84AK\x98\xc1\xb0\xb46\x01W\xa3\\\xfa\xb3\x1e\xa7\xeb\x85\xd4$\xe4 \x0b\x16Qy\xc7q@h\xe9\xe69\x1d/\xb3U(5\xea\x0e\xf4\xabT\xebL\xd7\x0b\xe5\xae\xb8\xa0,\xa4\xbfkY\xf7\x948+\x9a-\xeb e\xc5\"w\x15\x0el\xd4\x07\x17\xe3\x9d\xa7\xec\xd8\xd4uk\xbb\x81\x8b\x87\xf2\x82\xbc\xf3\xe6\x80\xa8 0\xbbdwp,\x9d\x89KM\xe1j_l\x8d\xd1\x8fh\xd4\x12n\x851}\xbd&e^\x7f.lGj\x93\xba\xac?\xcb\xaaZ\x0ch\xbf\\\x18\xda/\x17Z\xfb%&\x07dYQB^\x9az0\xf6sB\xaa_\xc7p{\x1e\xa4\xe4\xb0\xd1Kk\xcb\x87PB\xac\xe2\xdeE,\x98\xa3hB\xad\xa2w\xa7.\xc7I\xe1\xb6\xda\xd6\xe38a\x1e\xf5\x96`G\xa26g<\xa8\x92}_\x0e\xc8\xa9`F\x8e\x05\x9c\xa4\x86A\xb3\x1b!\xa8\xbe|!^\xc5\xf2\xe9\x15O>r\x9e\xb9e\x9dRZ[\x1a\xa4\x05,u%\xa99\x17\xb4\xbe\xa5\x9d*\xbcv\xee\xc6\x16\x08\xd5s\x18\x92\xd7Q\x90\x054\xd4t\xbb\xa0%\xe7C\x92\x0c\xc9\xd5@\xfa\xd8o\xfa\xf4\xfb\xda\xe6fP|\xfd\xa4\\\x98\xf0\x8d\xf71\x8b\xce\xe8B\x9a\xdd\x1cE\xfe\x87\xf2\xda*\x85\x0f\xb6,\xf6\xebZ]JA@\xd6\xa5[k\xe9\xa7h\xfe\xd6\xb5@)?\xce\x8a]yN\x0e\xc9\x89X\xdeR\xf3\xebD\xaet\xb2M\xae\xc5/\xb9\xfc\xadKC\x02\xf7@\xe0\x1b\x92\xaf]\x14O\xc7\xc9\xf2\xa68\x82\xe6c\x9ag\x1c\xc2\x88H\xd3\xba\xd6r\xc1x. M\xfe\xe3\x9fr\x14w4\xeb\xd3\xbfSwZ\xa9\" r\x99gY+-\xf7o\xd0\x8dNz\xb3\xa3Q\xff\xe8O\xbc(\x99J\xab\xbeN\x0f\xcc\xd0CCQ+\xd6\xc8\x03l\x83\xb3\xb0\xb8\xd2H\xe0J\x03?\xc7@\xa7\xa7~\x8f\x91t\xc6\x89\x06/\xee\xb3\xa4\xc5T\xcf\x0c)\x11\xd8\xcfP\x0d\xfa\x1ek\x03x\xa7\xfe\xa8N\xa1\x04\xe2\xa2\xd8\x0e\x04\xfdt8\x87\xd5\x8f\x03\xba$\x92\x96\x01\xcb.7P\x7f5&\xc6$6\xdc\xfd\xe3\xebP+\xa2\x08\xa2-\x80x\xf6r\x9a\xe5\xfc\xbe\xe2 \x94H\xdd@-\xa6\x8e\x06\x135\xa29\xc1\xdc\xeccOA'\x9b\xf4\xe4\x9fK,\x0c\xeb\xe8\x90\xbcm\x8e(\xc8\xd4\xc4\x87\xbcz\x9bk~ ]1\xd8\x10(\x01\x85.\xab\x94\xda'\xb9\xd4 \"\xdb\x07\xc4\x01\x15\xa5\xbc}\xc2\xfb\xc6\xcb0\xcc\xc2#\x9f%g\\\xf0\xf9\x81'\xdbA\x0eID\xa6\xfa\xf4\xa9\xd2\x1cf[\x1a\xad\x07\xfa\x03\xf4\x8eZ\x80^\xbfT\x15\x83\xech\xd0\xea\xd3\x1d;\xb5\xfb\xf9s_\x17\xe1Kp\xe2\x80\x93\x16\xb5\xad\xe6J1\xf7\x1c\x1f\x14\x0b\x85\x8f\xa5\xce#\xccRB\xca\x04divP=b\xc1\x7f\x98\x15\x1aYZUL\xd0\x1b\x86\xe2\x98M\x01R?T\xadu\xc0\x0df\x84p]\x83\x9d_)Q\n\x0c\xdc\x89\x1b\xb4\xd1\xc5f \xda\x86\xd3\x12\xbd\xef\xa5\xfcQ\x13\x8aT\xc5[\x18\xff7\x0f\"\xd7qng\xa7O\xca\xa5\xfc\xb3I\xa3 \xce\xf37\x15\x02,\x19{K\x9a\x1ce\xee\x8e\xd8\xbb\x90\xbcM\x1225\xe2^\x10\xeb\xca\xab\xd1\xb7\xbd\xa5\xa6Z\x89\xed~\x97X>\x86\xd3T\x94\x17\x08\xe2\x7f\xc6bs\xa4\x83\x89\xc0\xe8 \x84\x86\x06\x0c\xd8{\x05Z\x1bY\x9c\xd5i\xfbB\x94\xec\xca\xces\x12\x92\x17$\xd5\xb6\x94$\xdc\xde\x1e\xe8fI\x0e6\x19\x92t\x16\x9ew\x912\x8d\xe8\x14\x1e\x0b\x8c\xf0\x14\x9ba1\x8c6i\x0e\x0d\x06e\xdc\xceHv\xb0h\x81\x9b\xc1\xc9\xdf\x8czR7\xe8\xab\x16\xbb\xc5\x16\x00\x19=\xbe\x8c\x82o+\xd7\xefb\x8c\xb8M\xdc\xcb\x15 \x82f\xda\x96%\xb9\x17J\x9a\xdb\xa4\xb3\xbaMh\xe6\x9d\xda\xd4)\xba\xe56\xf1\xacn\x13\x9ay\xa76\xf5\xe0\x03\xb9M\xec\xaa[\x85f\"$\xb3\x9d\x01\x7fW\x14j\x13\xaapE@7`\n,\xa3 \xc4V\x19v\x8b\xf8\xfa-\xde\x95\xda\xd1\x15M\x8c!\xb9\xc6\x83\xe3\xde\x95\x03\xec1\x1f\x97X\x83\xee\xf0\xc9\xcee\xd9\xc1t\xfe\xd4\x8f\xe9\xac\x9f\xfc\xc8\x0co\x80\xade\x8cI\x0b\xcf\x98 >\x00\xf4\x03:\xf3\x08\xc3(Y~4Y\x1f\x7fl\x96 \xe7\x91Yq\x85+\xeb#YN\xed\xecZ;\x1f\x05\xfd\x0cD?\xd3\x01I\xeb\xed\x0e\xa4\xec\x1fX%pU\xf2\xc7\xd7\xc1,8\x07B\xbd\x83\x9d\xb33\x8f\xedW\x8e\x92Z@\xb8`r\x08\x03G L\xad\xdc\xe6\x89`\xcc*\x0c\x1fka\xf8<e\xd8\x05;\xed\x15OJ&\xef\xb3\xde\x8cP\xa1\x1b\xea\x90\xbf\x01K\xc5\x17\xbf|!\xe1\xb8\x11\"\x00\x18\xf3\x07\x0f\x1a\xd5\x16_5jm[_\xad\xd7\x18s%^\xb0Su\xb1\x98\x8c\n\x13\x7fh\x1d\xfbi\xb9\x04\xf5hN\xc9\x9a\x07>f\xd8A\xecB\x11\xd1\xed9\x90\x81q\xc5dfn\xaa\xd1\xc4\x83M\xd6x\xebZ\x12\xe0\x10\x98\xa6\x87Pb.\xa6\xb0}\xf1\x0dI\xdc\xb5\xa7Hek\xc4\x03\xb2\x15#{\xe3\xcb\x172\x87\xb1\xc0\xf3n\xb5o\xaa_\x9e\x0f\xd0\xca\x1f< \xb1\xa8OL\xc1\\\xfc\xb0\xecR\x91\xd7!\x81\x90\xfbM\x14E\"\xfb\xe9\xa7\xa0\xe0Q\xe9\x94\x98\x1aC85\x07|;\x95k\xa3\xdc\xaa=j\xaf\xc9n\x06\xf6\x9d\x9c\xb2\xacm\x1b\xb7\xdf\x8d\x17\xdf\xdb`\xa3w\xa3`\xdf\xa6|^\x7f\xca\xddrX\xedI\xd1K_u\x81L\xed\xd8\xc5\xdf0\x10k3\x05\x84U\xd4l\x80\x12\xd8\x15\xe3\x98c'\xb2\xf5\xfc\xbd5\xd7]\xb0\xb6\xac\xc2\xda\xb2~\xac\xed\xdd\x99c\nZz-6|\xd6L\xc5\xd1\xe3\xd5\xe6m\x02\x05\xd0\x8f\xbfU\xb5\xa9\xc1\xc6\xf3\x92\x8d/G\x0b/\x16vq\xffx1\xaf\xf25\x03\xbd[\xbc\x07\xcf+\x9f1\xe0\x11\x1aKg\xa5\x05q\xa4B]e\x06\xff\xabIr\x89\xb8#uF{\xa2\xc8\x16 _\x03\xf8\x8c]gJ\xf8\xe8V,>\x03PF(\xe4\x16\xd6\"d\x9b\x04\x03\xe3\x98\xcc\xc9!\xa1P.\xaf\x95SW\x92\x8e\x14\xf2\x1aE\xc2\x1a`\xd1\x81\x10\x0bg]\xdbL\x8a\xffy\x07\x0e\x85\x8b]\x84\xed\x1d%F\xab\x1b\xd5 u\xe6\x91]\x95\x10\xabyC\x9e\xfd\xff\xe9\xe2\x19\x8f\xd6\xf9\x95c\x87[\x01\xd8\x0f\x07iV\xdezvT<\\\xed<'\x11yA\xb2B\xfa\x15mo\x0fH6\x8b\xce\x95\x0e\x87\xcd\xf2\x9c\xf4a\xe7\xda\xf8\xd9\xde<\xe6\xf58\xcdx|\x96P\xefs\x10-\xbaN\xc7\xce6\x81\xc3\x82\xb6&-\x19\xf5\xdboo\xb9\x7f\xd3\xd2\xde\xc4u\x9e<qL\x9e\xbf\x01\xda<H\xe5n\x8f\xaa\x82J6\x18\x92\xf58\x8f\xaa:$p\xcb-O\xf4\xa30,\xf5\"T\x9e\xfclO\x9dfDg\xb9\x03\xb7T\x83\xd9\xde\x01\xc3\x14o_\x87\x84\xbb\xbf\x94\xfe\xdb\n}\xe6!\xb9\x90?j\x9e\x80~\xf9\x93*v'\x07/X\x0c\xf7\xc8\xdd{R\xf7y\x82\xbb\xcbi\\\xb8w\x8c\x04\x81\x80\xc3 \xea\x14\x07\x06\xa7k\x91|Kg7{Opo7\x0d\xbfrA\xc5\x11\xcb\xd3gO\xd5\xffgu?)\xca\x8f\xea\x0e\xee\x96w\x7f\xa7\xee\xb8F\xf9\xe5\x15\xf5\xe6-\xfe\xa2H\xb9\xa6h\xdd\xb7\xdf\xd7z\x1b@\x99gRM\x13\xa4\x88\xe3\xa5\xe9\xab\x90Ss,@{\xaft\x8d\x87\xd9a\x08\xaa\xa4\xd5_\x9e\xbc\xc9\xae\xa2\x1e\xdcw\xe1|<\xe7 \xa7w\xaa\x9aA\x15\xd7\x84\x8dRa\xd5?\x16i,\x11\xc9\x85\x033\\4T\xff\xd0Bvh\xe3X\x8f\x00\xf0|^\xc1\xfd\xcbQ\xb1\x99v\xc5\x8d\x8d\x80\xde\xd5o\xa2\x85\xe1X\x84\x1a\x85\xa2E\x8b\xe0\x0c\x11\x90u)Z\x80\x13GuCX\x9a\xef\x8c\xbaT'\x81\xb6o\xd5\xcf\xd8)\xc9DZ^\xdf\xa7\x82\xd5\xdc&\xce\xd4Q\xd7\xe3\x81\x9b\x80uC6$\x1cr\x9e\xf7\xbe\x04\xd5\xfe$59\\]\x06\xb5\xcdT\xe7\xc6\xfa\xcb2\xa5\x17\x0ed!\x13sj\xe8\xa6:0\xb4sj\xf2bjhujZ\x06\xdd\x9e\xa5\xc5\x99\x81+F{F\xcf[\xe3\xb9\x12-M\x9a\xc3\xfa\x07Z\x1d\xa6\xb1\xc4\x14*\xed\xcb\x17\xe2\x8a\xd5\xe0\x0d \xaa4\x17\x8co\xd9\xc9!i#L\n\x89A: |F\xcf\xc9\x01i\xa1\xe3z\xa8\xdeh\xa4\x04\xdcB2N\x97<\xc9\x964\xf2u\x83N\xaec\x1a\xa5\x01\x8f\xd2\x19mY\xbbD\x0b\xc7\xda\xa9FB*\x1e\x89\xa5\\\x89\xcf\xe2s\xcb>6\x1f\xe93\\\xf6\xd9i*C\xea\xa7\x8f&\x8bA6\xe0\x07\xa2\xf4h|\xc7\x03\xf1\xe9\xb3\xba\xcb2\x0e\x86\x87\xa3U:\xea\xf4\xdc]_\xeaj\xeb&n\xe1e\xdd\xe5C\xe2\xac\xd2\x913\xa8\xe3\xda;\xb5\xfb\xe1\xc8\x1d\x0f\x1e.n\xd9\xbe\xb2u\xc9\xb0\x1b\x85kW\xe0\xe3\x8c\x7f\x12\x14$\xe2\x02\xfc\xeb\xbdv\xceF\xa5(\xaa!\x19\x07\xe9\xa7(\xc8B\x96\xa6\xef\xc0\x7f\xd9\xa0k\x1cZ]\x19iQ\x02h@9\x97\x9c\x87\x8cV\\\x17\xcb\x0c\xa5\xc0_z\xe0\xaa\xed\x04\xady\x11\xa4\xef\xe8;7\xab\xa1\x07\xbd2DU \xe80\x9c(s\xc4?\xe5\x83\x07\x84K/\x922\xd2\x05\x99\x82\x08\xbc\x11!\x80HG\xe3`\x96\x99\x04+\xd0\xcf\xca\xc4y\x13_7N\xf7;N\xca\xfe\x0e6)\x0f\xff~\xb7\x8d2\xa8\xec\x94\x11l\x95\xfbl\xf7Cwv4\xfa\xdb\xf9=m\x16g\xf4\xe7\x893\xb08\xc3\xbfCk\xfb\xb5H\xcb\x0b\xfe\xf8\x8a.\xae\xa2 z\xe6\x17\xdb\xb8\xb6\xd8\"y\xf9\x90\xcd\"pq-M\x89\xa5\x14>\x82\xd54\x8b\xec~\x05\xc8m;lpg\x8fw:\xf7\xafej\xbes\xbe#\xdb\xb0\x88\xc8\xb6x\xb9\xe7\x86M\xcc\x86i\x92\xa9\xda\x10q\x08\x87\xecL\xd9\xfcb\xa2l\x8e\xcdE\x97A7\x01?\xa9\xea\xa6\x1b\xdc>\xa4 !(|\xa7B\xda\xff\x07\xf7\xe0[\x13\x84\x9ft\x931\xbb\xce\x12\xeae\xbat\xd9\x1e+s\x8e\xcf\xc2\xbd\x84~\xd9}2\xc0\xec\xe09z\xe8h\x9e\xc1\xb2\xcc\xa3\x19\xabn\xc0s\xcc*=\x9a9?\xb3\xcb\xcfA\x06\xae\xff\x80\x1c\xb9*\xde3\xc8\x7f\xcb\x7f/3W\xf2E\xe6\xac\xd22\xe3\xedi\x99\xfe\xbeL\xe6\x90\xda\xf8jm \x12\xe3`hN3\x8d\x82\x15\xb8\xf8\x02OM\xdcu\x8et\x823$\xe5\xcbI\xe4c|KQ:\xc8\x98\xf4\x14\xd6R\xc7k\x0d\xd3Z\x93\n\xf5g\xad\x05\x9cqa5d\x89\xa0?\xcd\xae\x9c\x15)\xa2\x86\xf2\x0d:S]\x81My\x02\xe6v\xde\\\x0d\xa6k{q\x00\xe6\xfd\x18\xf6\xca\xa0\x8a}\x01Q\x1b\xae\x82\xc8\xe7W\x80\x04\xa5\xa8\x8d\x04csf\xca\x97!i\x02\x14\x83\xdf\x0e\x06#[\xbe\x0e\xaac\x82\xb4\xa5\xa8\xa22\xb4\xc6[o\x9f\xd9\x82\xc6\xa13v^P.\xe2\xe5y\x03d+0a\x90h(\xe2\xe4 \x1aE\x0d\x113\xce)\xa2\\b$5\\D\x91\xbc\xd2.P`\x88\xce\xd1\x8d_qIJ\xee\x8e\x946s\xfc\xdct\xc1,%_\xbb\x93\xba\x0f\xe3\x1c\x97:J\xc7\xcf\x8f\xf6\x8cCE\xbb#~\x86b\xc7\xb0\xdb\xbd\x19h\x13 zY\xc6@5\xeb\xf5\xac\x07\xaa\xe3-\x99\xf7\xf9\x92_\xebHU:,\x1c\xb8\x84\xe7\x95\xd4\xc3R;d\x0c\xc5\x98oj\x8c\x8c!R\x9b\x05\x1d6\xa3)\x98\xaa|\x1b\x88\x95\xe8x\xa1$ nf\x11\xed$\x1a\xecX6\xb2A\x9a\x93\xb2\xff\x98\xcf\x1a\xf1\xc8\xb0\x9aR\xe8f\xb9f\x850\xa8m\x10\x10(\xba\x15\x80^k\x80F\xfeWX\xddx\xe3Tx\x7f\xd5\xbd\xf6o(\xd8\x9fd\xd8\xc16H\x15\x99P\xcfg\xa4\xccFX\xed\x9e*\x90*\xf4P!^\x91\xa7\xdb\xa5\xabJ\xc8!h\xe8[\xaaR\xfd\xc0++\xddc\xd6K\xeb\x9c\xe6\xd0\xb5\x9e6\xa6\xd9\xff\x06\xeb.\x1b\x9b#\xd9\\O\xac\xa7\x8b\x8dj\x9f\xcb1\xca\x8a-uh\xfc\x9e\x96\xdfm\x1d%sR\xcc:aN\xa1F\xf9kJl\xb7\xffU\x8f\x1f]s\xd1M\xcc\x92\xc6m'\xa6\x11\xde.\x9b\x95\xfb\x9d]3/\xcf\xd8{\xf5q7k\xb7mK\xc74\xa5\xb1\x1bv\x1aI\xae\x0b\x85\xf6\x88\xaeZ,\xe4Azh`Ce\xfbk\xe8k\xa2\x14\xbf\xf9\x14G\xa68Xr\xfb=\xd1\x10\xee0\x82\xe7\xc43\xc2\xf7=\x1f@j%\xa9\xdf\xd7\xe6P\xec\x1f9KnNA\xf7\x96'Ga\xe8\xca\x9b\xdb\x99\xe8\xf5\x81\xa0i\xff\xcf\xe9\xfbwc)i\x08\xe67Re\x01D\xd8\xdf\x9d\x83\xda\xcc\x81\xea\xfd\xf9w\x03\xe9\x02`\xe79\x89\xc9\x8b\"\xf4\xd9s\x12oow\x0d\x01Q#\xee\x83\xd6Y\xdc!\xb3$j\xdc\xfdR'\xc3\x1f\xcfy\xb2\x82\x19\x08\xe0g\x9f/\x12\xf5\xd5\xa5\x1ew=\xdeb\xec\xe1\xd2\xb5\x1e;\xcd\xf6,\x95c\xadg\xe0\xe4\xbb\\d\xcbn\xc9*.\xfa\xec\xce\xb5\xe7\xa0\x01\xa8\xf4\xf3u|\x19D>\x1a\x9eO<\x1e\x8f\xb2\x84Ko\xb2\x1e\xa6N\xd0\xaaM]\xa1<\xba\xf0\xc0\xda\xea@\xbfe\xf3Kd\xab\x10`sn\xca\xe3\xe9\xc1\x03\x12\xa0\xdaq\xf8\x06\x13\xdc\xb4\xa3\xaa\x85;\x1b\x88}\x8b\xcc\xbe&\x17\xad\xd5\xe0\xb8\xb1N\x9b4+\xaeZ\x84\xe1x|N\\)'\xe4pG\xa1M\xde\x00{\x0f\xf4\x0f\xc1\x8d\xeeX\xc4\xf2\xc5MD\x11\xd2\xad\xc4Y]\xb8\x1aD\xec4I\xe5]\xa1\xab\xbe6$\x93\x1d\x90\x18\xb5\xdc\xc9\xb8\\\xeai)\x8f1RcK\xb7VbH0\xa9,\xdb/\x91\x0c\xbe\x80e'\xca\xe2\x1a\x1c\xaf\x039\x8b!\xd6\xa3\x16\xf2*x\x03_W\xcfr\xd9\xd4JJ\xf1\xc9&\xa4[\x03E\x01\xb5f\xd9\x81y\xaec\x0d8.\xf3\xca\x8au\xe2\x01\xd9\xda\xaaC\xb6\x926u/\xe8\xdfl\x7f\xda\xb6Fs*\ne\xb1\xd6\x05\xa8\xf4\xab\xa4\xd7\xd66\xed\x1c\xe9\x05\xb6\xc5d\xa5KA\x08\x02\xbd\xb7~\x02<bw\x01dA\x87>\x9a\x06\x1a\x85\xdc\xa3\xed*I+\x1ee\xcbv=\xaa\xae\xaf]1f\xd3n#\x10a\xb5\xdc2C\xe3-\xea\xa0i\xf5\xd32\xaa\xaa\x82>\xdf\x8ej\x0c\xa2~\x9a\xc7\\\xc1\xb0[(3eb*\xdd\x11H \xa99?,\xbbdl\xa2zZ_(\xfc3u\x05\xcd\xe2\xcd\"M\x9dC\xea\xad\x04\x17f5\xce\xe9\xc9\xf1\xc7\x93\xb3\x8b\x97\xef/\xde\xbd?\xbb\xf8ptzzq\xf6\xe3\xeb\xd3\x8b\xf7\x1f/~}\xff\xe9\xe2\xe7\xd7o\xde\\\xfcpr\xf1\xea\xf5\xc7\x93\x97\xce\xed\xbfi\x08K\xeaR\x11\x15o\xb9\x1e\x0d+\xc0\x85\x1f\x94\xe0q\xa0\xf2\xf2^\x0f\x8e\xdf\"\xb3\x90V\xa4\xf6{\x90\xfa\x15\x9c\xe6\xe2\xc7Z\xad\xae\x88K\xc7\x86\x1d\xc8\xaf\x90[\x10\xe9\x9f\xacq\xd3&\xc5 \xe5)Z\xa6\x1f\x92\x8cl\x8b\x92SiN\x01\xd2\xc8\xad\x9d\xba\x9c}0$Y\xb9:*#\x1c\xe2\xee<q\xb6\xb4\xc3\x988\xb2\x86 *h%\x1b\xde\xd5,\x90\xc5\xb2\xdb\xd1\xe1\x18%\x11\xc1\xab>\xd9\xb8\xe9K\xc2\xd0\xa5\x96\x94\x8b2\xf6\xab\x17,d3\x92!\x01\xc4\x03\xea\xd5\xd7\x99[\xbf\xa8 V\xe4\x10\x0c[\xbc\x80\x98=\xb7X@\x08\x90\xc0PDo2\xca\xdbb\xf7OI\xea\x96\xfa\xef\x03\xf9\xd1\xad\xc9\xb0\x16\xe0\xb7]7\xa9\xe0\xc6\x0c{\xf4\xa4b\x8fn-J4\xf7 .\x0ef\xe1\xb9\xe4~\xfa0>rEv\xb36\x80\xda[\xa1,\x8a\x1b\xa5Y\x90l\x9dl\xda\xed\xe5\"r\xbd\x08\xa6$\xefX\x04\xdf\x96\xe8\xb1s\x1c\x06!\x19X\xe8\x9f\x8a\x037\xd7\x01xg\xa8K\xb6\xd2n\xb7\x14\x87&\x16\xf9e9\x9cm\"\xbf2l[\x8b\x14\x12\xa1\xeaJ\x99oU$\xa7\xbf\xaaN\xcc\xe2\xd5\x0ei\xe1\xbf\xc0\xe7\xa3\xb9\xf7\xec\x02\\\xf5-\xaft5\xcd+\xd7r\xa4\xcf!-U\xee\xeez`nt\xbb\xd0\xbcE\xa0\xf8A\x9aoz\x8b\x90\xf6\xbaE\x08;n\x11\xf4/\xfc\xb8\xdap\xb9j\x81E\xc9\xff\xd8\xad\x9e\x12\xd7y6q \x82\xfe\x1fmRp%\xaf\xbe\x1f\xe1w\xb9\x13\x1c\x159nC\xa1\xf7\xbf\x8b\x9c:\xe8\xbe\x1f\xb1\x9c\xf8\xa6fT+\xc5@\x1b\xe2p\xbb\x187$\x07\x9d\x0ed*\x96QnE\xd7V\xac\x85]\xb1\x16\xaa'n(\xc5 \xa1:F\xc9\x8b\x032\xd1\xf2\xb9=G\xf9~ g;\xe7\x03\xe9\xdc\x16\xe644\xb8r\xa9\xc8K5\xd7\x00\xc2\x9b\xe6\xfc4R\xfa\x1efUq\xbc\x94S\xfc_&w\x0f6\x95\xbb\xab-\x9eK\xc9hZ8m\xec\x10Rv\x8c\xfa\xbfD\xfcH7\x92\xfc%\xf5]\xd7E\x92v\x10\xe3\x92\x9e\xc2\x07Z\xda(F%%\xe2\x96\xfc5\xafH\x9d\x1ar\xab\xa8.\xb7B\xa4o\xcd\x15o\x17\x995+\xac\xc9\xc0\xda\xe6\xf1\xb6D\xdbf3#E\xc9Yi\xc1\x89P2\xea\x82\xdb\x8e\xee\xa1\xafY)\xc5\xd8\x90\xfd\xff\x96\x94\xc5\xee.f\xcf\xe4\n\xf8]\x19\xe4X\xda\xf2<z\"c+\xef[,y\x1a\xd5\xe7\x95\xd0\xca\xfb\x93'\x83\x1a\xf1aa\xdb\xed!U\xa4\xda\xaa\x18@`\xabg\xe7\x03\x19\xe0K0\x8e\xa6\xce@\xb3\xda\x10\xad\x96k\xbd\xb8Z s lT\xa8\x7f\x89\xc1\xf4\x1a\x08\x1b,\xd0\xa6\xc8\x82\xbbH\x98\xc7#/\x08Y\"\x97Y\x16\x18\xb6\xba\xfd\x18tb\x184\x8d\x83f-E\xd9\xe6>l\xaeg\xa3A\x9f*v\xc3\xa85\xfd\x90\xf0\xa1\x9dQ\x04Y\xbfv\x90\xd6\xd6\xec\x14\x1cGgC8;i\xdd`\x99\x0dE-\xc5\xe7\xa4\x06\xa9<s\x9a\x91^\x05\xcf.jI\xfbt\xb6b)\xd9\x7f\xb0\xd7\x15\xf7j\xad3XT\x85\xf7_\xd7\xd0\x08cc\xc1\xcb\x1aw\xcfZ\x1c\xb1P\xfbp\x172\x82\x9c\x04Q\x9b\xdb\x06q\x90$u\xd5\xaa\xbc\x97\xfb 1\x97\xc9,oi\xa0~Z\xd6\x85~:\xb2\xf5f\x0b\xc6U\xd3r \x0b:WJ$VJ\xfb\x07\xd2\xf1\x05\xd4\xfc:\xf2\xd9\xb58\x17\xb6\xb7\x87\x02'\x08\x94\xe2\xd9\x87\x0f\x97ehN\xb2\xcf\xcal8\x05\xe8:\xb9\x88>\xbd\x86\xf28B\x17V\xc7\xaa\xe0bU\xd0\x86\x05q\x04\x12T\xd8\x0fQ}M\xf0\"\x9a\xf6d\xdffg\xa5\x95\xbeg\xaer+h_DR\x1d\xca9;\xf9\xe5\xec\xe2\xf8\xfd\xbb\xb3\x93wg\x16G\xacD]1\xc3\xd0X\xa2 \x8bg\x0e\x07\xb8\xcf\xae\xbb\xbcR\xce\xd5M}\x17\\\xc6{UG\xe7\x19K\xca\xfaP\xb8\xaf\x03\xcc\x1d\xa4m14\xdd\xd8\xfe\x8f_\x07\xa7'g\x17o\x8f>\xfe\xf5\xd3\x87\xff\xb7\nH\xdeq\x1c\xdbVCf\xf8\x16\xbc\x1dIp\xdb/\xd7\xcf\xc9\xea\"\xb4\x8f\x1aG\x14\xb5\xcd\x87v\x9c\x809r6W\x89\x19Wz0\xa5\x92\xa0\xb0\x9f\xcf\xe2\x1c\x84\xab\x97V\xe7wp\x0c\x0d\x0b\x973\xed'\x1f(6\xb5\x83\xf8\xdd \xcbn\x90\xb5\xf5\xe6B?\xb0\xe1=\xa9*\xddZ\x15\x0cC}\xcb{\x9d\xe4\x00Qc\xb3\"\xeav3\x99y=\xe8\x02\xf1,\x04E8\xf3z\xa8oIU\xad\x059$\xee\x1c\xa4\xb9su\xe4\x97\xc1cVC\xb2\x1eB$\x9e\xc1@\x86\xe3yK\xb3\xe5xE\xaf\xdd\x95y\xc0\x0b\x80!Y\xd5\xce\xfc\x18|\xf1\xad\x80\xb1h/\xabB:\x95M\xb8(\x11\xe8\x91\x04s\x17CBg\xcbs\xdd\xa2L\xd9B-\xb7\xb7\x07C\x12\x0b\xf2b\xad\xf9|\xed\x81\xc7E\x9c\x7f\x98\x8f]\x7f\xab\x9c`>h\x1a\x03zR\xbaUk\xb2\x89\xf5]\x980\xc2g\xde\xf9\xa0\xcdm>\xf8?\xd2\xe8}^\xfa\x0fi\xd2\xb5\xcdK\x17\x82\xf6\x00\xc3\x7f\x91\x95\\o=\x087<\x05\x9b\xe7^f\xfah\xb5\x84\x9c\xec\xd3\x81bA\xf6vLF\n7\x05\xe6\x92|!\x80\xeb\x96y\x1d\xa8\x98\x94\xf4g\xfb\x9eU'\xef\xdb\xf7?\x9d\\\x9c\xfc\xf2\xfa\xf4\xec\xf5\xbb\xffl9|\x89y\x00w#?\xe3\x1c\xae\xf4\xa9\xbb\x94<D\xab\xfb\xc2&\x8f\xd1OyH\xb7\xc3\x19\xa7tf\x05\xb4\xdcOnt\x92\xaa\xb0\x04\xf8\x1a\xe8`\xed\xfb\x82\x93\x0dg\xfa\xf5\xbb\xd3\x93\x8f=\xc8,b\xcet\x8b$\x9elBn\x91\x0dH.\xf2\xcf\x9a\xd1\x08\x06\xb8\xb2>{\xcd\xae\x11\xaf\xac\xc7E\n\xb1L\xed}\xcd\xeb\xc7\x13\xd8\xc3\xef\xde\xbf<\xe9;\xab\xdd\xe3\x7f\xd7\xfd\xdbB\xa2\x93\xfeT5\xe9IY\x93\x8em\xdbkV\x9bg\xf8-$a\x85\xc5w\x95\xb4H\xd4\xa9b\xe0\x05Qe\xd4\xbbm\xe6Q\xd5s\xcd\xe9\x0b<\xf8\xb0\x19b\x8f\xe1w\xf0\xc4\xde\xfcH\xbaBl\xb6\xf4O\xf8\x9bEt\xedA\xea\xadD\xd7\xa5\x9b'\xd4\xd6W\xb9\x17\xa8\xfb\xe1 \x86\xa7\xae\xfa-8)\xa5\xdb\xbb\xbb{ \x97\xde\xdd\xdd\xad\x0b\xb4\x89\xa1x\xb6_\x1b\xb4\xdau91\x85\xccy\xc7\x81\xbfV\xb6\x1b\x86\x17&\xd60Z$\xe6} \xa8\x89H\xa1\xb7\xb4\xb3\xe7\x82^i*\x89U\xc7FV\xbfu\xa0*x\x0fN \x11\x15\x0f\x81=.N\xde\xfd4%N\x9cp?\x87^ \xe8\xe4\xe7\x93\x1f>\x1c\x1d\xff\xf5\xe2\xf5\xbb7\xaf\xdf\x9d\\\x9c\x9e\xfd\xfa\xe6\xe4tJ\xb6&\xd5F\xd4FJ\x8b\x0b\x9b\xdfE\xa4\xd8\x1b\x13M\xfa\x8e\x8a\x0dL\xb5\x80v\xb9j\xdd0\\?Z\xbc.>\x9d\xcb@\x01\x1b\x88\xf1\xda\xba@\xa1\xc2\x14\xa2U{\xe0k\xd7\xde#\xf0\xe9\xd1y#+\xf8\x9c\x0e\x9e/n\xf1\xbd\xa4\x1f\xd4\xba6\xee\xcd\xf3 \x06\x15\xd8%\xb8\xd8b\xb3\xf8\x1c\xb8\x0d\xbf~G\xda\x8f\x1d\\\x83\xf5n_k\x1e\xbd9@?(p\x97C\xb2\x1e\x0cH2\xae\x07Sq}`\xc3\xf2!\xf8b\xca\xa4\x1f\xa2\x96\xb1\xd3O\x0f\xbfJ\xfa\x91*JTV\x9dT\xa8W\x1f\xdc.\xd4\xbd\xa2\x8a6mM\xfa\xc4(#\x06w\xcd\xdd5l\xfa~\xa5TOW\xfd\xa0\xc57\x16\xd0\xfaZKW\xf5\xa5\xdb\xaf\xbeH\x8a\xcf;\x98Z\xd2\xca\xd8\xb6\xe7\x96k\x9c\x0d\xc8V\xc3\xc7[\x0cV&\x80\xf8\x90\x05.\xcd\xf5\xc1[[|.\x98\xf5\x8d\xa7\x0em\xd7]Y\xdc\x96\x13\xbdj(o\xf1vG\x88\xc5\xe3]\xd4\xb9\xa55r\xc4O\"\xf3A\xc6\x84\xa3\xb4\x8c~\x90Q\xa9\xa4\xd4\xd0\xb1I5\x94\x17|_\x07\xca\xb5\x8c8\xac\x1f?V\x13p+z\xa2\xf3*\xdc\xa2d\xd7PV\xa7\x96\x8bs\xa5dW\xf7\x89\x99*U\xbd\xba#\x80P\xb5\xa5\x9e\xeeU|h\xee=y\\'P\xe68\xe5\x13\xcb\xfa\x1a>9}Y\xdf\xbe\xa2w&\xf5\xea\x96\xaa;\xf5v\xacK%\xfbzO\x05Z\xaa9\xce\x14Xd\x17\xbb\xd2\x07\xc7T\x7f`\xb7\xf2\x97\xe8\xca/\x15H\xcb\xe5rS:\x7fU\xd1 M\xdf\x15\x18u\xc8\xc8\x01 \xc5\xbe\x96:\x89xX\xe8\xc6\x02\x85\xbb\x0b\xe9\x94Z\xaa\xf7(\x12^*\x97Wbf\xd5c\x0d(*B\xf5\xa9\xa2\xb5_]\x82\x17\xcd\xb1\xbbB\xe9$\x8fGi\x96\xe4^\xaf\xebALM\xcb\x88\xf3eq\xf7\xeb\x89\xad\x9c\x06\x19;\xbb\x89YA\xf4\xcb\xbc@i\xc6\xd4\x92\x8d\xd0\x8f\xcd\x8c\xca%l-_\x0e\xdb\x0f4\xf3\x96\xd2\xffZ-?f\x91\x1fD\x8b\xb2\xedH&h\xd6\x80\x03#<\xff\xa3\xf4\xb9\xa5\x15\xeb\xb6&\xb5\xfcW<\xf1\x98\xbc-\xa8dk\xc1\x9f\x18!d(\n\xb9\xa0\xc6|\xb5|\xb5>j\xa9\x80,\xdf'r\xb1\x16C\x9e)\xafOJi \xef\xc71\x0d\xc3K\xea}N\xeb\x1f\xa2ah4\xe3\xe7 \x0c?I\xa4\x0c\xddi\xac\x0c\xabZD[\xe46\xab%z\xbd\xb3\x1c\xed\xe9\xc5\xf66\xbaV\xb2\xd6\x85b'\xdd\xe9\xd0\xb8\xf3\xe9\xaf\x83G\x14\xe6U\xe3\xaa\x14}\n+\x11{!\xcf\xf61\x1ce\xe8g\x0eJ\x82\x0b\x96\xc9\xe5%\xbdl\xb5|\xc6o\xf5\xbeS\x7f\x14v\xd9r\xb7X\x89\n\xc1\xfa\xd8x\x1f\x07)\x04\xbe*f\xb7\xe5lv\xbd\x96\xb6-\xcb!\xd08\xa8B\x08I\xca\xd0F\x13\xfafD\x86%1LV\x97\x1ay\x1f\xf6\xf2eF6\xe8\xf8\x87<a}:/:^\x04/\xaa\xa3\xbfu\x11\xd5\xa7\x9e\xb3\"S\xa9\xea\xbb\x1c\x92K\xb7T\x92<\x906\xfd[\x93\xf2w0\x0e\xd2\x9fh\x18\xf8\xda\x97\xd4r\xa0\xd4\x8a';\x8f\x9d!\xf1\xc6~\x90\xc6!\xbdyGW\xd0\x13OZ\x05~\xf9B\x9c\xa2\xf1\xce`(\xcfevEn\\o`C\xd8\x0b\x01'\xb7\x019\x10\xf3\xb2\x1c\x97\xfb3\x1d\xc2\x88\xcf\xc1$[\xfcV'\x97Xy\x08\x96_\x0eI8NY&x\xaa\xcc\xee\xf6B\xec\xc9\xab!D\xe4_\x8eS\x81i[\xd9jC\xdaq\x02\xfc\x92*D\x0e\xa0\n1\x8e\x83!qu\xec\x04\x90{H\x1b\xb9\x131$U\x9d\xed\x93A\xa1\x8a\xb0Sx\xd0_\xb0L\x0c\xa5\x0b\xc3\xec\x94\x8b@\x0cSe@\xbf\xf1Qr\x05#\x92\x8b\x01\xbd\x0c\xd9\x85t\xf2w\x92$\xbc\x88\x96\x15\xb3d\xce\x93\x95\n +uW\x83l 0?\n\xf0 Z\xb8T\xe3a\x06\xa8xj-Z\x83\x94s\xaf\xba\xfb2\xf0\x01\x86t\xc7\x86GJ\x0d\xc9r0$W}\x8e\x13\x04Cl$\xcc\xd1\xaa\x9d\x16l#\x86\x87\xe7\xd9\xfb\xab\x88%fm\xb7l\x9aY\xddF\xcd\xd4l\x92\xf5`h\x97\xad\x92C\xd8\xc9 \xbe\xd3\xd1e\xca\x97>\x9d\xe9\xb3tl\xb2\xeb\xb6N\x05\xd2\xb8!\x91\x1e\x06b\x1eD\x99-\xa0\x07\xee\xaa^?E\xd4Vl\xa5V\x9b\x83#f\xed\xda>o=\x0e\xc6 \x97\xa4\x91K\x07u\x1c\x86\xee=7o\xd9\xf9\xa0\x96]\xadC#\xa7\n\xdd\xf0\xc1(Y/`2\ne\xaa\xc2\xc2\x83\x016\xbeV\xba\xb2\xc9bo\xed\x808\xa2\xd2\xeb;\x0fu\xdbZ\x0dn\xb9\x1ao\xb5\xf8\x8aq\xd6\xe3f\xa7IZ4_\x83\x12\x83 \x8a\xb8@|.\x96\xe1v,\x87\xa0\xc7\n\x08\xf4\xa4\x07\xe5<\x0f\x86\x15\xc1~\xa1\xaan\xce4\x90\x0543&\xdc\xb5 \x03\xd7\xca\xe5\xbd'\x90\xb78\xecQ\xcf\x18\xa4\xa1flp0H0,b\x08\xe6\xcd\x81\x07a|\x95|\x02i8\xdc\"x\xe3\x93\xb7\x1f\xce~m\xbf>\xb2,hI\x85\xcc\x11\x15\xdeD/\x92*\x81\xbe\x0cB\xdf\xa0\xd2\xb1(\xde\xc8z\xec\x1f\xd2\x8a\x187\xb3\x15\xb1\x9f\xa5\x03\xbd>\xbfi\xf4+\xa2E\xf0\x96ov\\\x02d\x8dmc\x97\xdcII\xbf\x87q\x8c\x0f\x1e\x90\xad\xac\x8d\xa7\xecs\x87\xd0\xc1\x92\xee\x0c\xdb\xef4\xf4S\xb9\xb8, \xbam\xe2\xa0mw\x07\x1d\x01\x05\x08\xe8w\x07\xd1\x9a\x7ff\xff\x99\xd3\xc4g\xbe\xe6\xa9A\x05\x00\xadU\x9a\x93e-!E )\xac\xd6\xf1*\xda\x82a\xd9\xb6\x08\xe8i51\xbf\x05\x1c\xd3W\xba\xa5\xd8\xa2&\xe1\xf9\xf6\x14r%\xdb&\xe3h\x95\x03\xe1\x92\x16\\\xb8e\x93\xb4\x84:p\x99\x8dE\xec\xb3\xe5/V4\xfd\xac\x10U\x9f\xed\xben3\xa7\x04\x1eVuM\xcc\xa3%\xec\x07\xf8\xdb-C \xc4v\xfc\x8e\xf9\xc1\xd6O5~N6 \xd1,9o\x0d`c\xf5\x14\x87\x8dKU\xd2\xb2\xf9\xd0\x18\xe3j=\xf2\xf4\x99\xb3Q\x83\x8c\x93\xa5w\xabL=\xfb\x8d\xa4AM\xca\xc6>\xa5\x81t3[6\x8f\xe8\xe8\x0c\x8d\x1c\x19\xa8\xa1\x0d\xa1VC\xf0 \\\xb5\xf2rpl\xac\xb6\x82\xa5~\xba9K=\x90\x1f\xc2j\xd5B\x8f\xfd\xcdj\x15g\xbe\x1d\x89\x96.w\xbf\x02\xdf\xdb{\x0f\x13\x83\x1d\xeb\xb5n\x80`7;\xd4_\xab\x0f\xf3\x81\xd1H\xaa_X\xf7\xaf~]Q\xbd\xef{\xe5\xceM\xa1\x9e\xe8T\x1b9\xd9\x86\x84\x95\xdeCyP\x011\xc7@I\xaa\x9f\xaa\xa4b\x1f\xe4\xd9\xf0z\xfe\x8e\x89\x0dJ\x93\x9b>\xfb\xb2P\x8e\xc1\xdayH\xe6ME\x80\xcc\xb0\x14\xab\xc2\x0f\xcb\xfb\x11M\xc7\x97\xce\xa8\x0f\xac\xa7\xe1\x97/\xf6\x83\xee\x10\x1f\xa3\xf2;\xd5\xd9jO\xad\\;\x99M\x94 \xb6\x1b\x95>SPk z\x0f\xd0a\xfdI{\xe2\xb8\xc8\xf4\x97 0\xc2\xde\xa6\xa2\xbb\x16\x16i\x08\xbc\xcc\xd6\xa4m1\x17D\xc3\x81\x0c\xd2\x9b\x83\x11\xb8N\x9dJ\xd7[jF\xab\xf7\x04\xc1@\xd5o\xd3\xbeX+\xc7&\x9dW\x11\x10\xe2\xd8\xe6\x1d\x88\xc0\xd5#X\xe5\x03\xeeW\x9f\x1cJ\x17\x98\xb4Ji~\x94\xeb\x1b\xbc\xa6td\xbb\x9e=\xa6\xd9Z\x07\xfe7\xfb]\xe1r\xa1\xb0\xbdGq\x8bw(\xeb\xf6\x80\xf8h\xe3t\xc9\xf3\xb0$K\x8b\xad\x13\xc3\xc4\xa0\xb9\xa25\xf3\xa1\x8c\x82\xacg\xb5\"\n?8 \xd2\x8c\x03\xda\xe5\xbb\xe1\x90x\xb0\xac\xb6|\xf1E\xd1\xa3!\x99\x03\x9f\xde\xbe{\x86$&\x87\x9a7\xeb$e\x01\x91\xd5\xdb\x1aI\x9d\x19\xb8(ab\x17\x81\x95 \xb6\xd5\xc57\x9b\xb4m0$\xb4\x10\xea{\xe2E\xcb$\xe6Cc\xe5\x1e`\xa6=-$\x909\xbb=\xd5O*|Y\x0f)My,5\xd0f\x1fb \xe1,\xect\x93\xb5\x08\xc6m \xcc\xccVii\x11\xb5]dHGo\x0f\x1e\x90\x89r\xa4+\x1d\xc6\x14\x85\x93\xd9\x8e\x85p6\x88\xb1\x03E\xb2\x08\xfc#\n\x88sF~T\xb9\x84\x13\x19\x132%;\xcfI^\xf1\xee\x96\xb7\xfb\xc5^\x1bf\xd9v\xb2\x89\xbbtH\x1c=\xe5\xa6'\xc2\x94\x1c\x92T\xea\xd8H\x8dE\xb9\x1c\xa6$\xbd\x05e\x85\xf8\xbf\xc1\x96#\xbakn\xa1y\xad\xaf\x87\x87\xda\x13A\xdfe*\xb0\xf1\x0f2d\x9b\x1bV\xee?d[,8\xd3#\xda\xe3O\xa8%\x809\xbc(\xf4\x02\xbe:\n\x91\xe0\x90\x845\x19\x81D \xe07\x0b\xc9(\xee\x03p\xaa\xc0\xd4\xe6\xa8\xa0\x8a\xb0@\x15\xd9P\xb7E\xe2\x95\xd0@\x15I\x15\xef}\xac\xcb\x06\\\x18\xe8\xa1\xec#o\xbf2\xc2\x86L\nO\xc2B\xe9Ut\xbf\x1fv\xb24\xe8V\x18\xaa).iEU\xd1m\xc8g\xbb,\xb7\x1d\xc5\xd9\xa4\xd7s\xe2.]\x10\x95\x0f0\xf2URb\xacMP\x9a\xd9\xa4\xc8\x1d\xca\xac\x1a5U%\xa16{Y\xf1 r\xaah\x88\xbb@\xd7OS\x92\x8d\xb9\xdb\xd6Ou\x1a\xbb\xa5\xd9d\x03\x896\xef'\xd1&-\xb2\xba\xd6\x90\xac\x9a\x18\xc4\xc4\xdd\xc5\xfc\x95:1fJ\xcd{E\xdbT\x8bm\xda\xddp8\x0d\xc5\xf0\xfd\x1cdK\xe9]@\x1c\x01!\xca\xa2\x91\xdeR/\xb4\xe2\xfe\x9c+\x1d\xe3-c\x1b\xd8\xd9Y\xf7\x9fy\xb9\xfb>i\x8az\xda0\x08\xeb\xc9\xcb\x14\xc62\xb2\x11\xee\xddZ\xdc\xb7q]4P\x95\x14\x16+|\xd1F2\xe4c\x85\xf4T\xa7[VS\xeb\x95\xafx\xba\xaf\xb8\xd0iA\x06N?_\xc9<\x88h\x18v}\xd9\xec\x05\xca\xf5\xea\xa7\xd5\xf9\xec\xad\xdb\xdf.*\xd5\xdaA\xcc\xd0\x0eb\xa8v\x10+\xb5\x83\x9em\xc8\x16\x0f\xfbI\xb2h\x96Qo\xf9\x91\xcdos\xa2.X\xf6!\xbf\x0c\x03\xafp\x94f\xe9\xb9\xe6\xf2#\xcd\xe5Ov\xda\x18w\x194\xa7w\xedn\xa4\x14\x99\x0e\x0e\x80=\xd3\xaf\xe4\x8f\xaf@I\x8b\xb7\x81\x0c\x04\xd7\xcbv\xc7g\xc8\x98\xd8\x06D\x05\xd5\xb3\x8d\x07||\xc6\xce\xfb|W\xcdl\xdf\x8d\x7f;\xe1s\xf3~\x10\xcc!*)\xe3B9\x86[\xdcQ\x15\xa8\xae\xa6\xae\xa6l+j\xa9\xacPbS\xf9\xfa\xb5\xaf@\xaa1\xb0\x1b\x8fQ/\xcc\x8d!L\xedc\x02\x96\xf0\xb4\xdf\xa6\xb2\x93\x19\x88\xcd\xaa\xc56R*X\xdd\xc9\x96a\x82\xd7l\x1d9\xcd\xb2no\x17\xc9_\xef\xde\n\x94\xb1<\xbdY]rp\xc7*\x7f\x8d\x057\\ys\x9dD\x8c\xdc\x98\xc9U\xed\x00\xba{\xb23\xd9\xd9\xc3{\x95\xfc\xb3Z*\xa3s\xf2\xa4:\xed\xe0W\xf3\x7f\xffo\x9dy\xeb8\xcc*\x04\x0c\xa8\xe6\xcd\x92s\xd8=3~^\xc3|\xe0\xb3\x1dkmy\x01X\x0f\x0cp\xab\x91i\xb1\xb2\x95V\xb2\xcf\x1b\x9d\x90F4\x9b\x19\xc7\xf2\x0e%;0_\x12CR\\Y\x19\xc1\x12\xda\xf6?\x18/\xb53^\x86^\x0e\xb7\x9a9\xed\x0c\xa5\xa9md\x1a\xdf\xba\\\xda\xddvG\xb8\xaa\x0e\xd2\xbf\xca\x04\xd7\x16\xdc\xd5r\xda\xe3\x96\xb4\x08\x02m\xbbS\xd6(\xc5\xd57@-\x8e\xd3\xbf\x891\x17\x1eb\xe4I\xdd3\xba\x0e1\xf2\x14\xb1\xe6*\xcd\xad\xf6'\x0d\x07\xa79x\xa4\xaa~\xbai\xd9\xacd#\xd5S\xabb\x1e_\xfc.6E\xd8D\x12p>%L9\x8f\x0d~g\x10\xef\x97\xaa\x1a\x87:_\x90\xaag\xfc4\xa3Y\xe0I\x1e\xca\x10\x0f\xe5);6\xa3\x19\x9b\xf2\xd0\xbc\xb4NP\xea\xe5\xb4\xd5k{\xd3\xdd\xa9\xe0\xe2\xcb6)\xe5\x8a\xb4\xe3\xb4V\x8b\xa4\xea!\xa8v\xac6EN\xfd*M;*5\x0c2\xfaUX\x1f\xa8\xb6\xfa}\xa6\xa9\xa8\xda\xccW\xc1J\xed\xcfV0\xad\xe6\xd9\xb2\x8a\nP7,\x0d \xc03\xaa7\x18\x12>\xa6\xbe\xff\x81\xf30\x88\x16g\xdc\x0dk\x18\xe1^\x1c \xef\xee>2\x10\xbfD\xfa&\x14o#@\x8a\xb5\xcf\x9a\xe7\x0d\xa9\xc5\xb8o\xe1Q@\x15\xc6eD\xd3|p.\x0eH\xb6L\xf8\x15\xacjA\xd8I\xfd_\xe7\x98F\x11\xcf\x88\xc0<\x84\x12/\xa4iJhJh\xf1%\x07\xc1\xee\xea\xd6\xb8\xd0\xb5\xca\xca%/\xce\x83\xea\x92\xa8\xce\xa1\xa6\x9bM\xf3\x14X\xd3\xac\xdb\xe6G\x9b\xbb\xd4\x10\xfb\xb0R\x9dB5Z\x81\xaa\x8e\xe9-\xf2\x97z7\xc6A\xfa:\xaa`\x17\xe0\xdc\xea\xb5\xe3\xb2\x19\xbcE\xd5k\xb2\xf6\x9en\xd8\x1c\xa3\xea\xba\xc3w\xbc-\xb5\x0b\xa1\xceU\xb5a{\xcc\xea\xdd\xa6\x1e\n\xde\xa6S\x96}\xab\xf6\xe8\xaa-m)1\x88\xc9a\x9b\xa8\x81\xdf\x07j\xb0\x9c\xc5\xfb\xb6\xb3\x189\x8a{\xac\x1a\xe4\x0e\xb5f\x87\xfa\x8e\xfbu\xa5\xc5[\xdb\xad\xfa|%\xf5\n\xab\x83jbbjb\xe2j\xa3\xbb\xcd-\xad\xbeb\xa8\xbc\xa0\x08\xfcc@\x1e\xc9\xf6v\x93\xf8\xaa6\x91\xa2\x9d\xdd\xd4\xf0R\x0b\xec\x1d\x02\xec\xd9\x88\xad\xe2\xecfJ B\xa5\xf1\xb9m\xe2\x10D\x0bW\xfa!\xa8\x93 m\x14|*\xfb\xc9\xaf\"\x96\xbc\xe4^\x0e\x12\x0e\xe55\x89\xaf@HfSb\xd06\x0b\xe38a\x1e\xf5\x96\xacP\xe5\x967P\xdcEn1\x9b\xf2\xc0\x9aT\xb7FX\x1d\xca0^\xceo\xd7{\xde\xd6h$\xc6!\x17\xbd\x1f\x8d~\xbb\xdecNm\xaf\xd5\xce\x02\xab\x8eW\xf3\xf0\xef\xaf\xc4^t\xdb\x1a\x04\xba\xadQ-\xda\xea(\x930\xce\xa3\xea\xd8\xd6j/qK\x8d\xda\xa0\xf7\x82R&\x15b\x03\x0f\x1b\xc0Q4\xea\x14\xb8\xc0\x01\xe7\x19J\xd0\xba\x07\xd1]j\x99\x99\x91Y]k\x86\x07\x0eP.\x06\x86\xf39\xe1\xcfI3\x80\x1d\x89\xea\x9b\xb4\x12\xb5{G\x1a\x03e\xcf }\x0e\xbfh\xb5t\x80\x96~N\"2\"\x01\xf9\x9e\xec<\x1f\x80\xbc\x8bU\xaf\x91\xa2\xd1\x08-\x16\x90\x11\x89T1@\x04\xd5b\x01ZL\xef\xfe\xe89\xc9G\xa3\xe7v^\x1dB\x02\xb71\x8dHK\x1b\xad\xb0\xac$R\x15\xa5\xff\xa9 a\xae\xb3j\x0b\x83\xf4(\xf2XZ\xa5\xc8m\xa7\xacm\x89<n[\"\x8f1\xc1\xb6\x1a\xf3\x0c\x1d1R8y:\xa8\xb0\xdaV\xfd\xa9\xd6q\"mH\xacA:\xd6q\xcc\x1b~\xc5\xc49\xb0Z\xf1\xa8\x1c)\xde\x80\x93\x1fF\xa4\xb1m\x84\xabm<\x9f\xc0m\x85}\xe6\xab_\xcf\x12\xbafI\xca\xce\xae\xf8\x87%M\x11\xd5\x10\xac \xa5b\xfbP\xc5QxN\xd8\xf3\x81v\xe9/H\xf9\xc6\x92\xb4\xccc\x02;[k\xe0$\xa3\x91\xdeE.\x9f%\xe7C\xe2x4\xce\xf2D\x06\x01\xb7-\x86D\xc6jL\xc8\x0b\xb3\xae\xedm\xa3\x9a\xcb\xfc\xf22T\xb5\xf4\x19\x90\x13A\x07\xbcatm\xd3\x96AUe*jH\xf2.\x80\x1c\x168S9d\xd4b\x0e\xe5\xd3\x0b\x84W\xf4\xf9\x80\xe4\x9b\x8f\xde\xba\x0c\x0d\"*\x94\x17\x02E\x85a\x19\xb4\xa5\xb1\xcc-\x15\xa6r$S\xf2\x82\xe4\xc5H\xa6b$#7\x9f\xa5\xd5\x91\xac;f\xa9\xd4\x12\x96\xc5\x8bI\x8d\xdcP\xd6aLj`=\xe3\xe0\xd7\xdd\xcf4\x8cL\xb6\x06\xf9\xab{\xf4\xa18U\x9d\xe3T\xb5\xf4?4y\\w\xe2\x13V\xfd\x02=\x1etE\xbb\xb5\x10\xdf\x85j\x83\x0c\x7f{&\xf5\x8dd\x08\xbc\xdb\x12\xe5\x05\xd1\xad\x13*\xbe)K\xff5!O\x83h\xa1\xc8DR\xb7\x15\x82T\xf1\xd9\x14\xbb#6=\x16\xf2\xaa4\xe5\xdehx\xde\xa0\xe1qQu`\xd0\xdbRmA\x06\xabo!\xb2\xab\x03\xc5m\xa4\xfff\xb4x\x88\xd0\xe2v\xe1\xba'\xf5\xdd*\xa4z\xd0\xa2\x055G\xe0\x1d\xf2\xb0\xec6q:\x14\x8e\xa9\xab\xcb\xeb\xd6\xbdJ\xe8b\xd5fI\xabU\x13\xc7R\xac\x01\xeeP\xe3!\xa1\xaeW\xea\x02\x1b+\x174\xaa\xeb\xa0\xfa\xa3\x02\xc2\xb0\x16-\x8b\x81^q\xb3\xdc\\$\xe7\x18wb\xb8\xf4\xa8\xaf\xe1\xf9\x90\xc4\x8d\x9e4\xcf{1]\xbe\x0cqZoLs \xba8\x1c\xbf\xc6\xe0\x04\x06\x83C\xb6\x89/^Uve\xbe\xee\xc6\x03\xb5\xddK0\xc3\x04\xa3\x8arl\xeb\xd7\x86\x9e\xf0e\xa1)z\x89\xa7p\x18\xb8\x1f1\xdaa\x0c\xb1\xa5\x0d\xa4hG\x05\x19Z\xdc\x1b\x11\xe3T\x80R\xa6\x1a^\x8b\x92W\xa0\xd5\xa8^\xb20X\x05\x19\xf3\xc5w\xdcd\xb6s>$\xc9lr\xbe\x89\x96W\xdb\xdc\xf5gIk\xea\n\x06\xea\xb5\x88\x08\xda8\x07i\xe8\x88\xec\x0e\xbcS\x05\xd1\x01*\xf1v\xa6x\x1c\xb1\xeb\xec4\xb8\x0c\x83h\xf1\xdcJ\xa7\x93\xda\xc5X\xa6\x14Z\x9e\x14\xd6q\x12\xe9\x0e\x86d_2A\xe3H\xab)>x@j\xf8\xcc\x80\x90\x11\x0d[\xbeJ\xcaE\\\xc7 \x16c-\xfd\xb4G\xe0\xb6;\xd3\x94\x04\x981,=\x17\x8d\x9e:A\xe1U\x0fx\x1c\xab\x9d[\xcedVWa\xba\x9b\xa8\xe2vD\x81\xc0\xd0\xb7\x15q\xdc\xcb\x85\x8aEj\xfa\x08'\x07\xf1\x1bL\x19h\xb1:x\x16\xef\xcb\xfafqJh\xf3\xb0\x15\x83\xd7\xb5\xd7 (\x02\x07)\xd8\xce\x04\xd1B\x85M\xb4\xb8\xa0k\x9b_Qfv\xdb6\xf2\xf1<\xcc\xd3%\xb4\x82)-\xf4T\xaa\xa1\xf3\x86\x04<?\xc7/`\xeb\xfd\x83Ub\xbd\x7f-\xd7A\xf1\xaby\x0fW\xad\xf0.\xd7\xa5\xa9u\x15V\x97\x11\x18\x97\xb1+Rs\xab?\xc7\x17@}\xde\xa6dk\xd2\x1c\xe4\xcb\xca\xb0\xde\xd68\x03\xb4\xa1\x1b_l%\xd4,+\x0bdg\x87\xa4\xb0\x92\xd0\x1f\x9f\x12O\xfb\xc1\x11MS{\xbd\x02\xd3\xb5&\xcb\xe6T\xb4' \xf5\xdbl\xed\xbd\xa7X\xd0\xd5\xc8m\xf8n\x95[\xbb\xa1\xcb\xd0\xca\xe95\xf0F\xa8\xd8\xc8z\xba'\xd9H\xb8\xcem\xee\x8dy\x93 T2\xae\xaa\x0c\x00\x11IV\xe7\xb7\xfddf\x83q\x0c\x85DN\xb5\xa0V\x1a\x00+x\xb1\xe7\xd3B\x1c\xf5JE\x9dp+qZ\x9b\x9d\x88Q\x1a\x136\xb9v\x0f\xa1\xec\x0b\xf4\xc9\x15\xd1,X\xb3\x93u\xf5\xee\x84*A\x19 \xac\xf3\xd6O\xfav\xcd\xaf\xd0ef\xfd\x08\xaf\x13\xe9q\xb2\xf7\xb7Y(iR\x98>Gv%+\xbb!e0\xc9`\x08\x85A\x17m\xee\xd6<\x91}%W\xcb d\xc4\xadKT\x8cX\x82 \x97\xe1\xe4E\xa5n-b\xe1 \xa1\x81\xc5Qd\xce\xf8\xf9\x90,\xc7\xcaC\xd7\x99\x9a\x03\x97U\xa6C:\xb53\x87j\xd8\x18;\x1c\x17\xc7v.\xde\xa6\xa9\xd1\x18&lu\x18$Du\x81\x18\x19\xf5\x01h\xde\x19\x96M\x06n\xb1\xa2\xaa!\xf8\xc5qv\xc5\x8f\x92\x05\xf0\xb5\"\xa7\xe2dx\xad\x1c\xefW\x1b|\xc1\"z\x192\x7f*0d5\xa7:\xc4X\xdc\x95\x9f_\xbf{\xf9\xfe\xe7\x8b\x1f\x8f\xde\xbd|s2%\xc1\xd8\xa3\xd1\xa7\x94\xbd|\xff\x96\x1c\x92\xab \xf2\xf9\x15\xc1\xca\xa5,\xfb\xb1Vy\xbb\xe4\xa81\xe1bQT\xc7\xa6\xf1\x85\x13\xdd\xb1\xce\xaa\xd5\x10\x88Sb\xab\xb5\xd6 mV\xdar\xfc\x96U\xb7U\x9a%4\xfeAJ\x1faQ\xf4\x13V\xeb\xdb\x0drH\xf8X\x06\xf0W\xb1\x89\x96\xa0Z-\x0e@\xa8N\x124r\x99\xb1\x81\x16\xd7v5\xe8X\x892o\xdb\"%\n\xbd\xaf&\xadx\x14d<9\xf5\x12\x1e\xca\x88\xe8]\xd3\xaaQf;\x94x\x98\xeb\xb9r\xad\"\x8e\x9b\xbeV\xdb\xda$<\x8a\xc1\x97U\x0c\x89\x93B#\x1dD\x8d\xa2\x8aN\xcc\x11\xe9)\xd3(\x17T\x1b\xd1$0f\x0c\x86\x06\x02\x05\xb4\xc6\xeei\xb7\xcfI\xc7U\"\xce\xf5\xedr\x81\x1eF7\xf18a!\xa3)so+\\(\xde,$\xd7\x12RoEr\xf5S\xc1.\xc4`?K\xe4\x067\x1d\x86\x0eY\x91q\x88\x8c\x03\xc4\xc5\x8a\xe9\x82\xfd\xf2~>O\x99\x0c\xd82\xf6\xb5\xc6\x82\xfe\xa1m4\xe4:z\xc3\xe6\x88\x00\xf5FW\xf5\xeb\x06U\x9d\xf1\xaaX\xf0+\xc1\x82\xceC+;\xbfm\xa9\xf1O\xd5_\xb7\x9a\x89\x92\xf8\xdd\xaf3\xaa\xea\x9acb!~\x1b\xd7\"\xed\x81\x16\xf6\x9e\xe0\x91\x16&\x8f\xeb\xf5\x84\n\xbe\xde\x1e\x0f\xa7\x97q\xbe\xc9\x10B\xd0q\x10\xfd7\x83qi\x8e\xef\xcb\xf7ou\xfc\x8d)I\xda OVqvcT\x9b\xb7\x02\x0b<\xf3!\xcc\x17A\xf4c~)\xb8\xdf~\xc0\x9f\xb2 L\xc5\xd9\xde\x05~\xb2\n\xb2\x8c%S\xf0\x9bg\x05\xfd\x11t\x88\x8a&\x87m\xb0\x05\xef\xe8\x95P\xd5\xf5\xf6/\xe0\xbc\x1e\xd7\x99\xa6\x00g\xb1\xa8e-\xa9\xb5\xf7\xb4\x9e\x9eV\xd4\xc8'\x8f\x9e\xd6\xd5\xc8\x15\x17\xb6[\xff\xbe\xd7-\x03\x01\x8e\xe0\x94\x85r\x08_G\x82\xd9\xa5\xf8\x98+\xd9H>N\x80\x16eE\xa9\xea\xc0c\xf1\xb9\xcd/v\xca\x7f\xb4\xbc\x97\x8e\x0b\xa2\xaa\xc3&\x92\x8eK\xa2\xce\x85X\xe3\xbd\x0c\xad\xea\x02)+\x1dP\xa9\x1f \x94S\x17D\xddu\x04\x94\xa4\xa8\xa2\xb0.F\x9da\xc6\xad=:\xb6\xd1w\"\x9e\x05\xf3\x9b\xa30\xc4\xbeU\xed(*\xf8B\x98\xfbv\xc9W\xbb\xe5Aa^Pk'\xa8Q\x94\x94Ldx\x99D\x8c\x14\x0c-\xd5\xca\x86\x8e\xef\xd5\x06\xc1\xab\xad\x83z\xc5\xb7\xb2A\xc0:\xdf\xf1\x9d\x8d\xcd\x12Z)l\x9b\x81\xc1&\x0d\xae\xf8\xa8n\xfb\x18b\xa6`W\x18hl\x11\xed\xca\xba\xa1\xc6]y\xed\xcd\xae\xf3\x82,\xc5>7\xb0.\xcc&\xcfR.\xbf\x12\x91%\xee\xdc\x14)\xa4C\x12\x0f\x86$\xa8\xf2\xee\xf3\xba\xe1\x15\x14\xbf\xe3\x01\xd6\x90\x05*]\xea\xddz\xdc\xa7@\x1dl{\xa8\x18\x8f\xb6h)\x94\xd78\xdap[*\xa8%\x96\x8d\x98KO\xe6\x85\x90\xe0\xc1\x03\xe2\xa4\xfa\x80\x01\x85/M\xb9\x8a\xac-\xd71\x8f-\xc8W\x8cZ\xf3\xe8l\xce\xeb\x82e\x928N\xa7$'\x87=N\x00\xcd3\x16tt\xd16u}\xff\x91F\x8b\xd6\xa0,`\xdb1\xce\xd8u\xa6d8vP\xb8\xb3\x1d\xfby\x1c\x06\x1e\xcd\xac\xd7\xb5 \x84\xaa?\xe3\n\xcb\x9dI\xb7\xa6C\x92\xc8\xd3\xca\xff\x00\xbb\xcd9\x89|@\xaaI\xe6\xd8\xb9=-rK\xcc\x16\xb6\x9e\xb9-\xbc\xa1\xf8VC\xed\xcf|X\xe4OA\x03\xa5\xe9\xf7\x95\xe0\xcc\x1e\xe9\xc2\x07\xc4\x98$\xb9\x12*\x84\x8dX4H\xb2mh\xe5-\xb1`\x9dv\xd4-k\"\xe6\x174mz\x86\x05\x95\xf3M#o\xc9!\xdep\xd7tKH\xb9,\xed\xb0\xd2\xb7\xc1\x9c{y\xda^iP\x02v\xd5\x99k\x7f \xb0\x86\x8f2\xd7\xe6\x91\xb0]$\x90\x8fa\xe2\x0b+\x80\xe2\xeazH\xf21\x8b\xfcf\x06>\xf9:XC\x9f\xd8=\xa8\x07\x00\x82.!b\x98\x04P\xb723\xf5\xd1\xaf\x8cpu\x14\x07\xe4\x90\xec\x10A\x04g\xfc\x14\xd40\xdcA\xe7~\x0eA\xf2\xee\x85<\xd2h\x02\x1f\xdfPa\x15\xf1]p\x06\x12e)\xec\xe8P\xedh\xb7>\xc6C=\xea\xaau\xf6\xe5\xe8)\x0d\xa7z\xf9\xd0,/^\xcd\x99R\xef\xd5\xae\x87\x9bt]\xf0\xbb\x1e\xd9&-\xee+c\x13\xadV\x90)\xde\x9bX\x0c\x06\xe03W\xb94\x8b\xf5\xf0p\xbb\x03#\xad\xd2\x14\x8f=\x1e\x864N\x99%`k_\xf4\xe6\x8bs\x83L\x89\xd7\x81\xe6\x04\x9c'\xd0W\xcfu\x8a\x90\xf3\xa9\xf5\xb8\xear\xb52\xd4\n\xcb]\xe7V\xf7icX\xbagbQ\x90CIL\x00\xf2\x801!\xd3\xe2\xd7\xf7\x05\x8c+\x01X\xe4\x0f\x15\xa2\x03\x08\xf0Zi\x94\xd5\x99,\xf2\xc1\xd4\x14?\xd9d\xba\x9c{\xc7[\xd2\x84z\x19K\x1ci\x19\xce[\x8e=^\x14\x16\xcb\xa4R4!\xa3\xa2\xb8\x18\x1a\x8c\xeb!=\x84\xb0D\x1d\x1b\xc8)\xd3\x86\xc8\xf4Q\x81\x1eN\xf6\xa5E\xd4\xb9\xc1f\x81;8\xef\xdc\x86DI\x1d\xde\xd2l9^\x05\x91[\x0e{\xc7G\xf2\xaa\x93\x03=\xad\x94L\xcd\xca\xe4\xf4\xb6\xa9\x95\x89\x035\x1a\xb3\xebL\x94\x7f\xf0\x80P\xf2=i\x0d\xc7C\x0c|\xdd\xe2\xa0\x8d\xa86Ri\xff\x92Z\x01\xed\x9aJZ9\x15\xb4\xd6i\xc7xx\x1a\xd0f7FTo\xc1\xe9\x87\xd7\xa7\x87\xf3\x0d\x11\xa0~\xe6%\"\x0c\xe1L\x15\xe8\x9aK\\=\x04\xc7Eb\xc1\x1f\x85!\xd4\x96\xba\x10/\xe8{\xc0 n$\xb8\x0c\xf9\x959\x00\xcb\x99q=U\x91\xa7+\x82\x8d:\xd7\x08\xb6\x91-\x8a\x1a5\xe1\xc2{b\x1d\xfeN\xb1>.\xc5\x93\xb3\xbc\x11\x13T$\x17\xdcKbWB\x00\xe1\xfdx\x1e$\xa9t\x91_(\"\x18I\x95\x82\x9a\xdb)\x12\xb1\xdb{n\xff\xa0\xdd\x16\xca\xd4\xa0+\xf5\x1a+\xea\x86\x8d\x82\xb2\xad\xa5\xeaCuH\xff\xd4\xfc\xd5\xdb\xb3G\xc5`-\x01\x9cl\x18\x9f\xed<'\x91\xb5'{\x92\x13,\x88\xbf6\x1cJ\xc1i\xed6\x89\x80\x1bQ\xa4\x90Fr$ /\x94\xea$%\xdf\x9b\x86b\xf6\xad\x16\x81\x96)\"\xd3\xd4\x8f\\\xceS\x92\x91\x11\x12\xa6\x8a\x90FHi\xfd\x04\x851b\x05\xb8\x91\"\x07\x8c\xbb\xd1\xe0\x9b\x9a\x7f\xec\xef\xedX\x8c\xb0\x8be(\xd5\x9c,\xfc\xfa\x96b{\xb6\"\xb0\x01WVe\x11$%n&\x13\x137\x1a\x14\xfaR\xc6:\x13\xb8\xc2\xf1$\xf1\x98*\xbb\xb6C\x88f#\x93D\xb1)\xd9\xda\x92\xf1mhR(\xda\x7f\xe0i\xa0\xb9\xb4\xad-w\xf2\x84< V 1\x84\x0d\x15\x8d;\x0f\xdb\xa4c\xd8\xac\x17~\x80F\x1e< {\xe0\xe9\xa6\xc9\xdb\xdc\xa1}\xfd\xda\xa1\xb9^\x97\x899\x19W\xec+\xe0\xf2\x8fL\x8b\xe3e0\xf6\xd9\x9c\xe6a\xf6S\xc0\xaeD\xa6$;Pd\xb6\xe5nI\x17\x83\x16_Qc0\xba9\xac\xder\xaa\xd4)\xeak \x84:\x118D\xaf\xa4W\x95\x9c\xa5v{\x13\xe0\x1d]\xb1\xfb\x9dwg\x99e\xf1\xf4\xe1\xc3\xab\xab\xab\xf1\xd5\xde\x98'\x8b\x87\x93g\xcf\x9e=\xbc\x0e\x83\xe8\xb3\xd3\x94\x90!\xf0\xbf\xbc}#\xca\xec?\x8c\xe8\x8a\xa51\xf5\x98\xd3\x94\xa05\xf1\x12\xf5<\x16e?\xb2`\xb1\xcc\xa6\xc4\x91\xaf\xa3%\xbc#>\x9a\xa8\xe7\xe5\xab<\x04O\xd6;H\xb6\xef\x07Y\xb0\xb6d\x86\xc1\"\x12s\xff\x03MY\x18DL|O\xa7\x8d.U\"\xf6\xd10\xe4W\x1f\x19O|\x96@\x99\xf2\x15\x85\x8e\x97\xf4\x92e\x81\x87\xb7b\x15\x87A\x96\xfb\x966&\xf42\xf0^\xf1d%>\x04/\xa39OV\xd8wR\x0fn\x07\xb1Z\xb2, .\xf3\x8cI7\x88N\xe5\x1d\xabJ\xe7\x8b\xa5g\xc2\x8bw\x0c>\xcf\xf8G\x06\xc6\x92\x02\xba|\xc3`\x7f\x0fVy\xb6D\xdb)\xc6\xfcU\xc2\xfe\x91\xb3\xc8\xbb\x99\x12\xa7\xf2\x8e\xd4%\xf2?$|\x1e\x84LA\xab7\x0b\xac\x98\xcf\xd3e0\xcf\x14\xb4x\x1f\xa5\"\x01+p\xc9\xaf\xf1V\xb2E\x10\xe19\x01M\xf1\x8c\x1b4\xd9\xa3\xa1\xf7\x16\x0e`G\xffD\x1a\xe2\xd1\xb8\xd8\x0f\x1e\x8d\xed\x9b\xc1\x0b\x83\x18\xffN\x18\xc4\x1f\xa8\x18tG\xfc\x1c\xc54[Z\xca\x7f\xcca,\x01,\xc9\xd1\x91\xd4\xb5}\x8a\x02\xc1w;\x95w\x0c\x9e\x87<y\x1de,\x89y\x087\xa8p\x18\x86<\x19\x05fj\xaf\xa2\xaf\x820\x83['\xac\x86\xd1\\\xe6\xdaj*\xd7\x8a,\x1c[W\x0b\xe4K\xef\xe8\x10\xe3U\x15Ht\nZ\x04\x88\xb1S/ \xe2Lm\x9cFZK\xb9\xec&d\xb5b: +\x95')O\xf0\xd9\xc6\x97\xad\x87\xafA\x1fOe\x1e\x0bYb\xc3\xab>\xb3#\x1b?\x98\xcf\xf3\x94\x1ds\xe9\xabsJ\x9cZ\n\xd2\x1b?H$go\xa9\x11\xbc\x9eZ\xf2\xd6\x81m |\xbe\n\"Z\xc1\xef:\xa9\x0d\xbd\xfb\xb9\xa5:|\\}\xbca\xcc_0\xb5\xb7\xf5O\xe4[,dkj\xed\xb8\xd4[\xfb\x81z\x9f\x17 \xcf#_\xd4\x05I\xa3\xcb\"\x0d\xab4\xc2'U\xd0L\x91m\xda\x04\x9b\x9bD4\xfc\xc8R\x9e'\x1eK?\xb2\x7f\xe4A\xc2\xe0\xa3\xb6<\xe4\xe3\xf3 \x0c\xd1\x0f\x88\x8c\xf71\xf5\x02\xf0k#\xdeF\\\xbeZjQ\xa8\x08 -\xa8H\xeew\xdb\xe72\x96|d\xa9\xacB\xfe\xb6V\xa1q\x99\xf1\x86\xc1\x86\x9c\xfb\xc7\x02\x13\x08P\xf12\x02\xbc`\x035\xba\x0b\xc0-\xfd\xe5^\x9e\x8a\x99\xc5\xfb\xc2\xa3\xec\x15]\x05!T\xc5\xa3l4\x877\xb4\xa2(;\x05]\n \x98\x06\xbf\xa3\x03\xa7\xc0\x8e\xfc\xff\xce\xd3\xcc\x04\x1eQH\xb2\x95\xc9\x12\x96y\xcb\xa2\x80|\xb5\x02\xdf\x84eC\xc4\x8b\x05\xf0'\x9a\x04\x12U\x00\xe8Z\xbeZ\x80\x7f\xd6g!\xc0^\xd9\x0eC\xa9\xae\x83\x0fg\xc2Wx\x06\xbe\xc3\xe7\xf8\x0e_L\xf0\xe4]<9\xbc\x89\x97\x8a\xfe\x82\xdf\xa3\x08'\xbe \xf3}\x12\xb0(\x03\xcc\xf0#O\x82\xdf\x05\x9f\x18\x16%y\x99;Z\x16\xd9=\xea\xfa\x89%Y\xe0YjZ\xabL[=\xe0\xb8\xdb\xd1?1\xa8\x84\xfa\xa2:\xd0\x12\x99K\x9a\xb5\x91\xd6RNo\xc2\xca;\x02\xbf\xa4\xd1\x02Ned\x98a8\x8e\xfc\xf5/S\xe2\xc0\xef\x11\xf5\xd7\xa3k\xac\x16\x91\xfb> \x16AT\x02sxG\xe1\x03\x9f\xf1EB\xe3\xa5\x85\x90\x0fVt\xc1L\x92\x01\x12ZI\x86 \"xU\x11\xbe\x86\x80\xd8\xf1X\x8c/\xeb\xcfx*\xbeJ?\xe3_\xf8\xbc\x87'?\xc2\x93Y\x12\xb1\xf0-\xcd\x92\xe0zJ\x1c\xf3\x15\xe9\xad\xcc\x16\x93\xfa\x06\xe4UE\x892\xc9R\xca6\xd9\x9f\xd9\x0d\xdci\xa4P\x95\xfa\x8d\xd6qs\x1a\x8b\xd3^\x01\xaa\x17\x1c\xf2,Xi8\xf8\x89@Iy[\x81;\xcdW\x14:\xcbXr*p?\xac\x0b\xf9>Je\x02V@\xa040\xa6\x95'\x8d~\xb7\x1e6`\x8f\x0e\x05\"v\x14-\x00\xe96\xd2\xb0r\x1cp\x012\xb2+\x9a|f\xc9 \x90\x1c\xf2\xf7\x88\xa1\xb4\x86\xcc|\x1b\x18\x80\xab\xc0\x0ex*\xaf\x085h*o\xa1,\xc0\x05\xd7c\xbeZ\xa15\xf60\xde\xac\xb0?\x07>\xac?\xe3\x0d\x85M\xf1=U\x84\xcb-qV=\xc9R\x9d n\x87\xcb\x96lE\x15\xa2\xc6>\xcf-\xd2\x82(_\xbd\xf72\xba\x86\xf5[\xbe \xdf\xd0R]\xa4\x12\xae\x89\x164O\xbaa\xc73\xa5<\x04\xcd ld\xa7q\x00\xd9\xf2m\xdc6_\xb3d\x1e\xf2+k\xa6\xd8\xe4Z6:%\x8eN\x1a\xc5*\x0d\x1b\x17\x05s\xb6\x0c\xbc\xcf\x11KS\xb3\\\xa6\x13\x91\x821\x0d\xa2\xec\xbd\x92\x08\xc1\xcb\xc8&\x10\x8ai\xc4S6\x018\xf1k4A\x81\xb2e\x81&\xcb\x17\x1cRP\xe7\xb5\xf5\x88\xa4\xda\xcb\x9a\x07v=\xc9^\xaa\xf6)\xeb78\x1c[\xa0\xee\x0e\xe0\xf2}\xc4 \xc1V\x00\x97\xa3\xc8\xac\xa3\xec\x17]\x8f\xf8m\xad\xe2(\xfb\xd5\x80\xfb\xb5\x05\xeeo\x06\xdc\xdf0\xb8\x84\xa5,Y\xb3\xa30^R\xf0\x1bo\xbc\xb7\xc1\xa71\xf3\xb2\x8fby\x9b\xa5\xcaT\xb4,`\xee5+\xc6\xb7\x92\x80\x94\xc07\x9d \xa2r|\x18\x136\x17#(\xfea\xd5\xb1\xf9\xaf2\x17\x1b\xb2\x82\x9ey\x0d+\x0b\x00U\n\x08cP\xba=a1\xa3\x19(\x89A\x81\xe2\xcd\n\xfbR0\xe1N\xf1\x1b\x85\x93<\xe8\xc9u\xc6\xa24\xe0Q\n\x05\xea\x89-%_1\x9a\xe5 3\xcb\xe9$\xb4\x94\xd2oA\x074\xcdCK\x16\xcflR\x94\x04g7\x12\x1c\xf7\xa6\x1e\xb5\xb0\x87)c8\xc3\x9f.i\\!I!\xa1\x95$MC\x1e[\xbe\xa2 \x184\x8fyyH\x13C\xe8SO\xc2\xbe\xa5@N\n\xb9\x84SO\xc2K\xd9\xba\x1b'\x8c\xfaoY\xb6\xe4>\xd4U\xbeb\xf5\x94\xda]\x02\xb8|Ca\xfd\x97l\x1dh\xe1\xa5\xf9\x8aB\xb3\x15.\xe0\x169kKN\x90y\xcb\xb3 \x84\xe5h\xbc\xa1\xf5\xf3X\xd3\x86\xe2\xb7\x95.\x14\x99\xa5\x0c\x02@\xed\"\x884K\x82\xcf,[&<_,\x8dc\xb3\x92\xdevvV\x00\xcd\x03\xb4ZC\xdb)*o\xb8,\x03\x94\xf0\xcf\x96\x95 Y/i\xba\xa4IBeWE\xca\xc8\xd7I\xf8\xa7T!^\xae\x81\xa2\x14\xb7\xaf\x04\x01\xf3&\x88\x98G\xe3\xb2L(\x13Z\x0b\xfc7\x0f\xa2j \x91b-\xf26\xc8\x04\xdd\xb1\n\x8c\xa6\xad\x8a4k1s\xbe\xa1L\xeb\x8c\xf3\xcfL\xd3\xc2\n\xfc\xcaB\x0c\xa7y2\xa7\x1e;\x95X\xc81_1\xe8\x1b\xb1\xd4\xdf\xd0h\x91\xd3\x05\xc0W\x12\x90\x12\x19\xbd\x0c\xa5\xb7&\xb1d\x8c7\x146Y0 \x02\xd4/+\xcc\xaf\x05\x0cv\x96e\xec:;\x02\xfdV\x01\xc6\xae\xb3\x91\xd4v\xb5\x80\xbed\x1eO4\x0e\x00p\xbfH\xb1\x141\x91/\x94h\xc3\xbd\x02\xa0\xa0\xf9\xca\x17\x0c\x92\xa3\x1b!+\xe98$7\xc7%\x019. \xc8E;k\x14t\x91\xd6\x86\x06\n \x13\x05\x94%\xdb\xb6\x7f\x1e\x05\x9e\x8d\xb7Qy?\x04~\x00\xf5\xc1\xdb\xe82\xf0\x03{E\xa0|e@\x83\xaa:\x0e\x9e\xa5\x1fXr\xb2\x92\xc0Y:\x8a\x05\x85\x8a\x11\xbf\xeb#\xe3>\xd7Y\x8f\xca\xeb]\x0c\xf8G-\xaar\xd6#%\xb6\xc2\xc0^\x9b\xb2%g=2dM\x18\xf8\xdb\n\x87\xe8\xacG&\xcb\x88\x15P\xdb\n\x19\xd65\xf32\x9e\x9c\xcc\xe7\xcc\x13xF\xbe\x8e\x18\xbcc5\xb1$\xb5\xb1jk\x96dG\xfe\xfaW\xa8&\xc9@\xf0\x86\xa1\x1d\x91Y\xca\xdd\x00\xb4E\xecVB\xffZ\x83F\xeb\x0e\xd8\xd5\x0f\xfcZ@\xca_\x16\x983\xc0 \nL\xbe\xa0\x90ip\x19\x846n\x18P%>\xacW<\xf1K\x89\x8fxk\x91\xf7\\% \xa9Q\xb7E\xeam\xb4\xc2o\x8cp\x9a\xf1\xba\x90\x95\\\xdb\xef\x87\xafq\x04p\x8d#\x80\xeb\xe3%\x8d\"\x16J\xad[@\x91\xf5$\xec\x1ba\x10}>\xf2\xb2\x1c\x88^\x07^\xa7T\xbe[\xc1\x13/\xe1\xa1\x01.\xdfm\xe0?& \x88\x96\xb0\xcb\x04\x15EC\xe6G\xb3\xd2\xb6\x1aO\x97\xfc\xaa\x00L\x97\xfc\xca\x06x\x16dF\x95\x99x\xb3\x82\xca\xab\\\x05\x89_\xe2^\xaf\xc2\x1f\xc0\xd3\xb6s\xbd\n\xa7\x97\x14U\x98\xb8^\x85\x11\xbe\xc8 \xe7\x17\xf8\x00\xd4\x10\xa5SLAG\x81\x8a\xb3W})\xa4\xe8:\xbc^\x85b\xcd\xea\xf6`J;D\xfa2@\x1as\x83/\xae\x1b|q\xdd4\x17W= \xf9\xf2\xefh]\xbfs\xbe:\x8a\xfc\x0fT\x1cQ\xe5K\xab\x7fT\x8a*\x1f)\x17\x02\x81\xc0\x95\xf5@\x11Dz\x1982Ug`\x84R\xcc!\x04il\x85\xa4Y\x1dil\x806 \xb9\xec\xdb >v\xd6!\x17z\x1b\x84Z\xe1\xad \xb0\xb2m\x10zI[\x8c\xdc\x8a\x85h\xcfWk\xb0WH\xd9\xc6\x8cL\xcd\xc8]\xa4\xaa\x9d*#\x02\x8e?\xb3\x9b\xd4\x0d\x06\xe39ON\xa8\xb7t\xed\n\x84t\\\xae\x08\x19\xe7vgH\x02\xf1\xeb\xc1\x03\xe2\xd2q\xe3\xeb\x12H@\x18\xeax\xdf$@\xc7N\xddu\x02\xc7\xedW[\x82\xfe`\x0e\x15\xa4\xa3\x85Guk\xd7T\x81\xef\xe2>>\x1e\xe3>>vw\xeb\xd5\xcf\xc16\xbdj\xcb\xaa50\xdf\xea\xf8\x05\xa69k\xc3;\x8b\x80\"/\x0e\xc8\xa4\xe6=\xb1i\xaeN@2\x12\x02]\x83o\xd0xIS\xe6\x7fd\x8b \xcd$\x15\xaf\x97\x10\n.\x1e\xe5\xf1~J\x1c\x1eID\x85\xa0)\xfdh\xd7\xf6\x06\xb4r\x11\xe5\xa0e\x90\xf5M@\xd9&\x16LC\xe4\x01^\x9a9\x19\x8f\x7f\x08\xf3\xc4\x19\x12\x07\x04\x01\x10\x1b\xfb-\x8br\x95\xf2\x8a{y\xaa~\xff\x95\xdd\xbc\xe4WQ\xf9\xf6)V\xbf\xdf\xf2<eF\x1e\xbc\x17\xb9\x85\xa9\x8d@\xca\x0b\xe6 q\x96\xab\xbb\xac\xdat_;i\xab\xa4.\xd1\xd45\x9a\xba\x92\x0e\x0e*i\x0bH\xc3,\x16nP\x9d\xfc`N\xdc\x95\x0e\x87L\x0e\x0e\x88/^|\xf0-\x9d\xba\x83\x16sU\xad\xc8\xdfnY\x0b\xd1b\x0b\xb31iQ%\x03p\x80?\xf3%M\xcba\xa41\x05J2`\xa9\xcb\x06\x1d\x8a\xf9J\xd0\xc8\xc6\xd5\xca\xf1\xe5\x01\xda>\x06\xe8I\xe47'\xab\xa9\xa2\xbf\xa1EV\x8b\x05q\x87\x0b\x12\xfbf*\x0dM\xa7=\x0d\x82Mc\xd4io\xd3\xe0\xc2du\xda\xcfB\xd8\xb0j\x9dV\x8d\\\xf1m\xdb\xb17\x88\x1a\xed\xa6\xa5a\xab\x85b\x0f\xdb\xc4[\x8e\xbb\xb4KP&\x84\xd3\xc2PA\x07\xc7o\xb1\xf3\x92Q\x12\xa4\xf1I\x0b\x14\x8f\x05\xd0%\xcf#\x1f|5\xc4v\xd8\x90\xcd3\x13\xf8\x0d\x9b\xdfn\x94\xbf\xba~m<\xc0\xb2n\x0d\x8a\xfa\x9e\xbb\x16\x07,6\xde\x80~\x9a\x03\xa9\xcd\xfes\xc3\x93J\xac\xe6aH\x96Cbq\x10\xa7\x06\x9fC\xb4xr\xa0]58C\x91\x04|\xa6\x98\xd7!I\xc6\xa5\xea\xba\x8e\xb8\xf3Ry\xb7c\xa9\x0bf\x99\xd5\xfe\xfd \xf9\x8c%N\x93h\xfce3X\xee\x9aE\xa0\x84\x9aNImF\xd8u\x96P/\xd3wtu\xca\xa4%|\xf4\xd6\xa2\xc3\xea_\x0fdF\x0em\xb1\xd3\x06d\x8a\x9a[\x88'\xbd\n\xdam\xde=\x9a2\xe3\xd8\x9bZW\x9a\x1b\xba\x1c\x82\x9d;Y\x923\xe9#\x9e\x8f\x95\xaa\xed\x89\x1f\x80\xc8Q\x9a\xf1\xf82\xb6\xc7R\xfa\xa2\xd5\x07T\x8b\xd1!\xb8\x82\xc7\xb3\x8b\xf6\xc1\x99mo^qd\x96\xc7d\xf1\xe5\xbb}\xb8<\xe9\xed_\x87\xe3\xd6\x12\x17\x8b\xf4\xfc\x8eI\x89\xe0_\xaa6\xe9S\xdc\xd2 \xb5\xa6\x14\x19@n\xa4E{G\x0b\xeaT\x8b\xbdz\xb1t\xe7\x83^\xdd\xd2$TG\x97$m\xd5\xd9!\xd5\x91\x0edFZ\x1c94\\b\xfa\x1f\xf2\xec\x0d\xf8\xd3d\xf5\xe8k\x16\xaf\xa3%\xf1*M\x97a\xd1\x03u\xb5c\xb5\xc1\xc3\x8d\xaf.!\xf5\xae\xcc\x0c\x1e\x99\xc9\xe6\xaf\xbb\xc9\xfbP\x9c\xc9\xc9\x95\x05\xdbc\x94\x9b\xd9\xdf\xab\xf3J!\xce\xfc(\x8f\xdd{u&g\xae\xd2\xeb\xf0\xb1jM=\xdd\x97\xf0\x8f\xea\xbdZ\xaa\xf4\xfa(\xacUz\x9d\xe9Z\xa9A\xab\xc3/\x14|\xdd\x07\xdf\x8d\x1c\xcd\xfa\xe8\\*\x1e\xad>\n\x17e\x84\xaa?\xbe\xd6\xf2\xaej\xe1\xe8g\x0e\xbd\xe4\xe0G\xc0\xa1Q \xdd\xe3\x9dD~\xe5\xfdu\xc6\xf4\x15\x89\x91\xaa\xfd\x0f8\x97\x8a\x95\xf1h\xf4!\xa47\xc6\xcf3ya\x08)a\xe0}\x86\x1fUn\xc7\xe3\xb1,\x91C]>\xcf/Cv\xac\x81\xfd\x84.\xf4\x7f\xd5*\xf9S\xfa7\x90/\xd7A\xa6\x7fC\x8c7\xfd\xf2~]\x02\x15\x8d\xf5\x13\x0e\x1c\x92\x9f\xcb.)<3$\x0e[\xc5Y\x00Q\xcc\x1c\x16y\xc9M\x9c\xe9\x17_\xfdH\x12\x0e\x15\xce5{\x16D\xb1lv\x10\xadi\x18\x00\xd4\xe7\x92_\xfb\xccn>$pO\x02\xbf%k\x16r\xea\xeb\xff\xcc\x7fI3Z\xbe\xbde\x19\xf5\x8d\x94\xa2\xd5+\x93\xd5\x83\x97\xb7\\v\x14^\xde\xe7%\x94\xee\xf5\xaa\xe4\x06c\x9afL\xfe\xc8S\xf9C\xcd\x93\xf8\x0f\x12m\xe2\xc4 _\xe8\xc6&4c\xe5\xc0\x80s>\xc7t\xf1\xeb\xa4\x8c}\x96\x83\"~\xa9\x1a\xd2\x8c\x86\xa1J\xcd/WrV\xd2<\x8d\x99\x9c\xb9,X\xa9P\xd4\xf0\xc6soy,\xc8\x87\xb0xUS\x0c\xbfu\x07\xe1\xa5\x18\x08\xb8\x1f\x0b\x8cE\xba\xe6a\xbe2\x1a{EA\xf6\x0e?\x97\x8c\x85\xcey\x0f)\x91f\x8d\xd8l\xe7|\x9c\xf1Oq\xcc\x92c\x9a2w@\xb6\x05c\x16\x06\x1es\xeb\x9b\x95(\xcbg\x87G\x10\xe3\xb7\x99\x0bv\x98\x19\x8f-\xd9\x1c\x15x\x90;\x8a5Z\x0c\xc1KiFD\xb6\x89s\x0f\x92\x8c\x04\x91*T\x0f\xe3\x0b)P\xe3Cr5K\xce\x8b\x80\xd9\x00Y\xf3\xd2~\xa2PS\x91X\x08\x07\xae\xad\x16\xca\xce\x18\xe2P\x8d/\x12\xce\x81.}\xfd\xb2\xac\x1f\xa9\xe9\xd4^\xd3e\x9ee\xd2\x0c\xf8@\x06\xe0T\xdb\xdbHH\x8d#W\xa6\x08TF\x13FU\x9a\xf1m\xfdK\xf4\xec\xb8\x95\x92\xbf\xd8\x90\x92\xe7(\x13D\x13B\x87pR\\\xcd\xd89.-\xd8\xba\xe9 \xf5\xfb\xd3\xeaGpjtPT\xc7\xeaD\xe8\x07\xa6O\x8b\x0e\xe8\x97U\xcc\xdd\x01}\xa2\xb0z\x17X\x81\xf1;\x01\xfd\x1e@pRt\x00\xbd\x86\xd5\xd5 $\x0f\x96\x0e\xb07\xe2P\xe9\x01\xa3\x0e\x9c^\x90\xc5a\xd4\x03Z\xe2\xe7\x0e\xc0\x0fp\xfat\x01\xf5X/\x1f\xd4\xa9\xd5\x05\xa6O\xb4\x0e\xb8\x8f\xe5i\xd7\x05 'a\x07\xd0\xa9<\x1b{@\xf5\xe8\xc3\xa9:S\xbb\xc0\xe4y\xdb %\xcf\xe2\x0e\xb0\xb3\xf2\x9c\xee\x80\xfc\xc9<|;`\x7fV\x07\xb3\x9d\xbf\x12<\xc0\x1d\x19\xe5\xbfj\x8a\xab\x9do\x94\xfe\x9e.\xdd\xa8M\x82\xac\x9f\xfbf#!\xb8\xd3\xdd\xba\xd9\"\x88(`\xba\x84)\xa2\x19\xde\xdd\x9a!\xc9\xf4\xf6\xa1\xdeU\xaeq\xe4\xe9\xba\xc9p\xbf4X\x81\x8e\xbev\xc9G\xaa\x80@Y\xf6\x01\xb4Nc\x15\xec}7\x1a\x7f[P\xe6\x1d\x80\xdd\x12\x18\xa2\xe6.\xbe\xdb\xdc\xbd\x14\x9cUGc^*\xae\xab\x17X\xd6\xdd\xb9\x97\x9a[\xeb\x01'9\xb9\x1e\x80}F\xf5e\xc1\x01v\x02\xf2\xae\xadkq\xadHz\x8e\xfb\x99\xc1\xf6t\xe1a\xcd\x12\xf5\x81\xeb\xb3\xa8\xcfJV\xaa\xbd\x8f\x16\xef\xb8\xa4g\x1f\x8fLABG\x9b\x8e\x9aB\x86\xbe%\xfa\xf4\xa4\xc5\xbb^\x9f\x9e\x9cU\xd8\xcd\xf6O\xad\xef\xf6)\x19\xe4\xa7\xe3\x1b\xab\xbb}\xe3g\xe0\x88\xdb?\x81\xf8\\\xd3O\x9fO\x1c\xf3\xb8\x93~;\xeeF\x98\x1f@d\xd1\xde\xd2\xa6?\xc4\xa6\x08\x96\n.-q\x9d\xfd'\x0e\x1e\xc8H\xf0M\x17\x10\x90\xa1\xbc%\xba)9\xadf\x01u\x80\x05\xed\xb7?\x17\x83!\xb9\xa8\x94\xbd\x07\xa1/\xdcV\xf3H\x1e\x89\xa5\xdcw\xeb\xd4e\xe3\x8b\x8c.\xd0\xdb1b\x08j\x05\x1fm\x17\x0f\x04z\x18\x90`\x83\xf8\xac\x9f\x08\x96\xfe\xcb\x17\xe2\x9e(\xde^G\x85\n\x0c\x89\xdf\x0d\x16_\xaamh\xae\x820|\xc9B\x961\xcb\xf0\xdc\xfb\xd8Djll\xbd\x8c\xce\x95\xc3Iw0$>4\x0dR\xbb\xfaU\xbcYd\xef\xc7\x90zG\xd9\xfb\xa3}\xd4\x81=o\x11\x18h\xf7nc\x8f\x86\xa1\x8a\xacn@\x97\xcd.~%c\x9aC\xbc\xf8\xe3\x90\xa6\xa9\xcb\xeba@\n\xa9\xb0\xf4\x8f\xd0\xd4\x06a\xd2/\xb1\xe0-\xb0\xec8e\xb9\xcf\xcb\x0b\xed\xca\xadhM\xfd\x8a\xdf\xd3\xa85o,\x9a+\xc4\x0b\x83\xf8\x92\xd3\x04\xf8\xe6>~\xda\xb54\xa9RP\xe9\x94\x1c\x126\xae\xa4\x17\xb7\xa6\xd5\xe4\xaee\x85Mw\xf0-\xa7;\x90^\x86\xcdI\x08\xeec\x12&\x93\xc9\xbf\xc1\xdaM\x98@\xe2\xbeV(\xff\xf6k\xafy\xf1\xc3-79\xb8\x87\xbd\xcf\xecf\n\xf7V\xf5[4\xa2<\x02d\xa0\xe0\xdf\xdce\xe2\xf1\xb2$\xfc+T\x80f\x83/\xb5\x96|\x1a\xb6\xe5\xaeXF[\xb2\xa51\xa8-\x17|\x19\xa0\xd8\x81\xc8\xb8\x16o\xb9\x1f\xcc\x03pA\x90 8wwR\xbf\x18\x14\x8f\xb7\xa4\xc9q5\xf4~\xe7v\xfd\xccnb\x10\x1cH9\xae\xd4\xfd8\x94nm\xa7\xb5x\xa4\x04\x17\x8f\x7ff7\xb7\xf8\xaa/\xb8V\xf3\xa3_\xbe@z\x1e\xd7\x9a\xc2\xc6\xea\x03}\xdbs\xb5\x0c\xbc\xe5\x86\xadi\x19\x83\xfbll%\x05Eg\xf4[b\x00:$\xc1\xb7P\xe9m\xee_\xfcP9I\xbd)qNR\x8f\xa26\x05\xa0=}I\x93)q\x08\x92\xfd\x06\xf4\xad\x9c\xa3$\xe1W\xe27\x02\xf2)\xd6\x00\x9f0\x83\xc6\x8f\xca\xd0\x04 >ZLM^\xf2\xabH\xc3\xc8\x9b\xc7&\x08\x0b\xa7\xc4\x91\xa4\x1a\x92\xfd3\x18K\xbe?E\xb2\xde\xb2(\x9f\x12\xa7\xa2\xf9\xda\x00:\x8a\xe3\xb4\x13H\xb2MS\xe2\xc8\x1fo\xb8\x87\x19O\xbc\xe5\xbf\x7fH\x82\x08\x14\x84\x00?9\x9f\xa2\xc0gQ&\xf0\x89\xdfjg\x80\xa3\xe0\xfd)q~\xa0\xdeg\x9b\x85\xc5\xb3)q\xce\xe8%\x923\xd9\x15}\n\x19\xc5\xcc#&{ba\xc8\xdb\xedf\xe6\x13\xd1M\x8b\xaf\xcb\xc9S5T \xc7\xec\xc7&\xa2\xc1G!ZR\xb4U\xca\xe6\x9b\x99\xbb;S\xb8(L-\x03\xbb\xfb\xb4m%\xef\xedZ\xd6\xf0\xde\x1e|s\xc1\xd0\xf5\xb9\xf7H\xe5Z\xd6\xdd\xdec\x18%\xcc$|O\x8c\xd1\x8f\x1cu\xcb\xb5\xf7\xb4c\xdb\xec\xed\xb7n\x9b\xbdg]{\xe6\xd1N\xc7\x8ey$Z\xfe:J\x19\xea3\xe7\xd1\x93\xb6\xed4\x81\x95\xf3\ns52\x81u\xf3j\x17\xcd\x12\x83\xf9j\x0f\xcd\x12\xady\xf5\x08\xcd\x12My\xf5\x18\xcd\x12\xc3\xf8\xea \x9a%\x06\xf0\xd5S4K\x0c\xde\xab}tC\x88Q{\xf5\x0c\xcd\x9a@\x97w\xd0<9\x1c\xe8x\xec\xc2xL\xd0\x01y$\x06\xe4]\xbe\xb2\xac\xe8 \xccQ+6\xd9\xdd\x15U\xbce\x19\xada\x0e\x9c\xcb\xb3\x9f\xc0\xd2\x0b\xfegvc\xbb\xd1\xcd\x04\xc99\x03\x90s\x19\xec\xf63\xbbir\xa9\xc0\xfcV0\x1ah\xc8\x97\xde\xe3\xab\n\xb9_\x1b\x8d@\xcf~[\xa3\xb4\x7f|\xabld\xa2\xfc\xe1\x93C\x8d\xcc\xc8\x94\xc8\xb0:\xe3y\xc2W\xc7\x8a@\xab\x07DF\x15d7\xa2;\x82YAy\xc0x\xd5\x06eJ\x9cr\xc6\xee\xc1\xc9\xb6\xd4\x11\xfb\xd7s0>\xcd\xa8t\xf7\xc3\x92\x7f\x1d\x03\xd3\\-\xa0\xbb\xc3R\x1bI/\xb5\xa9\xcf\xda\x81<\xb8]\xf4;\xa0\xee\xc4\x96\xdc\x91%\xb2q&\xd5\xb5\xfd?\x86i\xff\xb7X\xf1\xb1\n\x15\xfd\x7f\x8b\xb8\xe9\xdf\x04O\xb00\xa3\xbft\xf1\x84\x1a\xf1JhCv%\x13\x04\x16\x05\xd5\xba\x97\xd5\xfc\x11\x1b\x1b\xc9\x0d\xc6\xaf\x11\xa74\xcc\xe8\xaf\x1b5\xe5\xd7zS~\xad6\xe5W\xbc)5(\x1c\xa8Ws\xff\x86-%\xc8\x91\x86\xff\xdfj\x19 \xce\xf2\xf1\xa0\xb9\xac\x9eu\xd1\x1b\x88\xac\\\x1f\xe0\xcd\xb1\xbe\xc8x\xfc\x86\xadY\xa8\xe2\x02O b`u\x11\xf8\xe0\xf5KdO\x90\xecJ\x84\x8e\xa9\x8a\x91R\x84\xc0\x80 \xa9\" \xc2\xa9U\xa3y\xd8\xb0\xeb\x85\x8co\x83\xe8O^dta~B\xe0\x82q\xc6\xdf\xf0\xabB{\xd3^\xa9\xb6\xfd\xfe\xf4\xf1uQ\x87\x91F\xa6\x88\xda\xfesl{F\xb5}x\xab\x196\xa7\xaf:3\xf5x\xcfS\xb2U3\xa0\xcfS\xf6*\xb8\x14\x13\xb25\xb9\x8f\xb6\x18\x91c\x1e\xd5\x15\xe6\xc51\xff\xf0\xb7\x87\x87\xdf?\xac\xa6\x0b&\xf9\xe1\xdf_\xfc\xb6\xf5\xdb\xe8\xb7Q-\x0f7\xd4?\xfe\xf1\xe4\xf8\xaf\xa7\x9f\xde^\x1c\x9d\x9d}\xbcxw\xf4\xf6dJ\x1cA\xc7\x8c \xe4\xf0\x08b*\xa79\x1a&\xc3\xf7\x8fU\xee\x19\x97\xb1\xb4\xbb\xf0\x081\xe8i\x9ct%\xe6\xd5^\xc6\xd2LTt\x08\x01f\xd88aqH=&\x10\xaaC\x1c\xb2M\xe8\xb8\xd9~\xb2M\xbe;p\xbe#\xdb$\x13?\x9d??\xf8\xae_@s\x1a}dy\xca\x9a=\xe9\x8a\x80\xa8c\x9b\x16\x16\xec.\xd6\xae\xf6\xce\x8aJ 6QL\x93\x94\xbd\x8e \xf0\xe4dg0\x94\xc1\x7f\x80\x8eo\xf6\xc2\xb6/\xeeY\xa4\xf6\xe4\xf1\xe3\xddI\x17\x92\xab\x0fQ\x11\xc7KL\xf6d\x08=\xdc\x91\x91\"wdH/V\x84\xdb\x12ks\xf4\x88< \xc1s\xc2\xc9\x0bB\xd1\x10_E\x8d\xb9\x19f\x90\x93m\xf2h\xe7\xd9\x93!\xa1\x03Y:\x17\xff\xb6\x0f\xc8\xa3\x01\x89\xc4\x7f7\x13\x7f\xd9X\x0b\xa4\x8f2\x97\x0f\x06d\x1b\xcd \xdbd\xd2\x96\xb9\xdb\x96\xb97@f9#\xffq@\x121\x00\xffa\xc6\xa6&\x8d T\x91\xdaD\x17\xc48lo\xab\xf6c\xcdGq\xa0+?5 _\x88\x1b\xa9\x9f/^\x90\xc9\x93\xfb\xc0G\xe6\xac;\x93\xc7\xe3'\xe3]\xe7\xf6\xb5u\xd8,\xb9\x91\xfb\xe8\xc9`(m\x91p\xdb\xa5I\xdd\x9aG{bx40\x8f\xec}\xa8\xe5\xd9\xc6\xa1\xb7\x04;\x1e)kw\xd6\xa2/'\xe0&\x8a\xfb-\xe3\xce)pV\x85\xd5\xbb\x01\xac7\x1b\xe8O\xd4T\x8a\n\xdcL\x06\x11\x1e\x08\xf4\xc7\xed\xe6\x9e\xcd\x16\xa1\xa1\xb4\x04\xf2\x8c|&N\xfd\xc4u\x1e=rDY\xf1\xeb\xb13\xac\xb8\xf3\xb8\xe7\xf8WbB\xf6,\x83\x9f\xa86\x9d\xe6\x97Y\xc2\x04\xd2\xe3EX\xe0\xdb\x7f9\x1b_\\\xb0\xf4-\xf7\xf3\x90\x81!\xdeP\x86\x87\x8b\x98\x97\x01\xa6\xfe\x90\xf0u \x86BG\x1dm\xb6:p#w\xff\xf1n}\xe5\xf1\"\xeb\xd1\x00e#\x02\xabY\x83\x8a\xf7h4M\x1ejM,\xa7\xa2\xa7MIwL\xc5J_\x12\x1dw\xad\xda_\xae\x93\xefyDU\xad-\x83\x18\xb9u\xfb<\x0eK:r'\xd8\x96\x16\x19{O\x1f\x9b\x18T&=\xc1\xc7\x9a\xfes\xc7Z\x9f;-\x07\x9en\x99\n\x1a\x8d|o\xab\x1fU\x016\"n5\xe8\xdd`@\xb2e\xc2\xafH\xc4\xae\x88@2`\xdc\xe0:\xc74\x8axF\x04oJ(\xf1\x04\xc3IhJh\xf1%\x07\xa1~\x14\x17\x8b\x99\xdd\xaf\x95\x95y\xff\x862\xb3e\x1f\xd9\x9c%,\xf2t\xf3\xc4\x87\xc8\x92\xa6\xd1w\x19\xb9d,\"A\x14d\x01\x0d\x83\x94\xf9dD\xd2<f\x89;\xa8@xR\xd5\xbe\x9d^\x92!$\x8b\x08\x80[e\xcc@p\x85S\xa2@3G.\x83\xa6W\x04=\x1e\xccd\xf1a\x0e\xdb\xfc\x12\xa4\x19O\xc4~\x88\xe4\xaf^n\x06:G\x15\xa4\xc0x\xeb\x1f<\x00d\xafE\xca\xe8j8\x15\xe3I\xd85\x08\x91\xc5Z\\\xe5iFX\x90-YB.\x99\xac\x80'\xc6\xf2\x18\x12\xb1|\xc04N}\x08\xe93\x1b\xc7 \xcf\xb8\xf2\xc4\xa0\x8e\x0b\xe9@\xc3\x85\x86e%@]\xd8\xa1\x1f\x8fGi\x96\xe4\xd2G\x19\x0eB`\xfd\x859Cy^\xfd\xb0(_\xb1D\x86\xf8\xa9;\xb61\x9f\xabDz\"h\xb2j\xe6\xe3\xf1h\x1e,r]_\xf3\x96\x9c4\xe6\x92(\xb1\x82\xb4\xf6V\xa3\x91\xb2\xec\x83\x1e\x82\xf7srH\xd0t5\xefS@O0d\x17\x17\xe2P\xaa )\xddlH\x98\xf8B9\xac\x82\x02\x80\xa8\xc0\xea\x1e\xd6\xdc\xa2-\"\x1b|\xa0a\xc1N\x89X\xe8r\xf16\xfbWmP\xb5)\x8a\x94\xe8\xd7\x82d\x0c\xcdNX4\xe6Qx\x03\xbbK\xd4\x15\xa7cOe\x0c\x1a\x1f+\x11\xb0\x9b\x8c\x8f\xf9J\xfa\xb0\x1e\x98gRy\x00\xe5C\x92C\x8d`\xc8\xd7`sUg\x03]b\x1c\x14Q\xb7\xaa\xcbB7gZ\x1e\x9ac&\xd9}\xa3L\xd94\xf1Y\xcf\x98\x92\x8d?_V\xf5'r\xdb\xc3\xd9 \xb4\xeav\xe9R\x9b\xa9\xae`'\xc9\xe7\xdd'\x9d$\xb1\xf5|c\xa5\xb04\x19\x12:\xc4\x83\xac\xe7\x80\xa8\x02\xb1G\xb8\xbb5\x19\x12\xe7\x98\x86a\x10-\xc09\xa0\x1c+0\xaa\xa3\x19OR\x15\xb8.\xbc!A\n\x18)\xcdc\xd1\"\xe6\x93\xcb\x1b\x92-\x19\xf9/1\xc3#\xb1\xfe\xd2\xff\"1\xf5>\xd3\x05\x1b\x93O)+\xeb\x1b\x83\xb4\xa2xu\x07$\xe3\xf2d\xcc\x96l5&\x1f\x19\xf5\xc9J`m\x9a\x11\x15hu~9^\xb1\x87y\xca\xa4\xa8cT~\xc5\xa9\xdf\x8a\xe1\xa3\x91\xb5-~\x1b]A`\xd0\xcb\x95 \xb8\xe1&\xaf\x80\x0b\x08\x95kn\x04C^r\x1e\xa2\x19\xa2\xb1h\x86\x8c\x94\x8bf\xc9\xa3\x15\xcd\xd2\xce\xc5\xb1\xac\x9b\xd5\xa5\xa5\x114\xc2[\x0d\xfdy?Ge\x8bLK\xdb\x90r\x9a:\xb2\x14\x95\xf2Jk\xc7,\xa5xd\xab\x0fr\xa4\xc7F$\x17\xe2\x01\xe0]\xb8\xa6b\x18kW\xbf(\xff\x1e\xd5\x160\x91r\x83\xb1\x99 \x0e\xec\xa2\xec\x1d\xf0F\x83\xa8o\xa2\x14u\x82\xd14\x0d\x16\x10\x9e\xbb\xaf\xb0\xe79\xc9\xc8\x0bB\x93\x05\x88\x94S%\xe6yN\xb2\xedml\xaf\xe8\xa5^\x14\x98e\x88\xe1t\xf1\x89\x84\x04\x91\xe8\xa1j^y,-i\xfa\xfe*R\x8e&o$-')qqN3\xa9\x1b\x1f\xcd\x92\xf3\x1e\xd7\xdd\x86 9~\xe8\xb4\x8d8Q\x9d\xf2\xccN\xa9Q \xdf\x93=\xd1\x1e\xc95\x01\x8e,\xfb\xbdwN\x0e\xab\xaf\xb8\xfb\xd4\x159 ?p\x1e2\x1a\xa1\xa6\x04\x0b\xa2\x0c\xe3\xe7\xcd\xbc\x1b\x84e\xd3\xe9x\x14n}S@\x0e\x89\xbb#\x0e=5\n\x03)\x81\x88\x9b\x88\x0b<\xa2\x80\x8b\xc0\xe6\xf7\x05\xbd\xe3\x8d\xe3<A\xb6\xe6U\xd16\x90\xa8\\\x88*.\x9a`'P\xc5U\x90-?2\xa4\x87\xd7e-bxO\xc4p\x9f4\xc1N\xc9\x01\xb9\x12y\x97\x00\x864\xf5XT\xb4\xbd\x8d\xeeU\xfb^ \x86\xa4\xc79\x96\x8c\xb8+\x08\xec\xf6\"F\xddl\xac\x02\xb5\xbe\xa3+&\xf5M\"\xf5\xcb)\x88\xa1\xa6\xbf\x88\xaf\xa2\xe2m\xe2\x0c\x1c\x9c\xad\xab\xf8a\xb4\xba\xcc3\x85\x19\x166V?=\xd9Y\xfd|k\xb6V?\x9a\x9d\x0bZ\xfc\x8cm\xc4\xe6\xea\xe7_\xc0\xee\xea\xe7[\xb0\xbd\xfa\xd1\xe3\x15\xd5n\xb8Q\xf6W?|\xac<\xd8\x93\x03r<4\xd8a\xa6~}\xf9B\x12\xcd\x19\x0b\xb4\x11\x96h\x83\xeb\xf4\xef\x8ey\x1e\xfa@\xef\xcd\x83\xc8\x87\xc8*\x89\xf4]\xabxVA\xf9)WE\x82o\x05\xbe\x81\xf091.x\xc6\xe4D\xc2^%4\x86\x02 \x17KGo\x14Q\x1b%/\xb4\xa8\xec\xfb\xa1\xa8\x88]\xc7a\xe0\x05\x82\xe0\x8c\xc5\xda\xd2_\x865&\xbe\"HG\xf3#\xdfu,&\n\xb26\xa8\x05|zf\x827n)c\x88\x11h\xc6\xac.h\xf4\x03\x15+\xb5\x96\xa6a\x8a~\xbe\x8a\x89\xf0BF\x93c\xea-\xc1L\xaa\xe9\xfc\x99\xa0\x0c-\xd9@H\xa1\x9f\x7fOa\x85~\xeeCh\xa1\x9f\x9e\xc2\x0b\xfdt\x0b1\xf4\xd3W\x98\xa1\x9f~B\x0d\xfd\xf4\x12n\xe8\x07_\x13\xe4[\x0b;\x8a\x8f\xb8\x81 \xa3\x86$0H\xbat)\x10Dq\xe6Iw\x18]\x82\x07\xfdh\x9cy%p\x11\x88\x1d\x96t\xcd\x14\x89\x98Jw\x19\xbe\x91\x97\x9e\x16\x9bLe\xe2\x0d\xad6Q\xe0\x99<\x93\xc5\xa0\xe2MN\x158Q\xe0\xf3\xf3 \xa2\xe1[\x1aC=g\x1cj*\xf5F\x05\x84\x9eL\xf6\xca\x04\x95\x9fh\xc7M\x11\xa0\xe5\x12+\xb5/\x1cA\xfa\xc3\x07}^v\xea%8\x9cz\x1f\xe9\xd1\x134\xa1\xad\xd9\x82\xe8\x86yo\x81\xe8\xc6\x8cI\xbf\xc1\xc7\xc6d\x93\x19\xd0\xe3\xb3p+#D\xb2\x1e\xa3\x84\x92\xcb\x88\x0b\xdc\xa2\x8c1\x9b\xd8\xb0\x10\xa9\x96\x13\x91)Y\x0c{\xcc\xc1\x01\x99H\x04k\xab\xb0\xb8`O\xf4|5Vk\xb1I\x9b\xea\x05\xc4\xba\xd8\xb5\x85\xf5=\xacw]U\xbf%\xaf\xa1\xfb\xafz_\x95\xe8\x9eM5\xde\x95\xbeu-\xfbZ\xeb\xf1\x95\xdf\x00\xfaV\x8b_\x7fh\x93\x19\xd1#u\xe3\x1ac\xf5O[\xfd\xb5\xa116\xc0\xcd\xb0\xdf\x84\xa0{\xa0V\xadu\x1bT\xaa\xdel'\xe4p\x14\x95\xfb\xe8\xf5\xfc\x1dc>H\xf2z\x1dNb\xdc\x99^u\xcd]Y\x8a\xe6\xd58\x00\xe5\xdb\xbdp\xd4\xeeJ\xcb\xd3\xe8\xcb\x17\xb2%\xe8oZ\xd2\xdf\xba\xce\x12j e$\xf5\xb2\x07\x82\x0d\xa8\xbb\xb2\xd5\x0f: \x95\x11\xbd\x8f1\xa9N\xd1\x1d\x87\xc5\xaf\xe0\xad\x96\x91\xa9\x00\x9a\x83\xe3\xd70\xdf\xa6\xe3\xf3\x96%\x0b\xe6\xdfit\xba$OX9\xb1_/\x8b\x02\xed\xacf\x8b\xf3j\xd2\x85\xa1H\xc1N\x1a\xcb\x08\x1b\xd3\xcd\xa6oKV\xb9*\x07O\xcc\xc8)L\x0b>\x81\x06\xa89}f\x0d\x9bL^\x90\x9e\xe6\x97\xa9\x97\x04\x97\xfd\xe7K\xb5\x1d\x97\xa9\x89\xc6\xe4Q\xaa+\xed\xd3\x86,\xb9)\x1a\xd1\xb7\x0d+p\xbeQ\xffZ9\x1ef\xe2\x81q\x1f8.\x92%\xdc\x92F~\xa8\xa8\xe2\xf1e\x10\xf9\x90<\x18\x0cI#\xdbE\xfc\x8c\x10\xb47\x9f*\x1f\xef\xd5\x9f^=qu\xb3\xaa\xbd\x13\xecd\xaf\xa6\x15\x92\x83\x97\x81\xff\x96\xe7Q\xe7]\xab~\xe0\xa3\xe64\xb9\x9b}\xef\xe7 \x0c?2\x8f\x05k\x84\x93h\xfb\xf0U\xcbN\x90[\x0c\xdc\xc3\xa8\xb9j\xf2@M\x7f\xe5\xfaik\xea\xa7hu\x9b\xd1\xf9\x84\xcc\x94)\xb3\xe8\xd5\x8e\x02~\xa3\xaf\xd7\xb17h\xa5\xd7\xcf\xc2jz\x15c\x18\x19\xb6q,\xb2\x9b\xecd5\x7fm\x9c\xf7?0\x16}H\x98GC\x0f\\\x19\xf9\xca[\x7f\xadi\x06H\xc0#\x10\xa3T\x1b%o\xe6\x99\xaf\xb4\xd4\xab\x99v\xa2\x0b\x01\xaa\xf1%\x0d-|\xfd\xd4&\xc6\xc4\x04}\xa7\x06\x14\x1fk\xfb\xb5\xcf\xa1VCY}\xf9[\x02:\xb9\x07\xc6\xd8\x8eK\xe9Z\xfb\xd9\x07\xec\x8b\x14'\x00\xd1\xd9\xd9L]\xe8\xaa\xc4\xc3m\x1c]\x9f\xea\x08&\xcd\xef\xa2\xf2\xebO\x96\xdcl\x00M\xcc\xab \x1a\xc7\xe1\x8dk\x11\xe2`\xcfW\xe2\xd1vo\xc6\xb6G}s9\x06y\x9a<\xb0\x97\xbdk\xb0\xcb\xb3\xccGQ+6r^\xee\x8a\x0e\x8aI?\xb0<\n\xe7\x9a\xfd\xcaDp\xd3\xb5\xc4\xc8o|\xb7\xab\xd1\x18\xf4\xc7#\xedb?\xd2k\xa8z\xe1\xb4T\xef\xc0~\xd3l\xca\xb4q\n\xc8|\xbe\xb6\xaf\xb8\x16\xe9e\x1f\xbc\xb5`\x99\xb4\xb7\xf2\xb5zu_\xec\xa59\x8c\xea\x15\xc7\xf5\x908g\x9cP\xcfci\n\x97\x12W\xb2\xfa\xe2\xf6kHnxN\"\xc6|\x92q\x88\xe0\x1f\xcco\xc8\x1fD]kNI\x96\xe4\x8c|%T\x16\x9f\xf3<\xc9\x96\xc5\xe50\x01\"\x12\xeeF\xe0~q\x00\xf7HcgP\x1c\x04\xf3t|U\xedQ\x9fq\xe8\xa7\xda\xa5\x1f}\xcdi;\x10\xdb\x11qT\x96l\xae\xab\xf6\xa2\x81\xf9\xd1\x96\xe5\xdf^\x0b\xad\x9c\x02\xb6=\xd7^G\xae\xeb\xa8\x1d\xbd\xf6\xdd_\x1cw\x16\nb\xd2AAL\xfa\xef\xfc\xcd(\x08\xaa\xefih\xbb`-\x95{\xbeuX\xc2\x8e0Hp \xe6\x80\xf5R\xad, /e\xba\xce\xc8!\xd4m\xc2\xb6\n\x88:\x84\x84\x1e\x12\x1d\xb1\xfe\xccU\xb4D[~@\x0ee=;dJ\x803u=\xbd*l\xe7\x8a+x\xa7\x10`\xe7UXT\x82\xe2\xb6]\xc5\x16L\xf2\xd6\x96\xeb\x81\xd6\x07\x8c\xe6\xa0\x18\"\xab\xe8\xc1\x95\xbcqN\x0eIN\xa6jY6i\xc8k\xa5\xf9\xc1\xd5\xf5\x99\xca\x01\x1e#q\xff\xf8\xda$\x95\xbb\xee\xd3d\xe0\xe9\x1a~\xc2#`\x10\xc0\xfd\x03\xd1<K\x13\xea\x1f\x1f\xe0\xc4\xb0\x9d\xb1hd|u9\xaau\xaa\x9fB_\xcb\xd4\xd3\x80\x10g\xd1X\x1d#EqI\xb6Dc\xafMIT?ue\xd1f\xcbDUv]\xd7M\xea\x11\xc3\x99\x96'V4$\xacG\xcc*\xad8\xd1\xb4\xee\x108\xd9\xd3F\x1c\xd5,\xaa\xb2\xf6\x1f7\xb2\xf2\"\xebI=Kt\xcf\xf5\xb4\x0d\xc8\x10\xc0vw\x9f\xea\x9f\xfb\x8f\x9f\x0e\xeaE\xc2\xa2\xb6}\xdcj\xc4\xfb\xe7[\x8d\xcc;\xd9x\xad\xab]W\xba\xae\xbc\xc6\xbd\xabAW\x84f}1R\xab\xf5\xbb~O\x91\xa3\x96\x0b\x02>\x88TX\xc7j\xc5\xd5U\xb4l\xac^um^\xb5\xdf\xaf\x16Z\x93\x03\xe5!\xe0~\xb4\x1e\x87v\xa5\xbez'\xc1K\x90ti[\xdcR\xd5\x8f8\xcd\x98U-\xea\x9a\xc7KR\x83\xa9#\x19\xb0>\xd4\x1a\x83\x82\xd3L\xd4K\xf9\xe5\xda\x81T\xa8G\xf2\xb2j\x9bj\xa44\xbf\xddyN\x02\xf2\x82D\x85zf\xb0\xbd\xdd\xc4\x91\xc0\xd3p\xa5\x194$\xd1,8\x07a\x12\x9b\x89\x9f\xe7\xf2\xeeE\xfe\xb6\xb6\xad\x18\xac\xda\x0e\xf9\xb6Sh\xd9\xe7\x05\x00\xca0\x1b\xd4|\x02\x82\xce#\x00\x06\xdb\x7f\x9e\xa4\xf2\xbc\xe9\x89&\x957\xc2\xa7J\xb4\xd6\xd1[(QV\xd0J\x83\xe3#C\x0c\xb9\x08\x8e\x04\x1a\xd6\nv5\x12\xaf\x17\x94\x1aw8v[\xa0\xcaS\xd2\x0e\xb4`\xd9\xcb^\xb5\x01`\x12\xac\x99\x0fd\xd5\xab\x84\xaf:J\xac\x82\xeb j\xc9/\xceS;H\x06\x8a\xdf\x08+\x8dh\xe7f\xd6\xf1\x8fZG@\xee\xc3\xd6f\xca\xed\xdc2k4\x0c\xc1\x05E[~K\xf9B\xf7\xb8\x0d$\xc8n\xfa\x0e\x85\x81\x0b}6\x0f\"V\xa0\xa0\xe6\xce+A\x17,3\xb0\x15\xc4\\k\xc2s\x1b\xfc)\x98 %\x02[\x89\x97,\xf5\x92 \xce0^\x8fV\n\x19\xdaMMPA\xcaPAEP\xa5'\x85[\xe9\x17\xb4H\xea\x86C\xe2\x0d\xc9\x1cCD\xa0['\x0d-L\xcd:\xcf\xc6\x8e\x0bx\xd4\x0eG?\x023\xc4`g\xeb\xb5\xf0\x12\xb1h\x7f\x0cX\x1d\xb83hc,\xda\x88\x16\xc1e+\xe2S>\xb8\xf8\xb0}\x8a\x13\x1d\x1d\xd8\x17\x84\xb1G3\x97\xbb\xde\xc0\xc6\xe5\x14\x87\xdbR\x9e[K\xf2\x82\xf8\xc5\xb9\xb5\xbd\xbd\xec\xea\xb8 \x1b\xfc\xd9\x121+\xd0\x8fRN\x9e\xad\xc1a]\xa6\xfe\xcfE;\xe7\xb3\xf5\xb9\xd5o\xbd~\xc4WV`\x1f\xee\x0d\xc9\xbaC`\xd8O\xfc\x1a\x89\xb1_\x0f\xc9\xaaC\xf2e\xcaW7\x16\x83\xa1\xa9j\xa56%\xfeMp\x14\xd48\x12\xab\xde\x97\x12\xb7\xd7Y\xd8\xed\x81\xa2^\x1aL\xd1\xf8\x90\x04\xb8A\x9a\xd6\xdcn\x0e:\x084\x9a\xb3%\n\x18\x96\x08\xd9@\xc6\xbaeWD)\xaf\xbe\x0d\"\xf0fH\xd8\xb5\xc7b\xd8\xcf\xdc\xf3\xf2$a\xfes\"\x9a\x9f-\x19\x89x4Zi@\x9f\xad \x8b\xd6A\xc2#\xe0\xab\xc5\xa2\x06\xc9^\x1e\x86\x04\x82\x9a\x92\x15KS\xba`\x84F>\xa1\xbe\x0f\x11OhH\x96,\x8c\xe7yH\xaeh\x12\x05\xd1\"\x1dc\xda\xe2,L\x99eQ\x89>\n\xcehV\x1f\xa6s\xbb\xe0\xc3\x83\x9d\x86f\xbb\xd5\xa1\xc8\n\xbf<\x0f\xff#}\xb8\x18\xf6\x13\x1d\xeau3\xf3\xb6\xb7\x9b\x01\x1c\x88d\xfa\x07\xd2\xee\xe1\x808\xaf\xa35M\x02\x1ae\xe4\xa7\x80K\xe1\x15b\x00\xd1H\x91\xf2\xact<O\xc4!r\xc6?\xf0Xz\xa3Im\xeb\xb5\xcf\xf24\x89\xbb\xba\xefw\x1dq\xb9\xee\xb2I\x9a]\xee\xef\xd7\xbd\x9dH\xaf%\x8djd\xc4\xe5gu\x1e;U\xb5\xd4M=e\xc0\xe5\xbdF\xed\x9eJ\xaf\xd7#x\xd2\xd0\xed\xbc>\xd2\xec\xcc\x1f_\xf1\x1d\x828Hi\x02\xea\xd5\x87\x89\xd0\xa4#\xa8l\xd8A\x95\x13C}L\xbaE\x91\xf6\xd1!\\k\x83<\xb04\xaf\x9a\x0c\x86\x98\x8d\xff`Hr\xd1QO0d\xa0h,\xc5o\xa2\x7f\xdc\x8d\x86\xe4\xe9\x90\xa4\xd8\x01T\x1c>s\xe3;\xcf\xc9|4z> \x01\xa8\xfc\xcd\xe6\xe7-R\xa2\xeaR\xb3\x99\xdd\xa2\x0b\xcf\x1c\x8c\xde\xbe\xe5\x8a\x06\x8b\xae\x8d&C\xa2E\xbc0U\xe4\x90\xec\x80Nvy|F\xe4\x05I\xe0\x86R\xe9\xd2\xb9l\x16\x9dK.~\xf0\x1c\xa7b\xea1V{o\x99\xc6\x9a\x96;\xe6\xc9\xa3.{d\xac\xab\xa6\xec\x06\xd6\x11w\xb3AE\x90u?\xad\xdb{\xba\xffo\xd1\xbcF\x88t\xd9\xbcI#\x02\xbbB7O\xea\x88\x82vK\x07\xba\xfa\x89\x9e\xad\x89\xcb\xca \x8eA\xc3\xb7\x91\xbe(\xe2\xa84D\xac\xd3\xd9\xb9E\x9e\x91\x835\xd0\xc0u\x0c\x1b\x0c\xa0\x88sP\xe0\x83\x8b\x00*\xe5\x13L\x9c\xfc \xd1\x8e\xc6q\x9e.\xdd\x1c_\xbb]\x06\xb4\xdd\xbb\xae>\x06\xba\x7f\xf5^\x14Hr\xeb\xa0.]%\xd5\x9d\x1aDj^` 3\xd9\xfe\xba\xaa\x9e\xc6\x81\x9b-\x9f\x8e\x88\xdb\xdaM\x1321\x1c\xe2j+c\xb3\x83\xaay\x8f\x8c\xebdx\x95\x14i8\xd3\x05\xd4>R\x8f\x14\xb9B=\xacR\x0ff%N\x943\x81\xa0\x9c\x90\x03Q\xf5!I\xc6?\xe4\xf39K\xc8T\x99}\xdaX\xb3CB\xc74\x0c\xb9\xf7)J\xe9\x9c\x15\xf0\xd5A\xee\xbd\xbb \xa9;\xed\xd21\xca\x91\xc3`]h\xa4+e\xe4\x06\x04QL0\xdc\xc6\xb8\x11h\"\xb3+\x02z\xdez\xe1\xa3\xba\xe3\xc5\xc7=\x1e\xdf\xb8\xc9`h\xf52\xf7uP\n\xf2\xdc\xc9\xde\xa3A\xe1\xeek\xf3-\x80\x0c\x88q\xe64\x1bi\xf4\x1d\xd9\xe9\x99TP#\x07\xe4(I\xa8\xe8\xc5\xa08\x99\x9e\x0fH6\x8b\xce!0|t~\x1f;\xa2\x13\xdfO\xf6\xefr\x1c%\"\x13P\x9d)+\xbc\x9f\x96\xed=\xedt\xdcqO-\xab7+\xba\xff\xa3C\xa3M\xfb\xa6H\x14\xabQ\xdd\x05\x16\xc9\x8a4\x82\xd5B\x13\x03\xcf\xccv\xce\xe5\xa9\xa0\x8f '\x88|v\xedH\xcd\xe0d\x0co\xd0\x0e\xf85$\")\xce3\x95\x14\xe7YeSm8\x93\xbb\xbb8\x93\xb0\xff\xb4N\xae\xabS\xfb)\xee\xdap\xff\xe9\x1e\xca%\xec?\xad\x9f\xf2b\xd4\x9d\x99D\xb8\xdaQ\xc0\xb9\xd3d\x19\n\x98\x974cu\x00\xcf\x04xK\xe3z\xfe\xdc\xcc\x7f\x07\x8eD\xea \xb1 \xf2\x91-N\xae\x1b\xb5\xf8&\xc8)\xcb\xea\xf9\xcbJ>Lm\x1dd]\x01\x01\xe9_\x1dde\x82\x00\x86\x91GF\x1dnQ\x1b\x14\xfaS\xc0\xae\xea@7&\xd0\xab\x90\xd3lo\x17\xea\xac\x03^6\x00\x9f<B\x01/L\xc0\xd7Q\xb6\x8fB]\xd5\xa0&OP\xb0\x93\x1a\x98\xa5q\xd7&\xd8\xa7\xc0\xf6\xd1\xd3\x06\xd8qHW1\xf3Q\xe8\xe3:\xb4\xa5\x8d\x9f\xebpE#\xbbP\x88\xdd\xdb\xc6\x11\xecV\x03MTqDz\x15\x80\x94\x0c=\xc6!\xe0\xe9\n\x8fsZ\xa2N\xe4\xec\x85\x82i\xb3 \xa4\x87\xad\x15\n\xb4v\xe4n[k]\xb4\x96\x06\x8f\xf5\x185\x00eo,-\xba\xb4\xa4_X\xd2\xaf,\xe9'\x96\xf4kK\xfa\xa9%\xfd\xd8\x92\xfe\xb9\xb5\xefyk\xdf\xbd\xeeQ\xb7\x94\x9c[Z\xb3\xec\xae\xd1\xbe8\xe2\xd6\xc2MV\xa9(\xe8w\x7f\xd5Rr\xddZ\x92\xbav=\x0f\xf8\xb5\xd1\xc1\xd6c\xbf\xda\xc8\xc4\x0c\x9c\xd1\xb2\xf1%\xa0bi(.\x7f\xe3\\[\x93\x18\x1e\x8a\x127\x19{?\x9f\xa7,\xd3oo\xe4MyG\xaf0\xf2\xe6\xe1oW\x7f\xf9\xf3\xc3\xae.\xd9\xa8\x98f\x03\xd98\xe5y\xe2\x81\xfe\x0f\xbbf\x9e \xb7q\xcae\x1c\xd24{]\x90!\xc5\xdb\xf0\xf6\xa4mC\x04\xc9\x95yeb8F\xc0Y&\xc9\xb4\x1d\x12.u\x8d\xdf\xcf\x11V\xa9\xdf\xd8\xe8e^\xf8\x08p\x03E\x84\x81J\xd7\x1f\xff\x93\xd6^\xd8k\xddY{\xb4\xff\x14\x0b[(z\x8a\xbb\xf0\x9b\xec=\xe9\x1c\x01\xcbt\xa0N;*\xfd\x13\xecX }\xef\xff\xf1\x15\\E\xf3\xcd]Cw\xc8\xad*.9\x9a=,j\xc6\x0el\x9dI\x98\x8b\xdez\xa9\x8e\x16u\xb4\xbb\xb0M\xc0\xcf\xb6*\x83 \xbb5$\x1f\x94\xe7\xaf\xcd\xfe\xbc\xeaw\xc4\xa2\x08\xac\xd7!,,\x1c\xa4`\xeb\xcd\xea\xd4n\xed\x0e\x06\xe0Z\xd6F\xaf\xd8C\xe6\xa2\xb4H\x1c\xf7-\x8br\xbf\xce\xeb\x18\x82\x9b }K\xe3&\x07C!\xba)\x05\x8f\xe4x\xa3\xf3\xcd\x1a=i\x08\xb3d\xa3\x1bq4\x82\x06\x8bs\xcb\x0d\x05\xc1YA\xc8\x0b\xc1\x1a\x0c\x95\xd2\x0d7\xca~\xe3\xaa\xe6N\xe3}\xca\xb2\x7f\xdb\xf1\x06f\xef_=\xde\x96\xfb\xbb\xfd\xfd:\x0b\xae\xef\xef\xea,\xb8b\xcdw:Q\xb1](S\\\x82\xc1\xc5\x94\xba\xa7q\x19(\x13@1P\xb8S\xf1\xee\xd9\x8c\xba\x02\xf7\x0c\xce;\xba\xdc-\xc1\xb3\xd21\xb6\xab\"\xbc\xf1\x87\x84\xcd22\"\x93\xf3\x82J\xb8\xedlL\x1a\xa1\xb4\xd5\x11\xb8?\xb9\xcb\xf8\xea\xbb\xc1\x17dW)\xf5*9X6\x14\xb8t4\xb9\xfd\xc1\xb6\xbb\xfb\xb4\xb3evY\x9c8^\x95\x96\xc1\xf4\xf67j\xfb\xfb\xb7&\x04\x8a\xbb \xa9\xfc\xac\xc6\xe9P\x8e\xcfD`\x88Y\xd7:\xb3Ofc\xaf\xe8\xbd\xd55d\x84\xb9R\xa7\xc3\xa2\xcd\xb1VF(\x98\x9c\xd9\xbc\x0c\xae.X\x903\x07 g\x06\xfav0\x94WHn\x0e\x177 oN\xc9\x0b\x12\xa2\xc1g\xd6\xcaX$\x9b\xa5\x88\x16QD\xbe';\x80t]o\x00\x1eL\xbe'\x13\xb1\xd6\\oH\"\xb19\x8c\xce\x88\xe5\x97\x0f\x89'~Q\xd9\x82Y\xae\x9a|N\x0e\x88gc\xcf\x88\xc1\x02\xdfvVP\xae@LV=\x84\xbb\xf2\x13\x8d] J&\"H\x8fAs\xeb4N\x18\xf5\xe9e\x88]\xa8l\xb4\x1a\x81\xe0\xfc\xf2Eb\xf7/_\xc8\xd6\x96K\x8b+\"6\xa3\xe7]\xdb\xb4\x1b\xe7\xe1\xe2#-\x1b\x8a\n-\xeb\xe6\x02\x00\xcez\xa7\x95\xb3\xd6\xf1\x03l\x1c\xfd\xa4W\xe9!\x89f;\x98>\x01\xd4\xb1\xbbA\x1d\xe2\xef\xc4Z\xd3\xde\xc65\x89\xbf\xbb\xbd\xbc\xe7j+a1\xd6\xb7]\xa9\xfb\xb6\x1b\x90G\xf8R\x9d<\xc3tk\x04\x1b\xdbzH\x90\x9aL\xcd\xc9\xb8\x143;-\x91\x0c*^\xf5\x9aHH<}<\xfb)\x83\x07\xc1~\xe0\x00\xa6\xbb\xbf\x06@\xcd\"V\xb0i\x01\xbe\xf3\xf0\x18`\xdd\xbb\xc5\xb2O[93\xbd\x04,\xab\xa4{\xe3j\xd6h\x7f\xa76\xb2bYL\x9e4\x97\xc4K\x9a\xb1q\xc4\xaf6\xc5:\x9a\xdeA&0hj\xbf\xf5\xe9\xfbZ;\x02\xb5\xf9 \xc8\x01{\x8e\x88K\xc9\x08\xf5O+\x98L\x88\x86#\x0e\xa7\xef\xc9\x0e\xf6\x15\x0d\xb7\xbd\x9d\x91\xef\x0fHapnx\x8e\xdei\xaa\xd4}\x95\x1a\x82\x19\xae\xd7W\xdb\xb8\x9a\xcd,j\xbc'\x89\xe1\xe4\x11.\xe3hluEn?\xc3\xc9\xed\x06S\x9a\x93\x03T\x0d&\x85\xf4\x86\x16L\xd8}\x95Y-\xe0\x011\xde\x89G@ \xdb\xcd\xe0\xf0\x92\xb1\xbb\x80\xc6L\x95\xd6Os\xd8\xc5\x94\xa0\xf3[\xd5\x0c\xc9\x06$,\xf1\xb1\xe6|\x80D\xcafQ\x1d#[\xa8+o\xb3\xa9\xda\x7f\x86\xc7\x93\xd8\xdb\xe9\xbe\x1a\xb7R\xbc\x05\x08v\n\x13\xe3\xfb\x18iG\xf4\xbahU\xa1\x90\xfc\xaf$\xbf\xa2YPeL\xec\xbbR\x14\xd9\x85\"\xbb\xe7\x16\xc5\x10\xa2\xe7\x85\x1aW\xd6\xda\x9f;\xea\xe6Ip\xdan0\x1a\x81mu\xd1\x06\xa9Y\xcf]\xf3`\xcd\xe5U\xb4l\xfc\x0b\xb2g2\x06T\xdak\x81^c\xb1p\x05\x95A\xb6\xb7\x13\x08\x16h\xc3\x12\x9aP\x8ef\x89E\xf5\x1d\xcc\x95\x81\xdcNe4\x8f\xa6\x92\x92U\xb8V\x0bip\xeb\x83\xbeyp\xab\x95fa\xc2\xf7\xf6m\x11\xe5\xfap\x83\x81\xab\x83='bS\x92m\xe28\x1b6\xbd+\x12\xcb\xfe3\x1c\xcb\xed?{j \x1bWo+\xd8/\x03j\xf2xH\xaa\x8e\x8aB\x9a.e(\x882\x91\xe6\xd9\xb2\x9a\xb2\xe4i\xcd\xfd\x8f\x18\xa4&\x8cR\xb0\xae86Jku\xa5\x8c&^-\xed\x1f9Knj\x1f\xa0\xd9\xb2Y\x9dH\xad} asRs)T.\xb2l\x0c!P\xc9\x01\xb9\x1c\x92l\x9c\xb0\x94\x87\xebN\x97\xaejr\xc1\xc7\xdd\xd6\x04\xfc\xba\xe9\xa2\xa6\xaf\x9a\xafF\x95r\x1f\xf5\xac\x98\x91C\xb4\xf2b3V<\xac\xc3g\xe6<Y\xd1v\x93D>\x0eRIl*y\x16H}.\xad\xd7D\x15\xdf\xf9\x01D\xe0\x96_\x81\x18\xcb\xa6\x1f\x0f\x99\xac\xafZ\xaa\x0d\xfb\x94\x88%\x15TW.\x85\xd0\xc1\xee\x8c\x8e~\xdf\x19=\x1bo\x8f\xce\xb7\xa7\x83\x87A\xf3\x98}8\x9d\xed\x8c\x9e\x9d\xff\xe5\xcf\x0f\x9bG\xed\xc3\xbf\xbb\xbf=\xfc\xed\xe1\xa1{\xb8\xf5\xdb\xc3\xc1\xec\xef\xbf\x1d\xfe\x96\x9e\xffe\xe0\xfev8\xfb;\xfc:\xac\x97\x02\xb3\x04\xe7\x0fgH\x9c\xaf\xe2\xcf\x17\xf1\xe7\xb7\xdf\xc4\xdf\xbf\x8b?\xff\xe5\x9ck\x03\xa1\x99\xf3B\xa4|\xef\x0c\xc9w\xcew\x90\x07q\x80E\x81\x04\xfeF\xf07s\xce\x07\xcd\xd3{\xe6|WV\x15\xd6\x00\xe6\x00\xf0\x1f\xa2\xf8C\xf1\xe7P\xfcy.\xfe\xfc\xaf\xb2\x90W+\x14C\xa1\x12\xfe\x7f95s\n\x1fFd\xb6-\x87\xf4h\xf4\xb7\x8b\xd1\xf9\x1f;\xc3'{_\xeb\xa3\xb0T\x83\x8f\x80\x0e\xdc\xf1_\x06u\xf85ja\xf8\xdftM\xa5!\x1b\xce\x958\x06\x80\xd3\xe0(j\xd6{\xabo\xff\x89\x05\xfa \x88\xcb\x84V.r,\x86\x89s[\x99\x05\x8f\x976\x83\xc8y`\xe3\xdf\x1ch\x84\xd3\x92\x99Zs\xe7-%Uk\xacEE\x83:\x87\xedF\x9d%\xfb\xe8Yri\x93q\xfc\xff\xec\xbd\xeb~\xdbF\x928\xfa}\x9e\xa2\x84\xec8@\x08R\xa4\xe4+mZ\xeb\xc8\xcaF3\x89\xedc\xd93\xbb\x87V\xf4\x87\xc8&\x89\x18\x048\x00\xa8K\xc6\xdeg9\xcfr\x9e\xec\xff\xeb\xaa\xeeF\x03\xe8\x06@\xdb\xc9dv\x07\x1fl\x11\xe8{\xd7\xbd\xab\xab\xe8\xfa:\x17<\x06a\xa6\\\x8d\xc9\xbc\xa2S\x95\xa6\xe4\xb5\xd2\x1b/4R\xa7\x94(\xb7\x1a@\xdde\x0e\xc7\xa1Q)I\xe9\xdb\xec3\xe2\x12\xbaF,-)\x05^\x05i\xb0f9K\xe1\xebm\x1a}M\x19\x05.\x19\x04\"gU-\x81\x80\xc9Q=,<\x01_.\\\xe7\xc81(s[\x94Q\x8b\x14g\\h\xd3\xea|\xe5xp\xc4\xe9\x02\x8c9a\xa8\xd7\x8f(S\xc6&\n\xf3\x9a\x97z4\x1d\x9e\xc3\x04\xff+\xaeV\xbd{\xb7\xbfD\xf2d\x18\xf0%\xa6\xfb\x99@4\xf89 \xe3Z{|\xf5x\x91\xcbA\x9e\x86k\xd7\xf3a\x0fS\x8d\xcb\xb4\xc54\n>\xe6\x06\xf3\x17\xef\xe7\x02&\x90\x91#\xc3\xa5Ew\xbd(\x07\xf0\x16\xcc\xff\xb2\xcc\xf9/\xeb\x02\xc3\x05J\xc1\x17\\\xf8>\x92\x81\xd0\xa4\xd4\xc1\xdfV\xa4\x8e\x1c\x8e\xe0V\x80\x9bV\x18\xc3\x96\xe6\xa9;\xf2T\x10n\xe3\x07(\xa2\xad\xc9N\x1c\xa7\xd2\xc5\xdf?\x8a82e\\\xac-\xfe5\xd7\xd6\xcd\x8b\x82\x91\xffl\x8by\x02\x13py\xe5\xeb\xe9\xf0\xdc\x1b\xe4\xc9\x0f\xc95K\x8f\x83\xcc\xe8>^\x15\x08O|\xa0-\x15\x13\xbb\xaey\x1f@m\xb4x\x19\x81\xab\xa6\x18\xc1\xf0r\xb0\xc6H\xea\xfb?q\x96=\xfd\xe9\xdf\xdf\xed\x9f\xf7\xfe]\xfc\xbfo\xbc\xef\xca\x87\x8dn\x83\xfb\xfb\x0e\xc2\x8e\xea~\xe8\xc3\x81a\xd4{7\xd4\xdd\x9d;\xb0\x9e^\xe3\x8dZ\xb74\xec\x03\xaf&\xd5V#\x91\xd6\xe7\xb0\x87m\xf1-,\x9a\xdf[N\xaf\xcd\x97t\x95&}\xe6\xc3\xb1\x8f\x9e\x87\xfd\x91\x8f\xde\x82\xc3\xc7\xf0\x0c\x9e\xc0F]\x85zfNP\xc6\x1f\x81\xec\xeeK\x1c\xbeD\xf4\xcd\xf4\xd9\xb9\x88/\xdc'tz\xcf\x87\xf4\x12\x9e\xc0{z\xcd\xfb{iP\xaa\xb8^J-\x1e\x13)\xa1\xcaGpY8\xffpJ\xf2\xef\x98\xa9\xbb\xf6\xd2\x87\xf7\xa2\xdf3ZO\xbcw0\xf4\xe1\xd8S\x90\x81\xaf\x8e1\xa1}YM\x98\xb3Y2go_\x9f\xaa E\xee\x99\xe7\xc9\xb5\xb1(\xbd\xda\x82-\xba,\x18_\xf2\x97\x8f\x8bi\x96\x17n\xf1y\x0bG\x15d\xb1K \xfce\xddG[\x95\xf7\x95Uy\xef)\x12\x94f\xec\xfb$\xcb]\xaf\xae\x14\x95\x7f\x7f\xf8\x00\x8e%\xb3\xd6+<\xd7&\x9c(U\x12\x8e\xe7\xce\xb9\xe9[\xe9\x974'\xf4adP\xd5\x11\xec_\x99\xef\x81+\x00\x7fS\x1d\xb2\xa0\xec\xfb\xef\x06\xfb\x9e\x0f?r\x82\x83\xbb\xe8\xc3\x1b\xb9b\xb4\xa1?6\xee$\x88Y\x9e\xc2\x04\xdeL\x9f\xb5\\\xa2?Et<\x15\xd4e\xdezq^\x0d\xffgA\x85_\xd0\x10_\xc3\x04N\x15\xa0\xbd\x80'\xf0\xfa1\xbc\xe0\xa3<\x1d\xccVAz\x9c\xcc\xd9\xb3\xdc}\xe1\xc1S\x18\x1d<\x80#\xf8\x19z\x13pn8\xcf\xc5?O\xa7/\x1a\xc6\nrY\x7f\xee<T\x10\x0b\xf1\x9c/D\x01\\\xcf,\xc6\xde\xea\xf3\x83V\xed\x19\xa1e\xa7zoq%h\x90+\x8b\xd3Q\xb9<G\x8c\xe7t\x85\xec\xedtt\xee\xf9\xf0\xc3`\x1bg\xabp\x91\xbbo\xa7\x07\xe7\x1e\xbe\x11\x10\xc7\x0b\xa3\xa7\xfa>\x97\x8b~ \x19\xc2\x198\x1e\xf4\xe0\xd2\x80\x15\xcf\x8b\x12\xedc\xb9LY\xf0\xbe\xb1T\xdd\xbc\xd4\xfc\xa5\xfe\xd6\x88GO\xe1\xe0\xde=\x99\xeeA\x1b\xbd\xe3H\xc9\xc0\x86\xe8eV\xec\xc3+-vvQ%\x1d\xe4\xc9\xb3\xb3\xe3\xd3\xd3\xf2\x17\xd3\x05b\x0e2\x7f\x93\xbd\xa0\x15\xe6\x08\x9c1\n\xa1\xea\xcd\x98\x83\xbeq\xbe\xdfu%D:\xe9\xfb\x0ez\xf07]\xe8\xeai\x8d\xf0))\x01\xc8\xba\nRb\xf2\xcd\xeb\xdb\x07\xce\xbb9\xccp\xea~)\x08\x9d\x06H\x97^+\x1f\xbf\x9a\x9e\x9c[.E\n:\xc5i\xd6\xac\xe06\xad\xa4\x8a/\xf5/\xbc\x8e\x95L\xf1\x8e\x05//\xb8\xd1/\x8d\xa8\xcf\x1b\xfd\x96\x8b\xd8q\x8dm\xfe\xd2\x80\x02\xdf\"\xc9\xff\x05\x97\x05\xabg\xb3`\xc3x_\x8a\x17!y\xfe\xc5#\x84\xfa\xd6L\xde\xeb\xf0^\x97A\xffR\xe2\xad\\\x92/\x18\xef_\xb4\xbd&\xcb\x9e\x92\xbe\xfeR\xe1\x8aC\x1f\xfeR\x05`\xde\xfc\xf7\xe5\xe6\x8f\xaa\x88\xaf\xad\xe9\xf7u\xf1]u\xf7\xbdW\x11\xb1\x8b/RH)\xc6*\xcb\x94\xa4||\xe9\xd5G\xfd\xfd\x8eb\xfdeQR\xd3A8\xb1[NO\x10\x90\xcb\xb8\xa1\x82w\xab\xd2\xa6\xfa\\9\xabj62\xbb\x18\x0d\xc8\x04e\x05e\xd0\xea\xd8\x04\x8d\xbf\xaa\x88\xb54\xc1&R t\xaf\xbfA\x0f\xfe\xda\x80\x89\xba\xba&\xf43\xfc[\x1a\x16+JP%^p\xdd\xc8i:eU\xd4\x05\x05P\xc3\xa0\x992~\xe2?\x06Lc\x9e\xa7\xc5\x199|\xb6\x1f\xfa\x9c\x88\x92 \x7f\x02\\N\xae\x03\xae\x8aM\xac4'\xec\xbbNhc\xf3&\xd4\x0b\xa6Z\xcc\xe2\x95\xadPh *\x1b @\x96\x87YP\xed#2<H\xb6\x80\xef\xaa\xac\x8a\xaf\x92,%\x05\xe72yVX:F\x13D\xb9\xfa\x18\xa5\xd4^\xe5m\x8f\xcb\xa7\x9e~J@\xdd\xf0e-\xb3)\xaf\x8c\xc1ec\x92\x86\xa1\xfcK)\xbca\xf1I\x97:\x02\xc4o\xb2\xcc\x84\x8b\xdb\x12\x8e\xd77s[\x87}\xf4\x0er\x8e\xf8\x18\x03\x13X)\x1fE^lL\xac*\x97D\xa7?\x12\x89a\xc4D\xab\xaa(\xe7\xfa\x94ou9\xcd\xcf\xb1\xec\x9e\xb4\xf8\x1c\xd16\xa0\"\xdc\x13^e\x0eo\x01\x0d+\x92+\xc6(\xa8>\xcb\xdd!\xf5\x14+\xe6\x18#\xc1*\x9c\xd1\xb0.\x86\xe0p\xberD\xc0\xc7r]\x0ex\xfc[\x0f\x8f\xad\xb6r\xe2\x18\xa8\xabR\x94/\x14-\xca\x16ij\x0fB>Ht7/phz\xf4\xd5y)ZOSLQ#B\x96\x89\x8a\xc7\xe5E\xec{\xab:q\xber|p\xfexp\xe8\xe0\xd7\xd4FEL\x87<\x96\x83\x18\xdc\xa2\xf2\xe1\x8b~.\xe3)\xba\xd5\xd2\x97\xe1\xf4\xc7du\xac\x18\x1d\xcd6\x91\xdcl\x16\x85\xe24K\x1b\xa1O\xd4\xb0\x81\"\x97\xe2\xb7`\xbb\x14\xc2\xa5\x8aQ\x9e\x8f\x14e\xf8\x18\x02x\xa2\"\x84>\x86\xc0\x9ef\x1d\xfdO\xa6\x81\xc9\x83q\xba=\x17\x086\xdd\x9e7\x8c\x8eB\x93\nQ\x02\xbd&V>\x97\xaa\xc9\x96\xc89H\x11\x0cH\x1d\xf5i\xdc$\xae\xcb\x0eL\xe1\x1c\x85\x82\x90\xd4\xba\xd1\x9c\x93\xd5\xc3\xac\xa2Uu\xf8\x18\"x\x02E\xd6\xf9\xa8Y\\\x9c\xc1\x04\xb2id\x11\x17\x1d9\x16B\xb5\x19\xe1\xf1tF\xd1\x08f\x06\xf1\xd5z\\\xbe\x9c\xc6jf\xe2:zI\xc0\x88\xcb\xd2E\xacNN\xeb2\x86ya[6\xadXW@g_\xf5\x8bHU\xd3\xa2\xa3\xb4\xbe\x9c\x16u\xcem+Z\n\x96T\xdd\x9e\x0dm\xcf\xa6dB\xda\xb4\x1b\x1e0\x04\xf1t\xd3\xa0\xcc\xc7\xd39\xed\xc8\xdc\x12K\xcc\xf8\xb6\x11L;l,\xa1\x82f\x95-\x16\xc8\xe7\xb8\xc09\xf8\x87\x0f\xb0./\\i?\x99\xfaQ\x9f\\CD\xb7R@D\x97U\xc4\x16O\x9a\xf4\xf7\xb9\"\xb0\xd2X\xee\x9e\xcb\xa4\x8a\xb8\x1a\x90=\xc0\xabEx\x92O1\x83\xa2\x162*V\xd2E]V\xd6\xaf=$\x07\x1c\xa8VB+\\)\xe3\x03~]\xe9\xfe\xf8\xf5\xcf\xa5\xf5Y c\xc3\xbe!\xdf\xbbmC\x94\xf0\xcf\xc4\x9f\xbcM)\xff3\xfa\xcb\x17\xd8G4LL\x93+\x0b\xb14\x922\xfc\xc3\xd7\xb1tR\x999\x13\xeat,}+\x18\xfeQ\x9a\xc2\x87\x0f\x107H\xff @\xfc\xaa\x8c\xe8\x16\xc1R>x\x04\xd8\xa2\x03\xf0G\xd1\x90+\xe8\xc1m\x87\x05T\x18\xa1y\x99\xe8\x02\x91\xa2\xd4\x9f@\x83\xe4IU\x99\xce9\xe2(\xa1x[H3\xf5\x05\xb8(\xed\x173\xb6\xc4:\xb5t\x0d\x13\xb8\xe0\x8d\\\xd2\x16a\x9bD\x17E\xedz\x9d\x13\x98\xc0u\xfd\xf5MmR\xdad\nL\xe4\xfdL\x0d\x11\x17\xcf8\n\xafJ\xb4\xa0<\x90z\x1b\x1a\xb9\x06:\xfc\xd0X\x8bA9?\x13\x1c\xa5\x84\xa7\x1a\xdc\x92sN\xb1\x08\xae\xe0\xe77\x1c\x81\x8f\xe8\xbf\x89\xfc>\x86\x1b\x85\xb0\xf4\xca\xf34t\xe2\x0d\x97YM\x99@P_\xac\xdc5\xabu\xbd\xa2\xaeW\xd45\x93]\x17\xb4\x82\xa9\xae\x15q\xc2\x0c\x7f>n\xedu\xad-D\x135+^\xef\xc23\x13\x01)\xca\x90R\xa6\xba\x8e\x15\xb6[ B\xa9.\xbe<\xd2\x7f\x8c\xb5\xba>t%T\x1c\xbc*WY\x903\xf0\x8d]\xa9\x13[<\nso\xe8*\x8b\x0f7\x83M\xb2\xe1\x18\xc9\xdf\xdcH\x17\x96\x95\xd7\xb5[K\x7fx\x08\xffb\x1bE/\xd3\xb71Et\x9e\xbb\xb2\x19\xa3|\x8c\xe0\xe7\x95\x17M\xad\xfa\x8d\xe4A>\xb8\xaf\xb8\xd2\xbc\xe7\x16@H\x7f\x15\n\xed\xbf;\x1eyD\x17\xdf\x04b\xfc\xbb#\x8e\x92\x14\xf1~U4\xac:+\x0d\xe1U\xc1\xfd\x1a\x88`\x87\x85\xf2A.\x89[`=\x8eF{/\xe9?\xdf\"E\x93\xb5\xf2p\xa4\x13\x901g\xa2\xa8\xb1\xc9\x11\x1c\x15\x83\xc1\x8f\x9f*\x02\xee\xdd(xQ\x93\xdcT\xbd\xf6J\xbd\x8a\xb1\n\xad\xb5\x18D!\x9dJ\xd2\xd1*\xe9+\x99\xe5\x98v\x1e\x8dw\xfd\x91\x87^\xb0\xefiA\n\xca.\xff\xba)\x0c\xfaB_w\x06\x84e\xc7\x88q\x03\xf9\xcb\xd3\x10\xf0X\x9c\xef\xfa\xf0\x12\xfb\x92\xb2\xe6Kx\x8a\x12\xe8\xcb~\xdf\x03\xd9\x0e\x1e\xc0\xdeL_\x9e{\x9c\xd4!L\xcd\x98\xfbR\xdc\x7f+:\xe0J\x7f\xf9\xb3O\xa6\xe81<\xc3\x81\xd5>\xf6\xfb\x06Z\xbcG\xe7\xd5'\x16\xc3\xf7c^\xed1<\xf34*\xcb\xc7Pi\x89\xb2\x10\xead\x9a\xaf\x95<n\xdc/\xdek\xb6\x01\\\xcd\x92\xa8\xf5\x1e4k\xc5M!jUL$7t\x94\xe4\x98Ll\xaf|<w\xdci$\xe5V\x0c\xccI\xe1\xec\x1b8\xa2\x13\x9b\x9b\xe2n\xa2\"\x1ath\xf2\x8f\xa3\x1cf\x1fM\xf2\xe9(\x0b\x15\x05\xda\xf1\xad\x7fC\xafJ;\xa1\xcd\xaf\x84\x92\xda\xa6\xc0\xb8D2\n\xd4\xd30\xd1\xfb\xc7\x91\xa3\x92\xd8L\xd3\x97\x02\xf4g\x0b\x93\x15\x13\x8e:\xb4\xeflwF\xce]C\xb8\x1c\x8dU\"0K\xc5,K\xa4F\xd8\x0c10a\xce\xc5\x06(\x0c\xff$\xbf\xe4\x9ak\x11\x99v\x98\xe6\x14\xa3\x1d\x97\xc9K\xa9T\xcct\xfe\xb6kX\xd8\xd2}\x94\xd44\xff\xe41\xec\x7f\xb3'\x1c'\xf7\xf7\xd7\xf9*\x1b\\\xb2\xfd\xcd6\xbe\x9d%s\x06W\xa3\xc1\xe1\xe0\x00.o\xe1\xdf\xd7A\xbe\n\x83\x0c\xbe\xd9/\xd3\x99b\x04\xa1\x89\xbd7F\x07-\x82\x83\xfa\xcd\xe1?\x8b\xe8\x9f\xe6c\x0f4\x9c\xd7\x1b@\x83iZ\xaf\x12\x0c\x96Qr\x19\x90e\x8322\x0c\xae\xc3x\x9e\\\xebo2\x16-\xcc\xddm}\xb4.\x1d\x8c\xee>\xb8\xfb\xf0\xf0\xfe\xdd\x07fM\x8ck\xfc\x87\xf7\xcd\xdff\x18f\xdc\xf8\x89\x83\xf9\x81\xa5\xda\x867\xf9\xd0\xfcm\x0e\x13xP\xbd\x13'\x1f\x8ez\x0f\x0e\xcc\xdf\xb8n9:\xb0\xb4\x8a\x91\xf1\xfa\x16]s\x89~\xc97q\xbf\xbfo.\xc0\x05\xa1\xfd\xe9O\xefn\x0e\x86\xfdw7\x0fN\xce-\xe5.\xb1\xdc\xbb\x9b\x83\x93w\xdb\xc3\xe1\xf0\xe0\xdd\xf6\xbb\xef\x86'\xfc\xdf\xfb\xa3\xf3\xfd\xa5\xb9\xd2\x855\x8f\n\x7f\x92+\x96.\xa2\xe4z\x0c\xceK\xf5'Em\x8c\x19\x9bgp\x1d\xceY\na\x9c\xb3%K3\xc8\x13\xd8\xa4\xc9\x8ceY\x83b\xed\xc4I\xde\xbf\x0c\xb2p\xe6\x8c\xc19\x8d\"\xb6\x0c\"\xd1*\x17\x1dn\x1e\x0e\xc1\x8d\x93\x1c\x02\xc0R\x80h\xb4I\xc28\xf7\x9a\x9a\x0d\xe3\xab \n\xe7}l \x9b\xa6\x17\xd4\xb49\xf1\x9d!\x9d\n\x08\xc55\x82>\xcc\xcc\x9f\xb9\x8e\xfac\x90\xaf\x06\x8b(\xb1\xe5\xae\xe4:\x01\x19\xb5\x07\x8b4Y\x1f\x0bo\x1a\xcd\x9dX>\xca\xad\xf8\xcc|<\x00*\xc6\xfe\xeb ^\n/\xdc\x8b)3\xdaE\xed\xad\x1f[o\xd4A\xd5\x1e\xaeB\x85\xa2I|z\xfe\x18b\x0c\xc4\x9eR\x84X\n]n1hI?\xe5\x9d\xc6\xf6\xbeql\xc5\xb0\n\x89\xc2\x0e\x07\xa9\xe1\x00P}\x93\x02y!\xef\x82<\xf8\x89\xb98\xd5\x03\xf4\xfbC\xceON=)\xf4\xe0\xd8\xa5\x13Su\xe6r\xe9s\xc9\xd6S6@\xca \xeb\x15N;;\xcd\xfe\x99}\xdf\xd5\xb6P\xac\x06\xda\x0e\x1f\xaf:\x0d}\xe1D-\x05\xef\x84\xae\xa9\xb9\xa4jk\xee[I\xaf\xe7y\x1c\xb5\xee\xdd;xt\x9f8\xc7\x93 \xdc\xbb\x7f8z\x84R\x0b\xaf\x08G\xfc\xc5\xc1\x10\xe3\xa2\xdc\xbf{ot\x00\xe24\xad\xde\x96G\x01\xce\xb8\xbc\xea\xba\xa3\xe1\xc1!\xdc\xe1\xbb\xf7\xe4 \x8c\x86(\xc5\x88w1\xffq\xff\xde\xbd\xc3\xfb(X\x89*9\x17\xa0\xb8r0\x06\xf5\xe6\x0b\xc2\xd2K\xfbj\x8a\xf6\x10\x13\x9a\x8f\xe4\xe4#O\x9el\x00\x05\xfa\xbd\xa1\xa78\xd7{\xa0\x0e<o8\xdc\xf4'r \x9e>}\n\xa3!\xdc\x01\\\x9e\x0f\xb4\x1dB\xa0\xa1\xb5\xff\x00b\xe5\x18\x1d*\xf2&\x0c!\xcd\x01\xcf\x02\x05\xb4\xed\x08l\xaf\x1aQM\xcd\xa5\x07\x07\x07\xd0\x83\x07\xf7\xe0\x1bp\x19<\x81\x83\xfb\x1e\xf4\xc1u\x87\x18\xcd\x0c7\xfb\xden=\xbf\xb1\xdd<\x90\xcf\x95\xb8\xfd`I\x89\x82\xb8\x80\x98 Gp\xe22\xd8\x879\x06\x95\x03\xbe\xae\xc2G\x81\xde\xe7\xdec\xdc\x8fk\xf8\x06\x16\xf8\xf91G\xe4 D\x1e\xae6\x95\xban\x06\xbb\x13\x97\xe3\xbe{\x8d~3\xf0\x0d\xf0*._\x99\x8d\xb7\xdb\xc4\x7f\xb4\xc3\x98\x86\xdaz\xce\x18L\x075\xf7a\xe9\xc3-9\xe2\x98\x8c\x9a\xf2\xb9\xd0I\xb6\xb5\xd4\xb5\xf9\x16\xbe|8\xbf\xba\xb2\x7f>\xae\x1b\xc8\xe4\x83\xfb\"(\x85\xeeA\xbd\xf6<xB\x11[\xf0\xeb\xd0\xf3\xc5\xf6B\nO \xc6\xab\xb5^\x99\xbc\xa4H\xa7F\x07\x0fy\xad3W\x13\x15<\x1f.\x89ZT*X6\x11G\x85WB1l\xcc\x11\xc4|\x1fa\xcc\xbb\xe7\x04\xef\xc2z\xa1W\xd5\x0e\xd1\x14\x8d\x82\xf1\xc8\xc7c\xdd\x88\xd7}:\x81\x0b1\xbc\xb2\xc8\xe1\xf9\xe0\xba\\\xbato\xcd$\xb8\x0fw\x1f\x02'\x92p\x04\xb7\xd0\xe7(6\xc6?\xee\xdfC\x0c\x13\xaf\xef\xdf\x13\xaf\x1f=\xd0_?z\x00c\x0e\xc0O'\x94\x93e\x03O\xe1\xc4u3\xe8\xc3\xb5\x07\xfb\x10\x90\x9a}\xe6:Rls\xd0P\xdb\x9b\xc0\x06\xbe\xe1p\xb5\xe7n\xe0 \xa5\x04\xdbr\x0ep\x8cI\x95\xc7\xb0\xe5m\x1eC\x0f\x16p\x04\x0b|\xd1\x87c\xcf{\x0c[\x814\x01\xf6\x95q\x0cX\n\xd9hn\xec.\x80o&\xb0\xb4\x13K\x0eGo\xdck\xe8sP\xcf5\xbfr\xbe;>f\x82\x82\xd0\xf3\xe1\xc4\xbdF<\x86\xa7\xc0'xc\xe8\xea\x86\xf0\x9d\xca\xf1\x89\xfe\x11\xb3\x03_J\x0b\xd1u\xaf\x87\xa1\xa7n\xba\xfa\xfcA\x81\xfb/\xdd\xcb\xddp\xfc\xf4sq\xdc\x87\x0b\x9fC\x9b\xb8>QMr!\x1f\x04\xccK\xe9\xc3\xf5\x0c]\xb6\xa4\xb0\x96#\n\xa3\xa8$\x84\x83U\xc9{\xe1\x92c\\\xe0\x11tN\x83s\x8e\x9e\x02\xd5\xde\x13j\xdd\xb85\xaf\xa0R\xc7)\x06{\x99\xc0{\xd5g\xa2\xd5^{\x84\xd9\x97\xed\xa8\xc5\x91)k\x19\xdcS\x91\x81\xfc\x16\x9e\x88,\xe6\xbc\xd6m\x837\xa8h\xba\x0fy\x81\x1a1G\x0d\xf7\x02c\x82pBn\x02\xda\x98C\x12U\xe4\x84\xfe\x82\x96rk\x1a\x9f\xb5o\x10\xa6\xc7\xd2\xea\xe2\xf8{\xbd\x18\xa1\xb8\xde\xef-P\xda3\xfbb\xc9\x07g\xc6IK\xec\xa3\x8e\x1a=\x96\xc8\xcc\xd1q\xce\x919\x14\xc8<\xe7\x0b\x17j\xc8<\xc70(\xdec\x98\x0bd\xe68\xb8\x81>\x87<\xa9\xe8,\xfd\x02\x04^\xb9K.\xf3\xc2\x1f98\x0e=O8\x15\x9c\xb8\xc7\x0d<S\x7f\xb4\x966\xb2\x85\x10\xf1>F(O\xf9\xb4\x13OAj\xafW\x97\xf0\xf4\xe7c\xaf\x17\xf3R\xf5\x84S\xd0\x86\xc7\xef\x9b\x84\xa4\xea\x9b\xadU\x17\xbebi\x16&\xf1\x18\x1c4\xe6X\xb4\xd0\xed,;0\xe5\xb2\x96\x0f] \x1a\xc33;\x9b%\x1f\xb01\xbc4O\xd5b\xb4\x10\xed\xfeh\xfe,\xdb<5\x7f\x16.\xf6\xe3\x8e\x12\xb1\\\xd8\xee2\xb4V\xebv\x90\xb3,\xa7\x98|\xceM\xdc\xef;\xd0#\xd2iJ\x99-\x9f\x8f\x16\x02n\x9b\xcf\xdb8\xa4\x19w\x1b\xdfg\xcdh\xa9\xcd\xe8GW\xe6\xa6\xb9[\xb9k\xf8i\xf3\xab\x83\xac\x0fZ\xbeD\x94n\xac\xa6Y\xf9\x88qn\xeb\x8d\x15\xc1nP,g\x14\x02\xd3\xd5c}$\x15\xffC\xdd\xe3\xcf\x90\xe6\x86\xffy8\xb2d\xbb\xe9\x14\xdfC\xef\xbc<\x1f\xe9\"\xd8\xb6\xabb\xbe\xa6\x0c%\xe5\xb9\xf8\x95\xe6\xc9\x91\xaak\xf3\x16K\xab\x88\xf58i\xeb\xec\xc56\x8a:v%\"\x85vjR;1\xde\xad\xf5\x1dC\x89u\xda\xcb|@\x84 \x0d\xf8\xf2\x16z\xec>|\xf4\x88+\xb7\x03\"Kd\xdd\x97\xde\xc9@q\xaa\xba%\xf3.\xf7\xaa^+\x91,m\x8a5\xd2\x12\x99J%\xb1\xa9e\xf0\x81\x96\xb0\x87>\xd4l\xf8x\x84\x81G\x89w\x1cbzxC\xd8\x99\x18\xf2\x8a\x07\x86L\x90\xa19M1zC\x0c\x853D\xe5\xc89\xa8\xb7\x8cqE\xde\xf5\xf6+\xc29\xd3\x0ckU;\x8ct\x01\x1d\xb1\xc3\xca\x888\xac;1\xe6\xa3\xd1q \x1c\xac\x83\x9b?\xb3[\x14v0\x85\xa9zch:\xd2\xcdW\xa5\xaf\x99\x0c\xf5\x19I\xc9 \x13PV\x1bQ\xd61J\xa4\n3\x8c,\n\xbd\x9e1\x833zLJ\xa9{\xe5\xa3\xc9\x9eMg\xc5\xfd\xff-\xfaQ\x0fm\xc6\xc55\x17\xaf\xd5\x81\xa7)5\xc6\x1a\xed\xd7p\x04\xee\x02\xcb\x16gTk!D\xa9wk!\x8c\x8eEY\xfa\x8c\xc7\x94s\xf3\xed\xe1\x85\xe7\x83\xe5b\xf1\x86k\xd6n\xe0\xc3\xdc\xa3\xb0\xd3\xd39\x1e\xb4\xf3\xffI\x16[a\x1cTr\xe0\x9c\xf2\xff}X\x9d\x17\xafV\x16\xec\x87\x02a\x82\x02\x0f\x8a\x89\xe3\xf9\x97\xcc'6\x083\xfc\x9f\x83e\xab\x8by9Q\x90\xb8\xba[CJ\x19&\xb2\x1ecgw\x02\xa1\x8f9m\xf4IWYld\xf8\n\x030atO\x89\x94\xcdA>\xebpB\x95/)gTKm.)\xe5\xe9\x96a\x94\x8bE\x10e\xcc`\x8a\xa4\x06\x05>6\xe7B\xc9\xbe\x0b\xe30g$\xb1\xd0\xc1s\xbd\xbd9[\x04\xdb(ol\xc9q,@\xf3\xd1\xcc\xce\xeb\x84\xb2\x16sX\xb4l\xa7\x97\xbe\xc6\x0dA\xdef\"\x91\xc8\xb3\x1c\x7f\x1eA\xe8\x06(\x9b\xa8\x01\x046\xea\xc0I\xa4\xe1\x16F\xea\x06x\xb5\xc2\x90wW\x8c8qI\xe3\xe3\x9d\xf1\xbf\xba\x08\x92R0\x83\x9e\xb9Of\xb22\n\xa3/\x86\xc2\xb2\xd7\xe4c\xa9\xde\x1c)U<2W\xdc\xd24\x1bF\x84\xf0\xf2\xfb\xa2\x04\xe6`o&\xd6O\x0e\xfa\xeb`\xa3\xe5\x92\\\x07\x9b\x1a\xdb+\x9d\x85M\xcfKV\xcb\xe2\xb8%\xed\xf5<\x99\x035w\xd94\xe5\x05-\xfe*\xd5d\xa8\xa0q{\xcd\x81\xbfy\xbd\xae,\xf9O\xcba,\x99\xd7Y\xb6\xa1 \x97\xbfR\x1a\xd4\xda\xea\xef5\xeb*fb-\x9fn!0\xe5#\xc6\xee\x96\x82.\xe5\x82\xde\xc5\xec\x1ar\xb7\x80(\x97S\x8e\xcb0\x0e\xd2[\xc7\xf3\x8a\xd7\xcee\x90\xb1\xfbw[-\x07V\xa5\xe8\xde]O$M\xed$\xce^iY)\xcdA\xdd\x0f, \xcf\x0f\x87\xe6\x84\xe7\xf7;\x05\xf47\x1c\xc8(\xde3\x01\"\x9d1\x14\x19\x0bb\x91\xb1 uC7\xf6\xd0\xc2\xaa\xc4O_$ \xc6P\xacB\x17\x8e\xd1\xbeV\xb8\xe6 un\x81*}@\x9f6p\xc9 \x84\xbe\x8c\xd7o\x14\xc7`\xf0\x84\xe6\x81\xf0\xe0)\xad\x1a\xaf.j\xa5\x9eN\x14\xd4\x90\x13\xf4n\xc8p\xa5%\xfe5E\x84\x1f\xd57\xf3n\xdb\x86YfL\xb9\x16\xe0\x03\x84m2\x92\xde\xc0^C\xc3\x16\xed\nt2\x9b\x9bQ\xd0\xaa\xaf\xc8\x95-.\xfb\xf9\xb0?\xfd\x89\x02\xf2\xbd\xeb\x7f\xf5o\x7f\xbc\xf3\xf57\xbd\xc1\xbb\x9f.\xfe\xcf\x87\xff>\xdf\x0f\xa5m\xc5\x12\x88L\xfaw\xccVA\x1a\xccrtD\x81\x15\x0b\xe6,\x85E\xc8\xa29\xc4\xc1\x9a\x99\"h(\xf2_\xb2\xd2\x94\xd1\xda2\xe7\x8ef\x87\xb6iW\xf5msg\xa9\xb93\xc9 \xcc\xd4/f7\xba\x19\xc3F$Ak\x88I\x7fK\xbbqWL\xd0\xde\x16\x7f\xe6I\xcc\xc6\xba\x8d\xca\xe0\x10\xa8?\"6\xbb\xd9\xb0\x0b5Rk\x7fkH'%\x06\xbc\x1a\x849\x85\x88\xa7s\xf9)%/\xa5\xb7y\x92\x9e\xef`D\xab\x8f\x13\xe3\x97u\xda\xca\xc4\xbc\x95\xe8\x9f\xb8\x0e6\xa8\xf6\xfb\xe50\x81\x89\x0c>z\x12\xccV\xed\x81\xb1Us\xc1f\xc3\xe29%\xbb\xa9\x8f\x98n`\xa3G\xb5.\xab \x85\xc0\xd0]\x97\xbe\x18:\x98\xb3\xe9\xc8\xe4\x94T\xf4\x88{ \xc4\x93%\xcb5\xa1\xe4E\xb0f\x99\xcb\xbcz\xff\x9d\xe7:\xcd\x1b:\xef\xb4G\xa1\x9d\x9e\xb1\xc1e2\xbf}\x9b\xb1\xb9\x12\x1e_\xa5\xc9:\xcc\xd8 exC\xbaB\x9c\x9eE)\x0b\xe6\xb7\xc0\xffuL\x87jE\x8b\x18\x90\xad\xd3\x00\x83f[\x1e\xbb\x96\x83j\x0f\x02\x0e8\x84$\x8e\x92`\xde\x05\x05\xf8\xc3\xc5\xa6\x94e\xdb(\xb7Y\xe4\xb1I\xc6W\xa0k\x9b\xb1\xcb\x06X\xa1\xb3\x11\xbc\xdb^n\x9bI'_\xab\xef\xc2\x88\xbdFva\xa6R1\xca?&\xe7$I\x0f\x06|w\x9feZ\xb2c\x12\x97:\x8d0k\x826\x94\x9dj9\xef\xabn\xfdP\x99Q\x91b\xd8-\xa5\xe9l\x98A\xc6\x08t\xf5\xaa\x18\x82B\xa4j\xec4\x95\xa8)K\x05\xe2\xa9\x0e\xeb2\xdc\xd1E\x18\x87\xf9\xb7\xc9\xfc\xb6\x93P\xcf\xd7\x85\xaa\xf1\xb6N\xe3\x10\x19\x97\x91\xc6\xe9UL\x07\x01\x1e\x14\x0d\xbda7\xd8\x90\x9d\xf3i\x17\xc1.\xa3\x04\xc3\xda|\x1b%\x97\x9a~\x15f\xaf\xe4\xdf/\x17B^\x91\xed\xf3\xa2\x9d\xdb_$\xe9\xfay\x90\xa3\xf3\xf4w\xe2\xef\x8e\xfd\xc8\xe2\x9d\xfb\xa2\xcb\x05\x18\xcc\x15-\xaco_\xffp\xa6\xbd\xea\xd8\xad\\>M\x9d\xea\xd4{P\xa0\x0c\xe0\xf5d\xb9\xb4\xebJ\x07\x1an\xc1\x84\xe3\x8cL'\xeaC\x0d\x1a8\x1c\xf3\xf5v\xa7\xc6\xfa6\x97Uh\xbe\x07.\x1f\xbcXT\x1e\xf9\x87\x0f\xb0\xa7u\xd0\xb0f\x80WH+\xb2\xac`\x15\xdb8\xdbn\xb8\xa8\xcf\xe6\xf0\xad\x9c\x0d\xaf\xd9\x16\xfc\xada\x95\xecH!s\x94T\xb7\xd0\xe6\xe2H7(\x90Lf\x9ci\xbb\xce,\x89s\x16\xe7}\x1a\"\x1e\x1a\x9a\xb0LE\xc6\x11u\xb3Z]\x1f\x9c\x9c\xdd\xe4\xfb\x9b(\x08\xe3\xc7\\\x8c\xcfX>y\xfb\xe6\xbb\xfeCG\x05\x97-\xb0H\x86\x8cRo\x06\xbc\x95.\xdd\x18\xaayx\xd1\xf5\xd3\x91@\x8d\xa6qz\xc1f\x13\x85\xb3\x80S\xb6\xfd\x9b\xfe\xf5\xf5u\x9f\xa3x\x7f\x9bFda\x9bWgm\x94`\n\xec \nxI4\xa5\x95\xbf\xca\xeb9!\x8521\xef/\xf2\x1b[@j\xbdPy\x11\x0db\x90\xc8\x04P.\xd6\xa5=\x0dz\xad\xcd\xb6\xe2v\xa7\x9e$\x954`\xe1,\xd9r\x8d1\xc9QdS\xe4\x17x5\x082\xe0\x8bnC\xc8\x1d\xc6\xcc\xb1\xadj\x9d\x85BP-\x91\x97\x0e[\xac\xf3\xd8\x1a%8\x92;\xcfq\xd4\xbeO\xa5\xe5\x17X\xc7g\xebz\x83|\xc5bwk2D\x8b\xe1\xe6D<Z\xc7\xf9\x9b\x80b\xbb\x10\x01;\x8a\x80\xf2\xb1\x8b\x82\xf2\xa9\x88\x84|\x9b\x0d\xb2\xa0|>\xfeZh\xd2m \x8ak\x05\x06\xc1Q\xda\xfb\xd85i\x88n^\x98\xf74Kx^\xb1\x84OQ\x956\\yq\xf3i#\xeb\x95\xda\x8b\xddU\x0b*+\xa6/D\xa7\x95\xfb\x0c\xb4\xe7\x00\xbe#\xda\x97\x91\xddB\xd1uQ\x8fj,\n \xae\x15\x9dt\xb4\xe7#\x94\xa8\xbah@\xd5\x9f\xb3$\xfe\x9c\xb6\xfft\xf6\xf2\x05\xf9qX\xa9W\xe9\xbdMY\x98Y-\x18\xf2\xcc\xc5U'\x80\x7f\xff\xe8\xa1\xeaP_\x7f\xa4\x15\xba\xb5\xc4x\xe6\x0f\x06\xf5\xddhK,\xab\xeb\x0d\x92\xd06%\xb7\x85m*S\xed\xccR6gq\x1e\x06QFn\xdf\xc5o\xaeF \xf9\x00\x8a\x00\xb7\xe2\x05\xa1X\xe22\xf9FE\xfe[\xb3|\x95\xcc\xb11\xfaS\xbe'\x87\x19\x86\x7f\xf8t*\xaa\x1cx4I\x18\xef\x1cC\xe9\x9d_\xb57\x18\xf6P\x13\x0ci\x96\xca`i^~\xc3\xec\xf3\xd2o\x19\x98\xb3\xf2\xceI\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedfc\xcf\x04\x00\x05\x1a\xdc*\x8f\x0ftF\xef\x8f\xb8\xbcit\xe7\xfb\xe8\xe6r0r\xe2\xc5O\xe7?N\xde\xa8\xe8\x87k\xe9\xf8\x84\x7f\xa8\xc2\xe2\x87\x96\xc5)e\x0b\x96\xa6( \xd0[\x17\xdb)BRj\x1d|\x7f\xf2\xecy\xed\x0b]\xc7\xb7\xc0<\xaa\xdex\xd12\x8a\x92k6G\xb6\xf0\x1f'o I\x81\xb7\x06)\xfb\xdb\x96eyfB\x08\"rR\x83w\xe3nV\x99E\x07\xab\x8c \x83MV{L\xb1!/\xdf\xddq\x0cV\xc3F3B\xabxP\xbam8i\xbam\xc8\x9f\x94.\xdd\x93\x05]\xcb&\xd2\xc3l\"\xd0V\x1d\x0f\xf7\x04\xf3\x9b8\xc6\x06\xec\xcc3\x97\x16P\x83[\x10\xd7\x91\x0d\xaf\x13\x83\xf4 \x16S[W\xeb\xf6\xa6}_\x93\x86\x0d\x951\xf4\xd3\xa3w\xf1\xfe.\xbbY\xdb\xacq\xdb\xd5\xd0b\xa3\x08\x8a\xec\xe2C\xed\xb6\xbf\xfeH\x7f\x07\xb9qc\xa7\xb9A\xd0\xf7*\xf5\xab\x9e\xb5\xf2\xf9\x9c=\x98[\xf9*q\x84\\O\xb8B\xaa\xf3\x04\x1c\xe1\xea#\x95\xe4,\x0f\xf2-'\xb7\x0e\xfd\xe5`jLN\xf3\xe4\xa71\x1c\x0c\x87\xa2t\xf2^\xc5\x8b\xa5\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\xe8\x95\xb49\x14\xbfj\x1da\x9118/\xff,\xc7f\xe7\x05\xbe\xce\xb5r\xfc_\x84\x9a\xab\x90\xa9j@\xd5\xd2/4\xf0\xb0\xc1\x82\xe5\xe68rW\"\x16\xa0\x19*tS\xc2\x18\x9c\x8a%\x01\xa7g\x08w\xc6\x1fy@5\x06\x87\x0e\xa7\xa80\xfaX\xcac*|E_\xcd\x8dp\x85m\x0cN\xa1\xd0h\x8dp\x0d\xa3\xf8\xd9*\x00\xf2'Oo[\xcca\xda\xa1\x03o\xdf7eO\x96\xcfG\x98\x05\xe8R\xd7\xd5\xad~odo\xcb\x8c8\xb6l\xc0R\xaa\xe6k#\xfel\xda\x0bM\xfd\x1e\x83\xa3)\x1aT\xa9\x8e\x9ef\xd1\xa8d&\xf4\x10r\xae0\x95\x9dtv:\x95\xfa\xd6\xb9\xe3\x17.P\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83\xe5z\xea\xba\x93\\\x06\xba\xeb\xc6\x9d;\xc07\xe9/!\xbbn0\xbf\x99\x81\xc0<\x88\xa5\xf4K\x13V\xda0\xe3\x8d7;[\xe9\x8f>\xb4\xc2\x01\xb8\xd5E\x8d\xc4E\xf3@\xebP\x93h-\x11\x9b\xa8\xf8\xbbX\xd9\x11\xa3\x90\x0cB;\x8f\xdd\xd4\xc2\x82$\xcb\"\xf10\xd8L\x99\xe5\x8e\xa1V@$wO\xa0\x07\x8e\x8f\x81\xb1al\xba\x8f\xef\x97\xc6?g\x11\xcbY\xa7\xad\x17EU\x97|\"\x86\xbc\xda\xe5\xf6\x97,\xef\xd4\xb8\xda8\xb9@\xc4F\x82\x8c\x0e\xbb\xf5y\x8e\xcb\xa9R-\x1d\xaf\x82\x9d\x1c\xd0d\x07\x15\x07<77;w\x96\xfb\xca*\x93l\x80\x80\xf2\xea hk_\x08Ym\xb9Y\xe5SI\x96-z\xf4\xacs$\xe7B\xa6\xfc\xe1\xd4\x18\xe3s\xbaqT;\x957\x8c\x11\x9d\";\x98,\xa4u\xd1vkV\xdf\x8f\xba\x83A\xc3 9\xe0)\xb9p\x904\xa32\xfa\xde\x9bM\"\xfaT\xd0\xd5\xe57\x98L\x87\x99\xd8N\xef;\xce\x84\xc5y\x1a\xfe\x16S\xe9\xb6/S\x0eL\x06\xcf\x0fh\x99R\xc51H\x9b\xa1\xc9E\xc8\xb0\x00\x96\xb3\xf8[\xe4\xf3\xcfO~8ys\xc2\xf9%W\xd8}\xa1\x9e\xfb\xe0\xbc|\xf5\xe6\xf4\xe5\x8b3\xfe\xe7\xab\x97g\xf8\xe9\xd5\xdb7\x8ea\x81fZ\x97\xb3(\x89Y\x97\x15\xd7\xa4\xb2\x19ZP\xfc\x86\x15\xbcL\xe6\xb7\xfa)\xdbi\x1cZ\xee\xd8\x1aWP\xa4\xcb\xd7\xc6\xe9\xa9\x97\xf3\xd2\xcb\xf9gNe^9\xf9o\x9a\x14i\x0fc]\xdb\xb0k\x84\x85\xaa1\xae\xaa'\xf6JB\xeb\x18K5D\xd3M\x1a\x94\xcfm\x1a\x8d\x95\x9a\xb2\xc3*\xcf\x07\x9d\xfdi$\xba\xd1\x92\x91\xc5\xa8}\xa1\x1a\x82\x82\xe8\xcb\xe3X\"h5\x9b\xcf\x98R4q\x16N\xd5\xf3\x11\xcc\xd2\xd0\x95\x88c==\x1c\x8e|8\x1c\x1e\xf0\x7f\x0e\xf9?\x0f\xf8?\x0f\x0d\xe82\x1f\xa4l\x1e\xa6\x1d\xd2\x8d\xcb'\\\xa8\xfc.\x97\x9a\x95O\xb7\x96i\x11\xb7\x94\xbb\xa9Pjg\xc9\xdcz@_\x02\xdd\xae\xfb\xd0\x05\xe2\x9a\x95\xa7(\xa1\xa3\xe6\xc6\xcb\xc6;\x80\x1e\x1b|\xafT\xee\x84\xff|M\x06A\x98\xc0\x8c~f\x9b$\xc6{\x9ds\xfe\x1b5\xe7\xae\xab\xaf\xadQ\xcdi-n\x10v@\xb7\xbe \x99\xc3^\x9aml\xa1(\xfc\x9f?\xfe\xf0}\x9eo\xc4<\xec\xa6\x9apG\xcf8\xd0\xb0\xaf\xb9\x14h;\x1e\xb6\xd2\xa7r\x0dB\xc4\xb0\x13\x91\x92\x8f\x02\x9d\x8d\x1br\xc1\xf9Y\x14\xc9m\x13\x9b\xeb\x8a\xa8\xbev\x97\x110#\xa9\xfe0a|qR\xd1\xf8\xdb\xd7?\xa0\xca\x1c\xc2\x11\x84\x03\xed-\x8c\x81\x95\xfdI\xfe\xb3/\xf6\xa3\xcf+\xb5\xf8\xbcH\x93\xa2\xea\xc8\xd0\x0b\xe6\xe9\x97?\xf8257\x19\xbb\x82\xc7\xe0%x;\xe6\xf8\x08\x16\x9d\xa9\xb1|\xd2\xaak\xe8\x0b\x96_'\xe9{i^\x87E\x10Fln\xf2\xfd\x90\x8f\xe8:\x0f\xd7,\xd9v:o\x97\xcf\x17\xeb|\xc3b7Q\xc7Q \x9d\x7fa\xaa\x1d'\x8cg\xd1v\xce\xe8\xf0!)\x9d\xf6p\xc9*\x1c\\\x87\xf9\xea\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|\xb8$\xc9+\xc5sWsoO\xb4C\xb7#:\x8a\x1b\xeb/mR\xa9\x99\xd8\"\xf9\x1cl\x92\xe8v\x11F\x91\xc9+X\xfd\xe5:[y\xd1_\xbfk\x90\xb1h\x01G\xf4\xdfXS\xb1>\xeb\xa2l\xec>\x1a\x9a\xae\xaf\xf0\xf7\x0f\xcd\x17\x92\x1e>\xb2\xdc<*\xef\n\x85!\xe6\x84\xb0\xdc\n\x1e2\x8f!)\xbfUQ\x02\xc6\xb5\x9c\xf7\x9f9\xbf\xc3\x87\xd5y$j\x1e\xf5\xf9\xd5!\xeb2\x0df\xef\x19\x9fHg\xd3\x00f\x84\x9b\x9e\xd7e*\x83\x0d+\x8c\xe7\xe1\x8c\x95Zo\xe7\xab\xd4\x01f\x96\xa3\xe4s]zJ\xd9\x86\x05\xad10@\xeb\xa5\xdej\x19d\xeb\xf7\xd2\x9e\x079+Y\xcdN\xcf^\x92\xe1\xac\\\xd6\x1c\x8dg\xce\xa2p\xcd\x15\xb31\xde\x0e\xae}\x97\xc1n\xf6\x0cR-}K\xc7\x90\x8a\xe0\x13\xb6\"\x7fA]\xfde\x1c\xdd\x8e\x8d9\x063\x96\x86A\x14\xfe\xc2\xf8\\vX\xad\xa0v{U>\x86\xbd\xc8\xde\x87\x9b\x17\xdb(\xca,c@p\xe6\x05\xbe\x0f\xe2y\x84\x91Q*V\xf3J\xa3\xba\xc6\x0eL\x04~Q\xf1\xc82\x1f\"\x9f\x8buE\x88\x04\xd3l\xa4%\xdb\xc0R\xd1\xdbZv\xa0{\x82F\x1eV\x89\xb8Xwe\xba !\xdd\x82\xaft\x7f\x0e\xbe\xb6Tq\xe36\xd6RW\xc2\xaf\x9a\x04\xfdP\xb9LQ\x06\xb4\x15\xa7\x93|D[\x01\x0c\xe8\xfbf\xb8\xe2\xcd\x9f+\xf4\x8fm\x81u\xb0{\x9c_\xa1\x84U\x8f\x97A\xefe \x80\xea\x87t\x10f\xe2V\xc1\x95\xa7\x0d\xff\x08\xa6s\x17#\xc4\xc3\xb8:\x07\x8f#\xfb\x84\xa3\xfd\xdc\xcd\xdc\xab\xd2\xa7s\x18\xf3\x9a\xb1^F\xb8x\\y\x9eA\xa5\xe2\x9b\xbd\xf6\xd1~n\xb2\xe0\xe0\x96\x15\xcc\xf0J\x0d\xd1\x10\xff\x8f\x97-\xdf7\x8a<\x0f\x8f\x07\"\xcb\xd6\xdaU\xdc\xdbJ\xda3\x13t\x808|\x98\xc1\x11\xdc\x0e\xb2$\xcd\xdd\x19\xdf\xe0. \x9a\x94\xa9\xf3\x92\xbc\xdd.\xe1 \xac\x95\xb7[\xafw\xd9\xa4\x7f_\xc0\x04\xd6\xd3K\x8b\xc1\x0b\xdd\xbd\n\x80\x9d^`&\x07wY\xbd9\xef^yp\x04K\x99S\x86\xb9\xbc\xa8\x0f FP\xf3Z\xd0\x96\xcf\xb3V5\x86\x1e\xb8\\8p\x06|\xe7/T\x9e\xd2\x0b\x95\x9b\xb4\xb9Q\x03\xd1\xaa\xbd\x91\xfb_&CfQ\xa0\x91\x99\xa9s\xfd:\xe1\x0b\x80n\xe5\xa6\x83 \xcb\xc2e\xec\xfe\xfd#606\xc6\xcdQ\x01\x99\x02\x89\x07x\x8aS\xdc\xf7-\xbd\xd7\xc8W!T\x05\x05\x810\xba\xd1\x9c\x88\xfa\xab\x00\x03\xa0_2\x08\xd4\xe4j9E\xaeD\xdc\x1b\x0do\x82\x81bjp\x04[\xed\xd7X\xffV_\x89\x19\n\xc4u\xe2\x11\x0c\xea\xcc\x01\x8e\xcc\xaf\xc7\xb05\xbc\xae\xf7\xb5\xb0\xf7%\xf9\x14u\xa1~a\xcb\xf2W\xbd\xc1\x8d\xb5A\x11\x18\xea\xa8\xf8s\xac\xa8X\xbd\x1d\xae\xa2\x1b\xb9N\xb1\xb1G\xda\xdfES\x86\x05]\xd9\xdb\xca(\xa5\xbc\xf8\x83N\x8b\xea\x0d\\\x15;K\xb0\x85\x9eU\xcf\x93\x1cy\x8e\xf6\xb3^u\xdd\xd0\xb7.n\xd0 Jop\xa5\xf57\xf5\xd6\x97-\xab]H<\xdaji/\x8be+^\xd6\x91\xad\x04\xd4$\xdc{\xea/4\xa2\x0bo\x93r\xd5\"\xf3U\xa7\xc8\x15\x89h0gi\xe6\x17\x1dY\xb0\xf3m\xfc>N\xaec\xa1k@\xb2A\xf1g\x93&W\xe1\x9c\xcd\x8d\xf8)\xc2\xb1\xe2\x80\x8b\xae\xa6\xb2\xa7\ni\xb7l\xda\"\x8c\x08\xa1\xd1\xa1\x95s\x12\xf9\xces1/\\\xfd\x06\xae*\x80\xba/&o\xd7\xab\xd5\x07z\xedc*\x82*oF!D\xc6\xc2)\xe8\x98\xee.:\xe1\xfd\x0bj]\xbd\xf8s\x8d\x9d\xa2\xff\xc2w\xb4h\xc2\xc0R~9\xe6\x8a?*&\xa8\xba\x07X@\xbc\xe1lF}\x1csE\x9f\xeb\x15\x8e^\xa7>\x9b\x1b\x98@8\xbd\xaeL\x06\x83\xc8\xb8U\x96\x1f{\x18\x0d\xeb\xce\x1d\xc9\xdc\xabw\x1c\x15\x0f?#\x1e~\x06O\xe0V\xe3\xe1g6\xe1\xf6\x18&p;=3\xf0\xefE\x89w\xc7\xd3c\xe2\xdd|\x07N$\xb7\xcd\\\xfe\x1e\xa3\xf8\xde(\x0e\nG0\x97$\x83C\xd6\xca\x87+\x9f\x0bV\x17>,\xab\x8c\xf5cm]\xdec\x07\xe8f\x16\x19\xcc\x9c\xcf\xd0P \x90.\x98\xcf\xff\x9f-Ko_\xa5l\x11\xde\xf0m8r\x0c1\x9e\xc4\xce\xbf/\xf2 \x0c\xe1\x08\x9eA\x0f\xdeW\"\xfc\xe0_\xbf\x8az\xdd\x82\xeb]\xf4nEN\xcd*\x12~Vn#\xb6B\x1c\xa4\x7f\xe0,v\x0c\x07\x06\xa5\x91\x1c(Qi\xa4?ME\x9au\xd29\xdb\xe4\xab1\xdc30\xc1 \x0d\xd6,g\xa9\x18\xc0\x88\x1d\x1a\nEA\x18\xd3j}1]0\xe8\x10L\x05\xda\xbce\xd5\x0ekl\xeeH\xcb\x92\xb1\xffn\xe0N\x7f\x1aL\xcf{\x1e:\xb2N\xffmt\x8e\xf7\xfa,\xbeW 6z\xdf}7\x9d\xfe4}w~\xfe\xcd\xb9gK\\\x03b\x16\xe5\xc2\x94h*m:\x86\xe3\xd4\x0d\xc5Gq\xa5\xda'\xb2\xc5n0!\x85\xbdb\xd6p\x8e\xcd\x97\xa9\x16\xcd\xacZ`/\x1e\xe8[ \x98/\x0c9Z\x15\x1504\x1a\xa5\xab\xae\xc0\xb0$\xdav\x83vF\xa7\xe2\x86;[`=\xfdQ\xc4R\xe4\xf6VB\xb3\x1b`\x08G\xb1\xa88\xa6\x08\x9e@<@\x90n\x0c\xf3\xcdg\x1cA\x0fC\xe7\xef2\xf3`::\x17[3\xf2\xa1/\x02v\x7f\xc6J\x04\xc6\xa0\x14`]\x0ci\xab\xe1\xdd\x8a&HQ\x92\x10\xa3\xc0E\xe8M\xd6\x01tA\xb0Ry\xb9\x0d\x1c\xa9r\xca\xf2\xa2%7\x1b\x89\xe4\x03\xc3\xc7\xd0\xef'm\x8d\x81@\xd0\x90\xa2\x98\xb3i\xd2\x90\xda[>(9LE\x0c\xb6\xc0Cl\xc44\x08\xd3sO\xb28\x9b{\x99\xfet\xb8M-\x1f\xb4\x18\x97\xc1\xe3H\xf2\x86Y\xca\x82\x9c\xa1\x0eg\xd2\xefl\xcf\x95\x08\xe5\xc7\xb7\x8d\xd8b\x91\x9f\x91+y\xe7\x95\xd7\x81\xb6\xc6\x1e\xc9\xd7\x1a\xfcq-\xcc\xbe\xc7\xd5\x87S 4_\x9f\xc6\xb9\xbb\xf5ad\n\xd9`z\xf6\xc2\xecE\xf0\xc2\xcdp\x88\x01b\x1f\x06\xbd\x17\x06\x9a\xcc\xc31\xe3\xab\x8c\xc2\x8c\x8a\x1c\xc8i\xc6P|\xcc\xe8\xd3\x13\xa4\xc7\x8a\xa9\xc1\x91\xda\xc0iv\x8eQ\xf0\xc7\x10N\xb7\xf8g\xeb\xc0\xcc\x18\xa2?\x1cT\xc3\xc6R\xcdm\x08l\xb3\x0f\xe5\xa3\x9b \xec\xa9\x15\xa9\x98\x9a?\xc3\xcc\xf0 \xf6\x84X\x88\x03U{B\xe9\xbd\xd1\x9e\xa0JX4\x96\xe7l\x07{\x02\x8ei\x10.\xe3$e\xba\xe4\xa7dB\xc3G\x1f\x87 \x8d\x0c\x13S\xacl\xbd\x80\xb0D\xbef\xcb\x93\x9b\x8d\xab}\xf10I\xa5n\xae\x085s\x85\xe4\x12\xbc\x83\xba\xe5S~<R\x7fQ\xed\x0de\xb3\xd4\x00\xd8R\xbd\x04\xe2\xa5\x9f\xbc\xa1\xe2\xa7_A\x92 \xec\x8d\xc4Fi\xaf}m\xdf,zxQ\xe0H\xfb\x9bFM\xf6\x84\x92 d\xd6\xb7\xcb\xa2\x92\xfe\x0bG\xad\xcc\x03U\x92hk\xadB7+/x\x9b\xfa\x0b5\xc2\x82\x8d6\x8fS+wdx\xa7\xc6\\\xbc\x13\xcb\xadI\xb5\xb6\x0d\xac\x94:\xaa\xbf\xc2\xe1\x97^a\xa2\xd3\xba\x11\xcb6\x07\xa3\x19\xcc\xf8\x9a\xbc*jf0\x95l\xbc\xa4:\xe3/\xcd\xd6\xc1\xf4L\xcf\x9f\xc2\xc8\x14\xe3\xdf\x9a\xb1\x91\xc1Q\xfb\xd9_)j)\xa7a(E\x18HCID\xff\xe9\xdd\xd1\xbe\x8f\xc9g\xb9XN\xc6\xd5\xda\x06N&0\x82}\xd4\x11\xc5\xb4\xc7\xb5R\x94 )\x95\x91\xc4uB\x10x\x94\xebs\xf8\x98\xf3'\xd8jjx\xd6\xa4[\x08\x1b4L`;\xcd\x1a\xf2_m8\x99/2\x11\x9f7^\xd8\x9b\xc3\x04\x84\xd3\x17W\xcc\xb5z\x13\\\x84\x0d\xf4\xb8\xa4\xd5\x07*3\xe7\x0c\x94n\x15 4w\x17~\x81\xf3\x9e\x8fV\xd8\xdc\x02j\xe4\x10@\xab[m\xa5\xd0?\xe6\x9e\xa9\xc5j\xc19F\x0c\xd7K\xa2\x1b\x04\x8a\xd1\xb1\x0f\x11R\xe3i\x84\x11\xbe\xcf\xa5\xb0\xc6_(\xc9\x0d\x0f@D\x91Y\x0b7\x05\xcdC\xab\xccfE\xe4X\x04\x97l\x17\xe1\xcdG\xf5B\xb7\xe2l\xc5de\xe8v\x0d0\xec\x11\xdca\x02\xd1tf\x01\x87\x0d\xc6iX\xf8\xb0\x9d.\xce\xf98\xeb\xc2W\x86`\xbaf\xe9\x92q\xd1bS\x13-\x8c\xe1\xcf\xd3\xc1,Yo\x82Y\xeej^\xeb\xed\x116uID^?2V\xaa\xa8\x07\xb1{\xf8H\x97\x1c\x0bc\xca\xc1\xe1\xd0\xec\xab\xf0\xa8\x1a\x046T\xef\x8bv\xf0\nbt\xfbr\xc3R\xf4\x14D\xf5\xae\xfc\xca\x97\x85^\x05\xe4\xcd\x17j?\xd5\xc7\xd7l\xbe\x9d!\xb3\x0cK/x\x81%\xcb\xd1J\xfc\xed\xed\xab$\x8csQ\xaa\xf6\x96\x17E\x8f\xca\x00\xef\x8a\x84\xea\x87\xf6!I\xf5/IZ^\x91@\xad\x88>\xc3?eI\x8c\x83=\x11\x9eZ\xc1\xa0\xf8\xe9#f\xb1\xcd\xb1\xf0B\x0e\x06\x17\xea'f\xa5\xc8f\xc1\x86\xbd\n\xf2\x95\xba0\x8b\xa5\x0c\xefy\xf1ml\xab`\xfcR\x1e\xfe\xd6\x90\xd7\xaf\xd5\xad^\xc0c\xbb\xcf\x01]\xd0\xbc\xccXzE\x1e\x9c\xd3syk\xf3\xf2g\xa8f\xfc\x80\xba<]\xbdQ\x17\xed<\xb4\xb6@\x95\x9cv]\x06\xb3\xf7\x14\xc8\xad4`\x98\x98\xa2mV\x07h\x8a\xfd=\xab/I)\x8b*\xe5\x9cJ1-\xb9\xa471<\x81\xf41\xc4\xbd^]\xcb@\xdb\xce4>\xa7e\xc3H\x0bd[\xb7N\x0d\x19VlQ\xb7/S\x16\xbco\x99\xd9\xc2\xcd\xe9\xbe\x88\xaf:\xe3\x7fm8\x14s\x11\x0b\xd3D\xa8\xdfR{E\xabJ\x81\xaaz\x1b\xa2\xa4\xe1\x08\x81R\xc8\x8a\xefF#q\xa8\x1b\x891\x94\xad,.`\x8a\x15\xfb\xa8n\xfc\xf0_n\x88\x89\xbf4jY\xdf\xac\x85\xab\xb2\x01\xd4,\x1a\x18b\x82\x92\xe9\x98\x96\xda(\xa4\xe7\x83<\xf9\xd3\xd9\xcb\x17@9X'\xea\x85k\n\x14\xa3\xe0\"D\x9epAK\xfdg\xce\x9ar\x8f\x84\xa1\xf2[\xe6\x91\x98\xb37\"\xde\x17\x94\xac3\x99\xb0\xced\xfd~\xa3X\x83\xe6\x18\xe4T\xd3\xec\xbc\xc1\xa2\xb8\x97\xd6.\x8e\xf9\xb0\xf1*\xd2g>\xdd\x9cWt\xd0\x08Mf$\xc0\x94\x8f\x98rO\xc5\xac\xb7\x9bg\x92\x0d\x1e\xd9\xac\x93+\xd6\x90o{\x13\xe4\xab1\xdd\x0c\xdc'\xf3\x98\x81\xe0\xb9\x1b\xfb\xc5\x1c\\HK\xae\xd7\x16\x03\xd2\x95\xc8\xf9\xc2\xe7n7\xaf\x18\xf2ADP$i\xa2\x1f\x86B3\xbd\xd0\x8c\x0b\x89.\x89\xa2\x1cJ[\xe7\xcb\x85\x1d2\x11`;\xee\xde\xd0o_r(\x96\x1d\x05\xf3\x86u\x87\x1d\xd6\xbe\xb9\x15\x11}9\xd5X\xa0;kr\x81\xedjF5\xfbEm9\xe0*j\xb2W`\x8f\xb9YDNMm\x08\x15\xb5\xcez\xbd&\xeb'\x07\x8e\x0d\x9e%f\x0d\xc0Q\xc3-f\xc3-\xae\xfau\xde\xbf`>\xff\x87\xed\x1d\x1fm\xd3\xf6u\xd8=\xcd\xc5X\xfd\xc5\xa5\x1c\xc1\x96\xdb\xeciZQ=+\x02\x97\x94:\xb6\x80\n,\x99\xbe\x9bE\x9cR\x08\xb3!\xf1\xf5\x82\xa1\xe7\x94`871tPL=\xd7\x98\xba\xd2\xe1\xf9\xeb\xf2\x9a\xd4\x02 \xf1\xda\x898\xdao\x95vJz\xb9\x90<X!\x98u\x92Ad\xa7Z=.\x91\x14\xf2\xd3\x04\xf3\x88\xaa;W\xa5R\xf2GeR\x89\xb0r\xba\xf2\"\x8d`o\x04\xea \xe7\xdd\x85\x8f@l\xb0:\n3CBb\x06\xf1\xca\x02\x18\xf1\xba\xb5i=b]\xecC\x8bNL\xc1@8\xc5\xad\xe3\xabd\xcf\x8d\x92\xa7|f\xd6[\xbafl\xea\x14k\x8d?\xb3\x88\x05\xe9\x1b\xba~\xe1\xd2\x88=m\xe8\x19\xcb\xe5\xc7\xd02\x80\xfa\xcc\xcc.\xfc\xd7a<O\xae\x91s\xd0\x9f\x83`>?\xb9bq\xfeC\x98\xe5,F\xfb\xa3\xed\x93\xeb\xac\x93m\xc6\xb6\x1b\x87\xac.\xd6b\xef\xd9m{!lk\x9e\\\xc7m\x05\xdf\xb3\xdb.\xc5f\xab ^2,\x85\x807Of\xdb5\x8b\xf3\x81\xfc\xe3$b\xf8;\xc8\xf3`\xb6\xc2\xda\xae\x93\xc4\xe59u\xad\xa5O\xb1k\x9d\xea\x8c\xbb\xd6+/@\xd7Z\xfazt0A\xc4\x15\xb9;\x16\xaa\x01iO\xb1\x99J\x9b\x80z\x86y[\x8c m\x84\xddV\x12\xa7\n~!R'\x1f\x03\xc9+\xf4\xc3\x12\xc9C\x9e\xadw%r\x80\xc7>\x8c,\x08\xc9 _\x87\xaehH\x02\xb1\x0d\x13\x0d_-\xc8h,i\xc0G{\x8bu\\\xb3\xb5\xa9J6\xe3\xdb\x9c}\n\xbeUju\xc27SO]0\xa7\xdeW1\xb5\n\xeap\x8eT\xc0\x01\x85n`\xd7@I\x99\xbcRD\xd6\x8fd\xad\x8aYJ&\xa8\x19\xff\x8dv\xbe\xb4\x9b\xa0bp \x91F\x90B\xb1Em\xbd\x9a\x01\xac\xc9h\xa8\xb4\xe3\xcfI\x02\xd69\xadW)\xe1\xafQ\xa9\xd63\x94\x1d\x95~\x8d!\xf6\x06\xd9*\\s\xf6\xdd:/\xb9dZ\xc6\xb7%\xeer\x86'\xf2v\xa2%\x06\xdd\x12q'\x90\xadi\x92\xa7\xd9DdH\xab#}!-Ck\x0d\xf6\xa3mo\xbd?C\xee\x17uK\xcb\xac\x82\xd2\xfb\xfa\xb1\x19\xd3\x8c=\x9d\x9ce\x99\x0f\x0e\xff\x831\x87\x1cij\xb56\xa2\xfciv\x12o\xd7\x14\x11\xc3P\xf7\xc3\x07\xdd\xa5\xec\xa3Kq4\x0b\xc8\x89\xe1\x08}\x0b\x12oPD\xb3\x9f@JVR\xfdUb\x04\x94\x9d|\n\x8d`JQ;p\xe12\x11F\xad\xfaQ\x85\xf4(\x1d\xa8Y\xf6F.y1ih\xba\xebU\xda\xd1\xe6\xf1\xb1\xc1,\x89\xb3<\xdd\xce\xd0\xc0=\x99\xe8\xdf\xd0t \x86\xabv \x8e\x8aI\x8d\x0d#3A\xb9\x1d\xea\xb4\x93\xcc#\x0ee\x11\xb6\xaa\x9fh\xf2\xf7\x1a_\x1c\xeb0:)9z\xd7\x8bR\xa2\xc8#Sz!\x07\xcf\xe5K\xed\xb5\xf4\x9b\xb6\xe1\x96!g\x8f\xc4e}\xc8 \x0d\x00\xb3\xc2\x8c\xd58\xb4/\x81[\xc9Bo\xea\xcc\x90\x7fG\xe9\\\xeb`\xe3\x86\xcdc5\xe4\xa4\x91\xf4\xdcz$,\xe9y\x15\xbdE\x80%7\x9f\xc6\xe7\x18W\x9dM\xe3Z\x10\xfc:\xb57\x8c\xca\x90\x87\xa6\xa4\\+\xbaZ\x18\x82G\x15\x83\xa3*2\x1d\x9d\xf3\xb5\xd4\x7f\x8eIX5;\xf0bT6\xb6\n\xae\xc2d\x9b\x8e\xc15\xf4u`\xed\xeb\xa0\xdc\xd7\xc19\x1e3z\x83r\xabx\xc5N\x9a\xd5J#Pg\xe4|\xeb\x9a\xad\x0d\n\xb91&u\xb9\x15\xcf'+:}\xf3\xa5\x13e\xc4\x85\\%\xf2F&Y\xb7\x94\xbf:\x9dF\xe7t\xda\xad\x1f\x91\xceD\xe2\xe8\xe1c\xd8\xc0\x13X\xa8\x067v#\x18o\x11#WL7\x0d\xa7\xe6+.\xf0L\xe7\x0d%\xae0\x97\xe3\xaa\xc1\x12\xb5\xc6\x12\xe1tn\x8b\xef^\xba\x8a\x80W\xde\xec\x12?\x96- \xe3\x13X7\xa9\x1b \xe6\x8a\x0e z'k8\x02>\xa8\x0e>\x83!%\xc0\xce\xd0\xebk\xba\xf4a\xeb\xae\xbcs\xa3\xbb\x99|D\x9clQs[\xbbz \x1fu\xadE\xa76m\xf3\xd7\x8av\x9a\xfb-\x1ex\xdb\x86 \x1f1V\x07O\xbd\x1d\xe1\x17VA\x13Z2\xe9+pk\xbe,)\x9f\xf2\x1a\xd8\x07\xa0\x97Z\xd5J\x18\xd5\\\xfd\xc0H5\xd3)\x17f#\xd5\"\x12$NA\x90\x84\x1dA\x8en\x1ecL\x1e\xcd)\xc1Hd6(R\x1a\xf0\x02\xe7zk\xd3\xd4,\xefg\xe4\x16Q\x8c\xdd/\x06=\x88\x93\x1f\xb7y\x907*\xe6j\xf0\xcc8\xf8\\\x0d^\xe6g\x18\x92\x1e\xcdH\x8f\x06\xc1\x07\x8a\x81V\x0f \xd5@\xc9\xbf\xd1<\xd2\xeb0_\xbd\xc4+R5\xdfI{\xba\xd5L}\xafl]\x8b\x8cg\x0f\x0c!\xf3\x8fC\xec>\x1a\xdd\xab\x10\xa0\x8b\x0b\x96\xfd\x98\xcc\xb7\x11^\xf3\xdf\xad\xcb\xd8\x1d=x\xc0\x17\xd0}t@\xff\x8d\xee\x8b\x9f#\xf1\xff\xa1\xe7\x97\x05[wt\xcf\x1b\xfc\x95\x05\xef\x7f\x0c6]\xfah\x10]}\x99\xc9\xf7p\xe4\xb9U?\x8ePtV\xbd,C^\x0e\xa3\x83\xbb\x95\xf7[j\xea~5Y0\x0d\xfa\xd1\xa8\x1a\xbb\"\xa2\xf2\xd5\xe6g\xf8\xfa^\xd5{d!\xbcG\x0e*\xef\xf1\xdcr\xb0d9_\x91\xf2\xa7y\xc1\xbb\xc2\xec\xe4&gq\x16^F\x95\xcb\x1e\x9c\xedd\x83\xed\"\xcb\x93\xb4\xf2\xe9\x8a,\xca\xa5w\xed\x01d\xab^\x076\xaa)Y\xb8\x88\x8ag\x904\x86%qbx\xaed\xd3V\xd7\xe3\xf2\x98\x97FYg\xc9:\x05\xd6\xc0{\x13(A\xdb\x89\xbf\xa4q\x1bcj\x06\xf9\x88 \x0b?\xe0\x1c\x8e`\xe5.\xc4\xec\x1d\x01\xcf\x8e\xe7a\x0c&\x94}1\xfa\xb6HU\x14\x16\xb37v`8\xf4\xab\x8b Yy\xca\xedAK\xb2\xc1\x9c-\x0c\x83\xf4\xd1?d\xc7m\xb8\xadj\xa8\xee\xa3\x83\xa1\xe7\xaaV\xf1\n\xde\x12o\xbb\xef\x0d1\x96Q\xb1\x963\xb7\xcd\x18\xf1\x00\xf6&\x80\x96\xa5[\x0fs\x7f\xc9\xbb,\x8b\x94\xb1_P\x18\xa4\x17\x9e{\xe5\xf9\xf0\x80\xd6Yc\xff\x1fI~\xdf\xba.\xa6l\xe3\x9f\x8f\x0b\xad\xd0]\x977I\xbb!\xb3\xf4|\x08\x06/NN\x9e\xe3\x01\xba\x0f\x89;u(\x8e\xae\xe3\x83\xb3\n2\xfe\xdf\x92\xe5\xfc\xbf\x8c\xe5\xce\xb9\xdf\x00w\x12\x96n\xb5.j\xeb\x8c>\xf2\xb5x\xc1!\xc6L\xd2\x1a\xcf\x0d^\x1c\xa0`:'\x03\xc4\x1c\x9d\x10\xcc`@\xb0\xb7(\xd2\x7f\\,\xc4\xe1TSP\xe3P\x065\xbeXL\xd99\x8d\xc2\\Zj\x86|U@\xe8\x9b\xbc&\x8c\x0d\x97\x18\xec\x0e\x91\"\xa8-\x02i^\x8b\xe5\xffQ\xdfc\xfa\xbbs\xa2\xf0G\xa3\x87\x96\xc8I\x8dh$\x07\xc6\xae]\xd4\xbe\xf5\x10\xaf\x9d\xf8b1\x82\x1a\x7f\x10\x1c\xab\xc6\x96\x04\xbbz\xe4\xb9N\xb6a\xb3\x90\x95\xd2\x84t\x93\xd8\x10\xf8\x8cb\nj\xe5\x1c?LW(\x84\xf1I3\xa2\xa0}\x8a\x9c\x85PJBHK\\\xcd\xce\xe5\xa9\x1c\x08\x82\xa6\xfb\x90\n\x90T\xe6\x10\xf2\x18\x9a\x86\xe7\x9e\xf2\x1f\x12\x85\x8b\x1c\xf1\x92\x96R7\xe3\xd6T\xf6\xdd\x85\x03Z\xe7\xe1}\xe3\xfas\xf6o\xe6\xba\xc2\xcd\xb3Z-0\xef\xa6\x10\x1a\x86UaBH:w\xab\xef#%\xaf\x18\xa5\x86\xaat\xd0$5DnU\x92\x9b\xe3\xdb\xea\xc8WxxT\x86\x93\xaeR\x00\x1b\\`\xea\x07\x17\xff \xd2\xb1\xae\x1e\x10\x94~\xae\xdbN\xcb\x90\xb2\x04hrojg\xd9\x86\xa3P\x8cr\xe3\xb2A\xd0D\x94+\xe5\x19\x17F\x10\xf0j\xa5\xaa\xd9\x90\x0b\x98Zk\xd6\xc3\xaa<\xd2A\x16\x91|a)\xe8\x9c5 \x94:\x83\xcb\xa7\xa3\xc6\x15Z\x05\xad\x01\xd2\xa4\xc8\xb2W\xf4\xda\xd4b7\xf9B\x1e;4\xcd$F\xe7yT\xf5r\x99\x021\x10\xf1\xa5Y=\xbete\x1c\xc4|\xdb&'WT\x043\xd6\x01\xa0M.\xca%\x00\x18\x9cv\x0d\xb3\x11\xb5\xfe;\x07\x99\x88%\x90\x07\xa2\xb9\x8f\x97\x08\xf6\xf6\xfe\xbb\x9aTF\xfd\xe57(fe!e\\#u>\x84\xb6\xa9\xa3\xdbc)J\xa35\xc4\xeb\x96\x7f\x8d\xb0E\xe7\"$g\xd7\x8b\x9c\xdcE\xd8\xe0\x82S\xbcU\xaf\xe7\x83@r\xa2\xcc~a$\x04\xbc|\x97\xb9)\x8e\x88M\xc3ss*|\xfb\xd2\xa5n\xa4\x8b\\\xe6av\xdbv\xf9\xa0Gg\x80\x92\xbd\x04\xf3\x91]x\x97@\x9b\xec \xe2s \xbeR\xd2s\xeey\"\x11\x03I\xf71_\x93\x99\x1b\xab\x9c8\xc8\xe4D\xfe\x85X\x89\xfd\xc6\xbe,\xee3\x1d0Z>\xff\x88\xd9\x8bD\x0f\xa6\xa9\x9bgi\x80\x10\x1f\xa2f\xcc_\xd4\x91\xc0\x86\x01)YK\xd1\xb7x\xcft/\xb8<\xa1\x14'\xc4H\xbb\xc8\xc5\xa5\x9bt\xcaP9\x9b d7\x0dM\xa8\xd8c\xb8*P\xfb\x0f\xf0\x05$\x94\xaa( \x04D\x8b9\xa3f\xb6\x08\xcc\xf6\x06\x12L\xeeU[\xc9,RQd\x91Wf\x16\xf9fa\x16\x876$uW\xc3\x9b\xce\xf1\xf5\xdd\xa17X\xd4e\x13\x8b\xf9\xe6\x8a\xea\xdcm\x15\x82%\xa5$\xed\xf3\xd6$\x13_\xe2y\x003\xd8\xe6/`\x02\x97\xf5\xd7\xd7\x9c\xbf\xe1!!\xa30;f?\xd4\x13\x98\xc0\x05G\x86\x8b&m\xef\xc6p\x1e%@\xf3\xcaz\xba\x89\xcd\xba\x18\xad\xe7D\xe5\x16\xe1Rx`W\xa5\xf9\x83*\xf4\x85'\x93*\xb8\x1ez\"\xb9U\x95\xca\x83#p/0\x91\x8b\xaen\x1aqm\xc6\xbf\\\xa0j\xea\\\xcc0\xeb\xe2\xe0b&\xa4\xc1K\x9dO a\xc0\xebsK\x1f\xf2\xe9\xf5y\xcd\xca\xc0)\xc0\xca\xe5\xcb\xe9\xa3\xc3\x94O\x04\xd3\x173\xf4\x97,\xf7WA\xe6g,\xf7\xdf\xb3\xdb\xcc\xa7<\x1f\xbe\x98\x8eO\xb7\x0f\x1c\x99\x9e\xce\xe7\xa3\xe9&&\xe0\x16\x82\xbcnZ\xa8\xacu\xb2\xc1 \x8c\xe1\x84\x9c\xcdq\x03\x1c\x1c**L\xa4Em]}\xc3K:{S\xa8uN\xb4e\x16 \xbe\x9e\x9cn\xa1LA\xfa\xd5\xc2\x8d\x0br\x8e\x06\x07\x1a\xae:\xaf\xb3\xab\xec*\x0f\xd1\xc5\x8c\xab\xec\x05\x05\x1frr\xed[\xd5})\x0f\x15z{R+W\x15\x89=\x9f\x82H\xcd\xcb\x8b\xe0d\xe1/\xcc1\xf1\xf6\xb2t\xdc&\x9a\xd1,\x06\xbc\xb5\xfaPjP<&(^W\xcd=dIY\xfap\xed\xf9\x90\x95G\x1a\xe3\xadOe\xf0\xf1|\xd8\xb8b;n(G\xd3\x85\x0f\x89\x9b\x0c\xfe\x03z\x90\x0c\xfe\x8a\xff~\xe7\xc3\x8d\x9c\xf9\x9a\xb3\x90\xb3<M\xe2\xa5Kx\xb1\xf4|\xb8\xf8Cy\x98\xad\xa6\xf3G\x07\x07\x9a\xf9\xac\x93e\xa3\x95\x99\x0c[\xc9e\xcd\xd6\xe1\xa6\x833\x9cD}_\x92E\x87\x8d\xebp\xd2R\xe4\xbef\xdec`\xfd\xfec\x0f\xed_\xa5\x03\x16[\xfa\xac\xc2\x18\x83\xc0aJ\xb7S\x85\x8b\xddw\xe2\xee\xaf\xb0\x13&\xb6\xfe\xa8\xcaH\x89\xad\xdf\xad\x1e.\x04\x8a\x1f\x7f\xc9\xfd\\\xa4\xc9\xba\x8b\x84y%\xee\xf6\xf9\x90\xfa\xb0\x15w\xb34'\x84\xc6\x8d\xa2\x0c.\x9e\xaf\x1b|\xd0\x92D\xb1X\x127\xd3\xad?h3\x94{\xcb\xd19\x96W+9\x87J\xc9\xf1u\x8b\x1e\x19\xfa)\xc3\xf4\xe0\xdc\x87\x03\xcf\x87\x80o\xce\xde\xa8\x8d\x0b\xc8G\xdc<A\x8d(\xed\xf5lWp\x90\xb2\xa8\xa6\xa9\x12\x11\x0e\x05\x86qk\x04\xd7V8\xd4\x07z\xa5\"\x0d\x14\x8b\xbb\xd70\xa92\xfc\x95>\xc9J\x98\xa4\xcd\xb0\x16\xa1\x1eTy\xaf\xec#\xe72=O\xb5\xe7\xc3\xfe\xf4\xa7\xa0\xff\xcb\xb0\xff\xe8]\xff\xab\x7f\xfb\xe3\x9d\xaf\xbf\xe9\x0d\xde\xfdt\xf1\x7f>\xfc\xf7\xf9~8\xc8Y\x86\xb9\xd7\xcc\x81Wd\x82\x97\xd9*H\x83Y\xceR\xceW)\xcd\x00,B\x16\xcd!\x0e\xd6\xc6\x9c/\xca\xfa\x94'?$\xd72\xaftyq-sn\xb6\x84t\x9e6\xeb\xd4\x99\xc1\xf1\x11t'$#p\xc5\x98u\xa4\x95\xac\x82\xd6\x10\x93Iv[\x957{[\xfc\x99'1+9\x88\xb5$<\x11\xb7\xa2\xccI\xac\xc0\xa8\xe2\x99\xdf\x1a\xbcF\xc4\x80+i\xc3rS\xb2\xb0\xd6\xb5\x92\xb2C\xbd\xdf\xce\xd9~\x0d\xde}\xa0\xa5\x02\x14\x97sJ\x19\xf2\x13\x0c\xfd\xb1S\xbe\x0c2\x1eQ\xd6bs\x82\x0c\x91\xf9\xbf\x1e\xcd\x14\xbd\xeaL\xddu\xe9\x8bM\x87\xe7>0c\xe86\xadG\xdc\x03q\xee\xb6d\xb9\xe6\x1e\xf7\"X3\xae\xfd\xef\x90!\xaf:\xd7\xa9)\xab\xdcGS\xe6B\xdb\x1e\x19|\x13A]k\x90\xd9\xf8\x95\x04-\xb2 \x0dR\xc6\xe7S\xcd\xdb\xf2,JY0\xbf\x05\xfe\xafc\xba\xcc\\\xc9\xef\xdfi\x80\x06\x7fF(K0\xb5\xd4LM\x81\xec\xd8\x8eY\x93r\x97\xcf6\xdbF\xb6D)x\xff}\xb7\x8c;\xb1\xcb(aZw\x1bO\xa7\xa52\xf8n\x82F\xf1\xf8Z\x15\xb9\x97\xcdT*FW\xa9\xdc\xce?\xf2\x01\xdf\xddg\x99\x96\xac\x96\xdc}:\x8d\xd0\xe0\xc7 \n\xda0\x86\x8cvCP\x04\x9f1\x8cE\x9fQ\x91\x8f\x98\x03\xecm\xce~\xa0\x0b\xbb\x0d3\xc8\x18\x81\xae^\xd5C\x15\xfc\x12'\xd4i*QS| \xc4S\x1d\xd6G\xd54\xdf\xad\xa7E \x0f/JY\x05\xe9\"UC\x12\xa0\xd0\x9c\xdd\x81yZ\x0eE\x91\xd9\xdc\xa0\xa6\xcbG\xf9\x05\x16\x89\x8e\xbe\x8d\x92K\xcd%\xbf\x9a\xecXo\x9f\x17\xed\xdc\xbeL~\xcd\xfb\x90\xe1g:\xf6#\x8bw\xeeK\xcf\x7f\xce\xfb\xab$@\xef\xd8\xad\\>u\xc1\xa2I\x86\xd0z\xd7\xd2mC)\x87\xd4\xba\xd2\x81\x86[\xe8\xf7\xc9\x04\\\xca\xec\xc0:4\xc4\"\xb7\xb9;5\xd6\xb79\xbdB{\x00\x03\x90&\xf1\xf2\xc8?|\x80==S\xb5}\xcd\xd0\x00\xb3\xac\xc8\xb2\x82U\xe8\xd7-\xbe\x95\xb3\xe15\xdbr\xab5\xac\x92\x1d)\x84+hm\x0b\xab1\xa7\xe5\x83\x05K\xf9\xdffI\x9c\xb38\xef\xd3\x10\xf1\xf8\xd6\x12\x04\xadT7\xab\xd5\xf5\xc1\xc9\xd9M\xbe\x8f\x01\xa9\x1es1>c\xf9\xe4\xed\x9b\xef\xfa\x0f1\x04W\x05\x8b\xe4\xe1\x98z3\x10W-Z\xbb1T\xe3\xed\x7f\x0e\x12\xa8\xd14N/\xd8l\xa2\x90\x92<\xee\xdf\xf4\xaf\xaf\xaf\xfb\x1c\xc5\xfb\xdb4\xa2\xe8\xfc\xf3\xea\xac\x8d\x12\x8c\x96a\x8d\x88)\xd1\x94V\xfe*\x8d&!i\xcc\xe6\xfd\x0d)d\xb4\xe44\xf6B\xe5E4\x88AY\x12]\xb1j\xb1.\xedi\xd0km\xb6\x15\xb7;\xf5$\xa9\xa4\x01\x0bg\xc9\x96k\x8cI\x8e\"\x9b\"\xbf\x98t\x17\x82\x0c(\x93]\xa3e\xa2\xcb\x989\xb6\x9d\x9b\xb7\x99\x04\xda\x12&\xb7nq\xc9\xaaY\xa5\x04Gr\xe79\x8e\xda\xf7\xa9\xb4\xfc\x02\xeb\xf8l]o\x90\xafXl\x8aM\xfdQ\x92\xdf\x9c\x88G\xeb8\x7f\x13Pl\x17\"`G\x11P>vQP>\x15\x91\x90o\xb3A\x16\x94\xcf\xc7_\x0bM\xba-A\xc9\xf3\xbe&\xfd\x91\xbfzaS\xcde\xdc\x17\xf2\xba\x1f\n\xaf{u\xb5E:\xdf\x9f+\x1b\xc7`\x91&\xeb\xe3U\x90\x1e's\xe6\xe6\xd3F\xd6+\xb5\x17J\x99`\xcbk\xfa\xd1\xb2\x10\x9dV\xee3\xd0\x9e\x03\xf8\x8eh_Fv\x0bE\xd7E=\xaa\xb1($\xb8Vt\xd2\xd1>\xc7\xf37B\xd5E\x03\xaa\xfe\x9c%\xf1\xe7\xb4\xfd\xa7\xb3\x97/(\x06\xaf\x95z\x95\xde\xdb\x94\x85Y\xab\xe7\x0f\xf9\xf5\xd1\xfd,\x0fU\x87\xfa\xfa#\xad\xd0\xad%\xc6\x08\x94`P\xdf\x8d\xb6\xc4\xb2\xba\xde Q\xda\\F\xf9T\xf1\xcd\xac\x94)\x95\xe9\xbf\xb9\x1a%\xe4\x83\xc2Gv\xa5r4\xc7\x98\x8f\\e\xd7\xf5\xe4NQ\xd6VlL&p\xa5\xf7\xc9\x9c\xd1\xdbd\xce\xfcR\x82\x18`\x9a$\xcc\xbb\xc2l\\z\x06\xf6\x8a\xbd\xc1\xb0\x87\x9a`H\xb3T\x06K\xf3\xf2\x1bf\x9f\x97~\x7f\xf8P_\xa1\x0f\x1f\xc0I\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedf#\xed\xbe\x8d\xc8}\xabe\x1a\x87\xa7\xd0\xa7{H\xa6\x8c\xdd\x1f\xdd\\\x0eFN\xbc\xf8\xe9\xfc\xc7\xc9\x1b\xc7+\xefcN\x7f\xa8\xc2\xe2\x07\xe5\x9d\xc1W)[\xb04EI\x80\xde\xba\xd8\x0e\x99V+\x1d|\x7f\xf2\xecy\xed\x0b\xf9\xcbZ`\x1eUoN\xf90&4\x9b#[\xf8\x8f\x937\x90\xa4\xc0[\x939\x873\x13B\x10\x91\x93\x1a|5\x8e\x8f\x0d\xf7\x17\x1d\xac2\x82\x0c6Y\xed\xd3p\xedz\xf2\x8c\xfe\x8ec\xb0\x1a6\x9a\x11Z\xc5\x03B\x1e\xd1~cxb\xfe\xe0\xf6H\x0b\xba\x96M\xa5\x87YT\xa0\xad:\x1e\xdc \xe67q\x8c\x0d\xd8\x99g.-\xa0\x14d\xf8\xed\xeb\xd3\"&\x19\xd7\x91\x0d\xaf\x93\xeeq\xe1:[\xb77\xed\xfb\x9a4l(\xad\xf4\xfe\xbb\xf4\xe8]\xbc\xbf\xcbn\xd66k\xdc\xb4\xda\xe5\x8d\"(\xb2\x8b\x0f\xdd2\xda\x8b\x8d\x1b;\xcd\x0d\x82\xbeWi\xed\x0e\x82|>g\x0f\xe6V\xbe\x9a+_\xfa\xbf\x17\x82\xbbH\xd0-\xae\xeeI%\x99R\xd5SXs\xfe\x17\xe6\nC\xf7\x0d\xf9i\x0c\x07\xc3\xa1\x8c\xfe\xfa^\xfa\x85\x88\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\x8a\\\xf8E'\xfcW\xad#,2\x06\xe7\xe5\x9f\xe5\xd8\xec\xbc\xc0\xd7\xb9V\x8e\xffc\x8a\xfc\xaa\xa1\xb1j\x17)/7\x1axDZo\x1b4\xaf\xac\xc7n\xba)a\x0cN\xc5\x92\x80\xd3\xb3\xe4Q\x92\x07Tcp\xceD\xcc\x88P\x06\xa6\x90\xc7T\xf8\x8a\xbe\x9a\x1b\xe1\n\xdb\x18\x9cB\xa1\xd1\x1a\xe1\x1aF\xf1\xb3U\x00\xe4O\x9e\xde\xb6\x98\xc3\xb4C\x07\xde\xbe_=\xc3\xd0\x9f\x8f0\xc3\xe0\xd4\xcd\x94\x174\x97\xca\x91\xbd-3\xe2T\xa3\x1f\xcbGJ\xd5|m\xc4\x9fM{\xa1\xa9\xdfcp4E\x83*\xd5\xd1\xd3,\x1a\x95\xcc\x84\x1eB\xce\x15L`\xaa\xe2\xd5\x9cJ}\xeb\xdc\xf1\x8b(6\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83%,A\xfbuP\xf9H^\xc0!\x94o\xd2_Bv\xdd`~3\x03\x81y\x10*[\xaf\xb0\xd2\x86\x19o\x9cS\x88\xdd\x87v\xa5\xc4\xc1\xd6\x10C$.\x9a\x07Z\x87\x9aDk\x89\xd8D\xc5 \xd5\xca\x8eP\x94D\xb5\x9d<\x83\x9a\xae\xde)?\xbeu\xb0\xb1:Di\x05`\x82\xa7\xd0\x18\xfd\xd4\xc7\xe8\xa706$\xff\xc1 ^\xc5\xf8\x85\x93z\x97\xad\x17EU\x97|\"u\x9f\xf6J\xfbK\x96wj\\m\x9c\\ b#\xe4f~T\x9a'\xa5{l\xebx\x154\xfbFU:\x96\x1d\xd4\xc2Bs\xe8h\xeb+\xabL\xb2\x01\x02\xca\xab'\x80\xa0\xad}\xe9\xf3\xdb\xe1\x1a\x14\xd4\x02\xdc\xc8\x1e=\xeb\x1c)\xdc\x8d\x88L\x95\xfb\xc5\x18\xe3st\xfc\xcak\xa7\xf2\x861b\xd0\xb2\x0e&\x0bi]\xb4\xe5\xfb\xd3\xf7\xa3\xee`\xd0\x92\xea\x8d\xc9\xc8lfT\xc6\x8b\x89f\x93\x88>\x15\xf23\xfe\xf5'\xd3a&\xb6\xd3\xfb\x8e3\x11\xae\xd2\xbf\xfeT\xba\xed\xcb4\xae\xdf\xf7\x92O\xd3\x94*\x8eA\xda\x0cM.B\x86\x05\xb0\x9c\xc5\xdf\"\x9f\x7f~\xf2\xc3\xc9\x9b\x13\xce/\xb9\xc2\xee\x0b\xf5\xdc\x07\xe7\xe5\xab7\xa7/_\x9c\xf1?_\xbd<\xc3O\xaf\xde\xbeq\x0c\x0b4\xd3\xba\x9c\x89\xf4\x17\xad+\xaeIe\xd2\x13\xdc\xbe\x82\x97\xc9\xfcV?e;\x8dC\xb3+\x96!\x16\xf5G\x1f\"Bnm\x9c\x9ez9/\xbd\x9c\x7f\xe6T\xe6\x95\x93\xff\xa6I\x91\xf60\xd6\xb5\x0d\xbbFX\xa8\x1a\xe3\xaazb\xaf$\xb4\x8e\xb1TC4\xdd\xa4A\xf9\xdc\xa6\xd1X\xa9);\xac\xf2|\xd0\xd9\x9fF\xa2\x1b-\x19Y\x8c\xda\x17\xca\x90D\xb7\\\x84\x96\xc7q,\x83nDm\xa6\x14M\x9c\x85S\xf5|\x04\xb34$/\xd5L\x0f\x87#\x1f\x0e\x87\x07\xfc\x9fC\xfe\xcf\x03\xfe\xcfC\x03\xba\xcc\x07)\x9b\x87)\x05\xd8\xed\xc4\xd2\xb8\xa0.RK]jV>\xddZ\xf6:\x88\x97UwS\xa1\xd4\xce\x92\xb9\xf5\x80\xbe\x04\xba]\xf7\xa1\x0b\xc45+OQBG\xcd&\xeb\xa4|,\xea\x93\x11\xf4\xd8\xe0{\xa5r'\xfc\xe7k2\x08\x02\x86^\xe5?\xb3M\x12g|{\xe7\xfc7j\xce]W_[\xa3\x9a\xd3Z\xd3%\x17\xd0\xad/H\xe6\xb0\x97f\x1b[(\n\xff\xe7\x8f?|\x9f\xe7\x1b1\x0f\xbb\xa9&\xdc\xd13\x0e4\xeck.\x05\xda\x8e\x87\xad\xf4\xa9\\\x83\x101\xecD\xa4\xe4\xa3@g\xe3bN\xa7gQ$\xb7Ml\xae\xeb\x91\xb1\xc4\xee2\x02f$\xd5\x1f&\x8c/N*\x1a\x7f\xfb\xfa\x07G&\xa2\x0f\x07\xda[\x18\x03+\xfb\x93\xfcg_\xecG\x9fWj\xf1y\x91&E\xd5\x91\xa1\x17L\x0f(\x7f\xf0ejn2v\x05\x8f\xf1\xc1$\x97\xcb\xe7\xa3\x8f`\xd1\x99\x1a\xcb'\xad\xba\x86\xbe`\xf9u\x92\xbe\x97\xe6uX\x04a\xc4\xe6&\xdf\x0f\xf9\x88\xaes\x8a\xfe\xfd\x0f\xe9|\xc3b7Q\xc7Q \x9d\x7f\xe1\xe5&'\x8cg\xd1v.\xe2\xd4%\xa5\xd3\x1e.Y\x85\x18\xa5\xec\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|0j\xe4 c\xf1\\\x0f\xa6\x9ah\x87n*}\xa0\xf6\xd2&\x95\x9a\x89-\x92\xcf\xc1&\x89n\x17a\x14\x99\xbc\x82\xd5_\xae\x9e\xc1\x163[\x90lQ\x8d\x85\xf6\x07\xd1xiqv\xbai\x94\x9bn\x19\xdd\xbb\xeb\x0d\xc8\x98b\nd\x1b\x1a\xb7\xc0lQ\x14\\\xc0pLQ5\xd5J\x13\xa2Q'\x10\xcd\xa4*\x8d\x9b\xf4\xc6\xe5\x03\xd1|\x13m\xeb\xa9\xfe\xaa\xb6\xd0\xc6\xcd\n\xb5\x18\xef2\x89\xec\xdd\xf2`W\xf9Ml\xe9\x9eQF\xffE*KN\x910\xdc\x9a&\xe7J\xc4\x1b\xcd\xe0I\x11N\xfa\x88k\xd6\xc2\xbf\xe2Y\xee\xa2s\xfd\x8b\xe0E\x9d\xcee\xd7!\xae\x9a5\xdb\xfd,\xc8\x18\x0c\xc7V\xc0\x97\x0dX\x8f\xd7\xe5\x83\x0d\x1d>\xb0\xb7$\x1f-\xd9\x80\xb8z\xd5\x10Y@>\x98\x86\xad\xb9\x18\x0e\xe0\xeea\xfb\x00\xf0J\xac\xcb\xd7\xf4\xf0\xa0\x85\xdb\xc8\xc0\x86\xadm\x06\xd3\xa8\xd73'\xea\x94\x8fY\xf2\x82\xe6\xc9\xe1\xa4F\xf6\xfe\xb9\x0c\x1b\x92<6\x83\xa7\x13\xb8\xfb\x90On\xc6!\xeb\xde\x03\x0f\xd7z\x06}\xb8\xfb\xd0>O\xe5\x95\x8b\x0d\xdc\xbf\xa7\x1ax0,\x1a\xb8\x7f\x0fz0\xb2\xdc\x10\x86\x1d\x1ch\xa9\x97G\x0fT/\xa3\xe1Ac\xf0<\xf9\xa8\x15>|\xe0k\xcb-p\xab#\x045\x96\xb2o\x10\x08\xb0\xe5+\xf1\xe8\x01\xae\xc4'l3\x1f\xe8\x81}\xa0mPp\xd0\x0c\x05\x82\xc4\x98\xa0 \xfd\\(H\x7f\xe7P\x10\xea\x10\xf1\xeb\x83B\xfa\xd9\xa0\xa0F;\xba\x0f\xdf@\x0c=\x93Q\xfd\x0f\xf6_\x82\xdf\x05ER\xe2\x08\xfaz\xea\x94\x8f\xbe\xc6\xca\xf8\n\x15\xab\xa2XVP\xf2\xf2;\xb8w_2\xaa\xc7\xb0\x85'pp\xef\xfec\xe8\xf5\xb6\x1e\x04\xd3-\x86#\xfe\xa3\x03=p]\xfeqt\x1f\x8e\xc0\x19:\"]r\x0f\xb6\x05\x97\x1d\xdd\xf7<\x9b\x87\x8d\xcc\x9e\xd6hFo\xb8E\xd9\x9b\xf0\xfe\xca[\\\xf2ft\x9cR\xceP\xe1\xac\xc8\xb4T\xc5F\xcdRj\x94%\xb6j:I!\xf0=<$\xf9\x8fkNw\xefi\x7f\xdf/\xfe~\xa4\xbd\x1f\x1dh\x1f\x12\x0e\xfb\x87\x8f\xf8\x8c\x12\x0e\xfbw\x0f\xd4[B\xdc\x84\x10W\xbd%l\xc4\xb7\x8f\x86\xea-a\x0f\xbe\x1d\x1d\x1cX\x04xtd\x80>\xc4*\x1dh\xce\xd7P^(BE\x9b\x8b\xd3|K\x0f\x1e\x12\xbdO9T\xfb\x80\x05\x83ib\xb1\xdd*\x82\xc1\xeb\x1e\x0c\xef\x1a+\x8f\x1e\x1d\x00\x0e\xf7)\xdc?\x87\x1e\x7fs\xf0\x10>\xc0\xfdC\xb8\x03\x9dZ\xbew\xef\xe0\xd1}5\xe7{\x0f\x0e\xef\xde5utppWv4:\xd0{\xa2\xbe\xe1\x0e\xdc?\xdcm\x00\xcd\xd6\x87\xb0\xc1v\x80\x10\xd2\xeb\xe9pW2*\xbd}}*\x94\xb1\xb7\xafOa\x1dD\x8b$]3\xab\xdb!\x08\xfb\xc5hx\xc0\x07]\x81P\xdf\xb4\x18w\x87\xf0\x81\x12\xc5\xdd\xbfw\xef\xf0>b\xad\xa8\x9ex\xf0\xe4 \x8cx\x81\xd0\xf3p\xbd\x1e\xd6\xd6ktP[\xb0\xe6u4\x0e\xbc\x03\x01+\x02\x890\x8c\xfbT\x12qs\xe8\x15\x80\xea\x95c7\x96\x15\x95\x96\x88\x05\xd4\x97\xe5\x8e\n\xef\xd8\x94\xb9\x85#K\x98}\x17\xc6!E\xe4:\x02\x87\x93?,~\x99$\x11\x0b\xe2zSG\xe0\xe4\xe9\x96!Y\\\x04QF\x7f9\xfa\xb8\x0b:,\xf5\xa5hw}\xc9\xae\x1e5\xc51,8\x02F\x1e\x18vQ\x87h\xd1\xc2\xc5-&\x0c\xa4[+U\xa5\xc8\x9c\x0fX9\xf1:w\x04MF\x87UgR\xb9ht\xa5\x12\xfa\xd2\xd8\xca_\x89\x0e\xd8\xa2\x18%bD\xba\xe6H\x96\x03<\xb3\xa9\x7f\xe4\xf8B\x99b'\xf6d>\xa6%,qM=\xe3\x83\xcc1\x1c\xa8\x88$\\\xbd\xdbrvL\xd9\xf29GZ\x10+Z\xc0\x13\xd8r\x1e\xb4h2\xe1S\xaa\xe1EC\xa6\x879\xa5$n\xc9\x16\x11\xba\x19\xe6\xb7\xedU\xd3A\xca\x87\xafm\xf9\x12\xf8\xbcQ\x08Skp\x05\x13\x98\xab\xf9\xaea\x02W4\xdf%\xcds O\xe0\x8a\xcfs\xe9\xc1\x8c\xd3\xa4\x15\xf4p8\xf3\xe9\xf2\x9c\xf3\x1b^`-\xd4\xb0\xde\x04\x9a.V`\x08+\xbep\x91^\xdeLp\x88r\x97{\xe4\xdd\xb5W\xaf\x8bj\x02gf\xedDL\xc7o.v\xa1\x8f<\x024\x995\xbe<\xba\x04\x86\x88_\xa1-\xea\xc6\x87\x0f2[\x8fdFJ|,\xb7`\xa8\x9d\x17\"CM\xec\xba\x12)\xf1c \x08\xb5%$\x8fp\xdbW\x8e\x1b#vXn\x94P\xbdN\x8e\x93\xc1:\xb8\xf93\xbb\xcd\x94\xee\xae\xde\x18\x86\xc5\xd1m\x04\xfbU\xb5p\xa6\x84 ^`f\xa8\xb8\xc1m\x93T\xd2443\x15\xaa\xdb\xaf\xb0\x9b\x0d\x8e\xb3\xfe\xd1&\xc0r\xbc\xde m\n}D\xe1\xe9\xb9\x8f\xc86$,\x1b\n\x0c\xf3\xf1\x94\x99\x13\x96K\xf1\xff\x05\x9d\xc1\\\xd3\x7f'T\xe8\x86\xb0\xf1\xa6\"\x00\xdf\xd8\x04\xe0\xb3\xaa\x00|c\x11\x80\xcfp\x8c\xb9^tm\xa5\x1c\xbc\x82\x18<:]\xb9\x87\x0f\x10\x1c\xcf\xe0\x08\x07:\x821\x9c\xa8\x9d9+\xc4\xe0\xb3B\x0c>+\xc4\xe03RJ\xd5[\x12\x83\xcf\xa4\x12 G\xc0es\xe8\xf5(\xc2\xda5Y\x9b\xb1\x8f \x86\x91\xe6\xb4\xc7j\x0e\x035CJ\xba\xa2\xcdp\xd9\xaa\xa0\xf2\x8a\xbd\xde\x12\xabn=\xb8\x82'\xe0\xbe\x87 \xdc@\x1f\x96\\B\xa38\xd5\xb7\xba\x04~\xe5\xc3{N\xa2\xc4\x96]a\xf1^\x9bIl\x96\xc4y\x18ow=\xe6\x03\xe1\x0d7\xe4\x00\xf3\x9bo\xc5Ee+\xcc4\xdc\xf8\xf6\xee\xa1\x18'o\x077\x10\x8e\xc0\xe5\xebz\xa5\x86[]\xd6\x1b\x0f\xe3\xa9q\xd2\xf5\xc7\x83\xa1\xc0\x11\xea\xbfR\xf3\xd2T\xf3R\xaby-\x8f,\xd4\xf6\x188H\xa1\xb7\xf4zk\x1cn\xd6\xc4\xe5\x8f}\x90\xb0\xb1\xb6o8oN\xce\x97\xc3\xd3{\x1b\x04\xc1X\xfb^\x9d\x10B\x98\x8c\xf88\x81\xc8\xbd\xf5a\xc3\xdf]\x8b\xe2\xfc\xdd\xa5x'\x8e\xc4W\xeaH\xfc\xd6\xf3 \x98\xde\x9ec(KXMW\x82\x96\xf0\x17\x86\x9bY 4(\xf7\x18\xe5\x98\xdbsO\xbf\xa6\x85r\x06\x1c\xc1\xf1\xf4Xk\xe6\x12\xc6\xb2\x8b\xe9\xb1\x0f\x97\x16\xc5\x8c\xaf\x06\x06\xf5\xea\xf7\x17^\x93\xc1\x8cou\x99\x16\xdeb/D,\xd5.\x12UE\x8c\xa8\xef\xe7\x1f\xec\xbf\x16\nt\xaet\x95\xe5\xc3\x07X\xf2/^\xfd\x93\x0e\xb7\xe5\xdd\xe3;\xb7\x86'\x90\x19v\xce\xfb\xcc}\xe3Hb\xdd9D\x84\xcf\xd9\xa3\ns\x90B\xc5\x1f\xcak\xd69\x93\xc1#K*\x83\xc3\x87#\xaf\xfdtO\xba\x13\xc8\xebpp\x04\x7f\xffH \x0dAB\x8b\x91\xeb\xc7e\x9d2]\xea\x03\xaeF\xd5\x13\x03\x1e\xb6GI\xb4'\x85HE\xa7\xad~p\xa2|\xe2\xb2Z\xfa\xb3\xd6\xc8p\xd69\x8d\x0e-s\xba[M[D\x81\x05\x1f<\xea2U\xc3\x0cJ\xfaT\x7fD:\x94\x12\x16Qt\xfc\xfbG.\xad\x04\xa83\xd9D\x16\xbc\xf01\x0d,\x9a\x10\xe6\xe9\xe3#\x88\x0c\x82L\xec\xce\xf8\x07\xa0\x98\x81>\x84nDA:g6\xbd\x18\x8aU\xcfv[`\xf3\x19\xeb\xfe7{E\xdb\xdf\xc0,I\xde\x87L\x7fs\x9cln\xd3p\xb9\xca\xdd\x99\x07\x07\xc3\xd1A\xff`8\xba\x0b\xaf\x93u\x10\xc3\xd9*\xbf\x8d\xd6A\xdcT\xe1\x1e<O\xb6\xcb(\xc8\xe0x\x95\x86Y\x9elV,\x85\xbf\x86Q\x96\x94\xea\xfdx\xfa\x06~\x08g,\xce\xd8\\{\xbf\xaf\xfe\xce\x95V\xd3\x08\xc36%\xc4r\x03Q\x86[\xe4K\x03\xebm\x96\xc3%\x83\x00D\x036)9\x16\xc1\xd2\x92\xe2\x960\x1d\xbb\xca[`\xa1G\x00$Eo^&-%z\x0cJ\x89\x1e-\xb05C\xda\x18Y`\x0bU\x08Ek\x9d\x89\xc9|G\xa6@\xae}\x0e\xad\xc2\xa3T;f\x83l{\x99\xe5\xa9;\xf4a!/\x935\x9b\x00T\x95^o\xe1\xc3L\xaaw\x8d\x17\xd1\xbev\xbe\xe6\xf4q>\x1d\x9e#\x0f\x99\xa3*O\xfcf\xc4\x99H)w\n\xc4\xd3\x0d\x95\xc3?&\xb0u\xe7>d\xed\xa1)M8SI\xe4\x9d\xb14\x0c\xa2\xf0\x17\x93~\\],E\xa0\xc4v\xd7WZ7O}\xf8P\xbdm\x88pY\xa8n\x05d\x86\x16\xc8L0\xa9\x1e\x88\x06\xc3\x0cB\xf2\xfe\xab\xee2\xeep\xd0\x12\xa8R\x81y\x1c\xac\x9b\x1a\x93\x1auX\x8b4A\x07|\x18\x9e\x9b\xfa\xda\xb6\xf6u\x15D-]\xe1uu\xe8\x813q\xa0\x07\xdbz\x8f\xc2R\x06)W\xb5\x9f-\xadW<#(\xca@\xdft\x18\x8b\xc7\xd4\xd9\x8b\xe0\x85\x1b\x99\" \x89\xaa\xd9\n\x831 \x0dxA&\x00\x03\x14g(\x98?\x86\x1f\x83\x9b\xfe\xb3%\xc3\xc1\xff\x18\xe4\xab\xc1\"J\x92\xd4\x8d\x9a\xa87\x1e\x87\x0c\xe6\xc9:\x08\x8d<U\xdfNU\xae\x19D\xa8P\xc3R\x836\xe6\xe7X\x18\x87,\x9bo\x1d\xed&\xc8\x8d\xd7\x11\xcbc\xc5R\xcd#\xe5E:\x8e\xf3U\x90\xaf\xc4(y\xad\xd61\xb2\x9bM\x982\xa3\xbecE=Uk\x90'o\xdf\x1c\xd3\xe1a\x0b:R\x85\x8e\x938\xa1\xd2b\x1e\x86\xce\xac\xfe@\x80\xa6\xefU\x9eo^\xc6\x11\x06Owe\xa3\xdf\x8b\x97\xd5\x8e\xd3A\xc6f\xdb\x94\x95\n\x9f\xe1+\x13\xcdH\x07Y\xb0fganE\xaa\x19\xdd\x8f\xad\x1eY\x14\x15\xe1H\xfbQ\x8ed\xcb\xe5^\xf5\xc9\xb0@m>=\xe8o\xb0\xd7\xe4\x15$'(\xfa\x98\x9cUe\x9b\xea\xd3\xe6\xdd\xe0D\xc1\x8d\xb3C\x87?\x047\x9f\xd3\x9b\x90\xc5v\xe8\xf0sf\xd8\xeaF\xd4\x04\xf4j\xbfu\xa8\xaf\xb5\xd4\x81\xffj2k1L\xc9Y\xebF\xca\xba\x1aP?N\xa9\xab\x04\xfb\x8f\xe1\x9b\xfd\xf2k.\x9a\xed\xff4}\xb7\x1d\x0e\x87\x8f\xf8\xbf\x07\xc3>\xff\xef\x01\xe3\xff>\xa4\x1f\x8b\xc5y\xef\xdf\xf6M\xc7c\xdb\xdf\xeax\xac\x1a\x93\xb9\xfc\xd7'I\xf8\x1dC\xaa\x8b\xfek\xcb\xeb2-\x1c\xc4t\xefk\xd7\xfb\xe6|\x7f\xd9\x16\x8b\\\x1eK\xa0\xbbF\xc9\x9e;\xf4J^\x1ae'\x8d\xf2\xec\xdb4H\xbd\xe3n\xb3,\xb9i\xc8\x1c\xf32+\xb2\x92\xc7c\xbb<\x9eV\xcd\xd3\xb1E\xe4N\xd1U\x00\x1d\x07\xee\xdc\x81\x14m\x97\xf7\x0fG\xe8q\x11C\x0fF\xfa\xc9|\x83X^s\x08\xc1\xca\x16\xc1\x9a\x0e*\x9fbW\x07h\x1c\x12n\x1c\\un0\x1c\xcb\xe3\xcf\xd1\xf0\xe0.|C\xde\x1a8v\x0fz\x90\xf0\x1f\xd8^\x8f\x8e\xf2\xed\xe4'\xa7\xebp\x07w\x87ey(\x84}\xb8\x7f\xb7\xf8\xc7\xf3at\xf0\xd0Z\xc6\x83?\xc2\xfd\xbb\xd62\xe5\xcf!\xfeB\x1f\x84^\xa3\x1bg\xa3\xbd\xban\xf25\x9c\xc6Qh\x89\xbb\x0f1B\x04\xcd\xf4\xe0ny\x84i\xf3$S\xc3\x04R\x9a\x00\xe7\x97\xbc\x03\xfeR\xb5?zt`l\xa0^WTH;\xd8\x0d\xda\xd2O\xea\x90\xb2gw\xf3\xe7@\xc3la\xf9\xedF\xb2J\x91\x86\x0b\x96(\\\xa6z\xfe/\xcb\x19\xb2\xc4\x93\x86[d\xa1\xddAs\x9e\xb4`F\x80V!v\xc3f\x8d\xa9\xc5\x94\xb62\x99L h4\x0d\x83\xd2\xcbCx\x02\\\xbao)\x9c\x90S\xcd\xf0\\\x19\xa7\xc2^\xcf\x0c\xc8p\xbd\n#\xa6\x14'>\x14s\xbb\xd2v\xc7\x81N\xf3x\xe9\x8f\xcc\x19r\xfe`\xdfIK\x8a\x00\xd0\x9d\x04\x85v\xbaS\xbb\xc2\xach\xa3\x8eZz\x8d;\"\xbd\xc1\xd4\x99\xfet\xee\x9c\x97\xcd\x07d;\xe0\xa2l\xcd\x9e\xa3\xda\x12\xa4\xbd\xed\x92\xf0\x0ea\x81\xb0\x1a!%\x1bd\xc96\x9d\xd9\"Fx\xbe,\x18\xca\x82\xe48\x98\x0efI<\x0bD\x10Gv\x0d\xaf\xd9\xf2\xe4f\xe3\xa6\"\xe0\xcf\x07\xc7\xab\x99]\xc1H\xba\xd8`\x11\xc6\xf3\xe3U\x90\x9e\xc6sv\xd3fB\x93\x0f\x87\xd1\\\x87\x0f\x85\x89\xfd\x86\xb3\xa22\xceZ.>\x95,i\x89\xeb\xf9\x02E\x0b\xd7\x98X\xa2\x1c\xda\x1c\xdcx\x10\x05YN\xc3\x7f\n\xb9\xf7\xd8\xe38\xd0\xb8]\x86\xfc\xcc\xbeX\x8aoos\xb6\xd3R\xc8\xd9\xf0\xd5\xc0\x1b\xb4\xb4 \xe4\x95\x858\x83\xf5q&\xe6x\x8b\xc4\xc5\x9fu\xbe\x1a*\x17\x87n\xa6\xebc\xa6j\xf6\x0d\xe0\xd2\x0c\x9e\x88\xc6\xc6\xbd\xb3EY.\xe4\x1b\xe5\x98\xc9\x85\x8d\xea\x89\x88\xfe$\xe8t\x84\xfb\xd4\x92~KQ\xc6\x84\xeb\x8c\x94)?\x99\x0e\x8dq6tyg\x97\xd5j\xbd)\xa3?r\\Hc\n\xdc\x92(\xe8#\xb50\xee%\x7f>\xb6\xedA\x8a\x06W\xd9\x8b\xf1^\x0c\xd8D\xbc\x96\xa5$\xa9\xf2\xc9\x84\xbcA\x92B\xb4<R\x02\\\xa2\x0bpn\xb9qr\x02\x102\x9d'\x85:3\xd1Gt\xd1\xe2\xa8\xee\x12y\x84\xc1Sl\xfa\x1e\x1cq\xe2\xdc\x17\x8e\xa0\xbe1>+\xcd\x89\x8f\x15}?\x87\x9e\xafdN\xe95\xca<<a6\xd56GW`\xd22\xde\xc1\xb8+\x9f\xd2\x9d6\x99\xe7\x9b~\xc9\x88\x96\xa6\x04\x08\xa0A\xa0\x19_\xe3\x16,b\xc5\xed\xef\xd6Tv \xe2\xb7 ;\xaa;E\xdd\x91\x0eYVD\xd1\xd0\xddV\x85O\xcd\x0e\xeb\xdamD=\x1e\xe8\x847H\x04E\xeb\xd6\x1a\xc1\xb8\x83\xc7s\xd2\xb0\xbcv\xe1\xc90\x84\x1d\x82\xdf\x81v,\xda\xbe\xee\xe6\x987\x82\xa2\xee\xba\xe2~\xc3\x84m\xabX\x02\x11.\xf8\x10p\xa9[\x80\xf6\xbd\xe2tY+\x0bcJMf[oO\xf5\x90\x96{\x90\xec#iX\x0d<2\xdaa9\x14\xf7}\xa2n\x10\xd4\xd8p\x0f\xf2\xb6\xf9Qx\x0d\x1c\x1d\xb1\x87q\xf5\x15\xfa\xaf\x1be\xaab\xdca\xbc,\xb8\xa4_,\xd8\x0e\xb4\xd1\x0c<\xaa\xa5>\xa7\xd0=\xa8\x07\xee\xa2Q\xe0\x10\xde$\x9c\xf4\xbdJ\xc2\xb8\xc5\xe6!\x9f.\xb6\x0f\\\xdb\x99lW\xae\xb1\xc6=DjIU\xc4\x13\xd6\x12\xa1~j\xef\x1b\xa7o\xe1\xfajBo\x84\x85\xe8\x8bM\xac<LZ\xfe\x12\x07\x99\xc6\xd6\xf0\xfdJ\xf8\xb7\x06\x07/m\x0b\xc7\x93/\xb7#VkT\xad\x11\x83i\x8a\x08\xc8\xf4\xfc1\xa4\xf0\x14\x86\x8f=H\x84\xdd\xe2\xde=\xb8\x03)\xea\x19O\x9fN\xa0\xe1R\xde\x08\xf0\x92y\x01\x1f\xa2 \xce\xa2s\n\xb7LJJ2H\xd9\x15K3\xe6v\x0e\xee\n\xad q\xc9\x17\xf3\xd7\x80\x06\xaeP\x1f\xb4\xd9\xc4pI\xa7\xf19<y\x02\x0f\xe1\x03\xff\x9b\xa3\xa5EI\x84\xc2\x02f\x12R\xd2OZ\x96\x8e@\xc7{!\x97\xa9.k\xa4-\x8fu&B/\xfbD\x9b \x85\xb9\xdd\xcdf\x92\xb6\x9aA\xa4\x91k:\xb4\x05\xdb\xaaY?\xda\xb2\x02\xd7\x97\xb5^^\x9aG\xf7\xa7\xef\xb6\xcf\x1f\x0e\x87\xfdw\xdb\xe7\xdf~\xf7\xdd9\xffyL?\xbf\xfb\xee\xbb\xf3}K8O\\H\x0e\x89\xd5],\xef\xbc&z\xe6%\xd13\xc7k=\x13\x0c\xf9\xedl\xe39[\x841\x9b\xeb\xc7\x98\xd7a<O\xaeK\x95\x8aWz\x9c\x06z;x\x9b/\x04F\xd5\xabh\x1f\xb9\xc4[{)\x02\xf8\xf2\x01U\xbfU\x96\x9a\x0d\xae\xc2l\x1bD\xc2U\x06\x99\xfc\xf4\xdc\xc3\xbf\xc4'\x1f\xa6\xfb|M\x0f\x8f\xf9Z>?\xb9\xcf\xd7\xf2\xf9w\xdf\x9d\x1b_\xeek\xbb\xfeQ\x1c\x16t=\x13\xf8\xba\xdf\xef\xbf\x8b1\x00\x96\xb3\xca\xf3M6\xde\xdf\xdf\xb0\x1c\xf3\xdd\x0f\xb2\xeb`\xb9d\xe9 L\xf6\xaf\x0e\xf6\xe5\xaf\x9f\xb3$v\xde\xc5\xf3d}\x11\xce\xc7\xe0|%>\xf4\xb7\xa1\xf3\x8e\x0e\xc1\x82<I\xdf\x96\xdaL\xe2(\x8c\xcb-\xca\x82\xce\xbb8 \xb6\xf9\xea\xe0\xb5\x08\x12U\xd4\x1c\xef\xefG\xc9,\x88VI\x96\x8f\x0f\x0f\x86\xc3}*\xd9\x97\xf1\xa4\x06\xab|\x1d9\xef\xe2\xaf\x8d\x936\xb9\xd2\xf9\x90\xf8\xfa\x15\xc1D\x90\xc3\xc6\xb81\xe6\x13$\xd9f\xbb\xfa\xa7T\xbf;w0\xbb\xf7q\xb2\xdels6?\xcbo#\n\xafR\xc0\xa5\x93\xad\x93$_Q\xc8\x16\x01J\xd5*.\xf3\xa6N6K\x93(\xea_\xb2Up\x15&\xa9S\xb6\x19\x98\xae\xa0hH2\xa9\"\xc9\x87\x0f\xb0\xe7:\xf3d\x86.*\xda\x98\n\x93U\xf5Z\x8b$\x97j\xee\"op\xe3\xb9\x8d\x99\xec\xa8;5\x8f\x1e=\xe2{\xa1.\xc6\xe0\x9f(J?j\xd0/\xc3\xd6\x1d\xd0\x1f\x14\xfd\xad%,\x91jA\x90,+\x8cT\x1fL\x1c\xff\x86\xc2\x02\xb9\x89\xe7C\xe8Z\xfc\xea\xa1\xb9\xd7\xedN\x93\x13{\x85g#\xeb\xe0\xc6\x1d\xfa\x80 =\xdf$\x1bJ\x8e\xd57\xa9\x1f\xf2i\x18FIv#4j\xbc\xaa\x01\x02\xea\x02\xd7\xf3eL\x1e\xba,L\xd6\x192\xc517\xc7\xe4\x17\x1e\x17B\xf3\xe4\xbf\xf0\xda,\xbaSm\x9b\xe2\xb5C\xbbb,\x9f+\xe1N\x85\xab\xf0_M~{\xfa\xc3\xa9\xb3\xbe\x86)_\xb8\x0e\xd1\xc0@\xb8\xb6bl\xa7\xe7A\xce<\\\xfcpmMf\xa1? \x88E\xa2\xae\xc3\xd8\xc5?\x82\xcb\xcc\x8d\xbcfc\x89\xfe\xa8\x93\x02\xd6\n\xa5\xfa\x13\xba\x19\x0d\x95Clg8\xaf>\xd2>\xab\xa60\xf2\xc15-\x07\xf4a\xe6\xc1>$\x1dg\xa5?ie{\xb4\xa3\xc0\x0cz\x10\xc17d\xee\x1d\xdc\x83#8\xc08\x0e\xdf`$&\xfe\xbf{\x17\xfa\xf4\xd2C\x95\xd2\xa6\xe0\xd8\x9e\x02Py\x17#\x0e\xac\x08\\\xdf3t\xef\xf5\xf0\x00\xf2 \x10`\x0f\x88L\xd37.\xb1\xa0\x0b\x90\xbe\xd2\x81\x0f\x8f\x1eiPo\xc7\xce\xea\xf3\xd1\x87G\x1d\x8b\x7ft\x9b\xcb\xd9/%5\x90\x84h\x07S\x85|2wK\xf1\x9e\x8dG4\xf2\xb1\x84\xb4\x93\x8c\xc8N\xa4X\xbe\xdd\x8c\xbb[\xbb\xa1h\xd4\x1571\x91*y\xeap\x8c\x8fU|B\x87\xe6\xdcS\xc6\x9d\xdck\x8a\x1d)\x1f\xe1`\xf4|\x9b\x8a\x00\x90q;\xb8\xb3\xf9\x92\xbd\\,2\x96\x9bBz\xeb\xcf'\xed[\x9e\x8c\xc1\x92\xab\x80>\xff\xd7\xb8\x89\xd6\x85q\x9e\xfc%d\xd7\xe5u6]\x9c\xad>\x92Wc\x9c\xf0o\x93m<\x0f\xe3\xe5q\x14\xb28\x7f\xcdf\xb9\xeb\x0dV\x88'\xed+\x14H\x8a\xae\xf8Z\x0f\xc2\xf6j3YM\xe2j{\x95\xc5N\xbcc\xc3Q\x02zm\xa1n0\x05\xf2\x13Xp\x88\n\x91^<\x85\x19\x1cQ\xbc\x01Z\xc91\x04\xe2\xc3\x06\x8e s\x03N/\xf9\x9b\xa2\x00\xb1\xd2\x06\xccn\x80\x81\x19\x8bs\x96\xd6\xb60\xed\xb0\x8b\x99\xdb$]\x94I\xe1>\x1c@\x8f\xa3\x0b\xc7\xaa\x96]\xe7\x85=OL\xefS\xe6\x94\xe5\xc9f\x0c\x81\xbd\xc0:\xb9\n\xe3e\xc7\x0c\xfcP\xd0\x86\xbd\xbd\xfa!\x90|\x1a\xc6\xc3\x81f,\x80\xa7\xb1\x14.\xdfX[Jca\x833N\xbdUN\xb3\xa4\x14?\x90\x7f\x9cDl]s \x04\xc1G[\x17C,\x82\xd0E\x88\x9f\xfd\x17\x1a\x91\xc5\x8f7\xc9\xa6\xcb\xd0\xd0j\xef\x9a\xfb\xa0x\xd7j\xe0\xd4n\x18/\xc5\xc8yo\xea#/k^N\xa4\\\xddd\xe5\xd2l\xde$\x1c\x92wL]\x81\x9bkIN\xa9P\xa0#\xac\x95\x978\x8cc\x96\n\x89\x01\x97y\x86\xc8Bov\x1c\xa3\x00\xadn\x8b\"\xf5T+\xa2\xe6\xc9\x86\x93 \x14\xde\xe2A\x82,\xca\xb4\xfb`\x06W\x83\xb75\x06%\x0drv\x86\x1bQ\x8b\xeah\xa3G\xd2N\xd5\x08N\x96D2e(i \xcb\xaf \x9c\x03\xef\x8ek\xff_\xbb\xed>k@'h\xec\xe8S`M\xc9\xe7\xac\x04^~' \xdc\x15S>\x0d\nw\x86/\x01/\x7f\xa8\xbct\x82\xf9\xfc\xe4\x8a\xc5\xf9\x0fa\x96\xb3Xd\x0c*L.{b\xcaq\xf2\xff\xb2\x98\xcc/\xf8\x9a\xb9%\x9ac\xbc'&E\x1ag\x15fy\x92\xdeV\xad9\x9bm\xb6:\xcb\x83\x9c\xcc<\xa2\x90y\x9d\xb8L\x13\x92 \x08\xe1\xe05\xe3\x85Qj\xd4+\xd7%\x0b\xcaT*>\x0fj\x95\xf9\xe8\x82m\x9e8\x9e\xda\xdc\xea\x82\xb8N\x94\x04s\xc7o\x87 \xeakWE\xb1ql\xeb \xde\x06\x91%\x86=Wq\x1a\x86\xbdI6\x19\xaen\x9b\xe7\xb5|\x18\x86\xe8&K\xdc/,\x16\xdc\x8cRH\x15\x9f\x12T\xf1\xc4\x8bAQ\xce\x06\xf7\xb0\x87\x97\xf3\xc40e\xb0\xf7\xc1*\xc8\x10\x92v].iUL\x06\xa8\xd0\xb8\xde\xa0\xd0\x08\x9aO\x0dZ\xedC\xd2h\xa7 {\xc9\xa4x\xf0\xed\xed\xe9\xdc\xadM!e\x0b\x99\xc1\xef+\xc7\x9b\x8e\x9a\xf2\x05\x83t\x8ek\x1b\x05\xd4\x0c\x05$L&\x850\x99s\x1e\xc3:\x88\xdc \xe4\x98D\x08\xe9\x9c5\xb5+\xf4Cx2\x81\x14\xc8 \x1d\xd0\xff\xdc \x124\xa8\xa8\xd0\xac}\xd9\xa1\xd9D\xb6\xf6L\xae\xebW2\x8aO\xe1\x86\xe5\xb8?}x\xf7.\xf34J\xe5\xbe{\x97}\xf87\xcf\xe4\xc2i\xc5\x9aY\x14\xce\xdewB\x99\xd2\xb1!\x1b\xe4A\xbad\xf9c:\x89q\x9e9\"\xd8L\x1e,_\x04k\xf6\xd8\x13G\x9f\x9b eq\xfe\"\x997$\n\xdfs\xf7\x90\xb1\x8c(\xe0\xd7\xe0z\x15\xceV\xa4&`\x1a\xc8?\xb3[\xfa\xb5fy\xa0~\xcc\xf24R?\x82\x88\x97j\x8c\xfd\x82\x16\xc86h\x94\x90\xa8\xa8\x94\xa2\x10\xf5\x08d\xe52G\x95\xdf\xe3\x9a\x91\xbc\xfa\xc4\x1a5\xd1\x80\xb6\xb9R{\xca?\xd0\x88\xac\xb8\x96\x82\\\xc7\x8d\xeb\xe7k\xd5\xa7\x94\x02pW\x90\x06\xdd\xc5\x0b\xb3\x18\xe4y\x1a^ns\xe6:\x9cv8\"\x85A3\xd9\x12\xc6\xfe\xe2\xce\xf6W\x0e\xf9\xb7n\xc9C:\x1f\xcc\xa2 \xcb8\x90\xb5\x86\xfa\x91\x06\xdf\x06\xb7w\xf9D\x0d\x840-\xdcZ\xdcQ\x9b\x89\x10\x8fW\xber\xc4\xd1j\x87\xbdB\x0c\x88\xe4\xd1J;\xb9\xca$\xac\x10q\x8c>\x95.\x01egJ\x19'\x08\xcf\xc94\xd5\x06}W\xe2\xcac'\xd6\xa5?\x15^\x02\x93\x16c\x164\xab\xd3\xf2Y\xec\xcc\x19\xa9\x16]\xff,3\x9c\x0c\xfa\xb0@/\xeb;\"x\xd9N\xb3\x94(\xa7\xa4<\xf7\xef\\\xdet\x8c>^\xfa\xf3\x11C\xbb\xa2\x94\x91\xf9\"\x83\xf4\xac\xc1\xe8af'\x16V\xf2\x07{!\xe9\x07\xa7^~t\xcb\xdea\x18\x9e\xd1\x18J-\xc5[\xad\xc1f\x13\xdd\x92\xa7 \x8c9\xac\x7f\xf8\x00\xae~\xa2\x1c\x9a\x0f\xa0;\xdd\xc9\x13\xc1\x1b\xe9\x94\xb2\xc8\xc9\xe7\x83sq\xc1\xb2\x1f\x93\xf96\xe2\x92^y_0}\xdbX\xcf\xc8\xa0\xeb\x99\x926m\xdc\xd8\xbd\xeb\x19\x02\xa8\xf0\x0f\x07\xd5\x0f\xa1\xf8pX\xfd\x10\x88\x0f\xf7\xaa\x1f\xb6\xe2\xc3\xfd\xea\x07L\xf6\xe0\x0e+o#,^MJ\x85'G\xbc\x15\x94&\xf1\x0f\xb2\x88\xb9\x87\x0f\x1fT\x1b^P\x94\x17\xcft1\xd3\x90\xf4Y?\x83f\x83b=E\x9c\xd5:\xac\xcb\x9b\xb1-\x97/A,2E\xbdX\xb1h\xc3\xd2l\x90lN\xe7\xe5\xe1\xb6;\x02\xaa\xd1\x0b\x7f:\x0b\xfe\x91\x9c(F\xe7\x89Lj6\xcf:\xa9\x9e\xf1JA\xb5\x92\x9b\x0f..0\xfd\xd9\x05\xc5\\\x1b\xfa\x18\x19R\x16\xf2<\x91#\x11K\x93{g\xe3\xc1D8\xc8\x93\xe52bg\xab\xe4:\xeeJK\xa4\xb0\x1f\x0e6i\xb2i9c\xcc\x85\xd3\xeem\xb2\xcd\x9fa\xdb-\x15b!\xb7-\x9b\x8b\x91\x97\x1cG8$\xd5\xd5\xcd\xab>\xc25;\xc3\x896\x17E\xad\x96s\xae\xd7,K\xa2+6?\xdb^\xe6)k<\x0f\xc53P\xcd?'@;\xf9@$\xc6\xa95\x84!KV\xc9\xb5;u\xd4\x0c2\x87\xec\xd9\xe7>\xec\xd9\x9c\x9a)u\xcfq\x10\xcfXt\xccE\xe2\xae[\x869j\x04\xbdo\xde\xae\xf4\xf64\x7f\xb9\xcdO\xe2\xe02b\xf31\xec\x85B\xa7\xac|\xb1\xb6b\xc8H\x03\xc5\xd8\xdf\xa4\x1c\x10v\x1a\xfb'\x80[\xb6a\xb3\x1d\x80m\x13\x98b\x8a\xea\x0fA\x1be,j\x10\x0c\x7f\xcbU\xe60\x84.\x1b\x7f!\xbf$F\xc9\xc11\x87ejs\xab\xa3M8\xb9a\xb3m\xde)q\"\xec2-F\xed\x9e\xc6\xaf\xd2d\x99\xb2,\x1b7&\xf2n\x18c\x1d\xfb\xba\x0e\xf6\x13\xa1\xe5\x8cEl\x96'\xe9\xaf\x00/]\x08\x13\x1f\xc2\xab _\xd9aK\xdd\x07\xc0\xac\xf6\x1b6\xab\x12\x15.\x9b\xfd\xe9\xcc\xf5\xe8\x12\xb1\xa9\xc4\xd4\xe1\x03Wt\xa6a\xf9\xcdt\xebW\xde\x82_\x0da\x7f\x85\x0d\xb0\x10\xf6\xf2\x1eX\nu\xdf\x06R\xd1\x9b\xb2\x00\xd6 \xc9\xc8>[\x13zZr\x8a\xfb\xa6;\x97\xb57\xca\x11\xc1\x87\xad&\x85\xf8\xc2\x07\x81OA\x7f;5\xcf\xe3=\xbb\x1d\x83\xb3\x0e6Hb\xde$\\\x8c\xce\x1c\xf34\x84\xe8\xdc\xd9]B\x1aJ\xf2A\xb2i\x07\x98\\\xc8)\x1d\x89A\"\xc4\xb4\x9c\xdc\x1d\xe3E\xb8\xcc\xbc\xb63w\n&?Of'7\x9b \xce\xc2\xa4\x834\xc2\x85G\xb6\xf9!\x8c\xdf\x87q\x8bX\xb4\xa5\xe2a\xb6\x89\x82\xdb\x97]\xa5\xa3L\xaf%R\xd9I\xff\x8f\xe6\x9a\x11\xa9\xb6\xdb\x0d\xd7\xa6\x10\xc6\xd7a\xfe#\xa2]\xcb\xeaa<E\x94\x82\xce\xb6\xebu\x90\xde\xb6\xad\x1c\xaa\x0f|\xa9Oc]nrP\xd9J\xd2p\x19\xc6A\xa4M\xd99\xf7\xe8\x1c\xc8X%\xa9\x15\x9c\xbb1\xe5\x90,\xca!\x93Eb\x03\xb9 &E\x9b\xae\x13\xce\x9d\x961o\xf0.{I\xc6C\xe3\xa3\x0fM!\xf9Ah\x1fxt!s?\xa0X\xd9\\\xe7\n&\x10\x15\xf7\x0f\xd5\x88\x9fNd\x84\xd9Bm\xce\x07A\x14%\xd7o\x04\x01QlE\xc1~\xf9\xfbwI\xea\xd6\x97b\\m\xa6e9\xd6\xf6-\xc4\x88Wa~+6\xa3:\x18\xf9\xb9I\x08ou\xb6\xe2\x8f\xb6\xefcX\xb4\xe0j\xf6\xbc\xc0;Eb[8\x8f\x06\xd1c\x985\x97\xad\xe3\xe9\x18\xb6\x9d\xaaT\x90\xb4\xd1\xfd\x89?\xa5]\x1a\xc3U\xcb\x1c\xc4j\x8fa\xdd\xb6B\xcf\xb6\xf9*I\xc3_\xf8\xca\xe4\x83`\x9b\xaf\x8aM\xd3\xbf\xba\xeb6\xc2H\xba\xd9\x18R\xa9\xa6\xb9\x1b\x1f\x9c\xc56\x8a\xc8\xb5<li\xe0\xe7\xedz\xf3&\xf93r\x13\xe4\xb0\x03\x07z\x02\x7f\xa1\x07\x8e\xf8\xd9E&\x90\x99B\xc758\x94_\x8c\xf8\xd0\xd6(n\x99\xa9M\xfc`l\xd2\xda\xe2\x0e\x06\xb6&\xb6;\x93\xe1\xa1\x9e\x87\xf3\x1f\x93m\x9cwd\xbcmL\x97\xc9;\x87(\x02vS\xbc\xd5=\xc5\xddto4\x10\xe9\x94\x0d\xfd[y;6\xf5\xfb\x0b/\xdd_\xc3(z\xcdf,\xbcb;\xc9.mkH\xa2\xb1\x84\xb8.rq\xa7eN?m\x99s::+\xf6TeH\x96\xcb\xfd\x19Z\xa2Y\x0c\x05\xa1\xe8\xc6\x95\x1dN\x7f\xa3\x1dNY<gi\xc7\xedl\xdb\xcd2F\xb4c\x02k\x15Yw\xb2\x94\xb5\xabLIg\x95\x89<b%\x93h\x97_Y\x89\x13\xb4\x0b\xb0;\xd8\xf52\x1aJ\xc1s\xdb\x85\xce\x8eh\xb2\xc1\xa2\x8a\xa9\xb4pe,\\b\xb2\xed\xe2]W\xdc\xbe\x12e\x11\xd4\xdb\x05,\xb6\xb3\xf8\xbf\xd4k\xed$\xfe\xdf\x8a\xf5\xac\xcbI\xcd\xf5.KJws\xd9\x8b]\x8d4\xd7\xbb\x99\x14N\xb0\xb8\xb8\xb1f\x88DY}n\x8a\xf2\xa8\xf25\x97\xa6<8;\xe9\x95\xc7Z\x95N3xO\xd0\xb7\xcdW\x9d\x8a?S\xc5;\x0e\xe8%\xe1d\x90\x1dvj\xff\x95*\xde\xb1\xfd7Xa\xd1\x02k?\xc2\x04N\xca\xdaYc\xf9\xd3&>'OO\x16\x83\x1f\x83M\xab\xd2\xfe\xb3\xd0\xf4\x17x\x13\xfcOg^\x0b\x8b\x03T4\xc6p\xda\xdc,\x7f\xf2`\xd9\xe9\x86\x05\xa7\xdfV\xef]\xfd\xc9\xa4\xee\x91[\x14-\xfa.\xf4,\xc7\xc2\xdd\xf4g\xce6)\x9b\x059\x17\xf1OI\xf3-^9B]3\xf6\xa5\x15\xa3\xee\x9a\xccS\xf2!\x0e4\x86\xa4\xbdh\xa1\xa7t\xb8JQ\xd6UZTi\xa8\xaa\x8a-j\x19\x96\xaf\xdb \xc4\x82u\xb7X\xb4\xf7R\xd2/;\\\xf0SzU\x8b.\ne\x15\xaaE\xf6\x80\xbaN\xd9B\xf2AW\x81Z\xf4O\xb0\xe8\xc6-\xda(4\xe8\xc7-B\x12X\xd5\xfd\x16\xce\x0ff\x89\x96\x04b<\xd2\xa9}mo\xb0f\xd6\xd5\x9a\xebzB\x04P\xf7_\xd7\x1fa-\x89\xa4\x89V\xb8\xb5\x0b\x8f\"\xf7\xc7\xb6\xabb\n\x9c\xc7\xf0s\xf3\x8c\nm\xba\xcdh\xdf\x11<\xba\x82\xb4v\xb6-\x96P{\xd3\\\xb5tR)*\x97\xde\xb5U\xd7\x0eiUu\xed][uqD\xa7\xaa\x8a\xdf\xcd\xd5\xa4<5\x86\xcb\xf6\x82\x82\x95\x8f\xe1\xba\xbd\xac\xe2\xe3c\xb8h\x19y!$\x8c\xe1e{Y\xad\xe5W\xcd\xa5K\xf2\xd0\x18\x8e\xbb\x94\xd6Z?k.\xaf Och\xd9\x9d\x92\xe44\x86g\xcd\xa5u\xc1r\x0c'\x1d\n\xa3T9\x86\x9b\xe6\xa2\x8bx\x0co\xac%l\x87\xab\xb5\xb7\x1f\xcf=\xbfrO\xe4\xa3\x9b\x0d^mSfJ1\xb9\x92\xe4\x02-\x1d\xb5\xb3\xa9\x12s\xda\xab84\x16t\x00\xdd\xc7J\xdf*\xbc\xa4Z\xd5\xc4\x0c\xaa\xb2\x84\x8d\xf2k\xc6\x05\xcc\x15#&\x00\x13\xa0\\\x14\xbf7\xc7\xaf\xc8\xe6\xf8\x15\xd9\x1c\xbf\"\x9b\xe3Wds\xfc\x8al\x8e_\xfc\xc3Pw\x1a\x8a\xc8\xb9\xcb\x92k\xfa\xb7\xf6\xd9\x9a5\xfadi\xfeX&k\x8cv\\ip\xc7\xf2?\xd9\xe5Jx\x18bq\x992\xa7\x9a\xd6\xc8\xe8\xd4\xf8\x19\x07\xa7d\xa0Z\xb2\xfc\x07$t\x06)\xbe\xab}j\x17\xdbT\xbe\x83\xaa\x1c\x9b\x14\xdf\xc1l\x9b\xa6\\\xbch\x10t\xd1>\xe9\xc6\x98T\xbc\xd1y\x0d\xef\xe8\xb6\xceO\xab\x90Yd\x1dg5r\xa4O\xeb\xd7\xf0\"\x11\xdc\x03D\xf0\x19\xbcS\xe0|\x8d\xe7\xf5_;\xf0ug\xd2Z\x86\x00\x93@\xd5bg\xfc\xa4=T@a\xb3\xe6\xb6\xac\x06\xa3\xa50\\\xfb(\xcf\xa7\xcc88\xd3\x90\xed\x99\x18\x87Nwg>\xccj|\x84Z\xff\x171\x16\xcf\xfftb\x8c \x8b(\x15\xfa\xd5|a\xb0\x8b\xd3\xac\xba\xf0\xc3WL\x91_\x15_?\x82 \xe5 u3\x8fr\xe8\x0f\x1f\xc3\x0c\x9e@\xf6\x18f\xbd\x9e\x07\xd1tv\xae\xd7\x9c\xce\x0ca\x01\xc5R\xc6x\xe1\xd1\xe6\x9c\x8b\x18\xd8\xca-fA\x14 \x96\xc1|\x98\xf2\xba\xe72\xf4b\x84IZ\xc3\xc1,J\xb2N\xeeV\xc2\xc5J\xb7\xfd\xa11\xfc9G\x85\x10\x7f\xbbU\xffz 4\xc3\x8bZ5\xa6\xc77\xe3\xb7\xe0\\_\x96\xe4ub[\x1d\x0d\x9eqwcj\xba\x03;\xa4\xd3\x15\x96\xa6\x1d\x86\x10\xeeb\xf1\x0e\x84\xf1t\xf0\xec\xec\x8d\xbd\x14\xdfm\xed\x04-\x90)m\x1b\xcc`\x98\x0e\x15\xa1)\xd6\xc1\xa9\x81sS\x8aT\x87\xaf]f\xcb\xd0\xd0\xc6\x8a\xe7\xe1U\x8dT\xeb\x8f\xbaV5\x06g\x1e\x06Q\xb2\xecoo\xacWq\xbfH7\x97\xc1\xec\xfd<M6\xf6\x8e\xbc/\xd4\xd3:\x99\x07\xd1\xaf>\x1f\xea\xe57Z<9\xa5>^\xcf\xff\x8d\xfaZ\xb1`\xfe)\x9d\xad\x0e\x95\x1c\xe8<\xbb\n\xc2(\xb8\x8c\x18\xea\xfbI\x1a\xfe\"\\\xb8\x9a6\xfbr\x9b\xe7h\xe0\xb5\x0f8\xbf\xdd P\x89\x92\x9d&\x86\xfc\xa0\x8f\xd3k\xa8\x91\xc4\xba\xb9 \xeb\xec\xbc\x02\xd9\xd5\xb2q\xf4\xd7\xe1<_\x8d\xc19\x186\x0cd%\xa2;\xf0R;\x8f`\x9b\xd5e5\xfdY\xa5l1\x06\xe7+\x9c_\xc3 n\xa20~\xff}\xa9\xb0\x05y\x91\xe9~Y\x00\x9c%q\xce\xe2\xdc:\xfbh\x80|\xee\x8c\xfd\xcd\xf5\x06\xeb`S\xcaI\xdex\xfd\xb7\x85~\xce\xda\xcc\xb6\xc8~[\x0e?\x9e\x9d\xbdi=\xf0\x98\x17,\xc1\x1a\xb7D>e\x13X\xcb\x19\x96\xce\"[\x0f\x81*\xa6\xb8\x96\x93\xdb\x92\x91\xaf\xc5\x00\\1{\xd6\xdd\xa1\xe5c\xb3\xb4y\xf8\xd4\xbe}9%\n\xdf\xfeK_\x12\xcf\xbf\xf4\xa5\xff\xc5\xfa\x92\xe0|]4\xa6\xce\x97S\xf2\xeez@\\\xd7/\x06\x1a}|\x93\xa8\x83g\x9bI&\xafim\xe6\xd4\x15\xffR\xda\xccO,\x80\xac\xac\x8dy\xa4\x8b(\xd9\xedU\xb2\xd9n\x1c4,6+u{{\xbb)>\x89\xa8\x13\x14\xee\xce\xde \x0b\x7f\xb1D\x13\xf9\x92:\x10\xef\xb2\x7f\x9d\x06\x9b\xcd\xa7\x08\xbc\x1d\xe4U\xad\xb3\x04\x8e\xc0\xb9\xccc%\x113\x88\x92\xd9{6w`\\\xfd\xb0\x8d\xc5\xa7\xae\xf2\xaa\xf8\xb5\xf3\x14\xb2M\x10kR\xbb\x1c@\xa3\x98\xfe\xcf\"\xe5\xe2\x82\x7f\xa5\xad\xf1W\x1d\x96U\x13|\x1b\xea\x9bG\x8c\xf4\x14\xddkm#\x8f\x85u\xf8_\x92\x0d\xfcK\xb2\x81\x7fI6\xbf\xbddc\xbd7\xc0\x06Y\x9el8\xd4\x07\xcb\x80\xf8\xb0\x99\xff\xc8\xcb\x05\xd2z,:\xb1\x88&\xe8lop\xa9\xff\x9f(\x8e\x94\x1c\xd5?\x8dy\xef\xc6R9\n\x96\x85\x94\x8b\x0b\xceH5\x9am\xf8\xda\x81\x0b8A\x1a\x06\xfd(\xb8d\x91c\xea\x06h\x9c\xd6\x8e\xe4\xf7\x0e]}!>\xfeO\xc2\x93\xd9g\xf2\xe4\x86\xfa\xe6\x11\xff/\xb4\"\xcc8K\xad\xf1\xd4D|\xa9q\xe1PV11\xdb\x99\x89\x0bo\xc5\x87\x1a\x17\xce\xc4\x87\x1a\x17\x8e\xc4\x87\x12\x17\x9e\xc9\xc8G3\x11\xf9\xc8\xc4\x8fg\xbf=?^t\xe5\xc7\xb6\xb0EU*l\xe5\xb9W\"\xafz\x95\x98[}g\x92:\x0fl W$\x16+\x18$1\xa7\xcd\xc7\xab ^\xb6g0\x02\x8d\xcf\xb1A\x1c\xac-\xbaXP\\[\xab\xb0\xe8\xbf\x7fDL`&\xf4\xe3\xfc.\xc3\xbb\xee|H\x9d\x06S\x0fb\xc7\x1b\xa9\x1f\xdf*\x15\xca\x0d\xc8\xe3\xd7\xd2}\x94,M\x91tv\xe8\xbfY8\x08\xda\x14t\x8a\xab\xd0\xc9@B\xc1\x154\x93H\xcd\xe6\xdd\x1a\x80U@\x819\xa25 \x1d\x19\xe4 \xc9w\x96\x99\xc5b\xcd\\s:\xd3\xa0~\xec\xbe\xc3b\x9a7\xb3\xe3Y|P\x84\xfa\xe0\xbf,8\x0ee\xd9)3\xcaN\xc1?@vj6\xe2t1\xf6\xc4U\x00i\x83\xa5\xee\x87\xeeyW\x1bR\x88\x85\xbb\x9d\xd0\x07t\xd2\xcd\x91\xff4g\xeb\xa6\xabH[*Jy\xe0\xda\x8cO\x19\x15\xfe\x96d\xc8\x96\xa3\xf6\xa4do\xb2\x97\xa5\xc0\x19\x8b0\xcaY\xfaIH\xb7\xb77\xc3k?\x96(\xea\x80\xd8g\xef\x7fc\xee\xbfc\xe7r\xe5D\xd4]\xbc~\x94\xdfnXC\x8c\xd8\xa6\xc1\xcc\xbf\xcc`&;\x0c\xa6Q\x8f\xb0\xdd\xbf\xd8\xdd\x088K\xe2<\x08\x9b\x0e\xd9\xf7\xf66h\x95\xe4b\x87\xb5\xdfE\x92\xae\x1b;Nb\x8a\xf2\"o\xa5(6h\xebvS\xa6\xf6mI\x97Z\x16&\xe8t\xc2\xd9v\xba7[\xb1u\xd0z`\x18\xe3\xf2\xb6\xb4\xb5\xd3\xe9\xa6.\xc3\x8c\x81\x95d\x9a\xe6\x9a\x81vy\xad\xe5\xdeK\xf9\x08\xf5\x13\x8e.\x0bN\xea\x7fA\x00\xbd\xcc\xe3VK\xb5\x00P\x8e^\x0b\xfa\xf3\xc8:\x82\xack\xef\\e\xa6\xa3yi\xa3\xee\xac\xcdjR\x96m\xc8\xce\x0fX\xc6\xf1`\xfciC\x15\x1e!\x84H\x1d=B\xeaS*\x00\xc4\xba\xb8e\xeb\xf8'\x8d\xb5e\x0c|\x8b\xe7I\xdc\xe4\x97\xb1\x83\x97\x8as\x8cn\x1bh\n\x9bs\xa25o\x03 \x01\x94t\x18\xf0E 7\x9b%\x1b\xd6\x9f\xb3E\x83/\x87\xa5\x9bMq,q\xc6[\xc9 H\x19l36\x87<\x81e\x1a\xc49\x041\x04\x9bM\x14\x8a\x80\xd3\xf3p\xb1`)\x8bs\x88\xd8\x15\x8b2H\x16\x10\xccf,\xcbx\x95y\x90\x07\x90\xc4p\xc9VA\xb4\xe0\xdf\xf2\x15\x03\x16\xcfy\xa3\xe9\x00N\x82\xd9\n\x9e\xbd:\x85up\x0bs6\x8bx\x7fI\xcc Ia\x9d\xa4\x0cp2\xd9\xa0i\xf7\xf5Q\xf3\xa6R\xf6\xb7m\x98\xb2\x0c\xbbZ$Q\x94\\\x87\xf1R\xb6\x04Dg\x80b\xe1'1\xcb\xe06\xd9\xc25\x9f\x9a\x9ac\x9e\xc0\x19\xa5\xd1\x85\xb7\xa7\x03\x07\xe3\x03\xef\xc6\x81?\x8d\xfb~\xac\xbb\xd64J<\x9f\xcb\x91A2\x9f\x06%\xc5\xbe\xf0\xdb\xb6\xa6w`\x00\x92\xbd\xb5\x05\x8dA\x10oR\xa9\xda\x19\x04\xa7z\x9ft] \xeal\xa3\xa2\xe4b\xbf7\x1b\xd5\xef\xf2<\xc8\xa7?,\x96\xa8\x7f\xb6\x93\xa1\xffy\x17\xb6\xbe\xa8\xda\xdd\xa6T\x8b\xd0\xaaH\x0b\x9aUo2\x905\xeb\xdc\xbb9\xbaw\x93kC\xe5\xe3\xd1\x16\x1a(\xd8\xc1}^h\xdc\xc1&\xfc3\xbb\xe5\xc3hR\xa4#*|\x19d\xe1\xac\xad\xecL9\xd17+\xdb\xb9\xce\x9a\xcc\xda_v\x1db\x06\x93E\x13C\x9a\x05\x19\x031\x0fgl-\x06bh\xb6\x83\x8dV\xce\x02\x1d\xb5&\xe8\xae9AW\xed j\xfaJ\x87\xc8\x1c:+\xec\x10\xf9c'\x0d\x0dHF\x15\x1a\x9a=\x8d&4\xe8\xf6\xf2\xb9LY`9V\x05\xb5\xbf\x08z\x9f\xb1\xbd\xd1\xbf\xb6\xf7\xf7\xb9\xbd\x92U~\xf2\xcev\x928A\xedn\xf3\\|p\xde\xc6\xef\xe3\xe4:Vas4'nTB\xc1\xf1a\xd1\xf5v+t8\x0bo\x1b?\x8d\x1bz\xe0\xf4\x7f\xde\xae7V\x15\xcb\x90h\xe6\x7f\xf8 \xe8\xefR\xba\xfc\x97L\xf9\xbfD\xa6\xe4\x82V\xd2@HU\x1c\x00\xd7A;E\x93\xd0\x14\x17e\xd7,\xcb\x82%k*\x9d\x16\xa5\xb3d\x9b\xce\xac\x02\xd4\xe7\x92\x1e\xdd\xc6\x83\xb3\xb5\x85m\x05\xcc\xd3}\x1b1\x13\xe4\xea\xcfe0{\xbfL\x93m<?N\xa2$\x1d\x83\xf3\xd5b\xc1\x18k2\x86\xf1g&J\xa7\x8d\x1e$\xfcY\x07\xe92\x8c\xc7\xe0\x8c\xd8\xdaL+\xc1J\xaa\x1b\xbd\x80\x1bW\xaa\xd3\xe4sv\x93\xbfI\x838[$\xe9z\x0c\xce,\xd8\x84y\x10\x85\xbf\xb4\xcd\x9e\xe6\xf4Z\xb8\xed|\xda\xc4R\x1f\x1c\xce\xbb\xf2F\x9f_\xddO8\xfe_\xeaSSc\x10\xbf[\x9f\x9a\x7f\nO\x1a\xe8\xe6M\x03\xbbx\xd4\x80\xb6g\xbf\xa2W\x0d\x7f6T0m\x18\x05\x1et\xb7\x19\x1a\xd0\xdf\xb6\xc5\x84\x10a\x996c\x04%\x85X\xb2\xfc/\x1c\xa6[\x02\x98\xa4\x1d\x12\xa4\x90\x92\xd24v\xa1\xf0D\xf6\"\x02\xbff\xc6\x02\x9c\xfc\xd4>\xd4)\xd5\xe7\xfbm\x80\x1e\xf5\x07\x97\xe7\x1f\x16\x98\xbay\xa7\xa1t#\xaa\xc9\x95\x16t\x7f\xea;w\x8a\xd4\x10\x9c\xe0\xe14\x1c[z\x9c\xfa\x92\xdbX\xd8\xef\"\x94w\x1b\xdc\x83.(u0\xb2\x81\x12\x95\xba\x99\xc4@\x19\xe6\xda\xf7.\xc44\x8d\xcei\xbc\xd9\xe6m1v\x03*\xfb:\xb9n+\xb9\xa5\x92\xc7I\xa3\xb0\x08*\xff$\x1e\x19\x9fp\xc1\xac\xad\xfc\x8c\xca\xff\x18\xa4\xef\xe7\xc9ukX`\xcaB\xe9\xfc C\x9d\xbe\n\xf2U\x9bO\x0e\x08\x17\x96\\\x04W\x12\xa4\xa9\xb9\xc2\x1c Y\x10E8\x85\xcc\xf5v;\xf0\x92\x8fdo$\x11\xf3%9\x9d;\x1e\x9e\x7f}\xba\xe9\xa2\xdb9W\xcb\x19\xea\xean{\x99Y2g\xaaT\xa2\xe2\x04\xbb\x0e\x07B<\x07t\xfe\xff\xff\x0f\\2pz\x8e\xbd\xa5E\x9b\x11\x84\xa2#OU\x16\x19\xcd\xe7\xce\xf1!9\xb7V\xc6\xb4\xb6\x9bF\x87\x98\xd5}\xc3\xf5\xb2y\xd3\x19j\xd0\xb62\xad\xb7\xf4I\xf7\x19\xcb\xf5\x9a\xb3l\x96\x86\x9b\x1c\xa3^7\xcf\xe5\x93\xc7\xa4\x1f\xfc\n\xbd\xa8\xeb\xd6\x96w\xf5\x8b\x8d\xe24\xde}\x0ca\xfc\xd9#\xa0;\x13j\x14\x88\xeec\x07\xc1\xa4\xc1\xf1\xa04\x18\x07\xbe\xc1\x07\x1a\x9dB\xb6mC \xdb\xc0Dx\x8ep\xe5\xabE\xcd*L\x9e\xf2\x92\x06\xfel\x82%\xcf\x87yS\x98\x8a\xae\xde\x83\x9f\xe4g\"\x1fT\xcd[\x0f\xb2\xa1\xfd\xe4\x1d\xc0\xea\xefD\x9f:\x0b\x1a\xa6\x80\xa9\xa6\xc3\xec\xf2\x907m\x97\xd3u\xc1\xa2N\xbbK\xbb\xa67e\xdd\x85+\x91\xfa\x8e\x15\x97\xbcZN\xe3\xc8[6\x0f\xd2%\xcbi\xe3\xede\xe5\xdd\xb7\x8a\xbf<#\x91\xbcmg\x85\xc0ega6\xf6\xc5\no\xfd\x10\xd3L\x87\xadz\xfc\xbf|\n\x8a\xe7\x93\xac\xbe\xffd>\x05\xb0\x9bN\xde\xe9f)\x88\x9e\x7f\x83\xc4\xdc\x0b*\x186\x8cb\xdb%|\x05\xdf\xd1m\xab\xde\x11a\xa9f\x9d`&\xf3a\x0b\xc1w\xb0\xcdXj\xbfP#v\xbfK\xf6RR\xce\x1b4o\xa9\x9c7\xccS*\xe7p\xd4Bs\xe4\xa8m\x8a<\x7f>r\xf0\xb4\x9a\x19\x7f\xeb\x94\xa8\xffp=\xbf\x8bc\x06\x94\\HZ\x95\x0e\xbaM,\xf5\xfcX\xd3\xf39\xda\xd8\xd6\xbe\xbe\xf0\xffK\xb5\xfdv\xed}\x978\x93\xf0;\xd0\xf6\xa3O\xd3\xf6wS\xdf\x17\xbb\x99\x08\x0c\xda\xbe\"z\xedj\x7f\xf2\xab\xaa\xfduc\xa3\xfetP\xfb[N\xccH#\xb1GH,\xd4~\xe7\xdb \x0bg\xe5\xe8\x88\x8e\xbdj\xab\xce\xdb\xac\xc3\xa7]tx\xfb\xb0\xad:\xbc\xadJ\xd0\xb6\x14\xad6\x89O\xd7\xe1?yLU\xdd\xf5\xad\xe4yR}\xb5V\xac\xa8\xaf\x8e\x0f\x1b\xfc\x9f\xeb\xaf\x0d~e\xcd\xc3\xf9\x82\xfa\xabpC\x9f#q\xa7?[j\x10\xafw$\xde\xfe*\xfa\xf1\x17\xdb\xa8WA\x96]'\xe9|\xe7\x8d\xd2\xed\x0c\xbf\xde>\xed\xbe\xfa\xc16O8g\x8bX\xcew!f\xd7\xfd\x8d\x98c\xb7}\xebXZ@P\xc7\xd2\x9f\xb6\xcb_\xc4\n\xf2Y\xde{\xff$V\x10\xd3\x11yy\xc8\x8b\xdf\xbf\x15$\xd5\xac \xf6R \xda\xf7;\x18I\xd2\x16\x99\x8d\x1c\x9b)\xb5\x176gf\xe0\xc14<\xe7\xb2\x85\xaf\x9b@\x9a\xe4V\x94q\x03\xf3n\xa2\xe5\x84Y\xa3\x0b\x94w\xf5\x9f\xc9\xc7aa\x8d\x1b\xb2\xb0\xf98,l>\x0e\x0b\x9b\x8f\xc3\xc2\xe6\xe3\xb0\xb0\xf98,\xc8\xb2R\xfe\xc0\x05Yw!M,\xfc\x8fGw\x1fxf#\xcb\xe2\xb77\xb2l\xbe\xa4\x91\xe5\xf7\xe6\xf80\xff]:>\x04\x9d\x14\xee\x85*\xd9A\xc3\xe3\xbb8\xe3 B\x17\xf8\xb3\x06\xc5\x07\xa3\x98\x0c\x8a\x04d\xae\xd0\xc8\xed5\xae`Bb\xf7\x86$\\%j\xb5f\x16]Wj\xce\xa2\x90\xc5\xf9\xa9H&\xba\x1a\xc8\xdfm\xed,\x8d\xed\x9c\xb1Y\xca\xf2r[\xf4\xae\xad\xbd\xdbJ{R\xacx\x8379\xb0\xb6\xc8Q\xd8\xbfL\xe6\xb7\xceg\xbb\xa7\x04\x9b\x0d\x9d\xb5\xad\x06\xe2O\xfb\xe0\xbe\x84+\x0b]\xdb\x1c\xc3\xf4\xbc\x01\x14\xc5\xe27\xa6\xdb\xd4W\xb51\xb9favkH\xea(\xd7y\xdc\xb8;\xfan\x8c\xe1\xd6X\xee\x1f\xe0\x8e\xf3\xab\x18\x9b\x9a%\xbd\xaeaU@\x85Vi\xa3?\x00\xbbEV\x81]\xa3\xab\xc0\x8e\x11V@\xb0\xe1\xbc\x83\xcdkKS\xec\x96/\x05\x8a0+\x9d\x8c^\"\xa9I\x07\xa3\xd7\x82Jv0zm\xba\x86y\x01\xe9J\xb2\x83\x85lE\xe5w\xb3\x90]Q\xa5\xae\x16\xb25\x9e\x1b\x84\xd9\xcbgg\x87\xcd%9\x89^\xbb^-\xfe\xe01\xd7c1\xea ^o\xc7\x9f\xcd-\xdd\x16-\x11\xf59N\xd9\x9c\xc5y\x18D\x19\xb5T\\\xa4oi\xea\xff\xb2\xf7\xef\xebm\x1b\xc9\xa28\xfa\xffz\x8a\x12fN\x06\x1c\x93\xb0(\xdf\x99(>\x89-\xef8c\xc7\xde\x96\x9d\xcc\xda\x1ao} \xd0$\x11\x83\x00\x02\x80\x944\x89\xdfe?\xcbz\xb2\xdf\xd7\xd5\xdd\xb8\xf6\x0d\x94l\xcb\x19c\xd6r(\xa0\x80\xbeUW\xd7\xbd\xe6\x98\x04\x06I\xfc\"6/\xeci\x0d\x8eu*I\xc8\xe2\xf9\xd9\x91\xc0\x9f\x14\xfc\x96\xfeSg\x98)\xba\x9d\xb9\x07\xdf\xf7\x0d/\x1e\xa1\x15\xe6Cj\x16\xe5\xc2\x82\xb8t9u\x80W\xc5\xdf;\xbaT\xa7\x9c\xad\x1fG![\xbff\x88\xbf\x08\x040\xf4\x0fsC\xe8;y\\/dK\x1dgT\x9a^\x99\xaf\x94?\x06\x07\xdc\x17\xdfm\xca\xd5\xc1\x18\xe8\xed\x16\x1a\x823\xd2\xb9\xbc\xacL\xca\x02\xbd\x0e\xd57\xe8P\xcb\xba\xca4\xe7Ft\x1e/\xab;\x0d\x9dj\xbd\xf5\xd0g\xa7\xff\xa5J\x9b\xc8\xde8\xd6\xb9\\mM\xc3\x14\xaaU\xd9Zj\x868\x86\xb3\x1d=\xbd\\'Z\xd3\x11F%\xc3\xcc9\xdd\xf8s\xfc\xb9\x1ci\xbf\x99\xf5?\xc9R}\xbcy\xf5l\x80{SRo\xd8\xea\x13o\xf2\x98\xe5F\xa9\x19\xd5~\xef\xea\x9f\x17\xd6\x1d}\x9d\xbe#\xac\x83\xd6\xfds\x1a\xb8\\\xd2\xd7\xab\xcei\x1b\xd4/s3F\x077\x88zm\xc7\xe0<\x89\xd3\xb3\xe13\xca6\x1e\xfa\"\xd6\x93\xb8\x87\x93\xf8\x10!5\x0e\\\x81i\xe7\x1b\x01*=\xb0~\"V\xe5:~\x82AB\x98\x01\xe5\xb4\x92\xb4\xb4\x13\xb2ij\xff\xcf\x068\xaf\xb57pe\xf9\x12;X\xf5\x19\xa3E\xa4\xf4\xe71\x15\x17\xa6\x9a\xf8y@UE\xf1\xaeL3\n\xa8\x1b\xa0r8\x11\xf2u\xa6\xdeDa\x7f>\x0dl\xb7\xb5\xb9\xc2 \xfd\xd2\x9f\xe0'/a\x83@\xfe\xd4JE\xfd\xb1\x11\xb0\xda*Z\x04\xcc\x9aV\x8d!\x08h\xe3=\xf9\xf9b\x9b\xa5\xb1b\x98i\xa3\x8dq\x96/}\x16\x18'\xc6r\x8a\xf94\xb4\x08\x87S6\x14\xd9\xda\xd4\xae\xa9d\xf8|(^\x81r\xafqR\x11 \xdb\xf3\xb9\x0bV\xbd6\xbf\xb8\x1bfiF\x98f\xdc\xbf@?B\xaeoi\xab\xe9\xb48\xf3\x8aA\x02B\xea\xf8\x95\x81=`i=\xb4M\xd7\x0e\x14W\xd9\xf0o\x1b\x92\x1b\xc6\xfc\xbf)\x08d~\xee\xafII\xf2\x02}\xe6)#\xc99E\xd4t\xaa9^|\xdce9\xbf\xfaJ\x8c\x19\xd9'\xc5\x96B\x1e\xd4\xdd;\xa3\x9f@f\xbc\x01'\x14\x8fZ>\xf5\xea\xe9\x0bk\xf642\x1cf\x15\xd8`\x02\xf3g=\xcd\xea\x89\xb3:\xc8,\xd8\xa6\x86\x9fA\x07\xbd\x0c\xda+\x86\xfa\x12\\\x1aB\xde*+\xc4\x87 m\xbd\xfduE{\xe9\xa3\xef\x93\x82YWl\xf6\n\x03\xfd\xb2_\xda\xfb\x85O\xe0n\x18\xcd,.W\xb5\xdfd\xf8\x7fl\xd3\xbdK\xec\x81=$\xfb\xa7\xf8\x8fe:W{-\x01W\xc2\xee\xb4\x92\x98\x9d\x9d\xe3 \xd3\xef\"\xe6\x9e\x0e\xcb^\x0df\xa5\xa1\xd1\x13\x12\xacS:]j\xe2\xa03y\xc1\x8a\x04\xef\xe6\xa9\xa2 \xb8\xb84\xadZEt1\x9cc^\xdfV\xe9\xc3\xe8\xdea9\xa2\x1c\xb8\x01s\xfc%\xba\x8a\xb7\x84\xfb\x8c\xd9PD\xaf0*(i\x08gpf\x06\xe6[\xa9\x9a\x19\xf3\x1b\xf5\xce ^\x9a \x1e\x19\xb6\x05p\xdd\xe4% 54\x89\xb5\xf5|\xed\xba\xd4\"\x9d\x8a\xb9OM\x0c\x8bJ]~\x170M\xc4.H\x8dTp\xe7Q\x9au\x94\xd0iO\xaf\x96\x03\xd6^r9\xbd(t\xdal\xea\xbfMM\x97\xf2\xb2\xd4\x15\x84$\xb5\xef\x18\x8e\xae\xc2\x03R5\xe0\xd0f\xb8\x1f\xcf\x03\xf2\x92\xf87<\xeb=\xb0\x859G\xc9H\xc7'eC\xda\xd6&\x887\x1e\xee\xbd\x0c\xf8\xba\x9e\xdb$\xc0\xff4}\xaf\xde\xd2v\xbf\x91\x15_\xb3\xfa\x97\x1d\x81Ej|\x18\x90\x1e\x1fx\xe7\xab\x14\xf9R(K\xc7\xddz\xcc*\xc7\xdd\xf0\n\x1cw{\xe5\x95\x94\x94\xa3\x94\x94W\"\xbb\x97Wj\xe3\x82i$\xc0GS\xd6n\xc3\xea%\x1b\\\x04\x8b\xe4\xb9\x112\xad\x1dq\xd0\x15O\x0d\x19\x0dq\xc1\xf1\xe1\x10R]\xe2\x92\x8d\x88\xf4\xac\\\x00\x15\x0en^\x10\x13?\xd7\xf8\x1f3\xc7\x82\x19\xe8Y2\xce]\xf9\xfa\x82\x1c\xc2\xd8\xcb\xe0\xe4h\xce\xbd\xb6\x02\x81\xc7#C\xdffU\xa4\xba\x16\x8c\xaf\x94\x96M\xad\x17T\x9b{6`S\xaa\xcd\x7fK\x9b|$\xe06\x8a\x91*\x11\xbc\xc5mZm3\xe1\x1covw\xcf\xd1q\x02\xb9H\x9doj\x8a`\x94\xc1/D\n\x019\x06E\x0bp\xb1\xcc\xf4d\xca==\x18K\xca\xcbJDIH\xce_,\xdctd\xf2\x97\x8b\xa0\xf72\xaf\xa0{\x92\xbe\xd5\xf8uXy\xd1C\xc3crx\x15\x1d qA`/g\x1e\xda\x8a\xf1\xc1\xb7t\n\x18\x84\xb9C\xa23\x9d\xcf\x0dv\xba\xa9\x9c\xc7\xf7\xb4\x89\x84\x94\xf5\x8148\xd8P\x04\\1\x0e\xb6\x91KOY0\xaa\xd5\x14\x9e\xe1\xcbsX\xa4cPE\xdf7\x16\xc9WO\x02\xe3\x98\xacF\xdf?\xe8\xd4\x1e\xe9\x89\xcdy\xc46\xaa\xd5y\xc4\xe6\xd3\xe6<b\xb3\xa9\x8e\xefN\xad\xcf\x03M6\xef+=\x0crQ\xea\xf1$\x92d\x90\xb3\x8ap\xc9\xf0\xee\xa7\x8dp\x19\xb7s\x96(\xf7w\xcd\xae\xd0i\xe9\xcf^\x9d\x8eO\xb9\xd6U69%\x04\x8b,\x0fT,\xc9\xa6jC\xc9\xb5\x14U\xfd\x04$\xfa\x1bx\x08\xbf\xbf\x87\x19l\xfa\xa0\xb1\xd6k9\xe0O)\xf5\xeb?]h\xdc\x861\xb4[c\x1d\xa0|n\xac\xf7\x0c]\xc1!\x9ct*\xc3\x8br\x0e\xa1l\xa3\xb34\xff\x95\x8e_\x9e\x0f\x9e\x93d\x9c\x9e\xa4fVE`\xa8+\x8b\x98\x11\xf5!j\xb7\xd7A\xdfn8\xed\xe9>_\xfb\xe7\xca\xbf\xbe\xf2\xb2M\xb1r\x9d\x9c\x14Y\x9a\x14\x04\xed\xca\x87\xa8\xd3WP3E\xde|\xd6^ev\x1c\xd2\x1a\xba\x9c\xed\xd4\\\xdf\x95\xf8C\xcca\xcf\xf3y\xc8\xe0\xd8T\xb6^hS0\x87R\xa0d\xe9\xc0\xe1!\x92\xd1t\xc1\xa2X\xc4\xe7*C\xdd!\xaa\xff\x12\xfa\xc17\xaf\x9eV\xb2\x9e\x9bu\x03\xa5(A\xd9b.\x03Vr\xeb\x15 \xa3\x9c\x04\xe5\x9b<n\x03RF\xae\xb1\xa5\xb7\xa3\xd6D\xe5^B\xce\xbec\x8e\xeb\x92\xd3A\x9c\n\x0b \xa9\x10t\xbe\xe1\x13,\xa1\x12dKb\x91\xc0[\xf2\x9c'\x1c\x17\x9e7\xcdap\x86|\x933o\xcc\xa8\x80$-1\xc4\x84\x84\x1e\xbc@\xf0vn\x03\x08\xfc\x84\xc2\xcc d$_\xa4\xf9\x9a\x84^\xfb\x08\xea\xa6_\xa0\xb3S\xaf)k\xfbt\x93G\xaau\xd8\x8eFc@\xed\x9b\x17\x15L\x0b\x17\xa0\x95o\x1f\xbe\x81\xc0\x8bI\xb2,W*\xe9{\x8d\x95$\x90(\x1e\x93\xcc\xcf\xfd2\xcd\xd1\xba\x08\x928%\xd1+\x04Wu'\xf0~M\xa3\xc4]w\xb5\x0b\xef{\xb8\xb2\xac\x12#\xcd\xcb\xd4\x1f\xb9 9\x83\xc7~I:\xf3Q\xb5JY(U\xabK: \x1c\xa7(\x7fZx9\xf1\xe3u\x13\xa1\xf1\x86\xea}\x0e/C\xe9\x0b\x9c\"?\x0cQ_\xe0\xc7\xe8\x07q\x8c\x9b\xe7\xa5\x9f\xfb\xeb\x8e\xe6b\x91\xe6\xe0\xd2\xf7\xe6\x10%p1j\xf6\xea\xe2d\xfe\xb6\xd1\xa5\x93\xf9\x18o\xbdE\xf5h\xbfW#6\x95\xce\xa1#\xeb\xd7i}\xea\xf8=\x0f\xdf>Z\x9f\xd1\x13\xe8t\x0c+\xfe\xd1\xaf\x9c\xd1[\xf6\x93\x8bS\xa7\x95\x84\xe1<t0b\xe2!FH|%\xfb\xdaQu*\xb7;F\xefw\x9c@Bx\x08 eY+\x95\xd9S\xfe\x1c\xd3\x0fl\n\xf2\xbd\xa8\xa3D\xa9)\xa3\x8b\xbfD\x94\xed\x10\x87\xc8\xff\xc2\x92\x80\x0f[4\xb4zHA%_\x80\x99\x1a\xfcI\x9a\xafekW\x85\x9cz\x05\xab=\xf8\xe6\xa9\xd8\xfd|s\xcb\xe2\xf2\x98n@\"\x84 \xc6J\x03\xdd\xf2\x9a\xa6Hc\xdc\x02?\x8e\xe7~\xf0n\x06G\xfd\x87$\xcf\x1f\xcdg-:\xd9\xdei\x8d\xd8Y/\xcdH\xe2\x9e\xd5[\xb1\xc1\xb8b\xdc\xec\x98\xb1\xf4\xee\xad\x03I\x9c\xb3K\x19\xbc\x14\x89I\xde\x0e\x17\xce\xf5\xe1\xc2\xdd\x0e\xb5\xfed\x19\x81\xa6\xfb\xacS\x9f\x96Y\xee\xcc\x06(\x12\xdb\x8b\x8c\xf7\xd2tz\xd2\xc4\xf6\"\xe3\xbd4\x9d\x9e4\xb1=Ka\xdc\x8d\xb9b\xe9\xee\x8bFG?\xa7\\\xf7\x8dpo\xa5\xfew\x0c\xc9\x18\xa21l\xfa\x07\x8eu\xae\xbd\x8a\xe8bp\xb5\xa8\xa4\xc2\xcf\xbe1N\";\x19\x8b\xd1\x18\x05\x81\xfd\xaf!\x80o\xa0\xf8\x1a\x82\x1b7F\x10\x9f\x04o\x9bo\x9e\x04o\xfb\x8dTY\xc7\x0f59\xfdP\x9dm\x95\xd7\x8fW\x7f!c8\xa1\xef\xbe\x15:\xa8\x18=\x1e\"\x8f+\xf5m5\xcf\xc4&\xc1\x1fO5\x96\x91\xc0(\xbfs\xcd\x81/\x13\x0d\xc5\xc5\xe4\xbf5)W\xa9\"[{\xc9\xa4\xfcW\x9c7u\x931\xe4(\xa1\xf2\xdb\xe8F\xc9\xee\xf6\xde\x7f?f)\xc1z\xc1\xb5\x14Y>\x8b\"9\xa6@\xb09\x8b\xe5\xd4\x19\x89\xba\x06\xa2y\x99Lp\xee \xcd\xe6q\x1a\xbc\xc3\x12\xeey\x1a\x9f\x9e\xceK]\x08c\xdbF\xc4\xff\x92B3\x0b\x11\xf1sI\\\x94\xb1\xde\x89\xa9\xce\xc9\xf5\xcc\xa1\x8aD_\x9a\x03\xe4Z\xd69\x19\xb3\x1f\x07X\x15\xd9\xbd\xf7y\x9c\x05\xd0\xd29\xad\x88\x1f\x92\\b\xf53\xed\x19\xbb\xe0\xc9F\x98\xa1\xa0=\xc0\x9b\xd4\x17\xb2\xce\x1b\xd9\xc1\xbb\x12L{\x81\xcc\xc9N\xea\xd1\x86\\d\xfc(\xc3e\xae\xe9\xa2I\xfb\xe1\x8e\xc1\x81u\xe1\xe8G\x1d\x1aGm8\xf3\xa1M\xa0%Y^\xc6;gr\xb1\xa9\xa7\x06=*\x06W\x9c\xdb\xa1X\xa5\x9b8\xac\x08\xe1\x9b,\xf4K\xdb|\xac6\x15\xcd\xeb$\x0e\x9e\xd0\xf9\xa0tI\xea?\xff\xf8\xa3 E\x0fq\x0e\x81?\xdbO\xd9\xf1\xcd\x9f\xf3?\xda\x10aTd\xb1\x7f\xc11\xeb\xb1P\x7f\xb07\xe4\x0f\xa5c\xf8\xdcR\xb2\x8a\xe9\xd4\xc3\x0eM\xca\x9a\xd6\xf0\x06C=T\xd5\x8e\xe5\x93\xac\x7f\xd3\xafx=\x0b3?T\xcax=\xc7\x07\xfc\xc8\x12\x98\xa2\x87\x0c\x98\xf3\x00\xba\\<\xdfPi8\x14\xe4\xe9!\xf8\xde\xbau\xebI\x9a\xbb\x9b1\x14#\x98\x81\xef\xe5\x9d\x9b\xfa\x86B\xa8\n(S\xa1{cL\xa9\xb0\xa2\xa7+\xcf@$\xd7\x974\xafm\xfd\xf9\xea\x10\xf1\xca\xf4\xc7cSE\x97u\xfdb\x92\x96\x8f\xd3\x00I\x12\x86\x87k\xdf[\xd6\xef\x11\x9b\xf4\x1d\x175<\xfa.\x1a\xc0\xe75x\xe3\x98\xd0\xber\xda\xb7{n-\xd2VlO\x1c\xca\x9f\x92\xa4\x9c`\xe4\xd8[JZ\xb6'\xce#~\x13\xa3\xc24y\x85\x80\xeb\x94\x12\xd7 ,\x16\xea\x9c\x81\x8a\x8d\xfb=\x0b\xcf\xd2\xber\x0c\x87]wm\xa3)\x1c,\x0enk_W\xe8p\xf9\x0c\xc3\xe2\xc8\xe8\xf5%.\xa4\x95z\xa7\\\xe0l=8\x98\xe3\xcc\xc1\x90\xf7\xed y\xcb\xa2\x15\xb5\xef\x9a\x92x<\xa2\xe24\x1e\x06\xc7\\\xe0\x96\x8b\x82`1iMn'\xd0E\xaa\x1c\x99f\x96\xd3\x0fm\xe2\xf6\xd1\x18V\xda\xf4\x06v\xcc\xd7\xed>\xf3\xf5\xe6\xd53-\xdf5\xd4)TD&\xd2-\xa0\x1e\x8f%\xa3\xb7\xd2\xa7Xh\x8e\xe7\x98\xe4[\x92\x83\xd8O\xda1a\xf0\xcc\xc0Q\xb1\xcf\x16\x13\xf6\xeeN#+\xe9~1\xafR\x99\xef\xd85\xb6\x1dw\xec[8\xa8\xd1 \x8d!H\xe3S\xd6d5\xeb\x13z\x8f\x1fk\xban8h$\xd4.\xd1\xd5\xf5\xc7\xca}\x9cv\xea1)\xfd(.\x0cy=J\x8c\xa4\xfdP\xab\xf8\xd1Vo\xe8\x92\x85cX_e(S\xd5\xfe& kfc\xa7\xd1G\x8d\xe0\xba7\x8d\xaf\x81S\xf9\xf8_1\xaa\xed\x84_K\xdd\xf4\xb5\xca\xf7\xb6\n\x8e\xc1\x0d<\x04\xe1\x86\xb8]\x95\x99\xae\x03\x18.4\x9f>7\x0e\x8e183\xb80\xb0\xc8\x0c\x8e\xa5'4\x04\x17m\xf2x\x06\x06\xe6\x9c\xf3\xa7\xda\xcc\x89\xf4j\xca+\xba\x98\xb1\xf7\xf5|<\xd2\xcc\x871\xb4\xb2\xea\xd7\xb1MS\x11=\x96\xe7\x97 k\x10|\xed\x0c\xe6\xe6\x06\xd5\xe1-\x97\xf0\x85\x97\xeb?C\xbc{\xdd\xf4\x9f+\xa5\xfe\x13\x9f\xf4\xb4\x96\x91x\"S\x80\xaed\x9a\xd1\x0d\x7f\xd0\xd3\x8c\x16\xfcA\xaf\x8d\x98?\xe8iF\x03\xfe\xa0\x97\x1dy!\x1a\xdf\x7f\xd0}\x94Q\xf1e%\xb4\xa7h}\xec@\x84\xa2\x83\x8a\x9aU\xab\x8f\xafO\xdd\xda\xda\xd6T\xa9\x94\xa5&*\x99\xfd\xac\x99B\xb9\xb0Q\xbcEm\xc5\x9bE\ne\xac\xd0\\\xc7]\xbc\xc9\xe3!\x96-\x9eU\xb9\xad\xce\x90\xcb\x19\xc2LG\xce`!z\xe9\x12o\x93\xc7.\xe6\xe5\x17;5N\x99\xa3\x00\x95\xe4\x99;\x87+\xd1\x14\xca\xe7*\xe5s\xd5\xd4\xe3\x8c\xdc\x91\xc7\x1d\x8f\xd2\xbc\xe7\xf3\x04`\x9d\xe3\x17\xc9|\x7f\xbaT\xba\x86f\x9b\xb3\xa6\xabd\n\x0f\xc1Y\x95eV\xccn\xdeL\x13*Q\n\xbf\x06/JoV\xef9 \xab\xaa\xd7K\x8a\xab\xb4\xb1\xc5\x0d\\\xa8\x15\xa6m\xcb\x9b\xd2\xc6\x16\x08z\xf9K\x14\xc7\xafH@\xa2-\xd2\xb6\xc2\xc2\xec\xa6\x94\xd3\x85\xe2}\xf8\x12\x81\x88;\xb2p\xac\xc7uB`\xdb\xa5\x02\xddr\x95\x03\x96K\x1eZ'\xf3\xb1o/\xa1\xec\xd4\xbc\"[\xa7\xd8\xa9t\xce\x1b\xba\xe3\xf6\xe4\xd3\xed\xab\x9e\x1a\xb1d\x99W\xf8t.\xffM\xde\xe41\xa3Bu\xb1\x83j\xf2TqF</h\x8a\xa7%sAjz\x1bR\xea\xecl\x12v\x8a\x86t2;\x86\x042b\xf9f\xda\xca.2\xe2\xca\x8d:\xc3\xdf^\xa3c\x9b<\xa6\xa4qO\xd1\xd7J\xa1^A\xd7\xceV\x94\x0e\xc5\xab\xb4(\x9d\x11|{\x08\xfb:\xd8\xe9\xc1=o\xdf\xdb\xf7\xa6\x02\xb6\xeaL`\xe0\x81\xd5h\\\x94\x171\x91\x9dV\xcdk\x11\xa7~I\xd1$Z\xaety<\xe4x9Vw\xcf\xd7\xf6\x8d\x85w\xcc\xc09\x9d\xc7~\xf2N\xa3\x10\xcb\xd1\xa73I\xd3\x8c$$\x87$\xcd\xc9\x82\xe4\xb9\xd2z@\xafUN\x163(\xa9,p3$\xf3\xcd\xf2\xe1&\x8fU\x1e\x82\xed%Qp\x8b\xea\x81\xae\xb5K\x90\x07\xbc\x1f\x03z\xa0\x1e\x97OY\x0c\xe7\x05\x92\x90\x9a\xde\xc0\xdc\x0f\x97\nQ\xf8\xbd\x8c\xff5\xd8\xfa\x03k\x9ew\xdbf8\xd7\xd6l\xcd\xa5y\x9a\xe4\x8ax\x1a)C\xc3\xf9\x0c\xc3i\x1e\xa7~H\xc2\x19\xecM\xe5\x0b\xc6\x83\xd4\xf7\xa6\xfd\xf9\x1fw\xe4\xb2\x0f|\x02?\x8e\xc2\xe7\xe9&\x91\xa5q\x19z\x08\x94\xdal\xf4\x14'({\xf6t\xed/\x15\xd1A\xa5\x97&t\xe6lxD\x18\x12\x9aW-\x87&s\x8frs\xd3^\xe1z]y\xb7\x04\x16\xec\xd6\xab\"\x0fZ\xc6Mz\xc3\xb4\x9d\xd5\xac\xc0\x07e\xc9Ji\xa87p\xbfw\x82C\xa9\xd2WU\x831\xd9v\x133F\xd1+\x19\x88U\x80\x98h\xb9\x84`\x87]\xa0^K\xe0\x9b~(\x96\xc1\xd0n\x9a\xb1\x0d,z\xc9\xb0\x8eH\x91\x0d\xe4\xba\x13[\x14\xbc47\xdat\x95`G&\x9b\xd1\x87jN$Z/\xb5\xbc\x08;UY5\x05\xf9xG\xd0J\xbe\xc5\x90\xe12M2\xbe\xa0\xb5\x13\x0c\xa7~\x03\xd8\x8fUR\x02\xd7z\x99\x96\xc7\xe6\xc0\xc7\xc7\xd7M\x9b\xf5I]\xb8\x03\x99f*\xa6|H\xcbyOU\xb5\xeb\x13\xb9\xed\x9d8KR:cpXb:'\xa3\xf2\xc8\x18\x9c\x90\xc4\xa4\xa4\xeb\xc0\x13\x8a\x16\xf4'\xb7\xb89\x99_\x06\xab\xae\xf5\x1e\xdd\xe2\xaaxz\xa7\xcc\xfd\x808o%\xca\xb6\xab\xf4\"\x938\x89\xf7\xdd\xb6l\x8b\xae_\x89\x17\xd9\x8e\x8e\xc7`&\x810\x80\x0c\xc2\xce\xbeO\x03\xfc\x86\x86:@1\xaf\xf1\xd8\xbfH7\xa5e\x13i\xe3\x15\xa3\xe7:TnS\xb6NV\xccUjap\xa8\xda\xf0\x8c\x03\xcb% _d\x84\xd9\x17\n\x93\x0b\x10\xaf=]\xbd\xf0(MJ?J\xe8\xd2\x9a+\xec\x84\x9d\x97_\xfbK\x93?\xcb\n\x0e!\xc2\x8c[\xe7\x8f\x99\xd7\x18 _\xfb\xa6\x19\xc0R>^\xb0\xc9s\x92\x94OXj\x08s\x85\x93-%I{\xcc\xf9\x03\x7f\xbb\x1b,4\x97f\x05\xff\xc6f\x0c\x18\x9f\x88~\x16{Q\xf1\x93\xff\x93\xbbB\xfd\xca\x8a)0\xc4K\x1b\xaf\x88\xa3\x80\xd0M\xb2\xd2U\xc9m\xf9dlzy\xc5|\x13\x9fDw\xc3F \x87\xeb\xa4\xd5:\xea\n\xba@=dU\xbf\xac\x12\x92\xb1\x9d]\xb5\x89\x89\xf5\x0c\xf5\xb5\x00\xb5 \xcb\x17\xf3_\xad\x12\x99\x95\xfeR\x9b-F\\\x9d\xdd\xa7\xcdB\xd3~\xa7\xca[\x93\x9a\xdf\xa8\xf7\x9f6\x8bC\x0b\xdc\xc2& \x8c\xe7\xe8\xae\xbei\xe9\xa1!,\xf0\xe5\xcf|L\xa3m|\x0d*\xb2\xc5\x8d\xc5\xe5*5:\xf1\x89+\xc5@M\x816\xcf\xa2\x82\x9e\x8b\xb4ez\x98&c\xc8u9g\xc4\xc5\xd1\x8f\xc7j\xba%\xaf\xa3\x85\xa5\xad2\x98\xc1bTi \xf3Q\xad\x16\xdc\xb9\xb0\xba\xb8XJ\xd1*3\xa4\x05\x9a\xd0\x8b\x9e\x1e/\xb1\xac\x90\x05\x96\xd0+\xcd\xac\xd0\x1b\xaarE\x169@\x01\x83\xb9\xe9JY\xa17T\xdb\xc7\x08\xaa\x91\x8c\xd8\xe3F>D%d\x13\x8a\"3\xa6\xb5\xfd\x06\xa6\xbaB\xde\xab[\x0d\xaf\x8c\x9fR\xa8\xc9\x17p\x856D \xce\xfe^]8\xe9R\x96mYy\xe6\xcf\xc9\xb2-\xad\xe1\x9b\xaaj\xf8F\xaa\x1a\xbe\xbe\xaa\x86\xefFU\xc3\xb7P\xd5\xf0\x8d{5|Y \xcf\x82K\x05m\xe8@\x04\xcb~\x16%~\x0d\\\xfb\xa7\xe4\xd8\xafi\x88\xe0\x10\xee\x9cq\xe6\x8c\x1bPC%\x02J\x0d\xc2\x8e\xb2`\x15\xc5aN4\x944\x1d\xc6\xa9GC\xb8t\xdf\x9aC\xdf\x0c\x90/\xb0p\xb2\x8e%_\xb0\xc38\x0d\x8e\xce3?)\xb4Q\x14\x19?\xb8I\xf6,J\xdeE\x89fFCQ\x04\xd8Y\xf8qAX\n\xfeL\x0dO\xb9\xf4\x0d\x96\xfd\x8c\xfd\x0c\x1dk\x95\xa0[\x06jSes\xcd@\x1f\xf3\x1e\xeb@\x97\x0c\xd4\x04V\x05\x16<M\xa80\xef/\x85;\xe7\xb8\x9dA\xf8\xed\x98{\x04*\xbf4\xd7|\x89\x9c\x97$O\xfc\xf8q\x1a\xf4\xbf\xac\xf9\xe6\xe9\x80on\xf2X\xfb-\xcc\x8f\xd1\x90\x07&\xa5\xbftD\x86Hv\x0c\x8by\xa5\x9c\xcd\xc8MF\x9a\xb8\x85#\xcc\x83\x13\x15\xc7\xab\xf4,q\xcf\xc6\xe0,6q\xcc\xac\xd1\x0bL\xb0\x12G\x05\xb7N/\xf4\x96l\x83$\xa4f\xe3\x1a\xfe\x95G\xf0\x90\xca\x1d,`\xb8\xf4\x97\x93\x820:\x1d\x15\x934# &\xfa\x90<W(:5\xe2\x19z\x8f\xab\xfbTE!\x1b \xa3\xb8\xf8,D\x18DDgr\xefH\xa7\x97\xb6\x99\x8d\x8b\xceltG\x0fI:\xa1(\xa81\x1dG\xe1\x0c\xcex&\x95\x89\"\x80B3MZk0Ix\xaeyMt\x15\xc7,i~\x10q\x19\x19\xe5\x92\x9c+\xe5\xac\xf7#\xe6\x00\xab\\\xe8b\xed\xc7q\xc5\x8d\xaa\xc0\xb4U9E\xbe&EUnt\xc5\xb5j\xdfV_0\xb7\x1f\xd0|\x0c\xa7\x14Mf\xe0T^\xa9\xa7\x9a\xd7\x97\xba\x812G\x03FJZ\xae-\xa7\x1a\x82\xd4\xdf*F W0\x7f^Q\xa6\x19\xe5\xa3\xfd%\xcb2\xb6\xd3\x8e\xe9:_\xa8\x90\xfc\xb4\x124j\xbfp\xe5,\x0fLy@\xe8)\x1dN*\xb2\xac\xd9\x92eT\xc6\x82\xd4\x89s\xb5\x16\x90p\x8f\xe3\x99\x1f\x82\xcd\xd7>4\xa1\x1aJ1\x9cb\xab\xb7\x15\xb5r\xc8\xe7yz\xa6\x19\xdcY\x14R\xd2\xe0\x1c\xec\xeb\xbccH\xb4\\\x95\x0cjpo7\x85>\x14\x88\xed\x08\\\xab\xbf\xc4\x14\xcf&\xd8\xe7 r8t\xa9\x9aw5\x9d<\x8f\xa3\xe4\xdd\x0f\x83>\xa6\"6:\xad\xa3\xb6\x86rT\xbc\xc8HB \xf6\x91j\x9er\xa3\xf9@\x92JC'xg\xe2)\x1a\xe6{\xce'BcX\xab\x9d\x16y\xba\xfe\xf1\xd8\xfd\xbd\x1b\xcd\x87\x1a\x0f\xa7\x9e\x94\xf7\xe3k\x97\xd0\xb4/\xd4g*\xa1>S \xf5\x99J\xa8\xcfTB}6,GS\xe6vc\x94\xa9\xe4\xeef:\x97\xf3\x05~\xed^sY\xb96@&\xecg\x1f_\xd8\xd7\x9b\xe9\xbe\x08\xfb\xe2\xfap\xc2\xbeP\xa4\xaa\xe1r\xcbT\x05)\x87\xc3@R\x0dc\xc9\xb4\x07\xe9r\x19\x13d1\xd5\xa0L\x82O\x93\xd79\x15\xf8\xf1\xb8T\x03o8\xf0#? Hl\x00.8\xf0\xd19 6\xba|\xfb\x0b\xa3\xe1.\x1b\xa0<\x08\xadU\x12\xabjq\x8cz\x8e\xed\x10s\xea\x1a\x81\xad2q/+P\x8b\xef^\xb0 \xf5\x8b[\xc6\xef\xce+P\x8b\xef\x9e\xb6\xdd\xce*\xc6J\xc3z`\xb8\xbd)w\x02\x15\x9f\xcf\xbc\x90d9 \xfcRW=\xe0\x1c!\xb98\xa4\x06;F0}n\x8bG\x08c\xcak\xf1\x0e\xa1R\x8dn\xe7;\x84\xd0*\xe0^\xf0\x8f\xf0\xe9\xd2\x95\x9c|\x89\xa0~\x1c\xa7g\xaf\xf3\x8b\xa7\xe5\x8b\x8d\x06\x83_\xb3y\x1b\x98-\xe49\xeb0\xff\xfa\x11\x13?\xd5\xe0O\x11\x9c\xb0\xbd\xf94y\x99\xa7\xcb\x9c\x14\x1a,\xf9\x15\x0e\xe1\x9d\xd7P\xea\xa8A\x7fB\xd0\xa6\xeeF\x0d\xfb\na1\xdd\xb7,\xa3\xb7\xb8\x1e#\xc6 %Q\x9ai\xb5@\xcf\xe0\x10\x1e3#_\x15\x02\xae\xd3\x8f\xbd\xa9\xe1\xb3<\x0d7\x81\x1e\xfc7\xee\x8f\x8c\xa9G\x9eEE9r\x1f\x8f\xe1\xc4iT\xd5\xd5\xf5\xee \x1c\xc2\xb6F\x9bc\x1c\xba{<\x86G\x9a\x97\xfe\xddQl9c\xf8n\x0c/4\xca\xab\xef\x9b\xbd<:/ \xeaI\x8b\x91\xfbX\xd3\xcc\xcf\xc8\x04\xd9\xcd\xda\x0f\x0c\xb6YKX\x0d\xfc\x0b\x03\xe6\xf8\xa6\x83\xfc\x91A\x06,w\x9d\x1a\xee\xbf\x19\x9c\x8d\xf2\xf5\x1f\x0c\xd4F\xf9\xfa\xbf\x18(\xc7G\x1d\xe4_\x19d\xe5\xd5\xc1\xb2,h_\xf9?\x9dW\x8e\xf4I^\xfe\xd9ma\xb3^\xfb\xb96\x17\xca\xfff\xaf\x98\x14\xc2\x84\xf2/!\xcf\xe9S\xe3\x86\xda\xa5\xf7\x19f\x8fe)d\xd1\xc4\xf9-\xec\x9b\xdc\x95\xd0\x9d~\xef\x19\xee+\x1e\x9a\x97{\xad\xec>,F\x87\x838\x9c{\xd3\xb9p\xe4\xe8\xe0R\xf43\xf1\x8c\xa1$\xb6\x16R\x10\x1e\x04\xb4\x7f't\xdfI\xd2\x84\x02\xd8\xe69\xb1\x12\xe6\x9b\xaa\xdb*\xe7c}2R\xf9\xf6\\\x06\xe2\xc0\x0dx\x047\xc0\x91\xe9x\xdbP\xea\xd5\x8e\xc2\x99F\x03\xfe\xefZ\x01\xaa\xd4\x80\xaa\xa6\xe0\x9fZ-\xb1\xc0[\x94ngp\xaa\xeea\x83S\xd5\xfa\x98\xb4}K4\xa7w\xab\x84\xd3Z\x0f\xd7\xf0\x9f\xd1\x1c\xf6\xb53\x84\xca!W=M\xffm\xa7x8\x1f:\xfdC0\xb0R\x8d\xab\xeb\xe2\xbf\x1f\xc3c\xba!\x1f\xb3-\xfe\xc7\x1f\xcc\xff\xe4\xf0\xf0\x10\x1e\xd7\xce(\xea\\\x13\x06?\xe8J\x15u\xeb \xd3\xd5S\x15z-\x03\x18\xbaU'\xee\xed\xe9TC\xe8d\x13\x10\xa7~\x18%\xcb\x89\x9fDk_c\x1f\x19\x8d\xe1H\x9bX\xc8`%\x91\xb5\x8d\xea\xcd\xd3$\xcd\xd7\xbe\"\x07\x10&x\xfa\xc5\xcf\x93(Y\xce\xe0qM\"Fc\xf8\xd5\"\xcf\xd1\xb0\xfe4\xd89}\xa9\xca\xab\xc6Bcf\x10M\x83\xff\xb01G\xfc\xaaX\xd4\xd1h\x0c?\xd1y\xfc \xc3=/\x91\xb6E6,\xc1\xf3N\xc24(v\x9f\xd1\x0f\x86YO\xa2$\x84u\x9a\x13\x08EF\x9f+^\xd8\xd6\x0c\x0c\x1f\xb91\xd0\xd5\xd8\xe6\xa99\xeb\xcceq\xeb\xa7\xa6\x18\xa4\xc23u\x1b\xff[\xd7\x86}\xb0\xac\xc5L\xc4\x91\xf6\x0bJ\x8b\xd6O\xda\xe8X\xf6\xb4\x91c\xa7yj\xa87\xd4\x0f\xbaa\xd7R\xc4\x0c~\xb3:\x85yA\x10;\xf1\xa3\xe2Ef\xf0X\x03\xc5+x\xff\x03\xdd%uj\xb8\xa6\xbaL\xeb\xaa\xdb\xd2\x95I\xeb]\x89\xab#\xb9\xcf\xe0\xb9\x86mi*\x12f\xf0R\x0d\xb9H\xa4Ev\xc4e\xcdP5\xb4d\xda\xecE-\x15\x996\x7fQ\xe6\x97\xab\xe7\xdc\xb1\x93q\xe1\x86nr\x17\xe4P\xb1\xe1*l|\xae\xc1\xc1\xbf\xeap\xd0z2\x98M\xfeX\x0d \x1cV5Ly\xda\x91\x1bgB\x03Q\x98\xe5H\xda~\xf5\xda\x16\x15b\x85;\x12\xda\x91\xe31T\x1f\xd1\xe9!\x96\x84\xbb\x83\x91\x90}l\x06s\xafh\xdd\xd1\xacs\xff\xe5\x0b\xafw\xd3\xf0>\x05\xf9\xd9\xcf#\x8a\xf0?3\xed;\xffH\xef\x89a\x18Mx6\x8ca_8Z,HPF[\">\x85\x9d\x11\xdf\xa9\x9e\xe2}3\xfe}\xf5\x15\xbc\xa4\xff\xbc\xc2\x7fLtq\xa7cV((T4Z\xd5\xd8\xff\xd2\x9eo\xec\xa33x\xf5aq\xdf\x96\x98\xf0H\x16\xa6!\x9b\xc1\x13\xc5\xcc\xd7S\x7f\x15S\xfc\xbcRu\xbc\xa4\x12\xf9\xbcL&\xcb<\xddd(ys\xfd\x95\x91\xb3{.\xdeW\xf5\xe8\x17+\xc9Y{Z\xd9\xce\xe20\x92|\xd9\xb5\xad\xec=3(\xacvJn\x9a\xaa\x1f\xb5(k9 \xf6C\xd3wz4\x86\xa7W\xb5\x97\x85 \x1aT\xc1dCw\xf3.\xcd)]'\xaaey\xa6\x19\xe0\xcf\xba\xd6*\xb5\xf1\x0c\x9e\xa9g\xbaJ\xea\xab\x89*\x11\xcc\x90(\xfb\xa0\x8d\xfd\xb0>\xb7[l\xc4Ul\x98\x86-N\x9b#\xd2\x1aK\xb9\xf5a\x06o\xcc@\xfc\x90\xda\x8a\x80\xbf\x97\xfc\xfe\x934w\x19C\xa59\xfc\xfb\x8c\xb4\x95\xce\xdf~\x1b\xa9A\xe4\x86\xad\x19\xbcV\xbf\x82\\\xac\x89\x9a\x10\xf4\xa0\xf8\xdet\xdc\xfe\x1f\x1d\x06\x93J\x17>\x83\xef\xad1\xce@2vq\x1bz\xb9\xc9\x89\xcce\xa8\xca|'w\x19j\x9c\x1c8)\xad\x87y\xb5\x99d\xcf\xf8\xa6\xec?\xaaQ\x85J\x8a\x0b\x8fY\xbc\xba>5\xcc6\xa1\xf3B\xfa\x12Z\xd4\x9e1\xa5\x17\xd2B\xee\x85\xb4\xa8\xbd\x90\xee5S\x19-4\xeeF_b\x8b\xfe\x03\xdd\x8d\xac\xfc~\x86\xc4\xfb\xe7\xf6\x0e-\xe9\x10\x87\x16\xe6\xa6\xd4\xb6\x13\xa9\xa1}K_\xaa\x0d\xd6\xd039\xa7\x14,\\\x9d\x91-5X\x80`QQ\x95=\xd5\xf0\x0d\x0b\x845\xb9\x9ed\x08\xa5s= Y\xd7V\xe9\xd9\xb1\xa9{+\xfe1\x0b\x17\x94-\x03\xcd\xa3e\x94\xf8\xf1\x0b\x9bW0\x12I8\xa2X\xbd\xb1\x84C\xc8\xcc\xb3z\x81K\xc4\xd5\x1d\xc1&\x8fJ\xadU{\xce\x12(Tu`\xab\xae|_j\x8d\xf9\xa7\x9d\xc4\x0b|:\x9f\x1b\x03\xbf\xcf\xe4/\xbe4\x04\x9a\xf3\x1a'?n\xd6\xd9\xeb\x14\x811;\xc4\x07\xb7.\xd7Z\x01\xd6O\xe8\xfc\x8d\x06b\x8d\x16\xb0\xae*(\x05\xd1\x08 \xa7\xba\x1e\n^P\xc5\xb9\xa9?{f\xaf\xa6\xd3\x05>v\x0c\xd0\x1a\xc3r\xcd\xe3\xc8\xe3\xc6ig\xc3\xab\x92\xfb\xba\xabcc\xafX\xd2\x83\xad\xa8\x99],\x8a\xedn\xe9\xdd\xd5\xc8\"{\xfen=\xab\x93\\D\x8a\x02\x04\xef\xc7 :Qg\xdc\xff\xea+\xb8\xf0\x82t\x93\x94\xae\xaeos\xbdY\xbc&\xb93\xd0d\xcc\x1a\x1e\xe3!N\xd4\x941\x94\x98\xef\x97JMT\"\x89r\xec[\xe1^\x982\x89 \x81\xae\x13\x06\x17\xae\xc2\x01\x05z\xacEu\xd7\xac\xb8\xd2V\xc8\xc9\xb4\x08{\x85B\x87!N\xa1\xbb\xcfL\"D\xb0\xb3\x08q=\x03\x19>i\xa6\xb2\x01\xc5\xa6?\xa32\xa3_\xc4\x04q\xed.&hK:\x9b\xb8\x8fK\x1d\x1b<\xb3\x8e\xf4\xdd\xf7c\x94P\xded\x19\xc9\x1f\xf9\x05\x91%W\xd9\x99P-\x86\x13\xaa\xfa\xbb\xe3\xcf\xa0\xc4\xf1g\xaa\xad\x10\x91S_\x94\x16\xff\xb1\xd4H\xcd\xc0\x95\x034\x11\x89Dc`\x14\xf5\xe9\xc6I\xac\xe2PR\x844\xc6\xa1D\x08\xa6\x8fC\xf1\x11F\x1b?\x82u\xf1\xed\x84\xf7\x82w\xecq\x9d\xc6\xc4\x18\xe1AO\xd8\xb2\x99G\xe4\xc3\x9f\x04y3'\x838\x0d\xe8<\x9d\x9e\xb6\x9d\x9d\xa5@\x83\xcd_\xdazUU\x02\x06\x9d\x02J$`\xd0\x98\xa2\xb2\x06\xdf\xca\x9ao\xfbO\xfbXy\x80J\xd8\x1b\x0d\x0e\xb2,\x0d\x91|\x84Wy\x04^7v\x99\x9e\xaa\xcd\x80\x078\xe4\xe5R\xfa\x87[D\xcf\x84\xfb\xb2\xd3-\xea\x96\xd0\x8f\xd8\xe9\";=\xa2\x8f\x7fz\xf8\x98\xc1\xa63J\xf5q\xb2\xad*\xca\xd7\xe6\xa6>\xe6$\xed\xd27b\xa5\xdb\xe1#\xaf\xd2\xb3\xee\xbe\xe6\x83M\x87j*\xa4\x0c\x9d,\x81\xcc\xfb\xf1\x95~\\Z\x9bS\xd7F\xb3\xb4i\x1d\xbb\xe2P^\xe3R\xfd\xc2\xf2\xa5*c\xbc\xaeC\xa2f*\xeb\x93\x1a\xacU\xe3T\x0d\x96[\xc0\xc8\xeb2\xaa\xcb~\xf6\x06\xe3<\x89H\x8cN\xe5\x1f\xb2\x114Q\xb3\xa2\xa1\xeafZECK\x8f$e~qL~\xc3\xec\xb7\xa6\xcc\xa0\xdbF\x8d\xa8f\x9d\x9f1\x1c(\x881=\xbb\xcb\x93}\x85\xb3!\xee\xe4\x93\xa9$ \xc8\xb0\xad\x12\xd5Q\x84\x0cUT\xa5\xdeT\xb8\x8a\x9e\xa3\xcb\xa9BAy\xfe\xb3\x1f\xcb\xf4<\x9d\x04\x96\xef\xdb\x05\x10\xdf\xcb\xcf\x04\xf6\x99\xebu&\xbcJ\xcf\x0c\xc7\xc2\xed\xe9\x9f\xe2X`\x03\xb59\x19(B\xc8\xcf\x04\xe2Q|\xe8?C\xa6\x14\x1eR\xa63\xfd\xf1\xb8\xfa\xe1\xa2\x92\x91+\x1a\x87\x9d\x14\xd6\x94\x88o]#1ap\x9d\xbd\x1a}&H\xdbG\xcc?Q\x02\x13\n\xf0\xe0\xee\xfe\x9f#g \n\x9f\x98\x949\x1a\xc3\xa6O\xca\x15\x82z\x1fp\x91\xe6\xe0\xd2\xaf\xd1 \xaf$p^Bn\x8c\x13\xceR\xff\x16\xa31N\xf4\xfe\xd7\x10\xc07P|\x0d\xc1\x8d\x1b#\x88O\x82\xb7\xcd7O\x02\xf5\xc1B\xb7v\xc4O\xb2\xbe\xb2\x00ei\xa3\xc2 \xf0\xe3\x98k\x0d\xc8\x18N\xe8\xbboE\x11\x87\x18O\xe1\xc8Cs\x85\x1fG\xff\xae\xa5\x07c\x19\x07zE\x1e\xa1\xe3\xed{?\xbfG\xadBz\x865y^\x936\xef\xab\xfa\x1a\xf3$\xaai\x00\xd7X\xe2\xbe\xa3\xdfc\x7f.\xa2\x98PN\x03S-\n\xef%\xaf</%\xb9\xfa\xde\xb3\xd7\xc8\x96$\xe5\x7f\x1f\x07y\x1a\xc7Q\xb2\xfc\x9e\\\xa4I\xc8\xa9\x90\xd58k\x12\xcc\"qL\xba\x88\xc4/\xa3-9\xa2\xcdz!\x89K\xff\xbf\xf5\x8a\x88\xd2+\xb0s?`4\xa4^\x15Qz\xe9bQ\x90\xd2\x04\x1b5\xbe\xfb:\xcd\x14r>|\x0b)Z\x0dY E\xac\xce\x9c\xc07\xacVa\n7 \x82o\x0f\x99;n\xc2\xe2\xbbqs\xf39}\xcc\xd6JV]u\xcc4\x19=E\x17\xdd}\x1fC[u\x95\xb5\xcf\x98\x9c\xbf\x8a\x96\xab\x98\xce9\xaf[I$\xc1P\x1d ]\xc6\xff\xf5\xbb\xf7&\x0b\xfd\x92\\\xaf\xfe}\x02e\xdfV\x1f\x90\xc1vV%h\xe87\x14\xa9\x88\x0f\x15\xc3\xb4:.,0\x86\xc4\xc4\xb9\"\x9f\xeaj!&A\x1a\xaa\xca2\x8eQ/v%\xed\x89\xa1Nx\xc5yY57q\xd5^\x1dt]\x9a\x14Z\xd5M\xe71\x07r\xcc\x96i'\xcb\xf5\xc9\x01YYN\xda\xb4\xe4\xc8\xd1\xf5\xfa\x97\x15!qU\x04KG\xd0\xd5_i\xcc\x19\x96=\x80uD\xbf\xa0\xae{\xfa\x9er\x00\xc6M\xd4W\xc3\x99Tpr\xa7\xd7\xe6N\"\x1e9\xcf\xd2\xbc,Z\xc7S\x9f\xbd\x85\x06\xe7\x99\x903\xf8>N\xe7\xee y+[\x83\xf2\"\xc3\x91ST\xa7\xfc@\xc4\x8ad\xdfL\x83\x92\x94\x93\xa2\xcc\x89\xbf\xeeH\xeb\x1d\xf6'ZT\xf5v\xf7\x0e\x0f\xe1,J\xc2\xf4\xccK\xfcm\xb4\xf4\xcb4\xf7\xd6\xc5\xb1\xbf%\xb4\x0f#\xddC7\xefsV$.\x88\x82k\xa3\x87\x1e\xff\xda\x9bW\xcf8\xc61\x0e\xfe\xcd\xabgn\xae\x91\xe9C\x9e\x0c\xa4\x8b\xa6\xbeL\xef\x1dyX/W\xb8\xb6\xc1!8I\x9aP|\x8e\xbcUN(G\x9c\xd2\xdf\x05)\xbf+\xcb<\x9aoJ\xe2V\x9b\xcfa\xb2N\xa3\x1cq\xcd\x00\xd13\xb3\xfb\x1ec$\x9cq\x15\xd3;\x1a\xd7\xdd\x9d\xa7\xe1\x05\xe5\xd9H\x12>ZEq\xe8F\xc8\xa6\x05t\xeb\xba=\xc0\x9c\xac\xd3-\xa9\x01\x1b\x93\x95\x93m\xfa\xae1Y\xa9\xea\xe8}/E\xc9\xeb L\xc9\x95\xbfR1+R\x89Y\xbeJ\xcc\xda\xa8\xc4\xacB%f\xc5\xfcAOb\nx\xca\xc7\xbe\x1cUKZYU\x12B\x98>+\xe0?\x81`\x95\x8f\xc1\x97\x0bV\xd1u\x14\xacr.Xml\x05\xabt\xa8`\x95{\"x\\\x84\xe1\xfc\xc2B\x04\xad\x84\x0e\xde\xd5\\T\x88\xac\xc3\x85\xbc\xa0\xf5QT\xa8\xba'\x02\x10M\x90\xd5k\xcc\xed\xe2-\xe5\x9f{\xad\xbcg]\x14\xf1T\x8f\x18\xfb\xf0\xfa\"#\xac\xd7V\xdd\xace#\xca~\xe4i\\|\x17\x04$+\x7f@\xf5\xaf\x89\x9f30})\xe6v2\xb0\x8f\x11\xba\xedY\xa5@\xf4\x11To\xa4\xdd \x8c\xceO\xa6\xac\x08\xbad\xea4EZ9\xd1\xd3\xe5\xb4d\xde{j\x00\xe1>\xbb\x91BH\xaa\x17\xbd\x1f3\xabs\xafp4\xdd\xad\x96\x82X!\x15\xc4|;A\xacX\xa5\x9b8\xacX\"ka\xc7\xb4/\x1a>M\xdd\xc0@\xe4NH\xff\xb6(\xbf\xcf\xde\xaab\xdb8x\xfdw\x1bN\x84\xd6q\xb0\xeaO9\x14n\xc6\x0e(\xbb\xd7\x86\x97\x07\xbc\xf1\x17\x15\x0f;-\xfa\xe5J4D\x7f\xb6\x9f2D\xe1\xcf\xd9\x1f}\xdch/\xffG\x92\x06\xf5$\xc1F^d\x1e\x19\xd5z\xe9)C\xd2\xc3\x03=yH,\xbdN65\xac!\xa5,\xf3\xd3\xb0\xcc\x13\x8bl\x841\xefm\xd2\xc6-5p\xc8\xdc\\\x06\xa6\x0d]U=\xd6G\xd5l\xf9\x11Zi\xed\x8e1\x89\xdf\xa34$#7\xd5x>\xac\xb1\x98\x8f\x13\xd4d\xd3T\xd1\xc6w\x9d8\xda\x12\xb1\x86\xa6\xca6~\x1d\xbbj\n\"\x91m\xf5\xaf\xbe\x92\xdd\x16Q\xa4\xb27f\xb5\x84\xf7\xb2\xf5D\xdd\xf8)\x1cB\xd1\xac\xf6\xc7\xa6rIJv\x82>b\xe7)\x95p\xc5\xb0\xe9\xacJ\xcd6\xe229\xee\x0c\xd1+T\x1b\xcc\x98\xd9\xe0J\x9a\xb3q\x01\x10\x971O\x16w\x05x\xd5\x88_n\xcf\xb5)q]\xec\xcfI]3\xc4\xe4\x08\xd5i\x0e8b\xa3\xcc\xad\xcb\xa6\xa5\xad\x16\xc3\x89\xab&(L\xb0\x97\\1\xa2\xe065\xc4\xa6\xde\x7f\xc5\x0c\xe6\x1a\xc0\xc6:\x89t\x17\xfc\xe5 \x8eQ\xbeJ#]\xc6\xabA\xc8Q\xe3b\x94\xe8\x92\"Df\xa5\x9a~E\xb5\xd5^\xea`i\xeb|\x94\x1a^\xae\x99y@\x93\x03\xaa\x93y@CP\x18\xf7\xd8a\x11\xcc\xbcd\x8fk\xd0\x1c'\x8a0}U\xfe\xa5\xe1\xdb\xd4B\xc9(\\k\x86b\x0e{o0=i\xbb\xe8\xa8\xc1\xf2\x1d\xba\xb4+\x8dS\xb8\xe1\x88K\xed\x8eS\xa1\xf0\x84\xde\xe39wU\xcd;\xf4 \xd7&\x03\xbc\xa2~\xd8\x04\xbb9\x8f\x1b@]j\xfe\xa1;\x18G\xc9;\xcd<=\xc3\xc7un\x07\xdd\x8c\xb5<\x9bR\xa5gS\xa9b\xa5\x81\xb3\xd3I\xdf\xc3\xa9T{8\x89\x0bYg\xa5\xa7\x93\xb8\xb0|\xc9\xc9\xd4\x00\x15\x027\x18F\xed\x0c\xcepx\x08)<\xac\xf1\xfc\x94'#A'_G\xce\xb8\x80\x99y\xb9\xd0\xad$\x08a\xc5P\x96\xb8\x8e:[\xb1\x1c':6\x15\xd0\x1d\xf8\xb1\xd0\xa6mQ\xafkh`\x91h#\x13\xa1\x8du\x1aZ\x8b\x90iH\x8cC\xaaO%M8/\x0c:I\x803\x07]u\xce\x8c\xa2\xc6\xe1\xa1.m30\xbe\xa4\xabK\x9aa\xd9\x0f\xa5\xaa\xc9\xdc\x15\x0e\xae\xe5\x87\xc0\xfeT\x85\xfeI\xad\x84U\x14\x85n\x15\x83\xde!\xa1K\x8d\xe7;$u\xe9'C\xeaGX\xd6\x99\x83\x98\x85\x98U\x8a\x1a\xb9'-\xfb\xcf\xaf\x85\xa4\x16\xa7\xea\xa0\xdf\x9b\xd6\x03\xf8\x1c2\xb9\x84*w\xacP\xe5\x8e\x15\xaa\xdc\xb1B\x95;V\xa8r\xc7\n\xa5\xe6\x8b\x98?\x91Z\x10\xdcP\xd8\n\xc2\xcaV\x80\xbf\xa6\xb7z\x05\xa4\x17R\x8b\x03\xaa\x07Te\xa5\xc3\x8fo\\X\xd9\x1a\x17\x88\xc4\xb6 C<\xb3hkjo);O)\x0e\x8d}\x914\xc1'+\xf2N%$n\x90\xba<2)\xb9\x12\xe6\xeb\xd3oF\xfd\ns%\x92\xd1m\xf9\x99\x8b*\xec\xe3\xd2/uJ\xeb\xbcO\xb2\xbbK/\xae\xf7h\xd82\n\xb4\x9a\x11\xc8\xcf\x9c\\\xd1Z\xef6\xfa{Q6\x84\xf4\xe8\xa5\xb8\xa4\xc3q\xfa\xac\x1d\xfd\x94\x02\xbf\xe1\n\xdd\x94\xaeF\xb3\xca\x08-Z\xe0RK\x1d*3\x9aP\xfeB\x0d\xc3\xac%\xe6\x02d\xccbb\xe1\x9a\x13\"\xa0Y\xaf\xb8B8\x9d\x12t\x8b\x10v\x9a\xdau\x0dk\xd0\xd4.\xab\xfeYhj/\xf8\x0cVx\xa4\x06\x9dW\xa0\xf6\xf6\xb1S8\x84\x95\x17%\x0b\x92c\xaeS\x8d\"\xe1\x0c\x0ea\xc9\xc5!5\xd4\x11\x1c\x82\xcf8u&\xe2h\x93\xfa\x9d\xd7\xd0\xe4\xdc_g\xb1>\x07\xe0q\x0d\xced%\x0d\xec#8\x84\xadU'\xdeqH\xe1P\xc5\xe5Q%\xfcw\x0c~\x9d\x86$>b\xbd\xd6\x81\xbf`\xe06%\x80^2\xd0*.\xd3TL\xe75\x83\xb7Tp?\x17\x9b\x16i\x97'\xa1Q\xf4\xc8\xbaPP\xf1\x05\xb8g\xee\xc8$/>\x15+\x84\xc5\xb2x\xc7\x9c1<\x7f;\xe6\x8a\xe7\xe7~6r\x7f\x7f\xdfe3\xba\xd7\xafp\x08O\xb9\xc4\x87\x88\xe9\xf4>\xa0\x16\xf1\xeaP?4M=ma\x98#\x94\xe0\x99W`m\xa0hq1r\xbb0T\xccf@KR\x1e\xe3M\xb6AF\xee\xaf\"\xec\xd70\x9b&A2J\x82x\x13\x92W\xc4\x0f_$\xf1E\x8b\xcb\xec^\xf4\xd0\xa3\xc7\xcd\xaf\xf0\x10\xcaJy\x95\xf0;\xa7U\x9fj\xc5V\xce\x9f\xb9\x8d\xcc\x89\xcd\x151\xf5]L\xfb[\xfaI\x85\xe6\x8d9T\xd1^\x9c\xba\xbe\xe8\x01k\xda\xf7V~Q\xad\x1d\x9d\xf2\x90g\xfb\xacnQ\xb9\x14\x07\x95T\x0b\xd2\x9b\xebd\x0c\xcfu\xf3(\x99C\xcdi\xc4\x80\x7f\xc9\xa3\x92hg\xfc\xbd\xde\xfcq\x8e\xbe\xcc\x94v\x9d[\x04\x8a\x89K\xb0\xc0\x94\x1d\xa2l/+&\xf5\xd7\xbf\xe6d\xe1\x08\x97.\xda\xae\x8a\xebQ\xe0;\xddu?Y8\xf05/a\xdcF\x0bTeo\x1a\x16\xff\xd6\xbc\x9a\xb1p\x0d3\xbe&\x16\xaey\xe5\xda\xb8\xb8\xe6\x95\xf2\x1893\xa4\xe0\xd0[{<5%V\xba\xa4YK\\\xc8t\xc9\xd9IqiMKw*\xcd]\xaeQ\xf2)\xe3\xfe\x9aW\xdb\xa4\xc2h\x9by\xf68[(\x8f\x19\x17\x97,v\xbc~V+-(J_\xd6^b\x1c\xeb\xf0q\n1A3\x06A\x05\xe4\x1b\x92\xa2\xf7\xf9\x18\xde\xed\x98\xdc`\x07M>8p\x03\xdc\x0ds#\xd7l,'\xf4K\x9f\xb9\x85+\x03\xff\xafN\xdd>D\xd7\x1f]\xa1\x9a\x7f\xb0n\x7f\xe7}-[\x8bn\xab\xa7\xa7z\x93\xa1\xaa\xf1\x17\xba\x86E\xd5\x1f_\x94)l\xd8&T\xa7\xc4\x18\xce\xcc\xbb\xcdj\xacL\x9dWQ\xf3\xe6\xd0\x1b6Y\xd3\xcet\x84@2\xf1Q\"\x11\xd6\xa8\x19\xcc5[o\xe84\xbe\xb60q\x1b8\x1e\xf5\x94\xb4\xec\xd7|-\x04#E9\x9b\xee-\xef\x1da\xc7(\x88\xc4\xd5\xc7\xe4\xb7^\xd2\xb9\xe6\xd51\xb1\xcb\xf4>\x8a\xf5\x1e\xc3\\\x9b\x83q\xed\xc7\xb5\x83\x81\xc3\x9d=\n\xd0E\xa1 \xe1\xa8^ar\xa43\x1a\x83\x03l\xe9\xbc\xda\x06Uq\x9b?i:\xf1\x9d\x16\xc5+K\x89u\x9a}MV\xfc\xa6Z^S{\xb1c\xa2\xd0\xd5^D>T\x88\x02L\xb5\xfd\"\x0fIN\xc2\x91\x9bhV\x94\x1fB3\xf8I\xb1p\xd5\xd4\x1di\xa6\xee\x91n\xea\xb8h;\x83#\xeb\x99\xd3\xf7e4\xae\x04\xfc+\xb5w\x0e0r\x1e\xc3C8\xf6\xcaT\xc6\x85v\xa2W\xba\x97\xe1\xc0}i\"T\xc8\xb5i\x14<\xf4JpP\x06 :B\xad\xfe\x11,\x17\x064\xa4p\xa4\xad\x87Yo\xdf\x9fR\xe0\xaa\x92j\x95{\x1f\xbc\x94\x05i\xa5\xb7 \xd5fCF \x85u\xe8\xf7\xf7]s\x89\xcc\x9a\xd7TL6T\xffm\x9b\xd0\xea\xbf\xf8\xcdke\x13Z)sG\xacTQ%+UT\xc9J\x15U\xb2RE\x95\xacTQ%+\xa5Mh%lB+\x8c\xc8\xbf-\xb5\x04\xb1g\xbd/W\xe6\xa0\xf6\xedP\xf4]\x91no\xf5\xf1\x0dE[[C\xd1\x97(\x94\x8e\xd1\xca\x14\x85\xa2\xb7\x88d~^\x90\x90oq\x85X\x85\x91\"\x1bt\xdd\x7f\xd9\x04\x1fd\xf2\x12!)\x9c\x1bSk3\x99\xff|\xa9\x16b)\x10S\x91@\x94\x14\xa5\x9f\x04$]\x00\x0b<4\xebC\x12\x1e,\xf9$\x8aQ=\xa52\x8f\x89+\xf1R\x16\xc6g\x91\xc3\xa0y\xe56\xe6\xb5\xe6\xd5] \xca\x0cobydn\xf3R\x9cD\xd5\xe31~\xca\x0f\xbf+^\x93\xf3\xd2\xd5L,\xd7\x1bZ\xf7\xbc\xd3\xe3\x92\xf2\x07\xac\xaa\xbbN\x03!C\xafO\x1b\xa4r\x95\xd9\x02PN\x90\xec\x15\xd7\xea\x88W\x07a\xec\x942@\xb9)\x95\xbd$b\x7f^\xa2\xabWc\xd5\xb4\xb4d\xd6\xc1g\x16YB\xad\xccu\xac^\xc9&\x97$T\x12\x17\xabR\xc2\xf9|5\x98_\x9b;Xz\x8d\x87\xf0\xfb{\xd0\xba\x0fo\x06d>-\xdav\xa3\xd6nT\xbf\x85\xf5A\x06X\xd5\xe8\xc1\\\xfb\xf2\xa1\xa6\x8b\x92\xcf\xc7~I\xb0\xbe\xe8\xebhMt\"\xf4\xba\x9a\x04\x8d4$\xc9\xf5\xd5\xbc(\xc5\xa7\xcb\x92\x8aL\x0d7\xffo\xc3\x87\xe9_\xad \xf6\x9b\x91W\x92\xa2t\x93\x11\x05\xf6O\x1c>#\x93\xc7Q\x91\xa5\x05f\xe6w\xde\xd2\xe3\xe3\xa6_\x96~\xb0\xa2\x07\xb5xI\x05.\xbe%4,\xa1\xdd\xb7\xa4\xe0\xbd~5\xb4G\xec[\xf4h\x82\xd7\xb9\x9f\x14\x0b\x92\xcb\xba\xd6|\xa3\xd75\xeb\xcfI\xdf\xd0(\x8f\xe9*8\xf4\x98u Jx\x9c\xb9\xe9$\xa4[\xf9\xa2\xca\xb1Q\x92\xf3\xf2\xe6\xaa\\\xc7\x16\xban\x0c\xce\xe9\x1e\xf0\xc2\xcaV%;(\xa5\xc9\x0ed\x17K\x80pa\x84\xed\xca?\xb2\xebT\x9f\x94`n\xf1\x8938\x84\x93\x0b\xca\xd0\x15\x9byQ\xe6n\xea\xc5~Q>MBr\xfeb\xe1:7\x9d\x11\xdc\x80\xe9h\x0c\xa7o\xbd_\xd3(q\x9d\x99n\x9b\x8a\x0b\xed\xfc*D\xd5l\x08=\x13\xd4\xc9\xfdpdZv\xe0K\x7f^\x99{\xc8y\x99\xfbA\xf9\x84\xe7oz\x92\xa7k\xde\x8fF7\x98W\xc4\xc8=2\x18\x84\xe8\x85!<\xb43\xcc\xeaG\xe7\xf3\xdc\xc0 i\x9fR\x1aTy]\xd6\x99+\xe8\xc7%\xb7yB\x8b\x17\xf9\x8b\x8c$\x1c3/eIq|\xa3\xc6\x16\xaa\xfa\xec\x06\x07\\\xd8\xa9\x06\x8a\xb88We3hw>\x863\xfd\xa4\x83q\xe2\x9bYf`\x11 #\xff\xb5\x9aM\x91\xcbc\x06g\x83\xc7\xa2|\x81\xb3\xdb\x14\xf1\x94\xe3`)u\xb8\xce\xa8\xfa2\xe7< $%\x96\xd6\x86\xf9\xa6\x84\x8bt\x93\xc3<O\xcf\n\x92C\x98\x92\x02\x92\xb4\x84b\x93ei^V#\x88\x92%\xcc\xa3\xc4\xcf/`\x1b\xf9\xf0\xcf\x1f^\x81\x8b\xa2\x93\xa7\xca\x06\x8e\x9d\xa4\x04\x00}\x85\xeb\xe3U\x87Oe~a\x98\xfeu?\x80\xe1\xc7\xe3\x17?1.\xc6-G\xd5\xa0\x01\x146\x15\xc0)\x0c\xfc2X\x81\xd9\x14N\xdbs\x02?\xf9[\xc9\xc4\x16\xc0\xd6\x00^\xf9g\xc0\x04\xad\xd9\xbf\x92\x7f%\x94\xbfQ\x8b\\jD\xd6-\xe2\xca\x84\x8a\xcdlUzO z\x89\x14x3\xd8\xc2\x0dp<\xf4\xe0\xd6\xbf\xc2\x19\xef\xb5z`\nm&[\xfc\x9b\xe7\xeb\xb8\xc1V=\x04W\xac^\xd0\x12\xb04\xf8@\xce\xcb\x9f\xd2\x90\x14/\x92c\x7fM\x9eE\x89a\xa0Q\x12\x92\xa4L\xf3\x19\"\x80\xbcs\xa3\xf1\xee\xd3n?\xe5\xdd\xe9>\xd7r/\xda\x99f\x96k\xda\xe7\x06'\x84\xa2\x81\xdbN~\xc8x\xd7\x9b\x14\xe8_7\xb3\xd8\x8f\x92\x9b\x8d\xd9\xff\xc8\x036\xf0k\xc2\x88\xa7\x181\xcc\xe0\xe6\xff\x8d\xd6\xfe\x92\xfc\xebf\x0b\x87\x12\x8f\xbb\xfd\x14\xaeSl\x97\x8e\xd6\xb0\xd1\xa4\xf9\x0e8\xa8Fv\xc0\xd1+\xdb\xd7K\xed!\x80\xf9\x9ed\x9a\xcb\xe6\xb5\xf6\xcf\x7f\x89\xc2r5\x03g\xba\xbf\xff\xff\x93c\" \xe5W7\x94\x073\x1d\xbb\xa8\xd0\xc8\xf0\xb9\xf37a\x94v\xe6\xce\xea\xb8P\x9f\x8d\xf4\x8bzC\x117G\xaa\x1d\xb1tA\xd1h\x1c\xd7O=\x9d\x11]\xado\x96\xacL\xb5\x89\xe8\xc48\xcc\x7f\x88n\x1f\x04O\x17P~\xfc\xbdQ\x9e\xcbtE\xe22o\x0d\xee\xe4\xf5-\xec\xc3C(lw\x80z\xf9\xad\xcd\x7f\x91:\x9c\xf1M\x92\x93 ]&\xd1\xbfIX\x99\x89p\x8e\xbf\x16\x81A\x94\x89\x10A\xee~\x81\xd4\xdd\xd3E\x8a~\xca\xd9/4\xa4\xf8\xd3M\xe4\x06K\x91@\x99\x8a)\xad\x8d\xf7Z\xb7\xa5\xe5\xa5q\xa4\xe1\xc5Vg,\xc0\xb0Tz\x9e*]\xab\xacm\x916UH\x98Yu'\xcb`\x95\xef\xd0}p\xf7\x8e\xc4\x88\xa7\xd7}\xd6\xbe\x9eY\x1c\x95\xeeM\xf7\x9b\x7f\xdd|x\xf2\x7f\xbf}{\xe3\xdb\xd1\xcd\xe5\xc8[DqIr\x0b\x0fK\xfe!\xc7\xa9\xb2\x0dEkY\"\xdc\x8e\xfa\xba\xdd\xdf\xc8\xb6\xbf7\xbf\xf9\xd7\xcd\x1b\xac\x9b\x9c\x11 \xda\x0f\xfb\xf6\x1f\xc6\xaf\xfe\xeb\xa6\xddw7\xb6\xdf\xb5\x9e@\xec\xc0\x9er\\\x80\xc8E0\xef\xf0^$~\xf8\xbdn\xd6\xf8!\xcf\x9d\xd9\xed\x850JuM|\xf0-Li\x13\x0d]Gm\xcb\x9b\xbe\x85\x87\xed?g\xf0\xbb\xe4\xdcg\xb1[\x82\x83\xed?G\xbd\xad'a\x89\xfb\xa01\x1c\xca\xf4\xa6\x01\x1c\xc2IGeSg\xb2\xa5\x7fu\xe2\xac\xe9x\x17c4\x07\xbb\x0b8\x042\x86\xd4]\xd8\xb8\x13\xf3uR)\xeau!]\xec\x14wK\xd6^\xe4\x96\x94uq\x1e\xc5i\x11%\xcb\xd7\xfe\xd2\x81\x19l\xf8\xdd\x17\x19I\xea\xbb>\xbf{L\xe2E\x1b\xdeyM\xe4\xb9\xbe\xe5\x01\x81\xed\xa3\xf7\xfdH\xe2\xba2\x86TeR\x8eLI\xeaX\xfdq\xa4\xe8\xbd\xe7\xad\x81R\x1e\xdf\xa7\x88\x15O&\xf2\x9e\xd2\xad\x95\xbb\xc9\x18b\x85\x92\x0fK\x89\xc3\x0d\x88\xfa\xef\xa3b\xb69\x83us7n\x8c\xa1\xd0\xd9Y(J\xa4'%L@\xe7\xbe\x1dVP\x07\nM\xa1|\xb8l\xb9\xf0\xef\x0c\xe7 ov\xbb\x1aV\x8f\x109\x1d\xac\x9c\x057 ds\x0f7 \xab~ET\xe8\xc4\x80\x05\xec\xcd\x18\xb0\xeb\xc6\xf0kh\xd0\xa6\x0eN\xb4\xc7\xc3\x81\x02o\x91\xe6G~\xb0\xb2\xdb\x1e\xd9 yK\xf7_\xf7\xe4\xa42jfw\xaa\xf0/\xed\xedu\xfc%F\\\xfb\xfb\xaf\xa6o\xe9%\x12\xb6\xde\xfc\xfb^\xdd\xc0\xdf!'\x19\xf1\xd1vB\x99\xbaoVe\x99\x15\xb3\x9b7\x97Q\xb9\xda\xcc\xbd ]\xdf\xfc5M\x8a`\x15G\xc9;\x92\x977[\xf0\xdf6\xbe\xd4\xfc\xe8\xa34\xbb\xc8\xa3\xe5\xaa\x047\x18\xc1\xc1\xfe\xf4\xf6\xe4`\x7fzg\x0c?\xa6 \x1cW\x1f\xf3\x9a\xef<\x8b\x02\x92\x14$\x84M\x12\x92\x1c\xca\x15\x81\xe7O_\x8b\xdbM\xd0\x9b\xd5od\x06X\xd4c3\xb3\x842\x7frw\xdeq\xe3\x08Ab\xaf\x12$\xc8\x08\xcaU\x9e\x9e\xa1\x9d\xe1\xf5EF\x8e\xf2<\xcd]\x87\x9cgL\xdd\xe6\x03\x7fI\x92\"y\x8a(]\x8e*^\xa3\x0fr\xd0\x05\x81\x1b]0\xe1\xa9@\xc4\xc1\xf4w(\xfb\x1f\xca\x19\xf7A\xa9~\xc3\xce\x98\x8fX\x16\xf4\xfe\xc4@S\x9d\x97Vg\xde!\xc5\x1b\xde\x97\xca\x1e\xb1O\xb1\xa9\xfd*z\xc7|\x8d\xa5\x00\xaa\x97\xd1\x0d\xe3[\x98~=\xa2''\x0b]qS\xb8q\x88F\xf8\x12\xbe\xfd\xf6\x10\xa6c:\xc4\xc3\xee\x18E\x8b\xf4P\xe2o\xb4\x1a\x1f\x86\xed5cxw:2\xe1\x82\xc2\xbb)w\xc9\xc8+\xd3g\xe9\x99\xa8D;\xac\x0f\x1f\xdd\x99\xed3,\xfe\xba\xa82\x1b\xd0_\xf7F\x7f\x8e\x82\xaf\xdb/\x05f\xd4\x05f\x84\x17\xfd\x80h8\x81\xe0<Q\x82\x9c\xe7`\xdd\x91\xa4F\xf6s\x7f\xfd\xfd\xc5S\xca\x80G\xe5\xc5\xc8\xadS1\xff\x83\\\x8cE\xc4\xbc\"\x83\x80\x00}\x94&\xc5f=,ks'\xbf\x83\xba\xdb\xa5\xa4\xdb\xa2AL\xea9r\xcbN\xa7\xa5\xdd\xfd\xb4eV\xae\xd4\xd3G\xa3\x0e\xb4\xf4\x05\x12I3^\xe7\x17\xe9\xa6D\xfb\xa7\x1a8\x17\x196\xfc$ \xb1\x01\x98\x95\xde\xc9(^\x91R\xeb\xf3\xc3\n\xef\xf8q\x9c\x9e\xbd\xe6Iz\xd4\xc0\xac\x1c\x9cH\xe6c,\xdf\xbbaE}\x8c \x14\x98\x80\xa9K\xa0\x80\x85\x80-\xdd\x8c\xb2\x1a\xd6\x90@!\xac\xfag\x91@aU\x01\x1b\xf3vo\xf9\xec\x97\xab\xe7\x86\x0c\x85k<\x80\x9cj\xa1\xb0\x18\xaa\x1a|\xc9\xc0\xc5B}\xbf)\xcbT\x9b\x08\x00\x93\xcbb\xd23\xad\x96\xee*\xa2\xbc\xf4\x15W\xc5uU\xe1sW\x95~uH\x9b\xa5?\xdf\xb9\x1d\xcc\x1fi\xd7\x8c\x18Z\x19\x95\x9a\x04\x90\xce\xcbjsc\xddX]*Qm\x96\xd0\xaa\xc8\xb4&eG\x8b\xeah#\xacZ\xc4Lm\x12\xa9\x03\x85R/H7I\xa9\x8f\x13\x1a\xb8J\xea\x1a\xb8\xe2\xd2\x86\xad\x0eJ\xd8Y\xd3\xd8\x1dZ\x1a\x90\xab\xd3\x04\xb3\xb2\xeeq'sd=\x00\x0c\xabJ\xfc\xb5\x06\xe9\xe8'\xf4)6\xaf\xaa\x1f6\x81\xb8\xed$\x9b\x03\x12Yj\x85\xec\xe6U\xe9\xdf\x91A`\xc1d\\;R\xb9\x12x\xcf\xfd\xcc\x8b\x8a\xe7~\xc6\xb4u*\xf3\xa8\x9b6\x1a\xb6\xcc\xac\xa0\x1a\x8f6\x133\xf0\xbc\x8e\x86\x8c\x89u\xc4\xe4\x86)\xa8\x92\x86?\xbc\xc1s\xaf\x1dufH\xe4\xd8\x0c\xa64\xa4C\xcc\xfd3\xa4k\xc6\xd8\xb8\x8cA\x855\x8f\xf3K\x84\xc7\xad_\xf3\xd1\xee\x16\xab\x1ci\xbf\xc3\x82\xf5X\xdcm\x94\xa0\x0f\xa3\xe3\xa1S\x0d\xbb\x970\x84\xd7~\xa3\x0e\xba%\x15\x0bl\xf7\x86\xe0\xa0\x9bov\xd8x\xf3\x1a6\x02P\x0d\xf99\x1b\xcc\xcb\x0c4\xfc\x18\xf0\xec\xcc\xcfy\xcaeM\xa0,`\xce\xd1#\x96d[\xe7\xaej\x97\x95\xd2\xecGgG[\xc4\x19\xda\xa0\"\xbb\xa7\x85\xcfZQ\x90Y\xf3\xdc5\xa9q-\xcb\xade\xa2iy\xecc\xe7P}\xc2\x89\x88\x87\x92n\xd9\x0b\x0e\xe8\x9c\xd6&\xf0\x0e;?\x83\xbdi\x1b\xa0%\x1c\xf4-\xde\x0d\xa9o\x06'\x1d\xa5|MdN\xde\xd6\xd3\xd0\x8e\xbb\xcc\xfe\x0b>\xb9\xaa\x8a\xf6\xa8\xe2\xa8\x8e\xceKM1\xef\xb4[\xb2;U\x97\xecN?\xbeZ\x88 t\x9d\xb1\x98-\x8b\xe6z\xddReh>t\xb7Jy\xa7\xd3Sr^\x92\xa4\xe8\x1d\xf6\xef\x99\xe7\xd4\x0c\x9c1\xf0\xa3)1\xd7\xda\x8e\xae\x1bB=e\x9ecG\xeb\xac\xbc0\x94\x89\xef\xc5\xd4\x8a*\xf1\x98S\xb5~'\x12\xfa\xc9\x88\xeb'\xafU\xc5x\xd5\xc8m\xf0\x10\xb1B\x85\x88Q\xc1\xbf(9\xea\x98\xf9S}\x02\xfb\xfc\x0b\x8f\xa3\x02)\x9d\x14\xa1\xf9\xb9\x8f4\x0f{\x8d\xda-\xf4\xf6\xbb\x0c\xaew\xf4\xa9-\xd4\xa7\xad\x9c\"\x0e\x9d\x96\xe9r\xa9\x11>B\xdesY\xfa\xe7\x9e\xeb\x86\xba\xbfQ\x92mJi#\xcc\x04\xee\x04+\x12\xbc\x9b\xa7\xe7\x12MY\xa3\x0b\xfd\x87\xf8\x1e\x1e!\xa8t\x90(tj^\xc9\xac\x9c\x8c\\Q\xc1\xda\xe3\x1f6\x1e\xb7\xa318\xc7$ \x01'\x95mL\xa7\xe7#\xf4Y\x95\xe8\xff\xa49\xa1\xe5&\x93Pj2Q\x94\x93T\xa4\x88\xbeu\xd0\xcb\x0b\xf0%\x17\xb4\xdc\xb0ag\xd4\xb0\xcd\x05-v\xe0.f\x82\xa1\xeeG_}\xd5\xfa[-F$&\x1bD\xc3\x02\x90TC\x18\xb9\x89'$\xc618\xcc9\x03\xad\xcb\x88\x13\xcc\xbaLD^\xc2\x84\xd5PB\x91\xbfOG\x9a\x96\x14\xebCK\\\xdbai\xb2\xad\x94\xc8y\xad\xc2W\x03\xa5\xd6\x9af\x1fS\x1aX\xc9\xb4\x9b\x1a\x94\x8a\xc4\xda\x05IxT6\xce\x15.\x04N\x1e\xe5\xe4\xdct\x0c\xfe\x186*S\x10\xe6\xf3\xe6\xd5*X\xcdA\x8b\x8c\x05\xc2\x00c\x9ci\xc6KX\xea\xf6\x13\x10u M\xd3\xc8\xca\xb5WHg\\\x18\xb5r\"\x19C\xae\x98\xdbF\xf4\"\x96\xf0`k!\x0e\xb3\xaf\xbe\x02\x07\xb5Y\xb8\xdf\xd2z\xa1t\xfa$\xc1\x9a\xe9\xa2\x96\x01\xcf\xc3\xa88>\xf3\x97K\x92\x1f\xa0N\xd6\x87\xaa\x8d\xf3I\x9d\xf9\xf6\x8f?\xd8]L\xcf\xcbi\x11\x8f\xed\xad\xefW w\xabT\x8aj\x88\xc67f\xd8\x0b\x9e=\xea\xab\xaf\xc0m\xf4A\xd1\x83\xddZ\xaa+`\xef \x07\xb0\x1e}tY8h\xb2Y\xcfI\xfe\x9a\xeb\xc7F\xae\xaf\x88\x93\xeb{q\xc90\xdd\x1d}\x9c|\xedU\x12\x86_\xa28~E\x02\x12m\x91;\x91\xd5\xdc\xb7\xce\xc5Ps\xea\x9fxw\x99R\x88G\x97\xda\x83Hd\xa2\x02 \x1b\xee\x84\x1cf*3\x9a\xcd\xeeJ\xab\xed\xe4F\xad|\xd4#q\xa8\x07,%\xf5h\xc4Q=\xd9\xac\x91w\xf5\x81\xe5b\x88:\xf7u\xad \x17\xcd\xc6{53lJoP\x18\x86\xd2\xd84\x1b\x8c\x03\xa1\xff\x9d\x893#'\xbfm\xa2\x9c\x84\x8cT\xe1\xae\xf2\xd9\x19L\xf72\xba\x89x\x8b(/J\xb7\xb3\x01\xb1\x90e\xc1?+jZ\xdam\xc7bTe\xd1\xee\xee\xb4\xfe\x86lo<\x99\x18\xf4\x01\xbc\x05\xec\xce+\xc3q\x9fX\xee\x8f|@V\x8e\xb4\x865\x98\xcb#.?sm\xaf\x9e\xd7 Z{\xfe\xa6%\xaa\x0b\x95\xb7\x1e#\xad\xe9M`Mo\xc2\xea\xb3\xe6\n\x0f\x85\x91\xde`\x95\x07cj\x11\xafX\xa5gGB\xdde(\xef\xc0\xa0\x1f\xa5\xebu\x9a\xd8\xbcs\x81^\xd9\xce\x8fE\x9a\xb0\xcc\xe7O\xd2|m*)\x9b\xbb\xcc\x98\xfc=\x0b\xaaQ\xc2\x9e\n\xc7\n\xc6n\xa8\x01\xcf\xe0\xb0\xc9\xa2\x9c\x9a\x0b\x98\xceM\xf6\xac\xb6\xc1\xc9`\x15Y$Zk6\xd4\xf6#\x83\x95)\xa8\xec3\x85W\x15S\x10\xd8\xea\x06\x06\xbbP\xd0\xf4\x8f\xa2\x9fh\xa4\xf3\xc1{\xf4\x135\xcd$E\xd9\xc8\\hot\x92\x91I\xbbwk\xf3\x93\xa1\xf4X\xc3\xc2\xa3\xc9\x05\x04\x83\x8b\xb65\x8dL\x81\x12R\x97\xe1\xe4\x88\xe1\xafm\x0d\x8ds\x06nSC\xe3\xb8\xb13\xb8\"\xddT&\xa4 \xde\x94!MEC\n-\x93\x12P\x89^\xfd\x81\xef\xea]\xb9H\xf3\xb5\xaf\xed\xe5\x0b8\x04\xf4\x81^!7Rv\x18\x11\xed\x86x \x87\xf0\x82\xbdP\x1a\x10\xf45%\x00\xb47\x8f\xfd\xd2wL5\xf8\x9eS\xe8'\x15t\x94\xd4\xa1\xe5\xea\x97\x9e\xd6\xc3\xae\x19\x0e5\xf8\xaf\xa2\xf3(\x0cD%Y\x17T\x16\xc0\x81t\xab\xc95\xaf\x9f\xe0\x10\xde\xc1Cx\xd7\xe5\xa1\x1cM$\xe7+8\xc4\xc0GW\xd4\xa2\xe8\x12\xf0\x91[Vy{\x95_y\x0c\x87\xb0n~e\xe0\xfb\xcf,\x12Y\xbd\xb1\x80\xf9\xcd\x02\xe6 \x1c\xc2\xdeT\xab)h0z\xcc\xe9\xfeY\x8dOl=:\xec\xe03:v\xda\xc1gM\xbew\x8c\xfd\xe1\xb7\x84(\x87\x86\xe37\xf5\xf7\x04h\xe3koh\x9bo\xea\xf0e\xda\x03\xec\xf5~\x1b\x8e\xf5\xed\xb7\xfa[U\x1b\xe3f\xccB\xd9\x15G\xb1\x02FWL\xd6z\xa4\xe8\xf3\xf6\xb3\xdc\xfbH\x17&\xa8\xb0\x99\xd9\xba$4\xdf\x8c\x12\xa7\xe5\xde }\xe9\ns\xf8\x0fq&\xba\nC\xffSx\xd82#\xd2\x06\xa1\xa2\x070\xeb=T\xf6\xa6=\xb9\xf8au\xc6\x00VF]\xddC\xabT\x0dA\x1ac\xbe\x10\xdaS\xf5\xd9\xa7\xea\xaf\xf3?\xff\xef\xefN\xc3\x8f\xee*f\xb39Y\x9a:\xe9cx9\x86_Q\x0fu\xe2\xc0\x0d\xf8\x15n\x80\xf3\xd6\x19\xc3w\x18\xc2\xb7\xf3\xac\xb5z\x92\xa7\xd9\x84\x9fg\xca)p\xffJ\x1b\x1d\x833\xd2o\xb5\x1d\xa7 $YN\x02\xbfT\xad\xcf\xfbq}\x96\xd6\xdb\xbf\xf1\x16\xc6\x846\xfe\xfep\xab\x15i\x9c\xe4\\g\xdcb\xdbq\xba\xc6\xb0\xa4}~%\x94\xe3\xaf\xae4G\xfa\xb1\x89\x9dgnW\x14o&\x14\x83\x0c\xeeR\xe7\xff\xb0H\xa9~\xfe\xb3\x1f\xeb\xcb\xb0\xc8g\xa8N\xa0\xbf\xa63\xf2X\xcc\xc8\xe3\xff\xf8\x19\xb9\xc2\x1a+;8wV\xdb\xa9\xe1\xe2\xa9!\xca\xe7Zz\xcc\xeb\x9f\xc8\xbei\xc2\x8a\xbd3\xd4\x0b\xc3\x1f\x7f\xc0\xde\x13\xb3$\xab\xed\x87\xca\xf9\x85\xb2+\xea\xb5\x14\xbdw\xbe\x89\xbe\xfdn\xebG1\xa6\xe2@V\xb4\xf8\xe6f\xf4-=\xe6\xe0\x06\xbc\xb1\x88\x8eo^\xc2|\xaa\xc1\x8f\xda7\x8f\x07\xf5\x8eU\xc9\xcd\xde\x8fZ3\xd5\xe0\x94~\xfb0s&\xd82\xbbi\xe3*A6i\x8d9\xfbM9\x98\xd7t,{\xcf\xb5'Z+\xcb\x13\xc6\xdc\xce\x0cY\xed*)\x07\xcb\xebP\x94\x8a\xcc\xd3\xa3\xad$o\xd0uX\xebM\xb8N\xf3'5\x84`\xabf\xf0T\x0d\xd4\xd8Z\xf2\xedVK\x9d\x8c\xd5\xa2\x14\x0f&\xd0p\xb9m\x83\xcfXx\xbd%\xef\xbb\xabV\x84\xd0\xc5+fB\xccc\x7f\xea\x1a\x12\xf5\\^(\x11\x087\xc3\x0b\x0d\xc5:\xd2-\xab\xf5\xba\xd5\x0e\x96\xdd\xba\x88\x06\xa4\xe0\x0e\xd9\x9a\xacVvZ\x1f{\x8d\x8f\x98\xb3\x8e\xd6A\xb3*\xa2\xf6\x8d<\x89\xa5\x84H\xefX\x01G\x816M\x1d\x8en\x9a\x84K\xda\xac\xa9\xc9\xa9\xec\xe0\xc7\xa4,\xa3d\xf9$\xcd\xdd\xa0'g4\x183\xcdD\xd4>k3\xf8\x89\xb96PY\xf5'\xe4U\xd4\xaf %\xa7~\xf6\xae\xca\x89\xf9\xfa\x97R T\xaeT\x81\xca\x95*P\xb9R\x05*W\xaa`\x98+U\xe0\x16\x8d\x8e\x06jO\xe2\xe0\xe3\xfb?-l\xfd\x9f\xbe\x04\x98\x0b@\xfb\x00\xf38\n\xde}j\x87\x17k?$R[?4goevS\xc30\xcb\xe0\x1aU\xferma\xe2m\xfd8\xe2\x85\x1e\xfcu\xe1\x9e\xa4c\xf0\x91\x02UO\xbe'\x8b4'\xfcp\x12\x00\xa8\xb7\xe3\xb3\xe4\xa5 \x7f\xca|::7\xdd\xd1\x18\x12\x8f\xf0?4\xc7\x82\x18\xb4\xf6\x04\xce\xf0\xf4\xd5\x9c\xa3kn\xe1\xe8\xfb\xec\x02\x12*\x837\xda\xcb<\x0d7\xc1\xb0\xb8\xfe\xca\xdb\x8f\x8d\\\x92r\x80\x7f\x94\x19\xc9O\x04 \xae^\xf5\x1a\xeb\xf8\xdb?i,\xbf)\xf6y\xce\xa2\xabme\x93y\x99\x00G)\x10\xe1G</\xe9\xe9\xe9\xbc\xd4\xa5<\xaer\x9f\x0b\xee\x83\xfe%G\x16*h\xb0FdI\xc5\xda\xd3>\xfc\xd8f\xa9\xa6\xae\xdb\xb1\x8d\x19X\xee\xab\xb2\xc6H+\xa0I\xd3\xc9\xf8\xaat2\x1bU:\x99B\x95N&\xe6\x0f\xe4\x15\xd0Z\xb9c\xaeY\xc6\x98\xfeG\x84\x1e\xfa/\x0f\x1e<\x90 \xe9\"M\xcac\xa6\xcfv\xa2\xd2\x8f\xa3\xa0\x1b\xa2\xd3\xfa34\xd2'\x03\xe3\x00m\x1a!)\x83\xd6\xab\xbb\xa4\xf6\x93\xee\x94\x1fc\xc72\x03\xaf\x18\x02#\xff\xdb\xe9\xd1\x8e\xa5\x9b\xc0L\xb9`\x00\xf5\x82\x81\xfeEP\xb1\x08\xc62@\xc0\x19\x04:\xac\xb6\x17\xd1\xc8u\xc4\xd6V\xf9\x05C#\x94\x06\x9ae\xe1wVyC\x87\xd0\xf2\xfe\xeb\xe39\x01\xf46&C>\x06\x90\xb7yz\xaaI\xca\x00\x9c>\xff\xc0\xcb\xa9\xea\xe3\xe4\x8dI\x06@\xde\x85\xdd\x86;$\xd3\xc0\xd0.M\xf2\xf4l\xd7^\xed\xd2\\\x90\xc6\xfa\x05\xb8l\x92\x02\xd8\xb1\xddV6\x82\x8f\xdf<\xf3\x1a\x1a\x90\x05\xa1\xf4HR\xe6\x17\xb2\x12\xb9&\xdd\xb1\xf0\x01\xee\xc8?d\x0c\x07\x06\xbf%\x10\xee\xbb'\xfb\x9ax\x10q\xa1\x0b\xef\xc9\xd4\xa2\xda\xcf\x9e$\x1f\x83\x1b\x8d\xaa<\x81\xeaL\xd5\xe2\x12N\xbc\x91\xd7\xf1\x19\x7f;\x12N\xb4\x1dOr\xee=\x02\xb3\xc6S\xa3G\x89\xb86\xb2\xa6Z\x0e\xec\xfa\xee\x9a\xd8W\x8b\xbd\x0c\xe2HJ\xb5`\x97\xf0\x0f\x10\xd7P|\x06\xd6lz \x13\x94\xb8vl:\x92(\xa3?]o|^Fb\xa39H\x13\x9b\xf6)\x97\x80\xb6CGx\xcb\x991\x95\xbe\x83\xa6D\x83\x97\xa0\x80\xe5\xdcb\xa6\x1f\x94F\xfdX\xc3t\x93CHS\xbd\x83\x94c\xeb\x88?x\xcbP\x82\xba)\n\x85x\xf7\xba\x89B\x9fT\x83\x19\xc8\x04\x1e* \xb9\x81\x10xP\xdc\xf93\xa8/\x1b\xfc\xbeDK\xd9g\xf9m#5m$\x90k\xaa/\x19\"m0I\x83\x84Q\x99\xe6F\x0d#SF\x92<\xb7P\\2md\xec_\xa4\x9b\xd2\x02<m\x80\x1b\xfb\x11\xa9d\x9eGi\x1c\xfbYAT2O]\xe0\xd9\xfbu\xb3\xce^\xa7\xcf\xa2\x84\x8c\x1a\xe9\x10\xea\xbb\xfah\x9d\xc4\xf3\xe3\x18\x0d\xc9\x85;\xa0\xb8\x03\xd4h\xe2`\"\xe8\x84\x87\xc2z\x0do]L\xb5\x8f\x86\xcd\xd6\xc3\x98lI\xac4\xea\xab\xc7\xbb\xb7\xa1\x1f\xdcT\xd9\xdb\xbe\x81\xa9\x05\xafE\x07\x1acxiT\x1c\xaf\xd23\xca\xfa`\x9f^\xfa q\xde\x8e\xd1\x1dS9\xc6\x00\x0ea\xe3\x15i^~\x7fa9-\xd0 4|\xc0Q\"\xd3\x9d\x89K5f\xfe\x91Bu\xfe\xb3JF\xea\x8e4\x0f~f^6&$R\xb6\xb5Z\xe6\xe9\xc6\xbe\xe4\x0b[\xf4\xe1\xad\xd8\xa7,d\x03\xd2J\xc7\xef\x85\x8bDAe#e\xa3\xbb(]y\xe3AL\xfc|b\xa9i5R;q\xf1uO1\x10\xa7\x87\xad\x92\n\xd9\xe2Rzn\xc6\xf0\x10\x9c\x1f\xa2\x90\xa0\x7f*\xdd\x05\xc8Y\xaa\xa6$\xd2\xcdET\xbc\xc8HB\xc2\x19h\x1c\xc1\xfd$Z\xfb%\xa6\xe5PV\xc7R.\x88I;\xd3G\x03\xe5\xfa\x07\xc3<\xea\xb6UJ\xf9\x06\x153*\x9dZ\x04\x90\xd5\x17\xf17\xe5J\xfc\xfdP9\xd2\xcc\xc4>\xbf\xb3p\xb9#\xcc \x884\xdcH\x18\xe55\xf8\xf3\xd5\x07\x84\xcaL\x04\x82gv\x8a\x8c\x04\xe6\xe1\x84W9\x9c+\xeb<\xf3\x0b\x93#\xc8h\xa7tj\xb6\xfc\xfc\xa2\xcdL\xeb\x93\xa7C+\xcc\x19gA>\x05\x0c?u\xc7;\x9e\x95\xa5\xe1h\x14\xec}\xd9<\xa2\x94V\xea\x9d\xf6jo\x9f\xaa\x8f\x9f\xf7c,Mgh\x86\xe9\x90\xf4\xa7\x87\xd031\x7f\x1fVg\xaf\xe9+\xcd\x99\x0fx\x08+\xb7\x03\xc5\x1c\xc3\x1a\xae_\x02\x16Co\xc4\xcd\xcc/W\xf8\xbe\xb2\x1f\xc5\xda\x8f\xe3F-F\xbf\x84\xee\xeb\x0d\x7fW\xf5gt\xce\xebFw\xff\xb3UT\x92\xe3\xcc\x0f\x98k;\x99\xe0\n\xabw\x95U\x15Gi\xaa\x01>\xb05)\n\x7fI\xb4\x07\x8b\x16]\x8cC\xc2\x8a\xa0\x93\x90\x04)3\x91;3p\xb0\x12\x8aah\xc1&/\xd0\xdc\x94\xa5QR*\xb9\x1f\xd9\xd8\xb0\xb6\xb5\x8e\xe6i\xaa(W\x07\x7f\xe2\xcd\xa3$t\x19:\xe4R\xbb\xb6\xf3\xe3f\x9dA\x99\x02\x1d\n\xc5\x96\xbc\xd6U\x88\x1fm\xb24\xd4\x04\xb6\x13m\x91C\xe5\xbc\x8c\x8f\x92ZtwJ\x8e%h\x9fEE\xe9E\x05\xfd\x8f\xdb\xd9\x0c\xf6\x9bI\xb2\x97\xb8\x9f\xb0\xc7v\xd5%>\xc4\xd2\x804\xc8!\xfa\xe3&\xe8\xe5\x91c\xcc\xa4\xdd\xa7\xd3\xa4Z\xc6\xd6\xe7v\xde\x19\x9f\x90\x90Z\x13I\x0c\x0fB\xc4\xfd\xc8$\xcd~3\xff\x99 \xd5\x95\xd2\xa86\xd6Z\xd1\xab\xf6+\x06\xda%\xd3\xd6\xad\x94\xda:\x17\xd3k9\xce\x88W\xa4t\xc0\xb1\xb1\x1d \x11\xfcd\xff\xadW\xa6o\xe8va\xf5\x8a\xe0\x06\x10\xaf\x88\xa3\x80\xb8\xd3N\xc7\x04-\x81^\x1d10\xa7\xccm\xf2\xa4-\xa51\xfb\xc2\x17\xbd.\xbf,\xf5\xbaA\x95\xbb\xefO\xa3\xe1\xfd\xe2\xa0jQ\x01\xe9\x12>\x87\xe2\x13u\x12O\xdc\n\xd7\xd0\x93\xb0\xca\x92\xf58\n\x9f\xa7\x9bD\x16Td\xab$\xaf\x95\xe3\xcdl\x1fE\x95\xce\xa837\n\xf0*?R\x7f\xb2\xda\xf3!;J>`\xea/\xd2\x1bT\xfbN\x9d\xe6\xa9s\xbf*\x9d\xcf+)0\x9dH\x13G\xa4\xc3\xbf\xc4\xf8?\x81\xb9\xa39\x04\x93\xb5\xa3\xe2\"M\xa6\x0e\xec\xaeV%\xddv\xb3\xda\x89\x89\x82^\xc8&\x8edR^dD\xb0\xb7\xc8f\xba ?\xfe\xa5\x9f\xd1\xe9\x11\x0b4\xd6\xec\xd4\x03s\xcd\xf4\x9c\xf5J\xab\xf7\xd5\xc4\x85\xa9\x06SZp6\xe22\xe9fR\xe6C`\xa5\x953\xe8\xdb\xf8\xa05\x81\x9bR\x8fm\x80\xaeE}\xc7\xda\xe9z\xa5\xdbB\xcf\x98I\x12@\x8fzU\xa9\xf9\x08\x93^~\x93\xe6\x16cI\xb5co\x91\xa7\xeb\x1f\x8fG\xee\x89C\x0f\xb5(@.\xff\xe6\xafE\x9a8o\x1b\x9c\xe3\xf8\xday:\xd3\x1e\xbd\x10!\x06\xcf\xa2\xe4\x9d&5\xfcug\x10\x13\xf7\xb6* \xfdg\xc9\x18^\x05?\x98H\xf9\xc1\xa8\xe2\x07\x93\x11\xe3|\xf6\xbf\x86\x0d|\x03\xc9\xd7\xb0\xa1\xfc`t\xb2i\xf3\x83\x1b ?(\xf8\xcd\x0f\xc5\x08F#M\x12i\xcc\xb2\xf8\xda_\xa2\x05\x17u1\xa7\x8d\x1bLx\xa5\xccn\xa1X,\xb8B\xe6\xad\xd9\xb2\xc5i\xaf3:5\x98\xb1\x96\xc7\x003\xfd)\xf2F\xb7\x87\xa8\xe6G\xe87^d\xd7\xb9\x87\x9f\x80c\x1a\x14\xadf\xed\xf4\x91\x0fq\xfaH\x07\xa4\xcad eK\x7f\xb9$aE\xb8\x0b]\xc6G\xcc\\lv 11\x0f\xf6\x8aB;\xee*\xdd\x92|\x1b\x913S\x8d\xc1\x17\x1c\xceA\xa1p\xb0\xf56\xad\xad\xb7U(\x9d6\xaa\x1e\xf8$\x9f4z\xe8/\x0bg\x0c\xa5\xc1Y\x98y\xcf\x08\xa7\x92\x08\x1dI\x8c\xb6\xe2\x9dye\xa86M\xd5OT\xc2*_\xb8\x84\x9f\x05\xec\xe4\xb6\x00\xf5(sF\x1d\xe8\x9cl\xd4\xee\n\x00=;F\xf7jbPL\xd9\x95\xe6\"\xe9}\xd3\x85\xef\xaa3A\xa7\x87\x1b\x0e\xf3\xa2S\xcd\x89o\x9a\x90\xda\xef\xc1\xe0\x93j\xf4}\x00\xd6\xc3t\x00\xab\x0f-\x0bN\x992\x86PG\x06\xc4U\xa7\xeb7\xc32b\xb36d\xb0\x15\x17\xf33\x8b, \xe9N1$G\x05\xce\xde%\x0d/\xad\xc6\x06\x1e\xc3\xc6\xd29}g_\x0b\x10\x1b\xcc\xa2\xa7\xc6\xf8[q\x898\\C\nSzE\xe1\x0c\xd2*\x19\x93\xc5\x0bt\x8b%Z/\x9c&\xe4\x8b\xec\xa9\x19u\x9b\xc0/s\xb2\x88\xce\xb1\xb0]\xbd\x0c\xc6\xb7W9Y\xcc\xc0\xf9K\xf5\x12\x8e\xc6\xa2\xd9\x8a\xde0\xda\xa1'\x1a\xb6\xfe\xdbR\xb0&\x08&\xca\x8f\xfeM\xe0\x1bVUDM1o5\x0c\xfa?\xa5u\x9cv\x01L*\x0b!J01\xc9\x1eHm&\xad;\x03\xe5[\x83SI_\xa4\xb3\x12D\xa4\x04\xc7Z\xe4\x10\xd2\xc6\xae^\xc9\xcd\xfa1\x1a\xbe?i$.H\xbcS\xfe\x077VQ!\xb0=\xaf\xff%\xf9\xc4\xe5\xf9}\xde\xea\xc7\xe5S\xf964\xb1\xa8\xed\xed*'\x91\xcc\xc3\x98\x8fb\xe4\x9e$\xc8\xdc\xc0\x1e{[V\xe4\xbf=\xab\xd7\x8a\x81\xd7\x1d8I#\xd7\x83\x89Y\xc7\xa1\x9b\x98tJ\xcev\xe2\x9fc\x8fnE\xdd\x99\xc3(\xa5\xe6\x0c1\x9a\x99\x81\x87J\xffB\xa2\xe5\xaa\x9cAN\xb9\x9dy\x1a\xb3,\xa4I\x9a\xaf}m\xfc\x9ez\xec\xb2\xe4\x00j\xf0\x96wl\x9c\x06\xef\xaad\x04\x94e\x1b\xee\x05l%z\x08\x9f\x0b;\xe9\x83\xce\xca$\xf6\xe7$\xc6\xf3HQ#|\x0cI\xdbT\xbc\xb3/\x03(\xdbW'\x1f\xb4\xb0=\xd8\x1c\x1b\xff\x05\xd7B\xcb\xf84Y\xa4o\xf2\x18\x8f'\xfa\xfb{\xbf /\xfdr\xa5Q8JS+\xa4\xaa\xd4\n\x91*\xb5\x82\xafJ\xad\xb0Q\xa5V(T\xa9\x15\xe2Vj\x05\xb4C\xb7\x01\xea\xdc\x0b\xdcR=\xdd\xbf\x16\xa9\x17zsn\xc5\x11h\xdc(\xbeD%5\xe1\x86\x9eY\xab\xb4\xd0\xe8x\xd8\xa95\xe7\x8b\xb5\xd3q3(\x16\x84\xb64\xd9\xe4jR\xe4\x9c\x00E\x1dx\xf3\xea\x19\x96\xc1-\xd1g\xc1\x81\xb7\xbb$\x80\xd11\xb6vn\xd1\x06\x0c\x85O\x8c\xa5\xd0\x9b\x05\xb8\x12l\x053\xc6\xc2\x00\xac\x85\x81\x98\x0b\x15\xf6\x86~i\x90\x89\x93\x01\x1aM\x00h:\x9e\xf3\x94\x9c\x7f\xfc\x01N\xb9\"\x10\x92-\x89\xe9\xc9c\x905\xd3\xfa\x0b\x14\x93-\x14|\x1c\x9a\xac\xfd\xc8\x08\xefc\xf2<\x87\xb2p\x16\xf1\x1fV\x8cL\xaa\x15/mX\x1e\xa3\x86\x8aq\x94.\x96\xf5*\xfc$*\xa3\x7f\x937y<rS\xc3p\x99\xb3\x0c\x95t\xe6\xb1\xaf\xe2\xd8\x80\xd1\x86|\x8c\xc9S\x7f!\xf3\"*\x99\x13e\xa4\x1b\xda\xee\xbdv\xe8J\x95\xe9\x0c\xd5!\x1a\x89\x9f\xce\xed\xc3\xaa\x06\xaf\x1f\xc5P\xa6\xe89\x90S6\xf8Q\x9a\x94~P\xb2\x1b\xf6\x15\xf4d\x91\xdc2Z\xd6\x9eX\xb3\x1b\xf6\x17Z\xf6iiY\x1c\x05$)\x0c\xde\x0e\xcaLD\x8c \xecB\xdb\x9e\xb1v\x07R\xb5\xab\"=j\x1f\x1dc\x06\x87.m\xd0\x0f@C\x82\xb4DE\xef\xb9\xcf$-\x11?\xf1\x81\xf70\xe5\x96\xdd\xa6\xfc\xf2eC_\xe7\x0d\xbd\xc9\x0d\np\xc3f\xdey\x8b}\xac\x9d#\xb1\xaf\x8bK\xeb\xfcfRO@G*P\n\x04\x00\xb5A\xad\xc4\xff^\xd5\x16|\xb9\xc9Ic\x1b~\xd9i\xd7z\xa7E\xc9\xc2`\xf1J\xecvdn!\x13C\xa5\x82\x15r\xb1\x99\xc3\x1f\"\x81\xb0\xac\xc0\xe4\xbc$y\xe2\xc7\x8f\xd3\xc00\x05\x9b\xfad\xde\x92\xbc`\xf9\xd6\xb4o,\xea7Z\x19\x9d\x0cd\xa0~\x8b9J\x18\xe0\xb7\x0dx\x92\xaf\x8b\x17\x8bc\x92o\xa3\xc0\xf8\xe2\xba~1`,\xb2\xe9\x8de3Z\x98q3\x867.(\xe9\xf5\xc5\x9e\xaa\xdd&\x7f\x7f?\x1aye\xfa\xe3\xb1\xc9\x80=\x87C\xb80#\xd4)\x825fY\x0f~\x06\x87\x10\xd9Ud\x04^\xef1\xb2\xe3\xfd\xce\x19\xe8\xcf\x0cC\x8eK\x7f\x9d\x99^9f\xafpv\xc3\x04\xfd\xa8\x86\x16\xca\xbdK\x1caVN'\xcd3\x82\x92\x00\xed!\xa1\xb6\x9f\x9a\xf3\x87@\xa7\xb1\xb5\xaf*1\x05\xa6\xc6\x0e\x065dN\xb0\xb9\x1a\xb3\xf2\xd0\xaa\x16\xb5\xd5d\xe8\xc5i\xc6\x0c6\xeaf\xa8(\x8d^\xe5:~][S\x82^\x94\xac\x1a\xab\xd5\n\x9a\xaaK\xc3\xd7(u\x91\xe8\xc6n,3\xd5\xae+bpl\xd8\xe4\xf1La\x9e\x011IW\x86\xce\xc6\x9aP\xa0G\xb43Sc\xa2\x1e\xd0B?\xa0\xed\xa5uC\xda\xc2.pu\xcc\xe8V\xcb\x8c:\xaf\xe9\x11\x04\xe9\x02\nq\x08\x8dx\x8d\xb3\xb5)X\xc4\xe8\x9f3\x08\x8dB\xbf\xf4g\xb0\xb6An,J\xb74u\xcf\x98\xdbdP\xf7\xf8\xf99\x83\xa5M\x0f\xe7\x9a~}\xac\x85\x9fk\x17\x1e\xf9\xe6\xb9<\xda\xb7\x02\xeb\xdd\xb5\x16\xd0?\xab\x8a/\xb1\xca\x8a\x19\xab\xac\x98\xb1\xca\x8a\x19\xab\xac\x98\xb1\xca\x8a\x193+f\xdd\xabX]\xde%\xfe\xb8&I:?\xc1\x17K$\xbb>\x99%r\x90\xfb\xbb\x9d8\xc5\x14\x9e\x945\xd4\xb1\xf3L\xb5\xb9\xc9c\x1d\x10\xb3\xd3\x08\xee\xc4\xe4\xe5^\xa2\x0c\xa9\x83bR[S\xca\xd3A\xc7\xcc\xea\x83L\xee\x15x\xcdc\xee\x98\xbc\xcaV\xa8\xa6\xe1\xb1\x8e\x86\xd3\xdeh\xf99\xe4\x984\x829c\x085\x06\xbc\x9a\x19\xd4\x9cZ\xcd9\xd4\xba\x91\xb6\xcfA\x85\xa3\x8d\xfa\xa4\xb8\x949\xb9y8\xb0\xda\xfe\xd7\xedp(T\x87C\xa1:\x1c\n\xd5\xe1P\xa8\x0e\x87\x82\x1d\x0e2\x92_||\x92\xaf\xd7\xa0\x7f!\xf9\xe2\xb2%\xf9\xc2/v\x97 Z\xc6\x1cXo\xa1\xf8Zn\xa1\xeb\xc1_\xf5\xf7\xd6\x17v\xea\xcf\xb2\xb7v\xd6/4u\x0b\x8b4Ugp\xfa\x8f;\xf7\xae\xc7\xa6\x157\xffDB\xd1\x97\x94B\xda\x94BO0\x9f9K\xff`4\xe5\x03\x9fO\x1ed\xd7\xc8 $\x17\x06\"i\\\xf4&\x0b\xfd\x92\xb0\x86e\xc6\xdbO\x9e{\xe8\xd2d\xf2\x03K\x9d\x83\x82\xae\xa5\x96\xfdG\xa9\xd6\x90B\xe9\x8e\x13\xa7~\x18%K\x96\xd5\xb8\xf4\xf8\x9f\xc7\xa5_n\xb4B\"\xc5[g\xe1G1 \x07\xbf\x8bn\x85^\xb0\xc9s\x92\x94\x1cC\x0c\xd2\xeb\xef\xef\xb5\x82(\xba\xde\xb9\x1b\x0f\x0b\xea\xd1\x9e\xe5$tF\xdc\xdb\xb0y\xff/\xbe\xefk\xb3\xa07%W\xfa/\x8e\x0dmw{S\xfe\xbb\xaa\x1a\x7f5\x07$\x8e\x1f\xebU\xfaQ\xb2CN\xfa|XK rf\xaa'|\x9d\xce\xa3\x98\xcc`z0\xb4/N\x94d\x1b\xfbTCut$\x9f\x05\xfe\xba\xf2\xe5,\xf6\x03\xb2J\xe3\x90\xe43p\x18\xea\xc0\xfc\x02J\x7f\xa9y\xab\xbc\xc8\xd0\xbeE\xceu\xdf\xee%*j\x12M\xf5k\xd5\xc1_c\x8aS\xe6\x1b\xe2T\xd8\xe28\xa0U<\x84U\x81qs\x14\x94\xdcn\xf6\x81\x13x_O^*S\xf1R\x99\x8a\x97\xcaT\xbcT\xa6\xe2\xa5\xb2a%\xc53\xca\x15\xb4\xeeb`L\xa6\x89\x9cY\xe0\xc7\xa6\xfbR.,\xfb\xf8\\X\x08\x87\xf0\x84\xb7\xef!\xebAwO\xbb\xcf\xfa@\x1a\xe8\x84\xd7v\xf0\xa4yYse\xc0{\xa7\xe6\x96\xec8%\x11iK\xfb\xa4Wmn\x19|\xc4B\xa3K\xbf$\xd2\n\xae\xe2\x8a\x8a\xa30*\xbfO\xcfg\xb075\x12\x0bGI\xe4#\xc3.\x86+a\x80`P\x02F\x18\xc0\x13\x81H\x95\xc3\xd8?\xacq]4\xa7\xbef\x96\xac\xcdc\xaa\xd3dx\xb6E\x90\x8cD\x9boB;\x14U\xa2\xb7\xa1#\xf8d\xfel\x8c\xcf\x14\xe7\xde\xa34)6k]\xfeD\xa8\x9c\xd62?\xf7\xd7z@\xe6\xb5\x16\x15\xbcf\xb6\x1e8\x1a\xc2\x1eC\xe5\xb7\x96\xf9\xe5\xea\xb9E\x9a\x8e\xcd\x003\x0ep\n\xbfq\x9d\xefYE\x1c\x0dk\n\x9c\x82o\\\xe759/\xbf\xcb\x89o\x02\xcf\x18\xf8*Z\xae\xe2h\xb9*\x1f\xa5\xa1\xd1\x81,d\xef4R\xf0\x99\xde@\xef\xed\x08\x8bg\xe2Z\x91\x92\xe4\xbfD8[\xfe\xf7\x17OC\x92\x94Qy\xe1\xfa\xdc\xe7<\x1fyu\xd9\x94\xc2\x19s\xd3\xf7\xb3\xa8(Gn\xf7\xc8\xea^[,\xa7\xd9\xe8\x1c\xdb*\xae\xcf?\x9a\x93\xdf6\xa4(\x1f\xd9\xf7~\xddBb\xfai\xc4\xccN*Wq[\xf8,\xc8\xde\x98\xd5\x8c\x0c%\n\xd5\x03}\xfbK\xd1>\x12~=\xec\x05\x1c\xc2\x92\x89\xc7z\xc09\x02V\x07\x85\xd1[\xed\xca\xaa6\xcf\xd3\xf0b\x82X`\xf0zpB\xbf\xf4\x19\xe4\x04c6f\x907#8\xec\xdf\x8e\x92\xfa\xdd(\xd1\xd5\xfc\x1a\xc3\x9c.k\xaa\xa9\xae\xb9\xd8m\xb0\xa7\xa7\xc8\xf0\xc3\x0dpW\x0d\xeb\xa3\x03Q\xb2\xf5\xe3\x88e\x070\x0d\x8a\x93\xdf\x0b\x03\xadk\x8b\x0e+? c\xf2\x82\xdfT\x8f\x9d\xee\xbc\x0b:z\xd5\xc8\x8d\xce@\xaa\x91\x13\xab\n\xa3bp\x9a\x1ej\xca\xae\xee\x8e\x86\x13\x96\x91U_P[\x87\x11\x97i\x9b\x84Q\xa9mX\xd5h1\xa0\xc19\xa6\xa0(\x13\x08\xfc$ 1H\xd6\x86u\x04D%\xb50*\xd5PF\xeck\xa4\xa9(\xd3\xe52&O\x05\x99\xd1\xef\xbc\x87\xe0<\xc2\x1ebG\xe8+u\xd5\x02\xcd\xd2\xb3\x0c\x0e\xa6\xf9X\x95\xeb\xf8 \xd6q\xd8i\xbe\xdb\xf1N\xceKq\x8c\x89L\xb4\xc0\xca\x92\xa9?`\xf4U\xe3\xf8\xbf\xd5Oo;\xf1\xad\x89\xeb\xa9(\x81\xc1\xf9Z\x81\x9d\xad\xe4\xcb\x9a}\xa9L\xea\xd4\xbb\xab\xf0.k\xc7\x9c\xd4\x87\xd1\xaay\\\xf6D\x1eq|\n\xdf8m\x02\xe0\xf6\x04\xe0\xf8\xba\xef\xfd\xfe\xbe+\xbfW\xf3\x17\xca\x1f<\xaaz\x10V\xcf\xdf\xb7\x95\x03\xdb\xa6x\xda\xe5\x97\x9b<r\xfb\x08\xee\xf1\xfa\xcd\xcfH\x13.\x8a\xdcO\xa5\x8e\x1f\xe6nAz>\x98y\x05\x89\xd9\xfdY\xcdLDU\xde\x10T/\xa5B\xbd\xa4\xd0\x1cQ6\xf9\xe6\xf9:\xbe\x19y%)J*\xceJ\xe1(\x83\x8c\xcbf\x02D\xab\x08<\x84\x84\xc7\x80\xd0\x9e\x9e\x9e\xafYu\xb0\xe6M\x99\xe7P\xb4\x00\x97w~\xef\xf0\x10\n\x9db=\x86C\xd8C\x8e\x0f\x93\x17\xfe\xfe\x9e\x8e\xb2\x903M\xc4+HyLY5W'\x1c\xe1fW\xd4\xb0\x1e\x8d\x9b9\xf1\xf5\x9eH\xc5?\xd7\xb1V\xa1\xd7P\x06(\x12\x9cK\x94u@\xe2\x82\xe0\xdc\xb6\x92\xf3\x17x\x0c\xb8\x0e\xce\xb1\xaa[\xfa.i\xbb\x83L\x88\xacEMc\xda\xcf\xb5)\x0d\x17\xf8\xd97\xad7\x14\xd1I\xafXvK\xb7\xe3R\xae$J\xbcE\xe2E\xc9\x82\xe4\xc7X\xe2\x7f\xe4\xe6<\xdaF\x9dg\x8d\xbe\xb7\xa0h|\x8c=\x16/\xa6\xa8\xefT\xcc\x07+\xb0\xf0K\x1e\x95\xe4E\x12_H\xf3]*\xe6EL{kf\x14\n3\xa1\xf7Lj\x19B=~\n\xf4\xcf\xb5\xa44\x99q\xaf\xf0}\xa2\x90\x90\x0d\x8bOw\xd1i]bc\x0c\xa9|\xdc\xa7C\x06\xee\x92N\xed\x0e\xf8\xe3\x0f\x08G\x0c^\xfa\xf96\x03>\x14\xedl\xe8p\xde%\x98\x89\x82`\xa6\x1d\n\xac\x82\xa3\x84=\xa7Bl\xcb\xe0\xea\x95y\xb4vYA6\xbd!\xb6\xb1\x85\x95ek9\x99\xe8\xc7\xba(\xb0\xb3\xc3J\xea\x8eUh\xa8\xa6k\x0c3+\xd9\xf8;v\x8aURc\xbe\x14^\xc2\xfc\xa8\x0c\xc9\xef\xe5\x96\x8e\xeb\xe9J\x7f\xdd+\x10\xd0\x1f\x0f\xee\xdf\x1a\xfd9\x8a\x10\xfc\xf9\x1c\xc2\x189|\x92\x06\x9bK\x96 \xe2$\x88\x15\x94\xa1\x1cB\x98\x068\x0e\x8f\x9c\x93\xe0Q\xba^\xfbI\xe8:A\x9a]\x98Sd\xc9\xa8\xd4\x07\xf3\xcc\xf0\xb8\x12R\xcd\xb4\x95\x9ck\x88\xeb9%W\xe0\xfd\xae\x0e\xce\xac\x8bK:\x8fX\xee&\xd3\x17\xd5T\xb2]\xbf'\xa3\xd2dQ\xaa\xb3\xcb+\xdb)\xc9y\xe9\xe7D](\x11P\x14CTj)\xbb\xf0\x8ezrs\xe2\x87\x8c7b\xb6q5dk$tZ\xd4\xa0V\x89A[\xc52/\x91\x0bT\xb0E\xf2)\xfd\xa0\xe6\xf7\xebP0\xa7\x7f(m\xe8\xa14\x95\x9dJ\xf4\xc9\xf4\xbe\xecX\xa2O\x1eLUqlj\n$\xbc\xd1N$\xa5\x08(\xe3&\xab?U\xd9|\\gE\xfc\x90\xe4EW$\xa5\xe2h\xe9e\x9bb\xe52T\xc3\x84\x9d\xec\xef\xc9?\x9d\xb1x\x9d\xe5\xd1\xc5\x18N\xfe\xf8o\xce\xdf\xb0zf\x9d\xa1\x08n\xc0\xdf\x9c\xbf\x8dx|\xf4\x06M\x12*V\x93\x9e\xaa{\xfbrTC\xb1Wa@\x0e$9C\xc5U\xe6\x17\x8a\x8dP94.\xc6h{\xea\x9c\x1b\xdd)\xf2HR\xe6\x11)\xa8\x90\x04{.\x16\xba\xa1\xc7i\xe6%\xe4\xbctG#/L\x132\xfa\x9a\x8f\xc2d\x8e\xc4L`6\xd6\x91\x15\xefZ\xe3\xc8\x0d\xc7p`R\xcfS\x9e\xedd\xdfP\xa1b\x8dPS\x89#\xa6\xb8(\x12\xad\x1b\xab\xff\x038\xdd\xd5\xde\xc2\x0dpf\x98?m\xcdW[N\x0b\xfa\x84\x00\x02\xbf\x0cV\xa0>Yc\x86\x11\xb8\xc2}{\xc1{XD\x89\x1f\xc7\xaa\x15V\xaf=\xbd\x98\x12%\xf3\xf8\xa1\xd5\xf8\xed*\x06`h\x0e\xf8\xd6\x89GP\xae\xf2\xf4\x8c\xbb\x07u/\xc9<\xfc\x97\xfa/\xfaA\x8e\x8a\xf34\xbc\x90\xa5\xd6\xa1 \xcez\x13\x97Q\xe6\xe7\xe5\xcdE\x9a\xaf'\xa1_\xfa\xcc\xd1\nG\xe6\xbc|q\xfc\x9a\xfd\xdd\xdd\xbb\x1aNa\xa9\xd9\x8f\xc0-|:\xa7\x8e\xb9f_\x82q}\xaa\xfdy:\xc6\x8c\x1c\xf2\xfd\xc9&\x057\xe7\xc51\xf9\x8d\xefN\xdas\xf7\x14\x0e\xe1\xac\xbb;\x97\xc6\xdd |\xf4G\xfd\x8dw\xca7\xacq\xfb\x01\xcf\xf5qd\xdc\x82\xc0\xb7\xe1\x91v\x1b\x02\x9e\x08|\x0f>q0h>J\x8a\xd2O\x02\x92.j\xae\xdb{\x12\xa1\xb0\xd0\xda\xa0\xe7t\x83\x1e\xfe\xffq\x83z\x89\xbf&\xf4\xef\xaf\xcb\x8b\x8c\x1c\xb2{\xf4'\xdf\xb9(P\xf7\xde5\xeem\x90\xe25X\xedq\x10\x98\xb4?F\x8c\x91\xdb\x05m6\x9f\x1e\x9f\xe8\xb5\x87\xc1\xfcg\x8d=\x7f\xa6\xdf\xf3`\xd94\xf0}x!\xf6\xfe|\xe8<I\xa8\x1b*>\xabe\x0f\x1b\x94\xb7#E\xb5 \x84\x97\x13t\x07uo\xfe\xeb_\xc9\xcd\xe5\x18\x1c\xa7\xab\xd8\xe3\xe3/e\xe5\xac\xdb\x1c\x8d\xcf\xb9\x93[\x8aJz\x9b\x8f'\xc4^7F\xefK\xcc\xca\x97\x98\x95O\x11\xb32 Z%B\x95c\xb0\"k\xab\x9a\xd7\x0dp\xab\xcf\x0b\xf1#29\xd5 c\xa0.K\x1b\xb3\x072\xbeD\xc1/\xa0#\\U_\xb0\x1e\x19\xe2J~\x0dCiZ>\x98\x97\xad\xe3-Q\xde\x148\x01\n\xeb\x1f305\xd6\xff\x9aV\xf0n\xba\xa7\xb1\xd0\x17\x8e\x82H\x9b\xf8\x10\xebr\xdd*p\xcc\xa3\xdb\x1b\xb3x\xfd\xf2c\xff\x00\xca7\xbd\xd2\xad\xea\xbc~_\x91\xf64\xec\xa6\x993;\xae\xd4N+\xbcW\xc3\x95h\xc6\x94\xa3M\x1d\x17o\xc5T\x0e\xf2\x98wF[\x89\xc5\\\xe7[Q\x8c\xdb\xa8\xf6R\x16\x8a\xe1d\x16E\x92\x01u\xfcL\xebdY\xb2\x9b\xf7\xce\xa0Z`\x85\xbd\x95 \xb6%\xbbM[jw\x05\xdf\xf5\x8c\xaf\xf9\xc2\xf7} \xbe\xef\xcfg`\xfa\x14gF\xcd\"\x99\xce\x0d\xcb\xb0\x82|@\x90\x00s\xb1\xa8\xc2\x17\xf91\xac\xd1\x96D\xf8\x02'\xf6\xe6\xd8\xd8\x82\x04\x9b<*/\x1e\xd3}\x1d\x95\xa6Z\xc7t+\xe5\xc6x\xdf\x98A\xf9\x9br\x95\xe6\xd1\xbf\xc9\xf7%\xa5\xb0{\xdd@\xb6\xe6\x15\xb0W\xc4Qx\x05\xf60\x8c\xd4\xe5\xc5&\xff\xf8\x03\xfd\x9d\xae\xc4\xea\xc5\xbax\x890\xda\xcd\xb0\x96\x8a+\x89\xa3m\xce\x86z\"\x02m\xd7\x9a\\\x91>\x84\x94u\\\x9b\xdf\xaa\xb1\xad\xd4\xc6\xae\xcaAX\xb7z<~\xbaJq\xf5\x1f\x9b\xeb\xea\x93zo\xc8\xe3T\x03\xb7ht4P\x1f\xad\xd7\xd9wC\x15Xj\xad6\xd9~\xf8\x80\xd2\x88\xfbP\x89*\xf4\xa1\xc9\x87\n\x1a\xf94\xd2\xe45\xbe\xcchD\xfb\x9e+n\xac\xd3\x90\xc4\x942\x8da\x8f\x07\xaaz\xe4<\xf3\x93\x90\x84#\xa1\xea0\xb8\xc6\n\xf8Y\xff\x13\n\n\xd0\xdf\xc3\xf2\xe9\xdd\x98\xb4&\x18iW\xb5&\x87\x89\x11&\x10S\xc8\xe3\xc8\x94\x1a*S\xb8n=ZE\x9f\xba-\xcd F\x99[\xac\xfeK\xee$\xd8\x86\xeaOI7\x9a\xf7\xc3\xf0^6\x11\xbc\x1f\x8e\x0d[E!9&\xf1\xe2Er\x84\xd3j\xe2\xc5\xf4+\x0d\x15\x1bV\xa1\xb5B\xe7C\xf7D\xd2\x89\x07\xac\xf6F\xdes\x0c\x85!\x1a\x90\x0f\xad\xfd\x11s\x80N\xf0\xf5\x94T\xa3\x19\xb4cw\xd8\xaa\xb6\xf3\xf0 \xb8z\xd4\x82\x98p\x08\x991\x956P\x98|\xaa\xe8\xcd\xfe\xfc\xb2U\xe8b\xae.\xdcl\x88F'\xc1\x0c \xea\xf2\xb6\x0d\xb5\xde*\x8a\xc3\x9c$\x943\xfa(M\xebB\x0d\xcd\x0d\xc9\xc2\xcc\xaasM\xc3Q\xdaxi\x05\x9b\xbc@\xa5[\x96F\x892_\x1c\xf4\xb0\xb7\xba\xcb$\xe7?\xed\xe0v\x1fX\xab\x92\x04%\xaa\x1368\x8c\x8b\x95\xed\x12\x1eP\xe4\xd4\xc7\xa0\"|\x17S\xf6\xcb\xbf Ar\x985a\xbb\x87\xa7\x91J\xf5\x85\x02\x990\xb0h\x1d\xd1\x92\xe8\xb5\xee\xc1\xee\xfc\xeey\xde\xfb\x0e\x89k\xb0C\x1d\xaf\x0f$O\\\xf8i=\x10GO\x9b(v\xdc \xbb\x14\x87~\xbf\x1e\xd2\xf83\xf0\xf9\xbb\x96*\xc11\xfb\xa10\xdc_g\xe5\xe0\xe7!\xc1\xf8A\x19m\xc9k\x7f>\xc8VZ\x99aC\xbf\xf4\x0bR\xa2G\x8e\xfc\xc8\xb6\x92Q\xaa^\xa8\xd5\x12\xbd\xdb\x97\x13JP\x13\x98,\xa2\xa5\x02\x8a\x89%\x86\xc0\xce\x00\x13QW\xb9\x86\x9fS\n\xfc\n\xf9\xaa(Y*E\x18G\xc4\xef#\x8b\x18\xa0k\x1b\x12\xef\xc6\x0d\x97~\xba\x02\xb4HS\xd4\x98\xc1\x98R\xf9\xaa\x8d\x99\xc4\x83\xefc\x0b/W\xc9j7\xb2\xce\xb0-^\xffIg\xafq8\xb5\xe0ly\xef\xc6<Vsh\x8d\x91\xed9\xbdV\xbc\xb7\x9d\xe6{\x07\x95:\xea\x1d5\xe1\xb2)\x97\x0cq*\xd5`\x91mB!\xbf\x1e\x8ef\xfbB\xe5#N\x07\xa3\xaf\xacG\xb7\xba\xdf\xd9\xc5\xec\x0c\x7fL2\xdd\x8bt\x8f\x96\xae\x83/\xfc\xc2\xf5\xc5W\xa0DW\x02m\xf4\xc6\xedV\xb5/\x7f>XG\xee\xc4\xd1\x90\xefG%Y#\x9fY\xd3\x9a\xc3\xc3ff\x9d\xc6\xd9\xf2\x10\x1c\xbe\xb3x^\x96\xc1}\xd3\x07\xadt\xba\x16G\xc9;U\x860\xa8\x92\xd9\xf0$8\x8e9\x9dJ[~\xa8\x86\xa5\x1aDD\xc7{\x14F%`\x8c)\xcb\xbe\xc1\x1a\xe1wX\x154\x8dqd\xd7\xa5\xe0\xe7\xc8\xf5Z\x08\xda\xb3\x88'\xe7i5n\xbbBlTW\xb6>l\xc7\xd6\xb9P\xcc\xb1Y<\x92\xcb\x8c\xe8_}\x05\xe9\x18\x8c\xcb\xa0\xa9\x84\xa65\x071b\xab\xad\x94\xd2.M\xa2\xa1\xf55 \xd5\xa6;h\x1d\x06\xda\xc4'\xa4\xa6\x993\xd0\x14\xb3\x14\x14Y\x97\xef\xb4\xf7\xc0(1~\xdef\xa4\x05\x15\xb1z\x12S\xca\x9f\xf4\xa4\xb2H\xbc\"\x13\xbe\x162\xa9l\xc3\x1f\xf4\xda(\xf8\x83\x9eT\x16K\x0dL(\xfe\xb8qS,W\x1b\x98\x16\x1f_<\xcbl\xc53\xbd\xcfn>\x06\xbf\x7f\x92wy\xdfk\xe3\xb3+\x92\x84ozb\xa2\xc2g7\xed\x8b\x8az\x9f\xdd\xbc6X\x1d\xb6\xb7\x8e\x8aG\xcde\x89\xe3\x01\xabE\xc92\xca\x17\xab\xf4\xcc=a\x94\xb3p\xc6@\xde\xd2o\xf7\xe9\xc0\x989Q\x8c\xbb\xe3\xa5+f\xe9\x0dSH\x85\x1a\xdfN\xa8\xb9\xe6\xbc\xbb\x0dc\x9c6\xf8V\xdd!\x1c\x19B\x9f\x9a\xda\xf8\xe6\x92V\xc7\x05J\xb2Q\xdb\xdb\xb7\x03\xe2E\xc5\xf1*=K\x9aK\xdf\x80\xa6\x1c\xc0[\xccB\xa0?\xa0\xed8\x12\xa6\"\x9d\xa7\xe7J\xdeX\xd5L:\xeejX~o\xa9\xfbu=h\x1e\xb4\xc6\xe3\x93\x84Z\x0f\x8e\x90\x9d\xae\x9ax\xb5ZYY2'P\xf6\xa7\xa9]~l\x97]C\x16\xde\xa7T\xa3\x9f\xf5\x06v<\xabc\xe3\x19\x9d\xe1]\xc3\x19\xed\xea\x1e\x82\xf2\x10\x07\xbe\xad\xd0^\xe2\xf06)g\n%\xc6\x9c\x89^\xcc\xa0c\x84\x16G5\xe7\x02\xfc\xa2\x88\x96h\x931\xeb,\xaa\xe3\x806<\xfd\x1aJ\xf8\xa6w*|\x0d%\xa5\xfcj4\xda\xf2<6\xf5\xa1Pj\x82\xed\xaa&s:\xb4d$\xba]%\xfd\xf6V~\xf1\xe2,\x11l\x0c\xd3\x16b\x04\x02\xeeZr\x92\xd3\x13(9\xc9\xdf\xdaF\xc2B\xe3x\xef\xe3D\x1f\x01S\x1bw\x89\xea\xc4&\xda\xc3\x06\x9aCN\xd8\x81\x9a\xc07PV\xb3\x9b\xe8g\x17\x1a+\\\x9e$\x860\xc6\xdc#\xc9fMr\x7f\x8e\xe7a\xebO,&1\xc6\x9a\x88t\xd3o\x04\xd0\xde\xfe\x18x\xf64\xba$X8\xd1\xcd\xbd\xb3<*+\x88\xd1X\xc1d\x12\xfa\xc1w\xe4B\x1a!\".\xdb\xa0<\xa8\x17\xaa\x9a\xff\x92\x87\x9fh\xa6\xa8\xe27(\xeb\xe66P\x89\xee=^ \x12\xd3B\xe5\xbd\x9c\x84\xe2\xea\xf7\xe5\xbd;\xeao\xb3\xc8\xa8\x8c\xae\xd0\"2\xd5\xb9\xb2\xe2U\x80G>\xee\xb9\xa4\x19\x92Z\x8eD$dB\xce\xe0\xf5EF\x8e\xf2<\xcd]\xe7\x91\x9f$i t\xcf\x80\xcf\x8e\x18\xf0\x0b\xf0\xab\xd6T\x825g\xcbT \xf8\xa014c\x87At\x9a4{\xf9\x8a,HN\x92@t\x956\x08+\xbfH\xfeV\xc2\x9c\x90\x04\xd0\xe5\xd4\x8f\xa3\x82\x840\x81b\x93\x91\xdc\x1d\xb5 \xe8\xb0H\xa8+\xb9\x0f\xf5\xfc\xee\x95h\x97N\x11m\x1d\xd8;\xc4\xcc\x9dt\xf2\x90\xc0V\x13\xd2z\xc2\x98}9\x8e@c\x9e\xdc\xa8\xcd\xba\xf2\xcd\xb1$\xe5K\x81|/\x16nd\xe9\x1e\x0dR\x0c\x1c\x82'\x18\xa5.\x1f\xd2W_\xb1\xc21\xa8\x84V\xa0\xcd1\x9dlz\xe0\xe6\xa4((\xf6\xae7E $*W$\x879a\x1fH\xf3\x06\x1e\x8d\x81\xe2\x99\x037\xaa\x86\x14\xabB\xea\xedX\x9fQ\x8c\x87q\xb1s\xad\xfd\xaaa\x97\xd2\xa4(\xf3\x0d\xe5\xcdL\x96o\xbb\xf8\x8c\x9a2\xea\x8b'\xd0K\xd0\xc2\x996b\x1fX7+\xda*M\xc9'.\x05M\x1cq\x87 \x97\xcfT\xd1\xc2(x\x08\xd2\xfb\x1c7f(\xb9\n\xb4<\x94\x8a)n4\x86\xa62b\x0c)\xbd\xa5-\xd7P\xac\xd2M\x1cV\xef\xbc\xc1l\xa5\x96\x95\x03\xb4\x019\x82\xf5\xc0\xed\xa1\x9d\xd7T\"\xaf\xc2\xb70\xa5s\xd5H\xeeY\xf3 \xd3\xb7\xf0\xb0\xfd\xe7\xacg\x1a\xef^Q+\x01;\xdd\xd7\xaa\x02P\xd0\xa03\xcc\x9f\x81\xa5p}\x910\x1f\x80\x9a$\xbc#\x17\x85\x9b#WNZu(F#\x8flI~Q\xb3\x8b\xdaC\xae\xd1b\xe2E\x05\xf2Ac\xb6y\xb2B\xc9\x0c\x01\xe2\x14\x1e\xfd\xedn\xa2\xb9I\xd1\xcf\x94\x9e\x03\xfd\xeeiW\x12:\xddKO\xa8\x9c\x1c\x9d\x10m\xc7\xe4{\xa0\x8f\xb4\x94S\xef\x18\x06\xbb\xc73\xf1\x9e\xae\xd7\x1b\xdc\xa5\xad$\xc3p\x08\xd1\x18H\x83\x89\x8f4\xbc\x8cNa\x06R\xa5\x19\xb4\x07\xf2\x9e%\x88t\xf7E\xdd\x1d|r\xdd\xb4z\xa14WR\xca\x9f\xdc\xef)\xe9\"\xfe\xa4\xa7\xef\xf3\xf9\x83\x9e\xbeo\xc3\x1f\xf4>U\xf0\x07=}_\xcc\x1f\xf4\xf4}\x81T\xdf\xb7@\xf0\xa0s7\xe3\x1f\xb9\xd7t*\x08\xd5\x8a\xc0\xf0\xe3+\x02\xf5e\x8c\x86(\x02\x15\xc1\xfb=\x97\x0c\xad\"0\x96*\x02\x83J\x11\x18\x8f\xc68\xd7\xfb_\xc3\x02\xbe\x81\xf8kXP\x81%8Y\xb4\x15\x81\x0b;E`a\xab\x08\x8c\xec\x15\x81\x01W\x04.yd\xb2\xff=\xaf\xa9n#\xc7\xf1>\n\xdd_\xcb\xaa\xe0E\xc5\x8b\xef\x8eoa\x01\x87\x93\xdak\xa0p\xc6<\x1e\xc7/\x1cz\xae\x9c8a\x1d1\xe5\xbc\xed\xb5\xf3\x9e\xf7\xeeQ\xc7\x13l@\xff\x1c\xe8\xab\x86\xf0\xb3,\x11\xde\x15h@\x15\x8aN\xce\x8f4\xe7G\xbc\xc0\x93\x1b\xbe\"E\x1aoIx\xbc\x99\x979!\xeeI\xb50\x1d\x85\xaed\x85\\\xbar\xf4\x900\xa5\x17(Z\nU\xdb\xf4\x02\xb1T\xa1\xba\xf9\x04\nU\xbd*\xd5F\xe5\xca\xb2<X\xba@ 'c\xa9\x9f\xf5\x11\xd6\xba\xee\xe7\xa6\x01n\x0c\x85,\xea~\x18t\xbfh\xd5\xf1B\xbb\xc8C\xee\xdf\xa4QG\xc2!\x04^\x98\x06\xe8/AE\x1a5\xec\x8a\xc12\x94@\xdds\xd1\xf0\xb2P8\x8fQ\xf16\xae\xe2 W\xf0\x0d\xec\x8f*z\xb7\x89%)\xb0\x81c\xc4\x96\x92\xcdJ\xbb\\o7\xca\xce\xee\xa3h\x9a\xa4 \xf7\xc1\n5C\xac\xaa\x15I6\x95\xfa\xad%e\x80\xba\xae!j\xf0\x0b\x06.\x08\x97\x0et\xde\xf8\xb2\x0d\xfc)\x83\xffq\xb3\xce^\xa7\xb4\xdb\x06\x17\x95\x85J\xd1^\x10&\xf5Z*\xdb\xb7\xf0\x90+\xdc\x0b\x88\x8aI\x9a\x91\x04\xad\xfe|!\xa4\x9f\xa0\xfc\x9b\xaay\xcc\xa8\xaan\xb9r\x010\x92\x0bq\xf1\xf1n\x18A\xae\x11do;X\xc3\xa6\xe9v\xbb\xcc C{g\xa4{a\xbb\xd4\x0e\xf4,\n\xcb\xd5\x0c\x9c\x83}\x8dC\xc4\x8aD\xcbU\xc9\xa0\x06wyS\xc8\x99rq\x9d\xc7Q\xf2\xee\x87\x9c,\xf8\"\xff%\xf6\xf3%\x99\xf8y\x9e\x9eM\xc2\xf4\x8c\xads\xf3\xae\xca\x83n\xa4\x99\x88\x0b]\x17\xa2\xe2EF\x12\x12\xce`\xab\x1a^\xdcH\xa7\xd7\xce]\xa1U\xaa ^\xad\xebO;\x86\xe9\xc8\x98\x07/\xc0,\xa6\x8acyM\x8f\xe0\xb8[8\xa5{\x85,B<#A\xf7\xbc\x0fP\xbe\xcc\xaa\xe9z\xeeg:\nD\xafm\xf5\xb1\x1f\x0b\xba#(\x0d{\x9a\xb8\xc1\xb8\xfb\x19\xc3w(y\nYz6\x96\xc9\x04\xbb\xb2\xed\xddQ\x90cz\xf92C_\xfcv\x0c{\xd3QC\xb9pH\xa91\x13 .\xcf\x08\x11\x15#\x14\xbfU\xd5\x07\x05\x8e\x02g\x98\x14U\xcc\xd1\xb3\xa8(\xd5\xcd\x88\x855L\xe2\x11&K\x95#\xfb\xd2\x94\x0b\x85^ \xd2U\x8dc\x8d\xb8Z\x16=\x8d\xff\xa2\xb8\x84WQ8\x18\xc1\x80\x158\xceb\xff\x82Q}C)5h\xb9\xff\x9c\x99\x81\xdb\xdeL\x1a\xc3\xa8\xb8\xec\xdd\x95\xc4\xd54\xcf\x1a\xb4c\xf4\xea0pZ\xdf\xa9\xf6;U\xe4\xbd\xdc\xedI\\\xdd\xa2I\xdd\xeb\\\x83G\xe6\x88!q\x0d0\x8b\x8b\xcb\xe2\x98\xdb\xa1]\xe0qK\xea\x0cI\xe2z?\x86\x0b\xdd\xbe510&O\x01zEa5\x1f\x0e\xdc0m\xb6\xfe$\xd6\x19*\xf4o2\xd1\x87\x11\xc2 \xe7\xacX\x8b\xca\xd7.=\xfd\xbd\xde\x16\x93_7\xeblR\xa6\x93\x8c\xf2\x85\xbb\xb4|jj\xb4\xb1\xdb\xd5\xdf\xd7\xf1\x01sS\x0b<`\xb4\x85\xc7\x86e\xebE\x8a\x11\x99\xda\xc0\x8d\x0d;\xb1v\xb5 -\xfd\x80\xfe-\x1ef\xa6(\xef#\xae!T\xb5\n\xa76\x9e\x0e\x92 5\x83\xa1\xa5\xf6JA;\x80\x0eG\x8eTU\xeb.\x95h+0z\x8b\\\xcf\xb2.i7\xa0-\xd5\xc4\xb1\xa5\x1fW?:,/?QexO8\x9f\xdc\xf6P\x1bY\x08\xa7):MX\x89L\x888p\x02\xce\x18k\xe8a\xa1\xd718\xf0\xb6+\xc7V\x1a\xc6\xa14\xb2I\x17)\xd39!\xc9f\xdd\xa6\x86\xef\xc7\xe0\x1c%\x9b\xf5\xcc\x19\xab\x1b\x98\xe7\xbc\xd7#5P\"\xed@\x8f\x1e\xa5\xbd\xd6\xf9\x04\xb0T\xc7cL`\x8fs0\xea,\xefu\xdb\x06[e!\x89\xad\xd4\xe59\xe2O\xfaf\x13\x9f?\xb9\xdf\xb3\x8elD;2#\xc8Vf6\x89\xf9\x83\x9e\xd9$\xe0\x0fz\xfdZ\xf0\x07=\xb3I&5\x9b\x84\x08\x9eu\xeeb\x19\x84\xad\x08l\xed\x98O\xb6\x1a\xfa\xb0\xfd\xb8\xf4\x81.\xde\xfa2\xf6\x13\x85\xb3m+ ^\xd0} \x0bim\xea\x90-\xbd<\x94Z\xeaEK\x9c\x17Z\xea\xb6\xee\xfa\xe3h\xa9M:\xe8\xd2*\xb2\x8e9\xfcR\xa9P\x0d\xc3b\xe0\x1a\xcc\x84\x1a\xb4\xe0\x11x\xaf\xc8B\x0d\x14\x0fpH\x0e\xac\x1d\x92\x17\xac\x97\xfah\xbb\x0c\x81\xcc\xfe\xac[\xcbT4k\xcb\xf0\xc0e?\x04\x9b\x8c\xe1\x84[\xa6(-\xc60\xa518\x8di\xa6\x7f\xe2T\xd2\x1f\xcd\xe9\xaa\xfe\xc6)\xc1\xb7\xe8\xb0\xe9\x0f14\x07#\x8dX\xf7\xd1\x04\xc6\xbb\xd8+\xba\xdb\xbcX\xa1zK\xb3\x05+VOlb\x1cO\xe1\x10.\xb8\x81N\xa3\xa3/-\xb5\xf2gp\x08\x81;B\x9d\xeb\xd1yI\xd0f\xa0\xe9\xe9\x910l\xb8NH\x8a \x8fX\xeaX\xcdD\x9c\xd7od\xec$\x8b0\xb3\xae\xf2\x85\xe3\xfa\x05?\x0c\xd1(\xe2\xc7/\xad^}T\xbf\xda\xd0\x82m\xe8?\x1a\xc5\xc3\xbb\xfa\xad\x9c\xfc\xb6\x89r\x12\xea\x1a\xf9\x0e\xb3#4\x15\xf8\x86\xb4\x8e/\xd8\x0b\xcf\xfd\xfc\x1djc5\xa0/9\xa8)\x12\xe0u\x03\xce\xc6\xe8\xf0\xdc\xc6\xe4*.\x8e8\xe1`\xc6\xad{\xf5\xc5q;\xf9\x16\x18\xdf\xa4\xea\xc0w6m\xd7r\xeeZ\xdf\x8eBH\xc2g\xea }\x8a\x1aX\x1b\x86\xd9\x0e\xca\xf9\x1d9H\xcf\xf3\x1c\xebW\xdec~jx\xa8\x84\x7f^'\x85\xd4\x06w\xfe\xda\xa0)h\xf4\x17\xdb/\xb9x\xb1p\xaa\x04\x94\xca\xf7\x7fR\xbc\x9f&\xc4\xea\xfdW\x8a\xf7\x93\xb4\xb4x\xfb1\x1c\xc2#\xcau\x99\xa6\xcdBm\xd1N\xdd\xa3W\x81\xbd\xa7\x93\x8f\x8e\x9c\xd8\xd9\xbf\xfe5't\xb0\x1f\xa0#\xab()\xb5\xfdhwad\xc6\xa0\xa1=\xc0\xa98=-\xc9\xb9\xbe#\x8fT\xfa\xc0K\xd3\x94^\x9f\x94v4U\x1b\xafu\x9fo\xa8l4'\x05W\x15=VC\xd4*\xa8L\x0d\xd4Hy\xb4\xb7\xc5\x88\x15\xf8\xe6\x10\xe6\x1a\xce\xad'\x90>\x1d:\xfaa3<\xcf\xfd\x80\xa0\x8d\x18\xb8#\xb9\xaa=F\xb8,\xa9\x90\x1dE\xb4\xebb\x94$$\x9f\x18z\xa7l\n\x1d&\xad\xdb\xda\x0d\xe1\x9c\x12k' z}\xa4\x99#\xa7\xcc\xb5\x9d\xb1\xcb|\x96\xc6\x98\xf8\xec/w\xef\xde5h\\\x17iR\x1e\xb3o:Q\xe9\xc7Q\xb0C\x9a4\xf5`\xc2\xfa\x90jp\x893GG\x99\x1a/\xa9`^h\xa7(\xdd\xe4\x01\x99\xc1\x91\xbc\xbb\xa3Q\x8d\x80\xe7\x94H\x9f\x8b<\xd0\xe7J\xc3\xb4\x95\x0fw\xc7i\xcf\xa2\x8e\x1b\x0bi2\xd9\xae\xd1=\xe9dj\x80\xa2\xf2\xe4\xa9\x8b\xa7\x8e/\xd8\xf2,'\x81_\xea\x99X\xe0\x02\xe6\nm\xa9^T\xa0I\xf5\x1d~\xe8\x9d\xc7\xad&\x85\x9b\x1b>\x91)\xf3\x1f5\xaf-\xe5\xdc\x03?\xfe.\x8e\x96\xc9\x0c\x9c2\xcd\x0c\xf8I\xaf\x8cr\xff\xc9\xf2\x15\xf7\x9c\xd8\xf7\x0e\xc8\xda\xc03\x1amQ,\x026\xf3(\xfe\xff\x82>\x19p\x08\xce<\x8dC=n\xeaw'\x08\xad\x84&\x0d\x04\xb4I\xca\x86G;Vk\xa5\xde~\xa6=\xa3\xef\x17\xa7\x1c\x99\xee\xfb9\xe7dv'\xcc`K\xa3\xa0A\xa7r\xdd\xb0AIy\x80\x1f<\x7f\xd7s:\xf6sc\xee\xb1\x0c\x81w\xef\xb9\xaa\xcb/\xc7\xddT\x00\x16(\xc7\x03\xbd\xd0V\x99\xc0\x0dp\xf0WN\x7f\x9d\xd2_\xbe\xae'F7\x07!\x0f\x1b-\xf1m\xbf\x00\x83\xd5\xab!\x9b\xf1:\x84\x0d\xcd\x00\x86+\x9a\xdb\xe2\x0e\x02\x81\xa1%\xeeIa\xf0 \xe0Q\xdc\x0b\xb8\xa1\xb3\xa8\x8dd\xd62\xf6\xa46\xa8U\x87\xcc\x99\xf1\xb8\xe7'\xe4\xff\xfc?\xa7\xfdV\xf9\xb1\x0f\xa4\xc4\xea@J\xf9\x81\xa4&\xb2\x18\x8dw>\xe1%b\xbd\"\x8e\x02B{s\xa0,\x08+\xae-/\n\x99\xc2CH\xbd2\xfd\xf1\xb8\xfa\x81S\x9a\xf2 \xb2\x8a\x80\xbc\x0c\x19\x07\xb1\xaf,\x1cU\xac\xc9\x074\x99\xb3{\xf7\xee\xe9i\x07h\xe9\x07\xd8\x1c \x0c\x97\x92K\x92G\x18:\xc6\xc1d\x12l\x86\xda\xf1\xfc\xf3U\xbb\x10\xd4\xbc\xaal\x7f\x1e\xd3\x13\xefX0\x816;\xd5f\xce\x9do\xe0\xef\xf0\xed\xa59]\xc9Q`\"\xd75\xa9\xd6EuZ\xd3\xe9>\x8d\x1e\xaa\x8c\xb5$\xd3\x82D\x1f\xabA\x8c\xe4\x19Is\xb5\xb2\xbf^\xe5z\xa2\x0e\x0c&\xdf\xda\xae\xe8\xaf\x1d\x8am\x88\x197\x91,\x1b\x1f)\xa4W\x9a\xd8\xed+E3\xb0F5\x18\x82n G9T@\xa2\x89\xd2\xdc\x8c\x19\xd5\xa0\x81n\x06\xa7 #\xca\x01(\x92\xad@W\xda\xfc\xe9*\xd1\x11U\xaa\x03\xd0\xf1\xa7/\xe8\xd8\xb8.\x89\x8eL\x9f\xfd\x99\xa3\xe3\xab\xabD\xc7$-\x07 \xa3\x01\xad>\xbf#\x11\x0d\x14Wv\x02\xbe\xba\xec XW\xff\xba\x94 \xa0\xaf\x08\x0e\xe2\xb4\xd0\x94K}\xef\xec\xe0G\x98\x19\xfd\x08\x99\xe1\xee\xba9Pe\xca\xcc\x90\x99\xd4M*\xe2O\xa41\xe4\x99*\x86<S\xc5\x90g\xaa\x18\xf2lX\x0cy\xe6\x06\x8d\xc1e\xc2\x07*\xd38=e\x1f\xdf\xe9)\x94\xea\x17+Y\xea\xc1\x83\x07\x12E\xa2I\xb9\xdd-\x14a\x9f\xdcH\xee\\\x05m\xb7&I\x1cz/\x96W\xed`\xd5\x89\xff\xb6q\xb0\x02\xa9\xe0s\xf9p`0;[\xc1\x00\x87+\x18\xe8t\x05\x03\xf3-\xc2\xa0\x9c\x8bP\xe587\xb9uA\x95\xe4\xdc\xe0\x10\x05\x95\x7f\x97\x95'\x0fT>^z\x971\xa8\xdc\xbc\xac\xdc\xc6\xa0\xf2\xf42\xbbR\x01W\xe1G\x83<z\x80o\x1a\xfeVT\x92\xb5V\x10\x04\xee\x04\x16\xf5\xe3\xd3\xe8?\x86EZ\xe3\x9b\x8b(.In\xcf\xc8\x8a\x8b\xef\x82\xc9\x14uR'Ny\x911_0\xect\xdb>E\xffd&\xf4\xb7^\x94\x84\xe4\xfc\xc5\xc2\x95\xa4\x12j^\xa6\xd8\xa0%\xcf\xeci\xe1\xfa\x03\xdci\xac\x1c\xe0\xd6\x03\xdcw\xcc&y(p\xe7\xb1\xd2u\xc4\x81h\x02?\x83C\xd8R\xd2~\xb98\x17\xd8\xc5\xbb\x02\xe0\n\"l`wg\x06`\xedo/\x13\xe0d\xd5GK;3\xe8\xe7C\x1b\x9d\x0b\xb5\xeb\x82!\xc4\xaf\xf6L\xf0\xe1\x9bC\xd8\x18\xc8L\xbf\xc2\xd3\x89\xe7yo\xb5#pN\x9c1\xac\x85\xdem\xbd\x9b\xae\x1b:\xfa\xeef\x90\xa9Y\xdf\x0d\xd6:o\xa8\xcc\xb5:\xbd7\x98q\xc1\x18\x97\x05\x95\xe2\xb96\xe2\x98\xfbF\x8f\xd0\x7fX\xaa\xab)\xec\xcf~l\xb4R\nX\xceB\xc9+\x1d\x8aK\x91\xcb\x8a=\xaad\xce\x0c\x1e\xee\x1ej+\x0c\xfb\x1a\x13&m\xa9B\xa9K\xc5\x1b\xb6v\xa3\xa0\xda6C4\x11\x01=\xd4\xfc\x12\xe9\x8c\xc1>\xa51\xb4\xa4\xd8\x80K\xb1V\x078\x0bvN\xb4\x9ex\xd0\x10f\x0d\\\x87\x9dh\x0e\xb5\xe8\xeb\x1bU\x1fcpZ\xf17\xad\xe7\xbd\xbb\x1dy\x14o}\xb6\xb1mr\xc93UI\x9e\x91J\xf2\xf4U\x92\xe7F%y\x16*\xc9S]\xad \xeb\xc5qRy\xd4\xcd\xea0\x9c\xe9\xfe\xe7\"\x80\xde\x9d\xd3\xff]?\x19TR\x14\xa1/\xf4)e\xd0\xf4\x03\xc8\xa0;\xe6\xf8\x87\xeb\"\x83\xdaH\x89\xc9@i5\xddAZ5\xcb\x8a\xfe0Yqc+\xda\x16\x18D\xdb\x0d\x15\xd1{\x03\xb0d\xc4{\xe8\x9f\\E\xa4\x18J\x07\xa0\x06S\x9f\x0d$n\xc4yP\x81\xce\xc2K\x8d\x83/\xd2|\xedk\x95\xb6\xc0\xb7#\x7f\xe1|m\x94\xaa\xb654F\xaa\x1a\xc0\xd7\xd2 \x15\x9f\xfec\xc8\xa7\xb1\x1c\x1c|\x03\\\xa8d\xe1vKR\xd6\x0bG\xf7\xb6\xfeE\x94,\xafL\xf2\xc6\xa9\x19C%\x81\xf3\x95\xb8\x02\x11\x9cw\xf1\xa7\xb4\xdc\xb9\x97\x17\xde\xca/\xcc-\xe9\xe7\xeb\x14\x8f<ka\xff\x8c\x81\x1f%\x9b\xb5\x95\xf0~\xc4\xe0k\xe1\xdd(\x98*7\xda\x07\x10L\xaf\xae-J\x92\xb5ME\xf4\xb0\xbf\xb2\xf6\\\x86\xa0\xcc!\xb3\xa9\x9a\x18QA\x0c%!V\xf7L\xd7\xa5\xb5\xae\"\xca\xd0\x1e\xb1\xa0w\xdc'\xba6\xe3\x11\x15\xac\xaer*X\xc3|c\xea\x9av\xdc\xbf:c\xc8\xc6\xe0\x8c\x9c\xd1\x18\xe6B\xf4\x9a_\x8d4\x9f\x7f@i\xde\xec\xc5\x06\xe6\x0dtd\x9aT\xe8K\xf3\xa9\xb9o;I\xf3\x96\xdf\xbdBi\x1e}\x85/\xc4\x9a_|Y\xf3\xfa\xfa\xd3\xae\xf9\x12\x1e*g\xc6\xa8\xdb\x12\x1a\x9c\xa5MK+\x8a]+\x81]&\xda\xc6\xdeQB5S\x80\x98>e\x18\x83i.)Y<_\xc7\xe8\xfa\xb7\xfa\x0f\xd9\x13vS\x07;m\x0c\xe3\x84\x83\x81\xf1h\xae\xbd\xf3?\xff\x8f\xfe\xcf\xc1\x14\xe2\xce\x0c\x9c1\x1c\x97y\x94,\xddT\xe7M\xdaL\x94T!\xe8Vw\xe6\x9e\x99&\x83K\xaa[\x03\xa7\xdf\xf2II4=\xbc\x9c\xc2\xcb\\\xfa\xeb:(\xbc\xc6Pz\xe2}I <}\x86\xa7k\x91\xe0I\x14Qj\x8d\xc3&\xd3\x13?\x1e\xfa\xd8\x92T\x8f\x7f\xf6%*\xd9\xb4z\x8c\x87\xc0\x15ef\xe2{\xb2\x97\x0d\xc9*\x05S\xd9\xd9yI3W\x92\x1c\xf9\xa2k\x80|}<\x8be:\xd5\x94?\xe8\xe9T#\xfe\xa0\xa7S\xf5\xf9\x83\x9eNu\xc3\x1f\xf4t\xaa\x05\x7f\xd0B\xf2X\x8d\xe4\xf1\xc7G\xf2\xe0\x8a\xb2\x14\xa5*\x05f\xcf\xbbF\xa6\xc0\xcc\x87+0\x95Y\x8a6R\xc5edR\\~\xb2,Ei\xf2:\xbfH7%\xa6\xdfV\x03'\x1c\xf8\x91\x9f\x04$6\x00\xe7\xcc\xab%\xf1\xe71 \xb5\x01\xfe\x86\xba\xdd\xea\xb3\xb1U\xa8<\xbf\x98\xa4\x1buT\xb7\xb6R\xfb|S\x96\xf6Y\xd1\x9dy\x99\x00o\xef\xf4\x94\xfe\x11\xe0\x84\xd8\x147\x97\x1f\xcb\x94\x0fd\x93\x8aa]\x1f\xaa\x9f6\x1dT\xd4\xfc\x1b\x83\xf3:\xbf\x80\xa8\x84tS\x82\xccdfp\xdd\xd4\x17\xf7\xaeX#V\x12\xaak?i\xe1\xe7\x0c\x9e\xf0\x1d\xd0\xa8\x86\xd6\x01o`\xa8\x19\x9c\xe3\xe8\x0c\xf6jc!&\xc8\xa8\x0f\x95\xebYp\xfc\xcb\xa1\xf2\xe5P\xb9\xbe\x87\xca\xfc\"\xf3\x0bC\x91\x16\xe2E\xc5\xf1\x99\xbf\\\x92\xfc\xc0t\x94\xb0\\?\x1a\x12\x86P~\\\xa4\xc7\xab\xf4L{\xe2\x94\xba\xc3\xa0\x19XP\x8f\xd6\x0bVQ\x1c\xe6$A\xa1\x0e\xcb\xfc\x98?bG\xa6\xb7$/\xa24\x99d\xb9\xbf\\\xfb\xca\x13,\x1d\x7f\x88\xe6NO\xd7\xa4(\xfc%\x01\xc5\xfd\xc9\xc4_\xcf\xa3\xe5&\xdd\xa8\x0b~X\xcd\xa5\x12hu\xab\x0e\x0ey\x83\xb4\x18\xca\x14\x18\xc6\xe2\n@]\xea\x06\x13\xc7\xa8>\x94\x99\xdb\n\xd2\x90\xd4\xad\x15\x0c\xf5X\"V? \xa9\xa4a\xf9j\x9a\x91\xc4\xcf\"\xf6\xea\"\"qXP6 IK\x98\x13\xc8rR\x90\xa4\xc4\x8a\xd4+\x02\x85\xbf&\xc0\xf1\x1c\xd2\x1c^d$\xf9\xee\xe5\xd3\xc6\xb8<x\x19\x13\xbf \x90\x93u\xba%\x90&\x04\xd2\x05\xbe\xcc>\xeeY\x8e\xdc9\xdedY\x9a\x97$\x14\x0b*z\xe7\xe7d\xc0\xf8\xf8\xd4\xa0\xf0\xf57\xe7\xc0\xdbw\xfeV\xcdR\xb9J\x0b\x02\xe5\xca/a\xed\x97\xc1j\xc0g\xf9\xb4\xcd\xe0\x96\xb7\xef%l\xf6\xdcE\x9a\x039\xf7\xd7YL\xc6\xbb~k\x1f\xbf5\xf2\x1c\x11\xd3BI\xb0\xc5\x16\xd5\xee\xf3\x0f\xb0\xdf\xae\xdf\xf6^GE\x11%\xcb\xcfgs;\xafWt\x87\xa5\xdb($a\xe3u\x08SR`\xad\xdd\"#A\xb4\xb8\x00\x9f\x1eoQg'X\xef$\xbe#\xa3$\x8c\x02\xbf$\xd5\xd7$\x1b\xb9\xdd\x00|\xd9\x83\x97\x11\x10Z5I\xed\x85\x04q\xf2\xcb<\x0e\xc5\xa6\x96=c|\xca\xe7\xc7\xfd_c\xd5\xe5\xe0\xdc\xf4l\x97\x0c\xd48\xae\xfd8\xae0Q \x96\xe5\xf2\x9cm\x12\x9a\xd9u\xb7\x03\x07\x13\xb6\xe3\x7f\xafY\x92v\x8a\xa0\x8f \xc9\x9eE\xc9\xbb\xcf]\xbd\xdd\x18\x87\x0d\xb2pq]\xa9\xde\x96F/1\xe1\xa0$\xe7\xe50$\xf3\x8d\xb8\x93\xa4\xa8\xe1\x96\x88V\xb5N\x05\x1e\x1a<5\xa11\xd9^\x96\x93-I\xca\xc7\xacG\xae\x84\x92*\xf3\x9b\xae\xb0\xa2[\x89\x15\xddn\xb2\xf4N\x0c\xb4\x8b\xd9&=>\xdbT\xe9g\xa9n\x1f\xe3j\xf7\x1d\x89)\xb6\xb9\xb8+F\xacLk\x0b\xa1s=B\xe7\xed\x19\x94O\x86R\x8a\xe6k\x1b\xd9\xb0RJ UU\xc1\xf3u\x9c\x143pVe\x99\xcdn\xde<;;\xf3\xcenyi\xbe\xbcy\xb0\xbf\xbf\x7f\x13_\x93\xbf\xf4\xcf8J\xdeI\xdf\x9c>x\xf0\xe0&\x16 \x94\xbc\xabM\xf0\x93\xa5\x05rc3p\xfcy\x91\xc6\x1be\xf9{^\x05QQ\xbcF\x94?\xdc\xef\xa3\x7f\x17\x99\xd5\xd3J\x16\x85\xc5\xbc^\xac\xe7i,\x9d\xdamD\xce\xbeO\xcfg\xe0\xec\xc3>\x1c\xd0\xff\x93\x0c\x06\x0bNm\x928\x0d\xdeu\xd3\xd3\xe9z\x97\xb1<\xe0\x12\xa4\x9b\x81\xf3|z\xc7\xbb\x0f\xf7\x7f\x98\xde\xfe\xf9\x8ew\xf7\xd1\xf46\x1cx\xf7\xf6o\xc1\xf4\xc0\xbb{\xf7\x0eLa\xba\x0fS\xb8\xe7\xdd\xbau\x1b\xa6p\x97?\xbd\x0bw\xbc\xbb?\xdf]\x1dl'\xde\xfd\xfd\xe9\xa3\xfbp\xcb\xbbw\xe76\xdc\xf7\xee=\xb8\x07\xb7\xe8K\xb7\x82\xa9w\xb0\x7f\x8b\x0e\x07\xf0\xd9\x01\x1cx\xd3\x07\x0f~\xbe\xff\xc3\xed`\xe2\xdd\xb9s\x0b\xf6'S\xf0\xee\xde\xbe;\x99\xc2\x14\x1fM\xef\x05\xfb\xe0\xdd\xb9\xfd\xc0\xbb}p\x9f\xde\xbb\xf5\xc0{p\x87>\xbd\xb5\x7f/\xa60\xf7\xbc[\xf7\xef=\xba\xe3\xdd\xbdw\x00\xd3\xfb\xde\xfd\xbbS\xb8\xeb\xdd\xb9\x03\xd3\x07p\xcf\x9b\xc2\xf4\xc1\xea\x8ew?\xa0\x9f\x80}\x98\xd2\xcfL\xe8W`J\xbf3\xa9>swB\xbf\x13xw\x0enO\xbc\xe9\xdd{\xde\x83;\xb7&\xde\xbd;\xec\x07m\xee\xee\xcf\x0fh\x97\x1eM\xef\xc1}\xdaG\x98\xde\xf5n\xdd9\x80\xfb\xc0&\xec\xdf\x9d\xf9\x1f\x8d>\xf8\xca_\x9bu\xff\x93\xac\xe0\xf3\xe9\x01\xdc\xff\xe1\xfe\xcfw\x10l\x10\n\x7f\x82\xd5\x97\xe4\xb9\xb8\xc4\xe2\xdf\xf6n\xdd\xbe\x0f\xd3\xdb\xde\xfd\xdb\x0f\x82\x89w\xfb\xee\x03\xfa\xff\x93\xa9wp ~\xdd}p\x0f\xf6\x9fQ4\x98z\xf7\xa7\x0f\xe2\xc9\x81w\xf7\xce\x94\n`\x07\xdaW\xf0Q\xe3\x1f\x04\xa0\x98B\x1f\xc7\x07\xde\xbd;\xf7'\xb7\xbc\xe9\x9d \xfd\xf9\x00\x7f\x1e\x04\xb2\x97\xee\x8b\x97\xaa\xdb\x80\xb7\xc5\xcf\xaa\x83\xf7\xbd\xe9\xfd[1vor\xcb\xdb\xbf5\x0dto\x80\xe8z\xf5\x9ca\x1a\xed\x1d\xf6\x89b\xc2\xf4\x0e]k\xf1;P\xbe\xf2)0AY,\xf7\x12\xf8p\xcb;\xb8\x03\xd3\xfdgw\xbd\xe9\xfe\x038\xf0\xee\xdc\x0f&\xde\xc1\xdd\xfb\x13\xef\xe0\x1e\xffqo\x1f\x17\xf7\xc1\xbd\x07\xe2\x81wo\x7f\x8a\xff}p\xf7\x01\xec\xc7\xf7\xbc\xfb\xb7\xe0\x9e\xf7`\xff~@!\xbc\x83{S\xfc\xef\xbd}:[\xf4\xc5x\xd2\x80\x99\x08 \xfa\xe9)\xb6\x83\xdf\x11\xed\xd2\x15\xec4\xfcL\xf4\xf3\xd3\xce\xfa\xa4\x1fyy\x89\xa9\xbf\xe7\xdd\x9e\xde\x07\x9c\xf8\xc0;\xb8w0\x11\x93\xc6~<\xb8\xf7\x00\xf6\x0b\x9c\xcc{\xfbS\x9c\xc8\xbb8\x91\x0f\xf6\xef\x03\x9d\xce\x00\x97@\xcc\x14\xfb\x81/q\xa0I\x05\xd4XQ\xfc\x14N8[\x81~\x93\xb8\xf3\xe9t\xc7\xd8\xc1\xc9=oz{\xfa\x81\xe6\xfd6\x1c\xdcV\xcd;/\xcbqe\xd3\xfd\x00\xeemo\xffp\xc7\xbb\x7f+\xbe\xe5!)\xba\xf3\xe0\xd9}\xb8\x1bO\xee\x02\xfb\xdf\xd4\xbb=\x9d\xd0\x7f\x9eQ(\x98\xde\xfa\xe1`\xfa\xf3\xbdO0t\x16\xf1~e#\xdf\x87\xe9\xfd\xd5\xed\xed\xe4`5\xb9\xbd=\xf8\xf7\xf3[pw{\xb0\x9a\xde\xff\xf9\xee\x0f\xb7\xfe\xbd\xbe\x05\xf7V\xd3\x83\xed\xe4\xe0\x87\xbb\xdb\xff\x8f\xbdw[r\xe4F\x16\x04\xdf\xfb+\x90l\x9d*\xb2x\xc9d\xd6E\x123\xb3\xb2\xd5j\xe9\xb4\xd6T\xdd2\xa9\xfa\xcc\xce\x90\xacj0\x08\x92\xa1\x8c\x9b\x10\x08ff 5\xd6\x0fk\xfb\x03\xbb\x0f;f\xbb/\xfb0k\xf3\xb2f\xfb\x0b\xf3)\xfd%kp\x07\x107D0\x98U\xea\xd3\xe7LS\xb2\xca\x08\x04.\x0e\xc0\xe1\xeep8\xdc\xcf\xeb\x9d\x1d|\x1c\xc5\x84Q\x18D\xfd\xf3O\x07\x13\x9a\xa6\xfe6\xaa\x9f+G\xfd\xe9\xd9Y\xd5\xa6\xd47\x1f\x9e9\xce\x95\xd5\x87\xe9s\xc7\xb9\xb2\xfa\xf0\xb4\xbaCK\xf1\xc3\xf3j\x13\x81\xf3F\xa5\xdd\x9b\xa9\xba\x9e}\xee0u\xdddA\x80\x9f\x9f\xbb\x82\xedxq\x18\xc6QH\xf9\x8d\xce4\xad\x1c\xc5\xba\xd4$\x9ekP\xd5\x0f\xce\x10R\xee\x91+\xf5\x19\xdeX\x04\xd1\xbb\xf5[\x0c\xd7\x95\xd0}\x8b~\xd6_D|\xc3\xe0\xc3|\xa9S\xfc(\xf0#\xf6*^3rEN\xa6\xa5T<\x0d\x85G\x9d\xbeR\"(\x1e\xba\xaa'\x9d\x8aJv\x86\xa7\xa7\xe6\xc5\xb4x\x9f\xc4[N\x93\x9d\xfe\\x/\xa0S\xbd\xf7\x1b\xe7-\xa9^\n\xe6y=rrE\xc4}\xc2\xe2\x0d\xea\x8c\xfa\xa0\xb1\x19\xc1\xc1qOOWoP\xedL\xc4nIV\xe9\x89J\xa3:\xcd\x8b\xb9\xc9\xe6\xd7\xbb\xa6\x92c\x93\x9c\x056-\xad\x8d\xba\xbd\x1e\xef\xc1\xd5\xc9\x8c\xb3~0gK\x03O\xcaD\x1f\xae\x1e\xfe\xfc\xbe\xba\xa4`\x08r\xf3\x11\x95\xb5UY\xc5\xfb\xc5\xa6G\x84\x15*\x1c\x95j\xb2\xa0tR~\xa9Z\xcb\xfa+\xb80\xc9\x06D\xecx|\x0b\xfd\xfe\x8a\xf3\x98\xf7{\xff\x81\xc7\xd1\x96\xfc\x993\x85\xdet\x15\xb0?\xe3\xa1\xa4\x18\x11o\xc7\xbc\x1b\xb8\x9c\x7f\xea\xa1\x13\x8e\xea\xbd0\x8b\x9f\x18\xabF\x8d\x8cM\x1a\x8c\x88\x02[\xab\xe7!\x87V\xe4\xdc\xb0\xfb\xb4_\xfc6\x98lb\xfe\x15\xf5v\xb9-{m\xd5`sy\x99y\xb4\x84i\xc4\xa6\xcd\x1b\xd7Z\xbf\xbe3+\xc4\xd2\xaa\x10\xc6\xa6\x01W\xd4\xef\x8a\xb4\xde\xf93\x8a\xb8\x82\xc1\x87zj\xaa1\xa1\xfcp\x9dj\x06#\x8d\x99\x9e\xae\x18\xf29\xd5\x91\x16\xedU3\x1eK\xd3~4\x18\x91H\xd3\x89&@\xf4\xa1Z\xb7\xde\x01:!\xb6W\xd6\x94~@\x14\x86\xcea=\xe5\xf5\xa4RZG\xe4\x1b\xb3\xbc?\xe2\xb8D\x15\xbax6\xfa\xa0\xa1\xea\x06\xe2\x03\x06\x0c+\xee2l\xe0\xf7+\xe6B\xd1\xa7M\xe1u\x92 ?H\x0dC\xfe\x15\xf9(|\xbd\x81\xa1?u\x1e\x07\xf85%\xa6%\xb1)D\xfeE!\x01\x9c\x8e\xc4\xa6\x97[&~\xcb\x19U\x14<\xb6/\x0ebZ\xec\xb6\xaf$\xa7nS\xe3\xe0\xba\x9b\x98\x93\xbe\xe9e\x0e\xe1Hk\xfc\x03\x16m\xc5n\x04B\xca\xd9\x08D\x92^\xef\x82\xc4\xe3\xf1\xc5\x80P2\xbc\"|\xce\xe6\xfeR1@\xb6T\x8d\xf8\xc3!\xb6\x84]r#\"-\xcea\x1d\xfa\x8f\x0b\xf7x\x9a\x03>\x1c\xfa\xe4\x92\xc4\x17\x03\xd2\xc3\xa5\x80\x8e\xf3m\x17\xc85\xf6\xaa\x80\xa0\x06\x19U\x16s\x0ej`\x9a5\x8c\xc1Q#\xf0\x91\xb0s\xb2\xa3\xa9\x0bC\xd5\xa7,b\xa9G\x13\xf6j\xed\x92=U\x0e\xce\x92\x80z\xec\xabH\xf8\xc2g\xa9K\x12U\xd9\xb0\x9a\xdf\x8b0\xa8\x8b\xa4?\x17\xb4\xfa\x19J\"?e\xb1`o!\xa6\xd5a\xed~\xef2/\xf3rQ\xd8\x88\xbe\x1f\x95\xeb\x03\x95QG\xb2\xd3\xbb<-\xd4\xda#C\x92b\xf6r\xed\x1eR\xc4.5\xb2\xb9Xj9\xeb\x9a\xf4.\x13\xce^^\xaa\xe2P9\xed\xc3g-\x17\xc0u\xe6\xcbS\xf8zy\xaar\x16\x00 3\xd2\xebR\xb02\x0e\x1b\x16y\xae\x85=R2`\xe0\xe2\x0f\xdeH\x91F\x08\x1d;\x17\x8ekjkX\x1b\x8e\xc305\xeb\x93\x80F\xdb\xef8\xdb\xf8wu\xc9)Q\xe4\x9a\x86\xa9K(Q\xdf\xc1\xc9\x0c\xf8\x9f\xd1\x19'i\x12\xf8\xa2\x7f\xbaH\x87\xa7\xdb\xc1@\x87\xf2\x86H\xde\xbc\x1f\xe0\x12\xc6\x1e\xbe\xf5\xb2T\xc4\xe1\x88x\xf3\xb3\xe5\xc0\xfa\xb1p\xe5\x99\xab,\xcb\xca8\xd4\xed\x17U7\x1f\xe3\xd1\xe3U\xef1\x19\x92\x1d\x0c\xbb\xdf\x8f\xfb\x9b\xc1@\x8d\xf8\xe3\xde\xe3R)\xa7)ia\xc6\xd5\xbc\xad\xd5L\xc1\x0c\xf6\xa3\xc9\xce\xdf\xee\x02\x88p\xf4\xe8\x11)\xbcj\xc3\xd5B\xca\x88\xcc\x133\xd90\xeb\x1e\x15}o\x80n)\xfa\xf6\xd3\xa0\x15\x83\x1c\x88\xa1\x87DK\xeb\xd9d\xc7\xe8\xda\x8f\xb6\xb5%\xd8\xbabv\xaa\x0d@\xc7\xdd\xb7l\xcf\x02\xecb\xb95S\xf1\x91k\xd1Yum\xad\xef\xbap\x00c\xda\x1bM\xeev\"\x0c\xfe\x98\xc1\xb1\xed\xe5\x8e\x93\xd3\x97=X\\;\xfe\x12<\n8\x87k\x95\x05\x01\x13o\x03?\x15\xdd T\x168\x08S\xa1\xa2#G#\x0b\x9a\xa7\x13\xea\xf3\x05\x0b\xbbC\x17\xf8\xd5Y\xca+\xa9A\xd6\x0cU\xe0\xd7;\x19s%\xaa\xad\xdd\xc3\xd5&\x98\xaa\xb9v2\xc0\xdee\x1c\xe8e\x03\x95\x93\x97dJ\xae\xc9c\x92\n\xca\x05\xaeP\xf3 \x96&FTu#L \xbc#'!n\x99\x04E\xb5`[\xdf\xa9\xcfE\x06!\x80\x0c\\\x93\x1e\xa2bR\x9d\x99\xbc\xe6N\xe0\x9a\xe1<\xe9\x17jW;<p\xa1Q\x16e\x04\x19\x93\xa9\x16g\x1e=\"'6\xc5\x10\x15\xe7|\xf4]`\x9f&\xb8\x82\xfa\x11\xb9.\xf2\xad^\x0dY\xa3\x1b\xe7\x109\xd6\xad\x11Zt{\x02\xac\x07\x1e\xa3\xb3L\x9cvE\x94\xf3\xaf\x864C\xbbn\xcb\x94\x08\x00xM\xf9\x96 \xac\x0c\x1e\x0d\x12\x15>\xe659\x07\xe1\xf1%\x05\x1b\x10\x03\x07R*\xce6\x06\x06\x0c\xf3\x15\xbb(\"\x8c\xc1\x11\xcb\x8cV+\xf0C\xba\xed\"\xb2\x9b\x01|LR\xee\x95 M\xb9\xa7\x01\xad\x8fS\xf6\xd0!oX\xbd~\xb85Q\xcf\xfa\x8f \x0d\xf4hc-4P\xf3\x80\xcc\xd5$\xa0]1.\xe1\xc7\xbd\xc7\xeaO\x86\xeb\xbfH\xbf\xc9i\xaf\xb0\xd0+#\x04\x11D\xbb\xd3C\xc8^'\x16X\xcb\x113\xd5T\x8f\xe2\x81G@\xa3\xb27\xd5r\x0c4\x0d\xf5\xac\xe2\xf5\xfd\x11\xd0\xa8\xecM\xb5\x1c\x03MC=\xfc\x08Pxm\x9e\xf9Q p\xd7\xa8v\xa2\xd8\x1d\xb8\x94\xd8i.E\x03\x7f\x1bi\x0eu\xaf\xd6\x8d`wb\x0c\xa93\xa43\x98\xa3\xca\xac\xea\x90\x1d\xd3\xb7]\xad|\x1d\xe5\x1e\xda\xb3\xf5G\xee\xd9qh\xbc\xae\x96O\x05\x8f\x1d\xa2jc\x15\x98\xbf\xa1\x96# q\xd7s\x8c\xe0\xc5BG\xe9# \xa8\x97_\xb3\xa0{\xf3k\x16\xb8\xca\x1f\x01\x80\xa3\x06?J\xbbC\xe0G\xa9\xab\xfc\x11\x108j\x08)\xaf\x0b\x15\x8d5\xa8\xdc\xce\x1a\x8e\x00\xc2UG\x9a\xad\x0e\xad\xb5\x1c#\xb3U\xf3f\x1e>V\xebN\x8e\xa8;i\xab\xbb&`\xee(_\xaf\xb4.\xf1\x90D\xa1\x1b\xa9\xec\xa4Vj'\xb5\x88P\x12\\9\x88l\x1ao\xc4\xd1M@\x81\x94\\whM=\xd6);\xbb\x13\x1d\x07\xad2T\x95\xf1\x11a`N\xcb\xbaTV\xac\xaa^\x93\xa0\xdb\x0f\xae\x87\xaeVu\xae\xd9R\xd3\xe3KU\xe2\xa0\x14\xf7\xf2\xb1\xa3\x99#\x16\x85\xca_SB\xc5\xb1\x88b\xc1\xder\xb69\x04\xad\xe1D\x7f\xc8\xc2\x15\xe3\x08\x9f\xbf&C2\x1dLD\xac\x1d\x938N\x97\x95\x88\xdb\xdbD\x9cm\xc0\x10\xdb\xc9\xc4P\xea\xcdV\xdf\xac\xc9Kr\x06G\xa6\x9c\x0c\xafHof\xf5\x0c\xf0u0\"\x8f\xd5\n2\xea\x1f\x03\xffX\xd5\xfe\xd2\n\xfd\xbf\xdeD\x8fuL\xdf\xc7=\xe2\xaf\xaf\xac\xc4\xff\xb8\xf7rn>\xf5\x96Jxw.:;.\x80Y]wD\xba3eI\xf8\xf1\xe5\x8eW\xc1M\xc7)Kz\xb0N\x14\x1fn\xce\xa22\xc0\xec_\xa6\x0c\x9a\xaeeSY.\xe3\xa0^\\m\xa1\xa1|k\xcf\x8e\xc0\x9f8PM\x9dj@\xeaT\xc4\xd6|\x14\xea\x07>\xcc\x0fNX;j\xe1l\xd6\xa6\xde\x17,\xac-\x0e\x0b\xcc\x11\x1dt\xe9Kl=4\xf2v\xf1\xc1CE\xb3Fr|o\xefR\xd7\xc5\x105-\x06\x92\xe3|\x01\xe3\xabC\xb4\xa2\xde\x0d\xac\x90\xbf\xfe\xaf\xffM\xe1|e\xb0\xd6\xc7\xc8(\x0e\xcd\xd9\xfa\x08\xcd\xdbZ\xd4D\x9c#\xf6^\xeb\x9a\xb0\xb9>N>rC\x7fL\x0d\xc2Q\xc3Q\x02\xf3\xba\xb2\xe9+\x1f\x03\xa5\xe4\x8ad\xc5\xf3\xc3.\xcb\xa8_\xe4\xa4\x84\xf5]\xc4\xa9\x90}8\x8c\xc8\xcb+\"\xf4\xe9\x1a\x19\x93s\xc5\xc7\x15\x9b.+\xcaP\x13\x05\xd6\x07F\x0b\x85/FmU\xd2X\x89\xb9B\xbf\x82\xc6\xea\xac\x9c\xac\x99\xa5iU\x15\xafh\xcf\x8a\xf5\x9c\x97\xda\xd4 Z\xab\x85=Tip\xc5\xb9\xd4\xcf\xf78P\x03ri\x8f\x0f\xa1\xa9\x8a\n\xd5*\xd9\xecya\xaf.\xa7\xe4SS<\xa8\xcd \xf5\x03\x0f\xfa\xea\xc6]1\xb9\"\xf3\xda\x94\xcd{@\xa8{\xe8\xdb\xff\xec\xf9\xc0q\xf03\xef)\xden\xb2\xbcpg\xe1l\xc38\x8b<\x08\x13\x0f\x19?ug\xd4S\xaa3}\xe6\xced\xe9\xa2\xa0~`\xf2~\xde\x0c\xdc\xb9\xce3=k\x82\x0e\x8e-C\x16 \x03\xdft\xea\xce\x9a\x86\x94\x0b8\x06\xb49\xcf\xdd9\x03?\xba\xf17\xf7&\xd7\xd3\xc1\xb2\x94iy\xc4q\xbf\xc3z\xaahd\xc5\xcb\x84\xdc\x1ej+\x92pvA\x18\xb9$\xb1F\xc6\x0b\xc2\x86\xc3A\xa1\n\x8c$\x12\xcf\xd9r~\xb6\x1c\x11x\x98.]\xa6W\xc5\x03vm\xe5Q\"\x10.n\x84Gi.\xf8\x04\x9a\x02D\xe66X\x01\xa2-\x13\xdfg\x01K\xfb\xbd\xde``\xe1\x16\xe4\x92D\x17D(\xf0\xf9\\,\xfb\xac\xd1\x84\xe3\x03n\xc3\x95,A\x1a\xbb\xc6\x8a\x160\xd7\x84i;\x17\x1c\xcb:\xe1SC6\xb3\xd4\xcae\x01\xa9\x830\xb1I\xca=s\x88\xde?]D\xa7[\xbc\xf6:\x11\xdc\x0f]\xe2m\xc0\xf6,p\xde\xdeRm\xa532?\x1b\x91\xa9\x03?\xf3\xbb\xd8\xf32^\x82CWm\xc2h\x0c\x8f\x14X\xa3\xa2\xbd$\x9b\xb0h?\xb2\x1d\xff\xd8\xc6\xafO\xab\xb6\xaa\xdaJ\xe6y\x93\x91\x0c3\xa7\xb6\xbe\x0b\x0b)\x9c\xe6\xa6#\x12\x8c\xe0\x18\xbb~\x04\xfd\xec\x9c\x9c(\x82<\xf1v\x94\x7f\x19\xaf\xd9\x17\xa2\x7f\x96\x9f\x17\x8f\xa7\xf5\"\x9fO\xebE\xa6\xedE\xb4G}f\x1d\xe4\xf7\x96\xb3^{\x11j\x96x\xa1\x8b#2_\x0eF\xa4\x9f\xc1\xd5b:\"S\xe07gDJ\xf2\xfc\xb3:T\x19\xc8}\x8d\xcd\xc0r\x0c\xc8\x15\xa1\x93$N_\xd1\xbb\x11\x8a\x01\x8a\xc1]\x90\x94\\\x92@\xb1\xb0\xe9\x19\xd4L\x01E\x0b\xb5\xa7\x83\x0b\x92\x0e\x87naR\x873\x0c|\x8f\xf5\xcfG$\x1b\x8c4[\x86C}\xf3\x05\x9a\x1a\x91\xd4\xa0\xb9Y\xf4\xe4\x9a\x8c\xa7dF\xfa>l7\xd9\xde\xa7H\x07\xa5\xac\xa7)\xda8\x18\xe9;\xd8\xd0F%\xc7\x1c%Xo 2m\xe3\xc7+\xb2\x19(X\x1c\x14\xb0\x1bq(\xd0=\xf0'\x82Q=p\xa1\xb8\xccF\x0b\xb4\xa4~\xc9\xd8\xd2\xca)\xd2J\x9aKM\xd3\x12M\xac\x954\x0d8\x85*Z=\xde+\x89R\xd4\xca%\x8dR\x92\xaa\xc0J[.a\xcf\xfc\xa0\x03jY\xd3\x82\xc6\xe2\x82\xf0\x82pt\xd2\xef\xab\xf5\xed\xf7\xf9\xa8`R]\xa56\x88\xe3\x83\x8b\x01\x10 \xaeQ'68S\xb7\xd40\xbfb\xc3\xaa\xe4(o\\\xe1Q>\x14 \xde\xa1=c\xde=\x9bx\xc8[\xef/N\xf9\\6W\xcf\xa6U{B\xaa\xd3\xab\x86\xf8h\xed\xff\xec\xfc\xccIA\xd3\x9c\xbc\xd4\xccp\x14t\x9apB\xe4\x80\xf5\x88\xecFd?\"\xe1\x88l\xbb\xd1\xc5\x03\xa4\xf4\x01t1\xa8\xd3\xc5\xd4\xd0E\x0f\xe8b0\"g\xedt\xd1\xeb@\x17\x13rE\x02K\x17\x15\xd1\xf2\x90.n\xc8%\xc6p\xe8?=G\x8a\xb6\x86\xac\x15\xea\xb8Ac\x9c)R\xa4\xf5\xe0\x82lj\xb4\x12\xc8\x80\xaf\x00\xde\x1c\x80f\x0fM(\xc1R\xc7m\x1ca\xfc)\x03\xa4\x82px\xa5(\xc3G\x04\x0fZ\xb6\xf5\xed`\x1c7\xea\x91\"\xc8\xe4\x9a\xf4\xc3:`\x16(%O@\x86^\x0fSw\x83\x02|\x1a<\x07d\x17\x03\x05\x8c\x93\xad\xd8\xd2\x9a)9J[\xde\xb1U\xbc\xacoX\xcdtD\xbcA\x99M\xa4\x93|s2\xdf\"w\xa8\xa6\xb9.\xbe\xe8\xb8\x9c\xa1\xc3\xe4\x0d\xfc?\xecK\xe9\x8a7m>\x1eS\xf1[\x99\n\x10\xccB\x17\xb4\xc7\x8eR\x92\xb6\xa1>\x92\xff\xf8\xc7\xf3\x9f\"g\xf1\x1b8K\xce\x99\xfc\x1agr\xf2\x1f\xffh\xfe\xe3\x1f\xe2?\xe9/\xc4\x7f\xfcv\xfe\xe3\xbb\xf8\x8f\xff7\xe5?\x0fA\xc1F\xfc\x83\x01\x8fpw\x07n>\xec\x0e.\"\x97\x84_\x90H\xed\xe0JX\x01\x08\x16\xcf\xa3\xe5\xc0\xce\xba\x99\x07\xbd\x03\x11f\x00]\xbb\x10\x91{\x8b\xfb\xd7\x1a\x0d\x90\xcaK\xdb\x0c\x18\x80\xfar\xc2{d\xb5\xf4\xa4b\xf8LJ\x0b\xd9\xaa\xd5\x816\xb1\xfc\xa2\x9a\xddx\xd6B}\xb5\xe8\xdfz\xc5c\x17\xa4\x06\x85\xf5\xc7\x8cB\n$t\x85\x8b\xe6F\x1cF2\x0f\xe8\x8a\x05#r2\x053\x1cGUE\xfdV\xb9\xae\xe9\x88$Z\xce\x0e\x14IMM5}`'z\xfb\xcc\x06#r\xb2\xa9^$\xd2\x93\x9d\x0f\x05\x18%\x0e\\\xdd\x04\x04\xa4\x96\xe4\x95K\x8c\x0en\xd6I\xbeaw\x9c\xc348Q\xd1\xdbpo8\xac}\x06/Q\xb9\xb2\x83:\x15\x1an0\xa0']\xe0%\x0e\x98[\xa0%\xfa\nmK\x90\xc3\x96\x0e\x11\xdd)\xdc% *^\x93>lG\xe7\xcbAG8+\xb4\xbf\x19\x12\x81\x0eh\xda\x82\xcdv\x006\xeb\x08V\xa3\x8e\xc6\xfc\xac\xae\xc6eEh~\x06\xa0\x96j\xac\xfa\xa50\x8c\x1f\x0c}\x95U~\x8cQ\x1d\x8f\xbd\x06\xb8\xe0\xe2\x8a\x82\x1eh\x02\xd0&\x886\xab\xd7x\xfei9\xc8\x97]\x91ji\x83\xf5l\x80\xf2\x8c\x9b\xd3\x9b\xdcs[,\x97@\xac\xf6<_$q\xd2\xcf\x03\xbe\xc4\xf9\xbe3\x8b\x04\x9cg]\x17\x13fJ\xac\xe1\xa8%\xe5p\xa3\x87p\xb5\x1c\x1f\xba\xe6\xf0\x98\xee\xe1\xab\x0e\x0e\xd6Z\xc3|\x1b\xccj\x98\x12\xb7\x14\xe2#G-\xf6\xc9\x1ft\xa3\x84\xc4\xd1\xcbC\xb8u\x10q\xea4\xb2\x96\xd2\x0567\x95n\x83\xae\x05\xb2\nT\x1f$W\xd9d\xbb\xbf\xe6\xcd^\xfdruo\x7f>\xee\x0f\x16\xf3\xc5\xf2\xe7\xf7\xc3\xeb'\x93O\x16o\xe4h\xf6\xeb\xcb\x93\xc5b9\x00E\xf0b\xf1\xc9\xb4\xf71\xf6\x10\x0ey\xa5\xb8\xbb\xef\xb0\xb7()\xcf\x1a\xb6\x0dy\xce\xef\xd9\xf6\xab\xbb\x04\xc4]\xb8&\xd4\x7f#\xe7=\x08\xd2\xb8\x88\xfa\x83\xf9\xf2\xf1\xa27\x19\x9d\\\x8f{\xfafO\xaf\x87\xc1\xb7\xb8\xb9\xdb\x83\xa6\x82\xcbA_\x95*_t\xaeC\xd31n\x97\x9d\x804[\xa5\x82\xf7\xa7\x0e\xbc\x1cL\xd2\x98w\x0cN\xaa\xeb+\x9ck\x9a\x13@W\xbd\xa5\xeeI\xec\xdf\xa0\xff\xc9\x03\xc7\xa5g\xe4\xa3\xc2h\xa3\x82\x04_\xfa\xeb\x11\xe9m{j\xe7\xbb\xb1\x92Q\x9e\x17E\x933$\x98\xbb\x92\xc0\x1e\xa3\xc0\xee\xa6+\xd5\xed\xdd\xce\x9c\xd5\xba\xf3\x93\xe2\x86\xb2\xafH>\x14\xb0\xd2{eo\xf9\x12\xe8\xb2\x18\x8f\x9bk#\x06\n\xc1\xee\x84\xdeLP\xbd\xd9\x1b\x1c\xdc\x1b\x9a\x9f\xd5\x80\x9f\x8d@OF\xf3\xdd\xc6f\x12\xd0T|\x13\xad\xd9\x1d~\xf7\xb4\x0c\xb7g\x81\x11\x8d/@|\xdfL\xd8\x1d\xf3\xfa\x19\xe8-\n\xa5^\xa2\xfa\xfc \x95-\xfe4e\x83N5\xd3\xd9\xe2\xcf\x8a%\x99\xde\x98\x06#\x92\xa0>\x8d\x0cI2\x9f.\xf5\xe0v\x08EG\x0e\xf1\x99\xe2\xef=\xb8q>\xbeo\xd6L\xadc\x07\xb5\xb6\xc5\xb1\xde\xb5\xb8\x91\xcc\xcf\x97\x1d\xa2\xe7\x91\xc3\xf2b\xf1\xf7\xd0\xee=d\xeaT\x0f\xba\x15\xf9\xdb\xcc\xce!>_\xfc\x1d\xe0\xf9\xc5\x9f\x82)\x80\x05\x93/\x921I\xe6O\x0d\x8a6\xabR\xcc/-ho\xfa\x01\xb9$Y!\xe1!\xfd}\xc8t\xd9\x95\xf6K,\xa9\x12aT\x04\x0d(\x8d\x91\x98}\xdd\xf4\xd9\x08\\\x1b\xa4#bR\x04\xea\xb4\xdb)\xe6\x07 7&\xd5\x1cZ\x9c.\x86c\xb9\x98,&rq\x8d\xff\xc9\x93\x93\x93\x139\x1a\xc9\xf1\xf8\xb4~\x98q\xba\xe8\xf7=)B\xc9e2X\x0cN\xb7~\xfd`\xa3>w\xde\x8c\xf4\xfe\xfb\x7fsL\x11W\x1f\xfe_\xc7\x87D}\xf8\x7f\x1c\x1fD8#\xbd\xbf\xfe/\xffw\xaf\xf4\xa5\xc1\xda\xa6\x8b4\x95\xcbQ.iIk\xab\x8a\xbe}\x1a\xe4\xa5\xd2\xde\xa8\xc8\nS\xcd\n\xd3&VXc\xc4v\xd3\x94v\xe7\xc7\x19)\x97;\xcc\x96I\x91\xed*,\xcd,\xdb\x85\x95 gQ9/U\xafx\xd0<\xc8Oz\xfa=<\xa3\xb9&\x01\x99\x91\xc0J\xc3\xf1\xa8\xdd\xf6\xac\xfa\xd3\xd2\x97?\x17\x13\x11\x7f\x1b\xdf2\xfe%MY\xbfbtS\xfc\xa9e\xc6'\x82\xa5\xa2O\x07\x16^Z0\xbf\x18\x8eA\xec\xfe\xef\xff_oPH\x9d\xfc|>z\x0f\x1f\xfe\xfa\x97\xffZ\xfc\xd2\x9f_\x9f,\x07\x7f\xfd\xcb\x7f\x85\x8f\x9fL'\x93\xfa\xd7\x9f\x9f\xe9\xb2\x9fL\xd5\x7f\xc5\x0c#[\xef\xa8T\xee\x8d\x9c\xbf\x19/\x07\xe3\xf1\xb8\xaf\x1e\xe4'\x83\xd3m\x085\xfc\xf5/\xff\xfb'\xe7\x95\xbc\x8bt0\x1e\xf7\x17i)\xdb\xffV\xcb6\x7f3^\xa4\xaa\xd2>>\xd5\xb3\x83\xff\x96\\mM?\x8an\xd5\x12\x8d\xf9\xe3\xde\xd2E\x1c }[\xa7\x08\xa7\xf3\xf1\"\xc5\xdd\xd1\xf2\xd4\xb5\xc3\xa2m\x16\x8a'}a\x0e\x02\x01\x7f\x8d`\x0e\xd3~\xe2#\x120\x85\xbc\x85N\xd6\xdb\xc8\x0e\x98^\xdb\xad\x04\xd0em\x10k\x13\x914WF\x91<\x80\xde\xf8\xceM\x9b=\x92\x1d\x91\xfb\x11Y\x8d\xc8\xdb\x11\xb9\xfd0\x82t\xab5\xbf\xab&\xc2\xb4\xd2\xc4`u<aZu\"LoI\xb9H\xee9\xe5\xd6\x00\x02R\xb9@\x1d\x8e\x9a\xe5\xb7\xb9\x82\xb5i\xdfb~\xd5\x9d\x83\"aoK$\xecD\x13\x88\x08.\x8c8\xd5\xcd\xd5\x9f>.\xc5\x9a\xccFaK\xaer\x88a\xe8\xb60tx\xfct;\xdf\xea\x9c\xe4\xf2\x8al\x06\x17d;\x1e\xb7\x9c(\x99_a\x0c\xb6\n\xb9P\xae\xd2\x9b\x14\xd8_\xd9\x15<\xe8,[\xb1\x19v\xe1\x82(\xc1\xca\x03\xc2\x18\x97vAz\xe3\x13\xe3\x86\xc7\x1f\x0c.\xda\x87\xd9\xfc\xc0\xd7\x07\xb9\"'\xb4\xafPX\xefN\xc6d\xaa\x05\xc2\xd4\xeeW\xa6#rO\xaeH\xef1NL\n\xa6\x89\xa0:\xc0\xb2\x01\x1e[']\xe6\xc3\xfcT\xeb{U\xc3zDB\xf57\xe9\x06\xb5\xf9\xc1\xa0\xb4\xcdc_\xcd\x83\x9a\xcaQeJ\xc9f\xa0\xa7\xf4\xa8\x06\x89\x06z7I\xfdh\x1b0\x18\x8a{\xd5R\xa1r\x95\xb69f\x18\x8a\xbf\x1c\xe0{rM\xfao\xe7;\\j\xc5\xe3\xca\xcc\x91<\";\xb46\xc8\x89 Z\xc4\xce\xcf\x97\x15\xb6\x91\xf5\x0b\x02\x80\x9e`G\xb9\xa7K\xd0&\x7f\x0c\x10\xce\x1e\x08\xc2t\xa9X^qI\x1d^+\xae\x9fj\xca\x8f2V \xbe\xd1\xe5WW\x836\xfd\xf6\xe4\x9a\xdc\x1e\xb3\xcf1?\x18\xc5V\x1d\xb4\xeb\x97\xc4\xe9\xcc\x0e\xddQ%\x11ug\xc4\x11\x07\xbb\xed\xa7\xf7J\x9b\xce\x85\xc0j5T\x8b\x03VH\xff0\x02\xf4\xfe\xfa\x97\xff\xe2\x8a\xa0\xea\xfa\xbd',H\xd9G\xad\xfa\xa3\xee\xc1\xc0\xc0\xbc\xea\xf8\x15\xe4\xa9\xdb\xdb[\xf9\x1b\xb9\x98-N\x17\xa7N\xb9\xc9o\xd4L\x9f\xbe\xb9\\\x9c\xd2E\xfa\xe4\xe5\xa9\x91\x90\xda\xc5#Z3^7F\xe8s\x87^CX\x0b.7\x06\xab\xce&\xe82\xaa\xf9\x9c*\xe3\xc1\x8c\x9c4\xc4\xae`!\xf5[>\x8b[_\x08\xc6\x9b+\xd7\xf2\xf2\xd7Q!0g\xd3\xdd\x16\xf3Ko}\xe1\xed\x14\x92l\x99x}\x9f\xb0\xfeA\xa1\xc1\xa3)#\xbd\x8c\x07\xbd\xd9Add\xc7\xacy%\xb2\xccH4\x81\xc8dl\xfd\x9a\xddu\\\xf60\xaa\xd0\x83?\xf1\xc0\x11\xf9\xa6\xfak:w*\xfe\xe0\xc2n{6\x1c\x08\x98\xb5\xbf\xaf\xa1\xe8)\x90D\x0cjF\x18\x96\xafTB\xbf\xb0\xa3z\xa3s\x9c\xfa\xa3\x92[\x9b\xa6\x9f\xe3\x0c\xcc~j\xfcb63Sg\x8ez\xb9\xea\xb4\xe8\xf2\xf5\x11\x0b\xfc\xe8&\x9d\x11V\x1f\x12\x9a\x89X}U\xcb\xa4\x1c\x93\xda\x15L\xea\xd8\x8d\x0co:\x80*\xeee\n;\x80:|jg\x12eA\xab\xe2E\xdf\xc3i\xd8\xe3\x14,\x95\xee]\x96J\xce\xb1\xaemk\xee;\x1e|\x14\xb6+\xa0o\xb9\xffX\xe7\x1f\xb9\xdb\xa0\x1eXD\x822);\xea\x14\x04\xea\xd1\xb7\xd0\xb5\xdc\x9d\xabr\xb6 \x9f[Vw\xfa\xe6\x92\xce_.\xd2\xa5a\x0d\xdb\x01\x1a\x87\xea+\xa3\xbb\xf1xD\xfc~\x9a;\x18P\x89\xc3\xe1@\xc9\xc6\x90\x0bR\n\x9b\xaf\xbc\xad\x18k\xcc\xcbv\x01\x9e\xe8\x0e\xac\xe0\x90Q\xc9\xf9}\x85\x1b\x14.\x13(\xf4F\xa1\x7f5\xc91\xda\xee:l\xaf\xf6\xa5=e\x08\x05\xfb\x81\x82yo\x15\x06F\xbc;L\xf1\x88\x99tOo\xa3\xd7\xd0\x9a\xde\x11np\xc7\xba!\x97\xb6Y4\xbe\xcdM\xdf \xce%\x15\xec[\x05\xc6~\xbeYN2\x1e\xa0\xa6J\xdb%\x1b-\x1a|\xd4;T\xf5Y\xb5\xb4\x1e\x11\xef\x18\x12I\x1e\xa4\x0d'E\x8dx\x90\xab\xa5\x93\x8eJq\x92\x0b{\xebN\x05 \xb2\xc0C;f\x1d\x8c\x1d\xd1;m\xcc\xab\x87\xbf{9}`\xd5f&T\xfd\x99\x81\xe8p.E\xb4\x02\xf3\xa1#\xf1\xd0)\xb6\x98\xd6\xbd\xec\x91\xd3\xfb\xf0>\x15h\xe0\xd1\xd0\x8d\xc7\xdd\xe1\x0b\xd0\x92\x1eP=!\xc3|L\x0c\x91\xe8 \x0e\xa9_P8\xb4zh\x9f\x1f:\x8fG \xf2\xd1\xf3w_9\xbb\xcaJgWY\xf9\xec\xca\x1b\xd9\x834}vu\xb0\x9d\xf6m2\xee\xd5\x0eV\x82\xe7\x1e\xe3\xf1\x05pI\xadM9\xb9\xb2\x14\x9a\xe0\xadmC/\xe0Sf\xac\xd7/\x06\x8a-\xdb6:\xed\xe0\xf6:(\xe2\x88\xf89z\xc4\xfa\xe6+\x1a\xc0\xd9\xe2U\x8ew\xfa\xe4\xa4\xdc\xa1'\xe4\x0b\xcb\xc7&?\xa6\xd5\x8fg\x93\xe9\xf3\xc9\xd3Jj5\xd3\x97qr\xcf\xfd\xedN\xf4\xbd\x019?\x9b>'\xff\xcc\xd96\xe6\xf7\xe4\x7f\xa2^\xbcJ\xc9\xe5\x96\xb3\xedo\xd4?\xe3\x1f!e\xe2\xc5\xe1\xcbj5\xaf\xbeyM\xbe\xf5=\x16\xa5l=!\x85\x18\x86j\xdc\xd28\xe3\x1e\x83X\x86\x01\xe6IOC_\x8c\xf5\xcb$\xd9%\x07\xa0T\x15\xa6\xb3\xd3\xd3\xad/v\xd9JAp\xaa B\x80N\xdbF\xe1\xb4\xf4\x0e[\xd1Q\xd9\x80\xbd\xddF(\x9e\xfcI\xf8\x81q\xb0\xae\x9d\xe2W\xac\xc4\x9c\x02v\x9c_\x94v\x9fe\xc6Q*x\xe6\x89\x98\xcfH\\_\x88\x19\x0fR\xf7\xb6\xb5eG\x9b\xeff\x1d\x1f#v\xfb\x1f\xfch\x1d\xdf\xba?\x97\xb7\xda\xae\xcay\xa6\xd6.\x9b\xe9{3\xf5\x1c\xc5X\xac.'\xd0\"\x0c\xbe\xa3<U\x006U\x01{\xb3C\x99\x04\xdd\xfe6\xf3\x83u[\x1e\x0c\xa7y\xd8\x00\xcc\xde\x937A=\xd4\xd6\xee\xf7\x16\xd2\xfe\xc0\\\x7f\x1eX\xfb(\xaeE\xb9\x18_1r\xae\x91\xdebrI\xfc\x0b\x127\x1bt\x13s!Y\x95\x9b\xc7\x07\xac=\xd0\x14\xc9\xea\x11\xda3\xa763\xbb\x13\xad\xd7Q\x94\x98\xcf0(\x12\x8a\xde\xd9\x80\xf4\xa8\xbe\xd6 5\xd0\xad\x9a\xc9\xbe>\x14\x9d\xf8\xe9\x97A\x9c\xa2\x13\x9ck\x18\x89WT\xec&!\xbd\xebGj\xaf2R\xd2\xfc\x0cvK#\xa2\x1d\nT\xfd\xd5\x17\x7f\xa0KC0\"\xe1\x8b{\x0b\xc51e\xf1\xeeV\xab.\x86\x98\xcb\x8bfz\xf5N\xf0\x07\xc1[\xdbP?\x0dJ\xd0\xb2OGX,\xcc\xce\x8cnV\xa5\xe9\x04\xb7F|\xb5\\\xef\xddX\x8d\xc0w\xc1mc\x8c\xa8\xb1\xfaU\xbe\xb6\nj\x0bf\x02w@\xa0,\xc8\xf3=\x94\xfb\x17\x1a\xe8\xa8\x03] s\x15\xef\x02#,=\xf74\x14\xc1\xb7j8bb\x19\x95\x93'\x1e\x0d\x02\x13%FS\xe9\xc1(\x8f\x86te\xa3! rM\x04\x99\x91\x13\xbco\n\xbe\\\xec\xe8\xa0V\x08\x8c\xc7\x05\xf1\xa3T\xd0\xc8S\x85\xe2\x89\" \xaf\xe9V\x15.\xfa\x83\x9a\xd9\xd1}m\x89R\x7f0Y\xa9\xa7>+\xfaY\xea2\x88%\xd23k\x16\x05\xcc\xcf\xa8V\x01\x86\x9c\xbc\xb6\x0e'\x83\xcd\xb1\xa3\x94 \xe0TH\x9a\xe4\xd0\x0cF\x8e\xb3\x0cw\x17^\x15i\xf8q}(\x90\xffc:Q(f{QH\x9b\x141\xbf\x99T \xcb\x85\n\xd5c3\xa9\xd5\x1c\x18r\xc2ssV\xcb\x91!\xb3~k\xce^b\xc2P\xa4\x90\xe2&.\x83#f\xe6u\x81q\x1e719\xcb=f^\xf2RvZ\xbe\x80\xdb\x11\x85\xc5\xd2<\x1f\x05\x81\x05j\xb3\xef-\xc3me\x14l_\xbf6\x17(\x88,H\x05\xcd\xfbQ\x83]Jy?\"1p\x99C\x9e\xb3H>n06}\x81j\xaa~U\xc0\x1c\x19t\xd6\xbe\x7f\xe2\xf2\xaa\xfd9\xcfPIS\xb2\xabS\xfa\xa4\xabTp\xea\x89WL\xec\xe2u\x07d\xc0\xa0f=S\xae\xd7\x05\xe1Ph\x9e\x1d\x1e\x04R\x94\xc3\"\xe2G*\x9b\x98\xech\xfa\xc7\xdb\xc8F\xa3\x8fP\x14a\xf3hI\xd0#X\x03\xfb6\xb8\xd8\x05Fv'X\xb4\xee\x08#\x80\x87\xf2\x1f\xcb\xc5\xfbf\xe4\xaan\xe7\xde7\xdc\xcc)m\x15\x1a\x16\x98\x91\x18AW]\x1b\x9b^a;\xd1\x1b\x00\x93*\xa4\x90\x0e\x13L@\xde)\x14\xd2\x81F\x90\x99R\xbe\xcd\xc01V\x83\x843(u\x01\xc2\x03\xb6\xce\x0d-\x81\x07q\x19\xe9$\xcd\x12\xc6a\x01\xe2\x0d\xe95\x0b\x98`\xe5\xae\x8c*;2\x8a\n\x84\xa8\xd3\\\x07\x81\x9f\xa4~:k\xdd\xa2\x17\x7f\xd6\xa4K\xebh^b\x90\x04\x98\x83(\x0b\x02%VD\xe4\x9a\xf4&\x93\x9e\x12~1\xbc\xa21\xf6Rl\x1f\xf4\xfcc\x12Y\xd5\xf1\x90D] \xb6V\xecvDN%\x0f\x7f\xc19\xbd/x\xe8\xd25\x0c\xf2\x8e\x18eq5r\x83\xf9\x15\x96\xa1\xdd\xeb\xb0\xceG\"\xc4\x9c\xbb\xc0\x1aU\xd2\x95m:j\xc5\x87q\xfd8\xcb1 p\xff\xe5\x8bh\xfd%MD\xc6\xd9\x11\x03s\"&\xdb ^\xd1\xc0\x11\x9e\xf1\xcfP\xed\xf7l\xcb\xee\xfeL\xc2,\x15dG\xf7\x8c\x88\x1d#\x8f\xb7\x8f\xc9&\xa0[\x92\xb2Z`F\xf3\xcbG\xac\xb23\xbc \xb8T\xc1@\x8a\x81\xcf\x00}\xb9\xb9\x80\x1f\xf1\x08\"\xe9\xad\xd9\xdd \xdf7Eh\xbf\x82\xe1(\x8c9\x94Jl\xb5\xdf\xb2\x1b\x8az#Pw}\x84\xeb\\\xc6H\xb9Wf\x99!}\xec\xe3m+W\xdc\xdc\xdb\x9d/X\x9aP\x8f\xc1\x08\xce\x08\x04dr\xec\x0f\x8a\xfa\x8e\xc3\xdb\x02\xb7\xde\xc5\x86+\x8d\x18W\xa0\x1a9#O\x90\xb2\x98\xf2\xfa\xd5\xb7\x9d\xf0\xcanw\xbb\x80V\xdc\x96\x08,\x86\xa1UE12\xa5\xf95\nb\x95\xe6\x8eiMJ\xd2\xeb\xc4\x81S&\xbe\x10\xe5\xbdb\x87\xbbkzC\xa3J\xa6\xfd\xc1\x9c-\xf30\xba]\x1a\xdd\xd6\x1b=\xba\xc5.\xed\xe8\xce\xa5]\x1a\xaa*xtK\xad\x0b\xa9\x82\x829\xfeu\x01n[\x07\xae\xcb PU\x06d\xe8\xc2\xebU)\x0c\xae\xf9\xb9G\xe4K\xc5>\xbb\x8cH\xb1U=\x92\xfd\x1e0\xdf^M\xc3I\x1a\xe4\xbb\xf5\xbass\xb9\x9a\x0d\xd5hf\"\xa0\x82\xfe`\x94\xc7^\xac\x10\x14\xd4\xaf\xe9\xb9\xd0\xdc\x0bo\x11D\xe0\xf8\x1d\xefDr\xb5\x13W\x94\x17\xef/\x98\xc4\x0b\x98\xf4l\x92\xee\xfc\x8d\xe8+\x12<&\xb8\xed\xf7QrP\xdc\x9c\"\xc1l\xe2\x88n\x1c\x9d\x189\x85\x16\x03\xcfu\xc5\x0e\xce\xc2x\xcf\xfe\xee\x07\x8f\x16oX\x95FR\x0de\xbbv\x13\\p\xe2 _\xc0\xa8\xc3\xb1\n\x8e\xb7j\xc1c\xfdtD\x1c\xd7m\xc9!\x8d\xd9G\x9d\x89m}\xc9tY1\xb5\xe6;\x93\xe4\x1dM;\xcf\xbb\x15\x8e\xd0\x9a\xa3GzdX\x9d|\xb8(\xdc+\xdc\xa5\x81LL'w\x81(e\xe2\x1b\xc3?\x8f\x80\xaa\xc6\x89\x8f\xe3\x80\xae&\x8fk\xb1\xf3\x90\x1b\x1d\\\x87\x96J:\x8f\xa2\x16\xbcE\xe5`\xb2\x83\xce\x0f\xb0\xe2\x07\xc1\x0f\xf0\x96y\xef\xb2\x87\xd1\x95 \xaa \xf5\xdcb`2\xd2{\xd9\xcb\xa3\xf8\xda\x91R+\xbdwy\x8a\x05{/{\xcb\xa3T\xc7%\xf0:\x0c\x05\x8a\xcd\x96\x0bYA\xbe\x1a\xc5\xcb\xfc\xaaC\xa7\xd7G\xfb\xc0\xcd\x97\x87\x84j\xe2G\x84\x0d\x08sk\x03\x84\x16\x98\xc9\x90<\xc6\x08\x0b\xb0\xf5\xc0\xa8`\xed\xf4<\xa7\x16\xf5\xd1+\xa5\xbcW\xa2xMou\x84\x88\xfcQD\xdf\xceS\xdc\xa5\x89\xa2\xd6\xc9\xc8\xfcm\xbe?\x8c\xb4\xda\xa3-f\x06\x14\xe5\x1d\x98\x7f<\x0d@\x14`\x85\xd3+T\xb5\xe3X\xfe\x9e\xb3M\x7f\xd0\x82 ~N\"\xa0R\xedoZ\xcf\x04\xbb\x13\xfdBm\xa8\xb7oROt\x19\xbd\x02\xcc\x1d\x05f\xb3On\x1e9bm\x87Dc\x1e\x07(\xe6g\xf9:\xc2\xf6e\x8a\xbcC\xed&\xdb\xe6\x95\x1b\x13u\xa3K1\x1b'\xabA\xd5\x190\xb6!\xb9\"\xbd\xb7\xab\x80F7\xbd\xae\xaa\x942<]P\xae$\x81[-k\xfb\x12\x85\x93\x9a\xa1\xa5\x8dC\xd2\x1b#s\x9bu\xa4\xfc5\x8c\xe9\x02\xa9Uek`\xd7\xf1k\xadF\xae*f\x89\xbb\xd5\xbc\xc0\x11\xcd\x19b\xa2uT\xf6X\xce\xa8\xb0\x15\xbb\xc3@\x1e\x93\xef\xfe\xf8\xc37\xaf\xbf\xf9\x97\xaf\xde~\xf3\x87\xaf\xbf\xf9\xc37\xaf\xffc7\n\xe6<\xd69\x82\x8c\xa9\xf2z\x8f\x0f\x1a\xfe\xd3\xfe\xf5\xac7\x7f\xd3[>\xb9\xee\xc9\xc7\xf37\x8f\x97O\xae\x1f\xcb\xf9\x9b\xc7\xbd\xab\xcb\x97\x7f^\xa4\xcb\xe1\xe0\x14\x19\xdc\xe9\xfc\xcd\"]\x9c\xf5\x1e\xbf\\\x9c^-\xee\xce\xa6\xe3\xc5\xdd\xf4\xeb\xc5\xdd\xa7_/\x87\xa7\x134\x0fQ\xb3\xdb\xbf\x9e-\x16\xe9\x93+\xf5O\x0foM\xdao\x83\xeb\xde\xa8\xe8\xcbd\xaer+Vy\xd9?\xf9\xdd\x1f\xbf|\xfd\x1f\xbf\xfbj\xa0^u\xeab\x91\x0e\xf3W1\"= \xeeQ\n\x15\xaa\xcf\x83'\x86\xdb\xe2\xbb,Tq\xd9?\x85F{\xe0o\xe6t~6\xfe\x9c\x8e\xdf}1\xfeO\xcb\xfcq\xb6|rZ\xad\xb3\x0c\x81\xb0\xad\xa8^\x9d^\x17\xda\xcb\xf9\xf7\x88\xf4\xb6~\xcfE\x0b\xd5\xa0\x7f\xb9\xa3\x9cz\x82q\x13Q\xddhZ\xfa\x8f\xa2U\x9a\\\xc8G\xbf\x9e\xbe8\xbb\x90\x8f\x02\xa1\x9e\xe1q\x8b\x8f\xe7\x17\xf2\xd1OY\x0c/O\x9f\xc1\xbf\x9f_\xd4\xaf\xdb\xab\x1f\x989tA\xd8\xd2n\xa4\xb0\xf7\xb0\xf8Q\xb2\x8c\x98//PUzb|<r\xa3\x11;\xbc\x89@\x13\x89\xb3\x0e&\x12b>]\x82\xf2g\xfe\xf4@nE\x10ON\xc4A7\x1bAE\x93\x1b\x8f\x88\xd0\x9a\xbaf\xab\x81\xc0\xaa\x87\x91c\xa91Ut\xe7\x8bh\x0d\x93w\xff\x87x\xcdR0'\xf6At\xd1Zv\x7fD\xa2\x81M\xec\x17h\xfeWh\xa4\xa1\xca\xf5\xb5\x8f\x81\x81\xd6\x0d\n\xab\x1b\xa4M>\x86H\xe3fJ\x89wq!@\xc9\xa1\xa9\xf0\xaa\xc3\xd12\n^\xb7Q\xf0\xdc\xa3pD'4\xed\xf4\xbbP\xe5\x06(\x8e\xc3x\xad\xdf\x8dr\xb2Y\xd1I[\xba\xdd\xbcp\xf5~]\xaf\x8f\xc8*\xd79Z\x0eA\xd0\xb1\xf3C\xd3\x01{\xf89\xef\xb02\xa29\x07/\xb2\xcd\xd3E\x0b\x92t\x01\xf3\xd4X!\xda)\x84\xcb\xdc\x99\xf2\x91\xecg\x0f\x99\xba\xbaX\xd4(m\x14V\xc2\xd1'85\xc3\x86\xe2\xb2j\x11|Adh9\xe1\xb3\x92q\xc5\xe1Ds \x0f\xad\xa8\xaa!\x83\xcc\xef\x18Q5\x1f\xfb.H\xdc8\x12\xf9\x0c\x1e\x1c\x88\x0f\x06\xd9\xe0\xd4\x87\x00l\xf1\xf2\xe3\x81\xfb\xabr\x06\x87\xb4\xa4\x1a<BVB\x00\\F\x90\x7f\xb3\xcd\xa0\xdet\xcdl\x15\xa5#\x7fw\xfe\xb2\x84\xdcE\x1d\xa3:z\xecx\x16\xd6^mH\x9d\x03\xef\x1ca\xbb'u\x0d\xb2Yd\xae[\x9dv`\xbav\xd4\x1aJv\x1d\xf6\x0f9\xdc\xe9\xd2\x86\xb5\xc5<\xb2 =,G\xcf\x97\xa5\x10\x0f\x9f\xae\x07\x0c:\x9a\x85\x1e\x0b\xac\xa1\x0e\x7fKP\xe1\xfeE'@\x1b\x8c\xd2\x8e\xa0,\x1f\xdf.\xfc\xa0\xe17\xde\x97\xe5f\xef\x17\xc1\x8e\xee\x8b\xf1\x7f\xa2\xe3wg\xe3\xcf\x17\x93\xc5x\xf9\xa4\xf0>^\x9e\x8e\xb4S\xb0I\xffz\xe6G\x82\xf1\x08\xbc\xf4\xd1@Z\xf2\xe7\xc7\x91z\x01\x92\x14\xf3T2\x95-\xe1~\xcaR\x99\xecb\x81^i\xeee\xc2\xe35fO\xe5&\xce\xa25\xd4$\xfd0\x8cW~\xe0\xb3H\xfa\xd1:S}`\xa9\x0ciD\xb7\xb0VU\xb9\x84q%tI\xc1\xbc]\x14\x07\xf1\xf6^z;\xee\xa7\"\xa4\xa9\xf4\xe20\xcc\"_\xdc\xcb\xb5\xcf\x99\x82\xe1^\xb2u\xe6a\xf5\xec\xa7\xccO\xa0\x1e?J\x85/2\xc1dH\xf9\x0d\x13~\xb4\x95i\x1cd\x08\xd1\x9eb\x81T\xae(\xdfR_=\xc4\x99\xf0\x7f\xca\x98\\\xa1\xa20\x95j\xfb\xaedf\xe9\x05\x8cF\xf8\x10\x8b\x1d<\xc4a\x92 \xc6\xe5\x9a\x85\xb1\xc7\xa9\x90k\x9f\x86q\xb4N%\xf4\xdf\xf7R\xb9\x8b\x83\xb5\x1fmS\x19\xf8\xdb\x1d\xb4\x9fP.\"Us\x12d\xe1\n \xca\x92$\x80\xber\xeaC\x13{\x16)y4\x95\xd4\xa3k\x16\xdeK\x8fr\x06\xd0\xc4aB\xa3{\xe9\xf1\x0c\x06{\x1d\x87\x007\xbbK\xe2\x94\xad\xe5\x06\x9aI\xe5&\x88\xd5X\xc9-\x0d\x02\xc6\xef\xe56\xf3\x05\xe5\x00\x8e\xbf\xa6\xf7\xf2\xc6WX\x11\xc9\x88e\xa9\xa0\\\xc67~Do\xa9\xe4\xcc\xf3\x13\x96J\xce\"A\x03\xf5w\xef\xb3\xdbT\xa6;\xff&\xddQ\x89\xce R\x009\xe6B\xa6\xf7\xa9`a*\xe9\x96E\xde\xbd\\1\x1e\xf8\x91\xf4h\xc88\x95\x1e\xa0\x85\xf4\xe2\xcd\x861\x85/\xeb8\x95\n\x05\xa2\xadd\xa9\xa0\x82I\xa6z\n\xe03.\xe4&\x13\xab8\x9074\xdb\xb0H\x06\xd9]\xc6\xefeH\xfd4\x8ed\x18G4\xdd\xc90KY\x16\xca\x88n\xe3{\x8a\xb8\xa6\xa0L\xa8\xcf\xd5\x1f\x80)\xf6|\x1a\xe0\xa8\xdeKA\x85\x88c)|\x16\xad\xa9\x1a\xe1=\x0b\xe4\xde\xa7?\xb2T\xee\xfd \xa0\xeaO\xaa\xd0f\x1f\x03d\xfb\xf8\x9en\x99\x04\xccF4P\xa3\xbfN\xa5\xb7c4\x91\x9e\xdaw\xc85\x8d<&a\xd1\xcam@S5\xb2Y\xaa\xd0,\xda\xc62\xf2\xa3\x1f)L\xb4^\x0e2\xdd\xc5j\xd4\xe2\x80r)b5\x03\"\xbe\xb9\x8f\xa5\x88\xe3 \x95\xb7j\x8d\xca\xdb\x98\xdf\xa4\x922\x1eK\xca\x13*i\xeaS\xb9b\xa9\x90+\xff\x86\xc9U\x00h\xf9\xee\x9d\x1a\xdeDzA\xb6\x92^\x1c\xabU\x19'rCy(7~\xba\x93[\x7f#\xe46\xe3\x99\xf4\xa3M,\x7f\x8cW\xa9\xbc\xf1o}y\xc3\xd9Z\x064Z\xcb\xc0\x0fc\x19\xf8\xd1\x8d\x0cY\x94I\xb5\x18e\x18\xaf\xa9\x8ch\xc8d\xa2\xf06Q_\x938\x15\xf2\xa7$\x8e$\xf7\xbd\x9d\xe4\xd9\x8e\xcb\x94\xdd\xddK\xe1'\xa9\x1a/\xa6\xfe\x89\xe5-\x8d\xb6\xf2V-\xe7[\xff\xc6\x97\xef\xe2\x88\xa9%%W\xfeZ\xae|\x05\xf0J\xad#\xe9\xb1Xa\xb0Z\xaar\x1b\xef\xa5\x1f y\xe3\x872\xf4\x03\x191!\xe3(\x901\xdf\xaa\xe5/\x93l%\x15\xc0\x82\x052\x8bby\xcb\xd6\xf2\xee\xeeN\xde\xdd\xbf\x93\xd4\x93t-)\x93t#\xe9VR_\xd2@\xd2P\xd2H\xd2X\xd2\x9f$\xe5\x92\xa6\x92\nI3Io%\xbd\x93\xf4\x9d\\Q\xb9Z\xc9\xd5Z\xae\x98\\m\xe4j+W;\xb9\xf2\xe5\xeaG\xb9\n\xe5*\x92\xabX\xae\xb8\\\xa5r%\xe4j/W\xb7ru/W\n|\xe9y\xd2[Ko#\xbd\xad\xf4v\xd2\xf3\xa5w#\xbd@z\xa1\xf4\x14)\x94\x1e\x97^&\xbd\xbd\xf4n\xa5w'\xbd{\xe9\xbd\x93k&\xd7?\xca\xf5\x8d\\\x87r\x1d\xcb\xf5;\xc9<\xc9\x98d[\xc9\xb8d\xa9dB\xb2Ln|\xb9\xf9Qnn\xe4&\x94\x9bXn\xb8\xdcR\xb9]\xc9\xedZn\x99\xdcn\xe4v+\xb7jb\xe56\x90\xdbPn#\xb9M\xe4\xf6'\xb9\xe5r\x9b\xca\xad\x9an\xb9\xbd\x95\xdb{\xb9\xbb\x91\xbbP\xee\"\xb9\xe3r'\xe4.\x93\xfeZ\xfaL\xfa\x81\xf4C\xe9G\xd2\x8f\xa5\xff\x93\xf4\xb9\xf4S\xe9\x0b\xf9#\x93?\x86\xf2\xc7X\xfe\x98\xc8\x1b&o\xb6\xf2f'o|y\x13\xca\x9bH\xde$\xf2\x86\xcb\x9b[ys/o\xde\xc9\x80\xca`%\x03O\x06\xbe\x0cnd\xc0e\x90\xca@\xc8 \x93\xc1^\x06j\xa9\xca\xd0\x93\xe1Z\x86L\x86[\x19\xeedx#\xc3@\x86\xa1\x0c\xd5\n\x96a\"\xc3\x9fd\xc8e\x98\xcaP\xc80\x93\xe1^\x86\xb72\xbc\x93\xe1\xbd\x0c\xdf\xc9\x88\xca\xc8\x93\x11\x93\xd1FF[\x19\xf92\nd\x14\xcb(\x91\x11\x97Q&\xa3w2\x0eeBe\xc2d\xb2\x91\xc9V&;\x99\xdc\xc8$\x90I(\x93H&\\&\xa9L\x84Lner/\x7fR4M\xf2X\xf2T\xf2L\xf2[\x99R\x99\xaed\xea\xc9t-S&\xd3\xadLw2\xf5e\xfa\xa3Lod\x1a\xc84\x94i$\xd3X\xa6\\\xa6B\xa6\x99L\xf72\xbd\x93\xe9\xbdL\xdfI\xe1I\xb1\x96b#\xc5V\x8a\x9d\x14?Jq#E E(E$E,E\"\x05\x97BH\xb1\x97\xe2V\x8aw2\xa32\xdb\xca\xecFf\xa9\xcc\xeee\xf6N\xee\xa9\xdc{r\xcf\xe4~+\xf7\xbe\xdcGr\x9f\xc9\xdb\x8d\xbcM\xe5=\x93\xf7B\xbe\xa3\xf2](\xdf\xdd\x0e\x16\xab\xd3\xaa\xe6\xb47\"\xe8\xffoq\xbb\x1c\xfc\xa6\xbf\xb8\xfdy:\x9a>\x7f?0\xba\xcc\xb2:\x14r_\xcf\xe6\x8b\xf1\xc5\xec\xd1\xd5b\xb8\xf8d\xb4\xb8]L\x96\xc3\xdf\x14\nD\xf6\x897Ub4\xa3\xb6B\x94\x19\x96\xf3\xf1dh\xc5\x87\xe5p\xd6\xbf>i\xfa\xb48]\x9c\x0e\xfa\xd7'\x8b\xf5pqz=\xe8_c\xca\xb5\x13\x90\xbaJ\xb7?\xb9>E\xa5\xaej\xff\xf6\xf6v19\xbadsG\xad\xf6\x17\xd4\xc5\x8b\xb1\x05|\xf8\xe87\xbf^\x9c\xfe\xd3\xd5\x7f~\xdb\x1f\xc8\xc7\x9f<Y\xcc\x17\xcb\xeb\x93\xd9hr\xb1|r(\xdf\xf2\xb4\xaa\x04\xef\xa89\xf6v\x94\xff\x96mb\xce\xbe\xe3\xb1\x88\xbd8\xf8\x9e\x05\xfa~\x0e\xaa\x8f\xdf\xf4'\x83k\xf0 \xf4\x0bmS\xb5*\x0c\xe4\xc7\x7fA?\x06q~\x13\xe0U)\xb9\xcb\xbeG\xdf\xf6\xe9\xae\xfd1\xae\x91\x14\x18\xed\xb6\xe2\xf6:T\x0e\xb1\x96x\xcb\x17z\xddN\xf3\x0fi\xeb\x12P{\xeb\xd3\xa8/i\xb4\x06\x97\x0e0\x00-\x95\xb6_\xdf;\xe8\xf7N5\xbc\x0651\xdc\x8d\x8aF$\xc1\x8e\x1d\xba\xf5\x86C\x92L\x12\xd8\x13\xfc 8\x19\x925\x19\x92d\x92f\x1bLi\xac\xe0\xa0\xe3\x9a\xeeJ\x99\xc6\xe3\xbc\xf2\x00\xd6\xb1\x01\xae\xf6\x96\x06\xb4\x0d?<t\xc3\x01&<-\x17y\x12\x8c]\xd7\xf8\x1dB\x1a4\x98F\xa8\xe9\x02\xc3q\xb4\xa7\xd0\xbb1\xd5\xa0\x9f\xa7\x82$\xa8\xd2h\x9e\xa66{*\xe9\xc4\xb1\x8e&~\n\xcf\x88E\xd8\xd7B\xe8\xc0\xbaC\x9c\x124\xb6\xbe\xdf\xd3\xf4O\xd1\x8a\x06J\x1a]k\xb5\xc2w\x943X\xecp\xdf\xa2\xa0\xf8\xef\x9f\x8drcx\xf4\xd9\x08\xfd\x1e(B\xe4\x0f\xe0\x90\xa0p\xfbj\x82.\x92\x9a\xd1\xb4\xe0\x89\xa9U\xcd\xaa\xb7\xb6u=?!\xcd\x8e\xa7\xec-Q1 xm0\xc1\x9b\x06\xac\x10uv\n\x9eD*`\xbf\xc6 \xfa\x08\x80\xeb\xa9\xfe=\x8d\xd6\x01\x9b9l\xb0\xc9\xa1\x0e4\xc3\xa0\xbav\xd0\xeb\xa3\xc2p\x88\x0e\x89]\xd3\xaa\xfbv\xd60\xd0giM\xe8l~;;\xa8\xbb\xda\xa0>\x80@Tg\xe1O\xbc\x0du\xc8\x11\xb3@\x8c\x0f\xaf\x03y\x12=\x1a\x7f\xe2\x81&-''Y\xb7\"\xdf\xb3\x80\n\x7f\xcfl\xb9\xcd\x81S\xc8\xa3/\xfa\x117\x99$\x87NX\x9a\x87\xd0\xd2\xf7\x19I\x9a\xa1\xb54\x7fF\x1cZc\xf3\x0b\xb1\xdf\x0d\xc1~\xba\x10\xf7vj\xd4E\x08\x81\xdb\xe4\x03\xe3bX!\xf9\x17\xa2_\"W\x87\xf8\xb4\x00$\xc6\x95r\xba\xe8\x9fn\x0f\xdc\xb7\x8fJ\xf9\x07\xa7\xdb\x03<\x1b\xb9\x80\x0d\x0e#%9\x1b\x90K\xd2\x07\xf2\x14\x95\x92-!?9\xeb8\xa6$\x9fs\x87w8\x976\xf2UU0\xeb\xaa\x84\xf4#pK\xd5(X\xce\x17\xb7\xcb\x06\xc1rG\xd3\xaf\xb3 \xc8\x8b\x9a\"-\x12\xbf\xa3\x9a\x8c\xfb?x;\x16\xb2\x83\x15\xb8a\xf8\x0f1_\x7f\xa90d#\x18\xaf\x023\x9b\xbfY\xa4\xcb'\xd7\xa6JG\x15E\xe6\xdb]\x1e5\xd3S\x94\x06tM\x7f2\x1dR\xec\xca\xdcb\xc94!\xfa]\xcc\xd2?\xc4\xe2\xf7to)\xf6\x1f\xf9\xefb\xa1\xad\xd3Z\xb2\x7f!\xbee4\x15\x7f\x8c\x98\xe9q\xa5\x8c\x9f~S\x9b\xcc\x9c\x92\xf5]\xe7\xf1\xce\x13\x89r'\xba,\xd7\xea\x82\xd3](\xce\xeb`~\xb6,\x1f\xac\xb6J\xf1\xbd\x1f\xe9\x9e\xa6\x1e\xf7\x131Cg=0\xce\xbd\xfd\xaa\x9c\xd8\xa5G\x87\x86\xbe\xa3\x89\xa0\x9d\xf1\x13\x86\x8e\xe7\xd5\xfa\x07\xfb\x00\xc7:@\x9fw89c\x13A\xdb\x1avO\\\xded\xbbA^\xc7\x82\x87\x81\x7f\x827&NL\x0f\x9aWQ\xcdW\xac\xf99\x91\xa7\x0d\x05\xbb\xa0\x92\x01\xf3\x84\xd9\xf1m#Q\xcd\xc09\x88$\n#P\xf8\x08\n\xf9Q\xf6\xcf]\x06\xef\x01\xc7\xbc\xaf\x8abS\xd7C\xae\xc2\xbe\x18Jv\x84-7\xf5=\x06\xc2\xa2\xc1\xa6\xb3T\xe3<\xc1\x8e\xc3q\xf6W\x98\xc5\x8fs\xe6\x87\x1ej;\x8e\xc2W\xb8\x7f\xe9Zy\xbe\x1f\xecX\x7fq\x94\xbb6R\xf4g\xfb\xc0\x06\x1f\x80A\x0d\x8d4\xce\xa7\xde\x8a\xfd-fT\xef\xd5\xba\xce\xe9\xeb\xf2\xd6\xaek3E\x0d\x00\x96\xed\xd8\xde\x83\xe6\xd88N\xd3\x0d\x82\xe74;\xe1\x0f\x87\xe2\xb8\x89\xef\xfd\xa6k\x93\x8dh\xf0'\xfe\x80E\x9d\xf1\x00\xf7S\xb9\xc2\x13\xc6\xc3(\x8d\xfb\xa8\x00\xbe>uY\xc3VX\x91\xad\xa2A\x1e5\xf9\xbf\xe3,a\xd1\x9a\xad?\x96\xedI\xc6;S\x99?\xf1.4\xa6tO'\xe3\x0dJ\xa2\"\xb6:\xf7\xb8V\x80\xacn\x9ak\x1f\xec\x90\x94}\xc3d0\xa5=\xed+\x10\xcc\xbdGM\x05!\xf4}G\xaf \x0f\\*\xd0\xb2qv\x9e\xfb\xf4~D\xc3\xe4\x02\xe21=\xeav\xcd\xea\xd85R\xbd6\x05\xed?tN\x8c\xbe\xae\xa8P(\xe7\xc3\x05\xd1\x07\xe7XU\xb5\x83\xa3\xf8\x9f\xcc\x12\xc2\x12\xf6#^`}\xcd\xa9\x1f\xf8\xd1\xf6\x87\x80B\xcc\xf6.\xe3S\xae\xb6\x8bl\xe4V\xd1\x97\x17\xb7\xdb\xe1zS\xf3\xeeAy8,Nb\xd1\x19$\xc7X\x1e\x01J\xef\xb4M\xe1Q\xd4\xe0\x1a\x87\xab\xe3i'/F\x8a\xfa\xda\x94\xf7#\xedh\x11c$\xf16?\xa5\x1a\xb0x\x92\xfb\xe5\x84\xbb\xc0\xf9`\xbc7\xbeeFd\xbe\xc4(>\xfd\xa2\xdbx\x1d\x8a\xeaC\xa3a<?w\x04\xc3\x80(\x19/*\x1f\xe0\xa2Bm@\xe6=/^\xb3\xde\x08\xcb|:p\x18[\xcf{\x1b\x16y,5\x99>\x1b\x8c\xc8<\x0fa\xde\x1b\x91\x1e\x04\xa4\x86\xf02\xea-\xf0S\xd1s\x85(\x9d\x973Bm\x9f\x7f@m;\xaek9?\xfb\x80Z\xe0\x93\xaeg\xdaZ\x8f\xbb\xbc \xcbm\xea8\xaf\xd4\xd1\x00;\xa3k?\xda\x9aBO\x1f\xd0pP\xa9\xe3\x99{\xf6v\"\x0c\xa0.\x93\xef\xf9\x03\xda\x12t\x15\xd8\x1e~\xda\xa9\x87k\xb6)\x0em\x15m\xdc\x85\x8aPA\xb1\xcf+\x81\x0d\x97\xee\x98x\xd5\x05\x8a\x14<\x0b\xacW\xb6\x8a\xcb){\xdd\x81\xa1\x1b\x1bF.\x89o\xaf)\xb0\xe1pP\xa8BG\x92\x9f\xb3%\xc4\xe7\x82\x87\xe9\xd2%\x8e\xd1@\xcc\x08\xe6<\x87\xf3\x85\xf9r\xa0\xa9\xd2\xa0BzrJa\x9fh\xc1\xad\x11\x04\x82\xf0\xdf\xb1\xaa\x835\x87\xe6\xcd\xf6E{\xfb-\x00\xbee\xe2\xfb,`)\x1e\xa3\xa3\xa3\x04\xec$\xbaH\x10\xe8\x10\xe1dzA(\xb9\xd4GHl\x12\xf8\x91j\x98\"Q\xbd\xf1\x93\xaf\xc2D\xdc\x7f\xebG,\xedS\x08m@\xc9\xcb+\x12\xa1\x17\xfe\x93>\x9b\x88\x1fv\xfeF\xcc\xe9\x12\xae\xdb\xac\x82\x9bo\xa25\x8b\x84\xfb\xfa\x13\x00\xccq\xe0\xe1F\x08\xd4\x12\xcf\xf9Ru\x91\xc2\xf1\xe6\xc9tpA\xf8p\xe8\x90\x130\xea\x85\xf0\xb7;\xa1`\xcfF\x84M\xfc\x14@4\xb0[\xbe\x90\x19\xb9\xaa\x8f\x9dQ_\x07\xa6\xa7y1\xda\xa86W\x8da%#2\x1c\xdaAB\xaa\xa1\xb9RB9\x8b@\xe8\xad\xd7\xda\x12\x0e&\x1f\xe7\xda\xe7\n\x9f\xcaq\xa5\xcc\x0420S]D\x0bQ\x8b%\x99\x82q*W\x1f\xb3\xb3\xb3\xcf\x9e/\xe5|\x91\x9d?;\x7f\xb6\xc8\xce\xcf\xce?\xd3\x89\xd5R\x01\x94\xca\xce\xce\xe8\xd9i!,X\x111\xe1\x8e\x91\x03+G\x84W\xc7P\x81\xe8#\xa2\xb9<)\x03\x02\x94\x92\xe1>>\xb3\xc7\x02\xd5\x9b\xf3\xc0\xe55\xab7\xc2I0\x02'\x10\xb98\x9b\x8eHo\x11\xa9\x14\xabU\\\x88\xde \x8f^W.\x9f\x15\x18p\x93Z\x1b\xd6V}\x0e5\x94\xd3\xb3\x82p\xf2e\xbcf_\x88~4 \xd7:,,F\xf9\xf3t<\x14\x08\xfe\xa6P\xbf\xa7j\xe8i\xda\x00\xee\x85)\x19\x13o@\xfe\x89<3\xc7\xb5\x90\x08\xc5y\x95z\xe8\xd5\x8c>\x15\x99\xf1\x07k\xe6\xc1\xdc\xab\xd54\xa4\xef\x8f\x14q\xf3#f\xfe\xbe\xa2w\x05\x024*\x05\xb4Al<J0\xa9Sd^2T\x88\x9b0\xa3b\x0e\xe2\xa0\xd1(\xa7s/w\xbe\x81\x18\xc8s\x87M&\x00\x0e\x9e|\xa3\n&\xda\xa3\x7f\xbd|\x1c \x92\xa3NX\xbd\xa2\xfc&\xd5\x17\xdd\xb0@-\x05)Z1\xc5R5=\x97;\xf4\xb4\xcc*\xaf\xaf\xe8]!\xc5\x92\xa9i\x0e\xbd!\x16W\xa4\xc7\xe3X\x18?\x18\xeb\xb5\xad~lr\xeb\xe0\x87\xb6:\xce\xd2,\x10h\xa7a\x90j\xa3\xab\xcf\xc0\xc4\xe3\xca$\xabb\x80\x82f\x08mhL\x92\x92K\x12\\\x90\xd4\xed\xc0[\xadB\x1f\x9c\xcd\x140:Ud\xbf\xf1(^\x15yz\x8e^\x87\x9a\xf2\xa8\x9f7\x1c\xb6\\\xa9\xd4\x11g\x9c\x19\xdcg\x81\xd0\xf5\xfa\xe1a=\xf3\xf4\x0c\x8e\x1a\x80\xd3\xa4\xf0\x18\x80\xc7\x1e%\x96\x97\xbe\x0d\x87%\x1cA\xd6\x9f\x0dJhb<a\x970\x05\x13\xbdA>\x1fz\x1epZ\x86U?@e\x18kM\x9a\xeb\xae\xae\x96\xab\xdf\x8a\x00\x9c\x0dj\xa8X\xac;\xdf7\xfd\xaa\x0e\x08/\xbaUD\x1e\xd6\x1a<\xa0\xb8Y\xc7\xfa\xe7li\xd5`(\x11\xb0\xa5\xa2\xbc\x85.\x14=\x9f\xbd\x1f\x95\xda,K\x1a\xadM\xd7]\xda\xeb\xfe\xa2(\x87g\x8f\xfdC\x90]V\x00\x1b\xa0\xe8w\xe1\xea%k\x83\xfa\x87\x84zGC\x9cr/\x978\x0d\xd0z\x15\xd9\x0c\x85%\xc8\x1e\x0c\xde\x97;\xca\xd3C\xaezKn1\x9d\x00F\xf6\xe4\xa9\x06\x19\x02\xfdA\xf0\xfd\x96z5w\xc2\x0e\x86\x0c\xd2\x1f\xb9\x04\x97\xf8\xa6n\x07\xdfP\x10\xbf$\x91#b/Z\xaa\x9d4\x0c\xf2x\xccr\xbb\x04\xa6\x96\xedq\xdd\xd92Q\xc7\xdeV \xa9j\x19\xa98]],b\xb0\x8c\x1a=\x14\xa9,\x81\x82\xb6\xe2\x92\xd4/\xaf\xffy\xa0V\x01F5\xf0\xf1\x10\xce,\x87`9\x02\xb7\xad\x8acpr]Z\x19Pjj\x1c\xc1\xdb\xc4Q>\x82(\xc7\xa8~\x0c\x1c\x93\x91iQ\x05|\xb7\xf6\x05\x19\x83\xe1\xac\xf6 \x1a(\xd4\xbf \x81\xa2\xbc\xf1p8\x80\x88ne\xc8\x06j*Ax\x03&?\x18\x01\x07;\xb3)gZ\x1c\xaa\xf54\xc5\xfe\xe0\xc8\xa8\x15&e\xf7\xcee\xf3xY\\\n\x8d}\xd4c\x9d\xd5}UUD+\xb4\x8d;J\xb42\xa9\xee\x90\x83\xee%b\xf6\x82\x0e,2c*\x96j\x12\n\"\xcd%y\x96\x9b\xe3L\x1ds\x18\x03^\\\x81\x8f\x9a)\xee\xdb\x9aVW\xbe\x03\xe2j-\xb9x~\x8b\xdd\x1fl\x02rHy\x15\xd2\x97W\xe4Y\xfb\xc6J\x81:\x1c\x1er\x06k\xf5\x9cZ\x86\xe3\xa3<\xf6{C\x8c*\x1d\x8b\nUf\xb5\xaf6\xe6TN\x05\xd4\x96\"\x1e\x91g\xe0\xe8\xc5va\x04[\xd2ZyP\xc2\xb8\xaf'*\x10\xd3\x19\x99\x8b\x91\x86\xd7\xa1<\xd1\xe1\xab\x18\xca\x8c\xa5\xcf\xef\x95\xf0\x96\x8bI\xef\x7f\x194\xecN\xdf\\\xc7F\xe8|C/^\xb1\x84\x11\xb3\xc8Z\xcf\xbe\x81\xec\xccd\xaf\xa3\xbaG\x86\xe4)yI6\x8dh\xadrM\xcf_\xa0\xd7\x96\x18u\x1def\xe0\xa1\x82\xe3s\xcc\x13\xb7\xd6\x04\x92\xf7\x08%\xe7\xbeg5'\xc0\xda\xfa\x9e\xda\x03\x0d\xc8\x98\xa4\x03rI\x9e\xb6V\xa45\x159\xc5\x01C\xf9\x89\xe0~\xd8/\xeej\xff\xac7\xb5\xad\x95\xf1\x82\x8d]\x03a\x16\x17\xe4\xa4?\x1cf\xa8\xd1A\xc1 :\x90\x16g$+\xcdH\xb6\x04\x9b\xbe\xd2$\xa84P\x7f\xd8<5]P\x03\xb5\xa8\x8d:0\xb1\xb8\xa2[\xca\\\x84\x00\x04\xf8\xe6\xd1\x06\xe5R9\x0b\x8aj0\xb5\x10\xb0\xbe\x81\n\x01\x9a\x9e\xb9\xe9\x0b\x90\x9en\xd4\xc5\x87vs<\xce\xc9MF\x86\x8ae_\x03\xeb\x81\x93\xbfn\xc4\x07\x94\xf1\x0e\xea\x93PN\xc3tFhG\xc2\x84\x8a\x85\x0c\x16\xa7\x93\x1c\xfd{\xa29\xf5\xb0\xbb\xc7Q\x9b\xf0\x10\xb5\xd9\x93\x97$l]\x89/\xce\xb5\xb1[\x05\xdb\xf7\xc3\xe1\xa0\xb5\xa0\x1e\\\x85\xeey\xac\xdf\x90\xde\xfd\x81\xa5\xc2\x8f\xb6\x1f\xb2\xfc\xf5f\xa3\x0e\x13\xac\xe4\xbd\x92\xc84\x11\xc8Y\x17\xab\xeaA \xeaaa,\x01\xc9\xf3\x91\xbd\"{\x14\xce X\xed\x9e\\\x92\x10\xc2\x11\x15\xd6\xe2~@fd\x0f\xd4,D\x81m^\x98\x0d\xa8/\x17[T\x1d\xe3b\x0b#\xcd\x0bP-TS|\x17\x8e6\x8cO)\x94`b\xb3\xa39\xe9\xf7K\xe8\x10\x97\xd0!^\x02`\xfd\x12\n\xc4\xcb\xc1\x00\x03\xa09IZ\xfb\\7\x8b=~\xabXc\x03+\x9fLGpW\xe7\x0c\xaf\xa6l\xec&-!\x97d}A\x92C\xb1\x0b6\xf3d\xa9/eE\xb0\xfa\xdbt6\x04\xaeA4SC\xf3sSE\xf3k\xf6\xd0\xb5k\xedtf\\\xfd\xdb\xc9Q{\x14\x93\x98\xcf\xd1\xa88c\xa0A{\xfa\xf4\xd3:\x8dF\xc1\xb3\x03\xde;\xdb-\xa2\xc8\xf1x}\x18\xe8\x12f\xc7K\xc7\x8a\x0dH\xf9\xc0aT>~\xb8\xaa\x9c{v\xe4)y\x99\xa6\xa0\xc1\x9a\x19@\x84g1\".wue^P \xed\xfb~0\xca\x97\xa8\xd5K#\x11\x8f\xbb3\xbf\x02\xa0M\xf1om\x9c\xdb&\xa6T\x190\xc5\x1b\xe6\xd3\xa5=\x1d\xd2K\x0b\x17\x13\xcd\x97\x16F\xac\xd6s\x93\x90!\x01Z\x94\xcd\x93\"}\xb2\xe9t\x9e,\xdd\x8a\x83\x12\xf9L\xff.xd\x99\x17:\x0cJ\x0eq\xbf~F\x86%9Gm\xd8\xd3V\xce\xf4\xec\xbcE\xee\xce\x80N>zD\x9e=G\xc9\x1b\xa4\xf0\xe7\x07\xa4pX jEN/HF.I\xea<|\xac\x88\xd8\xb5Vm{O\x11B\xda\xd8\x1e\x01\xbfrVT\xf5\xab(\xef\x9a\xfe\x93\xbe\x8f\x1b\x80G\x8fH\xff\xe4\x84k\xbb\x10-\x13j\xa1\xac\xe3b\xd8\xf1\xe6\x85\xfaaR\xdb\xa0z:}\x14N\xda\xe4\xcai\x90\x0b \xf5\xf9\x90s\xa9\xf4y\x9b\x90\x86\\9.\xa3\xe6\x80\\\x93\xb1\x12\xa8\x0dzE\xae\x89\xe6\x15\xf4\x02)\xe0\xd9S\xfd\xack\xe0\xe4\xb2\x84\x07\xf5Zlc\xbc0Z\xf5\xce\xc7\xad\x9d?N\x0e\x8d\x0f\xadD\xf0\x83\xa8F&_&c\xd7\x1e\xb3e\\.\xc9\xb3\xcf\x14ZF\xe4%y\xfeic5\xa8em\\b\xbc\x1d\x08b\x15=m\xa0\xa8\x1d\xdegj\x0e\"ry\xa5\x80i\x13\x9e\x9e\xa1\xee3R\xb0?{a\xa2\xa6\xb6\x88\x16\x16\xb4\xda\xd7\xa6\xe3\xf7B\xa9\x07\xa2\x87yj\xa7\xd7\xb534p\x87\xd9\xb2\x9b\x19)\x01c;\"\xf7#\xb2\x1a\x91\xb7#r;\"_\x8d\xc8\xdd\x88\xfc0\"_\x8e\xc8\xcd\x88|\xe1\x10\xe1\x00\x15\x94\x08\xa9q\xd4(\x14\xb6\x8e\xbc\x0d\x1a;=\x89\xaa\x12^\xaa\xa4\x95lB\x03\xd3\x96Q\xfe\xd0\x8dO\xe8B\xaa\xb5\xbe\xcf\xed\xb7\xef\x8aV\xb8gG\x12l\xace\xb6\xe4\x1a\xef\x017\xafV\xd8T\xa2\xffj\xad\xd4\xd07\xca\xd5<\x911I\xf0~fg\xfa\x1e\xf35\xe3l\xfd6\xf0S\xd1$\x97A\x9e\x19\xd972\x82\xdb\x87KlJz\xed\x08\xea*\x0b\x02&Z!\xfdpx\xac\xc9\xd2[\xbd\x07\xbak\xdb\xf7\x81\x81\xce\xe0\x82\x9c\xf4O\xfa`\xb6\x836\x98\xb0\x81\xea\xdfW\xd5AkD[K[\xe9Rkf\xee\xc9\x98\xac\x958\xf3\x0cX\xb6*\xadPhG.\xc9\xb4\x94\xa2\xa4\xa8uQ~\xa7\n?v\x9dg\x1b\xc6\xce\x17,<0\x80_}\xc8\x00\x06\xd5\xdd<\xea\xc5\xc0H\xc1\xec\xf5\x0b\x08\xbdq\xec6\x8a;\xf1\xfb\xeaN\xbc,\xdd\x82e\x965\x808\xab\xefU\xb4}`\xd3\xc6\x00\xf7\xa6y%j\xaf\xfe\x16f\x11\x88\x99\x1a\xf5\xb7Vn'c\"\xc8K\x9c\x14\xa7=X\x15\xba\xa0\xda\x9b\xb4\x08\xaeW\x83v\xf3\x80\xa9|\xf0&\x050\xbd\xb0'\xf9\n\xb7(tD\xee+\xd2:\xd1\xa6xj\\\x8a\xa6g\xf8~\xbc]\xde\x8d^\\?\xa0\x82\xe1KrE\xee\xec.\xe8\x07rI\xbe\xbc ?4)\x18\x14\xe9\xbd\x9b\xffP\xb4\xe3kW.\xdc\x1cP,4+\x15\xea\n\x05\xd5\xf8M#\xc7W_\xb7m\xf2C\xce\x08)HAg\x83&Eo\xeev#\xe7{\xe52\xee\xe6C\xb7\xa4\xb0\xd6\xf7\xf6\xeb\xad5\x1cXuAB\xc5\xaf\xca\x1c\x04q\x91T\xa8\xf5\x831\xf4\xd6bdn\xc7\xa8\xa4\x8cG\x8f\xda\xcd\x0cHY\xf2G\x1c\x07>?$\xe7\xf5q\x03\x9c\x8c\xf4\xde\xe8\xdc\x08\xcc%\xe6L\xc6\xe4\xbc\x14\xb7\xd3f\x98GKcAevi\xb9\x851\xd2Y\xad\x08\xca\xf3\x0bm\xc6\xd9\xcf\x13U\xcb\xcb\n!+\x14(\xa4G\xe8\xd8\xbc<Xj\x18V\x7fO\xda\xf0\xe3\xf6\x1c\xde\xa1=\x87\x9a\xb9g\xe4%\xf1Z%\xb2\xcf\xa7n\xec\x0f\xda\xb5\xdf\x9f?k(\x06\x16U\xbf\x88\xe2\xdc\x9e\x8c!J\x82.\xc1\xbb Y\xb3\xb5\\\x93>1k\x97\x82\xa1\x7fO\x9b\x8bv$\x08\x99\xb6g\x1b\x92sT+\xf43\xb3\x0b\xf4\x14\x17x\xfe\x99{\x08\x87\xc3lPVDd\xc3\xa1\xc2m\x16\xed'\xe6VCjn\xae\x94\xd2 \\c-\xeb\x84\xb3\x8d3?~\xd0\x85R+\x9a\xe3\xf1f\x80\x0b;S\xcb\xb8\xa1\xcey\x0f\xae\xf0\xa6Km\x1a\xd9\x8d\x04\xda\x9b\x19o9\xdb0\xce\"\xafY\xbdIW\x8a\xda9\xe2\xe1\x1f\x14\xa9\xe2*?\xae\x1d\xf9\xd1\x03RTI\x10\xcd\x06d\x8c\x82S\xf1\x08%+\x0b/\xc3+\xf2\xac.M\x15.\xa2\x14\x1b(1~C\xd9\xec\xd7\xe1U\xedx\xc7\xb6;.}k\xd1\xe0\xe6\x82Z \"Z\x86z\xac\xa1.\xf6\xdd\xaf\xf64\xfe\x90\xd9}03SR\xca\x07\xe9\xbcL\xea\x07Q\xe7\xe3\xe8\xf2A\xad,\x9c\xe8\xb7ka\x9f>o\xd3\xc2\xe2\xb5\xb5\x03\xd5\xe4ZW\xb3\x16\x1cd\xe6\x82<}\x9e\xf3`P\xce\x82\xca\x94\\^\x91\x17\x17\x03\xe2\x83\xf1Wci\x17\xd5;\xe9\xfb\xe4%y\x81\x10\xea\xfa\xb4.&.S\xb5\xd4\xae1kg\xd8OG\xe4\xa9\":\xf9\xcd\x90\xfa\xf7\xe7\xea\xbb\xda\xfae$7\xcc\xac\x01H\xf3\xcb&`=?(\x08DG\xeas\xf1:W\x13\x8d\xda}\x8bX\xec\xb8\xc9\xfd\x11\x94\xbev\x0c;\x02\xebG\xaa\x9dv+\xa8\x9c\xc6CH\x1fm\xc2r\x084\x18\xb3\x07u\xd1\xdb\xf9\xc1\x1a\x1ci\xcd\x97\xb5\x0ev\xec\x97\x99\x84&R\xd26\x0b\xbf\xacZ\xdd\xa4>\xc4\x12pd\xee\xe1\x88F\x8bV{\xa7K\xcb\x10\xcd{GG\x86\x8aa\x8e=\xe0\xe8\xf7K\xec\x91\x96\x88\x1a\xd5:|\xbfH\xc8\xe8R\xcb$\xfdg\xcf\xf3\x8b\xb8\xb5U\x17#mz\x81:_\x8eE\xe2\xf2B\xee\xc7x\x17\xc6BQ`\xb31l\xd7\xfcb\xb9F\xb5^\xe1>\xdc/\xb0\x9cM\x17\xb4\xbe\xe9\xfca\xa8\x7f\x00\xf7:\x82|\xdc\xa2\x06V\x9d\x1f\xbd|\xdc\xe5\xad\xa8\xea\xbf\xf2\x12\xef03\x87W\xfc\xe0# \x16\x85;\xdfg\xe7\xd5\xbb\xdd\n\x81O\xdf\\\xf6\xe7:x\x9fvu=_\xa4\x8b\xd3\x97U\xd7n>f^\x9c:\xb2\xbf\\\x9ev#4#B]\xb4&?\xa0\xa8H\xc5\xb5\xa1\xab\xd8o\xd63$e1\xba.\xbbxJvMF\xe4$\xdf\xdc\xedD\x18\xb4\xca;\x89\xa2M\x8apx\xb0[zyu\xc0<\xf4\xc5\x99{\xeb\xe4\xb5\xef<\x9f\xe2\xa6\xae\x9f\xb9H\x97\xa7w\xae\x8a|a\xbe\xaci_Y8{._rz\xdfv\x1c\xf3\xecS\x00\x1a\xa4\x96\x93\x96\x1b)\xe6g.\xa5<='\xb2z\xf5\xc0\xfc4\x18`t\xf9\xf9\xa7\xaaf\xa1d\xb7\xe9\xf9y-\xfb\xfb.\xdb\xdeg\x9f6\xf7\x9c\xd8c\xa5\xeaV\x11-a\xd1\x95\x9e?(\xb6R\x87\"W\xd2\xb5\xd7\x13\x0f\x0eC{\x82h\xc0\xe7\xe9|Zq\xd6\xb7<X\xb8y\x12Ko\xd6\xbcG\x9b\xa7\x05\x18\xb8P\xdf\xe2RS\x99kw\x83\xc1\xc5\x80\x04U\xbbz\xab\x1f\xd4\xec*\xe8N\x11s\x17\x01\x07h\\\x07\xca\xed\xa2\xdan\xcb\xf8`D\xce\x80J\x96\x87\xe5\xa3\xa9\xca\x0c\xcd\xfc\xb9pmz\xde\xa3\\\xf8\x1e83\xe8\xd1\xd4\x07\xe7\x17\xbdU&D\x1c\xd5\xddF\xac\xe2\xf5\xbd\xfa\xeb\xd1hOS|\x02Z\x03\x8fq\xa0\xffly\x9c%\xeay\xbd\x86\x7f\xfd=\xfc\x81\xcfk\xa1\xfee\xe1\x8a\xc1\xb7\x8d\xcf\x82u\xca\x04>o\x0b\xd5m\xfcm\xc6\xa1U\xb5\xb3e\x1c\x9fx\xa8\xfe\xee\xa6\xf0\xef9\xfc\xfb\x14\xfe}\x06\xff>\x87\x7f_\xc0\xbf\x8c\xae\xb1\xd4\xce\xc2\x03\x1e2z\xfe\x86\xd3P\xbb\xc1P\xff\x86\x14>\xc6\xe0\xd9\x0f\x9e\x00\xd28\x13I\x06\xef\xf09A`\x12\x1eo9K\xa1\xf3\xe8b\x12\x9e\x98g\xe0N\xc5=\x8e\xa6\xf1\x11\xd1\x13f\xd8\x04tY\xb0;A9\xa3\xf0\xbc\xc1\x0b\xaf=\x01~'\x04\xc7gF!g\x06p\xec\xfd5\x8b{\xcb\xc9&\xe6_Qo\xd7o\xb9\x808g\xcb\xf2\x0dP\xad\x95\xfa\x90\x1b76\xb9\x8b\xf9\x8aCr\xcc\x95)\xb5u\xc0\xdb\xb6\xecv\xf9\x16N\x8e\xc1BdL\"\x97\xb7\x88v\xf6\xdc\xf5\xcau\xd1\x8a\xa0\xce\xc8\x04\xb2\xc9\xc2];\x17\xbb\x0bJ[]\xe4\xd8Am\xd7\xd0RA\xbf\xa4\xfa\x08J\x12x\xb0,\x9f\xcc\x06\xcd\x14\xd7\x87\x0b\x1d\xa80\xd6\xbb\n\x87J#\xb7\xfb\x81\x1b\xbfZ;\xea\xb7\xd6J\xady\x030\xef\x1199}3\x1f\xcf$Y\x0e?9EW\x9b\xb4]$\x80\x1b\x08\x14C\xa9\xf6{\xb2\xa7\xf6\x1f\x10\x03\xb5M\xad\x92\xe8\xeb\xe7)Z$\xa6\xe4\x92\xe472[no\x9f\xc0\xb9\x947O\x97\xe6\xdaH\x1b\x9fE\xff\x05\xa0\xb8M\xe1\xd1+\xb9W2\xd7\xb2[\x05\x83\x83\xde\x98\x89\x01\xed\xf4\xcd\xecz<\x9c]\x9bq[\xb7\xb3\xdf\xe7\x9f\x01H\xeb\xd2\x81Y \xbek\x92 {se=S\xdf{\x18b\x0b\xce\xbe\xb8\xbf\xdd\x89\xde\x80\xcc\x9c5\x9f\x15\xaa\xeb\x05l\x839MB\xaf\xed\x06\xb7\xea\xdc\x18w\x0c\x05tq\xdc\xdb\x81\xb9o\xc1\x14D\x14\xeb\x9d\xed\xcdB\xca\x85\xfc\x04\xfc\xb3\xf5\x06\x05\x04\x1a\x91\xc4\x8c\xc3Ia\xd2Z\xeb\x8e\xdb-_:\x8a\x0b@\xe8\x0f\x98)\xec>\xc4L\xa1+\x1c\x8ao\x1c\x80C\xc1\x00\x8b\xf6\x97\x84\x83\xff\x92@4/\xfe\xae\xe0\xed\x9a\xc0\xa3\x81\xbf\x8df$\x99\xa7.\xc0>\x02\xec\x1d!<\xacw(\xd0\xb2\x8f\x00\xe9/\xa3W\x10\xbb\x87\x1e@|\xc0R\xe4\x0fm\xf3\x88n\xa9U\xf6\x8b\xb7\xa2d\xc6\x03\xcbh\x0f4\x05\x8f\x0b\x1fDW\x8c\xa0r\x8e\xdb+}\xfb\xa7Efy\xf4\xc88)\xcfiz\xe0\xa6\xe9p\x83\xbd\xd1\xaa\xa6;Q?4^\xa4\x0b\xdd!\x87F\x83|0q!\x058\x1a\x8909DdHW@7F\xa0\xc9\xc3\xf3+Q\x0f\xc4\x15\x95\\e\xe2p\xabrD\x9a\xf2\xc0{Y\x8a\xa8$\x91Y1\xc5j7\x8f\x19\x97F\xb2F\x8a\xa4\xad!\x8a\xca!\x8aE\xda\xa8\x16\xe9\xb8\xf8Hi\x12\x9b\xd689\xb4\xce\x89\x83\x8a\x11\xd8\xa2to\xbe\x99\x90\x91n\xcd\x97W{\xe9\xcdn\xad\x8e E\xbf8\xc1\x03!\xea\xc1\xad\xec\xd0\xfcj\x8f\x7f\x82QI\xed\xf3a\xea\x13\x9b\xdce\x03\\\xb0\xe2\xea|r\xedw\xd8\x06\xc7j\xd3\xe7\x1b\x13z{M\xdf}\x18d\xees\xe8\xbd\x1c7\xc5b\x14\xc7#\xd7\xe9\x8f\xce\x12\x95\xda\x89*\xe3F~\x91}\xb6\xb5\xd6o\x15\xd0\xfb,\xf7\x08\x06\x96\x85\x8f\x1e\xd9\x89x\xe9t\x9d\xb7)\xee\xc3\x8d\xaep\x03\x05\x87\xc3\xcd\xc1m\xbc\x9d\xb3\xcdQ{w\xdf0\xc6\x8d1\x81lm\x03\xd0\xf9h\x9b,m\xa7\\4\xfb\xeb\xbc\xd2\xd6\xc1\x01\xb9\"\xf8\x90\xbdJ\x866\xe9J<\xa8\xf8\xafc\xb3\xb6K2\xf0\xe9^\xdb\x0dn\xb5\xd1\xed\xa1\x1e\x91B\xaf\x1a-\xedIA$\xceF$\xfb\x10\xb6{\x04@\xdd\xb8]A\x03\xac`3\xd8Z\xf4\x8d2m>J$\x1d\x8f\x13I\xb7!\xf8\x98\xfcs\xddlKK\x0e\x11t\x82\xfc\xd3\x89'$_\x9d\x07A!\x05pZe2\x92\x8f\x8f\"k\xf3\x8d\x1b\xf9m\xd6C\xa8B\xf4x\xe1\xb5\x1b}\x9d`\x0d/\x86\x86\x8d\xf4\x89^a\xa6\xf7\xc5#>\xba\x1c\x81\xd2\xa0j)W4\xd9gE\x1f\x89E\xfb\x03\xd8\x12\x14\x13\x14M/\xdd\xc5\x18\x91\xf6\xab\x08\xb9\xb7b\xa7\x91\x1bu\xdfF\xd8\x82\x81\xd1\xbd\xb9\x8d\xb0\x05\xb0\xf4\xf15=x\x1b\xa1\x08\xee\xbe\x08`X\x83oW\x1d\x8adT\x1e\x8du7d%%\x0ciCX\xd2\x05i\x89\xd9F\xa0\x18\xb2\xb1\xfdW\x02\xfb\xcb\xfc\x02^\xd3\xb1\xe2\x01\xb6s\xb0\xac\x83\xf9\xb4\\\xf8\x03\x1a]_x\xb5\x14\xe4\xa5/\xdb\xee\x0f\xfa\xda-\xf0\xa6\xc8j\xb3f\xb7T\xa5\x8e\xd6<\xe3\xb4\x95\x82\x8d'\xd0\xc9\xc1a\x90J\x17@\x1e=\"t8\xcc/\x88t\x01\xadn\xec\xd3\x06\x9a\xef\xbe\xfdP\xca\xfc!\x92\xf8:x\xb8\x80\x1ch\x94,H\xc6\x9b\x11\xb9\xff\xc7\xfd\x04\xe7\xfd\x04\xef\xa3\x1d\xba6\x8a\xcb-\xdb\x87\xe2\xfd\x04\xb7\x91\x9a\x0f\x1e\xb6.\x8d,\xaf\x8f\xc5\x07\x95s\xf1\xd4\x11=\xceZ\xf37\xde\x14\xcc}\xce\x0fP\x13\x12\xd5\xaaE\x9dH#\x19*\xe8\x90R\x971\\\xdb\x0d(\xeb\\O\xc9\x7f>^\xba\x82%o\xd51>\xb9$\xf4\x82\xf8m^]\x88\xa1Is\x1f._\xa5]._\x99_\xdc\xc1\xbb\x0b9\xe8\xe1\x858i\xa9\xf9\xe9\xcdM\xd7\xfb\\\x9aN\xe0j*\xda\x0c\xa4\xcd\xd2b\xbe\xd0\xd3\x11\xe1f\xf1\x15\x97\xca\x01rSYzu\xa2\x03K\xc9\x1d\xf5\xa8\x8b\x19DY\x8c\xaaQ\xac\x8eP\x1eV\x96\xf3CMw\xb4\xc1\xfb\x85\xec\xef\xf2an\"\xeem\xe3\xdc6\x86\x1f\x8d\x88\x1d\x8e\xb0r\xfe\xf4\xb9#\xc0J\xd4?\xff\xb4\x92L\x1b\xe2\xae\x08vgbc<\x9d\xba#wD\xec\x16\xa7\x1as\x9d\xbbs\xb1\xd4\xa3\x89\xcd\xf4\xd4\x9diE\xbd\x1b\xe1{7&\x8a\xcb\xd3\x86`!k\x16\x98\x1c\xcf\xdd9\xfc\xc8\xd6\xf1\xc2\x9d#\xa4\xdc\xc4\x1ay\xda\x10Q\x86\x85\xc9\x8e\xa6\xbe\xad\xe93w\xb64[\x99\x1c\x9f7\xe5Ht\x8egg\xee\x1c\x81\x1f\xd9^?k\x18h{\x95\xc4\xac-\xcc\xdd0\xe0\xc5\x8b'&k\xc3\xb0S\x1d\x1e\xc8dk \xd1\"\xa8 \xe4\xf2\xaca\\Y$|qo2}\xd6%0J\xf6Q\x02\xa3\xe4^\x90\x9c\x81Q\xa8 \x8cB10JE\x11\x0c\xd9\xf7\x18\x81\x99}\xebG7\x8a@\x17\x16i\x1d\xea\xb4n\xe9\xb3\xb7\x81t\x91\xd8\xb7E\xcc\xd5\xbc\xc3\x1c\xc6\xabb\xbe9z\xf9J\x8d\xa1\xafXI\xf1\xf8f\xd63\xf1hU\x89\xb9\x0d\xa6\xdb\x1b\x15\xe3\xed\xf6\xc0H\x0bM\x9c\xd6T\xd0\xde\xd2\xd6 \xcc\x11\xce\xac7\x98\x9f-]\xe6:Y\xc5\xe7\xf5kE*[=\x86C\x9fG\xc6KLa\xd4KQ]j\x88\x02\x8ez\x8d\x8e\xac\xf6\x15u\xafI\x9c:4y([y\xd4\xdb\xb1\x7ff\xa2\xef\xc3\xe5\x97\xb3\x01\xe6W\xe8R\xd1o\xb9MP1l\x03b\x8f \x97$\xbe \xa2Mx\xe2s\x01\"\xcbI\xc1g\x08\x04\xe2\xd2\xa0\xfc\xa0@\x19!\x10\xce3\x86$N\xf1\xdeb={)w>\x17\xefG\xa5\xe90\x1b\xfd\x8e\xfe\xdb\x0fNIy\n\xf2!G\xf7\xf40\x98\x97\xc4o\xd6\nF8x\x91q1s\x02\xc3\xc9\xe7\x11\x8e\xd3t0\xc0}\x84{W\xd6\x18\xe8\x187z\xaa\xf5\x97`\xef\xd4z\xbb\x9dM\x12\x16\xad\xfdh\x8b7\x04S\xee\xcd\xf5H/\x1b\x06\x95\xe0d\xe8R\xa0\xf7P\xe4\xe1;L\xe8\x0f\x9aF\xff\xd8\x802\xcdaO\x1ct\xc7\xeap\xfcF\xa7\xdc\xd9\xaf\xc8\xb1bB\x9dd\xf1:\xc2\xa4\xb7\xbe\xf0v\xc4mw\xed\xd1\x94\x91\xe9\xd9\xcc\xfd\xe1\xf3\xf3\xa6\x0f/\x1a><k,\xf1\xbc\xe9\xc3\xb3\xa6\x0f\xd3\xa6\x0fO\x1b><m\xfc\xf0Y\xc3\x87\x17M=\x7f\xd1\xd4\x8f\xe9yS#\xd3\xf3\xa6.>m\x1a\xad\xa7\x9f65\xdf4(\xd3\xf3\xc6\x91o\x82\xebE\xd38>w\x8c\n)\x98\xd29vbk\xb6\xa1Y \xda\xcb5\xf9S\xeap\x94\xd5H\xec\"\xcb.\x80\x1c\x192\x06T\x89\xd7]7G\x83\xc1\xc5@\xd1&'G\x8e\xf4e\nE\x82\xd4\xb6L\xe8\xbb\xe2UJ\xa3\xad\xf4!\xa3Z\x87\x83Q\xce\x82\xca\xf6\xe2\x1f \xe2w\x1e\x8b\xaa2\xc8\xc9;\xa7\x0d\x17E\xe2v[?=\xbc\xd8\xff\x82\xf1\x81\xd1#\xe1h\x8f\xc8\x89p;\x9a\x85\xd3\xcb\xb3\xd2\xf5TSYyV\x9c\x88ck\x98\x1e\xacA\xbb(9\xa0\xc6\xb0\xf4\x19U^>\x9eS\x12\x7f<>\xac\xb9\xb0~\xd4\x1c\xcd\xfb\x9d\xd4\x189\"\x15\xab\xc9\xedE\xce\x14+\x1e\x92iC\xe8\xd9\xe2\xefC4\x1d\xec\x90\xfe\x9d\xe4[\xe1\x1d\xe5kh\xabE O\xdaw\xbd\xc5\xdf{\xf70\xd7Xzi|\n1SG\x87\x81\xd7\x80\xa7\xf1F\x1c\x02\xbc\x03\xd0N\xa3\x11\x0d\xeb\xc1\x13\xb7C0\x1ch\xdfiv\x17\x0f\x87\xe8\x19\x9a\x93\x96;\xdf\xb1\xa2rq\xe3\xfd\x1b$U\xf1\xc7RF\xd8\xa5\xc5\xb59\xb8\x0e\x9c\xa2\xc0<\x7f\xfe\x02\xfdP\x13\xbd\x19;+\xf4\xaa\xb7X\x9c,z\xbf\xfe\xe4\x9f\x1e=\xee\x0f\x9e\x0cG\x93\xd3\xd9\xc5\xe5\xd5\xcb\xeb\xdf\xcc\x97o\xde\xfe\xf9g\xf9\xfe?\x8f{f\xe3\xd2\x1bt\xbboQ6\xb4Z\x92\xabb$\xa9\xca\xe5\x8b.d\xd5\xd2\xd4\x96\xad\x8a\x92\x9bk\xa4\xf3\xf3\x06\xbf\x8b\x07(\xeep\x18\xe3\xc5\xdf:j\xf9\x8d\x8e1\xf1\xb6\xf0\xf9\xf3\x17\n)\xcc]\xb0(\xbf\x88\xd0\xc4\xc8\x8c\x8fg\x85\x10\xc3+r>r2w\xcd?\xb4\xc3J7\xca\xebM\x15\xf8\xf4\xea\xb6B\xbb\x90\x96N+\x14\xa2\xf2 \xb6\xf9\xc7/\n\xf3k]\x1c\xb6\xb1_5\xbf5\x0fuo\xb1\xe8\x99aV\x1b\xc1\x8f\xb3\xea\x8eE\xe4\xd29F\xb3\xa0\xa0c\x89\x1c\xe3*\xc8\xee \xb3\x11\x01\x0f=\xbc\xb4\xa1\xcc\x0c\xb5\xfa\xfcE\x93+\xa1\x8b\x81*\xe8\"w\xa4,rE\xe8\x12\xc3\xd7\xc1_\xb3\x0b\xb0\x84\xac\xdc\xa7)D \x81\x93\xbf\xe6\x8d,\x85sx\xb8\xceH\x0fAIU=\xd4\x85>>\\\xc0\x19+\xa8\xae\xf2\x00\xb6\xe5\xc5\xd7\x85_4\x84\xed!\xa4\xd9i\x85_\x08\x93?'\x8bh9\x04\x93]\xd2k7Q1\x91|\x9a,S\x0e1\xa6\\\xde\xa5\xb5u\xd2uU\xc4E\xca\x93G\xfd\xfd;Z\x1cJ\xb2\xadu>m\x91\xb1\xcf\x1b\xd6N\xdaN\xf2\xdb\xed\xd7R\xf4^\x06w\x91[\xb257\xfe\xcb9\"\xf3u \xce\x94\xbc$g\x18\\\xa0\xda6\xd8.\xcf\xc0)\x96\xd3\xa7\xb9\x82\xee|0\x02\x03\xca\xab\x83\xd7\xdcL\xaef\x9f\xe7~\xee\xed\x8c*\x9c\xd3|\xab\xb9\x00\xd0\x01\xaeC`\x9ec\xdc0\xb8\x99n\xda\xaa\x81\xcc\x15!\xa8\x05\x0d\xf3\xd1\xa74T\x93\xc7O\xb2\x08\xce\xc9\x98\xa4\xa3FF\xacWt:\"\x1c\x0f\x89\x1c@\x9a%\x97\xe2A~\x8c\x8e\xe4u\x0b\x10>.k\xf4v\xdd\xd8\x19TC\xb6\xf6\xd7\xb6\x80\xceH\x9c\xf7\x161\x0f\xda\x0dY[Xj\x96\n\\\xd2T\xc3\xea@\x11\x9b\x01\xd1\xc4\x82b\xef?\x9a\x8d\x17\xbc\xd8P\xa8\xd7$\x1e\x8f\xc9\xcc:\xc1/|\x84\xe7\x18\x1d6]\x82\xa7\xe7&\xa1%\xfa\xc0\x18J\x04wSxjou\xe6}\xd6\xc1\xd4;\"\xd7zF1\x06\xaa\xd6%T\xe6\xd8\xa2K\xbb\x15\nk6 m3\x8c{\xef\xf6\x98\xd6\xb6\xcb*\xb4\xf8@\xc3\x97\x02\xef\xb0\xdd\xd7\xd6qv02P\xa2\x90Y\x01\xe7A\xad\xfco\x963h\xdf\xfd\xff*\x8c\xa1\xb1\xed\x7f\x13|\xe1\xd9\xd3\x0elAg\xfa[p\x85g\x0d\xee0\xdb\x98\xc2\xc9\x95\xae\xe7\xef\x8e-4\xf5&\xe7\n\xad9\x8e`\n\x1a\x0b\x1f\xce\x13t\x05\xff` \x9dX\x82\x1f\xa5\x7fc\x96\xa0Z\xfc\x07K\xa8\xfcZX\xc2\x8b\x06w\xc3\x7f\x0b\x96\xd0\xd8\xf6\xbf \x96\xa0\xdd\x9e\xb5\xb3\x04\x9d\xe9o\xc1\x12tS\xffNXBSor\x96\xd0\x9a\xe3\x08\x96\xf0b\xfa\x81,AW\xf0\x0f\x96\xd0\x89%\x84\x94\xdf\xfc\x8dy\x024\xf9o\x8c)\xd8\xe46\xd3 \xb3f\x89\x0d\x00\xc50\x00\x14\xa8\xfaT\xea\x8b\xe76\xf5\xf33\x9b\x8a\x9e\xe9X\xd53\xdd\xd1Q\xb9\n\xfeR\xeb\x03\x9b\xa1-}-=mH\x0fZY\x98\xe7Z\xc6\xc2u4\x85\x97\x0c\x1a\xc8\xbb\xc8\xc9;\xeaZ\x03\x18\x89j6\x8a\xa1\x95=\x97\xaaU\x0f:\xdc\x16\x81\xd2`5\x0f\xf7\x9a\xfa\xa8\x10\x1e\xeb\xab\xa7\xcf\xc85\x8c\x02\xf4x\xaa\xf0\xe3i!\x9a\x1f\xb6\xee\x80\x91\x16U\x10H%bt;o\xda\xd1\xd5D\x85\x1c\x91u\xe1\x0c9>G\xa7\xb0\x1e\xc0\xc7\xfb\xda[\xad\xad\x80\xf7\xe3\xdc\x15\xf3\xc9t\xa0\xd0\xbc\xbe|<\x1a\xc1J\x9d\x91\xcc1!4\xc25\xe5t\x07\xbff\x81\x1f\xa63\xe27\x10\x97\x07\xd8Z\xe4RO\xf5\xdap+\xe2l\x9a\x0f\xce\x12\x17Nm\x06uF\xa9C*&\xb0\x01\xc0\xb1O>@<R\x18\n\xce\xc0b}#k\x82\xc35\"'\xc1\xc4\x0cz\x9d#G\x07\xb9\xf1\xc6\xd8\xf398\xf2\x87HM%n\xbe!C\x05\x8az\x9cG\xcb\xdcP\xcf\xeb\x1a\xb7\\\xb3p=\x8aN\x96T\xe7r\x0dF\x94\xc4\x8a2\xc5!\xd5\x83`\x87\x15G\x15\xb0\xf5\xa0m\x86\xa2f\xe9$\x89\x93\xbe\xbe\xb4\xcc\x15\xa1P\xc0\xba\x85\x95\xe2\xcf\x87\xdbn\x97u\x9f\xaf\xae\x9f6\xffW\xe4\xa2\xea\xba\xdd\xf5\xfb\x10S\x0bba\x1b\xc3Q\x89\xf6dfO\x88Z\xee\x02\x9a\x9f\xc5B\x8a\x04_\x0fQc\x99\xf6\x1b.U\x00\xdaG+\xc2\x03\x1e\xbf\xc3\xf5\x9b\x87\x04W&\xc5\xee\xf1\xe6\xfa\x8d\x837g\x06w\xd5\xf9rV\xa4C\xcf8/\x9e8\xf1Z9\xa7\x04\xe6\xb7K`zM\"y(0\x87\xa79o8$$\xa5\x82\xc7\xcd^\xb8\x0fJf\xd3\x075\xda\x12\xc5\xedP\x83nQ\xf0\xc1`<P<\x1c\x91\x0f\x1a\xed\x07\xb6\xea\x16J\xa3\x92P\xea\xd5\x84\xd2\xcd\x07\x0b\xa5&\xd5\x18\xd9\x9c.\x16\xfd9Y,N\x8a\xc63\x0bk=\xb3\xb0\xe63\xcb\xc1\xe9\xf6\xe1\x8a\x8e\xb8l\x1b^\x1f.\xfa\x80\xc3\xd0\x03~(\xdb985n\xb1\xdbw\xff\x1f\x85\xdfR4\x0c0l\xd6m\x0f\xef\x1f>\\\xfb\xbb\xdcW>z\x84\xfd\xd3s\xa4\xbax]7\xb7\xb0\x01\x05\x90\xad\xa3C\xea\xd3\xfe\x1b9\x7f\xb3X,\x07\xfd\xc5b\xb1\x18<Y\xa4\xa7\x03K&\xb5M\xc04_\x01N\xc2\xa9kn\xb7\x8d0k6[\x1d$T\x0e9\xd9\x98L\xc4\xd6D\x82\x8fH\xef\x93i\xd5K\xa6{QOK\x8b\xda\xaf-j\xfa?\xe2\xa2n\nv\xf6\xefoM\x7f\xfe\xec\x1fK\xfa\x17]\xd2\xc9\xff\x08K:\xeaO\x9f?u^\xcf}6\xad\xde\xc3\xf5u\xfa\xe7\x8e\xfb\xb9Q\xff\xd9y\xd1p\xf6\xd85\xef\xf6\xf4\x85w\xfak\xa3\xbco\xde\xb8\x87\xad\x84c\xdb\\\xf0\xde\xb5\xe3\xdf:v\xfc:2\x05\xb8\xc1\x80\xd0\xc5'g#w\xe9\xe1p\xab\xe41\x1d\xb6\xf1\xfe\x17\xa1\x1dFi\xb0E\xec\x01=\x0e\xf8\x13\xd9vp%\x06\xee\xce\xb4c\x94K\x12\x82\x0e\xe3\xccMU6N\x8a\x02\x94k3\x1c^\x90\x8d\xa9\xc0\x1cY\xf4\xd7n\x15\xca\xa0p\x94\xb1\x1e\\\x90M\xe3-<\xf0\x1f\x136v\xc0\xb6\xbfE\x01VkL\x14M@}a\xe0G7_\xe2z\x1c\xe5\xba\x1e\xb5\x9e\xd4\xf7^\x0f\x9d\x0dm~!\xd8u\x95[\x98\xfb\x8dz\xf4\xb5J\xc7I{\xad\x8b\xd3&\xb8?:\x98\xa06\xf1`$\xda\xc6_\xd5\xf5\xac\xe14n3\xa8\xa8\xa2\xc0 \x93s\xa2\xaa\xdb\xb4\xb6\xe8+8\x04\xdf\xe2zhAab\xc6\xed\xa3\x8fMi\n?o8MB\xb7\x80\x88~z\xf5m\x8a\xbe\x94\xe0^\xd1u-X\xe7v\x04\x8d\x92\x19\xcc\xedV\x1f5a\xd0O\xb8\xb4k\x9c\xc9\xab\xca\xf3\x05Z\x8f\xfa \x96\xc6\x10\x9c\x0b\xb5\x95,\xdaOl \xc7tN\xfb\xe9`\xd9y\x82\xd4\x92H&;\xce6\xa85M&\xc2\x17AY\xa1\xd1n7k.\x97\x15\x18X\xa6H\xf8\xf5AV\xeb\x87t\xeb\xda\xea\xa6\xdc\x9b\x11\x07\x93\x05\xc8f\xc4s\x08\x86An\x80l\xc3?d\x10\xfe\xe1\x10//\xf7\xd4p\xddV\xb8\x15\x966\xc6&\xe3ls$\xf0\x1d\xf4\x1av]\xe0mm\xf7\x89\x97\xcd4\x1e\x1f>\x00\x83><T\xd7P\x10b6\xa5\x89\x0f?\x96\x95tYLy\xb8x\xf1a\xd6\x10\x86\xfe\xe0\x01\xbf\xb6^P\xcb\xb3I\x06O\xf5\xe7\x06\xcaQ8\x83>9\xcc\xf9U\xb6(?K\xd5\xb1\xf8\x80\xcc\x18s\x08\xe3\xdc\xd4\xde\x07}p\xfc\xe1\xc0O\x9du\xe0\x87+2_\x0e\xcc\xee\xac\xfe\xbd\xe0V\xd4E\x0e\xe2\xc3\xe8Xv\x0cR\xa7\xcb\xeb\x87\x84\x8d\xac\xac\x1b\xdc=\xd6\x1c\xa1\xba\x17S\xbd\x93s\x7f\xa9\x06\xaf\xde\x03\xa8p\x96W\x9d&\xb8\x9d\xa9H\xfe\x95%ZXCqm\x07\x90\xd9\x08x\x1fc1\x1d\xbbhJa/\x9b\x17M\xcbU\x1d\xc5\xba\x9e\x92\x97\x07\x8c\\N\x1c\xf8ZM\x83 \xd6\xad\xb54EGo\xb9\x16\xd4\xa60\xc8~9K#k\xa7\x93\xe5v:\xf4\x82\xf0\xe3\xa3\xa3\xf3\xc3\x81\xd7\xa6\x0d\x02}\x87\xa2M\x81\xd5y\xf7\xc0\xeahG\x04\xfd\xd4\xe4\x8e\xab\xe1B\xd7\x8a}\xae\x96cT\x11k2\xe3\x05\x10\x05#-\x12\xe1\x1c5\xc65\x8f\x96\xcd\xe4\xaf\x1bMk\xaf\xfc\x12D9\xad\xaah%|\x0e\x82\x11\xbb \x86\x8e\x98\x1e\xb9\xb4\x08Y$f\xe4\xacN8\xda`\x84\xa8\xcd3\xe2\x82\xb1\x94\xb1\x99~\xcf\xe3\xe5\x04\xdan\xec\x08~\xd6\xd2\xc7\x87R\xf2\xd8\xc1\x80\xb3\xd57\x0f\xa0\xf1\x05\"\xcaK\x04\x94~\xc4\xc0\xe4\x05Y\xe4\xecY\xd5u\x99\xd1\x99|\xe6\xd0\x99\x14\xe2\x8a\x9e\x8d?\x9f\x9c\x80\xf2\xf4\xc9pqzum\x15\xa6\xc3\xdf\xe49\x96\xfd\xebY\xfe6^\xfe|6z1}_\xf8>\xb8\xee_\xcf\x16\x93\xa3J\x0c\x9e\x0c^\x9e\xd6\xf56\x05\xd8&\x8b\xf1\xf2\xe7\xe9\xe8\xfc\xf9\xfb\xc1\xac?\x7fs\xf9rqwv6^\xdc\x9d\x9f-U\xd9\x87\xf3\x91\x92n\xa7U\xc2z\xd1\xa8}\xd0\xd4\xa3_\xa5\x16\x9b\xa2\x13\xaa\x97\xbd\x82(\x04\xaa\x90H\xab\x0f)\xb8\xab?\xe9s\x9b9\xab\xc5\xa1,\x94U\xbb\xa1l~\xb6\xd4\x8dL\xf5\xd5~\x0f\xac\x08\x02\xb5\xe7:\xb1\x02C\xd1/W?(\x8ba\x1dd\xef\xd6\xfd\xc3\xc1]Be\x1d\x1c^\x96\x02|\xe69(\x8e\xd6[\xba\xc2S\xb2\xaa\xe3\xc3\xa3[\xed\xb2\xcb8\xb0\xb2\x87zF\xf2[\x98\x03E\xedN04i\x94\x874\xb5\x13\x986M`/\xa4~ b \x87m\x93\xe9\xfdc2K\xbf\x8f:\x99iu2?\x0e\x91.\xd2\xa6y\xcf\x8b1N\xe7:\xf6\xeb\x8e\xe8(\xa5\xfa\x0fD\xe6\xa4\xab\x18CwR\x0f\x0b\x99?>\x04\xd6\xf48\xfe\x05\xb7u\xf0\x17#\x94\xfa\x18\xffs\x0d>\x1d\xads\xbb\x8d\x80\xb2[\x16\xc3\x1f\xfdo\xb2\xd3\xd1E\x9f\x9ec\x04R\x81\xd9\xd4_(\xee\xd3;\xf8\xa3\x9b\xf6C\xfcW\xbfE\x1b\xa8\xc7O\xf0\x95\xfb\xa9\xf9;Y1f\x13'w\x89W|\xces\x05\xb7\xef\xd4s\xb0\xc6\nq\x19\xc0\x13\xf6-Lyb\xfeB\xa9P\xfc\x84 Y\xa2V\x85z\x8c\xd8-|\x8a6\xf8\xc7\xc7\x7f!\x16i\x14a\x7f\xe2\x84\xfe\x94\xb1 \xf6n`+\xa4\x92\x92\xd8DD\x85b\\\xa4\xf0\x9e2\xbe\xf7=\x86\x8fij\xe2\xa1\x9a\x81I}\xb6\xc7\x8f\xbe~G\xb8\xd2\x10\xffD!&\xc74\xb1C`_ \x0b\xfa\x84\xec p\xca\xa9\xfeD\x188V\xe8\x19\x12;?\x0dY\x9a\x82\x06\x8a\xf4D\xf4\xf4\xfc\xd33x\xc2\x16\x05\xccr\xc6\x01\xae=\x0bC\xe8/\x0e\xc1-\x86t\xbd\xf3\x10j\xf5w\x9c\xa5L#\xca]\x18\xf0\xc4\xb3`\x15^\xb1T\x88\xd3\xf8\xee\xe9\xe7\x93\xe7g<\x7fDd\\\xfbYx'8b\xe8&\xc1?\xf8 \xb1\x82j$\x16\x82z\xbb\x90E\xf8v\xab\xfe]\xb1tG1\xf4\xec\xca\x17^\xeccX\xde8\x80\xb9\xf6h\xa0g\xdd\xdb\xf1\x18\x83\xda\xe2\xd3\x98\xdd \x16\xa566o8f{\x16\x89\x15\xf7\x05\x1bS!X\xb4f\x98\x1d \x0c<\xee\x01\xa8u\x10\xd1q\x12\xd0\xfb\xd4\x8f\xb6\xda\xbf\xa3IR\xb9\xa9\x1f!\xea\xaf\x05T\xbe\xde\xaf\xd4\x1f\xb6>\xbfQ\x7f7\xd4c\xc2GX6\xcc\x84\xf9\x8d\xb6:\x84\xaf\x9f\x02zma*\xb7\xbe\xc0?\xef\xc28\xe1\xb1 \xc0\xbb\x154\x80\xbav\x1e\xae\x04=+~\x82\x7f\xb8^\x13\xde\x0b\xfd\x17\x97\x85@L\xfa\x91BK?\xe2\xdb\x0d\xbbO(\x16\x08h*60\xe0j\xd5\xe0\xa2\xa0[\x8dD\xa1M\xe17:%G\xa5\x10\xeb\n\xd3\xf1\x8e\x05zYE8wa\x16\xea8\xbf\xe1\x1e\xa0\x03\x19[=\xc4\x88; \x0dB\xfc\x9bPN\xdf\xbd\x03\xa4K\x02*L4\xe3\x84\xc7w\x10\x1f8I\xef\x01\xce\x9f2\xc6!\xc1,0\x96\xc6\x19\xc7\x95\xc5\x11iyz\x1fA^.\xf4\xb2a^\x1c\xad\x03\x7f\x83KL\xaf\x88t\x8bk\xf0\xe6>\xc1\xf4\x10\xa6*\x8d\x835\xc5\xc0\xc5I,\xfc\x0d4\x96\xe2\xc4\xa4\x82Q\x00+\xc5\xee\xa8\xd74\x01\xc7)\xb0\xc2\xa2-\xc0\x94\xad\xa1\x81,\xe2\x8c\xc2r\xcc\xc4\xf9\xd9\x19DaVx\xc6}D\xd0\xbd\xcfn\xc79\xf4\xb7l\xe5a\xf6[Aq\xf5\xdd{\xfe\xed= \xc3\xdd\xc6GD\xbf\xe3\xf0\xe9>L\xb7\xbc\xb7|8\xff( \xf9\x9f\x0e&\xbf\x7f\xfd\xea\xdb\xb7\xaf\xbf\xf8\xe7\xb7\xdf\x7f\xf5p\x01\xb8\xa2Eq+\x17+A\xf8I~CE+^\xc8Ic0}\n\xc7\x1aE3\x05\x14\x97\x9f\xea;\x8dN\x97<Tk8\x1e=\"/\x9e\xe6\xa6j:\xf6=zp'\xcd\x9e\x8cH\xc1\xa7lS\xdc{{F\xd0\x1e\xf3\xfe}?\xd2r\xdb\xc9I\xdd\x1c\xc0\x98\x00\xf0AA\x1e;$\xa4X\x7f\xc0\xcd\xd2Q\xa9\x91\x11\x8c^\x9c\x0b%\xc7\x1e\x18\x14D\x9b\xf8\xe3\x8a66\xb9x\xdf\xc3\x81l\xe6\xa0\x07\xc7\x0f\xd6\xcf\x08f\x07\x06\xac\xe7\x18\n[a\xd4\xe7\x8e8\\\x95\x8a\xb9\xd1\x80\xc4\xbavUm<\xd2\x0d\x16\xcc\x1d\xe2\x01\xf4g\x06NF\xbfg\xdb\xaf\xee\x12\x04\xb8V\xbb\xcb\xea_\xe1\x14*\xb8O\xfb\xd7\xb3,\x82H\xf2k\x89\x8c\xe5\xad~[\xc7\xd9\xca\xbe\x0dN\x07\xfd\x9e\xc9\xd8\x1b\x91\xd3\xf9\x9b\xde\xe3\xab\xcb\x97\x7f\xce7\xb0C\x95\xa5T\x85\xca\xf7x\xfe\xe6\xf1\xf2\xc9c\xf5\xadT\xa1\xfa\xd6\x9b\xbf\xe9-\x9f\xf4N\x07U\x0f5\xbe\x85m\x91\x0e\xa9\x10\xfcmDC\x06\xafO\xae\x16\xe9\x13H\xda\xd3 c\x83k\x80\xcc\xe6\x01\xd0p\xaf\xfdv\xb6\xccw\xe7\xb3\xc9\xdb\xf1\xf2\x89\xcd\ne{j\x18\xabMc\x00\xcd\xd3\xcb\xf9\x17\xe3\xffD\xc7\xef\x96\xfa\xaf\xda\xe0C\xb3\xfe*\x13\xec\xc9\"}\xb28\xbd~i\xea\x83\xc4\xde\x88\xf8\xb5\xea\xd0V\xe0\xf4M\xffz\xa66.o\x05\xddJ\x90\xeb\xf1)\x0e\x95X!\x13\x1e{J4\x8b\xb6r\xcd\xbc\x80r\xaaPFzJ\x10\x86\xfe\x99\xb2\xe0\xca\xa8\xdf\xb35\xa8\xee^.N]\xc0.\xd2'\x00\x9fn\x03r\x9e\x8c\xc7\xfd\xf9\x9b\xf1r(\xe7\xe3%<\x0c\x9e\x8c\xc7\x90-\x07\x01r\xce\xaf\x97\x93'\xd7\xf3\xeb%|,\x00\x85\xf5\xa8\x86\x96\xc3E:\x9c\xbfy\xb9\xd4\xedh\xa9\xfd\xf4\xf2d1\xff\xf2w_\xbc\xfeb1\xef\xcf\xdf,\x96\xcb\xa1\\,\xe1A.\x96\xea\xe9\xe5r\xf0D=\xa9b\xae\xf3\xa6\"Cx\x98\xe7[\x93\x9as\x9ag\xd3\x17n\x07\xf9\x9f\x0e&;\x9a\xd6\xd1\x0f?\xf9\xe9\xbf\xa8\xdd*\xf8\xe3\xbeW4\xbd\x8e,\x98q\xc3\xe3P}\xff.\xf6\xab!\xf53P\x01=\xfau\xbf\x7f=\xbb\x9b\xd3\xf1FM\xcf\xcf\xd3\xd1g\xef\xe5\xdc>\x0e\x06\x17\xa7\x15\x8d\\\x8a\xe5@u\x04\x98\xac3?\x9d\xbeW\x99\x1f\xce*\x8b\x97v\x1c\x04\xab\xc0\x0f\xeb\xfa\xf8\xa7\x9f\xb9\xb9\xa3w(Z8\xde8\xdd\xb8/\xa9<}\xee\xd6Iy\x9a}\xbai\xa6\xbf1f(9\x93\xf1\x0c'+\x1cI\xa0rA\xf1\xe7\xde\x1dF\xaa \xe6\xd3\xa5b %\xdd\x14\xb9&\xa0\xa1\xf8&\x12}\x95\xc1\xe85\x06#2}\x01\x01\xd6\x8b_Gd\x8aa\xb6\n\x97\x81\xfc~\xa4j\xa1}\xa0\xcc\xb4\xff\xe2\xf9\xf3\xa7OK;\xf2\xa0\xcc\xb6\xea\xc4\x1am6\xc0p\xa8\xb1k)2\xe9X\xf1\x01\x05J\xb5\xa7%\x98\xf8\\eY\xb6\x00\xe1\x14\x95\\\x0e\xec\x1e\xfd\xc2\xfe\xeb\xca\xb3\xac\x05\xb5\x99c\xf2\x95\xe0\xe1\xf6[v\xa7>\xfd1k\x88\xca\x01\x07*iC\xc4\x0e\x1am\xbf\xe3l\xe3\xdf\xcd\xd4\x8e$\xdaft\xcb\xc6.\xed\x8b\x1f\xdd\xf8\x9b\xfb\xc6\xf8*7\xaf)\xdf21sJ\x03\xe2>\x89!\xa8\x08\xe3\xee\n\x809\xa63\xd2\xfb\xeb_\xfe\xcf\xbf\xfe\xe5\xff\xfa\xeb_\xfe\x8f\xbf\xfe\xe5\xbf\xb8\xd4]\xfev\x17`\xfc\x91(\x0b\x1cJ\xa8\xfc\x8clF\xce\xab\xa7\x1c\xa5W/\x0e\x938b\x91p\x8e\xb5\x17s\xe6JW?\x9e\x05\x10\x8a\xa5\x07\x9e\xe4z\xa3<\xea\x8b\xda\x1c\x19+\x19|\x03\xc9E1\"x\xd7\x83\x88{\x1f\xca\x05v\xbb^\x8e\xaeV\xfc\\=\xd8\xa3\x0eA\xfd\xa0\xe7\x08\x83\xe8\x98mto\xd7\x05th\xbe72\xce\xf7\xd4\x06\xd9@`\x1aV\xcf;F\xd7\xc8 {;T2\x890\xb0}\x0f\n\x9fu\x90\xbeB\xd0\xa6\x91\x8e\xa5\xdb\x0dv\x1c\xc7\x83\xc0\x17\x02w\x94b\xa7\xe8\x00)\xc5\x00&y\\\x8e<\x14K5FH!\xc2\x87\x0dHR\x08\xef\x82\xbaP\x07\xfc\xbfr\xbf\xfd\x83,\x14?\xfe\xbb$\x0b-\xcb\xae\x0d\xab\xff\xce0\xc6q\x1d\xbe\x801\x8e\xaf\xff\xc0\x18\xf8=\x04cj\xe9\xe4(F\x82\x0c\xa1\x13\x0d\xfd8\xf4\xffCh~'0?\x94\xd4\x1f\xa2\xf1\xff\n4\x1d\xb6]\xf9\xd2\xe4\xc5}IU\x98w\xaffS\x0b\x83#&jf\x1e\xfez<\x8e\xeeQ?\xbf^s\x86\x07\x04\x943\xcc\xc5\x85\xef\xa1\xde\x97\xa6>N&\xcd\xd6>h=A\xc9\xbaZ\xfb\xf8\x07\x93|\x18\x99\x95\x1d\xda\x12:\xac\xe25\x8c&\xb6\xbc\xca\x84\xd0z{\x1a\xed\xf1D\xcb\xa3\x890\xca|\x16 T\xa6{~\x19\x9b\xbc8\xd0\x7f\xb6<\xce\xf0\xc4+W\xef\xe7\xa7]\x82\x1a\x1cZ\xe39\x18\xf3bNE\x8cZ}d\xe9k\xa6$ d\xf2\x1b\xd4\xf3\xfb\xf8\xdd\xc7\xc32\xcc\x05\xb5\xb0\x80\x99S\x0b\x06\x03\xb6\xf1Y\xb0N\x99\x8e\x11\xb5-\x00\xbf\xf1\xb7\x19\xd72\x01\x96P\xb2\x81>\x1b\xd0\n\xf1\xdd\x14\xfe\x05yl\x87\x87k\xa0X\xde=\x87\x7fA\xe9\xaf\xd6\x83\xf9\xab\x0f\xe2l\x9f\xf3\xf5\xa3\xfe\xc2,\xf8!\x0c\xbf\x1f%x.\x88a\xdbz7+\xa8\x04\xacw\xe0\x81mY\x84IP,\xa4x\xde\x12\x9aC6\x08\xe5\xa6\xfe\xfe\x94\xe1\xf1I\xc8\xa2\xcc\xfc\xf5\x05\xf6>d\xbaC\x11\x9e+F1\xce+\xceN\x9c\x08\x0bil\xc7%\xce\x84\x06\xcd\x9c\xad\xe1\x9fxk0\xef'\xf5\x0f\x9e\xe9q\xc8\xc8\xb3\x15\n\xb6\xf0\x0f\xb5\xe7\x00\xa6\xca\x94\x05\xfa<%\xdd\xd1u\x0c\xc7IiH\x03\x80\"\xd7\xc9\xa7 \xf5\x10\xdc4\xa1XPp\xff\x86\xe9\xa7\x18\x89N*\xee\x11\xdb1\x08]/\xcd\xc2\x90\xe2)\x05\x06\x9d\xd3R\xa7z0\xd8,`$\x05\x0b\x93@\x1f8*\"`V\x90P\x13\x0f\x0f(\xb4\x9a\x195gG\x82\xe3\xbf\x14)\xa0\x80\xbc0\xd6\x19\xf4`\x8f\xc7<{\x7f\x8d\x07\xb3\xb7+\xdes\x04\x8a\x03\xa3\xb0^\xba\x87^\xe0\xd2\x0d\xc46\xb8GQ\xd9<\xafQ.5\xaff&i\xe4\x87T0/\x0epm\xe8\xf706c\xac\x13\x04\xa7Qj\xd0\xd7\x92\x81\xc2\xea\xf5\xb9&\x16^\xe0' \xc5.\xaf\xd9F\x0b\xd1)\x9c\xe5\xb0 \xf0\x93\x14\x17\x87\x1f\xd8E\x81\xcb\x04\xcf\xcb\x0c\xdc\xf0`\x84\xe9\x1b\x86G\x9a\xda\xf6\x1e\xe8\xaf\xfdK\xf9\x96\xd3\xb5\xaf\x97'\x9cnq|J\x11\x97\x99\xa0\x862\x84\x06\xb2\xc2_\xa1+O\xe2\xe0~\x1b\xdbG\xcb5\xe9\xda\xa7A\xb1 n\x90N\xe01q\x8e9\x10\x01\n\x9e\xee\xc3U\xac\x0fq\xef\x84\xf9k\x1a\x05\xabzx\xd0\x1d\x14\x061\xed\\\xef}\x06\xe8\xbc\x87\xae;f=\x82Y\xdf\xb0\xdf\x06z=o\xd8\x97j\x12_Q\xc1\xfd;\x93\xa0\xc5\x88\xd70{z\xb819\xd5\x94U\xbdF\xfb8\xd8\xb3b\xc9\xdf\xf9\x9bM\x96\xb2o\x958\xa3\x99\xb2JL\xed\xde\xf3\x15\xd2\x0bH\x144\x12\x90\x13S\xbe\x0e\xe2XC\xf4u\x16y_\xe4\x8f\xbf\xcd\x1f\xff9\x7f\xfc\x1e\x1f\xff\x99fi\xea\xd3\xe8\xb7A\xa6\xe1|\xc5\xf8\x96\x15\x1e\xff`E\x8aW1Ovq\x10o\xef\xf1\xfd\x8f\x9b\x8d\xa1\xc5\xa87,\x80\xf3C\xc2\xbc,\xa0\xbc\xdc\x97\x1f\x92\xb8\x98\xe9\xb5\xb1\x84`\xaf3\xbe\xca\x02%\xb4\xb8F\x1d\"r\xf4B=\x8f!\x8b\xb4e\x89z\xe6\x1c\x97P\x08\"\x0f\x9a(l8\x05\xc4\x0f-^\xe3\xe9f\x08\x04\x99\xad\x91\x04\x84a\x16\xf8h\xea\x81\xa7\xb0H\x92\xd1\xd8!\xdektN\xe8z\xad\xabMv4\x121\x92b\xae\x89L\xc8\x91\x00\xea\x83\xdc\x04\xa8\x1e&\xfc\x84\xe44\xbc\xb7\x98\x1aj\"\x17j\xd2\xa6\xde\xcd\xa3%s!\x92\xb7\xd0\xa0p\xa8\xa1\xcd\"\xcd\x90\xf0 \x00t\x8cU\x0cc\xf5k\x14\x8b\x1c\xd2\x1a\n$\x9e\xc7\xb4m\x80%\xeb4\xf0\xb7\xfa\x01\xbfd\"V\x12q\xc0\xb4,A\xbd\x1b\xc5`\x10\xefW[K\xbcV1\xd7\x90y,\x08\xd4x\xe9\xf9V\xafj<\xcc\xeb\x8ey78\x94V\xc0\x08(2!/`Hvm\xad^\x8cB\x82\xfa\xab\x97\xa9\x17\xc7|\x8d\x89<N\xd3\x98\xfb[d\xa3kE*5y\xd71\xbczE\xc1\"Uc\x8b\x12I|\x1b\x0512\x04\x16yB\x9f_o\xf4\xa4m\xb0md\xfeZ|6\xe8\xba\xf3\xd7k\xb4SQ[\x0e\xf8k\x08%g\x1b\xb5QR\xcfx6\xefG\x82m\xb9\x16e\xfdT\xb3\xf9\\\x1c\xa0e\x89;\x88\x91\xa4\x05\x1a\x97\xd0\xc2'\xa4w\xa8\xe4\x84\x17\xb6\xf6\x91\x962\xb1\xc3\x85\x1ej\x19\"\x0b\x84\x9f \xee\xe8\x13\xa4^\x14+\xd6\xac\x1f\x8d\xbd\x1a\xbe\xddr\xaaE\x04\xec\x8c\x12\x15\xc2L[\x12\xe4TYQ\x9c]\x1c\xe8\x89M\xe2T\xb3\x8d\x8433~I\xb62\xd5*2\x1d[\xe9\x833\xba\x8e\xa3@\x9b\x1a\x04\xf8\xe7\xa7\xcc\xe78\x07\x9c\xed\xf5\x1f\xc6S\x9d\x14#\xfc<F\xab\x19\xf5\xd7\x08\x0d \x0b\x02@\x1dx\xf3bmq\x00B\x08\x96Nwz\xab\x90\xfa\xef\xec_\x94^L%\xdc3c\x9e\n\x8a\xeb2E\xe3\x8d\x94{\x9a\x88\xa5\x82U\x18K.\x8b\x08\xba\x02\xa3\xd0^\x89\x8fh\xec\xc9R\xa6gxo\x17\x919\xa0\xeb\xdd\xfak\x9c\xc1\xbb0\x88R\xd7\x92\xa4vIFb\x9c\xe3\x1b\xf5\xbc,\xcc\x8c\x84\xa3V\x95\xf0\xf7>\x9a:A3\x8a!\x8cW4e\x86g\xd2\xd436>\xe6L\xcf \x84M00\xd3w~\x98!`\xaa\x8a\x8d\x9a \x16y\xf7&A\xd59Nw\xfe\x06\xea[1\xbd\xd2V>\n\x1e(!\x16\x96/ZB\xa9\xbfc\xc3o\xe1E\xed\xffz\x95u\x1d\xf3\xb1Z <\x89\x03j7\x1f\xf5\xe41\n+i\xfe9\xe1\xb11\x9e\xc3\x04\xce\x14)4\xf4\x05f\x07\xbb\x80\x8b\x1d\x12Pf\\#k\xf5\xe2\x08\x18'&\xf1\\\xa8]\x03\x97\xd5Y\xf7~\xaa\xf7,\xc8\x14\xd9z\xcbB\xcd\x06Y\xc0\xf6\x16j#\x04\xf8(\xfc\xaa\xbf\xe3XQ<\\\xf9\xf0nF\xa0 z)V=\xb6#\x82\xaf\xc5bq$\xc6\x1b\x1a\xfaA\xfejP\xdb\xbe\x8c\xe9\xfa\xc7,\x15y\x9a\xe0L\x8bA\xfa]c1\xbc\xed)\xf7i\x94\xe7\xbe\xb5h\xb6A\xd9\x03Z\xda\xc2\x06i\x0b\x1b$`\x9dc\x83?E\xb9\xd0\x08eY\xe4#\xe34 %i\xb5@8u9M\x1a\x950Y\x9e8D-?\x82va\x99\xdf\x00 7\x98\x00;\xb5\x1b\xd8\xa9)\xb1L\x17\xbaa\xf7\x89\x929R\xfd\x92&\x10X]\xbf)n\x00\xcf\x96\xd4\x02%\xcd\xc7,`\x8a\xd6\x8d\x0b\xecI\xd5\xcd\x82\xd0\x8ac\xf8\xae:\x99S\xe1@K3\xf9\xe4\x05\xb16<B x\xac1B\xbf\x19\x9bI|\xb3\xa4\x07\xdf\xf3\x11\xc2w;\x9e\xf8j \x87\x92\xa8\xf5v\xbb\x90%\xbd)\xbc\xdc\x99\xb4^\x03\xab\xd0\xc8\xabY\x86e\x13Y\x18{\x82\xee\xb5]\x99\x15\xe7\xe2\x84\xd9m{\x01/-\x9f\x8f\xb9\x11\xca\xf1\xc9\xae\x87\x9c%+\xf1d\xa3\xf9YB\xfdH\x8cm\xe9\xe2f \x1fZ\xcd|\xaa\x1d\xd5\xc9%\xd4\xd2iy\x1e\x8b\x07 g)\xe3{F\x83dGK i\xc2<\x01\x16\x00*\x19\xe0\xe00j\xda\"\x8e\xae\xfd\x0cY\x0f\xc3\x15\xc1\xd9F3\xb0\x84Q\x01WZ\xf2WM\x178\xb3S\xcaY\xaa\xa5\x0e\x1e\x0bM\xb3S\x8fjF\xc2\n\x8c\xaa\x8c\xfb\xa9\x96\x93\x8b\x84\xc9\xa4\xb1;\xdcG`\x9a\xe2\xaa\xf9\x8c\xa6b\xbdf{\xdf\x8e|*\xd4&H\xf8\x81f|\"Nr$\x85\xb7\xc2D\xaa\xed\xf7\x0d\x1b\xafi\xba\xa3\x9c\xd3jZ\x8e\x08:Q\xad,mn\\H\xf9Q\x1b\x8d\xea\xa4\xd0\x17\x8c\x07~\xe8\x17K\xd6\x1a-|\xb3\x08^`\xb8\\Ibv\xdcJ\\\x17\x94\xc9\x85G\xe4\xcbE\xbcP2\xef\x98F\xde\x0e{\x0d\xafZ\x05\xa5G \x92J\xe3\xafRr$\xb4\x1c\x1d\xe8O\x06\xf4'\x8b|\xa3\x07\x03\xa6\x0e\xe3\xab6\x8a\xab\xf8\x0e\x1fS\x7f\xe5\x07\xba\x97{\xc6\xc5\x98\xae\xf7\xe3\xfc\x0d\x17\xc5\xf8\xae\x9a\x009\xec \xdc\xc6|]$GFN\xbb\xe5>P\x1c\xb3\x84\xef\xbc\x1d\x8d\"\x16\xa0\x00\x84=\xbdw\xa4Asw\xd0\x8f;\xe8\x07\xca\x1f*7\xfc\x03_\xee\xe1\x0b\x18|\xbf\x8b\xe3\x90Fk%09d\x94\xac \xa3\xf4P8\x81U\xaa\x97\xb4\x15{Vl\xcf\x02-k\xdbM\x9a\x17\x07Y\x18\xa56\x13\xbe[r\xad?kQm\xcd\xa28\xb4Y\xd7,\xd1:\x0d+\xcb\xe7l\x1a\x1es>\x07\xbbG\xf5\xc05ykbA\x81\xc2\x1f-q\x17H{\xc4\xc4\xce\xf7n\"\xad\x17\x0b\xecV.\xb0\xfaT\xb5\x05-\xef\x83T\x8a]g\xea\xc50j\xf5\\\xe0\xba!\xbd\xb3_\xfc\xc8>\xc6{\xb55\x81U\x03\x8dFqNL\xa3,\x1f\x07#\xad\xf3\xf8\xd6\xa6\xf1\xf8\xd6\x8e!\n\xcc\x06w\n\xe23\xb7\xbd\xe0\xb6\x17\xb8\xe7\x05\x03\xc5\xfc\xb5\x00\x95\xde\x13\xfb\xef\x98\xde[\xf8Z\x8f\x07\xe8e\xb5\x80 \xb5L\xc2\xbeh\xe2\x03\xa2\x88V\xe2\xe9 \xffV\x96L\xb3\xa4\x9ar\x1f\x86Lp\x1f\xe4\xf1}N}\x0e\x8b\xcex\x83\xe3.\xf0\xa3\x9b\x99\x99\xe3\xbb0\x98i\xebzH\xb7\xe2\xba\xfa`G\x03\xaa\x9cA\x8e\xde\xb2`?I\x8a&\x8f\x81\xd3\n\x89T#7\x9b\xab\x9d\x17$\x1a\x8f/\x06\xa8\xe8\x8c\xb6=ru\x05\xa6\xa6\xf1\x86\x88\xb9\xb9}:\x87[\x98\xeaO\xe5f\xd9\x88\xb0\xb9J^6x\xdf2\xa6\x9b\x95\x83\x0d7\xe4^\xbb-\xae\xebp\x93h\xf5\x16^\xa6\xad\xb7\xaf\xbdc\xfb\x11a\x03\xf2\xc7\xd5\x8f\xcc\x13\x85\xf0\xf2;\x9a\xfe\xf16\xfa\x8e+\xd1A\xdcO<\x1a\xc0\xe0i\xcf\xd1\xba\xd7l\x1e-\x1d\x9eT\x8c\xc9N\xc3\x91\x0d\xd1\x80o\xc0\xbb\xdc\xcf\x8b\x9f\xe7\x8bt\xf1\xc3\xf2\x89\xd4\x7f\x17\xef\x17\xefO\xb7a\xbdG\x89*p\xf9O\x95\xec\xff\xf4\xd2\x99y\x0d\xd6jk*\xe8x\xbe\x18/n'\x8b\xec\xec\xec\xb7\x9f\x8e\x17\xd9\xd7_\x7f\xfd\xf5\xf2\xd4q\xf2\x08%\xd4\x12\xc7\x12\xcb\xe1'\x8e\\{\xc8\xd5\xbf\x9e\xe1\xff\x1b\xb9\x13\x03\x91\xa4\xd7\x12o\xd6H\xc1\x02\x89\xd7-\xa4\xe7\xaf\xe5]\x98$\x83\x99\x9c\xbf\xa1\xe3wK9\xa7\xe3w\xc3\xc9b\xbc\x1c\xf6\xafg\x90\xa6\xdefK\xf9\xc9`P5\xb7#\xda\xb3\x154\xb6\xb8\x1d\xe2\"\x93`\x829se\xde\xaa\xccs\xd5\xcd\xb3\xb3\xb1\xfas~\xa6\xfe\xfd\xe2l\x91M_|\xa6\xfe\xfd\xec\xec\xabEv\x8e\x9f\xcf\xcf\xce?W\xff>\xdf,\xb2\xa7ggg\xcb\xd3m\xbd\xca{rEz\x06 \x8b\xf8\xff\x03hf\x15.\x18%m\xed\xe3D\xc9\x0f\x8a\x86\x90\xeb\x03\x16\xe5\xa4\x803XC\xdd\xa9\xee{2\xeb^\x0b\x03\xc0\xda\xe1f\x13\x10\xd1x\xa6\x18,\x18\xe1\x15\xbe\x81M\xa1\xee\x86]\x13\xe4:\xef\xec\xac\x05\xd2&\xea\xb3r\xc3\xedoH\xff\x0b%\xb5M\xfc\x14\xfe\xf6Y\xa3\x85\xa1%Sj\xd1\x9f\xe1=z]\xc6\x98\xb0_\x10\x01\x11\xe7\x0d \x13\xc3\xe1\x80Ds\x81\xebU,\xeb\xcb\x95\x14\xdc\xf5\xd5{\xd3\xb4\xba\x11\xe4\x0d\x8f\xc3vG\x80\n\xda\xb7m\x07\xae\x85:{J\x00\xd9\xf8\x11[\x17\xe7\xec\xd6\x8f\xd6\xf1-\xb9\x06{\x002\xd3\xef\xe5&\x9d6\x83v\xe4o\x9d\x8d*\xc8\xbe\"W\x84\xf2m\x06\x86`&\x92\xfcK\x8c\x0d_\xf0B`\xb3\xcc\xcf\x96\xe4\xba\xfc:#o\x9b\x02\x9a\xde\x95\x0c`\x9b&\x95\xe4\x10\xdfV\xc7\xd2\xfc\xde\xbb\xbd5\xdcM\xf6\x8c\xa7\xaa\x8bW\xa47\x9d\x9cM\xd4\xae\xfan\xc2Y\x18\xef\xd9Z\xc7\xbd>\xf9\n\x9ck|5Y\xc7\x1e\x80\xad^?\x87~\xe5i\x93(^\xb3\xd7\xf7 \xb3\xb6\x9bw\x13?\xfd!K\x92\x98\x0b\xa8\xead:\"wu0\xd4(\xfe@\x8aU\xb9\xc7\xe2\xcb\x06\xbf~\xeaw\xd3\xf2\xed\x8b\x0eu\xff\x11\xf2\xfcN\xe7\xf9\x9a\xd3ms\xde\xef \xef\xef_\xbf\xfa\xf6\xb5>p\xfc\nO\xa5\xdd\xd9_C\xf6?\xd4,\xad\xcd\xef\x95\xfd\xfe5\xe8\x83\xdc\xb9\xbe\xc1\\4dk\x95\xf5\x15M\xdc\xf9~\xb4\xfc\x1a(\xd27\xe4\xbaRLM\xddW\x93W\xf1;H\xfcB\x08\xae\x12g\xe4\x1bw}\x7f\x80v_\xb3\xbb\x86\xde}\x0f\xdf\xbfD\x8b|w\x96\xdf\xe1\xd8\xfe\xf1\xd5wp[\xda\x9d\xe9[\xc8\xf4?\xbf\xfa\xf6\xf7B$\xdf\xb3\x9f2\x966T\xf7\xa7r\x0f\xbf\x85\x1e\x96\x0b\x92\x19\xf9\xd6]\xf8'h\x86Ej\xff\xf6\xa7\xef\x1b\xfa\xfcu\xb9\x85\x9f\xa0\x05[\x86\xcc\xc8O\xee\xb5\xe4\xe4\x17\xdf5-Z\x85\xf6\xef\x14\xf5\xfd\xff\xd9\xfb\xda\xae\xb8m%\xe0\xef\xf7W\x0c~zR\xfb\xe05\x90\xa4\xb7\xed\x06\xc2!\xb0ii\x03\xe4\x02i\xdaK\xf3p\xcc\xaev\xd7\xc1k\xed\xe3\x17^z\xcb\x7f\x7f\x8eF\x92-\xdb\x92\xec%iz?\\\x7fHXk$K\xa3\x91\xe6E\xa3\x99`\x9c\x92\x8a\x88\xdc\xea\x18\xdb\x10\xc4\xff\x8f@\x98D\xd8\x16S\xfe\x08\xe8mBRI\xc1(c1\xc27\x94\xdb.\xd5\xc8\x87u\xf0\x15\xeb\xa0\x1eK\xbf\xc0\x0e\xbc\n\xa2\xc5\x92\xf7\x1b\x95\x14=\xe4\x8f\x08\xc9G\xc9\xa8\xf0P\xb0u=\xf4{\x84\x9e\x91\\ ${u\x7f\x1e\xce\x18\xb5\xea\xe1\x7fRZ\xef\xb7\x80\x7f\x83\x1d8c=\xa7in^\x97?\xa3T\xdc\x9e\x82\xe6\xae\xf6Kc\xa7\xffE\xf4\x85m\x10\xeat\xf0\xfdr\xaf\xdc\x88\x8e\xe8Ds\xf7\x8d!\xfd\x07\x8c\x8c\xa6\xed\xd4W\xb0\x03\x86\x95\xffo\xd8\x81\x89\xbe\xe8W\xd8\x81\xb9\xbe\xe8_\x18wM[D\x08\xec\x80F\xa4cON0(\xa0\xb6,aez\xcf;@F\x05;\x10\xbb\xffy\xf0\xe1\xe2\x03\xa3\xceq\x98\xbbW\x188\xeb\xca\xcd\xf1\xdf\x04\xffM\xf1_\xeay\x06\xdeH\xed\xdf\x89\xf4\xdf\x89\xb0\xd5\x10\xff-\xf0\xdf\xcc\xf8\x85\xd0\xfe\x85\xc2^\x9c\x11Cb\"\xc0[\x81\x96\xc21\xb1\xb0\xb3\xa9\xadpi+\x9c\xd8\n\xe7\xb6\xc2\x1b[\xe1\xc2V8\xb3\x15\xde\xdb\n\xafl\x18\xba\xb4\x15\xde\x12\x8bB;R\xc8\xa2r\xa0\x91.A\xd2\xa3\xa0\x8a\xf7PZ\x93T\xef\"\xe1\xe4\xc3\xbdD>\x98d7\xed\x97J\xcf\x12\xe1(V\xb9Gq\xa7\x1aSkg\xb5\xd6\xb8a\xb9<m\x13\xa7\xd4Q\xdd\xc7L\x1a\xf5\xcd\xa7\xb8\xeay\xa64\x8a\x94\xe7\x94\xe5\xc8\x85\xb1\xc5\xd0\xb1}\xfb*\xb8&:\x1e\x87\x06ZC\x83{D\x15z\xa76\xa1\xd7\xa1hup\xf8}e\x85gO\x99\xaa\xa5\xe8\x02C\xb8\xc70\xae2:*F1\xc4\x8d\xca\xd9{\xf3\xe6\xe4\xfd\xe8\xe0\xf2|\xef\x873\x07\xa2\x04\xebrDO\x03\xb5\xd0\x83!\xa4\xc4\xe7\xfbNYm\xef\xfc\xfc\xd4X\x8d\x15\xb2j\x11\xf1\xf9f\xe2\xbc>9}uh\xf8\x98R\xc6*\xb1\x97\x85ZI\xfb)\xa5LVB\xfaw\xde\x9d\x8d.\xdf\x9e\x9e\xbc>|3\x92\x9fz\xf2\x04\xa6\x81\xfa\xde\x17\x9b\x14\x0f\x82'\xfa}\xb9wz\xb8\x87\x0d\xfab\x9b\xaa\x17\x1f\xec\x9d\xcbb\xdc\xa8\xe4\xfbw\xc7?\x1f\x9f\xbc?f\x8d\x9f\x9f\xec\x9f\xbc9C\xa5a\xcb\xe7;\xd648\xdb{=\xba|}rz\xf9\xd3\xbf\xde\x8dN\x7f\x93\xa5\xcbF\xe9\xf9\xe8\xe8\xed\x9b\xbd\xf3QY}\xc2\x01\xde\xffx\xf2ftyp\xb2\xff\xeeht|.\x0b\x17\xbc\xf0tt\xfe\xee\xf4\xf8\xf2\xe0\xe4H\x16\xcc\x9a\x05\x97\xafO\xf7~P\xab\xde\xb7 \x0e\x8f\xde\x9e\x9c\x96\xe57\xbc\xfc\xf5\xc9\xe9\xfe\xe8\xf2\xd5\xc9A\xd9\xe3\xab\x1aR\xce\xf6\x8e\x0f\xcf\x0f\xff\xcd\xbav\xe4\x8b\x8dI\x96\xfd<\x1a\xbd\xbd\xdc?9>\x1f\x1d\x9f\xfb\x9ciV\xc4\xf1\xee\xf4\xf0\xf2t\xf4\xc3\xe8\xd7\xb7\xac\xe1\x9c *0\x0c\x11\x91i\xd5f\xfc\x05\xdfa7=\x9cZ\x0c\xecI\xb4\xbc\x0dy%\xa7OT\xdb\xf8Z\xb8%Uh\x80\xd8M\x88\x0f\x8c\xd7\xc6.%>D<\xb3\x97\x84\xcbnf\nX^\x82\x85\xe5_Y\xab\x02\xd7Z2\xa5^\xd2]\x8f\xed\xb3Gj\x97\xd2\x12\xb2P\xebx\xb8\x9a\x0e\xf8\xa2(\x87\xbe\xb3\xc3\xa4\x88\x12\x11c7!\x1e\xd6b-U\xf0UmF\xad\x08Oy\xed\x88\x94\xbf`\xecRQ\x9b\x12\x15\xbe\xaa\xcd&\n\xc9S6\x13\xbbgD[\xe8!\x01\xf0\x8e\x95.Wr\xee\xb8\x85\x94\x1b\x96RB\xfe \xb8*\xab\xb7\xc2\x82\xca\xcb\xdc\xa9\xe7\xf3\xadu\xaa\xdd\xfd\x0c\xdc\xed\x84\xf46\x18\x94J\xbe)&\x82\xfa\x08\xbf\xeb\xa1\xc6Z%\x9f\x07K\xce\xb1<\xbd\xb7\xf4\x04dv\x08\x92\xa0<.:\xb6?\x8f\xe2\x89\xc9\x9c\x01h\xd1\x1b\x87\xf9x\x8ey8\xbaZ\xa7ENR&\x92c\xe8rs\x93\xab \xfb-\xe9\xba\x9e\xac>\xdd8XiF\xd8S\xfa\xf0\x0c!g\x1a\xd3\x9e\xfc\xcd\xb0\xc8$\xea\xce\x16\xa6)]\x0c\x1bv\xf6\xe6\xf3\xd0c\x06\xac\x94\x06\x9f86\xb3p\xa1>\x9f:\x14\xf3\xc4\x89\xae\x97\xd85\x9a\xd8\xf4\x9d<\xef\xbf&\xa5a\x96K2\xf61\xdbNf\xe4\x13M\xc1\xbd\xe1\x1b\x12\xca\x04\xdb|$/\xb77\xc4\x1f\x0e\xac#7\xb8\xee\x9a\xbfn\xeae\x0f\xfb\xc8k\xdb\x92\x85&\xd1\x98\xd1\x0ej\xb4\x03r\x0b\xef\xcc\xc3dO\x1a\xa4$[\xd2$C\x1b$\x1b\xacT\xb4\x1d\x1f\xd2\x80.I\xe2:?\x8c\xce\x1dq/e\xc86\xe7\x0d\xc6\x18_\x8c\xe7a\x9a\x91|\xa7\xc8\xa7\x83\xef|D\x89/\xd2\x9a\x06\x19I&.#@\x8fGE\xa9>\xf3\x08Jb\xd3\xb1\xef\xf5\xc0%\xfb\x92\xcb\x06}\xe0\xf1\x18\x83\xafS\xba8\xc33D\xb6\xcf8e\xdf\x9d\x9ek\xd3\xdc\xa7\xf2v\xfc\x93'\x90\x97\xc6 !\xa8\xe3\x95y\x9e^\x94uIg\xdap\x1d\xc7\xf3\x82+:\xb9\xf7L[x\xa2\x16L\xa34\x93\xcdc1\x13\xc4k\xdb3\xa3\xc7\xf7\xfc\xbc0G\xe9oW\\\xb1\x81\xa1\xb8\xbf\xe4]l\xb6\xefw\x81\xde\xc8]7\xd70 \xd8v\x8c\x00\xca-\xads\xe2~\xbd\x9d\xdd\xcc^n\xcf\x80\xa2\x8f\xf0\x0e\x06~k\x0f\xd3\xf5\x9c\x97\xdb\x1b\xb3\x97\xdb\x1b\x0c\xfck\x03#$\x01\x86\xdb:\x13.\x19.j\x91\x18\x82\xc9\xbd\xe62\x82\xbe\x9e\x9d\\\xdczW\x97/\xb7Qo{\xb9\x1d-f\x90\xa5\xe3\x1dg{\xa3\xf1\xe6\x0eh\x82^\xf2;aL\xd2\xdc\xdd\xf266\x9c\x97_{\x9e\xa6\x83\xc0\xd4T\xae7\xed\xf3N\xea\x11o'\xb6\x07W36\x86\xe7\xa3\xfe{\xa3 \xd4\x1f\xc5Ir\xc3\xde\xf9\xe7\x9fl\xd1\x12\x1f\x8e\x82\xb3\x1fO\xde_\x8e\xde\x8c\xb8\xac/_\xec\x9f\x1c\xd5_\x9c\x8f~=\xf7\xbb\xa9\xa1\xf1\xf9\xa3\xe0\xf5\xe1\x9b\xf3\xd1\xe9\xe5\xde\xfe\xfe\xe8\xed\xb9y\xf5\xd5s.\xd5\x8b\xb4\xaf\x0fWFE\xa9\xfd\xee4\xb4\xdfs\x8d\xf6{\x8e\xb1l D\xe8U6&t\n\xe70\x14\x07\x9d\xa6\x86\x88\xa6!\xc2\xd5h')\x16W$UM\xdd\xa4<\x02\xe2\xc7\xba-\x9f\x07\x0ep\x1c.\x0c)O\xf5\x88\xf9\xd8\x12\xb3\x1a\x973\x9b\xcf\xcf\x17\x04]+\xd8\xff\xc1\x94\xa6\xa3p<w\xfba\x16p\x9d\"\x85\xdd\xf1\x0f1)\xdc\xb2\xc9\xae4\xc5\xc7\xfd\xa7\x18%\x01\xbf7\x93\xffH\\\xe7\x8aLiJ\xce\xc2$\xca\xa3?\xa4\xa9%spU\x08\x0e\xb6\xe6\xe2>N<\x95\x0c\x8eQ\xfdT\xdf\x9cb\xe8/\x8d\xcfJ9\x7f\x86 \xce\x03\xc6\x99\xf6\xab\xe3 \xed\x91H\xaer\x07\xcewJi/S\xfb\xf1\xb1\xb3\x89R&\xb3@f\x8a`\\\x05\x969\xe1\xb9\x1al\xf9\x7f\xa5\xf4Q\x91m\xddA\xa7{J\x8a%M\x1a\x13\xc2\xe7\xa3\x83\xfd\xf3\xf3\x8e!\x18\x8eH\xe4\x13\xc61\xbd%\x93\xf3p\x96\x0d!\xb1\xa9f>\xac%\xe4\"\xfd\x80\x01\xff\xd8\x1f]\x8b\x80\x8d\x80\xab\xb2k#\xach\xc2/ \xa2$#i\xbe7\xf9\x18\x8eI\x923&\xdeG\xc4\x01\\i\xed\xba\xae\xb37\xcdI:Bg:\x06\x90p\xc1\xe0\xb3\xc9\x94\xcd\xf97c\xadk\xff]\x9b\x12\x1eT\xb0%\xd3\xf0\xd7\xca1]\xf9C\x0f\xbb\xb6\xb1\xbd1\x0br\x92\xe5.Q\x97\x10\x97\x0eV\xd2\x9d*M=\x18\xc74\xe1\xaa\xa0m\x03\xaba\x99'9\xa9:P\x06\xe8c\x1d\xf4\xc1y\x12\xe7/\x1c\xcf\x93\xa6*\x99\xeaA\xdd\xf7\xb9\xb8X\xfeS\x1fO\xd9\xde\x0f>8\xc0$G\xf9\xe2+\xfe\xc2\xafW\xa8\x82J~\x01,\xa8\xdf\xdd\x81\x84\x0d\x93-\xe2\x90\xd1\xa3}[\xddZ\x85\x0b\x9c\xae\xc8\x05V\xd6\x07\xedpiO8\xda\x13.\xea \x17\xf6\x84+\x1e\xcd\xf2\xca]\xbe>;<\x82j\xc5a\xba\xb6>\x86\xf4v\xcc\x15\xdd\xc3\xda\xe4\x1b\xb5.\xa0\x89\x0e\xfa\x970.z\x82_\x13\xb2d#\xd2\xc7ki>\x82\x15T(\x18\x0253\x04\xd0\xebJ\xea\x83\x8ebl.\xc2\xd2\x11\xac@_\xd6n\xb4\xc8\xec\x92(k\x84\x17\xc5\x07/H\xc2\x05\xf1\x91\xf4\xf2\x00\x0f\x98\x82<\x8d\x16\xae\xe7\xf3\xa0\x85u\xbe\xeaC\x16H\xd4\xf2\x04P\xfc7\"\x8f'\xeb\xc8\x02\x89\x1e\x91J\xb3\xc9m\xf7\x94\x18\x96hJ\xe6_W\x1a\x92\x07d\xb8\x85Q\xe4o\x87G?8\xca\x8e&\x05\x9d0\x88&\x1e\xd29\xfb\x8b\x13\x14w^\xab\xbc]1\xa0]\x10.\x97\xf1=\x1e.\xbf%.?\x8e#\xfcG\xc2\xff\n\xcbL\x12\x91\x07/\xa1\xe0\xbcA\x95PD\xb5\x88\xa3\xc9\"c\xc8\xc7\x90\x12Q\xf7\xa0\x93\xca\xe1\xf1\xdbw\xe7\xbaa\xf2\xbb\x0e\n:\xf0f\x1d\xb7\xb6\x0bs\xf9\x05E b\xad`\x7fy\x1eF\xc5\x8d\x92B\xe3\xc7\xa0{\xd8\xc8\xb0\xb9D3\xec\xc4\x07\xc7Qp\xd5\xd9\xa2\x9d\xcb\x83\x18\xaeB(\x18)\xf8\nY6\xf6d\xad\x1c(\xa7\x03\xfe\x9b\x0d\xcfM!J`\x8f\xfd\x8d\x7f]\x13\xcf\xe8P\xd9|\xd8G\x05#d\x04\x87\xff\xa4\x9dl\xcf\xc3\xa3\xb6'O\xe0\xdf\\\n\xa0^\x8f\x99\x079\xfb8P\xac\xfe\xebc\xaa\xf7\x1b\x18\x88\xc1\xad\x95d\xc0\xa9`E\"\x00\xd1\xcc\x19V\xee_\xa7\x1chN\xf8\x18+\xa4\x12\x82\xb4\xd3w\xcc\xa0\xb6\x86\x97~\x15RPn\x0eT\x04\xc1\x1d{\xaa,0\xdc\x80\xc8m7kw\xe4\xc2\xa4 |\xe8\xa6b\xf5\xc1\xb0\xa2\\\xe6\xfe\xd7g\x18#\xa8\xe3L\xaby\xea\xd5@\xf7\xea\x82N\xd3T\xf3i\xaf\xf8\xd4\xf3\xd5\x93\x01\xba\xb4\xc8h\xea\xb3\x82\xb8\x0f\x9d\x83\xb1\x97\xb6$@\xad\x94alb\xa5\x03\xa5\x03U2\x04b?\xd7\x92wM\xfa\xc8Tl\x13:b\xed\x99\xa9\x07\xf9}[\xa6:\xc3\x80>\x07'G\x0e7\x87\xb0\xc1\xbe\xc0\xef\xa6AB\xeer.X\xbf\xf0Z\x0c\x98W\x14\xa1B\x92R\x18;&n\xc2\xb5\x9a\xa4\xd4\x8f\x14\x8d\xff\x049CU\xe6\xf9p\xcajX:\xde\x9a ]\x97\xf5\xb3`\xbcxr\x17d\xa2\xb1\xbe'|}g\xa3\x8f\xf4\xddG\xf2\xee#u\x87\x1d\x924f#\xe4Qqa\x07\x9c\xdf\xef\x9e\x8d\xd7\x06\x83\xdf\xef\x9e\x11\xc6\x88K\xf3\xceZ\xa5\xeb\xe3\xdetH,\xf7\x0b\xa0\xed\x0b\xab\xd4\x0fr\xcaO1<\xc8\xe7)\xbd\xc5\x83\x1d\xa68\x8e\xd2\x94\xa6\xae#\x8b!\xca \xa19\x84%\xf2M\xce\xb0\xe5\xf7Z\xbd\xc5AU_t\x19\x0b\xd7~t\x12\xa5\xf9}\xf5E\xde\x90\x0f\xe1\x15M1N\x8d\x81x\x8c(]\xab\x1d9t\"J\xb5\xbd\xde\xbb#\xecp\x98GcnHa\xc2\x8a\xce\xec\xd2\x84\xeb\xb6\xe6\xe8\xec\xb1\xa55\xac\xde\x9c\xdb%w\xb2\xf6\x04\x19\x18\x1a\xa8NtV\xdd\x1b\xc1t\xb3M>f\xcc\xcf\x91\x9a\xf7\x08\xba\x916/1\xd4M\xdf\x1e\xf0,\xbb\\HK\xf8\x19J} x\xf5#\x06\xc5a\x98\xed\x04k\x9b\x9eW\xb7w\xbf:9\xf8M\x88\xcb\x95\\\xbd\xcb\xf7J\x18B\xc2\xb4\x03\x92L\xf8\x99Xj:$\xb2\x0bdH_\\\\_\x9b\xe0\x7f\x03\x99-\xb8\x14N\xb6\x1d%\x7f\xb7}\xd5\xac\xc9\x91\xa3\x80+\xea\xf0^\xf3\x9b2\x06W \xfd\x14\xf0\x93\xe6\x13\xb6}\xa3\x95\x8b\x1f\xef\xe9{P\xdeC*8kJ\xbc\x17\xb8\xef\x15u\xae\xc2\x0dL\xb4\x86h\xca]x\xd8T\x1f\x13\x97rnB\x8d\xdc\xe4\x80T\x85\x9c\x9dP\x91\x8c\x98\x1a\xfa\xc60\xb3\xb0\xdae\x18\xc4\xacCG\xc1\x11\xb2-\xf8'~\x9e\x904<\xf0_\x80\x8a\xa6\x17\x1e\x845\x02\xe9\x81C\x90\xf4\x82A\xfb\xcd0b^\xef\xb9V\xc2\x80\x7f\xe3]:\xf3e\xaaK\x1f\xc2\x15&Z4\x88G\xb3\xea\xd9-#\xf2\xd2\x94\xd8\xaa\xf9\xc0\xd6dF\xf2}\x9aL\xa3Y/\x1b\xd8\x1e7\xd2r\xdfdMly\xd6\"\x06\x8aj\xb7ij\xb2rW\x95.\xcf\xfaf\xc3\xc9\xe4GJ\xaf\xfb\xf2\x7f\xfd\xd9\x03\"\x1c\x8f\xa3v\xf8\xa9\xd4\x9f\x7f\xe2^\x84'Sh\xc6\xcc=\xcdU\x8cj\xf3ju\xc1\xf4\xfd\xda\x99\x97^\x90n4\x9b\xad\xd4\xae\x1c\xc5\x85F\xa7Q\x1a\xde\x8b\xe3V\xdb\xc6\xa6\xd1\x0fW\xdbZ\xed\xe5\x832\x16\x9e\xce\xb6\x0c\x8b\x9c\x8a\xa2G\xc5W\x16\xfev\xfcpS\xdeSvs\x1f\x9c\xcbK\x92\x1d\xd1 \x0f\xd3S\xef\xfc\x0d7\xe0\xa9\xa9\x02\x94\xd5)O\x8cb7q\x9f7o\x15PQ\xf0\xb4Y\x10\x89\x82g\xcd\x82P\x14|\xd3,(D\xc1?\x9b\x05\x99(\xd8T%f\xf6b\x8b\xbd(\xdf\x94:F\xdc\x9ey\xf5\x06, *T\xe0\xe9\xb1.\xa8\xaf\x88\xaf\xd6\xf4\x0dlF\xd8\x05\x81\x9f\xb1\x95\xee\xca\x9e\xe5\xb6k\x9e\xee\xa6\x0f4\x10\x1f\xf6\xdc|\x1ee\xdc]\x95\x15\x84\xcd\x027\x0f./\xd1Twy\x89\xccb\xd3\x87T\x01\xf2<a\xb8\xe3\xe0\xe5\xddL\xcfv+U\xe9I\xa1\xb4\xc5\xcd|\xecmT{{\xd1\x1e\xcb5\xb9\x1f\x82\xc3c\x8fh\xec\xc1\x82\xd2:\x97\x91tW\xe1\xae))]j2\xa0\xc8'\xe7 8\x96d,\x9d<,\xc0\xfc\xf4f\xc66l\x11\xbe\xd2\xae\xd6$\xaesv3\xdb\xcb2\x92g&\xdf~(\xd3\xd48\x87\xc9\x94\xee+I\xfe\xd66-ux\xfe\x1a\xe7\x17~W\xf5m\x1a\xce\x16!w<\xb6}\x89'\xb3\x11\xc1\x8b\"\x8a\xc1N\xac\x9f)x\x85#:!q'p\xcc\x81O\xe9\xad\xad\x0fc\x0e\xb5Oc\x1b\xd4T\xe0\x8f\xa47$\xcdz\xa3e\xc9\xab\xa13Og\x7f'\xe2\x1b\xe39Y\x90\xfe\xdf\x98\xf3j\x1c\xdb\xbdk\xdd\xa0\xa9?\xca\xcen\xc3\xd9\x8c\xa4OM\x17\x9cA\xc4(`\xb0'{g\xcfL\xa7\xea(\xad\xe6\x9ct\xf3\xd4\xb5\xea\x9flE\xccz\x9c\"\x89%\xcc@\x9d\x98\xf2\xa8\xe7([\xe6\x81\xf8\xc94\x9a\"\xc3D:\x99\\\xce\xcd\xab,<J\xb5]\xff\xc2\x8b:\xe2\xa4H~\xc9X\xe1\xc1\x83\xa1\xf9s\x18\xa0\x9a\xcb/\xce1\x85\xbd\xb7\x87\x80\x1c,\xc2]s\x99\xd2\x9bhB&\x81\x83\xa7(\x9f\xa9\xcb\x19\x9f\xc4A\x11Yz\xfd\x19\xbf'P4\xa8r\x80\xda>;\xd3\x88P\xd0%\xbb>\xba\xaf\xab\xe0\xc5\x82\x93\xb4\xb4\x88\x99 \"[/\xaa\x8554]\xc3\xe4`lM\x0dM7<\x01\x0f\x0e3z6\xa7\xb7f\x92[Zmh\xe6\x01,;\x87\x18\xf7Et\x94Li\xba\xe01 ;\x88\xc2\xd2\xa1\xb1\xeds\x0bz\x15\xc5d\x08[OWm\x96\x8aqz\x96\x91N:q1\xed\x84\x98wB\xc4rg\xf8D\x0cXx\x08\xc9\xaes\xba|\x0c\x9a\xc2\x1eh\xfa\xaf\x1e@Q\x0e@\xa7\xb3\xd5\xde<|\xf0|\xe5*\xc2\x83[\xb5Y\nS\n\xa3\xcbe)\xec\xc0\x18\xdf\xfe\xbd\n\x8d\x0fy\xf0SF\x13\x14\x15\xc2Kn\xa1D&\xad\xbc\xbd\xa24&a\xd2|\x8d\xe1\x03\x9b/\xb9\xe9\xb1\xf1\xf65M\x17\x1a.-u\xa8{\xa6*\xb5T\"*KZ:Q$JZzW(\xab\xe8\xb4\xa8{\x9d\xde\x95\x89\x82\xd67bQ\xd0\xd2\xbb\xb8\x94\xd7\x14\x88\xa6\x08>n\xbc]\x8aF\xb6\x9a\x8dp\x01\xed\xdb\xc6\xdb\xb9\x04\xdfj\xf5\xf3F\x16\xb5\x86\xb6\x90%\x9b\xdf\xb4\x061\x13\x89\x8a\xb5\n\xe1\xfd\x97U\x08\x97\xe5\xba`=\x08\xa2\xecT\x84\x85\xf6\x95\xa20\xb9\xf7\x1b\x90\x96bN\xad\x86\xa6x\xa1\x0f7\xe5\x9b8\xcar\x15\x82\x91\xb5\xedw\x98\xdc\xd7i\xf5\xaa\xe5*t\xa3w\xf2\xa1\xc9\xfe<Lf\x0d\x9d\xaeq\x14\x98\xe1\xd2h'\x9b\xba&\xf7zO#\x19G\xbb\x9d3\x89k\x05CTF'\xc1\x9b(\xcb=\xd5\x92\xa2\x9b\xfdK\xe3\xec\xf3\x06\x82(c\xff1(>\xf9\x86\xb6]\xcd:\xff\x1c:\x7fK\xb5\x97:\x7f\xd6,\xd0\xe9\xfc\xaaF\xfe\xa9:\x7f\xac\xb4U\xe9\xfcuK\x80Q\xe7/\xd3J\x1dD\x93#\x1eG\xb6\x05\xf9\xd7\xa9\xff\x93([\x86\xf9x~\xc8t\x860\xe6\xceP\xc6:\xdc\npc\x07\xe2^\xd2\x92\xc0\xf5\x1a\x17\x1aCS7\xe9\xe4\x9d:\x16\xff\xf7\xd9J\x90\x84\xbb\xd0\xc3\x97Z\x17~:\x90\x18\xd5\x90h\x91\xd8W\xb0\xcb\x14\x08;5\x1c\x0e\xe4AN\x7f\xe2\xd7\xaa9{g?]\xd3a\xbb\xf4\x8b\xb4|.F\x17\xbb\xfc~i\xe9\xfe\x18a\xb8<o\x86Z\xd6c0\x8da\x17\x1c\x07\x8606Wa\xec3t\x97\x0cR\x11=\x1cX\x87\x18\xd6\xc1\xc1\xbf\x960l\x97\xf24\xf8\xae\xd3\x12XL\x87\xce2:\x9cY\xd8o\x18(\xff\xf3\xe0\xab4g\x91a\xe5\xa6m\x08\xa5\xc4\x9ei2\x84\xc2\\\xac\x12\xc6\x10,\xa4+\x16\x8d\xe5\x8eA\xc5\xb14\xc1\"\xe5#9\x96\xfe\xe6\xed\xc3\xea\xb2\xf2X\x91\x91=\x89C&\xce2\xe2\xbb\xc2\xad]'Z>\x9a\xbf\xe0\xa6\x80>*\xa9\x0f\xb4=\xe3\x06\xc6\xd3\x06\xac\x9di6c\x02\xfa\xb88x\xa8\xc5\xc2\xe3\xf9\xaa7_\xc0\x18\xb6\xa1x\x01\xe3\xf5u\x0f\xe2\x8b\xf1\x07\xb5\xe6\xc5X\x13kQ\xc6Y\xc4S\xe5\x1d\x03\xf3\xc3=\xae\x93\x01\x8e\xc38\x16\\\x90\xf8p\xc1\xea\x96\xc1$\xb8\x9e\x96\x96\xdbQ\xaf\xc3\"\xe9\xae\xaez\x8er\x92\x17\xfbh \xa2`\x92\x80G\xec\x0e\x18\xa0\x88\x81X\xbeC\xba4,<\xd1\x9a\xec\x15\xe3\xb2\xf2\x9d\x90\x90\xb4\xc7Sl\x1c\xa3\xa4X\xac0\x16\x81\xe7\xd6\x17\xf5\x1f@\x9bvK\x14a\xf4\xf4%\xe4\x89\xbf\x81/\xf6c?+\x08\x0f]\x8c\x96\xf6b\xb4\x9c\x87J\x99\xb8\x8b\x87N\x08\x8f\xf3d\x8c\\\x07\x82\x85\xa6\x01I\x8a\x85\xd92\xcd:G93\xdd\x15\x7f\xb8\x1e\x0c\xf1\xac\xb7\xe82U#Ou\x1d~\"c\xf3s\xea`;V\xbe\x02u\x8b\x1a\x95\x91Jw\xc1\x89\x12\xcc\x07\x84\xd7\xab;\xee%`\x90\xa8Zm\xda\xa3\x96\xb8\x9b\x80\x82ff\xe5]P\xd1\xaceF@\xb69Z,\xf3{q\xa5b\xcd\xc2\xa2\xa0\xc6\xcb\x90\xc8\xd5\xfd\xc0X\xcft\xbb\xd3\xb8\x86b\xdc\xfch\xba8\x08\xf3Pn\x80\x11\xba\xbb\xaf\xb9\xce\xeb\xb2 JD\x0c\xda\x8e\x83\xa3\xdcu\x0e1\x91\xa4]\x10\xa9\xed\xb7b\x8b5Q\x89\xd5\x82\xc6\xea\x0eEs\x96\x9e}\x12\x1d\xadNC\xad\xa9\xeb\x92\x90e~\xaf!\xc4\xfa dk\xd3\x84\xa0\x85|\xdf\x03Q\xcb0\xcbni:\x91\xb8\xe7R-CFU2\x94\xb9\x07\xffk\xf0\xd9\xbd\xc2\x16Q\xf2\x06[\x1b\xda\xfcK'\xe4\x8a\x16\xc9\x98\x9cG\x0bB\x8b|\x08\xcf\xbe\xb1@+\xa1\xe7\xacb\xe9_0\xdb\xad\xd7\x9fU\x02\x95\x16\xcf^\x02(1\xdc]\xef-dJ\xf3\xe8c\xad\x1e<\xae\x06Bc_\xcc\xd1\xf7\xf5\xc2\xdf\xaa\xf2R\x1ady\x98\x0b!\xc0(\x9c\x1d\xe6D'\x9cY\x1c\xae\xd2 #\xf9\x19k\xba\xba\xdao\x8d\n :hg\x91ri\x88Kj\x19\xc9\xb98f\xacd\xf2\xefW\xb0g\x184w\x98b\x03\xef'\x8fj\xc6k\xbd\x1f\xb0\xcax\xe5\xa5<\x11\xce\xe4/\x19o8\x994\x07\xbb\xcaX\xfb\x04\xc4\x10T\x06;p\xe9J\x8a\xeb\x12\x8a\x04\x06\x048w\xcaslau\x1e\x8d\x80\xd5U\x10\x0d\x1az`\xa1\xdfx\xff\x82\x01\xe2B7^\x9c\x15\x1f\xaefF\xdbH\xed\xe5_\xa3-\x95\xd6\xd7\xf7Q\x1c\x9f\x921\x89n\xf0\xb4,\xeb\xa1@\x19\xe7J\x92\xde\xda\x8e\xd0\xa2\x94]\x8f\x89\x7f\xfc\x9d\x9cN\x9bB\xa0\x92\xa3~*:\xf9\xd9\x17\xb2\xa0\xdau\xc4>\xba$?=\xec\xa7KR\x84\xedV\xed\"\x84\xebR'C\x84\xeaR'\x0b\x842\x99OC\xbc\x11,\xb4\xbeP\xd5\xfa\xec\x06\xd4\"\x88\x92)I\xb9\xf8\xe0FA\x94\x93E\xd6\xedhV?Q\xe9\xe1s\xf6\x8ag\xf7\xef\xf0\x1f\xcbP\xb7\xb5\x88W\xd0\xa6h\xb3&\xbc\xec\xd2v\xe7\xd2\xd3\xed\x13\xb5\xddy\xd7\xc6\xaeH\xd5\xe1\xeaR5T\x92\xb5R;\xecQKf\xdf\xed\xbe\xb7/\xd6\x9c\x85\x96\xa1\xad=\x1b\xa2\xbf\xd7\xa0kz1\xfd\x9b\xf5\xe2\x8ey\x14\x0eW\xdc\xedc\x8dGC\x99\x04\x98]\x91\xfd-\xfet=\xd8\x86\xad\xea^\xca$X\x84KE\x10\xf2\x81v\x11^$\x84\xe6\xb4n\x96\xcf:.\x96\xc9\xd9\xb75\x0f\xe2\x13K\xdc\x10xZ\xd7\x9e\x92\x8b|J \x06\xaf\xf1\xf0[/\xd6J\xb6p\xab\x80'\xeb\x82j\xe5\x9d\x8f\x8b\xe5\xc5\xe6\x07\xbe\xe3\xc1:P\xcb\xdd\xe4\xce{Y\x1dsi\x1f-2\xa2\x0e\xa2T}\xbf>f4\x19\xf0\xed|\xc0\xf4\xeb\x01\xdb.\xad\x0e\x81\xa6\xeeY\xdd\xcd\xa0\xfbd\x05Z\xa7+\x1dF*)]\xf7]\x81\xfd\x04{\xf9\x94$\xa3\xaaO|)\xd8)\xc7\xde\x1dy\x9e\x13Y\x96\xbf\x19\xc7V\xf3\x124\xa6\xf6*O\xe0*O\x06\xd9\x02\xb4\xb3<\xe0\xfaH\xc7\x86K\x93\xfd8\x1a_\xf7\x10^\xd4\xa7\xc4^\xa5\x87\xb9]\x88\xb3\x11\x9d\x03\x03pL\x9e\xa8^\x90S~\xf4\xf3X\xd4\xad\x84\xb6p2\x01\x07\xd6\xab\xcd\xab\xc1\xf8\xb8\x1b\xa1\xf1[%B\x91#\x08\xbdM?06\xee\xbd\xc9\x04\xd8g\xb5\xc3\xef\xb4\xb4\xbc-R\xb2\x8a\xb5\xa5r;\xebeo\xf9\xdf\x81\xdf\xca\x07~\xabj\xa9\xff;(\xd3?\x7f\xd1AY\x97\xceB{\x1d\xa7\xd5\x0f\xca\x0c\xa7\x0bx\xf2%\xf4\x9b\xb4\x9f~\x13\xf69\xcc\xea\x10#\xc2\x9e\x1ba\xba\xbaX/Dz\xa5f\xda\xcfX.\x82\x08$\xb6\xdbFuA\x9d\xbb\xc6MS\xba\xf8\xe9\xccs)jYx\xff\xd3\xc9S\x9e`e\x1a\xc6\x999\xe1\x0b\xe8\xa5\xf9\xb2\x1d\xdb\x81\xd7\xaaB}\xb7I\xe1\xd3L\xe4\xa5\x07\xf1\xa3\xf7\xec\xde{\xb2\\\xa1\x9fl\x1f\xb7X\xc6\xd9\xc2\xc9H\x8esrN\xcf\xc2\xc52\xeee#\xaf\xbc\xbb\\\xf6\xe5\x19\xdb\x1cxm\x8e'\xcf%5w \xfd\xdd`\xa2\xb5\xcb\x1bEF\xd2\xf2\x990\xb4:\x0f\x93ILNVi\xfb\xa6\xccw\xdc\xed\xbb\xa1\x0c^\xe7\x03\xe8\x1b\xbd\x85\xe132\x80\xcf\xe9y\xb9V1\x81\x86\x9dO\x9d\xc3\xf2e\x9bdtw\xb4\xeb8\xf8B\x86\xbc\xffbN\x96\xbb\xce9\xb9\xcb\xf7R\x12>\x92\x9b\xd4\x0c\x0c& \xda\x93\xe50R\x9b+\x06\x04c\x1d\xf6\x08\x9e\xc4\xd8M\x16\xfda\x0d\xcfkF\xbddX\xac\x05d\xc3\x1fi\x94\xb8\x8c}x\xfd8\x97EGm\xb0\x89\xfa\x06\xa0\xad\xf5(w\xbe.\x11\x1f\x81\x1fu\xe3E\x1e\x86\xe2E\x87\x7fz\xc1\x818\x91F\xa7\x89\n,\xad\x17\xf0\x10\x92\xb58\x02\x8f\xef\xc2g\xbdt\xd3\xec\xa6\xe9n\x8c\xf8h\x98e\xd1,a\x8c\xcc.\xa6\xd7\x92>o\xf1\xfc\xceMuE\xe4y\xb6\xef\xf3\x95\xa6bJ\x03]~\n\x03'&=\xf3\xc2c(8\xb4Ta\xac\xe9\x1dH.R]\xa0\x89\xd6\x1b\xc9\x90\xeb$X\xa7x\xda\xc5\x9aK\xd1\x83XO\x9ck\x19\xfe7_@\x02\xdbj\xa2\x7f3\xf6@\x99\xb9\xfc\"1`\x0e\x90P\x99tG\xd2\xf0\n\x05\x8a\xdaO\x91|,e\n\xdb4\x9a\x15\x12hm\xb3L\xda\xc7P\xce\xe3\\\xa6\xc1m\x1a\xe5%D\x99}\xaaI\xa7\x845xM\xee\x19\xfe\xf5\x0b\xbe\xff$\xa8\xd6X>\xa1V\x85\x91\x07\x01u\x15\xd2\xe0\x99\xc3R\xf1\x9eG\x07l{\x157\xb6\x9b\xe6\xc5r\xa6\xd8\x14<\x02F\xbd \x14\x05[\x9b\xdf|\xab\x0f\x86Q|\x91\xbbOn{\x99\xf7\x92\x8a\xb5+{\xad\x9f\xb3\x04\x8f\xf5T\x8b\x80\x95\x9b\xc2\xa1\xed\x87IBs`\xeb\x12B\xce\xfb \xccj\xa1\xd8\xdas\xd2!\x90'}\xbd:\xb0\xa3D\xed\xd9)\x99\x92\x94$\xe32D\xdc<\xca`\x1ef\xc9\xd79\\\x11\x92@\xc4\xaf\xb1D\x19\x99\xc0\x00\xb2bIR\xd7\xabA\xb0\xa1\x90I\x87\xf8\xb0\x86\xc7\x0dJB\xc9Z\x10\x1fm8\xbb\\P\x81\x86F\x0d\xfa\x86X\x843\xc2\x98\x1f'\xfa\x93i\xcb-\xc7\xa2y$\xab9d\x93`I\xd2,\xcarSX\x05\xc9\x14\x92\xee\xd3\xbdd\xa5\xe3kU\x1f\xd0o,=s\xaf\xb0\x1e\xd2~=dO\xe9\x06\xf7\x92U\xe1\x82x\xe9\xcd\x86\xe1\xaa\x12\x9aGS\xbc\xe68,\xb7oxYU|\xf2\xa4\x02J\xf1\x88\xa8G\xbe\x066\xd8!\x08p1\xf8\xaeZP\xe1\xcb\x92\x91\x0e\xf4\xeayUd29\xb7\x89\x12\x13-%?\x93\xfb\x03zk7\xa0\xca\xa7\"\x0f\xa9C\x8a\xda\xfa pFI\xceS\xc20\xf1\xfe\x9a\xdcsdNi:&\xc7\x12\xed\xbe\xc85e0\x10\xb2.\xbe\x8a\x8b\xf4\x91\xfdcUM\xf4\xbbb?\xb8\x86\x80\xf0\x11\xe9\xd7\x1f\x1eQs\x1b6\xbd\x92\x86\xba\x84\x0f\xf9\xc8\x05^\xc4\x06/F\x83V-\x03\xfc\x8a\x84=\xb5\x0f'\xc1\x84\xf2\xf1Z*\xdb\x97^.L)\x8a\xed\xa5\x1b\x0d\xf2I\x82(\x13\xbc\x8e\xdf\xd1a\x02L\xd5)\xab\x9f\x19\xdb\x07\xcd\xcb\\\x87\xddGtg\xd3\xd7\xcf\xbf|\x90\x0e\xa6q\x91\xcd\xfbN#TS\x99\xf3\x9a\xb6\xb4\x13Hf\x8c!\xc7\xab\xb4\xafEk.\x1a\xb2}NOXz\xea\x97\x93\xd4\xa7cI\xc3\xc4$\xce\x18D|Z\xe5r\xad\xfeS\xca\xba\xec5\x9f\x98_\xa0\x86\x03\x1b\xc6J\x0c\xe3^$\x91d&--K\xec8\x81\x04\x0d\xb31\x7f!Wx\x14E\x9e\xa4\xac\x08\x0c\xa2X\xfe\xfeR\x0c\xe8\xf1i3{\x07\xdf\xc1\xa9\xee\xe5\"(\xdd\xe6\x98<\xd6f\x8c\xd8\x8en_\xa9Aj\xcd\x87\x9d\"\xa81r1\xb2\n\xf4=A\x07?\x83\xe8|\xc6\x84O w\xcb\x94d\x19\x93\xda\x17E\x96\x03\x89\xf29I\xe1\x8a\xf0\x06h\xaa\xc8\xd2>\x06\x1dv`\xbd\xfc\x90\x862I\xa5\"U\xba?\xe7N\xae\xc8\xdb\xa8\xe8Pz\xd4\x8ei\x92\xe5i1\xcei\xaaS[\xe4#g\xc0L\xef\x95F\xda\x8e8\xa0>R\xff\xb4\xbbA\xa9\xba\xec\xd0\x94\x8cICK\x92{\xbb\x02\x1bYM\xa2\x86]\xd0\xbe\x17\xf3>DUN\x8a\xe5l:\xeb\xa4\xc3t\xcf\xf2T\xa0a\xbd\xf2\x81\xf630\xbf\x8f\xe2\xf8S-\xcch\x95\xab\x8b!\xaeb`n\xdc\xbf\xe8\xb2\x97X\xac\xc9\x7f\x89K\xac\xdcH;\xb7\xd0D\\\xc6\xab\x8dF\xbf}\xe2\xe8k\x8b\xff\xcf?\xcb\x8c\x85\xb84+g[\xc5\x01\xb7Q\xd2[\x8f1\xddi\xf6!\xa9<}\xb5\x93Q~\xac1}I\xb7\x01\xb5\xe74\xbdK\x16\x9f\x83\xbc\xb8t#{k\x92Xzw\xf1o8\x97\x10\xb9\xbe\xec\xf4\xe5*\x91\x15J\x8a\x04R\xb1k\xbfM\x82\xec\x95\"\x9b\xbc\xbaG\xf5\xc6\xe68\xc3\xa3-TUNP\x1f\xb1\x9c\xef\x8a\x90\x0fB\xab2\x03\x16\x02\xd0\xde\\\x86PQ\xb2,\xf2S25\xc3\xc5}\xcd1\xf2\x916\x9c\xff\xf4I\x1aUZ\x7f\x89\x07y\x19\x96<\xf5\x98\xb8\xb3\xa9XA\xec&aR\x9a\x84\x13n\x12\xc6\xac\x85\xf6\xcfK\x1d\xca\x08\xf4\x80~/\x8e\xa0\x18\xc7\x07G\x12\x85S\x1aQ}pJ\xa2\xc0d\xd1u\xa2\xc0\x83\xfb\x16Q4\xde\xf2y\xe7\xed\x8b\xb9\xe5?\xe4k9G\xd6\xd3\xffqG\x0cKt\xf3\x86]\xcb\xdc\x95_/\x1d\x01\xc4o\xfd\xbe\x06C\x08\xfb\xb6g\x88\x17\x0eC#\x910\xba\x98v\x0c\x89\x95\xd3\x8e.0\x1c\x96\xe3a?\x8c=)z\xb5T<j$\xe8:om?%\xd3!d+7.\x8882\x9cT\xe6\xbe\x90\xf2\xad\xde\xac+_\xa2\x94\x0c\xaf\xc19\xf5\xbd\xf7a\xec\xc3\xd4\x87e73k\x9e\x06\xb6\x8f\xff\xea\x83(\x137\xf2%\xd2`$\xe2\xda\xad\xe6>\xadB\x99\xba\xb4(r\xaeueb\xe8\xba\"\xf3=\xd8\xd6\xdd\xd7\xad\xcd\x06D{\x93h\x8b\xc2\xad-\xa3\x0d\"w\n\xd9\xc1\n\x97\xf8W\xc7\x99\xa5\xe5\xae\xa0\xdc\xd3\x9d\xd1\xdd\x92\x8cs2QM\xfcmBIa\x07\x8e\xc3\xe3v\x01cz\xce\x85\xf0\xf09\xbb_\\\xd1\xf8\x83\xa6~\x04;\xb0\xf1\x7f\x7f\xcf\xd6\xff\xfc=[\xffjc\xd6\x86\x08\x11\xe2b\xb0\xfea\xf3\xeebs\xf0}8\x98~X\xffjC\xe3\xe6T \xe4\xe6\xd5\xc5\xe6\x96\x01\"\xe3\x10\xf4bs\xf0\xad\x01\x841A\xcc\xad\x7f\xa8\x93\x1d\xd8\xde\xaa\xa4f\xa9\xe9\x81B\xe7:\x11NM;R'\xc3\xd7\xed\xa6\xa6\xfa\xa62\x12OY\x0d\xf5\x7f}\x9b\xac\xa4\xdd,\xdb\x80\xc6x\xf6\xcb\xfey-\xe7\xd9\x91\xd6\xa7y\x949\x9e.\xec\xf2\xa4R\"+\x16,\xd3\xe4\xb4\xc1\xe7\xb0\x03Ga>\x0f\x16\xe1\x9dF\xac+K#\x8d\xf8\xd2\xef\xb6'\xef\xf028`\xdbNBou\xf2\xa7r^\x07\xea\xb9\xd8L\xaf\x7fH\xddC&\xba1\x1e\xa8\xac\xad\xf1\xac\x18\xb5 \xd2d\xddiz\xa7\xea{\xa3\x89\x9e\x08\xd2\xac\xa0\xc9\x97nK\xd3\xc2\xeat\xebX\xa2\xbe\x93\xe1\xba\xab5\xde\xed\x16\xd0hD\xa0BC\xaa\x066\xc0Z}\xf2\x04&B`\xf3@{i\xe5AM\x13\xa4\xb1\xcdc.\x15KF\xa9\x9b2\xa8PmBdF)\xdc\xbdQ\xe5/\xffF'U\x93\x17\x1a\xec\xc0\x8cm\x86\xbb\x90\xc3:\x8f)\xd6u\xc6\x0c\xcd\x0cJk\x9a)\xac\x12\xe6\x13\x18\xc2\xba\xe6\xf3D\xb8\xdc\xf2\x84~\x11\xe6\xf33\x1f\x97\x16\"\x1d\xb4\xe5,\x90\xcdp&\xc1`\x17bW\xe4!u\x9f\xa2\x86\xba\x0bOa\x08\xdf1l\x84\nX\x8a\xfdk\xd0\xb3\xfaK\xf5\x8ci0\x17\xed\xa1>\x1e\xd1\xf9\x10a6\x99\xc2\x87\x0c\x85\x13\xf4w\xd7\x0b\x1cSn\xb2\xd3\x96--e\x13\xb4\xd9\xebIH\x9fpLo\xa8K\xbc\xc6v\x02\xea\"\xbe\xea\xf6w\xb4\\_b|2\xb2Jv\x8ca*\xe9\xdbx\xa0\x17_\xa8x\xdcr\x9e26\xae\xa1Js\xa75\x91;\xe5#;M`\x00\xb1\xb5gJ\xc0\xbd\x98\x11W\xc2T\xb6\x9c\xff\xb5\xcdu\xb7%zB\xc0\x00\xc6\xac\xac\xad\x04\xd8\xfax\xdb\xa9\xf4/l\xe1\xff/k\xf9\xc6\x8c9\xca\x18\xd5f$\x17\x82\x99{\xeb\xf7\xdc\x05K_V\x18\x80\x8b\xb8\xea\xbe\x9c\xba\x84]\xb8q\x13\x1fBYi\xec\xa1\x05\xdf\xb8a\xae6\xab\xa3\xce\x9d?S\x08i\x02\x98\x1dk\x17\xae\xf89\x82\xdb\xa4\xb4b\xb5\xaf\xdf\xf5\x99/\xf3JHx\x1c\x06\xcb\x8cR\xd5\xa5\x8c\xe7\xe4\xe2.\x10L63EJQ\x1bP\x086\xf3\xdaV\xfe.\xb3\x86\xa80\xe6_k\x13N\xee\xf90\xad\xf0\xa9W\x14\x01g\xd6F,\xe2^\xb42c\xed\xcf\\\xb9\xa6\x00\xfb=\x17l\x86b\x8c\xaeq\xcf\xd7\xf4\xdc\xe8\xc5\x95c\xe4\xe8\x1ccbn\xfa0s\x85\x15\x06\xf7\xec\xb54\x88 \xe6f\xe0Y\xb0]\xb6[;\x8b\xf0\xee}\x18\xe5\xdc\xfd\x8cq\x98\xb9{\xef\xa6\x81x-[B\xc3{\xe8\xe3&\xee\xe4i\x18\xc5\xc8K\xd1em\x17\x9b\x96/a\x08\x13L\xe0\xd7\xffhT\xb1\x00#\"0)\x98\xc4B&o_\xf1\xebG\xb1X\x15\xd5\xd2ic\x87}\xbd\xf7\xb9\xafn2v\xa1\x80!\x8c\xdc\x85kH\xf0U{\xa9\xb8\x87IW \x1f\x12\xf7\xd9\x96\xa8\xdc\xa1\xe5I\xe7\xc2z\xf7\x9c`#\x8c\xe3\xe0c\xe6\x0c\xe1\xf9\xf3\xe7~\xab\xb0\xc8\xe7\x1b!6\x9aq\xa8\xa7\xcf\x9e\xea\xa1\xd0\x88\xc7a\x9e}\xffL\x0f\x93\x92I1&i&\xc1\x0c\x1f\xccd\xe2! \xf7\x8d\x01nI\xc6\x83\xdb4\\\x0ej]|\xf6\xfd?[\xf0\xfc\x10)k\x8e\xa5\xdd\x01 8'\xf1\xb2\xec\xe9\xd3g\xed\x01I\xc0\xda\xb8\xbf7\x82\xd5\x87\xfe|\xb3\x8dE \xd9\x18\xfd\xf3\xcd-3(C@mH\xcf\x9b&\x06'\xd8\x98\x10\xb2\x1c\xc4Qr\x1d%\xb3\xfa\xb8\x9eo\xb61[\x83V\x06\xf7|\xb3\x8d\x83\x1al\x1c\xde\xd3\"\x97\xc0m\xcc\xd6\x80\xcb|K\x83<\x9c\xe1\x1c.I\x1a|\xcc\xee\xb0\xf2\xb7}+7+\xb6'~Bo\x93\x98\x86\x93A\x91\xc6r\x96\xbekA\x914\xad\x93\xc6\xd6\xd3v\x1f\x18\x10\xdeG\x18\xe4i\x98dS\x9a.H\x9am\xcc)\xbd\x16-?mO\x95\xa1R\xedGB\xf3\x01\x9d\x0eP\xc9\x16\x0d\xb5\xc9\xa3OC\xcb0\x0d\x17$'\xe9\x80&\x84Nec\xed\x89\xeb\xd3\x18\xd3d\x96\x03\xe9\x0e*\xdbj\xcf+kK]\x04[\xedE\xc0@\x1ak\xffi\x9bN\x19Ts\xe9?m\x13(\x8f\x9dP'\xcd\xf6\x8c\n(\xba\xccxV* \xd9\xee\x1c\xa7\xdb\xc6\xce\xa0YF\x02N\x1d\xea\xd36\xbd \xa8\xe6h\xdb\xd4$\x00[\x03n\x0f%\xa6\x8dm\xe6\xbb6Rh\x98=knn\xed\xceq\xa8\"\x9f\x0f\xc8]N\x92\x8cAo\xe0\x06\xda\xdct44\x83\x95\xcb\xe3\xc5l\x83\xf1\xa0\xabp|\x9d\xc9\xd5\xa7\xc1F\xb3\xce<\xcf\x97\x03\xd6\x01YG\xc3M\x9au\xd4\x89\xd6\x90C\x13\xbc\xda\x1c\xd8vQ\xf6\xad\x8dVs\xc5\x8c\xa7X+\xfb\xd8\x8d\x8b\x94\xfc\xbf\x82d\xf9\xe0\x8aN\xee\x07d\x12\xe5\xb4\xdc\x93\x9e\xb5\xf7\x04[\xed\xb2\xc3m\x8aiV\x13\xdd\xac\xb2\x1d\x95\x9fl\x13\xaf\xa1n\xf9\xb5\xf6\xb2\xc0\x1a5n\xf1\xcc\x80\xfc\xda\x04\x19F\xdb`\x7f\xcf\x0d(m\x92\xe1s\x03y \xe3Sh\xb8E\xbe\xedmJ[OO\xfb\x86\x8f\"\xb0\x82C\\HQN\x16%\xde\x0d\x0b\xa0YQE\x98F\x04\xd1\xd6Q\xa38p\x1b\x93D\x91\x01\xe3\xcd\x06\x16az\xcd\x98\xa1\xfc\xaea2[\xd5\xe8\x84\xc4r\x80\xcf\x0d\x84\xd5\xacD\x938J\xc8\x00\xaf\xb6\x859M\x07W\xe1dF\xe4\x97\x0d\xb4\xd6l\xa4df\xd5B4\xac\x89f\xcd\x1b\x9e\x02r\x90\xe5\xe1bYV\xd6\xec\x00 \xd6\x8aINjs\xb2\xd5\x1ef\x86\xb71\xb3\x8d\xa9\xc0\xdf\xd6\xf7m\"\x910\xb5\xad\xba=\xbd\x8c\x06\x9b\xdcF\xd3\x18\x83R[\xd2\xec\x94\x08\xd3\xe04\x9a\xcd\n\xc1\x1aD\xfeT#U\"\x9cF\x9c~\xde&k\x99\xd5\xeecc\xb4m\xc8\"\x8f\xe2\xba\x8c\xdc\x9e\xc4\x9b\x88\xdc\xd6`\x9e\x1b`RJ\xf3A\x94|$\xe3\xbc\xec\xdcw%\xa46]\x0d5^\xd8I\xdc\xa8fly\xd0\xd4\x8e\xda\xb5\xa5\xad9\xbd \x8d[Z\xfc\x06M\x0e\xeb\xb0U\xbb8S\xbf43\x8d\x92 ,\xf8\x0d\xa1\xaf\x1dX\x07\x02\xeb\xe0|\x1d4\x0d\xbdR\xd7V\xfa'\xff\xa2\xc15\xb9\xb7\xe6O\x16\x95\xc5\x11\x0e\x83v\x95\xcb[\x0f>\xd0 %\x19\x8do\x08St\xeb\x17\x1d)+\x8d\x98\n\xbe\xb5\xf9\x0d\xc7\xee\xc3\x07\xef\x1f\x0f\xde\x8b\x7fll\xfc\x1f\xc8h\x91\x8e\xc9Q\xb8\\F\xc9\xec\xdd\xe9\x9b\x9d*\xc3\xe1\xe0\xaaH&1[\xe7\xc1\"\\\xfe\xff\x00\x00\x00\xff\xffPK\x07\x08-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8\xec\xbdys\xdc6\x9a0\xfe\xff|\x8aG|w\x152M\xd1\xdd\xad\xc3:,k\x1d\xc7\x9e\xf5\xbb\xf1Q\x963\xf3\x9b\xb7\xa3UQl\xb4\x9a1\x9b\xec\xe1!Y\x13i?\xfb\xaf\xf0\x00 \x01\x10 \xd9\xb2\xb33\xbb5\xacT\xac\x06A\xdcx\xeec\x0b\x16U\x1a\x95q\x96\xba\xa5\x0f\xc4\x83\xdf\xfe\x00\x00\xe0dW\xbf\x92\xa8t\xe0\xf4\x14\xca\xbb5\xc9\x16@\xbe\xac\xb3\xbc,`{\xdb\xf4v\x95\xcd\xab\x84\xc0\x19\xff#\x10\xb5O\x81\xb8\x1e\x1c\x83#\xba\x91?\x9a\x93E\x9c\x12\xda\"\xfb+\x08Ws8\xe3?\xdc\xd9\x05\x0e\xe8\xb8k0g\xe2\xaf\xe0\xfc6\xbc\xbe&\xf9\xcfo\xce\xcb0\x9d\x87I\x96\x92\x0f9)HY\x0f\xa1\xec\xab\xf3\x87\x07\xb7\\\xc6\x85\xdf,\x89X\x8e\x9c\x94U\x9eJK%^\xd0\xe7&\xcc\x81\xc0)\xfc\xf6p\xf2\x87\xbaPT\x85\xd4\xcd\xe5\xca\xf4\x89\x17\xe0\x92Y~\xe1\x89v\xe9\x0f\xb1b'JU\xdavLG7\xcb/h\x17\xcaKl\xeb\x18r\xbfU\x9a\x1c\xc3\xd6\xa4]\xcc\xbb8\x86\xdf\x1e\x94w\x0fj\xa7|T%\x1dU\x14&\x89\x1b\x8b\xc1\xf9\x10\xfb \xfdJ=\xfa3\x81S\xd8\x1aK/\xea\xd6\x9anx\x9bi\xb0\x82S(}H\x83\x88N\x8b\xfe1\x87S\xf5\x10\xfa\xd0Z\xb24\xc8\xf8\xf9\xbc\xbf\x87\xf7x\x1c\x02vL>\xe4\xd9\x9a\xe4\xe5\x1d\xff\xb2\xbdBQ\x96.\xe2\xeb*\x0f\xaf\x12bY\x96\xb4Z\x11\xf1~\xdc~\x7fM\xcac\xc8\xd5\x15\xf3\x9a9\xd29\xa4\xca\x1c\xf4\xd1\x8b\x13R\xd2\xa3^\x06\x97\x97\xa4x+\xeeK\xeb\xac\xc9\x8f\xd8 :\xd7\xb0JJu\x0cp<\xec\xeb\x01{\x9d\x06s\x97\xf8\xe0\x84\x0e]d\x1f\x88:\xbdL\xdf\"\xbd;\xde\x0c\xdf\x99u\x9e\x95\x19\xbd\xa9\xc12,\xde\xdf\xa6b\x8f\xd8i\xc2\xef\xd5\xf6\xd7p\n\xce\x93y\\\x94\x8e\x0f\xa9\x9b\x06\x14pL\xc7\x07\xac\xda\x83;\xd3\xceG*\xf7\xefT\x05\x81\xa2\xcc\xe3\xa8tN\x94[\x99\xc3)\xa4\xee\xfe\xd4S\xf7\x94^\xa8\x99\xf39N\xe7\x8e\x0fNN\x8a,\xb9!\xf4\xcf(K\x8b2\xaf\":\n'N\x8b2L#\xf2~A\x7f\xads2\x8f\xa3\xb0$\xec\x935\x05\x1b)\xd6\xe3[s^\xde%\xf8\xb2\xa0\x7f\xbcH\xe2\xb0 \x85s\xa1\xf6\x9ca\xcfE\x14&a\x8eu\xc9_+\x92F\xf8\xdd*\\\xaf\xe3\xf4\xda\xb9h\xe6PJ`\xb4s\xf9\xe9dS\x1f\xaa\x936\x9c\xa1\xb7\x8c^\x9a\xdf\x1e|\xb1=\x9f\xc9]\xe1\x12/Xd\xf9\xab0Z\xbau\xd3\xadvE+;\x138==\x858\x88\xd39\xf9\xf2~\xe1\x12\xcf\x83r\x99g\xb7\x90\x92[\xc8\xdd\xef~N?\xa7\xd9m\n\xd9\x1a\xa1\x9e\xf3\x1d\x8c\x80\xc0\x08\xbes .`EJ\x88S\x06\xd8c\xac\x90-X\x9d\x92\xd5\xf9\xcb\x8b\xb7?!l\x0f\xbe\xf3\xb4\x8b\xe6\x03\x05\xcaA\x19^3\xc8\x81\xbf\xe8\xe6\xd1\x99\xb1?\xee\xef!\xad\x92\x84\xbf\xe3\x1b\x8a\xaf\xc5\xdf\xf7\xf7\x83\xae\xca\xd6X\xed\x9c\xb7X\x9f\x0bl\xb3\xf9%\xb7\xda\xba\xf4`\xbd\x81\xbc\xd5\xe6\x80a\xb3\xd2Ou>\xf5\xd1\xc3j\xcd/}\xd6\xfcL\xf2y\x8b_j-\xf9\xb0bE\xa5@\xad+\x1fd8\x057\xc5\x0f\x94\xd2\xfa\x83\n\xf1\x9f\x8f\xbf`\xeb\xf4\x14R\n\xea\xe4\xf3\x96\x1a\xce\x9bq\xcd\xd2Yy1\xf0h\xd2\xa7\x9a\x9d\x97y\x9c^\xbb\xc4\xa3\x18\xb2lUzh\x1f\xa8\xca\xf3\x81\x1f\xe9\xac>\xd2\xf5\xb9\xb2\x1dm<j\xec\xd0\xd6GP\x1c\xf0bM\xa2x\x11\x939,\xb2\xbc\xffd3\xbc\xf8\xe0\xebx/\xd5\xe9\n\x06\xc1&\xbb\xbb\x9e\xeb\xdc~.\x1c\x03$K\xdd\xa3C\xaf\x0dfRw\xdf\x0b\xce\xefVWY\xa2\xbe\xa4[e\xa4\xc6\xb2\x06z\xb8f\xc8c\x81\xfa\xf9\xac\xbc\xa0G\xc1\xc5?N\xa1\xa2{\x9f\x89\xc2\n\xce \x83c\x88=\xd7a\xe3 \x1c\xba<\x9e\xb4\x1c^P\x94YNOdn\\\x19}Y\xe8Q\x94\x87\xa8AC\x92\x17q\x96\x1e\x833\x0d\xf6\x83}\xa7\xe9\xa7\x99\xa1\x93V\xab+\x92\xcb\xf3\xbf\xbcDR\xd4\xa5\xff\x9eB\xeam\xb6G\xfb\xc6\xad\x99\x1c\x19\xb7f\xf2\xd4koJ\xea\xee\x8e\xb5\xe2\x10\x8b\x0f\xf4\xe2\x16>\xd0F%\x1e:\xba\xc8\x87\x85\x0f\x89\x0fk\x1f\x96\x8c\x06\x81\"x\xdd\xa6r\xe83\xaf+\xfc\xd1\\\xe1\xa6\xaepn\xaepWW\xf8`\xaep]W\xf8\xc1\\\x81\x12\x88\x94\x0b\xc8\xe1\x18n\xe8\xbf3\"N\x17A\x1a\xf8\x81\x12\xf3\xae(\xfe\xed\xc1k\xe8\x0ds\x8b\x97\xbc\xc5\x98\x9eB\xd1Z\\\xb7f\xfe\xe8\nN\xe1\xb2i\x19\xbf\x91\x7f\xe3\xa7'\xadO\xe9\xf5w#Dvx\x98\x10hz\xb8?\x94Lv]\n\xec\xb7\x96\xf4\xdd\x8a\xfe\xef&\x8b\xe70F\x90\xb9\x9aE\x17\x1e\xe5\xa0\xe0\x18Ro\x16]\xf8@\xe9\xa2kZm\x01g\x10\xba R\xc6\xc7p\x87L\x98\xe9\x0e'X\xef5\x7f\x83\xf4\x96\x0f \xfd&\xf1Y\x87\x95\xbb\xf2\xe9\xa1\xa0P\x1e\xb7\xe1g\xcf\x87\xcbYt\x01[\xa7\x90\xe0\xcdu/\xb1\xc6\xda\xf3YOW\xf2[\x17\x7f\x9dB\xa2\x81\xd5f)\xf2 bw9\xf6\xe9I\x83S\x98\xd0?\xfeHI:\xfa\xc79\x9c\xc2\x1e\xfd\xe3\x03\x9c\xc2!\xfd\xe3\x07Z\xe7\x80\xfe\xf5g8\x85]\xac\xf53\x9c\xc2\x01V\xfbH\xdfN\x0f}\xe5\xc6\x17\x9b\xdd\xce]\xe3\xed\xdc\xd3\x8b\xf9\xed\xd4\xef\x1b\xbd\x9dO\x9c'\xd7\xed\xcb\xa9\xf7n`]@b\xe38\xaa\xca\xdc\xd2\xb3\x1c;\xda\xa8\xf3\x8c\x02H\xd2>\\\x1c\xde:N\x83b\xdd\x10F\xa7\xe0\x00\xfd\"\xa5\x18\xe7\x14\x91\x0f\xef(\xf7(%\x90\x84\x11q+\x1f\x9c\xed\xbfVYy\xe2x\x88\x99\xbe\xf3|\x08a\x04\xces\xfamL\xffz\xf6\xc4\xe1d\x9b\xf3\xdc\xb1m\xeffD)\xe7\x8b\xe5\xf2\x94a \xe2\x86\x9e\x0f\xb9\x9b\x07\x1f`\x04y\xf0\x1a\xbe\x87\xd8\xed\xa4\xd2\x04\x1f\xe580+/\\:\x07\xeb\"\x11\\#\x12\x94\xd9O\xd9-\xc9_\x86\x05q\x91{$A\xb1N\xe2\x12\xbf\x0e\x12\x92^\x97Kx\x0e\xbb\xeat=\x1f\x1c\xb6\x86\x94!\xe9C\xdc}\xe8\xc9\xa9R\xc6\xac\xce\xe9\xce\x89\xbbz\x1b\xa7\xf3\xec\x96n\"\xfb+x\x1b\x96Kz\x97\xf1\xdf3\xf1\xfe\xd8\xf2yA\x92\x05\xfd\x98\xfe\xab\x7f\x8a\xef\x8eA\xc0\x01\xd7\x11\x84\xe82.\x1c\xcf\xf5z\xf0\xe05\xc7\x83\xd7\x8f\xc0\x83G\x9d\xa4\xca\xbe\x8e&\xd9\x8d;\xfa\xdfC\xaa\xd8\x89\xb8\x03\x9d\x16\xa0Kb\x90m\xc9\x1b[o0#\xa5\x91d\xe5\x7f\xf27\xed\xe5\xcc\xe9\\b\xfa\xbf\x01\xfb/\xaf^6\xf8p\xbf\xc8\xf3\xf0.\x88\x0b\xfc\xd7\xdcX:\xb8\xb1\xff\xe57E\x9e\xf2\xb0\xb3J9nN\x17\xd0\xbe\x04;\xf2\xe9nM^\xe5y\x96\xbb\xce\xcb0\xfd\xae\x04\x8a\xdd)k\xbd\xcc\xe6\x90\xa5\x00\xec\xac\x9aey\x9bB\xb0\xa6\x15E\xb4e\xb9Vt\xb5\x9a\x1e\x94\xf3\x95\xdfi\x9f\xd0\xf6\xd2\xce\xd3\x89wq\xec\x03\xb9 \x13\xcfuXq\xd3<Da\x19-\xa1\xbdn\x86\xbb\xd4\x9c\x1c\xa4\xc4\xd8O\x1d\x9c\xc3\xa0\xa3;H\xea4|\x83%\xb8\xd6\x9c\xd4Rf=\x9b\xfd\xa6\xac$\xb2\x99iVBX7\xec<n\xaf\xed\xa0\xdb\x08\xb2u\xe9\x19\xa7\x91\xa6\x07F\x16\xa6U\x1cr\xe0\xf7MX\x98>\xfee\xd9\xc7\xbf\xcc\xfb\xf8\x97\x9b>\xfe\xe5\xae\x8f\x7fi\x18\x9c?\xdb\x19\x9c\xe5\xa6\xec\x08\xe5aV}\x8c\xce\x15o\x99\xb2Ns\xc1:\xd9x\xa5.\xdee\xa9\xf1.\x8ckY#3\xa0q-W\xc8\xb5loC\x88\x8c\x05\xbb\xbc\x94\xd5\xa1,\x0b\xf2\n\xc7\x90\"3\xb3b\x8c\xc3Rc^\x9a\xd3\x8f\xb5\xcf\xb0\xb6`rh#Y\xcd\xf7\\\xd7\xdc\xc8\xe9)\xb2:\xdd\x92$\x90H\xc6F\x90d\xa7\xd2\xc5C\xaf'\x05: Dr\xecf\xda?\xa0Oq\x1b#T\n\xf3\xebjE\xd2\xb2\xe0\xb4e\xdfw\xf4\x89\xc2\x82\xc0\xf8\xb8\xb7\x1eH\x02{r\x0be{\x0b\xf5\x07[\x9el\xde\xb2K\x0c\x94\xb5\xfe`\xe3\xd3\xc74\xae\xd0\xd4\xa6\xe7\xa1\xf3m\xab1\xba\xa1\xd6/\xecm\xd5\xea\x95p\xbdN\xee\xb8\xf2\xaf\xde@s\x8b\x0f\xe6u\x11\\\x87\"!\x904!\xb2J\xa5n\xcaE\xce\xfc\xa6\x93\x9b\xcfl\xdc<~\xe6\xba\xab\xe0&\xce\xcb*L\xf0\xe25\xbf\x10\x96x\x9cW\x17\xbc\xfeG\xfa\xcd%\xfd\xdf\x16\xb2\xfc(\x0f`\xdc~\xe2yV\x8e\xfe\x1f\x85\x8b\x9f\xeab3.dk\x953\x1cu\xa8#4\x8a\xa2\x8c\xca\xc3f\xaa$X\xb06\xf7=83W\x96\xd5n\x16\xccE!H\xee\x96\x9e\x8f\xb0'\xa3gtk\x8c\xdc.jL=\x03Y\x04\xcd!\xaa\xeaf\xd5\x0d\x91 \x9f\x87V\x7f\xce5)\x1d\n\xbc\x91\xb8r\n\xf1\xcb@>\xbe\x88\"R\x14Y\xce\x08\x8a\xa2Z\xd3\xfd \xf3-\x0bA\xe1\xdc\x84IEx\xdb\xf4\xd0\x95\x0cY\xa5\x01\xbe\xf0\xfcMI\x0e\xf9\x08l\xa5\xee\xf4\xc8\xb3\xf3\xfd|\x0cO)\x9e0+~\x7f{\xe0\x8a\xcb\xf6\x82\xa2\xe6\xb6S\xa4 w\xd1\xbe\xa0\xea\xfa{A\xd8\xcc\xb3\x9f\xd8o\xe4\x1f\x9a\x1a\xb4\x8f\\\xb4\xebWS\xa3\x06u\xc8\x92K\x82j\xcb%\xda\xdd\xb3\xb0\x85\xa9\xbb7\xf5\x14dk>\xf4\x82\xc5\x0e\x16\xbcF\xecNh5\x99t\xef\xbf:\xb5\xf1\x01;b\x1b\x9f-I\xe67\xb1L\xa8\x9b0\xdf\xa2\x17\xb7}iT\x1a<\x05\xc6k\xd8\xaeL\xdf\xa0\xfb\xf8`uX\xff\x8d\n\x8dne\xba\xb2rCd\x82\x88\x9bc\x1f2\x1f*\x1fB\x1f\n3\xa8\xa4@d\xcbHc!\x03\xd0\xc6\xb9\n\x8fL\xc9T\x88\xe8\x1c\xc9-p\x18\xf76N\x99B\x8e|\x89\x08SJgQT\xe59\x99\x9f\x00\x9dd\xb9$\x90f\xe9\xceJT\x9c\x93\x1b \xe9M\x9cg)\xc5\xffH\x0e\xd3J\x8b*I\x80\xd0VaE\x8a\"\xbc&\x10\xa6s\x08\xe7sTe\x87 ,I\xb2^T \xdc\x86y\x1a\xa7\xd7E\xa0\x9f\n\xfa\x90\xa4 \x1dD*E;3}\xb1.\xcct>}(\x86\x1f\x9bi\x11W]\nR\xcb\x80\x9f\xfck\xf1\xe4\xda`\xdedz\xf8A^\xcc\x92\xd1\xe8\xc2X\xeb\xc1\xf3\xbc \x0dW(\x91}\x93\xde\x84y\x1c\xa6%\xfc)\xce\x92\x10)\x99\xd6WmJ\x8c\xdd\xb2(X\xe4\xe1\x8a\x14\x9f\xb2\x0f\xd9\x9aQ\x1a\xd1\x1f\xcc\x1f\x0e\x82\x01}\x16!OM\x9c\xae\xa4\xac\xeeW\xec\x0b\xb6bvaa\xa3\xd8\xa5\x8eS\xca8\x90`]\x15K7\xed\x10V\xab\xb35_\xacD\x9d\nW\xf2\xca@.\x0b\xe2tI\xf2\x98\x83\xed\xdd}O\xfd\x84\xb1\xe8\x93C\x1d\x03p\x1e}\xf2\xd4\xd8\x16e\xbf*\xe9M=?\xdaK\xec\x86\x0d\x91\xeb\xf9x\x0b\xc7'\x10\xc13\x10\x1c\xd0 D\xa3\x91\xbe\x88\xe2\xc8\x17\xb3H[\xc2\xa4io\xb6`\xcc\xb1Vt\n\xa1R \xa3\xc2f\x94|\xff \xb1\x80\xf9\x16\x8b\x97x\x9e\xccY\xd0\xef\xd4\x91U\x1c\xfb\"\x9b@\x89\xbbP/@\xa9\xec\x16\xb3,(\x83\x9c\x84\xf3\xf0*a@\x98\x1bi\xf0\x92S\xd8\x9a\xb4\xea\xdf\xe6q\xa9\xd6\xafKD}Z\x18&Iv\xfb\xefa\xb2x\xbf&)7\xbdS\x1bRk\xd4\xad\xb5>\xac\x9b\xcc\xd2\x88\xb8\x0eA\x83\xa8u\xf7r\xae[P\xc3\xd0\xf6\xfd=+\xbd\x14\x138/\xc3\x92\x04$\x9d\x13\xb4\xd6\xc9\x83\x94|)?\xc5\xd1gw\xc9\x86\xd0\xdd\xe9\xb2\xbd\x87%m\xcd5\x89\xf2\xccTb\"\xf3b\x8e\x18\xd7\xbf\xc7\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\x16 \xa9\x18\x06j\x86\x83\xfd\xa4\xa5$\xd5\xd4\x17b)w\xab\xde\xfdfB\x9e?h*sR\x94yvG\xe6\xad\xe1\x0f\x1e\xa2$\xcea\xa3\x15\xe7\x14G\xab |\x0c\xf3i\x8e\x98\xfaeP\x8f\x8d\xd60-D]Acu4a\xa12\x113@\xfe\xfd\xa7\xd0X\x9f\xd9&A\xabx\x1d\xdb)m\\p\xc9\xbf\xea\xa3\xfc\xb1C\x86?\xaa$\x11\x17\x16\xcf\xbe/\xdf#\xe2\xcb}\x7f\x13499\xda\xb3\xea\x8a\xec\xbb!\x8e=\xaetN\xd7\xb56\n\xeb\xa3\x8a7\x1c\xdf\xde\xc1\x9e\x01\x8f\xbf\x0d\xcbe\xb0\n\xbf<r\xdc\xb1;\xa6|\xba\xa2\xf3\xdbt\xb0C\xeaK\xcb<5M#u\x0f\x9f>v\xeds7\xde|\x02\xd2\x80\xcc\xe3\xd9\xb73\x88LZ2\x90\xb5\xfb\x87a\x10\xa7\x87\x1b/\xf0\xdf\x85A\x1c64!\xaci+\xc1J8\x93\xee\xa0\xcd\x19\xe3\xdb\x8f\xa8S\xc8\xb5\xb5U\xba\x1d\xf2-\xebg\x9a\x85\xeec\xf7\xdeb\xaeg\x16$\xee\xeb\x06\x96\x8c\x90>:\xf4\\\xa7\xc8#\xdd\xd4\x81\x92\xd3\xb5\xd0\xb6\xcc\x98\x1dI[\xfd\xe5:\x0e\x8c \xf4\xb8=\x8a#j\xca'\x06-\x08\x838-\xd6$*\xcf\xb3*\x8f\xc8\x90C \x08S\xe9f\xf96K \xc1\xa5\x87&\x12=\xb2Y`\xa4\xea\xa9\x8e\x10\x7ffn\xea\x83CYB\x07\xf5@q\xf3\x9b\x1e \x8a\xbc\xe8\xadm\x8c\x97\xa4\xcf\xaa\xe6\x8b\x8a\xd7;\x03\\\xa1\x92i\xb1\x8a\xe0\xd7,N\xdd\xda\xda\xd7\xc3\xf6\x90\xe2\xcd\xe1\xac\x86\x07p\x0c\xa1\xf8\xa9\x94\xc6\xcd\x818\x06wN\x12R\x12|\xefK\xaf\x14K\x8fF\xf2.\xd3[\xf56u0\xd2\xe2.\x1a\xef\x19e;894\xab\x90\xc1\x91\xf8\x08\xb9\xffot\x0d\x7fo\xc0\xb01\xd66_\xbd\x03\x93\xa2\xd9M\xdd\x83\x03\xcf\xc7\xf7\xe3\x86 \xb69\x98\x18\xaf\xe9\xe4@7\xf3\x0b\x8d\xaeT\x9f\xc9\x9d\xd9\xff''\x0b\xf3\x8b\xcb\xcb\x82$\xf6wx]\x8f[ \xcb\xe4%VX\xb7M&[\x83\x9c,\xa4\xcdh7\x13\x0dk\xe63\xb9\xd3\xf6\x14$\x96\xbc\x0d\x1ar!\x962\xc2\x88\xb6\xbc\x92>\xff\xf2/\xec\xf8\x1cC\xd5^\x1c\xfa\xea\x18\xca\xf6\x0b\xdc\x03\x83v\x1b\xb7 m\x97\xaf\xf3l]\x1cChX\xff\xec6%\xf917j\x12\x8f\xd9\xfbI\xb2]\x91\xc4\x1cA\x94\x93\xb0$\xaf\x12\xb2bn\x15}\x94 \x9e\xf1\xda\x17\xa25\xa2\x84\x9e\xc6*I\x0c\xb3\xe0o\xd4\xc1QZ\x83\xdfNY\xdc/\x1e\x14\xc3\xe4\x10\xd3\xc3CP\x03\xef\xae\xb9\xef\xc7\xc2\xf3!\x12\x85 3\x98\x1c\x01\xa1\xfb\xee\xf9 \x8bM\x03v\x84\x05\x1c8\xaeK\xda\xd5\x18\xf2Q+b\x19\x02\xa5\x8c\x810\xe6\xbb\xb7\xbd\x0d[\xa1v5]V\xeeV\xcc\x93\x11\xfd\x1fOZ\xcb\xb7\x84S\xd05\xe8\xb0\x03\xd3\xf6\xca0Y\xc7\xd2\x83*\x88\x96q2\xcfQ\xa4\xa1\xa1%\x94\xb9\xd2\xdaKx\x0e\x13\x13YQ\x0b\xb3\xe6\xc2\xac\xcd]\xd25bb\xac\x1bx\x06\xcb\x13\xb8\x19\x8d<\x98\xcfn.\xe4\xd1\xcdn`\x04S\x83\xfco\xec\xabc\x9a\xab'\xb05\x13\xee\x15\xc8=q\xe8z\xb5\x84\xe4\xc0\x97\x07\x8dO\x94\x9a\x16\xf1#\x9e\x8b;O\xdeD\\xi\x07\xee\xe8\x0et\x0cM\x08\x80\xe9ig\xee\x03c\xfc/\x0eP\x8a\x9e\x96\x14g7\x17\xc7\xaf/\xcc\xeb0*\xb3\xfcn\x90G\xa4v\xc9\x82\xab8\x9d\xbb\xdc\x07\xc9L8\x93@(\xd75/\xc5E\x10%YJ^\xa4\xf3\x8fL\xdc\xfd\x1f\xa4\x97\xb9n\xe6\x18p%\xbd\xcf\xa0,\xfd\x87\xdf\x03\xfa\x07?\xe7e\xc0\xa0\x8a\xcf4\xfb\xebB\x9f?\x1d\xc0f\xf0\xa2\xaa\x0d\x9brTd\x8a\x86\xdb@\x02m\x9b\xe8\x15n\xbfB\xc1\x03\x0e\xbb}j(\x12\xed\x9a\x8b\xb79\xd0\xa9\x14\xa03\x17@\x87\xdd\x9a\xfax\xc80h\xa9\xc3 \xb6\xde\xec\xe0#\x1e\x97\xcft\x0d\xb6\x0c\xef<\x0d\xdaT\x16h\xc3\xca\x15\x15\x11%\xb6T9P\x02g\xb0\xa6\xc5\xa7\x90\xd0\x7f\x8e\xc5/Z\xd7\x00\x9d\xee6\x84Nw\x1e\xac\x87@\xa7\xbb^\xe8t]C'\xbaz+\x06\x9dV\xf0\x0c\xeeN`E\xa1\xd3\xf5l\xa5B\xa7\x95\x05:)\x03\xba\x1et\xff\xf9\xddX\xfa0\x17@\xe0F\x95\x13\xd3\xc3\x1f\x17\x7f\n\x93xn:\xfe\x9bP\xa4\x8a\xbc\x88\x1d\x10AJ00&\xf7\xaa\x10\xc0\x7f\x80~\xe2T\xd2\x0e\x1f\x98Y\xc0\xdd\x83~\xa9@\x87\xb3\x03c%\xcc\xa0+wS\x8f\"P8\xe6\x87\xb0\x99\x8aq\xec\xfa\xc09%\xa6\xab\x8a\x8d\x04ef\x10\xd3\x0b\xc3R\xae!-H\xf9)^\x91\xac*a\x192\xb1\xc5\x15!\xdcK\x97\xcc\x9dn\x91|\xd5\xdfA\x94\x900\xff\x8a.B\xb3\xfc%\xc5s\xd0\x8c\xbe\xd6\xda4Et\xf9\xc6\x06\xc8\xc6\xbf\xcd(\xd3\xb5\x95\"\x880\xb4C\xf7\xb1)\xf6{\xda\xed\x94r\xa4\xec\x0b\xf5\x9a 9\x87\xd1\xa7\xd5\xdc\x1c\xb4l@8\x92l\xb5\x0e\xbd=\xb4\xdb\xe2\n,s[\x16\x10\xf1\xb0eg\x7f\xcdsHm\xb2\x04\xe9 \x9e\xc9?Z\xc4{\xa7\x80(\xad=\x18\xea\xfa\x03\x06\x95\xdb\x06\xa5\x1c\xde3\xf5\xe7\xb1\x04\x85\xa0w`\xb4\x8b\xca\xb6\x8a\xae\xa6\xa2-\x98\nu\xa6i\xfe\xd1\xfeV\xd3@Q\x0c\xb931]\xfe\xb6\x8e\x8e\xf9? J\xe4M\xd5\xeaY:9z\xe0\x83(K\xa3\xb0t#\xb4/\xc4\xb6}\x88D\xa5\xedmX\xba^\x9f\x96\xcet]\xb7\x166j\x96\"\x89\xd0]\x1b\xd4\xe28F\x83uC\x8d\x0f)\x01\x18\xd5\xfaerb;\xe7\xf8\x01\x85\x92\x91X\xd7\x13\x18\x8d\x12x\x86\xdf\xe0\x82\x14\xb3\xe4\"\xc8\xab\xd4\xb5X\xbc\x8a\xa5\x90\xbb\xec\xb9%\xc0%|\xec\x8e\x9a\xf6N<v\x1c)?h#\x83\x90K>\x865\xbc\x92\x0b[Jk\xbd\x1d\xdeP\x85 \x90\xf1d\xc6F\xe9\xa9\x95_\xf8\xc3\xbb\xb1\x830\xf1\xe4n\xd9\x864\xe2\xe9\x87^\xe2\xe9\xef\x08d\xb5\x83\x0c7\xed\xdd\xc3FC\x80V\x07\xc2\x1a\xa0\xbb\x03\xfb\xec\x8do\x1e\xf4\x05{\xe8\xbc\x89s\xbb*qQ\xa5\x92&3\xa44%%x;\x9b\xbbq\x15\x8b\xd3\xb8\xd6:\x0e\xe2\xf1(E\xc0hW\x03\xed<1`\xe9V5J\x1d\xdba\x01\x9d\xcf\xe4\x04Rx\xd6\"\xceO \xa5\xc41\x99\xa5\xb4+\x95@N5\xe28\xe2ZVr+\x96\xcf\xf3a\x82th\x0d\x05\xef\xef\x01\xa3s\x84\xeeR\xa1~\xe7\x92D2\xaf:=\xa6\xc4&p\x9bs)\xde\x06\xee\x85\xd2l\x1c\x94q\x89\xd6\x1f\xceU\x9e\xdd\x16$wh!\xff\xbb\x89\xba\x94\xde\xf0\xf0\x1bq\x10\xe6\xd77\x0c\x7f@\x1cp\xbbAd\xbe\xa4\xdfE]\x1b\xdf\xdd\xe0w\xf3\xf9OqQ\x92\x14\xdb\xbda/Q\xd9\xc0\xfe^,\xc4\x9f9Ye7D\xaf\xccJ_$\x89xQ\x887d\x15\x97\xe2\xefuN\xd6$m\xf5\xc4\x8b\xdf\xa7Q\xab\xddDj\xae\x97\xa1\x98]\xa8\xabw\x15\xa7\xf38\xbd\xeeVR\xe9T\xeb:\xcf\"R\x14\xf5\xc7\xb1f%\xedh[\x14\xdd\xce\x07x\xc89O\x1c\xed\xb3\xe5<n\x99T\x0e\x1b\x19\xfb\xb4o\\\xd5*,>\x0f\x18\xd9&\\\x88\x91R\xe22y&\xc8\x81\xb3\xe1<S\x19\x14\xd5\x9a\xe4\x97,\x10X\xa9\xb8N(\x8d\xbaD\xd6\xc0\xb4\x01r\x1d\x91'\xcb\x8f-\xf0\x1a-\xd5\x8d\"g\xe81\xf4\x11\x8f\xb0\xf90\x8b\xfb\xa1\x1dil\xdc\xaa\xa4\xd1\xd2\xaa\xde\xfbQ\xcb\xd6\x96Q\xe8\xc0Gw\xbeWVYYWu\x03\xe8\xb9K\x95\xc2@Zf\xf8\xe6\xc6\x1c\xd3i/\xdbm\xa4.ee\xbc\xea5\xe9\xbc\x0cSzCh\xc7(R\xc8rh\xfc\x83\x1f\xa7\x96\xef\x9cT]\\#\xce\xbcO\x1f\x83\xf6z\"\x8c\x12\xfb\xa5\x8d\x00\xe4\xe5\x08\xe2\xe2]V.\x19L\xcb}\xe5\x85\xf0\x10\xef\x07\x93\xfdr\x17\x19\x924}\x94\xd9\x0bN.\xf4v\xa18\x88\xd3Zg\xa8_\xcc\xd9\x9f\xb3\x0b8\x86Yya\xee\x86\"\x83\xb0%?5Q\x17\xa9\xcf\xf87G\xddK\xa4\x0cR&#K\x91\xd4\x87\x14F\xa70\xf1 \xa7\xff\x96f\xe9\x8cy4q\xf1\x8e\\\x87e|C\xfe\x1f\xc9\xb3!s\x17\xbb\xba\xbd\x0d\xef\xd0&?x\xf7\xea\x8f/>\xbd\xf9\xd3\xab\xcb7\xef^\xbfy\xf7\xe6\xd3_\xb0\xc6\x04\x9e\xd8V\x9a|)I\xda\x8a\x8bh[\x02\xa6\x9dk\xd3Q6\xf9-.\x0d[:7S-\x9f]\xe2y\x0d\xed\x04\xcf o\xd6\xae\x9c\xc5\x94\xc5\x9e\xa5\x17LD\x1a_|\xfb+$J%9\x9d\xd9]\xa5\x15\xd4\x8fYj\x8c=\xd35\xac:5v\x063n1\x95 N\xa3\xa4\x9a\x93\xa1\xa1\xcb(\xa7_\xf7\xa5\xbc~\xe0\xc6\x0fC[2D@3\x8c_<\x84\x85\xc7C\xe5.\xfdk{[\x84\xc6ce\xf8\xe7\xf66\xe4\xc2\x12\xbd\xd5\n\x1d_\xca\xde\xea\x9c\x06\xbeY\xc4IIr\xb7\xf3<B\xb3r<\xbaZ.\x05\x0c\xd4\x1a\x95NI{\xc3\x0c\x92\xbf\x92\x85\xcc\xc3\xed@ \xa8\xf8\xfb\xfe\x1e\xa9]\xf6~\xb5N\xe2\x08\xe9\xcd\xb2\xf9!\xd7 _\xa4\x1a\xf5\x0fS\x1b\x03w\n5xA\x92\x85\xf3\xff\xe0\x8b,\xe2;re\xbbx%#\xa9\xd8u>-IN(\x11\x17\xa2\x17\n\xfb\x06\xc11z\x0d, \xd4\xe3\xa740d\x0b\x08\xa1\x88\x96d\x15\x06\xf0F\xbcb\xf1\x0d)>\xc8\x16PT\xd1\x12[(Z\xc4a\xe0\x18\x8e\xe3\x12C\x1b\xae\xd6qB\xe6o\x9a\x95\xab8\x0b\xeb\x88\x018>\xcc.\xf4\x0f^}i\x7f \xd6\xd3\xf8\x01E\xcco\xc3u\x17E\nB0\xc4n\x90\xd1\xae\x80>l\xb1\x8e\x8dZv|\xcf\xc3j\xdak\xf0`\x9b\xf6\n\x8b0I\xae\xc2\xe8s+V.}d\x89{\xfdA\x07\xce\x17O:cW\xf1b\x86\xd7\x94\xf9P\x8a\x9e\x9a2C\x0c\xc3vw\x14\x90\x97\x0c\x90\x13\x83Z\xea\x04J\x86\xf9J\x0e\xbd\x1b\xc6W\n\xaf\xa8k\xff@\x12\x0d\xab\xe7\xc55\x9e\x16\xcb\x99\x90/\xb7\xf8+\x0c~|\xf5\xfa\xc5\xcf?}\xaa\xe5b\xa1`\x19:N\x848\x0d\xea07\xf1\xb5\xef\xf2\x80G\x01\xa4\x18\x97\xb6\x8e\xb3\xb1AyF\x9f\xab\x9c\x84\x9f\xdb\xaf\xba\x9c\xe1K\xada\xbd\xab\xc9f]q}\xa8\xa5/\x19\xc8\xfc9\xcf\xd2k`\x9e\x81\x08AD\x97x~\xce\x194\xe1\xbbP\xb3v]F\x01\xcc^\x81\x02vN\x0c\xd6N\xceM \xf3\xe5\x0b\xc8\x0d\xc9\xefz\x80\xa7\xc0\xb3\xb2\x1bN\xa8\x01*\x0dn\x9e\xd7\x916\x05XDn\x88\x83\xc6\x02\xdc,\xa7\x802N\xaf\x13\xc2g\xc8Mq=\xca\xa0\x95a\x9c\n\x98\xab\xbcm\xf9\xec!wA\x1e=\x8dl\xd3i\xd4\x81B\xb59P\xb8i\x9b\x81\xf4\xae5~q\x8f\xc9-\x84\xae\x01o1\xf4id\x89\x05\x1c?\xd6\x1d\xd3\x14\x11\x83\xcc\xa4\xb1M\x1bj\xab\xf8\xdb \xcaP2Ho\x05\xc6\xe4\x81Om\x16\xe9\x83}\xf9j\xcdl\xe9C\xac\x83\xad^},s\xee\x16\x06\xa1\x9b\xb2\xaf\x9a\x0e\xce\x0b\x8a$\x8e\x88{\xe8\xc3\xce\xa4o(\xdd\x0e\xf5{\xbb\xff+\x1d\xea\x87-\xeb?\x80\xd5\xf9\xb7:\xf7\xfb&?U\xe6\xdf\x12\xa7\x8f<n%<\x871\x9cA\xcc\x03T\x1c\x8d\xc7O'GG\xd3\xfd\xbd\xa7{\xe3\xa3\xa3\x89\x07\xc7\xbd\"\xc1A,\xdc\x93\xef\xeb?\x19\x84\xda \x8b\"\xben\xe8\n7\xf2\xe0<N\xe79\x81\xf3,_V\x8d\x15\xe6\xbf\xd1\x8b\x90\x16\x04\xde\xbe\xf9T\x17~\xff\xa4\xb5B\xfc\xf8^\x93R2\xfda\x81\xfb\x8a\xf6\xc2\xf5\xd8\x0e\xb7\xd9\xc9\xd6\x07k^\xf5M\xf1\xaa\x16\x18\xf6l\xc3\xb0\xd3\x89\xb8\x86w\xc7V\xa9\xd6\xc3mM\xda\x04\x80P\x9eR\xd8\xce\xed\xe1\x9d\xf0*2y\x9d#\xc2\x9e\xedS\xb2\xd2\x99c\x9c\xf9}G\x8a\"\xa8\xad\xdd\xbbpE\n\xb7\xf4f\xe3\x8b\xce\x01(zX\x8c\xfb\xddH[&\xe3Z\xeb\xe2\\:u,\xd2`\x91g\xab\x97\xcb0\x7f\x99\xcd\x89\x9bb\xb0\xee\xd4<^g<\x99\xee\xee\xed\x1f<=<bLT\xc7X\x89\x17\xac\xc2u\x0f~\x86\xe6\xf8\x13Y\xec$\x9e\x07\x8f\xf9\x168\x8e\xd7\xbb\xee\xb9!\xa2)H\xb2\xb5\xf0*\x9a\x93\xc5\xf52\xfe\xf5s\xb2J\xb3\xf5_\xf3\xa2t\x84\x8b\x8734\x08:\xb6\xc8BT\x9a\"\x9a\xfb\x96~\xe4\x9dEq\x8er\xa6\x10\xb0\xe7^3Y\xa5\xe5a\x80p\xa2~\xd3\x00\nW\x8a\x97\xc3\xba\xd3}\xb9\xf4f\x1b\x05\x1e\x8bw\xd0 \xbd@\xb6M\xac\xa5\xa6\xb2\x14\xd5\"\x04V\x87\x141\x91\xf0\x15\xc1\xe0\x89d\x0e\xb7q\xb9\xec\x97\x0eC\xb3\x02\xac\xbd\x96\x90\x04ai\xc14\x91\x85Q\x13Y\xb4\x9d\xe0A^\x85\x88\xc5\xd7\x11\xfb\xd707\xb3\xe2\xc2\xf3 \xe6\xeak\x8c\xb1\x86\x81\x7fYl\xa7t\x16\xe9\xa6\x8a L\x06l'\xabBsSS<\x02\x90G\xb4`\x97z\x01\xcf\xa0\xaa\xa7\xb1\xa0\xd3\xc8\xea\xc1T\xb3\xc5\x85\x18\x0f\xfd\x9b\x0d \xff\x1anK\x04\xcd\xf2J\x04\x01\xfe5\x18W\xee\xee\xedn\xac@\x10\x14\x18;S\xe8\x0e\xe38\\L\xfd\xd8q\x18\xa3\xbc\xd2\xe1\x99#\xdf\xee\xb6\xdca0\xe8\xed\x8c\xa1LxW%\xc9\x85\xa3V\x08\xe5\n?\x8b#\xab\xd7*\x80\xf9E\xe55}\xfa)\xbc\xae-\x0f\xbf\xc1J)\x1a\x8c3\x08\xe1\x18*8\xe665\xf4,\xd77\x05\xa9\x8d\x92\x12\x16Y\xff\xc2nN\xf0\xc9c\xdb\xe2\x82w\x93\x8a\xe3\x9bw,\x10\xa0\xe8\xc0\xcc\x7f\xc9\xc3r\xe5q\xa1\xe8R\xd5\xa8n\x1a\xd5\xa9\x03\x8b\x887\xd0\xcd\xb3\xb6h\x1cqZZ\x1e\x84\xd0\xba\xb2D(xz!\xb7I+\x04gm-\xd1qs\xb0\xb1\xec\x82a\xb4\xb45\x0e\x1f;\xff!\xcb\x12\x12\xa6C\xbbw\xaeX}\xf3\xa9\x90\xda}\x87\xc7|X\xa3\x06\xc5\x9d\xd6\xd2\xfb\xbc\xbe\xa4\x1b6jk\x13\xc59\x03\x9b2\xc4\x852\xb6\xcav}p\xab\x05\xf3\x81\xecm\x15\x89\xf1\xe1\xadb\xf5\xdeV7^O\x19V\x99\x1a\xfcH\xae_}Y\x0fm\xad>\xa3\xec\xb3\x9eC:@/+\xb7=\\7+\xf5\xf1\xa3&F\x1d4z\xfaQ\xcf\xd8\x91\x86\xda\xb8a\xfcJj\x19\xc3\xc1\xc8\xb21\xac`\xeaO8\xdc\x0e\xeeR\x81\x9e]G\xe6C\x1e\xaf\xe22\xbe\x19\xbcL*\xa1i\x04\x1d\xf8\xc2p\xbdX\xfc\xc5\xf6\x05a\xe5\xed#\xaeS\xb2FPW-\x16x\xe9\xcb\xfaG]\xed\xc1\xab\xddaR\xf7\xe0\xd0\x0b\xd8{\xb3@es\x0b\x06\x03\xe9\x8e\x1b(9-s=\x80\x08\x06\xf6\x97\x17o\x7fz%\xc2\xae9u\x82\xaa\xb0\xc8d\xdb\xc3U\x98\x7f\xe6\xa6?\xf8\x93\xc7V;mb%\xd1\xfat\xcd\xdc\x8a\xa7`be\x1ef\xb0p\x9bF\xcex\x02\x8c\xba\xa4\xc6b,\xf7\xa4\xe3\xf9\xf5\x90\xd7e\x95\x93\xf32\x8c>\x7f\xcaCth\xb4\xbc\x11\x86\x9cK9\x01X\x86q\x88\xb1\xac\xa05\xd1EYXhy\xbc\x8c\x0eY\xb2\xf6\xaa\xff\xca;,\x9c\xd8 \xe4HZ\xb9\xd5\xf2&W_\x8a\xb9\x0e\xa3U\xea}\x1a\x81s\x0c\x8e\x91f!h%\xd1\xb7 >l1\x07\x9dz\x1f(\x85C\x9a|$\xa6\xed\xd0s\x0b\xca\x94\xd6\xa0\x84\n\xbd\xf6\x026\xf7\x1d\x96\xcdK]\x95Z\x08>K\xdd\xe9x\xeaiV\xf7B\x01\x8a\xef\xf7w'\xe8\x88\xbe\xbf\xdb\xaa\xd7\xc8\xcb\xb1\xde.\xaf\xb7\xc7\xff\xdd\xe7\xff\x1ex\x92\xc5\xcbc\xc5\x9dv/\xc66(S\xcc\xda\xdc lCip,\xd4\xcc\xd6\xdc\xa9\xa5\x9ed\x00\xe7\xeeY\xeap3;Mm\xa0\xdd\x85!ru\xcd\xc4.\x17\x82\xcf<L\xe7\xd9\xea\xd1Q\x89xZ\x0f\xd7\x11\xde\x0e\x1a\x17\x83\xec_\xe9\x83\xe3]:>\xb8\xa3Q\n#\xc8\xbd\xe6\x00\xef\x1e<>\xae\xce\xe3\x03\xfapV\xea\x11a\x89$%\x8a\x1e\xc4\x84\x87\xf7oE\x1f\xcax\xb9\xce\xb0n\x10=\x99\x05\x8c\xfdg\xf4\xe4\xea\x9bDO6\xdd\x8f\xbfOPa\xd3H\xf0ZF$N,7v\x91dY\xde7:\xcb\xd0\xe2\xe2]\xf8\x0e\x15\xce#\x14#\x8c\xe1\x18\\\xa1\xc1\xc81OZ\xbfD\xc1.\xaa\xe9\x0f\x10\xdcw@\xd5\x10\xb4|\xd4\x9a @X+\x18\xad\xb7\xba\xcc\x13xs\xf5h\xac\xe6_R\xe5\xb2!\x05\xdb\xf27\xfa\x18D\xd7]\xa6\x0b\xad1\xf4\xe4Nh\x0f\xc3\x1a\x9b\xdf6\x92\xdd\xe1#Ah\xb0\xe1`\x14E\xaf\xfc\x0c\x90N\xd6\x9dw0\x0e\"\x9b\x00\xb1\xa6\x12\xd8\x04\x1f\x0e\xbb.qoB\x99\xded2\x8f\x0dTf\x8f\xaefQ\xdaO\xc6\xbd\xb7\xce\x02\x0d\x1e\x15\xd6\xae\x8f^l\x85\xfc\xe2\xf2Z}\xf0\x0c+\xb62\x06VbNm\x19m\xea>\x16\xbe\xdc\xf0\xa8:\xa1k\xa4\xd7\xb0\xed\xca\x87\xc2\xe7\x99\xf0\x0c\x95(\x1e\x8efcC\x00\xe9\x04\xdf\xe8&G\xd9\xb0\xcc{\x1d\x9a/2+.\xba4\x9fZu\x83q\x80\xcf\x8c\x12xv\xbf\x96\xc5(\"\xcf\x98\x07\x00S\x1c\x17|X y\xc0\xe41\xf2\xab\xc2\x87)\x93\xb5\x9eu\xe3BhF\x96\xd4\xf8\x90q\x80\xfa@\xa0/\x16\xa9\xb1\x1d}6}\xc7Xn\x98\x91U\xbf=\x18\x15\xd0\x8f\xbf\x04\xc3.\x9f\xa2\xeb5y\xf01\xedo\x13p\xfd# \xa3\x92\x07L\xff?\x0e\xcf\x84\xec\x9c\xc0M\\\xc4%,\xcbr}\xfc\xe4\xc9\"\x8c\xc8U\x96}\x0e\xae\xe3rY]\x05q\xf6$\xa7\xdf=\x99gQ\xf1\x04?\xde\x99\x93(\x9b\x93<X\x96\xab\xe4,\x16\x01\xc6O\xb1If\xbe>>\x81\x9c\x999\xe6\xa3\x91\xc7,\xd5\x9d\xed0\xbf.f\x17X\x8f\xa4\xb4\x89\x9f?\xbey\x99\xad\xd6YJRY\xaf\x96\xc3\x08&\xba\xf2\x8c\xb5\xa1\x06\x7f\x17\xa2\x89,\x1f\x1e9\xbe\x89\x1a_\xf4\x87\x8b?i]\xff\x18\xe4\x10\xee\xba\xaa\x8e\xc1\xf4\xb83\xfa\xba\x0fq;\xacz\xdcs\xea\x06\x9d\x1b\x89\x82\xb2q4\x8f`\xe5\xebb\xf1I\x87\xf7\xcc <\xac^\xb8?\xb4\xff\x12\xeb,\xb7&\xc1\xb78(\x97a\xf9\x11[+\x98\xd8E)z\x1d&\x05Z>\xba\x18H[y\xf7)\xaf\xf8\xab\xb1\xfe\x8a+\x17r\x11\xcfW\xfdn\x19w\x9a\x8f\x88\xb9)\xf9\xf6\xb46^\xf0\x03>\x04\xa5\x9a\xfdO\xe0\x94\x1f\x94\x8d6P\x94v(\xa5\x9e|\xbf\xa5n\xd7\xf7\xf0iI\xe0\x8a 7W\xd9\xbcJ\x08,\xf2l\x05i6'\xc1\xaf\x85__D\xee\xf4\x1ah\xdf\xeb\xcd\xfd[X\x95\xcb,\x07\x80\xd7$\xcf\x8a\x02^\\e\xd5\xe7e8\x8f\x7f%Kx\xb6\xc0\xc2\x7fc\xff\x04Y~\xfd\x1c\x9e \x88\xd4\x94\xb5\x1a\x15\xf6H\x8aA\x12{\xf9\xa4uu\xb9\x1c\xaa\xc5?CC\\\xb4\xb2\xe4A\x93X\x0f\xef\x94\xf2\xb2\xbe\x10\xed\x98+\xd0le\x11|\xfa\xcb\x87W?^\xbe\xf8\xf8\xf1\xc5_.\xcf\x7f\xfe\xf0\xe1\xfd\xc7Op\x06\xd3\xc9\xde\xd3\xbd\xc3\xdd\x83\xbd\xa7p\x0c\x93\xf1\xd3\xdd\xa7{\x93\xc3\xa9\x96\xef\xd6\xd2ah\xc5\x95\x94\xe2\xa4\xc3yF_7\x86\x17\x1f\xc3\xf4Z\xf0\xc9\x14(%\xf1\x1cI\xd190Os\x865:\xcc+l\xb3p\x85\xbd\xd3\xcfqZ\x1e\nCc/\xb8\xbcDl\x7fy\x89!,\x1a\xf9\xea\xb1b*\x82l7o\x00}\x9c\xe8a\xe7\x18\x8c\xe5\xb8\xd3\xa1\x85y=\n\x1b\xc5\x06\xc2\x88\xcb5O\x80\x07\xc4\x97\x95 \x85\x9an\xa0i\xba\xbd6H\xde\x1b\x14\x0d6\x12\x0b\xeb\xb7\x15\x10\xcaN\x89MZ0\x1c\xc9=\x9d\x8b\xda,\xb9\\\x12\xe6\x86\xb2\x88\xf3\xa2\xac\x11?\xac\xaa\x02\xedgB(Z\xd1j\xe5G\x10A\xf6x\x08\x0f\xb63\x105\x01i\x0cr\x1c\xcb\xd6Db\xfd,\x0c\xaae\x0d\x89\xd9l\xe8;!\xb5Q\xe7\xcdm\x87BnR\xdf\x91~\xda\x9c\x89\x16\xcf-W\xe5lo\x03\x91\xcf\x83\xfc\xae\x1dK\xbb\x83\xedFW\xbf\xe0\xea\xae$?\xe1\x89\xf6\xd1\x0co\x0c\x98\xeb\xba)\x86g\x8d4K\xbf\xaa\xdfe\x8bEA\xca\xef\xe8\x11\xc8*4G\xbf\xca\xaat^\xd8vW\xef\x936\x0e#p1\xf7\xf0\xd8\xb3\xf6\xc3\xee\xdc\xf0~0\x00A#cI\xa5\x00n\xa7<\xf0o\x0b(\xd4F.\xd6*x\x81\x8fM\xc5t\x99\xcd#\xe9\x04L\xa4\x0b\x10\xd1\nk\x06H;\xaf\x8a\xc1\xd0O\xd9\xfdc\x93R\xb1\xc5\xd8tx \x1a>\xc7\x05\xad\xf3\xc9\xdf\xdf3\xe7P\xa7*\x17\x87][\xbfU\x04q\xf1\x8a\xc3\x0d7\xb58`\x7f\xe7\x08\xd0\xe2H`\x83!\x056\x94\x1a\xf6\x98n\x12H\xf8t\x0c\xf70g\x1bg\xf6\xd7\x02\x8e\\]\x16T\xa8d\x86\x8e\xb7y\\\x12\xd7\x02U\xd9'u\x96\x02\x97\xf9\x042#\xfc\xb1\x0f\xb1\xf7\xe8\xed\xf2\xfaL\x1f\xc5C\xd7\xb2\xa8\x15\xba\x141uH\xb3j\xd5\x08\xdc\xc3\xd2%\xc2\xe7\xc9<Hh\x06\xca\xeeA\xb30i\xed\xe2\xcb\xbd\xb2]\x12D\xd9\xfa\x8e\xbec\xd1\xfdR\xcf\x1a\xc0\xa6\x0d\xb4A\x80\x83\xae\xb1#\xf4\x1d\x04\x12\x03N\x0cZ \xe3\xfd=8\x9c\x88\x808\x95\x84\xae5lo\x9a&R\xd8\x167\xc7p\x07\xc2Ol\x8b\x01\x06\\\x8f1\xdd\xae\xce\x0bZ\xcf\x80\x0d\x82Y6\x90:\x84e\xe6\x92`\x1e\x96a\x83\xd0Yk\xacp\x83e\xc4\xd3n\x1e\x82\xd1\xb6\xf5u7j\xf6\x81\x8d\xd7\x97W\x90\xff\xf0)3\x8b4\xd9N\x12\x7f\x96\x9c\x88,\xa7z\x18\x12^\x98\x05\"\n\xee\xed\xcdv\xfd\x9dS\xc4\x7fk\xa1\xde\x1e\xb4\xcb\x1c\xd3\x9e\xd1\xcd4\xa2\x1es\xa3\x1c\x9f\xa7\xdc\xc3\xff\xbba\xb3L:\xa9\xe2\x05:\xc0\xd5\xb7\x8d .f\xaa\x0b~s)\xf9\xb9e\xc4'\xe6\xc3\xa2D:jb\x1a\x8cF\x14\x9f\xcf\xd2\x0bs&8\x0b\x1bl\x9e\xd2\xda:%\xd1o}\x99Z\xd3\xb1\x03\" \xe4\xb4_\xd6\xb3\x92\x049\xe9 \x8b\xd0\x80\xd1\x060J\xf1t\x7f\x1f\xb61Z\xf4W\xce\xd0\x90B\n\xeas\xf3\xfc\x94\xf2V6\xaa\xe5EY\x92\xd5\xba\x842\x830I\xb2(, \xbfY\x90\x84\xf95\xa1\x0cj\x98\xc2*\xfc\x12\xaf\xaa\x15\xd0\x83v\x0c\xe3/\x0e\x8ch\xab\x8d\xeexr\xe0\xa1\xec\x9d\x92MF\x8a\xa7\x06\xd8\xf7\x03'e\x8e\xf3\x05m\xccR6\xb0I0>\x166c\x08\x906\x9a]Iu\x82\xb8\xf8SLX\xda\xfdv\xb1\xc9\"L\xaa%\x8f\xb4!0\xdb\xa3\xad\xa9\x99-\xd5R\x0e\x11\x1dK\x1caX\xe2\x9b:\xd9f\xd7*pj\xb3\x1eIW(\xc2\x1c\xc3\xfb\x9d\x9cx\xb5\xa2\xcf\x8a Q\xbd\xe5\x84E\x14\xc7\x8eY\xc9\xc5j$a\x19\xa7\x93\xce*Wq\x1a\xe6w\x96* )w\xcd\xe8\x845\x82d^W/U\xb9\xd8\xe9\xac\xc1\x08\xed\xdeQ\xfc\xec\x96\x9eu\xc1\xa1\xe9.*\xa6\xdd\xe3\x89\x8a\x9d\x9e\x1a\xe5br\x90\x90\xbe:;\x1d\x95\xa0\x19\xf7\x14\xbe\xef^\xc1%\xf9\xd2\xdfJ\n\xcf\x9f?\x07\x83?\x114\xdb\x19\x16\xe4`\xaf\xbf\xa9\x1f\xfa\x16\xb2\xd37\x1c\xa0v\x0c\x19\xba1\xc0\x990\x96\xac\x86Ph\xf6SvK\xf2\x97aA0\x03\x19F\xa1k}\xaa\xebR\xcd\xe0\xeb\xa6\x8bc\x11w\xab\x9c\x11\x03\xec\xe7F\x14\x14\xfd\xf9\x02 \xe6\x83:\xbd\x93\x98*\x8b\xfe\xb8\x01\x01eM1\xf2\x05\xdb1l\xa3E\xdc\x92R\xee\x10\x85\x81\xdc?\x0eyNx.K\xe4\xce\xf0\x8d\"\xa2\xa3\xd8}\xa7.9D\x90F+Ie\x1ekp\x94\xfa\xdcB\x82\x852\xc6j1G\xce\xa5\x1ccQ\x88\x04D\xa5\xfa\xe5\x08i\xfd\x94\"\xc0\xb2#\x88\x82\x98e\xdc\xb9\x0e\xc0C\xe0\xc8]\xb7OF\x13\xf6<e\xf4\x9a\xbd\xbb\xada\xfd\xf5\x1d?\xe8\x10\x89q\x9bE\xca\xb3/\xf2l\xc5\x12Xx>h\\\x99\xc2J\x91\x86}\xda\x99\xc01\\k'\xcarB\x8c\xc2'\xde0\x81m\xa4u|\x8b\x9c\xc1\x86t\x1b\xf1\x85d\x10\xcac\xee\xc0\x19\x1e\x86\xae*\x8d\xe5\x0f\xe7Z\x8d\x95\x93\xb0(\xdfX>\xc0\xb9c\x12%\xfb\xec\x8d\xbc\xcbM\x98\xd4\x84\xbd`WD\xa0\x8a\x9c\x93W\xadP\x14\xe6\x1b\xad\xaf\xbf\x05\x98d,5\x8b%\xbc_(\x1d\\s\x8dB\xa2\x82\xcd[,\xa5\x16`\"\x05\x86\xd1\x18\xffM!\x01'\x04s\x0d\x8c\"=\xc4\x91\x1b\x17Za\x01\xc7ej\xd1\x8eTf\x95\x17\xc4,*\x91\xa0\xd8\xa7L\x18\xd8\xfc\xee\xbdWt\xa5\xa6>\x84\xf0\x04\xff-\xf8\xbf)\xfek\xb8o\xad\"M0k\x1b(\x1f\x06\x0b\x17U\x89\x8c]\xc7<{\xee\xcfo\xd2rr\xf0\xc3+\x97\xc0\xf7r\xb6\x11\xf1\x98\xef\xb9\xd5&H85\xda&\x8d4\x1d\xaaaN \x83g\x10\x9e@6\x1a\x99\x992\xe0\x9d\xe1\xf42\x0f\xc7\x1fQ\xf0\xc1C_-8\x1c\xce`\x07\x16\x9dr\x1d\xd1R\xfd\xa1\x88\xd2\x9dy>\xfb\x1cF|\x81\x8az\xdf\x16tA\xacMr \xbb\xc3\xc2\xd7\xb2\x163\xd89\xe5\xa3\xf1\xf9*X\x80\xb3}mR\x18A\x01\xcf!\xac1I\x08;P\xe08\xf9\xaa=Gf.\xdb\xd9\xe9\x9arM<'<\x88\xed\x9a\xf1\x80kx\x06\xc5 \xac\xbb\x16\x1d\x94\x85\x87\x11\xac=\x16\xa4\x97.\xfe\xbaw\xa5\x81\x9b\xc0\x98\xfc\xbb\xf5\x07\xe3\xeft\xd62\xcbq\x80\x0f1\xa9\xb7+3\xd6\xb3j@vt7k3\xe0[\xf5h\x07\xe8\x061o1J!\xdc\xdf\x9b\xf8\x18\xa1\x04\x97\x90\xb6\x81\xe2\xcd\x05-\xc3\x9b\xa3\x90\xe79\xc4x\x0chqLq\x01\xfea\xee!\xeb\x85\x9d\x19\xfc+L)/7\xb68r\x0bu\xe2\x92|\xe9P=\xe5\xf0\x1c2x\x02\xd3zh\xf8\xabK\xfeP\xb1\xb3W\xb1h\x87\xa3Q\xd5\x05>(\x9aX\x87yA\xde\xa4\xa5K\x82\xa2\xba*\xca\xdc\xa5|B\xe5\xc3\xd4\xf3ar\xd0!7g\xd4\x9a$(\xac\xccu\xcb\x19\xbdi\x98\x8a&\x1c\x00\xf4Dc\x83\x0e\xcde\xcf\xa1\xe1\x8d\xfd\xd5\xfd\x19s\nK\xc7\xc2C\x95\\\xdb\xa0\xd3\xd6\xd3\xd5\xd0\x9e\xec\x06\x03u\x9b\xb2\x11\xd2\xecB 8Q\xb3\xf2L\"\xc6\xb3\xed3\xc1Q\x19D<\xe4\xc4\x8b\xd2M{$\xfam\xc0\xf7\xc0dy\x9bL\xfav\xd8\xa4\x95\xb5\x19\xd4\xf0\x97a\x0d\xff\xd5\xfda\xf3A\x9f\x0fm{\x90VC\x0e\xec\xc0\x83\x93\xf2]\x93\xaeZ}\xb0\xb6\xb7a\xcbu \xc5NS\x0f9\x02~ \x19+!\xed_\xc5\xf9M\xcaO\xc3!\xcb\x84\x93R\xb0\xb1\x7f\xe0C\xc6\xb6=\xf6\xea?m\x9a<+H~\xf8\xda\x03\xff\xaa\x8b\x9fUY\x08\xf4\xe9TXL\xf4\xd5\xa7<\xc8\x0fw%\x91<\xa2[\x85\\E\x85\xfd\x0c\x1b\xd7\x8b\xaeq\xa5RL\xa1\x9af\x1c \xb2\xc5\x10\xf3\x18\x83\x1ab\x14\xddv\x81\xcd\x8c\x85\xf8\xf0E~\x93r\x16\x1bLS\xc5\x83N$\xc6L\x89\xe2A#V\xcaJ\xef\x1e\xc1\x19\xec\xc11\xfb5\xdd\x853\xd8\xe5\xbf&G\x138\x83)\x1c\xdbD/\x08\x91a\x04 <Ca\x9f\x90\xdf%]4D\x97\xc1~]\x07\x9e\xc1dzX\x13rQ\x87^ \xecq\xfe\xc4\xd3e\x9f/\x1e\xda\x1d\xe52&GS\xd8fDl9\x8b\x99\x81#\x13\x0eP\xf6\xc5\xdd\x9d\xc06D\x1e<{\x06\x07p\x0f\x07\xbb\xb0M\x89\xd7\xe70\x99>\xad\x87[|\x83\xe1Z\x8c\xf8\xc5#\x8f\x8f\x81\x05\xf6kz\xe1kS\xc9p\xf4jY%\xcdh\xb2_\xcfh2\x85{p\xc5\x9c\xe4)Vt\x8a\xd3\xf1\xdeS\xfe\xdd3\xd8\xdf\x9f\x1e\x1dP\x92\x88\x92\xb3\xfbOw\xf7v\xbdo:\xff\xbd\xc7\xcf?\xac\x7f\xedn\xb0\x1ajYhY\xa1Cm\x85\xa4%\xab\xd4%\x0b\xe9\x92\x1d\xec\xef\xef\xee\x03\x06\xf4x\x06\x93\xc9do2\x99J\xcbd\x9c\xa2\x99$\xae\x8d\xb1(_\x84\x9f\xd3\xb6w}\xbc\xc9\x18tl!\xf7\xe7.(>\xa0?\x0f|\x11\xb5x\xc1\xc4\xa8c\xd8\x86\xc9x\xba\x0b\xf7l\x1397\xb3\x7f\xb0;\x1d\xc3={\xb5\xcd\x0c\xc2\xf9w\x1e\x05T\xa3SH\xda\x10\xdf\x06\xa5\xfb)\x12A\x8c\xd8\x15 \x14\xe3\x14\xbc\xbc\xafI>C8,\xee1\xc2\x13\x85\x1b\xf5\x16 \xe9.\x1c\xc7\x0e\x18s\xb32\x10\x04\xf4\x16\x06\xd3\xdcXz\xc0`8\xba\xc9}\xa6\x9a{\xdfCD\xa5\xedEv[\xe8S\xfeE\x82\xda\xb7\xbd\xf0\x81\x04\xe7Iv[\x97t\xef\xc3\xa8l\"\xab`,\xdc.\xbbBT\xdd\xb9#S\xa0\x837\xef\xce?\xbcz\xf9\xe9\xf2\xed\x8b\xff\xef\xf2\x87\xbf|zuN\xcf\xd3\xd8&\x8b;U\x93)\x9b\xcd\x82\xcc\xe5=\xb1\x13\xed\xf9\x8cn\xa4\x88o\x92\xc9\x92\x9e=G<\xb5\x02M\xb6J\xb2\xe3\xb4\xba\x96Y\x00\xd8\x81\xa8\xb3l@8H\xf1\xf0Q\xed\xb5\xe5G\xe21\xc3\x8e\x07\x1f\xf6\xa6\x9cVZd\x99\xebY\xc5\xa1%e\xc8\x98\xa5\xe9\xf6\xb6p\xeb\xad\xcb\xdc\x89\x0f\x13OR*\xb6\x8fjg\x0c4h\xe6\xb0e\x90\x9d\xa8\xe7\xca\xf5\xe8\xc9\xfa\xfc6\xfc\xc2-\xe4P\xc5L\xcf\xd4:\xcb\x92\xf3\xf8o\x14x\x1cN\x8e\xa6\xb4\xe82\xac\xae{M\xb6\xc1\xb6\xb1\x85\xe2\x0c\xa3\x1fo&\xd8\x1e\xe0u$\xb5\x1f5\xe9\x05\x0d\x16\x98\x1dBjW\x1a\x8b2F\xe3\xb9\xa237\xd6\xf1-\xf6\x93<\x9c\xcc\xf66\xff+@{U\xc2\xf3\xb8\xa9e\x17LbF_\x99\xc3\x9c\x16\xbe\xd6\x8a)\xe0)wh7S\xa3\x9d _\x1e\x98\x1a\x01\xc1\xcef\xab\xbf\x81\xed\xa7\xf8\x02Y>D4ca\xd6$\x1bB2\xf3\xbe3\x93\x05`\xde\xd4\x0f\x161\x0b\xea\x86\xc6\x86j\xa1Tb\x00\xf0}\xa7\x05\x17\xe1\xe7\xb4\x08\x17\x83\xe3\xafX2\xb5\xe9\xcdQl\xf1-\x9a\x94\"\xac\x0cjk\xcbmb\xa1\xdd\xdf\xc3V\x19\\\x8a&\x0c\xadG\xd9j\x1d\xe6\xa4\xcf!\x1bd\xf3\xca\xdar\x03\xdb\xd7\xf4QF \xd9\x8b:\xba\xb7P\xac\xb0/\x8c\xb6&\xcc\xf0Eu\\\xee2s\x90\x15{\x8c\x0d'\xf5\xaf\x98\xc5\xa1\xcfdN\x92\x99\xd2\"k\x98Q\x86\xde\xe2t\x8b\xc3\x98\xc5\x17xD\xc9,\xbe\xe8B\"\xa9\xe0\x1cY\xff\xad\x0c$\xf2c\x97\xddZ\x89>\xccw\"\x94zh\x8e\x04g0Q\xe2\xe1Bs^\x84\xf9k\xef\x89\x11l%W\xfe\x94-\xe5\x8fy\xc2}\x06\x06\xdf\xca\x84\xe3\xbf\xc1\x1ee\x80\x8d\xc3?\xa8\x01\x88) )\x0c1\xb3\x18L'\xf8u\xe6\xd5\xc1\xd0!\xb3\xa6\xbc\xfa\xceI\xe2\xa24\x99N\xf2\xe0{\x90-\x04P\xb0YQZ\x0c\x1f\x04\x01m\xa2\xb1\x11>\x98[S\x02$\x18W\x0b!\x0ca\x10\xa4C\xaa\x8b!\x89f\xe9\x85\x95\xdd\x12r)\x05=P\xbch\x86;f>IO\x1d\xa5\x8d\xc2N\x9cW\xdc\x18\xc5\xce\x06\xca \xbc\xfa\x9d\xf6\x8f>\x153\xe6FM8g|E\xf4\xd6\x9e\xb3\x08\xcd\xb9mEg+dg\x8fS\x98\xfb\xa0Pz\x12\xfa\xdc\x1a\xab\xef\x8a\xdbp=9\xe8\xf3\x0c\x17\x0c\x0e\xc6\x8c\xea\xd2\x13\x95F=\x91l\xae\xc9GRP\x12\xbb1\x1d^UI\x19\xaf\x13BWpr\xb0s\x15\x97F\xb4\xa8(\x1a\xc6'h\xbe[\x9e\xb0\xe37\xf5\xe0\x86\xbb&\x11Jm\x8dZ\xd9KA\"\xd1e\x17M\x10\x8b\xa8.\xcb\xee\xf4\x9b.\xcb\xdeW.\xcb\xee\xf4Q\xcb\xb2\xd7Z\x96]\xcfo\x8a\xe82\xb1\x7fLZ\xb8\x0dV\xeb`\xef\x9b\xae\xd6\xe1W\xae\xd6\xc1\xde\xa3V\xeb\xb0\xb5ZO\xcd\xabu\xa0\x15O\xd9?\xfbZ\xf1.\xfbg\xef\xf1kk\x8a\x1f\xd7\xb5\xbah\x9e\xdc\xb5\xc2\x8a\xa6\xa3\x8e\xaa\xc5~\xb6\x02\x08\x9c\xc1\x0b>\x9b1\xa5\xcc\x07\x84\x87\x92\xc7\x93wh\xf2\xe9F+\xf8\x07\x8d`\x98\xcd\x99\xb0\xfa\x1a#\xdb\xf4\\\x9eO\xe3Q\xe2\x0ck\x17\xfd\xa6R\xbd\x91\xda\xd4N*D3<<tC\xba@\xb3Q\xac\xfd\xec\x94\x8e\x96\xff\xea\xfd\x98\xa7\x86\xba\xbf\xe7\xa6\xd0\xdc\x99K2P\xb6J7`\x00\xdd)\x1e>\x8a7\xcda\xb69Y\xc1\x10j\x15\x06Q\xac\xe2\xe1\x9d\xbf\xd8\xa4\xf3.:W<\xbc\xdd_7i\xb7\x93:\x86a\x14\xb2xx\xff\x9f7\xe9\xbf\xd7v\x18\x9a\x86_m\xd2p\x075\x0e\x83(r\x18H\x95\xc3&\x9494\xb3y;l6\xbd\xc4:4v\xd1F\xc6\xfag\x1e\xf9Rx+\x1e\x83\xcd\xbd@~J\xe6\x8e8\x02\xc7\x19j6\x0dF\x9a\xec\x81\x8b\xe4\xd9dmA\xa5T\xa0N\xfeZ\x85Iw`\x170J\x1bzd\x0b\x122\x146\x9a\x9d\x88\x87\xe3\x80\xfb{\x0e,kY\x88\xd9/\\\x9bE\x9c\x16k-xr\x17f\xb2)F\x98\xffRK\xca\xdf9p\x81\x9f\x9es\xb3\xe9\x9a\xae\xa8\xddy\x10Fr\x7f\xc9`\x15\x96\xd1\xd2}\x12\xfc6}xr-2l\x80#\"\xe3\xd6\x8d\xf1\x10\x80,\xc8L\x10\x04\xe0x\x9e\x0f\xce3No\xd4\xe1r\x9e;]\xebb\x91'\xf5\x1a\xb5\x7f\xfb\xad\xd6y<\x05\xb3\xea\x9e\xdb\x0c!\xa2v\x84/\xc8\xb1^/\xaf\xed\xb6\xb4\x17\xcc\xd6,naT\"|\xdd\x11\x03\x8bv\xef\xefQ\x80\x83/b\x1d5\x9b)>\xee\x8f\x9e\xd3\"@\xfbh\xdb|sx\xce\xc7C\xe8_\x9dnBM\xfd^\x17\x02\xad1{-\xa4\x03|H\xeb\xbf\xf2\xfa\xaf\xb8\xfe\xab\xb9|\x83\xc4{\x19\xba\x0e\xec\xd0\xd3\x83!\xcd`\x87\x1e\xa7P\x96\xe8e>T\x1e7\xdf\xc0\x00\xc8B/\x18s\x15\xacb\x99\xc24\xbb\xe3\x13H\x98!\xedh\x94\xd8%\x80\xd1,a\x12\xc0\xc5,\xe9\x94\x00f\x18\xbc,\xe1:sZ\xdb\x0e\x83\x1f!\x01\xcc\xe0\x19\x1a!\xa3\x04\xb0\x82g\x90\xd9%\x802\x94\xc2(\xc2C\"\xbbI}q\xe3\\\\J\x91%\xd7.Ao[\xf7o\xd4\xd9\x9d\x1aR\x03\x03\xaavu\"\x99\xfc\x7fmG\x93\xce\x8e\xd0C\xdf\x0c\xc7l@L\x8b\xb9Y\x93\xb8L|$\xddt\x9f\xf3_\xadVj\x0f\x14\x1d@\x99\x83\xa6\xe4,J\xf9F\xad\x9b\x8f0\xc2\xe0\xb8x\x1d\xa7\x18\x97\xc03\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0f,P\xc7\xcc\xe7\x91t.<\x16\xc9\x11\x92,\xbd\xa6\xfc\xaa\x88Fk\x0f\xa8q\xcf\x00\x85\x18D\xea\xc1\x19\x05\xcc\xac\xd8\x08\x899\x07Ay3\xd9\x9f\x89\xd5\x1db\x94_\xdb\x18K\xa8pGO\xea\n]\xacU,98\xc9\xc1{\x9e\xd7NM\"\xe2 \xe3\xef\xf0\xafA`_r\xeeeg1\xab\xca\"\x9e\xd7A\xa9\xec\xf1I\xf2:\xae\x805^\x86\x02^U'Q\xabJo\x08\xff\xc5/\xdbJ\x0b\x94c\xde\xf2^\xd6k\x18\xdb\xc5\xfb\xbc\xdc\xa0\xcf>\x8e\x8b7y\xb5A\x93_\xab\x8a\x80\xa6\xdb\xdb\x0d\xba\xed\xe5\xb1x\x9b_6h\xf3\x1fN\xd9q>h\xf0\xbd\xdc\x14Z\xf3o\xc4I\xd9,u\x01\x98A\x13s>\xd5\xbd\xa6\x98\xc2\xb1\xdf\xf9T\x97v\xfd\xdf\xf3\xf7\xef\xfa8\n\xbe\"\xe6\x1bJ\xdb9\x06\x11\x0c\xc4\xccr\xcc\xc32<\x06\xdd\x93\x0e\xe9\xa3&oFp\x19\xe6\xb9\x88\x0d\xe6\xf7\xc3R-\xf8*\x05,\xef\xe1\x14\xf6\xc6G\x07\xb6\x90q\xbfv\xe1l!A3I\x92\x1ec\x16\xac\x98\x03\xa3\xce\x97\xd9\x8c\x992@\xa2\xc1)js\xed\x0c\xe40\x87\xde\xcf\xff\xa8S\xfc\x16\x93{3drv\x1bDw\xcb&\xf5t\xb78r\x95\xd8\xa7\xbc\xc1\xb2\xa6+\xa9,\x82\xe3\xb0\xfbG\x98\xab\x1c.F\xe61}\xd3k\xb7\x9ce\x1dS\x8f\x07M\xfdm\xd7\xd4\x15St\x8d\xf1\x90\x877f\xc3\xcbk=^\xc659\xb1m\xd7\xf2Yv\x01#\x98\xee\x1f\xc0\xf7\x90\xcf2S\x90X\xd8t.\x9f\xba\xe6\"4\x12\x13\xd4H\xb0\xd8\x18\xf6H6\x0e#\x01E\x04\xef*NK\xbb}\xc7\x08\xc9 k\xdc\xb7O\xf9]\x9c^c`\x13Lj\x00W\xe4.K\xe7\x82\xf6ak6\xd0\x0b\xf7\xa5*\x82@\xa7\xc8\xc7K!\xbes\xd8\x18\x8ca\x80\xb8\xb0D\xc4\x0f\xb1i\xb2 \xba\xa8\xf1\xe3\x9fY\x03\x03\xe9\x91\xfe\xf4\xd8t\xb6\xe615\x88$t\xb0\xc7\xc1\x9c\x93/ \x8b\x17\x06\xae\xe8\x87\x1ef\x88\xd4>\xfd\x84\xdbS\xef\xe3\x86\x9b\xf5\x92\xca\xed\xd5\xadud\xaf\x17\x1f\xa6\xaa\xe1\x0ewG\x8b/\x00\xf5\x10\xdb\x18\x94\xe7\xd938\x84\xef)\xfd{\x061\x1c\xc3\x04v \xf6<\xb4\xd16\xbc\x184\xe1\x8f\x1bMxoz\xb4wt\xf0tz\xf4\x8df\xbdg\x9f5iOk\x17\xa7\xc5\x16c\xd0\xe4\xde\x0d\xbe\x1f_s\xb0lG\xb5\x03\x9e<\xfa|\xfe\xa4\xcc\xc88\x9dZ\xaer\x7f\xcf\x16`\xec\xb3\xa5\xf6!\xe6<\xae\xdc\xc6t\x97\xbd\xa3+\xb07h\x0c?>z\x0c\x87\x961\xecO\xd9;:\x86Cm\x0c\xf2\xafB\xa7\xeb\x86\xd8\xef\x08\xaf\xb8aJ\xeaS\xf8\xaf\xff*}=\x08&\xe1\xb9O\xfe\xeb\xbf\x88\xcf0\x05\x0bC9\xa2X\xbb\xbe!\xa5\x888RR\xc4^\x17\xe5^\x13\x92\x8c\xe5\xea\x92\xbe!\xe2\x1bR\x7fC\xa4o\xca\xba\x04\x93\x1d\x1b\x03\x985:\xcf\xda\xea\x1a\xd7\xc2\x1a s#\xf9IM\x81\xc1\x8e\x9eeE<i\x1d\xe67\x16\xe2\x0c\x0bw\xa10\xe7\x9cN\x889\x19\x93R\"\x80M\x04)\x00S\xd2p\xdbAS= 4\xf6CD5\xf8\xe9\xd5@\xb9Z\xc9%3Bp\x83T\x9b 'd\xf9F\x07\xec\x13\xc7mVr\x9f\xbdIM\x1c\x8dFt\xda\x84\x0b\xd7\xbf?\xa5t\x8fw\xc2\x89Z\xf6\x0d\x8c \xbb\x80\xefM\xae\xddfR\xd6<\xe3\x1f\xfe>3\x86\x11\xec\xec\x101\xef\x13<\xda\xe3\x9e\xe9\xd2\x0f\xbe~\xc2\x87C\x00\x02o\x90\xd4s\x9c\xf8\x9a\x82\x83o\xdc\x90\x1e'\x07\xedc5\xa8\xd3\xa9\xa5Sn\xe9\x81\x8b2\xb9@\x9c?l\x1c\xed\xcd\xfe\xbaq \xb5\xa1\x0cf\xc88v\xa7\x8f\\\x8f=}\x1c\xae}A\xe4\xa2)\x16\xb18\x7f\x93\x83\xa7O\x9fN'\x94\x8b\xa8\xdf\xef\x0e\x1c\xf6#\x97\xaf5\xec\xd6\x18.D\xe2Li\x06\x93\x83\xf6\x14\x94Y\xed^t\x8a\xf0\xe9\xb0\xff\xd7A4x~\xca?\x9fL\x0f=.\n\xdf\xe1\xb4\xe3:\xbbu)\x95\x00\xdf\x03\x06\xf3\xec\x05\x07\x7f\x0f\xf0G\x94\x85\x91`[~q\x82\xe4e\x1b\nf\x1a\x14\xcc\xbb\x17)3,Rf]\xa4l\xc0\"}#\x90\x89\xbe\xd7\xf5\x89Gu\xde\xf7\x80\x11!v\xa4{0\x11\xa9\\\x07@\xd7\x0d\x80\xab\x15\x9a\xb5\xd7\xf1F\xf8UX\x81\x8bu\xedw\xa7O\x0f\xe8$S8c\x8c\xd0x\xf2\xf4`\x0c\xf7\x90\xc2q?\x05\xb2\x01\x8c~\xf4t\xd8$\xee\x15\x10\xfe\xfbM\xe7\xdb\x81\xfa\xcd \xbd\n'i\xd9to\xd0p\x87\xad\xfe\xf0\xe1b\xcf\xedA\x0f\x00\xee}\xc3}\x9dd\xa1\x01\xba?n\xb816\xd9(\x1a\xb6\xc6\x82\xeb\x1b4\x8co\xb5j\xadaL\x86\x0e\xe3\xc7\xac\xbaJ\xc8#\x97\xe3\xb0w\x1cc\xc1\x80\x0e\x1b\xc7#\xd7\xa3\x7f\x1c\x93!\xe3@\xe6\xd9\xca\xcdX\x848<\x9d\xa7\x82\xe0\x98\x15\x0b\xaam_\xea\x06\x04:2I=\x96t\xcc\xe6\x88\x12\xdbc\xfce\x1dN\x1fx!H\x13r\xba\x14\x94D\xdaB\x93\xac*#\"N\xa1\x84'\x1039\x90\x15\xbc\xd1\xca\x9dP\xac^I#\x99\xf0w\\\xc9\x14\xabXW\xd3`\xa4$\xad\xa6\x10\x9f\xd5+\xba\xb3\x13c\x808N*\x18\x964\x16K\x9a}\xb3%m\x11\x15\xdd\x16,\x86E\xd5\xd7\x92\x02\x8b\xfd}\x1f\xf5(\xd6|?\xb8;M\x06\\\xb7\xf4\x04\xb4\x96O\x197\xf9\x1f4\x11\x13\x05\xf2\xd5s\x99\xfaLr\xdc5\x9b3\xc3\xf5\xf0\x9b=\x9b\xb0=C\x11)\xa5\xa9>(\x1dl1\x1b\xfb\x91\x166\xd2>\xc9\xc1\x94\xf2\xef8I>\x1b}\x92|\xee\x86IN6\x9a\xa4\x89Z\xf9\xeaI\xee\xf9\x92H|\xd0L\x19\xcd\"f;\xdd\x93\xa6;m\xca'\x07\x96\xbd6\x1cg\xba2\x1f\xcd\xdb\xdfI\x16I+\xf3;l\xff\xe6+cY\x95\x89eU\xa6\xe63\xb3\xdb\xbd2\x93\xc1+\xb3!\x8a\x15\xd2cyY\xb6\xac\x06G\x02\xd4\xb7\xd0\x03\x86\x8e6\xcbN[\xb8%f\xa8d\xc7\xe0\xe6m\xb6\x07C\\lF,=Qz\x1f\x89\xc1+\x19\xdd\x08\x917wJb\x7f\nsL\x86\xdb\xe9\x84.\xf0\xcb\x10C\x14\xf9\x1a\xdew)\x96\xaa\xe0\xf9s\x18S<\x1a~\x13|\xb5!\x05\xf0?e\xa3;\xa8\x88\xaf\xdal\xb1\x17\x12\x81\x915\x04\xc6\xc6;>\xfa\xfb\xec\xf8\xefB\xa0L\xa6O}\xd8\x99L\x0f7\xa7Q\x14\x1d\x12]Z\xe6\x930\xf9\x1a\xfa\xe5w$_v\xa7O\x0f\xe8\\Q\x860\x0c\xb4\xff\x8e4\xcc\xefH\xc2<b\xa2\xbf#\x1d\xf3;\x921M>\x04_K{0`\xca\xdd{;\x80\xc4QH\xa2\xaf\"h~Gz\xc6\xbeD\xea\xf5U\x8c$\xc4-\x1e\xb0\x8a\xff@\xc4\x8fE\xfe\xd4\xbd\x8a?i{\xd6\xe7U\xd1\xf4\xb4\xe9~i=M\x06\xf5d\x93\"uw\xf5\xe3c&e\x13\x14m\xd4U\xef\xac\xa2l}\xb7\x19\xdd\xd2\xa4\x9b\x1c\xa3Cd\xed\"\xd8\xd8\xd5\x97\x9a\xa7\x97\x94\xa5\xa41E\x90+\xd0\x0fI\xdd\"Wq\xe45 \x88\xce\x0b\xcc\xfb\xb2/\xbdS\xdc\x8a\x84\xd2\x0cP\x1eVO\x13\xa4\xcb\xf0\xa6\x0c\xf3kR\x9e\x97a^\xf6gC\xad\xcdx\x80\x19kj\xc30\xf7PdU\x1e\x91\x0dz\xc8\xbb\xc6\xcbZ{\x95\xce\xfb\xdb\xcaU\xe7\x8bz\xf5\xd5\x1d\x95\xec\xaf\x08\xc6^\xda\x916Jy92Z\xe5\"A\xcb\xf4[\xb99n=\x12\xc8\x8d\x1b*\x06]\xe6\xcaA\xec\xb1#$M\x0c,]\xc2\xe4\x04b\x9e\xd5`g\x07\xcd\xc2b\x18\x01\x03\x92\x14\xd6\xd1_\xa6\xb8/\xb5\x93\x11eA&d\x17X\x18\xaf\xcd\xb2\xfe\xb105\x9aY\xda\x06\xfd\x1b\xf3\xb9\x14\xa4\xac\xf3\xb8\x94\x8a\xa9N\xca\xcc\x9e2\xcf\x9c\x0bS\xe8\xfd\xba\x00\xc1\"\xc6\xf4\xf6\x1b\x00\x02\x83\xd3\xd5\xc6\x99\xadEz\x02\x0c\xa9\xc1\xd1\xa6vC\x8c\xe9s%\xb8\xd0\xfe\xc4\xe7Y7\xfa2#\x81\xec\xe2$\x07,\xb7Y\x1e\xd1\x87n\xe9t\xff\xa0F\xd4\x96\xf8h\xf6|\xabz\xb2\x19C><\x9b?{\x9d\xf1{h2o\xcb\xb2c\xbfj.\xe0\xdc\xe6Ul\xf3\xfch\xf5\xc7s\x97\x98\xf2\x9d\xf3\xc5b\xa9\x92\xacF\xbf\x1cF\xca\xe0\xe7\x19\xc3\x0dj\x91\xd5*\xfa\xfd`O`\x0c\xe7\xd1\xc4\xcf\xa3\xed\x9b\xa1Tf\x1bl\xe3\xcc\xab%\xba>SF{\xcc\x93\xc8\x8d}h\"{P,gL\x0bo\x87'\x06\x8b}\x04\"L\x93a\x01\"viB\x85\xb6|r\xacB\x96Q\xf8g7\x15)\xeds)\x01\xa6\xd7\x91\xbc\x99\xb2\xdc\"N\x95\xf9\x10\xd6\x13\xe0\xb6z\xe8\xa3\xacLB\xc0\xc5j\x96\xc1\xbfB\xb8\x81\xcd^\xd9\x8a\x91\xa3\x8e\x81N\xf6op\nOf\xff9\xfa\xe5\xc9x\xe7\xe8\xc5\xce\xff\x0bw\xfe\xb6sy\xf1\xe4\xda\xe6z\xf3\xba;\x84+\xa0r\xf6\x0c\x9c1:\xfd\xabiB\x8f\xb5\x02ul\x96\x0e\x7f\xb6*\x00o\xcc\x01\xda\x08\xf0\xa88\x13x\xd2\x9b\xe3\xb2q\x90\x89Ex~S^\x87\xee\x14*1\x0bl\xd3J\xec\xe0\xc1s\x8c\xe6\xbd/P\xf4\xfe\xd3\xdd\xbd\xbd.\x80\x1b\xf3\xfcp\xf6\x1aP_\xd2\xe7\xb0\x7f\xb0;9\xea\xabL\x1f\x96\x88b\x97\x8eggB\x07\xc3\x93ILw\x8f|\x98\x1cM|\x98\x1c\x1eu\x80u\xf1DYZ\xc6ie\xce\xa5$\x1e{\xf6 \xe0c\xaf@\xa4~\xb2J\xf5\xe4\xe7\x1fi\xf4\x98\x10\xaa\xb3Jo/\xdd\xd9\x95\xf0\x98\x1c\xecN\xad)\x04\xc53lU\xfc\xdfy\xc8)\xf7\xd18\x80\x11\xa5\xebvx\n\x82g\xcf`\xc2\x0c]v\xf8l\x8c-\x88\xb4\x89\x9c\xef\x190\x1f;&o\xeeo\xca\x12U\xf4\xdd3\xd6\xe1\x84eg\xe9K\x7f\xc0\x07\x93v\xcf\x83\xef\xdft\xbc7\xb0\xf7\xe9f\xbd\xc3\xf3\xe7\x98\xcb\x00\x03lcB\x83\x94\xfe\x9a\x1e\x0e\x1a\x16\xee\xd3\xb0q\xedn>.L\xba0\x9d\xee\xb1\x10\x1ep\x00\xdbt\x848\xba\x0d\xc6\xda\x03\x1aq\x1e<e\x83)\xce\x80H\xa7\x15es\x02\xeb\xcc\xe2E&7\xc9\xe6\xbb\xf7\x88\xf9\x1e\xd2\xf9\xee\xf1\x90%t\xfa\xf2\x84\x1f\xb7\x06\xadR{L\x8f?\xa8\xd5\x94\x9f5\xee\xfc\xa1\x13Y\xe7A\x995\x19x\x1a\xde\xa6\x13\xcd)a\x8b:C\xae \x92 (\xf3x\x85\xe1q\xe8\x1f\xae\xc7\xf3 \xae\x930\"\xee\x93\xff\xfc\xa5\x18\xdd\xffR\x8c\xfe\xe5\xc9\xb5\x0f\x8e!S?}\x1e\xdc\xd2\xab?\xf9\x1b\xd6\xf3\x1a\x92w:,x\xdcI\xc3|\x8b\xa8\x92\xa8B\x19\x9d\x82sj\xf9P\xcc\xa1\xbd1n90M\xd1_{\x98E\xd5\x97\x8bq\xc5\x8c\x05\xc14>(\x14!\x92\xb4&V\xd2\xdar\xf6\x99p\x86\x19X(i+\x93\xab\xfbu\xd6\x7fy\x8cw\xa6\xe3t'\x13>\xb5\x07\xbfS\xb8&h\xa8\xd4}\xea\x05,\xe8|\xd3q\x19\x90/\xeb,/\x8b:\x85\xf1\xe0\xd6\xf6\x0e5\x8a:f\xc5GZ1\xa5\xd3\x9cY\x86a\xf0y\xd0\xfb\x0b\xc7<\x02\xfb\x89\x15'\xa7\xc0\xefU\xc6\x8c\xae6\xfdb{\x1b\x90\x0d8=\x95\xee\xdd\xc3f\x93\xda\xdd\xf5\\\x16\xb1\xdf\x07'\xcaIX*~m_\xb1\\\xbbOw\x8d\xeb\xb5\xfbt\xcf\xb0`\xb4|_+\xafx\xf9\x81V\x1e\xf2\xf2\xa7\x9e\xc4\x0d\xd4\x07\xbbh/\xe6\x0d\x8f\x0e\xbac\xd0}\xa6\x1c?\x03\x0f\x9f)\xa7sV\xcfk\xad\n\x0d\xa2\x84\x84\xb9\x8b\x87\x9cX\xb3q\xddt\xa7\xd4FQ\x10)\xdd|6\xbe\xf0!\x9fMt\xbb\xff?\xb4\xffRd\xc0t\x0ctWT\x89\xd0\x9c$\x04c\xfc\xc4j\xf95\xa1\x102S\x0b\x97!\xdd\xd7J-,\xb0f\xe8+{_l\xb6\xf7O\xf7,gH\xf9\\_5c\xf8\xfb\x13HwvN\xda\xf0\x17\x05\xa8n9K/p\x01\xa5\xbc\xd1\x1aU\xc9K\xa5,\x9f\xe6+\"\x8ff\xf0\x90\x1b5\x92\x88y\xdad\xc9!\xf4/\xf2\xe8\x8b\xf9\xf4\xe81k\xd8,\xdf\xe5\xe5<,\xc3\xcbK\xe3j\xe4.\xf1\xe0\x0c\xd2\x99E\xbeW\x17\x1f\x83\xb3\x0c\x8b\xa5s\x01\xc7\x90\x06\xabp\xfd\xd8\xf9\xec\x8d-\xe0s\xa2_{\x06\x0e\xf0v\x8b\xa2\x8d`f\xc6D#9\xcb\xe8G!\xe5c\xc7<\xb1\x80\xb0\xc9d\xf7\xb1\x83CP#NH\xec6\xd2N\x8aY\xf3\xaf\x18\xeb\xd3\xb1a\xa8\x9a\xa8a\xd8Hmbbz\xbaY\x0c\x01q\xea\xdbb\x1bT\x12a\x14N\xe3\xb1s\xc6\xd8\"\xaa\x04\xe8\xd8\xe8\xbd\x81\x9d\x98\x1e\xb8\x9d1=l\x1b^\x17\xa7*XB\xf3\xa8\x94:lh\xc6\xd6\xf5\xd8\"\xc1\x0d\xc9\x0b\x8a'j\x0dS]TG\x86sn\xc6\x81\xe3u\xd7\x98\xd0\x1a\xb5]\x8b\xb9\xc6!\xads\xa6,{\x1bO\xa4\xe4K\xf9)\x8e>\xab\xb1\x98;bK\x82\xd8#Q_\x96B\x97\xb6\x08\x0f\x94\x8e\xba\n\xa3\xcf\xc6\x18\x0f\xa2%[\x98\xfb\x9b&\xab$\xb4\xc3J\x9b\xbf\x11\xb1\xb7\xc2.b\x1c\xa3&\x8d{\x02\xd5\xf6$\x80\x14\x16@\x81XI\xb7+X,\xb6\xd8\x93\xdf\xb1\xddb\xbd5}\xe2\x0f\xc0k\x86D+\xe7\xfa\xcd\xac\x83x\x1e\xfa\x86\xda\x93\xdb\xf1\x9b\x0e\xb5\x95{U\x7fzG\xdb\x93\x89\xf1[\x8f\xd6\xb7ir\xc4\xd35\xe0\xde\xd8Z \xcb\xc1\xe9}b\x1ci\x88\x16|\x8a\x1c6\x137\xc1\x83lV\x8dF\x17\xf2-\x99U\x1dq3\xe1[\xac\n\x8bX\xcc\xa5\xc4}\x0bb|\xdd\xc7\xe2? U\xdc\x801 N\xcb,\xda\xee\xde\xa6,\xda\x81\x89*\xc8y\x96B\x13y\x9f\xf5\x91\x8eqJ\x81 \x99q\xae3m\x14\x13\x0f\x86\xe6*\x9by\x86\xe0L\xeb\xf7R3\xe2\xaf\x98e{\xa3\x98\x9c\xa7\x1ek\xfe\xe4 \xb8\xf4\x02L\xa1\xa5\xa2\x84\x1c\x8e\xc1\xcd\xdc\x9cN\xcb\x9734V\x9e\x0f\x99\x1b\xb3H\xb0\xd5\xd0\xccr\x88\x1aL\x8a\xaa!\x01\x88\xd3\x8cc\x04\xde\x80gD\xe3\xa6E\xa1#\x1c\x9a~M\x19b/\xee2\xc5H6\x0fO\x1c\xab\xb8\x85\x01\xf8\xc0%5.1ghKYf\xe8\x98\x9fh\x9e\x13\x1a\x7fJ\x7f\x8f\x15?\xe4f\xee\x03\xb2\xae\xfd^so\xb6\xc6\xb4)\x03\xf3\xb7\xfd\xce\x83\xcb\xa5|\xa3\x1b\x93\xbafZO\xbeH\xa9\xbbwp\xe4\xb9\xce\"\xcb_\x85\x91\x08\xa5\xf5\xa8f%\x1e\xe0H\x17?p\x1e\xe0H\xe7\x0d2\xce\x1b\xe8\x10\x8d\x891\xf6\x9e\x1eJ\x8b\xe2n\xc6\xd0\xf9\x94\xfa\xe2 \xbd\x8d+\xdb\xca\xf4\xf1\x0c\xa6\x94~5\xd8)\x94p\xc6r\x15s\xf3\x8d\xd2g\xc9N\xab$\xa1'\xbcPP\xd7\xf4\xc2W\xa4#\xa8N\x0cy\xe2!\x16g\x15#\xd5\xa6\xa8P\x16v.N\xe4\xf0\x80\x91R\x19\xa1e\xa1Zv\x8b\x01\xd9##]\xcc\x93A\x1a\x12\xa2\xaa\x99 \xd3v\x05\x92V+\xc2_g\xed\xd7\xb7y\\\xb2\x97\xa1\xf2\xee\xc1\x87\x02\x19\xc7\xd8-\xe8\xb0\xe8\xcc\xa2\xe6\x90z\xc1\xf5\x90\xa8\xd3t\xc3\xf8V\xf9\xb00\xb3A\x96]\x89\x1a\xd3\x18\xf3\xe6D\xca\xe6\xecJ\x9bC\xc1\x99\x14\xba\xe8\x182\xce\xe1\xf3\xf7\x14\xae\xa5\xea\xfb\x149\x1c\xb9S\x1e\xc1\x87nh\xd4\x8cAz\xa3\x1d\x06q\x10\x8a\xe6 \x84\x86\x83P\xb4\x0e\x02\x8fa\xde\xde\xf4kR\x1a\xb7\xbc\xa0\xe5\x86\x9dV\x8fB\xd8}\x14Z\x89y\"\xbe\xdb\x11\x1d\x0ff\xc3\xf9\x16 I\x92\xe1\x1c\xdaD\xa9\xc1\x8f\xaf^\xbf\xf8\xf9\xa7O\x9c\xb0\xcc]\x0d\x0e\xb3 \xe7\xc70K\xdd\xfd]O\xcb\xdeO\xbe\xac\x938\x8aK\xfe\xfa)\xdd\x16w\x7f\xf7\x90\xff{\xe4I$\xcf \x18hgP\x05\x8d\x0c\xa9;m p./I\xf16\x9bWZ>\xd6AKG\xdb\x93\x05\\\x8a\xf5C\xea\xd6\x1abwz\xc0AI\xea\xee\x1eq\xaa;u\x0f<\xd7\x11&\x1b\x9f\xc2k\x01Z\x9c\x97\xe7\xe7\x1f\xab\x84\xfc\x14\x17\xa5\xff\xf2\xfc\xfc\xbc\xbcK\xc8\x8f$J\xc2<\xa4#\xa1e\x7f\xa2p\x85UHb\x92\x96\x1fIT\xe2\xcf\x1f\xdf\xbf\x95\xfff\x8d\x8b_\x9f\xb2\xcf$e?\xc22\xfc\x94\x87i\xb1 \xf9\x9b\x92\xac\xb0\xf0u\xcc;\xfd\xf7Oo\x7fz\x91$/\xb3$!8y,\xd1~\xbe\xce\xf2\xd5\xab\x84\xd0[\x8c\xbf\xcf }+J\xde\x92y\x1cbco\xe3\x15\xa1\xe8\x96\xa5\xe9}\x17\xae\xc8\xfc]6'o\xc3\xb5O\xff\xc5:\x1f\xc2\x98\xce\xe1\xaf\x15)\xd8\xd0?$\xd5u\x9c\xf2\x7f\xd8\x97\xe7\x7f\xfa#K&\x87\x15\xce\xff\xf4\xc7w\x88\xa5\xc5\xaf\x0fa\xb9<'\xd7\xf5\xcf,NK\xf1CZ\x85\xf3?\xfd\x91\xcd;\xcb\xd9\xa4\xcf\xd1D\x95\xa1sV@\x97\xfb|I\x08\xfb\xfc\x13eg\xf20\xfa\xfc\x92/x]\xc0~eU\x84#r\x82b\x9d\xc4\xa5\xeb\xf8\x02Z\x8cO0 ~X\xcb\x80\x8b\xd1\xc8\x04g\x11\x1e\xce\x8a\x8b\xf6\xbd\xa7\xe0%\x9fE\x867h0I\xe9\xf2E#\xf4V\xa14\xe6<\xdeJf\xd5\x05\x13\xd2%(\xf9\xa0@\"\x9bE\x94\xab\xc8\x02\\\xd7\x9e\x13\xaf3<\x14\x8e\xfe\xf6P[\x1am*\x96\x13\x02D\x0eH=\x1e\x86\xf5\xd0\x87\x9dI\x1f)e\xbb\xec\xdd\x94`m\"\xd7\x10\x80\x12\xf1\xf72L\xbf+\x81\x0e\x06V\xa4\\fs\xc8R0\xe6\xeaii+7\x1b$\x07-\x83Y\xca\xa9\x0d\xeav\xd2Y\xa8\xc7\xef\x13o\xa6\xbe\x1e\xa1\x87\x19\x16ZR\xa4s\xe3+\xb1\xe3B\xc8\x8b\x80Mlc\xd3\x9f\xa1\xe5\x8eF\x91<z\xbf\xd8\xbc\xcd\xad\xdfg\xb8\xb6\xf3\x91\xa57$/\x81\xabC\xcb\x0c\xd6y\xbc\x8a\xcb\xf8\x860\n\xcf\xe9;\xbb\xf6}~j$\xcc\xa7\x13\xb3~\xf1H/f\x98\xe4h\xea\xb9\xce\x9bW\x97\x1f>\xbe\xff\xf4\xde1h\x1aeY\xcc\x83\xfa\xba\xd0^\xb7`\x0d\x1dl\xc9\xa9(w2=\xf4\\'^\xe4\xe1\x8a\xe8\x1d\x89'G\xe8b\x13\xab\"\x92$AA\xc1l0\x8f\x8bu\x12\xdeQ\xac\x97f)q|\x9c\xfb\xa1\x17\x84\xeb5I\xe7/\x97q2g\x99\xca\x83\"\xa7\x80\xd2\xf95\xbc \x8b(\x8f\xd7\xe5\xb1\xe33\xabV\x12DYZ\x92\xb4\xfcs\x9c\xce\xb3\xdb`\x9eEH\\zA\xb6&\xa9\x8bn\x03,j\xa7\xf3\x8c}\xfa\\T ^\x9f2\xc5\xf1\xb3_\x9e\xf0W\x98\x81)\x88\x92\x8cE\x8c/\xf08\xbd>\x81|g\xe7\xc4\x03\xae\x9a\x94t\x8d\xb3l\x96_\xd8\xad\x02\nWS\x89\x9a\xaf5O8\xcf\x94\xd7\x94\xa4\xed\xe7\xa7\x8c\xf0\x89\xabf\x04m\xdb\x0c\x93\xa2\x12\xb7\xf4\xfc:\xdce\xe8\x83\xfa\x9aK$)\xc68e\x0eX\xb4j\xe1\xaaY\x95\x08\xd2\xe0\xc7\x10\xbb\xa9/'\xe8\xed\x07\x87\x02}\xa0\xf7hDb-=~\xae8\x96\xf6\x01?\x9b\xa4\xabx\x17\xbe\xe3\x0e\xce\x1eW\x84\xbb%\xfa\xf5\xb0\x10\xa8\xa9\xb71\xcf.\x11t\xbb\x9e\xeb|&w\x85~\xf2\xd9\xa5U,\xcc7\x1av\x8e\xe1\xa3\xee\xc1\xc5?\x98\xec\xe7\xf1\xa34 #g\xce\xe5e\x94\xe5d\xe7\xd7\xe2\xb2X\x869\x99_^:\xa2O\xf3;\x8a\xe8\x1f;\xa1XL(f\x13\xfa\xed\xa1o:6\xc4\xe9DYZ\x94y\x15\x95Y\xee/\xc3\xe2\xfdm\xfa!\xcf\xd6$/\xef\xfc\xb8\xf8 \xce\xef\xfb\x85\xbf\xe6\xc5o\x8aW5\xbf\xe4\x97\xd9OY\x14&\x84a\x03_\xa0\x05\x9fc\x1e\x99j\xdbl\x95'{^\xb00\xcaTtQKf&\xf6\xfbV\xd6\xcc\x98\xa3\xcau+\xc6#\x9er\xdb\xf9\xb2\xb9\xc6\x18\xd0\x98\x99\xd4\xa0\xb8\xa5\x0d\xcdUfs\xcb\x10PA\xc8,\x94\x17\xbd\xfb\xb7!W9\x9d\x1cy\xee\x96\xec\xeeBq\xcb\xbe\xc7s\xde\xfb\xe0\xb0?\x1c\xbf\xe3\xb0\xa1\xfd\xc9%]\x8a:S>\xf7O\xbaD\x83\xaff\xc8\xbe\x1d\xc5I\xe8\x8d\xb7g\xb6\xaf\xe1\xed\x9a\xa1\xaebHvf\x17\x041@\xda\xee`\x9e\xa5*\xffI\x9f\x07\x06\xbc(\xe0\xc6\xe5m\xe66\x92\x8d\xeb\xad\x9d\x19&\xc2\xfb\x99X\xf7v\xc3[\xb071\xcb\x15[\x9cm\xebF\xd4r\xd7\x02\x89\xb7\xbc[]\xa4K\x08\xd5\xf1\xbb^\xefm2\xed:A\xfd[\xd5%d\xaf\xf3\x11\xff\x9c\xce\xc9\"N\xc9\xdc\xa1H\x84\xc9\x8f\xf8\xabwU\x928Fg1\xa4E;\x119\x0e8\xbf3\x94Jc)g\xc4\xe0\x98\x02QX\xa7\xe6\xd5\xf4\\\xe8\xd1\xca(\n\xbc\x12\xb1\xe7q\xac\x9d\xa1\xb0\x08\xb5\x00\x0e\xab\x80\xc3u+v\xca<\xcfFV\x03KBCP\xe3 m\xdd1T=\x80\xc1D\x02\x8c-\xa8?\x0f\xd3y\xb6r7\xdeM!\x92d\x86\x8a\xaeC \xc2(,]}\x17\xe9xK\x1f\x1c\xef\x92\xd2\x8e\xa3Q*\x92\x04q\xf8\xb1{\xf0x\xb4\xbbk\xbe\n\xfb^M\x8f\xb6/A\xee\xc6\x1c\\\xc7\x9c\xf4\xe3\xf2\x93\xc7\xae\x00\xdd_\xad)fA\xf4\x9bn\x8a7x^\x93\xddn\xaa\xe7\xa8\x9fS\xfd\xef\xa0z\xf6\x9fZ\xf0\xf1\xbe.\xf1\xcb\xcc \xaao\x12\xff\xbb\xf1\xf1\xc1\xc4\xb4\x00\xc1b\xc8>Rn\xc2^ $h\xdb\xe6\x92\x10\xa3\xad\xf3l\x15\x17\x843&\xa5+O\xc4\xea\xc5\xa4y\xb4\"\xd3$\xfdN\x0d\xd2\x9e\x1f\xc29|\xe0}Id\xa5=\xf3!\xea.\xd2\xdalX~\x1e\x04:\xceI\x91%7\x84\x03\xd0\xba\xf0W\x96\x858\xd7\xddZ\x1e\xbe\x82\xff\x98\xec\x99\xa5\x05\x93\xf1#O/\xb3?m\xb2JJk\xc5n\xc6\xffq\xd0L~\x04\x0e\xcc3R\xa4\xdf\x95\x98\xf7g]BN\xae\xc9\x97-\x8b\x8e\x94\x83\xd3\xaf\xba\xd0\xf4\x82b\x8e\xe4\xfe\xabiD\xeep\nO\x82'\x9a|\xc7\x88j\x9d'\xc1\x13\x07f\xe5\x85K\xb4\xbd\x128\xb6\xb5p0\x04o\x93Y~\x81J%\x1f\xb6\xac}@\x0f.7-\xef\xa6z\n\xf3\xe5'A\xa3\xfb@ e\x1b.Tn\xeaN\x0f\x0ft/\xdc\xb8~u\xa8\xbfB\xd2\xceD?\xc4\x01W\xc3 \x85\xd1\xf6\x08\xc8\xeb\xf7g=\xc0DPE\\\xe7\xa8\xed\xd8\xf1\xc0\xaf\xad\x84\x8e2\xd02\x90\xe0\x04\xcb*\xad\xbcFPS\x17I\xe2\x94\xb3f\x8e\xc7\x96\xa1\x9a\x0c\x83*+\x90\xe5\xc3\x91\xb6\x8c!\x9b\xf6\x0ckuWi9I\x0f\xd2\x11\x10\x93\xd9p\xd7N!s\xeb\x1d\xf3:\xb7\xccBPW2A\x9d)@\xb1s\x0f\xff\x1e\xfb\xb7\xc1\xd8\x87\\G\x82h5u\x0f6d\xb6L\x82\x9d\xd4\x9d\x1a\xc9\x9bC\xb3\x01\xc7dl\xf6CAi\xc6c\xc1l\xcc\x1d\x94\x98\xc0G\xfc8Eb\xf4\xb7\x0748j*\xfc\xa6[3:\x97l\xf7\xd0\xbd\x1bC`0\x0f\x84\x98\x87\x9f\x0e)\xf3[v\xb0\xb9U\xb0p\xb5\x08\x06\xbd\xd4Q{;\xb8\x00\xf6\x9a\x94\x92\x84\x89\x0d{C\xbf\x91\xdd\x03}K\x84\xcf\x90\x99\x12\xdd=\xd4\xad\xde\xb9\xcf\xd0\xa1\xceQp\x9f\xa1\xc3\xe9?}\x86\xfeA}\x86(\xaf\x94\xbaO=\x1f\x9c\xb7\xe1\xfa[9\xa1\x1d\xea\xde%\xdc\xebdj\xf6:\xd9\xdb\xd5\x0f ;P\xfa\xf1\x0by\xedG\xfb\x81\x18\xe1o\xc9\x11\x93|\xb628\x06'k\xe4\x0dR\xd5\x8a9\xba\xc4n\x89\xe7\xa1\xa4\xe7\x81\x82\x0c\xc6\xb6\x86\xfd\xc0U_3z\xae\x8f\xc6\xe3\xa7\x93\xa3\xa3\xe9\xfe\xde\xd3\xbd\xf1\xd1\xd1\xa4-nx\xf2\x9f\xee\xd9\xf1\xf8~6\xd99\xba\xf8e\xfe\xbd\xf7/O\xfa\xd6\xc0\xa2\x86\xc1\x10>|:FZxk\xcb%\xd2U\x13\xfa\x13\xc2\xb2\x9f\xc8F\xae13v\xe3hg\xeb\x94\xf9\xee\xe7AI\x8a\x12u\xba\x88\xb1\x84\x0b?\xcb\xffy\xcaC\x97\x96\xf0\xac\xd7\xefd\xc8J\xf5\xad\x82\xed$Xb\xeft\x0c\xf7T\nu:\x08m6\x17\xc2\xec\x84\xd5r\x1e\xa2\xb7\xe1\xc9/\xc1\xfd/3\xf7\xecx\xf6\x9f\xb3_..\xbe\xbfwg\xcew\x17\x9e{v\xec\x9em\xfd2\xf1f\xff\xf9\xcb/\x17\xf7\xbf\xfc\x12x\xdf\x9f\xfd2\xf1~\xb9x\xd2\xbe9O\xfe\xf3\x97\xdb\xef\x1fu@\xb8\x7f_\xa3o\xde\xd2\xc2\xdf\x8bm\xe8>A\x8a9k\xaa\x90bu\xc1U\x96%$L\x9b\x12\xc5Ik\x0bY1z\xbe*q\x9c0\xbaX&\xff\x12_\x10\xb6Cq*d\x88\x1b\xa9\xf9j|\xd4\x96\xe42\xf15\xb9!).\x9d\xf2\x13I\x03!\xe1^\x85_~\x8a\x8b\x92\xa4$o**\x855\xb3/\x8d\xac=\x84|C\xd0\xd5\xd9Xlo\xcc\x04\xda\x9a-8\xedi8\x1bD4k[\x00\xda9L}H\x83Wt-_\xad\xe2\xb2D\xdb{,k\x10\\\xb3\xf2\\\x0d\xa1\xbe\xd5\x16\xbd\xa9\xc3\xa9\xe3\xb7\xea\xfb\x89\xf6}A\xf4\x1av\xa8a3\xd1\x06\x91\xc9\x18\xdd\xc3\x99.\xd7$\x9cH%c\xeduV0K\x8cN\xabm\xf3\xb9\xf2\xd50N\x0f\xea\x8c\xc8*\xee\x8e\xc8 )\x11,\x96\xcd1\x8f&(\x1fsW\xbb\x06\xbf=Pr\x81\xd0\x999M\xd4AwK\xae\x16\xe0k\xee4\xdf*gF.\xedr\xe1\x97i\xa2\xd2x|\x0e\xd9\x14\x97b^\x91!9[\xb0\xb0\x1fb\xf1\x0dY7\xe9\xec\x17\\f\xc7\x1d\xf4~N\xa3\xb0\xba^\x96>Ti\xb1&Q\xbc\x88\xc9\xbc\x9e\x1b\x0e-\x00\xf7;\x9e}\xd7\xf1L\x927\xd6\xdf\x82\xd9t|)\x99 \xefB\xa9\xf6\xd0Z\xe3\xac\xc9\"\xcaW`V^\xd8\xc1.\x83\xcb\xa9\xe75\x0e~\x9a\xed\xb9i\xc9\xba\xfc\xf8\xd2&G\xbfE\x9ah \x7f\xd2\xe5\xca'5\xea\xab\xfb\xb4y\x17\x16\x17<k\x17\xbeb@\xbfY\x87\x9dNi\x94\xeal\xc5\x97L\xe2\x88)\x98\x9a\x8d\xf0\xd1?-\xe5~a|\x80\xba|\xae\x8e\xc1\x13\xd3\xddl\xf5\x87\x9c\xcbf\x1dR\x84\xcf\xcc\xc9\xb9mb\x1d\x0dE\xb1\xea\xac\xb89g4+.\xb4!\x9aq\xf8\xd8\x06e\xc2\xf9\\\xc0\xa4>r\x82\xde\xb8\xaa}\x92\xb7,\"\xdcD4\xdb\xf6\x91\xed\x84\x92=\xa0J\x813)\xb9\xadG\xbf\xcd2\xe8!\xdct\x1d\xe9\x8d\x83\x0c|\xee\x92@\x0c\x89\x92\xfc\xcd/$\x87}\xfd\xfa2\xae@\xbb\xd2\"\xcaaS\xc4\xc2\x06\x11\x91\x9aOn\xe0\x14fZ\x91\x0f\xe4\xc2X\x91\xf8\xa6\xcet\xb0J\xbb\xbb\x0d\xf3\x94\xcc\x81\xa5\x0b8\xa5\xc8\xbb\x85ZP\xdbjD\x9b\xc7\x06D\x84\xddT\"\xf6\xb0\xde\x1d\xb7)x\x0e\x15vi\x19\x0dsa\x88\xb2\xb4\xc8\x12\xc2\x80\xbf\xeb\xb8i6'\x1e\xd0*\x18>s\x9d\x15E|\x95\x10P\xc8\x84\x15Ye\xf9\x1d$$\xfc\x0csR\x92\xa8$\xf3\x00\xfeu\x0eI=\xeap>\xa7e?\x17\x04\x08\xfbJ\xc7\xf6\xae\x07e\x06q\x1a\xe5\x84\x02\x9b$^\xc5e\xe0\xb4\xb6\xb4\x89\x93j\xa4\xbf\xc4\xf8\xcb<\x8c\x90\x08U\n\\\x91\x0e\xc9v\x932\x14i\x98\xaf\x96^\xb3?\xf9\xf67\xbaY\x82\xc2\xa7(Hy!\xd1\x95&dS25\xd2*\xbb!b\x0et\x98\xb1\xc7\xe3\xbb#\xc2\xa3\x9bNT\xf0#\xa0Y+\x82\x92\xfcKXi57\x10o\x00\xf6\xc9\x96#\xeeYkud}kyS\xfb\x7fQB\xe9w\x81`\xd8\x8c\x0e\xbf\xf4\xcb\xdb\x11w5^\xb0\xfbl$$j\x0c\x901a\x1a\xddQ\xa1s\xcc\xddT\x02k\x94\xea\x97V\xf5\x14\x83\xbdr\xd9T\x0b\x16)\x90T[Q\x15\x98\xaa/\x19<\xd5\xe3-\xab\xb8\xd0p\xa4jlX\x9d@\xb8\xb3C!\x8e!&\x0d\xf0\xc5Hg\xe1E3K\xfa\xab\x99\x17\x9d\xa5R\xc0'\xda\xeeS<t\xe1B3\x11\x01\x82\x900\xbe}h\x95\xc6<B\xf6\xb8'\x8a.\x8b\x82\x996VYn\xfd7\x06\xd05\xef\n\xda\xbd\xa2U`D\xdc\xcc\xafs\x98|\xcd>\xf5\xdf\xc4\xfe\xab\xf6\"I\x86\xf1Vf]{\xebz\xf4\\\x85\xad\x8e97!\xecYf\x1c\xddm\xf3Lg\xf4Q \xa0\xe3\xdc\xed\xed\xce{\xd1\x1e\x92\xb97\xebA'\xe8D\xaf\xccX\xdf\x1en8 \xb6\xb0\xbd\xd0nGLs\xdb'z'\xda\xf9\xc1\xe5\xd0`+\x18y\x9a\xdc\xc2\xd3X0\x83\x1e\xee\xbe Oi\xa1\x8bO\xea\xbbqbotV\xdf\x99\x1dh\xf1\x1d|%\xba\xb6\xd1v\xa8\x93Ag\xd9D\x96\xb6i$\x16'I\xbf\xc6g-\xe2\xcf@\xf9 \x1a\x1f\x8eav\xd17\xd6\x97Y\x95v\x0b\x04tv\xdf\xa6\x1e!\xed\x8dm\x9f\xb3\xc68\x83/\x83!u&z\xee\xd4\x15\x84\x05j?\xbc\xd1\xb8\x11\xfb\x0c;\xc2\x85\xa9_\xf5\x0b 5q.\xcf\xc5!{\xbeO\x0e\x9fz^p^\xe6$\\q\xd7\xdd\xe0# \xe7\xe1\x15Z(\xe0\xef?s\xbfg\xf6\xc1\xe4)\xfa\x86\xfcX\xad\x13\xf2\x85\xa9C1MLP;\xf9\xb1zGS,\xfd\x10\x16\xc5\xa7e\x9eU\xd7K\xa6\xfb\xd8?\x1c\xa4\x83\xed\x0d\xd1d\x0ett#\x92\x99\xb9\x18\x07MyW\x93\x7f\x06\x95?h\xc7\xc4$$\x89\x0b\x8c\xb4\x02\xc2o\x83!\xa1\xb4\xcc\xef\xd4\xa2E\x9c\xc6\xc5\xb2\xcf\xc7\x87>[\x9dK\xa0?\xb5\x96\x8fujG\xed\xa52*{=\x0e\x93r\xa3NQ~\x84\xd6%\x0fD8({\xa3\x80\xfa\xdd5I\xe7qz\x1d]\xed\xecP6\x8f't\x81\x1cW\xd0\xfam\x9b\xf2\x10\x0f \xa2,\xffL\xe6\xdcc\xb5x\x9d\xa3]\xac\xa9XlRIy\\\xd3g\xa7\x86\x00\xa8\xf4y@\xb5\xb7\xc1V\xa8\xe3r\xcb\xb7i\xd5fCB\xee\xe4N\x82\xab<\xbb-\x18\xf12sn\xc6\xc1d\xec\xf8@\xff8\n\x9c\x8b:\xfaW\x13\x0f\x8cA\xc9\xb1\x0f\xfb\x1e\x8f!\xcd\xbci\xb2:\xda\x8f\xda\xdb\xaa\xbe\xa6\xe7e\x88Z\xd9\xeb\xf6pP\xc8\xe2\xee\xeby\x04\xa3 N\x97$\x8f9L\xd8\xd5\xd36\x08\xb1\xa3\xf9\x90\xcc\xc9:'QX\x92c\xbc\xdeO\x0d\x0b\xd8V\x85'\x1c\xfa\xe8z%\xfa\xac\x99\xc6i\xec\xf1\x906\xed\x1aK4\x81h\xf2\xa6(\xde[\x1e\xfcfH\x0c0\xf7\xe1\x86\xf7i\x07\x0cw\xf8\xb1\xe5\xe5\xb5\x114\x03\x97\xaf\x85H\xb23X\xc8N\x1f\xaaW\xda\xf7D\xdcb\"\x0b~\x0dt:\x82\x12\xa6\xe5x\x9b\xcd\xd1\\l\xab\x94\n|\x16V\xd7m\xd7\xd3K(W\xb6\xc5\xfc\xf1\xe8\xf9x_\xbf1PZ\xb5~5X\xc6\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\xf6\x16\xd0'\xc2\x8a\xa2\xdd\x7f\xef\xff`a\x18\xdd\x19L\x0e\xe0\x18&\x07\xbb\x87{\x96UP\x86\x02\\k\xcbh\xd3\x18\xce \x86c\xbe\x16Q\xf3\"\xa2\xe4H\x04\xc7\xb0\xf0\xcd\x8d\xc8\x19\x15[\xef\xbd\x06\x94\x87\xc9\xcb0I\x98\xc0g\xe2\x0b4@\xe6?\xe6a\x9c\xca\x85\x0c\xe2i%\xeaw\x0c3\xa8esR\x94yv\xc7\x0b\xcd;\x92\xe0;\x9e\xe7fN\xa2l\xce\xbd\xablxJ\xa9C?N\xea\xdePB&R\xc1\x00kP-\xbb\xbf\x07\xa7*\x17\x87B\x98$spX@w\\\x9b*\x03\xb3R\x9d\xe2.\x8d\xb8\xb8\x04\x7f_\xe1U\xfe\x90g\x11)\n\xed\xe3,E_\xd1N:O<[\xdd\x94\x92\xfc\xdc41Moe\xd8h>\x9b\xe2\xc9\x99 \xfa.\x8d\xba\xeb1\xf7f\x1cxteG\x87\x94\\\xec\x9f\x95xJ}mE\x07\x0d\x85Q3\x07\xe2\xee\x91\x84\xa4\xbe\xf4\xb7\xe2\x86\xa5?\x0f\x88\x8a\x89g =\xba#G\x8aggGB\xee>\x1a\xe0\xbb\x0dNrc\x1fr\xcf\x97\xb0\x94\xfb\x8as\xe4~k\x1f\x98\xd0\x94 E\x85<\xb5\xe4\\=\xd3_\xd1\xc60<L\xec\xe6\x8fn\xc0\x87W\xec\xa8\x98\x05/\x80\xabR\x87\xce$t\x0d\xec\xdb\xd9\x13\xd5\x1f\x84\xca\x00N\xe1\x8bkJ\x87&?\x15\xe2\x0cqw\xf0\xef\xd65\xa1\xc0[\x14\xd7t\x0c-\xbde\x1c(E\x03gP\xb8W\xb8\xccL/\x1a\xd35\xbbr\xa5\xdf\xf6\x99\x1b\xdfX)! \x00(\x87\xb2.\xe4\xe7O\xb9\xf4\xcd\xb0\x95\xfaIX\x94?tU\xa8\x8f\x99\xd4\xe2:'& \xaa\x1f\x84\x89y\x00\x82\xd9\x1a+PK#\x0eSrK9\x84e\\\xe8R$3]\xb02_kz\xf1u\xc2`\xcb\x9d3\x0d\xd8\x8a\x0d\x80\xd9].\xe3B\xa1\x05\xa4\x90\xd4\xe4\x16\x9b\xb7@y\xf56\xf0\xa1#\x99\x82\x8dK\xfb\xc2\xd97\xbc \x88)\xcd\xc6\x18l\x0f%\xad\x87\x80\xcb\xfc\x8dM\x8b\xc0_\xdf\xe8_\xde4\x9f\xde\xd8\xbf\xe5\x18P\xfaX\x94\x9c6o\xed\x9f#\x8e\x96>f\xbfO\xc5\x1b\xcf\xf3!\x91T\xc5\x83\xf6\xf4R\x05\x8aL\x8en\xdae\"\x1f{\n>\xa4\xbbQ\x89\x9f\x1c\x9e\xa3\xe6@\xc2\x8b\xe8\xbc$V\x8aBN\"0!K*\xc1\xde\xb8\xac\xf7\xe6\x9d\xdc\xcad\xd0l\xae\xa4\xd9\x98&\x91B_\xf4\x03\xf1\x88\xb8\xc6\x1c\x07moc\xf4QA\x0ca\xda\x9b6q\xc4!\xf2\x9c\x969\x06(\xfc\xe0\x96\"\x86\xa5\xc26\xe6n\x03\xbb\x07\xcd\xf3\xd6:vb\xa4?\x0c\xd9\xb4\x04\xcd@t\xd0a\x16\x04\xd5\xdb\x87\xf2y\xa6\x8a\xa0\x98\xcf\xb6~5\xf1o\x84Lv\x82#\x069\x92ln\x89\x02\x02\\\xeao\xe2z\xcd\x98(k$\x05\xe6\nu|\xad\x90\x81\xcd\x82\xad\x1b\xda!\xc7\xa8\xae`&O\x98^\x0e\x95d\x05\x0b\xea\xc6\xa3^\xe0j\xf8\x10\xc2\xe8\xd4$L\xa3\x0f\xc69e\x88\x00\xcd\x7f\xfd\xfa\xf6\xb1\x1bSg4\xf3\xc1q(i\xc1\x10\x80z^F#\xac\xda\x81R\x18IB\xc9\x15\x8bP \xe3c\xcdd)\x8fg\x17\"0<\xc1\xce\xad\x0d\xcf\xb4\xcfz\x17\x05!d\xc4\x9d\xf2\x98\x9a\x8f\x0f\xa2e\x95Z\x18-\xf1\xa0\xb1P \xd29v\xd7M@\xc4\xeb\xe9\x16\xf0\xd0s_\xef\xd0\x04!\x93\xc2\xcd\xc11D\xf5\xa6E>e\xc0\x12\xed8\x98\x17\x8c\xde\xf9\x1a`z\x1b)\xa8\xe8S\xbb\x88\x0b@d?\x0d}2\x1e\x90@\x86\xf2\xado\x81$\xc3\xe0\xf0\x97n\xff(\xc1Abtx%\xab\xb10ld\x85\xfa\xb8\xd0d\xa2\xe1-\xd9O\xbe\x8c\x83\xc6un\x85\x9b%G\xa7\x0d\x0bc\x95Pj\xc0\x1b7A'\xc6SviU\x1aN\"\xda\xeb7\x8e\x05\xf2\xd3\xe7a\x182xe\x9d\x94\x80\xf1_\xbatM\xec\x10\x0d\xe46\xd59\xdd\xdf\x03Q$\x07\x14,Z\x88\x17N\xad T\xd2\x80\x99&{\x18+\\\xd59\xe7\xaa\x90;\x1a\xb8\xa4]\xa8W \xf6\x86\xe6fw\xc8\xd2j\xd3\xa4/\xd9\x94C\xeb\"5\x92EJ\xf2R0p\xad:\x8a\xd4A\xab;e\xe55\x16*\x85\x00I\xbb\x03,\x98\xc8\xec\xe2\x04\xca\x13\x8fN\xa3*\x96,4 \x12\x82t\xd9\xac;\xadyy\xb7\x81d\xaf\x18\xdf\xee\x96J\x1f\xee\xe6\xc4\xfc\xd7\x84\x9b\x93{-{\xac;l:\x8e\xc9\xe5J~0\xcc\xe9\"\xa8%\xae\x9b\x05|\x97U{\xf5\xd2\xbbv\xde\x10\x18\xc7\xe7hL7\x1b+\xc4E#\xf9\xe5\x96JZ\xc5f{)wC\xc2y\xe0\xf8\xe0\xfc\xf8\xea\xc3x<\xde\xb5\xa4F\x83\xf6\x05\xaf\x8b\xed.\xbb\xf8\xda\xb5\xb1\x08\xdc\x13n{\x9b\xff\x15,\xc3\xe2\x0d\xe7\xb7\xc0\xe6\xd3\xf8\x9a\x97IQ\xc7\xda__\xd0\x8bK\xef\xc6\xb0\xda\xbe\xe5,\xac|\xc3\xc8:\xdc\xef\xfa\xe5I\xb5#\xcc\\66-\x1b~\x93\xde\xf6\x15\xf0T\xcd\xdb-\xc9\x8a\xcc\x8f^\xf7a\xcb\x07\x84B\xf3^\xf1]\xedG*5^\xb6\x94\xf2>\xac$\x10\xb1\x8e\xd7\xa4\x0f:0 \x80\x8ah\x9a\x1c\x8a/\xc34\xcdJ\xa0\x0d\xf9\x18\xa7>\xe7\xeaM\x9d\x15\xd1zn\x8b$\xed\x1a:$\xebY\xe4Y\x03cn&\xbb*\xc6\x1e\x19\xdfa\x80\xe4X\xa6\xab\xea\x84\xfb>\xac\x9b\\\xce9nh./\xe8\xd2\x8e\xd2B$\x0d\xd6J*h\x91\xd9|\xf0\x91Zc>\x01\xdd\xfb\x13\x80\xe7\x10\xb4\\A6\x81T\n\x0eM\xa90\xca\x17\xb0\xf0\xd3\x02\x00Rj\x1b\xd1%sr\xd5$\xd3j\xeb[R\xf0}\xd1\xfa\x9d\xe7C\xcc\xe5\xeeg\xc3p\xb7\xa0\x06\xa4#\xc3\xb6>\\\x94$\x07\x92\xcem\xc1*L\xd4\x8d\x84\xa2\xf1\xb0\x98V \xefb\xca\xc3^\xeb\x9c\xb7\x9dK\x07I=c\nZ\"\x9e\xca\xa2H\x00\x89\xb8iH\xe53\xe6\xa9\xa8\x06\xe8\x7f\x1b\xde\xe1Ua\x0b\x81\xb5\x11\xf4\x14PfP\xa0\xb1\x80cM\xd6\xdf\x04\x05a= 9\xa4\xaa\xa3\\C\x9f\"\xd7i\x9a\xa5;\xac\xd9'\x1c\xd3 \x9f\x83\xc1\xbf\xb9A\xae\xb6\xee\x95\xba\xee9+\x89\x05\x1f\x1a[\xf7 f2S\xe6\xe6\xe7\xc6*\x01V\x19\xee~-\x0d\xb2\xed\x0f\xdaq\xf5*\xf1MM\xf7!\xf0R\xd7\xe8\x19\xd5A`\x8e\xdd\xdf\xdc)~}\xb1\xc7\x1e\xe9\xb4\x91<\x92\x9f\x87\xda\x08\xc3\xdeP\x8e\x06_U}A)\x11\x19K\x17\x9e\x99\x05T\x16\x8co\xbd\x03!J9Z|g\xde\x99Y\xaa\x16[\x8d\xac\x86\x91\xb4\xed\x02$ \xd73 \xaaf\xd0\xfc\x1d3\xdd\xd7d_c\xcb\xba\xa0\x05Q-\x18\xc4\xeb\xc1\x04\x0c}\xe7&b#k\xb3\xb5\x1d\xfa\n\x0b\x17\xdc}\xd8\xf0\xc6\x1d\x83A\xf3.?B\xacp\x0cq\x8f\xaa\x8c\"\x1cc\x1c~\xf9\x11\x92\x07c\xee\x05\xf9\xa17\x9d9;\xdb\x8f&\x0b\xd2\x1f Q\x8ey\x19\x8e\x8dL\xbe\xb1\xaeU\xc83:\x85\x89\xf9\xf02I\x8f,) \x1b\xf8\xd1 \x9e\x8b.\x88\x152\xce\x0f/\xb0/\x85\x82\x836 CO\xd5 \xe2I#\xdc\xd9i\x1c\x8d\xba\xda\xae\xd2!\xad+<\x9b\xda\x8bA\xa7!4a\x0c\xc8\xb3\x1f;;\xbe\xa4\x15\xa5\xe4\xab\xa4/\x93\xa4\x1e\xf8\xcb\xa8=k\x0bL\x98\xf6\x8c\x93\xc4\x9dD`A\xca\x1f[\x1a\xf3nZ)\xb6\xa5A\x14\xa4V\x19\x94\xd9O\xd9-\xc9_\x86\x05\xf3\xb0\xd8rg\xce\x92|\xa1\xdc\x11\xd7\xbb\xd3\x7fw\xf0\x8f\xb0\x88\xe2\x98\xfeq\x15\xa7a~\x87\x7f\x85\x059\xd8\xc3ZQ1\xe5\xff\xeeL\xf9g\x93\x83\x84\x88\x16\xc4\xdfyx+\x19\x19\xb9,\xd3\xa2\xa7\x8d\x03\xad\x8c<K\xca\x9e\x9f\xd3\xcfiv\x9bJw\xde\x14\xb1\x1dt\x03R\xf5\\\x19\x8c\x0fLf\xb9V6Ia\x99oMf'F\x0eZ\xce\xe5a\xa2\xb8\x19W\xdd\xc7Iw\xccKA\x10\xed\xbb\xab\xce\xceSO\xd8\xe5&|F\xeaJT*W\x0fy\x94\x13\xa7\xc4Z\xbcZ\xb3\xf0\x83d\xde\xc3\xda4\xca9&\x1a\x97\xdf\x91t>p0\xb59\xe2\x90\xbbm\x8d[\xc1,\xae\x9bt5\x12{@ \xccM\x98 )\x10\xf7\xf6\xb6\x1c\x98\x8e\xb1\xb8\xb5\x8eZ\xc8\xbcr\x19\xde\xe4\x8d \x8bP\x1e3\x10\x8774\x17\xb2Y\xcan)@g\xc8J\x01\"\xe2\xc6>h\\\x0b7\xfdZX]\xb7y&\xd3\xb2)\xd3\x04fiDj\xa1[\x07\xe9F\x1a\x93\xa3\xb1/\x99f\xb5E\xd4 !\x95\xbc\xc5\xa8\x0c\xbc\x82\xb5\xe9\x92\xf1\xdamt\xad\xe4\xdd2\xa8\xb6k\x0bt\x1d\xa0\xf0\x01\xb4\xe7\xd6\xbe\xe6\x852\x1e+\x9fk\xe9\xde\xed\xec\x9f\x9e\xe1~1\x89z\xd3\x1a%\xf7\x8d\xf8[\xbb\xa6U*\xd7\xa9\x7fi\xb5\x9a:\xbd\xfc.\x93\x94\xa4s\xd7\xf3\x81\xb4\"8\xfd\xa1\x19\xa9\x9a\x9b\x11\xb3\xe8\x1f\x8d=\x8a\x0e\xdf\xacVd\x1e\x87%\xd9$\xb5~\x7f\x0e6\xfb\xbe\xf0\x03\xd2\x1b=\xe2\x9b\x0c#u\xf7\x0e\xf7<\xd7\x833\xee\xbf\x8c\xc9\x13\xd1\xb0\xf5p\xff+\xa6z\xd3\x84o>2\x87R\x99\x9a\xd3\xc2\xed\xea\xc1\xc3*\x83k5G\xec\xedPC\xfc\x1275\xb5h\xee\xca\x07\x850\x8a\x0c\xaf\n\xf5M\xf4Uy\x02n\xea\x90\x0d\x0b\x1f4k\xf4\xb8\x95=\xa5\xb2\xf8V\xaa\xdf\xa1B \xc5\x00\xb6\xcc\x1b\xd8k\xfc\\\x17Z\x84\x05\x86#h)\x0bo\xb1\x10Y\n\x16\xf0\xfc\x14\xb3\x14D\xee\x82\xa7\xfc^\xc6\x8d\x93\xd3\x0eDn\xe1.<\xef\x04X\xe4-\x18\x8d\x0c\xea(\xb4\xf3\x91\xa5\xac<\xccP\xc2Q\xe3\x8c\\\xf8\x90\xbb\x89\x94\x02E\xc3\x8f\xbc\xb47\xd3\xfc\xa0\x93\xa6xH\xb4\xb0\x91\x10Tj\x03\x18F\xd4\x9aDo\x96\x14\x8fHa\n\xc2\xc4\xeeA\n\x12]\xa5\xbcx`R\x82\xeeA5\x07\x8b\xd6\xad\xf3\x8b\xb0P\xcc\x9f\xc8\x97\xf2]6'\xaec\xcb\x99\x92ah\x01\xdbx\xb4\xb0\xb8]\x029\x0b\xfb\xcd\x1d\x858\x82g\xcau\x16#\x9bX\xf1w\xb7u\xa1\x90.\xb1!v0\xfdp\xaai\xe5\xc4c\x96\xa8\xa0\xcb\x9aJNY\xe4\xb8i\xe3\xc3\x08u\xfa?V\x1f1x\xe9Zf\x86\x176\x0e\xe6a\x19b\x98\xc2S\x18\x8d2\xf8W\x982s\x07l-(\x96\xf1\xa2t1\x04\x05\x17\xbf\x08\xafkN\xe1\x95\x06m\xd5\x83\x17dW\x05\xc9o\xd0R\xca\xbcx\xd12\xcc\xc3\xa8$\xf9\x8fa\x19\xb6\x82\xfe\xb3V,\x16\xeb\xbd\xf4\x02}X\x9a\x17\x0cai&X\x99\x94{F|(/P\xec\xc0\x15\x94\xa8\xbde\x04\xb0iq\x86\x88\xc5\x1e|3\x1c\xb6^\xe3v\xe4$$p\xec\xaa\xb0&\xc1\xb4\xe4\xf6f\xf6B\xe9\xe8D\xdcO\xdaM\x9d.\xa8C\x8cj\x1c\xca\xdb\xaa\xc4\x84|\xef\xd9\x8e7~\xb1\xb1\xdbze\xbf\x95\xc6\xa6\xffL\xae\xfe#.;:\xb0Th\x1f%\x1bH1\xdf\xa8\xde\xe0\xbb\x80\x8c_\xee\xea\xa2\n\x00\x16\xb8\xd5\xd8lA\xcaO\xf1\x8ad\x15J;\x0c\xdb!U\x182\x80\xa6\xba\xcb\x0e\xfb\xd8<\x98\x96T\xeeA\xba\xb2\x83\xe8\xcaoBeY3h\x9a\xb2f\xaay1\xa7l\\\xfb\xd3}\xfe\xef\xc1\xc6y1;F'\xd2S\x1e\x9a\x92\x8d\xa1\x86\x8f\xa7'P\xc3\x0e\xe7\xdda\x87\xd5X\xe9\x96|WV\xc8 \x84t\xed\x0e\x92,\xc2\xc3~\xdcJaF\x9fe\\\x94Y~g~\x99\xadI\xaa\xb2\x7f\x86J\x98\xf2\xab\xb7\xd6\xeb8\xd1+\xd9\xe6\x0b\xe2\x86K\xf1\x82\x9b3\x7f\x8b\xc9\xcal\x89\xfa\xccV\x1cta\xd8wmxr\xc3\x1dFm\xda\xb8\xb4C\xc5\x9b\xd7\xf1\xde\x0c\x82P\xab=Im\x08\x13\xf3\xb0Ih\x15$\x82B\xbb3\x87\xae\x95\xe3\x83\xf3C\x92]\xd1\x7f_g\xf9\x8a\"=\xe7\xc2;\x01\x16\x16\x13\x13\xf3U\x08\xc0]\xcf\x0b\xe6YJ\x90\xc4E\x8dE\x07\x92\x13z\x97\x98\xe5\x10\xb4\x93\x1f!\xc4)_3\xc693;QV2\x0b/\x86`5,\x91\x0d>\xec\x0b<f:\xa4\xb6O\xe7\x03\xa0 Ub[\xccn\xb3\x1d\x96\xef\xb0\n\xf8a\x91\xfe\xb6\x98\xcc\xf4u\x07\x82\xd2\x12$s;\xc3\x01\x98\xd7A=\xed\x9d\xab\xa2\xc6#\xb2r\xf8`\"\xbc\x05\xa8\x1e\x1e\x14\xf4\xc0\x02ey\x10K\xe7o\x8e\x17\x98r\x84\xb9c\xca\x83\xb1ZCB\x8f\x8b\xccTp\xcaR\xea\xa1\xe1<O#\x86\x8a\xe8:\xf3N3\x99!S\xe9C#-\xf7T\x9e\xfc\xc1\x92\xc2}\xaa\x87\x0bgA\x80\xa7\xe6\x00\xe0\xbbzm&\x80\x98\xb6Zg^\xbbGz\xe4\xe1\x05\x1f\x8b\x1e\xb2\x9a\xb9\xd6\x1ex\xae\x13\x97$\x0f1\xdb\x86ZcM\xaf\x8d;\xbb\x08>\x93;\x8c\xee\xe0P`\xe0\xd0k\xcb\x0b]=\xc9@\xaf;\xbb$\x1eW\xcf\\\x9f\xb8@h\xd6\xe7>\xdc\xf8p\xe7\xc3\xb5\xde|\x81y\x0f}\x98\x1b\xdc\x92W>\\\xfap\xe5\xc3m/\xbb\x08\x82\x83Z\x83\x08\xb6\xfa\xa2\xc6\x05/\x8c\xf1 \xe8#\xc2\x15v2\x00\x18\xef\x8fe\xec1\x87\xe0k*1C\x8a\x8ej\xd0\xacf/\xfbi\xf8\x86R8i\xad\xdd\xea\xfc\xca\xe2\xfce,\xdddD\xc3Gb\x00vmt\xf9\x05\xbd\xa5G\xe0\xc0\x1bq\xa0\xdb\x95\xce\xe1\xb4^[\n&n\xdaU^Y\xd0\xf1\x0bT\xca5\x82\xedV\x85\xf7p\n/f fNz1s\xfe\xed\xdf\xea\x8b\x85E\xe8\xfc\xf1bvcH\x1a\xfd+\x05\x86L\xdfxc\xe00?S\"\x00\xce\xe0\x1c\xce\xe0\xd6uHZ\xe61)\x10\xa2\xfd\n\xf6\xd4uoX2\xb7<\xbc\xc3\xa9\"\xa2z\x11\xf0\xafio\xef\xdb\x14\xd1\x1bD\xc5W\xf4\x96\xb8o\x18\x19\x8e\"\x0e\xcf\xf3P\xea\xae\x8b\ni\xf5+\xa6>G\xcfj\xf7\xca\x87/>%\x11(\xba\xa5<\x85\x89\xed\xb8\xe2\xabT\xd1\xea\x89\x0fK\xcf\xf3\xe1\x9c\xb6\xf0\x1e\xe1\x8c\xd8 \xec1H\xc3\x15\x93\xad\xbf\xe2x\xfc\xd7\x81P\xe6\xbd\xd5\x9f\xcb\xe3n\xf1[L\xf7\x8bW}\xeb\x15\xdb 1\xb4\x178\xb4_=\x1f\xc2\x19\xa1\x94\xc9\xaf\xf4\xaf/\xf4\xaf\xa5\x0f7f\x11\xdf\xcaj4\xc1\xe6t\x8c\x9bHw\xed\xd6\x15\xd3\xb4\xc8\x14(\x988\x86\xbb\xa6\xba)\xd3\x97x\xf8\xae\x1e\x83A\xb1\xe8\x9bl3A\x90\x89\x97\x14\xc2\xad<\xc0\x7f_\xd0\xa9gt\xea\x97>\xacf\x97\xa6\xf0\xa2,|\x91\x1b\x07\x1f`\x04q\xf0\x1a\xbe\x07wM\xbf{\xe5!\xfc]\x99c\x11\xad\xea\xc2A8\xf7FJH9\xb5\xd0\x0f]\xdfC\x1d\xa7\xa7\xd4\xd2\xe4\xda\x08{\x01\xc1\x8d\xba\xb9\xae\x08\xb3:\xcc\xeb4\xd2\x12}7,\xae\x05\xe4\xb5\x17\xbe+ mk\x0c\x1d\xd6\x81`\x1c\x06\xfd`\xa3\x91X\xe2\xd6\x9aF\xd2\xe30n\x1c\x8c\xd5\x1f\xb9+\xce\xca\x10\xf4S\xf7\xc64\x08DV\x1fX\x9a\x1etb\xe5\x93\xb9\x95\xba\x93}\x16\xa54u\xa7G\x9e]B\xccG\xf3\x14\xb6N-\xcaT\x91\xda{\x1e\xdf8\x9e\x0fN\xf8\xf5j\xd4\xa7m \xa1\xce\xdc\x0b\xc2f\xf2\x1b\x92\xfbS35|\xf4?3\xdd\xa2\xaa\xf6\x9bn\x9a\x19\xa8\x95s\x98\xab\xf1\xcc\xf9A\xa6\x93}\xcf\xdd\xd2)uc&\xf9\xbeu\xb1\xc7\xfa\x0cyB\xc76\")\xda @\x813\x163\x8d\xec\xe5\x9a\xb58\x85\xd0\x83\x94\x1e\xde\x8a\xed_\x88K\xb1\xbd\x0d\x11\x13^\xeb\xc1\x0d\xb8\xf3\"i\xc2\xe7\x16'\x1e\xff\x8e\x12p\xb3b4b\xf1}\xdd\xff\xca\xdc\x08[\xbb\xbfoZ3#\x97h\xb3M\xed\xdd\x9f}s\xaa\xe8\xcel\xfe\x95A\x93\xda\xc5\xf7\x06\xd7\xa4\x94\xb2d\xabV\"\x96c]\x8a\xbd\xe3y+\x91\xc5\x9de\x176\xf9\xae\x9ae\x8b\xf33\x8dW\x85\xf2\xf6L\xfd-\xd1x\xc7\xeag\x9c!?\x83J\x97\xe4n\xb8\xf8\x87\xe6\xc5o%\xe4no\xc5?s\x14\xd7\x03\xee\xcbu\xf8?;G\xb1\xf5\xec\x98\x12/\xfd\xcf\xcd\xa5\xdf\xb9\xcd\xbc\xb7\xf6.+\x16\x8b\xee\x04\xb6\xc1\x04\xd5\xb5<\xb6\xee\xd4RO\xd8,\xd1:{\x96:\xe6\x8c\xb7\x9b\xeda\x9f4m\xb2{\xd0N@\xbf\xfb\xf4\x9f \xe8\xa5\xe7\x7f@\x02\xfa}sR\xc4\x01\x19q-\xe7\xbf\xae`\xb3\x9f\xa4}\xf3@\xe6\xcd\xbe\xc7\x14.\x99y\xe6\x82g\x016\xbf\xa5TOhu\x14\xe1c*DJ\x9c\x82ns\x84 \xd6x6s\x8e\x03\x8e\xc1\xc5\x08\xdb\x98D\xf1e6'/J\xb7\xf0<x\x06\xfb\xfb\xd3\xa3\x03\xe4\xb7\xe19\xec\x1f\xecN\x8eXC#\x1e\x1f;\xaa]\xa0\xd4\x8fi\x05\xd6\xc0\xc1\xee\x14;\xafh\x03Ow\xf7vy\xff\xa1\xc8\xd8Xx\x08\xb5\x8fy)\x0b\x16Y\xf8\xd8\xc9\x94\xbe\xab`\x8773\xa2\xe3\xdc\xe1\x83z\xf6\x0c&c\x0fFp\xb0\xbf\xbf{\xf0\xfb^v3\xb7`1s3\xe7c\x9c\xe8\xc9\x97y\xfe<]y\xcai\xf8\x96\xa0=\xe2'S'\xbc\x99\xe8|\xdaJ\xda\xc7\xa3R\xfeStnx\xfe):\x97\x9f\x7f\x8a\xce\xf1\xf9\xa7\xe8\xfc\x9f\xa2\xf3\x7f\x8a\xce\x7f7\xd1\xb9U\n91V\xb7K\xeeZ\x9aiN\xb3\xedM:5\xf8\x0c\xcb\x0d\x91_\xf0L9=\xf3\xd9\x8c\xa6D\x93\xf3U\xf8\xa5M0\xb07q:\x00AZ\xc6\xcbi\xec\x12\xe9\xad1\xcb{\x05#:\xc2\xb1\xc72\x8c+\xb1\x876\xdb\x1eG\x92\xb6\xf8\x9a\xc9}\\H\xa2!\xdfd\x1c\xe1\x97\xd9OY\x14&\xdc\xa7\xdb\x17\x12\x13\x1f\xaf\xc6\xfb\x85#,\x1f|gS\xca\xbd\x91\xd4\x9aW\x0e\xef\x7f^W\xe2\xf2\xd5\xcd:\x99\x98\xe9\xbe\x03\x9d\x06\xcbjZ\x0b\xd3\x16\xd2;\xff\x88\xed\xe4\xa2\xcf\x8a\xef\xa6,\xe7\xea\x13\xe0`\xf4\xd5\xfa7\xb33\xce\xdd\xca\x9be\x98\xca\x82\xa0G@\xdaw\x06L\xebPG\x8cd3\xd7i[F\xc4N-T\xecdO\xa7J\xb9\xfd\x87~E\x16Fq %a\x17\x14\x17E\xa4(\xda\xb4\xebB\xf5\xe1Q\xde#\xa1\xca\x92}[j\xa0k`\xf0\x96\x14ExM^.\xc34%\x89Z\xe3\x06k\xfc\x18\x17\xeb\xb0\x8c\x96\xea\xbb\xbb\xb6\x14\xfa\x9a\xe5fQ\xcaV}\x98L\xd8+\x8eJc\xa2\x06\x8ar\xae5O\x17\xbc\xe86\x1c\xc4\x8c\xf8\xae\xadd,O\xb6r\xcd\x92\xd9\x99L\xd0\x95\x12m:\x97\xbd\xd4\xf5\x8a\xa3d4\x00\xd7\x90r3\"\xc4\xc7\xcc\"~\xdd\xd9dm#\xc8Bb1\xf1\xfb\xe4\xa4\x9d4\xe89\x9a\xdes[\xf4\xc6c&\x1d\x8d,Yg\xaeg\xa3\xd1\xddE\xdf\xf6\x84\x96Xg<I\xf9\xebf\xe0\xed\xc0\x9e>\xe4\xee\x9d\xe7\xc3\xdd\x1f\xa4\xa2e\xe7t\xa5\xdd\x91?r\xf8\x15\xc0!\xa4\xee\xde\xc4s\x13\x0f-i\xbb\x1aK\x1a\xd7\xcb\n\x83\xf4\xfa0\x91\xcc\xae\x1f(eI\xf7\xe1&H\xb3\xdb\xde\xd6\xb0\x96\xb5\xa19\x86\xce\x16\x06\x99\x94\xa2\x9c{\x01\x05zS\x1fb\xfcc\x12d\xe9\x8a]68\xa5\xd4\x07\xc6\xcap\xb3`\x9d\x15%\xbf\x85\x08h&\x18\x81i\x11\x84\xf39&\x1a\x94Se\x197Cj\x00\xc9\xbcE\x10\xafh\x8f\xe7Q\x1e\xaf\xcb\x82\x8e\xac{j\x0by\x0c\xdc\xa1\xdc\x07\xe7{)\xac\x17\x85\x94\xad\x11\xb9\x0e\x9f\x90\x83\xe4\xd4\x16\x1b9\xed\xcb\xc9\xd2\x9c\x84\xf3\xbb\xa2\x0cK\x12-\xc3\xf4\x9a [\x1d\xb9N\x81\xa3r\xbcNK\xf5\"\x08\xd7k\x92\xce_.\xe3d\xeeJ_yA\xbb\xe5\xbe3,\x123\xb1\xc6J\x16MY\xdcS\xab2\xb9\xd3\x94Q\xb2\xa0oN\x84bG\x8f\x99>%\xc4\xd7\xfa\xfe\x18\xd6\x1af\xa0\xb0\xfa\x18\x9a\xecC\x9b\xd1)\xf6\xc1\x9a\x95\x0fVy5},\xce\xf5\xf4\xb996{\xee\xa8\xeb\xd8i\xd7\xda\xdb\xb5\xc5\x04\x9bv\xdd\xd7q\xcf\xeamJ\xe9\xb4\x0c29\xa53\x1ed\xed\xa2O\xbe1u\x89]\xe6YH\x14\xe5\x1e\xea\x9bl\x9e\x857<\xb6U\x16,ZQ\xc4\x05!\x8c9\xc5sRd\xc9\x0d\xf10\x9c-F\xb1[\xc5\x05y\xec\xc2\xb4V\x80-\xcc\x9e\x9d\x04\\\xd1\xad\xef'\x00M\xd4\x9f\xd9\x99\xb2\x0en&9\x963O+N\xdemmQ\x02\xcf\xf9H\xae_}Y#h\x8c\x15\x0f\x9bAS\xb6\xdf\xd6\xda5#u\xa7\x87:A\xd7\xb8v(\xf2\xffA]\xca\x12V\xe3*\xeb\x9dq\x03\x84\xa3\xde\xc5\xb5Q\xd7\x88\xa1\x02\xae\x1b\xc6\xa46\x1eW\x8f\xb12J\x16\xb5\xaeX\x85\x84\x9d\xba5\x15\xcf\xfb\xcb\xb2A\xb9yp\x0e#\xc8\x91Y\xce\xba\xf5\xbc\xf4\x90(\x85\x98\xbf\x9dk*}9|\xd4\xa054\xcb\xae\x89\xecr#\xc2\xb5\xf3}\xec[(\x14\x8e\xba\x8a2\x9d\xd8B\xa9\xf0\x80\x84\x14\x97@\x08Q\x12\x16\x05\x84\x85\xe2%\xfb\xbbLG\x93\xd2\x0bO\xa4\xc9\xbe\xe9\xc4|{W$\xe3Z\xb6\xc8\n\xfe\x02J\xab^\xbc&oS\x96\x1a<\xc5\x18]\\\x9d\x03\xe9h\xd4E\xe8\xe7h\x89\x92Z\x08\xfd<h\x14\xaf\x98\xacL\xfa\x89!\xd7X\xcc\x90F\xeb\xca\x8f \x13Z!\xb5\xc2\xf2\x10\xe5j\xd2\x05\xcf\xd7\x1duJ\xda\xd2grg\xb4\xcd\xb3\xa1'\xb0\xa8\xcc,\x16\x81\xb5\x9er{\x1bJ\x8c\x11\\G\xeeH\x85\xac\xaf\xc4\x10n\x94\x10\xb7\xf49\xd0'd \xd49\xde\xaf\x01\x84_y\xea\xc7&C\xad\xff\xa6So\x85 \x8a7\xfdG\xb2 9I#\x017(\x15\n\xcb\xb0H\xbf+\xe1\x8a\x90\x14\xe24.\xe30\x89\x0b2\x87\x1d(\xaa5\xc9]O\xa9\x81\xb6\x19\xad\xf8\x95\xfc`l\xe1\xa1\xae]C\x11C\xca\xe6\xb4p\x06\xb2\x1b\xdd\xb1~\x86\xdbf![\x8a\xc73\xc6W\xdblOe\xe4\xa6KM\xb8\xb1\xe1\x9e'\xbc\xe8\x1dv\xe7\x1d\xc6\xeb\xb1\xa3-O\x95\x04\x0b\xc5$K\x12\x07\xbc\x0bW\xe4\xbfE\xaey\xa0\x9fxn\x85f\xf2\xfe4\x18\x0f2\x01\xd2\xa1.\xf9a\x02\xa4\x96\x85\x1b\x97\x1fMu\xa5id[\x86\x1f \xe3\x91dY\x19[5f\xe5\xca\x13\xa8\xf5\x1d\xdb\x92\xe5\xe4\xf7\x98AE\xe5\x12\xae\xeb(\xbcn>\"\xd2\x84\xac\xa0s\x01\x0f\xad\xaeB\xf6\x89\xe4\x95\xbd\x95\x07\x0b\xce\x97\xb1\x80J\xe5\x8c\\l\xb8_\x8f\x03%8WJY\x1d\xea\x1a\xdf\x98\xbf\xda\x1dO\xf5W\x19\x7fE\xe1\x8f\x9c\x86\xb0F|\x86\xdc\xa4\xb5\x89 \x0b\xd4,\x83\xa5\xb2\x1b,iA5\xfe\xd0\xfek#\xf8d\xb9\xea\";\xc1\x163\xc27\x12=\xe7\x14:\x01\xf9\xb2\xceIQ`\xd6\xa4\xaa(\x81\xc4\xe5\x92\xe4p\xc5c\xccf\xb9D\x05\xb1`\xcd\x0e\x8c6\x86J\x1a\xb8\x935s\xccc6\x96\xaa3\x8eJ\xc2\x8d\xed\xe5\x94\xd8-\xd3jC\xa7\xf5\x0d\x0c\x08@\x07\xaa\x91\x96\x85\x95\xd5\xcc\xbd\x0c1,\xd4\xdd\xc6\xfb\xc8\xa8\x11\xb1\xc7g8\xfd\\\xa1CD\xb2\xa1K\\\x83\xcbKJ!}\x93\xfb\xa3\x1aX\xef\x8e\xbfM\xfc\xa4\x03\x93}`\xea\xee\x99\xedz'-\xc5\x12zMS\xe09f\xe1\x07\x0e&\x9eb\x906e\xe5\xbb\xe3\x03\xe3\xf5\x0cMc\x06a\x97\xb6\xce\xb3u\xd1\x845\xa4\x98\xaa\xe4\x01HyIN\x16\x05K\x0d\xc5B\xcc\xad\xe7a\x89\xf9\x0f0Nr&\xad{\xbb\xef\xe2\xef\xd8w\xa4\xba\xdd\x87r\xf4\xa9\xe2# \xa3\xf2e\xb6Zg)\xc1\xbc7\xbf=\xf8J\x95\x82\x94\"EY'\x90\x91\x88\x11%n\xa69\xf4\x90\x04x\xd8\x8f\xdcu\x0e\xf7\xeb\xec\xef|~\x01I\xffZ\x91\x8a\x9c\xf31\xd4V\x15\xbe\x94\x87^\xab\xfb\x92\x87\xa2\x15\x11\x9d|p\xc4\x14T\x01\xa7<\xc9E\x96G\xe4gl\xa8[\xb6f\xe8\xf0u\xf3\xad\x906\x96\x03\x07W\xfa\xe0H]\xab\xe3\x8b\x14\xd8\x17\xcap\xaeP^Qp\x1d)\x85\xaa\x94 \n\x1fb\xb7\x90\x1b\x90Z\xf3\xd4/\xe3\xe2C\x95\x93\xd6\xa9\xe0 D,\x8cB]\xf3\x18B\xf5\xca\xd2\xc6\xa4\xb7\xc5\xb7\x00N\xa9{ ;\xaf\x0b\xf8\xa2\xe1\xbc\xe2mV\xa5%\x99\xf7\xc5\x0d\x14\x14\xb5fc\xa9NC\xdb\xbe6ae\xae/\x1d\x0dm\x18\xe6\xfa\x1f\xc9: #\x16\xa0ph\x1f\xe2n\x18\xea7\x8bm\x86\xec\xf9\xe3\xf7@,\xba\x1c\xac\xfe\x1b7\xfd\xdb\xb7\x1f\xb5\xfd\x04GU\x9e\xe3 \xdd\xdcu\xa2{\x16\xc3\xb2\x9a,\x98#H\xf3\xcburz\x05\x03\xc2\xd4\xf8\x0e\xfa\xdb\x1c\x8c'\xe3\xdd\xdfuQ\x9c\xf3W/?\xbe\xfat\xf9\xe3\xfb\xcbw\xef?]~xq~~\xf9\xe9\xdf\xdf\x9c_\xbe\xffx\xf9\x97\xf7?_\xfe\xf9\xcdO?]\xfe\xf0\xea\xf2\xf5\x9b\x8f\xaf~t\x86\xf4\xa9Q\x12\xd3\x897L*\xd1\x17!\xafu\x97\xcd~z\x14\xfc7T\xb7\xd1I\x8f\xd3\x7f\xba17\xa6\xbb\xba&\x14\n\xae\xb2\xf4\xd5\x97\x92\xa4\x94\xf8-0\xca\xf85)\xb5\x12RD\xe1\x9a\xfcH\xc8\xfa\xa78\xfd\xfc!\xc4\xa4\xcb\x84;\xbb\xb5\x8a\x8be\x98$\xd9\xed\xab\xbfVa\xf2\x1f\xe4\xae\xe0i\x05\xe3d.\x82\xbe\xb0jY^\xb2\xccz$\xb8*3^H\xf28L\xe2\xbf\x91s\x12\xe6\x11ko\x1d\xe6\x85\xfc\xfb\x9a\x94\xe7\xe1j\x9d\x90\xf3hIV\xec;L\xd1\x10\x96\xe4C\x98\x87+\xad\xa4,I\x9e*eo\xe3\xf4'\x91;Z*\x0d\xbf\x18J\xffX\xc5s\xa5\xe0\xc7\xb0$\x9f\xe2\x15Q\n\x99%\x8cR\xf4C\x96%$T;~\x1d'\xeawo\xd2\x92\\#\xad\xd3\x94\xbd\xabVWZ\xd1\xdb8\x8dW\xd5J\x1fn]Fi\xac\x97K\x12}\xe6\xdf\xad\xc8*\x8b\xff\xc6\xba\x8a\x8b7\xabU%\x84~\xa6\xd0>\xe2:_Q\xd6p\xfa\xd4d\xbd\x1e\xd7\xaf\x8fL\xaf3\xfe\xfap\xcf\xf4\xb6\x12\x1f\xef\xee\x9a^\x87\xf5kc\xd7\x05\x7f\xcd9S\xf9\x15\x9d\xdc\xff=\x7f\xff\x8e\xeb\x00\xfa\xec\x19\xec\x9eK\xc2*\x816\xc6\xce\x9b1\xb9-p~\x93\x85\xa4kb\x97\x0d\x11P\x15*+X+\xc6Z\x9d\xf4\xa4\x93\xb2\xa1\xf4:\xedD\xbc\xb8\xeb] \xde\xc8+\x17C\xd6|qy\xe4\x9a2\xfb\xbf\xe7.\xb2]\xaa\xdfj\xdd\xc3\xff\xcf\xde\x9fw\xb7\x8d#\x0f\xa3\xf0\xff\xcf\xa7(\xeb\xc9/C\xb6i\xc5r\x96N\x9c(\x9et\xe2\xa4\xdd\xd9z\xb2\xf42\x8a\xc6\x87\x96 \x8b\x1d\x89TH\xd0\xb62\xf2\xfb\xd9\xdf\x83\x02@\x82$\x00\x82\x8e\xbbg~\xf7^\x9e\xd3\x1d\x8b\x0b\x96B\xa1P{\x85i\x1a\xae;t@E\xb3\xe8\xd8\xaa\xfe\x8d\xbd\xbc\xf70@v4nv4K\x93\xe5O\xef\xdf\xa6S\x92\x125\xef7PO\xab|g\xabr\xe1\x11c*S(VN\xb1\x84,\xe5\x92\xf4\xd9\xbe\xb4}Z\xc0\x8b\x94\x19x\xa3\x8c\xcf\x04oM\x8a\xa6\xde\x93/\x1e\xf1\xfb\xcbp\xe5Q\xccd\x1fe\x14g[\xbe\"\xa6\xf5:\\\x95oB#\xc6 +;D\xf1\xf4C\xe2$\xa2\x80b\x16\xab\x1b\xb8\xa0jV\x0d\x159\xdb\xef\xcf\xa2\x05%J<\xa3\xb1 \x91hA\xefD\xa3\x8d\xf9\xf3\xd9i\x7f\x18N\xe6e\xeb\xc6\x1c\x01\xd2*0J\xc7h\x0dM\xc78{O\xe4^\xd7X#\x9a%\xfe\x18\xc8\xe2$]\xe2 \xc2qn\x08\xef\x03\xa4\x13\xcfcW\xa4m\xc9\xe8\\\xf4\x14e\x05\xdd9\x14}\xe4X\xfd\xf8\x9a{\x91\x13qj\xb6\x8a\x9bu\x97\x10A%^\x87+\x17t2\xa2LJ\xa6\xf9D)\xf2g\xcb\xfdP]W\xe2\xb1\x95\xe5\xa6\x9df&\xd8\xcb\xa0\x12\xd1\x08\xca\x90\xdfa\x97\x7f\xd9\xa8\xcfD=\xabr\xbc\x06\xcb\x9cP\xf7Z\x0f\x84\xa8\xed@\x88D\xa5\xa7\xdd\x00\xf2\xf2n\x1c@\xd4 L\xd9:\xa3d\xf9a\x9e\xc7\x9f_G\xd3\xe9\x82\x9c\x87\xa9]\xe4\x07\x9d\xe5\xce\x04\x13\xd2\x9fJ\xf7I\xc1\x85\xe9K*@\x97Fu/7\xf4H\x86\x0f\x8cyKc\x8fz\xe8\xbfE<C\xb2\x13\x00]\xa0\x8a\xfe\xae\xe6\x1c\x14k\xc4\x00\x90gO\x93i;\x94%\x87\x81\xae\xeb\xec\x8c\xd0 \x94<\x7fPE\x16Fq\xe6\x9d\xb3\xb3\xe5\x1c\x13\xf3\xd6\xc9\xb41vI\x02gO \xa2(\xaa2\xda\xd5\x12h\xc6\x85{\xec\x10H\xb3\xba+\xd4\xa5Xfv\x82\xb9l<\xb4\x14\x96\xa7\x1c\x06\xf6\x9c,\x90\x01\x15\x7f\xaa\xf9\xd4\xcb\x17\xf9 \xd9\x04\x87<\xcd\xd0:t\x14{\x9ac\x970\xf6\x81\xe8\x02\x1f\xb4\xbd\xf4\xa3\x0c;\x8be|y}\x10\xcd\xf9\xcf\xa3\xd3\xf9\":\x9d\xb7s\x97r\x85\x9b\x9e\xec\xf2\x92\xa6T\xb9B=\xfd+\xb4O\xc9\x05}\x9a\xc4\x94\xc4\xb4\xf4\x89\xbdKn\x97\x89\x84\xd4W\x8c\x93o\xc7\x95\xd2g!P\xbc\xc3y8k\xa5\x8f@\xa4\xea\xe0A\xaa\xa3\xdd1Og?\x08\xd0\xaf\x9b\xf6\xa38&\xe9\x8f\x1f^\xbfbrv/@\x97\xee\xdd\x87\\5\xce\x1d}W\xf0\x08\xbeG2\xf9\xe9\x13\xf7}\x15\xb5\xd1f\xd6\xaa\xe2\x0c \xac\xa7\x89\xecz{;\x1b\x07(p,J\xd8\x0c\x02\xd8\xc2|\x16+x\x0c\xf7y/\x9c*\xe0\xdd\xd1\xadO\xefo\xf5)\xc9\xa87\xf3\x03\xf66\xfb\xe0\xd6\xe8\xc6\xa7\xf3\xb1r\xdf\xeb\xdd\x12#\xdbl\x8a\x06xn\x91$\x80\xbf\xf5\xfe\x06\xb2\x88w\x12@\xefo=\xf5g8\xca`\x07\xee\x8ca\x1bR\xd8f3\x1eBog\xe7\xd3\xc5m\x82\xb5\xe4\xe4\xad\xefn\xf5\xc6\xa3\x95!\xd5\xa8\xbcpYP\x85\xe2\xd1\x8a\xf7h\xae\xc8\xdd2\xc9L/[\x85q\xcf\xc7d\xc5O(M\xa3\x93\x9c\x12\xaf\x97\xd15\xea\x04F\xbdI\xb2H\xd2}\xf8\xbfw\xef\xde}\x08\xb3$\xa6;\xe7\x84a\xf4>\x9c$\x8b\xe9\xc3\x1e/_\x8f\xff\xa9\xaf\xe2\xbd\xf1h\x05\x07\xb8v\xb7\xe1\x00\xf6`\x1f!|\x0f\x0e\xe0\x8e\xf8\x9b\xdd\xbf\x0d\xfb\xb0}\xeb_^\xe8\x9dd4\x0d't\xb3\x88\xc2l\x13O7\xd2y{\xc3\xf6\xec&\xf3\x96\x9b\x8c\xa4\xd4?\xd8\xe44\xf17'^\x98\x91\x0d9\x8d\xe2M\x92,<\x12\xc6\xfe\xc1&%\xe1\xe7\xcd\x9a\x12\x7f3\xc1\xc7\xec\xc0\xd9\xcc\xc3t\x83\xf2\xedt\xb3\x08\xb3l\xb3Hb\xb2I\x96\xab\xc5&\x893\xbaIb\x1a\xc59\xf17S\xe2\x9d\xe4\xa7\xa7$\xddL\xa2e\xb8\xd8L\x16aJ63\x8f\xed\xf1\x0dI\xfd\x83M\x14Gt\xb3\xf0\xc8iH\xc9\x86P\xe2\x1f\xf8\x9bi\xb2\x99&\xf9\xc9\x82l\x887\x99'\x9bEv\x10\xcd6\x8b\x8cx\xd1\xcc?`\xf3\x88\xb3<%\x9b8_n\xceHL7\x17\xde\x84\xac\xe8\x86L6+\x0fS4o\x92\x94\xfa\x1bJ\xbcx\x9amPs\xb2Ic\xdf\xf7Y\xd7\x8b\x05\x9d\xa7I~:\xdf\x84\x8b\x8cl\xb0l\xf9b\xcd\x86r\xc1\xa6\x93\x84\xeck\x8f\x84\x939\x9b}D\x18\xd8\x92\xe5&\x8f'\x1e\xdb\xbdl\x80\xa7\x8b\xe4$\\lN\x13\x9alN\xf30\x9dn\"o\xb6Y\xae<\x8e\x03\xd9F\x19D\xecEt3Y\xe4S\xe2\x1d'\xf1\x84\xf8\x07\x9bE\xc4\xa0\x95\xd3\x8d\x14}6\xd4#\xe9,\x9c\x90\x0dI\xe3p\xe1\x1f\xf8\x07\x9b\xcc\xdf,\xbcpy2\x0d7\x84n\x92\xc9\xe7M\x12\x9f\xfa\x9b\xa5\x17M\xd2\x04I\xe0\x06\xf5L\x1b\xaeK\xf07o\xc27\x9b\xd8\x0b\x97$[\xb1\x96B\x1a\x9d\x91\x0d\xb9\xa0\x1br\xbe\x89\x16\x9b\x84n\xf2\xc5\xc2\xdf$\x1e\xb2E\x9b\x15\x8f\xaf\xdc\xa4\x9b\x9cn\xceH\x9aFS\xe2oV^8\xf9\x1c\x9e\x92M\x98\x86\xcbl\x93Fgl]\xd2\x84\x92 %\x0c\x104\x99$\x8bM~\xb2\x88&\xfe&\xf5\xc2\x88a\x8c\x17N\x93x\xb1f\x0b7\xdb\x9cF\x19%\xe9fEB\xba\xf9\x92Gi9\xefl\x92\x93\x0d\xd7\xb3mh\xba\xde0\xaa\xe8\xfb\x9b\xcc;Y\xb3\xc5\x0f\x17d\xba!\x8b\xd9f\x9e\xa4t\x13\x9d\xc6d\xba\x89\xbe\"xB\x1aM6\xa8\xd3\xd9\xa0\xa9a\x93\x9fp\x97\x84M\xbe\"\xe9f\x1dO\xe6i\x12G_\xc9t\x83\xb1\xc4>\x83\xe8r\xb5`\x83\x9f\x93x3\x8f\xb2\xcd<M\xce\xb3\x83M\x1a\xc6Y\xc4\x90&\xcd\xc9&]o\xd6+\xe2\x85\xb8?\xa6d\xb6\x89\xa6\x9b8\\\x92M2\xf3\xfdM\xee\xc5\xdeD\xa0\xf9\x94\xcc<\xc6.2<I\xe2\xcd\x82d\xd9&\xe3c\xa4\xd1\xc2\xdfdd\x93El\x81\xce\xbc0\xddD)\xcd\xc3\xc5&\x89\xa6\x9bd\x11R&\xcen\xce\xbd\xc9<L\x8f)\x1f\x10I\xc9f\x1e-\xc8&\xa2s\x7fs\x91\xa4\x9buD\x16S\xff\x86 \x80X\xd6jw\xec\x07\xbc\xd2IArH\xbdn\xc5\x02\x8b\xabGH\xd2o\xde\x14t\x9d\xd1\x88}v~,\x94\x03`0x\x08[\xa3A\x00\xb7F\x9fn\xfd\xfbr\xe4}\xda\xd9\xfen\xf8\xe8\xf1\xfe\xc3\xcd\xa7O\xfd\xe0`\xeb\xe6\xdf\xff\x7f*\xfd\xbd5\xfa4\xf6\xab7j\x14Z\x10\xe8\x19\xeb8\x82G\xb0\x87\xa4\xfe\x11Z\xdf\xe2\x82D\xcf\n\xea<c\xc7\xd46L`\x1b \xf46\x0c\xc6\xc5\x9f{c$\xc8\x9f.nO\xb6vvz\xf2Mv\xef\xd6w\xd5\x9f\xb7\x18-\xfc\xbf\xbc\xc5\xf1hgg5~h\x90\x07\x00#\x9d\xb6\x870se.\xb52\xda2\\}Hj|\x97I\xf5!\xd9$M\x18\xcd\x00\xaa\xf5\xc6\xd4\xea3pP\xfd\xb9\x8f\xb1\xee\x1a\x96Dj\x075\xed\xef\x19\xdb\xdf\xab\xb6\xbf7\xae0[\xaf\xc3\x95\x8e\xe1\xab1\x90\xaf\xc3U?\xca\xb8\x96\x04\xdd\x1cI?\x8b\xbe\x92\x0e\x1cd\x95c\xe4y\xbd0\x9cn\x14\xebxFL\x82]\x16X\x1d(U%\x96$=%\x9eN\n<\x13us\xdbGs&\xf2\x94\xc7\xa3]\x8d\x9f\xe7\x99\xa8\xf0\xba\xa5\xc9\xbb\xce\x9e\xcd\x0c\xd5\x93\xd9\xb3\xc5\xb7\xe5l_\xf1P\xa6\xba\xc3\x8a\x8c>\xf7|L\xd1\xce\x06\x87\x11^\xf3z\x8a\xf6\xcc)E\xfb\x14\xab\xfc\xa2AB\xefGR\xbc\xdc\xf4\x86\x99\x06Pw\x06\xae_X\x8b\x8c1\xa6\xd6\xb7N\xf1\xadA\xcb[K\xc6\xd3z\xa7\x01\xc4\"\x83\xc9\x00K\xede\x84za\x00k[\x81\xe2&*H\xa1c\xc9\x84\x8e\\: .1\x19\n\x0fq[\xea\xb9A\x0d\xb1hM<?\x13\xe6\xec\xc5\x9f\x91x\x1e\xf3\x8a\xcc\x95\xc4\xf3\xf3\xebI<?\x93\xbeY\xfa\xba\xb9m\x129\x94\x12O\xa3\xea,\xe9\x93\x0b\xe4H\x9fG\x0b\xf2&\\\x92\xe7i\xb2\x142\xcd\xb3([%Y\xc4h\xeb\x8f$\x9c\x12{`\x19(\"\xde\xadY\xb4 \xec\xd8\x1e\xf6\xbc\xd1\xbf\x1e\x8e\xbf\xf3\x1f\x1e\xf4nE}rA&Z\xc3A\x91\x81\x8d;>U\xdb(\x9a([0\x11\xa7\xc2\x9b\x8d{\x87\x95\x84\xbe$U\xa3\x81\x86\xb8H%\\\xa3\x08J\x80\xf6\xb5l\x12.\x9e\x86\x19\x1b\xd6\x93\xea\x9d\xe7b\x90\xad\xa0\x91\xeaG\x8f\xf6Sn\xe8\xf7n}\xea\x8f\xfe\xd5\xbf5\xfe\xee\xc6-&J4K\x7f\x92~\x16\xc6\x11\x8d\xbe\x92\x8f\xe9\xa2\xb5\x87H\xad_\xabz\xdb0a\xadW\x8b7\xd2\xc9\xd6\x8abp\xa6\xf6\xeck\x8f\xe0SB\x9fL\x18\x97\xcf\xb0%M\x16\x8b(>}G\xb2U\x12g\xed\xd0\xa8\x9dd\xa5\xc2\xbf\x1fe\x8a\xf6_Q\x87\xb0\xa51i\x0c\xaa\xc7\x9e\xfe\xcdR\xbf4\x8b\xe2\xa9\xd7\xaa\xac\x91Wq\xc2e4Li\xf6kD\xe7^o\xafW\xe8#U\x15*\x83\x89\xd7\x9b\xf0\xdd\xc3\xad\xf6\xff\xbe\xf4K,lz\xfe\x01\x98+X\x15\xaa\x1d\xaf'\xba\xe8\x89\xc4\x9b\x1a;\x89\xa1\x8d\x14\x9d\xe64\xe3\xd27\xe2\x17\xca7a\xea*\xb3\xa4\xc5\"O\xa2Y+\xc7\x9aM\x9bx2%d\xb5X\xbf\xa7i\xb4zI\xd65~\xcd\x927\xecZX\xaab\x99[\x94\x81:\xa7L=\xb6ut\xbb\xafZ51\x99N]K\xb7\xd9\xa8\xe4\x8f\xf1q\xb1\xcd\xd4&5\xef5e\xf8\xbf\x19\xb05d\xb1\x86\xa3\x91\xc6\xe4dVh\xe3\x98b\xee\xa1\x17a=D\xd4*\x8a\xc8mv\x87 5<\xa1\x0c\x15o\xe8\xd3V_\x9aU\x90\x91\x86\xec!\x15s\xb1\xa3F\x86\xa2\xdd\xa6\x94\xe2\x80^)\x0c\xb9A-\xeb\xcdp\xddp\xa6\x18\xad\x16\xb4m\xc1)\xb7Z\x94\xd5\x8dMn\xf5P%\xbeU7_n\xdf\xd3T\x94+\x98\x9d6\x83d\x91o\xb1\xd9\x84iM\x18L\xc4g\x1a\xd2\x1f\xa3\x03\xc6\x87\xa4p\xeapX#\xfe\x8da\x8d\x94\xde\x8chR3\xfdU\xdfc\x9bb\"\xfd \xee5\xfc\xfa\xa1\xc8\xbaq\xfbN=<\x05D\xee\x0d\xf4\xb0\xb83\xd0}\xba\x92-\x7f\xbf\xab{</\x1e7\xa2\x06@\xe4\xde\xc0\xc6\xefk\xbd;\xce\xc4\xe3;\xfa\xbe\xd7\xe2\xf1\xf7Z\xcf\x91S\xeeC}\xa7\xee,\x0d\x82I\xc7a\xedi\xfb=\x16\x8f\xef\x0e\xbe\xaf\x044\x80\xea=|\xd2\xe2\xbd\xe0\x1a\xd8\x00\xe6\xe0\x06hZ\x90\x1aK{\x0eC(\x0e\xc1\xe6T.4~<\xed\xba\xfd\x86\x94\xac7\xc84\x07k\x02\xd6\xfbN\x86g\x01+5\xfb\x05\xb6nh\xfc\xd0\xee\xc0\xbaE\xad\x16V\x17ZeY\x03\xd5aj.?2\x81\xe1\x89u\xa4\xac\xdfU\xd9/\xfb\xb9p\x1fF\xd5\x8f\xab\x95\x89\xb3\xa8~\xba\xf1\x11#\x83@l`Rn\x1b\x1b\xbf]m\xfc6o\xdc\xca\x8bW\x8d\xf4\xa2\x0f\xe4>\xaa\x0f\x89\xaf\x16_e\x0f\xcf*\x07\x89\n-\xa3\x05\x19\xb3\x16\xf4\xa3\x18\xf5\xe3\x99\x17\x97\x0c\xb8N\xb7\x02\xaa'\x809:\xd7m\xa3\xc1\x01(\"A\x84A\x13\x11\x16Z5\xf2\\.hm\x8d\x95t\xf1<\xc0C\x9c\xe2\xa7Q\x93\x18p\xfe\xad\x9f%K\xd5s\xa2\x8d\xddd\xbd\xac\x95a\x8eb\xc6[\x8db\x8d\xdd\xeb\xb2\xbe%\x9a'\xdf[\x83\xdfc\xeb\xfe\x80\"\x10\xf01\x94\x02T\xef\x97p\x91\x13\x1e\xe8uB`A\xb2\x0c\xe8<\x8cA\xb4\xdck\x8e\xb1\xb9;\xfe0\xf8gv\x18\xd3#\xf3\x98NQ\xe5\x9e\x8aa\xf1\xc6\x9d\x86\xf5Y\xefI\xda~Z\xa0\xa4y\xeb_;\x07\x9f\xa6\xdb\xde\xa7>\xfb\xc7?\x90\xb6\x01EN\xad\x0d4\x04\xc1\xf8\xb8\x0c\xee\xc8\xe0\xfa\xdamt\x0e\x83\x8a!\xe2\x8d;\x0d\xeb\xb5\xceE\xd7mLx*\xd5\xf2+\xd4\xbc\n\xcd\x90\x9bE\x0b\xe24\xc0\x0f\x06\xbfb\xb71\xf6h\x9a\x13N\x1aD\xccR\xb8\xc8\xd4\x1b[\xbb\xca\xdf\x03\xc9\xca\x9bF}\xc2\xbbw\x1a\xf8S\xbd\x8f\xb4\xdb\xb8\xf9`5\n\x1f\xf3\xd8\xc4\xcb.C\xfb\xd9\xe4\xd3\xed68^\xb1\x9f}V\xb8\x0b[VZ6\xef4\xb2w:\xf7s\xb7QIqO\n\x1b}\x9a\xbcJ\xceI\xfa4\xcc\x88\xe7\x07\xb0u\xeb_\xa3\x7f{\xe3\x83\xd1\xee\xce\x83pg6\xfe\xf7\xfd\xcb\x9d\xe2\xef;\x0e\x7f\x0f\xf6.G\xfe\xe5\xd8\x890\xb0\x91;M\xf8\x8d\xd1\x0b\xdf\x9d\x98\x96\xbc\x89\x1b\x9d\xe7]8\x0d\xef\x951t\xa0\xfb\xf0:\x90\xfc\x0e#|f\x08xp\x1e\xdf\x16O\xebpzx\x81\x1e\xc9\xb6\xa5\x9d%\x8bEr\x0e+\xd1I\x0f\xb6u.\xec\xd53\xbc\x19\x9e\xd1:\xb2\xabr\xb67oV~\x9b\xb9Z\x13\xc7\x8b\xac\x1eR\x9e\x93d\xba\x16je\xae`\x8c\xe2\x1ew\x93\xc7_h\xc8:\xbeX.z<N\xb9\xbciJ\xfb\x9b\x94\n\xcf\x94\xa0\xa3\xc2\xd4\xf4*\xe6W(\xfb\xca0\xd0\x85wdP\x12\xe7\xc5j\xa5f\xcbc\xce\x9b[\n>\xc7\xd0\xf9LyS\xb0\x1e\x867\x17\xe5\x9b<\xc9\x85\xfe\xb5U\xf9\xda,I\x97!5\xbd8\xaf\x8cQ\xec\x00\xc3\xbb\xd3\xca(\xed\xef\x9e\x95\xef\n\xc4\xad\xa7\x1e\x01\x01G\xeet\x950\xa67\xb2f\xe6\\3\x91\xbdT\xcc\x0d\x01\xbf\x8c\xf4\xfd\x83Pe\xf4B\x99\xe0[\xbc_\x15\x9ay\x82\x97H\x16\xd306u\xackJot\x94MN\x92<\xa6&-:\xbbN0\x9c\x8fq$\xcal\xccl\x8d\xb9!\xd4eH&\xa1l\xcb\x8bx\xa6\".\x96X\x06r\xc1\xbe/\xb5i\x95\xcfw[\xbf\xc6\x94\xf1\x92\xf9\xeb\xfe\xf9\xa1\xc1\xc8\x0e\xd2\x00\xd7\xd0B,\xcc\x9e|V\xed\xaa\x9bdvhp\x08\x90\x17O\xef\xad\xd7\x11G6u\xac\xbc\x94\x80\xa7\xc8\x0fD\x7f\xc6/\xda\xed\xcf\xf2\x92\xb4\x88\x1b\xb8{H\xf7 ;\xde\xf88y\\bq\xf6\xe1\xf1\x80c\xe9\xf9\x81\xa1\xfc8h\xf5\xb9 \xb6\xe3\x13F\xd2\xd7\x01\x9c\x16\xb5#0\xb5\xfd\xfb\x00\x0e\xc75\xe1\xd5:\xf6R\xdf\xa4}E\xa7\xe6\x07\xb1\xd4 \xf2\xcfe\xf9 9\xf7w\x82\xd6\xc3,\"\x8b)D\x19\xe6\x0fY\xa5\xc9Y4\xc5\x13@G\xb1e\xa3g\xb6\xc1\xb2\x89\x7f\x85!<\xf3\xa2\x00\xce,N _\xd1\xc4\xc1\xc7\xf3\xd5\xd5\xd9\x00\xc4\x10\xe6\xe5\xd6\x99\xb7\x8d\xe69\x0c\xe1\x0d\x1b\xcd\xdc2\x9a\xe7\xcah\x9ew\x1d\xcd\xb4m\x08\x1fa\x08\xaf\xd8\x10\xea\xa5E\xd4\xeb\xa32\x84\x8f]\x87\x10\x96\x00 \xdbF\xf3\x03\x0c\xe1-\x1bMh\x19\xcd\x0f\xcah~\xe8:\x9aY9\x9aY\xdbh\xbe\xc0\x10\xfe`\xa3\x99YF\xf3E\x19\xcd\x97\xae\xa3\xa9\x1e\x89m\xe3\xf9\xdd\xe2\xb7$/\xe4n\xbc\xdfQC\x1eR\xb2C\x99\x1c\x85\xcd\xaf\xe0\x00~\xf6P\x85\xd6\xcb\x99\xb0Q\xdc}\xc7\xef>\xe5D\xd4\xcc\x17\xc9K\xcc\xf6w\x93\x1bKIf\xab\x07[\xdb\xfc~\x85!|\xf0\"\x0b\xb0qv\xbfv\x18\xe3\xaf\xedc\xac\x1c\x9emC\xfc\x05\x86\xf0\xb9}\x88\xbft\x18\xe2/\xedC\xac\x9e\xd0mc| C8j\x1f\xe3\xcb\x0ec|\xd9>F\x95\xc1j\x1b\xe1\x8b\x96\xa1\x1d#\xf3S\xb0a.\x03}!y\xd6\xa3\xd8\x1b\xf5\"J\x96Y/\x00\xceg\x8f\xfd\x00\xa2\xa6\xa1\xbb\xcd\xd7\x03\x14\xc1\xaam\xdb\xb1\xab\x82I/\xd0I\x82!\x0b\x06\xabV\x97P><\x12\x0fU*\xf0\x02\x190\xf6\xf4)\x13*\x03ap\xe7\xeb`\x1f,\xbb\xa2xJ.\xf6\xa1\xc5g\x90]$M\x93t_\x13/\xa7^\x97\x96x\xb0v\x9cP\x18\xe46\x94\xb8\x01Cx\xdd\x8e\xb47\\pA\x00\xeb\x86+56\xda\xbd5\xfe+\xcdl\nvNI:\x1a}\xbb\xbb\xb1\xc6\xd2 \xc2/\xa8\xab\xd8\xdf0h\xe9\"\xa0\x19\xbco],\x17BwE\x8c\xf2]\xc4\xbd\xae.\x96\x0b\xdc\xb6\xf8\x17\x166\xb2\xad9\xd7\xf3\xb0o\x98\x94/\xbe\xfd\xf7e\xc0\xbe\xbfq#%3\xd5\x1d`\xbdBO\x18\xda\xc7}\xcd\xff\x14%WD\xb9'\xda\x0f\xa7S\xf4M\x0c\x17?\x97O\x0e\xe0o\x8f\x0eX\xe3g$\xcd\xa2$\x1e\xf6\x06\xfd\xdd\x1e\x90x\x92L\xa3\xf8t\xd8\xfb\xf8\xe1\xf9\xce\xfd\xde\xc1\xe3O\xb1pl\x87\xdf^\xbf\x02r\x81K\x0c\x13\x9e\xe2\xf7\x84\xc0)\x89I\x1aR2\x05\x1e\xa4\xf47\xa3\xff\x93\xbc\xa4!LL\xa7\x8f\xa9\xb1\xbd[\x9f\xde\x7f\xf7\xe9\x96\xf7\xe9\xfd\xb6\x7f\xe3\x96\x05\xd9K \xc2\x10\xa2\xd1\xa0\x19\x8c\x08F\xc6B1\x16\x9eJK\xed\xf4)\xea\xcb~{\xfd\xea\x90\xcf\x8d;\x93\xb8\xf8\x80\xb0\x89$\xc2\xc3\xa8l\x8fo\x82\xe7i\xb2\xe4\x1bA\xb4\xd7\x9c\x91T\x8a\x99$\xbb\xa4M\xb2K\xb0\xbcm\xcd\x13&)=a`_\xc9y\x06Pxi\xaaYP\xac\x8e_g\xa2\x0eI=\xa9\x92\xbc\xd8\x12\x94\xe2\xfc\"\x99\x84\xac\xa9~\x86\x8d\x1b\xf4K\xa5\xde\xd2\xb4\xb5z\xa8\xa47\xee\x11y\xf0\x90~\x96\x9fd4\xf5\x06\xbe\xac\x17tS\xa7\x8d\x01\xd5C=\x85(\x86\xd8\x87\xb8^>%\xe5\x8e\x8a\x18g8J\xc7\xb2\xc5!&[\x1bM\xc9$\x99\x92\x8f\xef\x8e\x8a,]^:\xda\x1d\xfbc,\xdd;@u\xa1\xf6\x9d\xc1\x98\xdbU{.\xf8$\xb7us\xcd\x9a\xd9l\xec\xb4\xd5h\x15_\x86+\x07\x7f6\xf19\x12\x83\xea\x8c\x88\x0f\xdb\xd0\x1b\xa2\xb6\xb6\xf9\xb4\x9a\x99T^\x97~\xff\x8f$\x8aqy\x9aS\x13\x19{\xec\x83\x92\xf3\xa9d\xdd\xa0\"n\x17K\xd5yD1W\x04\xd0\xcb\xe9l\xe7~\xcf\xf7\xcb\xbb\xbd\x930#\xf7\xee\xe8\xc6Pf\x10jv\x9d`\xb8Y\x94\xc4\xd9{|\xcb\xe4\xb5\x13.V\xf3\xb0%\x97\xacz\x154\\j\x13\xe7=\x1f\xb7\xd0\x02S\xc1\x85)\xf1\x88\xfa\xccpd\xeb7\xe6\x92\xd0y2\xbd\xf2h\xf8\xe7\xa6\xf1\xc8\xa7\xceLDs\x8c4<\xfd\xb3\xc0Y\x1b\xb2\xf3 5\x98Y\xcb4\xe5\xc6\xce\xe8\x9cT\x94\x8c\xeeQ\x0cF\xbd\x91\xf4\xe6\xa5F\x0f\x11\x85m\xe1\xa5oz\xe5\xdf\xa2\xcc\xd1(\x0e\xd8\x06\x0dt\xfb3\xf5K\x9f\xfa\xff\xd9\xdb\xbdu\x1a@o\xbb\xe7\x8f\xc5\xfe\xd4-\xa9\x91J\x11\xdb\xa6\xd6d\xee\xaa\xac\xa4\xc1\xb1\xa6P\x9a1\xc25- W\xac8\xe5\xb4\xb9\x8ct\xf2\x18\xa9\x8e\xbc\ns\xa9\x143\xa4's\"\xc0:\x8f[d\xcaT:&\xcc\xd9\x98\xd4(\x8d\x96\x9e\xb2H\x9f2\\\xa3c\xb4\xd8\xf4z\xb6\xe1\x1a\x92\xab9\x0d\x93\xc1\xec\xb8\x84\xd9\xd7\xa6{Y\xa0I\xe7\xe6\xd44m\xe6\x9b\xb0\xecd\xf1\xd1\xad\x7f]\xec\x14\xccu\xeb\xb2\x05\xc6\x14t\x7f\xe6\x08\x85\xfdgS\xd8\x976\x85\xf5h#\xecb\x1ba\xf5r\x9f\xca\xff)\x1f\xf0\x94\xdfl\xa7x\xf7\xee\xfb\xfd\x1f\xf2\xd9\x8c\x08\x7fq[\xf5\xa3\xb3\"sSq\xf2\x95x\xa2\xa6\x19\xacX\x8c\xc0%S|o\xc49U\xfe\xe9\x18\x91:nT\x8cr\xca\x06\x89\x94\xae\x1cWjcD\xf59\x0eAaO\xf9T\x94d\xbc\x8bhBL^\x97\xc4\xb8\xbc<\xa4\xaa\x9aL[\xe4K\xe4\x14@-1\xe1c)+S.\xd9zZr\xfdP\xecx\x99\x97\xbe\xaf/\x9b%\xb9\xf4-\xa6\xd6\x16\xc3\xb2\xc5\x17\xae-F\xd6\x16\xb3\xb2\xc5\x1b\xae-&\xed\xb3\xbey\x13\xb6&e\xd3?\xba6\xadI-\xaf4\xbd\xe5mQ.\x87\x8f\x16c\xb7\x06C\xd7\x06\xeb\x898L\x0df\xae\x0d\xce\x1d\x1b\x9c\xb4\xaf\xf8f\x83\xdd:57s\x1d\xdf\xb41>\xf5\x17\xf1R^\x83\x85x\x91\xfc#\xe1\x7f\xc4\x8a3+\xcf\xd5\xcd\xee\xbc$kL\xcf\x17\x8a\x17\xe2)\xb9\xc0\x1b\x19\xbf\xf1$\xcb\x92I\x84\x99!\x00s\xb8\xc4e\x00\x1c`x~\xdc\x97m\xb0\xae\xfbe\x0bl\x00\xfd\xf7\x04k84\xe9\x07\xa6\x19\xf8\xfb\xdf\x8f\x8f\x8f^\xbf\xfe\xf8\xe1\xc9\x0f\xaf\x0e\x8f\x8f>\x1c\xbe\xc3?\x8e\xff\xfew\x8dji\xd5\xfc\xe2\xe5\xe1\xef\x87\xcf\x0c\xaf\xcf5\x1d\xbcyv\xf8\x9b\xf1\x83i\xf3\x83\xb7\xef\x9e\x1d\xbe3~p\x06C\xb8\xdb\xbc\xbd\x86!\x0c\xe0\xd1#]\xb5\xf3S\x18\xc2\x1av@\x93\xaa\x7fi\x90\xf7\x8f\xed5\xae\xf7\xeb\x89$A\xcf\xf9\x9f\\\xa5\x19\x13-?o9\xd8\xb9q\x18\x0b\xbb;\x92\xe4\x0b}\x8bT\x1c\x0dE\x83\xbbn\xdb\xe9=O*\xaf\x7fxh9\x89D\x84\x9bF\xaf^\xa9\x0e%\x0bH{\x98x\\\xa88w\xb0JH*r\x9e\xcb\x94\x05<\xd3\xc6\xeeCLw\x11?\x84h{\xdb\x87t\x14\xf1$\x89\x11\x13\xe8\xcd\xee\xf5\xa9\xd3l\xed\x01\x0d\xaa;:\x06\xa2\n\x98f<\\\x82\xf6\x8f\x8fy\xe9|\xe2\xfd\xc1OW\xf6\xc4\xa9\xe3\xb7\xd6Tb\x85\xf5A)\xe9a\x13\xc1P\xb9\x04\x8f\x1f?6\x995\x84\x92j\x1bb\x11C\xbd\xd9\xc0\x9d\xbd\x07w\x1e\xdc\xfb~\xef\xc1]\x9ca\x19\x99\xf8&|\xa3o\x85MZ\x93\x92\xcf\x04>\"\xcax#\x90\xb7Q\xf1\xe1\x06\x9c?l\xc5\xf2\xeb\xf9\x9c\x0dm|v\x90\xda<\x19jP\x16\x9d\xde\x92Q\x91\x14\x1e\x0da'\xae\x14,\x1cJ\xd0\xd5_&\xf0xXW\xc0\x9a\x06v\xd4\x96\xbd\xf1\x83\x18\xb9\xe3\x86}\xed\xda^\xbd\xaa\x8f\xa1\xbd\x0f\x0e\x80\xab\xc5i\xc4\x986\x97/\xb6\xba\xbf l\x03\x1a\xc5j\xb1\xb4\x8cC\x92\xe5\xe2\x99\xbc`\xac\xde\n\x02\xbf\x9f6\xabT\x83pd\xd6\x9c\x07\xef`\x08{\xcd\xdbo\x9c\xb3\xb6\xf3M\x9d\xa4\xcd6^\xf1\x93N\xbe\xa09\xda\x9e\xc1\x10\xde0\x1cye:\x02\xbe\x1a\x08\xf6<\xca0\xbb\x8833\xfe\\\xae\x94!\x99\xa7\xb4Z\x94\x0b\xc5\xb6\xe0\xa0\xb2l#\xf6\xbd\x85\x8a\xc2\x01\xa4\xc5\x19\x12\x89\xb2\xc0\xd6\xd3\xd0\xe0\x078Mb\xd3\x89\xebH\xab?\xda\xa8\x82uH\x1c\xfd\xac\xe3j\xad\xdcc\x18\xd4\x0fv\xees\xebWW6\xf6\x8b\x9d1\x00S\xd5h\x8a8\xe3\xd4\xc5\xefv5\xe0\xaf\xda\xf4\x1d\x05-\xe7Un\xb5\xc5\x96\xf5\xdd\xfdj\xef\x8e3(o\x90\xd6\x8e\xde`\xedR:ze\xcaM\xa4\x9d\xbb\x92\xb7\xdaiD\xbf8\xc0X\x13\xcc,\xb8\x14\xa7.^Z\xbb(\x92\x01\xa8G\x8e\xdc\x8e \xcf\x95-\x85\xe8>M0]\x83\xb5\x80\xb5\xbc$P\xd1y\xbd\x12\x167\xac\xd5\xe6!\xe7@\xa85\xc3\xfb\x96\xa9^\xd8\xe1\xc5\n3\xd3q\x06\x0d\x92\x14\")\x15 5K2\xe3[.\x0b\xd8\xd3\xcf(\xdd\xf0G\xfb\xe8.o\xeaV\xbb\x8a\xecj\xa6\x083\xc0\xfd\xc5\xb7\xc1\xbdO\x13\x94\xc5$\xc4\xc5\"\x84\xcd\xb5\xa0\x98\x9f\xfd0\xa6\xe9\xbax\x99\xba\x8e\xf2\xc6\xb7\x8dR30\xa2\x0e\x84\x8dSH\x91\xf2V\xe8<\xb6\x1f\xadc\xf3\xbe}pr4h\xe0\"\x14\xef\xd7F\xa6\xfe\xfa\xaa\xa8\xaa\xa8&\x1f\x81e\xb0\xbd\xd1\x918\xa0\xc75\x05t\x00_\xfb/\x0f\x7f\x7f\x0fCx\xca\xfe\xfe\xe5\xc9\xab\x8f\x87\xec\xd7\xcf\xec\xd7\xe1\x9b\x0f\xef\x8e\xf0\xe7\xbb\xa0\xd2\x7f\x14g+\x9e\xed\xbc6\xaa$O\xab\x99\xb9m\xf4\x85\x1d\xf0\xe6\xdc\x0bJ\xcb\xa3g\xe3\x0em\xd6\x1b\"\xdeK\xae\xb7x\xd9Of\x8e\xed\xbc\xf4\n'\x92\xc6\xc0^V\xa7L\xbe8\xb6\xa9\x1b\xdb\xcb\xab/*\x82\xef\xf8\xb84\x8e\xb2\x91\xfc\xbb\x17@\xef\xb2i\xcfQ\xfb\x99\x84\x939yG\xb2\x962\xc7JW[\xbc/\xfc\x10d\xc5\xafB\xd6\xfb\x18\xe3\x83)\x17\x06\x957\x87\xfc\xc5\x12\xeb\xcb\x8a\x0f\xa2\xfc\x99\x14\x1c\xcb\x8f\xc4\xd9\"^\xb0M\xa3\xe8\xdf%\x86HLdB\xcb\x82d\xbc\x02\xa8K\x0f\x89S\x00\xbe\xe8b\xd6\xda\x05\xf1^\x04\xf0\xd2\x0f\xe0Ee\xf1%\xbdu\\\x13=\xa6\xdf\xe0-\xdfp\xc7\xf4\x1b\x16L\xbfQ\x19`II\x1d\x9b\xd6\x0d\xf1\xc65#\xfc\x88!\xfc\xb8\x89\xf07\xae\x19S\xea\xb5\xdd\xf5=|\x13\xa64\xbb \xde\x8f|=\x7ft_\xcf\x1f-\xeb\xf9c\x8dr\xd1o[\xcb\x97\xfd(\xe3-D\x94\xfd\x92\xda[\x86\xdeB]\xcb\xc6\xaf(ro4\xb5\xb7?\x05\xf0\xcf\x00~\x0b\xe0\x1fM\xa5\xe9\xfb\xc3\x7f\xa0\xc2\xd4$9Rj\x11\x1d\x8fCQ+\x83\xd6\x88M\x17\xf6\x95\x18z\x90\xfc\xa50.}&\xebL\xcbC\xf2\x91$\xb26\x88\x1c\xca\xf1gQ\x0b\xab:4\xd2eh\xb1u\xf2Q\xa9\x9f7\xcc\x9f{\x16:+\xe8\xd2\xf6\xee\x84\xe1,\xa8\xdd{*\x0e\x83zm\x1fCG\x91\xa1#y\x16\x95\x06\x8c\x7f8\x1aX\x90\x1b36\xf8\x13k\xcd\xfbI\xe8Z)\xf5F\xe3Ff\x16}\xbby\x0brh\xd2\xe0\x88.\xa8\xdf\xe4\x9a\xbf\x94o\xa4\xfa7~(\xdf\x88\xf5oh\xa5\x9c\x83R\xc8)TOf\xcf\xbe\xabK:\xa3\xcf\x01\x9c\x8dAd\x8a\xed \xf1t\x92Y\xc3\x16\xa0gza\xee\xdb\xa7\xc7\x05\xb9k\x9aEfG\xf2_j\xd8\xa2A\x0f\x0d>\x14\xab\xeb4\x04v\xc29\xa9\xcb\xa8`\xcd\xf4@\x8dL\"xa\xe5H\xd8\x01QZ6\x06\x01\x864\xef>\x84\x1c\x1e\x0d!y\x08\xf9\xf6\xb6\xa9\x11\x10\xe3\x08\xd1S8f\xa2\x15\xec@\xced+\x83\x7f\x15\xc8\xc5\xe6z=\xe2\x85\xa3\xc18@\xc5]8\xda\x1d\xb3/\x03P\x02\xdas\xd8\x86\xa6\x12\x0e\x1a\xe2\x97\xbc\xe4g\x8d\x87\x96\x04s\x0dV\x99g\x83tZ\xa6\xd9\x9f\xbcL\xda\x152B\x96\xaf\x9c\x0d0\x0c\x1b\xbfzV\x96B^\xd2\xf9\xc3}a%\xf0\xb7\xb7\xe11:W\x9b\x1b\x077u\xa7\xbc\x8cjOy]\xc2><g\xeb\xc60\x89\nL\xe2\xe8LG\x03C\x11\x0fM\x18\x89\x03\x9a$\xe9\x15\xf0dA\xdb\xf8M\x02\x07\n\xeb\xe4 \x94\xc2\xc4Sz02\xbc\xa9\xa7M/5\x8c\\\xf7\x19a\x137\xbc\xb8\xe6\x98lk\x17\x94I#D\xb1\xda\x8c\xa1:\xd3\xa5)\xc36\xc6\xa3R\xe3\x90^\xfc\x07\x86$\xb7@s\xd1\xd1\xaa\xc3\x0b\xab\xe8\x07\xd0\xebi\x93\x052\x9a\xberVY\xad\xec\xa7\x8a\x86\x1f\xb9!=\xcaW\xd5\x02\x85s\xca\x9f\xbf\xa8>\xc7\xcc\xb9P\x1f\xa9i8s\xfbp\xa4E\xbe\xe2w5\x94<u]\xab\xa6\xbe\xe6\x06\x8d\xa9yGD<A\x8e4_\xd2\xa2:;\x11q\x0b\x92\xd941J\x9c\x05%\xd6\x8cqF5\xbdpBx;3\x1a1\x88|\xc3\xb65E\x8a\x1f\xf1\xa6\xe7\xfb<\xfc\x84\xc8\x0c0\xf2n\xd7 \x82y\x92\xee\xd4l\xcb\xd3\xd7\xc3\xef\x93/y\xb8\xc0\xb0&\xed\x0bDyaK\xbe\xed\x11G\x8e\xfc\xcci\xc9\xdb\x977\x17\xc9\x8a\x15\xbbv\xe9\xf0\xa0\xdc$\xc5M\xf1X\xb9Y\xff\xfc\xf8x\x1ef\xf3F\x03\xe5\xed\xe2\x95\xca\x83\xcd\x86\xeb\x8f1\xceM\x0c+\x9372qc&o\xcc\xd4\xba\xa7&\xa4\xac{p\x08Ct5\xb5\xb8\xa9\xf6D\x0cC\xee\xd9\xa7o{\x86\xc9\x82\xcc\xac\x06J\x88e5 \xbb\xf9\xa3O\xceH\xbav\xf3\xea\x05\x85\x15JEU\n\xbe\x0bZ\xd9 \xac\xd88\xa5^\x84\x9c\"w^\xf4\xb0\xf0\x17\xde\xdc\xc5\\\xd0\xa6\xa3\x000\x80U\xf4\xc7\xb8\x08\x87=\"\xc7iZ\xa0\x86\x9f\x8d\xbe\xf3\xda\xabr\x01\x0d4GU\xfb\"\xb6)7L\x0b\x81\xd1\xaefxG-)I$o\xa9IT$/\xca\xb5 \x8ch%z\x08k\xa1\xb7\xe0\xb5-\xb4_\xac\x80o\x1f\xe9\x8aT\xa0\x0f\xb1\x14\xf9\x04\x01O\xc6\x89n\xd1\xfe<\xc4\xad\xb5\x8f\xb9Y\xb6\xa6\xc8\x13\xf0\xc8\x9a4\x80%\xd6\x93dw\x95[\x88#\x12\xa3\x16\xc2cMC1\x01\xac\x19\xc2\x17\n1a\x8b\xbar\xa2{k;\xdd\xdbBE\xa3\x1a\xb0\xb0V\xcb\x0d\x90\xf3\xa2\x01=>r}\x8e\xf4z\xa8\xe9\x93j\xbe,\x03\xb8\x05\xbb\x85?\x8b\xf0{\xf1\x03\x89\xce\xf2C\xdb\xc1\xf6\xcfbh\xff\xd4#\xce?\x85\xcd\xa0e\xab\x99\xa0u\xda\x02-\xaa\xaa \xb8\x8a\xc0\xd1WhIm\xceB\xfa\xa5X\xd6\x96BiC\xbf\x1a\xa7\xd4\x13\xaeV\x01\xf4\x9e\xf2(\xde\x8c\x92\x15\x84\xf0.\x8cO \x9c\xaca\x17\x83\x1eAX'w\x83\xea*\xc9\xba#\xb8V~\xa0$\x01\xe0\x9eo\xa2\x1a#.ax\x92\xa1\xeb!\x81G\x82cco\xef\xc4\xd2\x84s\x8c\xc5\"T\xbd\x1f\x89\xa7\x8aj\xf3\x18\x87\x86\x83U\xb1FE\x0f\xfc{B\xa2\x85\xe7\x11\xd8a\x04\xf8\x16\xc4L\xb4\xf2\x99l\xde\x0dw~+`\xf9\x9b\x1ew~\xfb6\xdc9\xd6\xeb\x129\xbe(*\xa5'\xa2\xfaa\xdd2ah\xf6\x84\xda\xdcL\xcf\xadO/\xc4S\xf5\xa1b\xc6\x1a\xfdc,\n\x01\x11\x8f\xd2\x00n\xb0\x95S\xe3\x1eN\x89SIW\xc9\xb5\xb3U`\xe4\x91\xdb\xb4KM\xfb\xe8\xad4g\xf8c]\x05\xf3J\x9f\x9dL2\x15\x7fY\xa5G\xe1![Q-\x95\x1e\xb2CH\xb9\x8b\xac\x11W\x84\x8a\x88z\xf1\x88Q\xae\x14v\xd0\xa3+\x1a\xa3\xf0\xc7:*wf\xc4P\xd1H\xb5\x1bu\x1d\xb4\x93u\xb3\x0e\xe9&\xaa\x9dBc\xf2\xfa\x89\xea56\xdd\xb45\x05\x10\x1e\xa3\xfa\xc3\xc6\x819i\\\xac\xda\x16\xaei\xa1\\\x02/Wf{\x9b\xad\xcd\xf6\xb6C\x14 CuB\x03x\xc1\xe8\xd6\xd5Q\xbd\xee\xe5\xaaC}\xae\x1f\x1eQ-\xcaW\xfa\x9e\x87\xee\xf1lJ\xd3\xf5(wM}\xa2\xeb\xdcX\xbcS\xbe\xb3JSU \xd8ju\xa7%|\xa7%l\xa7E\x0f!1+q\xcfDY\xbc\x14\x173\x82\x1dH`\x1f\x12\x83\x9e\xaf\xb63\xf31V!\xae\xee\xc6D\xab\xb45\n\xa3\xcd\x14\n\xd7\xb5=\x05\xb8\x8c\xfbS\x01\xa1qw\xa6\xad{8\xb9\x8e=\xdcm\x15$\xe4P\xd3\x1a\xfdu{>g{>w\xdb\xe3\xca\"\x8e\xa6\xe5!\x17\x8bC.\xd6\xee\x8b\xc2[\xc5a\xad\x19*\x96\x121\xaeeEhR\x84\x0c\x03\xf7,\xb1\xe5w\xafj\x96\xb5\xd4\xb02\xe8$\xbex\xb1A\x06-vq\xf4\x10\xb6\xbc\x08O\x05\xb5*#(\xb9\xbc\xbdHT]\x84t{[\xec*]\xfdR1\xe5F\x8e -LK}\xf5\xb5\x025I;C\xd5\xa0\xce\xf9\xa2j\x89\xf9v\xf9hh\xd6\xb0\x02\xdd\xb7\x1aQ\xd6\xa1E\xcb\x81\x8b\xc4\x9d\xd1q\x0f\xe0\xd2\x08\x15\x9e\xd3F\xf0R\x81\xf2\xe9\x7f\x01\xcaW\xea\xc8\x17$\xb0\x08!\xe0\xb6\xaa\xa6\x83\x80z\xa0\x14\xc6\xa8\x87\x0e\xcc[4J\xc6\x01#T\x8dC\xc206\xb6KbEK\xc4w\x89\xb1\xf2\xbc\xa4\x9b\xb1M\x9b\x84&\xb6Q2\xe6\xe1\x90\xc5\xd8\xf2\xea\xc0NR\x12~n.\xa8 \xdb\x1a\xc7\x96vy\xffc\xbb\xaf\xb6\xb0F\x82\xa6[l=\x10\xafc\xef\xe1J\xc0\xe3\xf2XmS\x18\xb6oT\x90p\xe3En\x8b\x8dkQ,\xf2\xa0<\xb1\x87\xb5\xafY\xad\xcb\x92\xfdMG\xee\x0c\xefZ\xd0\x805\xbd\xba\x8b]M\xd0\x86\x03\xe8\xbd#+\x12R\x18\x8d{\xb0_\xfe\xe2^\x10\x8aZh\x1bz\xe5=\xfc\x96\xdd\xa1\xd1\x92d\xd0t:^_\x9d)\xd71\xe1|\x08\x1a\x06\xbc\xd2\x8f\xac\xf4\xe3\xca\x85O\xa9\xaa\xf8jFe\xd5\x9a\xc7\x94\x05.\x13\xa9\xec\x1f\x06*#\xca+1{|\xaa\"U\xd2\xba6\xb2\xd7\xa2\xba\xe4\x0e\x0f\xa6\xab3\n\xf5\x91\xa6\xe4\x8c\xa4Y\x177\xed\x16\xb8N\xc9\xc5\xdb\xd9\xd5\xc1\n\x07\xa81\xdc\x19X\xbbY\x84\x19=\xba\x86\xaeJ\x0cm\xed\xf2\xea\xc2\xd4\xeeC\x88\xe1\x91\xb2\xc4\x10;i\"*\xc3\x8d\xeb'ZlUB\xc4Ns\xe9.\xe5tbU\xbb\x11k\xc9f\xc2#\x88%\xc5)Y\xa0X@\xc27\xd6\xd9\x83\xeb\x12?\x1c(l\x05\x9a\xc2H\xe9\x88\x87\xb4\xaaz\x87\x83&f*S=k\xda\xfb\x19}_\n\xfa\xbe\xbcf\xfa\x8e*cI\xde\xf9\x0f\x85\xbas\xed\xee6\xf4\xfa\xfd~y\x97\xc4S\xd8\x06O\x08\x15\xf3B\xcd{\x00=8YW>'+\xcc{\x84I\xe74'\xc1\xf2zO\x029\xdcR\x17 \xdfU\x87\xd28#\x96W:#$\xe7\xe0Q\xd8Q\xfb\xf6\xe1\x96\xd2\x9fq\x7f`\x80\xf4.7\xc8+d\x82\xdf`k\x84:\xf1\xd9\"\xd1\xd8\x1ejCv>wj\x87J\xd1\xa9r\xb8\xa0K\x01\x9e!\xe5\xd3\x80\xdb\n\xf0\x8c)\xef\xfa\xf0hX\xf8\x96.\xa9\xb7\x1b\xc0\xae/\x8e\xa7\xa5@\xeeSB=\xd5* M\x06\xec>\xd1\xdcG\x905\xcf\xae\xe5U\x0e\x9b\xb3\"\xaa\xb2\xb2<z\x01\x91\xc0\xff\xa8H2\x1c\xb2\xb9\x98\xa5\x01\x9e]\xc0\xbe\xceP\xd8\x13\xe5BW\xce\x03_O\xb4\xc1&\x0e4\x0f\xab\xe57\x9e\x8f8\x1c\x01Q\x0d\xcdY^\xcfYXb7\xea\x0dK\x91\x80A.\x10Uv\xea\x1b8\x86\xef \x85}\xf5nU\xe5\x18[U\x8eU 1\x80D\xabA4,\x1bl\xf3\x11\xed\xb0\x014+P\xb8\xcbkZ\x00v?\x80K\xe0i\xc7[\x03\xa8aN\xae@\xd6~~\xad\n\xc8\xc8\xaa\x0e\xa9A\x9f-\xfac\xb4H\xfe\xc9\x1c\x80T\xbe\xa0\xbc\x9e\xbb\x88\\\xcbkb\x08\x96\xb4\xb60\xdc\xefC\xfc(\xc2\xed\xd0\xac\xca\x9f\xb0?\x8b\xfb\x82d\x89O\xf0\x8c;+\"\x8b4|\xc41\x95\xe9\x9cNh\x00\xc7\x14\xff</\xff\xbc\x90\x7f\x1e\xd3\"\xa2\x87\xbf\xa9\x04\xf2\xf0\xf7E\x90\xcfE\x8d\xac\xb2\x85~OM\xd9%\xf0d\x8b\x969z:\xec\xec\x95\xa7\x1d\xbb\xe7\x95IX0\xfd\xf1\x81\xf2\xbaC*Q\xb9k\xee\xdd\xbd{\xfb.`\xd1\xf3\x0d#\xe6\xe6\x8dS\xbcI\xf8\x9bf$\xc7\xbd\xb2\x8dnw\x8f\x1f?\x86\xc1=_\xdcaO<R\xdc|\xf4\x08\x06\xf7x\xee\x19\x1f6ug|S(\xd3a\x9b\xaf$6\x0f7a\xb0\xfb\xfd\xed\xef\xef\x0c\xee\xef\xdd\x81\x0d\xdc\xde\xdb\x1b\xec\xed\xdd\xbd\xf3={\xe2\xe6\x94\xf9\xc4\xd0\x91J1A\xad\xd3\xdf\xf0\xc4,h\xa8AS\xdd\xee\xf3(;jz0\xda;n\xeby\xab>B\x0d\x85/\x18\x031.\xc3\x1c\xd4r\x07V\x87\x03\xe1Z\x89N\x96\xece\xeeSa\x19((x\xba\x0b\x1b\x93s\x14\x1e\xa1qY\x8d\xd3\x8b\xe1_C5G\xd1w@\xfd\x87\x0c1\x94\x9b\x0f}\xc0\xd7(\xdcR\xdf\xb5\x12\xdcC\xea9\xa5J\x8f\xea%]\x145b\x99\x9a\xffg\xaax\x99\xeb1\x0d\x94UxEG\xd4\x9e(\xb7\xea\xb1\xf2\x96ao\x00o8\xac\xdf\x89\x9c\x19\x14\xd3\xe1\xc0+\x9e\xe8\x1c\x9f3*\x8e\x8d\xb3\x83\xef*Y\x16`\x9fw\xd6 \xc7\xe7a6\x7f\x9aLU\xc8\xc8[:\xe5bT\xaf\nV~\xe8\x08B3\xe3\xf9\x9a\xd6\\M\x11~G\xdccM\xadPji\xa3\xfe5\x1d=\xa5c\xa7/\xb7>\x1b\xc7\x0d\xa6\xc6\xfb\xa2\xea\xc1\xfa(;\x8c\xf3\xa5\x08\xc0Bw8\xdd\x13\xa7\xb1\x98:k\x07\xaf\xfa\xb5p\x98\x8c\x93)\xf9\xb0^\x11@\xd2\x9e\x9dG\xbc\xfeYq\xbf\xad)vM\xc2\x8c\xc0`\xbf\xf5=Ph\x7f?\x8f\xa3/99zf\x9e\xa3\xbc\xb0\xf9\x07\x1d\x9b\x9f&\x13\x0c\x18>\\\x10\xf6\x0f\x9fl\xedf1\x06k\xd3z\xa56\x88-\xa5\xac\x96\xf6=\xfd\xd7l\xb9\xb6\xb7?\xd0@=\xfan\xc2\x07\xbe\xf7?\xe0\xde\xb7\x84\x88\xbc\xa6>\xc3\xfa\x8c\x18=\x1c\xc1\xc1\xd1\xb5\x8aB\x7f\xc8\xfa\xc8C\xfc\x81.\xcfu\x8f\xc1\xde\x9b$\xde!<\x95q\x19H\x98A\x98\x12,\xfa\x86\xd9\xb5\xc9\x14\xc2\x0c>\x93u\xd67\xd5=\x90\xdd\xb3\x0d%\xa2\x8dy9\x89\xd2#$\x80\xa7\xd4\x14W\"/R\xec\x9b}\xd8\xb2\x04x\xb1k\x92\xc4\xb3\xe84w|\xfb<\x8d\xa8\xdb\x9b\x82O\xd7/>\x80\xb9\xa4\x1e\xa8\xe5\x0d+N\xf5\xddH\x86`\x93\x95H\x12\x85\x83\xd7}\xe0\x1b\x1b\xb2\xab\xdb\xd4K\x95\xb5\xdd{\xee\x87\xab\xd5b-\xd8xCD\xbfz]\x06\x162\xc9\xce\xc0\x16\xc8\xb6\x13\xc1\x8aSzI\xf2\x1ax\xff1F\x08\xd1\x042B!\x84\x98\xed\x83\x12rr\x8c\x90\xc4bOXQ\x9f]T\xce\xc1<\xfb\x0e\xf4\xc4z\xeaw:\xed\xa5\xf2\xb5 k\x8caP2\xdah\xf3\x01\xd4\xa0\xc5\xcb)\xb3&y\xfddT\x93\x96\xa5y\x18\xf7@\xa6}G/\xd2\xb7\x06\xde\xbeP\xc7\x10\xce(\xa9\x16\niiG\x03\x05\xbep{\x00\xdf\xf1T\x85\xfd\xc9<L\x19\xf3\xf2\x84\xf1\x88\xa0MfZr\x91\x0d\x1fi\xf5\x17\xeb\xfd\x0fZfL\x88\xb2\xc3\x8266\xa9\xc6\xe7\xd6\xcc4\xec\xb2\x974\x95k\xa2\xa5\x99\xff\xbe\x0c\xa0\xf7\xf7^\xc0\xd9E\xa3N\xc0\xa5\xc4\xa9\xe8\xc7\xe4\xea\xafA3\xbf).\x1f\xd1\x00^\x1bE\xe6_I\xf8\xf9uX\xd32r\x06\xcf;\xa2\"s\x81xI\xd38?#\x9bP~\x8a\x1d\x1e\x1fG\xcbe\x8e$\x9ca\xdb\xf1q-E{K\x8aH\x0f[\xe1\xbf\xbd\xa7\xb4\x8e\xf4\xac\xff\x9f\xd9\x1b\x83{\x9a\xc4\x94\xec\xc1\xde]M\xe6\xe37\x86!\x0b\x16\xdf$E?3l\x80S\x8ar\x9a\x90\xceJ\xb7\xf9\x15IgI\xba\xe4\xea\xef\x90\xb7q\x1e\xd19\x841D\xf1,\x8a#J \x8b\xbe\x12\xd7\x1d\xf8\xd5.\xc6[\x93\x86\xfd\xc6C/\x9fc\x13\x8c\xbf\x98yE\xfet\xf6\xac\xcfF\xf6:\xa7\xbc\x94\x8dC\x0d )e\xa6\xc6\xf4v\xcf\xa8\x17K-\x7f\xac-\"h\xac\xd5\x01\n)E\xee*n\xa8\x9b\xe4\xa5\x8b\x82v\x03\xe7s\xe7\\ ?\xd0\x96l\xe6_i\x00'Lv\xfcJ\x1d\x92\xe9\x14Z\x02\x1eR\\\x1c\xc0\x81MEd[$# \xd1\x99\x8dII\x94a{\x08{m\xa2\x14\xda\x85\xe1q\x99@Fs,\xbf\x8e\xb2\xac\xac\xb6<\xe3\xc99x6\x0b,\xadb>\x829\xf3Ld\x15\x16\xd6\x97)\xdc\xbdu\x9d\x11\xfcW6_r\x85\xa7\x92\x01\xeau\xb82\xa6<\xfb\xfa\x8d\x96\xc5\xe34IJ\xcd,\xfb\x81\xa2s\x11K\xc3\xf36\xf9:\x93b\xa5\xeb\xacS\xd7\xffP\x93B\xd9\xe7\x94\x11z\x14wh\x1a'\x92\xaf\xa6!%G\xf8\xf22h?c\xcd\xdc\x92}p)Y&g\xed\x92\xb6f\xd6K{\xc3S\xb2 l\x02\xaeM7f\xed:\xe5e\xd7)\xf3N\xea\x0bbO\x1c\xcdE\xc8F\x89\xcb\x03\xe1\n\xe2K\xe3L1\x81\x11\x1d\x8bF\x1d\xc6\xd2D\x0f\xc3h0\xd8\x15\x9d\"E,&Gq\x8b\x8flA\xa2]\x12I\x9c\x898P.\x80-\xcd:\xd1\xbc\xd5\x17\x8f\x91\xbb\\\xf8\xe1\x99\x89\xe2\x99H\x19\x93`\xf0Hk\xc5\xd8\x0c\x86\x10y\xb6\xb2\xdcb\xb92\xbe\\\xc2Y\xb7\x19C\x06F\xa9\xe3\x94z \x03\xb2\xc8\x1b\x9c\x11\x1a@/\x8ay\xb5\xfb\xcfd\xfd3V\x883Cf\x82%\x80-\x1e\xa8\xec\xa5\x99\x98\xf2\x92M\x19\xa9\xd5\x84\xed'\xf3\x07X\xa0\xd4\x9b\x95\x0bhU\x94r\xd6e&f\xcf\x7f-\xd9/\xb1\xdb\xbd \xc3W/)y\x19\xe2\xe3\xd91 `\xa1\xe1\x01\xc4\x9e\x8fc\xd4\xe9\x1a\"\x1eE\xdfi\xd1\x9b\xe0\x9a\xea\x96\xd9\xfa\x0e\x98,Hh-J\xa44\xdet\x8b\xa1\xdc\x1fB\x1c8\xc9yL\xd2\xa3gp BaE\x0c\xe3n\xa0\x9e\x14CQ\xb4S|\x83\xc1\xfb\xc3\xf2\xac\xe0w\xc3\x05\x15\xf5N\xb6\xc4M_pw\xd6\xc9,Iz\xda\xaat\x90\x90\"\x02\xae\xb2ks>\xc0f\x1f\xbfF\xd5\x92c\xb6\xf3\xa4\xe8\x08\xfd\x97\xea|\xd2\xa0\xe9\xc8\xd1\xec\xaeJ\xa0\xec\x86pM\x0fFl\xa9\xd2L\x12 \x84\x03\x07\xad\xaf\xf8\xde \xf0\xf3e8\x90\x7fI\x1d\x0d\x12\xd5}\x88Gj4^\xb3\xa8m\xcb\xf1\x81M>#\x18,\xdbi\x9d#\xd2m\x8dY\x1fN\xeb|%\xd0\x17\xc3J\x88\x87b\x85\xe3\x88\xfe7\xa2\x02\xae\xd6\x81\xfa\xebzQ\"KR\xea\xca\xe7\x1c\x11\xef\x17R\x98\xfd\xdb\xdb\xfda\xdd\x81uT\x1b'\xed\xedWd\xa0\xd6 \x14\xb2\x16[\xa90{\xcdu\x11:\x06@.)\"\x16\xe9\x9f\x87\xd9\x13NO=\x1f\x8f\xa1\xe3c\x12gyJ\xde2z\xedU\x89\xb7d\xa5\xac\x03/zw\xdc\x83\x8d\xf3\xa1zn\xa8\xa3a\xa2\xd8{;\xd8\xc2\xecHjb\xba\xf5\xaf\xf6\xd3\xb22\x05\xc8\xba\xf5 \xce-k\xdb\xdd\x1c\x9c\xa4F\x84\x9c\xc3\x0dw\x99\xa7\x93\x17\xda\xb7:1+\x87{\xe1m\x83r`3\xb3H\x0b\x11\xe1\xc1v\x1e\xc1\x043\x043\xca\xe8l\xee\x01/\xfb\xd4\x02\x01e\xb5[\xf7\x96\x9cI\xc9\xe0\xe8\xb0\x15\x0e\xe0\x9f\xb4dmT\xb6&(\xf3: K\x83\x1c^\xad!%\xf7\x83\xca\xe0\x0c\x04\x83\xa3\x99N\x941\xc9}\x08\xcf5\x9eC\x1fi\x00?\xd0f2\xe0\xd7O~6TO\xfb\xc2\xdeV\x81dR\x0f\xfenN\xfc\x81\xc3oNH$*j\x18\x1f\x8c5>\xac @\x0c\x9d\x9cDt\x89\xe0\x90\x90\x8f\x13\xee\x82\x1c;\xf5\xf9\xcbU\xfa\x9c$yL\xaf\xdc\xe5\xcb\xabt\xf9\x99\xac\x7f\xe4L1i@\xd7\xad\xdb\x17\xd7\xd7\xed\xda\xb9\xd3\x1b\xed\x9d\x1eS^j\xb4\xdc9E\x84M\\\xfa6\x87\x93\xcf\xc8\xbc\x14\x14\xe5'\xea\x89_n\xda\xd0\x1f[S<\xf2\nH<cU#)\xa5\xa9\xd9\x9fZ\x9b\xd5\xd36\x862\xfb`\xf0\x18E\xaf\xe2}\x93;\xe6\xf1\xf1*%g:S\xb0[\x16\x96\x7f\xba&E\xad\x16\x7f\xfdb\xc9\xdb\x1bI\xa9\x8e\x06\x10\x15\"\x1d\xc1\x1f\n\xa5\x8b\xf9\x0d!\xdd\xa5\xfcW\x95\xe8ENS\xf8\xcd\x9a\x94\xfa#\xea\xb5\xbd\x8fl\x0c\xff\xa4\xde\xaec\xfe\xbb\x7fXq\x15u7\x81\xce\xff\x16\x9d\\\x04*\x1aV[\xeap\xce\xbdc\x83;%\x88\xfc\xb0\xe7\xde\x89Ey\x83\xde\xcaD\xf6\x86\x91/\x12\xbc\x01(\xcaU\xbe\xb8I\x00\xb9\x1f\xc0\x96P}\x94~U\x86\x0e\xa0\xc8k\xb7\x0d^\"\nu\x1d0.@h\x0fv\x06X\xf2k\xbf^M\x8e]\x976S8\xd7\xb3c3.\xa3\x18\x94\xe5\x1b\x7f\xc7m^Nrd\x84\x1e/>\xa6}\xac\x0b\x025!\x0f\xad\xa9,$fGAA}\x10u\xa9FM\xd1\xd4Q\xf8X\xe4\x0c9\x84\x08w\x9bN_a\xc0G\x11%^\xe8\x97\xf8\x82\x06\x10Zy\x15&Qq\x89\xcd\xd3~\xba\xcf\x10Q\xac'e\xfc\xc8\x85\x17\xfa\x01\\x\x0cU\x18\xc4_\xc8\x1c\xae#\xf6\x99k:wB\xec<T#Q\xe9\x0b\xee\xf6\xd9\xb8\xff\xd2\xcd\x137\xae\x01G\xd77\xdf\x98\xc5\x116\x1c\xb2\x05PX\xe7\x97\xc5LEu\xa1\x00\"\x9d-\x07w/O\xbc\xed\x95I\xbe\xca\x96\xf7\x95\xbf\x1f?~\xcc\xe8\xc7M8\xd5\xef\xf3\xb0\xda\x08\xba\xe9+\x1f\x19),\x1a\xa9q\xbcX\xd36\x87\x0d\xff#\xc4q \xbd\xea\xa8\x84\nl\xc3\x99\x80\xcc\x98\xeb\x15\x87\xd5\xd5\x8d|\xf6\xe5#\xfe\x1de+\x0d\xfb0J\x02\xa0\xaeK\x9e\x12\x1b\xbd,\x13k`\xf5\x82J\x86\x82\xb80\xd1\xb5$\xbea\xd0\x8aG\xc9\xd8L334\xd1\x9a\xb4\xcf\xb9\x17\xa2[\xb4\xc7^\xcb\xaa\x19\x8d]\xfc\x12\x16\x8dhBy]\xfa>;\xbeVy6\xf74\x9eEF\xf2\x92K\xa0En@\x8e\xac@.v=zm\x95j\x95\x9b7\x01\xb3\xb0V\xd4+<'c\x91\xd8\x97o\x7f7\xce<\xb1\xef\xeeR\x9433\x15\x002\\\x0cu\xf8Ue\x1a\x8e\xb7\x92\x8c\xba\xf2\x9c\xab\x84\xcc\x9ax<\xb9\x8a\xce\xadjx\x9e\x8d2\xf2\x85\x1e>jY9\x13@r\x97e\xe1\xdb\x1c-Cq\x7f\x16\xb1\x93\xc1\x01\xfd\x8a\x8f\xcb\xc4\xb9\xcdA\xfa\xbeb\xedb\x07\xb2\x9af\x17\xe9jy\x8am\x18\xa9\xc0\x94\x87\xca7W7\xb5\xa7\"\x1a\xaa\xf8\xc4\xb6\xe2\x80&pq\x1e\xa5U\xabi\xab\xf7pE\xfe^\x8a\x1a\xa3\x08x\xec\xd2\xf8\xad\xc6e\x02o\xabA0\xa6\xa5\x93\x17\x95n\x19\x86\xf4\xb1\x97\xd5z\xd2\x05A\xc3\xb2\xd2\xf1(\x1a\x17\x0e!\x9a\x81bf\xf2\xca\xd1\xe7\xc5\xa3]G\x89#l9iA\x84\x86x\xf7\xef\xde\x7f\xf0\xe0\xf6\x9d\xbb\x0fx,\xcf\xce\x10\x03ax\x1c\xcc\x9d\xdb\x83{w\xef~\x7f\xef\xae\xef3f\x0f\x1f\xec\xc1M(\xbeQ\xee\xdfa'\xd3\xde\xdd\xbd{w\xee\x0en\xdf\x0d\x80\xc2\xb6h\xea~\x00\x83\xbd\xefy\xf3\xf2\xde\xe0\x9e\xdb42\xe2(\x85\xa4\x02\xc5\x0fm\x15E\xa3\x11\x19\x0b\x01\xa3\xd6\xbb\xfa\xeb\x0b\xba\xba\x08\xde\xec\x0b\x15\xe6p\x18\xb2\xbf\xb9\x15.(\xffD\x9dz\xf1\xd2Q\x1c\xc0\xef-N\x11\xe6\xb9T\x0eCUz\x17\xc7\"g.\xa2\xf2X\x84G\x90\xf3\xd3\xd1HH\xa7\x88\x9e\xd1(\x193\xd4)s-\xb2\x1b\x03\xe7R\xe6\xb5Y\x19\xcd\xf0*\x1fi\x9d!\x16\x1b\xe1;6\xc0\xd3\xb9:\xdd \x9f\xee\x0c\xcfc9\xdd <\x02\x8cm\xda\x9abB\xe0l4\xc1I=\x84\xc9\xf6\xb6\x81![\xc0\x90\x7f\xa7\x17\xc8\x16p\xc0\x9b\x19\x8cq0\x11\xec3\xeeWQN\xea\xbf\xe3|\xb0\x17\xa2g\xd4\x02]\xc9.\xbc\x84IQaIH\xb3\x96\xec8\x18\xc4\x81\x0e~[!\xfb\x7f\xe1\x9a\xf0x\x08\x13]\x98\x8a\x15y\xe4\xc5\xa5Z\xe9\xb1\xf8\xdebp\xaf\xa0\x9b\xe0\xfah\x00\xe8\x88\x1a\xc0\x88u4\xf6+\x1c\x19q\xe1\xc8\xe4%\x9d\x0d\xc8\xc8\x94\x00O^\x11b\xb5 \xff\xb4\"\xa2\xe6\xa8h\xc9\x8d\xd5?@\xcbE\xc9K\"\xbb\x9e6\xb3\xae2\xabQ\x9eMa\x05\":LQ\xf0J9\xd3\xd81\x93\xf7V\x0c\xb7\x90\"em6\xff\x03\xe4\xaf'\xc2\xf6\xbf\x03\x038\x80y\x7f\x95\xf0J\x10\xf3\xd1\x84Q\xa3\xc6\x8d\x11\x1b9\xe3\xc7\xe7\x9c\xc1\xe4\xbf\xfd\x00{\xf6j\xda\xbfyi\n\x97\x02s\x00\xf36\x96\xf42\x80_\xafL\xce\xb4\xd1e\x88]\x86\xcd\x8aB=\x13W<\xafZ?\x9cG~R\x94}\x0c\x9a\x91D\xd2\x10\xae\xe95\x126\xd60\x93snr\xee\xae\x08\xcdF\xe5\xec($\xfc\x11fF\x1e\xf38..#\x11\x1d;Q\x07\xcf\x95\xe9b%3\xb4L\x00\xfd\x84z\xa9 T\x8a\x80H\x04\xcb\x13#\x90\x88E\xaa\xcc$|C\xfd\xf3I\x15\x86\xfa\x97f\x18S\xb95\x04o\x027A\x87\xdaH\xd7\x90PGue\x8e\x96\xa0J:\x1d\x12\xde$\x02_\xdf\xf9J\x8e\x10\x97K\xff\x0e\x1a\xdd\xe1\x00V\xa3\xc5\x18Z\n\xb1sE\xd9\x9c\x9b\xc5\xf8BW\xd7J?;\x1e%>w8(8\x1c0\x94|\xa5\x90\xf7\x99\x95\xbc[\xdc\xbc*\x15\xbf\x04C\xc0\xf63\xaf7\xb3\xf6\x03\xc4\x8c\xdd\x87\x82\xd5\x8f\x1fB\x88i~\x18n\x0ca\xe0C>\n\xc7\x88\x067Q\xb3@F\xc9\xf6\xf6\xd8R\xb3\x0e\x14\xa1t\x94\x8e\xb9\x8a\x8b\xf5\xc8M\"\x98\xe3A\x1f\xcc\xcf\x1e\xaf\x02\x98\x04\x10\x0605@R\x9c\xe7\xec\xff<L\xbd\x80\x12\x93\xff\x88\xb7\x1a\x0d\xe0_\xb0P8\x17y\xc7\xd2\x1e67\xd057-\xdb\x99\xea\x11\xf1\xb8+\xb9?\x11\xe86E\n\xbe\x0f\x13\xf8\x17\x92\xfd l\xc0\x80\xa1\xe7\xca'\x19\xf1V\x01,\x02\x98\x06p\xec\xd7\x03\xf0[\xc4\x8f\xb3\xa2\xdaG\xe9\x01a>j\xb9z\xb5H\x7f\x93*\x11\xb4x\xb2\x04\xb6\"\x12\x0df\x81c\\\xeaWxS^q\x0eRQp.W\x88?{k\xe03V4\x1fc\x9ck\x0e\xdb\xc6\xd4\xb8\xd0~xs\xa8iA\xd6\xc2!\x15\x1c\xb6\x84\x9a1M \x14\nu\x84\xda\xb6@\xaa\xa8\x84\\!P\xb8\x80.\xa9\x80\x8e\xab\xd6\x10tb\xcf\x86\xf0\x08\"\xdc\xb1>\xbb%h\xbb\x97\xf0-\x1b\xf3\xd7w\x06\xa8\x9d\xe5\xf7\xe8(\x84m\x97rn\x86\xc2\x1f*\xee\x19\x8f\xcc\xe3\x82\x9d(\xac\xa8'5\x93\xe6y\x95\xbb\xe0&\xda\x93\x00\xce\x1b\xe7\xe5/\x7f-;aa$Z\xf8\x08\xce\x10Df\x11)\x81\x03Ht,\x82\xceo\xf2\x97\xffel\x82\x94\xcd\xb4/L\x1cNa\xc6&LF\xa1\x81Lg<\xf8\xc6\x911\xa0\xc4\x9bu=\xa2\x85#\xadC\x0f\x05O\x81\xf6z\xc3\xb1\xd2.\xc3\xed\xec\xac\xe0\x11,\xae,\xb7U\x08\xecn\xa0?\xe0cy\xc0s\xa1y\xc0%\xe5R,c\x14d\"\xce\xfc\x0c\x1e=\xc2#\xbf]L\x9b\xa1\x98\xa6[\xac\xca\x9beT0\x1e\xb3!\xfe\x89\xb4\xd1\x8b`3d\xc2T\xce\xf9 \x06yc[\xad\xf2ZIB\"-k\x01\x92\xbd\x98 \x87\x11\x1a\xcd\x8c\xab\xedm\xfd\x9a\xcf\xbb\x9e\xf2\x8cS\xcc\x88\xc7\x99\x99\x05\x93\x9c\x8cta^\x90K\xe9\x00\xb2\xaaQ\xcbi\x95ZrNj\xc5\x98\xa4:\xd9xyej\xf9\xdf\xacKz\xf9\x9f#\x86\x82\xae\xe9wy\\\xe6Z\x14\x86\xbab\x8e\xa1\x92\xc0\x8f+\x7f\xb8\xbe'&\x8a_\x1d\x0eZH\xe1\x9a1\x14K\xf2\xff }WXr\xee\xb3\x8a\xd5\xf4E\x99\x97P\xc0\x92M\x80\xb1\xee\x13\x93\xf1\xb4\xb3\xa6\xa5]\xcb\xf2\x1f\xd4\xb0\xbc\xd4\x00`\xde\xd8\xe0/\xae\xbc\xc1\xa5\x18\xc3\xa3B\x0b\x9f+\x86 2\xa2\x8e\xdf\x18\x8cu\x0c\xc9\x8b\xeb\xd9\x835U\xaev\x99\x90\xe4!\x06W\x87i\\./\xc3\xea\x19\x05\x12(\xf3\x08\xfd\xc6F\x0ce\xc0\n\xc3H\xd8\x87\x0c-\x01Z4\xaa\xac\x1a\xb68,\xca\x10\x89e\xd3\xe1\xadXv\xde\xa5f\xd7#\xd1)w~c\x91+\xba\xf3\xd2\xb9\xf6\xa5\xfeve\x0d\xac\xa4=n\xd0\x91\x94\xd3\x91\xa8V\xb6\xe8!\xa4\xa2\x84L\xea\x94\"9.\xea\x97\xa0\xe7\xc1X\xadwY\x9f\xdc\xaf\xfaY\xfcrm\x93\xe3L\xa6\xdb\xd4\x0c\xbcN!|\xd5\xe6\xa5\xe7w\x18(\x12(\xb3\xcf$\xfdJ9\x06\x13,@\xa7=}qE0H\x8a\xac\xa0k\x03\xad\x88w\x83\x06\xf0\xd5\x0f\xe0\x86\xdaKL.ZS;\x14P\xa6\x12\xca\xe8_\x19\x94A\x02\xdc\x99\xf2!\xd8\x8b6\x88\xfa\x13\x04\x17\xc9\xac\x0e\xc7\xd4\x98<\x0b\xaa\x8e#\x03)f\x8b\x89Z8\xd6\xa8\xa8\xadZ\n\xe1\xdcg3\xd5AI^\x97en\x9bT\xee\x96\xb6n\xb0\xbe\x99\xa8b!>Q\xf0\xce\xd7v\x1f\x91l\xc4\xc1'\xddS\x0f\xb0\xcc\x1e\xafy\xd6:6\xb5KD\xfbj\x87v\x95FR~f\x19\x83]\xd1\x91\xb4I\x0b\xf8\x92\\\xa6\n\x00\xe4]\xbb\x0cQ\xc3/\x18\xc2O\xd4K\x8c\xf6s\xb0\x8a\x0b\x93$\xa6Q\xdc\xa9\xf8C\xb3\x7f\xe5W\x9f\xfb\xcc\xb6\xecj(\xb7\xa7ic\xb4\xe6J5\xe6I\xad\x11\x90*0\xd9*c\x1e\xea5\xdc\x82;\xcd\x96g\xf2\xd9^\xf3\xd9\xa2\xf8\xce\xe4\xb9\xbf2x\x0c\x9c\x89\xd8\xa1\x0bc~=\x87<\x96\x9a\x88Z\xf6\xe5\x9cxJ\xcaI\x8d\xf0-O\x82\xc8\xa3\x96\x0c\xa3\xb1\xbd\xc6\x03\x1fL*t@\xde3~\\\xa7\xf0\x98g\x8dN\xe1\x11\xac\xe1\x00\xce\x89\xb7\x8b\x0c\xcfY \xe2L\xb1\x10\x04\xf1\xe2>M\xb8\xfc\xedcYZ\xd2\xd9-\x06\xfdD\xdeG_ \xf6\xacI\x03\xd2\xa6\xe9-4\xb5-\xfe&:/\x127O\x8b\xb9\xddaD\xc9\x032%-y@\xd8ArN\x19\x9bL\x1c\xf2\x80(\xc2\x87g\x8e\xb1\xe49\xbc\xc4\x11\xf7\xad9-^E\x19\x85Q/\x80\xde\xb8\x99\xd4\xa2\xd2\x93cR\x8bH\xd6\x8a/\x93\xe2\xfbEVrZ\xcdJn9M\x99\x00[\xb0\x96\xe8+\x83#O\xd2\xe842y\xb6I\x99\x8b\xf5\x14\xf7y\x99P\n7\xe1T\x13\ni\x02P#\xbbF\x05\x06\xdd\xb2k\xb8\xda/\x10d\x84\x83\x8c\xb3U\x95\xaa\xf9&\xbfo\xf4\x0d|\xac:\xb1\x11x\xa4d\x83\xed\xee\xb2\x06x,<\x82]8\x80\xb7\x82\xc7\xc3m\xb6+\"L\xdfJ\xa7\x04\xb4\x00\xf0gD\x1b]\x06`N\xb0Gp=\xe5b\xea\xdf)\xed9\xc74\x8c\x16v\x86J\xba\xf7\x1b_J\xac\x81\x02\x08\xc5\xcf\x18%0 W\xe1$\xa2kn\x10\x1f\xc2{t\xc2\xabG\x0dpy\x10E\xac\x88\xbf\x14\xd5^\xa2\xfd\xe3\x059#\x8b\xf2]\xf3\"n%\x8e\xe1\x06<l\xa2\x0c1-\xd6Yz\xd9\xf3Q0xuq\xb9\xb7n\xa6s\x04\x0b_)\xfcZBH\x9dc\xa4\xf5.\xbc\xb4\xc5YV\xb6U\xb7\xf4-H \x8aJ\x1c\xa5U\x83\x13\x96y4\xe3\xd9 \x14\x99Wf\xb4\x97/I\xdd\x06\x7f\xb8ZD\x13\xc4\xeb\x81)j\xb72\xd8(\xceH\xda\x85\x0c\xd4z\xd9m\x05\xc7_\x90LB\xa5\xa6\xc5O\xb9\xb4j\xb2 \\a\x86?\xb5\xec\x13BR\xe2\xa8v\xe5T\x14\x8c\x91\xb2\x82b\x95g\xf36HH\xe1\xad\x8c\xd07\xecr\x05NF\x06 \xdf0\xd0M#\x01\x7fK\x18#\"\xc8\xa2\xb4\xa5\x1av|\xc5-x\x17ev%-\"J\xee1\xa7\xab\xb0\x8d{x\x94:\x95d\xab\x82-q\xcd\xeb\xf0V\x1e\xb2\xbb\x01\xec\x0c\xec\xad\xe61\xee\xae\xb6\x96\x1b\xebq%`\x1b\xd9\x83\xb7\x18\xa7\xb3\xe3\nfK\xf6\xc9\"\x91\xdc(\xee\x0eb'P\xd4\x81\xdc\x02\xe0.\x89W\xfepO\xbc\xd2\xec\xc3)!G\xbd#\xd7\xc4+\xcd\xee:\xe4\x19\xf9\xc3-\xcf\x88\xbe\x0f\xa7i\x9d]%\xaf\xc7\x1f\xadyF\xea|\xe2{Nh\x9dN4u\x136\x8bhT[v\xad\xbft\xf6Mu\xff\x8a\x11\x89\x12\x7fE\xd5?\xfb\xe8\xba%e(\xb6\xa7Y\x9c=)\x90\xcf\xbc6\x1d\n\xc2\x10\x0c~\xb2\x8b\x0f\xdc%\xe8\x98\xfcuE`b\xac\xc0\xdb\x99\x02u\xcaNQ\xaf\x93+\xf4\xc7V\xf8\xe2\xe5q\x9d\x03\n%\x08\x16\xb5\xbes|\xd5\xca\xce\xb5\x89\xfc)I&\xce\x89\xa7\xb29A\x8d\xcb\xa9p8*w\x13(\xccM\xa7\x84\x14\xba\xe5\x8a2\x94\xb0\x870'M\x0d\xd6\x944\x13O\xbc:z\xff\xc1\x90y\x02Yd\x15r&\xfd\xd5\x9a\x18\xf1\x00\xc7\x8e\xa2q9n%\x8dA=\xbaM\xfduFFS\"\x83A\xceH\x19\x0crF\x8a`\x90\xb32Q\xe4\x17\xca\xffT\xde\xc5\xfb\xc5\xdb\xf2-\xf9\x0b_,\xeco_d\x14\x94r[~!\x7f\xe1\xa32\xb5\xd7\x17*\x7f\x94\x0f\x8adO_\xa8z\x03_\xa8'\x0e\xfaR\x93\x98\xf1%5I\xcf\x17Z\xfe\x14\x0f\xd5\x1c:\xf8\xb8\xb8\xc1\xbbP3\xe0\xb0\xf6\x8b\xdf\x01\xac\x9b\"\xd0\x0fd\x96\xa4:\xeb\xa3I\xd3\x12\x17\x0eM\xe8\xcdL0\xb2\xad\xd8\x18\xb8\xceE\xe8\x85\xc2t\xe9\xb5\x8b\xa8?\xe4>Q\xfa\xd0Z\xee\x00\xf8\xd8\xd6\xba\xd0\x13\x8e\xc6\xec$\xd3w\x13 \xbf\x0b\xae\x8a\xd4\xf7\"\xaa^\x98)y\x0e\xea(F6\x03\x16\x16\xa9\xcf\x19\xdd\xca+`F\xd8\xc2\x0e\xea8}\x1fG\x83o%\x15P5\xa9\xb2v\xc0\xdcJ\x169@9\x84!\x1c\x96\xb9\xb3\xf4\xf3\xdfJ\xf4*\x95\x8a\xe3\xc4\xeeC\xc8\xb8\x8bi\x86~\x92\x02\x16\xd9\xb8\x10\xbf\x8c\x049B7\x91\xb0\x80\x1e\xa3\xf1~\x00a\x9d\x82ip\xf4\xc9\x8c\x92\xc6\xf1\xde\x8a\xa2^\x15G1\xc8\xf8\x1b0UX?Q\xa8oA\xd8\xc8\x8e\xb0\xfaN\x9cp0\xa9\xe2\xa0\xc9\xa2\x848\x98b\xb2L\x86]*\x185(\x88/Ez\xc8\xa0\xf1\xab#r\xca\xcdbE9\xd1d.z\x13\xca\x8a\x08\x95|\x81\xf0k\xcb\x8bi2&\xca\x0f \xaf\"K\xf3x;%\x01,I\xc0\x98\x06[\x1a\xf5\x13\xf3iU\xf2\xea\xf2\x10\xd7BX(\n\x8b\x93]\xbf\x0c\x80J\xbe\xd4\x165\xc3\x0f}3|*\x89D\x04\xe3\xb0\xeb\xd7&\x06\x95\xb8g6\xb70\x00\xa3\x8d\xb5\xa2\xc7 +\xe5\xac\x0c\x9e&\xf2\x92\xc4$\x17\xfeK\x07\x12\xc1\xf8\xf1\xbe/\xa3\xdc\xf1\xa7\x99G\x05\xe1\x97\x92\x8b\xca\x87\xbb\xe8\x19\xbb\x03\xb9\xfd\x93 F\x9a\xee@n\xe0\x1b\xf1\x95\xc7\xb0F\xdca/\xdb\xec\xa1\x02\x08\xad<\xbc\xbc\"t\x9ce\xd3\x9e\x14\xfb\xe1\xd8Rt\x04\x14\xb5\x04V{\xdc\x99\xc0>\xa3\x9a\xf6OD\xcb\xe8\xd9\x15\x8e\xa8>W\nh\xb7\x1d\x80\x0c\xab\xab\xbb\xe5G\xa89nYV\x11 \xea\xbc\x80\x13$/\xd5\x05L\xe0\xf1c\x88\xec\xdf\xcd0\x00f\x9b\x1d\xeb\xf2\x03\xcb2\xcd\x8a\x05\x9d]\xf3\x82\xe2\xb9\xf6\xd0\xe8`\xa1^l\xed\xb5\x19]tW\xa1\x8b2 }\xf5+\x12E\xf6\x98\xa8\xd3\xa6\x90\xaf_\xa1P\x85\xb6\xbel\xb6\xe3\xcb\x8b\x0dcR\xf3%lCpP\x08&G\xf2\x19\xec\xc3\xa4\x0d\xc9A\x8c<\xe7\xae\xe8\x19f\xde\x8f\xf8\xa1\x940\xd4\x88\xd9\xa9\x1d\xf9f\xb7\x04\xb0N\xc9\xb27\x90.6\x1e\xbb%\x948\xd7&\xfb1\x1d\"a#;\xd7\x99E\xa3\x10J59;\x9b\xd98UU9\xfeTT\xe5\x04oH=y\x8c\xbf\xca\xacGa\xa1$\x8f\xf0\x87\"5&\xfc\x86\xd0\x97\xe7\xfcW5\xb9W\xe8\x04\x8a\x0bb\xd3\xa8\x9d\xa2i\xd0C\xc5\"\xb7\xeb3\xf1\xcd\xd1\x14\xfe\xbe e\x13\x88s\xee\x8f/\x92\xf3\xd8c*(w\x9a\x7f$\x89\x9bT\xcc6>@^\x18\xf1R\xf1\xa5\x88l\x1b\x93\xb3\x9c-\x9c\xdb\xa4F\\G\xa1%c\xce\x8c\x9b\xf8&\x1c\x0e|cHXX5I3~B\xc9\xbcQ\x9ed\xc3\xd0\xc6[t\xccXi}\xd8\xa0iE\xb3\xea\xc8\x8b\xe3\x9f\x96n\x99jWA\x05v\x1c\xf2(\xec4xK8(nJ\x13Y\xae\x8e\xb3\x19\x83`\xc2\x9bC3OW\xa8\xd9\xd0\x1f\xa0\x88\xc1\xa3\x8ag*\x15\x1e\xa8k\xe2\xf1\xfc\\\x82-E\xae\x94\x8d\x8a\x89\x97\x8d\x02P\xfa\x91<1\x8f\xa4\xb0\xa0\xd7l\xbf\xaaeU\xcf\x0f\xf2/\x1fq\x81F\xb2\x82\xb0\x0dg&\xa4\xab\xfarJ&R\xf0\xad\xf8\xf5C\xee\xb7\x80\xae8XXuX\xf80\xf0P\xad\x14=\x19\xd8G;C8\xb3\"^[\x99wcE/k\x92\x1e%\xe8EF\x9d\xf1r\xc7\xea\x13\x19\x7f`(o\xac\x98\xf5\xd5t;\x98\x9f\xc1\xcc\xb6\xb7\xb0\xff\x89\x0b\xfb\x8f1\x1e\xb0m*\xce\x10\x1623bc\x8c\xdc\xf4>\x9a\x8dv\xf1\xefm\x0c\x19c-h<\x16\x18>\xe4\xf5\xfd\x95\xb4\x91\xa9\x9c\xe1\x9e\x12s\xc0\x0d\xbf:N\xa5\x1a/Q\x88\x1e\x13\x15\x99f2\xe8t\x1bfl\xd4\x0f}|.\xf6\xd1\x84\x8dkR\xdd\xf1\x070\x92\xc6\xa3\xc9X\xec*&\xd8\xcd`[f\x1f\xc8\xd8\x9fg\xba\x11q\x99\x90=\x9e\x05\xbc\x8c\xfa\x8c\x1d\x00\xfc\xdf\x04\xff\xb5Md\xc1\xa5\xb1\x04#\x08\xf0\xcf\xd0\x7f\x08+\x06\x11\xec9c\xbb\xc9i\n\x95\xa1\xf3\xf1\xea\xf1n\xde\xe6N2\xc5 \x8aG\x18#\xc1\xc9F\xc8%\xee}60\xbc\xad\xa8\xb70\xba\xd1pda\x905\xff\xe6\xe6M\x8c\x03F\xd1l^SA\xb4\xd0\x8a5F\xb0 !\x9f\xf0\xe9-a\x08\xd9CX\xc2c8c\xff0J\xd0&K\x1c\xc3\x10\x16HA\x96z%\x89\xbcXwkAr\x8e\xc7\xbc\xdf\xf2\xb71\x81\x94\x9e\xbf\x93\x1f\xf2\x9e\xcf\x90v\xc1\x10\xe6-\x94 $\x83/A\xe6\xb1E\xc1(\xf6iEq\x92\"\x1b\x13\xfax\xd6=\x1e\xc2\xca\x87\x9c\x81c\x85\x8b\x86\xfff\xdcmaR8(4\x9a\x12z@\xde\x96.|\xb2pGf\xc2q\xc4(\x15\xe2\x87u\xe5\xc4>\x9cX\x85\x19\xb60'\\\xe8~\xfc\x98\x1d\xe8\xb6\x85a\x038A\xea\xba*_\xf7\xe1$%\xe1g\xf3W'BP\xdb\x1e\x82\xc7\xb7\x94\x0f\xdf\xc1 n\x92\x9d\x022b?\x8dN\xf4\xc2\xad~q'\x1c\xab\x1f\x0b5\"o\xa7\x0e\xd2\x8c\xad\xcc\x0e\xcc\xd8\x12M\xf8~x\xc4\xf7C\xe5\x83b93F \xc4\xfb\x92\xba\xec\x08\xaa\xb2\xa3\x8d\xa2\xec\x9c\x924D\xb5Fy\x9cp\xb6\x9bV\xd8\xf9\xb0\xd4\xed\x00\xc6q\x96\xeeU\x13\xd5\xbdj\xea\xea^\xc5\xc8\xc49\xf1r.\xee`\xa4f=\xba\xd1p\x1c\xff\xe1\x96/2U\xf3EV\"\xe8\xcb,k\xa1=\"\x04\x93b[\x99\xe0 Z\x01M\xe9{&\x1c\xc2\x8f\xc5\x9eMp}E\xa5\xbf\xdc\xcbxJI\xbe\xea\xd7\x9dR2\xe5\xf1h\x93\x0e\xe8\x91\xc0c\xe94y\xf3&O\x10Uz%'HR$\xe4\xebYn\x0c+\xf5\xb9-\xc5\x1cw\xab\xdeE\xa5\x9c\xd4Y\x9f\xb1My\xe6\xd4\xfe\x91\xbd}k\xa1\xc7\xa7\x9ce~M\xca\xfa\x8e\xecVg\xbf\x9b\xb3\xff\xf5\xf5\x1d_\xdb\xa1X\x94\xc2\x9c\xd5\x11\xce\xd4\xe0\x07\xd7\x94|U\xd5\xc3\x91bT1+!\xca\x14\xe1(\x02\xe1\x8f}\xb4\xdb\xf7\x8fy\xea \x9e;|\xc1\xed\xcb\x0e\xb9\xc3\x9d\xe6\xf4\xd4\xaaLXre\xc2\x92\x8d\xeb\x03\xf1xu\x9b\x0b\xe25B\xfd\x0c\xad\xffl\x970\x84i'\x90,\xbd1\xf5R.\xf8\xe0(3x\xfdb=6LIA\x0c\n\xff\xac\xe4\xf8\xd9\xd1\x1a\x9aT C\x9e\xb7I\x8f\xb7\\?\xd1\xa6(\xcc\x05y\x1cr\xedi\xf9s\x0f\xbe\x83D:n\xa2\x8d\x88\x1b+\x9b\xc9O\x0d\"\xac\xbcD\xff\xca|\x84\x8a\x05\xa55\xc3>\xf2\xfb4yI\xd6d\xfa\x9e|\xf1\xfc\xee\x94\x99\x8ev\x0d\\\x83\xdf\x9f-\xa2\x95\xc7:x\x1d\xf2|:\nn2\xa2\x9bVp\xb5\x8a\xb9\xaa\x933:\\\xa0\xf1L\x96}c\xd4%\xc2\xc3\x9c+1\x14\xe7\xde\\Q[0\"\x12J\xd1T\xa3\xbcTb\xcd\x8c\xb6\x99\x12\x01rD\xa5\xd0\x1f\x0d\xc6m\x8b\x9dr\xd5\x1e_G1\n\x9ej\xdd8\x08>?\xe1L\x9fK\x12Z\xb6\x90\x8bB)\xa2\x19#\xc90\xf1=\xa9,\xb4\")\x07\xf7\x0d\x17\x94#\xd2s2\x0c\x8c\x1f\x90\x93s\xcc\xbc\xfc\xae\xc5\xeb\x04\xdd\x95\x14\xaf\x93\xe3<#/\xc9:SJYH\x8a\xd7L\xe2k\xea\xf4\x8d\x81\xa6k{\xec\xde\xfc\xab?\xb7\xf9g\x7fn\xf3_[\xe2\xd8\xfeAl)b\x89:\x02R\xed\x9e\xdd`[\xbc\xcd\xabSi\x8e6\xb1?\xc0b\x8e\xb2xIkCgE\x99d\xf1\x91\xac\x7f\x86\xdeg\xb6\xbe\xdd\x07\x0b\xean\x12\xddx\x06F$\xd0U\x14as\x9a\x87Y\xab\x1b*\xa8\x1dE\xf1d\x91OIV\xafj_\xb4(_\xe8\xd6\xec<4\xb78 's\xf2\x8ed\xf9\x02\xf9\xdf8\x00\xc5\xa3\xf0c\x8c\x8f+e\xbbl\x11L\x85ZO\xebL\x01U\n\xd5\xa8g\xe5\xc8\x18\n\xafC\xf4\xb5\xa7fu\x84\xb1\xd8\x95\xe2\x9d\xdau~\\\xdf\xcb\x0e\x82wmR\xbd\xd4n\xca\xaex\xbbf1]\xb2\xf0nN\xac\xf2\x92v\xcd\xd4Z\xbeV^\xc8\xa5\xd0\xd6:\xb6\xf2*\xf7\x19\xba\xb9\x8ev[\xb2!\x01\x86u\xcaw\x95\x0f\x07\xe3@\xf9\xbb\xe1^X\xbf\xecfQ#\x19\x91\x97)\x8b\xb9\x1b>\xb2\x95\xc2\x15\xfe\x99\xc9L\xb0\x0f?\x1b\x11\xa9r\xd3D{\x9f\xb7s\xba\xad\x148\xad\x13\xdd\xb4;i1\xd3\x80\xb4\x1e\xd2\xe9RT\x99\x97%O\xcd\x85~\x0b\x19{(r\xd0G\x18&\x8c\xbe\xf6\xbc\xc4N\xaa\x15\xedp@V\x02\xe44\xbc\xab\x12\xa0\xa8\xc5\xd9\xa6J\x83R\xaf\x9c\x91\xfcXX\x04MD)j\x99\xb2\x9e(9\xcdY\xc5\xe1w\xe6\x14\xce\xdd)\x8d\x14_\x93V*\x83\x8ev\x82\xc0H\xf9\xd5\xfc\xf6\x99\xf0I\x8b8m\xb0\xbb\xa8\xa0o\x82\x95\x06I\xf9\x9dA+\x0c\x14d\xcb\x91\x02\x85\x0c\xdf\xb4\x0b\x00\x06uB\xa3*\xa2a\x8f\x7fl\xf7\\\xb3o\xf0Xe\xb1\xe2\xfan\x8f\xbb0G6.\x8br\xf6\x07-s\xce\x9c\x90<\x05\xbe\xeag\x00*w\xd5a\x9c\xa0\xeeE.%\x9a\xb6\x8c\xae\x8c\x07\x83J\x8dl\xd9\xd2 \x16=\xa1&@\xe4}\xdc\x19\xc0\x8e&\x855\x08\xee\xa1Nc\x8d\\A\x95\xc6V\x1a7\xb4|56\xae\x85;\x8c5\xbc\\\xac\x8f\x0e\xf9\x8f\xf3p-\xc5H.\x03\xd82\xc1N\x1f[d\x9b\x91\xf6\x8c7\xf7\xe0\xb4\xe5\x7fpU\xf9\xb5\x9c\xec\xb8\x19\xa3:\xaa\x19\xf1\xf8\xacH\xd4\xebv\xfcFxL-Y/[[%A\x8c,\xa7o\xf4\xe7\xb2\x03\xc5x\x9a\xbc\x80\xb0\xb5kJ\x0b\xf9\\\x87ia\nl\xde\x94gJ\x9c\x80\xf9\x8c \xf5Uy\xa1\x1d\xe1\x13\x8b[/H\xa9A\xe5\x13\xf0\x832\x91\xe2\xf6v\x00\x91\x87~ \x1c\x02hn6\xe7\xf9dS\xad\xfb\x84\x81\\<;\x1f\xe1\x04\xa6\x1a\x1f\x91X*/\xb6\x03\xad\x03\x9b\xe1\xe8\xfc)q.o\xe5F@\x06eT9\x92\xc4\xfe\x854\x84%.\\ \x08\x9bX6\xda\xb5X\xcd\xe4\x85\xd9,\xb5\x89A\xd5\xab\x8a/34\x15*9\x81\x9ecED\x91[\x1d\x91gfd8\xc1(\xf8\xe8\xf9\x1d7\xdb\xc0\x17W\xe2G\x0d\x11\xa7l\x86\x9d\xdc\x88\x98\x101\x80[\xe8\x83\x83\x81\x88\xe8\x93#\xde\xff,*\x98E\xady\x93\x18\xda\x1c\xf1:ff{\xc2k\xa4\x90\x86\x80\x1cF\xc0 \x81\xcd\x06r\xf6W^\xf4\xc8`\xd2\xa7 W\xa1+\x07\xb1\xe7\x97\x90\xd2\x0fJ8y\xe7\xb0\xa3\xc3\xcc\x0c\x86C\xee\xe9\xe7\xb1\xcd\x96 G\xa4]\xd8\xd7V\x9a8\x13^\x8d\xf6cg\"Y\xcc2\xdc \xc4\xcaZ\xd2\x18\x1a\x96\x06\xc4\x00\xb6\xf0\x94\x8a\xa4Y,,\xd2\xf8x\x93\xfaY\xe1p\x0c\xcb\x0c7\"\xdc\xb4L\nDDQE\xc9\xa4m3:\x89\xe9f4~l~\x00\x93o\xd3SEV\x1e'*\xb2\xea\x95\x8eY\x06B\x87\xd6\x81J8Nu\xfd\x95S\xc3\xa2\x03\x92\xd4\xd7\x12E\x9cqW\x02\xe3\xf3I+1\xbe\x12\xcb&|o7\x1b\xd8\xc2r\x90\xf9\xf66<\x82\xa4\xdcl\x13F\x83\n\xad\x9c8\xc7b,\xf8\x80\xe7X\x84h3\xe1\xe65\x031\n`\xa2\xa3G\x93oT\xd6 \x9b\x1e\xeb\xdfi\x89\xecz:\x896J\xabM\x15\x9fy}\x1c\x96\xf7\x9a\xcfR\xb9V\x0f}\x88ZOK\x06\xaf\xed\xed\x0c\x1e+(\xdfv\x12;E\xbfC[\x04<\xbb.\xedj\x024P\xb5N\xa1\xe0\xaa1 \x96\xd4\xe2Q\x0c\xb0'\x01\xaf\xa3\x13\x88'Oe\x92\\\xf4\xc6P5\x95]\x14\x04U\xac5\x1d\x98\xbf\xbb\x1e\x98v\xb2}M<\xb0\x99\x8c%.{\x84x\x16\x97\xf73\x11da\xa3S\xed\x88n\xe1\xb4'\xad\xa4\x8a\xa7\xe4\xc6\xd3\xb2\xceuO\xfc\x92je\x0d\xb6;\xb3\xb3\xdd~\x00\x9a@\xcbk\xe2\xb9\xbf}Y\x92\xd4e]\xba0\xf7\xdf~\xdet X\xb8\xc9q\x914\x89\xda\xe55MZ(R$\xb3\x0e\x86\x82V\xf8U\xd6\x1f)CT\xa3\x0cQ\xc0\x8f\xb0\xa8\x8d.\xb4\xcb\x0d\x8b\xd2\xeaa\x7f\x99q\xa2\x0b\xac\xe47\xc3\xbfX\x07\x9c\xcb\xcb*x;\x13\xf1L\x16\xf6\x1e\xce\xe7\xd1\x82\x80\xd1)\x0fTu\x00\xda\xae\xd4\x99'\xd8G'\x9a\xe7&$\xfcz-\x86\x8fo\xb6\x04X\xf0\x17\xe9\x94\xa1\xce\x91\x18@1\x1b\xeae-\xb4\xe7LT\x0d1oeve:\xca\x16\xb5(\x10@\xe1\x9e\xb7\xd0\xf3j\x02\x8f\xb0`\xcdM\xc8=\xac\xda\x87e\xf2'\x18\xa8\x0d\xfb2M7R\x84X\x94\x03HPR\xf4\x0bIbk\x17\x8bs\x9a\xf1\xca\xac*g\x0b\xcb\xben\x96P\xfa3L\x19\xa9Y\\\x03\xb1\x8a\xa3\x96B\xe7\xd7F\xa5\x04[\x958))\xa8\x93\xc9\x04\xe4\xb9%R\xcdw2\xcfN\\\xe9\x0d\x88^RA\x01\n\xf7\xeb\xd1`\xcc$T\xd4\x10z\xa1\x8c\xa7@\xecb\xc7h\xeeM\xca#3.\x08G\x1a\xf0\xf3s\xd2N\x16\xd9\x15r\xe7\xdcD\x94F\x9b4\x96\xd7\xda\x82\xf0\x8eJ\x90\xac\xa3g\x97\x19i\xdb(`\xdb\xaa]#C\xdb\x81\xa2\xba\x99\x99~\xb1RT\xee\x91\x89\xd1\xaa:\xf9E\x12\xdc\xd0\x986:2SK\xbe'\xa5v\xa3\xe2 HZ\x8a8 \xb8\x8fR\x1cy\xc4K/\x1e\x00\xffP\xb8\x97\x11\xa3\xfb`\x91e\xdaxD$\xfd,I\xa9\x9b4+>!\x1e\x1d\xdd\x1e\x07\x10\x8fn\x8f\x11\xcb\xe9ho\x0c;\x10\x8f\xf64\x19\x82\xfd\xb2 y-+\x83q\x97\x96;i\x08{\xcd6\xeb\x15\xfal\x0d1\xd0\x8f\x06\xba\x81q\xce\xf5\x85\xa8\xf1\xc1\xdd\xbao\xf0_?z5\x85\xa0 \xa7^Zq\x8a\xfb\xbb(x\xe5b7\xfa6<aC)p\xc3\x88\x17)\x99\xe6\x93\x0e:\x0c\xd1\xfa\x0bT\xc1P\xe4\xb6b\xf4\xe1\xe4\x8a\n\xbd3\x89)oq\xc1K\xde\xbc \xa9\xce\xf7\xd5\x12\x90\xd2e\xe0\xd5A\x07<1\x9f~\xb8\x8e\x9e\xef/\x9cx2\x91N\xdd\xb8\xe5d\xf2\xf8\x9b7!V\xf4\xb7\x95\xb0\xc9\xcd\xa6\x8cF\xe0\xbf`k\xc8\xba\xddlxl\xab\xd3xo\x94\xf1\x17\xdf 4\x0b]';\xe6)\xf5RW\x0f\xe7b\xcd\x1a~\x96\xc0\x91p\x19\xc5^\xd52UO\x87dj\xba\x9e\x85\x8f\xfby\x96g\xe2\xcf<^;\xe2!<[\xb2\xfe\x85\"\xd1@%\xfd\x9e\xb0Tp\xf2JMI\xf8@\x01Js>\xed\x82,u\xe0\xdcRG\xe0\xcaK\x02\x99\xad\x0f;\x99\xe0w\x0fC\xd8K\x9fK\x86\xef\x96\x03\xff\xea\xfa6\x07\xf6\xbf\x03g\x88\xab\xd9*\x80\xa1n\x02\x973\xb9\"\xa0\x04\x16\xd8\x00\xc2\x13\x90\xf4\xb3dI\xae\xd2\x01C/K\xf3\xa2\xbe\xd4_\xc8H\xc9\xfc\x989\xe6\xc7\x14\xce\xbe\xa2\x1c\xc5U\xa1\x88\x03\xb4\xcd\xf2\xfa\x05\xe2\x1f[s!p\x13\x0b\xaf\xc9A\xfb\x93$\xceh\x9aOP\xb3\xecF\xdf\x7f28zGE6\x1b\x1e\x81\x84%F\xe8<M\xce\x11\xc5?\xacW\xe40M\x93\xd4\xeb\x1d^\xac\xc8\x84\x92)\x8c^\x06\xf0\xcb\x18h\xbeZ\x90}\xe8\xc1v##\xada\x0c\xff\xb4GW=\xa3\"\x1e\xc1\x0f\xe0\x89k\x80\xd5o\xf66C\x0e\xb6\xb4d\x83\"&\xf0:5\xfd\x0f{\xd3\xd5\x88-O\xf4\xf4Ba\xb8\x18\xb7\xe5+\x81\\N\xbdR\x87\xea\x1c\x8c\x14W\\zd\xee\xf6\xc6\x13\x0c\xac\x99\xd7\xb3\xba\xe3[\"\xe0C\xe4Y\x7f\xa9f\x97/\xbf\xe7\xda&\xdaL]j\x18=i\xcfu\x0f\x8fE6\xca}\x8cz\xc4<D\xec\x87\xdb\xb9\x1f\x1b\xb6\xf2\x99\xf0E\xfb]{\xe0\xa3\x14m<s\xf1\xe9/\x0e\x98\x8fG\xe0\xc9\x82@\x92\x02\x06E\xef,\xa2\xcf\xc5\x1e\xd0\x93x>(6j\x0d\x810\x01\xc9\xcd\x818mI\x9c\xcc9\x88\x82\x04Zs\x8aq\x0bv\x14g4\x8c'$\x99)\x15\xcf-N\x11\x089D\x8f\xea\xa7\x95d\x9f\xa9gR=\x17MX9tv\xc5\xa8\x96j\xd7\xb2\xe6e(\xe5g\xb2\xce\x8c~\x89\xf2\xdar\xe3\xca\xd4\x8b\xa6k\x87\xb7\xd8E\xb4\x11\xaeN\x9d\xc8K\xcceJfQL~N\x93\x15I\xe9Zp\xbe\xee\xad\xb0\xeb\x94PE\xb4\xec2\x06y\xa9$\x88\x87Mvj\xe2\xb2\xdd F\xbd\xb2\xcax[\x8fo\xdduJk\x89\x98\x03\xe8=\x0d\xe38\xa1\xacuHb\x08c\x88\x8a\xf4\xbc)\x99$\xe9\xb4\xdf+H&\x8f\xb6\xb3\xb0\x98\xba\xab=s\x9b\xbc\x0c\xd1\x08\xf5\xeb\xb2\x7f\x12\xc5S\xaf\x8c\xbak\xff\xec\x12&!\x9d\xcc\x01\xc1f\x1f\xd0\xa5']\xd3\xe5\x11\x91\x0b\xfd\x04r\xfdq\x88\x81\xbc<t\xf83\x0f\xc5\xcb\xf1\xc7\x94\xcc\xc2|A\x7fa\xdc\x12\xe6\x9c1vc\x1e\x00_\x1d\x1ep\xf8\x95\xd6\x15\x13\xf22 N\x842Eqj5b\xa8\x13\x9d\xae\xab\x90\xfc\x14\x16\x8aG;\xd6\x15m\xea/\xe2\x1d\x91\x00\xbe2!\xe4\xe8\xfa\xaat\x1d]g\x95\xae\xb7\xe9\x94\xa4d\xfa:\\\xc1\xbf{\x01\xf4.\x9b\xb5\xba\x8e\xaeP\xab\xebL\xad\x11\xc0V\x8a\xd7\xf07C\xb6\xe2\xa1%\x8a\xe9`\x18)~\x18\xfb\xbc2m\xa3\x86\xd6\xd1_\\\xdd\xa6(;\xc3\xa6$\x92*\x05\xeah+\xf7|\x91\x11\xc1:\xean\x95\xbf~&\xb6\xdaGGW\xaf}\xa46\xbc\xb47\\I=\xee\x02\xec\x12d\xe5\xa7\x1e\xd7\x93\x96\x90S\x1fY\xbb\xef\xa4\x1bQ\x11\xd1\x88|\xca(4\xb6\xb467z\x9eo\xce\xe3&]\x82\x16XCx\x97\xdb\xbc\xdcJ\\4\x87>K\x93\xe5aL\xd35\xd7\x95*\xca\x9fv\\\xe9V(\x81\x0b\x7f\xc3F\x95\x04\x87\xfc\xda\xa4B\x14*\xdd\x1a\xcd\x08%!\x11KT\xfd\xc8\xbc\xacp\x00\x1f\x88p\xe5\xecPmA\x1e-D\xdd\xd9<\xef\x85F\xa2AHF\x99BH\x87\xf0\x9aT\xe1;\x9a\xca\xea\x06\x15\xa8\x17u\x0e4\xfb6\x00\xe2\xbd#\x01\xbc\xf0\x03xw\x05\n\xdc\x14\xfc\x90\x02\xeb0\xa1\xd2|-n\xa0\xb5\\\x1ao\x9b\x17M\xb36\x8c\xfa\x91\xf7\xe4K'\x9a\x81\x8d\xcb/\x9bt\xe1]\x15nN\xa1BgJEf=\xbe\xb1&>Jr\xb8\xa5K6X\x19\xa3L6\x80F\x0d\xe7i\xaa\xcd\x88yJ+\x8798\xfc\xd2o\x04\x89\xd6\x80\xc01\xb7\x15;T\xb2\xa8\x07\x02\xa3\x02\xcf+\x87M\x070\xa4W\x01C\\\x03\xc32\\i\xf0\x15\x04\x18\x1a\x85_\xde}\xdb\x19\x11XB\x94\x9a(Y\x1e\x13\xd5\xc9+\xe6<\x07\xc7e\xea\x11S\xcc\xd2%#P2\xdf\xf2?y7>\xcf\xd2S\xf4`T\x9d\x17\xcdG\x81\xc8\xd7\x1c\xc3>/\x06\xa4\xeb\xcao%\n\xdd\x8e&<\x1eT\xb0\xf8\x16\x08\xca\xe3I\x7f\\\xc4U\xddS\xc3\xa0aD\xdd:\xd8\x8c\x8b\xea\xa8\x90\x97\x96\xa1\xd8\xea}Q\x88 hP\xe1JCT4\xf3U\xc0\x82\xf8\xe8\x17V\x98Wt\xcba[\x8a\xf2$!\xde\x1b\x12\xc0\x0d?\x807\xeaR\xe9\x02\x01\x1d\x89x\x11\x0d\xd8\xa4\xe4o\xbems\xb5R\x1a\xf3\xfah7\x9d3o\x86;\x0cA\xee\xca\x92ig\xea\x86\xf7\xdf\x84\xb0\xd7\x82\xa1\xc4\x15C\x89\xc4P\"14\xe5\xa6\x10\x81\x97N5\xc3\x88\xf7\x8a\x04\xf0\xa3\x1f\xc0\xabo\xe7 ,\xc8\xf7\xeaZ\x90\xef\xcf\xc40\xe2\x8e_\xda\xc9\\\x1b~\xfd\x87\x91\xa8\xc4\x9f\x8e\x88\xf4Lp\xba\xcfT\xe8\x10!\xcc\xb4\xf1\x10\xcdu\x14,D\xbd\x9fg\xff\x95\x88\x84.1\xa6\x87\xec\xfa\x89x\xc6\"z\x8a\x93En}\xab@W,\xd1\x8f\xc2\x00:vr\xb1\xb5\xbc\xb9\xcbo\x1a\xa4Xv5\xf5rZD\xd7\x02\xfb\xbf\x06\xd1\x1d\"C\xdd\xf6\x02\x14\xe1\x95\x15\xb7p\x8b\xf3\xa4\\/\xd2\xe6e\x89\xde\x95\xb6\x11\x02G\x0e]\x18\xa0zI\xde%o}S\x0c\x1e\xf7r\x04\x07<\x91\x0bG\x89\x14Q\xa2\xbc9\xe07\x07\xcd|\xf9\xeaepYt\xa0 \x95s\xb8\x9a\x86\xe0\x9d\xf9\xd1+\xf3\xa3g\xe6G\x98\xa3\xcaK\xe3\x00N(\x13-b\xe5\xcdoT\xb0\x86\xb1\xe0A\xb7\xa1g\xd4\xb0V:\xec||V4\xea\xec\xf3\xb7\xe7qi\xf2\xb1w\xe6\xa8L\xe0i\x9e\xe6Eut\x1b\x9aW7oep#\xaa\x89S\xae\xcc\x85\x89\xaf\x07\xe5\xdfRg\xa1\x89\xd9\xac\xcf\xc4I\xf9[J&Z\x95\x15\xef\xff\xe6Me\x00\x15}\xae~\xb2R\x99\xa0\xda\x06\xcc\xd3\xec\x1f\x93\xe5\x8a\xaeQL.~\x0c!\x8f\x85\xa8\xfd\x1bm\xa6<\xadM\xd5Qc\xdc\\\xb4\xd2J\xcd-\xd4\x7fS\xacZy\xfc9N\xcec\xf8L\xd6\xd0\xfb\x1bl\x03\x85m\xf8[\x0f\x92\x18\xd8/\x89\xc7\x06#y\x05z[%\xf8D1\xfd\xb2\x16\x87\x16)\x1c\xf4\x86\x15cBu\x892\xa9\xd7j\xc1\xadJY\x08e4%\xce\xc1~\xb9\x0e\xcd:\xcc\x955pT\xae\x1b7\x8ey\xa6\xc4<S\x91\xa7\xd4\xa6\xf2l\xcc\x94\xb4\xce\xb4ytWfzM\xda~k\x1fWg\x0f\x8c\x90H=\x0d\xae\xd5\x1d5\x0d\x1d\x80\xaa\x942\x98\xac/\xdb5\xec\xda)^\x1f\xbb\xf9\x17\xce\x908M\xf0?aB\xa8n\x90N\xa6\x81r\x03\x88\xa0\x01W\x83@\x0d\x0e\xd5N\xd0m\x15\xbdk\x15\xe0\x98\nT\xe6|\x85Z\xbc\xa7\xab\xf6i\xf1\xeb\x94\xd0\x9fe\xf3og\x8c\xb4\x98\x11E\x19\x7fZ\xcf\xe4\xed\x16(\x12\xb60\"\xc2\xe2\xbf\xd9T\xbd\x0c\xfb\xf2n\xef\x1d:I\xf4\x9c:\xcb\xec\x9dYs\xd2\x9f\xc5\xe8\xdf;\x89\xc5\xb1\xb35\xf3\x8a\xe4\xf4\xec\xd9\x95\x93\xd3'WNNo\xe3\xe0\x0bI:\x9cN\xcd\xc5\x084[\xd3 \x90\x13; \xb7\xbc-\x04\xe1\x16\x1d-\xea9\xa4\xab,z\x12\x97\xb6\xaa$.,T\xc5m\xac\x83]<h\x96\xdfNb^\"[\xa9\x96]\xde\xfc5\xc2\xa0\x16\xf9\x80\xfd,\x1f6\xcao\xcb\x07\xcf\x08Y\xd5\x8aoW\x1f\xd6\x9a\x95\xb7\xaa/i\x0bx'\xb1\xa6\xd4x\x12k+\x88\x17\xb7\x9b\x15\xc4\x93\xd8\xa1\x0ex\x12[\xea\x80\xe3C[\x1dp\xe2eq\x00\x17Lh\xc9\xe2ks0\xc9b\xb4%\x8b\x0c\xda\xce\x92\x88\xc7(n\xff3\xe1\xf6g]\xab\xd7&U\xf5\xde\x13j\x94\xa6\xb2o\x92\xa6J\xae\xd5\xdan8\x9d\xba\xb6;\x97\xe7L\x83e\xdd\xaa\xa7\x8f\xaf\xf7\xe2\xc8e\x9a;*8F{?N\xc2\x93\xb9\x17!$\xd9\xfb\xc8\xe3\x08\xcfEk\x1f\xc5\xf9\xce\x1d\x88\x0b\x1c\x0d\xb45\xdf\xc4\x888\xf5\xe7\x01e\xcd\xfa\x06-\xec\x8f\xa8i`\n\xc9\xf1\xcbz`\x82o\x16\x1f\xcc\xa5SP\xe1\xc5\xa2r\xdd\"uM\xf5c\xd3\xd9c\x1cb\xa5\xb6\xdf\xeeC\xac\x19G\x8a\xca;\xf1\xf6\xb6\x0f\x89GF\xf1\xd8o\x1e;V\x8dbql\xb3c\xc7\xa0\xbe\xd1\x1e;\xd2A\xaa\x12I0\xda\xad\x1f\x1e\xb5\xa5\x8fbJ\xd2\x8cL\xe8\xf5.\x7f\x99Q\x89\xb8\xd5^\xe7\x18\xe2\x16\xdf!\x1aJt\xa7\xb2.\x8c\xcf\x89e\xbf\x12\x16hx\n\xab\xdf3\xe9\x933\x92\xae\x1dZ\x96W\x81\x0e\x85\x11\xc6\xa0\xfa\x05\x8e\x04\xc8\xe6 \xd2bR\x12\xb73-5$\xc9\xf2\x13\x9a\x86\xff\x1f\x8e\xfcE8r\xd5X.G\x14\xc1DV\xd7\x8d\"\x92\x87t9\xa6\x10\x8cx\xe6(\xb5\x1c\x02\xb0r=\xb5\x9e\x04\x07i'\xa9\xc5\x9a6\xd0q\xd0\xa2\xa6i\x0e\xae\xa9s\xaa\xee\x90$\xa5\xae\xbc\xc0:\xf6~)\xbcwZNf\xd6\xee\x0fk\x17\xbd\x84\xa6q\xd2\xde\xfe\x9f\xa4A\xca\xfe\\\xf5\nU\xb4\nMc\x9eCfh/\xc5\x98sW\xc3\xb0v:n\n\xb1\xc6\x88\xbb\xea\x80\xb4\xc1\xc8m\xea\xad\xec?\xaf\xfd\xe9\xa6\xf0\x11}-\xc3\xcf<\xfe\xfd\x1bt>8\xfb({\x8f\x9a\xf8I\xdcT\x01\xcd\xe2\x00\x16\x0c\xc7z\x7f\xff\xfb\xf1\xf1\xd1\xeb\xd7\x1f?<\xf9\xe1\xd5\xe1\xf1\xfb\xc3\x0f\xc7\xc7\x7f\xff{\xaf\xe9\x08\xb2bog\x0eJ\xa3y;\"\x18\xaa5\x91z\xb5& \x05Y([j\x88\x91\xcd\xe5\x87\xa6\xf4\x8eg\xa0^\xae\xe8\x9a\x87O\x17`tSDL\xdb\xf7bU\xc9\xb5\xb2\x04a\x94\xd9\xeck\xe5\xebb9-\xca\xb3z\x97kJ\\\x93p\x9fY\xe9\xd2\x0c\xf3\x0ex36\xdei\xec\xe9L5\x86v\xd7\xdf\xa0\xd2:\xe7*\xad\xd3\xb8\xd4d\x9d\xff\xbfM\x93uj\x87_\xa1\xee\xd3\x14XT\x7f\xad\xe2\xd1\"\x96\x0et+E\xa9\xb5*\x95Z\xab\xaa\x82I\xfe\xac>\x10\xac\xc1*VuV+\x17\x85\xcf\xca\xa6\xf0Y\xb5)|V\xb1\xdc\x870\x84\xb3X\xdc`[\x11Q2\x00\xe2\xadcF\x9c\xfc\x00\xd6\xd7\xa7\x11Z\xff)\x1a\xa1\xf5uj\x84\x84\xff\xbdM1\xb4\x8eK?}N\xb9O5\x94{\x19\x07p\xcc\xf6\xc9\xda\x81\x16\x9ft%l\xc7\xff!\xc2vn\x85\xe6\x92\x13\xb6%\x1b\xefI\xec=u/\xbby\xf1\x0d\x84\xed3'l\xef\x15\xc2\xc6n\xf5\xf38\x9bG3\xfad\xb1p\x8d\xe6\x7f\xef\xac\xe8~bWt\x1f\xc7\xa5\x83\xed\xb1\xba\xd7\xcecqC\xec\xb5\x13\xdck\x17q\x00\xe7\xd4\x0f\xe0\xe2\xfa\xf6\xda\xc5u\xee\x8a\xf74\x9c|\x86\x11\xdb\x10\xe3\xe6\x86\xb8\xb8\x82+H\xd5\x18?'\xe1\xb4\x89\xcf\xa8\xb7\xa2JRn\xea?\xe4\x89\xd7\xe9\xce\xceC\x1f\xbf\xe7^U\xe6\xbd\x00\x07 \x92\xd0\xe8\xe2\xfe*#_\x11\xf2\xb9\x13\x80\xd8\xa8K\xc3!\xfb\xa5\xc9\xde\xd1\xe8%\xcf\xe6m\xbd(9\xbe\xe5\xfa\xbai\x1d\nM_\xe1L\x82\xbb\x7f\xbb\xd1N\xa00\xc0l\xe0\x01\x02\xb3\xfe\x16\xec\xc0\x80A\xfc1W\x1b\xee\xec\xf8\xf8\x99\x89/\xc0\xcc*E\x1b\xa3\xd8\x90\xfb\x90-X}-\xd8\xa5I\xb4\\\xc5GC0e\xc1i\xe3z(\xf1V\x8d\x8a\xa1\xfcn\xad\xfc\xb9p\xed\xff#\xd6\x8b'\x8d\xc5{\xc2H\x91\x83`\"\xd4\xc9\x98\x1f\xda\xa3\xbe\xcf9\"\xfb\xfa\x959HZ\xa4\x16d\xc0\xf5\xd0m\xd9T\x05o_\x84\x07u\xe0\xd0\x08\xcf\x92gB\x01(\xd1\xc0P\xf5\x18\x8a\xf5o\xa6\xce\x87\x06\x19\xc5;E`\xaci\xfdIm\xfd\xe3\xab\xae\x7f\xd3\xfd\xba\xb1\xfeIke*\x15e\xb3E4!\xde\xc0\xde\xa68\xa6\xba\xb4\xcb\xd0\xd0Q\x1d\xa5\xeb\xca\x05\x83\xeb\xdd\xe9N\xd1Z\xeb\xdd\xa7\x91\xac\xae2\x8b.V\xa6o\x8d\xcf\x16(U\xc3\xa0.x\xc5X\x11;\xd8\x18\x92\xb8\x1c\x99\x8c\xa8|\x16\x8e\x1e\xc5`]\\\xc1b,.\xa2V\xe95h\xb8_{\x95\xa6\xab\x16\xaa\xa2\xa3sZ\x1f}\x99\xa6\xc7\x18\xe3W\x9cLi\xe5d\xc22gQ\x95d\xb1\x83\xe6\xa1\x8fw#\xfb\xe9n_\xc4\xb4\xb6\x88\xd1\x95\xd6\xef\x8fXWa\xba\xb6\x86\xdd\xd4V\x85.\xa9\xa9\xb9R\x10\x14\x0e\xf0L*\xa8\xbd2\x99\x8ea\xc8\xea\xcc\x06\x06=\xd4\xc5\x95\xb5\xa0\"\xee@]\x92\xf2hQ<\xbflH\x11\xf3=\x97\xd6\x10!\xad$\x13Le0H\xac$\x13\xc4o\xd2\x16&\xd0i\xb2n:R\xa7\xd9&z\x1db9S\xed\xd9\x97\xba\x9d\xdc\x8e\x91 \xad^\xff\x92\x9fH\xdb\xe2\x07D\xbf%\xa0\x03\xee\xd9\x8f\xcb`\xb2\xfa\xeag\xc8[je\x1e\xda\xb2\xf3Y3\xf3\xb9D\x05\\\xa0\xd6\x15\x85\x9a!\xbc\xd7H\xef\x87q\x00Otz\xd7\x0fO\x9e\xbe4h^\xdf\xb2\xf7/\x1c\xa4\xfd?\nw\xbd\x96\xfc\xa15\x8f=kF\x99\x92\x19\x8eTN8\xaa;\xeaE%\xfdK\xf9\xaf*upK\x19\xf8\xd9z\xea\x1er=\xc0!\x03\xc8\x1f\xb1\xd7pO14z\xd4..\x16ho4K*\x87\xd3\x08ut\xec\x9f&J\x18!\xa9\xa6\xef\"%o\x1c\xfb\x01\x94.\x93Jh\xc4\xfb\xf5\xf2$Y`\x85\x04\xdb\xf3z[\xb4\x06\x11\xf5\xd7\xdbx\xf4\xa4P/\xbeu\xd1\x06\xbe\xb5i\x03\xdf\xb6i\x03Y\x17\xaam\xed\x8b\x9aE%\x80\xb8\x7fT\x12\xc8\xaf\x01[\xa6X\x97\xfeK\xa4\xc4vH\xf3\xf5\x8cz6V\x04\xc4\x82S\x91\x1b\x97g\xda.\x8f\xf6\xcdFk\xa3\x87\x1acP\xe6{0\x98\xde\xac\xa6m*\xb0GOc\x1a+\x88w\x9b4\x81&G\xf1\x94\\\x90\xe9{\xf2\xc5\x010\n\x89\x7f#\xa2\xce\xddz\xf9\xe9\xbd{\xeb\x08\x1cm*l\x17\xcd<e\x98\xde\x93\x9f\xf4\x80\x1d\xcd\xeb\x15If\x98_\xfb\xa7\xf7\xa8sd\x7fp\x0b\x8f\x01|\xa8]b\xef\xb8N\xef\xed\x9b\xff\x96 \xbe}SL\xf1\xed\x9b\xeb\x9c\xe4K\xb2\xbe\x02\x9e\xbcS2\x8c\xb8\xf5\xf3:\\\xb9w\xf1Ul\xd5rxu\x0d<\x98\xfa\xe1\xe4\xd0\xa1\xab\x0e\xe4\xe0\xdf\x86j\\U\x81\xe0?\xb6\xd9\xcb\xec=\x0e\xd3\x16c>\"W\x87pa\x84p\xefn\x1d{!\xa7,\xd2\x94]\xd2I!\x17;\xf6\xde\xa9\xdb\xec:\xbb\xed\xbcI^u\"\xa6\x9d\x9a\xcf\xaa\xb3R >\xce,\xac?/WY\xaa!\xe4\x9c\\ \x052\xae\xee#\xbc\xb86\xd0\xbf\x8a\xb2\x0eK\xbe\"\xd7\xd5/7C\xb8\xf7\xdc\x1b!\xc7r\xb2 \xe3\x9eK\x0f\xa5\xa9\xc3\xb1\xfc\x85Y\xbb\x04\xdb<I6\x06\xeabb\xde\xfaa$h\x94\xec\xf1u\xb8Z\x91\xd4\xef\xff\x91D\xb1\xd7\x0b\xa0\xe7\x17\x9fjT\xe4\xcd\xb1O\x92x\x12vX\x95\x1f\xe5y\xe14QPxos\x81\x16y1\x99eD\xc7}>&\xc6\xf2\xba\x9f\xbe\xf2\x12\xc3\xcc\xb91\x8f\x97\xd9e\x94?\xc5\xb0\xc7}\xce\x14\xc2\x01\xe4\x98\x92|\x1fB\xea!\x7f\xd8\x8f2\xc1'J#\xe0\x88\x8e\xb5\x94[\xbd.}wOo\xf5*\x10\xc0\xe2\xf5\xad^\xa6\x8a\x1dP1\x16D\x0d+\x8f\xfd\xabA\xed+\xfb\xb8\xcfD%\x84h\xb4\xebP\xe79)\xed\xad\xb8\x08\xa1\x97\xa0\xc7\xae\x0c\xc4\xcd<\xa5\xd0j\xb3\xde\x96\xbc\xcc\xd9W\xcfD\x95(Q\xfdBW\xd7X^\x92\x92ci\xe9!L\xeaT\x14\xc7\xc4$N\xf9T\xd2S?\x90\xf7f\x8b\x90R\x12{[\xbb\xc2\x12\x83\xdaEM\xd1\x13\xebV\x00\x01\x1c%\xcd\xa8\x13\xba\xc8-\xc4\xfd\xa0\xec\xc0\x87f\x1fJ\x85X\xd86XN\xe4e\x06\xf8%\xaf\x8d\xd6,g\x8b\x0f\xa5\xfaV\xe3\x0e\xed\xc6\x8eH\x8f^\x97\xb4\xc9*\xbbV\xf5 v\x897\x98\xda\x12#k\x0b!4n\x91\x98\xa6Qe\xac.CU\xf4{\xef\xdc\xba9#\xe9\xda\xf1Lq\xe4\x82cK*\xf2\x16.8\x0d\xc0V\xf2\x13\x8a@s\x8e\x03\xbc\xd6\x11~\xa1\x14Z\xe3Z\xa2\xad\x81\x01\xf8uG\x12\xd0\x03\x86\x13]G\xc8\xd4O\xae\x1f\xd4|\x82\x9a\xf0'0\xf5\x19Ok=\xbaT\x8db\xc0d\x9fbNT\xcf`\xde\x00UOz\x80 M\xf4\xe5\xc15\xc3\xe2Z\xa1n\xb0\xa8 KP_q\xeei\x89y\xbb\x89\xaf/S\xa3\x19\x08\xe3@\\6o\xbd\xef\xc2\x92\xc2\xe9!\x1c@\x0f\x19\x1f\xd8\x87^\xd03c2#\xc1=\x8d\x1eU^\xdf\x82\xe96\x1c\x8fE\xa9\xfe\xad\x01\xba\xacn\xa3\xd2\x14\xffE7\xa3-YBJ\x99\x14\xaei\xe1E\x83gN\xaf\xc9Y\x82\xd8\x01N|\xdbg\xb2\xfe\x06\xf2\xf3\xd4iE\x97\x159\xd4\x01\xad\x8a-VM\xd9\xe9\xd4\x19?K;n\xb0\x00\"\xeb\x02\xd7p\xad\xe1\xa0\xf2\x08\xf60?\"\xc3\x14\xd8\xe7\xf9\x90\x1a\xdbAU\x03`\xcdZ\x1b\x01\x84\x03\xf0\"A\xe5\xb09_\xb4K\x8b\xd2\xb7\xbcb`b-\xc8\x9c\xba\x83\xec]t:\xa7\x1d\xe1& \x93\xca\x08\x95\x86(;}\x12\\\x8f0\xbd\xa7F\xbb;\x98\x06\x8d\xbd\xb8\xe3n\x81Tj2\\\xa7\xae\xd0\xb8|E\x0c\xfer\xb5C\x82q#\xddz\xe4yYx\xac\xdc\xbb\x18K\x85\xe9\xb2`\xe8\xbaJ\x9djL\xd4gf\x0c\xc8\x01}?(u\x7f\x03\xad\xf9\xd9\xa9\x97\x93\x9c\xbe\n\xbb\xa8\x07\xf8\xbeF\x0f\x99\xdd\x00v\x06N\xbdD\xd9\xe1rE]l\x0c\xa2\x17\xf5dR\xe4\xf4\xba\xe4\xbe/\x96\xb1\xca\x8c:\xf0\xa2&#\xa4\xd3l&I\x1e\xd7w~\xcb|\x9ex\xb4T%\xf1m/\x04X\xfeq\x07\xbd\n\xf6\xfe\x83+{*\xfaw\xa5R\xa0P\xaa\xaf\xd4\xf3K\x83\x94-\x03\x9eD\x0d\x1d\xf1nc]\xf1{\x917\xc1+\xeb\x94\xf3J\xe2lW\xaa9\x8f\x9d\xa46E\xe6\xd2\xb3\xbb\xf2\xb2\x94R\xc1\xb3@5\xb7\x19*\xe4]\xaa\xe7\xad\xcb\xea\x91/y\xb8\xe8\"l\x9d\xd1\x82l8\xb5/\xb2f:l5\xd5\xe1T\xbf\xb6\x18\xa8\xd5?\xc6ty\x95\xe2L\x94\x96\xf7\xed\x9cb\xb5z\xeb\xcf\xb1_S\xb5Z\xcf<R\xa9j\xd0\xe6;V\xfb\x98j\xf3\x80\xca\xeb\xd2\x91\xdf\xe3\xbb\xf4M\xd2q\xbf\x0b\xf1\x03wx\xa7\xd3\xa5\x10Y\xbas\x16\x86j\x91-<w\xec&]\x96\xc2e\\\x17.Y\xdf\xa3(\x80xl\x150\x9dX+6\xfd\x97\xc4\x95\xb8U\xbc\xd1\xbb\x08{\xa8\x1a\x8b\xb5\xa5v\xf5c\xaa\x9d\x91-+\xa2\x82\\\xcf\xea\xe1h\x8bf\xba\x8c\xa2#r8\x0e\xa5\x04\\\xd7\xf1\xb8\xaf\x96\xe3P^\x12\xb1\x82n\xa3H;3/\x08\xfa?\xdc\x9a_\x84\xf4\xf5\x95\xa51\xd75\x02e\x13\xff\xa6w\xb9\x93W\x9d\xb6U5\xf5m\x1bYi!\xd5\x9c\xb5\xb6\xe3P\xd5\xc4\xea\xb7xg\xc9S\xb4\xd8\xe1,, \xfb\xab\"%\xb8\x8a\x08\xeaQ\xe2\x8e1\xec\xb4{\xd6\xc1\x0cY-\x98\xe7\x80-%J\xaa\xf2\xaeK\xf1\xf1)\xd6\xd56\xe9S\x83\xc2O\xd6m'\x9d\x12z\x14;\x0e]Wn\x9a\xfb\x03c\xa1MYa:\xaaT\x98n\xcd\xb6\x9c`\\\x90CVd\x0f}\x1a\xb1Z:\xc6-\xc9\xa4\xc4I\x00K\xc6J/}\x14\x13\x96e\x9eZ=\x88l\xcb\xe2tZ\x9d\xa6I\xbe\xfa+Xq7\x1b\x9e'\xb2\xdd\x1d\xf1*\xd7_\x11\xf4N\x0c\xbc\x96so\xd3\xb9\xb0+jr\xee\xec3\xce\xb9\xb7\xefk\xf5\x12\xe0A\xab!\xda\xafFc\x1fc\x180g\xf9(\x0f \x19\xc3>$\x0e\xc6A\x0b\x1d3\xc3@\xa2\xa0\x1b\x05\x8e\xaa\x94\xb7\xd5\xfc\xa4P\xb0\x00\x12OG\"\xe5e\x18\x7fgQc\x1ev\x913\x90\x0e\x89\x84\xcbK\x1eC\xb0t\xec\xe5\xa8\x0b\x0d\x97\xfdp\xaf\xd1.=E\xd9\xfb\xfc\xc4\xb1\xc0g!\x03\x0eM>aE\xa5\x14nu\xe6<\xba\xa2\x13r[\xda\xe2<.\x12\xe3t\xc8\xa7\xa5\x9f\xe2\x8a\xf1B]&\xe9\xd9f)`\xa6\xcc\xd2/n\xba\x9fj\x9f\xc9\xfa\xed\xac\xc3\x90\x8aC\x8d1s\x9d y\x0dFB\x1eq\xee~\xc4W\xb42lW?mH\xa9.\xdd.\xba\xab\xd1\x1a%\xbf\xfa\xc8\xcf\xba\xf7\xf7\xf2*\xebb\xe0\xbdq\x8d\xb5\xb9\xac\x9a}/\xc3\x8b\x0e\xbd\xbe$\x9dT\x18\xcb\xf0\xa2\xeb\x99\xfa\xb2\x92\x8f\xc8\xa9\x137\xa3Yc\x06p\x00ob\xee\xc2\xf2\xd5MPZF\xf1\xd5\xa7\xc3\xbb#\xbc;\xd7\xb9\xa5\xa43&jC\x1eA\xdf|\xf69Zu\x80\x9d\xd2\xfe\xeb\x90\xce\xfb\xcb\xf0\xc23T$6tV\x17\xbe]\xa5\x04\xc3\x1ecMzT\xb9\xe3<\x90_\xe7\xd1\xa2\xa3\x99\xa1\x18\xcc\xefW4l|\x8eV\x1fc\x1a-\xbau\xcb\x81.\x87\xdcM\x05\xc5\x13\x82u\xeb\xafi\xe5\xd0d\x06\x03}\x7f4\xfcL:,/\xad\x18 \xae\x80R\xac\xbfkF)\xd6dw\x94b_}\x0bJ]E\x92\xf8\x87\x13w\xab\x940\xfa\x18\xa3\x9a\xb7\x92\xbc\x0d#+[\x18^\xc9NS\xa3vY^L\xa4\x8b\xaa\xb1yJ\x81\x96J\x18\x08vlo\xedL\xd4\xf3o)\xfb_0n\x1a\xc1\x87\xa2J$l\x9b\xa1\xd2L)\xfd\x14\xdf\xde\xbc \xdb\xdb9\n\xa9\xa2AC\xa1ry]\xfa\x01\xe4\xc67.\x03P\xcb \xfd\x17\xadJ\x92vY\x16Z\xf1\xc6b\xdf\xd9\xe5Zv\x85\x16\x8f\x12y\x89q:FY\xaa\x17\xfaN\x85\xc5L\xdb?\x00\xf7\x88G\xf5\xb2F?\xaa\x97!VB\xbd\xa4\xe9&o-N%/\xae\xc3\xaf\x14\xa9\xb2x\xa9\xcaKF4R\x11\xc3\xdb\xfa\x01\xbb2\xe1\xac\xea\xf6\xf6\x04\xdf\x1e\xb4\xb8\xb6\x82n\xafM\x02\xc8P\xe3y\xc0H\xdbp\x08\xef\x84\x98\xf3\x9cad\x86/\xf04\x7f\xa1\xf0\x0c\xf9/X\xdc6\"`\xa5\x00\xda\x87\xdd5\xaf\xec\xe0\xb9*SQ\x1cZ\xdd\x98\n\x19C\xd0\x91/\xed.\x86\xcd\xc3l\xfe4\x99vpt\xa1\xf32\xbb\x00\xd6e\x9a\xab\xd9\x06\xday\x04(\xb6\x17wP\x1e\x0ea\x00\xb7`\xb7\xd8h\x16\xd2%\xcd\xa4\xb3V\x05\x9f\x9b+\x7f*\x8a\xdf\x0e\xf4Uo\x8b\xd7\xf8\xc0\x9c\x16\xbf\xf6\x0d\x1b\xed{\x14\xd2o\xdf\xb9\xbd\xf7`p\xff\xf6\xdd\xdb~P\xdc\x86G\x8f`p\x176@\xe0\xf1\xe3\xc7\xb03\xb8\x1b\xc0\x9d{\x83\xfbw\xee>\xd8\xfd\xbe\xfe\xdem\xe5\xbd\xdb\x01\xdc-\x9fc:w\x8f\xc06\xdc\xbe\x7f\xef\xce\xde\x83\xbd\xc1\x83{\xb0a0\xfd\x17\xdb\xd2\xff\x12\x9f\x0d\xee\x05\xb0\xb7w\xe7\xde\xfd\xbd\xbd\xbbE\xf3\x87\xe2s\xec\xa6x\xf3v\x00\xb7\xf7\xee\xdd\xbbs\xff\xc1\x83\xdd\x07\xbe\xda\x84e\xcby*\x7f\x10c\xad\xcb\x83\x8eP\x83!\xdc\x1e\xc0w\x90\xc26<\x8f\xbd'\x147\xcd\x13\xea\x11\xdfg32w\x0e\x8e\xbbS^\\+~\x85^\xaa\x93r\xe9\xa6\x98\x11v\xd4\xdaA\xb7\xc6\x1d\xdb\xf5\xb5\xe5\xac\xa1 \x88:RX\xb9SW\x06\xb3\xbd\xf8\x9a''Sr\x01\xa8o\xbc\x8eG\x0b\x19\xe0\xfd:\x1e=c\x7f\xbf\x16&\x8b\x8c\xdd\x12\xa1\xa3\xfc\xb6\x08\xac.\xee\xab\x81C0\x84W1>\x89\xe2l\xc5s\xe3\xe3'\xef\x93<\xad\xe6\x95\xd1\x81\xac\xa6D\x12\xee\xad\xd5\xd9a\xeb\x93y\x18\xc5\xbcma\xcb\xe4\xb7\x93\x98\x86\x11F\xa5\xe3\x10\xb8\xee\x12c\xc4S\xdd)9[D\x1dB#\x0b\x01\xe5+1\xae\x84N\xed\xb3:l\xb8\xf7\xbbZ\xff\xcdT15\xcb\x02V\xe1\xae\x93a\xb5\x90&\xa4\x93\xc4( \x1a\x9b\x8bO\x03p\xa3\xaab\x93t\x14\x1a\x97\xe1\xeae\xd5\x07\xd9\x15FW\x00\x02[\xf7:,\xda\xc4\x8c\x06,x4\x82\x05\x08\xd8\xc9Uv\xeb\x87\x18\x93\x9b\xb4f\xeexj\x06\x92<\xd5\xaa}\x19\xda\xf9\xb9\xb5\x9d\x11 \x80\x8e\x9d\x1a{g \x87\xf5\xb3\xb9e\xb3mQ\x97d\\\xd0\x84\xa7aXo\xaegX;\xd7<\xacW\xf6a\xf52\xa4\x81\x15\xe3\x07\x1c\xc0O\xef\xdf\xbe\xe9\xf3G\xd1l\xcd\xd5\xb6\x82Z:\xe6\x16}f%\xc0\x87\xc6L\x9e\x86\xe6\xbe\xb6b\x10\x85G\x05\x07G\xe11\xfe\xbd\x83\xec\x9cS\x07\xcf\x1d:`\xac\xcf6\xec\xdd\xbb{\xe7\xce\xed\xbb\xdf\xdf{\x00\xdb\xe0Q\xc6\x90\xdd\xf3\xf9\x9f\x8f\x1f\xc3^\xf3\xf4\xad.\x94h\xedC<Z\xc9#\xf1Cy$\x8a@-v\xafv&\xf2\xf4\x02\xc5\x83\xda\xa1\xd8J\xd4D\xb7\xb5\x85%\x18}\xbb\x8f\xe1\xb7\x88)\xd5\x81\xe3\xc1\x16\xe9\x93\x9f|k\xfa\x067\x9d\xf9\xb5\x06N\x0d\xdcN\x8aY\x14OQzr\xec\xf6\x1b\xbc\xe9\x0e\xd0\x99\x0e\xf6a\xa7\xe9\xff\xa73s\xb2Q\xb9\x19\xae\xce\xd4\xf4\x99\xd2De\x1d\x8d\x92f\xb8\xd8;N\xae\x9e\x8b0\xa3GW\x1cYa\x8c\xfb\xd3Fw\x1d\xf1\x1b\x8e\x88s\x9d\xf1\x1b\xae]\xae:\xf4)\x11\xb5\x1eVdvbf\xebTZ\n\x98\xd4\xc9\x83j\xf9B`\xda\xab=\xf1\xe7\xcd\x9b\xb0\xd5\x96\xef\x95]\xb4\xc8\xce\x08\x8f`W:\xf7\xa3s~\x99\"\xa2%(\xb4L\xaa(\xcd\x19-\xd8S\x80y F{\x00)\xecC*C\xf7\x0f\xd5\x08\xe0=\xe9\xd0\xc0[\xc7\x1c\x07\x8eA\xc1\xd2\xb9\xf3\x9b\xc8G\xe1\xad\xfag\x90\x90\xab8~\xf2j\xf6N\xad_\x93k\xa2#\xf6wv\x1a\xac\xa5\xd7\xf6\x11\x05e)\xba\xaa\x16J\xc9\xbc^\x8d\xa6\xb9y\x13\xf9\x8b\xf2\xc6\x01O\x811\xbf\xaa?\xa2\xa8\xaa\xad}\xad\xb3;b7\xe7\xa5\x06<\x1e\x0fa\x17sP\x18\x02\x89\x0c\x80b{\xb9|\xc4p\xb1\xfcR\x1cZ\x8dj\x8a`:\xe3(IWI\xd6\xc5\xb4y\xf5$\x1fnf\xbd\xb2\xc4@\x81\x02{\xf0\x9d\xfc\xb5\x03\x03^`\xc0b\xf93\xa5>T\xaf\xc2h`\x95\xcb\xe5\x95|\xb3\xad\xaeu@J\x1b\xdeV\x82\xa5\x00\xf8\xba\xf2\xd0R&\xa2G\xbe\xaf$-\xc5f\xc5}k\xcb\x97\xac\xf7\xc0\x96GC\x85\xa8\xdel\xe7\x0c\xd2\x80[\xee*1~\xd8\x7f\xeb\xe4\xdd\xed\xa1W\xb0\x9f\x15\x90\x8d\x18ds\xf8\x1f&;\xb0\xad\xc7p \xa9\xb8\x00c\xcc\xef>\x7f\x07\x0e\xe09\x9b{\xce\xd3\x91\xa2\xd5F\xfe\x8cd\xca\xd86\xf0[\xad%\x86T\xe5%\x95p\xde\xc6\x0b\x12\x9e\xb9p^\xd2,7b]\x8c5\x87\xb2oY,\xb6/op\x02 \xf5/\x01\xdc\xe8'3t\xa65~\xc6\xf3\x93(\xde\xf9\xd6s\x96\x14\x1b\xdf+\x88\x81\xb8\xc7\xe8\x80\xc8H\x13\x94\x94\xc8\xcd\xc7\xa9\xab\xcb\xdd\x92z\xbbj\xcaj\x97>\xae\xe0_\xc7\x0e|\xc7\x08\xd5\xebv\xefq<\xf9\xbf^I\xafzC\xfe\xf1,\x0el\xc8\xe6<\x86_#:w9\xa7\xa4\xcc\xa3\xf6b\xc77\xc6\xd3\xc9\x00\x81\xe6\xf8M&\xcb\xca\x9dK\x9fQ\x842=\xec\\\xea\x1b\xd4\x9bE\xdd\x96#t\\o\x0e\xbf3\x8f\x85\x18\xc4kA\x0b\xb3\xb2\x93\x9cv\xd5|:\x9a\xaa\xd3p=\x9b\x0d\x9b/s\xb89@;Q\xf2l\xf3\x12\xda\x15+\x81\xfaX\xb1$\xa8\xb7+&\x85\x17\x81\xaa\xa4\xf5\xf1\xde\x8d\xca\xf2\xf1{?V\x9a\xe6\xf7N\xa8\xe6\xe3s\xaa\xf9\xfa\x82\xd6?oBE\xe6\x97\xdb\x87\xb8 W\x04\xea\xcb\xe6\xfd\xa7\xc9bA\x10\xd2\xfbp\xac)\x90\x81\x01b_5\x0f\xd4\xb4\x92G\x1a\xe7 \x9e\x97o\xa5y\"R\x05^hGI\xf7!\xd3<P\xb3J\xae5\xcf\xdf\x91I\x92N\xf7!\xd5=\x0b\xe3S\xb2\x0fK\xcd$\xde\x91\x15 Y\x93\x9agQ\xb6\x0fS\xcd\xfdY\x9a,\x7fz\xbf\x0f\x0bS\xba\xe4\xcb\x00h\x9f\\\xac\x92\x94f\x98$\x8ec\xe5\xa5\xdd\xa7\xcd\xe2I.\xf9\xe0^\x82\xeaEU\x0f\x8c\xa7\x1d\xff_\x9f+\x1f\x91\xe7\x17\x7f\xb2\xdbU\n\xa6\x0e\xacd!.\xfd2\x00\xd6\x1bH\xea\xde2\xe0\"2\xd7\xbb}\xe7{\xdf\xeb\xd1\xe4\xe3jE\xd2\xa7aFz\n\xdd\xac\x80B\xdbn\xbdQ6\xd5w\xe4\xf4\xf0b\xe5\xf5F\x9f>\xe5{\xbb\xbb\xd3O\x9f\xf2\xe9\xfd\xdd\xdd\x1d\xf6\xefl6\xfb\xf4)\xdf\xbd\xcd\x7f\xee\xde\xbe\xc7~\xce\xc8\x1e\xfe\x9c\x91\xbd\x19~3\xc5\x9f{\xbb3\xfet\x97\xf0\x7ffc\xd3\xe0\xcc\x14\xad\x100(\xc9\xa8J\xc7.\xbb\xc1i\xb0\xfb\xa0\xc6\xeb0.\xb2wx\xb1\"\x13J\xa6\x10\x16\xed\xf4\x14c\x8f\xbc\x07\x89\x96\xb0G3\xf0\x94\xf8\x88-\xc5D\xb0\xd9\xc8\xecA\x1cE\xb4\xaf\x11\x1f\xe8<M\xce\x91;\xfe\xb0^\x91\xc34M\xd2F\xea\xbb\xb3z\xb2s\x1d].\"\xba\n=M\xe3\x15\x10\xb3F\x89\xbcbEI1\xa9\x8d\xd1\xb5\x8a\x07\xd0\xa1\x84\xd1<\x9419 \x9e2\x91\x92\x00\x10Y$\x9d\xef^\xe9\xafW\x1d@\xf3\xcdb\xe9\xb1c<\x072\xd6(F\x8fm6\x18\x0fV%\x03\x0f\xf5\xa8#\xbf\x8f\xc9\xb9\x97\xf4\x9f\xe2\xaf\xcd\x06\x05\xac\xb8\x86O\xec\x92\xaf\xf0\x8a!\n\x96&\xddP\xee\xce}\x0d\xc6\xc5\xde\xdd\xdd\xdam\x06\xdd\xde\x88\xd3\x17x\x92\xad\xe3\xc9s\xd1\xfe\xb8\x96\x0d+W\xdf4\xbd\x14\xaa/\xbd 1\x97\xe8Log\xea\xdb?\xa7\xc9\xc5z\xdc\xeb\xbaG\xd1\xd1\x11kZI\x98o\x0d\x9a\x18LD\xd2N\xed\"\x11FWs\xb6*\xf8WX\xfc\x95\x14\x7fe-[_G\xca\xe4\xac5\xa5\xef\xae2I\xb9\xa3\xb5|\x17M\xd7vv)\x16eq4\x8c\x12LB:\x99\x03\xf6\xda\x8c\x1emm\x19\xb3\xcbj2\xdb\x9a\x9b\xd5\x9a\xdc\x94&:R\xd7\xef\xf7\xb4\xa8~\xfb\xfe\xf7\x1a\\g\xf7\xeb[#\x17\xf7\xebD:\xe4\xf7\x1f\xd4\xf7L&\xee\x0f|\x1d\xb5\x9e4\x97\xafbT9>\x9e\x864<>\x16\xd9F\x9bX\xa9h\xf1\x84\x14[\x83\x0c\xbb&\x9a\x1aTQP\xb9]\x14\x82M\xaa\xf7yQ\xc4\xbcz\x933\xc4a\xf5f\x86ofUB4\xe9\xb6:\xb7\x1f\xe8\x97\xe7\xce\x83\x96\xe3\x18\xa8\xc8\xcb\xc1Co\x1b\x8e\xeb\xca\xe6\x15\xc6\x0eOT\xe6\x04R\x9c\x80\xf2\xd1V\xc4\xb8\xab\x9b7\xd9\x1f\xb1\x8fJay8\xc6\xec\xaf\x98\x1dA\x95\xfe(\xeb\xf2\xca'\xfe\xed\x07\xb7\xb5\xb3\x1e|_G>\x81\x94\x0f\xeei\x90r\xd0\xc4\xc7\xbd6\xd2!k\xb9pG\xe1\x99\x0e\x15\x17\x98\xb5\xf8&\xe4\xcd\x03\x17\x0b\xb2\xca\xb2\x8c\x8d\xa7s\xc4H\x9dY\x8a\x11\xa8\x15\x03\xe4\x1c\x81\xec-\xd8?sx\x0c+;]F\x9d!\x0f\xd0\xf5\x9b-bAK\xfeX\xa9-6\xc5%n\xb6u\x06C\xd8\x194G\xbd\xe62t\xe3\xfe\xa9\x00C\x08\x07|'\x82\xf4\x8e\xae\xb6\x8dy\x01fx\xfc#\xa9\x0f\x80\xff \xbc\x06\xe8\xf6\xf6\x19<\x82\x956\x11\x00\x1b\xd6\x92\x81ttf\xe0n\x8e\xb1(\xcc\x99\xc6Q\x9c\x01 \xf3\xb1\x89\x13\x18\xc2\x02\x0e \xf3\x8e\x03X\x06p\xc6\x03\x91py\xf7!\xf3\x96\x01\x1c\xe3]\xbe\xfa3\x0d?SK\xe2{b\x92\xae\xd9{'>0\x018\x8aM)\x0b\x10\xa2\x03\xfd\xb3\x93\x94\x84\x9f\x1bO\x9a\xe7\n\xeb\xe8\xd46\n\xb6e;\xd8\x0c\xf0\x93\xc4;\xc5\xd7n\xde\x04oY\xe6\x8c\x9e0\x08Q\xb9-f~\x89K\xa7<\x16\xdf\x18\xdel\xeb\xd1\x06\x050B\x02\xb4\xd0\xb8\x04\xb2\xc8\x08Nb\x89\x0bt\x8c\xfbh\"\x96\xb6\x18\xb8a8\xdf\xba \xda\x13y&N\x10t\xba-~0\xfc_\xff\x9f\xea\x876n\xc8H\xa5\xeas\xa9\xd4_\xdb\x11 /%\x11\xa7\x98&o\xbf\xa0Ml\xdb\xc5\xf0\x08\xd2\x87\xcd\x95C\xd3\xb8GG\xf1\x18\x01\xa7r\x86\xbbZ\xfeOI\xef\xd4\x91\xcc\xdf\x19\xd4y\x83\xe2pkRyQ\x91\xa98^\x9b\xf4\x1e%\x19\xa5\\S\x93\xfc\xa3*\x08\x9f\x1de\x87q\xbe\xe4\x8a\x9f&{\x92\xda\xad\x1db\xe2\x85\xb8VE\x06\xcf\xf7\x85 \xde\xae\xec\x13\xad0\xe6\x9bak.X\xcc\x00z\xec\x0fBz\xfc\xc4\x0d\x9b\xf7\xab\xfd\xe9\x8f\xb4\xcce),\x99\xf2\x15\x06Qch\x10\xeb4\x18h\x9e%m*\x97-\xd2\x8f\x93)aB3\xdek6\x81\xab\x89\xa2w\xb3\x1d\xca\x8d\xd4\xac\x1dZiG\xa3sbk\x9es\xe0\x16\x90A\xc1\xe4\x00\xd2\xfe\x0f\xf9lF\xcaS\xab\xf95\x03\xa3\xc7\x8e\xb7\xb0\x1fe\xb5\xb7Q\x8a\x8d\xccJ\"E\xe2\xa9(\x89\xee\x0f\xfc\xc2X\xdc}\xdf\x1b\x988\xda?''\xabp\xf2\xf9\xe7d\xb1\x9eE\x8b\x05\x0fY\xe9O\xc9*%\x93Z\xedG&O0\x96t\x15\xd29k}4\xc6L\xf1\xf3h1MI,\xbe,~\xb2\xe7e\xb9\xb4)\x99E1\x91\xfb\x0bqr\x91\x84S2\xed\xe9\x14\xab\xa4\xd8a\xfbz\x0e\xa2K\xd1\x19\xda_4\x1e7\x95\xd4\xe6qF\x7f\xc9\x18#\x8716Wk\x08\x83J\x02\x9b\xced\xd4 #\x0c\xea\\t\"\xee\xdf\xd1p\xcb\xb8\xdf\x92~\x94\xb1\xfd4\xe5Q\n\x95\x97\xf8f:\x80\xc8\xcbQ\xe5\xa4\xa7;a\xb7\xb1\xdf\xdd\xbd\xaaZ\x91\xf2\x83\x8d\xd1\x81\xb4]\xb9\xd8\xbe\xb74g\xaa<\xc9\xe5;Z\x87\x17\xa9!\x10\xfa\x05\x91E\x90\x8e\x85;_\xcd\xdf\x84p\x8f\x92H\x16'\xf4\xe2\x9a\xa9\xeb\xf2\xaaX0\xb8_\x97\x818\x16|\x7f\xbf\x15\xc2m\xec\xc4.\xf72\xf0\xb8\x1a\x88\x07\xf1\x17\x9cD\xa1X\xe1\xd2\xe0#H\x1e\xfa<\x85\xe8(\xf2\xc8(\xde\xde\x1e\xfbc\xbdv\x8f\x7f!\x082-h\xebU!\xa0\xd7\xd9\x0d\x1a\xd8.v\xc1^\xfd`\xe3\x8a\x8c;\xdf_\x05^bJii\x18\x8c\xc4{\x07\xc0\x90a\x1f\x12/\xaf\xb8 9M\xae\x97g\x042\x9aF\x13\xaa\xa8\xf6*^X\x0d?\x11\xe9j\x13{\xdf?\xa8\xebF\x94\xe9\x1c7E@&\xbas\x98\xdd\xfb\xbe\xf6\xe5q\xff\x1d \xa7\x8cN\xbe\xa7\xfc@YV_`\x80\xbe\xeb\xf7\x0f\xcfHL\x0f\x97\x11\xa5$mv\x10\xb6\x81Q^%\xd1\x8f2Jb\x92b\xd1M\x8er\x8d\x0ft\x96{\xb1%\xea(\x01\"\xb88\xf6\xee\xef\xfa\x82\x03h\xbe1CA\xfdc\x14\xd3\xfbH\x07\xd9\x9e\xad\x9c\x9f\xcd\x99-85\x1b\xd4\xc0\xb6\xe8G\xf1\x9c\xa4\x11\x15J\xaf\xbb\x1a\xf3\xc0\x8a\xa3\xdd\xdd:\xb1\x06\xa12\xd0 \xd5\xec\xfe\x8am\x9fU\x7fJN\xf2\xd3Er\n\x07\xca\x0f\xaf\x97\xd1\x94\x84\xcb\x9e\x0f\xfbmC\x9f\x06(\xfb\xb3!\xd4w\n\x08\xe1\x88\x81\xb2\x8eK\xe5\xd4\x98X]7\xf9\xb3\x86O\x19\xf7\xd0#i\x9a\xa4=\xc6\xbd.\x92\x8c\xb0?\xa6$\xa3i\xb2f\x7f\xae\xc2\x9c\xdfKI\x96/Iol\x8a\xd6Y\x1a\xd1%\x01\xa1i\x8e\xbd\xbd\x81\xa8a\x81b\xab\xae\xbe\xa0$\x16\x04\xa28\xa3a<a\x1ce\xd2|\x0f\x95\x88\x9c\xf7|\x9dL\x19\xbaomQ\xe5F\xc0S\x0dz\xcd\xf7\xeaw6\x1b\xfc4\x15\xbb\xe7m\xf1\xc4`_\xe1\x91\xf5\xf3\xe8t\xfekHI\xfa:L?\xebU\x1f\xdc\x10#\xdb\xfd\xb1\xfd\x83P3\xba\x03\x18\xdc\x83}\x18\xdc\xbb}\xff\x8e\x01\n\x95\xa1\xc0\x10\xd0\xa3K\xd4\xb8\x12\xbe[\x1c\x16y\xf9 gd/\x87}\x08\x03}#\xe8w=[$I\xea5\x9fK\x17\xe5\x13\xcersE\xef\x99\xb8)\x8aE\x94u\xfdW\xd1\x8adB\xd6Uo=M\xf2\x98*\xef\xcd\x16\xc9y\x14\x9fV\xdf$\xf1\xb4RK\x9d\xdd\xe0\xd4\xabr\x97A\x99\x7f[\xdc\xca\xd6\xf1D)/\xdf\x8f \x99J\x12Yi\x90\xb7\xa6{$\xd7\xee\x15\xd2\xb8Z\xfb|C\xbc\x9f\xcc\xc94_TG#\xf6O\xfd\xe6,\xcc\x17\xf40\x9e$b\xa8\xb4qo\xb3\x81^Ng\xf7{\xe2\x9b\xf0<\x8c\xe8\xb3\x94G\x83\xeeV\xe7\xfa:II\xb5\xfdI2%i\x1d|Eo\xe2ny\x8b\xa1\xc4\x14\xc5\x89)\xa7 \x0f\x06~\x9f\xdbo\x9e\xf1\xb6\xfcf\xd3\xe4\x1c\xa6^\xd9\x88\xdf\xecGyX\xc1WS\xec\xd3\xb1^\xf8\x16e\xd1*\x94c\x0bqQ\xa5\x0c\xc7~%\xc3\xf9\xb1\xd6\x9f\x96\x9b%\xd2\xda\xf1\xc8\xdeG\xa2\xc5\x1e\xfb\xb5\x15\x97\x88\x83@2d\xe9c\xef\x964\x06\xdb/v\xbc\x1f\x98r\xfb \xdcP>\x94w\x86\xe5S\xdf\x0f \x13j\x85F\xb6?\x13 OJ\xe5\xb8)\xdaS\xe1!h\x0d\"M\xb0 \xdd\x147i{ym\x8f9q \xa8\xaa\xe2{X\xae\x93^\x89\xc7_\x14xfSJ\x9e\x15\xc5\xdd\xc4\xcb\xacu[*\x15\xce\xc3J\xaa\xc4\xa0N\x04\xdd\xe2\xaa\xd1\xd8\x0f\n\x9d?l\xb3\x86\xab\xd4\x17\xf6\x8b\xaf\x0dJT\xed]RR\xae\xdd\x00\x0e\xb5\x86I\x06\xba\x1c\xeb,zH\xb3\x11\xdf\x9d\xe0\x8aP\xd0\xcf9\xe5Uy&\x85F\xc4KQ\x15\x92\xaa\xdbf\x86\x94\xa6\x19}I\x94\xb8\x83a!\x0c\xd5NK\xcc\x12\\u\xaa\xe8\x1d\xc5g\xe1\"\x9aB\x9c\xc4;\xbc\xd9[\xe2p\x98\xcc\xf3\xf8s\xcf\xb7\xc5\xd3\x18&\"\xb6\xb5\x06n9: \x06\\*A\x02\xee\x15\\L\xc2\xe0\x99\xd7\x86,\x1c\x89\xc4*?\xc6\xc8\x1f\xcf4\xff\xfa\xc7e\xa5\xf9\x9f\xa5j\xf3\xed\xcc#<]\xb1bND\xd8\x10\xa7\xe4#bn\x13\x0c%\xd7\xe3\x06N0e\xa7\xb4z\xe45\xe7\xcb\x16B,\x02\xe7(\xfby\x9c\xcd\xa3\x19\xf5|\x08g\x94\xa4@\xe2)\x10\xc6\xf5\xf7\x10\xd7\xce\x11\xedd:;\x04\x16GU\x97\xb6q\xcb\xc8\x86\x0f\xdf>\xe7M6\x88C^\x1c\x19L\xfa\x8f\x19\xb4 &>\x92\x9b\xf6<\x8d\x84\xae\xbd\x0em!\x85\xcb\xb5:\xa8\x8cw\xc0z{[\xee\x9b\xea3\x9fW\x8fb\xcbP\x1d\x90\x0e\xfb\xea\xaa\x83\xb6\xb5\xda\xa2\x02LH\xb8\xab\xdc\x04n\x92\xa2HV\x8d9,\x99.j\xa4#\x97^\xeeF\xe3\xcf\x15\x1a\xaf\x1b0)\xb8\xa8\x9b7\xe5\x1eVh\xdf\x16\xe1l\xd1\x01\x9b\x02_\xebiHC\xb6\xd4\xa8\xf7b@\xf3v\xf9\x9a:\x12E\x8e\xa4\x05M\x95\xc8\x17\xb36t\x94\xb6\x02\xb8\xff?{\xff\xbe\xdc6\x924\n\xe2\xff\x7fO\x91\xc2o\xc6\x03|\x84h\x92\xba\xd8\xa6M\xeb\x93e\xb9\xc7\xd3\xed\xcbH\xb6\xbb{\xd8\xfa\xa9!\xb2H\xa2\x05\x02l\\(\xab\xc7:\xd1gw\xcf^#\xf6\x01\xf6\x9f=o\xb0O\xb0\xb1\x11\xe7MN\xef\x03\xec+lTV\x15P(T\x01\xa0,\xf7\xec9\xdf\x87\x88nS\xa8B]\xb2\xb2\xb22\xb3\xf2r\xef\x1e\x92F\xc7e\x8bJL\x9a\x16\xfa\xe85\x87\xe7\xd2}C.\xb8\x18\xd4\x9d\x1b\xa9\nU\x17$\x85\x7f\xb8wO\xf7\xba\xe0\xfc\xaaK\xac\x91\x81\xdb\x05\x0c6to\xd7\xf6OO\xf86F\xc3\xe7%\x83\n\xc1\x88\\\x8b\xdf\xe5\n\xe7Y(\xd7\xc9\xffRj\x15u\x1a\x0f3&\x0d vdA@\x11D\xe3\x06.7N\xeb\xb6ix]\x8es\xdf\xc8\xec\x08\xf5P\x19\xd1C\x91\xebN\x1b\xa9\x80.\x02\xd25f\xf1\xa6r\xf3,Hv\\f\xb8\xa9\xc0#\xc8>\xbbl'\x98\x99\xd1qyg\x8eK\x19\xb9\x92SB\xc5\x9fC\x81 \xdfs\x8d'\x0f\x9f\xa3\xd4<\x93 (\x87\xa2z\xc4+]\xf8\xc9[/K\xca.P5]l\xf5\x8b\x94_\n\x86r\xfaT\xd7YBd)\xa9\xd5\x9c\xda\xc91\x95\xcd\xa2\x885\x86z\xb2p\xc3j\x94G_U\xac|\x84\x11<\xdcy\xf8p\xbf\xf7\xd0\xa4/95\xa2n\xae>\x7f2b\xfe\x8dU:N\xf2#\xbb\x87d\xb6B\x9dS\xa6\xf0=(\x1f\x08\xd2\xa9\x9a\x93\xe6\x05\xf1\xa6]z\x08\x88\xb2aQm\x88a%\x80(\x07\x1ac\xa2U\x8dA3!\xcb'\xf6t\x04\x1fQ K\xff\xa5\x9dloSY\xeb\x13\x1d2F\xf7*\xfd5(\xfd\xb5[\xfa\xeba\xf9\xbb}\x17\xd2NG\x9bk\xe0\x86\x9d3\x08U \x0e\xe8!\x92CS\x9e9\xa9h\x0cz\x98\x9f\xb9\xd59}\xac\x87Bn(\xd7H\x8f\xaa\xbd\xf7\xe9\xe9\xa9*+(\xd6/l\x8b\xbe\x16\xef,\xb7XtG\xf7\x0d\x9bI\xce \xb0|\x1f\xef\xfc\xc9\xa5}\xc8#/\x1eV\xdceM\xf3<\xd4\xcf\x93\x0f \xc4$-\xe4.\x18\xc3!\xbf{\xd56\xa0\xcb\x1b\xe3n!%}\x08\xb2\xe0\xaa\x86\x04\x9d\x8e\xf2I\xfe\xa4u`2u\xfc\x93\xb1\xe3\xd2\x05Ln5FY,\xc1z2\x86K\xda\x7f[\xa4\xe0!I\xc10\xea\xf6\xd7\xc2\xb6\x96\xde\xf5\x05\xa1\xab\x86\xf3@\xf5B\xcf\x92\xd94\x17m\xfb\x8a\xce\x9d\xc7Ny0\x0d\xc0\x1a\xa9\x89\xbfL@\xb84\xaer\xae/\xa1\xe0M\xfd\xc9\xa5n\x9c\xad\xfax\xd9\xbc\xc2\x02\xdb\x99\xe6M\xd7\x13\xe2\xbb^1G\xaa\xca\xb4\x1c!Q\xb3\xcd\xd1\xd1\x05u\xc9\xa4\xe5\xdclJ\xaf>\x97\x08 \x8a-l\x8b\x8e\xa7\xb4\xad\x1f\x97\x07\x99\xa7R\xe6\xe3s\x1e+\x02\x8fi\x84\xef\x9a\x0e!\xe5\xe89`]!u\xac0J\xf9\x91\"\xc4\xcf!l\xa5\xec6\xf5i\xa9\x0d\xbb\xa4\xc0\x91\x0f\xa3\x9f\"?\xb4-\xbc\x13\xe9\xf3\x9eyI\xcd\xc1%\x0b\x1a\xdc\x9f\x92\x14>\xb1EQ@\xbc\xd8F\xd9&\xd4X\x94\xd6\xa9Z\x0c\x1a\x8a\x94\xed]\xf5\x00=\x00Lu$\x97H\x91B\\\xb9@[-u\xf2,\xc8\x1c\x06\x9a.\x88\x04\xe5p\x93\xf0\x96\x05\xc5\xa2\xad\xea/\"\xc4\x13Wmt\xd5\x07\xef1qlf\x15\\\n\xdb#\xf0\x8dDI<\x88\xed\x8f\x81\xc5r\xa4\xf4\xa46\xf7\x14\x08uf>\x80\xfa\x81\x82\xb8\x91\x81\xa7\x10\x15p\x8c\x8a\x13\xbf!\xb2\xb2?\x03;c\xd6I\xc5\xe7>\x95\x8e#\x18\xf2\x1f\xe5\x85f\x9b\xc7\xc6\xe9g\xb5\xa6\x96\xe2\xa9\xb4ow:\xb1\xcb\xc1\x81\xab\xbe`Zf\xfefX\xbc!\xdd\xd4\xf3\x03\xae\xe7\xe7\x02\xbc\xa8\xecr\x08A1\xc4\xcc\xa4\x91\x93\x1f\xb3\x85\xa7xn:\x1d}xc0jFA\xb2m\x17\x13\xddFw\xa0\xaam\x0e\x085)q6\x89\xab*p|\xd2\xf5\x82 \x9a\xbc\x0f\x13oF\xdaE\xe1m\xb1+(\xca\xd7\x98\xc5\xc6l\xa7N\xa2\xd55\xaa<p\xf9cy\xfb6n\x01\x8c\xa7\xba\xd9\x16\x88\x7f\xaf-\x10\xf1\x99\xb9\x85R}\x9b2T=\x17\xb2;\xc3y\xdf\xe5\xf3\x97q>\xde\x04\xe7c\x97\x83\xe4\x8b\xe0\xbc\x1eSaS\x9c\xf7k\xc2]\xb8M\xc1\x974\xb9\xee\xf0+~\xde\xb9\xc5 K\x19E\xc3ev\xb9{\x13\x9bp\xf4\xb9\x8c\x0c\xbb\xde\xe1\x13\x7f\n=\xd95\x93)\x98\xffd\x910\x17Ql\xc7\x024\xa5\x9dB\x14\xe2\x9d\x02Y\xae\xd2k`J\xe8?i\xe6Bd%9\x13\x02\xe4\xfb\x17\x89\xfd\x7f\xabMrb\x8c\x1dj\xd6\\)=rU\xa1\x98$\xb3\xd2,_V\xf7\\\xce\xcbVD:\x9b\xce\xdej9\xa6\x93v\"I\x8fk\xbfr\xc9\x84\xd9\x93C\xd8\xe9\xe8/\xb20\x1a\xfa8\xe4vq\xc5\xbd\xaaQY\xb6\xadJ\x0f\xf2_\xb2B'f{\xb2^C\xc0\xa5 \x8b\x9d\x9d)\x8c`\xe5\xc5 y\x19\xa2[J_\x17\"e]\xf2;+\xe1\xa0\x9e\x12b\xa43=z\xf2\xf5\xe3\xca\x0d\x9dQ@N\xdd\x98\xffyE\x93-a\xf8\xa8\"\xd3}\xfa$\xd4\x0c\xc5\x8d5\x9f\xf1\x10*\xe2;k\xc7\xcd?qku@G\xec\x92\x18\x86pl\xf3\xcblJ\x10M\xf3\xe4\x04z$TP\x8e\xd4\x9ac`\xfc\xef\xdd\x13\xbd\x98\xdaF>\x99\xa5\x13-\x83\xc6\x88>\x0b\xdb\xa2\xf5\n%\x01\xe6\x15\x11#$\xd2N\"\xd2IS\x95\x97q\xfc\x0b\xdb\xe2u\x02\x92$\x90.\xbc\x10\xaeh\x8d\xa5\x17_Zl\\\xa8\\\x15`\xc3f\x85hw \xd6\x82\xfe\x11\xe1\x95\x19\xde!\xf8l\xe1\x91\xbf\xe3R\xf94\xc2\x01[\x8e+}_R\xa9pMQ\x05\x80:\x8dRI\xe3\xa8*\xd5\x1c\xb9\xc9\xbe\xab\x08\xc2l\x05C\\A\xbe*lic~\xc4\xf7\xe0 \x17\xf0\x86\xfc\x88<0\xe8\xb5\xd0\x0e\xc7\x91u\x7f\xdb\xa8\xec\xd4\xce\"\x07\xa0aFa\xb1\x95$\x85\x07\xc7\x1f1T\xd4\x8d\xe7\xd7(\xa5\xbb\xa8\xb8\x92w\\Q\x10\x9f\xb7\"(R\xc3\x9a\x0bM\x06q\x07\xfc\x04\xc2(\x05\x7f\xb9\n\xc8\x92\x84)\xa9\xd2a\xe5\x06\xc2_\x91\xd67\x10\xb5\x01\xd5\xa2\xb6\x97\x13\xc9\x95\x8f\xae\xc6\x91d8eb\xad&^B\xa07\xd4\x96\x01:\xe0\x0b{\xac\x1af\x0f\x99 }1\xb6\xdfo\xd3\xfe\x98\xfft!\xad\xc9\x13S\xd3\x15\xbfOi\xec\x8b] 5^wI_0\xd3\xb3\x0e\x95n\xe9\xce\xc7%\xc5 \xa0\xa3?N!Z\xa5\xc9\xe8\x8f?Yn\xa9\xb6\x9e\x1f\xa3\x8b\x8c^([\xcc\x90\xb0\xcf\x15r$\x9c\"YJ\xf9\x1dP\x92N\xa3,U\xde\x908\xa6\x92;\x0c\xe1\\\xb9%\x80\xb2\xc3\xb5\xce\x88X<\x0b\xdb\x8a\xc2,\xa4\x03\xb5\xd8m\x92\x08\x88\xca.\xdf\x99\x1e%\xee.\xbc\xe4=\xd6b7\xd8\xa5\x17\x8c\x06,lk\x12\x10/\xccVB\xa7\xb6\x8c\xd6\xdc\xf6\x8d\xc4vn\x1e:\xd7\x96\xce\xfc\xd0O\x16\x96\x0bKm\xf14\xf6\xfc\xd0r!\xd0\x96\x8a\xfdy\xad-\xe5\xb3saB\x89G\xf5\xe3\x90\x92\xeaYM\xd9\xb9\xb6\x8cS\x9b\xb5\xe3\xa2\x85/\xde\x82E\xb2\x96\x10\xaf\xf5\xcf\xafb?-]\xbcn\xa9/\x91\x08\xe6\x9f\x04\xfa\xa8\xf8\xe6\xf5\x9d\x19\xaf\xa2qm\x913d\x86{\xd3\xc68P\x808^2\x18\x91x_\xe4\x11\xc2n\x14N\x88\x00\x0dZ\xbeu\xa3\xb0\x04e=\x9e\x07\x8d\x14\x174v\x15Mrz;\x01B<|\xb3\xbe \x9fs|\x92\xd5\xba\x8e\xa2\xe5\xc5\xf3\xa7\xf8{{\xbb8\xcf\xca\xb5<J\xc4\x19>8\xfc\x8c+\x8cQ1m\x886~(h\xc1\x7fc\xeb\x84-\x06\xe3b\x17\xe8A\x8cx\xa8\xd1-\xac\xb9+9-3#\xd2\xda\x9c\xab\x171\x89M\xd0\x05\xa1\x12\xe7\xd4*\xcd\xadq(\xfa\xb2\x83\xdd\xees\xa9\\\"\x97\xe8}\xc4\x89\xbb\xf0<.Ux\n}Z\x89\x87_=\xb1\x0b\xfa\xcf\xe3t\xae\x04\x135\xf3\x82\x84\x00v\x0b1IVQ\x98\x10\x17\x84\xady\xa8^\xc0\x96\x96\xb8\xa6\xb4\xd3\xe1\x93C.\xa4\x8b\xedm\xba\x1b\xaf\x1b\x80(H\x15q\\8\xb7\x1b\xa9\x19C8\x86`\xec=;\x17\x14\xc6D\x17L\xb1f\x90s\xe3\xb6j \xcc\xe7Z\nb\xeehYO\x9bx\xdb\x8d\xc7\xc5\xa6\xdd\x9e\xd7u[\x1cva\x97\xfdnw\xf6\x0by\x96\xed\xc4\x9c\xf8k\xbbi{;\x00P T%\x1b\xfb\xaeb\xb2\"\xe1T\x00\xa5\x08P\xae\x96\xb0h\xcd5*\xf4\xee9\x9a\xf0%\x0cy\xf8\x1fcr\x06\x07\x90\xd9\xf2\x0b\xf4n\x92\xfe.[d\x95>\x1d\xc18tK\xaf\xce\xb0\x8a\x08\x1e\xad'x\x12*\x8b\x03\x9b\x1d(e\xfe\x80\xbdS\xb8\x02\x86\xf4\xfc\x9c 1f\xa1 \xb4\xfcn\x0fY\xb1\xe2F.\xe4\xb7y\xb6S\xb9\xd4\xaf\x18\xc1T\x18\xf3Z\x9d\xd5&*\x03\xf3\xda\x17L\xd4P\xbdL\x15\x8f\xc6\xc9\xa5\x90\xc3I\x89\xa3\x17\xd8\xa1\x0d_O?\xea\xd7|T0\x97\xbc\x9c\x07\xccfV\x1cBb\xe4exT\x96\x1d3H\xc5+\xa3t\n\xf6\xb95\xbcX\xc4\x9c]Hy\xc4YnH\xaf\x1f\xf8Vmp\xd2\xb8\x18\x98Y\x83\xedCy\xe6\xfa\xcd\xb2\xe9\xac\xf4\xad\xe4\x8a4\x16\xe7\x1a\"x\x02\xfec\x88:\x1d\x07\xe2qtf\x82A\xad\xc2\xb6b8\x04Z2\xb5\xe61\xdcNlR\x9c\x9f5:8D\x89LZl\xfeY\x97eg\xb03\x17\x9d\x97K\x80\xd8F\xc9\xa7\x8aM\x9c\xf9\x11 \xe4\xbf\xc6\xbd3i\xf7\x9a\x16\xbensF\x95\x1b\xd7:\x899)}Y\xb8Ap\xc3\x0d=\x861\x8a\xce8\x13'gm\xcc\x06h\xb9\xeaA\x10\x18\x8dRY\x84,)lVD\xfb\xf5\xb8\xdcJ\xa8\x07\xbc+*+\x91c\x8d\xcb\x11\xdd\xb9\xba\xf7\xecB\xa4\xa2\xc9\x89\x0d\x0eM\xb1\xa4\xec\x8a%}\xceq\xae<\x94\x04\x85K\xbe\xa6\x9b\x1c\xabu\xeb\xefM\xf3\x93\x0eF\nf\xb8\x8a\xaa\x18m;Z\xc4cL\xdb\x02:?s\x95\xa3\xa68eR\x85\xddo\xc4T\xe0f)eC\x13a|T1?)\xdf@\xbc4GP.\xa2\x9c\xeb\xec\x0c\x15=\x14\xe5n\x9b\x00U\xa8Z\xe9.b\x1c6\xf0\xc92\x1dG\xcd\x16q\xdc\x96\xfb\x08\x0fnd\xde\x0d\x16\x94\xca9R(\xe6\xf8W-\xa6{\x15{\xab\x8dN\xf7\x9a\x1b\x80\xb6g\x7fl8\"\xf2\xe3\xc1\x07?\xe4\xa2\x1d\xd7B4\x89\xbd\x94\x9c,l\x8b\xcefE\xa6\xc0\x85\xfb\xb0\xec/!t\xf1\xf5\x92s\xca,\x1f\xda\xb9A\xf1\xb3[\xbe>0i\xcd\xc0x\x8dI$S\xed*\xf2\xe6\x9a\x04\xce[\xe7\xb00&\x1e\x94!!\x84\xd3\x12(l\xbf4G&\xa7\xfa\x14]\xb6B\xc5o$W*\xa3\xa6^\xb2\xde\xf7\x99Ho\xab\x1f`=a\x95\"\xc4~\x9c\x9f\xef0\xa2+t\xe3\xb9 \xa9\xdb\xb2\x0e\xdaLJ>S\x14\xbb\xc6\xfe\x19\x94\xe3\xd2JR\x01/\xb4EE \xa9\x9b\xdc\xed\x1b\xd1K\xaa\x9bR\xe6\x9f\x87\x81\xadM\xe5\x07\x065\x86\xaf\xbb.\xd7qF\xf3\xfc\x8a\x11\x19$D\x82\xf98:\x93vz\xf7\xc2\x0f\xa7\x9c\xba\xd1\xa2\x1a\x8f\x9cT\xf6\xa6l\x86\x8c\x84B\xe7\xfc\xfe\x908\xc2\xfb;\x16\x14\xa7\x10#\xaa\x13\xd5\xd3\x9e6\xee&\x82\x84\x94|\xbb\x9b\xa3\xd8hL\xaa6rM\xd1Q\xd8\xd2\xc5Qu\x8e\xe5\xd9\xa1\xdf\xc7\xf9,\x8e\x96\xf4T\x86\x11\xbc\xfb\xa7\xa2\xac\x1c1\xdb\xc50\xd8\xed\x02g\x97bpW\xa3M\xb4iB\x1fNc]\x84\xbaz\xa4\x8dI\xeakO\xea\x1a%\xcb\x8dv\xd0\xe5\xcf\xb9\x1bK\x0b\xbb\xa3[_\xf5@\x93\x1bQMd\x01\xfc\xac\xa2\x9c\xd6\xbc.Z3\xee9t\xb2\xce\x98\x9b\xde\x01\xfa\xe0\x14\xc6\x9b\xed\xfbA8\x97\xb8\xd9\x9c\xe7\xf1\x85\xb8 |,\xd0Z\xc7\x00\x91F\xcf&\xe9\xde\xb420\xbb\x16\x02\xe5\x8f\xf9k;\x8f(\xee\xb6Ppo\xf1$\\\x07\x94-\x97'\x18\xb2\xd9\x85\xbaA\xa9/\xcb\xb0\xc2A\xe1\xed+\x9e\xccZu\x96A\xcc*\xfd\x99;d5\xd0\x92[\xc3\xbd\xafg\xef\xe2j\xf4\x85\x8a\x0b\xcd\xb4\xb6\x05%\xaa\xc3\xe7,o_\xfb\xadf\x04\x95ru\n\xe5\nL\x95U\xdf\x86\xb2\xa8\xaaO\x95B~>?\xf6\x9f\xec\xa4\xc8\xb0\x12#H\x84\xec\xd4\x9a\xca\xe1\xf0\x13\x12\xcch\x15\xfc\xf7\xd3'\xb8\xf2\xc3itU\xa5/\xbe>\xb272\x12&_&}\x00\x7f\xc81\xcd\x9f\x16\xaeS\xdds4\xc4~\x816\xc8\x06\xf0\x00\xf2\x9a I\xdf\xf9K\x12eiK)'$W\x10\xd9>;\xc0\x8a\xaf1\x1cB\xc1\xff\xb8\x80\x03\xe0\x85\x15\xb5\x05\xf6\xfb2LI\xbc\xf6\x82[v,>\xd7\xf7,J5]\xcb#C\xfdK\xe9\x83F\xf1\x873\xf9\xa8\x88\xad&\x96\x8fJ\xda\xd2\x98\xcc\x94\xec/\xec\x8d<_\xe5#l\xb7 $\xa55f\x10\x89\xdd\x1c\x0f4s&a\x1c\x05A\x1b\xfd\x90\x0c\x1d;\xa5\xcd\x05\x84\xff\xf9r\x8a\xd2\x87\xfc\xaa\x8a_\xb4\xb7,\xd4\xf4w'\x9d\xa9\xd6p\xb4\xb7s\x84\xf3\xe1$\xf5\xd7\xe8'\xda\xf5\xc4\xcf\xcf\xe9\\\x7f?\xc8/R\xa5\xaa\x1a\x8dV\x91bQm\x15FPl\x99\xe6\\ri\xf7<\n\xc5\xe4\xd9\x9dD\xfe\xb7\xee\xb2G\xe3q\xe5bD\xab}G\xec\xb9\xe5\x92L}\x16\x9b\xa5\x99\x84\x95\xbfP\xb2e\xb2\x01\xa95(\x0e\xe6\xac\x8b\\\x98\xef\xbc\x0d\x87\xa0|\xa3\x1dD\xb5Ni\x18\xe5\xe2\xe2|\xb8M\xde\x9a&\xde\xd9\x14P\xcdGU\xa2\x9f\xc8Q\x88\xea\xd1S\xd8#\xe1\x8d\x82eA\x07R~\xab\x99F\xdfDW,W\x8em\xb4\xfeF\x13\"kA>Zz\xd3\x1eV\x8eq\x90\x1a*l\xd7\xd7\xf0\x92\x89\xef\xd7\xd6\xb8\xf0C/\xbe\xae\xaf\xe2%d\x7f\xb7~$\x93d\xd0Ta\xbb\xa1F:\xeb\xef\x07\xa4\xa9\xcevc\xa5\xd8\xbb2\x94\x83\xe4\x9fm\xc8+\xd9hq\x95\xfbwWwxys\x1b\xf2\xfc\xe8\x18\x19Ee+\x90\x0b\xf7\x07i\xeb\x07.(`3\xff.\xae\xa3\xf8T\x18\x9e5\\\x03\x91\xc7\x8f\x9db`u\xca\x97F\xdc\x85V\xf8+\x9e\x16\x83\x846h\x08\xadP\x11Z\xa2#\xb4EI\xf1H\xd3\xc0\xdaM3 \xbc\xd4\x0f\xfb\x8d\xbd\xd7\xee^\xf1\x88\xbey\x9bM]\xd7nwhEZ\xa0\x05\x8d\x13\x8fP\xe9\x98\x87\xd5\xb8'A8X\xd4\x87\xd8\x12\x0f\xa5\xd96'\xdaez\xcdbQl\xf5\xb4\x9f\xeb4\x84\xba{I\xbc/\x13\xd12\xb6\xca\xc1\xc5\xed\xd213\x1a\xf1X\x85,\xbdQ\xd5'\xc4z\x1f^\x86\xd1U\x08\x82\n\x0c\x81\x0d\xdb\xa8\xc7`\x07l\x99\x12\x15a\x1d\xf2\xb8t:\x8e\xab\x05\xdac#)\xf9(\x92\xc6\xb06)\xe74a\xa0\xd3Dh\x04\xb3\x89k#\xa9\xc0\x0ef~\x10|\xe3\xa1\x96\xce\xbb}/\xb5X-\xcfkV\x9aW\xc0z\xdc\xd9\xa8\xc7Z\x84\x95U\x98\xcc\xfek\x04+\x96f\xdc\x96:^\x98$g\x10\xe3\x0d\xbc$}MP\xce\x16\x81\x11\xe9\xabwQ\x8a\x82\x92\xfc\xeeh\xe11\x8f:\xd9\x1b\xb0\xa4\x0c\xcc\x7f\xe6gUV\x13\xd6\xfa\xc9\x08\xfa\x83\x07\"c\x03<}\n{0\x1a\xc1>\x1c\xc0@\xbc\xd9\xa5o\xfa\xbbp\x00;\xe2\xd5\x0e}\xb5\xd3\x83\x03\xd8\x15\xaf\xf6\xe9\xab\x01\x1c\xc0v\x1f\x86\xb0=\xa8\x1d\x92g8>\x852\xb0\x98\xfev\x19DU!\x7f\x13\x07h\xb4;\x19<\xa4{\xd9\xee?\x1a\xc0=L\x0f\xebH\xb6L\xe5\xa5\xb0\xfe\x9f\xff\xeb\xff4PY\xf40*\xaas{A\xc91\xac_w\xb4\xea\x06\xd27\x0d\xa4_;\x10\xd0\x0df\xa0\x0c\x06\xffV;\x1c\x98:\x1c\xf0\x0e\xdb\x13O\xae\x0f}\xacC2I\x90\x08\xd1\xbd~\xa8`\xfd\x13\xc9\xd7\x0c\xa3y\xa1Wf \xe5qY\xe5}@?t\x94}\x91\xa7l+\xf3[nuS\xb1\xa8`\xb5\x1d\x89\xcb4y?\xe7#\xde\x96\x02\xa0\xd5\xef\xbdD\xab\x01\xa0\xebe\xa7\x85'\x10q0!\xf9\x08\x1dWjt\xf2\xc5\x0cs\xf2n\xb6\"\xa9\x0f\x03\x80\x97\x91\x93\x85\x17\x1fESr\x98\xda\x92\x07\xac\x1aWZ<\xb4\xd1\x98J\xdd{{\x83G\xfb\x80f\xf9OF\xb0\xb7\xbf\xd3\x7fT2\xf8Rp\xa9B\xd0v\x95\x85\xe3)\x9a\xc7\x12D\x06gj\x9d~\xa5N\xff\xcc\x85\xb0pS\xd7\xe6\xd9\xae\xbc\xd1\x9bxh\x89\xa32\x93\xbef&\x83\xe6\x99\xf41\xe5\x85v\xe1\n4C\xa8\xd7\"R]\xaa:\x90\xef\xc3\x0f\xa4\x03\x89]~X\n\xe5@jQ\xdaH\x0d\xf7@fr\\\xc3\xbdtL\x9bS\x82@\xaf\x1a\x0eL\xb7\x12\xa4\x1623\xed\x16\x13\xe3\xafl\xb3\x1d-\x91\xeaq_\x93\x83\xd2ZqV\x83\xbb\x9d\xd9*F\xec\xc06\xde\x94\xa8X\xb1#\xec\xd1B\xb1\x1a\xb5\xf8Qj\xfa\xb3\xf6\x83\xe3\x1a\x86_\xc2\xb4\xb0\x81f\x05w\x87j\xda\xadtP\x8b\x1d\xf9\xa0{.\x02X\xc1\xd4a\x036\xac\xcc\xcc\x8e\xe1|\xa8\x07\xc6\xa2\x86yj\x82\x85\xd4\xb0\xf8E\xca\xd1\xdcX\xc6\xc7\xa8d\x1b\xe4\xa7\xf5\xc2\x7faq\x9b\x9fA\xb9`\xa8\x80\x1f\x97\xcdU\xdd\x9e[\xed\x7f\xbfHB\x87\x9e\x989k&\x98x&\xe7\x18:\x06\xd9<It\xe3V\xb9\xdd\xf2\xdegV\x8a\xe8\xf0\xadE\xa3\x10#\x92\xe6\x00'2&Q\x9e\x9f\x12\x82\xd0\x11\xfcE\xe9\x0dJS\xf2\x8a\x94\xa1\xce8\xf5\xfaK\xaa;\xc6\x7f\xe4\xb0\xca\xe8\\\x1e\x93\x90b\xea\xae\x12\xd6j\xc6\xe7\x1a\x06\xb8\xb0N.(\x86\x9es\x88\xe1 mB\x90\xc6j\xa55\xcf\x1d\x90\xd9d\x1c\x9f\x19\xf8\x0f\x1f\x15\xf4y3>\xba\xf12u\xbd\x84\x02>\x1e}\xae\x9a\xdeJ4\xb2\xbd\x8d\x83\xa1\xab\xb7=`bv\xdd\xc0\x90\xb1\x92F\xe6\xb4\x1e\xc3\xe0\xf7\x1f\x03o\x0bC\xef\x8cD\xca\xbc\xf2\xa8v\xf4\xa3\x12\x9d\x97\xb7\x8f\xd9\xb0\x98\xe9 \xcb[\xbeJ\x15E\xb8~\xf5\xeb\xca\xf9\x16V\xa9\x8c\x1c\x9e\x01\xb6\xc1\x0e+\x94[\xbf1\xb4,x\x8f\xf9M\xeb\x86FKL\x1bFR/\xd4S\xcf\xf2v|\xa2!\xa4\xfaq\xd5\xf3Bw*\xa0(+p\xeb\xe1\x14bLy\xd2\x92\x04\xa3\x9cR\xb7\xba\x99)e?/^\x17\x176\x035y\x1f\xcfq\xae\xcf\xcb\xac\xd1\xae#\n#\x04J\xd9T\xca9\x13\xa2j\xda\xf0\x92\xc9}n\x8b\x91\xc6^\x98\xcc\xa2x\xc9\x8c1tn1\x18\x17\xfc\x9d\xa8\xd7\xc2r\nT\xaeY\xe9E/T\x85\xdd\xbcV\xbd\x1fG!\xb5\xe1y3\xb90\x0bi[qY\x1c3\x06\x0e`\xcc\x06\x85\xd0\x857\xb9\x14qj\x96Y\x90\xfa\xab\x80@\xea/Ib\x8cw/\x06\xb2\xc8\xc2\xcb\xdcG%\x1f]\xf1\x86\xa7\xec*L\xadx\x1aWW\x93O[<\xe2\x80apl\xe1}\xe0+\x86;\xb6_ k.\xecc\xe1 \xf8\x9a\xa8\x1bEW\xb6Z\\\xe9\xf1\xa6\xb0\x01\xd58\xdd\xd1\x8e%\xc4\xd1\xd9H\xcak\xae\xaf\xc1\xc1\xc8\x82]\x98\x8a)\xe8kk\x14\xdafZ\xa9|\\\xe8\xad\x97t\x0154\xd5\xa4P\x1e\xb5\x89E\xf2\x89J\x06O\xc5\xbb\x91\\\xc3\x9cgd\x16d\xc9Bj\x80\xfd=\x12%\xc2\xe4\x1e\x0d\xb6W1\xc9\x1d\xf5\xb2&\xbd\xa8\x8e\x9d\x12\xbe\x18e<\xd3\x8fL\x1a\xcd\x81\xfcW)g\x9a\x96\x19\xf3r\xdaZ^\x14\xcaDz\x9c\\\x15\xfb\xa7~\x1e\x9e\x89\xeb+\xdd\xa4hLH\xabLB)\xb1`Z\xc4\xba\xaf\x84 \x10\xe7e\xe5\x9e\xe3\xc8\x0b\x02\xba\x0d\x8bE\x9eF!\x81\xab\x05 \xe1*\xcf\xa8\xb45\x82\x9e\xa5\xe9?U\x89f\x89:n\xd8]\x92\xfaAP\xdajj\x979d4\xbe\x00\x85\xcc\xe6W\xf2\xaa\xb9\xd2;;b\xdcJ\xb4adw\x99@\xab\x93.Q\x90\xdc\xe9\xa9\xdc~\xc5\x97\xac\x18yy0\xa5\xfd\xd6$(T\x00\\|m\x080c\xec\xb6*\xc9\xea\xbb,{\x9a\xd5\x9d\x99(\x9b\xc8\x07\x0c\x85J\xe9\x10J\xf37\xd2m;qa+V\x10I/\x1e\xb5>r\xecXY#<_\xbe\xd0\x89sc\x04\xb1\xeaYP\x7f\xa9R\x0b\xdb\xdc\xe7\x84\xc8\x10\xc5[\x04\x01p\x16B\xb8\xc4\xae`\x0c&\x95\x81\xe9U\xb8,[n\xd4\x15M\x16\xfc/\xe9\x96\xb9-f@\\\xdd\x06=#$Z\xe6i\x90\xf93\x95Q\xac\xb6\xa6l\xb1z{\x0c\x96{=\xe4D\x969\x90\xab\xc4]!.\xb7b\xb5%\x9eZ\x97\x89\x17sH\xcaBQ\x14\x1f{\x93E\xb9\xa2\x94\xe2|\x12\x93\x12.\xb4K\x8b+\xf0*bDSKU\xb9\x0din3\xda\x04@Lgz\xef\xde\x06\x8c\xb6\x9e\x15DK\x97\x10\xbd\xd9\x1c \x18\x04\x10\xd2qxV\xa9|c\xf3\xb4\xb8\x18\xc9X]+\xb7\xa4h\x84\xdb.\x97\x16\x9e\x0e\xfc\xfd3\x9a\x940`\xc7iZ93\xcd\xf5\xf5\xab\x96\xbc\xf6^\xdb\x98X\x16\x95\x18\x84\xa9/\xf0\xe2\xee\xde=\xae\xad\xd8\xc6\xc4\x0c>\x86\xb6\x1e\xe6\x8e\x95x#\xd4\x9c\x1d\xb9\xd5\x1c\xcb\xfe7\xbb\x0f\x06\x8eM\x87\xc4\x91\xd6K\x12\x7f\x1e\xc2\x10\x8bv>\xd7\xa2\xd0\x05\xdf\xc5Tr.x.\xcf\xe6:P\x13\xa4N\x9aH\x0b\xe8\xee+\xe8#\xe7\xcc\x8f\xaf\x95\xaf\xf4\xaeY\x13\x17x\x08@\xad\x07\xd6$\ng\xfe<\xab\xc9$.\x985\xbdl\xd1\xe4\xc1\xb5\xf6\x82\x8c\x0cA1\x02\x96\xd6\x15&^n>V\x9cN\xec\xcec\"]\xe5\xc6\x15\xc9\xba~\xe8\xe6a\x97\x87\\\x8c\x84\xc55\xd4B\xd1\xdd8\xa12\xa5h J\xa6\xb9*k\xc4s\x06\xa60\xa4\x87>B\x86\xb1\x14\xe8\xa7U\xacR,_\xaa\xe0m\x11\xcfn\xfc\xe8\xa1\xe3b:\xd4\xf1\x19\xcbl\xdd@U]\x9d\x02\x9cr>\xde8=\xcb\x99y\xfaG\xb9\n\x92=\x82\xfd<\x86t{\xfb\xb1#|\\-\xcf\x82\x0e\xd8\x9dN\xe8\x14\x1a\xa8\x9d}U\xae\x97\xf4(\xc2i\xc2\xb6f!K\x98\x8bE\xb9\xc4a\xd3\x06 \x0fq\xef\x82\xe5@\x87\xfe\xef\xef\xa2\x8dY(\xbc5\xf1\xec,\xdc\x06\x1e\xc3\xcd\xe32\xcb\xd8z\x8d4\x14\x1f\xe5\x1b\xc3\x9a\x15b\x8f\xc2\xe7\xe0\xa9E\x9c\x8a\xea\xa1\xba7\xe9\x93\xd9\xe8\nU\xde z\xf4\x07\xdd\xed\xf2\xcd\xe7\x12'&r\xe8\xb2\xad\xeb\x91\xbeTM:\xe7\xe7$}s\x15\x8aj\xcfI2\x89\xfdU\x1a)\xf6\xd3\x99\xe9\x83\xd7\xdeR\x0dh\xe2\x99\xea\x9e^//\xa2 iq2i\xd7\x98\x91`~4\xc76Q\xf1\x14\xe5D\xb9\x06\x86\x18\xc8\xec\xc4\x11\xccN!~kC\x0d\xeaW\x1a\x9b\xb6\x99\x87M\xc4\xc2\x14j\x14?\xf2\xd2k\x9b@\xee\xb2\xfa]\x19\x81L\xaa\x0e\x0f0\x82\xdb\x7fY3\x91\xed{r ]/g\xffS\xb9\x95\xcf\xdc\x15}\x1d\xff\x1b\xda\x0fUUs\xa4w\x03\xa3\xdc\xe9mq\x94\x9ek\x9a,xt\xfb\xe4\xc4n<8\xd3B!Fj\x85\x0b$w\xc4\xd8\x10O\xb7\x1a\xe18>C\x07'\xe1H\x91\xa1<\"\xbe\xa8\xacH\xd8\x00g\xb9\x8fv\xfc>\x1f\xfa\xd6\x16W\xf6\xb1\xf0\x03\xe5\x14r\x9f>\x19\xb4d\xc8\xd5\x9b\xf4\x83\x0b\xd24\xdaVX\xa1\xe7\xa3\x88\x0b\xd6\xf99I^E\xd3\x0c\x0dN\xd4\xa5D>G\x16+Yt!/N\xc8\xf7\xde28BnE\x93\x16\x7f]D\x88\x0e\xed\xbdAO\x83q\xc8\xfc\xb0\x80\x0dq\xb7\x18\x04\x1c@\x0cC\xcd\"\x0bSS5\\p\xd1\xa9n`\xb5\xa8\xaa'\x0f|-#\x91\xe3\xaf\x9bx3\xf2M\xe4M+ \xacjID\xce3\xb1\xd0\xc8q|\x88\x03I\xba!\xb9zG\x89@x\x1c\xc7v\xa1IB*\xad\x1c\x97\x1bz\x916\x11\x84\x9d\x87\x06q\x88\x8e\"\xb6\xcbs\xf0\xc3I\x90M\xc9\x10\xc6\xa1=\xe8\xed8g\x12\x12\xfcC\x07\xd3\x1f\x0c\x9c3\x85\xb0-W\x81?\xf1S,\xdf\x1b<\xc0P\x06{\x83\x87\xfc\xdfG\xec\xdf\x9d\xde\x1dM\xe2N7S\x10y\xcc[\x99t\xdf\xbd\xf9\xea\xabo\x8e\xcf\x8f\xde\xbc~\xf1\xf2\xabS|\xf5\xfe\xed\xf3\xc3w\xf2\xab\xda\x9d6\xe8\xed\xfdN;-[M\xbd\xaa\xf6\xd2@\x165\x07\xf3\xf5\x8a\x0c!\xab\x9e\x10+\xef\x9a\x02d\x08v\xcf-\xb6\xa0c\xff\xfdF\xd5\xe2\x02(\x9a?\xd2M\xa3\xf9<\xa87\x0ej\x18\x91&\xabJ>\xa2\xd4\xd4uy12\xfd\xbaYL\xb2K\xce\x19\xe4\xac*\xaf\xa8Y\xff\xfc#63K^\x81\x1cod\xad\x89n\xaeU\xad\n|\x1eA!2\x12\x8dJ\x0ef%l\xec\xef\xa9\x0c\xc8\x97\xc2F^\xa7\x85b'\xa7\xca~\xc8\xe2:\x94\xd1\x8c}U\x1d\x04\xdf\xbca\x83\xae@\xa3i\xd8H\x17\xa1\x18\xac\xa0\xa9\x16\x8b\xde\x19\xba\x9br\x87\x94\x1a<p\\ES4x\xd8\xfb\x0c\xc2W^\xde\x92vM\xb6\x85\xdbd\x895\xcb{\xe3\xe4G\xef\xdb8Z\xfa \x9e\xa1\xa1=\x18\x0c\x1c\x17\x98|.\xa7\x90M\xbd8M\xbe\xf5Y\xfe\x88\xd0\x1e\xec\xf5[M1\xb4\x1f\xee\xe1\xc1\xf0h\xbf\n\xa6\xc1g\x83\x89\x9bu\xa8\xac\x0f'\xd4}\x1d\x13\x1e\xda;\x8f\x9c\xaa\xc0I\xa7d:+\xed\xfe`\xcf\xb1Q\xa9\xed\x82\x85\xffZ\x0dA\xed\xf8\xdd\x03\x1a`\x15\x16\x1f\xbe\xe4Hs~Yr\xa8\xbf\xa9\x89u\xb6.E\xe7K5\xfb#/\xbc\xac\x16\x16\xa6 ~\xa7\xa3\x15\x06X`\x9a\x10\x9e*>\x10\xf9\x1c\x18\xdeQy\xa1\x8f\xb7\">\xdd\xd1\xd6%\xb9N\x90\x91&\xdc\xa3\xc2\xc2\x1d\\\xbc\xc3\xe47C\x16\x14w\x1c\x9e\x9d\x95t.\xa22\xdeZ\x1e\ny\x05%\x0c\x0e\xe9\xd8f]\xa0\x91\x86T\x1d\xc3\xd0\xa7\xb1O\xff\xd2\xe2O\xa3haT}7~\xb9\xd1\x01\xcc \x9a&\x18\xde4\n))\xda2\x1ew\xb7\x1c\x9d:4\xbf\x1cJyK\x96\x87\x98\x90\xfc\xeezE8o\x0c\x1d\xb0\xc4\xed\xaa\x977\xbae\xba\xafn\x18\xec\x86\x9b\xf8\x91~\x0f\xef\xedj\xb7\xf0#\x95\x05\xcbP\x18.\x1a\x0e\xed\xc1\xbecg\x94\xf2\xec;\xb6\xe5\xa7$\xf6\xd2(\xa6\xe8\xd3t\x94\xa7r\xf0\xb2\x1b\xa7F;\xa8\xbb\xba.h&\x8c \xa6#\xa8\xe2EH>\xa6t\x13i\x12\x91\xd3\xdd\x80m\xe3b\xbc\xcc\x87\xbd\x19\xb0%\xf5\x84\n?N\x1a\x1fh\xc1\xba\xdb3\x93\xc0=\xe9\xea\xa3\xc4\x94\xfb$i\xca%\xe8W\x14\x9dEf-\x17\xd7.B}\x04\xe5\xd02N\x81\x98\x06\xae\xf7\x18<x\n\xc9c\x07\xe2.:YPr\x96\x8d\x93N\xe7\xcc\xc5\x8b\xb5;\xc1N\xe90Q1K\x9c%\xaa\xf63\xe2\xef\x1f4\xde~5\xb1\x8c\x04C]e:\xf9\x96\x8e\x8b_\x07\xa1\xc6\xa6R\x01\xf8\xad\x90o'\xb9\x95\xa5\xb6\x12\x06\xa7\xa1\xe8\xa8\xcbF\xc1\xb4\x99\xf4\xfcG\xbb\x1b\xddH\x00\xf2l\x8a\x13x\n\xb3\xc7Um\x9ex\xd0\xf6\x98.e2\x9eu:g\x0em\xd3\xcbU\xe1\x1awhfs\xdf\xdc%\xccL\xa9\xd6@t\x8b'\xd9\x8c2\x9e \xb2F\xc9x\xc6\xf2\xaf\x85R`o\xac\xf2\xe9\x13E\xae\xe2\x04\xc4D\x0b\xe5\xcdx[\x1cz\xa4\xb33}\xe5\xa5\x8b\xee\xd2\x0fo\x89-\"\x01\x95\x8f\xbaf\x17\x1e\xf5z\x0f\xfa\x8f\x1e\x0d\xf6v\x1f\xec\xf6\x1e=\xc2\x9cZ\xbd/0`\xefc\x15\xed\xdbN\xc5|V\xa2\xee\x1c\xd51\xf0\x84O\x8b\x1e?\xc4eI\xb3x\xfc\xab[O\xc7\xe9N\xa3 2\x14\xfa!\xc6\x8ck\x16\x95\x8e\x99!\xd1\x86\x9d\xe8\x8d\x89\x1f\xde\x0d=0\x11\x03~C\x0c#\xce\xa2\xdb\xbeM\x1c\xc3\x96gT#\xac\xa1\x1a\xe6\x04\xaa|L .\xcf\xa7O\x90P\xe6p\x82w\x90\x07`Y0\x14\xb2\xc8\x10\xec\x08[\x92\xdc8\x13\\V\xe6\xa0\xf9\xe9\x13D\xf0\x94\xf9g\xb2\x86:\xe2\x8e\x16\x83\xc2f\x95\x8fi\x05\xd6\xc0\xfe\xce\xa0\xc7\x02)>\x85\xbd\x07;\xbb;\xbc\x7fV\x1f;\xa2\xc8\x82\xce\xdf\xf4-\xf3\xc2L\\\xecd@\xcb2\xd8\xe6\xcdt\xe88\xb7\xf9\xa0\x9e<\x81~\xcf\x81\x0e\xec\xef\xed\xed\xec\xdf\xcd\xa6\xaf\x1c\xa9\xfc\xe0\x18\xf4\x8dg\xea\xc0\xe9\xceI*\x0e\xf9\xe6[Y\xa4\xf3\xeaIjd\xf1H\x03\x8b\x87<\xd1E@L\x0c^l\x13n{\xe4\xdcz'\xf6w\xf4\xd7#\nOV\xa10(\xa4\xb5\x03\xdb+\x92.\xa2z\x034\xc9\x8dl\x0b\xa3\xcd\x0b\x9a:\xf6\xcf0\xc0\xc5\xd8\xfa\x97\x7f\xc9\x87\x83\xaf\xa21\xa5Ng\x9b\xcd\x9b\xae\xf6\x0eJ\xbb\xfd\x1d&\xf5\x0evv\xf9\xbfLM:\xd8ej\xd2\xc1^\xaf\"\x0e\xf7\x1f9B\x14o\xd3Y#C\xad\xc3G\x99E\xf6\xc7\xa1\xddwlK\xdc\xc6\xbf\xf3\xe6\x96s\x06#\xb0~\xc1L\x8d\x1d\xba\xcf\xb7F`\x8d\xd9E\x0b\xfcrf1\x1d\xc1N\xcf\xe1VK\xa5\xe8\xbd\xa2\xa1\xba\xb0\xdd\x1c\xf2y\x9b\x16t\xe89\x80\x01L;`\x9d\x95\x9c\xe3\xb6\xda\xe9\x07d0n\x85\xf6\xee\x80%G\n\xed\xdd\x1d\xc7\x1cx\x8d\x8f\xe4\x01\x9d\xa2^\xd7\x1c\xda\x8f\x1e9\xb65\xf5\xd7Tl\xb0<\xad\x19\xccF\x81\x86\x1fT\n\xd5\x9b\xcc\xaeW\x00\xa0\xd5\xe4%]\xbf\x89\xd0\xd4\xb3\xe6\xe8\xaa\x81'\xb1\xdeV\x813\xe9~\x95\xea\x10\xd3\x95\x9a]\x8e\x13\xc0\x96#\xe6\xb1\xc7\x05I)|\xd1j\xe9\x99\xda(\xca\xd4of\x9b\xb7\xb9\xf5e\x86\xab\x92X\xeb\xc8\x0b\xff\x94\xc2$\n\xd7$N\x81\xa3y\x1a\xc1*\xf6\x97>\x06+\xc4)l*\xd25m\xf7\x81\xe1\xfc\xe9\xef\xe8%\xe8~O\xe5_\xaa\"t\xff\x01\x17\xa1\xfb\xff\xaaE\xe8\x87\x86\x83]}\xcf\x01\xbb\xab\x03,\x05x\xcf\xb1\xad\x97\xc7\xe7oO\xde\xbc{\xa3\x1ez\x9e\xaa\x9e*\x17\xab\xda\xab\n<PE\xc8\x82\x0bq\xb2\xe5\xcfb\x0f\xb3qT\xea\xd2\x07\x9d\xbe\x8d\xdc\x1f3\xe3\xea&\xe9u@\xbaS?Y\x05\xde5=\x18\xc2(\xc4DSv\x7fw\xe0t\xbd\xd5\x8a\x84\xd3\xa3\x85\x1fLQz'\xdd$\xa6\\\xa5\xf5\x93\xb7\xf6\x98i\xcf\xd0rE\x9a\xa4I\x14\xa6$L\xbf\xc50\xb99\xeb\xedt\xa3\x15 Y\xda7\xe6\xc2l=a\x9f>\x15U\xba/F\x8c>?\xf9\xe1>/b9FxXV&\x1e\xa7\xdd\x17\x8f!F\x8b\xb3) HJ\xe4\xac7\xe3h\x1c\x9fir\xa6\n.W\x8d\xed\xaa\xa7\xa3%c\xe5rP\xc7v\xa6b\xbc\xbb\xdc\xca\x1d\xefF<\x05\xdd\xd1\x80\x1b\xd8\x0d\xad\xe7B\xb9\x98{\xe3\x8c3\xb4'\xc6\xec\x93hzVX\xc0\x8c$}\xac\xcf\xb2\x19\xdf\x16\xf1\xf7\x0c\x14\xc5\x80\xf75\x1c\x1b=\x92\xff5(\x8f\xf6\xf4\xa4b_wEG\x99\xc2\xbeco\xb5\xa3\x16\xb78\xd99\x80<.5T\xe9\x00\x82\xa8\xfaz\xc2\xcc7\xab\x10Gsv\xcfaJ\xa2\x8c\x19Z{\x08\x8b{\xf7`\"\xfc\xb44\x1f>\x96\xa3@\xe1j\xe0w\x94,\xe0Z\xb0d!\xff.\xb2'\xd8\xda\xa7OEk\xfa\x05\x9a\xdcv\x81vM<\x12\xb7\xe3\xb3~\xb1\x1c\xba\xe1\x90\x01|\x99\x1c\xe7\xf7\x8ev\xaf\xc0\xe0\x12\xc2\x9a\x18\\\xce\nS.#f\x96\xec)&\x10Km\xcb\xa2\xfb6\xb7\xfa\xbf\xedT*H\xc5pmWg\x9c@ \xb6I\xb5\xdb8\x95\x92^\xe2\xdf\xf4\x94\xff\x15\xe9)\x0d\xe4j\xb0\xa3\xfa\x1dD-8\x18\xc9j7?\xb1j\xcf\xd19I\xdf\x8a\x8aof\xf5A\x92s\x90pZF\xf7\x94\x0b\x11n\xabqt\x06C\x93i\xdf$\n\x934\xce&i\xc4r\xe3\x83\xe4\xb7_.=(\xff-\x1d\xbb\xc3\xf2g\x9c\x08\x1c@\x06\x8aG\xf3\x86\xe0\xef\xdfzK\xcaV\xc7\x9b\xf5\x9e\x1f\x9d\xc2w\x07\xfdH\xf3\x03\xdc\x15\xda\x97\x9e\xe3\xf2\x93h\x8f\x1f\xad(\x0e\x08\xcf\x94\xdd]\xc7\xc5\xfdLe\x03\x177\xed\xa4,\"\x04\xecUI\xb9\xc0\xf2\x82'\xe2~wQq\xcc8:==\xc9XN\xbe\xaa\x19\xc7\xd1\xe9\xe9)eH\x9f\x93I\xe0\xc5\x1e\x9da\xd5E\xe3\xe8\xf4\xf4\x03\x15\xafx\x13ji\xe0\x930=!\x93T_\xfe\xfc\xcd\xab\xdaB6\x17c\xf1\xbb\xe8\x92\x84\xfa\xc1?\xf7R\x8fy\x11\x92\xf8eJ\x96\xfa6^\xf8\x81a\xe4\x7f~\xf7\xea\x9b\xc3 8\x8a\x82\x80L\xf4S\xa7U\x9a\xca_D\xf1\x92k\xbb\xf5\x15N \xfd\xdeX\xe5\x15\x99\xfa\x9e~\x86\xaf\xfc%\xa1b0.n\xf5\xcb\xd7\xde\x92L_GS\xf2\xca[iJ\xa3\xa9a\xd5\xdfz>]\xb1\x9f3\x92\x18\xd6\xe5m\x90\xcd}\xcd|\xd9{\xc3pN?|\xf5\x0d\x1eC\xfa6O?|\xf5:[^\x90\xd8X\xfc\xd6K\x17\xa7\xc4\x80\x0b\xb4<\xf2C\xc3\x80O?|U\x87H\xa7\x1f\xbe\xca\xfdM\x0d5\xa2,\x9e\x10\x16z\xdeP\x83n\x94\xd3\x05!\xa9\x1e\xaa\xef\xc8\xc7\xf4]\xecM.\x8fL[%\xafa(\x8e\xb2I\x0e\xbb\xbc\xe4\x86\xa5\x0b\xf7m\x0cY\xc98\xf05<\x81\xa9\x904a\xdd\xe9\xe8\xf8\xd4k\x17\xe60\x82\xe9x\xad\x18\x9d\xd2g #X\x8c\xe7\x9a\x92sd\xe7u%\x170\x82sJ\xf1\xcfu\xa7\x11\xf0c\x18\xdd\x89\xed\x0bz\xf6~\xfa\x04\x9e}\xe1\xc2\xcc\x85\x95\xe3\xc2\xc58(\xde\x05,\x07s2\x9e\x9f\xb1\xe8\xbaK\x8d/\x03R\xd6kz\xa2\xc7\x0e\\\x8c\xaf\x99\x1a\x99~~\xedB<\xbe>+\xf4\x99\xd0\x96Z7*}\xb4>9\xf4\xbd\xe1~_\xd5\x05e\x82\x954In\xfd\x9d\x07\xfff\xf9\xf4_\x8e\xe5\x93\x99\xd7pl+\x0b\x93I\xb4\xa2\xd2L\xa22o\x1a\xa7m \xdf\x84f\x01\xfcq|\xc6\xae\x00\xfa\x0f\x1c\xdbG\xef\x8f\xbf\x9b\xf5{\x15I~\x1c\x9f\x8d\xd33\xc5\x89^;\x11\x93~\xbf\x16\xf5\xf8\xa2\xea\xc4\x93\xbb5\xc4j\xbfMe\xb7^\xbe\xa1T\xa6;\x11lV\xe9-c\xae\xf6U\xab\xa8\x19\xbe\xae\xdc\xed\x04\x8ckS\xde\xae\xd8[U\xc3\xb0`M\xab\xaf\xa7\x9ct\xa8\xd6\x91k\xf6~W\x1d\xca5\x17,\xd5^\xe7\xfc\xfd\xae\xd3M\x88\xb2e\x97\xbc\xad=\xc7V\xbe:\xe7,\xb1*\xd5^\xf0\xd6T\xf8\\\xf1\xf7*\x01\xfc\x88\x1cf\xae\x8fW\x8eE\x91\x0c{B\x12\xc5\x91\xf0\x18\x8b\xf8\xfd[\xb9\xe8\x10F`\xf1\x8fp\x87\xcf\xecS\xa5\xd77\xf5\xea\xdb\x9f0\x92\xde\x08\xce\xbb\xb3r\x01\xa5\x84[[\xf5\xaa]\xb3\x7f\x9d\xa0\x8e\xc7\xdd\x98$Q\xb0&\xb6\xba\xa6\xf2CX ZY\xe6\x19\xd1\xdd\xcb\xaf\x01\x93\x15\x99 a9\xab\xdd\xc3\xea\x93\xdao\\xc\x96v5\xd9\xfaA\xb2\x0394zl\xf1\xa58!?1\x86\x163_\x8a\xac8\x0b\x12\xdao\x1cY*\xab\x8a\xe55\x1e\xb27*\xf6\xbdl\x9c\xf3\xba\x9aX\x05\xa4s\xc4\xde\xc2\x98\xaf\xe5\xc9\xe4w\xf1,p)\x0e\xdb\xc1)\xa8\x89\xb4J\x7f\xbej\xa2s \xae\xb4\xd2\xee\xb9Q B\xcb\x14\xc7\x01\xf9Y\xe7\xe1\xbc\xcf'\xfa\x1a\xcb\xe6\xa4U\xa0J\x94i\xf7|\xcd\xe4\xc9>.e\xf7<a\"e\x8f\x89\x93\x85.\xa9 \xaf\xb8\xf6\xb2 \x9d>\x1c\x00\xe9F\x97\x18\x94e\xe6\xf9\x9ahc\xea\x93\xe0\xc5\x03\xdf\x1b\xcd\xd5'\xbc:E\xb8\xe6\xda3\xac=\x8d\x96\x9e\xdf\x94 \xc4\xb8\x81\xe5\xc7c\xc1.>}b19)\xec0\xdc\xd8[\xc6E\xd1\xbfF\x18\xa4t\x8b)\xf9=d=Fh\xedoc\x0e\xadY\x97\x84)\x89m~\x81\xe0\xd91\x8a\xe6\x94\xc5\x9du\xc9G?\xb5\xb9P\xbf\xd5sX\x1d\x8c\xb4\xb3\xe2\xe6\xff\x070\xb1?\xda\x16\xdfw\xdb\x93\x85\xe7\x870\xb9\x9e\x04\xc4b\xa1\xea\xe9:\xbe\xb4)\x06\x1f\x087\xd0\xd0\x85\xc4\x85 -N\xb0d\x08\x13;6S\x03P\xf7e#Xp\xfc[\x19\x9f\x1f\x9f\xc4\xc4\x94f[<75\xf4\x08\xc2B\x19\x1d=v \xb3\xc3q\xd4\xe9\xe8\"\xc8\x8a\x87n\x12\x1e<Al\xab\xbe\xcb\xbc\x0e\xb7\xc4:\xbd3\xa6\xfe\xae\xbe\xbe\xa9\xdb\xfe\xef\x1ai\xd1\x9c'F\xaca\x9c\xc5\xb3\xe6\xd1\x1c\\\xe1R\x82;\xd48Q\xba\xc4G\xc6\x80\x88\x94\xe6D\x88O\x94\x9e]\xb4\xa3\x0f\x87p\x00\xa7< Q\x16.\xbcp\x1a\x90iN\xd5-d\x90\xf0&\x0b\xaf\xe1\x93n\x14\xe6\xb5bQ\x8bb\\h\xd7#\x0bG\xe3!4\xec\xdd\x98xI\x14\x0e\xc17\xa3\x08\x8e&\xc6\xd1\xd0\xd32\n\x08w\xb3\xc1\xa8u\xd2O\xdbz/\xc6*\xfa\x87X\x9e\x9a #\xf2\x0d\x8d\xe7\xdf\x11\xbb \x18\xc0\x107x\xda=\xf7$\xd1\x03!N\xba\xb99\x17\xe9\xae\xab\x08\xe5\xd4a\xd4Q#F\xf1c\x8c\xc7\xd0\xe1\x18\xcd\x1d\x8dp8\x9f>\xe1&p\xd4p\xad\x9a\xde\xde6\xf6\xb6)\xfe\xea\xb1QF\xac\x1c\xe8\x7ff\xaba \x9c\"\x1c\xa7\xf2\n|\xb9\xd8)\\\x83Rm\xd0I\xa0\x12\xddS\xad\xb7~\xedJ\x9d4\xc2n-\x05S\xab\xc2\x85t\xcf1S\xb4\x8d?X\x184\x84\x01\xe9\x9e_\xd1\x02\xe2t\xcf\xd7,F\x1d\xe9\x9e',{\x04\xe1+l\x13\x86y\xa4{>\xe1\xc6\x94\xf4\xa0xe\x13\xd4]\xd4\x8e\xfcu\xbb\x91\xbb\x86\xc8g X\x9a\xb0{\xae\x0d\x05\x0f\x18\xec5\x9f\x14\xde\x90\xf39\x19\x8e\xdf\xfac\x17\x03M\xb2\x00\xf6bc\x15\x87\x1fL\xd0\x88\xe7\x82\xeefd\x1e\xa6\xe0\xa7 f\xaa\xa9\xa4\xfc \x9c_\xa2%\xd5A[\xe6 $!\xbd\xf9,<\xbf\xd2zGV\xaaM\x87\xba\x84\x82\xf2c\xe0\xca\xc5\xd3\x8ec\x11\xe6\xa1\xf4<~\x8d\x07L\x1f\xcf\xe6\x13\xfe\xfb.\xd9\x80\x93\"\xf3\xed\xadO~g\x88y\xc39\xfa\x87\x0c\xfd\xfb\x14\xbfC\x17\xb6L\xe3m7N>\xbe\xfa\x89\xb4X\xbf\x86\xb5\xbb1\xce\xbf:o\x85\xc9(V\xfc\x12\xf7\xfaq\xed\x86\x9d\xf2\xa8I\xc7.\x88Ma\xb9`\x9d/,\xc7\xc5t\x14\xae\x1c\xd5\xbaU\x14\xa3\xd4F4a\xed\xe6\x98\"\xfeT\x88K-\xd0O\xca\xf1\xb4\xcb_\xe6\x7f\xdd\xb8\xec\x107O\x92\xa9\xf9r\xce\x0e\xff\x92O^\xf6&\x91U\x97\xe5l\xe5\xebJ\xe5\x85\\\x991\x8a\xc5\x80\x9c\xb2-\x8f=\xd8\xddw\xecc\xd9\x86V\x1d\x1f [\xc4\xfc\x16\xa2\xdcO\xb6\x88uu\xac\x0b\x97-\xac\x8f\xa8\x0c5\xd2\x8a\xa9\xec\xca\x19\xf7\x06\x15\xb0\xca\xb5F\xe5\xd4\x83\x94\x92s\xe9\x07\xd9\x18z\x16\xf3?\x87\nL&R\x08_\x0e\xe3<\xf0\xa8\xa7\x96a*\xdfW|\x1e\x98\xb8>\x14\x12Jy\x9d\xcb\xfb\x08\xd1\xa5\xce.\x03\xca\xd6\x89L\x85\x90\x8f\xd3\x88C\x8e\x12.\xcd\xa4\xa0\xc6x\x1a\x8f\xab\xd8%\xb8\xc2\"];?Q\xf0z\xf45\xc6[\xc8\xb3\xf33&\x05KNx\x89\x8c\xcd\xe7]*s\xfe\xd4\xe6\x828\xc5\x93\xed\x18\x97\x13\x7ff\x94\x83\xe6\xc1\xe9Q\x8d-\x1b\x9e8.\x04v\xd0\xfd\n:\x10t\xbf\xc5\xff\xbf\x80\x7f\x86\xadK\x15!\xdf\n\xa6\xe8\xb8\xf41\xb3&\xb5eZ\xc1\xad\xdd\x1f8\xb6\xfcJD\xa3\xcb\x0d\xddY\xc7\xa7\xa5.%z\xa3\xce\x8d\x82\xa7i\x91\x05\x83\xf4\x93\x8e2\x81\xa4z\xea\xb9\xb9\xb4\xef\xb0\xe8\x9bzD\xab\xc0\xa9\x18\xae\x8dl\xd3\xd6\xa5S;j\\\xef\xa6a\xf3Q]\xd9\xf9\xe6\xc8\xd7\xed\x98'\x93i\xc0S\x05\x92\xf6%\xd3\xd4\x0fv\x1fJV\xf0\x95\xbe\x8f\xbb\xcc\xc0\xb9\x8b;\xc8~#\xa3E\xdd\xb4\xbc h\x9a\x92\xcc\xaa\xeaO=F\xb5L\xf6BxsQ\xaf\xbe\xf1y\x15\xb3\xca&j/\xa9\n::\xd6\xdc'\xcaO\xa4\xb7\x9b\x93\x1f\x8a\xe8\x86\x14\n\xf4YSZN\x8f\x91\xf6zV\xb4\xb0\x82\x11D\x9dN3\x07\x98\xd4\xa4p\x10O\xc8(/#\x81tov:n\xa1-\xa3\x18\x81$\xb2\xfd\x08\x01;\xa6\xacE\"\x98\xf4\xb1w\xc6(\xdf\xf6vFKb;l\xe2\n\x8dB3p4\x97\x9a\xd2\xd6\xbb1o\xf9\xa8\x8bG\x97oG\xddu\xdb\x83%\xf6&\x8d{\xf7\xae\x10\xdd\x8c\xc5\xfe\x06X\xbc9nUW\xbd\xd8vP\xa3\xcd\xd3\x88\xb7P\xbf\x02>[\x81\xd8\xf6\xebV@\"A\xf8\xf3V\x97\x83L\xe9\xa5N\x9dgp)\xdd\x1c\xa0\xda^\n \xc84<<v\xb3\xea\xdf\x11B\x07\xac!\xf8\xe1$\x8aczZ\xfb\xe1:\x9a\xa05\xd2\x1dEJ\x90L<\x0dqM*\x1e\x06\xdc\x9exW\xbd<\xe3\xe7\xadz\xe3\xc8n\"+Wj\xdc\xbb\xaer\xa17\xd1\x04\x1a\x9c)\xce\"\xfc\x86\xa3n-\x02\x17V:\xf6i\xe1\xc2\xd4\x85\xb5+\x8c@Vp\xd0\xac\x17\xaa\x80V<7\xa8\x8a\xd6\x99;/\x99;\xac\xcb\x920\xe7\xea\xb6J\xbds}\xe4[-\xc3<\xbf\xad\x8f%\xaaR\xed\xb9\xa3\x9b\x1f\xde\xa8,P\x83\x9f\xa7Nz\x0c\x0bx\n\xe7\x8f\xe1\xdcdZ\x8af\xa5\xd7\xc0\xec\x0f\x96vfO1\xe4\xf8\xf9\x993\xee\x9d\xb90\x1d\xf7\xcf(\xe7\xb7\xb4\xf1\x9dS\xb8\xe0^\xe3\xcfYnwz]\xde\x8cz\x9bWv\xeb\x03#\xa1\xcbK\x9d\xc7\xb0\x85]\xae\xbb!\xf9\x98\xda\x8e\xd3\x9dF!1\x98\xdf\xe6\x83\xf5\xed\xb5\x0bK\x17\xa6\xcc\xb1\x8bn\xeeVC\xbbq\xba\xcfN\x8e\x0f\xbf\x06\x96+\xbc{r\xfc\xee\xfd \xea\xa06\xdbb}S\x80\xbc*\xfe\xfa\x15\xf1\xb1.\xb2!^W\xd9\xf4\x94B\xf0\x87\x1c\xfcD=\xb6rI\xd7(\xdaE\xb8\xb3X\xb3U\xc2\xca\xd0O\xa2^\x11#\xb0Q\xee\xb9\xe6\xaa\xb7\x8d\xffT\xfe\xd5\x1aV\x15\xeb!?7-\xa9\xf3\xe55\xda\x95\xb43\x1a\xe1\xf0\x94f\xc8\xc2\x7f\xc6\xccX\x86\xa9\xf0\x98\xcb\xae\x7f\xc6\x15z\xb7\x9d\xa1\xd6g\xb6y\x86\x08\x1a\xfd\xbc\x98\xb4\xf3\xff\x11w\xe5\xb6\xe7\xa6\x8eJ\xc7\xb9\xaa\x83\x99\xa9\x9711\xb9\xf2\x19\x12\xe79y\xaa\xb8\x8c\x89\xf3{\xb5Y\xec\xd1\n\xdb\xc6\x88l\xfc~Q\xc3J`;\xfd\x16\xed`Zu\xa9-\x97%Z7\xb48h\xd9\xa2\xcb\xb2\xa4W\xda\xe5\xef\x0d\xad\xefl\xd4\xba\xcb\x12\xa3\x1b\xfa\xe0\xa5\x86\x9evo\xd1\x13\xfd\xffNC\x7f\xbc\x8e\x81\x94H]\xa4<\xec\xfa\xe7\xf9\x9e\xe97\xa2\xd6\xa8\x88n\xc1\xb8\xfb*K\x91\x0b{s\x91\x90xMb\x14\x12\xba\xdf\x92\x8b\xaf\xfdT-\xabrI\xb1\xde*\xc8\xc3\"\xadUP\xa2Z\x05\xa1w\x91\x9d5\x9d'Z\x0d\x928c&m\xfc<cm:N<\x91\x13F\x1a\xd1\x13\x8ei\xe3\xc4\xcd%\xde\x9c?\x86\xf4\xb1\x89\xa3b\x97\xc3\xb3\xd0e\x06\x97x\x8a\xdf\xeab\xc5n\xd0\xa3k\x83\x88\x8b\x87\x1dg)\xde\xf7\xb2\x94\xb9\x85\x865\xd6\xb7[y[}Sj\x85\x03\x84\x99J\x94\xd1\xb9\xca\xa3%N9\xb5\xadn\xec\x19\xc2\xea\x9d?\xb9\xb4'\xb5\x0dbfa\x94@\"\x86\x9d\xa1\xb7\xf6\xe7^*\xee\x94\xf3?\xbbT8\x99zA\x14\x92*01\x0d\x03\xfd\xc0\x13B\x9a \xa0\x14Yf\x18_E\xc8w\x86\xeb\xab\xc6)\x8ag\xc6\xc4\xc3I\xeb;\x88\"\x9brc\xfb~~\xc5\xa3i^\x07I\xfd\xee\x08\x98\xf2A\xdb\xc5\nF\x90\xbb\x153?\xdew\xe4c\xfa:\x9a\x12\xdb\xd2\xdd\xed1\x95\xe9\xc4\xe9F\x8cr\xd8+\x9d3:}&\x0b/\xf6&)\x89\x9f{\xa9W\x892\n\xc05\xa5m\x00\xb1\xeaN\xbd\x94R\x1e\x9cJ\xd0\x80\xdfZ\x1a\x9c\xf7\xa1\xddlk\x9eeL\xdf\xfd,\x1cBlPc\xa0\xd7=\xdbIMK\x04\xb8\xef\xd0X\x04\xf7\x07F+u\x19\xab\x86.\xe1\xbeK\xf7\xb8\xc3\x9c\xd6}\xc3\x9c6<6v\x9a]\xaa\xf4,Nn\xc5\xe6S\xb9\x9f8\xcc\xc1\xcc\xa7\x87\x9eO\xd9\xf7;\x91\xec\x9b\xcc\xf9\xf5\x87^\xc5\x0d\x9b\xb3\x9c\x06a_6\xe5l\x82\x85\xee,B/\xf4Jb\x17f\x84\x82\x06Od\x9c\xa1\x11\xb8\xdf\x9d\xf14\x00\x1a^\xaf1 \xefFqSR9\x9e\x84x\x94mpkV\xa3\x8e\xbb\xf7\x15Ej\xf5\xe8\x13\x12\xda\xf8\xc1\xd98>S l\xc4\xe5\xb6\xa6m\xef\x97m\xe2\x81\x8d\x9fIN\xb38Z\xdaQ\x83\xad\x0c;7\x07F\x90\xe8ma[[\xd6\x17\x01T\xb6\x8a\xb4\xe3\xaa\x86Y\xe8\xcf\xd5\xf7z~A\x02\x9c\x9e\xd8\xa0g\xbf\x06\xa6\x90\x1f\xb9MP\x85:\x9f\x00\xf10\x0f\x80\xb0\xba\x00\xe2\xd1\x9cj.\x0el\x83\xee3]\x1b\xa9\x1d\xd5\xdczk\xe9\xfa\x9d\xa4\xa9\x90\xc8\xa5\x9e\xcbV=\x00\"-u\xe2\xf4\xa6\xa2.\xe4~\x0e\xbb\xfb\xd2\xba\xc5v\xdc}\x0b\x1d\x88\xbb'5wJ3?\xf4\x82\xe0\xba\xad\xba=\xe3\xb7\xc4~\x1e\xc1\x9aJ\xc2\xe2\x0f\x83\xae=4\xddjk\x98\xdd\xca}q(\xab&\x8d\x96\xd7\xfc3\x8fRGT\x84\x95/R\xea\xf8\xab\xca2\xcb\x8f\xce\x9a\x8c\x8al\x94\xad\xf8\xc2\xe3\xe2 u6\x1a\x96\xf9\xae\xf2\x0b\xa2n\xc5\x7fD\x84?\xd8S\xb0\xf1\xb4\x06\x0f\xd3\xb85\x0e\xd2C0\xd5g\xe0\x86<\xd1\x97\xce\x9eV\xdcB\x87]\x82\x86\xed\xfc\xee\x7fX\\\xc68v\x88\x97$\xcd\xd7\xd2m\xe0\x19\xda\x83\xbd\x01\x8f=\xb7\xc3\xff\xdd-\xc7\xaa\xdb{\xc0\xff\xe5\xb1\xea\xf6x\xac\xba\xfd\x1e\xff\x97\x7f\xbf\xcf\xbf\xdf\xe7\xb1\xed\xf6\xf9\xf7\xfb\xfb\xfc_\xde\xce>og\x9f\xb7\xf3\x80\xb7\xf3\xa0\xcf\xff\xe5\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=x\xa4\x8d\x9d\xc7|j\xdb\xc0\xa2\x11\x8b*\xbeNQ\x1ep\x13\x8f\xe3#\x1e\xae\xb2J\x10\xe5J\xd1\x94\xa0\x17\xb0\x82xH\x06\xd1z`\x8b\xd9\xb5\xf71\x9eJ\x1e\x16#\x8f\x1dR!\x8fr\xa3M\x08\x9a3\xb4\xdc\xe4r|\xe6\xe2\x9c\xf3\xccPy\xa4\x9c\x8c\xf9\xe9\xc6\xf0\x142\xb3v\x80g\xb9\xeb\x14\x99\xa52\x8c\xa2\xe3Sj\xd2\xef\xf7w\xfb\xfd\xbe\xc3r\xf7\x8a;\x91\x13/\x9c\xf3K\x11R\x8e-\xbe\xf6\x02\x7f\n\x93hJ`E'c2\xab\xe4w\xd4\x04\x9e\xb0H\x9dp\x80\xb1~0B,\x8b\xe4\xd9\x01\xdb&\xb0=b\xe5\x0e<}\n\xfd\x1e\xca\x14\x7f\x84~o\xb0\x0b\x1d\x16\xffS\x97|\xcc\xb4'C\x9eSP\xcd\x9c\xbb\xe1\x8ek\xc22CT -\xa52`D\xec]\xb5\xc7\x03\x16;\xa3\x1b{W\\\x10\x8d\num\x1dnP\xcc\xf1\x18\x8e\x84\xf0\x14\xbc\xc7\x0edl]x\x08Z2\xf6:\x9d3\x07\xe3D<a\xfa\x95r\x85\x02g\xbc\xb3\x1a\xcb\xb4\xecn\xe0\xae?9(=\xdbsl+\x8d\xfd\xa5Uw9\xaeJ\xd0:\xa0\n\xc6\x803 ;\x9f7\xe0&D\xa9\xa4\xb7\xe0\x88\xa2\xd6\x16i,T\x97H\xbax\xd6\xd8\x82\x0ed,\xc6fU\x91yB\xe6\xc7\x1fW\xb6\xf5\xff\xa7\xb5<\xfe\x9f\xf5\xcf\xaa84)\xaa\x16\x95\xfe\xa0\xd6\x9a\xb5\x90\xb7AVCh\x92\xd8\x01\x1fw\xd4\x8e?\x11\x12\xc9V6N\xcfl\xe6\x87\xf7\xdb\xaf\xff\xcb\x7f\xfa\x0f,\x82)\xff\x89e\xda6n\x0c\xe77\x85\x8d\xcf\\\x96=\xbc\xd0\x0b0\xaapE<\x06<\xeb\xef\xdd\x03\xdbg\xb9\x9e\x13\xf4\xd6\x16L/\xa5\xf6\x9e\xbc\x8d\x15\x1b\x17\x05\x00\x01\x05`\x97bj\x93\\\x06\x122\xca1\xa1\xf1\xda\xaf\x0f\\d\xb7S~\x85\xb8\n<\x16 \xd9\xb2h\x85\x81\xa1\xc2DTP\xbc\xa2\x0d\xea\x04-\x8e\xcb#\x95k[?\xa4?\x84?\xac\x7f\x98\xfd\x10\xc3\x7f\xfa\x8f\xff\xf9\x7f\xfb\xf5?\xff\xc7\xff\xf5\xb7_\x7f\xfd\xed\xd7\x7f\xff\xdb\xaf\xff\xcdo\xbf\xfe\xb7\xbf\xfd\xfa\xdf\xfd\xf6\xeb\x7f\xf8\xed\xd7\xff\xfe\xb7_\xff\x87\xdf~\xfd\x1f\x7f\xfb\xf5\x7f\xfa\xed\xd7\xff\xf9\xb7_\xff\x8f\xdf\xfe\xfd\xff\xfe\x7f\xff\xfa\xeb\x0f\xd9\xa07x\x88\xff\x7f\xf4C6#\xb3\x99\xd5f\x87\xdd\x92\x99\xdc\xd9\xc7\xf8l\x8a\x18c&\xc7\x13q8\x1f6\x1e\xcf\xe2\x96\xb8\xd1\x88\xb9\x15\x05\xb9\xdd\xfcL\xa1\xc2z:\xc2bY]\x12N1\x03\x90N\xac\xa3\x18N?\xddulK\xd4\xb3jx\x19Q\xa7 N\xeb<\xc7{*2\xe0\xcb\xedk7m\xa89\xca\xe0)\xf4\xe1@\xca\x8b\xd9?+\xec\x94\xb5\xad\xc4x^\x92\xfahe\x9er+\xca\xb3/\x89\x00\xf9\xb6\x8f\x96\xcdq\x0du\xe1[\xb6FD\xc8\xe0\x00\xb2<\xebf\x82\xe99\xa9\x98\xc0\x1ct<\xd8\x86\xe2\xbc\xf6\x98\xf1D\xf2\x0f\xc0&\x8a6M\x98\xc13\x0c&u\x98!\xea4aFN\xf2\xff\x9d/\xe1F\xd1C\xd7\x0f\xa7\xe4\xe3\x1b\x0c\xfb\xb8 6|\xdeN\x94\xa1\xd4\x9an\xc4dE\xbct\x88\xb2\x92l\xf2\xdd\xaa\xc7\xa6\xd5\xdaS\xb599Sq[\xedpq\xcaP\xc1W\x83\xdb\xa8c\xb1\xaa\xef#\x1e\xe0\xb4\x8c\xea\xcc\xab\x94\xe7\x19\x88`4\x82>\xdc\x87\x9eF\x8a\xb0\x8e\xa2,L\x0b\xe7\xac\x90\xcc\xbd\xd4_\x13U|\xe0\xc1\xf8\"x\xaa\x1ar\xf1\xc7\x8e\xe0\xe9\xd3\xa7#\xe8;\xdc\x9b\xb53B\xc3#zb2\x07\xd7\x90\xbdz\xac\xac\xd3\xef\xa7\x84\xdb\x948\x17 \xda\x9a6aQ\xb3n\x1b\x16\xb5\x9a6\xa2\x8eD\x97\xfa\xd0\xad\x00\xe2\x88o\xe7\x84r\x93\x1d\xea\xe6\xe1DM\x99/\xe2[\x10\xd6\x18\x97\xad \xac!\x15\x92(\xec\x84E\x0b%\xac\xf1g\x11\x07\x93dBW\xc5\x0b'\x8b(\xdeH2\xa9\xe5\x06\xf9b`\xd4z+\xf4\x96\xc4\xaaK\xec\xf9\xd9\xc3\xbf\xf0\xe7\x1b\x8d\xbd\xcd\xd0Y\x9b\x16\xfe\xf7\x05G\x1e\xf8\xe1\xe5\xdd\x8f\x9d\xb7\xfa\xc5G\x1f\x05\xd3\xbb\x1f\xfc\xef0\xf0\x99\xff\x91\xdc\xfd\xc8\xd3\xf4\xf7\x18z\x14\xa6\x93(\xf8\x12\xbb\x956MG/\x9a\xff\x82;\x96v\x95\xf8\xbf\x90/7 \xde\xfa\x17\x9c\x83\x9fz\x81?I6\x9aB\x9b\x19\xf8\xbf\x03\x16mLvZ\xc1\x1e\xc9\xfd\"&\xb3/\x0b\xf8d\xe9\x05\xc1F\xa3o3x\xd1\xea\x97\x06=}}\xb9\x19\xe2\xb7\x1a\xbeh\xf6\x8b\x8f?\xbb\xb8\xfb\xc1g\xbf\x07\xd5O\xb2\xd5\x17\x18\xf9\xea\x8eF\x1e\xda\xfb;\x8em-\xbdt\xb2\xb0\\\xe8\xd7\xd7\x96\xc62\xce\xebi\x15\x9dz\x88\x88GH\x02i\xddE\xa2/+\x1aP\xcf\x90\xe7_\x0b\xc7\xc4\x9c\xdaB2\x9b\xf7\xe1@\xd8\xd81\xcf\xa8!\x9a\xb7q}n\xe8\x8c\xc9\x99P\xd8\xc7\x95X\x1f\x10n\x9a\xd5\x9f\x03\x93\xeb\x14-\x17\x06\xb7\x00g\xecV\xdd.\xa0\x15D\xa3&\x88f%\x88\xc62D\xe3\x96\x10\x95\x04\x88\x18C\x95\xf9\x08T\xf6\x86\x832rX\xe8\xa5;\x03hB\xbc\xf8\xdf\xd0\xf3\xce\xa0\xb9\n\xfcT\x8b\x9c\x15\xcbI3\x98\xc4EFh\xf7wUc=\x10z\x8f\xeakv\xb9\x867eU\x8d\x885A\xe3\x14\xcb\xbb\xb8\x98X<s\xc4}\xfb\xc2\xf9\xe7\xfb\x0e\x95\x85?}\x82]\xbc\xdaHI\x92\x16\xe5\x07C\xe7\xbe\x0b\xdb}\x11\xa7\x89\xd6\x1b`=\xefB\xae\xe5aCR%\xd6X\xb7\xa8\xd3=p\xe8\x7f\xa5Jr\xb9cKeTX\xa7\xe5yq\xf7 /\xd4a\xdc\x9a;3K\xaa\xd3\xfb\xb6spp\xbfK>\x92\x89mYt\x8e\x1a\xa4is\x1d\x02\x92%\x9a\xd0\x01\xe8\x03\x01@\xd9\xd7f$\\\x8bx\x12\x9d\xdc\xceMM\x86\"\x7f\xbb\xe5\xcb\xa9\xd3\x8a\xa8x8:\xfdgkf\xc2\x9f\xb80\xc1p\xd3\x01\x0b\x8b_\xe7u\xbe`\xa1;\xfdy\x18\xc5\xe4\xc8\xc3`}\x96o\xc1\x90\x1ey\xd0\xa1e\xcb,H\xfd\xc0\x0f\xb1hY*\xcaB\x1f\xaf\xda\x0f\xc0\xcaJ\x05I\xeaO.\xaf\xe9\xfbk\xfe\xde<\x84i\xbd\xd3\xfb\xba\xbc\x9a\xb4\xb3\xdd\xc1\xa3\xddG\xfb\x0f\x06\x8f\xf6\xd0\x8e\xff\xe9\xd3\xa7u\x0d`4\xd9b\xbf\xa7\xdd\x04\x83\x9c\xbb\xb0\x80\x0eXs\x93\x85\x00\xaa\xfaX\xf0\xaa\xb8\xdc\x02\xbb\xcb\xbc\xe6\xed\xd0F\xfe`\x1fl\xfd\xf0C\xe2X.,t\xd7\xd0\xf9\x83\x0e\xec\xd7\x0c\x17y\xc0\xce-\xdb\x9e`(1\xd4*C\x07\x92q\xef,\xc7\xf0\xa70E\xad\xe1\x8aG3\xe1*\xa4\xa9+>p\x1c\x17\xb6\xd0h\xbf\xa4\xe0\xc2\xc4\x1f\xbd\xb3\xfc\xe2-v\xebY\x9f\xd2\x83S\x0f0\xd0\x00\x04\xf0\xa4\xaa\xe4\xde\x86\xc1c\x08:\x1dG^\x99B\xa3\x16\xa0\x15\xaf\x8d?FZ\xe5w\xe9\xb9q\xdc\xea\xe098\x9e\x141\x15\xf1\xf2\x9f9\x00\xad\xe8\x07\x0c\x12}\x87g\x89\x90\xc0\xc6b\xc5O\\X\xe5\xad\x8e`\xed8\x8f\x1d\xb8\xee\x06^\x92\xbe\xc4\xb6\xf1>\x83\xf7s\xef\x9e\\\xa4\xc6\xf4\x16\x0f\xdf\x8cSv%S\x84\xf5\xde\x9a\xb1\x06(\xc9\xc4,<\x9f>\x01_1\x96\x93G]>:\xe8bp\xb0\x86\x03X\xf1\xb2\x9e\x0bk\xfc\xa42\x02\xc5,\x99\xb9*X=A\x1a\x85\n\xb3\xe7H\x10\xb3[Q\xb6\xf2\x99\xa9\x92+8\x80\xf1\x19\x0c\x05\x0d\xcau\xb1\xaa\x14\xa8\xd7iK,\x82\x81\xe5\xba\x05Su+>@b\xaa\xc2\x82\xa9\x8a+LU\xa8c\xaa\xe2M\xd9\x80z\xe5|f\x87\xf6\xe0a_U3\xfb\xbchg0P\x8b\"^\xb4\xd7\x7fHIL^&\xc6\x80A\xf1\xf5\\\x1a.f\xda=?'\xc9\xabh\x9a\x05\x18G\x1e\x86\x9a\xa5\x98\x92\x99\x97\x05\xe9P\xbd\x9f\xff\xa7\xea/q\xd2\x8e\xfd.\xff\xca\x85\xa8\xf8i\xa46|L\xd5\xbe'\xd1r\x15\x85\x94\x80\xe8F\x06\x98{B\xf8.}\xe3]GYJ\x17\x8fw\xd8\xb4Y\x8a H\xa8\"_Ny\xb7_S}\x8eW\xe2\x82U@\xbcr\x0b\xc2\x03\xc7\xcb\xe1\xea\x9d*\x9aLl\xca\xf9=\xd4\xa1 \x16\xed\xf5th\xc2\x8a*\xc8\x95\xe5E;j\x91\x97\x17\xed\xabEI^\xf4@>\xda\xf0\xd5\xfe\x9e\x1e\x15'\xbf?*\xcej/\x18\xf3\x91\x91:\xc1\x9f\xd2\xde\x1c\x9b\x1dN\xe8\x88\xe3bA\xa6\x16\xd8\xa4{~\x8e\xce\xe7\xe7\xe7\xc8&\xf4\xdc\x02\x1f\x1d\x9b8\x0e?\xadX\xf5\xfcxTE\x0c\x1d\x98h[\x9e\xd4\x96\x0b)\x1fFTz;\xae\xce\xe5\x92\\\x0f\xc1\x8aI8%\xb1\xe6\xa6\x94\xe3]#3\xb0\x96\xf3c\xac\xe2he\x88?\x03\"UFwN\xd2#\xb1\x85\xcduYd\xf0dE&,!P\x14\xd74\x1c\xb3\xd0\x1fq\xdc\xa2.\xdd\x13\xc4\xb6\x8e\xa20\xf5\xfc\x90T\x1cn\xe4'buO\xa2\xab\xbaZ\x99h1\xa8\xab\xe5\xb1Z\x18\xb57\xb10\x9c\xa9\xb9\xf2\x84U~\x17\xad.\xbc\xb8\xa9\xf2\x8cU~\xe6%\x9c\xde5}\x10\xb0\x0f\xa2\x90r\xeb\x1f\xbc\xc0\x9fzi\x14?\xf3\xa6s\xd2\xf4)&t\xe8\x06\x917\xf5\xc3\xf9i\xea\xa5Y\xa2F\xb2\x97\x9f\x05z/S~\x89\xdd\x9f7\xb0\xf7\x94GZP\x04\xb1\xad%I\x12oN\x90+\xb24J\x01(6A\"P\x9d;T\xf2\xdcQ\xb6o\xf2\x94\xa4\xcf$\xf0\x92\xe4\xb5\xb7$C\xb0\x92+o>'\xf1v\xe6[\xda\xfa7.L\xe0\xc0\xd8\xcf\xc4\xc5$l\x0eO\xc6\xe6\x82\xc5\xe1c!_\xb4b|\xaa\xfe[\xcc\xed\xddv\x9c~8\x8b\x8c#\xbc\x93\x1e\xf8\xc0\xb7'\xf9\xee\xf8=\xba3t\xe2`\xf8\xb7\x99\xe7\x07d\xfa\xaf\x12\x94\x8b\xdd\xd6\xbd\xa5~\x1a\x10c\x0f\xd6\x0b\x04\"\xa4\x11\xd0a\xc1\xe1\xdb\x97\x80l\x88Oi{\xd7r\xcc\x83\xf08rKkq\x84\xae\x95_dE\xcc\xe4\x013A\x9b\x18>\xf1,\xbd\x8f\xdf\xfa\xd3t1\x04\xeb\xe1\xc3\xde\xeacM{\xacz<\xf7\xc3o\xc8,\x1d\x82\xe5ei]\xffE\xfd\x13\x7f\xbeh\xf9AJ>\xa6\x87\x81?\x0f\x87`M\xd0\xdf_\xbfDP9\xdf\xf3\xb7\xff\n\xb01&\xcb(%\x85\xc7n#NZ+\xcb\xe5\xa4v\x8a\x88\xb9\xb5B\xe5_\x92MD,\x8c\x06\xcc\x9cq\xac6\xf7\x11\x89\x1eL\x15\xb2\xa6\nA\xbes\xaa:\x0dE\xea8+\x85H\xba\xb1\x8b&sNIb\xa9\x89(m\x1bl\x8a\x8a\x90;\x15\x8f\xa5\x81\xd3\xd5\xe6Am\xd3\xa2d\xdc\xa7\xcf\xff\xd6\xdf\x91\xad\x96\xa9p\xf2\xc8\xb1\xadrGV\xb3\xf4g\xe6\xd4\xa5J\xbe\x92\x86\x14\xe06\x17o\x83\x87{\x1a\xc1J\x02\x93^\x1ely\x01\x12\xabb\x9f\xa8^\x8c\xb3\xcd0\x8ba\xf5U\xeb\xce\xc2\xabk\x8b\na\x94\\\xb3qWvmy$C\\\x1d\xa7;\xdb\x10b2\x10*\xed3\x89\x8c\x02U\xbd\x8d($\xbaas\x0e\xb6\xca\"=b\x0ey\x0f\xf7\xaa\xfew\xbd}\xa7;\x93\xfd\xe8\xdb\xb4\xd8r\x12\xaa\x01\xeb\xe7Mb\xf0\x88\xbb!>\xe2n\x86|V\x83G\x0ft\x9b\xf4\xf4zy\x11\x05m\x9an\xb2\xf34\xd8\xe1\xaa;\x98\xdby\x1a\xbc\xad\x0d\xce\xd6\x03\xb5q>\xfeG}\xa7\xfb\xf5\xf1\xf7\xe5\xb2 /S>\xe1\xa9\xe5\xd4\x1eXj\xb9G\xeaxXn\xb9=\xf55\xcf-\xa7\xbc\x9d\xe6HR~\xbf\xe6\xefU4\xbd\xe6#T=\xe4\xe6\xfc\xbd:F\x9eV\xae\x82\xed\xec\xb5\x1a\xfe\x92\xa5\x94\x1b\xe83\xcaU\xb0\xed#\x9b\xa8\x1a\xfb\xee\x94\x81E\x95\xd6\x8e\xf9\x08\xd5\xea\x87|U\xd5N\xdf\xb0\xf7j\xf5\x9f\xf0u\xc5\x0d\xf5\x12Fp\xa8\xe6\x90{ #x\xa3\xbe|\x85i\xe1\x94\x97\xefP\x1ed\x18].9\xc2\x92\xbf\x9c\xbey]~\xff\x16FpD\x8f\xf2\xa3n\x82\xaaW\x7fv]\xaeqB\x05G\xdb:_\xf8\xd3) U\x11\xfc5+M\xa3\xb7\xb1\xbf\xf4\x99\xadv\xb9\xc67\xe8\x00\xa6\xcd\xb9_\xae\xf8\x9c\x92{\xdbJp\xf4\xdb1\x99\xfbI\x1a_\xab\xcd\xfd\"\xd7\xaa\xa4\xb9|\xc1J\xa3\xd5\xb6\xa1\xc2{M\x12\xf3r\x8dg\xa6\xf8\x01\xef\xca\xf5~F\x88\xfe\x955V.\xfa\x1eF\xb0\xf53F\x0e\xffY\xca\x08\xa0\xfc\xdd\x9d\xf9\xe1\xf4h\xe1\x07\xd3\xf2\xd7\xdf\x02\x8f\xf18\xa9w\x8d\xe3G\xdf\x03\xd8\x1a\xc1\xa9\xfd\xd2\xfe\xfb\x0d7\x0f\xd33\x91\xed\xe2\xb1@\xd1\xf0K\xd9\xe4\xac^0\xe0\xda\xac\x07\xc6J7N\xd7\xd3\x16V\xd9\xf2\x1bG\xad{\xe3\xc8\xd1\x0f\x0c\x8c\x00H\xa4\xf8\xd2~\xaf\xbf\x9dE\xd7\xd5) HJ\xe0\xfd\x98\x9c\xb9t\x92\xbc=\x1e8,\xc5;\x8a\xf7\xf4\xe7Kl\xa6\x12 \xf9\x06\x86\xf0\xb2\xbcd\x1fj\xb5\x9e \xd9\xd0\xff\xc2|\x0dO\xedw\x05\"\x98\x0d\xd8 K\xa5\x9bV\"|\x96\xbb\xff\x1aF\xf0\x8c\x8e\x98o\x8b\x12\xd6v\xc5\x91]\x02b\x0dBi\x1aI+\x00h\xd5R)\n\xf3\xbb\xba\x19|\xd5\x82\xd5+5<\x12\x8b\xf4\x95\xfd\"_\xc0%\x8b\xf2\x0f#\xb8\xe2\x19\x8d\xe8;Z\xe2\xdb\xbf\xe0\x9d\xdb\x01\xc6c\xc8 \x10f\xe4\xa3\xfd\x9d\xb0\xbc\x93\xe3\x93\xb31a\xb7\xa6\xe2\xf7\x88\xe7\xa8\xc0E\x0bM\x1b\xa1hr\x08\x1f\xed\x1e&\xb6\xd0a6\x0c\x8b\x0e?}b\xd8w\xe2\xc2G\xbb\x8fyv)\x7fR\xf4K\x87\xffm\x0e\x0d\xfa\xed\xcb*_\x0bU`\xfe\xa1\xcd]\xe3R\xeb8\x91;\x93\x87\xcca\xfc\x9a'\x82#th>K}\xc2\xa21\x8a|\xdf\x11<\x05\xff\xb1\x03_\xd9)\x83R<\xf61n\x00\x19\x87\xba\x10\x96b\x05\xeb&\xf0\xe7\xd6\xdb\xe9\x9b\xd2](.|\xcaRY\x19{\xde\xc2\xda\x05\x02!j\xb0\xbc\xa3[>E\xa6\x94\x19\x04\xd8[6#\xd9\x85\x0b'\xff\xf3\x17\xf1[\x94p\xecY\xf8 ]\xbc\xf4\x0c\x0b\xd5k\xd9\xf2\x14\xff\xd2f\x8d\xfc\x19s\xdc\xbd\xd0\xe0\xb5\xa0S\xf9\x90\x08\x1f\xd2\x0b\x16bY\x8f\xa7\xc2n\xe6\xd2\xae\xb1_\x11\x80\n\xab\x8dW\xb6\xca\xa7O\xca\x8e\xe2x[\x8d$sS\x07\x8e\xbf5\xae\xb8\x1a\xee\xe2\x95}\xc1\x9c\xa0c\x1e\xc1 \xe2\x11\x0c\xba\xa5\xdc\x8fl\xf4\x94\xd9b) qe(e;\xc9\x7f%,T#\x0bDa\xc6\x9b\xb8n\xfc\xdfm<~N\xc2\xd8\xf8_a\xe0\xa1\x170\x04>\xa9\x88OJ\x84\xee(&\x95=v\xc4\x9a\xe0f\xcb\xc4\xacB\x8e\xc1\xef\xc5jElJ\xbf\x8cI\xcd>\x8c\xca\xb3*\xea=\xc3\xa5\xf5l\xfb]]\x14,\xc4P\xba\x9ddB_\x0d\x99n1\x96\xb4\x88\x0f\"\xe5(\xaeDN\x17W^+\x9d\xcfX\xaf\xe43\xd6\x93\xbc:\xdd\xca\x14\x89<r\xedq\x02<\x8bOA\x0dx\xca\xb3\x17\xec@)op\xf6\xd7\xf8\xe4L\xd0\x0b\xbb\xd8\xf2\xe2\x9c\xf8\xb6\xb0\xcb@\xa2\xaeK\x87q\xa35\xd0@\x96\xef{\xfa\xbfo\xe9\x1a\xa6\xb7\x8b\xba\x97P.Oa\x16\x1c\x17>\x94\xd3\x01\xc9\x19\xa9\xac4\xca=\x04\x9b\xf4E)K\xc4\xffOr\xd3\x87\x98\xb4\xe8/.\x15Q`\x04_a\xc4\xa1\xbd]\x07\xff:\xc6\xff\xff\x8d\xbe\xdb\xe7\xaf\xfe\x8c\x15z\x0f\xd9_\xdf\xf1\xf4\x97[\xa1\xfd\xf0!\x02\xd5\xa3\xb3\xb7t\xe2\x82\xe5\xd2\x8f\x91\xbcL\xbb\xf5\x17\xcd|\xbc\x1f\xecEIuE\xc7\x9b\xd9\x19&B\xca0\x11R\xc6T:\xcfTh3\x84\x1dJ\\\x8bl\x17\x90o\xe6\xbfRaa\xe1%/9\xfa\xbb~r\x14\x85\x13/=]\xc5\xc4\x9b\xa2\x90#\xf8/\x17\xcd\xce]n\n\xe623_\x97\x87rt\xd1x\xc8\x95\xe4(W\xac\xcb;o\xee\xca\x99\xfd\xb9\x9d\x91\xe5Z\xf4\x18H\x19\x85\xf8k\xb1E\xd2\xf4\xb1\x03\x0b\xfb\xaf\xe34-'\xbd-HP\x8a\xd9J\x16\xdd$\x8dbB\xa95o\x85\xa4E3!mfm\x93t\x1c*\xedP\x08\x9e\x96`\xc7\xf7w5\xa0Q\x14\xb7d\x15}\xfb9=\xd3:#4^<\x80\xe7tO\x0d\xd9?\xa3j\xea]\x85\xfc^\x92\xeb\x17\xcd]\xa19\xe7\xd7h\xceY\x9b\xd3\xc1\x03\xc6\x01W(\x13\x94\xc3\xed\xf8!<\xd7\xdb\xd3\xd1\x9e\x9e#\x177\x92\xe3\xbb\xd72\xf1YBNI\x9a\x92\xb8AJ\xfb^\x17I\xb2\xd2\x92\xbf\\\x05M\xf6\x05\xdf\x97\xb3\xd7\x01\x94\xf5\xba\xaen\xa1\x0d:O\xa6\x9ao\x91\xca\xaej\xe2F\x99\xf0S\x1b\x93\x96\xfd\xc1>e\x9cN\xedb\xab\xfa\xd5\xafj\x8a}\x92\x0c\xe1\x0f\xe5\ns\x92\xbe\xb9\n\xc5\xf7\xcfI2\x89\xfdUJ\xd1\xe7/u\x15_{K\xda\xd8\xdf\xea\xea\xb0m\x90\x0c\xe1\xbb\x12\x1cQ\xc1R\x06\xa6\xbd\x85\x07l\x8d\x88/\x8e\xc1wjxL!\xa6\x8d\xc3,\x08\xce0\xfe\xcd[[p\x9d\xd6\xdfo\xf8\x9b*\xec\xbd\x8a\x11\x8f\xf2 [\\\x85b:.X\x7f9}\xf3Z\xe3@\xce\xf5EM\xfb\xae\xc4\xfap\x86-=\xe3Y\xe4\x1f\xebb7P\x81\x82sd\xc5a\xef\xebSx\xf3<\xaf\x9c\x1d\xea\x9f\xb9`\x9f\xdb\x95\x94?\x9c\xc1\xffZ6\xe6\x9e\xf3j6i\xc3\x8c\x8b\xbe\xb4\xba!\x16\x1a\x08\xf9\xcc\x8au\xa6\xe3\xd2~\x89c \x03\xc0\x91\x84\x8e\x9dN\xc3\x85\xb7\xdc`\xe9\xa8\xaaz(\xa1\x95\xa4B\x18\xbfFV<\xb4\x07\xfb\x8e\xacZp\xe1u\xa9\x1eK\xc2\xf2f\x86\xd9\xe4\xde\x15\x84\x1b\xff~\xe5\xa5\x0b\x17,\xfa\x0f\xb7S\x81\xc0\xe6J\xc3\x1c\x07\xb6z\xad4\xff\xd2\x0d\xd6\x9ec[K\x92z\xba\xd0\xbb\x1a\xe5m\xa4\xd7\x9a\x8b`\xa4\x8e\xaa\xf3\xf4\xaav\xebI\xa1\xe4\xf3\x93\xe3\x8f) \x13\x9f\xca&\x9f>\xd5\x13D!\xf8\xd4R\xd7 \xa5\x9a\xa8]o\xa5\x9eK\xec\\\xddH\xd6$L\xf9p\xa20\xb1\xa9\xc0\xaf\xec\xc7rW\xf5<\x0e\xe0Q\x9c\xa2\xf7\x91I\xdaC\xb5\x9c\xbe\x90>\xfe\x10\xac7\x16t\xa0\xd3\xf1\xaa\xbc\xa4x\xae\x86j\xb0Z\xf1\xe8\xb4wu\xb0\x0b\x94\x1cR\xd5\x91}}\xfc\xbd68\xf9\xeb\xe3\xe3\xe7C\xd8\xeaWKf^\x92~M\xae[\x9c=\xa0u\xe9\xd0\xa9\xbb\xb85$s$e\x86Fr\x99u\x8a\xde\x14o\xd1\xcd\xc2\x90C\x81e\x01\xc0\xe51J\xe3y\xbd\xa44\xa0\x17\x06{\xac\xbcz\xe1\xb9b\x1d\xd7\xd4\x9d\xa9\\\x93x\xf4\x8b)x\xfcq|\xd6\xad\xe6\xce\xd7\x84p\x9b\x93\xf4[\xe2]n\x02\xf9[\x01dK\x1f\xe3\xa5\xa8M\x8c\x11\xab\xe5\xe73\xc0q\xd5\x06\x1cQ\xf8\"&\xe4\x97\xc6d\x82P4>\xa1\xc7F\xd0\xa5\xc8\x8d\xe6\x146?\xa68\x98\xe8\xef\x19rD\xed\x0c\xab[\xd3\xe4\xca\xbd\x93\x08\x19\xa4'\xc6\xfb\xa6\xe4G\xe6\x89\n\x05]\xac\xcd\xd4\x16\xb2\xc0\xba\xe5\xb5\xc2\x83\xbc\xbaB9\xf7\x90\xb9\xfc2\x94\x02\x84\xf6\x1eug,\xa1J\xef1x\x05\xf30y\xec@\x92g.\xa7\xe7\x867\x9e\xa0\x96\x04\xe5{\xe4*2=O%\x19\x89l\x06\xd0\x87\xfb\x06\x08\xb1\x08\xef~\xc2RY\xc9\x07\x90If\xb5\xb0*\x92\x9c\xd8\xbe}\xa6\xab\xca\xed'_\xe2\xbd\xea \x1a\xb1\x1b:!oV\xcf]+b\\\xbfD\x06\xaf\xfcp\x1a]Q\x88\x16\xbf\ns\x17\x95m\x86\x83\x9aB\x9b\xb5@\x05\x80\xb1\xce+\xa0\x9d\xa8\x8f\x81v\xad1\x1b)|\x8bM\x9e\xe1\x88\xf3Di\x8d\x17 \xe6\xbc7\xb9\x94\xaa!!\xcd\xf9\xe3\xc5\x10\xb9kQ\xa3\xbd\x92\xcdS8\x97\xedn\xf4\x08\xe0\xc0\xdf\x1b-\"\xfa\xbd\x07\x8emy\xc9u8y\xb9\x91\xfd\x86\xf8\x94%GA\x1dL\xab\xef\xda\xd9}<\xba[\xbb\x8f\x9d^\xaf\xc6\x08+\xf9\x0c#\xac\xaa1\x90Y\x12.\xf73\xc4q\xf51\xa7U1\x9fV0\x94\xb6\xb2J\x95}\xbd5D\xd4F\x8c\xa1T\xd6G\x12\xba\x15S\xf9\xe7\xde=4\xa3+\x07v.\x14#\x84eCe\x11\xd9\x12\x92\x82\x97@.Ml\xa9\xe1\x18\xf44\xb0\x02\xa0!h\x17\x05e1+w\xe6\xb0\xc0\x0f\xe1\xef7\xd5\xbb_m\xca\x1b\xf3\xde\xb5\xf9\"R\xd1\xe8\x05o I\x82\xcb\x0d6\xba3\xbbb\x12\x00\xd28XF2\x188\x0e\x1d\xc0\xf8\x8c\xdf\xc5(Yf\x91l\xdf\x86:\x10}f\x8a*W\xc2\xc9\x88\x0c\x0d\xa3V[(\x95Y%\x96\x0f5\x95\x1ceF\x10\xc2\x90\xe5\xc0 \xdb\xf0\x17h]\xb0\xd5wL\xfa\xf6\xc9\x82L.\x87\xd2uB\xabM\xdb\x8aN\xecT\"\xe2}.\x9d\xd8\xfdlKD\xc3!\x14s\x1bUVg\xb3\x81\xdd\x8e\xdc\x08\xc5\x1bZ*\x15\x1d\xb6\xa20M\xf6l\xbb\x06\xdb\xd3==\x97\xb8S\xb1\xf2b2\xfbN_\xb5\xf2bl\xdc\x8e\xfa:\xe1\xd5u\xe9\x89\xe9{\xb5\xf9\x19\x7f\xaf\x0e'\xe0\xcd\xab8\xba\xc2Li%+\xe2r\x85\x85T\xe1\x857I\xa3X\xb1\x85\x9a\xb2\nA\x14\xea\x1bXW\xe3@\\7\xca\xf0mn\xc4\xe7Za\x19\x8d\x87b\x12\x9aD\xfc\xa5\xb7\x1aB\xd4]z+\xbdp?\x8b\xe2co\xb2\xa0u\xf8O}\xbdI\x94\x85):\x1e\xd3\x1f\xfa:i\x84\x04\x90\xd6\xe2?\xf5\xf5\xa20\xb8\x1e\x82&\xe7Y\xb5zn\x9c=\x04\xbf[\xe3\xd3\xf66\x8bI\xa9n\xe9E\xb5~ \x03\x86\xa0\x01\x8e\xbc\xc2C\x98V+\xf8 \xfau\xe5U\xbcn\xf9\x8df\x90q\xb4\xa2\xc7j2\x04\x8d\xf7\x1c\x1b\xd2Q\xe0%\xc9\x10f\xa6r\x8e\x93C\xd0\xac\x13\xab\xf1\xca\xff\xe8\x87C\xd0\xc0\xfe\xf9\x9bWC\xc8\xaa\xef\xd7$N\xfc(\x1c\xc2\xa4Zv~\x9e\xe05\xd6\x10\xd6e\xe4\xd4S\xc8V\xa99\xea\x89\x8e\xacQ3\xf4\x12\x7f~/\x94V\xe9y\xaa\nM\xe2\x02\xb0\x81\xb2\xf5T\x0e\x96\xa5\x13M\xaf\xa2C\xae\xb6~\x1bE\x81\x9a\x8e\x14g\xd1\x9dEY\\W\x8bR\xbd\xfb?\xdc\xef\xdc\x9f\xeb\\{gFA\xc8\xb6,\xe8@\xea\x94\x82\xbd\xff\xe1\xde}K>\x8f\xaa\x0d\x06\xdas\x0d/|i\x1df\x85\x86\x7fN\xa20e\xb9\xb9H\xfe&c7\x88\xb5=\xact\x0b\x05\xd2\xb2\xa4\xd8\x93f\xb3a\x19\xefV\x91\xdb\x99l\xe7c\xc3)\x1b\x88\x9c?]7\x8e\x85\x18\x87\x86\x93\xc4\xe9\xc4$a\xde\x1fb\xc6\x97\xe4\xfamLf\xfeGi\xce\x1c(a\x05(\xf1F@\x996\x03\x85\x0d\xa7\n\x96\x0cK\xf3\xb1U+x50Md\x98j\xa8 ;\xe8(l\x13\x05\xb6\xe5\x05(\xe97\xec \x95\xb1\xd7\x14\xe3b\x84o\xd4M\x17^z\x82\x88\x99\x08d\x17\x8e\x9c\xb05b\n0\xdbW\xa8'm\x87\xbe\x9f\xa0\x9a\x08\x89\xf1a8=a\xf8\xfc5\xb9\xa6\x1dd\xd0\x01{kB\xe7\xcf,yP\xb9C\xff\xc2\xe4\xf2\xf8\xeb\x00,\x0b\x860\xb3\xf1O\x87\x8a2\xf7Qg\x1b\xa2\xe1\x10S\x05M\x9cztYK\xe8\xe2V#g\xacy\xd4\x0c\xd5\x89V\xcc\x90\xdd\x0c\xa1hf\x87b\x08U\x83\x17\xbaV\xe8\x9a\x8b\xa4`j\x13\x8c\x8c\x81\x1d\x96+\xa3\xc6\x7f\xea\x82\xe7\xb8\xb0\xe8\xc6$ ^Bl\xaf~\x0e\xd7&,\xe34\x83\x0eVj@\xfc\n\xa4\x8b\xa3)\x11\x06;u\xf6@\xa5\xad\x81\xee[\xca\xee(\xbd\xacl\x10\xba(\xdetJa\xe0\x87\xf3w\x91\x1d\x88\x89\xdej \xf9F\x96z\x95\xf7\xb2\xf4\xfa\x0e\xc7\xbcp!Q\x04\x8c*\xfb\x96\xb3^u\xa7\x98xP3J\xf1\xa9dM\xa0\xb9x\x10D#(c\x92.\xc9:\xe2\xd1\nS\x17@\x90\xe3\x91z\xdfX\xa6\x0c\xc8O~\x91\x01\xeb\"p S\x01\x9b]q\xb1U\x10\xa6\xda\x0d\xc3|\x19\xa6\xd1\xb7~\xba\xf8Z\xac\xf6\xcb0%q\xe8\x05CX+\xc7,\xe3m\x1b\xf5&B\x87G+\\s\xd7\xc3\xbaA\xe4\xfcp=\xf3/\xf4\xe4M\x00 \x02\x00z\x92Z1\x10/\xf0\xf3\x8b\xf1j\xa1\xbd\xaf\xd31\xdb\xa1M%\xaf\x86y\x0b\xc3\xc1\xae\xd0\xa0Pl\xad (\x07\x12\xac\xaa\xdf\xad\xa2\x95)\xf3\xb5\xc0=\xdc\xbd<\x12|\x15^P\xa7p \xc9\x15~_1B\xaa\xd5\xbfi\x95T\xb2\xc2\x08\x0d\x0f?}\x82\xd8\xb6\x06{h\xcb%\xd16\xdbq5\xf3\xe4w\x1cOx8\x90(\nN\xfd_\x880>V`B\x0f\xb7z\xb3\xa9\x0c\x934\x97^yZAS\xa6o-\xf6\nH\x96\xc6\x86\xebQ\x01\xda\xd2\x98\xb9\xd1kXP/\xb4\xeb\xf8\xf4 2\xfa6\x9f/3:\xce\xff\x1c\xb1\x8cp\xa1\xa0b0\xa2g\xa7\xc6\x02\xb9\xca\xe7P\xce\xa2\xc4\x83\x0fU\x80\xd0\xa7\xc2\xcf\xb7\x84\xc1m\x90\x1cd\xd8m\x82\xe8\xa0Cv\x11\xa8P\x07\x0e\xd0\xe2<\xe8\xf0\xbeb\x92\x05zp\xa6\x8b\x98T\x00\xda\xe6\xc0\x80\xcf\x84V|'\xd0\x8a\x19\xb4tG\x8cx\xda\x03\xac\xe2\xa5\x01z\x98U\xe5\xc0*\xc8\x0c:o\xf8L\xa8\xf9w\x025?\x87\x1a\xe3&\xaa\xb6\x03\xb0)\xe0*\x86O\xd5\x16\x0c\xe7\xdag\xc4\x0fk>\xd7\xfa<Aj\x7f\xbf\x12\xb9\x8b\xab@+\x99\xfc2\xe9D\xa4\xe5\x95h`\x1e\xab\x80\xa9U\xad\xaej#\x85 \xd5\x86\x96!\xb8\x97Y\x11\x8d\xf1\xbd4\xd7\xb6\xa9t\xdf\xc3\x84G\x0c\xc6G\x92\x89\xb7\"v\xca\xc4\xa4!\x90\xfc2\xd8\xde\xd9W\xf5\xd8p;\x17\xfd\x9c\x1f\x84\x03\x0c\x17\x98O$\xb5\xd9\x92\xcf\\\x08L,\xd2\xcaE\xe5,\x9f\x05\xa9b'Z\xe6e!3\xfe\x9cZx\x9d\x85\x91\x17\xad\x0b\xba\xa7\xbcP\xbc\x12\xf6~<>\x05\x1f\x15?f${\x1f^\xd7\n\xb3\xe5\x05\x89\xe57\x05Ty\x17\xa4\xfb\x87?\xf0\x91\xd1wE\xfe\xf4\x99\xcd8V\xcb\xca\x93\x87y\xd0\x81 \x9dp\x0f\xc5`\xc7\x05\x8d\xc5\n\x9dqM8\xd65\x8a\x9bR\x93CLd\x93\xe8\xa1R\x96\xd0\x89\xc6\x1f\x01d+\x8bkfOq\x0dO\xf2$<\x8f\xe1\xba\xd3q`\n\x9d\x11\xa4\xf6\x8a\x9e\xc9\xe3\xeb3\x17\xd68\x97\x95\x0b\xd7\x0e_\xbd\xea\x0808\xa6\x99C\x98\xb3,\xa5\x06rC\x87?o\"bK\x17\xdd\xc0\xe7\x9c\xbb\xab\xa1\\\xd8\x1c\xbb\xe8\xec\x920\x8d}\x92\xe8\x81!\x9e\x1c(\x17\x0c([\xf6\x12Fp\x8e\xa9\xe9m\xc7\xe9N\xa3\x90<.\x01f\xc9\x0c,%\xd8\\t:f\xe8\x88\x87B\xa9y$\xc6\x01\x98\x01$\x1e:\x89\xabb|\xe6\x91\x88\x07\x0d:lifWhZ\xbbF\x03fN.\xae\xc6\xbd3\x87\"\x9e\x98kO\xcc\xb4\x1e\xac\x06[B\x86+\xb8\x91K[\xac \x01>\x1a\x92\x91\xc9\xcfi\x11+\xba\x0eCb\xdb\xda\xe9[naG\xc2n\xdd\xce\xd8HN\xe1@\xec~\xb8\xf2\xd3\x05\\\x92\xeb\x04\xfenAG\xdcg\xd3\x176qx\x9a[\x17P\xd9d\xddX0\x84S\x17>\xb65?3J\"\xd3R\xc1\x0d\xa5\xb8\x96\xa5\xf2\x1a\xadn\x1b\xeb\x8f@\xad\x8d3\xf7\xe1\xbaw\x8f\xff\xca\x1d\x8b\xabg\xa5\xf5/\xff\x92\x07\n\xd1\x9f\xd3f9)\x97\xf2\x80\xc5\xcdEg\xc3\x18\xcd\x9b\xd3\xb1\xafZ\x80\x1b-\xb2\x89\xc6\xdc\xfa\x0e S\x1e+\xdb\x08me|=\x1a[#k\x08\xd6\xa8g\xc0`k\x88\xc5\x83j\xb8\xa7\x1b\xa3\xc6\xc0\xfa\x03\xc5\xc9\xcaE\xc0\xfd\xf1hxv\x7f\xde$\x9aK\x0d\x91qzV\xed\xb7^\xa6\x0c\xef\x06(=\x9c\xb6 (\xa3\x01-\x1en\x02\x14\x06\x0e\xdb\xea\xb2\xcd\x9c\x8e{\xe8\xe8Ma\xc5\xfe\xee\x9f\xa1\x8dD\x92]0.\xc0\x1e\xd0#Z~\xd1w\x1c \x9a\xf6\xa8\xf7i4p\xee\x1e\xa0\x05\xbe\xea\xf7\xce\xdd\xdc\x80\x0d\x9c\xba\x9bn_\xaf\x07\x18R\x12Y\xb1\xe4\xc7\xa2\x8b\x8b\x98\x95^\\h\x83~z\xd3iL\x92\x84\xd5a\xbf\xb5\xd5b\xc2{\x89\x89\xbe\xa38\xf5'\x01\xe1u\xf0\xb7\xb6Z\xe2Oy%\xfaK[%\x9b\xfa\x11\xabB\x7f\xe9\xaa\\`\xf1\x85\xb6\xc8KX\xfb\xf4\x87\xb6\xc2\xd4g\xe5S__\x1c\xf1b}\xcf\xfe\x9c\x15\xfbsmq\x10M.\x7f\xce\xa2\x94\x8f!\xffS[9\x9a^\xb3j\xd1\xb4\x12P\x05+\xb0\xa5\xd3/\xdcE\x96\xa6Q\xc8*\xe0O]\xa5\x89\x17\xae=\xb6\xb8\xec\xa7\xbe\xd2*\xf5yS\xfc\xb7\xb6\x9a\xcfgE\x7fh+D|i\xe9\x0f}\x85\x80\x97kc\xc6N\xa2`\x1eG\xd9J\xd4\xc1?t\x15\xa7^\xca\x90\x91\xfe0U\x08\xfc$\xcd+\xd1?\xb4\x15\xa7\xac\xcaT[H\xd8p\xa7D;\xdc)I=?Hx\x15\xfc\xad\xad6c\x90\x9d\xce\xb4P\x9d\xfa^\x101\x9cb?\xf5\x95\xd6\xbc\xc6Z[\xcc\xc7\xa9\x1f&\x87\x82v\xfed\x89\x85d\xa9/\xbc S^~A\xb4 \x9a\xf9$\x98\xa2\xe9`l[\xe2\x0f}\xc5\xb9\x8cf\xc5\x9f\x86\xcaYLD\xc5,\xd6\"\xd3,\x8a\xd0+\x93V\xc2\x9f\xfaJ\xf1\x92W\x89\xb5s\\\xf4\xb1x\xd1\xd7\x16\x0eX\xe1@[\xb8\xc3\nw\xb4\x85\xbb\xacpW[\xb8\xc7\n\xf7\xb4\x85\xfb\xacp_[\x88V\x1f\xb4\x98x\xda\xf5\xa0\xef9P\xd8Om\xa5b\x97-\x8c{l\xc1[\xd1\xb7\x90.\x19\xca\xd1\x1f\xba\n\x8c\xc4j \xac?\x8b1\\&-\xc7\x9f\xdaJK\xb6%\xfc\xa5v?\xf8\xe1*c8\x87\xbf\xf4U\x12^A\xbb+//\x18 //\xb4p\xbc$\xd7s\xc2P\x95\xfd\xd4U\n\xbc\x0bN!\xf0\x97\xb6\n\x99\x93\x90\xf5\xc4~j+1h\x05Zp\x05~x\xc9\x8b\xc3K]\x85\xa5\xe7\xb3\x81\xd2\x1f\xfa\n+^\xae]\xe8\xa5\x17_\xf2\xf2X\xdf\x01 3V\x81\x84\x99\xa9\x82\x9frR\"\xfe\xd0W\xe4t[\xe7w\xc8+p\xec\xc5_\xba*\xa1\xc7Ha\xe8iIa\x181\xbfaV\x87\xff\xa1\xab\xc8\x04F\xac\xc6\xc5Z]%\xb6\xbc\xfa\xe3*Z\xa5\xc5F\x12\x7f\x18*\n\xba\x17\x19i^\x94\xa5\x02\xa7\xd9O]%\xd6\x97\xb6\x93\x95\x17{l\x05\xf0\x97\xb6\x8a?I\x05]\xe5\xbf\xb5\xd5D\x15Sq4\xcf9F\xf1\x87\xae\xe2\xcfX\xe3g]Q\xcc&\x12kg\x123(\xc4Z\x08\xc4\xd9\x05\xe3\x99\xe8\x0f]\x056.\xed\x80\x12o\xc9\xfa\xa5?\xb4\x15\n\xd41#NB&\xf9r\xf2\xdf\xfaj\x81\xc0/\xf6S[i\xe9\x05\x0c\xc5X\nN]\x15L\xa3\xc4\xea\xe0Om\xa5\x95\xc7\x07\xb4\xf2\xf4\xa3I\xe3(d$\x95\xfd\xd4W\xba\xe6\x0c<\xfe\xd2V\xc9\x18\xeb\x9ddZ\xe6;\xc9\x96K/\xbe\xe6U\xf0\xb7\xbe\x1a_\x07\xfd~IY\x1c\x95\xd8\xb6R\xe6\xdb\xa2\xa9\x92\xf3\xce\xa9\x89yN\x19\xd9M\xb5$7%\x1f\xd3\\\xa4\x11\x7fh+R\xde\x82\xd5\xa2\xbf\xb4U\x16\xac\\\x9br=\xcd\x8f\xec\xd4tf\xa7>?\x0e\xe9\x0f}\x85T\xc0\x03#L\xeb\xaa0\xaa\x99jIf\x1a{\x93K^\xeeM\xb44\x9e\x11x-u\xcf\x18\x82fZ\xec\\{\xac\xe3\xb5\xa7\xedy\xedO \x13\xa7\xf0\x97\xae\xca\x15\x17r\xae\xf4R\xce\xc4\x8f\x85T\xc9~j+\x05\xfe\xea\xad\xc7\xd7A\xfc\xa1\xab8%3\xc1\xaf\xcf\xb4$\x82\x04\x81\xbf\xe2\x02$\xff\xad\xab\xc6v\x92\x9e5Yzs\xce\xdd,1\x93C\xb5J\xe0\x87\xac\x06\xfda\xaa\xe0\xc5_\xc5\xde\xd4G3f^\xb5x\xa5\xfbh\xe9%\xe2\x1cO\xb4k\xbc\x12\x10Z\x19\xa0\xb3\xf2\xd2\x94\xc4\xa1\xa8C\x7fk\xabE\xc1\xf5\x9c\x13@\xfe\xdbT-\x9f\xa9\xf8CW\x91\xce\xc9\x0bJ\xb3-\xbf\xd2~$\x88kl\"\xadi\xc4\x89L\x1a\xe9\x89\xfd\x9a\xd3\xc3\xb5v\x1d)Q\xc8\xa9\x83\xb6BNtSFuK5\x0c:\"v {\x07:\xa2:\xbbvn3\xdd7\xb9\x07\xfb\xc2\x9e\xecs\xc7\xd1\xdf\xdb\xd8\x01Yx\xe4\xd0\xfe\xe4`\x8cw\xa0\x03\xd6\xd8\x83s\x8f<\xf5\xf6\x97[\x8f\xebcYT\xdckx\xa8\xe7}5V\xb0\xf0\x8b1\xf9\x18\xd7\xda\xa2\x08[\x92\xcfQ\xe9\x03\xb7\x08\xd6\xab\xf5E/3Z\xe3\xc9\x13/\x8c\xc2\xebe\x94%O\x9fj\xb4\xb7\x81Q\xe5\xeb1s\xb9\xb5m\xe1/\xddN\x00\xd4eQ^ym\xe7\xf7\xba\x86zt\xbaX/\x9f\xb7\xa1\"\xbb\xe0\xc5\xaa\xfc\xae\xd7PQ0\xf2\xeb:F\x1e\xf2\xc08X\x91\xdf'\x9b*\xf2 ck\x11\xcf\xd8T\xd1\x0b\xaf\x870\xb5c\xd9\xf6\xef5^`\x9bA\xf9f\xd6\xa4\x82\x17\x8f\xb8\\*\xe2\x99\x14\xe6\xce.DM\xf7\x8b\xca\x15\xccVal\xe0\xc8\xf6\x1d\x0b\xdb\x12n\xdf\xf0\xa3\x05\x1d\x88\xa0\x03\xd6\x8f\x10\xcd\x8a\x94s\xac f\x05\x0b/\x01?\\S\xea\x93{\xcf@\x18\xa5\x98\xc0\x82\x8a\xdd\xfe\x94\x88\xa9vM\xe9C\xc5C\x11\x14\x13I\x8dCC\xb2W\xf1`D\x89\xf2\xa5yV\x1b\xb0B<\xb4\x0b4\xad\xacD\x17\xd0=e\xc8\xbc\xe4\xf3\xa4\xd3\xf71\x16\x99\x02\"\x0c \x8d\xef\x12\xf6.\xc9V\xab\xc0gi>$\xa8\xb9@>\xae\xc8$%S\xf0B\x06\x9d\xaeu\x9b\xebX\xf1\xe4w\xe0<\xd0\xc2\x04\x9e@\x96\x1b\x06L:\x9d\xb6\xa0\x99aj\xc9\x0c\x93\xe2r\xcc\xa2#\x1e\xd3\xb1O\xe8\xaf3\xcb\x05\xaf\x05\xe4\xe8\x02\xcddCJ\xf4T.\x8c.>c\xb2:sx\xf5\xb91\xdc\xe2\xea\xb7\"\x11\x1eb\xf9\xde\xfa\x82;qC$O7@l\xef\xcb#\xb6\xd7\x1a\xb1!\xf1\xc3y@\xe0\x84x\x93\x94s&\x9f\x87\xe5\x9f\xb3\xf0\xa6\xack\x02C\x7fWB\xbce\xd3\xc5/\x99\x19\xb7^c\xe6P\x14zK\x16)K?+\xf5\xf1\x1a\x8d\x9eM\x0f\xc3\xc1\xae\x14\n\x16\xe3\x0d\x97\xde\xe0h\x8a\xad\xdd\x8c}\xe2\x11vp\x95\xc6Z\xb5pc\x1b\xa2W\xab\xcf\x97Gv\xb1\x92\xf4s\xac\x91a\x8d\x7f\x1c\xba\x1b\xb8(\xbc\x92\xbb%\x91\xabu\xb0R\x1fD\x9bk;\x1d\x933Ge0\xe4\x05\x88\x8b\x05\xf0\x0d\xc0\x0e\xab\x94\x05I\xca\xebhJ\x1a9\x8a\xcf\x81\xa1\x89d0\xbe\xf2w%\x18\xff0\xceM\xcc\xb5\x11\xd0\xf2\xa9\xd6L\x93\xdaq`%+\xb3\xad\xd1\x08\x92:T\xbaC\x8e\x8c\xf5\xd98g\x89\xeb\xf2C\xc8\xea\xf7:\xf0 e\xdd\x85\x97H\xd1\x95\xecI+\xd2\x0f\xf5\x0cZ\x17\x19\xb4v\xac\x19|.{\x06\xff\x00\xd2\x15\x85\x1b\x1c\xd1\x1a\xe9@\x8aTW\x11\xd0jL\x0d?o\xeb\x16Q\xd1\xc4\xce`\x810\x1f\x83\x07O \xcd\x19tO\xf6\x866=tR+\xba\xf2\xe9\xd8\x93\x89j\xed\x04@\x12y\xfer\xfa\xe6u\x91?H\x9bYB~6\xdcih\xb2*\x1f~-\xb6Z\x14\xe2\x89\x99o\xcf\xba\xf3\xf2\x16\xe8B)\xda\xef\x8e2R\xe8i\x16\xad\xbb\xb4\xd2\xa4Y\x14\x13\xba\xa0T\x9b\xa9_~\x8c'C\x98\x0f<\xb2\xb7\xfa.\xe4\xab'\xe2\xf4\x96\xd6&\x87U\x17\x8eU\xb1\x14\x8f\x8f\x05\x99\\\xe6`L\\\xb8\xc8R\x88\xc9\x84\xf8k2\x85?&\xe0\xa5\xe0\x87S\xf2\x11\xfe\x98t-\x17\xce1\x99\x0bA\xe7m\x05l\xe6\xd5\xfd]\xb6`\xef1d\xa5\xe5\xc8\x9a\x97\x03\xa4\x1d\x94\x8e\xb3\x86%\x01(\xfb\xd5&\xe5\xd1R\x02\xed\xb4\xa2\x8e\xd0\x9a\xc6\xb6\xd9\x9f\x86\xadxw\xfb-Y\xb4\xb0&\x15\xcfg.\xe9\x7f=\xac\xc6\x8f\xac\xc7\x1f7\xe44Z p9\xb30\x9e\xb4\xc4\xd9Y\x9bf\x817\x1d`\xac\x84;\xe1C\x82\x1c\xd4\xf5\xdb\x01\x1a\xb7D\xbb\x0dswL \xf9\xe8M\xd2\xdf\x11\xeb\x93\xd6X?A\xacO6\xc5\xfa\xc9g`\xfd\xe4\xce\xb1^\xa0p\x86q\xed\x18\xff\xd4\xc4\xb5\xe4;%\xa0;\xa5\x15J\xd3\xda+\xdc)A\xcb\x9d\xb2\xb5\xda\x0cN\x97\x84\xcbdA=9\xfe!|\xe6M\xf3+\x0cZ\xa0\xf0l\x0c\x06,\xc6\x80\x05\xdcs\xe5\x87\x10/\xff\xd0\xd1E\xfb\x95\xec\xf7\x92:\xa5\xef[l\xd35\xf7s[\xd9\x89\x0bAu\xb7\x07\xedv;\x85\xdb4\x07\xdb\xf4\x1f\xb4\x8f+oo$\xafM\xa8\x06B\xd2\xe1\x8f\xd0Z\xe5\x891x\xf2\x02\xf8\xf4 \xfap\x1f\x0b\xf0\x07\x81!f\x00c^2\x84\xfeR\x03@\xe8\xfb^\x18\x02\x13,\xfc\xa4\xbb$I\xe2\xcd\x89\x14\xf8(I\xbd\xc9%\xbaW\xb5j|j\xc8\xff \xcaC\x9b\x11\xa5\xc8\x85\xcc\x85\x04)\xbc\xd6\xe5\x93>6=\x883\xa6\x89D\xa23\xc1\xa4V.\xb0X\xa5\x9e\xc3S.`b&dE\x8f\xbc \xf0\xc3y\x11j\x0dp\xe7xi\x14'0\xf5c2I\x83k\x91\xe4\x85n\x94(\xa6D\xe3\xe2\x1a\xd2\x05\x81\x1fWq\xb4\xda\xa6D'\xf9\x11V\xde\xe4\xd2\x9b\x93.\xbcO\x08\xfc\x987\xd8E\x865\xff\xd3v~\xa4\xfbl\xe2\x05\x01mb\xd9\x85\x13\xe2Ma\x19\xc5\x84r\xae\x8b4]\x0d\xef\xdf\x9f]t\x97\xe4~\x96\x90m\xfcz\xbb\xe8\xc7\xb8I$<\xc48\xd0\xe3\xe8\x0c\x0e\xd0\xd93\xf7W\x15\xef\x18\x91x\xb7 \x85\xacS\"\x9a~\x82\x86\x97\x94\xf1N &?g~\x8cZEY\x9eb|\xb7\x9f&\\\xd4\xf2\x13\xf8\x91vD\xe9(\x0c\xbf\\\x1f\xb9\xbf\xae\xe8\x88Nn\x08\xa9]\xc2\x91&Op\x90\xaf\xe6\xbb\x17~8\xb5\x19\x19\xda\xeak\xc0\x9b\x8b]~r\"F\xaa~\xd7\xabF\x981`\xfc\xba6\xa4\xa3\xe9@v!3a\xbd\xb8k1_\xe1\xf0\xb6\xe7\xb6\xe7p\xe2p\xd0\xee\xa8(\x1d\xa9K\xfay\xdbS\x95\xbeM\x05[\xcf\xd7\xa9\xba(\xaa\x17\x93\x1eb\xd7\xb6\x96\xf2%W>\x8b\x92\x9b{\xef\xe9\xe13\xf1\x12\x92;e\x0fk\xaa\xf0\x9b\xf7\xba*\x85\xbb\xb8\xbe\x16\x14\xd06\xa5 `\x0d S\x84\xe6f\x0c\x9e\xb7\xac\x19\xce.\x99[\xd1\xbas\x8b\xb6I\x97\xacI|m_7x@\x97=\xdeS\xb9\x89\xbaD\x0bk5Bc\xa3\xa8\xb0.9r\x86\xcc\x913\xe4\x8e\x9c\x93\xa6\xdb\x95\x8d\x1c;\xd5\xe7\xa6\xd1\x0f|+n\x953\x82\xce\xc1\x17)O[9\x98\xc7\x8a\x83y\x1b%\xc2c\xd8\xb2}LhPv\xec\xae\xfd\x12\x8a\xbb\x10\x9fyuK\x0b\xd97\x83f\x03gs\xdd\x98Zr\xbd\x18Z\xa8\xad\xb39*\xaf1\xf1\xc5\xb5\x9d\x8d\xfbg\xad&\x02mt;&\x8c\x16\xe1\xa5\x1b\xbf\xaf\xf6\x7f\xd3\x8a\xcc\xcd\xeb\xbd^\xc5=\x8b\xf1|R\xf5\x85p\x00\xdc.\n9?I\xbd~B\xe6\xc7\x1fW\x85k\xba\x05-\xa3\x13\xf1\x9e\xa4\xfc7\x9c\xd3\x14I\xa1\x18\x95\x18[\xff\xf2/R*B\x0b7p\x835\x19\x91\x07\xc8^W\xe1\xc8\"q\xd1\x81\x8b\x11T2W\x1a\x80\xbb4\xc7\x14\x93\x12\xcb\xe1\\rjW\\i1\xb7\xe8*\xe4\xc5\xda\xcc\xb5\xfa\xebJ\\\x82\xfa\xa8O2\x00\x9e{\xa9\x94\xb1g\xea\xa5\xc4\x90\xb4\xa7\xf2%[\xdb\xe2\xdb\x98\xcc\xc9\xc7\x95\xc6\xeb\xd9\x84F\xed\xe0y^\x8f\xac\xfaT\xd1\xe2\xc4n8\xaa\x19\xd2\xd6\x1d\xc3\x8d\xc7\x9e\x98\xbd\x17\"gS{\x86\xd6\x1f\xc5\xac\x0e\xae@]\x05\x0e\xe6\x16#\xaa\x1bP[\x1a\xd3\x14\x89\xae\xfc\x17\xffH\x8a\x88 #v\xc5&g/\x08\x14I\x05F\x94\x95\x0e\xba\xf2\x8b\xc0\x055\xe8\xe7\xad\xccb\xebb\x01\xe5W\xfaw\xd4\xbe\xd5\xdf\xeb\xeewy0\x84[\xb5\xb6.\xc2\xec\xef=tLa\xc5\xfdV\xf6\xcf<U\xdd\x9e\x1a\x05Z\xc4\xbd\x7fd0\xd8\xcdl\xa1\x99\xbb\x8by\x98\xc2\xf4\xef\xf7\xb5\xd6\xc8\x15#e\xcc\xf0\xb3\xf4?\xfaa\xd2rU\xd5\x1d/\x84\x96\xb1F}XM\xed \x1e\xd6\xe5\x10\xac\xe7\xc7/^\xbe>>\x7fu\xf8\xfa{C\xbc\x87$\xf5R\x7f\xd2\xae\xee\xaa\x08\xb4\xde\xa26\x8f\xf2\xba\xc1\x07\x0b?\x98\x1em\xfa\xd5\x9c\xa4\xcf\x199\xa0;P\xf9\xe6\xfc\xd5\xf1\xc9W\xc7\xcf\xcd\x9f\xbe\x0c\xfd\xd4\xf7\x82\xd3\x14S=l\xf4\xe9\x914\xdcM>\x8dI\x88\xfe\xbd\xe2\x8b7\xaf\x8f\x8e\x8d \xe4[\xe8[?\x08^\xb1p\xaa-@\x92\x7f\xf6\xdc\x9f\xde\xe2+\xda\xd9 \xbb)\xd4\x80\xd4\x84G\x8b(\xa3\xe0\xe0m\xbc_MK\x10m;I\xf5\xbb6\xe3}\xeeOo\xf3\x19v\x17.[\xc3\xe7\xfd\xeb\xd3\xc3\x17\xc7\xe7\xb7\\\x13\xdd\xd7\x1b\x03Y\xd7\xc8\x06S\xcf\xb0\xaa\x94\xcf\xc1z\xf3\xe1\xf8\xe4\xe4\xe5\xf3\xe3\xf3g\x87\xa7\xc7\x1a\xe6\xa7\xda\xce\xc4Htp#\xc6\xfe\x9aLq7\xbd\x88\xa3e\xcd\x8el\xd3\xd7\xcc\xd8\xd7\xd4OV\x81\x87I\xceZ\xb2\xe4\x80\x84W\xfa\x0eT\xbd\xaex\x0c\xd7F\x82\xa6\xb6\xee\x8d\xb2\x9c\x9a\xd8\x9e\xf2\x93\xdf{\x84\xec\x9e;,\x85\x86\x0b;\x1d\x87k\xb4\xc7\xe1\xd9Fw\\\x1aR\xdaz\xdci\xb7\xf25f\x1b\xfc\xfb\x8d\xab+\xd3\x060\x85\x9a\xa1\xddzT\x86\x01}\xc6X*g\xc7\x06\xc3Q\xbe\xc5\x00G\xea\xbb\x11L\xed\xca[ly\xa8\xad\xbd\x11BJ\xa7\xf1\x06\xc3^Il\xaa\x00a\xfenS\xf8\xe5\xccC\xeb\x01l\xb5\xaf\n\xed\xf6\x10\x94\xf7\x91\x1f6\xb7*\x1e\xc1\xe85\x1b\xf5\x8b\x07\xc7\xa3\xda\x02\x86\xadm\x01A\xe8\xbd(\xbb\x88W\x9d\xed\xba\xa5Odo\xf9.\xfc \xadhy6\x9b\xef\xa3\x0c<\xbc\x10I\xc9r\x95\xfa\xe1\x1c\xd2\x88gi\x07\x0fb\x92\x90xM\xa6\x88)t\xa4.\xfc\xf8\xc7\xe4G\x17\xd2\x85\x97\xf2\x03;\xfc\xe1O)\\\x10\x88B\xbc\xa9\xb1\xf8\x8aZpI\xae\xbb\xf0\x9c5\xe5cn:/,,\xa6E\x8b\xf8\x86x\xd3\xc7\xb4\xce\x95\x1f\x04\x90\xa4\xf4\xff\x17\x04\xbc\xc9\x84$,94o\\\xb6\x17\xff\x93>t\xbe\xe9\x11z/\x04\x9a!\xee\xb5\xeeA\xf5\xd7&\xab\x03\x12\xcf=\xa9.4\x1c\xc0d\x1c\x9eqE}\xfbq@!^F\xb6\xee8D\xbd\x87\xe7\x82\xd5z}\xe9RR\xc8^GY,\x19\x0b\xe3\x0dY\xba\xf0B\x88\xc2 \xe9\xc2\xbb\x85\x9fP\xc8\xcf\x02\x7f\x92\xc2\xd2\xbb\xa6k3\xcd\x08m\xc9c\x87Z\xd7ba\x99\xd7\x91?\xb5Q\x8f\x8ct\x0bo\xad\xe3\x86\x80\x93\xf2S\x7f\x01,?\xbc\x13}\x1ch\xf5in\xd6\\\xe3\x86Q\x99Mh\x9a\x97\xa5\xd1\x85\x1fN\xcb&\xf7\x1b\xdcA\xeb\xd3\xfd\x80d$\x98\xa8\x88E(b%cbF\xacs\xcd'\xf7\xeeQd*\xb3p,tm \x8f0?\xc3\xcc\x9b\x10\x13BEk\x12\xc7\xfe\x94\xa3\xd4,\x8e\x96\x1c\xa9\xe8\xd7\x90\xac\xc8\xc4\x9f\xf9\x13\xb40\xef\xc2q\x98d\x0c\xc3RVkI\xd2E4\x85\x10\x93\xd1N#\xbc\x01\xa6-\x06\xde\x8a\x85\xf2\xc4\x91\xf0jhjH\x1c\x97\xdd\\\x94\xb7\x82\x08\xbb\xfb\xe9\x93\x96a\xbc\xcd\xcc\xbe\xc8V!\xedn\xe3\x90q3\xa7\xf00\x11\xa5\xc8`\x1cZ%\x0d\x7f\xaaL7K(\xd9/&\xc8\x160\x8a\x8bAQ2\xceg\x02/\x19\xe9v\xe1\xa7,I\xf9\xb71\x99g\x81\x17\x17\xb6\xf4.=w\x08\xda\x86n\xde\xff\xc6\xbd\xe9 \xea:\xcf\xd7T\xa8\xe1\x8c;\xde\xc7\xfb\xa4\xf3\xf3\x98\x0e\xf60K\xa3g~8}\xeb\xf9\xb1&\x863\xc8\xac\x83G\x8f\x96P\xddf\x19\xcb\x14\xdee\xdc?.)\xff\xedh\xa3\xd0\x8b\x07\xd7Xm\x8c\x19Vxx\x8d\xd5x*\xad\xb9ch8\xf6Z\x98\x8e\xadp\xda\x95\xfe\x9a/\x02\x03{\xc5\x12\x01\xcd\xaa_;0\x1b{gt\xd2\x93\x86\x96jbQ\xcb\x0f\x9d\xd3BG\x00\x9bF\nu\x86\xd3h\xbd\x82\x01\xc4W\xe8\xe6\xd6g\xa4\xa2+(y\xbb\x13\x0c-\xf5\x9b\x16E~\xd6<\xa4w2\xf6Zr\x8f\x80\xfb\x1b\x03\x9b\x9b\x99\x80k\x95\x00\xf2\xd7\xea\x0e|\x1f\xe6V\x04\x94D\xc3*\n\xfc\xc95\xfc1A\x94\xbe$\xf8\xf3jAB\xb6\x03\xe7\x14\xbd\x8b\xadI?Ab|\xcdV\xbff8\x07\x10\x8f=\xc6\x13\xd0\x1f\x14\x19`\xa8\x1b!\x8b*\xcc\xea\xae\xf3\xba\xed\xa0\xcfCT\xf3\xaf'\xcd\xf0d\x11\xadY*\x16\x8f\xf6\xe3\xe6\x1f\xd7~[\xc3+T\x8f\xf8V\x84~a<\xef\xcbbIds\x8b\xb2\x9a\xfc\x01\x9a\xf7\xc4\x05kI\xe29\x11\x89\x97^G\xcf\xb3U@\x0fd\xf25\xb9Nlg\x08G^H\x8f]\xac\x06a\x14n\xb3f\x12$\xe0\xc4\x01\x8d\xc8\xc2r\xa7\x95.\xf5\x90\xe1k\xec\xeb]\xcc-ZXo\xe9U\xc4\xe9w\xc2\x8e{\xca\xe9'\xde\x92P\x14\x1c\xe2\xd1\xdb\xead}LA\xb4\xc2\xa8\xb3\xf4L`Vr\xa2\xea\xc4\xcb\x12nNv\x15\xa9j[\xdb\xa1G\x9c\"L\xdb\x8e\xe088\xdfMw@i\x9c\xf4p\\\xd0\xb7\x97\xe4:\x11,0gL\x0d.\xaa\xc2\x86\xb0\x15ZL\x9bL\x11e\xf6\xd2x\xee\xa1OI\xd7[\xad\x82k\xccE\xe2\xe6\xde \x89\xc1\xd1\x91>(\xd4\x1a\xbe2\xdf\x8f\n\x9b\xb8\xc2\x11%n\xae\\\x18{\x84\xe6\xd3\x1bC\x1ek\xe2G\x83t\xebf\xfbl \xf0\x87>\xd9I\xbb\xfd\xb8\xfel\xc0\x1b\x01n\x04\xea-\x87z\xdd(*\x10f=\xa7\xbb%\x16`WzR[\xd1\xe77\x06\xfd5A#h@X\xb4\x9e\x9f\xfb ~\x84F~\x9a$\xeb\xa0'\xa9U\xa4]6\x0f\xb0\xa4\xaa\xbf\xf5\x18\xf5\x06/\xad\xc6xn\x1c#\x8fY\xce/\x90Z+\xb7p|L\x1f\x1fwI\xf8sF2r\"5\xc51lc\xe95\x9fpK8 c\x9c-\x15`\xb7\x87\xd5\x859\xd90HV\xa2\xf6\x85|\xab.\xf3\xf6p\xae!m\x05d\xeb\xc8%Q\xaeT\xe3\x1a{P(\xd0\xa4*,\x88|p\x94\xf9o\xecY<%/\xc2T\xdb\xaekP\xf5Cg\x04\x83\xa6\xf6A\xd1Y6\x8b\x05\xc0%\"2\x0e\xa1\x03\xfd\x16|*&\x84\x181\xca\xe4\xdf6\x10\xc2\x0d\xa2\xaf\xc8\xb3\xb7\xe2\xda\xedj\x96c\x91\xd07&3\x0cj\xe6\x96\xf6\x850R\x0f\x0b\x93\xf9T\xe4\x172ODh\xef\xf0\x13\x85U\x80\x03\xedk\xdbiT\xe8E\xb6\x865\xf3\xd0\xb0\xaelO\x86\xcc\xf4\x1f5]\x0caI%_\x8e\xfe\xb9\xbf:\xe5]h\xd7\x16=\\\xe4\xeb)*\x050~\x9fR\xc1\xc4\x97.\xee,G\x81\x88\xa7\xdf\xad\x0d\x12o\x8c\xca\xf2\x92\xb5KH\xae\xe0\xc2\x95_\x96\x82\x88`\x8ef\xb9P\x87\xe2<\xd5\xa0'\x12\xdf\xdb+\xd9\x02\x9c8\x8e\x0b+\x9b\xb80\x17?R\xf1c\x89'\xacz-\x82\xbe\x08\xdd\xa9rS\xa2V\xb3\x1d\xd4U\xc8\x83c\x17\xed.XR\nx\xbb\xdb\xedR\x86\xb9\xaa\xdab\xcb\xe3/W\xcc\x1c\x05<\xf8\x915\xf0#\xe7$\x91\x99N\x1cy\xfe<y\x8a\xad\xbc\xe2)\xb0j\xf9\x9d:\xd3\xa4\xcf\xb0\xe8Y\xd7gZC\xc3\x9b\xa26\x9a\xac4\x19\xa6\xa8T\x89O\xa0\x92Y:ux\xca\xcd\xfe\xee\x0eb\xe8\x1d\xcfg\xa3\xc0\x80\xfd}S\xe4D\xe3\xb1\x98sei\xc9\xc4*\xa3\x02\xb2\x86035N\xf4;8\xc9\x98}d>\xd3E\xa64'\x13\x8fJ\xb4\xfc\x83A\x14\x92\xffJ\xcb~ \xca\xad\x8d`p5\x80e\xd1\n5\xa9\xd3Y\x80BM\xc1\x0c#\x12j\nD\x04BM\x91p\xd8\xd3\x14\x89(\x83\xba\"\x1eWPS\x84\x91\x04u\xefE\xc8@\x8d\xd62\x8fa\xa6\xf9N\x0er\xa5\xf9\x94\x85\x052N\xcc\xf0\x15\x8f\xc8a*a\xc1\x174\xa5\xdcU\\7\x05\xe6N\xab\x98\xc3jy\xbe\xb0j:\x19\xbb\x10\x96L'C9\x9f\xeag\x10\x0e\xee>\xc9n\x00\x8a[\x13\x17\xac\xf3s\x92\xbc\x8a\xa6Y@,WA?4\xaa\x1f\xca\xd2\xcc\x0d\x1eI\xfc\xf0\xa9\xa3\x1e|\x8aUt\xce\x85\x98dh`\xef\xdeE\xab\x0b/\x1eB$\xfa\xa9\xd42Y\xad\xde(\x84\xd2\xcd\x89\xfc\x8e\x86*\xda\x94\x90\xfa\xa8\xf9\x89\xbb\x05\x14\xe0\x00b\xd0\x8dMX\xd9V\x1c\xb6\xe0\x1f\xbe(\xd5\x03be\x87v\x7f\xf7\xa1\x9a\x03\xd4\x17E{=]^QVT\xc9\x1c\x9a\xe5E\x95l\xa4^^\xb4\xaf\x16%\xdcfU=\xa8&\xcc\x0fWy;\xa3+\x82-\xed\xef1\x9e\x88\xae\xdb\xae\xa3\xb6\x1a\xf0\xf3l\xdf\xd1\xa5*]\x19\xcfg\xd4'\xa6\xe5uN\xeb\xd7\xd9D\xcdoJ\xd0^\xd4r\x07\xd2\xb9a\xba\xff\xb2{.\xf8\x02\xd7\x1d.\xe9\xea\x9c\x7fho\x88\xb8=\x172\xf5\x03\x9br\x9f\xc8v\x9d\x9f#\x13\xd6s!.*\x11\xc7a^E\xb9 \x1d\xea\\B\xc5\xa5|7\n\xdf\xc7\xc1\xd1\xc2\x0b\xe7\xa4\x95+V!\xe6\xa5^<'i\x9dCN\xd4MH\xca\xc4\x00\xb3\x80\x97\xc5\x81JE\xc5\xa3\xf1\x8b\xbeq!\xea\x06\x917=]\x91I\xab\x01GL\x0e\xebR\xa6\xf7\x10\xeb\nA\xeb}\x1c\xa0\x87\xb9\xae\xc64\xba\ni7j\xba\xf3|\x0c\x08\xb7S\xcc\x8e\xd0j\x18z\xb8\xa1\xe7\x9ax\xb3\x88\x89\xc1.\xa6\x98\xb2Mp\xc0\x14\xae\xd87\x99\xd2Y\xe0\xcdrw\x15\x935 \x85t`\x1b\x06.f\xf6>\x0eZ\x0d\\\xea;b\x82W7\x8b\x83\x0d:\xc4\xb1z\xf1\xa4~\xff\x88G\xc0\x89\xa2u\xd0]yqB\xd8\xd7\x8e)\x834\x19[Y\x1cPq\xdb_z1\n\x91\xd6Y\x1ew\xd2\xac\x9c\xa5\\\xd8\x95\x1fN\xa3\xabn\x10\xf1k~\xdcW\x93\x08#\x1f\xdc\xbfoA\xa7Rc\x11%\xa9\xe6\xf5\xcaK\x17\xe6\xeeXmJ\x98\xf8w\x0b?I\xa3\xf8\xba\xfa\x06/v\x98\xcc^-\x93un\\\xac\xb4,\x97\xc5\x1c<\xa0\x83e@KH\xec{\x81\xffK\x0e8]\x86\xde\x9b*\x1am\xb4>b\xd3\xccIz\x14\x853\x7f\x9e\xd8\x0eE\x8c\x84\xa2\xf4\xd8\xa0p\xc1I\x11I\xc7\xc4n\x86r\x899\xef^\xe7\x12Pj\x88v\xc5]\xb2\xf0B\xa7\x0d\xa5\x81<\xb5 \x99\xbe\x0c\xa7\xe4\xe3\xd0\x90\xc2\x1e8\x03$\xe1\xae1\xcb\xb1\x89FE\xe1\x0b?HI\xfc\xc5H+\x03\x7f\xe0]GYZ\xa6k\xacc\x9d\xfd [t\xae<\xd1\x0f\x02\xc9q\x8a\xb4\x90\xa1F\x14'\x14\xd8\xa6\xf8\x92\n@\xab\xfap\xdag\xe9\xa5\xd6\xf9\x88b\xae'\x9dbL;B\xdfF\xa5\xb7\xe3\xea\xa8\xf1\xbe\xcd2\x1a\x98kl\xc29g\xd5\xbc\"L\xd9\xd4\x8cYf\xa0\xb5\xc6\x992\x88T^\x10\xf4\xf3D\x9du\x8b \xd6a\\\xcau\x86f\xa5*\x11Z\xc5\xea\x8e7\x7f\xc4.q\x9a\x08\x02\xde\xa8\xd1\x1d\x1cr\xa2P\xb7\xe9\x0b\x15\xb0\x86\xe0\x9bU\x981k\x7fc\x1a\x03Hg0v1F\xc7`|e\x0bl\x10OkZ\x03z\x9ch(j\xbc\xb7o\x81D\xe2\x06\xec\x8ep\xe86g\x02\xe7\xd7\xa53\x816\x94\xf3\x1c\xe9\xb8\xd0\xf8vK\x10=C>\xe4\xf6@`Z\xce;\x9dy\xc3\x1eb\x80\xd1z\x07\xca\x0f\xbb\xfb.\x11\x13s\xe5\xb8h\x18!n\xae\x89\xf7!\xb6\xf5\xcc\x98pU<\x11\xab\xf8\x8d!i\x9fx\xd0\xc9\x8f\xae\x93\x1f\xce\xb9\x95b\x97\xffIwHVK\x1e\xbc\x9a\x9bqk\xe6\xf9\x01\x99\x1a\xda\xc4\xf3\xde\xebN\xa2\x00\x15\xf3V\x8c\xd9=!S\xdf\xff\xff<\xcf\xab\xb3\xac\x0b\xd0\x11\x80\xe1\xa7y\x9c+\x83\x0f\xa2x\x16\xb5\xf72<`\\=I\x9bb\x17f\xfa\x15TIW\xd3-+}\xa6\xccFh\"\x8eO\x9e\x9aYh\xadE:?\xdd\xfeP\x1f\xdc/5\xb6\x87\xe2\xe1\x1b'\xa50\xad'v.\xe7\xcek\xac\xa4(\x03\xb6j\x98\x03\xcb]\xd94\x054\x07e.S<\x9f\xdd6\xff\xb0\xf6\xb3E\xba\x0c^Dq\xfeQ\xd5uK<7.\x18\x87\x88\xf9\x95\xf2(f\\`\xf4\xf0\n\x86\xa2\xad\xf9;\xd6g\xd3\xdc\xfci1\xbe\xfa\xe9L\xfd\xc4\xbb\x08\xc8t\x08Y}\xc5(d<\xeb\x90\x116I\xd0\xad\xff\x8e\xaf~PO\xb0\xeb\x808uLL63{[\x08b+\xc9\xb0\xcdH\xc2\xd2\xac\xd6\x01RF\x10\xd1\xf4v\x16\x07\xdb\xfcS\xe3\x87)\xaa\x8dY\x9a\xad\x1az\xaa\x01({c\xfeFl\xa5\x02\x94Y\x1c\x98\xab\xb7Z\\\x9e#\xd1pi\xea4\xef7\xffV@\xe4\x19\xbek\xe1\x13\xf8\x93\xcbaem\xf5\x03u\xc1:\xfe\xb8\n\xa2\x984\x05;3\xa2\xc4\xd4_\xb7F\x88\x14\xb5\xd4\xfa\xcd_\xb7\xf17\xe9\xe3*\xf6V+\xf2\x85;a\x13\xd9\xbem_\x91 b\xe6\x8d\xb6\x9c\xd7\x0efA\xfc\xf9\"\x1d\x82\xb5\xd3\xab\xc1\x86+\x7f\x9a.\x9a*%\xf1d\x0831\x90\x1a6#\xa0\xfd\x9d^y\xf39\x89\xe1\xfdK\xc3\xack q\x89\x80'\xac)\xcb\xa9\xfb\x04\x13v\xb7]\x96\xd2^\x11\x8bS\xb7YN\xb3\x8b\xa5\x9f\x0eaaZ\xc1Uw\xe9\xad\xda3\x0b\x92\x04\x9et'A\x14\x8a\x898\xf4\xd3\xfa\xe3\x87q\x06f\x9an\x92\x7f\x1d\x1d\xa5W8\xf73\xc7\x95\x9a\xbe\x91\xa8R\xceCK\xdb_\xbe\xacb\x90Qojd\x18\x94\x02\x80`J~\xccxy\x7f\x15\xce\x1f_x \xd9\xdfu\xfd\x0f\xcf\xde\x9c\\\xf5\xbe\xfej\x1e\x1d\x1e\x1e\x1e\xbe>}\xbf8~??<<|\xb6K\xff&G\x87\xaf\xe8\xbf\xaf\x1e\x04\xfb\x7f\xa5?\xbe\x7f\xf1\xec\xd5\x87\xe3\xf7\xb4\xc2\xfb\xd9\xd5\xad\xfe\xeb\x05\xbf<\xbb\x1f\xf6\x9e\xcd\x16\x1f\x9f\xad~\xba>\xea}\xdc\xbd\x7f\xff\xfe\xfd\xce\xcf\xeb\xdd\xa3\xbf\xac\xfa\xcf{\x8f:\x9dY\xbast\xff\x97\xbd\xfb_\xf7\xf7\xef\xbf\xdfy\xf0\xe8\xfd\xec\xea\xf9l\xef\xe1\xfd\x9f\x1f<\xea\xbc\x8f\x07\xcf\x07'G\x97\x8f\xe8x\xfe\xfc\xdd\xc9\xe9\xbb\xe0\xd5\xe1\xf1\xf1\xe1U\xf8\xe8\xfe\xfd_v\x0e\xe7\xeb\xdd\xfb\xeb\xef_>\xbf\xaf>\xef_\x91\x9f\xfc\xfe\xe5\xe1\xe1\xe1\xf3\x87\xa7\xefO\x9e}\xf8\xf3\xfcY\xf0\xb7W/\x0e\xa3\xbf^=?|w\xf2\xf1\xe2\xbbg\x0ff\x9d\xf5\xdb\xaf\xc3\xe0\xbb\xc3\xbf\x85\xfb\x97\x83\xc9l\xe7\xf0\xd1/\xf7\xdf\xce\xde\x1c=|\xf9\xf2\xfb\xd0\xdf{\xb1\\\x1e>{\xf5\xf0\xc5\xab\xc5\xd5\xbb\xfe\x83\xc9\xa3E\xb8\xf0\xff\xf6M\xff\xe8j}\xfcM?]\xbe}\xde\xfb\xf9\xf4\xeb\x9f\xf7\xe7\xdei\xfa\xed\xfd\xcbW\xdfy\xe1\x87\xe5\xe1\x87\x93\xe7\xef\x83?\xf7\xdf\xac\xb3\xec\xdd\xcb\xd7\xd1\xfe\xe5\xa3\xde\xe9\xc7\xd9\xc3\x9f\x937\xe9\x8b\xfd\xf9\xeel\xd6\x8f\x92\xb7;o\xc2W\x93\x0f\x0f\xa6\xbb\xab_\xa6/\xdf\xa7Y?:\xdc\xfd\xd0{\xfe\xb7\xe8\xeb\xe5\xc7ep\xfc\xfd:}\xfe\xfe\xa7\x9fNw\xd2\xe5\xd7\xcb\x9f\x9fuV\xdf_?\\=\xef\x7fx;{\xf0\xd3\xdb\xe3\xde\xcb\xdd\xde\x9f\xff<\xf1\x9e]\x85\x19\xd9\x9f}\xf5\xcb\xfc\xfat/\xfd\xee\xe5\xfbG\xfbo?<\x88/\x9f\x7f\xfb\xe7\xd7\xdf|\xe8=\xffz\xf7\xc5e\xf4\xf5\xf2\xc5\xea\xf5^\xf4>\\\xfb\x0f\xbf\x8e\xc8\xe1\xe0\xfe_\xbeK\x96\xdf\xfd5\x8b.?\xf6\x12\xff\xa4\xff\xd5\xc3\xf4\x9b\xcb\xd7\xfb\xe4\xd9\xa3\xe4\x9b\xab\xbf\xac\xee__/'\xd7\xde\xdb\xfb\xef\xe2\xb7\x9d\x93\xb7\xcb\x8bW\xaf\xfc\x8f\x93\xbf|\x98\xbf;\xe9{\xef\xff\xf6h'\xfa\xea\xbbd\xfe\xdd_\x0f\xbd\xaf\xf6\x8f\xaf\xe8\xb2\x1c\x9e\xbe\xff\xf0\xe6\xe4\xeb\xbd\xa3\xef_\xbe\x1c}F\xd0\x19\xd2\xbd\xb8N\xc97Lj\xae\xd3.\n\xad\xe2\xc4N5\xf2\x18\xaai\xc6=\x8d\x84\xc34-\xaa\xe9\x1c'\x16;\xf0\xcf`\x87\xd0\x81\xd8\x81\xfb\xb0\x0b\xdb\xd2]\xe9\x8d\x0b\xa4\x9bF\xcf\xaeS\x82\xa6a\xf5\xd7f\xb9\xe9 \xb3\x10\xc4Q2\xcb\x17:*\xe6\xfc:\xee\xf3\\\x14!\xb9\x82\xa8\x92\xe4\xa7\xc6N\x03\xc7I\xa0C+\xb1q*f\xc3x{\xe6BF\xe99%\x06=\x97\x05q\x86\xa7\xd0\xc3\x0b\xe2m\xd8\x85!\xad\x120\xfb\xc5\x00\x9e\xc0\x8c\xfe\xd3\x19\xc1\xae\x83\x90\xf5\xc7iw\xb2\xf0\xe2\xa3hJ\x0eS;p\xce\xe0\xc9\x13\xe8?\x84O\x95\"\xe8@\x9f\x17\x0f\xf4\xc5\x03V\xbc\xaf/\xddq($\xc6I\xa7\x83\xe6\xfa\xf0\xf4)\xf4\xf7\xe1\x1e\x0c\xf6\xf6\xd4\xf7\x0f+\xaf\x07{{pO\x0d-5@)\x9bI\xcf\xe6\xc9\x18\x06K\xe7\xf2\xf4)\xecV;Q\x18\xb3~\xab^\xfa\xbdZ\x90\xed\x9a!\xf6\xf4)\x0cZ\x03\xc0\xd1\xa2\xb4WF\xe0Y\x1c-o\x87\xc2B\x97\xc5\x8d\x12\xe0\x8f\xb0\xc3\xc2=\x8e9>\xf782\xc36\xf8,\xc7\x83G\xff\xe9\x8c\xa0\xbf\xbf\xf3p\xc7\x81\x88\xb1\xe13\x8a\xe0\x99\x8b\xd1n\xb1\x04\x9e\x82\x07\x07\xe0\xc1\xb0x\xa7\xb2\xc0\x0c\xd2>\x1c0@\xa7c\xda\x0d\xdd?\xbc\xd1x\x8c\xc0\x19\x9c\xd1\xcd;&\x0c\xae\xf7`\x7f\x87\xbe\xb0F#\xcbq`\xc8\xb1\xc2\xcf\xd7\xcbf\xed\x0cp\x1d\x1e:\xd016\xdc\xef\x89\x96)b\xe4-\xf3\xae\x06RW\x15\xee=\xbf\x93\xfe)\xf2C\xdb\x92\xec\xb4$E\x91d\xc5\xc9 \xea\xf3\x7f)\x84\xa5\xf8\xab\x92\x9f\xdc{?L\x1f\xb2u<\x90\xff\x18\xb2\x90\x88lQ\xac\xc3gG\xcf\x8f_|\xf5\xe7\x97\x7f\xf9\xfa\x9bW\xaf\xdf\xbc\xfd\xeb\xc9\xe9\xbb\xf7\x1f\xbe\xfd\xee\xfb\xbfy\x17\x93)\x99\xcd\x17\xfeO\x97\xc12\x8cV?\xc7I\x9a\xad\xaf\xfe_\xea\xde\xb4\xc9\x91d9\x0c\xb4\xdd/k\xf6\xfe\xc2~q\xa4\x86\xdd\x99\x83\x04\n@\xdd\xa8F\xd7\xeb\xd7\xd3#55\xd3\xfdl\xaa\x1f\x9fH\x00S\xcaJ\x04\n9\x0dd\x82yTW\xcdT\xafQ\xd2R\xa2H]\xdc\x95(R\x07\x0f\x1d\xe4.IQ\xa4\xb4\x07wy\x99\xed\x9b\xf9#\xfa\x03\xfb\x17\xd6\xc2#\"32#\"\x13\xa8\xaay\xd4\xc2\xac\xbb\x00\xcf\xc88=\xdc=\xdc=\xdc\xafo\xbe\xec\xf5\x07\xbb{\xfb\x07\x87G\xc7\xed\x1d\x8b\xa7\xcbat\xa4\xc8g\xe9\xc1\x13HN\xa0\xdd\xf6\x1cqS+\xc3+b\xc18\x93Q\xd9s\xe8#O\xe7\xec\xe0\x9b\xa9z\x9e\x1d\xa4\xf4\x14\xc35\xc0O\xc0\x1e%c\x0e\xa4\x8b8z\x87\xc4\x13\xa3\xba\x15Q}\x99\xc3W\x178\x1bAO\xd0\x0b\x02\x1e\xac\xb2e\x1a\xac\x97\x98\xf0f\xaf\xaaE\xbb\xca\xef\xe7`\"\x95\xd7s\x9b.\xa6v-;\xfcN\"\xb0x\xad#\xbc\x03=\x0eq\xa3\xe4\xf1\xc8\x87\x8c0\xd3\xfeN\x8b%\xd7\xcc\xc3\xdcD\xf1s\xa4\xe0\xa1\x90\x85+.m\x90\xad@H\xff\xb4G\xb0\xeb \xc2\xd8)] Jr(\xf5\xec\x1f\x1c\xf6\xfb\x07G=\x8a\xd7\xf4 \xba\x8c#\xa6St\xdd\x1f\xf0'\x8c|\xb0\xe7\x03*\x9df\x02\xf3\xed\x88y\x18Q\xfc?\x92p>B\xc8\xa0\n9\x90\x00\x07\xbb\xf0\x08\xa2\xea\xad+>}\x99f+\xe4\xdf\x82\xb1\xd5\xb1d\x0c\xea!\x06\x1d\x0c(jY\xe7\xbaG\xbbZyC\x9eM\xd2\x8d\x897\xab\x0b\xbb\xa7\xa0\x02\x0b\xabM\xe7\xfa\x08>\x84\x80\xca\x02\x942\xa8\x12\x05\xdd\x17v\x9f\xce\xab\xe7\xe8K\xf80\x82\x04\xe7L}F\xd9r\xe7P\x85\xa3\x9f\x10\x9cb\xc3}\x18BO-\xb2\xe6E:\xf4\xb9\xa6\xea\x05K`\x04m\xa8\xe6T@\xc4B^\xbff\x14f\x01\x8f\xf8\x18:s6\x08X\xc0\xd3\xa7#\xe8\xcc\xa9\xe4\xd0\xa6;\x18\xe6t\xdb\x9d`\xf9\xc1\xfe\x01|\x88\xe1\xb2E\x03.\x88\xfa\xe6\xd0\x19\xc1\x91\xa3i\x91\"p\xa4\xb6\x14\x95[\x8a\xf3\x96\xb2\xbc\xa5l\xf3\x96(\x91`7 #\x07\xfb\xda\x87N\xf5\x06\xaa\xe1~3}5\xc2W\x8b\xcc3\x19\x9c\xc2+\xef\x15\x9da\xd8\x81\x1e\x15\xbc\x16\xf9\x9ck\xf44\xc8\xf0>\xf5\xd2Ew\x1d\xbd\xb3\x07\xec\xee[D;Z\xbe\xc8\xaa7\x17KU\xe3\xa8?,U\x15Q$\x94\xf6\x0ce\xe8\xef\xe2 \xad^\x93\xa9\xcdiBq\x9b\"6\x0b\x19\xcf\xd1\x9b\xd6\x1c\xe8\x91w\x9e\xa3\xb7o@o\xf4\xb00\xa07\xc5\xd1\xc1n\xce\xbc\xe5\xd1t\x06{\xb4\xc2\x12\xe8\xf0\xd0\xd1\xe3:\xc5\xe5\x98\x93\xd5H\xdf\x8d\x19/B\xa7\xaf\xa3y~\x85\x12\xd4\x13\xe8\xc1\xed-\xbf#\x8b\x8e\x1b,K\xc4\x13\x14\x8cq\xa7i0\x97\xce0v\xd4\xbbH\xd0-)H^y\xafl\x82>\xf2\xcc\x90\xca\xd0\xe3\x14lJ2\xf2\xc7\xbcJF\xbc\xe7tp\xb8\x0b\xb0\xae\xf92\x8ab\x1b\xbf.\xa3KZz\x87=\xf8\xe4\xd5\xc0q\x81P\\K\xa0\x8cM\x9d\xccq\xe0 \xf4\x91\xf3d\x9d\x0ee\xcb\x1f\x8e\x80\x96\xa7\x07\x82\x11\xee\x94%<\xa5\xfd9\x855\xec@\x02CXW\x10\x89n\x89\xa5CQ,\xa1E\x07\xac\xb6v\x9b\xd6\xb6\xc3j\xcb\xeb\x99\x8b1\xc9\x83(\xb5\x82Om\x82\xb5u\x18\xe6\xca\x8d\x05\xac\xb6\x11,q\xf8\xc8\xbd*E\x96\xe6\xf7F\xd0s\x9c\x13\x08hcG'(\x9f\xb5aQ\x88\xbd\x1e\xa5T\xed\x11\xcc(\xad\xdeAzA\x85\xa7:\x12\x94Qd\x0e\xe0\x96\xbe\xeb\xd3w\x83\x13\xf0\x19\xc5Q\xaa\xcf\x8a\xea\xb3\xbcz_W=\x7f\x15:0\x9b\xc2\xed\x08\xfa\x03\xba\xb1\xae*\x1c\xae\xe1P,+p\xca\xdb6\xf7\xea\x0c\xed\xdd\xc1Q\xe5\xc8[x\x85\x96\x1dk7i\xb2\xb8\x921\xd08\xdb\xc6\xdd\x9f<{\xfd\n\x1d2\xf9W\x9d\x87M\x9e\xe6fXI{S&yMW8\xccwS\xf2\n\xf9\x85\xdd@{[w\xa3\xf1\x9a\xf4\x0e\x92g\xed\xa8\x14\x0d]LPd\x87\xf6\xee\xae\xe2w\x1c\xf0GG{\x8e\xd6\xa57\xfa\xf1\xba\xf4n\xe3\xdd\xde\xa8KU\xd3(H\xf9\x185q\xbbh\xf9\x8a\xe3.\xf3\x11\xa7\xef9\x1b7\x0b\x924^g\xa5\x8eq\xa5j\x94\xcaxM\xd8\xfc\x9c\x12\x03\x161\xc1\xe0\xc3\x11\xdf\xd4(\x8a\x8bP3\xeclT\xf5\x83vN\xa0\x85>\xfaH\xf2\x92Rv\x00f\xee\x0fy\xbc\x0b\x9e\x94\xc0\x85\x16z\xce\n\xa7!\x96\x1f\xc19\xe1\xe34\x18\x85\xde\x83\xef\xb1\x84 u\xda\xf0\x88M\x15\xcb\\n\xa8g\x1e\x84\xderY7\xe4\xfa \xa1\x9f\x16\xfa\x13%]\xbe\xd4\xd2w\x83\xd3\x18l\xd84\x08\xf9L\x9c\xfb2su\xfa\xf1i\xa1\xda[\xf7X\x9ca\xa7:\xe7\xc5\xa9\xf3\xcd\xcd\x9aTN\x9e<\x80\x12\x0bV\xc5\xeeYf1\x8b\xe1\x11\xa4$\xf6.\x96E\xc0\x7f\xe5\xc2V\xd14{\xf2 \xbcb\xb7\x1a\xdb\xfa>\xbc\"\xb4\x8f\xf6\x1d\x17B\xfb\xf8\x00=\xa5\x8b\x0e\xd0\x96\x06\x1bu\xbb\xe07\xfd]\x1d\xc7 \xed\x03\xc7\xb6p\xb6\xd2(\xaez\xea\xb0\xeb\x80\xbb\xa6x\xe1\x94\x89u\x83\xe4\xa5\x98\xebM4\xc89\x85\xd2\x9eUyD\x15\xdc\x8a\xe3\x80\xa5t\xf8\xeew\xf3\xee\xe1\x9d[L\xb7U\x8d\xc9\x12\x97|k7\x9a\xde\x0dWt\xefAWtww_Y\xcb\x81\xd3\xe5w{\xbc$ .\xc3Mj\x92\xd7U\x9a\xca\xd8\x8e\xbbg\xd0\x86\xb8\xfb\xb1\x0b\x16\xabU1\"\xb2V\xd8\xe8\x0e\xa4I\xdb\x08\xa1\x9an\x9a\xeeU\xaf\x94\xf2\xa8\xef\xbd\xaa\x14\xc5p\xeb\xa0:\xbd,F\xfd~5v\xbc\xc7j\x19T\x8b'9J\xf1\xc9\xd3cj\x0b\xbd\x07C{p\xec\xd8F>-\\\xf1\xbe\xd2\xc4e \x068e\x9a,\x91\x88\xceQ\x0d}\xc8t\x9a?K\x8b\xfd<\x80\xce!e\xe9\xc9z\x19\xa4\xb6e9\x1a\xc7-\x1d\xeb!\xe3t\xaap\x9b\xf7\x8e\x0b\x87\xd0\x1aA\xc2\x82\xd5:<\xcf\x91\x9c\x1e\x91=\"\x8e\x93\xab\x89\xe8\x0b\x92%\x86\x1e\xabj\x85\x88R \xe6\x0cm/t\xces\x911We\xd3\xf3o\x9f\xd9F\x82\xee\x9cYC\xa2\xee\xfc\x84\x9e\x8b\xc0\xd7\xe4\x15\xcak^\xbbx&\xf5\xec\xbc\xd2\xb1\xdfnO\x1d\x17\xcf\xa1\xf4\xd0\x14\xdb\x0b\xa7\xebG\xa1\xef\xa5\xf6\xdc^\xa0\x02\x9a\xc2\\<\x89\xce\xf2>\xdc0\x0b\xcc\x15<\x85\x9b\x13\x07\x96\xec\x9e\xd3\xc2\xc5\xb3\xf3l|Cke\xe2\xc2xM't1^\x1b\xf4j\xd2MK\x18B\xb2\xc9\xe6\xd9\x90\xe4<\xe4\x81\x83\xd6w\\Cr(\x0elRO\xb1\xc3\x95\xbd\x19\x88\x8d\x7f\"\xb5\xda\xdf;vl\x8b\xd6n\xb9[\x88\xc65f\xb8\xc0\x8e\xa9`[Fp M7\x19E=\xf5\xda\xf9\xdc\xfe\x89A\xefv\x928\x1f\xda_xW^\xe2\xc7\xc1:\xbd\x9dy\xa9\xe7\xec\x04+u\xd4;\xe3\xcf'\xd7\x83^gr}\xf8b\xbasY-\x12\xb1:\xc7\x9f\x0f\xa7mg\xb8s\xb9RI\xdd\xd8\xeaZ.X;\xb2\xef\xb9\x19K\x12/\x0c\xd2\xe0K\xf2\x83x\xd9t\xf3@\xd8\x92\x98R5\x15\xd7~\xe8Y\xce\xd2y\xb4n\xb4\x12 k\x95\x85\xde>\x1d\xf7\xa6\x0e<\x85\x8e&'\x95\xed9\xdc\xd6\x84\x8a{\xaf\xbb\xa2\xd2\xb3\x1d9\x8e\xb0-1\x0bm\xdcMI\x922\x15\x8e\xe5]DY:\xbcXz\xe1[\x0b\x86\xe0a\xc4<\x19hB\x81M0\xa0\xc0\xe3\xdd=\xbd@\xb4\xbb\xbf\xeblc\x1e\xc6`\xf8\xdd4\xfa$zG\xe2\xe7^Bl\x0c\xd1\xda\xa6C\xa6t \x03\x96W\xe3\x9e\x1a$\xaa`\xbb!\xec\xe9\xc3:\xf4\x0f\xef\x1e\x98\x027Yy4[\xcaUE\xf7\x0e\xaa h\xf8\x04\xefU\xb98\x93\x05\xaad\x8f\x89\x02\x87U\x81\xc2\x03\xae\xfeS%\x81\x98N\xb8\x14\x93e\xc8\x05\xcarIf 8\x85\xa4+\xf2\x87\xe5\x05\xebg\x0d\xb3\x12V\xe6\x0d\x03k\xf2\xa4\x8e\xfal\x80\xaa\xc2<\x92\x93\x1b\x06<\xdfX\x1b,K-\x9a\xc9E}8\x05_\xa4\xfb\xa3\x9b\xa2\xf2\x82\xe0\xc1DS\x19\xaf\xc2\xeaa/\xc3B\x15;\x1aA\xc7\xa3\xdb\xae\xd3\xa3\xbb\xad)~\x80\x89\x9dm.!t\xfa\xdc7\x83\x07\xc1K\xb9\xa2\xb9l\xf2f\n\x90\xd89\x81v;\x84'\x10\x9f8\x10\xf0\x00\x83<\xbcv\xa8\xe6\xc6\x16s\xfa\xa0\x18\xcb9\xa5!~.Z\xed*\xc7\x11\x15\x8f\x83\x1c\xd7TdfX+\xe5\xb2\xdb\x10\x1d\xcd\x87\xac\x88\xdf\xde\xc6\xf0\xa4\xa5\x12 \xae\x86(qW\xf5\xda\x86\x94G$5\xe8m\xc4\xccUB\xd8\x95\xb4$\xef\x95.\x06h\xdbf]\xd4/`\xcc\x9d\x06NE\x07B\x18\xc2\x8c,IJ\x10R\x8ap\xd8\x8c\xa8\x02\xf5\xaa+\x99O\xfa\xb6\x13-D@1\x88\xbb\xe2\xdb\xee^\x95\xe8 \n\xaeO\x92\xb5\xbb\xaf\xcb\x92\x85\x8c\xe0\x8eC\xc8\x0bhu\x83\x04%zSx\x01:\xa5\x01c\xda\x11\xa3H:r+>\xcc]\xe5\x149>\xe5\x88hZF\xb3\xb2\xbe|\xc2\xcb\xc7v\xe8B_:\x9e\xd0w\x93e\xe0\x13\xbb&\x91\xb27N\xa76\xa5\xaaI\x193\xef\xbeR&-H\x93\xa8 0^\xefe!0)\xdfd\xdc\xd7\xe1\x14\x02J\x8dQK\xf9\xe8\x11\x84\xf0\x94\xd9\xf4R<\xd7\x88\xa6\xb6\xd8\x03\xdbv9f\xa4Z\x99_\xf3P\x98YOx\xfbt\x08<\xc5\x1eS\xda\x1e@\x1b\xbd6P\n\x0c\xf9\x03\x1c\xa0\x93\xbf\x84a\xfc\x02\x87\x91\x7f\xfar\xc8_\x0e\xa1\x83\xceXO\xa1\xe7\xb2/#\xad\xd9\xf0\x8aG\xbc`\xac#@\xd6\x11\xc3\x13\x08N\x1c\x88Xh\xb1t\x1c\xd3\x9e\xe8\xfd\x11\xa3;\xe3\xc6~u\xb76\xed\xe2A#.\x19\xe5\xb3\x94m\xb7\x94\x1dp\x1bIO3\n\x18ZJ\x0b\x15\xc4\x16M\x08\xb2`\x8d'\x93lv\xd4\xebu\xe8\xdf\xf9|>\xad\xb8\xa3\xc7\xa2Po\x97\x15\xea\xed\x1e\xcc'\x93lN\x06\xf8sN\x06\xf4\xe7\xa07\xc3\x9f\x83\x9eZ\x05\x9dd\x0b\x9b\xd9\xf5\xc7\xac\x99\x0bSs\xe8\xd85\xfe\xbc\xa1S\xe8\xc3e\x9f\x0e\xe5Jg\xe4\x00\x8b\xcf\xe6\xf3\xa9\xf3\xd5\xe0\xbd\xa52\xf0\xf2`/\xe6\xf3)\x02|sC o(\xcfk~\x9b\xe7Fw,\x16\x89A\x95Y\xb1\x999\xe9\x11\xf6g>=\x15i\xefm\xde\xe9A\xaf7\xe3\xb5\x8e\xb9G\xcd\x94\xd3\xcd[\x0bEL\xc7X\x87\xe5|XU\xff\xce\xa5^\x8e#\xd1\xd5S+\x0f\xed\xe6BX\xad\xbf\xd2\xef%\x8cx\xb6X\x1bGg\x9f\x8e\x8a\x91\xe2\xa0\xe7\xd0\x06\xdf\x05\xeb\xd2\xba\xeb\x9eH\xf9\xa9r\xe9\xb0+\xc2w\xdf\xc6\xd5s\x898\x10V\xa3\x01\x8am\xac;\xb1\xf0\xd1Z\xe3\xc7\xff\xe5\xe7~mj\xddkd\xf5\xccY\xc8JvdS.\x9c\x1f\xf13<\xe2;\x18\xb7\xc72\xdb=\x1a\xf7rC\x02U\x13\x9f\xd31\x8d\xa8F\xde\xd7Pr\x14\xff\xa2\xdc\xdf/\x1d\xb7\xdb\xc1\x14\xe9y\x00O :q\xd81\x87\n\x06\xe98\x98\xa2\xeb\x8dA\x92l:\xcf\xd4`\x83A\xcfU=s\xa3\x96g<\xb9\xf6{\x9d\xc9\xf5\xec`r=;\xeaL\xae\xe7\x07\x93\xeb9~\x99O\xb2^\x9f\x92\x82\xac\xd7?\x9cOw.kpf[zx\x1f\xe4\xb2S\x14\xdfR\xc7a\x96q\x81>\x11]\xdb\n2\xdd}\x12\x0f\x9dJ\x90\x03\xebG?g\x0d\xc1zV!\x14\xd6\x8f\xfe\x96\x1e\xfc\xb7\xf5\xe0\xbf\xa3\x07\xff\x8fz\xf0\xcf\xeb\xc1\xbfI\xc1\x9e\x02\xfe-=\xf8\xdf\xe8\xc1\xffV\x0f\xfewz\xf0\xbf\xd7\x83\xff\x1e\x05?W\xc0\xbfC\xc1\xbe\x02\xfe'\x14\\M\x91j\xfd\xe8\x0f)x\xa6\x80\x7f\x81\x82\xab D\xad\x1f\xfd}=\xf8\x17\xf5\xe0_\xd2\x83\xff\x17\n&\n\xf8\x7f\xd5\x83\x7fW\x0f\xfe==\xf8\x1fP\xf0K\x05\xfc\x0f\xf5\xe0\x7f\xa4\x07\xffc=\xf8\xf7)8P\xc0\xffA\x0f\xfe\x03=\xf8?\xea\xc1\xbfL\xc1\xaf\x14\xf0\x1fQp\xf5\n\xab\xf5\xa3\xff\x89\x82_+\xe0\xffY\x0f\xfe\xa7z\xf0?\xd3\x83\x7fE\x0f\xfeU=\xf8?Qp\xa4\x80\xff\xb3\x1e\xfc\xbf\xe9\xc1\xff\xbb\x1e\xfc\x7f\xe8\xc1\x7f\xac\x07\xff\x1a\x05\xff@\x01\xff\x0b=\xf8_\xea\xc1\xffJ\x0f\xfe\xbf(8S\xc0\xff\xb7\x1e\xfc'z\xf0\x9f\xea\xc1\xff\x9a\x82\xab d\xad\x1f\xfd\x19\x05\xdf(\xe0\xbf\xd0\x83\xff.\x05?S\xb7\xc3oS\xb8\xa7\xc2\x7f\x9d\xc2\xdf,\x14\xf8\x9fSx\xaa\xc2\x7f\x83\xc2\x93jH#\xebk=Y\xfeZO\x7f\xbf\xd6\x13\xda\xaf\x91\x88+\xe4\xed\xeb\xbf\xa3\x07\xff\xbc\x1e\x8c3\xa0\x10\xc3\xaf\x7fA\x0f\xfeE=\xf8\x1f\xe8\xc1Hh\x15\x8a\xfa\xf5\xdf\xd7\x83\x7fI\x0f\xfe\x87z0\x92 \x85,\x7f\xad\xa7\xd6_#eR\xa8\xf5\xd7\xbf\xac\x07#\x99P\xe8\xef\xd7\xffT\x0f\xfe\x15=\xf8W\xf5\xe0\x7f\xa1\x07# R\xf0\xed\xeb\x7f\xa6\x07\xffs=\xf8\xd7\xf4\xe0\x7f\xa9\x07\xe3\x9e\xfd\xab\n\xf8\xd7\xf5\xe0\xdf\xd4\x83\xff\x8d\x1e\x8c\x9b\xf3R\x01\xff\x86\x1e\xfc[z\xf0\xbf\xd5\x83\x91\xd9\xff5\x05\xfc\xdbz0\xca\x00\xca\xc6\xfc\xfaw\xf4`d\xb1\n\x07\xfb\xfaw\xf5\xe0\xdf\xd7\x83\xff@\x0f\xfeC=\x18\xd9\xb7\xc2\xd8\xbe\xfe==X\xcf4\xbf\xd6s\xc7\xaf\xffH\x0fFv\xf2\x93\n\x18\xd9\xc9\x17\n\x18\xd9\xc9_W\xc0\xff'\x05\xbfU\xc0\x7f\xac\x07#'\xf8D\x01\xff\x89\x1e\xfcgz\xf0_h\xc1\xdf\xfc-}i\xe42\xd5\x981\xd6\xd7\x7f\xaa\x07\xff\xb9\x16\xfc\xcd\xcf\xe9\xc1\x7f[\x0fF\xd2\xabH#\xdf\xfc\xbc\x1e\xfc\xf7\xf4\xe0_\xd4\x83\x91 (\"\xcd7\x7fW\x0f\xfe\x05=\xf8\x97\xf4`\xa4\xdf\x8a\x90\xf2\xcd?\xd2\x83\xff\x89\x1e\x8c\x84Z\x91/\xbe\xf9\xc7z\xf0/\xeb\xc1Hc?S\xc0\xbf\xa2\x07\xff\xaa\x1e\x8cT\xb3\x1a\x93\xc1\xfa\xe6\x9f\xeb\xc1\xbf\xa6\x07#\xa1>S\xc0\xffJ\x0f\xfeu=\xf87\xf5`\xa4\xc8\x8aT\xf0\xcd\xbf\xd6\x83\x7fC\x0f\xfe-=\x18)\xf2\x1b\x05\xfc\xef\xf4\xe0\xdf\xd6\x83\x91\xf4VC\xe4X\xdf\xfc{=\xf8w\xf4`$\xa6\x8aP\xf8\xcd\xef\xea\xc1\xbf\xaf\x07\xff\x81\x1e\xfc\x87z\xf0\x7f\xd2\x83\x91\xc6*\"\xe47\xbf\xa7\x07\xff\x07=\xf8?\xea\xc1\x7f\xa4\x07\xffg=\x18I\xef\x0f\x150\x92\xdew\n\x18I\xaf\"\xe3~\x83\xa4W\x11f\xbf\xf9c}i$\xbd?\xa3\x80\xffD\x0f\xfe3=\x18\x89\xe9\x97\n\xf8O\xf5\xe0?\xd7\x82\xbf\xc6\xd5y\xa92\x1e\x9c\xab@\xe1<\xdf\xb0\xe3\x9a\"\xb9|\x83\xc2R\xa4\xc2Q\xb0|\xac\x927\xe4\x1bI\xe1\xcab\xf2\x08a\x8ex\xdb\xab\xe9\xee\xa3Q\x945u\xdc(5\x84tL\xa6\xa5\x17\x9aT\x895J!\x83_\xc8\x81>\x1d\x89\xa2q\xcbx\xf1~\xa3\xeaKo\xde\x12zc\xbcK\x92\xf2\xe4\xdd\xdc\xf2\xc6\x9c\x92\xe4\x81\xa3}\x93\xdb]\xb2\xc2\xee\x82\x1aL\xa6x&\x9b)\x9euv\x12\xf4 \xeb\xf5:\x93\xeb\xc1|r\xbd\xebu&\xd7{\xbd\xc9\xf5\xfeEgr}\xd0\x9b\\\x1f\xd2/\x87\xf3i{\xe7\xae6j\xd1\xc9\xf0>\x9d\xf4:_N\xc7\xcf:?3\xbd\xc5\xff\xbf\x1a\xb8\xef\x11v;\xeeu\x8e\xa7\xf4+{\xc8\xbf \xf4v\xfc9\xfb\xd9\xeb\x1c\xc3t\xe7\x8e\xdd\x0f\x99g\xd8Vv\xae\xdc\x085\x99\\{\xfedr}\xd1\x9fL\xaeg\x87\x93\xc9\xf5\x9c\xfe\x87\nV:\xe1l\xc6q\xca\xd9\x9c\xe3\xa4\xb3Y\x9f\\_0\x85k\x8f+\\\x0f\xe60\x99\xa4\xf4\xf5\x8b\xc9\x84\xbe\xeb\xf5P/;\x9fO&\xe1d\x12c\xa1\xc1\x11\xfbs<\x99d\xfd\x83#Z\xa2\x7f\x84\xd6\x16Z\x11\xfb\xd3g\x7f\x06\xec\xcf.\xfb\xb3\xc7\xfe\xec\xb3?\x07\xec\xcf!\xfb\xc3\xea\xec\x1d\xb3?\x1ek\x81un\x9f\xfe\xd9\xed\xf5\xaaq\xae\x98y\xcd\x826\x0b\xecm0\x9d\xcd\xda\x96\xba\xe1P\x0b=8\xe4\xc3>\xbc\xd0[\xc9\xe8R\xd3I\x9d\xd3\x99\x9a\x1fL\x98\xb6{r\xad\xda\xba<\xad\xe9Mt\x0d-A\x95\x06\x8dU?\xeb\xfc\xcc\x84)\xdaQ\xd3\xceT\xed\x93\xeb\x191\xd9\xd7\xb60\xe4\xf9w2\xe4\xa1\x89l\xbcq\xbf\x96\x92E-\xcb\xed~\x9e\xcer\xb6\x96\x8a\xce\xeb\x8b.x\xd1-\xcd\x07\xb7&\xdb\xa9S\xb5>\xce\x8c\xd6\xc7\x85\xc1\xfa\xa8\xb5\xb5\xe2\x1d\xe8\x8d\x0c\x92\x0b\xbdA\xf2\xaad\x90\xd4\xd7G\x9f\xcd\xca\xaf\xdd\x14&\x96\xf1<\x8fs\x8f\xf3\xdf\xa6\xd3\x86\x96:\xfbt8\xbb].oW\xb71\xb9Mn\xd3\xdb+\xe28\xa7\xdc^9\x8e]\x98\xbb`}`\xa9\xf6NX+\x15}t\xfb\xc9'\xb7\x9f\xde~\xf6\xe2\xf6\xec\xf6\xcd\xedO\xbd\xa8T\x04mX\x9a*+\xfa\xb7\xdc\xa4\x7f\xe2\x8d\xa6\xe6-\x17\xf7\xfb\x87\xf6\xe9\xb0\x7f\xf6\xe6v\xf0\xea\xa3\xdb\xdd\xcf>\xba\xb5O[\xe3\xfe`w\xeaL&\xb37\x7f\xcd\xb1OG\x93\xc9\x05\x92\xf1\xf3\xa9#\xbf\x93\xa4\xb7\x83pv\xbb\x1b\xcfJ\xef\xa4\x8b\xfc\x9dg\x9d\x9fa\xef\x04.\\I\x03\xbb\x97\x8dJ0\xaf\x9b\xcd\x98\x97Y\xe48\xa8\xe6\xf4a\"\xc7a\xd5\x05\x98'@\xeb7:\xd0V;\xcc\x82l\x06_\x12vw\x9b\xe7\xc6\x9cy\xa9w\xae\xcf\x7f\xba\xf0\x92\xc5\x10o\xb6\xc5\xae\xf2p\xe5\xad\xf1\x99\x1d\xd1q\x07\x1a\x0f)\x91f\x0b+(=\xbd\xbb\\\xa6\\\xc6\x11rYU^\xe3\xf6o\xc55\x97\x0bf\x8a\xdb\x8b\xc7\xe1\x03\xed\x9d\xdd\xc4\xec\xc8\xa8\xb3%\x87\xdb\xd9\x92Y\xd6\xcc%\xf1b\x1b-\xc8\x04\x03\xb9\xe8\xa4_1\x13T\xd2U\xfd\xcaD\x18\x7f;f\x1e\xeb\xe3\xfe\xb4\xde\xb4N?\x89\x9c\x0b\x92\xf6\x81e\xed\x92\xc1\xdc\xab\x11\x13x\xca\xf0K\x82\xf2i\x19\xb8\xf0(\x12fe`\x82%\xbd\xf2\x1d\x8f-/u\x1c6\xca\xd2Z\x84\x970<f\xaez\xd9\x12\x03\x0f\xe0u#yK\xdc\x15)\xfb\x87\xfa\x9d\xbb{P5\xcf3\xa448H\xf6\x0f\xab\xb8\xed\xe1\xe5\x8c\xc9\x98g\x12\xed\xb6O\x9f\x17\xc9:'\xd3\x0fvT\x89\xe2c\xdec\x93+\xb0\xdf\xe8,<\xc7\xbb\xc9zW`*\x1b\xf8\xb5\x8e\xc4k\xc9U\xe0s\x94\x0b\x98\xff\xe9\xb20\xd7\xef\x8c'\x93\xcf?\xe8~\xd8>\xb5\x9d\xf1d\xfa\xd5\xfb\xdb\xe9\xce%\xd2\xf1\x0f\x1eYR\xb1r3\xb7\xf9}\x07\xa7\xfb\xe1)R\xf4\x89\xed\xdc\xe2\x06\xea\xb69`\xea`M\x1f\xf4\xbb\x1f\x9e2~\xf5\xc1\x9d\xe9z\xcbn\xa1\x0b\x1b%n\xc2\x03\x01o\x1e`\x18\x8d!x\x0e\x13\xfb\xb3\xd2\x8d\x9f\xcdQ'\xcf\xe5\xa6$\xbe\xccs\xb9\xed\x8c?\xefN\xdb\x1f\xect\xc95\xf1m\x8cR\x16\xe0m\xa8\xe2[\xf7\xe5\x8b\xf3\xef\x7f\xf6\xfa\xcdk\xbc\x87j\xe1\xa5\x15\x8b\xdf\xf6Kb\xdf9\xefw\x99\x03W\xd9\x15\x7f\xbb\x99hE\xcc\xd9%\x08\xb7M\xfa)\xed^gl\x9d\x9f\xfbQL:_$\xe7\xc9\xc2\x8b\xc9\xec\xfc\xdct\xa7\xe8\xae*\x05\x8dc\xff\xc6\n\x83\xe6C\xdbf\xb3&\x18\x03\xd2\x96\x85\x87\xac\xe3\xd1\xa3\xdc5\\\xa6I\xe3T\xef\xe6Y\x90\xa5\x0e\x0b\x1e\xc6c\xc6\x90;\xcf\xbe\xce\xfb\xd3:?_F3/Y\x9cSF\x7f\x9e\xc7\x94;?\xd7\x1c\xb9\x14\xbf\xf4\xf2\xf6\xdc\x16\xb5J\x93$\xa6\xa3<\x17\xc1\x1cl\xc5\x83\x0b\xa4\xb33Q\xa6\x0fJ\xde\xca<\xc4P\xbe\xdau\x99\xf4\x85\x7f-\xbf\xba\x82\xd7]N\xd9\x8dU\xe12\xfe\xa0s\xff\xe3\x9f\xce\xfc\xda\xc2i\xf9\n;\x8e0\x90\xc6\xfd\xa0\xe3\xac\xc1\xb1\xa61j\xf6\xb2X\xf9\xe6a\x16;\xa8]\xde\x89L\x18\xeb\xbb\x10\xb2\xdb\xc8\xe8\xc7')\xd7\x08\xf7\xfa&L8\xb8/uh\x12I\xc6\xd3\x07\x12B\xb42\x08\x0b\xd5\"\x89a\xebe\xe0\x93\xa6\x89\xdf\x08\xb9\xf4Bo\xccPH\xbb$-;\x14\xc1\xb6l\xba;\x8b\x04i\x1d\x8c\x1aE\xba\xebh\x8d\xa9\xda\x0bl\xc4k\x15.t:\xf9\x1c\xb9\xd0\xbb\x13\xbb\x15\x93\xf4\x974\xf8\x90\xc7\x13+T\xb6\xe3p:\xee7q\x9f\x87\x1cI\xee\x8b[\x1e\n\xa5t\xa5\x9b\xb1\x0f\xdf\x93Mw\xb2:\xad\x18q\xca\xae\xb9E\xc7\xa7\xd5n\xb7%\x0c\xe1at\xc6\xb4\xe1)^\xb3\x0f\xc7\x01\x9dm\x96\xe0~\x83}m\x1e\xed~\xe3hM\x18\x14\x8bT\xa5\x0e?P\x99n\x96\xdd\x95\xfb7\x12#3r\xb3\x1b\xa1\xa9\xb6;\xf2\xd5Q\x8clb\xb1\xac\xdb\x12\x80e\xcd\x96\x00\x17Q\xb4$^\xc8!\xa7\x94\x0d\xf0T\xae\x16\xb2\x9d\x94\xae \x93\xc8F\xf7\x90)\xb7_\x8c\xd2&\xc0\xb5\xb8$\x1b\xa8\xee\xbf\xdd.0\xd6\xf4-v\xa1f\x03\x16\xdd\xd0\xef\xbe\x101QO\xd3P\xd7\x80\x95\xbbe\x86\x1brv6\xcaoW\xf5\xef\xb7\xedv\x8f\xf6\x1c;\xb4\xf7v\x0f\x9c\xad\x8c\x90\xe63{_\x7f\x1f\xeaPw\x18\x0b\xed\xc3\x83\xc696,s^\x80q\xb3\xcc$\xd0zE\xe0!\xdd]F*\x0c\xb7\x02\xbci\xad\xbe/\xeaH\x04\xb5\xdc\xd5\xd4\x00\xfc\xaed\x84\xe1*\xc3\xda\xbe\xcb\x1f>\x8e\xc4\xf6\xc6\xe9\x14/lx\x86l\x17\nT\x85\xd0^\xfa\x94\xe0\xe4\xd3a\x14\xe0}\xe4Jp\n\xde8AQ\xdc\xa7\x82\xaa\xaf\x91\xc7\x01\xee\xa3Q<2\xdc\xa1P\xe2\xf8p\xbd\xeb\xd1\xde\xd6\xa8 \xc8l`\xa2\xf8\xfd\x928\xf4\xe8\x11\xa6*\x18\x0f\xa6\xec\xd6*\xfd\xde\x9b\xba\x0c\xd8\x9fR~\x96\xb7\xa5\x18\x8e\xa1z\x04J)Af<\xd4Ub<\xdcu\xd6\xfa\x87\xd5\xfbF\xe2:\xa1N\xe5\xd5W\xd5]\x83\xa69\x14wx<\xddd&H\x98\xf8]|e\xf8\x18<A\x05\xcfa\x04-O=c\xe6\x9a\x81<\x88A\xab\x12\x1d\x98)iK\x91\xc1 \xe9t\x8c\x1aZ\x0c\xd5<N4\x87S\xda\xde\x9c.\xf0\x92\xad\xee\x92\n%\xc8\x10\xc7\xcbqoJ\x91\xbbe\xd3o\xa8k)\xc2*\xb4\xfa\x86u\x03\xd1\xbd\x13h\xb7\x13x\x02\xbe\xb1Wk\x18\x81-\xba\xe6hsa@\x1e$zmx:\x83\x11v\xbaah&\x82B\x0bI\x87-\xc4\xf5\x96\xbd\xae\x1f-\xfd\xbc7\x85h\x06>\xba+`i3b=\xe5\xa3\x0d{\x0e\x96\xbc\xc1(M\x0b\x17f.\xac\xd9\xaep\xe1\xca@1\x91\xee\xca]\xbeAO\x8b\x99\x0b\x0b\x17\"\xb8\xe5w\x0c\xaf\xe8\xa6\xbc\xa9\x1fA\xcd\n\x8a\xb7\xee~\xfak\xbc\xad[]\x91\xeaA\x94Yy\xb6:\x8b\xdeC\xdel>L\x91\x8d\x85dZ\x96\xcb\xfd\x0f\xdea\xb91\xd1\xdf\xcd$\xc6\x07j\xeb\x9e\xa2\xa1>|P\xbf\xaf\xf7b\xea\xf7\xaaV4$\xd5\xbd\xc6 \x1f\x9b\x1e\xf04\xc4\x17D\xf4\xcbh\xae\xde\xd7\x04I8\n\x0d\xb5@.\x1dQF\xe7 &\xfa\x042\x16C\x9aO\xabW:\x13\x96\x11\xbd\xdd\x0e9\x06Q\xa8Z\xbd2\x0e\x10)z<\x13?\x85F1YH\xc9\xf7\x13\x8c\xcd\x8cX/\xc8\xee\x1e\xeb=\xd5\xf6zz\x83\xe8^\xbf\x8a\x12\xc8{\x95@H>\x17\x8e\xaa\x885\xe7\xf0*\".U\xb1\x00\xbdI\x84\xad\xeb\x99\x08\xa2WuOY\x94K\xc5\xdeM\xb5\xc4L.\xc18v\xb5\xc8\xd5\xfd5\xb0B>\xb9q\xe1\xd2\x85\x95\x0e\xfd)\x9a$\xdalT\x17\xf8\x84h\x9e\xbc\x83\x11\x9c\xc3),`\x08\x9e\xf6\xddk\x18\xc1E^BW\xc7\x19e\xf4\xb4\xa2wT\xacY\xc3)\xcc`\x08\xef\x1c\xfak\xa6\x16\x7fA\x8b\xd3Z\xaf\xe5\xe2\xd7\xa6\xe2\xcfD\xc5\xd7\xean~F\xf9\xb9\x8f\xd62u#\xe3&\xf5\xe5`Q\xad\xbe\xba\xd7\xcey\\\xe23\x0c\xd5\\\xb3\xbb\xf2\xf6Zgy\x85+T.\xae\x04;s\\8\xa7\x909S\xfc\x06\x9aU\x1bB\xc4\xa1\xefJ\x0f\xd4\xb1\xb5\xec\x10\x1ea\x90|=\x8dz\x0d#8Cer\x1e\xd9\xc8:?g\x89\x0eg\xe7\xe7\xa6\x0c\xd3_\xc0\x08^H\xaf\x91\xeakzj\x87\xf6\xbe/\xea\x0e\x83o)\x8e\xc3)\xa4,\x984*Vk2H\xbe\x84\x11|\x81Z\xd8\xa28\xd1\xcbD\xc6\xc9\xbe\xb4\xdf\xba\xf0R\xcc\xe3J=&n\"\x03\xb5pQm\xb5\xf6L]\xbe;3F\x95\xd3qc\xec\xb1\xfe\xd4\xb7{\xbc\xaf\xf5\x0b\xc9\xbe}\xbf\x90\xaa\x8c&;\x88`\x01o6\xb3\xd31\x99V'\x83~2\x89\xbey\xb3\x19\x06\xb5* \x94#2\xaf\x8eLq\xe0\x88\xca\xbe\x1a\x99v~\xab\x93\x1b\xde\xcf\xe2\xb3\x91D\xc4\x99i\xe8l\xc48\x7f\x9cbXs[f\xf3t\x8aM\x90\xa6&\x8c\x08m\x8acx\xac\x8fi\xac\xb8\x9ad\x06\xa9\x81\xbbE\x1d\xeb\xa5\x80\xbd^\x95\xdf\xfb*_\xa7\"\xc0@\xe5\xfe9\x8b\xfe\x1e\xd3\x15WytI\x1c\xf8\xc8K\x15G\xd5\x92$\x80a\xd7k%\x81O\xbd\xb5N\x0c\xc8\x9f\xbfB\xa5v\xb5\xc8\x8d\\\x849\xb6T\x8b\\\xcaE\xce\x88\"l\xacJ\xcfQ\x97^-r^*\x82\xca\xf4j\x91\x0bE\xee\xf9^6\x9f\xab\x1d~W\x996\xef\xa7\x02\xf2\xaeZ\xe8z\xe3@\x94g(\x17\x9c\xc25c\x0b\xaf\xe7\x1b\x07\xfe\x13\xb4:v\xe1\xda\x85\x17.<\xab\xa2~\xf2.\xc0\x08|Z\x1d\x96\xef%\x04\xde\x0d\x158p\x06\x98\xcayA[\xa3r\x9e\xd0\xdb[`\xcf_\xcf\xe7 I\x8b\xe7\xecw\xad\x00B?)\x06\x10\xbb\xc0 vy\xf4T\xf6K-\x8f\x1d\xbd\xd0w4\xb7|6\xf5\xb6\xf5\xc2\xa6\xc4=\xc0\xab\x1e\xec\x1bqtY\xbf\xb1\xb5\xa5\xda\x1a\xc2\xd7\x06\xf8Um\xef\"\xbb\x9d\xba\xd0\xd6i\x9d\xf1\xedE\xed\xdbi7\xf4V\x84\xe9/\xf1\x1b\x06jY\x91$\xf1.9\x98\xff0T\x7fc\xe8\xf4\xaa\xbeYfYR\x83\x88\xe6\xef\xcf\xf4\xef\x0bQ\xcd3\xbcvi~\xed\x0b\xe6.P\xcd\x1d&>\xb9Xf\xd3\xfa\x13\x0ch\x8d'\xbd\x96\xd0P\xa0\xb4\xfaE#\xf6 \xe9\xed\x19\xd74\x98\x9b{\x9b\xd7\xf5\x16\xe7\xc3 \xaf\xc1\xed\x08\xe6.<+\x0e\xa2\xe6\x86_b8\xc5\xd7\x88\x88\xaf\xd1T m\xe0Zy\xf0Y\xa1\xb1q\xe1\xa5az\xcf\xcd;\xba\x10\xe3\xcfD\xccJ:\xa83\x11M\xb6\xf4\xa2^v\xbc\xbb\x11\xdb\xe9\x16 3\xf5\x94\xed\xae.i\xdb\xca\x87<\xad\x0e\"\x8cA\xf5\xa5\x89\xb7\xaf v\x85\x15\x8e\xdbm2\x85\x11:\xf5\xa7\x95\xcbq\xce\xb7\xa11\xfbv\x86W;65\xa1@\xd3\xb0\x8cx\xb0\xd7\xd3i\xcc\xfa\xaa\x08\xf5@\xda\x03\x9ewO7\x89\xa8Q\x81G\x10\xa8\xf38gv[\xcd\x89\x123\xef\x19S\xa5.1m\x82M\x1c\xc9\xd2\xd4\xf2\x8d\xf4\xa8Hm\x00#X\x9e\xc0\xba\xc6\xe4\x81\xb9\xb9\xc7k\x83]\xa0e\xfb\xa8\xb1\xc0\xdc(C\xc9\xcbn\xe1lh\xe3\xa0m\xcc\xd03YG\x13i\x1b3\x96[\x88>\x96T\x0c3\x0d]\x14\xe6\x82V%Bg\"+\xea\xd8\x0f\x8dCO>+T4\xf4\xe9il\x0dO`i\x9c\x99K\xb4\xa7\x88\xf91\x98UV\xe8\xce\xb80L_\xe6\xe4\xfa$\x1fox\xae\xf0\xfc\xbb@,J\x11\x7f\x86\x90\xd9\xf4H\x8cP\x86^\x89\xc9\x8c,\x9b3\xce\xe1\x94\xf6p4b\xc7y\x8fW\xc2P\x13\xeb=7\x9b\x9cQE\xa3\xe7 \x171\xf1\xde*OT\x83\xf0\x0d2L\x94\xb2\xfd\xc2\xb7\x1d\xfdF\x16u\x14\x1f\x0dI\x88\xbf7\xa6\x89\xbf@!N\xaaU?\xf5\xefP\xba\x93\x8a\xa9\x03\xba\xa0\xfb\xe6\x1dm\xad\xdc\xc9\x80\xa7lS\xa0\x8c\xd3\xdb\x96\xd8\xf0r\xd8\xf5\x0b\xfa\xecBV{#D[\x16\xdb|'\x97}\xc7\xfc\xd0\xd9\xd4o\xc0\x12\x13\x99)\xe7?(\x82o\x99\x88P\xa6\x91\xfa\xeb\x0e{=}\x0c\xca\xbb\xfbN`\x10\xe1\xc8\x85\xe0\xce\xc7\xe2\xbd\x9e\xfe\xbe\xd0Qc\x97\xd4ZE\xcd\x11\x8b\xefnpHc\xaa\xc6\x08o`G.\x84\x1b\xdc\x0ehf\xb2\x1a\xbd\x816^=)\xc5\xa7\xcf5KR|\xfat\x1c@\x1bX\x8c\xfaqh\xf0>\xbf\xfbl\x9b\xf2\xae\xe8\x8c\x11\n\x0b]s\xe6\xf92y\x11f+\x96\xb0K\xd5R\xf0\xd7.I*\xf1[vfNT\xddEV\xca\x0c\xa4#\x15\xc2J#\xa9\xe5\xc6S\x18V\x0c\xfe.\xc46\xcb\x1b\x94\xd7\xa6\x0dO \xd5XD\xb8'\x1aMh5K\x0c\x0c!\xd0\xe3\xa4\xf7-#M}\x92\x83\x9e\xc8\xe9/c\x91\x9e\xe0f,\x0f\xbf\x86\x89a\x8cN\xf4\xe2D\xea\x15\x8d\x83v\x1b\x13\xc4o@\xc1\x9aB^7N\x84\x81\xb8\xdc\xfd\xa6\xe6\x9eAy\xdc?\xd4_B\xd4'\x0dQme<\x81X\xbf*\x82&\x06\x1b\x9a\xee.\xd7\xf6r\xa8\x8e\xc4\x85\"\xec\x84\xb2\x92\xe8D\x83\xa99\x02\xa3\x00\xca\x9e\xb7\xd0\x19$\xd3\x96ZWJ\xb5\x96(\xbci\xcb.P\x0e\xbe\xbd\x859\xfdoI\xff[\xab\xa5f\x98\xb3\xfc\x94\xb2\x8c\x1c}\x99\xae\x8d\xca0\xba\x9c\xa1r\xce-\xa3\x84\x87~)<\xbe}\xcb\xcf74\xbb\xeb\x8b\xf2\xb3m\xb1*\x90m\xdf\xb0.\"8BUS\x01\xb6\xd6^LB\x0e\xc0\xf7\xd7\xac S,I\x05\x0b\xd5P\x05\xf8Z\xaa\xd2a\xe2\xda\x8d\x0bW\x0e~\x9f1\x03\xf7\x8d\x9e/\xcd\xee\xbb\x8b6&'\"-\xac\xa0\x17\xe9\x89\x03\xb1\xc8\x8a\x12\xea{\x17\xdfy+\xeasS\xec\xe96\xa2\xce\xb6\xdc\xb4?\x0c\xb4#\xe0w\xbab\xae\xa3\xf8\xb6h\xd4\xdd\x15\x1a\xa6\xa4\x1d\xfd\xaa\xec\x16\xe9',\xc3d\x82\xc5\xf4d\xe3|\xfa>^F^\xba;\xe0\xb6w$\xe3\x95\x87\x07{\xfa\x87/\x85\x86E\xf7\xa4\x7f`|dj\xacP\xd9\xe8\x1f=_z\xab5\x99\x99K\x98\xda\xa4\xcfJ\x8db\xa6\xdc\xb1\x0e\x83*o\xea\xeb+\xe9\xeb+\xcfr\xf3G\x05^\xe8\xee\xd5\x07D\x01r\xfbGu58\xae(\x0f\xd0\x18R\x81 \x03H\x05,<(*`a\x0b\xa9\x80\xd1\xfeQ\x85q\x9bG\x05\xfcC\xe2\xbd\xcd\xfb\xd1\xea\xbb\xdbm\xc1\x88o\xc1 '\xf8\xf8\xb3\xd5\xca\xc6tW61\xf7\xc6\x1d\xd9\xec\xcf]#L\xa6fu\xe5F\xfb\xb8F\xf3Ul\xf1\xbeb\xf3\x03\xbe\xcf-6\xc3\xa5d_tr\x18\x1b#\xdd0\x9a\x9177k\x06S\xab\xc0tQx&U\xeba)\xca\xb1\x9e\xb4T\x8f\xc6\xb5\x80\xd2\x10vs\xb8\x98\xe0\x11\xaf\x1a-O>I4~\xba^\x1da\x14\x9f\xfa\xc4\xd3W<M*o=&?\x9b\x051)\xfd\xb0\xad,\x0d\x96\x96\xd3\xa5\x03\xd3\xf8|\x89Ono\xb8\xbd\x85\x0c%\x9a\xeeE\x10\xce\x82\xf0\xb2\xf4CT\xa7\xad\xa7&\xd7\x14>\xb6+\\Q\x95\xfe\xb1\x98S\\\x8b\xb3\xfbG}'?Zn\xce\x15\xfa\x86\x03Z\x7f\xa3\x03\xdav\xb2eu\xe9P\xf7\x14\xcb \xe3U\x7fx\xa1=\x1eO\x0d\"YHE\xb2\"\x85\xbct\xc8\nq\xff\x97U1-\x9eF\x8e\xb9:\x98\xa4\x8fm\xeeU]\x19\xd2tm;\x19b\xa0<\xe5\xbfQ\xfd$\x99\xbbF\xa0W(\x11>\xc2\xdc\x92{{\xdb\x9cv\xa9\x06E\x8eD\x8e~\x0c0\xe0\xf2\xa1nu\xed\xa6\x99\xba\x9a=!\xf22uW\x1bR\x9b\xca\x92\xf7\xa2\xb1\xd2\x90\x07\x86\x84\xd0\x067\xd9\xbdA\xd5W\x92\xfbP\x0e\xaa'4\xeeC9\xa8\n]\x89^F\xe3N\x94\x8as\x06=t\xf9v\\\x81b0\x0e\xbb\x1axg\x8d\xd0\xa8\x02] 4\xab@g\x08\xad\xe6\xdf\xa3\x07#\x89 \xb2L'\x1a\xb1\x84\xee\xae+4[\xc7\xf8\xbf$\xe4\xd8}\x87\x1dJ\x82\xd2\xbb\xc8\xed\x8b\xd7\x02,\x12\x95\x8a|?\x8eVABD1J\xae\x93hyElV_V*\x8c\xc2FQ_\xc6\xceD\xa5\"\xb9\x90Q\x14\xf3\x9cB\x87\xda\xbcA\xf5\x87\xd2P\xe7c*.;\x96\xb6sM\xc69\xc4>8\x05\x9f\xa2\xba\x9a*\x93\xc7?\x10^\x12Z\xfb\x1e\xdaT\xe7\xb5\x96r\xcd\xca\xa9\xdc\xce\xe4V\xa0\xab\x07\xa7\xd3P\x85\xc6\x03AWE\xbe\xca\x86j\xea]\x0e\xca\xebo\xa8\xc2`\xfe\xafV\x91\xe3\x87\x81\x94\x80\x96MT\x92U_mGovw\x1d;\xb4\x0f\x1d\x17,\xb1&\xa6(5[\xdej\x94j\xe6S\xfc\xf0\x15\x9f\x91\xf4\xe1+\xe5\xcb\xf0@\x15\xf7\x8f\x0c\xa1\xd4\xb6\xb7D\xe4\x82\x87\xb8\xbf\xe7\xf2\xdb)B\xb5\x1e\xd6\x18E#\xaeeW\xb7>p\xa6\x91\x8e#\x9d\xba\x94\xa9Kx~\xb4\xd8\xce\x1cSX[\xd8\\\x8a\xa9\xb9B`\xba\x01\xa9\x0f_\xb57\xd0)\x0b(\xbb\xd4\xc5\xaf\xd2\xad\x86PhV\xcb3\xfewXe\x8bs\xd5\x04\xbf\xdc\xf0\n\xa1A\xc6\xc8\xf8\xe1\xd1c\x99A\x13\xdb\xc7\x95%\xcdW+\x85\x9e;\xd0\x05%\x90Z\x90L\xac\xec\xd4\x90\x07\x17\x89\xd8\x9bh \"\xb8\xc0s\xb8\x85\xe5\x03\xc92\xfd\xa3\x8dn\x83\x1bL[\xb8\xf0\xba@I,\x9d\xa7^|\x96\x86\x1a\xc0)\xa6\xc1mJ|k\xe8\xfe\xce\xf8\xf3\xeex2\x9d\xb6o'c\xfbthwN'\xb3\xb6}:\x9ct'\xb3\xb6s\xea\xdc\xdac\xeb\xf1\xd4\xb1\xe9\xb3\xd3\xd6d\xe0\x8c?\x9fL\xa6\xb7\x93I\xd7\xf9\xf0\xd4\x99\x0c\x9c\xc9\xf4\xd6>\x1d\xe1\x1b\xb7\x93\xf1d\xea\x14_o?p\x9cj^3:\xdc\x9d\xc9\xc4\x9eL\x9c\xd3\xea3\x81\xebGN\x83\x1b\x8a\xe9\xc8\x02\xc5\x0c\xed\x1d\xb0\x9b\xb8\x98N\xf6y4#\x98RV:\x98X\x16r\x14\x11\xfa,.O\x17s\xa2\x8cLGa^GLq\xab\x94C\xff\x83>f\xa2E\xe5y\xaa3A\xc9!%\x18D\x8f:\xd16\x8bH \x8a\xce\x89f\xbf\xf9\x1a\x99I\x06C\xec\xab_\x05\x90,y\"\xf8\x00W5\x84\"\xb4\xa2[\xf1\x14\x026 \n\x8c\x11x\xdf\xf3\x17\xfa\xb8\x07w\xa6\xb4{\xbb\xfa\x83\xc6\xdench\xc3\x1ab\x86\x1b\xb6\xc5\x8f\x92\xe2\x8eK\xdct\x00\xbc\xcf\x11\xad\xd4\")\x9d\xc8\xef:5}\xc35\xfc-mj\x8a\xedL\xd8\xd4\xf4,\xe8\xf0\xae~\x00\xb9X\xe0s\xcb\x07\xe5Q6)\x82\x009\xb9\x15j\xc9\xbcd\xa0\xdd\xf6\xe1 \xcck\xafg'6\x19\xfbS\xa3\xdf\xceR\x90g1\xf7\xd8\xbf5=k\xa1\xbf\x8d\xfa^\xca/s\x97\x1eh\xc5\x074\xac\xd1>\xb6F0\x87SX\xc2\x10Z-{\x0ef\x031g\xa1s\xfc\x9b\xd9k\x17\xe6\xdc\xbekKq\x13\xef\x8d\x87\x06$\xbc\xbb\x97\xc2\xae\xde'doW\xef\xbf\xa2\xca5\xd9\xa6\xc8c\xe8z\xc4\x9cD\x98G\x01\x06\xbcj\xde9w\x9e\xa7\xbc@\x9d\xc2Z,1)\x87\xa8\xaaz\x8c\xdeu\xca7\x91J\xee\xd3\xfd\xb8\x12\xb9\x0e\xee\xd3\xd9\xbd\xdd\xaa2T\xa8\x83\xf4\xa9\xb2\xf7vu\xc4\xe8S/]tW\xdeu\xd3\xb0\xcd\xc2\x98W\xb3\xf5TMA\xcb\xcb\xd5\xaa\x9d\x8aO\xde\x95\x88\x98\xc1+\x13I\xcb#\x93B4\xc9\x13\x9e'\xe8\x0d\xeeA\x1b\x12\x0c\xbc\xe62^\x1c\xd0\xf9\xdeu\\H\xee\x8f\xb6\xc2\x15V\xd1o\xe44V\xf6eb\xde(!\xb4\x01\x05\x9e>\x0c\xa1\xd3wN\xf06K\xd4\xe9\xc0\x10\xda\xed\x88%TW\x90\x85N\x13\xb1\xe9\x91\x0b\xbd\xca$Et\xa4\x9d\x86\xbb\xc7D\xdb\xdbm\xce\xc4_#\xec\x98d\x12\xf8 \xe8\xeb%\x12\xb1w\xe9\xd2\x12\xe8\xa0\x10N`\xd8\x18\xc2\xc1<\x82=\x9d\xa8\xd2\x87\x9d\xaa\"\x0b\xe3\xbbt\x0f\x8f\x0f\x0f\x8ew\xfb\xbb{G\x07\x83\xdd\xfe\xfe!\xd9\xed\x1dm;\x01\xb9\xaa\xfb\x94\xf9^1S\x01\x13\xe3\xa8\x04\x8b_;\x01{\xcc\xc2\xbeu\xe8\xfa\xf7\x1d\xf8\x10\x1d\xeeR\xb1SR:r\xfc7\x92!w\x9d\x0b%^3\xd7&\xe8\xb4\xc3\xaf\xbcW*-\xd8\xf9|\x92\xb4o'I\xfb\x83\xea)\x83Ex\x1ew\xda\xd3\xde\xf5\xb8\xd79\xf6:\xf3i\xfb\x83\x9d@\x15Vv>\xef]\x8c{}\xcdS\x9f=\x8d\xc6\xbd\xce\xa1\xe61\xe5\xe0k/N\xc8\xcb0\xddvI\xe8\x8e\x91\xa3\xbd #`\xbeqR\x95\x10\x05\xb6yc\xa1J\xd3p=\\\xe0\xbf\xd6\xc6\x91\xe6\xd7\xcfN\x8b\xef\xecJ\xb3^\xe8\x89\xd9\xc9\x9e\xdd\x10\xa2\x9b\xa1T\xea\xbd:J\x11\xe4\xae\xa5\x19e\x19\x8f\xda\x95&\xd9e\xb1r2j\x95\x00\x87,\xac6K\x14\xa3\xdd\xc4xN\xf3E\x118\x85\xb9\x9dv\x93e\xe0\x13{\x80j\xa7S\x18\xc0\x10\x8e\xe8\xa8=\xa9X\x84}\xba+r\xf7\x15uK\x03\xb7\xdb\xab\x8a\xd8\x99V \xe7\xa6\x8f\xbdf!\xc9\xcc\x01\x19\xf7a\xb2\x12\xe5W\x86iC)4\xaf\x86\xb2-\x8aGL\x8c\xa1<J\xe2XM\xec\xaa\x86\x1e\xde=\xcc\xa5\xb6\xdb\x953-\x1e\xf1\x83\x1a\x11\xa7e\xb3|\xf2\xa2dE\xd8q\\h\xb5\xee~\xede\xcf \x12\xef\x1d:vl\x18x\xb0m\x1b\xfaH%\x1b(ek\xaeM\x03\xf3\xc2\xc2\x86\xef\xe1&\xbew\xe0\xd8[\xe9\x9e\x9b\xe5\x9aFyV/\xf5@U\xf2\xa1\xa7\xcbH\x0e\x0e\xe8\xe2\x8e\x8b\xf1\x1b\xba8\xe7\xbah\xcf\xa0\x8b\x06y?\x8d)\x1d\xf3PP\n4*+\x10\xf2d\x1f\x89^hG\xe3d\x8ail\"q\xccT\xdeQ]\x1a\x14M \xdcG\"?<\xbc\x07\x8a\xe4eB\xc3\x06\x0b\xa4\x18paN\xf3C\xc3!<\xb6\xc3\x82\xbd\xa5\xacR\xb5h\xbe\x82H4s\xd95\x03\xae\x03F\xb1\xd5\x95\x83>VE\xf1\xfcc\xd3\x172.\xdaf\xf0\x04\"\xe6\xe8\xd4\xc7\xb8q\x81\xed\x8d\xb3)\xbbH\xe6\x9c\x98\xf5\xd1\xa6\xd8\xe7\xdb\xae\x84\x9eN\x18\x82\x0d\xa9\xea\x98L\x08T\x1b\xac\xa7\x86)\xe0\nd\xf2\nT\xef\x1f\x89\x83\x93\xf0\x8d\xd0\xd2\xdeV\xab$\xd5x\x18\x1b\x86\xb1\x8e\x08\xf7e\xae\xe0\x18\x96\xa2\xdfz\xb9\xbe+\xe4\xee\x9f\xe1\x98L\xb7\x8f\x99ne \xc1\xec8~*\x99/\xb9\xd3\x05\x0b\x97!\x9clx<\x18\x92|\x1a\xcd\xb2%\xb1\\\x85\xc1,32,E\x8es\\\xbcs\xbd\x8a\x82/\xc9\xec\xcc[\xad\x97\xe4\xe38Z\x9d\xf9\x0b\xb2\xf2`$=|\x1e\x13/%\x7f\xe3\xd3O^\\c1\x16J\x0d\xbf\xfe\x8d\xd5\xb2\xf2R\x10\xceI,\xfdN\xd4\x9a\xb9\xa1\x1bH\xd7Wk^\x9eh\xf0\xa9\xaf\xa4H \x90\xe7\x87\xf6\xde>=n*H\x85\x8f\x0ev\x9dM\xa3\xb1\xc8|\"\xed\x16\x13\xc9e9\x95\x1a\xcc\xc8\xdc\xcb\x96\xe9\xb0z\xab\xf4;\xea7\x81kj%\"\xf3Q\x8e\x04&\xaa\xcc\xbb'\x90L)\xf3^= \xb2\xa2\xe7d\xe5\x05\xcb-Z\xc8\x12\x12\x7f\x97\xb0\xd5\xe8\xfa\xd1j\xa3\xb6x\xbf\xceg^J:i\xb0\"\xd6\xe6-\xa2\xaf\xc5G^J\x9cn\x1a\xbd<{\xcd\xbc@m\x8d\x1dBs\xda\xc5\xcd\xb9y[\xbd\xcd+=\x9f/#/}\xe0\xaa\x830%\x97\x0f\xdea\x1eD{X#T\x88\x8fX\xe5<\xee\xb6t\x8c\xe9r\x94fQ1\xf8\x0f\xb5\xfd2\xba\xab\x07\xd0\xfaN\\\xe5\xfel#\xb0{.\xc4]\xe6`\x11\xcco\x1c\xadB\x03rC\x8b\x9a\x82H|\x02|>\x8f\xe2\x95g\x88\\EI\x827\xc6\xfc\x91\xe7\x16\xb4!\x98\xa2\x0b\x90\xf6\x12\x92\xc0K\xec]\x90|\x9c\x85\xbecGx\x82\xb2\xd1\x1ek\xfd |\x1bF\xefBxs\xb3&C\xa0\xf5\xa5\xd8\xbb\xba\xa9\xf1M\xc40\xa7J\xa9^u)\x0e\x85\x9e\xf0%\x17\x97\xb2\x9fB\x1f\x8a\x9c\x14\x94\xc9\xe7E\xc6\xfd)\x15\xde\xe4\x9f\x98\xc7\xca8{\xcaR\xe8\xe2\xc5\x81\xf0\xf9\xadY\n\xb4yw9\xfd\xd0\x17\xf1\xb0\x08\xbf\xc4\x17\x10\x8dg/\xf0\xf9\n\xba\xdel\x16\xd0\xc9\xf1\x96\xdfo(?\xc7\xf2AJV\x86\x02h\x14\xe9\x06\xa1\xbf\xccf\xe43\xe2\xcd^\x87\xcb\x1b}\xd1\xb5\\\xf4\x87q\x90\x12ZV/\xe8I\xd3\x9f9e\xdc\x99\x11\xb2^\xdePz\xb6\xfe\xeb\xe4\xc6\xc1#\xff\x07\x1f\xc4dnma\xa5\x94\xe5\x8a\x92ou7\x08g\xe4\xfa\xf5\xdc\xb6\xfe\x8aU\xc9\xcc >\xefM\x16\xa2H\xef\x7f\x1c\xb0\xe0\xb7\x91\xe4\x1a\xae\x176kb\xec\x82hc.f\xc3 \xaf\x8a\xdb6^\x1c{7*\x97\x01\xedy\x01U0\x85\xb7\xf9\xc8l\xed\xbe\xe2\xc1\x06\x14\xcc\xae\xba1\xca\x9fY\xe56\x8b\xfc\xc9E\xf5+*\xd8-\x1cX\x8c\xaf\xa6t%\xe8\xdf\xee\x8c\xacc\xe2{)\x99\xe1\x8d/\xf9Q\xccq\x0d\xd8\x05\xb6\xea\xe3w\x02\xbf\xf0\xf9\x1a\xef\xb9\xcfh\x81\x11\xa46-A\x85B\x83\xd0\x8f\x13\xcd\xb4N\xbe\x03\xb3\xcav\xe9\xd7\x8c\x06W\x90\xbe\xee\xebQ\x01\xaa\x11\x0c\x94y\xf4\x1d\x97\xc5,\xb0o\\\x8c\xb2\xb6\x82\x11\xf4O`\x05O`\xef\x04V\xed\xb6\x03\xb3\xb1U\xee\x12\xa5\x95+:\xb4K}\xb78\xd2\xcfTT6\x91i\x8e?\x0c\x19\xe0\x94\xa7\xb2 \x12v\xbdl\xde\xf5\xc2\x9b\xd7s\xd4\x92\xb1\xaf\xdd\x95\xb7.<5\x9a\xee\xe6\xb2\xf8\xf3:\x9f\x08\x18*ME!\x11M\xe1\xd7\x07lj\x9c\xdas\xfa\x94\xd2q\xd2%a\xb6\xc2\x10\x8c\x82c\xcb\xdf\x87|\xa9B\xca\x0e\x97\xc1\x97\x04\xbb\xe7\xd8\xec5g\xdc\xa3uX\xf3`IX\x8a\x8d\x08\x1d\x9b\xd0\xa5I\x17/_U\x12\xdbU\x19\xbf\x9e\x96\x89\xe1u\x13V\xfe\xd1#\xa6\xb6\x17\x00\xf4h)\xb8\x01{\x8e\x1cF\"C\x8aO\xc6{\xd7x\x04\xd9\x88\xa1\xb2K\xcb\xdf\x1aO\x8d\xb6\xe1\xa9x\xff\xa5\x86\xa7z\xf8|\x13\x86\x19m\xc90\xa3&\x86\x19\xd5\xb3\xf25c\xba\x9b\xf0\xd4\x85\\4\xe7\xa9\xfa\xb23l\x99#\xb4\xbe\xc8\x15\xd26\xfd\xb3\x9b\x9ag\x97(\x86]\xaf\x96\xfa\xc7\x94\x86]b|2\xfd\xf3s|\xbe\x8e\xc9<\xb8\xd6\x97\xb8\xc8kH\xd6\x9eo\xa8\xe6\x1d\x9b\xda0[\xe9\x9f_\xe7\x87d\x03\x03\xcfj\x188\x9a\x07\x1c\x96\xda\xfc\xc7\xc1\xc5\xb3&.\x8e\xd1Y1l\x8c\x15F\xa9wI'\xc7b\xfe\xb1\xf69\x9c\xc29\x15\xcb\x87\x16\xba\xb6;\x94A\xb8p\xc1\xf4\xf37c\xfa\xdc\xba^-\xc3\x043e\x9f\xd3B\xf8\x13o\x03^\x18\x04\x1c\x99)\xa0[\xe5\xdcD|i\xe99\xc5\x07J8\xf0\xef\xed-\\\xd2\xff\xbez\xef2\x08\x0f\\'\xff\xa0e\x18\x96\xc0e\x97\xc7\xe0\xcd\x85\xbf+\xee\x95;u+\x1cbIy\xc3R\x8dZe\xe4\x0c\xf43\x17;\x90\xe5\xa4\xa2\x953?>\xe4\x08U\xfd\xbe\xf8h\xf8\xd3\x8c\xb6>\xdb\xbau\xc1V\xb6n]L\x03/9u\x01%\x9c\xa2\ns\xab\xe7^\x9a\xc6C\xb81T\xee\xc2\x95\x1e\x1b)e?3\xb8XB\xc1\x8a4\xabb\xdfsY\xce6\x9a\x15\x17\xce\x0c\xebb\xdfsa\xb6j\x9f\x97R\nm nk\xd3\x12\x01\x9f\xfa\x17zq\xbbA\x9c~F\xc5ii\xcf\xd0\x9d\xb8\x14\x1b\xf0\x85Y:\xa5}{Q\xb9jh?ct\xa3\xf5b\xfcL\x12\xbcooa-?(Dn*\x8c\x1b\xa6\xab\xd4\x0e}\x8b\x11\x89\xfc\xab\xe8!\xff\xdd\xa58\x1b\\di\xed\xb2\x89\xcf\x15\x8f.YF\x05\xac\x0b\xa54\xda\xd9\xfc\x971\x05K\xf5\xf3\x85\xe8_-\xd3\xae~\xde\x8a\xb78F\x99)\xbd\xf8\xdc\x8c\xf3Q\x0br\xf8l\x9a\xb3,\x14\x9b\xbe\xa0#\xf8\x82>\x91\x80\xcb\xf13<\xf7\xe0\xdf\xf2\xa3\xb7\x14\xfe\x96\x0214f\x82sQ\xbf0\xb5\xa9^\xe4O\xb9\xb3#P;\xef\xca\xce\xe9\xf2\x0cV\x84A1\x00\xbbT\x86\xc1Mv\x19\xe9s\xc5\xe3f\xa6lt\xcd/\x94\xd1\xe3%\xa5\x14|\xa7 \x19\xf5\xa3\xd0\xf7R\n\x1fJt\xf5e\xc3\xb4\xd5\x91Fq\x98\xe4\x0d5\x11\xea\xb2\xb49\x04\xebYx\x93.\x82\xf0\x12|/\x84\x0b\x02\x0b\x12\x13\x83T@;\xedo\xca\x11\xaa\x0d%\xa6s+%r\x0f\xc8g6\xa0\x91|\xe6\xae\xcb\xf8\xbf\xe4\xae\xb1\x12h\xc63&\x94\x17\xf5\x1d]\xd4w\xecT\x96\xb0\x80kl\x85o\xe0\x14\xc6\xfa\xbe\x1b\xfb\xfd\xde\x85kZ\xd1u\xb5\xeb\xef\xb5v\x90\xa5\xd9\x17\x81\xca;\xeci\x19K\xd1\x08Z\xd2s\x05\x82n8vX\xb5:\x01\x1aJ\xfc\xa5\x17{\xb4\xc1!\xb44\xd7\x1b\x83pF\xc2t\x08\xd6$\xad\xdc\xae\xab\x9a\xcb\x00o1\xd4X\xa5h\x7f\xa2\xa2?\xcb&\x13W\xa5<\xc7\xa9\x06\xab\\\x0d\x87\x96<\x05\xf6\xabn1PxK\xec\x0f\x9c\xeeY\x1a\x13O#\xfe\xa3N\x8c~\xb1\xa4\x15\x83\x8a\xf5Jo\xf5\x04\x919\x80\xd24\xcd\xc9\x01=\x05\xd0\xa5\x11\xc7\x1e0\xd1!\xbf\x92k\xb3\xf7\x9c\xee\x17Q\x10\xda\xe8KgYU\xdb\x9a\xf8$\x94\x8c\x19\x84oC4\x08\x1b\xbdD\xd3\xb1\x142\xe0-\xb9I\xec\xd4\x19\xf7\xa6SdyI\xf7\x9c,\xc9\xaa0\xdbr\x80\xa0\xdc\x91\x9bC\x02?\xcaB*\xfd\x84\x12\x0c1\x89\x0d\xab\x0c\xa3-{20%q\x9c\xadS\xcc\x00'\xc0\xfa\x19\xf3\x99\xd3\xbe.4\x14\xf0S2\x957\x95\x87\xf9z\xad\xcd:\xde\xf24l-\x02\"y\xab\xf5m\xa8~r3g\x1b\x1e\x8f\xac\xc7\xd0f\x0epmxl=6\xbe\xf8\x1e\xbd\xa6\xc7dj\x14,7 \x93\xe2z2\xc7\x08%\x94\xad\xf8\xe0\xa5\\\x81B\xfa\xbb\xb9Pv\xc6\x18\xd1\xca\x0c\xf7\x1a\xc4'\xe9\"\xcd\xa48\xb6\xb6\xf9\x0f\x0cty\xee\xcf\xbc\x14\x95RK6\x9d\xb6\xf5\xa45~\xfe\xd1\xb37\xcf\xc6\xf4\xc0)J8\xb9\xe3\xde\xced:\x99>\xdd\xb9t\xc1\x9aN\xa7\xd3\xa7y\xf1\xa7xx\xb5\xa6\xd3\xa7\x16V\xcdW\x13Q\xdf\xe7\xa1k\x96\xd2=\xaed\xc3\xf8\xc5\xf2G\xbb\xb7N\xc1\xc2\x01!T\xd9YpJ1\x90\x0f\x19\x86\xa2\x0b9\x15\x816\xf4\xf1r\x81\xbdd\x89\xb5]T%\xb5zyo\xd1\x13\xd3,T\xbc\xc77no\xa5\xc1\xd5\x8865\x0b%L\xea\xc6w\xf3\xfe$\x9a\xee\x189\xb3~F)E\x19B\xa4\xdf\xd49}\x18\xd2U\xd3\x16\xc9\xc5\xfdd\x08s\x83F.\nS\xe4l\x06e\x13#aC\x08M\x9d@\xca5\x04\xaf\xeey\xd5e\x15\x94\xa9xo\xe0#^\x1d\x1f)\x11\xf2\xc2HL$\x97&\x8a\xcf\xba\x08\xf1\x82 \x12\x89\xcc2\x0f|\x0c\x9fK\xa7$\xbf\x9d`\xa6\x9a\x81\xd14\xce\xd3X*\x95\xd5\xed\x1d\xe1$W\xbc\x94,\x82yZ\x0d\xa8#\x7f*\xc6=\xadKX\xb5|d\x07N\xb3\xc2\x8c~p\xf25gp\xf1\xd1K\xe9z([\n;F\xed\xf5)\xce;\xe3yB\xa1f\xf3\x94\x0b\xa7`=\xd9\xa1T\x8d\xffn\x83\xf5\xd4\x92Kq\x06\xfa\xe8\x11\xb4BZz\x12\xf2\xc7\xe8W\x8c\x17\xc9t\x1b\xcf\xbc\x8aQ\xa3\xd9\xa3\xd5\x92\xf1\x04\x9dr\x8b\xdf]o\xbd&\xe1\x8c\x8a\x0d\xae\x8cO]\x06\x0cJ@\x11\x1d\xccn\xf5\x1c\x17Z\xbdMH\x04]4\x8e\xc9\xf9\xac\x95\xe7K\x9a.i\xa2\x8a\xdd/,\x07\xa7`\x01++=CI\xca\x02\xcb)\xde\x8dq\x85D\xf5|\xfaqo\x08\xd8\x8eiM\xc4\x02\x97\x96\xa5\x15W\xb7\xa4xC.\xa8\"#\xae\x0c\xde\xbd3]\x87\x82\x1a\xa7;-\xcd\xd0\xd0\x0bD\x1a\xf4H6\xa8_9\x0d\x0b\xd5\xb52Q\x16\xf41\xc5\x08\x00\xdd\x04eh8e\x99Px\xaax\xb3\xb5\xc3\xb2\xcc\"\x9c\x89\xcc\x0bW\x00>\xa3\xfc|,A\"\xda\xac\xf894\xb6\xb1\xe0q\xe4\xcd[ef\xe6\xfe\x0b\x863\xe4:}\x13\xf8o\x99\x13J\xba\xe5N\xbc\xaa\x95\x0f+\xc4\x0e\xf5\x1e\xf6\x1c\xda#\x96\x8c\x12\xf2\xd8\xab(\xc9 \xb7\xc79\xe7\xd7V{\xa2\xd0\xb2\x89\x08\xe3\xc1\xd2L\x1agv\xa3g\x94\xf8\xf8]\xb2\nR\xdb\xa2\xd2\x99\xa5\xb5\x9c\x8a\x0f\x15P\xd8\xfaoHT\xeb\xe6\xf1\xa6v\x1e=\xfb\x8a'\xa0[\xbb\x98\"\x91\xb2\xbd\x9e\xa3\x0f\xed\\\xd3\xca\xa5q\xf8\xccf\xdf0\xcb\xe9\xb75\xcb)\x95\xf58\x88\x843\x0b\x7f\xc6\xc4\x9by\x17x\x00\xa7\x04H<\xf7\x97QB\x0c\x91\xee@\x7fl\x00\xc3rT!\xc2M\xa0y\x1c\x0b5=$p\x94\x08\xbb\x92j\x02q\x1b\x8f\xee2\xd4\xc5s\xae\xbe\xe6+\x12'\xa8\xd3\xb0\xfa\xdd\x9ea\xd7\x93\xd0\x8ff\xe8\xe1\x19w\xc5w<W\xff\xe0\xcd\xc7\x9d#\x9dk%\xc4\xdd$\xf5\xc2\x99\xb7\x8cB\xb6\x0b\x13\x190*=w\\\xb81\xa8\xb7\xac\xd3\xeb\xd5\xd2\xd29\xae\x8a\x0fW\"%\x9b.\x02\xdfD\xf3\xfc D\x19\x95\x0b\xd6\xe9S\xe4C\xdc)I\x1czNu\xe9YL\xc2&\x08\xda\xaeGY<\xa2\xf0\xc8\x18EB\x12\\\xadK\x9c\x82r\x1c\x03\xf1A\x0d#n\xd7K<\xa1\x9c\x82]\xc6\xd5\x9e\x0b>Fr)\xbd\xfa^\x8a\xd9\xd4%K\xb2b*\x85\x02\xf6\"\x87\xd5b\x9f\xd8\x87\xfa\xe1\xa2\xc2a\x08\x99\xcd\xb4\x81E\xecD\xbc\xc8\xc5\x82\x15\xe6\xbe\x06&%\x0c=\x0dm\xe2\xf5 \xc2\x9a\xcb\xf2@\xa2L\xe5@\xba\x88\xa3wH\xc61(\xacm\x85Q\n^\x92\x04\x97!\x99A\x1a\x81\x07,\x14uK'?\x88\xcf\x95\x94\xaa\xbb\xde\xdePdG\x96\x143\xe6\x8a=[\xea-'\xaa\xa1[\xaa\x81\xa9\x80\xdaT\xc0\x10\x94V\x0e\xbc\xdfD\xdb\x08\xaf\xdc\xd6\xc9\x8a\xe2c\xa2R\x86#\x1f\xa5y\x9b.\x89\xc4p\xd9\xee\xa1Ccv<\x91\x01\x9a\xca\xb9\xe2 \xed\xe9\xc6$S\x9dW!$\x96\x91=\xffU\x8a\x1a\xba\xbbg\x88\x18*\x0fG\xb0\xf3\xf2\x00\xadG\xd6\x10\xacG\xdej}R!\x8a\x8f\xad\xc7\xf4\xc9\xcffQZ}d=f/\xad\xa3Dy\xf4\x04\x1f-\xd5w\x9e\xe2\x83\xcb\xf4\xa4\xa0\xa3\xd2\xb0\xb7\xbal\xc5\x89\x17\xa7lH\xbcru\x8f=~d=y\xfax\xea\xec\\\xd6LF\xa5\xc2pL\xaaI\xb4`\xb8m(\x8a\xd2%\xba\x93\xd2\xbc\xf3[\x11\xfd}\xa7\xfb\xe2\x8a\x84\xe9\x8bU\x90\xa6$\xd6)\xf9\xd5\x83t\xccc\xa1.\x02\xe5Z>\xfd\x84\xf6\xee\xbec\x07.&\xd3\x0d\xba\x9f\x15\x14\x93\xb6x\x80\xc0\x1f\xc6A\x9a\x03\xf7\xf6\x8f\x11\xf8Q\xb6^\x92k\x06:\xe8!\xe8M\xec\x85\xc9<\x8aW\x1c\xdaG\xe8\xf7\xbd$y\xb3\x88\xa3\xecr\xc1\xe1\x03\x843\x9d8;\xd8\x05r\xc2\x8f\x00\x9d\xc1j'\xffJ\xca#o\xd2\x9c\x07\xfa\xd3h\x8a\x06a\x1c\x0e\xbb0\xc5X\x0dZ\x89\xe9\x1b\x18\x1bh\xede \x91\xbe*\xc7&}\x93\x91\x96\n\x85\x05\x1f\xc2\x1ac\x92d\xab\xd2\xf7\xdaSY\xd8\x8d\xc2\\$\x0b\xd0\x81\x0e\x01\xb1\x17\x84\x96\x0b\x11B\xce\x83\xe4,\x9d\x05\x11\x957\xe4\x81\x11$*\xb7\xb7`\xb3j\xa8\x18\xe7\x82\x87\x02\x11\xfd\xcd\xc46\x17\x92\xaa\x16\xef\x8a\x874k\xf5M\xf3\xebi\x07\x9bac\x19\xe7\xb8)\xa3c\x9b\xcd^\xb2A\x85\x86{\xe03\x92\xa4qt\xc366\xff\xb1i\xb3\xbe\x9en\xa3\xaf\x90\xed\xb8\xdcN\x1cw\x97A\x92\x92\x90\xc4\xcf)\x1f\xc2\xfd\xe4\x82E(3\xb5\x1c\xc1_\xab\xf4V\xdf\xe2\xdc\x88&\xab\xe8\x8a|\xc2\xdb\xa9\xac\xb9\xf2PZ\x7f\xf5Uy\x9d\xab\xcf\x8a5\xd7\xbe\x89#\xa2\xc2\x92\xaeU\xf9\xa9\xa9\xd5ym\xabsm\xbd\xc5\xd3\x9a\x9d \xc8-\xc3\xe4R?\xab\x10\x19\xdb\xe7\n\xb6\xcf\xf3w\xca\x10v\x94\xa1\x04\xc8b^\xceM4\xdca\x8ec5d]\x7f\xab\xaf\xa0\xeaG=\xa7\xcb\xc2\xe3\x96\x19\x9e0\x1e6\x86\xc8\xa9\xa2R\x8ee\xa9\x16\xcbZ\xcd\\\x0d\x84\x00i\xa7 %\x19#\x8e,E\xbe\xb9Y\x13.I>\xf7B*LR6\x03\x1e\xf8K/I\xc0K\xc0\xcb[\xd2\x1c\x0b\xdf\xf3\x0d\x94\xcb>\x0b\xe2\xcd\x80E\xa3\xe1\x90\xd4\x0b\x96e\x08?\x0e\x8c\xaa^\xcb:$I\xd5\x8c\xe6\xf5r\x9a\x10m\xf5\xf3A\xb7\xa21S~H\xaeS\xa6\x8eR\xc7\xa9\x8af\xf2P\x9eb\xc0\x92|\xb8\xa8\xf5\xc1\xdb\xc0\xc3\xd2\xac\x90\xf2\x94\x10\x17\xdam\xa9\x9a\xf2l\xb8\xa5\xb1g!\xea\xbe\xbf\xfd\xe1\xe7\xfd\xddd\x0ex\xec\x0ci&\xd0\x11\\\x1ec\x051\xb6\x19\xb32b\x13}\xe7\xe2xQk\xddy5\x15'\x1a\xda\xa3.\x9d\x91Z\xbf\xc3\xbe2\xc4\xd3\xd2\x80\xaa8^Y\xf2\xa2%:\xbd.t:RU\xda\x98\x85u3\x82\xb1\x0e\x9bf\xa4\xaew\x0d;\xb0\xdc\xda\x17Q\x106\"\x1c\x9b\xffQu\xfe\xc5E\x0f\x8d\x17s)\xean\xdeY\xe6Zl1m<\xae\nO\xcdM\xe7\xed\xc4\x81\x10\xda#4\x81\x13\xc3\x9a \xaeR;\x7f\xe8{u\xcf1\xc5]o\xb9\x8c|\xbbg\xf0cV0\xa6\xd0\xf57\xa0]13xj\x0eXl\x08\xde\xde\x0f\xc2\xc4\x9b\x13;\x85\xa7O\x9f\xa2v2+O\x9fG\x97\xf3\x04\xb2\x13\x07'.\xc36\xd8\xacF\xfc\xe2\x04^\xde\x8e\xd67,\xb0\x01}\xa5-\n\x96\xa2\x18dl\xd2MS\x1c)S\x9c\x03\xdeSI\x0b\x03s\x06\xdd L\xd6\xc4OK?\xba~\x96\xa4\xd1\x8a\x91\x89\\9\x93/\xd0\xb8ZpZ\x87\xecb7\xe7/i\xd4jlXC0\x92\x1c}\xb8\x1e,.\x05z\xcfMo\xec\xe2h1^\xe3\x89{c\x7f$\x1d\xfb.sw\xbd\xddF+\x90\x88\x0fS\x1cu\x13\x92\xbe\\\xad\xc8,\xf0\xcc\x1e\xae\xdc>\xc3|\x8cx\xcab5&\xb3\xfc\xf1k\xaej\x007\xdb\x98L3\xc0M7iw\x16\xf9\xa8(3\x97[\x97\x12B~_ \xc9k\xcc*\xa7}`\xcc\xa7N\xab\xc2\x8clk:'o\x82\x15\x89\xb2\x14NaM\xc9\xb5[D\x8c\xe7yk\xa6\xccq\xfa\xab\xf7\xdd4bW\xdb\xf9\xe9[$\xb6aQ\x8b\x9a\xe8\x88\xf8Hf\xa0Z\xca-\x7ff\xb6&\xaa\xaf\xf8\x98\xf4[0\x94Q\xa7\xae \xb4\xa1v\xd7Q\x92~\xca\xb3\xf9\xb3\xac?\xc1\x8an\xc93?\x0e\xd6\xa9\xd1\xddG|\x04\x11\xd79\x08V?x\xcc\xefF\xe1\x8a5Woh\xcf\x85\xbf\xbc|\x13\xd3\xab~\x88\xde\x84 \x7f\x18o(f\xc0\xb6,\x17\xac\x0f-~\xa8(\x1a\x0e\xab\xa1\x94K\xb5\xe8W\xc2vP!\xc5\xab~\xbe\xf0\xc2\x90,\xe1\x14l\x1b\xa3\xa7\x90wP~\xe4t\xe9\xbc\xf7\xf5\x03\xaeE\xae\x99\x9d\"\x057\xa9<\xb7\xc0\xd3\x08;1(M\x8a\x01\x0bQ5\x86\xc6E+\nc\xe2\xcdn\x92\xd4K\x89\xbf\xf0\xc2K\x82i\x92\x97<N\x08\xd7\xbc\xdbV\x82He\xe1\xcd \xca\x8e\x969 \xe0E\xb6\xe9\xaa@=c+f\x04#]\xb5\xc7\xdb\xa0\xd7\x8c\x85\x93\xd7\xd7\xc2\x84\xac\x80\x1f\x8c\x9f/\x82\xe5\x0c\xfd\x83\xc533\x1e\xd1\xb7\x98j[\xbce\x9e\xf8\xcd\xe7\xa9\xa0v\xf6\xcc\x85\x9e\x12HU|(\xe9@\xed\x8c%\xf3\x8c\x0f(\xb7\xc3`\xa7\xb1\x17\xce\xa2\x95\x8d\xcer\x1fXn9\x8fW\xad\x07#\xe9&Q\x16\xfb\x84\x87\xd9\xa3\x18\xa3\xde\x8egB\x1d}\xd8\xe3\xfa.\x14J\xc4m\xf9\x0c\xf5y3\xbb\xcd\xe1,p\x9e\x88\x8de\xf2p\xa4\xfb\xd8\x9b\xcdP\xd7*T\x14\xb8+\xab@\xdb\xe2\x9b\xceB\xf6\xd7\xea\xa3\xde\xb7\xeb\xa5\xa9\xe7/\xb0\xa4m\xe5\x1b\x93\xebc\xe2\x8d'\xa0Ld2*\xc22:cX_\x971\xa9|\x116^kI\xa9\xd6\xaax\xf1\xa6\x9c\xe8\x88\x9c\x816\n\xdai\x9d\xcf_IL/\xfc\x8d\x95\xdb\xb7\x1d\xe8\xf3\xbc\x19\xbd\x13\x08\xe1\x89\x9c>\xa3\xddvD\xbe\x8b\xe2\x0e.Z\x06\x0d\x97\xbd@r\xfb\xaa\xdf\x85\x94\x1f_x\xfe[\xe3qV|\xbc\xf82\xd1\xf9\xdb\x89\x8f\xe1\xae=\x14l\xc8\x1f'S\xa6\xdf\x8e\xed\xc4q!i\xb7M\x08\xb7fG4y\xed\x16J\xd9:\x1f\x82\x85y\x89Yzw\xf0\xab\x81\x9b\xa1\xa1\xca\x1a\x1f\x15T\x8e::\"\xa1\x9f\x94\x86\xbb;\x02[h\x17\xeb}\xf4\x1a}\x9e\xe7\xdc\xf5\xa6\xaeL}\x9a@\xf1im\xb8{\xe4O~:\xed\n4k\x16p\xc4'\xc6\xf7(\xd6\xd5\xf7^|\xf2\x14P\x0d\xba\x0b\xdd\x07\xfd\xae{f\xdf[\xdd\x87\xd4\xf9O\xea>\x0d^\xda\xd5\x0f\xf6\xa9\xbfm\x9f\xe2qo\x93\xbbU\xf2\xe7.\xfd\x1a\xdc\xa5_.\xc4\xe3\xfe\x8f\xa3w\xbbw\xef\x1d\xfd\x7f\xf0-\xf7\xb1\xd1\xd5[\xf7A{\xfd\x12U\x0e\x1aw\x0f\xddG/Q\x97J\x98\x84\xa3\xbc\x00\xcc\x83\xd0[.7\xa1\x0f\xccp?\xdf\xe0\xbc`|\xba\xa9\xdfoE\xb7g[Y\xc8\x02\x02\xcedY(!\xcby\x11\xa9?\x0fN\xbc\x08\x12\x0c\x83=\xc4\x02\x92\x0d\xb8\x949\x14y\xb1\xd9\x15`\xf3[Q9\xfb0\x90M3\xf1E\xdd\x03\xe9.#\xdf[\x9e\xa5Q\xec]\x12)\xa2\xa3:)r\xfeTm\x855\xef*\x10aQ.\xb7\xaf\xe5GBa\xc8sn\xa07\x99\x95\xc6\x19a\x87\x7f\x1e\xd2.t\xbai\xf4I\xf4\x8e\xc4\xcf=\x8d\x01Y\xfe\xb5q\xf0R\x10wal+\x8c>\xe2A\x88\xd0\xc0b\x8a\xbd\x0d\x92\xb1\xa9\x1a\x15\x13\x8a\xb14\x9eapm\xb4ai\xe5\x12\xa1m\xa1\x85\xa8\xd2\xb5\xaa\xef\x91\xee\x1e\x81\xf8\xd0*b\xcf'\xa5*\xe0\x14\xfc(L\xa2%\xe9\xe2C\x16\xc0F\x80\xdeyq\x88g%\x1c\xa4\x1aD\x0f\x8c;-W\x170R\x93\xa2I\xaap\xc4j\xda\x87\xc6\xad\xb4\xd1\x1e\xd2+\xe2J\x19\x96\n\xb0\xe4\x06r\xac\xcb\xa3\x14\xda\xfb}\xed\xad\xcfH\xdd\x1e\xdc\xb6G\xe9\x82d\xde\x8b\n\x1c\xa2+\x15\xa9\x01\xc9\x0bG\x12MpS\xac\xb8\x1b\x84\x0b\x12\x07\xd8yt,q%\x98\x1d1'\x93H\xd2\xab\x9f\xa7\x92\xcbH\xddd\x01\xa2\x06\xb7DT\xdb\xde\xc2\xb3\x86.\xcf\xe1F\xcbS~k\xd0\xbf\xc3K\xfd\xfe\x81S8\xc5\xdc\xf1}\xc9}f\x93\x1a\x9a\xec\xcd\xfdc}\x16\xc4\xfe\xb1>\xcf\xcd\xdeAs\xac\xf6\xeaBqK\x04\x0bH-\xc7P\xd2\xeb\xcc\xb3\"zU\x8c\x97R\xd1*g\x13)\x8a5\xe6\xd6\xcb\n\xebWau\xe8z\xc9M\xe8\xf3\xe4\xadYw\x1d\x07\xab \x0d\xae\x08\x9c\xe6.0pZn\x02\x87u\xbc\xef`6\x0c\x1e\x03\xca\xd6\x948pl\x82w\xe5*\xcf\xa4zi\xb1C\x07S\x0e\xc8\xc0\xfd^\x9f\x01\xe9\xd7\x01V\x93w\x15\xfd~\xec\xfd\xde.\x82\xd6,!\xa7\x00\xee!p\x16$\xeb(\x07\xf6\xd1f\xd3]y\xd7\xcf.sX_\xc0\x04\x80\xbd\x19\x939\xba\xa7\x90X\xc0\x0f\xe8\x8e\xa3\x88\x92m\xb9k\x9a\x10i\xef@\x17\xb9\x1du>\xdeE\xa2\xa2\x12>\x99/#9\x97\xf5f\xe8\xc4\xd1$H^y\xafl\x8c\xfb\xcf\xd2x \x96\xa40\x82W\x18\xc3\x153H<z\x04A\xf2q\x10\x06)\xb1y:\xa5\x143\x81\xf0\x0c\x14[\xbb\xe55Si:\x15\x07\x0e\xeamq\x8cIp\x19\xe2\xd2\xef\x1dlFi\x9a\x9b0\xb2ga\xc9\xca\x1b\xd6n0\xbd\xd3\x14\xa2=\xb79\xda}\x96y\xb0#~w\x06\xbdm\xd3\"l1\x0c\xb3g\xa6\xb4\x98n\xb1\xe2H\x14\xe4l\x1b)\xf7\x9c`\x99~\x1e\xa2\x9f\x12\x85\xd4\xf3\xd7#}\xe6\x8b\x81>\x0d\xd8\x9e\x92\x07\xc6\xcb\xc9l\xfd\xe4\xe8\x02\xd9]\xb1 v\x89\x0b~y\x81\x03L\x9dBe\x1f\xbb\xc8?_&\xb9\x8eDv\x04\xb9\xd1\xb8\x83\xbf^\xd3\xc6\x13x\x8c\xa5\x1f\x83\x17\xce\xe01/\xfe\x18|\xe6\xe2sA K\xd0]\xfc\x92\xa4\x0b\x12W\xb5\xe5|\x19\xcbazr\xd1\xc8:?\x17\xd1\x19\xce\xcf-\x16\xaf>\xec\xce\xa3\x18\x9dp \x0cYf)\xcf.B\xe3\x93\xfc[X\x0c#\xe24\x9f]\x0c\xcbh\xd5 s\xd7\n\xa8\x8c\xd1(A\x87c\x82q]R\x1e\xa8\xddW\xee\x13\xb1T\xce\xe7\xe7\xeb8\x9a\x07K\x12\x9f\x9f\x03\x8f\x14^@0$\xa6\xdf\xcd\xd63/%/\xc2+\xbcJ\x9d\x87\x9fx\x90\xbd\xd3\x88\x93\xbb\xba\\\xbcBU+\x89Y\x17A8S\xb1TS\x90.\x95\x8a\xb6r\xe2\xff\xd2\xc3\xa4x(y[\xf1u\x7f\x99\xbc\x08\xb3\x15\x89\xbd\x8b%i\xa2\x07\x9b%j\xd0\xde\x84\xa2\x934g7\xd3\n\xbc\x1f\x18\xe27\xacK\xa5vk\x0ew\xc5n\n\xec\x90\xa58\xf3\xf9q\xdf\xb3)\xae\xa1Ux\xdeM\xa28\xb5\xb5\x04v\x8d\xa9W\x11\xf9\xd7\xb8\xdc\xc3\"\xfbL\x83\xc6}>N\xa7\xc8\xcf\x99\xc4\xed\xd2\x01\xca\x93e<\x88\xf1\xde'\xecE\x96R\xf8T\xd4\xe3\xbb\xb0t!\x1c\xa7S\x17R\x91gD{\xa3\xdctX}\x10\\\xde;\xacRR!\x81\xea\xf3E\x1c\xe9\xd3E\xec\x1d\xf5\x9d\xee\x8a\xa4\x8bh\x96\xe8(\xed\x9e\xf2\x1eg\xd6\xc7\xba\x04\xd3\x9a\xbd\x80g\xc2r\xc9\xf9\xa6\xbbfYl\x0cff,?\x96\x1c\x14J\x89\x1d\x94\xf0\x9d\x0b\x94\x81\xa3J\xcc\x80\x19B\xc9*hL\xdd\xa5?H\xa1o\xb7\x0bW.\xdc\xb8p\xe9\xc2\xca\x85s\x17.\\x\xe7\xc2\xb5\x0bg.\xbcp\xe1\x99\x0b\xaf]\xf8\xc2\x85\xb7.\x86\xb1Z\xe2\xe9KO\xf0\xaf\x98T\xdc\xe2\x020%\xe5\x9cw\xe7\xbai\xc6\xabS\x89\x9eK25\xc5\xfb3\xcct*\x831\xb8\xd3\x08\xce\xba\x97$e\xd1\x87\xcf\xba \xfd\xba\xc2\xaf\xcc\xac\xe1b\x94\xce3f>q\xdcB+\xd3\x8dI\x12-\xafH\xcc\x82\xcc\xbe\xe5\x9c%\x87\xd2=\xfd\x05\x8f\xbc\x144\x04a\xe1\xfc\x97\xfbU\xe5\x04D\xa5\x1e\x94\x1fcp3\xb4\xd6\xbf\xb5#\xa7\xe8\xd2\x88\xf1\xe8\x1b\n\xa4Et\\\xf2%]\xad\xfc\x1c\xfe\x82\x16\xcb\xb8W\xf2%I-\xdc\xb4\x11\xf3\xc5s\\x\xa9\x8dhO\xfb\xc0\xd2\xf2a\x94\xe4\xc2\xfbp\x9e\x93\x13v\x86\x8f\xc6\xbd)\xeaQ\xaap\xd1\xe7\x11\xcb}c\xd6\x08iF&D\x8b\xd8\xb6\x9e\x07\xb1\x9f-\xbd\x18\x82\xf0*\xe2\xaa\x1c\x17\xac\xe7/?{\xfe\x83O\x9e}v\xfe\xf2\xd5O\xbd~\xfe\xec\xcd\xcb\xd7\xafLVwZ\xeb\xa5\xad\x89_\xfe\xbe\x08i]3\x8d\x0f\xd4\x13\xbe\x1a/\x99=2p\xe1\x99\xbc.\x89X\x17n\xc1\xa7bH\x99|\xbap\xe5\xe4y\x07\xe9\xfe\xa8\xd5\xb6\xe1\xe1Y\xbf\xaa\x86\xa1\xb2{\x02\xb5h#\xae\x12\xe4\xa8[\xe0\x90\xc1\xa5\x10\x8dm\xba\xa0\xc9\xa7\n\xbe\x14\n3\x18V\x90\xccqMh\x9ew\xfa\x81\x17\x89\xf9\x03\xa0\xbf\xb0f\x99\xf2\xfb\xe3\xb8VD\xcdu.\xa7\xfa\x7fXR \xdf\xefD\x8e\xc7\xf5\xc4\xb8\x0b\x8d\xd3\x14\xd4.kP\xa6\x06\xba\xcc]\xb8M\xefK\x0dj:\xf7\xc0\xcb7\x0e\xe8\x1e\x0b\xb5\x8b\x17\x88u\xa3\xe2\x97\xe2\xae\x9bi-\xffQ\x1c\\\x06\xa1\xb7\xd4Z\xfb\x85\xb0>\x84/\xd4\x87\\\xd2\x7f\x85\x91\x83\x90\xdb\x8b\x9fj\xd9K\x92nr\x0d\x94\x0f\xf2m.\xe7\xbd\xb5S\x07\xb9\xdc)\xdc\xb0@\x0f\x1c)R\xba\x18*\xd5S[^x\xc9\x16-\x1b\xd6Q\xe3\xda\xa3i\x8a\xf1\xdbMZ3\x900`\xfd\xd5\xf7\x00\xe7\x04\xfd{W\xccM\nF\xf0\x12EU\xee\xbe\xc0~\xbc\x96\xd1\x82=\xb1P\x9a%\xba Q\xea PL\xd8 #\x8fP\xac\xbc\xd4\x0f\x03\xcf\x83\xe7\xf4\xc8'\x89Fn\xde1l\xc5\xdatb\xa3R2\x9f\x9aK9B\x9dC7\x7f\xae\x0ey\x81F\x0f\xccI&\x83\x9f\xe5`>K\x85\x1b\x95\xfdZD\xf1X\x94T\xfa\xfa\xb8\x15j\x7f\xe9\x18\x870S\x1f\xe4g\xe1\x0d&8e\x92-\xdf\x9ej\xb3\xd5\xed}\xa1\x8aj\xe6{,n9\x87\x8e\xba\x86l\x0b\x86\xb8\x05\xc3\xb2\x8cFP\x92 \x99\x8c\x96q)\xb3j7\xde\x92\xa7\xe7\x8an^\x1bg~\xe5*\xa1iki\xc8G\xc1T\x18\x17\xc9[\xa8\xa6=w1\n}P\xefF\x8cH\xdf8w\xbc\x1b\xc5\xd09\xcf\x1d\n~'Mk\xcaW\x8dNhA\xddB\xd6Y\xba\xa3U\xbd\xcb\xf5\xb7\xd6\xcf\xac\xbb\xf0\x121\xf7\xda\xee\x16XP\xd3q\x8e\x18\xb4\xaeT\x93pum\x7f\xa1\x0b\x8c*\xeb\xbe\x86\x10a\xd8*#\x89\x8d\xec\x0b\xcdSN\xbb\";\x13\xa7\x1d\xb5\x15\xe4D\x91\xfdN\xf7\x0cyEd_\xab}\xcer\xc8\x83\x9c\xf0\xfb\xc7\xba\xfc}\xf4\xe4\xaf?\xe1\x0ft'|\xd4Kv}o\x9df19K=\xff\xed\x9b\xd8\xf3%\xb6B\xe48\x1d\x8d\xf6\xa8\x90;#2u\xa7.\xf7\x98\x07\xe5\xfc\x1fj\x89\xa4\xa2c\xd2\x9e\x85#;\xe1\xa1\xb6<\xc6\xd4x4R\x91\xb8\x1f\xed1\x89\xc8\x14\xc9n\xe1F\xa2l\xd8\xf5\xa3\x19\x8a\xddxO\x87\"\x1a-CJ\x02\xcf=\xd6hs\xa3\x02\xe3\xc0\\I\xc1\xe2\x84ln[`\xb1l\x88\xad\x8f\x882\x8f\xa2!X\xb1\xf7\xa5U\xa5Qj\xd9\x0b\x8a\xf1\xd6\xec\x9d\xb7A\xd94\xfe\xf2f\x08\x16\xfdS\x0d-\xecb\x80\x9a\x08s\xb7]x1\xcb\xe1\x16\x7fy\x83\xb4\x81ve\xf6\xce\xc3\xf7\x1eXo\xbbgH\x8d\xaaU\xdc\xa2\x11g\xe5]o\xa0\xd41\x18\x08\x8a[8\x91\xe2o\xeb\xc2\xa0\"w\xa3\xa3n*+:Q\x1a-yhk5\x8df\x17\x9et\x1cS\xf9\x9d\x8cc\x8d\xabi\xa3\xbfN\xc8\x02\x15\xd0}\xdd\xe8{\xc1\x04\xfe\xfe d\xf0\x04\x92\x13h\xb73v\x7f\xad\xd8\xa0\xd9\xd4\xc5\x80\xb7yh\xa2jv\x82J\x1c\xb407\x8bh1\xfd\xdb0\x1c\x1e\xee3\xc3\xa1\xa4ag\xa6\xc3\xc3\x83o\xdbt\xa8_D>V9\xae\xac\x95\xdb\xd4-\x8c\xb4X^\x87\xdaE\xd5;`=\xb0>Y\xe1\x1eA\xd9d\xd1\xb4\x9d\xaa\x1d\x17\xe6f\x8c\x84\x9b\xaf\x0d;\x9em\xebzr\xa7\xbek(&oB\x1fR\x9d]A\x1b*Ks\xc7\x81\xe3\xb0\x1f=\x82`,\xec\x12\x98\xbe\xa1\xf5 f\xd6*\xfe\x1f3\xfc\xe7w\xe5J\x17nS/\x08\xf9n8\xea\xddc7\x88\xd9\x96\xc9\xfc\x96{\xa5\x8e\xd7\xc5E_1\xe7\x88\x08\x17\"\xa06r/\x91\x9d\xbb\xfal\x1eE\xd6\xc3\x18\xda\xc50\x95\xa9\xe4wa\xee\x8a\x0d\x95#b\xc9\xb6\\NDy\xdf\xceW\xee\x92\xba\"\x18\xbb\xc6\x04\xb4\xd4[E\xd7\x1b[r\x16\x9bZrf\xf5\x96\x9c+\x83%\xa7\xd2\xdc\xcd\xa6\x06\x9fK\x9dE\xb5\xac4)\xbf\xb0\xd2\x12\x0c?\n\xe7\xc1e\x86\xb6W=\xd1 \xb9mV\x1f\xf5Z\x04I\xaa#+j\x9akJ\xa2\xe2&a\x05\x84\xc0b<\xb3-\xd1\xa5\xe1RF=\xeb\xfc\x9c\x10t\x1b8\x95b\xcb!\x8c\x1e\xe5(h\xd5\xc5\xbc\xe70\x82\x99P\xc8\\U\xdeva\xe5\xb8RA^,\x1c\xa7S8\xd5\xc5[\xe7O\xe8\x1f\x16\xac\x0d=O\x11:\x821\xb3\xa5\x92i\x01\xe2\x91:\xca3V\x11\xf5B\x9f\x0c\x91\xd0o6K\xae\x1c\x0eL|J\x13\x15\x88\x88|\xcan\x0d7\xb9\x9f\xc8\x8d\xd4\x01{\x03\xaf\x91 \x97\x8df\x8fX\x8c\xadCg\xf7u\xe8\xe7\xf1|\xce\xcf7\x9c\x8a\xf9|\x88\xa2\xef\xa63\xc1i\x84^\xcd\xcd&\xa3\xa5G\x9bR,\x05\xfd\xfb-\xbb\x82X\xce8\x9dn\xf0\x9e\x8a6,\xb6(}[\x9d1\x10\x92w\xc4n\xbe\xd1\xc5\x8b\xc7\xd1\x94\x8a\xb0\x91\x03A\x11\x927\xd0\xcd+{J\xe5\xe4\x81\x88K%4\xfa\x1c\x05\xe3q\xc4]\xe40ie\xdcM\xd6x\xeb1r\xa1\xaf\xbb\xb7\x87\x96\xb4\xb8h6\xaem\x96kc\xc3:\xcf\xf8\xa6eg\n\xc4\xac\xf1~\xe2U\x1e\xd1\xa2v\xdd\x0dt\x82r\xe3\xa0\xbc\xa0\xe6\x15\xd1\xafc}\x1cx\\\xc5Pc#c\xb6!9\xd5\n\xbb\xebH\xd8\x89\x85\xc0\x13\x08\xe9r\x13\x07\xa21\xa1\x0f\xcb\x17\x1dI\xcd%8l4\xc0\xe0\x15\xec2+\xaf\xb7w\x82\x847\xa0/\xb3\xaa\xf9.\x8e\x0bC\x8e\xb6RnJ\x15\xb7\xc9\xaac\xa9\x9b\x80Mnl-\n\xe2\xb2\x08\x92\x86{F\x0d\xf7\x8a6\xb9\x89Un\xaf\"\xaf\xdc\xbf\xf5\x86\x9bVu\xad\xbb%\xdd\xd1\xfd\xfa\xb2\xd1\x8d\xaa\xbf\x14\xfc\xa4\x9fue\x16L\x98\xf7\x1d\xfd\xaf\xf7\xba@\xcch$\xb1\xab:O\xc6K\xe7vP\x85S\xc62\xb7#GGx\xe6\xb6\xec\x0b\xcd\xbc\x08o\xec\xaf\xde3]\x9c,\x1d\xd7_\xa1\x16\xaeb\xccU\x02\xad.3\xdbgq\x88\xf3C#\xadTn\x8c\x08\x9f%:\xa3\xdf\x81\xfb\n\xcc\xdc\xd5\xa9\xea\xd3_\xa3W\xd5\x88\xcd^\x9e\x9b\xb0\x12\x99\xb8h\xaf>p\x80D\xf7+i\xb05\xdeG\xd2\x0b\xe8,d\xa7\xe3\x10-\xcf\xf4o\x19%\x1c\x91\xf4\xce+\x19\xa5\xd5\xeb\xfb\xef\xdd\xedN5\xa8\xf6B}\xd7\x86iy\"~(\xce\x14\xcb\x8aC\xa5\xae\x8b ,\xc5]\xb9\xefQ\x88\xadS\xffX\xa3\x1d(%\x94\xbb\xe3\xa1.`\x9a\x8d\x94\x8a\x07\x0f\xd4\xed\x8d\xce\xd1B\xb3\xcc\x04S6\x92y\x1cUrq\xd5\x9d\xb6Y\xe8v\x14\xddq\x0d\xc7\xa8Gv\x99\x8ax\xea\xb8\xf0\xbd(Z\x12/\xb4Q\x94!E\xb8e,\xc0LA\xe8\x15\xfd\x10c\x96\xf4\xbcG\x07N7HI\xec\xa5\x91>\x90\xe3\xb1\xde}|O\xb9\xcd\xc5\xf6\xe8\xa0\xba\xa3=\xfd\xd6M\xf4\xead_\xbf\xff\xe7\xbc\xcdj\xe5\xcb*^mt\xacV\x0f\xcb\x8b\x878\x8cj\x9e\xcb\x87Q\xf5)\x1e\xe64\xf1\x17\xdf\x1bO\xf2\xe5\xa3\xfa\xb6\x9b\xa8\x10K\x8d\x1e\x94\x8d\xa6\xa4\x17\xb5\xa6$\x0c\xb2T(\xe6\x13\xa6\x98\xf7\xed3\xa4A\x9e}\xc6\x83#\x02\x8f\x16\x8eh\x8e\x0bG!\x11\x0b\xf6\xec\xe4q\xf2\xca\x95\x1bb1\xe0 \xe8\xcc$\xee\xa1S!\xde\xa0\xe1\xbb\x93y{\xda\x97P\xc4\xe9\xa7$\x85a\x11\xbf\xb9\xcdo\xeb\xd1\xf3\xb9}S\x928\xfa\x0e&+\x1bA\x8a\x17\xd1o\x0c\xd2\x10;\xd5\xd1V\x1b\xa4\xf0r\xed\xa5N\x95B\x8c\\R\xb1&t\xe0\x86\xf9\xf2\xa5Z\x07J\xf1\xe1#5$\x0cU\xa0*\xe4\x06\xb3\x05~\xc7\\\x08\xe7|\xa9\x98\x91A\xb5M\xd8\xef\xb0\xbb\xf1\xd48\x178\x0f\xe7\xe8\xe5\xfa\x8e_Ge~4\x94`\x8a\xf9\xa1\x07\xe4\x0b\x18\xc19\x06\x16\xb3\x8b\xc9i]tgQHN\x1c\xb4\xbf\x9f\xc1\xa9\x10\xe2\x983\xf0\x05\xd3\x98p7\xf6\xfc\x17\xe5\xdf\xf6\"\xd7\xa6\\\xbb0\xb3opg,\xf0\xae\x15\x9f\xe6\xebj\xa3\xed\xb6!a\x16]9Mv\xa0\xc2\xdbs^\x83\x0d8\x03\xf2\xda\xebF\x8f\xe3uQoW\xc1\x89k\x8e\x10<K\x1e}\xc2\x9d\x92Fp\xdd\xf5\x17^\xfc<\x9a\x91g\xa9\xdds\x1cx:\x82\xfd\xfd\xc1\xf1\x01:,\xc1\x93\x11\xec\x1f\xec\xf6\x8f\xb1\xfc5\x06\x9c\x1c\xb7\xdb\xe1\x94\xbb3(\xd3y\xcd\xddG\xae\x8dSxUL\xe1\x15\x9f\xc2v\xdb\x90\x08\x9d\x0e\xb9)w\xad\x84N\x94\x07^\xaa\x08\x97\xcf^fK{\xa72\x81\xf6\xa5\xa3\xdfP\xdaa\xf2\xd9\x14\xb2\xdd\xe6\xf8\xa2\x95\x07XW\x16%\xdd\x9d\x0b7\xc5\x0dQL\x0f\x92\xbfy\x0f\xbe^1R\x1c\x1dr#\xc5\xcd\xea\"Zr\x8b\xc4\xd1\x03X$*'\x9c\xdc\x8cSa\xf1\xd8lI\x0f\xdbd\xda\xd1\xca]*\x8b\xd1\xdeBa\xa3\x94\x02/\x94\xdf\xa3l\x89\x15\xb1\xad\x94$)\xef^\xd5\xa7So]\x14\xde\x8dU\xcf\xa7\xfb\xd8\x10\xe52\xadx\\\x1aE.\x92\xb1<\xde\xea\xf34\xfa\xbe0nb\x11] \xd6\xe97\xde\xe5\xf4\xe1\x84F\xd9\xd4\xa1\xb7p\x08\xdc\xab\x1e\x01\xfcz{\xc4|SC\xc3r3\xc3\xc5Zc\x8fPe>\xbfz7\xa4\x82]#\x05\xbb*\xc7\x92\x1c\xa9\xb6\xc0\xa2\xd8vx0\xdb:\x9bt\xd5\xd8\x0c| f\x8c\x07\xd8\xb3\xa2\xfbn\x8d\xccW\x89\xb0\x1b3\n8\x1b\xa7,\xcb\x1f\xcb\x9e<=q\xa0\xdd\x8e\xb5\xd4\x0b\x8b\x8e\x80\x17\x9d\x8a\x9c\xab\xf6\x9a\xa9]\xac\xef~\x17\x03\xab\xb9\xe0u/\x13.:\xd5\x1fI\x0bo V\x13\xd3\xb5\x10\x17<&.\xe2\x93~\xf5\xb4Zry\x97\x83\xd8F\xb52/J\xa4J\xc4\x08}<xN'\x83\x040\xc7\x10H\xe1p\x0d\x17F\x83\xd2!\xb4|\x96\x0f6\xb9\x1b\xab\x11\x9f+\x9dM\x1f\xac\xb3\x19\xde*G;\x10\xce\xbeoK\x11-\xb8\x16Mb\xb5\x98\xe5\xd1*|\x08i\x91\xb9>y\xfa\xf9\xf9\x8c\xb00\x94A\x14\x9e\x9f\x0f\xc1\xc3\xd0\xa2D\xe7\xccw\x1ez+R\x94\xb9\xb2\xab\x0e\xd0\xef\xcb\xea\x91\xb9\x1dT\x9b\x9cG1}\xbd\x1e\xcb\xf8\xa0\x17\xcc\x0e\x86\x7f\x86\xec\xcf\x08\x02;'\xe8\x8aR\xa4\xf4\xfb-\xb9\xf9x\x93\xc6\x0c\x8e\xe3\xb8\xf9\x08\x04!$(\xd3.\xcc:\xfc\xc5\x98L\x99\xa7s\xce\xc1Hm\xd7\x16^\xf2\x92c\x89\x98\xcb\x98YA\xa4'\xcc\x9f\xcf\x92 J\xaa\xf4 y\x8e\xaa\xaa\xb3\xb5H\xf6R\xa9N-\xc0kU\x1f\xa8\x95s6V\xad\x92\x83EE\xfc\xa7\xf2\xfa\x8a\x92\xc3\xca\xbb\x08\xe3/\xe2w\xe5-\x9e\x13\xa9\xf2\x9e\xc8\x9a\xc4\xde\xe4\xbf\x94w\x13\xe2\xc5J\x93\x0c\xc8\xdfd?\xd4\x17\xd7\xc4\x0fHR}\x93A\xc5\xab\xec\x97\xe6\xdde\x90*o.\x834\x7fo\x19\xa4\xca[\x92\x08PyWz\xc2k\x90 \x9azrAA\xa9'\x7f\x92\xd7\x93C\x94z\xb20\xf1\xa35E\x83\xea,HOx=\x12\xa4\xe4E\x82$F\xa2J\xd5\x9d/\x119\xdaFU{.\xba'\xda\xaf\xb5 \xcb\xba_A\x95*;\xae\xd2\xb1\xc0\xdc1\xb9\xe5MZ\x15\xe4\xdb\xc6\xec\xedL\xef\xd1\xad\x90Qh\x83\xe5(\x0e\xa1\xa5\xdfx\xa4x=\xdf\xb4\xd5\xa4\x92M\x0b\xd4Q.\xcb\xa3\x0cddr\x9b\xa6U\\>\xe1\xed\xe8\xb5\xa3\\\xee\xae\xe4\x86\xc7\xe0\x189\xc6\xd9r\xa7\xf4\xbd\xca\x11\x11{\xe5[\xae\x98S\x8b\xbd\x105\xbf\x10\x94\xe2\xf0\x97\x04f}\x15\xe5\x99\xd0UQH\xe5\xf7\x89\xa5%\xe9g\x8f{[G1b!\xcfP\xdf\xa0\x93\x1cR\x8c\xea\x9f\xcb\x0d\xfac\x90\xd8\x1c\xc52\xdc}4\x9b\xf5:?\n\xb1\xab>Z4\xb9\xbd\xa5\xcf\xe54\x05\xac\xecY^\x16#\x98V\xb3\x18<z\x04\xe5\"\xe3r\xa1\xf2\xca?\xc4\x90\xc5\x02*\x1eQ\xa2\xa9\n\x9b\xc4\xa4\x17\xa8\x80\xd8d\x1b\xe7\xfa\xd7\xf2F\xb6\x9d\xadQ\xa5\xe2+\xe7\xe0\xf4\x04\x7f\xb93\x10\xda\xfd\xe3\xbd;\x0f\xc5\x1c2\xe8\xbf\xaaA\x96\x92\x9do7\xc0D\x89%\x8e\x1b\x83\x19\x8bTO\x10\x11\x9cC:R\xb0\xbe\xd1\x97*s\xe2<\x9c\xbf\xec\x95\x1c\x02f\xdb\xa1j\xc4\xe9\xfa\xe5=\xd5l\x96\x84\xa4\xda\xcb\xb3x\xd3\xa8\x92\xef\x8e\x1e\x89\x88\xd6\x06\x84\xa5c\x1b\xf3nT\x18\xa7[J\x8d\xdaM\x08\xed\x87M\xf0\xcb\x08\xdfI\x08\xa6 \xe3w\xdb\x98\x05P\xfc`%\xd8\x0f\xbcq\xc6s\x1d\xb1B\"\xef\x11-\xc3\xeeLavn\xec'o\x80\xb0\xf0\x12\xe4a(\xd6\x16\x0b\x93+\x12\x84\xbaU=\xc4J\xe9\xfe\xad\xff\xd6*?\xe7\x87\xa2Qqe\x18\xd5\xb2S\xe7\x04:\x9d\x18\x93\xf9\xb4G`\xfd7\xa8V@m\xb4\x16\x13\xc8\x8fo\xd4\x82\x19\xca\xb7%\xb5\xce~\xb9\xb2%,\x86G\xd8\x9d\xc1\x98\xa9\xef\xd1\xaf\x8b\x0e4\x10\x19\x9e\xd8@\xc9\xb8\xdd\x8ek\xa2\xfa(\xe8\xba \x9f\xa8d\x92\x7f\xe0\xeb\x0b\xfdA\xf5&`PU\xf15L\xb4I|\xd4\x19Z\xd1\"\xa5\xc2C<\xcd\x9b\x03\xbc\x186t\xfdi\x1e$\x0fV}w\xc4'BwQ\xe3\xe3\xcc\xb8I\xc4'\xc8\x13oe\xf9\x8e\x89\xc6\x19^\\\xa0\xa32\xbfE\x9b\xa6%M\x03\x00\x81\x8f'\x10\xc0\x13\xc8\xa0\x03\xfd\x93\xba\xc2\xc0+\xe6\xa1\xf4PE\xc4\xf9C\x84\xc6\xcet\x1cL\x1d)\xd8\xaa\xb1{\xe2\xc3\xba\xd8\x9f\xa2 \xa5\xdd\x0e\x8c\x85U\x0b\xa4\xf8\xf0\xb6\x1a\xfa\x04\xa7\"\x13\x1doNL\x9f\xb6^}k\xd2\xa8\x94\xe7\x9a\xbb\xe4I \x8d\x8c\xee\x96\x14\x8d\"\xa6\xec\xadA#\xaf\x1e\x8dP\x9b\xb8!\x1a%\x0ex,{C\xbbmH[\xde\x90\xd3\x00\x91\x06\xeb\xb8\xbd\xe5_F0\xae]h\xdd\xce,?7>\x9e\xf2\x8b{\xb4\x1d~'\x8ecj\x87\x87\xfe\xb0\xa3b\xd1=\\\xf4\x80\xa2=\xf3\x93\xc5X&\xe3\x1e\xf7q\xc7\x07\xf4E\x17\xbcq\x9f\x03\xbf\xc5\xae\xe7}\xefO\xc7\x11\xe2xvr\xaf~;\xae\xa8\x8c-\xe0\x1d\xf0\x97k8\xb5\x99\x16\xd5\xa1n\x17\x1b\x83\x07\x8f\xa9\xc1\xe4\xac\x1e\x93=\xee^^\x8f\xebyn>c)\x1f\xd9\xc1\x06{\x81\x0b[\x19\xc5.\xf3f\xa0\xaf`\x1a\xc0q\xb2 =\x8d$,\xdd\x9c\x9eJ\xd2\x7f\x86\xe8\xe0\x8d#\x89\x9e\xd6\x93R\x9f!J\xc6\xe24\xb1\xbe\xf6\xa7\xe3\x00\x91.\xba\x03a}\x90\x9e\xe5\x17q\xf3\xce\xd0\xf7\x85\xdf~\xe0\"B\xd3g%\xd0 \xb4\xb0\x18\xb7\x7f?z\x04\xbe n\x0e2\\\xbf\xbb\x8e\xd6\xb6\xe3\xb2E\xe1\xbf\x9c\x0dj\xdeb\xbbH\xd7\x016\xd9'\x9b\x86_\xe1r\x8a,\x97\xa8\xd5\x7fG\xff\xeb\x1eRY\xc5\xf0\x7f\xcco'\xb2\x90\xb4]\x0ci\xc7\x83:\xdf\xe7B\xe2VB\x9c\xdc\xf66G9\xb4w\xa7\xf6W\xef\x91P\xa6\xf6+\xef\x15\xbb\x83\x98\x16I\x1e\xe0\xe1fk\x03\xa9\xbf5z\x18=XYt\xbe\xe3\xb4n)\x1bW\x89\xe4C\x88\xc5\x12\xb9 .:\xc2\x19\xbc\xe0\xca\xc2[PHi\xe18\xd8h\xd7\x95\x85\xac\xa6\xe0\xa1,_6K\xac\xe3B\xc8~\xb5\xdb\xa9\xf3\xed\xf0BIc\x85\xf9\xa3\x90\xf1\xb7p\xa0\xec\x0c_&Va\xe9\xb7\x86*<\x0c\xd1\xd1\xc8+\xdf\x02\xbdy\xc8S\xa0^\xc9\xa0G\xf5\xd0(\x8a\x9a\xe48\xcd|hJF\xf7<F\x1a#_\xe5\x1a\x81\\tb~\xd2L\x88H\x1b\x85\x88Z6MJl\xba\xe1@\xb6\x91\xccP+Z6\xf4\xa3\xd8\xde\xbc\x19\xe3!\xacq\xa7\x1b\x8fS\xf9tr\xff\xa3\x1e\xbbq\x13\x9e\x80'Mg.\x81gEO\x13.\x81{B\x02\xa7\xcf\x12I\x02\xf7\xc4\xc9!\xd9\xe0\xe4Pwj0\x9c\x18\xf0\xb4\x90`\xa3\xfd)\x86\xf8h\xb7\xeb\x13\xb1w\xee>\n\xc7\x15\xcd\xe09\x82\xb8\x10\xa1\x7f\x01ECM\xd8\xe4\x0dh\xe1F\x18\xce\x8e\xb9L\xcag\x83\xa5d\xc9G5\x00\xe1\xc7\xbb;\xe3<;C\xf9x\x86j\x16M\x136#\x9e\xcb\xf3~\xf3S\x1aC\xfel\x0b\xe4\xe7\xbdi\xd5\xf6\xa6\xe1\xc8@\xe4\xe6=U\x90\xf54\"\xb2W\x16\x91\x93\xb2\x88\x9c\xe4\"\xb2W\xfc\xd2\x88\xc8j\xcd\xc6\x9er\x89\x98\xae\xd4\x86\xd3s\x0f\x96e&\xe4p\xc7\xed\xe5\xcaD\\\xed\xeaw\xf4\xbf\x1e\x86\x07j\xef;\x85v\xff\xb8\n\x8f8\xfcH\x7f\xbfM $..\xcfT\xef\xe0$\xa6\x8bo\xe5b\xdb\x05\x0870mL\x15\xc1\x93\x184\\x\xe7J\xd3\xa5\x0bk\x17\xfd+\xe7\xdcAQ\xa5/u\x0f\xaf\xd0\xba!\xc2\xce\xa9\xcfo\xf0\xb9\x08\xc1X\xc6\xe8\xe2=\xf4\x08\xaf\x97\xe5\x84\xa4QD\x17\xd6\xe2V\x8c\x91\xa1DJ\x07\xbcVj\xd4\xd4\xebC\xad\x80\x88\xd7\x1737\xbb$\x17\x9f{.t\xfa\x945\\\xf1\xcb'\xcb<&\xc2\x9a6\xab\xda\x9c6rX\x8eli\x02\xe1\xaa\xc6o\xf9}e\xfa\xa2P\x04\xe9m\x9e\xbb\xda\xdb\xed\xda\xfb\x93\x90\xbb\xbbI\x11\n\xb4s&;\xee\x8d`\xbc\xc0\x88\x15\xa1p\xe2c\xd4=t\x98\x0d\x0e\xa7V#\xbd\x89O\xcc\x18\x12\xdd\x95KF'\xd6LZ^b\x96|\xe1\x92\xdf\xe0D#>(\x7f\x98\xe9\xa8.R\xec\x8c'4@~=c\xc17\x8a\x80\xc8\xb8\xb7X4\xd8\x88\xf1+\x1e\xcb8\xc6T\nQ\x98\x92\xeb\x14\xf30\xc5\x97\x89\x93\xfbo\xc6,yD\xc00%*P\x88\xae\x89)Et#id\x99\xbe\xf9\xdej\x8a\xc2q\xc5\xeeEr\x9fp\xe3\xa6\x08\xe9\xd0\xd3rV-\x1e\xfeCT\x0f\xa9\x19a\x84\xfc\xccD\x8a\xb4\x1b\xcc\xcc\x9a?\x1e \x13jS\xf9\xd3\x82\x9c\xdd\xd1\xdaXO\x16\xe3\xa4\x08\xda\xcb~\x04\x85MF\xe9<F\xb7\xe1\xf1\x10m:@a\xd9\xb51\x9c\xb8=c\x8ass'\x80\xf9\xb3\xd1\xb5\x1d\xb2\x1d_[\x94eu\xaeQ\xf5\x15(\x95\x14(\x95\xb8\xfa\xdd\x15\xf0\xbc\x06A~%\xd9\xa9)\xc9\xd4p\xd5\xbb\xf1\xf8\xfaf\xb7\x90\xe5\x8fTY\xdap\xd1\x1e\xd8\xb8R\x16'\xdc \xb51\x15\xaeg\xfb\xfc2\xb3\x1a\xfcEw\xd8f\xacXG\x05R.Ks=+\xef\xea\x8d\xa8\x16\xf3;u\xfd\x0b\xb6\xe5B\xb6\x013)\x00\xf9MC\xf4\x99\xf7.\xa7\xb2\xc9\x06T\x16w\x0e'\x85[\x90\xc9\xae\x7fQ\xa1\x94]\xff\xc2)\x1c\xa0\xe9\xcf\x1c\xd7\xd9\x8f\xb0\x1bP\x96\xc9c\xef 1\x85a\x81\xd4\x9a\xdb\xe3l\x14y,\xebfv\xa1\x11\xd7u\xc4r\x81\xc4\xf2\xf6\x16 e\xce9grL\xed2 e@\x89\x8a\x8a42H0Q\xddb\xea\xbd\x08x\xddL\xe5h\x17\xd4\xfe\xcbrL\xde\x1f\xacTt'\xa0\x18\xd9\xbc;8\x9d\xe1=O\xf3\x9e\xab\xa8\xab\x8c%\xff\xf90\xc2\xac\"\xb42av\xbf\xa7\xcf\xb3\xb8\xdf\xab\xde\xe1\xce8\xbc*\xe42av\xd0\xab*\x8c\x12\x83\x90\xbb\xc1\x8d\xa1\xc0\xb6\xd2\x05\xc1x\xfd\xf4\xef\x90'A\xc6{\xf5QH\xc4\xdf\x1c\xeeT\xc5Z\x91\xc6p\x13\xc1\x16\x8a\x0b7\xca\xaa\x04u\x0f\x97\xa0\xb9i\x04\xc2U\xa6'\xdc\xfeS\xbe\xef*\x02\xad0P\xa5\x18\x1d\x95\x92\x9f\x16\xa6Y\xd2_\x0bylA\x1b\x83=@\x1b\xac\xc7\xc2\xcd\xf3\xca[\x063\x10\x83]E3Ru\xf8\xd4\x92\xa4\x98\xf1u\xd3\x9e\xf0\x0d\xb9yqX\x9e\x9d\x15\xaa\xa9\x80\x85W\xcd\xb8\xcb\x94\x86Q\xc5\xfa\xc3i\xc8^\xec\xbb\xb0\xe4U\xa8ehW\xe6\x8d1\x99\xe4\xd2\x88\xb9c\x9d\xbf\x8d\xf8\xd0!\xf8\x9als\x9f2\x99\x9a\x00\xa1\xbf\x87\xf0\x11I\x89\x9f\x92\x19da\x14\xcfHLf@\x11\xf1\x96b\x1d<\xca\x93rc\xf2\x9e\x8cv\xce\x85w\x8b\xc0_@\x10\x02\xce\xcc\xca{K\x12`\xa9\xc7`\x86\xb5a\xf6\xdb9$\x99\xef\x93$\xd9\x99{\xc12\x8b \x04\xabu\x94$\xc1\xc5\x92\x80\xfdnABZ\xc5c\x19\xbb\x1f\xe3\xc2:\x93\xf0y\x14&\xc1\x8c\xc4\x90F\x10\x93\xe5\x0dD!<\xa6\xddz\x0cQ\xcc\xdeae\xd1)\x90x\xb3\xae)\x8f\x0d\xe06\xa7$8\xb7\x97\xc5\xa8\x80\xc2\xb5H\xb5\"G\\#}\xeaE\x9cu\x93\x98)>>\xbf3\x86X\xa1\xf4\x8a\xffX\xe2\x8f\x9cq\xc5\xdb\xf5e\x81\x0eZZ\x94\xc6\x1b 6-\xc0\x88\x8e\xc3\xa9\x0es*^8\x90u\xe9\xcf\x0dD\xa1\xc4\x9esa\x85\x8b\x14Z \xa5qJ\x12{\xad\xe3\x0fj\xefs\x1a\xc2\xa8\xa2\xe8\xaf\xf9x\xa6\xbd`\x9b\xe1M\xfb\x0d6\xc5g$\x8d\x03rE\n\x8a3\x8b\x08#D\xc1j\xbd$T(\x12h(\x90\xf8\xb1\x96*\x89\x0fk\xda\x9e\xbb\xa0\x1bqe|9\xb5\xff\xafq\x9c\xe5\xcdj\x1aoM\xdf\xf8\xfb\x0f\xd6\xbd\xbc?\xdb\xf5P\xac\x08\xe6n\xe0oh\xd1\xb1\x04)\x04\xaf\xaa\x8a\x81\x85\xca3q\x1a\x93\x8a\x01\xf9`\xbb\xad\x0f\xeaW\xe3\xe7D\x19\xc0R\xfb\x12\x88\x03\xfe\xa64I\x7f\x8e\xc7\xc1\xe8\xe9\x8e\xbeM\xcf\x8e\x1c\x93\x8c\x1f\xe1\\cVF\x9ct<mD\x15bS\xd7\xc7D\x0e\x1c&\x7f\xde\xd3\x9a2{\xf3e\xdbP\xda\x97\x0e\xd8Kv\"\xc1\x95\xaa\x8d\xc1X\x9b\x18-@*Y\xa3\x1f`1\x04M+\xca\x1b\x0e\xea\x8f\x0d\xe3X\x97\xbb\xc80\x13[\x9d\x1c4\x81Pe\x89\xb1$[\xca\xe2\xa2\xe1L\x11ou\xa6\xd0\xba\xb8|\xab\xa7\x88\xaaj\x9a+ \xbe%;q\x9d\xe1VXk\x8a\xf4q\xf5\xd3F\xd8\xf9\xb8z1\xbf|\xf9\xfc\xfe\x13\xa4\x89|%NY\x87M\x9e!&G\x15\x16\xf7\xfdA\xd71\xb4\xfb\xfd\xed\xb3\xe8\xd7\x06\xe8gWq\xec\xe2\xaa\x1f\xc6s\x93.\xfeI\xb9\xc4j\xb4\xd6J\xf5\xda\xc3\xd0\xf7\xbd$!\xb3\\\x11#e\x83f\x97h\x829\x99U\xb3\x19=\xec\xfc\xed\xf7t\xa7\xe9\x9d\xf1$\x9c\xc4\x93l\xd0\x1b\x1c\xe1\xff\xc7\xd3\x9d\xcbm\xa7Y\xa0?]u-\xee\xe7\x06\x8b\xa7\xd0\xef\xf5@\xc4\x9f\xe3\x96\"\xbb\xe7\xc2\xf11\x1e\x13\xff\xcb\xcf\xfd\xb6\xc5\xef\xff\x13qO\x9aR\xdc\xfa\xad\xc2[\xf9\xc9\xb3\xd7\xaf\xbab:o\xec\xd4\xe1\xd5\xf7\xd1\xb0Q\xd9F\x0f;\xb9\xff\xbfANa\xe7\x18\xbf\x8a\xc2\x8e\x1f\x91\xd8g\xc7\xb84\xe2\x88\xe8\xb0\x9b\xbc\xd3o\xf9\xc2\x86\x96\xe4l\x93\x1f\xdedL,\x9a\x8b\xba\xb3 YG\xaaJE\x13P\x93v\xad\xe2\x02\x11`^\xf8\xd4\xd1\xe5MG\x7f\x92\\c\x83\xf0<-|\x8e\xf2\x85\x90\"\x98e)-\x8c\xae\x1b\x80\xe2\xacPH\x87<Sc\x05ss\xcdE\xce\xfbE\xfd\x0d\x92P\x99U\xd7$\xc9\xf3\xd0\x9bNw\xa0\xabt\xa5<c\x15\xb9l\xa3\xd1\xa6\xb6f|\x06\xb1\xe6\xc75\xaa\x07\xc6u\x83I\xde\x80\xec\xaa\xf213(+\x99\x12s\xdf\x10\xcfR\xd94z\x0b\xbc\xaa\xc8\x14)\x94\xcaO\x96\xf9\x93\xa0\x92I{m\x16\x9e\x12Z\xcf\xb3\xcbM7\xe0\xc2\xc5\x90B.\xdc\x94\xf1\n\xf5\x8d\x18\x91\x079\xc7\x02F\xb0\x16B\xe9\x0cM\x08\xf9\xfeL\x0c\xfb3\xc9\x7f\x9c\x82\xc5\xb6\x0b\x0c\x01#\xc3\xe4\xdaFh\xd3\xe6\xf3\x8ej\xd1u\xc1\xa2\xab%$}\x13\xacH\x94\xa5\xcd\xa7\x9e\\\xfd\x13jU+\xa9\xc9\xdaE\x9b\xeafaL\xe6t\x00\xc5/\x1b\xb3\x9dbH9\xda\x99G\x8f\xc0\n\xc9u\xfa&\xf0\xdfZ\xe8\x1b$\xc0\xb8\x7fD7)\x90\xbe\xb8}\xff\xf9\x81\xe5\xa6\x1aY\x98\xf7\xff\xca\xd4\xff\x9bR\xffo\xa4\xfe7\xd8o*\xeb\xa0\xdd\xf5\xa5\xb1-X\xaa\xff\xdc^JOVl\x86\x94\x99Iu3#\xbf}\xa3M\xa8Hq\x89|L([\xa5\xd5^\xb1\xc4\xa0\xa3\xd1H~r{\xcb3\xb6\x170\xca\xb4\xbb\xbb\xbb\xbb0\x84\xb9\xbd\xb4\x99#\xba\xfc\x9c\xb9F\xf58f\xdf\xc0\x08\xbez\xcf\xa3j\xf5\xa1\x03W\x0e|\xc8t\x9bBQQ\x9d\x1c\xb4x{\xba)\xc2\xc1\xde\xde\x02\x0e\x10F\x12\x96\xb8\x105/\xbbA\xd7A?\xd2\xac\x8e\xa4Y\xb5\xa5)tes]\x89\x832\xcf5;p\x1cf\x0e\xf4\x1df\x00-\x9cD\xb8\xeb\x00\xf7\x97+m\xe3\xcc\x8e\xd8Lm\xa4\x9c\xf0]\xf0%\xfd\x04\xfe\xd4\xe97\xd5\xa8Oe\x16T\x99s=\x17Z4\xa1,T\xd1V\xcb\x8a\x98\xb3\x12E\x02\x86\xc1\x81}\xb3I\xc5\x15DO\x15,74\xc60N\x19\x7f\xfe\xfbA8\xa0\x12\x88\x99\x1f0\xfb\xbb[\xcb\xccT(\xe3\xee\x1b\x94\x1d<\x85\xa0.\xb2\x08\xb9\xf6 \x99%\xb0\xf2\xae\x83U\xb6\x82\xdcj\x91\xb2Y\xf9q\x85\x1a\x19\xf4\xf7\x0e\xf7\x8ev\x0f\xf6\x0e\xef^\xdf\x06\xd3\xa9\xb7\x8a\x0e\xf6\x1cY&^y\xd7\x1b\xb2c\x9eCJ\xc3\x8b\xe3\x9c\x17{<\x06<\xf7%\xdfBP\xaeg\xc4\x19s\xb0\xa9G|9\xb6/\x8a\x08\xddE\x90\x8a\xae5\xbb\x0b\\\x16MiX\x10\x1d\xbd\x88\x89\xa0\x90\x03|\xc8\x83!<\x04\xb24,n\x8d\xe99jNv\xb5\xed\x1e\xbb*\xd2?k\xee=`\xcaH\x15\xec\x15\xda/\xf5aR\xf7\xd0\xc78\x90\xda}\xc8QM\x17\xe7o\x11lt\x1f\xe7\x8a_\x8fI\xc6q\x8d#\xef\x1c]\xd3}=\xb7\xa3$\xc7\x1b\xcf\xa7\xcc\xcd-a\xf6\xc6\xb9\x0b\xad\xda\xc46\xf4\xadv;\x84'R\x18=}\xfd \xa9\x08\xd19;\xa3\xdc\xd3\x8e\x1d\x17b\xed\x0bf\xe7p\xce\x80=v\xff\x91\x07R1\x8f\x9a]!m\xf1\xdcU\x1e\xba\xa3;'\x0e\xba\x82\x05a\xb6\x95w~}\x9a\x0f\xf1\x11\x8a\xa2\xc4\xa8\x1e\xa7\xc3 \xb24\xe1\x8dIaPMP\xb4\xe8tB1<R\xeb\xf1\x8e\xd6\xff0?\x92\xfb<nu\x14\xcc\xd0\xfb\xb1\xce\x05}\xfb\xc9\x01\xed\xd2\xdc\xd31\x9d_\xd2\xe9\xbb\xa5\x0dV\xdaPlXj\xc3\xdf\xd1\xffz\x10*\xa5\x84\xda\x0d\xf4g\xce\xa8\x9exe\xe6H\xbbE\xabA7&\xf3\xe7Q\x16\xa6$\xde\x90s\xa9l\xcbC\x8f\x15i\xf6$V\x15\x18XU\xb0\x19\xabJ6P?x<\xb3\x1dm\xa3\x12\x84\xb9\xca\x8e\x1a\xed\x02\xed\xb6W5\xa3\xe8\x8eP\x8d\xf5\xe4\xfb\xcbXY\xce\xee\x92\x06\xe9\x17\x93\x18\xaa\xd6\xa9\xac\xe4\xf9m\xea\xc1gd>\x84x\xb3\x03I\x1elH\xf2\x7f\xd5\xefa\xe9\"\x1asj*\xee\x84y\xccO\xb1\xd5\xe9x\xe2\xe4R:\xac\xb4z\x98\x9fP{]L\xc3\xbf.I\xfa\x19G\xd0\x1f\xd38z\xc5 <\x16LV\xb3\xfd\xef\xa7\xd4\x92\xd2\x0f\xe96X\xe8B%DsXD\xecm\xf1\x88\xbd\x04\x86\"\xa5b#s@\xaf\xb2\xee\xf3\xb33\xba\x1c\xf8\xa5K\x12\xdf[\x17\xfaT\x19\xa8N\x95`,\xcd,H\xc4dP2z\x19\xbc\xd8\xfef\xd1\xec\xdf\x84\x98\xfcl\x16\xc4$\x01\xaf\x08}g\xf4X*\xc5\xbb\x96\x82L\xf1\x10La\x9ea\x81\x12\xcfN\x9f\x1d\x83)ya\xa2t)[\xc2 \xb4\xdb\x01<\x81\xf8\xc4\xc1\x19\xe6\xf9{\xe4B\x01\xde{\x8c\xa0Mg\xff\xe9\x08\xfa(\x05S\x01d\xb7\x8ftgp\x08\"\x03!N@\xc0\n<\x1d\xc1\xdeQ^v\xff\x10\xcb\xd6=\x7f\xf4\x08\xf6\xf6i\x81\x8c\x12\xc6\xc9\x04\x83F\x15\x96\x89\xfe\x01Zr\x80\x12K\x1b\xfb\x1a\xb0*[<t\xf7\xde>\xfdJ\xd8\x01\x82uup\xc4\x1f\x88\x0e\x1e\x17_\xf5=D\xe8\xc1~\x0e=\xee\xe5\xd0\xe3\xc3\x1c\xda\x1f\x0c\xf02(\xce\x13\xce\x11\xa5\xe0\xac\xcbe \xce\x9b\xf5\xff\xfe\xc5\x9fY\xb5\xfbPuz\xd78Q\xc8\x18\x8b\x1a\x18\xf6\x0dO\xdan \x91Y\x8a\xcfJt\xe5r\xec\xeeX\xd6\x1b\xbew\xf2\xdb:\xa1\xdd\xef\xdf'\xb0\xa76p=\xad\xd8:?'\xc9\xa7\xd1,[\x12\xabJ\xb5y\x9a 9\x8d\x82\xc3T=\x98K\xaf\xceQ\xc5x}9I\xbd\x94|\x7f\x99]\x06a24l\xdadM|\xd33\xfa\xf1\xb0\xcdd\x08\x99Y\xc8O\xc8\x92\xf8i\x14'C0\x04c\xd2\xbf\xcbR/\x19\xbb\x068\xb6Y\xe6\x13Zs\"\xa6\xc2\xdc\x8f\xbc\xaf\xd1F}\xf5\xf4}U\xf1\xf0;\xfa_\xefU\xf9mn\x87\xf6~\xffX\x89\x90\xcd\xed\x0c:\xbb\x84o\xd3'{J\xa0e\xfeh\x7f\xaf_}\xe4\xe5\x8f\x06J\x90i\xd1\x87\xbd]\xc79\xf9N\xfeL\xe0\x0e\xf8z\xc5O\xca\x98C\x81\x9f\x05s8\xa9\xa0)\xe3\x06_U6\xa7|+G\xa3\x10\x93b\xe6\x05!=\xb65\x1c\xac\x0bC\x1d\xa7eEF$\x93\x19\xbc\xd8(i\xd9\x8fC\x9d\x84\xb9\xd1\xbdB\x99\x07\x1e\xb4X'a\xb1\x1c\x97\xd5 \x93\xdfQ\xbf\xd1q/\x95[B\x97$\xfd$\xf2\xbd\xe5s\xdc\x04\x9b\xc5\xfa\xb3{\x18\x8c\xd8\x8b\x13\xf2\xd3\xde\x8a\xbf\xea\xd8\xb1\x18\xfcv^\x0erC2]|\xdc\xe9t&a\x16/\x87`-\xd2t\x9d\x0cwv\xd6$M\xd2(&\xdd\xe4\x9dwyI\xe2n\x10\xed\\\x0dv\xc4\xaf/\x92(\xb4&\xe1,Z\x9d\x07\xb3!X\x7f\x85?\xe8d\x815 \xd11\xddK\xa3\xf8\x07\xa5:\xa3p\x19\x84\xe5\x1aEAk\x12F^\x96.\x06\x9f\x91Y\x10\x13?-\xde\x1c\xee\xec,\xe9\xbc-\xa2$\x1d\xee\x0ez\xbd\x1dV\xb2\x13\xf3\xa2\xddE\xbaZZ\x93\xf0\xb1v\xd0\x1bQp\xc9\xb5c\xd07hR\xe3\x87\xa9^\x7f\xdc\xdb\xdf\xebi\xb7od\xc4\xdcZ\xf4Q\xbcH\x85\xb5\x120\xfe\xa6\x88\x15=#\xeb\x98\xf8^Jf\xe0\x853\xc9\x91&K\xc8\xac\xdb\xe0C\x03\xf2\xfct\xa9\x98\x87#\xe9\xc9IK\xbbg\xfe\x82\xac\x98uu\xf7\xa8\xf4\xe4\xe3g/?9{\xf6\xf1\x8b\xf3\xb3\xe7\x7f\xed\xc5\xa7\xcf\xb8\xc1vP*\xf3\x93g\xaf_\xc9\xcf\x07\xbd\xdd\xd2\xf3\xe7\xaf?{Q~^~\xff\xa3\x17\x1f?\xfb\xc1'o\xce\xab\xed\xec\xefj\x8b}\xfc\x83O>\x91\x8b\x1d\x95\x8b-#o\x86\xa1\x02\xe8\x97\xea\x83g\xf4P\xc1\x9f=c\x17\xce\xc4\xe3\xc4\x9b\x93O\xc4\xbb\xe2\x87\xae\x80\xa8C\xfa-\x17\x9be\xab5\xc6\x0c\xa4_\xaa\xef\x7f$\x1e\x8a\x1fr\x81\x9f~\xf6\xe9'/\xae}\x82!\xe89\x1e\x96\x86\xf6\xe9\xcbW/?}\xf6I\xddZl8\x87\xe6\xe9K|/D\xd5\x81E\xbfY\xa5gH\xe1\xd8C\xfcZ~\xeaG+\xee{\x12\xd9\x16\xffQ.\xe1\xcdf\xcf\xa5\xf0\xe1X\xb0\x0c\xb3\xee!\xdfI\xfe}\xd5\xab\xfcA>\x9b%0\xbfD\xa5h\xa0\xb3|\xeaJ`/\x9f\xaf\x128iVH\x97_\xf0U\x85\xf2\x1cF0(\x83(\x92\xed\x96A\x14u\xf6\xca\xa0\x85Z\xd7L\xad\xebJ\xad\xeb\x86\xb9\xc2]\xf7z\x9d\xc9u\xefhr\xdd\xfb\xde\xe4\xba\xf7|r\xdd{\xd1\x99\\\xf7?\x9e\\\x1f~\xdc\x99\\\x1f\xedM\xae\x8f\x0e:\x93\xeb\xe3\x8f'\xd9\xc7\x1f\x7f\xfc\x02\xff\xffxz;\x9ed\x1f\x1d\xd1\x97\xb3\x8f\xbe\xf7\xf1\xc7S\xfb\xb4E!\xcf\x19\x84\x96pn\xed\xd3\xe1\xf8\xf3r\xb1\xdb\xcf\x9dJ\xb1\x9dr\xb7.y\xb7\x8e\xf6\xcb\x1ez\xe5R+,\xe5N\xc6\x93\xe9\xe4\xab\xc9\xfb\xea\xe3s\xfa\xf8s\xfbt\xd8\xbam\xb5n[c\xaf\xf3\xe5\xa43m\xb7\x9c\x0fv\x82r\xc9\x8b\xa2\xe4\xf8\xf3\xa2>\xc7>\x1d\xfe\xc4\xb8\xd79\xf6:\xf3\xe9W\x83\xf7\xb7\xec\xfb\x97\x93\xce_9\x99\xecLN\x87\xdf}4\x9a\xb4'\x1f\xb8\xe7\x93n\xeb\x7f\x98|\xf8xbO\x1c\xfa\xf6\xd4\xf9\xf0\x83\x9d@\xc7\"\xde\x19YD\x9f_B\xc33\xe3.\xfb.\x11q\xb5\xaakcU\xc7EM\xbb\x83\x0dj:\xdb\xa6&\xec\xdf\xb6}}alao\xaf\xa8\xea\xb8/}\xdf\x95\x9a\x18\x94~\xeco\xd0\xe03\x83yG+\x9e\xee\x1d\xa1\xb9\x02\xa5K~\xd2>\xc5 9{G0\xa4\xc7\xea'\\\xef\xb0;\x80[`\xc9\x9c\xd91\xbb7@}O\x87\x16j\xd3i\x19B\xa7_\xdb\xb1\xd7\xe6\x998\xca\x15]\xd6\xa4g\xb1\x96s\xc8\x7f\x87\x00\xb9\xc8\x05\x85\xf4\xfb\x07\x12(\xc5BU@?_.\n\n\x19H\xae\xe9\nA\xbd\x81\x04\x9a\xb3R{\x12(f\xa5\xfa\x05\xe8\xbf\xa7\x90]\xe95\xd4}\xec\x16/=\xb6\x1e\xc3\x10\xf6\xa4a\xec`\x0f\xe5\x96&\x14r(u\xe7\xff\xf9y,\xb3/A~\x13\xcb\xc8#E\xaa@\xa1G\xbd\n\xf4\x98)\xabk\x17\xe1\x8b\x9a#\xc6\x93\x11\x1c\xec\xef\xef\xee\xc3)W\\a\x96\xe9\xe7\\\xdfd\xa7\x85\x03j\xf9\x01K\xe9\xd9\xa6\xa7\xb5\x0e\xd6p\x00O\x9fB\x9fJX\xfb\x07\xbb\x83^\xf9\xd1#:\xdf\xbb\x8a\x11\x15\xe4\xd3\xd8[\x90\x13\xd3\x0e\xf6\x0f\x1c\x17^j`\x9f\xb2\x84r\x9f\xc2\x13\x18\xec\x1f\x9c\xc0\xa7\xed\xb6\x03o\xc7\x9f\xd23\xd9k\xfbS\x87\xc7\x19\xe8\xb9\xf0\xb2\x00\xea\x88\xd3\x1b\xad\x1e_hb\xc9;\x08P\x01C\xdeQI\xb7;\x0f\x96$\xf4V\x84\xb2\xf6 \\g)\xde\xdb\x8f\x92 \xc5;\x96i\x97\x9e\x1fd\x18t8\xf0,\xf5\xe2\xb2\x9b\xbc\xda\x97\xe7\xda\xbe0Q\x99\xf7\xb3\xf6\xfd\xef\xeb\xdf\xefF\xe1\x0f\xbd8\x0c\xc2Kv\x96\xcc\x7f\xf2\xeb\xea\xe8y\xca\xeb\xd7-\x0e]\x97\xcf\x94\xd3\"\x15\xd9\x86\x8d\x16\x1a\xf1\xbe1d\x0b?\xa2\x8f \xed^\x918\xa1\xc3x\xf4\x88\xcd\x845\xcb\xd6\xcb\xc0\xf7R~3\xf5'h\x93\xc0\x8eT\x98Q\xca\xe5\x91\x0fC)`\x15{\xb3\\\x12<\x9f\x8a\x96 \x90k\xcfO\xf1b*\xc9U\xba\xb4\x9a\\\xe3n\xc7\x8c+R\xa67m;\x93\xae\xf8\xf6\xc1N\x97\\\x13\xdf\x0e\xc7=\x1e\x03\x8d5\x14,\x97\x9dy\x14\xafdw\xffh\x0e\xe9\x82\x80\xda[*\x8b\xa1\xf4\xf82L\xedx\xdc\x9f\xbal\xafDe\xf8@\xc0\xa5\xb8\x8e\xac\xb5,d#\xc1lhX\xbf\x983\xde\xe6,\xf2\xf3A\x15\x13:\x82\x90E-\xef\xfa\x0b\xe2\xbf\xfd$\x08\xc9\xf7b\xe2\xbd\xa5\xe2[Dw\x90h\n\xef\xdc\x0e\x8a\xaf\xdf\xe7\xad&\xd9\x9a\x8a\xb1d\xd6\xd0hiu+*\xb67\xcf\xfe\xeav\xe8\xa2\xe2\xca\xc0\xb0\xdao\x9e\xfd\xd5\x9a\xc5N\xdfE\x85\xfe\xdf\x12\ny\x16\xd1\x0e\xbf\xd1u8\xef\xa6$I\xed\x18\x03@(K\x9bz\x97\xb0\xf0\xc2\xd9\x92\x80=\x0f\xe2$\xcd+t\xc4$\x94\xfa@[\xc9C*\xa4\xde\xe5\xa7\xde\xda\x85\xb8@\x9b\xc7\xe9\x82\xc4\x84\x1ep=X\xc7\xe4*\x88\xb2dy\x033\xe2/\xbd\x98\xcc \xc9\xe6\xf3\xe0\x1a\xa9\xa2\xf5\x18\xda\x10C\x1b\x1e[R7\x1e;.\\\xb0.\x07\xe6.\xafcB\xab\xb1\x13\xe2G\xe1l\x83>\x8b\xce2\xbf\x87r\xe0\xfc\x92\x96Q\xa5=\xaf\xc4\x92\xe2@U)\xa4\xc8\xdf\xaa\xaa\xe9\x08<\xd1\xa3\x02\xbac\xb0\xd8;\x94\xd8\xf2+\x1e\x888\xb4\x19\xa5<\x08V\x120sz$E\xf5f\xf9\x08\"\xfa\xa7=\x82\xbe\xc3e\x06t\x0e\xf0\xaa\xb6\x15&\xfb=\x19AF\xd7,C\xb9\xa7\xdf\xdf\xeb\xf7\xfb\xc5d\x93\xeb5\xbb\x83\xcf\xa2\x1c\xfc\xe4\xd9\xebW@\xab\xf1\xfc\x94(\xb90A\xdc4\xbca\xab\xe6I4\x84.E\x92\xc6\xc4[\xa1\xc3\x81\x17\x84 \x84Q\xd8Y\xc7A\xc8\xb6z^m\xa2\xab7\xed\xc6$\xc9\x96\x98/\xd53\xad\x99f\xc9>)\x96Lqo\xb9\xe2 \x04\xd0-\xac\xe2,\x833\x1cw\x83\x84\xa7\xdb\x0f%\x0c\xe4\x1a\x9a\x15\x89/ \xac\xbc\xf5:\x08/\x93\x13\xc4\xb6u\x1c]\x053\x8a\xddQ\x16\xfb\x84\xe7o\xa6\x9b@&k\x96\x93\x87\xd8\xa4\x87E[\xf2*xKn\x12;t\x9c|A=x\x02>\xfd\xc3\x164\xc3\x80\x8f\xde\xd4\x95\xe2\x9ce\xd87\x9b\xb0\x90\x94!\xfa\xdb\x04\xecG\xabW\xcfM?\x920Z\xce?\xac\x9b*\xdf\x85\xb9\x8a\xd7Aa\x08\x0cd.\xc3S\xf2\x08#\x91\x95z\x97\xc3\x1bo\xb5\xecF\xf1\xa5;\xe8\xf5\x06C\x9c?\xe6q\xabAsZ7\xbb\xeb\x18$L(2E>\xc0\xa5\xe2\xae0\xf4\xa0\x1d\xe5s\xe7\xc3\x13\x98\xd3?l\xee\x04.Dc\x1fS\x90\x1b\xb07/\xa6\x96\xc1\xe7)\xea]\xe9\x94'y\x8cb\x9e\xde\xa9X\x13\x06\xb0\x99\\\x04t\x8f\xdd\xde\xeaD\xa7\x11x\xecI!`\x95\xe5\x022\x13(\x06o\xc9\x0d&\xe0#\xe3`\xcaB$\xe5\x97~\x83\xe6D>\xea\xe2\x7f\xb9\xd1Y\x8a\x1f2p)\x05\x8d\x92(I\xd1s\x87\xdd\xe8\x12?\xdbmz\xac\xd8\xe5\xc8p\n\xb6\xfc\xc8\xcd\x8f\x9a\xb552Y\xaex\x8d\xca\xe8lz<\xc0\x89\xbd\xa0,\x9en/A\xa8\x18\x85\xc7gmt3\x92$S\x1c\x80\xa8\xacvf>6\xf1\xee\\\x86\x97s\x0e\xd5\x0e\xe1\x84;\x10\x04\xda\xb8\xac\xdc+\xeb\xda\x0e\x1c\x1e}TS[\xbb-\xd7\xa7\xdd)\xb8\xdbv\xd9\xd1\xca\xe0!7\x8bj\x0c~\x9b\xb4\xac}\xf9=\xbc[\x04Td\xe8\xf7\nA\xae\xbf[|\xe7`C\xbf[\xef\x90\x15\xe12\xaa%pv\xbeD\x07\x83\xe6\x89v!\xa6x\xc5\xd6\xfbe8\xa3R*\x9e\x9f\xf8A\x96.\x80\xfc\x90\x16\xdez\xd8\xefu\xbb\x8c\x87\xb0\x0d\x8b\xe1\xc6\x0cq\xa5\x9e<a\x8f\x99\xb09#\xf3\xc0\x0f(8\xc0\xa7(\xfd[%\xffH\x1dV\xfe\xa0\xd6\xb5\xb5\xe8\xb2\x96\x14\xb4ltS0o\xe4\x90\x89\xfc{\x07\xdc\xdf\x05\xbd\x0fZ\xfa-\x1aB\x9b\x12\xd4\xa6\"\x03F\x041\x17\xd7\xae+<\x9b\xeb\xdbo\x9d\xd9\xc4i8C~O{\x06\xec\xe7\xa4F\x16\x16\x98\xee\x82\xc0S\xe6?b\xcb\xcf0s1\xf1R\xdb\x9a\x84\x96\x8b\xfa\x9e~C\xd3?\xabmZ\xb8\x10 \x8cJ\xbdK\xd5\x16\x1e\xe1#/\xf4\x17Q\xac>\xcd\x0c\x99\x06<M (\xdc\x17\xd2\xa1\x92\xd5\xc9\x87\xc7~P\x01W|\xc7\xd8N\x8e\xc8+\xb7 \xb1\xc2\xba\xf6\x189\xc1\xefgv\xed\x8b\x88\x0e\xce\x89\x9e\x8b{<\xb2P\x99\xfe#\x89m\xb1\x10\xad\xeanAw\x9a\x8c\xc7\xd7cN\x8e\x1b\xf4^i>\x8f{\xc16\x08\xe3\xbe?\xc5\x89\xfb\xd2\x85V\x1f\xbd\xe3\\\xd1\x94@\x0e\xa7\xdc\xbfM\x1aw\x0bf\x8f\xb4 g\xf7|HO\xb9\x83\x10\x9f`\x87\xf3\xb1\x0bo&\x13\x01zj\xf1 !?\x9b\x91\xd0'@\xc24\xbe1\x8a\xd9\xcc\xc7\xacDd\x88\x96\x96\n\x12\xd0\xf28\x8e\xd0\x83\x13Kd$p\x07\xc5\x89\xb4\xfb6\x08g0\x02K\xf4\xc0r\x8b\xcd\x841\xc6\x9a\x04\xca\x9f6\xd3\xa8\\\xc4D\x8c\xd6\xef\x80*\xa6\xd3!\xee\xee\x16\x11\xc2\x1b\x04\x90\xdc\x7fBW\x8f\xb4a\xe8\xf8M\x1a\x18\x8f\x1f+\x99i\x87R\xe5\x03.\x01m\xc2-0\x12m\xc41~\xb3\x17\x86\xb0\xcb\xa4\xa4@D\xb1\xc58\\t\x19Z-k\xf3Z\xd8\x1b\x16\x0b6 \x0b\x94\x91N\xf20\x8a\x03\x9b4\xa7\xbc\x98\x8b\x01\x92\x14p00\xb2~\x89r<\xc9\xb3\xf8\xd1\xd1\xc7\xba\x83pi\x97m\xd2\xbdBL\xcc\xc2\xfc\x04K\xc2\x99\xd0 \xf0\x83\xe8\xbb ]\x04!xpE\xe2\x0b/\x0dVt\xe5\xab\n\x1eS\xa8#.\xb9I\xe3m\x9d1)._M\x96D\xe0T\x9c\x80\xbdK\xa1\xf3\xe0\x07H~\x10\x06r\xed/\xbd\x15C\xc0\x95\x17\xbfM\xac<\x0eqe.X\x16\x85\n\xdd\xcd\x15;\xf2\x195\xf4*:\x9dJ\x9bI\xe6/JGn\xe6\xa5I1\xaf\x8c>\x8c\xb4o6\xef\xeaB7\xaf\xe7*WJ\x15\xba\x02\xe3L\xcd\x97\xd1;J.\xe9v\x8d\xe2R\xff\xcb\xab\xa6#\x7f\xc8\xc8Z\x17\xfa\xf60\x99u\xfd\x1c\x0d\xd1m#F]\xe6)\x08\"\x1a\xc3PU\x83\x85\x8eT\"W8\x85STs\x0d\xe9.\xe5\\\xa2(Ea\xe2\xa9\xee\xb1z~\x16\xe5\x99\xb6-\x0bs\xcd\x9a\xb4\xea\xa8Y\x0bQ\xb3\xf6\x18=\xc1k\x89\xf7\x0f\xcd\xc4[C\x96\x8f\x18Y\x0e\xefA\x96\xcd\x82\x8c\x9e4\x87\xc0K\xc8\xe4\xd9\xd0\x81\x12fV\xb1Zl\xdc\x90o\\v\xd4l\xbd\xb0C\x07\x93\xc76\xd7\xa8\xe5\xb0\xd2\xb6\xc9u \xc5~,\x0f!\x8cf\x04VYR\xe0\x9b\x97\xc2\x92xI\x8a\xaa{I\xcbVb\xd3\xf5\xbb\xa9a\x81\x7fJ\xd2\x86i\xf8\xc2U~I\xf2\xc6\x85K\x17V.\x9c\xbbp\xe1\xc2kf\x8c\xd20\xed7\x06f\xfe}\x033\x97\x16{\x19$) I~Vb\xbfl+Zc\xd4\xd9T\xe8j\xa1\x88\x1e\x9d\xcf\x82\x00pyE\xfc\xcc%\x15\x06@\xb5'\x8c\xd0\x19b]\xc8eLA\x85A\xeb\x1f=R\x04Q\xfbM.\xaf\x96\xc578e\x93\x00\xc3\xca!\x93\x9f:\xd0\\W}\xf8\x84+\xc2>E\x97x\x07\x0d\x1e\xf4\x85O\x0d\xde\x9a'L\x82\xba\xbd\xc5\xcdx\xe2\x94\xbbwZ\xf4\xee\x86\xc9c\xdfJ'a\x88\xd5\xeb\xd6\x8f\x07j\x80\x11\xbc\xa1\x9d\x8cr\x0b\xce\xa7\xf4\xc1\x9ao*z\xea\xbb\x80\x11\xf8\xc5\xa4\xcfs\x92F\xf0<\xd6\xa6\x9c\xecu\x99\xd5\x94\xec\x88\xf9L\xc1)\xbf:\x8eg\xaf\xd789\xdb\xd8X\xdcB\xc9\x9b\x98Og\xc0=w\xcc'4\xe0^;_\xd5\x8475=\xcb\x91T\xfb\xf4\xaa\xf6\xe9M\xed\xd3K\xc3\x06\x04\xeeG\xa3\x0b\"|\x87\xf3\xe3\x92\xab\xac7;?z\xc6$D\x18\x84\xa8\xa9\x1e.\xd6D\xd2\xa1-\xab\xc8\xb4\x07\xecP\x80\x07\x9a\xfd#\xfe\xfd\xf6\x96\xd2\xf2\xb8\xf9\n%\xd2\xc1\xd0\xc5[\xaf\xec\x08h\xd4A\xc9\xefI\x07<\xadL-\x7fX\xaa\xdf\xa6\x91:'pm{t\x9f\x1b\x8a6\xc8W\xf2\x87\xf6p\x9f\xf9[x\x0e\x9c\x99\x1a\xafH\xca\xb9\xc4\xe8Q\x11\xfe\xffc\xee[\xbb\xdb\xb6\x95E\xbf\xf7W\x8cx{\x1c2\x92\x15I~$Qlk\xa5i\xd2z7ur\x9a\xa4\xfbt\xcbj\x16-A6\x1b\x89T\xf9\x88\xed\xbd\xdd\xf3\xed\xfe\xb1\xfb\xcb\xee\xc2\x0c\x00\x82$@\xd2N\xd2\xd6k\xb5\xa1@\x10\xcf\xc1`\xde\x93\xb2d\xe3\xcf\xb5\xdbG\x97\xad\x82\xbf\xe4%\x9c\x82\xfe\xc0\xae\xb7\xd1w\x02\x12\xb6\xf1c\xa4\xc6\x149}\xb6\x8a\xe6\x1f\xa4\xd4\x9a__\xc8l\xb9\xa8kX\xf5\xf2\xa88Z\xc4\x9b\x8f\x02K\x8b\xa2\xb5@r\x02\xb8\x91\xf8\xe4\xff.\xd4\xf9\xc5/$\xc2\xaf_\x97\x86\x9c\xcc\xf2\x0f\x01c\xad\xb9g\xd1\xd5\x93\x14\xee\x9d9\x07\x96\xfa\xee\xf8\x9f\xd2\x13aD\xd8\x98\xf9\x0b~\xf1\x07kN\xcd\x04\xa9\x12\xe8o\xfc ~\x02>\xcc\xa3U\x14\xf2\x95^\x07IR \x9bW\xfe3\xbbKC\x1d\xb3\xa2\xff}\xaey\x9a\xe6X\xdcz\x12_\xf0 \xae\xb3U\x1a\xe0\xd9\xf9\xc0\xaea\xed_\x830q\xd6W\x05\xd5\x1b\xf6\xb9\x19\xdf\x88\x19\xef\x13\xcb\xe5\xf3\x0b\xf2\xd3\x80Mp\xed\xe42yN\xedi08\xc8Y\xcb \x9cG\xeb\x0d\xea_\xd8\x95ec\xf9l\x91\xceS{\xfb\x04\xa2\x18\x96\xd1j\x15]\xb2\x05\x9c]\x83\x8fj\xd0\xd4?\xcbV\xa8\xeca\xebMz\x8d\xca\x0d\"\xfcr\x9c\xa8\xbc\xa6c\xf3\xc6P(\x11\x0dEYeP\xae\xa4\x037DZ\x04T\xca\xa7\xab\x1f+A\x06hB\xb1s\xbc\xd9+k{-b\xd9\x1b\x97\xb7(Hk\xc6\x88\x9e\x81\xa8Qr3\xbfVnV\x80;\x9b\x17c\x93\xe8\xac\xf2Q\x15\xf2\xc4\xd1AH\xb3\x01\xda\xba j\xab\x9c\xae\\\xd4&\xf1d\x81~\xc5\x16\n\xfd\xfe\x81\xc4O\x0f\xce\xbc*\x01d\xa3~\xcaZ]\xccY\xb3\xd4\x93\x88u,\xf9\xc6\x17\xf5\x84\xd2\xc7FB\xe9\xda\xe0\xad\x04\x02H\x859\xa8\xbbi\x86\x05\xd2\x89=\xde\xe9 98IbM\xe9\xc9k0\x1f\xefs8\"\x82ac\xe5EUmN>\x8f\xf6D\x8f\x03\xea\xf1?M\xfeip7\xb2*\xf6(\xc3T\xd3=- \xabM-a\xa5\x8e\x1a\xf3z\xad\x96W\xe8\x0b\xab\xec+i\xd2\x08v\x17\x05\xd8\xfd\xa8\xc1.\xc7\xb7\n~al\x13\x1b\xc7\xf6\xcb\xe4\"\xa7?\x08?\xc2<Z\xaf}8c\xe9%cB\xe03\x8fV+\x91\xbb\x81\x9f\xec\x80\xa1\xb8j\xc9\x8f\x95\xc80D\xec^\x84zv\x02\x13q#l\xa0\xad\xf2\x02\xb7I\xb5`WW0O\x89\x1c\x8a\xea\x84\xb9\xa6NX\xe6tJ\xa2a\xd0B3\xd6\x8d/2\xf4\x19(\xe5H\xce\\ \x8aw\x83\xe8XJ\x9b\xdb\xc0Qi\x04\xa6\xb1\xaf\x8a(\x9f\xef1\xe2\xb8\x18\xf1\xfc\x12q\xc8\x8a<\x8c'\x10\x93\xde\x04+\xd0&hux%Q!)\xf7,\xcc\xc3[\x01\xe9\x84B$\xb6\x9d#\xe6bB0hqfo#&.\x01cY\xe6\xc8[:\xe3\xa3}M\xd1\xf4\xc6\x9c\xfe\xdf\xdaj\x8d\xaa\xcb\x8c\xea\x85\x9dI\xb51|\xcb\x9aw+\xf4\xcd6\xbe\xda\x98##\x81\xc0\xe3\xb6<4\xc3\x91\xd8\xc4\xacy\x13=A\xc3\xdf\x1aq\x0b-B\xd6\now\x9a\xc2\xc6\x80D\xd3\x9a\xaak\xee\xaf0,\xab\x86\xb1\x1cG\"\xdc\xcc\xa0\xd4\x041\xb4\xdd\x9d\xda\xe9W\x19-\xa1Q\xcd<\x0e\x9f\x87\x1c}Mp\xa7EC\x19\xd2_cX(\x1a\x93\xd4\xd3D\xdc\xcc/\xa25R7\x94]\x86S-\xc120[\xe1A3\xdb\x83l\x80\x8b\xc8\x83\xdc$\x90_\xcc\x10\x0f\xfa\xcaY\xc2\x97\xce\x12\xdbC\x0f\x8e\x0e\xa1\x05\xa3<\x10\xc4\xe7D\xa3\xd4\x14\x81\xac\x93l\x97\xc1\"\xbd\xa0\xb9\x11\xdb@;\xf1\x04\x02=\x9a\xf8\x8a% \xa4\x17~\x08\x11'\x89a\x0cK\xd5\xb4\xb6<\xa1\xa1i}\x8d\xf8i\xc4\x13\x00]\x88H\x8d\xb2\x84\xa2}\x9c\xfeW\x85\x1a\xbe^W\x98w\xc9\xbc\xa6\xb5\xe65m \xc4<\x0e\xa9W\xc3\xae\xedt\xff\x8e\x84,\xeb\x10j\xc7\x07\x9f2F\xd0\xc7\xd9\xb9t3M\xcfm\x18\x90\xe5@j\x07\xce2P\xcd\x1a\xa8l\xe4\xd3\xb3\x8d\xbe\x9d\xf0\xc4\xed,+\xbc\xd2\x01\xbf\xe4\xb6\xb6\xa4\xf5Pf\xb0\x1ej\xb3b\xf6-\xeb,\xa1l\xf6p\x04+$CV\x8a\xbc\xa0\x17^\x0f.\x11\xf46\xdd\xee\x9d\x0f{uv\xf5\xf0\x90\xe0\xbc?\x96\xcciJ&3s\xf4A\xe9\xc2\x06\xc6\x9c\xb4\x1e\x8b\xaf\xd0n}\x0ee{\x1b\xfeM\x83\x10\xcb\xcc\x82\xc9?\xbb\xe8CXDO\x80\x1f\x14N1\\+2\xae\xe5\xe0I\xea-\xbf\x1c\xd6~\xb9\x114\xe3X`\xbb\x0dLL\xd3\x05\xc4;u\xed4\xbc/\x8e\xb0\xa7\x92t-5rhP1\xff\x82\xf2!|\xe2}\x02\xac\xf2\xbf\x13!/\xd5%\xb0\x1dC\x02E0\xee\x91\x95\x81.\xa7\x02\x11\x14\xd4-\xd9[3q\xb2\xf3\xf8\xd3\xd5\x93\xd0\x96Z(s\x0b\x9cQ\nJ\x9b2h=\x9e\x1a\x92c\x87\x0c\xfa\x8d\xfa\x0e\xbd\xde\x89\xa0\xd8\x0b\x1b\xc6\xa9\xfb\x86e)\xd2,\xf9\xc2\xd4\xc8\x02\xe3\xc2<\xcb+Q\\\x05\xcb\x1d\x87\xd8\xeb\xd2E\xad\xb9\x1az F\x8c\xc6~\xc4;\x0c\x05\xfbU]^:G\x8a\xa3;<<,\x18\xfenm\x91\xf1\xe4\xa4\x96\xde\x97>>9\xc5\x9f\x04\xe1\xf9\x8a\xc1\xefY\xc4\xab\x8a\xbdGZ\xa2n\x96\x86\x83t\x1b6\xc3\xdc\xe9\xe78):\x83a95\xbb\x04\x1e-\xc4t\x9f\xff\xd4`\xe2m\xf3\xa9i1\x9eZ\xc9\x88\xf0]\xf5\xd5\xa0\x8d\x18m\xe0\x95\x87d\x03|\x14c\x8dd\x9b-\xce\xa2\xa9\xab\xcbv*\x1aO\x87~\xfb9TrM\x9f\xfcE9\xd0\x7f\x98\xfa3\xafp\xc1\x1c\xa3\xef\x88>\xc9\x16-Rp\xd1\x910\x83\xe3\x1c\x8b\xcf\xcf\xd2\x08]\x89\x1f*Vf\x17\xc6\xf0hO\xfd\xe4l\xc3\xc0\x83#\xfe\xbf\x16\xba\xb2\x80\x14\xda\x11\x19m\x07\xfc\xbb'\x10lo{\xd8\xfb\xd3\xb6k\xc5\x99\x14\x0c\x1b\x87~5\x07\x07\xb0\xebA\x172\xc5R\xa9\x13x\xc1\xae\xfc\x05\x9b\x07k\x7fU\xef\xd2\xa4\xff\xe9K\xf9\x9b\x1b\x95\xe0\xc5N\xb7\xd0ZJ,\xf0!\x8c.C\x10\x11\xd3\x94\xcc\xac\xa6\xeb\xea\xc9\xa8\xc7\xa4~\x8eI\xe9\xe8\xdb0i\xb5\xe1/\x84I\x17Qv\xd6\x06\x93\x96\x06\xd3\x82\x96\xb8\x0dj5\x8f\xc2\x88Z51NGC\xb26\x0c+\x0c\\\xcdXu\x97d\x18\xcd\x8a\xef6X\xd5\xd2H+s'2\x81{#\xac\xdf:\xcf\xdd\x98\xa3\xcd6-V\x07s+\x93\xa7U\xe0'\xb7\xb2x2\x18?\xf6\x8a\xa6N\x9aH\xbd\x14\x8eE7\x84\xbc\x97\x85J\x0c\xb0\x10\xe3(\x19\xc5iw\x92.\xa6\x0fge\xddU\x95\\\xe5`rWS\x14\x94\xba.\xa5\xbc\x95\xdf\x94v\xe1\x9c]\xd1\xcd\xc1\xeb\x8d\xbbl\x06,\xbe\"\xcf\xdd%\xb9}\x12\x92F\xa6w\xe7Q\xfe\xbc;\xd2\xcaw\xf2g)\xe8\xc3\x1f\xfbz\xa5\xc7\xda\xb3Vg\xe7\xa1V_+\x7fL\xa1\x1e\x96\xb5P\x8e7\xce\xbe\xd6\xbd\x10\x9b-IF\xff\xa6\xf9\x18 \xee\xec\xe6\x86\xec\xfb8\x98\xb78X\xcd\xe4J\x80\xbe\xe4ErWX\xad\x8b\x03\xb6\xac\xa5B\x84u\xc6\xb2\x89b\xb8\xe3\x14k\x98g-\x8f\xef\xce^\xdbA\xd4\x0f\x00}eZ\xf4\xd9$\x95h\xbcj\xf29.\x9b\xa5\x8f\xbc\xcdK\xac\xd8l\x05\xe1+1\x8bT\xd3h\xc6gsU@\"\x13\xed\xe6DdP\x14\xdc\x1c\xda\xb3t\xe9\x7f\x99\xc6\xbf\xdfYZ%\xfej\xe3\xb6\xcb?\xbb\xc0\x04\x8af\xf8\xc2\xff\x83\x8c\x078~\xd2wB\xe8\xaf\x0b27Kr\x01\xf9w\x179\x8e\xb9\x14\x15`D\xcb\x10\xfe\xec\x0c%-#\xc6\xbb\x0d\xbeWw8\xbd\x1e\\ \xcc\xe7\x16k\x08C3\xcbv4\xb8<\xd8n\xc4\xf2P;\x1d\x85F\xc8%X\xa0\x99\xa2\xc5\xea\xa6*Q!R\xa4'\xad( \xfd\xbd\x16 \x94\x07\xd0\x96\xde,\xca\xd8\xc0\x998(\x9b\xaa\xa9\xab\x95\x08\xcdnn\x07\x96\xdf\xd5\xc9E\x94\xad\x16h\xabs\xe1\x7fd\xe0\x87\xd7\xd2\xf2\x1a\x95\xb0\xd2\xdf\xbb\xb5\xba[\xe9\x15s\xd1\xd9\x8fjVh\xe4)l<KM\x8bQ;\x1d'/0;\x9b9\x13'\x9fi\xad$\xf9\x9cdgk\xda{a\x84\xf4\xf6z\xc3\x12\xe5?~\x0e\x07\xb0\xe6\xff\xa0\xffx-\xceq\xdfW\xdb\x99\x9e\xcf<>\xe1h\xf5\x91\xb9\xda\xd4\xeb\xf1\x84\x06\x13\xef\xfbs\x19;OwM\x93\xfb\xfc\x9e4\xccw\xdc\x82\xcf{~\x05\xb2\xcf=!\xae7\x8c\xbaFh\xbf\xb9\x01g\xe9\xafVg\xfe\xfc\x833\xeb\xc9\xed\x99\x80X\xb7\xda\xeaS\xac=+\xccT\xac\xd1\xd6\x16\xbc\xa7O\xa8\x18\x1f\xcd\xa1d\x10\xa2\xf1=\xdf\xfe\xce\x01\xc6\xe0\xc4\x95\xec\xc2\xbd#H\xfds\xd4< \x98?\x13\xbe\x13\xa2uN+\xf6\xf0 `i\x9a\x97\xdeC\xff\x9b\xca.\x93\xc3{\xd3N\xdeq\xebr#4\xa1'\x13\xdd\xa31\xd9\x82!\xbfS\x9a\xa1s\x94+\xe1\xd0\xcbI\xf7\x91\"~\x94W,\x7fdI(\xd5\xc2\x8a\x7f\xbe\x8a\x12&\xcc\xf8K'\x99_\xe8\x95\x89\xdf\xdc\xc0\xeb\xafr\xf8R\x8f\xcaw\xe1\x87v\x9e\x85\x1a\xfa\xaf\x00\xa9\xc9\xc3P\x90~Z\x18!\xe1KP\x0d#\x94\xf6W\xec\xdc\x9f_\xf7\x94K\x8f\xc8l\xa6m\x18\x99=I\xb1U\x0b\x97E\xdc\xf1\"\x9f\xd1\xfcU\x0f:nIs4\x10tw\x07-z\xcc\xd20\x9ck\x06\xed\x9d\x13m|d\xc1\xdf\xadMC5\xbc\xect\xd63\xfa\xba\x15\xd8=\x19\x0f\x05\x0e\xc8\x8d[\xb8\x07\xa9xH\xc8k\"kiR\x1b\xeb\xe6\xcc!PKNCd\x06\xf8L\xd1\x19\xa0\xa8\xa1\xad\xcd\xb1\xd4\xa8\xa3m3\x04;\xd26\xf8hR\xfc\x05\xfbUPC\xdd[gZ\x1b\xd2\x01\xe4\xb2~1\xc0\xe2\x7f\xb1t\xe7\xae\x81\xa8\x16\x04\x9d6&\xd2;\x8b\xeb\xed'\xe1\xe1\xf7\xd34\x9cI\x19\x1b\xc7\xa7\xaf\x85\xc4\x81\xf0\xa9\x12\x82\xe5`Z\x90<|e\xef\xbc\x88\x0f\x06\x1ak$\xce{\xee\x9e_\x8f(\xdaV\xa4x\x0e\xed+\x8f\xbcbD\x17\x11\xe1A\x1f7_\x90\xccpV\x13\x14\xd0\xad\xfd\xb8\x12\xb7\xe5\xe7\x9c\xa6\x17\xd3D;\x8d\x8df\x9cV\\\x98*\x92\xde\xda\x82sr\xf0,\xee}T\xdc{P\xa18\xc2(\xdc~\xfa\xe6\xd9\xf1\xb1\x16O&\x01?f\x10\x84)\x8b71C\xc7\x87\x04\xd9-\x15tNnmR \x1b\xd0\x82\x9f\x9d\xc0\xee~\xf3\"{\x82\x14hXa\xad\x82\xe6I\xbd\xadc\xc9\xaa<4\x8aQ\x16*\xc03\xf7\xe0(\xecG\xede\xfc\x9dk\x8c\xc2XL\n\xc3d\x86(~G\x0e$\xbd\xa0\xe2\xda\xc9\x901\xa5\x05\xc8\xa7\x80K b\xc9\xd4Wrs\xf3\x82\x1e\xec\xef\x8d\x1e\x8aX\xa9\xfaG\x03Y\x93\x97\x8b<\xfa^\x19\xf7Q\xb2\x04\n\xc5\xd9\xa8YK/\x82\x84\xb6\x100\xfd\x01\xfe\x96\xd131!\x92\xfa!H\x1eQ'\x91\xf1\xd8\x99|\xbc\xb9A\x9e\x9b\xbf\xcc\x03Y\x1eb\xda*\xf9\xab\xd8\x04Q\"XE<\xde\xdc\x90\xd5\x02\x7f\x8b\x01\xaa\xf8;\x19\xa9J\xbdQ\xe4\x1a~)\x7f\x14\xdb.01|j\xf9\x981\nx\xb0b\x8bcQG|\"\xe8wK\xe5\xb7\xf4V\x0d\x1d\xf7.\x07\x06Q\xae\xc9\"\x06j\xb4(\x8e\xd0\x7fJ\x89\x84^\xa6\x1b\x02a\xa1:\x9fH_\x14\x11-m\xa7\x81\x08\x0c\xc5^\"$\x0d\x1c\x158(\xac\x1e\xd3P\xbb\x80<\x08\xf5A\x90\x9bFX8\xb7&\x92\xf3\x89^\xe7 \x0f\xf8\xb8\x0d\xc3'\x1e\xfc\xe0Z<\x8c\xc3|n\xb5\x07\xf4k\x9b8Z\x13E\xc3!\x9d\xe3rW\xc8G\xcb\x96\x1c\xcc-B\xf9\x88\xf3\xfc$\x91aFZH\xac<\x04[\x0c\x07\x10\xf0\x7f(\x04\x1bs\xa3i<\xab\xc7-\xdf\x1b\x0f\x9c<\x99\xdf\x99\xf6/XJ\xaa&T\xc9\xaf\xaa\xe7\x95\xd7\x1a\x8a-\x95\xb5\xe4\xb2N\x07\x06\x9f\x82<\x81C\xe0\xe6\x8aC\xa5\xa1W\x184\x085\xec\xda\x83\xb3,\x85e\x94\xf1[.\x8a\xd9\xad\x128\xe4I\x0c\xbe\xeeU\x93\x1e|\xdf\xb3\xe6+h\xd2B\xb4\xd8S\x04\x99\xb8\xcf\xaeR\x16.\xdc\xea\xf2\xd1\xa1\x1eCV\x9c\x0f\xef\xac\xb4\x1d\x12\xf8\xee\xd8\xd8W\xdaOc\x02\x87Z\xcc,f\xf3\xfd]gS\x8d\x0f\xfc\xe9\xe9\nL\xc1D\x03\xb7\x10z\xb1r\x97r<&.\x12\x89e\xcf\xb2\xe5\x92Pw\x15e\x86E\x94\x19\x8b\x9f\xf3h\x95\xad\xc3B\xa0\xd3\x1c\xee\x02-\xa3\xc19K\xdf\x84\xc1f\xc3\xd2\xa6\x05\xae\x98\xabW\xcfbG\x1b\xae\xa7\x0b\x0dL\xbc7\x88\x00\xf0\xbb\x1a\xc5\xf0pOD\xc0\x91\xf1o\xf4\xd9\n\xeb\x00~\x9do\xd3yvN\x07\xa7\xf1i\xf8\xff\xfe\xaf\x9eU\xc0\xe9\x07\xe1\x82]\xbdZ\xba\xdah\x10\x8b?M\xdd\x80\xf4\x17\x96\x90U\x01lS\xf0\xc0\xc2\"oc\xbf\x0c\x1e\xc0\x88(\x0f3\xb3\x86\xe3\x86~\xbf\x0f8\xf8\xee!\xec\x99\xb9\x946\xeef\xb8Dz\x1e\xbd\xd2Jd\x9c\xec\xd3\xa6\x97\x93Ww^\x9a\xcc\xba,n&\xd0\xf8vieZ\xacJ\xa4\xafJ\xc6\xd7\xf7\x13VE@\x94/\xd7CL\x80\xa8\xba\x80\\\x11sSJ@1\x94\xe0\xbc|4\x00\xefR\xc0\xfcn\xb9\x16t\x0d{\xde\xd5\xee\x8b.8\xbf::\x82\xd2\xcf\x90L\x19\xd86\x1b\xb5\xe3\x18\xef\xf8\xfc\xe8s\x82\x15)\x88{A($\x8f\xea\x1dFK\xbe\x87\xaarN\xb1\xf8)q0\x0e\xc6\xa3W\x98\x00\xf9\xba.\x9f\x9b\xc0\x04\xf9{Q@*\x10\xd2M0\xb9\xa096p\x85\x88\x8az\x19\xd3\xaa1\xde\xad\x11M+L\xf3\x89Hs\xa0])z\xe3\xfc2\x8e]C4\x9c$\x8d+\xd9\xfd>\x04\xe1b\x9c\xabs\x0b\xef\x94<v\xdc`\xddQ\x11y\x8a\xe4dZ*\x02(\xde\xeb\xde_\xb3\x00\xecw\xeb\x02(\xb7\xbc\xcf\xbb\x04e\xd2\xfa\xaf^\x82\xb5\xbf\xb1-\x81\xf2\xb2\xfd\xbc+PN\x12\xfcW\xaf\x00\x1f\xe0\xad\x8e\x81\xd0\x1c4\xcd?\x90\xa1{\x90\xad\xae\xb5\x0b\xfe(r\x15J\xee\xaeZC|,\xe3unm\x81\xf3\xbfBk\x87t@^\xee:8\xa1\xfc\x9dsR\xfe\xfd\xee\xe5K\xf1\xbbDg7\xeft\xc3F\xd75\xb7\x89\x19\x06!k\\8\x1dpp\x94u\xad\xc6l\x13\xb3\x84\x85\xa9)\xf5\xe1\xdc\x0f\xa30\x98\xfb\xab\x16\x99\xd6E\xaf\xce\xff:\x95\xd7\x86\x005\xab\xe8\x92\xc5s?a\xb7h\x19\xf7\xa5M\xe3\xd9fs\xeb\xc6qS\xdb4>\xf7\xd7lu\xdb\xc6\xcd#\xaf\xdb\x17\x91\xe7\xf1Mz\xbdbcp\xd4z9\x7f\xf5q?\x8b\xa2?\xf5\xb8\x1bL\xa7Z\x1f\xf7\xc2\xb1N\xe3\x8c\xe9\xc7\xf8m\xf9\xf7O\xef\x9e\xcbc\xcd\x0b\xf6\xf4\x8f\x97\xfe*)\xd4~Q)x\xfa\xf2\xcd\xf3\xbb\xa2\x85\xbas|\x9b\x81\x7fN\xfc\xe1LE&\x81o\xa2h\xc5\xfcpF}T\xf2\xd2I\nT\xa8\xe1k\xe7^\x8bmL8\xc1\x9a\x82\\\xd2\xad0\x91\x0b4\x06\xb1KmN\xb1 E\xb4\xea\x8b\x16{,\xf7\xbbM_&\x8c\xd1\xae/9\xaf\x17\x96y\xfd\x1d\x10\x88%3\xe2m\xb3\x9aV\xf2\xa6\xed\xe5\xe344\x94\xb5o\xe8\xa1\xd6\x90|*c\xba\xc0\x84\xe9\x820\xfd; :\x12\xd7\xe8\xb2k#\xe0\x04v\x87zS<o\x90b\x93\xb8\xd10\xd6\xd9&\x13(b\xd5\xa6\xc1\x0c\xb93\xa7K\xa5,\xe7\xe2\xa6\xddn0\xf3z\xe0\x0c\x08UX\xed\x13I\xde\xd1\x15\xe4X\xdc\xe8\xf3\x85\xa38\xa3F\xf5\xael\xed\x83r\xf0\xe8v)?M\xfc\x04\x82n\xd7\xae\xa8\x06\xd9\xcb\xfb\xf2\\\xeb\xfa(|9\x90\xeb\xc1\x17g(~4\x86\x10\xd0\xff|s8\x01\xfd\xcfn\\\xa9\xe4\x13\xbc{1\x0b\xb3\xa1\xa6]\x8d\xee\\5l\x1c\xfc\x05\x0b\xdbqE\xb0\x002\xd8\xd0T\"\x01\xc9 B\x11:\xe0\xe6\x06\xf6\xf7\xf8s\xa8J\x1f\xa2\x89\ne]\xccK\x87\x83Q\xbdmv\xf9\xef/\xdd\x18\xa1\xbai\xb3\xd8w[h\\\xe4\xc8-/m\xeb\x15jX\x1d\xf3\xac\xda\xad\x8a9&\x02\xaf\x7f\xd8x\xbaZ\xae\xdb\xed\xd7\x0c\xbf\x18\xab!\xb4\xb0\x0e\xefdw[\xdd\x9a\x95\xb5;8\xbb\x1d\xd4\xedj\x8b\x84\x14\xecXC\xd7\x0f~u\xc7\xd3\xc1\xf6\xdel\x82i\xf8\xbc\xee\xd7\x0f\xa4\x05\x83\x90gz\xde\xe7\xa1aK7\x98\xfd\xea\xb2D\x90\x89,\xa1\xb7\xc4dE\x1a\x94X\xc9\x96\x9d\xf7\x0e\xcd7\x06\xe1\xd9\xbe\xf2\xe7\xcc}\xf0\xfe\xc1y\x0f\x1c4\x1f.\\g\xf1t`\xba\xcex\x9d\x9c\xfa\x0f(F-\xe9\nD\xcbJ\x9b\xcf\x1b\xc8\xaf\xbc\x18&\x18\xebV]\x81\x9c\x8e\x137W<\x1d\xce`\x02\x01\xdc\xd7\xb2\x12\x8a\x86F^\x0fF\x1e\xff\xf0\xaa\xa6r\x0f\x86\xfb\xbcR\xb9\xf4\x91\x87\xe1R\xcak1v\xd0d&\xee'\x9bU\x90\xe2\xef\xfe2\x8a\x9f\xfb\xf3\x0b\xb7\x99\x12\x8d\xfaY\x98\\\x04\xcb\xd4U]\xa5\x98@\xd1`\xc6$\x1c\xa4E\\\x80a\x0f\xa2[t\x84\x8a\xda\x14\xees( \xe1\xfe!\xec\x1bB\xea\xa0\x8d\xe2}\xb2y\xaa,\xca\xa0\x16X\xef\xcc\xf8\x9cd\xeb3\x16\xb7\xe5{\x88\xe2\xfc/$jHS\xd4\x89\xfbAr\xc2\xce\xfd4\xf8\xc8\xfe\xc5\xe2\xe8S\xb8\xa3\xb3 \xf4\xe3\xeb\xa6)\x80\xceB\x08\xbfTgp&,l\xc5\x88]\x82\xb4mC\xb9\x82\xeb\xea\x0eT\x0fh4O\x0b\xa2\xa1[\x8c\xa8\xd4\xf1#1\xa0J\xf1\xad\xc6#\\ko3\xa2\xbc\xaf2\x10\x81\xb9\x0f\xcd\x85\xf76\xfd\xe43\xbf*\xcdq\xb8\xef\xf5\xd3\xe8\x1d\xe7G\x9f\xf9 s\xc5J4V\xabY\x99:\x18+\xb1\x85b*%N&\xe1o\x9f\xae\x02?aI\x1d,NG=p\xce\x82\xd01$\x11\x12\xc01}\xd4\x03'\x9a\xa7\xa6*j\x1d\xa7\xc3\x01\xa6\xa8\x9a\x9bj\x15V|:\xdc\xef\x81s\xc1\xae\x9c/\xab\x07\xb0r\xb5\xc5\xd2H\xf0\x8f?\xb1\xf3\xe7W\x1b\xd7\xf9\xd5\x9d\x8c\xa7\xdb\xdd\xd9\xc4\x9d\x8c\x077\xd3\xe1\xf6\xe3\x19\xbfa\xdf\xcf\xee{\xeed|z\xda\x97\xbfx\x85){>\xc3\xca\"\x17\xee\xe4FU\xe8\x1a_\xe7\xbfD3\xeed\\\xbc\xc7\xf3\x1e\xa8\xf2\xe9i\xdf\x9d\x8c\x83pys\xcc\xff;y\xe1\xddPQ\xe8\x877'\xfe\xc9\xcd\xc9\xd3\x13\xcf\xfbZ7\xb9\xc7\x80\xfc\x98\xadW\xeb\x9c=\xb0K \x8d\xbc\xf3r\x15\xf9_\x84{\xd6\x85\xdb\xa4\x15\xe1\x88\xd6\xedD\x82\x80\xf1t\xda'\x9d\xeaf{\xb3\xcfN\xd2\x18#\xc1\xc8\x11\xc2!H2BX\x1eW\xa8\x91~\x1a\xbd\x8c.\xe5\x89\xe6\xa4\x04L\xf8=>\x06\x11\xfcw:\xeb\x81\xd3\xdd\xceu\xe7\x0c\xe9\x95#q\xc1\xb8d\xf2\xa7h\x91\x1e\xf0\x9a\xcb\x9c\xf4\x10\xa6G0\x11wY\xff\xf5\xab7\xc7o\x8f\x7f~\xfe\xfe\xf8\xe4\xc5\xf1\xc9\xf1\xdb_`,_\x9d<\xff\xeei\xf9\x95\xd3\x0f\xfd0o\xee\xc4?\x811\xb0\"\x85!0\x9b\xcb\xeeFf\x04E2\xe3\x05\x07\x9cZBCX\xe7\xc5Dh\x04\xb7\xe8\x8aIB#\xe6\x9f\xdb \x8d\x10\xees\xb2y\x8c\x0f\xda\xa8\xd8\xdf\x89\xd4p\x89\xd6\xe8\x1c\x92\x1b\x86\x81\xd4hKk\x14\xf0\xa4\x0d\xe2C\xb3l(HN\xfc\x13\xde\x17$\x97A:\xbf\x00\xd7*;\x98\xfb \xd3\xe5\x90cc-\xd0\x16\x07\x81\xcf\xcc\x1dQcJ\x8a\xdb\xa6\xb1\x93\xa7'\xb5\x8d)1m\xab\xc6\xfc\x13\x83<6\xf7x\xb6\x1e7!\xf4\xfb\x12\xab\xc5O\xfeg[\xad\xe3\x93\x17\x9fo\xb5\x8e\xc3e\x9b\xd5\xaab\xa0/\xb7Z\xdb\x9fu\xb9\xb6?\xebzm7.\x98\xe9\xb4\xe7\x9f\x0f\xfa\x03\xc3X\xb4{\xa9H\xf6\xf6 S\xc9\xbc&\x10\xaak\xcaa\x0e\xbfP(\x02fX\x87L\xfe,]C\x99\xfc\n*\xe4\x97\xa2\x8e\xb4\xffy\xdb\xae\xed\xc7\xd7N#A\xd7\xd8\xe2\xa4\xf4\x8b\x93no\xd3\xd9\xcd\x14NO\xd3Y\xd7+\xbc\x1c\xeb\xbd\x17~\x10}H%\xf7=\"\x10\xb1\x85\xfb\xee\xbfn\\N\x8by\xe5n\n\xdf{\x13\xcf\x9b\x14(\xb9V\xea\xdc4X\xb3$\xf5\xd7V+\x96\xcfN\xac\xe5\xe1\xca\x83>\xbbbsA\xb3\xa9\xd2H\x96~\x01r\xcd\x10\x07\xc5\xa23\xd9\x08\xb7L\xf3\xb5\xa7\xf47H\x81\xa9yx\x8a(\xcb'\xa1\xe7'\xf74\xf3\xee\xe7q\x1c\xc5\xae\xf3\xad\x9f2\xe5K\xcbx\x99)(S \xf2\x89v\xd9t8#\xda\xa7\xcb\xa6\xa3\x19y+e\xf4sg\xd6\x83\x0e\x9b\xee\xcer\xf3Wv \xbc\x03\x97\xff\xaf\xff\xee\xed3W,\x83\xc9\xff.\x10\xe1)\xba\xbc \x8aN\xd1e\xd3\xbd\x19\xc5\xa5\xe8\xb2\xe9\xfe\xac\x07l\xfapfC\xc2(p\xc5\x80\xb7\xd3\x873A\x94\x0ez\xb0\xe3=\x81U\xeeK\xb9\xf3\xc4\x83\x15\x1a\xf6\x99\x90\x14\x88\xa8\xd1\xddU\x15\xfd\xd9\xc0\x8bM\x1f\xcfp\xe1\xf9\x9e\xed\xb3]\xb8\x0f\xee\xfe\x00\xee\xe3j\x0df\xd0\x85\xae\xcb\xa6\xc3\xe1\x8c\x83\xd9@\x8a\x00qC\xf4/\xb77\x9e\x88\xcb`]6\x0dzV\x1eFS\xdf\xda\x82e?a\xe9\xdb`\xcd\xdce\xff\\<y\xb0\x8d\xc13\x97u \x1c\x84I\xea\x87s\xf6j9\xc6\xeeZ\x10h5\x87\x8c\xe3\xf4\xe37\xaf\x04Z\xb7:\x00|&<|K,Cy\xf7\xbf\x1c\x86q\x0e\x0e4\x8b\x08\x9b\xe5\xd3\xe7[\x05m\xfa\xf1uiX\xb4D\xfb\x8f\xbc\xfe7h\"\x9c\xf7\ns\x1f\xc9\x18>\x93?\n\x0d\xda\xa5\x0b\xce\xd3o\x9e}\xfb\xfc\xc5w\xdf\x1f\xff\xe3\x87\x97?\x9e\xbcz\xfd\xdf?\xbdy\xfb\xee\xe7\x7f\xfe\xcf/\xff\xf2\xcf\xe6\x0b\xb6<\xbf\x08~\xfb\xb0Z\x87\xd1\xe6\xf78I\xb3\x8f\x97W\xd7\xff\x1e\x0cG;\xbb{\xfb\x0f\x1f=\xee>8<\x0dOc\xe7\x96\xec; x\xbe\xc4\x86\xddY\xfbm\xc1\xd3A\xa3b\x9cc\xc7\xc8\xa2\x1e\n)\xf2_H\x1eCa\x9d\x8e\xa8\xe3\"b\xcfr3vi\xbcN1\x00a\x7f\xb7Qk\xc4\xe0\x00\x06\xad4?(\x13\xdf7\xbe\xb6\xe2\xc1\x18\xfe\x0b\x1e\xa1\xf0\xb9\x08\xf6\x9f|q\x06E\xe9\xc5\xf44>\x0d\x0fgB\x86a_\xf4\xa0v[|\x8c\xffc|\x95\xd8\xb7{n\xd1\x07)\xff\xee\xc1\x13\xe0\xab\x9c=\x01\xd6\xedz\xc0\xe0\xbf\xd0\n\x8c\xe4%\xa4\xce\x99\x8b\xfc\x10pt\x04\xc3}\xd8\x82\xd1\xde\x9e\xd7\x03\xbd\xf8Q\xb9t\xb4\xb7\x07[\x90p\xa4\x9f`\x12\x90\x83\x03\xd8\x87\x1b\xf0\x158\x04\x12\x1c\x98\xe9r\x15[4\x00\x19\x087\xc3\x81\xdd\x87}T\xd1|\xd2\x90`\x0c\xc3GJ\xd0Slk`lk$J\xf1S\xe1q\xc8\x97F\xaf\xb3\xab\xbe\x8c1\xe9\xc62\x8e\xd6\xea\xc1\x9d#O\x80\xe8\x1e\x1f\xe7u w[\xa9\x08\x06\xf6\xe0,\x0e!\xd0\xf6Z\x93\xb6\x00\x1d\x93s\x8b\x15\xa1X\x80/k\xc45~\x0d\xae\xb1@\xe7N :\xf1\xe4\xfb\xd3\x00\xb7\x8fo\xfa\xfe\x0eR|Z\xe9\xc8T\xba_*\xdc\xdf\x81-@s\x1c>#7\xe0\x10\xfb\xc8\x83.\xa4SfW\xa8\x16\x01t\x87\xf4\x87\x9fyD0\x86Q\x0e\xae\x85v\x06\xa6vv+\x85\x07\x07P\xeeq\x7f\x17\x1b\x1e\xe6\xc0\\h\xb9:\xc0\x83\x83J\xc3\xfb\xbb\xc5\xf6z\x10\x17\x01O\xfd\xfad\x02\xc2\xca\xceVd\x7f\xc58\x93U\x02\xc1*,\xbc%\x89\x16\xd5x2X\x9c9>\xf1\xca\xb7\x19\xf2\x97\x985\x12\x83[o\x03C\x80\xca\xfc\xb8\x91>z\xae\\\x83\xf9\xe1\x0b\x9f\x90 \xd8\xea6\x16\x88|\xa1\xf3)\x9b\xe5I\xc0\x94\xa8\x96\x16|\xe6\x08f\x15E\xb2q\xb3=\x87\x08\x84\x13\x84\x10\xd7\x1b\xf0\x04\xa2Id\xd3j\x08\nY\xdfo\xecZ\xfe\xdd\xc9P\x07i\x9f\xe6>x5a\x81\x90\xa8;1k^\x16\x11\xce\xa2U\xd2\x0e\x058\xc5SyG\xfa\xa6*\x9c\xf8\x93<\x8cZ\x1c\xfa;\x9e\xe1\x8d\x1f\xc4\xc9\xdf\xeb\x10\x0b\x7f\xdd\x9a\x83\x9a\x89\x19=\x8dc\xff\xda\xf5\xa5\xdb\xa3R\xf4\xf0\x13\xec\xdf\xed\x04\xfbx\x82\xcd'7h}r\x03\xf4\xe1G\x93!\x0d\xe1~`\xd7 \xff\xba\xec\xd6ok%\x9b\xb2\x19Ge\xd1t\xc0o\x19\xfcw6\xfb\xd3\xa1\xde\xb2\x8f&\x9a\xfac9\xd4\x99\xf0\x06\xb6\xeccT\xd8\xc7\xcc\xb8\x8f\x99m\x1f\xf9ne\xb8[Ae\x89{\x10\x89\xb5\x0b\xc4\xda\x05\xb8vV\"&\xfa\xeb\x0fp\xf1\xd6\xbe\xe51N\x98Uun\xf6)\xfcrg\xb8\xf6\x82\x0dB\xb0\xc4\xfe\xd2\xee\xb1\xb0'L\x10\x15\xa2\x0d\xa7lV{\\>/\xc4\xdb\xf0\xfc\xdf\xcd\x8f\xf2\xb7\xe4A\x16.\xd82\x08\xd9\xe2\x13%/5\xcbp\xfbE\xf5*\x19\xe6o\xcb\xcf}\x8c\x82\x85\x8c(V\xd7\xbb\x89\x93\xab\x13\xfa\xfd\xcd\xbc\xa1\x7fK\x1e\xc4\xec\x9c]}\x11U\xca-\xe4f\x01F\xa6\xc1zm.'\xe5Mg\xa6\xb19\nxp\xfa\xc0\x9d\x9e\x07\xeb\xd9}\xef\xeb\x07R\xb3a\xae\x1e\x1bb\x0c\x80\x18\x94\xf3@\x8a\xdd\x07V%\x02i:\xa4\x05o8\x1d\"\x1b&\xd5\x07G\x9c%mq]\xf3\x9e\xd0\x9aw\xcar\x03\xa0\xb8`\x0b\x947Si\xe5K\xdf\xc1\x7f\xce\x8a\xcbS\xa2-:\xa9\xdf\xca\xab[0\"\xea\x81e\xc5P\x93\x95kFY\xaf\xcc\xc7|\"\x92PT\x1au\xd0\xd6\x14\xe6\xb6\xf8\xa4vC\xf8Zu!\xed'Q\x16\xcf\x19ty\x81ua\xd3\xfe\xf9*:\xf3WB\xe7\xd7=\x04\xe7\x9cB\xf5\xe5\xa9\xe7\xf3Wkz\x15\x9c\x87Q\xcc\x9e\xf9\x89\xfe.\xe0\xef\xd8\x97BfO\xb4J\xea~\xd1\xa21]\x06\xe1\"\xbaT@A?\xfb,\xd9\xc4\xc1\xda/\x19\x06\x06\x8d\x98\xd1\xa8N\xf8-y \x07\xff\x17\xe3\xc6\xaa\xbaF\xfe)\x18p\x11\x06\xf8\xe6{\x16\x11!\xc8\xf48}4\x0e\xe3g\xa1\x9eM\x8f\xfd\xf0\x9c\x8dkyo[TQq8^\xc7\xd1y\xec\xaf\xe9P\x84\x18\xfb\x8e\xef\x98\x0c-v\x16-\xae\xb58<\xce\xf3+\x0e\xf9I\x10\x85oR?ek\x16\xa6\x8eVu:\x98\xa9&\\\xe7i\x1cG\x97/\xc4\n\xe7_\x96?`\xea\x0d}\x8bN\xcf\xb7\xfd\xca\xc0\xe6\xebZ\xb1\xba5hD\xd4\x9f\x84\x8eEt\x9c\xe6\xcd\x0f\xb4\x8d\x0f\xeb6\xbe~\xd3\xff\xb0`s\x9b\xc3\x0b\xdej\n\n\x88\x81\x95\xdb0\x14\xbfu(\xe0\xbbc\x84\x82\xbc\xaa\x82\x02^\xd7\n\x04\xc5\xfae \xe0\xc0v\xeb\xaf\x0cf\x10/\xfc`\xc5\x16\x90F\xca\x16B!\x0c\xbb6\xc5\xd8\xc1\xc6\x8f\xfdur\x0b\xab\xd0H\x06T\x0d\xfd\xb5 >\xc5\x0di\xec\x0cW\x1c7\xba\x07\xce7\xabh\xfe\xa1t\xde\xec_\xe1\xf2Mp\x0d\xe4\x02\xbaQ\x0fB\x199x\x8a\x96\x0b\xfc>\x9e\x0egt\x01\x0b\x95\x8b^\xdd\x91\x08\x02#F\xe5\x9f\xd2g\xf5&4w\xbe\xa1\xe5\x00\xfe\xd4;Z\xdd\xba\xcat\xed\xcb\xda8X<\x00\xf6F&\x8b1\xf7\xd1N\xa98\xa3\xda\xe5b\xbfN\xdaW\xac\x9a4\xcb\x15J\x08\x0f\x0e\xe1q\xb1h \x870,i\xb3Vp\x08;\xa3\x12(\xf0\xb2\x9db\xd9\x05/\xdb-\x96-x\xd9^\xb1\xec#/{X,\xbb\xe6e\x8f\x8ae\xe7\xbc\xac4\xbe5\x1c\xc2ni,\xefyY\xa9\xdf3^V\xea\xf7\x12\x0ea\xaf\xd4\xc7\x15\x1c\xc2~\xa9\xbd7\xbc\xac4\xb7\xe7\xbc\xac\xd4\xc7S\xbe|%7\xc4W\xbc\xac\xf4\xedo\xbcl\xbfX\xf6\x01\x93\x15\x96*\x1eca\xa9\x97\x1f\xb1\xb04\x95\xb7ph\x80\xf8\xc1\x18\x9c\xd3\xd3\x81\xe1\x1ez\x88o|\xc3\x9bG\xf8\xe6\xcc\xf0\xe61\xbeI\x0do\x86\xd4Qhz5\xc4W\x1fM\xafF\xf8jiz\xb5\x83\xaf\xca\xd4\x1c\xff\x1b\xd1\xd0\xcbBh\xfe\xb7\xb3;\x86{\xa7\xa7\xce=\xc3\xd8\xa9\xaf\xd3Scg\xd4\xdb\x89\xe9\xdd>M\xed\xbdi\xa5F;\xd4\xeaK\xf3Kj\xf5uI\xc6P\xac\xfa\x8c_\xd6\xce\xb5\xd3\x03\xe7\x17\xfe\xbfk\x96\xe0\xb3\xf8\xe7\xf9\x1b\xfe\x0f\xd2\xbc\xce+\xfa\xff \xff?>\xd2S\x84\x8f\xf4\xffWX{\xb9\xc4\x8a\xe2\x9f\x17/\x9c\x99)\x90\xc6\xeb*\x92\xcc\xc5\xb5%\x0d4Y\x9e\x1c\xd6z\x93\xf5(X\xc6ho\xcf#B\xe8\xca\xa1h\xbd\xa3b[\xca\x02\x19\xab\xef\xef\xed\xed\xc8\x0f2\xf1\xc1\xae\xe1\x033\xc9\xde\xa1FvG\x8fw\x1f\xef?\x1c=\xde\xf3\xbcb\xf8\xdby\xb4`\xb0\x89\x82Bz\\\x8av\xb8\xf6\xafe\xda\x85\xf3\x98\xf9)\x8b)\xf3\xc2\xe0\xea\x85\xf83\xd1\x0d8\xd0wb\xa0\x8f\x8a;[\xf8%o\xbc\xd3SG\xc4p\xcc\x836\x0e\xf0\xfbm\xc5'{\xd0\xd5\x987S\xb0\x92\x9f\xaa\x9b\xa5\x85\xac\xc6\x9d\xc9crG2\"\xb6\x0c0\xfd\xa3\x9f^\xf4\xd7\xfe\x95\x8b\xf9\xc1E\xf1\xcd\x0d\x8c<\x19\xda\xfbC\xb09\x0e?\xfa\xab`Ami\xbf\xf58\xdc\xcbUt\xf9\x92}d+\xa4`\x83\xe4$\xe2kz\xee\xa6\xf9\x1bO\xfa\x1fie\xb2\x97\xf4z%\xe2m\x17\xaeU\x1bE]\xcd\xffkH\xdfU\xe0\xdcrw\xfe\xff\xfca\x919\x87\"\xfb \x19iP\xc6\xd5\xb8\xa40`J'C\xce\xff\xd1\x13\x8a\x88:\xa4\x8c\xe4\xf14\x10Z]q\x16\xd84C\x0f\xeeN\x87\xc8\x99,7]\x1d\x91A/\xff\xcc\xc0\xd5r\xd0\xc8\x94\xff\xb6\xd7\x03\x97\x12\xb8\x95B\x90\xf7eV!\xde\x0foOdt\x98\xf7u7\xcb\x1e\xf8\xd4\x99\x8f\nk\xfd\xd5\xd4\xe7\xe3\x0b\xa7\xd9\x0c\x0e\xcb\x91oA\x13p\x17\xe1\xd9\xd5@\x8c\x03\x0e\xb6\x98H\xf3H\x05;Q\x9c\xfe\xc0\xae)\xd5\x8c\xfaQ\x8c\xde\x1e\xb2\x7f\x06\x0b\x19=]\xfd\xba\xb9\x81G2\xf6y\x18\xfd\xc4\x96\xd4\x86x\xd4[\x08\xa3g\xd1z\xe3\xa7?\xf2\xe3Lu\xb4\x02\xbd\xe6<\xe2\xd0\x8d\xeeV\x97b)\xb5\x02\xbd\xe6\x1d\xe2\xc5\xcb\\Du\x9f<\xbf*\x86\x98\xc7\x9cWa\x1e\xa6\xbe\x98I\x9a\x97,2\xfe\x85\x9f2a\xa7@\xa5Y\xc2\x16\xdf\xeao\n\xc1\xfdL8\xe2\xc4x\x98\x10\xe8\xc5i\n\xe0\xb0\x14:\x96y\"w1)\xe6\xb6\x87\x04\xd7|l\x89f\xaa\xf4\x04\"8\x80\xe4\x89\x879\x1a\xd0j]\xa6\xe6\x17n|\x98\xf8?\xf2\xd0\xda\x87\xfcCD\n\x0b\xd1A\x82\xa9\xdd\nox\x97\x14\xc65Bc!z\x0eu!\xc4\xa9\xe0\x03C\x01\xd7\xddC\x08<>\xc4\xeea\xd9\x9dL\x80\xb0_\xbbD/\xebbo\x9bc\xebJty\x1f4\xce\xce\xd4\xf6\xb7U\x14-\x19\x0e\\\xb1\x15\x87>z\x9c\xd76\xf4okC;\xa3b`\xaa\xe1h\x1f\x99\xf7\xfda9\xf2\xd5\xe8\xf1\x1e\xff\xc5)\x94\xdcm\x82\x93$\xe2\xd7\xcd\x0d\xec=\xdc\xd9\xdd-~\xc7/\xe3\x1d\xfe\x8b\x92Q\xa8\xaa\xbc|\xbf\xd4\xf5p\xb8;\x1c\x0ek'\xf2\xc2:\x11\x9cb\xa9\x1fl\x99?\xbe\xcf\x1f\x9f\xe6\x8f\xaf\xf2\xc7\x0f\xf9\xe3\x8f\xf9\xe3e\xfe\xb8\xa8\x1d\xd6;\xeb\xb0\x1e\xfcz\x1a\xde\x07\x19\xc8D\xdfn\xf9\xc4\x0f\xd27\xd5X#\xbfs2\xa7X\xf4\x0b\xe7U\x8aE\xff\xe4\xb4M\xb1\xe8g\xc0\x88\xd2\xd5A\xfeP\x1fg\x9d\x8f#\xd2\xed\x9b:\x86\xe8'sK\xf9\nO:\x85\xfa\xa8\xbe}Kx\xa0R\xce)\xd5\x7f\x8b\xec\xa3\x85\x04%\xa5\x9d\xc4x<\x9do]\xba\x8c|,;\xcb\x1f\xdf\xe4\x8f\x97\xf9\xe3\xfb\xfc\xf1i\xfe\xf8*\x7f\xfc\x90?\xfe\x98?.\xf2\xc7\xeb\xfcq\x9d?n\xf2\xc7\xe3\xfc\xf1*\x7f<\xcf\x1f/\xf2\xc7\x8f\xf9\xe3\xf3\xfc\xf1713{V\x17C\x82\x07\x83<H\xd9:\x0c\x08\xafjX\xb6\xdb\xad\xd3ju\xfe-\xd0\xae\xd6\x7f\xa4\x05\x02\xfa\xd9,\x01\xe6;\xf7\x8c\x8f\xfd\x85\xd1H\xcaF`\xdfy\x98\xc6A\"\xe2[z\x04\xac\x83\x1e\x90\xd2\x83\x83\xe8\x1ciV\xd8\x86\xb7x\xbb\x1c\x91\xf1\xae\x03\"k\xe6\xf4-\xbf\x19f=\x04\xcc\xc8\"\xe4VL\x05_\xa2O]\x10\xe3A\xc2Q\xe2\xa0\x1b\x87\xfa\x95\xbd51.\xa4n\xe60\x81\x10\x8e\xe01\xe49\x96~\x861\x96\xff\x13\xc6\xf0\x0b\x8ci\x94\x9d\x80^~\x03c\xf8\xbd\x16\xb5}\xa7a\x8d\n\xbf\xd0_d\xeb\x02\xedmS\x84\x90\xe6\x97\x955\xbf\xce\xbd{\x16\xadl\xa7D\x90Q\x1c\x7f\xbe$\xcf\xf2\xb0\x03\x9a{\xe9=\x8c\xc6\x0e]\xfed\xd6&G\x8a\xba\xc0\xabWg`\xc2\x1a\x7f\x01\x91=@'2\x057\xa2Z\xa0\x87 t\xb5J=\xd8\x1d\xa8\xe4\xc8\xf4\xd96D\x96~8\x06\xc4\xdcC\x1a\x83\x03G\xbc\x17\x0c\x0ewt\xa8\xbf\xa8\xceN:\"\xff\xe0\xb2\x1ee,\x0eD\xa6\xe6L\x936Z\xdd\x94\xc5\x126\xf2O\xf2O\xf2Q\xe6\x83\x00\x05/\x16\x19#\xd2\x9cV6\xa4(h\x94\x1a\xc8n\x7f\n\x02&\xcaYe\xc3\x99J7\xaa\x81\x82-\\#\xd4*m\x00TF\xa4\xea\xe9\xb5Z\xbc\xa2\x17\xf57\x8d\xbe\xd3\xcc<\"\xfc\xfa\xf7\xc6\xaf\x05l\xe7\xae.\xf7\xd0\xc9\xe5\xde=\xc7\xb3\xc1;\xc8\xd6\x7fin\xfd\x86\xb7\xfe5%\x05$\xb8\xe1\xcd~\xef\x9e\xf0\xa2\xc8\x96\x13\x11[\xffgs\xebG\xd6\xd6[\xc3\x1b\x14yw8\x84\x07\xeei\xd8\xf5\xdc\xe9\xaf\xa7\xe1\xec\xbe\xf7\xe0\xdc|\xaa\xf4?\xe4\xc9\xfd\n\x7f\xe1\x11o\"0\x8b\x0f\x13\xf0Q\xcc \xbc) \xe8\xaf\xfc$=\xe6_P2\xf0\x7f\xa8`t\x83\x1e&\xdbf\x9e\xe5L\xeb\x7f\xc8\xaa\x9f\x862\xfc\xcb\x00}>9\x8a\x97\xbf\xed\x10\x0bb\xf2\x06\x0e[\xff\x13a\x05c\xdd\xef\xd7\x9a\xcdS\xff\xe3m'@\x91\xdd\x9a'\x02\xe2\xe6\x8a\xa7\xa3\x861\x83\xca\xffB\xb3\x9c\xa3\xfa'\xe2'=\x81.\xe7\xf50\x9b=_\x07Q\x01&\xfcqL\xc9\xeb\xa0\x0b\xffp\xe7\xc4L\xa2\xd2\xa2\xb63{\x98K\xc8A1\xb2V\xfa\x83\x83g\xe65A\xfb\xcf\x8d\xd0~\x0f3\x934+\xf7\xe4\x9fb\xa4s\xaa\\p\xcaV\x1aI\xc8LK\x84\xd0\x111h\xfb\x80\x0e;\x9c]\xdb\xdf\x19\"\x11P\x8dO\x1a!WL\xdf\xec\xef\x8c\x06\x90\x07+\xdd\xd9\xdd\xe1\xcc6\n\xa6^\xbb\xc3\xc1\x08\xbd\x96\x19lS\xeb\x949f[|\xd6%\x1e\x8e/\x1b\xa7\xdd\xc6$\xf3z+\xcce\xbb\x87\xd0AJ\xe6\xdf\xfc\xe2\x99@:\x8df0\xa6[\xee\xb5\xd9\x1bM\xff\x93\xba\xd4\xba=\xf3(}\xa8\xb9!\x11\xfc\xc1\xbee\x05\x99n\xb0\xdeDI\x12\x9c\xad\x84\xb7\xfb\x18\x02!\xaa$\x0b\x10\x8a=\xe64\x11v\x7f\xb8\xf5\xfc\xfc\xd7\xf64Rp(\xe95)\x00\xc4\x90k\x06-@\\D&\x85XRF\xf9E\xc8\xcf\x1b%\xd46\x7f7\"|\xa4\xde\xf1Q8]\x07\xb7K\x1e\xcam\xbalNC\xa7v\x86\xdf[\x19a\xdb\x909l\xe4(u{\x88\xb9<k\xfb\xf8\x87q\x15\xd1\x14As\xb7\xd6\xd1\xab\xa2\x0dJV\xc3\xba K^-0\xfd\x15\xd0\x8bT\x93a\x0d\xe8\x9a\x18\x10_\xec8Op\xbf4D\x8bWKHW\x8b\xc7 =L\x04%\x8d\x9728\x82\x08&\x90\xc1\x98xk\x91\xa2\x93\xac\xba\xa4\xe4*\x16R\xabXH\xad\xb2\xaa\\U\x91\xfa\xa2\x81\x9e\x9e\xe8T\xf5)\xbb\xc3j\xbah\xcc\xcb\xb3=\xc9b\x12\x91\xc1\xb8T\x193\xfcVB\xf9\x996\xe3_&-6H\x9d\xb5\x94\xb3\x8b\xc0\x16\x86\xd5\x17\xcb\xcb/\x15\xb2\xd5Gx(JE\xc7e\x022\x17\xa5gp\x00s\xfe\x8f\x99\x82D\xd6\xd1]r.o\x9a\xcd\xbc~\x1e\xdc\x80\x83\xc8\xb2\xaf\x8c\x0dH\xca\xddY\x96j8d[\xc0!I\xa5 $\x1c+\xebEK\xd0?R\xed\xa8\x96K\x1dq\xd4W\xc7\xe8\xa6R\xbc\x0b\x13X\xe2\xf3\x18\x9c\x89\xd3\x83e_\x19%\xd4]+\xbc\x8d\x15\x89D\x85jd\x8a\xcd\xcch\x1czL\x9c\x9e\xd5v\xc2']\x80\xde%9Ch%\xfc\xce\\\xd5`q\x8b\x04@\xffC>/\xa9\xf4\x85a,\x8a\xf8\x99\xb2\xf1/E6\xfe{G\x98\xa2_\xd0\xfe1\xf8\xf39\xdb\xa4 \xaa\xde\xf0\x06^QN0\\\x81{M7MqZ\xd3\xd5\x8cff\xbfy\xecW\x8ad\x87cc\x95\xda\x90\xd3\x06\x83,#\x9b\xdf\xa9\x97\x8f\xfeOA\xc6G\x87\xbe\xcc\xb3\x17\xf4\x07r\xc8a\x8f\x8er\xd8\x83\xce\x10C\xdf\xa8\x9f\x03Cj\xe0\x04\x14\x94P\x13\xe5$\xad\n\xf9\xe9,\xed\x01E\x85+r\xb9\xe5\x14\xa6\xbc\xf9y\x0fV=\xb4\xff\xa8\xbaIq\x00Ea\x87z\x85\xbe=\xf2MU\\\x86\x02;W\x93P\n\x8dX\xae$Q<A\xe8\xa1\xc6,\xf7\xca\xc0\xc5\xda\xda\xe2GP+@\xb1\xcd\xcd\x0d\x08A\xb8\x14* b8\x02\x91_9BQ\xa9'\xc4RiI\xfb2\x9d\xcf\xbc|\xf5\x9d\xfb1[\xbe\xe70^RG\xd6(\xaaqZ\xd8v\xc7\xd08\x0e\xc1T~H\xf9\xc3-\xeb\xea\xd1\xceQ\nY]\x7f)vY^7\x13p;\x15C&\x83\x84H\xfe\x15\x85\xcb=}\x83k\xccYI\xbb\x97\xfa5\x0c\xde\xa2\xa4g\xb5%\xc2G\\#\xfd\x0f\xa4J\xd1\x83\x05>\xbbM\"@-al~\x13\x18\xda\xd1\x8a\x1aZ\xd4?.\xa0:\xa5\xee\\g Z\x12\xf8pF\xa9n([y\x9d\x05\"\x14D\xacDB,\n\xfa\xb6\xec \xf1`C\x0fE\xf6\x9c\xd5\x10\x1b\xceW&\xe2@\xedb\x1c$\xa1\xd6\x12\x91%\xc2)'p\x16\xd3h6\xeb \x1cCf\x80>\xe5`\xa7\xff\x08\xee\xf1t\xb58A\x02\xf8\xf1l\xf0\xa7\xdc\x9b\x823\x1e2\xeb\xbb\xac\xb3\x14[\x875\x8b\xc9\xcc'\"r\xd3\x84\x13\xaa\xe2\x11\x1c<x]\xf9 \xa70\x08\x0b\x14\xe6\xa6O%\xa1i\xcc\xef\xd0\xf38\xefy\x0c\x0e\x87\xeb\xee\xa1\xde\xbb\x8d\xdb\x91\xb8\xf8BC\xc4\x1bDm\xff\xf9\xc3\x10iO\x9c39\xa3H\xe2\x167\xc7#[\n\x8f \x91G\x9ds\xde\xaczZ\xeb\x8ej\xc9F\"i8\xa7\xf3\xe6s\xbalyN\xcb \xb4\x97\n|K \xb4\xfd\xaa*~\x82\x0c8rM\x02\x83\xd15\x84\xba]\xa7\x870\x81\xc2\x84)?\x1f\xcbi\x9cC3N\xb63\xa4\xcb/_\xd2\"Lj\x8d\x11\x80\xf9\xf9\x16c2Q\xdbp\x90\xf0\x1e;\xc6:\xc4^asr(Yq(H\x9a\xfb\xed\xa1i\xaeA\x93\xf3\x1f\xdek\xc2\xfbo\x84\xa8&pr\xc0\xd1\x80\xaa:\x86\x1c[\x1a/\xe6\xc2\xd5R\\\xde\xbb\xdc&\xb9\xebo\x1dd\xfa\x122k\xa0M3\xdb m6::\xa2\x08\xd1VGGy\x1a\n\x0d\x10\x85fE4\xd3\x12\x99\xe0W\xce6\x07\x08\xf1H)\x82\xf3\x9d\xaf\xdfx_\xdb\xf8\x8c(\xa4Y\xd3\xa6\xff\x19h\xa4a\x8f\xb2\x16{\xa4a\x84\xd0\x86\x11\x14\xed;\x8dg\xc5\x13\xa4#\x83\x88\x90A\xc3a\xf4\x84\xac\xb2\xd5\xbag\xfa\x81\x9b:2\xafr\xe3\xda7-|\xab\x03gg%\xd51$\x89\x92\x880\x904q\x8f\x05S\xbdF\xbfF(\x8b\xd2\xb2\x90\xd81\xffl\xc5\xd0\x8d\n\xa2%p\xe2\x85\xc6\x92F\x80sE\xb4df\xb2\xcc|R\x91~\xd8\xda\"\xc5\xa4\x04b\x14\xe0V\x97\xbbR\xd2D\x97\x14w\x83\xd8\xceT\xb0\x9d\xce\x91\xbe\x1f_\xd9;\xaa\xb2t&V\xed\xbf\xed\xc2@%\x8d2\x85\x981\xf9\xe2\xe0\x19Q-#on\xc3\x9f\x1a\xee\xac\xee\xa8\xb2|\xec\xa8\x9ca\x06 \x88\xdd\xbb~[\x8bH\x11\xeaz\xda\xdc\xca+\xcf\x04\x13\xe1\xe1\x8c\xc9\xd1\xa5Q\x0b\x1fR=\xe6\xf5\xe8Z\xe9\x07 \xc5t`\x86\x88\xec\xf2\xafL\x0c3\x1b1\x9c\xbal\x1a\xcd\xc4\xaa\xd9GR\xdfQ9HD\xc9\x12.\xa8\xeb< \xda:\xac:\xb0r0 \x08Mk*\xd5\xc8\xa2D\x05\xa6\xf3\xb5\xb8d\xc14\x9a\x86\xb3YiZ\xcc`\x0e\xa8\xe2d\xc4\xf5B\xbf4\xad\x15d\xa3C.e\x01\xe0\xb7\xd0\x7f\xcan\x84R.\xad\x99e\xe2a\x08\x91\x06\n{|\x8ei~\xc3N \x94$\x16J/\x0b\x19\xc7\xf3\x93\xa7|>\xe5\xf1MS-\x1d{?\xf1\x97\xec\xdb\x92\xb5B\x8d\xe5\x1eM1\xee\xb3\xab\x94\x85\x0b\xb7z\x8e\xc8Fs\x0cYq\xb7\xf0\xc6/\x8d\xeeN>?\x02\x90\xc85V\xba\xd6\xf0\x83\xed\xbc\x7f\xcf\x92\x1f\xa3E\xb6\xaa\xc6.\xfd\xe8\xaf\xb2\xa2w\x1f:\x8a\xf5\xcfY\xfa,\n\x97\xc1\xf97\xd7\xefb\x0c\x86\xdb_D\x97\xe1*\xf2\x17T\x0e\x87\"\x1eB>\x80\xdc\xe9h4\x18j;h\xf8\xd4\xae\xf1*\xdb\x16\x18\x15\xbd\xa2\x92;\xe0C]\x86\xfd%K\xe7\x17^\xc5E+\x9f\x93qJmvU\xd51\x92-\xca\x97\xb8\x9fl\xd8\xfc)\xd6L\xccH2\xf7\xe7\x0dJ\xcb\xe1\xa6^?\xbd`\xe8\x07\x17\xe9\xe9F\xe5\x9f:E\x91y\x14\x80\x9aSM\xbe\x8c\xce\x88\xa8.\xed'\xa9\x9ff \x1c\x1d\xc2\xee\x00\xd3[\x04\xfdl\xb3\xf0S\xf62\xf2\x17Ax\xfe\x06\xdf\xbb\xce\x12\x1d\x17i@\x9c\xb3\xb8e\xb5w\xf1\xcaux\xc1<\n\x93h\xc5\xfa\xa8\x14se\xffo\xd9U\xaa\x91'Y\xbc\xe2@\x86\x17\x07R\x89\xcc\xe5[)\xdcQ\x7f\xf1\xd7+\xea\xc1s\xc3~\xca\xae\xca!\xb4\xa1\xaaF\xfb[\x9d\x1f\x1d\xf2\xcfY\xda\x12\xd2R^\xf78t\xcbw\x15L\x80\xc1\x18\xa6l\xf6\xf7\xc2\x12\xa5s\xaf\x08w~\xfa\xf7\x0c^\x84H\x91\xcb\x1b<\xef\x0b&\x10\x83)9\x93\xd4\xc7\x96\x83\x17\x16[F5\x9a;\xdc\x7fT\xea1\x11#\xd9-\xe2!j\x93\x02I\x92\x0b\x06\x07\xbcL\xbe\xf0\xdc\xa0\x07I\xff\xdd\xebo\x9f\xbe}\xfe\xfe\xd9\xab\x93\x17\xc7\xdf\xbd\xe9\xb5\xdc>\x0c\x0e\x8d\x80\xeccp\xd1\x7f\xbc\xf1\\\xd6\xdf\xf8\xd7\xfc\xa8\xeb(\xde3\xf7\xfa\xf6\xd5w\xdf\xbdl\xdb\xab\xbc9U\x07f\xb5/\x02UEt\xa2\x86\x9c\xf0\x97=\xe8\xc4\xc5\xd1\x05\xc2\xf3t\xe6}\xc5\xf7\xf9\xc1\x83\xff\x03\x14J\xe2G\n\xdb\xf4\xee\xa7\x97\x87\xc9\xa5\x7f~\xce\xe2\xed,\xd8\xe6xg\xe1\xaf\xa2\x90m\xa3N$\xed\xff\x96\xf4\xd7\xfe\xe6\xff\x07\x00\x00\xff\xffPK\x07\x08v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00swagger-ui.cssUT\x05\x00\x01\x80Cm8\xec\xfd{s\xdb8\xb27\x8e\xff\xff\xbc\n=\xbb\x95\x9a\x99\x1dS!EQ\x17\xabf\xeb\xc8\xb1\x93q6r\xc6\xcem\x92\xad\xad)\x8a\x84$\xda\xe0\xe5\x90\xd4\xcdz\xf6\xbd\xff\x8aw\\\x1a $;s\xf6\xf7\xad\xb3\xd9dl\xe2\xd3\x8dFw\x03h4\x00\xb2\x9bl\xed\xe5\x12\xc5\xda\xda;\xfc\x9fN\xe7\xe5\xdf\xfeo'\x08c\xdf\xc6\xde#\xea:I\xd2\xd9\x0c\xbbzW\xef\xfc\xbf\xce\xec\xfac\xe7\x9d\xe7\xa0 A\x9d\xff\xd7Yz\xe9j=\xef:\xa1\xff2@N\x88\xed\xe4%M\xf7\xb7\x97\x8b0H\xb5\x85\xed{x\x7f\x9e\xd8A\xa2%(\xf6\x16\x13'\xc4a|\xfeWs\xde7,\xe3\xdfD\xfd\x9dU\xea\xe3\x03\xf6\x02\xa4\xad\x90\xb7\\\xa5\xe7F\xd7\xb0&\x9a\x9fh)\xda\xa5Z\xe2=\"\xcdv\xef\xd7Izn\xe8\xfa\x8b\x89\xb6E\xf3\x07/\x85K)\xce\xf3\xd0\xdd\x1f|;^z\xc1\xb9N\x95\xd8q\xea9\x18\x9dQ\xcf\x12\xcf\xa5\x9f,\xc20E1\xf5h\x85l\x97y\x14\xd8\x1b\xea\xf7\x049\xa9\x17\x06\x07\xd7K\"l\xef\xcf\xe78t\x1e\xe8\x16\x1b\x87\\K\x99\xf0\xe7=\xe4OJ\x19\xbb\x83!\xf2;\xb4\xa4\x0bo\xe9\xd8Q\xc6\xf0\x8cy\xbc\x8eii}\xdb\x93UZPT\xea0\x90\xdf\xe9\xeb\xd1\x8e\x96+>T\xca\x9d\x87\xbbL</X\x9e;a\x90\xa2 \x7f4\x11<.\x0d\xa7O\xc2\x0d\x8a\x178\xdc\x9eo\xbc\xc4\x9bcD\xb1\x8fbt \xbd\xc3\x0f\x830\x89l\x07\x9d\xd5?M\x1a\xbd\x18\xc8\xa7Mv\x98\xdb\xce\xc32\x0e\xd7\x81\xab\x15\xde\x94\xc6v\x90Dv\x8c\x82\x94\xf6\n\x179algJ\xd3\x92\x07/:\x0f\xe7\xf7\xc8I\x13\x9a\xdf|\x1e\xff3\xf5R\x8c\xfeu\x98\x87\xb1\x8bbm\x1e\xa6i\xe8\x9f\x07a\x80&\x0c\x9f\xf3u\xe0\xa28\xf3RQM\x0d\xa2\xe3\x86i\x8a\\1\x8b\x12@\xfb*\xedCi\x1c\x06\xcbB[\xdbB\xb9^\xb0B\xb1\x97N\xc8g\xf3\x10\xbb(\xa6\xf88!\xe3\xc4\x0fs\x97fm\xfb\xd1\x13\xcc\xe0.\x82\xd2y\xd3=F\xe7^jc\xcf\xf97\xed\x87\xf1\x03o\xab\xbf.\x16z5\x08\xe8:\xed\xe3\x89ocLt\x89\x11\xd3\x8f\x935\xa3\x9duD\xa0\x87\xd6\x8b 9|\xe8\x93(L\xbc\\\xe31\xc2v\xeam\xd0d\x83\xb2\x0eoc\xcd\xc6\xde28\x9f\xdb \xcaH\xd8Z\x0e\xa5\x07h\xdd\x9e\xc5\xb4;\xab3\x0d\xa3s\xad\xcb\x96\xd8k\xd7\x0b)\xf96\x9e\x8b\xc2\xba+zA.\x1d\xdf#s\xc2\xf3 L\x7f\xfcg\xd6\x99\xe2\x10'\xff\xfa\xa9&\xcb\xbd\xb0j\x12E\xe7\xf9\xcb\xcac\x0b#dPZ\xd8\xcd2\xe7{\x1e\x87a\xfa\xd3\xa1\xee\x95+\xcfuQ@\xfb\xdd:M\x99\xb1\xc5\x0b\xa2uJ= \xa343f\xc4\x8cs\x1894.\xf3x;F\xf6A0 \x10n\x95\x8d\xe4\xdc\xa0\x0f\x8e\xd5\" \x0f\xd2\xc1\x06\xa0*\x04>\xe4\xdd2\x1f:\x16a\xec\xf3\xca\xfbg\xba\x8f\xd0/1JP\xfa\xaf3\xbe Y\xcf}\x8f)\x01*\xcbf\xb5\x92\xa2(\xfdW=\xb6\xdaQ\x84\xec\xd8\x0e\x1ct^\x14\x01\xd5\x974\xe7\xe7\x9a\x1f>j\x8b\xd0Y'\x9a\x17\x04\xcc\xd4C\x8a\xaa\x04-\x85o\xc1\x16\x95\xf3 \xde\xeb&\x91\xed\xba\xd9l\xa0K\xda\xd0\xb0\x89\xbd`)n@+\xae\x92^\x02,E\xa7\x11\x87p\x9df\xbevnD\xbbr\xec\xed\\\xe4\xc0\x8fh\x972\xb3$\xc2n\x82\xd2C\xd5\xb0\xaei!\xbf\xd3\x1d\xe6\xff\x0e\xb8a\x01\xa3%\n\\h\xda\xac\xe7\x14j\xd6$\x9e\x16\x83a5\xacW\xdd>\xb5\xe7\x18M|{\xa7m=7]\x15\x1d\xa5\xd6\xf2d\xbb\xf2R\xa4\xe5\x83\xf4y\x11y1Sl\xb8\x8cQ\x92\x80\x83\x8f\xd2(Xw\xe1\xbaw\xd9\xeb4\x04\xac\xeb\xac\x90\xf30\x0fwP\x1f\x89m\xd7\x0b\xffu\x92Vd\x0e\x15\xac\xfd9\x8a3\xef-\x19\xe7^\xa9%\x91\x17h@\x17\x14\x10\x85\xeb\x94&:\x94C\x90\xa0\xa1 \xb2cg\x05v\xdfLY\xb9\xc7LJ\x0f\xd3\xc2\xc5\"A\xe9\xb9\xd6cB+\x8aU#K\xf1@s2nX\xdc\x06\x11]\x13\\@\xd2q#[C\xbf\xf00\xd2\xd6\x11\x0em\xb7R\x82pt\xcaG\xed\xcaO\xe9X\x00\xa5\xb6\x87\x13:\nE\xc1Z\x12\x85&k\xdf\xb7\xe3}\x8d\xc0^\x92j^\xca\xf4*\xc7\x0e66\xec\xc4\xb4V\x8b \xed_\xcc$\xe4G\xd8N\x115\x93Rd]\x17\xcd\xd7\xcb\xce\xdf\xa8q! \xb1\xe7v\x96!v\x01\xac\x96\xf7;\x90\xe2\xaf\x8b\xc5\x02\xa2\x98c\xdby\x80)\xd8\xf8\xa7\xa4X\xc6\x9eK\x04Ndx\xdbY\xc7\xf8G\xd7N\xeds\xcf\xb7\x97\xe8e\x14,'Y\xf7\x1d\xf4\xcf\xbc\xcf\x17\xef\xef\xb6\xfa?\xde,\xc3\xe9t:\xbd\xf9\xf0iu\xf5i\x99\xfd\x98\xffs\xfdj\xfau:\x9d^^]\x0e\x07\xef\xb2\x07o~\xbf{\xfd\xe5\xd7\xbb\x8f\xf3\xde7\xdd\xed\xbd\xde\x7f\xbb\xbd\xb8\xf8\xf6f\xec}\xfbp\xf1v\xfe\xe5u\xf0\xed\xf3[\xfc\xf5\xcb\x9d\xe58\x18\xff\x96\x11\xecW\xd1\xe7\xd7+\xfd\xcb\x951{\xef\xdfl\xe6\x1f\xacU\x81\xb7\xfa\xf3\xdf\xa7\xc5\xff.\xb7/\xd1\xaf\x17\xab\xaf\xbd\x14\xbb\xaf.\xbco_\xdch~\xaf{\xc3\xe1\xfa\xe5\xb5w\x11}\xbb\xd4\xbd\xcf\x8f\x9fofW\xc6\xf6\xb6\xf79\xb4?\xad\x06\x8e\xff\xf9#z\xb0>}5\xa3\xf8\xeb#~\xb8\xbe\x1f\xfd|}\xb9\xeb\xbf\x0fV\xa9\xf3\xc6\xc0\xee\x9b\xab%zc$\xf3`6@\x97\xba\xf7\xf5\xcb\xdd\xe6\xab\xffi\x90\xfd>\xff\xf2Y\xff\xfaa\xe4]\xff\xba\x1c\xa07\xc6\xd6}\x93\x8c\xaf\x1f^?\xcc{o\xf1\xf5\xeb\xd5\xcd\xa7W\x17\x97s\xf3-\xbe\xbe\xfc\xb4\xbe\xf1\x8c\xfb\xd9\xc7\xab\xdd\xf5\xa5c\xbd\xbb\xbf2\xde_\xce\xf67\x1f\xb6\xcb\xd9\xfdtw\xf3a\xb4}\xffa\xb4\x9b\xbd\xd2\xb7\xb3\x8f\xe1nv\x19\xeeg\xaf\xa6\xcb\xeb\xea\xef}\x7f\xf9\xdb\xafo\x1f\xbe\xddG\x1f\xee\xae\xbe\xd6\xf28\xfe\x9d\xff\xdb\x87\xb7\xa1\xfb\xeb\xdd\xf6\xbd7\xda\xb8\xa6k\xbe\x0b\x9c\xc7w\xfex\xffm?\xda\xbd\xff\xf8`\xbd{\x9c\xee\xdf=^\xef\xdf\xfd\xfe\xf6\xe1\x9bg<\xa2/\x96\xfe\xf5\xf7e:\x0ff\xf7\x04\xdf\xabo\xbf\xdf\xdc;>\xde\xbao\xf0f\xee]\xec\xbf\xbd\xf9:\xf8\xfa\xe5\xed\xc6\xfd\xfdv|\xed]7:xcl?~\xd2\xc7\xd7\xfeJw\x7f\x9d\x0e\xde\xed\xc7kg_\xdb\xe2~\xde\xd37\xe8\xcd\xeb\xed\xbb\xc7\xab\xf5\xec\xd58\x9d\xe7\xfaY\xa5\xf37\xd6\xe3\xfb\xe0F\xff\xe4\x7f\xa6d\x9e\x07\xb3u\xa9\xd3\xf5\xd7\xde8}g\xaeV\xce\xab\xd1\xee\xdd\xfdt\xe3\x18w\x96\xf3\xe6\xd3\xe6\x93\xff\xf9qn~\xde\x7f\xed}\xfe\xf0\xed\xcb\xd7\xfbk\xef\xa2?\xff\xb2[;\x8fQf{EY\n9\x9c+\xe3\xe6\xfd\xc3\xdd\xe6\xab\xf99\xfd\xf6\xc5\xd2?|\xba\x1d_g\xb6~e=\xd8_n\x07\xb3\x8fw\x97\xef?~\xed\xdf\xe8\x9fz7\xfa\xe7\xd7\xb3\x8f\xaf_\xdf\xdc/{\xb3\xc7o\x97\xb7\xf7\x0f\xdb\x9b\x87\xdb\xfe\xec~\xb9\x9d]]\x13\xfc\xf0\xda1\xefVs\xff\x06\x13\xfc\"\x9a\xdf\xad\x1a\xbf\xcb\xe8\xd2\xf1?\xaf\xdc7\xe3\xfd\xe77\xe3\xcd\xfcR\xf7n\x0b\xfd,?\xbdYm\xdc7\xe3G\xfb\xcdx{}usy}y\xbd\x9d}\xfc\xb4\xfc\xc7\x95\xb1\xfa\xda\xc3\xeb\xbc\xec\xd5\x83\xf7\x9b7\x1d\x95v\x1a\xdc\xbd\xf9\xbc\xb7\x7f\xff\x86\xbf]}\xdb\xcf{\xfa\xd21\xef2\x1d\x0e\xec/\xd6\xa3\xfb\xe6\xf5\xfak\xef\xf3\xdb\xbbK\xdd\xcb\xf0\xef|\x1c}\xbb\x0c\xcd\x9b{g\x7f\xfbpk\xde\xdc\x7f5o\x1f?\xedf\x9f>\xf5n\xef\xdf\xbe\xba\xd5?\xedo.\xa7\xfd\xd9\xc7\xe9vv\x7fe\xce>\\\xd7\xfc\xbe\xbd\x19\xdf\xbb_\x0c<\x0f\xee\x08~w4\xbf\xc7V~\x9bL\xf6w&\xe0\x93\x99\xaf\xbe\x1a\xe7~\xf9\xe9\xe1\xeeM\x81+\xfa]\xde\x0f?\xf6\x97\xbf]\x8e\xfb\xce\x9b\xd7\xf7v\xef\xb3~\xfd\xe6\xf3:\xeb\xef\x8ew\xfd\xf2\xb7\xe4\xe2\xc3\xcfof\xd9\x08q\xff\xe1\xd3\xdd\xc5\xe7_\xef\xed\xaf\x9b\xc7\x97/\x1fG\x97\xef\x92\xcb\xfe\xd2y\xf3\xbb\xf7\xf5j\xfa\xe6\xe2\xfa\x1fo.\x02\xf4\xf2\xe5\xe2u\xb4\x9d.\xb7\xd3\x8b\xf1hj\xbf\xeeE\xf7\xf8\xd3mF~\xf1\xf6\xee\x93u\x15?\xbc].\x97\xbf\xfc\xf2S'F\x11\xb2\xd3\x8e\xde\x11\x8e\xa4\x9a1x\xc6\xc1\xf4\"\x1f\xe6n\x8b\xc1t\xba\x18\xbd\x1c\xaf\xfew0\xfd\xdf\xc1\xf4?u0}\x7f\xf9u\x7fw\xbf\xba\xba\xbb\xcc\x06\xd3\xaf\xfb\xd6\xc1\xafe0m\xf8\xdd\xaa\xf1\xfb\x0f\x1aLo?\xb6\x0e~G\x0d\xa6\xb7\xed\x83\xf3\xf7\x19L7\xaf>\xe8\xc6u6\x18\xcd\xea\xc1\xd4\xbf\xeb\xbf\xb4~\xbex\xfd\xdb\xc5b:{\xed\xbf\x9c],w\xa3\xbb\xe9\x9b/\xaf\x02c:\xf5?,\xcd\xfe\xed\xe0\xe1\xe2\xf2\x1f\xb37\xb3\xcbW\xdb\xebWhv\x8d\xfc\xd7/\xad[{{\xe5E\xd3/\xdbO\xab\xed\xd5\xfd\xecr3\x9f~\xc1_\x1e6\x9f/\xb6\xeb\xd1\xe6\xf6zz1\xbd\xda^\xbc\x8aV\xa3O\x03G\xcf\xc7\xa5+\xfc\xfa\xe3\xc3\x87\xf5\xad\xff\xea\x95\xd2\x00<\xd2\xf2x\x97\x1c\x85\xb3`\x99\x1d~\xef#T\x8f\xbf/\xc7\xf7/\xfb\xb7\xd3\xafw\xbf\xaf\xa2o\xcb\xe9\xf4\xc3\xa7\x87\xff.\x03\xd9\xe6\x7f\xbf\xbdL\xa6\x17\xaf\xaf\xdc/71\xba\xcdF\xe6\xdbj\xe0|\xd9\xbf\x9d\xed\xec_\xeft\xe72\xdc\xbc\xebY\x8f\xef\xfcb\x1c{\x97\x8f\xb5\xe3\xfe\xd7\xdf\xa7\x9b\xd9\x87\xfe\xf6\xddv:\xfa\xcd\\m\xbf~\xb9\x89\xbf\xfd~\xbb\xfc\xea\x7f\x0e\xec/\xfd\xf1\xf5\xfa\xe7\xe1f\x7f\xbd\xb4\xbf\xdc\x8e\xaf\xb1c|\xfcxq\xe3\\\xdd`\xfb\x0d\xbeF\xc1[\xfc\xc9\x8c\xde\x7f~s3\xb0{3\xeb\xdb\xab\xeb\x97\xb9\x8f^f\xfd\xf7\"\xfd\xf6\xfb\xdd\xaa\x19#\x96\xe3\xeb\xb2\xee\xf7\xbe\xf5\xf8\xde\xcf\xc7\xe0M\xd6\xe7\xf31\xf9\xd7\xbb\xf8\xb7\x0fo\xab\xb9\xe2\xeb\xc7\xcf\xd3\xe5mo\xbc\xff\xf6aj\xbc\xbb\xff\x9a~}\xbc\xda\xcd>L\xcd\xf7\x1f\xfa\xbb\x9b\x8f\xcb\xc7\xd9\xfd\xa7\xa4\xec'\x9b\xd9\xe5\xc3f\xf6q\x9a\xce.\xaf\x06\xb3\x8f\xd3\xc1\xec\x9e\x18c_]g\xe3~\xed_\x8d<\x99/\xea^\xad\x1b\xd35\xdd\xbde\xce\xf6\xd6\xc6\xf1\x9d\xcd\xec\xe3\x83\xf5\xfe\xc3h;\xf3F\xfb\x99gd\xf4\xa9cf}\xf1u\xff\xdd\x17\xeb\xf1z\xdf\xf0\xbd{\xf3\xf9\xf1\xab\xf96r~\xbd\x8b\xe6\xbd\xfe2\x1b\xbf\xdf\xfb\xaf\xbd\xb9\xf9Y\xff\xed\xc351Nf\xe3\x00Q\xa7\xcc\x1e\xfb\xff\xc0\xb1\xf9\xf7\xe9\xe0\xd6|\x8b\xbf\xfe~\xb7q\xf0\xddf\xde\xdb\x12\xf3\xe2E87\xef6No\xb5q^]\\\xde\xee\xa7\xfb\xd9\xe5\x95q\xfdju\xf3\xf5\xcbM4\x0f\xb2\xb2eT\xf0\xb9\xb8\xf9\xf81z;\x0fn\xf4\xaf_\xac\xfbo\x9f\xf0\xd5o\x1f\xdef\xfc\xd7\xf6\x17\xfc\xf0\xfe\xe1z7\xbb\xbf\xd6\xdf\x7ft\x1eo\xee\xddW\xb3\xc7\xab\xdd\xdd\xc7o\xaff\x0fo/\xef>^\xeb\xb3\xcb\xe5nv9\xdd\xcf>:;\x82\xdf\xd5\xbcwc\xcc\xbf|^\xbbW\x0d\xbfoo(~z+\xbf|\xee\xac\xe7\x13\xec\xf8\xb8\xf7\xed\xcb\xdd\x1b\xc7\x1f\xa7\xd7\xbf\x16\xba|\xef\x8b\xe7\x85\xdb\xfb\xab\xfd\xec\xfe\xd6\xbay\xbc\xea\xdd\xe8\xd7\x8f\xf9\xbc\xf0p\xbd\xbf}\xb8y=\xbb\xbf\xdd\xbe\xbf\xbc\xda\xce.\xafw7\x8fW^\xc3O<o5\xfc\xae[\xf9\xbd{l\xc6R\xc6'\x7f\xbe\xbe\xdcnr\xbf\xc4o\xaf\xee\x8a1\x97\x8c\x85\xb2r2\xc6\xc2s?\x93\xe3\xda\xfb\xedq\xf8r\xb8\x9c\xbe/\xe7\xaa\xe9\xb7<v\x9d^\xbc\x1c'\xd3\xd5t:\x7f\xb3\n\xa3_?\xe0\x8b\xb7\xde\xb7\x8b[o\xb4y\xa7\xbf\xfd\xf5\xb7\xc7\xfe\xcf\xbf\xe9\xee\xafw'\xfe\x9d\xde\xe9\xd1?>\xde\xfa7\x97\xa3\xf0\x1f\x97\xe3_\x7f{\xfc\xf4\xb2\x8d\xa6\xfd\xef\xe2\xe5v:\xbd{5\x9d^O\xa7\xcb\xcb\xe9\x87\xeb\xe9tuu1\xdd]]\xbc\x1c\xddN\xbfd\xe3\xe6\xed\x14\xf8\xdf\xd7\x8b\xe9\xed\x15\xf0\xfc\xfa\xeajzu1\x9d\xce.\x98\x82\x8b\xe9\xe5\xd5\xab\xa9~u7\x9d^]^\xf0<\xef\xae?\xbe\xbe\xf8\xf4\xe5\xea\xc3\xf5\xe6\xa5=\x9dn/\xa7\xb7\xd3WW\xb7\xb3\xbb\xe9\xe5h\x1a\xbe\x0f>~6n?^\x0e\xdf\xbeMV\xbf\x99\x9b\x0f3\xf3\xb7\x97/\xbf)\xcd/\xc6@m\x829*\xbe\xcf\xe6\xd7W\xb7\x0f_\x96\xbd\xe9\xff\xc6\xf7\xff\x7f\x1d\xdf\xab\xce\x01t\x1c\x9e\x8d\xad\x8asV\xcfH\xc9y\xab\x8c!U\xe7\xad\xc7\xcf\xbf\xe2\xed\xb7\x0f\xe3\x0f\xdf~\xbf\xd9\xb8\xbf\xbf\xbd\xcf|\xe9\x9b7{\xb6\xf8Y%\xae\xbfy\xfcj\xce\x1e\xde^\x15I\x97\x99!\x1f\xbf\xdb\xd7\x1d\x0d\xbf\xaf\xad\xfc\x9e-\xbeoOn\x1c\x15\xdf\xdf]\xb6\xf2\xfbN\xf1=\x1a\xbc5\x1f\xb2\x11\xe2\x91M\x96\xe8\x9f.\x93\xd9vv\xff\xe1.\xfc\xfa\x9b\xf5\xe6\xbf\xfb\x1f~\xbb\x99\xdf\xdd\x7f\x9e]\xdd\x1a\x8bWw\x97\xcb\x9f\xbd\xe0\xe5\xe0\xe7\xb7\xc6\xf4\xed\xa7]\xb2\x9c^\xbd\x99NM\xe3b\xfav\xf6A\x7f\xf3\xb5\x18\xcf?|\xfa\xfc\xfe\xee\x1f\xd6\xab\xaf\xd7\xd7\x92\x04J\xb3\x15C\x1f\x8e\xa1\x7f\x03\x8e\xcf\xccCwO=\xe0N\"\xb8\xf4A\x04\xd7\xa3\xcf\xcd\xb8\x98\xfe\x95\xdeZ\xae6\xe6\xe8\x87\xfc\x01\x9dE\x18\xfb\xf4F\xacA\xff\xda\xa3\x7f5\xe9_\xfb\xf4\xaf\x16\xfd\xeb\x80\xfe\x95?\x0b\xb4J}\xba\x15\xf9Nu\xb1\x89\x83|\xdb\xc3\xff\x12\x95\x96\xdbT\xa2\xe2\xc8N\x92m\x18\xbbB@\x8a\xc4\xbcS\xb4K\x85\x85\xeb\x98!,\xb64\xe9G\x1e\xbd\xc7c{\xf4.UH7\x9a>'\x101\xe7\x94\xca\xf3Q\xd4\xb3|\xd7\x93~BKPmK\xd2\x0fW\xf4\xaf\xb4-\xd6\xf8\x94\x0dH\xba7\xd8I\x84\x9cT\xcb\xf7\xd8\x0e\xe2\xf3%b\"M3\x06\xbbq\xb5\x9b\\\x9d0\xb2\x06\xdd\x9e\xf5BF5\xde\x19\x03\x96\xca\x18\x0e\xbb\xc3\xa1\x94\xac\xbf3Y\xaa\xa1\xbc\"s\xd7\xe7\xea1\xcd\xaeiJ\xa9\x06<\xd5`\xd0\x1d\xb4\xc8\xc6\xb7\xc8\xd2\xa5$\xa3\x9d\xc5U\xd3\xeb\xca\x1bd\xedF\\5\x03y5C\xbe\x9a\xa1\xd1\xed\xf7Z\xea\x19r\xf5\xf4\xe5\xf5\x18;\x83#a\xcf,2$\xc5\xc9\xb5C\xedq\xf6< \xf1:E\x934\x8c\xce\xf5I\\zd\xc9M\x9f`\xb4\xc8~'\xce\x0eT\xe7k\xb2\x9f\x1f5/p\xd1.\xfb\xe5\xdf\xff\xe5#\xd7\xb3;\x89\x13#\x14t\xec\xc0\xed\xfc\xe8{Ay\xea\xc0\xd4\x91\xff\xd3A,W\x90<\xa17d\xd4'u\x08\x80P\xadO\x00\x84\xed\xdd\x02\xaaM\xa9g\x00\x84*\x9d\x03\xaa\xaf\xbd\x7f@\x95)t\x11\xa8\xb2\xf6^\x02\xe9Q\xa5\xa3@\xb5\xb5\xf7\x15\x88J\xa9\xbb\xe4\x84\xcf\xdfc\x14\xbaL\xf9\xb0>\xbd3h\xe9G\xfeS\xba\x91\x7fb/\xe2\xe8\x14;\x11G\xa7\xd0\x87\xf8\xba\xd4\xba\x10G\xa7\xd4\x83\xf8\xda\x14:\x10_\x95J\xff\xe1\xabR\xe8>\xbc\x06\x95z\x0f_\x97B\xe7\xe1\x89\xd4\xfa\x8e\xff\xe7w\x9d\xb6^\x82\x9f\xd2K\xf0\x89\xbd\x84\xa3S\xec%\x1c\x9dB/\xe1\xebR\xeb%\x1c\x9dR/\xe1kS\xe8%|U*\xbd\x84\xafJ\xa1\x97\xf0\x1aT\xea%|]\n\xbd\x84'R\xeb%\xf8\xbb\xf4\x12\xb2^\xcf_\x1e\xe8c\xa0\xb4XN\xb8A1y\xce>?W\x9d?\xfd\xbf\x9e\x1f\x85qj\x07)K\x12\xa4\xb6\x17\x00D\xf9s\x82\xac}\xa6;\xf0\xc2d\xd3\xee)\xf2\xc0t\xacH\n2)\xcc\xbe\x85\xa0\xfeirBd\xc7\x89)\x94\x08\x9f&\x11D\xc6IDQ\xce\x97\x9a\x83\x82\x94v\x9d\"\x19t\x1e\x84\xe5O\x13\xa2\xac\xf6sn\x90\x98/\xb54\x8c\x8e\xe6\x93\x86\x11\xc7'\xef4Gs\xe2;\xc5\xbc\xea\xc7G\xf3*\xc88nY\xe7=\x9a\xd7\xf1\x8b\xab\xda*L_P\xaaN`\x98SX ms\n3\x89yNa'\xb1\xd0)\xec\xda\x82\x12\xd5\x11\xa51\xdd\xf1N'\xb2\xdc\xf1\x9c\xc4\x86;\x9e\x97\xccn\xc7s\x93\x99\xedxnmV\x93\x1a\x08\x1f]\x9d\xc8@\xc7s\x12\x1b\xe8x^2\x03\x1d\xcfMf\xa0\xe3\xb91QL\xb7<\xfe\xce\x1f\x83\x07a\x1aqL\x1389O\x94\xc2\xe4zMt\xfc\x18\\\xf1\x08\x92\x13\x84\x05\xa9\x14\xe4%\xe9\xda|[uD\xaa\x98\xfb\xa7\xb4\x03 Ri\x86\xaf\xdc\n\x89\xc0\xf8\x14\x81\x01\"\x15\x811)0\xed\xfb6}\xcf-g9)\x1f\x95\xd18s\xbb\xa7;O+\x9alt\x00\xe8\xb2\xc7\"\xda\xfa^]1\x1e\x00\xd4E\x81\x88~N\xdf_\x86\x18\x94%\"\x0e\xb8\xe2\x90wz\x80>\x7f.\xa2\x0e\x80{\x81\x94\xba\x8e\xef\x8bs;\x9f\xd2\x8f7\x03Av\x8a%\x08\xf2S\x8dA\xb08\xdd\x1e\x04\x93\xd3L\xc2\xa9\x0f\xb2\x8a\x82Y\x14\x86\x9b\xb9\x9d\xcd\xe3'\x98\xca\x7f\x92\xa5\xfc'\x1b\xca\x7f\x06;\xf9O4\x93\xffT+\xc1\x06\xc1'\x19\x04?\xc9 \xf8\xc9\x06\xc1\xcf`\x90'\x0ee\xac\xe6@\x83\xd04Zq\xd5\xaf\xa2\x13\xbc\xe3 \xc3\x05\xc8\x8eA\xb0a\x18\x1c\xd8\xb5\xe3\x07m\x19\xdb{\x06k\x9a&\x87\xf5=\x17\x82Z\x96\xc5A\x01\xd8p8\xe4`\x89\x877\xcd\x85\xef\x128\x1e\x8f9 .\x8c\x0d\xc1m\xdb\xe6%\x0d\xc3\x00\x92\xc1q\x1c\x01k\x00\x8c\x10\x82u\x9b\xdf\xd2d\xc0\x8b~\xf6\x87\xc3\x83P\xf6&g\x85\xd3\xc6:\x0d]%\xd8\xfeQ?\xd3_\x9ce\xb1\xf8Yw\xfc\x93\x80p\xd4B8\x12\x11\x0e[\x08\x87\"\xc2A\x0b\xe1@Dh\xb5\x10Z\"\xc2~\x0ba_Dh\xb6\x10\x9a\"\xc2^\x0baODh\xb4\x10\x1a\"B\xdd\x92\x13\xeaB\xed\xe8\xbd6\xd2\x9e\x98\xd6h%6 \xea|\x8c\xe1\x9c6^\xces\xda3\x1dt\xd8\x82\x88uX\x92\x08p\xd6\x82\x88uV\x92\x08p\xd4\x82\x88uT\x92\x08p\xd2\x82\x88uR\x92H\xa8\x08\xd6AI\"\xc09\x0b\"\xd69I\"\xc01\x0b\"\xd61I\"\xc0)\x0b\"\xd6)I\"\xc0!\x0b\"\xd6!I\"\xc8\x19K*\xd6\x9f(2\xb1+\xf1\x8eH\x11\x82N\x98O`1r\xd9\xc1{\xa8\xf7u~\x9c\xe5\x81\x8bE\xdf0\x07\x82Y\x01\x82\x0f{\x16?\x89\x84\xb1\x1d,\xf9\x81~`\x02\xf3\xf32\xc4<\xd7\xf9\x10@\xee\x11\xc6\xe1\x96\xc6\xf2\xaf\x0e\xa8\xa5\x85\xe0\x7f]\xcc\x17\x86\xcdO\xa8\xd1:\x8e0+\xb0\x85z\x8e\xcdO\xe6\x05w\x90\xc2\xee\x0f\xccE\x0f6J\xe4\x05l\x04\xe2Z\xba>\xe2\xad\xb2\nS\x08\x9d\x99f\xce\xcf\xa9 r\xa4\x0b\xa7v\x10o\x9b.\x1f\x8e\x94\xc1\x10B\x01\x837\xcc\xe1\xd0\xe2\x9b B\xc7\xf6x\xc8\x0b]E\x19<\xc1\x18\xa1\xb9\xc3\xeb$\xb07l@\xa2\xeb\xc6\xbc\xcf\xb3\xce\xa5\x9e\xe35k\x1b]\xef\xf7\xc7|\x08\x03 Mk\x88\\\x91W\x01\xf8\xf1\xc0q\x80 &\xc7\xa3\x04$q\\\x04\x91l\xedd\x85\\\x88`1X,\x16\xbc\xf4%\x01\xa4H4Z\xb8\x0b\xde{K\n\xb8s,\x16\x0e\x9a\x8bH\xa0\xde\xef.\\\xbe\x15d:\x91\"\x10f\x88\xe6\x9aV\xbe\xea\x84&\x80\xde\x7f\xd2\x9d\xc7\xf5\xd0\x1d\xdb\xae\xb7N\xce\xd9\xa1\"6\x18@\xd7\xe8Y1b\xd3\xadq\x8f\x85\x81(\x93EA\xa0>\x032\x00\x8cf\xe8\xac\xe4@R9\xd6\"\x0fc\x067\x1e\x8f\xc7\xc0\xea\xaf\xdew+\xc0y\x92<[iUz!\xd7\x90\xc5:P\xa41\xad\xd8U,\xe0UV\x1bbU\x96\xb5q+\xf7\x16[\xe4\x82*\xe2y\x15\xdb\x81\xa2\x96\xc8\x05kO\xb6\x1cX\xe7\"\xd3Q\"\xff\xe21\"\x17\x03\x90\xb0\x97\x01@\xd0\xd1x\x9c\xc8\xd7\x00\xa4\xc8\xddx\xa8\xdc\xe3\x98\x8c\xdfS\x9c\x8eO\xdd=\xd9\xefT\xa4Sw=\x86\xdb1\xde\xa7\xe0~*\xb9\xbeX'\x12oB\x97d!B\x8f\xe4\x80\x02\x87\xe4p\xb0?\xb20\xa1;r@\xa17\xb2\xc8\x16g|\xb6\x01\x90\xcbN>\xdd\x15\xdbe;\xc2\x13\xfd\xef\xe3\x88\x02\x9fc'!\xc0\xe7X\x88\xd0\xe78\xa0\xc0\xe78\x1c\xecs,L\xe8s\x1cP\xe8s\xc7M\xb9,\xbc6oc \xa2\xa0<\x9e\x06\xfb\x1c\x9b\x80}\xba\xcf\xe1\xe7\xf49|\xb2\xcf\xd1\xfc4\xadx d\xc5\xaeH\xf5\x02/\xe5-\x82\xf8,\xe4d\xa0\xf93\x0eZ\xdeF&\x91\xc0&f\xb6\x84\x08\x03D\xe3\xf2w\xd4\xb5\x0f\xd1\x07\xb8!\xdcn\x8f\xb4-<Z\xd2\x1cx\x1f\x0el\x11\xb8\xe7\xf4\\\x13O\xddT\xff\x98\x96\xb2`YC\xa1M,\xb8\x9d\xc0\xa6\xcd \xc3Z\xdd\"|L\x8bX\xb0\xacE\xd0.\x10\xdc\"`\xd7\x83\xed4\xdbz\xc1P\xed\x830\xe5\x06]\x0e\x8f\xbf\xdb\x1e\x83\x02A&\x03\x820}\x1a\x03\x0c\xbb[\x8b\x86\xf4xH\xaa\xe9\xe4\x98\x02\xb7,n@\xe4\x0e\x16\x0b\x9b70j\x97\x8a\xc5\xe1\x06G\xecE\x9d\xb0>\xd8\x92a\xb5\xc8(\x1cDd\x17\x1e\x08\x9b\x86\xc7\x81\xd6\xe1`\xa0\x818\x14l#&\xee\x15\x9a\x89\xdb\xbe\x17Z\x8a\x0f\xf5\x85\xc6b\xf7\xe2\xebm\xc0v\x83\xa9\x0cl[\"\x1a\x15\x1a\xd1W\xb4!\x8b\x13\x98\x90\x85\xc1\x16\xf4U\x0c\xe8+\xd9\xcfW3\x9f\xafj=68\x16\x1b\xcf?\xc1v\x023\xe1V3aE3\xb18\x81\x99X\x18l&\xacb&\xacd&\xacf&\xacj&6\x9e\x14\x9b \xc3f\xa2\x80\xc9\xcav\xc3\xadf\xd0\xd7\xba\xf3\x87\xe7zG\xef\xf4\xa3]\xa7\x17\xed:\xf4\xa6\xcbD \x05\xd6\xd4\x13\xd54R\xaa F\x815\x99PM\xbd\x92\xbe\xbd]r$Xc_Vc&\xb9\xaeP\x1f\x84\x03k\xb3\xa0\xda\xfa\xa5\xc4m\xb5\xc9p\n\x83\xf0\x01t\xa2lT\xff\xd3\xfcHR\xd9\xf3\xbb\x92\xa0\xb2\xef\xebM-\x95\xb6\x99\xf8x\x87\x12T\xf8,>\xa5\xe0T\n3{\xedi\xfe\x9f\xe8h\xc2\xba\xbe\x83\x9f\x81u}g7\x93\xd6\xd9f\xf4\x13\xbc\x0c\xac\xefOp2\x99?\xe1?\xd1\x9f\x84u}\x07\x7f\x02\xeb\xfa\xce\xfe$\xad\xb3\xcd\xbe'\xf8\x13X\xdf\xf3\xf8\x13Ua\x14\xa3\xfa\x0b\x1e\xda.\xff\xb4E\xfdq.m_~\x08\xa8\xf9\\W\xe2\xc4!\xa6?%\xd2\xcdb@=\xff\xe6\x11\x13\xb0\x15Q\x9f~\x80S\x89E\xa4\xa7W\x9fRb\x8a\xf3\xf0N?\x14\xe9I\xbe>#\xaf\x8f\x0fa\x8b*\x8d\xb2J \xc4-j5\xaaZyD^\xb1QT\xcc\x97fu\xf7\xf2\xba\xf9\xc8\xb8\xa8\xbbW\xd6\x0dD\xceE\xdd\xbd\xaan\x1e\x91\xd7\xdd+\xea\xe6K\xb3\xba\xcb\x86k\xa2\x96\xd7M\x07\x10e\xfdM\xe3\x01L.A\xd5|\xa0<\x97\xa1P\x80&\xd2@\xad\x02\x00Q\xc9P+\x01\xc0\x142\x94j\x00\xca\xab{\xd4\x9a\xb6\xf00>HoS+\xcc\xd0\x07\xde\x99\xb3\x98\x01\xf0\xe7\xc2'\xb3B\xc8-Ko\xcf\x8a\xa5\x0e_\xa4 \x9f\xcf\x1d\xbb\xaa[\xe4\x99u\xf5B\xe7o$\x10\xfb?!\x84\xc0\xc9+9D^Z\xcb!\xec\x08\x8d\x1c\xe2\xbe@\xc8!r\xf8J\x10\x89\xcf75\xc9\xdc\x9e\xa8K\xec\xf9u\xb3\x84\xce_\xcb#\xf6\x7fB\x1eI\x17 \xe5\x11\xf6\x82F\x9e\xb6\x8eP;\xad\xb0/(t\x06\x85p\xb5\xe8!\xbe\xa4\x83\xf8\xd2\xfe\xe1\xb7t\x0f_\xda;|y\xe7\xf0\xdb\xfa\x86\xdf\xde5\xfc\xb6\x9e\xe1\xcb;\x86\xdf\xd6/\xfc\xf6n\xe1\xb7\xf6\n\xbf\xb5S\xf8*}\xc2W\xe8\x12~[\x8f\xf0[;\x84\xaf\xd2\x1f|\x85\xee\xe0\xab\xf6\x06\xffI\x9dA\xe8\xf7X\xe2\xf7X\xea\xf7\xb8\xc5\xef\xb1\xd4\xef\xb1\xdc\xefq\x9b\xdf\xe3v\xbf\xc7m~\x8f\xe5~\x8f\xdb\xfc\x1e\xb7\xfb=n\xf5{\xdc\xea\xf7X\xc5\xef\xb1\x82\xdf\xe36\xbf\xc7\xad~\x8fU\xfc\x1e+\xf8=V\xf5\xfb\xb6\x80\x88&v\x16\xe7\xf6\x82}5j\xf6t\x8e\x16a\x8c\x0e\xe5\xc7{\xcf\xff\xd2\xf9\x0b\xfd\xe5A\x98\xcd\xc1\xc1\xc8\x8e\xcf\xe7a\xbab\x01\x87\xbf=\x86\x99o1\xcfqI\x92I\xc7\x14U\xdc\xf2\x960esqMAYt\xd2N\xb9\x93O\xa3b\x91\x9aRP\xaa\xa6\x18\x12\xac)U\xd8 V\x9d\x8e\x9dl\xa8\x93\x08\xecK\xe5\xf5e\xe2\xfa\xea\xd2\xc2\x82\xc9\x8c[\x17\xc2\x82a\x99`\x98\x12\x8c*u\x03\xd9\xe7\xfc<\xe6S\x81L\xf1\\\xf2A\xc2\xae\xeb\xcd\xdb?4\xd8u\xbd\x94E\x01\xfd\xc5m@`\xa9C\x17k\x0eb\x17\xddn\xaa\xc5\xe1\x96\x81\xc5\xe1\x16Bi\xcb8\\G<\xb6x\xceQ8!^\xfb\x01+A\xfeP\x80\x05+ \x8b8:m\xe1\xed\x90{(\x90\xd8\xde\x87\xeb\xf4<\x7fD\xbc\xfeJ\xa1\x7f\x1c\x18\xdbg=Lf~\xb2\x1c\xf6\x00\x12\x01;\x01\xcfC\xe0\x07\x00\x1046\x89\x83\xbd\x81C\x08\x1d\x82GJ}\x02\x84K\xdd\x02\x10\xa5\xdd3DDR\xe7\xc8\xd73R\xffPp\x10\x85\x01\xd4\xcd\x06:\xa9\xd3\xf8m>\xe3\xb7\xb9\x0c\xcbA\xe41\x1c\x0ev\x18\xbf\xcd_|Uwa\x81ro\x01\xd0rg\xe1\xe4P\xf0\x15\x98F\xee*\xfe\x93<\x05v\n,w\n\xdc\xe6\x14\xb8\xcd)X\x0e\"\xa7\xe0p\xb0S\xe06\xa7\xc0\xaaN\xc1\x02\xe5N\x01\xa0\xe5N\xc1\xc9\xa1\xe0\x140\x8d\xdc)p\x9bSPt\x0b\x8cvu%D\xee\xbd\x0e{5?\xd12\x10\xf9,\xfb\x9dfS\x9a\x08\xe4V\x99\x99aJ\x90\x90E\xc4c^R\xcd^\xa7!\xb5E\x90==7&\x95\x94\xe7F\xc7\xe8\xe4\xd9|\xfa\xb7\xc6\xeb\xf5\xfc\xe7\xea\x85\xa9@\x15\xf9\xe1S\xae\n\xbd\xa9\"\x7f\xe7A\xfd\x13\xc0\xa1\x8c$H\x1ea\xece\xeb\x89\xea\x0b\xe3\x13\xb2\xcc\xf5\xe2\xe2\x95\xff\xe5\x17\xcb\xeb\x9a\x88\x92\x82\xe5\x04|\nH\x90\xc5H@\xf5\xab0\xf6\x1e\xc3 =A\x808\xdc\xb2\xb5s\xfd#/\xdf\xc6vt\xa8\x19d\xbf\x9dg\xffL\xe8_A\xbd\x03\xa4\xc5\xc3 \xfb@P\xaf\x16\xa3\x0d\x8a\x13\x04\xd4_\x15M\xe0\xc7B+6,\x8f\xb6fU\xa3\xd0\x9c\xb4L\xa2R\xd8\xbc2\xb9Z\xcd,\x91\x8c`\x0d\xd8\x1b\x96\xc9K\x91\x9fhIj\xc7)%N\xf1\x19\xfd\xfcyS\x15\xf90\xff9\xff\xbcy\x92\x8f)\x05\x0f\x889\n\\\x805\n\\\x96q\xf6\x88c\x8b\x02\x17bZ\xbe\xe8\x93\xe7[\x14\xb0\xac\xcb\xa7$\xf7\xe2\x11\xc4{n'(\x1b\xc8\x00\xeeU\x11\xcb\xbf~N\xd6P=\x845\x1e\xa3\xd4Y\x81:\xcfKx\xad\x17\x8f\xc9\n\xcag4\xff\x04\xe1Ee\xd0\x8aE\x06\x07\xac\x97A\x85\xc6\xcb\xf9\xe4\xb6\x03\xb84\xa6jxp\x96\xca9T\x86\x02\x98PF\xc9\xf9@6\xc9\xb94&\x01\xf80\xca\xcf9\xc1\xba/uS\xaa\x1e\xd4\x0e\xa9\xe5\x9c\x13\xa8\xe4\xfbu\x92z\x8b=\xd0q\"\xdby`\xfb\x0d\xf1\xac\"\xac\xb2T\"\xedW8\xb6\xf3\xe4\xac\xa8\xbeS?\x01YsF\xa9Q|\x07\xca9\xb1\xfd\x87|\xc8\xd6\x00\x99\xab\xc2\xccQ\xbaE(\xe0+(\x01L\x0d\xd5S\xb6\x8a$\xb2\x1dT1\x83k\xb2\xf3\xd74\x1eh~\xae\x97\xa4\xb17_\xa7H\xc0\xb2\xa0\xa29\x96\x08\xb6\xf7\xe4A\x0da\xc3\xc29\xda,X1\xa3\xbaP\xc3\xaa\xe9Ar{Ul\xd8~\xd4p\xa2\xba\x91\xcc4\x15\xab\xda4<\xaf\xca\x0c43\x89\x11*\x9e\xac\x11\x1a\x96\x84% \xaer;0=\x95\xb4\x04\xd9Qk\x96P_-\x0e\xdf\xea\xccl\xebz\x81\x8d\x8bh\x9c\x88A\xb5\x1c|\xaeO\xca\xffB\x9c\x0c \xa7\x1e\xcb\xc9(9\x19\x10\xa7\x9e\x84\x93\xc9r\xea\x95\x9cz\x10'S\xc2\xa9\xcfr2KN&\xc4\xa9/\xe1d\xb1\x9c\xfa%\xa7>\xc4\xc9\x92p\x1a\xb0\x9c\xac\x92\x93\x05q\x1aH8\x0dYN\x83\x92\xd3\x00\xe24\x94p\x1a\xb1\x9c\x86%\xa7!\xc4i$\xe14f9\x8dJN#\x88\x13\xb6\x93T\xe6\x9cz\xf6?\x96\xe38\xfb\xdf\x84\xf8\x19\x085\x97Y\xd4\xa7\xcb\xd6C\xe5\xbbm7\xe8\\\x9f\xd4$\xe0\xca*\xe7e\xc8\x96o\x0d/\x83\xe0e\x00\xbc\x92U\xec\x05\x0f\x99d\x15i\x80\x966)F\x81\x00\x05)\x89\x0d\x80\xd8\xa0\x88\x0d\x85\\\xdb\x81\xe7O\xe4\xfd\x88\xc6\x9e\xbe\xa4\x86\x18>\xf7\xaaZc\x0e\x0c/\xbe\xcb\xc2\x1a\xac\xe5\xf8\xb55\xcbFmA\xf6\x9c\xcbk\x81\x04\xadK\xafgZa\xe7\xd5W<\x8e^d\xf3\xd4\xa7\xad\xb3a)\x9e\xba\xd4>\xcd\xb8\x7f\xcaj\xfbT\xab\x7f\xbf\x057+\xd1\xf3\xae\xb9a\xee\xcf\xb2\xec\x86Y?\xe3\xca\x1b\xae\xe0\xb9\x17\xdf\"\xfd?\xd7\xfa\x9b\xeabOY\x82\x8b\x18\x1d\xbb\n\x17\xf19a!.bu\xdaZ\\\xac\xa9\x13\x96\xe3\xacY\x9f\x7fE\x0e\xd6\xf0|\x8br\x90\xfd3\xaf\xcb\xc1:\xbe\xd3\xd2\x9c\xb2\xee3\xad\xce)\x9eO^\xa0\x0b\xb8\x9d\xb6F\x170;u\x99.`\xf7\xc4\x95\xba\x80\xeb\xd3\x17\xebB\xc3\x1c\xbb^\xe7\xe7\xeb',\xd9\xe5\xcc\x8e\\\xb5\xcb\x99\x1d\xb9p\x973;r\xed.gv\xe4\xf2]\xce\xec\xc8\x15\xbc\x9c\xd9\x91\x8bx9\xb3#\xd7\xf1rf\xc7/\xe5[\xfc\xf6\x89\xaby\x96\xfb\xe2i\x0bz\x90\xddS\xd6\xf4T\xf7?aY\x0f\xd3\xb3+{\x85\xa5\xbd\xc21\x9a\x9c\xa7\xff\xcc\xcb}\x9e\xdf\xb3\xaf\xf6\xfd?c\xb1\x0fTr\xc2Z\xdf?a5\xf8\xacK}P\x80\xd65\xdfs\xad\xf4\xfd\xa7,\xf4Y\xe2\x13\xd7\xf9\x90\x0cO^\xe6\x9fb\xd7?g\x95\x7f\x9a\xc1\xbf\xe3\"\xdf\xff\x9ek|\x88\xf9\xf3,\xf1!\xce\xcf\xb9\xc2\x87\xf8?\xfb\x02\x1f\xd6\xfd\xb3\xad\xef\xfdgZ\xde\xc3|\x8e^\xdd\xc3lNY\xdc\xc3\x9cN\\\xdb\x8b\xb4t\xca\xd2\xde\xff\xde+{\xa0\x82g\\\xd8\x03\xdc\x9f{]\x0fT\xf1\xbd\x96\xf5\xfe\xf3\xaf\xea\xfd\xe7\\\xd4\x83\xccN\\\xd3\x83\xbcN^\xd2\x83\xdc\x9e\xba\xa2\x07\x99>\xc3\x82^`\x93\xa3\xd7\xf3\xec\xcc\xfc\x94\xe5\xbc\x8c\xd7\xb1\xaby\x19\xafc\x17\xf32^\xc7\xae\xe5e\xbc\x8e]\xca\xcbx\x1d\xbb\x92\x97\xf1:v!/\xe3u\xec:^\xc6\xeb\x84e\xbc\xd4]\x9f\xba\x8a\x97\xae\xae\x8e^\xc4K\x17\x84'\xac\xe1\xfd\xa7-\xe1!\xf2\xe3V\xf0\xa2\xc5:~\xe6\xc5:\xcf\xef\xd9\x17\xeb\xf8\xcfX\xac\x03\x95\x9c\xb0X\xc7',\xea\x9eu\xb1\x0e\n\xd0\xbav{\xae\xc5:~\xcab\x9d%>q\xb1\x0e\xc9\xf0\xe4\xc5\xfa)v\xfds\x16\xeb\xa7\x19\xfc;.\xd6\xf1\xf7\\\xacC\xcc\x9fg\xb1\x0eq~\xce\xc5:\xc4\xff\xd9\x17\xeb\xb0\xee\x9fm\xb1\x8e\x9fi\xb1\x0e\xf39z\xb1\x0e\xb39e\xb1\x0es:q\xb1.\xd2\xd2)\x8bu\xfc\xbd\x17\xeb@\x05\xcf\xb8X\x07\xb8?\xf7b\x1d\xa8\xe2{-\xd6\xf1\xf3/\xd6\xf1s.\xd6Af'.\xd6A^'/\xd6AnO]\xac\x83L\x9fa\xb1.\xb0\xc9\xd1\x8buvf~\xcab]\xc6\xeb\xd8\xc5\xba\x8c\xd7\xb1\x8bu\x19\xafc\x17\xeb2^\xc7.\xd6e\xbc\x8e]\xac\xcbx\x1d\xbbX\x97\xf1:v\xb1.\xe3u\xc2b]\xea\xaeO]\xacKWWG/\xd6\xa5\x0b\xc2\x13\x16\xeb\xf8i\x8bu\x88\x9c[\xac3\xf4\x87\x05\x0e\xed4\x7fG\xce\xe4\x0fz-\xcc@\xe3\x12\x9a\xbf1\xa7\x05\x1b\x94\xd8\x93\xde\x82\xb4\xc8\xdf\x82\xa4.W\x83V\x12\xad\x81+\xbcYH\xfd\xfc\x81\xe6\x1f#\xb2\x7f\x94\xc4\xbe\xba\xc0\xb0l\xc7\x98\xb9\x06\xab\xc9\x86)\xd9\xa8\xd2\xc4\x0e\x12-A\xb1\xb78,\xc2 \xd5\x16\xb6\xef\xe1\xfd\xb9fG\x11FZ\xb2OR\xe4\x9f]`/x\x98\xd9\xce\x87\xfc\xd7\xd7a\x90\x9e\xd9\x1b\x14xq'@\xbb\xea\xe7\xb3\x15\xc2\x1b\x94-r\x9b\x9f:\x01Z\xa3\xb3\xf5|\x1d\xa4\xeb\xb38\x9c\x87ix\x16d\xff$h\x19\xa2\xce\xda;\xb3c\xcf\xc6g\x8d\x14\x8ct\x9c`K\x14\xc6K\xcf>\x83\xc0\xb9t\x9a\xa0E\xc2*J*\x9e\x80\xc7:\xa1\x8b\xa8\xf7\xa0e\x0f(\xa2Wa\x90\x84\xd8N\xce\xfc0\xb0\x9d0\xfbO\x98G\x13,\xa3u\xec\xa1\x98!\xcd\x9fun2\x95\x96\x00\x11}\xad`\x8a\x03\xa3\xf6\xc6\x1e\xa2\xb6\x17\x86\xa3x\x00v\x15R\xa7+\x84\xed\x84&/\x9e\x9dI\xccT\x16\xa9Z5\xf5|D\xd7\x91?\x81\xa0\xf3\xd0\x0d\x03\x8f\xc2^\xe4\x8f:\xb3\x8f\x10\xde\xb1\xb1\x97\xa4!m\x85\xe2\x99\x80bi\xc7\xb6\x1f\x06.-|\xf9\x10\x14\xc9N\x1eP\xbc\xf10\xa6\xfd\x84x\x0e\x91\x95\x8d(>\xa1\xe5\xa56\xf6\x98\x0f_/\x12\xad\xc8\xc3\x91\xc0\xe2\x89\xc2`I\x8f=\xf9;\xafT\xebc\xb0e\x95\nu*\x0c\xd0^6\x88\xaa\xca\xe1\x1f-\x06X#V\xaf\x11\xd25\x8d%M\xb2-r\xc8}\xee\x93\xefT1\xf7E\xf8\xc5\xd6\xa0\x00\x06\x0f\xe8Q\x80\x1e\x0f0)\x00\xf7y\xfa\xc5\xb6/\x17q\xb1\xb5(\x80\xc5\x03\x06\x14`\xc0\x03\x86m\xcd\x1cQ\x80\x11\x0f\x18S\x80\xb1~\xfc\x9b\xba\x19\x8f\x15Z\x84E@Fa1\x90]X\x0cd\x1a\x16\x03Y\xa7U\xe2E\xf1\xb9\xb36\x1b\xb1\x18\xc8L\nm\x1f\xb1\x18\xc8X,&\xb3\x97\x82\xc1\x14F\x05\xba\xbf\x8b\x8d\xe8\xb7\xb5\xc3` \xa0 \xfdv\x0b\xfa\xed\x06l\x11v\x91\x7f\xed\xac\xd5|~\xbb\xf5Z\x1b=b \xa0\xed\xfc#M'\xb6R\xdb\xe0\xc7\x00@+\xe1v+\xe1v+\xe1v+\xb5\x08\xbb\xc8?v\xd6j%\xdcn\xa5\xd6F\x8f\x18\x08h%\xcc[\x89\xc2xA\xb4N\xb5\x18%\xa8\xb9\xdfnG\x11\xb2c;p\x8a/qN4?|d\x1f2&Z\xa7i\x18\x14l\xce\xcfs\xfc\"t\xd6\x89\xe6\x05\x01\xfb\x16`\xa2F\x1eZ~\x86\xed\\\x9fD\xb6\xebz\xc1\x92]\x18\xaf\x8cC\xb9\xd1\xca\xbf>y\xd5\xab\xca\xf8\xd7\x19\xaf\xcc\xaa\xac\xcf\x97\xf5\xab\xb2\x11_f\xd5\xf5\x0d\xf8B\xadW\x17\xf7\xac\x17l\xa1\xa5W\x85\x16\xfb\xa9\xe5\x956\xac)\x87<\xa5\xa1\xd7\xa4\xfcg\x9a\xf3\xcd\xe6\x1cBl;\xf3\xb0\x0d-\xddf\xc5\x15\x93\xf2\x01\xc5\xa4\x84@1-#\x0b\xc8D\xdb@R\xb2\xc0U\xf1\xce\xb9\x12\x90\xfd\xcc\x96{\xc1\n\xc5^ZA\xca_\x15\xe6\x89\x03\xe39\xd9t#q\x1e\xa2\x18\xf2\x1f\xa2\x18r!\xa2\x18\xf2\"\xb2n\xd8\x91\xc8\xea!_\"\xcaAw\"\xcaa\x8f\"E\x10;U\x86j\xf7+JX\xd0\xb5(qA\xef\xa2\x04\x86\x1d\x8c\x16Y\xecc\xbc\xd0\xb0\x9b\x11\xfc$\x9eF\xa0*gS\xf06\x85\xa8d\x95E\x132\x0f\xf4\xa5\x0e\xe8K\xfd\xcf\x97\xba\x9f\xdf\xe6}\xbe\xdc\xf9|\xb9\xef\xf9-\xae\xe7\xabx\x9e\xaf\xe2x~\x9b\xdf\xf9mn\xe7\xb7z\x9d\xaf\xe6t\xac\xbc\x02\x9f\xf3U\\\xce?\xce\xe3`\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2m\xce\x85\xe5\xce\x85\xe5\xce\x85[\x9c\x0b\xab8\x17Vq.\xdc\xe6\\\xb8\xcd\xb9p\xabsa5\xe7b\xe5\x158\x17Vq.\xcc9\x17\x05Lc\xdby@\xee\x01\xa34E\xb1\x96D\xb6\x93E^]\x83\xfb>E\x01\xd4\xd2\x8c\x19\x0b\xd7\xba\xba%\"\xf0\xd1\xd2\xe6\xd8\xf72x\xfb\xb8z\x009\xe6\xdf/:F\\\x80\xa2Mb\xa8\x92\\h\x05\xa9\x15f\x83\xba\xaac[\xc2\x11\xb46\x84\xafB\xa1\x1d\x12\x91\xf1\xb1\"s\x04\xad\"\xf3U\x14\"S\x14x\xa5%!\xf6\xdcC\xbe\x8f^u\x16\x0e\x93z)F4\xa6\xdb\xb38\x98\x13F{\x06e)\x98\xfa\x00\x8a\x94;O\xbbT\x1cL$\x18\x0f\xb4\x9e\xc9\x0fk\x89}%\x81}EyY\\\x9b\xb82\xc9\xb0\x92dXQ2\x16g\xb1^\xe5\x05\x0f\x87\x14\xedR\xcdEN\x18\xdb\xe5 Vv\xd1\x9b\xc1\xce\xb8'\xe7\xb6\x93z\x1b\x04\x14\xe4\xcb\\\xe0\xf9*\xdc\xb0k\xe4\xfc\xb9\x80\xff\xc6K\xbc\x145o\x1cMc;H\xbc\xea\\g\x18w\xba\x86\x95t\x90\x9d \xcd\x0b&\xd2R\xbe=\x85\x90\x87p\x9df*:7\xa2]\xc7\x0d\xd3\x14\xb9\x1dg\x1d\xc7(H_eLX\xba$=d\xff\x14Yn-\xddGP\x8e\xc0\xdf\x16\xab\xc1\xda\x15\x81\xd9zk\x90\xe5\\,\xe1o{D9\x1f\xc6\xf8[\x93(\xe7\x03\x19\x7f\xdb'\xca\xf9P\xc6\xdfZd\xfd|0\xe3o\x07\x04\xc0\x84$\x18\x92\x12@U\x8c\x08\xc0\x00\x92qL\x00\xc6\x90\x0c\xc5+\xd4\x1b\xd0I\x9b\xf1\x859\xf2\x85\x93\xdc\"\x0c\x042\n\x0d\x01\xedBC@\xd3\xd0\x10\xd0:\x8c,\xa0\x81h\x0cl#F\x1a\xd0L4\x06\xb6\x14\x8d\x11\x1b\x8b\xc6)\xec\xf6\xab\x8e\xdd\xa5\x15\xfdV#\xfa\xad6\xf4[M\xe8\xb7Z\xd0o5\xa0\xdfn?\xbf\xdd|~\xbb\xf5\xfcv\xe3\xf9j\xb6\xf3\x8f3\x9d\xd8J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xddJ\xb8\xddJ\xb8\xddJ\xb8\xddJX\xcdJ\x98\xb3\x12\x05\xdb\x1a\x07\x91Z\xb7\xbd\x83H\x9f[\xf3 R\xe4\xb6\x7f\x10ipk\x1d\x84\xaa\xcb<\xa1*e=`\xab\xf5\xaa\xb2\x1ePVq\xe5\xd6\xd0[\xcd\xac\xe8L\x9e\xce\xac\xda`\x9a|Y\xd5\x08\xb3\xcf\x95\xf5+\x9e}\x9e\xa7U\x95q\x0b\xf6\xad6\xa8\xca\x06|\xd9\xb0*\x1b\x02eU\xfb\xb8U\xfeV\x1bUt#\x9en\\\x95\x8d\xf9\xb2,\xe0\x10\xf5\xb7\xad\x96\xae\xbc\xd8\xad\x95\xd35\xb3\xff\xf1\xa0mX\x00\x93\xaaY\x83\xee`0\x18\x0c9d\x9e\xc7.0\xf9b\xbc}\x80?0.\x9aM\x13b/mJ!GmJ!_mJ!w%\xea\x85=\x96\x00@NKH\x06\xf9-Q\x0c\xb9nS\x0cz/Q\x0c90Q\x0c\xf90\xa1\x16\xc8\x8d\x9bb\xd0\x93\x9bb\xd0\x99\x9bb\xd0\x9f\x89b\xc8\xa5 \x9b@^\xdd\x14\xc3\x8eM\xdaD\xe0\xdb\xa4\xeaZ\xdd\x9bh\xab\xcc\xc3\x1bX\xee\xe4\n^\xae\x10\xc6\xe4\x01\x8a\xc4\xf3}\x99\xe3\xfb2\xbf\xf7en\xef\xb7x\xbd/uz_\xea\xf3\xbe\xd4\xe5}\xa9\xc7\xfbR\x87\xf7\xa5\xfe\xeeK\xdd\xdd\x97z\xbb/uv_\xea\xeb\xbe\xd4\xd5}\xa9\xa7\xfbrG\xf7[\xfd\xdc?\xc2\xcd}%/\xf7\xd5\x9d\x1c\xf6g,\xf3g,\xf3g,\xf3g,\xf3g\xdc\xe2\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xee\xcf\xb8\xd5\x9f\xf1\x11\xfe\x8c\x95\xfc\x19S\xfeL!\xc2\x0d\x8a\x178\xdcj\x1b/\xf1\xe6\x18\x1d\xaa\x07\xe7\xe5\x03\x01|\xe5\xb9.\n\x1at\xf1\xbb\x00\x9c8q\x88q\x03.~\x17\x80\xf3H\xaa\x86\xf2;\x1b5p\xc7\xc9\xac\xedZ\xa4\xde\xb1rk;\xb9\xe4;Vvm'\x97~G\xcb\xaf\xedd-\xd8\xf3-\xd8\xb7\xb4`\xcf\xb5`/o\xc1\x9ek\xc1^\xde\x82=\xd3\x82\xfdi\x01-\xebXY\xe8p\x94oQ\x04\n\xeeE\xe1[=\x8cB\xab8\x19I\xa0\xecg\x0c\x91\x92\xab14\n\xde\xc6P\xa88\x1cE\xa2\xeas\x0c\x91\x92\xdb14\n\x9e\xc7P(\xcc\xc1\xaa\x81&\xe7\x92\xfe\x91\x1e\xe9\x1f\xe7\x90\xfe1\xfe\xe8\x1f\xe9\x8e\xfe \xde\xe8\x1f\xef\x8c\xfe\xb1\xbe\xe8\x1f\xed\x8a\xfe \x9e\xe8\x1f\xef\x88\xfe\xb1~\xe8\x1f\xe9\x86*\x1e\x87\x8f\xf48|\x9c\xc7\x1d3\xc7\x92`%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dki\x02%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dsi\x02 XKR;\xf5\x9cCq\x055\xcc\xdf\x8d\x91\xb2\xb7Ob\x84\xf3;\xa2\x0d\xaazB\xe3\xecy\x12\xe2uJ\xe0\xaa'4\xae\xf8\xa8~\x0d\xca\x7fU\x18\x8e\x0f\x80\xe0\xd9\xc8\xae$;\x05\x94\x8bOA%-\xa0pE#\x14Z\xa10\xa9\x94M\xf3\x15[\xe6+7\xccWk\x97\x7f\\\xb3\xc4-\xc0\x8a-\xc0\xca-\xc0j-\xc0\\\x0b\xe8N\x92'r\xc3\xc8v\xbct\xcf\xbdu@\x1b7e\xdd1[8\"\n\xd9\xbb\xe9\xda\x90(d/\xc1k\x03\xa2\x90\xbdm\xafYD!{\xad_\xeb\x13\x85\xec\xfb\x034\x93(d_T\xa0\xf5\x88B\xf6\x8d\x08\x9aA\x14rJ\xd0\xad\xa6P\xe7$\xd2{d1{0\"\xd4\x1a\xce\xccy\xfb8L\xed\x14i}\x8b>o\xb0\x08c\xff\xbc(\xfb\xb1o\xb9h\xf9\xd3D\xf0\x1cd7\xd6\xc5\xec\xc6:\xcc\xaex\x0e\xb23L\x89x\x86)\x90\xaf,\x809\x8e$\x12\x1a#\x81\x88e\x01\xc8\xb1\xd7\x93\xc8\xd8\xeb d,\x0b`\x8eC\x89\x8c\xbd\xa1@\xc6\xb2\x00\xe4h\x1a\x12\x19MC cY\xa00\x96\x1e`\xd7\xd2\x88\x0f\x1c<\x8fwI9\x9e\xe6`R\x96\xa7\xfa\x98\x9c\xe9\x89n&ez\xaa\xa7\xc9\x99\x9e\xe8lR\xa6\xad\xfe\xa6\xe0p\n\x93w\xe3\x85\xfes;\xa1\x84\xe1\x89>(\xe1x\xb2\x0b\xcax\x9e\xea\x81\x12\x9e';\xa0\x8c\xe7\xa9\xfe'\xe1\xf9D\xf7\x93z\x1a~nO\x930<\xd1\xd3$\x1cO\xf64\x19\xcfS=M\xc2\xf3dO\x93\xf1<\xd5\xd3$<\xdb=\x8db:\xc7\xb6\xf3\x90EP\xf9y\xce\xf3x9\xb7\x7f\xd4\xcf\xb2?\xdd\xf1O\x10t\x04AG t\x08A\x87 t\x00A\x07 \xd4\x82\xa0\x16\x08\xedC\xd0>\x085!\xa8 B{\x10\xb4\x07B\x0d\x08j\x80P\xdd\x02\xa0:\xdb\xae\xed\xca+\x02\xde\x02\xbbJp\x8e}qf\xe8\xfa\x0b\xded\x05|$\x82\xb3f+\xe0C\x11\x9c5]\x01\x1f\x88\xe0\xac\xf9\n\xb8%\x82\xc3M\xed\x8b\xe0\xac\x19\x0b\xb8)\x82\xb3\xa6,\xe0=\x11\x9c5g\x017Dp\xd0\xa4%\xf6\xaf:{\x93:@v\xacQ\x10\xc3`V`\xae\x1d?h\xcb\xd8\xdeW\x08\xd3dVw\xbe\xe7R\x00\xcbb\x96ad\xe1p\xc8\xacG\x13\x0foP\\\x15s\xefB\xc3\xf95\x0b\x1ad\xdb6#A\x18\x06\x94\x08\x8e\xe3@lH\x08B\x08\xd0E\xae\xdd\n\xb2\xe8g\x7f\x00\xf5\xd7\x80\xc5\x02PV\x8c\xdc\xba\x92\xa1\xde\xd7\x19\x0cQ\xbcX\xf4\x0ds\x00IJ\x81\x86=\x8biN\x18\xdb\xc1\x92\x10c\xc0]\xe9_\x86\x98\xe00\xe7\xae\xd9\xef\x11\xc6\xe1\xb6Dd`H\n\n\xf4\xd7\xc5|a\xd8\x8cy\xa2u\x1c\xe1Z\x10\x0b\xf5\x1c\x9b\xbd\x9c\x90s\xa2qv\x7f`.z\x80\xea\"/\xa8=\xd1\xb5t}\xc4\xe8n\x15\xa6\x14&S\xe0\x9c\xb1\x10]>\xd2aW\xa0Q\xb6\xe9\x0eA\xb7G(\xa8{\x869\x1cZ=\xd6\xb3I\xc0\xd8\x1e\x0f\xfb\xb0\xdf\x11\xb01Bs\x87iW`o\xf6M'5\xe6\xfd> \xcd\x1c\xafQ\x03\xea\xf7\xc7\xec\xcb\n\x88r\xd3\x1a\"\x17\xb4)\x89\x1a\x0f\x1c\x87u\xe1\x1c\x85\x12\x1a\xe8\xb8\x88\x03n\xedd\x85\\\n\xb6\x18,\x16\x0b\x04\xc2(\x15\xa0\xd1\xc2]X \x8eq\xb9\xc5\xc2As\x10H\xf5\x10w\xe1ro'\xc3a\\_\xb1/\x80\xd5-AZkK\xad\x8e<\xe6\xb6\xf3\xb0,\xde\x91ZPH\x83\x90\x8ap\xd4B\xc8\x85$\x15\xe1\xb0\x85\x90\x0bP*\xc2A\x0b!\x17\xaeT\x84V\x0b!\x17\xbcT\x84\xfd\x16B.\x94\xa9\x08\xcd\x16B.\xb0\xa9\x08{-\x84\\\x98S\x11\x1a-\x84\xdc\x0cY\x11\xea\x96\x9c\x90\x0b\x81\xe6K\xad\x8e\x828\xca\xb6\x80\xa8&\x86\xdc\xa7-<\xaa\x89!\x17j\x0b\x96jb\xc8\x8d\xdaB\xa7\x9a\x18r\xa5\xb6@\xaa&\x86\xdc\xa9-\xac\xaa\x89!\x97j\x0b\xb2jb\xc8\xad\xdaB\xae\x9a\x18r\xad\xd6\x00\xact/\x9e\x92\x0f\xc7\xe6K\x8d\x88\xc8x\x02.8\x9b/\xb5&>\xe3\xf1\\\xa86_ju\xb4\xc6\xc3\xb9\xc0m\xbe\x14A\xb90n\xbe\xac\x824\x1e\xcc\x05u\xf3\xa5F\xc5u< \x17\xe2e\x92\xd7Q\x1e\x8f\xe7\x02\xbe\xba\n\x01\x01\x17\xfeU\xba/\x02<\x9e\x00\n\x06+\xc7\x80\xe0\xect9_\x16+\xe4\xc8\x8eQ\x90\xf2\x14D!l\xe3l\xc2\x03\xda\x01D\x98\xf3\xa5\x00\x0c\xc5\x9b\xb5\xa2D$|\xf49_je\x00\n\xe1\xf9X4s\xa3,\x1c\x85\xd0|d:_VA\x00\x87\xe7\xe3\xd4Zz\x11 \x18\xb5\xce\x97U@\nt\x02 \x86\xadk\x11RA\x11me\xb8<\xd4\xe4I\xa0\xf8v\xbe\xd4\xea\x10\x176\x1f\x1b\xedfM\x11\xa1\xf9\xd8\xb7i\x88\x88\x86\x8f\x84\x9b1&\x8b\xe0\x80A \x88\x8b\xf3\x81C\x00\x07\xa2d\xa2\xb3\xc2DP\xcc\x9cu\xd8,l\x86\xc6U>\x82\xaeZ\x91\x87\xab\x10 \x10O/Eh(\xba\xae\xdb \xa0\x81b\xed\x8a\xa6\x0e\xb7\x81\x81\x0d\x88\xbc\xb3a\x87\x08\xbe\x013\x02qxC$R2\x14\x957T\xe2\x0e\x06\xc4\xe8\x0d\x99hT\xe1#\xf6\xf9\xb2\x0e\xd79\x020r\xcf\xef\x97\x17s%t\x07\x9d,\xce\x7fn\xd6N\xec\xbb\xd7rd3\xf3\x8a\xb9\x11\x18\x8a%71\x17\xf0zn\x16sl \x14Cn\xe6.\xd0\xd5\xe4-\xe6W#(v\xdc\xcc^\x80\xe5\xacx6\xdc\xac_\x00\x8bY\\\xcc\xa8,\xa7Xq1A\x01%\xc3\x021C\nE\xb1\xe5\xe2\x86R+U\xe8 Q\\\x0d\xa1\x18r\x81\x05)\x81\x9c#\x81\xa1Xr\xa1\x07\xe1[y8\xd1\xe2\x7f\x05\x86b \x05'\x05E\x0bC\x88\x17;\xdc\x10\x1dI\x1b\xeb-]-C\x90\xecd+h\x92l\xd4\xcax$f\xcc.\x8fH\xb2a+\xe3\xa1\x981\xbbt\"\xc9\x06\xad\x8c\x07b\xc6\xec\xb2\x8a$\xb3Z\x19[b\xc6\xec\x92\x8b$\xeb\xb72\xee\x8b\x19\xb3\xcb1\x92\xcclel\x8a\x19\xb3K5\x92\xac\xd7\xca\xb8'f\xcc.\xe3H2\xa3\x95\xb1!f\xcc.\xf1\x88\xae$\xed 5\x82d\xdc\x96' Ie\x9d\xa4F\xc8\x98\xc3\x1d\xa5J%\xb41\x1f\xca\x99\xc3\x9d\xa5J5\xb41\x1f\xc8\x99\xc3\x1d\xa6JE\xb41\xb7\xe4\xcc\xe1NS\xa5*\xda\x98\xf7\xe5\xcc\xe1\x8eS\xa52\xda\x98\x9br\xe6p\xe7\xa9R\x1dm\xcc{r\xe6p\x07\xaaR!m\xcc\x0d9s\xb8\x13\x95\x81\x9e\x98w\x05 Y\xcb\xa2\xc3e[HW#\n\x8e\xd0\xd2\x00\x0c\x17\xa9\\\x8d\x94=\x174\x02\x8b\"8~$\xd3;\xd2*\xd8(\x12X\xb2\xc0\x01%\x91\x10\x92V\xc0\x84\x95\xc0\xb2\x19\x8e0\xcb\x0c\x92\x94\xb7\x94\xaf \xe4\xac\xd3MR\xceT\x84\x08,\xc9\xe0\x18\x94\xc9NIk\x00\"Q 9\x00\x07\xa5dJK\xae|&4\x05V\x89p\x94J%\xc1\x14\xda!\xadC\x10\xb6Ry\xb3\xf6~@\x06\x9c\xc0\xbaP\x18\xc7V\xa96i\x0d-\xcc\x05\x81-\x95\x98\x93\xf2'q\x82Z\x84i\xbc\x9a\x89B \xbddci\xae\x1a\x85\xb0z\xa9\x12Y/\xd9\xe0ZZ\x93 \xce^\xaa\x84\xdaK6\xda\x96\xd6$\x08\xbc\x97*\xb1\xf7\x92\x0d\xbf\xa55 \"\xf1\xa5J0\xbed\xe3qiM\x82\xd0|\xa9\x12\x9d/\xd9\x00]Z\x93 V_\xaa\x84\xebK6b\x97\xd6$\x08\xde\x97*\xf1\xfb\x92\x0d\xe1\xa55 \xa2\xf9\xa5J@\xbfdcziMpdBl\xf6\xb5\x8fA\x92\x9e\xab\x16\xef\x13\xbb\x83\n\xb5\x89{\xaf\xda\x02\x80\xd8NT\xa8M\xdc\x83\xd5V\x04\xc4\xfe\xa3Bm\xe2^\xac\xb6D 6,\x15j\x13\xf7d\xb55\x03\xb1\xc3\xa9P\x9b\xb87\xab-\"\x88-Q\x85\xda\xc4=ZmUA\xec\xa1*\xd4&\xee\xd5j\xcb\x0cb\xd3U\xa16q\xcfV[wT;l\xe2\xaajDQO\x15\x14\x01\xdbo\x05^\xca\x8c\xe3\x03\xed\xcc\x15\xd0zsN\xcc\xad\x810<\xf9\xad\xbb\x82\xa0\xd8\xbd\x133,\xcb\x19n\xfc\xc6^\x81^\x86X\"\\^\xcap\xe27\xfd\nl\xb1\xc7 \xe6U\x96\x93\xdc\xf8-AR'm\x0c)\x14-$\xb0mX\xd0\x14{\x80b\x9ee9\xc5\x0d\xdaT$%h\xe3I\xa1(\xce\xd0\xc6#\xe1\xb0\x91\xe0\x05\xbd,\x84\xe2 \x9f\xbc\xcb\x08\xaa\xcdI1\xcb\x1a\xc1\xb97\xbbsYjK\xca\x0d\xe2\xc4\xefjR:\x92\xf2#0\x0cW~\xdf\x93PQ\xbec\xd6\xa2\xc6\x02Cq\x85vF\xcbN!g\x08\xf1\x02\xb6M\xc96\xb5p$A\x14_hg\xb5 \xec\x8dd\xcd\x98\x97R\x9c\xa0]WB?s\xbc\x968x\x03ax\xf2\xdb\xb2\x05\x81\x9c\x1d\xcf \xda\xb2%U#\xe7G`h\xed\x01\x9b\xba\x04E\xb5\xaf\xdb\xc2\xb8\x86Q\xbc\xa1\x9d\xdf\x82\x88\xd8\xfc\x15s&A\xb4\xaf\x03\x9b\xc3\x14I\x8b+Q(\x8a3\xb4\x81L\xd1\xb4\x0d\xc74\x8c\x96\x1a\xd8e\xa6\x88\xa43$\x81a\xb8\xf2\xfb\xd0\xa5\x07-\x15b\x02\x12T\xf0\x05\xd2&\xc2\x08\xa18\xa6#\xe5.c,\x0e\x19\xc8#=R\xf6l\xe0\x00U\"\x8a!\xeaC@\xd2\x1a\xa8H\x02b/\n*\xca3CR\xe6Dh\x01\xb1\x16E\x19\xf5\x01#)s\xca 9\xf6\xa2\xb0\x839\x8f\xa4\xa0}y=\x928\xa4>\xc4$\xad\x84\x8a\x19x\xf6\xe2\xc0\x849\xf3\xa4\xd0\x92\x96\xaa\xc4\x91\nyP\xaa\xbd\xb3\x11\xb37_\x898t!\x8eVI\xeb`\x02\x18\xb8\xdf\xc1\xb1Ly\x16Kn\x0f9kQpC\x1d\xdcR\xb1\x85\xbc\x1aQ\xb4C\x9d\xf5j7\x059\x07\xf0\xd5\x88\xc3\x9f\xeax\x98\xbcw\xcb\x99\x0b\xe3!\xfa0\x99\x82\xae\xe4\x15\x89\x03\xa4\xf2\x00\x9a\xb4\x06\"L\xe2Y\x8b#&\xf2\xb4Z\xbb\x19\x889\x1e\xaaD\x18B-\xdb\xf9KY\x8bc*\xea0\x9c\x82 \xa4\xd5\x88\x83,\xf6\xfc\\{ML\xa8\xc5W&\x8e\xba\xe8Sw\xd2\xaa\xf8\xd8\x0b\xe8\x84\xc20\x8c9\xa9\xa7R\x93\xdc\x85\xc5q\x19{\xbcO\xa5\xae\xb6 K\x18\xa8Q\x87\x02Uj\x92\x07&\x92\xc8\xadu\x17\x99\xc0\x08*\x00\xf7\x94#[?\x08\xbe\xdf\x1a\xd9F]\xd4\xedY\xdc{j#\xbb\xd7\x94C\xc5f]\xcc\xbfY7\xb2\xfbu)\xffj\xdd\xc8\xb6\xeaR\xfe\xdd\xba\x91=\xa8K\xf9\x97\xebF\xf6\xb0\xa9\x97\x7f\xbbn\x84\xeb\x06k\x18-R\xae\xd5\xd8\xa0\xcb\xc1\xa6\xe3\x1e\x03\x820&\x8d\x01\x94\x80\xfb4\x04\xd0\x04\xb6h\x08\xa0\x0e<\xa0!\x80N\xf0\x90\x91\x05PL\xdc(&\xce\x06\x16N3\xb1\xc1\x00@\xd5\xc4=\x16\x05\x81L\x06\x04('\xee3\x18@;\xb1\xc5`\x00\xf5\xc4\x03\x06\x03\xe8'\x1e\xb2\xf2\x00\n\x9a7\n\x9a\x87i\x1a\xfa\x9c\x86\xe6\x06\x8b\x00U4\xefq0\x08e\xb2(@I\xf3>\x0b\x02\xb44\xb7X\x10\xa0\xa6\xf9\x80\x05\x01z\x9a\x0f9\x99\x00E\xa5\x8d\xa2\xd20\xe2\xb4\x94\x1aT1\xa8\xa2\xb4Gc \x88IA\x00\xe5\xa4}\n\x01h&\xb5(\x04\xa0\x96t@!\x00\x9d\xa4CZ\x0e@!\x1bF!\x93\x16?\xda@\x1ab\x89@\xbdm\x00\xbdq\x84\x10\x1d\xafL\x96\x0cP\xf0\x86W0K\x05(}\xc3+\x9d\xa5\x02\x0c\xb1\xe1\x0d\xc1R\x01\xc6\xd9\x00\xc6\xe1\x1a\x06Xl\xc5\xce\x125\x11<6\xae\xc0Y\x83!\x02-\xb6\x82\xa6\x12\x96\x10\xa2\x03\xa6\x17\x86\x0c\xb0\xd8\n\x98q\x18*\xc0b+`\x12b\xa8\x00\x8b\xad\x80y\x89\xa1\x02,\xb6\x82\xa6*\xb6a\xc0\xc7\x85l\xfd\xe0\xdb\xf1\xd2\x0bX\xdb\xf8\xb6Q\x95@\x06\xf0\xed^]\x0c\x95\x9aU)\xf0\x95'\xbb_\x15\x02\x9fU\xb2\xad\xaa\x10\xf8Z\x92=\xa8\n\x81\xaf-\xd9\xc3\xbaN\xa0\xa1\xb8j(\x18\xbf\xf8\xd8\xa0\x8a\xc1&\xe3\x1e\x8d\x81 &\x05\x01\x1a\x8f\xfb\x14\x02\xd0\x00\xb6(\x04\xa0\x06<\xa0\x10\x80.\xf0\x90\x96\x03PH\\+\x04\xec\x9b~l\xd0\xe5\xa0J\xe2\x1e\x03\x820&\x8d\x01\x94\x12\xf7i\x08\xa0\x95\xd8\xa2!\x80Z\xe2\x01\x0d\x01\xf4\x12\x0f\x19Y\x00\xc5\xcck\xc5\xc0\xf3\x8c?7\x18\x00\xa8\x9ay\x8fEA \x93\x01\x01\xca\x99\xf7\x19\x0c\xa0\x9d\xb9\xc5`\x00\xf5\xcc\x07\x0c\x06\xd0\xcf|\xc8\xca\x03((\xad\x15\x04\xc4)~j\x90\xa5\xa0j\xd2\x1e\x05\x81\x10&\x89\x00\x94\x92\xf6I\x00\xa0\x91\xd4\"\x01\x80:\xd2\x01 \x00t\x91\x0e)\x19\x00ElhEL\xe4n\xb3\x01\x143Qp\xa4\x0d\xaf-\x96\x0c\xa2\xe248i\xf5\xb4\x0d\xa7\xd4I\xab\xe7m8=OZ=q\xc3\xa9~\xd2\xea\x99\x1b\xde\x1al\x83\x00\x0b\xad\x98Q\xbf\"\x81\x87\xbc\x154 \xd0$\xa0\x85V\xc0\xc4\xc0\x90AT\xfc\\A\x13\x01\x16Z\xf1\xb3\x07M\x03Xh\xc5\xcf'4\x0d`\xa1\x15?\xc3\xd04\x80\x85V\xc0\x9c\xc34(\xb7P\xfb[-\xe9\xd7\nFv\xfer\xce2\x96\x01\xf2-d\xa9 \xe5BA \x84I\"\xc0\xc4\x0b \x00s/$\x00L\xbf\x90\x000\x03C\xc9\x00&a\x08\x84(\x0f\xc3A\x04\xa9\x18\x1e\x07\xc1L\x0e\x06&d8\x14\x98\x93\xe1P`Z\x86C\x81\x99\x19^.09C\xc2D\xf9\x19\x1e#H\xd1\x00@\x08g\xf280Q\xc3\xc3\xc0\\\x0d\x0f\x03\xd35<\x0c\xcc\xd8\x00\xb2\x81I\x1b\x12'\xcc\xdb\x00 A\xea\x06BB@\x13\x00\x82 \x1c\x00\x07\xe6p\x00\x1c\x98\xc6\x01p`&\x07\x92\x0fL\xe6\x90@8\x9f\xc3\"\x04)\x1d\x0e\x06\xa1L\x16\x05&vX\x10\x98\xdbaA`z\x87\x05\x81\x19\x1eN&0\xc9\xc3)\xaa=\xcf\x03kN1\xd5\x03\xeaS-\xdb\x03)Y)\xe1\x03)^)\xe7\x03\x19C)\xed\x03\x19H)\xf3\x03\x1aM-\xf9C\x92*\xe6\x7f8\x92cR@<1D\x0b\x91\xc2\xd3\x9aJ\"\x88#T\xcd\x05q\x84\xaa\xe9 \x8eP5#\xc4\xb7Q9)\xa4\xe5\xdfs\x8f\xe1\xbc\x10Q(H\x0d\x91\x08\x08`\x12\x000AD\x94\x839\"\xa2\x1cL\x13\x11\xe5`\xa6\x88\xac\x1fL\x165\x00Q\xbe\x88E\x08RF\x1c\x0cB\x99,\nL\x1c\xb1 0w\xc4\x82\xc0\xf4\x11\x0b\x023H\x9cL`\x12\x89@\x89\xf2H\x1cD\x90J\xe2q\x10\xcc\xe4``B\x89C\x819%\x0e\x05\xa6\x958\x14\x98Y\xe2\xe5\x02\x93K\x04L\x98_\xe21\x82\x14\x13\x00\x84p&\x8f\x03\x13M<\x0c\xcc5\xf100\xdd\xc4\xc3\xc0\x8c\x13 \x1b\x98t\"pp\xde\x89\x01\x08RO,\n\x02\x99\x0c\x08L@1\x180\x07\xc5`\xc04\x14\x83\x013Q\xac<`2\x8aUPk>\nT\x98ZJ\n\xd2\xa2RV\n\xd0\xacJb\nP\xb6Jn\n\xd0\xbfJz\n0\x89J\x86\n\xb2\x92R\x92\x8a T\xcbS\xb1\x04G\xa4\xaa8R\x80\x12\"\x04\xe7(\x85\x84\x15K\xa6\x98\xb3b\xc9\x14\xd3V,\x99b\xe6\x8ak\x9b(y\xa5\x90\xbdR\xf8&Kd\xeb\x9a_\xc5fPF\xab)\x14%\xb4\x08\x04\x040 \x00\x9c\xcej\xca\xe1lVS\x0e'\xb3\x9ar8\x97E\xd4\x0f\xa7\xb2|f\xad\xc0\"\x0c\x16!Jd\xb10\x08e\xb2(8\x8d\xe5\xf3\xb1=\x0b\xb2X\x10\x9c\xc4\xf2\xf9\x98\x9d\x05\x0d9\x99\xe0\x14V\x83\x12f\xb0X\x88(\x81\xc5\xe1 \x98\xc9\xc1\xe0\xf4\x15\x8b\x82\xb3W,\nN^\xb1(8w\xc5\xc9\x05\xa7\xae\x1a\x988s\xc5aD\x89+\x1e\x08\xe1L\x1e\x07\xa7\xad8\x18\x9c\xb5\xe2`p\xd2\x8a\x83\xc19+^68e\xd5\xe0\x04\x19+\x1a JX1(\x08d2 8]Ec\xe0l\x15\x8d\x81\x93U4\x06\xceU1\xf2\xc0\xa9*FA\n\x99*Hc\xaa\x89*@\x8f\x8ay*^\xb9ji*^\xe1jY*\xde\x08jI*\xde0j9*\xc0X\x8a)\xaa\x86R5C\xc5P\x1c\x95\xa0bi!R\x88\x12\x9c\xae\x94\xd2S\x0c\x9drv\x8a\xa1SNN1t\xca\xb9)\xb6}\xea\xa9)\xbf\x8c\xd4\xa0\xccT]&JL5\x00\xa8\xdcl\xca\xe1\xb4T]\x0cg\xa5\xeab8)U\x17\xc39\xa9\xa6n8%\xe5\xd3k\x04\x16`0\x00QB\xca\xe7\xc3\x7f\x16d2 8\x1d\xe5sq=\x8b\xb1\x18\x0c\x9c\x8c\xf2\xb9\x88\x9d\xc5\x0cYy\xe0TT\x0d\x12f\xa2\x18\x84(\x11\xc5\xc2 \x94\xc9\xa2\xe04\x14\x03\x82\xb3P\x0c\x08NB1 8\x07\xc5\xca\x04\xa7\xa0j\x948\x03\xc5BD (\x0e\x07\xc1L\x0e\x06\xa7\x9fX\x14\x9c}bQp\xf2\x89E\xc1\xb9'N.8\xf5T\xc3\x04\x99'\xaa\\\x94x\xa2A\x10\xc6\xa41p\xda\x89\x82\xc0Y'\n\x02'\x9d(\x08\x9cs\xa2e\x81SN\xb4b\xda3N\x80\xa2\x14\x13N\xbc\xf6\xd4\xf2M\x9cF\x95\xd2M\x9c\x92\x95\xb2M\x9c\xde\x95\x92M\x9c)\x94rM\xbcu\xd4RM5\x9db\xa6\x89\xc6\x1f\x93hb(\x01B\x88\x0e\x9a{T\xd2L4\x95j\x96\x89\xa6RM2\xd1T\xaa9&\xa6]\xa7\xa5\x98\x04\xd9$\\\x85SP6\xa9)\x14e\x93\x08\x04\x040 \x00\x9cMj\xca\xe1lRS\x0eg\x93\x9ar8\x9bD\xd4\x0fg\x930\x13\xd7\xb3\x08\x83E\x88\xb2I,\x0cB\x99,\n\xce&a>\x16gA\x16\x0b\x82\xb3I\x98\x8f\xb2Y\xd0\x90\x93 \xce&5(a6\x89\x85\x88\xb2I\x1c\x0e\x82\x99\x1c\x0c\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12\x8b\x82\xb3I\x9c\\p6\xa9\x81\x89\xb3I\x1cF\x94M\xe2\x81\x10\xce\xe4qp6\x89\x83\xc1\xd9$\x0e\x06g\x938\x18\x9cM\xe2e\x83\xb3I\x0dN\x90M\xa2\x01\xa2l\x12\x83\x82@&\x03\x82\xb3I4\x06\xce&\xd1\x188\x9bDc\xe0l\x12#\x0f\x9cMb\x14\xa4\x90M\x824\xa6\x9aM\x02\xf4\xa8\x98M\xe2\x95\xab\x96M\xe2\x15\xae\x96M\xe2\x8d\xa0\x96M\xe2\x0d\xa3\x96M\x02\x8c\xa5\x98Mj(U\xb3I\x0c\xc5Q\xd9$\x96\x16\"\x85(\xc1\xe9J)\x9b\xc4\xd0)g\x93\x18:\xe5l\x12C\xa7\x9cMb\xdb\xa7\x9eM\xc2eP\x06e\x93\xea2Q6\xa9\x01@\xe5fS\x0eg\x93\xeab8\x9bT\x17\xc3\xd9\xa4\xba\x18\xce&5u\xc3\xd9$L\xaf\x03X\x80\xc1\x00D\xd9$\xcc\x07\xf9,\xc8d@p6 s\xf1;\x8b\xb1\x18\x0c\x9cM\xc2\\l\xceb\x86\xac<p6\xa9\x06 \xb3I\x0cB\x94Mba\x10\xcadQp6\x89\x01\xc1\xd9$\x06\x04g\x93\x18\x10\x9cMbe\x82\xb3I5J\x9cMb!\xa2l\x12\x87\x83`&\x07\x83\xb3I,\n\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12'\x17\x9cM\xaaa\x82l\x12U.\xca&\xd1 \x08c\xd2\x188\x9bDA\xe0l\x12\x05\x81\xb3I\x14\x04\xce&\xd1\xb2\xc0\xd9$Z1\xed\xd9$@Q\x8a\xd9$^{j\xd9$N\xa3J\xd9$N\xc9J\xd9$N\xefJ\xd9$\xce\x14J\xd9$\xde:j\xd9\xa4\x9aN1\x9bD\xe3\x8f\xc9&1\x94\x00!D\x07\xcd=*\xd9$\x9aJ5\x9bDS\xa9f\x93h*\xd5l\x12\xd3.a6\x89\"\x0c\x9a[\xfd\x1a\xa4\xe8\xa0\xb9\xd6\xaf\x01\xfa\x0c\x9a{\xfd\x1a\xaf\xb7\xa0\xb9\xd8\xaf\xf1\xfa \x9a\x9b\xfd\x1a\xaf\x87\xa0\xb9\xda\xaf\xf1\xed\x0d\x9a\xbb\xfd\x1a\xe0\x88\x01s{\x1fn\x1as}\x1fl\x1fs\x7f\x1fj$s\x81\x1fj)s\x83\x1fj.s\x85\x1fj3s\x87\x1fl8{I\x1fn9{K\x1fl:{M\x1fj;{O\x1fj<{Q\x1fj={S\x1fj>{U\x1fl?w\x15\x1fV\x00w\x17\x1f\xd4\x00w\x19\x1fR\x01w\x1b\x1f\xd2\x01w\x1d\x1fR\x02w\x1f\x1f\xd2\x02w!\x1fT\x03}\xe7\x1e\xd6\x01}\xe9\x1eT\x00}\xeb\x1ej=}\xed\x1ej:}\xef\x1ej7}\xf1\x1ej4}\xf3\xbelq\xfb\xc1\xcb\x033f\x90\x17UD\xa3\x1d\x05\x01\x07<\x12\x01\x8ey$\x00\x1c\xf6H\x008\xf2\x91\x00p\xf0\xa3d\x00\xc7?\xf6\x00\xabh\x08\xe4q\xe0(\xc8\xc1\xc0\x81\x90C\x81c!\x87\x02\x87C\x0e\x05\x8e\x88\xbc\\\xe0\xa0H\xc0\xe4\xe3\"\x00\x04\x87F\x1e\x07\x8e\x8e<\x0c\x1c y\x188F\xf20p\x98\x04d\x03GJ\x02\xd72XBHp\xbc\x04\x80\xe0\x90 \xe0\xc0Q\x13\xc0\x81\x03'\x80\x03\xc7NH>p\xf8$\x80\xb2\x11\x94\x83\x81\x83(\x8b\x02\xc7Q\x16\x04\x0e\xa5,\x08\x1cMY\x108\xa0r2)l5\xaa\x9ef\x0f\xc8\x83W\xc2\x81\x96@\xc0\xe3l\x03\x80\x87\xd9\xa6\x1c\x1ee\x9brx\x90m\xca\xe11\x96\xa8\x1f\x1eb\xe9\xfd[\xe1\x08\xcb\xc2\xe0\x01\x96A\xc1\xe3+\x03\x82\x87W\x06\x04\x8f\xae\x0c\x08\x1e\\Y\x99\xe0\xb1\xd5gF\x1b\xd1\xd0\xca\xe1\xe0\x91\x95\x85\xc1\x03+\x8b\x82\xc7U\x16\x05\x0f\xab,\n\x1eU9\xb9\xe0A\xd5g\x07\x18\xd1\x98\xca\x03\xe1!\x95\xc3\xc1#*\x07\x83\x07T\x0e\x06\x8f\xa7\x1c\x0c\x1eNy\xd9\xe0\xd1\xd4\xa7\xc6\x1a\xd1`\xca\xa0\xe0\xb1\x94\x06\xc1C)\x8d\x81GR\x1a\x03\x0f\xa44\x06\x1eG\x19y\x14\x86Q\xc1\x88\x89\xeb\xe1F4b\x12\x08x\xc4l\x00\xf0\x88\xd9\x94\xc3#fS\x0e\x8f\x98M9<b\x12\xf5\xc3#&\x9d\xa3\x10\x8e\x98,\x0c\x1e1\x19\x14<b2 x\xc4d@\xf0\x88\xc9\x80\xe0\x11\x93\x95 \x1e113\x94\x88FL\x0e\x07\x8f\x98,\x0c\x1e1Y\x14<b\xb2(x\xc4dQ\xf0\x88\xc9\xc9\x05\x8f\x98\x98\x1dDD#&\x0f\x84GL\x0e\x07\x8f\x98\x1c\x0c\x1e19\x18<br0x\xc4\xe4e\x83GLL\x0d+\xa2\x11\x93A\xc1#&\x0d\x82GL\x1a\x03\x8f\x984\x06\x1e1i\x0c<b2\xf2\x00YI'\xc4\xd8\x8e\x12t\x98\x87\xb1\x8bb\xad\xfa\xfd\xbc\xfaaR\x16$\x91\xed\x00g\xdc\x924\xf6\"\xe4j\xf4W\x98\x83t\xa59+\x0f\xbb?\x86\xae\xfb\x13\xf4!\x12\xf6s\xcc5\x9f\xe6C\xcb\xadL\xb8/.3\xc2\xa8q\xe1\xbe\xa9\\s!>\x96\xdc\xca\x05\xfajr\xc1\xa8\x10\xa6\x95C\xdb7\x12Kf\xae\x1d?\xb4\xf2\x92}I5\xe3\xf3\x80\x0e)\xda\xa5\x9a\x8b\x9c0\xb6S/\x0c\xce\xb1\x17 -]\xc5\xe1z\xb9\xa2 \xd6\x81\x8b\xe2\xac\x98\xa3\xa9K\x18\xc7\x0b51M\x10\x06Ha\xe9s\x00d\xce\xd6Q'\x88\x0d\x91)H\x0e\x91\xe5\xc2+H\xaf\xb0p+\x9b\xe4\x9f\xd4\"\x9eJ\xa5A<\x95B{\xc4\xa2\xe3\x93D\xe7\xa9TD\xe7\xa9\n\xd1)\x8a\xb4D\xd9\xd8[\x06\xe7YT\xc0\x94\xc7dy>Q2\x00\x87\x048(HQ\xac`\xed\x03#E\xed9bA\x18\x08(\x0b\x83)\xc5Q\x90G\xc1\xfbR\\y\x83DF\xbf]D\xffh aaZ-G#`a0$\x0c\x0d\xaa,\x9c\x7f!~\x11\xc6\xfe\xb9cG^jc\xef\x11\xb1P\xccBq\xb8E\xb1c'\x1cr\xcd\"\xd7Q\x04#\x03\x16y\xd2p\x98\x12\xce\xa1\xd4\x12\x00-n\x0c\x00\x16\xb7\x07\x00+\x0c*\xcan\xda\xb8\x98Z;9\xb0\xa4\x99\x1cV\xd2J\x0e\xab\xd0HA{8\xb7\x92\xb5\xe7\x08\x1f\xe4\xb1\x92\xf6pX`8]h\x833\xe6\xc1\n\xd9n>\xab/\xc2 \x8b\xf5\x1e\xd19\x1fR/4\x8b\xa5K\xd6s\x80\x94\x0f\xa1\x17\x06Ql\xf2\xc5=\xa2\xb8\x07\x05\xea\x0b\x93@\x18@\x90\xbe\xe8S\x00\x88\x85E\"\xf8\xe2\x01Q\xdc\x1d\x0d\x01\x06C\x12Q\x00\xda{\xc3\x81\xd5\xbd\x16$\"\xf5g\x9d\xae\xc5\x02\x005a\x04\x9a\x01d\x07\x1a\x01\x99\x82F\x08\xacA\x83`\x83\xb0\x18\xd0&\x0c\x080\x0b\x8d\x10X\x86\x01\x15\x18\x05\xeb(\x8cU\x99\xc9|\xa1\xc5\xfcV\x83q\xb4\xa4\xbd\xfc6s\xf9m\xd6\xf2\x15\x8c\xe5\xb7\xdb\xcaW0\x95\xdff)_\xc1P\xfe\xb1v\x12\x98\x04\x0bM\x82[M\xc2\xd1\x92&\xc1m&\xc1m&\xc1\n&\xc1\xed&\xc1\n&\xc1m&\xc1\n&\xc1\x80I(\x8c\x8f\xecd\x1d\xa3C\xd3O\xb2\xce\x03b\xb2r\n\xd8\x17\x01\x03;\x8e\xc3-\x01\xedq<\xbd\xc0EAZLi\xc5\xcf\xe7Fs\"+m?\xcf\x98\xf86\xc6\x9acG\xe5\xe8\xb0\xb1c\xcf\x0e\xd2\xf3\xe69\x8dO\xe3u\xe0\xd8):\xe4\xc9\x81<5\x82\xce\x83p\x1b\xdb\xd1$\xdc\xa0x\x91\x7f\x9c\xcfs]\x14Lr\xa9\xea\x87\x08c/J\xbcDa\xcc9\xc0\xeaH\x94\xd5\xcb`[4L\xa3EJ\xae\xe3\xbd'\xea\xb9\x1e\x88UU\x9d\x11\x9c\xaem\x05u+\x0c\xf1\x95\xc2|u\x13\xf8\xc7X\xc0W1\x80\xff<\xfa\xf7\x8fT\xbf\xff\xdd\xb4/Q4VW4>F\xd1XE\xd1\xf8y\x14\x8d\x8fT4~\x8a\xa2)\x96U\xb9\xe6\x84Aj{\x01\x8a\x0f\xf5\xa3\xfdy\xe2\xc4!\xc64E\xb1h\xa6\xb7\x12\xecu\x1aN\xc8\x9d\x96\xec\x01\xa3\xddX\xcb\x1e\xf2t\x0c\x0cS\xb0\x86Y{\xe7<\x00bj\xec\xd9\x1buIARPX\x8d9\xf4\x94\x03\x15\x04V\x18M\xcaV\xf8'7\x02\xa0\x84\xdb\xe0\x1f\xdb\x04\xb1\xb4\xf8di\x01JXZ\x0cHK\x8b\x82\xbd\xe8\x10\x85\x89\x97'\x02\x17\xde\x0e\xb9\xff\xd7\xf3\xa30N\xed \x9d\xfcQ\x97\xd8\xf3$\xc4\xeb\x14\x11\x85\x19\xe9y\x8c\x9c\xf4G#\xdau\x88\xbf?\xd1Eg\xc4\xdf\x9f\x14\xcc}\xe0\x04\xcc\x1c\xe7\xcf\x94QAH\x15\x9f\xcc$\xf7\xff\x83\x04\x17\xc9\x88\xff\\\x19)\x01\xb6\x89\x16\x84\xb1o\xb3#u\xf6\x88F\x16\xa370\xa0\xd3\xb0(\xa6#\xc9(>>'X\x0b\xc5\x07J\"\xb9\xe0\x90\x8a\x13\x8d\x85e\xd2)\x88\xa7\xe0m\x8d\xcclt!\x14\x19\nCx\x89\xfd#\x05\x96\xca\xa6jfp\xe6\xe6e\xc3\xbcl\x14f\xa3\xcd\xed\x04\x1d6(N=\xc7\xc6e:;{\xc6\xef\x91l4\xdfsY\xa8\xef\xb9.\xe6\x80i\x18\xb1\xc04\x8c\xb8\xaaS\x9f\xab9\x0fp\x14\x0c~\x00\x9a\x91\xf9\x8ezK\x00\xb4\xb01\x00\x16n\x0f$B\xd1$\x856)8q\xd9P^o\x92vr`q39\xa8\xa0\x95\"\xbb\x1d\xed\xf8e{\xf01\xed\xe1\xc0\xe2\xf6pPA{\xf8\xfa\xcb\xf6PX\xd7\xf3\x0fad;^\xba?7\xb8\xa23\xf6\x01\xf41\xfa\xecq\xf1\xfdym\x8b\xe6\x0f^\x99\x15/f\x90\x92w\xa7kXI\x07ez\xf1\x82IK9'\x86\xbc\xd6J\xfc\xae\xc5\x13\xdaN\xeamP\x03\x19M\x94d\x0c\xd7\xa9\\\xc8p\xcd\xec\x9e-q\xb8=\xe3\x9e@\x82\xe7\xcf\xbf\xa3\xbe\x14\xea\x15\x18|\x95-\x03\xf3S\x11\x9dn\xfe\x9f\x1a\xa8\xab\xa9\xedXQ\x9b\nKC\x95\xf5\x9e\x89Py\xb3\xda@y\x1b\xd9\x16\x18\xdf\xa7\x05\xcd\x06{^+\xa4w\x16R\x98 _\x7f\xb6\xef\xe1/\xe3p{\xd0\xfc\xf0Q\x0b\x93\x9dVd\x0f\xfd0LW^\xb0<_\xc6\xf6>ql\x8c\xea\xb6\xcdm\xe7aa;H\xdbx\x897\xf7p\xd6\xf2r\xc1+)\xa24\x93of\xe5?a;E\xdf~\xd4\x7f\x9a\x88\x9e\x03\x1a\xe5Xu\xba=A\xa7:\x02z:\xe4\xac\xa5\x16^\xdb`\xd7\x89\xe1.\x9b\xeb$\xb7\xc0\x8fFW\xb7HM\x11O\x81:\xcaaI\xc4\xac;\xe6Yu\xc7\x00#\x0d\xdb\xf1\x12\xfd\x7f\xc5A\xbc\xe0\x18\x1f\xe1\xd1OEI\x9d\xa5\x80\x88L \xf2\x9a\xb2\xb4\xcdwz\x90\xeb\xf4\x84\x06o\xf7\x1f\xc0\x17\xb3\x87L0\x1dzAZ\x8fH\xce:N\xc2\xf8\xbc|H#\x93\x95\xed\x86[\x0d\x02N\xea\xc5b\x8c\xb0\x9d\x89\x05\x99\xdd\xc6\xb8\xd3\xb5\x92\x8e\xb3\x9e{\x8e6G\x8f\x1e\x8a\x7f\xec\x1a\x03\xeb\xac;\xea\x9fu\xfb\xfd3\xe3\xa7\xc9\x91x\xb1\x88\xe7\xf6\"\xcd\x04\x0d\x83\x14\x05\xe9\xf9_\xfe\xd2\xf8\x7f\xb8\xd3\n\xe4\xb9\xde\xd1;\xc6 \xdauz\xd1\xaeC\x9e\xf7\xeb\xfd4Q\x86\xe5\x07;c\xdb\xf5\xd6\xc9\xb9\x17\xacP\xec\xa5\x93f\xd2\xe4\xd6\xd1\x93\"\xf3\x99\xe7e\xf4I\x11A\x1a\xba\xfeb\xb2ByN'\xff\xf91\xcf\x98\xee\xce5\xf9\x9cu\x846Ui$\x1a\xcd\xfd\xbb\xd0\xeb\x99\x18Ej_\x10d\xcc\x97\x9a\x1dx\xbe\x9d\xa23\xc1s\xa8/\x11\xa5\xc2\xd0\x89=\xc4IM\xdb\xec(\xd0\n\xa6\xa5~\xd4\xf4Ce\x17\x9d-2\xea\"\x83-\xea\xd5E=\xb6\xc8\xac\x8bL\xb6\xa8_\x17\xf5\xd9\"\xab.\xb2\xd8\xa2\xf1x\\\x17\x8e\xc7c\xa0\x98*\xe7\x00\xbe\xbdk\xa45\xfa\xc3\xfe\xc8\x1c\xf4\x87,\xaa\xf4\xf2\x1aY\xfe\xce\xc3\xbc\xd4\xb3q\x0d\xe3\xb3\x95\x8f\xda:HP\xc3(\xff\x8d\x86\x04(IQf\xa0h\xaf\x15\x11T\xdeM:!\xb3\xaf,\xc2Ej\xb05>\x10\xbf\x9e\x1b\xecB\xa2\xa4k6\xae \xda\x95\x01\xd6\x01c{G`\xcd#\xb0\xfd#\xb0\xd6\x11\xd8\x01\xa3\x17\xe8`\x7fA\x8f\xbd$\xd5b\x94 \xa1q\x08\xc4\x9a{\xf1\x1c\x99\xaf\xd6'94I\xf7\x18i\xe9>B\xc5\xd1*\xa1%\x8b\xed\xa5N\xf4sDm7u\x8f\xdbo\"9&(B\xb1\x9d\x86q\xce\x94\xe0at-A\xfb=\x7f\xd9\xf1\xfc\xe5\x81\x18\xd2\x9b\x9cG\xfe\xab\xeb%\x11\xb6\xf7\xe7s\x1c:\x0f\x02\x1d\x06\x0fI\xc7>\x94\xe7\xe1Mk\x88\\\x17\x9a\x02\xf8\x01k\"-\x95\xd5\x06\x0d\xb6\x0c\xa2\x9c\xf5\x0b\xa9\xc6\x03\xc7Y,\x9e_\xaamlG\x11\x8a\x05\n\xec\x0f\xf4hW\x1a\xf0\\\xef\xe4\x9b&\xa5\x0b\x9d\xeb\x9d^VH\xcd\xf0\xdecVRN\xcf\xf3p7\x01\x9f\xd2\x12\x84Qn\x1a-\xb5\x97Z\x82\x9cL\xeaCe4\x82ymH\xcdO\xb4\x05F;\xf2Y\xf6;%I\x18{\x993V\x99\x18\xaa\xcc\xf5\xe2\xa2\x9a2%:\xa98\x12%N\x88\xd7~0\x01\x9f\n\xc5\x7f\xba\xd8\xe4 \xe0F,\xeai\xfe\x8b\xe6\xa5\xc8O\xaaG\x95E\x0c=\x0b\x97\xb2\x7f\x8c\xea\x9f \x134\x8aB\xc4^\xc2E\x81\xbddR\x9b,\xef\xb9F\xb4\xeb$!\xf6\xdc\"\x1c\xb3\xc6g\x03\xebld\x9cu\xcd\x9f\x84*)\x9d\xb8\x99\xf5\xa9\x1b\x1e:\x1bj\x93\xca$\x8e\x18\xf5I'\xd4;V\xb4\x9b\xe4\xa5\x0b\xdb\xf7\xf0\xfe<\xb1\x83DKP\xec-&U\x1f\x9e\xf7\x0d\xcb\x10\xf2\xee\x06\xa1\xe6\xa2\xc4\xe9$\x91\x1d\x1cH\x03d\xfa>7j\xd5\x9f\x1b\x93\xe2?BV\x9dd\xb3\x84\x82\xa2\\\x85}^\xab\xfdD\xc2\xca\xb71u\xde\xa9_5t[\xcc\x04}]\x9f\xa8HK\xf4\xd1\xdc \x8eWVd\xc7\xb6\x8fR\x14\xff\xf1G6\x15\x90B\xf5\xa2]\xcd\xdf\x8av\x1d\x9db\xef\x87A\x98o\x10P\x82\x0ft]V\xdb\xc6C[\xad\x9a\x06\x1f\x0e\xfc\xca&\x9b\x04\xcch7\xa9\x0e>\x90\xfe`\xa9{\xb9\xc5\xdb\xc3\x82\xedq \xdc\xcd\xc8j(\xba\x02\xd1\x07\xfe\xaa\xeb:\xb3\x10\xe9\xb3\xc3a\xb3\x921\x99E\x8c1\xe6\x16;\x00\x04\x14\xad\xd3M\xedy\x1e8\xa0\xf8\xe9#\xceQ\x0eOV]\xfc\x9c\x8dC\x87\xc6\xdb\xfa\xfc\x90s\x04\xa3\xf3\x85\x17'\xa9\x16.\xf2\xf0\x83a\xdb\xd1;\xfa\x11\xbc\xbaebs\xd5/:9\xe7S\xa7\xf3*\xd7Y\xfc\"\xb3\xbe\xad\x999L\x1eSY\xfa\x8bj\xb5\xd9kV\x9b\x99\x9f\x00kd \x9b\xf3\xfb\x8f\x9a\xa5\xbf\x00\x13=U\x111\xb4.c{\x0f6\xab\xeb%Z\x18\xa1\xa0\x19n\x92\xb5\xef\xdb\xf1\xfe \x1a\xe13\xef\x16h\xa8fQL\x8a\x95'V\xd6\x1a\x95s\xd0\xc4\xf7\x82*\x82\xb5\xb2\xdf A\xd9\x1b\x83\xa3\x9f\xe0~c\x00\xcb\x7f\x83\xe980\xe6(\xd9\xcf\x8e\x01w\xb0=G\xf8\xe9\x1d\xef\xa4\xa9\xfe\xa8f\x95\x922C79,\x0fu\xbd\x1eG\xb9\xc30'\xcc\x1aJ\x02\x95\xfd\x91\x9a\xa1$\x9d[\xc0j\xd5g'J\x95Q\xadi\xeds4\xae\xe8C\x9a\x8f\xd2U\xe8\xca\xe6\xed\\\xcf\xf5\xd6\xe5H'f\xd0A\x16\xa8e\xe3\x05w\x03\x8c\x99\\L\xba\x0b\xe5\xd3ONC\xf5\x04\x9d\xed+\xf2v.\x16\x0b\xc5F\x86\xf9\xd2,3\x80\xe7\xb6\xf5\x97\x92$\xb2\xd3\xd5\x11\xd0?\xfepQ\x14#\xc7N\x11\xa5\xccAD\xf4\xacS{[n~\xbdq\x08\xbdc\x16\xab\x19\xfa\xb7'w\xd0\xc96\x8c]m\x1e#\xfb\xe1<\xffW\xb31\x96\x85c\xaa\xf1R\xb9\x19N\xec\xe8\x0f\x07\xa3h\xc7l\x81\xff\x07\x9a\xaf\x17\xed\xd8\xd3\x9d\xcal\xd8\xcd:,\xbc\xa6\xab\xd4p\xa6\x8b*r\xc8\x16\n\xb1\x17\xe5\xebR\x82\x81\xa9:\xe4<\xdfH\xf3?4\xe9\x90\xd1\xbeZp\xc7\xc8\xad\x18\xe0\xf7\xea\x00\x9f\x98\x95\x9e=\xb2\xe7\xa4\xab\xf6\xad\x19\x19\xcb\xb0m\xc4,5\xe0\xf8\xaab\x19\x85IJ\xbc\x8f\"3p\x7f\xec8c}\xc2\xae\x80\x87\xe6YO\xef\x9f\x19\xfd\xbe0\\\xa1\xb8\n\xa7\x1drN(\xea:\x81\x19(\xb3\n\x1f\xf5p\xf9h9\xd7\xac&\x17\x8em\x98\xbc&{V\xef\xcc\x18\x18g\xfd\x91\x82&\xd7j\x8a,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2\xdeE\x18\xa5\x88\x95kl\"\x13\xf1\x9a\xec\x8f\xcf\x06\xbd\xec\xff\xad\x8a,\xd8\xaa\xe92\xaf\xec$v\xa0\xd8j\x9cN\xd4\xa8B\x0dK\xc4:\xe6\xc0\xb0\x17\x0b^\x9d\xe3\xe1\x991\xb4\xcez\x96B\x17_\"5\xc7,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2>\xb2Sg\xc5\x88e\xe9\xc8tz\x9c\"G\xfaY\xaf7<3\xc6\n\x8a\xcc\xd9*\xa9\xb2\xa8\xec\x14n\xa0\xd4J\x8cNS\xa7J\x05\x19WF\xae\xb1n\xf4\x00\xb7\xcc\xa6\x1cc\xa4\xe6\x96\x19W%e\x16u\x9d\xc0\x0c\x94Y\x85\xcfi\xaaT\xe1\x1f\xe6\xb1^\xc2H\xa6\xbb\x96m\x0fym\x9agc\xfd\xcc\x18\x0c\xdb\x95Y\xf2U\xd2gQ\xdbi\xfc@\xc1\x15Y\x9d\xa6U\x95*\x88\xb0\xbe>\x15:\x98\xd0\xa2\xa2y\xf6\x07\xce\x14\x8d{\xc0\xab\xa5\xc4\x95(i\xb9\xa8\xefd\x96\x07Hzun\xa7\xe9ZR\x0b!\xa0\xb3B>J\xb8\xa4\x9c\x1aY\xa7[\xfe\xa0\xa5^\x8aQk\xaef\xe1\xe14kD\xb3\xd6*\x9eh^\x90Eq\xd4\xd6b\x1eI\xe7{T:\xb5oU%\xd8{M\n\xd2\x1d\xb9.b\xbc*\xb5\xe7\xa7\xad\x82\xa8\x9a\x8bex\xdd,b\xe3\x1b\xd8\xf3N\xedy\x07{l\x1a\x8d<\x89N\xf1b\x16,\xc7\xaf\xfe\x8a\xfa\xd8\\8\xb7bbv\xf2\x99\xcf\x96\xf5X[C\\\x85\x89\xecb\xdf\xbe`5\xa8WeF\xb4\xa3\xceK\x11)l\xc1\xfe\x1e\xbb\xbdW\x08Q\xfa\xf8\x81\xc9\x90\x81\xbeI\xae\xbe\xb5r\xaf\x1aLJhh\x97\xa28\xb0\xb1\xe6\x86N\"\x87\xe6^\xfdGy\x13\x8a\xb5+\xbd\xcdX\xbb\xa8U\xa5\xb5\x8f7\xa8\xa4)\xdc\x11\x12ik\x84h\xb2ALf\x14h\xd3\xf3\xb6 :\xa6\x01\x020%\x7f\xc4fR\x9f\x9e\xb3\x15\xaa\x939\x0fC\x13\xa3\x1dr\xd6)\xaa\xe0\xf50\x98\xbb\x81\xfc\x9d^\x0ci\xa7;O\x03r\x1c$\xc7\xe5>7.\xcfCw\xaf\xe5;\xb0u,r\xd2\x98\xf7?s \x82\x97\x9ez\x86\\/=P'\x16\xf4V\xfab#\x83T\x9a\"M'A\x189i\xb5\x9bkB\xb3W\x8c\x92(\x0c\x12\x94h^\x100f\x96\"\xb9\xee\xc8\x95[\x82\x9eXN\xa3\xa7u\xc6\xaa\x96,\xec\xf8#I\xedt\x9d\x80{\x0fOeJ<\\\x07n\xe8\xac}\x140\xb9]\xe3\xd8d\xf6X\xcf\xfeH\xaa\xce\xcf>1\x9f\x0f\xcd\xcf\x93UY\xef\xbe\x8e\xfc\xc9\xf36\xb78o\xf5?\xd1Zb<\xfd\xe3\x8f\xc2g\\o\xd3\xf5\xed\xf8\xc1\x0d\xb7\x01\xec]2\xca\x18\x05.\x8a\x91;+9\x80\x9b\x7fE\xa0\x93\xbf\xb9\xcd\xa1\x8f\xc75C-\x10\x9a\x91\xa7\x1c\xa8d\x9e\xd1\xef\xf7\xd1q\x9a\xe1\xf6\x9dT\x1aW\xa9\x85\x9dEThY\xc5t\xa2\x038\xad|g\xc9\xedg\x90\xdc>\x1c%\xf0h<_\xe8\xfd\x89\xe2\xbd'\x15\x89\x9a\xd6\x14\xa9\xf3\xe7h\x13}\xd8qd\xcc\x0d\xddy\x82d\xec\xce\x95\n1'T\xba:N\xd3\x8b\xc5BxbN\xb8\xd3\xaaeSW\xf3\x1b\x0e\xed|\xe4+\x0e\xdd\x93G!\xa9\x0ej6gl\x9b\xfd\xfa\x96\xb7TP\x15F1w\xa6\x0b\xee\xfb\xcc\x95\xef<\xa2)69\xb3\x9f\xca=\xce\xecwx\xe7\x93{\x98C\xab\xe0c\xb5\x8fV(H\n\xf1\xb3\xa0\x83z@\xfd\xa24\x06\xd5/\x89ae;\xd6\x8er\xcd\x15'\x18\x1at\xf3\x96\x86\x16\xban\xb1\xdc\xcf\xba\xddAr.y\xe5-W\xc5{\xc0\x9d\xd0\x05\xd6~2\xf4\xdf\xbb\xbe\xe7\xc4a\xfe\x80|iN\xe9!\xbb\xeaHN_g\xce\xe8\x0c\xd8\x13\xd6Y\x1f\xc8\xdcQ+\xd7y\x89\xf8\xc4S\xee)\xe5\xca\x138tJZj\xe8\x8ezc\x138\xed@n2\xf2\xc6&\x0d\xf8\xd1K=\x8c\xbd\xb5\xdf\xf9\x82\xe6g\xc4\x84/\xe9\x97L\xc4P\xb6\xd9\xd4\xeb\xc5\xed\x90\xdb\xdb+r \xc4+\x88\x88eT\x8f\\\xf3\x9bE6\x83\xdaG \x8ej\x83\xa7\x95\x98s\x1a\x96\xe0P\x13\x07\x93\x8bX'n\x9e\xbe^8i\xa7XQ\xba\xbf+\x1dLzr\x13\xbe\xe7\x92\xa7\x1a-\xb5\xe2\xb8\xb5U,,N\x88D[\x94T/`\xeat\x93a\xd6\xcb\xcf\xe6T\xa0\xe0\x85\xb9\xd5l\xd2\xf8p\xe5\xb3\xe5\x89J\xe2x\x7fq\xd1\"\x9bW\x9a1\xc1x\x8e\xa37\x91\xed<p\x8eD>\xbc_'\xa9\xb7\xd8W\xe3L\x8d}\xaa7\xfei\xce\xd0\xa2\xf4\xfaQ\xdbH.\xa6,3uD\x8f\xd1\x81\x1e\x03'\xf2,\xfdEs\x18\xb5\xce\xd9\x95\x8c\xa5\xa7O\xf3\x13\xa6g\xc2\x13\xa8T\xb1\xc0\x1fO\xe8\x11\x12-\xcc\xd1\"\x8c\x91 aI\xb5\x93\x8e\x9a\x88Dm5\xdb\x11G\xc8\xb5\xbcG\x01\x07r\xeb \xec<\x0e\xd3\xfc\x87\x8e\x91t\xbc`\xe1\x05^\x8a:\xd94n\xc7g\xc4%\xcf\xc9\xf1\x14\xcd{\x12\xb8\x04x\xb1\xf7i\x9d\x15\xff/\x0e\xbe\xe6\xf3b\x1aF\xe5\x9e\x039;\x0c\xd8{\xb1y\xa6\xa9\xf6\xf3S.\xa0\xff\xfb\xbf*\xf2\x07\xb4_\xc4\xb6\x8f\x92N\xd5\xb0C\x1a\x02\xf7\xa0\xf3R\xf4\xa3\x91\xae\xe3\x80t\x1a\xea\xf9\xbf\xff\xfd_\xcf\xccO\x14\xec\xe7&\xa5N\x93W\xc3\x9c\x02I7\xfb%\x0eq\xa2\xd9\x8e\x83\xa2\xb4\xda\xac)\x87dj\xf3g\x19#\x14<\x85g~\xf5\x83\xe0ED,\xdd!\xf2!K\xcc\xb1\x17<\xa0\xf8`\xe9/\x9a\x17\x86P\xba\x15 H1\xcbc\xb5\x9d\x95y8\xba\xab\xda\xdd \xcc\x93 u\xb8\xe1\x05\xdc\x92\xb2\x06\x9d\x81O\xcf3\xa7\x83\xce\xfaU\xb7\xba\x8b\xea\xeb\xdf$\xc7\xcf6(N\xbc0\xd0\xa2\xd8^\xfa\xf6\x81\xdc\xaa\xa8\x83K\xe4\xb3\xe9?\x9a\xea\x8f?|\x94$\xf6\x12==\x82:u\xde#\xe5&\x06\xfcn\x0f\xf9@\xd8\xcc\\\xa0E>q\xd8\xb4\xcb\xc5\xf4\x82\xc6\xfe\xdd\xf56\xc4\x8bE-\xcbY)\x9dmTb\xde\xc9\x171Mt\\m\x97\xba(\xfbS\x8b\xdb\x8fv\x9d~\x11\xf6\xb2\x8bN\xba\x9ay\x1a\xb4\x9d\xb5&\xaf'\xf5\xc8\x83\x9a\xec\x19A\x93?6h&\xfcH\xbc\x8c\xed\xbd|\x05\x9as\x89\xec\x18\x05\xe9s_e8a\n\x9d\xa7A\xf6WK|\xd1\xc5\xad~\xa9\x19\x8e\xee\x9f\xae\x97\xd8s\x8c\xdc\x7fU\xef\x9b\x08\xc2\xcc\xe5p\xb8En=[uM\x8e\x90y?\x00s\xb9\xc9b\x9aer\xd7\x9fx\x04\xdf&\xc7\x0e\x1c\x84\xd9Sa\x8b\x81> \x97_e\x01i\x12\xb9\n\x0b\x0e|u\xf6:]\x85\xb1\xf7\x88\xe8\xeb\xd8\x13z\xb4\xab\xb8T\x07=\xe5\xa7?y\xe1$\xf5\x16\x89\x86\x05\x0e\xed4\xff\xb6\x0cm>p/\x9e\xa1\xdf,\x0f\x0b\x0fc\xf8\xc8e\x86-w\xaa\x80\xfe\xd9\x1f\x8fu\xd4\x03\x92[T9\xc7Q\xcb\xb8D\xa7\x0d\x9f\xe4\x8aZ\xc0\xb8\xe8\xff\xc7\x0fN4\x83r\x1f\xbcxU\x15\xd7\xb13\xadv\xb8\x03\xe2\x0c\x07l\x0b\x18\xe4\xa4\xf9_F\xdd\x95Y\xec\"\xf3\x98\xb5\x83\xb9\x18P\x0e<A\x18P\xc7\xb6\xf83 <\xabn\x16\xe8\x12gk\x8cV\x82u\xc0\x90t\x99\x97^\xa0]d\x07nyn\x86\xb9\xaa^\x96\xd5'>\x0e\xca\xa2\xd3\\3\x0f\x95s\xce}\x98\xb8\xf7Y\xf6B~w\x8ef\xcc\xa8V\x06-\x0f\x80\x13}E\xcf\xfe\xb4\x89-\xbc\xf5\x0bO*\x05\xeb\xa1\x9e\xfd\xa1X\xcf\xd7i\x1a\x06\xec\xdb}\xc2u\x9a\x0d.\xbc\x02\x0bx\xd7\x0b66\xf6\xdc\x03\xbfVIV\xf6\x03\xeat\xfbI\xc7\x98\xc0O\xdb\x0e\x03\xffu\x81\xb83Fe\xd0{\xc4\xc4\x9b\xa7\x18\xac\xea\x1e:\x7f\xbc\xa7\xcc\xd9\xca\x13\xbb\x8ba\xf6\xa7\xb3\x8e\xf1\x8f\xae\x9d\xda\xe7\x9eo/\xd1\xcbd\xb3\xfcy\xe7\xe3\xc9\xdcN\xd0\xa0\x7f\xf6\xdb\xaf7\xbdo\xfb\x8b\xfe\xfc\xcbn\xed<\xea\x9e\xfd\xeb\x9d\xee\\\x86\x9bw\xa6k\xba{\xcb\x9c\xed\xad\x8d\xe3;\x9b\xd9\xfdt;{5~t}\xc7\xbb\xfe\xf5[\xf4\xedw\xf7\xd5\xdc\\\x8e\xaf\xef\xa7\xcb\xd9\xab\xe9\xbe\xf8{\xfd\xf3\xf5\xab\xe9\xf2\xfar\xb7\xfd\xfa\xfb]x\xfd\xe6v|\xfd\xa0\xeff\xfb\xbe>\xfb\xb8\\\xde\xec\xfb\xfd\x9b\x8f\xf8\xfe\xdd\xfd\xb59\xfb\xa0\xafg\xf7_\xfb\xef\xee\x9d\xed\xfb\xfa\xe7\x07\xf3\xfd\xab\xe9\xf6\xfaU\x7f\x7f\xb3\xef\xefo\xee\x97\xeb\xd9\xbd\xb3\xcf0\xb3\x0f\xf9s\xeb\xe6\x1e'\xef>\xce\xd6\xef?N\xfb\xd7\x97\xb3\xf5\xfb\xcb\x9b\xfbw\x1fj|\x9aa\x9b\x9f\x1f\xcc\xf7\x1f\xa6\xdb\xf9+\xfd\xf1\xdd\xfd\xc3\xf6}\xfe\xdf\xe5\xe3\xd7}V\x9f\x93\xbe\xbb\xbf\xee\xdd\xd4?\x17u\xbc\xfb\x90\xd5\xf1\x90=\xdb\xe5|\xef\x97\xeb\x9b\xc7\xa9U\xfd\xfc\xfe\xa3\xd3\xbf\xbe\xbc\x98\xcd>N\x97\xb3\x8f\xaf\x93\xb2m\xe9l\xdf\xdf\xdd\\\xbe\x1e\\{\xa3\x9f\x7f+\xf4\xf4\xf3O\x9d<\xaf[\x9c\xfc*b\xceN\x10j1\x8a\x90\x9d\x92\xf3ZqS\x9f{#\x84<\xa3\xd9SK|f0\x95(\xa8Y\xb9G\x11\xb2\xe3,Z(F\xa4\xfcEm\xecC\xe6w\xc0\xdd\xff\xe9\xafq\xeaE\x18\xfd\xabJ\xfeZ\xd4\xc15\x0b\xf4V\x80\xd1\x9f\xde]\xe9\xbd\x07.\x89\xd8\xcbg\xd8\xa3\xee\x94 8\x19#\x9d\xbd\xe0\xa5\x94\xdd}\xea\x99\xa4\xfch\xe1?\xb3%\xf5/\xc8\xb7=\xfc\xaf3A\xe9\xc2\xc3HX\x18\xd9I\xb2\x0dcW\x08H\x90\x1d;+aq\xb6\x1e\xa3\x0b\xb3'v\x8clRE:\x91l\xa2\x1dh\xc4\x0c\x8f\xc4\x86\xa1;\xce\xfe\xb4\x0d\x8f\x8b\x85\x9a\x15\xff\xf3\xd5\xd5\xbct&\xdf\x8a\x91\x1b\xbb\xeaO\xd2V\xb4\x81\xea\xd6\xb4\x01\xcbV\xb5\xc1\xf2\xd6\x81\xa0\xaa\x95\x7f\xca0\x00d\x8ar6\x07C\x7fq6\xd6_\x00Y\xb6:\xa5k\xba?jF\xb4\xcbF]0\xe5K\x96\xff\xbb\xa7\xbf8\x1b\xb5\xf2\xeb\xc9\xd9U\xc5\xff6\xf5\x17g\x96\xfe\xe2l\xd8\xcaQ\xeb\xb7HX\x95\xff\xbb\xaf\xbf8\x1b\xb4\xf2kaWs#3k\xff\xab\xd1g\xd1(8\x1403\x07y|\xbc\xd9\x9a\xeaQ\xb7\xe8\xf9\xd5\x137l\x92\x01u\xcb\xbb(\x8e:-\x00\xccMUK\x8aw|\x1d\xf8\xd0\x17\xb8\x1fU\x0f\x11\xce:\xe6\x0f%\x13[r\xe4d\xc2\x9c\xd5\x88QN\"P\xc0\xb3\x9f\xd9rV\xc8y\x98\x87\xbb\x03\x19\xf5\x97+Y`mD\xeez\x08\x1eW*\xd5\xb3?peOx\xfd\x86\x80aD\x1dD\xef\xeb:\xf1\xd1\x8d\xc2\x0e\xe4y\xb9J\xf3,HU\x8bP\xba\xae\x16\x85\x98L\xaag\xff\xaa\x9b\xca/\xa5\xa5t?\xe7\x8a\xfa{\xb7xC\x8f\xf0\x8dJt.K#\xf7\xcb\xf27/Tn7 \xcf\x91\x8f\xca\xedn2\x0ef\xcf|\xd0[Q\x8c\xff\xa1Q\xf6G\xf4\xb2$=_\x02T i!\x97\x08\"\xde\xf1\x90\xf7\x83\xfa\xa7\x13U\xd7\xfe\xca_\x85WFKk;\xcf\x7fB.e0^Y\xf9\x1a\xf8/\xc0\"\xd8Y\xd9q\x82\xd2_\xd6\xe9B\x1b\x9d\xbd0_%\x9be'\xb7\xe0/?\x18\xfa\x0f\x9d\xc2\x82\xbf\xfc0\xfa\xa1\xb3\xf1\xd0\xf6\"\xdc\xfd\xf2\x83\xd9\x19v\x0c\xbd3\xfa\xa1\xb3\xf3q\x90\xfc\xf2\xc3*M\xa3\xf3\x97/\xb7\xdbmwkv\xc3x\xf9\xb2\xa7\xebzV\xc7\x0f/\xcc\xab\x17\xe6\xab\xc8NW\x9d\x85\x87\xf1/?\xbc\xe8\x99}\xa3?\xec_\xfd\x90?\xd0\xe25F\xbf\xfc\x806(\x08]\xf7\x87\x8e\xfb\xcb\x0f\xb3A\xd74\xcd\x8ea\xbd3;\x86\xd1\x1d\x0c\x86\xd8\xc8\x9eh\xd9\xbf\xfdN\xaf\xd3{W<\xce\xc40;\xa3\xac\xec\xf1\x87\x97EMY\xa5/\xcc\xab\xbf\xfc\xd4\xb1\xf4\x17\xcdZ\x93\xd6\xa8\xeb\xd98\\j\xeb\x1d\xf35\x9d \xf9\xa2U\xea\x1e\x8b^\x1dV\xaa^\x03,`\xd8\xe9f\xbaw\xe30\x02\xb8K\x19\x8an\xc1\x8c~\x12V\xe5\x87\xae\x8d\xa9z\xea-m\xae!\xd4\xfe63)\x16\xbf\x9a\xe5\xdcP\x7f\xf3\xc3\xe2\x86\xe2\x937\xf8\xf9\x05JuY\xafm\x81\"\xc8\x07\xe8\xd1\xaeS\x9c\x9c\x92\xbe\x04Z\x8ckUj\xb5\xb1&;\x06g\xf5\xc90\x82O*J\xd8\xd2\x17U\x80{6U\x9e\x9c\x9fk\x95V\xb8\xd2\xba\xe9K>#f\x81=h\x16\xd8O8\x9a\x04\xd5\xff\x94\xd7\xce\xd5\xb1J\xaf8/':*[:\x16\xe96'\x9d\xffQmM\xa7\xeb\xe00AZ\xfe\xf8\x88\x94\xfc\xf3e\x9bd\xc2\xad\xc8\x0f\x83\xf7\xd8c?\x03\xf2\x0d^\x8d\xe8\\\x1eN\xb4Ir\x82[\xf8\xa1+O\xef\x98\xfa\x91g\xea\x85\xb5t\xba\xc4}\xd9$\xb2\x99\x1b\x11<&u\xabc\xb9\xb6\x9e\xfd\x11\x9d\xcc\xe5(\xff\x9e\xba\xcc\x8dK\xf5w\x0f\xe5\xcc\xb44\\.1b\x8fh\xc1\x81\xd7@\x14x\x95\xa6\xccF\xa9N\xd7D\xbe\xc2\xebo\xb8\xe1]\xf8*`u\xe4\xa9\x08\xe8C\x0e$\x03~**\xcf\xf1\x8cu\x17-\x81\xf3=\xe5s\x8eN\x0bc/\xcf\xa6\xe9/\xb2(a\"*\x10\x1b\xaa\xeb\x84\x18\xdbQ\x82\\\xf1\xa9#\x81P\xf9c1\xe7\xf2\xac\x1et\x02\x8d\xdd\xc0\x12\\\xa1=*\xd2k\x0f\xe0\xaa`\xb0\xd7o\x82\xc1\xec\xe7:\x1a\xcc\x83\xea~\xa7\xd7'c\xbd,\x8c3\xf4\xce\xe0\xdd\xa8k\x8d;\xc3n\xdf\xe8\x18f\xd7\x18v\x8c\x1e\xd6\xfa]k\xd4\xe9w\xad\xf1;C\xef\x18#<\xd0\x06m\xf1\x1b\xb7W\x90\x05/\x90\x16\xef\xd7~\xa4\xa5a\xfe60`\xe1\";\x01\xc43\x10\xbfz\x8a:;\xa8u\xfb\\g\x03-\\\xdc\x87\x97\x1f\xe3$\xa0\xd5\xbb\xa5\x8aG+/H\x0f\xc4!\xbb\xfcG\xf6cc\x04T \xab\xd1\x1d!\x7f\xc2\x9f\xe3\xab\x86\xff\xae\x81\xfcN~\x14\x08\xf8\x1eo9<\xaa\x04od\xb85\x84\x1c\x9e\xb8D\x95\xad\xfb\x99\xc3F\xe5\xc9\xb2\x02\x9a\xd4W0ub\xf2\x97\xbdR\x9a\x97M\xc2\xbdz\xc1)1{\xeb\xfc\x0b\x0f`\x9a,\x96b\"7Qh\"\x7f\xef5\xcd\x9e \xd1\x9e\xe5-\x86'\x85Ap\xb2\xe8Y\xdf\x13.\x0f\"\x06:w\xbc\x86S\xd5\x13_\xa3\x0d\xf0;\xe9\xcd\xde\x1c\x9f\xe3\xde_\xce\x92[\xac\x07\x90\xddEo\xdd\xf6\x02\x0e\x0b05\xa8\x0d\x99\xf9\xeaQ\xda\x17*F\xc0e\x97\xfa\x82\xc3Q\x1f\x1c\x02\xde\xc6\xa7>\xd8\xb0\xdf\xeej\x91\xb5\xc5F\xc3\xe3\x98\xd1Q \xf1\xda\x90\xa3\xb8\xe4\xa7\x83\x18&\xad#\x12\xc7\xa6|\x90\x08\x0cLM\x0b\xa3\xfa\nVf\xab\xe6\x15;\x96B\x85\xf3pw\x90\x1e\xdai`T\xc2\x19\x8ca\x95\xcd\xcc\xbe\xcc\xa7\xae\xe4\x08\xb7\xe6Ni\xd5L\xba\xd0\x0b\x87,\xf1\xa4\xce\xf4Ty\xcf\xb4\xf4\xec\x0f\xc4\xac\xa9U\xdb\xdaq\xe0\x05K\x903\xb7|\xab^\xdcR\xddn\x17\x1fV\xe4_Q\x97\x8du\x7f\xcf\xfe)\xa7\xe5\xee<\xb6\x1d\xa4\xe5\xabZjF\x84\xceBEq\x18i\x81\xed\xb3\x87\xb8\xa9\x15I#\x1d@\x9c\xfbx\xa5\x18\xcb\x06\x10(X\xfb\xb2\x0b\x8f9(\x0b\xb1\xed\xf4 \x9e4\xba \x8a7(\x16\\\x1f{\xb6\x0bYd%\xa2\xebW\xf47f@\x06\x9dU\xbf[\x9d%\xaf\xee\x1e\x94\x01E\x8fUcE\x92\xdas\x8c:i\xf55\x16So\x01\xba\"\x9b\xd5\xd2eQ \xf8\x85\xdb u\x1f\x82H\x82i\xc4\x9dNy\xe5\xf0\xeb\xfaKWik\xa3\xdb\xe1^\x0eE\x1c|\x87I\xbbN\xe8G\xeb\xack\xadc\\\x0f\xcd\xfc\x91~\x10_\x1cC\x07\xf5E\x9c\xaa\x9d\x88&l\xce\xf5\x978\x9c\xdbX+\xea\xfa\x8f\xbe%*\x90\xb4\xd6S9\x00\x92g\x9c{\xd50$~=S\xf5\xaa/\xc0\xdd\xcb1C\xe0\xed\xb9\x03@/\xc3\xa12nZ\xb5>?\xaf~\xe0\x99\x94\xc3]\x9a\x9fLJ\xe3\xac?\xd4\xbcX\xafg?\xd6,`\xc0\xf8tu\"\xa5O\xbe\xe2\xab\xd8\x84\x82ZU\xde\xefN2IZ\x12dp\xa7|j\xda\xac\xec\\\x80B\xaa7\xb7)\xe9E\xa2\x91fl\xe9Q{\x0f\x03\xe2\xe6 \xf0V\x9f\x92m\xfe\xea\xc6\x9c\xed\x99\xact\xd5vz\x8cI%\x13\xd7b\xf2c\xf2\x8a\xeb\xb7\x9e\xda\xa9Bf\xae\xaa\xbe\x8c\x93\xb0/\x93\xe0\xce\x02\xc1\x1f\xd52\xf9\x17>Ix\xd2\x97\xcdJ\x86B\xfa?\xfe\xc8grI\xc4\xd1\xd7O\x99\x14\x99\n\xba1\xfa\xef\xb5\x17W\xaf\xc7\x11\x0d\x12\"*\xf86+\x1c\xe0i\x03\xfasCM\xca\xac\xe2\xf6\x97R\xf0\xf2e\xd0V1\n\x0e\xd8o\xae6\xb2\xa0]\x8a\x82\xc4\x0b\x99l2\x81\xf0\x14^\x9csLW\xe5?\xccBT&|m\xfe\x13+\x8d\x91+V\x81\x1f\xa5\xfb?66^\xa3?\xf8\xc4\xb5ID\x03\xe5\xda\x91\x8b\x0e\xb8\x17\x0cJ\xb9\x97\x93=\x15L\x0e\x8f\xe2\xd0\xad\xee%5\xc1<\xffjH\x8c\x80\xab\xee\xfc\xa6^\x1aFs\x9b\xfeb\x0dpE\xa7|s\x0eDZ\xfd\x17~\xcd`\x89\xb1O\xdb%{r\xbe\x07\x14\x98:U\x95\xe7\x06\xd9!U%WB\x8eb\xf9^3\xbbIR\x1c\xb9\x90\xaf_\xd8cD\x95\x84E\xca\x06\xd8\xcc\xe2#\xd1\xca\n\xf5+J\xd61\xae_\xd3\xf7d\xad\xe7m5\x9b\xd6\x9b\x93\xea \x01\xca/r\xa2\xc0e\xaevfO\xd8{\x9dy)\n\\\xf56\xb4\xcc$\xa5\x86\xf8seV\x7f\xb8\x80\xbeJV]h\x12\xdf*\x91\x8b\xd3-f!\xed\xf4\xb3WOw\xeb 8\x99\x0e\xa8\xe3p\xa76\xa9\xbcgG\xcf\x9aJ\x1d\x82\xf6\xd2<\xc0\x92\xbf\x19\xf2\x18\xa1\x8a\xa9\x9f\x93\xa3\xd7\xc8\xd1\x9b\x94\xff!\x94#t\x0b\xea\x04$\xb0\xee(\xcf\x0dR\xbf\x1f#<\xf5\xb4\xbc\xd5$\x89D\xc88\xae_\x1e\xf2\x90\x9c\xe1$\xae\xd5Q\x8b\xa8\xb2qG\x0e:^\xb0\x08\xeb;\x1d\xc0K(\xb3\xf2\xce*\xbf\xee\xd7\xf5m/`\x97urt\x87=\xc4\n\xc0\xb1w\xc6?\x8c\x80g\xc5z\x89\xe0w\xda+\x0f\x0b\x19\x0d\xa0\x02\xf6\xf3\xc8\xc5C\x13z\xd8\x87\x1eZ\xc7\xbf9\xa0\xa0,\xdenU\xad\x8f\x8b\xdbb\xea\xe9C\xdd:\xf2\xa4.\xf4\xee\xf7\\\x0e\x9b\xd5\xeeQ\x1b\x11-\xb6\x80\xae\xc9\x16\xb5\xd2\xef\xbc3\x16\x83\xb1\x03xay7\x9f\xdc\x9f\x02\x98u\xe7v\x824\xe0\xe80\xa9\x0b\x93:\xdbZ\xcf#G)Qh\xcc.\x9bF5\x07O{w/\xc1\x95\xff2\xaad\xc1`\xb5\x1c\xae(\xd6\xef\xe4\xcb\x9d{\xc5\xc0\xc2.\x8d\x93u\xc4\x1dd\xb5\x86\xcc\x01\xb7\xa1;\xea\x8f!\xf3\x92\x92\xe7\xaf\xdbST\x057T\xd9\xebt\xa5\xcd\xd3\xe0i\x01\x0e\xbd6\x7f\x8e\x17U\xc8\xa5,\xeeK\xbba\x80\x0e\xf2\x14rN\xf8\xa4\xa6)M\xd4\xcf\x1a\xbb\x912w\x88\xd7\x040)\xd0&4\xd1\x9a\x97\xe3\x01\x9c\xc0\xe4\xa1\xc1\xdeo(\xd2\x89-\xa7\xe6d\xdc\xe1M)a\x1dl8E3#v\xcd\xcbc\xffV\xb4\x13\x1d\xb7bH\xeb\x8f\x8e\xf3\xc1\xbe\x94\xae\xf5&\x9a\x84\xa0\x08\xa3\xd9\x1b\x90R)Q\x1c\x87q\xc2\x0e\xa8\xd4\x06\x18?Y=y0M\x9c0BIg\xd5{\xfa\x94\x9f\xb3\xd2\\\xb4\x90\x1f\x8b(\x1b\xaa1V\xe9\xc1\x0eXu$\xe2\x92\x9acc\xf4)b^\x80E>\xe5C\xd2\xea\xfaZ\xebd/\xf9&\x15-v\xf9;\xdb\nx\xd3\x0b$e\x8fl\x08\xdf=\x7f\x92]\x05U&\xc4\x8b\x9f\xc0M/\x86\xae\x882\x9f>P\x9e\xb4\x06S\x90\x8c\xd6a\x8f\xba\xac\xa44P+\xb99t\xc7\xb1\xf0\xb7\x03x9\xad\xbc\x971\x02\xeej\x8c~\x9a4\xaf\xc6\x02\xdfAV\x00\x0d\x9e\xd6hH\x0d\xfav\xe0\xff\xb4,\x94\x9d\xee\xf2kaq\xb7\no\x9aTZ\xe5\x1d\xf9J\xef\xff\xbc\xfc\xdb_;I\xb8\x8e\x1d4\xb3\xa3\xc8\x0b\x96\x9f\xee\xde\xfd\xd20\xea:I\xd2\xf5\xed\xe8o/\xff\x7f\x01\x00\x00\xff\xffPK\x07\x08_;\x94/\xe8Y\x00\x00\xa8X\x02\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xbdY\x97\x1c7\x92&\xfa\xae_\x81\xe1C\x8b\xecNFj\xed\xd3\xc3\x19\xf5\x19*EUe_\x89\xcc\xcb\xa5\xe6\xce\xd4\xa9\x93Dx \"\xd0\xe9\x01\x84\x1c\xf0\\J\xad\xff~\x0f6\xdf\x02\x9b{x&S%\xb3\x07)\x19\xee\x8e\xc5\xb0\xdb\xf7\x99A\xdc\xe0\xcd\x86T/\xd0\xe7_-\xbe\xf8\xfc3\xca\xd6\xfc\xc5g\x08I*K\xf2\x02\x15\x98I\x8e\xce\xb6\x982\xf4\x1cm\xde^\x9c\xa1?aIn\xf0\x1dZ\xf1B|\x86\xd0\x8a\x88\xa2\xa2{I9{\x81^\xa2\xb7\xaf\xde\xbdG\x94IR\xadqA\xd0\x9aWHH, \xfa\xa5&\x15%\x02a\xb6B\xb2\xc2L\xe0B}\xa3\x92\xb8&\x95\xd0\x9f\x7f\xb9\xf8b\xf1\xc5g{,\xb7B\x95\xe1T\xe7~J\xf6\xbc\xd8\x8a\xd3\xeb/O\x8b\xba\xaa\x08\x93\x97\xfa\x17\xf5\x06B\x1b\"\xcd\x1f\x08\x89z\xb7\xc3\xd5\xdd\x0btf^{\xa5\xdeB\xfb\x8a_\xd3\x15A\xf6[\xa4\xbfE|\x8d\xc4\x9e\x14tM\xc9\n\xd1\x15aR\xfdY\xd9\x94\xf8\x9eTX\x95\xee|\xd5O\xcd>\xaf\x88\xd8s&\x88pY#\xf4\xf9W_|\xf1y\xfb\xcf\x03\xbd\x88\xba(\x88\x10\xeb\xbal\xbe^t\xde\x16\xc5\x96\xecp\xf7{\x84\xe4\xdd\x9e\xbc@|\xf9\x9f\xa4\x90\xbd\x07\xfbJ\x15P\xd2n\xfeF<\n\xea\x8aIQ\xc8\x8a\xb2\xcd\xc1\xc35\xafvX\xbeP\x8d\xf7\xaf\xdf4OWd\x8d\xebR\x86k\xc6P\xcd\xc8\xed\x9e\x14\x92\xac\x10\xa9*^\xddg\x05u\x06\xa3*V\xf0\x15 }\xa0\xfa\xe9\xa6i\xf5V:\xaa\xf8\xfa\xab\xc1\xd3\x1d\x11\x02o\x82Iz\xcb\xb0\"\x12\xd3\xf2\xa02\xee\x1b\\U\xf8\xee\xe0\x19\x95d\xe7\xf9$\xa26#a\xe5\xb5\x9f_\xd6U\xe9\x7f\x9a\xe8$J\xaeqY{\xeao$\xf9u\xab\xdd\xe5\x9d$\xf6\x95=\xae\xf0\x8eHRu\xca\xfc\x1c1\xbcS\x8d4\x1c\x9dJ({\xa1g\x94\xae\xda*\xf2KM+\xb2z\x81\xd6\xb8\x14\xa4\xf3\xc4S(\x897\xbd\xbc\xfe_\x9b\xd8\xc1\x9cc\xfe\nO6z^8gk.\x9a\xa9\xa6\xaa\x19\xa3lc\xa6\x1a\xfd\xc8~\xd4\x9bW^\x0d\x9f>\xdaY\xa5\xab\x82\xae|\x8a\xde\xdb\xf6\x86\xc9=PH\\\xc9KIwst\xe2\x15\x96\xe4\xb9J\xcb\xfb\xde\xaa6\xed=9\xa3\xc4\x84n$\x99Jhr\xefJ/\xa7\xcb\x07\xd4\x91\xc9\xb0\xe05\x93\x94mL\xced\x15\xcfv\xc9yI0\xcb\xae\xc8\x96\xd0\xcdV\xceP\x15\x9f\xfe\xf6xCY\xa0\x99\xa3\xbd=\xde\xd7\x19\xb9\x95\x97W\xe4.<\x8bG\xcb\xec\x99e\xfb\xd2\x9bJ\xfe\xeby\xa0\xe2\xae\x14\x88\n$\xb7\x04\xa9?%GK\x82\xf6X\x08\xb2R\xff\xb8\xc0\x1b\xf2\x96\xfcR\x13!\x17\xe6y 1=c\xebdT\xb2Jq\x04\xed\xb8\x90\x88\xac\xd7\xb4\xa0\x84\xc9\xf2n\x81\xce%\xba\xa1e\xa9\xf2 \xbb\xbd\xbcCt\x1dj\xb8-\xa9\x08\xc2\x15A\x8c\xa3\x1d\xaf\x88\x9a\x05\xebR\x8a\x85o\xe2\xe1\x12\x07\x16\xbdle\xd6\xe1\xf1c7\xcc\xff\x1eR\xa4\xce^kQ\xff\xc1\xea\xdd\x92Tj\x1fj\x8b\x8c\xf05\xa6%^\x96$\\\xdf\xae\xa2\xf5\x80\xb9\xd4\x89}\x16x\xfd\x06\x0b$\x88<AT\n\xb3j\xab\xfck\xb6\"k\xca\xc8\nq\xa5\xbf\x1b*\x0e\xfbG\xafox\xabd\x8ab\x96\x1cS+\xd3^K\xb2Z\xa9-53\x87\x05\xb7*\xb9m\x93@7\xaa\xcd|\xcd\xb3%\xbez\x14\xbc2i\xac\xd4\x8aZ\x99\xca\xbb\xd4\xd0\x16\x0bT\xab^\xd8\xd5\x8cW\x1d\xee\x8bw|\xd7\x96\xfb\xd7\x80\xe2\xb4TdO\xb0\xda\xd4~\x8f\xab\xa6\x91\xbeC_\xfe\x8f\xd8G=\xb5\xe8\xfe\xfd\x1d\xfa\xca\xfb\xc5o\xcd\x8f\xb0\xc5\x1e<\x85-\xf6\x03o\xb1\xdb\x15L\xcd\xdf\xa1~8X#\xec\xa2\x80\xed\xccR\x11YW\xcc\x0c\xfd\xee(X4+\x88\x9e\"6\xb4\xbfj\xeb%A\x0d\xed\xd4\xaa\xf0\x86\x95w\x883\xa2\xa6L\xbe^\x0b\"\x11\xafP\xbf\xb8\x08\x89-\xaf\xcb\x95\x9a\x8a\x04\x91\xdd\xc1q\xf4\x81\x01\x85\xd6T\x8f\x12M\xf9Bz\x1c\xcc\xa7\xb62Z\x95\xac\xde\x91\x8a\x16\xee7\xb9\xc5\x12\x15\x98\xa9\xfa\xe8i\xeefK\x98S|\xcd\x9a\x15c0\xe5\x9d\xeb\xd4J\"D\xabB\x95\x16C\xb5P\xaa\xbe\"#\xf5\xd9O\xfe\x9e\x95;Xc=\xea-\xe9\x8e\xe6jW\xbf\xeb6/\xa1\xa5\xd7,^\xdd\x1e\xac\xde6O{\xa9\xa9\xbe9T\xf6\x1a\x95d-\xddV\xc5\xee]\xec\x9c\xaeRv\x03\xc4d\xa2\xf4\xbc\xbcC\x04\x17[\x84\xf7\xfbO\xa8\xc5\xee\x06\xa2\xfd>\xa6\xcb\xce\x17J\xa3\xba\x87r$\xab\x9a\xa8\xed\x0d\xa2lE\x0b,\x89\xe9\xb6\xad\x06\xf5\x8b\xb6#u\x93\xa3\xac(\xeb\xd5`\xd5\xc7&\x17\xd5:\xbe\x16\xd33vg\xab\xb4\xe6U\xa7Nh0\xb9|8\x17\x83\xd6\x1aT\x81\xabA\xa0\xd6R\xb3\xb6\xea\xe1\xd5\x8eG5\xe4\x16v4\xd1\x0d\xe3\x15\xe9W\xc0\x8d\xc6~\x16F3\xc76\xec\xf0\x84\xe3i\xc0\x8a\\\x93\xaa\xf7i\xac\xf1\xec\xdb\xc3\x86\xa3\x9d\x0dhE\xfc#\xa1\x97\x8e\xca\x83\x98\xdd\x18\xafV\xa4Z|\xd6\xaf\xfe;\xca\n\xf2\x02\x15\\\xec\xb8x.VW\xe8\x8b\xc57_\xcf\xaa\x8d\x94\xed\xa6*\xbe\xfa\xe2\xf4\xfa\xcbS\xbd\xe4EL7\x17\xfa\xb9\xaamE\xc951s\x84\xfe\x1a\xed\xf8\xaa.\x89Y4\xfd\xd6\x9b\xb7g_}q\xd1}\xfch\xcd7]5t\xe5\x88\xb3)aj\xf4]j]\xc5\x8eT\xb1sz\xfa\x8c\x81\xba\xdb\x16\xd55M\xb6\xba\x99\n\xce,l\xa0\xa6\x853\xdd\xdbP\xc1)\x13\xe8\x7f>\x7f\xfe\xef\x81\xd4t\xab!\xc9\xaf\x08\xf3\x9e\x11]\xbd\xaew\x97[\xce\xaf>M\xd5^\xfd\xe5g\xa4r\xb7\xcb\xbf\xae\xa8\x1a\x9e\xcc\x14?\x90\x9a\xae\x94Yo\x8c6B\xa7\xc23N\x99Z\x824\x08\xb3&U\xe5v_\xef\xb5Z\x90\xdcV\xbc\xdel\x11F?\x8b\xcd+}\xc4\xaew\xefo\xc3\xa7\xfa\xc0\xc9M\xc9\xcfz\x18\xbd\\\xad*\xb5\x19q\x89!l~8l\x01{\x88\xb6\x03\xd3\x9cSS\xc3\xd2H\xdc\x9a\xa1g\x08\x93j\xef\xd0j\xd6(\xf3o\xd5\xacz=Q\xbf\xea\x0fNm9\xde^\x9c\x0d\xd2\xdb\x11\xb9\xe5\xab\xb6\xfcp\x84;P\x10\x1c\xe1f?\xc2\xe5\xae{z*\xb8\xdccZE\x16?=\xda/\xd4;\x9d\x05\xb0\"\x1b*$\xa9\xb4]O\xcd':\x11\xfbio\xfdk?\xb7O\x1f\xed\xf2w\xa0\x8d\xde\xc3O\xd0\xb5t;]\xda9\xf0\x88\x1eb'K\x9b\x90Z\x06\xcd\xf2Vp&+\\HSs\xef\xc7+\xc2\xf8\xee\xf8\xac\xcd&\x0f-\xb1 &I\xb7\x0f7\xdb\xc8\x1d\xde\xefuO\xf2\xabA\xafxG\x18\xfa\x9bb\x88-\xbf\x11\xb6\xc3\xaa<5\xf6f\xd6S!\xb1\xac\x85\xf7s\xa7\xa6K~\xc3\"hR\xc2\xac\xeb\xf6\x14:\x91\xa6-^\xbd\xfe\xf03z\xfa\x05\xa2\xec\x1a\x97tu\x82\xbetKa\xa1O 'h8a\xb6Bn%\xa9\x18.]b\xcf\xa67\x13au\xb0\x95\xd5\x04\xf2\xe6\x7f\xbf~\xf5\xf6\xf2\xc3\xebw\x17\xaf\xce\xce\x7f<\x7f\xf5C\xf2\xdd\x9f\xdf\xfc\xf0\xe1\xa7W\xc9\xd7^\xfd\x7f\xef_\xbd}\xfd\xf2\xa7\xc0\x8bn\xb9\xcc.@\x1eV\x81\xd0\x1b\xdd\nD\x9bQ\xb0\xb4[\x07\xdd4bK\xf7j\x88\xe0\xc1 \xf1[\x8b\x8dx\x14\xe4)r\xb3M\xc1\xcc\xb5\xf7i\xc7\xc6\xae2\xf7m5\x07y\x18\xc5\xbe\xe8\xfd\xcbnz\xd49\xf5F\xa5\xb5\xbc;\xdc\na\xd3\xa12rpm\xf2\x02\xb9\xbf<\xe9c\xd6\xe9\x7f\xe1\xa4s6\xb8\xcd\n\xd1W\x90\x90\x98\x15\xd6FP\x91\x82W+\x81\xb0^g\x82\x18(g\x82\n\xa9O\x9c\xaa\x01\xd5\x1cs\xed\xc7\xb4\xdcA@\xefq1[5\x9bf;;\x046\x9e1\x04\xafW\xd5\x8e\xa9\xa1\xbb9\xedY z\xbbJ\xcf\x16w\xfa\xa9\x0b\x10A@\x04\x07\xf2 \x88`|\xb4\xeb]h\xbb\x1d\xcc:_\xf9\x928\xed\xecH\xd5\x89k\xf0\x0e\x1c\xb9\xe0\xc8\xf5\xf0G.@\xcdF\xdbj\x015\x03\xd4\x0cP\xb3V\x005\x03\xd4\xec\xf7\x84\x9au\xece\xa7\xbf\xea\x7f\xfc\x96aE\xec\x18\x11\xb1\xdf\x8ch?\xf5[\x11?s5z\xf4F\xc4\xd0^i\xd2\x89.\xc3\x14\x98\xdc\xb7L6\x03F\x8c\x80\xb9\x99\x1ea\x00\x8c\x9a\xff\xd2\xc6\xbf#L\x7f9\x86\xbf\xd4\xd9m^\xa3_\x9e\xc9/\xd9(1s_\xbe\xb1/\xcb\xd4\x97e\xe8\x1bi\xe6\xcb3?\xcci\xe2\xbb\x7f\x03\xdf}\x9b\xf7\xe67\xee\xa5M{3\x19\xf6\xf2\xcdzS\x8czcl\x163\x98,\xc0b\x01\x16\x0b\xff\xf3\xc7d\xb1\x18\xee\x04b\x83\xc4\x8c\xad\xd6\xdd\xca\x9d\xa8 \x95[bH\x12[r\xdb\xee2:\xfb\x0fMb9\xa0\xaa\xd8a\xd4\xfb\xed,\xb0\x7f\xe8\xbcD\xb5\xd9]n;?\xb5\xfb^\xb5\x19\xef<\xf0h,\xb1\xeb\xa5l]\xea\x1c\xb5{1\xad\x8aZ\xfd\x93m.E\xbd\xdf\x97w\xe1\x8dog}:k?{\xa7\xbf\x1a0\xca\x86\xa71\xe9x6X\xea\xd3C\xe7\xf8\xd5\x94\x803\xf4\x94.\xc8\x02\x91[u\xdcS\x93d\xcd\xae\x89\x90nK-\x9e\xb9)\xa1\xef\xac<,\x8b}\xe9\xd1n\xacC:\xef\x8a\xdd\x8c\x19=\xe2\x9d;\xe9\x1a\xb6\x17e]\xad\x1d~;}s>}\x7fl\xca8\xe1\xd3\xf4\xe2\xfb\x03)\xf4:\xd8,\xbdv\xa0\xdeP\xb9E\xb8\xbf \xd7k%Z\x91\x82\xeez\xd6\n'\xa6\x98\xc3\xa3\xa8\x91\xd7o\xde\xbfz\x81\xdeo\x89S\xf8\x9a\x92r\xa5\xedmL\x15\x02\xddli\xb1Et\xb7/\xc9\x8e0i\xbazQ\x0b\xc9w\x9e\xe4\xccZ\xe8\xcbH\xd0\x0d\xc3\xb2\xae4\xfb\xc4\x8ck\xb5W\xd9\xf0\x0d\xdfW\\\xf2\xc8\xb2\xee\xa7y\x1d\x0c\x81\xe9\xcb\xfb\xe1\xc8~{q\x06\xeb:\x82u\xfd\xe1\xd7\xf51\x0b\x99q}\xddQ&/\xb5O\xbah\x90\xed\xa0\x07\xfb\xcf\x94\xc9\x0b\xf7ng\x01sa3Tb\x8dO;jR55\xf5.E\x87\xc9\xda\xb7\x1e\xedZ\x14V[W\xd2s\xb4/\x1d7\xf9\x0c\xf5\xb9W\x87\xd9Nh\x91\xae\x04\xb4\xdc\xca\xefgq\xcb\x98\xb7\x0f\xfb\xcb\xf4\x89\xdb\xd3\xa5a\xe6\xb6\x023\xf7#\x9e\xb9\x9b\x7f\\VX\x92\xf0\x9c}\xee\xde{\x8b%\x19\x9c7\x9a4\x90J\xc3\x1d\xc8\xdc\xc4\xb3'\x15m\xc7@o\xc6\xee%j_x\xb4\x93\xb5OS]\x89\xb6\x95=Qh\xfd,\xef\xec^\xb6=\xab\x99\x83\x08\xa2\xac\xa8\x08\x16D\xe8\xdd5e\x1a\xf85\xfa\xeb\xa5\x98ak\xea\xa9v\xfa\xbc\xd6o\xa1\xc1+0\xc3Y\x81\x19\xee\x11\xcfp\x93\x9c\xf2\xec\xb0$\xfa\xdc\xdfl\x9d\x1aKW|6\xfb}{\xe9\x0d\xf8\xa7\x07\x8eQ\xad\x16\xdcLo\xa0\x83Yw\x8bz/;}\xcb\xd8\x9ap\xd4\x04gM7Hr\x9d\xae\xe7}r\xbb\xe7\x8c0IqyY\xe0\xd2\x19w\x02y\x9b\xa4\xafqE\xf1\xb2$\x9a\x97\xe2>\"\xdd\xa4\xda%#R\x87\xe0\xb8L\xa9H \x0e=\xc8\xd0\x10j\xabB\x19\xd5\xe5\xd5#5\xf0r\xd0aa\\V\x15Y\xd5:\x0e#Z\xe3B\xf2\xc3\xb9\xd4H1On%g\x1b$I\xb5K4\x05BK\x13\xf0\xe5R\xe2\xaa3I\x1c\xca\x98\xdcm\x9a\xc8\xa4\x19x{\x87o/uWbEp\x92\x1c\x97\xed\x0e\xdf\"\x97\xa2\xe7\xddv\x1f\xb3\xa2*\xc1e\x9d\xec\xea\xed\x06\xaf\xfbI3\xfc\xd5\xb2\xb82\x07\xbc\xfb\xea\xe8B\xe2+\xd5<\x15\xb9\xc1\xd5*\xf8\xda8EE|l\x0er\xecO\x81\x15\xdf\xf3\xeaP\x07\x91\xe4\xcc\x0bfJ3\x96x\x1at\x98Ub\xf8\x0c\xb8,y\xa1c\x02a\xe1J\x84l\x89B#\x87\xefv5\xa3\xf2\xeer\xcfyp\xd1\x9eQQ\xa7\xa7\xa8V;\x9cK\xca\n5\xef\xa9%4\xaa\xac\xa4\x96\x0e\x95\x15\xd3T\\\x8f\xa7\xa7\x07\xaa\x94\xdc\x9eZ\x9a\xe2:\xec\xdb J\xb1\xe4\x8c\xbe\x0e+\xfc\x1d\xfa\n\xfd5\xf2\x1dBO[\x03\xb31Z\xab\x06x\x86\xbeCO6Tn\xeb\xe5\xa2\xe0\xbbSCo9mYY\xa7\xea-\xb1\xf8\x81\x14ONr\x93gu\xa9Yw*\xf1!Ok(\x7f\xfb\x1f\xb1\xda\xf6\xfb\xd2}\x0c\x01$y\xac\x00\xbevk\n\x85T\xa1<\x1f[\x9f\xfaf\xd2\x8a\xed 2\x18?\xa3\xdc\xe9\xdb\x99\x12\xb3\x15\xda\xe2R\xbaC\x9d%O\x87\xe6\xb7+\xba\xdf\x93\x95\x89!\x18q4\xf7\x1f\xf6\xc0\xd1\x1c\xces\x8d\xa4\x16\xd3\xdf\xfdyN\xdbC\xcc\xdb\xde\xf3\x9c~\xeeA\x14\"\x86\xa8\x8b\xae\x8d\xe5\xf1\x9e\xd8:5\xefJT\xe7 \xbf\xb1\xfei\xcf\xa8.\x85\x1c\xc4q\x82\x9c\xf9J\xe73j\xbe2%\x83\xf9\n\xe6+\xdf\xf3\xc7<_\xf5\x97\xf6\xf0\xbc\xf5\xce\xbc\xa7\x91$\xbf9\xaae\xf4\xd84m\xa0l\xef\x94\xd6K\xce\xbe\xf0hg6\x9f\x8e\xba2\xdb\x0c\xd7\xaa\xd0d\xd5:\xc1\xb4;7{\x1a\xd8b\x81\x96\x84\xe83\xaff\x8e\x8f\x9e\xe6zM\x905\xdb\xf9R9\xed\xb7\xe4\xe0\x15\xb0\xc1[\x819\xf0\xb1\xcc\x81DnI\xa56\x0d\xa7\xe4z\xa7f@K\xfd>\xfd\xd5\x1e\xb0#\xee=\xd6s\xa1syK'\x88W\x9fA\xde\x9b\xed\xecw\xf6\xd1\xa3\x9d\xe7\x96\xb8\xf4\xdb\xf9\xa2M\xd0+\xaaM\xc2M#\xee\x9f\x8e\x05\xfb\x97\x9f{\x94\xbc\xa1Q^\x8d\xac\xcb-\x16c\xefj\xe9\x15\xa1I\xc4\x15bKn\x9f\x9b\x1e\xa2&\x14\xf5Xw\x14\x81\xd6\x95>\xea\x13\xf4\xea\xcd\xcbaQ\x18\x1f\xaf\x89QS=\xef\xa8\xc9\xf6\x9d\xcf\x05\x12\xe4\x97\x9a\xa8'f)\x18=\xa9\xdb\x9e\x965\x9d\xdb \xbc\xdf9\x9d\xc0\xccm\x05f\xee\xf8\xdc\x9b\xe6\x7f\x19y\x89>\xbc\xfd\xe9\xb4\"\x82\xd7\x95\xea\xdfxg\x9dcjF\x7f\xa9Iy\xd7\x92\xeb\xed\xae\xd2\x80c\xc1\x04\xd5;\x82T\x14\x97\xf4\xef\xc4\xcb\xa55\xa2\xcd\x8e\x05/\xd1\xb2^\xafI\xe5\x1am\x81\xdeo\xa9p&\xd3]-tlI\x89)C8\x84\x86 T\x12,\"\xf6^\xce\x08zr\xfa\x04\x15[\\\xe1B\x92j\xa19\xc3%\x16\x12 \xb2\xd9\x91\xd6)\xf9\xc3\xdb\x9f>\x17C*\x7f_t\xa1*\xb2\xaf\x88 ,\x92\xabJn]\x97\xe5\x1d\xfa\xa5\xc6\xa5\xb9\xc4K\xeb\xd7\xf9?+M>\xc5\x02Q\x16N\xe4\xa3*\xca\xe9\x86\xf3MI\x16Zg\xcbz\xbd\xf8\xc1\xde\xd8\xf2\xf1\x99\xa9\x89N\xb6\x8d\x8f@C\x80\x95\xf6\xc1\xc6\x8c3Z\xe0R\x8f\xa1p\xceO\xc9b\xb38Q\xaa\xd5x\xd4\x93\xc5\x135m1.\xd5\xbcH\xf6\x92\xac\x9e\xf9I\xd9F\xce\x19\xda+e\xd3\x82\x9c I\xf0N\xa0Z\xd4X\xa9c_\x91\x82\xef\xf6T\x9b>\xad\x81vI\x19\xae\x0eG\x98\x13\\\x96Z_\xed\xde\xfb.\x9c\xb5\x99\xeb\x10\xd5\x9e\xd0\xb5\x9an\x995\x023InuS\xbfdw\x0b\xf4g~C\xaeIu\xa2\x14\x11L\xec\xc3\xdb\x9f\x84\xa5\xde\xa8\xa4\"aD\xed\x0cJ\xd0\xc7\xad\x94\xfb\x8f'\xe6\xff\xe2\xe3 \xe2\x15b\xdc>=\xd1\xbd\xb1\xc0\x0cq=:\x95F\xc2 \x12\x89\xea=\xc2\xba\xee\x91|Iu\xad\xbd]\xb0D;\xbc\x17\xa6k\xe9\x92K\xde\\*\xa1-\xf1T\xe5)\x10\x0e!Ajf-K~#^D\xda\xf6\x9f\xd1\xf9\xba\xad\x91\xea\x16\xf6R\xa9USi\xcd\xc1\x17\xa2\xde\xa9#P$\xa1\x97\x0c\xfd\xf9\xfd\xfb\x0b\xf4\xa7W\xef\x11gn\x08\x9a1v\xa7\xc9\xfc8\xf8\xf5_\x87\xc3\xe2\xfd\xdd\x9e\xfc\xed\xaf\x7f\x0b~\x80\\4!f\xfb\x9b]Ft\x0b\xed+\xbe\xaa\x0b\xa2\xfd\x0f\xd5\x12vHMp\xf2\xcf\xe8\xe5~_\xd2\x02[]V\x06p\xb81pC\x81\x0b5\xb7p~U\xef\x91\xf3\xbf_b\x11\x819\xf8\xa1+~_>\xbc\xfdI\x97q\x8b\xafu\x17\xdcu\xc6\xd0\xca\x0c\"\xec\xaa\xa4\xfe\xbe\xe6t\x850\x0bw,d\x0b\xa8\xa7\x8f\x8a\xacyEN\\\x02*],\xe9\x92\x96T\xde!F\xc8\xcaE\xd1\xd0S^u\x1d\x05l8S\xd3,\xdb\x18\x8a\x83\x1e\xb3\x0b\xf4\xf4\x83 \xee\x02E\xa5%\xd5=\xd5\x9ce\xfa'fx\x13\xab\xfd\xb2\"\x06\xc4\xb4 /\x9e\x85{\xd4k.\xc9\x0b$\xd5\x1a\xb2\xaeYaF\x98\xaa\x87\x9d\xbb\xac}\xb2\xbc\xeb\xc6\xad\nO\x97\xaa?r\x1dg%\x1c\xae\xca\xaee\xcbz\x8d*\xa2V\"r\xa2\x81\x1c\x13\x9bDe\xaa\xe3\xbb\xe8\xed\x9d\x1b\x97\xc1\xa4t\x14\x1d}/\xdb\x0d\x95\xdb\xc8\xe2r\xb7'\x0b\xd3\xff\xf1\x9e\x8aE\xc1w\xb1\xd9\xf8\x9d\x1e\xa9\xc2\x84\xce2\xf1b\x06\xb3\x14zj\xb7\x9f&\xd8\x89\x19\xda\xa1\xa8\x8e\x08\xed\xe8f+\xd122)\x99\xa06Tv\xdco\x8c\xa9\xc4^iY Av\x98IZx\xc3\x9e\xdd\xcb\xf1s(\xb9\xbb\xa4\x9f\xd5t\xb4$&\xde\x0b]u68\x07\xfb\x18\xbb\xb8\xe3%\x0fE\xffS\x13vs\xab\xa7nG\xcf{9%\xfb\xf8\x92\xdd}t\xdb#}\xec\xc5\xd5\x92\xcaJ\x0d\xe2p \xbdI\xb95\x02k\xf2\x8bq\xd3\xf27\xad\x9a\x9d\xf5BcJ\xb8\xeco\x0b\x07\xdb\xbffW\x17\xe8\x9a\x17n\xe0\x94t\xa9\x8bm\xd7\x11\xa1\xc9\xad\xbc\xd2+\xf8\x1e\x17W\xa75S\xffS\xeb\xb6\xe9\x17\xfe\x11d\x17\xfa\xf0\xc6\x86\xafQ-\xcd\xc4\xe6\xa6\x07\xa1&V\xbcZQ3W\xa0\x0da\xdag\x7fe\x0fZ\"\xc6@P\xe51M\xe8\xcf\xef\xd5-V\x9d\x1f}\xf9\x02]\xa8\xf2\xaby\xc1V\x057J\xa7\x0c\x9d\xfd\xcb\xbfD\x96\xc9\x1f9Gk\xce\xd1wh\xb1X\x84ovR\x85\xc1\xec.\xfc\x02fw\x0bU\x8c\x1f+\xbe{\xba\xe6\xfcY\xf8\xd5\xc5\"\xbc\xfe\xd15z\xaa\x92\xfa\xa0+\xf2\x9e?\xfd'\x95\xd6\xb3\xe8EU\xb1\xf4~\x8b\xeb\xee\xab\x84\xee\xfe\x03_\xe3\xd9\x94\x87\xbe\xd3{C\x95\xcb\x0c\x1a\xa2\xe2\xe9\x8f\x9c/\x8a\x12\x0b\x91P\x90)\xa2\xfa\xc8\xd4\xb1\xf3a\xb8\x0c\xbf\x05\x9f\x9c\x9e\xaan\x9dW\xc6wxG\xd4\xd6\xe9\xa5)\xed\x86\xc8\x1f\x8cI\xe1\xdc\x86Kx\xfalJ\xe1\xbd\xe9\xc4\xea\x12\xed\x05_'z\xc1\xc5\x9d\xdcr\x16\xe9\x07\xa6\x8c?r\xfet\xb1X\x84\x17\xb6\xa6\x0f<\x8d\xbe\xa3\xc7\x91\xee!S;\x88J\xe4\xdch\xfc\x87W\xef\xce\xde\x9e_\xbc\x7f\xf3\xf6Yh\xbdC6[3\xe6\xe2\x19\x9b\xac\xa3\xda\xfc&\xa1\xcd?\xc5\x186J\x93/\xbeC\xff\xb4_.~\xe4\xfc\xd7\xc5b\x11\xee\x87\xaa\xd0'jC\xad\xbe\xc0\xecn\xbf\\\xbc&7\x89\xf2\xd3\xb5\xfe\xe2\xbf}\x87\x18-\xe3\xf7\xdf\xc5\x94\x1c\x19\x1e\xf1\xef\x06\x15\x8c$cKj\xea\xb6\xf8\xc0v\xb8\x12[\\\xbe\xe7f\xf2\x98\xab\x1a\xdeg\xef5\xaf\xba\xb8j\xd6)w\x08C\xcb\xbbvK\xeaVV\x13\x9a\xd6\x7f\"p\x11\xedj\x11\xd8\xcf}\xee\xd9n\x9e\xae\xeb\xb2\\\xe8\x07j+\xff9\xc2\x9d\x9d\x80\xda%\xe8;\xd4\x03\xeb\xa6\xe9s\xfe\xcc\x9ae\x97\x95w\xee\xcc}`Hi\x8e\x10\x08\xaf%\xf1\xe1`F\xb4\x8d\xe7\xf3\xd3\xcf\xfdY\xd9\xfd\x82+\xb2\xb6\x04 b\xc7\xc8\x935\xe7\x8b%\xaeteoO\xef\x16\x7f\x7fb\xb4\xa8\xcf\xa5\xde\xf4\xc2\xc7t]\xd4'*\x8d\xd0V\xe1?\xde\xbdy\x1dx\xa4ZZ=n\xadNf'\xcd\xd5,b\xb7\x81\xe6d[\x0b\xe2L\xcb\x9b\xba\xc4\x95?\xbd\xc3d\xd4'+\xd2n\xdcN\xdaK2\xed\xacpb\x0e$\xbe\xe4p\xc0~\xd5\xd9T\x19\xbf\xfc\x8f\xffK)\xe8\xa35\xa74\x1b\xd7n\x13\xf8\x87\x81\x9d\xb6^D\x8e`\xb8\xb8RsWk\x12X\xd3\x92\x84W\x1b7\xd7]\x90Jp\x16\x1d\x9c\xd6\x16\xb9\xa6\x95\x90\x97\xba\x1d\x13\xf7k\xda\x0fT\xd7s\xef\xfbo\xd7\xd4\x12\x18\xddJb\xa5z\xa2u\xf9\xe4\x05z\xe2\x1b\x9b}5,L-\xa3l\xd0'\xba~\xaf\xf1N\xa5\xf9?M\x15\xfe=\xfa\x81\xaa\xdf\xe0\xfd\xb1\x95<_\xdb#g\xbf\xaf\x99\xde@\x05\xba!e\xf9\xfc\x8a\xf1\x1bG\x8d\x14\x08\x87\xc37\xb81\xe4{\xd2\xef\xf2'.\x00To\x1c\xb4\xd1\xbbmqT\x07\x0e\x1c/\xb1\xe9\xd2\xfe\xcc>\xea\xc1\xe8\xfa\xf9\x96\x97\xabn\xe0 3\x94)k\xc6\x87%\xa9\xfa\x932C\xc6\x9f\x8f.\xc2\xa2Y\xd4\x9f\xaa\xd9\xcb\xa9\xf0\xc08\xe6l\xc6\x7f\xfb\xeb\xdf\x9eE\x06\xd2\x1c}\xae\x9fa\xbc\xdbiU\xa9$\xbf\\|\xf5\xe5W\xe2I\xa4\x0b\x99\xff\xc7B\x0792v\xfbU\xef\x1c\xed\xa2\xffX\xf8\x8d8\x90xKn\x9bg\x92w\xc2\xbd[\x04P-\x0b\xdd\x89\xe9\xbe\xa2\xfd\x1c\x80\xe0\x16\xa8\x159(x\xc7_\xfd{\x8b\xef:@|\x80\xf9b\xe4C}\xf5\xda\x87\x91\xa0lS\xb6\x15x%\xb7/#\x10\xba\xcd\xc9>\x02\x08\xdd\x0f\xa1g \xc4V\x91c\x10\xe2\xbe\xee\x9d\x00Bl\x05\x10b@\x88[\x01\x84\x18\x10\xe2V\x00!\x96\x80\x10\xfb\x05\x10b'\x80\x10\x03B\x0c\x08q\xe6. \x10\xe2F\x00!\xee\n \xc4\x80\x10{\x04\x10b@\x88S\xca\x07\x848\xf8\x0d \xc4=\x01\x84\x18\x10b@\x88\x01!\xeeI.Z\x07\x08\xb1\x16@\x88\x01!\x1e\x8f\x10;\x1c\xf0\xd3!\xc4\x82\\\xaeI$\x08\xf3\xbfwqaA~$C\\X\x10\xb4&\xcd\xd1|\x8fu\xfc\x96e\xc9\x8b\xabaTf\xfd\xe3I\xdb3\xa8\xf6\x8d\xa5;Zb\x1d\xcfjM\xc8\x0eWWD\xdap\x08\x9f\x0b\xbbT\x9f\xa0e-\x11.\x05G\xc5\x96\x14W\x02\x95\x9c\xad:q\x15\xb7\xb8Z\xadyue\xef\xc3\x0b`\xcd\xba\xf4\xf6\xd1#\xc6\x9a\xbb-\xd2\x95\xa8E\xca\x85\x7f\xb4_\xbb\x1e\xf8\xea\xfc\xe2\xcbo\xbf\xfd\xefM3\xf5\xbe\xeb\xd5\xcf\xc2\xc8ZG\x0d\x8cln\xfb\xf4'\x05\xf80\xe0\xc3\x80\x0f[\x01|\x18\xf0\xe1V\x00\x1f\x96\x80\x0f\xfb\x05\xf0a'\x80\x0f\x03>\x0c\xf8p\xe6. \xf0\xe1F\x00\x1f\xee\n\xe0\xc3\x80\x0f{\x04\xf0a\xc0\x87S\xca\x07|8\xf8\x0d\xe0\xc3=\x01|\x18\xf0a\xc0\x87\x01\x1f\xeeI.V\x07\xf8\xb0\x16\xc0\x87\xffQ\xf0\xe1|t\xb5\xe0\xab<\xe7\xdb3\xbe\n\xbb\xdb\x96\xa5\xbeJP\xf4<l\xa3\x91\xa9Ur\xf6\xf7G\x8bs\xc60\xb7D$f\xaf=\xe5 Zt;\xb8l\xdf\x1f\x84\x88\xc6\xac\xc5\xe7m\x0b\xf5\xe7\xfe^\x8a\xfe\xeb\xbc\x95\xa2\xc7\xf8\xdc\xeav\x86\x0bE\x00P\xf5=\x07@\xb5#\x00\xa8\x02\xa0\xda\n\x00\xaa\x12\x00U\xbf\x00\xa0\xea\x04\x00U\x00T\x01P\xcd\xdc%\x01\xa0\xda\x08\x00\xaa]\x01@\x15\x00U\x8f\x00\xa0\n\x80jJ\xf9\x00\xa8\x06\xbf\x01@\xb5'\x00\xa8\x02\xa0\n\x80*\x00\xaa=\xc9\x05\xb7\x00P\xd5\x02\x80\xea?\n\xa0\xfa\x90\x0e\xb7\x1a\x05\xfcT\xde\xb6\x05\x17;..G\xdcM|\xa6\xbf\xc8\xb8\xa1\xf8sa\xdfE/\xfbX\xe6\x00\x18\xee$\xf7\x99\xab\xea\xa3E\x88\x8d\xb6L}Fa\x7f\x07pp7%\xd7Y\xcc\xafM7qf\x9e>\xae\xee\xc4]\xe1;\xb2\x18c.\x0fnn \x1ew\x7f0r/^\x9a\xa7\xf3\x96\xd0\xfa\x15\xf7\xb3\x18\x94\xd0\x16\xab\xf7mF\xcc\xea^g\xccB\xd1}\xa9\x9c\xf6\xfb\xf4\xe0\x15\x08gm\x05\xd0u@\xd7[\x01t\x1d\xd0\xf5V\x00]\x97\x80\xae\xfb\x05\xd0u'\x80\xae\x03\xba\x0e\xe8z\xe6. \xd0\xf5F\x00]\xef\n\xa0\xeb\x80\xae{\x04\xd0u@\xd7S\xca\x07t=\xf8\x0d\xa0\xeb=\x01t\x1d\xd0u@\xd7\x01]\xefI.\xd2 \xe8\xba\x16@\xd7\x01]\x1f\x8f\xae\x7f\xea\x0b\x8f\x89\x90t\x87%\xb9\xdc`\x11\x06\xd5_\xd9\xb7\xfe\x84Ekk1U\xfcH\xe4\xf6\x92\xb4\xcf?\xa2j_ \xbc\xa76\x8d\x1e\x9a\xdeI\xe73W\xabG\x8a\xa57\xfa\xe8J\xd4&\x94\x87\x0bo\xb0\xe8\x05\x89v\xaa[\xa9'\x9fy>\xe8\xe8\xac\x81|\xb5\xa1\x9d\x88^\xbb8]4i\x00j;x\n\xa8m\x9e\xd5\x0f\x01j\x0b\xa8m\xf0M@m\xb5\x00j{(\x80\xda\x02j\x1b\x12@m\x01\xb5\xd5\x02\xa8-\xa0\xb6\x80\xda\x02jk\x04P\xdb)\xc0'\xa0\xb6\x80\xda\xb6\x02\xa8\xed\xa1\x00j\x0b\xa8-\xa0\xb6\x80\xda\x02j\x0b\xa8-\xa0\xb6\x7fx\xd4\xb6\xda\x84!\xdbj#\xda\xf9Q\xa8q\xf9\x9fj\xe8\x1b3\x81[\xbd\xf4O\x16\xd9\x1c\x02\xb5\xbfXt\xd5I\x8b\xd4\xaeq)\x12P-\nY$\\\xd97X\\\x16x\x1f*\xbe}\xdc@\x82f\xc66\xeb\xf6\x06\x0b\xa4\x9e\x19+]-\xc8\xea\xde\x8a>\x00=]\xe1\xf7\x15\xdfsA\xaa\xcb\x04n>|\xcf\xad=\xaa<D\xa8C\xb7\xb9\x1f\x992\x0d\xa5\x9b\\\xef\xad2\xdev(\xb6\x98\xb2K\xba\nUa`\x8cq\xaf7T\x00\xba\xff\xf2\xdbo\xcd\xcf\x88\xaeTw\xd5\xd6\xbf\x8a\xef|5\xed\xa5\xb5%xE\x0e\xf8\x01\xb3U\xb7\xdbt#\x98\x03r{Y\xe0\xb2\x8c\xb0\x06\xe4\xf6\x0c\x97\xa5\x971\xa0\xbe\x8cS\x05\xcc\xc7\x9f\xb9\xba=R\x9a\xc0\x16\x8b\xed(@\xb9\xc1\xf5\xbd\xc6;\x95\x9c\xeb\xfb\x0dyDV\x98 \xac\x8dR\x83\x01`@Q\xf5\x91'\xad\x15]\xafI%\x9a.\xe6\x9b\xdb\xdf\x13\xb62\xcd\x8a\xc4\x16\x7f\xf5\xed\xbf\xf6J\xd0\xcdX\xc7\x81_\xa0w\xc4\x9b\x8e\xb6\x15\xbf8=\xddP\xb9\xad\x97z\xda\x97M\xd2\xdd?\xa9\x105\x11\xa7\xff\xfa\xed\xd7\xff=\x00\xafUdM*\xc2\x8a\xe1\xbaW\xf2\xcd#\x81\xe1\x83\xf1\x15\x8cd\x98\xa0]\x8c\x80\xfed\xa76\xbe\x15.\xa4\xd9\x84\xb4\xf6F\xdd\x19\xae \xf3\xe3\xdc\x92\xefi\x91(\x8c_?F\x82Z2\x92Q\x9b\xde\xc03\xc5\xd10\x1f*\xa90\x00\xba\xf9\xad{\x0e\xed\xd6\xd7\xbf\xb7_a\x89\x8fPq\x86\x95?6\x10\x8d\xa82\xd8\xdd\x1a5\xb6\xe7\x92\x1e\x96\xff\xc4!\xd8\xc1t^~\x7f\xfe\x9c\xb0\x82\xaf\x02\x10\x99\x9e\xf2\x83\xd1(\x8c\x8c\xa8s\x80\x81d$]\xebni\\\xdfl\x96_\xa3\x8d\xe1\xecp\x13\x01\x8e)+\xca:Tsy{\xe9\x9fB\xed\xe3t\xa5m}lBn\xb9\xed\x16.0?\xea\xcc)[\x91\xdb#r\x1f\xa3r\x97\x9doz\xb5\x16\x87\xc3\xb5\xdf\x89i\x94yt\x95l\xfb\xee\"p_-\xff\x90\x9a\xef\xa9\xbd\xe4\x9b\xb4\xba+\xb2\xe3\xd7d\x15/\xdf\x92\xf3\x92\xe0\x10J\x9c\x03\xd5\xa16+\xdds\xab\x9a \xba68\xb5*\xe7\x8d&\xf6]\x93J\xad\x03\xab\x9ah\x14\xdfl\"\xc3G\xb5\x8a\xf0j\x83\x19\x15z3\xb5@\xff\x87\xd7\x868\xb1\xc7w\x08KIX{\xba\xa4\xc2\xda`h\x98\xbau\xc7kT\x91\x82\xd0k\xad<\x11\xceYn+^o\xb6\xfa\x14\\JR\x99=\xeaT\x1c\xf3'\xbe\xe9^I\x83Yk\xbdt\\\x84\x92\xb4q\x9d\xd4\xebj\xe5\xf4\xa6\xe5\x8eG\xb8\x99\xb5\xfd\xb5PJ\xd7k\xadf@\x08\xbb\xf0\x1a2G\xbb\"\xdb\x05\xe0\xa77\x7fB|\xaf\x03da\xe6\xef\xe5B\xf2\x8a\xacNu\x07\xd4\x1f\xfa\xb3U\xa91\xbe\n\xe2\x85\xaf\xdf\xbc\x7f\xd5\xec\x17N\xdc\x82\x8a\xd9\xca,Q\xaat\x85\xda\xe12Q\xdb\x06\x15\xba\x02\x81\xbe-\x1a^\x9by7`\xa7\xab\xd4Q\xb2\xa2\xd7du\x82\xe8\x82,T\xab\x1ab\x89\xd3\x80*\xb38A\xcbZjB\x83 E]\x99j\xfa\x12l\x8ax\xd8#\xd2\xfdA\xf5\xbc\x81mp0\xc7;\xcb\xb2\xe9&\xcf\xdb>\xe2I\xcdm\xae}5W9\x0dKX\x119r\x9b\x1f\xdd\x80\xc4&\xe2\x8a\xc86\xa6\x93\xac+Fl+\xeb\x8d<\xb9\xde5\x105zjxD\x88W\xfa\x0dOb\xcd\x9eEc\xf7f*\xf1\xd5\xd9t\xe3!\xf6r\xbd\xbb\x1cO\xdbmj\xe7\xben\x8e\xc0\x96bl\xeb\xb4\xbcC\xd7;DnIQ\xab\xca\x0cR\xd9`qY\x0b\xdf\x0c\x9c\xa5\xf58 \xdb\xabw\x97c\xc3\xc2\x10h\xcbo\xd0\xae.\xb6\xda\x92\xa2\xe6b\xd5\x83\xeb]3\x03xR\xe9t\xca\xde\xd3^\x07\xffYl\xdc\xb4\xf5\xfe\xf6\x80\xd5\xadt\xf5\xb3\xd8\x9c\xb6\xaf\xf4\x83{\xb5}\x13(\xde\x83\xa7@\xf1\xce\x99J\x8d\x00\xc5\x1b(\xde~\x01\x8a\xb7\x16\xa0x\x1f\nP\xbc\x81\xe2\x1d\x12\xa0x\x03\xc5[\x0bP\xbc\x81\xe2\x0d\x14o\xa0x\x1b\x01\x8a\xf7\x14\x964P\xbc\x81\xe2\xdd\nP\xbc\x0f\x05(\xde@\xf1\x06\x8a7P\xbc\x81\xe2\x0d\x14o\xa0x\x03\xc5\x1b(\xde@\xf1n\x9fLi\x07\xa0x\xf7)\xdez\xbcE\xc2\xc2]\xe8\xe7\xcd%k\x9az\xd1\x0cQ\xd5\xbe\xb7*%\xb4\xe3\xab\xbalL]}\x96\xf7\xf5\xce$\xf2\x99\xab\xe0#\xe5ywU\xd1\x95~\x177\xfa0\xe3\xd4t\x89\xa6\xfa\x1d\xcd\x1cnt\x82\x05BI\xc8\x98\\\xef.W\x84\xf1]\x18O\x8e\x1aKs\xac\x8d\x9d\\\xba\x84,\xbdy\xe3W\x84!\xfd\x882\xb3\x96j\xeb\xaf\xe4\xa8\xaaC\xc6u\xf5\xe1\xab\xbf\xfc\x8c\x84\xc42hF\xd6D\n\x83Y\xf9v\x86\x84\xe1eI.\x8b\x8a`\x190\x15\xcb$I/\xc5\x87\xece\x82$\xdflJ\"L\xb1\xbb\xe5\xb3\xb0\xb9\xc5\x08\xfdI]\xef\x16g&\x19g}\x8cT\xaaq\xab\x18\xca|U\xd2\xb0jV\x85t\xd1[W\x8c\xa1\xc4\xaas++|I\xe8>Bv\x88\x91\xd3\xa3\xd4\xf4d\xcf\xf6\xcf~}\xb1\xdaj\x0b\xda[d;\xa7\x98W\xe7\x17\x02\xd9K\xf5\xb4B8[S_\xbefQ(\xf4\xe3@\xad\x13-\xd4M\xa1W\x1c5d\xcc\xe2b\x1e\xdaMV \x99v\xbe\x89\xe8>\xc8SIM;J\xb6|\xa7\x963\xbc\xba\xd4\xebY\xd8~\x95\xd1Ti\xb5\xa0\xc3\x1c\x91\xb8\xa1\xb2\xd8\xa2\xa7\x8c\x96\x88q\xd5>W'\xe8\x0b\xf4\x1d\xc2eE\xf0*\x06\x826I\x85\x8cQ+\xcc/U\x82\x0fV\xb9~\x86\xa8\xe0\x95Y\xcf\x0c\x06\xfb~K~x\xf9\x06mq\xb5z\xae\xde\xb2u\x8f\xa4g\x92\xe9\xea&YU\x0b\xbd\xa4*\x1b\xe7=\x8f\xac\xad\x83{\\O\xbf\xd9\x12\x8bTZz\xa9\x03\x84\x04\x8ap5\xd4\xbeBm/\xcdH\xe9i*4\x11\xaa\xdd\xda\x17\x0f\xd6\xba\xbd\xec\xd4t\xf2\xe5\xb7_\x0c=\xe3\xfe\x84\x05\xdaW\xb4 \x0e\xee\x8eXb\xd1S\x8f\xcf\x95c\xb5\x9e\xaa\xe9\xca\xf9Z}\xf9\xed\x17\xcfl\x86\x91\xe4\xfe\xfc\xe3\x88\x0ec+\x13\xf3F\x98_u:7\xa7\xb9?\xffh(\xbfO\x19!+\x0b\xb1\x9b=\xb46\x1eFR+Jj\x18\xdd\xd6\xcc\xb8\xb1JoY\x06\xc1)\xc1l\xf0\xe7\xec2\x9f\xf7\x924\x95\xfb\xf6{\xdd\x0e\xaeA>\x8f\x15\xe6\xdf\xe6/\xcc\xbf\xf5\n\xf3o\xc9r,\xef\xfe\x8e\x99\xa4\xf5n\xce\xa2D\xfb\xc30G\xf4\xbd\xfb\xc1-\x08\x87=9f\x88\xe8,\x18H{:\xda\xd4B\xdd\xa0\xe0\x1a\xd4\x92\x94\xf1}I\x1e\xac\xda\xdel\xd1Y\xef\xd7C\x05D\x12\xf4\xad\x98\x08\x17\x92^c\x19\x1e\x04{\xbd\xa7X\xd6\xd5\xe6\xc1j~\x90%\xbah~\xf14\xb96\xf0Dhnh\xa0\xb4PM\xa9zgY\x97\x0fV\xcfA\x86\xe8\xdc\xfe;\xd2\xadQlN\xefuk\x97x\xa8\xb6\xbb\x9aV\x97\x9b\x12\x17\x94T\x0fVcO\xa6\xe8\x15\xdd?\xff\xea\xeb\x7f\xfb\x06=]\xf2\xdd\x12\xadH\x89\xef\x9e\xf5T\x10I0\xb8\x15Lw\xec%\xa9J\xca\x1e\xac\xea\xbd\xec\xd0\xf7\xfa_\x9e\x86\xfe\xaeW\x9bHz\xdd\x19L'\x16\xaag\xc9\xd9\x8a?\\={\xd9\xa1\x9f\xf4\xbff\xaa\xa7I:TO\\U\xfc\xe6\xc1{\xb4/W\xdd\xa5\xbf\xf9\xfa\x9bo}]:\xd6EB\xea\xc9\xef\xd4\x9b\n\xdf=\xb8\x0e<\x99\xaa\xdd\xc4\xf3o\xbf\xfc\xfa\xeb\xe9\xa3z\xaa\nv\xa4\xda\x90KF\xa4\xd8\x97T>\x98\x12\xbc\xd9\xa2\xbf\xd0J\xd6\x86\x80\x7fe\xf1\xeb\xf7[\x82~V/#\xc9#\xe9\xd5B-j\x08#F\xe4\x8d>\x00\xaate\x80\xd5\x87\x90P{\xd9-\xa6\x0fV\xe1~\x863\x0dq\x97hp/\x86YQ?\xdcd\xd6\xcd.Y\xc3\x0c+\x04g6I\x7f\xfd\xf2\x8c\xb3g[L\xd9\x99\xc7^\xe4<c\xbb/$\xccB\xaa\x9f\xa9\x93\xd0?\x8b\xd5\xd5\xe2\x9cIG\xb9\x0c\xbcL\x99\xb6\xa1 \xbeF\xff\xbc\xa4\x1b\xf5\x85\xcfX\xab9\xf2\x975\xdbW\\j_\xb4Ky\x1b\xb5 \xc6,\x0cyJ\xf1f\xd9\xa8\x87\xaeQE\xf6%\xbe{\xde<GO\xe9\x82 \x16\xb4\xa7\x99\xb3YH\x11\x82n\x18Y=\xeb\xba\xff \xed\xea\xb1$\xd6\xc5\x91\xac\x9c\x97\x831\xb7\xeep\xb1\xa5\xcc\xc3\x00\xb6\xfd\xf0\xa2\x0b&\xb4\x06\xc0\x034\xa1\xf7}\\7\x1a\xe91\xe9z\x9d\x0e{^\x86\xfaH\xad\x01(\xd5\x1f4\x923H\xce\x87h\x80G\xe2\xe0)x$\xa6ze+\xe0\x91\x08\x1e\x89~\x01\x8fD-\xe0\x91x(\xe0\x91\x08\x1e\x89!\x01\x8fD\xf0H\xd4\x02\x1e\x89\xe0\x91\x08\x1e\x89\xe0\x91h\x04<\x12\xa78\xf5\x81G\"x$\xb6\x02\x1e\x89\x87\x02\x1e\x89\xe0\x91\x08\x1e\x89\xe0\x91\x08\x1e\x89\xe0\x91\x08\x1e\x89\x7f\x04\x8f\xc4|_*!y\x857\xe4\xf4W\xeb\xfe\xf6\xdb\xe9\xafW\xe4\xee7\xf3\xb1\xcf\xb9\xea\x9d\xf9\xa0\xe7]\xb5\xc4\xa5\xda\xba\xea\xb9\xb6,Q\xc1\xd5\x8c\xa5\x14\x8d\x91\xa0lS\x12\x84\x8b\x82\xd7-\x08\xdbs\xb6\xb2)\xdaG\x8f\xd6\xd5*`j\x89\x1aY\xd2\x16\n\xb3$u\xd1N\xdb\"\x16\x8e5\xcfM\x18a!xA\xf5\xa9[\x1b\x1f\xfc\xc3aC\xaf CWd\x10\xde:\x03\x81\xb5\xed\xd0@\xb04\x84\xbe\xaa_\xf5\x17\xa7\xfd\xa6s\xf2\xf6\xe2l8v\xcc~\x05\xf0X\xc0c\x01\x8f\xb5\x02x,\xe0\xb1\xad\x00\x1e+\x01\x8f\xf5\x0b\xe0\xb1N\x00\x8f\x05<\x16\xf0\xd8\xcc]\x12\xe0\xb1\x8d\x00\x1e\xdb\x15\xc0c\x01\x8f\xf5\x08\xe0\xb1\x80\xc7\xa6\x94\x0fxl\xf0\x1b\xc0c{\x02x,\xe0\xb1\x80\xc7\x02\x1e\xdb\x93\\l\x0c\xf0X-\x80\xc7\xfe\xa3\xe0\xb1\xd1\x08\xb1\xf1\xf8\xa4.,\xa9\x0b\xe6\xe9\x9cg\xb7\xe4\xb6y&\xb9\xf1\x88D\x87\xf8\xe1\x9a\x1fD\xef\x1c\x00\x05m\xf0NY\xd5\xc9\xd8\x9d\xae\xd4W\xe4.T\xe2+r\xd7\x034\xd5\xbf\xdd)\xbb[\xb6\xf9\x8a\x95\x0fw\xcb\n\x17\xbd\xd08>\x88\xbbc\xbax\xaf\xde7\x81\x8f\x06A\xb1>\xae\xc8\xb2\xde\\\xca\xe6\x85\xef\xef^\xeb\xab\xc9?\xf6.\xdd\xf5\xbc\xf6g,\xb6\x1f]D_\xfbb\x0f\x10o3\xb5O\x1f-&\xee\xbf\x0c?j\xe7\xca\xb9\x7fV_+;\x84\x9f;\x16\x1a}\xd1\xaf\x1c\xd8S\xec\xb7\xba\xed[\x0d\x1e8\x14wZ\xd4%\xdd$\x03\xa8\xf4\xe0)\xa0\xd2yVM\x04\xa84\xa0\xd2\xc17\x01\x95\xd6\x02\xa8\xf4\xa1\x00*\x0d\xa8tH\x00\x95\x06TZ\x0b\xa0\xd2\x80J\x03*\x0d\xa8\xb4\x11@\xa5\xa7\x00\xbb\x80J\x03*\xdd\n\xa0\xd2\x87\x02\xa84\xa0\xd2\x80J\x03*\x0d\xa84\xa0\xd2\x80J\xff\xd1Qi\x03\x94\x9a\x0b\xbd\x16\xfa\x1f\xdd\xe3n\xefLm\x9ej3\xa5k\x97\xff\xc4\xd7\xd8\xbca\x9f\x0e1\xe8#o\x90\xf4\x97\x92\xee\x08\xafe\xa8\x98\x83\xa3\xbf}\x1b\xf1kRU\xfa\xa0,;\xf7\x976O\xd7\xe8[$H\xa1\xaf\xbb\x1a\x1a\xb7\xd5q\xe9\x9d\xce\xe0\xb9\xb6J\xea\xe2\xa8b\xf6\xde*pY\x8a\x87\xa8\x7fE\xc8-)2\xabo^\xee\xe1\xf4L\xc3\xd7\xaa\xca\x1a\x1f\xb7\xabI\xd3\xb8jL\xab\xc9Xr\xb4\xe9\x07\x84_\xe2\xe2j\xe6\n&\xafw\xed\xd5|E\x85\xbe=PH\xdc\x8b\xd7\xdfS@\xef%\x1b$\xdd\\2X\\\xa1\x02\xefe]\x91ck1\x8c\x0f\x9e(\xed\xd0y:P^\xcb\x99hKl~x\xd02\x93e\xbd \x96T=tQ\xc5\xdd5\x9b\xfb\x8a2\x89x-\xf7\xb5D\xabZ\xaf\xe3\xb6\xc4\x88\xb0\xa3\xaf\x03\xce*uIw4w>\xd0\xef\xf6\xc6\xc3\x0e\xdf\xd2]\xbdC%a\x1b\xb9U\xe3\xc2\xd4\xe6\x04-k\x89\xfeN*\x8ev\x04\xb3\xbe\xfd\xacf:\xa1\xe3\xef;>\x84\xeb\xfd@\xbd\xb7\xe2\xcd\xa4\xb6\x18\\M\x18R\xc6\xd8\x1b\x0c;\xf7\x14\x1e[\xd1\x9c\xa9\xad\xadO\xff6\xc2\xcc\xb6\x9dt\x85a\xffZ\xa3^z\xfa\x0e\xbaOTok\xce\x1d[\xf3Q\xd7\x19v/-\xec%\xd7\xd3\xd3\xb1\n\xc8\x1a\xc2\xad\x06\xba7\x15f\xd6~\x86\xcb\x0d\xa7\\g\xd8\xbf\xb4\xb0\x97\x9c\xbb\xc0\xf0X\xdd\x8d\xeb<\x9d\x9b\n\xc7in\xcc\xdd\x86\xc3\x1b\x0c{\xe9\xf9n3\xfc\x04:\xf86\xde}2\xae=\\|\xfe\xf0\xa5\xfe\xb7\x9cR\x87\xeeG|\xe0\x02\x0f.A\xcc\xecn\x93\xaeN\x1c\\\x90\xe8O\xf0\x81{\x99\xef2\xc4L\x1dL\xbbG1|w\xd1\xe1ET\x0f\xab\x8a\xe1\xed\x88\x99j\x98\xe1R\xc5\xc15\x8a\x0f[\xed\xfee\x89\x99\x95\x9et\xc3b\xb8\xf77w*>l\xd5\x0foM\xcc\xac\xfe\xb4\xeb\x16#\x17\xa9\xfa/b{Xmt/R\xcc\xd4\xc3\xa4\xbb\x17\x83S\xa0\xb9m\xf1a+\xdd\xbdU1\xb3\xd2\x93.b\x0cU\xda^\xbd\xf8\xb0\x95\xf6\xdc\xad\x98Y\xf7\xd1\xb72\x0e5\xd2K-v \xe1\xc3j\xe4\xf0\xa6\xc5L\x85L\xbb\xa2\xf1\xd1\xeb\xc3w\xe9b\xa6F&\xdd\xd7\xd8\xdc\xca\xd8KjxC\xe3\xc3\xea\xa0\x7f\x0fcf\xedG^\xde\x18\x9a\x16\x9a\xeb\x1a\x1f\xb6\xca\xddk\x19C\x15\x9etuc\xe7\x82\xc6\x87\xa8\x11a\xda\x12\xb9#;\xdeK\xbbW\x91\xdeK\xad\xb5\xd2\xfe\xfb!\x8d\x95\xb6$\x15\x91u\xc5.WX\xe2D\x99;o\xb6\x05\xd70\x935X\xf252\xefh\xd7\xa4\x07\xa9\x841\xbc_\xfe\xa7\xe0\xcc\xfe\x14\xaa\xc4\xe1\x9b\xc8\xfc\xaf\xaeH\xcf\x88o\xae\xd0\xc4\x0653\xed~lU\x02\xbdGw\xe0K\x03(\x84\x8a\xdd}\xa7q\xe4P\x05]\xd9\x83\xeb\xbcE\xeb\xd9O=\x80\x82)N\xccD\xd2\xbe\x81\x9en\xc9\xed\xb3\x07(t\xbfp\x92\xee\x82hA\xfb\xc6\x03\x14\xab\xd5\xe5\nK\xf2\xbcW.W\xe4}\xc5\xf7\\\x90\xea2\xe1\xdf:|\xcf\xf9\xfd\xb9\x7f\xda\xda\xa8\x12\x12!\xef\xbdB=\x8a\xb3\xabK\xb1\xc5\x94]\xd2U\xa8\x0e\xc3\x93\xbc}\xbd\xf1\xd9\xd5V%\xf33\xa2+\xb4\xc7\x95\xa6\xb1W|\xe7\xab[/-c`\xbb\xb7\xeav\xc7\xc2X/Zy\x1bv\xa1\xd5^\x96\xefocN\xb3\xef\xdb+i\xd3\xde\xb0\xefo?s5\x05W\xd8\xf1\xae\xb0\xefo\xfd~\xb0\xefo\xc1 V\x0b8\xc1\x86:\xa9\x91\xd8t\xd7\x15p\x82\x05'X\xbf\x80\x13\xac\x16p\x82=\x14p\x82\x05'\xd8\x90\x80\x13,8\xc1j\x01'\xd8p\x9f\x06'X#\xe0\x04\x0bN\xb0I\xf7Gp\x82\x8dh.\xf4\x04\x9c`\x87\x02N\xb0\xe0\x04\xdb\n8\xc1v\x04\x9c`\xc1 \x16\x9c`Cbm\x91\xe0\x04;\xf8\x00\x9c`\xc1 \xf6\x919\xc1\xee\xc4f\xa1 \x1f\x0eA\xe9\xa4\x16;QOEA\x0e\x9a-\x84|LA;|\xa8\xc6$$#\x8aXLF)&\"\x13]\x04\xa2\x97\xde\xe1\xa1}\x02\x021 u\x18\xa0\x0bC\xf5\x0c\x90\x86)\xe8\xc2\x00E\x18\xe6\xd0\xcf`*\x8a\xd0\xa0\x05\xfd\xe4\x0f\xb6$S\xd0\x82\x10*p\x14\x12\x90e\xfd\xcf\xb5\xf2O\xb6\xecO\xb5\xe6\xfb\xad\xf63Y\xea\xe7\xb4\xce\xcfd\x91OY\xe1\xa7Y\xde#\x16\xf6\xf1V\xf5\xa8\xf5<\xc3b>\xd5J\x1e\xb0\x86O\xb4\x80\xcf\xc0\x17:X\x0f\xf5\xe8\xe8|\x15[\x0c'\x1a\xbb[\xa3\xf6\xa1\xda\xe7\xad]\x82\xfc\xa5*-\xe8\xdf\x83\xd5U\xcf\x1a\xa6\x17+\xb8\xda\xe95>\xfb\xeaY\xcb\xc7s|'\xf4\xf4\x87W\x17o_\x9d\xbd|\xff\xea\x87\xa3 \xbc\x07,\xcb\x86\x9b\xc7\xebe\xe9\xafO\x8c\xe6\xa8 \x8e\x9e2S\xa6\xef\x9c0\xa9\x1f[\xe8H\x07[W\xbd\xddx\xacki\x06\xdd\xf0b\x0cA7\x8cT\xed\xbd\x19\xbdb\x9b\x0d\xd2!%\xb1\x99\xf0\x05*\xb6\xa4\xb8\x1an\xb8\xf0F\x1d-\xa5\xe9\x9e6\xe5\x15\xa9\xe8u\x97\xc7\xa7r\xc6\x9a/\xfc\xf4/'\xe8\xed z\xf7\xccrn\x0f\x17eR\xec\xbf\xfa\xf6_\xaf\xbeD\xa4,U\xed\n5\xa1]\xcf\xdd\xb5#\xcc\xe2\x90\x8a-W\x18\xa2\xb9\xe8\xe2P\x88\xe62C\x05!\x9a\x0bDs9\xbe\xd4\x10\xcd\x05\xa2\xb9\xe8g\x10\xcd\x05\xa2\xb9@4\x17\x88\xe6\x02\xd1\\\xee\xbb\xc0\x10\xcd\x05\xa2\xb9@4\x17\x88\xe62\xaa\xfa\x10\xcd\xc5\x08Ds\x81h.\x10\xcd\x05\xa2\xb9\xa0\x8e@4\x17\x88\xe6\x02\xd1\\F\xd9\x0c \x9a\xcb\xef1\x9aK\xd5\xc4\xb4\xe8`\x883\x97o\xd6\x90.\x0fT\xe6~\xd9\xf2#\xba<D\xd9\x1e\"\xac\x8b\xfb\xfd\x1f!\xae\x8b\xfcG\x8c\xed\xa2I\x1aX\xf2\xea\x12\x17\x05\xaf\x99<\xfd\xb5\xe0L\xb8v\xfc-\x1c\xf3\xa5\xa3\xad\xbf\xb8D^\x9a4t\xa5(\xd1N\x85\xaf\x1cPo\xd3\xff\\\x18mY~\x88\xfa\xaaIG\xe5L\x98\xa8;f\xdc\x97\xa6\x1cNk\xbdP1\xc3l\xed;\x8f6f\x8c\xd5\x80\xd3\xed\xa8\x08#\xf1\xaejd\x90\xbe\xeb\xb7\x05\x17;.\x86\x11\x96\xec\xcb\x9a\xf3F\x8a\xedA\x18\x14\xd4t\xad\xc5\xe0\x89P}\x9c\x15\xe3\"\xa4\x041a'\xbd\xea\xb9,\x9a\xe8PM\xdfi\x9e\x98\xb5gX6\xa7\x02\xf3t\xde\x12\xda0;\xfd,\x06%<\xa4\xe7\x0cj\xf6_\xc3\x86\xd3Cs\xd8\x93\x9b\xf0=\xc3P@\xaa\xfc\x86\xb5v\xc0\x1d\xd4 \x9d\x1e\x0c\xc5\xb7\x17g\xd6'\xa6\xd5\x15\xc4\xfc\x19<\x85\x98?9\xf3\x8b\x91\xa9l\xf7`\x82\x12b\xfeX\x91S\xd9\xf4]\x99\xc8\xac\x0f\xa6\x071\x7f \xe6\x0f\xc4\xfc\x19\xef\x19\xd0\x95\xa9^\x02\x91\xf9\xc9\xb3\x03\xe8\xcaL\x9e\x04]\x99\xd3\xab\xa0+3y\x18t%\xe5m\xd0\x95i\x9e\x07\xd19\x1cb\xfex\x04b\xfed\xb8A\x84'l\x88\xf9\xa3\x05b\xfe@\xcc\x9fd\xb4\x17\x88\xf9\x13\xd1\\\xe8 \xc4\xfc\x19\n\xc4\xfc\x81\x98?\xad@\xcc\x9f\x8e@\xcc\x1f\x88\xf9\x031\x7fBbm\x91\x10\xf3g\xf0\x01\xc4\xfc\x81\x98?\x8f,\xe6O\x17\xec\xee$\xd4gyu\xdeq\x88\\\x03^\xeb\xa7\x0d\xb8*\xb9\x01\xf4Q\x17\x13\\\xf3\x03\xd4\x7f\x00\x17\xb4\xa0\xbf\xac\xea\x04\xe6\x9f\x81\xed\xaf \xd9\xe1\xea\x8a\xc8\xd3\xeb/O\x97X\x90\xcb5!a$\xff{,\xc8\x8f\x844\xa8\xbd\xb6\xaecA\xd0\x9a4'\xf4=\xae\x08\x93\x96\xdcf\x7f\xb3\x96\xb1>\x95\xa3\x87\xd0\xffH\xc8\xcf\xba 6\x8b\xcf\\u\x1f)B\xdf\xd7UW\xa2\xd6#\x8b\x0c\xbb\xaf]\x1f1.H\xff\xbd\xd1e\xef\xbb^\xfdt\x1bZ\x1d5\xd8\xaf!\xad\xf9\x93\x02,\x17\xb0\xdc\xa0!\xf3\x1e\xcc\xa0\xa3'\x1d\xcdf\xdb`\x11\x99u\xd4+\x7f\xc2\xa27\xedl\xb00f`,\x11F\x1bzM\x98\x9ds\xb6\x84n\xb6N\x9d\xbdI\xc6%d\x9f=\xda\xc9\xa5\xd1FW\xa2\xcd\xe1\xe7;6\x9f\x9aYG\xa9\xac\xa1\x89\xa8\x19\xc3\x91\xcf\xd4\x93\xdeG\x9e)\xc7\xaa\xee`\xcei\x12h\x91\x08\xd7\x1c\xa6!`\x02\x82 \xe81O@z\xcf\x17\x99}.\xf4\xf3\xde\xdc\xd3n\x13\xd5\x06\xe7\xb6M\x0f\xed\xf8\xaa.I|\x87c\x12\xb4\xaf<\xda9\xa8\xab\x96\xae\xf4\xc9\xbcF7&\xda\x809n]\xef\xac\x12:Z:<xG\xfb]\xbc\xd71~\x19\xde|\xa1&\xed!\xfb\xbe\xf7\x86\x99\x0f\x83\xa0\\'\x0b\xd5\xc3\n\xd2l\xad\x9e\xf7\xf6Vj\x13\xffE\xd7Q>\x90\xde\x17.\xf4\x00.K\xe1\xb3M\xba\xdc.\x0d\n}\xb9\"\x8c\xef(S\xa7\x86X\x1dCs\x0eJ\xae\x08(\x13\x06\x8c\x16\x0d-y\xcd\xec\xf1\x13\xef\xf4\x01\xa6{ \x08$X`\x87\xe2\x87\x0e\x8aK\"o\x88[\xce\xbd\x00.)\xb1\x90\xb4\xa0\xf2\xeerW\x97\x92\xeeK\xea\xe3p\xa2\x07\xd5\x94\xb7P]\x1d\xb9H3j\xb14qh\x02\xfd\x13u\xba\x9a^^w8HI\xda\xe2k/\xc8k}^\xcc\x1a\x1cSMd~\x9dM3\xdd\xb24\xb1I\xb0\xb4F\x8c\xee\xb6-\xaf\x07\x95E]\x1a\xbb\n\x156\xf5\x95O 9\x13E\xa4\xfe}\xb7\x8b\xce\x8c0h\x1fo\x1f\xddQ\xa6\xb6\xb5\x97z\xe8O,@j\xa2\xea\xe5\xd1\x8fjDY\xd3\xd7\xccSc\xc4\x0dOR\x8e\xfc\xcdV\x88\xc8m\xd7\x9b\xc4\x87\x87\xbb\x9c\xf3\x86\xdf\x0cU\x0c\x0c\xa9N5]H\xaae\xb0\xdflq\xb5 \xf3F%G\x82\xb0\x95Z\xd5\x9b\xc0\xab\xcdP=\xf8\xc6\x96\xfb\xa2\xbb\x02\xdae\xe2/?\x1f.\x81\xbd\xef\xe3\xa3FoXL\xba\x07\x97\xb3J/\xc5[\x1b\x92(\xdb\xa0\xdbSr=\xb4^\xfa\x96a\xd8\x89\x0f\x9e\xc2N\xfc!w\xe2\x05f\x92\x9fr\xb6\xe4\xb8ZQ\xb6\x19\xb1\x0d\xaf\x88\xac(\xb9v\xcc .q\xa9\x99\xac|\x8d\xda\xf4<}\xbe\xb7\x15\x7f\xd3\xbc\xf9\x8f\xba\x17\xf7\x9dS\xf4|\xd9;\x9f\xb4r\xc4~\xdc.\xee\xad\xf6\x8f\xdc\x95\x9b\xf4\xba\xady\xfe\xfd\x19\xda\xd1\xd5\xaa$7\xb8\xf2M\xee\xb8\x96\xfcR\xdc\xe0\xfd\xa5\xdcVDly\xb9\x9a\xb4\x1a\xddl\xa9$%\x15\x92\xac\xf4v\x97\x11\xdf\xf0F\x89!\x8eb\xc3\x1c\xa5J\xd1_W\x0c\xbe\xd3iG\xeb\xd1\xd3U\x8fi\xd3^B\xe3\x17\x98\x98\xfb\x90u\x18\xb2Ez{q6H\x0f\x9c\x86`uyt\xabK\xc1)SS\xc2\x88\x85E\xdb3Ssfo!9\xb3\x99\xfc\xbe\x97\x91#&\xff\xa9g\xab=\xe7\xe5eQ\x11\xad\xc9\xd4 -\xd8mS\xa5CZ\xd3\x8c\xefB\x0f\x93\xe5TbL\x1bG$\x91wHV}\xa9=\x1b#\xc9\xaf\x08\xb3li\xd4\x18]\xd4\x91W\x9d\xd00\xb3\xc5\n\x13\xf3_\xbfy\xff\xea\x85\xa6\xf7X\xdb\x8c\xe1\xc9PM\xe6>g\xee\xf0\xdd\x8f\x93\x19H\xcb\x92\x0b\xccD\x1f\xca\xb0\x89r.\x1a\x94\x1a-\xef\xd0\x86o\xb8\xc6\xed}\x87d\x89o/+,\xa7u\xa2\x1d\xbe\xbd\x14\x12\xb3\x15\xaeV\x97j\xbc_\xeeIu\xa9\xba\xd6\xf4\xe4\xd4&\"\xd6\xe03,\xfc\x91\xee\x9c\xd3\xa1\x93]:YQ#\xa9n\x9d\x95L^\xd7\x9e\xbfs\xcf\xdb\xbd3;\xf8\x94.\x1e0\x13\xe8\xfa\x9b\x85\xe5s1\x9f\x99\x80\n\xd8\xc1i\x81\x1d\x9c\xe7\xf3\xdf\xed\x0e\x8e\xf32\xb2\x81\xfb\x89\xfeR\xd3\x15\x95w\x17\xea\xbdf#\xa7\xddz\xb7\x04\x95\xee\xb1\xdet\x88\xd67\xcf\xa6\xd3\xdb\xd0\xf5\xd3\xb2o<\xde\x0d]\xab\x98\xae|\x8a\xfeE\x03'\xee\x8c\xbe\xa14\xc7o\xc2\xb1N\x8c$\x93i\x0d\x08:\xbd.\xa7\x0e\xad\xc8\x9e\x0b\xed\xb3}E\xbc\xe6l\x84\xdcF\x02\xd6\xee\xa1\xfca\xd7n#\xb6W\xed0e\xb6\xeeK\\bV\xf8\x0b\xa4\xdf\x80>4\x14\xe8C\xa5\xa6\x10\xd7L\x92j\x8f+y\x97\xd1\x97\xca}\xb0y\xa0'\xfd\xb1{R\xbb\xa9Iw\xa3\xa0u%\xab]\x0e2T\x9b\x0e\x0f8\xbf\xc7\x1b\xab\xf9\xd0\x86d\x92\x81\x89\x91[yyE\xee\xc2\xbb\xdah\xf9\x93~\xfa\xbdnw\x10r\xcb\x89+\x853\x93\xab?m\xd8\n,,\xec|\x817\xe4\xad \xea\xb70\xcf\x03\x89\xb5\xb4\x7f\x95\xacR\x1cA;.$\":\x18\x84\x8e \xb1@\xe7\xb2\xe33\xb2\x97w\x88\x86\xe2\"\xe9\xb0y:R\x08\xe3h\xc7+\xe2\"\x83x\x0d.\\\xe2i\xe6\x91d\xd43\x84\xd2h\xbe\x01\xec\x94\x16\xf5\x1f\xdd\xb0\xa0&\x98I'rF\xa8\xbe]E\x9b\x00k:\xb1\xd0X\xbb\xc1\x02 \"O\x10\x95\xa2\xbd\xcc\xafff\x0eY\x99\xb0\x157T\x1c\xf6\x8f\xf4\x94d\x8a\xd2\x81Px\xcf\xc7\x872\xb4y{q\xd6\x9e\xc9\xed1R\xdf\xcb\xe3E\xb2\x02!\x80\xda\xab\x8c(\xdb\xb8\xd0\x91\x8d;\xce\xd6\x91\x1f\xba\x9a\xf1\xaa\xc3}\xf1\x8e\xef\xdarG\x9dG+\xb2':`\xc1\xf7\xb8j\x1a)\xe1\xa3\xd6W\x8b\xee\xdf!/\xb5\xbe\xfbk\xa8\xf7\xe8\x83a\xffh\x964y\xf8\x928\x1d\x1c\x15\xdf^\x9c\x0d\xd5d\xe7m\xf7O0\x84\x1c\xe8\x07\x0c!\xb3\x1bBbng\xed\xba\xaaV\x95P?\x1c\xac\\v\xa9\xc2v\xbek\xd8\xfe\x94\xf5\xc6\xe6\xa2Y\xd7\xf4\xc4\xb5\x19\x04+jhE\xa9\xb5\xea\x0d+\xeft\xe81\xbeF|\xbd\xd6|\x8c\n\xf5\x8b\x8b:1\xe4\x04\x99\xfb\x9e\xd8D<\xdf\x8e\x12M\xf9Bz\x1cL=\xb62Z\x95\xac\xde\x91\x8a\x16\xee7\xed\xe4\xd9\xbd\x0c\xf1fK\x98S|\xcd\x9aul0\x11\x9f\xeb\xd4J\"D\xabB\x133\xc9\x84\xed\xbe\"#\xf5\xd9O\xfe\x9e\x95\x1b\xb8\xa5\xb3\xa3\xde\xf1w1\xd2.\x95\xe7pC`\x96\xd4n\x0f\xb6<\x85\xba\x1c\xcc\x9a&\x16P\xf7\xa7\xf35*\xc9Z\xba\x0d\x94\xddQ5\x97\xbf\xf2f\x80\x98L\x94\x9e\x97w\x88\xe0b\x8b\xf0~\xff \xb5\xd8\xdd\xd6\xb4\xdf\xc7t\xd9\xf9BiT\xf7P\xae}D5\xb1\x91\xb2\x15-\xb0$M\x88C\xabA\xfd\xa2\xedH\xdd\xe4(+\xcaz5\xd8\x8b`\x93K\x13cr\xd0bz\xc6\xeel\xe0\xd4B\xdc\xd6i\x18 \xed\xc3\xb9\x18\xb4\xd6\xa0\n:D\x83ZK\xcd\xda\xaa\x87W;\x1e\xd5\x90[\xd8\xd1D7\x8cW\x83\xc0qn4\xf6\xb30\x9a9\xb6aC\x81\xfd;\x0dX\x91kR\xf5>\x8d5\x9e}{\xd8p\xb4\xb3-\xae\x88\x7f$\xf4\xd2Qy\x10\xb3G\xe4\x95\x8e \xde\xaf\xfe;\xca\nm\x86\x10;.\x9e\x8b\xd5\x15\xfab\xf1\xcd\xd7\xb3jc\x94M\xff\xf4\xd7r/\x8dGA$|xgm\xeb\xed\xdfzn\xaf\xc3\xf3\xa9\xc5\xbd\\\xd8\x92&\x85&C\xfbK\xd8\xfao_x\xd4\xc6\xffY\x8f\xda!\x13~bO\x93c\xbeOn\x8b\x8e0\xdd\xc7\x0d\xf7ICYj\xbf\x984\x92%\xeb\x966\x90%\x93H\x9fD\xd1=\x98\xc6\xe64\x8ce\x99\xc5\xa6\x19\xc5\xc6\x18\xe8#\xe6y\xe8)\x7f\x94\x9e2\xca\x0c\x1f4\xc2C\x7f\xf9\xa3\xf4\x97|c\xfbT:d\xae\x99=\xdf@6\x83}\x0c\xccc`\x1e\xf3>\x7fL\xe6\xb1\xe1~\x1e\xddc\xd8$\xba,N\xf1~/N\xb5o\xe4\x9aT\xa7\xd7_\x9e:?\x91\xd3_\xed_\x97t\xf5\xdb\xa9\xbeb\xff\xf4W\xf5?\xfdo\xdf&9qU\xd2+\xfd\x89\xbd\xd5\xa8w\xd6q\xbbd\xfb\xc8\x84\xdcP\xab\x19-\xea\x12WH\x077\xc6\xac\x1d\xa6\xb6d\x88\xae\xbc,\xf6^N\xf6\x85G{\xecI\x1d7\xa2]\xcc\xce\x9f]%\xda\xa3\xc6a`\xaf\xd4\xda\xa8\xbbEOuqg\x1ao\xa4\xe7~#\xc3\x0d<V`\x8a}DSl;\xaf\x85\xfa\xa0\xb9\xcf\xa73\xcd\xd8[}\xba\x0d{\xe4\xa4\xdc\xb1\xb2\x9995Q\x16=\x07\xdeGA\xc6\xad\x0ezi\xd2\xf7H\x12q\xfa\xab\xbe\xa03b\xe9\xfaA\xbd\xfdg,\xb6\xed\xb5x\xfd\xed\xb5\xbe\x90\x922\xd3\x80\x9d{\x1e{\xd3y\x93\xcag\xaev\x8ft*W\xb5\x195\x8c\x07\xe5\xd4\xdaxJ\x19\xda\x92[\xdb\xa9\x9f\xb5\x01g;j\xd3z\xf7\xe9\xcd\x93\xa8\x7f\x9eot\x9a\xe50\xe9K\xe1\xb4m\xdc\xe0\xbe\x1af}\x98\xf5\x1f\xcb\xac\xaf\xc7L\xa8\xfb\xbd\xf7\x8f\xb0\xa7\x7f\xb5\x93\xf3\xdfN\xff\xda\xae\x1a\x7f{\xf6/\xa7\x7f\xd5owoO\xfa\x04\xd3\xb0.dd\xf3\xadG\xe8{\xfdR;\x01k\xc0pXS\x7fX\x81\xce\xf7\x9f\xb9\x1a=\xd2\xa9\xf7P!]\xf9\x14\xe3C\xf5\x85#zw\x9e\x1d\xcbd\xd3\x8b\x91`.\xe8\xe5k\xbdc8=\xdc\xc2\x18\xa81\x98\x9e\x9e\xf1+\\X\x9aD\x84\xf0i.A\xb4\xcb\xd3\xbaf\x1b\xba,\x89\xb1(\xf9\xadO:\xe0P\xd4D8V/:\xaeR\xaf77\x97-\x97\xf8\x8e\xac2\x8a\x95\xa3\xe7v\x1c\xf4\xe3\xb0\x1ff\xaf\xb4w~\xf6\xee\xab/\x9a\x9c\xbd \x1a\xec\xa7 \xfa\xef}\xc7\xea\xd7\xb5Eg\xb1\xd7m~X\x97^M\xba\xe3\xa1\xe7A\xd4-\xaeHm$\xe2,\xd8^\x86\x1d`\xbc\x1f\xb1\xa3\x83\x97\xf76\x18\x87\x15\x88\x0e8`\xd5\x02\xab\xf6\xf1\xb1j3v\xdag\x9c1b\xc2\x8e\x1d\xb9\xd7\xb6+9\xec\xb6a\xb7\xed}\xfe\x98v\xdb\xc0\xf2\x1cG\xa1\x03\x96\xe7=*7\xcdO\x04\x96\xe7\x1cZ\x04\x96'\xb0<\xff\xc1X\x9eI\xeb\xcb\xe9\xaf[,\xb6)\x1b\xb89<\x06\x8c\xe0\xc1CX\xc0\x18\xf3\x99\xab\xe1\xe3\xb7\xc5\x846O\x93\x0eya\x8bJr\xff\x92s\xca\x9f\xdb\x96\x92iI\x19kGIYQ\xc6\xe9\xe2h\x0bJZ\xb33[O\xd2\xb6\x93Q\x96\x93\x8c\x13\\[\x819\x0epp~\x83\xf3\x9b\xff\xf9c:\xbfm[\xb8\x15%F\x89\x1f\xb5\xac\xcc\xd0FO\xd7\xb5\xb3:\xda\x0b\xee\x97\x05\xdaWdMo\x9f\xf9($y+#\xfa$\x80\x8b8\xfd\xd5\xf8v\x9c\xea\xed\xde\xa5\xa1\xdc\x84\x97\xfe\x8e\xa2\xde\xab\x0f\x0c9\xe6G^\xe9\xd9\xa0G\x812\xfbGK\x1eUj1\xb3\x1ce\x8e\xd7\xa3#\xb87\xc9q\xd6\x82\xc2\xde\xdd\x82'?\xfb\xda\xa3\xdd6\x84\xa8\xbfG\xec\x18\xa6/\x93\xe9\x90\x899\x80\xbew=\x9c\x93{<\x89w\x1c\xbe\x144\xcc9\x1e\xc77\xceXT=\x1d4\xb9\xba\x0e\xd2\xf1\x8d)`\x9cY\x81\xd5\xf4\x11\xad\xa6\x9f\x94\xd0\x9b\x19/\xbaK\x108\x8c\x19M\x97\xc5s\x97h,\x80\xf4{\xfb\xce\xef;\x80\xf4\x00\xd9\xfc4\xf7\x10\x08\xc2V\x97\xf6.\xa0\xd8B\x14\xbb\x82 \xbd\x1a\xa1AN\xf6\xba\x02\xa1wpT\x98\xbfU\x9f(*.\xc4ss\"\xd6kVh\xf4\xd8\x1e \xd0\xba\xe2;$\xb7T\x84\x8e\xbe:1\xdf\x19\xb7\"\x05\xa1\xd7\xe4aj?\xc8lF\x05\xe8\xab\xaaGU?c\xe1\x84{\x0e`\xa1l\xe4\xf7\xb8PFW\xaf\x82W\xe4\xb4()a\xfa.K\xf3\xd7\xa5\x90X\xc6\x88ng\xfa\xb5w\xfa\xad\xdeB\xa6\x06\xc1\xf9\xf7g\xa8\xd4W\xb1\x99\xd4\xf4\x9c\x8d\xfb\xa3\xaf\xb7\x86uS\xb3\xcf\x1f\xed\n\xe6QPW>E\x9f\xb3E:\"\x80n\xeb\xd8\xaa\x93\xf2\xd3\xde[\xe9\xea \x98g/A\xfdj\xb4t\x117\xd8\xb4\x06P\xc6\xc8Cy\x8a@\xc9E\xa1//\xd1\x87\xb7?\x9dV\xc4\xda@\xd5\xf6\xd3\x80g\xc6\x8d\xa0\xbck\x95\x19\x0f\xfb\x88l\xf9\xdc\x06G\x90\x8a\xe2\x92\xfe=|\xdd\x9c\x11}\x1a,x\x89\x96\xf5Z\xef\x15\xcd\x14\xba@\xef\xb7T\xd8\xba\xa2]-\xa43\x06#\x1cR\xb3\x91\x92`!\xe3yrF\xd0\x93\xd3'\xfa><\\HR-\xf4\x91\xb8\xc4B\"A6\xea\xe0\xeb\xaa\xf1\xe1\xedO\x9f\xfb\xe3%;\xd1 \x80.`E\xf6\x15\x11\x84%r7f\xfb\xb2\xbcC\xbf\xd4\xb8T\x9a]\x19\xbd;\xc0Qi\xf1)\x16\x88\xb2xB\x1fU\xd6\xa7\x1b\xce7%Yh=.\xeb\xf5\xe2\x87\xda\xccL\x1f\x9f\x99Z\xe9\xa4\x1bRB4A\xa5\\T`\xc6\x19-\xb0\x8e!\xb2\x8b\x97\xe0)Yl\x16'J\xe5\x1a\x8d{\xb2x\xa2\xf6\x17\x8cK\x84\x8b\x82\xec%Y=\x8b\x05\x1eUr\xce\xd0^5\x02-\xc8 \x92Dm<jQc\xa5\x9e}E\n\xbe\xdb\xd3\x92\xa8\xc5\x96'\xbb\xdf\x922\\\xdd\x99y\xfcn\xaf\xfb\xabA\x81\x83w\x87\x1a1;\x14\xa4cl\xa0Z\xed\x91\x8c\xb5Lu8r\xab\xbb\xc2Kv\xb7@\x7f\xe67\xe4\x9aT'\x1e\xd3B_>\xbc\xfdIXK\x8aJ.J\x8bEnn'\xe8\xe3V\xca\xfd\xc7\x13\xf3\x7f\xf1\xf1D\xed(\x19\xb7OOt\xaf-\x82\x17\xa6\x1a\xe1z\xd4k\xed \"Q\xbdGX\xeb\"\x91?\xa9\xaeIe\xd4\xb5\xc3{a\xba\xa0\xae\x85\xe4M\xccD}\xa0\xa1R\xf3@q|L\xacyY\xf2\x1b\xf1\"\xd1\xf6\xff\x8c\xce\xd7m\x0dU\xd7q\xe1j\x1a%h\xd3\x94\x10\xf5\x8e\xac\xfc\x11\x1d;\x89\xbdd\xe8\xcf\xef\xdf_\xa0?\xbdz\xef\x0c\x9e\x1f\xde\xfed\xc6\xe6\x9d\xb6s\xe1h\n\x7f\x1d\x0e\xa5\xf7w{\xf2\xb7\xbf\xfe-\xfa\x11r\xe4?\xe6\xfa\x9f\xd9\xc2\xe8\xd6\xdbW|U\x17\x04af6\xa7\xbe\xb3K+\xff\x8c^\xee\xf7%-,\xd7\x16WD\xf5e~c\x88\xa0\x05.\xd4\x1c\xc5\xf9U\xbdw\x80y|8\xb8;<S\xe3FwX]\xde-\xbe\xd6\xddu\xd7\x19{+3\xf8\xb0\xab\x9e\xfa\xfb\x9a\xd3\x15\xc2\xecp\x8f\xd0\x17SX=\x0dUd\xcd+r\xe2\x12QicI\x97\xb4\xa4\xf2\x0e1BV\x8e\x02\xa3\xa7\xd0\xea:\xc287\xc2\xdd%\xca\xe6\xd8\xa4\xc6\xfb\x02=\xfd \x08\xba&\x95\xa0\x9c)\xad\xa9n\xac\xe6?\xd3\x8f1\xc3\x9b\x94&\x96\x15\xc1Wj.\xb3\x89/\x9e\xc5{\xddk.\xb5?-\x15h]\xb3\xc2\x8c>U';\x0f\x16uUi\xfa\xd8\xc1\xb5\x0b~\xb1S\x0f\xd7\xa4\xa90\xfb\xd4\x88\xeb\xa8\xa8\"j\xd5#'\xda\x04l\xc8F*sM\xd8\xd2g;7\x9e\xe3\x1d\x86l(c\xaa\xf27Tn\x13\x8b\xd8\xdd\x9e,\xccx\xc1{*\x16\x05\xdf\xa5f\xfawz\x94\x0b\xc3\x8c5d\xb0\xc1\x8c\x87\x9e\xdas\xa8f2eL\x99\xcf\xd0No\xd4\x97\x89 \xce0\xd74\x9a\xe4,\xdb\xc6d.\xf6\xa4\xa0kZ Av\x98IZx\xd9\xcdF\xa2G\x1b\x94\xbf=K\x92\xc7\x8d\x8c\xd9\xc5\xfd\xac\xa6\xb8%1D/\xba\xeal\xbe\x0e\xf6W^/\xec\xbe\xe0%\xbf&N5v\x18\x85\xd4\x92[\xca\x8f/\xd9\xdd\xc7\x16\xcf\xc7\x0c\xe1jIe\xa5&\x83pi\x83\xc9\xb95 \x97\xdcvW\x84\xc3]@\xad\x02zq3\xa5]\xba\xcbS\xbd\xdb\xd5f\x07\x1a\xe9\xce\x17n\xe0\x95t\xa9\xab`\xd7-\x81D\xbd\xd7\x9e\xb7\x92\xa3=.\xaeNk\xa6\xfe\xa7\xf6\x0f\xf1~%\xdc\xc8\x8fo\xba\xf8\x1a\xd5\xd2L\x9an\xba\xd1\x86'\xbcZQ3\xf7\xa0\x0da\xeal\xaa+\"\xb7|\xa5\x8e\xaf\xc1\xf4T\x8e/\xd9\x9dm\xe2p\xbe\xafn\xb1\x1a8\xe8\xcb\x17\xe8B\xd5G\xcd3\xb6j\xb8i\x0c\xca\xd0\xd9\xbf\xfcKb\x99\xfe\x91s\xb4\xe6\x1c}\x87\x16\x8bE4\x88\xb2.\x18fw\xf1\x970\xbb[\xa8\"\xfdX\xf1\xdd\xd35\xe7\xcf\xe2\xaf/\x16\xf15\x98\xae\xd1S\x95\xe4\x07]\xb9\xf7\xfc\xe9?\xa94\x9f\xc5cDg\xa4\xfb[Z\xb7_%t\xfb\x1f\xf8\x1a\xcf\xae\\\xf4\x9d\xde\xdb\xaa\xdcf\xd4\x1e\x15O\x7f\xe4|Q\x94X\x88\x0c\xe5\x99\"\xab\x0fM\xbd;\x1f\xc7\xcb\xf3[\xf4\xe9\xe9\xa9\x1a\x1a\xf9e~\x87wDm\xf9^\x9a\xd2o\x88\xfc\xc1\x188\xcf\x99\x90\x98\x15\xe4\xe9\xb3\xa9\x95\xf1\xa6\x95\xaa[\xb2\xc7|\x9d\xe81\x17wr\xcbY\xa2\xcf\x98\xf2\xfe\xc8\xf9\xd3\xc5b\xf1,5\xd6L\x7fy\x9a|O\x8fI\xdd\xa3\x8e\xedP*\xb1s\xd3\"?\xbczw\xf6\xf6\xfc\xe2\xfd\x9b\xb7\xcfb\xeb0\xb2E0c8]\x08S\x8c\xa4\xb6\xbfIh\xfbO<\xaeh\xad\xe9\x17\xdf\xa1\x7f\xda/\x17?r\xfe\xebb\xb1\x88\xf7_U\x89\x13upP_av\xb7_.^\x93\x9b\x8c\xfa\xd0\xb5\xfe\xea\xbf}\x87\x18-\x93\x1d6\xd9\x08\x89a\x96\xfe~P\xf1Dr\xb6\xf4\xa6\xce\x8b\x0fl\x87+\xb1\xc5\xe5{n&\xa8\xb9\xab\x16|\xfe^\x03w\xc5U\xb3\x8e\xba\xc3)Z\xde\xb5[o\xb7\x030^u\xe1U\xde\xd1\xf1k\x11\xd9\xab~\xee\xd9V\x9f\xae\xeb\xb2\\\xe8\x07\xea(\xf39\xc2\x9d\xdd\x8b\xda\xd9t\x03\x1d\x0dE\xbdh\xfaj8\xd3f\x9b\xc0\xca;g\xaf80P5G)\x84\xd7\x92\xf8x\x8b\xadh;\xda\xe7\xa7\x9f\x87\xb3\xb4{\x1dW\x05mQA\xc4\x8e\xb3'k\xce\x17K\\\xe9\xca\xdf\x9e\xde-\xfe\xfeDk7\x98\x9a9\xdb\xc7\xcd\x1c\xba\xe8OTZ\xb1m\xce\x7f\xbc{\xf3:\xf2X\xf5\x08\xf5Jk\xe9k(\xb0\xea0\xa3\xb7\xb8\xc6\x1aP\x8b\x84\xb9\xb4\"\x9b\xba\xc4U8\xaf\xc3,\x0c\x81\xab\xdd\xa8\x9e\xb4\xf7l\xd8Y\xe8$\x98\x9a\xd9!G\xec\x89\x9d\x0d\xa4\xa1\x04}\xfc_J\xa1\x1f\xad\x19\xabG\xc4u\xcd\x16\x1eZv\xca|\x918\xbe\xe2\xe2J\xcd\x9d\xad\xd9eMK\x12_\x15\xdd|{A*\xc1Yr\x02\xb0\xf6\xe35\xad\x84\xbc\xd4} uuG\xfb\x91\xea\xc6\xee\x1b\xff\xe5\x1d\x8dDf\x11%\xa9R>\xd1\xba~\xf2\x02=\xf1\x8d\xff\xbez\x16\xa6\xe6O\xc2mm\xd3\xd4u~\x8dw*\xdd\xffi\xaa\xf4\xef\xc9\x8fT\x9d\x07\xdfL\xad\xf8\xf9\xda\x1e\xe5\xfb}\xd4\xf4\x1e*\xd0\x0d)\xcb\xe7W\x8c\xdf\x18\xe2\xda\x16\x8b\x88y\xce\xc6\xb84\xe33\xf4R\x7f\xc8\x9c\x98#\xdf`\x1c\xb5\xce\xcf\xa6X\xd1\x01\xc16\x08\x9b\xe1\x10\xce\xf4\xa3\x1e\xf0n\x9cly\xb9\xear\xe6\xcctAY3\xbeP\xc2\x8em\x87]8?]\x9cE\xb3)y\xaafN\xab\xda\xe07\x07\x86M\x87\x11\xfc\xed\xaf\x7f{\x96\x18\xa4s\xf5\xdd~\xc6\xe9\xee\xab\xd5\xaa\x92\xfdr\xf1\xd5\x97_\x89'\x89nx\xf8[\x8ee\xe2\xdca[\xab\x0e\x86\xdb\xe1Zv\xe1\xbff\x0e\xf5%\xd4\x99>\xcd7~\xa5\xb6\xc0\xa4m\xc7\x83\xb7z\xa5.\xa9\xd0\xe8\x83\x90\xbc\"\xab>jm\x17\x04/%&z\x15\x99\x016;\x1ek\x0em>|u:\x17 \xe2+@|\x85\x81<H|\x05\x945\xf0\xe1\xd62\xafL\xbd\xb5,\x83\x84\xd6\x9d\xba\xb2\xa8h\xbeDN{\x13 \xb8E\x01?\xcd\xfb<\x01\xc1\xa4\xa7\x07#c\x991\x0eN\x08&\x98\xcb\x8a\x99\x95\x11\x93`\xc3\x8ce\xc2\x0cY\xe8}\xc9e\xc1\xcc\xc2\x80\x99\xc2~\x19z\xe7w%\x9f\xf9r$\xebe\x1c\xe3\xc5\"\xe6\xe1b\x8fa\xbb\xcc\xcat\x19\xc3r\x19\xc5p\xe9\xb0X\xc2 \xe6\xb1[fe\xb6d\xb0Zfc\xb4\x1c\xc7f\x99\xc0d\x99\x85\xc52\x9e\xc12\xf0S\x1cJ\x92\xbdr\x0f\xcc\x95\xfbb\xad\xdc\x03ce\x0c[e\x02S%6]\xe6\xb1Tfd\xa8\xe4\xb2S<f\x88\xd8l<\x96\x95\xe2\x98'\xe1E0\xc9H9\x9a\x8dr\x0f$\xfb\xa1\xe4\xee\x92F3O\x0c\xbb$<a'Y'9%\x9b\x91m\x92\xcf4\x99\x95e2\x85ab\x99$\xde\xf4\x92\xec\x92\x89\xcc\x92\xe0\xf4\x9cb\x95\xcc\xc3(\xc9$<$\x99$#X$1Hq\n{$\x96^\xc0\xbc>\x13cd\x9c\xf2\xf2\x99\"9\x1a\x1a\xc1\x10\x99\xc4\x0e c\xcciV\xc8\x9c\x8c\x909\xd8 \x89^p4\x0b$\x93\x01\x92\xc3\xfe\xc8c~$\x94?\x9e\xf1\x91\xcf\xf6\x082=fay\x8cbxLaw\x8c`vD\xa9\x0f\x91bE\xbf\xcbgr\xcc\xc5\xe2HT\xc3\xfbl>\xe6F\x92\xb51\x95\xb1\x11\\7cl\x8dY\x99\x1aq\x96\xc6$\x86\x06\xd2\xe7Roz\xe1cz\x9a\x99\x11ae\x8cgd\xc4\x99\x17\x93X\x17\xe6@\xe2K.\xc4\xb8\x98\x8fm\x91fZ\x8ceY\x8c`X\x8cfW\x8ccVD\xc8\x05\xb1R\xe5\"\xd2\xb9l\x8a\xd1L\x8aQ,\x8a@%\xa7\xb0'\xc2qzP\x8491\x855a\xd9\x11\xfe\xbe\x1dcL\xcc\xc8\x96\x882%\",\x89\xc9l\x889\xfa\xdc\x08\x16D>\x03\xc2\xad\xc2\x10_{tT\xd7\x033 \xc4\xd7F\x10_\x1b\xe2kC|m#\x10_\xfb\x11\xc6\xd7\x8e\xc5|9\xfd\xb5 '\x12\x89\xb1\xdde\xfb5\xe1_\xd8A\xe4\x17\xd7\xc2\xa1h/\x9f\xb9\xaa\xfd\x0e\x82\xbd\x84\xf8\x1b\x93\xe8}2J\xc3H\"\x109&\xfc\xd9 \x18y\xf4\x8b)\xe4\x8b8\xc9b\x12\xc5Bg\x11H0I\xb0\x98\x81^1\x91\\\x11\x84\xa4\xf3\xa8\x15G\x11+&\xd1*\x10\x0e\xfa\x95\xc8<R\xc5\x14JE\x0c\xe8\xcc\"T\xccL\xa7\xc8\"S\xccH\xa5H\x12)f\xa2Q\x1cC\xa2\x18M\xa1\x98\x81@13}\"A\x9e\x98\x9d:q?\xc4\x89\xd9i\x13\xf9\xa4\x89i\x94\x89\x88\xd2S\x84\x89\xd9\xe8\x12yd \x8f\xad\"<\xbf\xceL\x94H\xd1$\x8e$ID(\x12\xc9\xedI\x92\x1e\x91\xb7\x7f\x99\x97\x1a\x91\"F\xa4\xcb4\x8d\x14\x11q.JQ\"f$D\x1cA\x87\xf0\x93\x98bd\x88y\xa9\x10q\"\xc4\x1c4\x88,\x1c?A\x81\xc8&@\x84\xf1\xb8\xf1\xe4\x87pZ^\xab\xf8,\xb4\x871\xca\xca\xa5<\xa4u\x92Mw\x98@v\x08\x81\xb0)\xa2\xc3|4\x87\xe3I\x0e\xd1\xf6>\x92\xe0\x90EoH\x93\x1br\xa8\x0dQe\x8f\xa55\xe4\x92\x1a\x02\x94\x86\x19\x08\x0d#\xe8\x0c\xe3\xc9\x0c\xd9T\x86\x08\x03 X\x9c\xc87\xb9\x14\x86y\x08\x0c\xd1\xc2{\x9eL\xa2.8[\xb4'\xbd\x00qaf\xdaB\x98\xb40\x95\xb2\xa0\xed#\xbe\x82\xfb \x0b\xf3\xd2\x15B\xc7\xe0\x14U!HT\x98\x97\xa60\x9d\xa4\x10 $L\xa2#$\xa9\x07\xe3\x88\x07\xd9\xb4\x83\x91\xa4\x831\x94\x83 \xe1 \\\x9a\\\xe07\x8fl0\x92j0\x82h\xe0\xad\xda\xbc$\x83\x10\xc5\xe0\x08\x82\x81\xd7:\x13\xa4\x17L#\x17\xc4\x88\x04\xf3\xd3\x08\x8e\xefI\xd9\x14\x82\\\x02\xc1\xe1\n\xe8 ~\x8e\xb0\x10\xbc\xa0\xfa\xc8\xa3g\x123G\x19\x8f\xe6`\xbc\xf5}\xc5\xf9z\x94\xb7i\xe2\xf4mK\xb6#\xd5UIL\xf2j\xfe#\xb7TH\xc2\x8a\xe1\x07\xfa\x85\xcb-\xa1\x9b\xad\xef\xa20\x93\x98y\x8c\xb0\xbb\xfcJ\xd5\xcc\xa4|\x83\x05\xaa\x88\xac(\xf1\x19\xa8\x8e\xc0O*rM\x05\xe5\xec\xd2\xc0\x9eG\xda)\xd2\x8e\xfd\xa6\xb1L\x9e-v\xeb\xa2\xe5\x8b\x8e!\x8b\xfb\x0e\xcbMqC\x9aD\xf3\x17\xd7\xb6\x8a\xeakvq\xdf\xd0k\xc2\x9a\xb2\x1c|\x9f6\x80\xbcV\x05P;\x0f\x95\xda[\x9b\xce\x9fM>T \xca\x8aJ\xdb\x99\xd4\xf4#\x0d~oJ\xe1I\xebfKK\x82\xae\x08\xd9\xab\xeaz^p\xe9\xbf6\xc0\xb66v\xe0\x1di\x80\x00$\xf8N\xa3\x04\x820Q\x0b\x84\xcb\x0d\xaf\xa8\xdc\xee\x04\xday\x1c\xaa\x11*\xb6\x9c\xab\xfd\x93w\xbb\xae\xe6R\xd9\xd5\x1be\xa8 \x95\x06\xa8\n\xceV\xd6\"O\x16\x9b\x05\xda\xe2J\x1b\x11\xaf\x84o\xee\xd0\xa3\xfd\xf9\x0e\x17[\xca\xbc\x9b\xa0\xa1\xf9\x14\x9d\xeb\xe6\x11\x04\x15X\x10q\xd2\xd3\xae\xad=\xf5\xd9)\xbb\xfa\x16\\wK_~\xb6Bj\x13BYM\x9c\xe1x\xc7\x19\x95\x06S*\xefLZXS_\x88\xea%8\x14}\xab\xdf\xec\xbe\xfc6D\n\xa3\xcf\xde\xc3qA\x0ef\x89q\x10 q\x80\xbe'B\x9b\xbf:\xe3X\xb7\xdc\x89\xb6\x16\x1b\xda\x85Z\xad\xcdD\xe6\xdf\xb9[\xcd\xae+~`\x06\x8b\xce\x84\x10`\x01\x02,@\x80\x05+\x10`\x01\x02,\xb42\x85\x0d\x10L\x0c\x02,\x1c\xcaL\xcc\x80\xe3\xb8\x01\x13\xd8\x01\xb3\xf0\x03fg\x08$9\x02\xf7\xc0\x12\xb8/\x9e\xc0=0\x05\xc6p\x05\xa6\xb2\x05\xa2sx\x8a/0#c \x9730\x9250;o \xcd\x1c8\x9a;\x00\x01\x16\x92%\x9b\xc6%\xf0&\x05\x01\x16\xa6\xb0\nR\xbc\x82y\x98\x05\x99py\x92]0\x82_\x90\xf4\x0e\x1f\xc91\x80\x00\x0b\x10`\x01\x02,td\x02\x13!\x9f\x8b\x00\x01\x16\xac@\x80\x05\x08\xb0\x00\x01\x16\x0ee:w\xc1\x9b\x1c\x04X\xf0~\x90\xc5v\x80\x00\x0b\xf3q\x1f \xc0\xc2\xd1\xcc\x88y\xfa\\6;\"\x9f\x1f\x91\x17`\xa1q;\xed\xa4\xd2;I\xf7\xd8\x14\x06\xe2\xf0\x13'({1D\x01Z\xe7YY\xd5 \x17\xf1\x89\xae\xb3u\xa6\xeb\xec;\xfdn\xe35\xab\x0f\xdd\xe6'\xb3$\x9c\x7f\x7f\x96\xe7=[\xbbs\xf4\xa3u\x9f5\xf5\x1a\x81\xe5\x8d\xc2\x88\xebY\x02\xe1\xd7\xb1@\xf8\xe8\\ZGo7 h\x0bd\xa7\xc1\xd4\xaf\x87-\x06\xc0.\x00\xbb\x1e\xc91\x0c\"\x00v\x01\xd8\x0d\xbe \xc0\xae\x16\x00v\x0f\x05\x80]\x00vC\x02\xc0.\x00\xbbZ\x00\xd8\x05`\x17\x80]\x00v\x8d\x00\xb0;\x05\x1b\x05`\x17\x80\xddV\x00\xd8=\x14\x00v\x01\xd8\x05`\x17\x80]\x00v\x01\xd8\x05`\x17\x80\xdd<`\xf7\xb1@\xba\xce\xa3xT@\xe4N\xe0\xff3\x97\x80\xbdg\xbb\x89\x8f\\\x96\xce\xe2m]\x96\xfd\x81\x01\xb0q\xd4n\xd2\x8b\x81\xc1\xfd\xac\xec+\x8f\x16\x0f\x1e\xaa\xf6q\x00{1\x9f\xfc6\x94\xc3\xa0\xd1\x82~\xed(] \x94Q(\x94\x1b\xe4\xc0H\x86\xe5\x0d\xe5E\x1002O\xd8\x03#Y\xc1\x0f\x8c\xdcc5F\x87C0\x92c\xf2C\x93B#\x04\x93r%M\x05H022LB0\x9d~\xf8\x84x\xb0\x04#\xf3\x85L0\x92\x0c\x9c`d\xb6\xf0 F2\x83(\x18\x99\x18J!\x98\xdeag \xe7\x1d\x08\xab\xe0d0\xb7\xc6M\xf4GOM2A\x86@\xf9\x839w\x84\xa1 \xc4\x88hb~\xebx\xc4\xc427A\x02\xa5I\x12h\x02Q\"^\x01\x17\x1b?\x87,\x81\xe6\"L\xa0\x89\xa4\x89h\x82J\xb9\xd9\xc4 t<y\x02\x8d&PD\x93j\xe3\xe7\xe7\x93(\xd0\xdcD\n4\x92L\x81\xc6\x12*\xe2=\xbb![\xe4\x92*\xd0\xdc\xc4\n\x94G\xae@s\x12,\xd0\xd1$\x0b4\x8dh\x81\xe6\"[\xa0I\x84\x8b\xf8p\xc0\x82\xac\xd2\xa4\x0bt?\xc4\x0bt\x8f\xe4\x0bt?\x04\x0c4\x92\x84\x81\xa6\x111RSp\x1e\x19\x03\xcdK\xc8@#H\x19h<1\x03M gdL\x99\xcf2\x08\x1ah\x0e\x92\x06J\x115P\xfe\xf6,\x83\xb0\x81F\xee\xe2F\x137\xa2\xa9iRG\x06y\x03\x8d(\xe5\x8c$\x0e4\x8a\xc8\x81\xe6&s\xa0\x89\x84\x8ex\xbf\x12iR\x07\x9aN\xec\x08\xa6\xa7rL\x91;\xd0l\x04\x0f\x94\xcfS@9D\x0f4\x8e\xec\x81R\x08\xe4D\xd2\x07\xcaH7\x02\x7f\xccD\x00A\x93\x94\x9bO\x04A\x19\xb5\x9c@\x08ASI!(\x8e|g\x91C\xd0\xcc\x04\x114\x13I\x04\xe5\xf5\x98\xa3\xc9\"(\x9f0\x822I#(\x9b8\x82\xf2:\xd4x\x02 \x1aE\"A1\" \x9a\x8bL\x82\xc6\x12J\xd0DR \x1aG,A\x19\x8d\x90\x18f\xe9\xef\xf3\x89&hF\xb2 \xca)Zd\x94\xcdG<A9\xe4\x13t\x04\x01%\x98\xa0z1FBAs\x13QP\x92\x8c\x82\xa6\x12R\x82\xa9\x99\xb3}\xdc\xcc\x91&\xa6\xa089\x05M\"\xa8\x04\x93\x8a\x12W\xd0T\xf2J0\xb5\xc8M\x0bF\xe6#\xb1\xa0,\"\x0b\x9a@fA\xe3\x08-h\n\xa9\x05\x8d&\xb6\xa0\xf8,\x82\x12d\x034\x82p\x90KrAS\x88.h,\xd9\x05\xc5+>\x85\xf4\x12L\xacC)\xc9\x1d2y\xe4\x97\xe8\x80`\x9b8\x01\x06\xcdK\x82A)\"\x0c\x8a\x93a\x82\xdfL%\xc9\xa0\x19\xfb\xee\x08\xb2\x0c\x1aE\x98A\x91\x0d\x8a\x9fj\xe0y9\xc7\x8c\xd1\xa7\x86\xfco*\xb7\x16\x8d\xd6\x86q\x1d\xda|\xc8ip\xd3\xae/\xb9\xce\x8c\xbb\x8d\x00\x95\xa6\xbd\x0f\x1e\xf9k&\xbcwb\x84\xef\xc2h\xaeu\xf7\xf0FL\x06\x9dk\xee\x1d\x8d\xe5\xf0\xd5\xe9\xb7N0r+/\xaf\xc8]\xd8A<\xeb\xfe\x86\xbck1\xff+d\x9er\xa5pQ\x0f\xd4\x9f\xd6\x1a\x8d\x850\xe6\xf7\x0b\xbc!o\xcd\xe5\"\x0b\xf3<\x90\x98\xbee^'\xa3\x92U\n$h\xc7\x85DD\xdbt\xb51X\x87Ah\xa7\xa2\xbd\xbcC4rIxE4\x18\xc08\xda\xf1\x8a8\xe3\xbfo\xf9\x95\\\xe2\xa9W\xa0gp@l\xa7\x08\xda\xf9t\xf6Z\x8b\xfa\x0f\xc3\xb2Q{\x97\xe6\xb6\xff\xd6\x1b1T\xdf\xae\xa2\x0b^3y\xa9\x13\x0b\xcdR7X A\xe4 \xa2R8(F\xa0\x9a\x99A\xb92\xd6\xe6\x1b\xea\xe9\xb6\xe91o\x8a\xd2\x89\x88\xc1{\xbcI\xca\xd0\xe6\xed\xc5Y\x1b$\xc3\xce\xc3\x02\xdd\xa86\xf35\x8f\x1f ,xe\xd2\xd0K\x8e\xbb\xc2\xc6-\x98je\xd4\x06\xec\xaef\xbc\xeap_\xbc\xe3\xbb\xb6\xdc\xd1 \xbc\"{\xa2'\x8b\xefq\xd54Rj\x8b\xd4S\x8b\xee\xdf\xa1\x0dR\x7f^\xb6\xbd\xe7`\x18\x9a($}\xe2\xdd\x11\x81H\x06dA\xd5B\xe6\x88\xd3\xbc\x0e\xa1D\x06O!\x94H\xcet`d,c\xc6\xc1\x0c\xc1\x04s\xd92\xb32e \x94\x08\x84\x12ieV\x06\xcc\x18\xf6\xcb(\xe6\x0b\x84\x129\x96\xe52\x81\xe12\x0b\xbbe<\xb3\x05B\x89\x1c\xc3d\x19\xc3b\x99\xc0`\x81P\"\x10J\x04B\x89\xe42Pfe\x9fLa\x9e@(\x91\xd0kI\x86\xc9\x08vIN\x10\x8a1\xac\x12\x08%2%\x1aG\x8a5\x02\xa1D\xf2\xd9!\x99\xcc\x90\x1cVH\x1e#\x04B\x89\xa0\x89\xac\x8f\x11\x8c\x0f\x08%2\x03\xa3#\xc9\xe6\x98\xca\xe4\x08\xae\x9b\x10J\xe4@ \x94\x08\x84\x12\x19\xc8\x1ca\x1drY\x16\xa3\x19\x16\xa3\xd8\x15\x10Jd\"\x8b\x02B\x898\x993\x94\xc8}\xc4\x10iK\xd1\xb2\x0c\x16W\xe4.T\x94\x01ph\x01{l'rs\xab\x80\x81e\xbb\x08\xe5\xa2A\xf7\xb5In3\xb0]i\xb8^M>)\xc4\xfe\x0d\xd3A\x19\xf4\x99\x9d\xaf\xd7\x82Hu^\xe8\x17\x17u \x05A\xe4b\xa0\xab_l\x90\x14'\xad\xb2\xd6\xb8\x14Im\x05\x0c4\x1e%\x9a\xf2\x85\xf480\x8e\xd8\xcahU\xb2zG*Z\xb8\xdf\xf4\x98/0S\xf51\xd6\xa9-aN\xf15k\x0c\x82\x83\xbd\xf3\xb9N\xad$B\xb4*4&\xb4Z;\xf1_\x91\x91\xfa\xec'\x7f\xcf\xca\x1d\xf0\x1f<\xea-\xe9\x8e\xe6jW\xbf\xebP\xec\x10-\xc2\x18\x8b\xbb=\xd8b\xdeu9\x00\x91\x8di\xa8\xfb\xd3\xf9\x1a\x95d-\x1d\x8d\xc4\xf2J\xdc\x06U\xdb\xb9\xcd\x001\x99(=/\xeft\xbc\x0c\x84\xf7\xfbO\xa8\xc5.\xb9\xa3\xfd>\xa6\xcb\xce\x17J\xa3\xba\x87r=\xd1 \xf5\x07e+Z`I\xda\xb8*F\x83\xfaE\xdb\x91\xba\xc9QV\x94\xf5j\xb0\xfd\xc4&\x97\x06r\x1c\xb4\x98\x06\xb0;\x96p\xb5\x80t8R\x83\xc9\xe5\xc3\xb9\x18\xb4\xd6\xa0\nz\xc7^\x11a\xa9\x06zx\xb5\xe3Q\x0d\xb9\x85\x1dMt\xc3x5\xc0\x11\xdch\xecga4sl\xc3.9/I\x87\xba\xe6i\xc0\x8a\\\x93\xaa\xf7i\xac\xf1\xec\xdb\xc3\x86\xa3\x1drPE\xfc#\xa1\x97\x8e\xca\x83\x18\xa6\x0c\xafV\xa4\x1a\x9e\x0e\xdeQVhf\x9c\xd8q\xf1\\\xac\xae\xd0\x17\x8bo\xbe\x9eU\x1bs\x05\xbf:5\xc4?\x9b\x96/\x08\xd6\xbf\x87\x82`\x19\xeaa\xff\xd2#\x1bK\x85\xaf\x91R\xf5\xdd\x019\xb0I*\x10\x1f+?.\x96\xcd\xdd\xbe\xf8{\x89\x8eu\xd9SwW\xe4'\xa0\xacd\xc6\xa2\x1a\x01\xdbD\x837\xcd\x15\x7f*3\xf6\xd4=\x14{B\xbc\xa9\x1cLh|\x9c\xa9X\xa8\xb2\x8c\x18S#\xe3Ku\xe2Hy\x93\xcb\x88-5g\\\xa9\x8c\x98R3\xc6\x93\xca\x8e%51\x8eT\xf0\x14\x99\x13C*\x1a?*N\x95m\xfb\x17Ve\xe4\xde2\xae\xb0\x8c\xf1X\xba\x9bs\xcd@\xa8T\x17\xdd`\xca\x84D\x98\x19\xe0\xdafd \x93h_W{.\x02X _\xa3z\xbf\xc2R\xfb=\xb0\xc0I}]\x11\xf2w\xdd\xb8z\xce8L)\x1a\xdeo\xf8:0\xd0\x8d\x00\x03\x1d\xe5\xad\x08\xc0@\x07\x06\xfa\x830\xd0\xed\x16w.\x1e\xba\xdb\xaf\x03\x1b\xdd\x08\xb0\xd1\x81\x8d\xde\n\xb0\xd1\x81\x8d\xde\n\xb0\xd1%\xb0\xd1\xfd\x02lt'\xc0F\x076:\xb0\xd13wI\xc0Fo\x04\xd8\xe8]\x016:\xb0\xd1=\x02lt`\xa3\xa7\x94\x0fl\xf4\xe07\xc0F\xef \xb0\xd1\x81\x8d\x0elt`\xa3\xf7$\x97\x19\x0clt-\xc0F\x076:\xb0\xd1\x81\x8d\x0elt`\xa3\xdf\x8b\x16\x81\x8d\x0el\xf4?8\x1b\xdd\x11iO\x7f\x1dp\x93\x1dQ\xbd\xf3\xc0\xfc\x10\xb9\xbe9\xc8\\ooo\xce\xb8\xb7\xd9\xae\xf7\xfd\xb0\xbd]\x0e\xa8\xa3\xae\x9b\xf2dP\xd7\xed\x1b\xbf\x17\xcez\x88\xd02\x89\xeb(\xa3\xbc\x94$$\x93\x83i\xcc\xceH\xc9\xe3\xa3La\xa3\xc4Y'\x938':\x8b@\x82I\xc6\xc9\x0c|\x93\x89l\x93 F\x9f\xc759\x8ai2\x89g\x82p\xf0:\x08\x99\xc72\x99\xc21\x89!\xbfY\x0c\x93\x99\xf9%Y\xec\x92\x19\xb9%If\xc9L\xbc\x92cX%\xa39%30Jf\xe6\x93$\xd8$\xb3sI\xee\x87I2;\x8f$\x9fE2\x8dC\x12Qz\x8aA2\x1b\x7f$\x8f=\xe21\xde\x84\xe7\xd7\x99\x99#)\xde\xc8\x91\xac\x91\x08g$\xb9=I\xf2E\xf2\xf6/\xf3rERL\x91t\x99\xa6\xb1D\xdc\xcc\xeeI0\xc5\x11\x99\x91!r\x04?\xc4\xcf\xea\x8a\xb1C\xe6\xe5\x86\xc4\x99!s\xf0B\xb2\x88\x0d NH6#$\x0cP\x8eg\x83\x84\xd3\xf2\xc2\x04\xb3\xf0@\xc6(+\x97\x03\x92\xd6I6\xffc\x02\xfb#\x84J\xa7\x98\x1f\xf3\xf1>\x8eg}D\xdb\xfbH\xc6G\x16\xdf#\xcd\xf6\xc8\xe1zD\x95=\x96\xe7\x91\xcb\xf2\x08p<f`x\x8c\xe0w\x8cgwds;\"\x94\x88`q\"\xdf\xe4r:\xe6atD\x0b\xefy2\x89\xcb\xe1\xcc\xe2\x9e\xf4\x02L\x8e\x99y\x1ca\x16\xc7T\x0e\x87\xb6\x8f\xf8\n\xeegp\xcc\xcb\xdf\x08\x1d\x83S\xdc\x8d sc^\xde\xc6t\xd6F\x80\xa11\x89\x9f\x91\xe4b\x8ccbd\xf30F\xb20\xc6p0\x82\x0c\x8cpir\x91\xf0<\xf6\xc5H\xee\xc5\x08\xe6\x85\xb7j\xf3\xb2.B\x9c\x8b#\x18\x17^\xebL\x90o1\x8dm\x11cV\xcc\xcf\xab8\xbe'es*r\x19\x15\x87+`\xcc7>\x05\xb5\xc8N\x14\x98\x86\\\x81\x8c\x11\xd5\x93\\\x17t\x19<\xdeW\x9c\xafG\xf9\xee&\x8e\xee\xb6Z;R]\x95\xc4$\xafc\x1c\xddR! +\x86\x1f\xe8\x17\x82\xd1i\x8e@O\xb2\x02\xf6d[)\xd21\x0e\xe4q\xa1z\xb2\x02\xf5\xcc\\\xdc\xd1!z\xd2\xe6\x8f9\xc3\xf3$\x83\xf3L\x0f\xcd\x83v\x1e\xffr\x14\x0f\xcc3_X\x9edP\x9e\xd9B\xf2d\x06\xe4\x997\x1cO:\x18O$\x14OlV<>\x0c\xcf\xccAx2B\xf0D\x03\xf0\x84*\xeb p1Wd\x8ba\x19!\xc2\x85\x11\x88p\x01\x11.Z\x81\x08\x17\x10\xe1\xa2\x95)\xec\x83`b\x10\xe1\xe2Pfb\"\x1c\xc7E\x98\xc0F\x98\x85\x8f0;#!\xc9I\xb8\x07V\xc2}\xf1\x12\xee\x81\x990\x86\x9b0\x95\x9d\x10\x9d\xc3S\xfc\x84\x19\x19\n\xb9\x1c\x85\x91,\x85\xd9y\ni\xa6\xc2\xd1\\\x05\x88p\x91,\xd94\xee\x827)\x88p1\x85\xc5\x90\xe21\xcc\xc3d\xc8\x84\xe7\x93l\x86\x11|\x86\xa4{\xfeHN\x03D\xb8\x80\x08\x17\x10\xe1\xa2#\x13\x98\x0f\xf9\xdc\x07\x88pa\x05\"\\@\x84\x0b\x88pq(\xd3\xb9\x12\xde\xe4 \xc2\x85\xf7\x83,v\x05D\xb8\x98\x8fk\x01\x11.\x8efb\xcc\xd3\xe7\xb2\xd9\x18\xf9|\x8c\xdfS\x84\x8b\x01\x95!X\x96\x01i\xa4a#\x1c|vt\xc9\x92\xae\xfa\x03:\xc3\xe8\"\x1f|v\xffE.\xb1$B&\n<\x0c\xd0\xd0\xfd\x06\xf1kRU\x9567th\x02f\xa9R\xd3M\xf7\xf6/\xf3e/1!\xb5\x93~\xef\xb7>x;\xaf_\xfe\x18Ot=H\"7\x9f\x9d\xe97/\xf4[\xad\xcbxYvF\x97\xdb\x16\xd0e\xd18\x8a\xd7\xcb\x1d_\xd5%\xf1{\x82w\xd2\xfc\xccU\xf0\x91\xfa\x81w\xf5\xd3\x95^a\xccK\x067\xb1\xdd\xe0P=}\x85\xb4\x12,\x14J\x02\xc0\x16L\xb8\xb4\x14\x84\x18\xb7\xc8\x8fK\xa3\x186\x8dr\xac\xa79\xe6\xc7\x83\x82\xf64UR\xa1\x916\x87\x8cxc\x0d\xf4E\x83\x05nshI\x1f\x95\xbe\xbe$\xb4\\i3;\x93D\xa3\xba\xc6\xda\xbcP\x9b\x8a&\xb4\x81\xdbHTd\xc7\xaf\xc9\n\xad+\xbe\x8b`-\xfd\xc2\n]\x89\x13TkW\xaf\xc0'\xba\x1bP\xe12t{\x88\x15\x15xY\x12u\xba\x96\xb4\xb4X\x006\xbb\x8a\x0dV\xe7\x8e\xd0\xfdBNy\xfd.\x15o\x10C@\xe9\x8c\xbf#\xe8'\xdd\x99\xe1\xed\xc5\xd9\xb0\xde\xe6t\xd6\x16\x0e\xd8'\x07\n\x02\xf6I\xde\xf4\x01\xec\x13`\x9f\x84\xde\x04\xf6\x89\x16`\x9f\x1c\n\xb0O\x80}\x12\x12`\x9f\x00\xfbD\x0b\xb0O\x80}\x02\xec\x13`\x9f\x18\x01\xf6\xc9\x14\x02\x07\xb0O\x80}\xd2\n\xb0O\x0e\x05\xd8'\xc0>\x01\xf6 \xb0O\x80}\x02\xec\x13`\x9f\xfc\x11\xd8'c@\xf8z\xbf\xa9\xf0\xaa\xc1GmP\xf80(\xff\xc1\xbeo \xb8A8w\xd6<F\xe7\xdf\x9f\xa1\xd2D\x00\xd0oz\xd1xOb\xf6\xb5G\x0b\xca{\xf5\x15\xc2\xc4&!\xebqh+i\xd5\xc91\x8b\xcc\x0ej\xe5AZS\x00-\x08\xd1\x0e!\xdaG\xc1T1\xe3q\x16H53D\x95\x05P\xcd\x08O%\xc1\xa9\x99\xa0\xa9c\x80\xa9\xd1\xb0\xd4\x0c\xa0\xd4\xcc\x90\x14\x84h\xf7J>\x105\x0d\x86\x8a(=\x05B\xcd\x06A\xe5\x01P\xa3\xe0\xa7\x99\xc1\xa7\x14\xf4t$\xf0\x04!\xda\x0fd\x1a\xd0\xe4fvO\x82)\x98iF\x90\xe9\x08\x88 B\xb4k\x81\x10\xedF\xc6(+\x17FJ\xeb$\x1bB\x9a\x00 A\x88v\x08\xd1\x1e\xd1\xde\x11 \xd1\x08\x88h<@\x94\x0d\x0fA\x88\xf6\x14\x1c\x04!\xda\xe7\x85\x80B\xc7\xe0\x14\xfc\x03!\xda\xbb2\x0e\xcc\xc9\x86rF\x029c`\x1c\x08\xd1~\x0cp\x03!\xda3\xa0\x99\xe3{R6,\x93\x0b\xca\x04C\xb4w]\xcd\xbc\xa1\xd8+\xf2KMD\xc0\x0dxp$\xfd/\xaf\xaf\x95\x07]\x99\xeer\xe5\xc3}\xda8\xbf\xe0j\x05\xaeV\xe0je\x05\\\xad\xc0\xd5\xaa\x95)\x18V01p\xb5:\x94\x99\xf0\xac\xe3\x10\xad \x98\xd6,\xa8\xd6\xec\xb8V\x12\xd9\xba\x07l\xeb\xbe\xd0\xad{\xc0\xb7\xc6 \\S1\xae\xe8\x1c\x9eB\xb9f\xc4\xb9r\x91\xae\x91X\xd7\xechW\x1a\xef:\x1a\xf1\x02W\xabd\xc9\xa6!`\xde\xa4\xc0\xd5j\n\x16\x96B\xc3\xe6\xc1\xc32A\x9e$&6\x02\x15K\xfa\x89\x8cD\xc6\xc0\xd5\n\\\xad\xc0\xd5\xaa#\x13\xf0\xb3|\x04\x0d\\\xad\xac\x80\xab\x15\xb8Z\x81\xab\xd5\xa1LG\xdc\xbc\xc9\x81\xab\x95\xf7\x83,\x8c\x0e\\\xad\xe6C\xec\xc0\xd5\xeah<o\x9e>\x97\x8d\xe9\xe5\xa3z\xc7\xbaZ\xb9\x00\xac\xf9\xdeV\xbd\x90\xadA\x87\xabA\xe8\xdb\xb8\xcfU\xff\nO\xf3\xe6\xef\xc0\xed\xaa\xaf;\xf0\xbc\xcaB\xb8\xa6\xe0[\xe0y\x05\x9eW\xa3P+\xf0\xbc\x02\xcf+\x9f\xcc\x8cP\x81\xe7\x95W\xf2q\xa9i\xa8TD\xe9)Lj6D*\x0f\x8f\x1a\x85F\xcd\x8cE\xa5\x90\xa8#q(\xf0\xbc:\x90i\xb8\x13x^\x1d\x896\x81\xe7Up&\x06\xcf\xab\x03\x99\x80'\x81\xe7\x15x^E\xb4w\x04f4\x021\x1a\x8f\x17e\xa3E\xe0y\x95B\x87\xc0\xf3j^D(t\x0cN\xa1A\xe0y\xd5\x95q\xd8N6\xb23\x12\xd7\x19\x83\xea\x80\xe7\xd518\x0ex^e 5\xc7\xf7\xa4l\x94&\x17\xa3 z^\x9d\x0d\xee\x07\xbcg\xe7\xab\x1e\xcc2\x83\xffU\x1f \x02\x17,+\xe0\x82\x05.X\xad\x80\x0b\x16\xb8`\xb52\x05\xcc\n&\x06.X\x872\x13\xb0u\x1c\xb45\x01\xdc\x9a\x05\xde\x9a\x1d\xe0JB\\\xf7\x00r\xdd\x17\xccu\x0f@\xd7\x18\xa8k*\xd8\x15\x9d\xc3Sp\xd7\x8c\x80W.\xe45\x12\xf4\x9a\x1d\xf6J\x03_GC_\xe0\x82\x95,\xd94(\xcc\x9b\x14\xb8`M\x01\xc5R\xb0\xd8<\xc0X&\xda\x93\x04\xc7F\xc0cI\xff\x91\x91\x10\x19\xb8`\x81\x0b\x16\xb8`ud\x02\x90\x96\x0f\xa5\x81\x0b\x96\x15p\xc1\x02\x17,p\xc1:\x94\xe9\xd0\x9b79p\xc1\xf2~\x90\x05\xd6\x81\x0b\xd6|\xd0\x1d\xb8`\x1d\x0d\xec\xcd\xd3\xe7\xb2\xc1\xbd|xo\x94\x0b\x16g\x8c\xe8\xb3\xdd\xe9\xf5\x97\xd6!\xeb\xb2\xfdQ\x9c\xfej\x7f\xa3\xab\xdf\xc2\xbeX\x1d\x9c\xcf\x04A<kSh<\xb2\xacY\xd9\xfe\xaeq\x03q\x800b\x1b\xfd\xb1I/\xec\xadu\x90\x93}\xe9\xd1:j\xb5\x95\xbf\xd4\x95\x9f\x15@\x0b\x98wz\x15\x15%-\xb4\xe5AC\x04c\x9ac\xb8\xd4\xec+\xce\xd7\xa3@\xc3\x84\x8d\xc9\x02\xd0;R]\x95\xc4$\xaf\nJn\xa9\x90\x84\x15\xc3\x0f\xf4\x0b\x97[B7[\xe9)\x86I\xcc<FX\xda\xc9E\xd5\xd8\xa4|\x83Ek\xbb\x08\xd4b\x92\x9b\\E\xae\xa9P\x0d\xcc\xea\xdd\x92x\xa0]\x94\xd2\x12\xeah\xaa\xa6L\xfe\xeb7\xfe4L\x15\xcd\xf6\xc5\xe4\xd9\xc0=.\x80*\x15\x1d\x13.\xf7\x19n\x9b\xe2\x864\x89\xe6/\xaem\x15\xd5\xbd\xec\x96rC\xaf k\xca\x12\xef\xc2^\xf3\xdekU\x00\xb5\xe7U\xa9\xbd\xb5\xe9\xfc\xd9\xe4C\x05\xa2\xac\xa8\xb4MU-S\x12\x11\xac\x16\x1a\xfd\xd4\x93\xd6\xcd\x96\x96\x04]\x11\xb2W\xd5\xf5\xbc\xe0\xd2\x7f\xad[\xd8\x18\xf1\xf0\x8e4\x10\x19\x12|G:\xee\xa6\xb8\xdc\xf0\x8a\xca\xedN\xa0\x9dgX#Tl9W;w\xef1R\xad\xb9\xb2\xab7\xcaPA*\x0d\xf2\x16\x9c\xad,FE\x16\x9b\x05\xda\xe2J\x9b\xce\xaf\x84o\x15\xd1\x13\xe9\xf3\x1d.\xb6\x94y7\xdeC\xe8\x00\x9d\xeb\xe6\x11\x04\x15X\x10q\xd2\xd3\xae\xad=\xf5\xd9\x16\xbb\xfa\x16\\wK_~\xb6BjkKYM\x1cp\xb2\xe3\x8cJ\x83\xba\x96w&-,T\xb1\x88\xea%\xe6\xe0\x14i\x16\xd3\xec\xbe\xfc6D\n\xa3\xcf\xdeC\xdb5\xfdT\x95\x835f:K\xe5pal *\xcd\x07\xc0O\x19<\x05~J\xce\x04h\x04\xf8)\xc0O\xf1\x0b\xf0S\xb4\x00?\xe5P\x80\x9f\x02\xfc\x94\x90\x00?\x05\xf8)Z\x80\x9f\x02\xfc\x14\xe0\xa7\x00?\xc5\x08\xf0S\xa6P<\x80\x9f\x02\xfc\x94V\x80\x9fr(\xc0O\x01~\n\xf0S\x80\x9f\x02\xfc\x14\xe0\xa7\x00?\xe5\x8f\xc0O\xd9\xe3\n\xef\x88$U\x8f\xa5\xa2\xc6\x99\xbb\x05\xf4\x92vg\xe7\xdeI\xda\xa1\xdc\x8d\x1f\xba\x8f\xbd\xd0\xc0m\x9dT({1D\x05*\xf2KM+\xb2z\x81dUw[\xcfc\x9b\x18M\xaai!\xbf0\x83\xc6G\x98q,\x0d\x1b\xbe\xb8y\xae\x96\nTl1e~^\xcc\xef\x91\x11\xf3H\xd0:\xba:\xc2H\xd5\xef\x9d-\xb5\xa6\xed\xa1\xfe\x15\xb1\xe9\xe9\xb3\xe5mF\xc6a\xf4\x06*:\xe5\nX\xea\x8ce7\xa0\x9fx\xab\x18 \xb6\x8d\x91D\x0b\x19I\xb5\x93\x91V\xb1\xb1\xb7\xb2\xf4g_4\\\x00\x83\x97:U\x84\"]\xf4eM\xb0\xac\xabxys\xb4g$\xa1C#c\xab\x151\x8a\x1a)\xa9\xd0\x88\x9a\xabK\x03\x1f\x94\xa4\x8d\xff\xd1\xd8;\x13\x89eh-\xc70j\xe4/\xb6)4\xeee\xb7\xc5\xb6y\xd4\xf6\xcc\x82W\xdaL-y$\x1dF6\\\xaa!\xd1L\xac\xd7\xa4\xa2j\xd7\x18\x03n\x91\x83\x1c\xdd\x88\xdeb\xb6\x12[|\xe55\xf7\xa2,\x8d\xdb\xbcu\xad\xec\x1e\x1a3\xb5c\xd16MS\x11\xb4Rk\xe3\x8e2\x82\x08+\xb8\xda\xc0\x84\xd1\x06\x03{i\xeb\xb0\xd0(h\xf0\xcdb\x8b\x19#\xa56\x96\xaa\xbd6\x91\xc2\xe6\xaat9\x98%\xbc\xa9\x04\xe2\xcb\x1b\xe9OE\x06\xa3\xb1\xf1d\xec\xe9\xa4\xa3I\xc2VA\x1d\xa6\xbb7a\xf5.<J\x9e\xa3w\xef_\xbe\x7fu\xf9\xe1\xf5\xf9\xeb\xf3\xf7\xe7/\x7f:\xff\xbf\xaf~\xb8\xfc\xf0\xfa\xdd\xc5\xab\xb3\xf3\x1f\xcf_\xfd\x90\xfcR}\x97|\xe9\xfd\xdb\xff\xf3\xe6\xe2\xd5\xeb\xe4{\x91\x97\x1c\xedgR\x81\x0b^3I\xaa=\xae\xe4]^\x9bt>0\xfb\x88iKE\xd6\\\x9e3\x93'\x17@\x94\xd7\x1d\xd0\xa89\x05\x0d\xe90v\xd9\xe4\x8ea0\xd4R4\xad\xc3\xbd\xa7\xa65\xc6&\x15\x94\xa1\xe1\x1ek\xf8\x93+\xa87n}\x8a\x8a\xd7\xd6\xdb\xd5\x02\xd8\x94\x13C\x0e\xcdQ\xd4\xbe\"kz\x1b\xd3\xd0`\x14\xecvTj\xbeP\xc3:V \xb4\x93\xd4\xb0\xfd#f\xbd\x9c\x91\x802G\x83\x92+rw\x99\xae\x0f\xcaou\x94\x07\xa2\xa2\xac\xb5K\xc9\xcfZg\x17FeT4:\xc4rk\x15i\x960\xa5\xca+r\x171\xe6#k\x15+8\x13\xb2\xaa5\xb3\xf1\x8a\xdc\xa1u\xc5w\xfa\xf3\x0b\xac\xe3\x18\xae\\Z\xfap\x1fMnI\x10\xde\xef [=U\xdf.\xfe\x1fr\xa7\xfe\x7f\x12/\xc3\xf0\x0b]\x89\x13]\xf8\xc5\xe2\x99\xdf\xc4\xbd\"%\xbe\xbb\xdc\x93\x8a\xf2cv\xef\x19\x0c\xeaA\xef\xd5\x19#\x93\xf1\x94\xd9;g\x168w\xa3\x7f\xd5\x1e)\x9b\x1dX\xf7lm\x07rc\"\xf4\xa6\xd6\xd9Rx\x9fw\xce\xf1\xc6\x16r\xf0V\xaf\xccn\xaf*$\xaf\xc8jx>\xd6\x03\xd87f\xf7xC\x99>*{\x0e\x9c\xa6\xe3\xb7\xaf4G\xdf\xc3W\xa7\xbb\x080r+/\xafH`\xa9Nv\x96\xe4 \x8e\x07\xe0s\xe2J\xe1x\xcc\xeaOK\x0c\xc2\xc2\xee>/\xf0\x86\xbc5\xd1\xfe\x16\xe6y \xb1_jR\x19\xf2\xbdJV)\x90\xa0\x1d\x17\x12\x11M\xb7\xd1\x1c\x9d\x05:\x97\x1d\xab\xdc^\xde!\x1a\xb9\xb8\xa7\"\x9a\x8b\xc58\xda\xf1\x8a8\xee\x95\xaf'K.\xf1\xd4k\x892\xc6]j6\xd4\xd9k-\xea?\x8c\xdf\x87\xea\x82\x8e.\xd6\xe1&\x85\xea\xdbU\xb4^v.ub\xa1\xe9\xea\x06\x0b$\x88<AT\n\xc7\x82\x13\xa8ffh\xae\x0c1\xe8\x86z\xbamz\xd4\x9b\xa2t8\xee\xbcgE\xa5\x0cm\xde^\x9c\xb5\xb4wk\xa2\x14\xe8F\xb5\x99\xafy\xfc$\xcb\x82W&\x0dMHu1%\x9d\xc1s\x8b\x859\xccu5\xe3U\x87\xfb\xe2\x1d\xdf\xb5\xe5\x8e\xc2s\x15\xd9\x13=U~\x8f\xab\xa6\x91\x12(@_-\xba\x7f\x87p\x80!\xc0\x98\xf0Q2CgY\xf2\xe2*\xe4\x93r\xc4\\\x03\xeeH\xc9\xe2\x82;\xd2@\xc0\x1d\xe9\x93\xba#\xc5\xbb\x97qJ\x9a\xc5\x1d\xa9\xef\x884,!\x04\xce\x05\xc7\xa4\xe4\xb1%=\x15\x1a\x01\xc7$pL\xf2\x0b8&i\x01\xc7\xa4C\x01\xc7$pL\n 8&\x81c\x92\x16pL\x02\xc7$pL\x02\xc7$#\xe0\x984\xc5\xb7\x07\x1c\x93\xc01\xa9\x15pL:\x14pL\x02\xc7$pL\x02\xc7$pL\x02\xc7$pL\xfa\xa3;&\xb5\xfc\xa0\xc5\x15\xe9\xaeu1\xe6\x8d\xa5\xda`;\x85VD\xd6\x153\x84\x8a.\xb7`\xd1\xf0r\xb41l3\xb0\x1ai\xb6\x80!i\xc7\xb96o\x98\xc6\xd8\xf5i\x99\xaf\xd7\x82H\xb5S\xef\x17\x17u\x8c\xf9\x82\xf4B\xbcRf\x99 \x9d\xdfZ\x17\xa95.E\xc2G\n\x85L#\x1e%\x9a\xf2\x85\xf480K\xd8\xcahU\xb2zG*Z\xb8\xdf\xf4hs$zm\x17\xda\x12\xe6\x14_\xb3\xc6\x147\xd8\xb5\x9e\xeb\xd4J\"D\xabBc\xbc\xaa5\xce{EF\xea\xb3\x9f\xfc=+w@r\xf0\xa8\xb7\xa4;\x9a\xab]\xfd\xae\xc3\x92C\x84&c\xa6\xed\xf6`\x8b<\x0f\xef#\xdf\x1b\xa3L\xf7\xa7\xf35*\xc9Z:\x02\x98e\x84\xb9\xad\xa1\xb60\x9b\x01b2Qz^\xde\x19\x8a\x04\xde\xef?\xa1\x16\xbb\xb4\xac\xf6\xfb\x98.;_(\x8d\xea\x1e\xca\xb5{!R\x7fP\xb6\xa2\x85qD\xb14\x19\xa3A\xfd\xa2\xedH\xdd\xe4(+\xcaz5\xd8\xf8a\x93K\x03\xf6\x0dZLC\xc7\x1d\x1b\xf4Z;|4\xec\xc6\xc1\xe4\xf2\xe1\\\x0cZkP\x05\xbdW\xae\x88\xb0 \xbf\x1e^\xedxTCnaG\x13\xdd0^\x0d,\xf8n4\xf6\xb30\x9a9\xb6a\x97\x9c\x97\x04\xb3X\x03V\xe4\x9aT\xbdOc\x8dg\xdf\x1e6\x1c\xed\xd0\xfa*\xe2\x1f \xbdtT\x1e\xc4p\xdcx\xb5\"\xd5p_\xfe\x8e\xb2\x82\xbc@\x05\x17;.\x9e\x8b\xd5\x15\xfab\xf1\xcd\xd7\xb3j\xe3\x08w\xd5\xd3_{\xce\x07\x91\x00\xf0\x1d\x82p\xe3\xbd\xca\x06\x8e\xab]_\x9f\x80\xc3\xeag\xae\x82\x8f\xde_5H\xe8\xeb\xd4w\xc2\xed\xd9(\xc5\xeb\x88\xb3:\x12\x8e4I<c&/\xd2\xb8\x0f\xa9L\xf8@F}\x1f\xa3\xca1\x92\"\xbe\xa0l\xcf\xd1\xa4\xbe\xeckS\xbdFs|FS\xda2\x92\xe1/:\xae2 \xef\x8f\x19=E\x93z\xcaA\xa9\xd0X\x1f\xd1\xd6\x134\x98\x9e\x1c\xe1!*G\xf9\x87\xe6\xd5hf\x0f\xd1\\\xff\xd0Q\xde\xa1\xbe\xfaE\x9cC\xe7q\x0dM\xf6\xe4\x98[\xe8T\xa7\xd0\x0c\x97\xd0<\x87\xd0\xa4;\xe8\x11\xce\xa0iW\xd0{q\x04MN\xca\xe9)9\xc3\x054\xd9\xec({h\xa1Y\x9d?'\xb8~\xa64\x9a\xed\xf6y\xcfJ9\xc6\xe1s\x82\xbbg\xae\xb3g\xca5\xf2\xde\x1c=\x93=\x1de\xf5v4\xc2\xc53\xab\x85Q\x1e\x15%oy\x9f\xd3\xb5s\xbcc'Z\xc6hZc\xdd:\xc7;u\xa6]:\x93-\x92\xe1\x81\x927${^\x9e\x86yY\x0b\xa9]\xf4\xd0R\x13\xea\x8c\x1f\xa6\xf5\xed0+i\x81C\x93\x953\x8cEV\x7f\xb3\xe2?W{\x9e\xb5%\x1f\xa2\xd7o\xde\xbf\x1ax\x9c\x96|C\x0bg\x13\x08$\xd50\xb2\x0cX(\xf8.H\xe42\x93\xaf\x87\xa2\x95VS{x|\xc5V\x1d\xefT\xad\x0bu\x1c4\x83U\xcd]6h\x92\x9b_\xbc\xfbR\xc9\x11f\x9a\xc0\xe6+\xab {\\\xe9\xdd\n\x1bZ\xb6\x8c\x18U\x19\xffE\xddT\xdaf\xb2$\xe8+\xe4\xbc\xf3z\x05\xd6\xd64\"$^\x96Tx\x99x=?\xdb%\x917\x840$o\xb8\xa9\xcb\x81\xca\xfe\x01.\xe6\xaa\x88\xac(\xf1\x11@\x8f8\x19\x83'\\\xb2\xb8\xe0 7\x10\xf0\x84\xfb\xfdx\xc2\xcd\xe1\x08\x17\xf1\x83C\xdf\x13\xa1)\xa3\x87\xbb\xe2\x13\xcd\xc16\xd6y\xb5\xf0\x98\x89\xcc\xcfK\xb1\x9aU\x1b\xa0aF\xd1\x99\x10\xfc\xf0\xc0\x0f\x0f\xfc\xf0\xac\x80\x1f\x1e\xf8\xe1\xb5\x02~x\x12\xfc\xf0\xfc\x02~xN\xc0\x0f\x0f\xfc\xf0\xc0\x0f/s\x97\x04~x\x8d\x80\x1f^W\xc0\x0f\x0f\xfc\xf0<\x02~x\xe0\x87\x97R>\xf8\xe1\x05\xbf\x01?\xbc\x9e\x80\x1f\x1e\xf8\xe1\x81\x1f\x1e\xf8\xe1\xf5$\xd7'\n\xfc\xf0\xb4\x80\x1f\xde\x1f\xc1\x0f\xaf\xc7\x90\xeb\xa44 \x7f5X\x9d\xe5g{\xf9\xc6\x9f\xeeJ\xb0\xa1\x8f\xc5\xa9eBvX\xb4>\x87\x8b\x8e{a\x0b`\x9e\xe9O\xdfi\x16\x90s\xc3\xe8\xd0\x0e\x0c=\xc8\xe3\x95\xd0$u\xc8\xbc\x0b8jtr\xb2/>Z\x9f\x8d\xa6\xbdW\x97\x87\xaa\xed\x8as\xe0H(\xcb\x11\xa4\x0f\xbf\x9f\xceN9\xd6o\xa3_\xf4(\xa3>\xae\x03\x94\xaa\x07J\xd6\x05e`\x9a\x19UB\x99v1#\x93\x90\xcdHz\x07\xc6\xad\xc8 i^t3\x89o\xce\x8dp\xe6c\x9c3\xa1\x9c\xd3p\xceHr\x94\x8d@:\x8f\xc6:\xe7F;G\xe2\x9d3#\x9e\xe30\xcf\x91\xa8g\xac\x0f7xh.\xee93\xf2\x99\x85}\xce\x88~\x1e\x8b\x7fNB@g\xc2@\xa7\xa0\xa0\x91\xc44>\x9a\xc6A\xef\x05 \xbd?,\xf4^\xd0\xd0qx\xe8\xec\x88h.&:+*\x9a\x8f\x8b\x8eFF\xc7c\xa3\xc9\xa9\xf0Y\x06::\x03>\x9a@H37T\x19(\xe9\x98]\xd7h\xa44\xb6\x08.\xf95\xc9\xc0Js\xcb7#^:\x061\x9d\x193\x9d\x86\x9a\xc6z\x90H\xe3\xa6\x93\x91\xd3@j*\xb7\x14v:\x17z\x9a\x0d\x01f \xa8\xa30\xd4\x84Y\x7f\x12\x8e\x9aJ3hM\x9c M\x1d\xaf\xcc|D5U\xb7 \xa8\xeaD\\5\n\x1de`\xab\xf3\xa2\xab\xf3\xe0\xab\x19}\xe3h\x8c5\x1be\xcd\xc3Ys\x91\xd6\x8c\x8e3\x1em\x1d\x83\xb7F\x10\xd7\x990\xd7\x91\xa8\xeb4\xdcu\x14\xf2\x9aRzt\x08\xa5\xbe\xcdG`\xe7\xc3`\x93\x85\n\x8e\x9f\xf9\x90\xd8\x0c,v:\x1a\x1bHN\xbd\x16\xc3cgFdS\x98\xecDT6\x90\x969C\xc7\xcc\x08id6\x8a\xcd\xce\x8f\xce\xce\x8e\xcf\x86\x11\xda91\xda\x1c\x94v<N;\n\xa9\x9d\x80\xd5\x8eEk\xa3xm\x1c=\xcb\xc7\xcfr1\xdb \xa8\xedH\xdc6R\xdd)\xd8m \xa9\x0e.\x9a7$\xf2\xf0\xdbH\x97g\x9b8\x82;+\x86\x9b@q\xef\x07\xc7\x9d\xab/\x8e\xc0r\xc7\xa0\xb9\xa1\xed\x81\x07q;x/}\xda\xef\\S\xdd\xc1?;\xf7Tw\x01=sv\xf7Y\xbc:\x93\xa3\xf9\xc2\xa7\xee\xd4%\xd5\xe0~\x0f\xee\xf7\x8d\x8c+.\xb8\xdf\x0f\x04\xdc\xef?\xa9\xfb\xbd\xed\x9a\x077\xc8\x0f\x1c\xef;s\xee\x1c>\xf8\xdd)\xfc\xed\xc5\x99=\x8d4\x1f\x81\xfb\xfb\xe0)\xb8\xbf\xe7L\x84F&\x91D\xc0\xfd=\x87\x1a\xe2\xb3\x11\x8c&\x86L\xa1\x85\x80\xfb\xfb\x8cd\x901T\x90QD\x10p\x7f?\x96\xfe1\x81\xfc1\x0b\xf5c<\xf1\x03\xdc\xdf\x8f!|\x8c\xa1{\xccL\xf6\x90YT\x8f\x19\x89\x1e\xb94\x0f\x8f\xcd\x02\xdc\xdf\xfb\x92A\xec\xc8\xdd%\x8d&u\x80\xfb{\x16\x95c\n\x91\x03\xdc\xdfC\xaf%\xc9\x1b#\xa8\x1b9\x8e\xd3ch\x1b\xe0\xfe>\xc5\x83<E\xd3\x00\xf7\xf7|jF&1#\x87\x96\x91G\xca\x00\xf7w4\x91\x861\x82\x84\x01\xee\xef3\x90.\x92\x94\x8b\xa9\x84\x8b\xe0\xba \xee\xef\x07\x02\xee\xef\xe0\xfe>\x909\\\x91s\xa9\x14\xa3\x89\x14\xa3h\x14\xe0\xfe>\x91:\x01\xee\xefN\xee\xc3\xfd\xfd\xd1\xfb\xbd;d\xd8\xf8&\x9f:\xdc\xfb\xf4\xd7\x01y\xe0\xb7S\x83\x90v\x1e\x98\x1f\"\xf7\x13\xfa\xdd\xe5]\x8e\x1e\x8f\xf9\xc1\x9d\x1a\xf38\xcd\xf7\xf2\xb3\xef>Z\xbf\xf9A{\x84\xd0\xc2It\x908\xe8\x97\xb4w\xe5\x18\x8cf\x87\xfb\xf2\xc0\xbe)P_\x1c\xd2\x9b\x04\xe8\xe9,\x02 &\xe1\xbc\x19\xc0\xbc\x89P^\x984\x98\x05\xe4\x1d\x05\xe3M\x02\xf1\x10\x0e\x92\x913!\xbc)\x00^\xcc\xac\x9e\x05\xdf\xcd\x0c\xdeeAw3\x02wI\xd8n&\xd0\xee\x18\xc8n4`7\x03\\73X\x97\x80\xeaf\x07\xea\xee\x07\xa6\x9b\x1d\xa4\xcb\x87\xe8\xa6\x01t\x11\xa5\xa7\xe0\xb9\xd9\xc0\xb9<hn\x14073,\x97\x02\xe5\x8e\x84\xe4\"\x80\\r{\x92\x04\xe3\xf2\xf6/\xf3\x02q)\x18.]\xa6i\x10\x9c\x9b\xd9= \xa6\x00\xb8\x19\xe1\xb7#\xc07?d\x1e\x83\xde\xe6\x05\xde\xe2\xb0\xdb\x1c\xa0[\x16j\x94\x00\xdc\xb2\xe1\xb6\xb0\xf5w<\xd4\x16N\xcbk\x83\x99\x05d\x1b\xa3\xac\\\x80-\xad\x93lpm\x02\xb4\x162\xf9\xa7`\xb5\xf9@\xb5\xe3!\xb5h{\x1f \xa7e\x81ii(-\x07H\x8b*{,\x88\x96\x0b\xa1\x05\x00\xb4\x19\xe0\xb3\x11\xe0\xd9x\xe8,\x1b8\x8b\xe0M\xc1\xe2D\xbe\xc9\x05\xcc\xe6\x81\xcb\xa2\x85\xf7<\x99\x04\x949P\xcc\x93^\x00&\x9b\x19$\x0bCdS\x012m\x1f\xf1\x15\xdc\x0f\x8f\xcd\x0b\x8e\x85\x8e\xc1)`,\x08\x8b\xcd\x0b\x8aM\x87\xc4\x02\xf0\xd7$\xf0+ t\x8d\x83\xb9\xb2A\xae\x91\x10\xd7\x18\x80+\x08o\x85K\x93\x0b3\xe4A[#\x81\xad\x11\xb0\x96\xb7j\xf3BZ!@\xeb\x088\xcbk\x9d \x82Y\xd3\xa0\xac\x18l5?hu|O\xca\x06\xacr\xe1\xaa\xc3\x15\xd0\xf9\xf5\xa6A\x94@0\xddH<\xdc\xe8\xe9\xbb\xefP|\xfe\x83?\xcb~\xb1\x06\x89\x80\x07/x\xf062\xae\xb8\xe0\xc1;\x10\xf0\xe0\xfd]x\xf0\xf6`\xe9Y\x9cx\xfb\xc0:\xf8\xf1\x1a\x01?^\xf0\xe3m\x05\xfcx\xc1\x8f\xb7\x95)4\x80`b\xe0\xc7{(3Q\x02\x8e#\x05L\xa0\x05\xccB\x0c\x98\x9d\x1a\x90$\x07\xdc\x03=\xe0\xbe\x08\x02\xf7@\x11\x18C\x12\x98J\x13\x88\xce\xe1)\xa2\xc0\x8cT\x81\\\xb2\xc0H\xba\xc0\xec\x84\x814e\xe0h\xd2\x00\xf8\xf1&K6\x8dD\xe0M\n\xfcx\xa7\xd0 R\x84\x82y(\x05\x998y\x92V0\x82X\x90tB\x1cI.\x00?^\xf0\xe3\x05?\xde\x8eL\xa0 \xe4\x93\x10\xc0\x8f\xd7\n\xf8\xf1\x82\x1f/\xf8\xf1\x1e\xcat\xd2\x8279\xf0\xe3\xf5~\x90Es\x00?\xde\xf9H\x0f\xe0\xc7{4%b\x9e>\x97M\x8b\xc8'F\xfc~\xfcx\xdb\xd2\x0c`\xfe9\xb3\x08\xc2\xe9\x07y\x1f@\xd8\xf7\x95\xf7X\xffe\xdd\x8e\"\xecf\xdcB\xa0\x17\xfa\xcd\xc6\xa7\x18\x97e\xa7\x13\xb8\xd5\x8b.\x8bn\xcb\x8az\xb9\xe3\xab\xba$ ?b\x93\xf6gN\x0f\x8f\xd4\x7f\xb8\xab\xab\xae\xf4\nc^j\x82\xf5K\xbd=\x1c\xaa\xa9\xaf\x94V\x82\x85BI\xbcr\x87o/\x1d\xbc|)\xe9\x8e\\\xeeIu\xb9,yqu\x7fT\x91\x1c\xfb\x98.\x1a\xdd\xd5;\xd4\xa0\xdf\xaaxhO*\xa4\x8b\x87\x9eR\x86\x18f\\\x90\x82\xb3\x95xvb\xac\x96\x92\x07\xd2#l\xcd\xab\x82\xd8\xafW\xa4\xc4w\x16\xb0l4\xed`\xb8\x8a\xacKR\xc8\x18`T\xe2jC\x84Dx\xc7k\x8b@R\x07\xbfJ\xc3\xe7\xa2\xccZZ+\x82\x05gx\x19\x04\x8b$\xbe\"\xdaZfa\x0c\x95\x00#\xb7\xd2\x96\xb5f+R!\xa6)0n,\xf8\x99+\xc8\xf8\xab[\xce\xc8B\xf5q\xbcV\x85\xe1\xb4\xd0\x8b\xf2\xd7\xcf\xbf\xbd5\xcb\xf6P\xab\x81\xd4t \xfa].\xde|\x03R\x85\x19\xa3s\x90)\xecL\xd2\x92(\xdaR\x01\x8bb\xf0\x14X\x14\xa9n\xda\n\xb0(\x80E\xe1\x17`Qh\x01\x16\xc5\xa1\x00\x8b\x02X\x14!\x01\x16\x05\xb0(\xb4\x00\x8b\x02X\x14\xc0\xa2\x00\x16\x85\x11`QL!\"\x00\x8b\x02X\x14\xad\x00\x8b\xe2P\x80E\x01,\n`Q\x00\x8b\x02X\x14\xc0\xa2\x00\x16\xc5\x1f\x81E\x91\x81\xd6\x9bh\x12:\xd4\xb8\xf93\x06\xd6\xdb7z \xbdj\xac\xf3\xef\xcf\\\\\n}\x04\xc4\x06\xd5\xf4\xa3\xf2\xf6=\xfb\xec\xd1\xa2\xf1}ut\xe5S\xc0\\\x81\x88\xe2F\\\x10\x0fc\xaf\xb3\xb1C\xecJe\xab\x81\x08\x0bY\"3\xccC\x84\xd5\xbb\xf0n\xfb9z\xf7\xfe\xe5\xfbW\x97\x1f^\x9f\xbf>\x7f\x7f\xfe\xf2\xa7\xf3\xff\xfb\xea\x87\xcb\x0f\xaf\xdf]\xbc:;\xff\xf1\xfc\xd5\x0f\xc9/\xd5w\xc9\x97\xde\xbf\xfd?o.^\xbdN\xbe\x97\xf5\xd2\xd9Oo\xde\x05\x0b\xe6P\xe2\x89\xf5\xca\xb1G)1\xbe\xfe\x8e\xc9A\xed\xb0\xd1\xad\xa5#Uh\xf4\xc36\xa3A\x1a\xc2-d{\x88\x88\xccV\xa6\xca'HU\xe6\x04Ym\x9e \xf5_u\xfe\xed\xd52r6L7\xf7\x0bd\xcf\xb2\xe8\x9d'\\\x8c'%\x95\x8e\x1a\xd8\xae\xf6j\xed\xfa\xcfZ\xe8\x9e\\i\xea\xc1\x96\xa8ID\xdbz\xb7\x98\xad\xc4\x16_yM\x81\x83\x84m%\x87i\xe3B\xad\x93%Yml\xdaM\x9aHH\xb2w\xe0J\xc1k&I\xb5\xc7\x95\xbc\xebOh\x91,}\xf9\x15\\\xad9r\x98\xd9\x02\xbd\xd9\x13\xd6N\x9c\xb8\n\xeb\xaa\"x\xa5\xf1\nA\xd8J/\xf0\x15)\x08\xbd6\xc7\x1a\"\x03va-\xfd>?,\xdc\x92\xa82\x94\\\x10\x93n\x81\x19b\x1c\x95\x9cmH\xa5\x96xK\x9619k>\x84\xce8\x98_\xb4@\xbcZ\x115\xd1$\xa6\xb2\x9b-\xb1\xd6w\xd2\x1d\x13\xfak\xa2KQ3\xfb\x8f\xfb\x9b\xd5\xde\xbc\xfd\xe1\xd5\xdb\xcb\xd7o^\xbf\xca\x18\xf4\xed\x07\x1f^\xeb\xffg\xbc\x19\x7f\xaf\x99\x85F\x95#w\xf2 U\xef\x05\xfa;\xa9\xf8ssDR\x9b$\x7f\xbc\xa9V\\\x8b\xc6\xfa\xdf@1/\\\x1f\xd1\x9dm\xa9\xe6\xc0\x92^\xeb\x96U[=vg\x12=\xb1\x9b\xc2\x1d\xbeC+\xaa\x11\x83u\xc5wf6P/\xc4\xd0\xa8&\xcc\xd3\x1d\xba!\x15Q\xbdWF\xc7H\xafI\xda\x12\xe2\xaa[<r\x8b\x0b\xa9C\xd1tJ\xe1\xcb\xca\x9bSwBI\xad\xe5\x83\xb9'k\x0d\x0f\xee.P\xc6\x0eC\xbf\xc3+\x7f\x0c\xb1V2\xc6\x15\x1a\xd1\x0d\x91\xcd5<\xe7Z\xf5\xf2\x1b{\xfa\xd5\xb0\\4==O\xf5v?\xe1\x86\xb7/\xccSi\xd7vms\x85\xab\x15\xe8 \x0d\xb3y\xcb\xf7\xc1\x86\x8am@\x8d\x04\xb7\xa1F2\xeac\xeb\x12i\xba\x92\n\xcd\x0f\xf12\xad\xc5\x89\xde\xc0\x98al\x912\xd5\x8e\xe1\xaeg\xc7\x9b\xd0\x04\xa3\x08\xcbG\xe3\xd5N\xc5\xfa\x18*+|\x1d\x98\xa0,\x8e~\x042\x9a\xd6\x03\xdf\xe3_\xeav\x99\xb2Y\xba\xc9\x8b\n\x847\x15!+T\xef9C\xabZ\xdb;b\x14\x86f\x7f\xe0}#1D\xf3k\xa4G\x9d\x97\x1a\xdfJzt\xe4\xe7\xd7,\xe3\xb1,s\xa6\x8ds\x97\xc0\xca\x1e%\x9b-4\xee\xf4\x0b\xb9\xed\xda\xd4teq`\xfat+\x9c\xf7a[\\cB\xf0\xeckz\x85v\xa3BH\xae\x16\x8c\xee\xa9X:\xb6\xef0\x89=\xdeP\xa6\x0f\xc8\x9e\xc3\xa6m\xad\xe6\x95\xe6\xcc{\xf8\xeatv7#\xb7\xf2\xf2\x8a\x04V\xa5d#'\xe9\x03=\x15\x1d\x84Ws\xe2J\xe1\xc8\xbf\xeaO\xcb\xa6\xc1\xc2\xeeB/\xf0\x86\xbc%\xbf\xd4D\xc8\x85y\x1eH\xec\x97\x9aT&\n\xa0&H\xef\xf1\x86\xa0\x1d\x17\x12\x11\xcdQ\xd1\xc4\x96\x05:\x97\x1dS\xd6^\xde!\x1a\xb9\xcd\xaa\"z;\xc08\xda\xf1\x8a8\xc2\x92oq\x91\\\xe2\xa9wue\xf0\xe2S\x93\x92\xce^kQ\xffa<ST\x17t\x1c\xab\x0e\xa1'T\xdf\xae\xa2\xf5\xf2u\xa9\x13\x0bM\xcc7X\xcd\xdd\xf2\x04Q)\x1cuLhB\xba\x1a\x9b+\xb3l\xdfPO\xb7M\x8fyS\x94\x0e1\x9c\xf7L\x8f\x94\xa1\xcd\xdb\x8b\xb3\x96+n\xedzB\x1d#\xbcg\xaa\x003\xb1\xe0\x95IC\xb38+S\xf9\xc6J\xa8\x0eK\xfa,\xd4\xd5\x8cW\x1d\xee\x8bw|\xd7\x96;\x8aiUdO4\x8f\xe2{\\5\x8d\x940\x9d\xf7\xd5\xa2\xfbw\xc8x>D\xe5\x12\xc1R\xcd\xd01.\x05\x81\xe0\x98G\xcc5\x10\x175Y\\\x88\x8b:\x10\x88\x8b\xfaI\xe3\xa2\xe68\xf2\xd8\x8dN\x96\x03\x8fs\xd9\xe9C\x01N\xc0q\xc7\n8\xee\x80\xe3N+\xe0\xb8\x03\x8e;\xad\x80\xe3\x8e\x04\xc7\x1d\xbf\x80\xe3\x8e\x13p\xdc\x01\xc7\x1dp\xdc\xc9\xdc%\x81\xe3N#\xe0\xb8\xd3\x15p\xdc\x01\xc7\x1d\x8f\x80\xe3\x0e8\xee\xa4\x94\x0f\x8e;\xc1o\xc0q\xa7'\xe0\xb8\x03\x8e;\xe0\xb8\x03\x8e;=\xc9u\xa2\x00\xc7\x1d-\xe0\xb8\xf3\x8f\xe2\xb8\x13\x0b\x7f\xdaR\x81\x16W\xa4\xbb\xd6\xc5H6\x96U\x83\xed\x14Z\x11YW\xccp'\xba4\x82EC\xc1\xd1\xc6\xb0\xcd\xc0j\xa4\x89\x01\x96\xbf\x16\xa5\xd5\xbca\x1aN\xd7\xa7e\xbe^\x0b\"\xd5N\xbd_\\\xd41\xe6\x0b\xd2#\xe7RfI\x08\x9d\xdf\xda\xf0\xa5k\\\x8a\x11\xf1K{\xa6\x11\x8f\x12M\xf9Bz\x1c\x98%le\xb4*Y\xbd#\x15-\xdcoz\xb4YB\xb3\xb1\x0bm s\x8a\xafYc\x8a\x1b\xecZ\xcfuj%\x11\xa2U\xa11^\xd5\x1a\xd2\xbd\"#\xf5\xd9O\xfe\x9e\x95\x1b\x08L\xdbQoIw4W\xbb\xfa]\x87\x1c\x87\xb8K\xc6L\xdb\xed\xc1\x16g\x1e\xde\xc7\xbf7F\x99\xeeO\xe7kT\x92\xb5t\\/K\xfer[Cma6\x03\xc4d\xa2\xf4\xbc\xbc3l\x08\xbc\xdf\x7fB-v\x19X\xed\xf71]v\xbeP\x1a\xd5=\x94\xeb\xd0\xbfH\xfdA\xd9\x8a\x16Xv\x02\x91\x1a\x0d\xea\x17mG\xea&GYQ\xd6\xab\xc1\xc6\x0f\x9b\\\x1a\xb0o\xd0b\x1a:\xee\xd8\xa0\xd5\xd4\xdd!2\x0e&\x97\x0f\xe7b\xd0Z\x83*\xe8\xbdrE\x84\x05\xf9\xf5\xf0j\xc7\xa3\x1ar\x0b;\x9a\xe8\x86\xf1\xa1k\x88\x1b\x8d\xfd,\x8cf\x8em\xd8%\xe7%\xc1,\xd6\x80\x15\xb9&U\xef\xd3X\xe3\xd9\xb7\x87\x0dG;\x0c\xbe\x8a\xf8GB/\x1d\x95\x071t6\xcd\xc5\x1e\xee\xcb\xdfQVho\x03\xb1\xe3\xe2\xb9X]\xa1/\x16\xdf|=\xab6&\xf9\xa0\x9e\xfe\xdaR\x8f\x7f;\xdd\xf3J\x8a\xd3_-\xf5\xf97\x93Z\xc4A\xb5\xf5Oe\xda5\xf5\xac\xef\x05\xe0sG\xfd\xccU\xedq{\xa3\x06){\x8e\xf8\xec\xbb\xbe\xdd\x11\x19;\xec\xfc\xc3d\xa6\xf3\xf9\"\xae\xa9\xc78\xa6&\xc1\x8f\x98\xfbV\xd2G1\xf1]\xc4!5\xcf\x1d5\xc3\x195\xc3\x15\xf5(G\xd4\x1cte^'\xd4\x84\x0b\xea<\x0e\xa8\xc9\xa6\xcdt?\xbd'\xe7\xd3\x07w=\xbdW\xc7\xd3\xe9n\xa7\x0f\xeat\x1a)L\xdc\xe1t&w\xd3#\xe7\xaaQ\x0e\x9e\xb9n\xa69N\xa6S\\L\xf3\\9\xc6\xba\x97&\xddH?\x81\x13\xe9(\x17\xd2\x07p M\xbb\x8fNq\x1e\x8d\xae\xfc(\xb9\xfa\xa3\xb4OZ\xc6\xf8@\xd9\xeb\x15\x9a\xdda4\xdf]4\xed\x0e\x97Y\xd5#\x1dE\xb3\xdcDe\xc2I4\xea\"\x9a\xacE\xca\x03iN\xe7\xd0L\xd7\xd0\x11\x8e\xa1Q\xb7\xd0\xa3\xeb>\xafCh\xd8\x1d4=`\x86\x0e\x92{\xba'%e\xc4A@j*z\xceY\xe1\x96s7Q\xf9z\xcc\x92\xc8\x1b\xb5j;f\x93\xaf\x19\xcc\xbd3\xea\xa4\x8e\x04\xd9\xe3Jm-\xb5\x1b\x91\xee\xc9\xc2\xa9@o\x84\xa4!4\xeb\xfd\xa5\x7fn*\xf0^\x9b\x0d\xf8\xda\x97\x97\xb0\xe7\xdaf\x9e\xd5\x83H\xa7\xd5\xf9\xd2n\x1c:/\x1e8_V\x9c\xafG\xd1\xe8\x13\xac+\xdb=v\xa4\xba*\x89I^\x15\x84\xdcR! +\x86\x1f\xe8\x17\x82\xceE61\xeb\x07\x82e\xbbV\xd8\x94o\xb0@\x15\x91\x15%>\xca\xe2\x11\xc7:p\xd3J\x16\x17\xdc\xb4\x06\x02nZ\xbf\x137\xad ^Z\x83\xd4\xbaNZ\x83G\xdf\x13\xa1\xe9\x8d*\x89\xb3v\x8bs\xa2\xc9\xc2\xc6\x8c,\x10\xb6\xf3\x97%P8\x15\xaa\xbd\xf9 \xb9f\xc6\x1b\xe6\xe3\x99\x00\xc1a\x0c\x1c\xc6\xc0a\xcc\n8\x8c\x81\xc3X+\xe00&\xc1a\xcc/\xe00\xe6\x04\x1c\xc6\xc0a\x0c\x1c\xc62wI\xe00\xd6\x088\x8cu\x05\x1c\xc6\xc0a\xcc#\xe00\x06\x0ec)\xe5\x83\xc3X\xf0\x1bp\x18\xeb 8\x8c\x81\xc3\x188\x8c\x81\xc3XOr\x9dw\xc0aL\x0b8\x8c\xfd\x11\x1c\xc6Z\xdaR'\x99\xdeQ\xdaQU\x0c\xbc\xe1\x0f\xd1M\xd9\x8b!\x02\xd0:\x02\xc8\xaaN\xba\xbb4N\x11\x86-\x16*\x8b>\xe0\xdecA\xe6\xf7G85$\x85\xcb\x0e\x11\xde\xe7\x9c\xd0\xb1WXT\xf4L\x7fg\x18\xd8\xcee\xc1a\xaf\x96\xf8`(\xf3\xcd\x8f\x03(\xb6e\xfb\xb7]\xb7\xa1\xfd7\x1b\x9f\x86\xd1\xda\x12\xb0b\xae\x10\x9dR\xd9\xb7\x1e\xadWDS\xa3\xd5\xe5a\x1bt\xc5\x11\xee\xbaJ\xf5\xb9J\x0c\x15\xdc|?\x9dGc\x0b\x16\xe2\x0c&Mv\xfd\xa2G\xa3\xe7\xc7u\x80R\xf5@\xc9\xba\xa0\x0c\x186\xa3J(\xd3\x94gd\x12\x18\x1bI\xef\xc0\x1e\x179\xd4\xcd\x0b\xc8&!\xd9\xb9A\xd9|Xv&`v\x1a4\x1bIN)4\x1b\x9c=\x1a\x9e\x9d\x1b\xa0\x1d \xd1\xce\x0c\xd2\x8e\x83iG\x02\xb5\xb1>\xdc@\xb8\xb9P\xed\xcc`m\x16\\;#`{,d; \xb4\x9d \xb6\x9d\x02\xdcF\x12\xd3\x90n\x1a\xba\xbd\x17\xf0\xf6\xfe\xe0\xdb{\x01p\xc7A\xb8\xb3\x83\xb8\xb90\xee\xac@n>\x94;\x1a\xcc\x1d\x0f\xe7&\xa7\xc2g\x19\x80\xee\x0c\x90n\x02\xd4\xcd\xdcPe\x00\xbbcv]\xa3\xc1\xdd\xd8\"\xb8\xe4\xd7$\x03\xde\xcd-\xdf\x8c\x10\xef\x18\x90wf\x98w\x1a\xd0\x1b\xebA\"\x0d\xf5N\x06{\x03\xa9\xa9\xdcRp\xef\xff\xcf\xde\xdbv\xc9\x8d\x1b\xf9\x9e\xef\xf5)b\xfb\xc5\x95\xfa\xdeR\x95\xdbOs\xb6\xefz\xcf\xaa%\xb5]s=R\x1d=\xd8;;g6\x9b\x95\x89\xcc\xe2T&\x99&\x99%\x95e\x7f\xf7{\xf0D\x82$\x1e\x02H\xa4T\xdd\x8axa\xab+I\x10\x04A\x10\x88\xff/\x02\xb9\x04_\xb4j\x89\x10}\xa3d\xdf\x80\x12\x91$\xfd\x86\xcat:@3 \xc0\xf1\x8d\x89\x17\x81C\xf7\x96 \x04'J\xc1^\xb5\x0b!\x07\xe7\x15\x84\xf3H\xc2\x88\xbeq\xb4,\x8c\x16\x86q\xd20V\x1cFt\x9cx\x818F\"\xf6\x88\xc4\x99d\xe2H\xa18M*\x8e\x12\x8bC\x8d\xee}\x85B\xe7\xe2E\xe3|\xb2q\xb0R\xce\xf7'\x9fx\x8c\x90\x8f\xd3\x05dGq\xfc0\x9f\x84\x9cYD\x0e\xc9\xc8\x89B\xb2\xa3,\xb9\x86\xf6\xb9\x11\xc2b\xb2WN\xce/(g\x97\x94\xdd\xa2rNY\x19#,\xc7K\xcbQ\xe2r\x82\xbc\x1c+0{%f\xbf\xe0\x87\x97\xfc\xb02s\x82\xd0\x1c)5{n7Env\x14eH\xb9\xb8W\x02'9{\xba|\xb5\xf1\x8b\xceYe\xe7\x80\xf0|\x1a\xe99W_\x8c\x90\x9fc\x04h\xd7\xf4\xc0\xa2\xb8\xcd\x8e\x0b\xaf\xf6\x8d\xbd\x9e\x0d\xad\xd4\xd8\xef\xd9\x14\xf4\xe4\xda\xdd\xe6\xf12\x06Gy\x86\xad\xb9\xa7;=S\xa2\x00m\x94(`fq\xd5\xa5D\x01\x13\xa3D\x01_4Q\x80\xea\x9a\xb3\xec]f\x8a\x00c\xc0\x9df\x0bxc\xcb\x16`+\xea\xc2Q\xa0\x91=\xa0?\x8d\x02\xf6'\xbfR\xc0>f\x1c\x94\x96\xc4\x88P\xc0>\x86\x0c\xb1\xb9\x08\xa2\xb9\x90\x14*\x84\x02\xf63\xb2 1$H\x14\x07B\x01\xfb\xc7\xd2\x1f \xecG\x16\xf2#\x9e\xfb\xa0\x80\xfdcx\x8f\x18\xda#3\xeb\xd1\xa1H\x8f\x8c\x9c\x07\x96\xf2\xb0\xb8,(`\x7fl\x08\xae\x03;K\x8af:(`\x1fEr\xa4p\x1c\x14\xb0\xef:,\xc8nD\x90\x1b\x98P\xef\x18j\x83\x02\xf6Sb\xdeC\x94\x06\x05\xec\xe3\xc9\x0c$\x97\x81\xa12pL\x06\x05\xecC\"\x85\x11\xc1`P\xc0~\x06\xe6\"H\\\xa4\xf2\x16\xce\xef&\x05\xec\xcf\x8c\x02\xf6)`\x7fb9\x82\xa7\xb1$E4G\x11EQP\xc0~\"9A\x01\xfb\xda(`\x1f\"+r\x8a\x80}\xadT\xcbX\xe9\x0b\xad\xc3_|\x9a\xc0\x0c\xff\xbc\x90\x8a\xad\xf1\x83\xfc\x83g\x13\xc2\x7f\xcc\xe3\xfc\xf5\xe5\x1c\xa1\xfe\xbdn\x8e\x8d\xf6\xcf\x10\xe4?\xaa\x92:\xf0\xc1\xc6\xf9O\x9e\x97K\xdeL\xc2W:\xafJ\x19t\xd0a<\\\xd9\xf5I\x9c:\x99\xa2M\xfa5\xc8$\x05R\\\xc2Q`P\x7f\xcc\xa0>&j\x8fn\xc8\x11\xa5<\x1e\xa5;&\xa9\x8eP8\xe1\xe9\x0e\xa79\xa6(\x8e>\x1d\x00\xa57fV\x1bQZcF\xa51\xa83fR\x19\x8f\xd1\x18\xa3\x15\xc6\x0c\xfabfu1\xa0-fW\x16O\xa3+fW\x15\xf1\x9ab\x9a\xa2\xe8i\xf4\x90\x9e\x98MM\xc4i\x89\x96\xa9\xbc{|\xcd\xac#\x86T\xc4#5D\x8f\x82\x18\x9c\x9e\x04\xd5C\xdc\xfc%\xafr\x18\xd2\x0d\xc3uJ\xd3\x0c\xf5\xc8n)0\xa4\x18f\xd4\x0b\x8fP\x0b\xed\x1a\xbfO+\xcc\xab\x14\xfau\xc2\x1c*!J\xe6\n(\x84h}\xd0\xed\xae\x8e\xd7\x06\xddeY\x9dFYT\xc1\x98\xc6\xc2*\x82\xe16A\xab\x81 Z\xa0K\xa3\x08\xe9\x80\xf9T\xc0\xe35@\xef\xf3>R\xffC\xa9\x7fa\xed\x0f\xa3\xfcy\x1b;V\xf5\xc3j~\x0e\xc5/\x83\xde\x17\xa1\xf6\xc5k}h\xa5\xcf#\x909\xab\xe39\x07\xab\xf0\xe5\xd1\xf7\xbc\x95\xb7\xfc\x92\xa4\xeci\x15\xcfR\x9eC\xd7\xcb\xac\xea\xb95\xbdTEO\xf8Gl\x15\xb7\xebyy\xd5<\xd728\xa4\xe49u\xbc\xbc*^\xba\x86\xe7\xd0\xeb\x92\xd4\xba\xa02\x17\xa7\xcb\xa1U\xb9HM.F\x91s\xeaq\xee\xda`u\x11\x9c\x16\x17\xa9\xc4E\xe8p\xd6[\xcb\xab\xc1\xb9\x14\xb8#\xf47\xabw\xc6\xa9\xbe\xa5io>\x9d-\xbf\xcav|OB+lX}m\xfe\x05\xd4q\xc8\x13\x8d\x05\x9f\xfc\xd7\x93\xbf\xd7\xbb\xfa\x1e\x07@_\xbe\xb0_r\\\xadI!\x14qL\x11\xc7\xbd\xc5U\x97\"\x8e'F\x11\xc7\x14qL\x11\xc7\x14q\x1c\n\xb7 \x8f\x83\xd22+\xfaXM?M\xd5w\x16F\x11\xc7\x14q<X\x8a\xfe\xef,\x8c\"\x8e\xe7\x96\x89\x058\x8e\x06H\xe0\x01\xb2\x10\x01\xd9\x99\x80 \x15p\x02.\xe0Td\xc0 \xd8\x80\x18: \x95\x0f\xf0\x8e\xe1!B ##\x80\xa5\x04\"9\x81\xec\xa4@\x98\x158\x9a\x16\xa0\x88\xe3`\xcd\xd2\xe8\x01kQ\x14q\x9c\xc2\x11\x84H\x82<,\x01R \x0f\xf2\x04\x11DA0\\2\x92*\xa0\x88c\x8a8\xa6\x88c\xc3\x12\xd8\x03<}@\x11\xc7\xca(\xe2\x98\"\x8e)\xe2xn\xe9\xb4\x82\xb58\x8a8\xb6\x9e\x80\xe2\x1b(\xe28\x1f\xed@\x11\xc7G\xb3\x10y\xfa\x1c\x9a\x87\xc0\x13\x11\x14q,-\xad\"\x13\xd2\xc0U\xa1\x1e\x0e\x90\x87\xe9\x0f\x83\x9b\xee8\xba\x82N\x1e`V\xf3\x99\x06o\xaf\xb9\xd2\x89\xbfX\xcdO\x10\xe5]\xb1\x8f\xdd\xa2e\x7f;\xb0j\x89\xdb\x97\xfd\x15\xfb\xd8\xbdU'\xbcaKV\xde\xf1 Awh\xd4\xc7\x96\x97\x08\x8d\xfaA\x97,\xe6>\x85\xe4+\xfa\x92T\xbd\xac!\xd8\x96\xab\xa8\xc3\x1el\x00\xf6\xa8)\x17\xaa\x05\xa2t\xe2 \xc0\xa2\x08\x01\xd1\xc4}\xd3\xea\xb6\x9e\xbd~@x\x14\xe1Q\xa6\xc5U\x97\xf0\xa8\x89\x11\x1e\xf5p\xf1\xa8\xe1[1\x86\xa2\xf8w\x97\xb5\x9d\x9c\xf4\x07\x99(\xcbW\xa7/\x90\xe0(i\x04G\x11\x1c5\x18\xc1Q\x04G\x0dFpTGp\x94\xdd\x08\x8e\xd2Fp\x14\xc1Q\x04G!gI\x04G\xf5Fp\x94i\x04G\x11\x1ce1\x82\xa3\x08\x8e\n5>\xc1Q\xces\x08\x8e\x1a\x19\xc1Q\x04G\x11\x1cEp\xd4\xc8\xb0\xa0\n\xc1Q\xc2\x08\x8e\"8\xeak\x83\xa3N\x0d\xea,ZV\xad\xdc\xb4\x8e)c\xbee\xd5j\xce\xe7\xf0\xf3\xadp\x0e\x1a\xca\xe1\xe5>\xd2-\xf3\xb3 r\x8663\xcd\xeb\xceJ\xc1qD\xd3\x12\x8b32bqf\x16W]bq&F,\xce\xc3eq\xa6\x9f\x89|L\x8e\xf8\x98\x11\x88#\x8d@\x1c\x02q\x06#\x10\x87@\x9c\xc1\x08\xc4\xe9\x08\xc4\xb1\x1b\x818\xda\x08\xc4!\x10\x87@\x1c\xe4,\x89@\x9c\xde\x08\xc41\x8d@\x1c\x02q,F \x0e\x818\xa1\xc6'\x10\xc7y\x0e\x818##\x10\x87@\x1c\x02q\x08\xc4\x19\x19\x16\x8a \x10G\x18\x818\x04\xe2\x10\x88s4\x88\xc3\x87Y\xd6-\x8a%\x7f)\xb7l\xb5\x11~\x9d\xd6M\xe3\x18\xae\x8b+q\xee\xb3\xc9\xa9=\x9e#\\\xfcjJ\xc3:\x98^\xa2/f\xd8%k\xe8\xc4\xd2a\xe1\xc5w\xecWWG>X\x88\xc7\xde\xd0\xa6u_@\x9fT\xdd\xe1\x08\xdf\x9c\xf5\x9d\x14\xef\xc3\xf0\"\xd8\xa7\x02C\xef\xcc}\xf9\xd9\x9bh\xaf\xc08_\xd4\xdc\x10\x97G\xe0/\xd3\xa1B\xbe\x14\xfa\xda\xf6\x9a\xad\x8a\xae\xc8P+\xac\xbf\xb4\xffL\xf2\xebN>\xa8m_\xe3\xae\xe8\x92\x1d\x9c\xf2\x9d\x95\xdb3 \xf5JMn\x85\x8b\xae\\\xaaE\x00\xe3\xef\xa1R>4\xa2e-\x8eO!\xda\xaen\x1cStU\xe3e\xbd\xdb\x95\x9dx\xdb\xcef\xef\x9f\xf4\xec\x8b\xa4S\xfb\xaeu,\xb2\x9f\x17\xdb\xad ]\xf4\xc8P^o%\xeb\xc1\x0b\xe3SCS\x8d4\xebo-\xae\xac:\xd6\xec\x1b\x01\xf5\x94\xad\xfd\x92z\xcfB>\x08\xf6\xf5\x9fU_hH\x85\xae\xfe\xf4\xa9\xec\x8bMY\x89\xf1\xd2\xc9\xc7\x0d\x87\xf4\x83\x9ec@Jb\xe1\x04\xb2x\xcb\xee\x8f\xa4\xca\x9c\x1dx\xd4\xe7f\xf8\x8e6]\x0bM\xec\xf0\x7f*\xfd\xabh[)\xf2]\x15\x1b\xf6F\x92<\xe7\xf2wGa\x7f\xe3\xdf\\Q\x8c\x00%\xf7|j\xb6\xab\xdb\x0e\x98P\x95\x84\x14u\x0e\x97\x9d1\xf9\xdcw\xf7P\xba\x00\x8b\xee\x865LH\x8eU\x0d\xbb\xbaaZb\xb4\xbdc]\xdd\x15\x0e\x88\x04\xdd\x98aD\xcf\xa9\x9b\x88\xcb\x8bV\x14\xff\x18R\x1fjU\xd4\x90\xe0\\\xf7k6\xf4\xb2>T\xddB\x14\xe6\x9a\xbf~(ZhYw\x06e\xd7j\xb1\xb7\x85C%G\x8f\x95\xd4\xbf>\x94\x96n\x1b\x1e\x8fdU\x0c\x9a\xab\x1e-\x16\xca\n6o\xae\x9e\xf7/\x86\x9e\x89\xb7\xf0\x81?3\xdb\xe3\xb1\xb3\x04\xcb\xba\x91e\x08\xeeB\xf3bz^\xcf\xd7@BZ3[\xc6\xda\x1c\xfa\x8c\xb7\xf5n\xa8\xb7\xd7\x0b\xd5\xb0=\x13\xca\xc7\x0fE\xd3?\xa4\xc0bw\xdc,\xa2\x7f\xbb\x96\xbbS?Z\x00\xc6\x95\xaf\xce\xf5\xb6^\xde\xba\xe0\xcb#\xc6\x1a\xe2n\x83\xd5%\xeevb\xc4\xdd>\\\xee\xd6\xb2\xbe\xeb\xda\xe3\xe0[\xc7\x82\x95\x10\\i\x84\xe0F,2 \xc1%\x04W\x19!\xb8\x84\xe0\x12\x82K\x08.!\xb8\x84\xe0\x12\x82\x8b\x9d%\x11\x82\xdb\x1b!\xb8\xa6\x11\x82K\x08\xae\xc5\x08\xc1%\x047\xd4\xf8\x84\xe0:\xcf!\x04wd\x84\xe0\x12\x82K\x08.!\xb8#\xc3\xe2\x90\x84\xe0\n#\x04\x97\x10\xdc\xaf\x0d\xc15*\xd2\xa3S\xe7\xb7\xec\xdeU\x9f\x89\xb6\xa9(\xa4B}Z$*+Y\x13\x13\xbb8\xef\x91%\xe1$\xdcL\xbci\x02\xa4\xd0\xd8\x99\x0fCz] \xfc@x\x11\xea\xf5\xbae\x1d_\xc1\x8c\xab\x0b\x86\xc8\xd1\xb2\x11D\xc6\xdb\xeao\x8a1\xd664\xd6\xba\xd8\xb6\xc1\xd6r\xb8\x8c,\x8d(\xeb\xe7j\xc7\x89\xbbF\xdd\x8ch\xca\xea\xb0\x13\xf0\xa0\xfa\x9b\x18\x85\x96E\xc5\xefG\xfa\xcbnX\xa5\x1b\xfeP\xf5.\xca\xc9l\xfeR\x94\xb6em;4\xa1t\xea\x1d\x84\x04~\xcb\"\xdbs\\\xfc\x89\x1b\xd7\xb1%\xac\xd1\xbc\xdbrWb[W\x1c\xab%v\x17\xeb%\xdd\xd7f\x0f\x96s$\xfe\xeb\xa8\xb4\xbdtV\x99\x7f\xba\\\xc3\x96\xad;\xcd\xc6)XNO\x99\x85\xe7]\xbe \xf2\"\xbc\x9d\xaf\xef%=R\xec\xf7_\xb0\x15Mbm8\xdf\xd7\x96\xc6\x19\xbcEE\x0f\xad\xc5@\x03\xfc\x1fe\xb5*\x97E\xc7\x06\x82H\xb6\xa08Pu$\xb3\xb8\xb2Zn\x0f\xab\xc9\x84\xb8\x90W\xe9E\xd0\xc9\x13\x13\x92\xba\xe1\x9b\xe7\x9f4\x03\xfc\x9c\x0c.\xef/\xa7\x18\xec\xe4\x16\xc4\x1a\xa2a\xad\x82\x1f\xc4\xeb5\xbc\x8f\xfc\x95;WoS\xb9\xa9\xeaf\xa2l\xe8\xb7q| \xd92\xc7>\xd8\xeb\xba\xde\xb2\xa2\xf2=\xc0\x86\xdd\xb1ft\xaa\xef\xe1\xa9\xa3\xa7\x0f\xae4\x88\xc7\x86\xd9\xdf\x84Q9\xfc\x1aL\xe2\x7fu\xb3b\xcdt\xbd\xf2\xb6\xac\x96\xfcS[\xb7\xbb\xba}\xda\xaen\xe1W\xe7\xbf\xfd\xcd\xc9ZC\x84|\x0cXq\x9fT\xb4u5\xcb\xb6lE\xef\x9aP\xeb\xed\xb1\x0fl\x8a\x80X\xe0\x0f\xa7(\xe1D\xdf\x96\xf5v\xcb\x84\x1b\xfaGu\xc8\xee\xb0\xedJu\xc4Ich\xda\x8bO\xbam\xfe)/b\x0b\xa1\xb1bH\xa2\xedJ\xc6?h\x02i_9\xe2f\xf8\x84\xfd\x06\x1f\x10\xa3\x0e\xfc\xb9\xc4\xc3D\xf1E\xb8|\xb2\xba\x19\xfb(#)\xc5\x98\xf4\x98\x98\xf3O\xd5\x0f\xcaoK\x9cmoq\xd5%\xcevb\xc4\xd9>\x04\xcev\xd6\xb1\xdcPl\xcf\xd9\x9aQZ\xea\x9d\x9b~\xe4\xc1\xf8\xbe\x88\xb9\xe5L\xe5VC\xb0\x1c\xa2\x8am[\xebi,\xff\xda\xc9\xe1J9\xb6u\x8b\xad\x9bz7\x0ci\xb3\xf2<#\x1c\x91\xbb\x93_\x89\xdc\xc5\x8c\xaf\xd2\x88\xdc%r\xd7nD\xee\n#rwnD\xee\x12\xb9\xeb2\"w\x89\xdc\x15F\xe4.\x91\xbbD\xee\x12\xb9+\x8d\xc8\xdd\x14\xf8\x95\xc8]\"w\x07#rwnD\xee\x12\xb9K\xe4.\x91\xbbD\xee\x12\xb9K\xe4.\x91\xbbD\xee\xda*\xa2\x11\x1dgM\xc6\x94S\xce*8H\x82\xd3AIF\xf2K7\x90\xf4\x8fiN\xdf\xe7\xc3Y\xaet\xbeF\xc1\x02Ib\xad\x99\xc8W\x17\x87\xce\xe3k\\Q\x1d\xf4`\x91\xa5Y\x93\x9a\xd6}\x01\x81\x94\xb2\xf7R\xf6^\xca\xdeK\xd9{){/e\xef\xa5\xec\xbd\x94\xbd\x97\xb2\xf7\x86\xdf\x92\x8e\xa8b\xa2\x8a\x89*\xce@\x15\xfb\xb2\xf7\x1a\xab\xba\x1c\x99{\xcde)%\xed\x95F\xe8o\xc4\xda\x92\xd0_B\x7f\x95\x11\xfaK\xe8/\xa1\xbf\x84\xfe\x12\xfaK\xe8/\xa1\xbf\xd8Y\x12\xa1\xbf\xbd\x11\xfak\x1a\xa1\xbf\x84\xfeZ\x8c\xd0_B\x7fC\x8dO\xe8\xaf\xf3\x1cB\x7fGF\xe8/\xa1\xbf\x84\xfe\x12\xfa;2,\x86I\xe8\xaf0B\x7f \xfd\xfdz\xd1_J\xda\x1b\x97\x11\x95\x92\xf6\x9e\xb0q\xc3\xe9f)io\x8eV\xa4\xa4\xbd\x94\xb4\xf7\xe7\x99\xb4\xf7\xb3\xc4\x85\\|\xda\xf7 l\x87T\xc0\xff\xbc8T\x82L\xbec+\x91\xdaV\xd6\xc3\x16>b\xb4\xff\xfb\xfe\x9cg\xcb\xdby\xec\xc8P$\\\xfe\xf0|\x86s\xf7\xc5\x18\x91$\xfd\xdf\xc6\xa1$\x92\x1e\x9f\xe6!\x1e\x05\x96\x8c\xeb\xa2\x8ex\xb0Q%\xfd\xbdd%o\x9c\xbaP\x00=Tl\x97\xce\xfbl<\xb7i:b[\xeeh \x9a\xb4#\x9a\x94hR\xa2I-G\xa4\xd0\xa4\xe3\xa1|\x8e\x92\xaa\xff\xeeB,\xe9\xe4\xf3D\x0c\xa94bH\x89!\x1d\x8c\x18RbH\x07#\x86\xb4#\x86\xd4n\xc4\x90j#\x86\x94\x18RbH\x91\xb3$bH{#\x86\xd44bH\x89!\xb5\x181\xa4\xc4\x90\x86\x1a\x9f\x18R\xe79\xc4\x90\x8e\x8c\x18RbH\x89!%\x86tdX\x9e\x8f\x18Ra\xc4\x90\x12C\xfa53\xa4sZ\xc6U+\x0dP`\xa8\x89\xf8\n~\xa6\xed\xb3\x97\xed\x9d\xf1\xfb\xae\xac.\xc5u\xe0;\xf5\xd7\xcfK)\xd9\xf6-\x1f\xc1J\xf2\xb8X^If\x18\n\"K\xaa\xf0\xe9v\xd2}\x81\x86\xa3'\x85TR\xb5P\x07\x11\xac$-\x19V\xdaO\xf6\xab\x9f\x9cJ\x8c\x121J\xc4(\xcdK\"F\xe9(FI\x0d\xe290%\xca{G\xcc\x92\xe3wb\x96\x0c#f\x89\x98\xa5\xc1\x88Y\xea\x88Y\xb2\x1b1K\xda\x88Y\"f\x89\x98%\xe4,\x89\x98\xa5\xde\x88Y2\x8d\x98%b\x96,F\xcc\x121K\xa1\xc6'f\xc9y\x0e1K##f\x89\x98%b\x96\x88Y\x1a\x19\x96\x1f!fI\x181K\xc4,}\xf5\xcc\x92\x8d\x9dqUN\xe3\x14\x1e\x86\"\xbez_\x17\xb1\xa4\xdb\xec\x9fn\x16i*\xf0\n\xe8\xa4d|\x98\x13{\xe3\xae\xe6\xfb\xe0\x8a\xed\xb6\xad\x1c\xd1\xb40u\xcc\x83\xc5\x88\x86{\x8a\x92j\x03\x9e\xbd~s\\\xd1n\x13PK\xcd\x8d\xe4\xdesb\xf8\x9c:\x92\xf6M]\xafOP\x9f\x1dkn\xb7L\x16\xcf\xdf+\xf6\xb1l\xbb\xc9\xfe\xf2\xa0\xaf\xef\xa4lTa\n\x88(:\xf5\x89\xe1w%K\xfeP\xb4\xfd\xb6\xcb\xf39\xaa\xf3!AP\x95&^)X]\xe2\x95&F\xbc\xd2C\xe0\x95f\x1d\xcb\xba\xa5f\x8f+\x99[\xbb\xab\xd7M\x92\x90\x8e=\xc6\xd7b\x17s9\xdcN+'G\xa7b\xdb\xd6: &\xff\xb2\xc9\x91J\xb9\x07tc\xad\x9bz7\x1d\xcd\xa6\xa5\x15\xb3\xfd\xd6\xe7C\x1d\xd1P\x93_\x89\x86\xc2\x0c\xb4\xd2\x88\x86\"\x1a\xcanDC #\x1ajnDC\x11\x0d\xe52\xa2\xa1\x88\x86\x12F4\x14\xd1PDC\x11\x0d%\x8dh\xa8\x14\xa0\x88h(\xa2\xa1\x06#\x1ajnDC\x11\x0dE4\x14\xd1PDC\x11\x0dE4\x14\xd1PDC\xd9*\xa2\xb9\x1cgM\xc6\xc8S\xce*8\x90\x82\xd3\x01I\"\x93\xc4\x1eI#\x19\x9e\x15)\x0f\xbf\x91g\xf7T\x12\x9f\xa8+\xa8a\xd2Hb4\xbaf\x82vP\xd9w\x0c\xe0a\xa4\x13\xc8\xc2V\xbc\xf3\xf5\xbeF\x0b\xc7\xa4\xae\xad\x0ex\xb0\x10\x93\xbe]\x97V:\xdd\xdf\xb0\xffU\x8a\xf3\xaa\x92\xb0\xde\x16\x1b1\xdf\x12\xfb\x14\xcaV\x17\x88\x10\xf1I\xda\x88O\x9aY\\u\x89O\x9a\x18\xf1I\x0f\x9dOR\x1f\x01<\x9c$q\xa4\xe9\x98e\x85\x93\xf40\xeb\x81\x94\xce\xfc\x94\x92mh$J\x89(%\xd7\xefD)\x19F\x94\x12QJ\x83\x11\xa5\xd4\x11\xa5d7\xa2\x94\xb4\x11\xa5D\x94\x12QJ\xc8Y\x12QJ\xbd\x11\xa5d\x1aQJD)Y\x8c(%\xa2\x94B\x8dO\x94\x92\xf3\x1c\xa2\x94FF\x94\x12QJD)\x11\xa542,1B\x94\x920\xa2\x94\x88R\"J\xc9Y\x93\x07N)\xd5U%\xb32\xb5\x17\x9f\x86\xff\xf8g\x8f/\xb91$c\x83\x9d\xe7\xfd\x89\xcf\xd5iC\x86$\xb5C\x9b.o\x96\xea\xa7\x80\xe1\xb2}\x81\xacZYs'\xcd/\xa4\x8ez\xb0\xe0\xd1\xb8\x1dM\xeb\xbe\x80\xfc)\x18\x07\xa7\xe3O\n\xfd\xca\x8f+\x8f\xd53\x18\xfdr\xb3\xca\xe5\xa1F\xb8\x0dYu\xd8\xb9WaO\xe1\xed\xbbg\xef^.\xde\xbf\xba|u\xf9\xee\xf2\xd9\x9f/\xff\xbf\x97/\x16\xef_\xbd\xbdz\xf9\xfc\xf2\xc7\xcb\x97/\x82g\xf2\xf3\x82\x07\xbd{\xf3\xef\xaf\xaf^\xbe\n\x1e\x87:\xe8\xf9\x9f_\xbfuVL\xd3\x03\x89\xf7\x85\xf1Sr{+\x9e\x93F.\x04\xfb\xa7\x9f\x96`{\x84*\xa6\x1e\xa3T\xa0\xdcOH\xf5\x90\xd6\xf3\x15\x93\xb7|\x06\xfcf\xce@\xb5\xe6\x19\xf0\xff\x85\xba\x81\xd1]z|\x06\xe1\xc7\xfd=(\x1f\x87\xbc\xc3pI\xbc\x1c\xfeb\xeb\xbb\xe7s\x9a\xff:\xb4\xa2'7|\xbc\x11\x92\xc3\x9e \x0d\xe0\xa6\xa8V\xedMqku\x11O\nV79-\xdb\xd8.T\xd1'\xbaLh;\xb6\xd7\xa2\xdb\xb2>T\x1dk\xf6E\xd3\xddK\x9a\x12qI\xdb\xf5\x965\x9f\x8bt\xd3\x8b\x9d\xc3\xeb=\xab\x8c\x01\xb6q\xb7U\xc3\x8a\x95\xd0\xb1ZV\xad\xc4\xc4O\x81\x91z\xcbLD\xd5d\x07\x98VN@\xa5\xcbm\xdd2Y\xee\xb2\xa8\xa0\xaaa[W\x1b\xd6\xf0\xa9\x9f\x10-\xf4\x95\x05'#.\xec\xbc\x9e\xb7Bu\xb3b|\xa0 \x0ce\x1fn\x98Re\x98\xf9N\x88\xb3\x99\xa8\xc5\xa1R\xffq\xbaQ\xed\xf5\x9b\x17/\xdf,^\xbd~\xf5\x12\xf1\xd2\x0f'\xbc\x7f%\xfe\x1fq\xa4\xff\xb8~\x14\x8a\xaa\x07v\xf0q\xdd\xde\xf7\xf0w\xd6\xd4O\xe5\xd2\x99O\x9eU\xf3;\x0b\xd2O\xd4\xd7\xff&\x0d\xf3}\xbf\xcf+\xefl\xd7|\x0c\xdc\x96w\xe2\xc9\xf2%@u/\x0b=S\x8b\x85]q\x0f\xabR(I\x82\x0f\x13\xa3\x01?\xc0\xa7R\xf6\x10\xd9=|`\x0d\xe3\xbd\xb7\xf3\xbe#\xa3G2\xd4\xb0h\xcc\xea\xb1\x8f\xc5\xb2\x13\xf0\x9eQ\x0b\xdb\xa5\xacW2\x07\x94\xd0\xb7|2\xf6\xa0\xbe\xe1\xce\xd9\x05 f\x18\xe2\x1899\xf79\\\x11\xef\x15DtCPWu\x8f\xb9\xaay\xeb\x0f\xca+\"\xe4Zoyb\x9c\x1a\xcd~\xdc\x0f~X\x1de\xb8i\xfd\xec\x86\xc7\xe5\xbe-G\x07\xd1\xb3\xe4\xc5M\xbdw>(\xdf\x04T\x9as\x1a*\x0dq?.xt0\x9d\xc1v\xa8\xb4\xb1bk\xcf\xc4\x04F\xbe\xc6JA\xe5\xcf\xd1\xdd\xf5\xd4\xfb\xd6\n\xf0\xccC\x7f \x8eA7\xb1pOtMq\xe7\x18\xa0\x14_q\x84b\x1en\x87z_\xf0\xd5\xaa\xae\x92\xba\xa4\x1e\xbc\xca\x16\x8aM\xc3\xd8\n\x0e\xfb\xba\x82\xd5A\xf8\xc1|hK??\xb0\x1e\x11xE\xf1w$\xde:\xeb\x12{\xb0\xf0\xdb\x81\xbf^\xff\x19\xf7]\x123l\\\xea\x02Vj)\xd9O\xa1\x0b\xa3_\xf0\x05\xea\xe0k\x157[8\x86O\xfd\x85\xb3\xfe8TW\xe5\xb3\x9d\x8f%\xd6\xbc\xce\xa8e\xf3\xb4\xac}\xb1)+\xb1f\xb6\xac:u\xde]}\x88+a\xe4Qa\x1e\x15\xfb\xd8-n\x99\xe3\xf3\x14|\xdaA\xbed\xd4V\xb3\x9d~\xb5\xe9Z\xe8\xbd}\xf9?\x15nU\xb4j:zUl\xd8\x1b\x99i\xf8\\\xfe\xee(L\x02\xec\xbc\x18^,o@\x06\xbb\xba\xed\x80 \x88I\x90O\xe7p\xd9\x19\xbe\xce}w\x0f\xa5\x8b\xe7\xe5\xdf\x1f&\xe6\x05U\x0d\xbb\xbaa\x9ah\xb3}e\xba\xba+\x1c\xcc2\xba1\xc3\xd1'\xce\xd1I\\^\xb4\xa2\xf8\x87\x8c\xdd\xe1\xddSCx\x06\xf1\xe5\xba_\xb3\xa1\xc5wl!\ns\x8d\xd0\x1f\n>\x88wgPv\xadf\x0b[8T\xf2%]\xc9\xef\xf7\x87\xd2\xd2m\xc3/\xbf\xac\x8a\xb1\xefs=\xf2M\x97\x15l\xde\\=\x1f\x82\x15\x94\xe3\xb7\xe5\xeb \xeb\xe2\xca\x81\xae.\xebF\x96!0_\x9d\xcfZ\xbb\x91\xf9\xaaI,\x8a\xcc\x96\xb16\x87>\xe3m\xbd\x1b\xea\xed\x15=\x1b\xb6gb\xac\xf8\xa1h\xfa\x87\x14\xd0V\xc6\xcd\"\xfa\xb7K]\x99\xca\xb6\xb4E?\x85\x94QH\xd9\xbc$\n)K\xd8\xa2\x7f\xee\xe3\x9f\xee\xd1\xff\x06\xbdG\xbf\xa3@\xda\x9f_\x19\xc5zQ\xac\xd7`\x14\xebE\xb1^\x83Q\xacWG\xb1^v\xa3X/m\x14\xebE\xb1^\x14\xeb\x85\x9c%Q\xacWo\x14\xebe\x1a\xc5zQ\xac\x97\xc5(\xd6\x8bb\xbdB\x8dO\xb1^\xces(\xd6kd\x14\xebE\xb1^\x14\xebE\xb1^#\xc3\xc6\xddP\xac\x970\x8a\xf5\xfa*b\xbd\xe6\x019\xd3X\xaf\x01\xd6\xfb,QV\x03\xaet~\xcb\xee]\xb5\x9a\xe8\x89\x8a\xfc)\xd4\xa0\xde\xb0\xee\xd0T\x92\xef0Q\x87\xf3\x1e\x13\x12\xee\xb9\xcd\xc4\x8f%\xe0\x05\x05\xdby\xd1\x9f\xd7\x95\x90\xfc\xc5\xfa\xbd^\xaf[\xd6\xf1\xb5\xc3\xb8\xba`\xc8\x0b-\x1b\x91\xc4\xbc\xad\xfe\xa6B\xb5\xb4\x0d\x8d\xb5.\xb6m\xb0\xb5\x1c\xce\x1aK#\xca\xfa\xb9\xdaq\xe2(Q7#\x9a\xb2:\xecXS.\xf5\xdf\xc4\xfb\xaf\xe8k\xe9\xa9\xbaa\x95n\xf8C\xd5;\x07'\xf3\xe8KQ\xda\x96\xb5\xed\xd0\x84\xd2\x9dv\x10\xb2\xf3-\x8bl\xcfq\xf1'n\xdc sai\xdem\xb9+\xb1\xad+\x8e\xd5\xca\xb6\x8b\xaf\x92\x8ec\xb3\x07\xcb\xd9 \xffuT\xda^\xba\x89\xcc?]\xaea\xcb\xd6\x9d\xe6\xd1\x14\xa0\xa6'\xab\xc2\xe7-_\x10y\x11\xde\xce\xd7\xf7\x92\xd8(\xf6\xfb/\xd8\x8a&%6\x9c\xefkK\xe3\x0c\xde\xa2\xa2\x87\xd6b\xa0\x01\xfe\x8f\xb2Z\x95\xcb\xa2c\x03\xb5#[P\x1c\xa8:\x92Y\x9c\xca3;n\xceB^\xa5\x97\x1f'OL\x88\xd9\x86W\x9c\x7fL\x0c\xd8r2\xb8\xbc\xbfl'Okr\x0bb\xf6\xde\xb0Va\x07\xe2\xf5\x1a\xdeG\xfe\xca\x9d\xab\xb7\xa9\xdcT\xf54\x8eE\xbf\x8d\xe3K\xc8\x969\xf6\xc1N3\xa6[\x1e`\xc3\xeeX\xd3:Cc'\x0fO\x1d=}p\xa5A\x196\xcc\xfe&\x8c\xca\xe1\xd7`\x12\xb9\x13\xe0\xf8t\xa5\xf0\xb6\xac\x96\xe2#\xd7\xee\xea\xf6i\xbb\xba\x85_\x9d\xff\xf67Y[\xc3\x19\x82+/zQ\x1c\xba\x9b\x8b\xbb\xef\xaeYW|wQ,\xe53/\xabu}\xf1\xa9X\xad\x1a\xd6\xb6\x9e\xf4\xff\xcf\xe4\xf1\x97\xd5\xba\x1e\xa2l\xe5\xdf\x80\x971\x10\xe3\xcbz\xb7\x93\xf3\xa2b\xbb\xed\x8f\x91b\x92*u\xf4@\x1e[\x9b\xe6_\x1e\xabcG\x91\xb8F-\x1e\xe9&z\xa0!\xb8\xbcQ\xe6\x0e\xa1QUD\xbb\xa91\xd8\xde\x96\xfd$W:\x06~(Z\xa6\x9a`\xbe\xd6r\xd6\x11\x82\xd4\x8az\xfcIT\xe0\xfep\x1db\xae=\xa1=!\x9a&\xcc\xd3\x04+(\x0d\xa3\xc9HK\xa2j<\xe5\xcd\x84\x15\x8fw./Y\x13dkr\xd35x\xbe&\x13a\x93\xc6\xd8x\x8a\xe3\x0d\x8a\xa6l\x8e\xe6lr\x936\x91\xacMf\xda&\x8e\xb7\x89$n|}\xb8gq\xb0\xccMf\xea\x06\xc5\xddd$o\x8eeo\x92\xe8\x9bL\xfcM\n\x81\xe3)L\xb09a\x06\xe7$\x14\xce\xe98\x9c\x93\x908q,Nv\x1a\x07\xcb\xe3d%r\xf0LN4\x95\x13\xcf\xe5\x04\x87\xc2o\x11dN\x066'@\xe7 'T\x08B'f\xd6\x15M\xe9\xf8>\x82\xd7\xf5\x1dCp:\xd8\xfaedubh\x9d\xcc\xbcN\x1a\xb1\xe3\xebAm\x98\xd9I\xa6v\x1c\xa5\xf1\xab\x85\xb8\x9d\\\xe4\x0e\x1a?A\xd0;Q\xfcN@RNbxBe:\x95\xacL$O|c\xe2i\x9e\xd0\xbd%\x10=\x89L\x8f\x17[@p=y\xc9\x9e<l\x0f\xa2o\x1c\xcd\xf7\xa0 \x1f\x1c\xe3\x83\xa5|\x10\x1d'\x9e\xf4\x89a}<\xb4O&\xde'\x92\xf8Ic~\xa2\xa8\x9fP\xa3{_\xa1\xd0\xb9x\xfa'\x1f\xff\x13\xac\x94\xf3\xfd\xc9G\x01!8\xa0t\x12\xc8Q\x1c?\xcc\xc7\x02e\xa6\x81B<P\"\x11\xe4(K\xae\xa1}n\x840\x15\xe4\xe5\x82\xf2\x93A\xd9\xd9 7\x1d\x94\x93\x0f\xc2\x10B\xf1\x8cP\x14%\x94\xc0 \xc5\x92B^V\xc8On\xe0\xd9\x0d,/\x94@\x0cE2C\x9e\xdbM\xe1\x86\x1cE\x19L\x0e\xee\x95\xc0\xb1C\x9e._m\xfc\xf4PV~(@\x10\x9d\x86!\xca\xd5\x17#8\xa2\x18\x92\xc8>=\xd0j\xe6i\x93q\xe8t\xca\xf9\xcb\xf7g\x16\x12B\xae!}N3\x13\xc8\xac\x03\xa6B\xdb\x98\xb9\nf\x13L\xbb\xe0\xfah\xa8\x0c\xe5$\x18\x19\xe5$\xc0z\xca\x12\xd5S\xcaI\x80\xd1L\xb3(\xa6)z)\xe5$\xc8\xa8\x92\xc6h\xa4Q\n)\xe5$8V\x17MPE\xb3h\xa2\xf1\x8a(\xe5$8F \x8d\xd1A3\xab\xa08\x0d4\xa3\x02\x8a\xd5?-\x93y\xcaI06\x84\xe2\x89\x9d%E\xab\x9d\x94\x93\x00\xa5q\xa6(\x9c\x94\x93\xc0uXP\xd5\x8c\xd041\xd1\xec1z&\xe5$H \xeb\x0f\xe9\x97\x94\x93\x00\xafY\"\x15K\x8c^\x89S+)'\x01$\xea\x93\x11\xea$\xe5$\xc8\xa0F\x06\xb5\xc8T%\xd2\xf9\xdd\xa4\x9c\x043\xa3\x9c\x04\x94\x93`b9\xe2\xc3\xb1\x1ac\xb4\xc2\x18\xa5/RN\x82DM\x91r\x12h\xc3\xe4$P\x81qF\x19\xa3u\xb4\xfay\x1a\xc3\xa7\xff,;\xf14\xe4\xf5\x88\xd4\x04)\x11\x9e\x9e\xbdT\x95b\xd8\xaa\xc0\xd6a\xdbT\xf6\xb1l;\xa1u\xab#\xac\x81\x9b\x86\x17\xe1\xaf7\xac\x82e\xb1\xdd\xb2\x95\xdc\xe6\xac\xa8\xa4ghW\xaf\x0e[v&\x1dhrG\x86\x9dN\x06\xdf\x1e\xf8\xd7\x16n\xca\xcd\x0d\x14;~\x9d\xbe\xbcz=t\xa8M!\xf6\x97\xec\xc4\xec\xa4\x0fi\x96\x1f\x00\x99\xf3\xbfn\x1a&v6\x13\x01\xc6\xc3\x99\xde\x98[[\\\xe9\x83\xdf\xd7u\xfcLM\xebHV$Yqd$+\x92\xach7\x92\x15IV$Y\x91dE\x92\x15IV$Y\x91dE\x92\x15{#Y1E\x99#Y\x91d\xc5\xc1HV\x9c\x1b\xc9\x8a$+\x92\xacH\xb2\"\xc9\x8a$+\x92\xac\xf85\xc8\x8a\x83\xa9}\x87\xb5v#\x13\xca\xdaT\xb6\xc9\x99\x83\xda5\x9fm\x8d\xd6\xdd\x86,&7\xaao\xa7j\xd9\x90\xbay\xa6LI\xf3*A~\x1dH'2?2*\xd2\xe9\xfe\xf0\xc7Fj\xeb\xd3\xa9+-\xb6\xcf\xac\x0e\xfb\xa2m\xa5\xcb\xd3\xdc\xf2^\xfe\xee(L\n\x95] \xf5\xfaeg\xbc\x8a\"\xcb\xb5'kQ\xc3\xc4s\xafj\xd8\xd5\x8dN\x01m\xf5(\x89,\xccG6fx\x83v\xa7\x17\xa9O\x02\xed\xca\nn8$]\xf7k6\xb4\x99O\xdbq\xf8\x87B$_>\x83\xb2k\xb5\xeb\xbb\x85C%;\xf3Jz\x03?\x94\xed<\xe3\xb2\xdb\xf5d\xc6\xcc\xce\xb6\xf2nl[y\x8f\xc3h\xa7/\xe3\xb0w\xf7|b\x14\xc8\xedL\xf1\xb4\x93_)\x9e6\xd4{\x07#\xe1\x9b\x84o\xbb\x91\xf0-\x8c\x84\xef\xb9\x91\xf0M\xc2\xb7\xcbH\xf8&\xe1[\x18 \xdf$|\x93\xf0M\xc2\xb74\x12\xbeS\xb4c\x12\xbeI\xf8\x1e\x8c\x84\xef\xb9\x91\xf0M\xc27 \xdf$|\x93\xf0M\xc27 \xdf_\x83\xf0\xed\x8b\xa7\xa5\x1d\xb5\xe3\xb6+\xa6\x1d\xb5O\xd8\xb8\xe1\xbd\xa0iG\xed\x1c\xadH;j\xd3\x8e\xda_\xcf\x8e\xdam\xc4n\xdaC\xe2\x05\xf5\xdf\x8ar\x18\xb6\xb5TE\xe9\x87<NZp\xe8nTA\x8f\xf4\xdd=\xec\xbc\x05.z#\x89;\xeb\xbc\x10FP\x7f\xc08\xf0\xb3\xe3\x178\xf8\"\x05\xbd\xf0#\x16I\x80\x85\xb8\x84\xa3\xc0 ^\x91\x01\xaeHD+\xdc\xbb\x85\xa0\xc0\x8a\xa3\xb0\x8a$\xa8\x02\n\xe7.D\x1d\x0e\xa9H\x01*|2'\n\xa7\xc8\x0cS\xa0P\x8a\x8c E\x10\xa3\xc8\x04Q\x1c\x83PD\x03\x14\x19\xf0\x89\xcc\xf0D\x00\x9d\xc8\x0eN\x9c\x06\x9b\xc8\x0eM\xe0\x91\x894`\xc2\xd3\xe8!\\\"\x1b,\x81C%,\x9e\n\xf7\xf8\x9a\x19\x93\x08A\x12G\"\x12\x1e@\"8= \xc2\x11\xb8\xf9K^0\"\x84E\x84\xeb\x94\x86D\xe8\x91\xddR`\x08\x88\xc8\x88C\x1c\x01C\xd8\x11&\x1f\n\x91\x17\x84\xf0c\x109 \x08\x94\x8a\x1f\x00 \xd0\xf8\x83[\x8d\x8bG\x1f\xdceY}\xe2Y\xa0\x87\x98\xc6\xc2\x02\x0f\xe16A\xc3\x0e \xa8\x83K\x82\x0da\x0e\xf9 \x87\xe3\x11\x07\xef\xf3>\x12o@\xc1\x0da\xb4\x01\x036x\x1b;\x16j\xc0\"\x0d\x0e\xa0!\x03\xce\x10\x013\xc4\xa3\x0ch\x90\xc1\xa3\xff;\xab\xe39\x07\x0b0\xe4\xc1\x17\xbc\x95\xb7\xfc\x92\x04.hO\xb4\xa5<\x07\xb6\x90\x19Zp#\x0b\xa9\xc0\x82\xf0\x8f\xd8*n\xc7\x15\xf2\xc2\n\xaeep\x08Tpb\ny!\x85tD\xc1\x81#$\xc1\x08A\xf0 \x0e;@C\x07\x91\xc8A\x0cp\xe0\xc4\x0d\xdc\xb5\xc1\xca\xbe8\xd4 \x124\x88\xc0\x0c\xac\xb7\x96\x171p\x01\x06G\xe0\x05V\xef\x8c\x13.HC\x0b|\x18A~\x88\xe0\xf8\x9e\x84\x06\x08\xb0\xf8\xc0\xf8\x0b\x88\x0f\xedM\x88\xec\x9d\x94f\x06\xf6\x0e\xd7\xa7\x88\xdd\x91Q\xc4n\xa8S\x0e\x96Y2\xc2\x8aFi\xb2\x91\xb30\x8a\xd8\xa5\x88\xdd\xc1R\x04&ga\x14\xb1;\xb7Lb\xd3qrS\x82\xe0\x94Er\xca.:\x05e\xa7\x13\x08O\xa7\x92\x9eN >\xc5\xc8O\xa9\x02\x94w\x0c\x0fIP\x19E(\xac\x0c\x15)De\x97\xa2\xc2b\xd4\xd1r\x14E\xec\x06k\x96&OY\x8b\xa2\x88\xdd\x14\xa1*$U\xe5\x11\xab\x90\nLP\xb0\x8a\x90\xac\x82\xe1\x86\x91\xb2\x15E\xecR\xc4.E\xec\x1a\x96 n\xe1\xe5-\x8a\xd8UF\x11\xbb\x14\xb1K\x11\xbbsK\x97\xc3\xac\xc5Q\xc4\xae\xf5\x04\x94\x80F\x11\xbb\xf9\xe44\x8a\xd8=Zl\xcb\xd3\xe7\xd0\x82\x1b^r\xc3E\xec\"w\xc05\xf3N\xeb\xbfu\xb5J\xa4\xbc\x1e\xbb\xfe>\xeb&\xb8\xb2.\x8b\xeb\xfbE\xb9\xba\xf8T\xae\xc2AY\xcf\xe4)?\xdc_\xbe\x98\xc5g\xe9[\x1b\xe2\xb3\xd4\x0f2pP\xdf\xe5\xa8\x89\x1e[\x03\xd5~\x7f\xfe\xeb\xc7\xeah\xdbN\xb4F%\x1e\xe9&z\xd8\xb1]\x0b\xd56\x11\x1aa\\3\xa9\xc2\x1c\xe9\xabMQ\xd8h\xbc\xa0><)\xc6\xd6\x07\xf6K5\x81\xea\x8f%}x\xf2+\xe9\xc38\xff\"\x90>L\xfa\xb0\xf3H\xd2\x87\x85\x91><7\xd2\x87I\x1fv\x19\xe9\xc3\xa4\x0f\x0b#}\x98\xf4a\xd2\x87I\x1f\x96F\xfap\x8a\xc4J\xfa0\xe9\xc3\x83\x91><7\xd2\x87I\x1f&}\x98\xf4a\xd2\x87I\x1f&}\xf8k\xd7\x87KsX\xf6eq~\xc1\x9f\xfc\x92\xaf\xf2\xce\xc4'F\xcb\x86\xe5\n\xca\xaa\xedX1y\xb2\xfc\xefJO\x1ei\xac\xfdr\x7fP\x99\xaf\x99\x10\x9aK\xb6RZ\xc6z\xf6\xb9P\x9ez\xe1\xcd\xbbf\x8cwn\x95\xb9\x16\x9el\xcb[\xe1N\x9c\\\xa8\xfdV:\x95T\x1f\x1d\x15w\xd8\xaf\xc4z\xb5\xabu)\xbcs\xc1\xfa\xd0\x1d\x9a\xde\xed\xd6\xd7\xf4\xd0\xddH%<\xa3\n\x0ecE\xce\x92\x81wh`\xe4\x132\x9fH|\xcb\x8f\x9f\x9eU\xcc\xfd\x97\xc9\xed\xc7&g\xc5\xe5 \x8e\xe2\x03\xae\xd9\xf2\xe67\xbfv3\x01?\x88\xdf\xaf\x1a\xb6.?\xaa[m\xe1\xda\xf8\xa3:\x01#e[\xf5\xfe\x1f\xe6e=X\xa5_\xde\xf7b/*\x1b\xa1\xf5\xfa=kf\x0b\x04\xe5\xfa\xf1\x03i\xf6\xcbIaQ[4\xff\xbe?\x88\x04\xfdY;\x92\xa0\x8fq\x08\x03 \xfa$\xe8;\x8f$A_\x18 \xfas#A\x9f\x04}\x97\x91\xa0O\x82\xbe0\x12\xf4I\xd0'A\x9f\x04}i$\xe8\xa7h\xe2$\xe8\x93\xa0?\x18 \xfas#A\x9f\x04}\x12\xf4I\xd0'A\x9f\x04}\x12\xf4\xbf\x06A?A\"\xedw\xb5\\\\\xdfw\xcc\xbb\xb7\xa5\x8e\x9d\xedX\xfb\xae~+_\xe4e]\xdd\xb1\xa6k\xfb\x9d/\x9f\xe9Hj~\x18\x7fz#?D\xb2\x9cj\xbb\xb8:\xee\xc1\xca\xaa\xbaae\x0bDHn~\x07\x87\xad)\x82\xfa\xaa\xbd\x0c\xf5\x10\x87Hh\x12X\xcd\x13H`u\xfcN\x02\xaba$\xb0\x92\xc0:\x18 \xac\x1d \xacv#\x81U\x1b \xac$\xb0\x92\xc0\x8a\x9c%\x91\xc0\xda\x1b \xac\xa6\x91\xc0J\x02\xab\xc5H`%\x815\xd4\xf8$\xb0:\xcf!\x81ud$\xb0\x92\xc0J\x02+ \xac#\xc3\x8a]$\xb0\n#\x81\xf5\x97\"\xb0\"2jK\x1d\xd5()c@\xb0\xe1M8J\xea\x95\x17\x08k\xbdR\x1f|W\x0b\xad\xd1\xd0z\x95\xc6\xab\xc6\x9a\xae\x06\xf3\x9e\x8f\xd5xG\x17U\xc7=x\x8dW4@\x94\xe8\xe7\xf1\x11\xa1\xf4\xdfQ3\x05\xf5\xdf\x91j<)\x90\xe4_\xfb $\xff:~'\xf9\xd70\x92\x7fI\xfe\x1d\x8c\xe4\xdf\x8e\xe4_\xbb\x91\xfc\xab\x8d\xe4_\x92\x7fI\xfeE\xce\x92H\xfe\xed\x8d\xe4_\xd3H\xfe%\xf9\xd7b$\xff\x92\xfc\x1bj|\x92\x7f\x9d\xe7\x90\xfc;2\x92\x7fI\xfe%\xf9\x97\xe4\xdf\x91a\xa58\x92\x7f\x85\x91\xfc\xfb5\xc9\xbf3\xbf\xc0\x91\xfao\x94\xd0\xbb\xabW\x87-[\xa8\xfc\xce\xad[\xe0\xfd7q\xa0\n\xdam\x87\xfd\x90\xb7[\xf9V|,\xdbN\xa8 \xe28\x9d0\xba\xf7\x96$k\xbc\xe3\xeb>\xd2\xcd\xf1P\xd5\xddQ;\x9a\xd6\x914G\xd2\xdc\xc8H\x9a#i\xcen$\xcd\x914G\xd2\x1cIs$\xcd\x914G\xd2\x1cIs$\xcd\xf5F\xd2\\\x8a\xbaE\xd2\x1cIs\x83\x91477\x92\xe6H\x9a#i\x8e\xa49\x92\xe6H\x9a#i\xeek\x90\xe6\xa4\xf9\xd7\xc7B:\x1b+P\xe1\xc0\xb9\xf9#\x10\xc5\\L\x14\xb47W\xcf)\x88\xcer\x02\x05\xd19~'\xa5\xce0R\xeaH\xa9\x1b\x8c\x94\xba\x8e\x94:\xbb\x91R\xa7\x8d\x94:R\xeaH\xa9C\xce\x92H\xa9\xeb\x8d\x94:\xd3H\xa9#\xa5\xceb\xa4\xd4\x91R\x17j|R\xea\x9c\xe7\x90R72R\xeaH\xa9#\xa5\x8e\x94\xba\x91aU\x13R\xea\x84\x91R\xf7KQ\xea\x8e h\xbb\xf8\xc4\xdfGO\xe2\xd2\x91*\xf7\xc3=\xef\xde}p\x1b\x7f\x82\xe3x6(\xabu\xcd\xbf\xb6\xea\xcf\xbcpU\xa2;jM\x96\xaa\x0e{\xe8\xa1k.=\xcc!m\xf9\x85-\xbf\xac\x15\xf4\xe8`\\\"\xd9\x05-\x9c\x9c\x95\"f\xf9E\xab$\xc9J\\\xc2Q`P\xb0\xca W%\x8aUN\x17?N\xaa:J\xa8J\x92\xa9\xa0\xd8n]\xad\x88\x13\xa9R$*\x9f\xe3\x18%Pe\x96\xa7P\xe2TFi*(Le\x92\xa5\x8e\x11\xa5\xa2%\xa9\x0c\x82Tf9* Fe\x97\xa2N#De\x97\xa1\xf0\"T\x9a\x04\xe5i\xf4\x90\x00\x95M~\xc2\x89OQ\xd2Sf\xe1)$;\x1d):y$\xa7\xe0\xf4$(7\xe1\xe6/y\xa5\xa6\x90\xd0\x14\xaeS\x9a\xc8\xa4GvK\x81!\x89)\xa3\xc0t\x84\xbcd\x17\x85}\xe2R^i\xc9/,\xe5\x90\x95P\xbaH@RB\x0bJn\xfff\xbc\x98\xe4.\xcb\xeae\xc8\"#\xc54\x16VB\n\xb7 Z>J\x10\x8f\\N\xed\x90p\x94O6:^4\xf2>\xef#\x05#\x94\\\x14\x16\x8b0R\x91\xb7\xb1ce\"\xacH\xe4\x90\x882\x08D\x11\xf2P\xbc8\x84\x96\x86<\x8a\x8a\xb3:\x9es\xb0\x92P\x1eA\xc8[y\xcb/IR\x90\x96},\xe59\x84\xa0\xcc2\x90[\x04J\x95\x80\x84\x7f\xc4Vq\xbb\x00\x94W\xfeq-\x83C\xd2\x8fS\xf8\xc9+\xfb\xa4\x8b>\x0e\x81'I\xde J9qB\x0eZ\xc6\x89\x14qb$\x1c\xa7\x80\xe3\xae\x0d\xd6\x91\x8e\x13o\"\xa5\x9b\x08\xe1\xc6zkyE\x1b\x97ds\x84`c\xf5\xce8\xe5\x9a4\xb1\xc6'\xcc\xe4\x97e\x8e\xefIhI\x06+\xc8\x1c\x178%E\x90L\xd1SJ\xa71C\xa8\x86zQl\xd4\xc8(6*\xd4Y\x07\xcb,%a\xc5\xa449\xc9Y\x18\xc5FQl\xd4`)\xc2\x93\xb30\x8a\x8d\x9a[&\x11\xea8\x19*A\x88\xca\"Ee\x17\xa3\x82r\xd4 \x04\xa9SIR'\x10\xa5bd\xa9Ta\xca;\x86\x87\xa4\xa9\x8c\xe2\x14V\x9e\x8a\x14\xa8\xb2KTa\x91\xeah\x99\x8ab\xa3\x825K\x93\xad\xacEQlT\x8a\x80\x15\x92\xb0\xf2\x88XHe&(dEHY\xc1\xc0\x8eH9\x8bb\xa3(6\x8ab\xa3\x0cK\x10\xbd\xf0\xb2\x17\xc5F)\xa3\xd8(\x8a\x8d\xa2\xd8\xa8\xb9\xa5\xcbd\xd6\xe2(6\xcaz\x02JX\xa3\xd8\xa8|2\x1b\xc5F\x1d-\xc2\xe5\xe9sh!\x0e/\xc5\xe16\x183\x82\x93\x00>\xef\xb6b\xa2Z\x9e\xdd\xc4\xae\xc4\xef\xf0\xb7\x03kJ&w\x11\x1b\xeeD\x8fz\xa3\x88\xaag\x87\xeeF\x9e\xf5H\xd7\xfd\x81\x06R\x99\xf7n\xda\xa82\xf2 \xe9\x85V\x1f\xa9\xa1\x01\xf47H\x06\x99\xcd?\x02^A\xcd/\xa7\xed\x8a\x8f\x8b\x1d\xdb\xd5\x8b^\xfd\xf1\xa8n(\xfa\xf9PV\xdd\xef\x7fk9\xa4\xfb\xb8h\xcb\xcdb[\xeeJKT\x19\xe4\xbb\xc6\xdf\xd9bY\xb7\xddb\xcf\x9a\xc5\xf5}w,\xce\xed\xbc\x18\xbf\x9b;\xd6\x94\xeb{y=\xb6\xfa\xf5\xef~\xf7\xdd\xff\xf9\xb9.\xd7\xb2\xe5\xfe\xd7\xbf\xfb\xfd\xedw\xf9/\x88\x10\xf3\xe5\xbb\x87\xd2\xef\x95b\xaf\xde\xf17W\xcf'\xe5\x91dO\x92}\xd0_\x8dq\xf9\x02I\xf6$\xd9;\x8f$\xc9^\x18I\xf6s#\xc9\x9e${\x97\x91dO\x92\xbd0\x92\xecI\xb2'\xc9\x9e${i$\xd9\xa7\xa8\xde$\xd9\x93d?\x18I\xf6s#\xc9\x9e${\x92\xecI\xb2'\xc9\x9e${\x92\xec\xbf\x06\xc9\x1e#\xa4\xff\xbdW\xd27MQu\x1e%\xfd\x8d\xcaU\xba-[\xe1\x18\xfe\xe9\xd9\xa1\xbb\xa9\x9b\xf2\xef\xd2\xbf~\x06\xa2\x00\xe9\xd9\xe3\x8fP\xfe'\xe3\x9f\xd8\xe1?\x1b\xab\xe4\xfeGqi\xf5\xcb\x83\x95\xdb\xcd\x062\xedK\xe8^\x85\xd9\xf6~\xcf\x8f\xf3\x1a\x80\xb8\x0e 46\xc09\x99\x00\xe9\xab\xd1\x16\xab\xb7y\x0b\xb3;]<3\xf7\xdc\xba\x1b\x84\xb57H\xd0\xdf\xfc7\xa0\xf3\xb6b48\xc8\xa5\xc3A\xa2\x16\xe7-\x907.Z\x8f\x83\xe359\x88\xd6\xe5\xbcE\x0d\xb9]\xf1\xda\x1c\xe4\xd6\xe7 R\xa3\x83X\x9d\xce\xdf\xb3{\x0d\x0f\xab\xd5An\xbd\x0ep\x9a\x1d\xe4\xd4\xed\xe0h\xed\x0e\xd2\xf4;\xc8\xa5\xe1A\x92\x8e\xe7\x7f\x1d\x8a\x96\xad\xc2Z\x1e\x9cF\xcf\x83\x13jzp\x1a]\x0f\"\xb5=H\xd3\xf7BC0N\xe3\x83\xbc:\x1fDh}\x10\xaf\xf7A\x82\xe6\x87\x182\xbfE\xe8~\x90C\xfb\x83\x90\xfe\x07\xf8\xe9\x19B\x07\x84\xc8Y\\\xb4\x1e\xe8-Mh\x85\x08M\x10\"j\x99Q\x1b\x84(}\x10rk\x84\x90\xa8\x13\xfa\xfbU\x1b\xd6\n!]/t\x96\xc7\xaf\x18\xd2\x0c!\x9bn\x08x\xf9\x0b0\xfa!\xc4i\x88\x10rl'j\x89\x80(\xd7\xe3U\xcb\xa4+BR\xe3\xe2\xf5E@\xdce\x82\xce\x08\xa9Z#\xf8\x05\x15\x94\xe6\x08\x99uG\xc8\xa4=\x02\xae\xc7\x1c\xadA\x02^\x87\x04\xa4\x16 h=\x12p\x1d*^\x97\x84(m\x12|\xfa$\xe4\xd2(!V\xa7\x84D\xad\x12\xe2\xf4J@<\x84\xc0k\x16>\x1f\xaf_BF\x0d\x130U\xf3\xbce\xf9\xf4L\xc0h\x9ap\x84\xae\xe9,\x90\x1f\xe8\xd36!\xb7\xbe A\x8d\x13RuNgirm\xefws\x84\xf5N\xf0k\x9e\x90\xa4{:\x8b\xf2\xea\xa1\x90\xaa\x89:K\xf3d\x01\x96\x96O\x1b\x05\x94>\n \x1a)\xc4\xe9\xa4\x90\xa2\x95B\xb4^\n\xfeQ\x04\x02\x1a\x16D\xe8XX\xed\x14R\xf4S\x88\xd5P\xc1\x7f\xe3)Z\xaa\xb30C\xa9\xc4\xbe28M\xd5\xfbBT\x1b\xbf\xae\ny\xb5U\x08\xe9\xab\xe0\xd7X\x9d\xe7\xa4j\xaf\x90\xb1\xefFh\xb0\x10\xa5\xc3\x82s\x82\xc2>\xee\xcb\x06\xa1\xdd\xa1\xa8\xedU\xd1\xb1\xa7]\xb9s\xb5rWv[\xe6u\x81\xf0\x93\xe1\xc3\x0d\xab\x06\xa5VvGQO&\xde\x02\xdd=\xf7\xcd\xa1b\xabs\xb8t/\xdd\xab\xc3v\xcb\xfb\xb8Y\x9e\xfbQ\xaej\xd6V\x8f;\xe9\xe1-d]\x86\xf6\x81'\xd2)\xb7\xac\xab\x95\xf2\xf0\xfb\xa2\x10~\x1a \xa3\x9e\xce\xba+\xee\xa1\xd8\xef\xb7\xc2k\\V\xc29Utl\xa8\xb0m\";r)\xfd\xc3\xde\x9eB\xcb\x86My\xc7Z\xd8\xb3fW\xb6\xad\xa8uW\x03\xfb\xc8\x96\x07\x87g\x8d_W\xcd\xe2\xd4\xb4G~\x19\x8d\x96\xe0-3\xff\xb0\x85\xdd\\\xa3&i\x85l\xd1\x8b\xf8R\xd3\xee\xa5{\xfe\xca\x0e\xba\xbd\xa5\xac\x89\x8a\xafm_l\xca\xca\xd1\x9f'\xd1\xe8\xfa\xc0>\"\xbd\xa8\xcc\xbf\xea\xc8^\x9b\x8e/\xcd\xabj\xfb\xf5\xec\x8a}\xec\x16\xb7\xec\xfe\xc8\xb8f\xdc6\\\x8e\xfe1\xd4B\x876\xf3\x7f*\x85\xa1h[)\xa9\\\x15\x1b\xf6\x86\xfd\xed\xc0\xda\xee\\\xfe\xee(\xeco\x07\xd6H\xc0\x82\x17\xcb[\x92\xc1\xaen;`\xc2O/\x1c\xfc\xe7p\xd9\x19\x9f\x97}w\x0f\xa5gSR\xfe\xc27\x0c\xaa\x1avu\xc3\xb4\xa0c\x9bRuuW\xa4n\xb9\x1a\x8cJ\x0f\x0f\\\xe2\xf2\xa2\x15\xc5?\xaa\xc3\xeeZ\xba\x91u,\x99\x11\xb8\xe4\xba_\xb3\xa1E\xc6\xf7\x85(\xcc5p|(ZhYw\x06e\xd7jy\xad\x85C%;\xf3J*\x08\x1f\xcav\xdc?\x10Q\xef\x12\x81AE\xbd\xdbN\xbfx6~\xc9)a\xbd2\x8a~\xa7\xe8\xf7\xc1(\xfa\x9d\xa2\xdf\x07\xcbJ\xd7\xc4\x905QT\x0dE\xbf\x1fK\xd0$\xd03Y\xc8\x99xj\x86\xa2\xdf\x8f\xa1db\x08\x99\x04:\x86\xa2\xdf)\xfa\x9d\xa2\xdf\xb1tKV\xb2%\x85j\xa1\xe8w\xd7aAz%\x82\\\xc1\xc4M\xc7\x10+\x14\xfd\x9e\x12@\x1e\"R(\xfa\x1dO\x9e \xa9\x13\x0cq\x82\xa3M(\xfa\x1d\x12\x89\x92\x08\x9a\x84\xa2\xdf3\xd0\"AR$\x95\x12q~7)\xfa}f\x14\xfdN\xd1\xef\x13\xcb\x11\x89\x8c%8\xa2\xe9\x8d(r\x83\xa2\xdf\x13 \x0d\x8a~\xd7\x86IX\xafdl\xa3\x8c\xb2\xfa^j\xa9\xc6\xdf\x86\xa4\xf5\xebb;\x92\xf4\xac^\x85q\xe1\xec4\x85\xef\xda\xcdB\xcb>\xc69>7\xc0k\xe5?>\x1b\x9d|&\x81\x0f!f\x8a\x0e-\x95d\xf11UT\xc0\xae\xe8\x967\xd3\x8e\xbd)\xefX\xc5K\x9a\xb9$2\xde\xe5\x00\x04\x9c\xdf\xb2{\xd7}N\x14v%\xa9\x17\xea\x13\xd7\x88|\x05\xc2\xed\xa9T^%e\xf6\xfa\xbbpVn&^=q\x07|X\x0ei\xea\xafyK\xd5\x95\xf0f\xd4\xebu\xcb:\xbe\x92\x1aW\x17\x0c\xb1\xa5e]\xe6\xd6r\xb8\xae,\x8d(\xeb\x87\xec/\xeafDSV\x87\x1dk\xca\xa5\xfe\x9b\x18\x0d\x97E\xc5\xefG\xfa\xedx\x1fR\x0d\x7f\xa8zW\xe9dUq)J\xdb\xb2\xb6\x1d\x9aP:\x17\x0f-o\xea[\x16\xd9\x9e\xe3\xe2O\xdc\xb8\x13B\xc1\xd2\xbcb\xe7\x01d\xeb\x8ac\xb5\xbe\xef\x02\x17\xa4\x1b\xdd\xec\xc1\x8a\x068l'\xf2\xbat\x9a\x99\x7f\xba\\\xc3\x96\xad;\x0dz(\xf2CO\xdd\x85\x02 _\x10y\x11\xde\xce\xd7\xf7\xc0\x8a\xe5\x0d\x14\xfb\xfd\x17lE\x13\xbf\x18\xce\xf7\xb5\xa5q\x06oQ\xd1Ck\xb1\xc3\x08H\xackU.%\xd4%\xb5@\xd5\x82\xe2@\xd5\x91\xcc\xe2\xcaj\xb9=\xac&\x13\xf3B^\xa5\x17c'OLH\xfb\x86F\xc0?\xad\x06\xce4\x19\\\xde_\xb6\x93\xa75\xb9\x051\xfc6\xacU\x10\x86x\xbd\x86\xf7\x91\xbfr\xe7\xeam*7U\xddL\x14\x16\xfd6\x8e/![\xe6\xd8\x07{]\xd7[f\xc4\xf8[\x1e`\xc3\xeeX3:\xd5\xf7\xf0\xd4\xd1\xd3\x07W\x1a\xf8N\xc3\xeco\xc2\xa8\x1c~\x0dV \xed\xb9nV\xac\x99\xae\x9b\xde\x96\xd5\x92}\x0f2\xe7\xcd\xd3vu\x0b\xbf:\xff\xedo\xb2\xb6FJ\xa2\x9d\x0b5M\xb8\xf8\xa4\xfe\xf1OY\x82-\xf5\xce\x1f\xe5\x11\x92\x11R\x8daR|?\x89_\xc6\xf9x\xf8K\xadJ\xd6\x8f~\xf44\x1e[\xdb\xe5\xf7\x8f\xd5\xb1\xf3\xfc<\xfa\xfa\x8ft\x0bQ\x9a\x9e \xa0\xa3\xe6\x99\xc9\xe2\x94z\x80\xc9\xe7S\x9a J\x13Di\x82<v$\xbc\x04\xd1\x00\x93\xb7(J\x13Di\x82R!'H\x03\x9d \x17\xec\x04I\xc0\x93\xffu\xa04Aq\x00\x14DBP\x90\x06B\x85\x86`\x1c\x0c\x05y\x81(\x88\x80\xa2 \x1e\x8c\x82\x048\n1dR\x9a i\xd1\xe0\x94\xb74J\x13Di\x82&\x96\x07\xb0\x02<'\x04\x18\xd0\n\xe2`+\x08\x11\x00\x89\xd0\x15 \xcaE$}9\x12\xc0\x82\xa4\xc6\xc5\x83X\x80\xb8\xcb\x04 \x0bR\xa1,\x08\xe6/ \xc3Y\x90\x19\xd0\x82L\x90\x16\xe0z\xcc\xd1\xb0\x16\xe0\x81-@B[\x80\x06\xb7\x00\xd7\xa1\xe2\x01.\x88\x82\xb8\x80\xd2\x04\x85s\xe9x\x7f\x0e\x9e\x8f\x07\xbd #\xec\x05\x98\xaaQ\x9a\xa0\xbc \x18\x04a0H\x05\xc2\x9c\xa5Q\x9a J\x13\xe4\xb0h\xa8\x0c\xa2\xc12\xa04AVK\x81\xce\x9c\x85Q\x9a m\x94&\xc8b_8M\x90?\xd3\xc6\\]\x06\xf6\xb1c\xd5\xaa\x85\xa2\xcf\x16\xd4\xdd\xc0u\xdd\xdd\x88\xaeS\xacV\x0dk[G\xf0\x95\xfa\x12\xe8<3\xfc\xdd\xe9\xd3\xcaXO\xb8\xec\xe1\x07\xde\x117\xacbm\xd9\xcaG\"\xce\x16\xe2\xbd\xfc\xef\xd9\xf9#\xf7\x8e\xe2\xda|\x19p\xc6\x9b\xd7L?\x10\x94\xe7F\x18\xe5\xb9\x19~\xc26&\xe5\xb9\x19\xf2\xdch\x94$=\xdd\xcd\x98\x88\xa1l7\xca(\xdb\x0de\xbb\x19\x8c\xb2\xddP\xb6\x9b\xc1\xb2B\"1\x80H\x14\x1cB\xd9n\x8e\x05A\x12 \x90,\x00H<\xfcA\xd9n\x8e\x81=b@\x8f\x04\xc8\x83\xb2\xddP\xb6\x1b\xcav\x83\x854\xb2\x02\x1a)p\x06e\xbbq\x1d\x16\x840\"\x00\x0cL\x9e\x94\x18\xf0\x82\xb2\xdd\xa4$\x8c \x81\x15\x94\xed\x06\x0fP \xe1 \x0c8\x81\x83&(\xdb\x0d$\x82\x11\x11P\x04e\xbb\xc9\x00=\x04\x81\x87T\xd8\xc1\xf9\xdd\xa4l73\xa3l7\x94\xedfb92\x8f`A\x84h\x08!\n@\xa0l7\x89\xa0\x01e\xbb\xd1\x86\xcfvc\xb6d)$\xea\xd1\xc05D\xbcw\xcd!\x98\xd7\x81\x12\xb5\xa4e\xc1\xa0D-'l\xdcp\x8a\x11J\xd4\x92\xa3\x15)Q\x0b%j\xf9\xea\x12\xb54:QK\x13L\xd4\xd2L\x12\xb5\xf8\xd2\xb4\x9c\xf5\xe4Y\x9f\xaf\xa5\xd7\xd8\x8e\xcc\xd7\xd2P\xbe\x96\xa9\x85\x10\x13\xca\xd72?\x06\x11\x10\x8c\x91e\xb4\xc5\xa25\xde\xc2\xec\xfa\x8a\xc7I\x97\x1b\xb1\x810f\x03 \xa8\x8d\xff\x06(_K*~\x03\xd1\x08\x8e\xb7(\xca\xd7B\xf9ZR1\x1dHCu \x17\xae\x03I\xc8\x8e\xffu\xa0|-q\x08\x0fDb<\x90\x86\xf2\x84\x86`\x1c\xce\x03y\x91\x1e\x88\xc0z \x1e\xed\x81\x04\xbc\x071dR\xbe\x16i\xd1\xe8\x8f\xb74\xca\xd7B\xf9Z&\x96\x07\x11\x02<\xe9\x02\x18T\x08\xe2p!\x08i\xd8\x89\xd8\x10 \xcaEd\xdf8\x12!\x82\xa4\xc6\xc5\xa3D\x80\xb8\xcb\x04\xa4\x08R\xb1\"\x08&\x92\x08\xe3E\x90\x191\x82L\x98\x11\xe0z\xcc\xd1\xb8\x11\xe0\x91#@bG\x80F\x8f\x00\xd7\xa1\xe2\x11$\x88\xc2\x90\x80\xf2\xb5\x84\x93\x9ax\x7f\x0e\x9e\x8fG\x95 #\xae\x04\x98\xaaQ\xbe\x96\xbc(\x13\x04q&HE\x9a\x9c\xa5Q\xbe\x16\xca\xd7\xe2\xb0h,\n\xa2\xd1(\xa0|-VK\xc1\xa6\x9c\x85Q\xbe\x16m\x94\xaf\xc5b\x94\xaf\xe5\x81\xe4k\xb9\xbe7*7swS\xbe\x16a\x94\xafe\xf8 \xdb\x98\x94\xaf\xc5\xc8\xd7\xd2\xe4\xc9\xd7\xd2P\xbe\x96\xb1Q\xbe\x16\xca\xd72\x18\xe5k\xa1|-\x83e\x85Db\x00\x91(8\x84\xf2\xb5\x1c\x0b\x82$@ Y\x00\x90x\xf8\x83\xf2\xb5\x1c\x03{\xc4\x80\x1e \x90\x07\xe5k\xa1|-\x94\xaf\x05\x0bid\x054R\xe0\x0c\xca\xd7\xe2:,\x08aD\x00\x18\x98L\x1f1\xe0\x05\xe5kIIy\x12\x02+(_\x0b\x1e\xa0@\xc2\x13\x18p\x02\x07MP\xbe\x16H\x04#\"\xa0\x08\xca\xd7\x92\x01z\x08\x02\x0f\xa9\xb0\x83\xf3\xbbI\xf9ZfF\xf9Z(_\xcb\xc4r\xe4\xce\xc0\x82\x08\xd1\x10B\x14\x80@\xf9Z\x12A\x03\xca\xd7\xa2\x0d\x9f\xaf\xc5\\\xe2R\xbe\x16\xca\xd7B\xf9Z(_KZ+R\xbe\x16\xca\xd7\xf2\xcb\xcc\xd7r]T\xb7}\xba\x96\xebb[TK\xd6^|R<\x9b'Q\xcb\xb3\xed\xf6\x07u\xb8\xa8\xa2\xe6\x02T\x19bM\xb2\xdd\xc2\xb2\xe63{\xde\xf5\n\xe0\x03\xea\x96A\xb1\x14=K?u\xd7\x83\xf8+\xef1\xcbb\xbbe+X7\xf5\x0e\x8aJ\xaa\x16\xbbzu\xd8\xb23)\xeeHJJ\xaa\x10\xcb\xbaj\x0f|%\x087\xe5\xe6\x06\x8a\x1d\xbfL_^\xbd\x1e\x1a\x7fS\xb4\xfcivb\xe5<\x10jbq\xc2;p\xb5\xac\x9b\x86-;\x19\x93\xafk:\xca\x10c\xdc\xbf\xfa\xf9\xc1\xe6\x87\xd1\x8f\xf5a@-+V\xd5\xbbd9G>\xd4\xc4\xd31b\xca\xf3\xba4\x08F\xe8\xea[V)!DV]\xf7\x16\xbe\x10)*U!\xd7b\xfe\xd5\xebw/\xbf\x17\xebvy\xdc\xd0\xc7\x8a\n.\xabN-\x0dze\xcc\\\x1fX\x0b\x94N\x11\xfb\xc5\xdarS\x15\xdd\xa1am?H\x88\x9cH\xf5\xa6\x16\x93\xf1\xf9\x9az\xd4 \xba\x9b\xe8\x19@\xff\xdf\xeaU\x96\xe8DY\xcdd\xbac\x18\xd1\xc9+8L'\x88\x11%F\xf4\xabaD\x8d\x8fI:!j~\x91\xdf\\=\x9f\xde\x04\xe1\xa2\x84\x8b\x06\xde\xca\x13\x90\x16>/\x8d\x9ad\xba:\xa0\xfaY\xbf\x08\xfa?\xbbZ\x0d{\xfd\xf7i=\x86\xb4\xc8\xd5C\xae\x1er\xf5\x90\xab'\xad\x15\xc9\xd5C\xae\x9e\x9f\xa7\xabgh\x8d\x86\xb5\xf5\xf6\x8e-\xc4z\x15\xdd\x10\xc69zdXo\x8b\x0d\xbfy\xf5\xa3\x92\x87\xc5\x01\x925\xbe9\xec\x8a\xeai\xc3\x8a\xd5,M\x1a\x7f\xe5\xa4\xe3\x86\x9f\xb5c]\xb1*\xba\x02\xd3.\xbf\xfbU\xd6v9\xd2\x05vq}\xbf0|\x166_\x98\x9av;\xfd`\xda\xf3\xc5W\xcf^_\xd8\xc8\xc3\xf4CQ\xdd\xaa\x92\x1f\xe9\xfb~\xd8\x1e&\xd748i\xb9\xee\xf1\x13\x05\xa6\xa2>\x1f\x91\xf7\xd4\xb0\x7f(\xa7w(\xb3o\xc8\xed\x19\x8a\xf3\x0b!\x96\xab\xaaW\xa2\x96\xaajq:\xee\xc8\xda(\x8cQ\x19\xadKi]\x1a\x9c\xc6\xea\xfay?\xeb\xa3\xef\xf7R\x0eW\xfc/\xa8\xea\xc5~hG\x15\x8c\xfa\xce\x8aJ-\xea\x0f\x15k\xda\x8bO\xe2\xbf<b\x931\x0c\xbd\xe0\x87\xbe\x16\xe7\xf5\xdf[\xf1I\xddn\xf5\xd7t\xc8\xc6 \xe7\xdc\x02\x1b\xe2O\xbc+\x97\x02\x86\xebo\x82\x0f\xdf\xc3\x88i\x0e\xe0?'uj8\xd3\xbe\xc3\x81\xfay4\xb90\x9aQ\xfd\xfc`'\x17fWy\x18\x03\x9a\xea_G\x8cH\xe1\x99\x864=\xb8\x98rI?\xe0\xa8\xbe\xdd\xda;\xf7\xd4l\xbd{l\xceY\x9c\xb4@\xa3\x01\xa2\xe1 \xa4\xff\x01\xae\xf9B: \xe0\x8a\xc1>\x85\x9c\xb3>iIs?gi\x8a'\xf4i\x83\x10=\x0f\x94\x86i\xa2a,\xe9\x1b\xa9\xed\x9a\xc3\x92_j`+Ej\xa6\xaa\x1f\xa3y\xef\xb5\x96&zt\xdd(\\\xd2\x11}6\xf4\xf7\xe1\x01\x08\xed\xec\x96U\xc271\x82\x8a\xd55}\xef\xb2|t\xea8\xdf\xdb1P\xd2\xd3\xcb:\x1e\xb7wL\xd6F\x12\xaa0\x92P\x87\x9f\xb0\x8dI\x12\xaa\x98h\x1a\x13\x9a~]j\xbe!|\xa9\xd9/P\x85Sf>\x05\xd2\xc6\x8f\x95)\xb6f\xeft\xe0m\xa6\xc5\xeb\xe4WZ\xbc~\xe6\xc5k\x8c\xcfW\xae\x0c\xcd\xb7dX0\xea\xcfI\xbfn4\x17X\xfc\xdb<}mN\xb5\xda%\x156\xbc\xf4\x06Ra\x95\x9d\xb8q\xc3\xfa!\xa9\xb09Z\x91TXRa\x7f\x9e*l\xb2\x17tq}\xbf\x10\x97\x8eu\x83\xfep/\xae\x11\xe5\x0d\xed\xcb1\x16\xd2\xb1\xdeP\xeb~\xaa\xbf\xfb\xd5\xf9o\xac;\xaa\xce+\xac\x8e\"\xbfco\xa1\xb9(\xf9\x1d\x1d\x87\x84\x1a\x0e\xc8\xef(\x8d\xfc\x8e\xe4w4\x8d\xfc\x8e\xc2\xc8\xef8\xfc\x84mL\xf2;N\xfd\x8ej^\x83s?N\xca\xb2\xcc\xe7\"\xbd\x90|\xe6\xd5\x1fF~\xc8\xc9\xaf\xe4\x87\xfc\x8a\xfd\x90\xb1+:\xf2D\x1e\xd1Z\xe4\x89\x94v\xe2\xc6\x0d\xfb\xd0\xc8\x13\x99\xa3\x15\xc9\x13I\x9e\xc8\xaf\xc5\x13\xd9.t\x98\x86\xdb\x07\xf9\x8f\x89\x0f\xb2\xfd7u\xca(\xfaa\xb9\x15\xa3\xa9.\xae\xf7I6lS\xb6\x1dk\xd8J|\xe2\xfb\xa2\xccO}k\x8d\x86\x18_L\x1d\xf1`}\x87\xfa\xc6\x1f\xc8\xe4\xd1l\x03\xeb\x01\x88\x19\xa0t\x87\x1e\xaa\xb2\x0b8 \xed\xb7&\xcdy\x83\xd2\x10\xae\xbe\xf0\xcdJ\x0b\xba\xfb\x10\xb7\xac\x0d\xe3\x8c2\x8f\xe6\xb3\xd9\xde\xff$_\x08y\x95\xd1\xbe/\x9b\xf2\x8e\xb9w\x1c0\xcb\xe2\x8d.\xf6a\x81C\xd1\xd5\xbbo\xednTi\xec\xe3\xbe\xae\x98\xdfE\x19ZH\x99f,\xaa\x1c\xab}mq\xad\xa4\xebi6\xd4\xbe\xfe \xbf_\xdf\xfdj\xf8]\xba\x9b+\xb7\x17R\xda\xee\xe0\xdb\xf9GZS\x94*\x8d\xecu\xd1\xeaP7\xf1I\x96\x834\xff7\xfb\xdb\xa1\xd8z\xbd\x9e\xd2\xc4\xd3\x93\xa3\xd2\xfb\xaa\xec\x1e\xb7j\xc5\x138\xed;\xf5H\xff\x00\xdf\xfd\xea\xff\xef\xefq\xa8N\xe8|\xb1\x1b\x8f\xf6\x01\x1bwQ\xafe\xdf\x18\xb6\x95Y6\x8c\xcf2\xdc\xdb\xa6H\xeb\xef\x80\x17\xf1\x98\x17\xf18\xb0\xe5\x84\xb4\xbe\xee\x7f\x80\xdf\x9fAwsh\xbf\x87\xef\x80\x9f/\xef\xed\xf7\x88\xbeZl\xcb\xa2\xf5\xbf\xc6\x98AEZ`h\x91\x86~\xe5C.,m\xea\x16`\xb4\xc3\xa2z\xd9\xf5o:\x12\n\xfd\xc2;\x8f\xc1\xf9)a\xf4X\x8d\xf7\xabP\xfe\xf1\xe9\xc6\x0dE\xb0j\xa3\xa5\xf8A\xf5\x16\xf5\"\x95K\xed\x88\xb6\x9f\x1bnJ\xe3\xd32\x1d7u\x93\x9a/\x9a\x98L8\x0b\x93/\xe6hva\x1a\x7fg\x92\xbf\x81\xf8A\x8e_fz/\xe2o\xf2u}2\xac\xc0\xf9/\xfd\xdd9\xcb\x13o\xbc\xf1\xce\xfd\xca\xf1b\xad\xcav\xbf-\x1c\x8e\xf2\xf8;\xf4\xf41u\xa5~=\xa3\xbes\x87\xcd\x86\xb5|\x95\xa0FW\xde\xd3\xfa\x9b\x0d\x15&\xe7\xd2r\xf2\xe8\xd8\x0dF\xcc\xef3\xdd\x9dU\xc1\xfem\xaf_OMu\xe4\xc7\xe2#nz\xab\xcc\xaf\xba\x14\xe9\x9e\xb0\xcd\xf7\xf0\\\x14\x0b\xcf\xf80h/\xb3\xbd\xdf]\xd7\xe9.=|w\x94\x17\x1a\x16\xf8\xbc\x8e\xeaoz7\xb6\xf6\xa6\xfeP\x81\xd8\xe9V\xed\xaf\xe4,M\xdc\xdd\xb3w\xaf\xff\xed[\xb5M\xdf\xd2\xb7O\xb9\xea\xe3\xadH\xd2.+\xa0\x1e\xb7w\xa7\xa2\xd0\x02i\xb0CS~\x86&|\xff\xe6R\xfa)V\xf5\xf2 \xb6\n|R\xf3y\x03_ ?]\xde\x14e\xf5\xad\xf2D) \xd0Y\x92\x91\x0f\xbd\xac\xe4\xfc\x8a/T\xe1\xf5^\xfe5\xbaY\xa6\xaa\x9e\xb4CS.n\x8a\xf6\xe6\xf3\xb4\xcd\x9f\x8a\xf6F~\x05\xdb\x9b\xe2\xd7\xbf\xfb=\xf0KK\xd0\xbao\xb0}]\xea-\x87\xdf\xbf\xb9t\xcf\x0c.\xf9(\x7fP\x8a\xda\x1dk\xca\xf5\xbd\xd4m\x9dg\x88N\xa5/\xb3*W\xd5\xe3N\xed\x12\x96\xb9Y1\xa3c\xbf\"\x0e\x7fz\xad\xe7\x17\xfe\xafj\xf8\xa1\xf4\xcb\xee~\x1b%cMnt\xb9~Yn\x9f\xee\x1a\x8buQ\x15J\xfcG\xea\xb18\x98\xd4\xe3\xac\xeaq\xef\xd5B%T\xb0\x15s1q\xc5Q\xfa?R\x88\xad\xbf?$\x85\x98\xe4\xd48\xad\x8a\xe4\xd4\x136nX\x08$95G+\x92\x9cJr\xea\xd7'\xa7\x863\xdc\x88 \x1cJJ\x15K\xea\xc1\xc9i\xe5\xeb\xe7\xca\xe9\xcfM8uM\xa9\x92\x16\x80A\xf930\xb9 J\x9f!\x8d\xc2\xabM\x04\xa6}\x10\xbc=iA\xc1\x131\x83\x83\xe0\xaaezl\x84\xd4\x19\xd06@l\x07\x89\x15:12\xa7\x7f-0\x18V\xe2\x8ci\x99\xbc\xf2fX\xdc\x8c\x926\x83r\x0f\xc4\n\x9b\xc7\xc9\x9a\x99E\xcd4I\xf3xA\x13!g\x86\x06\ni\x08)\x13\xf92\x87|)\xd2\xf2\x8a\x98\xbe\xd7\x1c\xe7*\xcb,_\xa6\x8b\x97\xa1\xe6K\x11.\xbd\x95u\xc8\x96n\xd12\xd8\x0fp\x83V^\xb9\x12'Vz\xa5\xca\xb8\xfbr\xf6\xa4\x8c\"%V\xa2t\x0b\x94q\xf7\x14%N\xe6\x96&}\xc2d\xdcm8\xbb\\\x92$)j\xef(\x10)H\xa6\xc8\x91\xc1\xe5\x856\xa7\x14\x99\xa9\xd1r\x89\x90\xe9\x12$Z)\xf3\xcb\x8f\xf9\xda#\x9f\xf0\x18+;\x1e':\"\x1b2<\xce\x1d'7z\xc4F\xac~\x91I\xbe \xf5\x82\xd4\x8b\x9f\x8fz1\x9d\xe5\x8e\xba\x9f\x9cVx\x920w\xc6\x96\x08\xb6\x88\xb5#2g\x1d\xe3\xa7\xeas\x90,d\x91\xb2\x1cL*\x12\xfd\xf2\xaa\xe0\xd5\xb7r\xf1\x10\xe1\xc7\xea\x8b\x8b\xf3g\x8d\xae\xa7\x8e&\xe7\xd6\xc8\xc8\xb95\x18nV\xa1\x8f%\xe7\x96\xdd\xc8\xb9E\xce-\x8b\x85\x06\ni\xe4\xdc\"\xe7\xd6\xc8\xc8\xb953\\O\"\xe7\x169\xb7&F\xce-rn\xd9\x0b#\xe7\xd6q\xce\xad\xd1B3\xe8\xe9\x9a\x14\xd7\xf5\xfb\xa0a=]p\xb9bUW.\x8b\xad\xfc\xe0x\xbcm\xd7\x07>\x91X\xb2\xf2n\xd6\x06\xf2\x0bP\xe8\x8d\x88\xd4\xac\xa7\xac\x84C\x81\xb5\x1d9\xd4\xc8\xa1\xf6u8\xd4b\xd9\xaft\x97\x9a\xb8Gu\xb8\xcdsv%~\x1f\xb9\xc6\x86f\xe1C\xfbGQ\x9e\xdaH\xcc\xea\x01\xfb\xa1\xa8ne1\x8f\xf4\xdd<P\x8f\x97\xd9\x18\xa6\x8d*#\x0f\x1a\x07+\x8d\x9bD\xce\xd8g\x8d2\xd8\x11\xfe\xb3\x96U\xab\x05\xab\x8a\xeb-[\xf9>\xe7\xbf\x04\x07\x98\xf76\xa5\xc9r\xa6 \xe8\xd8p\xd3\x17\x80\xb7\xacZ\xbd\x94\x97\x84]\xb1o'on1j{h\xbb\xa2;x\x82N?\xdc0\xb1\xc3^\xd1\x8f\x06n\x9f\x07/\x98\x97\xea\x8a\x92F\xdd\xc0\x0b>\xe5\xe0\x0b\xab\xd5\xf7\xf0^\xa6m4\xef\xa8\xact\xcf-[X\xf5\xc7\x9e\xbbj\xf5c\xdd\xc0\x86U\xac-\xdb3>\x13\x93K\x18\xf6a{\xcfg\xac\xbc\x01\xcc\xd6P\x89y\xe7(\xec`\xaa0\xd5\xb9\x9c\xd7}\xdb\xd5M\xb1ag\xb0\xad\xeb\xdb\xc3\xfeL\xa4\x9c\xdd\x15U\xb9?l\xa5\xdb@\xbcabg\xc1!4\xb0t=\x89\xaa\xfe\xa0Y\xf5[\xc6\xf6s\x16w\xb0g\xe2\xe5\x1dO\x02\xffEm\x8d( h\xf6\xb1l;\xe9:\xb8.\x96\xb7\x1f\x8af\xe5\xba\xec\xb2\xde\xed\x8b\xae\xbc.\xb7ew\xcf\x8b\xd5w\xbf.\xb7\xcc\xbaVUS\x9a\x05\xf6\x05\xb7\xf5y\xc4,Q\x0e\xc4\xd6\xa4\x9fs\x01\xb4\x0f<\x91\x83\xbcm\xb4\x14\x83\x1eM\xcchb\xf69'fQ3\x9c\xf9\x0be\x9b\xe7\x98C\xa5\xb95\x81\xf9wVu\xfc\xef\xba\x9f\xba\xde\xb6w\xc3^\xaa*v\xa2;4U;\xf2}\xb6r5xS\xdc1h\xf7lY\xae\xcb\xa5y\xad\xbe\xb0\x96u]Ym\xcc\x18\x8dg\xd5\xfd\xd8\x8f*\x17\x965k\xa1\xaaU\x99\xc5P\xaa*A\xc6\xdc\xa8\x81|\xfa\xbe\x0e\x85\xcbo\xc4\xb9m4\x92C\xb1(\x86_\xc7\x8c\x81\xb8\xbe7v\x90\x0dn\xf1\xfa/\xea\xe7\xd1,q~\xf3\x0fv\x9a\xe8\x1f\xa2\xbf\xc4K\xea\x9do\x05\xdf\xb1\xc0<+4\xc7\xc2LO\xb2\xcd\xad\xd0\xf3*\xe7\x9c\n\x9d\x06\xc0z+\xf1\xb9\x01\xe4x &H\x96\xf2\xd4\xdc\xc2v\x0f\xfbZLy\xf8\xdc\xcdH\xa6\xdf\x8e\xe6Z\xda5\xc2\xcb\x11\xd1uY\x17\x1b\x94\x8a\x80R\x11L\xec\xa1\xa4\"0\x06\x14\\\x06{c\x08\x9a\x94\x17\x91\xb5\xbe\xfft\xd1L\x97f\xba3;\xc1L7\xe8\x82l]\xfdo\xf2\xda\xa8o\x87\x1aB\xfb\xc9\xa1\xfa\xf3}}\x80\x0fE\xd5\x89E7\x1c\xf6\xe7\xf0g\xc6\xa7\x91r\xf0\xebj>e\x1e\x15Wl\xb7\xd3\xe90$\xfa.\xa7\x0f\xd9\xf2x\x1dm\xb7\xac\xb7[\xb6\xe4\xb7\xfb\xa3j\xb9\xdda\xdb\x95\xb3\x86\xa2\xd4\x0da\xa71P\xea\x06e'n\xdcp\xd2\x01J\xdd\x90\xa3\x15)u\x03\xa5n\xf8\nR7\xb4{\xb5\xce]\xa8\x9d\xd7\xda\x8bOj\xb36O\xfe\x06\xa3\xf1\xde\xea\x02~P\xe7\x8f\xb4\xbe\xbexsc7\xfe\xf1\xe7\xeb\xf7in[>\xfan\x8d\x0e\xaf\xf6\xbd \xf9\xcb\xfe\xca\xfb\xd9\xb2\xd8\n\x1d\xa1\xa9wPTbY\xa0\xe4\xb33\xc3\xb5\x04\xbbrs#\x88\x9a\xf6\xb0cP\xc0M\xb9\xb9Q\x9b\x03\xf6\xe5\xd5\xeb\xa1\n\x9b\xa2\xd5\xabg\xe3=\xea\xb7\x11,\xabe\xdd4l\xd9m\xefe\xaf\x0ex\xae4\x132\xf6\\M[P\x1d\xf4`\xfdW\xba\xa7<\x8ci\xf7q\xbe+\xff\x0e\x97\x81\xd3\xc3\xee\x9e\xdc\xbbZ&\xedh\xa9v\xae\xb4\x16\xe8\xdb\xcd2~'\xcbQ\x83\xe8nb,\x1a\xc6cA\xab\x07\x03\x8d9P\xcaM\xf2s\x01\xf9\xb9\xb2\xfa\xb9\xa6\x1f\x17\xab\xb7k3rw\xf5\xdb\xcaN\n4%\xdd\xe9\x8d\x0c{\xce>n-o:\xd2=60\x93\xe4\x1e\x9b\xfcJ\xee\xb1\xcf\xec\x1eS\xb3`W\x07\xd4;\x1a\xab\xc1\xb6\xdf.\\#z\x96\xaf]\xde\xc8W\xf2O\xa5.\xfe\xc9?u\xc2\xc6\x0d{V\xc8?\x95\xa3\x15\xc9?E\xfe\xa9\xaf\xdc?uq}\xbf0V\xff\x91\x8e\xaa\x1fd\x80 \xc2]\xa5\x1cS\x13f\x7f]7\x86\xabJ\x1f\xf3\xcb\xf3Y\xd9i+{c\xaaC\x1f\xba\xe7\xca5!NZ\xfc{\xfcO\x81I\xa9\xcf\xf7\xe4=5\xecw\xca\xe9u\xca\xecsr{\x9c\xe2\xfcM \x8b_\xd5K\xc3K\xe0Ia\xfd\x82x\xfc\xd2K\xeb\xa7\xc0\xfe%\xb0\x8a\x18\x1f+\xe7\xc8e1Q#\xb4,\xfe\x85,\x8bO\xbe\x18>.\xb0\xceW\xbd\xd8Y\xcf\xa8\x82q\x93\x9e\xc3~\xbf\xbdw\xcfj\xde\xf1 \xf0[q\xd0h\xfa\"'\xc6\xf2\xec\x91\xd0\xf6s\x9a\x8e\xa8\x12\xcc\xd9\x86q\xbf\xea\xe7\x07;\xc30\x1f\x9di_bh!e,}\x96\x92[\x19S\x9a\x83z7\xb5\"\xd6\xbf\xa9\xbd\x0269\x11-\x80YU\xa1\x04U\xccRJpI(\xed\x88)4\xe9g\xa4\x9fM\xec\xb3\xe8g\xae\x1b\x11\x1fg\xe3\xa3\x13L\x801s\xb3\xe8T\xaf\xe6\x97\xda\x99\xfe\xa2\xff#\xcd\xeeg\xedC\xb3\xfb\xcf:\xbb'))<\x95\x07\x92\x92\x94\x9d\xb8q\xc3\"\x08II9Z\x91\xa4$\x92\x92\xbe\x06)IL\xc3\x10\xa2\x91\x9c\xaf\xbd^\x8f\xa5\xa1\xc1\xab\xa2\xb5\x1e\xbe`\xfb\x99{V\xf4\xad\xaa\xdf\x1e\xac[\xc5\xe5\x8c8b\xd1I\xbaM\x9cG\xe4s\xea6\xaaW\xa2\xd6]j\xa55\xe9\xc9\xda\xde\\=\xa7\xed4\x80\x96Y\x0fk\x99\xf53\x15)V%?\xfc\xfa\xc0\xeb\xd9\x7fV\x97\xf5nw\xa8\xca\xee~\xb1\xafu\x9ea\xdbW\xf5\xb9>\xee\xaa\xae\xb7\xa3Ok_\x02\xf0\x12\xc6\x8a\xc5\xe8k5*\xe2\x91\xbe\xc1\x07\xfa\xc9\x1aZ\xc3\xb4/\xf1v<p\x1d\xe0\x05[\xc6}\xf6`\xc5\x96\xe5n\xb4X\x19\xec\x08\x95\xe0\x05[F~\x13s\xab\x04\xa3\xe6\x12/\x83n\x94\xf1;\xf2\xb8\xb5\xc5\xcb \xbe\xac\xa37\x08\xf5y\xb5\x95r1~\x11'\x87\xd0'W\x19}r?\xf3'7\xe9\xfb\xb5b[\xb6)\xba\xbai/>\xf5\xff^\xf4\x8ca\xc3D\x9eF\xf7w\xcdp\x86\xbe\x90\xa7\x97u%\xfc\xfeo\xe4\xa9\x16\x89^\x15\n\xc5r\xd9\x1c\xe4\xa8\xc0\x8a\xe5\x00?\xdc\x15\xdbr\xc5\xeba\xfd\x0c\xda/\xa3\x8e|\xb0\xdf\xc3QC\x9a\xf6%zo\xdf\xc0\xfaA'wDy[\xfe\xd3}\x9b\xc4\x046\x88 \xdc\xa7\xb4\xd0\xddJ\x0b&\xd5E\xdc\xad4\xff\x94@\x1a\xaa(\xcc\xf4@Z\xf4$\xc1\xdb\x10b\xfa\x10\x98*HK\x9a0x\xca\x93S \xef\xb4AZ\xfc\xe4\x01\xa7s\x0f\x83\xc7\x0b=\xd8\xc9\x01d\xbag\xcc\xd0\xa9\xac\xe5\xc8]\x19t\x11bk)]\xb0z'\x02\xd3\x1b=\x06\xf6OT\x05\x02[\xc6F\xe3B\xd3B\x1dR\xf7\x97\x18Sh\x9a\xdd[\xd2[\xf3\x85\xa6\xd9\xf2\x8bl\xf21\xedagF\xa6\xab\x0e\xe9\x99k\xcf^5\xb5\x7f\x85\xed3\x9d>\xe9v\xcc.h\xba\xad\x8c\xa6\xdb\x9fy\xba\xed\xf7pMf\xd2\xae\xae8;p\xf4*\xf6\xbf\xceI\xe2\xbc\x00\xf1 \x97\x0e\x17\x9ff\xb3MOj\x9d\xe1-\x8fZ>\x14\xc6\xf77\xb0h\xa0\xf5\xc2\xfc\xe7\xd0\xebG\xdf\xf6\xde~N\xdf\xf6\xe9\x1c34\xbf4^\x1eKi\xa1\xcf|\xc6/<}\xdc'F\x1fw\xfa\xb8'\x7f\xdc\x87\x9a\xcf\xbe\xc4\xae\x9a\xcf\x0e\x1c\xd5\xbc\xff\xf5\xd45?\xc5\xb4\xa4\xaf\xbc\xc7\xa9\xd9\xfb\x06\xfe\xd2\x1f<\x9a\x87\x0ceL\x1c\x01\xf6\xb9G\xd9v\x96\x12\x1f\xe9\xf6x\xa03\x90iC\x99v\xc40\xe1x\x13\xc3\xdfy\xa3\xd1\xad\x9d\xb15\x1f\x04\x94\x83K\xc6\xfa\xde\xaf\xa7\xce\x14\xfc\xb7\xce|\x88G\x7f\xedF}\x8c\xbew\xca\xe8{G\xdf\xbb\x07\xf5\xd5\xe0K\x89US|\x18\x0b&\xdeo\xc7_\xd5)\xcf\xd4\xdd\xea\x0f\x88.\xaao\x06\xcc'\xc4Q\xe8#\xdd:\x0f\xf4\x1bbo6\xd3\xf0\x1f\x85iY\x89\x9d+n\xa4\x9f\xb4w\x86\xe1~\xda-h\xccWFc>\x8d\xf9\x9fw\xcc\x8f\xdc\xbdWm\x00\xaa\"2\xcc\x12}\xfb\xf7\xbe0\x8e\xfb\xe5\xed\xe3;\x0e\xac\x9en\xe3{\x82\x1d|\x07\xde\xb2+>\xba\xdf5\xcf\xdbp]\xb4l\xc1/R\xb7\xacY\xf8\x00\x86\xe0k\x15^\xb4\xc0dk\xd9wbs\xe3y\x05\x067\xe2\xb0\xb9\xac\xa3\xb8\xa2\x12\xc7U5l\xebj\xc3\x1a\x11\x9e\xe3\xd2\xd2U\x08\xd7\xc7\x0bKw}\xdc*o \xec\xd8\xf2\xa6\xa8\xcavg\x93\xd5\xaf\xeb\xea\xd0~\xd9\x06\xb3\xd5\xe0\x01\xb7\xd8h\xa6\xf2\xf9v\xa3E\x84 \xa8\x11\xed\xcd\xd5\xf3Iy4\x03\xa1\x19\xc8\xe7\x9f\x81$}\xb5\x07\x87O\x9c\xb4h\xbcC\xbd\xcb\xc5\xfc8_V\xeb\xba\xff\xd6\x0f.N\xfe\xc1)\xdbViG}\x11-\xdb\xae\x9f\xce\xa0\x1f\xb9\xa7G\x7f\xb2:z4\x1fp^[\x1d\xfc`\xa7\x05\xf2.|\xcc ~-7-\xcb\xe1^\xd6\x87\xe9\xd9\xe3t\xb0\xe5\x0faq]W\xab\x05\xc9\xa5\xd20\x1fX\x92K{\x1b5\xd7\xac7\x8d\xb1(\xb6]\x1bBik\x07\xa3\xc0\x18/\xa83RgL\xee\x8c\xc6g\xc7\xec\x85\xc6\x9f\xc7Ce\xc3\x96\xac\xbcc+\x8f\xab\xcb>\x89t~\x8f\x82\xf3\xcaIi\xc3,\xd3\xfdy%g\x972\x9aj~\xe6\xa9\xa6\xcf\xd9\xf5U\xc8\xe2\xfei\xf3\xc5\xf4\xb3e\x9bA\xf7\xef\xf5\xf3a\x14\xd2\x13\xe6b\xb9<\xec\xd4\x86\xeb\xc6 %\xd3\xfe\xfa\x03z,\xc5>\xd2\x8d\xf2@\xe7\xc2\xbe\x8f\xfc \x86q\x08\xbd\x93a\x9f\x99\xab\xb6\x10\x18# \x14\xa4\x13\x18+ X;i\xc1\xf0\x1c\xc4k\x1f\x9a\xae\x00\xae\x18\xcc\xb4\x05R\xa6.\x9e\x9b\xc7\x86\xe4$Ma\x9c\xa5!\xc3q\xe2\xa62*\xad\xa0]X\xb3\xbc\xeb\xc1y\x86SS\xb3\x8dG\xc3\x0c\xa3?\x85&\x18\x93_i\x82A\x13\x8c\xe1\x87\xcf4\xc1\xa8\x0f]\xdb\x15\"a\xd6\"\x18U\xdc\xbf\xd9\xaf\x87\xb3\xa6\x01\x01z\x91.\xf0\x89Y\xd3\xf8g\x1a\xf3b\x1f\xe9Vz\xa03\x8e\x80\x83+i^\xe0,\x13hR05\x9a\x14L,nR\x00\xa8&\xf4\xbd\xf6F|\xae1\x94X\nyr\xa8\x9ej\x05\xae\xfaVwr\xdb\x8dL\x16'P\x8aY@\xd5\x96wL\xe6\x05,\x96\xb7gPl\xb7\xf5\x87\x16Z\xd1|\xd0\x16U\xd9\xd9\xde\x88\xe5\x0d[\xde\xc6\xa7$\xf1\xdcrpb4)\x8f?T\xdb%.|\xcdJ\x1e\x19e4a\xa2 \xd3\x83\x9a0\xb5\xdb\xa2\xbda\x98I\xd2[yd?3\x12g\x02\xbb\x93\x83\xe5\x1a\xef\x80Q\x05=\xd2\x0d\xf0@\xe7B\xa3\x961\xedK\xbcZ\xc3\x93\xdb\xb3\xa6\xac\x03\xb9PP/\x89g\xf3\x81uS,;\xa7#'x\x95\xf0'\x18&\xbd\xe1%\xefE\xe6\xc7\xd7\xfc`\x1a\x1d\xcd\xbaw\x06\xc0\x9f\x98\xc8\xeaZ\xb6b\xf6Q.E^\xe8\xeeFA6mW7b\xa7 \xc7\xd9\xefnJ\xb1\x97R\xc5\xd8J\xee@\xb1,\xb6K\xe1e\x84b\xcf\x9fLS\x8a\x7f\xeft\xae\xe4\xb6+n]\x0d,&b\xd6\x89\x80\x9c\n\x98\xe2\x9e\x9c1\x15\x0d\xeba\x9e\n\x8au\xc7\xc4&f\xe2\xaeo\nGf\x90\xe5\xf2\xd046\x0f\xdeXlT\xef\xecHbT\x7f\xc3\xb9\x04\xd1\x9b\xa3$\xec\x832-\xef\x88E\x06\xednB\xbb\x9bL\xec\xb3\xecn\xe2\xef\x17\xe3\xb9\xb7\xfa\xee\x05'\xdcaO\xa4\xfe\x14\xd3\xb4Z\x19M\xabiZ\x9d<\xad\x1ej\xdevE\xd3\x95\xd5fq#&\x14\xaezO\x86\xad\xc9Y\xa3\x9b\xa8\xc5)\xc5\xb6?\x08\xd4A\xfd\xbdL_v\xf5y\x9e\xde\xdfQ9\x87!\xbcU\x85\xdcd\xe0\x047\xaev/x\xa0\xb7M{\xf1\xc45#\xed\xc5s\xc2\xc6\x0d\xf7Q\xda\x8b'G+\xd2^<\xb4\x17\xcf/s/\x9e5c\x9b\xa6\xa8\xba\xde\xfb'd\x85\xa2Z\xb2\x8bO\xe2\x07\xd6\xfcS\xff\x8by\xa2\x18\x9e\xe9\xd3T\x83\xb4 \xcfYA\xb1\xdd\xca\x1fx3\xde0\xf5w\xc6\xdf\xec\xe1?\xed\x0e\xc0\xbe\xd0G\xfa\xd6\x1f\xa8\xe7\xafo\xb4\x80\xcb\xa3?N~\xc2\x86\xff\xd4\x8d\xc5\xdfQ\xa3\x81&\x8d3\xd8\x11\x8e\x0fUf\xe2R\x1d\xe3\xa9\xeb\xaf\x01\x93\xfd\xc6\xd5@uh\x99\xbaK\xbdA\xff\xe49OM\x9eW6\xb0>Ts\xb2\x1d\xfa\x0b:\x96,Yo\x8a\xf9n\xea\x9a\xf1;\xea{~\xe5(ix\xee\xf5\xba\xdfz\x8a\x17\xf0\xb8u\xdf\xa2\xa7\x8f\x01\xfa\x1e\x86+\xab\xa9RQ\x89\xdd\xb3\xae\x8b\xb6\\\x9e\x81t\x15\xf3\x7f\x89\x03y\x87d\xae\x87\xd2\x17e\xablp \x1b\xea\xa5\x80X\xc6\"\x9e,\xa0[\x86\xdb3x\xff\xe6\xcf\x17\x0dk\xebC\xb3d\xe2+\"?\xd0\x87\xaa\xfc\xdb\x81m\xef\xa1\\\xb1\xaa+\xd7}\xe2\xc7\xfb\xbd[\xb0\xd6\xfd\x16Z\xd6\x94\xc5\xb6\xfc\xbb;\xb8\x13d{t\xf5\xb2\xde\xc2\xf5a\xbdf\x8d\xf6B\x9cKo\xb3\xbcG\xd8\x1dZ\xb1\x17YW\x94\x15\x14.\x86\x81\xdb\x96\x15m\xe7\xbb\x1e\x9f\xcf~s\xf1\x0d,o\x8a\xa6X\xf2QFH\xf5\xdb\xa2\xe5\xb3\x90\xcd\x8e\x0d3\x8b\xf7o\xfe\xfc\xb8\x9d.\x98\xa7&\xaa\xd6;\xe4}W\xe6E\xae\x0f[\xb1M~\xb1\xe5\xad\xb9\x92m\xad'2\xf7{\x06O\x8a\x96OQ<\xc5\xfc\xc4+t\xb1\xa9\xeb\xcd\x96\x9d\x8b\xd6\xbb>\xac\xcf_\x1c\xe4\xf7\xe3\xa7o\xe5\xfd\x88\x82\xfb\xa5\x8e\xa78\xde\xa0\xfc\xad\xa8\xabrYl\xc5\xe4\xd0w\xf5'\xec|s~\xc6\x9bY|\xdf\xbf9\xffF\xc6\xf2vP,\x97l\xdf\xb1\xd5\xb7\xfe\x1c\xe6\x97\x15\xec\x85j\xb2dg\xd0\xb1b\xc7'Q\x87\x827\xcb\xbea\xcbz\xb7/\xb7\x0c\xcaJ}6\xaf\xcb\xaah\xec\xc8\x8b4\x91\x18\xf9~/z\xa6\x9cS\xde\xfb./\x1dz|\x12\xde\xd5|\xec\xd13y\xde\xb9\xf8\xd2\xb2^\xc3\xb3\xea\xfe\x1c\xfeT\x7f\xe0\xb3\xa13\x8b\xb0o\xda\xfb7\x7f\xd6\xea\x04/\xcc\xa2\xf9\x9b&>\xbb\x0c~\xba\xe9\xba\xfdOg\xf2\xff\xdb\x9f\xce\xf8\xaa\xaa\xaa\xd5\xafg\xa2\x87.\x9d\x83(\x88\xd9\x82\xf4\x19\xc8\xbd\xf4\xe0\xb0\x87B\xbe\x93\xbek\xb3\xe6\x8e5\xb2\x91v\xc5\xbe\x95\xddM\xd4\xbf\xab\xf5['=\x13e'D\x17\x87\xa2\"m]\x0b\x0e\xe3{\xef\xb3\xfe\xef|\xe9\xd3\xdf\x19\xef(\xfb\xa6\xbe+Wl\xd5\xdf\xbc\x98\x11\xb4\xeda\xc7V\x0e\xd5I\x17\xf5\xac\x82?\xbd{w\x05\x7f|\xf9\x0e\x14\xa8\xfd\xfe\xcd\x9f\xe5\xfbw/\x08\x1b_\x9a\xfd\xff\x98\xbe0\xef\xee\xf7\xec?\xff\xe3?=\xa7\x80\xf6nW\xaa\x17\xaa\x95\x93x^\xfb\xa6^\x1d\x96\xfcC\"=\xb7\xf6\xaf\x81\xb4\xff\x0e\xcf\xf6\xfb-_\xf8\xc8vmX\xff\x9d\x11\x1a\xda\x92\x8f?u}{\xd8\xeb\x89\xb6\xa7\xb0\xeb\x82\xaf\xf2\xeb\xf9\xac{j\xef\xdf\xfcY\xd4\xf4\xa6\xb8\x13\x1dsg\xbc_+\xf9\x82\x15\xfa\xc6\xf8\xbf\xef\xea\x92\x7f\xbb}\xef\x1a\xa8j\x8a!\xa6a\xeb\xbaag\xba\x08^r\xd1\x95\xd7\xe5\xb6\xec\xee\x85D\xa8\x17\xcdbhl\xee\x9c\xf9\x00\xa4\xd5\x15\x1f\x92\xab\x0d\x13\xa7\x897\xfa\x1c\x9e\xbco\x19\xf0EIY\xf3\xb5\x86\xe8\xb2|d\x93}\xb6\xa8\x8a\x8d\xbf\x0d\xae\x1b&\x04H]\xf4\xf9\xb7\xbe>\xf6\xaa\xee\xd8\xf7r\x0f\xcc\xf5\xa1Z\xcaw\x8c\xdf\x8d\x1a\xe1\x84\x92Xu\xdb{SU\xf1\xbd\xa7\xc2\xbf'\xdc+n9\x05\xf47\xf0\xfa\xc0\xd7Y\xfc\xfb\xc5\xced\x8e\x84N_X8v\x84\xe0\xa1\xdfY_\x07a\x9b\xb2\xaa\xf8M\x7f(\xbb\x1b\xef\x07\xe9~\xcf\xce\xe5{Q\xec\xcb\xf6|Y\xef\xfcc\xf7[\xf1\x1e\xb7R\xe2\x91\xee\xa2\xc9X\x06OT\x82\x03\xe1\xeb\x08\x0e\x85\xdf\xaamF\xaf\xbdC\x97\xf4k\x95\x9d\xc1\xcc\xc9\xb5<_\x94\x97\xebr -\xdb\xf1i\xf5\xd2:\x83\x84\x90g\x1f9\xa1\nj\x9f\x105\xeb\xfa7>p\xf1\xa9\xa8t\xe0\x1b\xd3\xa5\xd9\x9cHN\x10|\x1f\xc1\xeb\xfa\x8e\xe9\xe6P/\x8ae\xf5\xe4\x11\x13\xff\xc8'\xefb\xe5\xdf\xd5\xcd\xe0\xe0\xfa_\x7fy+\xa0\x80\xae\x06>x4+(\xe4<_>\x0f>\x9d\xb1\x14\xa6>\xa6\xa3_\x10\xf0]\xbf\xeeMW\xfe\x86\xf58I~\xcaH\xf2\xcb\x83\x12'\xad\x92\xa0v\xa9\xee\x80^#e]!\x05\xd6GyWG\xd8\xb5Q\x96\x95Q\xca\xba\xc8\xf7\xf9\xc6\xaf\x8a\x8e\\\x13\xe5]\x11E\xad\x87\xb2\xae\x86b\xd6BQ+!c\xbd\xe3.\x10\xb7\x0e\xca\xba\nB\xac\x81\xb2\xad\x80\x8e[\xff$\xac~\xb2\xac}\xe2W>r}\xe3\x19\x9f\x023\xa1\x13\xaczN\xb5\xe69\xc1\x8a'f\xbd\x93y\xb5\x83[\xebd\\\xe9`\xd79\x91\xab\x9c\xd85\x8e^\xc9\xb8?\x82\xc1\x15\xce\xd1\xeb\x9b\x13pKS\xc3\xce\x92\xa2W5r\xed\xe2\x1e\xb0\x03k\x1a\\\xcd~zV\xdd\xff\xa4\xa7G\"\x0e\xabh\xae\xcb\xae\xe1/\xb1\xbb\x86\xd6\xa2\xf47\xa2\xd8\xd6\xaa\xebAa\x7f\xb4|t\x16\x1f\x1aY\xc3\xeb\xf1\xb4p2\xfd\xebgu\x8e\xaey\xa5_\x9cmy-\xaa\xad\xbe#-\xb4\x87\xfd\xben\xc4\x17|_,o/\x0e\x15\xff?\xfe\xdd\x96\xfd\xc2\xfe\x06\xa9\x0f\xbd{bS\xaf\xe1\xd0\xc9\x81M\x0f\x0f-H\xc6\xac\x94c\x05lX\xc5\x1a\x91bB.\xb4Z\xdfB\x95\xd7G>B\xfb\xf5^~,DD\xd7w\xdf\xc3\x15\xaf?\x1f\x17\xd4\xad\x14}\xa3\x97\x15<\xff\x1f\xff\xc3\xf3\x99\xfc\xb1\xaea]\xd7\xf0\x078??\xff\x9f\xce\xc3xe\x8a\xea\xde}@Q\xdd\x9f\xf3j\xfc\xd8\xd4\xbb'\xeb\xba\xfe\xd6}\xe8\xf9\xb9\xfb\xfbW\xae\xe1 /\xea\xbd\xb8\x91w\xf5\x93\xff\xc6\xcb\xfa\x16>y\xc6p_y\xff\xf4\xb7\xdd\xaf\x03m\xf7\xaf\xc5]\x91\xad\xf1\xe0\x0fbn\xc8\xaf\x92\xa1\x85\xca\xf6\xc9\x8fu}\xbe\xdc\x16m\x1bh YE~\x92\xbcG\xe3Dw\x1d\xfe\xe9\xfc\xe5\xe2\x82wk\\\x1d\xdf\x16;\xc6\xa7N\xcfdm7\xac{!]\n\x97U\xdb\x15\xd5\x92=\xf96\xa5\xf2\xd6r|\xf7\xe2\xed\x05\xbf \xf4\x82\xab\xfb\xee\xa6\xae<\xfd@\xd6\xf1\xc7\xba~r~~\xee\xfe\xb0\xf5}\xe0\x89\xf7\x18\xf1\x1e\x89\x1e\x92\xdaAx!\x97\xb2\xc5_\xbc|\xfb\xfc\xcd\xe5\xd5\xbb\xd7o\xbeu{\xf3\xe4e\xe5;\xe7\xbf\xb0\xbc\xb4\xb75\x7f\x1bh\xcd?\xd6\x1e\xd7%o\xc9\xef\xff\x00\xffm\x7f}\xfec]\x7f:??w\xf7C^\xe93>\xa1\xe6g\x14\xd5\xfd\xfe\xfa\xfc\x15\xfb\x10\xa8\x7f\xb9\x16g\xfc\x1f\x7f\x80\xaa\xdcz;\x9e\xb7\x91=\xaf\x87\xff\xbc\xc9\x0dz\x8aQ5\x95\xf7v\xfe\xbe\xda\x15M{Sl\xdf\xd5r\xf0\xc8u\x1b\xd6\xdf\xde\x89\xf8\x9a\xe5m\xff\x9d\xd2\x8b0\xb8\xbe\x1f\xa6\xa4\xfa\xcb*\xc3D\xec+\x02\x0d\xed\x1dZ\xc7|\xee\xb1e\xbay\xb1>l\xb7\xe7\xe2\x07>\x95\x7f\x0c\x851\x13\xe0\xb3\x04\xde\xb7\\\xdfM\xd9\xe7\xec\x17\xeb?\xbb\xd5\xf6^\xaf\xb9g\x8e\x94~ \xa1\"\xa6\\\x17\x12>\x9e\xc7\x17\x8f\xed\x97R\xf3\x05]e\xe1 \x00\xa6\xde\x91o\xd6u}~]4\xe2f?^\xdc\x9f\xff\xfd\x1b\xd9\x8ab]j-\xcf\xbdL\x17U\xfd\x86\x97\xe1\x9a*\xfc\xeb\xdb\xd7\xaf\x1c?\xf1'\xcd\x7f\x1e\xbcNr&-\x80\x135\x0d\x94+\xdbC\xdbo\xc1\xb79l\x8b\xc6^\xde\xbc\x98N\xe4\xd1\x1f&ng\xc0v\xd7l\xb5\x1a\xa6pgrAb+\xaep\xf8\xaf\x8cI\x95L\x16\xf0\xd3\xff\xc3\x1b\xe8'\xe5N\xe9'\xae\xe6#\xb0\xbf\x06j\xd8\xfa\xde\xb3\x04+\x96\xb7|\xec\x1a\\\x02\xebr\xcb\xdc_\x1b=\xd6]\xb1\xa6\xad+\xef\xcb\xa9|\x91\xeb\xb2i\xbb\x85x\x8e\x7f\x80\xef\xdc%\xf7'\xf0\xae\xa7\x8f\xffu\xf4w\x8f\x9b\xafV\xdf\x88\xb6\xfc\xe6{\xf8\xc6\xf6n\x8e\x9b\xe1\\\xde\xe57g\xbe\xf2\xc4\xfd\xbd*v\xbc\xcc\xffK\xde\xc2\xff\xed=\x81\xdf\xdf\xe4\xf8\xd8\x9b\xbc\\\xab%\xe7\xb8\xaf\xc9\xdeP\xb6\xf0\x81m\xb7Oo\xab\xfa\x83\xcccqS\xb4P\xf8re\xcaw\xc8\xf6\xcb\xb8\xcb\x9f\xc9%\xcc\xe4=\x18\"\xe9Tux\x07v,/\x0b\xd9\xa5\xed\x17\xfbI\xbc\x8c\xba\x9f\xdf\xd4\xdb\x95\x99\xe5S\xbe\xcae\xd5\xbf\x1f\n\xa6\xb4\x17%_\x19\xfbuD\x15\xce\xfb\x8f\xfa\x13>z\xe9&\x9c9\xc7\xb4\xcf\xf8?\xff\xe3?\xbf\xf5\xbcH9\xfa\xdc\xf8\x82\xfen'\x9a\x8a\x17\xf9\xdd\xf9\xaf\xbf\xfbu\xfb\x8d\xa7\x0b\xc9\xff\xf7\xc5\x1e)T\xd1(\xc3\xb7\x8eN\x05\x1b{\x84qT\xda\x8c\xf5\xcb\x16\x97\xa4X\xc5\xa8\xbb\x8a\"\x1bG\xb76*,\xc43\x1ey\x8f\xe9@s\x1b\xc51\xb7=\xc8\xacw\x9c\x17'\xb7Zu\x85My\xc7\xaa\xbe\xe9|\xe9\x9d\x862\x1f\xe9\xfb}\xe8\x1c\xf3\x03Q5\xbd\xac2\xca\xa3\x87q\x8a\xc1\x11/\xb6\xb3\xc00\xb3\x1c\xa0\x96Op{Qo\xb8\xb3\xac$z9\xc8/\xe3\xef%#\xc3\x1c\xa4\x98\x83=\x18\x10\xbd\x18\x10\xfa<\xe0\x9e7D\xb4\x13$h\xf5\xde\xc2\xec\x0e[\xcf\xaa?\xb7f\x0fa\xdd\x1e\x12\xb4{\xff\x0d\x14\xdd\x0dZ\xbf\x87\\\x1a>$\xea\xf8\xde\x02# \xe7\xa3\xf5|\x88\xd6\xf4\xbdE)\xad1J\xd7\x87\xdc\xda>D\xea\xfb\x10\xab\xf1\xfb{v\x02\xef\x9cY\xeb\x07\x9c\xde\x0f95\x7f8Z\xf7\x874\xed\x1fr\xe9\xff\x90\xc4\x00\xf8_\x07,\xff|\x12\x16\x00N\xc8\x03\xc0i\x98\x00\x88\xe4\x02 \x8d\x0d\x08\x0d\xc18>\x00\xf22\x02\x10\xc1 @<+\x00 \xbc\x00b\xc8\xc4Q\xd1\x19\xb8\x01\x08\xb1\x03\x80\x9f\x9e!\x18\x02\x88\x9c\xc5E\xb3\x04\xde\xd2p\x8ct(\xe5RVN\xdaNJ\x833|\xd6\x18=\xf9\x7f>n#\x03h\x8f\xc9QVT\xe6_\xb57\x80r\x94Q\x8e\xb2_f\x8e\xb2@\x88\xc2\x11\xd9\xc9\x0c_\x1b\x05)(\xa3 \x85<\x0e\xafX\xc7\x87vn8\x0b\xc4:=\xb2:<(H\x81\x82\x14\x06\xcb\xea\xc8\x88qbD90(H\xe1XgE\x82\xa3\"\x8b\x93\"\xdeAAA\n\xc78$b\x9c\x11 \x8e\x08\nR\xa0 \x05\nR\xa0 \x85\x8e\x82\x14\x06\xc3\xe0\xed\x14\xa4\xe0\xfa\x8d\x82\x14(H!\xd4\xf8\x14\xa4\xe0<\x87\x82\x14FFA\n\x14\xa4@A\n\x14\xa402,0NA\n\xc2(H\xe1\xeb R0[\xf2H\x8a\x9e\xf6\xb3H\xdd,\x80\xf6\xb38a\xe3\x86wb\xa0\xfd,r\xb4\"\xedgA\xfbY|%\xfbY\x94m{`\xaba3\x0by\xb2?\xf4\xeb\x87\xfb?\xaap G\x0c\x98\x8c\xfd\xba\xbe\x17\xbe\xe9\xd1\x96e\xa3\xc7\xf0\xd8\xda \xbf\x7f\xac\x8eu\x04\x89\xf5W\x7f\xa4\x1b\x88\xa2\xc5\x84\x85\xf0\x12\x8a\x16\xcbz{\x14-\xe6.\x8c\xa2\xc5\x02\xca>E\x8b\x85A*\xc8\x05SA\"P\xe5-\x90\xa2\xc5\x8e\x87\xac \x12\xb4\x82X\xd8\xca\xdf\xb3)Z,\x0d\xc0\x824\x08\x0br\x81X\x90\x04c\xf9_\x07\x8a\x16\x8b\x83\xb3 \x12\xd0\x824H+4\x04\xe3@-\xc8\x0bkA\x04\xb0\x05\xf1\xd0\x16$\x80[\x88!\x93\xa2\xc5\xa4EC]\xde\xd2~\x11\xd1b\xe2c&\xc6\xb3k\xc6*\x90>\x01\xc7\x0e\x94\xda(FL\x18\xc5\x88\x0d?a\x1b\x93b\xc4&1b\xbdK+G\xb0\xd8\xe0\x9d3\xa3\xc6\xa6wgw\xbd\xf5\x07Qp\xd9\xe4W\n.\x0b\xf5\xe9\xc1b\xfd$\xda\x17\xe2,\x10\xeb#\xc9\xea\x1f\xa1\xe02\n.\x1b,\xab\xdf#\xc6\xe7\x11\xe5\xef\xa0\xe0\xb2c}\x1b ~\x8d,>\x8dx\x7f\x06\x05\x97\x1d\xe3\xbf\x88\xf1]$\xf8-(\xb8\x8c\x82\xcb(\xb8\x8c\x82\xcb:\n.\x1b\x0c\x13\x96D\xc1e\xae\xdf(\xb8\x8c\x82\xcbB\x8dO\xc1e\xces(\xb8ld\x14\\F\xc1e\x14\\F\xc1e#\xc3\x06\xfaPp\x990\n.\xfbz\x82\xcb\xcc%.\x05\x97Qp\x19\x05\x97QpYZ+Rp\x19\x05\x97\xfd2\x83\xcb\x18_)VK\xd6\x07\x97\xe9?\xc8\x93\x1cAe/\xd5A\xa2r%\x93\xc1d\xfaL\xfd8\xa7\xb1`\xfa\xa4G\xfa>\x1eh\x0c\xd8\xb8\x05L\xeb\x88\x01!\x06dd\xc4\x80\x10\x03b7b@\x88\x01!\x06\x84\x18\x10b@\x88\x01!\x06\x84\x18\x10b@z#\x06$\x05\xa3 \x06\x84\x18\x90\xc1\x88\x01\x99\x1b1 \xc4\x80\x10\x03B\x0c\x081 \xc4\x80\x10\x03\xf250 \x83\x8d\xd6\xc8Z\xc1\x19\xe5:\xd4\x7f\x9cy\x18\x8e\xc9\x8a\xd0\x89\xef\xae\xa1\xa9\xaa\x01\x97\xb2\"PV\x84\xaf*+\x82\x16w\x8f\xca\x86\xd0\xcb\xcao\xae\x9eOo\x82\xb6\xd2\xa5l\x07A7/\xc6S\n\xa4t\x93\xd2\xed<\x92\x94na\xa4t\xcf\x8d\x94nR\xba]FJ7)\xdd\xc2H\xe9&\xa5\x9b\x94nR\xba\xa5\x91\xd2\x9d\"\x16\x93\xd2MJ\xf7`\xa4t\xcf\x8d\x94nR\xbaI\xe9&\xa5\x9b\x94nR\xbaI\xe9\xfe\x1a\x94n_\xb6\x03JI\x10\x17\xefM) N\xd8\xb8\xe1`zJI\x90\xa3\x15)%\x01\xa5$\xf8\xcaR\x12\\|\xba)\xda\x1b\xcfv\xb7\xb3\xb4\x04=\x08\xd6\xef\x15\xd6\xff\x85\x17\xa5\x9f\xf2(S\xc1/%MA\x12d\xd6y\x19\x8c\xa0\xfc\x80\xf1\xdfg\xa7/p\xecE\ny\xe1',\x92\xf8\nq G\x81A\xba\"\x03[\x91HV8\xf5h\x1cWq\x14U\x91\xc4T@\xe1\xd8g\x0b\xb0DE\nO\xe1S9Q4Ef\x96\x02ERd\xe4(\x82\x14E&\x86\xe2\x18\x82\"\x9a\x9f\xc8@Odf'\x02\xe4Dvn\xe24\xd4Dvf\x02OL\xa4\xf1\x12\x9eF\x0f\xd1\x12\xd9X \x1c)aqT\xb8\xc7\xd7\xcc\x94D\x88\x918\x92\x90\xf0\xf0\x11\xc1\xe9I\x90\x8d\xc0\xcd_\xf2r\x11!*\"\\\xa74\"B\x8f\xec\x96\x02C<DF\x1a\xe2\x08\x16\xc2N0\xf9H\x88\xbc\x1c\x84\x9f\x82\xc8\xc1@\xa0D\xfc\x00\xff\x80\xa6\x1f\xdcb\\<\xf9\xe0.\xcb\xea\x12\xcf\xc2<\xc44\x16\x96w\x08\xb7 \x9auH \x1d\\\nl\x88r\xc8\xc78\x1cO8x\x9f\xf7\x91t\x03\x8am\x08\x93\x0d\x18\xae\xc1\xdb\xd8\xb1L\x03\x96hp\xf0\x0c\x19h\x86\x08\x96!\x9ed@s\x0c\x1e\xf9\xdfY\x1d\xcf9X~!\x0f\xbd\xe0\xad\xbc\xe5\x97$nA;\xa2-\xe59\xa8\x85\xcc\xcc\x82\x9bXH\xe5\x15\x84\x7f\xc4Vq;\xad\x90\x97Up-\x83C\x9c\x82\x93R\xc8\xcb(\xa4\x13\n\x0e\x1a!\x89E\x08r\x07q\xd4\x01\x9a9\x88$\x0ebx\x03'm\xe0\xae\x0dV\xf5\xc5\x91\x06\x91\x9cA\x04e`\xbd\xb5\xbc\x84\x81\x8b/8\x82.\xb0zg\x9clA\x1aY\xe0\xa3\x08\xf23\x04\xc7\xf7$4?\x80\xa5\x07\xc6_@D\x1coT\x10\xaf\n\xdb\x9d\xc8%\xda\xcc}\xcc\x87\x1aP\xc8\xee\xc8(d7\xd4-\x07\xcb,\x1aae\xa34\xe1\xc8Y\x18\x85\xecR\xc8\xee`)\x12\x93\xb30\n\xd9\x9d[&\xb9\xe98\xc1)Ar\xca\":e\x97\x9d\x82\xc2\xd3 \xa4\xa7S\x89O'\x90\x9fb\x04\xa8T \xca;\x86\x87D\xa8\x8c2\x14V\x88\x8a\x94\xa2\xb2\x8bQa9\xeahA\x8aBv\x835K\x13\xa8\xacEQ\xc8n\x8aT\x15\x12\xab\xf2\xc8UH\x0d&(YE\x88V\xc1x\xc3H\xe1\x8aBv)d\x97Bv\x0dK\x90\xb7\xf0\x02\x17\x85\xec*\xa3\x90]\n\xd9\xa5\x90\xdd\xb9\xa5\x0bb\xd6\xe2(d\xd7z\x02JB\xa3\x90\xdd|\x82\x1a\x85\xec\x1e-\xb7\xe5\xe9sh\xc9\x0d/\xba\xe1Bvo\x8a\xd6\x1c\xa2|\x81\xba\xfc\xd0Q\xbe\xe9Q\x08\x93\x1e\x13\x1b\x99\x06\x98\xad\x8cmXG\xc5X\x03\xbb\xfe\xc58$\xdb\x0e\xe9\xba\x02\x8b\x88\x9b\x1c\x9d3\xba\xdb\xd0M\x9a\xa5\xbc\xe0\xaf\xc9\x92/\x89\xbf\x87\xf7\xad<\xf7\x0c\n\xf8\xd3\xcb\xff\x17X\xb5\xac\xf9\xab\"+}\x06e\xd5v\xacX\x1d\x1b\xe8\x87 2\x0e\x05\xbcm\xea\xbb>\xd6Mt\x9a\xf6\xe2\x93\xfc\xff\x05\xbf\x88'\xe0\xedJ\x1c5\xda\x85w\xe8u\xba\xd56\xf5\x1d\xec\xea\xd5ak\xdf\x99\xf7\x8f\xf5\x9d,\xe6\x91\xbe\xe3\x07\x1a\xf0vWwe\xb5Y\xc8\x96\x99/?Fu\x1a\x1d;\xc9\xd6\xde\xb7O\xc3\xb6\xc2}\xd2\xd5\xea\xf8\xf97\xddYM\x08\xaa\xa3\xba\n\xac)\xebU\"\xb0>\xba'=L\xe9\xe7*/\x00\xf2\x02\xd3\xaa\xaf\xd8\xben\xcb\x0e\xd7Z\xe3\x83\x11\xcd\xa5N\xc8\xda^\xbb\xb2Z\xa8r}\xade\x17\xb8\xc1'rC\xa8b\xd2Bb7\x88f\xab\xea\x9do\xe9\x1b|\xa4\xdc\x8a]}\xa8\x1cw)\x0dQ\x0c\xc6\xf1\xca\xedy]\x0e\xfb\x15\x14\xd0\xd5\xb7\xacR\x8eSy;:\xfa\x9aO\\\x8aJU\xce\xe7\xa3\x7f\xf5\xfa\xdd\xcb\xef\xc5\\_\x1e\xab&\xcd\xa5\xf0\xec^V\x9d\x9aN\xf4\xde\xf4\xd6+\x1a\xa9\xb9\x86\\L\xb9/\xda\x96\x9b\xaa\xe8\x0e\x0dk\xfb1\x99/\x1f7\xf5\xa6\x16\x1fr\xfb||\xd4H\xffVV\xe5\xee\xb0\xd3\xbdW\xac\xa1\n\xf1\xd8\xeb\xb6\xd8\xf2~\xcd*\xbeD\xf3\xbeX\xdcv\xc5\xc7E\xff\xced{\xbf\xdd\xf1&\xc5GQoy)Q\xedg\xbc\xc9\xf8|\x8d\xbf\x98\xc3\x0b \xfc1\xf6w\xe4Z\xa9_VeW\x16[\xa5[\xc0\xaf]\x8d\xbe\xab\xab\xeef\xa6yt\xc5v{\x8f\x1bW\xccC\x11\xa3\x8a8<\xeb\x98\xf2\xb7C\xdd\x1c\x1c\xefk\xf0\xe1\x04e\x19\xe4\xd3S\xbdn\xcf\x9a%\x9f\xc1o\xa4\xfc r\x18\xb4]q\xcb\x84r\xd9\x7f\x86$_\xe5\xd2\x92UJ\x06\xa1r\xba\x1e\xdb\xb2\xae\xdar\xc5\xf8\x0b\"D [7\xe8n\x1a\xd6\xf2\xfe\xf3@\xda\x86\xf7\xd8F\x7f\xdc\xfe\x9d\xb5\xa2%Z\x99\x1f\xc2x?\xf7E\xeb\xd0\xe0\xf8\xe4O\xfa\x86T\xaf\xfe\xd5\xf9\xeflG\xde\xb1\xae^<\xb0\xbb\x97\x1e\x91z\x0d\x7fa\xaa\x0f\x88w\xfa\x9d\xe8\"\xf2?\xc5\x97\xdf\x83\x7f\x98\x8d\xe4\xee\x19\xfc\xe6\xd9\xea|\xdaT\xdf]\xfcf\xdcT\x08TPN\x19c@A5W}s\xf5|R\x1ea\x82\x84 f\x9b\xed\x10&H\x98\xa0\xdd\x08\x13\x14F\x98\xe0\xdc\x08\x13$L\xd0e\x84 \x12&(\x8c0A\xc2\x04 \x13$LP\x1aa\x82)\xa4\x1da\x82\x84 \x0eF\x98\xe0\xdc\x08\x13$L\x900A\xc2\x04 \x13$L\x900\xc1\xaf\x1d\x134(0\xa3\x1c\xdfZ\xda8\xa3W\xdc\xe5c34\xf7\xae\x96\x9c\x1b\xff<\x9c\xe9\x1d*\xe4f\x12\xa3\xc2\xbe\x91$\xc47g\xe3\xe6\xfdF\x08\xf5\xfc\x07>'\xffF\xb1\x07\xdfLQ\xba#`\xc2(bNI\x9f\xea\x04+&\xa7\x0f\x19\x93r\xfd_\xfb\xec\xf0\x9b\xf2\x8eU\xd0vEwh\xad\xb0\\_\xd2#}S\x0f\x14\x96\x9b\xb4\x8ai\xdd\x17P\x00uu\x16\xa5Cs\x8f\xf2\x80Mv\xc7\x18\xdb\xa8\xb9\x8d\xeb\x8e\x00\x14\xa9\x06B\xb9\xd2\x93\x05?3#\x94\x167\xb1\x15h\x1c@4\x10 dR\xc0\xb5\x12 \xddm\xdab%Soav\xbf\x99g\xf1\x95[:\x85\xb0|\n \x12\xaa\xff\x06tb\x7f\x8c\x8c\n\xb9\xa4TH\x94S\xbd\x05\xf2\xc6EK\xaap\xbc\xac\n\xd1\xd2\xaa\xb7\xa8!\xf9?^^\x85\xdc\x12+D\xca\xac\x10+\xb5\xfa{v/\xc3b\xe5V\xc8-\xb9\x02Nv\x85\x9c\xd2+\x1c-\xbfB\x9a\x04\x0b\xb9dXH\x92b\xfd\xaf\x83\x9e\xd8\x84\xde\x9b\x93H\xb2pBY\x16N#\xcdB\xa4<\x0bi\x12mh\x08\xc6\xc9\xb4\x90W\xaa\x85\x08\xb9\x16\xe2%[H\x90m\x11C\xe6\xb7\x08\xe9\x16r\xc8\xb7\x10\x92p\x01?=CH\xb9\x109\x8b\x8b\x96t\xbd\xa5 \xb9\x17!\xebBD-3\xca\xbb\x10%\xf1Bn\x99\x17\x12\xa5^\x7f\xbfj\xc3r/\xa4K\xbe\xce\xf2\xf8\x15C\xb2/d\x93~\x01\xaf`\x02F\x02\x868\x19\x18B\xdaD\xa2\x1c\x0c\x88r=\x8e\xd1L\xd20$5.^\"\x06\xc4]&H\xc5\x90*\x17\x83_\x13C\xc9\xc6\x90Y:\x86L\xf21\xe0z\xcc\xd122\xe0\xa5d@\xca\xc9\x80\x96\x94\x01\xd7\xa1\xe2\xa5e\x88\x92\x97\xc1'1C.\x99\x19b\xa5fH\x94\x9b!Nr\x06\xc4C\x08\xbcf\xe1\xf3\xf1\x124d\x94\xa1\x01S5\xcf[\x96O\x92\x06\x8c,\x0dGH\xd3\xce\x02\xa5\xbb\xd3-OCn\x89\x1a\x8225\xa4J\xd5\xce\xd2\xe4\xda\xde\xef\xe6\x08K\xd6\xe0\x97\xad!I\xbav\x16\xe5\x95\xb4!U\xd6v\x96\xe6\xd9&BZ>y\x1bP\x127$\xc8\xdc\x10'uC\x8a\xdc\x0d\xd1\x927\xf8G\x11\x08\xc8\x90\x10!Eb\xe5oH\x91\xc0!V\x06\x07\xff\x8d\xa7\xc8\xe1\xce\xc2\x0c\xb1\x19\xfb\xca\xe0dq\xef\x0bQm\xfc\xd28\xe4\x95\xc7!$\x91\x83_&w\x9e\x93*\x9fC\xc6\xbe\x1b!\xa3C\x94\x94\x0e\xce \x8a\x94r]3\xc5\x91\xe7B\x1e:\x0eS\xd7Q\xb5cExj\x08\xa7\x0f\xab\\a\xe8 \x04\xee\xab7\xaf\xaf^\xbf}\xf6\xe7\xc5\xdbw\xcf\xde\xbd\x7f\xbbx\xff\xea\xed\xd5\xcb\xe7\x97?^\xbe|\x11q\xd6\x8b\x97W\xaf\xdf^\xbe[\\\xbd|s\xf9:\xe6\xc4\xbf\xbc~w\xf9\xea\x8f\xf1\xe7]={\xfb6\xaa\x86o^\xfe\xeb\xcb\xe7\xef\xa2N\xf9\xf1\xd9\xe5\x9f\x9d'\xe8X\xe1\xe8\x06\\\x97U\xb1]\xc8\x04\x05\xd2\x93\x8e\xea$\x1e\xf7\xd6\xbcD\x1d\x15-~\x91\xd9\x0dt\x00\x7f\xc0\x05\xd7\xab\xd1\xf0\xd7\x1b\xe6\xf9d\x0b\x8aC\x8eQ}_\xbd+\x0b\xd8\xbc\xb9z~\xa6\\\xd2:7GU\xbbE\xd3}\xbd?\xc84\x0c\x87\xaa+\xb7~\xb9J_\xe9q;\xce\x94!\xc6oV\xad\x985\xe3\x00\xe4\xd3\xc9\x1f\xdf\xb3\xf6q\x06/\xec\xe8\xc9\xde\xb3V?\xaf\xea\xb0\xbb\x96n\xd2\xfb>\x13\x01*\xb1\x06@q\xdd\xf2IR\xee\xca\x05|\xbf\xea\xaa\xf3\xfa\xeb\x1f\x86{\xf0\x96\x13\xbe\xbf\xc7U\x9d\xbd\xe5\xabz^\xf1\xaa\x8ek\xf7\xaa^\xf0\xf9\xed\xe2\x8euu\xee\xfa\x05\x1a\xdf\xbc\xb4\xf5F\xc4\xc4\xfbnH\xedP\xfb\xf5\xdb\xd0\xed\xb6\x87\xeb]\xd9-\xbar\x97#\x98lUt\xec)/\x0b3\xfa\x19\x97\xd6w*\xfe]\xaf\x8dO%?\xa6m\xcb\xba\xb2W_\xe7\xcda\xd5\xea\x8b\xdc\xc3\xf4\xfa\xfaFX\xb5\x927\xc3gS\xea \xe7M\x88\xec-\xfelU~\xceJ\x9a7c\x15j\xb8\xc4\x0d\x98\x10\xce[\x85jp@\xe5\xaeB\x16\x85\x7f\xc7\"3X\x05+\xefW)\xf3f\xb7B\xe7\xb7J\xcdp5M\xb9d\xf6\xcc\xfe%\x15\x99d\x8c\x1cQa\xe2Me\xafk\xbb\xa2\xf92c\x8d\xa7G\xcc\xea\xa6\xefS\xfc\x85OH\xc4\x1f\xd5\x80\xeb\xff\xec\xa1Z\xe1K\x8dU\x93\xcb\xcf\x86\xaaz\xadg`\xc1\xcf$\xa6m5\xdc:Z\x03-\xeb\x86\xa9W`\xc7W\xcc2\xafd\x01\x9b\xfa\x8e5U1\xdf\xf9O\x9a\xbb.V>sXw tk\x94\xebs\xb8\xd2p\xf8\xb4\xd8}\xb1Q\x83\xc0\xfc\x19\x8d/\xd8\x1f8IH\xd6\xffY9&ml\xae4\xef\xb0\xec\x1f\x8e+\xf6\xb1[\xdc\xb2{{G\nv\xa3 60\xba\xd5\x7f\xb8\xde ]\x0b\xdd\x9f\xf8?\x15yS\xb4\xadD\x8d\xae\x8a\x0d{#\x1f\xc1\xb9\xfc\xddQ\x98\x04\xc9\xc5\xa4\x87}\xecxC2\xd8\xd5m\x07L\xf0+\x02|9\x87\xcb\xcep\xbb\xec\xbb{(]\x82tw\xc3\x1a&\xc0\xa7\xaa\x86\x1d\xef|\nt\xb2\xf5j1\xb0\x1d\xd9\x98\x1e\x98\xb8+\xbb-\xf3\x0cEr\\\xe5\xad(\xfe1\xcc\xfat\x9a\x0c#'\x83\xeb~\xcd\x86^\xf2\xef\xcdB\x14\xe6\xfaP|(ZhYw\x06e\xd7j\xec\xac\x85C%;\xf3J\x925\x1f\xcav\xdc?0 \xbd\xf4\xab\x85\xca\xe9e+\xe1b\xc0\xec\xdf\\=\x9f\xde\x00e\xf9\xa2,_\xc1\xaf$\xe6+\x05 \xc8\xba\xec\xbb\x94\xe5\x0b\x81\xa7\xdb\x94\xbfh4=\x05K\xa7,_\x19\x11\xf4\x18\xfc<\n=\xa7,_\xc7b\xe6 \x88y\x16\xbc<\x1e-\xa7,_\xc7\xa0\xe41\x18y\x02BNY\xbe(\xcb\x17e\xf9\xc2\"\xe0Y\xf1\xef\x14\xf4\x9b\xb2|\xb9\x0e\x0b\"\xde\x11x7&?T\x0c\xd6MY\xbeR\x12e\x85\xb0m\xca\xf2\x85\xc7\xb3\x91h6\x06\xcb\xc6!\xd9\x94\xe5\x0b\x12\xb1\xeb\x08\xe4\x9a\xb2|e@\xaa\x838u*J\xed\xfcnR\x96\xaf\x99Q\x96/\xca\xf25\xb1\x1c\x19\x97\xb0\x98s4\xe2\x1c\x857S\x96\xaf.\x0dc\xa6,_\xdaPY\xbet\x92\"\x89\x19\x1be\xf9\xf4\xdc\xc9Y#9[\xfdi\x92\xdb\xa8\x9dN\xaf\xbc\xdc\xb1\x97\xa9\x1d]M\x7f\x88\xfd\xb8t\x08W\x9e_o\xfc\xbbA\x00M.\x04\xab\x83\x18\xbad]\x04\xe42n)\xdbFn\x01\x08z^\x9b\xd1\xcf\xb8\xcaH8#\xa5.\x12\xac\x9eWB\xfe\xddsu\xc1f\xf4\x7f\x14\xe3\xc5\xcd\xc4m.E\xfe`\x154\xaa=\xaf\x84\xfe\xe5\xb8j\\3VA\xc3\xfeK\x08\xbc\xc1\xdaH\n|^\x17\xf9\xf7\xe3j\xb2.\xca-\xcb\xbf\x13\xec\x9c\xf9\xc7s\xfe\xa1\x97%p\xb0\x9b\xe7G1\xfcHn\x1f\xc1\xeaG\xf1\xf9z<\xbc\xab\xbb\x91\xc3o\xcaD\xb1f4\xfc\xc8\xbf\x14\xabU\xc3\xdaV\x03\nvT(\xc3s\xd5\x95T\x03M\xed\xach\x7f\xc0d\xac\x94\x10\x9e\xaa.ka\xdd\xd4\xbb\xcfR\xe3\x81q:\xbfe\xf7\xaejO\xbe2\n\x13*\xd4L\xbda\xdd\xa1\xa9\x84z\xa3\xc8\x15Ed\xf4L\x91\xd0\\6\x13q\xa2\x8fS\xe8\x02\x9c\xd0k\xbez\x92\x99(\xa1^\xaf[\xd6A\xdd\xc0\xb8\xba`h\xc6-\xeb2\xb7\x96\xc3\x03oiDY?W;N\xbc\xdf\xeafDSV\x87\x1dk\xca\xa5\xfe\x9b\x18\x93T\x12N)?\xdc\xb0J7\xfc\xa1\xea\x15\x9f\xc9\xd7\xfbR\x94\xb6\xe5}\xbeoB\xa9\x91\x1cZ\xde\xd4\xb7,\xb2=\xc7\xc5\x9f\xb8q'\xd4\x95\xa5y\xb7\xe5\xae\xc4\xb6\xae8vL\xbb\xcea,\xa9\x06\x9a=X.9\xf9\xaf\xa3\xd2\xf6\xd2\xf7o\xfe\xe9r\x0d[\xb6\xee4\xbc\xa6h6=\xf1\x11B\xa6|A\xe4Ex;_\xdf\x03+\x967P\xec\xf7_\xb0\x15M\xa4l8\xdf\xd7\x96\xc6\x19\xbcEE\x0f\xadE\xceV\xe0\xff(\xabU\xb9,:\xd6#\x0d:\xa4\x89\x1f\xa8:\x92Y\\Y-\xb7\x87\xd5\xc4\xbfP\xc8\xab\xf4L\xc9\xe4\x89 B\xc9\x90:\xc56\xa0&\xa19*\xec\xfd\xe5tb;\xb9\x05\xe1\x92iX\xabX2\xf1z\x0d\xef#\x7f\xe5\xce\xd5\xdbTn\xaa\xba\x99\x08\xc5\xfam\x1c_B\xb6\xcc\xb1\x0f\xf6\xba\xae\xb7\xcc \xd6-\x0f\xb0aw\xac\x19\x9d\xea{x\xea\xe8\xe9\x83+\x0d$\xb1a\xf67aT\x0e\xbf\x06\xab\x04BS7+\xd6L\xdd?o\xcbj\xc9\xbe\x07\x99\x8e\xf7i\xbb\xba\x85_\x9d\xff\xf67Y[#)\x07\xf0\xc5\xa7~YT\xae|\x1b\xe7\xeb \xa1N\x08\xbc\x1f\xd8g\x81\xd4\x0d\xa9\xf3\xf4\xa1\x97/\xf4\xd3\xb6f\x04~\xa4\xef\xf1\x81'\x04v\xb1\x82I<\xb3\xd1\xd8\xa7\xa3p\xad\xc0\xf8Q }\xbd\xe9|\xbd\xcd\x01\xc1&\x01\x04 \x89h\x17@\xaa\xe9\xd2\x92xHOyQ |\xb32\x91A*27\x17\x89'#3\xb1\x91it\xa4\xa7\xb8\xc8\x94\xbdG\x12\x92\xb9\x19\xc9HJ23'\x19GJF\xb2\x92\xbe>\xdcS\x94XZ23/\x89\"&32\x93\xc7R\x93I\xdcd&r2\x85\x9d\xf4\x14\x86N\xca{\x02~\xf2t\x04\xe5I\x18\xca8\x8a2;G\x89%)\xb3\xb2\x94x\x9a2\x9a\xa7\x8c'*\x83C!.\xfd\xee\xd1Te0\xf5.jB\x85`+cf]\xd1|\xa5\xef#\x88N\xb8\x8b\xab_F\xca2\x86\xb3\xccLZ\xa6\xb1\x96\xbe\x1e\x84J\xb2\x9b\xc8[:J\xebP v\xf30\x97hp\x10\xc1]F\x91\x97\xa1<\x8b)\xf4e\xa8L'\x83\x90\x89\xc1\x8coL<\x87\x19\xba\xb7\x04\x163\x91\xc6\xf4\xe7\xf6\x0c\x13\x99y\x99\xcc<T&\xa2o\x1cMf\xa2\xd9L\x1c\x9d\x89\xe53\x11\x1d'\x9e\xd1\x8c\xa14\xbd\xa9r\xb3\x90\x9a\x91\xacf\x1a\xad\x19\xc5k\x86\x1a\xdd\x9f\x1e7p.\x9e\xdb\xccGn\x06+\xe5|\x7f\xf2\xf1\x9b\x08\x823\x9d\xe1t\x14\xd7\x05\x93\xe1f\xe58C$g\"\xcb\xe9(+\x9c\x047\xccs\x06\x12\xe0\xe6f:\xb3S\x9dn\xae3'\xd9\x89a;\xe3\xe9\xce(\xbe3\x81\xf0\x8ce<\x03Im\xfd\xb5\xc3RwX\xd23\x81\xf5\x8c\xa4==\xb7\x9bB|:\x8aB\xa4\xb1M\xa1>=]>\x9c\xc26#\xf9\x19L_{\n\xfa3W_\x8c @c\x18P\xfb\xf4\xc0\x97\x9av\x9cu/11m\xd0%\xe2KJ\x8bG\xd5|\xe7\xa0\x12\xd2\xc6\xe0k\xbe\xb3\xbc\xc9h\x91H\x9b\xef\x04O\"\xda(\xccm0l\x12Z\x9c\xcb'_\x02\xda^;\xf5\xa6\x9f\x8dL>;$\x99u\x94\x17L=\xab\xaf\x12\x9bx6\x83\xa2\x1bH9\x1b|\xd5`\xfa\x14s\xa4\x9b\x0d&\x9b\x8d\xafVD&\xd9`\xf5\xfc\xb9b\xe3\xebv|\x9eX\\\x96\xd8\xf8\x9ay\xbd\xc4 \xf9a\xbd:\x98\xef&\x83\xb9a\x83\xf7\x86\xcbS8\xfe>\x1d\x9d\x15\x16\x97\x13\xf6\x14u\xcf\x90\x0d\x16\x91\x0b\xb6\xf3d\xe3\x82P\x1e\xd8\xe0\xe8\x85\x19\xbf \x9c\x016\xd8\xbc\x80\xca\xfe\x8a(\x06\xfb\xeeD\xe6}Edw\xcd\x9b\xdb\x15\x99\xd95-\xaf\xeb\xa8\x91\xf2duE\xe6t\x0d>\xc1\x84\xf7\xcc\xf9\x94\xf3\xe5rE\xdc\xf9\xe7\x1f_\xb2ep\x0d\xb7f\xbe\xec\xad\xf6Z\xf8k0\xca!\x89J!9I\x1a9)\xef\xcd\xd5sJ\x19 \x9422\xdb\xc7$ \x91\xa4\x94\x91\x180\xd2\xe6!\x8f\xc6\"S\xa0HJ\x19\x99\x11\x85\x8c\x01!\xa30HJ\x19y,\xfc\x98\x80>f\x01\x1f\xe3\xb1GJ\x19y\x0c\xee\x18\x03;fF\x1d;\x14\xe8\x98\x11s\xc4B\x8e\x16\x8f=\xa5\x8c\x1c\x1b\x02k\xc4\xce\x92\xa2\x91FJ\x19\x89\x02\x19S0FJ\x19\xe9:,\x88.F\x80\x8b\x98d\x831\xd0\"\xa5\x8cL\xc9\xba\x18\x82\x14)e$\x1eLDb\x89\x18(\x11\x87$R\xcaHH\x84\x10#\x10DJ\x19\x99\x019\x0c\x02\x87\xa9\xb8\xa1\xf3\xbbI)#gF)#)e\xe4\xc4r\xa4\xef\xc3\x82\x84\xd1\x18a\x14DH)#\xbb4p\x90RFj\x8bJ\x19Y\x9a\xe3s\xbeL\x19\xa5\xd8*q4\x0c\x0e\xd9[\xba\xe6\x90\x9a\xa3(CR\x97\x0b\xa5x\xabrl\xd9]^\xa8#\xfa\xec.\xc5\xb6\x17\xca\x95\x00\xda\x96\xd5f;\xbf\xf7Qj\x17]\xcc#\xdd\x00\x0f4\xb5\xcb\xb8AL\xeb\xbe\x80\xa6\x17\xcc \x13\xe5\xd3\xf2\xe4\x85\xc9\xd9\xdf\xcd2U\xda\xbe#*\x8f\xf1i\x81y-d\x8a@gA\xfd\xabb\xbf'?\xb5\xe3\xeb$\xd2h\x9fj\xc4\xc3\x8c\xe6\x95\x82\x95\xff%\xefS\xad\xea,\xe5\x16\xd5\xe3e9\xfdK\x91\xea-V\xc3\xf6\xf0$4\x196\xbe\x0e\xff\xf3R\xa6\xa1\xd3\xb9C\x1d\x9b\xdc\x8a#\xbb\xf2\xce\xb1\xe2AB;\xfd\xf7\xc7|\xd7\x87]\x8e\xf5\xcf\xd3Rhgca\xa3[\xa5\x9d\x8dQ\x8dI;\x1b\x8b\xe9\xa5\x9e\xc6\xc5Pi\x93\xa9\x9f6\xa2\xd2\x94\x11\x95\x96g\x06HT\x1aQiv#*M\x18Qis#*\x8d\xa84\x97\x11\x95FT\x9a0\xa2\xd2\x88J#*\x8d\xa84iD\xa5\xa5\x80]D\xa5\x11\x956\x18Qis#*\x8d\xa84\xa2\xd2\x88J#*\x8d\xa84\xa2\xd2\x88J\xfbyRi\xb4Gf\xea\x06\x84\xb4G\xe6 \x1b7\xdcGi\x8f\xcc\x1c\xadH{d\xd2\x1e\x99_\xed\x1e\x99=N}\xf1\xa9'\xef<\x1bg\x1am\xa99;\x0dY+\xa4\xba\xcfRV\xc97\x90\xf7\xc6~\xcb+}\xe5\xcb\x17\xc3\xacd\xa0`\x15\x87\xe7\x83\xb1\xd5O\x0f\x9d\xc5v\x81,Il]\x90\xa8\x0e\xaa1\x08\",\xdf,m(\xd1KR\x07+\x8d\xd1`\xb21\xd4^\x82\xda\xc7\x12w\x01z\x9ar;Z-\x92\x95F\x10\xd1yyh$\x0d\x9d\xc6B\x1fOB\x87\x9b93\x05\xede\xa0\xed\xa3\x00\x1e\xcdL 3'\xa5\x11\x98\xa9\x8c\xc0\xcc<\xe3\x13\x81\x99\x04f\xda\x8d\xc0La\x04f\xce\x8d\xc0L\x023]F`&\x81\x99\xc2\x08\xcc$0\x93\xc0L\x023\xa5\x11\x98\x99\xc26\x12\x98I`\xe6`\x04f\xce\x8d\xc0L\x023 \xcc$0\x93\xc0L\x023 \xcc$0\xf3\xe7\x0ef\xf6Z\xa8\xab\xfe\xb1\x1c\x80]\xf1?\xf2Fr\xf08b\x9b^7\x80\xf3\x8e\xff\xfcF\xe2d\x9a\xbc\x11\x1f\n!!\x88\xdc\x86\xba8\xb1e\x9e\x15\xa61\ny\xa4\xef\xf2\x81\x025Fs\x986\xaa\x8b\xbcw{^-\xf1\xdb\xfc\xeb\xe9\xac \x04uH\xcf^\xc0A\xef\xdb\xa8\xda\xc7\xee\x01\xec\xdd\xff7\xae*\xb9\xf6\xfdu\xef\xf9\x1bW\x9f\xe3\xf6\xfa\x0d\xef\xf3\x1bW\x1b\xa7\x074\xe7\xde\xbe\xc9\x10\x85\xf12\xc7\x80\x14\xef,\n\x1ba\x14\xca\x08\xa3 \x8cb0\xc2(\x08\xa3\x18\x8c0\x8a\x8e0\n\xbb\x11F\xa1\x8d0\n\xc2(\x08\xa3@\xce\x92\x08\xa3\xe8\x8d0\n\xd3\x08\xa3 \x8c\xc2b\x84Q\x10F\x11j|\xc2(\x9c\xe7\x10F12\xc2(\x08\xa3 \x8c\x820\x8a\x91a%m\xc2(\x84\x11FA\x18\xc5\xc3\xc5(r` B\xbftc \x7f\x11\xf2\xa6\x06\x12\x94\xd8\xb9\x86\x026\xe5\x1d\xabfw;\xa2\x11\xc4\xb9\x8f\xf4\xfd>P\x0e\xc1\xb8\x7f\xd3\xba/\xa0\xdf\x05\xf3\x81D\xf9\xaf>\xfb\x0e\x8b\xbc%\xb3\xed\xae(\n\xd3r\xb7\xfc\x0f\x9d\xc7\x00U\x19\xa9\x92\xb8j\x83q\x93\x81L\xb6\xd0\xb0e\xd1\xf1\xf7\xf4\xaaak>c\x94\xda\xd0O\xf2\x02\xedOPVm\xc7\x8a\x95R \xd7\xceI\x1e\xf4\x99\x93\xf8 \xae\xde(\xf7\x80*\x96z+9\x9b-\xd7\xf0\xd3\x96UO\xd45\xbf\x85?\xfc\x01\xbe\xfbI\xcd\x94\x8bN\xdd,\xff\xce9\x8b\xfb\xc0\x84\xe7\xf5\xbbs\xb8\xac\xa0\xd8z\xbc\xd2\xd2\xd7\xbb,Z\xd6\x9e)\x8f\xb8\x98\x85M\xb2~9\xcf\xff\xcb\xebw/\x17\xaf\xaf\xde]\xbe~\xb5x\xff\xea\xed\xd5\xcb\xe7\x97?^\xbe|\xe1Z\xa8 :\x06\xab\x0e\x9e,(O]WD\x9e\xf1\xef/\xdf\"\x8f|\xf6\xc3\xdbw\xcf._!\x8f~\xf5\x1a}\xe0\xe2\xaf\x97\xef\xfe\xb4\xf8\xcb\xcbw\xaeS4\xab\x11u\xab\xaa\xb7\xf8\xdf\xc8\x87\xb1=\xa8\xffm\x95\x86}g\xa5\xa9W\xc2\x1c\xce\xa4\x0f\x9e\x8f%\xbai\xce\xa0\xec\xa4fX\xd5\xee[\x90\xa6q\x82\xd5AjxlT\x92g\x19\x8e\xeb\xe3\xd2\xfc=]Z|\x7f\xb7\x9d\xe7\xeb\xf5\xb6\xe3C}\xdfv\x8e\xe7\x0d\xb0\x1f\x1e|\x0f\xa4%\xbd\x0d\xd2\xe40\xe8ob\xf4\xd3\x8a\xeb\x91j\x046>i\xfaOE\xdb\xd6\xcbRh\x07BB\xd1\xbf\xa3\xba\xb8\xbb\xe7\xe1\xab\xf7WQ\x0f\xb6\xe2\x13\xb6\xd7\xe3\x17\xa7\xe0\xb3\x00\xc1>\x88\x1a\xf3\xa5B\xa0j\xed~[\x06\xb6\xb8\x0df\xd03mt\x1b\xce\x1dB\xfb\xe1N7\xf0\x07uO\x93\xd7\xd4y:\xbaN\x98f\xe5\x0di4\xa1\xacB\xc5g\xcd\xf5\x1dk\xaa\xa2Z\x9a\xf3\x17k\x11\xcfd!\xcb\xbaj\xcbV\xefn\xde\x13\xc0\x97/\xce\x86\x99\xd1\x99\xf6\x99\xb9\x1f\x8d\xab\xaf\xcc\xe6\\\xe3ml\xe5,E\xb6!\xed`koZ\\\xff\xa4\x1dl\x01\xb76\xf9\x9av\xb0\x15\x0b\xe4\x18\xb6W\xae\xc6\xdf\\=\x9f\x94Fl/\xb1\xbd\xc1I\x0b\xe6\xc3\x05\xc4\xf6\x12\xdb\xeb<\x92\xd8^a\xc4\xf6\xce\x8d\xd8^b{]Fl/\xb1\xbd\xc2\x88\xed%\xb6\x97\xd8^b{\xa5\x11\xdb\x9b\x82\xc7\x12\xdbKl\xef`\xc4\xf6\xce\x8d\xd8^b{\x89\xed%\xb6\x97\xd8^b{\x89\xed%\xb6\xf7\xe7\xc9\xf6Z7D\xa4\xbdk!\xdc\x8c\xb4w\xed \x1b7\xdcGi\xef\xda\x1c\xadH{\xd7\xd2\xde\xb5_\xef\xde\xb5\x827\xbb\xf8$\xe86\xcf\xa6\xb5\x82\x903cSV\xc1\xddi%1\xf7l\xb5j\x9c!+\x8f\xf4]?\xe0\x88\x15\x17\x94\x92D\xc8\x05\xe3N\x82\xca\n\x82\xeb\xca7\xe3\xd2\xe6\x897 V8c\xac\x89\x8f]\xc7H6\xc9Q&P\xba4C\\\x8cI\xd6\x08\x13l|\xc9q\xd1%Q\xb1%\xc1N\xe0\xa3\xedc){,]\x1fC\xd5#i\xfaH\x8a>\x81\x9e\xf7F\x92t\x818\x92\xcf\xb1Qr8~\x04\xf7&J\xcb\x1c;\x92\x1e9\x12\xec\xc1\xd2\xc2Q#\xb1\xbd\xd9vV(b$\xa6g\xdb\xce\x08D\x8bD\xf6ri }]Z8N\x04\xf9lb\xfa]\xe6\x08\x11\x7f|\x08\xb6b\x19cC\x82\x91!\xc1\xd9\xe9`8\xea\xfe\xa8\x98\x10dm\xc2\x0dyt4H\xceX\x10[\xaf@\xa2\xea\xb1\xa4:\x81\xea\x04\xaa[\x7f'P\xdd0\x02\xd5 T\x1f\x8c@\xf5\x8e@u\xbb\x11\xa8\xae\x8d@u\x02\xd5 TG\xce\x92\x08T\xef\x8d@u\xd3\x08T'P\xddb\x04\xaa\x13\xa8\x1ej|\x02\xd5\x9d\xe7\x10\xa8>2\x02\xd5 T'P\x9d@\xf5\x91a\xa1a\x02\xd5\x85\x11\xa8N\xa0\xfa\xf1\xd8\xd4\xe9Au!@\xba\xea.\xb9\xaa\x11S1\"\xad\xb4|\xd8#\x81\x19\xeb\x1eB\x12\xdbm\xd1\xde\x94\xd5f\xe0\x12\xf9s\xf2d\xc5\xbe\x12\xbf\x8f\xf6\xe9\x1e\x1e-\x7f\x08\xbaD\xd8\xd5\xab\xc3VWo\x84\x1a\xbeU\x87\xc8\xb2\x1e\xe9\xbbz\xa0\xd0\xa1\xd9\"\xa69\x8b\x82\xa0V\xd8\x96\x9b\x8a\xad\x16\xd7\xdbzy\xdb.>\x94\xd5\xaa\xfe\x90\x88\xf3\x19\x8a\xaa\x15?\xdc\x95\xd5B]n\xcf\x9a<\xd7r\xb8\xe6V\xf5\x87\xaa+wl\xf1_E\xb9]\xac\xd48\x92t-\xd1\x89\x16k\xa1D\xd5\xd5bU\x1f\xae\xb7L\xdcGRq\xc1\xaa\xcf\xae'\xef\xe4\x14\x17\x0b\xbb\x08\xd5+\xd6\x7f\xe6foY\xef\x98\xbe\x96\xa9\x10\xf5+g{\xfc\xe2%\x1cO\xcf\\y\x06\xc5\xd8 /\x1e\xc3;\xa8\xea\xba\x88\x87\xfe\x8f\x04<\xcc\xda\xe7k\x07\x1eN\xa0\x15D\x7f\xf0\xf8\xa0RV\x9bEY\xadk\xcfw\xef\xad<\xec\x92\x1f\xd5\x7f\xfd\xd4\xb9\x02\xbd\x17\xcb\xba\xedVJ\x0dEW7\xfa\xc36\xfe\xf4\x19\xc5\xa8\xdf\x1f\xec\x87\x8f\xdf\xd5\xc3\xe8hj\xa6\x94\xdcS\xda\xaeh\xba\xc5\x8d\x97l\x0c\x16\x12\xfe\xd6\x82gp\x1d\xecO\nl\xec\xd4B\xa3\xef0\"\xdb\xaaX\xcfI\xdec\xc5\xff\xcc\xe0\xf5\x1b\xfe\x83\xb3\xb8C\xf5\x94\x7fo\x1d\xeanY\xad\xd8\xc7\x85\x0c\x1d:\xf1\x9d\x87?l\xd2.y\x95\xd4\xbd\x97-\x94\xd5\xb2\x112#\x1f\xf4\xefDv\xdfr\xd7kv\xa2]\x9c\xb4?\xc0u]\xadd<P\x01b:\xc5W\x9c\xeee\xd2bW\xdc/\xa4\x1e/'E\x82&dO\x97\xf5nWv\x92\xf8\xe8\x14\xcc\xe4\xd1\x97\x97u\xf5_J\x87\xea\xa9T\xf7Em\xb3=\xf99\xe7\xc39kv\xfd\xba@<-[p\x93i\xbbRdM\x96w{]v\xbbbow\xbf\xc8n\xb18T]\x99>D\x0f\xcf\x9ew\xc6\xa7\xfc\xd9\x1c\xf9\xfc\xdf\x95;\xd6v\xc5n\x0f\xa2f\xaa't\x1a5WO\\\xd5\x1eV\"B\xd1Y\xd8\xb6\xbcc\x15_D\xe9)\x9b# \xa2\xde]\xb7]]\xb1\xc0\xf62\xd3\xe8\xb6\xb1a\xef\xf0\xaf7L\x08\xf6\xb2;\x8d\xba\xf2M\xd1\xc25c\x95Q#xr[n]\xef/\xb7\xfa Ic]\x88\xa7\xa7\xb1\xee[\x1d\x18(\x02g\xab%\x9b\xb4\xac\xec\xe9-8o\x12\x80//\xef\xea\xa5\xf226b\xbaWT\xf7\x92Bp_|YW\xebrsh\xd8\x8aw\xd1kvS\xdc\x95.\x1eG\xf6a\xfdJ\x88\xe0\xc7\xa36\xd0\xc99>=\x03U\x1f\xde\xe8\xeae{r\xa8\xe4[\xfc\xad|\xefZ\xdd\xca\x07\x99\xc0\xdcY\x98dz\x0eU\xc5\xf8\x07\xbbh<\xfc[\xc3\x8aU\xab}\xdb\xc8\x97\x1csO\x7f\xd1\xcf\xde\x98{\x98L\xb6\xfe\xf9\xf1d>\xe3\xc2\xebvuUvu\xa3b\xe3KG\x8f\xe8_L\xbe\xa4\xba+\xbb\xfby\xf5\xd5\xa7R\\L\xad3P\x13*m\xbe,\xfcG,\xce)k>e\xcd\x9f\xd8g\xc9\x9a\x0f\xa8\xf7\xd9La!\xefj\xe4\xfb.+\xd8\xbc\xb9z>,\xd8\xd5\"\xb3\x85\x0f\xfc\x99\xd9\x1e\x8f}\xea\xb2\xac\x1bY\x86\xc0\x88\x1by\xf3\xbd\x9b\x9a\x7f\xc6\xc4\xd0g\xb6\x8c\xb59\xf4\x19o\xeb\xddPo\xaf\xa8\xda\xb0=\x13 \xcf\x0fE\xd3?\xa4\x80v3n\x16\xd1\xbf]\xea\xcdX\x16\xf6\xfaB\xcc\xc5\x1a\xca#b+\xe4b\xb4r|s\xf5|\xdaL\xe4&!7\xc9gw\x93x\xe5\x18\xca\xba\x13\x95\xd2\x84\xb2\xee\x9c\xb0q\xc3\xf9b(\xebN\x8eV\xa4\xac;\x94u\xe7\x97\x99u\xc7\xef\xf1\xbf\xf8\xb4\xac\xabv\xa1<\xcc\x9e\x8c;\xe6\xea\xd9T\xbf\xa7KV\xb9;\xf4R\x84\x18\xc9BUI.\x1d\xe0\x91\xbe\xe9\x07*\x03\xdc\x15\xdb\x85\xd9dY\x17\xdb^\xcf~`j\x13\xf6\xea\x07\xe7Fa\xbfQhy\x99\xd5\x9b\xef\xf3\xe5\x87=\xf9\x19\xee6\xbc\xfe\x84\xbc\x1e\xfc(\xff}\x9c\xf7\xde\xf4\xd2;\n\x0c\xf9\xee\xb3z\xee\x91.\xbd\xb0\xd7\x1e\xfd\x9c\xfd\x1e{\xdc\xb3\xce\xe8\xadG\xf9\xeaC\x9e\xfa\xb0\x9f\x1ew_i>z\xa8\x0f\xaepv\x8c\x87>\xca??\xf2\xc3\xbb.\x8a\xf4\xce\xe3}\xf3\x11\x9eyt?<v\xbcI\xf1\xc8K\xcf\xbbs\x9c\x0d\xfa\xe3\xe3\xbd\xf1\xe1{\xc9\xeb\x89\xc7\xf8\xe1\xf1^xk\x85\xa7\x9f~\x97\x9b^\xb9\x07\xd9\x8a\x9f!\xe6>\x96\xc2\xc6\xb3!iX\xf7[\x16\xef\x1b9\xdf\xc8\xf9f\xfd\xfd!9\xdf\xcc\xd5\x88\xab\x17\x9a\xc7\xe87B\xffgW+\xb5g\xf2\x8e\x1ae\x9d\x1a)\xeeD\xd8\x7f\xbf\xdcZ\xb1-\xdb\xc8\xa4\x0b\x17\x9f\xd4\x7f\xd4\x8d\xa8\xbfg\xb9e\x0c /\xf49/\x86\x92\xfa%X!\xdc+\xc3\xdfE\x82(\xb9\x06\xeb\xaf\xd5\x97\xa4\x1aI\xbf\xa9\xae\x11\xfb\xaf|%\xbf,\xc4\x07\x7f\xdd\xd4;(*\x19\x81/iJ\x95\xbdQ6\xb3\x8c\xa8\xe7O\xe4 \xe6\xbc7\xe5\xe6\x06\x8a\x1d\xff^\xf5\xe5\xd5\xeba\xd8\xd9\x14-_ew\xe3]\xc0uVK>\x97\xae\x9b\x86-\xbb\xed\xbd\xe97\x18\xad\x1dm\xed\xa1\x8e{\xb0\x8b\xc8\xe1\x11-,u\xd4\xf6%\x06\x88\xa1f\xfe\x97\xfc\xe8L\x8d\xe3\xae\xef\xc1\xd9\x007\xb0\x00j\xcea\x1e;\xb9\xbe\x1e:X\xc5\xbf\x1a\xabI\xe6W\\Y\xee\xf8\xc7~6\xf3\x85nwv\xfd#n\xb7/\xcb}\xbb\xedM\xd1\xf8\x9e~\xda=\xcaR\xd5\x1cQ\xd4~\xe8\xae\xfa\xc7\x86-Yy\xc7V\xae\xbaa\x1bm\x18M\xa6\xe89_\xa4\xab\xb5r}\xcb\xaa\x16n\xf8hu}\xef\x83\x88\x8a\xa5\x98\xb3\xabY\xb9\x9bz\xa9?T2\xf4\xb5\xae\xd8\xd0\xadT*\x96\xd6\x96\xfe\xd1\xdd\xe3\xea\x8e\x7f\xf0\xf6\xf5\x07\xb9R\xa8+\x0f\x94\x17x\xa4\xd7\xc5\xb6\xa8\x96\x81\xef~\x86!\xa1\xaa\xbd\xf9KQ}F~m\x8e,\x06\xdbK\x9e\xd7\xa5\x99\x06St\x08\x95yD\xde\x8e\xfe\xa4\xf1\x07XT\xaar\xbe$7\xaf^\xbf{\xf9\xbd\x08\x96\x95\xc7\x0e\x1f\xc3\xa2\x82\xcbJ;\xd6\xfat4\xad\xb7\x13\xa8`=5\xafw\xbf\xae\xe5\xa6*\xba\x83|\x7f\xe4\xdc\x87w\xc2M\xbd\xa9E$\\*l5\xbcD\xe6\x92E\xac\xe4\x8b\xad\x10\xdej\xf3Ec\x1f\x97l/\x95=kqeg$\x8a\xb1\xdf\x8d\xea\xa9\xd3\xc8D58\xf4N:A\xe9\xb4\x87\xb2\xd3B\x89\xb5\xb0\xe5V\xa8\x83\xfd':e\x95k\xfb\xd4\x0f=f\xbb\x9d\x0cc\xed\xe3\x81\xf6r\x976\x7fO}\xf4\xd7\xa8\x92\xc64\xcb\x8c\xc1\x1b\xe9D\xa3E\xa5e\x8d\x9c\xee\xe0&\x9a\x8ch\xb2\x89}\x16\x9a\xcc\xdf/\xc4\x9a\xcd\xb6\x8e0G-\xbc\x93\xc5\xbaB{s\xf5\x9c\x92\xde\x02\xf9W\xb2M=(\xe9-%\xbd\xb5\x1b%\xbd\x15FIo\xe7FIo)\xe9\xad\xcb(\xe9-%\xbd\x15FIo\xdd}\x9a\x92\xdeJ\xa3\xa4\xb7\x94\xf46\x98\xee\x94\x92\xdezZ\xce\xf5\x0b%\xbd\x9d\x1a%\xbd\xa5\xa4\xb7\x83Q\xd2[\xc3(\xe9-%\xbd\xa5\xa4\xb7.S\xbeHJz;9\x81\x92\xdeR\xd2\xdb\x07\x96\xf4v\x8cc\x19E\x8d\x96\xd3\xe3\xa3F\x02v\xff\xd3\x9c\xfd\\\x8f]\x82G\x02\x9f\x14\x19\x9e\x1avK\x91\xe1'l\xdcpL3E\x86\xe7hE\x8a\x0c\xa7\xc8\xf0_hd\xb8=R\xa1n\xe6\x81\n\x17\x0d3\x905Y\xa8-l\xe1\x8dyX\x1f\xa40:y\x08\x12\xffe\x84#\x8cnY\x1d\xf0`\xe3\x10\xcc'\xf1\xd0\"\x11\xcc\xba\x9d\x1c<~\xa0\xb1\x08\xd7ly\xf3\x9b_?\x9d3\xfa\xde\xe2F\xd3aLHB\xdb,\xbf\xd0\x9d[\xeb\xa0\xef~\x08\x036\xfb\x82\xb7<\x05C\xc97rX\x0b`\x1aa\xd5v_\xbc\x11\x8c:\x1c\xd1\x08+\xd6vz\xec\xc2\xb7\x04\xab\xba\xc6\xfb\x96\xf8\x87\x81\xc1\x9c\x03\xc2`\x88\xf7V\x1a\xe6\xed\x95\xb6l\x98\x1c\xc6\xfcy\xad\x07C>Hi\xe1\xd8m\xd3b\x1e\xbe\xb4I\xeda\xb4\xb4U\x7f\xebs\x0d \xca3\xfb\ntu}\x0b\xfbm\xb1t\xa4\x03\x1elY\xef\xf6[&*\xe2\xde\xf0\xc1\xb4\xa4F\x0c\xa5N\x1e,\xa1!\xc7w0\xdd\x1d\xe7\xa3L\xc6\xe1\xc3\xc6\x06\x1b5\xe2Pp\xa8\x11\x05\xaaUl\x17\x81\xa0\x99\xc1\xa2\x1a1\xbeI&\xf5\x195\x89\xfaM\x87M J\x13\xb3\xf7Q\xcb\x88\xc43\xee\x80+m2\x04\x83\x0fq_\xbcE\x86\xaa\xe8QV\xc5\xda\x04>\xac\xd2\x8c\xe1\xf5\xe90:\xab\x08\x13\xf1\"\x0b!\x07Q\x92\xd9\x8c\xa1\xe6;T\xd72\xfb\xe8\xa2tf\xed\x1e,\xaa\x01\x11\x81\x00\xa6\x85\x82\x02L\xbb\xd4\xc9pD\xec\xf5\xca\x07({\xd2\xda\x0f\xc6?R\xa1\x96\x1dZ\x8a\x8f\xa7\xf5v\xb5h\xd8Z\xe6\xee8Q\xc3\xe5o\xb7\xb7]S\x8ae\xc6\xben\xcb\xae\xbccrYR\xb6\xb2\x05\x1e\xb7\xc3]\"J\xebS\xb8\xb4]\xbd\xdfK\x99\x91}\xecXS\x15[\xb5l\xf27~\xdc+f.\x81^\xf2\xea\x1a\x11r\xa3\x91\x031\x01PY\x89\x1a\xb6ewE\xd5\xc1\x8eu\xc5\xaa\xe8\n\xdf\xeb2\xaa\xad\x9a\xd6\xc8e\xbap\xae\x18\x15P?\xba\n\xc3\xde\xf6\x9b\xf1\x87\xc2\x10\xc7\xb6e\xdb\xc9 \xfc}\xd1t\xe5R({\xaeb\xfa9\xfbcs\x8d\\mD\xc4\xa9'hT\xae\x82\x8d+\xe8i\xf00: \x87\x1a\xaa\n\xc3\xd41\x10\x13\x1a\x98/\x86\xe7\x8a\x81y\"j\x8e\x88\x9b\x1f\x8e\x96\xb9\xe2\x05\xa2\xe9)\xa2[\x0fF\xd3S\xab%4$MO\xa7F\xd3\xd3\xa9\xd1\xf4td4=\x1d,\xa9\xe1\xf2\xb7\x1bMO{\x8b\x9f\x9e\xa2\x06^\xd4\x83\xc6\xdf\xf7\xec\x9e\xdd\xf9\x18\xdcQ[\xb6\xa63R6@\xe9 \xa9\x04#\xda!&I\x83\xa7@3}\x83J\xd5\xe0\xbb\xbe'\x8b\x03\xae%\xcd\x9b\xf74\xdfx5 \xdb\xc7Z\x9ej\xb3V\xcf\xa4\xed\x95\xefch\x8fn5t{9[\x8a\x92L\x08\xf3\xe1=\x83Q\x92 \xc0}\xbcC\x1f\x9e\x9fg\x92\x89\xd9\xed\x08\xb9}\xa4\x0e\xa7e\x97\x18k\xea\xce$\x9e\xc3\x83\xa4,\x13\xb3\x06\xa2,\x13\x98\x0f\x1eP\x96 \xca2\xe1<\x92\xb2L\x08\xa3,\x13s\xa3,\x13\x94e\xc2e\x94e\x82\xb2L\x08\xa3,\x13\x94e\x82\xb2LP\x96 i\x94e\"%Q\x03e\x99\xa0,\x13\x83Q\x96\x89\xb9Q\x96 \xca2AY&(\xcb\x04e\x99\xa0,\x13\x94e\x82\xb2L\x98\x81vFQ\xa3\xe5\xf4\xf8\xa8/\x9de\xa2m\x96\x8b\xf1\xee=\xaez\xcf\x8f\x1c\xd5}\x80\xc1\x8c\xba\xf7\xc0\x0b\x13\x18\xf1\xf4\x0eb#\x8e\x1d\xf7\xb0j;\xe4=\xcc\x8f\x8c\xba\x87\xf1V%\x19\xef\x80r}`Z\x8br}H;q\xe3\x86\xb3TP\xae\x8f\x1c\xadH\xb9>(\xd7\x07\xe5\xfa\x18\x80e\x03<\x92\x85c\xb7*}\xaf\x8bp\xedY\xda_c\xb6{i_\x98H\x1224\xe4l&\xa6\xbb\x93\xeb ?\xf0\xbc!\xde\xb6R'<\xd8<\"C\x17y`ID\xc6}\xd9\x93\xda\x01\xa1\x17b$7\xb0]\x13\xd2\xb6\xda\xec\xcbq\xca\x9f\xb8\x1dE3\xdeZ\xae]D\x7f9\xa1\x85Qq}\x88'!\x0d\x1f\xb9\x81}r\xd2\xa6q|\xa5=\x82\x0f\x1d\xbd\x81\x0b\xdd\x8b\n\xdb\x8bn#\\\xb8^d;M\xc2\xf4JK\x84\x1e\xba\x91p\xa1yQay\xe8F\x8a\xbbm_(\x9e\xda\xebV\x1d\xe2a\xd2\xa4\xf1\x0f\x0b\xff\xac\xae\xe4\x02]\xec\xc9\x0b|\xa9\x86j\x8c/\xd9\x08\x9e\x9b\x1f\xddJ\x96\xa7\x8e\x0f\x9bC\xdf-\x82\xb8\xd7\x16\"\xef\xb5\xe5\x0c\x93\x0b\x85\xc8%\x87\xc7E7P\xbe\xf6\x89\x08\x87\x83\x1b\x0fZ)-9\x14\x0e\xdf\xcf-s\xccI$\\eT9\x18\x07\x17\x17\x037\xaa\xe64=\x83m!\xe0K\xd3\x80\xb9g\xcb\xdd\xf2\xf6m\xd4\xdaC\xa4gh\xcbj\xb3ef\n\x06kQC\xf5<9\x19\xf8\xc7\xa1/q\xf0X\x96\x15oV\xfe\xf9x*\x96\x85l%\xd2CL\xef\x8a\x82\xac\x84Q\x90\xd5\xf0\x13\xb61)\xc8J\xf89\xa6\xef;~K\xdfIi\x16\x98_\xc6`y\xaf@[\xfdj\xa3 \xac<\xcbn\n\xc2\xa2 ,\xbbQ\x10\x960\n\xc2\x9a\x1b\x05aQ\x10\x96\xcb(\x08\x8b\x82\xb0\x84Q\x10\x16\x05aQ\x10\x16\x05aI\xa3 \xac\x948&\n\xc2\xa2 \xac\xc1(\x08kn\x14\x84EAX\x14\x84EAX\x14\x84EAX\x14\x84EAX?\xbf ,\n\xff\x89\x8b\xad\xa0\xf0\x9f\x136n8p\x85\xc2\x7fr\xb4\"\x85\xffP\xf8\x0f\x85\xff\xf4\x00\x9b'\xe6\xe7\x1f\x96\x98\x9f\xbf\xf4\xe7\x8d\"}\x86\xe2\xa0\xac\xd6\xb5\xe8\x9fr\xff\xdf\xfe\xc2}Y\xbf\xb0\xc8\x9e\xa1E\xd4a\x0f6\x9eg\xfa\xccM\xeb\xbe\x00k\xa3w1\xfd\x8c\xa1.\xd3K\x8ef\xa0\xe30\x97\xa1\xb9\x1c\xd4\xa8Y\xde\xff\x14\x9b\xfa\xf6\x013e%V\x1a\xf6\x155\xef\xa6\xacj\x0f\xedb\x7f\xb8v\xb2\x96\xc1\xd6\x05D\x0b\x03\x82h\x02\\\x0bCD+C\x02\xdd\xe4-\xcc.qy\xfc\xa4\xb9)'\x08\x93N\x90@;\xf9o\xa0\xe8n\xd0\xc4\x13\xe4\xa2\x9e \x91|\xf2\x16(v\xba\xc0\xd2Op<\x01\x05\xd1\x14\x94\xb7(EgD\x91P\x90\x9b\x86\x82H\"\nb\xa9(\x7f\xcf\xee\x89),\x19\x05\xb9\xe9(\xc0\x11R\x90\x93\x92\x82\xa3I)H\xa3\xa5 \x171\x05I\xd4\x94\xffu(\xf8\x9a<HN\xc1i\xe8)8!A\x05\xa7\xa1\xa8 \x92\xa4\x824\x9a*4\x04\xe3\x88*\xc8KUA\x04Y\x05\xf1t\x15$\x10V\x88!\xf3[\x04e\x059H+\x08\xd1V\x80\x9f\x9e!\xa8+\x88\x9c\xc5E\xd3W\xde\xd2\x04\x99\x85 \xb0 \xa2\x96\x19I,\x88\xa2\xb1 7\x91\x05\x89T\x96\xbf_\xb5a2\x0b\xd2\xe9,gy\xfc\x8a!B\x0b\xb2QZ\x80\x87\x8d\x00CkA\x1c\xb1\x05!\x8c \x91\xdc\x02D\xb9\x1e\x0d3\x13\xc5\x05I\x8d\x8b\xa7\xb9\x00q\x97 T\x17\xa4\x92]\xe0\xc7WP\x84\x17d\xa6\xbc \x13\xe9\x05\xb8\x1es4\xf1\x05x\xea\x0b\x90\xe4\x17\xa0\xe9/\xc0u\xa8x\n\x0c\xa2H0\xf0\xd1`\x90\x8b\x08\x83X*\x0c\x12\xc90\x88\xa3\xc3\x00\xf1\x10\x02\xafY\xf8|<-\x06\x19\x891\xc0T\xcd\xf3\x96\xe5\xa3\xc7\x00C\x90\xc1\x11\x14\x99\xb3\xc0ND\xf5\xbbI2\xc8M\x93A\x90(\x83T\xaa\xccY\x9a\\\xdb\xfb\xdd\x1ca\xba\x0c\xfc\x84\x19$Qf\xce\xa2\xbc\xf4\x19\xa4\x12h\xce\xd2\xe4\x0c\xd9\xe3O\xccG\xa2\x01\x8aF\x83\x04\"\x0d\xe2\xa84H!\xd3 \x9aN\x03\xff(\x02\x01b\x08\"\xa8!,\xa9\x06)\xb4\x1a\xc4\x12k\xe0\xbf\xf1\x14r\xcdY\x98\xc1\x85a_\x19\x1c\xc1\xe6}!\xaa\x8d\x9fb\x83\xbc$\x1b\x84h6\xf0\x13m\xcesRI7\xc8\xd8w#\x887\x88\xa2\xde\xc09A\xf9\xaf\xa2\xdc2gf\xa7\xce\n2\x8c\x0d\xeb\xdd\x90W\x02\x9d<\xe3\xc3\x0dS>.3\x05M\xbf\xd3\xbe<\xda\xfd\x84\x9bz'2\xdc\xb0\x15\xb4]\xd1\x1dZ)\x04\xcc\x92\xd5H\x93\x87\xb8\xee\x12{\x07\xeaB\xe54\xd3\xb7\xfc\xbb\xf3\xb4'\xb2\x9eC\x9aR\xf5/!\xfc\xd8OAx\xc9Xu\xd8\xb9'\xf8O\xe1\x87\xd7\xaf^,\xde\xbe{\xf6\xee\xfd\xdb\xc5\xfbWo\xaf^>\xbf\xfc\xf1\xf2\xe5\x0b\xf4\x19\xfc\xbf\"\x0f\xbf|\xf5G\xe4\xf1\xde\xc2u&\x92\xa8[\x90 \xd0>\x83\xec\xae2\xad\xc9n\x0c\x06\xed)\x14\x08\xf1\xdb\x93\xb2Zn\xdd\x1f\xfe\x96m\xd7O\x87\xe4Q\x8eN0P.r\xff\xfc\xcfpk\xd3K\x0eD\x81\x80\xad\xd4\x1f\xcb\xb6=H\xb5\xc5\xfd)2x\x83\xa1T\x87\xdb\xd8\xac\xdd\xd17\xd0\x1f7\xe1q\x87\xbfw\xac\xd9\xb5`\xdf\xbf|\xb0@\xfe\xcflD\xc3\xae\xae\xca[fIt3\x18\xe2\x01CD\x1b\xc1p\xd5!\x99\x1a\xdc\x1cvE\xf5\xb4a\xc5J0ybF\x17j#\xc0\xb4\x13(6\xa2s\xb2!p\x9a{\xd4\x9753\xc6i\xe5w\xf8\xb1-7U\xd1\x1d\x1a\x06O\xd8G\xff2\xf8\xfdU\xdd\x08\xc0\xf6\x7f\xb1\xfb\xeb\xa2e\xce\xc1\x1b\xe0\x03\xbbn\xcb.\x87\x0e2\xbacU\xac\xf5\x8e\xf4o\xdb\xb2\xba\xf5\x0d=\xcbCSv\xf7\x0b\xb1VYz\x13\x16\xa6\xd40\xf0L\xa6\x97\xb7\xde \xdb\x15\xe56\x88\x0f\xe8\xa2@\x15\xe5\xbeggN\xa6\xc1RnU\x15\xab?\x04R\xb0\xeboB\xfdj\xaf\xd5\x90A\xd2\x9f\x93\x17Q-L\xaaH\xec\x13\x9aVK?\x9d3(\xd7\xc3\x8fgbDUGx0#\x9d\xab\xb7lg\xd3\xbb\xcd\xc1H\xde\x18j\"_B\xde\x88\x06\n%\xe1\x8do$\x91f\xd7\xd3D\xbb\xb2\xeaS\xf1:\x8b\x1bO$\xbbZgee\xa1\x06Z\xd6\xbb]\xd9\xb6\xd8\x8f\xe6p\xf8\xe8\xc3h\xfcy\x08\x889\xf1'o\xb8\xe6\xa2):\x7f\xf2j\xecS\x01K\xb9\xa3\x1bUY\x81\x8d\x83\xbce\xc9\x02$l\xd1\x03\x0227\xb5X\xef\">{\xa8\xf6\x02d\x9b\x81\xaaS\xc8\xa3\x8fx!\xb4\xc54-\xa8\xcb\xeb\xa5\x8f\xd1m\xc4\x9f\x977\xc5\xfff\xef_\x9b\xe46\x8e|q\xf8\xbd?E\x1e>O,){\xd8c\xc9\x97\x8d\xc3s\xb4\xb1\x14II\xb3\xa6H.\x87\xb4\xcf\x86\xc31\xacFWwc\x07\x0d\xb4\x80\xea\xb9\xd8\xeb\xef\xfe\x8f\xba\xe1\xd6u\xc9*`fH\xbb~oDM\x03\x85\xaa\xac{\xe6/3\xeb\x8d8\x13z\x8b\xe9N\x83' \xfc\xf0\xd6\x82\xd8\xe6\x0eB\x0c\xb0#7\x17\x0f,\x00]\x85\xc1\xb8\xda\x91\x9b|w\xd8\x8d%\xe2-L\xae\x8e\xdd\xcc\xcfH \xf4\x8a\xd6J\x94\xc1\xb2\x91L\x9c\xcfAD\xbd\x9a\x18%\xb5\"\xb976\xb7p,\xa9)i\xe8\x11\x81\xb9'i)$oQ~!\x1e\xf6|w\xf0\x86~G\n\x0e\xbb\xe3@\xa0\x80{\xb5\xd4\xf3P\x18\x11\xc4\x1fL\xb3\xf2\xdaC@\x94=\xb52\xcbe\x97\x97\x17\xfc\xa2\xdaK\xa92a\x17\xc6\xb6\xd3\xf0\xd5#u\xcb\xe3F\xdc\xa0aE\xb3\x82\x8c\xfdyF\x85\x89\x11\xa7\x9e\xd6\x05:\x03\\\x99<_~o|<\"\x0c8BP\x98\xf3\x9c/R\xaeT\xce\x9b\xc3}\xf7\xa58\x08\xf9-\xb4n\x8e\x02\xc3\x82}\xf7\xa3\xc6\xdfu\x96\x0c\xcf\x84D\x84\x1e\xc6\x88\xb4\xc8\x1bAr\xee\x84\x96\xaf\x9a\x13\xe9\x04x\xe4\x06\xc0\xcf\x08va\xf6\xe2\x96\x8f{\xc5\xf0\x0ef\xea\xb4~;\xbd\x1b}[\xe6 \xb0j#u\xad\xc2\xc2\xc5\xb4O\x9e\xb1(\xe9i\xa4\x19p\xee\xaf=n\x84\nV+\x86T\xa4\x8e\xbc\x06z#\xd7\x16\xb9\x0e\x89Sm^Z\xce\x95\xe7\x05i\xb6\\\x18\xda\x87\xcd\xc6\xe8'|\xc6\xcbMA\x99F\x07\x9f9\x91<`AK\x95\x1eO\xc6R2Rd\x87\xa2\xb5\x17\xae\x0f\xfc\xf2o\xfe\xe0\xa1\xec\xa7z\xe2\xb2\xab\x0e\x8c\x8f\xc9Z\x1e\x03\xab+\xa1Bi\xb5[\xca\xcd\x8b7\xd5\xdc\x80z\xa8+4\x7fu8 NF\xbb_\xde\xf0c\xe8*g\x9a\xabIz+\x9b\xb1\xbc\xebm\xd5\xd0\xce\xfd\xd2\xfc\xd1~7\xe6\xcd\x80\x15\xdd\x1b\x11\xa2i]\x13\x8c%\xad\xf2\xd6\xfc/-<\x82\xdak\xfe\xea\xa0\xff\x16\xf0\xc7J\x88u_]\xd3Z\xbbL\xeb\xee\xa2+a\xd2\xb7\x0e[m\n\x10M0\x7fmw(X\xbe/r\xbd\x8c\xf5\xbf}\xf4\xc2`\xd6\xf5<\x02\x8d\xa9>\x9b\xc7\xd2SP\xc4\xe9\xb7&EJa\xf3\x05\x06MMa\xf3Q\xc2\xfc\xa7\x0b\x9b\x7f4.\x84\x7f\xb0\xc1O\xd5\x19,\xdf\xa0\xbd\x96\xd1\xf1M.\xc0)&\xbeB\x8a\x89?\xcf]&\xd4kT\x0e\xdb\x14\x13\x1f\xe1!\xca\xe6\xf0\x0e\x8d\xf1\x0cM1\xf1g\xf4\x02\x0d\xf1\x00\x0d\xf2\xfeL1\xf1\xa7zzFxy\xce\xe2\xe1\x19\xee\xdd\x99b\xe2O\xf1\xe6\x0c\xf1\xe4\x8c\xf0\xe2L1\xf1SL|\xcf))\xd8+3\xc5\xc4Gy`\xc6x_B\x8a\x89o\x81\xd7\xcb2\xc0\xc3\x12\x13M=\xc4\xb32\xc5\xc4\x8f +\xef\xf3\x9cL1\xf1\xf1\x1e\x92H\xefH\x8cg$\xce+2\xc5\xc4\x87H\xcf\xc7\x00\xaf\xc7\x14\x13\x7f\x06\xafF\xafGc\xac7\xa3u\xdfL1\xf1\x8f\x90b\xe2\xa7\x98\xf8#\xcc\x11\x9f\x1c\xebi\x18\xece\x18\xe4a\x98b\xe2\xb38O\xc2\x14\x13_#\xc5\xc4\xef!\xc5\xc4\x97H1\xf1\xe7\x15\xae?\x9a{\x8a\x89?\x87\x14SL\xfc\x14\x13?\xc5\xc4\xef\xb8i\xa7\x7fk\xff-\x7f\x93\x9f\x08\x0e\x92\xdf\xc6\xc8\xef\x91\x11-\xe1\xf1\x0d|\xd6=\xc9\xdb=\xde\x13{^=\xf5\xf9\x87\x9e\xb71Z\xa2hw\xb8\x00\xf2^\xdb\x0c\xc6\xb81w\xe8\xf8\xf0\xc0\xf1\xb8\xb0\xf1Ni\x82W\xa2\x80\xa0\xfb $\nh\xa9B,\xe9\xc7Q^P\xa0\xf8Y\x89?^\xea\xcf\xdc\xe4\x1f<\xfdg&\x02P\x1c\x05\xc8Q\\`h\xf8\x894\xa0\xb9\x89@\x81T\xa0\x99\xc9@at\xa0@B\x90k\x0c\xb7T!,%hfR\x10\x8a\x164#1h*5(\x8a\x1c4\x13=(\x86 \xe4(\x0c\x1d\xfc\xfd\x0eHBwG\x13\xba\x13\xa2P\x18Uhv\xb2\x10\x96.4+a\x08O\x19\n&\x0d\x85\xd3\x86\xbcK!.\xcc\xfbd\xea\x907\xc4;\xea@\x85 \x10\x85\x9c\xba\x82ID\xaeM\x10\x1d\xd8\x1dW\xbf\x19\xa9D!d\xa2\x99\xe9Dq\x84\"\xd7\x08B\x05s\x8f$\x15YJc\xa8@\xee\xf3\x10\x8b\xd0\xec\x18\x04\xb9(\x88^\xe4\x8b\xe7\x1bC1\xf2\x95i5\xb4\xcdD4\n\x17&\x9el\xe4k[\x04\xe1(\x92r\xe4\x8e!\xed\xa7\x1d\xcdK<\x9a\x87z\x84\x18\x1b\x93\xe9Gh\x02\x12\x8e\x82\x84%!!\x06N8\x11)\x84\x8a\xe4\x0c\xc9>\x0b\x1d)\x90\x90\x14GI\n\"%\xf9\x84\xee\x0e\xc3\xeey\x17ON\x9a\x8f\x9e\xe4\xad\x94u\xfe\xccGRB\xd0\x94\xe2\x89J\x96\xe2\x987\xe8\xfa\xacd%\x1f])\x92\xb0d)\xcb\x1fl\xddOZ\xf2\x04Z\x9f\x9b\xb84;u\xc9N^\x9a\x93\xbe\x84!0\x85S\x98\x82HL\x114\xa6P\"\x93'x\xba\xbbvXj \x96\xce\x14Ah\n\xa449\x9a\x1bCk\xb2\x14\x85\x08\x97\x1eCmr\x0cy\x7f\xa8\xf4\x19\xe9M\xde0\xe9wAq\x9ak,\x06\xd0\x9cB\x88N\xe6\xe3\x81+\x04:3Z\xad\xfb\xc0i\x01b\x82\x9f\x8b \xe7\x96\xf2\xb0\xa1\xcf]\x81\xcfq5\x8f\nz\x1e\x1c\xf2\xdc\xab5r\x85;\x0f\x0dv\x1e\x14\xea<,\xd09:\xccyD\x90sW\x88s\xaf\xfcp\x9d=5\xb89&\xb49.\xb0\xf9L\x0d\x9a+\xa49>\xa0y\xbf^\x93*\xde>5)\x94\xb9'R)\x9bnc\xf7\x860\xf7v%\xa0\xa5\x023\x06/\xf7\xc6p\xf5\x07.\x9f\xb9e3\x87,G\x07,\xf7\x86+\x0fo\xe7\xd4P\xe5\xf8@\xe5\xe1us\xf6\xc1l!\xca\xb1\x01\xca\xbd\xe1\xc9\xc3\x1b\x18\x1d\x9a\x1c\x17\x98\xdc[!\x7f\x10K\\\x7f\xcc\x19\x90|J8rL0r\xb4P\xdcaaC\x05\x13\x12\x84\x1c\xb3K\x00:\x04\xb9/\x00\xf9\xa0%\xd3\xc3\x8f\xcf\xb0Q\xe1\x03\x8f\xe3z\x01\xc2\x83\x8e\xcb\xc0\xe2\x8e\xf2&\x85\x1c\xf7\xca\x08Pr\x02T\xb0q\xef\x80\xd7\xc0\x0b\x13\xd0a\xc6\xfba\xc4=\x05\xa2\x03i\xe3B\x8c\xdfQ\xb3C\x82\x8b\xcb\xb5\xccS\xe0\x1c\xa1\xc5\x83\x02\x8b\xdf\xa1`P!\xc5\xdb\x90\xe1\x9e\x02\xbd\x01\xc5\xbd\xa2A\x85\x0bG\x89\x03\xb7'@\x90\xd0f\x0e\x13\xee\x08\x12\x8e\x0e\x11\xee\x95\x05\xaeu3\x06\x07\x0f\x0e\x0d\x8e\x0e\x0c\x1e\x1c\x16\xdc+\x1c\xffi\xca\x17\x03\xb4\x997\x1cxX0pD(p)\x02{ pg\x18p\xaf\xfcf \xa3:[\xf8\xef\x90\xe0\xdf\xfei\x11\x17\xf8[\x85t6\x94g\x0f\xfb=g\xd0od\xc8\xef\xe0\x80\xdf\xfd\xe0\xde\xe6\xc6\xd9\xc3}\xcf\x1b\xec\x1b\x13\xea{\xde@\xdf\x880\xdfQA\xbeu@oSy\xde\x10\xdfq\x01\xbe\x95r\xdbP\x9e=\xbc7:\xb8\xf7`Na\xc3\x0c\xb7Q\x86\xa7\x84\x18N\x11\x865R\x84a\xf7~\xe5_\xf7%\xa2\x9c\x8dR\x84a\x8c\x8b\x91\x89k\x12\xec`\x14\xe3^\x94\"\x0c\xcf\xe8T\x14\xe2R\x14\xe4P\x94\"\x0cOu#\x8ap\"\x9a\xc5\x85(\xdc\x81(E\x18\x9e\xe28\x14\xe264\xb3\xd3\x10C\xb9\x0c\xcd\xe80\x84u\x17ba\xceB\xa1\xaeB)\xc2\xf0\x00\xc1\xceA)\xc20\xca%(\xc6!(E\x18\xb6=\xe6u\x02\np\x01\xc2\xc4\xa6\x0dq\xffI\x11\x86c\x82\xf4\xfa\xdc}R\x84a\xbc\x8b\x0f\xd2\xc1\x07\xe3\xde\x83s\xeeI\x11\x86!\xd2\x9d'\xc0\x99'E\x18\x9e\xc1y\xc7\xeb\xba\x13\xeb\xb8c\xdd7S\x84\xe1#\xa4\x08\xc3)\xc2\xf0\x08sD{\xc5\xba\xe4\x04;\xe4\x04\xb9\xe3\xa4\x08\xc3,\xce\x05'E\x18\xd6\xf8G\x8d0<\x0c\xadh\xab\xf3\xf0)s\x0e\xe1\xbb\xaeshp\xc9m\xde\xb0\xaa\xce3R\\\xe4\xe5\xba:\xfd\x9b$\xd8:\xa2G\xfe\xd8\xbeqV\xae\xab6\\$oeW\xd88f\xa4,U\xb7s\x10\x19rX\xde/t\x93?\xd3\xa8\x90\xbc\x89\xc7\xe7\xffAU\xf8#\x83\xce\x1f\x8bE\x85\x975I\xa6\x83\xb5n\xe05Nn)Y\xd9\x1c5\x9c\xc5\x82\xb7h\x0e\xa5#vp\xe2$\xc9fI\x9a<\x83eQe\x97\xa2\xdd\xf6\xe7}u\x02T\xbd8\xc4\xd7f\"0\"\xe8D\x12d\xbf\xbf\xdfOb\x14\x8f\x12/t\x04N\xc8\xc8\x9e\x1d\xea\x96\x90\xad\xff\\\x1f\n*}\x8b\xf6u\xc5\xe7\x8f\xbb\x8a\xa4\xedOi\x11\xe4\xff\x93mI^\x9e8\xee\xa2*T\xb2\xe0K\xf1\xdd\xbb} V\x84\x11.\x97C&\xeb\xa6\xae#\xb2V\x8e\x02\xb5\x02\xb73\xf1<\xb6d\x83\x97h\x98\xe0*\xd5\xa4l\xe4n\xbe#\xd96/-\x01\x9f\x04\x1b2//r\x8b\xb3(\xe0\xba\xd4\xe5[\x01\xb8\"0\xac@\x80{d\xa8\x8a\xf3\xb2\xe8@\xb7t\xe4\n\xb0\xaf\xe9\xd5=/\x00[\xd2lg\x9e\x8c\xce\xe0e\xe2\xac\xc3.\x1a\xca.\\\xcb\xae\x06\xaa\xa5\x80n-\x87#\xf1\xfc\xe01'Ug\x0c\xcc\xb0\xd3\xf0\x8b\x1cB\xc4\x0ex\xd1\xb7\x03\xed\x1d\xa9YC\xd9\x8f\xa2\x07\\CW\x90\xa2\xd9\x85\xbb\xca\xa8\xaa\xa2\xaa\xa8\xaa\xc7?G\x85\x8dBN\x06\xbe\xecY\xde\xe1?\xddS\xf5\xba\xd8\xe1\xf7\xf4\xc1\xb1<\xd6u\xb5\xd3\xeb8T\x07\xb6?\xb0\xeeo\xdd\xdaa)M$\xe6\xb8\xf76t!\xad\xef\xe7{d\xbf\xbf\xa7/\x89\xf9\xa1\xb8\x10\xf7\xf4Iz\x95\xafh\x99\xd1{\xfa\\;\xfe\xba\xe3\x8fc[\xe2+p\xd5PO\xa4v\x98\xad~\x83C\x9d\\\xc9\x06\xb7\x88\xf6\x98$T\x8aj%\x91{\x8e\xe9\x18sE\x8a\x86:}\x11&\x11\xf1\x9d[\x18f\xf3\xc2\x05\xc2\x97@ 8\xe4X\x1c\x14\x1a\xdfYN\xdf\xb3\"<@\xbe\x04.L\xbe\x04B\xfa\x80\xec\x01P\xc5\xb9\x03\xe7w\xcf!z\x00\x02{\x01\"\xd8\xad\xde\x02\x99\x91\xe6\xe0\xba\x1eH\xa0\xd9\xae\xde\x92:6\xac\x8f\xf5\xaa\x11\xca~\xf5\x16\xb8'l\x8bf\xc1j\x98\x8c8\xc1lX\x0d<+\xd6[T\x9f5\x1b\xc0\x8e\xd5\x98\xc8\x92\xd5\x08c\xcbz\x8bSL\xbe \xd6\xacF({\xd6[\xe0\xba\xaa\x83X\xb4\x1aAlZoi1A\xfa%P\xecZo)C\xf6-\x86e\xab1\x1b\xdb\xb6+p\n\xebV#\x82}\xab1\x0b\x0bW\x03\xcf\xc6\xf5\x165`\xeb\xfaY\xb9\x1aw\xc0\xce\xd5\xb8+\x96\xae\xc6\x1d\xb0u5BX\xbb\x1ah\xf6\xae\xb7\xa4>\xbbW\x8co?\x8bW#\x88\xcd\xeb-M\xac\x13XV\xaf\x06\x0bc\xf7j\x84\xb2|\xbd\x05\x86\xa4\x05\x90\x98\xcc\xfa\xd5\xf0\xa4\x08\x90\x088:z\xefH\x1dBO\x99A\xec`oiL\xb3\x87\x11,a\x8d\x90\x1a\x07\xb2\x86\x9de\x0dO\xb3\x08\xf6\xb0F\x10\x8b\xd8Y\x927\xe9\x80D\x0c\xd3\xd8?>Q \x08$b\x98\xc7\xbe\x02\x19*\x19\x81\xc4<Ld\x0d$\xa9V\xc3\xcbL\xd6\x08`(kxb_\x0b\xc40\x9650\xe5;C\xeb\xce\xc6d\xd6\x88\x13>\x9e\xd9\xac\x81iy\x04\xd3Y#\x8a\xf1\xac\xe1\x0c\xac.\xe0g@k\xcc\xc9\x84\xd6\x98\x83\x11\xad\x81\x1c]\x93\x19\xd2\x1aH\xa6\xb4\x06\x861\xdd{\x16\xc1\x9c\xd6@v^8\x93Z\x03\xcf\xa8\xd6p\xa4K\x90\x98\x85a\xad\x11\xc4\xb4\xd6\x88a\\k\x040\xaf50\x9d\x84\x98\xae\xb8r\xf0\xccl\x8d\xb9\x18\xda\x1a\xa8jzfl8s\xdbY\xdc\xf2\xd6\xcf\xe0\xd6\x88ar;\x0b\xd4\xb4\nw\"\x06\x89\x18f\xb7\xb3@\xa6\xf5\x98\x8e\xa4\x0c\x12\xa1Loga\x1d\x0b\x1c\xa1B\xf23\xbf5\x9c\xc9\x1a$\xc2\x99\xe0\xce\xe2<\xe9\x1c\xf4Cx\xb6\xb8\xa7\xfb{LrGj\x07\x89P\xf6\xb8\xb3\xb0\x8f\xef_/\x10,r\x8dP6\xb9F\x00\xab\\#\x98]>z\x11\xc92\xd7\xf0\xacL\xe0\x0d\xbf/\x81e\x02c\xd9\xe7m\xb9\xa1,\xf4\xf6\xc5\x106\xba\x86G\x181\xectg\x81\x88t\x11\x121lu\xefd\xf2\xa7\x8e\x90\x08g\xaf{\xd7hO\x1a \x07\x9b\xdd\xf9^,\xd3]c\xce\xf1\x1e\xc0|o\x8bF3\xe05\xec\xa7\x1eW\x1a\n \xa91s%\xa3\x90\x08\xd1(\xc5$\xa6p\x8f\x84\xba\xda\xa1\xd3SH\xb8\x92TH\x84\xb4(*a\x85Dp\xda\n \xa4&\xd3\x95\xc2B\"4\x91\x85\xf9-g:\x0b\xfb+\xf6\xa4\x16\xa6w\xbc\x1f\x89Hp!\xe1Js\xa1\x9e\xc0\xc9;d\xd0LM|!\x81I\x7f!\x81K\x82!q\x07\xcd\x9d+-\x86\x04>9\x86D\xbf\xa6\xb35\xa8}vR\xba\x0c D\xac\xed\xd9\x197\xde4\x1a\x12\xc8\xc1\x00\x81\xf2\x83\x19\x13kH\xa0d\x88I\xb2!q\x87\xed\x0eL\xbb\xe1-\xef \xbdY\xe0\x93oHxSpH\xc4Jaj:\x0e |R\x0e\x89\xd8\xda\"\xfal\xb64\x1d\xc3\xe2|\xc9:$\xbc);$b\x9b\x1f\x9d\xbeC\x02\x97\xc4C\x02YE,\xeb?\xa4\x17\xc3\x93{8\x8b#lR\x8a\x0f L\xa2\x0f\x89@\xc1\xf9\xdcg Zx\xd8\x04 \xce\xe2\xd4\x9a\x1e\x93\x06D\xc2\x97\x0cDb\xd0\xc2\xe9)A$f\xde\x86\xf1IB$Bz\x0d\xc2\x13\x86x\xcb\x93\x85LJ\x1b\"\x81\x94#\x04\xc8\x12P\x89D$\x90\x13J#T\xec\x80N-\x82*\xaa\x97~\x04\x973\xa2\x03.\xcd\x88\xc4=\x08%$\xf1\x08\xaa@\xb9\n{\xd2\x8f\xa0J\n\x93):Q\x89\xc4=\x89\x16\x95\xba\x04U\x9aNo\xe2O`\x82*\x0e'\\T\xaa\x13\x89\x00\x81\x86\xec\x8a\x10!\xfc\xd0\x14(\xde\x02\xafI\xe3J\x84\"\x81N\x87\"\x81\x94WH\xdbgL\x90\xd2\x16\x18\x96&E\x02\x9d,E\"8e\x8a\x04R\x80\xd8\xb3\xab/\x03\x88D\x13\x9eJ\xc5Y\x9e\xd0\xaa\x86%T\x91@\xa4U\x91`\x1e\x9f. \xa7g\x97\x04R\xde\xe8`\x05X\x91\xcf\x96zE\"$\x01\x8b\x04v\n\xc6%c\xb1\x16\xd7\xa5\xe4pz\\\x84'f\xb1\x16%\x13\xb6`\xd3\xb3H\x04'i\xb1\x7f\xbdK\xde\xe2N\xd5\"\x11\x95\xb0\xc5\xddtT\xda\x16\x89\xd0\xe4-\xd6\x82zK5\"\x85\x8bDT\"\x17{\x0d\xf2\x96\xbe\xc2\xdc\xe9\\$\xe2\x92\xba8\x1bCW\x8e\xd4.\x12q ^\x8ef\xab\x08{4\x8c,\xd4&w\xc9\x9b\x80\xfc.\xa3hG\xef\xdf\xbd\x18\xd7=\xa5z\x19\xee\xbe)\xd5\x8b\x01\xd8\xbd%\xd4\x19V\x0e\xe0\x94\xea\x05\xe1\xe4j\xe2\xb1\x05;\xb7\xe2\x9dZS\xaa\x17\x8dPgU\xa7&?\xc4I5\xc895\xa5z\x99\xeat\x1a\xe1l:\x8b\x93)\xde\xb94\xa5z\x99\xc3y4\xc4i\x14\xed,\x9aR\xbd\xa4T/\xe8SR\x903\xa7\xbc.\xa5T/)\xd5\xcb\\\x0e\x96H\xdf>\xafCe\x80#%&IH\x88\xe3dJ\xf5\x12\x93-\xc5\xe7\xf8\x98R\xbd\xe0\x1d\x19\x91\x0e\x8c\x18\xc7E\x9c\xc3bJ\xf5\x02\x91\x8e\x87\x01\x0e\x87)\xd5K\x80\xc3`J\xf52B\xa8\x03`J\xf5b*.\xa5z1\xbe\x80t\xc2K\xa9^\xc2\x9c\xe9R\xaa\x97\x16)\xd5\x8b\x82N\x9br\xc4\xe7\x1d\\\xa3\x87|\xe0\x8e\xd9\xab\xfe\xde&Ha\xc7)4\xfa\xcb\xd2\xc4\x84)`\xe1\x8e\x84&R\x11rPo\x98\xd2\xa6\xbck\xe54H\x99\xa2\x8a1\x90`\x07IR\xce\xe5c\xa2\x10}\xd7\xfels\xa4\xf4E\xd1\xc7\xa02\xf2!5\x1b\x85=A\x9c\x9fZ!i\xd6\x86$\xc8\x1c\xefCN\x9b\x9e\xdb\xa2\x87\xa1\x7f{\x15Z\x83\xc6\x8cx\xda\x8a\x8c%9\xdbj\xda\x0d\xa8-\xa6muGnz\xe1\xcc]\xb5r\x05\xf1\xf7\xd3\xa0\x06\x15\x1f~TW\\\xb3\x16[\x8eB/V\xbc\xad\xea\xb4d\xb5\xd3\x82:k\xbd\xad\xca\xc1^Uz\xad\x01\xfd'q\xa0\xcc\x85\xd6\xb5\xed\x0cKI=\xc6\x86\xb0\xd0\xf7\xfe\xff\xc9\x9e\xd6\xb0'y}\xca\xea\xbc2\xba\xfc\xf4\xf2*}&\x929\xae\x91\x16P\xd7\xcd\xbdeV?c\xe5\x11\xedi\xdd\xe4\x8d\xd1\x85\x86\x0b\xf6bE\xcb\xca\xe2\x07\x1b6\xb9\xba\xd2\x06\xd4Z\xfega/\xc8\xaa\xbc\x04\xf1{^*\xde\xe2q\x89\xbb\xbc\xbc\x18q\xf2#\xeb\xe6c\xb3\x19\xbe\xd4\xb2\xd1\xb7$/\x9f^\xe7+\xdaR.\xbd.\x00\x92\xcc\xc5\x8fGd\xc4\xb6\x96Dk\x90\xe4\xaf\x8e\x015(\x07\xc1\x92\x91{\x8a\x97\x1d\xa3\xf80\xf2i\xc1\x83\x19\x96\x95h0\x89\x06\xe3\xb5\x01\xe1V\xaaD\x83I4\x18\xdb\x93\x89\x06#\x90h0\xc7H4\x98D\x83\xb1!\xd1`\x12\x0dF \xd1`\x12\x0d&\xd1`\x12\x0dF\"\xd1`b\x98$\x89\x06\x93h0\x1d\x12\x0d\xe6\x18\x89\x06\x93h0\x89\x06\x93h0\x89\x06\x93h0\x89\x06\xf3\xcf@\x83 \xa6\x8bTU\xe1 \x8bTU1\xa0\x89\xf0\xc7\x07\xcc\x97\x01;\x84?\xae\xfe\xfe\xf9\x92B\xda\x06\xf71\xa4\x84\xf0F\xf6M\xbcG\xad\xee\xe0\xb4e\xb9-Ye\xc5.d4\x82\x0bW\x0cb\x8f.gJ \x83VK#lU\x15h\x13,\x97\xca\xfbw/\x92\xc9\x15\x92\xc9\xd5\xabo\xc4\xa8\xec \x99\\\x93\xc9\xd5\xfad2\xb9\n$\x93\xeb1\x92\xc95\x99\\mH&\xd7dr\x15H&\xd7drM&\xd7dr\x95H&\xd7\x18\xabe2\xb9&\x93k\x87dr=F2\xb9&\x93k2\xb9&\x93k2\xb9&\x93k2\xb9&\x93\xeb\xb1\xc9u\xec\\m2\xbc\xfe\xb1\xf3\x85\xd6\xe6WR\x14=\xf7g\xad[e\x99\x8c\xed\xbf\xc9\xafDf\x07\xc2\x0e\xad\xf6\xc2ve\xff\xd3\x96\x96\x90\x91\xa2\xa0+\x99>\x97\x94R\x0d#}\xdcO\xa4\xb6J\x06=\x90j\x95\xac*\x9b\x03\xdf\xda`\x9bo\xb6*\xe8{[^?v\xfc\x8642E\x05?\nl\x94#\xacZm\xf3\x06\xf2R\x85\xe5/n\xa1\xa1\xcchE\xee\xda\xae~\xfdlm\xc9.7\xf9\x870\xd3I1V\xf5\x05Y\xadj\xdaX\x9eB\xe9\xaa0\xea\x1e0|r`7\xd7\x7f\x1b\xa7\x10zlW7\xea\xf2\xfe\x0f,i\xb6\x05Zf\xd5Jh\x94\xc5\"e\xde\x8c\xf9\xe8\xa4esh.\xf6\x87\xe5%\xb5\xe6\xf6\xf4H\x17\x10\x12\x06\x841\x14p\x12\x86\x00)C\x84a\xd4Y\x98Y;\xe6\xb8b\xcdm \x05\xbf\x91\x14\"\x0c\xa5\xee\x06\x10\xb6E\x1bKa.\x83)D\x1aM\x9d\x05r\xe1\xa2\x0d\xa70\xddx\n\xc1\x06TgQ\xca\xb0\x13dD\x85\xb9\x0d\xa9\x10hL\x85P\x83\xaa{d\xb7\xc6V\xacQ\x15\xe66\xac\x02\xce\xb8\ns\x1aXa\xb2\x91\x15\xe2\x0c\xad0\x97\xb1\x15\xa2\x0c\xae\xee\xe9\xd0\xcb\xa8\xe3i\xc2\x1d\x18^\xe1\x0e\x8d\xafp7\x06X\x084\xc2B\x9c!\xd6\xb7\x04\xe3\x8c\xb10\xafA\x16\x02\x8c\xb2\x10n\x98\x85\x08\xe3,b\xc9\xfc\na\xa0\x859\x8c\xb4\xe03\xd4\x02\xfex\x860\xd8B\xe0).\xd8p\xeb,M\x18u\x11\xc6[\x08\xa8\xe5\x8cF\\\x082\xe4\xc2\xdc\xc6\\\x884\xe8\xba\xc7U\xe37\xeaB\xbca\xd7Z\x1e\xff\xa2\xcf\xb8\x0b\xb3\x19x\x01o\xa7\x04\x8c\xa1\x17\xc2\x8c\xbd\xe0\xb3@D\x1a}\x01Q\xaeC\xfd9\x93\x01\x18\xa2\x84\x8b7\x04\x03\xa2\x95\x11\x06a\x885\n\x83\xdb\xf2\x852\x0e\xc3\xcc\x06b\x98\xc9H\x0c\xb8\x113\xd9X\x0cx\x831 \x8d\xc6\x806\x1c\x03n@\x85\x1b\x90!\xc8\x88\x0c.C2\xcceL\x86P\x832D\x1a\x95!\xcc\xb0\x0c\x88N\xf0L3\xff\xfbxC3\xcchl\x06L\xd5\x1c\xb3l>\xc33`\x8c\xcf0\xc1\x00m-\x90?\xe82B\xc3\xdc\x86h\xf0\x1a\xa3!\xd6 m-M\xde\xed\xddj\x0e\xbfa\x1a\xdc\xc6i\x882P[\x8br\x1a\xae!\xd6xm-M\x9e\x90]\x19\x90g3b\x03\xca\x90\x0d\x11\xc6l\x083hC\x8cQ\x1b\x82\x0d\xdb\xe0^E\xc0cl\x84\x00\x83#\xd6\xc8\x0d1\x86n\x085v\x83\xbb\xe11Foka=\x932v\xca\xe0\x8c\xdf\xce Qn\xdc\x06p\x98\xd7\x08\x0e>C8\xb8\x8d\xe1\xd6wb\x8d\xe40\xe3\xd8\x0d0\x96C\x90\xc1\x1c\xac\x07\x94\xff&yAWn\xbb\xdd\xb2\xaa\njU\xaac\xb5\x1b\xf2K\xcaJ\xb9\x82\xeb-U:\xae~>u>\xc2\x97\x94\x96\xeai{\x0f\xd7\xd5\xaeM(.L\xef\xd2\x10`\x0cF\x0d\xea\x11[+\xb1-P\x1fR\xa1\x9c\xbbJ\xcb\xbf[_{\"\xeby\xda\x86\x1bW\xff\x12\x86\x1f\xf3+\x08-\x19-\x0f\x96\xd8\xda \xb8\x10\xdf\xbd}\xf3\xf2\xe2\xfc\xc3\xf3\x0f\x1f\xcf/>\xbe9\x7f\xf7\xea\xc5\xd9\xf7g\xaf^\xa2\xdf\xe0\xff\x17\xf8\xf8\xd9\x9b\x1f\x90\xcf;\x0b\xd7N\xccAMpya\xa3\xe4\x89\x1d\x04\xf2Cj\x18\xab\xf3\x86J\xbc\xaf\x7f{\x92\x97Ya\xdf\xf8\x1bZ\xac\x9fv\xb1\xe4-\x83\xa0\x0d\xe7}!\x13\xe6\xdfC\xd3\xc6\x9f\xec\x18\x05\x15#\x85J\xdc\x0fy\xd3\x1c\xa4\xb5\xc5\xbe\x15\xf5\xf8\x06\xbd\xb8\xe4\xb6\x86v\xb5\x9b\xdc\x80\xf6\xb9\x01\x1b\xa2\xffwF\xeb]\x03\xe6\x84\xff\x1d\xda\x06\xb8g\xe8dF\xc3\xae*\xf3Kj\xf0\x91\xef\x80\xe8`\x08\x90\x11t_\xed\x12\xaf\xc0\xf6\xb0#\xe5\xd3\x9a\x12\x19P_\x9c\xe8|2\x02\x8c\x9c@q#\x98\x95\x1b\x02w\xd3F\xfd\xd9\xae\x91\x9d\x9bm\xf7c\x93oJ\xc2\x0e5\x85'\xf4\xc6}\x0d\xfe\xf8\xae\xaa\x19\xdfe\xfe@o\x97\xa4\xa1\xd6\xc5\x1b\xe0\x9a.\x9b\xdc\x96^@\"\xa6\xc5\xaaXc\x8b\xf4oE^^\xba\x96\x9e\xecP\xe7\xec\xf6B\xdcU26w\x0d=}2\xfe\xbc\xb1%tG\xf2\xc2K\x1f\xd0E\x81*\xca\xdefk8\x87\x0e1MU\xc5\xea\x8d@\x1a\xec\xdaF\xa8_\xcd\xb5\xear\xc5\xc8DG\x13\x96v\x7fj\x10|\x0f\x8d\xab\xa5{\xe7\x04\xf2^\xe2\x9a\x13\xb1\xa2\xaa'\x1c4#y\xd6\x17F\xdf\xf1\xf1ns(\xdd\x89pp z\x82\x04\xb4\"\x8c>\xe5e\xcd&$\x99\xdb\xc7.\xa2]^\xca\xfc?\xae\xa1<<H\xb2J\x18\xfd\x0b\xca\xa8O@]\xd6\x10\xd4\xa6\xd9=>\xd8\x18{\x7f>N?5\xc6L[\xde(3\x8asbb{\x05\x0c\xe5\x0e\x1a*H9\xa4\xf0'[\x91\x90\x05H\xb2EK\x10\xc8jJ\x98\xbc\xef\"\xb6=\x94\xbc\x00)3Pu\xf2i\xf4\x11\x13B#D\xb4\xa0\xb3\xd0\xe4G\xc3F\xfcY\xe6\xa1Y\xd93\x05u\xe8N\x83' (\xfckAl3\xa7\xec\xe9\xb0#7\x8e\x8c=\x1d\xeeP\x00\xba\n\x83q\xa5\xf3d\x8d$\xe2-L\xae\x8e\xc3l>\xf4\x8a\xd6J\x94\xc1\xb2\x91L\x9c\xcfAD\xbd\x9a\x18%\xb5\"\xb9#\xca\x89F^\xf2\xd9\xd6\xd0#\x02sO\xd2RH\xde\xa2\xfcB<\xec\xf9\xee\xe0\xdci\x00/8\xec\x8e\x03\x81\x02\xee\xd5R\xcfCaD\x10\x7f0\xcd\xcak\x0f\x01Q\xf6\xd4\xca,\x97]^^\xf0\x8b\xeaEwQ\x9d\xb0\x0bc\xdbi\xf8\xea\x91\xba\xe5q#n\xd0\xb0\xa2YAj\x87\x8eH'\xd8RO\xeb\x02\x9d\xb11\xf22\xa3|\xb7lvU\xf3\xb4Y]\xc2\xaf\x17\xbf\xfd\xbd\xf1\xf1\xee P\x95\x17\xdb\xaaX]\xd4t}\x91U\x87\xf2\xae\xcfs\xbe\xf4cR9/\x1c=\xf6U\x93\xb3\xfc\x8aJ\xc7\x90\xfeQ\xecq\xd3\xb5\xa0\xd5\xba9\n\xac\xf6{i\xd4\xa37\x8c\xd6\xfc\x88+]V\xccC\xac\x13N\xbe\xf2h.\xcc~\x1a\x12Vo\x0d \x84<;\x89\x1e\xa6\x89\xb4\xc8\x1b6H\xe0\x08\xf9\xaa9\x01J\xb2\xed\xb1\x1b\x00?#\xd8\x85\xd9\x15Q\x8d{\xc5\xf0\x0ef\xea\xb4~;\xbd\x1b}[\xe6 \xb0j#u\xad\xc2\xc2%\xacS\x15#f[\xa1t0\xd2\x0c8\xf7\xd7\x1e7B\x05\xab\x15C\xca\xc97\xaf\x81\xde\xc8\xb5E\xa5\xae\xabD\x82>\xcb\xb9\xf2\xbc \xcd\x96\x0bC\xc7G\xb21\xfa \x9f\xf1rSP\xa6\xd1\xc1gN$\x0fX\xd0R\xa5\xa3\x93\xb1\x94\x8c\x14\xd9\xa1h\xed\x85\xeb\x03\xbf\xfc\x9b?x(\xbbE\xa3\x11\xb2\xab\x0e\x8c\x8f\xc9Z\x1e\x03\xab+\xda\xcf\xba\xb7P\xde]\xbc\xa9\xe6\x06\xd4C]\xa1\xf9\xab\xc3\x01q2\xda\xfd\xf2\x86\x1fCW9\xd3\\M\xd2[\xd9\x8c\xe5]o\xab\xa6\x97\xe0\xd1\xfc\xd1~7\xe6\xcd\x80\x15\xdd\x1b\x11\xa2i]\x13\x8c%\xad\xf2\xd6\xfc/-<\x82\xdak\xfe\xea\xa0\xff\x16\xf0\xc7J\x88u_]Sy Z\xd2\xb6\xbb\xe8J\x98\xf4\xad\xc3V\x9b\x02D\x13\xcc_\xdb\x1d\n\x96\xef\x8b\\/c\xfdo\x1f\xbd0\x98u=\xdf\xbf\x8e\x9c\xa9\xf2\xd5J\x1f\xc1\x15\xd8\xd3\xa3v\xcex\xc7+\xd9\xe03=\xaf\xbdA\x08\xd4\xee\xcfj\xdc\x9b\xfc\xea$\x9cW\x0eOLTz\xc3.\xac.\\\xde\xa5\xd6K\xd8\x1d4\xf5\x7fl\x0b\xad\xae\x85\xde\xf5\xf9?\x15\xe7\x9d4\x8dT;\xbf#\x1b\xfa\x9e\xfe|\xa0\x0d[\xc8\xdf-\x85u\xc9\xa3y\xb1\\\x90\x14vU\xc3\x80\n\xe6\xb8\xa0\x9c/\xe0\x8c\xf5\x0c\x9e{v\x0b\xb9\x8d\n\xca\xd7P*\xa6qY\xc1\xae\xaa\xa9^\xb3L+\x9b\x18\xab\x13\x85\xe9\xd8\xb3|;\x96T\xd9\xe7Zw\xdf%x\xd5\xcbl/\xe6\x99\xad\xbd}A\x8b\x83\xcd\x85\x9c\x80\x96\xc7\xaf ?\x99\xb1\x13\xc8Y\xa3\x1d>\x1a\xb1\x8aJ\x8b\x9fP\x91]\xe7\xcdp|\xd8\x1a\"|y;\x87Tlh\xdc#\x17V\x8d.\\n\xfbC\x8a\x96;\xfa5E\xcb\xc5\x9d\xb7 \xc2)T\x0e\xd6\x14-\x17\xe1\x00\xca\xe6p\xfe\x8cq\xfcL\xd1rgt\xf2\x0cq\xf0\x0cr\xeeL\xd1r\xa7:rF8q\xce\xe2\xc0\x19\xee\xbc\x99\xa2\xe5Nq\xd6\x0cq\xd4\x8cp\xd2L\xd1rS\xb4\\\xcf))\xd8\xe92E\xcbE9X\xc68W\xa6h\xb9\xb6\xc7\xbcN\x94\x01\x0e\x94\x988\xab!\x8e\x93)ZnL\xc0Y\x9fcd\x8a\x96\x8bw\x80D:?b\x1c\x1fqN\x8f)Z.D:6\x0685\xa6h\xb938-z\x1d\x16c\x9d\x15\xad\xfbf\x8a\x96{\x84\x14-7E\xcb\x1da\x8e\xc8\xa5XG\xc2`'\xc2 \x07\xc2\x14-\x97\xc59\n\xa6h\xb9\x1az\x17\xee\x18\xbe\xddY\xe9\xa9X_\x9f\x1d\xbb\xb0\x0d\xae\xd1\xca\xf1\x8d\x96dYH\xd5\x934\xadr\xb1\xf5\x8c\xe3\"&\xae$\xc8\x9a\x82\xe2\x82\xd87\x9e\xc9w{\x7f\xab\xe9\xcf\x87\xbc\xa6\xabg\xb0&\xc5\xc0:h\xd4U\xe8*wv\xf1\xc5%\xbd\xb5U}diV\xa6e\xa2V\xfd\x9a\xb2C]\xca(\xa7\xd2\xda\xa9\xac{\xad\x1dZ\xe8\xef6#E\x97h\x01o\xa8\xcf\xb6\xfc\x96\xef\xc4U).\xf8\xd5z\xddP\xe1@2\xac.\xf4\xec\x0f\xbd\xc0\xbc0\x8f\xb4,\xda\x1c\x83\x10e\xfdlr\x1ciRTc\x84(\xcb\xc3\x8e\xd6y\xa6\xff&\x16\x08E\xdf\x90\xaa\xac--\xb5\xe0\x0fe\xab=\x1c\x1d\xb4\xcfDi\x05m\x9aN\x84R\xdfvh\xb8\xa8/i\xa0<\x87\xc5\xdf\xb1pG\x96z\x83x\x8b|\x97c\xa5+\x9e\xd5\x14\x08\x9b\x01_j\x96\xfb#XqC\x0e\xc5\xc8\xe2,\xf5H\xfd?\x9d\xad\xa1\xa0k\xa6 \x0f\x8a\x01\xa1O\xb3B).'\x88\xfc\x08\x97\xf3\xf2V\x92\xdd\xc8~\xff\x80R\xec\xd3\x10\xba\xf7]\xb2\xec\xbd\xc1%*Fh\x05\xac>P\xe0\xff\xc8\xcbU\x9e \x96\x9a2\x8f) \x8a\x07\xd5@\xea\x17\x97\x97YqX\x8d\xce\xaaD~\xa5\xb5O\x8ezLX\xbb{js\xbel\x0eX=\x83\xc2>\x9e5\xa3\xde\x1a5A\x1c\xefk\xda(^\x82\x98^\xdd|\xe4Sn\xa1fS\xbe)\xab1CV\xcf\xc6\xe1'\xa4d\xa6v\xec\xd8Q\xdc\xd0\x815\xbd\xa2\xf5\xe0UW\xe7\xa9\xa7\xc7\x1d\x97\xf7h,55\xcf\x84A9\xfc\x1bTq.\xeb\x15\xad\xc7W #\xef\xf77\xb3J#>V\xfd\xe9\xdf\xda\x7f\x8bX\xdf\x7f\x97\xc58\x83\xd7\xb7\xb1\xeb{\xd4\xc1r]\x89\xa1'\xf7\xe6\xee\x07\x15+\\w\xbe9\"\xfc/t\x9b?\xf7\x80\xf06\"J\x14)\x0e\x17\xd6\xddkR\xc1\xd8$\xe6\x0e\xe8\x1e\x1e\xce\x1d\x17\xcc\xdd)M\xf0J\x14\x10,\x1d\x84D\x01-U\x88\xe5\xea8\xca\x0b\n\xdf>+_\xc7\xcb\xd8\x99\x9b\xb3\x83g\xed\xcc\xc4\xdb\x89c\xee8\x8a\x0b\x0c\xd8>\x91\xbd37\x7f'\x90\xc133\x87'\x8c\xc5\x13\xc8\xe3q\x8d\xe1\x96\xe1\x83e\xf2\xcc\xcc\xe5A\xb1yf\xe4\xf3Le\xf4Dqzfb\xf5\xc4\xf0z\x1c\x85\xa1C\xb2\xdf\x01\xb7\xe7\xee\xd8=w\xc2\xef c\xf8\xcc\xce\xf1\xc1\xb2|f\xe5\xf9\xe0\x99>\xc1\\\x9fp\xb6\x8fw)\xc4\x05_\x9f\xcc\xf8\xf1\x06^G\x1d\xa8\x10\xbc\x9f\x90SW0\xf7\xc7\xb5 \xa2\xc3\xad\xe3\xea7#\x03(\x84\x0343\x0b(\x8e\x07\xe4\x1aA\xa8\x10\xeb\x91\\ Ki\x0c\x15^}\x1e>\x10\x9a\xd4\x82\xe0\x04\x05\xb1\x82|Qvc\x98A\xbe2\xad\xf6\xb1\x99\xf8A\xe1\xc2\xc4s\x84|m\x8b\xe0 E2\x85\xdc\x91\x9d\xfdl\xa1y\xf9B\xf30\x86\x10cc2k\x08\xcd\x1b\xc21\x87\xb0\xdc!\xc4\xc0 \xe7\x0f\x850\x88\x9c\x81\xd2ga\x11\x05\xf2\x88\xe2\x98DA\\\"\x9f\xd0\xdd\xc1\xd1=\xef\xe29E\xf3\xb1\x8a\xbc\x95\xb2\xce\x9f\xf9\xb8E\x08vQ<\xbf\xc8R\x1c\xf3\x86B\x9f\x95c\xe4c\x19E\xf2\x8c,e\xf9C\xa0\xfb\xb9F\x9e\xf0\xe7s\xf3\x8dfg\x1c\xd99Gs\xb2\x8e0\xbc\xa3p\xe6Q\x10\xf7(\x82}\x14\xca?\xf2\x844w\xd7\x0e\xcb\x08\xc1\xb2\x90\"xH\x81L$Gsc\xd8H\x96\xa2\x10A\xccc\x18I\x8e!\xef\x0f`>#+\xc9\x1b\xbc\xfc.\x98Is\x8d\xc5\x00vR\x08?\xc9|<p\x05&gFks\x1f8-@LHr\x11z\xdcR\x1e6 \xb9+\x1c9\xae\xe6Q\xa1\xc8\x83\x03\x91{\xb5F\xae \xe4\xa1!\xc8\x83\x02\x90\x87\x85\x1fG\x07\x1f\x8f\x08=\xee\n<\xee\x95\x1f\xae\xb3\xa7\x86\x1c\xc7\x04\x1c\xc7\x85\x1b\x9f\xa9As\x05\x1a\xc7\x87\x19\xef\xd7kR\xc5\xdb\xa7&\x05\x18\xf7\xc4\x0fe\xd3m\xec\xde\xc0\xe2\xde\xae\x04\xb4T`\xc6\x90\xe2\xde\xc8\xaa\xfep\xe23\xb7l\xe6@\xe2\xe80\xe2\xde \xe2\xe1\xed\x9c\x1a@\x1c\x1f><\xbcn\xce>\x98-p86l\xb87hxx\x03\xa3\x03\x86\xe3\xc2\x85{+\xe4\x0f-\x89\xeb\x8f9\xc3\x84O \x12\x8e \x11\x8e\x16\x8a;Xk\xa8`BB\x83cv @\x07\x06\xf7\x85\x05\x1f\xb4dzP\xf0\x196*|8p\\/@x(p\x19\xee\xdbQ\xde\xa4@\xe0^\x19\x01JN\x80\n\x01\xee\x1d\xf0\x1axa\x02:\xf8w?\xb8\xb7\xa7@txk\\\xe0\xef;jvH\xc8o\xb9\x96y\n\x9c#\xe0wP\xb8\xef;\x14\x0c*\xd0w\x1b\xc8\xdbS\xa07\xcc\xb7W4\xa8 \xde(q\xe0\xf6\x04\x08\x12\xda\xcc\xc1\xbb\x1d\xa1\xbb\xd1\x81\xbb\xbd\xb2\xc0\xb5n\xc6\x90\xdd\xc1\x01\xbb\xd1\xe1\xba\x83\x83u{\x85\xe3?M\xf9\"t6\xf3\x06\xe9\x0e\x0b\xd1\x8d\x08\xd0-E`\x0f\xcf\xed\x0c\xce\xed\x95\xdf,ANg\x0b\xca\x1d\x12\x92\xdb?-\xe2\xc2q\xab@\xcb\x86\xf2\xec\xc1\xb8\xe7\x0c\xc5\x8d\x0c\xc4\x1d\x1c\x86\xbb\x1fr\xdb\xdc8{\x10\xeeyCpc\x02p\xcf\x1b~\x1b\x11|;*\xf4\xb6\x0e\xb3m*\xcf\x1bx;.\xec\xb6Rn\x1b\xca\xb3\x07\xddF\x87\xdc\xc6\x05\x01\x0e\x8e\x01<*-\x85\x00\x96H!\x80\xdd;\x93\x7f\x85\x97\x88r+J!\x801\xceD&VI\xb0+Q\x8c#Q\n\x01<\xa3\xfbP\x88\xf3P\x90\xebP\n\x01<\xd5a(\xc2]h\x16g\xa1pW\xa1\x14\x02x\x8a\x8bP\x88\x83\xd0\xcc\xeeA\x0c\xe5\x1c4\xa3k\x10\xd61\x88\x85\xb9\x05\x85:\x05\xa5\x10\xc0\x03\x04\xbb\x01\xa5\x10\xc0(\xe7\x9f\x18\xd7\x1fH!\x80-\xf0\xba\xfb\x048\xfb`\x82\xc7\x868\xfa\xa4\x10\xc01Qt}\x8e=)\x040\xde\x99\x07\xe9\xca\x83q\xe4\xc1\xb9\xf1\xa4\x10\xc0\x10\xe9\xb8\x13\xe0\xb6\x93B\x00\xcf\xe0\xa6\xe3u\xd2\x89u\xd1\xb1\xee\x9b)\x04\xf0\x11R\x08\xe0\x14\x02x\x849\xc2\xb1b\x9do\x82]o\x82\x1coR\x08`\x16\xe7l\x93B\x00k`B\x00\x0f\x83\x0c\xf6\x8a\x1a\\\xa7\x87O\x0d\x88?G\x11\x05\x07\x81\x82\xfb\x8bS.\xb2\xdd\x0eV\xc4.\x98\"\xab\x0f\x9e\x90\xa13\x86R<\xed\xd9\x97e\x91\xce\xb0\x8a/{\xd6h\x1daQ\x1be\xad\x01\x16u\xcbmj i\xb3&\x85v.\x02RJU\x93\xa4o\x9cH\x8d\x9c\x14\xa4T\x1deU\xd9\x1c\xf8\xf6\x0d\xdb|\xb3\x1d\x13\x07\xfav\xe6\x0di$\xadd\x90GX\xee(y\x03y\xa9\x8c\xf42\xd0\x96\xae\xa99\x04d\xaf\xf1\xea\xb9\xcf6\x1ad\xd7\xab\x17\x86:j\xb0\x070O\xfaXY\xde\x0f\x00\xe2#0\xf0\xb1q\xc6\xae\x94@h\x04\x01\xa9X\xeb\x9e\x1d}_\xb3\xc2t$\xcaaDK\\Y\xf6\x83\xfep^\xdf\x7fs\x8f\xbe?\xa1\xb9\x08R\xb1\xcbIK\"\xa6\x8d\x03o,u\xaemI}\xea\xc7\x9af4\xbf2s\x0f\x8f\nt\x08\xad[M\xba\xa3\x84\x94\x98`\xc4Hn\x94tn\xdb\xf2\xd5jyk\xa7o\x01\x90L\x90\xf9T\xe0c\xfb\x0e]]\x97\xf2\x8eW\x95\xb4\x1bV\xca\xe6 \xacnU\x96\x93\x96\xde\xe3\xea\xa9\xab>o\xa6Z\xf3\x12\xed\xdf\xf5t\xe9\x92\x14\xa4\xcc<\n\xfb\x19\x96\x84\xb2\xb2\xbak\x02v\xcc\xc8\xddfb1\xd8Q\xf2\xa2\xca\xcb\x1e\x8bN\x0c\x88\x8eyUV;\xbd\xa5\xf1\x0e$\xa5\xaa\x9c\xcb\x9a\xf3\xe6\xed\x87W\xcf\xc4\xadP\xb1\xab\xda\xcd\x90\x94pV2u\xf0l\xed.\x8ds\x10\xa8S\xa9b\x15\xd9\xa7\xab\xf6\x0ek\xda\x83\x0e\x1f\x84\x9bjS\x89#_\xac\x15\xa3\x9bD}n\x14\xff\xc2\x15)D\x00\xfd\xaa?\xd1\xe8MF\xf72B\xbf\xb1\xb8\x9c\xf5,\"\xe6\xd6\xa8\x91:>\x82\xab\xc5A\xc9\xae\x91\xd9\xf1\x9bC\xcet\xc0scaY!\xa2\xfc\xb7[\xf4X\x0c\xdd\x91\xe5x\xb8\x0d\xc4\xd3;\xdb\xf4O\xa4\x83 \xeb\xeaj\x7f|\xe6\x90p\xce1\xf7\xec\xd2\xc9\"\xec\x84$\x14\x95\xd8jk\x1b4\xf5\x7fl\x93\xa5MY\xa16\x9e6{\x05\xecI\xd3H\xfbz?\xa3\xbf\xfc\xddR\x98<m2Oz\x8b3\xd6\xbb\xf7\x89L\x02\x8e o5\x15\xd6\xfe\xb2\x92\x83CY\xf7M#_\xf0\x0d'\ns\x02\xab\xb8\x0d\xb4o\xcb\xbc\xd0\xb3~\xdb\xda\xdb\x17t?g\x81\xe5\xf1k\"\x02\xdc\x9f@\xce\x1a\xcd\xb3h\x04\xfbUF&\x10\xf7\x81\xeb|\xe4F\xa1\x1ar4\"\x86\xac\xc9\xde\xb1\xddK\xa04\x15tj\xbc\xfd$.\xa5D\xe2R\xce\xb3\xd1'.e\xe2R\x9a\x91\xb8\x94\x02\x89Ky\x8c\xc4\xa5L\\J\x1b\x12\x972q)\x05\x12\x972q)\x13\x972q)%\x12\x972\x86\x8e\x98\xb8\x94\x89K\xd9!q)\x8f\x91\xb8\x94\x89K\x99\xb8\x94\x89K\x99\xb8\x94\x89K\x99\xb8\x94\x89K\xf9\xa5p)\x8dI\xba\x87 \xf5]\xe6geo\xd6\xe9\xe2\xfb9\xb8\xa5 T\x99\xf7Z\xe3\xb4P\xe0mF\x9a.\xd10\xbeT\xf9\x0c\xce!\xf9\xff\xef:\xe5\xff@\x9dc\x10\xa2\xac\x9fM\x8e#UJ\x97\xbf\x9d@y\xd8\xd1:\xcf\xf4\xdf\xc4\n\xa1\xe2\xf2H]\x96\xca\xe0.M\xc4\xad\xfap\x9c\xe2_\x94V\xf0\xa1\xd3\x8aP*\xdc\x0e\x0d\x17\xf5%\x0d\x94\xe7\xb0\xf8;\x16\xee\xc8|o\x10o\x91\xefr\xact\xc5\xb3\x9a\x17a\xb3\xea\x1b\xb3\xc8\xab_\x07\xa5\xed\xa5\"\xa9\xff\xa7\xb35\x14t\xcd4\x0bB\xd1\"\xf4qVh\xc5\xe5\x04\x91\x1f\xe1r^\xde\xca8ed\xbf\x7f@)\xf6\xb9 \xdd\xfb.Y\xf6\xde\x80QZ~\xfe\x8f\xbc\\\xe5\x99\x085\xa6\xeccJ\x82\xe2A5\x90\xfa\xc5\xe5eV\x1cV\xa3\xc3*\x91_i\x0d\x94\xa3\x1e\x13\xe6\xee\x9e\xde\x9co7\x03\xaa\xcf\xa0\xb0\x8fg\xcd\xa8\xb7FM\x10\xe7\xfb\x9a6\x8a\x98 \xa6W7\x1f\xf9\x94S\xb4B\xc87e5\x0e_\xa8g\xe3\xf0\x13R2S;v\x9c\xe1\xc2\xd0\x815\xbd\xa2\xf5\xe0UW\xe7\xa9\xa7\xc7\x1d\x97\xf7\xb8-55\xcf\x84A9\xfc\x1bT\x05\xcc\xabW\xb4\x1e\xdf%\x8c\x81\x19\x7f3\xab4\xee\xc8 \xe0\xf4oC\xe2\xf2\xdf\xe57L^\x01=b\x1d\xda\x17\xa0\xe3\x9c\xc2\x9e\xe4\xb5\x91p\xffr\x1cQ\xeeK\xa2\xd9\xdb\x88+Q\xc4:\x1fY\xdeY4x\x8b\x870\x9a<\xc2\xd4\x83\xb3\x97\xe8'\xe7\"\xc8{\xe9\xf1\x01\xe4\xf8\x99\x1b9\x1f-\xdeK\x8a\xf7Q\xe2\xc3[6\x9d\x0e\x8f\x13\xd4\x9cTx\x1c\x11>\x9c\x06\xaf\xe8\xee\x96\xf20$xg\x07: \xf0\xb3Ls'\xf5\x1d16|\xb4wo\x11\xb8\xb107\xe1}N\xba;\x8a\xec\x1eNu\xf7\x0b&\x9e\xe6\x0e\xb9i\xc4\xb8I\xee3R\xdc\xdd\x04ww\xc3\xc5\x81\xc6\xdcrW\xf0\xd3\xa3\xd3\x83F\xc7\xd8\xedj\x91(\xbb\xa3_\x13e\xd77,;$\xcan\xa2\xec\x9a\x91(\xbb\x02\x89\xb2{\x8cD\xd9M\x94]\x1b\x12e7Qv\x05\x12e7Qv\x13e7Qv%\x12e7\x86\xf5\x9a(\xbb\x89\xb2\xdb!Qv\x8f\x91(\xbb\x89\xb2\x9b(\xbb\x89\xb2\x9b(\xbb\x89\xb2\x9b(\xbb\x89\xb2\xfb\xe5Qv\x87\x14\x12[\x9d\x87O\x0d\xea\xdc\xb1\x91\xee\xb8\xce\xf7\xc5\xd6:\xed\x12\xdb\x8e\xc9C&\nW\x8f\xcd\xfcQ\xbfh\xa0u\xf5\xf2\xcbzy]m\x81V~\x97\xe1K\xea\xb1\xcf\x96\xe8%\x05p\x17\xdc.\x1f'\xc9\xab\xacs\x0cu/\xdd\xc8\xcd\x9cB\xb2\xa6\xc2j\x18H\x88r\xb3fh\xc9j\xa7%xb\xfe\xe6\xc9\x11'\xb3\x9aJz\xe0\x96\xe6\x9b\xed\xd4\xa0\x91\x00\x98\xbc\xdb\x12\x18%\xa8\xc6\xa8\x96\xbaG\xd4\xff\xc9\x9d\x98\xff\xa1]\x06\x9c\xa5\xb1\xaa\xba\x84}A2\xa3rV\"\xab\xf8\xae+\xbe\xe9NX\x1f,\x17\x7f\xd2\xfa@\xd9\x0ck\xaaes(\xf3\x1b\x99\xbc\x9e/\x868\xc1tE9\x94\x1be\xcerR\\x\x02\xa2\x02^0!\x8d\x1d}}\xb0U*\x02\x9ez\xc4ax\x05\xb5\xec\xae\x0e\x85\xb4\xea)\x8a \x10\x86\x12\xc1\x1d5\xdd\xd1\xa6\xf0:\xf6\xd3\xc7\xcfPQD\xd0F \x15\xf1\xf0\xac\xccja\x15\x92)\xdf]\xac\x93\xbc\x11\xab\xa4\xbd\xbb\xba\xa6\xf0\x05\xa0*V\x175]_d3\xc4\xb8\x85\x80\xe5\xca\x17\x93R\xe2\x9c\xd5\xb9\x88\xd5\xbe\xaf\x9a\x9c\xf1\xfe\xca\xd7\xbd6>\xee\x9fT\xf8\x85gI\xa9\xdd> \xe2\xbaY\xed\xf7:;7\xa35\xbfo\xcb\xa8\xf363#v:\x19\x0e9\xafx\x1d;nc\xd9\xcf\xba\xef\xdah@\x1a\x95jZ\xd0+R2\xd8QFV\x84\x11\x04\xe5Vm\x90\xd2\xab\xa1\xbf\x82\xf7\x99\xbc\xea\xa1\x18b\xa2\xe9\xd0\xd8\xb0J\xa4\xe0/\n\xa1d\x81&/7E\xef\xa8\xf1\xd8$\xda\xaeb\xfc\xbfF\xde._h\xdb\xd2\xba\x83'\xbf\x0c\x96b)~*\\1\xe8\n\x8a\xbcaw\xc944\xbd~j:\xd5\x8e\x1eL\x0cD\x85\xc4@L\x0c\xc4\x0e\x89\x81\x98\x18\x88\x1d\x12\x03\x91%\x06\xa2\x19\x89\x81\xa8\x91\x18\x88\x89\x81\x98\x18\x88\xc8SRb \xb6H\x0c\xc4>\x12\x0311\x10\x0dH\x0c\xc4\xc4@\xf4 ?1\x10\xad\xef$\x06\xe2\x00\x89\x81\x98\x18\x88\x89\x81\x98\x18\x88\x03`\xd9`\x89\x81(\x90\x18\x88\x89\x81\x98\x18\x88\xd3\xea<'\x03\xd1D2T\x85\x9bX\x86=\x0dH\x9bK\xd1`.m\x0c|\xc3^\xf9b\xc3l\x0b:\xe2\x85\xd9t._Jvy\x93@\xd4\x0b\x9f9-\x92\x8f\x83\xcf3\xcb\xbc\x8f\xba\x88\xd2Db\x94y`\xfafd\xa87O4;$+s\xd6\xa6\x05\x926\xfd\xe5\x98\x9b\xe6\xa4s\xfa \x9d\x1eJ\xa7wPI\xf8\x86\x96D\x00\xb1\x13\xd5\x13\x12X\xb6\x14\xbe\xe7$\xe6%x\xe2(\x9eA$\xcf\x08\x19a\x88\x9e\xc1r\x9a\x8f\xec\x89\xa3{\x06\x11>\x03\x84\x14\xd6\xec\xd9h\x9f\xd3\x88\x9f(\xea\xe7\x9d \x01\xcb\x0f\x9d\xa5\xd7\xb1\xfc\xd1\x80\xd6\xa29\xa4X\xb2%\x84\xd1L=e\xb9I\xa8\xd14\xd4\x08\x01\xcd'\x9f@:\xaao\x00RZF\x10RC\xc6\xf9\xac\xa4\xd40Z\xea\xac\xc4T\\\x9bg#\xa7\xa2\xe8\xa9\xd3\x08\xaa\xd0\xbb@\x1c\x8f\xf7Ak{7\x8d\xfeZ5\x08\x00\xaf\xb4\x88\xc7\x07\x7f \xe7A\xc8}\x00\xd2\x89,\xec\xdcG\xe7d\xf4\x9a\xf5\x07M=\xca\xec\xaf\xd1\xa6\xd3P;t\x9bY\x03\xf6\xa4i\xe4\xee#\xf3o\xfc|\xa0\x0d[\xc8\xdf-\x85\xc9\xbb\x1f\xf3\xa4\xde8c=\x15\x93\xc8r`\xa3Q\xf2\xdb%\x15#\xbb\xacd\x94TE$2\x0dd\x11\x85\x7f\xa20\x1dK\xbeo)k\x93\x00\xd8\xb2B\xf4\x886\xb6\xf6\xf6\x05\xdd\xcf\xa7`y\xfc\x9a\x88\xe0\xfb'\x90\xb3FS\xba\xf8J)\x07\xf3J\xb2\\\xae\xf3\xe68\xe2\xbe\x87\xc1\xed\xbcJ;I\xdd\xa3\xd2\x0c4A\xc9\xf1vk/\x12\xbd[!\xd1\xbb\xe7\xb9v'zw\xa2w\x9b\x91\xe8\xdd\x02\x89\xde}\x8cD\xefN\xf4n\x1b\x12\xbd;\xd1\xbb\x05\x12\xbd;\xd1\xbb\x13\xbd;\xd1\xbb%\x12\xbd;\x86!\x9d\xe8\xdd\x89\xde\xdd!\xd1\xbb\x8f\x91\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\x9d\xe8\xdd\x89\xde\xfd\xe5\xd1\xbb{\x89\xc6/\xe9\xad\xad\xce#3\xb5\xb2K\xeb\x94\xf7\xfd<\xe2\xd2T\xaa\xcc{\xad\x11[(\xf06#M\x97h\x18_\xaa|\x86\xe9\xb7|+\xaeJq\xc3Wi\xdb\xab\x1a\x86\xd5\x85\x9e\x01b\x86\xbc\xecG\xaa\x1d\xa3:\xc7 DY?\x9b\x1cG\xaa\x94.\x07=\x81\xf2\xb0\xa3u\x9e\xe9\xbf\x89\x15\"#%o\x8f\xd4e\xa9,\xf4\xd2\x94\xdc\xaa\x0fG'm\x99\xc5\xbe\xe0C\xa7\x15\xa1T\xb8\x1d\x1a.\xeaK\x1a(\xcfa\xf1w,\xdc\x91\x99\xdf \xde\"\xdf\xe5X\xe9\x8ag5\x7f\xc2f\xfd7f\xc2W\xbf\x0eJ\xdbKER\xffOgk(\xe8\x9ai\xb6\x84\xa2O\xe8\xe3\xac\xd0\x8a\xcb \"?\xc2\xe5\xbc\xbc\x05J\xb2-\x90\xfd\xfe\x01\xa5\xd8\xe70t\xef\xbbd\xd9{\x83KT\x8c\xd0J,4\xc0\xff\x91\x97\xab<#\x8c\xb6\xf61%A\xf1\xa0\x1aH\xfd\xe2\xf22+\x0e\xab\xd1a\x95\xc8\xaf\xb4\x06\xcaQ\x8f swOo\xbe\x16\x19\xf6{\x94\xa0Aa\x1f\xcf\x9aQo\x8d\x9a \xce\xf75m\x141AL\xafn>\xf2)\xa72lC\xbe)\xabzdu\xd0\xb3q\xf8 )\x99\xa9\x1d\xbb\xac\xaa\x82\xf6\xd2\x7f\x1b:\xb0\xa6W\xb4\x1e\xbc\xea\xea<\xf5\xf4\xb8\xe3\xf2\x1e\x07\xa6\xa6\xe6\x990(\x87\x7f\x83*\xe6\\\xbd\xa2\xf5\xf8.q\x9e\x97\x19}\x06\xd2\xdd\xe6i\xb3\xba\x84_/~\xfb\x9bY\xa5\xe1\xf3\xf1a7\xad{\xcf\x8av\xcc\x8e}\xd5\x1c;\xed|\xb8y)\x1e\x01\xf9\xa4Z'jR6D\xa8fu?\x0eD\xfb\xd8\xd8\xc8\x7f}\xac\x9e\x1dx\xbe\xe8\x0f\xfcB\xb7\xf4>\x9c\\\xfe\xff5]?\x83\xc7\xff\xbf\xd3\x9e\xc1UIg\xc1n\x16J:\x0b]7\xbdW?\xfeEW\x85D\xe8\x19 \x11zp\x06!H\x84\x9eD\xe8\xb1>\x99\x08=\x02\x89\xd0s\x8cD\xe8I\x84\x1e\x1b\x12\xa1'\x11z\x04\x12\xa1'\x11z\x12\xa1'\x11z$\x12\xa1'\x86\x13\x93\x08=\x89\xd0\xd3!\x11z\x8e\x91\x08=\x89\xd0\x93\x08=\x89\xd0\x93\x08=\x89\xd0\x93\x08=\xff\xec\x84\x9ee\xb5\xea\xefpyy\xf4'+\xe9f&\xeb\x17\xbb\xb9X\xde2{\xd09\x8b\xc6\xc2\xa9\xab\x18\xe8\x02\xf4\x074O\xa2&\xd7&\x1b\xa8\xe1\xcd\xa3\xd0\x15\x9dIQDJhKT\xff\xcbn\xbb\xfcrpN\xeb\xab<\xa3\x8b\x91\x89T\xa3\x1fh`\xf4\x93\xd9\xfe\xaa\x1e\x1a\x9b\x87\xd5g\\\x06\xe2S\xb2\xcb\xcb\na&~\xce\x9fkm\xc5\xa4\x04\xf9\x87\x9e\xb0d\xf4E\x1d1N\x8a\x95Ub~\xcefK\x16\x1fU\x0f\xdc\x8fA9b\xd4\n\x91^\xfcwc\x8a\xf4b\x1d\xb7n\x15\xd5\xa0\xfd\xfdP\x17\xac\x17\x07f0\xc6\xc6\xe3f4\xe2\xa4 ]\xe3.d\xe0%\xb3y2\x9b\x1b\x80Q\xbbB2\x9b'\xb3\xb9\xf5\xc9d6\x17Hf\xf3c$\xb3y2\x9b\xdb\x90\xcc\xe6\xc9l.\x90\xcc\xe6\xc9l\x9e\xcc\xe6\xc9l.\x91\xcc\xe61\x96\xe7d6Of\xf3\x0e\xc9l~\x8cd6Of\xf3d6Of\xf3d6Of\xf3d6Of\xf3\x876\x9bK\x03\xa4\xd4\xa4\x05\x19\xa0\x1c\xfa\x8a \xfb\xa4\xd7\x02>z\xfdn\xad\x93Afqi\xbfv\x1a\xc4_\x89G\x94\xa5\xfb.\xfc\xa6\xe5\x07\xd4o\x9f\xad\x99\xfb\xde\xc9\x19\x9aZ\xd0\xe7\x1c\x88\x07\xc2h\x1aR\xba\xd3\x8c\xe8j\x08\xc4\x904\x92\xad<\xd9\xca\x0d\xc0\xe8Z!\xd9\xca\x93\xad\xdc\xfad\xb2\x95\x0b$[\xf91\x92\xad<\xd9\xcamH\xb6\xf2d+\x17H\xb6\xf2d+O\xb6\xf2d+\x97H\xb6\xf2\x18ss\xb2\x95'[y\x87d+?F\xb2\x95'[y\xb2\x95'[y\xb2\x95'[y\xb2\x95'[\xf9\xac\xb6rt\xf4gm\x03\x14\x96im\x85\x8d\xb0\x13#\xdc\xa7\xe5\xa7\xa4\xb7\xb46\x19\xdb\xdd\xa7\xc5Pc\xd5\xd0\x8dz6\x93\xf2\x17\xe4>}\xbf\xec\x85\x9ex\xe60\x0c\xcf\xcb_H\x16\xe3d16\x00\xa3q\x84d1N\x16c\xeb\x93\xc9b,\x90,\xc6\xc7H\x16\xe3d1\xb6!Y\x8c\x93\xc5X Y\x8c\x93\xc58Y\x8c\x93\xc5X\"Y\x8cc\x8c\xae\xc9b\x9c,\xc6\x1d\x92\xc5\xf8\x18\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xc9b\x9c,\xc6\xb3Z\x8c\xadf\x1c\x9f}r\xe6\xf0\xce\x03\x03d\xbc\xfb\xf4]\x98\x1f\x83\xcc\xe2M\xbe;\x14\x84\xb9\x1c\xa8\xcf\xd5#\xa0\x9fm\x80\xde\xd0\xec\xc0\xf8\x8aJ\x86&q\xbeW7,\xdf\x11\xf1\xe3\x864p\x90\xca\x06Y\xe6\xc0\xc8\xad\xcbU\xbf}\xb6\xf6\xed\x0di.\xf2r]\x1d\x8f\x9eAu\xf4cz\x1c\xf0\x7f\xd7;\xb9\x8c\x91eu`J\x1c]\xda~%\xcf\xa3\xb8\xf5\xe03W\xba\x8d\x95\xbc\"\xd7\xa4dte7e:\xf5t\x96\xcc\xfc}`ta\x00?\x90\xe6O\xa2\"Z&;r\x93\xef\x0e;8\x949\x13J\x9c\xeb\xaa\xbe\x84k\xa5\xac\x97:bv\x03\xac\xb2\x14\xb8\xa75\xaf\x9c\xe9D\xc2[\xcd\x85{Om\xfe\x814\x1f\x9b\xaeadW\x1d\xa4\xc5\x92w2\xc9\x984\xabeU\xa9\xec-\xc3\xa2\xa4\x0d\xc23\xa0\xe4C=Z\x03\xff?\xad\xcf\xbb\x9b\xa1\xb3\"\x8cL\x14\xa0U\xb5\x8b\x1b2/ #\xc2PU\xde\x8a\xdat\x19\xfe\x05\xddFo\xa5\xc2\xf0R\xae\n\x8b\xee\x14\xf4\nU\x95\x0b8c\xf0\xd3\xc7\xf3\x0f\x0e\xcdxA\xcb\x0d\xdb\xc2\xbe\xa6\xeb\xfcF\xce\xcf\xaa^\xf1+L\x05\x0d\xe5\xbb\x1b\xa3\xb26\xb2\x12\x87\x82\xe5\xfb\xc2\xa6K\xd6ul\xab\xd0XU /\xf9i'#\x8c\xae\x94\x91]\x1e\xca\x85\xb5\x9d\x9f|\xf6\xd5^,\x91\xab\x13X\x1e\x98\xa8\xa0\xb5\xc5\xbbfs\xd1r_\xf2\xb2a\x94Xm\xfdK\x9a\x11a\x85e@\x8a\xa6\x1a\x9e\xfb\x7fj6C\x12\x8d\xe5\x0ePT\x9b\xc8\xb1\x82\x1b\n\xaf\xab\xcd\xb0bE\xb5\x19\xac\xaa\xb1#\xc2\xf0\x00\xbd\xa2%sP?lt\x13pQN\xc07\x19%|\xd4\x13\xd0\xc5X\x7fE\x88\x9c\x830V\xe7\xcb\x831\x04H\x07_s%\x9c\x8d\x96@4]\x02#\x00\x89Kj`\x98\x8d\x81\x92\x85\x84\xd3\x9e\xd5!\xa0\xc4\xbc\\\xd1\x1bl\x89\xcb\xaa*(\xb1\x9b:\x01=W4^\xf1q\xfc\\\xf7\xb3XH\xa1\xc9\xcbMA\xb9\xec\x9eJ\x8d\xc4\x9e\xe4\xb5\xeb\x02\xc0A\x9a\xa6\xcaras\x91\xa6\xa7R\xce\x11\x9bN\x0c[MQA\xb9\xdd7@:\x9b=\xac\xe8\x15-\xf88\x10\x06h\xc2\x18\xc9\xb6=u\x85\xb5\xc0\xfe\x82\xc0\x1c*RM\x13\xfc>/\x85>\xe5\xbb\xa2R\xcaV\xfd\xcb\x8b-\xcd.?\xdc8\xf4\xd5\xaf \xa3\xf5I\xff\xc4\xdb\xc0\x8e\xdc\xf2\x0b\xea\xcf\x07Z\xe7t\x05\x07.m\xbeZ5T-*f\x89\xe1\xe4%\xa4\xd5\xf4\xec\x89\xd0\x14y&\xaczR\x90rv)\n\xce5\xad\xf9M9g\xccJ\x07X\x1d$\x89K.\x9a\xb6\x96vk\xa9{\xd5\xeco9\x9f\xf9\xe2\xe9\xe2\xee\x01~\x8a\xe3\xbaM\"\x94\xc7\xe7]L\x8f\x8d\xb9\x0e\x8b\xc0\xdc|>\xf0s\xfa \x82\xd7\xe7n\x00a[4\xb7\x0f\xe6\xe2\xf7A$\xc7\xcfY \x17.\x9a\xe7\x07\xd3\xb9~\x10\xcc\xf7s\x16\xa5xHA\x9c?\x98\x9b\xf7\x07\x81\xdc?\x08\xe5\xff\xb9Gv\xcb\x0d\xc4r\x00an\x1e \xe0\xb8\x800'\x1f\x10&s\x02!\x8e\x17\x08sq\x03!\x8a\x1f\xe8\x9e\x0e\x84\xdf\xfd\xbd\x1cA\xb8\x1b\x9e \xdc!W\x10\xee\x86/\x08\x81\x9cA\x88\xe3\x0d\xfa\x96`\x1cw\x10\xe6\xe5\x0fB\x00\x87\x10\xc2y\x84\x10\xc1%D,\x99_!\xf8\x840\x07\xa7\x100\xf70\xe4\xf1\xcc\xab\x84\x92\x089\xc5\x05\xf3\x0c\x9d\xa5 \x0e\"\x82k\x08\x01\xb5\x9c\x91s\x08A\xbcC\x98\x9b{\x08\x91\xfcC\xf7\xb8j\xfc\x1cD\x88\xe7!Z\xcb\xe3_\xf4q\x11a6>\"\xe0iu\x80\xe1%B\x187\x11|\x84\x99H\x8e\" \xcauX\xebg\xe2+B\x94p\xf1\xbcE@\xb42\x82\xbf\x08\xb1\x1cFp\x13\xb5P\\F\x98\x99\xcf\x083q\x1a\x017b&s\x1b\x01\xcfo\x04$\xc7\x11\xd0<G\xc0\x0d\xa8p\xbe#\x04q\x1e\xc1\xc5{\x84\xb9\xb8\x8f\x10\xca\x7f\x84H\x0e$\x84\xf1 \x01\xd1 \x9ei\xe6\x7f\x1f\xcf\x8b\x84\x19\xb9\x91\x80\xa9\x9ac\x96\xcd\xc7\x93\x04\x0cW\x12&\xf0%\xad\x05\xf2\x07]\x9cI\x98\x9b7 ^\xee$\xc4\xf2'\xad\xa5\xc9\xbb\xbd[\xcd\xe1\xe7Q\x82\x9bK Q|JkQN\x9e%\xc4r-\xad\xa5)\xf3\x88\xfds\xf3q.\x01\xc5\xbb\x84\x08\xee%\x84\xf1/!\x86\x83 \xc1<Lp\xaf\"\xe0\xe1\xc6A\x00?\x0e\xcb\xc9\x84\x18^&\x84r3\xc1\xdd\xf0\x18\x8e\xa6\xb5\xb0\x1e\x03\x12;ep\\M\xe7\x84\x10\xd41\x07_\x13\xe6\xe5l\x82\x8f\xb7 n\xee\xa6\xf5\x9dXN'\xcc8v\x03\xb8\x9d\x10\xc4\xef\x04\xeb\x01\x05\xa7\x9b\x18\xd8\x07\x8fI&\xda\xc6\xd8=\"6\x1asY|E\x93\xd4\x9c\xe7\xe5mc\xdfi\x8c\xd4\xc8\xdf\x0f\x1ev'\x1c\xd1\xb4\xc4)qe\xda2z\x1c\xce\xee\xeb)6\xcc\x00)6\x0cv>\x85\xdb\x94\xb5\"\xceZ \xd6\x9e<\xab-9\xc5\x86I\xb1a:\xccj#\x0e\xb1\x0f\x07\xd9\x86Sl\x98\xa9v\xe0\x08\x1b\xf0,\xf6\xdfp\xdbo\x8a\x0d3\xc5\xd6\x1bb\xe7\x8d\xb0\xf1\xa6\xd80)6L\x8a\x0d\x83\xb5\xd1\xcej\x9f\x8d\xb1\xcd\xa6\xd80\xb6\xc7\xbc6\xd8\x00\xfb+&\xaaH\x88\xdd5\xc5\x86\x89 \xaf\xe2\xb3\xab\xa6\xd80x\xfb)\xd2v\x8a\xb1\x9b\xe2l\xa6)6\x0cD\xdaE\x03l\xa2)6\xcc\x0c6O\xaf\xbd3\xd6\xd6i\xdd7Sl\x98#\xa4\xd80)6\xcc\x08s\xc4\xe9\xc0\xda!\x83m\x90A\xf6\xc7\x14\x1b&\xd2\xce\x98b\xc3h<@l\x18d6\x91\xce\xc0\x17\x9fM\x84\xdd\xa8g7\xf48`\xca\x0f\x94}\xb8i\xa4\x83\xe6\x9a\xb2l\xcb\x17\xf9\x9b\x86\xef\xf3\x03\x1f\xdaA4\x94\xdeK\xea\xe7\xfb \x88\x82\x14Z\xafz\xda0\xfa\xf8\x17]-\x92Is\x80d\xd2\xc4\xa9\xc4 \x994\x93I\xd3\xfad2i\n$\x93\xe61\x92I3\x994mH&\xcdd\xd2\x14H&\xcdd\xd2L&\xcdd\xd2\x94H&\xcd\x18\xab`2i&\x93f\x87d\xd2<F2i&\x93f2i&\x93f2i&\x93f2i\xfe\xb3\x9b4e\xcc\xd7^\x11\xaek\xb4|X;\x18\x16y#\x8d\x00\xbd\x84\n\xe2 }\xbf\xeb\xbf\xdaE\x0e\x17I\x1b\xe0\xea\xd7\x8b\xdf\xfe\xeb\xe2\xe6\x99\xd8\xae~>\xd0\xfaV\xc7\x00?Q\x83@)\xe7[[\xc6\xa08\xa1T\xf8\x85\xa9r\xa2\xac\xfe\x9a\x98\x97\xcf\xe4\x1f{\x7f\xeb\xcc\xb4kR4\xfdqd6^\x19\xccV\x16uJV\x15\x05\x15\xb2\xf8^)SD\xf4\xf5#\xb9\xef\xc9&/e@\xfcKzk\x93\xff\xc8\xd9\xf3\x92\xde\xca\x10\xc9r\xebjC\xcd\xf3\xc3<\xd9\xb4\x1e\xa0\x8b\x92\xde\xb0\x0b\xfe\xb0PBnF\xda:!\x0c\x15\xf5\x17\xf8\xa3\xbc2\x14v\xbc[\xa8\xd0\xdc u\xdf\x02\xde\xf2\xe3DU\n-E\xb5^7\x94\xf1\x1b\xd2\xb0\xba\xd03\xa24\x94M\x15\xfc\x91<\x8d*)\x83\x10e\xfd\x90\xe3X5F\x88\xb2<\xech\x9dg\xfaob\x95\xcbH\xc9\xdb#\xf5q[Zj\xc1\x1f\xcaV\x05:\x1a\xdeg\xa2\xb4\x826M'B\xa94\x94\x01\x96/i\xa0<\x87\xc5\xdf\xb1pGI$\x0c\xe2-\xf2]\x8e\x95\xaexV/\x12\xacb\xa4\xe0B^JM\x9fV\xefK\xf5x\x7f\x04\xb36i\xc4\xa0\xb4\xbdT\x86\xf5\xfft\xb6\x86\x82\xae\x99\xd2\xbb\xe6LnC\xfaH.4\xfbr\x82\xc8\x8fp9/o\x81\x8a\x00\xdd\xfb\xfd\x03J1\xab\x0e%\xbb\x10\"A\xca\xb2\xf7\x86\xc8\xb2@E\xfbX}\xa0\xc0\xff\x91\x97\xab\x9c/\xaa\xad\x8dO\xa7\xdd\xe0\x0f\xaa\x81\xd4/./\xb3\xe2\xb0\x1a\x1d\xb8\x89\xfcJkd\x1d\xf5\x98X\xfbz\xba\x7f\xbeevm\x1a\x9b\x02>\x9e\x8d\xb3G\x8c\x9a \xee(5m\x14\xb9BL\xafn>\xf2)\xb7P\xb3)\xdf\x94U=\xb2\x9c\xe8\xd98\xfc\x84\x94\xcc\xd4\x8e\x1dG\xb77t`M\xafh=x\xd5\xd5y\xea\xe9q\xc7\xe5\xdd, 55\xcf\x84A9\xfc\x1b\xb4\x146e\x91\xe6c|\x1f2\x86\x10\xf8\xcd\x1dIC\xd4\xe0bi\xdf\xb2\xbe\x19\xa9\xde\x9f\xc2\xdb\xf7/_\xbd\xbf\xf8\xee\xbf.>\xbe9\x7f\xf7\xea\xc5\xd9\xf7g\xaf^>3\xfe\xb5U\xf3\x0b\xdd\xfc\xa1\x94\x07\xd9\xa6\xaaY\xd7xx\xcb\xff\xf3\xdd\xad\x9e\xf0C\xbd6\xab\xe0\xf9\xf9\x0b)\xc5\xbc\x81\x8c4ccA\xaf>\xcf\xcf_<\x1b\xfc\x9f\xb4\xf8\xf2\xaf\x0f%n-\xe1\xe5\xabA\x11\xfc\x7f\xdb2\xc6\xdd6\xb1C\x8e\xd6\x1dZ\x1ev\xc33\x89Y\xd4\xb6G\x9e\x9f\xbf\xb0\xfd\xc4\xdb1\xe8`\xc9\x97r\x17\xdf\x9b/\xd6\x192:\xd0\x88\x83\x87\xda)\xc4\xbf\xd5\xb2\xc3*)\x9e\x13h\x18\xa9\xf9Da\xf0\xf5B\xda\xd0Y\xcft~\x14\x0b\xaa\xb7 \x88\xdb\x99\xda>\xba\x07f\x91\xbcg\xc5O\x9be\xb4\xe8\xc6\xe5\xbbD'o\x0dz\xb6 \xf9\x1d\xddD\xe43bw\x94\x9c\x8b\x1b\xa1\n\x1b\xe6\xeb\xfa@\xcb\x15\xadwy\xc9\x1e7C\xe1}\xb89\xa7\xa4\xce\xb6\xfd\xe4vB\xb7$\xcb\xdd)#\xa7\xb8\x8d\x18W\xe5\xe1\xa2\xfc\xbb_\xcf)N;\x01\xd4\x92\x18\xef\xbb\xba\"\xab\x8c4\xec\xc3\x0d,\xf5\xbf\xfbB3\x12={o\xfdB\xd7\xf2>\x88\x9e,\x9cH\xc9n\xda\xf0=6ZbT\x9a\xb1-\xcd7[C\xfa3\xc0\x98\xd5{\xbcKK\xa26\x96\xb3\x82>\x13\xe3j)\xb2\xbc\xc8\xef\x19\x9ee7[\xd2l#+2\xe8\x92\x0f\xa3\xe9\xc2\xcb5i\x12\xb3jE\x9b=\xc9,\xb4\x02\xefGU\xdb\xde\x90\x9d,F\x07\"\x82\x17\xd5\xca\xa4\xbf13[\x01|\xecV@Iz \x826`\x12\xff\xa6\x91Q\x10\x9f]n\xfc!\xbe\xd6\xf2+ls\xa2\x0dY\x86\xd7jr}q\xd7I\xcax\xbfW\x07\xb6?\xb4\xe7\xfd^R\xa3\xc7\x0d\x14\xd5fCkxR\x93k\xf5\xb1\xaf\x16\xf0\x935\xb5\x96\x9d\xceRV\xe5\xd3\x15eb]\xcd\x1b\x96g\xa6\x16\x17\xd5\xe63\xce\xc3\xb3k6\x17\xde\xfcX\xfea)\xe1\x1f\x9c\xe0\xcaQ'\xe1\x1d\x04\xe0\xc9\x0d'\xe1\x13\xae\xc4\xc3\xa4L\x13Ez\x9eA\nB\x02\x97EN\x02'\x18 \x84x$\xd0B\x92\xc0\x8bJ\x02\x95cN\"@j\x12\xde<\x07}\x04\x96\x8e[\xaf\x86\xe82\xc5\xb5\x17\xb5\xb2\xeb`\xb8\xae\xc9~Ok\xb8\xde\xd2\xdaE\x8f\xec\xc0\x17\xc0Kz+l%\xf2\x18LjO\x02 \x0d\xd9\xd0F\xab\xad\xc5y\x9d\\\xcbU\xdea\x9a\x0en\xf9\xb9\xf8\x8e\xf4\xce\xd1\xad\xa6\xe5 \x9fZP\xc3\x051\x9c\xaf\xfb\xed\xbc\xf0\xb5W\xab\xe0/\xe9\xedi\x97\x91O\x11\xcbIM\xc7\xa2\xf0\x14\x87\x15T\x88\x98\xc2\x13\xcf9\x8bSI\xe9t\xfa\xb9\xa6\xday\x06\x853\xed\x1c\x044\xe6\xf9w/\xce~\x92\x06\xa9\xd7\xd5\xa6\x1b\xe6\\\xc6\x87\x8c\x1dj\xaa\x1b)B\x92\x962\x81\xa3\x83_\xccnD\x99\xad\x95\xab\xa86\xe6:\xe2j\x88=?\xf0\xc5`%\x8f\x0e\xf6Tc\xa83\x829\x955`\x16\x9c\xe1%\xa4\xb3\xad\xf7r0\xea\x1a\xe2\xea2[\xaaj\xe4\x11\xf5\xf9 M\xb3\xca\xd4\xae\x99\xd1\xc7\xf7\xb6>f\xca/\x1dUQ\x9dF\x1a\x96\xb7\xbej2\xcb\xe1\xca\xbbi\xfa\xb7I\xe6M\xa3\xe8\x95\x02\xa0\xe7\x05\xc4z\x869\xca\x0bJ\x9f8\xabw\x98\xd7?ln\x0f1\xbc\x8f\xd8L^bq~b\x8e\xe2\x02\x13&N\xf4\x15\x9b\xdb[,\xd0_lf\x8f\xb10\x9f\xb1@\xaf1\xd7\x18n\xfd\xc9\xb0~c3{\x8e\xa1|\xc7f\xf4\x1e\x9b\xea?\x16\xe5A6\x93\x0fY\x8c\x17\x99\xa30tJ\xc4;\xf0$\xbb;_\xb2;\xf1&\x0b\xf3'\x9b\xdd\xa3\x0c\xebS6\xabW\x19\xde\xafL\x1e#\x02<\xcb\xc2}\xcb\xbcK!.\xf9\xe1d\xff2\xafB\x00u\xa0Bx\x99\x85\x9c\xba\x82=\xcd\\\x9b :\xdd!\xae~3\xfa\x9b\x85x\x9c\xcd\xecs\x16\xe7u\xe6\x1aA\xa8\x14\x87\x91\x9eg\x96\xd2\x18*\xbd\xe1<\xdegh\x17*\x84\x07Z\x90\x0f\x9a/\xcbU\x8c\x1f\x9a\xafL+\x1b{&o\xb4pa\xe2=\xd2|m\x8b\xf0J\x8b\xf4KsgV\xf3\xfb\xa6\xcd\xeb\x9d6\x8f\x7f\x1ablL\xf6QC{\xa9\xe1\xfc\xd4\xb0\x9ej\x88\x81\x13\xee\xad\x16\xe2\xaf\xe6LT8\x8b\xcfZ\xa0\xd7Z\x9c\xdfZ\x90\xe7\x9aO\xe8\xee\xe4\x84\x9ew\xf1\x1el\xf3\xf9\xb0y+e\x9d?\xf3y\xb2!|\xd9\xe2\xbd\xd9,\xc51o*\xc2Y=\xda|>m\x91^m\x96\xb2\xfc)\x08\xfd\x9em\x9e\xf4\x83s{\xb7\xcd\xee\xdff\xf7p\x9b\xd3\xc7\x0d\xe3\xe5\x16\xee\xe7\x16\xe4\xe9\x16\xe1\xeb\x16\xea\xed\xe6I)\xe8\xae\x1d\xd6\xff\x08\xeb\xf3\x16\xe1\xf5\x16\xe8\xf7\xe6hn\x8c\xef\x9b\xa5(D\x12\xc1\x18\xff7\xc7\x90\xf7'\x10\x9c\xd1\x07\xce\x9b<\xf0.\xfc\xe0\xe6\x1a\x8b\x01\xbep!\xdep\xe6\xe3\x01\xcbw\xb4ad\xb7\x8f\xb4\x93\xe1\xf4\x00\x1f\xf2\xce<\xb1\xaf\xe9U^\x1d\x1a\xc9\xf5[\xc0\xf7U\xad\x08\x7f\x0d\xfc\x1b|}\x029{\xdc8z\xf6Z<+\x86\xff*'|\xad\xb6u\x89XAu\xfbtP\x16\xa5%\xb9\xaaXw\x0b\x975yM\x1a\xf6\xa2\xda\xedrf[n\xbb\xaa\xc2\xb7\xdf\xc2\xd7'\xd6\xed\x94\xb7\x80\xdf\xcd\x9b\xbc\x1150\x15\xe8\xa2)\xb1\xcf\x80\xfd\xc5<D$\xef\xd0\x004\xf9\xc8\xd7\\ \x04\xe1\x08\xd1t \x8c\x00$P\xf4\"\x94,$\x90\x94\xa2\x80\x12\xbd\x14= Y\xe2\xd8\xad\xc5\x04\xdc\x9c\xd6\x10\xfc\x92\x8e\x98$\x9c\n\x9b\xbc\xdc\x14\x82Y\xf4\xb4#\xcc\xf8\xf2\x9c\x92\xa6\xa9\xb2\\h\xb3T\x8e\xe6a\xf8\xdd1\xb0\xd5\x94\x04\x18a)i\xfal\x0dX\xd1+Z\xf0q \xcc\x00\x841A\xfao\x8fg\xd6\x02{\xf4 `\x8e+\xa4&\xd8~\x9f\x97\xe2\x0c\xf9\x9d 7\xf3\xadY\xff\xf2bK\xb3\xcb\x0f7\x8e\xfb\xfdk\xc2h}\xd2g\x114\xb0\x93\x8c\x8d\x9f\x0f\xb4\xe6\xd7\x00\xe9a\xc9\xb6\xb4\xa1jQ\x99\xa2\xb2UL\xa2\x96x\xa3\xd8R\xca\xbbX\x13\x83\xe4-+\xa3\x8d\xf8\xb6\xed\x94\xd1\xe7>\x08\xab\x88u\xc5\xec\xd7^{\xe9\x01\xdbV\xfc\x8f\xe6O\xcazY\x8aS[y\xa3\"\x8aT\xf6\x9b\x9d.}]W;\xd1PR2\xba\x80?miMI\x03\xaf\xab\xcd(\x11\xae\xac\xa3m,\xbbL%\xbd\x83\xff\x8e2\xb2\"\x8c\x9c\xb4\xdf\x17\x17\xbda\x13\xfd\xcd\x0b\xcc\xaa\xfb\xcd\xe2\xeb\xafO\xf8?~\xbb\xf8\x9d\xf8\xef\xef\x8e\xde\xf6\x8f\x91\x0f7-o\xdcC\xce\xaaiA\xafH\xc9\x80\xdd\x08*\xb9\xe5B\xace!\x8c\x81\xa6\xf60\xb2iz4;y\xf7U\xa1b\xa0\xa86|\xc9\x11\x87\xc3\x15\xcd\xaa\x15]\x0dG\xbf\xcb\xfd\n\xfa\xce\x1dS\xf2\x07\xf7=KR\xfe\xe0\x14l\xdb\xbbw\xfb\xe7\x99D\x14\xa5*\x05\xdb\xc6\x10\xa9f\xa1Q\xc5\x90\xa8R\xb0\xed\x19\xa9S!\xc4\xa9 \xdaT\n\xb6=\x95,\x15A\x95\x9a\x85(\x15N\x93J\xc1\xb6\xa7\xd0\xa3B\xc8Q3S\xa3p\xc4\xa8\x19iQXR\x94A\xc3\x97\x82m\x0f\x81\xa0AaOI\xc1\x14\xa8\x14l\x1bE|\x8a\xa1=\xa5`\xdb\xb6\xc7\xbcT\xa7\x00\xa2\x13&Ls\x08\xc9)\x05\xdb\x8e\x89W\xed#5\xa5`\xdbx\"\x13\x92\xc6\x84!1\xe1(L)\xd86D\x92\x96\x02(K)\xd8\xf6\x0c\x14%/A)\x96\x9ed\xdd7S\xb0\xed#\xa4`\xdb)\xd8\xf6\x08s\x04>\xc6\x12\x8f\x82iGA\xa4\xa3\x14l;\x92h\x94\x82mk`\x82m\xcf\x9c?\xd8j\xc6qFH\x13q7\x82\x8cO\x1e]\xc5@\x17\xa0?\xd0Z\x11\xc9\xb5+\x04\xc0\xcea[\xb3\xd4\xe58\xec\xa5\xc4S\xf8\xee\xfd\xdb\xe7/_<?\xffp\xf1\xd3\xdb\x97\xaf\xac!0-\x8f\x7f\xf7\xfa\xed\x8b?`\x1e<\xff\xaf7/0\xcf=7>\xd8\xc6\xd2\x0c\xa8\xad_\xdb\xd2\x1a`\x7f\xaaV\xb4\x17EU\xd8.\xdaP\x7f\\\xda\x16K.\xa8h\x87#{.\xbc\x7f\xf7\xc24\x19\xb5\x91\xd74\x1d\\\x1d\xf1\x0c\xfeJ\xebJ\x91b\xc4z\xc0\xab$\xc2\xa3Z\x962s?=\x83\x97\xaf\xde\xbd\x7f\xf5\xe2\xf9\x07^&?\x85\x19:\xa9\x8d(o\x12\x98\xa1P\xad\x0fU\xca\x1d\x15\xbfbK\xe1\xfc\xe5\x1f$ABE\xad7\x94W\x95\xd7\xa4^\x99U\x85\xc6\x11t4\x00D\x8d;J\x01\xeb\xc5h\x14\xb6F.(\x11\xdfG\xae\xd5\x85\x081~Mr\xa3\x973\x17-\x01E\xaf\xe9\xa2\xd3tF}~z\xc5U\xf6\xb9\xb1\xb6\xcfc\xaak\xf8\x9e\x0cj\xda@\xbe\x13tFF\xc7\xd5r\x8f\xfd\x01\x7fADG\xe9\xe8\x0b\xf2\x7fY\x10{A\x152\x1e\xd7\xbd\xf0\x9f\xea\x97\xd0\xec\xeb\xa7\x82cy\xfa7I\x9f\xfc\xbb|\xd5\x92\x8c]\xf0\xa4\xfe\x94\xb3\xed\x87\x9b\xa6M\xc8NTlH\xa1\xfcTL\x0f`7\xed\x88\x1b\xc8\xe9\xb1\x91\xff\xf2\xbb\xc57:\x07\xfa8\x95{\xff\x93\xea\x91\xfb\x89\xf2\x89O\xe7\xde\xafbJ\xe9.\x90X&\x89e\xd2!\xb1L\x12\xcb\xa4Cb\x99\xb0\xc421#\xb1L4\x12\xcb$\xb1L\x12\xcb\x04yJJ,\x93\x16\x89e\xd2Gb\x99$\x96\x89\x01\x89e\x92X&>\xe1'\x96\x89\xf5\x9d\xc42\x19 \xb1L\x12\xcb$\xb1L\x12\xcbd\x00\xac\xc5?\xb1L\x04\x12\xcb\xe4\x9f\x81er\x94=np\x8dV\xf1[\x94\x95T\xfd\x9fZ\xfc\xa4\x85Q'\xdf\xec\xafBy\xf9ll\x0f\xb0RU,Z sF\x89\x94\x0f\x1d\x9f\xf0\x11l\xfa\x9c\x94\x0f}^\xe1\xfa3y\xa7\x14\xafsH1\xe5CO\xf9\xd0\xbf\xcc|\xe8\xc1\xf4\x9f\xbfmI\xb3u\xd3~>\xdc\xf4\xc8>\xec\x86\xcf\xd1~V\xd61e\xe7\x9e\xd3\xf1\xe2\x89:](\x99D\xcfI\xf4\x9cD\xcfQH\xf4\x9cD\xcf\xe9\x90\xe89,\xd1s\xccH\xf4\x1c\x8dD\xcfI\xf4\x9cD\xcfA\x9e\x92\x12=\xa7E\xa2\xe7\xf4\x91\xe89\x89\x9ec@\xa2\xe7$z\x8eO\xf8\x89\x9ec}'\xd1s\x06H\xf4\x9cD\xcfI\xf4\x9cD\xcf\x19\x00K\x95H\xf4\x1c\x81D\xcf\xf9\xa7\xa0\xe7\x90\xa6\xbfD\x0d\xc99\xa4\xd9\xb6L\x81\x1b\xf9\xbf\x9a\x8es\x02\xb4\x94^\xffb\x84m\xe9\x8d\x9a\xc43\xf2t\xfcf\xcd%i\xe8)\xa3\xe5\x8a\xd6\xbb\xbcd\xad\x8d\x93,\xb3\xfcB\xd4\xd3n\xe3\xec\xa9\x08\x9e\x7f\xf7\xe2\xec?\xf9\xd3\xbd\x10\x12\xe2m\xd8\x92rUhE\xb1\xbaa7\xe2y\x95\xf0\xa5\x81U^\xd3\x8c\x15\xb7\xc0\xaa\xb6\xc0\x81\xce\xbb\x97\xe4\xe6\x04\x96\xb7{\"\x13\x8a|h\xab-\xf4\x87\x05\x15\xd1&\xc4\xce\xd5\x96\x7f+\xd4\xbamIj\xfd\xef\x15\xad\xb4+|\xaawqB\xb8\xc8O\x14\x9b@dg\xd9\xefO\xd4L:\x81\xfd7{\xa9lkXU\xb7\x8a\x14D\xbc\x86\xdf\x1b\xa35\xb4\xa2S?\xde\x8f\xf9\xd7j-\xb4\xdb '\x9aL{\xd4\x11\x89\xa2\xda\x04\x99K\xf3r]\x05\xbe`L$\xe5T\xe3\xb9*lL\x9d\x85*\xcd\xa0\x0e\xb4h\x1ac\x8b\xdb\xd7U\xb5\xbe\xa8\xf6Vk\xb2\xc50\xec6\x0b\x1b\xcb\x03\x8f\x85\x1a\\Vj\xf0UH\xc2g\xad\x06]\x8c\xf5W\x94\xba\xd6\x9b\x0e\x0dU\x06J\xed\x0b\"g\xd0\xfd|\x0b\xa3\xc8\x05\xa9\n\xad\xd6o\xf7\xdd\x9a]vKSg@\xc8H\x91\x1d\n\"\xc2\x00\xfdD\xeb\xcb\xc2\xde\xc4\xba\xaa\x98\\\x80E\x82\xa4\xec\x98\xe9\xd7\xc7\x92\xf6\x94\xc7\xda*&/\x94\xfc[%\xe5\x8b\x1a\xffM\x14\xe62\x98\xea\xebSI\xf3\xcdvY\x1d\xc4Y\xb8\xac\xc6L\xb0>$\x15\xc7\xfe\xbb4\xea\x08b\x80>\x19\x12X\x1d\xe4F\xd4\xaa\x9d\xb5\x04\xc5\x01D^\xc5l\x05J!\x0b\x02T\xb7q\x1d_=\xfc}\xa7\xbe)B\xb2\xc9\xfe\x90\xb3\xbf\xfd\x82\x8arU\xe4\x8d\xb0;\xeb\xe7\xcd\xad\x0djg\xe3n(\xaa\x89\x92\xa2\x1c\xb9\xf2\x99\x96e\xbe/5{\x92\x85\xac\xa6n)\xb7[\xf2Qj0\xd6O\xa4\xd5e S\xf1\xa8\x8e\xf6r\x8d\xcd\xfbw/4 {\xdc \xb8\x0e\xd05\x91\x87,k/t=0\xfe\x8c\xa9C\x12\x8bk\xf4kbq\xf9\xa6F\x87\xc4\xe2J,.3\x12\x8bK \xb1\xb8\x8e\x91X\\\x89\xc5eCbq%\x16\x97@bq%\x16Wbq%\x16\x97Dbq\xc5\x10\xa1\x12\x8b+\xb1\xb8:$\x16\xd71\x12\x8b+\xb1\xb8\x12\x8b+\xb1\xb8\x12\x8b+\xb1\xb8\x12\x8b\xeb\x9f\x9d\xc5\xb5\"\xac\xaf.\x8c\x89(a\x0d\x9cb\x89\xed3X\x13g\xf8\xa05^\xd4\x0ce{\xc3=\xd5C\xa5E\xcc'C#r\xd8\xa8k\"\xeaUsZ\x10F\x1be\xdb\xb4D\xe8x-\x1e\x11\x89h\xda\xc4E\xc2r.\xfe.\xc3g\xe9me\x1c\xae\xa3\xf7\xee/t\xfb>S\xe2\x96h\xc7E\xbe\x9a\x95\x1a\xb4%\xcd\xd6\xc5\x0dr(\xd8<\xea\xb5=\xa9\xd9EC\xd9\xc5\x96\x92\x155\x18\x84\xc1Ws\xf0\xd6\x9eC\x84\xec\xf1\xd0\x8b\xacVd\x0d\x171A\xc3.*\xc0\x88\x0b\xfc\"\x03`9+(\xbf\x9a\xd5\xac\xa1\xecG!\xb9\xe3\xee\x96\x0f\x89A{6NK'F\x89a\x88\xc8w\x1e\xbf\xe4;^F\x18\x9f\xbf{\xa1\xab\x16'\xecO\xcd\xea\xf2B\xbc\xfaI\xa7g{<\xeb0\xbb\xdb1\xa0,\x0b\x8e\xde\x91\xcd_\x92&\xcfT<\xbd\xbc\\W\x9e\xdetr\xdb0\xf5\x02{\x87\xf4\x81\x1a;`\x8f\xe1u\x0c\xb2\xdf\xdf\xef'1\xeaj\x89\x17|y,\x9bC\x03\x19\xd9\xb3C\xad\xee+Y\xfb\xe7\xfaP\xd0F\\\xc4\xf6u\xc5\xd7Uw\x15I\xdb\x9f\xd2\x8e\xcc\xff'\xdb\x92\xbc<qh0\xfa\xa4`~\xe6k_\x92$\xb5\x96\x12\xd4\xe8K\xac\xac\x95\xa3@\xad\xf6\xef\x0c\x83\x8f\x1bW\x05\x1a&\x02\xa2\xd5\xa4l\xe4\x19pG\xb2m^\x1am\x01\x1c\xa2v\xc6\xd5_\x03\xd1\xa56\xd2\x96\x06\xa2\x08\xdcZ\xc9\xf2\x9d\x83\xd4\x19\xf4\x99\x15a\xf4)/\xcf\xf2\xa4\xb8e\xd9\xf7F\x8d\x19g\xb4{#\x00l\x03\x01\xb3!H\xa0\xf6R\x0dTK\x01\xddZ\xf0\xef\xb1\xedc\xa8\xbdV\x033\x8e4\xfc\"\x87\x10\xb1\x03^\xf4\xc8=y\xf4\xb0yo\xd6\x10C6\xabv\xbb\x9c]\xdc\xc7\xa9\x02\xba\x8a\xf1\xcfQa\xd1\x92\xab\xe6\xe8\xc2\xd4\x07\xff\xe9\x9e\xaa'\x8c\xaa\x84UusO\x1f\x1c\xcbC\xa4\x91U\xeb7T\x07\xb6?\xb0\xeeo\xfb\x9a^IqYJ\x13\x81l\xef\xbd\x0d\xed\x8eyO\xdf#\xfb\xfd=}I\xcc\x0f\xc5\x9c\xb9\xa7O\xd2\xab|E\xcb\x8c\xde\xd3\xe7\xda\xf1\xd7\x1d{\x1c\xe7Q\xbePW\x0d\xad/\xc8jU\xd3\xc6\xe7L1\xb9~\x83\xc3\x9c\\\xf0\x06\xd4\xe9\x8e1]\xad\xdb\xf3\x97\xdc\x9a\x8cT\x06\xab\xc7\x84w\xab\xf2oQ\xec\xc6+\x0e\xbb\x7f\x0b\xf8|\\\x00+S\x84T!\xe8\x98\xfc\xe1FQ\x1d\xb5RR\x9c,\xa5mG\x9e\x1d\xff]i6~\x14\x87\xba_}\xed0}\x02\xbcy\xfb\xe1\xd53I\xde,\n.4\x10I\xa0IM\xe5\xe2\xbb\x00\xf8\x13}\\S\xf8\xefC\xc3\x80ljJ\xdd\xcdU\\=\x11\xe9U\xaa\xc6\x9d\xdf\x17\xa4\xde\x1d%\xa5j\x95\xac\xfa\xf3\xfd\xfeG\xd2laUQI\x94R\x91\x7fy\xd1\x8dkW\xeeeX\x1e\xfd \xa7\x95U\xb4/\xa5CK\xcf\xf0 \xe2[\xaf\xfb\xd9\xf0\x1b]\x0dc\x98\xdb\x0e\xb6-A\xaf%w6\xe6\xdd\x1f\x80y\x07\xbe\xf7 \xe9\xaf\xafD\xeb\x0cqqU1z\xe1o\x84\x04\xb2\x16\x10P\x13\x0eQ\x07\xa7#\x97F@\x05 \xb0\x12\xa0\x8bG=\x89^\x8a\xfa\xa0\xe5a\x87-^(h\xcf~x\xf3\xea\xe5\xc5O\xe7?\\|\xf8\xafw\xaf.>\xbe\xf9\xc3\x9b\xb7\x7fz3\xa1\x84w\xef_\xfd\xf1\xed\x87W\xd3Jx\xf1\xf6\xa7\x9f\xce>L*\xe3\xed\xbb\xb7\xe7\xcf_#\x8b\xd0>5\x13\xe5\x81_\xef\x878\xcf7%]\xfd\xd4l>\xb4\xbeDL\x11\xec\x1a\xf1\x13\xba\xa4\x1e\xa7c\xa0fq\xae\xd6#X\xfb\xf4\x19\xfc\xb1bN\xb5\xc8\x08\xf6~y\x06\xef\xc4)\x87\x14\xb8\xe2|\xaa\x8c!\"&N\xc8\xf5T\xa2\xae\x0e\xa5C\x031D\xd8]Y\xc2\xe5\xf3d\x86_/2D\xe0Z\x07\x11\xeb\x1d\xa0\xaf\xf3\x1d\"\xba\x0f\xb0G\xb21\x82t-CDH\x0f\"%\xc8\x81\xd4\xca\x0c\x113\xee4\xc2\xa7\x84Fh\x87C|\xa7Cl\xc7\x07jz\x86@\xe9}\x86`\xf9\x8e6\x8c\xec<\x9a\xfa\x0e\x11\x02\xc1*Q\x87hU\x19\xfe\x0b\xe7\x10\x13j\x88\xee\xaa\xaer\x96\xc0\x10f\xc4\x8c\xfb\xf0\xf5\x96o\xce\x84\xdf\x8c\xc3\xaau\xb7\x12\x8b?\x86\xf0\xdd\xbdk\x93\xf6Ho{\x00ra\xf4py\x19\x0d\xc1\xd7\xd6<\xcb\xf7\x82]\x9f\x97=\xed\x87r\xbd\xc6\x1fJH\xd3TY.\n\x1a\x18\xf8\xdd\xa07\x8c\x96nS\xe1\x10_@\xff\xb4m\x1a\xf0?\xdd\xfedC\xf4\x8cV*\xfd\x93\xf4r\x9168*5\xd5\xf8\xaeQGN\xcb\x0d}\x8c\xb6\xfa\x17\xff\x88\x93\xa7\xeb\x9c\xf14B\x97s4\xdd\xc6\xd3\x08\xdf3G\xf3\xcd0\x8d\xd0\x85\xd9\x06JP\xff\xc7\x08W\x08\xb6\xa5\xee\xf1\xbb\xd1\xbe\xa6\xfc>\x0f\x83j\xf0\xbf\xa0\xca\x13\x8a\xfeN}\xcf[\x83\x93B\xef2\xe5{T\xa8\x1b\x96\x98\x81\x1dx\x88\x0c=<&u\xc3\x08I\xdd\x90\xd4\x0d~$u\x83\xefiH\xea\x86\xf0\xb3ER78\x10>%4B;\x1c\xe2;\x1db;>\xa9\x1b4\x92\xbaA\"|\xbd\xfdG\xbc1%u\xc3\xe7\xdd?I\xdd\xf0EtNR7\x98\x10#\xdc/Q\xdd \xcej\x17W\x15\xcb\xcb\xcd\xc5\xbe\xba\xc6\x1d,\x03\x07x\xd8\xf9\xac\xdbH?\x8f\xfa\x04\x9d\x87\"k\x82=\x07\x85\x0e\xcb\x97\x9aJ\xc3\xc7\xe6+E\xa4\xe9hM\x9aZ#\xe8y\xde\xc2\xba /\xef\xfa\xc0\xae+^\xd6\xba\xc83\x11-\x98\x8fl\xcf\x98+\xf8\xed\xf8\"+rZ\xb2\x0b\xc2\x18\xc9.\x1f\x9a\xe0\xd3k\xc1\x05\xc2\x07G\"\xa0.\x10X\x1fP\xe75\xba\n\xbc\xea\x05\xd6 \"\xea\x05\x1e\x17-3\"*\x06\x91\x95\x03\x8c\x93\x97\x19\xa1\xae_fD\xb6\x15&\xb4\x17p\xcecf\x04.Xc\xe8\x05\xcc\xebhf\x86\xd7\xfd\xcc\x8c\x87\xact\xe8\x12<\x06\xce\xad-\xb8\xd8\xa1\x1b\xdc\xc8\xd9-\xb84\xa4s\x9c\x19X\x97\xb9\xe0\x82\x07.v\xc1\x8etf\x84\xba\xd7\x99\xe1w\xba3#z \x87\xa9\x995\xa2?\x17zf\xea\xc3\xed\xe2g\xc6\x0c\x15\xc5\x1e\xa9\x86@: \x9a\xf1@k\x7f\x8c\x12\x13\xa6 \x19\xe2\xae\xac\x1d&h\xb35&H\x1b&J\x1cb\xb5\xdc\x1a1Z\xbf1\xe2g\xa4F\xec\xc0\x81\xe9\x83\x07\xa6\x0e\xa0IZq\x8d\x08\xed\xb8\x06\xde5\xd3\x8c \xf2\x9b \xb7p\xe7N3\x10.\x9ff<D\xb3\xd1\x0e\x97f<D\x95\xfd\xfeIv`=U\x83\x0bvy\xb6\x9a\x11\xe6\xefj\xc6C\x88\x1f\xeb1k\xc6C\xd4\xd8\xefsk\xc6C\xd45\xc0k\xd7\x8c\x87\xa84\xd2\xef\xd7\x8c\x87\xa8p\x98\xe7\xb0\x19x\x7fb3\xee\xbf\xddSn\xe7H\x07\xe6\xa02\xed\xce\xcef\xc8\x13E\x88\x9c#\x8f\xc1\xb1\xc7\xdf/\xe8\xe2\x19\xc4{\xd2\x98r2\x0f\xb7\xcbk\xa4\x1b'\x06\x91k\x82D\xbaqF\x8fk\x8d\xf8\xa9\xa8\x11;p`\xfa\xe0\x81\xa9\x03\xe8\xa1o\x9c\xad\xa1>x\xf8H\xc9\xb9\x9d\xfc\xcd\xf0\xba\xfe\x9b1i\xa2L\x9b&z%\xbdX\x17\xc4\x90o\x18\x83\xc9\x03-\x8c\xdb>\xc4S\xf8\xee\xf5\xdb\x17\x7f\xb88{y\xf1\xfd\xeb\xe7?\x04\xf2\xba\xc7\x18\x97\xf6\xfc\xbb\xf3Wo\xf0t\xf5!\xc6\x85\x05r\xdf\x87\x18\x17\xf6\xe6\x0cK\x81\x1f\xa2%\xc4\xcf'\xb6\xf8\xab\xb7\x84\x9c\xdc\xab\xef\x0b\xb2\x81\xbc\\ \xfb\xbb\xce\x0c\xa7&~\x94QF\xa2\xe3\xeb\xe4\x92\x12\xe2{\xe1\x18\xd1<\xca!&\xcf\x93\xc9\xcbq\x001\xe3\x18\xb3U?\xce\xd2 \x11\xcc-\x1bb\xb66Du\xc1\x94\xcb\x96\xc4\x0bq\xdd9\xcf7\xd2\x97\x84\x9f\xd1\xb4]O\xb0\xa9t|\x9d\x88\xa2\xf3\x12\x88*\x1f\x7f\xfd\x9a\xd6&\xf9\xb5a\xd4\xa0\x96b#\xa2\x19\x85iY\xa5r\xf6\x9a4\xeaZ\xc8$\x85\x92\xa8PDAeuZ8\x9c4\xba5\xa2\xa1\xe8\xeb^\xc4\xbe\x1f\xb3\xdbwm\xc1\xbf\x13{\n\x8a8\x01EHA\"F\x16\x12\xd1\xeb\xf8\xa4\x05d\xc2\xe2\xb1?,/<\xb9\xf8\xcd\x88\x16.L\x120\x07]}\xf3\xbb\xdf}\xfd\xbfc^\x9d(h\x98&l\x10\x99_\xb3\xfd7\xbf\xfb\xfd\xe5\xd7_b\xf5\xa7\x9c\xc8\xde\x1d\x96E\x9e\xfd\x81\xde\x0e\x14{\x97\xf4\xb6\xe9%\xf6\x8c;G\x1d\x1a*3 \xfe\xb1]\x90\x02K %\xde\x0e1\xa9S\xa6\\\xe6[\xbd\xf0\xbe\xce\xab:g\xd1\xf3\xf8^\xeb\xaek\x1dR\xd9\xc8\xe5&v\xa1\x89\\\xc7'\x083z^F\xae\xe0\x91\x02\x85 B\x85ik\xf7\x04\xe1\xc2\x14\x01\xc3\xd4U\xfb\xe1*\x1e\xbf^\xdf\xd9j=u\xad\x9e\xb2RO\xe8\x88\xb8\x95\x0e\xe6X\xa3\xef\xbd\xd6q\xbe(\x1a\x91\xd5\x0d\xab*\xbf\x87U\xe5\x05\xde\x08\x16X\xab\xb0\xda,o\xffJJ\x96\x97\xf4\"\xecF\x14v\x13\n\xb8\x01\x05/\xee\xe1Kz\xf0\x0e\x19\xd8\x03\x12\x11k_\xf0~\x18,,\x88\x12\x18\xc4\xee~Q\x82\x838\xe1A\xfc^w\xbf\xd5\x8c\xd9\xd9\xee`O\x8b\xdf\xcd\xe2\x96\xd7(!\x87-f\x12\x13v\xad{\xa8c\xdc\x0e\x15X\xb1\xc0*\x85(\xc1#k\x82Up\x87\xeaN_\xf3]\xf4\x85\xf0\x05|.\\\x01\xa7z(\xaa\x10\xed=\x9fY\xc2\x18\xdd\xed\x85w\"\xab`\x977\x05%+ \xd2\x0f\xd1[\x9e\xf4S4)L{\xf4_\xb3\xe0\xbd\xab\xbb\x7f%\xf7\x9d2P\xbd\x89\x19M\x1e\xa2\x8c\xfc\x8e\x8f:\x80!\xbf\xf8i.^\xb1\x01Jt\x80\xe2\x1a\xa0\x04\x08\xf8\xad\"\x88b\x82j)\xa0[\x0b\x80&\x88\xe0\xfaS\x033\x804\xfc\"\x87\x10\xb1\x03^\xf4\x81\xe4\x0c\x14\x0d\x03C\xb8\xc0\x1c\xa5\xbd\x07h\xe4P\xc0\x0e\x84 \nD@g\xe0h\x0d\xb1\x04\x86H\xaaB$)!\x9c~0\x89h\x80?6\xceE\x1e\x08\xa2 \x04\x13\x02\x02FM\xc0\x04F\x9ed\">\x8e;\xc1\xa0\x8d\xf1\x115\xf04?\xe4\xe8\x845\x9a\x0b\x138\xa2$\xb3A\x18W#\x84\xc9\xdbb\xc6\xb6\x14H\x8e\x0fq\xe3\xfa\xb5)h\x8f\xbbIg\xaf=\xcf\xcbLP\xdf\x9b]\xd5<mV\x97\xf0\xeb\xc5o\xff5e\xaa\xf5m2\xfez\x01.\xd8\x00z\x86\xe8\xf9\xe1\xf5\xc5\xf7\x86\n\x98\xfb\x93\xb8 \x00h\x97~H\x99j\x87\xf0;\xcd#\xba\xf4\xde.I)S\xad\xbf\x81\x80\xdf\xf0\xd2]\xc9+r\x08\x11;\xe0E\x7f\x17w%\xbc;4\xaaE\xa8\x96\x84;3#\xdc\x96\xe7\xaa\x1e\xda\xebu\xae\x0f\x8e\xe5\xe1\xf5\xffM\x99j\x11^\xb3s})\xc0\xe7u\xaeO\"=V\xe7\xfa\\\x98\xbf)\xde\xb3\x14U?\xfcYm\xfca~\x87\x92\xf9I\xf3M^\x12upj\x1fs\x94\xa4\n8Q\xc2\xe1\xb7\x1a\xc2\xefc\xdf\xd1l\xfb\x9boT\x8d\x9dq+\xcfJ\xf8@\xcb\x15\xadwy\xc9N\x80my]T`\xfdO\\\xd4\xcd\xa7\x13X\x1e\x98>\x08\x9e\xbf\xfc\xc3\x89\xa3\xb8kq\xe4\xbc\xa25\x83\x9c\x01\xab\xc6uqU\x85\x9fM\x97\x941Z\xc3\xc7\xff\x87\xb8\x10\xfa}e\xbb\x96\xa5\xbc\xbf\x02\xa89\x84\x1f\xc8)\xef\xaf\xeb\x8c\x93\xf2\xfe\xa6\xbc\xbf\xc7\xc0\xd6\x04R\xde_\x0bR\"\x1e\x85\x94\x88\xa7\x87\x94\x88\x07\xf5NP@\x8a0\xcd\x83\x04\xc6\x06?\x84_\xcb4D\xe0Z\x07\x11\xeb\x1d\xa0\x95#\x1d\"\xba\x0f\xb0G\xb21\x824WCDH\x0f\"%\xc8\x81\xd4q\x0d\x113\xee4\xc2\xa7\x84Fh\x87C|\xa7Cl\xc7\x07\xea\xcd\x86@i\xd1\x86@\x1bD5\"\x04\x82UI\x0f\x11l/\xd6\x98PCtW\xa5D<\xa1\x12\x8b?\x86\xa4D<_@\xff\xa4D<_D\xe7\xa4D<&\xc4\x08\xf7KL\xc4\x93\xf2\xfe\x9a\x90\xd4\x0d\nI\xdd\xd0CR7\xa0\xdeI\xea\x06\xdf\xb3\x1a\xa1\xb7\xcf\x88\xee\x83\xb8\xb3ER78\x10>%4B;\x1c\xe2;\x1db;>\xa9\x1b4\x92\xbaA\"|\xbd\xfdG\xbc1%u\xc3\xe7\xdd?I\xdd\xf0EtNR7\x98\x10#\xdc/Q\xdd\xf0\x19z\xb2\xa7\xbc\xbfv\x84\x0e\xcb\x94\xf7\xd7Wh\xca\xfb\x1bR/Hy\x7f=\x88l+Lh/\xe0\\\xf1\xcc\x08\\\xb0\xc6\xd0\x0b\x98\xd7m\xcf\x0c\xaf3\x9f\x19\x0fY\xe9\xd0%x\x0c\x9c\x93`p\xb1)\xef\xaf\xcf-\xd1\x8cPgE3\xfc.\x8cfD\x0f\xe405\xb3F\xf4\xe7B\xcfL}\xa4\xbc\xbf\x08LY\xfbc\x94\x980M\xc8\x10we\xed0A\x9b\xad1A\xda0Q\xe2\x10\xab\xe5\xd6\x88\xd1\xfa\x8d\x11?#5b\x07\x0eL\x1f<0u\x00M\xd2\x8akDh\xc75\xf0\x8e\xaefL\x90\xdf\x04\xb9\x85\xbb\xca\x9a\x81p\xa05\xe3!\x9a\x8dv_5\xe3!\xaa\xec\xf7O\xb2\x03\xeb\xf7\x1b\\\xb0\xcbO\xd8\x8c0\xefa3\x1eB\xfcX\xffc3\x1e\xa2\xc6~\x0ff3\x1e\xa2\xae\x01>\xd0f<D\xa5\x91^\xd4f<D\x85\xc3\xfc\xb0\xcd\xc0{g\x9bq\xff\xed\x9er;\xf7\xfb2\x87\xaf\x80)\xef\xaf\xc0\x0c\x03!\xfc\x98\x1b\xc4{\xd2\x98r2\x0f\xb7\xcbk\xa4\x1b'\x06\x91k\x82D\xbaqF\x8fk\x8d\xf8\xa9\xa8\x11;p`\xfa\xe0\x81\xa9\x03\xe8\xa1o\x9c\x980\xb4fH\xc9a\xf3<\xf4\xe1u\xfd7c\xd2D\x996M\xf4J\x8a\nzk\xc6\xe4\x81\x16\xc6m\x1f\"6l\xae\x19\x91\xc1t\xcd\x88\x0c\xb1kFx\xe0]3&\x85\xe35#\xfe\xea-1W\xe8^3\x82\x02\xfa\x9a\x11\xcd\xa3\x1cb\xf2<\x99\xbc\x1c\x07\x103\x8e1[\xf5\xe3,\x0d\x12\xc1\xdc\xb2!fkCT\x17L\xb9lI`C\x18G\x14\x9d\xf2\xfe\x0e\x90\xf2\xfe\xc6\x9d\x82\"N@\x11R\x90\x88\x91\x85D\xf4:>i\x01\x99\xb0x\x04g\xc9\xd2\x88\x16.L\x120\xc4f\xcf\xd2\x98$h\x98&l\x88\xcf\xaa\xa5\xf1\xb0\xd5\x9fr\"\xbb\x83\xac[\x1a\xf1\xd9\xb74B\x89\xb7CL\xea\x94)\x97\xf9}|v.\x8d\x07\xa8\xfb>\xe5\xfd=F\xf4\xbc\x8c\\\xc1#\x05\n\x13\x84\n\xd3\xd6\xee \xc2\x85)\x02\x86\xa9\xab\xf6\xc3U<~\xbd\xbe\xb3\xd5z\xeaZ=e\xa5\x9e\xd0\x11q+\x1d\xcc\xb1F\xdf{\xad\xe3|Q4\"\xab\x1bV\xd5\x94\xf7\xd7\x89\xe0\xc5=|I\x0f\xde!\x03{@\"b\xed\x0b\xde\x0f\x83\x85\x05Q\x02\x83\xd8\xdd/Jp\x10'<\x88\xdf\xeb\xee\xb7\x9a1;\xdb\x1d\xeci\xf1\xbbY\xdc\xf2\x1a%\xe4\xb0\xc5Lb\xc2\xaeu\x0fu\x8c\xdb\xa1\x02+\x16X\xa5\x10%xdM\xb0\n\xeeP\xddi\xca\xfb\xeb\\\xc9}\xa7\x0cTobFS\xca\xfb\xeb\x99\x0e\xc8\xad\"\x88b\x82j)\xa0[\x0b\x80&\x88\xe0\xfaS\x033\x804\xfc\"\x87\x10\xb1\x03^\xf4\x81\xe4\x0c\x14\x0d\x03C\xb8\xc0\x1c\xa5\xbd\x07h\xe4P\xc0\x0e\x84 \nD@g\xe0h\x0d\xb1\x04\x86H\xaaB$)!\x9c~0\x89h\x80?6\xceE\x1e\x08\xa2 \x04\x13\x02\x02FM\xc0\x04F\x9ed\">\x8e;\xc1\xa0\x8d\xf1\x115\xf04?\xe4\xe8\x845\x9a\xff\xa3\xe6\xfd\xc5\xd4\xed;\xe9\xfd\xdc\x00\xa3m\xfa)\xdek\xf2\x87\x13yy\xe2\x95U\xa4\xef\xbd=\xcf\x97\x9a\x12&\xd7\xe2uN\x8b\x95N\xb6EW\xfc\x88\xb9\x1cf\xfd\xea?\xed\xae\xf5\x0f\x94\xbd\xe6s\x9d\x89\x1a\xbe\xa7\xcd\xbe*\x1b\xaa\xd3\x92\xd5\xfa\xffE#tT\xaaa \xffy\xa0\xf5\xed\xe9\xb0\x1cx\xff\xee\x05\xec(\xdbV\xab\xae2z)\xeb\xbd?\xa8\xdb\xf3\x12\x0e%\xbd\xd9\xd3\x8c7\x8a\xd6uU\xb7\x15\xe87\xa9\xc9\xb6t7J\x8dc\xdd\xcb\xec\xbb\x97\xf8\xc0\xf1\x94sL\xb2\xacZ\x19\xe6\xa8\xfb\\\xe3:\x9f\xaa\xc8@AuXQF\xf2\xc2\xb0R\xba\x8e\x04\xd6\xa3\x80\xe7\x08\xe0\xdb\xfa\xf9\xeb\x17\x87\xdaz\xf8C,X\xfe9%\xf1\x1c>\xbe\x7f}Z\xd3\xa6:\xd4\x19\x85\x92\xec\xd4D?\x94\xf9\xcf\x07Z\xdc\x02\x9f\xfd,_\xe7J\xd1\xc1d\x80Xk\x812\xb7V\x9d\x93\"\xff+]\xd9=\xf8\xf7u\xc5\xaa\xac*`yX\xafi\xad;m!S\x86\xc9\xb6\xc1\xee\xd0\xb4\xab\x11\x10\xfbi\xaa\xa0\xa4q\x84\x0e\xabJ\n\x8fN\x1fA\xb6%5\xc9\x18\xad\xf9W\xa8\xb8\xf5AC7;Z\xb6K\xee\xc7\xf7\xaf\x1f7\xb0'lk-MT\xaa\x0d\x0ce\xff*/n}(\x8a[\xf8\xf9@\n.\xc1\x95\x94\xaf\xfa\x94\x90\xe4\x13\xd28ck}\xe2U9\xddT\xd5\xa6\xa0\x0b!\xb3\xe5a\xbdxy\xa8E\x88\x84O_\xc9\x96\x88b\x9bmu(V\xb0\xe4[\x86\xb5<\x02\x19)\xab2\xcfH!\xe6\x90\xfd\xcbO\xe8b\xb38\xe1\xa2\x15\xc1\x1f\x1e-\x1e\xf1\xd5K\xa4\x92\xcb2\xbagt\xf5\xd5\xe2\x17\xf6\xd7\xcfJ\xd8sa\xe7\x19=\x01F\xc9\xae\x81Cs \\\x1c2x\xd6>/xMY%\x84\xb1\xccKR\xdb\x0f\xdd\"{\xdd\xed\x9e\xaa4r\"\x1c\xa0\xf5a\xb9\xd6\xa9l\x89\x87\xa6\x1f\x95\x98\xd1\x1b\xd1\xd5\xcf\xcb\xdb\x05\xfcX]\xd3+Z\x9f8\x0fT\x1f\xdf\xbf\xd6\x076^\x943z\xa0XA)|\xda2\xb6\xfft\"\xff\xdb|:\x81\xaa\x86\xb2R\xbf\x9e\x88\xd1\x98\x91\x12*1;\xb9D\xec\x05R\x06\x87\xbd\n\xcb\xec\xf8.\xad\xafh-E\xb3#{\x95nR\xd4\x9cUmlf\xa1\xae\xcce\xa6;bW0\xae\xab\xa2\xa8\xae\x9bg\x8e\xbe\xfd%\x9c\xad\xbb\x16\xf1a\xa1c\x02\xb6\x8d\x16\x87\x99\xa69\xec\xe8\xca\x11\xec\xed\x97|s\xfa\xf1\xc3\x87w\xf0\xc3\xab\x0f:\xb7\xe0\xc7\xf7\xaf\xe5\x1c\xbb\x15\xfb\xb1\xfd\xcc\xf3\xe7\xf1\xb4\xf8p\xbb\xa7\x7f\xf9\xf3_\xac/\x88\xa3\xf1A\x8c\x079\xde\xd46r\"C\xbaU\xabCF\x81\x94r\x0b\xb3\x13\xeb~ \xcf\xbb(%\x8dH\xa6H\xb8\xcc\xe4\x91!#\x19_[\xaa\xea\xf2\xb0\x07\xe5\x17 K\xd28h\x8f\x95/\xac\xcb\xc7\xf7\xafE\x1d\xb7\xe4J\x0c\xc1]o\x0e\xad\xe4$\"\xbaI\xfc\xdfWU\xbe\x02R\xba\xecA\xb2\x82b\xf9\xa8\xe9\xba\xaa\xe9\x89.\x80\x97KX\xbe\xcc\x8b\x9c\xddBI\xe9\xaa\x91G!\x10K^}\xe5$pV%_f\xcb\x0d\x15/\x899\xbb\x80'\x1f\x1b\xaa\x039q)\xf1\xe1\xc9\xd7,9>II6\xae\xd6/kJ.\xf9\x1a\xa4\n^|e\x1fQo*F\x9f\xc9\x9c\xab\xebC\x99\xc9\x19\xc6\xdb\xa1\xd6\xae\xecP\xd7\xb4d\xc5mOY\xefX.E\xae\xcb\xf5:\xcfrRx\xf6\xb2\xe5a\x0d5\xe5;\x11=\x11\xb1mr\xa6?zh\xa8\x8c^\xd8\xceKkQK\xba\xc9\xcb\x927\x96\x9fi\x1d\x9b\xcb\xed\x9e.\xe4\xf8'\xfb\xbcYd\xd5\xce\xb5\x1a\x9f\x8b\x99\xda@\xc5\xb6r\xa1(\xc7\xab\x14<Q\xb1\x1a\xe9n\xcfn\xd5\xd4\xfe\xca\xbe \xe6\x9b-\x83\xa5cQ\x12\x8d\x16\x07\xf3|\xb7/(\xdfd\xc5\x84\x81fO\xb3|\x9dg\xd0\xd0\x1d)Y\x9eY8\xacb\xaeN8\x02!\xeej\xd8S\xd2O|9ZR *\x12ew\xc09:\xc7\xe88F\xcb\xea\xca>\xa6\x95\x08\xd4T0&\xcfE\xd4\xec\xd3\xf3\xf2\xf6SwY#%\x90z\x99\xb3\x9aOb{\x0d\x8dE\xe9=\x82\x14\x95\x1az@\xcc]\xcbWg\xb1\xd1\xc8\x1a.\x87\xc7\xc2\xd1\xf1\xaf=\xd5Y\x86\xe6;=q\x8a|)\xaa\xad\xf6\x91\x06\x9a\xc3~_\xd5b\x07\xdf\x93\xec\xf2\xf4P\xf2\xff\xf0}[\x8e\x0b\xf3\x0cR\x1b\xbd\xfd`S\xad\xe1\xc0\xe4\xc2\xa6\x97\x87\x86/\xacd\xb5\xca\xe5Z\x01\x1bZ\xd2Z\x84*\x95\x17-\x1d\x9a\xcaX\x1e\xaf\x8f\xecB\xf3\xf7^\xdd\x10>\xf8\xe1\xebg\xf0\x8e\xd7\x9f\xaf\x0b\xaa)\xa4\x9f4\xe1\xc5\xaf~\xe5\xd8&\xbf\xaf*XW\x15|\x0b\x8b\xc5\xe2\xffX\x1f\xe3\x95!\xe5\xad\xfd\x01R\xde.x5\xbe\xaf\xab\xdd\x93uU}e\x7ft\xb1\xb0\xef\x7f\xf9\x1a\x9e\xf0\xa2>\x8a\x86|\xa8\x9e\xfc\x0b/\xeb+\xf8\x9bc\x0dw\x95\xf7w\xb7\xec\xbe\xf1\xc8\xee?\xc8\x15\x99Mx\xf0\xad8\x1b\xf2\xaf\xcc \xa1\xbcy\xf2}U-\xb2\x824\x8dG@\xb2\x8a\xfc%\xd9\xc6\xde\x8b\xf6:\xfc\xdd\xfa\xcb\xe9)\x1f\xd6\xb8:\x9e\x93\x1d\xe5G\xa7\xe7\xb2\xb6\x1b\xca^J\x95\xc2Y\xd90Rf\xf4\xc9W1\x957\x96\xe3j\x8bs\x14\xfc\xc63\n\xde\xdd\xb2mU:\xc6\x81\xac\xe3\xf7U\xf5d\xb1X\xd87\xb6v\x0c<q>#\xe6\x91\x18!\xb1\x03\x84\x17r&%\xfe\xf2\xd5\xf9\x8b\xf7g\xef>\xbc}\xff\x95KW\xd9\xcd9\xf7\x87\xe5\xa7\x9d\xd2\xfc\xadG\x9a?T\x8e\xd8{\\\x92\xcf\xbe\x85\x7f\xd9/\x17\xdfW\xd5\xdf\x16\x8b\x85}\x1c\xf2J\x9f\xf0\x035\x7f\x83\x94\xb7\xfb\xe5\xe2\x0d\xbd\xf6\xd4?_\x8b7\xfe\xd7\xb7P\xe6\x85s\xe09\x85\xec\x98\x1e\xee\xf7F\x0dt\x14\xa3j*\xdb\xb6\xf8X\xeeH\xddlI\xf1\xa1\x92\x8b\xc7\\\xcd0\xfe\xc6/\xfe\xa2\xe7\xf4>\xd5\x0f\xcc\xbe\x1f\xef\xac2\x9f\xbc\xf9F\xa04\x88\xfc\xc8f\xfe\xd4c\xc3q\xf3t}(\x8a\x85\xf8\x81\x1f\xe5\x1f\x03\xe9\x9d\x04\xf8)A\xc5w4\x16(\xc7\x9c\xf9c\xed\xb6[\x16\xb7\xfa\xce}\xa4Hi\xaf\x10@\xd6\x8c\x9a\xf4\xa7\x12B\xc7\xf3\xf8\xf4\xb1\xf9S\xea\xbc\xa0\xab,4\x01@\xd5\x1cy\xb4\xae\xaa\xc5\x92\xd4\xa2\xb17\xa7\xb7\x8b\xbf>\x92R\x14\xf7Rcy\xf6k\xba\xa8\xea#^\x86\xed\xa8\xf0\x1f\xe7o\xdfX~\xe2=\xcd\x7f\xee\xb4N\xf2$]\xf1UD\x1d\x03\xe5\xcd\xf6\xd0P\xada\xde\x1c\nb\x890~\\\x0c\x7feE\xbb\x83\xdb \xd0\xdd\x92\xaeV\xdd\x11N*\xd9\x8d\xc5\x11\x8b\xfe\xaaw\xa8\x92\xaa\xf5O\xff\xce\x05\xf4I\xa9S\x06V\x06\xdd\x05\xe6i\xa0\x96\xadg\x8e+\x18\xc9.\xf9\xda\xd5\xa9\x04\xd6yA\xed\xbb\x8d^\xeb\xde\xd1\xba\xa9J\xe7\xe4T\xba\xc8u^7\xecB\xf4\xe3\xb7\xf0\xb5\xbd\xe4\xf6\x05A*Q\xcf\x7f\x13\xbc\xefq\xb8j\xf5H\xc8\xf2\xd13xd\x9a\x9bC1,d+\x1f\x9d\xb8\xca\x13\xed{Cv\xbc\xcc\xff+\x9b\xf0o\xce\x17x\xfbF\xcf\x876\xf2l\xad\xae\x9c\xc3\xb1&GC\xde\xc05-\x8a\xa7\x97eu]\x8a\xd5dK\x1a \x90\x1d\x1aV\xed\x1cs\xc8\xf4\xcbp\xc8\x9f\xc8+\xcch\x1e\xc8%\xb2W\x1d>\x80-\xd7K\"\x87\xb4\xf9c\x9f\xc4d\xd4\xe3|[\x15+\x15\x15X\xd4\\N\xe5\xbcl\xe7\x07H\x1d\xa8\xb9(9e\xcc\xdf\x11UX\xb4\x9b\xfa\x13\xbezi\x11\x1e)\xc7\xb4\xce\xf8/\x7f\xfe\xcbW\x8e\x894\xc7\x98\x1b~\xd0=\xec\x84\xa8x\x91_/\xbe\xf9\xfa\x9b\xe6\x91c\x08\xc9\xff2\xb2\xe9\x99M\x9e\xc29\xad\xaf\xf2\x8cK\xef4\xab\x9a]\xd5\x9c.ICO;K\xe1\xe9\xd5\xd7K\xca\xc8\xd7\xa7\xc2r\xd9\x9c\xfeM2\xb1\xfe.\x0b\xd9t\xfe\xb0\xcda\xb7#\xf5\xed3\xf8\x81Js\xdbw\xb7?\x8aG\xe1\xe7\x03\xads\xda(\xdb'\x17\xf3&\xbf\xa2\xa5\xe2t\xe95\xab\xdaS\xd9\xe2\xb3\xd5q\x19\xea\x19mx\xeb5\xe1\xf17\xbf\xfe\xf5c\xbb\xf5\x0e\x9aC\x96\xd1\xa6Y\x1f\x8a\xbb4\xdb\xd9\xc9\\Nc\x96\xdb\x94eg\x10y\xf57\x1e\xed\x0d\x8a\x9c\xe5\xac9xk\x0f~\x12\x16C\x91\xaf0\xa4+7\xd9\xca+.\xf0\x8b\x0cI\xaar\x92\xa9,\x81\xe9\xd5;\x8f_\xf2\x055#\x8c\xae\x9e\xc1^\xa8B\xc5\x01\xeeS\xb3\xba\x94a\x98?A^6\x8c\x92\xd5\xe3Y\x87\xd9\xdd\x8e\x01o\x06\x82\xd0\\\x03\xde:\x01\xaa^\x80\xcb\x14\x80\x1a;\xd0\x1b?\xde@\xfa\xde8\xffs\x7f\x12\xa3\x0d\x95\xc0\xc5\xe3\x87a|}WS\x07\x91\xf7\xb1\x91\xf4\xb11\xf3\x871\xf0\x1d\x05\x86F\xc7\x0f\x8d\x83\xef\x8fx\x8f\xe8\xd2{c8\xbbc\xd0\x07}\xc6G%CF\x90\x9fqF\xfbY\xb7\xa8\x06\x02fC\x90@\xed\xa5\x1a\xa8\x96\x02\xba\xb5\xe0\xdfc\xdb\xc7P{\xad\x06f\x1ci\xf8E\x0e!b\x07\xbc\xe8\x91{\xf2\xe8a7\xd1\x19\x1f\xcb\x1c\xd5\"TK\xc2#\x91#b\x8e\xcfU=t\xc8\xea\xb9>8\x96\x877x\xb73\x14mX\xd8\xed\xb9\xda\x80\x0d\x9a=\xd7\xf7\xfc!\xaf\xe7\xfaR@\xc0\xea\xb9>\x89\x0c7=\xd7\xe7\xc2\x82E\xe3\xc3B\xcfS\xbf\xc1a\x0e\x19\xa5\xd9\x11y\x99/$wv\xf4g7^q\xcc\xe2-\xe2\xddU\xbcR\x85\xa0c\xf2\x87\x1b\xc5\xa4\xd3:/q\xb2\x94\xa6\x03yv\xfcw\x95\xa9Sj/~\xf5\xb53e\xe7\x1b\x91\xa5_p\x03\x8b\x82\x0b\x0d\xb6\xb4\xa6\x82\x19%\x16\xae\x05\xc0\x9f\xe8\xe3\x9a\xc2\x7f\x1f\x1a\x06dSS\xean\xae\xa2\x82U5\x1f\x1cB3\xe9\xfc\xbe\xe0\x8c\xee()U\xabd\xd5\x9f\xef\xf7?\x92f\x0b\xab\x8aJ\x1e\x8e\xa2\xd2\xf3\xa2\x1b\xd7\xae\xccn,\x94\x14\x9f\xe3\xc7K~\xbc\x1f\xe8\xb5\x15\xfd]\x9c\xc4\x89\xe2\x1b\xf4\x19\xfdv\xde\x97mKp\xe7W\x9ca\xcc\xfb\x138\xce8\xf0\xbd\x07I\x7f}%V:7\xe6\xc5U\xc5\xe8Cg\xa1\x14u\xb0,KC\x04T\x00\x02+\x01\xbax\xd4\x93\xe8\xa5\xa8\x0f\x9c\x13\x99\xc6S8?\xfb\xe1\xcd\xab\x97\x17?\x9d\xffp\xf1\xe1\xbf\xde\xbdB\xfa[u8.\xe1\xdd\xfbW\x7f|\xfb\xe1\xd5\xb4\x12\x90nf\x1a\xa62\xde\xbe{{\xfe\xdc\xe7u\xa6\xd1z\x9fM\x93\x07~\xbd\x1f\xe2\\\xe4#\xfd\xa9\xd9|Pv\x16I0\xe6\x0b\x95LU\x8a.\xa9G\x19\x18\xa8Y\x02\x12<\xdb\xfb\xf4\x99p\x80\xc2\x86Bp\xf6\xcb3x'N9\xa4\xc0\x15\xe7Se\x0c\x111qB\xae\xa7\x12A\xf9\x0f\xc2\xee\xca\x12.\x97\x1a3\xfcz\x91!\x02\xd7:\x88X\xef\x00}\x9d\xef\x10\xd1}\x80=\x92\x8d\x11\xa4k\x19\"Bz\x10)A\x0e\xa4Vf\x88\x98q\xa7\x11>%4B;\x1c\xe2;\x1db;>P\xd33\x04J\xef3\x04\xda\xffV#B X%\xea\x10\xc1\xee\xc9\x1a\x13j\x88\xee\xaa\xaery\xb9\xa27aU\x0b\x1b\xf7\xe1\xeb-\xda\xa3Y\xe3>$\x16\x7f\x0c\x11\xee\xcd\x9dg\xfb\xf2V\x9c!\xba\xbc\xf4\xb90z`\x82\x9aI\xf0\xb55\xcf\xf2\xbd o\xe7eO\xfb\xa1=l\xd1E\x91\xa6\xa9\xb2\\\x14$\xef\x92\xa87\xe9\x0d\xa3eH\xb2\xf2/\xa0\x7f\xda6\x0d\xe8\x85\x98\x98\x05\x1a=\xa3\xd5\x02\xde\x96\xc5\xadr\xa2\x9068*5\xd5\xf8\xaeQGNd\xe0\xf3\xb6\xfa\x17\xff\x88\x93\xa7\xeb\x9c\xf14B\x97s4\xdd\xc6\xd3\x08\xdf3G\xf3\xcd0\x8d\xd0\x85\xd9\x06JP\xff\xc7\x08W\x08\xb6e\x86\x89\x90\x0c5\xe5\xf7y\x18T\x83\xff\x05U\x9eP\xf4\xf7bX\xad+\x0b+s\x8c\xdee\xca\xf7\xa8P7,1\x03;\xf0\x10\x19zxL\xea\x86\x11\x92\xba!\xa9\x1b\xfcH\xea\x06\xdf\xd3\x90\xd4\x0d\xe1g\x8b\xa4np |Jh\x84v8\xc4w:\xc4v|R7h$u\x83D\xf8z\xfb\x8fxcJ\xea\x86\xcf\xbb\x7f\x92\xba\xe1\x8b\xe8\x9c\xa4n0!F\xb8_\xa2\xba\xe13\x0c\x9c\xdem\xa4\x9fG}\x82\xceC\x915\xc1\x9e\x83B\x87\xe5KM\xa5\xe1csj\x10\xf7n\xc2\xcb\xbb>\xb0\xeb\x8a\x97\xb5.\xf2L\x04r\xe7#\xdb3\xe6Dx\xf7\x0b\x19\xbe\xfd\x82\x88\xd8\xf2\x0fM\xf0\xe9\xb5\xe0\x02\xe1\x83#\x11P\x17\x08\xac\x0f\xa8\xf3\x1a]\x05^\xf5\x02\xeb\x04\x11\xf5\x02\x8f\x8b\x96\x19\x11\x15\x83\xc8\xca\x01\xc6\xc9\xcb\x8cP\xd7/3\"\xdb\n\x13\xda\x0b8\xe713\x02\x17\xac1\xf4\x02\xe6u43\xc3\xeb~f\xc6CV:t \x1e\x03\xe7\xd6\x16\\\xec\xd0\x0dn\xe4\xec\x16\\\x1a\xd29\xce\x0c\xac\xcb\\p\xc1\x03\x17\xbb`G:3B\xdd\xeb\xcc\xf0;\xdd\x99\x11=\x90\xc3\xd4\xcc\x1a\xd1\x9f\x0b=3\xf5\xe1v\xf13c\x86\x8ab\x8fTC \x9d\x04\xcdx\xa0\xb5?F\x89 \xd3\x84\x0cqW\xd6\x0e\x13\xb4\xd9\x1a\x13\xa4\x0d\x13%\x0e\xb1Zn\x8d\x18\xad\xdf\x18\xf13R#v\xe0\xc0\xf4\xc1\x03S\x07\xd0$\xad\xb8F\x84v\\\x03\xef\x9ai\xc6\x04\xf9M\x90[\xb8s\xa7\x19\x08\x97O3\x1e\xa2\xd9h\x87K3\x1e\xa2\xca~\xff$;\xb0\x9e\xaa\xc1\x05\xbb<[\xcd\x08\xf3w5\xe3!\xc4\x8f\xf5\x985\xe3!j\xec\xf7\xb95\xe3!\xea\x1a\xe0\xb5k\xc6CT\x1a\xe9\xf7k\xc6CT8\xccs\xd8\x0c\xbc?\xb1\x19\xf7\xdf\xee)\xb7s\xa4\x03sP\x99vgg3\\\x99+\xcd\x88<\x06\xc7\x1e\x7f\xbf\xa0\x8bg\x10\xefIc\xca\xc9<\xdc.\xaf\x91n\x9c\x18D\xae \x12\xe9\xc6\x19=\xae5\xe2\xa7\xa2F\xec\xc0\x81\xe9\x83\x07\xa6\x0e\xa0\x87\xbeqb\xb2\x9e\x9a!%\xe7v\xf27\xc3\xeb\xfao\xc6\xa4\x892m\x9a\xe8\x95\x14\x95c\xd5\x8c\xc9\x03-\x8c\xdb>Dl\x96V3\"s\xb7\x9a\x11\x99\xd1\xd5\x8c\xf0<\xaffL\xca\xfejF\xfc\xd5[b\xaeL\xb1f\x04\xe5\x8f5#\x9aG9\xc4\xe4y2y9\x0e f\x1cc\xb6\xea\xc7Y\x1a$\x82\xb9eC\xcc\xd6\x86\xa8.\x98r\xd9\x92\xc0f\xcc\x8d(:/\x818\xf3\xe8\x9a1\xa5M\x88\x9c\xbbA\xe5I\xe5\xec8?o\x9b\x897\xa8,W\xd6^\x13\xba5\xa2\xa1\xe8\xeb^\xc4\xbe\x1f\xb3\xdbwm\xc1\xbf\x13{\n\x8a8\x01EHA\"F\x16\x12\xd1\xeb\xf8\xa4\x05d\xc2\xe2\xb1?,/.\xe9ml\x85#\x84\x0b\x93\x04\xccAW\xdf\xfc\xeew_\xff\xef\x98W'\n\x1a\xa6 \x1bDb\xd1l\xff\xcd\xef~\x7f\xf9\xf5\x97X\xfd)'\xb2w\x87e\x91g\x7f\xa0\xb7\x03\xc5\xde%\xbdmzy#\xe3\xceQ\x87\x86\xca\x04{\x7fl\x17\xa4\xc0RB\x89\xb7CL\xea\x94)\x97\xf9V/\xbc\xaf\xf3\xaa\xceY\xf4<\xbe\xd7\xba\xebZ\x87T6r\xb9\x89]h\"\xd7\xf1 \xc2\x8c\x9e\x97\x91+x\xa4@a\x82Pa\xda\xda=A\xb80E\xc00u\xd5~\xb8\x8a\xc7\xaf\xd7w\xb6ZO]\xab\xa7\xac\xd4\x13:\"n\xa5\x839\xd6\xe8{\xafu\x9c/\x8aFdu\xc3\xaa\xca\xefaUy\x817\x82\x05\xd6*\xac6\xcb\xdb\xbf\x92\x92\xe5%\xbd\x08\xbb\x11\x85\xdd\x84\x02n@\xc1\x8b{\xf8\x92\x1e\xbcC\x06\xf6\x80D\xc4\xda\x17\xbc\x1f\x06\x0b\x0b\xa2\x04\x06\xb1\xbb_\x94\xe0 Nx\x10\xbf\xd7\xddo5cv\xb6;\xd8\xd3\xe2w\xb3\xb8\xe55J\xc8a\x8b\x99\xc4\x84]\xeb\x1e\xea\x18\xb7C\x05V,\xb0J!J\xf0\xc8\x9a`\x15\xdc\xa1\xba\xd3\xd7|\x17}!|\x01\x9f\x0bW\xc0\xa9\x1e\x8a*D{\xcfg\x960Fw{\xe1\x9d\xc8*\xd8\xe5MA\xc9\n\x88\xf4C\xf4\x96'\xfd\x14M\n\xd3\x1e\xfd\xd7,x\xef\xea\xee_\xc9}\xa7\x0cTobF\x93\x87(#\xbf\xe3\xa3\x0e`\xc8/~\x9a\x8bWl\x80\x12\x1d\xa0\xb8\x06(\x01\x02~\xab\x08\xa2\x98\xa0Z\n\xe8\xd6\x02\xa0 \"\xb8\xfe\xd4\xc0\x0c \x0d\xbf\xc8!D\xec\x80\x17} 9\x03E\xc3\xc0\x10.0Gi\xef\x01\x1a9\x14\xb0\x03!\x88\x02\x11\xd0\x198ZC,\x81!\x92\xaa\x10IJ\x08\xa7\x1fL\"\x1a\xe0\x8f\x8ds\x91\x07\x82h\x02\xc1\x84\x80\x80Q\x130\x81\x91'\x99\x88\x8f\xe3N0hc|D\x0d<\xcd\x0f9:a\x8d\xe6\xc2\x04\x8e(\xc9l\x10\xc6\xd5\x08a\xf2\xb6\x98\xb1-\x05\x92\xe3C\xdc\xb8~m\n\xda\xe3n\xd2\xd9k\xcf\xf32\x13\xd4\xf7fW5O\x9b\xd5%\xfcz\xf1\xdb\x7fM\x99j}\x9b\x8c\xbf^\x80\x0b6\x80\x9e!z~x}\xf1\xbd\xa1\x02\xe6\xfe$n\x02\x00\xda\xa5\x1fR\xa6\xda!\xfcN\xf3\x88.\xbd\xb7KR\xcaT\xebo \xe07\xbctW\xf2\x8a\x1cB\xc4\x0ex\xd1\xdf\xc5] \xef\x0e\x8dj\x11\xaa%\xe1\xce\xcc\x08\xb7\xe5\xb9\xaa\x87\xf6z\x9d\xeb\x83cyx\xfd\x7fS\xa6Z\x84\xd7\xec\\_\n\xf0y\x9d\xeb\x93H\x8f\xd5\xb9>\x17\xe6o\x8a\xf7,E\xd5\x0f\x7fV\x1b\x7f\x98\xdf\xa1d~\xd2|\x93\x97D\x1d\x9c\xda\xc7\x1c%\xa9\x02N\x94p\xf8\xad\x86\xf0\xfb\xd8w4\xdb\xfe\xe6\x1bUcg\xdc\xca\xb3\x12>\xd0rE\xeb]^\xb2\x13`[^\x17\x15X\xff\x13\x17u\xf3\xe9\x04\x96\x07\xa6\x0f\x82\xe7/\xffp\xe2(\xeeZ\x1c9\xafh\xcd g\xc0\xaaq]\\U\xe1g\xd3%e\x8c\xd6\xf0\xf1\xff!.\x84~_\xd9\xaee)\xef\xaf\x00j\x0e\xe1\x07r\xca\xfb\xeb:\xe3\xa4\xbc\xbf)\xef\xef1\xb05\x81\x94\xf7\xd7\x82\x94\x88G!%\xe2\xe9!%\xe2A\xbd\x13\x14\x90\"L\xf3 \x81\xb1\xc1\x0f\xe1\xd72\x0d\x11\xb8\xd6A\xc4z\x07h\xe5H\x87\x88\xee\x03\xec\x91l\x8c \xcd\xd5\x10\x11\xd2\x83H r u\\C\xc4\x8c;\x8d\xf0)\xa1\x11\xda\xe1\x10\xdf\xe9\x10\xdb\xf1\x81z\xb3!PZ\xb4!\xd0\x06Q\x8d\x08\x81`U\xd2C\x04\xdb\x8b5&\xd4\x10\xddU)\x11O\xa8\xc4\xe2\x8f!)\x11\xcf\x17\xd0?)\x11\xcf\x17\xd19)\x11\x8f 1\xc2\xfd\x12\x13\xf1\xa4\xbc\xbf&$u\x83BR7\xf4\x90\xd4\x0d\xa8w\x92\xba\xc1\xf7\xacF\xe8\xed3\xa2\xfb \xeel\x91\xd4\x0d\x0e\x84O \x8d\xd0\x0e\x87\xf8N\x87\xd8\x8eO\xea\x06\x8d\xa4n\x90\x08_o\xff\x11oLI\xdd\xf0y\xf7OR7|\x11\x9d\x93\xd4\x0d&\xc4\x08\xf7KT7|\x86\x9e\xec)\xef\xaf\x1d\xa1\xc32\xe5\xfd\xf5\x15\x9a\xf2\xfe\x86\xd4\x0bR\xde_\x0f\"\xdb\n\x13\xda\x0b8W<3\x02\x17\xac1\xf4\x02\xe6u\xdb3\xc3\xeb\xccg\xc6CV:t \x1e\x03\xe7$\x18\\l\xca\xfb\xebsK4#\xd4Y\xd1\x0c\xbf\x0b\xa3\x19\xd1\x039L\xcd\xac\x11\xfd\xb9\xd03S\x1f)\xef/\x02S\xd6\xfe\x18%&L\x132\xc4]Y;L\xd0fkL\x906L\x948\xc4j\xb95b\xb4~c\xc4\xcfH\x8d\xd8\x81\x03\xd3\x07\x0fL\x1d@\x93\xb4\xe2\x1a\x11\xdaq\x0d\xbc\xa3\xab\x19\x13\xe47An\xe1\xae\xb2f \x1ch\xcdx\x88f\xa3\xddW\xcdx\x88*\xfb\xfd\x93\xec\xc0\xfa\xfd\x06\x17\xec\xf2\x136#\xcc{\xd8\x8c\x87\x10?\xd6\xff\xd8\x8c\x87\xa8\xb1\xdf\x83\xd9\x8c\x87\xa8k\x80\x0f\xb4\x19\x0fQi\xa4\x17\xb5\x19\x0fQ\xe10?l3\xf0\xde\xd9f\xdc\x7f\xbb\xa7\xdc\xce\xfd\xbe\xcc\xe1+`\xca\xfb+0\xc3@\x08?\xe6\x06\xf1\x9e4\xa6\x9c\xcc\xc3\xed\xf2\x1a\xe9\xc6\x89A\xe4\x9a \x91n\x9c\xd1\xe3Z#~*j\xc4\x0e\x1c\x98>x`\xea\x00z\xe8\x1b'&\x0c\xad\x19Rr\xd8<\x0f}x]\xff\xcd\x984Q\xa6M\x13\xbd\x92\xa2\x82\xde\x9a1y\xa0\x85q\xdb\x87\x88\x0d\x9bkFd0]3\"C\xec\x9a\x11\x1ex\xd7\x8cI\xe1x\xcd\x88\xbfzK\xcc\x15\xba\xd7\x8c\xa0\x80\xbefD\xf3(\x87\x98<O&/\xc7\x01\xc4\x8cc\xccV\xfd8K\x83D0\xb7l\x88\xd9\xda\x10\xd5\x05S.[\x12\xd8\x10\xc6\x11E\xa7\xbc\xbf\x03\xa4\xbc\xbfq\xa7\xa0\x88\x13P\x84\x14$bd!\x11\xbd\x8eOZ@&,\x1e\xc1Y\xb24\xa2\x85\x0b\x93\x04\x0c\xb1\xd9\xb34& \x1a\xa6 \x1b\xe2\xb3ji<l\xf5\xa7\x9c\xc8\xee \xeb\x96F|\xf6-\x8dP\xe2\xed\x10\x93:e\xcae~\x1f\x9f\x9dK\xe3\x01\xea\xbeOy\x7f\x8f\x11=/#W\xf0H\x81\xc2\x04\xa1\xc2\xb4\xb5{\x82pa\x8a\x80a\xea\xaa\xfdp\x15\x8f_\xaf\xefl\xb5\x9e\xbaVOY\xa9'tD\xdcJ\x07s\xac\xd1\xf7^\xeb8_\x14\x8d\xc8\xea\x86U5\xe5\xfdu\"xq\x0f_\xd2\x83w\xc8\xc0\x1e\x90\x88X\xfb\x82\xf7\xc3`aA\x94\xc0 v\xf7\x8b\x12\x1c\xc4 \x0f\xe2\xf7\xba\xfb\xadf\xcc\xcev\x07{Z\xfcn\x16\xb7\xbcF 9l1\x93\x98\xb0k\xddC\x1d\xe3v\xa8\xc0\x8a\x05V)D \x1eY\x13\xac\x82;Tw\x9a\xf2\xfe:Wr\xdf)\x03\xd5\x9b\x98\xd1\x94\xf2\xfez\xa6\x03r\xab\x08\xa2\x98\xa0Z\n\xe8\xd6\x02\xa0 \"\xb8\xfe\xd4\xc0\x0c \x0d\xbf\xc8!D\xec\x80\x17} 9\x03E\xc3\xc0\x10.0Gi\xef\x01\x1a9\x14\xb0\x03!\x88\x02\x11\xd0\x198ZC,\x81!\x92\xaa\x10IJ\x08\xa7\x1fL\"\x1a\xe0\x8f\x8ds\x91\x07\x82h\x02\xc1\x84\x80\x80Q\x130\x81\x91'\x99\x88\x8f\xe3N0hc|D\x0d<\xcd\x0f9:a\x8d\xe6\xff\xa8y\x7f1u\xfbNz?7\xc0h\x9b~\x8a\xf7\x9a\xfc\xe1D^\x9exe\x15\xe9{o\xcf\xf3\xa5\xa6\x84\xc9\xb5x\x9d\xd3b\xa5\x93m\xd1\x15?b.\x87Y\xbf\xfaO\xbbk\xfd\x03e\xa2n\xdf\xdd\xca<M\xefi\xb3\xaf\xca\x86\xea\xc4d\xb5\xfe\x7f\xd1\x0c\x1d\x97jX\xc6\x7f\x1eh}{:. \xde\xbf{\x01;\xca\xb6\xd5\xaa\xab\x90^\xcez%\x0c\xea\xf7\xbc\x84CIo\xf64\xe3\x0d\xa3u]\xd5m\x15\xfa\xcdj\xb2-\xdd\x8d\xd2\xe3X\xf73\xfb\x0e&>p<\xed\x1c\x13-\xabV\x86y\xea>\xdb\xb8\xce\xa8*:PP\x1dV\x94\x91\xbc0\xac\x96\xaec\x81\xf58\xe09\x06\xf8\xb6\x7f\xfe\xfa\xc5\xa1\xb6\x1e\x00\x11\x8b\x96\x7f^I<\x87\x8f\xef_\x9f\xd6\xb4\xa9\x0euF\xa1$;5\xd9\x0fe\xfe\xf3\x81\x16\xb7\xc0W\x00\x96\xafs\xa5\xec`2H\xac\xb5@\x99_\xab\xceI\x91\xff\x95\xae\xec^\xfc\xfb\xbabUV\x15\xb0<\xac\xd7\xb4\xd6\x9d\xb6\x90i\xc3d\xdb`wh\xda\x15 \x88\xfdDUP\xd28\xc2\x87U%\x85G\xa7\x8f \xdb\x92\x9ad\x8c\xd6\xfc+T\xdc\xfc\xa0\xa1\x9b\x1d-\xdbe\xf7\xe3\xfb\xd7\x8f\x1b\xd8\x13\xb6\xb5\x96&*\xd5\x06\x87\xb2\x7f\x95\x17\xb7>\x14\xc5-\xfc| \x05\x97\xe0J\xcaW}JH\xf2 i\x9c\xf1\xb5>\xf1\xaa\x9cn\xaajS\xd0\x85\x90\xd9\xf2\xb0^\xbc<\xd4\"L\xc2\xa7\xafdKD\xb1\xcd\xb6:\x14+X\xf2m\xc3Z\x1e\x81\x8c\x94U\x99g\xa4\x10s\xc8\xfe\xe5't\xb1Y\x9cp\xd1\x8a\x00\x10\x8f\x16\x8f\xf8\xfa%\xd2\xc9e\x19\xdd3\xba\xfaj\xf1\x0b\xfb\xebg%\xec\xb9\xb0\xf3\x8c\x9e\x00\xa3d\xd7\xc0\xa19\x10.\x0e\x19@k\x9f\x17\xbc\xa6\xac\x12\xc2X\xe6%\xa9\xed\x07o\x91\xc1\xeevOU*9\x11\x12\xd0\xfa\xb0\\\xebT\xc6\xc4C\xd3\x8fL\xcc\xe8\x8d\xe8\xea\xe7\xe5\xed\x02~\xac\xae\xe9\x15\xadO\x9c\x87\xaa\x8f\xef_\xebC\x1b/\xca\x19AP\xac\xa0\x14>m\x19\xdb\x7f:\x91\xffm>\x9d@UCY\xa9_O\xc4h\xccH \x95\x98\x9d\\\"\xf6\x02)\x83\xc3^\x85fv|\x97\xd6W\xb4\x96\xa2\xd9\x91\xbdJ9)j\xce\xaa6>\xb3PY\xe62\xdb\x1d\xb1+\x19\xd7UQT\xd7\xcd3G\xdf\xfe\x12\xce\xd6]\x8b\xf8\xb0\xd0q\x01\xdbF\x8b\x03M\xd3\x1cvt\xe5\x08\xf8\xf6K\xbe9\xfd\xf8\xe1\xc3;\xf8\xe1\xd5\x07\x9d_\xf0\xe3\xfb\xd7r\x8e\xdd\x8a=\xd9~\xee\xf9\xf3xZ|\xb8\xdd\xd3\xbf\xfc\xf9/\xd6\x17\xc4\xf1\xf8 \xc6\x83\x1coj\x1b9\x91a\xdd\xaa\xd5!\xa3@J\xb9\x85\xd9\xc9u\xbf\x84\xe7]\xa4\x92F$T$\\f\xf2\xd8\x90\x91\x8c\xaf-Uuy\xd8\x83\xf2\x8d\x84%i\x1c\xd4\xc7\xca\x17\xda\xe5\xe3\xfb\xd7\xa2\x8e[r%\x86\xe0\xae7\x87Vr\x12\x11\xdd$\xfe\xef\xab*_\x01)]6!YA\xb1|\xd4t]\xd5\xf4D\x17\xc0\xcb%,_\xe6E\xcen\xa1\xa4t\xd5\xc8\xe3\x10\x88%\xaf\xber\x928\xab\x92/\xb3\xe5\x86\x8a\x97\xc4\x9c]\xc0\x93\x8f\x0d\xd5\xc1\x9c\xb8\x94\xf8\xf0\xe4k\x96\x1c\x9f\xa4$\x1bW\xeb\x975%\x97|\x0dR\x05/\xbe\xb2\x8f\xa87\x15\xa3\xcfd\xde\xd5\xf5\xa1\xcc\xe4\x0c\xe3\xedPkWv\xa8kZ\xb2\xe2\xb6\xa7\xb0w,\x97\"\xdf\xe5z\x9dg9)<{\xd9\xf2\xb0\x86\x9a\xf2\x9d\x88\x9e\x88\xf869\xd3\x1f=4TF0l\xe7\xa5\xb5\xa8%\xdd\xe4e\xc9\x1b\xcb\xcf\xb5\x8e\xcd\xe5vO\x17r\xfc\x93}\xde,\xb2j\xe7Z\x8d\xcf\xc5Lm\xa0b[\xb9P\x94\xe3U\n\x9e\xa8x\x8dt\xb7g\xb7jj\x7fe\xdf\x04\xc5qt\xe9X\x94D\xa3\xc5\xe1<\xdf\xed\x0b\xca7Y1a\xa0\xd9\xd3,_\xe7\x194tGJ\x96g\x16\x1e\xab\x98\xab\x13\x8e@\x88\xfb\x1a\xf6\x94\xf4\x13_\x8e\x96\x14\x88\x8aF\xd9\x1dp\x8e\xce1:\x96\xd1\xb2\xba\xb2\x8fi%\x025\x15\x8c t\x115\xfb\xf4\xbc\xbc\xfd\xd4]\xd8H \xa4^\xe6\xac\xe6\x93\xd8^CcQz\x8f E\xa5\x86\x1e\x10s\xd7\xf2\xd5Yl4\xb2\x86\xcb\xe1\xb1pt\xfckOu\x96\xa1\xf9NO\x9c\"_\x8aj\xab}\xa4\x81\xe6\xb0\xdfW\xb5\xd8\xc1\xf7$\xbb<=\x94\xfc?|\xdf\x96\xe3\xc2<\x83\xd4Fo?\xd8Tk80\xb9\xb0\xe9\xe5\xa1\xe1\x0b+Y\xadr\xb9V\xc0\x86\x96\xb4\x16\xe1J\xe5EK\x87\xa72\x96\xc7\xeb#\xbb\xd0\xfc\xbdW7\x84\x0f~\xf8\xfa\x19\xbc\xe3\xf5\xe7\xeb\x82j\n\xe9'Nx\xf1\xab_9\xb6\xc9\xef\xab\n\xd6U\x05\xdf\xc2b\xb1\xf8?\xd6\xc7xeHyk\x7f\x80\x94\xb7\x0b^\x8d\xef\xebj\xf7d]U_\xd9\x1f],\xec\xfb_\xbe\x86'\xbc\xa8\x8f\xa2!\x1f\xaa'\xff\xc2\xcb\xfa\n\xfe\xe6X\xc3]\xe5\xfd\xdd-\xbbo<\xb2\xfb\x0frEf\x13\x1e|+\xce\x86\xfc+3H(o\x9e|_U\x8b\xac M\xe3\x11\x90\xac\"\x7fI\xb6\xb1\xf7\xa2\xbd\x0e\x7f\xb7\xferz\xca\x875\xae\x8e\xe7dG\xf9\xd1\xe9\xb9\xac\xed\x86\xb2\x97R\xa5pV6\x8c\x94\x19}\xf2UL\xe5\x8d\xe5\xb8\xda\xe2\x1c\x05\xbf\xf1\x8c\x82w\xb7l[\x95\x8eq \xeb\xf8}U=Y,\x16\xf6\x8d\xad\x1d\x03O\x9c\xcf\x88y$FH\xec\x00\xe1\x85\x9cI\x89\xbf|u\xfe\xe2\xfd\xd9\xbb\x0fo\xdf\x7f\xe5\xd2Wvs\xce\xfda\xf9i\xa74\x7f\xeb\x91\xe6\x0f\x95#\xfe\x1e\x97\xe4\xb3o\xe1_\xf6\xcb\xc5\xf7U\xf5\xb7\xc5ba\x1f\x87\xbc\xd2'\xfc@\xcd\xdf \xe5\xed~\xb9xC\xaf=\xf5\xcf\xd7\xe2\x8d\xff\xf5-\x94y\xe1\x1cxN!;\xa6\x87\xfb\xbdQ\x03\x1d\xc5\xa8\x9a\xca\xb6->\x96;R7[R|\xa8\xe4\xe21W3\x8c\xbf\xf1\x8b\xbf\xe89\xbdO\xf5\x83\xb3\xef\xc7;\xab\xcc)o\xbe\x11(\x0d\"?\xb2\x99?\xf5\xd8p\xdc<]\x1f\x8ab!~\xe0G\xf9\xc7@z'\x01~JP1\x1e\x8d\x05\xca1g\xfeX\xbb\xed\x96\xc5\xad\xbes\x1f)R\xda+\x04\x905\xa3&\x0d\xaa\x84\xd0\xf1<>}l\xfe\x94:/\xe8*\x0bM\x00P5G\x1e\xad\xabj\xb1$\xb5h\xec\xcd\xe9\xed\xe2\xaf\x8f\xa4\x14\xc5\xbd\xd4X\x9e\xfd\x9a.\xaa\xfa\x88\x97a;*\xfc\xc7\xf9\xdb7\x96\x9fxO\xf3\x9f;\xad\x93<IW|\x15Q\xc7@y\xb3=4T\xeb\x987\x87\x82X\xa2\x8c\x1f\x17\xc3_Y\xd1\xee\xe0v\x02t\xb7\xa4\xabUw\x84\x93\x8avcq\xc4\xa2\xbf\xea\x1d\xaa\xa4z\xfd\xd3\xbfs\x01}R\xea\x94\x81\xa5Aw\x81y\x1a\xa8e\xeb\x99\xe3\nF\xb2K\xbevu*\x81u^P\xfbn\xa3\xd7\xbaw\xb4n\xaa\xd299\x95.r\x9d\xd7\x0d\xbb\x10\xfd\xf8-|m/\xb9}A\x10K\xd4\xf3\xdf\x04\xef{\x1c\xaeZ=\x12\xb2|\xf4\x0c\x1e\x99\xe6\xe6P\x0c\x0b\xd9\xcaG'\xae\xf2D\xfb\xde\x90\x1d/\xf3\xff\xca&\xfc\x9b\xf3\x05\xde\xbe\xd1\xf3\xa1\x8d<[\xab+\xe7p\xac\xc9\xd1\x907pM\x8b\xe2\xe9eY]\x97b5\xd9\x92\x06\x08d\x87\x86U;\xc7\x1c2\xfd2\x1c\xf2'\xf2\n3\x9a\x07r\x89\xecU\x87\x0f`\xcb\xf5\x92\xc8!m\xfe\xd8'1\x19\xf58\xdfV\xc5JE\x06\x165\x97S9/\xdb\xf9\x01R\x07j.JN\x19\xf3wD\x15\x16\xed\xa6\xfe\x84\xaf^Z\x84G\xca1\xad3\xfe\xcb\x9f\xff\xf2\x95c\"\xcd1\xe6\x86\x1ft\x0f;!*^\xe4\xd7\x8bo\xbe\xfe\xa6y\xe4\x18B\xf2\xbf{R\x93\x1de\xb4O\x90~*\xd6\xd7g\x8ag\xd5+\"/\x9f\x8d\x95\xf95\xfd\xf9\x90\xd7t\xf5\x0cX}\xe8\x0b\xdd\xa2R0\xb1f\x18\xd9\x0c\xbe~N\xeb\xab<\xe3\x85\x9dfU\xb3\xab\x9a\xd3%i\xe8ig\xb1<\xbd\xfazI\x19\xf9\xfa\xb4\xacV\xf4\"/\xd7\x95|}\xd3y\xe46\x87\xdd\x8e\xd4\xb7\xcf\xe0\x07\xca\xdeT+zV\xae+\xf8\xf9@kmyQ\xaa+\xe0E\x88\x00`z\xad\xac\xf6TJ\xfal5x\xfb\x17\xba\xc1\xd2\xd6\xd7\xab\xf1\xe3o~\xfd\xeb\xc7v\x83!4\x87,\xa3M\xb3>\x14wi)T\xc7\x8e\x8b\x91L\xfap\x1a\xd2\xdcf4\xad\xf6\xb8p\x06\x91w~\x00\xbc\x1f\x11O|\xe3\xe09 \xf4T\xdd\x10sF1\xf7\xc4\x85\x9f\xefC\xceH\xee\xf3|f\xd8\xf3\x16\x12\xa1\xe7SE\xde0Z\n\x9aK\xd4\xfb%e\xd7Um\x91\xa8\xe7]\xc4\x90\xb2\xbe\x9bmIYR\x93\xa9\x19\xf1\xb2W\xab\xb9\xab\xca\xfc\xd2FX\xf4\x14.\x94\xc3w6M\xd8\x8d/\x9d\x9a\xb7\xed\x00\xf5>\xf3\x13\x9b\x1c\xe5\xf4B\xcc\xdb\xd7\x85 \x8b\x8e\xd8\x86bdO\xf6\xfb\x8b\xe8\x97\xa7\x0c\xc7M\x8ea?[__\x1e\xf2bu1\xdc\x0f\x03^\xdfT\x98\xe5\xd9\xf3\xf5\x15\xdd;\xbfn\xe7t:\xf9\x9c\xde1\xef\x1b\x0c\xea\x19\xc2\x9cLZ\xc4\xa8\x17\x8fI\xde\xe1\xaeZ\x1d\n\xea&( \xb2\xa6D}T\x95k}\xbeq\x93J\xc3\xbe\x99miv\xd9\x1c\xcc\xe7\xfc\xf6\xa9\x9fd\xcd\xf2\xde%\x92\x1f\x82\xff(kzf\x8e\x92*\x8fh\x17\xcd\xear\xd2\xe0k+\xf1\xf8</3\x11\x9e\x95\x97\xfb\xb4Y]\xc2\xaf\x17\xbf\xfd\xcd\xe3\xa3w\x06\xa7\xac^\x1d\x8f\xea\xcf\xff\xa7w\x90k d\xad9\xc5Z\xaa\x89\x8cvT\x8c\x8b\x87\xd61\xcfF\xc7H\x8dDASH\x14\xb4DA\xeb\x90(h\x89\x82\xd6!Q\xd0X\xa2\xa0\x99\x91(h\x1a\x89\x82\x96(h\x89\x82\x86<%%\nZ\x8bDA\xeb#Q\xd0\x12\x05\xcd\x80DAK\x144\x9f\xf0\x13\x05\xcd\xfaN\xa2\xa0\x0d\x90(h\x89\x82\x96(h\x89\x826\x00\x96\x0e\x94(h\x02\x89\x82\xf6\x8fBA\x8b\xa7\x7f5\xb7e\x96\x97*\x94\x8f\x85\xfcu.\x9fi\xb9_\x82\xef\xa5^\xb4Q\xbe\xd4;\xea\xd7\xcf\x96\xf15h~\x1f\xb2\xaceU\x15\x94\x0cUa^\xeb\xa6jz\xa0qs(0\x8dd\xdbTH\xb6\xcdd\xdb\xec\x90l\x9b\xc9\xb6\xd9!\xd96Y\xb2m\x9a\x91l\x9b\x1a\xc9\xb6\x99l\x9b\xc9\xb6\x89<%%\xdbf\x8bd\xdb\xec#\xd96\x93m\xd3\x80d\xdbL\xb6M\x9f\xf0\x93m\xd3\xfaN\xb2m\x0e\x90l\x9b\xc9\xb6\x99l\x9b\xc9\xb69\x00\xd6\xce\x94l\x9b\x02\xc9\xb6\x99l\x9b]\x98\x7f\xca\x9a\xd3\x820\xda0\xa7\xa1\xf3\xb5x\xa4\xcd{vNYk\xf3\x94ow\x99\x03\x9e6\x94\xd9l\x9f\xc7\xc5\xa8\x07?[3\xa8L\xebbK\n\xe5\xd4\xbd\xb8r\xf8\xb8RG\xb2\x07\xb0\xb3y\x1c\xf5\xbd:&O\x1eFO\xed\x00QC@X\x03\x01SU \x8cVI#\xd42\xe8,\xcc\xac\x1er\xdc1\xe6\xb6\x10\x82\xdfJ\x08\x11\x96Bw\x03\x08\xdb\xa2\xad\x850\x97\xc5\x10\"\xad\x86\xce\x02\xb9p\xd1\x96C\x98n=\x84`\x0b\xa2\xb3(e\xd9\x08\xb2\"\xc2\xdc\x96D\x08\xb4&B\xa8E\xd1=\xb2[k#\xd6\xaa\x08s[\x16\x01g]\x849-\x8c0\xd9\xca\x08q\x96F\x98\xcb\xda\x08Q\x16G\xf7t \x0d]\xf9\xad\x8ep7\x96G\xb8C\xeb#\xdc\x8d\x05\x12\x02\xad\x90\x10g\x89\xf4-\xc18k$\xcck\x91\x84\x00\xab$\x84[&!\xc2:\x89X2\xbfBX(a\x0e+%\xf8,\x95\x80?\x9e!,\x96\x10x\x8a\x0b\xb6\\:K\x13VM\x84\xf5\x12\x02j9\xa3\x15\x13\x82,\x990\xb75\x13\"-\x9a\xeeq\xd5\xf8\xad\x9a\x10o\xd9\xb4\x96\xc7\xbf\xe8\xb3n\xc2l\x16N\xc0\x1b\xea\x00c\xe9\x840k'\xf8T\xf0\x91VO@\x94\xeb\xd0\xff\xcdd\x01\x85(\xe1\xe2-\xa1\x80he\x84E\x14b\xad\xa2\xe06\xfd\xa0\xac\xa30\xb3\x85\x14f\xb2\x92\x02n\xc4L\xb6\x96\x02\xdeb\nH\xab)\xa0-\xa7\x80\x1bP\xe1\x16T\x08\xb2\xa2\x82\xcb\x92\nsYS!\xd4\xa2\n\x91VU\x08\xb3\xac\x02\xa2\x13<\xd3\xcc\xff>\xde\xd2\n3Z[\x01S5\xc7,\x9b\xcf\xf2\n\x18\xeb+L\xb0\xc0Z\x0b\xe4\x0f\xba\xac\xb00\xb7%\x16\xbc\xd6X\x88\xb5\xc8ZK\x93w{\xb7\x9a\xc3o\x99\x05\xb7u\x16\xa2,\xb4\xd6\xa2\x9c\x96[\x88\xb5\xdeZK\x93'd\x87>q>+.\xa0,\xb9\x10a\xcd\x850\x8b.\xc4Xu!\xd8\xb2\x0b\xeeU\x04<\xd66\x08\xb0\xb8a\xad\xbc\x10c\xe9\x85Pk/\xb8\x1b\x1ec\xf5\xb5\x16\xd6\xb3\xa9b\xa7\x0c\xce\xfa\xeb\x9c\x10\xe5\xc6m\x01\x86y\xad\xc0\xe0\xb3\x04\x83\xdb\x1al}'\xd6J\x0c3\x8e\xdd\x00k1\x04Y\x8c\xc1z@\xb9\xaaX^n.\xf6\xd5\xb5-\x9e8Jg\xe3\xb2uJ\xe8\\\xef\x17\xfb:\xaf\xea\x9cyl\x85\x93\xbe6\x0c\xde\xabM\xad\xc6\xd0\xbdF\xb3\xb5\xc6\x9el\xf2R\xf4\xc5qe\x07\xdf\xe8\x1e\x94\x16\x00*\xb47\xbd\xbf\xea\xcf\x99,\xd5\x12\xcce\"\xf5D2\xa77\xccn}\xf5\xca\xd3\xabk\x1b4\xf5\x7fl\xfa+]\x0b-f\xfeO\xa5\xae&M#\xf5\xf3\xef\xc8\x86\xbe\xa7?\x1fh\xc3\x16\xf2wKa?\x1fh}+\x8a\xe1\xc5rIR\xd8U\x0d\x03*\x94\xbeB[\xbc\x803\xd6[\xab\xf6\xec\x16r\x9b\x16\x87miM\x85\xb5\xa0\xac`W\xd5T[\x07L\xfb3\xab\x18\xb1\xd8\x98\xd1\xc2t\xa4mP\xa1\xa8\xad\x8a@\xf1y!E\xf1\x8f\xf2\xb0[J\x9d\xa4v\xa1\xea\xf9\xeb\xd8\xda\xdb\x17tV\x1dJv!\n\xb3-c\xd7\xa4\x81\x86\xb2\x13\xc8Y\xa3m5\x0d\x1cJ9\x98WR\x1d}\x9d7\xc3\xf1\xe1\xf5\xf7>\xa6{\xa0\\\xbfG\x05\xb5\x8e\xe0\xfd\x82\xbe\xbb\xfdQp2\x92\x1f\xb8F\xf2\x03O~\xe0\x1d\x92\x1fx\xf2\x03\xef0+{#\x84\xb9\x11\xc4\xdaH~\xe0S\x19\x1a\x11\xec\x8cY\x98\x19\xe1\xac\x8c\xe4\x07>\x85\x85\x11\xc2\xc0\x88`_$?\xf0\xe4\x07\x9e\xfc\xc0\xb1\xec\x89Y\x99\x131\xac\x89\xe4\x07n{\xcc\xcb\x8e\x08`F`<\x88C\x18\x11\xc9\x0f<\xc6\x95\xda\xc7xH~\xe0xf\x03\x92\xd5\x80a4\xe0\xd8\x0c\xc9\x0f\x1c\"\x19\x0b\x01l\x85\xe4\x07>\x03\x1b\xc1\xcbD\x88e!X\xf7\xcd\xe4\x07~\x84\xe4\x07\x9e\xfc\xc0G\xf8\xff\xd8{\xd7.\xb9q#M\xf8{\xff\x8aX\x9d\xb3#\xc9.\xa5Zj\xb7gF;=g\xd5%\xb5]\xb3\xdd\x92\x8e.\x9ew_\x1fo5*\x13\x99\xc9)&\x99&\x99u\xf1\x8c\xff\xfb\x1e \x00\x12w\x82$\xe4\xee\xf6\x02\x1f\xecV\x16\x19\xc45\x10x\x9e\x88@\x8a\x98\xdcX\x0f\x81\xc9\xde\x01\x93<\x03r\x1c\xf8L\x0f\x80\x1c\x07.\x8b\xdc\x85\x8f\xa4!\x07\xda\xd1F\x8b\x06g\xebLe\xa6W\xd7T\xdd\xebB\xa4\xae`q\x89P\xa1\x0d\xedNM\xc5a5A,\n\xaa\xac\xa7|9\x18\xb63P#\xce\xe1\xb2e?F\xe3\xbee\xdbZ]\xf1\xd3r\xbd\xdd\xb6\xb4c\x96\xba^]P\xc0|\x83\xa9/\xaa\x17\xf8-\xe5\xb7\x86\xfe\xf9T4t\xf3\x02\xb6\xa4\xd4hK\x0fL\xe2\x84F\x1c\x9d\x88\xf5\xf3\xf5\xa3\x01K\x88\xc6\xf0\xae\xacN\x07\xda\x14k\xf9\x1b_mkR\xb1\xf6 .\xb4\xa7\x95\xec\xf8S\xd5Cq\x86\xd5z\xc1\xa5\x95\xb4m\x87.D\xf0\xea\xd4\xb2\xae\xbe\xa6\x13\xfbS\x17\xff\x99;\xd7 \xc5\x1d\xdd[\x16\x87\"\xb6w\xf9\xb3\xbdS\x87\x87+G\x98V\x9d\xc1\x82v>\x95\x06}\x8b\xa0\x8c\xfa\xd3\xc5\x16J\xba\xed\xa4o\x81p6\x90\xa6!G\x98q\x81\xe0GX?_\xdd\x03%\xeb=\x90\xe3\xf1'\xecE\x95\xf1\x1f\xde\x0f\xf5\xa5\xf2\x06\xebQ>Ck\xe8\x9a\x13\x05\xf6\x1fE\xb5)\xd6\xa4\xa3=\xd7$z\x90?(&\x92*\xae\xa8\xd6\xe5ic\x18~\x04\xbf\xd2\x93}\xc6\x88q\xeaX\xc1\xa0\x99\xeaV<h\x0c\xe5\xf2\xe9\xa25F\xcbh\x02\xb7\x95\x1b\xda\n\x92\x9f/\xafa=\xb2%\xb7\x12\xab\xa9\xd8Uuc \xf8r5\xea\x9f\xc0\x9eY:\xb0f\xea|\xc7\x006\xf4\x866\xda\xab\xa1\xc1\x13O\x9b\x03W(\x1e#\x0du\xaf\x04M\x0e\xfb\x06\xad8\xb7Y7\x1b\xda\x98v\xb9\xfb\xee\xf4\xa4\xbd\x91*\xa5\xc9\x7fb\xc6\x8e\xbf\xa2,OR\x13\xa7?\x89Lk\xa29\x86\x01\xe9\x80\xc0\xae\xb8\xa1\x15\xa0d9 \xcc\x0c'.\x99_\xc8\x9e\xc89Nd\xe9~\x02\x1f\x92\x9c\xe3$P\xa6z\xbd\x04\x85\xb9\xa9\x8f\x00~\x96\xda\xfb\x05\xc6=``\x86\x17L\xb8\x019\xc7\xc9\\\xcf\x18\x98\xec\x1d\x13\x14\x95s\x9c\xe4\x1c's=h`\x9e\x17\x0d\xa4\xf2\xa4\x81Y\xde4\xe1\xe5\x90s\x9cL\xf3\xae\x81\x89\x1e60\xcf\xcbfL\x05\xc7y\xda@Zo\x1b\x98\xe0q\x03\xd3\xbdn`\x86\xe7M\x84\xca\xcc9N\xb0L\xf6\xca J\xcb9Nr\x8e\x13\xa3\xa4\xf1\xde\x81x'\x14\x88\xf1\xe2\x81i\x9e<0F/\xcf\xf4\xe8\x81\x08\xb9\x11\x19+\x16z\xf7\xc0\xac\xce\x8d\xf7\xf2\x81\x88V\xce\xf0\xf6\x81\xb9\x1e?0\x9a|a\xdc\xf3\x07\x12{\xff@\"\x0f \x88\x9b1\x8b=\x81 \xde\x1b\x08\"=\x82 \xda+\x08\xe2&\xd4t\xef \x98\xe4!\x049\xc7\xc9x\"\x90\xe0\x9fG\xdf\x8f\xf7\"\x82\x84\x9eD\x10S\xb5\x9c\xe3$\xad\x97\x11\x8cz\x1a\xc1\\o#\xaf\xb4\x9c\xe3$\xe78\xf1\x94\xc9\x1eK0\xd9k r\x8e\x13g\x99\xe3\xd1\xe4\x15\x96s\x9c\xc8\x92s\x9c8J\xceq\x92s\x9c8\x1f\x18\xc5\xdar\x8e\x93\xe1O\xb1\x9d\x99s\x9cx\x1c>r\x96\x93\xa1\x04fS\xcer\xe2x=g9\x99\xe0\xe7\x91\xb3\x9c\xe4,'CI\xea\xbf1\xc5wc\x92\xdfF\xcer\xb2\xd4Gc\x86\x7fF\x12\xdf\x8c\xe9~\x199\xcb\xc9\x12?\x8c)>\x183\xfc/r\x96\x93\x9c\xe5$g9\x89\xf5\x9fH\xea;1\xc7o\"g9\xf1=6\xea\x1f1\xc17\"&?\xc6\x14\x9f\x88\x9c\xe5dN\xa2\x901\x9f\x87\x9c\xe5$\xde\xb7!\xd2\xaf!\xc6\xa7!\xce\x9f!g9\x81\x99>\x0b\x13\xfc\x15r\x96\x93\x04\xfe\x08\xa3\xbe\x08s\xfd\x10\xbc\xfbf\xcerb\x95\x9c\xe5$g91J\x8a\x8c\x13\xb1>\x02\x93\xfd\x03&\xf9\x06\xe4,'3}\x00r\x96\x13Yb\xb2\x9c\xec\xd58k\x10\x91\xe8\x06\x98?\x04\xa2w\xcdiB\xba\x85\xd1l\x0b9\xaf\n\x8c\xf7b\xce\xab\xf2\x19;w<#H\xce\xab\x92\xa2\x17s^\x95\x9cW\xe5\xef+\xaf\x8a\xc2\x0d\xb2?\xafI\xd5\xd5+z\xac\xd7\xfbvu\xf3l\xf5\x9a\xfd\xd7E\xb5\xad\xf1\xdd\xceto\xb0\x1d\x1az\xaf\x01\xc5\x15\xc4\xb1\xee\xda\x8e4\xddeW\x1ch\xf0\xb1aqnHG\x9f\xb0\xe7\xc5_6\xc2\xc8\x08\xbe.H\x9fK\xde\xa0\xc8\x0f\xa9J@{\xffrq\x9dQ\x0c_OE\xb5Cytc\n\xd3\x07\xceU\x053SKT{\xcc\xa1\xe5\xfeF\xe7(\x9d\x0f\xb3\xb4>\xa2\x87zI\xef:k\xc3\xab\xd1\xb2\xe96\xb9.(\xc9\xac\x84\xee\xbdcy\xedXr\xb1\xf8\xbct\\S[\x15\xe4 \xa5\\Sf\xe4\x15\xff\xf4\xc1bO\xfc\x11\x81\x9ea\x1ay+\xe4\x80:\xbe,\xa2\x85\xbb\xdb8\xb6PT\xf1\xa6\xd6\x87\xc8E\xa3\xca\x88n\xbf\xcbY\xd69\x8b\xdcs\xc8\xed\xc4\xea\xad\x83\x97\xc8\x0c;\xab&qRM\xe5\x9c\x1a\xe5\x94\xeapF\x1d\xed\x14\x87\xf3\xa9\xcf\xe9t\x89\xb3i\xa4\x93\xe9t\xe7R\xff\x18\xaaGA\xac\xb5\x06N\x14\x15\xec\xde\xbf;\x1f\x9cJ\xc5\xc9\xbfe\xc6UC\x0d\xebc]7\xf8 7?\x1alI\x0f\x16\xec \x9alZ3\xb5\xb6\xc9'?\xd4\x87\xa1RN\xac\xa0\xa1G\xca\xe9\xd3oI\xd3\xf7\xac\x0f1\xd3\xda\xc8'\x97\x89\x95\xb1c?ZD\xab+\xd2\xd2\x15\x9f\x90+\x91\xedm\xa5\xd47z\x8f\xd0\x16^p\x97\xd2\x16\x9c\x7f\xa0R\x1c\xe7\x93\x1e\xe6\x9dGy|8\xb2\xe5\xc6\xaa\xf2\xb7=\xc9\x11|\x10\xb7\xec\xfcm\x1f\x95\xf4.\xe0'\xda\x04=\xa0i\x96\x94\xc7d\xeb\x90\x9c\xe6\x88\xac(\xac\xb0\x95\x19jg\xd2#\xac\xe3\x00\xbb\xf4\xf8j\x1dY\x97\x1eX\xf9#\xfa2W\xc5\xeb\x87UqF\x9c\xdf\xbd\x0b\x0e\x99\xca\xc1R]\x99\xf6\x113p\xc0t\xafp]\xeb\xe3\x9ea)\xfd\xef\xea\x1a\xda\xfa@/{d\xd6\xa9\xee\x15U\xad\x0e\x9c\xaa\xef\x11\xe2\x15\xdbw_ \xf5\xc5\xd06\xa8mi-RyR\x87\x08Q\n\x04\x00\xaf\xef^Dl-\x13\xcf\x1f\xb6e\x97b\x83Yl\xc9\xa5\xb0\xe2F-8\xa7~\x89\xd3\xae\xe6\x90\xc3Tk\xcdk\x9f\x0d\xf2\xa6\x99f\xee\xc1Hf\x92-1\xc7\xe2L\xb1h3,l\x82\xb1%i\x12;/\xab\xfb\xe8\x05\xd1Y\xa1,\xcey\xe1\xd7\x8bs\x03T\x0c\xfb\xd7\x1d\x922'\x08\xc5\x0e6\x99\x15^\x12\x08#q\xf9;D\x04\x8e\xcc\x0c\x15QCB\x14i\xa6\x0f\xe5\xe4p\x90Y\x01 F\xa0\x87\xde)\xda\xf6;'\xc8\xc3\x08\xe6\xd0\xa5\xab\xc2\xe7\x06r\xf8\x036\xe6\x84h\xb8C1\x16\x04_D\x85[\xc4\x85U\xcc\x0c\xa4\x98\x1b:\xe1\n\x91H\x12\x14\x91.\x0c\"I\xe0C8\xd4a^p\x03\x1feW\x10\xc3\xf4\xb0\x85@xB7\x16\x9007\x04\xc1\x19j0#\xb8\xc0\x08'\x98i\x97i{\xd3\xcc\xb0\x80\xc1\xfd\xdf\xec\xbf/\xfc\xdf\x9b\xe7\xec\xefp\xec\x17\xf2z\xf7\xfe\x85\x0e\xfd\x0b\\\xf8]\xee\xfa\x0b\x1c\xf4\x1d\xce\xf8s\xdd\xef\xbd>\xe3\x0e\x17\xfb\xa0S\xbd\xee\xd7\x19\xe78\xaf\xbf\xf3W\xb3-\x93\xdd\xe1\xc7\x1a\x13ryw\xd7?\xe8\xd6\x1e\xe9\xc8\xae:\xd5\xba\x9c\xd5\x97\xb9\xa7\xcfsH\xb7\xfaz\x86\xd3\xb9\xd7\xcd\xdc\xedX\xees%\xb7:#\xc6]<\xe4 \xae\xb8\x84\xcft\x02\x1fq\xfb\x8es\xf4\x0e\xbav\x1b^\xd0\x9ax\xe3o!\x17\xed\xf9N\xd9V\x05\xc4\xbff\xb9Z\xbb\xdc\xaa\x978R\x1bN\xd3s\xdd\xa4-\x97\xe8\x05N\xd0\x9a\x99\xebrq\xd6\x9c\x9a\x97\xbb1\xcfw\\V\x9c\x94g\xb9%;]\x90\xc7\x9d\x8e\x83n\xc6\x11\x8e\xc5c\xae\xc4\x9a_\xad.=\xd6Y\xd3\xef \x1c\xe1\x12<\xe2\x04\xdcWo\x81\xa3\xaf\xe6\xd4\xbb\xc0\x8d\xd7t\xd9\x9d\xe7\xa4k:\xe4\xa6q\xc1\x9d7rA7\xdb\x90c-\x07u\x9a\xe3z\xb5#\x1d\xbd%\xf7\xab\xe6Tu\xc5\x81\xae^\x0f\xb9[\"\xb0\x1d#\xd3\x8b\xc3\xa2\xd63\xbb\xe0\x03fF\x17W&\x17\xd1\x83A\xd9V\xc6\x96\xee3\xf8zt\x9eL,\xce\xd3\x03\x96\xb1\xc8\xddD\x80\x16\x96P\xa6\x954\xe0\x16\x96\xf9\x10\x97%*\x909e&\xf0\x85e6\xfceI\x1a\xcb\x902\x19\n\xc3\xb2\x10\x10s\xf4\x967\x13\xcaBp\xcc\x92\xe7\xcd|\xb2\x10(\xb3\xe4\xf92\x9d\xa4\x83\xcf\xb0,\x00\xd1\xa4\x80dP\x1a\x96\x99\x80Z_\x9bd\xb0\x1a\x96$\xe0\x1a\x96t\x10\x1b\x96$@\x1b\x96\x98\xcc\"\xf3A7[\x8bz3\x89,\x81\xe2,a\xee\xcc!\x0e[\xc2\xa5\xa5\x96\xc1t\x968W\x86\x90\x19\xe0\x1d\x16gF\x90\xc0V\x1c\xc8\x002\xb6K\xcf\x84\xf6l\xc5\xe5\xcd\xf4\x11\xaaA\n\xb0O\x13\xe8\xca\xe8\xb1\x10\xf8\xc3\xb2\x1c\xfe\xd3\xc4\xd9\x1b\xeeB@P\x93\xd592u\xcc\x85\x08\xb1\x8c$\x97\xf0f\xe4\x88\xc8\xc4\xe1\n \x8f\x03\x10\xfd\xef\xff\xd5\xdd\xf6\xc9\x90\"\x96\xb8\xc6\x8fg\xd4\x08\xb54\"\x83F$\xe0\x88\xc5\x8e\xe5\xf7g\xcaX\x06Ab\x99\x07Db\xf1\x8c\xd6\x0cP\x12\xcbH\x06\x8cP\xe6\x8bp\xc6\x0bO\xe7\xc5@\x96X\xc63[X\x19-f\x82\x98X\xa22X\xc4\x01\x9aX\"2V8S<8>\xeb|n<#\xc5|\xd0\x13\x8b\xa7z\xdao\xc9`P, \xc1P,\xc9 Q,\xa9\x80Q,\xfe\x0c\x10\x8e\xcc\x0f\xcb\xa1R,I\x00S,\xe9`S,\xe3\xe0)\x96 \x84\x8a%\x02H\xd5\x1e\x1c\xc9\xcc\xe0HV\xe0\xfaj,L7\x96\x81!\x02f\x15\x0f\xc6d\\0*\x9f\nx\xc5\x92\x10~\xc5\x92\x06\x84\xc5\x92\x06\x8a\xc5\xb2d\xbc#\xb2\x1f\x8cg=\xf8\xeb\x10\x1c\xd7\xac\x9f\x7f\xb9\xbay\xb6z{[Q\x0d\x9cU\xce<\xb4:\x1d\xe4\xc6\xfa\x04\xde\xfe\xfb\x9b\xd7\xef/?\xbd\xf9\xf0\xee\xf5\xf9\xc5w\x17\xaf_\x19\x7f\xf9\xe1\xed\xabO\xdf\xbf6~|\xfd\xff}|\xfd\xfe\xcd\xcb\xef\xf9\xcf2\xa7\xb8G\x94\xdb;\x92W\x90W\x85\x9b\xe38\x925\xfb\xb1\xdd\x17G\xae\xbb\xe0\xf5\xfb\xf3\xe7_re\xd1\x90\xb5\xe2\xd4\xe8\xa8\xb4\xe3\xe3\xea\x8d\x03E\xc5OfO\x15\x0fN\xf6\xa9\x95)\x11\x1b\xfbB\xfb\x17\xf0N\xe5^\xe1\xb7\x15n_|\x95\xf0_\x0f\xf5\xe6TR k\xeeGj\xc9\x93\xfd\xf4\x02\xe4\x7f9\xa4\x91\n\xe8]G\x1b\xa6-\x15A\xc6\x88\xbe#\x0d\x91\xf0\xb4\x05L;\xf0\xf6\x8a\\\x95\xf4\x92\xbf>\xc9\xd1|p\xcc\xeej!E\xc2\x81\x022a\x83s\xce]\xa1a]3-\xfe/O\x9e\xfc\xab\x18\xac\xae\xbe\xa6U\x7f\x12\x97\x95\xb89\\\xee\xeb\xfazR=\xb4S\xae\xafR\xaf\xff\xf0\x030\xc9\"~\x84W\xb1\xe3#\xaeT\x87cN\x8a0\xac\xfb\x17\xda/E\xc5\xc7\xb5!U\xbb\xa5M#\x83k>\xf2\xe6@\xb7o\xea\xd3n\x0f\x04~hw\xaf\xb9s\xf3\xe9\xf0\xf1Nh\x18U\xd2\x0f|>\xbc\xdcl\x1a\xda\xb6 \x1fe:\x89\xfd\x80\xfd\"\x1c\x98q@\xfbYj\xcd)\xde\xe6\xd6\x9e\x08<\xec\x15_\x9e\xecr~T&\x91\xf3\x15\xf7k\xe0\x9dP\xe0\x1dL\x18\x05N\x16\xcd4C\x96>\xef 4\xf7\xe03Ty\xd6<\x04\xe7\\\x84\xa4\xf3\x11\"\xe7$\xcc\x98\x97>\xd5\xee\x98\xa0\x10\xba\xd4B\\c!\xbe\xfb\xfe\xdd\xb9\x903\xdc]\xe1Z\x01\xbc+\xde\x91\xa2\x99\xbc\x08\xf8`\\\x1eIa\xf1\x91q\x0b\x81U\xe3R\xf4\x9ekZ9\xe0E\xd1\xb5\xe2%6\xad\xf5\xbd\x0d\xeb\xa4\xbc\xb2\xa1U}\x98&\x1c\xa3S8V\x8f\xaf\xcb\xa8\x19D\xc9\x0f\xe4x\xe4\x10\xbf\xb5F6\xb1kC|\xa8\xdd\xd7\xb7\xad\x98\xd2L*\x9b\x9cb-\xb4\x1d\xe9N*\xfb$\x1bxY\x0f\x06\x89!\xceZd\xd85\xfc\x85\xbe\xc7^\xbf\xf9\xf4\x03<\xfaRn\xe4g\xf0LNk\xdc0\xcf\xe0y\xbf\x89\x1a\xe2\x84\x88\xc7q\x9d\xa9\x1aG\xb2\xf8\x8d$\xf3 \xcdX2\xff\xa8\x19M\xb2\x8c\x18O\xc3c\xa1\xe8\xed%\xc6\x94,\xe9\x8d*Sr*\xe3\xca\x94\xbb\xc4\xc8\xc2\xe2W\xfa\xbd\x96\xd1\x1b\x8e@\x9c<\xd2\xac\xebf\xc3\x8eBL\xa5p\x82\xa8\xae\xda\xa2\xedx\xee\x96\xad\xa6\xf2\xd9\x8a\xd4\x81\x7f\xb1\xbdq\x8d\xcf\x0eU\xc6\x96\xa1)\xe9\x80\xba\xb5\xb4a\x8c\xc6\x1d\x1a7Y\xe9N7=\x06\xad\xfb\x99\xdd0\x02\xfa9H\x00M\xd6\xd1N-\x1d\xf3\x89\x19\x9a\xda\xa3\xabC\xdaz\x96\xbe\x0ek\xec\xd0\x1d]\x89\xb5\xb6Go\x07\xbb\xd7\xa5\xbbc\xb4\xf7\x88\xfe\x1e\xd1\xe0\xd1:|L\x8b\xa7\xd1\xe3\x9fS\x93\x7f>]\x9eR\x9b\x87\x8d\xf8\xc4\x1a\xdd\xa5\xd3\xa7iuw\x86\x18\xe3Ln]\xa3\xd8qx]\x0di\xef\x9c\xd7(N0ls\xa6\x99\x9ci\x06\"\xcd\x8cI'\xbb\xe1\xad\x18C\xa3\x7f:\xda\xb4\xf0\xec\xf8\xceA\x9a\xb4\xcb\x1b\xfb{H\xe0\xc4=\xdd\xda\xcd\xdd\xfb\xf8\xc4\x1d\xdc\xb7w\xbb\xa6^\xc2\xfd\xda\xda\xa9\x9d\x1de\xee\xce\xe1}\xd9\xbb#{\xf7\xe2\x88]\xd8\xaf\x99\x96\xee\xbc\x9fg\xcf\xfd\x1c\xbbm\x9a}\xd6\xbd\xc3&\xdc[\xf5]5~?EeRT\xdb\x12Sw\xdc<[\xbd\xbe;\xd6\x15\xad\xba\x82\x94\xe7\xa4\\\x9fJe\xab\x8d\xd0.$N\x01pgRR\xa2z\x15\x7f\x0c;\xbc\xf7\xaf6ts\xe2\xceJ\xb0%\xeb\xae\xbf_p\x1d\xf76\x0f\xd6\xechs\x80\xbe\xd5\xe2\x91+L\x19q\xd9\x91f7\x9a\xcdIH\x13\xef\x00\xbe#\xfez w\x977\xa4)\xd80\xc6\x899\x90;\x90o|\x01\x0e\x15\xe4\x1e\x14\xc1\xeaa7\xb4\xe8\x8f\x8a\x7f\xa4@\x877\x86\x96B\xdd3\xcf<\x91\xd1\x916E\xbdY\x81*\xb3\xa1[\xdaP^u\xf1(>\xf5\xae\xa9o\x8a\x16\xf3\xca(\xc2_\xd15\xb9\x17\xad\xf9U\xdf\x89\x17\xd5\x9a\xfd\xf9\xa6GW\xb7\x8f\xee\x1e\x83R\xbe\x81G\x04~\x05\x8f\x9e\xc1\x13h\x1e\xc3\xff\x81;\xf85\xac\x1fs\x19\x8f\x9e\xc1\xaf\xb5N\x84'\xca\x10\xd1\xcd{VQ\xf8\x95\x14\xfdH{\xf4\xa91\x8e\x8f\x1f\xbb\xa7\xf9\x85\xfc\xc7\xab\x82\x8d\xc9\xd5i\xd2,o;\xee\xdcz\xd9\xd0[\xd2l\"wQmC1$\xe8\x96jS\x1f\xeb\xa6S\xdc\n\x0eE\xc5\x9d\xf0\xf8\xff]\xf2\x1d\xd3\xcc\xe2Ph\xb88\xee\xa3\xa4,\xeb5w\xdfc&\x0d~\x11\xc4\x17\xe5\xb2\xa9\x0f\x87SUt\xf7\x97\xc7\xba\x1e\xcb%\xe2j\xc8\xd3\xa7pj\xc9\x8e^\x16r\xccg4F\xad9k\x96\xb7]O\x9fZM\x13\xc4\xb5\xf2y\xa9\xcfQ\xcf}\xa1\xf5:W\xa2V\x85\xbf\x81\xe7\xf0G\xe59\x80G\xbbzWs\xcay\x85\x8c9\xeb\x90\xc7\xf0\x0d<\xd8\x15\xdd\xfet\xc5\x99i4c\x9e\x0eY\x9f\x9ev\xdcg\xfa\x15]\x1b\xe4\xb4\"\xae:\x95\xdc>e\xc2\xcc\xc4\xc2\x7f\xfa\x1fjm\xf5\xb1\x99\xde\xab\xf6\x14a&\x95\xf2\x83\xab\x1f\xfb\x8f\x02\xfb\xa8S\x1b9\xd7\x8eV\xbd\x8d\xfa\x87\xa2\x12N\x08\x83\x1e\x1a\x06U\xf9\xbe\xa0iX\x0b\xf8\xf6V\xa1\x92\xe2)F\xe1\x91\x98\xbeg\xca@\x9f\x0d\x95},w\xed\x8b~\xf2\xd0;\x9e\x08M\xb8\xcdPr\x80\x1b\x8a\x1b\xa7Z\xbb3t\x83*Z\xd6;\xa2\x0fk\xa6HH\xc7\xbd_\xdbbH}\xf6\x91O3\xdc\xb8\xdc} r\xf2\xf5jx\x03\xdb\x86\x8f\x03\x85\xd77lO\xe6{\xbe\x94\xf7C\xbd\xa1%\x94\xc55\xe55\xe8\x15.\xab\x86*\xf6\x19|\xa3\xd5\xf9\x19<E\xcd\xc9Z\xf5\x07l\x94\xfa|\xefj\xff\xe5\xea\xeb\xafx\xe9G\xfc\x1b\xf8\xcd\x97\xff\x1d\x86\"\x04=\xff\xfa\xbf{\xf4\xe4D\"\x9dU\xfdr\xc2A\xa0\x13.\xd1kf\xabt5\x7f\xbf\x1f\xbf~\x93\xb9\\\x9b\x96\x88\"\x82\xab\xfe\xab\x92\xc6l\x80F\x9d\xa2\x0e\xfa\xce{\xdb\xfd\xc4\x92\xcb\xb2\x01\xdd\xba\x89\x11\xe3\xb1r@\xb7tb$\xf9-\x1e\x08X=1\x92\x9d\xd6\x0fx-\xa0\x18\x91\x96%\x04C\xad/7\xd6V\x0dj\xbfK\xe5\xa2)\x1f];\xea\x9b\xcd\x84I\xe0\xdd\xf0!\xa2Q\x16\x88\xb1x\xf37\xe4\xf1\xb3Ba\x11\xe3\xd1F\x00\x04\x0c\x01\x98\xd3\xc0\xb9F\x81!\xc6\xde\xcc\x8c\x07\xec6/4\x10`\x92\x91\x00\xe9\x0d\x05\x887\x16\xc02\x18 \x81\xd1\xe0\x9eZ\x86\xe1\x00\xf1\xc6C\xef[\xd2/\xd0H\x18\xc7\xe5=2,rt\xa9,;6\xac\x0d%\xad\xf4\xf9h\xaf\x8b\xe3\x91n01\xb9\xc3\xefB\xf8M\xe0\xc9i\xb8\xf0\xa8\xc7\xe0\x86/\xe0$\xf1\x9c\x921\xb7\x7f\xd1\xe0\xaeT\xed>\x9c\x8e\xc7\xf2~2\xcd\xb7\x1e$\\\xb6\\\x84\xa5\xd7\x10\xe7$\x07\x99\xc1\x15]{\x8ajxw\xde\xb6\x16\xef3\x81\xdf\x8ex\xd4\x0f\x18\xbd\xa2k\x8eF\xf4@\x87\x80\"\xd0\x1dZ\x87\x009b\x01\x1b\xba.\x0e}\xc35\xf8\xe8\xcd\xdb\x8f\xaf_pcL\xf4\n:M\x17\x1c?yE\xd7\xd2\xda\x94\x11p\x9a\xdf+\x02\xa9\x8a\xb4\xb6\xd8U\xa4;5\xb4\xed/\xfc\x80\xab{\x18\x96\xa0=\x87t\x94\xd7;\x0b\x82`\xaf*\xe1\xa9%\x02\xde\xbf;\xb70_{\x02\xf2\xeb\x1c~(\xaa\xae?\x9cO\x9e\x81\x98\xc0\x9f\x9bmG)\xe4\x85{D]\x8f\xca6\x8aP\xcd\xdex?\xd2F\x18\xee\xc3\xa3\xdc\"\x9a\xc5\xb5$\x9e\xab\x81\xc1\xf4\xf7h\xfch\xda2\"\x87\xb3?S\xbc'\xdd\xf4\x04\xb9\x83\x9d\xd4\x90.\x12xbO\xb2\xd9\x8e+\xa6\xeb\x93C\xa3.\x92\xba\x95\xb6|\xa1\x16\x15\x0f7G8\xc8\xee\xc8\x7f\xd5:\xd2\xd9\x96\xf8>\xd4^\x97\x8b?\xae\x17\x139{\xdan\xbe\x86 3\xec\x1dr3\xed7\x0c\xb5\xe3\xa3&\xb8\xeb\xd8\x04\x11\x86W\xe0\xf8\x041G(E\xd4\xacc\x14\xf8\x9a \x01\x97\x13\xebH\x05\xa1\x96\x02\x8c\x1e\xad\xc0>^A\xa4\xc8\xc01\x0b\xec\xa3\x16DJ\x0d\x1f\xb9`\xe4\xd8\x05\x91_\xf1\x1e\xbf x\x04\x83H\xf1\x8e\xa3\x18D\x1c\xc7\x00\x96\x1c\xc9`\xde\x84\n\x1e\xcf \xb2\xc1\x0e7\x9dyG5\x87\x18\xeb$\xe38\xba\xb02\xe9\xc8\x06#\xc76X\xd2\xf0DG8\x889\xc6\x81\xf3(\x07i\x8es0\xf9H\x07\x9f\xe7X\x07\xd3\x8ev\xe0<\xde\xc1\xbc#^\xcc\xa8\xb8\x8fy0\xe5\xa8\x07\xc1\xe3\x1e\x80\xef\xc8\x07\x81\xc98\xeb\x1ch\xea\x87\x91S\xe1b'\xfc\x18\xbb\x84\xdbM\xd3\xed\x12\xfe\xda\x889\x17s\xb5\n\n\x9ai\xb0;zKkNToa\x05\xe2z\xeb\x03\x8e\x18^X7\xb9\xd3\xf4\xf1N\xd0y\x83\x9f\x11\x8a\x1c\xeeb1\x01\x03\x1e\xe8yE)\xdf\xf4\xb8\xdbJ\xc8\x07\xc0\xdf\xd6x[Y{\xddc++wq\xc8[8\xc4\x99<\xbaO\xc7Q}\xf3\xf0\x15y\xf0J\x06\x0e\xa4\x03\x06b@\x01\xda\xedi\xc3\x96\xcf\x8a\xde\x1c\xd8\xbc=\xdf\x93\xa2:\xaf\xabm\xb1\x8b\xee\xd4}}\xa0mG\xc9\xe6\xf2\xaa\xac\xd7V\xcc\x9f\xfb\xd4f\xbc\x04\xedm\xd1\xad\xf7\xf0\xa8*J\xa8j6G\xae\xcf\xe0K\xf8\x06H\xd9P\xb2\xb9\x1f^\x90NG\x1bR_\xb2\xc7\xa6|US\xcc\xba\x00\xe5\xd2\x0d~|\xf8\xb8\xa7\xaf^\xbe\x85=i6O\xd8S\xb2\x86\xf8\xb0\xa8\xa7\"\x8d=cUMd\xb91+\xe7A\x0b\xdd\xb5\x93\x99r\xe4\xd4\xba\xddS\x91|\x89BU+\xb9tx\xe2\x9b\xfax\xace\xcc\xff\xab\x97o\x15\x81}K\xc4o\xb48>\xfb\xfa\xcb\xd9\xbd\xa7\xbd\x0e\xaf/\xde=\xfb\xfaKsZ\xfe\x8e\xb4pl\x8a5\x95\x19\xb4\xd4\x8d\xf9\x11\xcf\x17\xf5\xe2\xe9S\xc5\x18\xa1\"T\xed\xe9\xeb\x8bw\xed\xd3\xa2mO\xb4}\xfa\xec\xeb/\x1f\xcb\x0f\xfc\xfe\xbb\xa8\x01\x10\x95\xdb\x93v\xec\xca\xd1@\xd3\xf8\xdb\xca\x87\xd9\xbf\xe1QE\xe9Fd\xdb\xdaS\xb2a\n\xb5*\xefa]\x16\xbc\xd9\x04\xf3K(\xd2v\xa2\x13\x86Db\x1b\xad\x9a_O\x19\x82\x87\xda+X\xb9\xaf\xbf\xe5=\"\xbb\xe6\xa1*\xfc\x9f\xa6\x0b\xff'M\xf8?Yr\xaf\xee\xffB\xaa\xae8\x1d\xa6\x88\xd6\xfa\xd7\x94\x00\xdf\xca\x1f\x9c\x8b\xcc\xa1\x0ct\xfaO\xbe-\xbbu]s\x07\xb4\xae\xa8\xeacIgW\xd3)\x06\xce\xb5_G*\xacH\x93U'\xeb\xae\xb8aF\xa8\xac\xed\x91\x030W\xa7f7\xa5\xa6\x0f\xad\xd7\xe0]\xff\x8b\xa3V-Oi\xd2\x1a\xd5\x7f,\x07\xb5`?^\x9d\xca)U\xd0:\xcb\x10\x00\x17\xe2\xdf\xb3FT\n\x93]t8\x15\xcd\xe5\xae$\xeb\x826\xb3k\xe8\x10\x02\xaf\x8b\xe3\x93\xe7_\xfd\xd3o\xe0\xd1U}\xb8\x82\x0d-\xc9\xfd\xe3`\x95\x15\x81\xdf\xf8\xc7\xf4\x8a6eQ\xcd\xae\xaa\xf6:|\xcb\xff\xe5\xa8\xd57\x11]\x89\xa2d\xbd\xca\xba\xda\xd4\xf3\xeb\xa5\xbd\x0e\xdf\xf3\x7f\xcd\xac\x17\x8a\x92\xf5\"MS\xdf.\x1ea\x97\x14>\xc4\xbf\xf9\xea7_\x8f\x0d\xf17\xf6n\xa2W\xdf\x1a\xe4]C\xee\x17\xd7\xd9!\x84)\xde'_?\xfb\xea\xab\x98*cE\x15\x81\xc1*\x1fh\xb3\xa3\x97\x15\xed\xdacYt\xb3+\xed\x14\x03\x7f(\x9a\xee\x84iq\xafE\xf6$f\xc7\xfe\xc0\x1e\x06\x91i\x96'\x90\xa9hw;\xd8!\xc0\xf3 \x96E\xd7\xf5i\x9f[\xb6M\xeeI1\xa5\x82\xfa;Sfe\xffj\xbf\x7f\x90j}\x9a\xb4J\xd47&}\x1a_\xc4\x0f\xbbOW\x8aE\xae\xa1$}T\xbf\xfa\x80\x02\xe8\xe3\x8d\xa8\xbfj7\xd7\xab\x8b\x1eP\xc7\xd4\x8a\xd2\n+*nP\xb3\x13\xe1\xaf\xae\x8a\x1d{\xcey(x\xddv\xc5\x81t\xf4wd\xfa)vGf\x1e]E\xcf2\xeb /\xb4\xc4fSQ\x97\x0d\xfb\xcb\x17\xca\x83\x8eJ\xf6\xfd\xa5\xfc\xad?\x8b\xba\x1a\xfa}\x1d\x7f\xea\x99\x1b|\xd2\x89D\xcb\x18z\xb2\x17.z\x8dp\x1f\xa4@o\x86\x0b)\xbb\xfaX\xac\xadOD\x05\xcf\x1a\xf5\xd0\xe6\x16\x8a\xe5gJ(\x8b\x16ss\xe3oj\xca6\xb5\xa6\x92\x11\xda\x90n\xcc;\xde\x19%&\xfa\x81\xbd.O\xb0xn)\x0b\xfbcg}\xe6\xeb\x97\xdf^<\xa1\xd5\xba\xde\xf4\xe8\x1f_U\x97\x08eDV\xc4=\xb1TAr\\p\xc9\xf6\xbe\x9e\x9cKlH\xd5\x12\xa4Wnynq\xee\x91)\xab\xd3\xddM8d\x88\x87%*\xa2\x8af\xbf\x0f\"\x8bjC\xef\x16\xb5N\n\x91-S\xbf%\"\x07yc\xb5^\x8do\xc9\xf0\xfc\xfc\xae[\xdeH\xad\x85e\xbds\xb5\xac\xa1\x87\xfaf<\xec\xca\x1f?*\x04\xf0A\x13W\xeerW[\xf6\xbd[\xaeOnh\xc3I \xbcg\x99\xb0C\x9e\x9e\x81\xbe\xa1u\xb3#U\xd1\"<\x08\xff\xbb>a\"\xf0#\xb9\x07\xd2u\xb4\xe2}\xc4A\xe9\xa2\x95\x88\xcf\x16\xee\xeb\x134tM\xf5`\xd3\xb2\xde\xe9n\xf2}j\x98mQ\xb2M\x17/\xaa\xfd\xc2\xdf\xac\xef\xeb\xdd\x90\x96\x8d\x03K}vF\x99s\xbbT6\x18\xf6\xb8\xc8\x04,\xc1-\xb9Re=Xgp\xc5\xc5\xf3x\xb7B\x8ba\xaa\xf1A\xbd\x89e\xfe\xfd\xdb\xdfA}d\x8b\x9aCamW7t\xf3\x94\x0f\xe6\xb0\xcc\xfb\xb4\xf5\x12\xe6\x18\xd2\"\"D&T\xea\x99\xd4\\L\x14W/\xec\x9b\xec\xe8F\xab\xf6$:\xb3\xc5\xec\xfe\x0dm\xe5=\x04B\x14\xfe\xb5\xf7\xe3n\xd8\x96\xd1\x147ts\x06\xc5\x8a\xaeX\x8fbBsYw\x0e\xb8\x9c\xc1\xd5\xa9\xe3\x89\xb7[\xba> \\\xad\xff\xa4s\x0b\xd5\xb2\xf6D\xef1.m\x1b\xc5\xc5w\xce\x8b)\x9cK\x0c\x82\xb3\x1f\xd2^I\xe1\xbf\x90\"\xddu\x14\xc9.\xa3\xf0^E\xd1\xcd\xbf\x88\"\xd55\x14\xe1K(f]A\x91\xf6\x02\n\xef\xf5\x13i/\x9f\xf0\\=\xb1\xf0\xe2 \xab\xbb;\xc7\xb5\x13i/\x9dXx\xe5D\xe2\x0b'\x16\\7\x91\xfa\xb2\x89dWM\xa4\xbdh\"\xd95\x13\xe3\x97L$\xbbb\xc2w\xc1\xc4\x92\xeb%\x9c\xd7It1\x97I,\xbbJ\xc2qu\xc4\xcc\x8b#\x1c\xd7Fx7\xca\xb8\x0c\x18\xd6\x0e:\xf3\xba\x08\xe7M\xb0 \xfb\xf7\x8b\xf1o'\xbe(\xc2\xbe&\"\xc1%\x11I\xaf\x8807\xc3\x85\xd7C\x88\x8eV%.\xb9\x10\"x#\x82\xe72\x88\xd1\xab \xec\xcc\xec\xf1\xd7@\xd8\xef\xfe\xd5\xd5\xd6Y\x17@\xc44v\xec\xf2\x07\x7f\xdbF/~\x98p\xed\x83\x99.\xdfw\xe5\xc3\xf2\x0b\x1f\xe6_\xf7\xe0\x1c\x97\x99W=\x04/z\xf0_\xf3\x10\xba\xe4\xc1\xd9Y\xb1\x17<\x8c]\xef`\\\xee\xb0\xe0j\x87\x88\x8b\x1d\xe2\xafu\x18\xbd\xd4\xc1qg\x82\xf59\xc73c\x979,\xbb\xca\xc1Y)\xe5\x97\xa4\x978$\xbe\xc2!\xe9\x05\x0e)\xafo\xf0]\xde`]\xdd\x90\xe6\xe2\x86d\xd76\xa4\xbd\xb4!\xee\xca\x86\xd1\x0b\x1b\xc4Y\x7f\xec\xba\x06\xf1X\xf0\xb2\x06\xeb\xaa\x06\xfbk\xb1i\xfb\xc3\xd74D^\xd2\x10qE\x83V\xe5\x94\xd73$\xbe\x9c!\xdd\xd5\x0c\xe9.f\x98?\xba\xa3\x972\x8c]\xc90hi\x95\xe9(\x98\x89Z1%\xa4@\xe1\xfc/b\xcd\xf6\x18\xab\xf2\x80\x90\xd4\x16\x7f\xb1\x02\xa0\x90\xad\xe8\x7f\x94\xa7\x91M}\xba*-\xae\x85 \x90T\x83\xe0P8\xd6\xca\xfa\x95\xff\xcdA\x0d<z\xf5\xfa\xdd\xfb\xd7\xe7/?\xbe~%\xf7\xbbxR@\xa5\x03\x0c\xbeaO\xefDm\xc5K\xdb&6\xbb\x82v\xa0\xe1\x99(d\x9bd\xdf\xb5\xc5NMi\xa6}N\xe0\x87\xf2of\xd4M\xd1\xc2zO\xd7\xd7:\x1eIvL\xeb\xa1k\xac|S\xe0\xc2C.\x8c\xde\xbd\x12\x1e\xfd\xe1\x0c\xde\x9f\xc1\x87\xc7\x82s5\xf0\xa8\x96\xae\x8f\xcf\xbf\xfe\xed\xf53\xa0e\xc9\x8eikvb\xbfqd\xde\xd3S\xbb\xd3jM\x8e-\x8f`\xc2\xbc\xf2\x8e\xb9\xc2\xf9\xf4\n>\xbc\xfa_\xc3\xe1j\x0c}\x9eL\xe1\xc6\xcf\x00m\xac\xd4\xe9@]uw\x0d\x14\x7fiS\xb0ch\xcb\xfbZ\x11h\xf4\xebGZm\xb0\x99\xd0\xee\xc9\xf3\xaf\x7f\xeb\x9d\x80\xec\xb4\xde\xae\xe0\x03\xd5\xdew\xb8\x1fv\xbdH\xf5?\x85\x1b\xe2o\xbf\xfe\xea\x9f\xb9\x91\xd0g\x97\x12\xc2\xcaz7\x8f\xa3\x8dNp\x9c\"\xb5q7\x81w\x162\x0c\xf6Y\xfd\xa8\xde>,V+\xd5\x17\x9c\xb5L\xc5J\x0bi\x1a[2\xfa\xf1\xc0\xf5\x9f\xc9\xd8j,n\xceZ|j\xbc\x82\x8e\xcc\xa2\x89Yl!\xd2\xe4\xb2\xc5\xcf\xa3\xb3,\x8e\xd7\xee?b\x10\xbf\xa3_\x89\xe9\x87\x89|7\x16\x17\xeb-\xa4\x8e\xb69\x05\x03\x8e\xe5stG\x0c3\x8e\xc5\xe2\xc7\x85\x1c'K\x8e%\x8cu&a\xcc\xa5\xa0\xd9\xbc\xb9C\x16\xe7\xd1-\xf6\x1cK\x88C\xc7\x12j\xf4b>]\x93fr\xebX\x160\xec\x9a\x1c\x9dmWxv,\x9d\xc5\xb6cI\xc8\xb9c\xd1\x99w,K\xf8w\xb3\x0b\x07.\x1e\x8b?\xaf\x07\x9b\x11\xc6Q\xd7P`=$\xc1\x87\xf5\x892\xa6\xd2\xae1\xc4\xc9\xcf6\xa398C\xceR\x86\x1bJ7DSu\xa7\xa6\xa2\xa2\xeb\xb9AJo\x0e=\xc0\x0d\x8f\x90W\x83\xba\xc1'\xe4\xc6\xa5H\xe3X\x00\xaeCu\x08p\xceH\xcb\xff\xe6p\xc9\x19\xbe8\xdbO>\xdd\x9b\xe7\xfc\x1f}]\xaf\xee\xe1\xe6\x00\xf4\x8e\xaeO\xca!gG\xda\xcbSk\xbb\xe7Lr\x03\x92Bz\xba\xa4\x85}}\x0b\x87\xd3z\xcf\xdd\x07\x99\xcea3\xe2t\x18V\x88y\xde\xf2\xdb\xe1\x963!{\xfd\x87v\xf7T1\xd5\xb5\xf86\xa7\x05>1\x05\x1d\xbd9De\xa0\xf3\xcf\xea^\x82\xaa\x99x\xcby\\\x9a\x16\x90v\x12I\xd8\x9b\x13\xee\x12\xaf\xff\xf0\x03\xcf2\xad\xaeX\xdea\xc8c\xcb\xd9-\x82d\xd7\x0du\xe4\xea\x88 q\xd2\x04@W\xefv%m\xf1\xcb\xea\xf7\x84\xb3\x89\xc0\xfbn\x0e\xabs\xfe\x82\"HN}\xa3b\xa4\xb4\x92\x81z\xaa\xa5\xbc1\xa5\x1e\xecq\xf3\xdbw]C.iq\x9cw$\xb0v|9\xf5\x9d3\x7f\xf8\x986;\x15X\xef\xf5\xc5\xbb!/\x14\xab2\xf7\x13\x16r\xf8\xb6{\xb9V\xa2\xfd\x14\xd9\xea\x1fu\xc7\xe3?\xfc\x80\x7f\x04\xfc\xa3\x00M\x14\xdfc\xa3\xe1Q\x1eK\xde B\x08YC\x12yX\x1cL\x08\x81\x80\xc2\x98\x1aXf\xd0\xd2\xe0BC\x9ch\x85\xb3\xbaV\x90!\x04\x0d\xb8\xd1\x1a\xcf\x0e84\x04j-T\x97\xbd3\xf0\x10\xe6\xf4\xf2\xe2 DH\x12\x888>X\xce\x80DX\xd0\xe4\x99\xc1\x89\x860\xfe\xd7@\x80\"x\x83\x14!\xa2\xee\x13\x82\x15\xc1\x1b\xb0\x18\xff\xa1\xb1\xc0E\x08\x05/\xc6|\xc6\x1a\x8b\xc5\x81\x8c\xd6p\xd8\xc1\x8c0\x1a\xd0\x08s\xaa\xbe8\xb8\xd1\x90\x17\x08:\x82`\x90#\xcc\xa9\xfd\xbc\xe0GC\x88\x11\n\xa9\xfc\xd5\x17\x0d s\xea\x9a42\x12\x1c\xd1\x910\x12! sj\xbd,Z\xd2\x10\x16\x11L\x07\xde\xa8I\x98S\xfd\x84\x11\x94`EQ\x827\x92\x12\xe6\xd45aT%X\x91\x950\x16] s\xaa\x9c2\xd2\x12\xe2'H(\xe2\x12\xe6\xb4ci\xf4\xe5\xbcf\x84\xa30aNC\x96Ed\x1a\xc2D|\xa6\x19\x95 \x81\xc8L\x98S\xe9\xf9!\x9b\x1eA\xda\x9e\xe9\x0c\xe2\x84\x88z& \xe6\x84 f\x984\xa8\x13\xac\xc0N\xf0\x07w\x82\xb8\xaf\xe0\xf6\xf2T\x1d\x9b\xba\xa3\xeb\x8en.\xbb;\xeb\xb8\x1a\x8c\x90\xd2\xa0\x06\xa7\xb8\xbeY\xc5\x16\x1az,\xc9\xfd\x93\xfe\xef\xf0\xa8X\xb1\xa3D%LBu~\x15\xbb\x8an\x1e\xab\xf8L+o$@\xf0\xa8\xf7\x14\x17\x07\xf4\x03Y\xef\x8bJ\xb8\xc3\x8a\x11t\\h\xcdN\xad\xeau\xd6\xf2\xa0j!5<\x1f\x91\xb8\xfdj2UzE\xca\x88\x1bs\xb4\xae\x14\xafH\xd8L\xfeS:\x08\xfc\xe1\x07\x0d\xab\x91C\xb8\xae74&^O\xfbT\xff\x92\xfc\xd8\x9e\xde=A\x80\x81u+\xc7\x8b9W\xaa\xdc\xf8\xf0\xf6\xa5\xfcdU\x8f\xb7,*\x0dU\xad4W\\1\xf5\xb0\x85\x96\xfe\xf9D\xd9_\x90\xcc\x1aM8e\x0cQL\xf2.\xf1\x8a\xf3J:\xf7<\xf8\x16G\xe3\xe7:\x0f\x02\xddc\xd4<\xa6{\xc4+\x93\xba\xa7\xa5\xdf\xd19\xdd\xd3\xd2\xcb-\x1d\xeb\x1fI\xb5\x89\xa7e\x1bPi\xfc3\xde\xbc\xb7\xa5\x0eG\nW\xe5\xb4(rS\x84\xbf\x89\xe7\xf5fz\xfb\xd8J\x8a\\)\x1a\xf0o\xadV\x13\xbc5\x97(\xa9\x06\xd7\x8a\xd8\x8b\xa3\xd5\x16\xc5L\x0b\xf6\xfc\x849\x81\x17\xb7\xcdU\xa0\x98\xe4-\xf2fG\xa3\xbb\xd47\xfb\x14\x81x\x8d\x9c\xe1\x07a\xdc\x92'UO\xe4\x90\x85\x94[\xaf\xc5\xe2\xf4\x1b\xc8\x07RD\xb4\xeb\xa2\x8c\x1a\xa8\xbec\x01\xb5\xe1\x1c\xbd\xe0,Q\xdf~\xaa\xbd.\xad\x11=\x8d\x9f{\xd6|\xf6\x84\xd7\xbc\x01\xf4\xe6`\x1b\x01+\xa3\xcf\xa3\xe0j\x07A\x03!\xd32\xcc\x99/$k\x0ciH\xdd\x18?:\xf8\x1b\xf0s8\xe05\x03!`\xcf'\xe3s\xc0\xe6t\xc0\xc7\xeb\xc0\xa2\xaaN'|\"\xaa\xe9\xa0\x80\xa0\xaf\xa5\xed9\xe5\xf4\x9b\xf2\xce$\x1f%\x04\x90\x8a\x16\x02/5\xa4|#\x05=\x04\xbe5\x07\xc1D\xd9A\xaa\x08\xc2}\x97\x982\x82\x11\xda\x08\"k\xe3\xf0\xa2YD!9\xa4\xa9-\xf36\xc1I%Ap\x85Al+f\xd1J\x0e\x81\x1df\xb6tRK\x10\xa4\x97`\xc9h$\xa1\x9a`)\xdd4q`\xbd\xb4\x13$\xe8\x8a4\x14\x14D\xd2P\x10\xa4\xa2 \xb2=\x13))\x08\xd2R0\xe9\xa31\xf4\x14\x8cQT\x10\xf9I\xe7\xb8\xcd\xa6\xab\x1c\xb2\x14\xd8\xcbIYA\x14m\x05K\x9a3\x9b\xc2r\xc8\x8aDna\x94\xca\x82%-JBkA\x90\xda\x82\x11z\x0b\x96\xd4\x7f&\xd5\x15\x9e^.\xba\x0b\"(/X\xd2\x92\xa4\xf4\x17L\x9b`~\x1a\x0c\x964i\x11%\xe6\x90\xc7V\xbeE\x8bA\x90\x1a\x83%\xf5_D\x93\xb9\xeboSe\x10C\x97\xc1\x92f,\xa3\xce\x1c\x02\x9d\xd6\xaawr\x8dQh\xb0\xa4m\x8b\xe8\xb4\xc5M\x1b\xa7\xd5`I\xe3\x92Rl\x10\xa6\xd9`\x84j\x83%\x0dIF\xbb\x81\x87z\x83 \xfd\x06K\xea>\x97\x9b\xf3\x8a\xd2\xeb\x1d\x86i\x16\xb1v\x86,\xc9\xe19\x98;\x08\xb3w0\xce\xe0\x01\x84Nl~&\xcf+z&\x9b\x07\xcb\x19=\x809\xac^\x10\xe34\xee\xc8Q\xe5\xd9\x08'\x0f\x04aG\x92\xbb\xa7\xf4F\xfa\xf9\xeb\xe0\xa1\x1b\xd1\xfc\x80\xa1\xb6\x93!M#\x1d\x91s\xa5\xf8\xa7)&\x0fP\x9b\xd4\x87\xfc\xf2\xbe\xc5\xbfcPC\xdb\xd6\xeb\x82\x87\x8d\xf0p\x00\xf6\xf0\xae\xb8\xa1\xead\xb9\xa6\xaeD\x92:\x9f`44\x86R\x10\xafL`\x15>6dM\xf99mr\x87\xa6HYk\xb6IIjT\x88\xf8\xd2/\x94w<U\xee\xc7e\xf8S0\x1d\xf1 fF\xd4\xeeO\xdalG\xd8\x84\xf8}\xbc\xc1\x7f e\xb1!]\xdd\xcc\xe5\x90$\x0f2\x83D2^\x8db\x91xW\xd0\xf5\xfe\xab\xe7\xa2C3\xadd\xe9\x08\xdf\x98\xc63K\xa6\x841V\x89O\xb7\x89\x17\x19u\xec\x9d\xb1\xce\x12\xbd\x82\xcfb\xb4\xb2\xc8y\xf1\x1f\xe4\x86`\x0f\x88\xbfJ\xb1\xc5\x81\xd6\xa7\xb1H0\x97\xd5#\xde\x84\xfa\x866\x0d\xcf\x89\xd6\xf1D/\x98l\xa7\xff\xeb\x16\xbe\x86\x96\xae92\xbc\xd5\xee\xff\xfc7rC>\xf0*=\xc1$\x8b\xacb\xec\xab\xca3kR\x96\x12Ch(\xdb\x92\x17M\x17\x14\xa1mACx27\xd5\x04\xb5\xd5w\xe0mQ\x96<oB\x0d\xbb\x1a\xaeH\x8fr\x8a\xcb\xc7.\xdb\x8e\xa8F\xa4\xdb\xb2\x91zK}GX\x88\xc8\xed\xac\xafaM\x8e\xdd\xa9\xa1\x96x\xbe\x1bM\xfe\x80\xd8W\x87O\xe0\x0f\xc6G\xe8\xd5i\x17+\x9a=+m#\xc9\xf3\x1d\x9b\xa2\xea\xa0>u\xc7S\x07\x9bS\xc3\xe1Q\xfc\x04\xd0>\xb8\xb3,\x0e\x855\xc3\x8a\xaa\xa3;G\xbe\x90\xa2\xea\xbezn~\x9cK\xd0\x86\xed@\xee\x8a\xc3\xe9\x00%\xadv\x1d\x0fs\xc6Z`\xf8\xe5_hS\xc3\x81\x92\xaa\x85S\xc5_\xee#\x0c\xfb\xe9\xfa\xc2\xfc\xc80\x91\x8dV\nK\x10\x08\xce\x0b\xe1\xe8\xb6=\xf1f\xf2\xb3Us*i\x8e,ZF\x0bE\x06\xab\xe4\xc8\xa2Dt\xcf\"\xaa'r\xb0rd\xd18\x8d\x93#\x8brdQd\xed\x93P09\xb2(P\xeb\xa4\xd4J$<\x9c#\x8b\xa6S&9\xb2H)\x93\xdb\xb1\x88\n\x99\xdd\x8cq\ndrC\x92\xd2\x1e9\xb2h\x16{\xf1\x8b\x89,\x12n\x95\x07z\xa8\x9b\xfb\xc8S\xaf\xf6\xcep\x9c\x16\xff\xd6O\xd3\xe2Yt\xe5\xbftA\x9c\xe1\x8f(/\x0e_\xe2\x08\x9f8Q\xd7[\x11'\xc0\x01P!\x05\xa1\x8a\xcb\xffhkG\xb6\x8cQ\x8cH}\xaf\xf7\x89\xa4\x1a\x08\x82\x9dO0k\xaa\"K\x1bf\x05\xd1\x12\xf9V\xb9\x9f\xa7:\x88]-\x8e\xcf}\xb2{\x1d\x1b\xdbRz \xcd5\xedf\xa4\xa4\xa9\xeaK_\xd8FL\xae\x17\xe5u6\xc5\xd7rZ^\xbc{\xa2Eb\xb06|\xa9\x1d7\xbe\xc43\x96\xb6\x00\xcb\xb2\x95\x8bAJ\xbd\xc4\x03\xc6e\xef,m'.\n\xe0!>\xe0U\xa3\xc7\x02\x9f\x82\xab\xfaT\x89\x14\xb8\xe2\xe2\xf6\x8eG\xf1\x88V\xad\x89\xbc/D\x95G\xbb[J+\x81\x8a\xf5k\xa8$mW\xac\x8b\xee\xfe\xf2p*\xbb\xe2X\x166(9\xa3)\xdap8?\xa26B\x82?\xec\x08\x87\xd0\x10\xa9\x94\xd1*u_\xc4\x03\xd1\xf2\x88\xed\xc9\x0d5T\xc2\x9e\x16\xbb\xfd\x18\x06:\xb9\x15\xaa\xec!\x9dZ'R\xf0\xa1j\x15\x7f5\x86\xa3\\\x9fJb8n\x17\xad\x90\xb8Y\x19\x93k\xa4\xdeF \xd70\xcd\x8d\x1e\xeb\xc7\xf8PT\x97;\xd2^\xf2\x99\x1d\xa7L\xb4\x86k\xef\xeb\xa0]Q\xf5\xe3\x86\x7fE\xca\x8fUF\xd2\x18\xd5\x86\xe9\x04E\x9c\xca\xcd\x1a5\xf4OAw5\xff\xcbUM\xcf\x14S\xaa*q\xc0+\x8e\xa54;-[YWC\xcb\xd3\xb1*W\x05\xf5\xf3\xf2\x0b\xe5\xe3\x13\x18b\x8fR\xfc{\x0eks4\x94M\xca\xcf{\xab\xab\xf7RW3\x99\x1d.Vy\xa9\xab\xa3\xddF]\xfb\x86\xf7/\x0e\xf7\x14\x11$\xb2\xc5\xd2\x1f\xeb\x85_Z\xec\x91s'\x06\xefn\x0c\x1e\x1d\x02\x89we0wf\x88\xdd\x9d\xc1\xbb\xadA0\xdc%\xec\xad\xb3l\xb76\x1b\x86{\xb7\xf9 \xe7\x06\x0e\xe3\x9b8|\x96\x16/\xdb\xd4\xcd\xb6\xf1eel\xec`l\xee\xe0\xdf\xe0\xc1\xa7\x19`I\x0bgn\xf8\xf64\x95\xdb\xbfc\xd3\x07\xa7*\x87P{&\x1b\x00\xe07\x02\x82\x1f\xf2\x9e\xd2\x17\x1a\x04f?w{\x97Q\x00#\x86\x01DT\xddr8Kd$@\x94\xa1\x00\xb3\x8c\x85\xbf\xa9;\xd9\x9aT]\xbd\xaa\xab\xab\x9a4\x9b\xa2\xda\xcd8\xab\x89e2\xc8\x88<\xb1\xe1{0\xbc\x07\x17\xdf\x9e\xc3\xa1\xd8lJzK\xfaS89u\xf5e{K\x8e\x97\xdd\xbe\xa1-;\x8c\x06\xad\x81\xdb}\xd1\xd1\xb2h;\xba\xe1\xca\xb8\xa2\xa5e>L\xcd\x8e\xa9\x0f\"\x9e\x87\x95\x93\xb0\xf47S\x9a\x82\x03\xeb\xe9\xe0\xbf\x8d!\x80\xb3B\xa9\xa6\xf0$\xc2\xaa\xcd2\x06\x02C\x0d1&A\xe4\x90\xc3\xd8\xb0\x83\x7f\xe9\x87\x87\x1f<S\x00&E\xc6.\x98\x0e.c\xd3X\xd3\x11.\x8d\xe2\xcb\xbaW\x12\xce\xb4u]T\xac\xdbf,\xe4\xb1\xc3\xc4\xb1\xaeK\x8c\xb7.\xea\xcau\xf4\x88\x9aC\xf1\x81\xech,E<\xea\x07Q\xce\xeb\xa2\x1avn\x11\xe1\x8ewS\xe9\x81\xee\xec\x98J*\xf1I\xed\x068LF\xfeq0\xdeD\xe6w\x9ez\xfd\xa2\x92\xd6\x80\xc1\xd6\x0b/-\x1c\x1dEZ\x7f\x91K\x0b\x0d\xfd\xf3\xa9\x10\xf7y\xef\xea]\xcd\xf3}\xcbe\xd9\x91\xbb\xcb\xc6\x91\xe9Xk\xf9\x81\xdc]\xb6\x1d\xa96\xa4\xd9\\\xb2\x81\xbf<\xd2\xe6\x92\x0d\xd3\xf8kle\x99\x1d<A9F\xdf&\xe2\x18\xee\xc0\xb6\xed\x1ar\xef\xe3!\xd7\xf2\x04\x03\x9fz\xe8c\x07\xdfc1\xf0\x16\xa0\x1ey\xd8\xea\x16\x83c\xe5\xd7uyQm\xeb\xe8\xb5_\x847U\xd6\xd3\xf5m\xa4\x93\xabT\xf6\xfc\x9d\xdew\x93i\xb0\x0d=\xd6-\xbf\x8c\xfb\x9a\xf6v\x9e\x9c\xc1Y\x9bL\x9eRq\x13\n\x8619\x90\xa2\x12\xf5\x169\x9f\xc4\x13\xfc\xb7<\x02\x9f\x7f\x04\xf8b\xa0\xcd\x914\xdd\xbds$\xca\xa3\xa5\x91\xf38\xa4\x1f\x87\xb2\xf8\xf3\xa9\xd8\x14\x9eA\x183\x85\x1cb\xd8\xb6+N\xff\xb6>\xe6f\xdb\xf7\xf2Y\xa6\x9d\xa7\x1b\xfe\x8em=jb\x14q\x86\xb3O\xc5\x07^\x99\xac\xea\xc1\xa9\xee\xc1oU\x842\xb38-\x8b@]}\xd6E\xe0\x95\x91\x08\xbd\xb9\x8b\xc0\x90\xb3d%\x18\xa2\xc4\xba0~\x8d_\x1c\x10\xb1U\x80\xbd]@\x1e\xc1\x9f\xe1\x08\x8en5`n7\x90\xc7\xf1g8\x8e\xe1\xad\n\xcc\xed\n\"\x14\xb6s\xdb\xb2\x01_\xff\xb6\xc5\xfa$\x84Ph/ i\xef\xdf\x9d\xcb\xfe\xe8\xf7\xef\x98\xadr\x06H\xc6\xde27\xcb\xb4\xe7ZsW\x0d\xf4yhg\x0d\xae\x92\x19\xbb\xabo\x7f\x0d\xac\xeb\xd0\xca\xf6\xae\xed`\xbd\xfd\xeb;\xf8Zx\x8d\xa7[\xe5I\xd7\xb9o\xa5O]\xebq\xfb\xaes\xe7\xcdc\xab\x96\x9f\xf3\xd8F\xed\xc8\x8e=9\x8f\xb0Z~\xce#<\xbeW;v\xeb\x98M\xc0\xb3c\x03\x1c\xc9N\xf4\x9c\xb9\xe1E\x9d\x0e+z\xd7]^\xd3\xfbH\xfb\xc1{\x8fq\x08\x8c\x1d\xbe\"\xc9\x0d\xf6\x9f\xc8\xad\x1eI+\x88\xd6w<\xaf\xc3\x9fO\xb4\xedV\xf8wC\x08\xa73\xf9\xebL\x1ck8\x85C\xddv@\xb7\xdbb]\xd0\xaa+\xefWp\xd1\xf1\x18_\x9e\xf1\xe3p\xec\xee\xa1\xd8\x9a=\xba\xa7\x0d\xe5\xf7\x7fV5\x1c\xea\x86s-\xa7\xb2\xd3\xf8\xf2\xae\xee\x883\xf1k\xa0S\x1c\x97\xe4\xfa(t.\x9e\xf7\x06\xff\x8f!hYT\x05\xc8\x0d)J\xce\x96Y\xf5W;\n\xa3\xe5\xb9\x10s\x0e\xdf\x92\x16Z\xda\x9dA\xd1\x89\xbb\xe8\xd9\xf7N\x15\xae\xc1\x0d\xd4\xac\x1fn\x8bv\x18G\xff\x18\xbe3sn\xd4\xd8\xbfWt\xb3\xc1\xfc\x0c\xbb\xf7\xef\xce\x07\x8bP\xdc\x0f\xcf\x83.\x1b\xee\x92\xa4\x08\x1b\x82H\x8bj\xc7W\x17m;\xf9\n\xec%\xf7\xae6Sk\x9b|\xf2C}\x18*\xf5\x9f\x0em\x05\x0d=R\x9es\xe4[\xd2\xf4=\xfb\x0d<\xfb\x1f\xae\x87\xb56\xf2\xc9\xf5\x0d<\xd7\x9e\xfc+\xff\xc7\xb8\x91\xdc\xce\xb2\x92\xa5\x197\xc1LN\xc4!OP\x17\xb1'\x8d\x00W\x08\xa1\xed,\x1f2\xa7l_\xcb\x0f\x996\xcf\x08\xfe\x1e\x8a\xe1\x1b\xc7^w\xf1\x8e\xc3;\x93X\xf9l\x0dA\xda\xe9\x94\xc2\x1a\x9a\xce^\xc6\xb9DLw\x87\xe0\xeef\xab+\xd2\xd2\xd5\xcd\xb3+\xda\x91g+\xd6\xeb\xd1Z\xd2\x98-\x8e\xc16g\x86\xf5\x88{C\x9d=\xf6\xf8\xfa\x92\x01\xd7\x89\x93\x98Q-\xae\xd6+r<\x96\xc5\x9a\xd7\xa9]qO\xbd-m\xd8&\xf4\x8a\xd5\x96\x87\nE\xf7\xea\x91t\x93\xae\x11\xd2\xd6\x0e{Y\xf3n\xc2\xdc\xef\xf5\x16\x8eu\xd3=\x15\xfe>Plh\xd5\x15\xdb\x02C\xcd\x84\x0f\xb1LF3HcV\x89\xf2\xcf\xb6>5\xc3\x1d8\xdbS\xb5\xe3\xb7\xae\xf3\xe1\xd1B4\xc6'\x06\xd8>\x9a\xfa\xc8\x8a\x8f4\xb4$\xf7\xac~\x8e\x8f\xb9{a\xe8q\xfd\x16y\xfb\x13\xac\xcd\x17\xe7\x1f\x9e\x7fiHW=0\x95\x1e\x10\xad\x17\xbd\x04E\x85F-&\xd3\xef\xf6\xa3Sa\xa2\xafQK\xab\xcd\xa5p\x855\xbb2x\x19\x986\x1fT)\xc2\xb9\x8c'\xf3\x10isZ e \xeb\xa6n\xdb'8Sp\xad\xc9z\xe3\xbd6\xda\x8c(\xb4\xe0C\xfe\x92\x1c\xfb\x86\xaeiqC\x97\xd7\xda\x104\xab\xe2\xda\xe1(Pmw-\x1c\xde\xa8-\xe5\xb9\x9d.\xbe=\xef\xbf\xa2\xb9\x8a\x8a7\x85\xf2\xa9\xe1\xd8\xd0\x1bZu@\xa0-\xaa\x9d\x9c\\xQ\xd0\x15\xe5\x19\x96\x84\x98\x86n\xce\xb8xe\xb6}\x94\x0dy-\xfa\xa0\xff\x14\x86\x15\x9e(W~\xdd\x9eV\xf2U\xb8\"\xd5u\xbf\x85\x089\x1fh\xb5\x11\"\xbe\xe8\x15\x8c\x94$7 mYt5lI\xd9\xd2\xd1 \xcd\xb7\x16\xbe\xdc~O\xda\xfdd\x1b{\xeaui\x98\xf8\xa4\xa8`O\xef\xc4\x81\xf2\xb1T\x13z\x03\xf8\xe2W\xd6\xa7c\xa0\xf5|hV#b\\\x0c\xfb\x97\x9cy\x13#{\x8e+\xaa\xc9]\xc7\x9b{\xd9\x0d\xdb\x8a\xf3=\xf7\xbb`m10\xdf\xe2_\xb0\xdd\x18\x92\xa4Z5\xb6\x1c\x88\xdcv\xc0\xb3\xf5@t\xdbfmA\x96\x14\xad\x87\x12lE\x8a4\xb1\xdc\x1d\x1brhK\x1a\x9f\xf7\xda\x14\x8c\x9e\xf8\xd8\xac\xa53\x7f\xfa\xc9\\\x99\xfa\x9f\x99\xbf\xb2\x17\xc9\xa2\xf3L\xba\xa5\x12\\,\xf1\xcb\xc5\xbf`\xe2\xdb9{\xd1\x84\xfb+\xed\xc2q.\x9d\xc8\xc5c\xd5T\x9d\x7f}\xcc#\xb3E\xd4j\xb5\xbe=\xc8\x0dFk\x1f\x18\x1e0\xa2\x14\xfa\x9f\x8bJ[\xa2+c\x15D\xed\x00\x19\xd4\xce\xa06xW!\xd7\xd2\xe7uUQ\x8c7\x9b\xb7;x\xe1\xda\xb8]\xe25'\xf5_\xa2O\xc0\xe4}\xc2\xe7R\xe0\x1cM1\\\xac\x11\x86+\x81x\x7f\xac\xaf\x9cuu\xf7\x96\xbcAV}c\xe6>\x9a\x08\xdc6\xd4\xcf\xe7\x0d\x90r\x1fk\xc1{H\x84\xd1\xadu\xe9\x11\xd7\x10'\xeeZ.\xac\xec\x91\xdaQ\x17B\xc7]X\xd0\x9a\xd9G_S\xd3(\x07\xe1\xb1\xe6\xc4\xa0\x8bc\xcb\xde\x890\x8eO\xe1\x8fL\x85\xe1Z\xf8\xaen\xb8\xee\x98<\x9f\xdd c\xd4l\x8c?-\xfc\xbf\xeb\x12\x1eP{\x81\xd1\xf3\xce\x19\xf1\xbe\xe3U\xc7\xe4Y\xd7\x0d]aRS6e\xce\x99\xa4\xaa=\xb5\x1f:\xd2\xd1\x7f/\xba\xfd\xef\x950\xf7\x88\xa9b\xa5\xbd\x91^'B\xae\xb8\x96\x01\x1f\x9b3\xa1\x1azS\xb4E]Y\x99\xdea\x99%\x81]\x89\xb2\xf1\x1eT>\xb0\xbcgXW\xafOM\xc3-!=gZ_\x9dY\xe9\x00\xc2\xd5\x11q\xfdl\x02\x0b\x8b\x14\xb3|\xc8o\xbaW\x84\xa6\xf0\xde\xb0\x0f\x95%Zw\xef\xc5{8\xa4\xacQE\xb5n\xf84\xa6\x1b \x1dP\xb2\xde\xf7_\xdd\x17\xa5j\x89^Sz,\xf4D\xeaR\xde\x1b4\xb2\xd8'Zr\xa0+\xf8}}Koh\x03m}\xa0\xca\xd0\x93rW7E\xb7?\xb4p \xf7\xb0\xde\xd7u\xab{t\x7f\xa1\xf5\xacD\xddD\x8d\x8a\n\xd6\xb4\xe9\xc4M\xab\x1bqe-]\xedV<72\xeb\xd4\xeb\xf6\x0c'\xd8\x13q\xa7\x8a*\xf0\xaa\xa1\xe4z\xc8\xcc\xdb\xc2\x05\xef\xd4\x96\xc2\x9a\xb4\xb4=\xd3\xfa\xe8M\x9f\xfc_\xed\xa3V\x87<I\xa7\xca\x17\xd5d\xe7\xa9\xa2:Q\xe9\xa1p\xa8\xab\xa2\xab\xabb\xcd\xc7\x81K#<\xfd\x19ecI\xf8\"vt*\x0e\x92*\x7fG\xbb\x16{E\xfc\xd8\xf7\xec%o\xf3,\xfd\xcc\x1e\xbd<5\xb1\x16yxk} \x9f\xde\x7f\xff\xb4\xa1\xe2\xe0W\x91\x03\x15W\nW\xc5\x9fO\x945_\x1e\xbeQw)\xf6\x9a!j\xb8y\xc3\xdcV\xb9\xe2\\\xd7%\\\x9d\xb6[\xdaHW\x8c\x15|\xdc\x17\xad\xa83\x1cNm'O\xb6lf\x97\x94\xb4\x9d)\xa9\xae(<x\xfa\x80\xe7V \xeb\x8e6+\xae\xf8K\xd2v\xd0\xd2\x1d\x1bsi\x8f}z\xff=\xe7\x0c\xbb=\x17m\x08\xea/\xb16\xbf\x80\xf8\x00\x1b\xf7?\x9fH\xc9\xda\xbd\xc1^\x11by\xfb\x1f\x116\xc9\xccW\x7fd\x1f{\xba\xab\xeb]IW\xbc\xcdW\xa7\xed\xea\x95\xb8]\xf8\xc7\xc7XW.\xac\xdd\xd7\xa7r\xc3\xe6\x1ak\xac!gM*\x9c|\\\xe9\x98_y\xc4\x96\xcf\x19\xeb\x1e\xee\x08\xf3`\xf5\x80M\xf9\xaa\xee\x98}N\x8f\x1d\xdd<\xb6 \xdf\x8b\n\x8e\xac\xc3\x8a5=\x83\x8e2\xab\xe4\xd4\x9e\xf8\xf4>6t]\x1f\x8e\x05;^U\xdc.\xa2pUT\xa4\xb9\xe76\x15k\xafi\x0eJ]k\xe5]\xa1wG\xba\xee\x80\xbb\x18\xf3\xfc\x9aB \xb2ae\xe7\xd4z\x0b/\xab\xfb^\xdb\x9cq{\xe9\xd3\xfb\xef[\xdc\xa3\x0di\xe2Vk\x0b\xfa\\\xef\xe9\x81\xc2\x8f\xfb\xae;\xfex\x86\xff\xdf\xfex\xc6\xac\xc1\xaa\x16\x7f=\xe33eM*\xa8\xf9\xcc\xe7-e\xca\xe9t\xb4\xba\x9b\xb5\xd0\xfa\x06mn\xb8~$\x1d\x1c\xc8\xb1\xc5a\xe75\xed\xea\xde\x95\x88\xdb-B\xa9\x91\x16\xb6uY\xd6\xb7\xed\x0b\xab\xf7\x7f\x05\x17\xdb\xa1nl\xb8\x8eM}Sl\xe8\xa6\xaf>7W\xda\xf6t\xa0\x9b\x95\xfd\xfa\xcb\n~\xff\xf1\xe3;\xf8\xdd\xeb\x8f\xf2\x1e\xaaO\xef\xbf\xc7%s\xcf\xad\x1d\x02\x7f4'\xde\xc7\xfb#\xfd\xd3\x1f\xffd\x08\x93\xf7/\x15\x95\x1ce\xdc\xd9x\xff\x1d\x9bzsZSf8\xd1\xa6\xa9\x1b\xd3]\xf1W\xf0R\xb1\\9n\xc0\xef\xe2B\xd4bM\xd6l-\xd6\xf5\xf5\xe9\xd8\x1f\xde\xfb$'\xb6\xc2\x00\xd6\x08\xfe\xdd=\xb9\xe1C}Pf\xe3\x06\xa7#\x91\xd5d\xff}S\x17\xcc\n\xb4\xafJ\xc4\x8f\xf2\x05\xd6\xd0m\xdd\xd03\xf9\x1a\x93F\xba\xe2\xaa(\x8b\xee\x1e*J7R\xcbs\x05\xd0\xdcX\x19Zx&r\xb9\xe1\xb0\x05\xc1V\xc0\n\x1e}j)\xdc\xd0\x86iz\xd6^6!\xd8Z\xc6\x19A*\xb2\xb3\xdbg\xee_\xab\xc7\xe6\xd8\xbe\xa9;n:\x14m\x9f\x10\x93\xf0\x9a\x8a5=\xd80\n\n\xe2\xea\xcc\x9a\x03?6\xf4!\xa7\x034\x94iTz\xc6-\xe9\xa2\x93\x1f\x18\x98\xee~\x86_\xd1]QU\xac\xda\xcc\x8e\xb1\x14\xe4\xfd\x91\xaep\xae\x91c\xd1\xae\xd6\xf5\xc1\xd67\x1f\xf8Lo\x11Xa\xcb\xa82\xd7+<\x12G%D\xa6pi<\x86\x03\xdf\x90\xaf\xac\x05\xc9\xab\xc9\xcf\x05\xbd\x1d\x8f\xe7\x82\xf6H\xd7\xc5\xb6XCK\x0f\xa4\xea\x8a\xb5\x06]\x197\x95A\x8c\x85\x17\xc6\xf3\xac\x1d\xf4\x07\xb6\x08\xaf(\x10\xf6\xb1b\xa3^@e\xee{\xf2R\xa6\xab\xfa\x86\xca\x8a\xdb \x82X\xff~1\xfe\xed\x1f_V\xf7?\x0eP0;\x1b5WE\xd7\xb0I\x1f\xa8\x83\xd4]\xa4\xac\xb5\xf6\xe3\x99K\xedv\xa6a\xb8\x02\xc4:\\\xd9\x06\x80\xfa\x1d\xb9\xa7kS\xe1\x9d\x9c|eq\xc5+&\xf4^\x7f\x89\x06\xbf=\x86\xac\xaf\x9f\x9e*\xf6\x7flw\x10\xd9|\xedYnn\x86\xf5\x16N\x1d.\xeb>\x97,S&d\x83\x86&)aG+\xdapWN<B\xf5`\x0d\xfb\x0ev\xb4*\xf1\xf5\x1da\x93\x0b\x9e\xbd\x80w\xac6l\xa5\x88\x8a\x91\xbe\xe3\x8a\n\xce\x7f\xfdkKI\x7fW\xd7\xb0\xadk\xf8\x06V\xab\x95\xe9)\xca>G\xaa{\xf3gR\xdd\xaf\xd8\x87\xbek\xea\xc3\xa3m]?6\x1fX\xadL\x0d\\l\xe1\x11{\xed\x13\xaf\xd6\xc7\xfa\xd1?\xb0\xf7\x1e;\x1cY\xedw\xff\xeaj\xeb\xf3\x91\xb6\xfe\x1b\xb9!\xb3\x1a\x0b\xdf\xf0\xbd\x9eI\x9c\xd8\xb6\xa2}\xf4]]\xaf\xd6%i[g\xd3\xf0\xd3\xecQ\xac\xb1\xf2\xb8\xf9\x95\xbf\x1a\xff~\xfa\x94M\x91\xd0\xb7?\x90\x03e[\xe7K\xac\xc5\x8ev\xaf\xf02\xab\x0b~a\xc2\x9a>z\x1c_)\xe7\xdbv\x1d\x1d\xe3\xf2\xd5\xc8\xb8\xbc\xbb\xef\xf6ue\x8d\x0c\xd6\xe2\xbb\xba~\xb4Z\xad\xac[\x83\xe5\xa8<r\xfc\x85\xcfD>R1\x03\xc5^\xb8\xc0\x1ez\xf5\xfa\xc3\xf9\xfb\x8bw\x1f\xdf\xbe\x7flRf(\x18\xe7\xaaK4\nw\xb4\xfe7#\xad\xff]m6\x9c\xb7\xfc\xc57\xf0\x0f\xc7\xab\xd5wu\xfd\x9f\xab\xd5\xca\x1c{V\x993f\xd8\xb0\xe7Hu\x7f\xbcZ\xbd\xa1\xb7\xcez\x15[\xfe\xdc\x7f\xfb\x06\xaa\xa2ty\x89\xdb\x9dbM5\xd73F%\xadW\xc4w\xb1~\xabO\xd5\x814\xed\x9e\x94\x1fk\\Bs*\xa5\xfc\xf2\x91\x03\xd7\xeb\xeb^\x1bJ3\x14\xae\xee\x07CA\xeaj\xa4\x8e\xeeA\xde\xe5vj\xb5]\xf9\xa1\xc3\x10x\xcaNN+\xfe\x07f\x1a=\x14g\xe5\xde\xb6\x90\xa4\xa3\x18SU\\\xaf\xa0\xab\xf2^Z\xfe\xd6A\xac7\xbaD>\xffN\x9e\xfd\x1e>}\xa8\n\x13\xc7\x0e\xf9Y<gP1\xb7\x1el\xebzuE\x1a^\xe1\xbb\xa7\xf7\xab\xbf<\xc0\xb6\xa2%m\x1e\x07\xf8\xe7\x1e\xb0\xa7\xf4\xcd\xe2\xdf>\xbc}\xf3\x85\xd9\xbb<;z\x7f\xb6\xec\xd9_f\xfe\xf0\xed\x1am\xefS\xdb'\xdf\xdb\x9dJ\xd2\xa8R\xec\x97;\xee\xcb3l\xb5gC\x04\x85X\x11gb\xf7\xd6N\xa4\xca6\x88\x80\xe8\x8f\xff\x935\xedG\x01\x87j\x1c\xb2\xec\xa8\x95\\\x80/,3\x92\xac\xaf\xd9\xda\x1b\x0e\x19\xdb\xa2\xa4\xa6&\x93+\xf4\x1dm\xda\xbarLQq\xd6\xdf\x16M\xdb]\xf2\x9eu\xc6U\x88\xc7\xd8\xd0\xca\xa7\x9e\x07\xb5&+\xf6\xd7\x1e\xf0\x16?x\x01\x0f\\sUo\xca\n\xeb\xfc\xe0\xcc\x96\xc2k\xfb\x86\x1c\x98\xa4\x7f\xc1\xaa\xfd\xab\xe31V[\xe3\xa9P\x95/\xb6\xc2\xfc\xd5\xc7\x12\xc7\xa2h\xe1\x96\x96\xe5\x93\xeb\xaa\xbeE\xec{O\x94k\x1cq\xee\x0d\xb2\xf4Is\x86f\x9b1\x93\x06&X|\x90M\x10\x9e\xd2\x9fO\x0fU\xdc\x8f|\x9a\xca\x99\x82\x99\xea\x14\xcc\x9cO\xf2\xa2\xeag\x18\x08\xd4@L0U\x12\x17\xdd\xcf*x\xc4\xd6\xa1l\xa8u`\x95H\xc9\x9f\xfe\xf8\xa7\xc7\xd6\x04\x9c?\xba\xbap\xd7\x00\xf3\xe62A\xcfV\xcf\x9f=o\x1fX\xc3&\xff\xcb\x0d\x8d\xf3?\xbb\x0du\x1f8\xafP\x1e&\xce.\x96\xb2\xb2~\x85\xac\xbd\x06/b\xcf\xba)\x81\x89\x04\x80\x17\x9fw\x1e\x95\xc2Wk\xce\xc0\xe4\xbdx\xfc\xcc\xcfGa\xf0nFj!\xf6\xde#\xee(- \xd8>\xf8~\xa4A\xd7QV\x12`\x1d\xe1t\x14\xb8\x00I7\xf1s\x14h@\xe7\xa6\xf3\xc80(\x84}\xa4v~\x84\xdf\xa1\xa2\xee\xe7|B\x8ak=90\xd4\xb0\x91\xdc\xb1}\xb0\x03R!Z!DK*\xf7xj\xf0\x8eGv\xde<nH\xa7DrT\xbd\xda\xdc6\x94\xfe\x85w(\xde6\xe8^\x98\x17\x12K\xdf\x9c\xf3\xdf>\x0c$@\xc4:E9\x97#I\xf7\x06-%\x16]\xef<\xa7\x8b1 \x08\xed\xa5A\xaf9\xeb\xe6\xae\x1fdr\"\x93\x13\x99\x9c\xc8\xe4D&'\xb4\x92\xc9\x89LNdr\"\x93\x13\x99\x9c\x08\xbc\x9b\xc9\x89LNdr\"\x93\x13\x99\x9c\xc8\xe4D&'29\x91\xc9 !(\x8a\x9cp\xc3\xd9N\xb8Q\xa5\x1e\x14\xb0\xcf\xc1;\x88\xbf\x0ba\x03\x8e\x18\xe4\x1e&f\xf4\x10'\xf4K\x01\x9b\x9a\xc8fT\xf4rt\"\x18\xe3cZ@WY\xb4\x1c\x02\x92\x90\x81\xd67\xfc\x94m\xc1@\x12Hnx\xb68M\xbdU\x1c \xa0\x1c\x06\xc4\xa3\xe1\x8a\xad\xa9\xbe\xcb\xe5:j\xe8\xa1\xbeag\\\x0c\xb0\xea\x11\x0b\xf5+\xa2\xb2\xac\x82gpb\xb3\xd38h\xf0\x03\xba\x10,\x17\x92\x88\x8bb\x06JW\x94\xe2HMpi\xed0>\xaao\xb6#\xa4%\x9c\xea\xa3D\xac\x1f\xbf\xa8\xdf\x0c\xe7\x98\x11\x188\xc9\xff\xf9K\x0c\xce\xf3\xceP\xf0\xccR\x98t+\x18\x8c\x9e\xe1\x97\xcdZC\x98\xd8_\xbd3\x17\x12\xcf^\x18\x9f\xc1\xb0x\x16\x1b\xc2<s\xda\x88\xe4uL\xc8\x98\x98>\xf5=!\xcf\x1b\xcb\xeb_\x08\\\x13O^\x07\x1e\xe6&~.w\x99\x9d\xc9\xecLfg2;\x93\xd9\x99\xbedv&\xb33\x99\x9d\xc9\xecLfg\x02\xeffv&\xb33\x99\x9d\xc9\xecLfg2;\x93\xd9\x99\xcc\xcedvF\x08\x8abg\xc0\xed_\xcdN\xed\xf5\xba \x12d\x15\xeb\x1a/\xb6\xb1\xdc\xb6\x8fM]o#\x83#\xb4s\x88\xbc!\x8e6\xd7%E1L7\xd0\xbb\xa2\xed\xe8p\xcb\x14\xff\x83\x1d\x83\x81/\x0b\xf7~\"\x93iq\x94\x9dK\xba%<\xe5gSP\xf58<\x01\x93\xcc\xd9\xa1rv\xa8 \xf1+\x8a\xc0$A,ju\x7f\xda\xecP\xa3d\x85F\x1a\xc4s\x15\x1f\x94X\x0e\x9b\xaa\x80oi\xcb\x8f\xd5\xca\xea\xe0=~\xc6\x91\x9ej]\x9e6\x9c,\xc6\xe5.\xad0\xd17\xfc&\x04!0\xa8\x19\")\x91\xe9\xdc\xa0\xca\x89\xcc\xa3\x8f\xa3\x93_;\xe2oT9\x0e\xb50\x1a\x8b\xa3 6x\x1d\x97\x00=.G<\xe1n\x05\x04Z\x02^.h\xf8\x9b\xa7A0\x8ajaI\xc8\x0ea\xf1sDX\xd21EX\x92\xf1EX\xbc\xac\x11\x16\xd7\x91%\x92;\xc2\x92\x8aA\xc2\x12\xe6\x91\xb0\xccb\x93\xb0\xcc\xe6\x94\xdc}\xc7\xbd3\xbc\xcc\x12\x96\xd9\xfc\x92S\x1a\xea:\x0f\xcb\x84e \xd7\xe4\x14x:\x02q2NX\xe6\xf0NNA^.\n\xcbBFJ\n\x89\xe0\xa5\x9coFsUX\x160VX\x16\xf0V\xbe\x85\xee\xa9j2F\x0bKZ^\x0bK2v\x0b\xcb8\xc7\x85%\x19\xd3\x85\xc5\xc7waY\xc2z\xb9u\x85\x83 \xc3\xe28|\xfa4\xe6\\V\xcc)\xcc\xc7\x94a\x99\xc9\x97aq\xb0fXFL\n/\x83\x86%\xc6\xe2\x98\xc9\xa6\xb9\x95\xa9d\xd8\x0cN\x0d\xcbXm\x96\xf1k\x968\xce\xb79X6, \xb86,\xcb\x187K\x1c\xb7h\x9c\xc6\xc3B\xf6\xcd\xfe\x92\xc5\xc6aY\xc2\xc9a \x92UX<\xfc\x1c\x96Q\x96\x0e\x8b\x03|\xe7%\x9e\xb1\xc3\xe2\x93c\xe1\x9d\x0b9<,\xf1\x9d3\xc6\xe7a\x19\xeb\x85Qn\x0f\xcb\x04\x86\x0f\x8b\xc5\xa4\xf0\xe2c\xfb\xb0,\xe7\xfc\xb0\xccg\xfe\xb0\x04Fv&\x0b\x88%\xc8\x05b\xf13\x82\xfd\xdf\xbd\xbc \x96@\xe7\xc6r\x84X\xc6\x98B,\x06_\x88e\x01k\x88%\x82;\xc4\x12\xcf b\x19\xe5\x11\xb1\xf8:\xd13\xad\xfd\xcf\x8f\xf1\x8bX\x96\xb1\x8cX\x02U\xb6~_\xc4;Z\xd2\x0c\x1e\x12\xcb\x126\xd2\xfe\x82\xc5NbY\xc4Q\xdaU\xd69K,)\x99K,>\xfe\x12\x8b\xc5bbI\xc3ebI\xc6hbI\xcbkb\x89c7\xb1\x8cr\x9cX\"\x99N\xed\xe1 \xdf\x89\xc5\xb1\xba\xc0\xc9\x8ea\x89\xe5\xc8\xc2\x0c\xa8\x90\x15\xc7\x83\x8a\x87\xc7\xd9P,\x8e\x06\xa5dF\xb1,\xe2G-i\x16_\x8a%\x1dk\xaa|& w\x8ae\xe9\x1c\x19\xe5Q\x85\xb8\x116\x15\x8b\xba3\x85Nb\x0b\xa3\xdf4Y\"\x12N\xfb\xcd\x15\x10\xe7\xa8\x95\x0c\xd1i\xbb\xba\xa1\x1bP\xc9\x0e\xa9\xd0\xb4[\xb4\\\x97!\n\x12@\xb9\xefP\xd2>\xc3#\xf1\x8ck\xbe\xe70\xdfs(\xdf\xf0\x8f!~R!\x1bkM\xc5\x15\x15\xec\xde\xbf;\x1f\xf8G\xa1_Z\xb8\xe5}\xad\x1bG\xeb\xba\xc1\x07\xb9^\x94>\x0eR%15\xccQ'\xb5\x99Z\xdb\xe4\x93\x1f\xea\xc3P)\xa7Vj\xe8\x91\x07\xb5\xc1\xb7\xa4\xe9{\xd6\xb7\x7fjm\xe4\x93\xcb\xdc=\x1d\xe1\xb5^jvF\x1c\x19\xbe'\xe4\xcd\x8c#;M'M[\xfeZ\xc0\x99$\xaa\xc1\xa7\x99\x0d>\xf9\x1b\xcc\x96\xb2\xbc@\x167@\x8e\xec\x8a\nK}y\xf1\xed\xb9\xd0\xc8\xc1\x1e\xd2r\xaf\"\xfd>\xbd\xab\x8c\x1b\x9b\x84[\xc8gf\x9a\x83>1A,5\xa0\x97\x96z\xc6\x8c\xf8\xc6$\xa9V\xb4\x87Lx\xebO\xe7%\xe3\xf4\x93Y\xea)\xa3\x89\x1a\xd2\xbc\x1a}=\xcb[F\x93\xe1\xf5\x9cI\xe1;\xa3\x7f\xa9\xb6\xbcgR\xf9\xcf\x84<h\x1c7\xac\x81w\x07\x9e\x972VH\\\x968V\x93%\x93\xc8\xaa\xe9c\xb18\x92\xc8\x8a\xcf\x87\xaed\x94\x8fe\xc3Q)\xd9p\xc4\x92\x0d\xc7\x9f\xd4p\x14C\xfa_\xba\x05\x152L\x82\xa6\x94*\xe5\xa9S\x8cr_l\xb4i\xb4\xd4&2m\xa1(]\xd2\xe5T\x04\xcb]\xcbr*\x828\xb71\xde\xde\x9c\x8a\xa0\x07\xb5s*\x82\x99.]\x0e\x85\x91\xd0q+\xad\xcbV2g\xadq7\xadd\x0eZ9\x15ANE0\xc1U*\xa7\"\x10\x1d\xadJ\\\xe2\xf6\x14\x13\x9d\x9fS\x11(%\xa7\"\x90%\xa7\"\xe8\xcb\x02\xa7\xa2\x08w\xa2xG\xa2Q\x17\xa2\x9c\x8a`\x89\xf3ONE\x90S\x11\xe4T\x04\xc2\xfcM\xe0p\xb3\xc8\xd5&\xa7\"\x98\x9a\x8a@\xb3\xc3Mj\xc1\x95\x9a\xc0\nb\x05A\x1dr\x8eN\x11\xb6W/\xf2\xfb\x89\xf2\x16\xc4#\x919\x01AN@\x90\x13\x10\xc8*8t\xc3|\xe24\x1dm\xea#M\x9d\x94\xa9\xd9\x88\x00\xe71\x97n\x91u\x98A\xb7,\xf6A\xf9\xcc\xce'\x1e\xe7\x8e\x10\x05m>;/#\xc1\x88\xd7\x0b\x84\xf4\x1f\x96\xa0\x9b ,V\xcdXF\xbc` m5\xa3U6\x96\xb1\xd0\xc4t\xea\x1b\x8b\xd3;\x06\x16\xabrK\x9c\xc7K\x06\xe6\xabuKN\xc0[\x06f+{K\x8c\xeb\ne\xeb\xa14\x8a\x1fK\xc8{\x06|\x1e4\x01\x8e\x17\xcb\xcc%\xde\xe5\xa4#9\xe9HN:2\xca$;\xa5\xe5\xa4#s\xb9g)$\x82\x81v\xbe\x19\xcdJcY\xc0McY\xc0P\xfb\x16\xba\xa7\xaa\xc9\xb8k,i\x19l,\xc9xl,\xe3l6\x96d\x9c6\x96\x9ct\xc4\xc3\x89c\x99\xc9\x8cc\xc9IG\x163\xe9\x96\xb8\x9ct$'\x1d\xc9IG\xc6Y|,\x13\xb8|,9\xe9\x88]r\xd2\x91q\xff\x00,\x11^\x02X\xe2}\x05\xb0\x8cz\x0c`\xc9IGr\xd2\x11,)}\x14\xb0\xe4\xa4#9\xe9\xc8(\x1b\x9e\x93\x8e\xe4\xa4#csd\xd4cB\x88\x9b\x9ct\x04\xbct\x98\xf2P\xe8\xb8\xa6\xf3\x81\xff^t{\xc1\xc0(\xc9I\x0c\x9eM\xaa\x17U\x8c\xa2Y\xf6\x0ep\xdfHJ\xe2\xaeq\xeb\xf4\xf4\xb0/\x9f\xc8\xb1\xa5C\xc9\xb1\xa5Xrl\xe9\xcf=\xb6tqTid<\xe9\xa7\xe3\xae!\x1b-\xd1\xd2d'\x87\x93\x90q\x99o\xb9^@#&#\x10shi\x1c9\x88\x84\x84\xd5G9\xb44\x87\x96N#\xee\x9c'\xfbd\xf4\\Zb.\x19%7N\xc6%\xa3\xe1rhi\x0e-\x9d@\x88\xe5\xd0R\x07\xc5\xb5\x84\xdc\x8a\x89\xb6\xcc\xa1\xa5J\xc9\xa1\xa5\xb2\xe4\xd0\xd2\xbe,\xa0\x8e\"H\xa3x\xbah\x94(\xca\xa1\xa5K(\x9e\x1cZ\x9aCKsh)$\xa3U\x16\x11*9\xb4tjh\xe9\xdc[\xae\xdd\xc0\xef\x18\xc4\x18\x0fn:\x84(\x00\xe7*\x06\xe1\\\x969o\x009s\n\xbd\x8csf\x9c3\xe3\x9c\x19\xe7\x84\x8csf\x9c3\xe3\x9c\x19\xe7\xcc8g\xc69y\xc98g\xc693\xce\x99q\xce\x8csf\x9c3\xe3\x9c\x19\xe7\xd4\xca\xfc\xd1M\x8fs\x9eGd\xcd[\x00u.\xccX\xe5\x96\xe3\x05<\xeb\xc3\xa1\xe8\x0e\x02\xf4\xfc\x81g\xdd{\xd7\xd0mq\x17\x8dn^\xd3\xfb\xcb\xa3\xf2\n\xf8NY\xd6 \xcb\xf4eU?\xcf\x1a,\x93\x00\x92n\x0f\xf8\x05D\x1a:\xf4\xe1\x96\xbb\xddG\x84\x98\xda\xae9\xad\xd9 \\\xd3{\xd86\xf5\x81?\xf7\x8ep\xd5\xb8\x91/\xf5\x0b\x81\x1c\x8f\xb4\xda<b\x7f_\xfd/z\xcf\xfe_\xce\x0d\xf3O\xfc\xd3g\xfc\x93\xab\xd5\xe3\xc7z\xffU\x15\xe5\x87\x0f\xd6\x7f\xe7\xfd\xbf^W\x9b\xe8\x0e\x14\xae\xaf\xc5f\xa4\xff\xb4\xc9#\xc0v{\xee\x15-(\x95\x12/\x0b\xe0\xe23\xe7\x10\x1b&\xbb;q\x903$_L\x02\x04\x9ceE\xedX\x04,[J\xbaSc\xe7\x18r\xb5\x06\x8b\xd5&\xf5\x85P\x85\xe4\x0d\xae\xf2\x93=\x94T\xd2a\x99\x0f\xc1\xfb\xce\n\x87\xa0\x83?\x88\x96\xca\xe8\x0f&N\xb4\x9e\xe9e\x01\x16\x9eDxBEwu\xc7\xc6\x99?w\xf1\xed\xb9&\xeb\x866\x05\xdbqMPZ\x80\xafb2\xc0\x9eT\x9bvO\xae\xa3\x00\x86\x8bo\xcf\xfb\xd1\x106\x03\xa6\xf4\xe3\xa7nQ\xad\x0d\xedhs(*\n\xb4Z\xd7lCi\x05\x90\xc8Q\x07\x159\xde\xd6\x9a\xa1\xb3\xde\x93\xaa\xa2%>N\xd6\xd7\xb4k\x85d\xd6z\xcf46X\x13}A(\x97F\xf6\x08\x85\xd2xZ\xa9a1\xae\xe1\xa7\xd5\xe9\xa0\xce\x94'\xf0\xe1\xe3\xcb\x8f\xaf/?\xbd\xb9xs\xf1\xf1\xe2\xe5\xf7\x17\xff\xff\xebW\x97\x9f\xde|x\xf7\xfa\xfc\xe2\xbb\x8b\xd7\xaf\x1c\xcf\xb2'\x1d?\x7f|\xff\xbf\xdf\xbe{\xfd\xc6\xf1\x17\xedgak\xbf\x88\xfc0\x0f\xbf\xa0\xcd\x914\xdd\xbd\xafW\x94G\xf0\xc6\xe1X\x951\x89\x94r\xa80\x98\xcfJ\x19\x9c\x93Pu\xb5$\x13F[dB\xfc\x98\xa9\xd6\xf8\xd1\xd5b\xf5\xd7\xcf\xd5\x18mFF5\xca\x10\xe8\xce\xce\x81\xf9\x01\xdd\x8d2wg\xb0g\x89\xb4\x02\x86\xc4\xbb|\x13\xee\x97\x91Y\xbd\x95\xa3k\x1cy\xe1\xfcY\xe1\\V\x83,\x01\xe5\x1c\xc0i}\xc1N\x93\xad\n\xe3\xfdY\xe6\x85!\xc3il\x8c<c[\x1d\xc0\xc7\xad$\xf7\x97G\xda\x14\xf5\x98\xbd\xe0 \x0c\xf3OW.\x1bP\xb6 \xbfNm\xc7\x83\xe4\xe0\x8a\xf3*\x8e\x18E\xb9+\x08\"Am\x15\xea\xf5'lw\xda\n\xd6\x08\xde\xbc\xfd\xf8\xfa\x85\xfe\xa5\xb2\xde\x15k62\xfc\xf0\xdf\x03\xfc\x1c\x97P\xa4\xb5\xf5A;\x99\x8b\xdc\xaf8\x13\xdd\x86\xb5f\x8f)q\x96\xbc\xe6\xdbS)\xa6,[\x85D,;\xb1\x82pJ\x88d\xb5BZK\x8f\xa4\xe1\x9bK\xd5\xef\xa0\xd8\x1c\x8c\xe9\xe3\x9d\xc5\xdbpE\xe19\xc8H7\xad\x12\x9c.\xa2mG\xae\xca\xa2\x95\x8c'Q\xb5\xc2\x15\xedn)\xad\xa0\xbb\xad\xb1J\xed*dp\x9a;\xc0\xe7\xb27\xb5\x89\x92RA[\xca\xd9\xd6a\x1e\xa5\xbc\xb0\xd2\x8b\x14\xb1\xad\x84}\n\xd8Tr\xc9\x14\xef\x84\xed\xd9\xa7l\xbd\x8a6\x94\x9a]\xeb\xd4%\xcau\xa9b\x1dS\xaa1\n\xd5=]\xd4e\xa5\x19\xe81s[\x99\x03B\x9c0==k\xf8B\xce\xcb\xcd\xa0)\xa2\xd7\xf2\xb4\xf5\xa0\xcc\xf9\xe1\xbc\xb2Z\xa2\x16\xf21\xd4\x96\x9f\x8f\xa1\x93\x8f\xa1.\xd5\xf2s:\x80\x8a\xf7\xf2\xf93\x9f?#Z\x94\xcf\x9f\xf9\xfc9\x94%&\x12$0\x93 \xc2Tr=\xf379\x7fj\x07\xc1(\xcd\xe0>\xe9\xb9\x8c(=\xb1\x8e\xfc\x11\xa7\xef\xc0\x8eZJ^\xb9\xe9\xa8O\xa6\xe31\xdd\xde\x91\x86\xc8m=\xc2X;\x90\xbbK\xf4\x91\xa5\x9b\xcb\xae8P\xd6\x8f\x97We\xbd\xbeN\xd0\x95\xda\xc4;\x90\xbb\xe2p:\x80\xfc\x1c\xb0\xcf\xb1~\x06\xfe9xTTP\x91\xaan\xe9\xba\xae6\xed\xe3\xb3~\x8b\xa7\xd5\xb6n\xd6\xea\x04\xc27\xf8H \x9fmv\x0e>\xb0\x9dWz27t[\xb2\x83\xb4\xe1\xaf[\x92fG\xdb\x0e\xc8\x81-`\xbe\x9a\x0b\xe9a\xce\xd75\xd74\xe8\xf4\xd7P\xd2\xd6\x15\xb9*\xef\xa1#\xd7\x94\xbb\x86\xa1?\xaa\"\xb0\x93\xe9w\xb0N\xa7jC\x1b\xa8\xf8\xed\x16\xc0z\x9b\xdf\x16c\x1c&\xc5U\x10+x -\xd9\xb2\x8f\xd6\xc5\x9a\x13j_=\xf9\xfa\x8e\x8b\xf4\xf4\x92c\xc2\xe1\x88k\xd6RKy\xcb\x94y\xd7wO\xe8\xe8\x8e\x89[\xf8\xd62\xbc:\xeb\x96\x18\xb9a0\x8d2\xcf\xb4\x0eY\xf8m\xc9z\xab\xde\xa2;\xb8\xbe\x83\xf0/\xbaN@\x18F!\x04\xfeDw\x81\xe1\xcb\xe2R\x0d\xd2 \x1b\x92\xb5\x00%\xdd\x92v\xf0\x104j\x17et\xe4+\xc4\xf2\x15b\x90\xaf\x10\xf3\xe5\xa4\xf2\xa9\xb6xW\x06K\x84//\x95C\xb1\xf6?-\xc9N\xd5\x9b\x02\xde\xfcT\x91\x91o\xe2\xb09G\xcbL=\xda\xe8Ur\xe2\x01\xee\xb6\xc0<C\xba\xf3^\xee\x134\xa3\xc3\x87\x16H\x1b\x9b\x06\xa3\x97\xfa\xa4\x8bQ\x83\x94qj0v\x9dO7?^\x0d\x12\xc6\xac\xc1h\xdc\x1a\xcc\x8d]\x83%\xf1k\xae\x1e\x1b\xbf\xc2gv\x1c\x9bC\xd6\xe8\xf5=K\xe2\xd9\x1c\xe2\x82W\xf7\xa4\x8dk\x83\xe5\xb1m\x90>\xbe\x0d\x96\xc5\xb8\xc1\xb287\xf7\x12uV2Y\xf4\x1b$\x8f\x80\x83\x94Qp\x10\x15 \x07)\xa3\xe1`\xe4\xea\x9d%Qq\xae5\xee\xb9v\xa7\x8b\x89\x95\x83\xc5\xf1r\x0e\x81\xee\x0bwfF\xd1\x81\xff\xb2\x9dyH\x19D\xed\xff3#\xeb\\j/p\xc5N\xb8\x1e\xcb\xa2\xec\x0ca\xa1\xcbu\x12D\xdbA\xea\x88;pD\xdd\xc1\xf2\xc8;CZ\xe7\xbcRgI,\x1e\x8c\x85\xa8A\xf82\x9d\xd1\xb8<\xf0\xde,\x11\x1f\x9f\xe7\x97aE6,\x8a\xd5\x83 \x9d1\x16\xb3\x07\xa3\xed\x1e\x8d\xdd\x83i\xf1{\xe0\xb9]$te\xce\xf2X>X\x14\xcf\x07\xa11\x9c\x19\xd7\x07c\xb1}0zM\xce\xd8%9\xde\xce\x8c\x8d\xf5\x83\x88x?p_\x8e\xb3 \xee\x0f\xe2b\xff`R\xfc\x1f\xc4\xc4\x00\x82\xff~\x19\xe7\xe7=\xcf\x8e\xc5\x04\xc2\xe2\xb8@\x08U\xd4\xf85i\x8c ,\x8c\x134D\xb9/\xbcI\x1a9\x08\x89\xa3\x07a\xe4j\x1b\xe7\xc56i\" !e4!$\x8f(\x84\xe8\xa8B\x88\x89,\x84\xf8\xe8B\x88\x8c0\x04\xdfE6\xee\xaf\xc7\xc6\xa3\x8d_b\x13\x19q\x08qQ\x87\xe0jF\xca\xe8CX\x1a\x81h\xc8r^\\\x93.&\x11\x92\xc6%\xc2\xe2\xf90\x1a\x9f\x08\x111\x8a`m:\x0ed\xba\xff\xbb\x9bB\x07\x9dFW\x92\xa5)<\xba\nt\x0b=\xa1\x91\xe9\xfc\xef\x8a@\x17\x99\x0e?oN\xb0\xa1]S\xd0\x9b\xcc fN0s\x82\x899\xc1\x10+7\x81\x17t\x89\x99\xc5\x0d.\xcb\xeb\x98\xd39.\xa3\xca\x92\xd1d9\x9dc\x1c\x1d\x860\xbe\xd5G9\x9d\xe3\x14\xdak!\xe5\x95\x98\xeeZ@u-\xa0\xb9\x1c\n#!\xa1\x95\x96\xccJFd\x8d\x93X\xc9\x08\xac\x9c\xce1\xa7s\x9c@4\xe5t\x8e\x0e\x1ai \x85\x14\x93\xe10\xa7sTJN\xe7(KN\xe7\xd8\x97\x05\xb4N\x04\xa5\x13O\xe7\x8cR99\x9d\xe3\x12\x9a&\xa7s\xcc\xe9\x1cs:Ga\xfe& T\x16\x91)9\x9d\xe3\xd4t\x8efB\x9bq\xff\xfd\xd8L :\x07s\xf1\xca-Z\xff\xbcx9\xf3#\xea\x1f\xe2\x08\x89\xcc\x8fd~\xe4\xef\x86\x1fY\x98\x05\xd6'i\x0eK\x821\xaf\x93\xd9\x91\xa3\x12\x1c\x0d\xe64?\xdaq\xb4C\xd4\xac\xb4\x93\x0e\xf5\xe6T\xd2Y !\xa2B\xada\xe6\"\x0fCH)C\xafaQ\xf85,\x0e\xc16\x84ID\xb9\x9b\x1a\x86\x0d\x9f!\x14\xfb_=KG\x9f\xaes\x96\x8c\x08\xf2\xf6\xa6L\x0e\xac\x95\xc9\xabd\x90fm\xc3J\xa0\xf5\x84\x14\xd3\xce\xef\xba\xbf\x0d3\xc2\x0b\x17d\x7f\x02g\x06\xa8\xe1kv\xde$g\xd6$g\xe3\xb0\xf8\xa3\x14CY\xa1 \xd4^\xf1\xe7)\xd9\xa1 \x90!\n\x02\xad\xc5\xe2\xc9\x14\x05\xd1\x95L\x911\nF\xb5\\\xda\xccQ\x10\xc8\x1e\x05\x10\x93A\nFk\xbc \x9f\x94=\xcd0\xbb\x14\x189\xa5`j^)\xb5\xfe\x8ep\xdc\xf9 \xa6 4]\xccDS01\xd9\x14\xf8\x13NA0\xe9\x14\xf8\x12O\xc1\xf4\xe4S\xe0M@\x05)\x93PAH\xe3\xf8\xf5\x8dG\xad\xc2\xd8*\x1e[tK\x92S9\x84\x89|\x1d\xce\x04U\xe0MR\x05\xe1DU\x90\xbe\x91\xda,\xf77\xd6!\xc9\xce\xcd\xe5x(\x94\xbc\n\xc0\x9d\xc0\nR'\xb1\x82\xf0\xde\x16\xde\xdd\xc2 \xad`lD`,\\\xcf\x97\xdc\n\x12$\xb8\x82DI\xae 2\xd1\x95\xeb9w\xb2+\xf0&\xbc\x82\xcfrtX\x9a\x80\xd9\x10\xe7\xd8\x9d\x96\xa6d6\xc4]\xdd[i\x99\xc1L\xcd\x0c\xc1f/L\xd1\xacH\x92\xc9\x9a\x95\x9f\xf4\x8c\xcd\xca\x1f\x16\xa6mV\xbf\xaa*'w\xeef\xc8x^\xfc\x02\xc9x^\xc6\xf3~\x89x^\x144\x11\x05JXp\x04\xbc\x7fw.\xbf,\xf0\x08\xf8\x96\xb6\xdc\xf3\xc6\xb6\x8e\xce\xb8;X\xb5.O\x1b\xaeHq\xa1\xcb\xdd\x13{E\x08c\x1b\xac\x14\x1c\xd4\x0c\xf1\xf8\xc7t\x98p\x107/w\xdd\x84\xb4\xd0n$\xc1i\x12\x19\x96]\xdf\xc1v\xdal,^{?\xfa\x1b\x93\xa1\x14\x1f\x98\x12\x02\x18\x82i\xa8g\x99\x9daX%\xc2\xec\x9c\x0c\xad\x84\xc1\x951x%\x08\xb0\xc4W7\x15\xc82f\x11\xc22\xa0\xc5!M\xc0 ^\xa8%\x16l \x9d \xd2A-#`\xcbD\xb8E{\xdb\x81\xb7,E\\\x82\xf3\xc7\x85\xbaL\xc7]\x82\xc8\xcb\x18\xf6\x12@_f\xe1/!\x04&1\x063\x1b\xf7\x0d 1\xa3\xcb}|m&\xc6c\xc6\x11\x99\x10&3\x8a\xca|\x96\x06\xcf\xc7f\"\xd1\x99q|\xc6\x8f\xd0|\x06\x8cfd\xbb\x1c\xdb0\xc7\x91\x9a\xd1Q\x821\xb4&\x8c\xd7\xa4Al\xd2a6\xf1\xa8\xcd\x14\xdc&\x84\xdc\x04{8p\x1a4f\xd3\xf4\xe4\xe5\x0e!\xff\xa5\x0fQ\xc2D\xe6X|\x11\xd8F5\xa4A\xd3vuC7\xaaU\xde\xaf\x0du9\x1c\xc9\xae\xa88|d\xa1\x0d\xc3\x9f\xfa\xf3\xcd\xf0H<\xb2P\xd1\xbb\xee\xf2\x9a\xdeO<\xc3\x87\xe3=\xfe\xcb\\\x0f\xf2+\xf2D\xc6\xfeS\x04\x14\x91V\x18*\xef\xc8\x8e\xbeG\xb2u\x85\x7f7\x84\xfc\x99\x9d\x81\xf8\xeb\x9c\x14?\x92\x1d;g\xb6\x1dP\x1e\xc6\xc3q\x8a\x15\\t\x8a\xd7\xde\xb1\xbb\x87bkNJ\x8eG\x91\x86BU\xc3\xa1n\xa8\x8c\xbbR'OWw$6Zt\x1c\xd8\xb0\x14\x04\x17\xcf{\x83\xff\x07\xc2:l\n\xc8\x100%r\xc9\xac\xbf\xdaQ\\\x93^r!\xe6JfG\xcb\x96v\xec\xa0\xda\xca\xf8\xb5\x96;\x11 \xf2\xc6a\xbc\xdbB\x996\xfe1\xc4O*\xa7\xeaZ\xf3\x8a,*\xd8\xbd\x7fw>\x1c\xb4\x85\xbbb\x0b\xb7\xbc\xafu\x13y]7\xf8 w\xa5\x94\xfc\xba\xf4p\xdc\x93\x16\x8dl\xb5\x99Z\xdb\xe4\x93\x1f\xea\xc3P)gv\x88\x86\x1e)W\x15\xdf\x92\xa6\xefY_\xb6\x12\xad\x8d|r\x99\x0e\xb4\xd2\xa7\xd1\x83\xff\xe1\xfcD_\x0d\x0d\x00\x98\xb4 3\xd4\x97\xa1\xbe\x0c\xf5\xc5B}q\x0eH\x16\xd6'\x83\xb3m\xc8\xcf\x0f\xc1}\x18\x0e\xb2\xd6\xbcW\x0f\x9d\xb1GM\xc7\x01\xd3}\xac\xb4\x0e\x93\x93\x8e\x90n\xa5\xaeg\x9c)\xb6\xba\xcd\xc3g\x05\x8f\x06\x17F Fis\x18\x84\xbd\xd8+,\xf6\xe13\x10\xd5=\x03\xf6\xbfP7\xa0\xd5hP\xde\xa3=\xf3\x02D\xe0\x17\xd6\xcf|\x8f\xbd\xf5\x02^\x9ag!\xb6c\xfc\xc7\xa9\xe5\x00B\xc3\xf9\xaa=\x85\xfaH9lc\xc3*F'{\x04\x92\xf5uU\xdf\x96t\xb3\x13\x02{A\xd0v\xf4\xe8:\x80\x89\x0f\xe8\xe7\x19u\xf0<\x9fZ\xd7\x87cI;\xf3;\x81\xa9(\xa0*u2\xc6%\xd8W\xb6\x13\xa7\xee\x8eD mdp\x02\x92\xec\xfe\xe42\xa4\xcf=\xc9\x17 z&~'\xea\x1a\x80\xec\x86\xa1B\xa8\x8c\xdf\x1b\x8b\xff\x19=N\x9ek\x0f\x9c\xf8\x18\x8af\x93(<\xa4?\xfduw\xc3\xcf\xe7\xdf\xbf\xfd\xa0|`\x92\x1e\x83\xa0\x81\xea\xd2g\xa2\x87\xa2\x95\x19+X\xc3\xb3\x89\x8a\x0db\xfa\xd5\xa3\xdc\xc0\xa5\xe0D\xd5'j6\xf0h7E\xda\x0c\xb5\xe6\x00h,\xa5\xa6|\xc1\xa7\xcd\xe0\xed\x91V\x03\x8eL\x1a\xb5\x07\x1aJ6\xfcD\xd82\xa5H\xaa\x0d4tM\x8b\x1b*\xc1f\xe7\xe7q\xb0\xcc\n\\Q\xf6\x9d\xb2f\xcb\x9aIZ\x93\x8a\x1d\xf4\xca\xba\xda\xd1\xa6\xbfC[~\xabn\xe4\xa7\x94/\x18\x1f\xad\x9b\x0dek\xcaZ\x99\xb7{*r5Pu\xba\xf1\xe7)\x97}\xaa\xc4?\xa6.\xd2\xb7\xef_\xbd~\x7f\xf9\xe6\xed\x9b\xd7\xde\xb5\x89\x8f|z\xc3\xff\xdf\xf97\xf3/\xfd\x82\x1b\x91\xee_g\xbe\x8a\xbd\x80\xbf\xd0\xa6~\x82\xc7Lfu\xc9\xee\x90}\xa7\x8f\x9fQ\xf5\x17=\xa7 \x08\x8c\x0d-\x8b\x1b\xde\x87E\xc5#\xb0\xb9\x983\xc1r0\xe3zS\xf0\xcc\x0c=\x10\xc6\x1f\x00\x0d\xff\xec\xb9\xd6{\xb8e\xa7\xd0V\xb9,K\xab\x87U\x0b\xd2\xa8U\xa0wd\xddq\xd3V\xf9\x92K\xb8\x90\xed\x06\xeb{os}ey\x94x\xd4Q\xf1X7s]\xca-@\x82'\x96\xf0\xc3\xe9\xd8\xdc\xfaV\xc4\xbeb\x8a\x12\xbe~\\Y\xad\xe4\x16\xf8\x85\xf5S|ue\x7f\x0d]4\nz+\xb0\xfc\xbe>\xa6\xb4N\xb45 M\x15'_\xdd\x9e\xf1\xdd\x06\xa7\xabHE\xcf\xfbN\xce\xad\x16y\x0b\xf5\xc3\x1c\xc2\x14\xed\xe4\xd8U\xd7\x90\x9b>\x0c\xf2F5\xf6\xc6*Z\x1f \xb3\xdc\xa44\xf1\xae\\8E\x0bd\xd7P\xba\x81\xd3\x91\xd9E\xa7\x06\xd9;EOs\x81\xee\xf5/\xac\x99~\x97=\x16GZ\x16\x15\x95\x81\xe2l\x91<\xa9\xab\xb5T\xdar \xdd\xf7\x0e[2\xef\x8c\x10\x88\x81G-\x1b\xd7\xde\x85\x8c\xc3'\xe8\xd4%k\xcd\xf7-\x91\xdb\x8c\xef\xe3\x94k\xf5#G\xc7j\x89\x8e1m\xceZ\xd3\xafa>a\xcc\x87\x85\xb2W\x1e\xf4\xdans\xee\xfc\xb7V\xa4s\xac\xfc+1\xd9*4V\xa0k\xf5\x85\xa6Q\xfc\xaa\x13/8\xafr'\x9a\x1c\xe3\xa8\xe4\xeas\x05\x95\xcf\x96\xb3\xf6s\xb6\x9c\xb3\xe5\x9c-\xe7\xa8E\x9a-\xe7l9g\xcby\xca\x1e\x9e-\xe7d\x96s\xac (I|6w,xu\xae\xb5\x16\x05\x8aZ6\x96\xc3\\3}\x1ex5\xf9\x8e\x80\x0f\x08Q\xa6\xcf\x83\xd7\x96~\xcb\x06U\xb5\xe5\xbc\xd4IP\xbd\xfa\x14\xb7Ki\xc7(lw\x07-V\xd4\x7f\x03%\x1dT\xd0\x9fE9\x8b\xa9\xc6G\xd2k-\x8a/\xa2\xbd7\x8c\x86kJ\xbc\xe3u\xb28\xb5\xd4\xa7+Y9c\xa1M>\x179\x85\n\x9a\xc4\x16\xdb\xd2?\x9fh\xb5\xb6R\x95\x1bB=,\xb9\xf6-q\x94\x96\x12\xe5\x176\xa4#\x91\xd25W\x1dMv\xef\xbf\xc1\xa4\x19\xf9\xaf\xda\xfe\xcbl\x88V\x81\xf5\xa2\x8c\xa4\xc6\xb4\xf0<\xa2\xc5\x9aW\x0e*\xba\xa6m+R\x12\xcb\x80\x07\xaeR\xb8'\x94\x1c`\xfc\xe4\xe0>\xd8\x9e\xa9v\xb7\xfcE\x1a\xb9\xc7\xc1\xd0<'e\x89t\xb6 \x809q\xc4V){[\xeaj\x99R[\xabM\xc1\xb7\xc4\x86s\xf1\x85$\x86e\x8e*\xce\x8b\xca\xdaX\x95\xe1y\x98\x89\xac\x8cO\xfb!e\x8d\xff\xce\xd7d\xe7k\xb2!_\x93\x9d\xaf\xc9\x16\xa5\xcb\xd7d'\xba/\x00\x96\xdf\x19\x00\xe9\xef\x0d\x80ew\x07\xc0\xb2\xfb\x03\xdcK\xd4Y\xc9d\xb7\n@\xf2\x9b\x05 \xe5\xed\x02\x10u\xc3\x00\xa4\xbce\x00\xf25\xd9\xae\xcf\xcc\xbc\x9d\x00\xf25\xd9\xf3n/0\x84\xe5k\xb2\xf35\xd9\x112\xf25\xd9z\xc9\xd7dc\xc9\xd7d\xe7k\xb2g\xdd\xb7\x00\xf9\x9a\xec.\xf2F\x06H|+\x03\xe4k\xb2\xf35\xd9Snq\x80\xf8\x9b\x1c \xee6\x07\xc8\xd7d\xe7k\xb2\xf35\xd9\xea\xcb9m\x1c\x8a^V\x9d\x1cK\x9acI\x95\xbfD]\x03\xe1\xa5\xe4d0\xe9\xfb\xd1l\xf6\x1eA\xbe\xfb\x1f<\xa4`\xbe\x1f;\xdf\x8f\x9d\xef\xc7\xce\xf7cO\xe1\xbb\x16r]\x89y\xae\x05\x1c\xd7\x02~\xcb\xa10\x122YiY\xacd\x0c\xd68{\x95\x8c\xb9\xca\xf7c\xe7\xfb\xb1'0L\xf9~l\x07\x7f\xb4\x84;\x8a\xb92:\xdf\x8f\xad\x94|?\xb6,\xf9~\xec\xbe,\xe0s\"\xb8\x9cx\x1eg\x94\xc3\xc9\xf7c/\xe1g\xf2\xfd\xd8^\xf6%\x19\xf3\x92\x96u\x89c\\F\xd9\x96H\xa6%\x86e\xc9\xf7c\x0f\xb2\x16\xb1(\xf9~\xec|?v&F21\x92\x89\x91L\x8c\xcc'F\xa6S!\xf8\x9e\x1d\x12%\"\xf6\xe2.\xf8m\xe7\xa8\x14W\xfc\xd2\xc4,$\x10Z\xed?\xcf\xdbD\xbd\x19J`N\x96\x12\x08\xba\x03@\xc2l%\xb0(c \xc4\xf4} k \xa4\xcd\\\x02\x7f\xab\xec%\xf092\x98\xc0\xe4,&\xf0\xb7\xc8d\x02v6\x13pf4\x01X\x94\xd5\x04\xa6/\xfa\xd1\x0c'0\x92\xe5\x04\x02\x99N 2x~x6\xb4^\x17\x07\xd3\x9b\x82>cP\xbd,\xa3\xd9O\xe0s\x05\xd9c\xf1_\xf6\x13\x9b \x05|[\x17\x04\x83g\x9dYQ 4?a\x94\xc9\x80\xd4\x19R\xc0\x9d%\x05\x02\x99R`\xac 32\xa6@(k\xca\xf0\xc1I\x97\xed\xfb\xe3\xa7\xadn]\x9eI\xc5\x10X[\x9e\x07#\xc9U\xc0\x95`\x05\"\xda\x92*\xd1Jh\xe6-NU\xa8\xc8\xea\x93\x16*\xbf%\xca\\\xa8~eA\xfaB\xc8'\xf5YG\xe3|R\xcf'\xf5_\xccI\xdd=\xe8\xae\xd32\xc4\\\x85!\x14\xe4\xfbw\xe7B\x92\xbc\xffB\xfcS\xbd\xf9\xf6|\xd8\x17c\xae\xbdE\x03\xab\xd7\x04_\xa8\x1a$t\xe1\xad\x1b\x03\x98q\xd5\xadx\xd1\xd4\x86QY\xcc\xa2\xef\xb9u\xdek9\xe7\xc4\x1f\xb4M~\xee\xb7Y\x06\xcf\xff3\x11\x80\xb13EZ\x14`)\x0e\x101\x1a#H@r,\xe0o\x88\x06|&<`\x0e\"\xf07\xc2\x04\x9c\xa8\x80\x0f\x17X\x8c\x0c\xccR\x0e\x11\xa7v\x88@\x08\xc2\x18\xc14\x94`|M'C\n\xfe\xa6XA$Z\xf0Y\xf1\x82\xf0\xf5\xc0S0\x83\x00j\x10\xc2\x0d\x02\xc8\xc1\xc8\xc1;\x06=X\x82\x1f8\xc5)k\xd0\x1e\xa8\x10\x860\xda\x98\x998\xc2\x08\x92\xe0\xc7\x12Fn\x9aw\xd6\xd3\x87(,\xc4\x14,i2[\xab]\xb7q\\\xc1\x83,\xccl\xd7L\xc0\xc1\x92c\x03\x10\xe0\x9f\xfa\xe35u\xe7~\xc5\xe2\x9f\x85\xe3r\xfb\xed\xc5%:\xa4\x85\x13f\x86\xc5\xe2\xcc\x0f\xeb\xa8\x87y)\xae\xb4\x0b\xf2\x8d\xb8\xf9F\xdc|#n\xbe\x117C\x80\x19\x02\xcc\x10`\x0c\x048\xed:\\\xb9\xcf\xda `\x08\x96\xeb\xad\xc3\x0c\xd0e\x80.\x03t\x19\xa0\xcb\x00\xddT\xe5\x10\x05\x98e\x80.\x03t\x19\xa0\xb3\x1e\xc8\x00]\x06\xe82@\xf7\xd3\x00t\x83A`\xf8\xd1\x13eNf\xa4.#u\x19\xa9\xcbH]F\xeax\xc9H\xdd\xff\x83H\x9d\x98(FX\x9d\x179\x9b\x1aVg \x8a\x0c\xab{C\xef\xba\x0f\xe2&\xb9\xf7xx\x9e\x0c\xde\xf1\xedP^Gw)\x8e\xe0&\x92\xe7q<6\x96\x94\xe8%\xbe#J\x89=\x8a\x80*D<\x9b\xbd\x9b\xd5?\xc4i\xa8\xac0\xb3\xc2\xfce+\xccAU\x99\xa4\x06\x9a]a-\x19Pv3\xd4\xe5\x07Zm\x16\xea\xca\x96Vc\xa9\x1a\xa6(J\x8e\x82f-\xb9P-e-\x99\xb5\xe4/[K\xfa\xb4\xd4|m\xc9\xa4D\xaaH\xbc\xfc\xf7\xa5~-\xeed=i\\\xab\xbb@\x85\x89p\xbeP\x9e\x07D\xbaT\x95\xb6\xe0{Yef\x95\x99U\xe6/Me\x06\xb5\x96v\x89\xb9\x98\xd9\x08\x8f\xf5\x10!\xd3\xa22\xe3\xb7\xd08\xb8\x82I\xd9\xd6S\xc3\xe3\x84\x18\xe7\xba\x9f\xa6w\xa7{\xe2\x98\x97\xab\x9b\x9a0\xadG\xcet&F[\xb2\x92\xe2\xf0\xdc\xe5\x8fe\x161\xe3\xfc\x8c\xf7v\x7f,\xf6\x1d\xff\xa3\x9f \xe83\xa3\x0eG\xf7\xad\xff\xe2I\xed\xee\x7f,\x11_u\\|\xaa}\xb3G\xc4\x99|#\xdb_\xdb\xd7\x88\xa9\x0d\xb5:!z\x18'\xa9\xee\x0b\xc4\xf53\xadhS\xac\xd1\"\xd1\xee\xe2\x97s\x9f/\x19\xee\x0e\xae3\x03\xa2\x16\xc3\x95\xfc\xadu'\x7f{68\xa3\x1c\xbb\xd6\xf0\x07:'e\x89\nK,\xe6\xe2\xaa\xc4\xf5\xcc\x84\xc8T\x03\xf2j\x01\xadn\x05\xe7\x87\x1b\xe3\x9e\xebn_\xb4\xfa'd\xfa>N\x8a\xc9zZ\xd5\xe4)\xea\x89\xacf\xe6\xcc2g\x969\xb3\xcc\x99eK\x9d\x97l\xa9gK\xddk\xa9w\x0e'\xf7\x18\x84\xc3m2O\xc29\xce\xfb\xfd|\xb2\xa5=\x98\x02\x0b\xd0\x86\x8cn`\xc9:3\xeb\xcc\xac3\x1d\xe6fPW\xcd\x026\xe4\xc7g\xe3\x1b\xc3\x9a\x97\xa2&\x00\x1cC#\xa6c\x1b\xca!1\xc3\x1a\x19\xd6\xc8\xb0F\x865\xfa\x92a\x8dY\x06I\x865\x14a\x19\xd6\xc0\x92M\xf4l\xa2g\x13}\xf8K<\xac\xe1\xb0n\xe7@\x1a\x8a\x98Ih\xc6{\xdc\xa4'\x1b\xd6\xc2C\xd7\xf2e\xbb\xaa\xeb\x92\x92\xca\xd4'\xedi\xcd\xcc\x0d\xd8\x96d\xc7\x9bRl\xa5}\x80\x80BF+\xe6\xeb\x9e\xac\n\xb3*\xfc\xa5\xa9B\x17Za\xe8\xa2X\xa8\xc2\x00)\xa4Z \x80\x15g1h\x85\x107\x15\xb3\xf8TI\xd5\xf8r}=\x1d\xb0\x90\xc7\xe2yp\x85\xb5f\xc3\xbe\xc42\xa4\xf3\xd4\xd7\xd9<\xca\x0d\xf5\x11\xeff{Q\x8a^V\x9d\xac$\xb3\x92T\xfe\x12c/\xba5\x0b\x84\x92<\xa9\xaf?\xd5\xdf\x8f\xb4\x12\x87\x97PG\xff\xf24\x9a\x817fE\x96\x15YVd?\x13Ef\xe8\x949\xbal\xc6\xf1\xf7\xc3\x90\x14\xce\x9a\xfcj\xb6\xa6\xd1\x94a\xc6sJ\xda6w\xb26G\x8a6Gb\xb6I\xe9\xd8\xdc8g\x8a\xd4k\xf3\x12\xae\x8d\xf6\x99'\xcdZ\xa2\xe4j\x9f=\xa5Z\xd2Dj\xf1\xe9\xd3>k\xd24\xe5c\xeb\xba=\xd4\xed\x8a\x9c\xba\xfd\xea\xe6\xd9\x15\xed\xc8\xb3\xd5\xcb\xcd\xa6\xa1m\xfb\xed}G\xdb\x8f\xf5\x07\xbeV&[\x01\x04\x85\\\xe2R\x0b\x00<\xeem\"T\x07\xbf\xd6\x10o\xe1\xe3\xd0\x1c\xd7BZ\x7f\xcd\x8d\\.E\xb5\xe6\xd9\xb7X\xe3\x9f\xb4\x9bk\xf8r\xf5\x9b\xdf\x86\xbb\x03\x85~\xacy\x95fw\xc7\xd5}g\x1bFcpW\xb0\x8b\x9c\xf5\x1a\xed\"\xfet\xaa\x1e\xfa\x96\xb4\xf4\xe5\x9a/\xa2\xa9\x1d\x12\xec\x8a\xe3\xe9J\xa7\xf7&Xd\xec\xd1\xcbS\x13K\x83\x85\x13\x9e\xbd\x84O\xef\xbf\x7f\xda\xd0\xb6>5k\n\x159P\xb4\xc6\x90Wg;\xa8d\xd6\xb1\xdfyw;o2liS\x90\xb2\xf8\x0b\xdd\x98\x9c\x17\xbf`~]\x97pu\xe2I\xee\x04U\xb4\x82\x8f\xfb\xa2\x15u\x86\x03S\x8dl3g\x06\x87\xbce\xce\x94\xc4\x94\xfd\x83\xa7\x0f\x98\xcah\xc8\xba\xa3\x0d\x93A\xa1$L\xad\xd2\x1d?\xe7\x8b\xcd\xe0\xd3\xfb\xef\x1f\xb6p$\xdd\x9e\x8b6\x04\xf5\x9c\xb9\xf9\x05\xbe\x8f\x9c\x98\xe9\xf0\xe7\x13)yv*\xec\x15!\x96\xb7\xff\x11a[\x8f\xf9\xea\x8f\xecc\xdeK\xf5\x7f|\x8cu\xe5\xc2\xda}}*7L\x9f\xb1\xc6\x1ar\xd6\xa4B\xfb\x85\xaf\x17\xf3+\x8f\x98\x05v\xc6\xba\x87\x13u\x0fV\x0f\xd8\x92\xa8\xea\x0e\xc8zM\x8f\x1d\xdd<\x1e&\xbb,\x17\x15\x1cY\x87\x15kz\x06\x1d%\x87\x16N\xed\x89[H\xc7\x862m_\x94\xac.]\xcd\x1byUT\xa4\xb9\x07R\x96\xbc\xbdf\xb25i\xae\xdf\x9b\x9f\xa1wG\xba\xee\xa0\xe8\x98\x86>\xb5T\xa6\x15\x94L}\xbd\x85\x97\xd5}o\xb0\x9e\xf1u\xfb\xe9\xfd\xf7-\"V\x864&@\xb9pK\x96v\xbd\xa7\x07\n?\xee\xbb\xee\xf8\xe3\x19\xfe\x7f\xfb#g\xea\xabZ\xfc\xf5\x8c\xcf\x14\xb6y\xd4|\xe6\xf3\x962\xfb\xf6t\xb4\xba\x9b\xb5\xd0\xfa\x06mn\xb8\x89M:8\x90c\x8b\xc3\xcek\xda\xd5=\xd5\xc9\xad\x12a\x17\x93V\x98\x1f\xed\x0b\xab\xf7\x7f\x05\x17\xdb\xa1nl\xb8\x8eM}Sl\xe8\xa6\xaf>\xfb\x91\xb4\xed\xe9@7V\xca\xd7_\xc1\xcb\n~\xff\xf1\xe3;\xf8\xdd\xeb\x8frc\xff\xf4\xfe{\\2\xf7\x05-7@\xe0\x8f\xe6\xc4\xfbx\x7f\xa4\x7f\xfa\xe3\x9f\x0ca I\xe7J\x8e2*e\xde\x7f\xc7\xa6\xde\x9c\xd6\x14H\x05\xb4i\xea\xc6LW\xf8+xy<\x96\xc5\x9a\x8867\x94\xcd\x91\xfa\x16\xb7\xe45Y\xb3\xb5X\xd7\xd7\xa7c\xcf\xeb^\x11\xb6ac\xa5\xad\xaa|z\xff=\xff\xee\x9e\xdc\xf0\xa1>(\xb3q\x83\xd3\x91\xc8j\xb2\xff\xbe\xa9\x0bf\x16\x98I A|\x94/\xb0\x86n\xeb\x86\x9e\xc9\xd7\x984\xd2\x15WEYt\xf7PQ\xba\x91\x07\x05\xae\x00\x9a\x1b+\x01*\xd32\xfd\x99\x85-\x08\xb6\x02V\xf0\xe8SKe.?\xd6^\xee\x15C\x0e\xf8\xcc\x81Tdg\xb7\xcf<\x02\xad\x1e\x9bc\xfb\xa6\xee\xf8\xe9\xb3ha{\xaa\xd68WYM\xc5\x9a\x1e\x8e\xc1\x8a\xeb\x81\xab3k\xeema\xfb\x1b\xc8\xe9\x00\x0de\x1a\x95\"`\\t\xf2\x03\xdc\x9e\xe2\xe7\x92~\x86_\xd1]Qq\xab\x94\x1d\x85-\x05y\x7f\xa4+\x9ck\xe4X\xb4\xabu}\xb0\xf5\xcd\x07>\xd3[\x91\x1b\xb3\xdb\x93\xca\\\xaf\xf0H$\xefFw\x10\\\x1a\x8f\xe1\xc0\xcftW\xd6\x82\xe4\xd5\xe4\xde\xc1\x05\xb3L\x99\xa2G/\x1by\x9d)\xb4\xf4@\xaa\xaeXk\xfe\"|\xaeGn\x94qN4\xd6\x0e\xfa\x03[\x84W\x14\x08\xfbX\xb1Q\xb6Ak\xdf\x13[\x08\xb9\xaao\xa8\xac\xb83\xff\xae'o\xa1\xf6\xed\x1f_V\xf7?\xca\x0d\xb3eK\x964WE\xd7\xb0I\x1f\xa8\x83\xd4]<\xa5\xa6\"\x0e\xf3\x1e\xaa\xdd\xce4\x0cW\x80X\x87+\xdb\x00P\xbf#\xf7tm*\xbc\x93\x93\xaf,\xaex\xc5\x84\xdek\xa1=\x1d\xb9\x83`Ws\x9b\xfd\xe9\xa9b\xff\xc7v\x07\x1c\xb3\xd6\x9e\xe5\xe6fXo\xe1\xd4\xe1\xb2\x96K\xa7\xe5\xeeZC\xb6H\xee\xc2\xc6]M\xd0\n\xec\xef`a\xdf\xc1\x8eV%\xbe\xbe#lr\xc1\xb3\x17\xdc)\x8e\xaf\x14Q1\xd2w\\Q\xc1\xf9\xaf\x7fm)\xe9\xef\xea\x1a\xb6u\x0d\xdf\xc0j\xb52=Y\xd8\xe7Huo\xfeL\xaa\xfb\x15\xfb\xd0wM}x\xb4\xad\xeb\xc7\xe6\x03\xab\x95\xa9\x81\x8b-<b\xaf}\xe2\xd5\xfaX?\xfa\x07\xf6\xdec\x87\xa3\x8d\xfd\xee_]m}>\xd2\xd6\x7f#7dVc\xe1\x1b\xbe\xd73\x89\x13\xdbV\xb4\x8f\xbe\xab\xeb\xd5\xba$m\xebl\x1a~\x9a=\x8a5V\x1e7\xbf\xf2W\xe3\xdfO\x9f\xb2)\x12\xfa\xf6\x07r\xa0l\xeb|\x89\xb5\xd8\xd1N\x9c\xf2/\xaa\xb6#\xd5\x9a>z\x1c_)\xe7\xdbv\x1d\x1d\xe3\xf2\xd5\xc8\xb8\xbc\xbb\xef\xf6ue\x8d\x0c\xd6\xe2\xbb\xba~\xb4Z\xad\x1e\xdb\xf3\x0dG\xe5\x91\xe3/|&\xf2\x91\x8a\x19(\xf6\xc2\x05\xf6\xd0\xab\xd7\x1f\xce\xdf_\xbc\xfb\xf8\xf6\xfd\xe3\x17V\xaf\x0cs\xd5%\x1a\x85;Z\xff\x9b\x91\xd6\xff\xae6\x1b\xce[\xfe\xe2\x1b\xf8\x87\xe3\xd5\xea\xbb\xba\xfe\xcf\xd5je\x8e=\xab\xcc\x193l\xd8s\xa4\xba?^\xad\xde\xd0[g\xbd\x8a-\x7f\xee\xbf}\x03UQ\xba\xbc\xd8\xecN\xb1\xa6\x9a\xeb\x19\xa3\x92\xd6+\xe2\xbbX\xbf\xd5\xa7\xea@\x9avO\xca\x8f5.\xa19\x95R~a\xc7\x0f\xde\x97R\x1bJ3\x14\xae\xee\x07CA\xeaj\xf4\xd7\xbc\x97 \x1e\xdb\x82Ua\x0f\x1d\x86\xc0SvrZ\xf1?0\xd3\xe8\xa1\x80[{\xdb\xa2'\xabqLUq\xbd\x82\xae\xca{i\xf9[\x07\xb1\xde\xe8\x02\xb2\xed\x04\x04\xce\xcf~\x0f\x9f>T\x85\x89c\x87\xfc,\x9e3\xa8\x98[\x0f\xb6u\xbd\xba\"\x0d\xaf\xf0\xdd\xd3\xfb\xd5_\x1e`[\xd1\x926\x8f\x03\xfcs\x0f\xd8S\xfaf\xf1o\x1f\xde\xbe\xf9\xc2\xec]\xf6\xe3p\xb6D\x0b\x85G\x14\x88\xed\x1am\xefSK%\x88\xb1;\x95\xa4Q\xa5\xd8/\xb3\x077t\xd8j\xcf\x06\x0fO\xb1\"\xce\xc4\xee\xad\x9dH\x95m\x90\x07Q\xc1\x8f\xff\x935\xedG\xe1\x1c\xd0\x1b\x0ejG\xad\xe4\x02|a\x99\x91d}\xcd\xd6\xdep\xc8\xd8\x16%55\x99\\\xa1\xefh\xd3\xd6\x95c\x8a\x8a\xb3\xfe\xb6h\xda\xee\x92\xf7\xac\xd3\xefS<\xc6\x86V>\xf5<\xa85Y\xb1\xbf\xf6\x80\xb7\xf8\xc1\x0bx\xe0\x9a\xabzSVX\xe7\x07g\xb6\x14^\xdb7\xe4\xc0$\xfd\x0bV\xed_\x1d\x8f\xb1\xda\x1aO\x85\xaa|\xb1\x15\xe6\xaf>\x968\x16E\x0b\xb7\xb4,\x9f\\W\xf5m\xc5W\xcd\x1e]\xd5OmW\x1f\xc4\xdc\x1bd\xe9\x93\xe6\xcc\x08\x0b\xc0\x994\xb8_\x8b\x0f\xb2 R\xed\x80\xe0\xf4P\xc5\xfd\xc8\xa7\xa9\x9c)\xfb\xba\xdc\x08\xcf\x95\xe1\xeb\x1c\xb7\x103\x0c\x04j &\x98*\x89\x8b\xeeg\x15<b\xebP6\xd4:\xb0J\xa4\xe4O\x7f\xfc\xd3ck\x02\xce\x1f]]\xb8k\x80ys\x99\xa0g\xab\xe7\xcf\x9e\xb7\x0f\xaca\xc3\xff'\x08\x04ZL\xa8\xf3D\xe1\xa4\x1c\xedh\x94\xd8w\xdd\xe7\x00\x05\x9eTr\xa7\xb3#\xb7\xac,Z\xb9p\xd1)'\x85\xb2\xe4\xc3\xd5\x87M\x08a\"\xd4\xf2\x8b\xbe\x0eLP\xb1\xee%i\xe7\xd3\x157\xf3\xc4\x84P\xbf%\xa1-z\xd7\x0d\xb7=\xa8\xe1\x17\x9d\xc4kU\x05\xa5\x1d}9\xc2\x057\xb4\xed\x8aj\xf7\xd8\x87\xe5\x7fK\xd7\xfb\xaf\x9e\xbfk\xe8\xb6\xb8\x9b\x0cZ_\xf1\x97/\x8f\xfc\xedX\x08\xbf\xe7\xa4\\\x9f\xf6\xe3\xd2\xea\xd3\xd0\x1c\xd7\xe6\xd5\xf4\x93\x00\xe9w\xa4!\xd2\xb9 \xa2\x9d\x07rwy\xa0\x87\xfa\xb2\x07Lc!zm\xdevw\x97m\xb1\xbb,\x8bC\x11\x1b\xefk\xbf\xff\x17z\xb9\xae\xdb\xee\xf2H\x1bN\x16\xcc\x11\xc4jqC\x9bb{\x8f\xb2\xe8\xe6\xf9\xd7_?\xfb\xe7\x14\xa2Z\xba>>\xff\xfa\xb7\xd7\xcf\xa6\x0b\xd3f \x8e\x90\xe6\xf1wd?Q\xd6\xf9\x92\x01\x066\xa8p\xa87\xa7\x92\xfa&8\xa7\x87\xc5\xea\xee\xb9\x8d\x8bW\x93\xe7\xbaT[\xe3\xbc\x84\xd6\x8e\x87\xeey\xb9z\xfe\x10?\xecr~\xf4\xd7\xd6\xbb<\xc4\xeb\xf6\x9b\xcaR\x89\xe8\xa0\x8bj[O\xee\x99\xa2\xda\xd6Cwh\xadg\x7f\x92u\x96\xea\x8d\xff\xd6_\xe2\xd1o\xafh>+\xaaxe\xf4p\x14\xabc\x8d\x0e\xf8\xb1*\x8b=\x02\xdf\xb7 \x10\xe7\xe9c\x92 \x04\x92\xc1(\x1e\x06iY%\x082K\x90\x94]\x82\x94\x0c\x13\x84X&X\xc64AB\xb6 F\x19'\x98\xcb:\xc1\x12\xe6\xc9\xd5c\xf7G>_<\xec\x13,a\xa0\x1c\xb2p\xa9{X(X\xc8D9\xc4\x9d\x8e@\xac\xe3g\xff\xad\xa4\x8c\x14,g\xa5 =3\x05\xcb\xd8)X\xc6P\xb9\x97\xa8\xb3\x92\xc9x+H\xce]AJ\xfe\n\xa28,H\xc9cA\x80\xcb\x82\x85|\x96k\x8d;\x18.\x88e\xb9`1\xd3\xe5\x10hs_0\x9f\xff\x027\x07\x06c[| \x1bA\xcc\xfe?\x93\x13s\xa9=\xc9\x92\xe1\x88hO\x84\xeb\xb1\x8c\x1f3\x84\x89\x0b\xe8,\x8e\x0c\xd2\xf0d\x90\x9a+\x03\x07_\x06\xcb93CZg1h\xb0\x90E\x831r \xfcl\x1a\xc40j\xe0\x86\xc9'1k~\x19\x16&\xb9\x88e\x83 \x9d1\xc6\xb6\xc1h\xbbGY7\x98\xc6\xbc\x81\x8b\x12 0p\x90\x84\x85\x83EL\x1c\x84\xc6p&#\x07c\xac\x1c\x04\x999\x18a\xe7 4\xb0\xb1,\x1dD0u`\xb3u\xb0\x8c\xb1\x838\xd6\x0e&1w\x10\xc3\xde\x81\xb7\xd3\x9cS\xd6\xf7\xec\x18\x9b\x07\x8b\x19=\x08U\xd4\xf85)\xbb\x07\x0b\x19>C\x94\xcd\xf7Aj\xce\x0f\x12\xf3~\x10\xe0\xfe\xc0\xc5\xffA2\x0e\x10R\xf2\x80\x90\x9c\x0b\x84h>\x10b8A\x88\xe7\x05!\x92\x1b\x04\xd7\xfa\x00'\x8b\x04\x13\x98\xa40O\x08\xf1\\!\xc4\xf1\x85\xe0jFJ\xde\x10\x96r\x87\x86,\x8bI\x84\xa4l\"$e\x14a\xf1|\x18e\x16!\x82]\x04c\xd3\xf1\xb1\x8c\x10\xe3\xbbh\x058\xba\xf3\xdfM\x91\xe3\xa6\xc0|\xd8\xbb\xc4\xcc1\xb6My@G\xfe\xc3\xe4\xd7?F\x00\xfe\x93\xc1~\xa2\x86q8\xdfq\xbf\x07^\xa0\xdc\xdb\x8b9\xe4\"\x87\\\xcc\x07\xbe\x11\xb0\xb3\xfa(\x87\\L\x01\xb8\x17\x82\xdb\x89\x81\xed\x05\xa0\xf6\x02@\xdb\x89\xae&\x83\xae\xd3\xc2\xd6\xc9 \xebq\xb8:\x19T\x9dC.r\xc8\xc5\x04H9\x87\\8\x00\xe3%`qL\x14B\x0e\xb9PJ\x0e\xb9\x90%\x87\\\xf4e\x01\x80\x1b\x01\xde\xc6\x03\xb7\xa3\xa0m\x0e\xb9X\x02\xc8\xe6\x90\x8b\x1cr\x91C.\xd2A\xa7\x8b`\xd3\x1cr\x11\x15r\xe1\xb6\xc4](`0\xdd\x96\x0eF\xc2\xfbw\xe7B\x92t\xc4\x1fG\x1bg\xa4\xc5\x11/\x9axcT\xaa\xc0\xe8\xbbZ:\x8f\x07\xaf\xf7\xc45v\xb4J\nO\x86=w\xd3A\x94 A\xca\xa0\xcf\xee\x02\xa02\x1dT9\x06V\xce\x84+S\x03\x96\x01\xc825h\xe9\x85-\x17\x03\x97\x96<\x9f\x7fnZ\xf0r1|\x99\x1c\xc0\\\x04a\xa6\x071\x13\xc2\x98\xa9\x81\xcc\x84Pf\x0c\x98\x99\x10\xce\x0c\xf9\xdd.\x814-an\x9f[\x87E\xe1\xd2R\xcb`NK\x9c\xcb\xdbv&\xf0\xe9\xf1\xb4\x0dl\xc5\x01/\xdb\xb1]z&\x04j+.\xaf\x7fm\xa8\x06\x89\x81P\x17\x14\x9a\x04\x0cM\x0c\x87\xba|j\x17B\xa2\x9a\xac\xce\xe1O\xbb\x04 \x1du\x1f\xf5z\xd2\x8e\xc2\xa4n\xb7\xb4x\xa8\xd4\xfd\xfe_\xddm\x9f\x05\x98\xc66~\x0c4\x0d\xb7t\x148\x9d\x04\x9d\xba\xdc\x0f\xfd\xfe\xb2\xcb\x01\xd4%\x10\xaaw\xb4f\xc2\xa8\xa3^\xb2!\x1f\xd9\xb0\x87\xac\xa7\xf3b\x01\xd5qH\xd5\xe1\x19\xbb\x00V\x8d\x02V\xa7@\xab\x11\xe0\xaa\xc7\xcd\xd4\xf1Y\xe7sc \xebR\x98\xd5[=\xed\xb7\xa4`kr\xb851\xe0\x9a\x16r\x0d\xf9\xba:<]\xd3\x00\xaf \xa1\xd7\xd4\xe0k,\xfc\x1a\x01\xc0FC\xb0q \xac\xd3\xb3\xd5\xf5\xd5X\xb0n\xcc\xab5\x12\x8c\x8d\x82c\xad\xca\xa7\x84d\x93\x83\xb2)a\xd9\x94\xc0\xec\xb2\xf1\x1e\x05g\xc7\xe1Yuc\x10\x89 $\xde\xc9\x0f\xf7|H\xef\n\x9e\xc0\xa5\xff\x8bx\xc3uy\xaev\xd6P\xae\xd0\xd5\x93h\xf4?\x0b\xc5'\xc1\xdeacp\xa2\xa7\xf9\x86]Q\xf2\x0d\xbb\x8e\x1bv\xc79\x86\x88\xd4\xf3\x16\xc9\xd0:X\x06YO\xa7\xcb\xf3W!\x12\xe2\x07\x9e'F\x88\xfe\xf6\x9e\xa9\xd8\xb9|Dv\x7f\x9e\xc8-$c\x16\xb2\xfb\xf3\x026!\xbb?Oc\x10\x16\xf2\x07\x89\xd9\x83\x05\xdcAj\xe6 \x19o\x90\x965H\xc6\x19\x8c3\x06\xc9\xf8\x82\xec\xfe\x9c\xdd\x9f\x97\xa0\xfe\xd9\xfdy\x19\xba\x1f\xe3\x11\x9c\xdd\x9f\x95\x92\xdd\x9fe\xc9\xee\xcf}Y\x80\xd3G\xa0\xf4\xf1\x18\xfd(B\x9f\xdd\x9f\x13\xe3\xf1I\xd1\xf8\x94X|v\x7f\x86h\xfc}\x14}\x8f\xc4\xdec\x90\xf7\xec\xfe<\xc8J\x8c\xb4\xa7\xc3\xd9\xd3\xa1\xec\xf3Gw\x14a\x1f\xc3\xd7G\xdd\x9f\x03\x88`\x10\xa5Te<u\x08Qn\x1c\x0e\xbaEk\xaff\xe7\xe89\xe0ev\x8eVJ* s\x0c\xca\x9c f\xa6\x863\xb3s\xf4|hs1\xb8\x99\x1c\xde\\\x04p\xa6\x878\x13\x82\x9c\xa9a\xce\x84@g\x0c\xd4\x99\x10\xec\xcc\xce\xd1\xa2\xcc\x84E\xb3s\xf4\\\x984;Gc\xe9\xb2s\xb4\xb3\xed\xb3\xe0\xd4\xd8\xc6\x8fA\xaa\xd99:;G\x8f\x01\xae\xd99:;G\x8f\x82\xb1\x89\xe1\xd8\xb4\x80lv\x8e\x06\xa3\xc4\x81\xb3\x11\xf0l4@\x1b\x07\xd1f\xe7\xe8\xec\x1c\xbdh\xbcG\xa1\xdbq\xf0v*|\x1b\xe7_\xaa\xbe\xae#\xb7\xad\x06\xda\xca\xee\x98t\xab$\x97\x8a\x17\x17N\xc6r\x8f\xca\x8d\x94V\xb3\x8f\xc1\xcb\x10\x85F\x1b\xaeA\xc4\xe2\x84y\xdd o\xf0~K\x88\xf1\xbd\xb1|\x97\xddw].\x90\xe5\xbf\xf7r\x9e\xd0\xd1;0\xd3\x88u\xdc\x879U\xb06\x15\x1cs,\xc6\xa1Z\\\xa7\xe9\xe5%\xfe\xd2O\xe2\xdf5D\xfa7GL[\xf6n\xdd\x14\x7f1\"\x11&\xcc\xbd.{E/\xa7\x14\xb2W\xf4\x02\x1a!{EO\xa3\x0e\x16\x12\x07\x89i\x83\x05\xa4Aj\xca \x19a\x90\x96.HF\x16\x8cS\x05\xc9\x88\x82\xec\x15\x9d\xbd\xa2\x97\xc0\xfd\xd9+z\x19\xac\x1f\xe3(\x9c\xbd\xa2\x95\x92\xbd\xa2e\xc9^\xd1}Y\x00\xd0G\xc0\xf3\xf1\xe0\xfc(4\x9f\xbd\xa2\x13\x03\xf1Ia\xf8\x94 |\xf6\x8a\x86h\xe0}\x14v\x8f\x04\xddc \xf7\xec\x15=\xc8J\x0c\xb1\xa7\x03\xd8\xd3\xc1\xeb\xf3Gw\x14Z\x1f\x03\xd6\xa5\x96\xa6w\xc7\xa2q\xe2v\xc6iB\x9e$6\xa4\xa3O\xba\xe20X\xb1\xae\xf4\x14\xec\x01\xb8\xddS\xd4Y\xbb\x86T\"\xa3\x06\xff\x1e\xe5\xa3/\x07\xef\xd8\x9c*\xbaYq<\xe1T\x96l\xa4\xa9i's j\xf7mj\xdaV\x0f;<e\x13\xfc\xde\xd0\x16x\x84\x87\xb4u]m\x04\x96\xc1\x06\xf7G\x0d\xa8\xd4\x06\xf5@\xee\x81\x1c\x8f%?\x93\x17\x15?\xf6\x90\x8e\x0e\xd5\xc7\xed\xd4\x9d\xa1\x84\xa3\xa5\xb0+nh\x0bG\xda\x1c\x8a\xb6\xe5\xdf\xecj\xa0wt}\xea\xcf^\x1c\xb3\xc7\xfdIl\x0e\xa8\xe5\x94\x9a\xb3\x96\x84a\xd9\x976\xda\x1a\x81\xd1\xf2F\xa8w :F\x19\x9f\xa1\xc1g2\xd6\x9b\xb1\xde\x8c\xf5f\xac7c\xbd\x19\xeb\xcdXo\xc6z3\xd6\x9b\xb1\xde\x8c\xf5\xf2\x92\xb1\xde\x8c\xf5f\xac7c\xbd\x19\xeb\xcdXo\xc6z3\xd6\xab\x95\xf9\xa3\xfbs\xc1zM\x9c\xd7\x06#\x81\xdeu\xb4\xda\xb0\x81\x96\x90o\xb7\x87\xab\xba\xdb\xe3\xb9a\xb3ih\xcbt\x87\xd0\n\x02o\x14\xf2\xd8,\x11(e\xbf\xa7^\xf0s\x1e?<\x15\x157\x87\xdb\xa2\xc5N\xe1\xcf\xf3t\xce\xf8o\x1ff\xca]_\x7f\x87_\xe2\xff7\xdd-\x9b\xd7\xea3'\xd8\xb0\xf0YU\x8a\xe3\xb4ga\xb5#\xcf{p[\xf5-\xab\xae\x10\xa8/x\x91\xdc\xe1o\x9ehd\x18=\x93bI\x88\xedb % \x81\xa48/\x96dh/\x96@\xc2\x10X\x86\xfcbI\x85\xffb\x19K\x1e\x02s\xb1`,\xb3\x11aw\xdf\xdd\x1f\xf9\x1c\xf2&\x12\x81%\xe8\xb0S\x1anN\xde\x84\"\xb0\x10)v\n<\x1d\xbd\x89E`&j\xec\x14\x14H8\x02\xcb\xf1d)$\x02Uv\xbe\x19\x8d4cY\x807cY\x80:\xfb\x16\xba\xa7\xaa\xc9\xf0h,iQi,\xc9\xb0i,\xe3\x085\x96d85\x16\x7f\x02\x13X\x88Y\xbbu\x853\x91 \xc4\xa2\xd9X\xe6b\xdaNa>\x9c\x1b\xcbL\xb4\x1b\x8b3\xb9 \x8c\x9b\x14\x81$'\x10iq\xcc\xc4\xc2\xdd\xca\xd4\x9b\xf0\x04\"j\xb3\x0c\x1d\xb7\xc4q\xb4\xdc\x99\xfc\x04\xd2 \xe5X\x96\xe1\xe5\x968n\xd18\x8d\x87\x85\xd8\xb9\xfd%GB\x14X\x88\xa8c\x19\xc9\x0d\x02\xa1\xe4(\x10\x83\xb1cqf-\x98\x84\xb7c\xf1\xc9q\x84\x82/B\xe0\xb1\xc4w\xce\x18\x1a\x8fe\xac\x17F\x91y,\x13\xf0y,\x8e4\x14\xc1\x84*\x90\x04\xb1\xc72\x1f\xb7\xc7\x12\x18\xd9\x99\x18>\x96\x91$+0\x92h\x05F\x93\xad@x\xc0c\x11~,c8?\x16+\xf9\n,\xc3\xfc\xb1D \xffX\xe2\xf1\x7f,\xa3,\x00\x16_'z\xa6\xb5\xff\xf91v\x00\xcb2\x8e\x00K\xa0\xca\xd6\xef\x8bX\x03K\x9a\x95\xbc\x05\x16r \xf6\x17\x1c ]`)\xc3`W\xd9L\xf2\x02\x89y\x07,\xfed/\xe0N\xf8\x02\xc9\x98\x08,\xc9\xf8\x08,iY ,q\xdc\x04\x96Q\x86\x02K$O\xa1=<\x92\x0c\x06\xdc\xab\x0b<IB`\x02\xc2=\x96\x18\x06\xe2Y\x0c\xf1\xf08\x97\x81\xc5\xd1\xa0\x94\xbc\x06\x96E\xec\x86%\xcd\x91<\x06\x92r\x1e\xcag\x920\x1fX\x96\xce\x91Q\x16D\x88\x1bM(\x03\xd6\xc6\xe6\xe2E\xb0\x04N\x9c~\x7fx\xdf\x85\x8d\x8b\xf9\x12M\x9a\xc0\xff\x9d\xac \x96i\xdc \x16\xedX\x8a\xb4\x07G\xe2\xa0,Z\x0ep\x8a\xdf\xf0\x8b\x1b9\x8bDe\xe4\x9e<\xe7ZRR\xa9\xbf\xca\xbc%\xf9Z\xd2|-\xe9\xe7\xbc\x96\xd4\xc9\x0b\xc6\xe7\x8e\xd2^\x8f\xc9\xab\xa3|\xb4\xc9dd\x19\x99\xc9H\xabt\x99\x8c\xccd\xa4\xf3\xe1LFf2\xd2.\x99\x8c\xccd$d2\xd2\x14\x94\xc9H\xab\xc4\xf3m\x99\x8ct=\x92\xc9\xc8LFf2\x12K&#e\xc9dd\x19\x99\xc9H\xdf\xc3\x99\x8c\xccdd&#??\x19y\x85\x0cZ_\x01\x94\x92\xc9\xc8LF\xfe\x92\xc8\xc8f\x19\x19\xd9\xcc!#\x7f\x9e,df 3K\x98Y\xc2\xcc\x12f\x960\xb3\x84\x99%\xcc,af \x1d%\xb3\x84\x99%\xd4Jf E\xc9,af 3K\x98YB\xc8,af 3K\x98YB\xb5,e\x802K\x98Y\xc2\xb19\xf2Kb !\xc0\xa1,\xbb\xce\xc7\x16\xa6\xc9\xb1\xbb~\xce\xd5>\xf6\xdc\xf2_\xf5\x83%\xf2\xc2\x1f,!\xd2-\xfa\xf2\x1f,]\xfc\x15@\x8eok\xad\n\xb3\xa1l\xf6K^\xf6\xea>\xb3\xa2\x99\x15U~\xff\xa5\xb1\xa2qt\xa8 B_\xea\x8b\xe4\xfd\xbbs!\xcf\xe2C\xafHu\xdd\xd3\xa1\xafhU\x1f\xde\xdeV2\xee\xd1\x9a\xc6\xf6\x14\x16N\x11&\x0dj\x0c\x92\xbe\x82\xf1\x95~Qu\x83o\x05\xee\xb2\xf5m\xc5V\xf5\x914]\xb1f\x06\"lX\xc5\xc4\xb2\x93\x93\xe4\x8a\x94\xec\x88l~9j\xd1qyQ\x93\x8b\x1c\xd8\x00G<\xea_\x7f\xe7u\xa1h\x10\xe8\xeakZ [Uk\x18\xdfCH%>\xa9\x9dY\xdf\xbc\xfd\xf8\xfa\x05\xb7\xb0\xf1\x8f\xc2\x8c-\xb8F\xba`[\x117 z\xdcV\xb3\"p\xcc\x15im\xb1\xabHwjh\x0b\x0d\xfd\xf3\xa9h\xf0T\xb5\xabw5\xdf\xb3W\xf6\x84\xec\x1b4L\x91\xbeIm\xd7\x9c\xd6L\xdc`\x1eq#\xa8\x02\xb2\xe6\xcbC\x19\xd5\xba\x11V\x8e4\x91\\\x83\xcc\xd5\xd15\xad\xb8.\xd1\x8cs)PN\x17\xdec\xf8\x9b>+\x86#\x83)Sv\xeb\x87\x82M\x1e\xb1\x0c\x9e\xb4\x9bk\xf8r\xf5\x9b\xdf\x86\x16\xc6\xa7\xaa\xe8\xa2\xd7\x851\xc3\xc6\xa7\x0c\x7fa\xe8Al\xaf0\xf2UB\x98m\xb3\x95x\xfaT\x15\x1d\xa7c\xe1D\xba\xfa\xf0X.\x0dzw\xac+\xaaN[\xfc~QutG\x9b\xfeW\xa97u\xb5\xe9G\xb9\xa5\\\xb5\x9a\xc7\xfa\x16\x15\xe7\xb3/\x87\xbf\xe3\x80W\x14iqEBC\nq\x06\xbe\"-\xbd\xc4fp\xf3\x03\xeaf\xc3\x8e\xbe5Pv0V\xda\xdaw\xfe\xc3\x16\xdb\xad\n|&\xba\xe2\x1bx\xf6\xe5\xff\xe9\xbf?\x08W\x9f\xe5\xc4\xb5\\y\xca\xf7\xeb-\xf6\xdf\xc0\xca\xae\x1b\xca,!2|\x9b=\xf4\x90=\xf4P\x11h2<\xfd\xf7\xbf\x81\xdf\xb2\x13\xc3\xa9}\x01\xcf\x80\xbd\x85\xf5\xfb\xad1N\xa4,HK\xe7\xf9\x90\x18sI\xecsB\xa2n\x16\x89Y$\xff&\xb7\ne&\x8d-x\xde\x03\xca\xa0\x13\xb1\xe8M\x02\x82\xa0Pu\x0dH\xe5v\x12\x9d(\xc6\xbeX\xcb\xf5\xe8^q?\xd0\x8elHG&,\xb8\xa1\xf6\xa1e\xc7+u\xc9j3\xaf\xdf\xa3}w\x1c{L\xf0l2F.-R\x10\x964}\"b\xb1\xd5\x06\x16\xb7\xf2\xc0\xe2V!X\xc6Z\xb4\\\x9d`Y\xa8T\xdc=m\x7ff\x8a\xaa\xc1\xb2P\xe1X\xf2P\x01y\x88\xe5\xa9\xca\x07\x8b\xa5\x82\xb0\xb8\x16\x04\x16kY\xa8/8'v\x02\xd5\x84%t\xc4Y\xa0\xa6\xa4\xf08e\xa5\xb5IQ&\xe6\xca\x94-Tw/\xd6<\xf1mX\xd7\xfd\x99\x9d\xcd\x8c)\xa6\x82\xb6\x94\xd8\xcb\xe6\xb7\xf9o8\xd5\x1e\x0dN_\xec/C7\xc9#7\x9f3\x8a\xbco\xe0\xcb~\x8al\x8a\xf6X\x92\xfb)u\xd3\x86E\xbc\x0fE\xb5)\xd6\xa4\x13\xb6~{\xda\xedh\xcb,2\xb1R\xd9\xe0\xf4\xd5\xb4_G\x87\xe9u\xc9\x0e\x98\xfd\x11\x91i\xbc)\xf5z\xe8\xb4\xf7\xbezh\x8e\xe8C\xaeJ\xd5\xa3\x89\xe6\x8d\xc7m\xf7Gt\xf7\x02\xce\xb9 x\xc9\x96\x94\x94\xd2\xde\x1f\xae\xearJ\xb5\xb4\xa1\xc4\xd7\xe5\xf9\x0e\xbf%~\x93^r\xed\xbe\xbe\xad\x80\xbb\xaaK\x87\x1c^\x9b\x97\x1f\xdf\xfe\xf0\x18]\x1e\x15\x81k\x1d\x0c\x17s\xa0\xe5D\x03~Dt\xb1\x0e\xf3\xbb\xbbJ<pj\x8a\xd9\x0d\xfc\xf4\xfe\x82{0\xc1\xa6^\x9f\xb8#\xe5\xa3\x9a\xe9h\xa8\xb7\xdb'\xeb=)\xaa\xc78\x1b\x06\x17\x8a\x1e\xb9W\xc4\x14\x15\xee:\xec0\x08o\x85\x03]D\x13~;4\xe1rO\xda\xfd\x92v\xfc\x9e\xb4{Te\xed\x9e<\xff\xfa\xb7\xc0\x04r\xaech\xdc\xb1.\xa4W\xfe\xa7\xf7\x17\xec4\xf3P\x04\x00h\xd0\xca\x0dm\x8a\xed=o\xb8\xda\x04><R\xd4\xa6\xd8T\x0f;\xe1/5\xa3\xd1\xee5*\x8d\xac\x08\x9d)\xde 1\xb6\xdb;\xd2\x10\xb9GDXn-\xad6\x97\xb4\"W%\xdd\xfc\x9cL2\xabJ\xea\xf3Wu]R\xa2n!!k\xe7\x03\xad6\xafQ\x1c\xfah\xae\x11\x13\x10\x86\n\xd1\xfa\x00\xda\x8et\xa7\x16\x1e\xdd\xee)\x07z\x89\xdd\x08(Z\xdd\x02`\x02\xd8\xdb\x8f=\xb0\xa9V\xa1Wl\xb8\x99B\xde\xbc\x80O-\xd7nj\x0d\x8b\x8a\x1d\xcb\xc9\x81\xef\xd5\x9b\xfeY\x0d\x91\xf8\xaend\x0c\xcbY\xcfkV\xf4\xb6\xbcgk\x965Bm\x91\x80+\x04\xe8\x8d\xaf)\xc2p\x005\xf9\x1f\xba\xba\xe1\xa4\x1e\xba3\xa23\xde\x81T\xc5\xf1T*\xa4`\xd1\xaa\xda\x00]\xf5nm\x1f\xc0kJ\x8f< G\xf9\xed%\xf7-\xd2\x17\xcb?\x9e\xa1L\xce\xd6\xd2\xbb\xa2\xedp\xd3\xbe\"\xeb\xeb[\xd2lZ\xc3\x87R\xb3\xd1D\xbb`[\x94\xb4\xdf\xa7\x04#}\x19\x9a\xe4\xea\\\xd2\x06\x0d\x17\x92\xb6\x1b\xf1\x81\xa1\x1dm\x06c\x89\xad=8\xd4\x9bSI}+\x92\xa3\x82/\xcb\xf2[DG\xa6\x07;\x08X\xe5gudrAs\xde\xc7C\xb6c\x02\x80.5D\x17\x0b\xd2YM\x93\x03%\xad\x88\xfe\xdflk*\xf1\x04\xc4\x94O\xbb\x84\x06\xc1\x89\xd8\xff,\xd6u\xa6A2\x0d\xf29i\x10\x87\xfe\x8a\xe2B\x86\xd7\x84\xb4\xf7\xef\xcee%\xc3|\x08\x17 ^\x9e\xab2M\x8d\x19\xb5\x1a\x1c\x8a\xd03\xea\x99\x9fp\xcc\x14c\xc8bf\x89x%\x9a*\xe3o\xf1\xd3\xb44\xa2\xbf\xbd\xe7\xbf}\xe0\xdd>y\xb6\x1c4\xbc\xd3\xf9\x92\xfbE\xb3+\xc6g\x82\x07\x03\x05\xcf\xa6\x0e>\xd0\xc7\xb3\xb9\xc3H\xfc\xa1s\x93\x87\x90^\x93\xef\x85\xd1D\x80\xf9\x18\xa9S\x98\x83X\x19\x8a\x0f+\x85\xbe!n\xbc\x14F0S\x88li*\xec\x14\xe6\xe1\xa7N9A\xa2f(\xd3qTX\x88\xa5:\x05\xf6\x84N Pg\x1e\xa6\n~\\\x15\x02\x8b\x0c\x8b\x07_\x85\xf1\x05\x92\x0cg\x85Q;*\x01\xde\n0\x15s\x05H\x8c\xbb\x82\x85\xbdB\xa8\x97\xc3\xcbr \x0ek\x88Rf\xdd\x97\xda\xd4\xb2\xf0X\x88\xae\xaf5\x84\x0b\xb1YE\x84\x13\x9f\x05\x0b\xa3\x85\xe8\xba\x8eb\xb5\x00i\xf0Zp`\xb6\x10]Mk\n,\xc6o\x0dy<\x80}m;4\xc7\xe2\xb80\x86\xe5\x82\x89\xe7\xc2\xfc\xc6'\xc2v!\x0e\xdf\x851\x8c\x17\x9c8/,j\xdf\"\xcc\xd7\x10\xd7\xd5>\xdc\x17`\x0e\xf6\x0b\xe3\x1d\xe2\xd7\x07\xd3q`pa\xc1A\x9b|\xdcV\x8e\xcf\xf3\xa1\xc9r\x1c\xe7\xe0\x82\xa7\x98X\x93\x12\x0d\x06\xbb\x02\xfd7\xafNl\x07[S\xee\xbc\x8a:\xaf\x0f\x8f\xc7\x83\xbe\xd8:\x8b\x8a\x1fF\xd8a7\xfaH\x90O\x01\xf9\x14\x90O\x01\xf9\x14\x90O\x01\xf9\x14\x90O\x01}\x89\xabk>\x05`\xc9\xa7\x80|\n\xf8\xfb<\x05\xa47\xfcG-s\x1e\xb9\xd0\x8a\xe3\xc7d\xf3\x1c7\x9c\x9a\xcb0M\xf4\xb4L\xb8\x15V\xa3Jq\xee\xfdZ\xa7'\n\xb1\xc1b\x11Yj]\xfeF\x86\xbf\x9b\xeb\x1fym\xcc\x82\x9eM|Y\x92\x96\xf0_\x960\xc1\x87Y\xbf\xc7\xd1bXBM_\x1c\xc2\xa3I\x93\xe1<\xda\x8f\x8b\xa3z\xf4\xc5 \"|\\\xb3\x12\x02\x81>\xda\xf3A\xb5\x98\x9d \xb2\x13\xc4/\xc3 \xc2\xbf\x8bi\x13\xf3\xfd\xbb\xf3a;e\xb6\x89\x90a\xbf\xce\x1f\xc5\xdc\xd3\xfd\x8aq\xad\x95\xaf\xbf\\}\x15\xb9\xbd\xe6}5\xef\xaby_\xcd\xfbj\xdeW\xf3\xbe\xfa\x0b\xdcW\xe36Tu+U\xbc\xc6\"vRo\x94\xf9P\x91v1\x83\xf4\x99\xf7Q/\xd7\x14DV<|S\x08\x0c\x0f\x86\x1b:7\xc9\xf06\x19\xd8(G\xb6J\x88\xd8\xf9\xe4S \xf9\xa7\x11\x06*\xccA\xc9&\xf9Y\xa8q\x1e*\xb6\xd5)\xb9\xa8tlT4\x1f5\x97\x91\x9a\xc3I\x8d\xd54\x8a\x95Z\xc2K\x05\x99\xa9\xd0r\xc4\x12`\xa7\"\x16QR\x86jlS\x86T,\xd5\x1c\x9e\xea30U.\xaej\x91\xb1\x9e\x90\xb1\npV\x1e\xd6*\xbe\xe6\x8e\x81M\xc0]\x8d\xb3W.\xfe*\xbe\xd6Q\x1cV:\x16\xcb\xcdc\xc5W\xd71=\xe6\xb3Y\x96(%F\xd9\xc5gMc\xb4\"8-\x07\xab\xb5\xa8+\x12r[\xd1\xec\xd6(\x9d\x03^\x86ki[S\xf2\\cL\xd7\\\xae+\xa2{BZd\x1e\xe3\xe5\xe4\xbc\xacOi\x9d*\xadr\xe8S\xebs\x9c\x82\xab\x1b-\x80\x95k~\x11\xa6\xd7\xd0]\xd1v\xb4\xd1z\x93\x7f2\x07\xef\xe5\xf3\xf5/\xf1|m\x1dk'2\xbf\xedL\xea\x17\xe3\xa8'\x9f\xa5\x8fJ\x1e\x03\xaby\"B^[\xd0Jpvo\x1aj\xb1\xd9X&\xac,w\xd88\x04l\xf4\x9f\xdeI\xd3\x937ax\xcf\xce\x9d\x00\x11[R\xca\x1c\n\xd0\x9f\xd2\xcd<\n\xe0\xce\xa5\x00\xa3\x15L\x90S\x01R\xe7U\x00wn\x05X\x9e_\xc1\x9c_\\\x1d\xdb9\x16`n\x9e\x05C\x86\x99u\xc1\x9dk\x01\xf8 \x85\xf2-\x80s\x0e\x06\xd4\x96\xae9\xb4=\xd4\xd6Y|oa\xc7\xd7\xbb\xa7l\xdd\xabZ\x84+\x85\xa0\x8eR&\xcbdE\x953\xa8LZ\xfd\xee\x95o\xad\xfaQ\xe3J\xb3P\xa6[Zx\x12\xea\x19-\xb6\x16Ty5_\x89Lu(LL\xab/y\x11\x91\xc0^\xe7v\xca\xac=&[o\xd9z\x03\xef\xf8\xf9\x94\xd3\x08;2\xbc\xd1S\"(\xcfy`\xfb\xc7\xa0f<\x8a\x95)b\xf4\xbfEcr\xb2\x96\xcc \x19\xe2\x88\xf3\xcf\x90\x90ad\x08\xb5\xb9\xb4\xd3&S\xcf\xa0\x0bq\xdb\xba\xbf.\xa6\xdfn\x07:\xfda\x0b\xad\xfcT\xcfd#\x9a\xda_b\xc8{p\x84\xa1\x9b4\x1f\xa7\x1f,r6\xa5_h6%kr\xe5\xbcJ\xbc\xe4\xcd\xdd\xac\xc3\xcfzs\x0f+g\xf7q\xc7\xa3\x96\xb9BFaR\x1f\xcb\x8a\x86\xd5r\xbb\xc4I\xe2\xc3\xe9x,\xef\xdfn'k^S\xcbMXI\xd9\x04\x18W\xa0\xa1Yf\x0cY\x10\xfa\x13\xa0\x9f|gZV\xa6\x8fl\xb5\xe0\xab\x93\xe7G\xcb_\xcb\xfb\xf2\xcfo_\x16\x9a\x16\x07\xa8\xdf\x8f\xf1_\x02l\xe5\xfb\xafxat\xfb]xxW\xbbe\x84\x89\x9c\xa0c\xf2n\x9dwkpT\xd4\xa7\xd7b\x94\xa8\xf2\x9a\x90f\x91'\x1em\xaa\x9c\xfa\xa3\x15\xa8\xa1\xdc\x1c\xa345 n?}\x17B\x80\x03\xec\x87\xe24\xbcO4\x7fS\xb0\xaa^\x9d\xd8\x97\x95\xcb\x7fJ\xba\xe3Z@\xfcW\xdd\xbc\xa7\xb7\xa4\x89\xef\x14q\xb5^\xdd\\\xc6\\\x97\xd5(\xc2\xe1\xefk\x0fzE\xd7\xd3\xb6!\xd8\xd0uq \xe5\x8c\xdd\xe8\x15]\x7f\x9e\xdd\xc8\xdd@\xef,1\x9d\xab\x86!\x11o\xa2K\x85|\x89{)JQb.\x8c\xcd\xd0\x89 \xd7\xd7\xf5\xe1p\xaa\x8a\xee\xfe\xb2#w\xc1\xa9\xc8\xbd\x19\x99\x80\xba\xa5\xcd\xa5{b\x86lZM\xd3\xaa\x0c\xd9G\xe9\xd8i\x08\x1fFp\xe0\xc8\xf8L\xe0\xcc\x93\"\xac\xac\xab\x1dm\xd0\xd7D\xf9Yl\xd3wO\xd5~\x12\x04\xec\xc3Vt'\x1c\xe8zO\xaa\xa2=\xc8=\xe6\xaa\xaeN\xed\xe7k\xa8K\xfaO\xd4R\xb6\xd26\x0d\xb9\xe5\x9a(EB\xf2\x96r\xf7EAn\xca\xad\xc7Q\xa9\xb1I\xccw\xabs95\xdf\xd5u9\xd9z?\xd6\xf6\xed\x1bYo\xfe\\\xf4\xa6\xd5H6\\}\x93z\xa5\xc4\x7f~\xd8\xaahZ\xe0X\xe9\x9c0\xf1n%\xda\xeb\xb2\x93\xde\xbf;\xb7\xcf\x99\xfe9;h~T\xf8\xd3\xf1`\\\xac\x7f\x9fp\xf0\xdf\xe7\xd4\x15#f8\x04\xe0od\xbdnN(\x86({y\xc8x\x08\xcf\xa3\xf8\xe9l\x89\x98?\x97\xf9\xb1\xe1g=\xa1\x03V\xb5*\xcf1\xb9\xcd\xfd]}\xfc\xe7\x1e\x84\xe4\x8f\xd8\x1dyu\xcc\xbfj\xc1R\xf5V\xd3\xe5\xb1\xbbl\x0d;\xc4\xf9\xe2z\xa7,\xee1\x1d6\xd7\xb6\xc7\x12g\xe1;\xeaa\xaa\x99\xc15\xd8\xafj\xea\xfe\x86s\x035\xf9\x1ck0o* 7\x15D\x9f4\xe3\xfatP F1\xec\x13v\x12\x97\x16\x9f\xb3\x9d\xa8rf\xee)u\xf3\x07\xa9\xb0\xa7o(\xbd\xae\x9f\xb7\xa7\x84\x8en\x83h\xad\xeb\x95\x9f\x95\xa5\x85\xe75\xec\x95j\xc7:-v0\\\xcd\x9f<\x12\xaa\x90\xd9\xc3\xf0\xef\xe2\x08\xf8\x12w\xcd\xc9c\xa1\x1d!\xc7\xc0,\xa3k\xccw\xb5.\x1fz\xb9\xcf\xa9Q\x0b\x9cyRG{\x1a8\xa3\xb7\x0dIS\xbb\xfc3\xfa\x9d\xeb4\x85\xe9v\xbe\xc0\xe3\xdc\x03\x0e\x81_Q\x87A\xa2\xc0\x8bc6IR\xc0\x08\xfcP\n\xcc\x87S`\x1c<\x82\x84\x1d0\x11H2\xc4U\xf5g\xea\x81\x11P \xfa\x1e\xf0\x02K.g\xeb\x08nC\xe0Q\x13\x97e\xafC\xd9\xe9\xbfh[~\\\x9a\xb8F\xd7\xfd\xab\x9eu:<\xa0\xadU\xe5gm\x97\x91I\xc87\xb3\x17\xadY\x1b\x08\x1ci~\xfa \x91\xcf\x92xh\xb6Y\xe8\xa9\xde\xe4\x94DS\x0f/\xcbR\x12 \x96P\xdf\x05\x03\x93;~\x03t\x08Q\x16\xd9\xa45\xf6Jy\xe4\xa2\xda\xd6\x93W\x1a\xfbw4wf\xcc\x11\xf3]\xb7\x85\xd7?&\xed\x0e\xb9\x06[Zn/\xaf\xeajs\xf97\x014\xf2a*\xe1a\xca\x1a;\x83\xb5(\xb7\xca)\xbc\xd5\x8fVn\x85\x9a\x87\xfcg>\xe4\xcb\xb6\xdc\x00\xc90\xaa\xccfhVS\xd4l#\xe6\xed\xa9k;Rm\xf8M*I\xe1\xda(\xd3\xc3z\x17\xb2\xdd\x11\xbd\x9c<\xd5\xfb\x99\xdb\x1d\x10\xec\x92\xc0\xc4T\xe1\xd2z\xf8+<:UO\xe4\x19\xa2zlO.\xb5\xa2\x18\xcd1,\xe2\xa2\xa2wGZ\xb5\xc5\x0d\x85\xae\x86\xae!\xeb\xeb3 eY\xdf\xb6\xd0\xf2\xee\x80\x96pbq\xbd\xa7\xeb\xebq\xf4,be\xcdX\xef\x8e\xde\x98\xbb\xe2?\x94\xa4\xdd\xcf\x08;i\xf1\xbd\xcf\xbb\xa3\x0d\xac\xcc\x916E\xedaY\x9c\xcb,\xe0\xb9\xb7m\xc8\xba\xb3\x8e7\xb3\xf6>\xbd\x1b_\xdf\x18)\xcb\xd4\xb9\xc5;\x0c({d\xa5\xc9\xf8=-v{\x1ev\xc9&X\xb1\x16\xf9\x90\xc4\x11\xba\xed\xea\x86{U\xea/\xf1p\xcf\xa2\x85\x8a\xd2\x0d:Y\xaeI\xb9\xe6A\x9e@\x8e\xac?\x9b\x82\xff7\xaeo\x9e\x0d\x8b\\\xb3\xf5\x81I?\xf4\x0e\xa9\x1b\xcd~\xc1\xd5O\x1a\xda\x1f\xc6+ \xdb\x8e;\xbea3\xf6\xa4\x85z\xbd>5\x0d\xf5\xd1\x0db\x82\xe8\x96\x92\xf8-|Z\x1du\xb7\x9d\xe1a+\xe5L\xd8\x8c\xb2\xffl\xf6\x9f\x85H\xednh\xd1\x19*]H\x98\xa0\xc7\xfbW_\xae\xd7\xa7\x03\xc6w\x9f\x1bG\x8d\x08E\x9eO'?\xff\xd3\x89\xbb\x81\xe1 \xa0\xedC\xc3\x03\xcax\x0b1\xa6\x11tM\x8f\x1d\x10\xd6S\xcd\xa9\xaa\xd8\x96\xc1\x97\x12m\xcex\xde\xc9+mW\xe8\x80T\xf7\xd0\x15\x87Q\x97\xbc\x80\xf1\x12=W3r\xf2\xcb\x9e\xa8s\xad\xf8\xdevGyI\xcc\xf6\xa8\xb9:\x98u\xd1s\xd4o\xb3:'\x85s\x87\xb4-T\xeb\xdd\x91\x9e\x9ee\x8fN\xb4D\x13\xd9\xa0\xcb\xadO1\x94[Jw\x0d\xa9\xba~\x18\x7f\xc7\xfe\x15=p\xfc]\xda\x8c\x8c\x97\xff\xac*\xde\x97{\xbfD\x89\x05\x8bzji\x83\x8f\xc8,\x03lz*\xd9\xf1\x0b5\xa3\xf2\xf6T\x0d\xf8!\n\xb6rML\xac\x18\x0dU\xec\x8a\xb2Z\xe1\x83\x9b\xff\xcb\xde\xbb7\xc9m\x1c\xf9\xa2\xff\xebS\xe4\xe1\xbda\x0e\xedas%\xdb\xe7\xc6\xe1\x1e9v\xc4\x8746EN\x90C\xf9l8\x1c\xcd\xea\xee\xea\x19,\xd1@\x0b@\xcf\xc3\xbb\xfe\xee7\xea\x05T\xa1\xb2^@\x0d-\x9f\xed\xfaG\xe24\x90\xf5@=2\xb3\xf2\xf7\xcbq\xeb4Q\xa4\xe2\xba\x11\x7f\xe9qk6\xb3\x7f\xc5\xa1\xb5\x0f\"\xe51\xc2N\x8ez+\xe8\x0fOA\xac\x16\xf6\x7f\xfcA\xba\x81-\xa5\xc3K\x93Tx\xf6\xe8\xf2\xd0\xc4j\xab~\xd7\xcc\x19||\xff\xe6YC\xdb\xfa\xd0\xac%\x9d*\xe7u<T\xc5\xcf\x07Z\xdeC\xc13\x05o\x0bi\x8fp\xa5O\x8c\xf2HTK\x9b\x82\x94\xc5\xdf\xec\x8bS\xbe\x97\xae\xeb\x12V\x87\xed\x966\xb0\xa3mK\xae\x14\xbf\x8fh3\xe7\xbaV\xc4\xa0\xec\x08.)\xb1\xc9\xaf\xeb\x8a\xc2\xa3g\x8f`}M\xd8nB\x9b\x05?\x0dJ\xd2v\xd0\xd2+\xce\x8d)\xa7\xc0\xc7\xf7o\x1e\xb7\xb0'\xdd\xb5\xa0\xd16\x05\xf5\xfb\xc7\xb8\x06\xf6\xea\xf6P\x96\xf7\xf0\xf3\x81\x94\xac\xdf\x1b\x93d\x96\xf5\xff\x84\xb4PX\xfc\xac\x9fXe\xcf\xae\xea\xfa\xaa\xa4\x0b\xde\xe7\xd5a\xbbxyh\xf8\x1e\xf0\xe9\x89h+\x176p\x06\xb3\xce\x8e\xe4\xacIUW<73\xdbG\xc7\xb5p2\xedS6<\xfcLy\xb4x$n\xf2;\xa6\x10\xd1}G7Ol\xef\xd8y\x05{\xbe\xfd\xae\xe9)t\x94\xec\xda\x9e\x9cv\xdf\xd0u\xbd\xdb\x17\xcc\xf4\xa8\xd8AsMaUT\xa4\xb9\x17QU\xf7{:\xbe&\xe7\x13\xa4\xbb\xa6\xf7\xe3j\xd8\x89\xb5\xee\xa0\xe8\xd8\xbeyh\xa92Y\xd9ge6\\\xbd\x85\xb3\xea~\x01?\xd4\xb7\xf4\x86\xe9^l\x9b\xfc\xf8\xfe\x8d\xdc\x1fG\xd2$\xb9\xdb\xb8\x92v}Mw\x14>]w\xdd\xfe\xd3\xa9\xf8o\xfb\xe9\x14\xea\x86\x19x\xe2\xd7\x81Q\xbc\xe63_\xd0\xf0\xd2\x0e\x0e{k\xb8Y\x0f\xad:hsC\x1b\xd1Q\x8e\xa4\xe3\x9f\x9d\xb7\xb4\xab\xd5\xfc\x15ZM!6x\xd2\xc2\xb6\xe6\x87\xf3sk\xf4\x7f\x0d\xe7\xdb\xa1m\xecsIR\xc4M\xdf|\xae\xc3\xb4\xeda\x870\xde\xfd\x1a\xce*\xf8\xe1\xf2\xf2\x02\xbe\x7fu \xd2I\xff\xf1\xfd\x1b\xb1d\xee\xb9\nD\xe0/\xe3\x89wy\xbf\xa7\x7f\xfd\xcb_G\xc2@\xd9\x86\x95\xfa\xca\xe2\xb0\xe6\xe3\xb7o\xea\xcda\xcd61\xa0M3\xc4Ij-\xd9\xb33T\x1ej\xec8S\xfb\x1a?(\xd7l-r\xba\xbc\xde\xb0]\x11f\xef\x8bF[M\xf9\xf8\xfe\x0d\xaf\xf7\x9a\xdc\xf0O\xbd\xd3f\xe3FLG\xa2\x9a\xc9\xfe\xff\xa6.\xd8Fns\xae\x8bJ\xf9\x02k\xe8\xb6n\xe8\xa9z\xcd$\xc6c\xa7z\xab\\\x11l\x03hn\x10*\xde\xba\x02\xc5\xd3\xcc\x16\x04[\x01\x0b8\xf9\xd8R\xb8\xa1\x0d32X\x7f\xd9\x84`kY\xcc\x08R\x91+\xbb\x7f\xab\x86\n\xdd@\x8a[<\x19\x7f\xdb\xb7uG\x9f\x0b\xaa\xbf\xed\xa1Z\x8b\xb9\xcaZ*\xd74\xd7\x07\xaa\xae\xbc\xd7=\x04\xd8`\xd6\xdc)b\xbb\x05\xd4t\x80\x86\xb2\x1d\x95\n\x1e\xc3\xa2S\x15\x1c\xd8\xe7\xe1F|?\xc3W\xf4\xaa\x106\x12\xc6\xad\xcf\x9e[\x88\xb9F\xf6E\xbbX\xeb\\A\xaa|\xe03\xbd\x15N\x07\xb6\x8c\xaa\xf1z\x85\x13\x19\xa7\"\xbc6bi<\x81\x1dW\xd6V\xd6\x82\xe4\xcd\xe4VC\xaf\xdc\x0b\xab\xa1g-j\xe9\x8e\xe9!k\xc3\xad\xc3\xe7z\xe4A\x19\xe7\xeb\xb2N\xd0\x1f\xd9\"d\x07\xbfPC\xb5c\xd0:\xf7\xe4\x11BV\xf5\x0dU\x0d\xb73\x9e\xb2\xf1\xe5\x7f\x93\xce$\xae\xf0\x01?(\xeb\x86\xf6\xccv\x7f\xfa\xe9\x03\xd7]\xbb\x1a\xd8\x9ai\xd8\x1e\xc0u\x1d1L\xec\x0cS\xfb\xaeG\x9b\xe4\x0e\x9b3\xa5\x8f$;\xcc\xe3\xd5#\xce\x93=\xfcSiel\xe6)U\x8eY^B\xdd\x9c\xa4\x17Y\xaa.LW\x8br\xaa\xbd0V}\x01S\x7fanc\xb3\xa8\xc2\x10P\x87\x01\xff\xe6\xf0Pj1\xb8=\x1d\xbe\xbbO\\E\x06\xdf\x10Cp\x98!\xaf\xba\x0c^\x95\x19\xb2\xaa\xcd\x90Su\x06\x9f\xfa\x0c\xf3Th\xc8\xa8FCP\x95\x86\xa9\xea4\xccQ\xa9\xb1\x11c*\x86[\xad\x869\xaa5\"K8#\x1c\xea5\xccT\xb1\x11qL\xe9F\xd5l\xc8\xaej\xc3|u\x1b\xf2\xab\xdc0O\xed\x86y\xaa7\xbeD\xd1FfS\xc8!\xbbR\x0e9\x15s\x88R\xce!\xa7\x82\x0e\x1e%\x1df*\xea\xd8\x1aw\xa4\xc5\x8aR\xdfa\xb6\n\x8f\x08\xb4\x95z\x98\xae\xd8\x03\xae\xdcC\xe8\x88w*\xf9\x10u\xfeOT\xf6\xb1mO\xa9\xff\x9a\xc2\x0f\x99\x95~o\xc8\x9e\xa5\xf4{\xefw\xe5\xcdn\xff\x92\x8fp.`d\xb4\xdf\xdd\x7f/\xd4\xeb\xe9\xe6\xc6\x03\xdf\x96\xa1\xa6\x84wf\x85\xa6\xce\x0c\x83\xc2\x9e\xe0\xcc\xc0\xb0\xf5r\x87Q\x91\xa1\xd9\xd9L\x8b\xb0q\xe14/\x1e\xd0\xc0\xf0\x98\x18\xfe\x00K\xb7\x99\x11\xd8\x85\xc2\x03\x0f\xf9\x8d\x8d\x90\xb9\x91\xdb\xe0\xc8lr\x04\x8c\x8e\xd9fG^\xc3#\xc6\xf4\x98a|\xe45?\xa2\x0c\x90\xbc&H\x84\x11\x92\xdd\x0c \x18\"\xd3L\x11T\x90\xd7<\xc9b\xa0D\x9a(\xe8\x9bIf\xcbl\xc3%\xb7\xe9\xe26^2\x9b/\x0fa\xc0d6ab\x8d\x98\xccf\x8c\xdf\x90\xc9n\xca\xb8\x8d\x99\x04sf\xbaA\x83\ns\xddS\x882\xc3\xa8q\x9a5A\x95\xc2k\xda\xc4i\x1c\xf9\xcc\x1b\xb7\x81\x93\xdb\xc4\x01\xa7j(\x0f4\xbe\x19\xac(\xad\xa0h[\xc9\x05\xc3*\x1a\xdd5L \xd0&\x95\xfeWe*\x1d\x03\xb4\x8f\x01\xday\x03\xb4\x1d\x96\xbbmI{mx]\xc63D\x88\x11\xa6\xadZ\x1fJ=\x102\xf6\x8f6\xfe\xd1\xc6?\xda\xf8G\x1b\xffh\xe3\x1fm|\xec\x91\xa3\x8d\x7f\xb4\xf1\x91r\xb4\xf1\x87r\xb4\xf1\x8f6\xbe,G\x1b\xdf\xb2\xf1\xfb\xad\x86\xfd\xf3q\x1b\x19Yx\xb4\xf6\x8f\xd6\xfe?\x9b\xb5\x1fe\xe4[\xe6\xbd\xef\xa6\x9e2\x85\x84\xd9Jc\xe3\xfd\x95\xfc!\xd9zW\x12\x1f\xd6vw\x19e3\xac\xe0\xac\x86\x98\xcf\x08\xcbi\x80e4\xbe<\x86\xd7,\xa3+\x9f\xc1\x152\xb6&\x1aZ\x93\x8d,\xa1\xd8!\xa3\xe54\xb0&\x1bW(<\xca \x90\x9agT\xc1ao\xc9s\x19TS\x8c)\x9f\xe14\xdbh\x8a2\x98R\x8c\xa3Y\x86\xd1\x0c\xa3\xc8\xa1\x95g4~r\x1b>\x19\x8d\x9e\x18\x83'\xa3\xb1\xe36t\xb2\x1a9\xb8\x81\x13i\xdcL5l\x1c\xd1\x98\x98Q3\xd9\xa0A\x8d\x19\xcfQ\xec1bB\xa7t.\xe3\xc5m\xb8\xf8Z\xf0\xe9\xac\xba\xff\xa4\x8een\x0f\x90fUt\x0d[4\x9e\x96\xa8}\x90\x94\xf5h,\x04\x0d\x86\xf9)\xd8n\xc57T\xd1\x92\x95\xadn\xe8u)\xeda4e.\xd4\xc4-\x8b\x15o\x9e\xdcG[\x9e\x10\xb6n\xf8 \xb4'\xeb\xcf\xcf\x0e\x15\xfb\x0f;w\xc4wl\xb1Ub\x1f\xb8\xf5\x16\x0e\x9d\xd8 \xd4\xf2kA\xf0\xc3\x16b-\xc2\x15\xadh\xc3\xd9Y\x84\xde\xd9_)\x9c\x8d\xf6#\xf1 L\xf9\xaf\xee\x08g\xb8\xf8\xfa9\\\xb0\xf6\xb1u'\x9bJ\xfa\x01-*x\xf1\x9b\xdf \xc7\xc0\xeb\xba\x86m]\xc3\xb7\xb0X,\xfe\xd5\xfa\x99u\x96T\xf7\xf6\x0f\xa4\xba_\xb0\xea^7\xf5\xeed[\xd7O\xecG\x16\x0b{\x9f/\xb6p\xc2^\xfd\xc8\x1bxY\x9f\xfc\x8a\xbd\xfb\x04\xfe\x13\xd9\xdb\xb0\xf7\xff\x8e\xf7\xfd\x9b@\xdf\xffHn\xc8\xe4\xce\xc3\xb7\\\xd7`R'\xf4\xb4hO^\xd7\xf5b]\x92\xb6utT4\x81=,\xda\xae\xbd`\xd7\xf5w\xeb/\xcf\x9e\xb1\xe9\xe4o\xc3\x07\xb2\xa3\xec\xe8>\x13\xad\xb9\xa2\xddK\xba%\x87\xb2;\xaf\xda\x8e\x19?'OR\x1a\x87\xbe\x8f\xb5\x15\xfdZ\xbf\x0d|\xad\x8b\xfb\xee\xba\xae\x90\xef%\xda\xf2\xba\xaeO\x16\x8b\x85\xed\x89\xea\xbf\xd5 \xfa\x1b\x9f\xaf\xfc\x0b\xc6~@\xf6\xd2\xb9\x18\xb1\x97\xaf>\xbcx\x7f~q\xf9\xee\xfd\x13\xcc\x195\xcci\xbc\x02Q\x05:\x1a\xbf\x0b\x8c\xc6\xf75\xe2Uc#\xf1\xfc[\xf8\xd5~\xb5x]\xd7\xff\xb9X,\xecy\xc1\x1au\xca\x14.\xf6$\xa9\xee\xf7\xab\xc5[z\xebh_\xb1\xe5O\xfe\x8fo\xa1*Jt\"\xa0\x83\x84LG\xfc\xb9Q\x83\x91\xd7d\x0bD[\x17\x1f\xab\x1di\xdakR^\xd6b\xd1Mm\x9e\xf1\xb7KN\x13\xb8\xfe\xdc\xef\xb3Ji\x86\xd5\xfd\xa0\xc2\xa8\x93@\xb8g\xee\x99V\xce\xa6:;\xf6Mq\x8f\x11\x95\xe4\x19\xb3\xff\x16\xfc\x07\xa6\xbe=fz|\x7f*\xb1\x13\x8b}g~]\xcc\xbf\xb5)\xb0\xdf\xfe\xab\xf2^\xd9,\x96A\xd9\xab\x86\x92\x16\xa7Sv\xec\xe3g\x8fMq\xd2hRU\x0b+\x89\xcay\xf7h[\xd7\x8b\x15ix\xa3\xef\x9e\xdd/\xfe\xf6H\xf4X\xe8\xfe\xb6\x19\xc3\xab|\xc4\x9e\x1b\x1fA\x7f\xfc\xf0\xee\xedW\xf6H\xb3?\x0f\xd6\xb2\xd0\x90j\xb6\xaa\xa4z ,\x86C\xdb\xe7\xbc\xbb:\x94\xa41\xe5\xd8\xafw<\xbb\xcbp\xb0\x9f\x02\xdd\xad\xe8f3\x1c\xf1\xa7R[\x18\xd9\xd8\xda\x81+\xc8\xb0>\xfd\x1b\xeb\xe4'y\xf7\xd6++\xfa\x90-\xd42}\x8e\xa8\xbcd\xfd\x99\xad\xd1\xc1D\xda\x16%\xb5wA\xb5\x96/h\xd3\xd6\x15:y\xa5/c[4m\xb7\xe4\xe3\xfc-|mK\xea\x1fd\x9f[=\xf7Mp\xdfe\x05\xab\xf5\x11\xef\xff\xa3\xe7\xf0\x08\x9b\xc7f\xb7\x16\xa2\xf5\x8fN19\xbc\xddo\xc9\x8e\xc9\xfa\xdf\xa2\x89\x7f@\x1fd\xed\x1e=\x17j\xfc\xf9V\xaa\xea\xe67\x16_\xa8h\xe1\x96\x96\xe5\xd3\xcfU}+h\xd1\xae9s\x9d\xe41\x13\xf3R\x97fN\xa7S\xa1>\x8e\xe6\xd8\xe0\x95\x95U\xb2\x89S]\x01\x11\xd3\xc6\x14\xf8\x89Ob5\x87\xae\xebrc0\xa9\xf1%PT\xfd\xdc\x03\xe9\x1b\x91S\xcf\x94\xc5\xc5\xf73\x0eN\xd8jU\xdd\xb5\x0cq\xe5\x17\xfa\xeb_\xfe\xfa\x04\x99\x9cs\xbe\xb7Y\x01\xfe\xc9y\xb7\x99\xa8\xaf\x17\xdf|\xfdM\xfb\x08\xf9\x8c\xea\xff\x0c;Ay=\xa1\xa1\xdd\xa1\xa9D\x1a:\xf5\xc7v\xce\x9dCw\xa4\x80\x85\xe3\x9d\xc3?\xe0\xcea|\x03\x10y\xe9\xa0^\x93\xd2\xde_\xbcP\x8d\x8c\xbc|\xc8~\xf3\x10\xb5&\xba#\xa7\xda\xfcK\x84#\xa7\xda\x8c\x8b\x83#\xa7Z\xdae\xc1\xcc\xab\x82\xcc\x17\x053\xae r_\x12d\xbb\"\xc8{A\x90\xedz |9\x90\xedj\xe0\xc8\xa9\xf6\x7f\x1d\xa7\x9a\xbf\xee\xcc\x0e~\xdb\xbd\x9f\xc1\xb9\x9f\xd5\xb5?>\x0cg\xba\xf5\x11W\xfe\x1cG\xbe\xd7\x93\xedp\xe2\x07]\xf8\xb6G-\xde}o\xbf\xfbw\xac\xaf\x93\x1c\xf71\x9d\x0d9\xed\xdd}\x0b:\xec\x13\xdc\xf5c7\xa7\xcbU?\xdfQ?\xddM\x8f~\x97\x89.z\xaf\x83\xde\xed\x9e\xf79\xe7\xd1\xc1\x8au\xcc\x87\xdc\xf2#\xa7\xfc\x0c\x97|\x84C>\xde\x1d\x1ft\xc6#\xben\xab:\xe4\x99\x90\x13~\x9e\x0b\x1em\x94\xf6\x97\xac\xce\xf7\xcc\xae\xf7\xac\x8e\xf7\x9cnw\x97\xd3\xddr\xb9\xe7q\xb8gs\xb7\xe7u\xb6\xc7\xb9\xda\x83\x8e\xf6H7{\x8c\x93\xddr\xb1\xdb\xb5\xc5\xba[\xfd\xee\xf5H\xe7z\x84k\xddhrN\xb7zf\xa7z>\x97z>\x87\xfa\xf4\xaf\x1bt\xa6\x87\\\xe9b\x97\xf6\xb8 \xa7\xf8\x1f\xd5;\xbe\x90\xe7\xab\xfa\xa6w8\xbe\xa4\xfb\xba-\xe2\x93i\xecy^yR.\x8bI P\xc6\xde\xfeA\x9a\xe1\xee\x17^B(6j\xa3R\x0f\xaa\x83h#\x9a]'e\xf5\xe8_2\xea\x92\x7fU\xa0_\xda\xc2\xb6\xa9wF\xadC*\x8cQR\xa0\xee\x01\x02\xbb\xffAi\x8a\xd2r\x14U\x13\x92\x13\x9dW\xdd\xc3$'\xb2\xba&+\x17\xfe\x18\xf9}\xc5\x9b\xfd\x14X\xd8\x8b\xaf\x1f\x10\xb9&t\xd0\x8b\x94h\xc8b\x7f^\xf3\xab\x88\x1e0\xde\xd5\xe2\xaf]\xd1\x07\xdc\xe93\xd7\xbd\xfe.HCv\xf1\xf9\xb2vE\xb5\xdc\xe8+\x17\x8e\x93\xf1\x97:\x19\x7f,\xaabw\xd8\xf5\xfb\x8cHr\xa5\xa6\x05\x9b2\x94S&\xdc\xd4\x9c\x15A@\xfa\x95\xac\x1d\xb9S\x1f:.\xed\x94\xdb\xb1\xf3#\xb9\xe3\xed\x10bx3\xceXO\xd99L\x1b>wU\x13\xd9\xc0\x0e\x13\x17\xce\xab\xa2+\x8c<\xc4\xc2\xff\x05\xdf\x18\x9av]u\xd7X\xe2\\c\x8a\x8fnu\xf9\x9fD\xa2(\xfe\x10S\xd4\xe1\xaa\xbe\xa1M\xc5Y\x0f\x8c\x1d\x18Y>\x17\xf2\xf7\xe8\x95\xf3\x0b9\xbf\xf8\xcd\x85}\x92\x1c/\xea\x8e\x17u\xc7\x8b:U\x8e\x17u\xea\xf5\xe3E\xdd\xf1\xa2\xeexQw\xbc\xa8;^\xd4i\xff>^\xd4\x1d/\xea\x8e\x17u_a\xad8^\xd4\x1d/\xeaD9^\xd4\x1d/\xea\x8e\x17u\xc7\x8b\xba\xe3E\xdd\xdc\x8b:6+Iw\xd0\\q\x86n.~4\xdd\x9b\xca\xc7+~\x1b\xf6f\xd4\x04\xa1\xd5\xc1\xf0\xb4?\x85\x8b\xf7\xef.\xde}8{\xb3\xfcpyv\xf9\xf1\xc3\xf2\xe3\xdb\x0f\x17\xaf^\x9c\xbf>\x7f\xf5\xd2\xfb\xdc\xcbW\x17\xef>\x9c_./^\xbd?\x7f\xe7\x7f\xf4\xa7w\x97\xe7o\xbf\x8fy\xf2\xe2\xec\xc3\x87@\xbd\xef_\xfd\xf1\xd5\x8b\xcb\xc0C\xaf\xcf\xce\xdfh\x8f\xc8\xc3\xe5yDg\xb7EE\xcaeG\xca\xf2~)\xbc\x0b\x8eOa\\&\xd8o\xa9kT\xfe\x0b\xf0_\xa4\xb7\xc2\xf2\xd6\xc2\x9f\xaf\xa9N\xce\xc8\xc18b\xd1\xf4\x1f\xf7\xa6 p\xf5\xfe\xe2\xc5\xa9\xb4\xe2\xd5%\x033\xae\xf7\xf5\xfePr\xfb\xe3PuE92h\x94\x88\xc7\xad\xe9\xfc\xe7k\x9dV\x1b\xba\x19O\x99(\xff\xf0\xe3{\xda>\x8e\xb4y\x8dq\xbbgV\x97\x18\x9b\x01\x9a\xc3\xfexSw\xb4\x1d\xdd\nhb\xc8\xaaeG\xc9\x94*\xe5\xabv\xb5\xea\x87@\xd5\x8f\xabzRW\xab\xda\xae\xb2\xaaC\xb5U\xf5\x92\x1d\xb4\xcb\x1b\xda\xd5\xd3j\x1d\xdeG\xeb\xe7\xc78\xff\xd5\xd3\x92\xf6\xb0\xda\x15\xdd\xb2+v\x16\xd0\xc7q\x85\xb1!\x1d}\xca\x9ewl]\x83@\xd5*\xfe\xff\xf5V\xdb\xc2\xd83m[0\x93C\x89\x10\xd7R\xb4\xdadl\xcbX\xaaj\x10e\x8a#\xfb\xb7vY\xa45\x86c\xc1\x8eW\xa2\xff$W\xa2\xc6\xd7\xea\xa7\x1c\xc7\x04jW\x90\x1dro&\xf6\xc9e\xdb\x91&\xe7\n\xb0\xc4\xaaF\xf1\xbf\xb0\x9d\x99\xffQ\xaeK|YJ\x19y\x97\xc3H\xa8\xb5\x1a\xea\xad::\x906\x19\x92\xd4M\xa9\xa1\xa1\xac\xeb\x86\xca9\xb0cza\xc3\x1dd\x04\xbb\x81\x0d\\\xc0~\xd0t#\xab\xc3\xbaj\x13\xa3\xd6D\xaa4q\xeaL@\x95 \xaa1^\x15&Z}\xc1\x97\xb69z|\x9c\xb8\xbfR|\x1d\xe9O\xe6\xbfQ\xf9e\x86\xcf\xa1&\x8cw@\xbd\x0d\x1b\x85A +\xdf\xa5\xb4\x86\xbe\x89]\x93\xf9\xbb\xb6w\x8d\xaa\x80\xcd\x81[{\xdd\x10\x8c%+5c!B\xdf\xdbn\x81\xf1s\\\x03\xc4j\x8a\xad_\xcc$\xbbb\xf1wO\x8d\xc6\xb7T9z\xd45\xab@\x87{\xaaU3\xd4\xaeX\xfd2\xb5j\x9e#\xa8\xa1\xec(\xf4\xb6@,\x01\xbb~\xf1\xf7\xa9\xb5oIQRW\xa4\"\x8fo\x94\xb1$\xc9\xc8h\x87f\x10\xa5O\xa3!#\x10s\x93\x84@\xe3\xf3\x84\x8f\xc0\xd0\xa5\xba\x89lT\xe6PHp(7\x98\xca\x05\x98\xda\x05n\xd5\x0b<\xea\x17\xb8T0\xf0u\x1e\x9c\xaaX\xe05\xff\xdd\xdf\x0c\xb5\xcc\x924G7\xb3\x84I]\xcd\xfa{\xbc\xc2\x06\x96\xa9\x16\x1bTi\xbdih\xb2Y\x83+a\x14`\xe9\xfa^\xd8\xde\x11\x13M\xad\x1a\x1b\x19L\xadW\x93\x9e\xf5I\x85\xc0=\xac\xf9\xe2\xdc\xcd\xbc\xcb\xc0\xb3\xa3\xe5\xdc\xd3\x9c\xbbZ\xfc\x1a\xcd\xb3\xb3\xf9\x0d7{ws\xeco\xde\x1d\xce\xbf\xc7yv\xb9\xc0>\xe7\xdb\xe9\x02\xaf\x86v\xbb\x9c\xfb]\xe6\x1d\xcf\xbd\xe7\xa5\xeezs\xf6=\xff\x10\xce\xdc\xfb\xcc\xf9)\xf6Atm;\xf6\xe1>\xc6V_\x19\x8d\xe0\xd4\xa1\x9b\xfeg\xf5\xf6\x91\xab\xe9\xc8\xd5\xf4\xcf\xc1\xd54>r\x13\x8evon\x08\xebl\x171\xec\xc9'\xbb\xf4\xe2\xec5\x90\x87\xd5#\xe3\x19;J\x9ev\xb4a\xbb\x97\xb8M\x10\x8e\xa8\xa2\xba\x9a\xb4\xa2TU#<\x01D[\x0f\xea.M\x1d\xe5(t\xa1\x87-\xf8zm>\x14\xd1m\xf9\xc2\xa4~\xa3\xa8\x198\xda,\xd3\xcf\xf0\xac'\xf8\x03\xd8,\xb3\xb07\x10\xc0\xdf@\xf4z\xb1cF3bq\xc0\x81\xc7\x81\x11&\x07\xc4U\xa7\x7f=\xea\x8fD\xacF\xfe\xf8\xa4\xb5\xf8\xf3\xa1n\x0e\xbb\xc8\xc1\x8c;\xd3\xedQ\x96_\x7fO\x9b5\xad:v\x1a\xb3\x0d\x8b\x9fgmG>S\x1e\x0e\xdeo\xa7TN\x0fy\x17l\x9d\xeevP\xf2\xba\xae\xdabC\xd9\x84\xe4\xbeZ\xe3x\xbenh\xcb\xbe\xe7\x17\xea#\x9b!\x8d\xda\x94\xff\xbd\xbf\xb4\xdd\x8a\xa8\xfe~\xbe3mf\x012&\x11\x9fE\xff\xb2\xf8\xbd\xde\x91\x1b\xda\xd5\xcb/\xdc\x1b\xa1\x0c\xd4[\xf8i\xb8\x0b\xedj\xb8\xe4\x9fN\xfc\x93\x9f@\xe3\xee\x05\xbf\x18\xeb\x0c\xdd\xf4\x03\xa0\xba\xfc\xf5\xb3\xdf\"\xee\x03\xe4\xc8\x8f\xd1,$\xd0M\xcf$\xed\xd1(d\xe3\x93u\n\xd5\xeb\xe7SV\xdf/\xd4\xa5i\xa1\xe2\xc0w\xde\xbaO\xdb\xce\x99\xb0x\xa6\xf5\x9b\x11-\x07\xc1D\xc5\xf9Ps\x90\x139\x07\xa1\x14\xc5\xddt\x04\x1ddD\xd1A\x10I\x07S\xd1t0\x07Q\x87\x8dX8-\xf1dd\x1d\"+\x98\x92x\x0e\xc2\x0e\x11\xe7MG\x9c\x17i\x07\xf3\xd1v\x90\x1fq\x07\xf3Pw0\x0fy\x87/Q\xb4\x91\xd9\xf0x\x90\x1d\x93\x079qy\x10\x85\xcd\x83\x9c\xf8<\x08\xa4\x13\x9e\x83\xd3\xc3\xd6\xb8#\x95p\x17\x83\xde\x83\xd9\x08>D \x9eDx\"\xae\x0f\xdc \x84\xbdG\xbc'\xefV\xcc\xf9?\x11\xeb\x87m{\xce\xec[\xa1v\xcc\xc3\xfd\x8d\x84q\x14 \x9a\x83+\x0b\xfe\x0frc\x00\x01\xc1\x01\xc2|,\xe0HZ\x87d\xe3\x9a\x87\x0e\x84\x10h\x0e|9\xb9\"\x90\x82\xe0J\x94\x93\x80\x18t\xcb\xb0\xb0\x16\xb3\xd0\x83\x900\x18!\x14!\x04\xfb\x1dD\x13B\x1a\xa2\x10\xf0\xe4H\x9el]9\xd0\x850\x0ba\x08\xbeo8\x11i\x08!\xb4!\x042w\x85rwy>l,\xfa\x10\"\x10\x88\x80\xe5\xf0\x9a\x85D\x8484\"$!\x12!\x06\x95\x08\xceAC\xa7\xac\xeb\xd9\x10J\x11f#\x15\xc1\xd7\xd0\xd1_\xb3\xa2\x16a&rq$\n\xcb\xf5\x95\x19\xcb\x08\x99\xf1\x8c\xe0\xcd\xf8\x85\xe6\xfc\xca\x85m\x84\x9c\xf8F\xc8\x8eq\x84h\x9c#\xc4`\x1d!\x1e\xef\x08\x91\x98G\xc0s\x80\xe1Y\xa1\xe2\x11r\xa1<`\xd1\x18H\x88\xc3A\x02\xd6\x8d\x9cxH\x98\x8b\x89\x1c\xc9B\xf2\x83\xe5DIBV\xa4$\xcc\x9e\x0fA\xc4$D\xa0&at\xe8\x8c\xd1\x930\xb6tR\x10\x94\xe03\xf4\xc6HJ\x08E\xc9\x07\x9fu\"*\xf1\xc7]\xa8J\xfci\x0bY\x89?\x86\xa0+\xf1\x07G\x08K\xe0\xe3\x1c S\x10\xc5\x87\xb4\x84\xa0\x81\x9a\x01q9\x928\x13v9\x92\x868=\x95\xd4\x18$&L\xbb\x93@P\x99\x10\xf2V\x18\xe3<\x15\x9d .\x84&$U?\x17\xa9 (Z\x13\x92\xda0\x0d\xb5 ^\xe4&$\xb5\x00\xf5\nM\x82u\"r\xb0\xc6\xa3`O\x88\xb9\xa9\xb3\x91e`\xed\xb8\x93\x80\x9f\xa0\x05\xf7\xd8h7\xc8\xd4\xb6\x89@P^=\x0e\x06\x058F\xfa\xfc_\x1b\xe93\x1dR\n~X)d\x9a\xcf9 \xa6\xe0\x83\x99B\xde\x86N\x83\x9cZ\xd2r\xc0N]\xf3\x1c\x0d\xa0\x88\x8a\xd0P\x8dJ\x8a\xfdT8\x81\xc9\xa1\x1a\xff\xbd\x91\x1dhp\xc7\xe4M\xb6s\x86x\x04\xf6\xd9\xf0\xa6 \xf9\x03=B\xa1\x1e\xb9\x83=2\x87{\x04\x02>f\x87|\xe4\x0d\xfa\x88 \xfb\x98\x11\xf8\x917\xf4#*\xf8#o\xf8GD\x00H\xf6\x10\x90@\x10\xc8\xb40\x10T\x9074$KpHdx\x08\xfafR\xc8\xc8\xec\xa0\x91\xdca#\xee\xc0\x91\xcc\xa1#\x0f\x11<\x929|$6\x80$s\x08\x89?\x88${\x18\x89;\x90$!\x94dz0 *\xccE\x11-\xca\x8c\x80\x12gHIP\xa5\xf0\x86\x95\xc4i\x1c\xf9BK\xfc\xc1%\xe1\xd6d\x0d0\xf1\x87\x98d\x0b2\x99\x1bfb\x89\xe3\x1a\x0d\xaa<\xe4\x0d5q\x05\x9b\xcc\x0f7\x89\x88\xb1\xf0\x86\x9cD\x06\x9d8\xefq\x13\x03O\xdcr\x90\x0b\xaf\xd9\xe1')\x83\x13\x13\x82\x12\x1e\x85\xa80\x94\xe4@\x14\xc7\xbd\xbe7\x18%W8\xca\xdc\x80\x14\xef\x97\x9d\x11\x94\x12\x11\x96\x12\nL \x87\xa6x?xJxJ\\\x80\n\x1a\xa22;H%:L%5P%2T\xc5=\x88\x8ei\xed~>&d%G\xd0\x8a\xb7\xc9\xd6\xdfg\x85\xaeX\xd2\x90P\x96\xac\xc1,\xaep\x96\x99\x01-v\x93\xed\x00\x97\xfc!.\xfe \x17G\x98K\xce@\x97\xcc\xa1.\x0f\x11\xec\x92\x12\xee\x12\x19\xf0\x92\x14\xf2\x12\x1f\xf4\xe2\x08{q\x05:\xc4\x87:\x84C_\x92\x82_\xa2\xc3_\xd0\x0e\xe5\x0e\x81\xc9\x1b\x04\xe3\x08\x83\xc9\x1d\x08\x93;\x14f\xfe\x1c\x89\n\x87\x89\x0b\x88\x19\x1flXP\xcc\xcc\xb0\x18\xaf\xb1\x8a\x85\xc6\xa4\x05\xc7$\x87\xc7\xa4\x06\xc8D\x87\xc8$\x04\xc9D\x86\xc9$\x07\xca\x84Ce\xc2\xe6\xf6\xacp\x19K\x1a\x16>\x93;\x80\x06\x0d\xa1I\x0f\xa2\x99|\xf7\xe3\x08\xa5 zi\xb2\x85\xd3x\x02j\xd2\x1a\x91#\xa8\xc6\x15V\x93\xd6\x92\xe9\xa15\xa1\xe0\x9a\xb4v8\xbcc\xb9Bl\xf0 \x1bO\x98M\xd4\xdd)~\xab\x9e-\xd8&\x14n\x93\xaf\x8d3\x82n\xbca7\xee\xc0\x9b#q^r(N\xe6`\x9c\x07#\xce\x9b\x17\x92\x13\x0c\xca\xc97\xebs\x85\xe6\x04\x82s\xb27xz\x88\xce\x83\x04\xe9Xb\xfb\xb8\x97a\xde\x97\xa54\x99\x15\xe9\xa0+\xd77\x1c \x08\x8f\x04\x84\xbf`\x02\xc2\xffB\x83\xd0\xd2x\x82\xfa\xe5\x91\x12\x86v\xc9\xcc\x81\xf7|\x08\x92\x03\xd1\xb8)\xe1XK\xc2\xcc\xc0\x99A\xa7\xd3|\x1ds\x11\x85\xeb\x9d\xa6z\xff\x12r\x11y\xc22\x91i\x1a\xb3&\xf8kI\xeb\xe1\xa7\xba\xa3\xc9\x0b\x81\xf5\xe8\xf9\x94\xf9\xec\x8c\xb1\x9c\xb2\xf3\xe5\x8b\xaed\xfd\x99\x94\x07\x80\xbf\xa8>\x8c\xf8\x87\xa2\x1c\xf6T'\xc2\xbd\x9e\xbb\xc5Z\x9b\xf9K\xbao\xe8\x9att\xc3\xb4\x0d\xba\xa5\x8d\nd\xfb$\x84\xb5\x9f\xa0\xa8\xda\x8e\x92\x8d\x0cy\xecU\xda\x96v\xf6\x05=;\xe8\n\xda\x8e7t~\xf7\xb6\x11\xd7\x14\xc5\x16>\x95\xb4:\x91\xf2\x9f\xc0\xb7\xdf\xc2\xd7\x9f\xe4\xd5\x07\xe9d'\xb8s\xe2\x96\xf2\x90\x92\xaf\xc7\xea\xecy\xc5\xa3\xf6F\x7f\x15A,k\xd2\xd2\xd6\xf0\x9d\xf03U\xc1\x8e\xbb\x1a~zw\xf9j\xf9\xee\xe2\xf2\xfc\xdd[\xdd}\xb4\x88\xfbL8\x88\xcd!\xd3\xfb\xdc\xbf\xbf\xfa\xe0\xfd\xfd\xec\xbb\x0f\x97g\xe7o\xbd\xcf\xbc}\x17\xf8y\xf9\xe7\xf3\xcb\x1f\x96?\xbd\xba|7\x9a\x15\xd2\x9f\x16n\xb8\xfcN\xd8,~X\xbc\x066\x9bE [u\xeamc\xc9\x8a\x00\x1ea+\x88N1\x0dC\x04\x07\xf2\x80/qS\x83\x8a\xdb\x1cD\xb8\x1e5\xde\xc7n\x1c\x03\xa6,\xee\xe9\x85\x84Y\x84=m\xcf%\xec)|FaOZ\xf3\n\x7f\xc81\xbbDI\x98c\xa2\x88\xe5\x8e\x0dN\x8a\xa7Jn\x1a\xda\xde\xa9\xfeD\xda\xb6^\x17\xdc}\xca\x0f\xd1\xfew\xf15\xbdF\xb3e\x17\x00\xfc\x99K\xa5\x1bv\xd2\xbd3g\x1ba\xc7C'\xed=q\x96\xf2\xffi\xf7e1\xce\xfd\xc6\xca\x87\xa2Z\xd3\xe7\xf2,}\xdan>\xc3\xbf,~\xf7\xdb\xd1\x8a\xf5\xb5F\xceG\xd5\xeb[\xd9\xb4\xd1d\xfd*\xa9Vw\x8d\xac\xc7Z_\x07\xeb\xdbk\x83\x02\x9c\x8979=k\xdb\x8d\x93\x0e\x9d\xbf<\x1d\x8e\xbb\xd3>%\xb5\xf5\x85\x8cvY\xbaF\x8c6\xc3[\x11\xc7\x03\xca\x1eMG\x96p\xcdl\xac\xc8\xfc\xb7B\x95 \x9a\x8f\xb7a\x19\xb4\x1f\xd7\x89\x11:-\xe6\xe9@\x96\xb8\xa2riA\xd9\xf5 \x97&\x94Y\x17\xf2~8\xd7\xcde\xec\xa6\x1f>\xc7\xe2\xce\xb0\xe0\xf9\x15}v%\x9d[\xa8v\xf4e\xdd\xean=)<\xf7E\xc9\xac+\xa5hK\xc1\xb3\xdd\xa71\xa5\xcc3\xecy\x97\xd6\x14;\xe7\xb0g\x1d\x9aS\xc2\xfc\x13%i\x16\x8a\xe2\xd6\x9f\"F\xf9at\xa8\x90\xde\x02y\xf5\xa8\xa0N#J\xa8M\x93\xb4\xa9\x88\xba}\xf5N\xd5\xa9riUV\xfb\x84wI\xdf\x13\xc4\xb1&\x86\xe1x\x19\xd0\x1d/\x03~\xe9\x97\x01\xb6\x06\x1fk\x1dD\xa4 \xe0.\xd1\x0b-iG\x84]0\xce\xae\x81~\ntn\xba\xe7\xe5\xdcl\x1a\xb0\xd2W\x80+u\x06\x92hbb\xe3\xff\x806\xbe\x99\x90&\xc3\x86\x85i)2\\\xe91&\xb6\x1a\x1d\xf2\xa9\xe90\xcc!O\xca}\xa1\xcd:\xb0\xf2\xc0\x88\xf1\xe2\xb7BEu%[PW\xce\xcb\\\xd7\xac~\xaf\x05\xccE\xcc\xea\xd1e\x12:\xc2\xb3/\x91\xac\x0b\xa4p5s.\x8e\xccK\xa3p]\xe9\x97E\xf8EQLM\x99/\x88\xb4O\xae) mG\xaa\x0di\xe4%\xa3\xdc4\xe2\xf3\xcf\xff\xd4\xdf\xe4DL \xd4\x97\xe1]\xa8\xa3#*\x8f\xe7b\xe4\xb3\x08\x7f\x8at?\xc5\xd8Vs\xef\x8c\xf3\xbc\x12\xe6\xcd\x0c\xe2\x8f\x98\xeb\x89\x80s\xbd\x82\x91\x0f\"\x9b\xf7\x01\xfd\x04c{0\xc6\x06\xf4\xd9}![\xcfc\xdfE\xd8t\x91v\x9c\xe5Gx\x08\x9f\xe14\xffXF\xef@\x9c_\xe0\xe8mru\x01\xb7\xf0c\xdd\xaaY\xacz\x9f\x81\x94\xc9\x92\x9f|/\x91l\xb7{j\xc2k\x99b\xa5\xe7\xb0\xcf\x1d'\xec;mA[\xb3@_+\xa1\x15\xe2Z\x17\xbe\xd5\xe0X\x03\x81\x99\x1f5\xdf\xf1-I\x9bV\xaco\x1c\xca\xef\xda\x8f\x94\xc2R\xdcP]\xff\x95\x92\x86O\xa4&\x83s\x80\x9c\x0d\xd5\xa6AU?\xad\xf7\xe8\x82\xb1\xc6\xf5\xf9\xf8\x0f\x9a\x18\xa5\x01\xfb\x85\xc8\x8f\xf0\x1c\xfb\xe3 \xac2\x94\\\xbf\xc4\xb7\xef\x9e\x8f\xfem\xf4-J\xc2\xf0\x95\xc7\xb2\x86_L\xa9\xa6\x9a\x1a\x9c\xebEu\x95hl;\xd2\xe9\x86\xd5\xba\x884\xba\xc6\xf3z\xeb\\F\xd9\x10\xf7\x9b`\x8c\xd9\xfbit\xe7\xe3\x15\xcd\xe9\xc7\xfbp\x9ck\xe2\xf0\x83\xfd\xbf\x8f\"7>\xa2\xc3\xd3m\xe6\xb1\x8c\x1fT\xb3\x8fb\xe7\xd1(\xe7i[\x92\xf6\xba\xa8\xae\xfa\xc9\x9a\xb8:\xdb\xe2\xaa\xa2\x9b\xe5\xaa\xac\xd7\x9f\xdb\xe5mQm\xea\xdbH\xe3O\xb7\xfdvE\xb5\x94\xa2\xf6\xb4I\x93\xa3y{6\xf5m\xd5\x15;\xba\xfc\x0fR\x94\xcb\x8d\xdc\x00\xbcr\xf8\x00,\xb7\x9cp\xae\xae\x96\x9b\xfa\xb0*)oKz\xf5\x96,\xd1\x9aTA\xc6T\x90\xfbQ\x0f*\xd6\xb6$\x91/\xb8\xa7\x9cZ o\xb4\xfa\xa2\xb0\xab7\x87\x92.<\xdfzN\xd2\xf5q\x9ec\xd4\x86\xc1-\x18\xff\x9c\x01\x9f*\x8c\xcd\x1d\x08\xcf\x9f(\x99\xa3K\x84\xd0\\\xf2\xc8\x8c\x99S\x9e\xd7\x9dM\n\xce\xaft\xa1\xd9\xe7Z\x7f\xc9\x90+\xbdoh\xfe~(\xae\xaa\xa2\xba:\xaf\xb6u\xf2$\xbe!%\xff,L\xc1(\xaa\xad\xe5\xc0\x8b\x9a\xce\xd2W\x14\xf5\x15\x04\x08\xea\x1a\xb1\xff\x82\x9f\xcdy\x9b\xf3\x83<e\x14.\x8d\x1f\xfb\xa4\xab\x1b~\xe7\xc2\xc9\x15\x80\xc0\x9aT\x1b\xf6g\n\xef\xde\xf3\x1f\x0e\xd5S6\xb3\x0d:\xbf\xa2\xda\xd0\xbbe\xbd\xdd\xb6t~\xf3\xfc\x0e\x89sV\x95B\xd2\xb5PT\xeb\x86\x83\xe9\xe8\x06\xe8\x0d\xbfY+v=]\x1b\xefM\xd1\xc2\xaa\xae6\x9c\xee\xd0B\x9f\xf2\xcd\x84\x99]\xe3{\xa7\xe5\x8e\xdc/\x05m\xa2\xd8 \xb8\xd5F\x9f\xae\xeb\xdd\x8e\x1d\x9f\x0dS\x85\xa4\xeb\xad\xa8\x98N\xf4\x1f\x92vLp\xf3\x99\xd2\x10d6\xb6\x9b\x895\x03\x1b\xb6jv\xbd>\xc6GW]\x93\xee\x8a\xb6\xb5\xa8\x14E/VE\xb7#{\xddZ\x17\x1fj\xc9\xd1\xe2\x89\xdf%\x82\x92\xda\xfa6\x97\xc5\x8e\xb6\x1d\xd9\xed\x05>]~\xa5^\xa5T_C\xb4\n6\x07\x0e\xde+\x99\x8dF\xdb1m\xa8\xda\xa4\xcc\xdb\xcc\xdd\xaa\xed\xea\x8a\xa2Q\xfe\xab\xba.)\xa9\x12\xda\xfb\xe7k\xca]\x95\xe2c\x1a\x93\xe6\x9a\xb4\xb0\xa2\xb4\xd2\xea\x84\x93\xcfE\xc9\x1a^\x1f\x98\xfa4\x92\xd5\xbfj}g\xda=\xe1\xf7\xb9\xd25[3\xd5\xdf\x1c\x131\xa7\xb8\xd9F\x7f>\x147\xf5Z\x1a \x0d\xfb\x1c#y\xa4\xba\x17\x1e\xd6qE\xeb\xba\xda\x16W\x87\x86n\xd8$Y\xd1krS\x98\x04\xa4b\xee\xa8)\xc7/]\xa3\xf1 S\xd7\xeb\x19\xc8z\x98\xc6)\x1a\x00'\x87J\xcc\xfe'b\xe6\xb6j|\x0e\xf2\x12\x9d\xd3\x90\x8e\x04\x1d\xaa\x8a\xaei\xdb\x92\xc6\"\xe3m(\xd9\xb4\xe6\x02q, w[\x7fR_C;\x17tW\x8f\xfa\xf9q\x0br\xe7\x07\xb6\xf3\xf3ShWWEW\x8f\x86\xac\xbb\xa6\x85\xf1\x8d\xd4D\x07v\x0c\xdf\x14\x9d\x0e\xdd\x12;\xf2\xf8XQ\xe7\x9eQ!\xbf]W\x10\xb0\x1bRr\xcf\x92:L\xbe\xd2\xa4\x99\xc8\x1f\xe4\xb8\x8b9V\xb5\xd7\xa4\xb4\xf7\x17/T\xaf\x92\x0f\xdatu\x11;]\xf3z\xc5\xd1c\xd8\xb3\x10\xdcG\xb1\xd7\x15\xeb^?\x0fq \xfb\x8e\xe4\xc9\xcd\x0c\xdd\x14d>\x9a=\x87s\xee\xe3\xd9A\x9d\x92\xf3\x88v\x1f\xd2\xbec:\xea[E\x81\xd3\x91\xef\x95\xf3\xb8\xc6\x0fl\xf7\x91\xed;\xb4\xc3-\xcfyp{\x8e\xee\x99\x87\xb7%\x8d;\xa5]\xc7w\xcc\x01\x1eu\x84G\xcd\x99)\xeb;\xdbQ\xee=\xccS\x8es\x7f\x9bg\x1c\xe9\xe6\x98\xf7\xc7\xbb}\xa8\xc7\x1c\xeb\xbe\xa3\x9c\x94\xe5\xd0\x10\xb5\xa8\xb0\xa0\xca\x04\xc3\xf2\x18\x0cy\x0c\x86To\xb8\xbf\xa1\xa8R\xd3\x04k\x83m\xb0\xa88\x0d\xd9\xa0\x1cJ\xaa\xbf\x16n\xf9X\x9b<\xa5\xeb\xba\x11\x0fr\x8aB\xa9\x9f\xf6\xec\x80lO\xe6\xfb\x81\xdeM\xa3o\xea\xc9\x0f\xf5nh\x14J\x10\xd8\xd0=\xe5.\xf1\xefH\xd3\x8f\xac\x8b\xca\xd2\xe8#\x9f\\c\"K\xc1\xfb\x17\xd2\x98\x93<Q\xfa{R^\x8a\xce\x8c\xedZ\xd1\xea\xb2\xa5\xcc\"\x13\x1cW`\xd1\x95\x80\x9f\x16y\xd5U\\QMh\x8e\xfb\x08\x98\xab\x90\x8aSG\x138REg*\xa1c\xa5s\x96\xbai\xb5\xd5<+q\x15\xd3;\xca\xb6Z\xe9\x1e\xe9\\\xaa\xe4X\x89\xc4\xd4G\\qt\xb7-\x97\xb2\x88\xaa\x89\xb3\x14D\xa5\x10j\xf2,\xd5\xd0\xaf\x14\x06\xd4\xc1\xa9\xab\xc88(\xa6\xab}\x86\x9a7\x08\x8c\xd3\xef\x1cA \xd3u:\xdbMchs\xa8\x1e\xa76\xe9\x8e\xa7\x94\xe9\xf7\xe8\xef\xeaj\xf3A\xe3\x88\xb5\xc6\xd9\x0c\xbe\xf9\xee\xdd\xdb\x97n\xc6\xd2\xf1\xef\xec_\xde\x1f\xcf\xdf~\x8f\xfe\xaa\xbd\xd8\xdfV\xfb\xaa\xc6?\xf9\xd0\xb7^g\x15\xff\xe2\x81K\xfd\x00\xeb\xb13\x8eJ\x9e\x03\x1a/SAQ\xc9\x10\x83~\x8d\x8c\x18s\xf1!a\xf2\xc4\xffa_\\\x04\xabJ\xa6T\xb1\x89{\xe5\x9d\xbf\xfd^ <\x7f\xfb\xbdW\xe2\xa1Z \xcd\xc6!P5/\xa2qC\xc3\x1cS\xeb\x05\xdb-8\xd7d\xf4\xa1\xbf\xee_Y\xf2\x98\xa8\xe7\x11\x9b\xe2\xf8\x1d#\x00\x84'\xf3\xe2\x9eE\xf5\x10\xc8`+\xae#\xaa\xdb<]\\CI'\x98l\xb5\x19\xa2~M\xb0]X=\x91*\xba\xd19\xf6\x9e\x9a\xaf\xa3f\xf3d{Wb[\xda\xd0\x92^qS\xeb\x148M\xb7\xba\x145\xdc\xe4\xe4n9\xb5\x1d\x96U\xa0\x84\x19\x03\xbc#w\x1cA2n\xe9X\x91Z[\x9e\x11\xa6\xb7\xc8\x0e\x05z \xd2_\xe5\xed\x88&\x13\xed\xcf\x86\x14\xe5\xbd\xd0\xb3H\xebH\xbc8:\x18y\xef\x1d]9\xec\x99\x0e\xb2L\x88\x85\x08\xe8,\x9a@5Yx\xeaEA$\x89L\x1d\xa6\xb0\x8aNc\x91_\xc3Z\xedGC\x13\xa0\xdd\x7f\xeb\xd1\x88\xc6\xfa\x08n\x02\xef\x87\x05\x1d\xb1\x13\x98\x1f\x1b\x1d\xa9\x07Y5\xf6\x8a \xd7mL\xb0\xb9\xab\x84\xaf\x0b}?\xf2\xad\x10\xe7\xea\x98\xd0\xe8I+BS%\xb5&\xfbW\x03\xde\x8c\xd1D\x99\xb1\x8b\xab\x1d\\\x1d\xeb$j\xa2\xbe\x143#\xe5\xb4\xea'\xd32\xc6X\x1du\xdczY\xcd^Z\xadk\x99$A\x07\xe0\xf4\xcf\xabo\xdfwjJ\xed\xd6\xcb\x81\xda\xad\xa3\xb0\xbd&\x8d\xcd\x0c\xe3\xabR\xbc!\xbf\xab\xde%\xf69\xe5\x8f\x0d]\xd3\xe2\x06\xdd\xa1z\xadn\xf8P\xe30\x1d\xa6\x91Hs\xb4\xfeL\xab\x16\xaei\xc9\xe9\x84I\x05d\xcdU\x7f\xa9\xdcKQ\xf5m%\xf8\x86\xebJ\x1b`\x99\xd1\xb0uE-\xf2\x10\xda\xfaVX\x11uE\xc7\xdf#j\x92%_\x1fnF\xf3\x13}\x0d\x7f\x15\xfcs\x15\xa2O\xd2\xd9s\x16\xfc\xf36\xbe%\xb3\xe7/ s8\xbe\xfa\xf4\xb9l\x890\x0c\xd3\x8cs\x1ar\xcfk\x18\xcfmVV\xa4$\xd5z\x1a\xc5%\xc2\x9e\xee\x18u\x8c-=\xbc\xd1\x18#;\x99\x15}\x101\x87\x0c}p\x92\xaa\x12\xc7x\x1e\xda\xfat/.w\xc5\x90\x92V\x1c\x8a\xa8M%z\xb7\xa6\xfbN\x1al\x9d\x96p\xd3\xfc\x88\xe3\xd49r\xfe\xf6\xceF~ \xd1\x1e\x8a\x8e;\xfc\x99\x02\xb8.\x0bV\x9br\x1d\xb7\xde\x1do\xe8H\xecV\xb7\xab\xab\xe2s\xd0\xf9c\x0c\x91|E\xfb\xd2\xd7\x87\x1d\xa9\x9e6\x94lx\xb3y\xee'\xe5\xdd\xb6\xa6\xb3\xc8\xb5\xde\xdd\xa7Ti(PJ\x80\xee\x1b\x10\xb1\xed\xa4\x1c~\xec\xbf=\x9c\xd0\xbb\x05|\xbc\xa8\x9b\xce\xbc]\xfd\x13\xbd_\x91\x96>Q\x0d\xbb\xa5\xab\xb6HS\xec\xe4+hK\xd4oeQ}\xeeOr\xba>4Ew\xbf\xe4\xf3c\x1d\xf2\\\x9b\xfb\xe0\xe8]\xb4R\xba#\x05O\x94\xde?\x0e\xf2q\xd5\x84\x0d\xedHQ&i\x13\xf2\x15\xb5\x05\x0b\xa0n_\xa5\xfc\x15YK\xda|D\xbd\x1b\xda\xc3\x9eY\xfdC\xd1vuS\xacI\x99t\xa7qM\xc9\xc6\x9e\xd7Q\x9b\xa6L =\xda\x0b\xc5\xf5\xc5\x8a\xb4\xc5Z\xfa\x1d\x8b!\xbc\xc9S\x07x\xb9\xb8\xb8\xa4\xf1\x1f=G#\x84\xf8\xf8\xc8~\x9fO\x9c\xdf\xb6\x7f\xc16\xa4\xaa=\xb4\xb0&{\xb1\xcd\n\x93P\xfd\xb99\x94\x03\x1d\xc7\x9a\xb6\xad\xf0\xf5\xa8\xd1\x1b\x89\xe3G0\xfbi}M\x8a\xeat|\x8bYT\xeb\xf2 r\x99\x95\xa5\xf6 \xb3\xde \xeb\xdba-\xda\xa0\xd0\x90\xa2v\xd4\x9b@\x86<\xea\x8f-\xc6\xbd\xb6cfY\xd7\x90J$F\x81\x1dY_\x17\x95\x11\xa2\xc2k\x8e\xe5\x8d\xce\x12\x80=!\xf4\x1e\x8b\xf0\xe1\xc9\xf9\xf8\xe0\xd9\xad\x173|\xdf\xd0\x9b\x8c\x13\xfc\x9a\xb4\xd7\x13'$\x92\x80{O\x9an\xd9\xd2n9^\xde\xaa8[\x08\xdeV\xf2W\xed\x8b\xfe\xfe'.\xb5\xa8:zE\xed\x00\x1d\x08D\xc8\x80s\x18 4\x14\xe0\x1f\x8e\xfe\xa3]\x90\xa6ki\xf7\x03\x1f\x95\xf1\xe7\x16WIK\xbb \xc1\x19dU)\xabc\xa2\xc4\xda\x12\x13\x85-A\xed9\xf6\xcf\x0c\xd5\x0d\x11.\x19\x84\x8d\xdb\xbem\xea\x1d\xdf&\xc8~\x0f\xf5\xa1\xdb\x1f\xba\xe1o\xc3\x1a\xd0$\xf0\xd0\x95\xacm\xeaw\xca\x0c\xb2\xc8~\x9fA\n\x9f/2>\"\x838z\xc3\xf4\xb15\xcd \xaa\xff~\xc3\xf12\xda\x9e\x040\x96\xa6\xda\xbaa\xa0\x92XU\x86\x97\xac?n\xc4\xfd\x96X\x05bO\xd2|FHlB\xde(d\xf6W\xb7y\xef\xdd[\xfcG\xbb-\xda\xe8\xbe\xcb\xe2\x7fl\x07x*9\xff\n+\xba\xbe\xee}\x06E\xc5S\x89.\x8c\xe7\x87\xf5\xb0?\xac\xacP4\xef\xe6\xee\xdb\xda\xd9k\xcbC\x83\xee\xed\x81\xdd74J\xc0o\xba?\xbe\x7f\xf3\xac\xa1m}h\xd6\xd2\xfa\xe1v\xa0\xe0\x0e*\xef\xa5Q\xb2-\xe4\xe8\xb1:q\xbdD\x94!\xa5\xb0\x1d\xe5\x08\xa2\xaf]\xbd\xaeKX\x1d\xb6[\xda\xa7S\x95!#\xa2/\x02w\xad0\xd7\xa4\x83\x92\x92\xb6\xc3\xe5\xd5\x15\x85G\xcf\x1eq\xf77Yw\xb4Yp\x0b\x9c\xdfq\xb4\xf4\x8a\xd9\xd9\xeaK\x7f|\xff\xe6q\x0b{\xd2]\xf3\nPq\xbdW\x05\xaf\xadC\xb2M\xf31\x93U\xf0\xd19!ly\xe3\x02>\xb1\xea\x9d\x19]?=\x11\xad\xe7\"\xdb\xeb\xfaPn`E\xf1HqV\xd6\xa4\xaa+f]\xf0\x8d\x00\xaf\xf1\x84.\xae\x16\xa7l\x08\xb9\xfe\xf9h\xf1H\xdd\x18\x9353\xfb\xe9\xe6 \x9e\xdb\x8ds-\xef\xb9G~MO\xa1\xa3d\xd7\xc2\xa1=pv\xac}C\xd7\xf5n_\x94\xacu2\x8d\xee\xaa\xa8Hs\xcf\xa9\x910illZ1\xb9\xbak\x8a\x04\xc1\xb2B\xef\xf6t\xcd\xbd\x10\x92\xfbI\xc6L\xb0\xc9@\xef\xf8\xa7<\xab\xee\x17\xf0C}Koh#\x92s\x7f|\xff\xc6^\xbb\xac\x08\xd7\x84L\x13\x8eW\xd8\xae\xaf\xe9\x8e\xc2\xa7\xeb\xae\xdb\x7f:\x15\xffm?\x9d\x8a\xd0\x19\xf9\xeb)\x9fek\xcdV-\xefQ&l\xe07x@x_\x1d\xf5\xd1\xe6\x86\xca\xcb\xf1\x1d\xd9\xb7b\xca\xb0\x1e\xb0\x1e\xab\xa0@\xbe_q\x05\xbe\x05\x82\xf7m[\x97e}\xdb>w|\xbb_\xc3\xf9v\xe8\x01\xfb\xe4*\xe3{\xdfI\xe9\xe2;\xec\xe8\x06e\x96eB\xce*\xf8\xe1\xf2\xf2\x02\xbe\x7fu\xa9r\xe4}|\xffF,P\x91\xf2\x1c\x9f\x99Vv\xe4\xcb\xfb=\xfd\xeb_\xfe\x8a>\xcc\xcf\x9b\x03\xff\xd6r\x0e\x89s\x8d\x7f\x85}So\x0ek\xcac\x89\x9af\x1c\x1c\xae\xca\xaf\xe1l0\x8bZ\x1e\x16K\xd8\xf8\x88\xdb\xbc5Y\xb3=\xa1\xae?\x1f\xf6}\x04\xe5\x8a\xb4t\x035\xce\xe8\xec\xda\xde@\xa4\x84\xe7\x81T7|Z\xed\xb4\xb5\xb0\x11\x8b\x81\xa8n\xf4QAf\xc4\x93^D\xa3\xf8\xb2o\xe8\xb6n\xe8\xa9z\x99\xc9$]\xb1*\xca\xa2\xbb\xe7\x94\x96\xea\x1e\x8boQ\xcd\x0d\x02\xb8\x10\xa5\xae\xe4\x0d.\x7f\x81\xaf\xbb\x05\x9c|l\xa9\xf2\x0e\xe89\xf2\xc5\xbc#\x15\xb9r\xf5x\xd5P\xee\xd5PB\x17O\xf0\xd9\xf2\xb6\xee\xe8s\xc9~&\x83\xfe\x08o\xbb\xdco\xd6\x87\xa6\xe1\xe1\xcdzXp\xe5\x1c\xea\x9a\xc7C\xdb\x11\xc1\xa2\xa8\x89\x05\x0de\xa7\x03\x95N\xeb>\x1c\xa6\xc7_\x0f\xebkE\xaf\x8a\xaarY*\x1c#\xe3\xdc\xb8F9\xb9];\xe6\x07\xbe\xdaZ\xe9f\xea\xaeI5\xdeY\xe0D\xfa\x16EX\xb7X\x9eOPa;\x1el\xbarl$\xbc\x83\xdcA\xdd;\x94\xe5\xb5\xc2\x9e\xae\x8bm\xb1\x86\x96\xeeH\xd5\x15k\x84\x86\xdc\xe2\x11U%\xa0Rx\xcd\xb98\x8d\xe3G\xb6u\xac\xfa\x18TMa\xb0t\x03y\xa8\x92U}\xe3P6DW\xe5t\x1ew3\xd4\x9aOg\xd5\xfd'\xcd\xdb]\x01iVE\xd7\xb0\xc5\xe7i\x95\xdc\xa3-q\xa4\xac\xab+ye`\x7f2\xb6k\xf2M_\xb4je\xabSz\x9dJ+B\xa6\xd9\x85\x9a\xf8e\xb1\xe2M\x95\xfbz\x0b\xeda\xbf\xaf\x9bN\xb0\xc6\xae??;T\xec?\xec\xbc\x14\xdf\xbb\xb5\xddVR\xa3A\x95\x87z\x0b\x87Nl>j9\xb7l\xe3SW\x00\xa4\x84+ZqN\xaa\x8d\xbc\xbe\xe8\x95\xea3d\xbf\x13\x9f\xc8\xaeGe\xd7\xff\xfa9\\\x10\x01~\x03\xd9t\xd2\x1f\x88E\x05/~\xf3\x1b\xc71\xf5\xba\xaea[\xd7\xf0-,\x16\x0b4*\x9e\x0f\x02\xa9\xee\xf1\x1fIu\xbf`U\xbfn\xea\xdd\xc9\xb6\xae\x9f\xe0\x8f-\x16\xf8\xd9Sl\xe1\x84\x89\xf8\xc8\x1b}Y\x9f\xfc\x8a\xc9x\xe2\xcc\xf6\xef\x92\xf3w\xf7\xd8|\x13\x18\x9b?\x92\x1b2{p\xe0[\xae[1\xe93F\xa1hO^\xd7\xf5b]\x92\xb6\xf5\x0c\x82h\x12{A\xf4G{ \xaf\xf7\xef\xe8_\x9f=cS2\xdc\xa6\x0fdG\x99\nr&ZwE;I>|^\xb5\x1d\xa9\xd6\xf4\xe4IjcQ\x19\xae\xb6;\xbf\xeco\x03_\xf6\xe2\xbe\xbb\xae+\xc7\xb7\x15\xedz]\xd7'\x8b\xc5\x02?D\xfa\xefz\xe2\xfc\x9d\xcf}\xfe\xc5S?8{\xf9\\\x8c\xe8\xcbW\x1f^\xbc?\xbf\xb8|\xf7\xfe \xee*\x14U\x895\xe2\xaeLT\xe7\x1c\xad\xdf\x05F\xeb\xfb\x1a\x1f(>R\xcf\xbf\x85_\xedW\x8b\xd7u\xfd\x9f\x8b\xc5\x02\x9fO\xac\x91\xa7L\xd1dO\x93\xea~\xbfZ\xbc\xa5\xb7\x9e\xf6\x16[\xfe\xf4\xff\xf8\x16\xaa\xa2tN \xe7 :\xa6\xb5\xfb\xf9QG\x1c\xaf\xcbV\x89>,>V;\xd2\xb4\xd7\xa4\xbc\xac\xc5\xc2\x9e\xdbd\xeb\xef\x97\x9c\xfcf\xfd\xb9?\x07\x94\xb1\x01\xab\xfbAUS'\x96@\xb6\xdd\xab\x90mK\xda\xa1Et\x9e\xc7\x88\x1a\xf6\x8c\xd9\xe2\x0b\xfe\x03Se\x1f\x03\xd1NUv\xe2\xca\xeb\x14\xbb\x06>w\xecJ\xfac\xac*\xef\x95\xddh\x19\xfc\xbd\xea\x0cd\xdbQ\xa1\xcd\x95\x04q(<~\xf6\xd8\xaeB\x1a\xb4\xaa\x89\xc2\x82\xa5r~?\xda\xd6\xf5bE\x1a\xde\xb9\xbbg\xf7\x8b\xbf=\x12\xa3%l-\xdc\xac\xe4My\xc4\x9e\xc5\x8e\xd7?~x\xf7\x16\xf93\xfbb\xec\xa7\xc1\xe3\xd13\x002\xa5\x95\xabF\xc2*;\xb4T!\xc0\xae\x0e%AP\xbc\xb6\x08\x11\xe92(4\xa7\x03\xcaN\xae\xd6S\xa9)!~\x12M\xc1\x10\x11\x14\x9f\xfe\x8du\xfc\x934\xe7{\x85M\x1f\xc6\x85\xda\"\x9e;\xcc\x05\xb2\xfe\xcc\xf6\x88\xc1,\xdd\x16%\xc5wk\xb5\x9f\\\xd0\xa6\xad+\xe7\x02\x91\xbe*\x8e\xfaZ\xf2o\xe0\xc2\xe4\x0d\x0fs\x17\xb5|\xf6\x9b\xe8\xb3\x82\x15W+\x1e\xf1\xb1y\xf4\x1c\x1ea\xeb\xc3\xec\xeeB\xf4\xe8\xd1\xa9K\x16\xef\xcb[\xb2c\xf2\xfe\xb7h\xf2\x1f\x9c\x0f\xb3\xbe\x8c\x9e\x8d\xed\xd0\xf9V\x9a@\xe6\x9c\x10_\xb3h\xe1\x96\x96\xe5\xd3\xcfU}+\xc2m\xaeyp\xa8\x0c\x94\x11\xf3y,\xd1\x9c\x82\xa7B\xd5\x1e\xcd\xcb\x01P+\xabe\x13\xad\xbaB<\x18|\xda\xd9\x95|\xe2\x0bB\xcd\xc3\xeb\xba\xdc\x18!<|9\x8dbd\xd8\xcfr\xfa\xda\xf2x5\xfd\xcc\x85\x13\x8e\xd8\x91Ca9P\x94\x8f\xf0\xaf\x7f\xf9\xeb\x13\xc7$\x9f;G\xcc\x8a\xdc\xd3\x84\x0f\x03\x13\xf7\xf5\xe2\x9b\xaf\xbfi\x1f9>\xbb\xfe/\x01\x83\xc3}\xe2\xd3\x08\x11\x14\xb0N\xe2\x80o%\xe4\xcdp\xe9\x0fh7\xf94\xbf$\x13\x80\x14K\xa0\xc2\xfc\x08\x08\xe3W\xf6O\xe3\xd6\x9b\x11.\x06~h\x0c\xf3\x81\x13Q\xe9\xb3\x1eW#\xff\x8f{_M\xb1\x1e\x13\xdcE\x06\xeeG[\xb9\x9f4pW\xfe\xc7\x06\x04\x96\xeb9TX\x14*K\x15\x11\xb98\xf5\x1eH\xc6=\xda\xb1\x96\xdc\x07\xc8\x7f;)\xaau\xb9\x80\x96\x96\xdb\xa7C \xe6\xe8\x0b\x0c\xc1\xabX\xdcg|{\x909;\x16=\xdcK\x89\xe45\xe2\x8fE\xdb\x1e$\xa4\xd0{;5`\x14\xc6\x1d\x18\x85\xd2\xe1?\xe9\xff0.\xc8\xf4\xbfw\xb4QIV\\\xd1\xb10\xfdr\xcb\n\xe0\x1bJ\xc0\x11\x953\xa8o(vx\xdfPR\x1a\xe4p}M\x0f\xfeC\xc5\xd5\x8d\x15\x068\x14+ p()=I\x0d\x12\x1c\x8a;\\p()-q\x8c\xe9\xc4\xc8BT\xd6(\xdap(V\xdc\xe1PR\xba\x90\x10\x8b\xa8J\x7f^\xe4\xa5\xdf\n\x8d\xec\xb8Z5\xaa\xa7\xcc\xb2\xec\x7f\x14<\xfe\xd7#R\x84\xee\xba\xb0\xf7\xaa\xf1\x91|u\xa8\x10\x8c\xe9\xa8n;l,\xaa\xc3S\xc9\xa1\xcc\x8a}]\xde1#\xae\x18\xf6\x14Ow\xbb\x9a_\xe4\x94\xb4\xa3\xae\x0e\xafG\xf8\xd7\xa1\x18-^\xdb\xd0\xbb\xce\x04\xb1\x0d\xf0\xbbL\xfb\xb3\x1bf;\x94\xd0\xa8br\x12@[\xa8\xbc\xfer\xc7\x0f\xc2\x1d\x8a\xa7\xff\x10\x8c\xad\xc3 \xbaC l\x00\x109D \xab\x99\x80Mt\xca\xc3p\xb2C\xc11\xbfC\xc9\xd8\xb1t\xac\xa3S\x94\x8d\x81\x0cc\x83\x87\xe2E \x0f%s\xd7\x93\x11\x93Ni\x9dM\xb3\xe1C\x13\x0f\x05\xc5\x15kr\xe3\xae\xfd\\;+D\x0e\xc8\x1402\xbe\xa1\xe8\x00eU8\xb39-\xb7K\x0c\x02'\xca\x0c\xdd\x1d\x91nY{\x8f[n[\xc0\x86\xaeK\"\xf8Kx\xdeDK\x98|J \xc2\xfcvh:\x82\xffi<6\x1cXu\xb5\xbc\xae\xcb\xcd\xb2\xa1[A\x89\x92\xd0q\x9f\x9e\xe0\"\xfe\x12\x0e\xaduW\xde\xc3\xben\x8b\xae\xb8\xa1\xec\x98\xe4w\xff\xfah\xf4-\x1c,\xf1\xb6\xab\xf7{\x8c+\xf2\x1e\xe8]G\x1b\xa6\n \x8e\xf4\xd6\xd1\xd9b\xe3\xb0\xc9\x92\xb3\x8f;&\xbc\x17\xa3\xe0\x1e\x92\xb2hy\x80\xd2\xd0\xe9b\xd3\x9e\x02%\xebk;\x9c\x8e\x9dY\x9a\n\x84-zs4\xb5\x9f}S\xf5'\x0d\xa1b\xa1VN\xa1\xab\xaf\x84\x9f\xa4\x07\xf4 \xd3S\"\xd6d`\x1f.\xf1\xb1\xe0\xf2Pf\xaa\xf4\xad\x17\x0d\xd0;\xb1\x1e\xc5\x9a\xe5\x1aOQ\xb5\x0b\xf8 \x89\xbe\x0cq*\xfcf\x1c!G\xd8\xaa\x11\x1b\xa0t\x91\x1bbOE<\x0f\x0fC\xa9\x9b\x86\xae;X\x93r}(\x95\xcf\xd9\x10\xb6=0\x03\xea\xab\xd1\x04\x1a\x16\\\xcb\xfb_\x1f:6?\x1a\xa1B\xd47\xdc\x84\xecmj\xf8\xf35\xadDW\x804\xe6\x96\xa7{\x16\xccZ\xcc\x8fv:\xda\xb1\x8b\x96\xa9,\x9b\xa2\x87T\x12\x1d\x10z{]\xb7f==\xa3\x9eY\x89\xfe\x19\x8a!\x92\x89W6|I\xd1\xf4\xa1\xa9\x9b\xa2\xbf\x92\x19\xeb\xac24\xc7\xac\xc5\x18\xff\x85L\xfa#\x91\x9f\xec\xf0]\xd1\xfe\x13\xd0\x0d\xbfz\xe1SI\xb2\x89\x89\xe6\x99\x12w\x87\xb2+\xf6e!\x1aa\xca\xe7\x0f\xe23\xdbDQ\x0d\x17\x00\"f\x99ODm\x88+\xb1|\xd9\x80j$\x14R\x14\x0fv\xee/\x18%\x89UW7\xa2\x03{\xd2\xf0\x91\x930.\xb9\x0f\xb1]\xbd\xe3SP\x188{\xda\x88\xbcf\xdc\xb9[}\x92\xc2v\xf5\x10\xa3\xda\xd05\xad\xbaQ\xc3\xd5\x8f'\x9f\xaaO\x8a<Ke\x87\x18W\xf8\xe9\xba\x7fuI\xab\xae)h\xfbi\xd0\xef\xb9\xbd\xef\x80\x9c%f\xa5qY[\xe8\x06i|\x9e\x91\xb9$\xcfBa:i\xf9\xa4,\xa3\x87iD\x03\x12a\\\xe3\x18\xa7\x12A\xdde\nT\x0dQ\xca\xd5@J9<\xa37E\x8en\x86vXL\x19R\xb4\xd6\"P\x7f\xe2\x97~\x05\xdf\x89\x873@\xdb\n\x8c\xfd\xbe\xa1\xda/'{\xda\xc0\x9e\x14\xcd\xb3\xae)\xea\xde\xf3c\xcf\x97\x0c=\xb2\x85\x82\x95\x7fwx\xa6\xef\\W\xab5\xa2Z\xc7z\xb8\x1c\xe1\xb9\xc33lx\xcbP\x9b\xd9\x9f\xb9[o-0\xdb\x038\xbb\xff\xaeE\xb5\x1c\xd9\x9c\x81z\xb1S\x1d\x91\xd2[g\xd7\xa4\xa8\x9e\xde\x16\x1b\xaaT<Ku\xe57P\xbamfZ.\xc2h\x91\x07\xe8p\xea|e\x0d\x82+\xcb\xda@\xb3\xc3\xfet\xf7\xcc\xdcB|\x1bD]\x97\xd1\xdbCUwK\xb1\xa1/\xc7\xdeyd\x1cc\x9f4:\xd8\xa3\xd6Y\xc3\xa0\xd0R\xe7t\x0dY\xf3>\xc9#\x85m\xf4U\xdd=\x95\xff\x14\x18\xfd\xf6\xb0\xdf\x97\xf7\xea\xd2\x99\xfd$\xc5\x8d'\x86c88\x83i\x16\xbe\x8dec\xbc\x8b\xbe\x8f\xcb0\xe5\x98\xda\xaa\xd3u\xe1vZ\x048< \xa4\xff\x8e\x9c\x96\x19\xb8< \xcc\xe7\x01I\xad\xca\xc2\xeb\x01\x0en\x0fHj\xca4\x8e\x0fK\x8ceP\xcc\xe6\xfa\x18\xc9+,\xb0\xf0|\xfa\x8f\xb1\xc0\xca\nOA\x07\xdeb\x05\x81\xa9\x13\xddb\x08\x01\xff\xb7\xc3\x98B\xbc\xaf\xf8\xbf\xd1d\xd6\x90\x91\x9c9\xd4!#Q\x92Hd<\xcd\xa3\xd8D\xc0\xdb\xe1<\xac\"\x9a@#Lz&\xc9\x88&\xc9\xa0\x1bqu\xc8\xb1\xed\xb3*|L\xd7Z\xff\xde_\xbc\x90\xb2\xc4\x90G\x9e1u3\xc8HO\x0e\x83\x9c6\xd6A\x9b\x17\xa6\x19r\xa6%_*D\x9cNA\x87\xe4\xc3\x9cPQgTZ\xdb\xb2\x9dS\xee\x93*\xadA\xd3O\xab\xd0^8\xf7\xc4\xb2\xc4 \xb6*\xeb\xcf3O-[\xde\x16;\xb7\x1c'\x97\xe3\xec\x9a\xb1\x18\xd0\x13,\xf0M]\xa7\xd8,\x07w\xae\xb3,\xebi\xe6:\xcfRN4\x7f\xd7g\x9dj\x86$\x8d7\x0b\x9b1\x19N6\xebl\x03\xc7^h\x9c\x0f\xc3G-\xcb\xd1\x8ao\x1f\x0fiY\xec}\x11K\xcab\xd46<0\xb2O\xfb?KW\xaej\xcb\xd0\xea\x04\xcb\xe8\x98\xdc\xe5\x98\xdc\x05\x9c\xdf/\xa8[9U:]\xc03L\x82\x96Z7Z\xb9\xfb\xa8\xbcys\xb4\xbc\xc1\xb5\xfae\x95\xbc\xf9d\x1c\x99t\xb1\xa0\x1e\x16\xdb\x9eL\xfa\x97\xe5R\xd5[\x91|\xed8\x89\xe1I\x84\xba\xd4\x95#\x10L\x94\x80&\x18\xa6z\n\xab \xa2\x8cZ\xa3FU\xfek\xc8\x8528\xb7\xbb\xba\xfe\xec\x10\xb6/\xc9\xdaB\xef\x82\x88\x1b\xda\x97\x94\xd7\xe3\x8a\\H\xe8\xb3/za\xd4\xefQ\xc5\xaa{\x87\xaa\xb8\x1b\x02\xbf\x86\xbe\x0d\x8fc\xbd\x90\x01NK\x87\xe6(J\xb0\x17q\xdfeT\x97q,K\xd5[>R\n\xf0\xf9\xe6P\x8a[L\\\x9e4\x05\x80t\x81Nf\xec\x9c\xa7\xed]\x1d\xdf\"=``b\xb3\xbc\x81\x00\xa2\xc8\xd3\xf3\\%Z\x12\xd7\xfe>\x0e\x1d\xa6]V]\x83\x85\xa0&\x04t\xc8\xdac{\x10\xec\x80sF}p\x06z\xf0^\xa0A\x1e\x0eQ2\xf4#\x18\xea\x01Q\xd3\x1d9i_\xb1\x16\xe9\x11\xc0Z|\x05\xdfs\xf1L\xa8\xc0I$nH\xd5\xb1\xd3\x9elHG\xbc\xa6\xaf\xba\xe7\"\")\x1c~\x83'\x1f\x8a5C\x90\xde\x88\x8bi\xa1\xb6s\x05\xbd-\xaa\xabR;3\xf5\xb17\x84\xb1\xbf\x8d,gq\x15.%\xe8\xb7\xe5l\x98\xd8\x96\xf6\xb4n6\x94\x19Q\xa5vow\xb4\x00\x8e\x16\xc0?\x87\x050^?3L\x01\xaf\xa8)6A\x1fA\x95l\x08\xf4\x0bu\xac\xfeG-\x1b?\xc3\x9es\xa6\xf8\xb7\xde\x89\xdcz\x03\x97\xdeH^\x88Y\xcf\xcf\xab\xe7T\xa8\xdd\xcat\xe7d\xd4\xf3\x9e\xa6\xe1\x03)3\x97\x9e\x9fI//\x8f^V\x16=/\x87^7\x8fA/'\x7f^\x98=o2w^N\xe6\xbc.\xcc\x9b\x97\x935/\xc8\x99\x97\x991\xcf\xcb\x977\x85-\xcf\xcf\x8c\x97\x81\x17/\x8a\x15/\x8d\x01o&\xff]^\xf6;\x17![V\xe6\xbb\xfc\xbcwYY\xef\xe28\xef\xb22\xde\xf9\xf8\xee2\xb3\xdd\xb9\xb8\xee\xbaX\xa6\xbb\xa9<w\x82\xd3\x0e\x11\x88\xb3\xdc\xcd\xe0\xb8s0\xdcy\x8fx/\xbb]\xf8\xfc\xcf\xc7l\xe7\xe3\xb5\xf3\xb7#+\xa7\x9d\x8f\xd1.\x13\x9f\xdd<6;d%aGy^&\xbb\x0e\xe5\xb1\x9b\xcbb\x17\xa4i\xf30\xd8E\xf1\xd7\xe1tNi\xdcu\xb8\x0c\x8b\xe0e6k]\xec`\xc40\xd6\xf9\xfb\x1d\xc5V\x97\xc8U\x87qr\xf9x\xea\xf2\xb0\xd4\xcd\xe3\xa8s~\xc3\x19\xfctAv:?7]\x88\x99\xce9\x98)\xact1\x9ct\x08#\xddL>\xbaH6\xba4.\xba(&:\x07\xa9\x1bZ\xbd\xe3\xd9\x18\x06\xba\xf9\xfcs\xce\x86\x8e\xfe:\x8by\x0ec\x9a\xcb\xc83\x87\xb3\xcc\xcd\xe2\x98\xc38\xe5r3\xca\xf9\xf8\xe4P6\xb9|\\rY\x99\xe4\xf2\xf3\xc8\xc5\xb3\xc8Eq\xc8I/M\x0c\x83\x9c|4\xc8\x1f\x87\xb2\xc7\xe1\xb5\xc7\xb2\x82\x85\x99\xe3\x12x\xe3\"Y\xe3\xacn\xe4f\x8c\xcb\xc9\x17\x87\xb2\xc5\xe5\xe5\x8a\xcb\xcb\x147o>D\xb1\xc4\xc5p\xc4\xe9'\x07\xc6\x0f'l5\x8c\x1d\xceo\x03ef\x86s\xf2\xc2a\xacpf\xacm&N8\xa7\xd1\x8a\xf1\xc1\xc5\xb2\xc1Eq\xc1\xc51\xc1\x05y\xe0\x12X\xe00\x0e8g\xff\x8d\xd1\xce\xc3\xff6\x040M\xcf\xfak\xcd\xc8\xb1\xd09\xbco\x03V\xd0u\xb5\xecn\x98\xf6\x8fy\x8co]\xfa\xb5\x8b\x93\xeb\xcd\xeb\x921\x9a\x9f\x89\xe7\xcd\xcd\xf2\x16\xdf\x14\xd4\x014\x9d\xdf\xcd\xc4\xfb\xaa\xe2bwsr\xbb\xc5\xb7\x7f*\xaf[\x98\xd5-\xbe\x0d\xe8\x18\xe6\xe3ss\xb0\xb99\xb9\xdc\xe2\x1b\x9e\xcc\xe3\xe6gqsV\xec\x0e\xde\xf1\x8fcf\xf6\xb6\xf1\xa1\xe9\xe4n\xf31\xb7\x05;\x89G\xe7\xc5vt&c\xdb\xd0\xc5 _\x9b\x8b\xadm\x1c?8\x91\xabm\xc2\xce\x1afi\x0b/\xbb\xbc\x0cm\x89\xfcl\xce>C0*\xd6\xcd\xe2\xe5]\xce\x105(\x90\x9d\x93\xcd\xc7N\xe6\xe7c\xcb\xd4\x9dlLl&\x9bA\x1a\x0f[\x14\x0b[\xc6\x0e'\xf3\xaf9n\xe8\xc0\xecw,\xfb\x9a\x97{\xcd\xdb\xcdp\xe4\xb21\x08S\xe8\xd50*\xb5 \x91\xdaD5x\x0e\x85\x1a\xff\xebH\xde \xc6vT\x05\xe9\xd3\xa2cm\x83'W|@]\x9b\x974\xcd\x1fG\xeb!L\x13]\xb2q\x0b(j\xc13C'\xc4\x14\xe6%IsP\xa4\xb9\xa7anz\xb4\xac\xe4h85ZFb4\x9b\x16-\x1f)\x9anl\xeb5\xe4$DC\xe9\xd0Vy\xc9\xd0\x10*\xb4\xdcDhi4h\x0e\xa4\x9b\x15T\x1a\x11\xd9j\xbf<+\x9c5\x1d\xd8\xd6\x7f\xf8\x07\xc6\xb3\xf9#_\xbd{ZH\xad\x98\x18\xff\xea\x94s\xcc-\x1d\x19\x0f\x1b\x8a\x88\xcd\x1d\x13\x9b9*\xf6\x98[\xda(9#d\xc5l\x0d\xc4\xc8\xe6\x8d\x92\x8d\x88\x93\xcd\x1e){\xcc--JRd\xed\xec\xd8\xda\xdc\xd1\xb5\xc7\xdc\xd2z\x89\x8b\xb3\xcd\x1ci{\xcc-}\xcc-}\xcc-}\xcc-\x1d\x8e\xca\x8d\x08E=\xe6\x96\x8e\x19\x9c\x98H\xdd\xf0(DE\xeb&\xc7\xeb\x1esKcr\x83\xd1\xbb\xa1\xf8\xddp\x04\xef1\xb7\xf41\xb7\xf4\xa8\x1csK\x1fsK\x1b%kD\xf0C\xc4\x04\xa7D\x05G\xc6\x05'E\x06\xc7\xc7\x06\x1fsKO\x89\x14\xce\x1b+|\xcc-\xed\x8b\x1a\x8e\x8b\x1b>\xe6\x96\x9e\x18G\xec5\xc1\x8f\xb9\xa5\xc7\xd2\xb3\xc7\x16\xdb\x81\xc0S\xdb\x83\xcc\xd9\x9c1\xc6\xe0\x882\x06w\x9c\xb1\x15\"\x99)\xd2x\xf2\xe5\xd61\xb7td\xec1*\xee\x98[:k,\xf21\xb7\xf4P2G''\xc4'\x1fsKk%S\xbc\xf2\xe4\xfd9\x1c\xb5\x1c\x1eUL\xce\xbc\xc8\xe5\xe4\xd8eo\xff!\x18\xbf|\xcc-=\xb7c\xd9\"\x9a\xe7\xc54GF5g\xefzrl\xb3SZw\xcc-\xcd\xcb1\xb74\xa4\x84GG\x1d\x9bi\x89\x943\x87I\x87\x02\xa5\x8f\xb9\xa5\xb5\x9f}S5w\xf0t\xe6\xf0\xe9cn\xe9\x84P\xea\xff~\xb9\xa5a<\xbb\x87`d\xe3\xe4\x1c\xfe|L\x8e\xa3\xca\x91\x1a{\xdc\x86\x7f\"jlO\xe0~\x1c!6\" \x017`&AO\x86\x0c\\\x17m\xe7Xa\xec'cmi\xb9\xa8\xf9\xca\x15\xe1\xc0\"\x01\xbc\xf4%LZd\"\xd1<6\x9b\x92\x80\xba2B\x12\xd1\x18\xc4,[\x91\xb6X\x8b\x14\xf5\xbc\xfd\xf6s>S\xd3ohr\xa9\xb8M\x12\xb4H\x82i0\xc8~\xff0\xa2C\x8a3\xc0\x0b\x05\x8d\x805\xd9\x8btpB\xd9W\x7fn\x98\xb6\xc7\xa7\xf5\xbe\xa9\xd7\xb4m\x85I\xcf\xc7\x03\x91'\xf7d\xfe3\xcf\xf2}\x8a\xdd\x87\x15\xd5\xba<\x88\x0b>\xb6U\xf5\x0f3+\x86\xb0\xfe\x1e\xd6\xa2-R\x91\x91\xadpb\x1b\xc8\x10`\xfc\x18Iy(n\x89(t\x0d\xa9Zq\xff\xb7#\xeb\xeb\xa2\xb2\xe2\x12y+\xd0\x84'\x9eO\xe1\xca(\x14\xa5\xc8\xe2zlv\xa8+\xbf\xdd\xe6\x03\x8d\xf7N\xac\xa0}Co\x1eh\x01]\x93\xf6z\xe6$wD\xb6\xeeI\xd3-[\xda-\xb1mF\x95\x80\x97)\xd4z\xc0\x8fD\xe3g^CQu\xf4\n\xc9\x92\xa9J8\xa1\x8co\xa8 f\xb8 <d\xfd\x07\xbf M\xd7\xd2\xee\x07>r\xd8\x94\xe1V\x7f\xb7\xc4\x9b\x145#\xd1&\xc8\xea\x99X\xb1\xae\xc5\xa4c\xcb\x7f\xf4,\xfbS\xe6\xea\x07\x0d5\xb3\xe0q\xbf\xf8\x956W\xfc\xf7{\xa8\x0f\xdd\xfe\xd0\x0d\x7f\x1b\xd6\xdaH\nW\x16\x1f\xac\x8d\x03\x16.\xaf\\\xb2\xdfg\x96\xc8\xe7\x9f\xd4\x073\x8b\xa6\xcc\xda\xaa\xd64\xb3\xd8\xfe\xfb\x0f\xc7'\xb2\x8d\xb2\x9d\xa6n\xe9\xd4<\xfeq&\x88X\xd1\x86v\xd7\x1f\xab\xc2\"\x13+N\xec\x99\xfa1xC\xca\x96\xa2\x18\xfe$\xc0{\xf2\x85F\x08s\n\xa1\x81\x89Qw\xf2\xe1O!\x11\x83\n\x118T\x08\x1fT\xa1c\xaa\xf3`R!<\x82\x109\x8a0\x03\x9f\xea\x14\xd8\x19@\x0bG\xb4\xf0D\x9c\xaaS\x98\x07\xbf\nS1\xacNi\xbcQ\x01\x1c+@\x06,+L\xc7\xb3:\xe5\x91(L+\xcc\xc3\xb5\xc2Tl\xab\xbb\xd9e\xc9\xc7+\x88o\x85\x89\x18W\xa70\x8el\x8b\xc0\xb9\xc2\x0c\xac\xab[ \xedBxW\xc8\x89y\x05\x08\xe2^!\x17\xf6\x15f\xe1_!\x1d\x03\x0b9p\xb00\x03\x0b\xeb\xd9\x9f\x1c&\xb1*\x991\xb1\xf0@\xb8X\xc8\x8f\x8d\x85\x04|,L\xc6\xc8z\xf7p?N\x16&ae\x9d\xa2z\x0c\xad\x07/\x0bR\x05\x88\xc4\xccBn\xdc,\x04\xb1\xb30\x17?\x0b>\x0c-\xc4\xa9@A\xf39^K\xca\x89\xa9\x85 \xae\x16\"[6\x0d_\x8b\x8aRg\x84\x1fc\x0b9q\xb60\x0fk\x8b\xca\x93\x07\xbd[\xb1\x99\x81\xb9E\xe5\xb1\xf6t\x0e\xdc-d\xc1\xdeB\x1c\xc4\x14B\x18\\\x88\xc7\xe1\x82\x0f\x9c6\x01\x8f\x0b\x01y\x0eDN\x06l.$\x0f^\x1cF\x17\"G(\x12\xab\x0b0\x01\xaf\x0bnpc\x10\xb7\x0b\x19\xb1\xbb\xe0j|\x02~\x17\xc2\xb3`\x16\x8e\x17 \n\xcb\x0b\x11x^\x88\xc2\xf4Bx\x82\xa4a{!\x1a\xdf\x0b.\x8c/\xe4\xc0\xf9\x02$`}a\x02\xde\x17\xe21\xbf\x10\x18d\xcf\xf2\xf0\xbf\x17\x87\x01\x86L8`\x085\xc7\xb12&a\x82QI\x9eL@\xa2d\xc5\x06\x83\x07\x1f\x0c30\xc2\xa80W\xbe Qf`\x85Qyn3\xdd\x8f!\x067\x8e\x182c\x89a\x16\x9e\x18\x15\x87a\x8ca*\xce\xd8\xb7m9`\x99\x90\x88?\x86x\x0c2\xa4\xe2\x90! \x8b\x0c\xee\xd5\x0d\x1e\xbc)$`Ncp\xc9\x90\x8aM\x86\x14|2\xb8;9\x03\xa7\xecYC\xd8/3\xf0\xcb\xf8\xdcva\x98a2\x8e\x19\x17\xe5\xc26\xb3\x92\x1b\xdf\x0c\x99\xe6\\$\xce\x19\xa2\xb1\xce\x80\x1e\xe68\xe6\x19z\xef\x00\x8e{\x86H\xebz2\xfe\x19\x95\xa6\x826\xdd\x18hp\xe2\xa0a\xdc\xe2|Xh\x08\xbbRpL4$\xe1\xa2\xb1\xa7\x1d\xd8h\xd7\xa3\x18>\xda~\xd6)4 '\x0d\xe0\xc2JCx\xbc\x8c/\x95\x0b3\x0dCL\xb4\x137\x0d\x89ms\xcc\xfbd\x0c5*E\x07)\xb8p\xd40jQ\xa8\xc1\xda?\xe6\xe2\xa9a\xfe%\xad\x07[\x0d\xe1/\x01\xe3\xcee\xc3XC\x00g\x0d\x13\x1a\xe7q\x8dN\xc1\\;\x85\xa9<P\x1e\xdc5\xf8\xb1\xd70\xa1w\xd31\xd8\x10\x89\xc3\x86 \xad\xf2\x8cyNL6\xf8p\xd9\xc0\x1b\xe5\xc4f\xc3\x84nM\xc0hC\x04N\x1b\xc2M E\xed\xc5\x8c\xfe\x0c\xdc6*\xcfD\xb3\x84\xb1\xdb\x10\xc4oC\xfc@\xccF\x1b\xe6\xc3sC*\xa6\x1b\xbc\xb8n\x18\xf7`\x0e\xb6\x1b\xe6\x9f\x1518o\x88\x1cu\x98\x81\xf7v\n\\\xd1t\xcc7\x84\xc7\x05\"\xc6\x06\x02\xf8o\x08OhUb\x87\x0f&a\xc1\xbd\xe2\"\xb0\xd1\x10\x81 \x87\x87\xe9lF|8\xcc\xc6\x88C<N\x1c\x1en8\xd20\xe3^q\xe3@\xc3\x14\xdc8\x84\xb1\xe3\x107\x081\xbb:$\x0cT6,9\xb8\xf0\xe4\x10\x87)\x87p\xffc\xfa\x94\x15_\x0eq\x18s\x88\xc3\x99C\x1a\xd6\x1c\xc2\x03\x12\xd2u\xdc k\x98\x81=w\x08\xe3x\xf4 \xfe\x1cB\x18t\x00w\x0c\xb3(\x0e,:\x84\xc7+\x08\xc2\n\x0d\xd9\x1cl:*\xb0\x1e\x8f\xf8\xe8\xa9\xd0\x94\x9f\x8bS\xb7\x04\xa2\x91\x8f\x93\xb1\xeb\x96$\x85ew\xe2\xd7!7\x86\x1d\x1c8v\xc8\x8ce\x87\xc1\xa9\x82\xe0\xd9\xc1\xb2\x02\x920\xed\x96,\x8eqw\xe1\xda!\x03\xb6\x1d\x9b\x188\xbe\x1d\xe6b\xdc-i\x18\xe6\x1dbp\xef\xf8j\xf1@s\x9d\xa0` \x076\xdf\x92\xf2\xde_\xbcPm\x8b\x83\x05_0\xa3#=\x83\x18\xb7U\xb4\x8d\xce\xe8\x9d\xf8Q\xde:\xf0\xb8i~O\xac\xac\x9b~c\x11{\xf0\xb0\x10QU\x1eW\xde}\x16\xa8s\xa35\x1a92\x1d\xe59,\xccHym`\xec\xa6\xfa~\xc1\xb4\xb7\x01Y\x85\xd5\x8e\xe1\xf7\xdc'\xa2\xe9\x863\x84\xab\x86)\xa5p\x80\xb8\x0f\xcf\x8c\x9bF\xab\xae\xb1\x8c\x9d\xd9\xed\xb2vx\xad*\xad\x95\xa0\xfe\xc4/\xb2\x0b\xbe\xc3\x0fG\x92\xa6\xf9X\xe7IC\xb5_O\xf6\xb4\x81=)\x9ag]S\xd4\x86\x17n\x80\x97?PO\xed\nT\xff\x86\xd1\xd70\xee\xea\x99\xae\x86=m\xda\xa25\xdcX\xac\xe7\xcb\x0d\xad\xea\xdd\x94Y:\xbcm\x98\x08\xec\xcf\xdc%\xcb6I\xe0\xbfK6\x0bc.\x14\xd5rd\xa7G\xb6\xc1\xa5i \x12{\x0b\xf6\x9a\x14\xd5\xd3\xdbbC\xfb\\\xb1c\xf5\xbc\xbb\xb6\x004dd\xc9 #N\x1e\xdc\xc3\xe9\xc6\xdf2\x06\x06\xd9\xbcB\x1b\xa6x:\x812\xe1\xa2\xae\xcb\xf4\x9d\xb1\xaeK\xd7\xbeX\xd7\xa5IB\xc2\xfePT\xdbz\xd2\x1eX\xd5\xddR\x9cRK\xec\xaa\xc8\xf1qS\xde@F\\\x1b\x92\xe0x\xb3\xde\xc5\x8f\xf6{m\xf9\xa7\x1fH\xfa\xe6\xb1T\xad\xd2\xfa\x87\xa9\xeds\xd3[\xeau\x8eu~\x8f[\xca\xe7\x8e\x1a\xae\xbe\x1e\x16\xbeh\xd5\xa3\x96\xf1\x8a\xae\xaf\x7f\xfb\xcdS\x85A4\x91\x8c~Q\xb6F\xdd\xaf\xede\xdb\xac\x1f\xb8Gh]\xf6\x05\xb5q\xc8\x08\xc8!*Na2\xd5\x08\xf8:\xb7i\xbb/\xd69\xad.\x7f\xe7\x1c\xdf\xaa\xed\x14\xedQ\xb8\x87\xe8\xe9*\xcaL+x\x16\x81\x82\xf0\x0e\xd7\x95\xe7\x1eF\x94\xa0\xc5\x0d\x11~\nQb>\x92(\xa3\xd6\x81\xc9\x8c#\xfe\xa6Xt}N=c\xa2vu\xfd\x19\xf6%Y\xa3H\x0d\x10\xfe\xf8}Iy\xc5>/^\xe2\xa0\x84<yI\x03c\xb6\xd0\x18\x97CU\xdc\x0d\xd73\xc1i<\x16\xe8\x1a\x14y\x0f\xb1\\\x91\x92T\xeb\xb9\x83\x12\xdf\xd5Q\xbd\xe8\xdd\x88\xfa\xed\xf6\xda\xe1\xb5\x12\xc5\xdc\xaf:\xd2t\x98\x0fS\x14a\x9b\xb2-\xe2\x8b\xf5t\xa8R\xedF\x83\x01\xafm6O]>$[\x96X@\xc2\x8c\xd6;\xef\xea\xb4\xee\xb0\x9b\xd9\xed\xa0\x03N\x14\xa9\x1c\x9fW\xeb\x86c\xca\x84\xab\xcd\x87Y/Z\xbe\x97\xba\xae\xbf\x13\x1d\xaf\xa2$\xf5(\xaaC\xde\x0f\xfd\xc1\xe9\x90\xe5=\x8bw\xc6\x8a\x92\xe2\x92\x85\xe8\x19\xa9\xab\x90\xafX\xb34\xcf\xa3\xb1\x90\xc4\xf9\xe3\x8e'\x06\x8e\xa3\xbc!U\xc7\x94W\xb2!\x1d\xc1\xe6\x9f\xd1*e\x06\x92F\\N\x18\x15\xca\x1f\xc7BB\xdd\xd2;dF++o/\xe1\xbcE\xc5\xfaP\x12\xcd`B\x88&\x86\xe6TW\xdc\x08@\x9cX\x9cT\xc6\x90(I\x19\x8c\x8b\xf1Q\x95\xfd\"\xb7\xc49\xeen\x1dj\x85[\xa5\xf0\x12\xbcNb\x912\xac\x05>\x81\x8f\xda\xcaQ[\xd1\xcbQ[9j+Gm\x05+Gm\xe5\x9fT[\xf1\xee+\xde\x0f\x14\xee\x8f\xd5\x17\xddIH\x7f>\x147\xa4\xa4U'\xd4\x07\xebaD \xbd[\xd3}'\xa6i\x81R\x1c\x0d\xac\x03\xfd\xee4B\xb4\xc8%*\xce/~\xdf\x84\xdc\x8b\x02\xb4\x87\xa2\xe3\xcet\x1ezV\x16\x0eJ\xa5\xde\xa9\xa8\x8f\xadod\xf4n\xc6\x0e\xc7\xa8\xdf\xe6\xf4\x92\x8a\x93\xd9\xb8\x9e\x9b*e\x14\x8c>\x9b\xe2\x90\xfe[=?\x92n\x1fI\xb7\x7f\xa9\xa4\xdb\xe6\xd5:z\xa9\x10\xba\xb80^\x92\xd2\x92/\xd6?\xaa\x03\xe6\xa5\xb5 \x88O\x13q\xa9!\x0e\xa9\xe7S\xd6F\xe0\"\xc19\x1f\x8c\xb1t\xde\x12\xe0\xd7\x03\xf8U\xc0\xe0\xbb\x9e\xd1\x12KH\xa0%\xa8\xe9\xe9\xb9-~XN\xca\x08\x1b0\xa0 \x85T\xa3\xf0 m\xdbz\x05n\xe5i\xaa\x113\xe4PQ\x0e\xe3.\xc2\xac\x8b\xecg40`l\xa7\x15\x98\x896\xf4\xc8g\x85E\xd8_\x19\xaer|\xd6\x96\xc4\xe3\xc9GJ\xc1\x81\xc5\xd4\xcc\x8d+r\xbe\xa1k\xca\xd4[\xd2y\xbb\x96\xa9K\x9e6wul[B&P\xe4\x0c EI\xe60x\x12M\x9d\xc8\x96O\x0b\xef\x9cb\xd2831AD6\xa6\xf0tF\x8e\xb8\x91\x1dc\xa4?\xf2X1\x01\xfb\xc5\xebgE\x83\x8b,\x7f\xab[\xc7Cz\xc1\xc6\x8d\xc7\x90\x96\xa5\xf0\xb1\xb6EuUR\xdd\xbf\xaaU+\x9c\xa9\x83@\xb6\xe3\xf4\xafhA\x94\x15\x1b\x0f\xb6'=\xad\x9b\x0dm\xe8\x86;qE\x13\xf1\xe6\xe9yCFF\x84O\x7fAz$\x05\xc6Gc\xf4a\xb5/m\xfd)Z\x7f\xd1\x9c\xac_($c\xa81\xd3\xd1\x1d\xd0\xa3DI\xd9C\xb3\xe8T\xa2\x044+QR\xda\x96E\xcb\x12%\x0f@\xdc\xc0\x7f\xeb\xc3\xc1\x17\xa9\xf8Q\x1e;\x96\x9f1\xb4{i\xcb\xbdg\xe1\x18\xa2\xebdT\xba8\xdc\xaei\xc9\x9d?\xa4\x02\xb2\xe6\xdb\xbf\xdd\xe1s\xa6P\xd9~\x83\xfa\xb6\x12\x8e\xa3\xba\xd2\xbe\xa5\xa4\xe7\xe4\x04\xb5\xf5\xba }`5\x1fU-B\xd9\x96\xb7e\x92\xecz\x1c\x9f\xc2q\xf0O^\x0cV\x18\xa3(\xdeo*|\xac\x89\xaf\x85\xbe\xde\x0b\x11\xf8\xa8\xfce\xfcC\x0d\xb1\xe9C<$\x1fh\xf6\xddv\xe2\xb3\xd9#\xf7\xf6\xdd\xe5\xab\xe7\x9c\xe0H:\x83\x05SP\xc1\x8f\xaf\xf3Ji\xc6=\x85\xa8\x0cw\xc4)`\xc4\xe6jW\xd2\xa3\xcf\xd9|\xfd\xf9P4bR\\\xd5W5g+\x89\xf5)\xe1\x87\x81\xe9Qz\xe9\xf2&\x19\x92\x06\xf7\xd9W\xd8\x8cI\xf6\")\xcf\x91.\xeb\xe88::\x8e\xf4\xbf\xff\xd2\x1cG\xb2\xa1\xa6\xbe\xe5\xd3|\x9c\x9a\x97.\xe0\x19&AS\xbdb5\xafdu\xab?\x03\xc6:V\xd4\xa2\xf0'\xce\x88s\xd3X\x9f|b\x9a\x8c!%\xc6H^(A\x86?5\x86\xf3\xd8s\x1fz\x9d3\x11\x86\xf7\xcc\x0b\x1d_\xd3\xd3^\x00~\x11\xefOx1%\xd5\x85;\xa5\xc5\xa4d\x16\\<\"\xcc\x9b\xc6\xa2\x9b\x97\xc0bb\xea\n\x94P(\x9c\xb4br\xba\x8aI\x89*\x98q\x8a\x8dX8E\xc5\x94\xe4\x14.\xca\xf8`Z\x8a\xa9 )\xd8.\x8e\x88\xf3\xa6\xa2\x98\x92\x84\xc2\x9fl\"C\x9a\x89\xa8\x04\x13i\x89$f\xa6\x90\x98\x9a<\x02\xd0\xf8\x16W\\P\xd6\x84\x11\xf9SEdM\x12\x11\x97\x1ebZb\x08\xc7\x00\xfbRB\xa4'\x83\x18\x92>`k\xdc\x91\x06\xa2\x8bM\x0015\xf5\x83H\xf1\x80\x08\xc4\x93>\xccH\xf7\xe0H\xf4\xe0=\xe2\xbd\xc9\x1d\xc2\xe7\x7f\xbe\x84\x0e\xbeT\x0e\xfevLK\xdf\xa0v\xd2\x910_\xe2\x86L)\x1bf$k\xc0W\x12v\x94\xcfH\xd0\xc0\xea\x1bI\xeb\xd0\xd4\x0cs\x932\x043\nx\x121D\xa5`\xc0\xd9\xc0\xd3\xd2.\xe02,\x1e\xde\xd9I\x16b\x07#&\xb1\x82\xbf\xdfQ\xc9\x14\x12\xd3(`\xd4\xee\xbe\xd4 y\x92&\xccK\x97\xe0\xfc\x863R$\x04\x93#\xf8\xd3\"\x84\x12\"8\x073% BL\xfa\x03$\xf1\xc1\xcc\x94\x07\x91\xc9\x0e\xd2\xd2\x1cD%8p\xe4\x04@\xabw<\x1b\x93\xc8`~\n\x03gCG\x7f\x9d\x94\xb0\x00<\xc9 2\xa6%\xc0\x13\x12LME\xe0L;0#\xe1\x00jx\xf9\xd2\n\xa0 \x05\xf2\xa5\x12\x98\x9eD\x00I\x180)U\x807-@|B\x80\xa8T\x00\xd2K\x13\x93\x04@>\x1a\xa4\xffG9\xf1\xf1\xdac\x89\xd7\xc3d\xff 4\xff\x91\x04\xffV7f\x90\xfa\xa3\x04\xfe3\xa8\xfb-_\x12J\xda?\x8d\xae\xdfE\xcd\x9f\x97\x94\x7f\xde|\x88\"\xe2\x8f\xa1\xe0\xd7O\x0e\x8cv_\xd8j\x18\xe1\xbe\xdf\x06\x9aL\xb2\x8f3D9\xe9\xf51b}\xf3\xae;\x13\xa5\xbe\xd3h\xc5h\xf4c \xf4\xa3\xa8\xf3\xe3H\xf3\x83t\xf9 D\xf9Q,&\x83\\m\xb4\xf3\xd0\xe2\x0f\xc1\x1cX\xbcC\\K\xac\x199\x16:\xdc\x998\xe8\xef\xf5\x9b\x13\x97,'j\xc1\xdd0\xed\x1f\xc6\xb5\x8d\xfe\xf7(\xb2\xfb.\xfd\xda\xc5Im\xefu\xc9\x18\xcd\xcfDg\xef&\xb2\x8fo\n\xea\x00\x9aB[\xdf\xd3\xd3#\xf2\\\x84\xf5N\xaa\xfa\xf8\xf6O\xa5\xa7\x0f\x13\xd3\xc7\xb7\x01\x1d\xc3|4\xf4\x0e\x02z'\xf5||\xc3\x93\xe9\xe6\x87\xa8S,\\\xdcYq$\xb9\x995\x8e\xe3\xea\xd4\x18F\x10\xcasg\xf6H\xdc\xf8\xd0tR\xc9O\xa2\xf0\xf3\xc7\x87\xc7vt&Y\xbc\x81\x86\xf7\xd3\xc4\xbb\x08\xe2\x8d\x96N\xa7\x86\x9f\xb0\xb3\x86\x89\xe0\xc3\xcbn*\xf9;\xac0\xffu\"\xed\xbb\xb3\xcf\x10\xc4\xe3\xbb\x89\xbe\xbd\xcb\x19\xa2\x06\x05&Q\xbasvn\x874\x1fg\xb7\x9f\xc6=Sw\xb2\x91\xb6\x9b$\x7fit\xedQD\xed\x19;\x9cF\xcb\xeecF3\xfa\x1dK\xc8\xee\xa5b\xf7v3\x8c\x9d1\x06a\n\xbb:\xc6\xa2\x1e\xe4O\x9f\xa8\x06\xcfaK\xe7\x7f\x1d\xc9\xd3\xc1\xf9c;7\xc8\x90\x1e\x8d\x04 \x9e\\\xf1\xe1r\xedD\x0et\x07\xea\xc3\x8f\xf7\xd0Q9\xf3\x11r\xe8\x0c\x9d\x1018\x87\xd3\xdc&\xdbv\xb0\x99\xbb\xa7\xe1\\\x06s\x18\x05\xc5L\xe6*\xef\xb9\xc95a8KyF~r\x9b\x99<\x1f'\xb9nl\xeb5\xcc\xe0!\x17\xbc\xe3\x9a,\x94\x81|5\x93{|\xb4\xd9#\xac\xe3\xb3\xf8\xc6\x11~\xf1 \xb3\xb8\\<x\xf0h\x08+4L\xf1\xf4\x00U\x04g\x94\x8e\x11\x1a6\x9e/\x0b\x11r\xa3f<[\xd8\xc8\xb0\xcb\x82\xe4 \xa2xb\xdb\x93 \xbd\xf3\x0b\xa0\xe7\x8a\xc0KG\xa8|!\xbceH\x01Q%#n\xda\x89\x9c\x8e\xc2N'\xf4\xd9O\x855\xb6>s!\xa8\xa30\xd4\x11\xbd\x88\xfb.y\x91\xd4\xd1X\xea9D:0\xee\\\x16Du\x18S\x1d\xd1\xac \xae:+\xb2:A\xa3\xeek\x8f\xedA\xb0\x03\xce\x195\x05c\xed\x10\x95B\x19\x15\x9e\xee\xf9\x90\xd6A\xac\xf5\xa89\xd3\xd0\xd6\xfe>\xcdE\\\x1b\xc2V6\x95\xe5\x14\x00\xf6\x11\x9bv\xc4\xa6\xfd\xa2\xb0i\xf8\xf7\x8bW\xc0\x13\xa1j\x98\xa8)t\x01\xe9\x06@\xbf@\x1fX\xef\xf7\xe3\xdb\xe2\xd5ld\x83\x9e\x88rs\xca\xf9\xd7 \xce-\x84t\xf3\xaa\xdf>\xe5\xbbs\xe2\xdd\x82'ph\x94 ?\xea-\x84{\xcb\x8d|\xcb\x8c}\x0b\xa0\xdff\xe3\xdf\xf2\"\xe0b0p3Ppyqpb\xb6\x06\x90py\xb1p\x11h\xb8\xecx\xb8\x00\"n\x1a&\x0e\x15\xe4\xc5\xc9eA\xcaEb\xe5\xd07\x93\xf0s\xb3\x11t\xb91tn\x14]f\x1c\xddC \xe92c\xe9b\xd1t\x99\xf1t~D]vL\x9d\x1bU'6\xae(\\\xddtd\x1d*\x8c\xa3\xed\x1c\xd8\xbaY\xe8:'\xbe.\xa8Rx1vq\x1aG>\x9c\x9d\x1fi\x17nMV\xb4\x9d\x1fo\x97\x0dq7\x17sg\x89\xe3\x1a\x0d\xaa<\xe4\xc5\xdd\xc9e\x84th.\xf6.\x02p\xe6\xc5\xdfE\"\xf0\x9c\xa0\x96D\x14\x9e[\x0e\x12\xfd?\x1b\x8b\x97281x\xbc\xf0(Da\xf2\x92Qy\x0e\x90\x93\x17\x99\x97\x0b\x9b7\x17\x9d\xe7\xfd\xb23\x10z\x11\x18\xbd\x10J/\x8c\xd3\xf3~\xf0\x14\xac^\x1cZ\x0f\xc5\xeb\xcdF\xecEc\xf6RQ{\x91\xb8=\xf7 :\xa6\xb5\xfb\xf9\x18\xfc^\x0e\x04\x9f\xb7\xc9\xd6\xdfg\xe1\xf8,i\x08\xae/+\xb2\xcf\x85\xed\x9b\x89\xee\xb3\x9bl\xa3\xfd\xf2\xe3\xfd\xfc\x88?\x07\xe6/'\xea/3\xee\xef!\x90\x7f)\xd8\xbfH\xf4_\x12\xfe/\x1e\x01\xe8\xc0\x00\xbaP_\xf1\xb8\xaf0\x0e0 \x18\x8d\x05D;\x94\x1b\x0f\x98\x17\x11\xe8\xc0\x04\xe6F\x05\xe6\xc6\x05\xce\x9f#Q\xd8\xc08t\xe0\xf8`\xc3\x10\x82\xca\xda\xc40\x82a\xeb-3N\xd0\x83\x14\xc4\xb1\x82\xa3\x16\xe6B\x0bzMp\x0c1\x18\x8f\x19\x8cD\x0d\xc6\xe2\x06#\x90\x83\x90\x82\x1d\xc4\xd1\x83\xf1\xf7@y\x10\x84\x10\xc0\x10\xc6\xb7\x07\x99\xb39\x91\x84\xe0\xc0\x12\x9a\xad\xf05P\xfb\xc7<<\xe1\xe4\xcb-'\xaa0\xe8\x882:\x92 Y\xe8\xc3\x16\xa65\xc8\xe1\xfa\x9a\x8e0D\xc5\xd5\x8d\x13c\xe8A\x19\xa6\xf5d*\xd20\x06k\x98\xd6\x12\xc7\x98\xe6C\x1c:1\x87\xe0F\x1d\xa6u!\x19y\x18\xc2\x1ez\xab\xf7\x85_\x85F63\x061\x01\x85\xe8\xc7!Fu\xd8\x15k\x19\xdf\xe9\x99x\xc4$D\xa2\x1b\x93h\xc7\x85ND%N\xde\x9f\xc3\xd8\xc4\xf0\xa8br\xe6\xe1\x13\x93\x11\x8a\xde\xfeC0\xfa\xd9\x87S\x0cn\x00\x109D\x90\x1d\xad\xe8\xc7+\x86\x10\x8bY;\x96\x0d\xb78\x0f\xb9\x18\x89]\xcc\xde\xf5d\x04\xa3S\x9ai[Dc\x18\x03(\xc6`\x87C;+D\x0e\xc8\x14\x88#\xbe\xa1\xd8\xb0\xc7\x08\xe0\xe3,\xdd}\x0e\xfc\xd1\x12&\x9fr\x03 # \x90I!\xdb\x11\xc7&\xa6'\xb8\x03\xb4\xdb\xbc`\xc8\x10\x1c\xd2\x0b\x88\xc4\xe3\x13E\xf1\x82a\x1c\x13\xde\x1bz\xef\x1e\x92\xbc\xe0H'<\xd2?UsC$3\x83$]0\xc9\xac@I\x0c*\x99\x13, N\xb8d^\xc0\xa4\x032\x99\x1d4\x89\xc2&\xf3\x03'#\xa0\x930\x9e\xddC0\xb2\x16\xa8Q\x96\xbc\xa7?\x1fh\xc3D\x0d\xcf(!G\xe8\xc0\x11:\xf0\x0b\x82\x0e\x8c\x1b\xea\x88\xd0\x8f\x86\x06s \x80\x94\x15B\x08\xeb\xb9\x93\xc5\x90[\x13\xd8\x99'\x10\x8b\xcdG?\xd4\xc8\xcb\xe1\x80\xe1\xae\xe8\xfa\xfa\xb7\xdf<\x8dE\xe3\x0e\xf0\xd9\xb6YOi\x8811Pi\xb6\xbb\xde\xc8\xf3/\x83\xe2\x15\n@\x93&\xdf\xb7\x9b\xbai\xbb\x8cM\xd5\xa4\x05\x9a\xba\xa1m'\xb7.M\x92j\xf9\xb8\xbd\x16\xa4\x18\xd3\x9f\xe6\xe2;\x02\xa0\xe1\x89\x1aiHM\x1f\x83\x83\x8d\xfd\xdd\x82\x08\x1bc\x88\xa2\x84\x11|p\x00\x19\x1c\xd1\xb1\xa9\x1e\xaa14X\xef\x9b\x89\x0f\xd6;\xe6\x11cv,\x00\x16\x9ea<\xf9\xa0\xc1\xca\xff\xa3~\xbbej\x97\xb7\xfdmG\x9anl\xfd }\x83-\x99\x8c\xed\x1e\x84\xaa\xf57\xa8W\xda\x92{\xaa\xdd\xf7 \xad\x8cOC\xdc\xca\xd1\xbb\xe6\xf2|\xda\xa8\xe1\x88Y\xe53W\xe6b\x84\xff\x91\xa6\xe6\x14\x14\xb0\x86\xf7\xb5\xe4y\xccL\xdf|\xd0O\xd2\x11\xd8\xd7\xdcG4\xb8o\x0f\xee5$\xd9@_\xa3\xde1\xc4\xd7\x10n@{\xf1\xe6\xea\x0d5\xa3e\x94\x85J`O\x9a\xae`\xaa{c@z\x87\xaa\xfaog\xe0y\xf9\xfd\xb9\xf1\xb6<#\x0d\x87\xf7H|\xbfLL\x1fm\x84\xc2\xc2\x879Zkq\x1e8\xe8\x8c\xc4\xe7\xa2\xe9q\x9fw\x96\x98g\x87\xf3\xd4\xf0\xb6\xce>)\xc6w\x02\x13\x0e\x04\xe4\x00pn\xfda\xdde\xd6\xde>\xde\xcb\xb1]<\xdc\x04c\xa5\xce\xdd\xb3\xcd-\x03\xdb\xad\xf1}\xda\xfb\x1dG{\xf3\xec]9j?N\x98\xf7\xd8\xee\x9bo\xdfEw\\\xe3\x0b\xce\xda\\\x8d\x0d5v[I\xc6E\xeb\xcdX\xd2agB_\xc7E@H-\x0e\x9a\xc1\xa9d\xb23\xb7\xb0\x914K\x19\xf6\xaa\xc2\xc1\xceD\x90\xc6f\xdb\xe0 \xa4\xdf:[\xeb\x1f\xe0Y\xbb\xdfH\x16\xa2\xd7\xba\xb4\xda\x89\xad\x9d\xbb7\x8e\xc4y\xb4Y\xb7.\x1b\x9c\x16nW\xcf\xf4\xfd\x12b\xf7L\x88ia\xbc/*\xdf\x1e\n>\xcd\xd5\xfd\xd5gm\xac\x9a\x9c\xb1\xce\x1aV\x14\xc2\xca\xa9\xb1\x0f\x83\x957\x9d \x8d\xd7\x12\xa8K\x81E\xef\xb5\x1e\x1c\xc4\xb3\x93\xa6K\x89F\xbe\xf4\x88\x83e\xd6\x992\xe94\xe9\x95\xf79Y\xa2-!\x13=v\x10\xf6\xda\xc57\xcaZJ\xd3=x#A.\xaf\x18\x84=y\x90\xa3\xf9s\xbdz\x10\xe8\x03J\x18\x88y\xf8\xc0O\x1a\x9b\x1e.\x14\xa6 \xf48\x07 \xe0 \x80\xe0\x10\x8b2]\xe5A\xc5\xd9\x96\x9cVU\x98#0\xb2\xc3s#+\xa6\xe9I\x01Qv\x87#\xe8\x04\x03\x1d\x8e\xe9L\xaaN\x85\n\xf1Y\x99Cq{\x0d!O_\xa6j\\\xee\xa9-.O\xdd^D\x88\xe0\x1f\x8c\x9c\x95N\xee\xc1,\xfa\x98(\xd1Z\x99\xac9\xae\xe5\x81\x86;>\xd6\x1cm\x0d\x15\x18\nj \xcf\xa1\\\xfa\x9b(8\xc5\xe0D\xef\xa3\xf5\xaaS\xf1L\xf3BjBt\x7f\xa4\xcd,8\xcf\x1b\xa9 \xb2bG\xbf\xc8\x05\x99\xcf\xa1\xe0\x15\xe8\x13\n\xc7sx\xca\xb1t<\x87\x91r<\x87\x8f\xe7\xf0\xf1\x1c\x16\xe5K\x9c\xc3i\xf7\xeeIw\x95I^\x16C\x94\xe6q\xd1|-\xa2d\xf0\xb8\x98\xf2\x0c\xef\x8b(\x86\x0f&\xc6\xab\x14\xdb\xd5Q\xcf\xd4\x84\x90G\xff\xc8\xa94\xa3\x87\x13|J\x08\xf9k\xb4K\xc9\xe3\x11B'R\x9c'(\xd6\x054x9&\xd4n\xbd\x1c\xa8\xfd\x1f\xa3\xb6}\x81\xb8\xa6i\x19\x0e\xfe\x81\xb1J\x99r\x16\xfcc\x02\x90\xd2r\x13D\xe4\x00\x98\xd9\xfc\xd99\x08\x8eqD\xbf\xe48\xa2\xc9\xb9\x03\xb2\x04\x13\x0d\x92]f\xbd\xf1z\x1fm>7G\x80\xb4\xde\x85\xb0\xf4\x84\x00\xf1\x07\xe5/,fh\xca\xd6\xfdEB\x85\x92\xb7\xe8\x19!B\xc6\n\x98\xbc\x15k[\x9f&\xcen\xe8\x84\x06\xce\xd8r\x8f\xc1@\x89\x9bg8\x18\xe8\x0f\x9eMg\xdaV\x19\x11 \xd4\xa3+\xa2\xf7\x0ew\x02\x83\xf0\x843\xc6vb\xba\x82Qz\x02}\x88\xf1D\x05\xee\x14\x05\xa8\n\x8c+\xc0\x1d\x9a\x90\xc0yX\xfb\x15\xb3\x8c\xe9\x07\xdc\x89\x07\xf2\xa5\x1c\xc8\x96l\xc0\x99f\xa0\x9b\x9e` Wj\x01\x7fR\x81I\xe9\x04&'\x12\xe0\xfd\x1d\xbbj\x9c)\x04&'\x0f@9\x07\x1ci\x03\xe6$\x0c\xe0\xc9\x01\xc6\xbdA8\x1d\xa7$ p'\x04\x98\x99\n * @<\xe1\xff\x0c\xaa\xff\x19$\xff\xc8\x86\x91\x91\xca?/\x89\x7f6\xfa\xfe0q\x7f6\xca~\x17Y\xff\x1c\x9a~\x94\x92\xbf\x8b!\xe3\x9fJ\xc3\xef\xa4\xdc\x9fH\xb6\x8f\xd0\xec;\x0f\xca8\xf4\xafu\x82N\xa4\xd3\x1f\xa8\xf3\xb1\xf1\xfd*\\\xf7<\xf2|A\x96\xaf\x89\xb3i\xf33\x10\xe6\xcf\xa3\xca\x1f\xcd\xf2\xf1a8\x93\x1e_\x0e\xb4.q\x0e\x11\xbe\x97\xe5\xddA~\x1f\xa4\xbd\xb7\x19\xa0\xe3\xa9\xee\xedw\xff\x8e\xf5u\x12\xb1}LgCd\xf6\xee\xbe\x05 \xec\x13\xa8\xeb\xc7\xf4\xdc.\xba\xfa\xf9D\xf5\xd3)\xea\xd1\xef2\x91\x96\xdeKH\xef\xa6\xa2\xf7\x91\xd0\xa3\x83\x15K<\x1f\xa2\x9c\x1f\x91\xcd\xcf\xa0\x99\x8f \x98\x8f\xa7\x96\x0f\x92\xca#\xdc\xecVu\xc83!\xf2\xf8y\xb4\xf1h\xa3\xb4\xbf\xcc\"\x89\x1f\x93\xc2\xcf\xa1\x83G\xe8\xdfg\x11\xbf\x8f\x89\xdesR\xbc\xbb\xc8\xdd-Z\xf7<\x84\xee\xd9\xa8\xdc\xf3\x92\xb8\xc7\xd1\xb7\x07\x89\xdb\xa5\xad\x1f\xa2l\x97\x8fy\xc9\xda-Vs\xbb\xb6X\xdam?5{$){\x04\x1d\xbb\xd1\xe4\x9c\x14\xec\xb3\xc8\xd7m\xb2\xf5|4\xeb\xf9\x08\xd6\xa7\x7f\xdd \xa9z\x88N]\xed\xd2c\nuaI\x8c\xc9\xd3\xdd\x1a{F\xc2t\x94*}L\x92n\xb4$\x07=:j:\x8d)\xd1c\xc8\xd0\x834\xe8a\x02t/\xf5y$\xe9\xf9\x98\xee\x1c\xed\x9f1\x8a\xf3)\xce\x87\x00\x8f1\xb9y\xb8vc6\x8d\x05\x0d>\xeb4*\xf3^N;4q\xa8\x13o\x88\xf6\x0f\xc3U\xae\xff=H\\\xde\xc5\xbb\xbcQ\x9ar\xa7!o45\x0359NJ\x1eW\xbd\xe5.\x98NA\x0e\xa3X-@\xc9\xc7Q\xda\xf1\xb8\xb6N\xa1\x1a\xf7\x93\x8c\xc7\xd5;\x91A\x1cc\x0bGy\xc2\xe3Z\x91\xc4\x0d>\\\xf8\xe5\xba\xb66&\xcaX\xbc\x1a\x91 \xec\xdf\xe3\x93\x05\xe5\xfd\x1e\xea\xcbw\xdd\xed\xe8P\x97\xc8\xec=t@\x13\xe7\xe5\xf4\xc6\xd8\xbc\xc7\x17\xf1\x13x\xbc\x13\xb6+?k\xb7\x7f\x7f\x98\xc1\xd4\xcd\x9d\xa4#qq\x1c\xddh\xdf\xc0\x0br\xc0\xd9\x9b\x9dK\x0d\x82\x1d\x87\xac\xfc\xdb.\"f7\xe7\xf6\xcc\xa6\xa73l\xa33[\x954n\xed \xabv\x86\xce%sh#\x97\x14`\xf2\x87\xc7\xb0g;y\xb3\x9d]J \xb7\x98B\x87=\xa6\xbe\xf6\x92^'\xeats(\xae\xf9_\xbf\xd2;:\xa0\"tc\xcaKk\xfd%\x02Y\xda\x99\xc4\xd5\x11\xc1,N\xb2j\xd1\xf4\xa8pdkf\xf9\x83\x87\x8c.\xce$\xa2v\x9e\xe1\xfco\xf8\xf4\xc9I;=\x9fpZ]\xffJ\x81C\xac\xc4\\\x92\xe9\x11\xb1\xf4LJ\xe9\xc1z\x93\xf2\x062\xe9\xd94\xd2\x92\xf6V\x8a\x1b\x08\xa4W\xf9\xa8\xa3G\xa4\xd19\xe9\xa2\x03D\xd1\x1d\xad6\xb4\xd9\x15U\xc7\xbd\xbd\xed\xe2\xbb\xb2^\x7f>\x7f)\x96\x91\xa5N\xd8j\xc45i\xaf#w\x14\xed>vO\x9an\xd9\xd2nyM\xc9F\xb7\x07\x13\x943'\xf7qQu\xf4\x8a\x9a\x87\xb1+\xce\xd9l>\xc4\x1cG\xc6\xb5\xb2\xdc4.H\xd3\xb5\xb4\xfb\x81\xf7\xe6+\xed\x079\x9c\xd8H\xff\xa0u=b\xa0e\xc4\xc2\xf3q\xd5+\xd2\x16kX\xb1z\xa0\xa8\xb6\xf5\x94\xa1\xe4o'\x0e\x83\x15\xdbN\xf6\xfby\"\xdc\xc7\xe9\x0b\x15n\x07k\xb2g\xdb\x86\xd2,\xd5\x9f\x1bvbp\x1dy\xdf\xd4k\xda\xb6BKV\xa32\xd2`\xf8\x9f\xd7\xd7\xa4\xa8N\xcd\xcb\x86uy\x10\xae\xd4\xb2\xd4\x1eb\n\x08a\xfd8\xacE\xdd\xea\xf2C\xd4j)Hd\x08\xadyl\xa0\xac\xdb\x8eo\xb2\x0d\xa9Z\xe1o\xdd\x91\xf5uQ\x0d\xd1\xca\xac\xb6P\xf0\xebd;u\x86E\xc8\xfd\xf7|@\xcc\xd6\x89\x19\xb8o\xe8\xcd\xcc 8w\x19zv\x14p\xb5\x04\xbcf\x11\xb2\xbb\x80w\x87\x81\x00\x9a\xc2\xee\"\xf8\xba \xbe@\x16\xe7\xae#?\x15\xd7v\xbb\xe5\xb4\xbd\xb9\x17\xcf^\x17\xf3[|\\\xb6\x0c\xe43\xec\x7f'\x8a\xef\xcf\xdev\xa2\x80q\xfb\xb8c\x9d\x1f\xba\xfb=\xd4\x87n\x7f\xe8\x86\xbf\x0dsS\xbe\xcd9\xfeg\xb7a\x88\xff\x9d\xf6>\xd9\xef'\xbe\xc9\xbf\xafT\xca&\x8a\xa0L\x03\xa9\xd6t\xe2\xeb\xfd\xf8\x0f\xdb\xaf\xb6\xec\xd9\x8a\xaa[\x1a\x1b\xcam\xc97\x0e\x011\xb3\x0d+\xb5\xdf\x86\x05PF\xccL\xb1\xe6Q}\x86\xad\x91\x0fj\x8dD\x1f\xb6\xa3\xd5\x8f\xafzl\xb5O\x19R\xc7j\xd6\xba\"\xcf\xfeE\x7f\x0eFwdt\xb2{\x1bd\x1c\xc7\xc6i\x1e\xfb\x1a~\x82g<\xbd\x91\x93;\xc7\xa9\x8d\x9e\xd8\xbe\xd3Z\"\x1f\x98\xce\xbf \xabu\xd1c\x1f\xce\xbe{q\xfe\xa3\xb8\x17}S_E\x7f\xa6]{\xb5,\xaa\x0d\xbd\x9b2\xe7JU\x11\xe0\x9f\x8a\xde\xd0\xaa\x9bf;GCy\xf9\xe3\xc6_<g\x1b\xe9\xba\xa6X\x1d\x904\x88X\xd3D\xf1f\x9fBy]\xfc\xcc.\x00V:\x19U\xbcg2\x1a\x8a\x1a\xf5f\xd8;w\xa6\xc6E\xbf8\xe9\x07\x0bn\x1b\xb2\xdf3\xcb\x9fg\x86\xe9d\x82\x1a6\xady\x93\x10\x81d\x9c\xb9I\x14\xd1@\xb6m\xb7\x1d%\x1b\xb6\x16\x1ar\xcb7\xa4\xd6\xbc\x84\xd1Z<\xca\x96\xf3\x81\xcbx\xc5\xa6V\xdfZZ\x81\xf8\x83\xc2\x0f\x19\x0dV\xc9\x86\x86\xafo\x08T\x88\x91\xcf\xf4\xfe\x99\x88\xae\xd9\x93\xa2iE\x08\x043\xf1\xe3Z\xedn3o\x9a\x9e\xfc\x08\xda\xb2X\xf3sDo\xb5\xac\xf1\x965\x99\xee\x8a\x8e\x1b\xed\x07V5\xb4\xb5\xe1\x83\xa4wt}\x18\xdc\x9c\xf8\xf757\x04\xcd\xa73\x1cd\xb2E\xd2\x7f\xc4\xb7\x01\xba\x81\xee\x8e\xbf\xab\xa2,\x86\xb5\xee\xdf\x7f\xd4\xe0Fo=\x08z\xc9\x98\xc0\xa3\xe9n=\x81\x0f\xf8\xbc\xa9\xace \x0b}u\xe7H|O\xda\xf3j[G\x8f\xc3\x15i\x97\xb7\xa4\xea\xec\xc0\x90\xf0\xb9g\x8d\xc3\xf7\xa4\xfd3\x97\xa5\xbc\xbe\xca\xb9~\xa8\x8a\x8e\x1f>\xb7u\xf3\x19n%\xecB8\xa9\xba;\x1eEM\x1bV\xc3Bk\xd6\xa1\xcd\xd5\xa8\x8f\xed\xd0\xa4\xc1GuEZ \xebN\xc0\x88\xd8\xb1,\xd0+\x98\x006\xa4\x83>v7\xac\x01.D\xc2\x83\xbc\xdf\xe5=\xd7]\xa3?\x0b;\xc5#\xfbn\xe8\xa8\xee\xdd\xf6%\xd3\x0b\x8a\x96\x07\xd1r\x1d\xa1\xa1\xdd\xa1\xa9T\x88\x8e\x8aj\xe2\x17\xad\xd5\xa6\xa4\x8d\xb6\xd0\xe1\xbc\x83\x1f?~\xb8\xd4\xc4\x99\x10\x87\x92VW\xdd53;\xb6\xc5\x9d\xc0\x0dr\x006\xe77\xa1{\"n]X\xad\xa22\xe1\x9d\xa3\xa3U\x0e\xfa\xee\xd2\x1a\x81\xb5/\xe9\xbe\xa1k\xd2\xd1\x8dD\xdd\x89\x98@\x0e\xbf+\xca\x12\xf6\xf5^\xf8\x05Oau\xe8xCh\xc3\xf5\x0bE\x97\xa2 \x93\x8b\xea+\xa3;k\xc2\x01_\x1d\x90\xb2\xad\xcd\xf0\xc2\x1f\xdb+3\xaf\xd6\xc7\xf7o\xd4D\x0di!\xa3O\xc26C\x93\xcb\xae\xbe\xe2v\x04\xfb\x96l>\x85?\x86\x14|To~\x11\xea\x0d\xc0H\x81\xb5\xdf\x1cG\xd8\xa9\x12\xd6\x8c\xf8\x01=\x9c)E;\x90\x1e|\xa6\xf7O\x07}\xe1\x14H\xdb\xd6\xeb\x82\x0c\x0e}\x8cL\x8d\xcf\x19\xa7\xaa3j\x82\xd0\x0e\xf8F\xdd\xea\xa6\x02l\xe8\x0d-\xd97\xe0\xf7\xf6\xa4\xeb\xc8\xfaZ\x0f\xd7\xd5\xa6\xb39\x9bFA\xef\x8ag\xe9uQ\xf1\xc8`\xee4\xe6\xa7\xa1\xfa\xe5\xc55]\x7f\xbe\xbc\x1b\xa1\x04\xde\x90\x8e6\xa7\xc2D!\x127\xb3#\xf7\xb0\x1a2:\x1e\xb8-\xd5]\xd3\x96\xca\x85\xe2P\x95\xfe\x90UU\xd2d\xa9\x9dM\xfb\x93o5\xeb;\xd5\x17X\xd46\xfe\xda;\xcdC35#\n\xdb\x87\xc3\xce\x89\xc4\xce\x88\xc5\xf6\xa0\xb1g\xe1\xb1\xf3!\xb2C\x98\xec\x89\xa8\xec\xdc\xb8l\x0f2;76\xdb\x89\xce\x9e\x8d\xcf\xb6\xe4\x11\xdeW\xa4\x9e\xac\x18\xed\xd9(\xed\xec8\xedYH\xed\xfcX\xed\x8ch\xed\xdcx\xed\x8c\x88\xed\x18\xccvF\xd4\xb6\x1b\xb7=\x0f\xb9m \xc3\x90\xdc\xe2\xc8\nb\xb9\xe7\xa2\xb9-q6\xba{2\xbe\xdb\xa1wz\x8eb\xe7\xe5X\xf8\x94\x9e\x88\xf4\xb67.\x85\xfc\x16\xe3\xaf\xfd\xeekAf\xbc7\x86\xf8\xce\x82\xf9\xce\x8c\xfa\x06\xe4\xc0\x9d\x89\xfc6du\x16\n|\x1e\x0e<\x00\x8evb\xc1#\xd0\xe0(\xc03\x01\x11\x8e\xbf\xffw\xbc\xef\x93p\xe1\xb1\x9d\x0fa\xc3\xfd=\x0d\xe2\xc3!\x05!\x8e\x00w\x9d(\xf1\x1c8qG\xe3\xa2\x90\xe2\xce\xaf5\x11-\x0e~\xbc\xb8\x0f1\xee\xc7\x8c;?`,n<\x8c\x1c\xb7\xb0\xe3\xb3\xd0\xe3\x10\x83\x1fOA\x90G`\xc8\xf1AB\xa6#\xfe\\\x08K>\x17M\xeel\x9e\xf1\xb7\xac\x98\xf2\xec\xa8\xf2\xcc\xb8\xf2\xbc\xc8r7\xb6\x1cA\x97\xe7\xc2\x97gD\x98\xe7\xc6\x98\xc7\xa2\xcc#p\xe6\xd1H\xf38\xac9\x826\xc7\x10\xc9\xf1\x98d?\xe2<\x1as\x1e\x85:\xb7\x1a\x9f\x13y\x9e\x1d{\x9e\x13}\x9e\x13\x7f>\xef{\x071\xe8a\x14\xba~0\xb8o\xab\x0d?\xa8}\x0b\xa3\xfc\xa7\xc3#\xfc\xa3\xb3u'n\x9d\xce\xaa{\xf3\xe2\xc8\x03\x171Z!\xee\xe74R[\xb1\xb5\xf4>jnv\xe1\xcei\xcf\xad\x9f\x16.\x10}\xf5\xd7\x19\x97.\x88)\x88]\xb4t\x0f\xe0(F\xaeR\x9c\x86i\x8a\x19\xeb\x8b\xaf\xc8v\x81.J\xe8\x1a\xdd\xd5\x98\x8ca\x1e\xb3\x03<\x9c\x93\xeb\xf2.9]\xe8\xe4(\xea>\\\x8f\x9d\xe2*\xfaP\xf3\x8etw\x11!\x80\xc6X3A\xda\x15\x0e\x0f!\xec#\xc2\xeb\x0dm\xf7$H\xc1,\xdb\xc4\xce\x0f\xfe8(\xd0\xed\x8bzC5Yc11\xe1e\xf6\xfe \xee\x7f\x99<\xd5\xce\x88[zl\x93\xe1\x9f\xf6T\x99\x13\xf2\xd1\x86\xdc.\x13/\x93\x8d\xb5\xc3\xc6S\x86\x01+\xef\x8d\x1e\xde\x07e}uE\x1b8asK\x08}\xb2\x80\x1f\xf9\xb5\x99&\xa5\xaa\xab\xa7\x1b\xda\xf1\x00\xcc\xa2\xed\x8a\xb5v\xcf\xfd\xc0\xdb\x0d\x12\x0c\xa8\xcb\xc1\x83\xcf\xdd\xa1\xe7\xc6X\xea\x82\x90\xddk|\x97\xae?\xfee\xae\xad;\xe4\xa6]\xfb\xc5}\xfb\xec\xbeu\xd7_\xc7:!\x8a\xa3+\xa2x;$\x8a\xbf[\xa28\xef\xe4E \xf4P\x14\xcf\xfd\xbc(\x11RB\x0eRU\xa6\x1eB\xfe\xc6\xbb\xc2\x12E \x9d\x02f \xf7d\xf2 \xe6\x9dcX\xfbg\x1fpz ul\xfa\x15\xbd=\x86Zt\xa3\xf5\xa3uA\x0f\x81\xc6\xcd\x0dx4\x84)\x15_\x86=\x86j\x8f\xdd\xfa\xd9\x12\xd9$\xed\xfaE\x1fJ\x08Q'\xd2\x19\x1a\x05\xa2jt\xd7\x93\x1c\x85\xe89\xa9\xcf\x8c\x00\xbf\x86\xfe|\xa0m\xa7\xae\x9a\x06\x85cb\xa4at\xc5*\xa0\x90C^\xedj;+\xe6=\n1\xd6\x1d\xc9\xf3\xe7\x07l\x1c\xc9\xf3g\x04i\x1c\xc9\xf3\xd3\x023f\x86ed\x0e\xca\x98\x11\x92\x91; #[8F\xde`\x8cl\xa1\x18\xe1@\x8cla\x18G\xf2\xfc#y\xfe\x9c`\x8a#y\xfe\xbc\xa0\x89\x18>\xf9#y\xbeV\x8e\xe4\xf9\xaa\x1c\xc9\xf3\xfb2#\xfc!\"\xf8!>\xf4!\x18\xf8p$\xcf\xcf\x1c\xe6\x905\xc8!g\x88\xc3\x91<\x1f\xa2\xc3\x1a\x82A\x0d\x91!\x0d1\x01\x0dG\xf2\xfcAV\xe6\x00\x86|\xe1\x0b\xf9\x82\x17\xa6\x7f\xdd`\xe0B(lA\xed\xd2]\xb1\xa3mGv!z\x10\x8f\x97\xb6\x18\x1cI\xfb\x86\xde\x14\xf5\xa1\x15W\xa9\x0bx\xcd\xec`~\x9f\xda\xc2\x1f\xe0\xebS(\xba\xc7b\xd8o\xf9_\xf9\x14\xd9\x14\x06\xa8o\xa0\xe4\x03\xe9\xba\xea\xdbh&\xfb\x84\x9b\xba\xebujY\xe3\x1b\xd2v/8]\x92^\xb9&\xef\xdbo\xe1k\x93&\x8c\xb5\x88\xe9\xd4m\xd1\xf2\x9a\xd4qs\x04\xa2\x1e\x81\xa8G \xeaC\x00Q\xfbK$\x19[\"\x04\xf4\x98S\xa1\xb7\x0d\xc4A\xc8-\x03H/\xd3\xe9h\xab\xe8[#y\x84\x98\xc6U\xb7\xd4%Z\xd6/7\xefvt\xd7\xc9_\xd5+PR\x06\x8a\xb2\xaa\xa3\x9c\xbb\xb4\xa1\xa4\x857\xf5\xd5(\xb4K\xb4\xe5\xd4r9i\xdfR%`>\xed\xa5se\xd1l\xa8\xde\xc8\x08\xd6\xe0o\x16_\x7f}\xca\xfe\xe7w\x8b\xdf\xf3\xff\xfe\x9e\xbf\x81\x7f\x97!\xda&t\xb9\xa7RGCw'8\x0f\xd8L\x1ag\xd9\xbf\x1c|\xdb\x1d\xb9j\xb5\x8bR\xa1\xed*e\x99\xf3\x03\xb4\xe2\xd8\xddP\x9e\x95Y\x0b\nZ7\xf7\xfb\xae^p>\x85\xb6\x18rQ\xbf\xa8w{\xb2\xee\xbe+\xba3\xb6\xd9\x89M\xc1\xda\xcc\xec\x0d\x8c\xdeu\x0dY\xae\x8a\xae]\xf2\xdc\xfc\xd6\xadXL\xe4\x0c-\x8d\xbd\x14\xdd\xb5\xfc\x04h\xff5ph\x19\xfd\x10\xfc\x15c/ gD\x13\xf1?\x94;B\xd9v\xb1*:\xb1\xd1\x0f\x03^p\xc2Z\xeeL\xecj\xa0U{hh\x7f\x9d\xd1\xa7\xbc\xe6_\xac#\x9fi\xcb\xef\x0b\x04=\xb5\xce4,\xe5\x89\n\x85)\xc2\x15\x0d!A#\xf2W5V5\xab\xa1\xa1d\x03-\xd9*'\xac\xf8;\x1bON_\xcb\x89\xee\xebJ\xba|\xe1 \xfci\xfd\x87\xee\xee\x16mqU\xe9\xf9\xc6?\x14W\xd5\x8f}p\x935\xcaz^\x9b\xa7\xf0\xe1\xfc\xfb\xb7\xcb\x1f\xdf\xbd|\x85\xa4\x91\xd1\x7f}y\xfe\xfe\xd5\x8bK\xe4\x87\xcbW\xff\xe7\xf2\xe3\xd9\x1b\xe7+\xcb\xb3\x8f\xff\x07\xf9\xf1\xcd\xab\xef\xcf^\xfc\xfb\xf2\xec\xc7\xf3\xb7\xef\x96\\s\xb5\x9fyu~\xb1\xfc\xfa\x7f}-\xa7\x81\xcc|\xe3n\xb0#bO\x8e\xc6\xa0\xf9\x8a3\x8a\x8f\x19\xec\xd8/\xc2\x83\xdc\xb5\xc0\xd4\xea>\x0b\xc7\xd5\x814l\x7f\xa2C\xdc\xe8\xa5\xc8J\x7f\xd8iWu\xeb\xbaj\x8b\x0dm\xd8\xd2d\xa6[\xd1v\xcd=\x9fze BSg\x95\xf1\x9a\x06\xdah>\xb3^\xf0O\x08t]\xb7\xf7mGw\x0b8\xdb\xef\xc5\x8agS@\xdc\x9b\x89I\xa9<\xa3\xbdP5\xd9z\xd1\xf2e\x11\xde\xc0\x1bW\x16\x9f\xa9\xfe\xaeT\xd4\xb5w\xb4\xb0H6G\x0f\x0d\x91\x89\x08\xea=\xad\xd8(\xedX}\x17\xef\x81\\\xb1-\xb9\x93W\x12E\xc9\xe5\x92\x0d\xebrEoaMz\x1a\x15\xae\xf5\x17\xed0\xec|\xb8\xa4\xb3Xn\xc5E3\xb4\x01\xdaZ\xfa\x93\x8b\xed\x96r\xd6g!\x88\xb0\xde\xf0+ \"\xc6\xb8\xed\xd8\xfc\x97w- \xc9\xc4\xb9\xf8\xe1\xf4u\xccg\xc7\xac\xe9\xbd\xed2\xdd\xff\xf0\xb5\xfa\xa9\xc1V\xa4\xb4\x91d\x1d\x0d\xfd\x0f\xfeU\x16X\x9db\xca?\xb7\xfe\xa2\xd74\x9a{\xdc\x9a\xe2\xb6?\x1b\xb2\x97\xf5Z\xee\x02R\xfc\x0dm\xc4\xbe\xcf'i\x1f\x1e#\x8eP\x11dl\xb5B.\xc9\xe7\xf6\x9f\x84\x82&\xa8\xc6\xcdv\x88y\xc3z\xcak\xbc\xd7\xc9\xbdF\x89\x85:z\xd7\x1dHi9%\x98\xc9\xb7W\x06\x86\xbch3\x9f\x91\xf2x\xdb\xc7C\xd4\x7fD\xecD\xfe\xfd\xbf\xb8G\x9bm0\xf6\x88\xb3\xbf\xc6\x8c\xba\xb6K\xbc\xac\xd7/\x8b\x86\xae\xbb\xb3\xc3\xdd\x02\xceZ\xa8\xf7\xfbZ\x1e\nc\xf1\xa7b\xf6\x0d\xd3xSS\xbeq\xf7\xb3\xe4\xe7C!\xc7\x98\xa9\xa1\xaav\xce\xdb.\xee\xbf\xe4O\x8f\xe1\x93\xf8\xbf%\xd3J?y\x87\xa1Og\xe0\xdfJ\x9f\xfb~\x14S`E\xd6\x9foI\xb3iGW\xa1\xf8\xe8\x9c\xed\x8a\xaa\x16\xaa\x86\xb6 \xa0\xa1\xbb\xfaF\x84\xd7\x0b\xbf\x1c\x9bV\xe8\x8c\x94;\xf9s\xfbO\xda7\xe2wG\xfd\x80\xb2s\xef\xd5\xf9\x05\xf0g\xd4\xe8\xe9\xfb\xa6\x1a\xa7\x97\x7fZ\xc0{\xba}\x0e\xfc\n\xf1\xf9\xb3g\xb4\xd8\xb7\x0b\x9e\x14\x80\x1ev\x8b\xba\xb9z\xf6\xea\xfc\xe2\x03\xfb\xf3Sv\x9a\xc8\xf7^\xa8;\xd4S\xa4QE+\xb7r\xb1\xaf\xb3\x1137\xb4\x1b\xd2\x14\xa4\xea\x94\xdb`u\xe8\xafN{\x1dd`\xbf\xff\xf0\xf2O\x9a\xcbt\x01\x97L%\xe0K\xe9\xd5\xf9\x05k\xd3)\xdc\xd7\x07~\x0d=\xec\xa2{\xd2j\xbe\x9dO\x97w/\xeaj[\\}\x12+\x95;~\x10\x85G\xbe\xffI\xb5\xf6\x07\x81\x8b\xf8\xa4\x86\x93\xd5&\"NX\xa3\x98M\xb2\xa1\xebb\xc3\xf7s\xe1W\x95\xa7\x85\x14$_\x19\x7fb\xdf\x1c\xfd\xfd\xe2\x1bC=\xe9\xa9\xf8\x0e\xddu\x12\x03\x9d\xb6,R\xbd\x08\xffo\xc3&\xc4\xe3\xff\xe7\x99\x16\x8c\xf1\xccn\xd2\x07^\x03k\xd4\xe3\xfee\xb7\xf1\xa5\xb7\xc7\xe4\xe0\xd5\xb6\x96!3\x9c\xdc\x026j\xa1\xf3a\xd7\xc4\xc94\n\xda_\xd8\xda\x12\xech\xf5\x96+\xcb\\Y\xe1\xf1\x1c;\xd2\xad\xafQ\xb1\xea$\xf8\xae\xde\xdc\x9b\xf4\xea\xbd\xc1\xc3\xbf7\xf7W*\xa9\n\xce\xb2o\x8a\x1d\xbf\x1a\xe6\xb2z\xdb\xa2\xae\xa8\x15{\xb3'\xf7\xed\xd8\xaf\xb4\xa5\xfdr\xdfR\xcd7\xe1\x1e\xc3\xd7\xb4OH\xb3\xa5\xe2x\xbd\"-\x94\xc5\xae\xe8\xfa\x91\xd3\xedU\xad\xed\xb2\x91F\x06\x91Q$P\xa8?\xbc\x17}\xd3\x85lJe\x12 M\xce\x90NB\x97n\xa4\xb4X\xd7\"\x15\n\xbd!\xe5A$\xe5\xe0\xe7^\xbd\x11\xb8\x93M\xcd\x83HU\xbe;M\x8c8\xd2\x85\xabB\x17\xaf\xae\xcf\x87\xe9R\xb4*\xbf\x05m\xbbb\xc7}'7\x05;\xcbv2s\xc8b\xb4.\xa2b\x05\x85\xc5\x82\x05@\xd8\x1e0\xd4\xff\xe5\xf1~\xf9|_\x1bZ\xd5;\xcc\x0f\xe5\xf5_a\xad\x0d\xbe\x16\xf2\\\xbd\xa8\x8bJ3\xd7y\x8a\xcb!\xe1IU\xef\x8aJl\xa9\xecS\x92J6\x02\xe3\x10y\xfb\xee\xf2\x95\x00\xadHC\xb0' $\x15\x9cW*{]\xbfS\xebNsK\x98\xb8\xef\xb2+\xe9\xa7Q;\xac\xff\xd5=\\\xd5W571\xcd\x1b>\x89~\x91\xed\xb1\xe8-E\n\x16\x19\xeeD\ny\xbem\xa9>G\xafH\xbb\xe4\x8b21L\xc6\xca\x82\x81\xe7\x11\x02\xbd\x8a1'\xe8\x15\x91f\x8c\x9c\xfb\xdc0g\x07\xd0\xb0-\xd8\x93Nzz\xc6C\xb7\xe2q_<\xe1\xe2\xa1\x8f\xc0\xe5QlP\xaf\xd7\x87F\xdfK\xf6\xe4~Z*N\xabk<\xfb_K;\x91]g\xb4{)\x8cb\xc1\x14\x00N\xf2M\xee\xd5\xee\xb1e\xd6&\x9coG\xf2zQ\x03\xc3\nY\xf3\xe4U\xe2t\xd8\x93\xfb\xe1\xf5\xf1\x10\xf0}\x9euM<\xcb\x83\x92\xba;\xd5\x9e\x13\xb1G\x1e\xa4\xad\xc5\xff\xbaQv\x1e\x9f\xc8\xe3\xc1V\xe7\xf8\x13\xab\xa6\x96vr\x1f\xec\xdf\xe6j\xf1\xaf\xab\xba\xfb\xb5\x8cv\x13\xfb1;\xe4\n\x91\x12J\xcd\xe7\xb1,u\xba!g\x82>O\xb9\x89\x1e\xfb\xd5\\S\xb1\xd8\x0eC\xcc\xce\x031\\'\xb4\xe8\xf3\x18\x1b\xdfpH\xe0xpD=\x0b\x01|\x08\x9e\xa8Hs\x05|\xe05\xf0v\xf7\xa9\x0d\xc7_\xac\xe6_\x94}M\x1d\x1ba\xb4\xee\xb1\xf0V\xacHI\xaa5es\xc6v\xa8\x93=\xdb\x8d\x9b\x82tT\xabTY*@\xefx6/\xd1\x19\xc9\x11_\xdbP\x0e\xf6\xa8r!\xf4RZi\x00qS`K\x8aR\xbe\xd4\x15\xfb\x185\xe0\xb2\xd8\xabU\xdfg\"\xed\x8a\xbd\x16w\xa8\xbb\xce\xf9@\xf0\x9d\xaa`\x1b27\x9f4a|\xbf^\x8cn\xddu&\xd8\xe2\xaa\xaa\xd9\x8eYl\xf5\xae\x16\x9b\xeaq\xa7\x14\xf1\xae\xd8\xb7\xa7P,\xe8B\xfd@6\xa6+\xdb\xd03>]\x16\xfb\x97t]7\xa4\xab\x9bO\xacYE\xd7\xc2\xben; D\x8ep2\xf7\xb6\xdc\xf1\xe86\xca\xf1\xe8v\x1f\xdd|',t*\xc1\xae\xd8\xefS\xf7?\xf1N/]$&\xe9\xe3P\xe5\xc1\"O\xa5~\xff\x95\xb5\xe2NVu&\x8c\xa2B\x95\x8a/\xf7Ma\x1f\xf5\xf0/\xe5p\xe76\xbf\x8a\xbf\x1f\xed\xf3\xb6\xcd\xf6]S\x93\xcd\x9a\xb4]\xb4\x8b\xfb\xbb\xf7\xef\xce^\xbe8\xfbp\xe9\xf6s\x8f\x1e\xf9\xee\xcd\xbb\x17\x7fr\xfd\xf8\xe1\xdf\xdf\xbep\xfdv\xd6\xff8dj\xf7\xd7\x8e\x8f\xa7\xd1\xc9\x91\x8bd\xa5~\x1b\xfc$\xec\xcf\x97w\x1fhsS\xac\xe90B\xf0\xfeB\xb5T\xccN\xddQ\xean\xd7s\xf8\x1bmjyw\xcbc3X=\xea\xccvJ\xe0\x83\xf6\x1c^\xbe\xbax\xff\xea\xc5\xd9%\x93sh)6z\xeaPS\xde\x13L\x90r\xa7\xc8\x93\xa7\xcf\x10\xc8\xfd\x16\xdc\xe4\xbd\xf9\x97\xc5\xef\xfe\xbf\xc5\x1d\xd4\x15wd-\x9c\x0dcUZ\xdf\x81\xb7C\xdbE\xee\x86q\xd5\xbc\x84\n\xc7\xb9.\xf9\xdd\xd1-)\xfa\xd4\x8fl`\x08\xc8\xfb_\x8d\xf7\xbd\xe7\x03\xaf\xab\xf2\xde\xdd\xa83\xb4UgS\x9a%\xeb\x10\xb4\xed-\x14;\x1e\x11\xd2QQ\xbdg\x05]\xde\xbd\x17\xaaI\xb4K\xa6\xbb[r\xf7s\xea%\x1e\x8cg\xba\x12\xa46\xa1\x86\xdcb*\xde\x0e\xc1\xe8\x8f\xea\xd2\xd7:\xc4\xadw\xf41}\xcd\xa3\x0fh\xeb\x1e\xfd\xfd\xccx v\xfd\x83\xf7\xc4\xcb\xb3\x0fh\x02\xd9\x8e\xa0\xfds\xbc-@\x96\xad\x01\x952}{\x80\xec[\x04\xda\xc0\x87\xd9& y\xab@\x1b\x97\x7f\xbb\x00\xf7\x96\x11<\x95\xfa\x8d\xa3_\xbe\xf2\x9fl\x85\xf63\xd1\x9a\x87\xfdkR\xde\xfb\x8b\x17\xfd\x0c\x0cnT\x89\x84&\xdd]O\x174\xde@\xa2\x14\xed1!\n\xc4x?\x9c\xce\x0f\x079\n\x7f\xe2.!\xd9\xa3\xf1]|D)\x80\x93\xa5x\x85\xc7\x90\xa6\x80E\x9c2\x88L\xc93;\xea\nJ\xa2\xc2\x9f2\x88T zl|\x84*\x80\x91\xaa\xc4\x8b\xfe\xaf\xb1I\x12\x8b\xb2\xf7\x13\xac\x80\x0fn\x0f\x16\xd1\n|!\xc3\xcfI\xbe\x02\xde\xef.\x8a\xfb\xeb\x03N\xc4\x02!\x8b\x12'd\x01\xcf`\x88\xe2a3\xf1\x0c\x8c(a&\x13.\xc2\xf1[\xa0C\xa2\x84\xc8Z \xd8AQ\xbc\xa4-\x10\xd3YQ\xc2]\x16%@\xe0\x02q\xbd\x17%H\xe4\x02\xf1\xd2B>\x04\xbdL!u\xf1\n4Y\xc7\xbc\x8f\x8a\x8e\xc41\xa0\x88\x12\xd7\xb3\x9c$/\x10$z\x81\xe9d/\x0ei\xce\x01\x88\xe9~F*\x18V\xbct0\xe0\xa2\x84\x81\x88\xc6f\xa5\x86\x01\x17=\x0c\x04[\x12{\x80u.\x9a\x18\x08\x9d]&]\x0cD\x9f\xb5Sic\xc0A\x1d\xe3\xad9RWI\xa4\x91\x01\x94J\x06\xb27$@+\xc3+\xbc\xc3\x1a\x80\x1c\x06\xee\xed\xbfs\xe4\x08\n\xec\xcc\xa1\x95\x90\x95r\x06\x02\xb9\x82rR\xcf@N\xfa\x19\xf0g\x0c\x9aEC\x03\x19\xa9h HG\x03S)i`\x0e-\x0d6b\xf7{\xe5r\xc6\xb3\x07\xcd\xa0\xa7Ad\xf5\x91s\x80f\x10\x9aGS\x83\x88\xe3\x81\xe8\x1d\x9aE(7]\x0d\xcc\xa7\xac\x81\xfc\xb450\x8f\xba\x06\xe6\xd1\xd7\xe0K\x14md6R\x1b\xc8Nl\x039\xc9m \x8a\xe0\x06r\x92\xdc\x807\xdb\xd0<\xb2\x1bl\x8d\xa3\x19\x87\xc4V\x13\xa4\xc0\x81\xd948\x88@,\xef\xd0dr\x1cp\x9bb\xde#\xde\x93\x7f(\xe6\xfc\x9fH\x98\x83m{\xce,D\xa1v\xcc#\xcf\x19 \xe3T:h.\xa2,$:\x90\x9bH\x07\x102\x1d\x98O\xa83\x92\xd6!Y\x89\xe6Q\xec@\x88y\x06|\xb9\x89\"\xe8v\xc0\x950$\x81v\xc7-\xc3\",\x98E\xc1\x03 \x83\x11\xa2\xe2\x81`\xbf\x83\x94<\x90F\xcb\x03x\x92\x18O\xd6\xa2\x1c\x14=0\x8b\xa6\x07|\xdfp\"]\x0f\x84({ \x90\xc1(\x94\xc3\xc8\xf3ac)| \x82\xc6\x07\xb0\\F\xb3\xe8| \x8e\xd2\x07\x92h} \x86\xda\x07\x9c\x83\x86NY\xd7\xb3!\xaa\x1f\x98M\xf7\x03\xbe\x86\x8e\xfe\x9a\x95\xfa\x07f\xd2\xff\x8cDa9\x8f2\x13\x02AfR \xf0f>Bs\x1f\xe5\"\x08\x82\x9c$A\x90\x9d(\x08\xa2\xc9\x82 \x860\x08\xe2I\x83 \x928\x08\xf0\\Hxv\x9cx\x9a\x99P>\xa4h\"!\x88#\x13\x02\xac\x1b9I\x85`.\xb1\xd0H\x16\x92')'\xd5\x10d\xa5\x1b\x82\xd9\xf3!H;\x04\x11\xd4C0:t\x10\n\"\x88v\xb1\xdb\xb7\x01\xb3\xe8\x88\xac\xfdzS\x90jDI\x040\x97\x96h$L4\xc9\xa6&\x02\x1f=\x118\xae\x93\xbb/p\xab\xde9.\x8c\xbd\x16\xb6\xff\x92\xd8\xd5lQ\x1e\xf6\xfe\xdb{\x0d\xec\xed\x93(\x81\xab\xdf\x08 \x1e\x8a#\xe8%\xb8h\x8e \xb8&T\x99Nw\xe4\x10H*\x9b\xf2\x08\"\x9a3\x95\xfa\xc8\x12\xa4]\xabY\xf4G0\x83\x02 \xe6\xd3 Ap\x1c\xb2\xd2!\x01F\x89\x04\x90\x81\x16i$O\xe8\xbb\xb5\xad=g\xa3G\x82\xac\x14I\x90H\x93\x04~\xe8\xcf,\xba$MPO\x9c\xa4S&\xb12\x856)*\xe4Q6\xbb\x8fy\x94\xff\xee\xb4\xa0G\xf9\x1a\x12\xfa\xe8\x8dt|M\xe3#\x1b\xc7\xa0\x1al\xe3\x9fK\xab\x87\xc2}\x9c\xdb0\x0e\xf3q<\xee\x8b\xa5\x9b\x0c\xed\xd1\x85\xccA\xf5(\x14\x8f./\x1e\xc03\x13w\x8b`n\xd11t`m1pc&\x8c-\x8e\xaf\x8d\xc5\xd6\x8ep\xb5h\x9f\xdc\xfb\xc5l,-\x87v\xeaKa\x02\x8e\xb6\xcb\x88\xa1\xc5\xf1\xb3\xb3\xb0\xb3\n-\xab\xc9\xf3\xe0f-\xcc,\xfaE\xb0\xe9\x94\x15';\x1d#;\x19\x1f\xab#b\xf5\xb1\x9a\x84\x8dM\xc0\xc5\xe2\xb3\x9bsa\x08u\x02\xdf*\x14\xe4\x95wT\x1d`r\x05\x7f5l\x1arK\xe1KX\" ,\x06\x0dno\x02w[\xf1}\x90n\xb7t\xdd\x15\xfd\x05\xda\xa3+\xd2\xee\x9bbM\x1f\xf5\xea\x8f\xd8&\xfb\xf9.\xd2S\xd4;\n\xbbbWT\x87\x9d\xacV\x05s\x0c\x01\x19;\xba\xdb\xd7u\x89\x9ft\xdf\xd3\x8e\xab\x90\x7f.\xba\xeb\xcb\xbbvB\\\xff\x03q\xc1\\\xde98`\xba;\xa1M\x8c\xc6ud\xa0\xcaw\xf9?\x96\x85E\x8f\x18\x879\x88\x07\x028n[\xf7\xa4\xe9\x96-\xed\x96\xd7\x94lpXhZ\xb8W\xdd\x11g\xac\x97+\xee\xdb\x17\xf5mw\x11B\x06\x9e\xf3bY\xeeP\x17\xa4\xe9Z\xda\xfd\xc0{\xfc\xd5\xe8G>\xd7\xce_\xea_g\xda\xa7\xc93\x9e2\x98\x02\x19\x01\xd1\xdc\x15i\x8b\xb5D\x8a0\xcb\xcc1R\x93x\x87G\x9d\xd7K\xd0\xc0\xf6\xd0{\x88B\xf6\xfb\x87\x11\x1d2\x84\x99\xd2X\xb5\xb4j\x0f-\xac\xc9^\xe8i\x9d\x08\xdf\x92\x7fn\x0e\xa5\xa4e2\xcc@>\x1e\x88<}Y\xf3\x9d\xdf2\x08\xc5Sl\xe3V\xd6\xde\xf0\xb0\xb0Tz{f\xd8\xb7E+\x9c\x01\x8bF\xc4-Va\xdb\x91Nn@\xc2\xe9\xb9#\xeb\xeb\xa2\xa2c\x13\x96\xb7\xc2\xd8\x81T\xf1|\n\x0c\xed\x14x\xc5\xbf\xce\xbbb75\x80dC:\xfa\x94\xbd?z\x82\xbb\xef\xed\xfdU\x95\x19+\x03\xdf\x94 \xd4`\x08E\xbd\x04\xf6cU28\xe0\x1c\xfbt\xff\xb3w\xbfV\xc5\x8f\xd6\x11\xc5=T\x103\\\x10\x1e\xb2\xc0\xbe>z\xc8\xdc\xdfU\xe1Se\xcd\xdd\xc5\xcb\x9c'\x0e\x0c\x153\xb1b=\x8b\xdd\x9a-\xfb\xd1\xb3\xecO\x99\xab\xe7\xfeq\xd2\xd5M\x9bY\xf0\xb8_\x83\x0bj\xbfW\xd8\x80\xfeo\xfb\x86\xde\xa0\xdbgE\xef\xba\xe5\x83\xb5\xb1\xdf\xd13\xcb%\xfb}f\x89|\xfe\xc9`\xd1\xcc\xa2\xe9M\xb1\xa1\xd5\x9af\x16\xdb\x7f\xff\xe1\xd8D\xf4\x0f\xb6\x11\xd5-m\x96\x923$W\xfd\xc6!/\x16\xbcI\xb0\xd8\xbb\x079\xa5\xb7B\xd2\xb2\xe7\xf4\xe3\xcf\x05\x16MR\xd1\x0c\x03\xa3\xff#bh\xa8\xe2\xbcZ \xec\x863\x03&/\xefZ\x8d\xb4w%1;\xc2\x04\x14\xba\xc2\xbfI\xd3\xe4\x07~\xb8\xff\xe6k4\xceHx\xcbxT~Yr[G\xc0\xc1\x1ay\x19\xb7\x00\xf83}\xdcP\xf8\x0ff\x08\x92\xab\x86\xd2\x81\x89\x15\x91'\xf8+\xb9\x1b\x00\xad\x8f#,v\x94T\xb2\xf5\xa2\x89g\xfb\xfd\x0f\xa4\xbd\x1e\xec\xef\xc1\xcdN[\xca\x9ae\xaa9r\xb2\xbed\xba\x96\xe1\x11o\xa9\xc0Z\x98v\x1a\x97\xb514;M\x9cZR\xb3\xa7\x0e.\x08\xe6\xcd\x1f\xa7^\x10\xd2\n6\x07\xa1Q\xd2\xe5M\xdd\xd1\xa5\xbbq\xa2\x04\xb5\x90p\x8d\xac\xf0\xba\x88\xfb\xf7\xa8\x8a \xb22P\xe2\xbcO\x04W\xa2^\xc6t\"x\x11\xdc\xc6\xaf^.\x7f\xfc\xf0\xfd\xf2\xf2\xdf/^-?\xbe\xfd\xd3\xdbw\x7f~;\xe1\xcd\x8b\xf7\xaf~zw\xf9j\xda\x9b/\xde\xfd\xf8\xe3\xf9\xe5\xa4w\xdf]\xbc\xfb\xd0\xf3\xf6\xbb\x8aA\xbb\x9f\xde\xdf\xf06f\x16N\xc8\xbb\xf9\xb1\xbd\xba\x94\xa1)\x02\xdd\xc2\x96\xb4\xf4\xaaj\xf1\x81n\xb8\xeaP\xfa\xe3\x0c\xdd\x8cF\xc5\xf9m\x9e\xc3Oug\xdd\xe3EJ\x10\xe3\xfc\x1c.\xf8\xe1IJ\xbf\x18\x97%f\x96\x84 \x1d\xa3\xd5\x8b\xd2\xd4\x87\n1\xac\xcc\x12gJ\x88\xa2U\xfd\xdbo\xbc\xcf\xba\xcd:\xb3D\xee\x1d\x90\xb0\x7f@\xd0\xaa\x19J\xc2\xb0C\xe8\x84\x1f\x97(S\xd1, \xa3\x01\x89#\xc2J\xc0\xa84K\xca\xbcP%~j\xaa\x12\xfb\xa1 \xfdcA\xea\x07\x8b4T\xd1Wp\xb3u\xfc(\x1a\xd5\x85<\x18\xdf\xd1\x90\x8f\xc5,\xbd%\xe7\xd6\xf7\xcd2\xa1%\xc1\xa1\x1e\x1a\x11\x88\xf1\x11%e\x1e\xc6\xefO\xfd\x1dp\\\xf5yG \xfd\x18e\xa7\xd5\xd0fu)\xd4\x8f\xa4$B\xf5\xb3X\x80\xdc\x93\x8au\xb1'\xe2~G3\x0eU\xb8CP\x84\x16\x06e\\\x94\xe0\x85\xdeu\xb4\xc2=\xe4f\xf9\x05\x8ds\xdff#z\xbe3Y\x14\x16\xf0\xae*\xc3\x03.\xe2\x1f\x85\xab\x9a\n\x07Vx\x88\x87\xa8\x1d\xdfS}3\x97\xff\x8c\x93y\x18d\xef\xb4\x0e\nc\xd3~<\xad\xc3#l\xcd{dZ\x07\x85\xb0 \x80}\xe0\xa8\xef\x972h|\xc0\x8clW\xfb\x862\xbb\x0c\x8cj\xf9_\xb6\x0dBe\xab\x97\xc1\x9b\xc7Z\xed\xef\xa5\xa6l\xbb\x1e\xe1\xe6\xe1\xeah\x1e\xc6\xbfy4\x0f\x87r4\x0f\x8f\xe6\xa1\xafD\xee\x1d\x90\xb0\x7f@\x82\xd5\x910\xec\x90vf\x1e\xcd\xc3\xa8wb?\x14\xa4\x7f,H\xfd`G\xf3\xd0*\x13Z\x12\x1c\xea\xa3y\x98~\x8c\x1e\xcdC\xad<\xf48\x1f\xcd\xc3/:\xc8G\xf304h\xbfd\xf3\x90\xeb\x14\xcb\x9b\xba+\xaa\xab\xe5\xbe\xbe\xf5+:\x91\x130N\x8f\x18\x0e\x92/[o\xd49\x9eXc\xe8\xfc\x8e\x9d./\xd5\x152\x9b3\xaf\xe4\x05\xf2p\xe1\xae\xae\x94ETF?\x80Nq\n\x18q[3\x19\xdb\xb2Xs\xc8\x03\x87\xfb\xe2s\xa2d\xd6\xceR\xf0\xd6/9\x98\xf1\xf3\x97\xba\xc8\xd6Z\xb8\xf4\x84\xce\x8a\x12Q'D\xd6\x0b\xfd@E\xaa\xfa\x91uCB\xfd\xe0\x88x\xc6KB\x03 \xb1\x11\xe0\x8b\x99\xc6Kl$5^\x12\xfb\x02\x13\xfa\x03\xfeXl\xbcDn\x00\xe3\xa26\x04g\xdc6^\x9c\xd1\xdcx\xf9\x92\x8d\x8b\xdd\xba\xc6%.J<Z\x1c\x1eM\x1e\xebvR%\x10c\x8e\x97\xd8\xc8\xf3h\x81X\x84z8\x1e\x1d/\xb1Q\xeaxq\xc7\xae\xe3%y\xe2\xc5\xb9\xcfTI\x16\x1f{\xe6\xeb\x05\x8f\x94\xc7\xcb\x8c\x06\x85T\x02\xb3\x04b\xed\xf1\xf2\x85\xf6\xce\x14'\x0fL\x1b4H3Y\x862\xc1K\xa7\xca\x84\xd1\x83\x89#\x08\x90\xe8\xbdS%\xc5{2.\xe9+C\x95\xd4\x0f\x0e\xd3?:L\xfd\xf0\x93\xbc}\xaa$x\xfdT #\x1c\xf02a\\&\x8cG<F\x02/\x1e\xe4\x04^\xbeD\xb7\x82\xb8\x06\xbc|\x89\xa6\xe1hm\x7f\x89\x05zD\x0bt\xe1\xe9\xec\x12\x07\x13\xc1\xcb\x97\x18\xce\x10\xd0\x04/_\xa2en\xa8\n^\xbeD\x9b\"\xc0.x\xf9\x12\x8d\x0b\xc0e\xf0\xf2%\x1a\x16\x07\xb8\xc1K\x18\x86\x83\x97\x87\xef\xd7\x14\xeb,\x12\xef\x13%\xcb\xc6\x04\xe1E\x9c\x9c1\xe3\x96\xa8\x96\xa5\xaac\xbf@\x83$\xea\x9e_\x95)\x1aa\xfc\xbd\x9a*GK$a\x0d\x8ar\xb4D\x9c%}I\xa8\x92\xfa\xc1a\xfaG\x87\xa9\x1f\xfeK[\"\x03=V\xec\xc8\x88\x11\xf1'24K0\xad\xa1Y&M\xe0i\xd3W\xedL\xcbmI\xd0l\x96\xee2yb\xc4\xc5 \x9a\xe5)\xf0\x94\xc9\xcb\xf3\x97\xcb\xd7o\xce\xbe\x8f\x8c\xcf\x1b\x97\xb1\x94\xb3\xef>\xbcz\x1b\x0e/4\xcbXHd\x8c\xa2Y\xc6B\xde\x9e\x87B\x15\xcd2\xa4\xe7\x9e=,\xe9\xa6\x97(b\x91m^\x97\xe4\n\x8aj\xc3\xef\xd9Z\xc9\xba$\x17`\x923Y\x94\xe1\xfe\xbb\x10W\xb2\xa1\x17\x86\x92\x1c\xcfc\x96\xc9\xf3y\xf26\x17qqj\x97\xd9\xcdL\xf3\xa4\x8a\x12\x1dSa\x96\xd9mM\x1a\xd2)\xca\xbb(\x82\x99\xf9Cq%br\x99\xee\xa1\xee\x11x\xb4\x81B`'\x88,* RnX\x9d\x9f\xd6v!}\xcc\xa8*\xaf\xb4%\x0f]\xbc\xe9q\xcbs0\xee\x06BX\xa2\xc0\xe8\x83\xa7\xc3\xdf\x93a\xfd\xb54h\x12$\x9cq)'\xdb\xd0\xd6\xf0\xb3\xa9'y\xc2)\x9e\xd0;QR\xfa(J\xf2\x1e7i1NX\x88\xfb\xc3j\x19\x91Wy(\xc9\x83\x05\x93\x06\x8c\x15\xba\xf9\xe6\xf7\xbf\xff\xfa\x7f\xa5\xbc2q\xe0`\xda\xe0\x01\xa7\xd2\\\xef\xbf\xf9\xfd\xff\xfc\xfc\xf5/\xb9\x99S\xb4\x86\x8b\xc3\xaa,\xd6\x7f\xa2\xf7\x86\xb3\xe43\xbdo\xb5\x14yig\xfe\xa1\xa5\x82`\xf7\xa7~\xe1G\xbe\x1d\x1b\xa4e\x96I\x83<\xc5`\xeb}d\xfb\xa6\xa8\x9b\xa2K^O\x0f\xdaF\xd5\xba\x98F%.\xef\xd4\x85\x9d\xb8\x0fN\x18\x9c\xe4\xf5\x91\xb8\x03&\x0e\x10L\x18$\x98\xb6\xf7M\x18,\x982`0u\xd7\xfbr\x0dL\xdf\xef\xb2\xefvS\xf7\xba);\xdd\x84\x81M\xdbA`\xce\x1e\xf7\xe0\xadK\x8b\xe3\xed\xdfJkV\\\x93\x98N^W\xcb\xb0\xa3=\xb2\xf6\xb8ZW\xf7\x7f#UWTt\x19\xa7Q\xc7i\xd2\x11\x1at\xf4f\x18\xbf\x05F\x9f\x10\x91#(J\xc2\x1e\x12}\x1eDw\x1e\x92\x06\x00Rw\xff\xa4\x81\x80\xb4\xc1\x80\xf4\xbd\xfea\x9b\x93\xb2\xb3\xc7\xee\xe9<\xb7`H\x18$\xee\xe6i\xdbQ\xd2\xa0\xc5m\n\xa2L\xd8\xb5\x1f\xa0-i;td\x03\"\xab\x8eq\xdc%\xd6\x18r\xca\xc5\xfa\x87\xde\xb0S\xe2\x05\xc7\x1b\x9cq\xb8A\x08\xf5 |<Ny\x1a>\x86t\x1d\xdd\xedE\x92\x87\x1avE[R\xb2\x01\"0\x0e 0\x0e\xba\x83H\x0b\xf12\x07\xca\xb9\xcb\xb9w\xb4\xec\xfc\xce\x8eKb!/\x82\x18\xde\xba\xf8=\x12;\xa3\xe5H\xecl\x14\xdfe\xa3O\x85z(\x8e\xcd\xa8\xeb\xbf\x88\xc1\xf3_\xe9\xa5^\xde%^\xd3%^\xc8\xc5_\xbdM\xbad3\xbe\x7f\xf0v,\xee\xbe+\xfaf+\xe2SE\xcc\xf2\xc0\xf1\x96P\x89\xffX\x0b\xde*%\xd4\xe4\xe8\x8eqn\xc6^\xf3\xb8/o\xfc\xc7p\xf4\x85\x8c\xe3\xb2e$\x0e\xbdz\xd9\x93+\x99Dl\x184\xa3U\xc3\x03Z&2\xed\x8f\n\xe2\xab\xd2\xbfi\xe9\xbf\xb0\xbd\x04\xdfAx\x04\xace\xd28?\x97\xf3#\xf9\x92\xa9\x0d\xb5\xa8\xe4_\xec\x7fU\xfa\xb1\xb6\xa5\x1b\xf6\x8f\x0brE\xdf\x8b\xe4K\x0b\xf1\xfbH\xc8\xcf\x07\xda\x08$5\x13\xc7F\x82\xc2\xaen;\xa0\xdbm\xb1fJKy\xbf\x80\xf3N\xcb\xf8\xbb\xef\xeem\xb0u\xd7\xf3JW5\xec\xea\x86\x8f\xe0\xa14\x13>\"\xc7]pP\x10\xf8\x98\xcb$\xe1\xe2\xf9h\xf0\xff\xa9\x0e\xbb\x15mD\"-\xde\x14\xcd\x08\xb1\xda\xaf\x0f\x14O\x19\xb6\xe4B\xc6\xd0(63y\x8e\xac\xa2ke\xe6\xab\xa2\x85C%\xe6\xd2\x06j6\x0e\xb7\x854o\xf0\xf5\xe0\xc8\x91\x94\x92xp$B\xb5R\xe5 T\xffF\xd3:\xfe~\xf1\x8d+u\xd3\x90\x05Q|$k\xca\xdb\xd3\xbd\xd389\xe6\xa7bRc\xa0\xf2\x87\"\xe9\xcd\xba\xbbec4\x12m(\xdeXp\xe8\xca\xc1I\xe8\x9c\x83\x97\x8ap\\\xca\xd5'\xfb\x9d\xadt9+2\xc6\xe1\xd2LE\xc5\x957}\x19\xad\xeb\x0dm\xf7\x04\xa74G\x84\xcb\xb6\xbe%;\xf1Z\xbf\xc9\xbd\xa87t$\x17\x13\x89)\xa0\xee\x911\xba\xd2On&;\x86\xcc?46\xef\xf9R\xe6[e{\n\xc5\x16Hu\xaf\xcbm\xc8\xed\xb2\xac\xaf\xa6\x88\xb66X\xf6\x1d$f\x02\x83MBY_]\xd1\x06N\x1ar+\x85?Y\xc0\x8f<\x03\xeeHRUWO7\xb4\xa3\xcd\xae\xa8\x8a\xb6+\xd6\x86%X_\xb5X{\x1f6G\xf5\xae\xbdrs\xea\x84\x0c\x0f\xbf\xc9a\x8d\xbf(^u\x05K\xd5\xad\xbf\xf6\x8f\xc9|\xcdE8~\x8b\xd2\xbf\xfcI\xbdE\xf1wP\x94\xa0k8\xd8YQ\xc2]\x16%\xc2\x1f\x1b\xd1{Q\x02\xe9\xbfE\x89\x94\x16\xeb\xe8aeH\xe4\xddkz\xd5\xf0A\xe0\xb6!\xfb=m\xe0\x96k.R\x81\xf2\n$\xd5F\x9e\xf9\xa4 \x90\x1f\x89\x8e\x18\xf9+\xd9.\xc1\xb7-<L(\xaeg\x1f\xb8\\\x91\x1e\\\xf5\x8aV2_\xb8\xf8\xfa\xa3\x8e\xc9l\xd5\xc1\xf9\xe9\xea\x8fT\xd7\xd9\xe0<\x1b\x12\xa0\xabL\x9e}\x1a\xe6qW\x1d\xd2\x9c\x03\x10\xd3}\x99\x0f\xbc7 \x08\xb4e!<u\xfa\x00\xa8\xc4)\xac\xf72#6>\xe2\x07\xd6p\x9e\xf4\x12\xef<\xbd\xa3\xebC\x87\xe4\x11\x0f5\xf6\xec\xbb\x17\xe7?\n^\x9f7\xf5U(\x116\xa9D~{\xa6\xef\xdc\xf1w-\x81\x8a\xf7\xb2\xac\xafR,\xae\xd8\x03\x8c-\xbe\xcd\xa4\xb3\xab\xa8\xb6\xf5\x94\xb3\xf6lH_\xae\xa5\xa8W-\xf0\xd7yE\xda\xe5-\xa9:\xba\x89\xac9RW9\xeb\xf3\xb3^\x91V\xa5\xac\xa5\x82\xaf\xc9\x91T\x9e5\xe5\xd0>lC\xd6u\xd5\x1ev\x92W\x0coFw\x875 \xc9\x85\xcc^Y\x1e\x1ag6P\xc7\xce\x1cZ \x00g\xf0\xf1\xfd\x9bg\x0dm\xebC\xb3\xa6P\x91\x9d4\xf6\x0fU\xf1\xf3\x81\x96\xf7Plh\xd5\x15\xdbB^\x17u\x92\xf2\x15\xdf\xb4Z\xda\x14\xa4,\xfef\xa6\x0cV\x85g\xec^\xd7%\xac\x0e\xdb-m\xd4\xbaY\x88\xbcD\xa2\x0f\"\xe7\xad\xda\xd6H\x07%%-J\xb4VW\x14\x1e={\x04\xebk\xd2\x90uG\x1b\x91l\xb7$m\x07-\xbd\xda\xd1\xaa_W\x1f\xdf\xbfy\xdc\xc2\x9et\"\xa5.\"\xac\xa7\xe4\xc2jb\"\xb6\x87\xb2\xbc\x87\x9f\x0f\xa4\x14\xa9\xab\xf9HI\xf1|LNH\xeb\xe0+\xfb\xc4*~vU\xd7W%]\xf01X\x1d\xb6\x8b\x97\x07\x9e\x16\xb8\xfa\xf4D\xb4\x9b\x0bl\xaf\xebC\xb9ak\x8cu\x1e\x91\xb5&U]\x15kR\xf2\xd9\x8a\xd5vB\x17W\x8bS6l\x9c\xa6\xe4\xd1\xe2\x113\xdbx\x8e)\x99,\xf8\xc9`\x82\xea\xe5\xbc\x82=\x1b\xc8bMO\xa1\xa3d\xd7\xc2\xa1=\x10\xd6mAL\xb6/\x98i\xae\x12\x0d\xaf\x8a\x8a4\xf7\xec\x00\xc3F\xec~O\xe5F\xcf\xc9\x0c\x91G\xe8\xdd\x9e\x1d\x87E\x07]\xcd\xa3Cd\x82(\xf6\xe9\xe9\x1d\xfftg\xd5\xfd\x02~\xa8o\xe9\x0dmN\xf9B\xff\xf8\xfe\x0dv\xd1(<\x93L\x88\x83\xf7\xb0]_\xd3\x1d\x85O\xd7]\xb7\xfft*\xfe\xdb~:\x85\xba\x81\xaa\x96\xbf\x9e\xf2\x19\xb5&\x15\xd4{\xb1\xf9\x95\xf7\x88c\x8b\x95\xc3^\x92\x1f\xa3u\xd1\xe6\x86'\xe4&\x1d\xec\xc8\xbe\x15\xd3\x83\xb5\x9c_=\xc9\xb3B3\xc2\x81\xb4\xb0\xad\xcb\xb2\xbem\x9f\xa3_\xe6\xd7p\xbe\x1d\xda\xc9>\xa7b3\xec\xbb\xc2\x9d\x82-\xdf\x89P\xba\xbb_\xc3Y\x05?\\^^\xc0\xf7\xaf.e\x021\xd6&\xb1\xdcxjj \xf0\x97\xf1$\xbd\xbc\xdf\xd3\xbf\xfe\xe5\xaf\x88@P\xfe\x95J\xcd\x04\xb1}\x9e\n\"\xbbzsX\xf3\xec\xf4<%=\xa6R\xfc\x1a\xce\x86\xd3N$y&l\x0c\x84glM\xd6l-\xd7\xf5\xe7\xc3\xbew\x10\xadHK7`$\xc7W\xc5\xa5C}|\xff\x86\xb7\x88\xe7\x86\xef\xae\xe9N\x9b\xcb2k6Q\x1d`\xff\x7fS\x17\x1bf\xb4\xa2\xc2Ds\xf8rmx\xfa\xfdS\xf5*\x93H\xbabU\x94Ew\x0f\x15\xa5\x1b\x95\x18\x9co+\xcd\x8dC\xc9\xa9+\x99]\x9e?\xceW\xcd\x02N>\xb6T\x11o\xb1\xd1`\xd3\x87\xed\x0eb\xfe\x90\x8a\\\xe1}]5\x94|fk^\x8a\\<\xc1f\xc2\xdb\xba\xa3\xcfe\xa6\xfbC\xb5\x163\x9d\xb5Z\xee\x12\xebC\xd3p\xbf\xa2\xee\x8fs&\x9c\xe3nH\xdb\x11\x07j\xb7_\x1d\xb6\xd0P\xb6\x87\xd3S\xae\xa1\x17\x9d\xaa\x88\xa7L\xe7\xa7w\xbf>V\xf4\xaa\xa8*\xdc\xc6\xb8-\xbakts\xbe\xdf\xd3\x85\x98\xb7d_\xb4\x8bu\xbd\xc3\xf7\xb7\x0f|\xf5\xb4\xc2 \xc8\x96g5\xde\x0f\xe0Dz^\x84\x17U,\xb7'\xb0\x1b\xb9\x8eTY\xa1\xcb\x9fw\x8b\xc7F\x14\xbb}I\xd91$|\xd7\xed\x9e\xae\x8bm\xb1\x86\x96\xeeH\xd5\x15kK\xd3v\x98b\xde#\xde{\x85\x10>\xff\x7fT\x19\xe6%\xfb\xe5p\x80[\xa7\xb5\xd2QW\xf5\x0dz\xf4\x8b\xee\xc9 \x9b\xa2\x07\x7f:\xab\xee?ivC\x05\xa4Y\x15]\xc3\x16\x96\xa7=r'\x1d #e]]\x89\xf1'\xe3\xcf\xc3\xf6;\xbe-\x8b\xf6\xacl\x95F\xafOi'\xd6d\xbaP\x13\xbb,V\xbc\x91r7n\xa1=\xec\xf7u\xc3O\xb4=Y\x7f~v\xa8\xd8\x7f\xd89&\xbem\x8b\xaf$\xec(\xaf\xb7p\xe8\xc4v\xa2\x96i\xcb622\xa8\xe6W\xb4\xa2\x0d\xa79\x15\x9e\xe5\x9e>\xec\xcc\xda\xbf\xc4'\x19\xd7\xf1\xea\x8e\xb0)\n_?\x87\x0b\xd6N\xb6>e\x93\x89N\xe6\xff\xe27\xbfA\x0f\x95\xd7u\x0d\xdb\xba\x86oa\xb1X\xfc+\xf2\x00\xeb8\xa9\xee\xb1\x9fHu\xbf`\x95\xben\xea\xdd\xc9\xb6\xae\x9f`\x0f-\x16\xd8\xc9Ql\xe1\x84\xbd\xfe\x917\xf5\xb2>\xf9\x15{\xff \xfc'\xba+\xe22\xfe\xee\x1a\x8bo\x02c\xf1GrCf\x0d\x06|\xcb\xf5\x1a&yb\xbf\x8b\xf6\xe4u]/\xd6%i[g\xb7ES\xd8\xe3\xa2\x17\xda+X\x8d\x7fG\xfe\xf6\xec\x19\x9bp\xa1\xb6| ;\xca\xd4\x843\xd1\xaa+\xda\xbd\x147\xcf\xe7U\xdb\x91jMO\x9e\xa45\x12\x95\x80\xb7\xd9\xf1\x0d\x7f\x1b\xf8\x86\x17\xf7\xdd53\xd1\x10\x99\xa2E\xaf\xeb\xfad\xb1X<\xc1\xe7\xad\xf8\x82'\x8e_\xf9\xac\xe6_6\xe5\xc3\xb2\x17\xcf\xc5\x08\xbe|\xf5\xe1\xc5\xfb\xf3\x8b\xcbw\xef\x9f\xe0n\xb9a\xee\xbb\xaa\x11\x159F\xe7w\x81\xd1\xf9\xbeF\xfd-ld\x9e\x7f\x0b\xbf\xda\xaf\x16\xaf\xeb\xfa?\x17\x8b\x056gX\xe3N\x99\xd2\xc7\x9e%\xd5\xfd~\xb5xKo\x9d\xed,\xb6\xfc\xd9\xff\xf1-TE\xe9\x98$\x8eAC\xa7\xac\xeb\xd9Q\xe3\xd1We[D\xbb\x17\x1f\xab\x1di\xdakR^\xd6b\x99\xcei\xe8\xe8\xaf\xcc\xdc\xe3\xe3\xae\xf6m\x9d\x9c|?>]\xc4\xd5\xee\xbd\n\xe8\xe0\xd1\x99#\x81\x8f\x11%\xe8\x19\xb3X\x17\xfc\x07\xa6<>fVF\x7f\xda\xb1\x93P2O\x8eD\x89\x191\xae\xa0?`\xaa\xf2^\xd9Y\xff?{\xef\xdb%\xc7m\xe3\x8d\xbe\xcf\xa7\xc0\xd5\x8bG\xf6\xb3\xe3V\xe4$\xbbgu\x9f\xecY\xfd\xb3\xad\x8d-i\xa5q\x92={rF5\xdd\x9c\x99ZuW\xb5\xbb\xaa\xa5\x99<\x9b\xef~\x0f\xc9b\xfd\x05 \x80U=\xf6\xe6\x12olMW\xa1H\x90\x04A\xe2\x07`r$n\x0dU\xc8\xaeje-)s\x1a\x7f\xf8\xe8\xe1\x98as\xd8s\x8d\xb1\xa7;\xd5\xcc\xd0\x07We\xb9\xba\xcc\x0e\xa6\x1b\xb7\x8f\xeeV\x7f}`\xa5`\xcf)\xd8\xc1\xcb|\xf6\x81~r\xba\xcd\xfd\xdb\xfb7\xaf'\x7f\xd4c\xa0\x7f\xe8N\xfe\xd6J+\xf5ZlL\x12{\xc29V\xca\xb9~\xaf\x8f\xdbl\x92g{\xca@?\xbcQ\x9d)q\x06jw\xa96\x9b\xce\xa88k,\x94\xc9}Ao{\xbf2\x9d\xfd\xf0\xaf\xba\xbb\x1f\x9a#\xee\x00\x9d\xe1\x84\xb7rK\xfb j\x86g\xeb\x8fzewG\xbb\xab|\xab0}\xeat\xc0[u\xa8\xca\xc23\xc9\x9b[\x1aSc\xfa\xc2H\xfd\xf7\xf0\x18\xe3\xd6>j\xa0\x94\xcd\x93_\xb3\xf4\xb8&\xfc\xeb\x0f\x8c4\x1e<\x81\x07\xd8\x8c\x1fvqe\xfb\xf1\xe0\x0c\xe7dz\xf0:\xdbin\xff\xc76\xf5_<\x8f\xea\x1e\x8c\x9e\xe4t\xe3\xd5Us\x98\x18\x8e\xbd\x1d\xb7\xbc\x82\xcfj\xbb\xfd\xeacQ~.\xccZ\xbc\xc9*\xc8`}\xac\xear\xd7\xcc\xd9!\xbf\xe1D;\xb3\xa6\xech\xf6u8\x90\xe6\xa3zB\x15\xd7\x93\xbb$3\xb9\xc6\x1f\xf8`&\xbc\x9bk7\xe5v\xd3\xe4\xe9\xed\xdad\xee\xa5\x9a9\n\xcdMP3E\xc7\xdc\xcc'\xda\xb9 _\xe8\x15\xeeD0\xb9hp\xb7a\x7f\xf9\xcf\xbf|\x89N\xe3y\xf3a\xf8\x11\xdf\x940\xdd\xd7\xcc\x1e\xaf\xbe~\xfcu\xf5\x00\x1d\xe4\xee\xff=X3\xefq\x8d\xf0\x06\xe4\xdd\x85\xe2\xfe\xa0>\xe5\xe5\xb1j\xea\x17\xc07\xe5\xa1A0T\xf0/\xf0\xf8\x0c\xf2\xfa\xa1\x1d\x9a\xcf\xe6\xaf\x93\xdb\x85\x9d\xda\xe4\x99\xd6EcQ\x1a\xbd\xe1\xda\xdd\x1e\x18\xec\xd9\xcf\xa4\x82\x1f\xd4i_}\x9fUu\x03%\xd3\x8d\x181\xb3M\x82\xdf\xff\x1e\x1eOR(\x9b\x16\xea\x13J\x95W\xe6\x8b\xfd\xad\x11s'\xd7\xf7\xe0U\xaf=\x0e\xe3\xe0 ;\xec$\xf65\xdb\xd2i\xfd\xdfA7p\xb0O\x96\x08\xd7/\x83\x03Q\xf6\xc7r\xb8,\xcb\xad\xca\xb0[;jM82\xfe\xc3\xceal\x00\x90U^\\o\x8dW\xf8\xab\xce\xf1y\xd6/\xfean\x8cp\x86Ya\xe7\xa0\xd4uh\x1d\x99\xe6\x9e\xb2\xea{\xeb`\xa3>\xa9\xad\x1e/sIg\x8a%\xdc\xf46\xf3 \xa3\x9e[\x0dj\xc4\xe0v\xc8\x9co\xf2\xc2\xd8\x10\x06Of\xb6 \xf7\xcb\xf3\x1b\xb5\xfex~\x8b\x9cb\xbe\xcfju8\xeb{\xa3*\xd8Y\xcf\x9dCn\x1dM\xe2\xf4\xfaFU\xaaY\x8c\x92\x0b\x9b\xc6\xd3\xdb:N\xad\x0f\xbba\xe4\x9c\xba\x8d-\xdb%i\xf7x\xc7\xa0\xb9\x93\x9ch\x90~\xeb\x1c\xba\x15\xea\x9b\xb2R\xbeO4\xedp5[F\xfc\xac\xbd[N\xadg\xc7\xad\xcb\xc6Z\xd4j\x05\x7f\xbaQ\x07\x95U\xf0}y]\x8da\xb1\xbaMg\xe8\x95d\xcf\x80\xdb\xa9:\xdbduv\xd6~\xc1\x98\xcf\xc3F\xf7\x1b<5]Q\x88\xe0\xd7\xab\xc7\x8f\xcf\xf4\xff\xfcv\xf5;\xf3\xdf\xdf\xb5o\xf9\xc7\xad\x03\x0fR\x0e\xef\x83\xda\xaaOYQC}k\xb3\xdagE\x7f{q\xbd2\xd7\xe0\xfd\xf6\xd6\xd9u\xd5\x83\x1c\xd83\x81Ko\xbf-\x0dn\xd9\x98\x10\x1b\xb5.7jc'\xc1\xa0\xc5\x03\x90c\x10q\xd9\xc7Z\x9e\xdf\xb6\xd0J/r\xb22s6\x02?\xd9S\xbe\x98\xaa\x9f(\xf8\xf9(\xcb\xcau|\x9bW\xc6\x0d\x86\xc0-+\x04o)m\xa9g\x03\xf2m;x\x14S`\x8f\x08\xa1\xd0h|&\x8e\xd0\x0c~P\x84\xd2\xf4\xe24\x83\x9f\xe0b51\xb4\xa6c\x8c\xe3\xf6B\xd2\xe2a61\xd4&_^\x14r\xd3\x83\xdd\xe4\x7f`\x82\xdf\xe4\x03`h\x04'\x81\x83\xc1P\x9c!\xd3\xcdc\xb6\x05M\xb6\xb0\xb9\x16\xc4s\x86g\x86%*\x8c\xcc\x83\xea$\xad8?\xb2\x93\xb2m \xd8#i\xdfR\"\xb3\xe43\xd9\x07\xbfS\xc8D\x0e\xce\x93\xee\xae%\x12\xeb\xc9\xea\xba%\x8e\x00,1\x10\x9fLYXb\xa1>\x05\x1c)\xc3yHR\xec'-\x1c \xfa3\x06\xff\xc9\xefa\x14\x06\xd4?\xfd\xb5R$Q\xa0K\xe3@\x03HP\xae \x16F\x832\xf0\xa0\x01D(\xa7\xd13P\xa1\x1en~\\(\xdd\x1e\xee\xd6X\x87\xb0\xa1\xe4\xae8\xc5\x87\xf2\xf7\xf39\x18Q?J4\xda\xa2\x9c\x8b\x15\xf5\xa1EO\xd1 \x06ft\x8a\x1a\x0dn+\xd4\xa5\x17\x8e\x1d%\xf5;5Kay\x04)\x85!]\x1aE\xba0\x8e\x94@\x92\xce\xc6\x92.\x8b&\xe5\xe0Ig J\x97\xc5\x94\xda\xd9J\xa0J\x97\xc5\x952\x90\xa5\x8bcK ti\x1c\xbe\x14e\x14\xc4\x9c.\x82:e\xe2N\xd17EX\xd4\xd9h\xd4\xa5\xf1\xa8~D\xea\xc2\x98\xd4S\xa0R\x17\xc6\xa5r\x91\xa9\x0bcS\xc3\xe8\xd4\xc5\xf1\xa9~\x84\xaaU\\,\x8cj<J\x15ef\x90\xab\x1e\x9c\xea,\xa4j\xe0\x00I\x98\x14\x92\x94\x17\x1e\x8bc9\xccj\x18\xb5J\xb7fQ\xe4j\x18\xbb\xba\x18zu.~u\xc2\xceX4\xa8\xf1\xb0,\x86\xb5YFH\x87\xe6\xe2X\x19\xe0\xcd \x96\x95\x89f\xf5\x02\xc4\x84\x88V?\x1f\x04I3\x1b\xd7*\x11\x0e\x07\xdbJK\x81\x85o\x15#\\=\x80\xc1 \xcau)\x9c\xeb\\\xa4kpdg\xa0]\x19xW\n\xf1Jc^\x83\x03.\xc1\xbd\xf2\x90\xaf(\xf6u6\xfa\x95\x8d\x7f\x95\"`\x99\x18X\xbf\x10=\xd3\xda\xff<\x07\x0b\xbb\x04\x1a6\xd8\xe4\xc9\xdfgab'\xdc\x10\x8c\xec\xa2(Y\x1fNv&Rv\xda\xe4)rvy\xecl\x18=\xeb\xc1\xcf.\x89\xa0]\x18C{\n\x14\xad\x04G\xcbD\xd2\x8a\xb0\xb4|4\xad\x07O\xebCP\xf21\x944\xa6V\x84\xaae\xe3j\xd1\x0e-\x8d\xad]\x16]\xeb\xc1\xd7.\x8d\xb0]\x1ac;\x7f\x8e\xb0p\xb6<\xa4\xedxc\xf3fv\x0c\x1c8\xa9\xf3\xdb\xa2\x98\xdb\x00\xeava\xdcm\x18yK`o}.\xff\xfa\x1e\xd1\x10\xb5\xd7\xa9O\xdc\x1eP\x8e|\x7f',\xdd\x07b\x81p\xd5\x13=\xb4D\xba\xe7Y\\\x08t\xae\xe3\x12\xc2\xe7\xd2k\xc8Q\x14F\xd7\xcb\xad\xd9\xdaq\x94.\xa7Q\x8b!ui\xac\xee<\xb4\xee\"x]Z\"Q\x98\xdd\xe9\x9a\xefy+q\xd4n<nw\xc2\xc8\xc1b\xfd\xc8\xdd\x85\xb1\xbbK\xa3w\xe5\xf8\xdd\xf08.\x86\xe1\x0d\xa0xcq\xbc\x93\xb6\xf7\x91\xa9>Dk\xd7!~\x8a\xe0\x01\x8e0>_0\xc0\x0bm\xdb\xad\xcd\xdd\xe3\xbe\xacj\xf8\xf4\xeb\xd5o\xffqu\xfb\xc4\x9e\xdal\xb2Z\x0b\x96\xe9\xdeB\xb7\x88\x94e\xb8\xa1\x94e\x18\xc92<\xe91\xda[OO\x9b^\xf2;e\xde\xc4\xa7\x0c\x82\x83\xe7A\xec\xcfo\xabgwv\xffhX\xbd{\xfb<\x08\xb9\xff\xa1\xdc\xa8W-\xb6h\xb2h\xa6\x0b\xc6\x1a\nO\xc6\xfdn\xec\x87\xf6\x14\xd6\xb3)\xaa\xfc\xba\xe8Ae\x05\x0bs7\xcd\xa3k\xbf\xa6\x7fp\x12\xd1\xec\x0d\x8eD\xff\xcdyW\xd0/Ch\x02c\xa5\x05\xbe\x82\xf7\xaf\xbe}}\xf1\xc3\x9b\x17//~|\xfd\xfe\xed\xcb\xe7\xaf\xbey\xf5r\\l\xa1\xff\xd4\x8bW\xef^>\x1f\xd7\x04\xe8?p\xfe\xf2\xcf\xe7?>\x1dW\x02\x98\xb2\xb8x\xfa\xe3\x9f\x03\x0f}\xff\xf2\xdb\xa7\xcf\xff\xe3\xe2\xe9\x0f\xaf^\xbf\xb90\xa7d\xff\xb3/_\xbd\xbdx\xfc\xcf\x8f\x07O\xb4%\x07\xe8\x0e\x86\xcd\x95\xf7\xf9u\xa1\xe7\xd0x\xe4{cb\xfd\x96u\x05\xfa\x88_\xa9\xf5\xf1\x90\xd7c\x9b\xff\xfa\x98\x1d\xb4=\x80\xed\xcd\x06,\xa4\x87\xa7\x87\x92Y\x97E\x95o\xd4A\xefwpP\xd7yU\x1f\xee\xcc}\xd6v\x0b\xf62A\xb7\xc14`\x82\xc5l\xceo\xcf\xcdb\x00\xb5.\xab\xbb\xaaV\xbb\x15<\xdd\xef\xabF)\xd6\x0d:\xc5\xeae\xe7m\x9b\xc2]\xcc\xb7\xc6\x1f\xe8>\xdd\xf0\xb4\xc8I\xd3\xf8m\xfeQ\xf5Y6\xf7 \xbdw0X\xac*\xd6\xe5\xf1\x90]\xdb\xe6\x94{Uh)\xefto\xdf\xbe\x83\xecZ\x1bMu\xe3\x8e\xcf\xb7\xe6\x03\xd9F\xcb\xa6P\x9fa\x9dM\xed1s]\x91W\xdd\xf8\x19\x017\xfe\xca\xc6^\xca\x0f]\xab\xa0*\x1b\x97f~u\xa5\x0e\x08h*\xd3\x1d5@\x89\xcc\x0eOUk\xbb\xbeA!\xd8\x95\xd9\x0c\xe4\xd4\xb6\xf6\xac4\xcf\xfcl}\xc1\xc6\x91{,\xba\x01o'\x9d\xb6\x82\x9a=p\xf4\xad\x83\xfa/3\xae\x93\xa3\xcat\x11>\x99\xfc\xa5\xff\xe5\xd1,w\xf0#+\xd3\x17\xe5\xda\x82\x14\xc6\x80\x9eO\xea`\xed4\xb3,Z,\xb35\x8b\xf5\xb1#\xd0\xaaFy<\x99\xfe\xc9\x1e\xe2\xae\x8e\xc6\xba\x1c\xb4\xcbN=- \xf3\xe5;\x0b\xcb\x1d~\xe3\xe6\xb8\xcb\x8a\xaf\x0e*\xdb\x98\xdd\xb6V\xb7\xf51\xdbN\xaez\xf5\x99j\xefT\xac\x05\xaeLd\xdb\x7fc<\xca\xa6\x8bc\x89\xf2\"\xe9~\xf7kz\xb4\xb4\xca\x9c\x8e\x98\xfe+g\xd4\x10\xbd\xf6\xa2\\\xbf\xc8\x0fj]?=\xde\xae\xe0i\x05\xe5~_6\x96\xda\xf83gvv\xb7\xebe\xc4nS*\x03U\x19\xf7\xf5\xa0~:\xe6\x07\xb7SUm\xe3\xcaO\xdaj0\xc0\x92\xe6\xa7\x87\xf0\xc1\xfe\xdf\x85>\xe4~\xe0\x89\xed\xb7\xff\x18\x12\xdbd\x13y\x12\xfa\xd1N\xb1\xcbl\xfd\xf1sv\xd8T#\xc8RX\x9aOwyQ\xda\xa3Hoa\xc2A\xed\xcaO\xb6\x0e\x8a\xf5\xbd\xe8\xe9\x1b\\\x01\xcd^\xf6d\xfa\xa7\xde\x18;\xab\xc06J\xdbH/_\xbd\x05\xf3\x8c\x13o\x7f\x07\x18\xcb\xf1\xc5\x1fV\xf0N]=\x01\x03\xe2y\xf2\xe8\x91\xca\xf7\xd5J\x19\x93\xf9\xb8[\x95\x87\xebG/_\xbd}\xaf\xff\xfc\x95\xdeW\xc7\x03\xf1\xdcA\x9f\xce\x90V\xe6U\xb3]\xd9\xbdK\x8bt\xa0\x82\xc7\xda\";\xe4YQO\xce\xee\x97\xc7\x16\xfc\xd4\"\x82\xcc\xb9\xd7\x9a\x83/\xfe\xd0s\xb9\xad\xe0\xbc\x04U\x98\xa5\xfd\xf2\xd5[\xdd\xe6\xf1m\xef]y4\xa03d\x97\xd0\x87\x93\xeeB\xfe\xc3\xf9\xed\xf3\xb2\xb8\xca\xaf?X\xc5bn\xeb\x8b1*iz\xad\xfa\xc1u\xf2\xbb\xac\xd8l\xd5\xe1\x83\x1b\x16\xdd\x1a\x8b\x83\xd5\x8d\xdee\xba\xd5\xeb|cv0\xeb\x8bk6\xca1\xc7\xe6\xdd\xf1\xdca\xad\n[\xb9C\xd3\xee\xb8\xad\xf3\xce\xecc\x86\x84:\xa3y\xf5\x83~\xbd\x0b\x0fu\xd6\xa9\xfe\xeb\xd0 *,\xaa\xdd\xfcR\xe5\xd7}\xcbt`_9\xce#\xe4\xd0\xd8\xc6mm\xeb\xf2\xe0a\x1d\xb6\xf6m\xc3\xd96\xffe^\x9b\x8b\xda\x89\xd5\xef~\xe8->\xab\x03L\xa9J\xbd\xc35\xc3\xd3\xb6.\xeb\xf6\xa7\x8e\x19\xffD\xa0n\xebCvq\x99\xd7\xd5EU\x97\x07<a\xb4\xa4\xcc\x86\xdaN\xae\x99\xc93\xee\xe0\xe0\xef7\x8f\x9fk\x05\xb9\xae\x9f\xe5\xf5S#\xa3\x1c_*z0M\x80j{\x84\xd7b\xb57\xe3\x03C\xc9\xd8\xc1\xfa\xf8\xdalA\xaa\xa8\x8e\x07\xd5\x82\xac\x8d\x8d\xb8Q\x1b{\x8bTg\x1fUe\xf1\xc9\xbb\xbc\xc8w\xd9\x162\x13\xd9\xd0c8\\\xa6\xb6\x11\xd6\xcbm\xfcC\x96a^\\\xa3\xad\xd0\xaa\xa7\xbe\xd16\x03T\xd9\x95\x83d6*\xa9\xa8U\xb1i0\x99\xeb\xb2h\xc0\xa0p\xb487\xcbH\xcfe\xb3\x97I\xa3\xa1\x85\x8bt\xb2<\x0773]+\xdcyr]\x1e\xec!{\xe3V\\\xd5\x1d+\xed.\xdd\xfc\xd3M\xea\x1e;\xe7\xb5\xd6\x96\xbe\xbbP\x1d/\xd0\xbd)\xeej\x96\xc8\xafz\xcd2K\xd25\xc2\x1ep\xb5\"\xd0\"\xcc\xb0\x97\xc3\x0b\xfc}\xef\x98\xceX\xe1\xc3\x93\xf6\xacS6\xba|\xc6\xa7k\xfad\x1d<U\x87O\xd4\xe4i\x9a{\x92\x0e\x9d\xa2\x99'h\xbfz\x88=9{\xcf\xca\x8b\x9e\x93g\x9d\x91\xa7\xa7\xe2eO\xc4\x8b\x9e\x86\x97= G\x9f\x82\xef\xe9\x04\x8c\x9e~O\x7f\xf2\x95\x9czO}\xe2]\xe4\xb4\xeb?\xe92N\xb9\xf4 \xf7\x84\xa7\xdb\xb9'[s\x96\xed\xf1\x1b\x9dj\x17:\xd1\xd2\xa7\xd9\xfb?\xc9F\x9fb\xef\xf1\x04;\xeb\xf4:\xeb\xe4\x8a\x9eU\xe7\x9eS\xf5\xc9\xb4?\xd7Fg\xd4E\xce\xa7\xcb\x9eM\x19\xe7\xd2\xe0\x99tl\xa4ZC\xceg\x17\x0eL0\xe3\xf8\xb3\x81\xb5\xd6\xcf\xdc\x0c\xd30\x88Eo\x86\xdbm\xf9\xd9r\x18\xc1/+\xa8\x8e\xeb\x1b\xfd\xda\xb6\\g[;\xf7\x10\xdd\xdb\x8f\xe4\xb2]D\xcd\xd17\x87\x8d:<\xbb\xeb\x9b\xa1=\xc3\xb0o\x14~\x05o\xde\xbdx\xf9\xee\xe2\xd9\x7f fT\xef\xc7\xa7\xef\x9fO\xff\xf8\xe2e\xf3\xd7\xd6(\xf32\xc3\xed1\xfc\xeb8\x1b\xcf\xd6[\x1e\xea\xce\xe0-u\xbfW\xd0t\xdf5\xab5\xb0\xea\x12\x9e\xbe\x7fn\xa5\x98W\xc6\"i\xf5\xc5\xb0\xafO\x06\xff\xea<\xe7\xd5Z\xd9\xf3\x89\xf9\x12\xf2\xae\x16\xc9\x93\xe1?\xdb\xb7\xb5\x0c&\xaf7\xf3\xae\xd7d\xf3\xac\xd1D\xb6o\xed\xc3\xd3q~o\xe6\x9f\xc8\x8fh\x0f2C\xb7\xbb\xe0\"\xa0FC\xe5\xbdG\xf7\xb0\x13k\xc1\xc0x\x7fH\xfcr\xc1\xf0\x8b\x85\xc1{\x03\xe0\xeb\xf8\xd0\xf7\xa5\x82\xde\xc3\xe1\xeeQ\x81\xee\xd1!\xee\xa6\xbf\xe3{bop{tX\xbb\xb5:F\xdc<\x01\xedsB\xd9\xcd\xb5\xd0\xb87H\xb4AL\xf8\xba?T}f\x90:+<\x9d\x1f\x8a>#\x08}F\xf89\xa20\x16\x0c2_6\xbc|\xb1\xc0r:\xa4|\xb1`r_\x18\xf9\x9c\x00r\x14\x7fXs\xc2\xc4c\x03\xc4\xbd\xc1\xe0\x91a\xe0\x08DYv\xc7\x0d\xe4\x0e\x1a\x19\xe8\xdd\x05uc\xf2\xfd\x15\xfd\xedya\xdd6\x8c\xbb\xc7n\x1a\xd0\xbd@(\xf7\xbc \xee\xd1,\x1fo\x863\x03\xb7\x1bA\x0f\x0e03B\xb4\x83\xf1\xc7\x9e\xb0l2 {\x1a\x9b\xc8\x0f\xc2\x9e\xbe\xfb7\xac\xafQ!\xd7\x9c\xceRa\xd6\xfe\xbe\x91\xa1\xd5\x82\xa0\xeaq\xe0\xa8/\x90z~\x08u|\xf04:.\x91\x01\xd3\xc1Pi\x7f\x90t(<\x1a\x15\x167$\x9a\n\x86\x1e\x85A\xcf\x08\x80f\x84>\xf3\x83\x9e\xc9pg$jx\xf29\xe4\x19*\xacy^@3\xda\xa8\xde_f\x85/\x8f\xc3\x95\xe7\x04*#\x81\xc9\xb3B\x92\xc7!\xc8K\x06\x1f\xfb\xc2\x8e'\x01\xc7\xcb\x84\x1a/\x16d\xbclx1/\xb0\x98\x0c)f\x06\x13s\xc2\x88'\xf1\xb6\xd3\xafq\x03B\xc3A\xc3\xccpaF\xa0\xf0\xa0\xc9K\x06\x07\xcf\n\x0b\x9e\x86\x01/\x17\x00\xbc\\\xe8o\xfc\xe8\x92\xe1\xbeT\xa0\xaf\xd3\xd2-`\"\x1a5\xc5\x04d\x10\x10\xa8\xba\xc5c8\xe4\x89CY\xf5\x98u\x11W=\xff2\x82\xc7\xf8\xa8\xee\x1e\xba\xfb\x9dJ\xfdtTE?\xd7<zX\xf2\x84\x81\xf8\x8f*\x8eo\x8b\xa8p\xffv\x07\xa2\xb5 d9k&\xdc\xa0\xf7\x03U\xdc\x86\x94\xacM\xd8q=\xaa7`\xa5bv\xb3\x0c\xae\xf3O\xca\xcc\xd1\x83\xaa*\xe7\x1f\xd0\xc7\xc8\x1e\xc3a\xa0\xe4\xfe`\xe2\xee\xf4\xc2\xd9fw6\xea\xf2cs\x9c\xc4\xa3U\xba\xcb\xdf\xd1\x90uX\x153D^\x10[]\xee\xbf\xda\xaaO\xcaa\xebC\x08\xb6\xf7\xf9\xee\xb8\xcdj\x17\xfc\xc3\xben\xee\xe7he\xceWo\xe1\x87\xc1|\xado\xdd\x80\xf6k\x18\xe8\xe9\xd6\xb4\x14\x0fd[\xc1{Ul\x8c'\xbc\xbem\x9c\xe1\xa3\x18\xb6\xfa\xf6\xc2\xfc\x9d9\x11\xfd\xa8\xb4Q{/\x9a\xaf5\xbb\xafnA?\xb3m\xefY\xd4Q\xf5\x9b\xe0T\x18\x8cN\x17\xb4d\xffYc1K\xee\x9d\x86\x05\x15\xb0\xd4}BX \xe4:\xabFzk\xd0\x07\xf7\xb3ks?\x948\xbb,\x8f\xb5\xc9\x07ln`\x1a\xc3\xaa\x19\xe0A:\xe0I;\xf0\xb6@ \xaf2y5\x83\x84\xd8\x85/g\xbe\xcd\xaa?\x99\x0f\xb5^\xc4\xec6\xdf\x1dwp,\x0c\xb8\xe8\n>\x97\x87\x8f\xf0\xb9\xb9\xc7\xb4\x17q\xf5\xed4\xfap\xaf\x0e\xba\x11\xabQ/\xa6\xa9\x98g\xf7\xe1\xdb\xac\xfa\xb1\xea\x1a\x9c\x0d\x922g\xeb\xda\xde\xda\xbb\xec\xcc\xaeA\xf6\xba\xd53\xc0\xf6\xc7nJ\x9a\x7f\xb5\x1b\xc9\xac\xa1\x9cV\xf3 \x05 \xbc_{\x91\xd5\x99\x05\x90\xdeY|\xe7A\xd5\xc7C\xe1\xc2\xa9\x9d5an\x91\x8d\x13\xbb\x97a\x1d^\x8d\xfd>?\xfc\xf8\xfe\x1c\xb9^\xdc\xaa\xe2\xba\xbe\xd1;\xc0U~k\xe7\xb9q\xf9\x19m\xa6\xf6\xd9!\xab\x95\xfd\xba\xfd\xa8\xde@\xb5A\x83'Il\x1bPM\xce\xe7}5xnQZ\xda67n0m\xa0\xed\xcb\xbdY\xe3\x9b3\x03 \xd0\x0dR\x07S\x98\xc3\x85?\x8e\x186\x9as\xfc\x9dK\xb5\xce\x8c\x03\xa6\x86l[\x95Cs\xff\x87\xeaz\x18M\xa9M\xff\x1e\x83I\x99\x0e\xef\x98\x86\x87\xee\xfb\xf2z\xf8a\x13\x98\xdd\xd3.\x9e\x11\xf4\x89\xb3\xdf\xc6T\x9d/\xd8\x05Kt&\x90T\x9d/U\xe7\xfb\x19\xab\xf3ET\xdehjl\x8c\xf89E<\xfa3\xba+\xf4\x9e\xe9+\xd6\x9fI\x99\xa4\xaa\x07\xa9\xea\x01\xca-U=\x80T\xf5\x00\xff\xceL@\x89c\xc2\x80\x95\xa0o\xb2\xa1&\x96f\x00N,\xcd\x80\x9d\xf8\x16\xba\xa7\xa9\x8b\x01R,-\x0bK\xb1\xb4\x188\xc5\x12\x0dQ\xb1\xb4\x18P\xc5R\xaaz\x90\xaa\x1e\xd8\xfb\x8dT\xf5\xa0G\xf3\x003\x13vu\xaaz@\x83l,Q\xb9\xf5i\xc0\x8d\xa5T\xf5@\x06\xd0\xb1\x94\xaa\x1eL)U=\xa0A?\x96\x18\xd0\x1fK|\x00\x90%\x12\x06d)U=HU\x0f,- <\xb2\x94\xaa\x1e\xa4\xaa\x07$\xc4%U=HU\x0f\xa89B\xc2\xa0\x1av\x11U\x0f\xc2g\xb1\xc1\x1d\xfb\xd4\x11\xe9\xee\xe7\xbbG\xccD\xd1k\xda\\\xb9\x8c\xb8=-\xee\x90D\x99\x81\x98y\n\xae\xc1H2\xeb\xde\x19\xc16(\xbc\xc6y\xbegC4\xac\x9b\x7f\x8cw!\xd2\x01M\xf8Z\xf2y\x1c6\xaa('\x89^\xbdw\x02\xe3\x16\x05\x1f\xf7\x83n\x00\x9e\x97y?\xf1u]~TE\xb3?\xd8&\xb9<\xd8Z\x1b\xe8s\xba\xf9\xf0\xc8N|\xfd\xe6\xfc\xe5\x13\xb3\xaf5\x80\x88\xd6o\x9e\x15\xf0\xaa\xa8\x9be\xdb\xde\x96\x0c\xd6\xae\x1d\xa4\x01\xbf*\xbf.\xb2\xfaxP\x95K\xdb`\xac\x99\xeb\xf2\xba4k\xa5\x07\x86\xb0H\xbd\xe6\xb3\x13T\x86\xd9\xa7\xf2\xfd\xaf\xdc\xc3\xfb\xbd:\x8c\x87q$.\x97/\xd9<\xdbr\xb4@\xb5\x11$\x0e\xf6\xd9\x9d\xd9\x87\x9a{%\xf7%\\\xde\xe7\xf9\xbeEd\xe5\xfb\xee\x96l\xa7\xea\xec\xab\xbe/\xaf\x15\xaew\xdd`\x980\xf6d\xbe,7H\xc2\xb4r\xd3&\x00o\x92\xd3\x9bKBs\xf9\xdf\x93e\xd7\xcc\x91\x14Yx\x14\x97\xe7>\xf9\xf2\xea\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe\xbc!%_^\xf2\xe5\xd1\x16G\xf2\xe5%_\xde\x80\x92/\xaf\xa1\xe4\xcbK\xbe\xbc\xe4\xcbK\xbe<H\xbe\xbc\xe4\xcbK\xbe\xbc\xe4\xcb\xeb\xd3\\?M\xf2\xe5%_\x1e5G~>_^s\xbdn\xe3\xa7\\\xa5\xd4\xf6\xaf\xf6\xd6\xc3F\xda\xd8\x08G\xd5\xbaWF\x9c\xba\x82\x12c\x11\xd9*\xbc-O\xeb92\xe3\xd3\xc4\xff\xeb\x99f\xa33\xcb+S\xc5\xa4)\xe2;\xe2\xf3\xf4X\xdf\x98\xa4\x0b\x93*x\xbd\xdc\xdb\xb6n\xef\xf9\xed\xc3\xaa\xe7\x12Z\xc1\xcbl}\xd39\x86\\\xb2\x85\xc6E3)l\x96\x99I:\x8d\xc1\xaa\xdbj\xb2z\x972;\x94^\xb7\xa6\xda9\xe45\x94\xeb\xf5\xf10\x8d\x11}f\xc2{?\xa9\xc2\xad\x10\xf7\xde\xb8A_\xb8K\xde\xb6\xb0\xb0y\x0e\x1f\xb3\xc9]\x90\xc9j}\xa5\x0e\x07{\xf5\x969\xd7L\xbe3\xe7\xea.\xc1\xc4>\xbb\xb3\xbf]\xa9\xb1K\xd4\xd1\xe7\x9br;-\xb4\xd7\x8f\xad\xef\xfe\xbcS\xbb\x12s\xcf\x88\xc3K5#\x17\x19\xdc]\x08\x14e\xad\x1e\xad\xcb\x9dq(\xd8 \xe9\xc6\x07F\x0e\xa6\x89\xe4\xff\xf4\xf4\xdd\xebW\xaf\xbf}\xa2\x95\xc3z\x9b\xdb\"\xcc\x9a\xbd\xcd\xe7\xb0\xbd\x03u\xdbd\x8bW\xb7\xb5\xbb\xf8/\xcazZko\x9dm\xb7Fa\xeeJ\xb4\x84U\xafP\x85}\xf2\x83n\xf8\x07\x17\xcf\x0b_Tj\xcc\xd2\xa55\xbf\xce\xeb\x9b\xe3\xa5Q \xd6M\xf7\xa8\xf3\xdf=\xca\xab\xea\xa8\xaaG\xff\xfc\xf8\xeb\xaf\xbf\xecK]\xcf\xb9\xf2X_\xd8\xa2\xfcL\xf9\xd3\xa5m'\xb5~\x9b\xef8O\xdf\xa5 :\xb4\x1fm\xac0\xab\x94m\xa4}/o\x84Q\xfaE9\x9e\xbd\x97\xad\xb7\xd0\xda\xa8F\x8d\xdfd\x83\xd5\xaenkUTyY\\\xd8k\xff\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfd\x1bS\xf2\xfe%\xef\x1fmq$\xef_\xf2\xfe\x0d(y\xff\x1aJ\xde\xbf\xe4\xfdK\xde\xbf\xe4\xfd\x83\xe4\xfdK\xde\xbf\xe4\xfdK\xde\xbf>\xcd\xf5\xec$\xef_\xf2\xfeQs\xe4\x84\xde\xbf\xe6V\x7fr\n\x9b\xdc\xb0\xdb\xab\x9b\xf6\x1c\xe6\xfej\xc6s\x9d\x15\x9d\xd7\xe5r|\xc20\x97\xf7\x13\x97\xdc\xe7\x1bU4\xea\xc8V\x9b\xe8\x7f\xa7(k\xa8\x8e\xe6\x9eA\x15\xf5J\xcfKm/Y\x05V)S#{\xc8\xces;\xacg\xe9:+\x1e\x9a\x93\xad\x0d<\xdcX\x07\xdb\xc4\x13a\xaa\xdb\xda\x82\xd1=&EY\\\xac\x0fy\x9d\xaf\xb3\xedEr;$\xb7\xc3\x80\x92\xdb!\xb9\x1d\x92\xdb!\xb9\x1d\x92\xdb\x01\xa1\xe4vHn\x07\xda\xe2Hn\x87\xe4v\x18Pr;4\x94\xdc\x0e\xc9\xed\x90\xdc\x0e\xc9\xed\x00\xc9\xed\x90\xdc\x0e\xc9\xed\x90\xdc\x0e}\x9a{\xa5\x9c\xdc\x0e\xc9\xed@\xcd\x91\xe4vX\xdc\xedp\xd7\xce\xba\xfc\xba(\xfbAR\x83\xd3\xe9\xf9\xed\xb3^\xf24\x93H\xcd\x14\x11\x1d\x94\xdd\xd4\"\xc8\xb6\xdb6\xb0J\xff\x17\xcaO\xaa\xbd\x12\xcb\x8e\xf5M\\\xf9\xda6\x92\xaa}\x11\x8b\xfeh\xf9\xb7)\xed\x8e\xf5My\xc8\xffj\xd7\xd7A\x99\xbav\x81|o\xfd\x19\xe5\xae)\xece\xaa\xed\xd2\x99\x0bJ\xda\x95\xfa@\xab\xa5z\xd5\x06\xc9t\xd1[QI\x14'w\x1atm\xd1a\x89\xdb.\x9f\xe0 4\xae\xf7\xf7\xe6R\xb7^\xdf4;fSt\xb0\x0dg\xeb\xb1\x1bF\xc5u\x91l\xc3\xd0\xb5\xbal\xcaV\xae\xcb\xa2P\xebZ\xab\xab\xf6\x83&\xeb_\xbfHX\x8f\xe16\xff8\xb0\x14B\xe5j\xb5\x89VVfn\xd8\x994\x9a\x9an\xb4\xf5!g\x93\x1d\x1a\x03\xa8\xbd`\xbb<\x94\xd9f\x9dU\xa6q\xc3\x1c\x84x\x96\xc1gm\xf2\xc0\x9a\xce4\xe8\xa2\x04\xa3\xc6\x9c\x9d8\xb3\xf6x\xd9\x02\xd7a\xd4\xed\xd2\xa2\x9e\xb5\x90WmI\x8f\xda\x82\xde\xb4\x80'm\x96\x17m9\x0f\x1a\xe5=\x8b\xf4\x9cE{\xcd\xecM=\"-\xaf\xc7,\xda[fM\x98 ?\xaf\xa7l\x8e\x97\x0c\x8e\xfb ?\x9f\x87,\xc6;\x16\xf2\x84\xcd\xf6\x82\xb1<`\x12o\xd7,O\xd7\x0c/\x17\xaaV\x16\xf5f-\xed\xc9Z\xd0\x8b\xc5\xf1`-\xe8\xbd\xf2{\xae\x16\xf5Z\xe1\x1e+\xc4\xc4\xc7\xb4T\xac\xa7\xcaz\xa5&\xec0/U\xb4\x87\n\xf5N\x05\xb6\xe2\x80W\x8a\xda\xa5\x97\xf2F\xf9=Q\xa1\x16\xcc\xf3@Y\x8f\xd3\x80!\xe6}Z\xc4\xf34\xcf\xeb4Y%\xd3\x0dwIoS\x8dx\x9a\xe6y\x99\x08'\x8a\xd7\xbb\xc4\xf0,a\xd7\xac\x12\x8f\x12\xf6\xfe\xdf\xf0\xbeGz\x91x\x9d\xa7\xbdG\xa1\x9e2\xbcF\"\x8f\xd1\xf4^\xdc\xef)Z\xc2K4\xc7C\xe4\x19\xadh\xcf\x10\xe1\x15\ny\x84\xc2\xde \x8f\xf0\xf8^ \xda\x034\xf1\xfe\xcc\xf2\xfc\xb0\xbc>\x12\x8f\x0f\xc3\xdb\x83\xbaM\x90\xcf\xa2\xcf\xd1\xde\x9d\xb9\x9e\x1dO\xf3\x06\x7f\x9b\xe5\xcd\x99zo\xe6xnPO\xcd,/\xcd\xd4+\xb3\xacG\xc6\xef\x8dA<1Kya\x16\xf4\xc0,\xed}\xe1z^\x18^\x17\xb6\xc7\x85\xe7mA\x1c\x13\xd8W\xb9\xb7\xe7\x94\x87\x85\xed]ayVF\x8d_\xd6\xa32\xcb\x9b\x82yO\x96\xf4\x9c,\xe95\x993\xde\x0co \xed)\xe94\xbc\xff\x9c\xe0\xae@#R\xb2y\x92\xb0E'`\xf3\xa4\\[2\xdd\x1a\x96j\xad\x96\xa7Y[0\xc5Z#\xa7\xc1\x9d\xc1\xac\xd4j\xd3djH\"\xb5a\x125\xf4\xf4\x1b\x9a2K&N\x9b\x934\xadI~6j\xdb aZD\xb2\xb4\xe8Di\xbe$i\xa8|=\xc9\xd10\xd7\xd8\x92I\xd1\xa8\x84h\x81\xa8\xa4:\xf9F\x06\x94|#\xc97\x92|#\xc97\x92|#\xc97\x92|#\xa3\x9f\xa8]:\xf9F\xea\xe4\x1bI\xbe\x91\xe4\x1bI\xbe\x11H\xbe\x91\xe4\x1b1\x94|#\xc97\x92|#\x8e\xb8w\xe5\xc97\x92|#cV\x02\xdf\x08\x16=2'r\x04\x89\x15Y0N\x04\xb9\xdb\x9b\x95\x96\x8a\x9b\x92*]\xfe\x0e)]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5o\xba\xfcM\x97\xbf\xa3\x9f\xa8]:]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5\xaf\xfb-]\xfe\xa6\xcb\xdft\xf9\x9b.\x7f\xd3\xe5oC\xdc\xcb\xc0t\xf9\x9b.\x7f\xc7\xac\xd2\xe5\xaf79\xd0\xc2\x89\x81\xb0\x0c,/\xd4\xba\xdc\xa8\xa7\xbb\xbc(\xdf\xa9\x9f\x8e\xaa\xaa\xd9\xf9X2\xfd\xd2\x85\xbd\xbf`\xc2\xa7\xdb\xd3\xe7\xa0g-|\x1ak\x8e\xeb\xf0\xa1\xf9\xa7Y\xad\x0e=\xff^\x1d>\xe5k5\xecG\xc3\xec\xdd\xdb\xe7\xcd.\xd8\x9aK\xef\xf3b\xad\x9e@\x07\x0c\x87_\xaf~\xfbO\x1c\xc9T\xfb\xb2\xa8\x94P4\xffU\x95E@0,\x19\xd8\x0fwBh\xfe}\xcfR\x90N\x8d\xfa\xf6B\x0f\xf5\xc4#AM\x8b\x89X\x1c\xa3V\x00\xd9\xe7i\x84DX\x901\xf3ha\xe1 gO}\xdb\xc9\x8d\x99\xb5\xeb\xfc\xf6\xa1O\x80\xae\xe3\x1b\xd3\x98\x8d\\|\x8c)\xe8\x843\x12\xe3,\xe1\xbd,fj\xa6\xc8\xe57\xfd.s\xea\xf4^\\h\xfe\x0c\x9a\"\x9cD\xa7\xd0\xceH{\xb8\x9a\xe9T\xc2\x91N\x8d\xd3\xac\xad\xc1\x1e\\\x822M\x0b\xaf\xaeA\xf3E3la\xf9 \xe7\xd5\xc9T\xbb\x15\xda@?\x99\xb7+\x9e\x1c\x19\xd3\xd1Ii$O\xb6\x14kUl\xd4a\x97\x17\xf5*\xbb\\\xe7\xab\x97\x9fT!\x98y\xfa\x91\x90\xd0\xb2\xba>\xe4\x97GD\xb6\xcb:\xf2?\xaa;\xb6\xe3@\xe6f\xc8\x8b\x8d\xba\xc5\x9f\xbe,\xcb\xad\xca\xfay \x07\x03jD\xf9\xd4 \xc0\x86\xb7Vyq\xbdU\xba\xb9_\xd9\xf3\xfd>\xcb\x0fg\x90UU\xb9\xce\xcd\x1dws8\x07\xa5\xdf\x0eM\x13\xc3\xde\xfa\x01+\xc8:\xff l\xd4'\xb5\xd5b\xb2 \x16\xeb:[\xdf\xf4\x8f\xf7\xbd\x94\x8aP\xb7\x9a\xab\x99\\\xdf\xe4\x85\xb98xfB\xfc\xb4m\xef~y~\xa3\xd6\x1f\xcfo\xdd5\xd2\xf7Y\xad\x0eg\x83\x8c\x88\xb0\xcb\xee\xb4\xb9\xff\xd3Q\x1dr\xb5\x81cer&\x9ac\x84\xe9\x8e\x99\xf6\xe8\x8ck\xc5\xc4\x9ez\x83\x11GFo4\xca\xc8\x13\xa3\x91\x9d\x8e\xe9)F\xb3\xd7\xfb\xf5\xe1n_\x97\xab\xb7&\xca\xf4\x0f\x8a\x9f4Rm\xbe\xfe\xdd\xef\x1e\xff\xb3\\[Uj\xbd\xff\xfaw\xff\xf8\xf1\xb1\xf4\xd5\xe6\x90\xda6\xb5\x89\xa9\xb6z\xe9\xa3\xba\xabz\xceQ\xad\x98\x8e\x95\xb2]\xffc\xb6\xcd7Y]\x1e\xaaa\xdfk\xe3\xd65\x93\x8c\xdd\xed\x1b\x95m\xd4a\xdc\xf4\x91\x8a\xc0\x15D\xe39\x1e.\xe3\xa6S\x97Y\x95\xaf\x9b\x90V\xbd4\x86\xcf\xe0j\xc8\xaf\x88\xc0r\x1a\xff1\xa0`\xc0\x1f\x8ak)\xdb\xef\x97c\x17v\x8c>\xd7\x0b\xbd\xa8\x8e\x15\xac\xb3\xbd\xcb\xfajp%\xcd\x9f\x0f\xc7\xad\xaa\xcc\x1071\xbc\xf6\xea\xc7Io\xc4\xaev\xb1\xc2\xe6N\xe2l|\x0f\x93\x17\xeb\xed\xd1^\x1em\xb7\xbd\x07a\x93\xd5\x99\xee\xdbqm\xdb\xe0.\x85\xed\xd7Q\xacTO\x01>\x9cdI\xae\xea\xacn\x0c\x1a{\xcf\xb4\xcb\xd67y1\xf0\xd7\x9a/_\xe4\x9b'\xc8\xf8O\xc4<\x8e\xaf\x0e<\xda\x8d\xc6x0\xea|\xa7\x84,6Y\xad\xbe\xd2\xef\xf5~5\xb7\x9dFx\x9e\xd6\x8bf\xefMV\xddD\xce6\xc4\x0d\xbf\xcf\x0e\xf5E\xa5\xea\x8b\xf1\xdau\xe4m!\x04[i^-\xeb\x0c\xad\x1b\xe9\xb8\xe6E\xad\xae\x07Y\x89;\xf2\x8d\x89#\\\x0c@\x89\x02\xc2\xe2\xe8\x14iv\xa8+U\x7fg\xa4\xf2+\xe4\x01\xa3\x19_\xbd\x18\x0f\xf3\xba\xdc\xed\xf2\xfab\xda:r\xe6LZ\xd3|H\xb3\xb2k\xca\xaea\xbd\xf4z\xcf\xe9\x7f.\xf0\xb9O\xed6\xb0\x00\xb3q\xdb\xdb\xcc\x16\xd9~\x0f\xe5\xb1\xde\x1f\xeb\xeeo\xfb\x83\xfad\xbb\xd6\xe3P\xa8\xdb\xfab\xd16\xb5\x1ar\x01^\xd9~\xbf\x00\x173_\x1a4\xd8\x02\xec\xd4\xa7|\xa3\x8a\xb5Z\x80U;~\xdd\xb62\xdaw\xf5\xc2/+u\xb8hR\xa8\xcc\xf9\xde`\xc3\xb3\x0bn`\xbd\xb4\xdb\x8c\xbdyv\xa9-\xf4sn{\xd0\x8b \xca\xec\xa8o\xd1\xa6\x8bJ\xea\xa2\x9a\xc6+\xd9\xf0\xf6~~\xdb\xf8\x0c\xdc\xc5\xbc\xd95\xad\xdb\xc0\xee\x91\xffj\x05\xb0\xfa\xcelp\xff\xf0x\x023x\xfd\xe6\xfc\xe5\x13\x0b\x86\xddnu\x07\xe1F\x19\xdf\x84\xb2\x8b|\x05\xf0'\xf5\xf0\xa0\xe0\xbf\x8eU\x0d\xd9\xf5A)\xbd\xc1\xa3@D\x9b\x82\xc7\xb8\xc7&\xdf1 \xe6\x9d\xca\x9c\x97\xc36\xeb\xe9~\xff]V\xdd\xc0\xa6T\x168gM\x08\xd5\x1c2\xea\xdb\x1e\xa2\xac\x99d/\xb4-1\xf0^V\xca\x82\x99\xfb'\x97\x86\xcf\xc69\x85\xfb\x1a\xc3M\xfd\xa8)0}\x19\xe2\xe6\x81\xb8\xb4\xf2\xe6h-\"u\xf1\xa9\xac\xd5\x05\xde\x10K\xc1]\x98\xda\x87\x01\x0c\xff\x0c\xff\x8dd\x0e\x8c\x0f\x80c\xe3\xfd\x95\xb1/[R\xc5q\x17b\x03\xf0\x15\xbc\x7f\xf5\xed\xeb\x97/.~x\xff\xed\xc5\xf9\x7f\xbc}y\xf1\xe3\xeb?\xbc~\xf3\xa7\xd7\xc2\xb7\xde\xbe{\xf9\xc77\xe7/\xe5o=\x7f\xf3\xc3\x0f\xaf\xce\xc5\xef\xbdy\xfb\xe6\xfd\xd3\xef\x03\xaf5\xde\xbf'\x11\xfd\xa3\xe0\x94}z\x9f_\x17j\xf3Cu}\xde\xf8\xa0-\xe8\x1b\x9ab\x12='u\xa0:\xaa\xa3v\x8b\xf0\x94\x88k\xc9+\xff'\xf0\xc7\xb2F\xe0\xf5\xe4\xdbV\x9eO\xe0\xad\xd9\x8c\xb2\xad\x9f\x05v\x1a\x18\x12srRV\xa9\xa5Cy,6\xf4\xd7B\xe6\xaf\xa5\xde\xe7~\xf3\xb5\xf79\xfch1$\xc6\x1a\x07\xe6:\x87\xa0\xf5\xdd\x11S\xa4@Y\xe4}\"\x8f+Cb\xf6\x1a\x04=\xd7\x148\xd8\x8c\x1ed\x8e\xb3#\xde\xf4r\xc4\x19\x04\x90\x0d\x04H\x06\x83qXB\x1f\x9f\x1e\x9d\xc6\x8f\xedTUg;\xe4R\xa5\xf7\x10\xafS\xa1s\xf9\x90\xda\xd3\x06n\xd3\x0eI\xf8\xf5\xa0(\xbb\x0f\xa37\xd9}\xe2\xce'\x9e\xdeh\xf3#\xd2\x9f\\\xa6\xa7\xb2mJ\xef\n\xbdbCM\"\xbaVZ\x90\x9b[\xa6;\xa3\x13\xf2u\xbe\xcfjoArKy\xd1;\xd08\xefL\xf0\x8d\xde=\xb15o\xbdO\xb7\x80\xa0_\xb0,\xdb6\x0e`\xa3\xcd\xb9\xdc\xdd\xcd\xad\xe0M\xb1\xf5\x15\x8b\xb7d\x032\xec\x15\xa3\xb2\x17\x1ea1\xbaD\x9f\x0c\xf1]\xfcO\x98\x94\x9d \xe9\xe9\x19\xe4\xd6\x9f\xbahLe\x9f&s\x17\x99\x9eA\x06z`\xb1\xc1#\xc7\x87+ #\x9c\x16\x8d\xa8\xed\xca\xfdA\xe9\xb3\x07\x0c>g\xferu(w\xb4J4}\xf5\xf7\xaag|b?\x9bc\xcfe:\xf6\xa4c\x0f\xa4c\x0fJ\xcc\xc9\xc9\xb3K\xd3\xb1\x07\xf8\"\x05\xfe\xfe\x94\x8e=\x03\xe2\x0c\x02\xc8\x06\x02$\x83\x91\x8e=\xdc\xaf\xa7cOC\x92m*\x1d{\x16\x96e:\xf6\xe04C\x90\xf4\xf4\x0crK\xc7\x1e\x9c\x16:\xf6\x98}\xfa\xe2SY\xe7\xc5\xf5\xc5\xbe\xfc\xec7\x18\x18\x13\x8a\xde\x9b;E~\xfao\x91{\xa4\xe0+\xa1\xbd\x913\xf4/\x9c\xfbN\x8f\xff\xcb\xc6y\xd792\x9d;\xcfz\xad[!\xa1\xac\x9a\xf3G\xfd\xb9\xd4\xef_ms[i[\xcf\x18d\x8c\xb7\xda\xaa\xbf\xb0\x850.\x0cz\xf4\xe3)\x9d\x87\xbd\x16]x\xa0s\x96\x18f'\xf5-h\x85\xc10u\x19\xdf\x03\xe67\x01A/\xe2\xc4\xfc(\x08>\x0c>\xfc#N\x1cT\xa4\xe7M~\xdbA\xd8~\xf0\xe3*qb,\xd41\xb9\x85\x8bb0qB\x91\x998\xddG\x838jeL|\xc4'\x8b\x1d\x8a\n\xa5p\xa08I\xd0\xa1,\x86c\x04i\x183\x8a\x13\x07I\x8a\x13\x8e/\xc5I4Y\xe8k\x18G\"\xb6\x9c\xfd\xb2OS4\xab\xe7\xb9\xb8F\xd0GMG\x01<,N'\xd6[\xdc\x0b\x05\x90\x0b\x07\xf8\xe6xG\xc2\xdb\x1eGB)A\x84\xa4\x00\x04\xb7@\x8e\xb8\xa7\xf71\xc9f\xb7#\xc9`B\xdc\x80B\xcc\xa0\x8ao\x8dF\xafQ\xb7G\x8e\xc2(d\x9c\x842\x10\xf6\x9d\x87c\xc6\xc9\x83n\xc6\xe9\x94\xdd\x08b\x91q:es\xf0\xac\x14~\xe2\x02\xb1Y\xcc\xc6`m\x9ch\x087N\xa7\x14[\x08\x04\x8e\xd3)[\x83\xc3\xc8q:e;\x08 :N\xa7lP\x00\xca\x8e\xd3)\x1bC\x83\xe1q\nC\xe4q:]?\x16\x00\xd9\xe3d\xb7\x1a\xaas\x02\xdbDb\x93\xfcB,k\xd2\xf1\xe9Hj\n\xf1\x1c\x1a\x8e\x92I\xed\xa5dR\x1b\x92MkG\x92\xc1\x84\xb8\x01\x85\x98A\xbd/\x93\xba\xab#\xcd\x91\x82\xed\xfd4r\x04'4\x9e\x04'\xf1d\x94OE\xa7A.\xae\xb6\xd95\xf7\xa5\xc8\x01\xa7\x01OC\xfa\n\x9e}\xff\xe6\xf9\x1f.^\xbd\xb8\xf8\xe6\xfb\xa7\xdf2\xc0Ac\x1asx\xfa\xec\xfd\xcb\xd7a<\xd3\x90\xc6\x0c\x18\x80\xa8!\x8d\x19\xbc~\x15\xc2E\x0d\xa9EI\xcd\x13\x83\xec\xdc`\xc9.\x94\xcd7\xdb\xec\x1a\xf2bc\x9c\x1eM\xa5\x02\xb7\x88H\xc0\xd4\x90:\x07b\xce\xbf\xba\x14\x82\x15\x86\x145G\xa3T\x12\x03\xc51\xa4YM\xe3_\xbbYb9\x9a\x874\xab}l\xd1\xc5\xdc\x8d\x03<7\xe6\xe7\xfb\xfc\xda\x02\xfa\xf4>\xef.\x8f\x8d[\xd6\x85\x0d2\xd9\xe5\x05d\x0dO\xea\xc2X\xda^\xcbu\x18\xe8\xd8\xfa\x08m\n\xc5\xc6\xec\xfe\x9c\x11\xa8\xc0\xd6\xec\xae-\x96!s\x11\x93\xddq\xdb\xdf\xfan\x0dU\x8a\x81\x0d$\xf7\x1b\xee.\xd3\xb5\x8d\x9ay\xfc\x1d\x94\xb9{2{b\x89\xdb\x1fK\"=$^H\xc2E\xb4?^^ y\x96p\x12 \x05\xc4\x82\x01,\x0d\x0eEb\x01\x81\\H\x80\xa7\xd9\xa1\xe8~\x9a&\xdd\x9d\xb9\xf9~\x98\xec\xf0\xac@\x14q\x90&C\x12\x0bSzpi/_\xf6\x87\xbc<\xe4\xb5hM\x9c\xa4]\xaeETC\x04\xcbR\xb2 \x05zJ(\x04\xd1\x1c\x17h(\x81 @(\x0c\x90\xeb&\xa1P@*\x18\x88\xd1J\xa7o\x94L\x1fq\xb5\x91\xa9D@1\x03W5G\xa0\x8b\xa4\x9aH(@\xfej\x87X\x1dt\xb2\x16\xf1A\x81\xed\x1b\xfc\xa6\xd0\xcd\xd0\xf6jY\\\x84/l\x19_\xa4\xbfty\xf7\xd7\xac\xa8\xf3B]\xd0\x16'mi\x12\x16&KI\xf1T\x13KC3$d\x89\xb9\xceY\xfa\x98\xd5I`w\x14$\xda\x97\xdda\xe0w\x1ad\xba\xf64M\xe0jV\x89N\xb5\x85\xe7\xc2\xfcX\xda\x94\xaf&\xd8\xc2\xa1\x17\xae%\xa1\xd6\\\xf0\xfb|\x0d\xc9\xf8(\xe3s\xd4E\x91\xe0+s\xa1\xcc\xdfk\xad\xfc\xdc\x00\x8a\x9f\x1a<1\x05g\xb6\xf7\x0d(\xaf\x1e\x88=\xabk\xb5\xdb\x1b(s]\xc2.\xaf\xb6*\xdb@f\x01\xcc`\x01\xcc\xee\xa2\xa2\x87[\xe9\x04\x82j\x1e\\\xcb,\x92\xf0\x11q\xe4Y\x1e\x98\xab\xc5\xe7\x9cK\x99\x1e\x07?y\xe5\xe7\x88Z*\xbf\xbcL\x8f>\x87\x90\xcf\x9cX2i\x18\xe9\xa2!\x84\xe2w\xbbH\x1c,\x02W\x8a\xc0i\xc2s\x8f\x88\x1d!\x83q$\xbd\x18\xb4o\x82\xe5\x85 \x86\x81\x98\x99\x81\xad\x81\xc9\xd8\xbf%\x04=\x00L\xeeH\xb3\x07\xfb\x0c\xf7Z\x1e\xbfp\xf7oY\xa2Kt\xfc\x92\xbc\xc7mx]\x8e'\xbf~\xf5\xe2\x9bv\xa1M\x84\xd3_L\xe1\xe5\x13\\0\xc1%\xe2[\x14\x8ce0\x7f\xe2Od\xf2\xbc\xb7CO4\xd8To\x8dwetza\x1b\xc0h'\xc6w\x11l\x07\x9e\xee\xbe\x12#bv\xea\xd4\xe0.\x1ba\x03xv\xd6\xf0\xae\x1a\xdaQ\x974*\x82;(\xba{b;'\xb6k\xce\xad6\x11\xdc%\x03\x9d\xc5wG\xee\xce\xc8\xdc\x15\x99;\"\xbd\x1b2T@G\xf3\x95AG\xe4\x0e\x18\x10q`6yv=\x063|\xb7\xf3\xeet\x0c\x8e\xa3\xe6-\xb4\xbb\xe1;\xdbr\xbb\x1a\xb1\xa3\xb5\x0dg+p\xcfBB\x058^<\xf4\xb2!\x17\x0c\xb9TB\x8b\x84\xb9<\x96Y\x18\x81%\x11\xdc\xf4z\xf3\x0cY\x00\xc1W\xc7\x93\x1e\x99\xee\xbcO/2\xb9'\x93\xedE\x9b\x94\x9b1\xcf\x06\x89\xb8\x05;\xc2d\x0d\xa3\xeb\xd7oP\xceL\xb8=+\xd9\xb6M\xaf\xddo\xfb$\xd1\xf6\xbc$\xdb\x8b$\xd8\x9e\x8e+\x16\xf7\xce\x1e\xe8q*j\x81uf\x1e\xed\xfd;\xa0\xc7\xb1}\x9c\x9b?\x8d\x9b1\x8d\x9f#\x8d\x99\x15M\x94\x07\x0d/9\xe5H\x9a\xeb,\x94\xcfL\x9a\xc1L\x9a\xb3,\xdd\xdcA\xba\xb9\x1b\xd3\x89n\xee<6&9\xdd0\xfb\x920\x82I\x9e\xa3\xae\x05\xf3a\xc9\xe7\xb2\xc7\xf6\x95\xb6\x8a\xf2\x1f\xc4d\xab\x1ad\xa4\x1a\xf1\xf3\xe4\xa7\ne\xa4\xf2\xe4\xa0:IO\x05\xb9\xa4\xba\x94C\xe3\xe5\xec\xcb\x1e\x85\xe5#\"3D\xcd\xec\xe6d\xe7\x10gz\x9ads\x1a\xf2\xe3\xa4o\x1a\xbe!\xc8\xd7\xe4\xef\x8a4'\xd38\xf7\x12\xd2\x01\xf7\xd9qV\xd9d\xc1\xb4\x94,\x98\x96\xc8u\x99,\x98\x1e%\x0b&Y0\xc9\x82I\x16LD7\x93\x05#\xb6`BH't405\xe9M\xfb\xc8\xe60\xef\xbe\x13\x9f\xebqI\x19{ \x18\x1b>h\x1a\xc6\xc9U\x98\xf8\xf6\x8b,\xf9&0&\xb1\xa2n\x11;\xfd\xd4&\x05j{\xf3aH\xb8\xf6)\xfe\xac\xbf.\x01\xdfN\xf5=\xed\xa9A \xb2W\x81\xd4<\xb0\xb0\xdd\n\x11\xb6\xab\xef\x1d\xaaj\x80\x0f\x99\xcd2\xf90\xf3\xc9\x93\x14#l\x93\xf9l\x01\x08\xa6\xb7\x98a=\x9e\xca\xc0c\xd8\xbc@\xb5\x1c\xc8\xd6C\xd8\xfe\x05R\xde\x8e(;\x18\xc84\x10\xa4\xb8\x80\x16\x19\xc3.\x86\x90m\x0c~\xfb\x18\xa8&\x86\xecd\xa0me\xe0\xf2G\xba\x1e\xb4\x9b\x81\x1c\xc3\xd0\x9a `\xbdb[KY\x99\x10oS#\x9cX\x99\xeb){,\x90\xa5\xfe\xe4RX\xc2\xde\x86\x90\xcd\x0d\x81L\xf3\xa4\xed\x0d\xf7+\x02\xe1\x94@\x18\xe2\xd9\xe29&:\xf2\x9a\xc0N\x07r\xf3_\xce^\x07_\x8aw\xac\x9eU\xb2\xf8\x92\xc5\x97,\xbe\x01%\x8b/Y|\xcdO\x9c\xa9\x9c,>\xa0\x06\x8a\xb9\xd1\x0b\xb7\xf7d\xf1%\x8b/Y|\x8eP\x8b\x8f\x8aI\xf5\x8e\xa4O\xbd{om\xa3\xb8-\xe7\x8c\xf2O\xac\xa5nt\xc1w\xab\x0b\xec\x92:\xe8\xde\x8d\xef\xd7D\xd1\x9c\x08\xab\xbd\n\x97\xc5\x99c\x11\x9d\xd6\\!K\xdbH\x0b\xda\x90m\x02V\xbb\x80W\xb2\x86e\xe6@or\x93\xd5`\xc8\xa24K\x7f\x92\xd6\xda\x8e\xf8\xc5f\xa0+$\x13\xeaj;\x9eP\xf3K\xccH\n\xcb\x18\xbe\xa6U\x01\x86\xd2r2\xd2\"2t\xe9\x18\xc6\x90R\xc9\xac\x19,xf}\xb8\x10\x8c\xe83T\xf6If\xa9\x97\x05W4\x9d\xac\x98\xd5A\xa0,\xa1\x8eX\xc7>G\xac\x9e\x02\xbb\xb7@\x1f\x07\xdb\xc7X\xc7BG\x9cy\xe4\x88\x169H\xc4\x0e|\xd13\x8f\x8f\xa3\x87\xc3y\x9f\xf9\x05TX=b\xf5D^\"\x85Q\x18e\xa9\xe6uV\xeb=}p,\x0f\xb2jI\x1b\xab\x82\x91\xac\x0e\xc9R}\xe0V\x1aY\xea{t-\x91\xa5\xbe$\xa8\x16\xb2\xd4'\x99\xf5@\x96\xfa\x1c\x88*~\xec\xd9u>\x96i\xdf\xc0\x98\x9b_\xc9#T\xbf\x83\xdc\xac\xe8M\xea\xde\x8c\x1a\xa2\x06\x07o\xf7\x0b]\xac9J\xd6LG\xac\x9e\x02\xbb\xb7\x90\xac\x99\xa5\xad\x19_\xaa\xa2>\xd9\xbe\x84\xf3m\x93\x99\xb6\x99S\x81;\x11\xc84G}\x12\x0c\x06\xaf\xea\x04\x1d\xb9\xce{\x8fYa\x82\x8cr\xe7\xbdFW\x93`F\xc4\xe3\xc4\xcdX\xb8\\\xbd\x082\x13S\x9f\x18\xee\x9a! f\x8d`\x013\xab?D|\x9c:k[\nfw\xeaSD\x0b\x88\xee\xf3\xaf\x99\xf8u\x1bL\x96\x01\x06'\xfcf\x86\xd7\xa2\xf8\xf4\x1b\x1e\x86\x8cz\x0c\xddlE\xab0\x04\xb5iX\x87v\xdf\x0c\x19u~m\x1f\xd4\xf4\x0c-\xcf\xd1\xf0\x8c\x15\xca\x9c\x9e\xac\xa9\xc9\xc8r\xcb\xe8\x180;\x07\xfc\xfc\xb6\xccN\x02\xb7\xa3 \xc9l\xbb\xfc\xc7y;\xc4\xb2\x19m\x19\xf9l9)]\x81/\x10\x9e1\xb9\x97\xe4\xb1]\xe8\xcb\xfb`\x8d\x01r\x8a\xd3\x93\x9b\\\xb7\xac\x8e0f\x13\xb9b\xc9\xce\x00\xabC\xc0]\xab\xac\x8e\x01\xafs\xc0_\xa5\xcb~\x96\xb3>\x97\\\x9d\xe4\xda\xe4\xadL\x96\x10\xa8\xb5\x01\xb25\xb9\xc87)\xef}\xfb\x1c\xf51\xdf\x87\x02Y\xf5\xbd<}\xbc\xe8\xbc\xf9>\xcba\xc9\xf4\xb6'\xca\xa8\x1a\xd0'\x84&\xa1t\x08\xa1=\xc8\xa1e,]RW\xcc\xff\x88\xbbx\x90.\xfe\xd0\x12\xa7\xe6=s<\xf1\xc5\xc5Z\xca\x91_\xa0\x96\xadxi\xdd\x07L&2\x85{\xef\xb8\xd0c\xc6M\xdc\xee\x0d\x88\xfc>\xaf\xf8Ib}@\x1bV\x02\xb8\xc9\xc2\xf5-X2\xf42\xc85\xc4\x19<\xc1\x98\x96f\xea\x17\xf3z\xfc\xba\x0f\xdfwI\xe0\xfb\xbe7\xfc \xfe\xc0\x1b\xc4\x0d\x97\x00\xd0oI\x0c\xebw\xafq\xee\x07\xe4\x10\x7f/#\x02\xfao)&\x00\xc0\xff&\x15\x06`\xe9\x1e\n\xf3\x04=4\xf6\x0b\xe1\xfb|\xda;C\xf9f\x18\xa7\x06j=\x02\xc3E\xc0\x10\x17\xd0{\xb2%\x81?\x86\xd1;`\xf6\x10\x80\xe9\x89\xe1\x8c\x9b#z\x8a8\xa2\x04\x0c|!\x03W\xd0\"\xef\x0b\xc3\xf7B^\x053:\xc0\xbb\xfae\xdf|\x0b\xbe\xe8\x15\x15\x19\xba`\x893/\xe8\xf5L^f/\xd1#\xfe6\xb0\\\x90\x83%V\xa8\x83%*\xe0\xc1R \xec\xc1\xd2\xcf /q8\x84\x97\xdd\x00\xb1\xef\x17\x95/4\xc2\x12+@\xc2\xd2\xcf*,z\x9ay9\x8d\xa7\x1f\x7f\xfe\xf1\x82(, C),q\x841#\xac\x02\xe5wU\x1e\xf0^\xa0\x11\x17\x96\xb0H[K\xc9\x9cO\xe6|K\xc9\x9c\x0f~a\xee\xf6\x9f\xcc\xf9d\xce#\xc4\x12t2\xe7\x81#\xaad\xce\x93vV2\xe7\x1bJ\xe6|\xbc\xb0\xe8i\xe6\xe5\x94\xcc\xf9\x01\xc5\x98\xf3\x94G\xa7y*<A\xc2\xfb]0\xb0\xda\xd2,\xfe\xa7\xac I\x0d\xe3\xac\x10\xeciO>\x97\xfe@lK\xbcp\xec\x86\x9d\xdfL\n\x99FD\x80\xb6\xa5\x99\x87=\"d\xdb\x12\xc3\xcc\xa3\xbe\x03D\x10\xb7%\xc6\x87\x80\xf91\xe0\x84u[\x92\x06w7o\xf1\xda\n\x82\xf6\x02/\xdc\xdb\x12c\xaf\xe8\x93[`d\xe8\xb7%2\x00\xdc\xd2)\x1bA-\xf91\xf1\x03\xc3IV]\xe0xdx\xb8%i\x908\xc9\xd0\xf6@\x1a*nI\x1a0n\x89\x0e\x1b\xb7\xc4\x9e\x08T\xb4\x95%6;jO\xeaS8\xa8\xbcyF\xfea\x1e\xe8\x9d\x19fn\xe9D\xba\x85s\xc8\x05\x99\x10\x80g\x92v$\xb8]p$\x90\x06\x08%\x02\xc0\xbcup\xc49e\x8e\x89?C\x1dq\x07\n\xe4\x83\x05\xd2\x01\x13\xddR\x8c^ \x07~Y\xe2\x07\xb3[\x12\xf4W\xd0Oyx\xbb%F\x90\xbb\xa5S4\x9b\x1d2n\xe9\x14MX6\x10\xde\x92,\x1c\xde\xd2)\xfa\xc6\x0d\x90\xb7t\x8a\x16\xd0!\xf3\x96N\xf1mA\x10\xbd\xa5S4\x82\x19Vo\xe9\x14\x0d\x90\x05\xda[\xe2\x87\xdb[Z\xbe\xdd\x0b\x07\xe0[\n\x85\xe1[bn\xd4\xdc\x0d\xfag4\x15\x89P}K\x12[\x80\xbeyv\x94l\xc4d#RO\x83`\xa0@>X \x1d\xb0S\xdb\x88\x9c\x14\x01\x96lO\xc3\x89\x02,\x91\xe9\x02,\x89&\x96lZ\x89\x12\x08X\x12\x0f$/\x99\x80\xa5\xd8\x94\x02\x96\"\x13\x0bX\x8aL/`I\x9ed\xc0\xd2\xacT\x03\x968\xe1j}Z*\xed\x80%Q\xf2\x01Kl\xcf\xed\x90\xc4\xf3N\xac>\x98I ,E7\x87wWc\x89\xf4\xd6\x0d)\xbaM,\x11I/C\x97L_\xd0\xe7\x17\xba-\x94\xb4Q\x94\xd0 \xc8\xa9\x9f\xec\x80\x93\xd6\xc0\x12\x91\xdc\xc0\x12C\xf7s4>\x95\xee\xc0\x12o\xe7b\xecZ\x8cV[\xe2\xb4\xdd\x12[W\x88\x16\x81`\x01\x90\xc1\xd6\x8e\xd8\x9d\x07\x91\x00\x80\x0e\xa3\x1c\x92H\x10 \x13\x06p\x02.\x87t\xda\xe6HvAI\xfc&\x83\x1d\x15\xe19$\xca\xbd>$\x91\xd0$\x06<+2tH'hK8\x15\x83%\xe6r\xe2.$\xa6\x1e\x11t\x96=O\x99\x1a\x84\xd9a\x10t\x1ad\xbaC\xd0y\x90\x08\x00\xa4Z\xe3t\x0d\xe1\xeb\x8bE\xb5\x85DWH4\x85@P\xbc\x95 1:b\xf1V\xf0\x10I\xed\xd3\xbc\xcf\x87?\x1dH\x16a\x89\xf8J\x98;\x9d>\xc2R\xd8\x12\x0bX`\xa4\xf2\xa0U\x06\xa9!Yrf\xacER\x1f\x92\x9d\x01V\x87\x80\xab\xfdX\x1d\x03^\xe7\x80\xaf\xeb\x96\xfd,G\xb3ItZJ_\x13\xfa&OC\xcd\xd2\x19?'\xa612_\xc6\x84O\xa7\xed\xe2\xb3f\x98\xb6<\xeb\xb0i\x13\xed0\xd5\x04\x1eh!\xaaWp=\x82]\xff{\xd5\x92_\x15ya\x80\\\xe0_P\x15\x86U`\x00\xceG.\x007\x7f\xbch9/Ho.kjfJ\xc0v\x08\x98\x0e\xe1\xc7\x83\xd7I\x01u\x03\xc0\x1c.\xc00\x84\x8e\x0b\x9a\xf3\xc3\xe4\x02C\xb1xuK\x1c\xe0\xc6b\xe7\xd3Q\x04lm\xc6\xca\xf0\xfb\xaf\xd8\xb3\xd7\xb3\x15\xb3\xdc\x87\xa4yC\x9b6\xa9\xc8\xe5\x80h \x17k&\xa2-\xe4\xc3\xb3\x02\x80\xac\xd8\xcf\x93P\xa4X\xc6\xcb\x80\xa7xp\xa9\xd86R \xa8X\xbe~hS,G\x06`)\x965\x01C\x8ae\xcb\x03\x17\xd1p\xa2\xb8\xef/\x04\x12\xc2`A\x11F\xda\xe2\x9ba*\xf5\x9cv\xc11\xdd\xc3.\x18\x82\xaa\xd86\xe2\x17K\xdek%b\x88\xa8\x01b\x81L\x18\xc2\xa3\xd2z\xc80\x14B\xb0\x88\x10\x1e\xc2\x07\x84DA@\x06\xe3Ob9x(\x0d6.\x831T\x8cY~_\x89\x02H\x0c\x85\xe0K\x9e\xee\x0c\xb61\x11\xe8\x01\x854\x84\x8f\xbe\"\xd8\x02\x02M\x18\xb1C\x81\n\x1eh\x02\xaa\x07\xf0\xd5\x9f\xb2#\xf7\xdf$\x14d\xca\x8e\xfcw\x97\x1d\x19\xf7lG\x18\xa5\x0b[\xdc\x81i<\xc3\x84\x0cN`rf\x11\xf3\x8a\x98\xba\xf3\xd8/?i\xc3S\x965j\xd8teL\xd6(\xde\x94\x03\xc3\xcbt\xcc\x10\xbf\xaf\xc7|\x07\xf6\x03\x93\xe96\x9db\x81\xec\x03\x82\xad(\x90_ b=\x9e\xa0\xb2|0G\x00\xd7A\x00T\x1b\x80l\x07\xd0\xb1\xff\xe4b\x83\xde\xcc\x08\x86\xd8\x07\xa3\xfb\x97\xfa\x0c\xedD\x80xGBH\x82Lg\x02\xccq(x\xf8\xb1\xe3\xf2\xb9\x8e\x05 c\xf0\x89\xe1\n\x05Q\x91#M\x1d\xcb\xfd\x11\xf5l\xd6\xa1\xf3\x03#f~\x81Uw\x1f\xf7\n\xcc\xeb\x18\xe0\xf4\x08X\xbd\x02 \xaff\xa0\xfd\x1au=\x03\x8c\xb9\xe0\x88\x8eKb\x89\x14xbe^\xd9\xf4\x1e\xf4\xc7\x1b\xd1\x0e\x0c\xe0\xb4\x9el5\xdf\x99\x01t\x84\xf9\xdc\xe6\x90\x8e\x03X\xe0#\xcb8:\x80\xed\xec\x80\x05\xdaL9>`\x81o\x84\xe3\xbb\xe7rg8D`\x81\xcf0b\xb4\xe7~\x82\xe7(\x01\x96\xb3\x04f\xb7g!\xc7 \x04b\xaag\x18\xb4'\xdd\xf0\x03q\xd1\xf4N\xd2c\x8e\xc6@\xa7\x9d\x1e!\xbaW\x90vz\xfcA\xffNO\xc5\x13\xdbv\xff\xbc\x05hY\x8e\x1b\xe0\x0b\x99\x8e\x04\x96:q\xb0w\x18Q\xbfBg\x0e\xf6J8\xc27\xca\xa9\x03\xc0C\xef\xb2cx\x07~\x1fj\xf2{\x7fg\xfb\x85\x80?\x13\x98\x8b\x8d\x11\x91+\xfc \x1d}K\xfa\x8b@\xfe\xd5@7\x17\xf6\x1dMXz\xa0\x93\xf1>$L\x97\x85\x02^\x03a\xae^5\x15\x00\xd2\x06\xc2&B*\xf3T\xbe\xed{p\x95\x12a\x12\x0b\xe9zF\x80\x04\xa33\xc0\xe9\x10\xd0\x97\xfa\x96\x96\xfb \xadV\xc5\x1e\x00/'\" \x82ri\x01\xaf\xe3\xb4\x85\xc4\xf0\x18X\x9a\xf95\xdc\xd5\x05\xd4\xd4\x0cO\xca\x13\x9e\x9d\x88\x15E\xae'z5\x91k\x89\xec\x00\xd0\x9d\x00\xde*Z\xe6S\xd4\xfaYj\xf5\x04\xd7\x0e\xbdr\xc8\xceR\xab\x86\xb9ff}\x87\xf2\xb8\x01\xf5\x01\x8c\xb9'l\x11\xe5\x83\xbd\x1f\x0eL\xc4v\xd6\xb9\x95f=+<\xd0s\xef,\xf5\xac\xe7\xc0J\x0e\xad\xe1\xc0\xea%\xc6=\xb8\x8c\x82k5\x9e\xf1\xd2\x0e\xec\xd0\xbcd\x8c\xcdt\xc2\x93KJ\xc85\xb4|\xd8\xd3\x1d9Z\x04\xdf\x1d\x1e\x1bp\x03;2VnZ\xc9!:B\xceV\xec\xfa\xaew\xe73Y\x02\xd3\x89?#8\x0eu\\s\x1c\xd6\x11\x86\xbf\xc71\xcdR\x94\xa8\x87\x18u@\xc7\xb2\xa3 {Q\x0e\xe6Vz\xe3\x05\x13v,G;\x94\x91\x08\xb5\xa0#\x99\xe3@\xc6\x1d\xc7\x1e1c\xf7\xc6\xde\x11\xf1i\x9c\xa9C\x98d\x81]\n\x04\x1c\xbf\x11\xb3w\xd9\xa0\x0d\xf2zw\x86\xe1\x1d\xb8\xc6\xb5\\\x99\xd7\xeb\xa8yu*\xf7\x0cy-\xeb\xbd\x8e\x0d;\\\xc9\x993i\x0d\xcf\xb1\xeaq\xa8J?\x17tBJ\x99\xcdw\x90\xd2\x8eQi\x9bB\x0eP)/\xdc\xd1)\xe5B84\xa5\xec\x02\x8eK)+\xdaA\x19vL\xca\xbe\xb7\x80\x03r\xecx\x14\x18\x1e\x8bl\x14\x88#\xd1\xaf\xe1zL\x06\x8e\xc3\xb4C\x0c~\xfa;\xdc!|\x8e:\xdb\x9e\xd3F2\x90\x0e8B(~\x87\x9b\xc4\xd1&p\xb0 \x1ck<\x87\x9a\xd8\x91\xb6td\x14\xcb\xfbE\x0c\x0313O\x97\xde\x85\xf0f1\xb9#\xcd^\xd0k\xe5?:\xcd\xf1RM\x13\xd1\x0c\xbdS\x9e\xb3sS\xed\xda\nk\"\x9e\xfer\xa2\xaa\x88S5\xc3\xe9\n\xe1D=pV\xf5\xef\x81p\xff\xdb WZ\xd9\x1b\xab\xe0\xcd\xad\xd7\xcd\xad\xce=\x19\x90\xf6~\xaa?\x18\xc1\x9b\x8c\xc9\x02E\xe772\xab'\xf7\x87\x02S\x04\xbd-$m\x91\xd1\x92\xf2\xdc\x0d\xca\xd8,w\x138\xf3r-p\xe3\xc7\xe2\xe1\x9f\n\xef\x9d\x07\x991\x1b\xd2=v\xba\xc7\xfe%\xdfcO\xdd\xa6\x02\xad\xb3\xc0 \xce3\xdd\xbc\x93\xcd?\xd5\xbc\x13-8\x1b\x02s!0\xc5\xe2X.;\xb9\x16\x08\x96sDL*\x11\xbf\xd9\x8e\x91\xa9\xde-k~\xb0^\xdd\xdaM\xde\x0f\x8e\x8f#\x94\x0d\x85?3\xb4\xa3\xbc\xcfL\x8e\x1e\x84=\x05\\\x9b\n\xbcv\x15,d[y\xfb\x84\xd8W\xbeg1\x1b\x0b\x90\xab\x13\xd6\xcc\x80\xe9u\x89}o|\xd4\xc7\xaeI\xa6W$\x02E7\xff^,x\x15\x12\xa1\xed<\xd7\x1f\xb8<\x1c\x85\xae=\x96\xbc\xf9 ^s\xa0W\x1c\xf3<\xa1\xc1\xf3q\x90O\xaf\xe9\x1d\x8b\xbc\xd8\xa8\xdb\x989\x86\x1cs\xb9_\x0f\x9d@\xcd\xf1\xb5\xbb\"\xb8\xbc3+\xb6\xab\xdd\x9e\x9bS\xee\x9d\x99c\xf9:\xdfg\xb5=\xe5vW\xb0\xc3+\x85\xfaF\xf5\x17yVU\xe5:7/\x99E\xe2\x0e\xc5\xea\xb6V\xc5\xd0\xb3\x1a\xd9\x9b\xff\x9e\xf4\xa6\xe5\xad\xa7\xb8>Lo\\\xb7z\xbe\xbe\x15\xbc)\xb6w\xb6\xa3`\xdd\x92\xca\x9e\xaf{\xec\x1a=VMZ}\xb1\xdch\x84\xda/\x1f\x97\x1e\xaf\xc1\x08\xd9\xee{\x06C\x93O\x1a#\x19\xe0M7\xcd>\xa8\xfdAU\xaa\xa8\xcd\x0d\xc9A}\xd2\x7f\x1c\xb02\x7f1\x0e\x96^\xb2\xdcn\xfa\xf4\xb6 \xfd\x8fjWV\xab\xcb\xacR\xab\xde\xae\xfd\xe9\xf1\xa5\xaa\xb3\xc7\xab\xa7\xcf\x9e\xbf\xfa\xf7\xa3:\xdc\xbdS\xd5^\xbf\xc7\xde\xc4\xd7\xe5f2h\x81\xf5\xd7\xea\xb2my\x1d\x1c\xeb\xbc\xb8*\x89\x07\x90\x95\xcf\xd8\x95\x90c;=\xc9>e\xdbc\xc4\xdc\xdc\x1f\xca\xf2\xea\xa2\xdcOT\x1ck'\x1b\xbc\xd7\xbd{\xda\x0b\xe4\xa1Q6\xfa\xbbow &\xb9\x899\xdbY\x87\xe7\xb2<)\x90\xfb[=Xo\xf6\xad\xa5\x9f\x15\xa0\xc5d\xd4\x9b\xb6\xef\xedJ^g\xdb\xf5q\x9b\x19\xac\xcd\x0f\xea\xf0q\xab\xe0P\x96\x08\xa6\xfe\xfcFY\xfc\xc4\xba<n7\xd3\x90\xfaK\x05\xd9\xe12\xaf\x0f\xd9\xe1\xaei\xf6Y\xa3a5\xefB\xad\xb5\xa68\xdcY&\xfa\xd3\xea6\xdb\xed\xb7SQ\x15\xda@\xbb,\x8f\x07\xf3^\xb9Q\xd3\x8fi\x8ba\xf5\xab\xe9\xdf_k{\x1d\xceo\xf2\xca\xda\x9c\xc6\xfa\xdc\x1c\xadZW\xeeN\xd6If\x7f(\xeb\xd2>h\x85\xb4\x990\xcc\x0b8\xef\xd4K\xfb\xb3_\xf6\x0d\xefJ\x7f\xba\x91\xa7Y5\xee\x0bNUo\xf3\xca\xdc\x11\xbb\xe7\x87\xbd\x11\xf5\xa3B:2\xd4\xf5\xd3.D\x1b\xc1Z?V\xfbl\x1d\xd2\x1e\xb8t&:yp\x06=\xb8?v~S\xb7/\xb5/\xc2\xf5\xbb\xb7\xcf\x1bn?\xe9?tB\xe3 \xcc}\xd9r\xc3\xa5\xd60\x1c\x8a\x8c\xd8nd9\xd9\x13\xde\xacG\xb1\xec\x12\xde,\xe1\xcdB\xb3w\xc93eB\x13L\xfb\x1b\x8d&Hx\xb3\xde\x1b oFr\xf9\xff!\xde,\xbc\xb7\x8d\x99j[G\xcf\x90\xf2\x90_\xe7E\xd6l@\xedc\xceSr\xd6t\xa3\x9eX\xb9\x99\xb6\x95\x9e\xa9\xf5\xcdo\xbenZ\xb3\x1ao<\xaf\xfaf\xf0\x19\xd4};\xeb\x83\x16K\xf5\xe1\x0c.\x8f\xb5\xbb\xd2}\xff\xe2\x0fg\xf0\xd9l\xb8\x9f\xd4\xa1\x86|\xac\x14\xebr\xfc\xcd\xf1'\xf5\xde|\xa9\xeaZ\x1d\xe0\xc7?{,o\x1av\xd7\xb5\x1aE\xe0\x0dOe\x02C\xac\xbe\x9d\x7f\x96Eu\xafw\xae\x85'\xc5\xf9me\x01!\x9fsm\x824wY\xf6\xb8a\xad\x86\x7fm.u\xbe3[\xfe?<\x9e\x8c\xf1ks\xb5^\x94\xb5\xb1b\xea\xdb\nn\xd4A\x1f\xea\x9a{\xa5\x15\xc0\x9f\xd4\xc3\x83\x82\xff:V5d\xd7\x07\xa5\xb4\xc9S\x16\x88\x15S\x1e\xf4\xb8\\\xe5\x87\xaa\x9e|\xc7\x18\xe9;\x95\x15M\x8bm\xb3\x9e\xee\xf7\xdfe\xd5\x0dlJU\x99F4\x98\x19\xcd\xbcR\xba9\xdd\x1ch\x96\xdd\x0b{\x1a\xedac\x9ax\x12c ek-\xaaj\x80\xbdi\xed\xb8\x86\x95\x1a\xe4c\x04\xd9\x14\x98\xbe\x0cq\xf3@|\xa7\xd1\x9ek.>\x95\xb5\xba\xc0\x1bb)h\x97P\x96\x89q\xf4\xa9\x0b\xf4\xde\x02h\xe6\xc0\xf8\x0086\xde_\x19\x96\x8a%Nn\x0d\xca\xab\xc5{k\xea\x7fc\xbe\xc5\xca\xb2A\xfa\xe8\xa6\xc4\xf6\xdaa\xafR\xa9\x12:\x92z\xf6\x82\xcc<^\xbf)I\xfc\x80\xbc\xb7}\x9e\xc1)\x85\xf28YbNN\xcaN\xb7\x14\xc8\xecd\x89>\x10X\xc2<DS\n\xe7z\xb2\xc4X\xe3\xc0\\\xe7\xc0JW\xc4\x16)Pg\x94>\x91\x07\xb8!1{\x0d\x82\x9e\x03\xb02D5\x0f2\xc7\xd9\x11oz9\xe2\x0c\x02\xc8\x06\x02$\x83\xc18>\xa2\x8f\xfbsI\xb9\xc7~\x8et9,|\xb4#\xe1\xd7\x83\xa2\xf4z\x8d\xa7\xc4\x9dO<\xbdq\xcf \x82@\xb8M\xc5\xf8\xac\x83\x0c\xc7\xfe\xec\xb1\x17{J!W\xea\x90\x10O\xf7\x94~fY\n<\xe6Af\x987=\xf8\xc2\xd8\xc1>\xa5\xa0\xcb}J\xbf\x18A\xd2\xd33\xc8m\xec\xd6\x0f>\xcc\xf1\xf4\x07\x190\x9d\xffS\xe2\nH\n\x10\xa0U\xa2\x05\x0ex\x9f\x1b` \xa6d\x8e=\x97\xe9\xd8\x93\x8e=\x90\x8e=(1''\xcf.M\xc7\x1e\xe0\x8b\x14\xf8\xfbS:\xf6\x0c\x883\x08 \x1b\x08\x90\x0cF:\xf6p\xbf\x9e\x8e=\x0dI\xb6\xa9t\xecYX\x96\xe9\xd8\x83\xd3\x0cA\xd2\xd33\xc8-\x1d{pZ\xe8\xd8\xc3\xc9\xcb\xd8<IO(zo\xee\x14\xf9\xe9\xbfE\xee\x91\x82\xaf\x84\xf6F\xce\xd0\xbfp\xee;=\xfeT\x8a\xbcVH(\xab\xe6\xfcQ\x7f.\xfb\xa5\xe2\xcc\x8cA\xc6\xd8\xa4\xcf\xbb\xb0\xe9\xf3.2\x93\xa1\xef\x94\xce\xc3@\xf1\xba!1\xccN\xea[\x10.s7$\xc6\xf7\x80\xf9M\x08\x14\xc4\x1b\x12\xf3\xa3 \xf80P\xa5\xf3\x86\xc4\xc1\x89z\xde\xe4\xb7\x1d\x84\xed\x07\xba\xe4\xde\x90\x18\x0buLn\xe1\x06\xcb\xf1\x0d)X\x9coH\xf7\xd1 \x8eZ\x19\x13\x1f\x03\xcbb\x87\xe2d)d,N\x12\xbc,\x8b\xe1\x18S\xcb+\xff7$\x0e\xb6\x16\xa7pi\xc0!\x89&\x0b}\x0d\xe3H\xc4\x96\xb3_\xf6\xc9_`p\xf4\\\\#\xe8\xa3\xa6#F)\xc2!\x9dXoq/\x14@.\x1c\xe0\x9b\xe3\x1d o{\x1c \xa5\x04\x11\x92\x02\x10\xdc\x029\xe2\x9e\xde\xc7$\x9b\xdd\x8e$\x83 q\x03\n1\x83*\xbe5\x1a\xbdF\xdd\x1e9\xe2\x15^\x1c\x92P\x06\xc2\xbe\xf3\x90\xdd8\x11\x05\x1b\x87t\xcan\x04\xd1\xd98\x9d\xb29@\x162\x18\x12\x17\x9a\xceb6\x86\xaf\xe3D\x83\xdaq:\xa5\xd88u(\x87t\xca\xd6\x84+V\x0e\xe9\x94\xed`\xd6\xb6\x1c\xd2)\x1b\xc4\xa8\x829\xa4S6\x86\x0e\x0f\xc0)\x1c4\x80\xd3\xe9\xfa!\xc4\xdbc {\x9c|U7\x87$\xb0M$6\xc9/\xc4\xb2&\x1d\x9f\x8e\xa4\xa6\x10\xcf\xa1\xe1(\x99\xd4^J&\xb5!\xd9\xb4v$\x19L\x88\x1bP\x88\x19\xd4\xfb2\xa9\xa9\n\xa7C\xb2\xbd\xf7\xd7;\x1dR\xb0\xfa\xe9\x90\xc4\x93Q>\x15\x9d\x06!\xeb\xa4\x0e)j\xc0i\xc0\xd3\x90$\x89\x9eq\x12\xa4\x7f\xc6I\x90\x14\x1a'^\xaah\x9c\xc4 \xa4q\x92\x9d\x1b,1sP\x0b8\x92\xd9\xaaq\x12\x81\x15\x86\x145G\xa3T\x12\x03\xc51\xa4YM\xe3_\xbbYb9\x9a\x874\xab}l\xd1\xc5\xdc\x8d\x03;e7\x93]\xb0\x1c\xed\x90\xa4\xed\x15%\x01'\xb9\xa1I\xc2G\xa9\xc1q\xea\xd6\xd0\xa4\x8c\xed\x90\x98\xfb\x0dw\x97\xc1\xd2\x18\xe3\xc4\xdfA\x99\xbb'\xb3'\x96\xb8\xfd\xb1$\xd2C\xe2\x85$\\DD\x81\xdd!\x89\x84\x02b\xc1\x00\xa7|\xe8\x98\xc4\x02\x02\xb9\x90\x80J\xfd\x8c\xd3\xfd4M\xba;s\x13\x013\xd9Q\xb9\xa8q\xe2 M\x86$\x16\xa6\xf4\xe0\xb2\xa7r\\\xe3t\xc2v\xed\xbd\xc5\x85\x87$X\x96\x92\x05)\xd0SB!\x88\xe6\xb8@C \x04\x01Ba\x80\\7 \x85\x02R\xc1@\x8cV:}\xa3d\xfa\x88\xab\x8d\xb4\x9ea1\x94\xea\"\xa9&\x12\n\x90\xbf\xda!V\x07\x9d\xacE|P`\xfb\x06\xbf)t3<e\x9d\x87\xc4\xf8\"\xfd\xa5p\x01\xe8!\xd1\x96&aa\xb2\x94\x14O5\xb144CB\x96\x98\xeb\x9c\xa5\x8fY\x9d\x04vGA\xa2}\xd9\x1d\x06~\xa7A\xa6kO\xd3\x04\xaef\x95\xe8\xd4PAzG,m\xcaW\x13l\xe1\xd0\x0b\xd7\x92Pk.\xf8}\xbe\x86d|\x94\xf19\xea\xa2H\xf0\x95\xb9P\xe6\xc8\x8a\xdf(\xaf\x1e\x88\x9d[\xff\x1b\x86\xb8\x95N \xa8\xe6\xc1\xb5\xcc\")0S%\xcd\x94\xfbr\xf2@\xaa\xa4I?\x9b*iN>\x1a\x1e\x06bf\xa6J\x9a\xf7_I\xd3W\xf6\xe2\x99\x05\xc9W\xbd\xb2RFL\xf6\x873{H\xd5\x0di`5\xfbQ\xc6\xce\x86\xcdU\xae\xb6\x1b\x97ISm\xf4\x8ex9L\xd6I\xe6'\xffV\xd5\xe6\x9b\xcf\xeel\xf6GqU\x8c\xe9\xd6$\xd9aggZM\x15\x8cF?\x0e\xb7\x96Q\xfcL\xf3\xcc\xc3\x17j\x7fPZYm\x9e\xc0~\xab\xb2J\x19[\xffC\xb5\xf9hQ\xf4\x1f /\xaaZe\x9b\x87Q\xc3\xba\xccXx\x03\x98\xb8\xe1J3\xcc\x8f@\xe0\x11\xdbD\xf0\xc6\xf0xC\x88\xe6\xb2\xa6\x0ds~\xe8\x0f\x12\xd6\x83\xf0\xe3\x05\xfaH\xc2z&!;\xb8\x00\xc3A<\xdc\x90\x1d\x7f\x80N`(|7N\xacE\x8d\x0d\x1c\x1eF\xc3b\xe7\xdb\x93\x89\x80\x98\x19+\xe3T\xb63\xe38\x01T\xcb\x81l=\xf8u|\xfb3y\xbc\x00\xc6\x11\x03H\x94\x1b).\xa0E\xc68r\x80oopD\x87w\xb0fb\xe8@\xc4\x08\xd4\x08\x84e\xc4~\x9e\x8c\x14\x88e<\xee\x17\x19\x03\x81\xaaO^4Cl\x1b\xa9\xb8\x84X\xbe\xfe\x08\x83X\x8e\x8cX\x81X\xd6\x04\xea?\x96-\x0f\xbfO\xa3\xf5\xe3\xbe\xbf\x10\xee~Zv,\xc2D\x9b$\xbb\x87\x96\x0f\xee\x02\xf1:?\xe2O\x89\x1c\xb3g\x81$\xf8\xb0p\"| \x92\xe1\xc3\" \xf1\xa1\x9b\xac\xf3\x93\xe2\x03\x91\xdb^4u\xfc\xe9%f\xcc\x9f\xe8\x8c\x14\x82\xc4\xf9@\x7f\x0d\x18_\x042\x89>\xf0>\x04\xcc\x8f\x81c\x17|\x82\\\x89}\xe2\x01\xae\xe3\xb2L\xe2or2Mz\xdfd\x82\xab\xa32N\xc2\xbc\xac\x93\xc0RcCZ4\xfb$H2P\xc2\xec,\x94>\x0e\xfcL\x94\xc0\x0e\xd6\x12Lh\x8eUo\x89\x15\xa0\xc5;JX\xf2\xf9~\xa6\xc4\x0d\xcab\xea\x0e\x10\xe8\x0f O5\x1d \xc4\x0e\xd4\x0e?&\xd6QqH\x02i\x80P\"\x9aD\x01W\x92y\xe1\x88?5\x1dq\x07\n\xe4\x83\x05\xd2\x01c\x1eT\xd1W8AU\xa4\xeb\xbb}\x90\xdfQ\xea\x8eeH,\x17N\x9f\"ZB\x8aZ\x90\x01\x13\x84\xf3\x90\xaf\x9f\xd8\xf1 \xa7\x90\x80|\x1bef\xc7$\xf9\x04\x0b\xdd\x03\x99!\x13DY2\x81\x9b)\x13~Yr^*s&\xc4d\xcf\x04V\x06M\x90g\xd1\x84_\xaa\x90\x83\xd3\x9ad6I\nKf\xd6\x84%\xb2k\xc2\x9c\x0c\x9b \x14\xdab\x996A\x90m\x13\xe8\x8c\x9b@\x16\x1b\x00\xbeQ\xc35f\xd2\xf10\x1d\x0f\xfd\x94\x8e\x87|\x1b<\x1d\x0f)\x12\x88\x1dd{f:\x1e\xb2\xde\xe1\x0e\x14\xc8\x07\x0b\xa4\x03\x96\x8e\x87\x13\x8ah )\xeat<\x94o\xa3\xe9x\xd8\xa3S\xcb9\x1d\x0f\xefU\xc8\xe9xH \xed\x97|<\xe4G\x17\x01\x7f\x02\xf2\xec\x08f\x81\x06X\xfa\xbb\xac}\\\xf8Ej\xff\xe6N\x97\x05\x8b7\x80\xb8\x80\x03D\x14q\x00\x9e\xd9\xcb1u\xd9\x05\x1d\x80\xf7M`~\x17$\xc5\x1d\x80\xffm\x10|\x1f\xd8\x85\x1e@\xd6\x00\x106\x02dE\x1f\x00\xf8Hj\x9c\x84}\x81\x88\xfe\x80\xb4\x08\x04\xf0\x15\xc0\x98\x9cB`\xd7^\xb0$(\x08\x01\xf7\xdc8\xae\xea\x1a\x13\x0f%\xcef\x87\xa3\xc9\xb9\xd7N\x8e\x08\x8c9N\\\xe49\x9b!\x86P\xa7\xf1\xe88qQ\xea8I\x8aK@\xcc\xc4\xe3]\x9f9\x12\xb3\xe7\xee\xf9}\xe2\x16\x9c\x80y\x0d\xa2L\x82!\x89\x8bO\xc0\xfd\xe9N\xc9%\x0f\xc4 \x0ddG\x96\x8e\"n\xe9\x1cEH\x0f\"%\x08 \xbc\xbds$\xb9=\x19\x93|e8\x92\x0e8\xc4\x0f:\xc4\x0e|\xd4m\x9f#\xc1\xad\x9f#:\xc2\x01\xa7\x08\xb9D\xc8\x83\x1f#\x81\x93\xa8\xa0\x05\xdcS\xb7\xc8\xb8\x06\x9c\xee\xa3i\xfcD)\x1dq\x03=\xd8\x0c}\xf1tS\xe2\x85\x89\xe0t\x1f\xe2\xa4\x02Mp\xba\x8f\x96I\x8aa\xc0=\xb5\x89\x11\xec\x82\xd3}4N\\$\x03\xee\xa9a\xbc\x80\x1b\x9c\xe80\x1c\x9cN\xdf\xaf\x98\xd3\x193\xde\x87\xc5\x8bS\x8b\x03\xd8\xf58@n\x96I\xcd\xb1_\xe0\x81\x84\xe5\xe7w\x14c\x11\xf2\xfdj\x8e\xd2ID\xb0\x06-\xa5\x93\x88\x97\xe4K\xc2\x91t\xc0!~\xd0!v\xe0\xef\xfb$\"\xab\xfb\x01\xadD8\x99\xcb\x1d13\x98;\x8a\x9a\xc0q\xd3\xd7i&a-\x10\x9831x\x18\xc4!I\xd2V\xf9I\x90\xd0\xcaO\x82TW~\xe2%\xc1\xf2\x938=\x96\x9f\xe4G/K\xccL[B\xaed^.?\x89\xf1<C\x8a\x9e\xcf\xd1j\x8e\xe18\x9d\xd2\xecf\xcanR-\xb11\x15C\x9a\xddV\x91Hc\x8cwK\xdcDf\x02\x96\x82\x1a#\x10\xd9vv\x9a4\x167o*5V\xbd\x11\x90\xd4\x1c\x01\xd9\x1e'\xd9\xd9\xe8l\xd0}\x92\xed\xe4\x82]\\\xd0;K\x92>Z\x12\xeb\xb8\xa8\xc5\x18\xb1\x10Y\xd9\xa6\xfb$\x16\x16D \x0c$\x19\xa9\xfb\x14%8\x88\x13\x1e\xc8\xb2V\xf7\xe9~\x9b\x19c5p\xb3\\\x0bX\xc6\xd52\x01Q\xf6\xeb>E 9\xe6\xc0\xb6\x97e\xc8\xee\xd3=\xb4q\xcf\xacs\x02\xf2\xe5-]\xd8B=\x18!\x1c\xf1\xfa\x10j@\xa1\x80 BH\x10\xa7\xfb\"\x84\x051\x02\x83X\xadw\x7f\x0d\x94\xeb\xbb\xc5\xb5]\xac\xae\x8b\xd1t\x11\x82\x95i\x10\x98\xa3\xe3N\xde:\x19\x8e\xb7}K\xd6,^\x93X5U\x80\xffu\xdeW%\xf5U\x80mI3,h\xb62\xe4\xab@\xf6\x0e\xc1\x94\xa0%\x81\x0ea\xef\x07\xec\xce\x83H\x00 \xd5\xfe\"A\x80L\x18 \xd7\xf5\xa7m\x8eD\xb3su:\xb3\xf6\x95L\x9b\xcb\xd4\x91Hh<\xa5`)Bk\x9f\xa0-2\x0d\xcdl\x00\xf3\xd3\x9c\x8b;\xe1\x17\xa9K9\xee\xfd\xd0\x925^ \xbe\xce\x0b\xf8j\xbd@H\xcb\xf95\xda\xe2\xf9\x9d=Nb\xcb\x8f\x91T~\xe2\xf8M\x89\x9dQJ\x89\x9d\x07\x14r6\x86L\xa8S\xe5\xd8d\xb9\xff\x18\xc2\x0b\xbb\xf4\xa4\xce;\xa1\x9bN\xe8\x90\xe3\xbb\xde\xa2\x9clK\xd7\xa1\x01\x89g\x8b1T\x8cY~?%\xcb\x18^%\xc1\x97<\xddY\xb0^\xcd\x84\xddd\x1bf;d<\xce\x96\x11;\xd4\xf5\xd2\xd6\x03\xe9d\xe6J\x88\xbc\xcf\x8b\xb5\x01\xe4U\xbb\xb2\xfa\xaa\xda|\x84_\xaf~\xfbO\xa9\\\xc8\x84\xc8i\xe5&U*\x17\xd2=\xc5\x0b\xdaJ\xe5B\xfa\x7f\xe5\xb0K\xe5B\xc6D\x19-\xc9\xaa\xc4\xa6J*\x172\xfeQ\xd0/2\x8a$\x95\x0b pdDP\xc4\xb2\xfe\x9f\\.\x84\xde\xcb\xc7\x1f0\xf5\x07o\x14\x94\x87\xfc:/\xb2f\xa3m\x1fs7\xd9g\x08+\xdbYmMf\xda\xb6}6,:\x88\xbc\xf0\xaa\x80s\xe5\x8a\x0f\x9eA}\xa3\xbf\xdd\xa4%\xfc\xa0EV}8\x83\xcbc\xed\x0c\x84\xf7/\xfep\x06\x9f1\x15\xd6T;\x84\xbc\x86\xba\x1c\x7f\x1b\xfb\xb4\xb6M.U]\xab\x03\xfc\xf8\xe7\x80\x81MGVt=HEU \x15UIEU(\xdb)\x15U\x19>CYo\x96x\x88\xf5\x945\x97\xd7_Z\x8d\x0d)e\xcd\xa5\x9d\xff \x9b\xd0\x9c\xb3\x8f%V4\x1d\xef\xc0e)\xe4D\x19\x127j\x8e\xa9;@\xa0?\x80<\xfbu$\x10;P;\xfc\x98X\x07\xea! \xa4\x01B\x89h\x12E\xbbI\xe6\x85#\xfe\xd4t\xc4\x1d(\x90\x0f\x16H\x07\x8cy\x9cG_\xe1D\xad\x91\x97\xf3\xed\x83\xfc\x8eR7QCb\xfb\"\x1cE\xb4\x84\x14u\xca\x9a+\xdfFS\xd6\xdc\x1e\x9dZ\xce)k\xee\xbd\n9e\xcd\xa5\x84\xf6K\xce\x9a\x9b\x8a\xaaH\xdfL\xc7\xc3\x8e\xd2\xf10\x1d\x0fC\xc4\xd4\x1d \xd0\x1f 8u\x08\xc4\x0e\xb2=3\x1d\x0fY\xefp\x07\n\xe4\x83\x05\xd2\x01K\xc7\xc3 E\xb4\x84\x14u:\x1e\xca\xb7\xd1t<\xec\xd1\xa9\xe5\x9c\x8e\x87\xf7*\xe4t<\xa4\x84\xf6K>\x1e\xfe\x8c\xa1>\xa9\xa8\xca\x94RQ\x95TT\x85zN\xd4\x00\x106\x02RQ\x15KL\x050&\xa7\x10DuKRQ\x15\x9aRQ\x15\x9c\xb8X~\x9cRQ\x950\xcdh\x10e\x12\x0c)\x15U\x91\x1cY:\x8a\xb8\xa5s\x14!=\x88\x94 \x80\xf0\xf6\xce\x91\xe4\xf6dL\xf2\x95\xe1H:\xe0\x10?\xe8\x10;\xf0Q\xb7}\x8e\x04\xb7~\x8e\xe88\x10\x9c\"\xe4\x12!\x0f~$ N\xa9\xa8\x8a\xaci\xb2\xcc&\x96\xb8\xe10l\x86\xfc\xfc\xa3\xbc`\x1a\x9c\xeeC\x9cT8\x0eN\xf7\xd1\xb2TTE\xd8\xb8TT\xa5G\xa7\xefW\xcc\xe9\x8c\x0e\xfd\xe1k\x96TTeLr\xb3\x8b\xe5\xe7w\x14c\x11\xf2\xfdj\x8e\xd2ID\xb0\x06-\xa5\x93\x88\x97\xe4K\xc2\x91t\xc0!~\xd0!v\xe0\xef\xfb$\x92\x8a\xaa\x90Y\x95p\x8a\x9e\x18<\x0c\xe2\x90\xa4y\x99p\x12fk\xc2I\x98\xc3 '~f'\x9c\xa2\xf2=\xe1$?zYb\xa6\x8d\x12re%\x99\xc2I\x8c\xe7\x19R\xf4|\x8eVs\x0c\xc7\xe9\x94f7Sv\x93j\x89\x8d\xa9\x18\xd2\xec\xb6\x8aD\x1ac\xbc[\xe2f\xdb\x12\xb0LEUB\x8f\x8a\xf68\xc9\xce\xc6K\x01\xedH\xb6\x93\x0bvqA\xef,I\xfahI\xac\xe3\xa2\x16c\xc4Bd\xa7\x90v$\x16\x16D \x0c\xa4\xa9\xa5\x1dE \x0e\xe2\x84\x07\xf2\x94\xd3\x8e\xee\xb7\x991V\x037%\xb5\x80el\xa1\x01i\x8ajGQB\x8e9\xb0\xed\xe5\xa9\xab\x1d\xddC\x1b\xf7\xa9\xa8J\x80\x84\x1aP( \x88\x10\x12\xc4\xe9\xbe\x08aA\x8c\xc0 V\xeb\xdd_\x03\xe5\xfanqm\x17\xab\xebb4]\x84`e\x1a\x04\xe6\xe8\xb8\x93\xb7N\x86\xe3m\xdf\x925\x8b\xd7\xa4TT\x05'\xbe\nd\xef\x10L Z\x12\xe8\x10\xf6~\xc0\xee<\x88\x04\x00R\xed/\x12\x04\xc8\x84\x01r]\x7f\xda\xe6H4;W\xa7\xa7\xa2*\x03:A[d\x1a\x9a\xd9\x00\xe6\xa79\x17w\xc2/R\x97r\xdc\xfb\xa1TT\xa5\xa3\xd0h\xa6\xa2*\x0c\xf7*\xb9\x1d\xd1[PJ\x7f=\xa0TT\x85\xe3\xa5\x12\xba\xe9\x84\x0e9\xbe\xeb-\xca\xc9\x96\x8a\xaa\xb0\xb75\xd2\xab$\xf8\x92\xa7;\x7fwEUFm\xf8\xef~\x1b\x9e\xd9\x18\x9e\nj\xd5\xe6\x9a\xd6\"\xb4?\x9cYsS7\xaa\x81\xac\xedG\xc9\xba{\xac\xaer\xb5\xdd\xb8t\xd9j\xa3w\xfc\xcba\x9e\xeeISZq|\xabj\xf3\xc1gw6s\xf3;U\xed\xcb\xa2R.e\xf8\xc1\xfd\xdb\xb4\xcd\x85\xda\xdbw\xff\xfd\xa8\x0ew\x8f\xc6\x1c\xe0\xdd\xdb\xe7\xb0S\xf5M\xb9\xd1\x1f\xb6ecV\x97Y\xa5V]WW\x9f\x1e_\xaa:{\xbc\xfaV\xd5\xdf\xeb\xd5fy\xb8\xaf\xdb96\xd1\x97S\x0d9\xdd\xc9Q%\x8b\xab\xd6\xe96\xe4\x9d\xc3\x9e\x99\x1b\xdc\x99#L'\xcf\x0e\xcc\xb6t&;\xee\x92\xe9\xed\x83;*\xba\x93\x8e\"\x0f]A\xa1\x17j\x7fPZ\xc7n\x9e\xc0~\xab\xb2J\x99\xeb\xb2\x0fm\x0d\xa2\x0f\x90\x17U\xad\xb2M*24!R\xcd\xba\xf1KE\x86\xba\xa7xA\x8c\xa9\xc8P\xff\xaf\x1cv\xa9\xc8\xd0\x98(#>\x9d\xb2\xb0\xa9\x92\x8a\x0c\x8d\x7f\x14\xf4\x8b\x8c\xaaB\xd5'/.*\xb6\x8dTTS,\xdfTd\x08\x80\x17\xcdC\xc7\xed\xc4}_XI\xc7\xae\xb8T>'\x95\xcfI\xe5s\xfcVA*\x9f3|\x86\xb2K,\xf1b\x13R~d^\x7fi56\xa4\x94\x1f\x99\x86y\x80lBs\xaczK\xac\xb8I\xdeQ\xc2R\xc8]6$n|$Sw\x80@\x7f\x00y\xaa\xe9H v\xa0v\xf81\xb1\x8e\x8aC\x12H\x03\x84\x12\xd1$\x8ak\x94\xcc\x0bG\xfc\xa9\xe9\x88;P \x1f,\x90\x0e\x18\xf3\xa0\x8a\xbe\xc2\x89O$\xdd0\xed\x83\xfc\x8eRw,Cb{\x9d\x1cE\xb4\x84\x14u\xca\x8f,\xdfFS~\xe4\x1e\x9dZ\xce)?\xf2\xbd\n9\xe5G\xa6\x84\xf6K\xce\x8f\x9c\xca\xe7H\xdfL\xc7\xc3\x8e\xd2\xf10\x1d\x0fC\xc4\xd4\x1d \xd0\x1f 8u\x08\xc4\x0e\xb2=3\x1d\x0fY\xefp\x07\n\xe4\x83\x05\xd2\x01K\xc7\xc3 E\xb4\x84\x14u:\x1e\xca\xb7\xd1t<\xec\xd1\xa9\xe5\x9c\x8e\x87\xf7*\xe4t<\xa4\x84\xf6K>\x1e\xfe\x8cA]\xa9|\xce\x94R\xf9\x9cT>\x87zN\xd4\x00\x106\x02R\xf9\x1cKL\x050&\xa7\x10D\x15jR\xf9\x1c\x9aR\xf9\x1c\x9c\xb8(u\x9cR\xf9\x9c0\xcdh\x10e\x12\x0c)\x95\xcf\x91\x1cY:\x8a\xb8\xa5s\x14!=\x88\x94 \x80\xf0\xf6\xce\x91\xe4\xf6dL\xf2\x95\xe1H:\xe0\x10?\xe8\x10;\xf0Q\xb7}\x8e\x04\xb7~\x8e\xe8\x08\x07\x9c\"\xe4\x12!\x0f~\x8c\x04N\xa9|\x8e\xaci\xb2\x1c6\x96\xb8\x81\x1el\x86\xbex\xba)\xf1\xc2Dp\xba\x0fqR\x81&8\xddG\xcbR\xf9\x1ca\xe3R\xf9\x9c\x1e\x9d\xbe_1\xa73f\xbc\x0f\x8bW*\x9f3&\xb9\xd9\xc5\xf2\xf3;\x8a\xb1\x08\xf9~5G\xe9$\"X\x83\x96\xd2I\xc4K\xf2%\xe1H:\xe0\x10?\xe8\x10;\xf0\xf7}\x12I\xe5s\xc8\xfcY8EO\x0c\x1e\x06qH\xd2\x0c\\8 \xf3r\xe1$\xcc\xd6\x85\x13?\x87\x17NQ\x99\xbdp\x92\x1f\xbd,1\x13\x84 \xb9\xb2\xd2\x89\xe1$\xc6\xf3\x0c)z>G\xab9\x86\xe3tJ\xb3\x9b)\xbbI\xb5\xc4\xc6T\x0civ[E\"\x8d1\xde-q\xf3\xaa X\xa6\xf29\xa1GE{\x9cdg\xe3%\xfbv$\xdb\xc9\x05\xbb\xb8\xa0w\x96$}\xb4$\xd6qQ\x8b1b!\xb2\x93\x85;\x12\x0b\x0b\xa2\x04\x06\xd2$\xe2\x8e\xa2\x04\x07q\xc2\x03yrqG\xf7\xdb\xcc\x18\xab\x81\x9b|\\\xc02\xb6\xa4\x844\x19\xb9\xa3(!\xc7\x1c\xd8\xf6\xf2$\xe5\x8e\xee\xa1\x8d\xfbT>'@B\x0d(\x14\x10D\x08 \xe2t_\x84\xb0 F`\x10\xab\xf5\xee\xaf\x81r}\xb7\xb8\xb6\x8b\xd5u1\x9a.B\xb02\x0d\x02st\xdc\xc9['\xc3\xf1\xb6o\xc9\x9a\xc5kR*\x9f\x83\x13_\x05\xb2w\x08\xa6\x04- t\x08{?`w\x1eD\x02\x00\xa9\xf6\x17 \x02d\xc2\x00\xb9\xae?ms$\x9a\x9d\xab\xd3S\xf9\x9c\x01\x9d\xa0-2\x0d\xcdl\x00\xf3\xd3\x9c\x8b;\xe1\x17\xa9K9\xee\xfdP*\x9f\xd3Qh4S\xf9\x1c\x86{\x95\xdc\x8e\xe8-(%v\x1eP*\x9f\xc3\xf1R \xddtB\x87\x1c\xdf\xf5\x16\xe5dK\xe5s\xd8\xdb\x1a\xe9U\x12|\xc9\xd3\x9d\xbf\xbb\xf29m=\x90Nf\xae\x84\xc8\xfb\xbcX\x1b@^\xb5+\xab\xaf\xaa\xcdG\xf8\xf5\xea\xb7\xff\x94\xca\x85L\x88\x9cVnR\xa5r!\xddS\xbc\xa0\xadT.\xa4\xffW\x0e\xbbT.dL\x94\xd1\x92\xacJl\xaa\xa4r!\xe3\x1f\x05\xfd\"\xa3HR\xb9\x90\x00GF\x04E,\xeb\xff\xc9\xe5B\xe8\xbd|\xfc\x01W`\xb0<\xe4\xd7y\x915\x1bm\xfb\x98\xbb\xc9>CX\xd9\xcejk2\xd3\xb6\xed\xb3a\xadC\xe4\x85W\x05\x9c+Wz\xf0\x0c\xea\x1b\xfd\xed&-\xe1\x07-\xb2\xea\xc3\x19\\\x1ekg \xbc\x7f\xf1\x873\xf8\x8c\xa9\xb0\xa6\xc8\"\xe45\xd4\xe5\xf8\xdb\xd8\xa7\xb5mr\xa9\xeaZ\x1d\xe0\xc7?\x07\x0cl:\xb2\xa2\xebA*\xaa\x02\xa9\xa8J*\xaaB\xd9N\xa9\xa8\xca\xf0\x19\xcaz\xb3\xc4C\xac\xa7\xac\xb9\xbc\xfe\xd2jlH)k.\xed\xfc\x07\xd9\x84\xe6\x9c},\xb1\xa2\xe9x\x07.K!'\xca\x90\xb8QsL\xdd\x01\x02\xfd\x01\xe4\xd9\xaf#\x81\xd8\x81\xda\xe1\xc7\xc4:P\x0fI \x0d\x10JD\x93(\xdaM2/\x1c\xf1\xa7\xa6#\xee@\x81|\xb0@:`\xcc\xe3<\xfa\n'j\x8d\xbc\x9co\x1f\xe4w\x94\xba\x89\x1a\x12\xdb\x17\xe1(\xa2%\xa4\xa8S\xd6\\\xf96\x9a\xb2\xe6\xf6\xe8\xd4rNYs\xefU\xc8)k.%\xb4_r\xd6\xdcTTE\xfaf:\x1ev\x94\x8e\x87\xe9x\x18\"\xa6\xee\x00\x81\xfe\x00\xc1\xa9C v\x90\xed\x99\xe9x\xc8z\x87;P \x1f,\x90\x0eX:\x1eN(\xa2%\xa4\xa8\xd3\xf1P\xbe\x8d\xa6\xe3a\x8fN-\xe7t<\xbcW!\xa7\xe3!%\xb4_\xf2\xf1\xf0g\x0c\xf5IEU\xa6\x94\x8a\xaa\xa4\xa2*\xd4s\xa2\x06\x80\xb0\x11\x90\x8a\xaaXb*\x8019\x85 \xaa[\x92\x8a\xaa\xd0\x94\x8a\xaa\xe0\xc4\xc5\xf2\xe3\x94\x8a\xaa\x84iF\x83(\x93`H\xa9\xa8\x8a\xe4\xc8\xd2Q\xc4-\x9d\xa3\x08\xe9A\xa4\x04\x01\x84\xb7w\x8e$\xb7'c\x92\xaf\x0cG\xd2\x01\x87\xf8A\x87\xd8\x81\x8f\xba\xeds$\xb8\xf5sD\xc7\x81\xe0\x14!\x97\x08y\xf0#IpJEUdM\x93e6\xb1\xc4\x0d\x87a3\xe4\xe7\x1f\xe5\x05\xd3\xe0t\x1f\xe2\xa4\xc2qp\xba\x8f\x96\xa5\xa2*\xc2\xc6\xa5\xa2*=:}\xbfbNgt\xe8\x0f_\xb3\xa4\xa2*c\x92\x9b],?\xbf\xa3\x18\x8b\x90\xefWs\x94N\"\x825h)\x9dD\xbc$_\x12\x8e\xa4\x03\x0e\xf1\x83\x0e\xb1\x03\x7f\xdf'\x91TT\x85\xcc\xaa\x84S\xf4\xc4\xe0a\x10\x87$\xcd\xcb\x84\x930[\x13N\xc2\x1cN8\xf13;\xe1\x14\x95\xef '\xf9\xd1\xcb\x123m\x94\x90++\xc9\x14Nb<\xcf\x90\xa2\xe7s\xb4\x9ac8N\xa74\xbb\x99\xb2\x9bTKlL\xc5\x90f\xb7U$\xd2\x18\xe3\xdd\x127\xdb\x96\x80e*\xaa\x12zT\xb4\xc7Iv6^\nhG\xb2\x9d\\\xb0\x8b\x0bzgI\xd2GKb\x1d\x17\xb5\x18#\x16\";\x85\xb4#\xb1\xb0 J` M-\xed(Jp\x10'<\x90\xa7\x9cvt\xbf\xcd\x8c\xb1\x1a\xb8)\xa9\x05,c\x0b\x0dHST;\x8a\x12r\xcc\x81m/O]\xed\xe8\x1e\xda\xb8OEU\x02$\xd4\x80B\x01A\x84\x90 N\xf7E\x08\x0bb\x04\x06\xb1Z\xef\xfe\x1a(\xd7w\x8bk\xbbX]\x17\xa3\xe9\"\x04+\xd3 0G\xc7\x9d\xbcu2\x1co\xfb\x96\xacY\xbc&\xa5\xa2*8\xf1U {\x87`J\xd0\x92@\x87\xb0\xf7\x03v\xe7A$\x00\x90j\x7f\x91 @&\x0c\x90\xeb\xfa\xd36G\xa2\xd9\xb9:=\x15U\x19\xd0 \xda\"\xd3\xd0\xcc\x060?\xcd\xb9\xb8\x13~\x91\xba\x94\xe3\xde\x0f\xa5\xa2*\x1d\x85F3\x15Ua\xb8W\xc9\xed\x88\xde\x82R\xfa\xeb\x01\xa5\xa2*\x1c/\x95\xd0M't\xc8\xf1]oQN\xb6TT\x85\xbd\xad\x91^%\xc1\x97<\xdd\xf9\xbb+\xaa2j\xc3\x7f\xf7\xdb\xf0\xcc\xc6\xf0TP\xab6\xd7\xb4\x16\xa1\xfd\xe1\xcc\x9a\x9b\xbaQ\x0ddm?J\xd6\xddcu\x95\xab\xed\xc6\xa5\xcbV\x1b\xbd\xe3_\x0e\xf3tO\x9a\xd2\x8a\xe3[U\x7f\xafg{m>\xfbNU\xfb\xb2\xa8\x94K\x18~p\xff6-s\x01\xc7\xff~T\x87\xbbG\xc37\x1bv\xef\xde>\x87\x9d\xaao\xca\x8d\xfe\xa8-\x19\xb3\xba\xcc*\xb5\xea\xba\xb9\xfa\xf4\xf8R\xd5\xd9\xe3U\xcb\xa1\xb5\xaa\xdf\xab\xda5\xc1N\xb3\x89\xca\x9c*I\xab\x16\xc7F\x07:\x1b\xb1\xbd ;2c\xda}\xa2\xd5=\xda\xdc\xa7\xc5=\xca\xc0\xbbj<\xe7\xd0\xc0\x1e\x12\xda?\xf4k\x17\xc7\x03\xba\xbb\x13\x0b\x97c\xcd>\x85\x1f\xdf}\xff\xe8\xa0\xaa\xf2xX+(\xb2]\xb3\x86\x8eE\xfe\xd3Qm\xef@/\xac:\xbf\xca\x9bSX\xdddR\xf2a\x0e*u\xc8\xb3m\xfeW\xb5\xc1\xc3\xc1\xf6\x87\xb2.\xd7\xe5\x16.\x8fWW\xea\xe0\xe2\xd6W6\xe5\xb7\xed\x0b\xec\x8eU\xbb\xc0!\xaba\xab\xb2\xca\x93\xc3\xa0,\x14<x\xf4\x00\xd67\xd9![\xd7\xea\xa09)c\x16C\xa5\xaew\xaah\xb5\xcf\x8f\xef\xbe\x7fX\xc1>\xabo\xcc\x07Pvm\xc4;\xfe5\xcd\xe6\xea\xb8\xdd\xde\xc1O\xc7l\xab\xa5\xb2\xb12k>a\xa4\xf3EVy\x13\x02|\xd0\x9f\x7ft]\x96\xd7[\xb52\xb2\xb8<^\xad^\x1c\x0f&\x86\xee\xc3\x97\xb6\xf5\x86euS\x1e\xb7\x1b\xb84i\xaa\xf0\x88\x88uV\x94E\xbe\xce\xb6f\x81\xe0_\xfcB\xad\xaeWgZ\x84&\x1a\xf0\xc1\xea\x81\xd6\x11&\x95\xfbz\xad\xf6\xb5\xda|\xb9\xfa\x15\xfe\xea\xab\x02\xf6Z\xa8\xf9Z\x9dA\xad\xb2]\x05\xc7\xea\x98\xe9\xee\xdb\x0c\x00\xfb|\xab[W\x97\xa6\xf3\x97y\x91\x1d\xee \xdbnq\xd9\xdd\xedU\x93\xce\xdd\xe4\x0dA\x1fR\xb7{\xb5v\x95\x03\x8e\x95K\xd1e&\x83\xba5C\xf9\xb4\xb8[\xc1w\xe5g\xf5I\x1d\xce\x8cj\xfb\xf1\xdd\xf7\xf8\xa9\xde\x1a\x02\x9a\x8d7\xcdH\xb5\xbeQ;\x05\x1fn\xeaz\xff\xe1\xcc\xfe\xb7\xfap\x06\xe5\x01\x8a\xb2\xf9\xf5\xcc\xcc\xb2uV@iV\x93\x91\xc0t'\xb1t\xdc7\xf9\xc6<\xdfS\x87O\xea`\xc5\xb0\xcb\xf6M\x89\x05\xdd\x03s\xdek\x12\x93\x99{\x8f\xdc&\xa6\xcf\xf0\xbe]\x95\xdbm\xf9\xb9z\xe2\x19\xbb\xff\x0d\xaf\xae\xba\x1e\xe8!w\x89E\xdaN\x9a\xfd\xb9\xaa\x8e;\xb5\xf1d\x9e\xf8\xdf\xf0\xb4\x80\xef\xce\xcf\xdf\xc2\xb7/\xcf\x9bl\xfe\xba\xadv\x81\xde\x99\xdd\x0b\x9f\x99\xff9\x9e\xe2\xe7w{\xf5\x97\xff\xfc\x0b\xfa\xb0\xd1\xe5G3\xd6\xcd\x1c\xb2\xfa\xfe\xcc\xe6\x9a(7\xc7\xb5\x82\xac\x00u8\x94\x1e\xd8\xf6\xff\x86\xa7](je\n\x13dZ>vS]gk\xad\x13\xca\xf2\xe3q\x0fM\x10\x02\xe8\xcdm\x03e\xe1[\xe8\x9e\xa6\xfe\xf8\xee{\xd3\xae\x9b\xec\x93\x99V\xbb\xdeZ\xd8\xd8\xc5\x90\xb9n\xe8\xff\xffT\xe6\x1b\xc8\n\xdf\x85\xadm\x94Y\xf6\x07uU\x1e\xd4\x99{Y\xf3\xcc\xea\xfc2\xdf\xe6\xf5\x1d\x14Jm*k \x80QQ\x87O^\xa4LYhuX\\+\xf3\x82Yw+\xf8\xe2\xc7J\xb9(y-\x15=\xed\xb4\x9e\xb1\xf3.+\xb2k_\x8f/\x0f*\xfb\xa8uG\xc3t\xf5%>[^\x97\xb5zb\xeb\x86\\\x1d\x8b\xb5])\xba\xed\x8d\xbeY\x1f\x0f\x07U\xd4\xdb\xbb\xde-^ \x14\xba\xbc\xba\xca\xd7y\xb6\x0d\xec#\x97\xc7+8(\xbd;\xa83\x13\xa0\x9c\xd7\xeecG=\xb8\xc6\xeei\xd7\xd7\xa5\xba\xce\x8b\xc2g\xe4j\xb3\xcd\xa3\xf4\xef\xf6je\xe7s\xb6\xcf\xab\xd5\xba\xdc\xf94\xe6{\xb3\xda*(\xeb\x1b\xbb\xc8\x8b\xb1f\x81/\x1a[L\xed\xf6\xf5]\xb3<\xbfD\x99\xed\xcc\x95\xcf\xa5G\x91\x98\x0e\x1a[3\xdf\xed\xb7Jotf\xf2C\xb5W\xeb\xfc*_C\xa5vYQ\xe7k\x04Pd\xd6[\x84I!9\x07x,\x8e\x1f\xb4\xea\xb8T.\x15H\xcf`\x98\xd8\x06.\xc8\xfc\xb2\xfc\xe416lW\x9b\xe9<\xee&\xd5\x9a\x0fO\x8b\xbb\x0f\xdd9\"+ ;\\\xe6\xf5A/\xbe@\xab\x1a\x1d=a\x97m\xcb\xe2\xda\x8eH6\x1d2\xad5\x8d\xd2\xb7\xad\xba\x9c\x9aS\xfdo:\xab\x08\x99fo\xdd\xc4\xdf\xe6\x97\xa6\xa9\x8d^\xaf\xa0:\xee\xf7\xe5\xc1\xec\x9c\xfbl\xfd\xf1\xd1\xb1\xd0\xff\xd1\xfb\xa5\x1doc\x95\x8c\xd9\x19\x8b\x065\x1e\xca+8\xd6V\xf9\xb8\xe5\\i\xc5\x97m6\xb9]\xdbp\xad\nu0\xf9\x8b\xec\xd1\xa1\xcd\x0b\xf0\x14\xd1wv\x88\xa6\xdfyy\x9b\xe9 \x0c\x8f\x9f\xc0[\xdd^\xbd\x8e\x9b\xa6g\xfdL\x9d\xcf\xff\xe1\x1f<\xdb\xd47e We \xbf\x87\xd5j\xf5\xff\xa2\x8fh!d\xc5\x1d\xfecV\xdc\xad\xf4\xa7\xbf9\x94\xbb/\xae\xca\xf2K\xfc\xb1\xd5\n\xdf{\xf2+\xf8B\xb3\xf8\xd14\xfa\xbc\xfc\xe2\x7fi\x1e_\xc2\xff\xf5\xe8S\x1f\x9f\xbf\xf9e\xf35!\x9b\x7f\xcb>e\xb3\x85\x03\xbf7\xb6\x95\xe6>C\ny\xf5\xc57e\xb9Zo\xb3\xaa\n\x08\xc16I\xbf`\xfb\xd3{ \xff\xee\xdf\xd0\xbf>z\xa4\xa7$\xdd\xa6\xf7\xd9Ni\x13\xe4\xa9m\xdd\xb5\xaa_\xd8k\xa7WEUg\xc5Z}\xf1\xa5\xb4\xb1(\x0f_\xdb\xbd#\xfb\x1bbd\xdf\xde\xd57e\xe1\x19[\xdb\xaeo\xca\xf2\x8b\xd5j\x85o\"\xed\xb8~\xe1\xfd\xdd\xcc}3\xe2\xd2\x01\xd7/\xbf\xb2\x12}\xf1\xf2\xfd\xf3w\xaf\xde\x9e\xbfy\xf7\xa5\xef\x9e\xa9[#\xfe\x8f\xd9\xcfy\xa5\xf5[BZ\xdf\x96\x9e$$ZRO~\x0f\xffk\x7f\xb9\xfa\xa6,\xff\xefj\xb5\xc2\xe7\x93n\xe4\x9964\xf5\xd3Yq\xb7\xbf\\\xbdV\x9f\x03\xed\xcd\xaf\xcc\xd3\xff\xcf\xef\xa1\xc8\xb7\xde \xe4\x15\xa2gZ\xfb\x9f\x1fu\xc4\xf3z\xd3*\xdb\x87\xd5\x8f\xc5.;T7\xd9\xf6\xbc\xb4\x0b{n\x93'\x7f\xd7\x87V3\x1an\x1f\xe8g1\xdc\x8fw,[\x8b\xec\xce\xdd\xfcN\xb8\x1d+\xc4\xe6y\x88\x98a\x8f\xf4Y|e~\xd0\xa6\xecC\xc8z\xbb\xaa\xdeq\x9b\xa45\xd3/\x98\xb93\xfdH\xbb\x8d\x15\xdb;wn\x9c\x1c\xf8[\xd3\x19\xb2\xabZYkn\x9b!\x17\n\x0f\x1f=\x9c~\xa29\xd0\xba&\xda\x13\xacj\xe6\xf7\x83\xab\xb2\\]f\x07\xd3\xb9\xdbGw\xab\xbf>\xb0\xd2\xb2g-\xfcXi\x9a\xf2@?\x8bm\xaf\xff\xf6\xfe\xcdk\xe4\xcfz\xc4\xf4O\xdd\x8d\x87\xb5\x1eK\xbd\xaa\x1b\xd3\xc8\x9e\xca\x8e\x95rw\x8a\xd7\xc7m\x86\xa4\xef\x9b\xb2\xd0\x8foTg\xd0\x9c\x81\xda]\xaa\xcd\xa63m\x9a{\xd2\x0c\xb9'\xe9\x19\x18\xf6\x82\xf4\xc3\xbf\xea\x8e\x7fh\x8e\xf3\x83\x8b_'\xc6\x95S\x11O<\xc7\x85l\xfdQ\xeb\x88\xeeXz\x95o\x15\xae\xad\x9d>y\xab\x0eUYx\x17HsWe\x8a\xd8]\x981\xf8=<\xc69\xb6\x0f\x1bom\xf3\xec\xd7\xec\xbdB\x93\xaf\x15\x0f\x8cl\x1e<\x81\x07\xd8\xfa\x18vwe{\xf4\x00+\x17ix\x99\xbe\xbc\xcev\x9a\xdf\xff\xb1M\xfe\x17\xef\xc3\xba/\xa3g\xb9\x1dzu\xd5\x1c\x81\x86s\xc2\x8ef^\xc1g\xb5\xdd~\xf5\xb1(?\x17f\x05\xdf\x98\n\x96\xebcU\x97\xbbf>\x8f9\x0e\xa7\xe0\x995\xb5G\xf3\xd2\x95@l?\xab'Zq\x8d\xdc`\x98i7\xfd\xc8\x07\xb3 \xdc<\xbc)\xb7\x9b&=X\xd72sW\xd7\xcc_h\xee\xc5\x9a\xe9;\xe5g>\xd3\xce\\\xf8Bk\x02'\x8a\xc9\x05\x8a\xbb#\xfc\xcb\x7f\xfe\xe5K\xcf$\x9f;G\x86\x1f\xf2O\x13#\x06\xcd\xee\xf1\xea\xeb\xc7_W\x0f<\xc3\xde\xffW\x08B\x128s\xfa}\xd2$>&\x82\xeb\xe0\xc0\xf8\xc7.#lO\xd58OJ\xeb|\xf8\xaaR\xad\xf7j\x9f]\xe7\x85\x91]\xd7\x98\x01\xcf\xee\x81\x16\xd9\x94\x15\xfd\xbf:\xf6\xce}\xd3\xed\xc05\xe6>\xc0\x1d\x07&q\xca\xc4\x03\xe1\x95\x87\xf7L\xefw\x81A\xef+N<\xfa\x7f\x9b\xeb\xa9\xac\xaa\xec\xbd\xdb\xdb\xecZ\xbdS?\x1dUU\xaf\xec\xef#&?\x1d\xd5\xc1&\xe0\xd5\xec\xb4$\x14\xec\xca\xaa\x06e.\x7f\xccm\xd1\n^\xd5\xbd\xb5\xbb\xaf\xef\xa69z\xeb\xb6\x1ciQ\xc2\xae<(w\xcb\xd77a\x10\x94\x04)\x14$\xeb\xa0\x0f\xc9f\xd8\x1bi\x98\xff)\x8e\xbbK{\x87\xe1.\x1c{\xb7^\xe3\xf6\xf7\x05\xb5.\x8fE}a\x98\x8c\x97\xf9\xe7\xac\x82J\xd5g\x90\xd7\x95\xbb3\xad\xe0X\xd8\xc9\xb4\xb1\xd7N\x9f\xf3\x06\x15G\xf8\x0d1\xdf]\xd0}\xd80h\x9d\x88}\x06\xcf\xeel\xfdX\xb1\x1f\xf1u\xb9Q\xaf\x8a\xabR\xec=l\x8c\xc7\x8b\xa2\xdc\xa8\x8b\xbc\xb8*\xc7^@\xd6Zq\x97;\x17h\xfeP\x94\x91\x9f\x99\xf9\xe5k\xc4\xa3\x1f\xbcU\x0bL5o\n\xd0x\x86h\xd2\xce8v\xc3\x11\xd8\xb0V\xd66\xafjU\x18\x80\x05\xeb\xf9B\xd5\x9f\xcb\xc3G\xd6\xb3\x81!\x9c<\xbb\xbe\xc9\x8aBm+\xd6\xc3^\x1d\xb9+\x8b\xfc\xe3xC\xf301ks\xf6\xf4\xaao}\x15\x0c\x02cx\xd8\xafE\x15\xcb{Y=\xa7\xebB\xb0\xb8\xb4\xa1\xcb\x92M\xb6\xdf_\xb0\x1f\x96\x0c\xf3u\x1e\x02GN\x1e\xbf<\xe6\xdb\xcdE\x9d]\xf3\xe6\xc5u\x19R\x1b\x1e\xee\x1b\xb5G\xb9O!i(\x1c\xcd;g\xc20\x82}V\xa3\xc0\xbd\xe0\xcao\xf7\xba]\xb99n\x95a2y(\x90xY\xc4\xbc\xe13y\xae\xc21o<\xde\xeb\x1b\xb5\xfeX\x1d\xc7\xd9\xe9\x9b_\x7f\xb0_\x1e\xdbw\x7f\xb4-y5L\xb4e\xb7\xb2\x8bj\xf3Q4\xe8\xed\xc7\x1e\xbe\xcf\x8b\xb5\xc9\xe4\xa5\xf9|Um>\xc2\xafW\xbf\xfd\xcd\xc3\xf6\xd9\xa1\xf5\xd9\xb5\x01\xb5?\x91\x9d\xb3s\x1aL\xb8\xf57\xff\xc9k<\xc4\x90{Mo\xf0\x0d3\xc96\xff\xfe\xaeX\xe7\xc5\xb5x\x97\xaf\xec{c\xf5sY\x96[\x95\x15\xe1\x9e\x8e\xbe\xc9\xech\xf3Vd?1\x9bH\xdc\xe9\x04\x8cro$`T\x02F%`\x14$`T\x02F%`T\x02FYJ\xc0\xa8\x04\x8c2\x92J\xc0\xa8>%`\xd4\x84\xf8\xd8\x9f\x04\x8c\xc2\x1eI\xc0\xa8\x04\x8cJ\xc0(K \x18\xe5(\x01\xa3\x120*\x01\xa3\x120\xca\xf7p\x02F%`T\x02F%`T\x02F5\x7f\xff\x1f\x03\x8c\ny\xef\xee\x19\x1a\xf5]/c\xd0d\x8aO\xa7\xf7\x14\xa6A\x148\x16,\x1b\x04\x83$\x9f\x1e\x13\xdc\x91\x94\x85\xff\xd2\x8aW\xb4\x17\xb8\xc5x=\xe5v\xb9\x05u\xd1B\xb9CA\xe0%s\xa9\xa2\xb8\xd3\xb2\xb7\x88\x08\xa3\x9d\xc6\xc3\x02\xb3\xc1\xd7\xc6\xe9f<e`\x053l\x9aV\x8a\x9c\x1d#\xa5\x1c\xcc\xb4\x85\xb6\x04\xc28+<\xa3\x96\xe5\xc4\xc8\\6\xc1\xdd\xe1\x99\xb3\x02{q`\xff f\xc8B3c\xf9\x0b\x81\x06Gz\xf0e\xba\\'R\x90\x93\xcb\xde[\xe7\x91\xcb`\xdc>\xb2b\xe5\xa0hC\xb8\xd6$\xb7\x0d\xbe\x8a\x90\xdc\xf7\xa7u\x1b\xb9o\x06\xaa+rYxj r_\x0fW*\xdc{k\x11\xa2\xfc\xfd\xba~\xcc\xc8\xed\xca\xe5!\xd7\xb6b\xa3\x98a\x9cs\xe9\xacir\xad\x0f7}\xb7q\x06\xcf\x86 \x97z\xbf\xbd*\xe0\xbc\xdd\x98\xcf\xac\xff\xce\x1d\xc4>\xe8\xaeW\x1f\xce\xe0\xf2X\xbb\x9b\x8b\xf7/\xfep\x06\x9f\x95\xcb\xe7d}\xf5\xfeo\xf5?\xa5\xf7\xa6KU\xd7\xea\x00?\xfe\x19\x01p\xd1\xd5\x0f\xbb\x966\"\xe8\x8a\x1c\x12\x96\x86E\xc1\xb1-\x8d!\x92\x10\x1d>/j\xd0\x03&\x0d\xbe>\xc4\x05\x0e\xd0\x80\xa1\xb7\x07\xc8? \xde\x8f\x90\xd6\xdbCY^\xbd\xd9\xb3\xc5e\x1e \xb5xp\x1e\xe1\xae6\xadi\xa5o\xe1\x8b\xaa\xe9O\xff\xd8\xa5\xbb`O]\xad\xafx\x9dm\xd7\xc7mf\xd2\x92\xfe\xa0\x0e\x1f\xb7\n\x0eeY[PNo\x07X\x97\xc7\xee~\xe0R\xf5\xfc\x86\x0e\xb8`\xef?5\x9fBiSL\xfff,\xa8\xfem_\xa1\xad\x98\xcb\xf2\xd8\xebPQn\xda\x1b>\xad\xa1\xba\x1b=\xeb]?\xef\xaf\xce\x0c6Gke\xb5>D\xd7Os\x9a\xb7\x0f\xba\xc3A\xeb\xfc\xeb\xd6\x10c\xd94\x0c+\xf6L(\xf7'\xc6\xe3\x0d\xa7Z\x9f\x05b`x\x81x\xc1\x8b\x81\xe9Qx0\x11c\xf9\x84\x1c\xd2\xf3'\xe8\xa4\xc1\xc3ij)z\xb2\x0e\xb8\xf4'\xee`\xcaZ\x1aN\\K\xcbM_K\xc3IL,{\xb3\x7f6\xf2\xda\xeb?\xb5\\/\xed\xed\xc36\xaf\x0c\xb6\xcc=\x1f\xb9\xec\xaa\xe5\xd6]{\xb4f/<\x8e\xcd1\xc1\xa6\xa2k\x0f_y5\x8aD\xf5\xae\x820\xfabA\xdc\xa9\x1fq\xba\x1c\xd6t1\x94\xa9\x17_\x8a9\x9a\x98\xc8\xd2\xa50\xa5a4i\x14\x8e4\x1aAj\xfa;\x06>z\xb1\xa3\xd1\xa8Q{\x95?\xe2\xe6\xc1\x8b\xceA\x8a\x1aT\xe8\xb87\x883/\x06\x1d\xeaG\x82\xce\xc4\x80\xb2\xd0\x9f|\xa4\xe7\x0c\x8c\xe7\x0ct'\xa20\x16\xc4p.\x8b\xde\\\x0c\xb7I#6\x17\xc3j\xfaP\x9as\xf0\x99(\x16\xb3\xe6\xa00c\xf1\x97^\xace$\xca\x12\xc1Wz7J\x9e\xffe\xb2\x83F\xe2(;\xcc$&\xdf_\xd1\xdf\x9e\x87\x9a\xb4(\xc9\x1e\xbb)^r\x01\xa4\xe4<\x8c\xe4h\x96\x8f7\xc3\x99\xb8\xc8F\xd0}\x8es\x10\x90Ax\x9f\x07\xf5H\xe2\x1d\xa7\xd0\x1f>\xc6q\xfa\xee\xdf\xb0\xbeF!\x1a9\x9d\xa5P\x8c\xfe\xbe\x91\xc8E\x01fq\x8c\xcb\xf2\xe1\x14\xe7#\x14\xe3\xb1\x89\xe8\xb8D\xe2\x11\x83HD?\x061\x84>D\x85\xc5E\x1cRX\xc3\x11\xcap\x06\xbe\x90\x81,\xe4c\nI4!\x02\xca\x9b|\x0ey\x86B\x0d\xce\xc3\x0b\xa2\x8d\xea\xfde\x16:p\x8c\x06\x9c\x83\x03Dp\x7f\xb3\x10\x7fc\x84\xdf\x92\xd8>\x1f\xaao\x82\xe7[\x06\xc9\xb7\x18\x86oY\xf4\x1e\x0f\xb7G\"\xf6\x9a\xb3>\x85\xd5k\x1e\x0b\xa2\xf4&p\xb6\xe9\xd7\xb8x\xab0&\x8f\x89\xc6c\xe0\xf0\x06M^\x12{7\x0bu7E\xd9-\x87\xaf[\x0eY\x17?\xba$\x9a\x8e\xc2\xd19-\x8dc\xe7\xd0\xf3\x04\xe6\x9a\x0f \xe5\x98<\xe6\xe0\xe2\xa8k\xce\xce)\xc5\xbe\xe8\x1c\xa6PA\xfa0\xcd\xb3\x82<\xc4q\xd2ayU\x90\xc7\xb0|*\x187$\x8f\x8a\x97\xdb0\x7fJ}\x02?\n\x96+\xc5{H%s\xa4x\xf2\xa3\xb0\x19byQ\x90\x9c(4?$\x17\x8a\xc4/\nD\x0e\x14\xb4\x01\x9c\xdc'K\xe6=\xe9-\xa4\xfd\xd7\xfbUc\xea\xbb7\xd8\x0b\xc9\x9f\x15\x0c\x9dJ\x9e\xd4b\xe3L`\xde!\xf2\x82\xe6~ \xc8;o\x96/\x84\x0d\x9a\xdd\x0byn\x92\xd5+R\x0dM\xb3x\x05\x15w\xef\"i\x92\xb9\x0byq\x94\xb1K0\xf4x\x96.\x8f\xdc\xbd\xd9\xb9F\xcf\x87\xe7\xf6\x9b\xae\xb1\x8c >m \xd28\xb4a\xe1F\xbdm\x16\xce\x1f\xfb\x83\xc7h\xcf`\xad\x04\xc7p07G\xeb\x83\xff\xe2`Mp^\xfb\xff\x02\x00\x00\xff\xffPK\x07\x08\n0\x17z\x15\x95\x02\x00\x9e\x11%\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81k \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xef\x0c\x00\x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81wF\x05\x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(_;\x94/\xe8Y\x00\x00\xa8X\x02\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81S\x01\x07\x00swagger-ui.cssUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\n0\x17z\x15\x95\x02\x00\x9e\x11%\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x80[\x07\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x08\x00\x08\x00E\x02\x00\x00\xd8\xf0 \x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04<IDATx\x01\xbdW\x03\xcceY\x0c~k\xdb\xb6m\xc4^\xc7^\xdb\xb6=F\xf0\xdb\xb6m\xdb\xb6m\xf3\xa2\xd3o\xf2\xce3\x7f5i\xeea\xdb[\x1f\x8d\xa3\xa0\xaa\xea\xa9\xb2\xb2\xf9\xa4\xacH?\xf27B\x92\xd7\xabx<\x02\x94\xe4\x8d\x1a\xfeFa\x0fgpV\xb3S\xa0\xa8\xf2\x85L\xf8{E\x91\xfa\x88Tr\x04p\x96\x05\xf9\x91\xef^l\x8f\xbe\x9d?\x96\xdef\"S\x820\xaf\xd1\xf0t\x03\x95\xb4zRb\xe5\xcf\x14^\xf4!\x90\xc7?Qq\xab\x07\xef\xd5\x13\xce\x08\xc0]\xa6\xf1.h9\xc9\\\xb9\x98\xff N\x10[\xdf\\\xa6\xbc\xa6\xe3\xf4o\xc4\xdd\xf4\x99\xa7\xc6&\xfe\x13q\x17\xe56\x1e\xe3;K:\xa1Y\x88\x04\xd0t\x94\xf9\xd5|\xa1A\\\xae\xea\n\xa1_\x82\xaf\x01q\xa7\xf0\x97\xa0\xab\xa9\xb23\x084\x84Y\x9a\x98\xf6\xb5v\xff\\0g\xc7\xa2\x90\xfc\xb7Al[\x18\x9c\xff&\xb1\xc3\x1a\x08\xa1^l\xcb\xe6q\x82\xb9G\xc6+ \xb0#\xe8\x9e\xf6\xa2\xa1\x10 \x16}\x02\x0e\x07u\x01C\xf2\xdf\xc2\xc5\x1d\xc5\xa0\xbc7H\xd0\x87c\x9a\xaa\xfeB\xf6\xd8 b\xa8\xea\n6\xba\xf8\xb5\xcf9T\xd1\x11@\xab\xebs44Uk\x97\xd1\xe0T\x0d\xadn\xcc\xc3\xfe\xf4\xb5\xef\xb9F{\x15\x9d\x01\xba\xe80\nQ\xc4\xb9\xf0vS\x87\x8b.\xfd\x82\x00\xe3sm\x94\xddp\xc8\xae\x00\xd9\xf5\x07il\xb6\x85\x00\xb1e_\x1b\xed\xfd\x1ct\x95.:\x90\xb4t\xb6g\xbb\xf4`1\x8f\xc3\xc7\x94 \xa2\x00\xb0?\xfa!\x87\xd5\xfd_\xd4}\x04\xa8\xed\x890\xdb\xcbi8\xa2\xf5\x05\xb9\xef\xa4/ u\x8a\x90C\x0c\x9b^h\x19L!\xc0\xef\xa179,\x00\xb4\x08h\x1dL3\xdb\xfb;\xfc\x0e]h2\xef\xa75P\x05&\xc8b8`.@\x1a\x01~\x0b\xb9\xdea\x01~\x0c\xbc\x1cL\xa8u(\xdd\xd2>|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4<B\x8b\xab\x13\xa0\x81\xd0\xb4.\x00\xab\xd8\xaa \xf6\xc7<\xac5A \xe6\xf4\x05\xab\xf7k#\x13\x9c 42\xc1\x17:\x13\xe4\xc3\x04\x10\xde\xae \"0)\xb6\xe6\x84\x13\xc2 \xcfr\xda \xfb'+-;a\x8bpB)fw\xc20\xc0f\x18\"]\x0b\x01\x10\x86\x92A\"\xbas\x0f\x12\xd1\xed\x06\x89HzZ\x9b\x8a\xe5>,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\x9cT]k\xdc:\x10}\xdf_1Q\x1e\x92\\\"\xfb&\x81p\xf1\xb5\xfd\x90\xa6\xa5\x81\x94\x06\x92}(\xa5\x14\xd9\x1a{\xa7\x91\xa5E\x92\xf7#!\xff\xbdX\xf6\xae\xb7\xdd\x90BYX\x8f\xe7\x9c9\x1a\x1d\x8d\x9c\x1ep\x0e\x1f\x1f>\xddBe,8/<\x95 \xc9yKE\xeb\xc9h(Z-\x15B\xd1\x92\x92\xc0y>I\x0f\xae?\xbf{\xf8r\xf7\x1ef\xbeQ\xf9$\xed\x1e\xa0\x84\xae3\x86\x9a\xe5\x13\x80t\x86Bv\x01@\xda\xa0\x17P\xce\x84u\xe836}\xf8\xc0\xffc\x03\xe4\xc9+\xcc\xef\x97\xa2\xae\xd1\xc2\xf4&\x8d\xfbL\x8f*\xd2\x8f`Qe\xcc\xf9\xb5B7C\xf4\x0c\xfcz\x8e\x19\xf3\xb8\xf2q\xe9\x1c\x83\x99\xc5*c\xae\xd7\xe0-E!\xbb'A\xa5\xd1\x9bbjD\x8d\xf1\\\xd7\x9b\xeaJ,:\x9c_\x9c\xaf.\xce\xa3\x008zB\x97\xb1\x90a\x10\xff\x9d\xde\xd9\xe5\xea\xec\xf2\x17\xbd\x90\x19\xf5\xc2\xc6\xfa\x18\x82\x9bC\xf8<<\x01\n\xb3\xe2\x8e\x9eH\xd7 \x14\xc6J\xb4\xbc0\xab\xff\xb7\xb8Y\xa0\xad\x94Y&\xc0\x1b\xf3\xc4]i\x8dR\x85\xb0\x8e/\xd0z*\x85\xda\xe7\xf2u\x02=q\x83\xbdL\x86\xe0\x9f\xd3M\x90\x14X\x19\x8b\xe3\xbb\xa8<\xda7\xfb#=CK~O\xb40r\xbdW\xd8\x08[\x93N\xfe\x1d\xdb+D\xf9X[\xd3j\x99\xc0a%\xba\xdf(\xd5\xfd\xa7\xf1\xd6\xaf4\xee'\xac\x0b;\xf9\xc1OI\x0b \xb9;\x0e,OcI\x8b|2\x18^Z\x9a{p\xb6\xdc%\xf1~\xc6\xa3\x1f\x8e\xe5\xdd*\x81\x94\xbfY\xe1\xbc\xd0R(\xa3\x91\xcf-:\xf4o\x14\xf7/K\xd2\xd2,#\xa3\x95\x11\x122\xa8Z]v\x17\xec\xf8\x04\x9e7N\xc51\\\x85{&\xc0\xad\x9d\xc7f\xc8\x97F;\x0f-A\x06\xc3m\x99\xde\\\x85\x9e\x8fGG[\xab\x12`Q<t\x19\xadE\xa3\xd8\xe9\x16\x96\xa6\xf9N2\x81\xa3\xc3q\x1bG;0\xe2\xfc\x96\xf4c8Io[\x1c\xa1~\x83.\x81\xaf\xdb\x14\xfc\xdeG4\x90\"1'w\xfa\x1a\xef~\xeb\xd8]\xa0n9\xdfvVRmM\xfaO+\xf5\xa4\xe8\xda,\x83\x97S\xab^\xd3RbmZ\x9f\x00\x1b\x17\xbe\x0d)\xb6\x19\xaa\x93\x8d\xed\xc3\xd1\x04\x7f[\n\xc9\x970d\xe3\xf9\xa5q?fi\xdc\x7f\xf4~\x06\x00\x00\xff\xffPK\x07\x08\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8\xc4VMo\xe36\x10\xbd\xfbW\xbc\xf0\x10I\xb0\xab\xa0=*Q\x82\"\xd8C\nl\xb7\xd8 \xbd\x04\xc1\x82\xa6\xc66\x1b\x99\x94I\xca\x86k\xfb\xbf\x17\x94eK\xb2e\xd4=u\x0e\x968\x9cy\x9a\x8f7\xa4\x1fn2-\xdc\xba \xcc\xdc<\x7f\x1c<\xf8\x07r\xae\xa6)#\xf5\xd3\xdb+{\x1c<\x8cu\xb6\x86V\xb9\xe6Y\xcaL\xa9\xc2\xc8k\xef\xbc\xda?kO+\x8c,\xdc\xe3\x00\x00\x82\xd2\x12\xac3R\xb8\xe0\xbe\xd2LJ%\x9c\xd4\n\xa6T\x08#l*\xad\x97%7\xd0\xbct\xb3_\x90b%U\xa6W\xb1.H\x91\x89\xed\x8aO\xa7d\xde^\xbeS&\x0d \xf7\xad\xb2\xbb\xef\xf8ZR\xee\xd5qGHk\x9c\xd8\xfae\xd7\xca\xd4\x08o&o\xecZ\xca\xae\xb5\xb4\x7f\xf2\\f#,\x8a\x11\xb81\xf7\x83\xe3\xb6\x9c \xbc\x13:\xa3\xad\xd3\x9f\xa4\xb6d\x8c6w\xb1#\xeb\xc2:\xfa\\\x0b\xees\x8dg\xdc\xce\xa2v\xae^\x16E\x93g\xc72\xb6\xe5\xd8\xd7LM\xc3\x9f\xa3&\x9e\x1d(\xb7\xd4\x07r\xf4\xb6\xc4\x8d\xb8\xe8\xdf\xc4\xce\x8dA\x8aE\x11\xdb\"\x97.d\xb7,j\xef\xc5\x13m\xbep1\x0b\x8f\xcd\n\x97#9\xfa\xc1\x8d\x89\xb0\x81\x7f\xbe\xcb\x0f\xa4\x08X\x80!\x96\xb1\xa1\"\xe7\x82\xc2 \x0dF\x08X\xc2\x82\x08C\xbf{\xbfk\x80\xabP\x17\x05\x9e\xf0\xdb\xeb\xb7\xdf\xe3\x82\x1bKa\xb0\xf1\x08\xfe\x9b\x7fi\xa9\xc2\xcam\x17\x8c:9\xa2M\x9b\xf0\x93\xd6#,y^\xd2iA\x0fb\xc8\x95F\xe1\x93\xd6H\xd3\x14\x8c\xe1i\xef\x80\x04\x19\xf9\x96\xbd}\x7fy\xd6\xf3B+R.\xdcc\x9d!\xed\x8e\x9a\x08 6\xad\xea\xd5\xa4\xa8+\xb8g\\\x9a6\xfc\xebr$l!\xd7t\xf3\xbf\xb1\x153\x9a\xf3xJ.d\x93\\\xafX\xb4\x8f\x96\x0bA\xd6>\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8\xec\xfdyw\xdb6\xf68\x8c\xff\xffy\x15\xd7\xfa\xf6\x9b!kZ\xb1\x9d\xa5\xad\x13\xc5\x93\xc5m\xb3g\xe2\xa4\xcb\xa8\x1a\x1fZ\x82,6\x14\xa8\x90\x90m\xb5\xf2\xef\xb5\xff\x0e.\x00\x12$\x01\x10r\xdc\x99\xf9<\xcf\xc3s\xdaX\\\xb0\\\\\\\xdc\xfdn\xc1tI\xc7,\xc9h@\"`!\xfc\xf9?\x00\x00\xbd\xec\xf4w2f=\x18\x0c\x80\xad\x16$\x9b\x02\xb9\\d9+\xe0\xd6-\xd3\xd3y6Y\xa6\x04\x0e\xe5\x1f}\xf5\xf6\x00X\x10\xc2\x01\xf4T7\xfaG\x132M(\xe1-\x8a\xbf\xfa\xf1|\x02\x87\xf2G0\x1c\xe1\x80\x0e\\\x839T\x7f\xf5\x8f/\xe2\xb33\x92\x7f|\xfedI'));&\xe6'\xffs\x15\xb0YRD\xd5\xf4\xd5\xd4s\xc2\x969\xd5\xc0\xa2\x1e\xf0\xeb<\xce\x81\xc1\x00\xfe\xbcz\xf0?\xe5M\xf5*\xd0 \xd7_\xe6W2\x85\x80\x0d\xf3Q\xa8\xda\xe5?\x14t\x1e\xd4^\xe5mg|t\xc3|\xc4\xbb\xa8=\xc4\xb6\x0e \x8fZw\xd3\x03\xd8\xdak\xdf\x96]\x1c\xc0\x9fW\xb5gW\xf5N\xe5\xa8\x08\x1f\xd58N\xd3 S\x83\x8b \x8b@\xfbEC\xfe3\x85\x01l\xedj\x0f\xca\xd6\xaand\x9b\xb4?\x87\x01\x90\x08h\x7f\xcc\xa7\xc5\xff\x98\xc0\xa0\x8ep\x11\xb4@F\xfb\x99\xc4\xc5\xf5\x1a\xde\xe2\xd2\xf7\x05J\xbc\xcb\xb3\x05\xc9\xd9J~\xd9\x86\xd08\xa3\xd3\xe4l\x99\xc7\xa7)\xb1\x80\x85.\xe7D=\xdfm??#\xec\x00\xf2:\xc4\xc2j\x8e|\x0e\xb46\x87\xe6\xe8\x15\x86 Z\x93\xfe\xc9 )^\xab\xbd\xd1\xc25\xfdR+\xc1\xe7\x1a/SV\x1f\x03\x1c\xf8}\xed\xb1\xd6\xb4? X\x04\xbd\xb8\xc7\x81\x1c\x01\xabO/k.Q\xb3;\xd9\x8c\\\x99E\x9e\xb1\x8c\xef\xca\xfe,.\xde^P\xb5F\x02\x9b\xf0\xfbz\xfb\x0b\x18@\xef\xf6$)X/\x02\x1a\xd0>'\x12w\xef\xde\x13\xaf]\x05\xc3\x06~P\xbd\xff\xde\xb2 P\xb0<\x19\xb3^59\x9d\xdc\xd0\xe0\x1b\xd5T\xd4D\xb5ZS\xf5\x8f\xbe\xbdw'\x0c\xbc\xbe3\x0f\x81\xe9+-\xb6\x08S+\xd9\x05PN#\xb6\x02\x02 -XL\xc7\x9c\xbe\xb10\x046\xcb\xb3\x0b\xa0\xe4\x02>\xac\x16\xe4(\xcf\xb3<\xe8=\x8d)\xcd\x18p\xe0B\x0c\xe34.\n\x88\x0b\x88\xcb\x1ezacG\xde\xcct\xaaG\x1c\xc1\xf3\x08)\x15\x0d\xf6\xef\xef\x87\xf5M\x94\xc0\x00\x82\x1c\x06\x90\x85|\x07\xe4\xf5\x1d\x90\xc3\x81\x01y%\x9cZ\x1bO\x1f\x8f\x01\x96M8\x96t\x98\x18\xc1\x8c\xafd9\x04|\x06|\x13\xef>\x00\n\x0f\x81\xf5SB\xcf\xd8\xec\x01\xd0\xedm\xd3G\xa0f\x8d\xc4\x99\x8e\x1e\x18\xdf\xc8\xfb\x15m\x81A\xfd\xe7z\xcd\x89\x11\xe4}\x9d@I4\xe9\x9d\xc7\xe9\x92\xf4 \xa1\x90s\x88\x05y\xff\"OX\xf9F\x18A\xb0\x1bA\xa2 \x10\xf2\xc9\xe5\xfdOd\xc5igk(\x0djo\xda\xb9%\x009.\x18\x08\xb0\xf6*E*\x16h\xdb\\\x1c\x04\xb9\xbc\xcf\xbf\xd6)H\xbd\xcf+\xbf\x1d\xa5\xef\xc4\xfaHJ\xc4\xa0\xc17\xf7\xef70\xadB,N\xca\xff\x9dX\x7f\xf7\xde\x7f\x0e\xe9\xad\x04\x84\xe8\x14\xe3=\x99\x92\x9c\xd0\xb1\"\x1b\x9c\xd7\x81Y\\\xd0\xbf18%\x84BB\x13\x96\xc4iR\x90 \xec@\xb1\\\x90<\x08kop\x12C&\xbd\xd0x\x86l1\x8e\xd3%c\xb65\x18@p\x9e%\x13\xd8\x85\x01\xe7\xd2\xe0\x10zK*N\xedI\x0f\x0e\x9a(\xcc\xe9\x1bg$+\xaep\xab\xe4\xed\xf8\xc7\x04\x0e\xf4s\xe9\xaf[R\x18@\x1cp\xec\xfa6l\xaci&\x1f\xdd\xb9\xfb]\xf3Q\"\x1f\xdd\xbd\x17\x86&>0n\xb3\x05\xea|6p\x05\xc4\x8d\x1e\xc4\xb6\xb9\xae\x87'\x16\x90\xdf\xba\x05t\x99\xa6\xb8\x92\xccr\xf6\x1cs,\xe1\x8ceN\x8a\x82\xcfs\xbe,\x18\x90\x84\xcdH\x0e\xa7D4\x90\xe5\xdaa\x14\x01?\xacz\xb0\xbd1v4\xd0\x8eT\x04\x88o5d@\xab\xd7\xf9\xe8k$\xca\xc8\x19\x16,_\x8eY\x96\x9b\xa0\x0d\x88\x0f\xe9\x92\x1c\x00i3\x85\xd0d\x1c\x0d\x8c%\xbf\x14\xdd6\xb3\x96\xd0fPw[/5\xc87'\xae\xf2PPk|\x88\xd3\xcfk\xc7\x01\x13\x92\xce\xc9 \xc2\xe0\xe4\x84\x1fT\x1b\xf2\x01\xb8\x1b*\xa0\xe7\xae\x83\xd6\xbc\xd5T+|\x85\x1e\xe7y\xbc\xd2x\xc3\"M\xc6D\xdb*\xa0o\x17f=\xae\xc5\xdc\xeb\x8b/\xf9\xceqNbV;\x99\xc20\xd2\xf1\xa4\xaf-9\xe7\xc7\x1b\xdb\xc8<\x14\x03C\x0f\xd5\xee\xc5}-6\xec\x8b\x80\x84^-\xe6\xce\x16\x97U\x8b\xbf\xfa\xb6\x989[,\xaa\x16_\xfa\xb6\x98t\xcf\xfa\xd6-\xd8J\xab\xa6\x7f\xf0m\xda@\n\xb5\xa6\xb7\x82-\xc1\x1c\x91\xe1t\xe4\xd7\xe0\xd2\xb7\xc1\x85g\x83\x85o\x83\x13\xcf\x06\xd3\xee\x15_\xaf\xb1[\xaf\xe6\xc6\xbe\xe3\x9b\xb5\xc6\xa7\xffbA.X7\x16d\xea\x8fD\xfcA\xfbI\xf1\x9c\x95\x9ck,\xee\xbc$+\xc2\xc5\xf5\xa5|\x81N\xc8%\xde(\xc4\x8d\xc7E\x91\x8d\x93\x98%\xe7\xfc\xa3T\xdc|\x9bOH\x8eo\x8d\xf9\x0d\xd5\x06\xef\xba_\xb5\xc0\x07\xd0?&\xfc\xbcJ\xda\xf4c\xca\x05\xc4\xbf\xff\xfd\xe4\xe4\xf9\xeb\xd7\x1f?<~\xf2\xea\xe8\xe4\xf9\x87\xa3\xf7\xf8\xc7\xc9\xdf\xff\xdekS\xd6E\xfb\x8b\x97G\xbf\x1e=\xb3\xbc>1t\xf0\xe6\xd9\xd1/\xd6\x0ff\xed\x0f\xde\xbe\x7fv\xf4\xde\xfa\xc19\x0c\xe0^\xfb\xf6\x1c\x06\xb0\x07\x0f\x1f\xc2\xb9A\xf1\x00\x03\x98\xc3\x0e\x18\x8e\x96\x15*\x9c\xda\xf7O\x8dZ\"\xa8\x8e\xb2\xad\xbd\xd6SC3'\xd7i\xc6F\xcb/\x9c\xd8J\xfa\xd8$g\xc4\xf6\"O\x92|dn\x91\xc8\xa3\xa1lp\xd7o;]\xf2\xd3\xcc\xf6\xf0\xd8q\x12q\xbee\xbd\x86\xdd\xb6\xf4W\x13*_\xc7l\xd6\x9f\xc7\x97\xfc\x90&R\xb2\x84\x1dT\xb4\xf0c\x88\xb3Tx8\x06\xa8O\x13Rh\x06\x0f\x81>\x80\x8c\x8b\x9f\xf90\x1b\xf1\xe3j\x98\xc160\x83\xac)A\x99{\xcd\xf6\xa9s94\x9e\x8c\xf4\x8b\xe4\x0f\x05S\xfcs\x80\x0cE\xc2\xe9\x02#\xc1cq\xba\xf2'^\x1d\x7f\xb2B\x12\x99P\xba\x9c\x9f\x92\xbc\xc6\x82\xba$o\x8a\xd0\x7f\xf4\xe8\x91 \xfc\xa0\x1a\xe5|&\x15\x1c,_\xa9\xbb\xfb\xdf\xdd\xfd\xee\xfe7\xfb\xdf\xdd\xc3\x19\xd2R\x05\xfb&~cn\x85/2m\xe3\xba\x0d|\x0c\x1e\xc2.\x1c\n o\x03\xab\xc9,\xe0\x00\xcec\x97\n\xaf\xc1\x14\xda\xdaxkb\xe2\x1aM\x05rm94\xe4Zs\xe8\x08\xa1\x1e\x1e\x0e`\x87\xe2\xc9^g\xce\x0d/3x\xc4\x01\xe85\xb0w\xd6\x95\x97\xa3z-G\xee\xb9a?\xf8\xb6\xc7\xfc\xda{\xed\x018}c\xc0!P\xce]\xcb\xc5\xd6\xf77\x83m \x9c\xf5n\x087\x9cC\x12\xef%\xa8di\x9d\xf4\xfa/\x8e\xdf\xcf9\x1dhS\xe6\xdf\xf9y\xd1\xbe\xfd\x06\x06\xb0\xdf\xbe\xfd\x9e\x9fR\x95tW\x19K\x8eW\xf3\xd3,\xe5\xeb(\xfe\xea\x8bM\x9d\x19\x8c \xcf\xc4I\xa7^0\x1cm\xaf`\x00\xef9\x8e<\xb3\x1d\x01\x1f\xcd4\x87\xcd\x92\xa2O\xc9%\xf3f\xc6?\xab\x95\xb2\xe8\xa8\x94\xc1\xa4Z(\xbe\x05\xf7j\xcb6\xe4\xdf;\xa8(\x1cB^\x9e!\x19\x1c \x91v\x9e\x86\x99Y\xb2\x9bd\xd4v\xe2z\xd2\xea\xef]T\xc19$\x81~\xcequJ\x9a\x96A\xfd\xe1\xe6>\xb7~\xf4ec\x9f\xb8\x19\x83\x866H\xb3\xf4!\xcexu\xf1\x93\xb9\x0be\x91\xe1C\xb5\"\x82\xd4!\x08\xa3\x85\xdf\x8c~tw'\x0e\xd3\xf7Hk\x87\xefG|\xcb\x90\xe1\xb3\x91a\x08\x0d\xb5\xcc@?\x13\xd5\xf0\xbcF\xf4\xb3\x07\x8c\xd5\xc9\xabCXp)^]\xbcpv\x81\x1a\xa0\xe6\x91\xa3\xb6cB\xd0 \xab\x84\xe8>\xcb\x8e\xc9g\xbc\xa5Z7\xb7\x0d\x1aP\x0b\"\xc5'\x93M\x18\x95X\xe4\x02\x181\xae4(M\xa9M\xbfut\xb9 cF&\x82A\x83,\x87DIE\xa27\xc8\xa6b\xcb\x15\x11\x7f\xfa \xa5\x1b\xf1\xe8\x00\xb5\\\xb6n\x8d\xab\xc8\xaf+_d\xfb\xf5\xcb\xe0\xdeg\x19\xcab\n\xe2r\x11\x96\xed\xb5 \xfdi\x9e\xcd\x8f(\xcbW\xe5\xcb\xc4w\x94/\xbfl\x94\x86\x81\x11} |\x9cR\x8aT\xb7\x96\xdec\xfb\xc19\xb6\xe0\xcb\x07\xa7F\x13\"4\x19\xdeo\x8cL\xff\xf5QSU\xb1\xec\x98\xe5 =s)\xdd\xb4\xc1\xf6\x86\xcf\xe5\x01=\xea\xd5{\x88\xe0c\xff\xe5\xd1\xaf\xc70\x80\xe7\xfc\xef\x9f\x1e\xbf\xfax\xc4\x7f\xfd\xce\x7f\x1d\xbd\xf9\xf0\xfe9\xfe|\x13\xd5\xfaOh\xc1Q\x1f\x06\xcdQe\xcb|L<G\x85\x07\xbc\x9aIs\xea\xb5\xfe\x86\xafF\x1b\xb4\xd9l\x88\x05/\x84\xde\xe2E?\x9bz\xb6\xf3\"\x88\xf3\xb3\xe5\x9cPV\xb4\x06\xf6\xa2>e\xf2\xd9\xb3M\xd3\xd8^\\\x7fQ\x11|''%\x00{|$\x7f\xf6\"\xe8]\xf5\x9cc\x1e\xc7\xe3\x19yO\x8a\x0e\xeb\xa8\xd6\xd5\x96\xe8\x0b?\xc4sOt-e\xbd\x8f\x14\x1fL\xf0\xfc\xd2\xdf\x1c\x88\x17+\xac\xef\xb3L\xc8\xb2a$\x1eI\xc1Q\xfbH\x9e-\xf2\x05\xd74\xca\xfe\xbb\xac\x18\xdaDR\"\xbdx\x04\xa3\xd8\xd2\x01\x98{\xc8\xf2\x0d\xba\x18wv\xc1\x82_#x\x11F\xf0km\xf1\x15\xbd\xf5\\\x133\xa6\xbf\x14-\xbf\xf4\xc7\xf4\x97\x0eL\x7fY\x1b`EI=\x9b6\x0d\xf1\xe5\x0d#\xfc\x90#\xfc\xa8\x8d\xf0/o\x18S\xf6\xbcz\xf8\"Liw\xc1\x82\x1f\xc4z\xfe\xe0\xbf\x9e?8\xd6\xf3\x87\x06\xe5b_\xb6\x96/\xfaI!Z\xc8\x08\xff\xa5\xb4\xb7\x1c\xbd\xa5\xba\x96\x8f_S\xe4\xbelko\xbf\x8a\xe0\x9f\x11\xfc\x12\xc1?\xdaJ\xd3\xe3\xa3\x7f\xa0\xc2\xd4&9\x12\xe2\x10\x1dOb\xe4\xca\xd0\xa3L'6\x1b\xb1\xaf\xcc\xd2\x83\xe2/\xa5q\xe9\x13Y\x15F\x1eR\x8cDr\x83\xd5PN\xf8\x07\xc2\xc7\xadF\x077\x19\x1auN>\xa9\xf4\xf3\x96\xf9\xa3\x80\xe1\xaf\xa0\xcb\xbb\xbb\x93\x86\xb3\xa8q\xef\xa9<\x0c\x86#\xaf\x8e2KG\xea,\xaa\x0c\x18\xff\xf04\xb0 7fm\xf0+\xdeZ\xf0\x95\xd4\xb5\x12\x12\x0cG\xa1_\xbbq\x07r\x08\xa3fR\x883\x0fy@\xd9\x05 \xdb\\\xf3\x93\xea\x8d\xdc\xfc\xc6\x1f\xd5\x1b\xd4\xfc\x86Q\xca9\xac\x84\x9cR\xf5d\x16*\xbfL\xd2\x19~\x8a\xe0|\x04\xfc\xb8O6\x92x6\x92Y\x97\x1d@/\xcc\xc2\xdc\x97OO\x08r74\x8b\xc2\x8d\xe4?7\xb0\xc5\x80\x1e\x06|(W\xd7k\x08)\xf1T\x97\x11\xc9\x9a\x99\x81\x9a\xd9D\xf0\xd2\xca\x91\xf0\x03\xa2\xb2l\xecE\x10\x0b3F\x0c\x0f\x07\x90<\x80\xd8\xeeF\x07r\x1cK\xde\xc6\x90r\xd1\nv \xe6\xb2\x95\xc5\xad\x0e\xd4b\x0b\xbd\x1e\x0b\x96\xc3\xbdQ\x84\x8a\xbb\xe5pw\xc4\xbf\x8c\x80\x84\xa5\xa6$\x86mh+\xe1\xa0%~\xa9K}\xd6zhU\xfb\x936\xab\x8c\x9et~Df\xfc\x17/\x93q\x85\xac\x90\x15+\xe7\x02\x0c\xc7\xc6\x8f\x81\x93\xa5P\x97r\xfe\xf0_X\x05\xfc\xedmx\x04 \x1c:\x1a\x07?u\xa7\xba\xacjOu]\xc1\x01|F\x07F.\xcaKL\x12\xe8L\x86{\x8d\x93\xa8\xfc\xa8}\xdb\x03M\xb2\xfc\x1ax2\xb5;\xb1*\xca\xa4y\x94\x0b_L\x8eR\x11XQ\x83\xe3M\xfd\x0c\xa3\xd5\xbe\x91\xba\xcf\x0c\x9bx\x19\xd0\xb0?\x8f\x17\xd5\xba\xbb\xda\x05m\xd2\x08Q\x0c\x1d\xa06\x10:Ts\x13b\x1d\xd2\xaf\xff\x81!\xa9-\xd0^t\xb4\xeaD\xd0\xeb\x99|\xcd\xf8\xd5\xeb5=\xf7\xf0;N\xd3\x17\xde*\xab\x85\xfbT1\xf0#/9\x1b\xc1\xa1\xb4 \\:\x7f\x95\x14\"\nfB\xc4\xf3_\xeb\xcf_\xc7\x0b\xa1\xbb\xf2\x1a\xce\xc4=\x1ce=\xae\xf9]\x0d\x14O\xdd\xd4\xaa\xe9\xaf\xf9Acf\xdf\x11\x1cwHe\xbe$\xb0%\xf5\xef\x0c-\xcc%Fm\xd9\x18%\xc1\x82j/\xeem\xa0\xa6\x97N\x08o\xa7V#\x06So\xb8\xb6f \xb8y\xf9f\x10\x868\xa1\x00=\x0f\xf4\xbb\x9bN\x10\xec\x93\xf4\xa7f[f\xc7Q\xd2'\x9f\x97qZ\xa0J\xde\xf4\x02\xd3^\xd8Ro\x07\xcc\x93#?\xf7Z\xf2\xee\xe5\x8d\x03\x11M\xa4\xd9\xb5+\x87\x07\xed&+o\xca\xc7\xda\xcd\xe6\xe7''\xb3\xb8\x98\xb5\x1a\xa8n\x97\xaf\xd4\x1e\xac\xd7B\x7f\xcco.\xe5\xb0\nu\xa3\x907\xc6\xea\xc6\x18=\xa5;\x90\xb2\xe9\xc1!\x0d\xd1\xf8\xdb \x1b\xe5Z\x81\x9e}\xe6\xb6\xf9H\\\xac\x06J\x88})#\x04\x1d\xe6\x8f>9'\xf9*\xe8T\xa8\xa8K\xb1B9\xda\x00\x83P\xec\x82Nv\"\xe3@\x98\x91 CNQ8/\x06\x94\xc3\x15o\xeeb\\\xa1\xed(\x00\xf4\xdf\x97\xfdq.\xc2c\x8f\xa8q\xda\x16\xa8\xe5gc\xee\xbc\xf1\xaaZ@\x0b\xcd\xd1\xd5\xbe\x88m\xda\x0d\xdbB\x90\xb4 \x0exg\x0d\x0f\xf9\xe6\xa5xK\xc7\x12\x10\xa9\x05\x81\x01$f\x08\x1b\xa17\x15\xc10\xc6/\x16 \xb6\x8frE*\xd1\xc7\x14<\xa8_\x1c\x9e\x9c\x13\xdd\xc2\xd8\xb4\x00\x9d\xa43\xfe{\x86<\x01\xe9\x9f\x11\xf4\x8a\\\x85\xfc \xbf\xab\xddB\x1cQ\x185\x95\x1ek\x06\x8a \x885V\xf1q\xaa\x11\x13\xbe\xa8\x0b/\xba7w\xd3\xbd-T4\xea\xf1bsM\x02\xe2\x1c\xbbj\xc0\x8c\x8fB\x9f\xa3\xbc\x1e\x1a\xfa\xa4\x86/\xcb\x1e\xdc\x86\xdd\xd2\x9fE\xfa\xbd\x84\x91zC}\xe8:\xd8\xfeY\x0e\xed\x9ff\xc4\xf9\xa7\xb4\x19tl5\x1b\xb4\xce:\xa0U\x8b\x8c\x11*\x02O_\xa1\x15q9\x0b\x99\x97b\xd5X\n\xad\x0d\xf3j\x9c\x91@\xbaZE\xa0\xe2\xfb\nF\x16\x10\xc3\xfb\x98\x9e\x118]\xc1n/\x8cpo\xe19\xb4\x1b\xd5W \x0d5\xe8[z\x1bv\xc3\x08i\xba\xf6\x02\xc5e\x94K\x18\x9f\x16\xe8z\xc8\xe0\xa1\xe4\xd8\xf8\xdb;T\x99pN\n\x16\xe75\xdd&\xa1\x13M\xb5y\x82C\xc3\xc1\xeaX\xa3\xa3\x07\xfe=&I\x1a\x04\x0cv8\x01\xbe\x0d\x94\x8bV!\x97\xcd7\xc3\x9d_JX\xfeb\xc6\x9d_\xbe\x0cwN\xcd\xbaD\x81/\x9aJ\xe9\xf1i\xc1\xf2x\xcc\x9a\x96 K\xb3'\xc4\xe5fz\xe1|z$\x9f\xea\x0f53\xd6\xf0\x1f#\x15`\x1a\x10\x12\xc1K\x8e\x19z\xdc\xc3\x19\xe9\x0c\x04\x82\x86\x15\x86\x93G\x94\x0f4M\xfb\xf0\x932g\x84\xa3\xb6gc\xa3\xcf\x8dL25\x7fY\xadG\xe9![S-U\x1e\xb2\x03\xc8\x85\x8b\xac\x15W\xa4\x8a\x88\x04t\xc80\xecn\x07=\xba\xb2\x11\n\x7f\xbc\xa3jgf\x1c\x15\xadT;\xf3\x9a\xac\x9fu\xc84Q\xe3\x14Z\x937\xbe\x95\x9956\x9bikJ <B\xf5\x87\x8b\x03\xf3\xd2\xb88\xb5-B\xd3B\x84\x04^\xad\xcc\xf66_\x9b\xedm\x83\xaa\xe5\xca`9c$\x82_9\x91\xba>\xaa7\xbd\\M\xa8/\xf4\xc3CbD\xf9Z\xdf\xb3\xb8p&\x02\x80\xa6\xa5S4\xdd\x08\x93o\xa9\x02\x1a\xbd|\xe9\xc6\x12\x9d\x8a\x9dU\x99\xaa\"\xc9V\xeb;-\x11;-\xe1;-{\x00\x89;\x16:\xe6\xdf\xe3bf\xb0\x03 \x1c@b\xd1\xf35vf<\x8a n\xee\xc6\xc4\xa8\xb4\xb5\n\xa3\x89\x17\xc8\xae\xb3=%\xb8\xac\xfbS\x03\xa1uw\xe6\x9d{8\xb9\x89=\xbc\xd9*(\xc8\xa1\xa65\xfb\xf7\xed\xf9\x98\xef\xf9\xd8o\x8fk\x8b8\x9cU\x87\x1c\x95\x87\x1c5\xee\x8b\xd2[\xc5c\xad\x91\xf7\x0dk\xbb\xb2&4iB\x86\x85{V\xd8\xf2SP7\xcb\x86v\x94\xb1\xe8$\x9e\x04\xd4\"\x83\x96\xbb8{\x00[\x01F\x9cKyT\x08\xa4\x18\x8b\xb7'\xb4\x10A&d\xe2\x08\xf2\xedm\xb9\xab\x1e\xd8\xa5\x91\xbc s#L+}\xf5\x8d\x025\xcb7\x86\xaaE\x9d\xf3D\xd7\x12\x8b\xed\xf2\xbd\xa5Y\xcb\nl\xbe\xd5\x98\xb6\x0e\x1dZ\x0e\\$\xe1\x8c\x8e{@,\x8dX(\xaf\x8d\x10\xe4\x12\xe5\xf3\xff\x02\x94\xaf\x0e\x15\xfd\x14)C\x08D\xca\xa2\xb6\x83\x80~\xa0\x94\xc6\xa8\x07\x1e\xcc[6LF\x11'T\xadC\xc226\xbeK\xa8\xa6%\x12\xbb\xe4A\x17\xdd\xa4.m\x12\x9a\xd8\x86\xc9H\x84C\x96c\x8b\xeb\x03;\xcdI\xfc\xa9\xbd\xa06lk\x1d[\xc6\xe5\xfd\x8f\xed\xbe\xc6\xc2Z \x9ai\xb1\x8d/\xdf\x08\xab\x8a+\x01\x8f\xaac\xb5Ka\xd8\xbdQA\xc1\x0d\x11\xa5\x02\x9eC\xb1(\x82\xf2\xe4\x1e6\xbe\xe6\xb4.+\xf67\x1f\xfa3\xbcsI\x03\xe6\xe4\xfa.v\x0dA\x1b\x0e\xa1\xf7\x9e,H\xcc`8\xea\xc1A\xf5\x0b\xbd \x98\xa6\x16\xda\x86^u\x0f\xbf\xe5wX2'\x05\xb4\x9d\x8e\xe7\xd7g\xcaML\xb8\x18\x82\x81\x01\xaf\xf5\x93\xd0q\xba\x9c\x10o.|Ft\xc5W;*\xab\xd1<\xa6,\xf0\x99Hm\xffpPYQ^\x8b\xd9\x13S\x85\x03\xa5\xad\xab\x8d\xec\x83\xb0\x13\xc3\x8e\x08\xa6k2\n\xcd\x91\xe6\xe4\x9c\xe4\xc5&n\xda\x1dp\x9d\x90\xcb\xb7\xd3\xeb\x83\x15\x0eQc\xb8\xb3\xe7\xec&\x8d\x0b\xf6\xfc\x06\xba\xaa0\xb4\xb3\xcb\xeb\x0bS*UT\xb9\xc4\x98+\xcaJ\xb0\xca\x03\xa36\\\xda<\xd1\xa8S A\xbd\xe6\xb2\xb9\x94\xb3\x11\xab\xba\x19\xb1Vl&<\x04\xaa(N\xc5\x02Q \x89\xd0\x98\xf0F]7\"~xP\xd8\x1a4\xa5\x91\xd2\x13\x0fI]\xf5\x0e\x87m\xcc\xd4\xa6z\xde\xb6\xf7s\xfa\xbe\x92\xf4}u\xc3\xf4\x1dU\xc6\x8a\xbc\x8b\x1f\x1au\x17\xda\xddm\xe8\xf5\xfb\xfd\xea.\xa1\x13\xd8\x86@\x08\x15\xeaE\xb2\xe0\xed\xc1\xe9\xaa\xf69Y\xf0\x86{!\x9e\x07\xed\x93`u\xb3'\x81\x1an\xa5\x8b\x84\xaf\xebCi\x9d\x11\xabk\x9d\x11\x8as\x08\x08\xec\xe8}\x87p[\xeb\xcf\xba?0@zW\x18\xe452!n\xf05B\x9d\xf84\xcd\x0c\xb6\x87\xc6\x90\xbd\xcf\x9d\xc6\xa1Rv\xaa\x1d.\xe8R \x02\xb2\xcb\xa7\x91\xb0\x15\xe0\x19S\xdd\x0d\xe1\xe1\xa0\xf4-]\x91`7\x82\xddP\x1eO+\x89\xdcg\x84\x05\xbaU@\x99\x0c\xf8}f\xb8\x8f k\x9f]\xab\xeb\x1c6\xe7eTemy,\xf6-\xf8\xbf:\x92\x0c\x06|.vi@d\x17p\xaf3\x94\xf6D\xb5\xd0\xb5\xf3 4\x13mp\x89\x03\xed\xc3j\xf5\x85\xe7#\x0eGB\xd4@sV7s\x16V\xd8\x8dz\xc3J$\xe0\x90\x93\xf2`k\x03S\xf8\x1a\xf3\xe0iw\xeb*G\xeaT9\xd6%\xc4\x08\x12\xa3\x06\xd1\xbcl\x19l\x8b\x11\xed\xf0\x01\xe4\xfe\x0b\xd4\x92\xd7\x8c\x00\xdc\xfc\x00\xae\x80g\x1co\x03\xa0\x969\xf9\x02\xd9\x0c\xce\x9b8\xec\x95 \x9d9\xd5!\x0d\xe8\xf3E\x7f\x84\x16\xc9\xbf\x98\x03P\xca\x17\x94\xd7c\x1f\x91kuC\x0c\xc1\x8a4\x16F\xf8}\xc8\x1fe\xb8\x1d\x9aU\xc5\x13\xfegy_\x92,\xf9 \x9eq\xe7ed\x91\x81\x8f8%*\x9d\xd3 \x89\xe0\x94\xe0\x9f\x17\xd5\x9fG\xea\xcfSRF\xf4\x887\xb5@\x1e\xf1\xbe\x0c\xf29jH0|\xa1/\x89-\xbb\x04\x9el\xc9|\x89 &v\xf6\xab\xd3\x8e\xdf\x0b\xaa$,\x11\xec\x87*\x7f\x06\xbe~\xe0\xbfk\xee\xdf\xbbw\xe7\x1e\xdc\xe2\xe7\xd9\x9a\x13s\xfb\xc6)\xdfd\xe2M;\x92\xe3^\xd9F\xb7\xbbG\x8f\x1e\xc1\xde\xfdP\xde\xe1O\x02V\xde|\xf8\x10\xf6\xee\x8b\xdc3!\xac\x9b\xce\xf8\xb6P\xa6\xe3._Il\x1en\xc1\xde\xee7w\xbe\xb9\xbb\xf7\xed\xfe]X\xc3\x9d\xfd\xfd\xbd\xfd\xfd{w\xbf\xe1O\xfc\x9c2\x9fZ:\xd2)&\xac\xd7\x8e\xe0\xeb\x92\x86Z4\xd5\xdd>\x8f\xaa\xa3\xb6\x07\xa3\xbb\xe3\xae\x9e\xb7\x9a#4Px\xc5\x18\xa8qY\xe6P\xa5=\x18\xd8}\xce\x12\xf4)\xdc\x92C\x15\x0e;\xc2\xa7\xc21P\xd0\xf0t\x17\xd66\xe7(<BEv\"\xe5v\xf1\xaf\x81\x9e\xa3\xe8k \xe1\x03\x8e\x18\xda\xcd\x07!\xe0k\x04n\xeb\xef: \xee1 \x0c~\xce\xedC\x0e\xc1R\xa0\xb4Q\x82Ea\xa7\xb2`=\x82\xdfky\xcb;\xf33<#Cb\xb1@\x19=V>q\xec\x8d\xe0\xbd\x80\xf5\x1b\x993\x83`:\x1cxF0\xf1\x19>\xe7T\x1c\x1b\xe7K}\x9d,\x0bp :\xdb\x08\xc7gq1{\x9aM\x88\x06\x19u\xcb\xa4\\\xc4\x96\xaa\x90-\x1d\xa4\x9e \xb43\x9e\x1f\x9a\xbe\xaa\x08\xbfw\xc2c\x8d\x84a\x97\x1a3\xa9\x9c\x0b\xcb\xaf\xc9\xf09\x19y}\xb9\xf5\xd6:n\xb05\xceOS\xb4q?/\x8e\xaaT\xd8\xe8\x0egz\xe25\x16[g\xdd\xe0\xd5\xbf\x96\xa3\xa0\xd9\x84|X-\xf8\x96\xdb\x0d\xa1\xb8H\xd8x\x06Au\xbf\xab)~\x8d\xe3\x82\xc0\xdeA\xe7{\xa0\xd1\xfe\xfe\x92&\x9f\x97\xe4\xf93\xfb\x1c\xd5\x85\xcd\x7f\xb7a\xf3\x93l\x8c\x01\xc3G)\xe1\xff\x88\xc96n\x96cp6mVj\x83\xdcR\xdaj\x19\xdf3\x7f\xcd\x97k{\xfb5\x89\xf4\xa3\xef\x16\xbc\x16{\xff5\xee}G\x88\xc8\x07\x12r\xac/\xa4,z=G\xd7\x06\n=V6\xd5\x01\xfe@\x97\xe7\xa6\xc7`\xefMFw\xc8%#\xb4H\xaa@\xc2\x02\xe2\x9c`\x92\xe38M\xb3\x0b2\x81\xb8\x80OdU\xf4\x9b\x89\xb3\x9b\xdd\xf3\x0de-n\xf1\xdc\x98\xc3X\xbf|\xd2\x11\xab\xab\xbb*\x86~iI\x8c;\xde\x94|\xbay\xf1\x01\xcc~\xb1\xea\xc2\x15j\xac\xc3\xa6$C\xb2\xc9Z$\x89\xc6\xc1\x9b>\x08\xad\x0d\xb9\xd5m\xfa\xa5\xcb\xda\xfe=\xf7\xe3\xc5\"]I6\xde\x12\xd1\xaf_W\x91\x83L\xf23\xb0\x03\xb2\xddD\xb0\xe6\x94^\x91\xbc\x16\xde\x7f\xa4\x08!\x96AA\x18\xc4@\xf9>\xa8 \xa7\xc6\x08\x19\x95{\xc2\x89\xfa\xfc*\xe7`\x9f\xfd\x06\xf4\xc4y\xeaot\xda+\xe5kI\xd68\xc3\xa0e\xb41\xe6\x03h@\xeb'4]\xf1&\x85\xd6\x14\xd5\xa4c\xe1\xd4{J\x80s\x0fd\xd2\xf7\xf4\"\xfdd\xe1\xedKu\x0c\x13\x8c\x92f\xa1 \xf5b\x16\xfc\x85;{\xf0\xb5HU\xd8\x1f\xcf\xe2\x9c3/\x8fY@Q\x98\xb1\x8aG\xc7\xa4\xed#\xad\xff\xe2\xbd?&U\xc6\x84\xa48*ic\x9bj\xbc\xf5\xdaa,_9\xf0V\xa9;\x8d4\xf3\xcf\xab\x08z\x7f\xefE\x82]\xb4\xea\x04\xc6\xb18\xe2]{\\\xf6cs\xf57\xa0Y\xd8\x16\x97\xdf\x91\x08>XE\xe6\x9fI\xfc\xe9u\xdc\xd02\n\x06/xGd\xe6\x02\xf9\x92\xa1qqF\xb6\xa1\xfc\x1c;<9I\xe6\xf3%\x92p\x8em''\x8d\x14\xed\x1d)\"\x03lE\xfc\x0e\x9e\x93&\xd2\xf3\xfe\x7f\xe7o\xec\xdd7$\xa6\xe4\x0f\xf6\xef\x192\x1f\xbf\xb7\x0cY\xb2\xf86)\xfa\x95e\x03\x9c\x91@\xc4f\xa1tV\xb9\xcd/H>\xcd\xf2\xb9P\x7f\xc7\xa2\x8d\x8b\x84\xcd \xa6\x90\xd0iB\x13F\xa0H\xfe \xbe;\xf0\xa3[\x8cw&\x0d\xfbE$\x0d\xfb\x8cMp\xfeb\x1c\x94\xf9\xd3\xf9\xb3>\x1f\xd9\xeb%\x8byO\x85\x16\xd6\xd2\xa5\xab\xce\xad\xe9\xed^\x91\x80*-?\xedO\xb3\xfc(\x1e\xcfj\xf1V\xc6@\x06u)R\x8a\xdc\x15m\xa9\x9b\xd4e\x8a\x82\xf6\x03\xe7g\xef\\ \x7f\x90\x8el\xe6\x1fI\x04'|\x9e\x1f\x89G2\x9d\xd2| B\x8a\xcb\x038r\xa9\x88\\\x8bd%!\x1d\x15\x86`{\x00\xfb]\xa2\x14\xda\x85\xe1Q\x95@\xc6p,\xbfN\x8a\"\xa1g\x82 \xc3^?\x91\x95\xc8f\xc1\x86\xd4\x94fR]\x82y\xe6/E\xfcU\xde\x97-\xdc\xbds\x9d\x11\xfc\xd76_\n\x85\xa7\x96\x01\xeau\xbc\xb0\xa6<\xfb\xf8\x85\x96\xc5\x93<\xcb*\x959\xff\x81\xa2s\x19K#\xf26\x85&\x93b\xad\xebb\xa3\xae\xff\xa1'\x85r\xcf\xa9 \xec9\xdd\xa0i\x9c\xc8r1\x89\x19y\x8e/\xaf\x0c\xd5\x0cm\xdfn\xba\xb29\x99g\xe7\xa4S\xd26\xccz\xe5nxBR\xc2'\xe0\xdbtk\xd6\xbeS^m:e\xd1IsA\xdc\x89\xa3\x85\x08Y\x92\x17\xa5G;\x94\xae \xa12\xce\x94\x13\x18\x92\x91l\xd4c,m\xf4\xb0\x8c\x06\x83]\xd1)R\xc6b\n\x14w\xf8\xc8\x96$\xda'\x91\xc4\xb9\x8c\x03\x15\xa6\x8d\x95]'\x1aw\xfa\xe2qr\x17K?<;Q<\x97)c\x12YM\xcbb\xd6RW\x01\x03\xc8\x82\xa5\x83\x06\xca\xe5*p\x02K\xe9\xac\xdb\x8e!\x03\xab\xd4qF\x82\x04cH\xd0p\xc3\xf7n\x04\xbd\x84\x9e\xc7i2\xe1\x94\xf8]\xccf69\x88\xcf&\x85\x01\xc4.\x0fT\xfe\xd2XNy\xc5\xa7\x8c\xd4*\xe5\xfb\xc9\xfe\x01?\x07I0\xae\x16\xd0\xa9(\x9d\xe2\xec\xc7r\xf6\xe2\xd7\x8a\xff\x92\xbb=H9\xbe\x06I\xc5\xcb\xb0\x10\xcf\x8e4\x82\xa9\x81\x07\x90{\x9eR\xd4\xe9Z\"\x1ee\xdfy\xd9\x9b\xe4\x9aZu\xd0\x1a;`\x9c\x92\xd8Y\x94Hk\xbc\xed\x16\xc3\x84?\x84<p\xb2\x0bJ\xf2\xe7\xcf\xe0P\x86\xc2\xca\x18\xc6\xddH?)\x06\xc8\xdd\xa9[\"x\x7fP\x9e\x15\xf2n\x9c2Y\xefdK\xde\x0c%w\xe7\x9c\xcc\x9c\xe4g\x9d\"\x91\x82\x14\x93pU]\xdb\xf3\x01\xb6\xfb\xf8\x993\xbfZ?\xae\xf3\xa4\xec\x08c\xa3\x9b|\xd2^\xdb\x91\xa3\xdd]\x9d@9Mz\xa6\x1e\xac\xd8R\xa7\x99,B\x08G\x1eZ_\xf9\xbdE\xe0\x17\xcbp\xa8\xfe\x92:\x1a\xc1%\x1f\x00\x1d\xea\xd1x\xa3M\x8f\x0fl\xf2\x19\xc1`\xd9\x8d\xd69c\x9b\xad1\xef\xc3k\x9d\xaf\x05\xfarX \x0bX\xd8yP\x95#\xfa\xdf\x88\n\xb8Z\x87\xfa\xaf\x9bE\x89\"\xcb\xbb\x8d\x15r\x9c\xefX\xf03+\xcd\xfe\xdd\xed>Ym\xc0:\xea\x8d\xb3\xee\xf6k2P\xe7\x04J\x8b,_\xa9\xb8x-t\x11&\x06@\x8e\x86 b\xb1\xfeE\\<\x16\xf44@\x1f\xb6\xfe\xc9 \xa1\xc52'o9\xbd\x0e\xea\xc4[\xb1R\xce\x81\x97\xbd{\xee\xc1\xd6\xf9P?7\xf4\xd1pQ\xec\xd2\x0d\xb6\xb8x\xae41\x9b\xf5\xaf\xf7\xd3\xb12%\xc86\xebA\x9e[\xce\xb67spR\x1a\x11r\x01/\xfde\x9e\x8d\xbc\xd0\xbe\xd4\x89Y;\xdcKo\x1b\x94\x03\xdb\x99E:\x88\x08\xba3\x93\x80a\x82\x19\x86\x19eL6\xf7H\x94}\xea\x80\x80\xb6\xda\x9d{K\xed\x98\x8a\xc11`+?\xd2\xfeI*\xd6Fgk\xa2*\xaf\x03\xb24\xc8\xe15\x1a\xd2r?\xe8\x0c\xce\x9edp\x0c\xd3I\n.\xb9\x0f\xe0\xb3\xc1s\xe8{\x12\x01\xb2W\x8dd\xc0\xaf\x1f\xbf\xb3TO{\xc2\xdf\xd6\x81dS\x0f\xfedO\xfc\x81\xc3oOH&*j\x19\x1f\xac5>\x9c @,\x9d\x9c&l\x8e\xe0PN\xb14\x13.\xc8\xd4\xab\xcf\x9f\xaf\xd3\xe78[Rv\xed._\\\xa7\xcbOd\xf5\xa3`\x8aY\x0b\xba~\xdd\xfezs\xdd\xae\xbc;}\xd9\xdd\xe9 \x13\xa5FK\xa7\xe6*\xc2\x86V\xbe\xcd\xf1\xf8\x93H\xd3\xa9(\xcaW$\x90\xbf\xfc\xb4\xa1?t\xa6x\x14\x15\x90D\xc6\xaaVRJ[\xb3_u6k\xa6m\x1ce\xac\xe5o\xd1\xab\xf8\xc0\xe6\x8eyr\xb2\xc8\xc9\xb9\xc9\x14\xec\x97\x85\xe5\x9f\xbeIQ\xeb\xc5_\x9f8\xf2\xf6fJ\xaa#\x11d\xa5H\xc7\xf0\x87F\xe9\xa8\xb8!\xa5\xbb\\\xfc\xaa\x13\xbd\xcck\n\xbf8\x93R\x7f\x8fz\xed\xe0{>\xa0\x7f\x92`\xd73\xff\xdd?\x9c\xb8z.k\x92\x9b\x8d\x9c\n\x15-\xab\xadt8\x17\xc1\xa9\xc5\x9d\x12d~\xd8\x8b\xe0\xc4\xa1\xbc\xc1\x04pL\xf5\x86\x91/\n\xbc\x11h\xcaU\xb1\xb8I\x04q\x18\xc1\x96T}T~U\xe6\x0eD\x1e\\\x19~\x18$\xb2P\xd7!\xe7\x02\xa4\xf6`g\x0fK~\x1d4\xab\xc9\xf1\xeb\xcae\n\x17zvl\xc6g\x14{U\xf9\xc6\x9fp\x9bW\x93\x1cZ\xa1'\x8a\x8f\x19\x1f\x9b\x82@m\xc8C\xea*\x8b\xb2>c\x16\x95\xd4\x07Q\x97\xb4\xd5\x14\xa4\xa5\xa3@O\xb8\\p\x08\x19\xee6\x93\xbe\xc2\x82\x8f\xd2\xe9\xa6\xd4/\x89\x05\x8d`\xe9\xe4U\xb8D%$\xb6\xc0\xf8\xe9\x01GD\xb9\x9e\x84\xf3#G\xc12\x8c\xe0(\x881\xeb\xc3\x05?'D\x0e\xd7!\xff\xcc7\x9d;cn\x1e\xaa\x95\xa8\xf4W\xe1\xf6\xd9\xba\xff\xc2\xcf\x13\x976\x80c\xea[l\xcc\xf2\x08\x1b\x0c\xf8\x02h\xac\xf3\x8br\xa6\xb2\xbaP\x04\x99\xc9\x96\x83\xbbW$\xde\x0e\xaa$_U\xcb\x07\xda\xdf\x8f\x1e=\xe2\xf4\xe3\x16\x9c\x99\xf7\xf9\xb2\xde\x08\xba\xe9k\x1fY),\x1f\xef\x8f8^\xaci\x1b\xc3Z\xfc\xb1\xc4qI\xbd\xea\xb0\x82\nl\xc3\xb9\x84\xccH\xe8\x15\x07\xf5\xd5\xcdB\xfe\xe5C\xf1\x1d\xe1+\x0d\x070L\" \xbeK\x9e3\x17\xbd\xac\x12k`\xf5\x82Z\x86\x02Z\x9a\xe8:\x12\xdfph\xd1a2\xb2\xd3\xcc\x02M\xb46\xeds\x1c,\xd1-:\xe0\xaf\x15\xf5\x8c\xc6>~ \xd3V4\xa1\xba\xae\xc2\x90\x1f_\x8be1\x0b\x0c\x9eEV\xf2\x12+\xa0e~@\xce\x9c@.w=zmUj\x95[\xb7\x00\xb3\xb0\xd6\xd4+\"'c\x99\xd8Wl\x7f?\xce<q\xef\xeeJ\x94\xb33\x15P\x86\x8b\xa1\x0e\xbf\xaeL\xc3\xf1\xd6\x92Q\xd7\x9e\x0b\x95\x90]\x13\x8f'W\xd9\xb9S\x0d/\xb2Qf\xa1\xd4\xc3g\x1d+g\x03H\xec\xb3,b\x9b\xa3e\x88\xf6\xa7 ?\x19<\xd0\xaf\xfc\xb8J\x9c\xdb\x1ed\x18j\xd6.~ \xebiv\x91\xaeV\xa7\xd8\x9a\x93\nLy\xa8}s}S{.\xa3\xa1\xcaO\\+\x0eh\x02\x97\xe7Q^\xb7\x9av\xba\xfc\xd6\xe4\xef\x95\xac1\x8a\x80\xc7.\xad\xdf\x1a\\&\xf0\xb6\x1e\x04c[:u\x11\xe5\x96\xc1,\x8d\xd5\xebI\x97\x04\x0d\xcbJ\xd3a6*\x1dB\x0c\x03\xc5\xcc\xe4\xb5\xa3/\xa0\xc3]O\x89c\xd9q\xd2\x82\x0c\x0d \xbe\xbd\xf7\xedw\xdf\xdd\xb9{\xef;\x11\xcb\xb33\xc0@\x18\x11\x07s\xf7\xce\xde\xfd{\xf7\xbe\xb9\x7f/\x0c9\xb3\x87\x0f\xf6\xe1\x16\x94\xdfh\xf7\xef\xf2\x93i\xff\xde\xfe\xfd\xbb\xf7\xf6\xee\xdc\x8b\x80\xc0\xb6l\xea\xdb\x08\xf6\xf6\xbf\x11\xcd\xab{{\xf7\xfd\xa6Q0O)$\x97(~\xec\xaa(\x9a\x0d\xd9H\n\x18\x8d\xde\xf5_O\xd0\xd5E\xf2fO\x949\x1c\x06\xfcoa\x85\x8b\xaa?Q\xa7\xfe\xa4\xb2\x99G\xf0S\x87S\x84}.\xb5\xc3P\x97\xde\xe5\xb1(\x98\x8b\xac:\x16\xe1!\xc4\xe2t\xb4\x12\xd2\x19\xe1\xe8\x99\x0d\x93\x11G\x9d*\xd7\"\xbf\xb1\xe7]\xca\xbc1+\xab\x19^\xe7#\x9d3\xc4b#b\xc7Fx:\xd7\xa7\x9b\x8a\xe9\x8e\xf1<V\xd3M\xe1!\x8c\xd1kk\x86T\xa2\x18\xa68\xa9\x07\x90no[\x18\xb2)\x0c\xc4wf\x81l\n\x87\xa2\x99\xbd\x11\x0e&\x83\x03\xce\xfdj\xcaI\xf3w\x82\x0f\x0e\x96\xe8\x195EW\xb2\xa3 \xe1R\xd4\xb2\"\xa4EGv\x1c\x0c\xe2\xc0`\xad\xad%\xff\x7f\xe9\x9a\xf0h\x00\xa9)L\xc5\x89<\xea\x12R\xad\xf2X\xbct\x18\xdck\xe8&\xb9>\x12\xc1S\x82\xc9h\x87\xbc\xa3QX\xe3\xc8\x98\x0fG\xa6.\xe5l\xc0\x86\xb6\x04x\xea\xca\x10\xab%\xf9'5\x115FEKl\xad\xfe\x01F.J]\n\xd9\xcd\xb4\x99wU8\x8d\xf2|\n\x0b\x90\xd1a\x9a\x82W\xc9\x99\xd6\x8e\xb9d\xb7\xe0\xb8\x85\x14\xa9\xe8\xb2\xf9\x1f\"\x7f\x9dJ\xdb\xff\x0e\xec\xc1!L\xfa\x8bLT\x82\x98\x0cSN\x8dZ7\x86|\xe4\x9c\x1f\x9f\x08\x06S\xfc\x0e#\xec9hh\xff&\x95)\\ \xcc\x11L\xbaX\xd2\xab\x08~\xbc693F\x97!vY6+\n\xf5\\\\ \x82z\xfdp\x11\xf9IP\xf6\xb1hF\x12EC\x84\xa6\xd7J\xd8x\xc3\\\xce\xb9%\xb8\xbb24\x1b\x95\xb3\xc3%\x13\x8f03\xf2H\xc4q \x19\x89\x99\xd8\x89&x\xaeM\x17k\x99\xa1U\x02\xe8\xa7$\xc8m\xa0\xd2\x04D&Y\x1e\x8a@b\x0e\xa9\xb2P\xf0]\x9a\x9f\xa7u\x18\x9a_\x1acL\xe5\xd6\x00\x82\x14n\x81 \xb5\x91\xae!\xa1\xce\x1a\xca\x1c3AUtz\xc9D\x93\x08|s\xe7\x0b5B\\.\xf3;|\xef\x8d\xe1\x10\x16\xc3\xe9\x08\xdc!\xeb3\xa1(\x9b\x08\x0b\x8cX\xe8\xfaZ\x99g'\xd4\x04\x13\x8f\x83B\xc0\x01E\x97\x85F\xde\xc7N\xf2\xeep\xf3\xaaU\xfc\x92\x0c\x01\xdf\xcf\xa2\xde\xcc<\x8c\x103v\x1fHV\x9f>\x80%\xa6\xf9\xe1\xb81\x80\xbd\x10\xe2\xe1r\x84hp\x0b5\x0bl\x98lo\x8f\x1c5\xeb@\x13J\x87\xf9H\xa8\xb8\x84/|\x80 \x05\xb7\xb1\xda\x98\x81\x90\xf0\xc7\x8b\x08\xd2\x08\x96\x11\xcc,\x90\x94\xe79\xff\xbf\x08S/\xa1\xc4\xe5?\x16,\x86{\xf0/\x98j\x9c\x8b\xba\xe3h\x0f?\xde357\xab\xda\x99\x99\x11\xf1tSr\x7f\"\xd1m\x86\x14\xfc\x00R\xf8\x17\x92\xfd\x14\xd6`\xc1\xd0\x0b\xed\x93\x82\x05\x8b\x08\xa6\x11\xcc\"8\x0d\x9b\x01\xf8\x1d\xe2\xc7yY\xed\xa3\xf2\x80\xb0\x1f\xb5B\xbdZ\xa6\xbf\xc9\xb5\x08Z<Y\"W\x11\x89\x16\xb3 0.\x0fk\xbc\xa9\xa88\x07\xb9,8\x17k\xc4\x9f\xbf\xb5\x17rV4\x1ea\x9ck\x0c\xdb\xd6\xd4\xb8\xd0}x\x0b\xa8\x19A\xd6\xc1!\x95\xba\x00\x055k\x9a\x12(\x15\xea\x08\xb5m\x89TY\x05\xb9R\xa0\xf0\x01]R\x03\x9dP\xad!\xe8\xe4\x9e]\xc2C\xc8p\xc7\x86\xfc\x96\xa4\xedA\"\xb6,\x15\xaf\xef\xec\xa1vV\xdc#\xc3%l\xfb\x94s\xb3\x14\xfe\xd0q\xcfzd\x9e\x96\xecDiE=i\x984/\xea\xdc\x850\xd1\x9eDp\xd1:/\x7f\xfe\xf7\xb2\x13\x0eF\xa2\x83\x8f\x10\x0cAf\x17\x91\x128\x84\xc4\xc4\"\x98\xfc&\x7f\xfe_\xc6&(\xd9\xcc\xf8B\xeaq\ns6!\x1d.-d\xba\x10\xc17\x9e\x8c\x01a\xc1x\xd3#Z:\xd2z\xf4P\xf2\x14h\xaf\xb7\x1c+\xdd2\xdc\xce\xce\x02\x1e\xc2\xf4\xdar[\x8d\xc0\xeeF\xe6\x03\x9e\xaa\x03^\x08\xcd{BR\xae\xc42NARy\xe6\x17\xf0\xf0!\x1e\xf9\xddb\xda\x18\xc54\xd3b\xd5\xde\xac\xa2\x82\xf1\x98]\xe2\x9fH\x1b\x83\x0c\xd6\x03.L\xc5\x82\x9f\xe0\x90\xb7\xb6\xd5)\xafU$$3\xb2\x16\xa0\xd8\x8b\x149\x8c\xa5\xd5\xcc\xb8\xd8\xde6\xaf\xf9d\xd3S\x9es\x8a\x05zY/\x91bN\xec\xe4rR\x92K\xe5\x00\xb2hP\xcbY\x9dZ\nNj\xc1\x99\xa4&\xd9xqmj\xf9\xdf\xacKz\xf1\x9f#\x86\x92\xae\x99w9\xadr-JC]9\xc7\xa5\x96\xc0O(\x7f\x84\xbe\x872\xcd\xaf\x0e\x07-\xa5p\xc3\x18\xca%\xf9\x7f\x90\xbekYq\xee\xe3\x9a\xd5T\xfa\x11i\xb0\xe4\x13\xe0\xac{j3\x9en\xaci\xe9\xd6\xb2\xfc\x075,/\x0c\x00\x98\xb46\xf8\xaf\xd7\xde\xe0J\x8c\xc1=Y\x0ee\xc5\x11DE\xd4\x89\x1b{#\x13C\xf2\xeb\xcd\xec\xc1\x86*\xd7\xb8LH\xf2\x10\x83\xeb\xc3\xb4.WP`\xf5\x8c\x12 \xb4y,\xc3\xd6F\\\xaa\x80\x15\x8e\x91p\x00\x05Z\x02\x8chT[5lqP\x96!\x92\xcbf\xc2[\xb9\xec\xa2K\xc3\xaeG\xa2S\xed\xfc\xd6\"\xd7t\xe7\x95s\xed\x0b\xf3\xed\xda\x1a8I;m\xd1\x91\\\xd0\x91\xacQ\xb6\xe8\x01\xe4\xb2\x84L\xee\x95\"\x99\x96\xf5K\xd0\xf3`\xa4\xd7\xbblN\xeeG\xf3,~\xbe\xb1\xc9 &\xd3oj\x16^\xa7\x14\xbe\x1a\xf32\xf3;\x1c\x14 T\xd9g\x92~\xad\x1c\x83\x0d\x16`\xd2\x9e\xfezM0(\xf9RC\xd7\x16Z\xb1\xe0%\x89\xe0c\x18\xc1K\xbd\x17J.Y\x97\xe7y e\xa2\xa0\x8c\xfe\x95Q\x15$ \x9c)\x1f\x00s\x16mP\xf5'p\x91\xec\xeap\xe4AD\x16T\x13G\x06J\xcc\x96\x13up\xacIY[\xb5\x12\xc2\x85\xcffn\x82\x92\xba\xae\xaa\xdc6\xb9\xda-]\xdd`}3Y\xc5B~\xa2\xe1]h\xec>!\xc5P\x80O\xb9\xa7\x1eb\x99=Q\xf3\xacslz\x97\x88\xf6\xf5\x0e\xdd*\x8d\xa4\xfa\xcc1\x06\xb7\xa2#\xe9\x92\x16\xf0%\xb5L5\x00\xa8\xbbn\x19\xa2\x81_0\x80\xafH\x90X\xed\xe7\xe0\x14\x17\xc6\x19e \xdd\xa8\xf8C\xbb\x7f\xedW_\xf8\xccv\xecj\xa8\xb6\xa7mct\xe6J\xb5\xe6Im\x10\x90:0\xf9*\xa7|\x06s\xb8\x0dw\xdb-\x8f\xd5\xb3\xfd\xf6\xb3i\xf9\x9d\xcds\x7fa\xf1\x188\x97\xb1CG\xc6\x80a\xe4\x9b\xbb\xf3XZ\xe4\xea \xe6\xc9+\xa9\x9d\x99/\xa4\x18:\xec\xaa\xe7D\xdd5\x1e\xc4`r\xa9\x03\n^\x89\xe3:\x87G\"kt\x0e\x0fa\x0e\x87p\x81\x99\x07\xf2\x08U\x0c\x18g\x8a\x85 X@\xfb,\x13\xf2w\x88ei\xd9\xc6n1\xe8'r\x9c\xfc!z6\xa4\x01\xe9\xd2\xf4\x96\x9a\xda\x0e\x7f\x13\x93\x17\x89\x9f\xa7\xc5\xc4\xed0\xa2\xe5\x01\x99\xb1\x8e< \x0b\x16\xc1\x05\xe1l2\xf3\xc8\x03\xa2 \x1f\x81=\xc6r\xc1\xb4#\xeeKsZ\xbcJ\n\x06\xc3^\x04\xbdQ;\xa9E\xad'\xcf\xa4\x16\x89\xaa\x15_%\xc5\x0f\xcb\xac\xe4\xa4\x9e\x95\xdcq\x9ar\x01\xb6d-1I3\x8e<\xcb\x93\xb3\xc4\xe6\xd9\xa6d.\xde\x13\xed\x8b2\xa1\x04n\xc1\x99!\x14\xd2\n '\x0c6\xcb\xae\xe1k\xbf@\x901\x04\x99d\xabjU\xf3\x1dE\xa00\xb1\x7f\xe5\xc4\xc6\xe0\xa1\x96\x0dvs\x975\xc0c\xe1!\xec\xc2!|\x92\x19\x0cq\x9b\xed\xca\x08SqsW\xa8\x1f\xf7\xc43f\x8c.\x03\xb0'\xd8c\xe8\xfb\xa4\x16\xd3\xfcNe\xcf9aq\x92\xba\x19*\xe5\xdeo})q\x06\n \x14\xdfb\x94\xc08^\xc4\xe3\x84\xad\x84A|\x00\x97Xo\xbb\x195 \xe4A\x14\xb12\xf1R\xd6x\x89\xf4ORrN\xd2\xea]\xfb\"n%~\xe1\x06\x89\x08\x9b\xa8BL\xcbuV^\xf6b\x14\x1c^\x9b\xb8\xdc;7\xd3\x05\x82E\xac\x14~\xad \xa4\xcf13z\x17^\xb9\xe2,k\xdbj\xb3\xf4-H \xcaJ\x1c\x9aU\x03 \xcb,\x992T\\h2\xaf\xcah\xaf^R\xba\x0d\xf1p\x91&c\xe4\xdb\xf6lQ\xbb\xb5\xc1&\xb4 \xf9&d\xa0\xd1\xcbn'8\xfe\x0d\xc9$tjZ\xfeTK\xab'\x9b\xc0\x15\xe6\xf8\xd3\xc8>!%%\x81j\xd7NE\xc1\x19)'(\x16\xcbb\xd6\x05 %\xbcU\x11\xfa\x96]\xae\xc1\xc9\xca \xe1\x1b\x16\xbai%\xe0\x9f\x90\x11\x91dQ\xd9R-;\xbe\xe6\x16\xbc\x8b2\xbb\x96\x16\x11%w*\xe8*l\xe3\x1e\x1e\xe6^%\xd9\xea`\xcb|\xf3:|R\x87\xecn\x04;{\xeeV\x97\x14wWW\xcb\xad\xf5\xb8\x16\xb0\xad\xa1a\x9f\xf0\xc8\xd9\xf1\x05\xb3#\xfbd\x99HnH7\x07\xb1\x17(\x9a@\xee\x00\xf0&\x89W\x1e\xfb'^i\xf7\xe1\x95\x90\xa3\xd9\x91o\xe2\x95vw\x1b\xe4\x19y\xec\x97g\xc4\xdc\x87\xd7\xb4\xce\xaf\x93\xd7\xe3qg\x9e\x91&\x9fx,\x08\xad\xd7\x89\xa6o\xc2v\x11\x8dz\xcb\xbe\xf5\x97\xce\xbf\xa8\xee_9\"Y\xe2\xaf\xac\xfa\xe7\x1e\xddfI\x19\xca\xedi\x17gOJ\xe4\xb3\xaf\xcd\x06\x05a0\x14\xb1\xabB.\x9e\xa8\xa7\xec\xdfW\x04\x86b\xd1\xd6\x8d)\xd0F\xd9)\x9aur\xa5\xfe\xd8 _\xbc\x02\xa1s@\xa1\x04\xc1\xa2\xd7w\xa6\xd7\xad\xec\xdc\x98\xc8_\x92d\xe2\x82\x05:\x9b\x135\xb8\x9c\x1a\x87\xa3s7\x91\xc6\xdcl\x94\x90\xc2\xb4\\I\x81\x12\xf6\x00&\xac\xad\xc1\x9a\xb1v\xe2\x89W\xcf\x8f?X2O\x9c\xa3\x05]\x83\x9cM\x7f5gV<\xc0\xb1\xa3h\xac%-\xa8f\xd2\x8cn\xd3\x7f\x9d\xb3\xe1\x8c\xa9`\x90sV\x05\x83\x9c\xb32\x18\xe4\x9c\x95\x89\"\x9f\xc8\x9c\x91\xda\xbbx\xbf|[\xbd\xa5~\xe1\x8b\xa5\xfd\xed\x89\xb2\xc5i\xb7\xd5\x17\xea\x17>\xaaR{=)\xf3|U\x0f\xcadOOj\xd9\x9f\xf0\x85f\xe2\xa0'\x0d\x89\x19_\xd2\x93\xf4<\xd1r\xf6\xc8\x87z\x0e\x9d'\xb5\xa4:\xa2\x0b=\x03\xce\x13=#N\x04\xf3\xb6\x08\xf4\x84L\xb3\xdcd}\xb4iZh\xe9\xd0\x84\xde\xcc\x0c#\xdb\xca\x8d\x81\xeb\\\x86^hL\x97Y\xbb\x88\xfaC\xe1\x13e\x0e\xad\x15\x0e\x80\x8f\\\xadK=\xe1p\xc4O2s7\x99\xf4\xbb\x10\xaaHs/LT\xbd\xb0S\xf2\x18\xf4Q\x0c]\x06,,R\x1fs\xba\x15\xd7\xc0\x8c\xb0\x85\x1d\xd4q\x86!\x8e\x06\xdfJj\xa0jSe\xe3\x80\x85\x95,\xf3\x80\xf2\x12\x06p\\\xe5\xce2\xcf\x7f+1\xabTj\x8e\x13\xbb\x0f\xa0\x10.\xa6\x05\xfaIJX\x14\xa3R\xfc\xb2\x12\xe4\x0c\xddD\x96%\xf48\x8d\x0f#X6)\x98\x01G\x1fO\x19i\x1d\xef\x9d(\x1a\xd4q\x14\x83\x8c\xbf\x00S\xa5\xf5\x13\x85\xfa\x0e\x84\xcd\xdc\x08k\xee\xc4\x0b\x07\x93:\x0e\xda,J\x88\x839&\xcb\xe4\xd8\xa5\x83\xd1\x80\x82\xf8Rf\x86\x0c\x1a\xbf6DN\xb5Y\x9c('\x9b\x8ceoRY\x91\xa1\x92/\x92~mq9M\xceD\x85\x11\xc4udi\x1fog,\x82\x15\x8b8\xd3\xe0J\xa3~b?\xad*^]\x1d\xe2F\x08KEay\xb2\x1b_\xc2\x04-,\xc8\x1dQ3Ryf\x87O-\x91\x88d\x1cv\xc3\xc6\xc4\xa0\x16\xf7\xcc\xe7\xb6\x8c\xc0jc\xad\xe9q\x96\xb5rV\x16O\x13u)b\x12K\xff\xa5C\x85`\xe2x?PQ\xee\xf8\xd3\xce\xa3\x82\xf4K\x89e\xe5\xc3]\xf4\x8c\xdd\x81\xd8\xfd \xaa\x18\xf9k\x16\xbe\x11_y\x04s\xc4\x1d\xfe\xf2\xdca\x0f\x95@\xe8\xe4\xe1\xd5\x95\xa0\xe3,\x9fvZ\xee\x87SG\xd1\x11\xd0\xd4\x12X\xedq'\x85\x03N5\xdd\x9f\xc8\x96\xd1\xb3k9$\xe6\\)`\xdcvx\x97/a\xd1t\xcb\xcfPs\xdc\xb1\xac\xc2\xa9\xd5\x7f\x01S$/\xf5\x05L\xe0\xd1#\xc8\xdc\xdf\x8d1\x00f\x9b\x1f\xeb\xea\x03\xc72\x8d\xcb\x05\x1d\xdf\xf0\x82\xe2\xb9\xf6\xc0\xea`\xa1_|\xed\x8d\x19]L\x97Z\xf4\xa5M\xe8k^\x89,\xb2\xc7E\x9d.\x85|\xf3ZJUh\xe7\xcbv;\xbe\xba\xf80\xd2\x86/a\x17\x82\x83.\xf5#\x92\x8f\xe1\x00\xd2.$\x079\xf2X\xb8\xa2\x17\x98y?\x13\x87R\xc2Q\x83\xf2S;\x0b\xedn \xe0\x9c\x92co ]l=\xf6K(qaL\xf6c;D\x96\xad\xec\\\xe7\x0e\x8d\xc2\xb2T\x93\xc3\x0e\x17\x92\x96\x9a\xaa\\\xfc\xd4T\xe5\x0co(=9\xc5_U\xd6\xa3e\xa9$\xcf\xf0\x87&5&\xe2\x86\xd4\x97\xc7\xe2W=\xb9\xd7\xd2\x0b\x14G\xcc\xa5Q;c\x18\x06}\xc6\x07$\xec\xfa\\|\xf34\x85_\xb6\xa1l\x03q,\xfc\xf1er\x1ewL\x05\x11N\xf3\x0f\x15qS\x8a\xd9\xd6\x07\xc8\x0b#^j\xbe\x14\x99kc\n\x96\xb3\x83sK\x1b\xc4u\xb8td\xcc\x19\x0b\x13\x9f\xb4\xe5\x89\x8d\xa1`\xe1\xd4$\x8d\xc5 \xa5\xf2F\x05\x92\x0d\x136\xde\xb2c\x18\xc0\xd8\x1c6h[\xd1\xa2>\xf2\xf2\xf8'\x95[\xa6\xdeUT\x83\x9d\x80<\n;-\xde\x12\x0e\xcb\x9b\xcaD\x16\xeb\xe3l\xc7 \xd8\xf0\xe6\xd8\xce\xd3\x95j6\xf4\x07(c\xf0\x88\xe6\x99J\xa4\x07\xea\x9c\x05\"?\x97dK\x91+\xe5\xa3\xe2\xe2\xa5g\x1a\xc3\xa7\xf6\x91\x94\x16\xf4\x86\xedW\xb7\xac\x9a\xf9A\xf1\xe5C!\xd0(V\x10\xb6\xe1\xdc\x86t5sD\xc9DJ\xbe\x15\xbf~ \xfc\x16\xd0\x15\x07\x0b\xab\x0eJ\x1f\x06\x11\xaa\x95\xa3'\x03\xffhg\x00\xe7N\xc4\xeb*\xf3n\xad\xe8\xe5L\xd2\xa3\x05\xbd\xa8\xa83Q\xeeX\x7f\xa2\xe2\x0f,\xe5\x8d5\xb3\xbe\x9en\x07\xf33\xd8\xd9\xf6\x0e\xf6?\xf1a\xff1\xc6\x03\xb6m\xc5\x19\x96\xa5\xcc\x8c\xd8H\x91\x9b>@\xb3\xd1.\xfe\xbd\x8d!c\xbc\x05\x83\xc7\x02\xc7\x87\xb8\xb9\xbf\x92.2\x15s\xdc[j\xd8\x86\x86_\x13\xa7R\x13\xfb+\xd1#\xd5\x91i\xac\x82N\xb7a\xccG\xfd \xc4\xe7r\x1fa\xf5\xac\xb4\xbe\xe3\x0fa\xa8\x8cG\xe9H\xee*.\xd8\x8da[e\x1f(\xf8\x9f\xe7\x86\x11\x8d\x85L\xc8\x1f\x8f#QF}\xcc\x0f\x00\xf1o\x82\xff\xba&2\x15\xd2X\x82\x11\x04\xf8\xe72|\x00\x0b\x0e\x11\xec\xb9\xe0\xbb\xc9k\n\xb5\xa1\x8b\xf1\x9a\xf1n\xd2\xe5N2\xc3 \x8a\x87\x18#!\xc8\xc6RH\xdc\x07|`x[Soat\xe3\xc4\xbc\xb2X0]|s\xeb\x16\xc6\x01\xa3h6i\xa8 :h\xc5\x1c#X\x90\x90\xa7bz\x9c\xdf(\x1e\xc0\n\x1e\xc19\xff\x87S\x82.Y\xe2\x14\x060E\n\xb22+I\xd4\xc5\xbb\x9bK\x92s:\x12\xfdV\xbf\xad \xa4\xcc\xfc\x9d\xfaP\xf4|\x8e\xb4\x0b\x060\xe9\xa0L\xa0\x18|\x05\xb2\x80/\n\xc6\xac\xcfj\x8a\x93\x1c\xd9\x98e\x88g\xdd\xa3\x01,B\x8898\x16\xb8h\xf8o!\xdc\x16*\x07\x85VSR\x0f(\xda2\x85O\x96\xee\xc8\\8\xce8\xa5B\xfcp\xae\x9c\xdc\x87\xa9S\x98\xe1\x0bs\"\x84\xeeG\x8f\xf8\x81\xeeZ\x18>\x80\x13\xa4\xae\x8b\xea\xf5\x10Ns\x12\x7f\xb2\x7fu\"\x05\xb5\xed\x01\x04bK\x85\xf05\x9c\xe0&\xd9)!#\xf7\xd3\xf0\xc4,\xdc\x9a\x177\x15X\xfdH\xaa\x11E;M\x90\x16|ev`\xcc\x97(\x15\xfb\xe1\xa1\xd8\x0f\xb5\x0f\xca\xe5,8%\x90\xef+\xea\xb2#\xa9\xca\x8e1\x8ar\xe3\x94\xa4KTkT\xc7\x89`\xbbI\x8d\x9d_V\xba\x1d\xc08\xce\xca\xbd*\xd5\xdd\xabf\xbe\xeeU\x9cL\\\xb0 \x16\xe2\x0eFj6\xa3\x1b-\xc7\xf1c\xbf|\x91\xb9\x9e/\xb2\x16A_eY[\xba#B0)\xb6\x93 F \xc6\x9a\xbe'\x15\x10~$\xf7l\x82\xeb++\xfd\xc5A!RJ\x8aU\xbf\xe9\x94\x92\xb9\x88GK7@\x8f\x04\x1e)\xa7\xc9[\xb7D\x82\xa8\xca+9A\x92\xa2 \xdf\xccrcY\xa9\xb7])\xe6\x84[\xf5.*\xe5\x94\xce\xfa\x9co\xcas\xaf\xf6\xdf\xb9\xdbw\x16z|.\xdc\xe1>\xb0\xaa\xbe#\xbf\xb5\xb1\xdf\xcd\xf9\xff\xfa\xfa\x8e\x1f\xdcP,Ka\x8e\x9b\x08gk\xf0\xb5oJ\xbe\xba\xea\xe1\x9dfT\xb1+!\xaa\x14\xe1(\x02\xe1\x8f\x03\xb4\xdb\xf7OD\xea \x91;<\x15\xf6e\x8f\xdc\xe1^sz\xeeT&\xac\x842a\xc5{|\xcd\x02Q\xdd\xe6\x88\x05\xadP?K\xeb\xbf\xbb%\x0ci\xda\x89\x14KoM\xbd\x14K>8)\x1c\xfc\xbcHI\xc1,\n\xff\xa2\xe2\xf8\xf9\xd1\xba\xb4\xa9\x12\x06\"o\x93\x19o\x85~\xa2KQ\x18K\xf28\x10\xda\xd3\xea\xe7>|\x0d\x89r\xdcD\x1b\x910V\xb6\x93\x9fZDXu\xc9\xfe\xb5\xf9H\x15\x0bJk\x96}\x14\xf6Y\xf6\x92\xac\xc8\xe4\x98|\x0e\xc2\xcd)3\x19\xeeZ\xb8\x86\xb0?M\x93E\xc0;x\x1d\x8b|:\x1anr\xa2\x9b\xd7p\xb5\x8e\xb9\xba\x933:\\\xa0\xf1L\x95}c\xa10\xfe)%\x86\xe6\xdc\x1bkj\x0bND\x96J45(/\xb5X3\xabm\xa6B\x80\x18Qi\x19\x0e\xf7F]\x8b\x9d\x0b\xd5\x9eXG9\n\x91j\xdd:\x081?\xe9L\x1f+\x12Z\xb5\x10\xcbB)\xb2\x19+\xc9\xb0\xf1=\xb9\xfc\x9e(\xca!|\xc3%\xe5\xc8\xcc\x9c\x0c\x07\xe3kt\x7f\xf7\xcc\xbc\xfc\xa6\xc3\xeb\x04\xdd\x954\xaf\x93\x93eA^\x92U\x01U)\x0bE\xf1\xdaI|m\x9d\xbe\xb7\xd0tc\x8f\x9b7\xff\xec\xafm\xfe\xd5_\xdb\xfc\xc7\x8e8\xb6\x7f0W\x8aXV\x1bA\xbd{~\x83o\xf1.\xafN\xad9CR\xe6\x08\x8b9\xaa\xe2%\x9d\x0d\x9d\x97e\x92\xe5G\xb2\xfe\x19\xfa^9\x15b\xfe\x83\x05}7\xc9n\x02\x0b#\x12\x99*\x8a\xf09\xcd\xe2\xa2\xd3\x0d\x15\xf4\x8e\x12:N\x97\x13R4\xab\xda\x97-\xaa\x176kv\x16\xdb[\x1c\xc7\xe3\x19yO\x8a%\x86Q\x12\x1aaE3\xe9Q\xf8\x91\xe2\xe3Z\xd9.W\x04\x93\x12C\xcc\xce\x14P\xa7P\xadzV\x9e\x8c\xa1\xf4:\x14\xbc\xa1]\x1da-v\xa5y\xa7n:?\xa1\xef\xe5\x07\xc1\x9b.\xa9^i7UW\xa2]\xbb\x98\xaeXx?'Vu)\xbbf\xee,_\xab.\xe4RHg\x1d[uU\xfb\x0c\xdd\\\x87\xbb\x1d\xd9\x90\x00\xc3:\xd5\xbb\xda\x87{\xa3H\xfb\xbb\xe5^\xd8\xbc\xdcfQ+\x19Q\x97-\x8b\xb9\x1f>\xf2\x95\xc2\x15\xfe\x9d\xcbLp\x00\xbf[\x11\xa9v\xd3F{?ws\xba\x9d\x148o\x12\xdd|s\xd2b\xa7\x01y3\xa4\xd3\xa7\xa82\xc6\x81bbz7\xc5\xadj\xa6d\x18&\x8c\xbe\xf6\xa2\xc4Nn\x14\xedp@N\x02\xe43\xbck\x13\xa0\xac\xc3\xd9\xa6N\x83\xf2\xa0\x9a\x91\xfaXZ\x04mD)\xeb\x98\xb2\x99(\xf9\xcc\xb9\x86\xc3o:\xeb*o@i\x94\xf8\x9atR\x19t\xb4\x93\x04F\xc9\xaf\xf6\xb7\xcf\xa5OZ&h\x83\xdbE\x05}\x13\x9c4H\xc9\xef\x1cZ\xcbHC\xb6\x18)\xd0\x92\xe3\x9bq\x01\xc0\xa2NhUE\xb4\xec\xf1\xef\xbb=\xd7\xdc\x1b\x9c\xea,\x16m\xeev\xba s\xe4\xe2\xb2\x88`\x7f\xd02\xe7\xcd \xa9S\xe0\xa3y\x06\xa0sW\x1b\x8c\x13\xf4\xbd(\xa4D\xdb\x961pW\xa8Yj\x90-W:\xc1\xb2'\xd4\x04\xc8\xbc\x8f;{\xb0cHa\x0d\x92{h\xd2X+WP\xa7\xb1\xb5\xc6--_\x8f\x8d\xeb\xe0\x0e\xa9\x81\x97\xa3\xe6\xe8\x90\xff8\x0f\xd7Q\x8c\xe4*\x82-\x1b\xec\xcc\xb1E\xae\x19\x19\xcfx{\x0f^[\xfe\x0f_\x95_\xc7\xc9\x8e\x9b1k\xa2\x9a\x15\x8f\xcf\xcbD\xbd~\xc7o\x86\xc7\xd4\x8a\xf7\xb2\xb5U\x11\xc4\xccq\xfaf\x7f-;P\x8e\xa7\xcd\x0bH[\xbb\xa1\xb4P(t\x98\x0e\xa6\xc0\xe5My\xae\xc5 \xd8\xcf\x98\xa5\xb9*/t#|\xe2p\xeb\x05%5\xe8|\x02~P%R\xdc\xde\x8e \xe3\x0d\xe5\x12\x02hn\xb6\xe7\xf9\xe4Sm\xfa\x84\x81Z<7\x1f\xe1\x03\xa6&\x1f\x918*/v\x03m\x036\xc3\xd3\xf9S\xe1\\\xdc\xc9\x8d\x80\n\xca\xa8s$\x89\xfb\x0be\x08K|\xb8\x12\x906\xb1b\xb8\xeb\xb0\x9a\xa9\x0b\xb3Y\x1a\x13\x83\xeaW\x1d_\xc6h*\xd4r\x02}\xc6\x8a\x882\xb7:\"\xcf\xd8\xcap\x82U\xf01\xf3;~\xb6\x81'\xbe\xc4\x8fX\"N\xf9\x0c7r#\xe2B\xc4\x1e\xdcF\x1f\x1c\x0cDD\x9f\x1c\xf9\xfe[Y\xc1,\xeb\xcc\x9b\xc4\xd1\xe6\x9d\xa8cf\xb7'|@\ni \xc8\xe1\x04\x0c\x12X\xaf!\xe6\x7f\xc5e\x8f\x1c&}\x96 \x15\xbav\x10\x07a\x05)\xf3\xa0\xa4\x93w\x0c;&\xcc,`0\x10\x9e~\x01\xdfl\x85tD\xda\x85\x03c\xa5\x89s\xe9\xd5\xe8>vR\xc5bV\xe1\x06K\xac\xac\xa5\x8c\xa1\xcb\xca\x80\x18\xc1\x16\x9eR\x992\x8b-\xcb4>A\xda<+<\x8ea\x99\xe1\x86\xc9p\xd3*)\x10\x93E\x15\x15\x93\xb6\xcd\xe9$\xa6\x9b1\xf8\xb1\x85\x11\xa4_\xa6\xa7\xca\x9c<NRf\xd5\xab\x1c\xb3,\x84\x0e\xad\x03\xb5p\x9c\xfa\xfak\xa7\x86C\x07\xa4\xa8\xaf#\x8a\xb8\x10\xae\x04\xd6\xe7i'1\xbe\x16\xcb&}o\xd7k\xd8\xc2r\x90\xf1\xf66<\x84\xa4\xdal)\xa7A\xa5VN\x9ec\x14\x0b>\xe09\x96!\xda\xa4\xc2\xbcf!F\x11\xb4\xdd\xe5\xaf\xf45\xbe\x9e\xb2N\xda\xf4x\xff^K\xe4\xd6\xd3)\xb4\xd1Zm\xab\xf8\xec\xeb\xe3\xb1\xbc7|\x96\xaa\xb5z\x10B\xd6yZrxmo\x17\xf0HC\xf9\xae\x93\xd8+\xfa\x1d\xba\"\xe0\xf9u\xe5V\x13\x10T\x13tM\xa1\xe4\xaa1 \x96\xd2\xe2\x11\x0c\xb0g\x91\xa8\xa3\x13\xc9'\xcfU\x92\\\xf4\xc6\xd05\x95\x9b(\x08\xeaXk;0\x7f\xf2=0\xddd\xfb\x86x`;\x19K|\xf6\x08 \x1c.\xef\xe72\xc8\xc2E\xa7\xba\x11\xdd\xc1i\xa7\x9d\xa4J\xa4\xe4\xc6\xd3\xb2\xc9u\xa7aE\xb5\x8a\x16\xdb]\xb8\xd9\xee0\x02C\xa0\xe5\xcd\xf0\xdc7\xb0,Y\xee\xb3.\x9b0\xf7_~\xdel@\xb0p\x93\xe3\"\x19\x12\xb5\xabk\x92uP\xa4De\x1d\\JZ\x11\xd6Y\x7f\xa4\x0cY\x832d\x918\xc2\xb2.\xba\xd0-7L+\xabG\x07\x8f\xcf1\x04+\xf9\x8d\xf1/\xde\x81\xe0\xf2\x8a\x1a\xde\x8ee<\x93\x83\xbd\x87\x8bY\x92\x12\xb0:\xe5\x81\xae\x0e@\xdb\x95>\xf3\x04\xfb\xd8\x88\xe6\xf9 ?\xde\x88\xe1\xe3\x8b-\x01\x0e\xfcE:e\xa9s$\x07P\xce\x86\x04E\x07\xed9WUC\xac[\x99_\x85\x89\xb2e\x1d\n\x04\xd0\xb8\xe7-\xf4\xbcJ\xe1!\x16\xac\xb9\x05q\x80U\xfb\x90(\xa7\x18\xa8\x0d\x07*M7R\x04*\xcb\x01$()\x86\xa5$\xb1\xb5\x8b\xc59\xedxeW\x95\xf3\x85\xe5_\xb7K(\xfd\x15\xa6\x8c\xdc.\xae\x81\\\xc5aG\xa1\xf3\x1b\xa3R\x92\xadJ\xbc\x94\x14\xc4\xcbd\x02\xea\xdc\x92\xa9\xe672\xcf\xa6\xbe\xf4\x06d/\xb9\xa4\x00\xa5\xfb\xf5po\xc4%T\xd4\x10\x06K\x15O\x81\xd8\xc5\x8f\xd18H\xab#\x93\x96\x84#\x8f\xc4\xf9\x99v\x93E~-\x85sn\"K\xa3\xa5\xad\xe5u\xb6\xa0\\\xb4\x90\xac\xa3g\x97\x1di\xbb(`\xd7\xaa\xdd C\xbb\x01E\xf533\xfd\xec\xa4\xa8\xc2#\x13]@M\xf2\x8b\"\xb8Kk\xda\xe8\xccN-\xc5\x9eT\xda\x8d\x9a\x83 \xeb(\xe2$\xe1>\xccq\xe4\x99(\xbdx\x08\xe2C\xe9^\xc6\xac\xee\x83e\x96i\xeb\x11\x91\xf4\x8b,g~\xd2\xacb\xa2\x022\xbc3\x8a\x80\x0e\xef\x8c\x10\xcb\xc9p\x7f\x04;@\x87\xfb\x86\x0c\xc1aU\x90\xbc\x91\x95\xc1j\xb1I\x86l\xa4v\xd2\x00\xf6\xdbm6+\xf4\xb9\x1a\xe2\xa0\x1f\xee\x99\x06&8\xd7_e\x8d\x0f\xe1\xd6\xfdR\xfc\xfa!h(\x04m8\xf5\xc2\x89S\xc2\xdfE\xc3+\x0f\xbb\xd1\x17\xe2 \x1fJ\x89\x1bV\xbc\xc8\xc9d9\xde@\x87![\xff\x15=+\x05;G\xd1\x87S(*,\xf9\xf2\xdd\xb6\x0c\xd4\x8a\xe5&\xdfWG@\xca&\x03\xaf\x0f:\x12\x89\xf9\xcc\xc3\xf5\xf4|\xff\xd5\x8b'\x13\xf5s\xec[N%\x8f\xbfu\x0b\xa8\xa6\xbf\xad\x85M\xae\xd7U4\x82\xf8\x05[\x03\xde\xedz-b[\xbd\xc6\xfb\xb2\x8a\xbf\xf8\x02\xa1Y\xea:\xf91OH\x90\xfbz8\x97k\xd6\xf2\xb3\x04\x81\x84\xf3\x84\x06u\xcb\x14\x0c\xfc\xf6u3\x0b\x9f\xf0\xf3\xac\xce\xc4\xdfE\xbcv&Bx\xb6T\xfd\x0bM\xa2\x81Z\xfa=i\xa9\x10\xe4\x95\xd9\x92\xf0\x81\x06\x94\xf6|\xba\x05Y\xe2\xc1\xb9\xe5\x9e\xc0U\x97\x022_\x1f~2\xc1O\x01\x86\xb0W>\x97\x1c\xdf\x1d\x07\xfe\xf5\xf5m\x1e\xec\xff\x06\x9c!\xaef\xa7\x00\x86\xba \\\xce\xe4\x9a\x80\x92X\xe0\x02\x88H@\xd2/\xb29\xb9N\x07\x1c\xbd\x1c\xcd\xcb\xfaR\xffFFJ\xe5\xc7\x8c\x11\xbb\xa5\xb3\xaf,Gq](\xe2\x00]\xb3\xbcy\x81\xf8\x87\xce\\\x08\xc2\xc4\"jr\x90\xfe8\xa3\x05\xcb\x97c\xd4,\xfb\xd1\xf7\xaf,\x8e\xdeI\x99\xcdFD a\x89\x116\xcb\xb3\x0bD\xf1\x0f\xab\x059\xca\xf3,\x0fzG\x97\x0b2fd\x02\xc3\x97\x11\xfc4\x02\xb6\\\xa4\xe4\x00z\xb0\xdd\xcaHk\x19\xc3?\xdd\xd1U\xaf\x88\x8cG\x08#x\xea\x1b`\xf5\x8b\xbb\xcd\xa5\x00[^\xb1A\x19\x17x\xbd\x9a\xfe\x87\xbb\xe9z\xc4V {\xfaUc\xb88\xb7\x15j\x81\\^\xbd\x12\x8f\xea\x1c\x9c\x14\xd7\\zT\xee\xf6\xd6\x13\xb41\xce\x9aY\xdd\xf1-\xe9\xa4/\xf3\xac\xbf\xd0\xb3\xcbW\xdf\x0bm\x13k\xa7.\xb5\x8c\x9eu\xe6\xba'\xf0Hf\xa3<\x10\xc5>\xe0\x10v\xf8\x0f\xbfs\x9fZ\xb6\xf2\xb9\xf4E\xfb\xc9x\xe0\xa3\x14m\xe7\xa5\xf9\xd3\x9f=0\x1f\x8f\xc0\xd3\x94@\x96\x03\x06E\xef\xa4\xc9\xa7r\x0f\x98I\xbc\x18\x14\x1f\xb5\x81@X\x97\xd9\x0b\x16yG\xe2d\xc1A\x94$\xd0\x99SLX\xb0\x13Z\xb0\x98\x8eI6\xd5*\x9e;\x9c\"\x10r\x88\x1e\xf5Ok\xc9>\xf3\xc0\xa6z.\x9bpr\xe8\xfc\xa2\xa8\x96\xea\xd6\xb2\xc6U(\xe5'\xb2*\xac~\x89\xea\xda\xf2\xe3\xca\xf4\x8b\xe5+\x8f\xb7\xf8\xc5\x8c\x11\xae^\x9d\xa8K\xceeB\xa6 %\xef\xf2lAr\xb6\x92\x9c\xaf\x7f+\xfc:#L\x13-7\x19\x83\xbat\x12$\xc2&7j\xe2\xaa\xdb F\xbf\x8a\xdax;\x8fo\xd3uF\x1a\x89\x98#\xe8=\x8d)\xcd\x18o\x1d2\n1\x85\xa4L\xcf\x9b\x93q\x96O\xfa\xbd\x92d\x8ah;\x07\x8bi\xba\xba3\xb7\xa9\xcb\x12\x8d\xd0\xbc\xae\xfa\xa7 \x9d\x04U\xd4]\xf7gW0\x8e\xd9x\x06\x086\xf7\x80\xae\x02\xe5\x9a\xae\x8e\x88X\xea'\x90\xeb\xa7\xf1\x9c\x94\xa1\xc3\x9fD(^\x8c?&d\x1a/S\xf6\x13\xe7\x960\xe7\x8c\xb5\x1b\xfb\x00\xc4\xea\x88\x80\xc3\x8f\xa4\xa9\x98P\x97\x05q2\x94)\xcaS\xab\x15C\x9d\x99t]\xa5\xe4\xa7\xb1P\"\xda\xb1\xa9h\xd3\x7f\xb1\xe0\x1d\x8b\xe0#gL\xde\xdd\\\x95\xaew7Y\xa5\xebm>!9\x99\xbc\x8e\x17\xf0g/\x82\xdeU\xbbV\xd7\xbbk\xd4\xea:\xd7k\x04\xf0\x95\x125\xfc\xed\x90\xadyh\xc9b:\x18F\x8a\x1f\xd2PT\xa6m\xd5\xd0z\xf7o\xaenS\x96\x9d\xe1S\x92I\x95\"}\xb4\xb5{\xa1\xcc\x88\xe0\x1c\xf5f\x95\xbf~g\xae\xdaG\xef\xae_\xfbHo\xb8]\x06\xb5\xd6p-\xf5\xb8\x0f\xb0+\x90U\x9f\x06\xa8\xb8\xd1 \xa7?rv\xbf\x91nDGD+\xf2i\xa30\xd8\xd2\xba\xdc\xe8E\xbe\xb9\x80\xa1\x0e\x90\xa1\x05\xd6\x12\xde\xe57/\xbf\x12\x17\xed\xa1O\xf3l~DY\xbe\x12\xbaRM\xf9\xd3\x8d+\x9b\x15J\x10\xc2\xdf\xa0U%\xc1#\xbf6\xab\x11\x85Z\xb7V3BEH\xe4\x12\xd5?\xb2.+\xdf\xd5\xaf\x99t\xe5$\xfe\xd5\x16\xd4\xd1\xc2\xf4\x9d-\xf2^\x18$\x1a\x84dRh\x84t\x00\x1fX\x1d\xbe\xc3\x99\xaanP\x83zY\xe7\xc0\xb0o#`\xc1\x1b\x16\xc1\xafa\x04o\xaeA\x81\xdb\x82\x1fR`\x13&\xd4\x9ao\xc4\x0dt\x96K\x13m\x8b\xa2i\xce\x86Q?rL>oD3\xb0q\xf5e\x9b.\xbc\xa9\xc3\xcd+T\xe8\\\xab\xc8l\xc67\x0e\xdf\xef\x159\xdc2%\x1b\xac\x8dQ%\x1b@\xa3\x86\xf74A\xd7\x1d\x89y*+\x87=8\xfc*l\x05\x896\x80 0\xb7\x13;t\xb2h\x06\x02\xa7\x02\x9fk\x87\xcd\x06`\xc8\xaf\x03\x06\xda\x00\xc3<^\x18\xf0\x15$\x18Z\x85_\xde|\xd9\x19\x119B\x94\xda(\xa99\xe0\xd6&\xaf\x99\xf3<\x1c\x97I\xc0l1KW\x9c@\xa9|\xcb\xff\x14\xeb\x10\x8a,=e\x0fV\xd5y\xd9|\x16\xc9|\xcd\x14\x0eD1 SWa'Q\xd8\xechB\x1b\x9f\x0e\x96\xd0\x01Au<\x99\x8f\x0bZ\xd7=\xb5\x0c\x1aV\xd4m\x82\xcd\xba\xa8\x9e\nye\x19\xa2N\xef\x8bRL@\x83\x8aP\x1a\xa2\xa2Y\xac\x02\x16\xc4G\xbf\xb0\xd2\xbcbZ\x0e\xd7RT' \x0b\xde\xb3\x08^\x86\x11\xbc\xd7\x97\xca\x14\x08\xe8I\xc4\xcbh\xc06%\x7f\xffe\x9b\xab\x93\xd2\xd8\xd7\xc7\xb8\xe9\xbcy3\xdca\x08r_\x96\xcc8S?\xbc\xff\"\x84\xbd\x11\x0ce\xbe\x18\xca\x14\x862\x85\xa1\xa2\xda\x96\xc2K\xaf\x9aa,x\xc6\"\xf8!\x8c\xe0\xd9\x97s\x10\x0e\xe4{v#\xc8\xf7Wb\x18\xf3\xc7/\xe3dn\x0c\xbf\xfe\xc3HT\xe1\xcf\x86\x88\xf4Jr\xba\xaft\xe8\x10)\xcct\xf1\x10\xedu\x94,D\xb3\x9fW\xff\x95\x88\x84\xc7\xa5\xed!\xbf\xbeb\x81\xb5\x88\x9e\xe6d\x11;\xdf*\xd1\x15K\xf4\xa30 \xaa\x12\xa3\xd8Z\xdd\xdc\x157-R,\xbf\xdaz9#\xa2\x1b\x81\xfd_\x83\xe8\x1e\x91\xa1~{\x01\xca\xf0\xca\x9a[\xb8\xa3\xa2\x86Z/\xd6\xe5e\x89\xde\x95\xae\x11\x82@\x0eS\x18\xa0~)\xde%\xee|S\x0e\x1e\xf7r\x06\x87\"\x91\x8b@\x89\x1cQ\xa2\xba\xb9'n\xee\xb5\xf3\xe5\xeb\x97\xc5e\xd1\x83&\xd4\xce\xe1z\x1a\x827\xf6G\xcf\xec\x8f^\xd9\x1fa\x8e\xaa \xa7\x11\x9c\x10.ZP\xed\xcd/T\xb0.\xa9\xe4A\xb7\xa1g\xd5\xb0\xd6:\xdc\xf8\xf8\xaci\xd4\xf9\xe7o/he\xf2qw\xe6\xa9L\x10v\xd0YY\x1d\xdd\x85\xe6\xf5\xcd[\x1b\xdc\x90\x18\xe2\x94ks\xe1\xe2\xeba\xf5\xb7\xd2Y\x18b6\x9b3\xf1R\xfeV\x92\x89Qe%\xfa\xbfuK\x1b@M\x9fk\x9eli\x1f\xd7l\x03v\x9dT\xff\x84\xcc\x17l\x85br\xf9c\x001\x95\xa2\xf6/\xa4\x9d\xf2\xb41UO\x8dq{\xd1*+\xb5\xb0P\xffM\xb3j-\xe9'\x9a]P\xf8DV\xd0\xfb\x1bl\x03\x81m\xf8[\x0f2\n\xfc\x97\xc2c\x8b\x91\xbc\x06\xbd\xad\n|\xb2\x98~Y\x8b\xc3\x8c\x14\x1ez\xc3\x9a1\xa1\xbeD\x85\xd2ku\xe0V\xad,\x846\x9a\n\xe7\xe0\xa0Z\x87v\x1d\xe6\xda\x1ax*\xd7\xed\x1b\xc7OCZ\x9f\xa9\xccS\xea\xca\xac\xd8\x9a)\xeb\x9ci\xfb\xe8\xae\xcd\xf4\x86\xb4\xfd\xce>\xae\xcf\x1eX!\x91\x07\x06\\k:jZ:\x00])e1Y_uk\xd8\x8dS\xbc9v\xf3\xdf8C\xe25\xc1\xff\x84 \xa1\xbeA62\x0dT\x1b@\x06\x0d\xf8\x1a\x04\x1ap\xa8w\x82\xcc\x16z\xd7j\xc0\xb1\x15\xa8\x8c\xc5\nuxO\xd7\xed\xd3\xf2\xd7\x19a\xefT\xf3o\xa7\x9c\xb4\xd8\x11E\x1b\x7f\xde\xcc\xe4\xed\x17(\xb2\xec(\x99--\xfe\xebu\xdd\xcb\xb0\xaf\xee\xf6\xde\xa3\x93D\xcf\xab\xb3\xc2\xdd\x993'\xfd9E\xff\xde\x94\xcacgk\x1c\x94\xc9\xe9\xf9\xb3k'\xa7O\xae\x9d\x9c\xde\xc5\xc1\x97\x92t<\x99\xd8\x8b\x11\x18\xb6\xa6\x17 S7 \xb7\x82-\x04\xe1\x16\x19N\x9b9\xa4\xeb,zF+[UFK\x0bUy\x1b\xeb`\x97\x0f\xda\xe5\xb73*Jdk\xd5\xb2\xab\x9b?'\x18\xd4\xa2\x1e\xf0\x9f\xd5\xc3V\xf9m\xf5\xe0\x19!\x8bF\xf1\xed\xfa\xc3F\xb3\xeaV\xfd%c\x01\xef\x8c\x1aJ\x8dg\xd4XA\xbc\xbc\xdd\xae \x9eQ\x8f:\xe0\x19\xed\xdb\xeb\x80\xe3CW\x1dp\x16\x144\x82#\x8ey\x05\xbd1\x07\x93\x82\xa2-Yf\xd0\xf6\x96D\x02Nq\xfb\x9f\x88\xb0?\x9bZ\xbd1\xa9\xaawL\x98U\x9a*\xbeH\x9a\xaa\xb8Vg\xbb\xf1d\xe2\xdb\xee\xa4<g\x9a,\xebV3}|\xb3\x17O.\xd3\xdeQ\xc91\xba\xfb\xf1\x12\x9e\xec\xbdH!\xc9\xdd\xc7\x92&x.:\xfb8/\x13\x04\xa3\x03q\x89\xa3\x91\xb1\xe6\x9b\x1c\x91\xa0\xfe\"\xa0\xac]\xdf\xa0\x83\xfd\x915\x0dl!9aU\x0fL\xf2\xcd2\xc1\xd4L9\x05\x95^,:\xd7-S\xd7\xd4?\xb6\x9d=\xd6!\xd6j\xfb\xed>\xc0\x9aq\xac\xac\xbcC\xb7\xb7CH\x026\xa4\xa3\xb0}\xec85\x8a\xe5\xb1\xcd\x8f\x1d\x8b\xfa\xc6x\xec(\x07\xa9Z$\xc1p\xb7yx4\x96>\xa1\x8c\xe4\x05\x19\xb3\x9b]\xfe*\xa3\x12\xf3\xab\xbd.0\xc4/\xbeC6\x94\x98NeS\x18\x9f\x17\xcb~-,0\xf0\x14N\xbfg\xd6'\xe7$_y\xb4\xac\xae\x12\x1dJ#\x8cE\xf5\x0b\x02 \x90\xcd\x93\xa4\xc5\xa6$\xeefZ\x1aHR,OY\x1e\xff\x7f8\xf2o\xc2\x91\xeb\xc6ry\xa2\x08&\xb2\xbai\x14Q<\xa4\xcf1\x85`\xc43G\xab\xe5\x10\x81\x93\xebi\xf4$9H7I=/K\xaf6\xd1q\xafCM\xd3\x1e\\[\xe7T\xdf!Y\xce|y\x819\x0d~.\xbdw:Nf\xde\xee\x93\x95\x8f^\xc2\xd08\xebn\xff/\xd2 \x15\x7f\xadz\x85iZ\x85\xb61\xcf#3t\x90c\xcc\xb9\xafa\xd88\x1d?\x85Xk\xc4\x9b\xea\x80L\xf9\xb0;\xd5[\xc5\x7f^\xfb\xb3\x99\xc2G\xf65\x8f?\x91\xe0\x0bu>8\xfb\xa48FM|J\xdb*\xa01\x8d`\xcaq\xac\xf7\xf7\xbf\x9f\x9c<\x7f\xfd\xfa\xe3\x87\xc7O^\x1d\x9d\x1c\x1f}89\xf9\xfb\xdf{mG\x90\x05\x7f\xbb\xf0P\x1aM:\x11\x81X\xaa5\xb1f\xb5&\x05\x05U([j\x88\xb1\x1c\x9c<4\xa5w<\xae\xf0|\xc1V\"|\xba\x04\xa3\x9f\"b\xd6\xbd\x17\xebJ\xae\x85#\x08\xa3\xcaf\xdf(_G\xd5\xb4\x88\xc8\xea]\xad)\xf3M\xc2}\xee\xa4Kc\xcc;\x10\x8c\xf9xg40\x99j,\xed\xce\xbf@\xa5u!TZg\xb4\xd2d]\xfc\xbfM\x93u\xe6\x86_\xa9\xee3\x14X\xd4\x7f-\xe8pJ\x95\x03\xddBSj-*\xa5\xd6\xa2\xae`R?\xeb\x0f$k\xb0\xa0\xba\xcej\xe1\xa3\xf0Y\xb8\x14>\x8b.\x85\xcf\x82\xaa}\x08\x038\xa7\xf2\x06\xdf\x8a\x88\x92\x11\xb0`N9q\n#\x98\xdf\x9cFh\xfe\x97h\x84\xe67\xa9\x11\x92\xfe\xf7.\xc5\xd0\x9cV~\xfa\x82r\x9f\x19(\xf7\x8aFp\xca\xf7\xc9\xdc\x83\x16\x9flJ\xd8N\xffC\x84\xed\xc2 \xcd\x95 l+>\xde\x13\x1a<\xf7/\xbby\xf4\x05\x84\xed\xad l\x97\x1aa\xe3\xb7\xfaKZ\xcc\x92){\x9c\xa6\xbe\xd1\xfc\x97\xde\x8a\xee\xa7nE\xf7)\xad\x1clO\xf5\xbdvA\xe5\x0d\xb9\xd7Np\xaf\x1d\xd1\x08.8\xb5<\xba\xb9\xbdvt\x93\xbb\xe2\x98\xc5\xe3O0\xe4\x1bb\xd4\xde\x10G\xd7p\x05\xa9\x1b\xe3g$6\x14\xaaG\xbd\x15\xd1\x92r\x93\xf0\x81H\xbcNvv\x1e\x84\xf8\xbd\xf0\xaa\xb2\xef\x058\x04\x99\x84\xc6\x14\xf7W\x1b\xf9\x82\x90O\x1b\x01\x88\x8f\xba2\x1c\xf2_\x86\xec\x1d\xad^\x96\xc5\xac\xab\x97J\xdbP\xae\xaf\x9f\xd6\xa1\xd4\xf4\x95\xce$\xb8\xfb\xb7[\xedD\x1a\x03\xcc\x07\x1e!0\x9bo\xc1\x0e\xecq\x88?\x12j\xc3\x9d\x9d\x10?\xb3\xf1\x05\x98Y\xa5lcH-\xb9\x0f\xf9\x825\xd7\x82_\x86D\xcbu|\xb4\x04S\x96\x9c6\xae\x87\x16o\xd5\xac\x18*\xef\xd6\xcb\x9f3\xe9\xda\xff\x98\x9a\xc5\x93\xd6\xe2=\xe6\xa4\xc8C0\x91\xead\xb4u\x05$\x0c\x05G\xe4^\xbf*\x07I\x87\xd4\x82\x0c\xb8\x19\xba\x1d\x9b\xaa\xe4\xed\xcb\xf0\xa0\x0d84&\xb2\xe4\xd9P\x00*4pT\xa7\x10\xeb\xdfN\x9d\x0f-2\x8aw\xca\xc0X\xdb\xfa\xb3\xc6\xfa\xd3\xeb\xae\x7f\xdb\xfd\xba\xb5\xfeYge*\x1de\x8b4\x19\x93`\xcf\xdd\xa6<\xa66i\x97\xa3\xa1\xa7:\xca\xd4\x95\x0f\x067\xbb3\x9d\xa2\x8d\xd67\x9fF\xb6\xb8\xce,6\xb12}i|\xb6D\xa9\x06\x06m\x82W\x9c\x15q\x83\x8d#\x89\xcf\x91\xc9\x89\xca[\xe9\xe8Q\x0e\xd6\xc7\x15\x8cbq\x11\xa2\x7fe\xd6p\x7f\x08jM\xd7-TeG\x17\xa49\xfa*M\x8f5\xc6\xaf<\x99\xf2\xda\xc9\x84e\xce\xb2:\xc9\xe2\x07\xcd\x83\x10\xeff\xee\xd3\xdd\xbd\x88yc\x11\xb3k\xad\xdfcj\xaa0\xddX\xc3\xcd\xd4V\xa5.\xa9\xad\xb9\xaa\x10\x94\xe3\xeacZMH\x9f\xcc\x86a\xc8\xfa\xcc\xf6,z\xa8\xa3kkAe\xdc\x81\xbe$\xd5\xd1\xa2y~\xb9\x90\x82\x8a=\x977\x10!\xaf%\x13\xccU0\x08\xd5\x92 \xe27y\x07\x13\xe85Y?\x1d\xa9\xd7l3\xb3\x0e\xb1\x9a\xa9\xf1\xec\xcb\xfdNn\xcf\xc8\x84N\xaf\x7f\xc5O\xe4]\xf1\x03\xb2\xdf\n\xd0\x91\xf0\xec\x17\xcb`Q\xd1\x98g(Z\xead\x1e\xba\xb2\xf393\xf3\xf9D\x05\x1c\xa1\xd6\x15\x85\x9a\x01\\\x1a\xa4\xf7c\x1a\xc1S\x93\xde\xf5\xc3\xe3\xa7/-\x9a\xd7O\xfc\xfd#\x0fi\xffq\xe9\xae\xd7\x91?\xb4.\xf3\x7frf\x94\xa9\x98\xe1L\xe7\x84\xb3\xa6\xa3^V\xd1\xbf\\\xfc\xaaS\x07\xbf\x94\x81o\x9d\xa7\xee\xb1\xd0\x03\x1cs\x80<\xa6A\xcb=\xc5\xd2\xe8\xbbnq\xb1D{\xabYR;\x9c\x86\xa8\xa3cCjH\x84k\x85\xa4\x9e\xbe\x8bU\xbc1\x0d#\xa8\\&\xb5\xd0\x88\xe3\xd5\xfc4K\xb1B\x82\xeby\xb3\xadf}|\xfd\xd7':|Z\xaa\x17?\xf9h\x03?\xb9\xb4\x81\x9f\xba\xb4\x81\xbc\x0b\xdd\xb6\xf6D\xb7\xb5E@\xfb\xcf+\x02\xf91\xe2\xcbDM\xe9\xbfdJl\x8f4_\xafH\xe0bE@.8\x91\xb9qE\xa6\xed\xeah_\xaf\x8d6zh0\x06U\xbe\x07\x8b\xe9\xcdi\xdaV\xd8c\xa61\xad\x15\xc4\xbbm\x9a\xc0\xb2\xe7tB.\xc9\xe4\x98|\xf6\x00\x8cF\xe2\xdf\xcb\xa8s\xbf^^\x1c\xfb\xb7\x8e\xc01\xa6\xc2\xf6\xd1\xccc\x82\xdf\x9e\xfa\xa4\x07\x9c\x85Y-H6\xc5\xfc\xda/\x8eQ\xe7\xc8\xff\x10\x16\x1e\x0b\xf8P\xbb\xc4\xdf\xf1\x9d\xde\xdb7\xff-\x13|\xfb\xa6\x9c\xe2\xdb779\xc9\x97du\x0d<y\xa3e\x18\xf1\xeb\xe7u\xbc\xf0\xef\xe2\xa3\xdc\xaa\xd5\xf0\x9a\x1ax\xb0\xf5#\xc8\xa1GW\x1b\x90\x83?-\xd5\xb8\xea\x02\xc1\x7fl\xb3W\xd9{<\xa6-\xc7\xfc\x8e]\x1f\xc2\xa5\x11\xc2\xbf\xbb9\x0d\x96\x82\xb2(SvE'\xa5\\\xec\xd9\xfbF\xdd\x167\xd9\xed\xc6\x9b\xe4\xd9F\xc4t\xa3\xe6\x8b\xfa\xact\x82\x8f3[6\x9fW\xab\xac\xd4\x10jN\xbe\x84\x02\x19W\xff\x11\x1e\xdd\x18\xe8_%\xc5\x06K\xbe`7\xd5\xaf0C\xf8\xf7\xdc\x1b\"\xc7r\x9a\x92Q\xcf\xa7\x87\xca\xd4\xe1Y\xfe\xc2\xaa]\"\xb0-\x92dc\xa0n\x8f\xffj\x1eF\x92F\xa9\x1e_\xc7\x8b\x05\xc9\xc3\xfe\xefYB\x83^\x04\xbd\xb0\xfa\xd4g\xec\xe3\x8c\x8e\xe3\x0dV\xe5\x07u^xM\x144\xde\xdb^\xa0E]\\f\x19\x92Q_\x8c\x89\xb3\xbc\xfe\xa7\xaf\xba\xe40ca\xcc\x13evQ\x9b\x83a\x8f\x07\x82)\x84C\x881%\xf9\x01,I\x80\xfca?)\x04\x9fX\x1a\x01\x87dd\xa4\xdc\xfau\x15\xfa{z\xebW\x89\x00\x0e\xafo\xfd\xb2U\xec\x80\x9a\xb1 kZy:\xa2\xfa\xf7\x1a_\xb9\xc7}.+!d\xc3]\x8f:\xcfIeo\xc5EX\x06 z\xec\xaa@\xdc\"\xd0\n\xad\xb6\xebm\xa9\xcb\x9e}\xf5\\V\x89\x92\xd5/Lu\x8d\xd5\xa5(9\x96\x96\x1e@\xda\xa4\xa28&.q\xaa\xa7\x8a\x9e\x86\x91\xba7Mc\xc6\x08\x0d\xb6v\xa5%\x06\xb5\x8b\x86\xa2'\xce\xad\x00\x128Z\x9aQ/t)\xad\x9d\xd8\xb5\x1b\xf8\xd0\xee\xa3\xaa\x10\xcb\xe9\x8a\xd9r\xa2.;\xc0\xafDm\xb4v9[|\xa8\xd4\xb7\x06wh?vDy\xf4\xfa\xa4M\xd6\xd9\xb5\xba\x07\xb1O\xbc\xc1\x8c8\x12#\x1b\x0b!\xb4n\x11\xca\xf2\xa46V\x9f\xa1j\xfa\xbd7~\xdd\x9c\x93|\xe5y\xa6xr\xc1\xd4\x91\x8a\xbc\x83\x0b\xce#p\x95\xfc\x04\x15h\xae\xf4\xf9\xe8w\x8a_h\x85\xd6\x84\x96hk\xcf\x02\xfc\xa6# \x98\x01#\x88\xae'd\x9a'\xd7\x1fz>AC\xf8\x13\xd8\xfa\xa4\x93F\x8f\x1eU\xa3\x10\x98\xfcS\xcc\x89\x1aX\xcc\x1b\xa0\xebI\x0f1\xa1\x89\xb9<\xb8aXB+\xb4\x19,j\xc8\x125W\x9c\xa1\x84\x8ay\xbbYh.Sc\x18\x08\xe7@|6o\xa3oRZR\x04=\x84C\xe8aE\x028\x80^\xd4\xb3c2\x83\x01\xf4\x0czTu} \xa6\xbbp\x9c\xcaR\xfd[{\xe8\xb2\xba-,%\xfc_t3\xdaR%\xa4\xb4I\xe1\x9a\x96^4x\xe6\xf4\xda\x9c%\xc8\x1d\xe0\xc5\xb7}\"\xab/ ?\xcf\xbdVt^\x93C=\xd0\xaa\xdcb\xf5\x94\x9d^\x9d\x89\xb3t\xc3\x0d\x16A\xe6\\\xe0\x06\xae\xb5\x1cT\x1e\xc2>\xe6G\xe4\x98\x02\x07b\xc3\xb6\xb6\x83\xae\x06\xc0\x9a\xb5\x0e\xe4\xc8\xe0\x10\x82LR9l.\x94\xed\x92\xb2\xf4\xad\xa8\x18\x988\x0b2\xe7\xfe {\x9f\x9c\xcd\xd8\x86pS\x84Ig\x84*C\x94\x9b>I\xaeG\x9a\xdes\xab\xdd\x1dl\x83\xc6^\xfcq\xb7D*=\x19\xaeWWh\\\xbe&\x06?\xb9\xde!\xc1\xb9\x91\xcdz\x14yYD\xac\xdc\x1b\x8a\xa5\xc2LY0L]\xe5^5&\x9a3\xb3\x06\xe4\x80\xb9\x1f\x94\xba\xbf\x80\xd6\xfc\xee\xd5\xcb\xe9\x92\xbd\x8a7Q\x0f\x88}\x8d\x1e2\xbb\x11\xec\xecy\xf5\x92\x14G\xf3\x05\xf3\xb11\xc8^4\"\xae\xcb\xe9M\xc9\xfd@.c\x9d\x19\xf5\xe0EmFH\xaf\xd9\x8c\xb3%m\xee\xfc\x8e\xf9<\x0dH\xa5J\x12\xdb^\n\xb0\xe2\xe3\x0d\xf4*\xd8\xfb\x13_\xf6T\xf6\xefK\xa5@\xa3T\x1fI\x10V\x06)W\x06<%\xe5\x98\x88w\x17\xeb\x8a\xdf\xcb\xbc AU\xa7\\T\x12\xe7\xbbR\xcfy\xec%\xb5i2\x97\x99\xddU\x97\xa3\x94\n\x9e\x05\xba\xb9\xcdR!\xefJ?o}V\x8f|^\xc6\xe9&\xc2\xd69)\xc9\x86W\xfb2k\xa6\xc7V\xd3\x1dN\xcdk\x8b\x81Z\xfd\x13L\x97W+\xceDHu\xdf\xcd)\xd6\xab\xb7\xfeN\xc3\x86\xaa\xd5\xcd'\xd6\xaa\x1at\xf9\x8e5>&\xc6<\xa0\xea\xba\xf2\xe4\xf7\xc4.}\x93m\xb8\xdf\xa5\xf8\x81;|\xa3\xd3\xa5\x14Y6\xe7,,\xd5\";xn\xea']V\xc2%m\n\x97\xbc\xefa\x16\x01\x1d9\x05L/\xd6\x8aO\xff%\xf1%n5o\xf4M\x84=T\x8dQc\xa9]\xf3\x98\x1agd\xc7\x8a\xe8 7\xb3z8\xda\xb2\x99MF\xb1!rx\x0e\xa5\x02\xdc\xa6\xe3\xf1_-\xcf\xa1\xbc$r\x05\xfdF\x91o\xcc\xbc \xe8\x1f\xfb5\x9f\xc6\xec\xf5\xb5\xa51\xdf5\x02m\x13\xffb\xae\x93\xa4\xae&m\xabk\xea\xbb6\xb2\xd6Bn8k]\xc7\xa1\xae\x895o\xf1\x8d%O\xd9\xe2\x06ga \xd9\x1f5)\xc1WD\xd0\x8f\x12\x7f\x8c\xe1\xa7\xdd\xab\x0d\xcc\x90\xf5\x82y\x1e\xd8R\xa1\xa4.\xef\xfa\x14\x1f\x9fa]m\x9b>5\xaa\xfcd}\x07\xfe\x9cz\x0e\xddTnZ\xf8\x03c\xa1MUa:\xabU\x98\xee\xcc\xb6\x9c`\\\x90GV\xe4\x00}\x1a\xb1Z:\xc6-\xa9\xa4\xc4I\x04+\xceJ\xafB\x14\x13V\x95\xbf\xa7\x19D\xaee\xf1:\xad\xce\xf2l\xb9\xf8w\xb0\xe2~6\xbc@f\xbb{\xc7P\xd5\xc5\xf9wO\x06\xde\xc8\xb9w\xe9\\\xf8\x95\xb59w\xfe\x99\xe0\xdc\xbb\xf7\xb5~I\xf0\x04\"\x04r\xbd\x86\xe1(\xc4\x18\x06\xccY>\x8c#HFp\x00\x89\x87q\xd0A\xc7\xec0P(\xe8G\x81\xb3:\xe5\xed4?U\x14\x8cD\x90\x04&\x12\xa9.\xcb\xf87\x165f\xf1&r\x06\xd2!\x99py%b\x08V\x9e\xbd<\xdf\x84\x86\xab~\x9e\xd3M{J\x8a\xe3\xe5\xa9g\x81\xcfR\x06\x1c\xd8|\xc2\xcaJ)\xc2\xea,y\xf4J'\xe4\xb7\xb4\xe5y\\&\xc6\xd9 \x9f\x96y\x8a\x0b\xce\x0bm2\xc9\xc05K 3m\x96ay\xd3\xffT\xfbDVo\xa7\x1b\x0c\xa9<\xd483\xb7\x11$o\xc0H(\"\xce\xfd\x8f\xf8\x9aV\x86\xef\xea\xe7-)\xd5\xa7\xdbts5Z\xab\xe4W\x1f\xf9Y\xff\xfe^^g],\xbc7\xae\xb11\x97U\xbb\xefy|\xb9A\xaf/\xd8F*\x8cy|\xb9\xe9\x99\xfa\xa2\x96\x8f\xc8\xab\x13?\xa3Yk\x06p\x08\xef\xa9pa\xf9\xe8'(\xcd\x13z\xfd\xe9\x88\xee\x98\xe8\xcewn9\xd9\x18\x13\x8d!\x8f`n\xbe\xf8\x94,6\x80\x9d\xd6\xfe\xeb\x98\xcd\xfa\xf3\xf82\xb0T$\xb6t\xd6\x14\xbe}\xa5\x04\xcb\x1e\xe3M\x06D\xbb\xe3=\x90\x9fgI\xba\xa1\x99\xa1\x1c\xccO\xd74l|J\x16\x1f)K\xd2\xcd\xba\x15@WC\xdeL\x05%\x12\x82m\xd6_\xdb\xcaa\xc8\x0c\x06\xe6\xfeX\xfc\x89l\xb0\xbc\xacf\x80\xb8\x06J\xf1\xfen\x18\xa5x\x93\x9b\xa3\x14\xff\xeaKP\xea:\x92\xc4?\xbc\xb8[\xad\x84\xd1G\x8aj\xdeZ\xf26\x8c\xac\xec`x\x15;\xcd\xac\xdaeuq\x91.\xab\xc7\xe6i\x05Zja \xd8\xb1\xbb\xb5sY\xcf\xbf\xa3\xec\x7f\xc9\xb8\x19\x04\x1f\x82*\x91e\xd7\x0c\xb5f*\xe9\xa7\xfc\xf6\xd6-\xd8\xde\x8eQH\x95\x0dZ\n\x95\xab\xeb*\x8c \xb6\xbeq\x15\x81^\x06\xe9\xbfhU\xb2|\x93e!5o,\xfe\x9d[\xae\xe5\xd7\xd2\xe1Q\xa2.9N\xcf(K\xfdB\xdf\xa9e9\xd3\xee\x0f\xc0?\xe2Q\xbf\x9c\xd1\x8f\xfae\x89\x95\xd0/e\xba\x89;\x8bS\xa9K\xe8\xf0kE\xaa<\x1c\x1aUD\xa3\xac\xdf\xeb7\xd1B:\xab\xfa\xbd\x9d\xe2\xdb{\x1d\xae\xad`\xdaki\x04\x05j<\x0f9i\x1b\x0c\xe0\x8d\x14s>s\x8c,\xf0\x05\x91\xe6o)=C\xfe\x0b\x16\xb7\x8b\x088)\x80\xf1\xe1\xe6\x9aW~\xf0\\\x97\xa9(\x0f\xad\xcd\x98\n\x15C\xb0!_\xba\xb9\x186\x8b\x8b\xd9\xd3l\xb2\x81\xa3\x0b\x9bU\xd9\x05\xb0\x8a\xf3L\xcf6\xd0\xcd#@\xb9\xbd\x84\x83\xf2`\x00{p\x1bv\xcb\x8d\xe6 ]\xcaL:\xeeT\xf0\xf9\xb9\xf2\xa36\x16\x0ea\xcf\\\xf5\xb6|M\x0c\xcck\xf1\x1b\xdf\xf0\xd1^\xa2\x90~\xe7\xee\x9d\xfd\xef\xf6\xbe\xbds\xefN\x18\x95\xb7\xe1\xe1C\xd8\xbb\x07k`\xf0\xe8\xd1#\xd8\xd9\xbb\x17\xc1\xdd\xfb{\xdf\xde\xbd\xf7\xdd\xee7\xcd\xf7\xeeh\xef\xdd\x89\xe0^\xf5\x1c\xd3\xb9\x07\x0c\xb6\xe1\xce\xb7\xf7\xef\xee\x7f\xb7\xbf\xf7\xdd}Xs\x98\xfe\x8bo\xe9\x7f\xc9\xcf\xf6\xeeG\xb0\xbf\x7f\xf7\xfe\xb7\xfb\xfb\xf7\xca\xe6\x8f\xe5\xe7\xd8M\xf9\xe6\x9d\x08\xee\xec\xdf\xbf\x7f\xf7\xdb\xef\xbe\xdb\xfd.\xd4\x9bpl\xb9@\xe7\x0f(\xd6\xba<\xdc\x10j0\x80;{\xf05\xe4\xb0\x0d\x9fi\xf0\x94\xe0\xa6yJ\x02\x16\x86|F\xf6\xce\xc1sw\xaaKh\xc5\xaf\xd1K}R>\xdd\x943\xc2\x8e:;\xd8\xacq\xcfvCc9k( \xa2\x89\x14\xd6\xee4\x95\xc1|/~\x10\xc9\xc9\xb4\\\x00\xfa\x1b\x1f\xe8p\xaa\x02\xbc?\xd0\xe1+\xfe\xf7\x07i\xb2(\xf8-\x19:*n\xcb\xc0\xea\xf2\xbe\x1e8\x04\x03xF\xf1IB\x8b\x85\xc8\x8d\x8f\x9f\x1cg\xcb\xbc\x9eW\xc6\x04\xb2\x86\x12I\xba\xb7\xd6g\x87\xad\x8fgqBE\xdb\xd2\x96)ng\x94\xc5 F\xa5\xe3\x10\x84\xee\x12c\xc4s\xd3)9M\x93\x0dB#K\x01\xe5#\xb3\xae\x84I\xed\xb38j\xb9\xf7\xfbZ\xff\xedT1\xb7\xcb\x02N\xe1n#\xc3j)M('\x89a\x12A6\xb2\x17\x9f\x06\x10FU\xcd&\xe9)4\xce\xe3\xc5\xcb\xba\x0f\xb2/\x8c\xae\x01\x04\xbe\xeeMXt\x89\x19-X\x88h\x04\x07\x10\xb0\x93\xeb\xec\xd6\xd7\x14\x93\x9btf\xeexn\x07\x92\xdaI\xf5\xbe,\xed\xfc\xde\xd9\xce\x90E@F^\x8d\xbd\xb1\x90\xc3\xe6\xd9\xdc\xb1\xd9\xb6\x88O2.h\xc3\xd32\xac\xf773\xac\x9d\x1b\x1e\xd63\xf7\xb0z\x05\xd2\xc0\x9a\xf1\x03\x0e\xe1\xc5\xf1\xdb7}\xf1(\x99\xae\x84\xdaVRK\xcf\xdc\xa2\xaf\x9c\x04\xf8\xd8\x9a\xc9\xd3\xd2\xdc\xc7N\x0c\"\xf0\xb0\xe4\xe0\x08<\xc2\xbfw\x90\x9d\xf3\xea\xe0\xb3G\x07\x9c\xf5\xd9\x86\xfd\xfb\xf7\xee\xde\xbds\xef\x9b\xfb\xdf\xc16\x04\x843d\xf7C\xf1\xe7\xa3G\xb0\xdf>}\xeb\x0b%[{M\x87\x0bu$\xbe\xae\x8eD\x19\xa8\xc5\xef5\xceD\x91^\xa0|\xd08\x14;\x89\x9a\xec\xb6\xb1\xb0\x0c\xa3o\x0f0\xfc\x161\xa5>p<\xd82s\xf2\x93/M\xdf\xe0\xa73\xbf\xd1\xc0\xa9=\xbf\x93b\x9a\xd0 JO\x9e\xdd~\x817\xdd!:\xd3\xc1\x01\xec\xb4\xfd\xffLfN>*?\xc3\xd5\xb9\x9e>S\x99\xa8\x9c\xa3\xd1\xd2\x0c\x97{\xc7\xcb\xd53\x8d\x0b\xf6\xfc\x9a#+\x8dq\x7f\xd9\xe8n\"~\xc3\x13qn2~\xc3\xb7\xcb\xc5\x06}*Dm\x86\x15\xd9\x9d\x98\xf9:U\x96\x02.u\x8a\xa0Z\xb1\x10\x98\xf6j_\xfe\x89\x15\x8c;\xb23\xf2\x8b\xa8\xec\x8c\x9c`\xef*\xe7~t\xce\xafRDt\x04\x85VI\x15\x959\xa3\x03{J0\xef\xc9\xd1\x1eB\x0e\x07\x90\xab\xd0\xfdc=\x02x_94\x88\xd61\xc7\x81gP\xb0r\xee\xfc\"\xf2Qz\xab\xfe\x15$\xe4:\x8e\x9f\xa2\x9a\xbdW\xeb7\xe4\x9a\xe8\x89\xfd\x1b;\x0d6\xd2k\x87\x88\x82\xaa\x14]]\x0b\xa5e^\xafG\xd3\xdc\xba%\xf8\x8b\x99\x96dU\xe1\xed\xb5\xfc\x11EUmKV\xa5M\xdd\x117s^j\xc1\xe3\xd1\x00v1\x07\x85%\x90\xc8\x02(d\xbefUt\xd1\xce^\xf5\xa5<\xb4Z\xd5\x14\xc1v\xc61\x92/\xb2b\x13\xd3\xe6\xf5\x93|\xf8\x99\xf5\xaa\x12\x03%\n\xec\xc3\xd7\xea\xd7\x0e\xec\x89\x02\x03\x0e\xcb\x9f-\xf5\xa1~)\xa3\x01s\xca\xe5\xeaJ\xbe\xd8V\xd79 \xad\x8d`+\xc1R\x00b]Eh)\x17\xd1\xb30\xd4\x92\x96b\xb3\xf2\xbe\xb3\xe5+\xde{\xe4\xca\xa3\xa1C\xd4l\xb6\xf3\x06i\x84\xb0\xaa\x19\xd0~\xc7\xfe;'\xefo\x0f\xbd\x86\xfd\xac\x84l\xc6!\x1b\xc3\xff\xe5\xb2\x03\xdfz\x1c\x07\x92\x9a\x0b0\xc6\xfc\x1e\x88w\xe0\x10>\xf3\xb9\xc7\"\x1d)Zm\xd4\xcfL\xa5\x8c\xed\x02\xbf\xd3ZbIU^Q \xefm\x9c\x92\xf8\xdc\x87\xf3Rf\xb9!\xefbd8\x94C\xc7bq\x1e\xe5\xa5 \x00J\xff\x12\xc1\xcb~6EgZ\xebg\"?\x89\xe6\x9d\xef<gY\xb9\xf1\x83\x92\x18\xc8{\x9c\x0e\xc8\x8c4QE\x89\xfc|\x9c6u\xb9[!\xb3S\xb1H>}\\\xc3\xbf\x8e\x1f\xf8\x9e\x11\xaa7\xed\xde\xe3y\xf2\xffq-\xbd\xeaK\xf5\xc7+\x1a\xb9\x90\xcd{\x0c?'l\xe6sN)\x99G\xef\xc5\x8do\x9c\xa7S\x01\x02\xed\xf1\xdbL\x96\xb5;W!\xa7\x08Uz\xd8\x89\xd27\xe87\xcb\xba-\xef\xd0q\xbd=\xfc\x8dy,\xc4 Q\x0bZ\x9a\x95\xbd\xe4\xb4\xeb\xe6\xd31T\x9d\x86\x9b\xd9l\xd8|\x95\xc3\xcd\x03\xda\x89\x96g[\x94\xd0\xaeY \xf4\xc7\x9a%A\xbf]3)\xfc\x1a\xe9J\xda\x10\xef\xbd\xac-\x9f\xb8\xf7C\xadiq\xef\x84\x18>\xbe \x86\xaf\x8fH\xf3\xf36TT~\xb9\x03\xa0m\xb8\"P_\xb4\xef?\xcd\xd2\x94 \xa4\x0f\xe0\xd4\xe0\x03\x81\x01b\x1f\x0d\x0f\xf4\xb4\x92\xefX\xfb\xb9\xc8\xcb\xb70<\x91\xa9\x02\x8f\x8c\xa3d\x07P\x18\x1e\xe8Y%\xe7\x86\xe7\xef\xc98\xcb'\x07\x90\x9b\x9e\xc5\xf4\x8c\x1c\xc0\xca0\x89\xf7dAb\xde\xa4\xe1YR\x1c\xc0\xccp\x7f\x9agsLmkK\x97|\x15\x01\xe9\x93\xcbE\x96\xb3\x02\x93\xc4 \xac\xbcr\xfb\xb4\xf5\x96\x05\x81\x82\xe5\xc9\x98i\xf9i\x94 ]\xdbn\x9a\x0f\x8d\xdeQ\xb3u\x15\xfb\x16G\xb0\x8c\xa0hn$L\xc6\x1e\xb00\x82-\xe3\x1e\xe6]\xa7m\xfa\xa7\xa5\x01C=OX&L;\xca\xf3,\x0fz\xaf\x13\x9aL\x132\x01r9&\x0b> \xc8\xc6\xe3e\x9e\x93\xc9\x03\xe0\x93d3\x024\xa3;s\xf5\xe2\x84\x9c\x03\xa1\xe7I\x9eQNu1\x02\x8b\xbf4]\xa6)\x10\xde*\xccIQ\xc4g\x04b:\x81x2Ix\xb3q\n3\x92.\xa6\xcb\x14.\xe2\x9c&\xf4\xac\xe8\xf7\x0c\x14\x9b\xa4\x05q\x90\xfc1\xe7i\x9a\xc0r\xf8\xf7L\xed\xfcfP\x07\x05\xeb\xe7d\x91\xc6c\x12\xdc\xfe\xbf\xc5\xed\xb3\xa8\x9b\xa8AE\xd8\xc6\xc3\xe9\xf6v;\x84\x17\x90\x8a\x85a\x9f\xc6s\x0c\x8dxN\xcf\xe3<\x89)\x83\x9f\x92,\xc5\xe4\xdb\x86\xfc\x92\xad;l\x96g\x17\x90\xf6\xa7y<'\xc5\x87\xec\x1dV\x91\xd9k\xa6b\xd3\xb0\xfa\xcb\x91\x98\x06w\xee\x86f\xdc\xcd\xaf\xdf\xba#K\xa2L~>!\xd3\x84\x12\x95\xfc\x9c\x8bE\xbd\x93\x13R\xbc\xce&\xcb\x94\xf4L\xa4T:I5\\\x9e0\x8f\x12\xe7\xbb\x9ef\xf3yF\x8f.\x19\xa1\x85\xcc\x7f\x8e\xf7\x1bwH1\x8e\x17XS\xf1UB?\xbd\x8b\xb1\xae\xa2J\x9d\xdf\xba]\xcc\xe24\xcd.\x8e>/\xe3TV#d\xfd\xd3e\x92N\xbe\xcf\xf2\xf9\xb3\x98\xc5\xe2\xb5,g$\x97OY&o\x92<\x89\xd3\xe4\x0frL\xe2|,\xda[\xc4y\xa1\xff>#\xec8\x9e/Rr<\x9e\x91\xb9\xf8\xee<N\x93I\xcc\xc8\xbb8\x8f\xe7\x8d;\x8c\x91\x9c\xd6\xee\xbdN\xe8+\x91\xe2\xa8v7\xbe4\xdc\xfda\x99Lj7\x9e\xc5\x8c|H\xe6\xa4v\xb3\xac\x00W\xddz\x92e)\x89\xeb\x1d\x7f\x9f\xa4\xf5\xef\x9eSF\xce\xd0\xa6R\xdd{\xb3\x9c\x9f6nqR4_\xce\x9b\xc3-\xef-\xf2l\xf1tF\xc6\x9f\xe4ws2\xcf\x94\xd8\x90\xd4\xd2\xd3\x0b\x8a\xd76\xd2\xf2\xefN\x02\x1a\xdc\xdd3I?\x99|\xba\xf7\xad\xe9i\"\x9f~g\xfc6\x96O\xf7\xef\x98\x9e.U\xbf\xfb\xa6\xa7\x85zz/l\xd0C>\xaf\x17\xc7o\xdf\x88\x9d\xd1\xe9\x01\xc6\xf2U\x07\xb3\x8c\xb6*D5\xab\x8eF\xe8\xa8o\xdd\x82^\x86\xbd\xf6D\x11\xb2\x86\xb1\xa0\xb7\xa4b\x9fNzp\x00\\\x82*\xf8\xc6\x8d\x97)\x0b\x03\x16\x86\x8ex\xd7+\x18\xc7l<\x03q8\xb6\x1e\xcb\xef\x1a\xd9\x1b\xae\xf8^\x16\x03J\xa6\xabNH\xc8F\x8e\x05\xc3|$\xf9f-\xa9<\x1c4\xfb\xc6\x1e\xe2<\x8fW\x1bt@d\xb3\xe8]\xa3\xff-\xeaI\n+\xefp\xd4\xeeH\xb0%\x92O\xd2z\x03b\x0eM\xe3\xabr\x84\x1eT\n\xae\xe6\xb3\x9eAB\x0b\x16\xd31\xc9\xa6\xb0RK\xd2\xe7[\xd2\xf5i /\xc6\x01U\xcf\x86\x8b\xb7\xd2\xb2)\xce\xb8\xcb\xb4\xbc$\xec\x8b\x8c\xce8\xdb\xea\x95\x8a\xd9\xac\xde4\xd5Nd\x98`\xf0Cv\xcc<\x0b\x05)\x15\xa3)\x87\xbb\xd2\xfd\xecF\xb0\xacP\x91\xb4\xb3\xf3v [\xe6\xf0\xc5!3$\xe80\x14\xbe\xeb*\xc6N\x879\x17\x0f\xc90\x1f\x89\xf4\x8at\x99\xa6fMt+\x13&\x82\x8cf\xf9\x1c\x0f\x0f\x81s\x03\xb8\x8c\x90N|O}\x91\xd6<\xc1vOIQ\xd2\x9dc\xd9\xc7\x92\x8eo\xbe\x175\x11\xaff\x9b\x99\x9a\x8dT\xe2u\xbc\xf0A'+\xca4\x93\xfa\xba\xf4\xa2\xf5ue\x01_Y\xa1\x8a5\xe5\xee\x84?\xdb\xa5\x84p\xc8\xef\xb1\xcb\x7f\xdb\xa8K\xc5x9^\xa7\xee$s\x1e\x08Y\xd7\x81 U\xda\xfcn\\\xdd\xa5\x18r\xb1\x01\x98\x8aU\xc1\xc8\xfc\xc3lI?\xbdN&\x93\x94\\\xc49\xf1E\x9c\xee\xfd\xcf\xfa\x93\xa4X\xf0\xb3I2\x8eH\x97\x9cp\xe9n\xd4\xf4\xb2\xd3\x82\x05\x1d[\x08\xcd\x93\x01 0\x959\x0b,\xbel`\x14#\xccw\x0d\xe7\xa0\\#\x0e\x80e\xf14\x9btC\xf9\xbcL\xb2\xa5\xaal[I4+55\xc1\x05?[.\xf8D\xfc\x93\xa8+\xe0\xec\xf7Ty\xd4m\xe8\xf5Bc\x06\xa5\x10\x19pK0\xf3\x95\\f~\x82\xf9l<\x8c\xce\xa9N9\xa5\xc0\xe1\xbc\xa7\xfc3\xd0\x8a)V/\x8a\x13\xb2\x0d\x0eu\x9a\x11\x99\x83\xc0p\xec2\xce>\xb0\x91\x1d\x96\xf5^\xfaI\x81\x9dQ\x91\xf8\xfe\xa05\x88\xf6\xfcg\xc9\xd9,M\xcef\xdd\xdc\xa5Z\xe1I6Fu\xab\x99\x01\xd9\xaa\xf8\x8c\x9e!s\xaf\x08N`\xe4\x92=\xcd(#\x94\xa94\xac\x8f\xe0\x1e\xb9S\xc5\x03\xe9\xafX'\xdf\x8d+\xb5\xec0\xba\xd2@\xa4\x83\xab\xfa\x88\x90\x0b\xdf\x8dP=\xb2\x1c\xee\x8e\"\xd44\xecE\xa8@ \xfd\x84R\x92\xff\xf8\xe1\xf5+\x91q\x18\x16\xa8V\x10r\xb2\xa8g\xbb\x80\x87\xf0\x0d\x92\xc9\xdf~\xc3\xfdJ\xa5\xe7\xdc\xd8\x99m\x86\x03\x84\xf7\x94\xaa\xae\xb7\xb7\x8b\x910\xafM+\xd8\xecE\xb05\x86\xf5\x1a\x16\xf0\x08\xbe\x15\xbd\x08\xaa\x80w\x87\xb7\x7f;\xbe\xddg\xa4`\xc18\x8c\xf8\xdb\xfc\x83\xdb\xc3\xaf~\xbb\x18i\xf7\x83\xdem9\xb2\xf5\xbal\x80\"iN\"\xf8[\xefo\xa0\xdcN\x92\x08z\x7f\xeb\xe9?\x97\xc3\x02v\xe0\xee\x08\xb6\xd1)\x9e\xf2g\xbd\x9d\x9d\xdf.\xefp\x99\xbc\xba\xf5\xf5\xed\xdeh\xb8\x18\xb9\x8de\xb8,SQ\x98\xa1\x1f/\x16\x84N\x9e\xce\x92t\x12\xc4\x9a\xc8}\x94\x12\x8efA\xafX\xc4\xb4\x17\x86\xfd\x82\xb0\xc7\x8c\xe5\xc9\xe9\x92\x91\xa0W\xb0\x15\xaa\x03\x86\xbdq\x96f\xf9\x01\xfc\x9f{\xf7\xee=\x80iF\xd9\xce\x05\x11 qO\xb3t\xf2\xa0\x17\xe1\x8a\xe1\x7f\xfa\xabxo4\\\xc0!\xae\xdd\x1d8\x84}8@\x08\xdf\x87C\xb8+\xff\xe6\xf7\xef\xc0\x01l\xdf\xfeW\x10\x07\xa7\x05\xcb\xe31[\xa7I\\\xac\xe9d\xadL\x0fk\xbeg\xd7E0_\x17$g\xe1\xe1z\xc9\xb2p}\x1a\xc4\x05Y\x93\xb3\x84\xae\xb3,\x0dHL\xc3\xc3uN\xe2O\xeb\x15#\xe1z\x8c\x8f\xf9\x81\xb3\x9e\xc5\xf9\x1aE\xdb\xc9:\x8d\x8bb\x9df\x94\xac\xb3\xf9\"]g\xb4`\xeb\x8c\xb2\x84.I\xb8\x9e\x90\xe0tyvF\xf2\xf58\x99\xc7\xe9z\x9c\xc69YO\x03\xbe\xc7\xd7$\x0f\x0f\xd7 M\xd8:\x0d\xc8Y\xcc\xc8\x9a0\x12\x1e\x86\xebI\xb6\x9ed\xcb\xd3\x94\xacI0\x9ee\xeb\xb48L\xa6\xeb\xb4 A2\x0d\x0f\xf9<\xb0\xf6\xe8\x9a.\xe7\xebsB\xd9\xfa2\x18\x93\x05[\x93\xf1z\x11\xa4\xc98a\xeb,g\xe1\x9a\x91\x80N\x8a5*M\xd69\x0d\xc3\x90w\x9d\xa6l\x96g\xcb\xb3\xd9:N\x0b\xb2Nh\x9c\x06\xe9\x8a\x0f\xe5\x92O'\x8b\xf9\xd7\x01\x89\xc73>\xfb\x84p\xb0e\xf3\xf5\x92\x8e\x03\xbe{\xf9\x00\xcf\xd2\xec4N\xd7g\x19\xcb\xd6g\xcb8\x9f\xac\x93`\xba\x9e/\x02\x81\x03\xc5Z\x1b\x04\x0d\x12\xb6F\x95~p\x92\xd11 \x0f\xd7i\xc2\xa1\xb5dk%\xfa\xacY@\xf2i<&k\x92\xd38\x0d\x0f\xc3\xc3u\x11\xae\xd3 \x9e\x9fN\xe25a\xebl\xfci\x9d\xd1\xb3p=\x0f\x92q\x9e! \\\xa3\x8ai-\xd4\x08\xe1\xfaM\xfcfM\x83xN\x8a\x05o)f\xc99Y\x93K\xb6&\x17\xeb$]gl\xbdL\xd3p\x9d\x05\xc8\x16\xad\x17\xc2\x10\xbe\xce\xd7K\xb6>'y\x9eLH\xb8^\x04\xf1\xf8S|F\xd6q\x1e\xcf\x8bu\x9e\x9c\xf3u\xc93F\xc6\x8cp@\xb0l\x9c\xa5\xeb\xe5i\x9a\x8c\xc3u\x1e\xc4 \xc7\x98 \x9ed4]\xf1\x85\x9b\xae\xcf\x92\x82\x91|\xbd 1[\x7f^&y5\xefb\xbc$k\xa1b[\xb3|\xb5\xe6T1\x0c\xd7Ep\xba\xe2\x8b\x1f\xa7d\xb2&\xe9t=\xcbr\xb6N\xce(\x99\xac\x93?\x10<1K\xc6kT\xe7\xacY\xbe\x1c\xb3\xf5\xf2\xb4\x18\xe7\xc9\x82\xad\x97\x0b\x92\xafWt<\xcb3\x9a\xfcA&\xeb\x8b\x84\x8dg!\x87\xe8|\x91\xf2\xc1\xcf\x08]\xcf\x92b=\xcb\xb3\x8b\xe2p\x9d\xc7\xb4H8\xd2\xe4K\xb2\xceW\xeb\xd5\x82\x041\xee\x8f \x99\xae\x93\xc9\x9a\xc6s\xb2\xce\xa6a\xb8^\x064\x18K4\x9f\x90i\xc0\xd9E\x8e'\x19]\xa7\xa4(\xd6\x85\x18#K\xd2p]\x90u\x91\xf0\x05:\x0f\xe2|\x9d\xe4l\x19\xa7\xeb,\x99\xacQm\xca\xd7\xe7\"\x18\xcf\xe2\xfc\x84\x89\x01\x91\x9c\xacgIJ\xd6 \x9b\x85\xeb\xcb,_\xaf\x12\x92N\xc2\xaf$\x01\x9cr~iw\x14r\x16T'9\x8a\xdc| \x97\xecM6!\xc14\x0cC\x91Al\xc1)\x94\xa0\xeb\x9cF\x1c\xf0\xf3c\xaa\x1d\x00{{\x0f`k\xb8\x17\xc1\xed\xe1o\xb7\xff\xbc\x1a\x06\xbf\xedl\x7f=x\xf8\xe8\xe0\xc1\xfa\xb7\xdf\xfa\xd1\xe1\xd6\xad\xbf\xff\xfft\xfa{{\xf8\xdb(\xac\xdfhPhI\xa0\xc7\xbc\xe3\x0cS\x93sR\xff\xb0\x07[x\xceH\x12=.\xa9\xf3\x98\x1fS\xdb\x90\xc26\x12\xe8m\xd8\x1b\x95\x7f\xee\x8f\x90 \xffvyg\xbc\xb5\xb3\xd3So\xf2{\xb7\xbf\xae\xff\xbc\xcdi\xe1\xff\x11-\x8e\x86;;\x8b\xd1\x03\x87\x07\xcf\x14\xb6\x070\xf6e.\x8d2\xda<^|\xc8\x1a|\x97M\xf5as\xb1\xe4\xc7b#\xc9~\xf9\xcapo\x04\x87\xf5\x9f\x07\xd0\xfbDV\x06\x96D)\x06\x0d\xed\xef[\xdb\xdf\xaf\xb7\xbf?\xaa1[\xaf\xe3\x85\x89\xe1k0\x90\xaf\xe3E?)\x84\x96\x04=\x81\x84\xf7\xc3\x06\x1cd\x9dc\xa4\xa2\x82\x0dE\x0b\x89\x89g\xe4\xfd\xd3*\xef\xfd^\xa5\x11\xea\xcfI~F\x02\x93\x14x.\xa3\xe5\xbbG\xc3\xdf\xe4\x8c\x155V\x07\xe2O\x0bK\xf4\xbc2\xecl\xed\x99\x9fM-:]p*=K\xe6o\x11\xc1\x04\x06(~&\x9a\x96RE\x06\x04!\xa6 \xe4\x83\x0b\xf8\xb6\x9e\xd4\x1c\x85\xc2\x07r\xd8..\x8e\xf72\xe3\x14\xc3'8\xfd\\\x8e%\xab\xc62C\x17Y\xe7Ws\x0e\x83\xceP\xf63|k\xaf\xe3\xad\x15\xe7i\x83\xb3\x08h\x99m'\x82\x9c3X\xc12\x82yS\x0d\xad_mTPB\xc7\x8a\x0b\x1d\xb1r\xfe\xc0\xec\x87\xb1H\x9a\xb72s\x83\x06b\xa1\xab\x86\x8d\xdf\x8c\xa5k\x05r\xe5\x86\xef\xa7\x9c\xfbHm\x18a\xc7\x15~ma \xdeI_n\n\xedo[\xe2\xe6\x8e\xee@\xf1\xf7\xa14\xe0M}\xe1\xd0\xba#\xc7\x14\xb7I)\xb9D\x8e\xf4\xfb$%o\xe29\xf9>\xcf\xe6R\xa6y\x96\x14\x8b\xac@\xe3\xeb\x8f$\x9ex\x94\x95W\"\xde\xedi\x92\x12~l\x0fz\xc1\xf0_\x0fF_\x87\x0f\x0e{\xb7\x93>\xb9$c\xa3\xe1\x00\xcb\x9e\x08\xdb\x00g\xea\xebm\x94MT-\xd8\x88\x93\xaa\x9e\x82\xcdh\xb2\xa1F\xaa\x8c\xf9\x19\x94\x12n\x99\xa6m\x08-\xe2b\x1c\xa7O\xe3\x82\xc0\x00\x9e\xd6\xef|/\x07\xd9 \x1a\xd9\xc3\xd3\x80Tf\xe2\xdf\xfa\xc3\x7f\xf5o\x8f\xbe\xfe\xea6\x17%B\x93\xc6*\xa6 K\xfe \x1f\xf3\xb4\xb3\x07\x0e\x802vlK\x8b\x1d\xe3\xc2\x9a\xd0u\xb8ekM18\xd6{\x0e\x8dG\xf0\x19a\x8f\xc7\x9c\xcb\xe7\xd8\x92gi\x9a\xd0\xb3\xf7\xa4Xd\xb4\xe8\x86F\xe3$\xab\x14\xfe\xfd\xa4\xd0\xb4\xff\x9a:\x84/\x8dMcP?\xf6\xccoV\xfa\xa5\xbaCx\x97Wry\xc2\x15,\xceY\xf1s\xc2fAo\xbfW\xea#u\x15*:\xe9\xf5\xc6b\xf7\xf4\xf04\xfd\xf3*\xac\xb0\xd0V\xa8\xc1LlK\xd5N\xd0\x93]\x88&\x8dv\x12K\x1b|\xcb\x06\xd40.s#a\xa9|\x93\xa6.5v\xa1\x0d2CVA\x887\x9b\xb7\xf1dB\xc8\"]\x1d\xb3<Y\xbc$\xab\x06\xbff\xf1\xc6\xbf1\x96\xaa\\\xe6\x0ee\xa0!\xdb\x89\xc1D\x84;L)\xb1\xb7\xaea\xd5\xe4 ji\xe9\xd6k\x9d\xfcq>\x8e\xbaLmJ\xf3\xdeP\x86\xffye\x0eLi\xe0hf09\xd9\x15\xdaU\x1cQ\x1edC6\xc2\xbdr\x08\x13\x92\x12F\x80\xdf\xe1B\x0d\xff\x87\xf3\x03\xe2\x0dj\xcce`\xcaV\xabl\x03\x06\xb2\xa7\xa2!\xbd\x08\x89)`\xd6\x95\x19HV We=\x95Y\xd7r\xa6X\xad\x16\xa4k\xc1\x89\xb0Z\x94\x87\x12 \x1d\x0c\x84F|s\xad\x89\x08\x84}o\xdf\x00R\xc5\xect\x19$\xcdQ\xc2\xe0\xe2\x13\x88#\x15\x03\xebS\xf4\xbd\xf8\x90\x95\xfe\x1c\x1ek$\xbe\xb1\xac\x91\xd6\x9b\x15M\x1a\xa6\xbf\xfa{\xe7\xb2\x92\xe7I@\x83oL>\x12ctH\xba\xf7\xcd\x9e\xe1\xd9T~x\xef\x1b\xa3{\xc5B\xb9f|\xbbkz<)\x1f\xdf5=\x9e\x95\x8f\x8d\xe3:\x97\x8f\xef\xdf36>W.%\xbb\xf7L\x8f\xcfpV{\xdf\x99x\xff\x95\xfc\xf4\x8eqR\xa7\nX\xfbw8\xe2\xd7\x9e\x97\x04\xfa\xa4\xc3w\xe1\xd6-\x0c\xe1P\xbeU\xd2\xb5\xd8\x8c\x8b\x12\xa5M\xa5\xea\x9bQ\xf3\xfa/\xbe\xb0\x170\x80\xf2\x08lO\xe5\xc8\xe0\xc0\xd3\xad\xd9o\xc9\xc8fsL{\xb06`]ndv\xae\n\x047&on\xfc\xd8\xd9\xf8\xd6\x16q\xdaW}(\x95c\x0dtO\xa9\x89\xfa\xc8\x06\x86\xa7\xce\x91\xf2~\x17U\xbf\xfc\xe7\xd4\x7f\x18u\x07\xaeN\x16\xce\xa1\xf8\xd9\x8c\x8b\x18Z\xc4a\x0b\x8br\xc7\xda\xf8\x9dz\xe3wD\xe3NN\xbcn\xa2\x97} \xefQ\x7f\xc8\xca\x87\xeb5 `\xcfk\xc7\x88\x0e-\xab\xfd\x18\x9d\x84\xab\xfc\xdf\xb4b\xbfM\x9a\x15\xd0\xfd\x00\x86\xd4\x92\xf6\xces\xa3\xc1!h\x02AR\x04\x182\xc5Q\xd5\xcaq\xf9\xa05\n?\xb6\x06|\xfc\x0e\xf0\x08'\xf8i\xd6&\x06\x82{k\xd4l\xeb*`\xb3\xc5{\x99k\xc3\x1cR\xceY\x0d\xa9\xc1\xeau\xd5\xdc\x12\xeds\xef\x93\xc5\xe1\xb1s\x7f\x80\xb2\xa7\xc2#\xa8\xc2\xc4{?\xc5\xe9\x92\xc0|Y08%\x90\x92\xa2\x006\x8b)\xc8\x96\xbd\xca\xd9?\xb68fn0\xa6\x87\xf61\x9d\xa1\xc2=\x97\xc3\x12\x8d{\x0d\xeb\xad\xd9\x85\xb4\xfb\xb4@9\xf3\xf6\xbfv\x0e\x7f\x9bl\x07\xbf\xf5\xf9?\xe1\xa1\xb2\x0chRjc\xa01H\xb6\xc7gp\xef,>\xaf\x9b\x8d\xcecP\x14#\x01\xcf<\x87\xf5\xc1\xe4\x9b\xeb7&<\x95\xb6\x02\xe2\xf0)\xb4Cn\x9a\xa4\xc4k\x80\xaf-\x0e\xc5~c\xec\xb1|Iz\xb2n0?D\xa7qZ\xe87\xb6v\xb5\xbf\xf7\x14#o\x1b\xf5\xa9\xe8\xdek\xe0\xcf\xcd\xce\xd1~\xe3\x16\x835\xa8{\xecc\x93/\xfb\x0c\xedw\x9b3\xb7\xdf\xe0\x92\xe2M\xfc&\xe0\x9f\x95\xce\xc2\x8e\x95V\xcd{\x8d\xec\x8d\xc9\xef\xdcoTJ\xd8S\xa2F\x9fe\xaf\xb2\x0b\x92?\x8d\x0b\x12\x84\x11l\xdd\xfe\xd7\xf0\xcf`t8\xdc\xdd\xf9.\xde\x99\x8e\xfe\xfc\xf6j\xa7\xfc\xfb\xae\xc7\xdf{\xfbW\xc3\xf0j\xe4E\x18\xf8\xc8\xbd&\xfc\xde\xea~\xefOL+\xde\xc4\x8f\xce\x8b.\xbc\x86\xf7\xcc\x1a3\xb0\xf9\xf06 \xf9\x1b\x8c\xf0\x95%\xd2\xc1{|[\x94\\\xc0{rvt\x89\xfe\xc8\xae\xa5\x9dfi\x9a]\xc0Bv\xd2\x83m\x93\x03{\xfd\x0co\xc7et\x8e\xec\xba\x9c\xed\xad[\xb5\xdfv\xae\xd6\xc6\xf1\"\xab\x87\x94\xe74\x9b\xac\xa4RY\xa8\x17\x13\xda\x13N\xf2\xf8\x0b\xcdX'\x97\xf3\xb4\x87\xee\xf2\xda\xcd\x9eEU\x99T\xea\xce\x9c\xa0\x9b\xc2\xc4\xf6j\x0c\xc2;J\xbe^`\x84\x8b\xe8\xc8\xa2\"\x8e\xcb\xd5\xca\xedv\xc7X47\x97|\x8e\xa5\xf3\xb1\xf6\xa6d=,oN\xab79q\xb6\xbd\xb6\xa8^\x9bf\xf9<f\xb6\x17'\xb51\xca\x1d`ywV\x1b\xa5\xfb\xdd\xf3\xea]\x89\xb8\xa6\xb8:\x0eG\xe1r\x85i'\xb2\xd0\xb6e889\x16kj\xb9\x01\xe0\x97\x99\xb9\x7f\x90\x9a\x8c\x1eFOh\xef\xd7\x85\xe6\x0cY\xf1L\xa2\xba\xbd\xa9SSSf\x93\xa3jR\xa6:\xb2\xb7y\x82e\x898G\xa2\xcd\xc6\xce\xd6\xd8\x1bB]\x86b\x12\xaa\xb6\x82L\xa6\xf2@\xb1\xc41\x90#\xfe}\xa5K\xab}\xbe\xdb\xf9\xf5%\xffZ1\x7f\x9b\x7f~l1\xb1\x832\xbf\xb5\xb4\x10S\xbb\x1f\x9fS\xb7\xea'\x99\x1dw$\xd3\xc7PP\x8b\x868s)c\xd5\xa5\x85;ea$\xfb\xb3~\xd1m}V\x97\xa2E\xc2\xbc\xddC\xbaO\xf8\xf1&\xc6)\x02\x12\xcb\xb3\x0f\x8f\x07\x1cK\xcfX{V]f\x7fm\xbe\x1d\x9fr\x92>\x8f\xe0,\x82\xd3\x08N\"\xb8\x88\xe0(\x82\xcb\x08\x8eG\x0d\xe1\xd59\xf6J\xdfd|\xc5V\x92\x0eYB\xe4\x9f\x9f\x86\xcd\xb9\xbf\x97\xb4\x1e\xa6 I'\x90\x14@3\x06\x8b<;O&x\x02\x98(\xb6j\xf4\xdc5X>\xf1\x8f0\x80WA\x16\xc1\xb9\xc3%\xe1#\x1a8\xc4x>\xfa\xba\x1a\x80\x1c\xc2\xa4\xda:\x93\xae\xd1|\x86\x01\xbc\xe7\xa3\x998F\xf3Y\x1b\xcd\xe7MG3\xeb\x1a\xc2\xf70\x80g|\x083\xc7\x10\xbe\xd7\x86\xf0\xfd\xa6CXV\x00q\x96\x1d\xe1\xa3\xf9\x03S]a\x91\x11\xfbh\xfe\xd0F\xf3\xc7\xa6\xa3\x19W\xa3\x19w\x8d\xe6 \x0c\xe01\x1f\xcd\xd81\x9a'\xdah\x9el:\x9a\xfa\x91\xd85\x9e\x9f\x1c^K\xeaB\xee&\xf8 5\xe41#;\x8c\xcbQ\xd8\xfc\x02\x0e\xe1\xf7\x00Uh\xbd%\x176\xca\xbbo\xc4\xdd\xe7\x82\x88\xda\xf9\"u\xc9\xd9\xfedsb\xa9\xc8l\xfd`\xeb\x9a\xdf\x8f0\x80\xd7\x81\xab\xda\n\xce\xee\xc7\x0d\xc6\xf8c\xf7\x18k\x87g\xd7\x10\x7f\x86\x01\xbc\xed\x1e\xe2\xcf\x1b\x0c\xf1\xe7\xee!\xd6O\xe8\xae1\xbe\xc0\xec\x8d\x9dc|\xb1\xc1\x18_t\x8fQg\xb0\xbaF\xf8k\xc7\xd0N\x91\xf9)\xd90\x9f\x81\xfe\xaax\xd6\xe74\x18\xf6\x12F\xe6E/\x02\xc1g\x8f0\xc9N\xcb\xcc\xdd\xe5\xe9\x01\x9a`\xd5\xb5\xed\xf8U\xc3\xa4_\xd1E\x82#\x0b\x86\xaa\xd6\x97P=|'\x1f\xeaT\xe0Wd\xc0\xf8\xd3\xe7\\\xa8\x8c\xa4\xb9]\xac\x83{\xb0\xfcJDVKC\xde\x95\xe6\x85\x995\x0e,\x99\xc4\xd4\xe5\xac7\xdb\x89\x13\x1a\x83\xdc\x85\x12/a\x00\x1f\xba\x91\xf6\xa5\x0f.H`\xbd\xf4\xa5\xc6V\xab\xb7\xc1{\xa5\x9dF\xc1\xcd))7\xa3/w66X:Az\x05m*\xf6\xb7\x0cZ\xa6\xf8g\x0e\xef\xdb\x97\xf3T\xea\xae\x98U\xbeK\x84\xcf\xd5\xe5<\xc5m\x8b\x7fa~\x12\xd7\x9a\x0b=\x0f\xff\x86K\xf9\xf2\xdb?\xaf\"\xfe\xfdW_\xe5d\xaa;\x03\xac\x16\xe8\xb4F\xfa\xb8\xaf\xc5\x9f\x0b\x91\xcf#!\xf2w\x95\x16\xe6]\xf5\xe4\x10\xfe\xf6\xf0\x907~N\xf2\"\xc9\xe8\xa0\xb7\xd7\xdf\xed\x01\xa1\xe3l\x92\xd0\xb3A\xef\xe3\x87\xefw\xbe\xed\x1d>\xfa\x8dJ\xb7v\xf8\xe5\xf5+ \x97\xb8\xc40\x8e)g>O \x9c\x11\x8a\xc9\x19' B\x94\xfef\xf5~R\xd7yY^\n\xa7\xd3\x9fsQ \xb8\xfd\xdb\xf1\xd7\xbf\xdd\x0e~;\xde\x0e\xbf\xba\xed@\xf6\n\x88\xb2\x84\x94'*C\xddXx\xa6,\xb5\x93\xa7\xa8/\xfb\xe5\xf5\xab#17\xe1J\xe2\xe3\x01r.\xcb\xaa\xd5\xdb\x13\x9b\xe0\xfb<\x9b\x8b\x8d \xdbk\xcfH)\xc5l\x92]\xd2%\xd9%a\x08\x87M?\x98\xa4\xf2\x83\x81\x83F\x8eJ\xe9\xa3\xa9\xa7?q\xba}\x9d\xcb\xcc\x86\x7f\x1at\x85 \x93\x17V\xe2|\x9a\x8d1\xcbN\xbf\xc0\xc6-\xfa\xa5Joi\xdbZ=\xa1\xa4w)MD\x16\x94byZ\xb0<\xd8\x0b\xfb\xc5\"MX\xd0\xbbe\xd2\xc6\x80\xee\x9f\x9eCB\x81\x86@\xfb\xb3\xb8x{A\xcb\xdc7\xb9pS\xc4(\xc3a>R-\x0e\xb8XE\x86\x132\xce&\xe4\xe3\xfb\xe7O\xb3\xf9\"\xa3\x84\xb2 \x1f\xee\x8e\xc2\x11\x0c \xe7T\xe8\xd6-0\xbe\xb37\x12v\xd5\x9e\x0f>\xa9m\xdd^\xb3v\x1a\x1b7m\xb5Z\xc5\xfd\xca\x97\xab\x81\xd0\xd6\x8cD\xca\xfdA\x0f\xb6MO\xc9\x90\x19\x0d\xb3\xfd\xdf\xb3\x84\xe2\xf2\xb4\xa7&S\xf5\xb8\x07\xa5\xe6S\xcb\xb9\xa1r\x17Sr\x01$`\x9a\xb9\"\x82\xde\x92Mw\xbe\xed\x85au\xb7w\x1a\x17\xe4\xfe]\xd3\x18\xaa\xd4A\xed\xae3\x0c6K2Z\x1c\xe3[6\xaf\x9d8]\xccb\xcf\\\x83\xa0\xbb\x8f)m\xe2\xac\x17\xe2\x16J \x07h\x9c\xf3)i\xcf,G\xb6yc\xce \x9be\x93k\x8fF|n\x1b\x8fz\xea\xcdD\xb4\xc7\xc8\xe2\xb3\xbf\n\x9c\x8d!{\x0f\xd2\x80\x99\x8d\x14S~\xec\x8c\xc9I\xa5\x8a\x8d\xe6\xe4\xc7z\xfa+_^b\xf5\x10\xd1\xd8\x96\x1c5\x88\xbd\xeao&x\xbb!\x8d\xf8\x06\x8dL\xfb3\x0f\xb5\xc4k\xfb\xbb\xb7\xcf\"\xe8m\xf7\xc2\x91\xdc\x9f\xa6%\xb5R)\xe6\xda\xd4\x86\x94]\xb5\x95\xb48\xd6\x94J3N\xb8f\x15\xe1\xa2\x9aSN\x97\xcb\xc8F\x1e#\xf5\x91\xd7a\xae\x94b\x96\xbcd^\x04\xd8X\xa0\x063\x8ektL\x9a\xb31\xa5Q\x9e\xcc\x03m\x91~\xc3\xecx\xbd\x13\xb4\xd8\xf4z\xae\xe1Z\xb2\xaay\x0d\x93\xc3\xec\xb4\x82\xd9\xc7\xb6{Yd\xc8\xe3\xe6\xd54ig\x9b\xe8N\xc2z\xfb_\x97;%s\xdd\xb9l\x915\xf7\xdc_9Bi\xffY\x97\xf6\xa5ui=ZK\xbb\xd8ZZ\xbd\xfc\xa7\xf2?\xd5\x83\xb2\x90\x16\x0d\xee\xdd\x0d\xfbO\x96\xd3)\x91\xde\xe2\xd7\xca\x06hN\x88\xd9\x9cfI\xa9\x8c\x92\x99\xc8\x15\x0f\xff\x7f\xf2\xde\xbc\xbbm\x1cK\x14\xff\xbf?\xc55\xa7_\x8a,\xd3\xb4$\xaf\x91\xedx\xb28\xdd\x99\xc9\xf6b\xa7\xea\xd7\xa3\xf2xh\n\x92\xd8\xa1H\x15\x17;\xae\xb2\xe7\xb3\xff\x0e.\x00\x12\x04\x01\x92rR\xd3\xfd\xde\xe3\xc9\x89E\x12\xc4r\x01\\\xdc\xfd\x9e@\x15\xcb\xf2\x13\xf1\x83\x9c\xc7\xa2\xfc\x17$\x0b(\x81p\x047a\x16\xe6\xb0\xc8\xf3\xd5x{{\xe6\x07\xe4:I\xbex\xf30_\x14\xd7^\x98l\xa7\xf4\xbb\xedi\x12d\xdb\xf8\xf1\x16#\x9fRo\x91/\xa3\xd3P\xc4nd\x94\x86\xcb\xf3\xb9A\n\xc7\x90\x1fA\xba\xb9\xe9@\x0c\x9b'`=\xf1\xd3y6\xb94Q$\x157\x97\xa2\xcb\xaeB\x1f\xb2:\xeaq5ED\xcd$\xed\x1f\x94\xb3\n\xc8\x99uG\xe2l\xa2\x99\xa4\x16\x1dS\xe5\x15\x98C[\xd2\x1a\xd8\x12\xc58j\xc4\xca\xca\n\xef\xbb\xc4\xa8<P\xf4]\xb4\xd7\xd6\xf1\xb1\x1f'\xf1\xdd2)\xb2g\xcf\x14F<\xd4\x12TQ\x98\xe5\xfdr\xed\xf0\xbd\x16\xd1\xceZo\xc3,\xb7(\xa7#i%5\x1b\xaaIk,\xfdU\xbd\xb9\xee\xdd\x1dp\xf0X\xef\xfc\x15\xb6Y\xfa\x0f\xf7j1)\xfd\x84\x1e\xddp\xe5j\x84\xed\x1b\xbc\xbez\xf5&#\x8f\x01\xf79a\xd0>'\x14\xd8\xe7\xa4\x1f\xac\x932\x1a\xf1#\x9a\xacB\x19\xcbcf\x1d\xa8nz\xf5#\xcb\xfd\xe0\xcb#\xba\x80\x11\x98\xd9\xb8\xe9/:r\xfa\xb7W\x9b!\xb7\xd0}D\xb3\xc2\xb8\x17[\xd6\x18\xfd\xf6j?\xc5H\xcfk\xb5^\xd4\xb3\xbd\x88\xa8=\xad\xca\xa8\xf2\x84\xc84'\x04\x8b\xac\xc3\x8c\x102x\x06{p\n\x19l\xc1\x1e\x8c1\xf3R\x00'\xb0w\x04\x01\x1cCv\x04\x01E\xe3\xd1$\xa0\x05.\xe5\xda&AKb\xf0\x1b\xee\xa5n\xb6\xa3\x86R\xdb3\x93\xe9\xac\xd4c\xc1\xb0\x8d\xe2:q\xd1\x16\xd0\xd4\xc4\x9eux\x8a\x03\xb75 \xdb\xe5\xdf\x1c\xdcR,h\x8a\xc3\xa3p\x8afOSzb\xc2\x7f\xd1\x9f\x05\xfd\xf9_\x90\xcc\x90Zd\xcfV\xecYV\xacV\x11=\x7f\xf2\x84=O\xf0\xb9\x0b\xe4\xeb\n\x03\x9c\x80\x1fC\xe9\xd8\xe1\xfd=\xe3\xa1\xbf=\x8d\xe8A\\z)\x19\xc8\xb3\xbch\xe5X\xc4EK\xde \xe7\xb2\xe8H\xe9\xde\xa9\x8b\x16\x97\xb0\x8d\x99\x95\xd9\x03\xdb\xacN\xe4\x0b\x1d\xf3y\x1eJ\x91~h\xb2taQ\xaeo\n9\x8f\xc2pQfP\x88\xda<\xf1\xc5E;?/\xe5W\xf3\xd6\xf2f\xd8\x1a\x82\xc5\xf5\xda\xe4\xd9\xc2_\x911\xac\x9aoD\xa07\xed\xcb\xa5\xbfzY\xbe\xef\x8d\x1ef\x88\x9c\x1ew\x06F\x18\xe5>\xb3\xf5\xe7\xb6\xb6\x87X\xbc\xd9Z\xdb\xf9\x8a\x9f\xf4<+\xb5'#V\xd0<\xeb\xdaN6\xb9\xcd\xae\xb3\xcap2\xb1V\x0dg\x8d\xae\x9f\xbf\xf2~\xfe\xca\xfb\xf9+\xf6\xf3WM\xd9\x94\xc7\xfb\xcfl\x8b\xed\x7f\xcb\xed?\xe1D\x87.\x9b\xb3\xadi6,S,d\xf6\x9a\xc7\x99\xec&&z\n~\xb3\xaf\x82+\x11|t}\xbb\xf2\x11h\x9c\xc7\x84\xfeu\\\x1f\x1e\xb3R\xa5\xef\x85\xfc}\xac\x8e_\xf4\x97\x16\xaa0+r\x1ae\xcen\xbb\x14>\x03\x06F\xac\x05\xdf}\xd0\x8c\xac\xd00]\xe2]\xce\x8f\xe1\xb4\x0c\x9e\xa7\x9b\xb0\xb5N\xe0}~\x02\xefK'\xf0\xbe\xee\x04\xde\xef>\x81\x05\xd5\x00'\x80\xa6+)\x0b\x9e\xc7\x8c\x1c]\xe1\xbd\xcb\xe2\xb3\x9e\x02QQpm`2\xe2\xe5\xc9\xe8\xa5\xe3\xb14u\xa2\xc0\xf6\x1b\xe7\xe3\xad\xcfl\x9f\xb2\x15 \x18S\x16\xc6\xac@\x88\x05<\x94\x97\xb0\x86\xebk\xad\xb1\xa2\x98&A\n\x0f\xbc1t\xb4++\xf6\xc2\xac\xec\x96\xfa\xcd\xa0\x16\\U7\xed\x99\x96\xfco\xd2ar\xf4D\xed\xec\x8b\x89\xa7P6\xa9X\xec\xac\xd5\xe44B\xda\xa6#\x87\x8f\x81X \xdb\x89\x95\xa8/\xb1\xf2_\xa5\xac\xe0\xbft\x14\x8aQ\xec\xd8\x8c;\xe2\xb4\xc2=2\xc9\x1b\x9b\xa0\xaf\xe0\xaeI\n\x02\xf2\xc6\x8b\xb4\x1b/(7^\xc4I\xdfH\"}g\x8c\xf4\x9d\xc11DG0\xa3\x1b/\x98\xcc\x9a\xa4\xef\xcc\x10\xd0i\x85\xaa\xa6\xc44\xe7\xb1\xbdj\x9ds\xbaf\x0b3\xfd\x84F\xd0\xf6\xeaQKB\xa2_3\xcd\x92X\x18\x96D\xd8E\xbf\xa2K\x00#\xd5\xfa,\x10fW\xc1'S\xef\xe7\xa3\x19\x00-#\x1ce\x0d]\xc4y_\xa5\xc9\xea\xa2\x1cS\xd6\xe8{\xb9\xe2\xb4\x99V\xca\x95s\x83\x91\xab\xca\xc8\xf5.\x92\xb8\x03\x97\xd3\xac<\xa1-,\xe1\x18\xe6G\xb0\xa4\x8b\xc4<\xa5\x18ZJE\xb27.,\xcbEL{9\xa1\xfd]\xd2_\x97V\x89t\x03\x13\xb5K\x81x'\x9f\x82\x08\xae\x12\x80w\x1d\xf3\xd0\xb1\x19\x85xC\x17.\xbb\xb9\x1f[\xb7`\xa2\xdd\x82a\xb9\x05\x13\xc7\xe5 \x10\xc1\x87cH\x8e\xc0\xa7\xd0\x0c'~}\xbb\xf9\xe6s\x0eQ\x07vU\x01r\x88:]\x16\x7f \xf3\x8d\xb8r\xb7\xab!\xa2[\xae~\xfe\xcaq\x84\xdaq\xf8\xe58B\x8eJB \x95\x14\x0c\x95\x14p\x0c\xe1\x11\x14t\\\xfe\xa4h\xa2\x92\xc2\xa4E\xe2(\x8cLrC \xe3^\xca\xda\xf6\xd2\x17r\x97]H\xfb\xc9NV\\\x08\x9a\x91 \x89\xa7e\xd7\x9c\xe6V\x8bM[\xad\xc9\xe6\xb6o5\x90\xa1\x8b\xe1~\xe5H=\xe5\xbe\x9b\xb1}G\xb1jP\xee;\x8a\x9cW\x1c9\x9b9T\x81N3u\xef\x05.\xcc\xca\x99G\xa4\xb8\xf5\x8c\x02\xc5\xa6\xe3\x08&\xb3K\xfa\xcc\xa9v\xa1\xdf\xc6s2\x8bi\xe3Nl\x92\xe5\xa0\xc5\x8a\x0fNs\xf5\xea\x0f\x98l\x9d\x9d<3\xd3\xe7\x92\x05\x8bb\xb7U1\x060\xae\xbdk\x9eK\xb1\xa9\"\xb4\xd1\xd2r\x15\xb5:G\x97Z\"\xee\xff\xa5\xd3\xfe\xb1\xc7y\xd1~\x9cO\xff\x87\x8e\xf3\x9b2\xcec%\xffi=X\xbb4\xebK\xc4x7-\x18o\xd9\xb5\xeb\xe9)\xbdTw\xfd\xc2\x85\x9b\xda\x89\x8b\x1c\xe2M\xf7Y\x0b=%J\x9d\xc6\n\xed[u\xd5\xdc\xaa\x95|G\xfeT\xfc\x925\x85\xcc~\xecQ\x8a\xa3\xed\x1f\xcb\x9f\x8c\xc3\xde\xf2\xb3,\x9cWl\x92\x1d8p\x1e\xc6\xd3\x94\xc0y\x92.\x8a\n\x01\xfdk\x14\x06$\xce\x08\xbc{sQ>\xfcq\xbb\xfc)tR<\x8d\xd9\x9c\xe4\x92)\xd7\xf9\xdd\xf2:\x89\xb2\xa6\xae\x8a\x97\xae%\xb9\x94\xbek\xea\xae\x1a\x1fp\xcb\xca\xbb7\xd9Y\\,\x19\xda9\xd2\xc2\xcdH\xc4\xe8=\xa9pS\xf3\xe6\x18\x94Z\xc3\x89\xdcp\xbb<\xba\x83\x85u\x93\x7f\x1d\x98|\x11\xc9\x04\xb1\x8e5%\x96\x0b\xd6\x1e\xb34\xd4\xc2\xee\xbd\xbf$\x99M\x9c\xc9\xe0\xb2\xb5\x0355\xf1\xef\x0fL)<8\x82\x18\x8eaH\xffR\x84\x97O\xac+\xba\x15X\x0f1\x0f\xd3\xcb\x85\x9f\xbeL\xa6\xc4\x8e\xd1t.\xd6\xf7\xd7\x1a\x0cG;\xbb{\xfb\x07\x87O\x99}KK_s\xc5\xa6\xadK\xc4\x95\xabq\x84\x00$\x0b5\xab=\x8c\x8bXw-I\x91\xe8<L\xc9l\xbe\x08\xff\xfe%Z\xc6\xc9\xea\xd74\xcb-!#\xb241\xe5\xcc=\x9e\x90K}\xecU\xc75\xb4#\xcf,\xa5\xc6\xec\xda\x9a\xc2\xc8w\xa9S\x0d\xb6\x8eFZ}\xf2J\xa8\xd4\xbf\xa9\xd0\x87\xed\xc0)\xd4\x9a\x83\x0e\xdd\xa7\x9c1\x82'\x8ah\x07J(\xe2\x96\x9e`\x94\x89\xfb{\x99D \"\xf2+\xdd\x14\x94|\xe4G[\xbdK\x95\xddr\xe0G\x11\x99\xc2m\x98/\x98\xe4*I\xa12\xb65\x9b\xeb\xf2\xb3H\x15b\xda\xc4a\x89-\x86G\x90\xc1q\x83`8\x82LOUJdF\x183\xc7\x08\xd6BE$d\x97\x8e\x03 3\x08\x89]\x88\x98\xa9j1\x89p\x0fM\"S\x00jcJ\"\x1f\xb3\xaf\xeal\x92A\xa5\x9e\x07LV\xe8\x97\xc3@\x91aXv\xc6\x9f\x04\x97\xa2?\xf47\xeb\x12\xfe\xea:\xe5\xebw\x82B\xfbS\xfd\xf5\xa3\x8e\x9e\x9b\xd2fa\xa8F\xb1CS\x0b\xfbP\xb5e\x08Y\x16\xce\xbd\x81\xf2\xdc\xc7\xa8\xa0\xf6!\xfa\xc9\xbcyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw\xa6\x14\xa6+8\xac?\xa2+\xc2\xba\xbaBk\x977q\x8e)\x12\xdep\x9a\xfe\xcf\x149\xbe\xf3\xf3\x85\x97\xfa\xf14Y\xda\x92\xb1\xea\xce\xbe\xc3\xe3E\x8f\x1c\x9d|<j\x13'2\xdfh\xe2\xc5\xc9\x94 #\x85\xd1\xe7\xe6rN\x0f\xdf\xc12\xbc5\x16Z\xf3P\xfb\x19\xbdca\x1b\xe8[\x0bp([9\xf9\x9a\x8f+\x92\x0e\xacu+ \xcbU~W\xabA\x9a\xf8\xe6x\x836S\xa5#\x1e\xae\xf6*%1\xaa^J\xfb\x9f#\x07\xcf\xc9\\\xcb\x0c\x90\xd6\x16gZ\x08\x0b\x91q36s\xec]-\x92\x0c\xf3\x1a0\x91@>\xc9p3\xb4\xb6\xb2\xd2\xb6\xc2\x94\xd7\xc4\xbb\x9aE\xfe<\x83'PPZ\xe5\xa5\x1f,\x08K\xa5@[\xd1\xcbxo\xcaLG\x154\xe8\x17)\xd1$\x80\x06\x11\xa7\x82%m\xc2\x82M\x9c@\xc6\xb2\xb8\x02\xed\xe7\xb55!zV\xed\xea\xc3Vm\xfb\x0d\x8fx\x1fO\xc2\x8e8\xea\x19\x02\xddw\xbc\xabi\xb2|\xf3\xaa\x9d\xa2f\x16\xb2Z\xaeN\xbepTGU\xd4\xd1\xe4\x08\xa1\x91`P\xfa\xf3\xf0:\n\xe3\xb9Yy..\xda`d'\x94\x8b\xecjP\\3\xdbw\xa1\xcd\xa3K\xbe\x02\x9e\x91FC\x08\xa8\x97Y\xe7L\xaf\xd4\xb6vF\x16\xed\xa7\xb1\x98A5\xdd\\\x12bi\xde\x9f\xe8\xd7\xe6\x9f\xf4\xdf\xeb\xb6\xc0\xb4\xb9\xb5\x19\xd1\x9aU4(\xbd92\xec~&qa\x96\xd7\xb0\x81%M\xc4\x03w\x7f#\x98\xda\xdb[\xf9)\x89q\xc3:\xb2vA\xb3\x01p?U\xc5\x0d\x83\x83jI\x91\xd2U\x11\x87q\x84U\xa4\xde*Y\xd9\x8e\x83\xd8\x8a\xf6Y\x98U>y\x02+z\x96\xaa(E\x90\xac\x7fj\xb6%\xb8\xe3\xfa8\xe7$\x7f\x19%\x19\xc9rq\xc6\xbcN\x93%\xed\xf2\x18\xa6\xaeZ\xb4Y\xa6\x9d\xfc\x12\xf4\xfeT\x1b\x97^\x82 \xca\x0b\x99I\xba\x84\x13y\x18\xc2\x9c\xfb\x87\xd5\x81\xd8\xe8\x1c\xfd\x86vLt\xb2\xabsa=\xfb:\x91Z\xc6\x98\xcc\xd6\xce\x0e\xba\xf2T\xcf%7\xba\xf2Y\x07\xa7\xc3V\x98T\xdc\x11V\xf7\xa4\xaa\xfb#\xae\x13\xd4\x8f\xda\xd6\xce.\xb6\n'\xf5\xb7\x86v\x8e\xca@\xfcl\xc5\xe4b\xc5\xe01!\xf7\xdd\x08\x7f\xa9P\x1b\x84W) \xe8\x96\xadvl\xc3nD\x14\xe1KC!ub\xf9]\xafe\xd3\nf&L\xe7\xd1\xb2\xe9\xc9Y\x1b.\xdd/E\x14\x19\x8d\xa5\xf5<\xf8\x02\x9f\xaa\x04\xa4\xdc\xc5\xea\xb0\xac\xbeR\xce{\xe6\x1d9\x06k\xe4\xedy{\x96\xaeMM\xc0\xe6\xab+\x86\x01\xe8\xdf\x13q^~+);\xd0\x19\xe0N\xac/a<\xa5|}J\xb2$\xba!,\xf7Z\x9ca\xae)z#D\xc8\x1ff\xf4n\x95\x92i\x18\xf89a\x9f\xacR\x92\x91\x18\xcbq\xf3\xffs\x9e\xec\x8de}{\x1e\x85~F2\xeb\xb2I.O\xac,\xf0#?\xc5\xb2\xe4\xd7\x82\xc4\x01~\xb7\xf4W\xab0\x9e[\x97\x1d\x92\x11#y\xe5\x82__ \xe1\x8c\xe5\xb9\xc8\x85'\xac\xcc\xe1\xe6}\xc3\xb4\xd3Z\xb6x\xd8 \x0f\x9d\xc1?\xcc\xd0w\xb7b\x1bS\xfb\x87\xcf\xf1\x978\xb9\x8d\x81\xa9.\xc0\xfa\x81\x13\xa8?X\x10f\xb0$9%\x80\x90KD\x03oHf\xac\x0cae\xfe\xf6\xfc\xdd[\\\x04\xde\x0f\xcaju\\\xc8\x17a\xe6\xe5\xfe\x9c\xae8~G'\x0f7:\xfe\xe0\xf1\xed\xf9;>\xa1\xf8Z\xfc\xbe\xbf7\x8b\x96@b\xd3\x15\xb3\x07^c\xb9.\x98[Ky'\xd7\xda\xea*\xa1\xad\xb5Z`,\xbctu[\x1fO\xb9\xf4\x18f+\xef\xd4Q\xf35\xc9\xc7-\xee\xea\xa5\xe4\xc5\x8a\x05k\x0f\xeae\xe5\x85\x8c\xec\x1cs\x1e\x95\x9f\x96\x1f\xf8B\x9e%hB\x8c1 \xaf\xb7\xb8\xaf\x08'\x9e\x90\xcb\x9eK\x93^\xfe\xa4d\xc6LR\x9f\xc6\x82\xf2\x1d\x17\xf8\x92\x0e\xab%-\xd6\x95ii\xe3Rc\x0b\xbb\\\x82b\x81W\x165\xf4@\xea\\\xd9\xbdx\xf4\n\x85\x8dvG\x8em\xdd~\xc9\xd4\xf8j\x8c+\x1f\xee\x1b\xd8\xf2\x1d\xc7cR\xdd&s\xaeM\xdc+\x99\xe3\xda\xfd\xfc^\xf8\x02G\x91\xdb\xfd=\xd8\\\xf6\xe6\xd3\xd9\x0f\xc5C\x1f\xf5\xb0cH\x1c\xdbb\xfda\xc6`\x92\xb3\xd4\x83\xe3ey\x82\xa9\x92\xd3>\xb0\xd1#\xfd\\\x0e\x15_\x0f\xdc%\x80\x19\xda\xb1\xbd\xb7\x7f\xa8\x06\xacO\xf8\xab\xa7CG+7\x08\x8dC\xef\x1f\xa3\xde\x10\x9f\xfe\xe1O\xcd_\xe5\xbel\x13\x89\x0bmD\xdb\xc1\x00\x1c\x81\xab\xf6}\x15\x11\xa7\x17\x81)\xce\xf1\xa5\xf0\xae\xfa\xb0\xb3Y\x90\x08\x05S\xb0Gz\xa5,_\x96\xf1}\x88!\xe1\xcc\xef\xfd\x8e`*\xed1\xd8J:\xb5`bH%\xeb\x19\xc1\xbck\x98\xe3\xa6@\xd5u-\xef\x1a\xe3V\x18%[\xb0\xbcj\x94EbHW\x8e\xa4\x9e;G|\x9c\x06\xe6\xb5_`\xb7\x90\xa7\x16\xf3\xb5\x88\x0e\xa0_\xbe\xaf\xee\xa0t\x1b\xe8\x18\x9bIi\xc6\xb2\xf64c\xd0\xb3i\xe0\xcb+\x14(\xd67W\xa7\x1f\x9f\xf6\xa9\xe0\xa1\x1a/\x1f\xd8\xea\xd4\xd0\xcd:\x91\xb7\xd0\xe6\xfayN\x96\xab\x1c\xf2\x04\xa6\x84\x1d\xf5E\xca\xbc\xd9\x84\xbdni`\xa0*\x03\xaa\xcdl\xf7\xa2^%:u\xbf\x1d\xc9\x0f\xf7\xb5H~4\xfc\xbf\x16\xc9K\x07\xa0^\x1c=\xdc\xd3\x82d\xf7\xa9F\x1a\x1d\xdb\x0d!u\xc1\x1e\xab\xa9M\xfaz]\xa3\xf2\xc1\x05f\xbd\xb2\x02\x0c\xe0\x0d\x99\xf7Z\x8f\xaa\xa6e\x81\xbf\xe8\x0b,\xca\x02\xe7\xfa\x027e\x81\x8f\xfa\x02\xcb\xb2\xc0\x0b}\x81yY\xe0g}\x81;8\x81)\x9cB\"\x92.\xd1\x99\xe5\xd9\x97~7e\x11\xbb\xc6h&\xa5\xb6W_\xe8\x8a\xd7\x9c\xc2\x18\x16\xf4/\xcb\xecd\xa7\xbc\x95\xdf\x1f\x9c\xaa\n\x03\x9b\x8f\x9a\x9ei)\"\xca\x1d:1\x98\x9a|\x03\xf3\xe0^)\x11\x8a\xae&\x11\xd3\xb1\x14\xf6\x1d\xaa\x7f\xe8h(\xb1\x1d\xc0)\xbe\x841\xaa\x81\\\xb8c:!\xac[k\xbf\x85\xa5O\xb14\x8caI\xcb\xd1JB{\x86&yc\x98c\x07\xb0\x9a\x13\x98\xc1i\x07c\x00\x12\x83_\xd1\xb8z\x0b?\xf9B\x96n\x11f\xb5x\x1e]\xe2\xd3\x0c\xf3#\x83\xad\xea\xd6\xba\xbe\xa3W\xe0g\x04\x06\xe3\xcerP\xb7\x8f\xd1L\xa1za\xcd\xc3\xf5k\xb6u\xf8\\\xbd\xb0\xf2\xd1c*\xd7\xc60\x92\xaf\x0ea\xb1Z\x996W\x99\xb8\xccu\x95b)f5C\xe7\xdc\xad\x94\xa3\xfa\x1a5\xdau\x90\xc4\xa1\xd5\xfebr\xd9r\xc3\xea\x02\x88\xb3d\xd47\xca\x86\xa8N\x91\x19\xae\xfe\xd7\xfc\x0d\xaa5]\xc0of.\xfb\xcc\xb6\xef\xbc\x1b\x96\x14\x1b7^u\x87\xb8\xc4a[n\xe6r\x8c\xf4\x89~sM\xff\xdb\xb8\xa6\xaf\x9e<\x01\xdf\xbev\x01\xab5\xa7(\xc9\xbc\xd7\xcci;\xf3\xfe\x02'0\xa2?\xce\xe1\x04v\xe9\x8f\x8fp\x02\x87\xf4\xc7\x0bZf\x9f\xfe\xfa\x19N`\x07K}\x86\x13\xd8\xc7b\x9f\xe8\xdb\xd1\xa1[\x93\xb70Q\xfc\xbaR09\xeeT\x85=n\xc3x\x9a\xdc\xd2!\xb1_\xde;\x0c2q\x82ZL8\x15\xef\xc7\x86\xcf3\x12a\x10e\xfaW\xfd\x14\xdf\x8dAL\x84m\x89\xd9^\x84\x99\xe5\xc8\xa6_Zq\xdb\x9c\x8b\xdb\xe6\xdf(n\xeb\xe2\xbc\\~b\x8f\xf6\xd5\xd3\x16\x03\x81\xd1S\x9eE\xcaN\xeb\x9cT\xda\xceI\xa5\xa6e\xa1e\xa0\xda=\x1aPBEx`\xb0\xb0\x96\xd9(w\xb5\xc7\x7fT\x901h\xd4\x83\xa44r\x1ak9\x9b \x89g\xe1\xbch)q\x9b\x86\xb9x[\x1f\"\x86\xa0g\x07r\xec\xd6T\xb1\xd0=wfym \xd1\xd8\xde\xdb\xd9Q\xa6\xa8\x9a\x91Z\x7f\xf4M\xeavH\x8d\xfb\xd4\x8b7\xe3>\xfd\xff\xc6\xb5\xa7\x8e\xeb\x8f_z\xe52j\x17\x15\xd6\x94%\xc3#\xc8\xb5\x860\xb9\xde\x10\xe6F\xcd\xd4\xa0\xb5NoDr\xeb\xb0\xea+\x0dUx\x8072I/\xb9\xf7\x94\x89\xe3\x01\xbd\x89\x00<v^\x05\xf9\xbfa\xcbh\xf1D\xc5\xaa\xf7\xf7\xb0\xc1\xd1\xea4 \x10\x04\xbag<\x1a\xd1YD\xd0\x92\xbe\xc9N4!\x1b\xf8\xf1\xe7\x8c\xbc\xfa\xf0n\x0c\xa9f\x17\xe3\xdb\x9f\x93\xf4\x0bI3\x13\xeaf\xafM\x1f\x9f\xdd\x908\x7f\x1bf9\x89\xb1\x0ed\xbb7l\xd1u\x7f:\xad\x95\xc0\xb7\xe2]\x9e\xfb\xc1\x02_k\xc8rV\xfdO!\xb9\xa5\xfbKT,\xbe\xcd\x82\x94\xe8\xcc\x1a\xc2\xecM\xcc:<\x86\x0d\xe3\xfa\x96wm\xf2\xed\xb3\xdb\xb1\x0eu\xc2\xb8\xa4\xcd\x88\x87g*L\xd9\x02\xc6\x82\xcab\x14\xad\xd3\xed\xbf\xfd\xcb/\xf6\xe4\x97_6\xac\x7f\xf9\xf3\xffz\xf2\x83\xed\xfc\xb8\xe9z\xbfl\x8f\x8f\x8eO\x9e\x9d\xfe\xeb\xe4\x97\xcb\xff\xbc\xfa\xaf\xdf\xef\x1f\xfe{\xeb\xd2\xd9\x9e\xf7\xf4\xb7\x15\xfd\xb0 <;\x81\xbd\xbd\xd1\xd3}\x14\x11\xc2\xf1 \xec\x1d\xec\xec\xee\xb0\x0d\xc5\xdf\xef\xef>=\xa8\xde\xef\xef\x0d\x06\x07\xec\xfd\xfe\xde\xde\xce\x1e]I\xfc\xd7\x13`\xf2&z\xb7\xaby.*\x1c\x94\x95\x1d\xb2\xe7\xc3a\x95]J\x14\x1a\xee\x96\xa5v\x86\xb5\xcf\x87\xa3\x83\xf2\xd5p\xef\xa9\x03<\xbf\xd63\x18\x0e\x87\xbb\xc3\xe1\xd0a\x97\x04\xd3&T4\xbe\xba!\xcf\x02\x87\x9d6\xa11\x8a\xfe\x18\xc06\xc1\xb6 l\x9d`\xf9}\x07\x9e=\x83\xa1\xca\xbe\x8b\x8b\"\xbf\xbd\xfd\x9d\xd1\x80~5\x1c\x8cv\x10&FM\xaf\xce\xac\xb6I\xf5k\xd1\x9a\xeeS\xad)\xf8\x0dw6\xdd~bO\xfc\xad\xdf\xfe\xe5\x92\xfe?\xd8zz\xf9\xfb\xd0\xdd\x19>8G\xdbs\xc5\xe0\x8dR\xc5\xdb\xff\xf9/\xb6}:\xfe:\xf1\xb7f\xbc\xf0\xe1\xc3\xfd\xa4\xfc\xe98\xdb\xcaW,\xe7\xec\xeep_+\xb4n7\xc5R\xc4\xa5|\x88\x89\x1d\xf0\x14\xcc\x01\xe3\xd0w\xf6PO\x92{\x01\x1f\xf1\xf3\xdc\x1e\xe0\xb2\x88Dx.F\xabc|\xab\xaf\xcc\x946\x9f\x0c/\xeb\xb9\xaf\xe0\x140\x80\xea\x9b8\xb7\xf3\xd2D\xcf\x85\xe1>\xa5h\x1a\xaf\x86\xf4\xd5\x00\xe3\xb4\x16v\x8cD\x8f\x01\xcc+\n\xb8\xc9\x93\xe3g\xd6\xe5v\x1d8S\xe9\xcd\xbc\xfe\xaai\x02B/\xeb\x895\x06\xeb\x89\xbf\\\x1diB#[\xc7\xf86\xca\xb5/\x9f\xe1\xcb\xb9\xf6\xe5\x0f\xd6\x0f\xf4\xe5\xafE\x92\x1f5b\xd15\xa7\xed\xc6\x88S\x16\xb2\x11\xb6\xac-\xe0V\xba=\x84x\x93K\x06a\x86\x1eK\x9a\xc1\x85\xe1:\xfa\xe0\xd6dVR2Lq\x0c\xe6z#c\xb4`\x149H\xf8W\x06\xe6\xbeKum\x0coH/2\x89/y\xe4\x1bm\x19]\x0c\x91\xfa<95Z\xdb\xc5l\xc0=\xd2\xe9q\xa0[\x1368\x8e@.y\x04\xf3V \x11\xff\xb4q<\nSW~\xbe5\xcd\xa9\xeb\xdd\\\xf8xN\xd3\x9fE\xcc\"\x1d\xbek\xcfgWJ\x1e\x84b\xd4\xfa\xe5\x17\xcb\x81c\x18p\xcd\x16)\xe3,\x86.X\x7f\x1eZ\x8e\n\x99\x9f\xfc(\x9c\x9e\xc5y\x98\xdf\xbddf(>}\x81x3\x99\x92\x8fI\x88j\xea\xc2e\x9ajZ\x17\x96\x0eI/A\xb4\xd4\xb5'\x86\x9ee\xae\x9c\x18\x08\xbb\xc5\x06\xff\xd7\x1c\x03\x84w\xb6\xb1\x12I\xd80\"\x83\xa8v\xea\xc2\x8d\x0e\x19\xb51Ak\xc9\xd8\xa5\xa0\xd6U\xe0\xcbS)\xc1;\x8c\xf5\xf2\x98\xae\x1e\x19E\xeb\x0dn\x8f1K\xfb\xeai\xcbD\xeb{\x87Z\xd1\xfa\x81Z \x13\xad\x0fGj-\x8f\x93\xad\xbb\x92\xf4\xdc ^_t\x89\xd7o\xba\xc4\xeb\xcb.\xf1\xfa\xbcK\xbc~\x07'L\xb6\x8d\x923.\xe3f\n\x13!A7\x8a\xbc\xcd\xa2\xf5\xc5\xba\xf2\xf8+8\x81kI\xd8G\xbf\xb9\xae \xff~\xd7\xa5Q\xaaD\xechY)\x89\xd8\xd1+\xd3f\x82v\x14\x91\xdfA]\xd0~\x87\x82\xf6S\xb8\x831\xc4\x0eJ\xd4\xe9\xb1\x8c\xc2\xa5\x00\x8fp!&G\xc9\xb9Q\xa0X\x98\x04\x8aw\x8c\xc4\xb8c\xe2@!2\xfc\xec\xb8\x80\xb2\xc2\x0d\x9ee,\xe4\x02\xc3\x15\x06\x08\x10\x02y\xf1\xd6\xbe\xe2\"G\xa301\xf5\x02\xa6\x9eJ\xdc\xffi\xc1\xa2Y\xf5\xa5*\xb3\xb8\xeak\xa0\xaa\xc4\xf8\x06Uw\"\xdd\xa0\xdb\x96J\x00\x15\x9a}hP=\xdc\xf0\xa8\x01\xdc\xcc&\xc4\x1c\"\xda\x85W``KtM0R\xdf<\xf22*\x95\xed\x82\x85\x11\x15~\xec?\x9c\xa0\xe1\x0coH\n\xba\xec\xbb%\xf9\xe4\xa0U\xcd\x0f\x0e\x8fF\xf6\xactu?\xde.}\"\x9e\x19\x03\xfe\xaegP\xa7\xf1X\x8b\x99\xea3\xb7\x0b\xc7\x85\xd4N\xbd\x8f\xb0 \xa9\xf7\x1a~\x84\xa4=\x02\x83\xe0o,\x0b&\xe4\xd2\xa6c0\x02)gF\x03\n\x05}\x7f\x0f9w\x88\xa3_K\xd9\xe0\xeb\xc3u0 #\xc6O\xae\xb15\xddG\x15\x8e\xba\xeaU\xdc\xc3\xfa$_\x84\x95\xd1\xfa\x83,on\x9a\x19\xd0\xfab:\x0c\xa3\xb4\x1aq\xd5\xc0\x05r\xe3G\x8em\xb1\xc7U\xf5F# \xcd\xb1Y\xc9\xdc\x11\x93\xb1[\x1d\xaf\xf6\x9d\xa4\x905Q\xe3S\xdd\xe6\xfc\xfe\xa2\xc6^\x9e\xb37\"\x19E\xa3\x01\x91xb\xacMT\xb1\x08\xb3<I\xef\xf4/\x93\x15\x89\xc7\xb565\x85\x82(\xc9Hg\xa9\xd7a\xa4\x162\x8d\x17\x04\x87\xd1\"\x0f4Y6\xe9\xad^H\xb94\x9a\x9bQ\xecX\x93qR\xdcb\x98\x94\xb6\x18%\x99\xedo\xaa(-\xcc\xc6G\xd1DL,\n+\xcb\x05\xebE\x94\\\xd3\xbf\"\xca\xbeu\x89vJ\xb4\xb76Fx\xa9\xdb)\x1d\xf1q\xb4\xf1H7<Em\xc2\xec\x98\xcc*\xd6\x82\x92\x08\xd2\xee\"\x93\xe2\xb2\x84\xe2\xa4\xd0\xb8/B\x83\x9f\x82\xd6\xdd,\xae\x98\x9b;\xa5z\xbb\xce\x0e{\xa3v3\xa7\x0d\xb4\x9c\xf7%\x13'\xbf\xdd\xc4\xa9\xab9\x10\x9e\\\x82\xd5\xd5g\xd1\xd4\xc0\xa1\xbe\xda[\xa1\x12$q\x96D\xc4\xc3\x90\xd9\x0d\xe6\xafv\xd7\x94\xc4\x1b\x0c\x92\x1a\x07\xc0\xff\xe3*\xcd\xf2q)\x90I\xcd\x91 \xdaN\xfc\xc6\x0c\x00\xe8\xad=\x05\x85U\xc3\x81\xd5(\x13/_\xf8\xf9'\xac\x8dN\x08=e\xe4G\xaf\xfd(C\x9b*{c\xe8(\xef.\xd2\x82\xbf\x1a\xa8\xaf\xde\xa3G8\xa4\xe8\x1a\xde\xf8n\x11\xb6\x1e*\xda\xd3_\xa9\xe39\x17.\xf5\xe1{k\xc2\x95\xef\xa4a\xe0\xa2\x13\xb6\xfaJ\xc7\xca\xdc\x05\xab:|-U\xb3\xcb\xb5\xba\xb2\x9a\xd3i*-B;\xb6G{r\x80\x12\x0c`\xfa\xfc|G\xc8:\xc2\xec\xfc\xd6\x9f\xcfI:j\x1d\xfeM\xe9\xe4\xc3\xf2\x8c\xb3oT!X('\xf6\xacI\xd5\x84\xb2a\xa8\x15\xe6\xe6^\x96\xfbi\x9e\xfd\x1c\xe6\x0b\xdb\x1ay\x03UTC{\\:\xfd\xfe\x9c\xfa\xab\xd7~@\x0f\xfd>SV\x160\xf1\xf0j\xb9\xd0\x84\xe7C\x91\xd89\xf6\xb2\x15 \xceIDh/2\xcd#\xbc\xfb\xb7,i\x15\xf7\x89\xa3\xcc\xf4\xad. \x8e\xb8x\xa7}\xbb\xa0\x0cmi \\\xd7\x1e\xd25\xa8XH\xff\xfe\x80\xb1lb\x9d\xa5\x80|}H\xc3\xb1\xc6\xdeF\\\x0f\x18\xd5\xd3\xd4l\xeeB\xd8\xf7x\x85j0\xe2\xd4\xb8\xf5\xd3\xd8\xb6p\x95\xde\xa6\xfejE\xd21\x04I\x11M\xe3\x1fr\x98\x13\x16\x17\xd4r\xdc\xa6\x9fa\xb3 \xad\x17\x99@dt{\x0c\xfe\xa1\x86\xf4\xcd\x86[\"\xe3\xf2\xcdGiZ\x7f\x15\xaa\x9bO0\xae\xcd\x944\xcc\xf9\xae\xbe\xc9v\xbc\x81g!\x8d\x9fW\x0c\xdan\x17\x13f\xe6\xfe\x0f\x9d.\xeeU\x1d\x15:\xc1\xa7h\xe3\xcf\x08\x91J\xde\x8eqCE\x02l?\xe6\"\xf7\x0d\xc3\x88\x1f-R\x1c\x1d\xa8RBLy\xd1\xe4\xd1d*\xa0\xa4\x06\x18\xda\x96\"\xb2\x887M\x8e*\xa5\xfcb\xd2\xcaQ\xea\xa1\xa7\x0f\xcf$\x8f\xa6\x1f\xaco\xfa\xc4V\x16\xae\xbdL\x03[\x03\x03\xed\xba\"\x0d[s\xa9tx?\xd6\xfc\xb2\xdb\xcc\x7f\xae\x8b\xf9E\x92D2\xb3\xd9\xab}I\x90\xac\xda\xa7\x0b\xab\x1bu1\x84\xdcv[uZ\xf2+k\x80\xfa\x99-\x9f\xb23\xa6\xf1\xdc\x95\xa2\xe6\xd4\x0b\xab\xd1s4\x87\x13\xba\xb4\xa3\xeb1\xda\xe8P\xb4\x8a\xe4Qj\xc7\x8ekN\xdb_\x1e\x0d\xa2\xdaZ\x89\x1a\xe1\xfe\xd0h\xcf\x9a\x93\xdcb\x91j\xe8\x9cg\xe2\xae\xb9I\xad\xe7A@\xb2\x8c\x9e\x7f\x18\xab\xb9X\xd19#S\xd36\xb5\x90d\xe1u3\x86\x8c\x99\x87\x95\x0e)kn\xe4~Vb\x0dw\x84\xb5\xac\xc4\x1e\xd7\xa4\xbab\xbe\xa5\xc9N\xb7a\x83\xcb\x81\xce\x88,\xb6w\xf6v\xb5\x8a\x91}Uz[\xf0\xe2\xaa\xe7\x02J\x9f\xecCu\xafD\xac\xd1]u\xe4L\xf1\xaf\x96\x9ei\\\xadV\x18\xb0\xb3\x0eS\xb4L\x9b\x93\xfcc\x92Dd\xaa\xe6\x87Xh\xe4\x1a7%2)\x1f\x97'\xeb\xb2\xc1\x1d\x9cy\x98\xde\xea\x13 \x928\x08#r\x91\xfaq\xe6\xb3\xd2O\x9e\xc0\x0d0'\xff\xe1h\xc72YOP\xeem\xa2l\xdb8\xccY6\xcfq;\xe3\xc5<]\xc34\xbf+i\xdb\x8ce\x18\xc3\xbc\x18\xecX\xae}\xa5\x88\xa54\x82\xabu\x1a\xd98\xa9\x9a\x81S\xb0g(\xb5\x0d\x08%\x19\xcd\x9f9.\xdc\xdaH\xfe\x95\xdf\x9e\x18\xc3\xb0?\xa8t\xe6z\xc0 \xfc(\xba\xf6\x83/\xff\xbb \x05\xf1R\x92\x91\\\x11{<\x16\"\xf5\x9a\xe3$\x0fgw\xcf\xa3H\xad\xbd\x1a\xc8\xa5nI\xdd5\xe3\xff1\x1f\xe7j\x98\xd2\x9a\xb2\x9d6\xb8\xf2\x95\xebj\xfa\xd7\xd8\x07\xa2\x19\xcd\xba=i[\xd5R%\x1b\x83v\xdb\xa8\xeb6\xe35\xe2]-\x93\"\xce1\x15\x06lA.\xdf\xb7V{\xd5F\xdej\xe1\xa2\x88G\xeb\xab\x96\xc5\xfe\x18\x8ev-\xc4\x9c\xe2\xb9C\x7ffI\x9a\xdb\xd7\x8e\x0b\xab\xcd\xcdz%Ud\xba*\xaca\xce\xa3\x1a6\xd7\x0b\x17tR\x04:\x9b\xc4\x06\x0fQ\x1f\xe7\xe8jE\xe2i\x18\xcf_\xf2\xd9\xcb\x9a\x0c\x1c\xba\x156\x0b\x96\xb3_xQ2\xbfHVo\xc9\x0d\x89>a\x88'c\xa0\xa3\x1b\x1e\xbd\xd6\x90\x9e(\xf4\xae\x82\"MI\x9cs\xc6\x0c\xf3\x89c\x9e\x03?\xc8E\x1b?3\x16\x0b\x8f\xe4\x88\x8d\xa2\x11g\xcba\n\x03\x8be\x03,VS?',\xb8WD\x97\xd4{\x7fI\xe8\xaa\x14\x0c\\\x1e.\x89\x9dt\x19\xab\x00\x87F\xe6\xadH:K\xd2\xe5g\xac\xf7\xcd\xec=\xa1\x84\x85\x9f\xde\xd9\xa1\x8bF\x0d\xcd\x85\xcct\xa7 *n\xa5F\xcf\xe2)\x8b\x0c\xae\xe7>{D\xbe#\nf \xf1\xaf\xf4\xaf\xedO\x82K\x97\xef\xc2\xe2:\n\x03\x11\xb8\xc6V}>\xfe\xd4\xfc\x95\xd8\xb2\xdf\x19D*R\x9c\x93\\\x1a\x1b\x9f\x90\xac\x03\x8d\xf1\xad8oC\x87\xc2-4I\xfb\xe0\xc4v\xb4\x14z)\x89\x88\x9f\x11\xbb\x89\xa0\x1c\x03\xd6b_\xb6!\xa4Z\x9d\xba\x99\xee@v]\xa1\x86\xf8\xd2\xea&\xb6\xa1\x02i$\x16$\xcf\xd1\x89>M\xc6N\x88\xc2-E\\\xd0\x93\xe2\xd5R\xa1k\xd6\xf3\xa7S\x8a\x9c\xc3x~\x91\xd8w\x8a8\xef\xb6M\xcc\xc9\xa3\x0b\x95h\xf1\xfe\x1e\x16\xc6(Y\xb3\x0e\xb7:\xa1\x88\xbb\x93\x8f\x1c=\x86!b\xf0\xf6\x95HKO\xd7\xc2]9\xad\xba\xd4v\xdaN\x19{\xc3\xa8<}\xf3\xe2\xe4\xd0\x04\xb5\x03-\xfd\x08\xb9|\xd4\xd7\xd6tWG\x8d\x82\xa4\xb3\x06/`\\\xed,2V}\x81^Sn\x8cL\x19\xee\xcb\x9a\xeb\xb4\xcc\x17\xd3\xb2`\x97t,7^\xbd\xaaf\x05m\xfb\x84\xe3\xb9\xcf\x1c\xb5\x97\xe75\xd1\xdbP\xf2\x16\xc3\xec\x05m3\x8c\xe7\xbcQFFb\xa0\x81\x9c\x0b\xe8PZ\xe0]\xb1C\x03\x8b\xbfGm\x08\x17Ji^\x9c`N\xbc!\xd2\x98\xdaQ\xb5\x8ed\x16\x15\xd9\xe2\x85\x02\xd5[\x85\x19\x8a)G\xceT\xca\xcd\xe5\x88/\xf5\xf3g\x16\xb1\x88\x8b\x94L\xc3\xbe\xe5\xb4\xe2>\xbd\xb6\xb0I^\xb0\xfe\x08@\x9f\xe7\xa9\x9f\x93\xf9\xddz}9\xa0}\xd1gOQ\x00\\\x92T\x87\xf8\xc95\xdd:\xbe\xf2Es\xda\xc5GO\xe9G7\xfa\x91\xb5M\x9a\x9f\xf9\xab\x1e\xa9T\x03[\xb3\xe6\\N\x97\xf0[\x8f\xd5\xf5\xd2\x8f\x7f\xc8\xc5\xb2\x06?\xc6&@\x1cP\x10\xc6\xe0c\xe8E\xf25\x87\xdb\x05II\xc1\x87\xe2c\x08\x85\x1c\xaeI\x18\xcf\xc5\xf6\xf4\xe8\xb8\xa6%5\x80\xfds\x19n2\xb2>z\x81\xd6\x19>]C\xce\xb0\x11\xdb{C\xc7l\xb4\xc3q\xc0\x01\x9d!\xbd*\xe9\xf7\x07\x17,\xbf\xa1B\x02FytP\x06r\x13]s\xeaxU\x9c\x8c\x87G\xa84\xc5\xd3.O9\xcc~@\xc1\xf2T\x17\x1f\x07_\x8d\x86\xea\xab\xd0\x14h\xa2\xd4b\xa0\xcd_\x861!\xe4\xf7\xa5\xf6\xa4\xd3[^\xc8tUSWz=@\xd7\x8e\x95\xf5\x0b\xdd\x1d%U|\xaf$\xe5Q\xcf\xe4\xd7,\xe2i\xa9\xa0\xa9\xcc*O\xab1\x8e\x0d]]\xcf\x83\xe8\xbb*D\xc4/\xd9;\xb1\x1b\x18\xd2\xac\x9d@hW\xfa\xae\xd6)\xe3\xfd\x97\xc3JR\xe8H\x86\x00c\xd4\x03U\xddk\x9d\xc3\x7f\xc4\xfc\xad\xd1\xf7\xc7oG\xb3\xd4\x93\xb3\x97J\xc4O}S&\xfc\xd6 \xd0\x9a^Bgx\xfe=\xc6( T\x0d\x86\xe6\xaa\x84\x94\x0bTu\xf2T;\xb6\x9f:.L\xaci\x98\xad\xe8\x01\xf2\x12=\xa9-\x17\xac\xab\xdcOylVz\x1b\xfbyx\xc3\xfc+1\x96c\xf6\x8a\xcd\xf7\xc7\x94\xd0gd\xca\x9eRT\xee\xcf\xd1\x08\xee<OV+\xf6\xfcJT_\xbaf\xd6\x9e\n\x0e5\xb3.5\xc2]\x0d\x0fx\xb7\":\n\x15\xdfa\xafMo\xf92\xb8\xe0\x85B\xd5|\xa3\xf9\x05\x8e\xee\xe3\xc2\xcf\x8c-^\x17\xd7\xd7\x11%\xdd\x0cM\xd2\x91E\xcc\xf7\xdc\xd0\xe5pI\xces\x7f\xb9\xea\xc2\xbb \xcb\xb5\xca\xaf(\xe9\xf4\xca\xcf\x89\x17'\xb7\x1aS+\x0d\x9d6U\xa6\xce\xd4\xb10\xbbH\x8b\xac,P{\xafE\xbdY\x8b\xe53g\xdc\xe5e&\x85\x9f\x94V\x1b\x0fZN\x9fJ\x8b\x0e\x1aI:\x84n<\xaf\x05\x94LR\x0f\xc3\xdb\xcf\xfc\x80\x18di>\xa5\xa94B\x1f\xca\xdd%j\xd8p\xdf\x18K\xdb\x10\x1d\xad4\xfb\xd3ft\x03\\\xd4\xa7\xd8i\x96\x01\x8e{\xe3Y\x0c\x00\xec`\xf0y \x8f=D\xc5\xecX\xfa&\x9e\xf8\x9a\xdc!\x0d\xe8\x08Y\x1d\xe6B\xf5\xd4Y\x87S\xdd\xc31l\xb08\x8e1\xb7\xde\xfb\xa9i\xbc(i\x84\xbd&\"\x80\x13\xa0\xdcU\xd8\xb0\x9aR\xf6\x1bZY\x89\xc8\x9d\x1a\xc4\x81<\xb1\xbe\xfc\x9f\x9acN\xedL\x96\\\xd5\xa7l\xc5\xfa\xf6J\x9c\xea=$L\xcdAmh&\\H \xd4\xd5\xda,\xc9t\xd5\xc4\xabw\x05}\xa1\xea\x8fl\x87\xd9\xf8a\x88\xcc:7#M\x08\xafM~r\x02h\xadf\x9e\x95\xc6\x8c\xb4r\xa7Y\x9e\xac\xa4I\xe9\x00\xda\xfa\x80P\xeaGH(\xcfZ@\xc1\xb0\xea\x0bD\xbd\xbc\xc2\xda\xa3\x13\xa6\x80\xee\xbd\xb8:\xc1\xb1\"i\x86\x99\xc4\xbb\xd7N\x98}d\x85\x19\xdaj\xb4\xd3\xd6\x8c\xfc\xadv\xbf\xd4J\xf7\x96\x9a\xd6\xa6\xa7\x07\xae\x84z\x0c\x0d\x96\xd1\x0c\xf1\x0f\xd3\x84k\xa3\xd3\xeb\x94\x15\x95\xd0\x9aebB\x146\x89//\xb5\x12\xd1j_;.dU\xe7\x98kc\xe6\xf9\xc5|I\xe2\xfce\xe4g\xbd\x1dNd\xb8\xa8\xbe'5\x1f.\x84\x8d!b\xda\x0d\x8fn\x10\x93[\xf5\x18J\x99\xec\xbf\xfc\xd0\xa9\xdda\"\x16\xf9A\x9d\x98\x06\x8c\xa6.\x8f3E&\x18\xfbR>f<<Q\x87\x8f\x85\xe4g.$u\xd1,\xa1OfI\x91\n\xcbQ\x94/\xa65\x9bE\xe5\x93\xcc\xf0\xc97\xb9\\=\xdd\xed4\xba\xea2,\x91\xf8\x87\xdc\xe4\x91 \xc2\xb2iE\xe6m\xd1\xd1T\xc3\xcaVc\xc8\x92\x02c2\xf7\x86\xb0\\\\\x9a\xe0amA\xd4\x1a}\xe8\x08\\\xd7\xec\x8610\x9a\xa9';\xfd{\xd2\x92A\x16L\x9dquD\x164\x851\xf5\xed\xa44\xde&\x7f\x10\xa1\xdc\x8cq\xdcT~\xbd\xf7\x82\xddU\xddl\xb9\x17\xd2\x9ea\x1d\x0b\x03\xaa\xae\xf5\xcc{\x9ez3^\"\xb1\x87\xb4\x98\x89so\xad\xa5\x7f\xd4\xaa\xf59\xdaV\x83\xad\x8d\x0d\xa2\x9a\x1f\xf4J\xd9f\x14@vv\xfa\xa6\xf4\x1elD\xb3\x11Ez{\"\nf\xdd\x1c\xcf\xe6\xdb\xc1WK\x02Re\x84\x93l\xd2\x98\xd4\x97v\x01\x96$_$SHb\x00\x16\xe0UKmw\xcdq/\xe1AK\xa4\xf8\xed\x1f7\xea\x13\xf7#\\,\x08\\\x17\xb3\x19Ia\xc9\xe4e\xb34YB\x9cL\x89\xf7\xf7\xcc\xc5\x03?\xa7e\xd2\xe46#\xa9\xa7|\xafV\xf7\xaf~\x91/\x92\x14\x00^\x934\xc92x~\x9d\x14_\x16\xfe4\xfc;Y\xc0\xf1\x0c\x1f\xfe+\xfb\xe3%\xe9\xfc\x19\x1c/\xf2|5\xde\xde\x96\x9e5*\x15\x19:k):\xd9\xcb\xed\xda}\xb5\xbb\xf7F\xaa\x9d\x17\x94[|\xaf\xe1\x1e\x0c\xa5\x08e\xb4?\x94M\xb0\xa1.ulY\xf9\x99w\xf1\xb7\x8fg\xaf\xae\x9e\x7f\xfa\xf4\xfcoW\xe7\x9f?~\xfc\xf0\xe9\x02Na4\xdc=\xd8=\xdc\xd9\xdf=\x801\x0c\x07\x07;\x07\xbb\xc3\xc3\x91\xe2}jh\xb00\xea\x1e\xe8\xe2\xa3\xdd9\xaeG \xf9\xe4\xc7s503\xa5H\xa6\xe0\xa7\xa9\x7f\x07\x8cPkI8h\x1a\x85M8e\xf49\x8c\xf3C\x16\x10=w\x1c\xef\xea\n\xa9\x9e\xab+\x8c\xf3]\x91D\xe3Z\xf2D$\xdey\x05\x19\xfd\x8eR\x1a\xa5\xb9V^\xb3\xb6\x84\x16xdm\xfar\x96\xc7L?\x80\xfb{\xa4\xa4\xe4\x00\xb0\x99S\xcb.^U\xdd\x84\x0d\x9a\xa26\xbd\xa6\x8c\xf2\x9b\x9a\xe7\xc9\x89>\x9e\x8b\x98\xa4\x19\x908H\xa6a<\xafgD\xc8\x17$\xc6\x8d\x87\xc9\xd2\xca\xc3\x0fD\xe0\x17\x1fx\x03\x06e\xb88c\xb9\xc1@/\xd57\xffF\x18\x19\x18\xcc\x04\xf4S\x13\xb5\x88\x85\xc0\x0cCC\x8c\x9b\x1f\x84}n}\xdc<\x9b\xa6\x0f\xac\xa2\x16gp\xbd\x03\x1d\xae\xdb\x17\x0c\xdb=y\x82LO\xb9\x1e\xe4w\xcdC\xbe\x85P\xc3\xd0>\xde\xf5]N\xde\xf2l\xdd1FWA\xcf\xf3\xea1\x1cWv\xcb\xeaV\xfd!\x99\xcd2\x92\xff@\x97@R\xe4\x90\xcc\xe0:)\xe2if\x9a]\xb5MZ9l\x82\x8d\xb6\xfd\x03\xc7\xd8\x0e\xdbs\xfd\xdb\xc9\xeb\x99\xd1\x99!juO!\xd5@\nuE\x80\xae\x08n\xe0\xb1\xee1\x05\xb3\xbe'\xad\x88)oCD\xb4\x00\xcf|\xd8\xbaU4J\xe2\xda\xec\x8f\xf5\xde,\xdd\x04\xa1\xb84\x9f#@\xcb\xe8\x0e\xf7\xf7\xcc\xed\xde*\xf2\xd9a\xdb\xd4od^\x98\x9dq\xbca\xc7\x8ei\x13 \xd4bIh\x83\x1d\n\xac+%\xee\xd1\xed$\x90\xce\xd3\x01\xdc\xc3\x82M\x9c\xde\xe2\x10\xf8\xe1\x8a\xd3\x81\xc7V\xea8\xdem\x1a\xe6<N\x9c\xbe\xfe\x04G\x9e\x96\x07\x04\xe1\x91\xcc\x06\x94\xafx\xf4t9]\xc9\x80\xc5\xc5\x0c\xfe\xc2\x8cm{\xcc\xcfd\xe6\x7fJ\xa9\x07\xdc\xc3\xd4\x16\x8eJ\xdd^ql\x1fT\x80\x89\x1d\xa72s\xc6\x932\xf7\x82duG\xdf\x0d\xf0_\xech\x116h\x916@Gt1Q\xa0\x1fJ\xf481h\xc0\x8c\xf7\xf7`q\"\x02\xc2Xb\xd3K\xdc.yZJ\x06`\x18\xc6\xa1\x84\x19-\x94b\xe8\x1a:f\x8ce\xd7\xb6A\xcb\x11\xb0N\xf0hyh?\n\x18\xc0&\xf7\xa6~\xeeW\x07:\xab\x8d=\\\x03\x8c\xb8\xda\x0d\x88P\x97\xfa\xe2u\xfb\xd1\xec\x02\xeb\xaf+C\x90\xdf\xb8\x90\xa4\x8c&\xdb\x8a\xc2/\"\x8e\x9bgi\x8ei\x85}\x81\x96CX\x93\xb8\x16\xd4\xb3wC\xa6_\xf4h#\x0b\x7fk\x1c\xbd\x1d\xc7.\x8bTyL'S{\xf4\xe8+\xe5\xe7yL\xe6(MV\xb3\x98\x19F\xa9\x8f\xd0(z\x11\xa0\xadW\xb9\xdbr\x1e\xe9l\x00c\xb1s)\xf9\xb9\xa1=O:\x0cu\xeb\x06\xda\x9b\x9b\xb1#\x82\xe4i\xd4\x06Z4e\x1a\x92>3/HX\xa7\xdcL\x8d\xe1\x98\x11\x91\x84rZ$\xb9)\x1bUJi\x08\xfag\xf3\x04\x86t`\x18\xbax\xb4\xb7\x07O \x9f\xa4\x1a=\xd7Z#\xd4$^\x85r\xdd<;\xa1\xbc\x95\x89jy^e\x96\xf1#\x0c\xbfB\xf8\xce\x82\xc8O\xe7\x842\xa8~\x0cK\xffk\xb8,\x96\x90\xa1;\xc7\xe0+\xe5\xb3}9\xcd\xf5p\xdfAWNJ6i)\x9e\x12a\xdf\xf7\x1c\xd4\xa2u%J'\x8b\x9c;JH\xcb\xf5\xdb\xb4\x0f\x92\xd6\xdasHe\xbc0\xfb)$,\xd0H\xf31\x9d\x88\xfb{ \x06\x14/\xf7\xb4\"0\x9b\xbd\xd5\xb8\xd6W\x8c\x9e\xa5\x13r\x80\xb4\x9c\xdb\xa1\xc0\xa9\xcd\xb2'\x9a\xedU[\xbe\x1b\xc3\xa3#\xa7\x14\x0d\x1bOB\x14\x88Z~\x16\x84\xa1\xa5\x17\x8b\xb2\x12\x91\x9f\x87\xf1\xb0\xb5\xc8u\x18\xfb\xe9\x9d\xa1\x08H\x12(\xfdq\xc2*A2\xaf\xad\x95\"\x9fm\xb5\x96`\x84vg/^\xdb\xc41\x02\x1c\xaa\xe6\x82l\xd4\xde\x9f \xdb\xea(\x91\xcf\x86\xfb\x11\xe9*\xb3\xd5R\x08\xaa~\x8f\xe0\xc7v\x08.\xc8\xd7\xeeZbx\xf6\xec\x19\x18\xac\xb6\xf9t\xfa\x19\xd9\xdf\xed\xae\xea\xb7.@\n\xa32cE\xa8\xedpzO\x0cp&\xcc\xc6\x1d\x95;\xf5\xe8f.\xcf\x8f\xd6\xf8T\x95\xbe\xeb\xd1\xd7M\x1b\xc7\"\xf6\x16\xd1F\xc6\xe7riz\xfc\xb9\xe2\x10L{5\xba\x94\x98*\x83\xc6\xa1B\x01\xa4\xa4\x189\xc0\xb64\xd3h\x10\xb7\xc4\x94;L\x99\xf0\x1cOn\xe49\xe1\x99,\x91;\xc575\x11\x1d=\xdd\xb7\xca'\x87 b\xa1I\xcf\x1cV\xe1f\xecB\x98\xbd\xf7\xdf\xdb\xb1S\x16K\xf8\xe1\\\xca\xb7\xb6`\xe8\x08\x91\x80(T\xbe\xdcDZ?\xa6\x07 \xe9p\x84@\xcb\x95V8\x00\x8f\xfe$7\xdd\\\x19@\xa2\x8c`m1\xa3\xd7\xcc\xcdm\xf4k\xafk\xf9A\x8bH\x8c\xd9\xdd#\xcf>K\x93%\xe5\x15S\x07\x15\xc35\xae\xac\xc6J\xe5\x15\xfb\xb45\x841\xcc\x95\x15eX!Z\xe1\x13\xaf8\x87'H\xeb\xb8\x069\x83\xe9\xd0\xad\xc4\x17\x92\xf6\x97\xc7\xd9\xc5\x08\xa4\xa7\xadE*\xf5\x04\xe7Z\xb5\x85#?\xcb\xdf\x18>\xc0\xb1O\xf2\xcb\xb6\xd1ky\x97\x1b?* {\xc1\xae0\x08Q\xce\x843Z\xfd\xe8q\x15\xfe\x06d\x12\xb2\xf0l\x86\xd8o\x85\xb4p\xf5%2\x89\n\xd6O\xb1\x14\\\x95\x89\x14\xd8\x89\xc6\xf8\xef\xb4\x8a\xc6\x99*h\x14\xe9!~\xb8q\xa1\x15>\xe0gY\xfd\xd1\x96\xf4\xcc(/@\xb2\xb6\xa2\xd8GL\x18X\xddw\xee+\x9fEO-`\x9bEQ\xe5\x7fc\xfc\xab\xd9o\x8dG\x8a`\xd6\xd4Q\xde\x8dai\x92FX\x00{\xe2\xa5\xc4\x9f~~\x13\xe7\xc3\xfd\x17gv\x0e?\xea\xdc\x18\xf5\xfb\xdc\xa8E\x16\xce\x8e\xa6A#M\x87j\x98#\x08\xe1\x18\x8a#\x0877\xf5L\x19\xf0\xc6px\xa1\x83\xfdG\xad4OQ\x1cp<\x1c\xc2\x16\x04\xadr\x1dQS\xf9!]9\xb4\x9b\xa1\xe3\xb2\xcfa\x93\x03(+\xe7-\xa0\x001V\xc9\x91\xec\x16K\"\xc1j\x0ca\xeb\x84\xf7\xc6\xe5P0 g3lb\xd8\x84\x0c\x9eAQ\x9e$\x05lA\xe60\x7f`\x84\xda3d\xe6\xc2\xad\xad\xb6!\x97\xc4\xf3\x8c\x07\x0b\\1\x1ep\x05\xc7\x90\x1d\xc1\xaa\x0d\xe8P\x03<l\xc2\xca\xc1Q\"\xf0W\x9d\x90\xa6\xd7\xac\xc5\x8bN\xbe\xaeS\xe2\x7fi-\xa5\x97\xe3\x00\xef\xe2\xac\x9c\xaeP[\xce\xa8\x01Q\xa6\xc6\x84\xf8\xee:\xb4\x03t\x82\x98\x17\x19\xa5\x10\xee\xefu|\x8c\xb0p\x95\x0em\x0d\xc5\x9b\nZ\x86WG1\xcf3\xe6q,\x02\xa4\x8e\x91ZK\xf4-\x84\x9d\xb83\x84\xff\x05#\xca\xcb\x0d\xf4R\xa1R\x9d\xb8 _[TO)<\x83\x10\xb6aTv\x0d\xef\xda\xe4\x0f>[{>\x1cCz\x04\x9b\x9b~\x1b\xfa\xa0\xc7\x84\x9c\xf7\xa2\xb8\xce\xf2\xd4\xa6|\x82\xef\x02O\x8d\xa1_X8H\xa4\xd6\x8a\x8a\xa0\xf0\xf5e\xc9\x84\xee4f\xba\xdb\x03\xe9\x89\xcaz-\x9a\xeb\x8eE\xc3+{a\xbf\xa6\x1bJ^\x16\x0e\xaa\xe4\x9a&@\xa6\x96\xae\xfa\xb6d6\x18(\xeb\x94smM.]Y\x14V\xb2\xf2L\"\x963\x87K&8\"r\x02\x94\xb8C\xa2\xafK\xa8\x98\xaf;\xe8\xdb~\x83\xae\xc1\xa6W\xc5g\xfd*~a\xff\xb6~\xa7\xbf\xf6\xad\xbb\x97V\xa3\x92W\x96\xde\xb6|\xd6\xa4\xadF\xa4\xa0\x15\x1b\xb6\x9d\xd3\xd3i\x84i!\x1c\xbe \x19+!\xcd\x9f\xcf\xf9M\xcaO\xc3!\x8f\xdaL\xd1\xc6\xde\xbe\x0b!\x9b\xf6\xc4)\x7f\x9a4yF\x94\xfc\xf0\xad\x0b\xfe\xbc\x8d\x9f\xad\xb3\x10t\xd8q\x8d\xc5\x84SH\x91\x07yq\x97\x13\x91\xf1\x9dbU\xf5!WQ\xe5u\x9b\xae\xb6~\xbdl\xeb\x17\x05\xf3;?_x\xcb0.i\xc6\x1e\"[:\x9f\xe8\x1aq\x04 \x8an\xdb\xd0&\xa5\xbd]\xb4\xafu1F\x07\x99$-\xc9\xe5\x03\x11,\xc1X\x82\x9e\xe0\x11e\xa5w\x9e\xc2)\xec\xc2\x98\xdd\x8dv\xe0\x14v\xf8\xdd\xf0\xe9\x10Na\x04c\x93\xe8\x05iE\xd8\x84\x19\x1c\xa3\xb0O\xc8\xeffm4D\x9f\x04\xb8\x11\x1c\xc3ptX\x12rQ\x8b^ \x04\x9da.\xd2'-.m\x8er\x19\xc3\xa7#x\xc2\x88X2\xa1\x83\x1b^:L8@\xd9\x17{g\x08O r\xe0\xf8\x18\xf6\xe1\x1e\xf6w\xe0 %^\x9f\x89\x0cb\xd8\xdd\xec;t\xd7`\xf6).\xb9\x7f<3>\xde\x8d.]e(!\xf6\xbe\xfe\xcc\x97F4\xdc+G4\x1c\xc1=\xd8bL\xf2\x10}:\xc4\xd1`\xf7\x80\x7fw\xcc\x13\x96\xdd\xdf#9+%x\xfb^\xe3\xdf}\xfc\xf8\x8b\xf2ng\x0dh\xd4\x9f\x15\x06\x08\x1d*\x10\x92@\xe6\xd7AV8\"\xef\x1b\xad\x89\x82\x8c\xa5\x92\x1bI`\xd2\x0eQO\x12\x97\xc6X\x94/\xc2\xcfi\xdd;.\xee\xe4!\xc5s\x81\xdc\x9e\x1d\x94i\xe4\\H\x19>\x0f\x98\x18u\x00O\x00\xf3\xc5\xdd\xb3I\xe4\xdc\x0c\xcb%w\x0f<\x95\x1cer\xc4w\x18\x1bg\xf3\x04fM\x8co\xc2\xd2\xdd\x14\xc9M\x19\xa7\xa9M|\x8a\x8aq\x8a^\xbe\x94$\x9f&\x1d\x1d\xb71>\xe7b\x10\x9d\xde\x02$\xdd\x85\xa5\xc9V&\xaeT\xaf\x0c\x04(\xc3\xa2\xa4\xa8=\xa4\xc7\xeb\xe6I\x9f\xce\xf0\xe3&u\x99j\xeeK\x07\x11\x157\x81l7\x8eO\xf9.\xf7\xb8b\xe9\x84\x1e\x0e\xb9w\x1e%\xb7\xe5\x93\xf6y\xd8$U\x84N\x82\x12V\x0dC\xc0\xba\x95y\xa8\xba\xb37\x1b\x1e8\x90{o\xde\x9f\x7f<{yq\xf5\xee\xf9\xffw\xf5\xe2o\x17g\xe7t=\x0dL\xb2\xb8\x139\x89\x0e1\x98\x05\xe9\x9fwy\xf6\x18\x83\xdf\x0b\xdf\x1a\xc5di\xd8a\xa2R\xb3J2\x9fie)\xbd\x00\xb0\xe5\x18N\x92\x1e\x01\x13\xc4\xc5{\xb5\xdb\x94\x1f\x89K\x8f;\x1e\\\xd8\x1dqZi\x96$\xb6c\x14\x87\x12\xca\x901K\xd3'O\x84'x\xf9\xcc\x1eb\xc2\xbcJ\xa9\xd8\\\xaa\x9d\xd9\x0d\xf8\x1864\xb2\x93\xfa\xbab\xf1u\xbe\xbc\xf3\xbf\x96\x91\xa3|\x1b\x05\xcb\xab$\x89\xce\xc3\xdf\xe8t\x1e\x0e\x9fb\xf2\xa1+\xeea\xd3\xb9\xe2\xb5\x13[sJT=\xbf\xb8`\xbb\x87\x1f\x8cT\x7fd\xf3\xf0EZ\x0b\xcc\x16!\xb5\xec Y\xeb\xa3v]\xd1\x91k\xcb\xb8\x06\xfb\xc9st\xf5\xa7\x0d\xb1_\x18\x1c<d\x11W\xb2I\xfd\xd9%\x93\x98\xd1W\xfa@ \x99\xab\xd4\xd2\x96/\\\xefv\xad\xa4\x04\xaf\x83\x89\xa9\x11\x10\xed\xac\x07\xfd5l?\x854\x10Y><h\x06\xc2\xacI6\x84d\xe6}\xa7:\x0b\xc0\xb4*\xef\xcd\xc22{\xf4Xy(=\xd1 \xf8\xae\xd5\x82@\xf8\x1cg\xfe\x8c\xf4]\xe23Qi{u\xf4\xb4\xf8\x1eU\nmO\xdf\xba6\x84y9\x0b+\xb4A\xbc+Q\x85\xa6\xf6 Y\xae\xfc\x94ty\x8d\x80l^YZn`\xfd\x8a>J+!\x13\xdetY\xa9Xa_hmM\x98\xe1K\xdd\xd5\xad\xcd\xccAV\xec16</\xef\x12\x8cV\x8bDm\xc9I2SZd\x0dC\xca\xd0\x1b\xdc\xb4\xb0\x1b\x93\xe4\x92\xe5\xce\x9a$\x97m\x87H,8G\xd6\xfe$18\xbfC\xab\xec\xd6H\xf4\xc5p\x8c\xdb\x01\x95zh\x8e\x04\xa7@\x7f\x0ft\xebE\x98\xbfv\xae\x18\xc1Vr\xe5\x0fi(\x7f\xf4\x03\xee20\xf8^&\x1c\xff\x03\xf6(=l\x1c\xfeI\x0d@t\xfe\xf8\xd0\xc7\xcc\xa27\x9d\xc0\xd0C\x1c\xf8yo\xec\x10Ji\x02T\xd3\xc9(\xccr\x9d\xe9d\xccL\xac \x99 \xa4`\xb2\xa24\x18>\x08\x02ZGc\xdf\xd43\xd0\xc9\xb5\xd5\\j\xb5\xd0B\x0c\x933\x0c\xd2\"\xd5\xa5\xbc\x07\x99\xc4\x97FvK\xc8\xa5j\xc7\x83\xad\xcb\xb3\x0f\xdcV\xdc\x84\xee\xcc\xbd0\x13\xe7>7F1\xb3\x812\n\xf7\xff\xa0\xf9\xa3\x97\xcf\x8c\xb9Q\x13\xce\x19_\xe1 \xdf\xb1\x16\xa1Z\xb7is\x91J\xce\x1e'\xb0p\xa1F\xe9I\xc7\xe7\xc6\xa0\xfe.\xbb\xf5W\xc3\xfd\xb6x\x9d\xa0\x06\x0fh\xd3\x13\x11\xad\x9eH6\xd7\xe4=\xc9(\x89]\x99\x0e/\x8b(\x0fW\x11\xa1\x10\x1c\xeeo]\x87\xb9\xf6X\xac)\x1a\x06Gh\xbeK\x8e\xd8\xf2\x1b9p#\xe2\x9f\xba\x98\xb4R\xc7\x7f e\x82\x1cB\x04\x04\x10\xeb`\xd9\x19}W\xb0\xec~#XvF\x8f\x02\xcbn\x03,;\x8e[=\xa2`b\x7ftZ\xb85\xa0\xb5\xbf\xfb]\xa1u\xf8\x8d\xd0\xda\xdf}\x14\xb4\x0e\x1b\xd0:\xd0Ck_y<b\x7f\xf6\x94\xc7;\xec\xcf\xee\xe3a+\xec\x93\xfbBw\x00\xf7\xed\x10\xaei:0\x10\x9b\x85\xd6\xe2h\xe2!h\xd4J\xeb\xf1\x92\x8ff@)\xf3\x1e\x9e\xe9r\x7f\xd2\x16M>\x9d\xe8\xda\xf9\x83F0\xcc\xe6LX}a\xfc\x16x&\x8f\xa7\xf2(\xb1\xfa\xd5\x8b~S\xb1Z\x890\x90\x90\x1f\xa2\x19\x1e.\xba>M\xa0\xd9(\x96>>\xa1\xbd\xe5w\x9d\x1f\xe3\xeac \xa4\x89\xe4\xcc%\x19(\x1b\xa5\x1b\xd0\x83\xee\x14\x17\xef\xc5\xc7j1\x9b\x9c\xac\xa0\x0f\xb5\n\xbd(Vq\xf1\xc6_\xae\xd3x\x1b\x9d+.^\xef\xf3u\xeam\xa5\x8e\xa1\x1f\x85,.\xde\xfe\x87u\xda\xef\xb4\x1d\x86\xaa\xe2\xf3u*n\xa1\xc6\xa1\x17E\x0e=\xa9rX\x872\x87j4\x17\xfdF\xd3I\xac\x03\x94v\xd1Z\xc6\xfa3\x8b\x0eUz+\x8e\xb51\x14\xd4\x8b0w\xc4M\xb0\xac\xbef\xd3\xa0\xa5\xc9\x1eD\x0c\x12\x1c\xac)\x0cI\x1d\xa9\x93_\x0b?j\x8f\x1f\x01ZiC\x87lA:\x0c\x85\x8df\xeb\xc1\xc3\xcf\x80\xfb{\x8e,KY\x88\xde/\\\x19E\x18g+L+\xd6\xefd2)F\x98\xffRC\xca\xdf\xdaqq>=\xe3f\xd3%]Q\xba\xf3 \x8e\xe4\xfe\x92\xde\xd2\xcf\x83\x85\xbd\xed\xfd>z\xd8\x9e;\xde\xdf\x930\xb6-\xb0Dx\xb0\xb22\x9e\xec\x89\xa5P\xf7<\x0f,\xc7q\xc1:\xe6\xf4\x06\xae+]6\xf4:\\\x0c\xf2\xa4N\xa3\xf6\xef?\xd5*\x8fW;YU\xcfmf{\x8e\xda\x11\x0e\x90\xb1Z.-\xed\xb6\x94\x17\xcc\xd6,i\x9c\xa8\xb9\xf0u\xa7'pY\xef\xfd=\np\x06,\xd5\x9cr4\xeb)>\xee\x8f\x9e\xd2G\x80\xf6\xd1\xa6\xf1\xa6\xf0\x8c\xf7'\xa7\xbfZ\xdd\x84\xaa\xf2\x9d.\x04Je\xe6RH\x07\xb8\x10\x97\xbf\xd2\xf2WR\xfe\xaa6_/\xf1^\x88\xae\x03[t\xf5`\x0e,\xd8\xa2\xcb\xa9\x90%z\xa1\x0b\xbe\xc3\xcc7\x10\x9c\xa5^0\xe1*\xd8\x9ae\n\xd3\xec\x0e\x8e`\xc6\x0ci77gf `4\x991 `0\x99\xb5J\x00i7ia\xd6KZ\xda\x8c\x83\x1f!\x01\x0c\xe1\x18\x8d\x90Q\x02\xe8\xc31\x84f \xa0\x8c\xa5\x82\xa8\x98\x92>\xb1\xc6\xa4\xb6\xb8q.\x82\x92\x9b\xe3\xdbf z\xd3\xba\x7f\xad\xc6\x96\xf5\x90\x1a\x98:\xaf\xad\x11\xc9\xe4\xff[\x1b\x1a\xb66\x84\x1e\xfaz<fBbJ\x94\xb6\x92\xc4e\xe2#i\xa7\xbb\x9c\xffj\xd4Rz\xa0\xa8\x08J\x1f4%e\xd1b\xd7\xaa]\xbf\x84\x99\xf8.{\x1d\xc6\x18\x97\xc0\xd1\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0b,P\xc7\xc4\xe5\x91t.\x1d\x96\x18\x14\xa2$\x9eS~U\xe4\x1d4\x07\xd4\xb8g\xb2z\xd1\x89\xd8\x81S\x8a\x98\xd9c-&\xe6\x1c\x04\xe5\xcdd\x7f&V\xb6\x8fQ\xfe\x8d\x1cE\xb74\xaf\xd3\xc4\xed4\xb2V\x89\xe4\xe0$\x07\xefyV:5\x89\x88'\x8c\xbf\xc3_\xbd\xd0\xbe\xe4\xdc\xcb\xd6bR\xe4Y8-\x83R\x99\xe3\x93\xa4e\\\x01c\xbc\x8c\x1az\xad;\x89\x1aUz}\xf8/\xbe\xd9\xee\x94@9\xfa)\xefd\xbd\xfa\xb1]\xbc\xcd\xeb5\xda\xec\xe2\xb8x\x95WkT\xf9\xad\xaa\x08\xa8\x9a\xbd]\xa3\xd9N\x1e\x8b\xd7y\xb6F\x9d\xfft\xca\x8e\xaf\xbd:\xdf\xc9M\xa1\xa1\xfbZ\x9c\x94\xc9R\x17\x80\x1941\xe7S\xd5k\x8a)\x1c\xbb\x9dOUi\xd7\xbf\x9d\x7fx\xdf\xc5Qp\x88\xe8wh\x8e\xa1\xe1E0\x10=\xcb1\xf5s\x7f\x0c\xaa'\x1d\xd2GU\x1e-\xef\xcaOS\x11\x1b\xcc\xed\xc6\xa5J\x8cM\x8aX\xbe\xc0 \xec\x0e\x9e\xee\x9bB\xc6=o;\xb3\x85\x04M'Iz\x8cYp\xcd\x1c\x18u\xbe\xccfLcef\xa3\xc1)js\xcd\x0cd?\x87\xde\x0f\xff\xacC\xfc\x1e\x83\xfb\xd8gpf\x1bD{\xc3$\xf5\xb47\xf8\xe1*\xb1Oiu\xca\xea\xb6d\x0d\x08\x96\xc5\xf6_\xce\\\xe5\x10\x18\xa1\xc3\xf4M\xbf\xdad\x12\xb6\x0c=\xe95\xf4\x8b\xb6\xa1\xd7L\xd1\x15\xc6C\xee\xde\x80u/-\xf5x!\xd7\xe4$\xa6YK'\xe1%l\xc2ho\x1f~\x84t\x122\x1b\xeao\x1c\xcb\xbb\xb6\xb1\x08\x8d\xc4\x105\x12,6\x869\x92\x8d\xc5H@\x91\x10\xbe\x08\xe3\xdcl\xdf\xb1\x89d\x901\xee\xdbEz\x17\xc6s\x0cl\x82\xe9\xab\xe1\x9a\xdc%\xf1T\xd0>\x0cf=\xbdp\xdf\xd4E\x10\x86\x1cm}\xa5\x10?X\xac\x0f\xda0@\\X\"\xe2\x87\x984\xd99\xba\xa8\xf1\xe5\x1f\x1a\x03\x03\xa9\x91\xfe\xd4\xd8t\xa6\xeacz&IB\x07s\x1c\xcc)\xf9\n\xb2x\xa1'D\xff\xde\xc1\x0c\xe5\xa5O\x7f\xce\xed\xa9\xf7p\xc2\xf5z\xc9\xda\xeeU\xadud\xaf\x17\x17Fu\xc3\x1d\xee\x8e\x96\\\x02\xea!\x9e`P\x9e\xe3c8\x84\x1f)\xfd{\n \x8ca\x08[\x908\x0e\xdahk^\xf4\x1a\xf0\xfb\xb5\x06\xbc;z\xba\xfbt\xff`\xf4\xf4;\x8dz\xd7<\xea\xbc9\xac\x1d\x1c\x16\x03F\xaf\xc1}\xea\xbd?\xbeea\x99\x96j\x0b>y\xf4\xfa|U\x1bQ[J\xc6\x90\xeeB\x04\xc0\xc0e\xa0v!\xe1<\xae\\\xc7h\x87\xbd\xa3\x10\xd8\xed\xd5\x87\xb7\x8f\xee\xc3\xa1\xa1\x0f{#\xf6\x8e\xf6\xe1P\xe9\x83|\x97\xa9t]\x1f\xfb\x1d\xe1\x15\xd7OI}\x02\xff\xfd\xdf\xc4U\x83`\xe6p\x8a\xa9Z\xfe\xfb\xbfs\x97\x9d\x14,\x0c\xe5&=\xb5\xcb\x1dBD\xc4\x11B\x0f\xf6\xf2Q\xeaT!\xc9\xec\\\xf9&\x17\xdf\xe4\xe57\xb9\xf4\x0d)\x9f\x10\xc7`\x03\xecT:\xcf\xd2\xea\x1aaa\x0c\x90\xb9\x96\xfc\xa4\xa4\xc0`K\x8d\xcb/\xae\xb8\x0c\xf3\x9b\x08q\x86\x81\xbb\xa81\xe7\x9cNH8\x19\x13S\"\x80\x0d\x04)\x00\xd2\x95\n\x07\xaa\x85V\xf7\x80P\xd8\x0f\x11\xd5\xe0\xedYO\xb9\x1a\xe1\x92\x19!\xb8A\xaaM\x90\x13\xb2|\xa3\x05\xf7\x89\xe56!\xdcgoX\x12G\x9b\x9bt\xd89\x17\xae\xffxB\xe9\x1e\xe7\x88\x13\xb5\xec\x1b\xd8\x84\xf0\x12~\xd4\xb9v\xebIY\xfd\x88_\xfccF\x0c\x9b\xb0\xb5\x95\x8bq\x1f\xe1\xd2\x1et\x0c\x97~\xf0\xed\x03>\xec\x83\x10\x84\xc6\xa9\x1c\xe3\xd0U\x15\x1cl\xe2\xfa\xb48\xdco.\xab^\x8d\x8e\x0c\x8drK\x0f\x04\xca\xf0\x12\xcf\xfc~\xfdhN\xf6\xb7\xf5\x03\xa9\x8dZg\xfa\xf4cg\xf4Hx\xec\xaa\xfd\xb0\xcd\x00\x91\x1f\x8d\xf0\x11\x8b\xf37\xdc?88\x18\x0d)\x17Q\xbe\xdf\xe9\xd9\xedG\x82\xaf\xd1\xedF\x1f(gc+#\x18\xee7\x87P\x1b\xd5\xcee\xab\x08\x9fv\xfb\xff:\x8c\x06\xcfN\xf8\xe7\xc3\xd1\xa1\xc3E\xe1[\x9cv\\%\xb76\xa5\x12(X\x1d\xc7\xedF\x07\xff\x10\xf4W\x03\x8c\x84\xdb\xd2\xcb#$/\x9bX0T\xb0`\xda\x0e\xa4P\x03\xa4\xd0\x08\xa4\xb0\x07\x90\xbe\x13\xcaD\xdf\xebr\xc5\xa3:\xefG\xc0\x88\x10[\xd2>@\xaf\xd3\x9e\xd8u\x0d\xe4j\xc4fM8\xde\x88\xd8\xaaF\xe4b\x84\xfd\xce\xe8`\x9f\x0e2\x86S\xc6\x08\x0d\x86\x07\xfb\x03\xb8\x87\x18\xc6\xdd\x14\xc8\x1a8\xfa\xd1\xc3a\x83\xb8\xaf\xa1\xf0?n8\xdf\x0f\xd5\xaf\x87\xe9\xebx\x92>\x1b\xed\xf6\xean?\xe8\xf7\xef.\xb6\xdc\xect\x0f\xe4\xde\xd5\xdd\xd7Q\xe2k\xb0\xfb\xe3\xba\x9b`\x95\x95\xa2ac \xb8\xbe^\xdd\xf8^Pktc\xd8\xb7\x1b\xaf\x92\xe2:\"\x8f\x04\xc7ag?\x06\x82\x01\xed\xd7\x8fG\xc2\xa3\xbb\x1f\xc3>\xfd@\xe6\xd9\xc8\xcd\x18\x848\xc8\x86n\x92\xda\x01\xc7\xacXPm\xfbF5 P\x0f\x93\xd8\x81-\x8a\xf2M\x8e(\x899\xc6_\xd8\xe2\xf4\x81\x1b\"\xafBN\x13AI\xc4\x8dc\x92\x15eD\xc4 \x10\xd8\x86\x84\xc9\x81\x8c\xe8\x8d\x16n\xc5b%$\xb5d\xc2?\x10\x921\x161BSc\xa4$AS\x88\xcfJ\x88nm%\x18 \x8e\x93\n\x1a\x90&\x02\xa4\xe1w\x03i\x83\xa8h\xb7`\xd1\x00U\x85%E\x16{{.\xeaQ\x8c\xf9~pv\x10\xe4\xb3(IP\xd2\xcd\xb1\xb5\xbc\xca\xb8\xc9\x7f\xaf\x81\xe8(\x90o\x1e\xcb\xc8e\x92\xe3\xb6\xd1\x9cj\xb6\x87[\xcd\xd9\x90\xcd\x19\x8aH)M\xf5\xf7Z\x03,G*=|z\x0e\xb27\xa5\xfc\x07\x0e\x92\x8fF\x1d$\x1f\xbbf\x90\xc3\xb5\x06\xa9\xa3V\xbey\x90\xbb\xae$\x12\xef5RF\xb3\x88\xd1\x8ev\xa5\xe1\x8e\xaa\xe7\xc3}\xc3\\k\x963\x85\xcc{\xfd\xf4\xb7\x92E\x12d\xfe\x80\xe9_\x1f2\x06\xa8\x0c\x0dP\x19\xe9\xd7\xccN;d\x86\xbd!\xb3\xe6\x11+\xa4\xc72X6\x8c\x06G\x02\xd57\x8e\x07\x0c\x1d\xad\x97\x9d6\xce\x96\x84\x1d%[\x1a7o\xbd=\x18\x9e\xc5\xfa\x83\xa5#J\xef#Op_:n\x88\x10y3\x89z\xc1~\nsLv\xb6\xd3\x01]\xe2\x97\x05\x86(r\x95s\xdf\xa6\xa7\x94\x0f\xcf\x9e\xc1\x80\x9e\xa3\xc5w9\xaf\xd6\xa4\x00\xfeO\x99\xe8\x16*\xe2\x9b&[\xcc\x85D`\x84\x15\x81\xb1\xf6\x8co\xfecf\xfc\x0f!P\x86\xa3\x03\x17\xb6\x86\xa3\xc3\xb5i\x14R\xd3!Q\xd02\x9f\x84\xe1\xb7\xd0/\x7f \xf9\xb23:\xd8\xa7cE\x19B?\xd4\xfe\x07\xd20\x7f \xf3\x88\x81\xfe\x81t\xcc\x1fH\xc6T\xf9\x10\\%\xedA\x8f!\xb7\xcfm\x0f\x12\xa7F\x12}\x13A\xf3\x07\xd23f\x10\xd5\xb7o\xcdHB\xec\xe2\x1eP\xfc'\"~\x0c\xf2\xa7v(\xbeR\xe6\xac\xcb\xab\xa2ji\xdd\xf9RZ\x1a\xf6j\xc9$Ejo\xea\xedc\x06e\x12\x14\xad\xd5T\xe7\xa8\x82du\xb7\x1e\xddR\xa5\x9b\x1c\xa0Cd\xe9\"X\xd9\xd5\xe7\x8a\xa7\x97\x94\xa5\xa42E\x90\x0b\xd0\x0f\xf3\xb2F\xae\xe2HK\x12\x10\x9d\x17\x98\xf7eWz\xa7\xb0\x11 \xa5\xea\xa0\xdc\xad\x8e*\xf26\xc3\x9b\xdcO\xe7$?\xcf\xfd4\xef\xce\x86Z\x9a\xf1\x003\xd6T\xba\xa1o!K\x8a4 k\xb4\x90\xb6\xf5\x97\xd5v\x16O\xbb\xebJ\xeb\xce\x17%\xf4\xeb3*\xd9_\xe5\x18{iK\x9a\xa8\xda\xcbM\xadU.\x12\xb4L\xbf\x95\xea\xe3\xd6\xe3\x1cTn\xa8\x18t\x99+\x07\xb1\xc5\x96\x904 \xb0t \xc3#HxV\x83\xad-4\x0bK`\x13\x10I\"\xae\xa3w\xba\xb8/\xa5\x93\x11eA\x86d\x07X\x18\xaf\xf5\xb2\xfe\xb105\x8aY\xda\x1a\xedk\xf3\xb9d$\xaf\xf2\xb8\xd4Lubf\xf6\x14:\xfa\\\x98B\xef\xd7\x86\x08fa\x14\xad\x87\x084NWkg\xb6\x16\xe9 0\xa4\x06?6\x95\x1d\xa2M\x9f+\xe1\x85\xe6'.\xcf\xba\xd1\x95\x19 $\xde\xaa\x16\xb0\xdcdy\x04\x18\x80\xe8\x18m\x8c\xc5Am\x88\x8ff\xce\xb7\xaa&\x9b\xd1\xe4\xc33\xf9\xb3\x97\x19\xbf\xfb&\xf36\x80\x1d\xdb\xad\xe7\x02NM^\xc5&\xcf\x8fF{<w\x89.\xdf9\x07\x16K\x95d4\xfa\x15\x9e`\x12\xfa9fgC\xfd\x91\xd1*\xfaCoO`\x0c\xe7!eqZ\x84\x99\x1eK\x85\xa6\xceV\xce\xbcJ\xa2\xeb\xd3Zo\xc7<\x89\xdc\xc0\x85*\xb2\x07=\xe5\xb4i\xe1\xcd\xf8Dc\xb1\x8fH\x84i2\x0cH\xc4,M\xf0\xd1\x96O\x8eU\xc82\n\xbf\xb6c\x91\xd2>\x95\x12`:-\xc9\x9b)\xcb-\xe2T\xe9\x17a9\x00n\xab\x87>\xca\xb5A\x08\xbc\xe8OB\xf8_P\xaca\xb3\x977b\xe4\xd4\xfb@\x07\xfb\x19N`{\xf2\x9f\x9b\xbfl\x0f\xb6\x9e>\xdf\xfa\x0f\x7f\xeb\xb7\xad\xab\xcb\xed\xb9\xc9\xf5\xe6\xd7\xf6\x10\xae\x80\xca\xd9S\xb0\x06\xe8\xf4_O\x13:V\x1e\xd4\xfbfh\xf0\xb5Q\x01x\xa3\x0f\xd0\x96\x03\x8f\x8a3\x84\xed\xce\x1c\x97\x95\x83L\"\xc2\xf3\xeb\xf2:\xb4\xa7P Y`\x9bFb\x07\x07\x9ea4\xef=qD\xef\x1d\xec\xec\xee\xb6!\xdc\x90\xe7\x873\x97\x80r\x93>\x83\xbd\xfd\x9d\xe1\xd3\xae\xc2\xf4b\x89(vh\x7f\xb6\x86\xb43<\x99\xc4h\xe7\xa9\x0b\xc3\xa7C\x17\x86\x87O[\xd0\xba\xb8\x82$\xce\xc3\xb8\xd0\xe7R\x12\x979{\x10\xf0\xbe\xfb R?\x19\xa5z\xf2\xf5O\xd4{\\$\xed-u\xb6\xd2\x9e] \x97\xc9\xfe\xce\xc8\x98BP\\\xfd\xa0\xe2\xfe\xc1]\x8e\xb9\x8f\xc6>lR\xban\x8b\xa7 8>\x86!3t\xd9\xe2\xa3\xd1\xd6\xc0O\xc5\x84\xf3==\xc6c>\xc9\xab\xfd\x1b\xb3D\x15]\xfb\x8c58d\xd9Y\xba\xd2\x1f\xf0\xce\xc4\xad\xe3\x10\xf37\x1a\xec\xf6l}\xb4^\xeb\xf0\xec\x19\xe62\xc0\x00\xdb\x98\xd0 \xa6w\xa3\xc3^\xdd\xc2y\xea\xd7\xaf\x9d\xf5\xfb\x85I\x17F\xa3]\x16\xc2\x03\xf6\xe1 \xed!\xf6n\x8d\xbev\xa0F\x1c\x07O\xd9\xa0\x8b3 \xd2i\x05\xc9\x94\xc0*1x\x91\xc9U\xb2\xf1\xee>b\xbc\x87t\xbc\xbb<d \x1d\xbe<\xe0\xc7\xc1\xa0\xf1\xd4\x1c\xd3\xe3O\xf5b\xb5\xdb\xf2\xec\xfc\xad\xf5\xb0N\xbd<\xa92\xf0T\xbcM\xeb1Ww\x08i[M\x82$\xf0\xf24\\bx\x1c\xfa\xc3vx\x1e\xc4U\xe4\x07\xc4\xde\xfe\xcf_\xb2\xcd\xfb_\xb2\xcd?o\xcf]\xb04\x99\xfa\xe9\xf5`\x13\xa7\xfc\xe43\x96s*\x92w\xd4/x\xdcQ\xc5|\x8b\xa8\x92\xa8B\xd9<\x01\xeb\xc4\xf0\xa1\x18Csbl\xd23M\xd1\x8b\x0ef\xb1\xee\xcb\xc5\xb8b\xc6\x82`\x1a\x1f&\x14\x91\xa45I-\xad-g\x9fs\xce0\xf3P\xd2F&W\xf5\xeb,\x7f9\xdc\x7f\xdb\x85\xd8\xde\x19\xf2\xa1=\xb8f+\xac\x9b*\x13\x16\x12>\xe4\xeb*I\xf3\x0cN\xe0\xf7\x07\x89v,\xc1\x106<\xd2\x1b\x9b7#\xf9E\xb8$I\x91\xc3\xc2g~\xa0\xd7\x84\xc4 B\xe6W\xf0~\xd04\xe0w7\x10D\xc4O\xbf\xa1\x89\xa2\xb9\xe0\x19n\xc5\x18`e\xef\xab\xe8\xc2\xe5#\n>\x95o\x16T\xe3\xc9 \xf3\xe2\xda`\xf9\x8e5\xf5\xd0C\xb6z\xecv\xd4\xab\xcf\xb7!\xaab_\xd4\x97\x81\xc8\x0f\xa17\x955\xa6\xef\x10U\xb2\xa5SF\xcb\xd79\xfc\xb7\xb6\xd0\xac\xab\x94\xd2v\x07\x0f\xa8&l\xa3Z\xac\x8d\x95\xa0\x1d\x03f\x9d\x11\xdf\xc8\xbc\xa6\xb4\x10O\xe5\x9b\xb1\x8av[\x13k\xd0\xeaU4-\xdf\x19\xe6\xc9\xd4\xa9\xda\xe2=\xad\xdf\x8e\xd5,\x89\xad\x1d\xa3M\xa8Y\x15\xcb_\xb6\xb4\x9a\xe8\x1e\xe7\xa9\xcd&Jb\xb3\x00C\xbf\xd4\x9f\xcdx\x12\xda\xe6\xc6Y5f\x04\xb3\xb7b\x1a\x0b\x9bW\x05\xa5X\xe0\x14[\x14\x01\xc4\xed\x08\xc3\xa7b\xdd.D\x92\xecuj;\xed\xfbu\xdah\x16\x89\x88\xc0\xc4L\xd2\xb3\xad\xb0W\x1a\x8a\x01\xfb\xd8\xc6KR\xa6S\xf4\xed\x083\x11\xe9\xd79~@\xb1d$\xe0\x8aA\xc4x\xf6\"\x9e\xf2cv\xe9\xa5El\x9b<\xfc8(\xe4&;v \xf0D\xcfl\x8f\xea\xe6N\\\xfd\x8ev&T\xa7\x98K^\x86U\x1a_\xe9\xa1\xdd\x16P\x12Q \xab\xc8G\x14\xc8b5h+\xa5\xabV~\xe1\xf6o\xc6\x8c\xc2\xc4\x95\xda\x06\xf9\x12\xf4\xc2^\xe2\xean\x08d\xf2K\xc6\x9b\xe6\xe6a\xad.@\xa3\x01\x8eL;\x1a0\x8f^\xfb\xe6A\x05\xd8C\xebN\\h\x858(\x0b\x9c\x15(9\xe1B{\x96\xe6\xe8D\xcaZ\xaa\xab\xee\x86n\xec\xaa\xc5\xc4\x8b\xc9\xd7\xfc\"\x0c\xbe\xb4\x12\xa7b\x9fR\x8a\x80\xd1\xbc\x8d\xb8\xcdM\x93!\x94W\xa8\xc5\x9e\xc1\xb0 \xce\x12\x17\xc4\xcc'\x93\xb2*\xea\x97G\x10onRr-f\x86XR\xe8\xe8F\x98\xfd\x883\x1b\xe4V\x80\x0fe\xf7\x98\x15Z\xa2\x07\x03\xfa_aO%T\xe8\xc2B\xb6\xabG\x00\x9b\xcfF> <\x1c+[\x8e\xd5\\\xd4\xaaM\xbc<\xcc#\x0cJz\x9d&\xb7\x19I-\xfa\x90\xff\xe6a\xf2\x13\x8f\xc47H\x07\xd2\xdf~:\xbf\x11y5\xbd\x1b\x92ft\xfeX$\x93\xf2>+K\xe3\xbb\x1b\xfcn:}\x1bf9\x89\xb1\xde\x1b\xf6\x12\xdd\xd1\xd9\xef\xd9L\xfcL\xc92\xb9!ja\xf6\xf4y\x14\x89\x17\x99xC\x96a.~\xafR\xb2\"q\xa3%\xfe\xf8C\x1c4\xea\x8d\xa4\xea\xccK\x8d\xef\xc0\xc9e\x1dz\xd7a\xdc\x99\\\xa5A\xb5\xae\xd2$ YV~\xccC\xa4HA\xf1\xea\x8d\x04\xb7\xd3\xb6\xf9\x16\xac\xd2\xb6\xa5|\xb6\x98\x86\xe9\xe3z\xc6>\xed\xeaW\xb1\xf4\xb3/=z6\x90\xb6>h\xb8\x10E\xc5o\x15\x19AEO\x90KL\x9c\xcc\x90\x98G\x84\x1a\xa0\x8a\xd8\xda\x90Uu:}\x0f\x06\xb1\x15\x03\xf5\xcb\x8aU\x19C\x83k|\xc4@\x9aH/\xd5\xe2\xd0\xca\xbe\xe6\xa4\x0bk&f\x94\xd8\xc0p\xc7'0\xa4\x88E\xd2\xdeT\x98jx\xc9\x835\xc8\x8f\x9a\xf4DlLx+duZ\xb0\x19\xd7\x07\xa8\xc2{\xb5\xd7Lt\xcfP{\xea\xa8\x02|\x9fb\xdep\xe2\xd7\xb1\xaeof\x961\x17\xd6\x86\x88\xa2\x19\x0b\xd0 \xc3&\x91\xa1\xa1GnHzW\xcb\"\xdd\x95\xda\x0c\x19\xb7x\x92^j\xf8\x1bts\xb1\x19W\xcdp2\x9b\x04\x17B\xc7a:\xb5\xd05s\xf2Z\xde\xbb1\xf15\xc2\xb5 \xc7\xb8\x84cN\x0f;8\xc5\xe0\x14C\x1e\xd98e\x07\x1c\xcb\xb9 )\x85k<I\x9b'Zz\xf9\x0d\x13\xac\xefXZu\x8c\xcb\xb6\xb9\xc8$?\x82\x84v$\x9d$\xf5N\xe8\xa4!=L\xb5So\x95\xacl\x83j\xaf\xe8-\x04\x13#a\xd6\na\xc6\xb3]O\x06\x97\xa8U\x9c\x0c.al\n\xfa\x01\x82a\xc9\x1b+\xac\x8b\n\x14H^\xc7H\xb6\x88\xf9\x8di\xbb\xc4U:\xc3zK\x7f\xb5F\x7f@Z\xfa]\xbd\x00\xec \x0f6\xeeB\x9b\x00\x17t\xa7\xd29\x89H\x90')\x04)\xf1\xf3$\xcd\x80|\xc5x\xeb~\x14A\x18\xaf\x8a|+\xe3E2\xc8\x13\xb8&\xe5\\f.\x86\xdf\"\xfe\x14R\x12\x90\xf0\x86L!_\x10\x98%Q\x94\xdcbP\xb1\xbb\x15\xc9\xc60\xb1P4\xb7 \xd6\xa5Ad \xadD\xb5\x80\x85\xb6\xc0\x03E^\xda7\x99\x06)LZ\xb7\x93\xb8\x84\xd8xs\xd3\x05_\xa9\xc1\x10{_\\\x0f\x97\x82\x13\x8fM\xaa\xee\x86mL[Wjtr\xdb\x0e\x8f\xe1\x19\x8c\xe0\x14\x95H#\x8ez\xe8\x8e\x1f\x95\x91\n\xc5\x8e\xa7\x05\xbaw\xbd\xb8\xc4\xee/\xea\x8bXk8(_\xa5\x8cJ\x99\x00:\xe0\x12F\xa9\xd3\xb2\x1eZ\x96\xb2\x10\x19*\x95\xf7\xdfb\x14S(X\xa6s;\x83\x8ap\x072\xea\x97\x84\xccy-kX\xce0>3\xa9\x9d\xe4-\xa0\x16\x97\x00]\xfb\xa6\xef\x03}6\xc4Y\x9a,[Yv;4\xcc\xc3\x83\xf1\xb8\x8f\xbc\x94dE\x94\xbf.\xe2\x80\xae%\x17\x9f\x04\xc9rU\xe4~\xce\xd9\x94\xce\xcd&6Z\xe3\xe5\x03\xab/#\xf9\xa7GWJgH[q\xed\xa1L\x0c\x88_\xb9wuE\xb2w\xc9\xb4@\xf6\x8d\xf2i\x98:\xd6/\xa2\xfc\x1dY&,soB\x9f\"\xda$\x02\x8b\xbedH\x94\x11\x1d\xe5\xcb<-\x82\xbcH\xc9\xb4D\xb6}\x18\xefGP\x99\xbeBe6\x99s+\xc1<\xb8F\xea]\xc8\xfeM\x1dg\x87C\x06\xb30\xcd\xf2*^\";\x18\xfc\x18X\xf5p\xbb )\x01\xe2\x07\x0bX\xf1\\\xbb\x94\x11\xf0A\x9c%\x9a\xa3\xc3Gk\xb0\xb2SG\x0d\xa0\xd0\xbd\xc6\xd3\xf8~!wYC\x88UR\x8bq\x1dU\xb5\xf9\xc3\xd3\x0dY_\x0e\x8e\xdb\x93\xe4\"Z\x84\x9cW\x08\x81\xd3~\x03F\xfb\x11N\xfb\xe5\x93\xb4\x9d\xee\x03i(^J\xa6E@l\x85\x13\xea\"\x98\xc9\x84R\xcb\x97\xcc\x18R\xa3\x8es\xe1\xf7\x07E %\xb1\x9fu\x91\xb6\x8f\x04L}\x99\xd3\xf5m'z\xb5\x97\xc2\xa7 \xee#\xb6\x87\xc3\x03\xe5@D\xc6\xc6\x1e\xed\xee8zV4\xb6\x87\x83\x01\xa5\xfc\xda\x1a\x00Y\x84'\xd2'$6Z\xabK\x83\xea\x91TLZ\x12\xcc\x18tM\x96\xb4\x1a\xea\xc1\xaeaD\xed\xcc\xf5\x86\x1c\x0b\xd5\xc4G\x8b=\xb6\xf1H>Z\xedq\xac*$\xeb\xfb\x8e\xc9\x9c\xc6`\x8d\xbc=o\xcf\xd2\xad\x12\x8d\xfd\xe1\xd5\x153\xd4\xa4\x7fO\x84\xdb@o\xf0\x8d\x0e\x0e\xd6\x86\x9f\xcc\x85\xca)\xe7j\xb2\xeau\xa7Q\xbf`\xf7\x0ev\x95\xe7!\x7f\xbe\xa7<\xa7{\xc7\x9ap\x9c\xf8\xbe\x88\xa2K%Tx!\x17\xf8,\xd2\x9d\xab\xa524n?E\x13\x04f\x0fx\xe1\xcf\xcb\xcc\xde\xdf\x01R\xd2\x89Bo\x0b\xcc|2\xe6\n\x16\x08c\x8ev\x99q'\nF\xc6\xc8&?\x16\xb0{OGz\xc8>\xdd\xeb\x9cx\x0d\xbd,\x96q\xc2\xdej\xb7E\xca\xb2\\\xc4%\xd8\x1e\xdb\xf7\xd1Su\x96Y\xdf\xf7w\xd41\xb1Uqp\xd89$\xc3\x0c\x85\x0c\xde)\x83w\xb26\xbc\xf5\xb2> !\xef\x0e4#\x91NXJl\xb4\x93\xd4\x82V\x99h\xce0\x89s c\xa42\x84U\x98\xf9\xbc\xab\xbdx0\xc0\xad>\x96\x90\x1f\x14\xfbR\xb5\xa1\x17\xc6\x0b\x92\x86\xfc\x149\x1c:\xcd3-\xb6w\x06\xeaL\x16\xac\xae\xda*\xac\xea\xb2g.\xf8\xd2\x9br\x80\x19\xae\xbd\xa2\xd2\"\xf0\x14I\x83#\x88\xe0\x18*uFD \x80\xe6\xda\xa5\x04t6\x89\x14\x18\xce\xaa\xfa&\xc1%\x8a\xb9\x94G\x94)\x93\x1f\xb4\xebwg\x86C\x879\xc7\x88@\xda\xc9\x0cfU~IJ\x12\xce\x1a\x84\x96_W\x95\xb9P\xa8\x0f\x10\xfbo\x08\xd7\x89\x94\xf8S\xff:\xe2\xb1c\x17aV=9a^\x80\xf5\xf2\xb7i\x98\xd7\xcb\x97Oxy\xa6q\x89\xa2\xe4\xf6\xaf~4\xfb\xb0\"1'\xd3\xeb\x15\xd5K\x94\xb55>,\xabL\xe2\x80\xd8\x16\x89\xa7\x96\x0b\xabvp6\xb5\xf4\x9a\xba\x85\xc3\xc1\x95\x18\xc0y\xee\xe7\xc4#\xf1\x94L\xe9\xcb\xb4\xd4\xc5\xd9S\xd6\x85.\x1d}c\x0e\xb16[E\x0d\xf4\xe2;\x99\x1d*\x1f9\x19.\xaf!\x17,\xd1\xaf\xbf\x86\xf3\xc5\xcf~N\xd2w~\xfa\xc5r\xd56\xe2bIRZn\xdc\xd0\x85\xcfI>n\xa7\x98\xc5\xe6\xd6\x00b!7[\xdf\xfc\xd5\x80\x1c\xb7\xd7P\xa6$\xcb\xd3\xe4\x8eL\x1b\xdd\xef\xddE\xc9\x9f\x86\xf5V\xacS\xec-]@\x8d\x12\xb5\xf1TK\xac\xfe\xa5W\xf6\x0d\xbd\xce4\x80(\x0b(d\xb9B\x08\xd4\x06\xa2\xc7\xc8\x7f\xfc\x10*\xfd\xb3i\x10\xb4\x88Q\xe1M\x19,I\xe1z\xc5\xbf\xea:\xe4\xb1Av\x80\x14Q$6,\xae}W\xdeGyM{\xff]\x0e\xca\x9d\xe1\xc8\xb1\x1f{\x8a\x93\xca=\xabT\x91t\xd1\xe8k\xf6o\xff@w\x90\xb3\x10\xf7\xfe\xd7G\xf6;\xb1\x07.\xd2\x1e\xdf\x00\xccu\xcbk\xa9\x94\xa1flvl\x1f:]\xf2\xbe\x90;~z\xe2l\xfb\x98$\xc2\x16\xc0\xc4@\x0b\x82\xa6\xf9\x1d*8\xf4\xb2;\x19\xc1 \xc3Pz\n6\x05\xd6F\x0bez\xd0\xd2\xef\x1b\x86\"\x1a\x9a\xb2}\xd4D>\xca\xf1h\xa7\xe7\x8cm\x8d\xf6,t\xb7\xc5\xedVP.\xde\x16\x9bH\x03\x1f8\xe6\x1b.I\xa2\xf3\xf07R\xe2\xad:L\xe8vl\xa4o\xad\xdd\xfa((\xab=*\x1a\\&\x16\x9cNi\x9d\x94\xb9I\xc6\xed\xa8@\\%\xfb\xda:-q\xad\xcf\xdc\xba\"\xf6\xe6$\xa7\xf7\x88\xac\xd0\x01\xca\xa7O\xcb\xf1\xa2czu{\x02\xc3\x81C\x0b\xa4$\"~F\x98\x84\xaf)\xa1}\xd0\xa8oc\"\xd2\xa9b\x83\xe9X\x05\x08\xbd\xf2\xdbD-\xd5\x0b\x06\x8fY\xe4 \xeb\xa6\xd6Y\xe8\xa0[\xec1\x8b\x10\xe0\xe8\xc0\x01\xda5\x0f\xbauO\xab\xe8\x03\xce|\x91\x92\x06@\xbbD;\xe2\xfa\x16h\xa5\xdf\x05Zi\x19G\xa9\x114Z\\\xfd\x01\xd6\x88\xc8\x00z\x98\xcd\x92\"\xed\x02Y\x8bT\xf1[\xa0\x96|\x17\xa8%R\xf4\xa9\xd4Q\xf5\xf9\xe2Z\x0bp\xae\xd6\xf1\xb8\x8e\xca\xf4Gg\x81O\xdb\xe4ju\x03\x7fmq\xb3\x98tO\x95.%\xfcy\xb7l\xc4p\x94\xa7v\xb2\xfe9.\xf7\xe8\xd1-s\xb9\xd1#\xc8\x08\x89\xfa\xda\xd1\xcb\x8a\x0e\xb5\xe2\x96\xe1P}\xce\x98\xfd\xe1\xfe\x81c[Y\x1aX\x1a\x9e\xff5\xefH)_k\xca\xdfX\xfe\xc1\xc2\xf1\xb2U\x14\xe6\xb6%J\xcaR\xd8\xd8\xde\x1f8\"a\xf99F\xca\xe8\x03$\xce=\x93\x9a\x05\x98m\x94~\xe1\xda-tr\x84\xc8d\x0d\xafx4FH\xe4\x87\x14s[\xb1\xbf$\x16\x1a\xd1$\xd5=7\x9fDIxi\xd2cK\x9f\xf9\xd5\x17>/\x87\xf2\xd6M\xf6{\x0c\x19\xb3H\xe0\xde\xcb\xb9\xe3\xb0\xa8b,\xb6\xcbi)c\x871\x14\xe2\xb6\xf64\xa9\xd6\xc4\x18\xec)\x89HN\xf0\xbd+\xbd\x92\xd7\x94c\x97\x93(3\x85\xe54\xb5hu\xf84h!\x87\x04\x14\xa7}&>Ja$a\x87\xdc\xfeZH\xa1sM\x94z:9\xf4\xc1\xa9\xc4A\xc0\xb8\xcb^\xa5\xd76\xeb\xa4\xbe\xf5\x9bo\xb4o\x10\x81\xef\xeckw\xdf\xde\xaeJ\xc53Q\xdb\x81Z<\xe3\xc5UYj\xc4\x9f\xab\x12\xbb\x80?W\xeb\x99\xf1\xe7*2X\xa1\xd0\x8ci\xb3\xce\"B\x0f\xc4z\x81\xa9T\xe0\xb5O\xc9\xe4\xbbz\x81\x05+\x10%\xb1\xbe\x82\x1b8\x81\xb4\xfeh\xd9I\xb47t7\xd0<\xc8\xe7Z\xb2\xf9\xe5\"\x8c\xa6)\x89\xc7\x86sx\xe9\xaf\xc6\x10zK\x7f\xd5$\x0b\x80 1\xcf\xfc`A\xcb\xf0\x9f\xfarAR\xc49-\x85?\xf4e\xf2\x045\x9f\xb4\x14\xff\xa9/\x97\xc4\xd1\xdd\x18f\x8dw\x1a\xca\xe5e\xb2\\%1\xa1M'^y\xd3,\xf7\xb1HI\xadl\xedA\xb3|m\x05\x8cA\x03\x1cy\x86\xc7\xa0\x81J\x98\xfd\xe4G\xe1\xb4,Rx\xf5'\x9aN\xa6\xc9\xea\x82\x99De\xa6.\xbd\x8c\xfc,\x1bC`z\xcf\xd7\xe4\x18\xa6\xa6\x12\xef\xc2\xafa<\x86e\xf3\xfd\xab\x0f\xef\xc6\xe07\x9f\x97J>\x8d\xf1\xe9\xd5U\xb6J\x89?\x1d\xc3M}q\xea)\x829>\xfdc\x90Nc\x93\x87L\x12\xf0\x94\xb2\x1e\xf6h\x7f\xbf\x12\x14V\xe2\xa5\x85\x9f}\xb8\x8d\x85\xc8P\x8b\x9cF\xfb\xaa\x9eO\xcf\xa1~!wc\xd8\xd0XA\xa6d\xa6\x7fqu\x95\x91\xc8\xfc\x0e)\x84\xb1\x9a\xbeX\xeb\x10\x9a\x19O\nI\x9cG\xbc\x94T\xbbJ'?\x8e\xfaU\xf3\x85\xdcI\xd5\x88_BU\xa1\xe1\x1cX2C\x03Y\xd2\xd4*\xd3\xeb\xcf\x7ff'\x96vE\xe6\x98^\x994_\xe0\x1ch\xb6\x16NA\xdc|\xbeJ\x93U6\x86B\x03\xff\xe46\xa6|PhZ\xd6P\x01\xa7\x8a\x0b#\xbd\x0f\xea\xc7\x88\x060:`\xa4\xcc\xd0\xfaw\x1d\x97\x06&\x0b\xf0\x15\xe8,\xc0\xd1\x9b\x96\x11\x04:\xde\x19\xd5S)\x84t\xf1\xe4,3\xcf\nm9R2s\\\x88\xc4\xc3\x19:\x98\xc0&\xa0\xd2\xcfqky\x06=\xb6\x84\x05\xe91.\x9f4\x8b1z\xb7^\x10\x9f!\x1d\x14\x96\x921\xe6\xb5\xb6Q([\xd3\xe6\x99\x87}f\x1f\x93OR5\xe3.\x05\xdfTg\x18\xb5\x05\xa3&d\x98\x0eh\xea\x80\xef\x05\xfc\x8c\x84Fl\x8f2\xe2\xc3\x14\xbd\x944\xcb\xb4T\xf2-J\xc3\x9e)\x85\x11S\xef\xdd\xc01L\x8f\xe0fs\xd3\x81\xc5\xe4\xa6n\xd8s\x83\x811\x9b\\\xee\xc0\xad\xf7\xa9\xee\x8f\xf8\xd0\x18 \n\xdf\x88\xb0?\xa3\xf0\xcat=\xa5\x9d\\\xa21\x87\\\xb2\xd9|\xb5.\x96N\xcd\x96\x8c\x02^\x9a\x81e\xc3\xe0\xfeA\xb77\x02\xba\xdag.\xac0\xa9&z4\x05E\x9a\xd2\x03\x10\xfc\x1aK\x13\xd4\xc9\xaa^Fp\xca&C\xb7\x9e\xd2 P\xbbWs\x8f\"\x0f\xae\xa4P\x9a\xa7G\xfa\xf3x\xfa\x89\xc5F\xf8w\xd2\xa9t\xa8\xc6\xe81\x86\"w\x19\x96\xa5\x7f\xf8>\xa0?\xf8:'\x1e\xc3*\xf4\x17b\x1eu\xfc\x12M\xd1\x13_\xf8\x0c\xb8\x94\xa8\xb4\x7f\x7f\xa8*n\" \xd4\xba\xd0-\xdc|\xb5\x00~8h\xce~\x0cj\xdd2\x16\x8d\x87_\x17\xd2\xf1kHg!\x90\x0e\xdb5\xe5\xf2\x90q\xd0T\xc5A\x0c\xdel\xe1\xe39.\xaf\xe9\x12mi\xde9\n\xb6\xf1\x0d\xd8\x86=\xb7e$F\xf9\xbb\xba~\x8c\xe2\xbd\x15\xf3\x81\x99\xd1?cqG\xcbj\xb0\xd3rM\xec\xb4t`\xd5\x07;-;\xb1\xd3\xbc\xc4NK\xc7\x85;\x86\x9d\xee\xe0\x18\x96GpG\xb1\xd3|rW\xc7Nw\x06\xecT\xeb\xd0\xbc\xd7\xfe\xe7{c\xea\xc2B \x81\x9b\xba\xfe\x9c.\xfe:u\xfch&\xb8\xa6Gc\x0bD\x90\x12\x0c\x8d\xc9\xad\xca\xa4i\xf0'\xe8&M%\xb1\xd3\x81\xe3\x9d\xdf-\xaf\x93HO\xe9\xa6\xebU7:\xd4\x9b\x0d\x0d\x0f\xbf\xcd\xd6m\x83C!\xa9\x0c\xd0q\xc1\x7f\x8b\xdd\xdb\xc8 \x81|\xaa\xaa\x19\x19\xd3\xbf\xdf\xb0#bt\xf5\xfe\xb0sdf\x94+E\x12\xe4f]p\n\x13r\x89\x96g\xfe\xb7\xc8\x131\x1e~cxJ\xf8\xbb~\x13\x11\x1aB\x972\x95\x1b\xa9\xechH\x13W`\xe0b\xd8lD\xe1\x11k\x7f\xc0j\xa4\x93I\xfbF\xe8\xddV\x02\xa7`m\x0d,J_u\x8c\xbf\xc6p\xe9$E\x9cUb\xe7+F\x1c\xea9C\xc4\xcb\x8a\x15I\xaf\xb8yq\xc5lU\xd6c\xacR;\x97eqM\xec\x15$\xb1\xd0E\x9a\xc4\x17\x98\x98_\xcb @\x87]\x8a\xb8\x84\x89\x82\x9e\x0b\x03\xd6\x8dY8/D=\x1a\x9f\x81\xda\x93\x87\xbaU\xf1\xa3\xc0\xd6\\\x0e\xaa\xd7\xb9\xc2\x88\xc45(\xd7\xe0Z\x9f\x80\x98\xdc\xa2\xe9r-.w f\xf8\xfe\xb6\x07\xfb\x9d\x9b\\\xb7kj\xa6\xceJ\x98\xd8\x97~\x1c'9\xd0\x86\x11\xc5%)\x14q\x19sH\xbb[\xbe\xcb\xa0\x1a^\x1f\xcaxyt@\xfb\xa0\x81@P\x10\x91b\x04_\xba_S\xb9\"\xe6\xfb\xdb\\\xdd\x9ch\x19\xab\x99c\xe5\xfe\xf02\x9d\xd0\xec\xe3\xc9\xf4\x87x.\x89\x93\xa8>\x04\xdd\x0c\xd9\x03\x17B1 g\xed\xc3\xa9\xe7\x8c\xb9\x06\xa0\xb5\x18\x0d\xab;M\xf2\x99\x16f\xab\x18\xff\xf7\xc3\x8cr\xa8\x98X\xe6\xfe\xbeK\xceT\xc6\xd6\xe6Lm\xccX*\xd2dj\x1b\x10|\x048\xca\xc7\xa5\x9c'\xed\x92\xf30S\xef\xfb{a\x06\xde\xc4\x0b \xefg/\xcc\xde'\xf9\x82EcH\xdd\xda\x0b\x06\x8a>\x04K7=W\xf5An\x83\x0b\x93\xfb4\xa1\xee\x04NBpjbB\xc9\x079\xd5o\xad\x99\x94\xac\x88\xdfo\xdd0\xcf\x1e\xf5\xe8\xc6\xa5\x133\xda;f^\xd61lb\xd4L\xcc<M\xb4S\x9f\xea{\x13f\xef\xc9\xdc\xcf\xc3\x1b\xf2\x1f$M\xfa\x8c}PE\xb8\x7f\x8f\x1e\x19\xde\xfb\xb3\xbf<\xbfx\xf3\xd3\xd9\xd5\x9b\xf7\xaf\xdf\xbc\x7fs\xf17,\x81\xe4\x84\xbeQ\xf25'\xf1\xb4/\x08\x98\xd4\xaf\xc9\xdc\x98\xf8\xc2\x98a\x1e\n:\x0c\xe2,;s\xe5e\x8cB\x06\xbb\xb4\x82\x1d\x99`\x1c\xfeI\xcc<\x9a\x1a\xde\xaa\xdf\xf3\x0c\xa8\x0e6\x13\xbd>P\x85\xc5\\\xefL\xcf\xc1\xe6F\xf4[e\x81\x1a\xcby1\x18/\x8c\x83\xa8\x98\x12\xa1\x95\xe9p\x1fG\xef\xe0\xb2\xad\xda\xeb\x07\xae\xc9\xed[S\xb3\\\x9bEM\xee\xe5\xfe\x9c\x9b[\xd3_O\x9eP\x1e>\xa4\x8b\x88\x89\x92\xe9O<\x13M!a\x1f\xd0\xaeJkJ\x86ofa\x94\x93\xd4n]\x91PAn\x8b\xc7J.\xb1v\xaeV*\xad\x93\xe6\x84i\xa2\x16r\xf3\x15\x9c\x0e\x14:\x88\xdf\xf7\xf7hK\xc6\xde/WQ\x18\x84,\x1dIy#\x97 _\xa5\x12\xe5\x8d\xae\x8e\x9e3\x85\xb2A/J\xfc\xe9\xbfs [Y\xe0G~jq1\xbex%\xd3Y\x89m]\xa0s&\xbac\xc6I\xbc\xc5\xbeA\x84LO\xbc|A\xa0\xec\x7f\x14f\x18\x07\xdf\x87,X\x90\xa5\xef\xc1\x1b\xf1*%Y\x12\xdd\xd0\x13!\x99AV\x04\x0b\xe6\xed\xdf\x08l\xe3Y\xcdIe\x86=\xc9r\x15Fd\xfa\xa6\x82\x9c\xcf]\x08,\xd1\x01\xcb\x85\xc9\xa5\xfa\xc1\xd9\xd7\xe6\x07\x02\x9e\xda\x0f(m\xf9\xce_)\x14v\x03\x9etK\xf2\x1d\xa4\xd5X\xd0\x8b\x01k\xac\x95\xdf\xe3{\xf2kA\xe2\x80\x98K,\xfd\xd5\ns\x1f\x98\n\xcc\xfc(\xba\xf6\x83/c9h\x97\xb8\x1e\x94H\xf3\xd0q\xea\x8b+\x9e\xb0\xadx9\xc1m\x8af\x16\x9eh\xa9z\xa6\xf1\x15m6GQ9a\xa8\\\xe7\xa7|\x84q\xed\xf3#\x16,v\xe8H2'R!!U\xae\x08Fj\xd2\xd6\xae\x16\xc3\x9aP\xc9Jz\x15\xde\xab\xb3\xd7\xcf?\xbf\xbd\x10\xfa\x95R\xc1\xdf\xb6\"\xc4j\xa8w3\xbb\x0d1\xb2\x9c:h\x1d\xdc\x03?#0\x1ck\xe7\x03\x83'\x8a~)p\x9c\x0c\x0c1\x02\x0c\xf1\x96\xb1\x9d\x91\xb9\x1d\xb9b\xb5)\xd5G\\\\\x86\xa6\x04\xd3\xa2\xfd\xa6\x86d~N\x93x\x0e\xcc3\x141\x88h\x12\xd7\xcf9\xc3&|\x16J\xe9D\x9b\xba!\xe4y.SA\x0e\xa2\x83u^{\x92;.l\x90^\xf1_\xc49+[K\x17\n\xa2R\xf0\xe6\xf9\x8a\x04\xe1,$\xd3\x12-\"C\xcfQc\x06v\x92RD\x19\xc6\xf3\x88\xf0\x11r_]\x07\x83\xc6\xfba,pn\xed\xad\xa72\xb5k\x84\xb1\xd1\x0d#\\w\x18\x7f{\xfe\xee-\xc7\xde\xb51P\xbci\x1a\x81\xf4\xae\xd1\x7f\xb1\x8f\xc9-\x14\xb6\xe6\xdcb\xc7\xa7V\xaa#\xf0\xf8X\xf5\x05\xac \x93\xbb\xad1\xd7$\xf6\x86\xc3\x9a\x19\xdf\xa1\x96\x96K\xda\xe4\x956\x81'\xf4\xa5\x1aXLn+\xd4\x1e+\xef>\x9f_\\}>?\xbb\xfa\xf8\xe9\xc3\xc7\xb3O\x17\x7f\x1b\xeb\x92\xa1\xfe\xf5\xf9\xf9\xd5\x8b\x0f\x1f\xde\x9e=\x7f\x7f\xf5\xd3\xf3\xb7\x9f\xcf\xc6\xb0\xab/\xf5\xfe\xf3\xbb\xb3Oo^\x8aR\x87\xfaR\x1f?\x9c\xbfA\xd6@)>2\xd4\xfa\xe1\xa7\xb3Oo?<\x7fu\xf6J\xed\xc6\xce\xa8\xf9E\x18\xd3\x85\xf1\xea\xc3;\xc1\x10\xbfD\x19[\x97\xf3\x12H\xb2\xd1P\x7f:\x02'v\x89\xc7\xab\x0e z8\x98NS\xe0\xe2h\xe2\xbd\xfa\xf0\xeey\x9e\xa7\xe1u\x91\x93\xf7\xfe\x92d+?\xe8\xfe6\xd3\x7f\xdb\xf5Y$>\x13\x00\xe8\xf5U \xbez\xc7\xe3\x9d\xbc#\xf9\"\x99\xf2\xef\xf4\x98\xba\x94W\xccP^\xe1\x85\xd9\xcb\"\xcb\x93e\xd9_J\x18\x16\xdeU\xe3\xb9\xb0\x97\xe4^U\x9a/\x9d\x16\xba\x1f\xf0`]\x95s\xa0\xea\xd7fL\x12f[\xbb\x87\x96\x0b\xb3\x16co\xdaw\xa4\xcd\xbc<y\x9b\xdc\x92\xf4\xa5\x9f\x11S,1qQ\x1e5\x9e\xcc4q\xf4\xe4ka\xa4\xe3\xe4\xcb\x97gVk\x0b\xd6\xfa\x05\xae\xa3\xb1\xc1rC\xbdV\xd2r\x18\x83F\x1f\xab^\xcb\xdaJ\xe8\xdb\xcc\xb2\xc8\xf2\xcfY\xe9)9\x86\x04\xfdK\xbd\x06\xae\xe9\x003\xbd\x16~\xf6\"I\"\xe2\xc7?1a<\xaf\xab\x81\x91\xfa\xd5\xf5\xbeX\x924\x0c\x9au\xd5\x10Q\xbf\xba>&Y\x98\x877\xc4X\xa7\x1e\xcb\xf5\xab\xfc\xc3\x0dI)\x07E\xa6\xc6\xe1\x9b\x90b\x93\xc9\x95/\xc3F\x06~\xf2/<\x05\xe2\xb0 \xf8L\x1e\xa5x\xa6\xefd\x19*(\xb5\xad\xbd\x01\xee?\x174[\xb4ms\x03\xdf\x9a7\xe8\x9c>\xeb\x08[\xb5\xf0j{\x02N\x14sA\xf9\xd2\xbbi\x00:\x96k\xb1\x88\xad\xd4\x8e;\x0es|\xcd(\xaf\x17\x19\xbf\x92w\x1b\x9c@\xc4\xca\x07\xc6\xf2\xf5\xcd\x06'\x10\xb0/dD7\x99]6lv\xc4\xa5\xe1\xd7jO4\xbeq\xd6\xf8\xf9\xd6\x7f\\\xf9[\xbf\xfd\xf2K1\x18\xbc\x1cl\xe1\xdfW\xfb\xec\xcf!\xbb}\xcdn_\xb3\xdb\xd1\xeb\xd7\xf4\xcf\xce\x01+\xbcs\xf0\x8a\xfdyMo\x87\xaf\xf1\xedh0x\xb9\xc5\xfe\xbe\xc2?\xac\xf0hx\x88o_\x0e\xd8\xed\xeb3z\xbb3\x18\x0c\xe9\xed\xab\x03\xfc\xf6\xf5S\xf6\xf6\xf5\xab\x97x\xfb\xea5\xbb}\xfd\xfa\x95&|Is\x05\xbdyu\xf5\xfc\xe2\xe2\xd3\x9b\x17\x9f/\xce\xae\xde?\x7fw6\x06k\xea\xe7\xfeVJ\xfc \x0f\xa7Vs\xfb}\xfa\xf0\xe1\xa2\xed\xa34Ir\xcdg\xf5/\xae\xce/\x9e\x7f\xba\xb8z\xf9\xd7\xe7\x9f\xb4F\x85Ji^\x0e6\xc1\xfa\xe5\x97-o\xb0\xf5\x14\x81\xfc\xe2\x00\xa19\xe0\xc0\xddg\xd0\xdcy\xcd\xa0\xb9;\xd0t\xa3Z\x1cz\xae\x1e]\x0d\xb3,d\x8e\xd2\xf1\xd4O\xa7\x0c\xff\xeb\x91y\xcbQ=n\xa4\x16\x00\xb4DV\xca\xf7\xa1\xb3\xea\xfa \xa6\xfai'\x13jj!3\xe2\xc00\xf5\x03\xb7\xbd\xb2I~\xe9\xc8\nr\x8d\xd6\x15\x8c\xa8B|3ln7\x13)\x8a\xe6\xcdFS\xcf\xef\xceO\x1c\x1c\xee\xd4\x18\x8a\x1df\xa3\xfc\xd4\xc0W4x\n\x8a\xef\xfc`\xf1\x89\xcc2.\xe1Bi\xc7\x157\x9d\xe264:a\x87\x9e\xcfX&E\x9cK\xf6\xf1\xea\xd8P\x98\x1f\xa2\xb5\x94^.V eZ\xaf\xc6\xae\x7fi\x94\xe7\x10\xb5\xdf\x92\xce\xa7\xf9\xd2K\xc9\x8cI\x91\xe7$\xffD7\xff;\xda\xea'\xe2O\xefl\xc7#\xf1\xaf\x05)\x08z\x04R\xcc\xdc\x86_\xe7$\xffk\x92\xe5\xef\x93i\xe7\x8e(\xbb*}c\xb7:6\x17q+P\xb5\x8dxSRN+3\xb1S&\x94>S+n\x08\xb0\xeb\xfd\xe0\xf1\xf3Z'74M+\xe3\x8c\x94^4'\x12\x95:(T\xc6\xc4\x13!\x97/_\x05I\x9c\x93\xafF\xdfdM\n\x10\x90\xd6S\xeae\x8b\xa4\x88\xa6\x9fWS?'\x08\x14_\x9ft\x18\xf0\xacA-B\x1d\x82\xbe\xc3\xec1\xeb \xb0\xc5\xa8]\xf6\xd5\xe3\x16`\xdcc\x016\x11P\xdbT\xadH:K\xd2%\x1b\xef\x9b\xd9{\x12\x90,\xf3\xd3\xbb~\xfe\xcb\xc4\xbb*\xf0\xcb\x17~\x1e,\x98\x86\x8f'\x8a\xc51\x9ajo\xac\x9f\nk\xe81`\xf8=0\xe0\xc8\x10\xedo\xb8\xfbT\xab?\x1b\x19\xfc6w\xf6\xd4\xf2\x183\xad2\x08\x91\"YN\x93\xa0\x10\xd3\xab J'^{\xe2\xc7\xbb\x84)q\xf4\xb5\xc5\xfeM8\xc7h\x9erf\xe5\x93\xe6{\xaf\xc8H\xfa|\xce\x1b\xde\xfe\xe5\xfal:'\xbfl\xff2\xdd\xf6r\x92\xe5\xb6\xa6\xa0\xf6\x1c\xd0\xf8x\xd0\x8d\xd7\xf0\xa9\x00\xd9\x82\xcc\x8b\x93\xa9\xc1:*\xe69V\x995\xa7~W\x8b8\xedz\x8e\xa5\x16?\x9e\xc7\xb1\x8cK:\x00\xc3Y\xb2,h\x93\xf4\xd2\xc5\x1d\xa5\xd9\xbch\xc5Z\xed\xb6E\xbe\x8c0\x8a\x1c\xda\x8e\xd1;\x07\xc6\xd2{\x8aP(\x1c}V\x00\xf1\x8bi\xfd\xd6\xd6]\x84Q)\xbbv\xd2p\xc8=\x16(\xdc\xf0?\x94db\x02\\\xdd\x0b:\xf7\x95\xd9B\xed=\xa5\xe1\xea2\x0bf\xeb\xc1\x03\xeb\x89\x92\x82a\xf9\xfc\xe9\x0d\xc6\x83\xd2<f\nK\x06\x8bS\xb03\x9b\x9d\x04a\x9c\x914\x7fAfIJl\xf6\x1d\xba\xbd\xc2\x18l\xe3[\x17-\xafe\xcfT\xddZ\x0bL^\xb0Hg\xd4\x86(\x81\xbbY\x8f&\xa8\x18\xaf\xa8\xb9f\xe3\xc4 \xf4\x0dJ\x1fF\x1duK\xc1b\"\x95\xe9\xea0\xbe\xe3\xae\xbfcn\xf9+.\xdd\xfa\x99qh^\xa4\x840\x88\xb2\xa4S3\x91G\x11\xdd,\x7f\x0e\xf3\x05-\xd1e\x1fA\xbc\x95O\x0f\x14JD\xd4*(\xa7\x89\xf0i\xaa\xbaB\xdb\xc2\x83\x05\x0bv\xb5\x80N\xd3\xe5\xd6f\x02\xbc\x9c\xe5\x8a\xc4\xb9\xf3W+\x12O\xe56uM\xfd\xf5\xe2\xdd\xdb~-\xe1\xa6=\x81\x9cY\xe3\xf2Ah\xbb\x7fA\xb7o\xaf:sV\x12\xf3\xb1\x19\xea\xac\xd9\x13\xfe \xbaO%I\xa2\xdf\xf0\x16d\xe7\xcf\xcenwlV#\xd9$H\xa6\x0d\x05\x9b\xc6,\\\x0cZ\x93)\x18\xb0D\xa1\x05OD\x96A\x95\xa1\xf2\x0867\x0b8\x86L\x9b\x01M \xb5|R\x18\xe4\x9c\x01Eyp\n\xa1\x1dO\xa2K\x17\x08\xfe\x1fa\xe71h\xa4\x1a!\xb4\xac\xba\xb2\x02\xc3\xdcr\x98V\x8e~\x8dy@N\x99g\x7f\xe4B\xe0\xa0\xf1\x94\xb81\xec#x\xb4\x1d[-PF\xad\xbe\xd2<2\xb6wwUR\xa2\xb2\xfa\xab\xd9\xeb\xf6j\x92\xd6w\xa8\x8b\xe2(\xe8\x16\x91\x05\xda\xde\x1b8\xae\x08\xe29\xe0 Rb{\xf8\xd4\xa9\xa2?\\\xf8s\x0b\xa9\xcc\x13\xb0^\x9e\x9f\x7f*\"L\x81\xe4\xbe<??\xcf\xef\"\xf2\x8a\x04\x91\x9f\xa2L\x89>C\xe1\x1c+\x10\x85\x84\xd2\x94A\x8e\xb7\xaf>\xbc\x93\x7f\xb3\xca\xc5\xddE\xf2\x85\xc4\xec\xc6\xcf\xfd\x8b\xd4\x8f\xb3\x19I\xdf\xe4d\x89\x0f_\x87\xbcQ\xba\x9d\x9fG\xd1\xcb$\x8a\x18\xc7\x8bO\x94\xdb\xd7I\xba\x14\x0e\xca\xf4\x9e\x85t\x16O\xde\x91i\xe8ce\xef\xc2%\x1e\x80\xcc\x8d\x9b\x9e\x03S\x8a\xce\xde\xf9+\x97\xfe\xc52\x1f\xfd\x90\x8e\xe1\xd7\x82d\xac\xeb\x1f\xa3b\x1e\xc6\xfc\x0f\xfb\xf2\xfc\xa7\xbf\xbc\xc5\xb5\x8e\x05\xce\x7f\xfa\x0b#\\\xc5\xddG?_\x9c\x93yy\x9b\x84q.n$(\x9c\xff\xf4\x176\xee$e\x83f\xd15^\x14\xb3\x99\xa8\x8b\x82\xfb|A\x08\xfb\x9c\xa2\xa1\x8b\xd4\x0f\xbe\xbc\xe4\x00/\x1f\xb0\xbb\xa4\x08\xb0G\x96\x88\xe7\xe1\xd2y\xcc\x18\x99\x93\xa1(Dl\xd1L\x1f\xb4\x93\xee\xccb\x92iv&\xddK)\xdd\x89\x8d73\xe0\xfb-\xa8,G\x15t\x81\xce\x1b3\xee\x8a\x94`\xc8Q\x17\"\xba\x10'\xd1%\xdd\xee\x1e\xc2\xb5c\xcd\xab8\x91\xa1\xa62\xbcI\x17\x024\x1c\xe9\xb1\x08T\xe2eQ\x18\x10\xfb\xd0\x85\xada\x97!\xafi\xbb\x9b[\xeb\xce3\xd5\x99c\xea{\x04\xc7\xeem\xd8o$xj\xee \xf6\x10\x9e\xd0s\xbf\xb9\\\xea\xee\x07\xf6\xc8PNrd\xb0w\x0de\xb8\xbb\x84\xa2;_\x0fAJ\xb8pG\xe5\xbd8\x0f\xb7o\x8a\xd8\xde;xp\xe5\xe5\xe3B\xd2\xb5\x84\x8c\x1d\xdc\x1d8\xdeL\xd7\xc3=},\xe6&\xee\xee\xda z&\x82E\x99M\xd0\x1e%\xe6&\xc6D\xf6\xc9\x08\xb9\xf6\x93\xa0l\xac\xb92T\x97\x93\xbe3\xb9&\xa4\xba\x98\xf4\xdd\xbd=\xc7\xde\x18\xd4D\x95\xa3\x9d\x03\x87\xc7\xedq\xc1jF\xcf\xd1\x9bG^QR\x8eG\xfb!\xc2\xfe\xee\xaa\x9e\x82\xe3\xa1%\x06\x8f\xb0\xb6\x12\xd1\xc2\xae4>\xfee\xb8\xba\xabPooRK\xfe}\xaa\xa5\xa8\x10\xa8<]L\xe3\xf54\x895\xe1\x18\x90\xdbB\xff\xdb\x9c\xf1Wbl\x9b'\xa5\xaf\x84n\x8e\xcd\xaeK\xbc\x9d\xa1qn\x1d\xed\xe4\xfe\x13!\xf5\x162n#\xb6\x87\x83\xa1c\x1b\xa7\x9a\xb7{@\x11\xbb>\xae\xef\xef\x0f.X~#\x8c/\xf4\n\xe5+7\xd1x\xa9\x88\xe7\x1c\xcf_\x07\xe8\xfd\xe0\xda\x9aQ|c\xa3!Vn\xcf>\xadU\x8ftat#\x89\xddk6e\xb3(\xdd\x01\xc0\x02\xcb\x86\xf1#\x17\x1c\x81g0@\x1e#ET\xf1t08\x18>}:\xda\xdb=\xd8\x1d<}:\xa4,\xc7\x9a4\xfd\xb7d\xb5lM\xa1\x07[0d\xe6\xc0\xd6\xbb0fVs(\x12\x06B\xc9\x0f\xf8\x17\x0cyFi\x90#\xb8 \xb30\x87E\x9e\xaf\xc6\xdb\xdb3? \xd7I\xf2\xc5\x9b\x87\xf9\xa2\xb8\xf6\xc2d\x1b\x15\x99\xdb\xd3$\xc8\xb6\xf1\xe3\xad) \x92)ar\x9f\xd30\xbe\xf1\xd3\xd0\x8f\xf3\x13\xac\xb2\x96:\xa6L\x1bHQ\x8e\xf5\xc4O\xe7\xd9\xe4\x92\x95\x8bi\x15\x9f?\xbd\xa9d\xdfRb\x19\xd8\x84\xa1\xeao\xc4\xea\xc0Qc\xae\xb6\"\x8a`I\xb2\xcc\x9f\x13t\xb4\xcb\x08>\x8f\x93xk)F<%7@\xe2\x9b0Mb\x14\xaf\xd2\x8f\xf1C\x1cG\x06~<\x05\x7f:\x0d)\x80\xfd\x08\x16$Z\xcd\x8a\x08n\xfd4\x0e\xe3y\xe6)n27<,d\x95oHM \xc0\xa8\xbc\x04\x85d\x14\xf6o\x04p\xe0\xa70\x89\x90\x9d\xc2\x8c\xb8\xb3\xd4_\x92\xec\"\xf9\x98\xac\xe0\x84\xceT\xf2\xc8\x8d\xd1\x87\xbe\xe3IC)]CJ\xb7\xeb\x1c\xc9\xd3\xf5Vk\x8bI\xa7x\x03\xedj\xaa\x86\xf7\x998\x03\x1a\x91\x04\xa1\x81\xf4r\xe1\x1d\xd5\xba+\xa4\xc6j.Up\xdat\xb1\x1aW)L\xf0\xd9%\x93\x94\xc6\xcd\xc8\xc0\xd887T\xe9\xdb\xbcu\xcd\xca\x9b\x932\xf2z\xdf\xa3\xdc\xb5_\xa5\x1a\xaf7\xa5\xa6\x0fi\x99\x8ee\xcdJMu2}M\xbf\xaa4\xda\x0bm\xadl\xd6{\xd7\xaaqU\xd7\xd6\x8aa\x0f\xfa\xd7\x8a\xc5;k]\x1b\x9e\xb2\xab\xa2\xae\xc2Od~\xf6u\xd5\xb7\xb6r\x8d\xb2\xcf:\x16i\x0f\xa7F\xb9\xee\xfe\x8e\x8dR\x1b\xaf\x14\x0f\x84^\xbd\xa7\x1fu\xf4\x1dq\xea\xda\x15\xe3WR\xcd\x0c\xcfIf\xe5X@\xd7\x9e0\xea\xe8\xdd\xa4(\xd5\xb9d>\xa6\xe1\x12\x0d\xfc\xfaV]\xedk\xd4\xeb\xe9P\x07\xbe\xd0l/|n\x88\xe5\xa0[\xe2P\xcf\xc4\xa7\xed?\x93O1\x970~S\x16{p\xca\x185\xb1\xbd\xb7\xebx\xec\xbd\x9e\n]\xdf\xfdWs\x8e\xe1\x04J\xc1K9'#\x0e\xd9\xbf=\x7f\xf7\xf6\xeck@V\xfcx\xc5\x97)\xf13\x9cY\xc2\x1f,\xfd\xf4\x0b\x0b\xfc\xc0n9\xe9pR%v\xa1\xe5)\xcc\xec\"\xfe\x12'\xb71\xb0g\x8e\xe5\xc0&/\x85\x95\x9c\x82\xc52\xfe\x89'\xe5)f\xe3\x99b9n\xd9\xe5U^\xa4\xe4<\xf7\x83/\x17\xa9\x8fQ\xc6\x0codk\x19)\xee\x01\xad\x10\x9fe\xb4$\x86\x0d\x14\xc4\x87\xc3\x9f\xd1.K\xe9\xcd\xca_iK|\x0b\xd6 9\xedOj\x8c\xbb\x90\xd6_\x8a\xb1\xb6\xae\xec\x1b9\x1b\x01\xce\xd3&Xc\xd0G\x0c\xc9)e\xd79 .lT\xc1\xfcq\x1e0\xe1\x07\xa3\nM\xd3\xe1(\xa1\xb4\xd6\x8e\x83\xd3%\x8884E\x91\xa0\xd3\x94*>$\xa5\xff\xc8$\xb6wv\x07\x8e\"h\x15\xbe\x83\xf8\xfe`o\x88\x96W\x07{#\xb5\\\xe5j\x82\xe5vx\xb9]\xfew\x8f\xff\xddw$w\xf1G\xecN\xf1T\xe6\xaat\xe9:b{\xd4Hu\x11r\x13\x08\xf5\xb90\x8dP\xa5\\E\x15\x103\xf5\xe6L\x14NX\x0c\xaf&\x92\xc8L\xd2-\xd1\xd3\xb61\xaaeso\x1af+\xca\xc82O\x0fo\xb5\xf032\xfdD\xe6a\x963\x05\x08Z\xeeNbs\x14\x89\xc2&\x8d\xa0\xec\x0f\xf4Y\xdc\xb4\nJ\x99\xaa\xdd\xbb\x12\xcd\x8a\xa1\xa2\x01\x8b\xf6\x05\x8b\x1c/\xbdy\xc3\xcf\xb6\xc6'\xe5\x0b\x17\xeaq\x86\x9a@\xd4\x04\xd4\x14\xe1\xfaz\xc1\x03\xa5\xfc^\x9e\xfa7$\xcd\xc8\xc5m\xf2\x91\x96\xb3\x89w\x95\xfb\xe9\x9c\xe4\xb4+.dJN\x9bf?\x02\xbd\x18}\xad\xbe\x98\xe6\x97\xd9\x99\xc8\x1dj\x14\x03!\x9e\xa3|=\xa6\xd6@\x05\xb8\x00$\xd3M7#X\xd2K3\xfaX\x1d1@]\xe6\xd1\x1c\xff\xcc\xb4H\xd1\xc8\x85\x99s)PH\x95\xf1\xb7-\xef\xce\x8f\xf5 \xa1\xfb\x9a\xafj\xcd\xc0\x1f\xb3\x84\x93o[\xc2\xd0 \xc8U\xdf\x05\xadB\x80\x16\x9a\xa9\x0bw\xa0I\xc6\x04\x1c\xae\xd3\x86\xce\xd7\x0f\x82bYD~^.\x85W\xbcM\x92u\x19pb\xf0\x83\xa8\xd5R\xb2\xad\xfa\xf3/\xe1\xea\x02;\xde\xab!U\x15nj\xe8U\x98\x92 _s\x14\xab\x9e\x95\x9f\xc59I\xdf\x12\xff\xc6\x00\xa6\xd2\xb4W\xd7R\xb5\xed\xaajlf\xcd;\xe3 ]L\xabF\x7fRO\xf1\xe97\x1f\x8d\x86\x93Q\x1fy\xaeyb\xf2\x88\xceC\xdd\xc9\xa8;I3\xc3I\x1aUI\xa6~Ws0a\xcc\xf9\x86\xc9\xd1\xacK\x8c\x04b+\xd9\xa1G\xbe\x92\xa0\xc8\xa5y{\x13\x7fH\xa7\x84\xd3\xedh\xfb\x95}$i\x86\x1b?\xb7\x193&\x13\x94\"\x0f\x91\xdd\xd8\xdd\xf5^\xf5f\x8f\x11\x81n\x0cZ+\xeb\xcd\xb9\xb3\xca\x86\xad\x95-\xfaVfy(\xe9\xf4\xae\xd2$A\x93\xaa7\xaf\xea\xf5\xd6\x17\xd2M\x03\xadH\x1e\x00\xcdF\xd8\xcb\xb3\x1b\x12\xe7\xccl\x01\xe7a\x0c\x89\xa7\x7f\xd3D\xf4\x8dr\xd9\x0b\xee\xde\xa7\xa9\x83\xbfk\x9d\xb2\xa2\xa4\xdb\xfa\x19\x06ku\xe51S@ZOw-\xfcR<\xd6\x1cD7\xdce`\xd1H\xf4I/;\x9a\xe4,\xfbh\xc4\"\x81\xfd\xfe\xe08\x93\x10#H\xe8\xeb\xc2\x94_\x8d\xf3\x81\xd9\xebd\xda0b>\x1a|z\xd3p\xfa\xb1\x1a\xbc\xeeY \x866\x00J\x84o\x0f\xa3|\xa1I\x8b\xb4=\xa3\xe4C\x9f9\x00)6\x84v1\x8b\x0b\x835XI\xfc2\n\x83/\x96>\x90B\xa3\xdcK\xc6\xe6\xf6(\xfe*)\xae#\xd2\xb7r\xa9t\xff&\xde%EF^%\xb7\xf1:e\xd7\xac\xfe]r\xb3V\xd95\xab\xff\xbc\xea_\xb2\xbbj\x90\xf4t\xf6\x06\x92\x8a\xfeu\xc4\x12\xbcbT\xc0\xdc\x05\xeb\xba\xc8s\xb6Cy2H+\x8cWE.?\xc8\xd0\x14K~\x92\x93\xaf\xb9\x9f\x12\x9f?sZ\xbc\xa8[#s\x88K\xf4\xb2\xe98\x05\xa0\xea \xc4\x85\x87s\xe3\xcd\x03\xb3\xceV]'DDJ\xf59\x8bY\xed\xc8b:=\xeeH\x8dx\xa8T\xf2SZ~\x92^\xb6a\x00\x96/\xe8\x11H`=\xb4\xc5\xf9\x8a\xdb0\x8a^\xd5Z4=g\xed\x9bG\xae\xc7AX\x1dO\x81\x94N(tz\x0c\xfey\x14\x95lC\x17\xd5)\x98<=\xe0\xeby\xbc\x15\x12[\\\x14O6\xfcpc\xb4\x82\x89&\xf1\xe5$\xbflC\x8ab\xfcf\xf0\xeb\xc4\x06\xe2B\xf8\xa4\x86i\xd0=\xb7\xb9\xa1<\x87)\xef`\x8f=\xf1\xa0J\x90\xf2\xd4\xe7\xc7{\x7f\xca\xbb\x84g\xe8\xf2\xa3r\xc5H\x83\x9a\xfd\xa1\xdff\x7f(.a\x87\xe8O2\x03|p^\xba@O \xda\xc8\xab\x8dF\x1e\x83\x19\xf2\xccv8D.7\xa4\\\x91~q4\x11K\xf3 \xdf\xdea+\xbc\x99\xebU\x13\xdefR;\xc0\xbe\x05\x1a.X!\xba\xd2$ Y\x86U\xffo\xdaHW\xf5b\xcf\x04M\xe8\x94\xfc\x01d\x88%\xe1\x14V0\x86\xa9\xe32\x80Q\xaa\x0c\x93\xb1\xfa^JP\xd5\xfd\xd2/\xe6\x8b\x9c\xe9\xc2[\xbbyu\xb5*\xd29\xe90\x81\x89*S\x0fc=\x12\x91\xf4\xc2\x8f\xbf\xf4\xcb\x8f\x1d\xd5\xeb,\xef\x0c,!\x0b\x01\xf0\x8d,a#\x85\x97` \xd5$A\xfa\xe8:7!\xb9\xed\x9aK(\x83\xe9\xd1\xd2U\xd0n\xbc\xd5\xaf~1\xfd\x89\x16e\x82\xf0\x99\xf4n\xc3x\x9a\xdc2\xcb\x81\xb2b\x8d\x87%H\x87P\xeea\xe2\x85W\xdcKM_\xb8<\x0eO!\x16!o\x7f\n\xc9-\xc6t\xe5\xfe'?\xb3\xc6\xc7\xc0z\xd1\xdc\x85MffJr?\x8c\xfa\x00\xac\x04\x12\xfb\x84\xb6\xdb\x199\xbb5B\xa6\x0b\x89\xda\x16oCRZIy@\x1bf\xa3\xf8\x85\xe7\x17s\n5\xcc\xa3e\xfb\xcc\x0bT^\x94\xfe\xb7/J\xb5\x93\xcb\xe4\xa6\x13_\x10\xcc\xa7\x1e\xe4o\xe2\x9c\xa4\xb1\x1f \x01\x1d\xdd&\xa8El\xdb\xae=\xc4R\xe5t\xe8\x9bi\xab}\xe1w\"\xd3\xbaF\x9e{\xff\xae\xdd\x90\x92\xbe\xde$#1C\xcah\xd7\xac\xc7?\xbdTS8\xa9\xd5\xf7\xdb?nH\x8d\xbcLVwi8_\xe4`\x07\x0e\x8c\x06\xc3}\xf872\x85\x9f\xfd<KbO*\xf86\x0cH\x9c\x91)F*g\xa6U\xef\xde\\\x88\xc7`\xbf{s\xe1\xb8\x90\x11\x19>\xdcT\xec\xefdz\xcb\xea\xabl\xc5\x02\xbaz\xd1E\xb0,\xff\xe3\xf6\xffQ}\xdc0\x1f(\xfa\xcd\x05u\xab\xd6:)\xa9D\xbd,\x91G3t\x02\xc8\x14\x16\xe1\xd9\xbe\xa5\x10\x17\xcdh\x95-\xe1,\xc4\x86\xafl\xeat\xf49plo\xcc\x9f\x0c\x92\x90\x85\xcbaR3Q\xa5$\x958\x81P1Y8\x81\xd0\x01\xc2\x9c\xfe\xda\xa8\xb32}L\xddb+u\xca\xaf\x13\xcf_\xad\xa2;\x9eP\xa9\x95\xbf,+\xaby\xc3\x86z\x82O\\\xe5D`F\xa0\xd4\x11\xc6\xc6\xa9\xc8\xcb\x93rG\x17\xde\x1f\xff\x9b\xe9G\xc2\xf2\xceZ\xd0\x1aKR\xc6c\xacy\x814\xeai0\x92\xd2\x85\x0eGk\xd7\xb4\xa2-x\xb2\x9e\x9e\xfa\x81C9\xc7\xd8\xb4(\xcb\xade\xf7\x95T\x9e\x0f\xf6zV\xc8\xdc.\xb8\x0f\x8a\xe3\x9e\x1b:\xd5\xf3?\x81A\xaf\xda]\x16*\xbc\xde\x9a\xe8i\xea\xc7\xd3diw\xfan\x18\xbak1\xf36\xdb\xf2\x82$\x0e\xfc\xdc\xae\x85\xc4\xc74\xc6cJeX\xce\x95\xe5\x82\xbd\xb9\x19\xc3&\xa4Ne\x0e\xb1\xb3\xff\xf8\xe43\x8dh\x06<\xb5e\xe39Sp\xec6\xe6\xcb\x07\x83\xd5|\x05\x8d\xdcc\xd9o\x87\x83\x81\x03\xa7\xfa\xd2\xd0-ZF\x94V\x06Y\x0d\xe9\xf2\xdd\x188.\xa46\xe5\x9d\x13\xa7\xdd\xd0\xdd\x14\x8c\\\xb6v\x7fh\xb4g\xcdInQ\\\xc1\xacW2q\xd7t\xfc\xb2\x9e\x07\x94aKR%\xdc\xb4\xc9\xf3\xcbBw\x0c^7\xe5\x0cE\xb2i\x0f_P\"\xf1\x11KTsP\x89\"\xeb\x9a\x17\xc7e\xce\x88F\\\x9f>=\xc1\x9d\x11\x9002l\x9aY\x94$iW\xef\x0c]\x0b\xb3\xf7\xfe{\xf4\x81\xd9\xc44\n\x03\xe6\x12\xc3v}\nc\x88\xd7O\xe8!\xe1\xa4Q\xaf<Q\xad+TN\xe3fJ\xba$\xc4\xf3Z\xf9}[\xacf\xa1\xd4\x12\xbd1*\x00@>\x87J\xe3>\xc3\x99\xa6\x91\x1b\xb4\xc4qn\xf4\xc1 \\R\xcaK\xddh\x98\xd6\x88\xcb\xd4\x93\x9d\xfe=\xd1\xb0n\x9aO\xea\x9d\xa91p\xf2\xa5\xf0\x8c\xba\x05\xd9\xe7\x0c&\xd5\xa9[\x92ofC\x08X\xe3\xd05\xef\x97\x7f\xa0\xe7\xaa\xd9Gr_\x9f\xc8b\xcf\xe4\xc3\xd9\x89\x0eR;Y?\xffZ\x97\x98gO/\xe69\xd0Iy\x98\x87Y\xf3\\\xc4A\xd5\x1f3\xbd\xff\xb0;\xc7\x9e\xd9\x14.cF<\x1ao[\x96\x94\xdeGk%\xcb\x82 \xb9\xd4\xb9\xf7\xa2\\\x7f`\xf0\x06\x8f\x1a\x11\xd8C\xb3\xe7\x1cH\x82']8`!^\x9ad\x97]\x84\xaaT\\\xe3%\xe72\xef<6\xa6f\x02\x0d<?\x13\xee$ZKE\xe6B\x80\x14\x02\xb3\xb1\x97_e.\x8cXB\xbb\xd3n\x11\x80\xd8\xe6\xd5\x91\xc8\xaczUZ\xa2\xa7\xd8\xa2^\x8f:\x9a5\x17\xb2tp\x0d\xf7\x1d\xdbZ\x92\xdc\xb7\xf4\"J]\x9a0\x8do2[\xba\x1a_\xe6\xa2I\x04g\x15\xf9\x17fg_s\x12cX\xc9\x9a\xb3u\x0b$T?\xc2z\xe5\x11s\xdf\xdck\xf3\xde\x94*\xcb\xec\xd2\x0f\x89\xdc\x908\xe7\xddI\xe2\xcc\xfe\xfdA\x15\xb7klh\xda\xe7\x0e \xc8T\xe7\x03\n8\x0b\xe8\\k>s\xc21X\x1f,\xd8\x84\xcdMM\xf2oq\xddj\x93l@\xe3\xdc\xc1'\xad\x92\xf9\x99H\xeb\xa2\x8dfB\xaf\x7f?\xfb\xdb\x184\xf6#\xef\xcf\xce^\xe9\xd3\x17\xce\xfc,\xffw\xa2\x86\x873mg\xcc\x1a\x90\xc8A5\xb5n\x0b\xcc[]\x9f\xb6\xf2\x14\xacs\xca\xfdX\x1f\xd1X\x9f\x98e\x1d\x1b!NOk\x04a,\x97\xd5:\xf4\xdaj\x97{lT\xd4\x9bu\xd6R6P]_\xc4\xa5\x9fLq\x86N\xd2K/lNl\x13\xf2s\x92\xffL\xfc/\xeb@\xfeQ\x00\xd90\x84H\x84&<6\x86\x7f\x088zi\x05\x92\xf8uJ\xc8o\x9dBn\xa8*\x8f\xd0\x1e\xd4\xa3\x8b\x9b\xfe\xc2\xd8vO\x9e\x80\x00\x13\xfd\x1d\xd8u\xb6K\\:\x02\xb0\x8d6c\xfc\xee\xef\x0fe\xb8\xe77\xd9Y\x19yC\xfb\xf5Z\xb4\xc9\xef\xdf\"]\xd6W\xadw{\xcf]\xb0\xaa\xc8F\x0d\xf7w\x8e\xf2\xe4xG\x947\xf7^\xbe={\xfe\xe9\xea\xc5\xdfPs\x847\xf8\xeb\xfd\xd9\xcfW\xcf?_\xfc\xf5\xea\xecS\xf5\xe0\xfc\xe3\xd9K\xfa\xe0\xea\xc5\xf3\x8b\x97\x7fm<.\x1f\\\xfc\xf5\xd3\x87\x9f\xdfkJV/J\xc5\x05\xedCLn/(}\x1b\x9f\xa5\xed\x9eg|u4\x97\x0e\xc5A\xda\xa8\xcd+\xff.J\xfc\xe9\xb8%\x83$\xd4\x89y\xb5C\x18/\xf3[z\xa59@\xca^\x91\x8e^\x9c\xafH\xf0\x8d@\xc9\xbe\xbd\xf9o\x06\x81&\xbe^\xef></\xf2\xc57\x82 xl\xf3AD\xfcV\xa9\xadP\x134<\xff\x9f\xc1\x00\xea\xd9\xe0\xe5<JpZ\xbf\x1d7\x08\xf2\x8e\x11iR?\xac1\xa2\x17w\xff#c\xeaC\x05\xaa$\xe5ZP\xd0\xe4\xda\xe8\x86\x82\x82\xa2E\xb8\xb6\xe1\x81N\x86\xfa\xfd\xd3\xf2\xdep\x13W\x0dB\xb4H\x9a^\xc5\xe4\xf6\n\x99\xfd\xf8\x8a\xa4\xa9&b\xbe\x11\xc5j>\xbf\xba\xa6;\xd7j2\x01\x0d\xc4]~\x9c\xadH\xa0i92\x1f\x02\x8dO\xb5\xad\x06\xbac\xa5\xfc\xd4/\xf2\x85\xa6\xd5Y\xedT\xc2\xd2\xb8\x80\x95b\xab\xaa\x18;\xc9\xaa\x92W\xd7w\xcc-\xb37_\xb6\xaf2X\\\xc6\xaeK\xdcY\xba?3\xa5\xc0\xe5\xda\xe1C\xdaH\xed\xfb{\xb4\x0fa6?\xc4\xa1\xef*\xeasMfs\x7f\xc7\xe1\xec\x96\x0b\x16s?5E\xaf\xeaE\x98H5\x0f\xf4\xee\x88\xfb\x0d\x19\x0bO\xf7?\xd03\xb0\xfb\x03\xbd\xf0e\x7f\xb0\xdb7\xdc\xb1\x10nli\x98\xa1\x98[U\x01W\xd3\x0c0\xe6\x16W\xe2\xd6\xd7\\\x92r?c\\@\xb6s\x04\x9b\x9b9\x1cCl\x0c\xb3\x99\x1a3\\3\xafa\x92\xdb)f\xcfK'\xc3\xcbv)\"\xbd2\xd9\x0b\x98\x9f@\xa9[{\xccm\x0fO \xa9?\x9f\x13\x96\xfc\xaa\xf6p\xe1\xa3\xe5J\xfda\x86%\x8b\xbauK\xb6\xde\xdc\x0f\x07{}$c*\xd8$\x93\xd0\x13)_x\xbc\xb5u\xd4\xe4C\xb8\x94~\x12_\xb2\xfc\x83\x92\x19\xb0\xf6\xac\xd8\x1a>z\x8f\x0c\xba\x93\xd1kFS\x0d\xe4\xeaj\xea\xe7\xfe\xd5\x95\xb6_\xa9\x9d;p\n\xf1D\xc3:\xe7\x94u\x16\x8f\xc7`-\xfcla\xd1\x134\xf6\x96\xfe\xea\xd1\xe31\xb8C\xed7\xe2\xf2\x89\xf0v\x06w\xa8]\xfd\xc6\xec\x11\n\xd7\x84\xeeD \x9dlA\xde\xa5!\x85\x86.:\xc6)\xf86*\x93\x12\x9b\xe0\xba tg\x89T\xddc\x94\xb8v\xc0M\xee\xdbZ\xbd'\xde-\xb9^\xf9\xc1\x97\x8fIt7\x0b\xa3\x88\xab\xe4\xa7d\x95\x92\xa0\x99\x17\x14=\xdeW~\xbe\xc8\xb8=I\x15z\x99\x7fY\xde\x9e\xb0\xf4\xb3z\x06\x8f\xb8`\xb1dM\xda\xd8f\xb5p\x91\x9a\xf0tk\xc5>#^\xd4x\xad0\xd6\xad\xfd\x0c\xffG\xfa\xa8\x11\xc64\xfa\xd8\x9c\xad\x13\x18>R_\xab\x9a&\xd4\x07@w\xdd\xf6\x7f\xda\xa7\xe3\xc1\xfdd\xb8\xf5\xf4\xf2\x97\xe9\x8f\xce\x9f\xb7\xbb\xb6\x88\x01\xa3$\x95\xb1\x8f>\xef\xfb\xc6\x86\xfd\xff\xb3\xf7\xef}q\xe3\xc8\xe20\xfe\xff\xbe\x8a\xc2\xe7\x9c\xac=\x18\x03I&\x97\xce\xb0,\x03\x9d\x1d\xce\x06\xc8\x0f\xc8\xcc\xce\xaf\xc3\x971\xb6\xba\xdb\x1b\xb7\xddk\xab\x9b\xb0\x9b<\xaf\xfd\xf9\xa8$\xd9\xb2,\xd9\x86\xb0{.\xcf\xd7\x7f@[\xd6]\xa5RU\xa9.T9\xd3\x18\n\xc9`\xc4*{\xf2\x04\\\xd5EI\xde\xf0A\xb2\xb1\xc7M\x87\x0b\x1e]\x80xX\x80\xc0\x1f`k\x97\xff\xfa\x0f\xf4e\xcfi}\x8c\xc5\xfb\x80\x99\xd2]L\xf5\xcd\x82\xed(\x17\xfa5\x8a\xe9\xa2\xf9z\x8b+\xd8\x18\xf1\n\x86\x03P\xba\x82*\xae}\xc8\xa1\x83\x90\xd2\xb1\xa1`\x1f^Y\xc8\x9dg\xfa\xfd\x99 w\x9e\xe9\x0e\xc6\x05V}\xa6\xd3\x99\xa5\x99*M\xc5%\x81^\x0d^\x18\xb9\x85\xd7&\xa4S7\xf7\xdats\xea&Zj\x8c\xa9\xa1\x96:\xc7\xd4\x95\x96\x8a\xe1\xdd\xea%q\xb9\xe1\x91\xe2m(\xfc9!\xb7W\x08vk\x97\xbb\xe3`\x7fQ\x97\x8c\xbb\xacqw=\xae\xd5\x947\xca\x9e\x84K\xb5X\xee\xf1\xd01j\x96\xf7E\xbeHJ\"\xb3%\x01\x0f*N\\^_\xd8\xc8|A\xa8Z_\x88YV\x8d,\xbf\x90\xf0\x93\xd6\xec\x8ao\x0fw=\x08ZK\xe3=_\xa62\n|c\\9r\xcf6\xfd\xbc\xd8\x9d\x8b\"\xf4\xc1>\xa4n\xc6\xdd\xdbh\xd7~\\\x81P*)\x18/\xf7\xf1Z>\xea\xbc\x967\xac\\\x9b\xa6\xc5z\xa6\xc3\xea\xc1\xe9\xb4T\xb1\x1cVE\xb5\xca\x96j\xe2a\xd5\xe0\xfa[\xaa\x98\x0f\xab\xa2\x82\x8fFn\xa3\x8a\x81\x8235\x05\xf2AV\x0d\n\x89\xfd\xecu/\x95e\xbf|\xce5\xaeG\x88nF`\xb4%\x13}W\xb4arq\xaa\xf49F\xb4v\xbf%T\xe1\xd8\xf2\xd5\xce\x90Au\xf2\x0d;\xdc\xb9>\x1e\x82\xe8[\x97x^\xcdJ\xc8x0l\xf3f\xf0\x03$o<\x94i\x91I\xee\xd2I\xb6\xb9y\xe5]\x19\x07\xcf\x8d\xf2\x90\xd7\x16\xf4\xa8\xa6_?h\x02\xccr\xfb\xfaZ\xb45\xb4\x0d\x1a\xacIQ&\xdc\xef\x92PE\x92IA\x92\xc5\xe4\xf3\xd9\xd4u\xd6;\x81\xe3u\xe7\xd8e9\x9e<\x11\x02:s\x8eW,\xcf~\xcf\x85cF>\xd3\xcb$\xd2n\xb1z\xf4u\xfaUX\x18V\xad\xd5X~\xefDa\x9a\xde\x84\xd1'\xa7\x92\x1eb\xf8Y\xb8!\x8aZ\xcb\xef-\xaa\xc5ka\x07\xc7c(\xb4\x94\xb3\x8de$\x8e4\x06F\x92\x0f\xa2\x85\x9d\x1e+_\x8b\xc2\x97|$*\x08\xe4LZ\x8d}\xa0G}K>\xed\x1a{ie\xf5\x11\x1aT\\]\xdb\xa2X&\x1f=\x10\x89\xfat\xe9w\xc9\xe7Q\xbbjU>\x93Ooo\x9f\xffk{k\xd5N\x93OW\x87\x07\xd9b#.D\x12SRS\xee\n\xb6\x90\xb3 \xb9\xb9B\xc8\xd0\x9e\xdc \x1e$\x93ps\xf3\xaaa\x8d\x10\xf6D\xe5\xfd\xe6YQ\xcd\x03zt\xfd\xbf\x0e\xbd\x81\xd68<\x14\xe3\xd5hL=wU\x07\x89\xdf{f\xcdx\xbb\xa6\xb5\x89\xcc/\x84\x97E\x93<2\xe9;\xb2\x92\x0c\x91\xe0$\xbb\xc2s(S\xfc\xc2u\xd9\xb5Y\x84\x10y\xf5]\xa9F\xfe\xca\x83i\x91/\x00\x9d\x83\x85i\x9aG\xca\xcf\x0fY\x19NI+\xe1\"\xcdo\xb5#\x81\x91\xa3n\xe2\x16\xdc\xa7\x0c\x0d*w\x94\xa1\xe7C\xe2\xe6<~b\xc8\xdb\xea\xa7G\xf0h0x\xce4\x1f\x0c\xceA\xe34\xc8rq\"\x88\n\xcc\x94\x8biRX\x0f\xf9\x1c\xdc\xb3\x8b\xbdg\x97\xd6\xc5\x8e\xeeI\xb0j\x9b{6I\xae\x0d\xc1\x14\x98\xc2\x05\xc2>\x14\xc14\x91Z\xc1\x8c\x86\x13\xaf\xcaoT\xb07\x8c],z\xaf\xf2\xe9?a\xec\xf5\xd2\x98\x16E\x01\xbe\xff\xc2\xce\x15\x01\xeb\x81`G{\x05\x87\x83h=u#e\xee\x8b\x97\xdf{\xae3\xcd\x8bq\x18\xcd\x9dA\xa8\xa8O\xe3\xf5\xd9\xaeY\x10\xf1\xcc\xe2\x06r\xf7\xb5.)\x10\x82\x88W\xaa\x18\xd7\x1dL\x8c#R\xc3\xf8$+T\xcfL\x8d3\xdb\xbaC\xfe\x01\x9e6\\\xe5n4\x84\xban)\x9c\xc3r\x97\xb1D\xb0/\x0c\xc2\xcb\xc6\xd1\xf5T\x04\x8c\x94\x8c\x0dFO[\xa1I\x13\xe7\x0b6\xd0n\x08\x93\xc3J\x7f\xd3\x89\x1c\x11\x93KI#2\x04\x97\x92v\xebx\x9e\xcf\x0d\xe1\x1b\xa3\x82Z\x91\xc6\xe0\xc6\xb0\x19\x96%kgP\xc5\x9fI\xfbs\x1d\xa2G\x8fK\x0c%\xdb\xfen\xee\x96\xac[ld\xb5x\xf6\xab\x17\xcc\x86\xf2\x83b\xa9|\xdd\xef@u\x0di^\x15\x945\xf1@\x06\xe6\xc5I\x1b\x8b\xf3LY\x1c\x86\xceh\xa5\xec\x03#H\xc4=\x88\xf8\x8e\x16\xe8\xcd\xef\x19\xb7qS\x1a\xe5\x1fqA\xd3\xba\x0f\xca\x17\x0d\x18$ \x945 \xac\x0c\x80P\xb6\x00\x01},\x98\x16\x1d\x05\xd3\x86%G\x9bd\xc3J7A\xc1\xa0\x01\xa4\x82B\xa9\xafv*V;\xf5D\x0c\xbd\xe8~(\xa9\xc6\x12\xadp\xb9\x02I<5_\x01={f2\x18\xcb\\\x8b\xb0rwW\x17nrt\xb7\xfbB\xc7M\xdc\xa7D[R\xa9\xaa\xbd\xb8TS\x82\xd5\x87\x88\xbe\x05\x97&\xb8\x8e}\x98\xfb\xb0\xf6a\xe1\xc3\x0c\xf6`\xa9\xaa\x89\xdbhU);n}dD\xa5Y\x94w\x87\xc2\x06\xde\x11\x06\xd9Oa\x04:\xbae\xcf\x0d\x92\xe0\xcd \xb6q\xc6\xb3\x1e\xe3\x8e\x84r8i\x99v\xb0\x1a\x13wf\xd4\x19E\xba3\xe6\xa6\x072F\xef\x1b\x88\xe1\x0fp\xf3\x06n67\xcd\xd46\xab\xd1]\x08G\xacwn\xe8\xce\x91T\xbd\xb9\xf2\xf0\x8em.\xee\xd8\xee\\L\xf3P\x06\x81\xb7_\x0b\x1e\x0b\xb2\xba\x9a]4!\x1a\xcd\x7f\xcd}\\\xc3\x1eTq'\xde\xc0\x066\xb9F\x8e\xc3\xf5\xbc \xce3b\xb8\x14\x06\xb5\xb3\xb9\xbb\xf6\xe1\xce\x879\xb7\xc5\xe3w\xc4\x03\xba\xf6\xd5\x0b~<\x1f\x1f\xfc\x99\xc7j\xa5\xc1\xf9\xf8\xf2\xc3\xf9)\xec\x89\xdd\xf6\x8d\xe7\xb3\xd5'u\x11\x1c\x8d\xdf\x1e|xw \xfd\xfe\xa9ww^\xf5\xf8\x9d~)\xfcL\xbf\x12\xff_\xdf\xdb\xdf\xb4BR<\xb7\xdcm\xec\xe8\xdb<1\\\xf1\xdc\xdf\x94\xd1rH\x85Fm\x8aD1pD\xee\xc5\x0d\xb1<J\xe7k\xf2\x19\xe5gT0[_\xbe\x80\xc1\xe7\xdf \x14\xda\xb7\xbc\xc6\xbbu\x9b\xcbO\xb3o\x99\x82$YB\x930M\xfeN0<e\x88\xbd\x19p\x01\x8aZ%\xb4.\xf2K\x11.\x97\xdc\xf3/~\x9a\x11z\xd9\xfe\xeaJ\x97\xfd\xb7<\xe18K\xe8QHCvB\x1b\x92%\xc5\xb6\x87\xc7\xb2\xb1\xa0p\x8f\xc0\x03\x9a\x95\xc7\x99\xd2(\x9e\xbc\xad\xce\x1b\x94\xc3\xf5\x82f[\x06\xf3\x88l\xb1\x9b[U\xf6\xcehu\xa9j\x1c\xcc\x90q\x88\xf8\xf9&?^\xb9/\x85\x94>\x18\xddd\x83\x00\xad6a&\x1f\xec\x96\xd6+W\xa8\x869O_\xeaGCU\xcchc]}\xb5-\xdc\x0e\xa7}\xd9\x7f\xdep\x05\xa7\x07\x82\xc9\x8cxp\xf8\xda \xb39FQ\xde\xe2(\x10\xa6I\x16\xa6ig\xd7:;\x0eP\xb9&\xeb\xcf\x08r\xa4Q\x9a\x97b\x00\x9d\x05\x9aF\xe6\xdcu\xc5\xe0\n\x86\x0c\x0e\xba\xe6\xde<g`\x94\x85\xd9S\x05<GC \xb7\xb1\xbaCl4\x1a1\xcfl\xb8\x88S\xee\xe4\x0d^\xbf\xd4\x11\xab3\xbb\xbb\x14P\x10,\xedt\xd9\xd7\xbf\xe8&t\xc5%o\xb9\x19 \xf2\x8f\x85\x02\xea(p\xa9_\x95\xc8'BI\xe9\x9ba\x00}|\xd9\xfa\xb2\xb7gw\x92\xa0?\x86M\x9a\xc1&\xec\xde\x07\xce\xbf\x19\xec\x0c\x90%7\xcc\x10\xa0\xb2`8<\xc2\x9d\xa7\xafl\x18\xee\x9f\x0c\x8b\xc2\xc9\"\x03\xc7\xf6\xf0\xd4g%\x9bo\xaf\xe5\xb7\xc0q\"\xd0\xf0\n\x89\x1b\xd4\x90\x089\x1eR~\xaa\xfe\xcdV\x9e\x94\x7f<\nx&\xf7\x02\xc1\nA\xfe\xeb\xa1\x0f,\x9b^\xa1b\xda\x10\xdbH\xb1\xd8iq\x1d\xb3o\xa6\x16\xcd\xaa\x98\xcfZv\xebfR\xb1\x8c\nB\xb2\xbf\xd8\xe8\x1d\xfe\xf9W\xdb\xe7\x08\xa3\xc5[K\xf3\xcf\xf6\xd2\xb4H\xd1\x8c\xd4\xd2\xf6<\x99\xd2\x8e\xefa\xda\xf5uAh\xd8\xf1yF\xe8I\x1e'\xd3\x84\x14\x174\xa4d\x84\xae\x1bun\x84=\xdcA\xf2\x10DS\xa9\x96\x05\xbc\x8cy{J\x89\xd8\xed<\x89\xe6\xe8\xf7\x85\xa0$k\x84v\xe8{\x15\xf7\xff\xbcz\xdbm\xf8)\x92\x8f\x01+\xf2f\xad\xc4kA\xd2\x90\x92xX8 P\xd5!\x1b%\x85j\xe9\xb4\xc8e\xc0~\xee\xa2((\x8bH&\xec\x03 h.\xdfF\xd0\xc8\xde\xde\xbe&\xaa7\x9c\x91\xbf\xdc\xa3\x93\x0e\x16\xa8\xe6\x93\x04\xf8\x8eM\x0b(\x85M\xc8\x03\xe1\xff\xf9\"*\xf24}G\xa6th_~\xbdo_~\xd5\xfa\xf2\xab\xd2\x97_\xdb}\xb9\xcc\x97\xfdh\xa4zo\xdf\xe6\xfd\x0f\xf1R)\x8d\xa2\x9e\xear?\x198CWR\x0cQ\xf7u\x02\x1f\x8b\x8f\xd9G\xfaqz\xb5\xdd\xfc\xce\x8e\xc7\xed\x1f\xdc\x8d\xad\xad/i\x92}\xfa\x92\xe5eT$K\xfa\x85!\x80/\xe2wI\xefR\xe2\xd5\x95|\xdc\xfe\x83^O)\xda\x7f\xe5\xb9\x9d\xb7\x13\x00\xd2'+\xba\x18\\\x86\x11\xf9p~\x8c\x87h\x12\x94\xeb\x19\xdeA$YF\x8a\x9f.O\xde9B^@\x82*\x89\x1d\xe7m\xcc\x80\xbc\x80\x19\xa8\xd0R\xac`\xf5\xc6\xc2\xf3\xaa\x08\xf3&\xb6\x93\xeb\xc4\xc9\xda\xf1\xbcF\x13\xce\x0f\xe5z\xf6\x07\x8c\x9b\x06\x9b\xe0\xfc\xb0\x8d\xaf=\x94N\x86\x84\xea4)Jz8O\xd2\xf8\x0dd\xea\x9b\xc7/\xdeI\x16\xe3\xbb\xab~4\xec\xe9&\xf0*T\x16\x9b\xbe<\x88\xc2\xecCI\x8e\xceNL\x92\x1a\xc6\xe4u\x8e\xb69\x92\xb49vp\xd0\xef J\xea\x94/O\x9e\xf0k\xa0\x81\xeb\xcb}\xd5\x9e\xe6\xb1P\x15\xae\xdf\x83\x82,\xd30\"|\x1a\x88\x0f\x04\xaf\xabQ\xed\x99\"e\xe9\xfc\xc0\x9b\xa7\x93\x1d\xf4#\xb8\x92\x1fm\x98\xa3 \xc2\x83 \xc3\x99\x87\xf3\xb08\xccc\xe2\xbe\xf8\xfe\xe9\xcb\xd7\x1e[P\xf3*\xae+k\x11e\xc9\x8c9wy,\xcd V\xa8\x98}\xc4\xf2\x8b|-\x06\x85\xf7\xc0\x99\xb0\x06b\xe4\x8e\xbb\xe3\x9b\x08/\xc1\xc5j\xf0\xad-=g\xda\x1b\x9cM\x0d\x1d\xf7\xb6\x12\xea&\x89\xb6'\xce\xef\x9f\xfc\xf0\x87\xab^\xf5x\x0b\xb6\xbc_lN\xf4\xca\xb7\x89\xda|\xdd\xa7\x03\xd2\x06\"b7\x0f\xa4m\\\x1a\xae\x0bB>\x93\xa8\x15{\x1a@\xba\xd2\xb0\xd9)\x81d-\xb0\x11s\x03a\xdbu\x8b|V\xed\xab\x05\x90\xd8\x81\xfb\x83GM?\xae\xff\x93U\xbcNh\xe7u*\xcffA$\xa0\xf8\x80\xbaa\xa7+\n\xae\x01\xd6\xa3T\xc5\x88,\xe7\xc9\xdfV9}\xd3\xe1\x8b\x83=7\x05 ?\xd9\xb3\xf0\xd6^\x0di-\\,\x1f\xa5\xb1\xd7C\x1a\xfb\xb7\xcfO_>Fk/:\x14\x0d\xa1j-}\x94i|\xd1\xa3b\xc8\xdb\x9a}k[\x83t\xd8\xa2<\xa3I\xb6j\xdf\x0c\x81\x95\xc5\xe3|0j\xf6\xbb l2\xfcX\xaen\xf8\xb5\xb5\xbb\xf2!\xf4\xe4e>\xe3@\x19+\xbc\xa9#:s\xe5b\xaf\xca\xfa\xf7Y\xc9v\xe50\xd2C\x0c<\x92\xbaH\x83\xea2\xfa\xa67\x851\x0b\x852\xb5\xd9@\xaf\xcd\\\x96\"\xbf\xce@ [\x92\x96FId\xb8\xb5\x9d\xa2p\xa1\x99\xb6l\xa3\xabvx>\xf6\xd0|yp\x93\x17t\x04N\xc8\xfe\x1b\xd0\x1f\xcb\x92%\x0b\x0c\xe11\xce\xe2\x11\x94\xae\x13\xca\x04\x92\xc5\\\xff\xb9\x99\xd4]\xcb1%<\"H\xb3\xaeD&\xeb5\xd6\x1f\xba\xeb\xbd\xa0!\x1b\x89Zg\xc9\x92\xf4\xfax\xa2\xb1\xae\x1f\xd3U1\x02\xe7&]\xe9&\xed\"\xc3a\x98\xbdO\xc3\xbb\x118Q\x98-\xd3\xf0\xae3\xdb\xe5\xbc\xc8W\xb3y\x9d\x9b\xf2\x04K\xa1y\x98\xcd\x08\xcb\x8c?,\x99RT\x01w\"\x8c e\xce\x92/\x96y\x99T\x0b\xe6Du\x82uu\x94Bb\x1e\xd5b\x1dS\xa6\x14\xfc\xb0\x8cQ&\xa0\x96\\a\x9a\xadhF\xc9gzB\xb2\x15\x16\xc2\xb7\x05\xc9V\xb6\xecK\x9c\xf8|i\x9b\xf5\x15v{e\xe9\xa9\x12\x1ek\x04N|\x93v\xcc\xe1Q\x11\xceX\xa6\"\x9c\xd93\xf0\xd9ey\xac\xd3\xca\xb3QRT\x19)\xb1\x80\x16f\xfd\x9cP\x99\xf3sb\x1bG\x11\xce0\xc0\xa3\xc8\x99\xb2\xdf\xf6\xacg\xeb\xaa\xf5|\xdd\xd5\xb8\\w\x96\xb3c\xc1\x8f\x8a|\x89\xb9\xf2\xa5%\xc3\x8ao\xd7\n\x9ec\x91\xd0\x05\xd7\xe3\xc5\x92&\x84\xcd'\xe1\xbf,\xd9\xb2\xa8\xb8[R\x9eQ\xfe\xb6e\x8dE\xb6\xd8\x9a\xa5(r67\x84\xfd7gy\x9bG\xabr\x04\xce\x94\xfd7g9\xce\x96\x08x<\x02\x981\xcb\x9f\xc9\xddQ~\x9b\x8d\xc0\xf9D\xee\xe2\xfc\xd6\x82\xca\xfeL\xee\xde\x17\xa4,y\xbe%\xfbi\xcd\xf8a\xc9s\xad,\xab\xf0\x0e-\x93\x19\x0f2\x92f\xca\x8cs\xe9\xca|Bh\x18\xab\x05\x16\"\xc1^H\xc2\x0c\xcb\xdf\x013U\xe0\xb8\x118\x0b\xf6\xdb>\x07U\x108\x99\x95qW\x1dY\xcfp\xee1gn\x9b~\x9e\x91\xef\x03\x9e\xd3\xba\x11D\x988\x99\xd16\xbb\xef\xc3\x121\xdd\x92\xfd\xb7eY\x95<\xcb\xaa\xb4e\xe1G\x89\xfd\x1ca\x19\x92l&\xf2$\x99\x05\x19\xbd/\xf2\x99\x80\x9b\xa5\xf8i\xcex\x1eRRm\xcb\"\xa4\xa4kKr \xdb\x08\x9c\x12\x7fX2\x11\xf2 \xb7Y\x89?\xec\x99\xf80J\xfe\xcb\x96-\xe5\x91=\xab.\x962\xa5\xb3\x9f4LS\xde\x07\xfe\xcb\x92mU. b\xec\x92\xff2g\xbb$\x9f\xa9\xdc\xd1T\xfe\xb6dM\x16\xa4:\xf3h\xb2 ]\x87\xdde\xbe\x8a\xe6\x87a\x16\x116\xa5\x94\xbdE\xf8\xd6\x91\x9d\x1f0\x98\xd7\xde_\xf6U\xec\x17\xcci\xdf/\x98U\xeeX\xcc\xdb\xb1e\xf1\xda/Q\xa9>Z\xa5\xd4d_3\xcdX\xd1\xcfy\xbaZ\xd4P\xb7\xc6\xd7\xae\xf5\xfc%L(\x87\x96[\xfe\xcb\x92mNp*o\xd9\x7f\xcd\x04\xb4Y`\xcex(\x1e\x85\xa6\n\xa2w|\xe4\xc0\xa6\x90\x18\xb9\x8d8\x04^P\xa6ID\xdc\xa7^\x93\x1dX\xa3j\xdb?\xbe\xa2VE\x93\x94>'2\xd2Z\x1d\xa4\xb0}\x990 p\xad\xa9\xa2~\xf99:\x8f\xf9)\xcc\xe2\x94\\\xe6\xcbwdMRw\x1d\xcc\x1b \x9e\x0f\xeb\xa0]=\xec\xf5{ll\x8e\xa2$t\x9ca@\xcc\xbe\xae\x19\xdb{\xf2\xc4\x98\x1e\xd4\xd5\xb6\\\x01j\xb3X\xb6\x9b7\xb5.5\x88\xdc\x0dc?\xbe|\x01\xe3\x87\xa0\xaa\xdf\xed\x0e1\x97b\x81\xcb|\x80S\xd1\x86\xa4\x98\xfa\xd0\xed;O>b\x00=j}\x95\x16\xde\\D\"\x99\xcc\xaf`\x0f\x96\x9b\x9b>D\x13\xf6&\x82\xfcV\xaf\xed\xe5\xe6\x11 `\x0f\x92V\xc0\xc6#\xc20%\xc9\xa2\x84\x94\x13r\xd50f\xcb\x87\x08\xb3P\xcb\x9d\xed\x1c\xabu[\xa1\xc7\x99\\\x89X2+\x1e\xa7\xd8\x91{\x9d\xcb\x86Wht/v\xbd\x07\xfbfp\xa2E\xb8\xfcqu\xc3\xd6\x11?(\xb5\xf8\x12e\x08\xb3\x9d\xd4\xe5G\xfd7\xd5\xa8\xd4 \xaa}@%Gg'H~\\\x88\xf3\x96W\xe4TGqc\x02\xe4\xa1\x0c\x1b;\x9d}\x16\x01o\x95\xf6\xaa\xea\xeb:\xee\xd9cC\x0d\xc6\xc2\xbf\x1c\x9f\x1e\x9d\xfdr\xfd\xd3\xc1\xe9\xd1\xbb\xb1\x1c\x0bR\xd4r(x\x86p\xbe\xbb\x1e\x9d\x9b\xba\x92\xde\x16\xa3s\xef1\xbc\xb7\xa2dUEf\xc1}\x96\xf2\xd8\x17_\n\x01 \xf3\x04\x90`uI\xe6\x08\x15\xd7\xc1\x93\xd5\xecO\x92\xf5\xf5\xa8U\x81\xec\x10\x96G\x1a\x97u\xca\x87\"\x10\x1f\x85N\n\xbeck\x98\xc0\xba\x1d\x9b\xf7\xd6\xb0\xb6W>\xc4\x93\xd5\x15\xef.n\xc7\xbdVHy\xe8;.\xf4Z\xfb\x03\xd5\x80b\x867\xa8\x9f-\x85bK7\x1aK\xfd8\xfdhB\xcf\x90\x8e\x88\xc86<4\xe9\xfbpF\xfe\xf2k\xcfA\x86\xb7\x17\xfa\xad\x1e+\xdd\xe9Kz-\x9c\x86\x9a\n\xba\x0e\xa2\x19\xfcm\xd2\xe3\x92\xf7$\xaa\xd3\x06UQ\xa0k|$+W\x85\xc0`?\x87\xe9\x8a\x9c\xe4YB\xf3\x02 \xba\xdeq*\xae.\x90T\xc0K\xdcu`\x984\x97\xed\x80\x0d\xcc\xb41\xed:|\xd8$\xac\x82\x82L\x0bR\xce\x95~\x95\x96\xfb@\xd3R/\xf8\x18\x94\xd2\xe8\xebzZ\x87\xecR\x1fm?To_-\x06\x08\x83<\x904\xc5\xd4Ur\xa5\xd1P\xb4\xe6\x94k\xb4^\x17\xab\x94\x94\xd7\xd7\x0d\xdd\xf0\xeb(\x8c\xe6\x04\x13-\xd7\x8b\x85Bp\\_O\x93,\xc6\xdcv\xaa\xa5\xad\xf7W5-\xc8\x04~\x8d\xb7\xb5\xfb\x06\xa8\xd5\xb1`\xb3\xe0ds3\xbbB\x85\x01\xae*s\x0fO\x83\xbe6\x82(_,\x93\x944\x07a\xbaB'\xa2\xfb\x06\x96\x83M\xa1\xe3hT\x0cQ\xc6)\xecI\xddn\xda\x8e\x04\x84\x13\x98\xfc~<L\xe9\xc0\x82\xec\xa1\x95\xdf\x10\xe2\xc1\x0f\xdc'\x18\xe5\xd1\xf6\x0c>\xe3\xf5\x18\x07\xa8\x95\xa2\xae\xfe?\xd0\x07q\xaby[ OY\x92\xc7\xda\xe2\xae\xf3:\x86oD\xa9\xec\xc9\xd4)p\xd1!X\x86\x13!\x07G\xf9\xe0\xbe|\xd1Z\xe5#\xcd\x82if\x88M\xdd\x1a\xad\x0d\x1cB:\xd0\xf2\xa5\xa8a\x99o\x01\xa3\x11\x1a^\x12\xb1\xbe\xea>\xa3\x19Doq\xb5\x81B\xb5\x8c\x16V\xd1\xef\xc3\xa2$\x05\xb0\xe9C\xc3\xb2i\xbeB~\x1f6A7K\xd7\xf6Eq\x15L\xa5\xf1g\xebK\x98b$c\xfc\xff\xe5\xcb\x90]\xdf\x9c\x9d\x1b2\xcd\x0bb4\xf7k\xb9\xb1ZK\xcfx\xbd\x93\x94Hm\x9c\x8eI\xca\x1fs\x92\x82r\x89l|\xee\xc3\x8e\xc9\xf5!C+F\x13R\"\xd9K\x93C\xc4if4/\x0dS:\x82\xa4\x9e\xf2\xd6\xb6\xbb\xd7\n\x84SJ\x8a\xff=\x0b\xc0o~\xff\xa7-\x02\xc34\xf7@\x13F\x04\xa0M\x08\"/\xdb$\x18T[z'\xc10q8 \xc5cM\x02\xefA\x9f\xf2\x17\xcb\xd0\x0cJ\x8b\xae` \x8c\x00e\x06\xdc\xe3cs.\x86\x1dy\xf5Y\xd9\xd2\xa0\xe7\x87\xd9\xb0j4\xba\xa4\xda%fU!\xca\xce\x1e\xc3N8g]\x87E\x98\x853R\x8c \xc9\xd6a\x9a\xc4bg0\"\xc5\xb4'\xa0\x8d\xbd\xe9\x95:*=\x84\x13\xe6\xbe\xef:\xc5I\xd9Z(}\"\xdc\xeee\xf2\xfe\x17\xcc\xe5\xeec\xcc\xe5\x8cP\xde\xbb\x01jo\xc2\xcb\xc1\x9e\xdeB\x0d\xef\x15\xe1\xe9\xb6\xfa1!W\xda\x1e\xfd\xea\xdf\xdf\xf3{\xbf\xbb\x93\xce\xbd\xbb\xe6nC\nn1hq\xd6\x8e\x16\xc0\xc12/O\xc2\xcf\xed\xaf+\xf9\xb5\xfd\xa9\xc4OIy\x9c\xbd\x0boH\xda>x\x94\x8f^M\xc7\x9b\xf2\xa5,\xcf\x87l\x11\xd2hN\xe2\x8b(_\x92\xb2\x8e\x0dj\xfc\xbc\xb5\xe5\xb7*C>\x05{\x8bf\xf5x4)\x9d\x10\xa2\x14F\\\xed\xbe\xe1\xa3\x82\x1f 4z\x9ag\xfdz\xcd\x0fN7\x07\xa1\xca\xaf\xea\xecaq\xcf\xf3 \xdb\xdclCr\x15\x82\xfb\xf53\xe1\xdb\x11\xbd\x04\xb2\x9f[[V\xd2\x99\x0b{\xcc\xbc+\xea\x80\xb5\xbe\xb4u\xabP)\xb7$EP~J\x96\x97\xf9'\x92\xd9\xc3\xef\x80\xa2\x11\x0f\xfb\xdc\xc5\x19_l\xcb\xa4\xc3\x1e\xf7\x0cb\xfd\x9a\xc1\x16\x9ft\xbe\x06+}\xfeK\xff\xe1a\x15^\xdb\xa2`r)\xba\xeb\xfc\xdd\xf1\x8cq\xa5\\%\xb6r\xa7V\xaa\xd4w\xbd\xa8=B\x15\x02\x8f\"\xc1C]\xc7a\xc3\x17\x0d\xf6j\xa3\xa9\xf5\x0f\xd3\xb8m\xc8IL\xa1H\x9d\xc30\xfb=\x85(LSX\x10:\xcfc\xc830b\xd4\x96\xcb\x8d{\xcew+&\xa20S\xd8\xf5\x02)x\xd2no\xd0a\x87\x08\xe0\xe2\xe6M%\xf5^\x1f\xa4\x96\xc5H`\x1f\xb4\xaa\\\xf4:\xaf\xd8\xb1\xdd\x7f`}\x9d1 S\x14\xd5\x15jD8\xcdW\xb8\xc0\xb6y\x1b\xc1!\x8dd\xf2\x97\xedr\xedt\x19\xae\x9c\x87]+\x10\xe1\xc8\x18\xd3^\xdd\x9e\xa1\xe6\x8eJ\xd1?\xc7\xd9\xf4\xfeun\xfcs\xbak\x83\xe4<[\x93\x82\x82p\xfbKsX\x16\xc9\"\xa1\xc9\x9ap\xefON\xdf.\xd3\xd6\xb9\xe9\x0c\xec\xfb\x9d\xfb\xfa\xe5\xd0\xadpd\xd4w\xdd'\xb8\xf0\xf4\xf5B\xd7\x1f\x0dE\xfa\xae\xe7:\xc7\xe3\xeb\xf7\xe7g\x97gz\xd0\xd1U+jA\xe3s\xd9%\xc8\x02)\xcc\x12\x8e\x99\xdc\xdd\xef_x\xae\x93L\x8bpA\xf4\x86\xe4S\xe0\x05\xa0\xcdS+\x8f\xc2\x12\xa0I\x10#7\x97ix\x07{\xe0dyF\x1c\x1f\xa3R\xecx\x0d;\x17\xee\xa4\xb0,\"\x96\xed\xaf\xe1:\xe4VE#\xc7\xe7\xa4(\x0dP\xe3/\xa3\xbf$Y\x9c\xdfV\x08\xc3\x0b\xf2%\xc9\\\x1e*\xa0H(q\x9d\x1fx\xd1?T\xc2\xec\xb7{\x1c\xbf\xfe\xf0q[|r0?\x1a\xbc\xba\xc2\x95\x14 \xde\xbe\x81bk\xeb\x8d\x07\"<\x8b\x12oe\x92L\x8a+\xc3\x8d\xa4\x00\xcc\xd2\xd5\x0e\xc4\xaecE\xa0\x1eP\xa3\xb6Zi-#\x02\x16\xa2v\xe9.Kq\x8e\xcf\x8f\x17N\x91\xa0\x03t\x1f\x9a\x9f\x85\x93\xd3I\x88n,\xd1\xfe\x04=\x9fka\xd4\xa5\xe3h7\xfb\xff^D\xfa\x17O=\xd7\xf9D\xeeJs`\xdf\xdd\xdd\xfe83\x96\x8e\x17\x82\x86w\xf1\x07w(\xf9\xe0~>5\xd9$\x17\x13\x871\x11\x05\xd9\xfaky]\xce\xc3\x82\xc4\xd7\xd7\x8el\xd4\xfc\x0d\xef\xfb\x1f8\xa2\\\x8e(\xe7#\xfa\xc7\xd7\xbe\xf1\xd8\x10\xab\xa38\xd2\xf7\x9b\xd7\x90~R\xbe\x97 |6\xf5M\x04\x99O\xf3wy\x14\xa6\x84\x9f#\xbe<P|qf9\x92\xda\xf2\x87\xb9oT\xc1\xc1\x1cA}\xf75C\x91\xa8k\x9e\x17:\xa4pL\xfe\xd2\xe6&\x9daX\x8fq\x8e\xc7\xa2\xfc \xa7\xbb\x06\xd2q\x1b\xea\xe5\x06\x99\xe4\xb8\x02d\xe2\xfc\xf1\x8fU\x7f0)\x990dp\xf5P\x00{\xad\x9fC\xca\xc0\xe5\xfc^\x863\xd3\xd8+\x17\x9e\xa5 y;\xcf\x1e1\x92\xca\x03a#\xc3W\xd7\xbb7pJ;0\x1fB#\xfeT0\x1dZ\x97}\xc8x\x0c\x9c\xd8\xa9\x03\x18\x89O\xa7\xab4\xc5\xa0N-\x9f\xaeH\xbat\"p\x80.\x1f\x11\xd5\xfaQ\x83\x8e\x8d\xdd\xbb\xc2W\xf4\xb3W\xf1\x0b>\xe4\x9e'\xb0u\x82~\x07\xd1\xa1\xacsVG]B\xbb\xb2\x02\xcd\"-T\x18;\\\xc34%8be\xe9F\xc2\x12\x19\x1e\x00<f\xcf\x85\xbb/\xff/\xf0\xfc_\xe0\xe9\xa0\x1bv,\xf4\x82T\xb7\xbc\xefjV\x0c8\xc6Or\x1dFEF!u\xf5Ud\xfd%>8\xde5#8773\xd8\x84\xc2\xab\x18\x13F\xc4\xf7\x9dl\xd6\xbd\xf0\xd2\xe2\xea\xf7\xd9\xffx\xb6\xf7y\x0f\xa9\xf4\xe2\xe5C{\xfb\xa8\xa4\xd2\xee\xeeK/\x98\x9a\x899\x93\x07\x17\x13\x9e\xea\x1b\x87\xf9\xbe\x07\x95a6r$V3!='5A\xeeC\"\x03\x84\xa2\x03\xb6\xf6foz\xa25\xdd\xecH\x87\xc6\xcd\x8d~\xcf\xb9\xea\xf5\x80\xf3t\xd74\x03\x18{\xbdw-\x19#b\xcf\x04\n\xcem3X(\x03_\xf2\x18B\x82\xa7!\x0d\xdf\x11\xc6XI\xa0\x13L\x8c\xa5\xf9\xf2Eu\xd4\x9e\x19$a?\x86\xb1\x8cW\x04\n9ju\xcf\xc7=)g\x95\xec]}\xaa\xcb3\x11\xd5J\xa0\xd1*\x11e\x13\xe8\x8eVc\x1d\xbf\x81uy\xfa\xbdY\xd4\xf0\xbdM\xce\xd9\x07\xbe F\xefd\xc8\xbf5W|k\xfc\x9b\x03\x9b\x90\xa1\xbf\xdb8'e\xf6{\na\x14\x91%\x85\x82\xcc\xc8\xe7\x96\xd3[\x01\x11\x02\xa9~\xdb\xa6f[\x14\xa5\xc5\xfd\x9b\xd3x\xc6\xc3\x1el\x07\xdb\x9aH\xc9x\xe2:\xdb\xc1\xb6\x03\x13r\xe5jnu\xaa\xa3\xd6(\x80\xef=\xbe\xe9\xa4\xb8\xe2\xf6\xb8\xb0am\x03z\x8et\xd3\xfcn\xdc3\xe0\x11\xc5\x8d\x8c\xb4\xfd\x90\xec=L(\xb27F\xac\xda2Q\x16\xa2\xad\xd6 \xc9M\xa0\x9f\xefx\xc1\xf4\xa1k\x9b\x07\xfc\xcc\xe7\xec\xa9|\xe1\x81\xa1\xfe\xf1\x15\x83.\xd4\x19\xfe\xa1Gtq\xae\x91\xc4!xAs@\xdd\x1d\xd4\x97'\x90d\x1c\x93\xac0f\x95 c\x0b|\x1c\x06\xd3\xd65I\x1f\xac\xb7\x97DH\x8cf\x84*\xfc0\xef\xb6\xd9\x8d\x07\x0fXz\x7fT\xdf\xa1\xcd\xb5\xfd\xddFs\x90\xdf\xc1\x1fc\xc2\x05iI\x9e\xc19\x89VE\x99\xac\x89\x94\xb8\x92\xcf\x94dq\x92\xcdZ\xc5\xc2\x15\x9d\xe7\x05\xfc\x9c\x84\xd1\x9c\x94i\xb8\x86w9-\x17a\x96\xaf\xe1\x87T\xfe|\xf5\xfa\x8f\xb3E\x98\xa4A\x94/\xfe\xd0\xaa#M\"\x92\x95\x04N\x8e/\xb5oz\xd6\xcb9\xe6\x82w\xa2\x84{r|\xe9\xf5\x949\xcc\x97wE2\x9bSp#\x0f\x9e\xee\xec>\xdbz\xba\xb3\xfb\xca\xd8\xe5\x9e\xaa\xde\x93b\x91\x94\x18\x14,)aN\nrs\x07\xb3\"\xcc(\x89}\x98\x16\x84@>\x05\x06_3\xb6L9\x84\xd9\x1d,IQ\xe6\x19\xe474L\xb2$\x9bA\x08Q\xbe\xbc\x83|\xaaW\xcf\xce\x11(\xf3)\xbd\x0d\x0b\x02a\x16CX\x96y\x94\x84\x94\xc4\x95\x1e/Zf\xc04II .\x9d\x13p.D \xc7\xc36c\x12\xa6\x90d\xed\xca \xc8\x9cp\x9b\xd0y\xbeb(\x9d\x83M\x92g\xbe\xf0s\xcdz(?\xa7\xc9\"\x11\x0d\xb2\xe28\x8b%\xd0\\\xaf{U\x12\x1f\x07\xe5\xc3\"\x8f\x93)\xfbOp\x0e\x96\xab\x9b4)\xe7>\xc4 k\xe9fE\x89\x0f%K\xc4\x05\xf4\xd9(\xb7\xf3\x02J\x92\xa6\xac\x86\x84\x94\xc6\x89\xa9\xfb\x8eE\xf0\n\x80-\x06\x15\xd3\xcbz\x05\xb7\xf3|\xd1\x1cgR\xc2tUdI9'X&\xce\xa1\xcc}\xbd\xfarU\xdd+\xb0\xd2\xd3<M\xf3[6\x0fQ\x9e\xc5\xdc\xfc}4\x000\xc3\x9b|Mp\x1a8\xb8e9M\"\xbe\x8e\xb8\xb2\xcb\x1az\xc4\xa7r\x1e\xa6)\xdc\x10\xe9b<f\xc8(\xd4\x1d\x99~WML\x01\xe8\xfe\"\xcch\x12\xa6\xc0\x10'\xeb\x1b\x839u\xd4A__\x7f\x1a\xc3\xc5\xd9\xdb\xcb_\x0e\xce\xc7p|\x01\xef\xcf\xcf~>>\x1a\x1f\x81sp\x01\xc7\x17\x8e\x0f\xbf\x1c_\xfet\xf6\xe1\x12~98??8\xbd\xfc\x15\xce\xde\xc2\xc1\xe9\xaf\xf0\xe7\xe3\xd3#\x1f\xc6\x7fy\x7f>\xbe\xb8\x80\xb3s\xbd\xe6\xe3\x93\xf7\xef\x8e\xc7G>\x1c\x9f\x1e\xbe\xfbpt|\xfa'\xf8\xf1\xc3%\x9c\x9e]\xc2\xbb\xe3\x93\xe3\xcb\xf1\x11\\\x9ea\xfb\xa2\xe6\xe3\xf1\x05\xab\xfbd|~\xf8\xd3\xc1\xe9\xe5\xc1\x8f\xc7\xef\x8e/\x7f\xf5\xe1\xed\xf1\xe5\xe9\xf8\xe2B\xaf\xff\xed\xd99\x1c\xc0\xfb\x83\xf3\xcb\xe3\xc3\x0f\xef\x0e\xce\xe1\xfd\x87\xf3\xf7g\x17c88=\x82\xd3\xb3\xd3\xe3\xd3\xb7\xe7\xc7\xa7\x7f\x1a\x9f\x8cO/\x038>\x85\xd33\x18\xff<>\xbd\x84\x8b\x9f\x0e\xde\xbd\xc3\x96\x0f>\\\xfetvn\xea\xfd\xe1\xd9\xfb_\xcf\x8f\xff\xf4\xd3%\xfct\xf6\xeeh|~\x01?\x8e\xe1\xdd\xf1\xc1\x8f\xef\xc6\xbc\xe5\xd3_\xe1\xf0\xdd\xc1\xf1\x89\x0fG\x07'\x07\x7fb}?\x87\xb3\xcb\x9f\xc6\xe7\x98M\xf4\xfd\x97\x9f\xc6,\xa957\xa7pp\n\x07\x87\x97\xc7g\xa7l\xcc\x87g\xa7\x97\xe7\x07\x87\x97>\\\x9e\x9d_V5\xfdr|1\xf6\xe1\xe0\xfc\xf8\x82\xcd\xde\xdb\xf3\xb3\x13\x1f\xd8R\x9c\xbdeY\x8eO\xdb\x9d>=\x1d\xf3J\xd9\xaa5\x17\xf7\xec\x1c\xdf?\\\x8c\xeb\x9e\x1e\x8d\x0f\xde\x1d\x9f\xfe\xe9\x82uH\xcd\xacC\xcdv\xe3]\x9e%`!\xf7\xa5\xf4\x02\x92\x8c\xc1g\xc4\xe3\xfc\x8a\xf3\xb5J9\x12\x97$\x8d\xc4s2\x1b\x7fn:\xf1S\xe2oAS\xc7\xdd\xd88\xea\x874Z\xb6q\x10R&AE\x04\xaa}\xf9\xab\x0e\xca\x00#dI\xa8\x12\xa6\xc1XU\xa5x\xc26<\x1a\xd0\x19\xbc\x92\xf7w\x95M\x89\xa7\xb2U,\xc1E%\xa4\xcbdA\x1a\xd2.k%|\n\x1b\xd5\xf0$\xa3ZVK\x17\xebCF>/I\xc4N\x992\xa1+\xe1\x83e\xd0\x8a\xe4VI\x97\x14\xd3\\_#o|}\xedT\xf7PUh\x99\x96\xb0\xab9ak\xe1\x94\xcbH%\xda\x00\xc1\x10\xe0h\x17\xad\xccd\xd4\xfa:\xd0G\x1d g\xe7\xaa\xd3\x96\xc6R\xefS\xaf%\xab\x9c\xec\x18\xae\x14\xe5M,7\x9e\xec\xce+*\xe4jz\xb5N\x1aZ$\xf3\xeb\xf3\xaa\xbc\x0f\xbb\x06\x9d=k\x14M\xc3\x04\xa0\xf9]%\xe0\xc4\xb7\xa6~\xe0\nidA\xb2~\"w\xa5\xbb24iu\xa1\x0f\nc\x84\x12\x9f\x90\xfb\xa2G\xe1I\xee\xa2gz\x1e\x19$T\xc1\xc2\xd0S\xd2\xe8\xa9\x8c\x9c\xeb\x86\x93\xb2\xba\xf54h6\xaay*\x90%f\xeb\x06\xf5Y\x0b\xa5\xea\xc9\xd0x\x8cm\x03\ntN\xd5\xdd\n\xa8\x8b\xa2\x85G\xaf\xee\x83\xd9~i\x8e\x0c\xa35\xe5\xe2\xba\x97\x8bw\xb3F\xa2\x90\xf9\x8a\xb7\x04-\xd6\xd5\x94\xb6\xf7-\xf5\xf9\xea\xf9\x90[s|E\xdd\x96\x11?\x06\x9a\x13\\\x88O\x86\xd5\xa3\x8d\xd5\xa3m8\xa3ze\xbc\xd7\xbc\xc2f:\x0f,l\xec\xa0!d%\x1bMhA1\xcd\x80\x94\xcf=\x11Oq\x10\xbf|\x1f\xa5K\x9b\x00\xbb\xbd\xf4D\x89\x92\xc4\xd6\xd6b\x94\x88\xcc\xba\x01u\xb4\xd4{qZ'W(\x11n\xe7\xcf\xb8>\xba\x1et\x9a=\xea\x8e\xa7\x86\x1do\x0d7,Q6\x9d\xe4\x96\xbdc\x0c\xb9\x94\x08\xffqO\x9e\x98\xa6\x85\xf1\xf7[\xbb\\\xc6W[\x08M\xf2+6\xbcb\x92_a<\xf7\xc3\xa4\x88ViX\\90\x92\xa9\x04\xb3\xf9\x90 \x97\x0e;\x08P\xe2\xa3!\x00\xaa)\n\xac!\xf6#\xe56ih\x9f(\xcc\xd3D\xda\xd0\xf2\x0bR\x96\xe1LV!\xdf\xf6\xea/C+*i\x18}\x12\xd5\xf0\xdf{2\xd5P\x85\x14\xc57w\x04\x03\xf0 \x06\x922\xde\x06\xe1m\xca\xe4\xad\xf8\xc2-?\x84\x1f_\xe0~\xd5\xf2\xecn\x91\xafJ\xc7\x83Mpp\xfe\x1f\xacP\xf8\xfd+\xf35\xe3\x0bc\xc8#\x96n\xf2|\xcc\xd2\xf5k\x80\x95H\x7f\xed\x99\xcc'K\xbb\xd8\xc9\xa4\x10\x8d\xda8J\x84\xbb\x1d\xae\xf0j\xd0\x9d\xe2zS\xdc\x19? \x0b\xd7{\x03\x9b\x9b\x14~\x80\xcc\xa8S,g\xa2\x1do \xa4\xec\xbc$\xd4-0\xfeW1\xd9\xbd\xb2\xe9\xed\xd6\xbf\x14\xa5'\xde\x07\x86\xac\xfdF\xb2P\x8f\xc2`\x1ceS\x15\x9em\x94f\xe2<d\xf8-l&\x96\x98s\xe5\xdf\xdf/m\xbd\xf6/\x9eyn\xe6>{\xe9\xf9\xe0\x9c\x84K\x9b\x10x\x90V\xbc\"Un\x85\xd0\x13\x10e\xf1\xea\xf8\xc2\"\xd2|\xd1\x12\x81\n\x88\xda\xd5E\xf4\xa5H\x7fi\x84\xb4\xd4\x0ei\xc2< \x0ei\xc8\xad\x140\x1a\x99\xd1\xca\xaaL\xfe\xce\xf1\x05\xfbaX\xf4\xd4\xb0\xe8\xb9\xdfH\xae\x16=i\xa6\xf3E\x0f\x9b\x89|\xd1W\xcdD\xbe\xe8es\xd1S\xe3\xf2\xa8C\x1e\xacN\xdb\xf0\x9b\xb2\xb5\xcb\x1d\xa7\xd0\xca\x9c\x98\xeb\xdcK\x1f$\x9b\x9b\x19\xfc\x00\xc5\x1b\x0f\xc8$\x87M\xc0\xf81\xed\xb05\x92o\xd3\xe6l08\xbdx\xaa#\x1c\xa1\xf2\xfcZ\x07\x1bcL6\xa3\xaaS\x0b\xda\xba\x84\xc4m\x18\x0c\xd5\xe0\x8a]\xec\xb9\x8a\xb1\x90,@B\\Q\x1e(\xdc\x90\x1b\xb6[E\xc7Z\x8dj\x10\xb8V\xbe\xaf\xba\x03\x1dF\x83\x9a\xf7\xf4\xea\xbe\x8b`>%\x9e\xebkcZ\x83\xf6t'\x9a\x97\x8c\xf6\x14'\x03\x16\x0eq\xd37\xaa\xb6\x08u\xc7A\xab\x99\xb3\xaf<\xe8L\x15E\x15\xd56\xb8\x87\x92\x8dU;\xbd\xd9\x9ey)\x06!\xed\x0e\x1b\xb1z\x95\x9e\xe9\xab\x015\xf2m!e\x90\xbaB\x16\x8e\x08\xffl\xd0 \xcbcry\xb7D\xd2\xc9d\xfe\x88\xf7Af:\x92;\xa4\xc7zH\xa3\x1e\x83\xe9%\xdfW8\xbb\xd5\xd4\xec\xf1\xab&\x19t^\xb0&&\xbf\xe0l\x1e\xdd\x15\xec\xc3*HJ-7\xb2\xd4\x9a\xde{{\xfeAgPv\x9f=\xf7\xaa\xcb\xd5!z7\xafwv^\xee\xbe~\xfd\xf4\xfb\xe7/\x9f\xef\xbc~\xbd\xfbP6\xc5\xe4\xbf\x1d\xe7\xf1\x0f\x8c(\xc7_\xff\x81\xbe\xf1\xb93\x02\x02?\xec)\xa2\xb0\xfek\xb1{\xf5\xa6\x1b1I\xdc\xde\xba\xd4\xed\xe9\xceC\x80\xfb\xe9K\x9d\xc0\x04\x01\xdd\xdf\x08\xc1l\x13\xe4\x8f\x00\xc1\xd5NH\x1a\x10\x8cU\xa3\xb9cDJ\x83\xc5\x9env\xd0\xca\x00\x9d\xf7\xe0 \xe5]u\xeb\x05\xf9\xdb*)H\xe3\xc5uV4I\x1d/`\x03\xb3xb\x01U\xae\xfc\xe5\x8b\xdc\x8e7 \xdeD6^du\xc6zz\x02[}u=\xfbf\\=`3v(W\x99\xaf\xd6[FT\x0c\x04\xb6?\x06_>N\xdc\xfd\xd1\xe4\xffL>^]}\xf7\xc5\x9d8\xbf\xbf\xf2\xdc\xfd\x91\xbb\xbf\xf1q\xd7\x9b\xfc\x9f\x8f\x1f\xaf\xbe|\xfc\x18x\xdf\xed\x7f\xdc\xf5>\xea\x81Yx\x00\x98\x8f\xb7\xdf\xfd{oH\x07\x8b!S\xc3\x8eI\x17\x8bV\x92t\x01\x98F\"k\xc3\xad\xb0\xc7\xc6\x1ed\x08\xd4%R1JB\x158B\xa64\xdc\x0em\xa0F .?\x8f\x05\xc2\xa3\xc8n$\xea\x9b,A\xf9\xf6H\xa4\xd3<\xf7^\x86\x0e\xf7BD\xf7\xa4\x1f\xcd\xf2\"A\x99pm\xd3\xcaE\x17\xf5\xc1\xb9\xbe&\xe5I\x1e\xafR\xe2\xe8\x1a B\x1bAU\x08AC\x9b\x05Y\xe4\xc9\xdfI|\x11.\x96)y[\xe4\x8b\x8bhN\x16\xa1\x90*\xf0\x8f\x87\xa8,\xf8\x97\x93w\xe3\xcf\x98\x8d\xb3\x10\xf8\xf3/\x8bT+\x94dSR(\xefe\xbbfq\x00\x824\x81i\xd4\xac(z(\xec\x98\x89\x1b\x0b\xdd\xcc}\xf1\xfd\x0b\xcf\xb0\x0f\xf0\xd3\x8b\xd7\x9e\x91\x97\n\xed\xeb\x83\xa0\x10\xd4\xf3(T\xf5\xdaXKFF\xd0\xddZ\xfd\xae\xfdk-|\x19\xb6+\xe1\xa2\x99\xe1qm\xa5,\xa7\x95\xc7\x10F\x8bg\xbd&\x8b0I\xef\xd1\xc2\xaa$\xc5\x1f _\x8c \xca\x17\x83\xda\x12\xfdb,(\xd9\xa2\xc9\x828\xc3[t\xe5\xf5\x95\x17\xd0\xfc\xf8\xe2L\xa8\x84\x19\xf8\x02\x83<\x05\xd1\xc4\xf0\xb6\x06\xc5u\xe3\x95^O\xd3<\xa4\x8f\\u\x92Q2{\xf4\x0e\x0bT\xd8G\xff\x83\xb2\xca*\xf6\x94\xb88\x10 \x8dW\xad\xf2\xa5\xdd~\x13\xdc\xdb\xbcLw'\xa4\xcc\x82mt\x17\x9d\x0frr%\x99\xdeyF\xff3 \xc4f4h3a\xf2AO6\xc14/\x16\xa1\x812\x02\x81\x12V\x13\xd4O\xbcv`\x13\xb8\xa9\xcc\xca\x18\xd5S\xc2%\xf6.)\xdf\xae\xb2\xc8s\x13\xc6c%\\O\xda\xf9\x90}\xca\xf2\xdb\x0c\xb5 \x85K\x1b\xec]\xd7\xd4\xa46\\Xa%\xcb\x0d\x93<2[7\x89\x7f\x00\xa4\xa3\x15U\xd6\xfa\x8ep\xf7\n\xf6\x9b\xaf\xa3\x96)\xa8|r\xd3RP\xcbR \x99\xd9\xb1\x14<t\x91\xc0\x1f\xe6,\xe8\xd6U2\xc6 1\x10\x93 \xe6+\x0f\xc2\x98k\xd2\x84\xe9\xfb\x9e\xfc\x11\x8f\x99D\xc9\xc2\x92\x01\x15\x1b\x03\xa12sN\xc2\xf8,K\xef\xccY\x97j\xd6_\x8a\x84\x12\x96\xd7|\xc1\xabN\xbf\xd7\x84\x9d\x98\x90ez\xc7\xf0\xd9\xf2\xcf\xe4\xcesC\x1f\x9c\x7f\xff\xf7\x82L\x1d\xff\x1e[\xb5-\xbe\x17\x87\x94\xbc\xd2p\xfe\xcd\xf1\x90\xabj\xefU\x8b\x16\xc0\x86\xe1\x0eC~[y\x0d~\xdaLcw\xc4\xcf\x03\xd9F$g\xc3N\xa6cCaQ\x84w\xedS\x06Z\xb8\x06D\xcd\n\x83\xb3\x07\x89m\xfa\xd8\xb6\x89M\x90\xbd\xb2@6\x08\x8f\xdf\xa6;/P\xa5\x8akF)\xc6\x1e\xc4\x935F\x9bc\xff\x83\x98,\x0b\x12\xa1\xca\xdd\x97/\xcdO\x85\x805\xa4K\xa7\xad\xcf\xb7\x12\xbe\xf0\xfb\x12\xb5T\xe7,\xc3\x1e\x10\x97\xe5`4\xa1E\x9b\x04'\x9a\x1b\xaf\xa4\x1e\xcc\xb5\xed\xb2\xdb1\x9a\xca\x8bHj\x06\x05PG\xbc0\xcdc\xea\xf90\xc3N.|t\xf5z\xc7\x9d\x9f\xdc\xc1\x0f\xf0\xfc\x0d\xdcmnz0\x9f8\xcd.1\\y\xc7\x8663wK\x00\xfd\xbc\x0d\xca64-\xe0\xa7\x12\xb34\xaf2\xa3 \xcc\xee\xce\xa6\x0cy\x8b\x9f\xc1\"\\\xf6x,\x84\x86L\xc0\xd7=\xb3\x02\xee\xac\x96\xea@\x14\xe4\x19\x91M\xe1\xcfGljB\xdc\x88}ex\x9c\x06$[-P I\x9e\xd8\xea\xef\x91X\xaa\x8c\x1d\x87\x18F\x9cu\xcfsy1o\xb2s\x857vIJ\x1c\x1eG\x13\xf6\xa1\xe4w\xff\x1c\x975z\xa0\x9d\x19\x0c\xcb\xba:\x89?H\xecH\x82\x92\xe7\x7f\xf2\x84\xcb\x8fe\x02\x1a\xe0\xd7\xa7\x01\xff\x8e'\x8c\x82\x86X&\xad_V\x0ed\xd0\x81\xca\xaf\x01\xfeigjr\x9f3\x95\xcb\x92\xedgjC\x92\xdcy`&\xf7<0\x93\xbe\x033\xe9>\xca\x97\"P\xe1\x8035V\xb3Vg\xaa9\xef\x1c[\x16\x00m\xce\xb26\x844\x93\xcf\xa2\xe3\xdb\x0c\xc9\xb0\xcf\x0bC\xc0f\xf60\x1c6\xc3;j\xf3\xf7\x1b\xfc\xbe,\xc841x\xb4b\xcfuU\x03F\xab5g\xba\xe5S\x9b\xad\x16\xe6\xef\xe3\x8aG\xb6\x1c\xe0a\xc7\x01\xceN\x90\xd4C\xa8\xfa\x97\x9c\xe2a\xdf)\xee\xb2Y\xbd\xc3K\xff,\xa7\xe1\x8cM\x8e\xc3\xcd\xa5\xdc\x1b\xd8\x87\x1bF\x96\x8f\xd0>\x16u\x01\xee|\xb8\xe6\xde\xd2\x17\x13\xf6\xdd\xf9\xbcH\xb3r\xc4\xce\x8e\x1b\x96 _\xd1_\xc1\xb5\x85\xc0Q\x0f\x05\xc48\x91\x0d\xf9\xb2\xdc\x11\x83\x07\xd8\x03\xfe\xff\xcb\x17\x98qK\x10\x9f\xa7HU\x0d\xe5\x85\xe5\xe1P\x023\x11\xa9>\xae\x88\xbf\xf5$\x93nn\x9b'\x04\x9e\x0d\xd3\x81ns\xe5\x13\xc9\x1d\xc8\xfd\xb6\xb2\xca\x85\xdf^v\"\xe4V\x9d\xa6\xd6\xf94g\xad\xcf\xef\xdd\xba<V\xee\xdd\xba\x9c\x06\x91\xf3\xca\x87\x05\xa2\xd6\xaa\n{\xab\xd7!\xa5\xc5\x08\x16\x96\xca}X\x9b\xa1\x91a\xf6\xcf\x1d\nxb\x81\x0c\xab\xe2~\xe3\xb2|\x1e4+>|\xb6\xac\x8b\xfb\x8d\x0bs\xaf\xf6E\xaeV\xa6\x01\xe4\xb6U;\x91M\xfd\x85\x99\xdc\xee!\xa7\x0f\x199\xad\xec\x19\xb4$\x95\x1b\xf0\xc2N\x9d\xb2\xbe]\xe8q\n\x0e9\xde\xd8\xb8\x98\x1c*\x84\xf7\x97/\xb0T?\xd4$7#\xc6-\xd3\xd5h\x87\x95\xe2H\xa2\xfa){(\xde\x03\x06\xb3h\xa9\xd2\xb5l\xf2a\x03\xff\xd4R\xbc\xc3\xba\x90Jc\x9d\xad\xde&;Wv\x96E}\x0ed\xff:\x0fm\xfd9\x93\xa5\x04D\xd91\xbd|\x16\x93j\xd4\x12\x1d\x1e^UG\x16\x92M\x07l\x04\x07\xd04\xb5\x9dN\x0e\x91\xef\xc1\xff\xcdOg,\xfd\x8c%~b\x7fJ\x9c\x8b\xee\x85\xf9\xdaw\x80\xc9\xa7\xd9\xd9=hw\xbe\xe1\xf3H\x9dA\x8d\x18\x94\x03p\x1byx\xba\x05\xce\xd5\x87\xad\xfa{d\x99.\x86\x15h\x82\xc7{Tw\xe5;\x05\xd1\xa8pa\xf0^\xa2[\x8e\x04\xde\xf7L[\x17j\x94\xcc\xa4h\xa8\x0fQ7\xa9\xcd\x118\x07\xd9\x1d\x9d\xa3\x0dT\x98\xc1\x0dAc7\x0bU\x80\xe1Q\x86\x9e\x08zC\xa5\x8doeH\xee\x11\xcf\x99\x018R\xcc\xdc\xb8 \xffSv\xd4W,\x15&\xcd\xd9\xf9\xdbB\xff\xb7lQo9WV\xa2]\xb8Xa\xc6\xe1M\xcc}\xb7\xf6\xfb\xab\x0fcV\xd1X\xef\xfaW\xe3=\xc8\xd4x\x89'\x05\x8e\x11\xff\xda\x84R\x86\x0d\xb3\x86\x9c+\x97x\xc3s3\x93\x19lL\xa24\x94\x81{M~\x0b\x92,\xc6\xc0*\xceG\xaa\x85c\xd3\xaf\xe1\x00\xcda;.\xa5X\x7f\x92\xba?\xd3\xbe\x1b.-\x7f\xda\xaf&Q\xcd][t\xcf\xd5\xf0\xc8\x9aq\x87\x95V\x9ex\x15\x87\x05O[\x84\x9f\xabxrU\xc6Fb\x85\x1b\x95 hw\xc1`\xd7$\x85\"2OCl\xd8YY~?\x8ds\xd5\xd8\xa0\xbb\xe2\xc4Z\xb1\xeaz\xc5\xb0\xd2\x0dGY>d\x01\x06W\x19/\x12\xca\xdd\xdcc\x9a\x12\xac\xa3\x9ayy\xbb\xd8\xf8\xaaMz\x9dG\xac\xfeI\xf3\xfb\xaeV\xbe$z\x0e\xbb\xd4\x03\xa9&\xe5\x06\x9b*\xc6(D\x06\xa8\x10\xbe\xebL\x1e\x152X\xacJ\xca\xd0g\x08<\x1e\xf2\x9a\x88[)\x8b\x1b\x05#\\\x11\x0eo\xf5\xcc6GD\x16 \xed\xb7\x9f\xe7\xfe\x8f|X\xf9P\xfa`\xf0\xc4\xac\x83\xb9\xabm\x03\x0c!'\"\xe5\n+\x1c$\xc4\xd4l\x01~F\x05'\xb7\x9d\xce\xd5\xd2\xda\xe9\xd2\xd0\xceDo\xb1\x9e\xa1\x8b#U^\xe3\xa9\xc6oc^5\x9f|\x03\xcd\xc3F\x1f eZ\xbe.\xbf\xff\x90E\xe1j6\xa7>\xac\xb2rI\xa2d\x9a\x90\xb8\x1a\x1bv-\x00\xf7\xf7\xb0\x89\x0e\xa2\x1d\xcf\xe4.\x84\xb7\x17\x05\"j5\xa7\xde\xa3&\xdak\xcdq\x82^\xa2\xd4\x19\x98\x90+\xbb\x92\x05\xd7\xc2\xc8<\x0f\xca\xdb\x04UXt9\x97i\xca\xa2\xb0$\xb0k\x8e\xf4/\\\xb0\xa2[t3\xd5\x82>\xa4\xdb\x9f\xb0\xd2\xa7\xbd\x95\xfa\xcdu\xba\x7f\x13\xcf\xee\xd9\x84\xfa\xf6\xf4\x9e\x0d\xca\x9b\x7fc\x99UE\xd4\xf7[\xe1\xb1\xfd\x18.\x97\xe9\x9d\xe8\xe0J\xd7{\xad\x84\xf4\xb9k\n\\\x83,\xd4\xfd\x1a\xc4C/\xc5\xeb-n\xda\xe2y\x95^t\xc9C4r\xc7\xe5Pnnz\x90N\xca+\xad\x8bF\xfc\xa3j\x954\xb1L\x18\xc7J\xcc\xd0N\xe5!\xb6\xe3\xc26$oX\xfc\xce\xa4\xb2\xda\x1aYV\xa7^\x17\x96\xecAU\x0d<\x93\x91[5\x02)~cx\xd3u\x94/\x0e\xfa\xff(\\\x1a\xc8.y(\x90\xaf:8\x02\xaaU<!W\xb0\xaf!;\xb6\xa5Y\xb9f\x924\xb6b\x95h\x15\xec\xc1DK\xf2\x81^\x193R\xdf\xd4\x98\x8eVYs\xb7a\x91\x89\xf8J!7\x9ck\x1d-\xe8(\xcexl\x8e\x0c\x07\x11\xd75F\x9f\xacUt\x83\xba\xb9J\xec\xce\xef\x05,\xbd\xe1\xce\xf5\xa3<+\xf3\x94p\xe4\xef:n\x96\xc7\xc4\x03\x96\x05uh\x96yY&7)\x81\x06\x99\xc0\x88\xbf\xe2\x0eR\x12~\x82\x98P4W\x0e\xe0?bH\xab^\x87q\xcc\xd2>\x94\x04\x08/\xa5\x9f\xf6\xae\x074\x87$\x8b\n\xc2\x90\x0d\xfa\xb7\x08\x9c\xd6\x92J\xe4\xea\x9b\xe9/\xd9\x7fZ\x84\x11\x1e\x82\x8d\x04\x0cL\xd7u^\xe7h<d\xdeZz\xce\xa87\xf6\xca#\xed,\xc9+\xb0#\xa8\xf1A\xa1+M\x87\x0d\xce\\\x811\xda\xe5\x18X7s\xf4X\xcc\xb6f&\x16\x9d6\xd0O\x85\xcdt\x13\x01\xd3v\xcf\xeb\x1dX\x87\xbc\xe2\xd3\x91\xf7\xccu\xb3g}s).\x94\x12N(\xfdS0\x18V\xa3\xe3/}\xf3z*\xa2k\x97G\xdco\"$\xaa\x13@\xc4\xf1`+*\x0dn\x0b7S\xd0\x1a\x06\\\xabg\x95e\xaa\x9cd\xb7q\x91\x8aI\xb5\x19m\"\xd3\xe6G\x8eOu\xc6\xb3y\x16\x1a@\xaa:\x0d\xc37\xb0\xda\xdab\x18\xc7\x10-\x10$\x0f\x8bqI\xe5(\xd9[=.6\xcaF\x82\x18h\xc7U \xec\xe9\x0b\xaf>\xe6\x00\x1b`\x15\xb9&<\xfa\x8du5\xd9\xc3\x03\x88d\x12\x83\xee\x83[\xfd\xdec\x8c\x8dyU\xd0\x08[F\xd8J8M\xf0\xad\xeb\xd4\xbf\x13\xfb\xb7\xdaA\x9a\x0e\xe3\xad\xd6F\x07\x81\xad\xed\xd1\xb3\x156:\xc6\\\x15\xe5\x9ci\xeb\x8ax_g\xf4\xd1\x87\x98~\xe6>y\xd2\xb9/\xda]2\xb7f\x05t\x8a\x0e\xc8\x1a#\xd6\x97G8\x02\x90K\xd8\x9eh\xa3\x0d\xb7J+\x19\x8a\xe8\x8dh\xf0#cC\xaa\x0b\x0eF\x9e\xa6\xb0\xf04\x96\x93!\xb3\xa1\x03\x83\xc6\x04N\xd0\x9bjo\xbc\xb1W:\xa9\xf6\xcc\x16\xb4\xf8\x0e1\x13]\xcbh\x03\xeat\x10,\x9b\xc8\xd26\x8d\xc4\xdd\xf1\xea\xdbx\xbfE\xfc\x19(?I\xe3\xc3H\x8b\x16e\xea\xeba\xbe\xca\xba\x05\x02:\xbboS\xae\xa0\xed\x85m\xc3YRy\x94\x14\xd3`q\xa0R\x87+\x96\x16\x9c\xfd\xf8F\xe3F\xec#4\x1c\xe6\x95\xbaJ\xa3T\xbfI\x80n\x0cD5\x0f4\x99\xfbl\xe7{\xcf\x0b.hA\xc2\x85\xa0H\x82s\x12\xc6\"\x02\x1b\xbe\xffR$T\xbcg\xee\xee\xeb\xefQ\x80y\xb4Z\xa6\xe437\x80\xe3)\x97E\x98\x95\xd3\xbcX\xf0\x8aww0\xf5}X\x96\x97\xf3\"_\xcd\xe6<\xf3\x8b\xe7\x83LMz\x1d\x01\xf28_&T,\xdc9>\xdf\xf1l\xf4\x9fA\xd7\x1e481II\x12\xc6|\xa1|\x84\x07\xaa\xe0\xa7PF\x8b\xbbf\xd24\xc9\x92f\xc0E\xdb9\xbd\xd19\x07\xfa#-\x0f\x08o\xd4~\xb6\x93F\xaf\xec\xf9\x04R*\x8c\xe6\xfb\xea\xb3\x16^d\nd\xe0o\xc2\xc8 \x82P\x1f\x1a,\xb9\x93\xc5\xe8fk\x8b\xf1y\x18v\x1d+`3h-k\xbe\x07\x02\xac1\xca\x8bO$>'\x7f[\x91\x92\x96o\x0b\xf4\xe9mJ\x96\x8bDP/\xcdPlO\xd3\xdb\x92\xcfW\xee\x91\xa5\xf5\xedk\xc7\xeeV\xb7\xd3]\x9b\x0fYq\x11\xc6\x06\x0dn\x8a\xfc\xb6\xe4\xd4\xcb\xc4Y\xef\x04\xbb;\x8e\x0f\xec\xc7\xeb\xc0\xb9\xaa]\x81\x04kR\x94I^y\xf9\xf0\xe1{\x8fk\xd2\n{\xda\x04\x87w\x99\xe8KpW\xed\xd3\x0b\x1a\xa2-\xfc\xac\xdd\x9dT\xd8\xad\xbc\xd0\x8e\x954H\xb29)\x12\x81\x15^\xed\x1aX\xaa\xc8h-\x02(|\x12z\xa6#\xdc\xe0\xcf\x06\x99IL\x05\xfe\xd1=\x0e\x80\xd4uvw\x9f\xefJG6\xed,\\u\xebC\x92\xd1W(i\x025`\x8d\xd7R1e\x03\x98\xfb\xa8\xa1\xc5\x1a}iE\x0d\x0b,l\xf983bg\x10\"6\xee\x82\x8a\xa3C\x0420\x84Q\x05e\x1fSU\xf6k \xd5\x11\x99\xf0\x8b\x8e\x93<fUnl\x10%\xc1\x17\x81\xe5\xdb\xf9\xf4\x14\xc6\x98m\xf0\x10D\x0cB\xce\xaa/\x06bK\xeeu\x12\xcc\x93\xd9\xfc\x97\x90\x92\xe2$,>\xd9\x15\xfc\xeaz\x7f\xea/\x10\x19z\xb7\x0f\xbb/`\x04\xbb/\x9e\xbdzn\x99\x85FW\xd0\xaa\xf4\xcb\x17A\x0c\xe7\xb0\x0f9\x8c\xc4\\\xa4\xf5\x87\x94Q$)\x8c \xf2\xcd\x95\xd4\xb1~\xdc\xf6w\xafF\xe6az\x18\xa62,\xa7/\x0f\x02\x12\x1f\x15a\x92\xa9\x89\x1c\xe7i)\xcdr\xfclh\xa6\xc5\xa4\xa4E~'\x12\xcd+\x82\xf1\xf99\x7fE\x82\x98Dy,\xa2\xc9\xd8N\xaaF\x1eVxZ\xb5\x86B\xb2q\x16\xe5\xa2\xb7\xa4\x95\xf6\xe5\x0b8+:}%\xe5I*\x13\x87 l\xc5\xb5\xa1rD\xab\xe4)\xef\xb2HJL\xd8\xfb\x0dn\xe5\xf7\xdcZW+\x9cg\xa8\xff\xd2\xab\xb8\x0b\xedC\xb3\xef\xc4\xe4A\xdc\xaeoU\xec\xd8\xad\x84RpY\xf4]\x16u\xe7\xe3\x81\xe0\xb0\xe3\xd1\x8d\xfd@d\x14c\xff\xa8\xe4C\xb4\xb9%\xb2\x81\x8a\xc6 \x15\x7f \xf7\x1eII\xe6+\xbf\xd9\"X\x1b\xf9\x8a\x871\xf5\x0c\xc4\x87\x99\xa6\xd2\x9f\xad-\xe5x\xf71r\x80[\x9fJn\xeeC\xe1\xf9\xca9\xe5^\x08\xa6\xdco\xad\x03\x97\x9br\xb9\xa8\x14\xa9\x12\xc1\xd8\xf3+,V\x19\xe3\x15\xdc\xdc-\x1e\\\x81\x0f\x17\x1cT\xecZ(\xe89\x8aO\x00es\xd0A\\\xf5+\xf8\xe0\xad\x01\xec\xc1\xd8\xd5YD\xfd \xf1\xcc\x90{\x07\x7f\xb7\xb6 C\xde2\xb9\xa2dX\xea-gB}\x8cfZ\xba\xd78\xcd\xfcj4gsv\xed*\xef\xf6\x91\x1b\xbfXi!\x05\x01\xa8@Y'\n\xf8kl\xfa\xba\xdb\x8d\xfciX\xd2\x1f\xbb2T`\xa6\xd4\x88\x8a\xcem$\xaa\x03\xc2\xae\xb9\x03\x92\xdf\xdai`-\x8d<\xcc\xc8-\x84\xfcf\xb11\x016\xba\xe0\xce\xbc\xad\xb9\xe6s\x930\xd8p\xe7\xfc\x12\xec\x8ew\x00\x8d\xbe\xd9\x8f\x06-\xe05\x1c\xa0\xdeY|\x9f2n\xf6V#\xfaX~N\xa6(\xe1\xa2ok\x0e\x0e7\x08\x9e\x94f}\x0c\xbe\x86\xca\xc5\x87\xc4\xcb\xe2\x8b\xed\"A|^\xeb%\xd7u\xd1\xb5\xbd\xac8\x01\x95\xc22e\xaf\xfej/\x8eg\xb4R\x98\xbf\xef\xc9/\x9e\xe7\xc3T\xb9-\x1e\xb4\xa67M\xa4\xc8E\xe9\xc6k\x03\x15\xec\x19\xfaP\xf6F(_\x05>\xc7\xcb\x03\xe5\\\xc4\xa8+r\xa6\x18\xe6\xa4\xf2$\xe4a\x87\xf9\x17\x97\xb7^\x7fSk\xd9\x1d4\x9ake4\xa6Ad\xd0\x17\xf0Q>\"\x06\xa3<\x83\x9e<\x01\xaa\x10C\xb8\x06-\xe2Hb\xe4\x98\xa59\x06,\xfc\xd5\x15\x07\x84\xc68\x16n\x8d\xbb\x07\x8d\xf3\xd6\xdawj\xa4?\x0c\xb6\x0c\xeb\xca\xb1\xb2\x86:\xcc\xb2\xa0j\xf9PD\xcfo#\xd8\xc9g\x9b\xbf\x8a\xf87b&;\xc1\x91\x8b\xcd\xcd5\xf4\x8a\x0e\x83AtZi@l\xe6\x93(\xa9e\x05\xe6\x0c\x95R\xf4\x8a\xa3\xcd\x92\xcf\x1b:\xfd\xcb\xf1\xc6\x82k=\xa1w \xbc'\xc3\x1c\xbb2\xd0'\xce\x86\x0f+\xd8\xdc3\xc9\xd3\xd8\x93\x07a\x9a\xf2\x83\xa0\xe4^\xd8\xe4\xee\xe3;\xa6\xf2\x92\xe6\x83\xe30\xd2\x82\x1f\x00Mx\xd9\xdc\xc4\xac\x1dG\n'I\x18\xb9b\x11\x0b$\xa2\xaf\x89*\xe7\xf1\xecb\x04qN`?l\xe7L\x1b\xd6\xbb(\x08)&\xee\x94\xc8T\x9c|\x10\xcdW\x99\x85\xd1\x92\x0f\xea\x0b\x05DP\xf6\xddy\xb99r\xbf\x88\x87\xc1}\xb5B\xbb\x88\x99\x1a\xdc\x1c\x8c \xad\x16-\xf5\x19\x036\xd5\xc0\xc1<al\xcfW\x08\xd3\xbb\xd7\x1d\x15\xa0\x97\x04\xe1\x97W\"\";4\xf4Iy@A\x19\x8d\xb2\xbe\x05\x93\x0c\xc3\xc3\xe3\x1e{DR9\x04\x12:\x88\n\x9e\xad}F\xb7\xfa\xc5\xbd(Ud\x11\x7f\x15\xd38\xa8_\x9f\xadx\x93\x88\xe3\xb4fa\xac2J\x0dy\xe3\"\xe8\xc4x\xc67m\x93\x86S\x88\xf6\xea\x8bc\xc1\xfc\xec\xf9:\xec0\xb8\xb0\x0eJ\xe2\xf8q\xd7u\x13\x07\xa2\x81\xdcfsL\x8c\xa6kH\x0e\x18Z\xb4\x10/\x82ZA\xac\xa4!3M\xf6\xb0\xd3\xe0\xaa>\x0b\xae\n\xb9\xa3\x81S\xdau\xf4\xca\x83\xbd\xa6\xb9\xf9\x1e\xb2\xd4ZW\xa9\x87\x0bhn\xa4Z\xb4\xc8H^\x86\x06fM\x07\x9d\xc2\xa7\\\x8f\xb4\xbc:\x85*\xf1\x96\xb6\x07xx\xf0\xc9\xd5\x1b o<6\x0c\xb4=\x92\xa28\x9c6\xebJk\xe1\xe9\x0c\xc2\xca>A~\xb7\x171\xb3s$e\x1e|p\xf8pZ.\x92\xf4gF\xe8\x08\x0d\xad\x84\xc8\xb5\xdbI\xa3\xfe\xa8\xb7{\xd5\xd4\x1b\xdc\xda\xa8\xcfW\x1f\x1c\x8d\xe9\xe6}\x85\xa4\xacE\xbfBYI\xcbX//\xe3nH\x18\x07\x8e\x0f\xce\xd1\xf8\xfd\xce\xce\xce3\x8b\x8f3ho\xf0*\xb9\xd7\xfd\x99\x85E\x10\xb1\xb4\x9e<\x11\xbf\x82yX\x1e\x0b~\x0bl\xa1C\xa5\x9b\xe8z\x99&\xed\xd2Wh(\x07{\x03s\xfb\x16X\xb8\xf3\x0d=\xeb\x08\xe0\xd5/O\x92Z\x90\x1bsU\xdf\x94\xd4\xfc&\xdb\xed\x9c\xe3\x92\x0e\xa6\x9a\xbc\xa4\xc2\x8f\xce\xfaN\xcb\xaf\x88\x85\xe6\xbd\xe2;y\xce5\"\x9c\xb4\xee\xe5}P\x15G\x97\xc9\x92\xf4a\x07.\x01h\x1e4uP\x90\xc30\xcbr\n\xac\"\x1f\xd8\xafB\xdcp\xea\xac\x88\xd6r[$i\xbf\xa3C\xb2\x9e\x1b\xf0\x1b\x18s\xbb\x8d\xfd\x86\xc1#7\x88\x0b\x85\x8d\\\xa5\xab\xd01:W\xa1_V\xae8\xdd\x02\x17\xb4P'4\xb6\x1fi+$\x0d\x94\xe2\xdc\xed\xaa;L\xf0**Y\x06\xd3\"_\xe8\xf1\xe3\x00DH\x05\xcb\x16D\"\x85\xebWpT\x8dT\x18\xe3\x0b\xf6\xf1U\"@FmsEX\xbc\xe1\xd1$\xd3\xcd\xdak;\x86\xac\xaa}\xe1\xf9\x90\x0b\xb9\xfb\xfe\xb0\xb3[R\x03\n\xc8\xf0\xa5\x0f\xa7\x94\x14@\xb2\xd8\x16d\xd3D\xdd(G\xb4\xc5y\x86\xd8\x8b\x19\x9e\xdc\xab\x16\xe7m\xe7\xd2A\xb9\x9e1Y-\xc9'\xb4\\$\x80B\xdc\xd4\xa4\xf2>\xf7\nN\x1az\x80'\xe1\x1dn\x15>\x11\x98\x1bQ\x0fF'+Q_\xc0\xf1\x8c\xd1\xa3\xb9,A\xb1\xa3\xc989\xd4\xbc\x8er\x0dm\x1eg\xeb0Mb\xc8\xf2l\x8bW\xbb-N\x1a\xe4s\x1c\x0f\x95\xc5\xb9/\x8e\xe6\xbc\x87\xcdy/xJ.\xf9\xd0v\x10\x10\xb9\x069\x97\x99\xf2\x00\xd2n\xde$\xc0B\xc3\xde\xaf\xa4A\xb6\xf5AU\xae\xdek|S\xd5}\x078\xd1o\xf4\x8c\xd7Axw#\x17E\x8b[\x82{Jl_\xda\xe1\xc2G>F\xf2H}\xbeVz\x18\xf6\x8a\n\xee\xb2\xa4\xda\xa0\x8c\x88\xcc\x95\x0d\xcf\x15\x03,\xce#\xcc|\x9e\x94F\x18\xf8\xce\xc2\x18\xb9@>\x95\xd8j\xd3\xaa\x1b\xc9\xeaF\x0b\xb8:8\x12m\xde\x0c\x9a\xcb \xed\xfd\xa6\xeck\xa7\xc3GR-\x18\xc4\xed\xc1\x05\x0c}p\xc3=\xb6\x19\xd8Z\xfb\xfc\xdb\xb8\xe0n`\xc3\x1d7\x02\xc3\xcd\xbb\xfaH\xb1\xc2\x08\xf4P\x84\xda\x83\x07\xce\x08\xb2\x1eY\x85\x90<\x8c \xe9\xce\xc8v:\x8fgo\x07M\x1f-\x86S)\xca1O\xc3\xc8\xc8\xe4\x1b\xf3Z\x85<\x9b{\xd0vs\x06\xb5\xa4G\x95\x94\xacj\xfc\xd1\x89\x9e\xcb.\x8c\xb5\xf2A\xa2\x8cvL\xa0& \xc3\xa0j\x10\xf1\xa4\x11\xee\x1c\x1a77\xbb\xea^eCjo\xf0l\xcdV\xda3 \x1b\x16H\x9e\xbflm\xf9\xca\xad(:\x82\xac\xef\xcb\x14\xa9\x07\xbe\x19o\xcf\xda\x02\x13\xbc=\x93$q'\x11X\x12z\xd4\xba1\xef\xa6\x95\xd0\xd6\xd2\xe2\"O\xb8\x99\xa2\xf9\xbb\xfc\x96\x14\x87a\xc9\x8d,6\xdc\x893'\x9f\x19w$\xee\xdd\xd9\xff-\xfc\x11\x96Q\x92\xb0\x1f7I\x16\x16w\xf8+,\xc9\x8b\xe7\x98+*\x9f\x8a\xff[OE\xb1\xdd\x17\xe8k\x17k\x90\xbf\x8b\xf0VQ3r l\x82\xe3xZ?P\xcf\xa8\xb2\n\xd0Ng\xe9`\xb2\xde\xf3\xe8d\xb2G]W\x83+\x83\xf2\x81I3\xd7\xca&5X\xe6[\x93\xda\x89\x91\x83&U\x9c\x83\x91\x91\xe2F\xae\xba\x97\x93\xee\x18W\xe3\x80h\xef\xdd\xe6\xe8\xbc&\x84]\xdf\x87\xcf\xc8\\\x85J\x15\xd7C\x1e\xe3\xc4\x19\xb1\x96,\x96)Y\x90\x8c\x92\xb8\x87\xb5\xa9/\xe7\xb8h\\\xfdF\xb2x`g\xaa\xbb\x8c!{\xdb\x1a\x90 \xa9\x02\xc2\x055\xe2\xeeW\x11\xbd\xdf\x8b\x99\xa8\xcd\xbf\xa1\xe9$\x83{\xa8\xaf\xee\xa8\xa5\xcc\xabP\xf1MQ\xab\xb0\xc8\xcbc\x8e\xe2p\x87\x16R6\xcb\xd8\xad\x06\xd2\x192S\x80\x07q\xad\x1f\xb4S 7\xfdJX]\xd5\xb9\xaf\xd2\xb2\x19\xbf \xcc\xb3\x88TB\xb7\x0e\xd2\x8d\xd6*G;\xbe\xa2\x9a\xd5\x16Q\x83r\xa8\x14-Fe\xe0\x16\xacT\x97\x8c\xdb\xee^\xdbJY-\xd3\xd5v\xa5\x84\xae#\x14\xd1\x81\xf6\xd8\xda\xdb\xbcl\xf4\xc7\xca\xe7Z\x9aw;\xdb\xc7\xd8\x8d\xf7\xdc\xf9\xf5%\xf7Z\xfe\xd6\xb6\xe9*S\xf3ToZ\xae:O/\xbf\xcb%%Y\xecz>\xd0V\x0c\xf8\xdf\xd5=U\x03\n~\xcf\xa0\xd4}\xb6\xf3\xcac\xc7\xe1\xf1bA\xe2$\xa4\x04\x13w\x87\x85\x0ex\x8c(\x83F\x04\xf2\xbbf\xe7\xbf\xb9\x1b\x99\xfb\xe2\xf5\x8e\xe7z\x95\xdbN\xc6-a\x98\xc8\x17\xafw\xbfa\xa8\xeb\xcam\xfc\xcb\x1ds\xf0\x84\x17\xa6\x88?\x99\xfb\xea\xa9!\x86\x97n]-\x0e\xf6f\xc6\x95)jSWx\xa0R*E\x867\x9a\xff\xc5\xb4\xa1.y\xdf\x05\\W^\x1b\"_u\xa5\x0f\xb51\xa2\x12\x9f!\xb4\x98W6\xcb\xe1\x85@\x86\xc1W\xb9A\xb0W\x9b\xbaF\x9a\x93\x05~F\xa0sI\xf4p\x11y\"\xce]\x04\x7f\xd8\x83\x1d\xc6&\xb0\xb4\x914H\x96vN[\x90\xba\xa5\x1by\xde\x1b\xe0a\xee`s\xd3p\x1d\x85z>\xaa\x94\x95rq\xc2T\x1c\x8d\x13z\xe5C\xe1N\xbdz\x8c\x1a\xbf&R\x15w\xc9\xdf\x00\xcd\x0d#\x89\xd6i$\x05\x95Z\x07\x86\x11\xb5&\xd1\x1b1\xd3\x8bHaJ\xc2\xc4nD\n\x8aT\xb8\xf1\xe1+\x97\x12tw\xaa\x06,\x967\xce#\\r\x11\xc0\xe1\x92|\xa6\xa7yL\\\xc7\xe9p\x1cn\xd0\x00QT\xaf\x06\xdc\xaf \x83\xd3\xc1\xe6{\xf2\x80\xe7\x97\xeb\xdc=\x16\xb5\x9d\xdfC\xfc_f\xfd\xfe/\xb11\xe3W\xb3D\x05\xad\xd6\x9a\xe4\x94E\x8e[;Z\"B\xf3\xa3\xca\x8f'8\xd1c\xd0\xc8\x077l\x1e\xc4!\xe5\xe1|\xf6`s3\x81\xff\x80\xa7\\\xdd\x01k\x0b\xcay2\xa5.z\xa1\x10\xe2\x17ix-(<b\n\xc2\xe0\x05\xf9MI\x8a5jJ\x99'/\x9a\x87E\x18QR\x1c\x854l\x84\x1c\xa9k1\x03I?\xbd\xc0\x9e\x02\xef\x1a)\xec\xdb\x08V.\xe5\x9eP\x1f\x08w\x98,.(\xf1\xf6\x96\x13\xc0\xa6\xc9\x19\"\x16\xfb\xea\xdf/\xaexgT's\xf7+zT\xb1|3\xdb\xa1t4\"\xf7'kF\xfe\xee\x12\xa3\x1a\xbbr\xb2\xa2\xe8\xb7\xeb\x8c\xafxm\x1a\x9b\xbb\xadO\xf6]i\xac\xfa\x17r\xf3\xe7\x84v4`\xc9\xd0\x06%\x1bJ1\xef\xa8\xde\x98\x87\x80\x8c_\xe1\x9a\xa2E\x7f\xb5\xf1H%\x0f\xbb\x9f\xafP\xdaaX\x0e%\xc3\x90\x0e\xd4\xd9]\x0e\xec;\xe6\xce\xb4\xa4r_\x95-;\x88\xae\xfc\x06*\xebQ\xc3\x10]\xfct\xf6\x0bJ\x03?\xbc?:\xb8\x1c_\x9f\x9c\x1d\x8d\xd5\xf7\xb7\xc7\xef.\xc7\xe7j\xca\xbb\x83_\xcf>\\6\x82 \xad\x96qH\xc9\xbb\xf0\x8e\xcd\xf3\x00*\xd7@\xb2cD\x0f\x83\x80u\x19\xde\xa5y\x18w\x84\xfb\xa9;\xf06I)\xe9>\xe5{:`\x10\xc9\x0e\xeb@9\xcfo\xfb\xc9C\xc6\xa0\xb6|B\xf5\xf8>\xe7\xc1\xb4\x94\x04#UE*\x17\xb0\xba\xfby\x06\xc5\xb6\xe1\xae:\x86ke\x1b\xb3\xd9\xc8\x14\xbf\x8e=l\x16\xb2\x91\xe1.\xc5f]\x88s\x17\xcd\xc3lF\x84UW\xff\x0c\xdes\xfe\xda\xbe\xe3\x1d\xe7\x11\xa70|\xe4)\\\xe41\xb9\xd7\x0c\x9a\xb8/c\xd0\xae\xf6\x06vR\xdc\xb1\xd7|\xf7\\\xf37\xa7\xcd\x9f\xb5\x91\x81Vr\x8a\x1b\xcfi\xb3p:Z\xd1\xca\xb1\xc1:m~\xae\xc2J2;\x83+\xee\xa2\xf2\xbf\x1ea\xe2\xf5mH\xc9\x8fd\x9a\x17d\xfc\x99D+\x14l\xd2 \n3\xf1\x8a~.y\"k\x0cOR%m\x1e\x96?\xe5\xe2\x12\xa6\xfa\xfeKB\xe7'\x84\xf2Y[\x86E\xb8 \x94\x14\xe6\xd4\xe3,JW%\xab\x94P\x9ad\xb3\xb7ya.\xf6\xe3\xddqL2\x9a\xd0;\xfc\x1e\xa6i~{Y\xdc\x1d\xd3\xb3\x15\x95\x85\x16\xec\xa8\xafn\x0ddj\xa1\xbf\x96\xcb<+\x89\xb9P\xa9\x16)\x1b\x05\xf8\x1b\x0dg3\x12\x9f\xc9\xb1\x96\xcd\xa1\x97\xac\xbb\x97\xe1\xac\xca{Dh\x98\xa4\xd5\xab)\xfby\x9e\xd3c\xaet\x87r)\xca\xa3Z\x88\xf6\xe6rzo\xc2\x92\xbc\x0f\xd1\xacO\x00@Rw`\x9ad\xf1Q\x95\xc6+!\xd1\xaaH\xe8\xdd\x91\x96U\xa6\xf3i.\xf2x\x15\x89\xa6\xa2<+W\xb2\xdd\xbc9\xc2eH\xe7\xb2\xfcb\xcd\xfd!I\xe3g\xfcM>SRdaz\x94G<_\x92M\xf9^M\xca\xb3\x83\x8bg\xbc\xec\x92D\xd5\x8f\xff,9\xa8\x9c\x932O\xd7$\xbeX\xdd\xd0\x82\x88\xe6Y\x06\xedC+\xbdQS\xf5r\x91\xaf\x8a\xa8\xce|Ay_WE}\x19\x8b,\xaf!>\x82\xa2\x15\x94\xb9\xafLA\xdaQ\xa5'GyA\xd1\x0c\xf1Wt\x87\xf8+\x9aH\xafn\x13cm\xbf\x97\xd0nVa\xb0\x1c\xfd\x08\x17\xecL\x9d\\1\x96bF\xe8q\xe6N\x9c\x05\xa1\xa1\xe3\x83\x83K\xe6T.\x9e5G\xb5\xd4\xf3a\xe2T\xdb\xact\xae<\x1f\x0f\x8d\x12Eh\xffy\xe1\xb9\x93+\xcfC\xc8\xea\xb1\x87\x94\x97\xa0\xc1I\xb8\x0c\x92\xf2$\\\nE%\xec\x93\xeb`\xb0\x06\xaf\xd6\xf4\x16\xc9I&\x12\xb5\xb9A2\x81\xf7\xe4$\\z*9\xea\xab\x98\xe1g\xae\xe0\xd2\x7f\xf7a\x9a\xae\xf7Bj%)\xbf \xb1O\x94\xe7\xf1\x0e+\x93%\xa7\xea]RR\xcf\xf5\xbc\xa0 l\x1f\xb9\x8d\xaet\xdd\xc1\xc8\x08\xa4\xb1\x081A\x959\xd9\x97o\x88\xb8\xaf?/R\x87[5\xd4\x89]r\x19F\x9c\xbbj}\x9b\xe0\x04\x0el\xca\n\xf8r0\xb0j\xce\xbb\xbe\xfc\xffP\xa3\xa87\xa7\xbe<\xe6AX\x8e\xb3\xff\x1a:\x87\xf1\x84|\xf2\x83\xa4d\xffT\x81$ \xca|A\xbe\x11f+\xe0\xd4\x94\x8d\xfbf\xe4\x92\x07\x1d\xba\xf49>\xa5$\xa3,\xc9\x0c\xabz\xc7\x14\x08}\xd3\x9aH6\xd5\xb1K\xbcj\x9f\xf7\xed\xef\xd6~f\x0b\xda&\xd5\xb8\x8b\x92\xfb\"\x8f\x81\x953Tz\"n\xceZ\x1fQ\xa7\xac\xb5\xb5x\\]r+vW\xbb\xd8\n\x1d\x93`1yb]\x8bM\x811\xd2\xcd_Fp\x89\xd1\xf30j\x15\xcb\xe8,V)M\x96aA\xb7\xa7y\xb1\xd8\x8aC\x1a:u\xb6\xbcX\x1c\xb1\x14\xcc\xcapE\x12\xe1q\xb8\xfdy\xeb\xf6\xf6v\x0b\x8b\xac\x8a\x14\xaf\xd7I\xecT~\xda\x8d\x04\xb96U\x06h\x14\n*\x15\xc0\x189\x1aI\x894\xf2\xe5\x9d\x00Z\x1d\xe3\x87\xf5\xe1\xde \x83&dy/\xb0c\xc7\x8a\x9c}\xc3\xa1\xd2\xc6*\xd1\xaa(HF\xdf\x0bR\x84\xd3e'\xcdS\x19A\xc5\xfd^\xbfrY\x99y\x04~1\xf4\xd2k\xd6\xc1\xce\xff\x893#\x14\xe1{\xc5\xff\xe5%\xfe\xe7\x1e\xba\xd8\xaf|\x89D\x0f\xfb9'a,\xf6B4g?\xd0\xcb\xa6\xa3E\xd2\x88z\xc5\xde\x15Wf;\xd7\x00Z\xf7\x9fS\x1e%M\xa5VX\xd1P\x08\xcb/HJ\"\x9a\x17\x9e\x1b\xf5\x05\x82\xac\xb0\"\xee\x8b\xaaBM\x9d\x9fs\x04\x9cHz\x94\x86V\x85\x1e\x15\x9d7Q\xd3d\x8f\xd2\x0c\xab\x8e\xa3\x0cG\xf7\xfc\xef\xeb\x04\xe1\xa35\xc8k\x14\xcdf9\xdd\"qB\xf3\xc2\xd6\x01A\x9e>J\xf3\x7f-\xf3\xac\xa2>8\x18\xe9\xb3\xacm\x86%\x87$\x8dp~\x94\xce\x14\xa2\xbe\x9e\x0e\xf9Vz\xbe\x97\\R\xdbC\xecSh\xccB\xf7\x11\xc5Qr\x8b\xce\x91\xcd\xca\x80\x89\xc3\xe8\x03~M\xa8\xa6d\xdc\x8f1\xce\x05\x8f\xca\x8a \"~b\x19\x9c\x151)H\xccg%X\x90bF\x18\xc3S\xd3\xa9#\xdd\x16K[\xbbx\x08\xb3\xf4mK\xd9\xdd\xd3\xa5\xdf\x00<\xcf\xd7\x97\xbeZ\x87\xf6\xaa7\xde\xe7*\xff7\xa8c\xd3\x96\xbaC\xb3\xc6\xb5\x88#)\xb9K\xf34\xcc\xfd\xee\x0b\x16\xd1\x98n\x0f\x8a0+8\xd8\xfe\x8a\xbb\x86\xf1Wi\xaf#\xc8\xcai\xde\x9e*m\xae\x16|d\x1aG\xfd\x98\xddP\xab6\xac\\\x83\xb57\xb7\xbb\x1e\xd8\xae\xda\xaa\xa8\xb3u,h\xc3\x9f \x84%\xe5\x0c\xe6\x0e,\x06v`{\xbd\xefNv\xb6^_}\xe7}\x0c\xda\xbf\xb6\x93\x80|&\x11#p\xb8\x0b\xb7]\xd3lH\xe9\x87\xb9+\xf1\xc0\xae\x10I\xeb2\x02\xaag\x12\xee\xdaB\x18s\xe3\xb3\xbe\xc6\xf1\x0e\x9a\x07\x0e \xca\xe4\xef\x04~\x80]\xaf\xb9\xfb\x05\x17\xdbf)%\x03\xd7\x93\xad\xb9\xd6\"\n\x1d\xec\x83K\xda!\xe9H\x87\xca]\xdd\xd5\x8d\xaad\xd5Uk\x18bc\x1bV\x83\x1c\x10F\xae\\\xb3\xb6\xf0d0\x15\x97K\xd9\xf0\x9a\xb7\x8f\\W\x1f\xb6\x9a\xbd\x9a\xf2\x0bB\xe7y\xdc\xab\x9f_-\xb7U\xa6.\x9f\x84U\xc6\x18\xfb-\xc6\xd8\x9bU\x07\x80\xc3\x95\xe5J\xdat/\x8f\x87\xf0\xa8\xb9\xda\xfanh\xbc\xdf\xe8r\xc3oCR\xbc\xe1\x0bB=\x974\xd9\xb8\xbe\xe3\xe5Z\x97f>vGd\xd5}\x1d\xb9\x95\xc8\xab\x12\xb2~[O$\xd5)\xeak \x9e\x0c\xc8\xca,\xf8}\xd4n(U\x1b\x89\xfc\x968\xba\x97\xd0\xab]\xbfY)=d\xd3\xeav}\xa0W\xbe\xd031\x82xS\xb0!\x08g[\x15v\xb5\"\xd4 F\x99D\xeb\xa6\xdcoI\xe2\x1fe\x96\xd5.\xda\x85\xa1P\xcd\xb6r3\xf0(\xed\xcb\xfa\x8cK+\xee#\x1e\xa5!V\x97\x99I\xac.@\x1e\xa5\x1dQ\xdd\x006\xa5\xfbf\xc6\xdc\x99;\x1fn|\xb8\xee\xbe\xceku\xac\x11\xd8\xdd\xaa\xc5Qe\xe7\xd7\x8c\xaeSu\xd0\xe9\x9b\x02\xf9\xa0\xd7\xa3\xae\x0c2\xd3FS\x18\xda\xaf\xb5\x06j\x07o\x13:\x97\xaa6\xe5\x80\x91\x19+\xd1p>'Z\xe4\xd0\xab\xf4\xa1#W\x1f\x03b\x17|\x8ekP\x11\xd5\x9f\xaf5\xe3S\x1f\x04\xcd\xdeU\xe9\x8f\xdc;\x83E\xb2\xfe|m\x85\xb6o\xe7\xb0~\xb6\xfbpnt\xca\x80|\xe4c$%\xb4\xbd\xa5\xa1h\xae\x97#\xeeC\x1fe\x8b\xb3\xbaz\x0f\xc7\xc6\xfbg\xd9\x87\xfa\x8a\xb6\xf7\x94\x92S\x82~\x81*\xc4\\]\x02q\xe5\x01W\xd9G\x83\xee\xcf\xa05\x1a\xe5\xc6\xcc\xa0?\xd1\x89\xc6\x9a\x83\xbc\xd0\xd8\x08\xe5z\xda<\xed\xb7>\x8c\xfd\xc1\x13A\x06\xdf{\x81r\xc6+`N\xab\xf3YEl|5\xaflJ\xb7\xf2d\x0e\"\xf4\xab\xcfH\xf8]\xf4\xcc'\xf7\xa2\x10\x02\xe9\xf0\xd0\x07QZ\xfdD\x06\xce\xb2@=\xc6A1\x8c\xbf\xd32\\G\xe8\xd9\x03\xfb\x08C\xfb \xf6\xed\xff\xd5\xea2\xf4^\xcbZuC\xb9w\x94w\x8c\x1d\xfb\x11TPn\xc8\x9fz6\xee!'\xb1\x0d\x8a\x18\x83\x10F\x95i\x10\x9c\xe2x\x0e\xf3l\x9a\xccJ\xb6<\xf6\x85\xc5\xcb,\x06\xb8\x17yAM>\xd0\xe5\xc3\xfd\x10\xd7{\x92\xe7\xef\x04\xf5\x0b\x94O\xe4\x05\xfd\xf1n\xd8\x9a(e\xcd\xee\x00\xba\x02\xd4\xea\x8f\x9c\x0f\xa3\xdej!t\x1fV\xd8?R\x94\xca\x1cL\nK\x14}P\xe9\xeb}\x90]\xe8\xb0\x11\xff\xea5)\xa6>\x0f\x0c\xf2\x9e\xdd\xd8g\xe9\x83\xbc\xee\xb3\xbe\x1a\x93\xbc'^z\x02{8t\x8aU\xb8\x05^\xd0\xf7\x0eV\xc1\xdb\xdd[\xbb>\x96F\xdc\xd9[\xd6\x01z\xa0\x8a\x0e\xca\x11$\xf7F\x04\x86\x9d\xd9\xdc\x82\xbe\xa6\x07e><\x86\xca\x9ck\x192\xaf\xf0~\x17\x1a\x9f\xf0LST\xb4\x1e\xa93\xbc\xbe>&\xa1\xf1~\x80]ik\x90=J\x8f\xb4j\xef\xd5\xb13\x8e#\x9b\xban\xf7\xe0O\x0e\x95\x1b_\x96U\xb2\xc9&\xa8P\xb4\xeb\xee\xd1\xc2\xa7\xc1-\x98\xb4\xfa\xee\xd1\xd0\xc1\xe0\x86\x0c:\x85U;\x1d\x0dh\xc6)M\xbd\x10\xa3\xfa\xe2\x90\xdeK\x04v\xef\xbbw\xa3JW\xf3|5\xa3\x92\xfcA\x8a \x03\x9b\xb4\xcaW\x8a\x81\x9c\xb0\x14E\xe7\xb89\xb2\x06\x9d,\x15\x9c2y\xc9\xe2\xd8\xc6\x08\xe2\xa4\x1eX\x0b\xa6\xcd\xc3r\xce\xc5\xac\xf8\xf30\x8f\x89q@\xa0\xe3y\xc3\xa5\x9aXq\x93\x11\xca\x03Y\x85JQI\xed\xb6Y\xf7NMi\xb7o^\xb7N,\xf3\x9ec\x99\x1ee^\x1d\xda-\xc2y\xe9)+\xab\x16\xc2@\x13\xa9c\x7f8\x98^'\xb2\xa3\x0c\xab\xe6\x0cf7\xf4{\x1f\xe3.\xbe\xffh\xfe\x19\xdb\xf7\x1b\x01\xa5\xb0\x80\xc7P\x90\xb0\xae\xca\x99\x98\x93\xdc0\x95&\xe5\xf0oD\x83\xbc\xd0\xd5c\xa1\xb8\x07T\x97\xd4\x9ah]\xba\xa1\x0d\x04\xd7y1\xa5N\xa4<\xac\x0c\xb8\x02p/Z\xd7\xc1\x8e}\xd0\xf7\x17\xf2i\xcd\x0e'\xfa>W\xf5\x93k\x1d\xff\x07Hj$\xdanH|\x8d:r\x06\x17<\xdc\xcc\xb1V\x1a\xc5\xf8\xcf\xce\xb6\x08K9\xd9Q\x02\x12\xaa\x11\xa2do\xe0\xd2\xde\x9f\xff\x81*\xa9lRz\x95R\x0d\xb3p\xf2\xaf\xd155\\\xa3\xa0\x99\xb2\xf4\xf1\xd2\xb9\xbd\x1f\x88\xd0\x85\xccU(y^y\x9d\xf7A\xb9T7\xe5#\xaa\xe5\xb5;\xbd\x97@x\xff\x83A\xac\x1a\xaa\xa0x\xa7\xd4\\\x8a\xdf\xb5\x7f\xb11\x1e7\xe5p\x95\x05M\x1f\nl\xcc\x8fP\xaa\x0b\x16!\x8d\xe6\xee\xf6\xffq'\xe1\xd6\xdf\xaf\xd8\x9f\x9d\xad\xd7\x9b\x1f\xb7\x82\xab\xef\xbc\xd1\xb6E\x0b\x97\xbb\xa0HJ\x19\x90\x80\xb1\xed\x1c\x92\xb3V\xd0\xc1\xd6)\xcb/P$\x8a\x14\x92\xef\xd6G\xe7Z\xac\x0f\x1f\x9e\xc33\xe6\x9ar^\xc3\xf6\xc1`h\xd47%\xa2s\x13gN\xe9\x12\xd54)]\x96\x8a\xb7\xac\xe3\xaa$\xf7\x90U\xb7\xdce\xf4\xd4)\x0d\xe9\xdd,zd\x8a\xc7\xa1S\xecF\x19-\x8d\x07\xdb\xe6Rp/z\xdf,M\x96\x03\x02\xcfJqj\xe5\xfa\xd1\xa0\x0b\x93\xa9\xeb\xd8\xc65\x7fm\xf7\xc4\x8c\xd6\xf61\xde#W\xf3> \x97\xda\xb6\xf9\xaf\xb7\x8d#\x8a5\x9c\xf8\xddp8\x98\xcf\xd4\xd7\x92p3\xf3\xa6W\xc2\x92\xd0\xd6+\xe7\xc7\xb9E\x12J\x80\xc7\x8b%\xbdC\xfb\x9f\x8az\xc6\xaf\x12N\xf1\x93\xb4\xa8\x92\x89\x9a\x16\xe0a\x18\xcd\xd5:M\x86S\x82O7\x7f\xc2\xb4\x0bi\x9c\xb5\x0c\x8b\x92\\\xe6\x95U\xd5\xc5\xf8\xf2\xfa\xe2\xf0\xa7\xf1I\xc3\x9c\xfa||q\xf6\xee\xe7\xf1\xd1\xf5\xc5\x87\x1f/\xcf\xc7\xc6oj\xda\xd9\xfb\xf1\xf9\xc1\xe5\xf1\xd9\xe9\xf5\xc9\xf8\xf2\xe0\xfa\xe7\x83w\x1fx\x99\xc3w\xe3\x83s\xf6~\x8c\xf9\xde\x1f\x9c\x1f\x9c\\(_\xce\xc7\xff\xbf\x0f\xe3\x8b\xcbF\xca\xc5\xfb\xb3\xd3\x0b^\xfc\xdd\xd9\x9f\x1aYXoO>\\\x1e\\\x8e\x8fZ\xe9\xedw\xa5\"S\x0fD\xdf\xc7'\xef/\x7f\xe5\xe9\xd7\xc7\xa7\x87\xef>\\\x1c\x9f\x9d\xaa\x19\xf0\x93\x9a\xf0\x9f\x17\xcd\x0c\x1f\xce\xdf\xa9\xaf\x17\xef\xc7\x876\x034\xd8\x83\x1b7s\x9f~\xaf\x93\x9d\xb9\xf8\xf2\xea\xb9\xfe%\x91e\x9e\xe9_B\xf1\xe5\xf9S\xfd\xcbJ\x96\xd9i\x15*\xc5\xa7g\xcf^\xe9\x9f\xd2\xea\xd3k\xfdS$\x9b\xfa\xdek\xd0\x8f\x1c&/\xfaT?%\xb6z\xc7\xe8\x8e\x82,\xd30\"\xee\xf6G\xba=\xf3\xc1\x01\xd0\xf1\x96\xcdkc\xad/\xd6Fsh/q\xdd>\x1f+3g\x8d\xaej\x9e\x1c\xcd\xbd\xf5-\xb6\xf9\xa7\x1d]\x18\xe0\x1c\xe0\x03j\xe9?\xb8\xf5\xdbok\x9d\xa1\x85\xde\xc5\xec\xe9\xc2\xf8\xa1]\xe0\x06\xf6\x88\x13\xcd\xbc\xb8! bO_>w\xf4\xc5\xcc\xa9q\x95?\x8b\x86\x9e8P,\xf7?x\xb4\x9f\x86\x0b2\x02K\xf0\xa8%?\n\xac*\x85I\xf9\x97E\xaa[\xfd\x00\x0crL\x80\xf3\xd6)\x89\xb4\x1b\x9b\xfe\x8b\xa6\x0f\x87o\x9d\x1c1\xb9\xddSS\xdcsjR\x12\x16?\xeb\xa7\xed\x83A\xfb\xf8A\xf3q\"\x14D\xdbj\x1c\x03\x96U\x9av\xa1\x91a\x1f)\xdb\xd3\xfd\xbf>\xa8\xfb}\xbb\xc1\xb2\x9c\x9f\xc8\xdd\x08tS\xbd\x87\xcc\x80\xb4\x1d\xfb\x1f:\x03\x1a\x1f{\xcf\x19`\xf0\xab\x10\x96\xdf2\xf6\xcb\xc7\x1d\xbbT{\xbe\x87\x0f\x10eD\x92r\xfe\x96\x01\x9d\xfc\xb7\x18PI\xe8}\xd9[\xdb\x80\x8e\xee= \xce\x9ew \\6^\x0bx\xca\xf1\x1ad\xc3\xb6\xf16\x89\xd9iEd\xbe4\xd9\xa5e\xaen\xd1\x19W\x05Z\xf4\xe5\\|\xda}\xd9\xfa\xb4\x96Ti\x9b\xcc]\x88O/_\xb4\xc8\xdcY\xf5\xa9Ej\xdfI\xc3R\x13\x93{c=\x14dh\x1e\xd51\x04\xe9v\x0ca%w\x1a\xf3xm`\x1e\xd0\x14Q\xfa\x9fA;\xc8\xe6\x18n\xdb\xfcG\xa3\xc8\xaaH\xb5\x12c\x03\x07\xd3(\xc2\x95\xa8\x1be>\x9b\xd8\xa0F!<\xd2\xb5R\x83\xb8\xabF-\x84\xf1\xc9\xbc\xae\xfa\xfaF\xab\xf5\xd0\xc2\xc7\xf1\x8a$\xf3l\xec\xd0'\x13O\xc8\xcb\x95\x84^\xcb\x8bt\xad\xd4\x81\x81\xb3T\x0b!\n\xd3\xca\x9cup\xa9uYq\xe9m\xa9\xe3\xbd\x81\xf3\xe5e\xd3|f)ca\xa0y1D\xb9\xb6Q\x9e\x18\x99\xf1fAS\x8b\xc7\x9d\xec\xbdZ\xbesi\xfe:@\x8a\xd0\x00\x95J\xccz\xbd 4\x14\x87j\xb3\xceS\x8b\xb4\xa2QOm\xde\xda({\xde#\x051\xd6q]r\x81\x8bV\xd7Q\x05\x0c\x95\x80\xc5a\xcb/e\xaa\x8d\xcc\xef\x86\xaa\xb8\xb9;>\xba\xa8\x16R\xc5J\xdc\xa6\x9bH\xab\\zS\xe8\xd3K\xfeV\x19:\xad9\xb8\xc5\xe7\x01\xe6,\xcdGLQe\x937J\x96\x8c\xdc\x99\x10)\x8a\xce\xea\xf8\x95\x9c027g \x85{R\x83\x1c\xd4\x1a\x16\x10\xc3@\xc0\x97/\x90\xb8\x18\xb0\n\xc1\xb6C\x87\xabD\x0bqF\xda\xb1i-\xda$\x1d{\xbez\"h\x91\\\xaa\xa0\x0c\xa7\xe4]\x1e\xc6\xc6h]j4=\xf3T\xf2\xa5a\xf4t\x9e\x8aX\xfb\xe8\xf1-\x0f2r\xcbx\xf6qq\x9fN\x9b\xa7\x8f=)Y\x93t\x042\xa0\x935\xdf\x82\x94e8c\xc4GP\x90\xb0\xcc;\xcc\xe4\xd2$\xc3|\x8b\xb0\xf8\xc4OQ\xf6+`\xc9\xa8\xdb[\xbfmb\xe4 .:\xb3\xcck{\xf2l[\x05\x03\x1d)\xde6\xf7\xc0Uba\x85\xb0\x0f\xce*\xe3\"et\xf2\xc1\xb6VTo\xad\xd0\xe3&\xe0M\xd1\x88\x1bz\xec\xd0\x1fH#}0\xc4\x95\xfb[\xa5\xbf\xa5Hf; a0\xecM\xab\x86d\xe5\x85\xa8\x7f\x7fBus6`\x8f\x82t\x83\xde\xbbO\xa1\xf2\xff2\xed\x00\x8a\x15\xecA\x18L \x8d\xe6\xf6L%f\x12S\xd5\x01`\x98\xed\xe0\xc2\xc0\xe3\xc8'\xaaD\xb2\xb8\xfa)\xec\xc3?\xbe\xc2\x08R{\x91\xa9\xbcT\x14:\xc2f\xb5\xa0\x0fh, 7\xe6mXd\xdc\x91\x84\x98\xa2\xc6:7\xc2tB\x99d\x11\x81\xf5\xb3`w'\xd8\x810\x8b\xe16IS\xb8!P\x90E\xbe&1$\x19\xac\x9f\x07;\xc1\xce\x1bX\x95\x04,r~\x11\xd0s\xc3\xf1|\x0ep\xb6XW\x0c4\x18i>\xedRv\x8e10\xd9\"\x8fI*/ZN\xc2\xa8\xe8\x88*5\xc7\x12\xd5\xcdVO\xee5\xe6\x16C9\xce()\"\xb2\xa4y\x87R\xf5B\x94\xe0\x04\x8cR\xc42\xcaz\x95\xeb8?y\xe5i\xc1\xad\x9dG\xf0\xfb\xf6\xca%x\x1e\xac\x8a\xd4\xaa\xfe\xc5&\x8fq\x15\x11\x83\x88wIFNW\x8b\x1bR\xbc\xcd\x0b\xb4\xcf\xdb\xb7}h\x86\xdd0\x84\xc2\x90\xcf]\xd5\xcd\x0bZ\xd8\\w\xcb\x1b\xb7\x0eT\x8f[\xca\xe8cH>\xac\x8dN3\xe4\x9b\xb0$Gyd\xe5\x1dA\xb8\x00mB\xc8\x08b{\xf6&x\x8c\xa0c\xd3\xb7ac\x04\xeb\xae\xec-\xc0\x18\xc1\xc2\x98\xfd\xab\x17\xd09\xc9\x06\xe8WA\xe3\x8e\x95M\x98\xbd\x03\xec\xe1\xf6\xad\xfc\x1a\xd6\xae*\x9eL\xc1Mz \x0c\xa8$\x02\x0e\xba\xf3\xcf\xcc$\x06\x082\xa3y\xfb\x9f\xe1\x1do\xa6(\xd6t\x0d\x11T\xe5\xbc\x81\xda\x9a\xeac%K\x08?\xcf\xd9\xa4LWi*\xb6\xc8\xcc\xbd\xf3\x95\x14i\x15\xc0\xd2\x96\xdc\xc8\xb5\x91\xbd~ \xfe\x9a'\x99\xeb\x04\x8eZ\x04)\x15FU\xcb\xd8\x93$\xa0\xdcE\x9b\x9c7\x1f\xb5s\x84\x8b iu\xccr\x9a\xef\x93\x89\x0f\x8e kz\xa3?\xcb\xa7\x11\xcf\xaa#\x10\xa8\xfa\x08\xb9! Dc\xbd\x85\x86X\x01\xda\xa1\x8e= #\x13/qV\xc6E\xf1#j\x99\xe4\xdf`9XhWfvS\xaaVr\xcb\xfc`r\xa5\x1dGo\x85>\xda\xa2&\xc6\xd8kZ\xbf\x96\x15Y\xcdh\xc7\nh\x81X\x03\xdfQ5b\xa8\x0f!\x0f\x80\xe2C\xec\xc3\xdc\x87\xb5\x0f\x0b\x1f*k\xdf[\x1f\xc6V\x85\xa1\xba\xed\xdbb\xd0\x86\xc1p\x0bo\xdexP\xde&\x9c\xca\x0f\x96\x05F\xfc\xe2\xc1\xd0\xbb6Z\x14\x96\x04vF\xddk;\xe5\xe7\xd7\xdf\x82\xf2\xae\xa4d1d\xe3\x12\x19\x8c\xf1y7\xdc\xb0\xe7\xa6 a;\x92\x9a\xfa\xd8\xc1\x05lH\xc2\x89\xc9\x8d\x00\x1e\xe9\x05`\x04q\x9e\xfd\x9e\xc2<\\\x13\x08\x81\x0f\x06h.\x0c`\x08\xe4\x99\x0f\xe1M^\xd0$\x9b\x05\xdcaQxS\xac\x96h\xe2\xc1\xda\xb0\x05\x07\x069\x93\xcf\xfbg2\xd3yQ\xc1\xc6\x92\xa2\xa8)d\xc1\xb1N3\x1fi\xe2\xbc\xa2\xf2\xf8P8\xef\x97#E\xaaS\x9e\xa1\xa4<C\x1f)L\x9dAV\x1cCU=\xb0\x86\xb8U\x9fjI_\xfdW-):\x9f\x1b\xc1\xc5m8\x9b\x91b\xeb0MHF!\xc68\xc2\x14\x96E\xbeNb\xb6\xb2\xbf5g\xeb7!\x8b\xf6!\xce\x93l\xc62\xcf\x1f\xbc\xc2\xaf\xbaWXt|\xfe\x08\x84\x1cR\xb2\xd3\x9a`\xf3\x91PU\x8d\nY\x1a\xa3\xea\x16&r\x1a\x1d\xac,t\xb2\x19\xa5\xc1\x0b\x13y\x8c2\xdf\x85\x89\x0c\xc6\xe3\x93#\x94\xdd]\xbf\x86\x83\xdd\xe7>\xfc\xade\xee9\x04\x94\xd6\"R\xe8`\xacK\x0dw\xf3\xb6\x87U\x1eb\xe8\xd4\x14\x91\xf0\x12\x91\xf0\xa2\x1fh\xe1\x1bp\xb0\xe9\xf9\x16\xbclz\x86\xe0j\xd3S)\x14\x8au{\xeaw\x99\x1b\x9a\x1el\xf9\xe9\x83[\x0e9\x91K2\xea\x0b\xb6\xbc \xe5*\xa5'\xe1\xd2\x17\xbc5\x83\xf2_\x12:?\xe4\x0e=%\xcaV\xa0\xed\xa5\x0f\x89\x9b\xe2\xf9z\xbfi\x93O\xc5tL9\x1f6\x8c\x96\xd2\x1f\x13[r\xf7\xb0\xaat\x96\xe5\xe6a\xd5\x98\xd8\x19\x83\xa2\xd2\x90\xc7\xc8\xea\xdc\xde\xbb\xaa>bQ\x7f\x10\xbc^>\x18\xbc\"\x05\xbc\x96\x88x9\x9f\xc4\x8f\xba\x88sWP\x04a\x9a\xe2 R\xba\x1e\xf7f\x86\x8c\xcc\x10n\xc9\xf6\x0c\xe4\xa2lO\x9b\xbbZ\"w\xb5\xd4\xcc\x16\\.\xa1\xb8?\xfbdz*l`b\xa0\xe6\xee\xfa\x7f\x1b\x03ez\x1e\xc2T\x99\x9e{3Z\xa6\xa7\x9f\xf92=\xa8Pm`\xba\x16\xd2\xbd\xf6\xac>WW\x885\xe3\xf6\x87\xb4\xfa\xd0\xa2\x83\x1e:\xbd\x15f\xef\x94\x10u=\x96\xa3`\x04\xf6\x08\xf0\xb6\xe7A\x88h\xf7\xfb\xfba\",\xe4\x90,v\xeeW\x0e\xd4\xcdX\xd2|i\xf1\x91cz\xba\xa9g\xf9|\xc5\xe8\xf1&G\xb6\xc6\xdc6\xc9\xa4\xfa\xb4\xae\xf0z|)\xa8O5Xs\xd0\xcf\xde:\xba\x07\xfd\x95Q\xc3\xab\x8an\x13\xb8d\x00bW \xd6\x9d\x9a\x9c\x0d\xbb\x93\xab\xcac\xcfR\x9a\xd0\x074\xff\xcf\x8b!D\x84\x15\x9c\xa7\x8a\xc8X\xd4\xd6=\xc0\xae\xf5\xe1\x90\xdb\xc3~\x8e\x95\x83\x92{-\xafxz\x1f\xaf\x8dx0\x10I&>\xed\x06\x07\xe4\xf1\xfaz\xf4\xba\xbbG5c\xf1\x1aO\x87\x1d\xec!^V\xba\xbb\xbb\x9e\xafK\xfe\x02j\xbb{\x80\x8aL\xed\xa1Sc\xb3\xa1\x83\xcb\xc6>\xae \xd3\xdef\x9e\xd9\x9b\x19\x8a\x11\x86\xec\xfe6\xd0\xab\xbb\xda\x87\x89\xb1\xd4\x841j\xbb\xaf\xafZ\x1f\xaf\xda\x0e2\xe0\xd9\xf7\x0d\x9d{\xab\xb5\xc77^\xec\xffM\xc6\xc1\xf4+\xa8\x03\x0cC\xfaV\xf7LX\xbd}m\xdb\x02\xdc\xd3\x11x\x8fJ\xdcy{\xff~\x8b\x8e\x9fT\xd8l\xaf\x99m\x80\xfe\x10\xdb\x1c+o\xfdO\x1a\xdd\xc4\xe2\xc0F\x0cO\xc5\x83\xf7\x1bi\xcb0\xe9[\xd6\xee\xf0A\xa3\xab\xb4\xa5\xcdC\xe4.\xc1\xef\xbd\x84]\xf6X\xdf\xae'\x7f\xf1\xcf\x18\xe9#\x98\x13\xf0\xb058\xea\x9f\x85\xe9\xc2\xf0iS\xb7v\xd3\xbc\xed\xc1j\xae\x03&\xa5_=\xd7\xfc\xb9`'\xb6\xc9\xcd\x81e\xc9>uAK\xc3\xb8\xef\xbf\xe7h\xffv\xaf\xd1\x1e\xf4\x8c\xb6e\xe0\xf8\xbfa\xd0g]\x83n\x18y\xf6\x1e\x9c\x1d\xe34\x8c\x857\xff\xbe\xab\xf9\x96\xd9io\x17\x86*\xe5\xd9Tn\x8aa*{\xf9P\x95\xbd\x95&\xeb6\xe7\x12\xf1\x06\xc3\xf2YOu)\x12\x96\x0c<\x18\xca3\xe7\xe1r$qW`\xcc1\xc5\x1c\x95\x8e\xa8\x05m\xc2\x1e\xacl\x9c\xc1\xfd\xb4S\xac\x9a)\xe6\xec3\xbc0\xe0\xacD\x9b|M\xa6\xe0\xce\xe0\xc9\x13\x98)\xa1\xc7\xf4w)y\xd2\x93\x85{\xd2~\xf1\x93\xa4iY\x0d\x1bBK\x86{\xc7\xaa\xcf\x89\xf6\x1e3\x98\xa5w\xc6\x0b\xcf;\x1d\x07\xb9\x93\xd4\x87\xe8\x8am\x84\x8c\xad6\xd2X^\x17\x9bJ\xd4)\xd9k\xbe~\xf9b\x8d\x1f\x00\xca\xd6P\xcbLx\xc3\x1d\x1e\x0c\xdd\x0dt\x0e\x8e\xa1\xfcv\x84\x8b\xa52\xf9;w\xda\xe1\x9a\xea\x82=p\x0c\xbe\x97\xc0\xcc#\xa0H\x07\x83\xc8}\xa6\x1f\xaa\xc8Lq-\xfa\x91\xcaH\x01\xcd/\xd0\x12\x96\xb1\xcf\x02<*\x00?\x8eQ\xc8\xa7\xbe\xefi\xdfG\xbcP\xca\xfeD\xa2\xf3\xcd\xfcY\x90/\x8fcw\xc6\xefc<\xd4)\xe5d\x96k]\x136\xa97\xb0\x07)l\x823r`\x13\"\xf3\\2v\xb6\xe0\xb1>\xca\xa0D\x1c@\xe2\x0bLro\x90ko%w\xe8_]\x8bjX\xbe\x9f\xc3\" oR\xd2\xa5\n\x05\x18,\x9d\xe5\x1eU=\xe9\x96\x08\xb0\xa5,\x97aDFpc\xcd\xf8\xb5_\xbap\xfb\x08=\xedo\xbf{\xce\xabv+\xf7>\x15t]{\x12\x91\xec\xc35\x8c\xe0\xd6G5^=R\x1d\x0e\xa2\x9d\xec\"\xa0\xf0\"\xad\xa8u\xa2L+\x9d\x17B\x87!\xdfm\x7f\xe7\xd8\x17y\xac\xb6\xfac\x1es\x9c\xc4\x8b\x9bK\xb1\xc1\xdd\x05I\xf9\x9f\x17g\xa7\\0\xed\xb9cT\x8cW\xab\x81=`\x19\xb86\xbc;\xf6F0f\xfba\x8csi\xc8<\x16\x93\x0c\xa3\xf6\xa7\xf6\x86n\xa5\xb0\xa1|\x163\xaf\xb8\x01\xf9\x07z\xe6m\x8f\xe33\xee\xc4\x9bU\x92J2\xcc\xfd\xec\xf9P(\xc4\xa8\xab\x1c\x90\xf5A\x08\x9f\x0d\xb5\x11\xc3\x11\xa6R\x19\xbd\xfeq\xd7\x0d!\xe0\x84\xea*:\xea\x93\x9bG\x99u\xab0\x16m\xc2\xd32\xc0\xbc\xe1\x9bD>_U\xf8k\x0e\xd3p\x97\xcc\xc6u\x01{p\x14R\x12d\xf9mG\xa8\x9bLRg.\xd1\xd5\x05\xad\xd3F\x83x\xc5Qj\xa3\x0d\xd8\x82\x8bj\x0dyO-c4\xa8O}\xf5\x84\xa0\xad\xbfyuJ{\x1a\xea8c\xb9\xf6F\xd7}\x0b)\n.^\x98\xab~m\xccg\x9ei@\x8d$\x0b\xafI\xdan{\xf4aK\xf5\x04\x83\xa3\xaf\x1d\xab\xa3\xaf\x9d\xa6\xa3\xaf\x9d+T\xe37P\xef\x15%\xda\xfe\x96uR\xa0\x89\xd8\x07\xb9b\x9e\xc3}\xfeP\x0c1\xc9\xcb9Wf\x1fi\xdd\xa4\x9bT\xd2$\xc14\xebR\x9a\x0f+}\xd5\x01\xf4;\xe9\xe7\x07\xca\xea\xf6\xdf\x16\xa5\xce\xed>\x0c\xb9\xfa\x80\xe6\x1d\x8b_K\xd8\xa9\xfc\xb0\x1d_W8x\xednl\x8a\xf7\xc9\xed\x03\xcb\xce\x08D\xa6\xa3\xca\x9c\x9d\xd1J\xdb\x9f\x17\xe9v\x12P\x86\xac\xa6\x96N\xccq\x00\x15\x81\xd8\xe8\xbe\x0f\xb1\xfd\xec\x16\x80\xb0\xd2\xb8C\xd4},\x9a\xb85\xb1md\xa1\xfcm\xd1\xbf\xe7\x8a\xdf\x96\xa5\x96\xd8\xa2\xdfb\xd8V^\x92\xc4V\xednS,\xdc\xa9\xa5\xab\xc2\xb4\xd9b\x9fa\x0c\x97\xbb4\xa0\x1c+\xce\xc1_=\xce\xa8H@>/\xf3\x02\xfd>7\xe7\xbb\xb2\xf1\xcd\xdc\x97\xcf\x9ej\x90P\xdb\x087\xbdO\x19\x9b\xb4\xb57@,\x89\x91]\\n\x00\x12f\x11\xbaUD\nKA\x80\xe8\x11\xb4\x80$\x03\xe2\x01\xde\xea\x03\x9b,T\xb4p\xd1\x1f\xeb\x08\x92,\xca\x8b\x82D\x14\x92l\x9ds\x07x\x1b\x16W\x8e\xe4~3hv\xe7U\xd9(\xb9\xaf\x9f+\xcdT\xc3\x0f\xa6CD\"\x19\xb9\x1d\x805Y\x8f\xda{\x8d\xd15\xc1\xb2\xc8\x17 \x8a4YUdX\x9096\xe9\xca\xfcRm\xbe\xb3\xf6,;?\x861\xbc\x17mEyV\xd2b\xc50\xb3M\x97\x11O \x1f\x0f\x1b\x83\xbc\xd6\xf3y\xe7\xc5\x05*\xcb\x84\xbe\xe5D\"\xa3~1M\x0b.\xf3U\xb5;\x1c\xb4t\xf5\"}\xbfcZ\xa4\x01bB\xd4\xb0\xe3GW\x921\xd8D~\x9aLrv\x16\xe3\xbf=\xa0\xec\xdf\x08\nVG\xee\xe3\xeb\xbf\x04\xf2^>\xdf\xb5\x8c\xaax\x8c\xea_\xbd\xb0\xd4\xce@M\xd7g\"\x9f\x97i\x12%t\x04\x13\xd6\xb1\xe7\x8c\xe0u_>\xff^\xfc\x7f\xe1\xa9\xdeP\x1f\xde\xbb\x0eJR\x99\x97\x17\xbb\x167\x93\xec\x9b\x8e\xea@\xd0=\x9a\xc7\xca`s\xeb\xea\xbb\x91\xb7\xef~\xdc\xfe\xb8\xed\xed\xbb\x93\x8f\x17\x1fK\x0c\xc9\xd9.\x1eb\xf1\xc9\xc1\xd6\xff\x1f+\xe0\xffw\xb6^on\x05W\xdf\x8dX\x05\xdb\xedB\x8c|\xb1\\\xad:\xff\x86\x9e#\xc3r\xae\x87\xf3\xae\xb3\xec\xb3,\x7f[\x91\xe2\xce\x9eg[\xfatDG\xca\xd6l\x7fd\xd9\xc2\x15\x92x\xbb\xb6\\\xa7\xe1)\xeb\x13\x8fH.\xaf\x86w;\nl\x8f\xdc\x8f\xf1\xa6\xf7\xef\xdb\x18\xc8\xbch\x14\xebo\x04{\xac5\xd4*c\xa8\xa6}\xce\xc9\x87M\xe7\x08v\xcd-\xe3D\x8e`\xb7\xf5Q\xf5# \xaa\x9b\x8d\xd4\x8e\xaf3\xaepo\xb3\x94C\x015\xfa\x83s+\xc3m\x1a\xa4\xe2\xd4\xe2\xc2@\x8bp\xd5\xb9I\xf3\x9b\x91#d\x9e\xcb\"\xa7y\x94\xa7\x1e\x87{v\x96\xb8\xab\x8c\x94Q\xb8\x94\xbc\x13\x9bF\xcf7WH\xd2\x92\xe8\x8e\xea\xf6t\xf7\xd8\xf2A<\x981\x1cX\xb7E\xb0b\x1fJO\xeaz\x14\x93\xcc \x91\xac\x1bR-\x99\xad\xda\xd6uS\x84\xa1\xdb$\x03\x94\x90\xba\xacr6_\x93LG\xaf\xf2Ql\x14\x8a\xa0L\xc3rNP\xfc\xec\xd6o\x8c\xb0\xa5\x9cQ\x9f\x17dj\x8a\xfa\xd3J\x91\xbc\xe9\xef\x9a\xd9\xccp\x11u{;\xad\x02\xfaZ\x89g\xf3\xa4\xc8\xb5\x1e\x01\xe5\x0e\x9f\xd9\xbf\x80\xe6\xef\xf2[R\x1c\x86%A)\x8fc\xb1v\x17\xa3\x1f\xc1\xc6\x06\x9d<\xb5\xec\xbe\x82\x94\x94U\xff\xac\xbd\xd1\xf4+V\xf3\xd0\xa7\xb6C\x14*J\x8f\x1d\xf1*\xb17\xad\xbdPW0E\xcd\x82\x176\x83\xdc\xec\xa9\x94\x1a\xf7sn\xc1\xb0\x12\xc1\x91-\xdc\xcc\x02j\x97\xdd\xe6\x1c3\x96c\x9eX\xb8\x8a;\xd8\x83\x9dv\x7f\x10L+\x88f\x84\xd3\x02\xad\xf5\xe5f\xaaR\xb8=\x8e\x8f\xcb\xcf\x1d@s\"B \xfe\xb3Q\xf50\xabJ\xe4\\\xcc\xe7\xf1\x82)RH\xec\x9c\xdap\xd9q\x13\xb9\x84{.\xf6\xbc\n\x0f\xe0\x85H(A\xdd\x87Y\x03\xea\xe5\xef/_ \xe1\x1eu\x95\x8cU\x15\xc8\xf8\xc9\x17DL\xea\x9b\xe3\xf8\\l\xc1h7\xea7ku\xd7\x93\xa7l\x83N\xb6\xdd\xe0;o\xbbq\xf4xo\xe0\x0e~\x80\xb5\x10s\xbc\x81\xbb\xcdM\x0f\x91\xb5\xcbx\xd8\xf5\xe4\xee\xca\x9b\xec\\\xf9\xdc\x12{\xb2{\xe5C\xc9f\xa5\x84}\x98M\xe6\xb8\xef\x19|\xb7]j\xb2\x1c\xff\x8f\x1b\xa3,@\xfaX.=~\xc9\xe1dh\xfe\xa2f_\xb2>\xee\x83++\x15\xa0\xb3#tT\x95\xa4\x1861\xb7\x87A\x87\xb5\xfczf,\xcfs\xc6(\xfc\x15\xbb\x9c\xf7C\x14\x8eq\\z1\xdek\xcf\xf3\xe5@\xf1\x9f\\\xa5\xe5\xe4\xd9\x15\xae\x96Hd+\xb0\x9c<\xbfR\xebe\xff\x9a\xa8\xc0\xb0}8`\xcd\x02<\xe9\x90\x14\x12\xbf=\x84+\x15 @\xf1c?\xab\x8e\x91 \x9a\x87\xc5\x01uw\xc4\xdc\xea\xdfy\xef8GQ\x9f=\xa2\xd5*\xd3\x00?\x11\xa0\x92\xdd\x18\xe9\x0c9\x14g\xdb\xf1\x82r\x99&\xd4\xe5?\xe5\x0cn\xedz\xd2a5Q2x\xbep\"\xc1A\x8e\x1b\xbce\x93\x02\xb6\x18\xfd\xc1\xb7\xd2.7s\xdby\x03\xc5\xd6\xd6\x1b\x0f#{\xe0M\xd9\xa4\xb8B\xcf\x19\xac\xba\x08#\x13\xec\"~\x0d\x9a\x19\xdcf\x0e\x1fB\x06\xd6#\xee\xb7\xc3\xdd\xa9\x03Z\xb8 \xf7j\xe0C\xab\xc4\xd6V\xb7\x94\x19\xd7&\x0bVY9O\xa6\xd4u\x1c\xcf\xc7~\xb2\x89\xceq\xa9\x82\xea\xed\xcb\x17\xc8\xb8\x0e\x1cf\xcb\x84\xce\xfc\xb6)\xa2\x8a\xb2*\xbe\xbabl\xde\xd8\xb7\xbc\xa0*f\xe0\xfa\xa93\x19a\x97\xff\xe0\x85yf~{\xc8\xdeV%)\xc4b\xb36\xca\xf26/b\xfc\xcc\xbe2B\x13\xa7d\x89\xdf\xd9\xab\\\xb5Q\xab\xfcr\xb2S\x81}\xa3.\x86#\x04\x02d_\xf2\"\x99%\x19oP\xc1\x86\xa2\xbb\x88l\x93\x94\x8c*\x98\x95y\xf6\xd5\x97Mp\xb6\xb7\x1d\xd8\x94\xc5F\xe00|\x8dM3b\x01\xab\xaf/3\xb53Q}\x9b\xf2J\x85)B\x1b\xc4KBG\xbd\xac\xa7|\xf0\xe0\x13'\x94\x19R*\xeb\xaf\xae\x0bh\xae2\xca9\x86n\xa5\xd1\xdeX\x17\xd2\xdd\x84\x8b\xd4\xaa<\xa8x\xa0\x85d\x82\x17\xc9=\xe6_C4{9\xd7\xd0c\xee*Zc0K}H\x14p\xdd\x17~1\x12 \xb2I\x05\xb2\xd5\x95/\x0f(o\xc8Q\x8d\xc3\xe92\xd7\x84\xa1#\xa98\x9a\xa1\xa3I\xf8\x96\xe2\x13\xbd\xb9'\xba\xcbS\xd9$\xcb\x1e?\xc64#O7\xb4c\xdb\xa3\x8f\xf1\xe6\xbfos\x1a\x9a\xb2Yv\x85\xffxe\x0b'\x12!\xd0`\x99/\xdd\xaa\xc3bSS\x81\x96F\x8e\xa7\xcc\xbf\xfc\xa8\x14\x7f\x9c\xc9\x97 \xd17F\x95\x08\xa2\xcd\xf3\x94\xf5\xa9\xa6\xa56z\xa2N\x0f\xeb\x95\xa4\x8d\xfa\x94\xbcQ\x0c\xd0o\xf4=\xc8\xd6\x13\x0dW\xd9\xc4V\xad\x0b'3\xfbx\xe0\x8f\xc0\xf97\xcb\xb5\xb6\xfaHhP(\x82\x0da\x16\x1e\xb2M\x05&\xe5V\xf5\xf9*X\xc2\xc7@\x15R\x8c=\x08~\x8d\x99\xccF\x1f\x15\x05Rr\x02\xa1\x84\x1f`U\x91\xaf%;\xe7\xed\xf3\xcd\xca10ZM\xca\x0e\x0d\x9dT\xd2q\xc9$\x9d\xec^\xb1\x1e\x8a_\x1a5w\x8fnK\xa2\xa1>\x11\x93\xc6\x89\x98\x18O\xc4D=\x11\x13\xc3\x89\x98\xe8'b\"O\xc4\xa4\xa1\xde\xd3\x0e\xeei\xba\x9f\x14\x05F=\xb2o@\xd7vMNI\xf1\xa5\x8f\x04\x89\xf0\x8c\x84\xf5%\xd3\xbb\x0e\xcd\x1b\xca\xe5\xd1v>\x0f@\xc6\xc9\x95\xe3\xb7\xd0e\xd8%1s\x85\xdc\x04\x85<\x1c\xb7\x18\xa9\x88B\x07\x81\xb8;\xfa\xc4\xe3\xb4n\"\x1d)\xd0\xcb>\x9f\xf2\x91\x1d\xf9U\x97\xfc\x15\x9d\xc4 \xcc\xcd=%\x8d\x11\x7f\x15\xb9T}\xe7\xc7H\xfd\x05I\x7f\x96\xfeGG\xfe\xcc\xf8J\xf3\\\x92<D\x1c\xafHo*nU\xb0\x13\xfb@\\\xf1\x9b\x07\x9e\x16?\xeb\x86\xf7%gP\xe3\x8c}L\x15\xf8\x02\xa9U\x86\xea\xd4\xc1\xb0w3P5R\xbe\xfa0\x0d\xc8gZ\x84\x11}_\xe3\xf0\x88%Wb\xb5=H\xd9\xfb\xdf\xd8v\xce\xfd\xe6\x1d@U\x1b*,\xa4)^\xee\xba\xcfv\xbdo\x90T\xd7\xe2\xe8]]\x1a\x8d\xda&\x99\xfb\xca\x1c\x10*A\xd1\xa1\xc9\xb3o\xd8R#@E\xc56z\xa8p\x17\x81$\xb3\xbb\xde\xa8dR\x13\xd2\x11O\x98\xcb\"$km\x12\\A\xe5w\xe4\x0f\xb0\xb5\xcb\xb6e\xe1:\xaf_8>\x10\xcf\x87\x8d4X\xa6\xabY\x92\x95\x93\xec\xaa\x0biR\xb9\x86\xe35\xc9h)\xeby)\xeaQ\xab\xe9>5\xe4)G\x03\xb2\x167\xab\x1d\x1e\xad\x14D\x9fd\x10z\xb0r\xc3Iy\x85\xeb\\z\xb2\x17\xaf\x1c\x94;\x19<_\x82\x11\x17\xab\xd7\xb4\xed\x95\\\xd9h\xfe\x94w\xf94\\\x90\xa3\xa4\\\x864\x9a\x0b\xedd\xb6\x19\xcen\xb3\xcaP\x99{\xc9b]{\xed\xa0*BGY!8m\xceA\xad\x8f\xb1\x9c\x87%\x89\xcf\xc9,))\xd7q`uhS\xc6A\xcd\xb0|\xd5\xfc%l\xfe\xacR]\xaeS\xab\x0d\"\xf1<(\xdd|\x92\\\x89\xe9\xe8\xd9\xe9P\xa3?=\xae\xed\xefLy6HPh\xc3B\xfcR\xba\xed\x0f\xa2\x07>c\xd3;\x17\xaf\xb4/\x9e^'\xbfB/\x19\xf5\xc1\x17kwg\xa7\x02\xe7\x8e\xccH\x06\xb7s\x1c\x91%\xc9b\x92EI\x95M\x01\xf1Iv\x15\xc4J\x0ee\x10\xf2\x97\xa4K\x9a\xfd\x16\xfb\xaam\x95e\x83\xa7\xb6\xda\x91e,\xfd\x19\xd5!\xb5s/\xf3\xb2LnR\xd2\x82M\xe1\x01\xa0 \xa1\x19;\x9e\x10y\xbc\xc7\x11a\x8c\xc9>\"#\xafVf\x97\x9d\x81u0\xba\x8a\x83\xe7\x92&~0\xb0\x95\x0bu\xd6\xbf\xa7\x1b\xe5\x8fw\\)e\xc0M?\n\xa5,\xb2f.\x0e\xc3k\x11\xeb\x0e#m4\xd1G\xa7\xe6\xe2N\xc5\x8e!\x133\xeeI\x10\xadH\xb9\x93\x8b\xafr.\x9f\n\x9c\xc4\xf3\xe0\xad8\x17\x80\x0dD\x9fH\xa1\xf6L\xf4\x8c\x88 \xe6\xc0\xf66/p\xd2\x87\xce3 \xe2\x06T\xb7\xc7\x8flUk\x13V\x17\x16\xf6\x1d\xdc.\x84\xb2*\xb3[g]\x1b\xc3\x86\x8e\xbbNqn83\x08\x8f\xcb\xa7\x02)\xd4\xac1`^\xf9\xe0\xc9\xaeC@\xd1 V\xa0\x80\x96}\x96\xb2Iq\xd5\x01uP\x1f:b\xc2\xdbQ\x85\xe4\xd3u\xfe\xcaG\x92\xcd\xab4\xed\x82\xaa\xeb\x82\x94\xa4\xb1}Gv5Nh\x11[\xb9\xb8\xe4A\x8fg\xad\x8d\xc3\xe5\xe1\xe2\xb2\x94\x91]\xed\xe1Wd\x8e\xe4'\x8c\x97O\x12\x88\xedg~\x1f\x12\xa1\x1e\x0f\x9e\xdb\xde\xd7\xa2{\xd4\x88\x13$Yk]\xd6\x8evC\xbc>\xf6\xa0\xd0\xdb\x0d\xd5v\x8bI\xd8\xbc\x804j\xd9\xaa\xf4;_\xcf\x87S\xe9\xdc\xa3\xa2\x99VG/\xd0\xee\xd3\xdd\xa7\n\xdd+Hw\xf7\xb51\xfe\xc6\xaaC\xdd\xad\xa6\xb9P4\xfc\xe5\x0b8\xab\xecS\x96\xdff[\xb8\x8e\x9a\xf0\x85\x04\x11w\xe9p\x19\x163B\xf1biF\xe8i\x1e\x93\xb7E\xbe8\x16\xf7\xa8n\x81\x97\x84\xfb\x10\x06I\xb6\xce?\x91?\xad\xc2\"&\xf1a\x98\xa67a\xf4 }Cp\x7f\x99\xd8-\x82W\x14\xe6\xbcU\x16\xdf\xd0zc\xef4\xa9\x8a\xb6\xdeER\x8e\xb38)\xe7}\xf8X\xecK\x87\xe6\xcb\x93|U\x92\x0fK)\x94b\xd3C\xf3\xe5e\xbe\x8a\xe6\xe3,6%\x1f\xb2\xf1\xa7\xe2K\xd7\xb6N\xca\x93|M\x1e\xd0\x1dV\xcc\xd4\xb2\x92\xde\xdd\xee\x05\x0d\x0b\xfa\x80\x86\x8f\xf2\xdb\xcc\xd40\xd67\xa0e\xa1\x82{\x94\x14$\xa2\x129\xf4u\xa2>\x1c\xaf\xe5\xe9\xf8.))\xc9\x88M\x0b;k\xe6\x960i\xc0\x03M?T\x94\xd3\x10\x8cXx\xe6\x18\xa1\x8dA\xb4\x19\xde3\xcf\x18\x18\x18\x14\xfc\xc4\nS\x97\xd83J\x95<#\x90\xfb\xc6 0}\xac\xc6[},\x06-\n/M\xca\xe36\x95j\xb9\x16]WV\x80C\x97\xa6\x18\xbc4\xec\x9c\xd5\x9d0w\xe8\x01I4\xb6\xf3\x06r\xf8\xa1v\xd5\xfc\xe4 l\x90 )\x19b\x0fg\\[\x9e\xe6\xcb%\x89]\xef\x0d\xe4\x9b\x9b^\x8d\x1d'\xf9\x95\x0fE[U\x12\xa4\xc2\x10^X7\x90\xa9!\xe3\x03W\xe9!K\xc4Fr@/\x8b\xd5`J\xbe_\xbay\xff\xed\x06\xf7\xdar`\\[\xdaI\xbc)\x84!\xbf\x19\x87\x1f\x1a7\x7f\x1d+\\lnv;\x18B\x8azR\\\xb1Ue\xe4\x9f\xa2\xfd3)\xdajG\xa0\xdc\x15\xa0\x87\xe0'O\xd8\xa6\xe6\xc1\xb3e\xc1n!\xa9\xbe\xd8Xe\x97\xfaU\xe7\xde\xee\x847\xda\x05U\xf3\xb0\xac!\xaa\x0f\x80\x14\xf1E\xbb\xbd\xaeV0\x9e7\xef4C\x98\x0cq\x0el\xab\x08\x0ce\xf5@/\xed\xd6t\xd4|\x9f\xd6Zh\xbd\xbb\xb5\xa4<`k\x81\x0e#{\x91\xa5\xe4\x18\x82\xba\x14\xcf\xdb3\x9ew\xf9-Zw,\x16y\xf6\x90\xe6,U\x0cj\xfb}\xc8\xce\xa1{\xce$6\xd9,\xd93\x8f\xb4\x08\xd7\xa4(\xc9\xe5m\xfe\x9e1\x8c\xc3\x14\x11\xaa\xe6\xf4\xe2U\xa1!m\x8e3J\x8aw$\\\x1bZE\xd7\xe6FYu\xab\xed\xba\x1a\xadp'\xfc\xa0\\&\xc93\x93g\x0f\xfe\xf10_,\xf3\x8c\x11\x03\x05\xe9]\x00\x90'l\x1b\xbf\xb4Q7\xaf\x9fU{\xc9\xc7\x10\xa6C\xea\xcf\xcd\xf5\xff\xce\xfcfa\x8f8\xc6x8{\x042 U\x95\\\xf1:\xb9\x0dd\xcc\xb1\xaah\xcb\xa4\xa33j\x14kUQ\xa1\xc2\xc9\xee6\x86\x02\xe5^M\xe3FL\xccN\xcb\xca\xac\x9b}je/\x08\x1a\xca\x1c\x86\xab\xd9\x9c\n\xd7\xe1\x9d\xb2\x02v\x8aY\xcdr\xd6\xc2&\xd4\x12\x14\x86\xdb\xe4\x14\xf5Y\xf4\xadp\x91<\x1c.\xcc\x164&n\x97S7\x94\x13\xd7_\xbe\x00 \xca\"\x1a\xa7dA2|\xbfM\xb28\xbf}\xa3O+\xdb\xef4@\x9b\xaer\x99gq\x92\xcd>\x94D\x96\x93\xfaG\xd6\x1c\x9e\x0f\xcfxh\x9c \xcbc\x82F\xfd\xfb<\x8c\x1c\xc9\xf0\xe0i\xe8(|\xab5\x8e\xd0-t\x9f\xaa\x163y\x10\x85\xd9\x87\x92\x1c\x9d\x9dT\xe0\x1b\xe7\x11\x1a\xef\x06\xc9b\xc9{\xca/'\x9f<\xb1}\n\xe6a\xf9\x96\x84tUH\x7f'\x1b{\xd6z\x94\xcc\xae\xe3\xf8\xa8\x1d\xdc\x98\xd9\xed\xef\xbekB\xcdwp8'\xd1\xa7\x92Af\x98q\x81?$%\x94\xab%[_\x1e\xc0\x89\xce \x08.IP\xc7\xe82=['E\x9ea7\xb4J\xf56N\xcf.\xc7#\xb8\x9c'%\x8f\x0f\x95\xe5\x14n\xf3\xe2\x13\x08\xa3\xbd\xf4\x0e\xa9\xce,\xcf\xb6f\x8c\xc6I\"\xde\x13\xd6\x8fh\x0ea \xbf\xf1H\xca\xbf\xf9z\xd5\xbf\xa1\xb8\xee7\x1f~K\xf30f\xff\xd1\x08\xfc7\x1f\xa3Q\xfd\xc6\x1ds\xfc\xd6\xd7\xc1\x1f\xf3\xa2\xc8oK\x98\x16\xf9\x02N\xf2\x98\x14Y\xf2\xf7\xa2\xaf\xd4\x1f\xd1^\x14\xfe\xc1\xb5\x0f\xbe\xd6\xd7%\x17\xab\xe94\xf9\x0c(D\x84L\x98\xaf\xcf\x02p\xa24\x89>9z\xbdUE\xfb7y\x9e\x920chq\x89K\x8e\xab\xc3\x16\x07\xd7@$\xa2\x9c\xb7\xb1J\xed\x1a\xa51AU#c\\dE\xedenW\x90\xb036\x0b\xd3\xd6\x874\x89HV\x92z\x9a\xe0Y\xb0\x13\xec,\x0b\x02\xee\xe1\xaa\xa4\xf9\x02~\\%i\xec\xc1\x1789\xbe\xd4\xcao7\xde}\xbb-\x9e\x8eL\xd0~@\xddS_\xbe\xf0[\x82\x0d\xd7 \xe3\x18\xe7Z\xd2\xc8\x0e\x83Z\xb9GjVA\xbfY\x91\x1c\xb5\x93g\x0el\x9a\xfc`\xa1PP\xad\xecM\xbbOF\x92e-\xae\xa0\xab\x8d\x1a\x15$\xa4\x12=\xb9N\x9c\xacM\xea\x1daP\x12z@i\x91\xdc\xac(q3\x1f\x84\xb3\xe47\x8e\xd0\xfe7\xaa\xc2\x84\x93\xcc&2\x05\x85\x9d@Mb\xae\xbdr;'\x95\xd8\x0c\xa4~\xf2\x10\xac\xc2\xef\xe6\x03^\xde\x07\xe7Y\xb0\x83\xaa\xd6\xc9\xa3!\xd3\xd6\xd1}\x90\xd2\x118aJ\xffL\xee\xf4\x90\xbayF\x8b<\x1d\x81\x13\xd1\"m\x7f?!4\x1c\xa1\xdb\x82\xb0\xfd\xf1b\x9eLY\xcd\xa8W\xcd>\xd7C\xb0\xd0:\xb6\x03\x0e\x0dW\xb3\x90&k\x82\xf3\xd3\x86\x12\xf43v\x92\xc7\xc94!\xc5\x05\x0di}\x8d\xd4\xfe\xd4bO%\xa0\x16\xad\x1b\x83\x8aS\xc43dc\x83\xaa\x90PC\xc1\xb0\xf3\xbau\xcd\xf2\x08K\x99\xb9\xaf^\x1b\xd4_2\xf7e+=\xe1j1\xbb\xdcv\xf4\xd9k\xfc\xf7t\xf7\x95\x1e\xfd\x9a\x8b\xe4w\x9f\xeb\xe5W\x98\xfe\xec{\xb3X\xbe4b\x151d\x93h\x92S\x18\x93\xdd+!\\\xa7\xe8\xb5\xf8\"\xb9I\x93l\x86\x1eu\xa6IQ\xd2\xc3y\x92\xc6\x86)_\x8b\xab\xf6\xc4\xedc\xafH\x90d%)\xe8\x8fd\x9a\x17\xc2\xb1D]\xa1q0\x91\xad\xaeB\xd4\xc58\x0dQ_\x8b?3\xe94XM\xb7Z3\xb3ob\xdcl(07+\xeaTaK\xec\x840\x8fI\xa4\xcc\xb8]\xb8\x95\xba\xdc\xee\xba\xe0\xd7\xf7\xdc\x82\xbdCk4\xafh_\xf5\xd1\x88g\x1c\x1cZ$Q\xb4\xdaA\x91s:l2\x97\xd6\x03l\x88\x1c\xae\xba\xcf\x9d\xec\x1a\xee\xdfb\xac\x1b?\xef\\\xf1;v\x12\xf0`\x9b\x08\x89-\x0eK\x0355+\xed\x1eFl\x83\x89\x8e\xe5\xab\xc4\xef\xddK\x87|P\xcfR5\xfbZ\x0cc\xfc\xe6\x0861\xa3\x15\x8b|U\xa6w\xe7d\x99\x86\x11a$?\xe3\xe3N\xc2\xe2\xd3j\xd9DS\xeb\xb6k\x8c\x9e\xf2-\xef \x05\xcfuD\xd2d\x91P\x12_\x92\xcf\x03\x0d<\xe4\x84\x11\x8571K~\xf9\xbda\xe7\xb4\xe6\"\x1c\xe8>\x17\x9e\xa7n\xe1\xeb\x14\x08\xeb\x19\x8a\xf6\x18\xe4\xe4x=\x02\xfb\xe0\xae\xf0\xde\xcf\xf3!v\xf9u(E\xd5||\xeb\x95]-\x8b<\"e\xf9\x01=\x14\x97\x03\xc4e\x0d\xeb\xae\x9d7\x90)\"\xe67\x90\xd9u\xab+\xf0\xb2\xea\xabHS\x98\x02oXm\xf5@\xa5]\x7f|z1>\xbf\xbc>98\xff\xf3\x87\xf7=j\xf6\x88u\x0b\xe9\xd8\xc7\xe7GJ\x11\x84SJ\n6\xa7}\xd1\x0d\x06\xd9\x05\x9c\x9c\xfd<\xbe\x1e\xff\xe5\xf8\xe2\xf2\xf8\xf4O=\x1d\x9a\xf2\x0eL\x85\xb8\xf6\x9f\xd4\xa3\x8b\xf1\xc0\xf9 \x1b\xf3\xf3\x18M_\x8e\xffry}xvz9>\xbd\xeci|\xf5\xe8\x8d\x9f\x8fq-N\xcf\x8e\xc6=m/\x9b\xeb0T\xc9\xe9\x9e\xf2\x9a5\xa6>\x88\x1a\xb3{\x01\x9a\xd3\x05#\x9f\xe7\x94.G\xdb\xdb\xb7\xb7\xb7\xc1\xed\xb3 /f\xdb\xbb\xaf_\xbf\xde\xfe\xcc>kd\xf3\"\xa4s{\x99W\xdb'!\x9d\xe3\x9f\x93wZ\xc9r=3\x16{\xba\xb3\xb3\xb3]\xaeg\n\x01\xfe8C\xed%u\xd5\xe8\xe9\xb5\x0d\xf6\xc9\xc5\xc1r\xc9\x10(\xfe@S\xde\x0f\x19\x0f~\x1f\x85\xe9[y>*\x94P%\x826\xaa\xbfvV\xd3\x1f\xd6N^L\xa9\xad\xb4aI\x17\xac\x8e\x1e\xdb\xdb\x8cQ\x8d=s_\xed\xbc4\xd0\xf1\x99\xfb\xf4\xc5+\xcf\xcd\xdc\x97\xdf{AR\xfe\x1c\xa6I\\\xc9\xe6\x1a\xb9CE\x19\xdee4\x7f{\x12nV\x94\xe6\x99\xd9\xaf_4'\xd1\xa7\x9b\xfc\xb3\xf9k\xb2\xc0\xf8\xfe\xa6O\xf3$\x8e\x89\xa5\xd2\"\x8c\x93\xdc\xf2\x89\xa0\xed\xa6\xe9S\xb9\xbaY$t\xd4\xd2L\xb6i \xe9\xeb\x8d\xe2\xee\x0dv\xc8\xe3\xa0H\xfc.\xc9>10\xac?`x\x04\x99\\\xb8\xce\xab\x97N\xaf\xae\xb2\xde\xcc\n\x95X]\xadR\xa9\x9f\xc8\x93\xf2\xec\x10\xe5mR\xc7\xfc\xd5\xab\x9ev\x0c\xdePZ\xed\x88Q\xf5\xb4\xf4\xba\xd1\x92\xfc\xc5\xc002\x9a\xd2\x8a\x88\x11Ch-P\x18f2\xa1\xa8\x93\x19N\xb8.\xd6\x15\x17N\xcb\xee\xf0\xb7\x82\x84\xf1Y\x96\xde\xf1\xb78)\xc3\x9b\x94\xc4\x8c\xbcb\xfd\x1f\xa1\xcb\n\xe1 \xeb\xd7|%\xc3\x83\xc6\x10\xc2o\xd8\xad\xdfX\xd2\x12h\x0e!\xa3y\x160MH\x1a\xc3mB\xe7\xf9\x8aB\x98\xc1o\xb2\xc1\xdf`\x1efqJ\x8a@\x91\x93\x16$\x8bI\x01!\xb0\x8el\xe5\xac'XC\x00\xc7\\\x90\xc7\xeb+\xe7\xf9*\x8d\xe1\x86\xc0bEY\x171\xd4\xfeo\xc22\x0e\xbd\xf7\xfd\x16\xc0\x19\x9d\x93\xe26)\x19\x99@(\x90\x84\xbd\xab\x1d\xc8\x0b\xf8M\x8e\xf8\xb7\xc0d2n\xd9~$~\xf8\xfc?\xe2\x94\x8b\xbe\xfc\xb7\x98\xf4C\xd1\x97\x7f\xd2\xb4\xcb\xd2#H\x026\xf3\xbf\xeb\xc8?\xb5\xda\x13-\xdb\x9b\x16u\xc8m|\n\xbf\xcb\x99\x11\x94q\xdb\xfc\xbf\xd3J\xb0\xe5\x08\xe95\x9b31\xa9\xdc\xff\"\xe4S\xf8\x8d[~m\x82\xf3[\xd0\x0ckh\x94]::m\x00\xa2Oq\x0b) \x18\xbc/\xf2%\x1aE\x0c\x83\xcc\xa62td\x03^6\xbe\xc8\xa4\n-%\x16\xd1\xa4\xb8b\xc74\xe7\x9a\x1c\x06\x88\x8e/\xee\xeb\xf2\x0e\xcb\xa9D\xf5\x89\x83\xe0\xcd%\xdb\x89\x0c\xfb\xc7\xba5\xedV\xdb\x99T\x99\xafP\xd5\xdeN\xde.u!\x81|zI\xd4&d\xcd\x08\xfdY\xc7\xbe\xa6.V\x9a5\xf5\xf1\xb5\x8f68(\xbc\xa8\x12\xff_\xf6\xfew\xbdm\x1cY\x18\xc4\xbf\xf7U\x94\xf9;\xa7\x0f9\xa6\x15\xc9v\x9cD\x89\xe3\xe3v\xdc\xd3\x997\x89sbg\xfa\x9d\x9f\xc6G\x0f-A\x16'\x12\xa9CRv<\x93\x9c\xeb\xd8o{\x0d{\x01\xfb\xec%\xed^\xc2>(\x00$\x08\x14H\xcaq\xf7\xf4\xec;\xfc\x90X\x04\x88?\x85B\xa1\xaaP\x7f\xc4_\"X\xf5\x8d\x15\xc4\xdf\xee\xfb\xc4\xa6=\x8d\xbd\xeb\xa7\xea\x11\xaa\x8d\x84\xd9a\xf5Z\x1f\x81|\xdd4\x06i)vVn\xc6V\xc1\xb7+$T\x94Ql\xd7/\xe4\xfd\xa9\x1c^m|M\xb3q\xb4\"\xab\xc8vJ\xf2{\xa4\xfd\x10\xce.*\xf8\x1aFI\x10?\x1c;\xd5!\xb1\x08\xe8\xfd\x12|\xa7\xe4\x18\xb7\xcc2\xfb\xe2\x1f*\xf5\x8c\xa9\xc4\xb1]\x88\xa0\xd2f\xa0\xda)cI\xa9\xd5\xa0k7Z\x95T\x15N\xab\xcb\xd26|UO\xe5\x98\xb4/b*\x90\xb3@\x92L\x96\xc8h\x18\xc4\\@\x06\x8f#\x8a\xc4M\xb6\xc1\xc1\xaa\xa7\x95<\xd0X\xf0\x0dv\x06\n\x0bd\xae\xd6\xca%\xabN\x83\xdd\xa6)\x0e\xb9\x8f\x95\x8a2q\x9f\x8e\xcc\x87\x16\x0du\x00\x8f\xb0\x0e\xfeQ\xf0}\x82\xdc*\xda\x1f\xa2\xa0Xa>9\xe5FB\x80N-\xa2\xa4\xba\x9a\xec\xdbwFZl\xb1\x9a\xcf{i\x16#\xec\xc2\xedZE\xadV\xd1z\xff)\xa1\xfb\x89\xdd!%\xb2q\xdc\xa8cjW\x84\x87\x90\xb4\x10\x15\xe1\x04\xc4\x0fg\xcf\x9aK\x08*\x00#\xcd\x8a\xf89\x06Q\xb2\x071\x03\x7f+\xab\xdc\xb3G\x91H\x99\xb9\x95\xfal\xc4\x7f\xa1\xaa\x1e\xffp\xdf\xf8\x96\xd06\xd6\xef^\xc8\xd9y\xc1\x15\x9c\xeb\x0b\xb75\x10\x7f\x132\xa6^\xb7\xd0\xea\x12\x17\x8b\x18\x81'\xab\xaca\x85\xbd\x94\xbd\xceU\xd0I\xd7=\xb7B\x1e\x12b\xf5\x10\x91\x88wUl5\xfe\xe6\xa8^%\xb6\xaa\xc40\x84Z\xfcG\xbc\x8dV\xe9\x9a\xd1T\x07\xff\xc4\x97\x9f\xd8\x9d|\xf7\x89\xdd=\xc4Z\xd17\xcb\"Tf\x1bAV\xac/M\xaa\xbdCo\x08\xdea\xdf\x11y\xd1\x1bb\xf1\xae\x9d\xba\x9bH\xf8\xa3\x80\xfd/\x9c9\xf6=4J\x08\x14u\xf7\x1f\x8d\x0e\x87\x97\x8f\xae\xc3\x0e\xe7\x87\xbaZ\x1e1\"\x96c\xa3._\xc5\x0f\xfdV\xa0\xf4q\xda.\xa0\x1c\xee\xf2\xe2\xe1&@\x11\xe0\xf0U\x8466\xea\xa3\xb7)\x87\x95\xf8\x8dQ1Y/__ D\xf4w\x05\x83S\xbd\x18\x04\x81\x06M\xff\xb0\xff\xe5p7xx\x80V\xf8J\xd3\x8a\x07 \xce\xec\xe2\x8a\xf6\x0fP\x916\x18\xec\x9a\xd7\xe6\xf2z]\xde\xab\xef\xef\x05\x9d=\xda\"BN\xec\xb1\xe4\xbf\xd6l\xcd\x04\xdfP\x8f\xccm\xb7@h\xbbJ\xdb I\x94\x1a\xcf?\xfd\x14+\xe8C\x0csQ\xa9\xb8\xe4\x82\x8ah/z*B!\x11\x014\xb3\x8e@\x92\x04fF\x8a\x8e\xf2\xf7\x0b\xd8\xed\xe3\x95\xdb6x\xe0\xf3&\x86\xc0q5\x93a\xaeB\xf0\x02^\x16x\xa0g\xffs\x87\x16p\x9d\x1fh\xeb\xed\x1a^\xa2\x0e}\xad\x03\xbd\x01\xdb\xed?\xce\xdf\xa6\xeb\xa4h\x97\xa0\xd4R\xd1\xfd\x83n\x86RH3\x94\xdeXH\xfclZ\xdaT\xd77\x89!I d\xaa\xecr\xbb\x08\xed\x8b2\xd9k\xe9\xbc\x88U\xed\xe1\xa9mc\xaf-\x94\x9cEu\x84\xd2\xeeb\xbd\xf1\x8a\xa1\x95\xa9\xea,\x87#\xea\xad\x08\xbf\x88\"\x13\xf5\xcd!\x8c\x8a\xcb\x10\"\xebB\xbb\x11 \xaf\xa51^\x07\x11\x93\x91\x03%\xdej\x03\xa5\xbe)\x07\xda\xecM \x07\xfac\x9aM$-\xe8\x8aM\xf4bH\xe3\xder@Z\xc3(\x98\xf0\x11\x15fJ\x0crH\xf2\xe6\x1e-\xaa\xba!T3\x9aH#\xf4rd\xd8\xf0\x7f\xf0\x9e\x14\xac\xaa2\xbdo9l=\xc1\x82\xa6\xd4\x97\xbf|\x02\x99\x85\xf5_\xd5\x90\x17\x84\x9b\xa2a\xd2\x80\x86\xc9e \xf0\xb0\x0b0\xcfYA\x01\xd2\x05\xc5\xc4 E1[?\xa1\xc0\xf8\xe5\x0b\xd0\x05\x870\xba\x0c\x02\x85\xb0|\xd4\xa6{\"=jy\xe3\xe4\xd8=\x0e,\xa86\x8327\xc7h,\xac7\x96\xc9\x0e\xf9\xf9\xdb\xbe1\xcc\xe5\xec\x0093\xd6\x99.\xf7I]\xc0\xee\xae\x87#\xe7\x07\xea\x86l\xc77x\xc9'\xfe`/\xa0\xb8\x90\xbd}\x9a\x0b\xe1<\x86\xee\xaf\xa9\x8f#\xbd\xff8\xba\xdd\xed\xdeT\xc1\xdeP\x928I\xa7\x8c\x16j&\xf3(\xe3\xa5h/\xccP\x1b\xc0yI_(\xbaU)^M\x0d\x84?ARZ\x06\x0e\xf6\xf8\xde\x92\xc8P\xc0\xcbC\xd8\xdbE\xd5\xc1^\xa9[(`\x08\x1bJ\x9a\x15h\xad<\x15\xd2\xc5`\xf7)y\xdd\xbao\xde\xc2b\x98\xc7\x91`\xa1${si\xb0\xe3k8\x04u\x0d]\xe9V\xeaurB\xfbR\xaf\x81q\x0e\xcb \x80\xf5\xb2 \x86,\xa8+k\xec\xdb\x89\x85\x90\xeae\xde\xc3M\x97[\x18a\xf3\xf7\x18\xaa\x8b\x05|\xdfD\x8dJ\x0fdf,\xf2\x84\xe24\xa15\xe9\xd3\x0c\xe7\xa4\xd4Ex\xb5\x8c8\xa8$\xd2yO\x1a\xf7\xaam~X\x0f\xfe\x9e\xe8w\x01\xc2\x8eK\xf4\x94\x04\xbc\xea\xec\xbe\x08\xb5\xfb\xecI a\x8c>\x83j5\xcff!4\x82\xbe\x93\xbc\xa2\xf7\xe3\xcaJ\xd3\xb2eA&1\xd2a\xe7\xb3\xde\xd5]\xc1\xde\x08u\x12\xcd\xf8b6\x9a\"\xe8\xe5\xac\xf0\xc5\x0f\x0cb\xdd\xe6\xdec\x8e^\x05\x87\xc4\xf5\x9b\xc7yo<f\x9f\x0b\x96L1\x12]+\xf1\xee\x1a]\xc5g2~\x9dHca\xb7\xa3d\x81\xcci\x10\x82\xa3\xd3\xa5\x9dv'A\xc0\xa5\xd0\x83Rk\n\xa6#\xb5\xc3\x85\x89\xa0\xe0 \xfd\xacV]\xdf\xfe\x02\xe4\x8d\xa7_'\xa5\xad\xaa\xfc\xe8w[\xd5\xc7\xbf\x83yQ\xac\xf2\xe1\xa3G\xd7q1__\xf5&\xe9\xf2\xd1y\x11e\x13\x14V\xb2\x9d?D\x93O\x8f\xfep~\xf6n\xe7}TL\xe6\xfa\x97\xfe$\x80\xdd\xfe\xe0 \xfc!\x8d&\xf3x ?\xb3\xbc\xd0\xb3\xd0\xfe\x0e\xde\xbe\xbe\x00\xe9\xc1\xa2\xbd\xae\xbcRJ\xf07\xea\x8f\xa5\x1e\x92\xd5,#)\x81.\xa6\xe9U\xdd\x0e\x98\x91\x17{%B\xa9\x8d!++\xddj\xd8`=Y\x08\x1cC\x95 \xe1 \xaf$\xe9\xfa\nZ\xa3\xd4\x84\xe2\x92\x1a6 \xca\x052j\xf5w\xf5\x9bU\x16\x08\xb8f\x92J\"Gg\x06v\xb0FG\x01\x96\xd0I\xc8\xefv\xa4^\xb5\x0cY\xe9=\x12D\xd9.\xf8o\x0fS\xec\xca\xf4\xb8R/\xf4\xdf\x8f\xaeC\xf0\xfe\xbb\xefi\xba\xa2??\x12/\x07-f0k\xb7\xfc\xde\x0c\x16k\x89\xcaK\x02w\xa4-\xbc\xab\x1fe\x97\xc6y\xc5Yz\x0c\xdc\xeb\x88\xe4\x1c\xd7\x13\xf1\x94,&o\x89\xf3\x9f\xc8wb\x06\x9256\x8f\xf7\x14D\xeb\x1c\xb5Z\xa8\x8e:\xeb\xa8\xcb{\x93<\xca(q\xbd\xb1\x18\xda\xff`wxw\x84\xaf\xa6\x8c\xadN\x16i\xc2\x1a\x0f\x11e\xfa\xab&D\xc1MXv\xca\xd9\xd3F\x9dr\xd0Z\xa2e\xfc\xb3\x0c1\xec\x93V\xb5\xa2\xe1\xca\x9c\xb0\xb1mZ\xc5\xd0\x18\xc9Z]\\9\xb6\xecW\xcc@\x9fsI\xe7\x1aS\x95\xbb\xc1T\xd1\x15IABi\x80^R\x10x\x01\x19i\xdd\x8f\xac\x96o\xb0\xc7\xc7\x05\x06\x19|y\x08\xfbO\xc5\x05\xd9\x8bCx\xfc\xc4} \xc3\x9fd{\xbb\x81\xf8\x10\xd74|~B3\xfd>*\xe6\xa5R \x0e!\xe2EJmm\x16\xba\xc1\xa0\x00\xaam\xfc\x01n\xf2G\xfa\xc6\xff\xef\xbe\xd8\xf8\xfa\xbeG\x94\xc4\xa8\x0b\xc5\xfc\x03\x9b\xac\xb3<\xc6$\x86\xebP\xf8r\xf1\xf7mWB\xb8w\x8d\x8dk\xedX\xc5\x95H\xaabs\xab\x9e\xa7|(\x84s\xb8f\x1c%\xe84z\xda\xce\xd2u\x82~\xbcY\x9a\x16\x8e\x9c\x98\xe6~\xc6I\xce\xa3\xfc\xa3BhmB\xc0\xec`\xf3q\x15\xc4\xb0\x99{\x16&B$fuq\x8e\x01\xcb{ \x94\xfe&u\xec\xc5c\x90\xfc\x1a\x14\xf4}\xe4\xc0\x02\x02\xd9\xd4\xf3\x95\xcc\\V^\x94\xb9\xc6\xa7\xae\xdbb\xdf\xb4u\xd5\x9f\x08\x15\xaar\xd4\xeeyjg|\xd4qV\xe9(\xb9l\x99\x18\xb9\xdb\xaa\xe4w_\xeb\xb2~3\xef^\xa2E\xa1\x19(;\"yH\xc3\x12\x91\x92\xbdL\xf9\xa9l\x9cD\x96,\xe1K\x89\xb9 \x12\xf9\x13\x0fl.\x89\xc8\xdfe.fyh\xf0wE\xc6\x98\xe5\xd8EN\x14\xcd\xb5Y]B\xf0q\xdbh{\xa3\xe8!w)l\xb1:\xc6\xd0\xa8d \xcb7Q\x08\xef\x83\xc7\xa6\xbeD\x08\xefOLY_\xba8\x0e\x1e\x93.\x8e\xcf\x06OZ%\xac\x86k\x04\xce\x06Q\x97\xc0\xbc\x81]G\x19\x17\xf2\xf7\x1ce\\\xc8\xdfw\x94q\xf1\xfe\xc0Q\xb6\x82Cx\x0c\xea:\x9cH\xa2<\x05y\xfd\xbd&iV9\xd9\"\xe4\xb4w\xde\xc8D\xdf\x84\xb0\x0c1\xd1\x1bnKL\xea\x96\xfa\xd7A\x08W\x98kv\x8d\xd9\xe4\xf6\x82\x10\xc6\xfcL\xf1\xef*6\xfbV\x90\x99S\xf4\x05?\x82)\xefo\xccE\xa4\\\xfd\xeaW\x06R\xcfa\x0c/\xe1\xf69\xdc\xba\xb6*\xdf\xa6\xfe\nc_p\xa2,\xa3\xe4/\xe1\x10\xae\xfc\x1b8\x84\xbb\xd1\xede\x08\xb7!\xf0\xc1\x99Z>\xb3\xa1$\x80\xd3\xd1-\xe7\xf5\x974\x11\xe1OI\xc5\x96A\xb7TA\xa0\x18\x9a\xbdf\xbf\x17\xd0\xcfjw\xff\xa0\x9a{\xdc\xb9\xb9\x9b\x0e\xad\x1dtn\xed\xb6Ck\xbb\xed\xad\x9d\ny\xe5\xc6\xbd$\xda\x891i\xe4\x7f\x14\n\xc3\x11\x17K\x86\x80\xd9\xf5&p\x04\x13\x18\xc2i\xad\xba\xe9\xeax/\xcd\xa9\x14\xdb\xc4a^j$\x8a\x10\xbc*\xd3\xb7g\xfa^H\xd3z\x9d\x0d\xe3T\x13Sv\xa5Y\xfcW\x95\xde\x1d\xcf\xdf\xf2\xe5\xf1\x04\xed\xca\xa4-\xda\x0fQ\x1eO\x8e\xd7\xc5\x9c%E\\\xa6bpV\xff1\xcd\x96\xef\xa3,Z\xe6F\xad\xd5jA~\xfe\xbeJ V\xf4V\x19;V\x05\xaf\x97\"!1\x16\x9c\x9c\xbd\xfb\xf1\xf5\xef?~8\x1d\x1f\x7f\xbc\xf8 _\xfd\xf1\xf8\xcd\xebW\xc7\x17\xa7\xf8\x83\xbf=\xfb\xf0\xfa\xff\x7f:>\xe3\x7f\xee\xe2\xcb\xf7\xb2\xbaU\xf0\xe6\xec\xf7g\x1f/\xea\x1f\xe2\xaf\xf3\x9f\xce~\xc6O\xc6\xef\xcf\xde\x7f|\x0f\x87\x8a(|W\x81T\x86\xcf\xf5\x13\x7f\xff\xb1yE\x9f\xca\x92\xdd=\xea\xf2\x1e\xbf\x19\x04\xb5C*\x9f\xa7\xb7\xaf\xf8\xa2\xc6\x1c4\x9d|\x9e\xecm_`\xea\xf9 A\xa1\xa3\xbbE\x1aM\x87\xcdbG\xb9\x16\xdf\xd2;A\xfe\xbb\xf5\xbeH\xaf\xd3u'V\xdf\xd5\xf5\xea\xbe]\x97\x13?\xe3\x7f\xed~\xcb\x18\xa6\xf7\x1d\xc3\x04\xa3=\xaf\x05\xe2\x7f\xcb\x08\xe6\xf7\x19A\x1d\xb1#\x85\xbe\xfdg&\xfe\xaee\xd1\x9ee\x96\x92\x0bV\xa7OZ\x9e\x10nEJn\x13&\x1e\x15\xf5\x92\x8a\x1c{zJ\xacv\xcf\xa26\x89\x89c'{|\xab\x8dW\xe9j\xbd\xf2\xec+\x8c:%\xf0J\xcc0\xaa\xae\xea\xf4\xc3\x13\xc8kT\x9ab\xcaK\x17\xf9\xf1V\x19\x1b\x97\xed\x8fSD=/\xa4\x89\x98gU4\xa0?\x17}i\xc4\xd0S\x17\x97\xd8\xa6E8\xbd\x12\xe1p\x10^\x8d\x1a9\xe8o+NV\x9c\x1c\xc5\x95\x94\xcay\xdcp\xc7X\xb3!\xe2m\xd1cY\xd6XKx\xd2\xf3\xc6\xe8\xf2H\xc4,K?\xb1\x84\xae ,\xa8\xa5[#]e!\xf2RM\xe6l\x19\xd15&\"\xc2E\xb4t\xf8\xfb\x8b\x9b\xb1kV\xf8\xdel\x91\xdeR\xe1\x82d\xc4\xf4uO\xe2x/\xbf\x8d\xae\xafY\xf6\xf1\xf5\x076\xc5\xb8\xcf\x822\x85\xe0E\xe51+t\x063\xcep\x88\x1c;\xbd\x84\xdd\xf2e;\xcd\xcc\xa4\xfe\xea\xe1\x8d\xbc\x9e\x92G\x04\x7f\xf2t\x9dM\xd8P\xe5\x90\xa7\xe1\xc1n\xd8b\x08\xdem\x94%qr\xed\xa8%%\xc1!x\n\x8f\xc4\x91\xbf\x8c\xee\xe0\x8a\xc1\x1a\xddgCXEy\xce\xa6\x90\xa3y\xc5m\x94\x83\x88\x0e\x86J\x8e\x9ce7,\x83\xf7F\x95\xe4\xdf\n\x89ml*\xc2|a\x1eRQ\x9b\xb0C\x0cB\x88z\x18J\x0c\xed+~M\x10a\xafm\x00\xf2\xfb!\xc4j\xdd\x03?\xa2<\x821\x13\x97qH5\x0c\xdf\no\xa8\x1e\xdc C\x88\x88.\\$U\xa7\n\x14\xaf\xf6\xeb\x92\x04\xd6\xb8\x11c\x11X\xc3\xb9\x11\x059(\x13\xab\x91u\xd62\x84\x87\x98\xa0\x9b$Tu.\xac\x8bt\xf5L\x84zu\x11\xb3\xa4x\xedhk\xa6\xd59g\x93\x8c92\x9b\xaf\x9c&\xba\xfc\xb9\xce\xa2\xa4\x18\x8b\xf3\xdfS\x03s`\x1e\x7f\xf2I\xca\xabrp\xa6+\x96K\xfbF |\x16\x01\xac+A\xf5\xa0\xc7\x9e\xa3l.}\x15\xcd\xf7JKy\xc5\xa5 A\xc0\x16p\x04\xf3^\x9dL\x1c\x82\x87\xf2\x06\x9a_\xf2\x1d\x92\xf7\xae\x8a4\n\xfc\xa8\xcc\xf8\xba\xc6\xbbM^\x96V\xbbgEy\x9d\xf3G-:\x89\xfc\xae\x8f\x14 \x87\xb0&\xe9\x8a\xcc\xc1[\xce\xc2\x9f\xa0\x06`*\x97s\x1cs\x08M\x82\x10f\xf5\xf79\xae3\xdf<\xe8\xba\xd5y\xf2\x93r\xf2\xb3\x00\xd3\xec\x99\xf2\x9b\x83&\\\xa5\xd3\xbb\xa1ji\x1d/\xa6\\8{\x15\x15Q\xe0\xaf\x1c\x8a\xcdu\xb6\x18\x8a\xe0\xce\xbe\x87T\xe3c\xb60Y\x0e\xf5\x08\xb8\xc6\x0eD`\xd1\x94e9\xc9\x96\xf2\x07AH\xb2\xcdPR3\xe2N\xdcI\xafB\xb7\xb0\xf9[\"U\xa9\xac\xc1w\xdf\xb7\x10\xb3f\xe2\xb2\xeeH\\l\x93b\xfd\xa9a\xe7\xb0\xcb\xce\xdc\x84\x8a\xd0\xc1\x00\xd4S#lr\xfbL26eI\x11G\x8b\xbc\x9d\xc4\xa5m\xb4\xcdI\xa3\x1eb{M\xee\xb3e6\xd9{r\x83\xb4\xec=\"r~\xc7\x0d\xe4\xd6\xe9\xb4\xdb\x00\xb98\xf3D\xba:\n\xc6\xf6c\xb6hV\n;m\x8f\xb3\xb2\x8fV!\xa1h\xe5\x1b\x8a\x96\xadVt\xd8j\xc57o\xb5\x1a\xbaG\xfa\xbe\x1bO8\xc7\xefF\xf7 f\x08(z\x13g\xd81\xac\xa5\x0e\xa6!8`\xa1\xd5\x12\xc7\xd4\x10\xd6\xee\x9aj\x11\xc7\xeb,\x1e\x12V\x04\xd0\xb8\xc3\xb2\x07\xd8af\xd2U\xf5\xb4\xef\xb0t\x93\x1df'\x9c\xbe\xd7\x0e\xa2\x95\xa8\xff\xdcJ\xb5\xe7a\xb6\xd2o\xe6\xd4\xfa\xbbm\xe3\xbf\xff\xe6\xbc\xff\xf1\xb7\xd9\xe6\xfc\xa5\x8e\xbf\xeaZ\xe4\xc1x\xc7\x99C\x13%\x90\xfe\x9a\x152\xeb\x1f]+\xef\xc6\x7f.:i\xcf\x84\x824\x8d\xf2\xbds\x0c\xae\x9e\xbaR\x15 \xbdh\xbeb\x93\x96\x8a\xabrx-\x15\xa7Ho8\xe68\x96\x0e\xcbQ6\xa0+\xdc\x94W2(}\xcd\xe1\x08\xfe\xf6\x15\x9cR\xc6\x12\xdb\x93\x08AW\xb9\xae\xb7\xb8T-.\xe9\xeaw-\xec\xf9\x95\xd05dD\xa4 \xfe\x8c[4\x97\xb7p\x08\xfeJ\xc3\x07\x1f\xad\xe2\xff\xf65\xe8E\xd3)\xde\x11E\x8b\xff\xe0\xf0\x11\xd6\xfa\x82-\xa3\xdb:%\xae\xaf\xf4\xb2Y/\xce\xcf\x8e\xcf\xf7\xfc\x80\xcb\xb0\xfd\x10\xa2J\xa0\xbe\na\xd2\x13\xb1\xf7\xd9\xf4\x1cul\xbe\xc8\xac\x0cC\xa2\xee\x8c\xcfXV\x08\xeb^\xe2\xbaU\xd1-\x1c\xd5\"\xf6\x89\xa6\xb2\xaa\xa9\xdb@\\\xa6\x9f\xca\xb4\xf4\x87`\x08\xfa\x7f\xfb\x1a\x82,\x0c\xe1\x96\xb2\xe3\xe3[\xee3\x1c\xc2i\xe9\xd1\xe0;\x88\xc89\xd1\xbc\x93\xa8\xf2\xf3|\x85a\xcc+\xd9\xf2\xd1_\xf24 \xa1`\x9f\x8bG\xabE\x14'!\xfc\xee\xd1\xef\x1a\xa8\xbcw\"\x82[\xee\\\xdc\xad\x98g4\xf6y\xe7\xf6\xf6vg\x96f\xcb\x9du\xb6` ?\n\xa6\xb6b\x13\x04\xb5\xba\xa6\\\xb3z3VL\xe6\x8eY }\xfd\xec\xd8'\x18\xd6i\x08\xde*\xcd\xcd\xdb\x0c\xf5\x94d\xf5\x9c.\x97\x12\xfd\x8dc_\xe0i\xe18\xf9e\x9c\x1bt\xf3\xe2`N\xb3!\xac\xfd\xa0g\xbfw}\x9f\xaf\xd2$gD\x03V\x81\xd5\xc0\xd7\xa0\xc7\xf92\xbf\x99[\x02\x8d+\xd3,KYo\xcaO<\xf7\x92#\xf5\x97.\x91B\x1b\xfd\xe5\x0bx\xaes\x0d\xd4\x15\x88\xfc\x02;9\xd5>\xa3\xed X/\xfd\x84\x0e\xcc_\xbe@\x06G\xb0hWw\x83\xa6\xf2v\xd0Z\xe8\xa8\xd2\x86\x8e\xeaqhP\x7f\x13\x16\x85\xa0T\xe0yG\x158\x94\x8c\xc1\xd8=\x00\xa9\n\xb7\xf9zP\xdd\xfd\x03\x00\x8f\xf5\xf2\"*\xd6\xf9\x05\xfb\xec\x9a\x08\x85\xe6\x98\xaai\x03<\xaf\xacQY\xa0l\xfch\x04D\xcb\xc5r\xb7\x89\x9b]\xf5K\xec\x90\x06\xae\xf9\xa6\x0c\x00P\xfb\xc4m\xf2C\xe7\xa6\xd2\x1f%\xdbh!M*\x17\xad#}\x03\x8bL\xa4\xcd\xe6E\x99\xdc\xb9\xc2sp\xfb\x10\xbc\x10\x98H\x16%\xc2\x04\xe0\x0ft\xee\xc5\xbf\xc6S\x96O\xb2x\x85b\x9e\xfe\x91\xf6\xbe\xf6\xa9\xfeA\x93m\x92\x96k\xcb\xf6\x0e\x02\xa0|\x86\x00\xfd\xec\x7f\xf3\x18\xbd\x01\x1a\xd7^\xfd\xf6l\xab\x10\xad\xfe\x14-\x17\x82\x81s\x99\x10\x95\x19\xa7\xc8\xe8\xbb\x98k*\x15!U\xeb&\x12Y\xb3\x89\x84\x91\xbb\xb6v\xb7o\x0d\xac\xd1\xd8\x94\xdedR\xea\x89\xab\x0bk\x0c\x87\x1cM-g\xea\xc6\xc4p\xb2\x19\x91\x0fT\x13X8\xa2^\xcc\xb3\xf46\xe1\xa8\xaa\xd3\x9f 4q\xfe\xb7\xb7\xf4\x8b4\x9a2a\xc8vq\xf6\xfb\xdf\xbf9\x1d\x0b\xeb\x8bs|\xf5\xf1\xfd\xab\xe3\x0b\xfdU3^\x98\x16\xc5\xbf\x14Z\xacUh\x86Flh\xb1=\"\xb4\x11\xa5\xed\x91q\xd2s\x0e\x9e\xd9 *PrH\x16\xe9\xf5\xf5\xe2\x9b\xcc\xd1\x08\xe5\xe5}\xac\xa1\x88e\x93\x064\xf9X@\x8ep\xc9&\x96\xbf\xfcH\xcc\xcc\xd3W\xa0D\x9br\xb2m\xba\x86\x1a\xfd\xbf\x07\xf6\x97\xafK;\xadL}D\x07AG\x03\xfd<\xc3\x8bmi\xae\xcf\x92\x9b\x9aA\x7f!\xcd\x17\x95\xc9?\x92\x1b\xe4e\x95}?\xe7\xbcr\xcd\xe0\x7f\x95\xe6\xc20[\xfdz\x1bq\xc1M\xf5%\xed\xb7e1\x9e<zu\x11\xe1\x01}$\xeb\xaf\xde\x185'\xd1d.\"P(g\x84\xfcu\xf2&\xba\xc2J[\x03\xd5~\x9c|2\xbf\xe4\xef\xa4\xc4\xa6\xf7\xb3\xe0\xdf~L\x96\x98\nxz\x8ewy\xfc+cE\x009\x87\xcayv\xb5\xce\xe7\xef\xcbQ;\xd7Z\x83\x95\xb0Vva\xb8\xc7\xe5N\xe2l\x95 \x14\x865\xa0\xd8\xd5\xe4QnA\xae\xbe7\x02\x02\xdc\xfaV5'\xd8\xb8ek-)'m\x0d,~\x10\xda\xd3g\x01\xbd\xbc\x15V\xb8\xc6\x83\x0b\x7f\xce\x8a6\xdaVsG\xaaPFwH:\x04\xa6\x1cs\xabr\x1c^\xdft\xa1-\xcbG\x18\xc6\xb7h\x1c\xdd\xefY'%#\x83\x17\xf6\xc0\xe0\xc8\xe8\xac\x16\xab\"\xdc<\x02\xc0\xafpB\xe6\xac8\xaf)\x95\xda\xd6\xa6\x85\xca\x13\xfa\x80\x92\xca\xd3\x8cn]\xa7\xf51[8oQ\x93h\xc9\xf2U4!\xb9S'+\"g)5\xc8?\xa4\xd3;\x8c\xb0\xdc\xf1\xb6\x07\xe1f\x0f'\x91\x86G\xc5\xfc-*j\xc8\xdb\x1e\x17\x8c\x08\x9b\xb0\x16\x18\xc9\xd5sY$\x95\xc3\xa0.\x17:\x02F\x92\xd5\x0b\x11\x9b\xe0\xef\x05\x1a\xe2&\xe2\xef\n\x1a!\xfd\xfe\x02\xb0\xb1\xcb\xc4\xcd\xdfrs\x985\xb1z\xf7\x85\xd9\x10\x1c\xb7#J/Ih\xedZ\x80)\xf6\xf7\x1f\xa3,\x8e\xae\x16l\x93=(,J]\xd0,\xa9\x82\x0b\xa4\x9f\x18!?\xa7j\x996\x02u\x13\x0f\xeb\xa2n|\xecNXk$\xcd\x01\xf0O\xec\x8e\xa4\xaa \xd6q\xa8\xe5\x96T\x8fs%\x0c\xc9F\xe7\xa6\xcfO\xdf\x9c\x9e\\\x9c\xbe\x1a\x9f\x9f~\xf8\xe3\xe9\x07L\xe1\x1a\xe5{\xe3\x9c\x15c1\x07\xd3\xc4'\xd5?\xffp\xfa\x1f\x1fO\xcf/\xc6?\x9c\xbd\xfa\xd3\xf8\x8f\xc7o>\x9e\xd6Z\x90j\xe3\xf1U:\xbd\x1b#\xf6y\xb6,e5&\xb3T\x8d/\xfe\xf4\x9enN2Vx\xbfk4\x18\xd5\x1b<\x7f\x7f\xf6\xee\xfc\xb4\xa9E\xb1\xd3\x9b\x9a\\\xd7\xe1\xc5\xc14\xfe\xe3\xf1\x87\xd7\xc7?\xbc9%\xe6,\xa06\xbe\x91\x08/\xa7\x8d-\xde\xeb\xd8\xbf\xd1\x02\x95R1\xc2\x12\x7f\xb7O\xba\xc2\x0e\x1e\x9b\xf1\xad\x84/\xecc\xb3\xbap\x85}b\xbe\x16\xee$\xfb\x8f\xcd\xf0\xa8\x0b\xe19kjK&b,\xfbf\xf5\x99\x18\xcc\xb3\xc0\xf7\xe2\x82e\x11Fv\xaaWYq\xfe\xdf\x1f]b,\x14\x8c\x9c\x91p\x8e\x1a\xe2\x04\xe4K\xdf\xf4ui\x94\xd2@Sl\xcc\xe3\xbc\xbe-*\xc8:\xdd}Q\xfa\x9a\x87\xca\xd3\xd5l>\xf7\x13\xacdFQ\xe2+u\x17\xc2U\x08c\xe1\xea\xda\xae\xe0\xc50\x10\x98 \x0b\xf3R\x9c\x94\x9e\x8e'V~Z\xf5tr;\x15148\xe4\x1a\xf2\xad\x89J\x88\x9fM\xd5\x80\x96{\x1b\xebk\xdf$\xec\x16\x12\xe9\xa7\xee\xc8\xe7\xa6\x9eMT\xa9\x9b\x8c\xa8\xfbH\xec\xbe\x08\xf3\x13\xf4P\xc4\x10\xb5\xaf\x15B\xdb\x95>K\x07 \x0e[8<\xa4n\xe3\xce\x85\xd8k\xbd?\x11\xdc\x02\x1d#\x8e?\x9f\xe0\x10NF3\xcc\xfas2\xf2\xfe\xfd\xdf\xcb\x8d\x85\xafn8>\x9d\x8cn.\xed/\x8f\xe1\x10>\xa1\xc3\xb4\x7fC\xdc|\x9d\xc1!\xdc\xc0\x11|\x86#\xb8\xf5=\x96\x14Y\xccr/\x80!\x1c\x97~\xd9\xf6g\xe8\xd4\x85\xb1&\x84~\x1f\xfb\xef\xc9\xafyoF\x82@\x8e\xf5\xefQ\x1f?\x86C\x98\xf8\xefeT6v\x0b,\x08\x02\x8c\xe5i\x86\xbc\xe2\xd5\xc7\x98\xb3\x13?\\\xf8\xe3\x10N\xe55\xb7\xb8\x93S\xa8\xa0\xdf1\x8c%\x94\"^}\x16\xc24\x08B\xf8\xcc[\xc0\xbc_\xe5\x02\xf1\x1e?\x89X \xbc\xf5s\x19i\xf4\xb8#\x95\xf9T\x05c0\xb4i8\xba\xef\xbf\x87\xadk\x0c>\x8f[}\xeb\\,\x90\x1a\xda \x0e\xed8\x08a=*\xb8\xa8z\xcc\xff:\xe5\x7fMC |\xa49\xfc\xee\x9c\xf6ObNC\\D\xbej\xb7\xbe\x9a\xa6\xe3\xaeS\xc4Y^V\xd5\x91n8*\xcbU\x1d\xc2\x19\xb1U\xe0\x9a\xdeV(\xd8_I\x1f}\xfc\xff\x84O=\xe6S\xbf\n\xe1ntuI\\\xa8\xa2\x03x\xea\xa7\xbd\xf7\xb0\x0di\xefG\xf8\x1d\x08o\xff\xf3\x00\xe9\xef\x1d\x1d\x80e\xc3(\xf7\xfa)\xb0\x95\xf8\xfb\xfb\xa8\xd5\xddJ\xfc\xc7\x83\xc0\x9dQP\xf6\xf5\x04\xb6\x0e\x1d\x829?\x80\x0f\x02\x99\x9f>\x04/\xb2ds\x10\xc9w\x86\xedDL\xf5f\x83\xdc\xc0\xb6^\xe5\\!\xefg:\x07\xdaxLG\xc9|B\xe5\x85\xe1l\xc1^\xe0[9cd\xb0\x8d\x83A\xe0{\xafO\xc7\xef?\x9c]\x9cy\xf7\x0e\xb0\x11\"g\x92\x92\x894\x84\xc2\xd2z\xbdp\xc5M\xc3P\x82\xeb\x00\x12\x0ci\x89z{\x7f\x8d\xb0\xc0\xa8\x902\xc4/\xf1\xe1\xf32 \x0e\xbc\x84\xfcy \xbf\xe3G\xc0(\xdf\xde\xbe\x14f2\xff\x1d\xfb\x0bl\xed\xcb\x97\xaa5\x1a=\xcd\xa8\xe2\x9d\x17hw\x10\xf4T\nb\x1a\xa4\x99\xb8\x8fP\x95d\xd0\xdd\xcdzq\xa1\x01u\x0bb/\xb5\x8d\x0e&\x1d\xa7GN\x06\xd3\xac\x07\x8btj\xe4$\x8a\x08\xcdy\x8ca\xe8F\xf1%\x0c\xe9\x13\xc1\x0en\xaf\x07 \xad\x97\x1e\x19\x91\xef\xab\xc3hX\xffL\x86\x88:\x82\x08\x86T\xe4\xf8\xce\xd0\xdf\xdb#\xa0\x9f\x8d\xbc\xf1x\x92fl\xe7/\xf98\x9fG\x19\x9b\x8e\xc7\xe2\xa8\xf7]e\x87\xf0\xb7\xaf\xad\x1b\xcf\x01\xd2t$r8\xfa\xa9\xd0\x9c\xfe\xedk\xd02\x1f\x17=\xbd\x9fF\x91%\xeb%\xcb\xb8\xf04\x84-\x7f\x00\xdf\x03E\x01\x94\xf7\xb4\xaa\xb7\xeb\xa8w\x9b\xc5\x85\xaa\xb3\xef\xa8\xa3\x14#\xb5\x82o\xba\xd8\xa9Z.\xb7\xef\xfe\xe3\xc0\xdf\xd2\xb5\xd4\xfc\xddA\xe0\xcbh\xbf\xe0\x89?\xbc\xa6$\x1a\xa8g\x1e\x17p\x08\xd2\xa2\xaeT\xca\x8f\xe3\xfa\xcdG\xe8>U\xf8\x98\x98L}/\xda\xb3!Rj\xe0\xc71I\xc5\x12xyXQ\xc6#b\x15%L]<\xe34M\x98\x9d\xe0\x15\x86\x18\xcc\x0d2\x91\x7f\xa0\x9a\xdb\xf6a\x19V\x8f:Feg\x04\xaf,\xfb\x19\xd4\xfb\xd1\x10z\xc3cr0\xa0\x03R=\xde\xbb\xefv++4\x05\xd3\x8fC\x88\xc4y(\x17>\xf5\x0bS&V\x0f\x1e\x05~\xe2(\x15A\xa6]\xd1\xd2\xe4\x98rx\x01}\xe1\xd7\xfeR\xb8V28\x02\xcf+\x85\x00\xbeP1\xb6\xa4\x05/\xcc\x83\x00^\xc0\xe3\xc7\xbb\xcf\x0e\x90\xbd\x83\x97\xf0\xf8`o\xf0L4\xb4\x0d\x03\xe9\xa8\xc9iKd}\xcc+\x88\x06\x0e\xf6v\xb1\xf3\x887\xf0do\x7fO\xf6/\xeacG0\xc44H\xe2m\xbe\x88'\xcc\xcfC\xec\x04s\xd5D\xb0#\x9b\xd9\xe6\xe3\xdc\x91\x83z\xf1\x02\x06\xfd\x00\xb6\xe1\xe0\xf1\xe3\xbd\x83_v\xb7\x9b\xfa\x11\xa9\xab1\xb1G\x86-3\xe9\xbeT\xd5\x98\x1a\x9c\xb5\x0c\xf1a\x9e\xc6RWs@\xebj\x06\x96ng\"\xeb\x9b\x83\x94\xca\x9a'\xffT\xd6\x10\xcf?\x955\xfa\xf3Oe\x0d>\xffT\xd6\xfcSY\xf3Oe\xcd/\xa6\xacqjj\x06duw\x18\xd1\x03\xc7\xdd\xc9\xe3\xbe\x83o\xd3\xc2\xb3w\x12DQ\xfcL\xdb$\xa5\x0d\xf9\xca\xb7Q1\xef-\xa3\xcf6\xcf J\xe2\xa4\xc3 \xe9\x18\xb0d\xb4\x19\xf2\\}8\xe2b4l\x83\n\xc2\x19\xfb\xcc\x88\xc9\x0f\x1b\xac\x8f\x9e\xc8#4\xb2\x96\xc4\xb9\x9e1c%_\xbf\xceOK\xb9/,\xd27\xe9$Z0)\x1b\x95)Qpo\x9c\xcd\xbc^\xbeZ\xc4\x85\xef\x85\xde\x86\xec\xfb\xde\xde\xaf\xa2Dq\x04\xad\xdd\xa5\x95i\xc8o\xe5+6A\xfa}\x8f\x15\x95\xea\xb2H.hk\xca\x14\xcd\x13,\xc2CH\xfd\x16Q\x923?\nF\xf1e \x13\xef\xa4z\x92\xf3\xeeh-b\x17\x87J)h\xddR\n^v\xff\x89 \xab\\nL\x07/{`\xf2\xc4\x13Zs\xc2Y\xd9\x89\xca\xcdl\xb3\xb0\x93^\xce\x8a\xd7\xcb%\x9b\xc6Q\xc1l~u\xd2\x9b,X\x949j\xcc\xb1\xc6[a4\x7f2\x8f\x92\x84\x19~\x867X\xe3U\x9c\xaf\xa2bb\x98},m\xe5\xe55\x11\xca\xe7\xae\xed@CA\x1e\x0ea\x9b\x9fe6I\xe6'\xcf\xb5\x99:\x85\xce\x90\x01\x9a\xe1\xc5\xb5\x93\x9b\x95A\xd2x\x85\x10\n\x9f\xf0 \xa8\xbd1\xa6s\xd5\xcad\xdf\xc9\\ \xc2Q\xa5\xdeV5\"<\x96\xa7(D\xae\x1a\x9b\xac\xa5\xfd\x18]\n\xad\xed\xe09D\xd95n\xed\xbcR\xec&\xcf\x03\x95C\xa3,\x1d%\xdb\xdb\xe6I'\xf7\xcf\xf5h{{y\xd9\xb6<k\x9f\xd6@\xca\xf8\x8a?V\x03\xb7\xad\xb0C\xc8\xfce\x10\xc2\xf2;\xedUs\xb8/mu\xf4\x8f<\xb9\x05p\x08\x89\xff\xecY\xe0\xcf\x024To\x84\x1dro\x17\xf1\xe4\x93\x1f\xf9wh(>\xd0\x02(\x7f\xe5\x0c&_\x87\x9b^\x92\xde\xb6\xb6\x86\xb5\x9c\x0d\xcd\xe1H(\x13|$\x93\xec\x16\xe6A\x8f\xd3\xbd\xdd\x10R\xfcc\xd0K\x93*\xb4\xf9\x95\x08T\x1f\xf9qo\x95\xe6\x85\xdc\x85Hk\x06\x18\xcfi\xd2\x8b\xa6\xd3\xd3\x1b\x96\x14o\xe2\xbc` C\x9aN.\x86\xd6\x00r{\x93^\xbc\xe4=\x9e\xa3\x17P\xceG\xd6<\xb5\x89>\x06<@=/\x04\xefw\xf54\x07\xf6\x88|ON\xc8C\xaejK\x8c\x1c]\xa5\xd2$c\xd1\xf4\x0e\x03\xee\x89p|(]/|O\xf8&a\xaa\x15\xf7\x88\xf2^\xb4Z\xb1d\x8a\xf9\xe8}\xed\xab\xa0g\xb7\xdc\x86\xc3y/c\xcb\xf4\x86\x89\xc6\x90g\x0e\xcb}\xea\xf4\x1c\x80\xa6\xcc\x959+.\xe2%K\xd7\x85\x86\x11\x9c\xe9\xa8\xbe\x0f\xeaF\xb3\xd6\xf7V\xa4Y\xa4\xd5C\x98VM\xe0_]\xb9\x15\xf7`\x1b\x9doh:\x8a\xeaF\x9a\x1f\xbf\x19\x02k'\x9b]\x1cv\xdc]\x13\"\x1f\xc8\xae\xdb:n\x81\xde\xa6\xec\xce\x13:D\xff\xe0I{V3G\x9e\x8f\x0cie\xea\x17vj8\x91\x90\xa8-\xb5q\xdc\x9b\xb9\xb2\xfe\xfa\xfd\x10\x92^\xc6\xf2tq\xc3\x02\x8cl\x8f\xa9\xfc\x96\xb1\x96\xdfjC\xc0X\x10\x10\x80yF+\x01\x91\x0dDg\x86v&\x90\xe2\x00\xe9|\xf3\x98\xc7\x8f\xcb\xc9Z\xdaT\x91wF\xb2x[[\x9c\xc9\xf3>\xb0\xeb\xd3\xcf+\xa4\x8di-%\xe6\x86s\xb6\xf8<\x95\xb0\x81\x9c\xf3\xe3{\xe1\x82ZN?\xed\xc9\xab7\x11\x9aA^\\\x89w\x9cK\xb10>\"\xc2\"F\xd2A\xc0O\xf0\x161\xeb\x9d\xa3C(\x17ac\xb7\x05\x00\x88l\x9e\xb6\nA&\x8c\xf1B\x88\xee\x0d\xc4g\xae\xdb\x84Zf\x97Nr\xa9\xa6\xeb\xc9\xea\xc9\xc57\x1a\xd1\xee\x9eC\xa69\xd8Cyc\x12\x15\xbe'\xf8)O0\x1dB\xc2\xab\x875\x9e\xd5\xeez5\xbe\xf4]\xb4d\xbf\x8e\x9c\xbdk\"\xa2\xdc\x934~Z\xe6\x0fR\x9aylj\xce\x854c\xdd\x9eKaf\xcf\x14Z\x16.@\xbc\x92\x0e\xc8\xba\xe4&\xe0&lS\x8e`\x01- peF$\xcc\x98'\xae\xf9\"\xbf\x90\xda\xb7<h>\xd2\xccL|`\x1eH_\xad\xaedN\xa5\x92\xf4\xa6\xfeV\xd6\x9bii\xfdB`\xa3\xe2\xb2m\xc5\xcc\xe5Jp\xa7\x96\xb1C\x1el;\xa8D\xae\xf8\xc9\xa5\xe0\x8a-~\xa6\x13R\xb9Y\x94\xd2\xdd3\xf1\x1f\xef\x99\x18Ty\xeb\xd4\xfdr\xbat\xd9v\xed\xf4\xec\x80\xde\xa4O\xcc\xf7\xb1c3\x08\xf4\xb6\xac=\xe4\xbd\x93\x95tGS\x94Ey\x1e_;\xd4Q[\xb8\xb5[L\xaa\x944KE\xb4-\x1c\xef9\x92\x9c\xdf-\xaf\xd2\x05\x15[\x06\xb9\xe9\xe8j2e\xb3\xeby\xfc\x97O\x8be\x92\xae\xfe+\xcb\x0b\x8f<)e:\xd1'!dJ\xbf\xe4\x05\xbdY\x9a\x9dF\xad\xd1\x1a\nq\x86\x18\x0e\xadA(,\xc4r\xe1l\x1b\xf0\x0e\xca\xf3I\xdc\x95\x89\xa2\"\x08d\x98L\x0f\x93\xeeVn\x16_\xeb\xcc~\x9b\xd7\\\x84{\x9e\xc3\xdc\x94rC\xa49\x83PFK\x9f\x85\xa8!\x89{\xb3\xe7\x90\xc3KX<\xb7\xf9\xd2\xb2\xe5\x95\x90=\xd7\x9ap\xbc\xe0\xc2q(\x14!\\\xfe\xf3\xa7\xe510\xf1\xa7B\x98\xf1\xa7A\x88\x8a\x90y9\x86\xa5H\xc2u\x03/a\xf9<\x00I&\xa6!\xead\xe6\xa3eiQ\x95\x8cV\xa8S\x1f\xad\x1c2\xb8\x96a\x0d\x86\xdd\xb2J\xb5\xed\x9eA\x9f\xe6\xd7\x06\xa6nI\xec\x9e\xdd\x03j\xf7\xf8\xbc\xe0\x80s\x8f\xfe`\xf7 \xa8\xd9{<\xc5\xd7\x8f\xf7\x1e\x93)\x1a\xd6\xd4\x98\xa1t\xd7\xcc\xd2U\xae\xb9\xfdV)\xd4\x95_o\xc6f\xb9\xcc\xe2\xc7\x7f\n\xafh\x9c\x19\xea\xef5Jc\xf7\x9d\xff\x1d\xfb^\xd4\xdd\xa8\xd7\x9aof\x9c\x7f`\xd1\xa4\xd0\xf3\x10\xf2\xed\xa2W\xc9e>\xfd6\x9e\xb1\x8c\x85e\xe4\x82wg\x89\xc7\xbc\xbe[\x87e\xca\xf8\xa7\x8f\xbd\xa0>\xbf\x9e\x91\xd3\xbf\xbc\xaf\x0ceD\x05\xa2\xae\xcab\xafR\xb7\x85\xe0\xa9)\xd4u\x06\xfa$gi6a\x1f\xed\x00\x01\xe4j\x19\x1d\xfeX}\xab\x04x\xd6qp,\x04O\xeb\xba>\xbeE-\xab\xf1Z\xcfj\x9c\xd7\xf3#\xb3[X\xd4^\x1a)\x97s.\xd3\xe5z\x03ZkA\xfd\xcb8\x7f\xbf\xce\x98\x85\x15[\xfd&\x95AY\xd3r\xe5\xe2\x8di\xa5\xb9\x86\xa8p_\x82\x92\xf8\xcf\x02\x9b\xbc\x18<Z\xfe\x16\x930O\x9b4%PQ;\xd3\x80\xa9>\x0bc\xf5l\xfe\x90\xae\xafa\x861\x0c\xba\xfe\x07\x91\xcb\x13q\xb5k\x1fjk\x10\xf5+X;nb\xee\xbf\x04\n\xe8z\xc2\xb0\x07n\x9aT'\n^\x84\xef.\xf1\x17\xdf\xb8\xf5_\xbe\x97q\xdc\xed1q\xaf\xe4\xa1\xc9\xf0A\x7f\xd0\xdf\xfb\xc5F\x9a\xf8\x8f\xf7\xefm\x9d\x86\xe2\xd6\xd6`C\xd6\x98\x1eP\xed\x82\xf0\xfc\xf4\xe4\xc3\xe9\xc5\xf8\xd5\xd9\xf8\xdd\xd9\xc5\xf8\xfd\xf1\xf9\xf9\xf8\xe2\xa7\xd7\xe7\xe3\xb3\x0f\xe3?\x9d}\x1c\xff\xfc\xfa\xcd\x9b\xf1\x0f\xa7\xe3\x1f_\x7f8}\xf5\x0d\xees\x0f\xe65O\xc1u\xd7\x12\x0f\xa51\xe0\x01\xed\x92\xf7\xd82\xd0\x92v^\x074\xc3\xbd\xfb\xe4q\xdd^\xf4\xc9\xbe\xfe\xbb\x87)\x13=\x91k\xfe\xbcH3\xe65\x98}\xaa\x05\xed]i\xb3\n\xabV\xd2\xe5U\x9c\xb0\x0fl\xba\x9e\xa0\xd7gkKi\xcd\xdb\xa0j\xe9*N\xa6\"\x8c\xd0 \x1fY\xda\xa9\xb1\xd8\xd1X\xb4Z-\xee\xde\xc6\xd3\xe9\x82\xddF\x9d&\x189Z\x9ap2\x9fwia\xbd\xb1\x1b\x85\xe3 Ps\xe8\xd0g\\\x1bs\xd1\xd3o\xcb\x80\xc9|\xb0V\xf46\x8e\x8aFJO\x92.a\xf4\xb3\xda\xad/\xe7\xb1\x11\xf9\xc4\xb5\x98(38m-\x15\xf1\x16\xff\x88:\x9f0\xa5/\xc5BED*\xe5\xd3\xcf+\x8c\xf9\x00\xc5\x9c\x01K\xe6Q2a\x19\x14)\\1\x88\xca\xe9\xf6\xa8\xe8\x8ajq}\x16\x08C\xd9Z\x0d[+A\x8e\xa9h\x1bS&\xb0\xbf}H72\x99/\xa1g\xc6{j\xfb\xf5\x84pM\xe1\xef\xf1\x9e\xda~\xbd\x92\xa7W\xad\xa0D\x88)\xa9\x8e\x9c\xe1\xda\x8a\x1c(\xe2\xfa[X\xc6\x06&\xb0\xe8F\xe7MVS\x8bNM\xdc\xd0L\x8csAX\xd3\x82,\xd4\xe5]\xebj\x80v}M\xa5O\x95s\x98\xfaA\x08\xb32\x9a\x8dU\x0d\xb4\xa94\xda(\x8a\xd4\xdb\x0d\x15@\xea,\xb6\x06!\xef\xd5\x1e\x91\xfe(\xd9}&\xb23\x9f\xd9W\x14\xe63C\xfd\xc4\x84\xf9I\x08\x03\xda\x8a\x0b\xac]A\xbfu\xad\xe4\xd2\xbd\x92[Y/B;\x02k\xe9d\xf08X\xae\xf3\x82/\x19\xc6\xe2\x05!x\xe5=\xf8\x983\x98\xac\xf3\"]\xc2\xb2\xa4\xe8\xa8e\x88\xf2\xbbd\x02\x91\xf8\x9c\\^#-:\xeb\xa1l`\x0d\xe1\xdf\xca!Dw\x98\xb2}\x1e\xdd0\x88\x12(\x83\x1d\x83\x87jiPvG=\xf8\x89W\xb9K\xd7\xb0\x8c\xf3|\xc5\x16\x0b6\x85\x08PD\x89\x92\xe2\xe8\xdf\x1c\xa3Y\x11\x00P\xa7g\xd9\xfdT\x1a\x804\xce\xcd\x1dFs%E\x1bNSr\x7fA\x9a\xc2~\x85Y\x9cD\x8bEc\x1b\x03\xfb3\x9b|\xe8\xf6\x12\x9c\\\xcd\xc4\xd9 \x93\xa6k\x89\xe1\xb7\xb7]\xc8\x7f#3\xb6\x17\xa3\xc4aD\x92\xb6^\x80\x82\xa6\x92\xfb\xce]m\xe9\x0c\xc8\x15\xf7^\xbf{}Q\xff\x94V\"\xadI\xc3L\xb5hd\xec\xf1|}\x95O\xb2\xf8\x8a\x91\x11\x96\xafKq\x87\n\xf5\"\xe4'\x89$m\x92\x1f\xdc\x9bp\xf2\x93,a\x9f\x8b\x0f]O3\xf5H\x1d\x0f\x05Y\xf58!\xac\x1e*Th})BX\x8f\xd2^\xd4j?sS\xf9)\x11I\xacu+Fz\xb8\xdaJ\xb5C\x1a\x14\xb4 5\x91\x0e\xeb\x8b\xbb\x15\xa3\xe0\x9d^\xc9t\x89\x12\xd8\x8a\xec!\xac\x9d=\x96\xe4\xb6\xddJ\x9f\x95\xf6\xd4\xe2/\x7fn\x9e\xeb\xfaC\x93~@)\xa2\xe1pQ\xa2Ma9\xc3\xeaO\xa3\x0d\x82z\xd6\x89\x06\x7f;l\x90z\xba\x9cQ\xf8&\xe8\x843P\x0d\xcf\xf2&\x01\x81|\xcc\xc2\xc6\xf2\x05\x11)\x87\x0b]\xb4K\xecc\xeb\x0e0&Q\x91\xef\x94!x\xff\xfe\xef\x9c\xb9\xfc\xfc\x88\xff\xac\x07\x93\xff\x06\x89Z\x17\xf1\x1d~i\xd6\x9d\x8d\x14E\x1f\x9bWB\\\x1a(o\xc7\x84\xd8|I\x84\xc2Qfk.\x9f\x87\x9cp\xfa\xad\xd7\x10\x1eh\xa5Mo\xad\x8c\x1f;\xb9a\xb3X\xaf!\x92\xb9\xe2\xb5\x81\xe8\xa6v\xc1\x1c5\xea4\x90{\x89\x91{\x01\xcc\xd7\x8a\x7fm\xa1hS*\xdal^\xbc\xc0\x1b\x93\xc8b\xcbxs\xa8$\xe6\x1cIQ5\xd1\xb7\x9bH\x90\x1d\x17\x8e\x07a\xcd:\xda\xb3mY\xc8\xa3\xca-\xd7%\xba+2\xbe\x91\xf0I\x02^uV\xa1\xf7\x83 \xda\xe3~\xd0\x8bzB\xa3e\x82~cm\xd5\xa6\xf5\x9dkm.u\xc9\xcc0\xf2.\xacP\x97\xc7x_\xa6q9exIq\x19\xa8Y\x83^\xda\x8b/xQ\xc5\x18\x95\x08\xd0|\xda\xd0\xac\x8d\xdd\xf8\x80n\xbc\x18\xf5/I\x04)zBz\xf5k\xb0l\x18AWB\xca\xfc\xa2\x87j\x18\xc9\x80\x87\x15T\x88\x13\xc88\xec\x1fDq\xf8`J\xbc\x10\n\x15\x00\xb9\x8b\xf2S\\\x10\xd5(\xb7&}\xc0\x11xq\x12\x17q\xb4\x107P\n,*\xabr\x91\x82\xae\x9b\x83!\xa6\x1c\xbf\x89\xd3u.\xd3)gl\xc2\xe2\x1b6\x85\xab;]\xffP\x8b\xec\xaakM\xcb\xd1w\x81e\xb5g\x9f8\x9cQ-\xdb{y\xb1i\x1e\x19\xca\x84\x9frG\x1d\xc0#\xd3\x98]\xb8Q\x1cA=b\x02\xe5\x90\x86r\x0d\x1cA^\x1e\x07e\xc5j\xf5)}5GJ\x8a\xba\x13y\x06\n\x97Q \xaf\x1f\xfb5\xcb\x95\x82KXh\xc3kW\x8d\xf4\xaa\x0bL\xee!\xe8y\xc0\x17\xd6\xa3i~A4\xa6\x08z_\x18\x9fp\x1c\xe3@,\xf8\xaf\x9d5\xc7\xaa\x9d>G\x96d\xb3\xadS\xed{\xa7\xbd\x9c\x96\x0f\xa8\x84\x0e\x9e>\xe2\x08\x92\xb6t\x87\xa5G\x1f\xbe\xae\x0f^_\x0cm\x80Ay\xb6%\xfe\x9e2\xf0\xde\xdc\xfc\xb6\xcd\xbcag l\xbf\xe5\xa9\x8b\xb6\xf4}\x18j\xb1\x01\xd2\x92\xb0g\xc1s\xd8\xde\xe64={\x1e@*\xe8y\xe1\xb3Qr\x89\xcaT\x87\x1dh\xba\x19\xd4\xb5\x83\xf1\xc9A\xe0{E\xfaq\xb5b\xd9I\x943\x97\x15'}Hv\x02\x0eqA\xaf\x06\xb0C\xd8\x1c\x8bh\x97\x94\xaf\x7f\x81>_\"%\xc6!\xec\x14\xf0\x12R \xcb\x14\xb6\xd1h\x0b]\x81\x12Y\x90r|\x0c\xca\x8f\x12\xd8>\x844\x10\xe0\xe6\x1f'\xf2\xe3\x04v\xf8\xef\x97/1v7\xff\xe3\xd0\xcczU.h\\.U\x8aK\x95\xc1\x0bH\x9f\x07\x10\x8f2\xb4\xa5\x19e|$\xf4a\x17\xb7\xac\x92\xb9D|.\xc2\xc2\xd5\xf7F\x7f\xfe\xf3z\xb7\xdf\x9f\xfe\xf9\xcf\xeb\xe9\xd3~\x7f\x87\xff?\x9b\xcd\xfe\xfc\xe7u\x7fO\xfc\xec\xef\x1d\xf0\x9f3\xb6\x8b?glw\x86\xdfL\xf1\xe7n\x7f&J\xfbL\xfc7\xbb\xdc\xdc`W\xce#\xe9\x15,/\xdaM\xcf\xbabG\x08\x19\x85 \xa9\x03A\xe2\x86\xbdD\xac\x1a\xdee\xc6\x12\x03\xf8\nmo\xa7\x97\xb8v)\xbc\x80\xf8y h\x9e\xcfw\xd7(\xbdD\x0f0\xc76\xdb\x90\xb8U\xdbl\xf0\x9420\xae\x84\xf1J\xcdA\xc6\xd7\x8fI\"\xe3\xd6\xb3\xa0\xe1\x9a4\x04)\x9c\xf6\"\x05\xad\"H\x89[\x83\xa4M\x84US-\x99,ZQ-v\xde\x11(\xdeLXldhx5\xea\x13\xa6\xcf\xa0\xd6[\x04*\xb7\xc5{<\x0f\xb9\xec\xe5\xa7\xd5A\x17c\x1eHs\" \xc7)r`\xd7\x07`\xd7,q]e\x00\x88{9o\x14/\xb4\xbe|A'\xc1\xdaG_i\x94)\xbfO\xd8\xad\x1f\xf7N\xf0\x17\x97\xe38\x0bo\xe0\x13\x7fT\x15\xcc\x8e\xa0\xef\x9ax3\x94\xb3ng\x05\xfbd\x19\xf5\xc6\xba\x04}\x9c\xdf%\x13%,\x9b\x82tM\xd6vUZ\xeb\x95~\xcf\x12\x116\xc0U;\xd7k\xbf\xcf\xd2\xcfw\x97\x8e\xab\xf7\x16\xf9\x18\xad\xff\xdb\xc4\xe1\xcc\xe5F\x81\\\x0c:\x95\xe2_\xeb\xf2\xaf\xb8\xfc\xab\xcd\xc8\x86\xa2\xdd\xb6\xd6\xa1\xc52\xb8y\x92\xa5i\x17\xb5\x01\xdd\xeax\x0d\x11m\xff'\xfe\xb4d\x86jmY\xf8\x8fm\xd2\xecWj\x11\xf4\xd4\x10\x1b\xa2\xfa\xa0\x1f\xf8\x89\x7f\xb0\xff$\xd8\x88{ih\xd0\xdc%b\xf3\xec?i92\xcbKo\x19\xfa\xc8q\x80\nv\x15\xad\x0c\x95.\x06\x8a\x92h\xab\xa2-\xe53\xb4\x95\xfa\x89\xf0kV\xf4\x1c#\x02&h\xae\xaa\xf7\xc7x\x97m\xa7r\xc3\xacim\xdc\xee3\xda0\xe4\xc0\xca2\x14\xa1\xb1n\xed\x15\xa7\x07\xbbm\xd8\xae\xd8\x80<\x84E\x08\x13\x8a\x19@g\x02\xf8\x9e\x0c \xaf1\x8cv\xa9\xc8\xa8Dq\x07x\x1f\xc6\x019E \xfb3@\x1f\xdd\x97\xb0j&%\xc2\x8f\x9a\x9f0\x94nm\xce[\x11\xc5\x9a\xe85\xc7%\xb6\xdb\xbaq\xf08Kq\x87f\xbd\xbf\x96`\xe0\x12\x17?\xb63B\xf4\x04\xc5\xf9\xa0\xbb\xb8\xa0N\"!k!dE\xce\xfb\xdc\xc0\x0bX=w\x1d\xe5\x98\xa7\x96\x8c\xef\x02\xd2)\xba\x18\xdd\x10we\x1c\x00y\x80M\x8c\xf9\ns)\xd9\xbf\n\xe1\x0eC\x1d\x15\x88\xa1\x13\xcc\xca\xe8\x8b8F7\"\x9d\x13\x7fK\xb7\xa6\x99r\x8c]*\x1f^o\x1c`\xea\x9a8Y;\x92\x0c.\x0d\xcb:\xfd\xb9\xcaX\xf4\xc9*\xb1I!:\xa77\x8db\x0b\xa5\xf1V]V\xed\x93\xd8\xbf\xc6j\x9cA\xbd\x13\x9a\x1a\xbe\xfb\x17\xd2\xcdTl\x8bIP\xe1\xd2\xb50\x06p&\xbdl\xea\xb1 \n\xe0\x84\x04\x90\xd0\xf8*\xe2\xa7\xc4\x18+\x86/\xd0\x15\xee\xa3\x85\\\xdar\xe0\x8e\xe1|\xeb\x82\x90\x87\xc8\xa4'<\xcaQCZ\xfe(\xeaN\xe9\xf8\xd7\xbd\x84\x95o\x92\xf35\xc9\x9e\xc4\xac\x9a\x98\xefT\xcc\x97\x84\xa9e>N2\xbf\xf7$\xe8}\x8c\x93\xe2)\x8a\xb1\x0fr^\xee>\xa3B\x80r\xb1\x87\xbe\xc79\xd8\xbf\xaf\xe8)\xe2\xa5~\x93/\xddSz\xac\xbb\xedcr\xeb2b\xa1\xa5q(g\xf8l\x8e0\xf4_\xe6\xc7!$\x1d<U[\xb1\xd1\x01\x9f\xd1\xe5}\xe1r`)J\xd5\x1a\xd2N\x86.}\xebS\xf3\x8aN\xbaa\xed\x99\xcd\xe4\x12u\xcc\xfa\x0b\xe2.\xce\xb8\\\xeb\xb0P\xd4*%\xca\xbf\xb0V\x02\xf2\x06o\x0b\x95\x9at\xe4\xe6YY\xbe\x85\x96j\x11Yke\xd4\xdaB\x8e\"'\xebNAry\x13\xf4\x00\xe4\xff\xac\xecZ\x9c\xd5\x98\xa2\xa7R\xa5,\x14\x02\x04?DG\xc4\xf9\xac{.\x11,\x01\x07\xc3\x12\xe2\x84\x0b\x11[\x85\xa0\xd7\xa5\xd7\xe3\x12\x05[\xe4\x86J\xb7X\xc0\xac\xf68D|\x9d\xcef9+\xaa\xd7\xde*\xcaX\"_\xe0\xf7+Q\xf1j=\x9b\xb1L\xabxuW\xb07F\xa3\xf8\xf2Lk\x12[X\xfb\xcb\x10n\x02\xfc{.\x0e\xbb%\xbd\xb5\xe6\xf7\xc6v\xcb\xc3Qa;%\x1f\xf3\xf7&o\xcc\xd1\x1d\xb5Jq/\xce/\xeeVl\x8a\xf4\xd4\xc6\xfd\x08\xa3TE\xa8\xe3\xa0\x11w}?\x12@\xa1\xb9yKfQ+\xa8]\x91\xf9\x89efY\xff\xab3@\xf7\x9e\xb6\x92O\xc7X\x998+9*v\xf0\xf5\xfe\xc5\xa1\xa2\xa4lqK\x8d\x1e\x92*\xe2\xa0\xce\x8c\xa2\xb8\x86!5\x05\xadz8H\x1e\xec\xd3\x9a\x9b\x83\x0e\xfe\x10\xee\xb9\xd7\xfc\xc2R9\x82\xac\x0d\xda\x0d\x83|\xd6:\x18\x8a\x04+5\x8cM\xb8\xc4\xc5\xd3\xbf\xc2\xc0\xad\xa1)0K=\x97\x83wP\xf8-\xeaI\x0b7\x9b\x81\xa5\x08S\xe1\xce(\x02\xf0.zg\xef\xfeG\xff\xf9\xe7|\xfb\xcb\x9f\xf3\xed\x7fytmo\xfbG\xff9\xda\xd9\xbe\xec\x7f\x1e\xf5w\x9eE;\xb3\xcb\xed\x7fy\x14\xdb\x07\xe0\xa3\xff\xec_\x8d\xfa\x03\xa2t!J\xd3Q\x7f\xe7 Q\xccO,L\x92\xfa\xda\x15\x13\xaeY\x99\xe4%\xeb\xe5\x95\xa4\xcf\x95\xc9\x98\xda\x92\xb6X[S\xb0\xc5vy\xe6\x08\xd2\xa5\x16\xdd\x11\xd7^\xc6\xc6\xc3\xa8\xf5\xf2o\x9fSJB\x88\x93!\xb6\x85\"d[\xc4uv\x05?\x07\xf3fu\x8b\x98\xa54\xca\x95\x91\xad\xb6\x8d.\x99\xcc)\x8f\xd6\x8f~\x14\x82G\x99\xd3'h\xfa#\xafCH\xcc\xc5C~\xa1\xaa\xc0\x11L|&M\xdcw\xd1\x8a\xe3\x08va\x08O\xf9\xac\xd7Z\xb5\x18\xc7t_\xec>p\xa4D8x\xfc8\xf03\xc7\xd6M7\xebc\xd0\xa7\xa3R<q\x1c\xa1\x16\x07\x18u=9h\xc6\x1b\xa5\xe7\x88\x13\xde&m\x0dfB\x93\x17\x1e\xb4$\xb5U\xdb\x0ck<\xaeE\x8e\x8d\x18\xb5k\xa51\xcb\x10\xf4\x9b\xfa\xb5\xb8\x84\x8e\x13\x10\x953?\x19\x15\x975k\xe7N\x8bF[\x8fh\x17\xe3\x0d\xd7c\x89?\xd87\x1d`t\x10^\xd9\xf0(\x83\x1b\xee\x1e\x0c\x8c/\xafz\x1fX4\x8d\xae\x16L9'\xdf\xd5+$\xfe\xe0\xd9^\xd0\xc3\x98`\xa7\xcb\xb8(XF\x03\xbc\xf1DR\x8f\"6=\xe53\x91\xfbE \x81m}@\xc4Q\x10\x02\xc4^\xdf\x14 \xa0\x8a\xbb\xb8?\x08z? #J\xf3\xfc\x85& \xd7\"q\x04V\xc0\x9dR \xe9\x0f\xfa\x07\x06\xe0f\xbd8\x99\xb3,\x16\x06\x06\xfeS\x13\xb07\xd27\x86\xef?\x93\x8f\x04)\x0cPZ<\xfe\x1e\xd9\xe9Uo\xca\xae\xd6\xd7\x8b\xf4\x1a\x8e\xb4\x1fH\xdfX\xb4\xc4\xf8\xc9-c\x9f\x8b\xa8\x06\x89\x7f`\xf9\xf9\x81\xd4\xc6p`>qN\xcd\xbf\n!'&v\x0d\x870\xf2X\x96\xa5\x99\x17\x827Y\x08\x7f5o\xca\xf2\"K\xef0\xb0N\xb4\x16\xef2\x96\xaf\x97\xcc\xbbt\xb9\x08\xdd9\x11&\x06y\x1b\xc3a\x88\xde\xe0ROf\xce\x154\x1aU\xe8F\x86\xb1]\x0f\xbd\xc9\xc5\xed\xd3\xdbt\xca\x9b\xdc\xdab\xda\x0b\x19Z\xd9\xb7\xeb\x99o\xbe|\xc1O3\xb9\x7f\xce\xca\x12\xc7\x1d\xa40r\x98\xc7\xd7\xf3\x9f\xa3\x82eo\xa3\xec\x93\xbd& id\xd5\xeeO\xed\x1f\xac\x89\xd1\x1d\xc1\xe0\x00\x8608\xd8{\xba\xef\x80Bm(\xfc,\xe0S\x12'\xa42\xa5\x10\xb0\x88\xaa\x82(\x90\xd9c\xd6!\xdd\x08\xc6\xfb\x9d-\xd24\xf3\xedr\x15\x96@\x08\x8a \\\xeeo\xca\x84\xed\x18\xe4R\xcb\xd8\x1e\x8b<\xe9\x9c\x8f\xd5_\x9d\xa4k\xf4\xa5W\xf5f\x8b\xf4V\xa4\x1a\xd7j\xb2D\xa4\xc8/\xf3\xb5\xb3d*\xe8W\xed-\x87\xb2\xf8\xb6|\x85.>\xc2\x9d\x05\x7f'\x8cM\x15\x91\xac5(Z\xa3\x8a\xd4\xda\x89 \x8aF\xfbbC\x9cO\xe6l\xba^\xd4G#\xf7\x8f\xf9\x12-\xe9N\x93I*\x87\xca\xacw\\\xae^\x17\xb3\xa7*\xe3|t\x1b\xc5\xc5\xab,\x8a\x13\x0dNr\xaeo\xd3\x8c\xd5\xdb\x9f\xa4S\x96\x99\xe0+{\x13oY\xf5\x8a\xa3\xc4\x1c/\xb2\xe6\x92\x82<\x0bzBE\xf1J\xb4\x15\xd8M\xb3[\x98\xfbU#\x81\xdd\x8fVX\xc3W\x97\xe7\xd7\x95\xdb\xf3\xcb\xa4\x1c[\x88\x8b:e\xb8\xaa8\x08>\xb4+\xd2\x95\x0dG8\xce\x8c\x03\x92\xd7\x17DK\x04\xa9\xa8\xad\xb8\n\xf1 \x14\"4\x03\xcc\xebV4\x06\xdb/w|\x10\xba\xd8f\x89\x1b\xda\x87\xea\xcdaU\x1a`\x14\nW\xdcx\x07 \xc7\xd5m\\\x16B\xeab\xe9%\x17\xc1\x0c\x88\xd8`\xabL\xcd\xe1\x08\xfc\xc8\xd8c\x9d\xf8\x04\xd4\x8d\x8b=\xac\xd6\xc9\xee\xa7\xaa(\xf1\xcc\xd5\x1ah\x9c{Y\x99\xb7\xde\xe4b\"\x94\x01\x8a*!\xd4%\xddRy\xd3\xc2*\xb1\xd06o\xb8N}aX\xb1\x91d'\xf6\xed\n\xa0\xb9xI\xb9\xfa!\x9c\x93\x97\xf7\x1ct\x11\x86.\xf2\x91f#\xbew\x82+B\x81\x9es&\xa2\xe4,zq.\xd8'?\x13\xce\x07\xfa\xb6A\xcd%e\xbb\nztn\xa5*1NKa\xa8W\xf7Mz\x9d\xdcD\x8bx\nI\x9a\xec\x88f\x1f\xc9\xc3a2_'\x9f<39\x9dz\xf0\xb8wLDnk\x02n\x11F\xb0\n!F\xe1\x93\x13p\xbf\xe4bb\xcc\xc7c\x0cY\x1a\x9c\x96\xf1\x97\xfb\x1c\xa3]\xf37?&\x93\xc5qi\x16\xb3\x0bi6\xc7\x1c6\xcdv\xde\xc6\xdc\x16\xbdY\x96.i\xdc\xc0 f\xfc\x94\xd6\x8f<{\xbe\x9aC\x9e\xe0({\xeb$\x9f\xc7\xb3\xc2\x0f \x9a\x15,\x03\x96L\x81\xdd`\xf0\x8f\x00s80\xb48\x10!\xfa\x10X\x02U\xbb\xb4\x8d[F5|z\xf6\xa3h\xd2\"\x0eQyd`nK\x0em\x8c\x0bXn\xda\xdb,\x96\x97{&\xb4\xa5\x8e\xaeJ\xf5\xa5\x8fw\xc0{\xfbT\xed\x9bz\x99\x0ci\x8c\xe9\x9ej\x03\xa2\xb0\xcfT,\xb6\xad\xd5\x16\x93`\xe2$\x84\xd5\xb9 \xdc$r\xc0/L\xe6\xb0b\xba\x98\x93\x8e|\xf5\xcd\xf8\xe3\x0e\x1a\x7f\xab\xd1xj\xc0E\xc9E}\xff=\xd4\xddEp)\n\xc1\x16\x1d\xf1)\x88\xb5\x9eFE\xc4\x97\x1ac s\xa0\xf9}\xb1\xa6\x1d\x89\xa2@\xd2\x92\xa6*\xe4Kx\x1b\x14\xa5\xad\x01\xee\xfb\xef\x914\x06\xa1XT3\x10d\xed\x17\xed\x94q\xa5\x87q\xf2J\xc6\xeb\xdb\x93\x9f\xea\nc\x82\x7fP\x01\xad\xea\xaf+\xce\xcf^bB\n\xae\x8d\xc7\x89\x80\x8e\xee\xfd\xc6\xfe\xf9 \xdf\xee,\x13\x82\x06\xbf^\xc5\x88,\xd5\xdf\xf5\n\xe3u\xa2\xd7)\x7f\x19\xb5\xaa:\xad\x87\x99\x90\x06\x10;\xd6\x8b\x05G\x10+\xccw\xbdq^\xb7K\xc37\"EE\x06\xe4\xf29\xc9AVG\xf4\x04\xcfoC{Th1\xdb|\xa4kxld&7/r\x15eu\x86\x9b\xa1;\xa1 \xfb\xc2\xba\x07U\xac\x9e\xf4\n\xc3\xa0\xa9\xe3*\x1c\x1a\x126;\xfcH\x1d&r\xcf\xb5\x9e<r\x8eZ\xf3B&\xe0\x1c\xca\x96\x19Y\xb8\xdeE\x9c\xbf\x8f\xd69\xeb\x9aYmK:\x93\x11\x18*\xe9SSg9\xd3\xa5\xa4Ns\xea&\xc7X\x9b\xc5\x10k\x1c\xf5t\xe1F\xd4\xa8\x8f\xdeV\xac\x9c\xc2!<\xdd{\xfa\xf4\xa0\xff\xd4\xa5/\xf9\xecD\xdd\xf2r\xed\xc5\xa1H\x8ah\xd3\xf1\xa2<\xb2\xfbHf-\xea\xcc\xc4\x85\xd1Q\xfd@\xd0N\xd5\x924\xcfY4\xc5\x04\x18\xaalXU\xc3\xec\x98/\xa10\x0e4\xc1D\x9b\x1a\x83vBVN\xec\xe5!\x9c\xa2\xee\x9e\xff\xcf;\xd9\xd9\xe1\xb2\xd6\x17>\xe4\x97/_\xc2\xa0\xf6k\xb7\xf6k\xbf\xf6\xebi\xfd\xbb\x83\x10\xd8\xf6v`:]\x83\xe0\xb6\x03T>\xbd\xa8q\x17\x0c\xe7\xab\xa0\xa9\xcf\xbc\xb04\x06\xfd\x10\xfa\x1dc\xdb\x9c\xd3PPW*\xed\xc2\x97\xdd;\x97\xf3-e\x05\xc7\xfa\xa9\xef\xf1\xd7\xea\x9d\x17V\x8b\x1eP\xdfH\x9d\x88\xe2\x04\xd2*\xf5\xc6 \xba\xa3\x0d\xe1\xa4f\xe6\x02\x0d\xf3<\xa1\xe7)\x87\x04j\x92\x9e\xc8\xb0\x80\x0c\x87\xfe\xee\xc2N\xea@\xf7\xf3\xc9}\x82\xd4\xf4!\xc8\x82\x9b\x1a\x92~\xa8O\xf2X\x10\xd6\x8e\x13<vv\\3 \xab\x82\x95l\x95\xddK\x86K\xdb\x7f[E\xc5C\x16\x15\xc3H\xed\xaf\xa9\xef-\xa3\xbb+\xc6W\x0d\xe7\x81\xea\x85\xbe\xa7\xb3i!\x1a\x13k>\xbb\xca!\x864\"\x01\x0bXV\x9c\x16\x17\x10\xce\x9c\xab\\\xeaK8x\x8bx\xf2\x89\x1ag\xa7>\xde\xb7\xaf\xb0\xc2v\xa1y\xa3zB|w(\xe6,eZ\x85\x90\xa8\xd9\x96\xe8\x18\x82\xb9d\xdarn6\xa5\x8bo%\x02\x88bS\xdf\xe3\xe3\xa9m\xeb\xe7\xf5AJ\x0b\x01\xa5|\xf2\x83\xe7\x86\xc0\xe3\x1a\xe1\xdb\xb6C\xc88z\x8eDWH\x1d-F\xa9<R\x94\xf89\x84-!\x1b\x19\xc9\x9b\xfd\x9a\x02G?\x8c\xca\x98\xd4CP\xee\xe8\xb2\xa4\xe1\xe0\xd2\x05\x0d\x19\x12\xba\xdc\x11\xa1V\xb4`Q\xe6\xa3l\x93t\xb8\xa2TO\x83\x86\x82\x89\xbdk\x1e\xa02\x87\x8f^\".\x8d\xfb2T\xaf6t\xaa\x1a+S\xf30 \x03\xa2\x8bB\x83r\xd2\x16\xb2[\x7f*\x8a\xc5[\xa5/\"\xd4\x93\xd9N\x01\xe6\x83W\x9986\xb7\n\x8e\xc1\xce!\xa4N\xa2\xa4\x1e\xc4\xf6\xe78\xb8\x04\xc95i\xe3\xae?7\xd2~S\x0c\xa0y\xa0\xa0nd\xe0%\xc4\x15\x1c\xe3\xea\xc4wX\x9f\xab\x07}\xb2qA\xb4\xcfS.\x1d\xc7\xc2\x8b\x15\xfd\xcc\xf4\x85\x16\x9b\xc7\xc7\xe9G\x8d\xb6\xdd\xea\xb1\xda\xf7\xb7\xb7\xb3P\x82\x03W}.\xb4\xcc\xf2\xcd\xb0zS\xf4\x8a(^H=\xbf\x14\xe0U\xe5PB\x08\xaa!F.\x8d\x9c\xfe\xb8M\xca\xd5\xf3u{{\xd3X;\xa0\x99\x06\xa9\x89\xee\xa0\xcb\\J\xd6\xff*Q\xba%\x0b\x85\xfe(\x1c_\xf4\xa2\xc5\"\x9d|L\xf2h\xc6\x9c!\xf8\xd4\x93u\xdc\x15)\xa6us\xcfM\xec\xd4I\xba\xbaC\x95\x07.\x7f\xa6o\xdf\xd6-\xc0G\x92m\xb6\x05\xb2_k\x0b\xc4rf\x95u\x05\xecp\x86\xaa\x1fB\xf4`8\x9f\x86r\xfe:\xceg\x9b\xe0|\x16J\x90\xfc\"8Oc*l\x8a\xf3iH\xa8\xb7\xa1\xc2\xf9F\xc5\xb8\xbd\xef\xc4W\xf2\xbc\x0b\xab\x13\x963\x8a\x8e\xcb\xecz\xf7.6\xe1\xf5\xb722\xe2zGN\xfc%\xf4\x89@\x8a\x1eKJ\x11\xc5\x0f<\x98D\x18\x181M\xf0N\x81-W\xc5\x1d\x08%4\x15 \xb1\xd0\x95\xe4B\x08\xd0\xef_4\xf6\xff/\xc2\x99\xa9#\xfb\xff\x17'\xadaF\x8f}\xc9\x80\xc9I\xf210\xe3\xb2\xba\x1fJ^\xd6\x12\xe9|>{\xaf\xe3\x98\xdeu\x13I\xfaB\xfbU\xb9\xb0\x08\x07\x16\x0c7D\xe2\x15_$\x91\x93\xa4\x16^\x8a\xb8g\x92%;\xa6\xf4\xa0\xff\xd2\x15:\x99\xd8\x93\xcd\x1a\x02)Mx\xe2\xecd\x9a\x91$\x9f\xef\xc0\xb4\x95\x02\x0d\x01 \xa5\x0dM 1\x8a\x00\x8d\x9er\xfd\xa4r\x832\n(\xa9\x9b\xd0\xfeZ\x9al\x0d\xc3\x0f-\x99\xee\xcb\x17\xa5f\xa8n\xac\xe5\x8c\x87`\x89\xef\xa2\x9d\xb0\xfc$l\xd4\x01\xbd\x16\x97\xc40\x84s\x95q\x81\x13D\xd7<%\x81>T*\xa8@k-p0\xfe\xdf\x7f\xafzq\xb5\x8d|\xb2\x0c\xd0Q\x03\x8d\x13}\xa6\xbe\xc7\xebUJ\x82\x10C|\x18Q\xae\x04\xe4\xaa\x93\xc6\x96\x97q\xfcS\xe5\xf6\x00\x0b\x96\xe7P\xcc\xa3\x04ny\x8de\x94}\xf2\xc4\xb8P\xb9\xaa\xc0\x86\xcd*\xd1\xeeH\xad\x05\xff\x91\xe2\x95\x19\xde!\xa4b\xe1\x91\xbf\x93R\xf94\xc5\x01{A\xa8}_S\xa9HM\x91\x05@J\xa3T\xd38\x9aJ\xb5@or\x10\x1a\x82\xb0X\xc1\x04WP\xae\x8aX\xdaL\x1e\xf1}8*\x05\xbc\xa1<\"\x8f\x1cz-\xfe\x7f?\xd0u\x7f;\xa8\xec$gQ\x02\xd01\xa3\xa4\xdaJ\x9a\xc2C\xe2\x8f\x1a*\xea\xc6\xcbk\x94\xda]\x14?\xb0\xea\xa7\x9b\xa1 \x1ew\"(Z\xc3\xc4\x85\xa6\x80x\x00q\x8e\x81s\xe3\xe5JdH`6\x1d6n b\xcc2\xd2\xca\x8c\x96\x82\xd6<v\x84\xd4\x88\xbb^N\xe4\xb71\xba\xe3\xc7\x9a\xe1\x94\x8b\xb5\x9aD9\x83\xfe\x90,\xe3O\\\xdac50{\xc8\x04\xd1\xc5\xd8\xfe\xa0K\xfb#\xf9g\x08\xae\x04\xcf\xd0\xdc\x95Jk\xd6\xd6\x97\x8a\xb0m\xd5#\xdc\x80u\xd3\xb3m\xccO5\xf5=\\\xd2 \x7fw\xf8\xafSHWE~\xf8\xaf\x7f\xf1\xc2Zm\x9a\x1f\xbb\x91q\xd9\xfd-\xbc\x03\xda\x1aH\x85\x1cK\xa6H\x96\x98\xbc\x03\xca\x8bi\xba.\x8c7,\xcb\xe0\x08&0\x84+\"fky\xde/H;b\xf5L}/M\xd6 \x1f\xa8'n\x93T\x90/q\xf9.\xf4(Yo\x1e\xe5\x1f\xb1\x96\xb8\xc1\xae\xbd\x104`\xea{\x93\x05\x8b\x92\xf5J\xe9\xd4\x96\xe9\x0d\xab\x12\x08+\xf3\xd0k\xb2t\x16'q>\xf7B\xb8#\x8b\xa7Y\x14'^\x083\xb2T\xed\xcf%Y*g\x17\xc2\"\x109S\x8d\x8f\x13N\xaa'\x0deWd\x99\xa467AX\xc6\xbd\xde\x8au-!^\xeb\x8fo\xb3\xb8\xa8]\xbcn\x99/\x91\x08\x96\x9f\xcc\xa88\xb9_\x1b\xd6w\xe2\xbc\x8a\xc6\xb5E\xceP\x18\xeeM;\xc5\xb2\x8e\xeb\x06#\x1a\xef\x8b<B\xd2K\x93 S\xa0\xc1\xf4L\xbd4\xa9A\x99\xc6\xf3Y+\xc5\x05\xc2\xae\xa2MN\xef&@\xa8Gn\xd6\xb3\xe4\x95\xc4']\xad\x1b\x18Z^<\x7f\xaa\xdf;;\xd5yV\xaf\x85\x99\xd0\x04>\x04\xf2\x8c\xab\x8cQ9^\\X\x17\"\xea!|\xeb\xc9X\xc6\x02\xc6\xd5.\xa0A\xac\xb20Pes 24\x00\xd4\xb2!8O\x05\xc4$1\xc1P\xb6\x14*j\xc5Jk\x1c\x8e\xbeBt\x91\xd1@k\xe4\x12\x1d&%qW\xa1\x0ej\x15^\xc2\x80W\xda\x11\xcd\xbe\xf3+\xfa/x\xcc\xad\x95b\xa2f\xd1\"g\x80\xddB\xc6\xf2U\x9a\xe4,\x04ek\x9e\x98\x17\xb0\xb5%n(\xdd\xde\x96\x93\xeb\x8bl\xca\xbc\xbdMw\xe3\xb2\x05\x88\x8aT\x15A\x08W~+5\x13\x08'\x10L\xbc\x17\xe7\x82\xc1\x98\x10\x11!\x9a\x06y\xed\xdcV-\x84\xf9\x8a\xa4 \xee\x8e\xee\x9ai\x93l\xbb\xf5\xb8\xd8\xb4\xdb\xab\xa6n\xab\xc3.\xe9\x89\xbf\xbb\x9d\xfdJ\x9e\x15;\xb1$\xfed7]o\x07\x00\xac`n\xba\xb1\xef*c+\x96L\x15P*/=\xb3D\xe4\x98iP\xa1\xf7\xc6h\xc2\x97\x0b\xe4\x91?F\xc5%\x1cA\xe4\xeb/\x02\xb4\xe3\xab~\xd7-\xb2j\x9f\x1e\xc2( k\xaf.\xb1\x8a\xf0\\J\x1c\x04OCeu`\x8b\x03\xa5\xce\x1f\x88w\x06W \x90^\x9e3|3\xc7%\xa1\x95w{\xc8\x8aU7r\x89\xbc\xcd\xf3\x03\xebR\xdf2\x82\xb1\x18\xf3&\x9d\xd5F*\x03\xf7\xdaWL\xd4\x90Jz\xc1\x1f\xc2\xc9%\xd6b9\xeb\x1c\xbdR\x11\xce\xe3\x9c\xfeh\xe0\xfe\x88U\xcc\xa5,\x87#lIXq(\x89Q\x96\xe1Qi8f\xd8^\x19\xfa)8\x90\xd6\xf0j\x11KvA\x18\x13%R\x92%p\x18\x9d\xfd\x9c\xfcB\xe9\xf0#\x0f\x0b'\xa8S\xa8\xcf\x9c\xde,\x9b\xce\x8an\xa5\x163\xb4\xff\x1cb\x0c\x15\n\xf1\xf6v\x00\xd9(\xbet\xc1\xa0Qak\x19\x0e\x01I\xa6nd\x9c\xc3w~Q\x9d\x9f\x0d:8D\x89H[l\xf9\x99\xca\xd9\x13\x850\x08\x0c@\xec\xa0\xe4cc\x93d~\x14\x08\xe5_\xa3\xfe\xa5\xb6{]\x0b\xdf\xb49S\xeb\xc6\xb5Ib\xcek_Vn\x10\xd2p\x83\xc60A\xd1\x05g\x12\x94\x82\x98\xdb\x00\xadT=(\x02C\xf0l*FRe\xb3\xa2\xdao\xc1\xe5.B=\xe0]Q]\x89\x9c\x11.G|\xe7R\xef\xc5\x85\x88\xa5\xc9\xc9\x1c\x0eM\x99\xa6\xec\xca4}\xcey\xa9<\xd4\x04\x853\xb9\xa6\x9b\x1c\xabM\xeb\x1fM\xcb\x93\x0e\x0e\x0d\xcc\x08\x0dU1\xdav\xb4\x98\x19\xde\xc8@\xfb\x9d\x00]\x9e\xb9\xc6QS\x9d2\xcc`\xf7[1\x15\xa4YJ\xdd\xd0D\x19\x1fY\xe6'\xf5\x1b\x88\xf7\xa4\x01\x12\xe0\xd9*\xd1<\x08(;CC\x0f\xc5\xb9\xdb6@U\xaaV\xbe\x8b\x04\x87\x0dr\xb2B\xc7\xd1\xb0E\x82\xb0\xe3>\xc2\x83\x1b\x99w\x87\x05e\xfd\x1c\xd1\x14s\xf2\xab\x0e\xd3\xbd\xcd\xa2\xd5F\xa7\xbb\xfb8\xef|\xf6g\x8e#\xa2<\x1eR\x8c\xc7\x83\x0c\xa5\x10\xa7[\xc5^NN\xa6\xbe\xc7g\xb3bS\x90\xc2}R\xf7\x97P\xba\xf8f\xc9\x99 \xcb\x87nnP\xf2\xec\xd6\xaf\x0f\\Z3p^c\x16\x9a\xa9\xb6\x8d\xbc\xa5&A\xf2\xd6%,HW4\xfe\xe8\x90P\xc2i\x0d\x14~Z\x9b\xa3\x90SS\x8e.[\x89\xe17R*\x95QS\xafY\xef\xa7B\xa4\xf7\xcd\x0f\xb0\x9e\xb2JQb?\xce/\x0d\x04\xd1U\xba\xf1R\x90\xa4\xb6l\x806\x93\xba\xcf\xd4<\xceG\xe9%\xd4c7kR\x81,\xf4UE\x0d\xa9\xdb\x1c\xee[\xd1K\xab\xcb8\xf3/B%3=\x85F\xc7\xf5\xfe\xca\xe1\xdc\x80\xfa\x1agt]^1\"\x83\x84Hp=\x8a/\xb5\x9d\xde\xbb\x8a\x93\xa9\xa4n\xbc\xa8\xc1#\xa7\xd0\xbd)\xdb!\xa3\xa1\xd0X\xde\x1f\x16\x81\xf2\xfe\xce\x14\xe7Z\x89\x11\xf6Di\xda\xd3\xc5\xddD\x91\x90\x9ao7\xe9z\xc2\x92\xf5\x92e\xbc.\x97\x13lj\xb3\x91k\nEak\x17G\xf6\x1c\xeb\xb3C\xbf\x8f\xf1,K\x97\xfcT\x86Cx\xfb]UV\xcf\xac\x10b\n\x1eG\x82\x05C0\xae\xe5j\xb0\xe3Mti\xa2-\x1b\x90\x88\x99Q\x16\x94\n\x83\x94<\xaa\x1b\xb4,_\xc9Q\xd7?\x97~,\x1d\x0c\x8f\xee}\xd7\x03m~D\xee\xd0\x02\xe23K;M\xbc\xaeZsn:\xf4\xb2\x8e\x84\x9f\xde\x11:\xe1\x94\xd6\x9b\x1b\xf4\x83p\xae\xb1\xb3%\xd3\x93*yA9Y\x08s\x9d{\xba6i\x17\xa7\xd6\xc0\xfcF\x08\xd4?\x96\xaf\xfd\xf2\x04 ;h\xb8\xb7\xe4=\xce\x11\xe7\xcb\xf5 &bv 5(\xf3e\x1dV8(\xbc~E\xd0\x92\xfa,\x87\x9cU\xfbYzd\xb5\x10\x93{\xc3}@\xf3w\x99\x1d~\xc1\xf2\xa1\x996\xb6`\x84u\xf8\x96\xe5\x1d\x90\xdf\x12#\xb0\xca\xcd)\xd4+\x08]Vs\x1b\xc6\xa2\x9aNU\x06\xf9\xe9\x9ca\x87\x0c\xc8\x96\x95\xa1g\xaa\xfbvDd\xafL>\xabG\xcf\xca\xd9B\x04\xb5\xe4\xff\x7f\xf9\x02\xb7q2Mom\xfa\x92\xd2\xe1\xef\x91\x93p93\xd1Y.\xa0\xc4\xb4xZ\xf9N\xf5\xc6h\x89\xfd#\xd2K\x07x\xf0\xcb^\xce\x8a\x8bx\xc9\xd2u\xd1Q\xccI\xd8-\xc4~*N\xb0\xeak\x8c\x87P1@!\xe0\x00d\xa1\xa5\xb7\xc0~_'\x05\xcbn\xa2\xc5=;V\x9f\xd3=\xabR\xa2k}d\xa8\x80\xa9}\xd0*\xffH.\x1f5\xb1\xbe\xd5|\\S\x97fl\x86\xb6\x91\xba\xec=3\xe6k|\x84\xed\xb6\x81\xa4\xb6\xc6\x02\"YX\xe2\x011g\x96d\xe9b\xd1EA\xa4C\xc7g\xbc\xb9\x05\x93?_OQ\xfc\xd0_\xd9\xf8\xc5{['D\x7f\x0f\xd2\x99i\x0e\xc7{\x1b#\x9c\x8f'E|#\xb4\xaf\x91\xfa\xf3[:\xa7/\x08\xe5M\xaaV\xd5\xaeW\xc0\xcbC\x99S\xc9l\x15\x0e\xa1\xda2~+/\xcaz\xe34Q\x93\x17\x97\x12\xe5o\xea\xb6\x87p\xb9\n1\xa4\xd5n\xa0\xf6\xdcr\xc9\xa6\xb1\x08\xce\xd2N\xc2\xea_Ta+*Rh\xd5\xe08X\xb2.za\xb9\xf36\x1c\x82\xf1\x0d9\x08\xbbNm\x18\xf5\xe2\xea|\xe8\x94\xe0lc\xe6\xd9\x11S-Eeb\x9c\xebq\x88\x9a\xf1SY$\xe1\x9d\x82\xe7\xc16\x17\x82q\xbeE\xfa&\xbd\x15 \xc9|\xa7\xfd7\x1a\x11ys\xf6\xd9\xa3\x8d{D9FBj\xa9\xb0\xd3\\#\xca'q\xdcX\xe3*N\xa2\xec\xae\xb9J\x94\xb3\x83\xfd\xe6\x91L\xf2\xdd\xb6\n;-5\x8a\xd9\xe0`\xc1\xda\xea\xec\xb4V\xca\xa2[G9h\x1e\xda\xfd{\xda\\\x95\x1e\xde\xf6\x16\xaf\xefnG6,\x8a\x931\x08\x95B.\xdc \xac\xab'\xb8\"\x81\xed\x0c\xbc\xba\x90\x92S\x11x\xd6r\x11T<\x7f\x1e\x94\x03s\xb6\x0c]p\x17:\xe1\xafz:\x0c\x12\xba\xa0!tBE\xe8\x88\x8e\xd0\x15%\xd5\xa3M\x03k\xb7\xcdd\x11\x15q2h\xed\xbdq\xf7\xaaG\xf5-\xdbl\xeb\xbaq\xbbC'\xd2\x02\x1dh\x9cz\x94\xba\xae\xc1\xe8\xa9mO\x82r\xb1h\x0e\xb2\xa5\x1eN\xb3}I\xb4\xeb\xf4ZD\xa3\xd0R\xd8\xea\x0f\xa5#\xa4n&\x1d\xd1{\xc5\xe5b\xed\x989<\x94\xd1\nE\x120\xdb+\xc4\xfb\x98|J\xd2\xdb\x04\x14\x15\x18\x82\x18\xb6[{\x88V{uJT\x05v(#\xd3Q,W\x07\xb4\xc7F\n\xf6\x99C)/\xdb\xe4\xac\xd3B\x80\x8e\x88\xd1\x08n#\xd7VR\x81\x1d\xcc\xe2\xc5\xe2M\x84z\xba\xf5\xfd{i\xc4j}^\x93\xda\xbcf\xa2\xc7\xbd\x8dzlDX]\x89),\xc0\x0ea\x15\"\xe7\xe4k\x1d\x9b\x92B\xed\x17\xd6[Dy\xf1\x8e\xa1\xa0\xadB#\xf2W\x17i\x81\x92\x92\xfe\xeed\x1e \x9f:\xdd\x1f\xb0\xa6\x0d,\xff,\xcf\xaa\xc8&\xf3\xa5\xa9\xc5\x8bC\x18\xec>QIb\xe0\xe5Kx\x0c\x87\x87p #B\xe3\x9b}\xfef\xb0\x0fG\xb0\xa7^\xed\xf1W{}8\x82}\xf5\xea\x80\xbf\xda\x85#\xd8\x19\xc0\x10vv\x1b\x87\xb4v\x1c\x9fJ\x1bXM\x7f\xa7\x0e\"[\xca\xdf\xc4\x05\x1a-Ov\x9f\xf2\xbd\xec\x0f\x9e\xed\xc2\xf7\x98\x14<\xd0\xac\x99\xeaK\xe1\xfd\xdf\xff\xd7\xff\xe9\xa0\xb2\xe8cTU\x97\x16\x83\x9ak\xd8\xa0\xe9h\xa5\x062p\x0dd\xd08\x10\xa0\x06\xb3k\x0c\x06\x7f\x9b\x1d\xee\xba:\xdc\x95\x1dv&\x9e\x85T\x88>\xa7\x90L\x93$\x12t\xb0\x1f\x1aX\xffB\xf36\xc3x^\xe8\x97YCy\\V}\x1f\xf0\x0f\x03c_\x94\x89\x0d\xeb\xfcVho*\x11\x17\xac\xa9\xa32\xc2\x99\xbe\x9f\xcb\x11\xefh!\xd0\x9a\xf7^N\xaa\x00\xf8z\x95\xd9T8\x8a\x07\xf0\xaf\xb0\xcb7P\xbfI)_\xa5n\xf4K\xf2\xee\xb6#i\x0e\x04\x80\xd7\x91\x93y\x94\x9d\xa4Sv\\\xf8\x9a\x0f\xac\x199Z=\x18b\x9f\x8b\xdd\x8f\x1f\xef>;\x004\xcc\x7fq\x08\x8f\x0f\xf6\x06\xcfj&_\x06.Y\x04m\xdfX\xb8Q_\xa4-\xd6 \xb2{i\xd6\x19Xu\x06\x97!$\x95\xa3\xfa\xce\xe0\xfeF\x1e\x14\xde\x9a3\x19\x103\xd9m\x9f \x1f\xa5c\xe1*4C\xa87\"\xd2\xc2M1\xeb7\xe2G\xda\x81$n?\xa8\x9c\xec\xf5\x8d\xd4r\x11\xe4&\xc7\x0d\xdc\xcb\xb6ksj\x10\xe8\xdb\x01\xc1\xc8\x95h\x84\xcc\x84\xdcbj\xfc\xd66\xdb#\x89T_z\x9b\x1c\xd5\xd6J\xb2\x1a\xd2\xf1\xcc71b\x0fv !\xb0bOY\xa4%j5\x1a\xf1\xa3\xd6\xf47\xed\x87 t\x0c\xbf\x86iI\x0b\xcd\x9a=\x1c\xaa\x91[\xe9\xa8\x11;\xcaA\xf7C\x04\xb0\x81\xa9\xc3\x16lX\xb9\x99\x1d\xc7\xf9\xd0\x0c\x8ci\x03\xf3\xd4\x06\x0b\xada\xf5WQ\x8f\xe7\x06\x87\x10\xd75\xd3\x8a\x91t\x0b\xff\x95\xcdmy\x06\x95\x82\xa1\x01~\\\xb6\xd0t|\xee\xb4\xff\xe3*\xef%\xfab\x96\xac\x99b\xe2\x85\x9c\xe3\xe8\x18t\x03%\xd5Mhs\xbb\xf5\xbd/\xec\x14\xd1\xe5\x9bD\xa3\x04c\x92V\x00\xd71\x89\xf3\xfc\x9c\x10$\x81\xe2/\xeao\xf0:I[\x91:\xd4\xa5\x88\xd0xK\xf5\xc0\xf8\x8f\x1cV\x1d\x9d\xebc\x92RL\xe3]\xc2\x8d\x99\x17\xbd\x81\x01\xae\xec\x93+\x8aAs\x0e\x19\xbc\xe0M(\xd2hW\xba\x91\xd9\x03\"\xbf\x18e\x97\x0e\xfe#E\x0d}\xd9L\x8a\x8e\xbcB_\xaf\xa1@\x8aG_\x08)\xdd\xc8\xce\x0e\x0e\x86\xaf\xde\xce\xae\x10\xb3\x9b\x06\x86\x8c\x956\xb2\xa0\xf3\x18v\x7f\xfd1\xc8\xb60\xf8\xce\xa1\xca\xd2Y\x1f\xd5\x1e=*\xd5y}\xfb\xb8M\x8bQOhly\x9b*\x96\x01\xfb\x8d\xaf\xad\xf3-\xb1\xa9\x8c\x1e\xa0\x01v\xc0O,\xcaMn\x0c\x9a\x05\xef\x0b\xcfijh\xf5|a\xf5\x0d\xa3\xa9\x17\x9a\xa9g};\xbe \x08\xa9C4h\xe4\x85\x1eT@\xa9C\xeb\xde\xc3\xd1\xc4\x98\xfa\xa45 \xc68\xa5\xeeu5\xa3\x9b\x1ei9Nn\xb4\\Pt\xa63LcS\x164\xa9\xd7\x11\x87\x11\x04\xb5\x84*\xf5\xb4 \xb1\x9d\x01\xabfu_Zc\x14Y\x94\xe4\xb34[\ns\x0c\xca3\x06C\x83_\xa8z\x1dl\xa7\xc0d\x9b\x8d^h\xa9*\xe9\x95\xb5\x9a]9*\xb1\x0d\x0f\x9c\xc9\x95[J\xdb\xca\xea\xf2\x983v\x80\xe068\x84\xae\xa2\xc9'\x15\xaaf\xb9^\x14\xf1j\xc1\xa0\x88\x97,w\x86\xbcW\x03\x99\xaf\x93O\xa5\x9bJ9\xba\xea\x8d\xcc\xfaW\x94W\x852ut\x88Y\xf8\xdc\x93M\xbb\xda\xc5\xf3'5Lw\xfc\xd4\x8al\xaeLd\xe1\x05\xa4D\xe0\x8d\xaa+\xdf,\xb6z\xfcZ\x99\x81Ri\x04\x19\x9bj\x88C\x99I\xeakN\xd7\x90`\x14\xf1.\\\xc5\x1c\xf4\x8d5*u3\xafT?/h\xfb%\xc2\x13\x83\xaa\xa6E\xf3h\xcc-RNT3y\xaa\xde\x1d\xea5\xdc\xa9Ff\x8bu>\xd7\x1a\x10\xbf\x0fU\x89\xb2\xbaG\x9b\xedU\xc6J_\xbd\xa8M1J\xf1S\xca\x1d\xa3\x8eg\xe4\xc8\xf4\xd1\x1c\xe9\xbfj\x99\xd3Hnl]\x12\xd7\xfa\xa2p.r-\xc9U\xb5\x7f\x9a\xe7\xb1v\xb1}\xb5\xab\x14\xc2\x88\xd4\xe6\x12j\x99GY\x15\xee\xde\x8a\x14\xa0\x0eL\xeb\xa2\xe3$Z,\xf86\xac\x16y\x9a&\x0cn\xe7,\x81\xdb2\xa9\xd2\xd6!\xf4\xcd\\\x86B\x8bi\x10\xcd\x1au\xdc\xb0\xbb\xbc\x88\x17\x8b\xdaV3\xbb,!C\xb8\x03TB[j\xa5V\x0b\xb5w~,\xd8\x95x\xc3\xe0\xee:\x816']\xa3 \xa5\xdfS\xbd}\xcb\x9d\xac\x1ay}0\xb5\xfd\xd6&)X\x00\xae\xbev\xc4\x98qvk\x8b\xb2t\x97ug\xb3\xa63\x13\x85\x13\xfd\x80\xe1P\xa9\x1dB\xac|\xa3]\xb7\x17!le\x06\"\xd1\xf2Q\xe7#\xc7\xcf\x8c5\xc2\xf3\xe5\x17:q\xbe:Al:\x174\xdf\xaa4\xc2\xb6t;)t\x88\xe25\x82\x02\xb8\x88\"\\cW0\x0c\x93\xc9\xc0\xf4-.\xcb\xd7\x1b\x0dU\x93\x15\x03\\\xf4\xea\xdc\x960!\xb6\xb7A\xdf \x89\x8e\xa9\x1at\xfe\xccd\x14\xed\xd6\x8c-\xd6l\x90Q\xf8\xc2fZ\x10Y\xe1Cn\x12w\x83\xb8\xdc\x8b\xd7\xd6\x98j3\xeb$G_\xcc#\xa9KEiv\x1aM\xe6\xf5\x8aq\x95\xdf~\x92\xb1\x1a.tK\xdf\xab\xf0*\x16D\x93\xa4\xaa\xd2\x8a\xb4\xb4\x1am\x03 \xe7\x069\x8eug\xb4iV\x10M]\x12\x99`\xbe\xc08\x80\xc0F\xc9\xa5U\xf9\xab/\xf3f\xa3\\`\xaeUX\xd34\xc2}\x97\x8b\x84g\x00\x7f\xfb\x86&5\x0c\xd0Sen\x92\xb7\x16\x89\x1d\xb9jq\xfe.z\xe7c\xfa_\xd4b\x14B\x7f\x817w\xdf\x7f/\xd5\x15;\x98\x9b!\xc5\xe8\xd6\xc32\xfc\n^ \xb5\xa7O\xef4\xc7\xba\x0b\xce\xc1\x93\xa7\x81\xcf\x87$\x916\xca\xf3\xf8:\x81!\x16=\xfbV\x9b\xc2\x10\xd2\x10\xb3\xc9\x85\xb0\x0eA\xf5h\xec\xadNv\xbd\xd6\x85\x05\x7f\xb4\xb8 Evg|E{g-B\x90Q\x00I'\xacI\x9a\xcc\xe2\xeb\xb5r\xc3\xea\xd3\xcc\x7f\xe4t\xd2js\xe2\xc2,\xd8C0\xcc\x80\xb5u\x85IT\xda\x8fU\xa7\x93\xb8\xf4Xhw\xb9\x99%Y7\x0f\xdd=\xec\xfa\x90\xab\x91\x88\xd0\x86$\x14\xc3\x8d\x13\xd4\xa35\x0cJ\xa6\xa5.\x0b\x1d!ez\x0d?\x13\xf9\xc1\x05K\x81\x9eZ\xd5*e\xfa\xad\n^\x17\xc9\xd4\xd2\x83\x83 \xc4\x8c\xa8\xa3\xcb\x10\xe2v\xaa\x1aR\x1ap\xce\xf9\xacG\xec\xb2d\xe6\xf9\x8fz\x15${\x05\xf6\xf3\x1c\xd8\xce\xce\xf3@\xb9\xb9z\x91\x07\xdb\xe0oo'A\xa5\x82\xda;0\xe5zM\x8f\xa2\xdc&|o\x96\x88\x9c\xb9XTJ\x1c>o\xb0\x90Q\xeeC\xf0\x02\xd8\xe6\xff\xfcM\xb51K\xa4\xc3\xa68;+\xc7\x81\xe7\xf0\xf5y\x9de\xec\xbcF\x04\xc5G\xf9\xc6\xb1f\xaeD\xf2 \x9eZE`\xa9\x1e\xec\xbd\xc9\x9f\xc8OB3\x01\x95\x03\xfd\x81\xba^\xfe\xfa\xad\xc4I\x88\x1cT&u\x1a\xe9\xeb\x00\xaa\xaa]\xb3\xe2\xec6Q\xd5^\xb1|\x92\xc5\xab\"5\x0c\xa8#\xd7\x07\xef\xa2\xa5\x19\xd3d\xed\xaa{~\xb7\xbcJ\x17y\x87\x93\x89\\cA\x82\xe5\xd1\x9c\xf9\x85\x89\xa7('\xea50\xca@\xe4\xe7\x81bv*\xf1\x9b\xce-G\xae4\x7fpOg\xa1H\xba\x9eQ>\xb6\xfa\xd2\x93M\xa0\xa1\x86\xfd]\x1d\x81\\\xaa\x0e\xcc\xe7\xbe\xfe\x07\x9b\x89n\xe0SJ\xe8\xb4\x9c\xfd]\xbd\x95o\xdc\x15\x8f)\xfe7\xf1\x07\xfb\xe6n\x89iO0\xce\x9e\xde\x17I\xf9\xc1Fd\xc2\xe3\xfb\xa7\xa4v\xa3\xddK\x12\x0c\x19\x92+\\!\xbd#\xc1\x87\xac\xa9\xe5HF\xd9%\xfa8)_\x8a\x08\x05\x12\xf5\x85\xb5$I\x0b\xa0\xf5>\xba1\xfcr\xe8[[R\xdb'B\x10\xd4\xd3\xc8}\xf9\xe2P\xe0![\xefR\x10\xceY\xdbh;\xa1\x05\xcdH\x15!x\xe31\xcb\xdf\xa6\xd35\x9a\x9c\x98K\x89\x8c\x8e.W\x06\"\xde<\xda}v\x81\x88\xbdX9\x17\xae\xdf/\xd6\xd7q\x92\x0f\x1d{\x8be\x99\xab\x08\xb0\xed\xe9z\xc2\xb2|\x08~\x9f\x0b\xbar<Ac\xea\x87\x08\x07\x9a\x0f\xa1!{B\xce\x16lR\xa4\xbc\xe55Y\x890\xef\xfb\x8e\xfe\xf5\xd5\xe6\xa2\x05\xc3\xb3k\xe6\xf6\xe7\xdb\x0fYA\x11\xc1\"\xebU+\x02G\x90\x01\x05 eyk\xc5O\xae\xfd\x8c\xf0\xf0O\xfc\xc1\xee\x93 \xb0O'^\xb4\xb7\xfb8 \xef\x98r\xfa\x8eI^\xf1WCt1\x12J\x046\x93\xff\xebjT\xc2\xfdY\x0bm/$T\x89\xb8\x15Y\x9aG\xb9v\x98\x8a-/\xec\x18P\x03^ \xb44\xff\xa6c/{ !\xf6\xc16\x97M\xc6\xf9\x1a\xed\xee\x9a\xab\x97\xaa\x92=\xfd\xf4\xef\xb61olG\x1c\x8d\xbf\xff\xdb\xd7\x107UVm\xaa\x82o\xb1w\xa7?\x8f/~\xfap\xf6\xf3\xbb\xf1\xe9\x87\x0f\x1a\x90\xda\xec)\x92\xde*\xba[\xa4\xaed+\x88\xfc\x187\xa9\xecOx\xd3\xbaw?\xc7\x82!xx\x92&\x0e+\xdc\x06\xc7\x81\xdez5\x8d\n&\x15\xfd\xb9\xd7\xa6w\xd1\xbe\x95\xf1\xf5\xfa!D\xbd7q^\x04~\x10\x08\x19B\xbc\x9be\xe9\xf2\x0f\xe7\x81\x1f\x93\x01d\x1a:n\x8b\x07\xc3\x9b_\xd7V\x84q\xa6\xf2\xfc./\xd8\x92\x0cvb\x1fz\xed\xab:\xfe\xe1\xf8\xe2\xe4\xa7\xfb\xac\xad\x13\xda\xc2\x1a\x7f\x19\xad\x1a|\xdc\x8dO\xea\xa0\xb4q\x83}3nP\xe0\n\x1f\x1e1d\x8e\xb2\xfa|H^\xf3\xb7\x8a\x1a\xe7\xefOO\x1ev\xbb\xa7r\xbb\xeb\x00q\"\x0f\xaf\x9c\xf6rV\xf8\x1e_W.I\xe7+6\xf1~\x89\xc5\"vq\x1a\x04\xbd<\xcd\x8a\x1f\xee: /\xe8\xd7e\xd7|\xc8\x8b815\xdc\xea\xf9\xfa\x0f\x88\x03\xff\xdf!\x0e\x88C\xff$\x0d\xdf\x86\x16\xc7\x1f/~zX\xd2\x10[\xa4\xc1X^\xce\x9ad\x0d\x01\xc5b\x91\x02L'\x17\xd1\xba\x98\xffZ\xe4\xe2\x1f\xe6\xd0?ysz\xfc\xa1A\xe2UOy\x19\xe8\xde\xc8hM\x85\xa6\x9f[\x92\xea\xc9i\x06.\xb1\x004\x840>\xe9\xcd\xe2E\xc1\xb2\xee\xc4\x80\xf5>\xb1\xbbs\xf6_~\xd0c7,\xd3\xc8\xb4\x13\xb4`u_\xb4d\x0bD\xa9mT4d6Q\xb2?z\xb8f\"\x16aw\xb2\xefDg\xd6[\xb2\xec\x9a\xf9N \x19\xc5T\";\xdc\x06X0\xfe\xe1O\x0f\x8d\x08\x9a\x1e\xa3\xf2 N~\x0dtH\xe8pZ\xbf\x06\x805)\xb2.\xc2\xc5B\xe5\xb6k^\x97\x89\xcb\x0f\xf3m%\x94\x0f:\x0b\xe5j2\xa6\\./e\xec\xc9\x95\xaa\x03\xc3{\xfa;\xfb/>\x83\x85uG\xc5\x19\x9b!\x18WS\x0bv\xc3\x16\xc32`|\xadl\xc9\xf2<\xba\xe6Go\xe9\xe6\x8d\xb5\x8c\x1e\xff\xbe\xa2\xb7K\xaf\xd5\xa4\xe1\xb4`\xfb\x97\xfc|\xc5&C(z\x9c\xc98W\xda$\xfc\xf5\x87<M\xfc\xa0W\xa4\x7f87C6\x91\xd2\xb8\xa1\xdaZw\xd8\xa8n}\xf7M\xe9\xddP\x19\x9d\xa0\xd2\x84&k\x8aA\xeb\xbe\x07\xa1\xa6\x04%\xabP\xe4Oi\xd9\xdb\xce\xc2I\x9a\xe4\xe9B\x06^\xf3\xbd\xd2\xea\x85e\x02\x97\x862\x1ch\xabB>\x04\xd6\x91\xb28f\xf35\xe8\xc0\xb1\xaaok\xa2\x80\xd8\xa1\xf8b\x15 \xbe\xc4l\xba\xc2G\x87\xf6\xf0\xc9\xae\xa9\xd4\x7fH\xed!Er\x08\xf7\xf8\xff\x15\xf4\x80 \x87\x8e7\xd3\x11\xd2\xe4]q\x8f\xc6\xff\xdc\xab\xfe\xdc\x0f\x02a:\xf3\xf7'_\xb4!\xa3\xeb\xc0\xe8\x80\xc67e\xb41\xc4ZI\xc7\xbd\xa0\x17'S\xf6\xf9l\xe6{\xd2\xe21\x9dA\x84g\xbd\x9f\x07\xa6\x11)\x947\xd1/a\xc7\xe9\xf6\x7fS:q\x1b] \x07ft \xa3:S\x96\xb6\x98\x05\xa1\xf0\xbd\x90\xea\x1e\xf4i\xe7z\xfb\xa1\xab\xc3>\x92\xd8\xed\x0ebB\xadqq3\xe1\x9b\x88\xd0\x90\xd7\xcdh\"\x91i\xdc*'4\xb1\xab\xe5\xef\x970\xc0\x83}\x1b\xbc4\xc3\x18)\x05\x0c!\x1b%\xb0\x0d\x83K\xa3\xea\xae\xac\x8a\xc0\x0b\xc1\xd3kj%X\x80\xbf\x9c\x03\xfc\x1a\x82\x97\xcf\xd3\xf5b\nW\x0c\"\x97Z\xc3O6\xc9$\xe0&~\xbf\xe9\xfdD\x9c\xbdEO\x1c\xfc$\xa1\xd1nu\x1dD}\xb0\xf7TCZ\x071\x0f\x91_\xfcMC\xe6\x1b(\x8dkw\xfa\x14\xf9\x11&@\x9e\xf2s\xeay\"e\xeaj\x11M\x98\x9f\xb0[\xf8\xc0\xaeO?\xaf\xfc$\x04\xef\x9aW\xf7\xbc\x80\xd2\x1b({\xa2\xdf:\x1e.\xa2\xbc@ss\x11Yr\xb1\xc0\x1fy\x19\x16\xd6@+R\xb4\x10\x98\xf6\xd8|\x1d[M\n\xa5\x8b0{U\x0cl\xd0q\xf5\xea\x80l\xd3\xb1\x94k\xae\x8b}JXU\x9a\x16cm\xaa\xa9\xd6\xc1B\x8f:n\x1aB\xd9=oG\xe3\xc8\xbf\xc5$\xe9A\x97\x9d\x90F\x1cs\xb0a\xdb\xe5\x92}\x11\xdd\xa5\xeb\xa2\xdb={)\x88\xfc\x03\xdc\xafS8\xfeP\x1c2}\xbf\xbe\xdb\xef\xbb\xef\xd7\x9fv\x16\xe5\xffW\xe0\xab\xff\xbe\xdb\xca\xc6\x99P\xaahvM\xa3\xa8HaM\xfc\xd0X\xb3& \xb4\xb0\xab\xe6\x98\xa4\xd3\xb8\n\x96hm\xaen\xe7\xa3J/\x90\x86\x90\xf7>\xbe\x7fu|q:~s\xfc\xa7\xb3\x8f\x17-\x8a\x82\xfaQ+\x88\x00\x9e\xa0R\xb9\xa7S\xc2\xc6\xde~|\xfd\xe6\xe2\xb4M\x91\\\xefM\x08\xde\x9b\xf5v\xfe\xd3\xd9\xcf-\x9dX\n\xca^>Oo\x13\x9b\x0e\xa9\xa3b]j\xed\xabO\x8ay\x9c\\\xbb\x1c\xe0\x94\x16\x1f\xdb\x95\x87T\xd5\xc8\xdf\xf8\xd8;\x1ev\x1c\x0e\x19\xe1\xd8\xd8\n\x07 \xf5\xb7g\xafN7\x06\x07\xce\x8d\x06GUi\x99N\x99c\xfa\x18\xea\xdc\x1fy\xbcJ\xee]\xaa\xfb\xab\x84\x0f5\x13\xb1C\xd0\xc6\xd9\xabO#\xfd\xad\x1c\xa5|\xd9\xce\xd7\xcbe\x94\xdd\xe1\x94o\xe7\x91\xc8\x0f\xc4\x7f\xc4\xf99_U\x11\x86}\x9de,)~D<\xd5\xdf\xb8\x98-u\xec<\xdd\xfbUO\x1d\x82\x95\x13de`Z\x97\xe5\x92\xda\xe8T\xa5\x9aS\x07\xf6\xe8Z#\x13\xda\xf2\x86\x04\xb4\xba\xb6&\xc9\x80S\xdd\xb50\xd6\xa5 {\xb4\xd6\x8brw'i\xb6\x8c\x16\xf1_\x19\xba{\x05\xd2\xfe\x1d\xfb\xd6wp\xae\xef\xe0\x00\xcb\xeb\xaf\xf9w 9\xcc\x1a\x0eu\xda\x8d\xa5\xdd\xab.\xa0\xd7SX\xe9\xa6\xb1pT\xff\xe9\x8e\x9e\xd3>kj\xef\x1a\xea\xe5\"0\xa6jo\x1bA\x94\xbaK\x06\xb6\xfc\xdb\x81\x1d\xdfBf\xc3c\xd3\xb8Hk\x18\xd2\x89\x94T\xf2\xcf\xdeAG\xd7/N\xa5\x8c\xa1\xd0jt9\xc0\x14\xf3\xe6d~\x12\x8c\xfa\x97!$\xa3\xc1%zc\xfa&EoTm\xab\xbb!\xd6\x13\xcd\xda\xc2\xa90\x14\xd7\x90#\x16\xfec\xd2\xc8Y\xa4\x0e\xac\xf7\xf8]\xfd\xaf\xce\xb0zb\xd2\x0c\xa9\x96x\x16\xf8^\\\xb0,\xc2\xa5\xb0\xc9\x9b\xe1K\xd9\x06o\xc7\x8a\x9b\xa1\xf4\xfd\xac\x87\x0dk\xc9\xc71{\xdaa\x8d\x9f\xddp\x8a\x8dsI\x8d\xb0\"\xf6\xfa\xab\xe5\x1a=\xb9\x1ce\x97f\xfe\xbdX.b\x93\xa4\x06\xaa\x1f#*Q(\xa1\xc8)NM^\xa5\x1a\x108\xb1[oA\x83 \xedx\xd3\xd9r_\xc4AB?\xe6*\x84\x93\x19oE\x913\xf3=\xbdi4\xc0\xd1R!?\xccb\x02\xa6X\x86Y\x97\xda\xa0\nMr\xb0z\xa6i\xc2\x86b\xdc\x9d\x83^\x878\xb0\x0d\xba\x8f\xa86\x98\x1f;\x08\x03\xeb\xe0\x1e\xd5\x05\xcb\x7f\x05\xfe\xe9\x97VE\xe4xk\xea^\xbe\xdb,Z\x1d+\xfdBC\xee\xe8\x7fH\x85\xc5\xde\xaf\xcb:.Paa\x99\x94\xaf\xcb\xa2\x81Y\x94\xcb\xa2\xbd\xfd\x03Z\x97AD_\xfd\xa7.\xe3\x97\xde\x97$:\xadHw\x81X\x95\xec\x99%\x91,yj\x954i),!c!\x9b\xd9\xb3\xba\x9eH\xb5\xc6\xc0x?\x93\xefwI\x84j\x08S\xfaK\xd8\xb9\xd4\xf4,\x99\xa6g\xd1\xac\x0f\xb3\x10fJ\x06?\x7f\x7fz\xd2M\xefQ\xe6G\xd0\xa2\")\x81\x1b\xa3\xe9\xa2Z\x04-Ru\xa5\x08\xe8\xa3V\n\x01\xc7`>~x\xd3m,\xb2\xb3u\xb6\xd0\xfb\"\xc4\xf6\x86\xce\xfep~\xf6n\xa3\xde\xfe\x92\xa7\xa6\xb4u\x96MY\xc6\xa6\x9a\xee%\xe8\xdc\xff\x87\xd3\xf3\xb37\x7f<}\xb5\xc1\x18P\xf8\xc9X\x9e.n\xd8\xd4\xbb|\xf8\xb1\x8c\xcf?\xfep\xf1\xe1tc\xad\x0c\xad\x8fI\x84\x13\xbd]\x98J\x13\xdab\xde\xa2\xa4Qs=__\x15\x193e>]\xad\x14\x04\x0ehd\xdd\xa1\xf0\xfe\xf8\xc3\xf1\xdb\x87\x9a:\x9f\x9d{\xe6Y\xb4|\x17- \xd0\xc4U\x85\xd7\x84\xd6o]\x15\xdb\x85y\x13\xcc1\x9cg/\xce\xff\xe7\x92\x88 7!tB\xea\xbd\xf0T\xe6\xe7\xcf\xfc$\x9d\"\xd1\xda\x8a\x05g\x0dG\xb0\x16\xaa\x88$Z2\xa17\xeby\xb0\xad\xde\xc6\x89|\xc7?\xde\x11\x05\xaa\x1d\x1f\xf3\xf7\x97_\xc4\xf61\xca\xe9\xea\x02\x8e\xc0\xc3\x19\x8d?/\x17\x1e\x0c\xe5/Z\x7f\xa0i\xf7\x18\xe6\xf3F\xeb$7\xd6dA\x08#\x0f\xa1\xc9\n\x86Wv\x93\x10f\x97A\x08yg\xac9}\xfb\xfe\xe2O\x02w\xc6\xaf\xdf\x9d\xbc\xf9x\xfe\xba\x95\xb0l\x84EoY1O\x89\x1a\x0f\x83Kq2Y\xac\xa7\xect\xb9*\xee\xfe\xc8Ak\xf3-\xc2\x1cx+.y\x1ee\xc2v\x1be\x89\xef\xfd\x1ce \x06\x1el\x02\x08L\xd0\xe4\"I\x0b\xb8f \x17^\x19D\x80c\xfb\x1f\xec\xae\x87\x16d6\n\xe4\x18\x1d\xd7\x81#\x0f\xb3\xe8c\x04@\xce\xd9g/\x84\x9c\xaf\xfd\xba}\xed\xffx\xfc\xe6uE3\xce\x7f\xbd\xe5\x8e\xf3\xb3\xe3\xf3=z\xad5\x05YGH\x04\x84\xfa\x9f0\"\xe7\xb4\xe3\xd1\xe7\xe5\xe2Q\xdc+X^\xf8\xb1\xd8\xde\x1c\x0d\xd6K\x96\x8f\xc5\x96\xa4\xbe\xe4{x\xd2\xe3\x9ca\xc4\xa1\xf3s\x8c\xf3\x8bd\xcc\x10ArB\x18\xb1\x86!6\xdfcl4]c\xb7_R\xd3\xefx\xfb1S\xd6\x8f\x1a\xed\x10m\x95\x8e\x15\x94\x01\x95K\xecV\x18\"\x8e\xb0\x9bh\x11\xf3\xc9\xbd\xe7\xad\xa3\x91\xfb\"\x84\xb4\x835\x18\x87FAR\xe4\xa2\xa2\xc8!(\x0b\x85Ks\xfe\xa4\xd1\x93\x1d\x15\xa5}\x7f\x08\x93\xfco\xdc%\xdavx(\x1cH\xdaq`t\xd9\x15\x07\xbaX\x03\x81\xc5F\xd6\xacCj\xdd\x12\xb0\xdf\x18\xf0\xe7\xa7\x17\x9c\x9b{\x7f\xf6\xee\xfc\xc1\xb8\xb8\xcc\x8c\x07\x035\x1e\xce.\xc3k\x9d\xde\xd2A\xc8\xd6\x0ef\xc3_\xa3\x13\x1d\xc2\x07\x8e\xc0\xd0\xea\xdb\xa0\x15\xd6\xd2dP,\x8e\xfcC\xd1V/!\xcf\xc6\xd2\x90_T\x92? \x9e\xaa\x88\x8au\xce\x19\x16U\xb5zS_\x9bP\x96g,_\xa5I\x8eY\x02\xb2\xa07g\xd1\x94\xa19\xd2\xba\xfc\xfb\xcb\x17K?\xc0\x17c\x824\\\xe3}\xb1\x1d\x8e*i\x08\x91\x8b\xdd_;(\xe4B\xc1\xae\xf7\xc3\"\xbd\x12\xda\x97iTDzPm\xbb\x8e?A\x8a\xed\x1aD\x08^\xc1>\x17\x9cr\x88\xd6\xf8\x112\xe9\x88\x95\xff\xf1\xf1\xf4\xbc\xedJ\x7f\x03\xa4\xfc\xaf\xcd\x902\xd6\x90\xb2U\xec\xf8\xaf5\xcb\x0b9\xe9\xd8\x05\xf9.\xa2\x05\x9f\xf9\xdb\x8f\x17\xc7\x17\xa7\xaf\xfe\x91 \xb0\\\x17Q\xc1\xa6\x1f\x1e\x0e\x10\x929<{\x7f\xfa\xe1\xf8\xe2\xf5\xd9\xbb\xf1\xdb\xd3\x8bc~B||0:\xd5$r9\xa4\"\x01\x92O\xec\x8e\x96\xa6F\xad,\x85\x83[\xeaz\x1eYN\xa0\xe5J(V\x0e\xb5\x0e\xae\xcf\xf3 \x080{dY\xbd\xd2\x0el\xfcI\xab\x90\x8d\x9f\x1eUX\xe2\xaa\xb7\xe0\x87ll\x9f\xaci\xd0M\x1b$\x98\x87\x87>\xc5\x9a\xb0\xa3qOL\xd9\x82I&C'\x87Y\x08\xe9e;\xde\xab\xc9<\xe8\xd6\x7f\x98\xb9\x94{\xbb\xe3T8-;?\xf9\xe9\xf4\xed\x83\xadI>\x993\xeat\xfe&*\x96\xf2s,\xd6\x11\xd5\x13\xfdTT,\x13\xca\x87/_\xb0\x9e\xbc\xb6\x1dR\x1fxc \x83s\xf1\xe6\xb2\x9e\x97$(\x7fv\xbe\xbf\xdd\xa3c\x99=\xdb'4\xdd\xf2\xb67_\xb1I\xccr\xaf\x8b\x1d\x00\xb9\x16!\xb2d\x99\xcf\xd0_?/\xb2\xf5\xa4H3\x12zZ*\xa8HK\x0f\x7fx\x08~\x82mD\x01\xdf\xdb\x98\xdbh\x08\xa9n+\xd0\xe9*\xe1\xa6\x16\x87\x15\xe7\xb8\xff\x8cV\xd8\xef\x99 \x91\x86\x85\xfb\x94\xce>\xf1\x07V\x948\xa9\xb1\xa7\x14\xf6\x93\xde*K',78\xdbU\xc9\xfd\x94\x89\xf6k\xe5S,\xafg\xc0\xaf\xd7\x98c\x8d\xb7\x82\x9f<\x99GI\xc2\x0c\x85\xdb\x0d\xd6x\x15\xe7\xab\xa80\xc35/1\x1di\xed\xd55\x11\x80\xee\xae\xed*\xf7F\xa67\xd8\xb6\xc3_\x83\xd4\xea\\\x1bWJ>s\xe6\xbeW\x97Z\xd7V(R\xf5\x08\xba\x82\x15B(|B\x92\xa9\xbd1\xa6s\xd5h\\\xc1\x1fu\xe1%x\xcez[\xd5\x88V|\xe7O1\xc6\xc1\xaa\xb1\xc9*G\xba\x8c\xd6\xcaQ{\xf0\x9c2lJ\xaa\xe8\xaa\x95\x11S\xb2\xbd\xed\xb8g\xbb\x1emo/[o\xda\xd7\x8e$\x1a\xf2\x06\xe8\xc7j\xe0\xa1\x15\xae:\x84\xcc_\x06!,\xbf\xd3^5\xc7\x86\xd7VG\xff\xc8\x93[\x00\x87\x90\xf8\xcf\xf6\x02\x7f\x16\xe0\xb5l#\xec\xd0\x94\xe1\"\x9e|\xf2#\xff\x0e\xe3\x94\x0ct\xfe\x0f\x86p\x83\xc6`\xbd$\xbdmm\x0dk9\x1b\xc2\xd0\xc2\xb12\x19N\xd8-\xcc\x83\x1e'{\xbb\xfct\xe2\x7f\x0czi\"\x8578\x84\xab\x10\xbb\x8b\xfc\xb8\xb7J\xf3B\xeeB$5\x03d>&\xbdh:=\xbdaI\xf1&\xce\x0b\x96\xb0\x0c\\\x01\x0b\xb5\x06P\xdb=\xe9\xc5K\xde\xe39\x86S\xcdU\xd0c\xf7\xd4&\xfa\x18|tt\xe3\x07\xca\xef\xea\xa6\x87\xf6\x88t\xa7\xa1\xab\x10\xb6\xc4\xc8y_^\x9ad,\x9a\xde\xa1\x1d\xc2d\x1e%\xd7\xcc\x838\x81\x85\xef\x89 \xaf\x1e_>\xf7\x88\xf2^\xb4Z\xb1dz2\x8f\x17S_\xfb*\xe8\xd9-\xb7\xe1p\xde\xcb\xd82\xbda\xa21\x91 \xa7\xdc\xa7\x06\xce\xd6\x16\xb5a|\xac\xb8\x88\x97,]\x17\x1aF\x84\xd0\xaf\x1f\xb8\xfa\xd1g}?\x84\x95q\x06pZ=\x84i\xd5\x04\xfe\xf5\xedq2\x1bM\xebh:\xea\x08\xc2\xcd\x9f\x9b!\xb0v\xb2\xd9\x18\xc9\xb5\xb5kBQ\x02\xb2\xeb\xb6\x8e[\xa0\xb7)\xb3\xb3\xfb\x94dvv\xfb\x8f\xef\xc3\xe2`\xb2\x10\xa4\x95\xa9_\x88|\x1b:\x9b#\xed\xedJK\x08[\xf1\x82\x91\xa2{3;\xa5\x98\xf8\x82\xf3\xc2\xa8\x05\xe3b\x92\xb4\xa4\xe5\xec\xc32\xce7\x8cs[\x8fu\xffd\xef[\x02\xda\x17\xba\xe5\xc0!l\xb9\xcc\xb9w\xfb\xbf\xa4Q\x8e>\x1eY\xa7\x8b\xa5d+\xf3\"\x9c%\x1d\xa1\xc5]\xa8\x8f\x89\xe1\xd40j\x8aw2\x9a\x13\xd8\xe3\x81\xccOC\x88\\\xb5\xa112\x85zn\xa4\xb3}1J/\xfd\x88\xd0\x10\x98\x8f\xd0\x0e\xa2\x8a\xc2Y\xb7=\x8a\xb3ztF\x9e\x0c$\xa3\x1e\xdb\xe0K=x\xeb\xb7\xeeM\xd3\xa4\xda7%`\xd5N\xf0\xf3\x00c\xfav\xd0\x80\xab'\xf3=\xce<x\xd6\x95\x82\xfe\xb4z[\xeaO\xe6\x8b\x08\x89-M:\xeeN\xf8\xc3\xe7A\x16~\x95\x83mW\xcboF\x04\xda\x82]?u\xd9{s\xf4\xce\x0cE\xb8\xbc\xbe\x1d\xc2(\xf1\xf7\xf6\x07\x81\xc6\xe0}\x03my\x80\xc1\xec\xf6\x9f\x06\x86\xa1l\xbc\\-\xe2I\\`\xf9\x93\xfd'\x01:\x82\xef?\x95\xff?\x13\xff?\xeeo<\x89j\xb8\x07T\xf8|.2\x92\xe7\xcd>\x15\xcb\xc8\x1b\x89\x88\xd7 \xd2'\\\xb6exq\x918\xc2^\nM\xc0\xb7R_\x84\xc9\x8e\xe5\xff\x98\x0d\x87\x8b\xdb\x9b\xa1Q5\xe9\xc1>}\xca>1\xe5j\xa9R\xd83St\xca\xfc\x15\xe6\xa1,\xc4\xf0\xa7\xfd.g2\xba\x1f\xe4\xd4\xc9\xbc\x15\xa1d\xa9TP\xf5\x8dX\nb\\\x84\xdf\x19\x84(\xb2\xa3\xa7|\x8aQ\xe2\x82@Jb\xa1\x90\xdaa\x07\x06!J\xe9\xecy\x99o\x12\xc5\xbe\xed\xed\x05\xbc\x80\xc9s\xd7\x81\xc2%\xa4\xb5_\x8c\x16\x97\x0e\x82\xcc\x05w\xc2y\x81O\x01{\x995I\xc7\\\xa6_\x8d\xa6\x0e\xe9XO\xaf\xcd\xbb\xe1\xc2C\xee\xdf\x840\x0da\xc5\x99{QA\x98r\xceQ\x80\xb9\xe1\x9c\xfc\x0d\x0c!\xe6c\xc6@\x17\xfc\xcd\xe8\x92\x9f\xceT\xf8!\xebM\xe6\xaf\xb0\x83y \x00\xc6\x87\xf7\x9d\xfb\x13\xb5>\xf7E\xc2\xbd\xfdN\xbc\x1bq\x14{\xe31\x9a\xb9\x8e\xc7b\xaf\xe0\x9e\xe0\x8c\x88\xfc\xc0\x86z{V\x9cZ\x12\x19\xa2\\Z\xa1\x12V1Zb\x1a\xc3\xbf\x01\x95\xd7\xa3\x82\x0b\xf7\x1b\x9a\xb5k\xf4\xc9\xe4\xc5\xd261\xab9\x10\x16C\x95\x9c0\xc4\x0d\xc1\xab\x9b\xe2\xb6\xc5\x8f\xc10\x94\\&E\xb3\x07B\x06p\x9b\xf7\x7f\xf5\x1d\x8b\x9dv\x81\xc7/lN\x1cBQ7\xa1\xc8Q\x17\xcd>\xb3\xc9\xba`\xf2N\x0b_ \xfb\x81?\xe4ir\xbeb\x13\xed\x95\xfc\xe9\nJ\x11\xfb\x89\xbfO\x862\xe7%\x83=\x87\xa3<\x91\xecX\xad\xc5/c\x0b\\\x9bL\xa3\x0cU\xa9\xec\xf3\x15\x9bH\x07\x05R\x1aj\xc4VfX\xf6TL{(L\xd1rv\x91rx\xcbz\x89^\xc55\xa1\x90Z\xa9_c655\xa1\xa9\x1b\x0c+\xc71\x14 #\xcc\xe5\x04\x11\xbc\x80\xe29D\xdb\xdb\x01\xc4\xa3\xe8\xb2\x96&$\"\x0e\x08\x13d1\x82*N\x14\x06\x7f\xa8_\xcf\x9dD\x939\xa3\\\x8c\x94\xd4\x11\x8f\xfa\x0e\x07\xa5\xdc\x0eP\xbf\x0e\xab;\xce\x80\xb2K\xe0\x8f_\x8f\xb9I\xe5\xacq\xf2\xe9F\x7f9\x1a{\x05\xbd\x7f\xc9\xd8\x8c\xa3<\xdeb\xf3\xedh\xcc\xd2W\xa3\n\x81]n\xc2\x80\x87\xd4F\x7fh\\!\xcd\xb8\x94\x0c\xda[\xa4\xd7\xb2k\xe1\xb6\xea\x9b\x1a\xdc\xfah-J\xb5\xc1h\xcb\xb0\x8c\xf7\x1f/\xc3`\xc7\xd2\xae\xd0\x8aRcP\x95\xbf?]\xef\xa2c\xb8\xd1c\xbd\x9d\xa4\xcbU\x9a`VJ\x0b\x04e\x94\xb6\xf3\"\xcd\x1c\xd6\x01Z\xa0b\xbb\x02\xde\xaa\xd5z\xb1\xeb\x08\xab\xa6\x8c%S\x96\xd9\xa5\xb9\x0c\x1c\xfe\x89\xbd\x8dV+6=I\x93\"\x8a\x13\xaa\xea\xa2\xdc\xbeK\xb6L\xe3\xbf\xb2\xc0\x8fDvr\x91>:F\x1e\xdcJ\xa2\xe5T\x0bfiZ\xbcN\xf8\xda8\x9d\xd9\xf4\x99\x0d\x810\x1c\xe7\x0f1\xf8\xa19\xd0\xdc\x1e\xe8\x02\xc7J7)\xa05\x84\xb5\xfdYd\xdd\x88\x80\xc5\xcb\xba=\xd5Z/\x9a6r\xf6\x02\x0d\xd9(\xc2\xd9\xe2\xf4\x05\xbf\xa8\xe3\x17Tk\xeft\xfe\x02d\xe58\xf3\xfe\x94bf\xd0=\xea7\xb2\xf1uTD\xfa'p\x04\xff$0\xb0\x81y\xbb\xe6\xcc\xdbcj\xbe\xd7$[\x17\xcb\x12\xda\xe5\x0cK\xac\xd6\xd6\xaa5\xca\x01\x11?1\x0b\x16\xb2\xc0\xead\"\x0b\xac>f\xb2\xe0\xc0,X\xe1\xd2\x99\x97\xe4S\xac\xbe2\xde\xcee#O\x9eXC\xbd\x11\xe2\xffc\xf3\xfa|)?y\xfa\xf8\x19\xcd\xe6^\xff\xbal._W+\x1d\xb4C\xe5k\x13\x81\x06\xa3l \x8eR\xa7\"Y=\x9a&\xb9\xad*\xd4\xaf\x18\xf2\x8aM\x12\x1a\xefL\xda\xe1L\xcc\x02?\xeb\x952\xb3\x8a\xe8\xbf\xae\x19\x9594\xe7n\x0d)\x90:\x04\xfd\xd1F:\xab\x19\x06%r\x98\x8b\xda\xdbQ\xfb\xdc?\xb1\xbb!xb\x1f{\xf4A\xa0?\x9224r\xec\xd4#\x07>-\xf5\xd7\"\xee\xc7\xa9Hl\xcf\xe9\x91a\xbf\xf67\xf4u\x0fdn\xf3U\x96\xaer\xf9\xf7$M\n\xf6\xb9h\x81#\xb4\xc2\xf2\xebe\x10\x12\xe1\xd8\xcbb\x7f\xd5+\x89\x9dK9\x8d\x98KC-\x95\x9c\xc2\x0d\x1fp\xc2&\x85\x16\xdb\xa4-\x80\xeb\x8dL\x8eo\x9a_\x7fE31\xe6S\xd1'\xd5\xa3PD?\xbe\x96\xd1\ns\xd0_\xa4\xfc\x04@\xdb\xe7v\xa9\xc1h\xb0}\x9d\xf1\xde\x9a\xba\xc7\xd4\x1f\xf7\x9a|\x0d\xfc\xa4\x8c\xf1D\x146d\xf6Ij7\xee\x0d\xd4d#J\xb2\x01\x15\xf9\xadP\x107t\x1f\x96rl@5\xeeC1Z\xa8\xc5M\xef}\x96\xde\xc4\x9c\x97\xef\xd0\x18 j\xa6Y+j\x82\xe0\xb16\xa3Qn\xf2t_:\xdf@\x97Zh\xd2W\xb1\x81`h$\x0ci\xb4\xf4j\x8c(]r\xc6)\xe7\x8c\x1b=\xa7by\xd9JS&\xd2\xba'\x1670\xc9(\xbd\x0c!\xc3\x7f\x19\x99\x88\xa6i6c\xbc\xacp\xb0\x9f\xc44\x85\xcdc\x830\xde,\xb1C\x9d0\xb8x\x1c\xf58(\x82\x9b|\xeb\xa4\xff>\x14C\xa4\xac\xc5\xda8\xb6\xf6\x93\xe2\x8a\x03'\x12Z~\x8c\xb2G\xa3^\x13=\xb5\xa9J\xb1)U\x11\x14e\xa2\x90\xfb\xe7x\xb1\xf8\xc0&,\xbeA\xa1%o 2&\x81id%\xf9\xa3M\xb8\xda\xbd\x9b\xd2\xd4\xafM\xa4\xa7#y\xdc\x944\xaa\xcb\x06\x0e\xd8e\x1d7\x14 \x8a\xa4\xd3\x96\xa6\xee\x8b8A\x18\xb9n\xdc\xf4\xa7@a#\x0e\xc1\xcb\xd2\xb4p\xdd\\\xa8\xa7\x9d\xa5\xdb\xd8\xec\xc1A\xfa\x1a\xc8\xde\xd7P\x97B\xc9\xedn\xc5c\x03\x8db\xa9\xaaY\x08\xde\xf1j\xe55\xcc}\xde\xabl/x\x7f\xbek\xe6q\x88\xb7\xa2\x81\xc5\xcc\xb4\x1aUTJ\xb3$Z\x12z\x8e\x16\x90{\xd3\xf8\xc6\x92\xe5\xd5\x93\x17w\x0b\xd6\x14\x14i\x15M\xa7\xe8B\xee\x0d\xd8\xb2\x01k'\xe9\"\xcd\x86\xe0\xfd\xff\xa2(r\xe4\xbd\xb3W0\x04\xef\xff\xf9\xdf\xff\xb7\xff\x03<\xf7\xf9\xea\xc5\x9e\x00\\\x08\xdeI\xe9\xa8.\xd7\x96/\x0c\xe6\xbf>\x84\x02\x8e\xc0\xe38\x0f%\xb5\xf0`\xc8\x17\xd1\x0b!g\x0c\x8a9+\xbd\xe3=+\xe4w}b\xb7\xad\xca(\xb5&\xdd\x18f\xb9B[>\xab\xd8o!oW\xdcx\x9c\x7f`\xd1\xa4h\x17.\x9a\x0dI\xf5\xa7\xf3\xd1\xa5\x9e\xf2\x08k\xa7:\xd0\xc2\xdf&N\xfe6i<\xad\x92{\xf0\xb7\xd0*\xd5\xd1'RB\x9eHI+\x9f\x0b\xdd\x89\xb9z6%\xea\xea\xa9\xae\x02:\x9cI\xea\xe9 \xe1&n\x1a\xdcI\xc2\xc5\x1bwz\xda\xd2\xbd\xa8Dl\x01\xa3\x06\x0d\xa8Y\xb5\xed\xde\x1dZM\xfdJ\x06\x95\x91\xb7\x83Yy;\x88\x96\xa9\xe2v0\x85\x17\xc0\x9eC\xba\xbd\x1d \xd7Y\xbb\x1dt1\xb0\xa0\xdf.\xe9h\x9b9 \xd7\xc9TP\xb6XOG\xc5\x87\xea\"\x92\xe36\x89G:d;VL=\xc27\xbb\xc0c\xc6\x8d\x1f\x8e\x99Q\xd4\xddPgW0\xb4\x94\xc6\xf6\x19\x9d\x86\x10\x9b@\x8ag\xe0\x97\xc6[U\xe2\xbf4\x90A+\x13v\x0b\x17w+v*\x12x\xbdcl\n\x11\x88\x0fB(R\x981\x0e\xfd\xa8:#z\xf0s\x94\xc3u|\xc3\x12\x880\xd5\x8d\xaf\x99\x04\xa5\xfcPY'BM>\xe5\xe7\x89q\xe1\x9aZA08\xd6 \xa3-3*\x84\\U\xce\x8b\xc5\xbc]\xe4(\xb0\x1b\xfe\xf3N\xb1\x9f>\xfa\x14\xe0\xcf[?\xc2\x1f\xb7\x82[\xf3\x99\x1f\xf4\x16\xe9\xb5\x0c\xeeR\x9d\x86\xb38\x99j\xc7\x1e\xe70$\xb3Q\x0e\xa0\xd3%\xa1\xdb|_Nx\x08\x89\xff\xe4\x89i\xc8W\xe9\x8c\xeb\x97\x03]\xba\xa4\xaf'\xdc\x03\x99G9^\xb3\x0bG\x89w\xe9\x94\xe5C\x18<D\x9f\x9a\xd1\xde@[\xb9\xc4\x7f\xda\xc5x\xca\xc4TE\x14\xd6\x8bEe9\xe5{{}O.\x0d`\xdcY\xe1\xaa'\x82\xb3\xc6\xb9\xa2Ipd\xbc*\xf8+\xce<\xac\xf3\xb9$3B\xc7\x08L \x86\xf0\x82*_\x10_k\x81\\\nd\xfdy\x03\x97\x0f\x01\xb8M\x0c\xca\x88\x99\xb2\xd2dA|0\x14W\x11\x85\x90Y\x93p\xe3x\xbcm\xcbk%\xb7\xc3\xfb\xb4\xf5b\xd12%\xc7\x12o\xa5\xc2R\x7f\x12%\x1fs\xf6\xea\xec-^\xfe\xf161\x1e\xc3I\x9a\x14\xc8\x8b\xc6 L\xd3 \x9e'=\xf5\x87\xa4\xdf\xc8\xba\xeau\x87\xe0\xc5I\xc2\xb2\x0b4r\xd6\x85\xef\x07\x81@\x0d\xc1\x95j!\xf1\x0f(\xa3T\x9fo\x80\xb0\xf9@.\xd9F\xe6f1\xb7\xba\xa9bA\x99\xa6\xfaL\x8f\x86Q\x04\x0e\x12\x7f\x12%\x9c\x02r\\\xe1d}\x11\xe59D9Deo\xce,b\xe2\x9cf\xea.a\xcc\x9b\xb8\x8a&\x9fr\x89\x0d\xe5{\xa1\xb93_G\xd95\xe7s\xac\xc6\xedsP\xb1p\x1a\x9f\xc3\x92\xffZ\xb3ukPw\xf5\xd8\x034\xdf|\xf9\x82\xbe\x92\xc6kA\x15\xb4)VS1^\xd4\xbf\x97o\x15Q\xb1\xe7\x18\xd6f\x93\xa4E<\xbb;\xe64\xad\x9dqS\\\x991T7cRX\xa3u\xd7M\xca\xbaQvMsl\xa5\x15A#\n2\xe5e\xba\xc5\x89\xb7\xfa!h\xf8\xee\xbe\xb7)\xd2\xb8\x99GM\x95Zq\xa1\xb2?\xc9\x8c\xb2Qz)\x15x\xa8\x0cu\xa5S\x05}\xdc\x87\xd0\x0f\xab\x81\x1f\xc2\x06\xf1\xa8\xf5\xa5\x9d\xcc\xd9\xe4\xd3*\x8d\x93M\x02d\x9b\xa09\xb2\xf0R\x0ekH\x0c\xcb\x18@\x96\x8ao:\x89\xdaf\xc7|\x95\xeb\xcb\x81v\x19\xf4`\x84\xfdE}\x03TE\xad\x9b c9\xeb\x04\xa4\x8d\x10\xa7\xad\xd7)\xab\\\xe9:v\x8d\x03\xa5\xfc\x19\xadD\xb1\xb5\x0b\xc5\x9a%q/\x9aN\xdf\xa7\xe9\"N\xae/R\x15z\xfc^\x87\x92\x9b\xd3[\xa4\xd7\x17\xe9\xea\x0d\xbba\x8b\x0f(\x16\xe6C\xd8zhNo\x9f\xb4\x92H\x9b\x0c\xd78\xdcm\n$\xec\xd5\x92t\xca\xdeY:\xba\xf2:\xf2\xfb\xef\xf9\xb9\xbeZK\xb6?\xe9\x15\xe9\x9b\xf4\x96e'Q\xce|a4\xe4\xe1\x8e\xbbJ?+\xad\xd6\x97/\xe0e\xd14N\xe5\x0b\x9d\x19\xb2G\xde`\xc6\xdc\x1b\xdff\xd1j\xc52\xbc\xf3\x15.m\x17Y4\xf9\xc42\x03\xa8\xa0\x891\xf5\xb6\xc6\xd7\xac\x90\xdf\xfc\x98\xa5\xcbw\x18{\xaby_\xca\xeec?\x13Qm\xc4\x91\xae\xbe\xf6\x99\xa9\x89\xab\x83\xb6\xe0\x9d\xb5u\x81\xfcB\xdc!H\x02\x0e\x81w\xcb\xbbWC\xe1\xe7#\xf9\x15\xc8eM\x05\x03-VFH\x812\xd2\xa9\xfb;\x0e:icu\xcd\n\xcdH\xec\x15\x13\x8e\xddi\xe6\xd7<a\xab=\x8d\xaa3g\xc3k\xceWb\xd4\xc0Q\xe2\xd0I\x14f\xf4\x88$p\xa6\xcc\x8f\xf8\xf0\x1aJsQ\xea;\xed\xc5\x92&\xcd\x83\xee\xea\x11\xf5\xaa_MZ\xe46\xf7\x11\xf5\\\xb3b\x03u\x9a\x92\xbd\xf9t\xab\xcb\xb0\x86\x8b\x08w\xc7y\xad\xe3V;\x89r\xc1\xb8x\xcf\xe1\xa9\xdf\xc5m~\x15\x12\xb4\xc4\xf7\xd1\x9f\xa6-O\xf2\xae\x00\xd2z\xc5\xdd\xe65+\xfe\xb8\xa1*S\xc2\x9e\xcel\x00\xad\xc06\xbb\xdb\x00\xe2\xf7\xea\xb1HW\x08#\xbc\xf4\xe8<\xc9\xad\x0d\x06\x08\xedkC\x9e\xfd\xfa\xf3U\xe8\x03E\xf4\x10N\x0b6F\xa4\x0d/\xd4\x85\x97\x07.\xc6\xeb\xd9 \x86\xa1\x98\xb6\xad\n\x12f\xe6L\xf2\x02\x1ai\x8e-\x0f\xff\xb2\x81\"\xa8\xb6/\x9e\x078\xf5\xad>\xddX\x12\xc2:\x04\xe1V\xa4\x90\xd5w\x10T4\xdb\x16\xb1\x93\x1c'\x838\x94\xd7x\n$x\np\xc4Jz\xf2,\x80\xa1\x8a_\x87\xb1\x89\x9d:\xee\x05\xca\x11\x92\xfd\xec)\xa4\xc6hl[\xfd\xc6\x03\xd0\x81\x8e\x8dwR4,\x0b\xa1U\xd1\x1b4\xb8@\xd26[g\xd0\x84\x1b\xec7\xf1\\\xf5Q\xcbKC\x93\xceO\xd1b\x8cz[\xc4K\xa2\xc4SE;\x8bt\x12-<\xbb\x06[F\xf1\xc2~\xbdL\x93bn\xbfN\xd6\xcb+F\x8ck\x15\xe5\xf9m\x9aM\xed\x92\x8c\xef\x07\xfbu\xce\xa2lBtP0b0\x9c\xef'\xde\x923^gD\x03\xb7\x8c}\xaak`\xdb\x94tN.W\\N*v\xb6\xfe\xab\xce\xb5\x92\xac\xae\xce\xe5\x16p\x04[[\xd9Hp\xce\x98b\x8e\xcf4\xcaX$+T\xe3}p\xfc\x12\xa9\x03\xcf'\\\x8c|\xc3f\xc5\xd0\x0c\xe1U\xabq\x91\xae\xac\n\x19\x9be,\x9f\x8b\n\xb8m\xf3\xb6}\x98\xf5\xac~Q:\xf8\x1c\x9aE\x17)\xfaK\xf7\xeejm\xb4\xee\xc3\xec\xdb\xe1\xe4R\x83\xfa\x83\xc7\xa6u\xbatM\xb7B\xc1E]\xd4W\x9c\x82\xb7\x86\xd6f\xbdY\x9c\xe5\x05\xaa\xf4\xddZ\x1b\x94\x9f\x12\x112\x06\xd3ic}\xferO\x8aS\x1cC/\xeeV\xd5\x89s\x93\xc6S_\xbc\xc7\xa5\x83\xc3v\x0f\x15@`k\xeaX\x8bU\xd2V\xc5T\xfbvW\xf9r\xae\xba\x15\x82{\"a]918\xe2\xc4]\x04\xd3AMy}j\x15\xde\x04F0\xa6o\xa0\xdc\xdd(\x07}\x1f\xcbz\xb3t\xb2\xce\xcds\x86v^~\xf0\xdd\x1f%\xf1\x12c\xdb\xbf.d\x90\xfb\x93t\x9d\x104\xf6*\xcd\xa6,{\xbd\x8c\xae\xd9\xd9\xba@\x06\xbf\xa1\xca\xf9\"\x9e\x10$Y\xab\xf1s<\xa5\x8e\x95\xab\xf4\xf3\x8f\x0b\xf6\xd9Y\xf0\xfb,]\xaf\xc8\xd2\xb3l\x1a'\xd1\xc2Qa\x92.\xd6K\xd7\xdcDan\x17\xcc\xc8\xa1\xcc\xc48n\xe9\x92\xf7i\x1e\x17\xf1\x0d1{^z>\xcf\xe2\xe4\x13]\xf6\x8e]G\xee/1\\\xb1]t\x9d\xc5\xd3\x0f\xd4Xd\xc1iB\x1c\xc5\xb2\xec|\x15%\xee\xc2\"\xca\x08X\xf1\xd2\x13\x84WS\x99\xb3WQ\xec\xeeX\x96\xd3}\xcf\xd2\xa4\xf8\x99\xc5\xd7s\xa2l\x11'\xecd\x11-\x89\xb5\xe7E?9>KW\xd1$.\xee\x88\x02\x1a\xdci\xb6\x9aG\x14\xaa\x14\xd1\xd5y\xfcWb\xedn\xe3izK|\xf0\xd7\xd7\xc9\x94\xc2\xae\xbf\xa6\xe9\x92\x98z\xbcX\x9c\xb9\xc6:[\xa4\xe9\xd4Y\xca\xb9\xd9\x86\xc2,\xfd\xc4^E\xf9<\xca\xb2\xa8\xb1B:\x9b\x91\xdb^\xd4x\x1b\x17,[\xc4\xcb\xd8Y\xa3e\x0c%A(\xcb\xbe\xda\x17p#\xefgv\xf5).\xbc\x10\xbce\xce\xff}\x9b\xfe\x95\xffw\xe6i\x9a\x1e\xa9\x89\xf9\xc4\xeer?\xeb\xe2\xee\x9d\xdauh\xa7\xe3Q\xeba\x0e\x9a:\x11\x13WL\xe6Qv\\\xf8\xfd\xa0W\xa4\x1f\xb90+5\x99\xbc,__ \xc3\x0b\x7f@\xd9\xa4\xa3!\xe8%gf\xf4\xd0\x97X\xa6\xa98\x8d{\xca\xd8\xa2\xf1q\xfe1\x89\x8b\x05\xcb\xf3w\x92i7\xdcs\xf3y\x9a\x15\xf3(\x99*\xad\xd5\xe9\xe7U\x94\xe4\"'\xa3=\xc5\xabh\xf2\xe9:K\xd7|\x8f\xd3\x00\xa8j\x1c\x17E4\x99/\x19Ev\xed\xda'\xb4\xaccW\xc4#\xa4KEA\x8d\xd3\xe4\x7fnR\xf9O]*\x7f`+\x16\x15C*\x8d)\xa1:\xb1;i\x87\xdd\xfd\xc7\xdeiD\x92\xc29F\x81\xa5\x8eC\xba^\xe9\\\x98\xc76W*W\xb6\xfb\xd0~H\x8b\x82\x93\xc2\xa6\x01\x8a:\x9d\x86)\xaav\x1a\xac\xa8z\x8f!\x0b\xf1\xa9i\xc0\xbcF\xa7\xe1\xf2\x8a\x9d\x06\xcb+\xdec\xa8\x1f\xc4y\xd84V\xac\xd2i\xb0X\xb3\xd3h\xb1\xe6=\x86\x8bbg\xd3`/\xd2U\xa7\xa1^\xa4\xabN\x03\xbdHW\x1b\x0d\x93\xf3&\xae\x11\xf2\xb2\x96Ny\x95?FY\x1c5\x11\xca&\xfeG\xafC3\"\xeaib\x87\xd4\xc3[\xf91Z\xc6\x8b\xbb\xae\xf3O\xd7\x05o\xd8\x05\x02Y\xdc\xb2D\xb2V\x0b\xacd\xad\x86\xe5\xf9\x8e\xfe\xe5P\x15\xc4\xf8\xf6\x9b\x84\xaa\xc4\x7fj\x06\xe3K\x85a\xd0`\x1f\xe3\x02\xee\x89\xf0\x80O\xfb\x96\x83\xbc4 \xc2rv\x0b\x1f\xd8\xf5\xe9\xe7\x95\xef\xfd\xe7\xc8\x83m\xc8z\xc7\x17\x17\x1f^\xff\xf0\xf1\xe2t\xfc\xee\xf8\xed\xe9\xf8\xfc\xe2\xf8\xc3\xc5\xf8\xe4\xa7\xe3\x0f\xb0\x0d\xde%]\xa9,\xfe\xdd\xbfXi\xcd\"\"\x1e\xfbZ\x06\x80(_\x96w\xa5\xb9\xf3\xaetkkmG`\xc7\x00\x81\x11\xf1\x9e\xcb\xfd2\xfb\x1a\x1a\xb4\xf9\xeb\x11\xbb\xc4\xb0\xaf\xa8\xdd\x85!\xf8\x91\xf6\xa6\x16H\x9bNs\xdc\xc5\x9e\x10\xf3\x84\xcc\xa3\xfc\x874]\xb0(\x11:\x80\xef\xbf\x87\xad\xaa\xe8\xddz\xc9\xb2xR\x16\xc5\xf9\xbb\xe8\x1dg\xfeT\x05%\xce\x99\x15\x0bx\x01\x83\xb2\xd6\xd9\x0d\xcb\x16i4eS\xab\xaf\x01\xa9\xc0\x03\x89<\x13[\x1f\x87V\xcbo\xa3\xec\xd3z\xf5c\x9a\xbd~\xd5\xaaJ\x13\xd3\xcez\xaf_\x8d\xeb\x88\xc0q\xe0\x90cHj\x85\xb4\xae#@\xce\x8a\xe3\xa2\xc8\xe2\xabu\xc1\xac>\x1d\x8c.f\x9b(\xbf\xf2\x89\xee\x89\xe0\xefM3\xfd\x90\xa6m\xd7\x95\xe5T?\x9c\x9d]\xd8\x93\xfd\xb7C\xcf\xfb\xb7\x0d\xe6i\xf4HB\xd7\x9a&\xd1uXK\xdcK\xf4k\xccT\xed\x8c\x0ePV\xea?\xbc\xfc\xe6\x1f\xc5,'\xf6\xd7Q\xad\xc2\x08U\xc8\xb4Q\x15j ]\x82\x0bF\x8b\x14.\x1f\xa5~\xd0\xf3huc\xe9\x07\xd6\x8b\x14tl\xb3\x0e\xf5\x94\xf6\xff\xe6n\xfc\xf2E\xbcl\xd8@\xfdRE\x1e\xab5\x86!\xfe\xad\x90\xbb\x93\xbe\xb2\xc4\x9d8?Y\xe7E\xba\xac\x16\x15\x01X\x91\x0d\xbc\xc1\x1a\xa2\xf8V\xf5 \x01\xba\xc1*\x1b\xbdtXl9\xc4\\RL\x15{\xa7\xc00#\xc6`<\xaf\x05\xd1\x11\x80ndk\x880\x92\xb6\xe0[a\xe1[\xd1\x8co\xa4\x1f!h8\x94\xf60cW\x9c&T\xbeD\xf5\xf0\xa6\xe2@hw]\x06~l\x913GgP\"x\x8a\xee\xbd\xba\x02\\\x98}\x89\xabb\x13pb\xb9\xe8\xeeT\x9b|\x02y\xf11/\xed>\xd0$Q\x81\xe8\x8eo\x8cK:@\xabzZ\x06\x0e\x9a\xbdQZ\xdfq4\x93\xa4?k\xfb\xa3|\x15M\x1c{\xb5\xfa\xea\xc8\xa0~\xef\xce\xfd\xb5\xc8\xa2\x877\xbc\xe8.O\xed\xe8\xb4\xd3\x8eN\xac\xf6}l:P\xa9\x8c\x8c\xf7\xd8\xa5s\xc4\x8e+|\x9b0\x08Hc\xd0}\x82\x14\x14\x06^Lz\xdaV\xd2(\x86\xdcA\x1d\xf7\xa0\x8b\x0886a.\xf3\x00\xf8\x8a& P\x89\x84\x15\xfaXmH\x15%\xa4\x1a\xc7V\xc7\xf4Mh\x145\x8c\xee==\xf0\xc9\xb71%r\x9e|\xa5\x85\x7fgJ\x94\x06\x9c\xad\nU\xf0\xe3\x06r\x84\x1d\xdb\x04\xc2\xbd\xd9\xab\xa3U' \xee\xddj\x1f\xabG\xc0F1\xb2\xd3\x03\x0c\xfb\x8b\x7f{\x0e\x9fc1J{a\x8d\x93\x9d8d\xc5\x97\xf4>\x12\x17\xe2m\xc8R\xfer\xc8f\"9\xe77\xcaf\x03*lq\xe2\xef\x0e\x1c\x11\xc6\xcdp\xeb2\xcf\x97\xd9\xca\xba\x92\xdc\xb6\x06\xa4\x91lnq\xb1x\xd7\x8bV\xccY\x9a\xa25\xcd\xebW\x95\x0dv\xcd\xdci\xc5\x92i\x9c\\\x7fD\xa3\"\n]\xda\xbe\xc1\xe5\xb7\xb1\xc6\xf0.\x10w\xed\xf2\xcaU\x06C \xf1\x04\xc3\x9aW\xf6B\x94\xfdL\xc5\xb1|\xff=(\x03>\x89\x98>\xeb-\xd7\x8b\"^-\xa8\xb4P\x15\x1e8\xc5=\x82X\xde\x94\xd9\xd8\"\xcc\x81B\x1b(\xf5\xd2UaGEu\xde\xba\xa3\xbbA&\xc4d\xdd\xe5 \xa9\xbb\x1cd#AhG\xe9\xe5\xff\xcb\xde\xbbv\xc7\x8d\x1b\x0d\xc2\xdf\xf3+J\xcc\xacCF4\xad\x8b\xc7c\xb7G\xd1\xeb\xb1\xe5\x8d\xb3\xe3\xcbZ\x9e\xe4\xeci+Z\xaa\x1b\xdd\xcd\x11\x9bdH\xb6de\xac\xe7\xb7\xbf\x07\x85\x0bA\x12 \xc0\xb6<\x93d\x1f|\xb0\xd5$\x88K\xa1P\xa8*\xd4\xe5\xac\x93\xc0\xa4\xd5\x92\xd2B\xdcn\xc1L\x89X\xd0\xcd\x0e\xb1\x8b\xa7\xf9\x197\xa4\xd2\x93\x02\xacPaLU2\xc7[\xf1\x0d\x9e\"\xed\xe7Gj\x82xQ:\x1a\x13\x137\"A\xc3\xa6\xde\x02O{r\xda\x01R\x907\xb3@&\xa0l\xdb!t\x87\xba\xa3#\xac\xb1\xe2k\xe2\xc7\xd3\xbd\xee\x17F\xcc\x12\x7f\xe9\x05\xef%\xa9\xff\x9cW5\x06Mq8\x9f\x84<\xc1b\x19\x99\xecA\xf3\x8c\xd9\x01Nz\xd6\x8c\xe2\x8d~\xb3q_xv\xb8\xf4\x97k\xf0\xc8]\xe7\x9b\xac\xfe\x1b\xeb\xcba\"\xe2\xa0U\xf6\xb6\x8e\xdd\xed\x8c\xbf\x07>QZ$\xc8\x9c1*\xc9\x92:\x89Sn\xb9*\x08\x07et2\x984!?\xf1\xbdI\x8f\xc9\x12\x8eU\xecs\x83\xaeP\xc2\x7fX\xcc\x17EXw\x8d%\x8e\xa20@\xf2\x10\xceoy\xe7\xec\"\xcf|~\xeb\x0e\x04\xdf\x85\xba\x9b\xd8\x0eP\xcd\xb9\xe3*.|\x1ec\xcb\x18\xd5\xe0\x96\x85\xaa5\xd9\xf9_\xc7\xd5kN\xbc'\x92\xa0\xd7\x0dA\xefch\xa8\xa6\x8d\xa8\xf9\x8eW\x13r\x1eu\x16\x99\xbe\xdc\xa0\xc9\xcfF\xb7\x8d\xc3\xee^e\xc1\xa3\xf1\xd3\xe7\xcc!\xc8\xb6\xc6\x06/\x0f\x15\x13\x87\xfa,\xf2\xaaf\xa0\xd7\xec-\xd3\xc6bVmZD\xb2n\xb1\xd6\xc8\x0cY\xe7\xa1e\"\xd6\xfe\\Y4{_Je8\xd2-\xb1\xbe\xdf\xd2N8\xc4\xde.\x99\x7f\xb6\x8da \xd9q\xaf\x19A\x08%Ztex\xb6i*42\xd3N\x0f\xbb\x8e\x07\x9amW\xa5]\x0c\xd5\x15?D>\x13\xaf\x17)G\xfe\xfa\xaaLm7\xb0m\xae\xe7u\x19O\xfbx\xbf\x1b\x91\x80g\xcdy\xd45q\xdc\xf0\xe7\xdd\xfb\x8c\x8a;:\xd3\x0e\x809<3\xdewx\x13 \x19\x93N<==\xb4\x96m\xd6\xab\xf7\x11\xcd\xfb<\x1c\x97\x91\x8fxz\xa2}\x91/\x8f\xee\x88\x98\xc7\x00\xf1\xd3\x0e^J\xb9\xccc\xd9\x92Zi\x8e\x86\xf4b\x86\xb3\x88)\xb1h\x03z\xb9S\xeb:\x84A\xfc4\xa1:z!=D\x11|\x8bI%\xbb\x17\xc2\x0cv]\xbc@Ax\xf9\x0eU\x80\x16\x0d\xa3\xbcu\xbc\xd6\xe6nP\x0bg\xab\x85\xf2\x18\x9e\xaf\xc8\xec\x12\x03K\xf1\xc05,\xf55\xe4\x0b\xf8\xbf\xe8\xa3\x05\xbb\xe0\xfd\xdfH/\x9a\x82Q\xb1\x03\x8a!\xb5A\xac\xf5\xf3\xe8<\xbf\xceHI \x87\xef\xed\x1f\xeeyMX\x89\x04\xd5\xc9\x13 \xf2\x10f6\xae\x98\x16MV,\xb6\xec\xc8\xb7\x1c\xc1\x86#\xdc\xab\xac&e\x16\xa72|\x8b\x8f\xc1%]<`\xc4\xac\x1a\x8cQ3p\xdd\xbb'NPf\xf5\xda\n\x95\xa5\xffF\x8dfK9\xc3&\xa4\x8c\xcb'%\x0b%(?\xea\x03\xc9g\x10\x088\x082r\x0d\x15\x9b\xae/~\xb3\x1a~\x1e\x04\x11\xe7\xb2)\xa3\x83\x87}\xd6zr\x04\x19C4\xbcr\xcb\xe7]r\xc16\xae)7\x99\xc7\x9c\x12\xba9\x89\xdb\x0b\xc3\x9d+s\x0c\x1c\xe1#\xb5G\xec\xd8\xf7\xc2\x86\x02\xb4q\\\xde^\x9c#\x00\xd1p\x8fy\x8f\xcbGk\x96\xc1\x97\xb9)w\xf3+\xd1\x92\xfb\x95\xea\xbf\x98t\x05\x86s\x16\xc9\xa1N0g\x8a\x1a\xe4l\x02\xcd\xadC7\x81,{\xf3uN\x92\xef\xbay\xd6\x94P\x17}\xd4\xfd\xf3\xdb\xd3\x0f=\xc7\x00Z\x9e\xbf}\xfd\xee\xed\xe9\xab\x0f'\x13\xd0\x88\x02'\xaf\xdf}\xf8?\x138\xe8\xbfY\x92\xfa\xc3M\xe1\xc4\xb8\xb7/~;'\x01\xdd\xe8\x11v\x83\xea\xea\xa4\xfak\x9c&s\x11\x15\n\xd1\xd6\xb0 \xf8\xbeN\"9\x05\x98@\x12\xd1\x99\x8a\xa4g\xa5\xef\x1d<\xd2'o\xec\x88\xd4\x067\xf1/\xb5=`\"x\x1f, f\xc68Y\x17\xf5\x8dD\xa4\x97\xf1\xac\xce\xcb\x1b'\x88R\x92o\x9bR\x1f;\xfa\x8d\xb1]\xe7\xd4\xa5\x90\xa7\xed\xb0l`\x90Dl\xa2\x94k8\x82<\xbcS\xd8\x9a7\x07\xdf\x05,Ve\x0f\nm\xf5\xf3\x95\xd6K\xdcpL\xd8\x00\xc5\x81\x94S\x04\xa7Tk\x9fR-\x86\xa9\xdc~\xc4v\xd5\xaf%\x83\x8e\xddb\x82ZK\xfbI\xf5\x01\xdd;\xc6M\xa8\x15\xc8&\x19l_\xac\xb7\xce\xd2\x88\xbd\xfc\x9f$#e2\x93cx\x9e\xc6\x95\xd5! \xf8\xd2j\xb0\xbeO\x9bX?\xad\x89:w\x92\xb8l-\xf9\xeb\xeby\x19\x9aQ\xfb\xe1#\xc6\xe1\xef\xf7rj\x08YB\x97\x81S\xec \xff\xa0\x9fiD\xd1\x94{\x91\xa7\x11,\xbc\x89\xe7.\x08H\x9c\xa1\xfc\x8b\x86\x7fW\xef\xceItIn\xe0\x18\xe2\x88T\xb3\xb8 >>\x08P\xc5T\xe7,G\xaa\x7f\xf8H57\x12\x7f\x8d\x89\xd9\xd51=\xa2\xc7\xc6\x9e\x92+\x9e\xa7\xa9\na\x16\xea\x13q\xd2E)BLr\xc2gQ\x1b\x04 %\xd2\x1e\xe5\x00\xd1\xb7\xcb\xbb`\x92\xaaxD\xf9\xaa\x9a\x13\xa2&\x94\x9a\x88\x94\xd10O\xbc\xae\xc26\x89'\x0dTy\x17u\xf4\xcd7|d\x18\xf4Or\xf83\x7f\x81 \xf1<y\xa9\xbb\x81]H\xe9\x84\xd1\xb0+\x0bB0\xdcB\xb0\x10<\xda]r\xc5\x94\xccM\x93T\xec\xdf\x05\x8d\xd2\x84B\xa5\x1b\xcbM\xaf~\x96q\x84\xd6Lk\xbd\x86\xefe\xf8\x9f\xa7\xb0\xde\xdd\x0d`E\xc5'\xe2\x17\x18\x91}}\x16\xc2\x15\xce\xa5\x08a\x1d\xf0\xd5\xd3\xa8R\xccW\xf7\xb4\xb7%\xba\x1b\x9b,\x08\xe8\xf0\x976\x8d\xe4M\x88\xa1\xe7\x97<.\x82\xc5\x18a\xc9#2\x91\xac.\x13b\x89\x85*\x81r\xce\x80\xb2\xe3\xdf\xc0\x11\\D\x19\xe5\x8e\x83\x00\x93h?m\x01\xe6\x86)\xf3\x14\xd8\x9c\xef\xee\x9a\xa1#\n\x85\x92}$\xc6\x01\x0c\x8b\xa9\xc0\x01u\xdd\x8coXL\x05\x8c`\xcc\x12\xd6\xca\x99]O\xf7\xf9\x92Krq=\xdd;\x0b(\xe2\x89\xb9\xee\x89\x99\x0e\x83\xd5`\x8e\xa0U<\x1c\xc1\xdc\x86\x00'\xb8\x1d\x86U\xcfT$\xe1\x04m\x08CJ\xdfCYG&\x8af\xde2gl$\x9f(;\xcc_\\'\xf5\n.\xc9M\x05\xbfPI]\xf5\xaa\xa9\x83\xe8\xe7<\xc9|\xda\x0e\x05\x8fw\xeb\xc1\x04>\x85p\xa2\x07\x8b\xc6\x0e\xa3\xf7\x84\x13\x94U\xeb\x05\x86\xda\xf0\xbc\xae\xb9\xc5\x97\xfaA\xb2\xd0\xa9h\xcb\xb2 \xa1\xc2tn3v(\xeeuo\x7f\x17\xec\xf6\xf7Q'\xe0%S\x7f\xe9N\xad\xc2\xec4\xfe\x92\xd7Q\x04lq\n\xf5\x177k\x02\xe4\x98\xf2\xa9\xf5?\xa2G\xbb\xb4!\xf6\x98\x07\x12\x06\x89\x0c\xa2\x92\x14i<#\xfe\x83\xe9\xc7\x8f\x7f\xff&\xfa\xe3\xee\xb1\x1fL?\x9e\xfdr\xfb\xf9\xec\xc12\x04\xef\xe3\xc7o\xeeyJ\xb5vW\x9f\xa5oT\x10\xfd\xf1\xd8?>\xfa\xf8\xf1\xa3\x1f|\xc6m\x1b\xed\xf2\x07g\x01\xb6\xf4\xcd~\xf4\xc7c\x86\x18\xdft\x03\xc2\xeb\xbd`\x85~\x8d\x8fV\xa7n\x96\x06|hF\xdc\x0d\x10?\x184X\xd8,\xef\xb7\xbf\xf9]\xff\xaf\x8e\xb2\xae\xe1*\xd8\x11\xb3(\xf3\xb5Qm\xf2:\xc6T\xde\x85\xff:.Z\x06|\xaf\xe3\xc2AQ\xd3\xaa\x85\xdbL\xb6\xd6y\x1e\x18\xdb8%5\xfb\xe8\x94\xd4\xad!\x9c\x92\xdaa\x08\xadZ\xca\x10\xfa\xcf{q\xa4\xaex\x92r*#\xbc\x8e\x8b>b\xae\xf8\xcbS\xd2am\x9c\x12\x9a\xcd\xa3\x8a\xd4\xecm{\x0d\xc3v\x0e\xea\xa1\xe5\x9fGK\xd2\xd7@\xb3D\xb8\xc3\x0d\xcc\xb9i\xa0\xe6\xe3\xd8\x16T\x8ew\xde\xe0\x8f?g4\xb4g\xa1\x85l\xf2\xf0@VQ<\x9fkF1\xecx\x0e<\x07\x83a\n\xd6\x98\x94\xfd)\xac\xf4Sh6\x94\x8e)\xba\xe2\x99\xe6\xbb\xee\x07\xc0\xb3\xf2\xe9\x9e/\xad\x13\x03Eg\x1a\xe9C\x1ai\xda\xbd\x19\xd3.&~~\x95\xd5>\xe1\x1e\x9b\xfe>ej\xf74\x8a\x8a-P[\\\xdf-\xb5T\xef\x8ae\xc8\xac\xc7c\xbd8s\xf4\xed\n\xab\x8bi}6~?\x0c7\xcd#.\xe9\x9av\xdd-*\xafq\x15D\xeb\xb8\xf0o\xb6\xd8.\xc3\xe3\\\xb3l\xf8\xddD\xf9.\xbb\xc9 \x00k\x0d\x00\\\xf7\x9a\n\x80\xb5\x1e\x00\xbf\xeb\xffE\x87E\x05\x85\xe9\x99\x8e/97\xf3%yo\x1eF\xf3\xa8+\x99\xc2y\xb6J\xd2\xf9\xab\x17:\x99\x0c\xc3Oe\xd2\xab\xfa|\x8c\xb5\xd7\xb5E\xc8\xf6>f\xd8G\xc6B\xd13\xcd\xffO\xd9e\x96_g\xc8s\xf8h\xc2\x0f~\\\x03c\x80\x16I\xca\xa2\xf2H\xd6\xe6\xef\xd1\x1f\xa7\x1f?~|p\xf6\x80Y\x1c\xef\x827au\xd3$#\xccM\x9a>\x0c<\x14<\xb19\xa69\x9b\xc3\xc5\x0d6\x9b\xc9\xf7\xaa\xf3\x87nB'}\xb8k\xf4\x05\xde\xef\xc9\xba\xa8o\xb0\xc1q\xf7\x1b\xde\xefk\xf2\xa96}(\xd4\xd8\xfc\x8f \xff#\x9a'U\x91\xc6hY\xca\xdc\x98\xf0i\xc6\x7fJ\x80\x0e\xce\xec\x93\x01\xa3B\xc4\x90Sz\xde\xbeh\xba\xd1Z\x97\x94\xa2b\xa3\x91\xefW\xcaE\xa5\xb7\xd7\x19)_\xbd\xe8a\xab\xd4\x8b\xa2\xe5\x8c\xae\xef<\x08B\xb8\xc6\xfc\x91\x80\xb1\xc8\xcf\xab|S\xce\xda\x1cE{'\x9d\xf6\xb4\xb6yvJXH\x9d\x92dcL\xab\xf4\xd6\x92\x14\xd03\xdf\xdb\x7f\x88\xd1\x923\xb9\xa1\xe8\xee\xeaW\x97\x92z\xc9$\xf5\xb2\xa5\xbe(\x87-\nY\x8e\xb9\xd2\x90Z\x1f\xb8\x0e/\xf7\x13\x93m\xa1\x1ck+:\x7f\xdc\x8cY\xaf\x8c\x8b#\xc2\x83\xf9(\xcch\xeb!6\xbaO\x1b\x8d\xa3\xa4z\x9do2\xba\xc9Xo\xdf\xed\xb7;+\xe2\x92d57\x90R~\x1ea\x8cr\xe5\x01^\x8e\xca\xd6\x0f<&\xec\xc9\xf7.\x176\x1d\xd5h\xf6\x03Y\xe4%y\xdd\xbaAu3\xe7/}c\xb8H\x0e\x87 h2\xaf\x03FSc\x03\x9e@\xa6\xaf\xc0\xec\x9e\xcc\xf6oby&05\xac\xbd\x84\xb9\xd9V\x8f\xc55\xe4\xc1s\xc6Z#\n\xc8\xfd\xc4\x1b\xd1\x83n\x9b\xddC1JA\x194\xfe\x91\x98\xd5\x8bb\xd5\x1b\x96y)\x87N|\xfd`\xea\xf6V\xae\x95a1\x97Va\xf1\xa6b\xf0\xc6r\x95\x92g\x030\xdbf\x8c\xa8\xc7m\x01\xac\x8e\x94\xb5\xdd\xdd\xb5\x8c&[\xdf)\xc8X\xa4\xc7\x16\xa4\xf6\xf5\x90\xaa|\xa2K\xc7x!\x82\xf7\x0f\x8d\xbb\xd8\x94K\xc2\x87N\xe6r\xf0\x95\xc5\xd5\x14\xc3j\x9eF\xe7EI\xaeHV\xbf\xdb\x94\xcb$3*j[\xc9\x94\xf6\x9e\x02\x81\xef\xe1B\xd2fb\xa6\xcd\xb4\x9c\xfb\x17Sr\xe6\xaa8\x03\x9c\xf8@\xd0\xfa\xe1[\xdaf\xb7\x7f\xc9\xe2 \x85\xcaN\x17\xa9\x86\xfa^\x92\xfa9\x8f\xecW\xc7\xb3\xcbg\xf39\xc9\xe6\x9b\xb5\xebHtVO\x836L\x82~\x9c\x0c\x86\xaf.\x99\xe5$Z\n\xe9\xcf\xbe\x1av\x8f\x18\xeb@\x1a\xae\x81s\x11\xd2*\xcav\x9e\x80\xa2\xe4Z\x88\x08\x87\x06\x8aL\xc1N\x9b\xcf\xa3\xf39\xb9\xd8,_\xbd0\xae\x00\x8e\x0d\x99\x9d\x16L\x7f\xb8y\xf5B\xc4\x9c\x17EcB\xdb\xfd\xc4\xb6\x14\x12\xcd\xf9z\x00y\x1a\xb0!|B\x8e\x9f\x08\xce\xeb\x1d\xdf\xbcC\xc8\xd3\x15i{\xb8\"\x8f.7\xfc\x18\xc4T*\x124\x12\x0b\xa6\xf5\xb4t\xaf0\x8f\xae#\xe8\xf0\xb1\x83\x839q\xf3)n\x1at\x1d\x84\x03\x18\xc4\x19\xe9\xd4=g\xb9]\xbbw\x87\x01\x12\x0e\xb6\xefpT\xecO\x89\xf2n\xa3{'\x19$\xb7\xe19@G\x1e<N\x038Ez0\xa6{\xfd\xa6G\x91Z\xb3:\xc6\xc1\xb6\\&\x04]r\x1b\xb3\x8b\xc9\xc7\xd8\xf5\xd4\x88\x9e5O\xdd\xa5\x11[k\x11&\xda\x11 \x7fR9P\xb7\x81;\xac\xb4\xc2\xfb\xf4\xf2\xac\xf4\xc7\xf0>\xcfk$Gi\xff\x15Y&UMJ\xc2\xe8U\xdc\xe5@\xaa\xd5\x9b<;\xad\xe3l\x1e\x97\xf3\xbf\xc5e\x96dK$\xbe\x0e\\\xb0\xf1FB\xa4>,I<c\xa4\xdcv\x10\x9aD\x00\x10\xaa\xca\xe1s \xb8$.\x04h\xe3\xd9\x04n\xc9'\x99\xa1\x06\xe3\xe1\xccUA&]\xcc\xe1X'\xd7\xc3\x90\xfc#\x8aP\x01M\xf8\xd2\x8b\xdfN\x1f7:!\xf1\xb9\xa2%\xd2\xe0\xafZn\x83\xa7\x90[\xef\xaf\x85\x88\xde\xdam\xf9\x00\xd7\"J\xdc;q]\xbe\xdat\xf5).\x1fUp\x841\x01zK\xb0q[\x02\xe0\xd1\xe4Y\xeezA\xb1\xf4\xd8#\x8a\x13v\x80\xc4\x10\x8bs\x16\xb4\x10!\x85cH\xc7!\x02t\x90\x815\xe1\x8e\x0c\x00\xcc\x847\x97&\\\xda\x1a\xda7\x86\x88\xc0j\xe9S\x04_\x131aP>(\xf2\xc2N\xaat\xd8\xecH\xa2N2\x94;\xb5/\xc6\x86\xda?\xc5\xa7\xdb\x1b\x010G\x97\xeeu\xbf\xde\x9e\x969\x1b\xba\xe9{\xa09gH\x14\xcf\xe7'T\x80\xfc\x91{+2'\xa8\xeeSn\x1e\xb6\xb3\xaf\xb5\xadn\x1a]\xe7Wc\xd2\x8a\x08\xff{C_c1\x90\xc5\x9b\x881\xa4'6\xc9'\xd3<\xf0=\x8a\x00\xbb\x0c4w<\x959\xd1w\xb3\xcd,L~\xb5\xfd\xed?\x8b\x8bzS:\x06\xee\x80\xedW~\xef\xae\xc15\xb0\xf2\x9a\x8bKQ\x06`f\x1f]\xa9\xff\xd8\x05\xcc%\xe7\xa0^\x88$\xba\xeaL\x8d\xe6\xdf\xad\x84kwA\x0d\x1e\x1f\xe8\xc2\xf8\xd1\xe7\xfaP\x11\x87\x8f\xba\x99\x00\xb8[\xddw\x07A\xbb\xfd\x8d.M/\xf3aM\xf2\xecy\\\xc4\x17I\x9a\xd4\x89=u\xc2\xd5\x97&\xa0\x80\x8e\x14\xe6\xb7SQ\xdc\xbb\xc7\xb2Ox<\x8d\x00^\x1b}\xfe\xdcKI\xc1\x9e\x95\x1b\"*\xceXL\xff\x93yR\xc7\x17]\xa7`\x93\x03o\x92g\xaf\xb2E^\xb2(\xf4\x16\x0c\x17\x1a\xb6x`Jz4\xc5\x18\xfb\x04\xdd>\x8c)\xbe+1\xa0\xf7\xccc\x1c\x03\x1cj\x97\xc8G\xb7\x91M\xa4\xce\xc2'Zy\x1el'nI\xaa:/\x89l\xc7i\xf9\xd9\x05[lJ\xda\xc3tZ\xca\x9c\x0d\x13\xc6j\xedi\xeb\x14\xed;G\x9c\xe9\xc7\xab\xb52\x84\xdc7\xe5l`\xa1\xe30!\x90\x19z%\xd6\xd8D\x95\n\xbe2\x84*\x08!\xf1\xcb\xe1\xd0E*\xcc\x9d`\xa5\xd7\x1azr\xda\x18l\x1e\x13Q\x90\x007\x96\x1e\x83*\x16\x93^\x81\x17~\xa8\x87,\xc9\xe6\xad\xaa'\xd9\xbc\x8f\x15\xfd\x81I\xebP ^\xd9B\x7f\xb3\xab\xbb\xd6\xb4\xf1m\x12a\xbf\x1f\xee'\x87\xb8`\xf2\xf5\xcc\xb8\x8eD\x08*\x01\xf7\xb4\x12\x18b>)8\x10\xefg\x11=1\x10\x80\xbe7[\xc5e<\xabI\xe9\x85p\x9f\xa7\xf9\xe2\n\xee\x01\xb1\x04A\xcc\x1b\xa2\xcc\xe3`3\xdaV4Y\xfa\xb9\xddR-\xd2]\xbd\xc5\x98\xf7\xd5\xb0*\xe1\xf3\xe7a\x941\x98\xb8\xe3\x04F\xaa\xef+\x03\xf2[n\xd0\xea\xa82\xe3*3\xbb$\x99&\xd6\x15E\xc5V\xaa\x7f\x91\xb6\x9b2w\x86\x1d\xd4\xdd \xb4v\xd8\xd9\x0bp\x04\xaf\xe3z\x15\xad\x93\xccG\xa7\xad\xd6b\xfd\xc6\xfb\x02\x1dt\xf86\xf8@>\xd5\x83[!\x89fy\x9a\xc6EE|d\xe1\x12\x13bg\xf2e\x0fYs\xb8\xcf_\xb3Y\xe9\x12\xcf\x8aH[\x95\x82\x93CQ\x94\xf4<\x12\xcb/\xb8\x15\x8f\xe4\x96\xe2\xa6\x830>\x01\xee\x8d\xd9q\\\x11\x02\xa2XO8n\xfe\x14\xdcy\xd0\x84\xe2\xeb+B\xf5\xea\xa5\x86\xf7\x9e\xd5\xc9\x15Q\xf2\x08\x91\xe8\"\x9fwRH \x81z(\xbc\x8f\xee\xbb\xdf\xb5\xff\xda\n\x9cW6\xef\xdb\xc7z\x86\xb3\x17f:\xd6\xfb\xea\xb2(\x0e\xfb\xdfv\x1b\xafZ.^}\x0f\xaf\x94\xf5\xf2\xb0+\x15\xcf\xf8\xf3n?\xcc8\xfe\xf0\xdb\xee\xf3\x82\xcf\xad\x1bub\xce\xfa\x17\xe1\xb0\x1f>\xea\x0e`\xc5:z\xdcy|\x85\x8f\x0f\x0e\xba\xe3Z\x8364\xdb\x92u\xdf\xcb\xdfu\xc3\xb9\xf6n3\x17\xaa\x03\xdb\xfe\xc3'\xddQ\x9d\xf3\xee\xbb\xd3\xb9n\x1c\xdb\x92~\x00\xe4N\xe5\x13\x8cQ\xa6\x8b\x1f\xdc\xaa\xf6 \x8e\xba\x9e\xd2\xa7p\x04O\xda\x8f\x9e\xd3Z\x9dj\x97\xc68\xde\xcf\x8c&h\xcc4L&\xcf\xa2\xbb\xf6\x14\x1fu\x93qMZ)\xc8\xba\xac\xae\xce:\xec\xad\xb9Sz\xb6\xca\xa0\x80\x8c\x84\xabO\xfck\x96\x8ew\xd8\xfa\xec\x9d\xd8n!\xf2\xa4\xdd\xbe\x90\x96\xb7\xa9\x06%O\x8b\xa8\x9f5\xdbtv\xc6\xe6\xe8=\xec.\xd1\x14\xf2\x03\x8e\xc0C/~\x16\x8ck\xc2L\x155w$1\x1cC\x0c\x13\x88\xbb\xf6x1\x9a\xe2\x05\xa1T\x95\xd5\xc9\x9a\xf4\xaet{\x13\xa6\xfb~\xd5\x89\xf3@\xc1\x94\x85<6\x01w\xa9D\x07\x98n\xf8\xa8DU\xcd\xd1\xfe\xe8Q\x95`\xc8\x81s\x16\xbdC1\xa0\x88\xcek\x0eD\x1e\x0e\x89e\x87\xffQ\x8d\x88\xf0*\xabsLa\xbd\xc1\x85\"\xb8P\xd9\xb0\xb5\xe4\x07eUuKJ\xc9\xe3:B\xe0\xbe'\xb3<\x9b%)\xf9P\xc6Y\x153\xfeuI\xeawy\x9e\x92\xb9\xbf\x83\xcc\xc1,\xdaT\xe49\x9e\xe6|\x01;\xb3\xce\xa3\x82\x94T\x02\xf5\xdf \xb1\x11\xe4|\x10\xe1`\x7f%I \xe5)\xf2\xe1i\xbd6\xe9\x8d\xf0*d/\x84U\xb4\xc94\xeb\x86\xd6D\x9d\xed)\xf8\xec\x9e\xf4\x15<\x85\xbaI\xfb\xf74\x80\x9a\xab\x81\xf0\xb7\xaf\xbc\x1b\x1e\xec+\xb3\xa5\xf0\xb3\xf1\x96\xc2U\xa4\xcbj\xae\xf3Q\x13f%t\xe9>\x7f\x86\x9d,:_\xe5\x15\xbf\xdb\x18cC\xfc\xb3\x91\xf4\xec\xf8;\xdc\xdeU\x02u\x07\xfd\xde$\x1f)\x9f\x9dj\x9e=\x1f\x06\xdc\x1b3\xe0\x1c$U\x0e^=\x9b\xce.\x88\xef\xdd\x1b\x0fN\xdc\x06mX\xf20{\xfd\x9bW\x93e-\xbb\xf6\xc2\x16\x9e\xe7Y\x1d'\x19)_e\x8b\xbcO\x05z\x07\x83\xf8\x8bN\xf1}\xffl{a\xb3\x88\xc7\x08R%^\xbe\xc2\x11\xbc\xefZ\xa95\xc3}\xa1\xf8(%U;\x88\n\x0f\xe7\xf9\xa2\x15\xd9\x06\xe3\x11\x0d\xf4.\xe6N\x07\xa0\x10\xfdfn\xb4A\xde\xd3\x87\x1e1T#\x82\xd2\xb9\xff\xd8\x93\x8c;\xdfL\xe0E\x87\xeb\x10A\x11\xaa\x1fn\x18\x01B(L\xe0\xb2\xc3\xd4a\xa2\xd4\xd7y\x96\xd4\xb9K\xc4\xc7\xae\x84\xd1\x112\xcf\xd9\xbd8\xedl\xc0\xd2U\x7f\xe8B\x03\xb6\x1f\xa3\xd6\xb8\xfc2\xb4\xab\xaf\xaf\"\x92\xfdcC6\x82T\x8b\x00\x19\x92x\x86L\x08\x95\xf5\x9e\xc7iz\x11\xcf.\xd5\x8a\xb9F~\xa2\x87\xd8\xe0\x9c\x196\xbc!\xd7\xd6ik\xe7\xfc3\xcf\x19R\xfa\xde\xe1w^\x10\xc2&\"Y\xb5)\x89\x92\x14\x97\x03\x02\x93J\xf77\xab\x10=1\xde<\xc6\x13\xee\xd6XG\x17T`!sf\x0dQ\xf9\x1f\xd0\xacY\x8cJ\xdf$\x0b\x8c+1\x89o$#\xad\xb8\x9c\xc6g\xf4\x8bp8\n\x07\x83\xd6\xe9\xe6\xa2. \x9e\xf2\x92(8C\xacc\xc6\x82\\`\x11\xadbT\xaerH>\xa6\x90\xfcQ0\x1f\xba\xee\xd4N\x1c\xd6\xf7\x8bF|\x15]\xc5i\x82&#\x1c\xeb\xfc<\xe4|\xde\x8b\xb7\xaf9A\x11\x96\xec\xad0C\x0dr<\xf1B\x93\xad\x8c\x07\x94\xaa\x93\x18\x83\xa3\x15qU%\xd9\x12b`\x95!M. \xfca\x9e\\\xfd!\xc4\x97\x80\xfdr=\x85\xe8\x07\xdf\x07\x90\x97\xf0\xfd<\xb9\x82\x07\x7f\x8a\xd0-DL\xd0\xb1\xc7YJ\xdb\xc7\x0e_\xe6\xf9@w/\xf3\x9cu\xf62\xcfEg\x99\x1a\x03Z\x89U\xc6\xf9f\xec\xf5\xc3*\xa9`\x1d\xdf\xc0\x05\x81Y\xbc\xa9\x98W\xcd&K\xf0\x02!\xc9\xb38Mo \xcd\xe39\x1dP}\x9dC\x92\xcdIA\xe1\x9b\xd50\xcb\x8b\x84Tt\xc8lL\xdc\x07\xc7\xb0\xa5\x98\x9fX\xdc\x19\xf9\x0b\xd3m\x1bR\xf8 h\xe2\x9ci:\xb0\x9a\x9fRq\xbb\xe0n\xa7\x06\x05\x122H\xe7E\x99\xcfHU!o\xc6\xc3\x99\xfaUt>c\x7f\x1a\x15B\xf4\xeb\xa5~\xe2T\x92\x7f\xe3\xeb\xf2d`\x12\x8c\xa1QSa?\x1d\x12{\x0cSY\x80\x7f\xee\xcf\xd8\x15\x80Y\x07L{X\xb0\x1e\xfaB\x05\xe5\xde7\x17i2\x93\xf1\xbb-\x96)sa,k=[\xd4\x9237\xf3\x85\xf9\"\x14@\xab\xa1\x17E\x9eq\xba\xc3\xd2O1\xac@\x82\xa4d\x1e\x84\xb0\xd0\xb6\xa3\xbfk\xfd\xb1'\x07<\xc3\xd8xvS\x0e\xe0\xc0]!\x1f\x99\x19\x00\xb7\xa6\x12\"r\x84;o}\x93\x82\xfd\x06\x8e\xe0\x95\xb1\x89\x0b*\x82a\x13)\xfe\xab C\x00\\9\"\x89w\xf7d\xa5\"a\x16\xc2E\x08I\xe0\x88\x08\xc6C\x8b\x1bK\xe3\x92^\x07!\\\xdb\x8f.\xb7\xfb\xfcf\x95\x07N Ud\x1c\xce\x08\xa2_X\xdb%\xd6\xcf\xcd\x81\xf8p\xcfD\xe6j\xdc\xed:\"\x83\x8e\x0c\xc6T\xb5\xaf\xd0n{_Q\x96\x7f\xe0\x01\x020\xd4D\xa3\x9191\xd0/!V\xed; '\xaf\xcb\xddc/\xa7u\x8f/9\x0b\xfb\\\xcek\xa1;@\xeb\x98\x9e\xb7n\xeb\xa7F\xf7\xa0;\xde\x93\x10b\x1dD(\xac\x14N\x8e\xb9\xa5\x0d\x86c\xdd\xe0^\x1b\n\xee3\x8ffq\xf6\x9el*\x9e\x19\x8a\x8eb\xd3\xc92C\xc5\x0b2\x8bg+\xc2v:\xad\xa1oQP\xf6M[_6\x8f\x9e\xff\xf9\xe4\xf9\xff:\xfd\xe95\xaa\x16\x99\xf6Q\xdf\xc2\xa6\x97\x93c\xc4\xc7\xe2t\xd8D\xf9\xa6&\xe5\x9f?\xbc\xfe\xd1\xd4Ke\x1b_\x08\xdd\xa8\xbc\xa2\x88\x13b \xb5Q\xe1\xe2Y\xaf\x16\xe9\xba\x90\xa9\x97O\xe2\xce)\x94\x9e\x94A\xa8\xfaWf\xcc\xb1r\xb0e\x10\x8c\x80H\xf5\\\x06\x9c\xe1\x91\xbf\xe5j\x1b<LD\x91\xeaQ\xe1\xde\x83\xcd\xf0\x1f\xc7p\x7f\x9f\xf2W\xc6\x16n\xfdE\x08\xb3\x81\xf3\x92\x1e\x0c\x1e\xf8\xb34!Y\x1d\xa0Nr\xa1\xe4\xa0.\xe0>\x1c\xec\x85P\xc0.\x1c\xec\xa1S\xf4\xc7\x0c\xfc\x8a\x94W\xa4d\xd5g\xe6\xea\xfa\x99\xe9tWtg\x1dx!h\xaee\xfb4\x03\xb5K\x86F\x0e\x19\xaf\xdd\xd3\xef\x19P\x81\x07\x98r\xd5\x90\xe9'\x94GIV\x91\xb2\xfeP\x12\xc2\x1c\x1b}F\x9d\xe81`\xe4\xd3.X\n\x80P\xb3\xd3kE\xab>\xf2:\xefG|\xfa\x85\xf7O\x87\x8f\xbe\x0d\xf4\xcd\x9b\x8f\xa5\xc6\x0fH\x03$TM*\x1a\xe37|\xed\x98\x95@\xd9DS}\x1a\xa01\x8fN\xb9l\xd0A\xb1\x060\x00\xeb\xb1\xf6;\x98\xc8Z,\xe4+\xcf\xeb\xd7\xb3\xf8\xfb\x82\xab\xbb::?'\xd5\xeb|\xbeI\x89F\xcd\xc3C\xb2f~\xf7\xea\x0d\xc3\xe7b\xbc|4\x7f)\xd5f\x8e\xa1\xd4Z\xd8\xcd\x859\\\xdb\xb4\xeeV\x1d\x0d\xaf\x83r>\xff;\xaaVqA:f\xd3t\xe7\xce\xca\xe4\x82L\x94\x8at\xfa\xa8\xc2\xfa\xc7&)\xc9\xbc=\xe2yR\x15\xf4,v\xfe\x80\xf9\x94\xd5C=4+\x10\xdc\xe1\x12\x84-8\x98\x11W\x7f\x0b\xcd\xaf<\xc0\x14\x16I\\\x89\x90\xb2\xccK\xf5\x8e\x04\x1f\xf4\xb8.\xfd\xddt\xbd*\xf3k\x8c\x80t\xc2\xbfj/\xa9\xde\xbc\xdb O\x95\xcb\xe4\xc7\xdd\x1bJ~\x9b\xdc\xb3S\x14\xa9\xae\xba7\xa41\xaf\xdf\xc5\xde\x0d\x7f\xdem\xbf\xe2\xcf\xbb\x17\xc0\xfc\"\xb9\x97^\x80_$\xf7\xd2\x0b,\xf8\xf3\xee\xc5/\xbbH>x\xa2\xbbH\xce\xfc\xc3\xc7\xddy\xb1\xfb\xe3\xfd\xc3n\xfbW\xbc\xfd\xee\xb5\xfa\x9a_\xabw\xdbY\xf2\xe7\xddy\xb1\x1b\xe4\xde=\xf4\x05\x07\x7fw\xba\xe7\xbc\x99\xeep\xae\xf9\xf05W\xc4\xb4zw\x94\x9f\xf0y\xef\xda\xfa\xb4\xafN\x7f\x0eG\xddh\xda\x97p\x04\x0f\xdb\x8f\x9eQN@\x04\x00|V.\xf1\x12\xa9:\xebD\x18|\xab\xd6\x12\xa1\xeb\xba\x95\xde\xa9\x950\xf4n\\\xe7\xa5\xa9\xf6\x07\xb5\xb6\x88<\xd8\xae\xf2\x9a\xdfb\xcb\xdf\xd3gg\x94g\x9b*\x03.\xe3\x9b3O\xf7\xf4\x87\xcdbA\xca\xde\xbb\x17q\x1d\xff5!\xd7\xbd\x17<\xc7\x87\xee\x03\xd2{\xf82\xcd\xe3\xfa\xf0@\xdf=\xbe|\xf4P\xff\xf2UV?6\xbe\xd9\x7fd|e\xea\xecu\\\xf4\x9e1\x17\x14\xf1\xf8C\xe7-\x8b \xd8\xfb\xe8\x94\xd4\xfdg\xc8\xdf\xf5\x1f\xdf\xac/\xf2\xb4\xf7\xf8\xa7\xc487|\xf5<\x8d\xd7\x05\x99\x9bk\x98\xa6O\xdf\xb5\xe6O\xc9\xbc\xf2\x1e\xc9\xa8\xf8\xeam\xe7\xe3\xbf\x91\xf8R\x02ig?\xd4262,\xef\xab\x10~\x0e\xe1M\x08\xefu\xb7w/B\xbc\xbb\xc9\xe0\x1e\x9c\xf6\x99\xeb\x9f\xf8\xab\xe7\xfdW\xff\xe0\xaf.\xdb\xe7\x03ei_\xe1%\xee\x0b*\xb5\xc31\xbc\xa2\xe3\x90#\x98\xd0\xdfA\x10\xaa\xda\xd3\x17R\x84x\xd1ol\xe7Z\xcd[\xdaa\x9e\xe8\x0c^\xe2\xbdBWJ\xa5\x9f\xbe4\x89\xc1thW~M%\xee\x1fe\xd3\x18\xd5\xf7E\xf7\xe02\xc4\xbf\xa5\x1d\xff\x13\x8e`E[\xe9\xbd\xa5\xe5\x078\xa25\x8e\xe0-\x15\xb8\xf1\xafwz\x05\xc6\x85:\xc1\x8a\x8e\xe2G\x83\xaa\x03[\xf9 \xdb{F\xff\xfa\x01\xb5ToLr\x81\x98\xeeO\xac\xee1\xfcr\x0b\x13Xv'\xff\x13\x1c\xc3\x82v\xbd\xf1_0\x1d\xe7\x04f\xf4w\xcc\x7f\xf7\x1a7\x82F\xf4\xba\xf3z\xfa\xcf3\xd9\xc1\x1b\xee/\xfb\x8bA\xefH\xc7\xb8\xa6\x1d\xfe\x93N\xbf\xdf\xdb\xef\xcc\xbf\xde\xa3\x0d\xde{`!\x18\xcb\xa0\x8f\"\x7f\x85#x\x8f\x9aj\x1d\x9a\xfcU\x0e\xf2\xaf\xfd\x97\xef16#bF\x88~\xed\x0d*\xca\x08`\x92}\xe9\xd9t\x00\xde\xdcbXC\xbf\x14\xbb\xb1D&\xe7}\xd7\x12<\x08u\xe8\x7fn\xeb\xd2p\x9f\xf3\x02\xc7\x9d\x87\xa0t\x9c\xbbvLa\xf6g8\x82\x7f\xc01b\xc6\x1c&P\xc0\x04\xff\xbe$7\xd5\xab\x0c\x03\xe2\xf6:\xfd\x1b\x1c\xc1K8\x16{{\x02\x7f\xee\x01\\h5\xfd\xbf\xd1U\xab\x15\xde\xcf4\x93\xbf!5)1\xc6\x13z\xe8\x9e\xa1%\xfd\x0b\x9c\x8f\xdb\xec\xe4\x93\x91\x1c\xe7\xc1\x93.\x87$8N}\"\xaa\xef\x1e\x8f\x9669<\x12\xe6u\x81W~;\x18Z\xbc\x95\xeb`\xe4\xb8\xf7\x1f\x1b\x92\xc2\x1ety2\xce)?\xd6g\x85=x\xd2}\xbei\xc2\xf62\x0f[\x11A\x97\x1d\xa0\x15%#\x83\n\xdfV\x94\x8d\xe9\x19\x8b\xb2\x81\xce[\x14\x04<\xcc\xc6\xb0{{{}a\x02\xb1\x1e\xe8N\x06\xc1\xeab\xeb\x81v\xd8cX\xb9{\xd4\xf6\xab\x8d\xcb\x9c\xb4\xaeuG\xae\xf0\xe3\xc7z\xcc<\xec\xc9H|\xb0\x8f\x0f\xb7\x1dl\xe2+\xa9\xa0\x99\xc9\x18&\xec\xf7\xbe`\xf0]4\xcc\xa5\xde2\xfed\x1b\xa6\xfeF\xa3Q\xa3@\xaeZi\xd7\xa8L\xe1Z\xc6\xfb\xb0\x0f\x13\xc0\xe0\xfd}\xe2e\xbdc\x93\xa8KA\x1a\x0b\xb9\x82\xc5\xfd\xbc\xbf\xcf\xaebs?i:c\x1d\xa1\x14\xc9\x82\xf7o\x82\xa7\xb0\xbb\x1b\xc3\xf7\xb0y\x1a@\xc5\xcd\x11\xa65\xecB|\xa6?\x17Y\xe3\xfawr@\xa9\xec\x816\xb5/{\xa9\x9f\x06\x90\x8a^L=\x08\xf6\x87\x05\x0c\xcd\xfc\nS\x8a\x11\x96S3\x04\x9d\xdeo\xfb\x85\xefn%a\x0f\xbe\x1f\xf8\xa5\x01A\xbf\xc0\xf7\x91S*\xa6\x15i\x12\xab\x87\xe05*\x16\xaf{Y\xce\xb3\xd3*w1\xb7\x81A\x05c@B\x0d\xd5\xcbzZ\xae\xa6\xf5\xa7=H\x99\xf7$\xea\xe2\xd9\x0dV3\x05\xc9\x1f\x90\xfe1^w\x04N\xd1\x884M\xe9/\xafr\x9b\xc0\xbc^,q\xdayTs\\\x11\xb4\xdedQ}\xc94;3\xd8\xdb)\xb0\xa4k\xd9\x80\xc2\xcf\xfc\xfd'\x07\xc1\x17h\xcf\xbe\xf6\x92\x1bM \xf54\x03\xc3\x88\x18\xbd\xa4\x92l\x91k3\x87\xd1\x92\xe6Km\xee0\xc0\x94\xb5e6\x81C\xfdKT\xdcM\xe0a\xef\xa5\xc659\xb3\x1ao\x82\xb2nSrF\xb9\xb6\xfb\x9a\xfb\xd0~\xd3\xccOs\x96g\x8bdYEi\xbeDs\xc0~=F\x02J5\xdb\x00\xa8f\xa7\x89\x8d\x91`\x97Z\x92 \xcb[\xafDR\xc5\x12\xfe\x04\xfb\xa8\x87f'\x00\xa5\xca\x94\xb0\xee?\x05J&\xcb\xa7\x10\xef\xee\x06\x94F\xd2\ngjkZ\xb2\x89\xa0\xfa\xd3\x91\x12\x92\x95+M\x83)9\x8b\xe2\xa2H\x11\xe5\x06\x0d\xda\xc5\xe9\x1a\xd1\xb5D\xfd6&)f\x17\xee\x1e}\x88\xf7\xb3\\/\xdb}\x8fOY\x05\x8aD\xbd\xf7\xf4!{\x8d\x18\xd8{\x8fO=\xad[>^Vc\x0e\xa8\xca\xe4\x17\x8f\xa8\x99\xf4\x91\xc00]\xa7S\xc2\x9a\x07\x8e21]M\xe3\xd7\xb9vpc\x8f\xc4\xc6\x978\xae\xa5u\xfa\xb3\xc0\xc0`\x90\xce}\xc4:\xbe$\x7f\xae\xeb\xc2\xa7\xc4\x97\xbc\xa4\xaf)Y*\xf2\xaa\xc6\x1f\x06\xd5\xc3\xc5&I\xe7\xef\xc9?6\xa4\xaa\xd5\xe6\xd4\xe7\x06\xd2\xc1r{\xab\x1f\xf1G\xfa\xfa%\xa9\xf2\xf4\xaaU\x9f?\x1a\xac\xcfMM4\x9f\xf17\xfa\xaf+R&q\x9a\xfc\x93\xbc'\x95\xfa\xad\xfa\\\xffe^\xbc\x9a\xab_\xacHZ\x90\xb2\x8a\xe8\xf3\xbbEc7\xdc\x91\xc4\xad\xd6\xeb\x0c\xf0\x84\x9e\x96\x8d\xfa\x84\xfe\x10-\xf7\xe9\xd1\x15w\x1d\xa1\xb5\x8cGQ2\x81\xd2p\xd2\x98\xa3\xe3\xf2.'\xba\xa8<\x1aM\x8e\xe0C\xe8h\x91+\xc8\xc5\xa0Q>W~\xa1\x97N\x94r\xcd\xa7|a\x00=\xf0If\x1anF2\x15k\xceNDx\x0d\x83\xe7wGp\xd0\xb9\xdd\x00^\xb9\xe5\x9c\x7f\xf9\xfc\xd9\xc0A\xb0\xaf\xf5\x90e\xfb\x7fS\xc6\x17)\x19\x00e\xb6Y\x13Q\xc7\xc0\x10,I\x8f.\x01h\x82\x10C\x1d\xd9On\x01\xb0\x1e\xbf\xa8\n\xe9\x96#\x9f\x88-\xd3\x1f\x138Dl\x11\xad\x8c\xc0\x9d:\x9a\xfbY\x08^\xcc\xfd\x8a\xb3\xfe\xd4s\x17\xfb\x18\xde\x9c+\xef\xdaO\xbdRG\x05KL\x05\xb5_Gt?\x1f\x1c*\"\xaf?\x1d\x1c\x82J\x072\xff\xe1\x81\xf2e8<\xf8\xce\x97\xdfn\xfbek\xb4\xe3\xbe\xdc\xba\xcf\xc3\xc3\xc7\xe6O5R{\xfb\xd0o\xbd\x92$\xb2\xd4c\xb7@-\x0dr\x13c@\x1fy\xf6\xdb\x93T\xea\x07\x93\x1b\xf1M\xec\xb6.\x1f\n\x7f\x82\x83\x8e\xb5x\xc3\\\x1e\x9c\xc1q\xfb\xe7\xc4\x98\n\x8d\xb29\xbe\xa6\xf5Cc\xeb\x87\xed\xd6\x0f\xcfP\xff\x1eDW\x07o\x0bRbL\x9aWh^\x12\xd7 \xc6/\xb9y\x9d\xcf5\x1e\x9f*\xa8[\xa9\xddTE\x0b&kP,\x10&\xe8\xf87\x13\xf4#\xf0I\x10\xb0(Qy\xd39s\x84U\xd2r}\xac0\xc7\x96\x174\x86a\xab\xf6'\x01L \xe1W[\xfaE\x1e\x9e\x9e\x9e\xbej\xfd\xc5\xcc\x02\xc9@8K\xdd\x12\x8dC\x00\xfb\x12\x99\xc8\xad\xc0A\xbfnG\x84\x80]\xf0\xce1}P+QZ\xb5\xf3\xff\xfd\xfe\x9b\xff\xf1\xf7{\x7f\xf4\x83\xf3\xdd\xa3\xe9/\x1f\xcfn\x9fN\xbe\xff\xd3\xe7\xe8\xe3\x83\xe3\xf0\xe3\xc7?x\xde}\x96<\xed\\g\x99\x0b\x0df\xb0\\\xe8\xcc\xf3\xb0\xb1\xa1\xdbo\xfa\xad\x95~}\xff<\xf8\xe5 \xbc\x0dD\xd3J\xe6\x12\xff<\xf8\xa3@\x80\xe6\x83\xe9\xf9Y\xf0\xc7o\xf8s\xcb\xc6UF\x851X\xe7~M\x87\xd1\x0f\xa4nX\xdc\xd8v\xa0\xf0\x06\xbd\xfb\xfdtL\xa667\xb66+N\x1fw\xf6\x90\x03q\xc6\xc4\xcaDWA\xdc\xc1\xb1\xe0Vb\xcf\xeel\xb3g?\x7f\x86\x1d\x12\x15q\xbd\xaa\xfa\x8du\xaa\xb3jC\xb1-@Qs\xf1\xea\xfd\nR\xb6\xcf!\xc9\xa0\xd4\x9b\xa8*\xeaXZi\x9a\x1b\xa2\xcc\x03\x87\x85\xf7\xee\xd9\xfbg\xafO>\x9c\xbc?e\x83O\xa2:\xff\xa9(laSD\xb9\xe2\x0eg\xb4\xa7ibP\xa6\x8aB;\x8c\x07\xe9el\x83}\x1cX\x87\x04\xd0\x18j\xdbk\x8aR\x15df\x8c\x13\xa6+t\x95XX\xd1\xdc\xfd\xa35\xa9W9\n]-(\xbb7 i\xfed \x9c\xa8Z4:(]\xc1\x0c4\xbe\xc9\x06]-(\x85\xa1W\xb2D\xe8\xcd\xe0Gz\xa7\x97\xfe\x9b\xf6\xaf\xadT\x96\xa0U[b\xe3\x9a\x0bp*g\x95~\xe6\xef?\xee\x06\xff\x00n\xb6\x86o\xbby(\xea(\xa9\xde>;=t\x125\x98.$/H\x16\x17\x89\x91\x89\xe0Y\x15(\xae\x17\x0d\xae\xd3\xc9\x1ez\x1a\x16<\xa9N\xaf\xe3\xe5\x92\x94\x07#\xc6P\xb1O\xb6\x18\xc3\x81n\x0cy\xf1j\xce\x12\xf0\xd7Q2\x7fY\xe6\xebwq\xbdz\x8d\xf8\xcd\xdcI\xeb(%\xcbxv\xf3\xaa\xff6\xa6o\x97\xa4\x96\xc7\xf9\xfb\xf8z\x84\xf8\xc2\xd9[F}\x8f\xd9Ib\xd7\xd7J\xc9/\x12[\xd7\xbc5\x18!f\xbb\xd5\\+\x11\x8b\xcb&\xa1\xdf;x\xe2$\x83'Nb\xa3z\x89\x12\x19i\xc7p\xef%H^\xa2\xf2\x85\x83\x0c\xca4\xf7\x13\x19\xf0\"\xf6\xf9\x1f\x9b\xb3\xa8\xca\xd7\xc4\xb7\x03\x14\xba+\xc2\xee\x16\xb5uu\x91\xd7\x0c\xd9\x10\xd0>>\x9bK\xdc\x80#\xd8\xd0\x87$\x9e\xad\xd4\x87\x15\x8b\x93Q\xaeQ\xcb\xc5w\xc4\x98\x0dQ\x90\x99~mY\x005D/\xb3\xd4\xa1\xb3\xd9\xc1\xb5F\x96\xaf\x8e\xbe\xf9F\x8emn\xba\x8b\x82\xde\x89m\x0c2+\x0e\xda\xccx\xca\"\x9f\xbd\x17\xc2\xa2uZ\x0e\xac\x9d\xc0\x18\xcc\x92\x15\xafIMJ\x0d\xdb!\x8a\x1cgE\xc7\x19\x07\xb0\xe3\xb0\xe7D\x91r\xe0\x948\xf0\x08;\x9did\x0d\xf6{\xb3<\xab\x93lC4\xa9a\xd4r\xc5]qs\x9f9\x7f\x99\x9cqE\xa1\xddj\x83\x02uK9\xad\xa8tB\xffc\x91\xca3\x8a\xc6\xf8\xf4\x08\xa6\x99ev\xc0\x87\x86\x87\xcb\xb4r\xa8M\x076k\x84\xa6\xfd\x00f}{'\x13\xbd\xd4\x15\x12\x9d\x9f\xe7e\xb2L\xb28U\xc4)\xe6\x96\xa1}\x83\x12\x8cBT\xc2\xf6O\x96\xb7\x9f%L\xe7W\xed\xd6\x81\xe8\\\xab\xbbE\x86\x00Td\xc4\xac-\xf4\xba\xcd\x98\x02\xbc\x80#\x98M\xf7\x1c\x00NKa\x84\x91\xe9\x0d\x15P\xda0*:0\xaa\xac=\x9b\x19%\xfb[\xe4\xe5\x9bm\xcc\xce\x18\xeb\xb6\x04\x0e\x9d\xb9%U\x84ZV\x06\xda\xd7-\x92^\\QzQ\x07\xe0\x15e>\xdf\xcc\x08\x1f\xdc\x15\n\x02\xb3<\xab6\xeb\xf6\xb3\x8a\xcc6eR\xdf\x88g\x9f?\x83\xbf\x9a^\x9d\xa1\xb1\xdb\xd5Y\x08s\xb6\xf3V\xba\x0ca\xddB\x01\xb3A\xc6f\xa5\x909v\xa64\xed\xd0\xbf\xb97\xa0\x03\xc8\x80\x83m\xcd\x14\xf5N\xf5\x81{\x18\x98\x14\xe1\xbar\x03G\\Ab\x9f'X3pt\x8b\\\xa0\x8b\x10\x9d\x16(\xd1M\x1b\xa2;\x0f\x9e\xc2\x8eO\xa7\xe8_\xc0\x11\x9cG\x19\xf9T\xfbA\x10\xcd\xf3\x8c\x04O\xf9\xe4]\xc1%\n\xed\x8f\xb2z\x17,\x00\xa8\xdb\xbcD\x91#>\xa1(um'3\xdd\xc2n\x90N\xce\xc6\x8eZ\x94\xde.\xa3\x0c\xcf\xc9\xb6\xad\x01\x87\xc7\xa7\x91h\xa4+\xa7#QKW\x9e\x8fD7]\x19\x87\x82\xba\"\x17\xf92D\xa7\x95\x0eZ^\xd3\xe5\xa3\x98I\xa1\xe6_\xc2\x11<\xebb\xe6'\x8e\x99;\xf6\xab\x981\xe5\x8a\x87\"\xbf\xdc\x06uu\x85bb\x87\xd7v>\xc5mE\xde\x1be<F.\xff\x8b{\xfd\xf3\x90\x83u\xf4MI\x16\xec5\xfe\xc5^\xe3\x9f\x9c\x89m\xde\xab\x15d\x0d\xf6\xe0\x8b\x87|\xcbT|\x14 \xba\x04\x8fc\xcb\xad&\xa0\xaeki\xb9\xe5m\xdd\n\x88=\xb9\x17\xe2\xbe\xda\x1eD\xb7\xb0HXt\x9c/\x1b\xcd\x97\xefLZv0l\xde\xb3\x88\xe3\x97\xf2\xf7\x17\x80\x1c\xeep\x9a\xc0\xc9\xf4i\xc0\xfd/\x9f\x7fQs\xc3\\\xd7P\xd9\xee\xcb\xf1_q\x97\x13\xbaw\xe0\x08(ytn\xc2\xad\xb3\xed6\xc4\x92#\xff\x8d3\xf2o\x83\x01\xe3\x91z\x07\xc3\xd8\x9c+\x08|>\x1e\x81\xb7\x19*p\xc4\\\n\xc4\xbcq\xfe\xd4q\x9d\xac\xb5\xb6\x150n\xfdJ\x0f\x1b\x8d\xf9K\xef\x89<\x89T\x85\x08G\x8e\xceMQ_E\xbb\xe0J\xd8\x87\xdf\xe9T\xb4\x85P\xd1\xf6\x82Z\x03\xf7\x17\xb6k(\xf8\xf0\x98\x07\xa4b\x11\xa1\\\x15rs\x08\x8d\x06\xab\xdf\xe9jL\xa7D\xb9w\xfc\xfb\xc7\xeb\xb3\x07\xcb\x84]\xfe\x0d\x80u\x9c\xe9\xc1\xe3'\x036\x16\xffo\x98\x1e\xdc\xcd\xd5s\x9a\xc7\xf3S\xa3\xc2\xb0\x94\x9c3\xd3R\xd0\xe6\x0d\xe9\xdb\xf5\xc9\xc6\xe4\xdb\xcb \x90(\xbf43\xf2\x9b2\xa5U6e\xca\\\xc5\x8c\x15\xab:\xae7\x15\xe6$\xc1\xbfl5Y\x8aPQ\x9b\xfe2\x7f\xb1\"\xf1\x9c\x94\xd5\x04\x12\x9fD\xfc\x87\x81B\xe8\x1b\x89\xe1\x08r\xf1\xe5\xd4\xe3y\x84\xee\xd3\x9d\xe7\x19\xf4\x10\x1b\xccC\xf9\xf93\x9c\xfb\xb1\xd9\x0f\xca\xdf\xa0kKM>\xb1\xf8\xe5\x17i~\xc1\x14X\x17\xe8'\x1e\x88\xcd\x1c\xd5+\x929(\xb9)\xc9\xceY{hH\x97G\xf3\xb8\x8e\xd9\xdf\x9b\xc0r\x00]\xf5\"\x01;(\xea\x84\xa63.\x8a4\x99\xa1\x02\xe9\xc1\xcf\x15\x8bO\xc1\\w\xfer\xfa\xf6MT\xc4eE|LA\xb4l\x8c>\xe3\x05\xf91\x8f\xe7C\x0c\xf4-\x1d\x85\x0e\x84\xa2\xe4\x98\x01\x01\x8e(\x85\xc8\xa3\xfc\xe2g0j\xf5\x9dX\x83\x9c\x8d\xf5\x84\xdbl\xeb\xb9\x01\xfd\xe9\xc3a\x91\xf7\xa9\x83\x9b\xe1B2\x9cT\xaaO\x19\xf6\x8c\x94a\xafM\x19\xf6\x18e\xd0\xe3\xaa\xce\xbf\x04\x94\xa5\x15\xe3SC\x8e\x10\xa1\xd6e\xf6@:\x1d\xaf\xf9r@ \xba9\xcd\xe8@\x85\xbf \x9a\xfaGI\xc5\x1d\xa1\xa6\xd9Y\x00\xc7\xac\xd2\x04\xa6\xf4\xff\xb3\x10\x7f\n\xb9\x8b\xe2\x93\xf0U\xd1@\x1d\xf1\xb7\x1b,s\xc0ld\xe0\xa4\xd0Gfy\x99\xf0#C\xc4\x89\x13\xcfd\x9c\xd1\xa3\xadl\xaeVm\xfb\x0dS\xe0\x17\x12\x15I\xf1\xa5\x06,\xcdM\xe3,Oy\xd6\x9a\x97\x98\xf0\xcc||\x90(N\xd3\xfc\xfad]\xd47\x18;\xd8|||\xd9\xcc\x8fE\xf2\x1dJ\x1f\xf5WX\xdd\x04@es\xfdb\xc8\xc8\x1f\xfb9\xcb\xdfp\xc1\xa2k\xa8 \xcd\xe5\xd7y\xff\xe3+\x91~'\x9b\xe5s\xf2\xd3\xfbW\x86\x80P\xa0p\x92\xa8\xcdM\xb8j\xe8\xa6\x99]\x1eX\x1dma\xd0\xfc\x16l\x81\x19\x95\xcf;\xf7\xe4:\xee0\x08\xcdW\xbe\xb9m\xa9rfd\xd4\xde\xbf8C\x97G\x18\xfe\x1d\x8e!\x8f\xd6q\xe1'A\xf4s\x9ed\xbe\x17zt\xf3z\xebMZ'\x0c}\xd4J0\xe9\xd4\xd7\x03`V]M\xc0\x0b\x0d\x06\x99\x15\xbe\xfd\x1f\x07{\x86\xf75{\xbf\xf7\xc4\xf0\x9en\xbfj\x02\xdeg\xaf\x0fP\xa4^\x94\xe9\xc0\x14\xd0\x9e\xe7\xb4M\xab\xe1{\xe0\xceU#\xda\x02\xce73U'7Dx\x85\xd1\xd64\x1b\xb8>\xa1\x9bvg\xa7\x8c\xaa\xcb\xa48\xa1\x88\x9ed\xcba\xab\x82\x9c\x87\xeb\xefo\x0bc\x88V\xe0l\x95\x1d\x83EQ9\xf6/\xa2)\xc6^ny\xe2\xbf\x9d6\x82v\xa3Q\x88\"6\xf84\xa1\xc7\xcf\xc6\x8f\x8d\xeeJ\xa2pc\x1fC\x1a\xd2\x10\xf2 \xd4\x05v\x0e)Oo$0\xeb\x86\x9dB\xa90Y\xa0\xe1\x91~\x14l\x85\xcc\x0e\x0eI6Of\x14\xa3u\xf1R\xbb9o`\x00\x8f\xd3\xdf\x8e\x95Aq\xc3*\xf9\x08\xee\xd4\xf3\xd0\x9d\\[=\xc7\xd6\xfe\xb1!\xa5!\x8203\xa9Y\xe4\xe5Z\x7f\xd0\x0c\x86fM\xfb\xfb9 \xc6X\xb3@\x83\x04\xb1\x9fL\xc9\x19;)\x07\x10|`3\x168\x15\x83\x8c\xc3d\x12\xf9\xf29\x7f\xf9\x01_\x9a\xed;P\xe8{\x80\xf4\xbb\x88\xcb\xfa\xe3\x03\n\xa9\xfbT\"y\x90D5\xa9j\xbf\xb0\x9a|\xf08j\xa6\xf8\x9d\x80J\x04.\x01d\xe4\x1a\xe6\xa1\x06\xa8=\xf6\xd4*\xd6\xb06\xa3\xb8(H6gAu\x92i}\x86\xf6\xbdC\x00\xd6om\xa6\xf4\x94\xe3\xac\xfc\xc40\x1d\x1ez\x98\xe1T\x7f\x07j\x91L\x1bq\x058\xf8V\x98)\xb2*\xd2\xa4\xf6\xbdco\x00\x01\xae\xa0g\x0b\xbc\n\xa1\x1b\x8aB-K\xba\x9b\xa6{\x03G ^ O\xf7\x07j\\\xa0=\x86\x19\x85nl\xf8q\x8e\xe9\x96\x04 db\xe6\xcd\x00\xb2t\x90#\xd7 \x87\xeb\xa6\xe3\x8bu>%f%6e\xab.ZCl\xa8\xf4\xf9PFmP\xa9u?\x0b\xa7(&\x8c3\"\xc4\xb5-\x9d\x8d(\xf2fSG\xb0C\x96\x0c\x08\xcfG\x12\xb0l\xbf{O!\x83\xef\x81<\x85lw7\x10bYC\xb8\x87\xac\x8d\x04gRG\x8b$\xadI9~1\xccZ\xfb[\xc1O\xde3\xb9@@\xd3LI\x8f\x84c\x0fv\xf1(\xf7\xfal\x1d \xa3p\x11BE\x99^}{L\xe1u\x04K\xd8\x85\xeb\xb0\xd9\xd4x\x928\xecj\xed\x94\xbe\xb2\xc1q\x08uT\xad\xf2M:\x7f\x91_gi\x1e\xcf\x9f\xa1Z\x8deg%\xe9\xc2p\xdd.\xed\xc3\xfc\xcc?\xe8eK\xa4Eh\xc5\xf7\x86\x94\xe2Z\xa3\xe6\xb9\xd0\xa7\xeb^\xae\x1a\x8b\xe7\xfe\xcb+\xf1Rc\x0f\xad\xba\x1a\x0b\x9b`\xf9\xec\xcf\xec\x8c\x136\xc1l\x07Ri\xf8m\xf9\xbf\xe9\xea K\xce5)\x97\xe4U\x86\xcf\xde\x96\xb4\x02\x1cA\x8ao\xb8\xc3\xb7C\xc0\x1bh\xd6Zz\xdf\xd8\x11\xdf,\x11\xb2]Y\x7fq3\xda\xfa\xb2E\xad\xfb\xad(B\xf2\xeeg\x90a \xbaK\xab\x9b\x03\xaa\x8c\xf5,2\x08\x82\xaa\x01\xbf_\xf2\xc8\xe85\xfe\x95\xf9\xa4\x97\xa8[6\xd1F}Z\xf9\xe0;\x8d\xc5\xfdZ\xa0\xb5\x169\x97\x02\xc5\xbe\xd5\xbd\xbd\x11\xdf\xf6Ru\x02?\xf5\xe4\xae\xd2\x83\xa3\xed(op\xda\xe8\x83a\x02\x9a\xf4\xee\xdd\x1d\xc0\x8f\"\xdbI \x88?=2\xaf\x14S+y\x94\xad\xe3\xf2RRj f\xae\nUL,!\x17Kn\xa0\x97\x01\xf6\x8d2\xc0~[\x06\xd8?\x1b\x08C(Ng9\xcc\xeb2.\x1c\x0f\x14\x16\x82\xfdi\x00\xd5u\xc2T\xc5QQ\x92+\xe4\x8d3\xf2\xc9\xca6\xce\xe2\x8a\xc0\xded\xb0\x0e\x08\xd3,\x93\x10[\xdb\x84X\x91\xc2\x1e5\x02\x14\x96u@O\x1c\x0c6\xbf\x92\x04\xac\xf9\xfb\xf3gL.\xa7\xdd6q\x10\xc2N\x1c\x95,\xa4\x04\xa6)\x9b\x91\xa2\xce\x07w\xb9Z\x18`\xe0\x08\xf6\x1d\x0d\xb1.J\x12_Zk\xda\xef\x87\xe5\xb5$\xef\xff\x11\x9d~\x7f\x1e\xda\xfb\x17\xb5\xe0\x9a=r[3\x12\xd5{\xcc\x1c\x9fdu\x08\xf4\xe7h8=\xf9u\xc1\xc4\x87\x1c;\x00\xe1\x89\x1d\x08,\xe3lmYjlm\xdfa\x1f(\xa7_<$|\xc6&\xe13\x1c\x96/y8+\xce\x81\x19\xbb\x90<\x9a\xb1\x1f~\xb8\x88\x08z\x92,\xec\x1f\x86\xca\x0ex\x14\x82\x8f\xf9\x1eJ\x8c\xed\x82\x071\x06y\xa1O\xcbt\xf8\"\x0b$\xe0\x1c\x90Q\xb2\xab*2\x8aa<\xa1{]=@|\x16\xaf\xd4\xadw\x07,\xa0[A\xed\x1a HU\xe4YE\xbe\x84\x82\x1c|\xf7\xebn\x8d.\x0598d$\xa47\x13\xa3\x0eP\x14\x84\xdc\xc1\xa1\x1b\xe4HT\xef\xb7\x89\xc8\xfexP=\xfauA\xc5\xc7l\xc9\x0f\xc3\xc0\xe0\x82\xbe\x8c\x8c\x18\x9c\xc3Da\xcd}goN\x82\xe5\xd0\x01\x83\x10$.\x1d;n\x04I\x0b\x0e\x9e\xe0b\x1e\xb0\xbb\xb4\xb8\x9e\xad\xfc\xfd\xc3\xc0\x10\xafFW\x9ai\x1c\xda\xa7\x01w\xb8\xba\xcc\xc4\x8b\x8e\xdd\x01.\x87\x0eh\xce\x1a\xf4s\xae\x94c\x19%J\xc5Z#\x08\xf8\x8f\xe7\xf9\x1c\xc3\xc5\xf2\x9fL]\xc5L@ \x97{Q\xde\xc6G\xf5A\xa8\xbb\x99S\x0b\x1b\xa5\x03\xda \x19\x8b\xf2\xcb\xd1\xeb\xf3\xd0\x02'Q\xeev}\xf0\x16\xd1\x0d\x9c\x89\x0e\x9c\x89\x04'}\x1cv\x93\xcfw\x0b\x82\xf1\xe1\x81\x1d\x8c\x92\x8c\xc6\x17\xe5\xa6\xa8}\x8f=\xf0\xc2^ \xefna]X\xf0 +y$\x9b{#\x86R\xd5y1`\"\xa9\x07\xf9-K\x93\x871S\xa7\xc6o\xa7\xf4\xcc?x\xa2\xd7\xf9i\x02\x18\xdc\xea\xd4D|\xa0v\x85t\x03\\\x16\x92\x10\x07'%![(\x8d\xdbnVB\xa125*{\x06%B>\x98\x07\xfe\xcfU\x9e}\xfe\xb4N?\xdf\xc4\xeb\xf43\xa6\x00\xfdx\xf1\x80\xf1\\_|\xb9\xd3\x8d\x10\xb2\xad9\xe1\xc3\xfd\xffxk\xc2\x81\xc1\xb4/1I\xa0\x06Q\xfe\x1eCi\xe2\xd5\x97\xf7\x00\x83\xa0\xe0M\xba]F\x16\xe6\x04<ztc\x11\xfa_\x18\xda\xe5\xbf\xf6Z\x81\x80\x1e\xb0\x87\xfb:\x13Q\xa1\x94}\x80\x97\xfcn6,\x89\x83\"M?\xee\xbc\x98\x80\xc7\x07f\xba\xca\x8f\xeb\x951\xa4\x06\xd7\x9a\x1a\xee \xd7\xa4\x8eu\x89\xef\xdc\x961v\x98\xd5\xc2\x9f\xf9D\xe8\xc6\xd7\xc1\xb8\xd5\xaa}nC\x83\xee\xf3,\xa0\x80\xd6\xc1\xfd\xf3g\x98\x9eu\x83\xef\x0f\xda\x139*5\xa7g\xa1\x1e\x1f\xdb\xf3\x18`\x95x\x8b\xb2\xd7h\x96g\xb3\xb8\xd6\xea\xf8\xd0U\xbf`]\xf8{!\\\xb7\x0c&Z]:\xf47-\xcf\x1c\xbb\xac\xd1\xeam\x9a)\xa1\xca\xcf\xfa)W\xb7\x89\x03$\xaeG\xa6\x9a+\x14t\xa4W \x1d(dwH\x1f\x97\xa3\xaeT?b\xfd\xa9\x9dK\x0dn)`\x91\xeb`\xa1\x1dbw\xf9\x87\x86\xc6\xae\xd5\x9dq\x03\x9a\xf5\xaa\\\xf0\x03\xc0\xec\xd2\x9d\xf4\xe7\x98\x983\xa7\xd0\x89\x15\x96\xc9\xc4\\\x83\xba\x0d\x16BkfN\x98\x08\x03\x93\x8b\xfb\x93\x8b\x9d\x16\x90\x8fa\xe6\x97n\xc8\x9c\x8e>\x99`\x02\xddkTS\xe3\xb3\x01\x13)#\xa3\x85\xbaR\xba9\xd8\xbc\x9b\x00\xcfti\xce\x95\xa5\x19GZ5S\x991+g\x9d9\xaa#i]\x0c3\x19\xeeW\xa4\xfc\x0b\x85\xf1\xd2\x8d\xcaiL\x85\x9d\xf1\x19i\x94ua6\xca2\x0db\xee0\x08Q\xb9e&\xeb\xd4\xfaJ\xdf:zAY\xf6\xb8\x88\x9b4x!\xe1\xc5\xf3\xb9\xb0\x8a\xff\xfc\x99\xb2#\xeb\xfc\x8a\xb4\x9f0\x06\xc5\x10\x99\xc6\xb8/;\xc6Z\xa6 ^\x0d\x82\x0f\xa7\xff\xf93\xd0\xb9\"$\xd7\x9b:\x16\x90D\xc9\xfb\xc6\xd1\xd4x=\xd8\xcf\x15o\xdfo\xe0AA\xd7\x07\x80|\x8a\xb7\x16\xbag/\x08)\x9a\xe7n8\xb4t\xc0\xa1\xaf\x8e\xc87Fcl\xb3\x87\x06\x1f\xe1\xa9\xbc\xd6Z\x92\x1aM\xaf\x7f\xb8y\x97'\x19\xa5\x08\xfd\x18\xb8\x00.n\x0f\x82\xbcw\xb2\x86\x86\xda\x88\xd1\xbf3\xff\xbas\xa3\x84\xbe\xecz1t\xeb\x7f\xce_\x1ej\x0d\x06\xae\x87\xec\x10N\xc4\xa7\xda\xdb\xdcO\xe26W\xf7\xf2T|\xaa\xb5~x>d\xc3p)>\xd5:\x0c>\x13o\x1f\xf7\x8d\x18\x9a+\xdc>4\xe3\xf9|2,'\x8b2(3\x81\x90\x9b\xe8>\x1d0\x1c\x1c\x92\x9b@\x91\x9d\xb4\x154\x08\xd6o\x89\x93\x85 $\xbaw\x94\x8a\xde\xe9|9a\xb6Ny\xfb !\xf5\xba\xab1S\xba<Q\xc8\xb5y\xdc8;FM\xad\x93\xfb\x9a\xeb)\x89\xf7o \x02<<~S0\xe0\x1d\xe4\xa7\xfa\x8e\x81\xc0[\xfdm\xa7\xb6$\xf5\xabl\xdc\xc4\xea\x9e+\x83\xcd\xfd\xb0\xcf\xde\xa2\xb3\x0dj\xdd\xa6\xf5\x99\x96 \x07`j^\xcd1\xd9\x9f\x05\n \xefX\x86\xf1\xd6\xa8\x06|,X\xc0Q.\x8d\xffr\x1b\xb6\xd8\x17_\xf8p|jx\x06Z\xc7h\xaf\x0fr\xb9X\x84?:\xbf\xdc\xaf\x0d*\x1c`R\x06\xe5\x85\x06\xda\x13\xca\x04\xc6\x84\xb0\xa6\xccj\xfa\xcehK\xfa 33\x0f\x15^\xa4\x81\x14mt\x9a\xf0!R\xa1\xdd\x10\xd2W\x91\xa0\xbb\xcc\\\xed0\x81\xd8y\x02\xd2\x8eu\x83\x91\xbd\xf8\xe0\x07\x9a\x07\xde\x05\x06\x99e\xd5\xa7\x1b\x87pci\xcf\x81\xb1r\x08\xe3\x97\xda\x86\x02\x8a\x91e<\xdd\x9c1-\x8f\xfd\xfe \xeb\x1e\xc1LH\xfa\x06\x97gQZ\x1a\x8d\x8a\xf9\xc18\x8fm\xa1Gk:\x04\x87\xa0gr\x85\xe6t\x85\x9c\xe2\x1a\x02\x87\x9eSj\x88E\x08s\xa78\xcc\xa2\x88\xe9\\6\xd3\xa1?\x9f\xb5g\xb7\x08B\xb0\xad\xb0Z\xdc.\x03i\xb9\xed\xc0r\xc1\xd4\x14'\xed\xfe\xe7!T\xd3yW_\xabm\xcfZ\x83#\xcb\xc2\x05Ex]s\x84@\xc3\xe5\x9a\xb2\xe1\x1bI\x98\xcasT\xe4\x12?\x05\x91+|\xb1Sm\x94`\xd5\xd7\xaf\x89Ou'\x8a\x91p\x8b\"\xd5,\xe8blG\x1a\x07\x16Y\x14F\xc9\xd9\x8dK>\xe8\x1a'\x8a8\x899\x19\xca\x86\xa3\xe5\xdc\x06\xdd %\xad\xb7!L\x87\xb6\xa3\x89\x9a\x9b\x0e\x1ae=\xdb\x8a\x0b\xdd\x9a\xdaV\xf1\xaa!\xb6\xe6\x11f\xcc\xeb\xf85\xa9c\x1c\x1d\xa9\x00\x83}\xadI\x8d\xaa\xcd\xb5_3\xd5B\xc7\x8f\\\xd0\xfc\xcf\x9f[xEk^\xe9)\xd7U\xc8\x9b\x15\xe9l\xafl00\x9e\x85\xf5Y\x10\xde\xf1\xc8m\xc0\\v\x0e\xc7a<\xbb\xd0\x83`)A0\x1ee\x14\x06\xe0\xc2\xc8\x00h\x9f\x8a\xdd\xd7{\xa9a\xcf\x8a\xb8$Y\x8d\xa1\xba5<\xda\x10\x83\xd6\xf1\xf0\xac\xed\xf1\xaa\x95\x84\x9aG\x98B\x17\xf1\x95]\x9b0\xbf\x97\x92\xf9\xbd\x18aE\xfbE\x9f\x18\xd4\xc3\xa2s\xb0\xa5O\xf1\xba\xef\xfd\xa3\x01\xc6\"\x8d\xeb\x9ad\x13\xd0\x04}Yl\xd2\xf4\xe6\x8d\x08g\x84s\x1e\xe1;\xbe\xf0g~\xea\x93\xae\xf6\x1a\xf4\xe3\xc8:\xddh<1\x93\xea]\x99\xaf\x93\x8a\x8c\x18D\xc1\xb5\x86s\x9f`,\x14\xa7\xb1p\xcf\xae7\xe4\xda\x117\x86\xe3\xa3\xf0\xa1\xe0}m\xa5U\xb5\x01\xb8\xa8\xdb`\x08\xcf\xc1U\xc4j&\xf7\xaeL\xd6I\x9d8kA\xdcg\xb9\xf9\xcdg\x99T\x7f\xa9\xf2\x8c\xcb`+\xdd\xfb\xe7L\xde\xed\x89i\x16\x84\x92jn!/\x9b\xb4\xdc`\x1a\x18\xefQ\xe3\x1b\x9fT\xaf\xb9&b\x02W\xba\xd7\xcf\xe6s\\\xb0\xa6\xdaZW\xed\x7f\x92\x8c\x94q\x9d\x97#\xe6\xf5\\\x92d\xe5\xfb\x97\xcd\xd7ns\x13\x1fL@\x93P \xa9\x18\xdb=\x81B\xf7\xf2\x84\xe5\xaeu\x1eq+x\n~\xdc\x1fc\xeb \x95\xdf\x15C\x1f\xa9\x0c\xfd\x9dRap#t\xa3\x8e}A\xae\xb4'\xdb~\xba?\x94fm\xf8\xd3'{\x03\x86M\xb6O\xb7\xcebw\xb0\xf7\x9d\xf9\xd3\xff`s*q\xbfw\x07\xfeJz>\x8c\xe5o\xe8;\xae\xe8k\x97\xbcv\xcfF]_\x9d\x850\xb8N\xea\xd5\xf3\x92\xccIV'qZ\xc11xI6K7s\x82&`U\xbc&\xf7Y\x9cx\x8d+\xb6`\x03\xc4z\xdb\x14yd@hB\xe7\xbe\x81Pm\"p\x9d9\xbd&`G]XML\x01\xecX\xf5\x1e\xb0\x8cyTA\x8d\x177,\xfc=\x9b\xd1\xb6&\x9a\xd0g\xc6\xcf\x06\xd2\x1b\xcd\x9a\xe5\x99h\"\x88\x01\x8aw\xaea\xe0@\x95c/\xf2\xb9>x\xa7.\xcb\xc9\xef\xcc\xbf~\x85\xdb\xbdd\xe8\xb2,\x1e\xf0\xe9]\xc7\x97,\xb7\xf2_N\xdf\xbe\x11N\xbd\xb3\x94\xc4\xe5\xf3x\xb6\"6\xbb\xd6**\xd2\xcd2\xc9\xaa\xa8$\x8bJ\xf9\xb0cB|\xeb\x9aQ\x1eT\xc2R\x9b\x17J\x10\x97z\x95\x18\x92\x99\x9c\xa0X\xd8\x19\xe0<\x9f\xe1\xf0X\x14]\x12\x84\xdd\x19,TX\xf8\xd7C\xeae\xddf2\x84;\x01\xd3f\xba0\xe0\x97~JB\x8c\x9a\xb6\x07m\xd0i\n\xeb \x01N\xd5\xb0cI\x81\x931MM\xd3X\x13\xf2>\x08\xf5\xdf\xad\xf5\xdf1\x9cN\x08~\xc7\x8f.$\xec\x85\xb6~\x9c\xa6o\x17A\xd8\x8d\xf9n\x06\xb55k\x9b\xbc\x11\x1a\xa6<\x17qE^\xe4\xb3 \x9clCi\xf8\xf0\x07IfW[\xa1\xe5\xbdE\xa1\x82\xfe\x8b\xa4\x9aQ1$c\xec\xaa\x86\xebmj\xf3\xd5y\x1d\xcf\xca\\\xcb?\x8b\xb2\xce\xe7$\x15\x94\x86W\xefGE\x01\x854\x9e\xbb\xe4E\x86\x8eos\xdc\xac]b\xf4mv\xd5\x1b&\xdb\xb8\x1d\x8b\xf2\xa5\xee\xc7\xa2\xb8\xba!\x8b\"\xcf\x8a\x9e\x07\x87\xc9\x16\xb4[\x98\xeb\xa0[\x8fc\x1c:D\x91#\xb48v\x882\xac\xf2\xe6\x8e\x1e\xe6f\xb4>\x1b\xa283D\x9d\x0f\x9c}8D1(\xd2\xfd\x00&0\xeb%\x13\xb3\x9d\xe6\xa0\x90^\xc2N\x083\x8b9\x94pl1\x1cd\x8bE\x92\xa2{W\xff~\xde\xc4\x8fT(\x8c\xbe\xee\xaa\x1d\xb0\x0b3\x17\x19R\xdc\xb1]\xd2\xa3E\xfa\xcak9\xc66}\xd1\xd7^\xf2\xa6U\xc2\xa5\xaf\x89\xf1\xe3\x9dy\xf9\x0b^\xdb\x91\x97?g\xebr\x99\x14B\x97\x87<\xa7\xbe\xf25\x8b\xe7U\xd7\x1a\x19\x1d\xb8\xc1\x13\x89\xf8Ibd\xfai\xad\x13tc\x0e\xb1E\xbc\xd5\xbe\xa6\xffl\x04\x9d\x0b1fN\xed\x97\x18\x91\xd1\xcck\x8c\xe03\x1cy\x8c\xdb\xc0?\xe1t\xbf\x9b\xfa\xbd\xcfZn8\xf7\xa8\xb5\xb4\xe2\xd2\xfc\xbe\xe6\x15K\xbbY\x19Rnf\xfe\xd6\xba\x83\x83\xbd\xad\x93\xbb?\xd9Z\xfe\xdfZ\xfa\x1f\x18\xabU\xf6W\xdf\xdc\xb9\x10a\xe2\xc8\x0d\xfaOy\xa2\x9b\xd9\x03TAE\xb3\xb8\xa87%9\xad\xe3\xd9\xe5\x872\x9e\x1186\xbd\xe1\x04\x9d\xfe\x1b\xcd\xf2\xac\xaa\xcb\xcd\x0c\xdd\xdf'\xecYEkR^C\xfan\x06\xec\x99\xe5\xaaA\x1fx+k\x05\xde*Y\xe0\xad\x92\x05\xde*ww\x03\xc8\xa6e;\xf0Vi\xe0\xacqpkRU\xf1\x92`\xae\xc6\xbd\xb3\x90\x99\xd0\xd4\xad\x93J\xa7l7\x11\x8c\xac\xb9\x8bW\x9dUC\xf5\x05\xcf\xedC\x8f`\xf5\xa9\x02:\xfai\xd8q\xa8\x1a\xad\xf5\xfb\xed\xf12\xa9^\x96\x84\xa47o\xe25\xb1\xe7w\x90\x86\xe4S\xd2\xf2\xc7\xd1\xae\x1d;\xc4\xa5\x0b\x9d\x91\x80\x97Q\x92\xcd\xc9\xa7\xb7\x0b\xca\xa5\xfc \xee\xefS\xda\x9d\xcb\x87Y\xf30q\x0d=)WZ4BX#}$\xb1\x12e\xf4i\xf2\x1a\xb9K\x17M?\xc7:\xb80 \x1dX\xe5\x85\xa0f5\x0b\xc1\x13\xe7\x05\xfe\x10\xf9\xf8^\xb4\xbf\x98\x89\x90\xb4\xd5\x83j\xb6\"\xeb\xb8\xfb\xb4\xd5\x88\xf2\xbc\xdd\x95\xda\x0c\xef\xe8\x946\xa7\x1f{\x82cg\xfd= \x9f\xe2u\x91\x12\xefl\x0c\xc6v\xc8\xf7\xc3/ \xc3\xadW\xff\x96*X$G\xc6\xedp\x07\n\xda\xfe6B\xf3\x86~03\n\x87\x8cG\xf9\xc3`\xef\x8c\x9c\xed \xc5T\xef3r%\x91>\xb9F\xab\x8f~'\x1d!TP\xdd~E\xb1g\x90r\x97\xa4\xca\xd3+\xe2w\xb5\x82\x96}[G\xf3\xa4\x8a/R\xc6]-\xe2\x19\xc1\x00Q\xdd1\x84\x18]\xfb\x92<+\x92\xeaC\xbc\x94\xd9C\xfd:\xd0G)\x1e\xa2A\xb34!\x99\\\xc1Nt\xb7\xdfL\xcbxh\xd62\xfah\xed\xffm\x80\x91\xe4\x1e\x05\xba\x8a\x82\xa1\xd4\xa7\xf3\xa9\xc4[\xad\xb7A\x8a\xbb\xf9;\x03SY\xfa\xa9!\x8cb\xe6\xef?2\x06Q\\\x0cEP\xd4\x86\xb0[17\xf9'\x86\x00\x8a\x99\xff\xad\x8e#^s\xbe\xb7\x0d\xd8\x1ce\x0d48\x94\x82A\xae\x06CL\xe5\x8f\xe8\"\xc9\xe6~\xb6I\xd3\x90\x7f\x16\xf0X\x1f\x14\x9f1m\xad\xd2\x04\x7f|\xba\xb9\xa8KB\xdf\xce\xd5\xb7\xe4\x13\x99mj\xb4\xd0\x11\x7f\xd3\xc7\x9d\x18\x8fi\xebA\xabB\x13\xf01\xed=\xa4\x15\xdbJd\xe5g\xc82\x85\xb0\xb3\xe1\x87M\x92\xf2f\xae\xa2w\xcf\xde?{}\xf2\xe1\xe4\xfd\xf9\x0f?\xbd\xfa\xf1\xc5\xc9\xfbS\xd3f\x82#Xi_\xd0\x0f.h\x9b\xef\x99\xd4\x84\xed\xaa\x0f\x10r$-X\x9f\xfd\xdd\x90\x17\xaf\xe6\x13Xc\xe2\xfb\xf6\x86\xc0q+<Z\xff[\xba\"\x13e\x1d{\x158\xa0G\xdc\xf1\"\xc1B\x9e\xf2\x05k\xb4\xf2\x03e\xf9\xd0\xbc2qW\xa12\xb6\xda\xa8\xa0\x009 \xach\x16\x82\x01\x03-\xe21\x9e\x10\xeb\x85O\xbc\xa9Wy\x99\xfc\x93\xccy\xc3\xe2\x01.\xd9\x80=\xa4\xb9s\xae\xf0\xfd\xa9L'\xba\x98\x99\xd8\x0b=e\x8e\x9b?'\xfc@\xd3\xb6\x89\xa6\xedNw\xfc|[M\xec\xeaR!\x8a\x98\xef(\xf8\"\xcb\xbdz\x17\xeb\xc7n\n\xf9\xa4\xcd\xd5\xfa\x8aj\xb62N\xda%0\xa8%\xf8\xf1\xda}A\x8fI\xa4Z\x03\x8di\x14\x17\xe2\xb0\xee\xbe\x11\xcd\xe9\x17\xb2{\xaa\xbbxB\x90H$\xfb>-\xc8\xac\xd1\xe2\xf1\xffY\xd8\x17\xfe\x00\x9d\xfc\x98 \xc5\xfe4\x99\x8e\xdao [\x14\xa5\xbd\xcbm\x17o*n\x0d \x84`\x1d(.\xe8y4\x96fe/l\xf4R\xc8\xc3xt\xef{\x83\xbe\xbb\x94\x08WRi\xcf\x02\x88\xd7\x06\xed/\x89Vy\x85\xbe\xba>\xff\xf3\x082\xfc#@ 3I\x80\xbf\x17\xbf\x8e`\xca\xc5\xdcY\x9e\xca\xe8(\xde\x84\x8a\x13^p\x86_^\xc4\x15y\x17\xd7+\xfe\xa9\xfcy\x04T\xba\xb3/\x80\xaa\x03\xc9\xc7\n\xca\x16e\xd3\xde\x80\xd01\xfc\xe9\xfe\x17\x98\xb8l\xadW{\xb2\xf7h\xdbO\x0f\x1fn\xad\x1f{\xb27` \xf4\xef%\x9a\xa9\xbf\xee\x9c\x1bG\x9bdv\x01\x89\xb8I \xd5\xeb\xb8\x18\x08.\x9e\xc3@\x84\xf0d\xc8\x1dX\x1a\x0chu\xbe\x9b![\x83j\xc8W8\x15\xedj\x87$\x82\xa1\x1fj\x9d\x85\x17C\x9e\xc42C\xa86h\xb4\xe0\xe5\x0f\xf6\x86\xdc\x81\x87Y2E\x14\xbd\xf6I@E\xc1\x02\x8d\xb6\xad\xaa\x1a\x11n\xfdP+5\x89x\xeb\xda\x81\x8b8\xda\x87\xda\xb7\"\x8e\xf6Cm\xc3\"\x8e\xf6C\xed2 o\xf0\x87Z\xafm\xe1\x0e\xfeP\xeb\x98\xed\x94\x08A\xb9\x00\x1e<\x80;\xf9\xb5\x98\x98K\x82^.\x12\xf6b\x98\xcdd,\x92g\xf1'\x99\x93\x8b\xcd\xf2GrE(\xe7\x98d\x8b\xdcR_\xde\xfaO-\xael\xac\xe2\x9f\x93\xaa\xce\xcb\x1b\xb3\xd5\x9a(\x8cy\xb07+|s\x1d\xaa\x16\xcc:|.Y:\xdb\x07U\x1dSi\xc46\xd4\xc2\xb5\xbd\xc6\x0c\xc3\xd2\"\xaf\xf8\xa1$d\x82\x9b\xea\xdc,4\xa9\xa5Z\xe5\xd7/\xe8\x02\x9a31\x89\x12\xa7\xa93\x1c\xd8\xd2Q2M\xa5 FY-h\x91&\x17\xafI\xbd\xca\xe7\xd5\xa4\x8b\xab\x9dd0\x14u\x035\x10\xbcu\xdc\x1d\xc6\\\x93RJ\x14\xca\xc1\x04\xfc\x06eI$\xb7w\xbe$5S\x16\xf0\xceE\x05n\xf3\xad\xd6\xe3\x8f\xfa\xd5Wq\xf5~\x93\xc9\xaa\xecg\xbf\xdau\x19\x17\x05\x99\xbfk\xce&\xfaT\x98\xfa\xac\xe3\xc2\x97\xd5X\x1d\xa5\x89@\x84\xe4\x91\xc0\x89\x1a\x13j\xd1\x01\xc7>fD\xd4T\x8c\xe7s\x7fz\x166\x1cp`\xf9\x80\xe3\\\xf3\x11\x7f \xbf\xdb\x14\xf3\xb8&\x1c\xec\xbe\xda\x94\xde\xd2`\xd0\x11\x87\"\xc1\xbcA\x02\x12\xc2\xd4L\xbd.\xc9\xcd\x04<\xa4L\x03h\xc7Y\x03\xbb\xee@\x14\xe4\xef\xe94\x1a\x9a\xc7\x8c\xf5m\x1f\x82z\x9bV\x87Z-1\xbbBc\x17j\x19\xaa\x8c\x8f!\x83\xfb\xb0\x0f\x13\xd8\x0bBd?\xf6\x9fB\x0e\xdfC\xf6\x14\xf2\xdd\xdd\x00\xcai\x8e73\xadK\xb6\xdc\xc1%\x17\xdd\xbfy\x94\x95 J\xf3e\x13\x86Jc\xbd\xa1\x16\xb39\x8b\xc1Fd\xe8\x90a\xcbtE\xca\x8b\xbc\x1a\x8a\x04\xb1\xd5B\xc9v\x99\xf3_{\xd9l\x0d\xc0\xbf\xcf\x82M\xbd)\x06\xce\x84]\xf0\xce(C\x7ff\x8b\xca&\xcaWX\xcb\x86*\x8dYNKx\x05P\x04dAE\\lk\xd4\x827\xb9\x83*\x13Qr\x83\x08\xd0-B\xfa\x99*\xf4\x99\x9ex\x98F\xb8d\xd70h\xf4\xde\xab\x10\xc0\x04t\x04\xda\xc7\xb0m9\xbf\xc9Qk0\xe9G\xc4\xab\xca\xad\xdcu\xb7\\m\x93P[\x14>\xd1\x9d^\x889\xcc\xc5G\xaeHy3\xce\xb1Y-R\x86<\xe2I\x98\x9d\xbe4$\x1bkU\xb1o*\xde\xb7T\xd4tL-K?\x0f\xc1\x988\xb1[0\x16D\x08\xb3\x10\x16!\x14\xe8\x14\xbf\na\x8d\xee\xab7\xf6\xb1\x80n<m\xc3M\xe7\xe8\xed\xa03\xe0,\x85\x01g9\xca\x80S\x94\xb1\x86\x9c\xa2\xdc(X\xc7 J\xc13\xb6wQ06\x83\n\xd8\x10.B8\x0f\xe1:\x84\x93\x10>\x85p\x1a\xc2\xf3\x10.Cx\x16\xc2\xdb\x10\xde\xb9A\xbe[,+\x11o;~\xd0\xadL,V&\xdeje\xbae\xdb\x95\xea\x16\xcch\xdd\xa7A\xf9\xa8\x00\x16C%\x96\xf9r\xb6[\xa4nq\x0fk1T\xec!*l\x85\xa5b\xb8$7x\xd3\xbf\x98.T#\x9a;\x07\xde\xc3\xff,\xe0\xf1\x9d\xd7L\x0f\xe3D\xe3\xd9\xe9\xa3>\xf9\x92\xdc \x0d1%.u-,\xe2\xff\x97o\x93f\xa4\x8f\xbfl@\xe0\x96\x11\xc4V\\\x93H\xd9\n\x9a\x89)\x98\x1b\xa2\xe2m1\x9d\x9f\x85\xa8G[H\xab+\xd5l*\x08Q\x8d\xa6>\xc2\x93\x1dC\xa9\xcc\xf1\xcfu\x88\x87B\xa2\x0dD1\x9b\xe6\xd17\xdf\x94dq\xc6\xb2\x95\xee\xec\x85\xa8=\xdb\xd9gf\xbf\"\xed\x91\xa4\x99\xfb\x0fC\xb4\x0d\xee\xb8\xbe\xd0\x9fU\xf3\xd3\x98 \xd3\xb58\xa7C\xb2\x15J\x1c0\xce\xc5'8\x82\x13\xc4\x1d?\x08\xa2y\x9e91r.Eb\xe4\xe1\x7f\x18m\xc0\xe8&p\x04\x9fD\x10\xf9\xe7p\x04\xf9\xf4\xf4,\xc4\xf8\x95\x0b!\xf7\x9c\x06!\x86\xac\xd4\x9c^\xcf\x83\x10\xdeb\x96\x17\xc4\xb2\x10\x06\xd3\xfa\x8e)\xf1\xd8\x84H\xb6\xf2\xaf\x04\xf5\x9dg\xff\x0d&K\x91^W:\xb2\xf6\x16\xe5\xb6\xd9\xf4\xed\x19\xd2\xb4\x80Y\xb8\xa5d\x19\xd7\xe4\xff$$\x9d\xfb\xa5\xcf\xd8\xd6\"\x08\xc1\xab\xf7\xbc\x10\x0e\x1e\xdd\x05\xcdr\xc9\x81e+\x18x\x9aJ{\xa7,d\x0c=\x83\xef\x1c\x1f\x0e-)\xb8\\\xcb\xbf\n>P\xa0\xbd\xc3\xcc\x06\x19\x8b\xd0\x96a$\xbbw\xff\x0d8K\xe9r\x80\x87\xfb\n\x0b\xf8\x1c%\xbcK\xcc\xddZ\xdc\xc5\xfe8tt\x15\x1c*\x82Q\x89\x9b\xf4\x8b_62\xb8CV\xf0\xf0Ny\\\xc7\xcc\xaaC\xe5\xce&v\x07\x94M\xb2\x91\x87\x98\xb3\x153\x0b\xc6\"c\xde\xc3\x80\xf3\x9e{\x8c\xf7\x8c\xadi\x02m\x85\xc9\x1cw \x9b\xcbq?Ty\xe1\x87\xfb!\xec\\P2s\x12\xf1]\xa4\xfc\xddM\xc05\xb68\xa5Hs)\x9426c>\x0ca\xe7\xfc\xce\x89\xe2\xc3;\xd8\x81\xf0/D\x14Y\xde\xbd\xeb/\x9b\x14[\xc1;\xd86\x92D/\x92,\xa9V\xfe\xc3\xc3;\xc1-\x87D\x89\xb6\xd2\x1b\xd9\xde\x9d\x8c\xec\xf1\x97\x8dl\x1b?sS\x913t\xf4?7\x95\xedp\xf26\x84\xd8\x9e\x98\xd0V\xa6Tj\xa7$\x97\x92\xaf\x87\x8f\x1dB\x1a\x9b\xca\x94\xd2\xbc\x10\xa9\xc8\xc3\xef\xdc\xee\x0e\xba\xc5\x10\x15r\xa8\xdc\xb2\xc4\xf1\x9d\x8b\x83\x9b D\x9b+\x0c\xc9\xcb\xcf\x8d\x82\xeb.\xe6\x8a\xeeBj\xe2\x1f\x852f\xac\xa2\xba\xc8uw\xf8\xdd8mc\xf5\x19\x88\x81[`1\xa5\xd5\x18\x84x\x8d\x1e\x02w\xa1\xae(%\x97\xb4\xa5zb;\x9a<\x1e\xdf\xf9N[\xc2\x11\xac\x85\xc6\xa1\xec\x88m7\xfeR\xbcZ\xf28\xa3K)\xc1\xed\xefo\xb3J\xfb[p\xa4\x02\xdd$l\xb7\xd0En\xc1\x97\xb1\xf1n\xc1`\xcaq\x1el\xc1Pn=\xd0-N>\xb9W\xf7\x1fQ\xe8\xb2\xd4\xd3\x9cA|\x14\xf0\xfd\xbd\xc7\xf6w9\x9a?d\x12\xfa\x16\xfc\xa0\x1c\xd6\x81JO\x0e(\xff\xb7\xa0<\xdfJ\xe1\xffV[\xf2\x7f\xce\x99\xc4\xbb\x85%3\x16c\xa2\xfc\xdd\xd6\xf7}\xe5\x97j\x8b~-Z\xc1\xf8\xb3\xf9\xb8An\xad\xa0\x91\xee\x8c\x9c\xcb9\x18\xcb\x7f9\xe73\xef\x96^\xcfc\xf9+\xd6\xf3\xc8\x93\xe8K\xf8'9\xe2\x91\xfc\x92\x1b\x0e\xdc\x86P\x8e\xe7\x87\xa6\x8fB$(t\xf7\x1e\x8ca\x7f\xa6\x07\xc8\xee\xd0Mu\xe0\xc8\xee8\xb07\x16k\x8a[\x9f\x04}\x03\xe2\x9c\x99\x1d\x96\x81\xcd\x8a\x18\xa4=\xe8\x9bxM&\xc0\xa3.|\xfe<\x14~Q\x94V\xe8Y\x95!\x92\x8f\xfd\xdc2\xfa\xd1Q\x8d\xecVN\x94(\x8d\xb6r\xb2\xd1@\xbbw\x9b(\x8aE\xe4\xaam\x16\xdb1\x1eU\xbc?\x9c\xcc\n\xa4\xf7\xd6\x92\xd4\x82\xd3\xac^\xe6%k\xce\xaf\xd5\x8c\xae\xbf\x0d\xd0U\x83\xec;\x84\xbd4\xec\xecX|\xb72\xd8J\xc9K`\xa1\x0c\xb9\xd2\xfb\xcc-u\xa7Z$\xe8q\xe8\x16\xe0~\x05\xe8. \xc7hno?\x02\xb8\xd6\xf9\xa9Q\x13\"\xd9\x11\xa5\x06>\xb1\x1c\x1f\xaa\xd7n\xcb\x1f`Z\xf3\xfc3_\x11\x14\xef7\xd9\xf3|\x93\x0de\xb0\x1a\x0d\x0buB]\x98\xfbDl\xb0\xaf8)\xde\xd7\x87d\xc8 \x7f\xf4\xb4\xf4K\xdc\xcc\xcbm\x951\xe2\xcf\xb4V\xedeX\xf2\xaa\xaf\x08\x0fA\xe7^es\xf2\xe9W\x03\xc9\x87\xa4\xc0\xe4\xcbj\xe7N0\xf2\xb2\xcd\xfa\x82\x94\x1e\xec4\xbe\xd9p\x0c\xf7\xf7\xc1\x94&\x0d\xee\x04Lt\xb7\xde%t$\xbdkX\x83\xbb\x1f=w@\xd8\x96\xae9\xd8\xc8\xb6\xcc\x92\xc7\x916_C\xd4\xb2\xb3\xb6\xbf\x87\xf2\x9c\xa7TG\x1f\x8c\xa1x\x91_\x08+v\x80}E(\x0d\x03\xa5a\xf1\xda\xe9;\xe8f\xe1y&F\x1e\xach\x8d\xd7\x0b\xec\x1f@\xc6\xbd\xcd\x19Dm\x8bE\x0bf\xd8\x19NY\xa1\x16\xb4\x9b\xd0\x1aqKV\x025\x82\x19sK\xf0\xbb+\x00\xde\xff\xcck\x88!\xcb\xb3\xfb,\x0f0\xf3\x1b\xf3Bp\x19-\xf0!d\x91\xf4\xf1b\xb1\x83\x1b?.1\xf5\xb0\xc5Ys\x1e\xcb'2=\x91\xf0\xd5\xec\xb19\xcd\xf7l\"\xad\xf7\x1fV$s\x82+h\x8cM\xd5\\\x1a\x1a\x88U\xd2\xcd\xca'\\\xed&\x86\xbb]\x7f\xe2\x14\xd0\xf4\xc5\x96E\xb2\xc3\xba\xcc\x15\xdd\xe2\x96\x93D-\xfd\x8c\xc7]\xfc\xb463,\xb0~\x0d\x8e\xbc\x03\x991D\xc3\x06\x97v\xe6\xebvL\x16\xb1\xd2hO\xd1qJP^!\x19\xd5\x19\xe3\x88Z\\\xf5\xae\xc8\xb4\xbf\xdc6xdA$q\xba+\xfesM\xe2)\xe6BW\xc75\xc1\xf0\xbev\x14p\x0c\x1ebY\xe1\xe1\x11\xb3\xc0\x14\xd8\xaet\x81mvp3dJ\xa7\xbf\x02\xb2\xb0\\\xc6\xdb\npV\x84iq[]:\xd5\xc4\x07\xb4\x81\xe8{\xd8\x13!n8U\xfeP&d\x0eu\xce\xf3;C\xdc\xf6\n\x86z\x15\xd7\x90T\xd9\x1fj\xa8W\xa4$;\x9e\x0c\xb7\xd9\x1dFU\xa4 \x95\x18C\xd8\xff\n\x00\xee\x11\xdf\xaf\x05^'>\xb5\xd9c\xfc\xafN\x14\x19''!\x11eN\xb7M]\xb6\x154S\xcd\xac\x95m\xfb\x070\xbe\x81\x06\x8d\xd9\xfe\xe9x\xbb\xda\xdc(\x03~\x890\x0e \xee\xfdkB\xa5\xaa\xe5k\x1c\x07\xaa\xd2h\x0c\xee90\x90\x8d\x97\x18\xa0\xe6p/\xd4\x0bBH\xe1\x04\x15h\xa8\x1c\x93'\x05\x95k\x9eW\xb8\x1f-\x01\xd8\xbf\x00\x1c\xcf7eI\xb2\xad\xa0\xe2\x08\x11!w\xe8\xb4u\xfc\x15\x1f\x04\x7f\xfa\x95tG\xfd\xfeG\xccu\x14\xf5\x89\xf4\x92\xbb\x95\xb6\x9b\x00\xe6\xd7\xb0\xfbU\xe8q\x17\xf4#\x00b\x83\x87:\x97\x99\xda\xc7W\x99\x05')o\x17\x1fn\x8aQ:\x80\x11\x1b[\xd8<|\xa5\x8d\xf8cr1b\xe0\x8e\x83F\xf07a+\xee~\xe0\xe7K\xf25t\x8f\x0d\xcb\x8a\xc9\xf1\xdb\xdc\xeaW\x80\xbf\x12\x14\xe3+\xcc\x86m\x82&\xfc \x9d\xd4\x90\xb8\xb4\xf54\xaa\xadf\xe1\xbe\x07z\x13\xa9\xe8D\xbe\xce\xd9\xc4\x83\x8f\x8c\x99\xc8\x98Y\xf44\xe8\xc6\xc3\x08\xfe\x04>;\xd1\xbf\xc6,gi\x9e\x8d\xa2X\x8e\x93\xfc\xcb\xe9\xdb7<@\x1feMsE6\xfd\x1a\xe7\xab\x88\x8d5b&\xb6\x89H\x97lb\x9f4-\x84 \xce-\x81W\x93\xcc\x97k.\xda\xac( a\xfbH\x14\xd09\xfe\xedW\xc6\x99sM\x19\xc0\xba\xb9\xcf\xb5\x19\xc9\xa0R\xcf\xc9\x11_D\x8ck:h\xf1\xec\x0e\xc2\x06\xed+\x97\xda\xa8\xdc1\xb8v\xb7\x88}i\x8a\xb0\xa6+}\xe9\xe4\xeb\xf6f\x87\x85\x88\x96\xed6\n5\xb6+\x9ekN_\x89\x00b\xf8\x1d\xfba\xfd\xce=\xca\x04\x1b\x8d\xaa\x8a\xf5\x13\x11\x0eI\xa0I\xa3\x9a\x0dB\xf5\x9e\x99\x07\xb3M\xbed\x131]0\xbbV@\x9a\x8c\x11C\xd5\xdfx\xd3\x16\xb6\x1f\xb2\x0c\x1e~\xef\x19Rl\xca8k\xea\xff \xf6\xf7\xb4\xd7\xe5\xd6\x98\xbc\xa2\xb0\xf5\xcb\\\x17O,\x9cT\x99r?P\x99\xf4\xc3\xf7\xfeF\xfepE\xa0$\xf1lE\xe6\x10\xc3*.\xe7\x90&\xeb\xa4\x86|A\xc7\xcbMT\xa0\xdcd\x95g\xa3V\x0eD\xa2DW\xb9>\x87.5\x93zK\x03\x97}&\x92\x08i\x9b\x19oy\x00\xe3\xac\x0f\xc0\x01\x00\x00\xd0_\xfe8M\xfd\xcd\x97\x8e\x0fi\xa0\x88\x97\x13\x82\x0cmfm\xe56p\xcdN\xd0-\xdb\x91\xb4/\xd8\xa9\xbc\xc3Q\x03\xcd:Xv\x04\xa5}\x89\xc4\xb9\x9aE\x1a]\x85o \xab'J\x8e\x0dtu-p\x1f\x1cla\xc7]\xa6\x95\xaa\xd9\x97\x0bPD\x11\x87\xc7P&_]\x89\x99\xf1\xfe\xa8o6\x8e\xd1\xa3\xd4\xe2\x0e\x06Qdh\xb2\x8a\x99 w\\\x08J\xbf\x0e\xd9\xaa\xfe\x98\\\xf8A\x10<\x85\x1d\x9fB\xc0\xaf0\xa9A\xcb\x8c\xff)\x87M\x00\xc4\xaf\xf8\xe5\x87\xf3`\xc6\xdft\x89\x12s\xcbi\n0;\xc5\x11\xe5\x16\x16I\x16\xa7\xe9X\x80\x8d\x071-; %\xd7\x85bL]Hc\xeaQ\x8dm;l\x10\xeer\x01\xb70\xde\x8c\xfa\xdc\xcd\x86\x15\x9ck\xde\xb2;p\xd2G0\xeb\xe7\x12Q\xac\xe2\xb0(\xed+Q\x8ck\xeeO-\x91A\x9d\x8cQEa'\xfe\x04\xfaY\xfeu\xe56p\xb1\xa4\x1d\xb9\xceRTj\x99K\x95cf\xd12!2%\xec\xee\x16\x97\xf8i\xd6\x1a\xd2,\xc0\xf1`\xbc\x1dxo\x90\x8d1&}\xef\xd5\xad\xeel:1J\x07%YT\x13X\x0b4\xd1\xd3sL\xa1<\x81\xe5p\xad&\x05\xd7\x04n,Ue\x04\x9c \\\x88\xaa\xfd\xa9\xb4O 5\x0c\xf9u;By\x93ay\\<\xf8\xc3\x87\x03\xf1\xe0\x87?=x\xfc\xdd\xb6\x9f>\xde:\xa5\xe4\xc1\xf6\x91\xef\xf7\xf7\xb6\xfdt\xff\xbb\xed\x13\x04\xec\x7fIF\xca\xd6+\xa9\x94\xf9\x8d\xe2\xed\xeb\x07\x93\x1b\x95\x98,2LT\x93\x8aY5\xe9\x07\x80\xb5jq\x80Q\x99\xecm\xebV\x9d\xe5Z\x8a\xa1$i\\'W\x04~z\xffc\x08\xd7I\xbd\xca75\xac\xe2\xab$[B\x0c\"\x13E\x84Y\xbe'\xf0\x07\x19\xf4\xf4\x0f\xf2\x1d\x7fZ\xe3S].Bh\xa0\xf8\xa9'\x97\xd6Z\xf5w\x9f2\x89ep\x82^b\x84\x9e \x9f\x0c \xcf\xf3M:\x87,\xaf%DJ\xb2 %\xc9f\x04.\xc8,\xa6X\x93/&\x80\xb3\x16\xb92\x11\xc3:c6\x0d$\x1e\xc4)\x1f!\xe9\x05h\xa3P\xfb\xde\xef=\xb7V7\xc6\xe9 \x9b\xbfwS\xa2\x89o\x8b\xda\x084\xe09\xd5\x98\x9eeA0\xc0\xb1 \xab\x80\x14\x99\x90\xe1U\xa6\x0c\xc2E\xc3 ,{\x8b>\xec\xbfr~\xce\x15\xabz\x1eA\x97\x91\xc6\xca\x10\xf3\x91\xa9C\xe1v\x81\xee\xb8W\xf9\xa4+\xce\xda\xfaKM\xf8\xed\xb6\xd0\x95\xbe\x03!B\xeaWY\x88\xcep\x0c\xbae\xae\x038\x86\x1a&\xd0_\x96:\x80 \xf8\xb4U8\x82W,G\xf8_N\xdf\xbe\xe9\xcf\xdb\xc8O\xf2\xcey\x1b\xb5>U`\x88\xef\xdd@\x90Zq}\xa6\xbd\x85f\x9a7.\x17\x7f\x0f\xfbR5V\xf7\xeb\n\xdc>\xed\xde\xd1\xe91\x1d\xcd\x18\x9b\xac\xe4e\x87\xca\xf6\x89J\x91'YMJNG\xe8\x9e\x87yN*\xacC>%U\x0dI\x06\xf3|\x86\xa1\xa9\xb5\xf9Th\x91\xadh\xce\x14\xcd(\xf9t\xbb\xc9\x16\xf5P\x9e\xe9\x11\xad\x95\xfe\xb21\xf9 \xea\x8c?\xdc\x14\x84\xeb\xfbN>\x15dV\xa3\xaa\x8f}\x14\xc2\x12\xadi\xe9\xbcU\x90\xd1\xc3\xd3\xdbd,\xaf\xcc\xdc\x03\x96|\xe0\xaau\xa3c\x9e\x92\xf7\x80Y(\x92\xe9\xde\x99\xbc!!Q\xb5\xb9\xa8\xea\x12s\xc1\x80\xe7\xc9~\xa6g0\xc1\x0cXHb\x1fx\x01\xd3\x86\xb9a\xdfb\x90~\xeb@\xc3\xd9\x82\x13\x89J\x9b\x8cT\xb3\xb8 >\x91\xc9\x9f\x1e\xfc\xd7\xfe\x83e\x88\xb9\x9d\x94g{\xf8\xec\xbf\xbazP\xd3\xd0\x8a\xc1\xa15\xfdkzg\x1d\xed\xa9\xbd\x7f|\xc0\x1e\xee\xbbv?\x1fdP~\xf6\xeb\xc6\xa4wG\xa3\x95\x11\x9b\x97D\xb3U\\>\xab\xfdZ\xda\x0b\xe9\xe9\n\xcb^\x86\xa6C\xf7u\x1e\xfe\xbc/\x8e_j\xdac\x8a!;\x98\xb9^ \x0e\xfb\xf1{\xfe\x03k\xd0_;t3;M~%\xf8\xcc\x10\xb4:1q\x0d\xf5\x01\xef\xc5K\xcdpsL\xf5\x95\xf3\xc0\x15\x1f\xf0\xda\xb9\x0cA\x1b2Sh\xd2\xec\xa7\x0e\xf4\x01\xc1)\xe01\xdd\x12\x13\x84\x00\xb22q\xe1\x17A\x93@Z\xdb\xda\xad\x9f\x19V#\x86#\xf0\xf1\xee\xc2\xfb\xbe*\xc8l\x1d\x17\xf7);\xf8'/\xa0\xd4\xed\xf7\xd8\x89\x9ep\xd6p\x84\xce\xfc\x1d\xdb\x81\xe9Y\x80i\xcf^\xe43\x0cZ\xea'\x98\xca\xd0\x86B\x1b8\x02\xcf3Q\xffq\x19\xadi[\x1b:|\x84Q\x81\xb7\xaa\xf9t\x83$\x86\xfe\xef\xda\x9c\xd2$n\x92\x18c\xb6\xcf\xfd\xd8h\xe8\xa1\xe3h\x86\xe7\x9eO\x13\xbc\"\xc2\xff\xb9\x93\n\xbf\x7f\x89\xbb\xfbW\xfdu\xe7 \xbd\xdaC\xa3Kr5\x94\x93k=\x94Xk9\x98\xb0K\xa6\x82\xd2~{1\x94X\xeb\x9c%\xba\xd5e\xb3\xbd\x16}jSH\x9d\x88>\xb5\xcd~\x1aL\xf2{:\x94\x13\xeb\xb9\x18\xae\x16J\x97B&\xef\xbfz\xc6\xd3\xea\xbf'\xcb\x93O\x85\xef\xfd\xdd\x9f\xc6\xf7\xffy\xb6;y\xf0\xe0\xf3\x83\x07\x81\x17\x82\x97x\x9a\xef\xder}\xf5\xf3\xe6\x8c\xf5(k\xf7\x9e,\xf0\xf0\xf6\xec2\xb4(x\x03&2M\xe2\xc7,_\x7f\x87\xebGk\x00\xe0\x17\x9c:\x04\xef\x0f\xf2\x1d#\x87\xbd\xe7\x1f\xf8\xa4\x07\x94?\xaf\x8d\x8a(f\xcd\xf1MI\x16\x06K\x0e\xa1\x91\xec\xce\xdf@\xdbE\xc1\x8b\x00\xbc\x86a\xa7\xd2^\x08\xda\x83I\x14\x94\xc8i\xad\xcb(\xa9^\x96\x84\xa47o\xe25\x99\x07~e\x0d\xeeN\xfb\xc2\xb4sJ\xf6#?\x93\x14\xd3~1\xaag\xe2\xda\xc20\x05\xd1\x04\xd6\x9b\xaa\x86\x0b\"Y8\xf0)\x9a\xdc\x7fO\x16\x81\x913U\x0bk\xc5\xe1\xfe\x98\x8f}\x02\x0e\xd9A\x16\x1b\xbc\xa3_\xd9,\xcamW\xa4\x14\x8e\x0b8B\xb1\xdc\xdek\x81\xa1\xb7\xf7\x1c\"E`\xd8\xee)\xf3\x9b\xb5en\xa3\xe5\xca\xf1\xbe\xca\xed\x02\x85\xb6\x96\xd2\xae\x0b8\x86\xdc/BH\xa9 gL.+\xca\xb8\xdb\x01\x8e, =-\xec\xb5A\x15X\xe6v\x88\xc0\x18\xd4\x01\x8e>\x0c%\xae\xdc>p\xc5!\xd0\x1f\xc8\xad\xd7V$[6\x91\xc7\xac\x9d\xdd8\"\x03\x12\x90\x95?\x0f\xe1*\x84\n\xcd\xbb\x1c\x16\x029\xa1M\x9aR\xb6\xeb\n\x8e\xc1\xbfA\x91y.\xfc\x07\x19\x9f\xe8/\x05u\xf1o\x02\xc62/9\xd1\x1dV\x93q\x99\xf6_\x06%\\)\n\x8c\xc6\x88\x80\xee\xa9%OhD\xe9(Bh\xe3_\x850\x0f\x82\x88+\xad\xe0\x18\x96\xf2\xef ,\xbb&]N[\x0ddl\xa3\x11\xbb\x0d\xb6\x00/\x8c\x051l\x01f\x18 j\xb0o@\xe0j\xa4\xa5\xc6\xc5\x98\xd3\xa9\xe9\xa9\xa2\xdeZ\xe7W\x84\n3\xb0t\xc8\xfaE\xf7\xefEK\x1b$\xa4\xe4\n\xd3\xdf\xb8-\xc77\x1c\xae\xd6\xca\xb63\x0b\x84\xc6\x89\xee\xca+\x14R\xd3f\x96\x17\xa12N\x91\x1b\xd0\x9acT\x14\xb9\x94W\xd6\xea\xb7\x81\x03\xe8\xdc\xce+\x10\xc4l\x9c\xc5\xb6Z\x84\xfa@\xab\x005\x15iST\xc4\xf5**\xc9|3#\xfe\xd6C\x00\xf52\x96ytNk\xbc:\x9d\xd6nA\xa2h\xc1\x8c\xfd\xee\xfb\x08F$\xa55\x15>hU7\xcc\x9d\xe4\xb9\xb2$S\xb5'\x7f:\x82=\xd4U\xec\x85\xcdmn\xe0\xd7AG\x1cv\xf2\xa4\xd3\x15q\xb1\xe3\xd7\xd3\xcc\xe1\xb2\xbf[\x86\xe2\xf2\xe8\xca\xad_\x8f1\xb7\xb9\xf5K\xe1\xa5q\xd1\x88\xe4\x17\xd6o\xed7\x12\xdd\"p\xc9\xc6\xb5\x81\x95\x011\xbf5\\\xf8\xf7\x9ejd\xb0W\\\x80T$\xbc\xd7&23\xcfg\xcf\xe3\xd9\x8aL\xe0\x9d\x1e\xb5\xe3\x8b*O75I\x167\x13\xc8\xf5uf)\x89K\xde\x8c\x9b\xd2\x85\xf33;\\\xf1;')\xa9 \xbb\x8a\x98t\xf1\xf7\xdd6\x91-\x94\x16\xcd 6\xa8x\xf4\x93TE\xf0 \xbc\xd5W\xba.\xe3\x82\xd7H\xf45\x96\xa4F2n0\xbfG\xdd\xf7\x04b\xfd[\xf2\xa9.\xe3Y\xfd\xb2\xcc\xd7\xd8\xc8F_M\xde\x06\xb9.\x87r\x19x\xce\xee\x920\x81\xec0\x88W$\x9e\xa3\xa1\x87}\xd3<\x9b\xcdHQO\xc0\x8b\x8b\"Mfh\x8f\xf3\xe0\xe7*\xcfBP\x9f\xdc\xc4\xeb\xd4\x1b\xde/\xc3\xf47\xcd\xe3\xf9)\xdaF\xef\x98\xe3\xaf\xdd:\xdf\x0c\x8a\"\xe8^\x84G\xf6\x80\x91\xce\xb6-_K\x02_\xc5\x0b\xf2c\x1e\xcf\x07=\xb4F\xe1-\xc7\x19#\x0fH\x97\xe1\x1dcF?\xe4\xe8\xa42\x81\x99\xbe\xaa\xb8\x1f\xf9\x8b\xfa\xc9%\xc9&\xb0\xe8\xd3\xa5\xa0k\xb9\xc3\xa7\x08G\xf0\xaa\xaf\x8a\xfc\xd9\xaa4\x17*V\xa2^\x0f\x10\xf5z\xa0cp\xd0\xeeD5J\xa9{\xe6FcMZ\x1enm\x0ds\xf0\xed\xf6\x9f>\xfa\x02C\x1a\xf5\xcd\xaf\xa0Z.\xad\xeb \xdb\x1a\xec\xc0\xb0\xd1\x0e\xe8\x8fI\x93\xc29\x17\n\\3\xba\xf6\x87\xc1\x14\x95h\x12\xa7Q!\x99\xb5\x94 ^1\xe8\xa7\x85lv\x1c\xadI\x1dS\xa4\xe6\x7f\xb24\\6\xe5\xe6f\x1b\xe5f\xdeUnn\xacZ\nf\xd0\xd4Isk\xfb\x08T\x0dl\xfb\x16\x1a!\xd8\xe813\x88i\x9b&\xc3$\xb5\x08;\x8fH\x88\xabL\xb1m\x89\x003\xf8Vhn],\xdag\x98\xee\x04\xb7\xc3\xf0X7[\xf0.\x80\x1d`B,8\x82Y\xcf\xfe\xa2[\xa8x\xcd\xf8\x1d\xfc\xc0\xdfca\xd89\xfb\xf4\xcbm\x08\xb3 \x88\x10\xd6n:\xd7i\"\xe5\xe8M\x08\xbf\xdc\x062c6\xe9\xf8\xa78\nb\x887I;\xc4\x97\xfd+\xe0_624\xe5\xb8\xed\xb8A\x0b.\xa4\xa3\x8b\x81\xa0W]\x13\x89\x94`\xfeqH2h#*\x8b\xbdT\xb9\xe0)(\xe6\x1d\x1d\\\xb5\x9bU;\x9b\x18'\xd1\x9a\x94K\xf2\x82\x90\x82\xae\x98E`\xba\xb5\xc5n\xe2\xad.\x98\xac\xdci|\x16\x04!\xcc\x18]\xa2\x84J\xd6\xe2\xba\x9b\xa9D\x96M\x08\x1eV\xf3\x02\xfaM\x9fG\x10\xc5Y\xd6i=\xc1XTc\x0eu\xeb\x19\xd9z%e\xf7\xdf\xc8\xd8T\xfd\xf5+\x1c\xd8\xf9\xd0\xadl\xd2\\\x90\x8e?&\x1b\x9b\xf0Qgei9+{\xd9\xd6q\x1d\xec^\x82\xe2\xbc\xec8\xa6O\xcf\xec\xea\x9d\xfe\x1d\xa2E\x1c\xe9wC\xa9q\xd2\xb1]+\xa3\xaa \xb3\x10\xaa\xa1})e\x90\xfey\xe2@\x84\xdd\xb4}\x9bi}\xa6,h\x19\xc9\xa5{\x1d\xcf\xca\xdcO\xed\xa4e\x94.E\xe0]\xe3\x87j\x0bR\x03\x0d$\xf2\x0e9\x1dv\xec\x18P\xb4\x04\xea\x8a\x88s/\x0bac\x10\xb3\xb4O%!\xd64d5\\\xfdoJ\xf6oB\xc9\x9a\xa4\xcd\xa3(\x99i/\xd0\xd1\xc6z\x1aa\xda\x08\xd2\xb1qC\xd9\x122d\x06NK<\xdd\xb4w\xf4:\x9f\x93T\xc0\x9d\xedjZ\xc7\x80\xeaN\xbbY\xe5\xed\xed\xbbx\x14\xe3>~\xaf\xc5\xff\x8f\xef5\xfd`\xcc.*\xd2T@\xdf\xf3l\x95\xa4\xf3\x92d\x13]\x8cq\x16e\xb0v3BM\x86l\x95\xe4\xe1&b\"\xca`\x0b$*\xca\xbc\xce\xff\xca\x9fgp\x8c\xbbe\xd3\xde-\x99R\xab\x89P\x8a\xc6\xc4W\xec\x99\xbf\xa7\x04\x8c\x08|\x12\x89\x99i\x94\xcb\xc6\xd3T\xb5\x84e_Ok\xc3\xa5V\xab\n\x1cAB\x913\x13\xa3\xd1\xba\x19t=\xf9~u\xc2\x19\x0fY\xfcm\xf8\xcbC\xdd\xcbJ\x98\xd7i-\xe8RA\x90\xb5\x0d\xcfTM\x91 \xf2\xae\x17i\x9d\xb4\xf6\xcc\xb0M\x86o-\xf3\x9cR\xc1\xdc7\x9a\xba\x81\x8d\xe8t\x1c\xc9I\x08S\xf3hd\\\xac\x11\x81\x89\\\xb8\xb9\xabnP\xf5\xb8$\x19\xc6\xc2\xda\xb1\xa5\x1bB\x1b\x13[\xfb\xa0\x08\xc5dJ\xd4t\x03v\xd5\x08p\xa3\xe3L\xee\x00;K\x17O\xcb38\x86\xc4\xa7\x7f\x0821a\x8fq\xbd\xe8\x83\xc1V\xb8\xe7u\xe2\xcb\x85f\xcdl\xd2t@\x91\xae_\x7f{\xc0\xa9;\x8e;G\x17\xc5\x97\xb1;\xa7g\x81\xd6\x19FL\xccE\xed$\xd9\x04\x19\x15\x92\x81$S\xd3,*\x7fS\x9ei\xef)\xe4\xf0}c\x87~\xef\x1e\xf8\x0c\x03\xf2\xb3\x10|D\xb8\x86lN\xcb\xb3\xe0)\xe4\xbb\xbb\x01\x0b\x911--\xd7\xfbb\x1a\x18\xe0E\xa1\xd7_eu\xd8\x8e\x18\xb3F\x0e\xdb\xaeu\x03A\x945\x82cfi4Q\x9f\x1e\x888\xc9Hu\xd0\xafE\x11\x1cu6\x0dN\xfb\x12Ui\x8dA\xa8\x05\x0f@\xdd\xc9#6\xa4\x98j9\xcd\xd0\xa8\x9eE\x8e-Y\xfe\x85\x1c\xad\xd4\xd0\xe8?\x04\xfalxg*\xc4w\xf4V4\xfa\xb7\x9b\x99\xf7\xd9X\x06o\xf8\xd6\xe5p\xc0\xf1\xf9\xdf\x8b5T\x7f\xfd\n\xdc\x84\x10\xc3\x1e\x0e\x89aZnB\xf0!\xfbZ\x8b{\xc1\x88\xeck\xe5;\xc9\x89<2q\"\x99\xff\xed\x00\xf6\x0cr\"W<\x03Y\x87\x99\x94\xa2\x1bKs\xab\xf2*\x03\x9b\x1a\xb7%f\x0b\x9e\x85\xb0\x08\xa1\x08a\x1e\xc2\nMF\xd7h\xbdv\x03G\x10\x97Kt5T2m\x1d\xa0uYc@!\xabL\x0f\xe8!\xda\xfaI\xf9v\xfdn\x97Z\x141\xf6\xeb\xd29\xf2\x14\x9e.O\x9f\x06P]'L>\x14\xd9, \x86\xce\xb1\xd11LW\xe8\x90\xd5S(\xce\xe1\x08nx\\\x99\x93\xacNJ\xf2\xa1$\x84\xa5\x18\xbe\x11\x86\xf5,\xb50\xad\xf6\x8f\x0d\xa9\xeaWYM\xca\x19)\xea\xbcd\xc9\x86\xe9\x9b\xaa\xc8\xb3\x8a\xb4^\x15\xf8\xaa\xad\xe7b\xd9Jo4\xb22\xcbGl'\xd2\x80\xa10\xea\xd5\x8b\xa4\x9a\x95\xc9:\xc9X~\xbe\xcc\x8d{\x92\xa6~\x06+\x90n\xe9O\xd9x\x83\xdf-\x1a\x98L`\xe1\xf6m\x1bh\x13(\xdc>\xebCu\x02s\xeb\x97\xb7!\xda\xce3\xf6[\xa6\xbe9\xbd\x8e\x97KR\x06\x0e!\xf3\xa0 {h\xadKe\xb15\x86\xf2d\x8aY\"\xb2\xac~\x1bv%\x8cN\xea\x0d*\x8c\xael\x863\xa2\xb0\xe1\xac\xdd\xc0\xd6\xcf\x80\xe1\x1a\xad\xab\xbaL\n\x11\x85\x14\xedl\x06\xadcD\xb1^\x12\xe1&\xfe\xd6y\x13/\x99\xe3/\xc9\xea\x10vJJ\xc2\xda\n|\xe6\xdb\x99\xa9\xcc\xe7\x12\xc1\xcfW]\x91\xf8\x97|Y2\xf4\xd6C\x16\x9f\xaeQ|Qn\x8a\xda\xf7X\x87^\x08K\x97\x19X2\xad\x8e\xc9\xac*\xb5\x18\x96L\xaaF\xc6\x960VI\xebb\xd8\x9f\x8a\xb8\xa5\x93j\x8b\x81\xc3F\x0e\x0d\x93\xb0p\xb9X\x9e\x14V\x9d\x99\x1f\x8ce\xaa\xfe\xbdX#\xfd`\xf2A&@s2\xef\x19O\xe6\xbd\xf6\xc9\xbcg:\x99{kjSE1\x0b\xe97\xf1z\xc0+\x809d\xaf1\n\xbb\xb9\x16\xc6\xe2\x8d(Yf\xe1\xb2\x0c\xb9\x9a\x9dG\x08|\x94\x89\x1eV\xfbFX\xed\xb7a\xb5?\xc4\xc5\x80\x8a\xdb\xe4\x13\x99mj\x16rZa\xcf\x86\x891#\xc2\x04I\x8ay\xc7\x86]\x1aDB\xf0\xfa\xe7\xae\x87O{G*}\xbc\xa9H\xf9\x92\xd4\xb3\x95g\x8d\xc1&V\xd4\xca0\xb0%\x9d@9\\M\x0d\xcaeI)\xac,\xffP\xa8\xb4\xdb\x10\x12\x831\xb7\xf5\xd6\xde\xac\x1f6\xed\xb6\x9a\x1d\x1d\x94\xe6k\xbb\xe4*\xd9\x0b\xfd\xdbF\xcd\xc1\x03\n\x1c\x03\x95\xd4\x0d\xa0\xcd\xb1-\xbe\xcc\x1f\xe2\xa5\xbeV\xd2n3\x87c\xf0\xf87\x1e\x18\xcd\xa4c\x96\xec\xe7\xe0m\x03\xe4\xe7\xf9\xba\x88\xeb\xe4\"I\x93\xfa\xe6u>7\xec\xe2\x8d\xc1\xdb\x96\x96\x05\xbe3\x92\x12\xc6\xaf\x90x\xb6\x92\xdd\x06\xf4\xa8\xb0s\xfa\x8d\xb6\xdbNb\x18\xd8l$&\xc5Z\x12\xc7\xf4[\xdaO\xa3:^Vp\x0c3\xfeg\x00\x13\x98&gc\xcd\xc0[\xce\xb4G\xaa3\xad]\xbb\x8a1\x1cX`\x1c\xfc\x8f\xddF\x0c~\x06\\\x97\xcd\x00\x9e\x17\xaf\xe6\x81\x9f\xe2\xfd_n\xdb\xf0\xa2\x0c\xa3\xc6\x04bk+:W\xedn)PDv\x1b\x11\xe7\x98\xed\x8d\xc2\x18\xba%\x8a\xa0_\x86\xfd\xd2-\x12q\x9c\xfd\xd9Z\xe4\xccL\xdeE\xb1\xf9wQ\x8c\xdaLgg\x01\xd0\x7fwwCH\xa6\x9e\x07\xbb0\x83]|D\xf1\xa5\x18n\x83\xa9\xa9\x9b\xb0D\xf4\xecK\xb0M\xfb\x8aP\xcc\xa4\xa2)\xed\x8a\xa2\xa4C\x04a\xacz\x04s\x16\x8a|\xfcp\x81wK\xe5^:L{m\xeeyA+\xb7:\x9c\xd3\xde\xcc\x89\x9bAQ\xe2\xb31\x17\xc6\xba\x06\x06Z\x7f\xa9\xd66;\xfb\xcaj\xb0\x10\xea\xa8\"\xe9\xc2\xe0'\xac\xde\xb2\x1d\xf6-\x10\xd6\xf1%9aL\x0c\x1cQ\xb2\xc1\x1e=+\x92\xeaC\xbc\x94\xb4\xa1\x92\x7f5\x95\x9d\xf4Vw\xc0\xb2\xea\xf7\x1dj\xce\xd4\xe1\x1b\x9d\xf63^\xb3hMh\x80\x1a\xd9h\xe2v\x07*t8?s\xad\xd9\x85Ic`\xa2\xb5\xa5\xe1@\x96w29$\x99\xe9>KVJh\xa5r\x9a\x9f\x0d*\x9c$\x81\xab\xb47\xf4\xc0x\xb5l\x9a\x9f\x05\xd8Xs\xf8V,,\x8d\xb9i\xceMO\xf0\xebi\xa2W\xf2\x9b\xf9\x0e}\xc3q\x91T\xba`\x81=\x1b\x0d=\xe6\xffK\"\xfaV \xf8\x8f\xd9\x03nK\xd9\x9e*=K\xfa\x84Q(\xf6\xbf\xd5\x9a T\\u\xdf\x7f\x93\xda\xb0\x02\x9a%\xd1\xbalj\xd6z6\xc6}\xa5g\x89\xca\xb4\x12:\xd7CMW\x0b\x16.\x8d\x1d\x1a\xfa~\xba\xf03:\x17*\x88\xa9\x13\xdf\x9a\xa5\x19w\x07\xf6\xe4` \xce\xf1\x7f\x86\xa6\xe7\x0b\x85O\x85\xd14\x1f\n>\x89*2\xdb\x94I\x9d\x90*\x04\"\xee*0JPV\x7f\xb8)\x08{\xca\x14\x08\xcac\xc3I\xc3\xa4\xaej\xb6\"&\xd9\x8c\x89\x9c\x9a;\x11m\xed\x8a\xd7\xee\xdf\x93h\xab\xcf\x98\xdc\xcd\"\x19\xfcT\x1ax\xf2\x05\xd6\x92\xea\x0f}\xa5\x82\x81\x87\x0f\xf4\x87|~\x13\xa2\xb6\xb8\xbc\"\xa5a\xf2s\xaeP\xa6U\xfe\x1a\x97I|\x91\x12\x83S\xed\n\xab\xae\xea\xdapE\xb1\xe4R\xaeP\x93\xe8k\xdd\xb4k\xfd\xb0I\xd2\xb9\xb1\xb2\x08\xe2\xf5)J\xaa\xb7\xcfN\x0f\x03\xbf\xd6\x1c\x147\xe8\xaeO\x1b~\x0b\xc7p.\xef!\x95\x88\xe8\x86 \x83\xef\x8c\xc4bS\xa6\x13cd\xa3YI\xe6$\xab\x938\xad&\x80Z\xf6Ut\x9d\xd4\xab\xe7\xcds8\x06/\xc9f\xe9fN0\x0ca\x15\xaf\xc9}\x16C\xcc\xd0h\xe3\x08l85gy~\x89q\xdeuF\x84\xfd\xf9\xc5\xa8\xfd\x7f\xa7A[z\xb4\x07!T\xb2B\x0fS\xe1\x08*\xca\xf4\xf3\x1a\x12\xed(=7\x80\xf2\x83\\\xaa%\xa9%\x91}\x1f_\x07CQew>\xa8\x91U\x9f\xfb^\xc3\xa4P\x89'\xc3\xd0\xb1Y^\xc3\"\xdfds\x9d\xab\x10\xed\xfb5F\x9e\x94\xd4C\x0f\xbeWmm\xd3k8\x86_na\x02\xaf\xf5\xd5\x7f\xc66\x87t1o\xb0\x86\x10\xd7\xf5\xf3{\x17m\xca\x14v\x8f\x8c\xa6\xa1\x83\xaa\x01F\x93\xcc\x01\x03$\xcd0\xdeT\xb2\x8dm\xbcU\xec\xec{c\x18\x9dF'\xf1\xc6pdr\x1d\xc4\xcf}\xcc\x0cB\xd8\xc9\xa4\xa5\x8d\x88(\x10ql\x0e\xe1]\x1fr\x12joBx\xc7\xd7\x80\xa2\x17J\xc1?\x07Q\x9d\xffT\x14\xa4|\x1eW\xc4\xc7\xa08G\xb0d\xca%=~\xbc\x97*\xfej\xfa\xe6\xccT\xb3\xe4\xd8\xce7b\x14\xa3\xbb=e\xa7\x0ch\xf7\x02\x8e\xe0\x99\xe2\xa9u\xea\xbfR\xc8_\x104\xcf\xdf\xb7\x9ek\x9a{1B+'4\x8a7S\x12%\xd9\x80-ai\x89\xb3\x85\xaa\xbd\x8b|~\xe3\xc9\x18\xb2\x8ca@\xbc\x8b\xd5\xbf\xa3\xc6h_Z\xb4-;\x11\xb5\xd0:\x8a}\x94\xc5k\xfck9e\x7f\x9fQn\xce\xf0>\xc1M\x1e\xb10\xadX\x19&p\xe9\xb3\xbfCx\x11tn;D\xc2\x96\xeb\xb8\xcc|\xef\x9d\x80+\x8f\xd4\xcf\x9a\xc6p\xfdI\x05\xf1\xfa\"Yn\xf2M%\x83\xdb\xd7+\x02<\n3\xee=X\xc5\x15\xac\xf3\x92\xbe\x893\xc83\xd2(\xfa1;\x00~\x91!\xee\xf7z\x88\xb39\xbe.\xe2\xaa\"\xf3\xfbI\xa6|\x8b\xba\x8d\n\xe6 \x8b#\xc6\xfa\x848\x83?$\xd9\x1f\xd8\xdb\xc8\x0bB\x11\\\xebh8\xf6bG\xd5%u\xeb\x8a8\x86\x91\xb9\x1bsCy\xf2\x85\xbd\n\x8cCHJ2\xa7\xbfvH\x84\xb7\xe2'\xeb\xa2\xbe\xf9+3\xf9nH2\xf7\xe2|/>h&\xd8\x06\x06\x856\x9dgQ\xe6W\xc9\x9chI\xb5:\x99\xb7]L\xf3\x98;\xa8@E\x8ev\xf5M\x81\x88\xa2\xd1@\x976\xaf\x0d\xe0[@I\xa3:\x90.\xdf\xcdK\x03d\xa02\x058M\xb48\xec\x85;\xb6vqA\x84\x97\x8c+\x1c\x91!\x041\x18\x15s\x80l\xf2\xbd{\x90Y\xb4\xce%\xf9\x871\x0e\x8d(rl\xd6@h\"3\xc1p-E\xa9\xfcj\xb8\xa6\xcdz\xc4\xd9\x9c\\\xa7f\xa6\xa4\xf1\xc7\xbe\xa9\xc3/\xcc*@\x0f6u\xe8N\x9d\xa0\x9d\xf1;\xcem\xd2\x9e\xae\x9b\x9e~\x0c\xe1]\xc0\x83\xef\x9ct\x1e\x07\xe2\xcc\xc3M\xda\xb6\x80\x97\xe7a`\xf1\xbd\xa43\xfc\xa9\x9f\x8aM\xf9~l\x98/q\x9c\xc8&\x8c\xde\x18\xa0J\x96\xbb\xe0cP\xfb{\xc8\xdeb\x18\xec&goE\xca\x04M\x8b\x06l\xceoC\xfa\x99\xbe\xa7\xe6\x10~\x8ec\x82#\xf8\xa9\xbf6\xfd\x13\x9c\x0d\xee\x9d\n\xe8>\xc3\xc1\x02#\xa17\xf6\xab\xec\x7foHy\xf3\xb6|\x99\x97\xeb\xc0\x7f\x17\x84\xf0\xeew\xed>Z?m\xf7\xac\xcama#\xb20\xb9\x97\x9e\x80ng\xbbMV\x06)/\xdbo\x14K\xa7\x1b\xc5\\\x11\x02\xcd\xb5\x12'A\x15\xa4\xbc\xec$TB+\x99!\x12\xffXp\xe6\x03\x86{\x15\xdf\x02J\x92\xb6:\x84\xa9\x87<\x9e\x87\xf7\x85~\xc9\x82\xd3Rv\xf1\xc7\xfc\xbaa\x17=6\xb0\xca;\x0bD\x9c\xb7\x81f\x1cj75\xcc\x03N1n\xbb\xf9\xfd\x8c\xc7\xd94sj9\xc5fDi\x97,\xae\x14\x91\n*\xc6\x8dL\x85*\xcd@6\xa59*\xdb\xd0\x0d_!c\xe9\xe5\x01\xfc \xee#\xcf\xe6\xa7\xec&\x86\xce\xb2\x9a\xaaUL>\x93;io\xba\xb2\xa1j\xbawF\xc7'\xda\xdb;\x0b(1\x14\x8dz\xbfxM\xcfn3o9zL\xcf\x98\x87\xc7\x83_\xfc\xe9\xdfo\xcfv\x83\xdb\x07K\xd5\xcf\xe3)\x0bs\x81\x862> \x9e\x06T\xb6\xd8T+\xbf\x9c\xee\x9f\xd9}6\x0d*`?\xdd\xe6f~\x16]\x89\xfd\x85\xbcq\xf3sJ\xac\x97\xa1b\xc2\xed\xaf\x86\x8fo\xe0\xc4g\xc3\xef\xf3\xa5\x0d\x9b\xfd\xb3\xb2\x13\xc9\xfd\x17\x99\x1c\xe6\xd6\x0b\xc1[\xda\x02\x81\xd0\xa5O\xa5\x97j9\xe8\xccd\xba\xdb\xd4\xf7\xd0\xb5\xc6\xb2m\xac;\xb9\x1c\xb1\x85\xcd\xae\xef\xc2\xe2\xcb\xd6 ]\xca\x95<\xb6\x19\x93l\x8b\xdfPj\xbe\xa9-\xdf\xd0\x13\xe6\x9d\xcf\x1dLgy\x8a\xb4\xf4\x9d_\xb6\x1f\xd8F\x9b\xe0\xbe[\xe5\x15z\x1e\x96\xf8\xd7\xf0\x17\xcc\x85\x8e\x92s\x14T\x1c\xfap\xc9\xac\xcb\xf1E\x84O\xf3\xe97H\x9e\x138\x86\x9cb\xf4\xe4\x01\xe6\xd4\xf0\x13\xd8\x85\x18\x9d\xf0\x82\xe9F\xf5\x00\x84c\xd8\xb4\\\x99`b\xc8\xbaz\xeb\xa7!hr\xb2\xdf\xfa\xe8\x9bk\xa7\x15\xe3x\x8a!=8H\x8e\xc2\x85\x0b\xc8\xdb\xc7z)R\xb2XX\x8c.j\xe5\x03\xa8E\x97\xb7}oT\xf3 T\x98\xf4K\xfc`;\x0e\xfd\xad\x8cma\xf4/\x8a!1\xc3\xcd\xa4\x83\x9b\xab\xba.\x06p\x87\x19\xf4\n\xdcL\xe4_C\xf8\x96\xe27\"\xb0\xbb\xad\xf6\xcc\x82\x99]\xac\x9caz\x17<E\x8fY\x9e\x17\x81\x95\x15\xec\xb2\x88\xf9i0\x9du\xb0r\xd6\xc5\xca\xbe\xc1\xcfm7\xac\xe2\xbf\x8e9\xc8\xe3\xad\x9d\xae\xbf\xd5:B\xa5C\xce\xdc\xb3&DF\xd7\x06\x85\xf4MJ,wc\xe6{\x15\xb6/\x17\xe6k\x9f\xd2\xb2\xb9s\xb7\xcb\xb5\xc4A\xa6H\xad\xf2\xc4\xcc\xe9\x16h\xc1%\x04y\x8f\xa7\xad\xb5\x92\x86\x80\xaa\xc5\xf0\x94oE\xf0\x10&\xf4\x0f:w\xfa\xbf2G\xfaS\xcc\x85\xfe\xcd\xc6\xcc\x9e6\x91\x94({/\xc6`\xe4\xdf\xafD(\x05$\x0f2\x8b\xa0F3@w\x1b2\xae;x\x1c`\xba+&\x0c\xa6d\x19\xcfn^\xcd_\x96\xf9\x9an\xf6\xd78\x9c\xc0OBHM)\xb0\xd6p\x04o\xa3\x8bM\x92\xce\xdf\xb3K\x1c\xbf\xab\xd8\xd0\x8e\x97\xa9X\x0cd\xb6m\x9b\xac\xaf\xa3\x9a:\x1b/\x16\x04\xd8\x8c\x9eNt\x95t\x81\xd6oCX\x0dxb\xac\xa3\x8b|~\x83\xe0\xa3\xb3-\x9a\xd9\xb27R\x0c\x9b\xf7\xde\xb0h\xde\xbc\x81\x9e\x83\xa1\xa8\x14\xc2\x95\xbf\xee\x100JbT@\x0b\xc31J\x9b\x7f*S\xbd\xa9\xc5\x02\xf7\xbfOI\xc0#\xda,\xf3\xa6\xd4 Q!h\x8c\x96\x02\xcd\xc5[\xad\x8f\xe7\xaa\xe9d\xff\x90\xf7\xb2\xa7\xedE\xe4\xa1\xfaV\x9b\xd9i\x8d6\x08\xdfi\xde\xb0,Tk\xcd\x1b\x91\x81J\x9f\xb4Id\xa0\xfaV\xeb$z.\xdejs[\x89,T\x8f\xb4TWd\xa1z\xa4\x85\xc8'\xa3\x0d\xcb\xa9\x95\xde\x82\xdd\xde\xc4\xc9\xdc\xe49G\xaf\x9b\x06\xbd\x9a\xab\xcb7y\xfd2\xdfd\xf3\xbb\xcc3\xa5\xa6\x9f\x1f\x9fg\xea\xb2\x05\x98\x01\x85\xa0\x90Q\xa3E\x92\xd6\xa4t\x88\xe6\xd2\xfa\n\x99\xec~\x10aQt\xa3\xed\x0f\xf6\x99\xd3*\x8a\x93\xd3\xe4\xd3\xa2\x0b\xf164\x87\x9a\xdd\xa6!q\x11\x7f\xd3\xd6)\xf7\xc1~\x8a\xbb,0OO?\x14\xa1a\x9d\x1a\xf4\xaa\x8a\xd6PQ\xe9\xd6c\xf5\x01\xdd\xef\xa7Dg\xec?x\xcdD\x0b\xcf\xed@?\x9f\x96\x031SM\x8azJ\xa2\\\x96\xf9\xad\xddbK\xa5\xc8ZK\xac~\xab\xef\x9c\x90Gj\xb1\x8fAI\x13\xfa\xf1o\x98\x12\xd43\xe6\x92\xda\xd6\xf2\xeb\xf1\xd6\x81\xae\x0f\x86l\xc6,\x9fn\xdd\xe9\x93\xc3\x81\x0c\xf7VC5\xf5\xcdW\x11\x05\xc4\xd5\xa7\x0ek\xe8 ?N&.\xc9?\xf4\xec\x0bH\xd6{ RL-x\x0d'\x94g\x97\x1aw>>\xc9\xae\x99+\x96\xf6\x89\xf0\x1b\x17&\xc6\xf2\xbfy\xf80E\xdd\xc4n\x98e\x8di&i\xa2\xe6nU\x03\x82\x7flH\xf9\x95V\xc86{ &\xb3\x8e\xbd\x8ep|\x08\x03\xf6\x17\x87\xc0\xce>w{\xbbw\x0f\xbc\x8b<OI\x9c11\xbb\x94w\xd4\x18\xdb\xc7[\xc4iE\xbc \x94\x8er\xf7\xee\xc1\xd4\xcb6\xeb\x0b\x82\x1e\x8cIV\x93%)\xbd3\xa9\xaff-(\xcarlg\x0f\x8d\x03\x021\x90i)\x01m&\xdf\xb3<M \xc2\xf5e^\xae\xe3z\x82yg\xdb\xcf\xccP\xe2{N\x9f\xaf\xcat\xca\n?\x9c\xb2kD\xd0QS\x0eF\xe5\xb9\x12\x81Np\x8ef\xbd\x9b\x80\x05\x9a\xf3+?\xf8\"5Oz\x83929\xeb\xeb\xe2\xf1\xf5\x1e\x15\x98\xc8\xeb_\x10gk4\x94:b\xff\xcb\x83\x8ci\xd6Ki\x9bq\xeb\x85@\xb2Y>'?\xbd\x7f\xf5<_\x17yF\xb2\xda\xcf4\xbe\xa7:\xcb\xea\xbc\\\xbf\x88\xeb\xf8_\x12\x00~\xc64\xc1=\x0b\x16F\xa5\xe8\xd8\x11<\xf8\x87D\x13\xfa\xcbiC\x89-a\x1ee\xa7\xe3I\x7f,\xe6o]\xb6\xab\x1ei\x1d\xfc\x05\xfe\x93\x03\x0d\xa8\xbf\xee\x9c\xc5\xe8\xcb\xf9\xf9\x90\x12P\xc4`\xd2\x8a\xc8B-\xf9\xed\xe3q\x81r\xff\x05\x08\x8e\xb9bC\xa9\xcdu\x10*QU\xdf\xa4\x03\x95P/K\xd14\x1d\xf6\xae\xe9\xabr\x86%\x18\x8c_g\x1b!8moZp\x16\x13HP?_%\xeb\x82\"\xd4\xe0\x17|J\x13\xd8\xd0ol\x990X6\xa0 \xec\xec\x1b\xab\x99$\xcb!\xfa\x9f\x0b\xd2\xaf\x0bL\xf2\x1f\xc9\x98\x99\x19\xb06K5\xcc\x88l\xfa\x91\x0e\xbcM\xc6mF=n\xdb\xa5\x04+\xd2\x99\xb6\x8b\xe2\xcd )\xde*\x86\x8d|Op\xc3\xb1\\me\xa4\xb4\x0f\nq\xca\xacY!\xdb\\$\xc5\x8c\xa9\xbc}?\xf3\x86\x0fAQ\xf8n\x19\xb5\x15E\xc1-\xe9\x98r\x95\xf7\xe3\xe8\xce\xcew\xa7\ni\xb7\x0f\xc5\xb6\xe3\x07\xf6{\x82f<s\xb6\xdcU\xbc`~\x1b%\x7f<\x9cP\x0d\x0cz\xb7n\xa9.\x93\xe2\x84rbI\xb6\xb4\xc6\x8f2\x9b\x81\xde\x06th\xc2`\x96\xb2\xd7Hhz\xa1\xa0(\xc1\xa2\xbc\x0e\xab#p\xef\xde=\xf9'\xa5N\x92\x02w8\xf6\xe6\xf9\xf1(!\x04\xbe\x00U\x9c)78SohpD\x995\x03\x8b\xfdKI\xc9\xd5\x8bl \x18d=\xad\xe7\x97l\xeb\x0e\x11\xce\x86l\xce\x88v\xcb \xda\xafO\x8a\x1c\xd0\x08\xbe\x00\x95\xe0\xd7\xa0:[`\x14\xdc1&\x80\x036\xc0\x18\x8c\x00\x0b\xe9\xd1\xbe\xba\xbdCM@5B\x13P\xa9\x9a\x80\xaa\xa7 \xa8\xeeZ\x13\xf0\xef\xaa\xc1\xdbHm\x13S\xd8\xb5mb\xb9\xee\xe9\xf3g7M\x9f\xf3^\xc4\xfd\x97Y\xc8\xb9\xdd\xc1\x80o\xb6L\xd9lV6\xbcK\xb8\x11\xf3\xd4\x93.\xb3\x13n\x0bc\xaeK\xc4\xacs\x82G\xbb\xf3\x7f7\x941\xdfd\xe9\xcc\xba\x86\xf8c\x9d\xf7\x1c\x08\xef3\xe5C\xbaB\xb9\x8d6P\xe6\xbc\xe5)\x84v\x16\x9dd\x8ae\xd0Z`aw\x96I\xde\xf7\xc8\x1b\xa2,=\xd7\x83\x0d\xec\xba\xe3<\xb8\xe2=8\xe1>\xb4\xf0\xd0IP\xcd\xc6\x1dJ\xee;e\xf4\xa1\xd0\xdf\x1e\xad'\xb7}U\x0b]\xdf\xa9\xc7</\xbd\x10\xbcxS\xaf\xf2\x92G\\\xa5\x0ff\xcc\x9d\xff~}S\x10\xaf\xc3i\xfc'\xab\xbc\xf4\x83\xb1D\\\xf0\xbf\xd8~\xf8\x97\xdb b\xe8\xa7G\xa2\x0c\xda\x91\xb3\x8dV=\xe2\x06D\x0d!\x87\x07\x0c&l\x88\xea\xfc\x14\xbd\xe3\xfc\x00\x1d4\xfa\xe1\xe6@\xc9K\x07\x18J\xff\x18Es\xc5\xb9\x8f\x08\xc7\xab*b\x0d|\xc8\x9f\xaf\xe2\x12iB\xe0\x93\xc0\xd1\x13\x82\x0fx\xd6\x98\x84\xa4>S(K\xe6\x8c\x12\x9e\x9a\xbf\xec\x9ad\x11\x14\xbb\xa6g\xae\xdd\x81\xeat!\xc1\xb0\xff\xa8\xe3\xe5\xac\xdf`[t\xe2\xfd\x0f\x14\xfcM\xed\xfd\x9c'\x99\xefi\x9c\x13\x95w\xd0E\xd8_]#\x9b\x0cid\xe3F#\xdb\xd5\xb9\xb2[\x90\x17I\x85\\!\x99S\xfc\x88g5;\x01\xf3P\x1f\xc3\xdeb\xb8i8_\xb5VF\xf5X/\xb0Krcc\x04\x9cTl\x16M,3\xfd\xb42D\xcc\xafk\x88\x1e\x00W\xeb\xda\xe7(\n\x87\x13\xe6\xd6\xb2Ku\xe2(\x1c\x8e\xe1h8\x8f\xa0\x7f\xe6\x88\xc2\xa2\\2\xa6\x92\xb15M\xb6\xdc\xf1{lc\xca;/7Qhrv\xc1\x81\xa4\xf1\x05I\xbb\xe3`.\xf2_e4\xd1\xe0h\xd6q]&\x9f\xbe2X\xc6&r\xe1M\xb2,2 \x1c\xd3\x83\x84\xb9\xfbQ\x06\xef)\x05U\xcdX=\x0c#2a\xaa\xce\x10\x7f\xe9\xc70\xe0\x8e\x8a``\x8a\xb4#\x9b\xa7\xbe\x90`\x13\xee\x1c\xdb\x8ccB\xfb73\x9e[\xc0\x15\x1c`\x0b\xcaBkn\x02\xc0(\xed\xb3-Q\xc43\xf2\x82\xa4\xc9:\xa9)\x93\xee4\xfd\x94O_\x99\xf8o;o\x0f\x83\x15\x18RX\x0d\xcc\xbeH\x8a\xd1\x93\x9f\xfd\xcbM\xfe3\xc6\x0eu\x9d<w+j Y\xbe\"\xef\xd5Zy/V\xed\x16\xffE\x0f\xb9\xd8\xed\x90\xdb8\x1dr\xd5\xafp\xc8\xe9\xfd\xc1D\x19:\xe4\xcc\xe3\x16\xc9\x94\x1d.\xb0\xc4\xb9\xd3:\x16\xe1\x18}0\xc7\x87\x18\xc0\x98R~6\xad\x1d\\d}&61\x82-\xa2\x0b\xd0\x0d\xe5\xc7\x14\xfb\x04-\xa5O\xf5\xe9\xdfo\x85\x19g\xeb(\xfd\x95\xc7\x1e\xe10#\xed\xe0#\xa7\xc1\xb7N^*\x81\xc4\xbf\xf2\x14\x9e\xe2`\x9f\xca)\xb0\xe3t\xdc\xb0\x0d#\xb6\x12\xd2\x9c\x8f\xb8\x1c5\xe2\x90\x8f\xb8\x190\x02Z\x1e\xfe\xfah\xfc\xcd\xd8\x95S\xfe\xd7\x855\xc3\x8e{\x12\xb5\xbf\x08\xed\x19\xbd6\xd1v;\xdd\xfa\xd5is\xe2Dt\xe3_\x81\xe8&[\x13\xddqT4\xf63\x1d\x81b\\\xbex\xd9\xddI]\xc6V\xd4kc\xadx\xda3>h\xde\x0d H\xeb\xa1AE\xc7\x1d\x92\xbe}\xc2\x1c\x92\x1e\xe9\x1d\x92\x985\xf9#]~\xff\xd4i%\x05\xec&\x0f\x8e\x7f?=\xfb\xffv\xbe\xb9\xf7\x07?\xf8\xe3n\xf8\xf4\xc8\x93\xf7\x19\xdcp\xb6?\x15\x8d&~L\xa7\x0f\xfe>\x8d\xef\xffs\xef\xfe\x93\x8f\xf7\xa3\xf3\xff:\xdb\xfd\xe6A\x12\xd5\xa4\xaau,\xd7\xb6~\x01O\x0e\xf7\xb7\xb7\xd1?\xd8\xfe\xd3\xc3/0\xefo\xbd\xfa\xb7\xd4\x8a\xca\x00\xa9f\x95\xa6\xdd5\xb5\xec[ a\xcc\x9a\xc1\x84(\x96\x08\x95\x9a|(\xd8\xe6`\"\x14\xb3\xdb\xef\xa2\xef=\x8bw\xa3\x86\xcbbtR\x8c\x84\xc2\x9d\x18\xdc{\xe7\xed1\x16b\x8c\x06\xdfeLx \x80\x89F[q\xeb\xd7\xd4\x10n\xe4\n\xb3-\xdc\xbb\x07;;\x1d\xfd\xea\\D\xc8\xd2\x7f\xb8\xee\xc7\xc6\x8aC\x98z3a\xf6\xac:\xfd\xde\x9c\xb2\xf0\x00<\xb6\xcfP*)\xe5\xa6l\xd1\xbd\\]H\xe3\xb4E\xdb8\xad3\xf42P\x14\xd8W\xf4\x1f\x16\xd3\xa6s}\xd5\xc0\x0bG\xd5\xfc\x94a\x7f\x8e\xc1_il4\x06X\x13\x19\xe0&\x83$\x1bN\xde\"8\x98\xf9t(\xb6$p\xa4^O\xb3\x01{\x0f\xb4\x07\xb0\x9d\xd3R\xa1\xcb\xf3\xd6\x7f\xfel\xbb\x10\x03\x8e\xfd9zN\x0c\x9b\x9b\xb0!X\x9bCy?.\x92\xffEx4\xcc8\x00\x0f\x17\x93\xdf3\xf2\xe0\x98\xfeB8\x19\xc8\xeb\xf0$\x08\xc1c(\xd1\xab+.\xcf;\xb5\xd9\x9dp\xaf\xb6\x08\xc0\xa6\xd6\x1e\x9e\x1d\xa8>\x18\xcc/^\x8c\xde\xce\xf2\x80\x8c\x01\x1aW\xc9L\x8c\x86\x85\xccp\xfd\x1e\x14\xae \xc1@\xc1\xf6[\xcfnAuYT\xc4Uu\x9d\x97\x03a\xcatE\xc8\xb3\x8a\x7f,\x0buA\xd9\xa3\xca\x01z\xa2\xc8\xb5\x8a\x9e\xa9w\x8ep\x04\xde\x0f\x14<L\x85\xe4\xd4\x9c\xd9zF-\xde\x05\x89\xcb\x06e\x18\xd8\xdbh\xa3\x19\n~\x83c\xd1\x84\x84\xe9\x16\xc5*\xc7\xcb)e?\x18\x89\x1dW<\x8aX\x19\xd5\xf9%\xc9\xc01\x81\x93(\x94\xfa\x17\x18G\xb7\xaa\xce\xb1\x05\xf7o\xaf\xf0[\xfc\xe8\xdc\xbe\xcbEA\xaa*!\xbbst\x04WmS\x17\xf4\xef\xbdj@\xe9\x05\xe1\xc0\xd2_ahS\n\xed\xe1\x94;0\xb8\xea\x86`T\xbd\xa7\x98g\x87r\xe7m\xaf\x8f\xdf\xecvM\x1bL%\x1e\xf2w\xd84\xf7r\xdd\xab7\xdd\xc5\x9a\xe1\xc0\xba\x92)\xd3,\x0cS\xa9rs\x18\xee^[\xadr\xe2\xe8R\x0b;\xc5\x02\x9b\xc4u\x1d\xcfVJR\x81\x97y\x89\xd6e\xef\xe2\x9b4\x8fM\xf1\xb3\xd5\x81*\x1f\xf7\x91\x1a#O\x18\xccKJ\xe1 m\n\x17\xae\xc4\xe40LR vj\x80)\x0b\x1e\xa2\xf1}6\x04)\x99c\x84-e\x0d\x86\x88\xc4\xaa\x1f\x9bu\x1eq\x93\x0e\xf6\xdd@\x08\x96\x029&)\xf8\x15L\xf0\xeb\x8f\nO|\xda\xda\xccD\xe6h\x0dl\xed*h\xec}\xa6\x1e_\x98\xfb\x1f\xd0\xb6\xc4\x9c\xd5K\x12\xd5\x9d\xc2\xc6HQvt5\xdd\x1b`\x91\xd6\x1d3\xbb\xfe(\xd6,\xbf\xf6\xdaY\x83\xcf\x06XH.s\xb0\xf5\xc2\x1c\x89\x85Y\x00R\x16\xbf\x07u|\xe3\xc5E\x91&3\xc4\xa7\x07\x9f\xee___\xdf_\xe4\xe5\xfa\xfe\xa6L\xd9E;\xbf3)\xe8bpy\xa1\x89\xd2\xb8\xde\xa4uR\xc4e\xfd\xc0\xa3\x1c\xad\xf1\xc2Ao`\x16\xabl5r\xc4\xd2\xdbO\xcfy\xbb\x9b4#\xf9 \x99\x9b\xd3`<D[\xa8\xb8\xb6u\x9b0ey\x990\x1b|\x1e5.\xc9\xaa:\xcef\xe2\x0d\xe5\x0e\xb5\x9f\xfd\x90\xe6\x17\xf234\xf7o}K_\x07-O\xedE\xf4\xc3f\xb1 e\xfb#\xf14J*\xf6\x87\x9f\xa3\x0eG\xb5\xab\xdb\xe9\xac@n[\x81<\xc0su\x83\xd1\xef&\x1d\x9b\x87\x9c\xaeN\xaeX\xf8\xf4M\x04\xf3@ze::d\xban\x85\x00\x8fS\x81\x19%\xfe\xe0\x1e\xfbe\xd0\xfe\x15v\x8f]:&L\xf4|*\xe9*]\xb1\xfey)B\x88i\xe3\xe0\x88\x08b\xfb\xdaH7\"\x84\xd8\xbe62\xd0\x82)\xd0\x06\xd45\xc3\x9a\x9eo\x07B@\xfc\xb7\xa2\xe7\xb7S\xf4T\xe3\x14=.\x9cI70\xd8\x80\xa2g\xe1\xa4\xe8)\xdac\\\x881\x1a\x82}\xcd\x99\xc3gAf|\xb7\x18x\xb1U\xbb\xd99\x1c\xc3\xf4\x0c\x8c\x89G\xae0\x84\xb1\xaa1\x1a\xd0\xfb\x14\x8d\xc2H!.\xc5\xb0\xc2h\x89QeE\x0f/(\x8dK\xe8\xcaU\xc6cq\xa6\xe8\x82f]]\xd0L\xea\x82f}]Pb\xd0\x05\xad\x9b\xa3\xba\xa3\x0b\xaa\xda\xba\xa0J\xab\x0b\xba\xfa\xea\xba\xa0\xe2n\xb4<y#J\xda\x05\xc1\xf1*!z\xc8-\xadZ+\xe0\x1bp\x83\xca#{\xddT\x04w\xcdGJ\xb2\x8b\xe6CW1v[eUe\x83\xbe(\x82cWU[\x9b(A'W\xfeh\"\x94Y\xd5\x80\xdd\x8aZfSLJ\x8b\xff\x89]0\x9d\x9fM7\x8d\x16\xcb\xda\x0e\xe7YUMT\x05\xc7\x90\xf0\xed\x85qIe^\x9e\x8e\x90.+M\xc0O0b\xdf\xa3\x87}/\x95F9%\xd5C\x8d\xce)\x08\x07\xdaW\xf4?\xa2yf!\xa3hT0\xfav\xca\xb47T\xc4\xed\xa9!\x16\x1d5\xc41,h\x1b\\ 1\xd4\xfdB\xea \x0c\x06L0R\xc50\xfb\x17R1\xdc\x95\xa2\xc0|8\x96.\x07r\xe2\xc4\n\xc4\x06)^_{\xe3\xa4/\xd0\x8b\xaf\xfe]\xa9\x01\x0c\x19.\x155\x80)\x89!\xaa\x014Q\xad\x82\x80\xb1\xcc\x18\xfb]\x84U\xd9\x04h\x9a2$g\xc6=\xc1\xa0\xa4\x92\x7f\xb5\x91\xb1\x9a\xcd\xdf65Y \xe7\x8e\xa3\xb3s;Y\xa7\x9dR\x89S\x0b\xe8\x16\xdd\xfc\xeeE@\xb4]\x18{\x8bD\xdc\xef\x13<Z4\xb0\x13g\xfe\xf00\x15\xd1\x18\xe5\xe9y\\\xc7\xde\xdd\x0f\x97\xc7\xf5\x11CNt\x8b\xad\xa6^\x18\x1c\xb2]\x15\xa0\xd13HE\x8aQ!-\xc5\xab;\x99\xba(\x02\x04\xed\xdcgf\xe2\xaa\xa4 \xdb3\x9f\xfb\xe9W\x1b\xa7\xc3R\x89\xd2\x1a\xab\xfe\xfc\xf6\x91YM\x03\xeb\xa2\xc6\xb60C\xd0\x8cq[\xd99\x1e\x14\x807\x8dd\xdd\xfe\x94>\xfcN\xf1\xbf\xbc\xe5\x81*-R\xae>R\xa1\xe0r\xf9\xb9\x87a\xdf\xe9\x06\x8eVq\xf5\xf6:\x13'`{x\xb9-_\xb2d\xb3 \xcf)Bi\xfa\xdeS\xa8\xe1{8\xf8\xf6\xd1S\xd8\xdd\xad\x03 ,\xda&\xf3\xca\xa1t\xff{\xd8\x7fD\xb9\xb1=\xc5\xf2\xb1\xe5\x17\xd4q\x0c2\xab\xef:>:\xbeR\xb3\x8ebJ:?\xe4l\xca\xb6\xb3V\x91\x18\x8e\x00s\xce\xd5Q\x91\xc6I\xc6>\xa7\x9c\x1a\x87\xdd\xac$qM\xfcl\x93b|y\xca\x0b\x96l\xda%|/\x1d\xb8\xe8\xdc\xcb@UV\x91iy\x86\xf8\x98\xd1?\xd8\xef\xee\x92sS\xe9f\xcd1)6)\x97\xa43\xfe,\xec;\x92\xa2\xba\xb6IC\xd9\xe1\xc3\xd9\x0d\x99T\x7f \x9d\x9b\xd6\x03\x81\xd6\xed\xc6\x0e\x96\xeb\xa8\xb3\xa5E*gVDk\xfa%r\x9cS:\x1d\x83\xe8\xe5\xe7\xedE\xf8\xfc\x99\x8a(i\x9a_\xbf\x13\x18\x8c\x0fw\xcah\x16\xa7\xa9\xdfEo\xba7\x18\x11 S\x0cv\xbb\xb37b\xc3\x0fy\x809LK&\xcd\xecBLp\x87D\xbb\xfa\xbd\xa0\xcd}\xef\xdf\x8c\xcd)A'\xd0\x16\x9aS\xdc@m\xa7\xae\x95^#\xc7\xe0g}\xc1:\x0b!\xd1*\xc0\x18\x8c \xbe>\x062M\x10\x9f\x15\xad\xb6\x84\x02}\xc5k\xfc\xff\xec\xbdk\x97\x1c\xc7\x95 \xf6]\xbf\"P3KU\x0d\n\x8d\xee\x06@\x11MAt\xa3\xbb\x014\xd4\xe8n\xf6\x03 \x00a\xa0\xac\xcc\xa8\xaaDge&\xf2Q\xdd\x8d\x11\xe6\x90#\x8a\xc2\x83;\xb3\xde\x91\xa8\x91=cy\xd6$H\x00\xb3^\xdb\xeb\xb5\xd7\xf6\x8e\xf7\x1c>\xd6>Gs\xa8\x99\xbf\x80?\xb0\xfe >\x117\"2\xf3\xde\xc8\xac\x02 R\x9c\x1d\xd59\x12\x1by\xe3\x1d7\xee+\xee\xbdqFcp[\xfcSc\xeeB\x81M\xe2o(X%\xf9B\x8e\x97\xbe\x9cjS\xf7\xf8a\xda\x0e\xada4\xd6\xe1j\xd2\x1b^\xf7\xebc6ms\xc2#v\xf4\x88\x01\xe8t1bT\xde.\x01\xbe\x90\xa6\xfe \x9cDs\xd4\x18\xca\xf3\xcb\xa6\x0f\x13\xd2H\n\x88\x9d]\x0foX\x06\xc6\xd1\xc0<.$\x95F'A\xfb\x8b\x93\xaa7\xa8_\xc9\xb1X\xce.|Tf\x17f-\x946\xc0<<iUq&\x9c69n\x90\xb0\x1a\xc7-N\xe4\xac\x92\x1e\xb4\xe5\xc8N\n+OaY#q\xc1\xa4\xab\x18\x12\xd7\x97\x07\xad\n\xa5\xcf\xaa\x94\xde\x8e\x80pD\xdd\xa1\x93,E\x1e_\xcc\xac\xa9\x02N\x9e\x92\xc3\x96\xd9\xd7N\xbe\\\xfc}\xba\xf4}n\xbe\x04\xf0\xd9\xf7\xce\xb0\x93\xaf0\xf9\x1c\xcfw\xcf\xb0S\xdf1__>e\xbe\x9e\x9e5_O\x7f\xc7|\x9d\x9b\x9f\x97q\xc5G\xf5\xc0\xe4\xa0\xd8\x82\x80\xb2\xb9\xf9W40\x12\xd8\x0e_\xe7gO\x96>\xcf\x9d\x9eg\xb2\xd9\xef\xb1\x97o\xb0\xa3\xe2\xcb\xfc+\xecG\xec\xe5\x13\xec%f\xea\x9c:5\x7f\xfae\xd3\xff\xa9\xef\x9c8y\xb2hb~\xfe\xa4nbn\xbe\xdc\x06\xb4\xca^b/\x9f\xb07\xddND\x0bs]\xb9\xb0/\x9f:u\xe2e)S\xcc\xcd\xce\xcb\"\x1d\xf6\xdd\xef\xb2\xb9Y\xf6#\xa6\xbe\xa0\xb5\x97; C89k\x86\xf0\n\x19\xc2\xdc<\x19C\xf3\xd0:\x0d\xac\xc2\xce\xd5\xddh\x14;ns\x14n\xf5\xcd6\x8aaQ\xefV\xdd\xc5Cd\xbdr\xa0\xe2g\x9cD\xf1\x02kE\xd5\x0c<w\xd5\xfbpB\xa6\xabEy\xd2\x96\x19n$ Rr\x03\xb6)\x9a\x89z\xb7\xaeG\xf2}eAN\x0b1T\x92<\xbf\xd3\x95B\xf0\xec\xab,g\xdfeN\xa9\x8f|\x92\xce\xe4\\\xcf\x1bL\xa12H\xefzZ#[X\xf8\x96\xb4n\x99\xd7\x8a\xe5\xbf\x8e\xa9\xe4{\xe6R\xd7(\x15\x92}\xd5+7rojl\x13\xcc,|j\x85\xcb\x04\xf3\xd0A`\xcb\xc0bC\xaff\x95\xab\xc0\xa4W\x0b\x11\xb5\xf1vX\x9av\xe2(n7\x04\x8cf\xd2\xe0 v7\xd4\xbb\x8b\x83\xc1\x9b\xf4?3\xa8D\xa1Z\x04h\x10!T\x8b*rtv=\xba\xa1\xf4NH\xe2\x1f5\xc5\xa0T\x86'T-\xfb\x82OXcV\xab\x05\xb63\xc4a\xfd\x14\x1e\xffk<\xd8Z\xeb\xbd\xae\xdeQ\x86*7@\xf9%:\x9aV\x8d\x94\xacB:T\x97\xe0Sthp\x1bg\xac\xe2\xea^I>{\x96fI\xeef\x91zH\xbb\xf4\xa1\xe8\xab\x16\"4\x85b|\xdfb_VaU3/\x16C \x1bTS=\xfe\xcf\xe6g\x8f\x0f\x8a\x16\xca\xf7\xc4\xd5\xc50\x97\xb2\xad\xadsK'N\xbf\xf22J\x1f\xd3\x97i\x89\xe1m \x8a\xbd[\xe7\x96\xe6\xbes\xe2\x95ib\x8c\x88\x90\x19uY\xeb\xa8-\xf3\x04\xa5\x13jh\xcf\xd1\xcd\xc4+\xe6j'f\x1e-\xf5W\x8b\xc0a\x00f\x95\x9eo_\xf5\x0e\x02E(6P\xbe\xbdF\xb7/l\x9f\x9e\xc3a4\xbe\xfa>\x8f\xbe\x9b0W\xb5\xbd\x93n\xfdY\xe9\x04H\xef\xc8P\xbf{\x02O\xb9H\xc7\xac6/;\x9b,;\x99<\x13\x19\xf9\xf8\x1a\xe33\x03\x9e\xed\xf8#\xde\xee@\xf5\xd2\xbf\x17T\xbc\xfe\x11x\x19\xcf\xa2!Vt\xa6\xe2\xbb\xcc\xf62\x03\xe7@\xca\x9f0\xb0\x05\xf9\x97\xfcc\x9aY2\xb5\xf0A\x97\xb9\xf5t;oC\n\x97\\\x12h\xb52G,~f\xba\x02/\xf6\x0fhp\xf1\xef\xa9\xea\xfb\xd2\x80\xa0\x0b\x1e\xf1\x85\"\xa03\xe3\xe8\xd3\xd1\x01\xf3\x91\xfag\xd6\xe92\xc7\xcc\xb4\x81\x07\xa5\xb2\xe9z&#\xad\"\xe94\x13ef\xb2\xca\xbc\x083E\xbaDSm\xc9\xd0\x02`bA\xc5\x18\x14\x1c=\xda|\xe7);\xbe\x1e\xdcP,.\xb81U\x87\xba\xc8\xb4\xe9\xfeX\xad~\xa7\x7fc\xf5\xe8W4\xf1\x8d\xd4X\x96\xcaj\\\xf6\xb4\xc67M\xd2\x8c\xba\xe4s\xb5{\xde/v\x88\xc5\xd3n\x90\xdc\x9c\xfeL\x1a%Y\xbb\xd3e\xb1\xf9K\x06\xea\x95\x9e\x88\x14{\xf7=\xd8\xc3c\xc7\xeawM\x0e\x04v\x8c\xc5\xd3l\x98\xc1\x8e/\xd8\x99\x8c\xed\xbb\x1e\xdc\xe8\xb2#N\x9b_wotY&\xff?\x9c\x8c\xdbZx\xd14\xa8\x90yi\xfa\xfd\xbb\xc5\xb1\xab\xc0\xee\x96\x1c\xa6\x8c\x7fR\xde,kHu\x9c\x15Y\x17\xcfT\x1e\xce\xbaki0\xadm\xf0H\x1bH\xab\x95\xa8\x8a\xef:\xffV\xe9\xbbA\x0e\xe9\xcc\xa9;\xa9(\xfb3n\x14\xcb\xb7\xf8j\xc0\x92_I\xf1\xa8\xa0\x0c\xea!d[\x8f\xd7go<\xaf\x04\xa49%=(\xc0\x0e\xe8u\xb3\x8d}\x9e8=ka\x9f\x13/\x98\xd5\xe2Fj`H\xad\xbbK\x19o\xd8\x9e?1[1\xb4_L\xa3pS\x1cw\xfd\xa0\x9b3S\xfc\x13\xacN<^\n\xa2P>*=s\xd3\xfc\xb3*\xee\xe5\xd6%p<oz\xd6glb\x99\xb4\x89\x0d\xfdT\x85n7\x10\xa1\x90\xef/G\xaeL\xef\xf6\x1c^\x97\x946&|\x14\x8d\xf9\xf4c\xd5\xbb.\x06\xdbxh=\x1e\xf0\x8c\xcbr\xd3\xcf\xa3\x9ev\xc38\xbd\x85\xe9U!\xdb\\\xa5\x10\xfe\x15L\xf6Kl\xddW;\xe5/\xb6\xb9A;\xec\xc2db'\x1b\xd6e!\x91\xd4)A\x87\xa3\x9d\xd4\x89=\xda\xc4\xe2\x8a\xc6\x1b,\x10\xb1\xcc\xb0,\x06\xde\x90\x1f\x13\xde\xe1\x90C\xec'\xd1\xc8\xbe@\x9d\x19\xb5\x84\x8d{7\xcdx\x1c\xcf\x9bn0\xe2\xcf\xfa\x82:\x95u\xcdp\xbf)H#X\xcb\x97A\x1a\xb1#\xcd\xa9k\xbe\xfe5G8\xfa\xa5w\xe0\x8b\xafn&]\x84\xa6]]\xb5`\xd3\x0e\xab~\x1d\xa0[\xbf\x0d\x04\xb9\xa0TS\x07\xaf\xd0\xa6o\x0e\xf8\xf3\xcf\xa4\xe8Y\x11\xd6\x17\xbf\xe6\x95/h\xdc\xd4\xae\xc2\xbe \xbbvf\xfct\x15\xde\x8c\x83\xf4\x91|&\x8d\xe5\x0b\xedY\x97\xcdV\x96X^\xc3}\x05\x1cBZw\xb1\xcb\xa0\xfeM\xb5\x85\xcf\xcb\xfe_\x18:\x1a:U^\xb5\xb9\xce\xf5Y\xfa\xca/\x9b~2\xffD\xf9{>#\xfe[G\xc8s\xa9+\xd4\x11\xa2\\&O\xa9;\xdc\xf9\x8c\xf8o\xf5@\xd9\x14\xaa\xc0*\xa9Kw\x03\xd0K\xean5\xb5\xd5\x9e.\xa7d\x02\xa2w\x0b\x17P\xd4\x1f\x8f\xab\xfcO\xc3i\xe4Mt\x97\x85\xb0q\xa6\x8cM\x8bs\x95\x93JR\xe3\xa7R ~\xd3\xd2\xcf\x91\xb9\"\xbc\xeb\x8cN|.\x1f\x98?2\xdb\xe9\xaa\x82V--a\xaf\xb1Dp\xc2\xd9.\xe3\xf2\xeeDH[l\x81\xc5\xf2\xa3\xcc\xb8\xdcR\x179\x00\xa2\xab4V\x99\x0d\xed\xe8XAE\x8b\xa5\x95\"=x\xb0{\x9e\xee7\x8a\xcd\xce\xb93\xa5\xe6\xe4\x1d\x8a:\n\x16\x9b\x9dlF\x9d\xc7\xe7jJ\x8bl\xe2T\xd6\xb7,\xa5C\xd3\xacT\xa3\x05\x8eO\xd1\x93D\xd4\x10D\x94.\xc3\x0d\x89\xad\xaa\x0c\xa1S?\x06ql\xca\x1d\xdaw@\x9a@\xe4\x11cg\x04\xf75\x88\xd81Od\x01\xb8\xc3\xb2a\x12\xed\x8b-#\xcai\xbb\xb5#\x1a0\xce\xc1\xac\xef\xf8\x01\xf7Z]\xd6\xdaY\xd9\xde\xb9\xb9\xb1\xb9\xb2\xb5\xb8\xb3\xba\xb1~\xf3\xdc\xe2\xea\xda\xcarK\xa2T\xd8e|\x82\x18\x86\x16G\xac8E\x92\xba\xcd\xad\xae]i\xc5\xab[\x88\xb7:\x0f\xecf^\xd9\xaa<\xef\xb4\xcd\xb0\x90\x18j\xeb&\xcd+h\x1e\x81g?\x8c\xe2\x1f\xca\x8bL\x9ed\x87\xccOY\x18eL\xa8\xf9Q\xbfX\xe2\x94\xa9\xa8J\xe6\x87l\xeb\xdc\xd2\xb1\x97O\xcf\xce\x8b\x05/\xd6zc\xf3\xe6\xea\xfa\xe5\xc5\xb5\xd5\xe6\xf5\xd6\xcbR%V\x95\x7fE\xca\x92\x8fT)\x8eU)m\xe6l\x03=`\x90WW2\xd0\xac\xdd:\xde\xb2\xd8>a\x17\xc8\xe7!;\xc3,\x8f\x16\x8cKv>\x0b\xb31!b\x146h\x80\x1d\xd6\x84\xe3J\xd3\xe2\xa1|\x1a\xae\x8e:\nb\xf8\xaa\xf5\xcaWl\xf9@\xda\x16\x877\x14\x95-\x11a\x08\xde.\xc7\xb3]\x1f\xdc`\xaf\xc9)\xf4\xc18\xd6\x9e\xed\xb2\xa1N\xc5z\\f\xe7\x1b\x8a\xee\xc7\xec\x18\xe4\xe2o\x8f\x98\xa1\xbc\x95\x00^\xd9\xf8aA\xb8G\x82R\x0f\x8f\x1e\xc5\xf7\xc8^\xad\x89_\xe2\xfa1@\xf4AG.\x9e\xa7\xad\xee\xd6\n\x0d\xae\x8aL\xe3\xbf\xb4\xf6\x95\xa5\xd2A\xa7\xf9H\xac\x1c\xc4\xdc\xcd\xb8\xc7\x9c\x90\xe5a\xea\x0f\x04\xba\xf7\x9c\x94\x1f\x9b\x9be\xea9d\xa6\x08\xf3\xc8\xd9\xf3\xc3\x01\xcb\x86\\6\x96\xf0>Ox\xe8r\x0f\nH\x80\xf4\xe9c<\xe0\xf2\xa8\xef\xfb\xd9P~\xbe\xc3\x93\xe8\x98h\xd6\x03\x81\xb5z\x8a6\x17w.\xdc\\][[9\xbf\xb8vsqkk\xf1\xea\xcd\xd5\xf5\xe5\x957\xd4\x99\x02\xed\x8e5\xbd\xe5W\x9d\xb2\xdc9\xb1\xa0\x7f\xfc\xc7\x83iu\x1b\xa6\x96p\xc8\xbew\x86\x8d'\xdd\xcb\xc8\x85\xae\xf2H\xf1e\xc0\xbeg6q\x021\x1fr\x19\xc6\xe1\xf7}\xbd&\xec\xd2\xee\xf6\x0e[\xdf\xd8a=\xce\x06\xd2W7a\xd9\xd0 a\xc5\xa5\xc1V\xd0'\xb5\xb8\xa9\xa0Jf\xc9\xab\x0bzyqmw\xe5\xe6\xc6\xee\xce\xcd\x8ds7\xcfn\xec\xae/oO\xbf\x96\xf2\xde \xd8\x92\xb4\xdc\xa7\xd7\xc5\xf4n\xc0\xedV\xd8e^\x97\x0d\x04\x99\xeb|\xfd<\x8b\xd5\xd1R\xfd\xb3\x08\xccE \xc3@\xb9\xc5\x1c9\xc3\x06E\xaa\x83?n\x15\xf8\xe2\xcc\xe4!\xe4\x9a\xdct\xb2a\xe1)8\x90\xa7\xbb\x113\xf0\xaa\xe5\xdf\x9cU\xab]1\xbaZ\x1e\x032Y\xc3\xa8l\x02s\x7fz\x81\xd9&\x16\x13\x07\xe1\xe6\xa5\x91\x7f\xb3\x94\xdf\xce\x05\xe5a\xa3<\xcd\xc4qq\xc2\xe2\x18l\xaf\xbc\xbe\xbb\xb2\xbe\xb4rs}c\xe7\xe6\xe2:\x10\x14\x1c\xe12-\xbb5\x9e>\xf2F\x9f\xef3\x1d\xd6\xa4\x0e\xb9\xf2\x00\xebB>Msk\x9a\xb3\xef\xb2\xf4U\x96\x1f=\xdaa\xfe\xf5\\\x86`\xcau\xba\x9e\x0bN\x05\xf7\xf7\x12R\x16\x8d\xac\xda\x8bO\x054\xbfqC\xe2 \x1bRw\x0bU\xbd\xf6\xa2^\xf4\xd3IVJ\x96rB\xa6\xba\xa9\x10&\xb5%\x1bg/\xae,\xed\xb4\x00k\xc5z\xbcJFy$\xbf\xce\xc5\x01\x9a\xb6\xdf\xafD\xa2\xab\x1f\x9eq\xbe-_\xd9\x81\x826\xe5xEa:b\x87\xa9\x86-\x0cr\x8aa)\x9f(9\x92\x82\xc4\x1d\x07\x12\xa7>\x177\x81\x8dc\xfdv\xfdX\xe5\xa9K3'Q\x1c\xbeu\xbc\xf5\xed/6\xde\xb2\x1a\xc7\xa9\x1a\xc7\xa5\x02 X\xadm\xb9\xa5\x027\xedr\x8b\xc2t\xb9\xe3\x84\xa7\xe2X\xb5U\x88\\/\xe0\x025~(F\xf5C\xe6\x84\x1e\xfb\xa1\x18\xcd\x0fK(\xd4\xa9n\xcd\xb9\xad\x8dK7\xb7V^\xdf]\xddZ\x994W#/\x98\xa9V\xd4c\xf3\xb5P+\xcd\x02\x94o\xa1\xb5Eq\xca\x99\xcb\xd2\xd3O\xdd\xf1\xbc\x1fv\xd9\x0f\xd5\xc8\xd4\"\x88\x115,\x02\xc8\x1b_\xfd*83C'\xdd\xd5\xc9n\xdaz%\xbeyK\xb1\xb4\xb8.H\xdd\xd2\xc6\xfa\xce\xe2\xea\xfa\xcd\xdd\xf5\xe5\x95s\xab\xeb\x13\x96\xc6r%Q6\xc5\xa8e\xa87cB\xa0\xb4<\xe3\x85:\xd8\x98_\x83)kxD+\xd8E 1\x1e_\xd2\x98\x94\x1d\x05\x15I\xfd\xb3y\x0f\x96\x9cP.4OdT\xb2\xa3\x16\xb7$\xe48\x99\x14f=\x9e\xfa \xf7\xa4u\xcfB\x03\xd5\xba..\x97W\xb2I\xe6\xab\xc1\xad\xb2\xe5\xc2|,\x0c\x0fM+\xed\x83W\x99\xa3\xdc\xac\xa2\xe7\x9a\xb8\x98be\xce\x8e\x9c\xa9\x10\xf33\xe6E\x1c\xf0\x91\x1f\xf8if\x99\xfd\xee\xfa\xd6\xca\xf6\xc6\xda\xe5\xc5\xb3k+\xd3\xce\x7f\n\xfaZ\x8fQ\x81\x10\x07\xdb\x16\xff}\xfdk2\xd0\xea\x1f\x18j\x81\\O\xbc\xa3\xab\xc9}.~wo\xd0c\xa3\x7fb\xaa\xd2\xeb\xbdq\xc9\xe4\x9c\x03\x99\xf9\xe2K\xec\x9a\x98\xc7\xd4\xfb&\xd9\xc3\xd4\xfb\xd6(\xd7yZ\xae\xc3;f\xf7\x8b\x93B\xd4\xf3Iq/J\xb8\xd6\xdd\x87\x1d\xd6oW\xe4\xeb\xb0\xd3\xc5\x02\xb7\xd0\x03~\xf4#\xa1\x11\xd0F\x1aL\x1e\x89L\x19\xf6\xa3\x1f\xd5\xe5\x01\xac\x84t(\xd7\xfc\xc2\xab1\x12\x82y\xd2\xe6\xd7\xa3\x1b\xd2\xb79\xd4\xc6\x9dI1\x0b\xcd\xee\x81\x926\x94\xfdn\xf1\x1a\xd7]\x81\x88\x1f\xecLm0\x99\xf9K:\xed\xca\xf7\x92\xcf\x1enF~\x98I\x0f\xfa\xc0Du\x17\xfc\xee\x0cs\xcdW\xd8\xdb3\xaco\xbel\xc9p\xbd\x04\xc7\xe7\xe2y\xe9\x0b2u\x8bb\x91\xd4A\xebM\xbe>\xc5V\xadaR\xd6\x8c\x8a\x85\x12\x13\x1c;\x81\xef9\x99\xf4\xe9\x8aK\x1f\x84\xd6\xe5}K\x15\x9b\xc6\xb3-l\xcf\xbfR\xea\xbd\xd6w\xdb\xa6h\x1dI\x94\xb72\x9f\xb9\x99\x81{\xac^\x9e\x9d\xc3\x98\xab5Y\x0de@U\xe6\x0b\xa9#\xe1.\xf7\xc7<\xe92\xf3\x96\x84L)\"x\xe2\x11|\xcc4*!\x1c\xf9BQ\x0b_(\xad\x0cM)SN'Sr\ni\xcf\xcfw*\x8ew\x96<25\xbe\x93\xf4\x909\xfd\x8c'k\x91\xe3M\x13a \xafk\x93(\xcaVC\x08\xc4>C?\xe9w\xc9\xd1\xf7\x19?\xf4\xb3\x8d\xc5<\x1bB\xb2\x98<\x1b.\xca\xde\xd2\x197\n\xfb\xfe O\xb8\x80Zj\xc6 7)\xdc\x16e*(is\xee\xf9\xa1\xd7\x86\xcb\x0f\xe94\xdeT\x0d\xf2\x1a\x9dan\xb5\x16%O\x94\xa5\xa6\x99\x93\xf1\xcd \x1f\xf8\xa15\x0eD\xfcD?u0&W_\x12\x87t\x81Ez\xb3\xeay\xb7\x03\xcb\xd2\x185\x96\xf2\x80\xbbY$Z\xb4\xbf\x0fY\x93\x95\x16r\xdd\xd4\x0ft?q\xe2E\xdd\xbf\xfdQ\xae\x89\xee!U\xdaa\xdd\x05\x0c(v\xb5\x8a\xf0\x91B\xf8\x13\xa7O\xe2\x9c\x19>\xbc<\xd4\x9e?A\xb2M:\nt\xe2\xf4)\x0c\xca\x0dH\xe6\xd90\xb0&\xb7c`C(\xdbc\xd3\xed{&\xa3J(iWQW6\xbc#\x89\xea&$\xe80\x91D*\x05@\x06\xd1\xdf\xfczX\x93K\xa2L$x9\xff\xa7M6\nj}\xaf\xa7\xcfzY\x93\xf1\xb2Y(s5\x89\xb5\x18\xdb\n\x9d\xacL;\x0c\nQ|/\x1e\x0d\xd9\xd6\xa7\x85\x16\xca\xa5\xcdR\x14\x12\xdc\xd5r\xfaMz5?\xddX\xdc>\xd1\x91 \xcd&>\xb2\xc1\x16\xd8\xf5\x96%\xd3b\xcb\x12\xa6*\xd4\x82\xbc\xdd\x11r\xc8j\xd8\xben\xd2E\xa4]v=\xbbA\xd2\xc1\xc0F\x04\xec5\xe6\xcb\x07\x99\x13\x94\n\xb3![\x99\xfd\xdc\xebdq\xb5\xae5:u\x9c\xcd\xcf\xd2F0\xc5\"8\x0b,\x98\xc9\xa2\x8b\xdb\xe8=gHS+NB#\"\xf4\xeb\x1c\x8d4U\x98\x1a\x0b\xfci\xb0\xc0\x81\xb7[j\xb1 7O ~eX \xc3\x98-X\x907aA\xca^c\xd1\xf3b\x81\x0d\xcb\xd5\x96\xa5So\x19\xfb\xa6\x89F]\xed\n-\xa5#\xca+$\x84d^r\x14d\x8e<\x00\x90Kq\xf5;\xe8+$\x1b\x9e\xc3\x11\x16\x81\x8a\x87\x98\xb7\xf2\x14\xf7\xeb!\xa7\xfa\xaf2\xa9\x97\xfeT:'kT\xca\xc9\xdae\xc1\xcc\xf6\x85\x8d+7\x17ww.\xdc\xdc\xdc\xd8\xdc\xdd\x9c\x90oY\xfb\x95e3\xb1-\x9f\x9f\x9e\xd1L\xca\xb3v+\x1dF\xfbe\x84\x17\xa8Q\xda;\xfbx\xc4P6\xb6V\xaf\xad<\xefH(B'&Op?\x89F\x17\xb7;BW&\xa5\x80\x90\x0c\xc4\x80\x8b\x1c\xc1-x8CV\xbe\xe4\xc4\x1d\x1c\xf8n\xd4%\x1ef\xc9\xe16\xbf\xdd\x9e6\xe3\xba\x96\x0dP\xbaN\xdee8\xb0U\xff\xe4,\xaf\xcf\xd6\xe46H$t\xae\x06\nIe\x159i\xc1 \x17T*\x939\xcfjl\x0c\x95T\xab2\xc7H\xe9\xa5\x1d\xbf#W,\x92[\x1c\xda\xcdG\x85\xa9\xac\x94\xdf\xd4\x9a\x97\x87\x95\xc2}\x8aq\xca\x93.\x86\xa9\xb9R\xebFC\xfca`\xaf\xab\x19\x96u\x9aLm|\xdb\xccET\x0e\xbbL\xd5ot\x9f.xe^?*H3\xb7P\xce\xa6\n\x8f\x93\xf5\xb2\xc8)?\xdaS\xf7Ls\xa7S\x1e\x96\xda\xba\x1b]\x98j[\x7f\x98\x98\x11B\x066\xc3y,\xa1\xb7\x10\xad\xa6?\x8a77\xc4\x9f\xf3/\xe6D\x86\x92Q\xdb\xcfaX\x97,\xd9\xa9\xf1u2\xe7\x10\xde\xeb!o\xfd\n\xaa\x17u \xcfH\x95\x14$z]$\xd6T\x96\xc6\x81\x15\x96\x88\xd7\xb9\xd1-\xe7\x05\xac[\xaa\xb5\x8d\xf3\x1b\xbb;/f\x81,\xc4hf\xdf\xcf\x86\x97\xf2\x0c\xaeG\xa6\xc8\xa8h\xc9\xe4\xd5\xf8\x8c+\x9f\x81\xc0\xb2\xda\x10^\x0b\x9a\xd5\x98N,\xb8\x96L^\xc0\xa5\x8d\xf5s\xab\xe7w\xb7V$/z\xde\x85l\x1a \x18\x16,\xdcG\x8d\xea\xb7+\xc0t\xc1\xf6\xb8\x04\x83\x94s\xf2\xd3E\xb3x\x90\xd4\xad\xfaO\xaf`\xa9\xe7\xa2d\x0bLY\xe0\xbe\xa4\xd2\x0f\x94\x98\xee\xd9\xc3ug\xc4S\\q'2}H\x90`\xd5a\xa9\x9a\xe5\xb8i\xdbS\xde\x0e\xdb'\x89t\x15)\x08\x95\xa1 o\xc3),D9J\xb4z\xbe8\xe2\xafDV\x1a\xab\x04B\xf5\xc7\x8a\x9a\x05\xcb\x967\xcb\xe2\x01\x19\x82\xec\x90Z\xe5\xe8\x08enr\x1f\x8a\xbc#\xd9\xa9\x83p\xa6v/'\xf7\\\xd3\xf1tb\x0b\xd2\xa2l\x0f \xb4\x8d\xec\xe4\x80\xecT\xfb\xcaQh\xe4\xa05?\xcd\x88\x90\xc5\xca\x96\x8b\xe7\x16\xb4\x18\x12\xb6\xa2\xa9\x84-fD\xaa:\x81\x8b)\x9c\xae\x17\xbaXIYt\xac\xe2c\xb9T.\xc9T\xd2\x95/%\x86\xe0\x1b\x9b\xa7\xc3vn#\xb9]\x9c\x17\x91\x92\x12\xeb\xe1o$\xa7S#@H\x11\x80\xce\xcb\x8d\xc24\n\xf8\xcc\xbe\x93\x84\xed\xd6\x95\xc5\xad\xf5\xd5\xf5\xf3\x0b\xcc>2?e\x1e\x8f\x13\xee:\xe00\xeb\xb1}?\x08X\x8f\xeb0\x1e\xed\x91\x19\xf2\x83\x8c\x8d\x9c[Q\xc2\xc6<I\xfd(\x9c\xb1]\x91\x99;\x06;b\xd6\x0b\xc9\xd3\xa2\xa1\xa4\xe1_\x06\x0d\x9b\x11\x82\x7f1<g\xa5\x0dz>\\g\x9aB7\xe2;\xd3\x04\xbb\x11\xe7\x99\xce`,I\x98?\xa1W\x1b\x8f\xc1\xbf\xca\x9b\x039PF\xa9\xba(\xd7\x95T\xd0\xbc\x97^b\xed6\xbcp\xa1$\xe3(\xe6i\xab\xd3\x99\xd9\xe3_h%\x99\xf4~v\xa30s\xfc0U\x17N\xb2\x87T\x8bI\xdc\"w\xeb\xdf]\xe5\xc1\x98+I(\x08\xa2}\xeem\xc3\xa8\xba,\xed\xa8\xe46\x99\x84\xfb]f9\xe9\xba\x1d\x1f\x9e\n\x95\xb9\xcd\xec\xf4\xc0\xaf\xa3\x07\xddI\xa2B\xfdbh|u\x92\x81\xbc\x08L\x0b\x07\xb79V\xcd\x15f\x8a\\\x9f\xbb\xc1^\xab\xfes\xa1\xe9TMEtT\xa16\x18\xfa\n\xaec\xe7~e\xc6\xa3\xfa\xecL\x9f\x84\xdc\x1c\xf14\x1a\xf1)\xc5fSG \x1e/\xe1\x9b\x9f\xa4Y\xbb\x06G\xac\xb2t\xd3.V\xe4\xbf\xc9\xfc}\x82da3rh\xa2\x84\xb8 \x92D_$\x13\xa9\xeeg1\xa6\x06\xe2\x0b\x9b:\xe3\xa7\xe2?\x10\x1b|\xe4H\xa6\x8c\x95\xcf\xbd\xcf*\x97#2\x9b\xf2\xce\xcc\xc8\x89\xa7h\xa5\xd4\xd2\x91#!\xec\x7f\xddv\x1b\xaf\xd1#s\xb6\xad\xd7\x87\x0b\x99W\x19E\x84\x8a\xa2\xf0\xa5\x11A+F\xe5]\xff\x16\xfbFhD\xfc\x80\xbb\xb9\xf4,\xb0j!]\x95\xe5f\xfe\x94E\xd7\x90\xd6\xceH2\x88\xa4\xaa($\xcd\x8aB5^\xb8\"\xe1\x17\xe3\x99R/\xad\xa0\xb7]\xcd\xcf\x9a\x04)|\x9aj\x9f\x83\x89\x94\x1a\\\xe7\x8e\xe8\xa8\x0c\xd6\xd90\xaayr,\x97%\xa6x\xc1M,C\x968\x0d\xcf\xc9\xd6\x1f\x95\xe2\x80/(\x03\x90>\xeeb\x9f\xaa_\xd4\x89\xae\x97\x1eJ\xd4\x7f\x81%5*\x88\xdc~+hb\xfb\xe5W\xdd\xca\x1d\xe0VMS\xf6s_K\xc8x\x1b[\xa9\xac\x0d\x80\x93_\xcd\x1by\xb0\xa3\x0b\xcc\xb1\x83K\x0f\xde\xd4\xd8(\xcb\xaf\xe6X^\xbf\x95rJ\x1d-\xfa\x86P\x89/\xe3\xf1\xd2\x0f\xebnB\xd3\xa1\x94\xd8Vn\xe7N\xf0}~\x08(\x86\xbe\xd1\xf5\xaa[*j?\x917G\xdf\x80\x15\xa4#K\xdba\xfb$y\xe7:2>\x16\x13\xfd\x8dj\x05I>\xd3\xb7\x10\x16{\x82\x02\xf1\xf3\xa2\xfd0\x98\xd2\x1d\x89Y\xc8emj\n\xfd+\xf4D\x9e$\xea\x02\xb9Y]aZQ\x9at\x8d\x8c\x7f\x8e\xa94u?\x10\xf8Tp\xfb\xc95\x02I\x9f\xfb<s\x1b\xdc\xd2\xf5OF \xb6;\xe8\xc9S\xfc3\xd6\xb8~\xb3\x0c\xac\x7f\xbe\xcc\x01]r\xd4\x84\x04p\xf2\xdd\xac4s\xb2<\x95\x89\xeagg;\x85@\x97\xc7\x9e\x93\xf1\xb5\xc8\xf1\xfcp\xb0-\x0b\xb5[\xca\x85\xb1\xd3\x05o\xc4\x9da\x12\xed\x87+I\xd2F\x9am\xc8\xf7\xa1\x8fv[p\xb84u\x06\xbc\xdc\xdd\x0e?\xc8:\xe619\xde\x98\x85\xa8\xfcK\xa3<q\xf9\x02k\xc9\xe5lM\xacs\xb7\xa3\xe2\x98\xdbG\xccLq\xb2XX\x8b\x97^\xaa\xa7Tu\xbf\xe6\x0c\x9d\xf8\xa7\x0f\xdc$\xc5\x1a\xff\xe4e\xdd\xee\xd6Z\x8b\xf9a\xf1\xae*{M6&\x16zwk\xad-3\xee\xc8<\xdf\x9e\xf2\x10U\xe2\xe7\n\x84\xcf\xb6[\x8e\xd0\xba\x87 \xef\x83\x83\x91\xbc6L\x17Z\xe54\xb1n\x04N\xe5\x1a\x04\x9a\xbd\xeap&\x88\xe0M-Sv\xdae\xd2\xbf\x1a+H\x81+\xad\xcd(M\xa5c\xe8\xc8?\xe0\xde1\xfd\x1a\xbb\x9f\xa69\x7f\x8d\xed\x0c9\x8b\x05\"\xed;)\x13$\x88{,\x1a\xf3\x84\xc1x\x8f\x1fg\xbd<c\x0e\xf8\x92\x163:\xcaZ\xc7\x8f\x8bE\x92\xf5L\x14\xf2\x0c[\x1arw\x0f|\xda\x0f\xa3\x9c9 \x87\x98\xb4,\xe3\xa38\x93\xb1\xdf\x91\xec\x07\x86\xc3\xd4pfZS\xa3k\xf9\xf7\xbc\xa8[\xfe\xd9\x1e\xbco\xfa\xa9C,1\x0d\x1d\xd4\xb0\xde8\x82\x7f\xf6\xa8q\xdbO\xd2\x97\x99(\xf1\x07~(\x11\xca\x825\x00\xfd\"8\xe3O\x873n\x12\xa5\xe915\x88\xf6\xd2\xc6\xd6v\xa7\x8c9\x02\x014\x100D\xfd\xeb(ku\x8a\xa0\x86\x91t\x1c\xcf4\xaa\xc9\xa2\xb5\xb3\x91u\x0bD\xe2,\xe5\x89@HX\xffT~r\xa3$\xe1n\xc6\xbe\xbd(_l=\xb6\x14\x85Y\x12\x05\xc7\x16\x85\xd4r\xec\x0f\xbe\xcd\xf4c\x9b\xff\x08\xd0\xaa\x8aJ\xfe\x8bF\xa5\xe9\x92\x11\xe3\x1f,\xf6T\xc5'\x0f\xe3\xae\xf5\x153\xfc\xab\xe1\x8ei.\xb7\xb8%\xa3>\xa0\xc4v\xcc\xddv6\x93 ~'\xf4\x8a< \xda\x9d\"\x93\xbf.\xb6\x9b\x04u6\n\xfdk\x1e\xbbL\x14#8\xac\xea\xa2[7\xc6\x00\xfe ,\xdc\x0d\xb8\x934\xbc\x8d\xa1\x7f\xcf\x83dB\xfe\x0f\xa6h3O\x82\x05[\x9e\x16\xfc\x13\x03\xde\x96^\xd1G\x1a\x1e<\xd4?\xf5 \xe9j\x98\xf1\xc4\xe5q\x16%\x0b2=\x0f\xfe*\x96j:\xf9\xb5\xfc#w\x8du\xbf\x1a\xef\xee\xf2/\xe1i\x1c\x85)'C%\x9f\x7f\xfbcu\x13\xee\xf10\xf3\x9d ]`\xad\xd4\x19qEg\x1b\xe2\xe0\xf4O\x91\xb7&\xa7\xf6\xf2OP\xc98[\xa8\xbe\xe2y+\x8d\xc2\xee\x1f\x1c\xff\x83\xc9\xe4\xad\xf9\x94\xdc\xed\xccdC\x1e\xb6\xfb]\xd6o\xb8$\xb0Bj\x96\xc9r\xc8\xa6\xd5\x8c\xb4@x\x1d\xa2\x1d\xcc\xd1\xec\xb2V\x11*\xa4i\x8a\xf9\x08zG\xab\xe1\x0d\xf4\xaa\x1553&Nx\\N\xdf\x01r\x95\x11G\xfcg\x01\xc4p)\x90Ws h\xdf\xa8\x92\x1d6\xebLdT\xd9a,\xa8\x85\x90\xb5n\xc2\x02\xddT\x93\xbb B\xf8\x04\xbcQ\xae#\xb6\x04n\xfaW\xb3I\xe4\xab\xcd\xff\xb9V\xb7\x0d\xaa\xdbh7\xe3N\xb7\xb9\xc6)\xa2\xce\x8c_\xfe\xddm\xb2\x0c\x97\x7fU+qe\xb8pc@\xcc\xd4\xfag\xbb\xd9\xb0\xda5i\xe7\xd3\x04\xd8L\x8a[113\x8d\xd9!u\x10N3v\xd5\xa3\xd5B\xb3\x0d\xd8\xf6S\xb3\xb6\xbc.g<\x98 \xd1)]\xf0nQD\xe6;m&=\xf5\x98\xdc`\xed,\xa2\x88j\x1e\xa0\xa2\x9b\xfa-\xfb\xbf\x90\xb5k\x82\xe7O\xf5\xab \xca\x99\x9f:&\xe7\xab\xf2 \xfa\xed\xda\xe5\xbe\xace\xf3\x85\x9e\xa4\x1a\xf32\xab\xe2M\xdf\x8e7\xf6\xba\xea\xdai\xbaH\xb9t\xe6EG\xca}\xe9x6j7u\xdba\xfb\xf4 \x12\x9c\xa6\xee\xa8N\x9c\xb0\\R\xc9\x00NZ\xc5Q\xa0\x93\xb3\xb3\xb6P\x04\x00\x11\x0bm\xaa\xc6pr\xb6\xe6\xecXB\xb9\xfe\xe9\xc5\xb3}\xcd\x01\x18c\x95T\xb2\xda\xc8\x80gk\x91\xeb\x04 `-4\x9b\x03\xb5\xf7\x834K\xc4N\x92\xf2\xab\xceHU\xed\xb4\x0bi\xa9q,\xbf}bf\xec\xd8g\x0fw\x130Tk\xfb>|op6\x85\xf3S\xb9v\xc0U'^w7_\xa2\x96\x169\x9b\xe9\x87`C\xef`E\xb9\xee\"^O\xe9\xb9\\#\xac\x06*}\x99[\xb9*\xa0\xf2\xb7<\xb7\xe6\x9cFh9\xda\\)\x1f~\x97\xf96\x03\xbf9\x0d~\xfd\x1dIh5\xe2\x87U#>{\x8d\xb5\xa3&\xfb\xbdR!:\x02w\x9f\xab\xd8n\x12\xb4[\xe2CU\x89\x08KV\xfd\xc2\xa8?\x93'\x81@2x\x81]HH\x99\x8a\x84#\xe7%\x04\x03\x89ED\xfd\x06\x9f\x9f2\xe6\x0fx6%\xa6q\x15\x0d\x83\xdf\xdf\x94\xf6\xfc\x05\x19J\xf8\x0d\x9d\xa5v\xef\xe8*\xe1q\xde\xf6\xda\x9f\xf4\xf0\xf0\xbf\xbc\x87\x07e\xb0u\xb1~\x82U\xdb\xef>e\x00\x91\x8e\xad+\xc5sE]\x96\xce\xecn./\xee\xac\xdc\x84\xd8\x86\xed A\x0df\xef\xe0\xb9\xf1j\xb4J\xa1\x04\xd0P\n\xdc\xeb\xce\xc6\xf9\xf3k\xd3\xf6\xfa\\1)8U\x89\x19\xb2\x8a\x05;\x82\x02=\xa2o\xc2=\xf7\xf3\xc9\xd3\xd7\x0d[\xb5\xd9\x1f\xa6\x91\xad\xa7\x90o+ \x16\xea\x8b1e-\xe0\xf8\x15\x8d\xe7\xd09\x9f\xfb\xbe\x91C&\x1b\x95c\xb4[xtNa\xb2f%\x84\xda\xf7C/\xda/.3\x86NZ\x93\x00\x0d\xff\xb2\x99\xc09\x8c\xf2L\xc7uKJ\xbe\xccy\xbc\xe6\x87{\x17\x9ct8\xcd\xfd\xd2\x04\x1b]-\xf4K\x98|\xc4\xae\x9a\xfc\xb6\xb5\x1b[\xf2\xcc\x99\x90\x06\xc4$\x1d\xdaq\x06\x0b\x85\xbb\x10\x1dJ\xe5\xcb\xdd\"\xd1\xacEUq\xa4\x9a`UU\x00\xf4\xb2-|\x07@\xdf\xb1+\x17\xce\xd7'W\xff\xf6 \x89\xbc\xcc\xd8v\x93(\x08v\xc0\xf5.U\xffPw\xe0\xf2[\xc2\x1d\xefp'\x82r\x8a\xb8\"\x1c\xae\xd45!X\xcd\x0e\x8f\xfd\xda\xb8\xf6\xbe5\xf2\n\x0c-'g\xb1\x97d\xaej\x9c>AR\xa34\x86\xb6c\xde(\xdf\xa0l\x07V\xac\xe8\x7f}X\xc1\xd4*\xc5\xe5e\x9cH/\x0b\xc67\xc9\xcf\x06\x9c5\x81&5\xc4\xbdLKp+\xef\xf8c\x0f{\xd8h-\xafU\xde\xc2\xcfT\xee\xe3\x08r\x1f\x17\x9e\xf6y\x8d\x99\x1e\xb2*V\xa9y\xd4\xe9\xb2\xb0\xdd\x91\x8f0\nT\xf4\xc3Ag\x8aG`\xc5\xfeG\x13#D\\Yj\xae\xe1\xd6 0O@k\xa14\x10Bi \x84\xd2\xa0\xa1\x9eV\xa6\x13!\xef\x8b\xe3#+\x9fK\xa2\xd1j\xba=\x8c\xf6\xc3\xef\xf3C\x89\x88u\x0d\xc8\xdca}\xf4:ls\x7f1\x8d&\xeeO\x8e\xa5\xf1\xd8\x19\x16O\\\xa9\xa1,\xd5\xb4Rr\xc0n\xa7\xac\x9e:B\xcc\x12\x93\xef\xc8\xa4\xa2\xf5u\xe7\xe5\x9d\x8cyX\xf65\\\xbb-\xe3\xd0\xe1\xcaA\xd3\xa4M'\x83v\xd9Q\xe6Iw\x16\xf1\xd7P\xaaTs\xd5\xf6^z\xe9\xb9\x1b\xac\x8b\x84\x98\xea.\xbe\xaa\x07N\xff\xb2Z\x95hT7\xc4\xc3\xf4\xb7\xf9j\xa4\xd6\xd8\xca\x8a\x8b( \x107\xa1\xcd\x9bYTs\xfdd\xae\x9dp\x1eIE\x06\xafs\xfaTW\xe3T\x86\xb5\x0cf\xaa95[GX\x85RV\xe4\xb2z\x0c\x9f\x92`2\x85\xe6`z)\xa8p\xa7J\x9f$\xbbh\xc2\x8f\xb1\xc9\x06\x04\x0f\x90\xcc5\x1c\x8d\xd6\x11\xf08\x13\xc4\x8c\xe9\xcc\xf9\x91\xa9\xd8\xe9J\xc4o*\xd1L4|\x9c\xf9w\xfah\x12\xfd\xd3'\x9e\xebwhT\xba\xdd\xf6\xf1\x9b\xc7\x07]\xd6b\xad >\x1c\x13(\x94#\xe9\xa8o\xe8\xa6\xa0\xa2\xbb%\xaa\xda\xf6\x1b\xe6\x18J\xfe\xdav\xba\xf0\xdc@h\x8eP\xdby!\xe7rl\x95\x9f&2\xf3\xa9,l\xac\xe2\xf7\x8b\xd0S\xe0\x9f\x96\xeb\x043\xa9Y\x03\xd7xi\xf9i;\x01\xfd;0Z:\xef\x80\xe1:D\x1a\x0c\x92\x11%g\xc7e*\x92\xa5-t\xacq\xddF5\xb2\xe8\x8b[\xb9f!A\xca\xbd`&\xec\x87\xc5Zn:\x89\x98/\x17\x92\x8cY9u\xd7-\x0b\xc8G\x1eg\xb2\xa8\x96\xac\xff\xd68\xc4@\xae(\x96\xf7\xa7\xb1\xd7O\xc3%d\xbb\x8aWP\x87\x1340\xbb\xe5\xa9\xda\x8d=\x9e\x01m\xc4\x94f\x04M\xf0\x8d\x97\xaf\xfeC\xe1U3\xe5\x97\x84|\x14\xe7\x19\xf7\xb6\xb3\xc3@\xe6#\xae\xad \xd6\xb4\xe5\xf4\xd2(\xc83\x95S;\x99\x89\xa3T\xc6\xea\xd4W\x93\xf1\xf7\xec5v\xbc\xed\xe4Y\xf4#X\xc7\x1f\x0d}\xcf\xe3a\xe78[\xa8\x02:\xc7\xeb\x99O\xab\xef\x1fp\x0f\xf7\\\xbc\x90f\xafidx\x99^\xf0U\xf9\x1fG\xf0\xe0b\x91^\xad\xa7\xd221\xbdm\xa5\x9cN\x97\xb5\x8f\xc8wTZi\xe6d\xbe\x0b\xae\xd3\xe5\x81\xbd\xf4\x12\xf3eZ\xe0v2\x13\x8dy\xd2\x0f\xa2}v\x94\x15\xff\xb8Z\xf9\xd7\x1b\x9d\xc2\xdd\xde>\x17=\xd3IX\x88\x14\xc5 \x960\xc0\xf3\xdaT\xa9\x93\x8d_\x88\x96-\xb0\x86D\xe7\xba\xec\x02\xab\x89q\x13\xbf\xcaQ^`\x83\x06,.\xb3\x9f\x056\xae/I\xa4\xae\x056\xb4\x13\x1f{\x1b\xa5{\xe9\xfa\x95\xa8r\xa6i\x1d\xbf\x18\xc3\x9e<i\xd1H\x83\x08\xd1\xe0)R/3LIX\xf4\xaf\xec\xa4_R\xaf\xb2\xc9\xea\x15SDfr\xba\x02\xa6o\xe0\x1b\xd5,V\xacR$\x939\x16\x8fP\xb4\xe0\xb9\x9f\x1blA\xbe\x99W\x06\x1d\xcb\x9c\x81\x00\xcb\xdc\x8e\xf6\x97uY\xf3R\xd6\xab\xb1/l)\xb1\xdb\x81\xed\xf7\xfcK9\xb9$\xe4\x89\x98\x9fn\xd1\xcb\xeb\xcd\xe4\xfb\xaf\xaf\xb1\xebQ\x979bi\xf1\x8a\x17\x05&-\xfc\xf3\x9c\xc1\xc2\xd9\xa4!O\xa2E\xbb\x9b~\x9f*\xd7$\x95c\xd8- \x94 DZoz\xca?{\x02-\xab\\\xf1\xdc\x0e\x7f*\xb9\xc5\x14\x94\x02\xf2g\xd9\x17t\xca\xdb\x0d\xa1H,\xb0\xd8\xde<\xf9\xfa\x8f\xe5\x92V\xd9D\xa6\xf1K\xe0\xec56\xf4\xd3,J\x0ee\x86\x8fm\xc1RUVr\xe5\xad\xfb{\x10\xb9\xc6\x16\xac\xd7)Bvj}CWb\\\xcaTo\xbdn\x90\x1eP6[\xb6L\xf5]\xe7\x18e\xcd\xe5-\x00\xe4\xde\"U\x80\xd9\xb2\xca.>\xccM\xef$\xf5UZ\xac\xed\x01\xb4_\xd4{\xa44\x8b&\xa9\x1e^;\xf1\xbb,\xb7SgDX\xb2\xa1\x9fvY\x9d]\xd5\x08\xc1\xa9\xd5\x90\xed\x1aCv\xda\xe9J\xeb\xed\xec\xab\xac\x0f\x8f\xf8\xf5\x8f\x1e\xed0\xf7z\xbfj\xc8\xee7\xbf\x16/\xd8\x9cO3\xa7\xc2 \xe5\xbb\x83\xc1\xcc\xcd\x9b\xd2\xb9\xec\xe6M\xed\x12]\xf2)\x0f:\x1d\xe9a\xa6L\xe2\xbc\xcb\xae\x8b\xba&\xc9\xb2\xdb\xe9\xc8\xf0\x99(\\\x8b\x1co\xa2\xfdL\xff4\x07\xf6g\xe2$\x8a\xd3\"\x93\xc2L\x16\xc1\xc1j\xca5\xc0\x14\x17F\x92G8\x939\x83\xae|\x04U}]\xf5\x1a8*\xbe2\xadH\xb0\x82?\xd4\xe9\xc4p\xc3\x10\x12G\x02{V\"J\x96K\xe6\xe9\xbc\xb4\xd2\xf06<\x92I\x82.\xaby\xf6hO\x88=\xad\x84\x87\x1eOj\xcc\xa6\x8a\xdaL\xbc]a\xc5\xa0Rdq0Q\xaai\xec\x84\x84\x9c\xd1F\xfa\x0b\xf0\x9c\x04\xe0Cm\xe1\xbb\xdd\xda\x9e\xb8z\x90B\"F\x1d?\xa7\xab|\xa3\xd3E)\x19\xee\xb6\x8b.\xcc\x15\xf37\xda\x87\xe7\x1bG\xfaCi\x176\xff\xfc\x1d\xd9/\xfd~G\xf6\xbf8\xd9\xb7\xe8\x85\x9a\x13d\xce\xe0\x0b\xd3\xec\xf0w4\xfbw4\xfb\xab\xa6\xd9\xcf\xe7\x1ag!?\xb5It\xa28='\x13\xb2=\x87\xe3R10\xc4Kt\xba\xaf\x93\xb3\xa7-L\xe3E\xe5\xfb\xfa\xe6\xeeG\xa3\xb7(\xc9{gy/\xa5TA\xbe\xd5~\x86\x85&`\x13\x87\x0f\xfc\x97\x85\xa1\x93\xcc\xd4l\x8a`\xa8)\xed\x19\xcc\x04\xeaB$\xf9tlD\xff\xa6\xf5\x1e\xc2?U/\x91\x0f\xc0w\x1b\xbc7'\xb6f7\x9a\x19h\xb3\n\x03\x13\xbf\x98F!\x9e\xfc\x146L\xf6%\xe6os\xe3jwf\xa2P\x90\xdc\x80g\x96G!m?\xb3\x8c/\xbd\xc4Zz\x10\xe5@\xcdP^\xec\xa6<\xdb\xf1G<\xca\xa5\xbb3<\xb8\x7f\x86\x1d\x99\xeb|\x95+_\x0b\xad1s\x92\xaf\xd3\xd2Y9\x15\xeb\xa1/\xefF\xf9\xbd\xc6\x96\xe7d\xce\x82?r\x06\xfcx:\x1e\x1c=\x18\x05\xaf\xf6\x9c\x94\xbf|\xb2\xbbya}\xfe\xda\xe1\xd9\x13\xce\x95\xadYgy\xd6\xbftkq\xdf\xbd0\xf0W\x97\xceF\xd7\xae\x04\xa1s\xe1\xf5\xd3\xab\xb7V\xf7/]8{r\xd5_\x1c\xf0\xf3si/\xbctzu4\x9c\xf5.,\xbe\xbcvx\xfa\x84w\xc2\xcd\xbd;\x97\xf2\xde\x89\x8b\xe1\xda\x9d\xd5\xfdK\xcb\x8bc\xf7\xc4\xb5p\xd5?;\xef\\\xb9|\xe2\xf5\xd1\xe9\x93\x9b\xdb\xab\xfb\xab\xcb\x8b\x83K;\x8b\xfb\xab\xcb+\xfb\x97\x96V\x07\xee\x85\x8b\x81;\x7f\xf9\xd0\x1b]>\xeb\x9e8\x1b\\=\xb1\xb5}\xf5\x8d\xad\xb8wg\xd6\xe7+s\xf1\xb5s\xc1\xbas\xe5u\x7f\xf5\xfczz\xf5\x8d\xf5;\x9b\xdb\x17\xd3k\x17.e\xee\xe8t\xda;\x1f\xe4\xd7\x0eW\x07\xee\x89\xadS\xbd\xf3\xbb\xa7WG\x17\x87W\xe7\xb3\xd0\x1d\x9d\x9e\xeb\x8d^\xcf\x9c+s\xc3k\xf3\xbb/\xaf\x9e?5\xee\x8dv\xbf\xb3z\xbe\nw\xcf\x9f\xbe\xe3\x88\xbe\xe6O\xbe\xbcz>\xc8\xc5\xdfW\xaf\xec\x0f\x9c+\xa7b\xef|0\xec-\xa7\x83\xab\xa3s\xb7\x9cy\xef\xb0w\xe2r~mi\xee\xf0\xda\x1bg\x83\xabo\xbc^W\xde\xdf\xbcup\xcby\xe3\xe2\xad\xde\xf9\xdd\xc1\xd5\x13\x83\xd3\xab\xb7v\xf7W\xfd\xb3\xb7\xf8\xce\xac\xbf\xbe\xb3\xe8\xaf\x9e\xbf\x16\xf7\xce\xef\x9f^\x1d\xc91\xf9\xab\xe7O\x85kW\xce\xcdz\x17V3\xf7\xc4\xd6ao>\x0b6\xb7/~\x87\xcf\xaf\x8f{\xa3k\xf1\xb5\xc3S\xb7z\xf3\x07c7\x9c;\xbd\xea\x9f\xcd\xaf\x1d\xce\x0d\xbd\x0b[\x87ko\xac\xcf\xba\xa3\xd3\xc9\xb5\xed9\xb3o\xfcDv\xab7\x7fj\xe4\\qso>\xd8\xf3\xce\x0fO\xf7\xb7W\x07\xbd\x91\x9b]}ck\xd6\xf5\xe7\x0eQ\xdb\x87W\xafl\xc5\xde\x1b\xeb\xb8\xdc\x1d\xef\xc2\xc5\xb13\xbf\x9b];\x7f\xee\x8es\xfe\xdc\xa1;:w\n\xd5\xdd\xbb\xfa\xc6zt\xf5\x8d\x8b\x87W\xdf\x08d\xfdb\xfc\xab\xb7\xd6wv\xe7\xc4\xffV\xfd\xb3\xa6-\x18\x93X\x93\x15\xb1&\x87\x9b\xdb\xabw\xd6K\xf5\xd6\xael\x0d\xdd\xf9\xe1\xd0\x0d/\x0e\xc5z]\xda\xb9:\xbbvk\xef\xce\xa5;W\x0f\xd6\x97/\x1d\\\xba\xf3\xfa\xfc\xfa\xf2\xca\xdc\xea\xf2\xee\xfc\xda\xad\xbd\x13\xebw\x06'.\xed\xbc~g\xfd\xce\xe0\xf0\xd2\xce\xa5\x93\xab\xb7N\xber\xf5\xca\xa9\xb8w\xe5\xdc\xec\xb5\xcb[\x87W\xaf\x9c\xbasmt\xfa\xb0\xb7}V\xae\x99s\xe5\xe2\x9cw\xfe\xf2\xc6\xd5+sb\x8dg\xdd\xd1\xb9\xdc\x9d\xbf6vG\xb3\xfe\xea\x85\xadS\xae\xc0\xa1\xf0\xe2\xd8;\x7fn\xf6\xda\xf6\xea\xe0\xea\xfc\xb9\xf4\xea\xec\xdc\xf8\x9a\xc4\xad\x83\xb87\xba<t\xfd\xd5\x817:\x97zW.\xdf\x01|\xde\x95\xff\xdb\xb8si\xfe\xd2\xd2\xe2\x1c\xfcou\xe0\xcc_>u\xf9|\x90]{\xe3\xd2\xe9\xd5[\x8b\xdf\xb9\xb4\xbd:\xb8v\xe1\xb2\x98\xf3\x81{\xb8:\xb8:\xba\x1c:WN\x9e^\xbdu\xf6\x8eX\x0b\xc0\xab\xade\x81g\xde\xf2\xac\xef\\9\xb5w\xed\xca\xb5\xb87\n\xc4X\x8en.\x9d\x1e\xf6F\x81\xd8\x9f\xe0\xf2\x85\x8b\xc3^\xb8>\xea\x9d\xb8\x98m\xde\xda\x1f_\x9d\x0f\x0e\xaf\xce\x1f\x04\xe2oq\xe66\x07\xd1\x99\xd67D\"X\x8a\x82\xc0\x89Sx\xbab\xcd\x0f\xf7\xe4\x1f\xe0\xcb#\xff\\\x0d\xe3\x1c\xfe\xda\xe1\x07\xd9b\xc2!\x0d\xea\xd9<\xcb\"\xe0\x16[\xd2KX6\xa5\xfe+\xb3}\xcb\xb7{\xeb\x82\x11\xa5\xff51Ch\xcf\xecW\xac\xafS\xf6mF\x10G7f3i\xf4mF\x90T\x01H\xef\x81\x02\x10#\x88\xab\x00\x15#\x88\xf4\x13\xb7\x9b\xbf\xbf&\x87m\xdaqLx\xbd\xb10p\xab\x85!3\x16\x06\xae^L\x98}\x95\x85\xec\xbb\x8c\xbf\xca\xc2\xa3G;L\xc5\x0d\x17\x16\x86\x10\xa9\xe1jb\xd9tI\xa3U\xe9#G\xd0\xac:3\xb7\"?l\xb7X\xab3\x93%\xfe\xa8\x8dEg&\xb5\xfc2f\xd5wd\x96#\x9b\x14\nLl \x99R\xdbSb\x1c\xc9\xa8a\xa4|G\xdc\xe9(\x99\x05\x8a\x17\x12K]\xec+\x1aIPj\x0b\x9e\xdfE6\x85\xccj=\x98`9\x98\xd6j\xa0\x11\xa4\xd0\xd6\xebET\x95\x834\x0f\x82\xd4M\xb8\xed\x81)\xfd\x0bM\xc9\xfa2\x96\\q\xbc\xcb\xae\xb7\x8a\xf6e&\x9d<\x08j\xdf\x1e\x93\xc9\xec\x8cg\x8e[k\xf5\xe0 \x88B4\xaf\xad!\xed\x84\xd4J\xf7\x9d\xc1\x80'\xc7\\\x8dn2\xabN\xc8^c\xadcr(l\x81\xb5\xea\xbc\xc6\xa7\x1fG\x9b>3\xe97\x99e\xdc\xc0I\xd3u\xf9XZ\xdc\xf6g\xcc?+\xafj\x95\x7fw'\xbb>\xde\xe8Tb\xfd\xdb\xae\xc5\xceR\xa5\xde\x1e\xf1\x97\x1bE=?\xe0bI\xaa\xfb\x9c9\xbd\x80g\x0b\xacu\x0c\xfeB`\x8f\xa7{Y\x14\x0b\xb8\xfa\x13\x15\x08\x9cd \x9a=6\xf4JW\xb3\xafV\xe8A\xf0;J\x00\xbf\xdf\x1a%\x18\xfa^CV8\xa0\x01{\x9c\xc7K\x90\x8d\xb3\xa1=I\x0b\xf8\x0c\xa0\x93\xd0\x02\x01m\xba\xd2\x9bB\"\x88\xf8Sb\x05\xf1\xdb\x90DC\x0cE\x90\x8brw\xe2\xdf\xd0\xa2|\xabQ!\"k\x19\x94c-\xd9b\x8b< k\x86%\x93\xf1\xbe\xf4\x12;\x12NAe\xc0\xb6*C\xe8\x9b\xa9\xcc\xf5\x1a{\xb6\xe1\xd89\xf3C\xe65\xbb>z(\xedG;\xefL\xd2\xf6\xf5u\x83W\x1b\xec\xa4\x7f\xa2\x83\x1c\x1e\x0d2F\xdc)L :\xc8\xa9\xa85\xb1'\xa6z\x0b\xd8w\xd9\xdc4}0\x99\xd4Q\xbe\xe5\xd2\n\xa3\x90\x0b\x02=mT\xad\xa0\xea~\x98O\x91hob =\x84^\x10\xb9{0\x86\xae\xf9\xe8F\xc11\xf9(\xa5\xfc\xde\xd8\xd6\xf3\xda%t\x0cW\x8c\x0c%\xd7K\\\xc1\\\xca8u\x88=\x11\x97\xbf0\xa7J\xb3\xc3\xa0\xf6yl\xfd\xf3\xfc4\x0e\x9c\xc3\x05\xe9}\xacv\xd1\xf2nG\xf9\xd7`9+1\xc7\x9a\x14J/\x86\x19v\x8d\xc2\xf3;\xb6\xf3\xe2\xd8\xce$T\xf4\xfc\xb1\x1d\x0dK|jZ\xc9\xa9\xa8R\x16\xa1Z\xfb\x89\x13\xc7<\xa9u\xd2{!\xd8S\x1c\xc4vI\x85\xfe\x1d&}}\x98\xd4\x93\x8b\xfeU#\x93\xea\xe5+\xc5\xa5\x8e\xfe&\x98?\xcd\x91Y\x1af\xabF|.\x19t\xeaQp\xd2\x82f\xfc s\x12\xee\xb4*\xb7\xec2\xb5\x936\x1d}\xf1\xc6}\xd1\x02j\xb9r\x86\x8c\xa1j\xaa3Tw\xa1Ws\x80(\xdb\xd4\xe6\xab/z\xb0dV6(-\xc7b\xe9b\x08\x85lo\x81\xeb\xe8\xcc\xba\x17 \xd4jB\x00\xa7<02\x15&\xfc\xb5\xc0\xf8\xcc(\x0f2?\x96V\xa7\xeb\xad\x96\xf4\x0bo\x89S \xaf\xf6j\xb3\xac\xaa\xa3\x17Q\xa4\xedZ/~\xf5\xef\x1bC\x13\x9e_\xa9Q\x0f\x0d^\x16\x1d4\x14\x06\xedF\xafj}\xb9\xa4hte\x14g\x87\xb2\xdd\xfa\xe2\x91\x1e\xab\xdc\x17\xd8?\xf9<\x12{\xcd\xfe\xbd-\xb3u!\xc8\x17\x15\xfa\xc4\x81jt\x0f)Q\x16+\xf9\xab\xad\xa8\x17\xaa1\xab\xac\xc6\xb6\x86\xe5 \x97\x86N8\xe0\xc6?\x05\xfei-/P\x94\xbdV?\xdd(V\"n\xfdt\xd5\x80Z\xf6d\xd6w\xbb\xacu\xecX\xab\xa3DWA\xf6\xaaq\xca\xd3\x054|\x99\x012}R\x1a\xa2 Y1\x91m\x999\xb7)}\xfd\xddnQ\xe8\xb7\xc9\xc2\n|92\x87\xac\xfe\xd5\xa3T\xbd\xd7\xa8\xda\xab\x86\x93BM\xcb\xd4\x81\x9e\x99\n\x8a\x95\x9b\x9a\x18\xf2\xc9'\x91\x1a\x08\x9e\xd6m7\x93\x83p\n*\xe3K\xab\x02\x84\xd7+N3\x939\xc9\x80g3\x80Ei\x83\xf3\xb43\xe1\xa5\x1b\x01\x8f\xd8k\xcc\x9f\xce\xd0\xaf\x7f\xc6\xb7\x06\xe8\n\xb7\xfb\x91\xdd}\x9e\xe0~\xd3\xa4\xc4\xe7\x9a\xf6\x04=\xd4\x93\x97\xe5\xba\x103\x04\x81!\x13\x0f\xbbS\xd3l\x17\xdc\x1a\x12[\x88>\xc2\xff\xeaR\x8f\x85\xd0`.\xd8\x9a':A\xe8g\xbfe\xc1\x9f\x91\xb9\xb2\x17\xc2\xec\xd9d\x86\xcf\x9e\x83\xe9\xb3)\x88\xab\xf3e\xf4\x00\xe8 X`\xad0\x8ab\x1e\xf2\x84\x85Q\xc2\xfb<Ij\x07\xaf\x7f\xd3\xe8\x10\x81\x1f\xee5\x05\x97>\x9fCe\xd5e\xb0\xce\xb6\xd1\x8c\x98c\xf3\x04\x9d;\xf4\x03/\xe1\x96\x90\xeeIK\x0e\x9a\xbc}U'\x9a\x8d\x86\xdc\x1f\x0c\xe5c\x13ymR\x18\xf1\xebE\x89\xc7\x93\x05eUj\x10H\x9cd\xe0\x87\x0b\xac\xe1\xa1\x92\xd8\xf1<?\x1c,\xb0\xd9iW[\xe6\x15\x91w\xf9$\xbf\xc8\xdd\xaa\x01\xa0t\xf7>\x95\xfa\xf2O\xc9\x04\xb0\x1ee\x8b\xa1?r2\xee} \xc9_\xdfN\x17'\xccO7\xc4Y\xf5\x1a\x84\xc2\xb1\x8e\x19,\x1fL\x85\xf0\x82\xb1\xd4\xe2v\x18\xa5n\xe2\xc7\x99\xbe\x00\x98@6\xef\xda\xce\xc1oO\xe5Q\xab=I\xdb\xd1\x0b8I\xdb\xa9'\x11\xac\xb41\xec5p:\x0e\x95\x8f1,\xfc\xc4\x9dI:F\xe3!\xe8by\xb3\xe3\xc5\x8b\xa6z\x15,\xa2\xa9\x1a\xc6\x82v\x00d\xec\x9b\xe1\xffK\x9dp\xbcZ'\x1c\xcf\xe6j\xe3\xeb*6\x1f\x1c\xcf\xe6j\x93+\x8057\xa2gs\xb5 \x14\x80\xe4\xecw\x15\xe0\xf4+\xa71\xa8\xaf@sd`\xb1\x86\xd8\xfdt\xbc\xaf\xc7OG\xffE\xb4\x91\xe7\xa5\xf5E\xfcQ\xd2\xb5\xa5 \xc1d\xbc\xd6\x8c5!\xee(\xa8\xc4\x1d\xb9\xe0\x15\xe4B\xdc\x91{\xf4h\x87\x05\xd7\xdd\xaaW\x90k\xb9\xe0SK)\xa8\x866\x99\xe5\x84\x11\x81\xdf\x19aF\x115\x9b\xd5\xc5\x1c\x052\xe6(\x99\x19\xf0\xecR\xe4\xf1@HO\x13E\xec\xd2\xf8\x94\x17?7^\xfc\xad\xdf;^z\x15\xfbxKf\x93+2\x87\xfd\xe1\xcc\x1f\xfc\xde\x0f\xca%~p\xfcx\x97\xb5\xa4\x05\xc0\xd6\x96k\xd2\xd8\x1eO\xdd!\x1f9\xa4\xc9\x9aB\xbaQ\xd0\xca\xc8\x14\xee\xaaIo\xf1\xfe\xb6\xac\xf2<\x93N\x14[\xab\xbc\xbf;\xd3\xf7C\xafx\xde\xdbf!\xb8\xdb\x85\x9c\x14\x84\xa1'\xc4 \xa5V8H\xad\xc2\x81\xf3<\xc2\xc1\xd7\xca\x18Uj!\xb9=\xcdJ:\x9f\x98\xff\x94)2\xca\xa7}\xf9\xd8\x81\xc2r\x83\xebK\xe5\xb2T\xc2o\xe7~\xd2\xc4\x99SY.l4\xd2\xb9\x8a\xcbo\xf1~}\xa1\xbe\x99\xc3f\xeds\xf9L\x11`>\xa3nz\x9b\x8d\x832\x8dd\xbb\x05\xecN\x9e\xe4V\x83\xb9b\x08\xa5%\x95\x9aXx\x0c\x857\x13\x7f\xe4g\xfe\x98O\xac0bgX+\x92#i\xd0\x1e\x06\x82\x04\xc2\xab\x902)\xd0\xef\xff~\xc2\xfbuna2 \xa9|\xccx\x00\xe1\x0f\x1a\x07\xcbt\xab=\x10\xb4\xec\x88S\x14sJ\xc5\xccIo\xa7P\xcc\xb8\xa3\x04\xb5\xd6\xdcI\xa1~\xe5[\xa2\x91\x18\x06\x93\xff\x7f,\xf3\xb3\x80\xd7Z<_`\x7f\xd0\xd3\xcd\x9b\x19?\xc8j\xfb\x8b\x05_\x10\xbc\xa8\xb6c\x7f4h\xec7M\xdc\x05\x16\xb6O\xce\xcd5!\x95V/\xe7g\xe3\x83\x86\x8d\xdf\xf7\xbdl8\xb9\xd8Du\x96\x19\x15t\x8d\xf7E\xbfs|4\xe9\xa5=\x95\xbcL\x92\xc2\xc0\x11\xd8<\xa1F/\xca\xb2h\xb4\xc0Zb\xb0\xb5%k\xe2_\xea\\G\x04\x15=\x94\x89\x1a\xfctcq\xfbD\xbbS:\x07\x1e\x8f\x13\xeeJ\xcd\xad\xa6z\xba\xef\xcbL\x84\xae1:J\xbe\xe9\n\xa5\x8c-\xb0#G\x06]y\x06\xcb\xa7+;\x8c9\xbc\x997j2\xf9\xb8N\xca\xcd\xd9]h\\\x99 \x87\xc7\xa3\xb6\xa1\xc6\xe6\x18Bo5\x86\xc6:\xcfelb*\xc0N\x90\xdc\x05\xd6@\x9d\xf5\xaf\xe0F\x8d\xf7)\xfa\x07\\\xa6\xf1\xa12\xfd\x0b\xe5\x14\xa7xL\xbf\xc0\x85\x05v8\xb9\xb8d;\x0b\xccm^\xb4\xa6\xcc\xb1\xb0\xff\x8e\xe0\x0b_n\xfb\x87_r\xfba\x08/v\xf7\xff\xf1m\xa8\x96I\xea\x1e\x8b\xd3\xbf)\xf6T\xbd\xf8X\xbf\xa9P,\xccG=\x9eL,\xe6\x87\x19\x1fLQ\xae\x17E\x01w\xc2\x86rZ\x03\xfc2\xc86\xfe\x92vh\xa6\x91C\xc9\xa9\x13\xef\x02\xd9\x7f\xe9\xd8d\x85O\x8c\xe7\xac\xb5\x0c\x95\xb0s(\xb7d\xe70\xe6\xd4,\xa4\xd7\xa8o\xf6YZ\xa2\xb9w\xc9\x89\xa5Lm\x93\xd0\xab\x1b\x17\x9b\xaaB\x97i\xae\xa46o\xca*\x15\x95\xa3\\\x0b8Um=\xd8\xcd\xa28\x1c\xc4j\x99\x92\x88?\xa9\xa8\xa2\xf1E!q\xc4\xaaE\x8a}n*\xc5\x0fbG(\xac\xb1`\x87EA \x00hx\xd3\x14*\xf1VS.\xf0\xd3\xf2\xc2\x14\xa8Q\x8d\xa6\x87L\xa5\xbf]\xfb\x9e\x18Q\xea\x08\xdd\xfd\x8e\x0c\x90\n\xa8\xc1/\xb7Y\xd6\x84\xe6\xda\xce\xc1J\xd6\x95EN\xce\x9d\xea\xd8\x8c\x7f\xb2\xd0\xec)\xab\xfdO\xc2\xe6N\xd8\x0dm\xf9\xd7kh36\xb0\x19\xc7\xf3.D\xd1^\xbb\xd5\xe3\xfd(\xe1\xdbjy\x14\xd9M\x1b\xd3:\x9a{\xe6a\xc2\xfb0\xcc\x94g\x8bY\x96\xf8\xbd<\xe3m!\x80\xb7\xba\xf6\xdb\xbfN\xb74LlzM\xa7q\x89;\xfe\x87\xd7\x17\x8f]\xfbA:{\xec\xf4\x91\xd7~0s\xe3\xe8\xef\x1f\x1f\xa8d\xc5Ug8\xba\xda\xf5i\x98\x8a\x85\xd1\x88\"\xf0\x94\xae\xf5\xe2\xf2\xf2\xcd\xc5\x9d\x9d\xad\x05v\xbd\x05\x97\xe8\xadj\x86P\x92\xda\x82\xd5\xe6c\xc2C).\x11\xd3(O\\\x8bE\x00\xee\x19\x1a\xfc\x89\xfcBm8s\x06\xee\x0eZ\xd2w\xbc*B\x08\x95;mgE\xd6\xe6\xa4N{\xac\xbb\x94\xach\xabN\xb2\xe7E\xfbaU\xa4\xbbK\x0d\xac\x10\xbbq\x86\x85|\xbf\xb0c\xd6\x08\x8f\xc3l\x14\x88clg}\xd9a\x1c\x0d\x12'\x1e\xf2\xa4\xbeP/\xe1\xce^Z\x0f\x0f\xfcp\xcf\xef\x1f6\x17\xd8\x91\x9b\xbc\xc0Z7{\x81\x13\xeeY\xd2\xa8w\xd4EK;\xb3(\xd0\xae\xcc\x12\x96\xa3\x850w</\xbd\xc4r\xf1\x7fB\xbf\xfb2{\xd0&I\x9a\x8a]\xb1\x8c\xcas\xc2\x01O\xa2<\x0d\x0e\xb7y\xb6\x1a\x86<\xb9\xb0si\xadN#\xbfy\x13v\x83*\x1fHH\xe8\xe00\x85/q\xbbS\xce\x00!\x88\xeb\xec\\\xe7\xc54V\x9d\xe3\xa2\xe3\xe6\x99\xc0\xe2O\xdeB\xe6\x02\xc7@\xfe\x1aA\x16{ \x1f\x0b\xc8\xa7\x7f\x82\xeb\x18\xc8\x8f1\xc4]`\xadg\xf7\xfeo\xf2\xd9\x93\xdf\xff#\xf9\xbe\x02\xe5\xff\xee\xdf\xe2\xce]?\x11m}B\xfa\xd6\x80\x7fE\x000\x8f\x8f\xffW\xd2\xd4\xe1\x02k\xfd\xfd\xbf \xe5\xe5\xe7\xff \x97^ \xfc\x81h\xff\x1d\\\x9e+\xc0#\x0c\xe8\x8b9\xbcE\x96\xaf\x9f,\xb0\xd6\xff\xf7W?{\x9b\x94W\x80\xff\x0e\xd7\x18$\x8e\\\xd6O\xde\xc4U\x0c\xe4\xbf\xc7\x90\x80\xf7\xd3\xc3\x91\x18\xc1\xdb\xff\x8e\xc2\xe2\xa1\x15\xb2\x18\xc4Cg\x81\xb5>\xff\xafI\x15\x05\xf8\x9fq\x8d\x91\xe3\x8aa\x7fJ\x86\xa6\x01\x04\xb1FN \xd6\xeb\xd9Gx\xd7\x17/m.\xb0\xd6K\xa4|l\xf9\xba\x18J\xccy\xfc\xe7\xb84|\xbf\xf7!\xfd\xae@\x8f\x7fNA\x00\xf8K\nH\x83H>)\xf1\xec\xf1_P\xe0X\x02\xfe\x1b\x02\x90\xb3\xbbGvDz\xa6\xb6\x9e=z\x9f\x02d\x94\xac\xb5\xca(\x85\xf9`,\x02\x90\xe3\xc8\x16?\xb2\x03{\x12\xf8\xd8\x0e\x94\x07\xf2\xd1\x13;P\xf6\xf9\xe8\xa9\x1d\x08\xb3\xf8\x1b;P\xe2\xfc\xa3\x7fm\x07\xca\x85y\xf4?\xda\x81\x12#\x1f\xfd\x1b\nL2\xb9\x02\xbf\xb2A\xc6r\x8e\x0f\x08]\x01\x18L\xe3\xaf(0\x05\xfc\xbfGhE8HEo\x9f\xfc\x84\x02\xee8\x89\xc0\xe7g\xff\xfc?`T\x8c\x06\xd2\xee\xfa)9\xd0\x1a\x80[[\x8c\xe2>\x1c\xf5\x7fO\xaa(\xc8\xcf\xff%\x86\x88S\xf0\xec\xfe=\xf2Y\x10>\x89\x88d\xe9bID\x1fcJ\xe6\x00F\xdf\x7f@\xbe\xfbr\xc1\xee?$\x80(]`\xado\xe3Y\xc4qpxN1#+\xa9s\xe28\x89\x0ej\xc6-@\xfc\xb6u$\x8b\x89\xf4\xac\xb2l\x83\x06|\x80k\xa4.\x10\xcf\x7fI\x0e\xb1\x81\xfco\xa4N\xea\x0f\xe4\xc0\xef\xff\x8cT\x12X\xf0\x07\xe4\xeb\xe1\xa8f\x17\x04DM\xe6\x9f\xe3n2?\xf0$\x8d&L\xd1@\xfe\x07\\'\x17\x02G\xeb\x13\x82Q\xea;!!\xfbn\x14\xfa!\x1c\x14\xcc2\x9d}\x05\xf9\x08S\xf5\x9e\xe3\xee\xb9\x11\xd0\xab\xfb\xefZ\x80<N\xfd@n\xeeo\xf0\xea p\x9c\xf8R\x04~\xf6&f$\x02\x9a\xfa\x92\xfd\xdc\xfb[;\x0c\x96\xeb!^\xae\xb3\x02\x1a\xc8g>Z\xcf\xee\xbdG\xa0\x89\xa4\xbaO1}\xef9\xc9\x98\xcb\xb1<\xc0\xfd\x9du\x92}.1\xfb]\xcc\xbb{\x05\x08\xa3\x1a\x80\x80dS`/\xd9\x13\x80?%\xf3\xee%{\x99\x06\x92%\xab]\xeb\xb3 s\x90\xfd\x81\xcf\x98\xe7\xf6\xbc\xdby$\x97\x1dK\n=\xee:y*W\x0e\x8f\xec\xac\x04q+\xac\xd7\x08\x1b\xc5\xd9\xa1\\\xf4G\x98\x92\xf4\x04~X\x91\x83'a\x94\x8b:oc>qV\x82\x82\xc0Ok\xc0\x99\x9430\xf9\xeb\xa9\xef\xff\x0b\xfd\x0e\xa2\x0c\x1dB\xb6\xcf9\x1co\xd2\x89\x96\xb4\xc8\xbej\x00f6=\x7f\xe0\x02\x05~\x88\x05O\x01\x02\xd1\xf3\xd9/0 \x16\xb0\x1c\xaa\xe1\xc3\xdf\xf3\x07\x91\x17\xc1\xb9\xc4\xb2\x93\x80\xc5\x01l\xe4GX~\x12\xc0\xcc\x1fq\x80ZF\x93\xdeV}~D\xd0\xdd\x1f\xa4\x99#\xb9\xc5_\x90\xa9\xfb\x83,\xf1\xa5,\"\xf4&Q\xe6=rr\x8b2\xd0\xc3{\x98\xd6\xf4\xfcAnF\x8e\xa9W\xcf\x1f\xa83\xfa\xd02)s\xda\x1e\x92\xe5\xd8s\x92h_\x80\xde\xc7\xd4\xa2\x178\xee^\x10\xdd\xe1J\xb8\xfa\x10\xcb,\xb2@z;w\x12 \x7f\x0f\x0b<\x12\xae'%K`5\xa1R\xc2,\x0d\x968*\xa5\x02\xb8\xb5}\xf6\x0b\xb2;\xe5R\x89\xbaT~\xf6\x1e\x96\x02\xa4\xae- \xff\x023\x86^\xb077/\xeb\x90\x03\x12\xec\xcd\x9d\x94\x10BE\x82\xbd\x13\x00\xc1\xc2\xb2LO !\x98\xa1\xf5B\xb1\x18g\x9e\xfd\x183\xda^\xc8o\xe7\xbe$\x07\xf7\xff\xda\x02^\x07\x94~\x8a%\xc0^\x08\x80w\xb1\xbau\xd6\xc8B\xff\x07\xaebd!2nh\xeb\x01\xe9]_i\xdb@\xfb\x99\x0f\xe8E\xe6\x1a\x1d\xf4@J\xf9\xf0>\x05-\xaf \xc8\xcf\x7fa\x81\x04\x12\x82YT/:\xf0\xa0\x0eV4\x04D\xd6\xf9\x19^\x04\xd1\xda\x96\xac\x83%\x11\x01\x91\x07\xd6\xb2\x08\x07\x1e\xd4!\xa8\x10\x1dx\xb2\xce\xcf\x08O\x8f\x0e.\xc8*\x96\x01H2\xfa3r\xf6\xa2\x83\x0b\xcb\xb2\nVo\x05D\xb2\xce\x9fciD4\x06u\xe8.\x1c\x0ce\x9d\x9fa\x92,Z\xdb\x95u\xb0\xbe\" \x92\x95\xfc\x9c\xf0\xfc\xe8`\x08u\xb0\x02$ \xb2\xce\xcf\xc8i\x8e\x0eF~\x08\x04\xea\x01\xa1\xf2\xd1\x81&^\x0f\x08k\x8d\x0e\x0c\xd5}\x80\x15\xb5^t\xb0\x0b{\x8e\x95\x0d\x01\x01<\xc1\x82i/:\xc8\xa1\xce\x7fk\x81\x00\x9e`\xa5S\xb4\x06{\x8e\xb5N\x01\x01<\xf9\xa5\xa55\xa8ci-\x07<\xb1`\xddeY\x85\xd0\x92\xe8@\x9e\xfd\x9f\x11\xca\x16\x1d\\\x06\xd4\xb2\xec\xece\x89[?'\xb49:\x18C\x1dB\x95\xa3\x831\xe0#V\xb6Dk\xb0j\x844F\x07\x97a\xa5\xb1V'Z\x83:XA\x11\x10Xi\x0b\x0e_\x86U\xb3\xec\xf5eXi\x0b\xfa\x8c\xa1\x8e\x05y\xc6\xb0\xd2\x04\x0b\xeae\xe8\xb3\xca\x98\xf6k\xb2o\xf5\x80qO\xb2\xf7\x8f\xf1a=\x0bZ\x10\x95\xb7zF=\xfa\xdf \x84\x8f\x84p\xf7\xec\xad?#\x90:\xc9>Us!R}/\x8d\xc4:\xff\xe0\x07\x96\xefR\x85\xff\x90\xc8#i\x14\x0c\xd3\\\x02\x7fEHv\x1e\xc8m{\x93lu\x1e@j1\x1bH)o\x7fj\x01HM\xf9 \xb6L\x08\x08\xe8\xcax \xce\xe6F\xdf\xb35\xa7@\xb8\xd6\x92\xb6E~\x8a%3\xd7@~J\xea\x80\xfc\x88\x89\xbc\x12G\xefar\xe9:\xb16ta\xf9\xcbu\xe2^\xa2d\xc3\xc7\x98\xd5\xb9N\xac\x9a|\x8c\xf5\x7f\x01R\xb5\xf0\xe8\\'VB\xecc\xcc9\x96\x9c\xd8\xcf\x9c`\xd9\xef\xf7y\xc2\xc3\xccw\x02\xc9\x14~\x82w\xdaubPY\x1e\xff\xe7\x7f\x8f\x1bq\x9d\x04\xb6\xf3-,1\xbaN\"\x15\xd3_\xd3\x05;\x0c\xf8!h\x17X\nqu_\x8f1\x82.\xe9\xf6>\xc5<\xd35\x10Z\x87{\xbe\xd4\xc7\xc9\xb2\x18\x08\xe6YKJW\xf8\x14\xa3\xb4\xab\x01xc\x96J\xaa=V\xc0\\7W\xf3\xa1\xa3\xce\xe34\x95\xc7\xf41f\xf6K\xb0e\x9fb\xb3\x8b\xab\xbe\x93\xfdW\x93\xf9\x18\xcb\xa9K\x02\x1086\x90[R\x1b\xb1\xce\xe6J\x7f\x86\xd6\xc7\xf8\x84.\xf10\xe3\xc9\xb2\x1c\xc4\xc7\x98\x1c\xb9\x12\xe8\xd9\x81K\xfd\xc4\xbe\xdfZ\x9f\xc3D|\xe9\x02\xa8\xd6x{\xdc\xa1\xfc\xfe\x0fdC\x87\x1c$\xe5\xbf\xc4b\x98\x84\x8c\x9c\xc4\x0e]\x1a\n\x12\xfa9\xedF\xaa\xcd\xa4\x17\xb0\xe4\xfd\x82l\x00\xa0\xc6\xaf \xd5\xf0\x13W\x91\x1a,\x9f\nP\xc0\x9d$\x89\xf6\xb56\xf2\xce\xffY_\xc6\xe8\"\xef\xfc_\xd6B\x1eX\xc4\x9e=\xc0\xb2\x8a\x02k\x0d\xf8\x01\x96K\x14\xdcS\x06\x9d\x07X>Z\x92\xf0e%\xd0c\xd9E\xd5\x16L\xf5cL\x9c\x15l[T\xfcs|\x9a\xa0\xd9KF\xd2\xc3B:\xc07\xb5\xb0\x87%u\x00\xef\x18y\xcf\xb2\xba\x92c|\x88\xb5z\xd7\x07=\xd3\xb6\x1f}}\x8c?\xc2\x07\xd2\xf5\x93\x11\xd8^\x9fb\x0b\x82\xeb'\xa9B\x8b\x0f\xb1\xcc\xb5$\xd4\xb7}?\xe5KQ\x98Ey\xb2\x1af|\x908\x923\xde\xc3\x87n)\x88R\xbe\x94'\xc1\xe1r\x94\xf7\x02\xfez\x1ee w\x90-1%\x8b2dc\x82\xbc'\x97\xe6\x97X\x0c\x93\x90\xdc\xcf\xac\xc0\xa5\x08\xac\x89\xcf\xee\x91\xe3\xad \x0b\xb6\x1ap\x03\x83Ey\xd7\x80\x88\xfd\x16@\xb7k`\xa3\x91 Y]\xdbw1\xec\xff\x8a\x02\x80\xd5\x12\x16\x14\x8d\xe2>L\x07Kb\xae|\x19a\xc4\x15\xdd\xb6\xd5\x0c\xf8\x01`\xd7\xdbx_\x8d\x99\x90p\xca(\x1chv\x8bI\xddR\x14\x0e\x92\\ux\x1f\x0b\xbaK\x05\x0f!\x18V\x80\xf0\x11\xb3\xe1\x15-#\xb5t\xdb,\xb4\xfaNw N\"\xb8\xd6\"\xacI\x82r7\xb3C76\xaf\nR@d\x9e(>\xac\xfb\x9e\x02g\xc0\xe7q)\xca\x05?i<B\xd8\xb8\xe5&\xea\n\xe8\x1d,\xaa/%Q\n6/\xb2\xba\x1a\xf2\x97d\x04F\xf2\xc6\xda\x82k \x84\xab*\x81\xf8)\x96,\x05@\x1e\x85\xa7XcsS\x10\xdd\x9e\x12\xa2\x93\xe6 \xdc>%\xa2e\xa6\x90\xec!\x99M\xee9I\"W\xe7}26 \x93\xeb\xf3>^\x1f7\xe7\xb1\x84<$s\xcdy*9\xc7C\xacM\xb9y\xa0\x97\x1b\xdbv\x01$\xa7\xf5>\xd6A\x96\x94\xbd\x95\xf0i\xf8~\x0f\xab\x9an.\x84b%\xf9\x126\x92\xc7J\xfe&\xd7:nn\xe4e\xc2\x96s#/\x13\x11+\xd7\xf2\xf2\x03K\x83\x11\\\xe4\x91c\xaf\x84\xbc{O,\x02rn\x90\x92\x90T \x92\"\xe0\xfbX\x8dv\x05y\xe7\xb7\xe3\x84\xbb5\xdb\"\xe1i\xee\xd6mN\x12\x1cjc.\xd6\x80$\xb00\xe7\x12\\\xcd\x93D\x1a\xe6?\xc6J\xb7\x9b'c$\xb3\xd0\xad\xd7E\n\x91\x85N\xbc~d\xea\xba\x87\x0e\xaa|\x83F\x04V}\x83v\x0f_\xc5\xb8\x87\x81\x9b \xda\xf3\xec]L\x90\x97e\xaep\x01z\x13Sc\xaf\x00a\xc1\xd4s\x02}\xa3\x81\x0f\xd8\xb2\xdeh\xd2\xdc\"\x00~\x8aq\xde\xd35(\x00\xc4\xb171QXv\xd2!\\\xb0\xe1\xbd\xf14\xe4\x01f\xea^\xc9>\x8f\x97\xd5\xeb\x05\xd2\xd3\xe0\xd7X\xc8X6Z\x15\xde#\xcf@pc\xcb \xb3cv\xe2\xc1g,\x1e,\xdb\xb5M\xf0\xf5\xf8 >\xb3\x9e\xd7\xb0]z\x1d\x7f\x8a\x8f\xf3\xf2r\x94%\x0e\x984\xdf\xc7\x94\xd7\xf3\xa2,\x05!\xe41FQ\x8f\x0b\x0e\xff1\xd6\xe7\x969p\x1e\xac\x18,\xf3\x00\xae\xbf\xc8\xdc5\x00\xcf\xde+\xe9_\x18i\xbd\xbe\x9f\xc2\xd1\xf9\x00\xbb\xe0,k\x85 \x8f\xc0\xd3\x00\xb28\x17\xe0B\xe9\x03l\xeb\xf5\x86\x0ep\x8a\x9fb!Y@`=\xb1\xcc\xb0\xec;n\xe2g\xbe\xeb\x04\x8bun[\xa52\xa06\xfc\x1a\x0b\xa7\x95\x12B\xd6\xd5mQ,,J\x9eW\x9eT?\xac/\xb2\xa3\xae\xeb\x7f\x8d\x8dx\x9e\xefH2\xfb\x10[\\\x96}g\x14\x815\x86\xc0\xbc\xc90#Gcs\x9e\x80\xa75\x10\xb9h\xd8 N\xad0\xe4\x00\xf8\x03\x07\x04\xe3\xdf\xe0U\xf2\xfc\xd4\x97b\xeeCL\x18=y\x13\xf4 \xc1n\x7f\xec\x83c\x83\x1d\x12\x85\xc6\x94\xfe\x90 \x9a?\x8e\xc2\x03+h\xf9\"\x9ct\x8c5\xde-P\xda\xb1\x1c\xe3\x05n\x94\xc8\x81\xbf\x8b\xf9\x9b\x17\xb8\x89|b\xe0\xd9\xbb\x98\x0f{Q\x10H\x94\xfe}\xdc\xbd\xb9\xa9\xc2:\xb2gD]\xacH*c\x06\xde\x0e\xaf\x06q\xa3Li\xc2?&(\x16eJ\x9f\xc1$[B\x94Pq\x1f\xd3\xa0\xe5([\xb9\x9d\x83<k\xabi\xeeB\xeean\xe3E\x99\xbe\x0b\xb9G\xa8N\x94\x15W\xaa\x0f\x08E\x90g\xae\xe2?\x81\x91\x0d\x8e\xa5M\xe6\xc6\x12'\x94\xacYF\x0d\xdc\x0f\x17\x13\xc5\x81\x08\x0f\x842k\xbc\x9f\x15e\x08\xd73e\xb6\x84PQ\x14\xc4\x13/\n\xee\x80\x84A\xd8\xa4*\x11\x85\x83J\x97\xbf\"\xcc\xbcR\xae\xda\xed\xaf\xb0\xa1\xa6(\x8c\n\xe2+S(\x88&\x81\x8fE\xa9\x90\x9a\xc5\x03\xfb\xc2\xee\xc6E#\x14\xb1\xa0Du\xf1)\xfa\x8bR\x97y\"\xe9\xe7Y\xe0\x14\xf70\xa7\xa8\xb4Ad\x15\x01uj\xb7\xd7+C\xadue\xcb\xaa\xeb\xf7k\x0b\x94\xe7\x8a\xb5\x17QH_\xc6\xfc\x1d\xe1\xf2\xd1~h\x06!\x8f\x0b\x91\x12\x04x\xe8$q\x14\x85Z\xae\xa5<\xb1(c\x04[\xca\x1e\xa3\xfd\xd0\xa0\xcbe\x19\xaf%\xca}@\xf1\x19\xca\xedp^*\x85i\xa0.U\x14y\x07+S\xd5\"j\x11?\xc0\xc64QJ\xa3S\xa9?\xac3\x98bE\x99\x9fb\xc3\x08*\xa3{\xc4\xba\xb3(\xa6q\x97\x9e@ +\x10\n\x1b_\xbd\xa4$\xb0\x12\x9a\x98\x18\x9e\x81\xc7\xef%\x86g`k\xfb\xb2\xd1\xd8I%\x03!gu\x1b\xb8\x19\x11PS\xe0f\xf8,yp\x85\xf6\xecC\xac\x12-\xa7Y\x12\xed \x81\x99L\xc6@\x08\xd6\x1a\x15\x9f\x08\x87Y\"o\xfd\xde\xc3\xa2\xa1\x00HK\x0f\xf1}\xf1r-\xcf\xe1\x93\xe3\xe5C\xb5\x83\x98\xae{\xfb\xc6\xe3\xe6\x11\x96a\x96\xaf\xc1\xca\x10e\xe2\x0e\xac\x0cY\xe3;\xfe@k\xc1\xbf\xc2\xc3^1q\x0c\xf8b\x85\x1b\x08\xb6\x1bq'\xcd@\x17x\x8c\xcd]+F;\xc1\x96nn \xd8F\xce\x95\x01\xf7>>8+:f\x01S\x0c\xae\x01\xd8Z\xc1\xb5\x9d\xf4\xd9}\x8c\x1f+\xb0hX\x0d\xe5\xb0fX\xca\xe1\xcbJ\xd2 \xaa\xc9\x8a\xba\x05\xc2\x83\xd5Fz\"cpU\x01\x1fR8\x9f?\xc1R\x1c\xef\xeb\x860cZ\xd1:\x066\xc3p\x0d\xc07FR\x8bz\xf6\x04o\xc5\x8a \x8b -\x19\x08fy| \x89\xf7\x132\xedA\xaa\x8e\xca\x13l\xe4\x05e\xed \x96\xe2VJ\x86_\xd2\x7f\xe0\x87\x19OdW\x7f\x86 \x13\x87K\xed\xb71\x93\xe2\x01\x0c\x0d\xef8\x0f\xcc\xd0\xf0\xda\xaf\xe8\xe8\x0b\xbc\xc6\\\x03H'B_\x94c\xc6\x04IBR\xb8\x86%@\x99ky{\xe4\x04\xc1\xb6\x91\x08\x7f\x81\xe5\xe3B\x17\xb5\xd7\xbf\xcc\x13\xdc\xc6{\xd8Y\x84\x8fRI{\xdf\xc4\x9cS\x00\xe6NH\x10V\xa3$H\xba\xbe\xbdI\xfa]?\xbf\xc0Z\x9f\x91\x83'-\xef\x9f\xe1\x0b8\x1e\xaa\xce1G^\xd1.\xfe\x0474\x80`\x87\xd1\"\xb0M\x8e\x1b-\x82\xe0`\x0cT\xf4!\xc1\x80\xd8IR\xe0\n\xd8*\xc3\xb5\xf4\xfe\x18Sx\xe5\xb4\xfb9&\xd6+\xc6\xd9\xfbs\xda\x8f\x01\xe1Z\x02$\xb6\xf67\x04p[_\n\x12\xba\xc7o\xd7\x931~[y\x97\xdc\xc7k\xcdo\xa7\x81\x13f\x83,\xb1\x1fT\x00\x07<\xb5\x9f\x16\xa3\x07=\xa6#\xcd\x1dy\xc4\xce\xd8\xaah\xad\xdf6\xa0\x9c\xc3\xb5\xe8}\xcc\x92Vn\xe7~\xe0\xf7\x12?\x97s\xf9)\x16\x18JN\x946\x08\xd8\xae\x1ec\xa5\x81\xdf\x1e\x17\x1b\x8e\xa5h\xaeY\xe0\x07d\xc3\x13Mq\xf1\xa1_\xd1nA\xd8\x10\xc55\x00\xf3m\xaeI\x0e\xd1&W\xd4\xbe=\xc6\xd7&\xbcnCW\xc0tE\xf8\x06|&|i\xe7\x82\xa0\xdb\xb8[\xb0\x96~\x82'\xb0\xa2\"%\xc8IV\xdf y\xc9\x13\xe9R\xff'\xd8A\x8a\x1f\xb8\xa2\xc2\x11\xf2\xd9\x87\xad\xbf\x87\xe9\xd1\x8a\x80\xa4V\x10?\x88\xb9\x9b9:^\x86\xac\xfa\xca\x01${\xf0\x9d@^/S\xdeY\x14\xb03\xd7\xbe\x13\x04\xbe\xbc$T\x96G\xc2d\xcf\x81\x98\x80\xa5\xe6>\x88 \x98\x82\xf6\xf9Hu\xf5K|\xf3\xd0\xef\xfb\x10\xf8\xf8\x9f\xff\x06\xcf\xb3\xdf\xd7\x10Z)\xd0 \xdc\xd59\xcd\xe4\xb1\x9c\xd6\xd7\x00L\xe2\x8a\x01`5\xe2\x9c\x1f\x04\xdc\xc3l \x13\\(ec>X\xec\xea\xdf\x82\x9e\xfa\xb70 p\xc0B\x87\xc5\xaeb\x9e\x18\xeb\xfbA\x16J\xf4x\x0f\x9f\xd3~\x18 \x06\xf0\x9f\xc8\x96\x19\x96\x81\xf5\xb3\xbea\x19\xf8\x10\x9d\x8b\x92E\x10'\xee\x91=\x88\x12\xa7\x1e$\xfdX\x1eb\xc3\x87\x00\xc0\xbd\x00\xe6g\xe7\xa2<\xf1y\x92%p\x0bL\xe6\x14;I\xa6\xfd\x1e\xb0\x10\xdaO\x1cW\xba\xb3\x7fL&& \x92\xa9\xff\x04\xd3, \x12L\xfdc\xbc\x9f\x12rJV\xc2\xc4_\x82^\x96 <\x01 zE\x82\xb0\xe0.@\xf30\n\xb2 \x02\x04}aF$@\xd2\xe1\xfec\xac(I\x08T\xc2\xfb%A0\nl\xfa\x13\xa0\x93P\x0bK\x19\x02t\n\xa6\x85e` \x82\x06\xb1=W\x80\xbe\x03 l\x13\xe8'\x0e\xb0\x97\xb7\x08%HT\xe8\xc3\xbbX\x08?\xa7y\x05\xd9{\xa3\xfbb\x81p\xa0U\xaf\xff\x07\xf3\xe2\xf3\xca\x08\xfd9\xdevm\x9d\xfe\x1c\xb3\x17Y\xc3\x13\x12\x08^\xb8\x81\x81\xe0\x15\x18\xc0\xcd\xed\x13l\x97<o\x02\xd8\xf1\xc2\x0c\x0c\x04\xb3\xfa\xf3\xda=\xeeS\xbc0\xe7\xb5K\x1f\x19\x98\x06\xe0q\x9d\x07\xe2L\xe6\x0e\x9f\xc9\xcc\x95\xe2\x85\xef\x10\x95\x8f\xc8\xa7X\xb4\x18H\xa6r\x1f\xab\x1d`\xa3\xbd\x8f\xe5\x89\xc1\n\xa87Xt\x19\x80\xda\xf3\x10\x1f\x96\x81b8\xa4\x1d~\xfbvM\xbf \xb1 \xe0c|T\x06p=`\xfb\x0eW\xd2O\xb0\xd2>0\xa2\xc9\x13L\xd6\x00$\xf9\xfb\x13L\x8e\x15\x0c\xe6\x8a\x91~\xc0S5Yz\xf3.`0\xc8'\x988\x9c\xd7\x1c\x0b\xab\x17\x03\x0d\xc0\xec\xf7\xbcTd\x1fb\xda4\x00? ,\xac\x0c\x065\xc5\xfd\x11l\xce\xdbXx:\xaf\xaeN0\xa7\x1e\xa8\xab\x13\x82qpc\x80\x9b\x19Hg\xcfgO\xc8\x1e\x83\xbc\xf2\x04s\xaeApK~\xc7\xd3\x1d\x84\xea\x00\x92\x05\n\x8b\x98a\x0b\x10\x10\x98\xec<x\x81=\xc1\xca\xf6@\xb9\x80Y\x01\xb7k\x9aR\xc2\xeaC\x8c\xad\xe7\x0d\x13&(i\x980&\xcf\x83\x9a;\xc5\xf32\xc3IR\xdc\xcc\xe0\xf5,\x17XS\n\x0d9p\xaa\xd0\xb9<\x08\x8a\x96\xc8\xb0\xa1\x90\xfa\x8f\\\x0dB\xa6\x00\xa6\xfb!\x9b\xae\xe0\xdb\xe2\xac\x16J\x14^\x05U\xaa\xd0\x96\x08\xb52\xdc\x00\x0f`\xa0\x19\x08\xd9p\xad9\xe0\xb6\x06:\xd0\xe0 \xf6\x1e\x10\x108\xcbXQ8\xbf\xb3\xc0Z\xdf\xc3\x1f3\xfb\x01\xcb,e\x07\x99\xa2<\x84\x90e:\x04\x1f_\xdc\x0c\x8c\x99\x15\xf3\xfbA\x16l\x82R\xff\x08\xcb*\x83\xcc\xe8\x95\x8f\xb1\x883\xc8\x92\xd2\x01\xc1\xecK@\x95\x0e\x88U\xc7A\x96\xd4\x0f%\xe1\xb7\x83:,\x93P\x03\xa6\xdc K\x82:\xc4\x19dI\xed\x06\x8ey\x92\x15\xa7\xd0B]\xc7\xfa\xb0S\xd8\x05\xc7\xe5{6\xd7\xff\xa1\xe3'\xcaP\x83Qi\xe8\x04}\x9b\xa09tF~ \xd7\xe5m\xac*^X\xdcR\x1e'X\x1d\x18: 8\x9d\xfc\x03\xe9F\xbb\xe2`\x96\xa0]\x1e\xde\xb1\x01\x14\xfa|\x80\xe9\x94\x80\xc1\x1d\x06V/.H\xb5\xe3\x0fqy\x88\xfey\xf66\xb6\x9c_\xd0\x02\x07&\xc4C\x0d\xc0\x14h\xc8\x9d\x04\xb4\xd8_\xdaA\xda5\x81B\x83\xc0\x87=\xc0v\xfd!O\\\xd0|\x1f\xe0\xcb\x90\x0b\xca\x81\x1f\xa3\xd7P3L\xdc\xcd\x05?\xe8\xf1$\xdb\x8e\x1d\x97[wo\xb8\x97rs\xcbC\x06\xb9\x97\xee\x1b \x19f\xa4\xaf3\xf0]\xc20\x1aep5w\x0fK\xb4\xc3(\xda\x0bx?+\xee\"1k\x11%\xe4\xd5^Q\x04\xe3\xd5\x05\xedK\x8b\x15\xa5\xa1a1\x98\xe5\x0f\xa3Dm\xfa\x9b\x98\x8e\\\x88\x12\xffN\x14fN\xb0\xe6\x03\x87$\xd1\x9d\x174\xe5%\xabg\x88590&9\x03\xc52s\xddD\x96\xd4@0\xed\xbc\x90\x8f\xe4\x1d\xf2\x85\xba\xe8,\x01(\xd8\x1b\xeerx\xa8C\xc1\xde\xc2\xa2\xcd\xf00\x1eB\xfc?\xf1r[57?x\xa1}\x03\xc1'\xce\x97\xb4\xff-l\x83X\xd575x\xdc\xbe\x06\xe0\x1b\xa4U\xa0)XV\xf0\xe13\xa6\xdb\xabJ\x96\xc7\xa6\xa2Uu\xdd\x837\xdd\x87\xfb\x9e\xbf\xc7z\x95\xaf\xecX\x1fc\xa5\xc0\xef\xf7\xad\x04kU\x9dH|\xdb\xe3\xeb\x13\x89\xf7x\xd5\\\xad\xe0C\xec\x1b\x086\xae\xf9\xf2\xaa\xf1'\x98\xee\xf9\xbe\xafM\x06\xa4-\x0d\xb9G6\xc8\x0f\xfb\xe0\xa6\xf4!\xd6\xb7|?\x926\xc5go\xe3C\xb9z\x11\xcc4\x9fb\xcf&_Y|>\xc5\x9ckud]\x96U}\xaf\x82\xcf\xb4\xaf\x01X\xc6\xf0G\x0eh^\xb6\xb6\x06~\xe8$\x87\xab\xf6\xd5\x199\x83@\x9d\xe8\xb71j\x0b`\xec@\xca$\xbaw#\x99\xc5\xb4\xf5)\xd6\xd4\xfd\x91\xb4<={\x80Y\xb8?\x8a\xa5\xc3\xec\x7f\xc2\xf8\xb4:\x8a\x03\x1f\xd4\x1f\xe2`\xe2\x87l\xc1v\xf9\xe5\x87\xae2\xb0\xbd\x8d\xafc\xcc\xde\xdd\xc3\x8a\xb7\x84\xa8\xd0\xfd\x0f\xb1\xbe\xec\x87*\x87\x06\x99\xd1\xaa\xc2\x12\x82q\xea;\xd9\x8d0s\x81\xc6<\xc0B\x9c\xca\x08\x0d\xb1\x1a\x98\x81V\x9c\x97,\x8d\xf2\xa4\xae\xd9Uy\x11\xc8M\xf6$\x92X\xc4\x0f\xb3\xc0I\x86\xd2 \xf7\x11\x16\xda\xfc0\xd3A\x14\x1fa!q5\x1c\xfb\xa9/\x1d\xac\xc0fb![\xba\x88\x89qz\x0bK\xe5\xab\x1b@I\xb0m\xd5\x8f@\xf4!X\xabo\xbc0\xc1\xf35\x00\xdf%\xac\x1a\xae\x86\xf9\x92o \xd8\xac\xb5\n'\xf9s\xcc\x07\xd5 \xff\x1c\x0b\x16~\xed*\xf9Z\xca\xfe\x18\xb3\xf9U\xcd\x15\xc9\xe12\\\x11k?\xdaC\x92\xe2|\xea\x87Z\xf0&49\xf5A\xc8}HF\x9d\xfa`#~\x88\xbd_%DZb\x1fb\xca$@c\xfb 2\xfb\x0e\xeb\xfcS\x9f\xe2\xcbp\xdf@\x08\xc1\xcc\xf7\x00-\xb0\xee\xe1+\xc0?`s\xe8\xaa\xbaq\xc1\xac\xdbW\xdf1V\\\xd4\")\x9e\xfa-\x0d\xc0\xeb\xa8l\x1b\x18%\xc0\xb4\xf1\xf7xm/j\x06\x86y\xff-\x0d\xc02\xca-E6\xff_L\x1d/\x1a4\xc5\x87\xe4\x96\x81`}\xea\xa2\xc1!,\x94\xde2\x10\x8c\x90\x17S\x9e\xc0d\xf0\xce\xde\xd2\x90\x7f\xc0\xf2\xc4E\xbdQ\xd8\xa6uKo\x14\xe6\xf8\xdfw\xe2X\x9e!|\xe6\xf64\x00\x930 \x90\x97\xbfX<\xf9\xbe1\x8abo\xa5=\x03\xc1\xab\xf9}\x18/\xe9\x1d>\xe3\xbe\xbf\xafw\x0b\x0b^{\x1a\x80\x91zo\x90@B\xa8O\xb1\x90\xf5}\x15\x0d\x8cwdOE\x03cn\xf5}\x85qX8\xd9S\xd64,\x7f|\xdf`\x03\xa6\xf1{\x06B\xea\x18l\xc0\x82\xd6\x9e\x86\xfc9&\x9b\xc1\xa2\xd6\\\xf0\"\xae\x99\xfc\x02\xf88\x04\x06\x82W8pJ1\x04\xf80\x06\xce q\xe0\x16\x13\xb3\xff5g\xd4\xf3$\xbe`\xdc\x0f\x0c\x04\xabOk*k\xe6\xaf\xb0\xf8\x14h\x00\xdeM\x01\x80\xfc\x8e\x98\x11\x05\xc6\xb3\xccR \xcc\x8exC\xd7\x1c\xf9\xe2\x9a\xbe\xc4\xc23\n\x1cH\xb8\xf61f\xf0kZ\xab\xc7RK\xa0\xed\x00\x98\x85\x98\x986\x1b@\xc6\xf6\xfd\x14\x8b\x18\x12\xd2\x97\xec\xe0}|\xf9 `\n\x84e#\x01\x02\xe1\x81\xa8\xa2\x02\x14\xc8\x95x\x07\xcfH\x06\xd6I\x81\xe5}\x8a)\x89\xb6\xe7|\x80y\x8f\x80e\xb2\xda;\x98\xcb\xa8\x1b\xd2'\xa4\xa7\xc5\xcc\xf1\xa1'\x8a'\x06\x84\x89z\xe0@D\xf2\x13,\xfe\x0b\x00\x98\xa8\xfe5\xb5\x18\x05g\xd5\xb2\xbf\x8f\xa9E\xd0\xd3\x10|\x98\x03\x9d\xe4\xef\xaf\xb0n\x10\xf4\x12\xb0:\xfc\x91\x0d \xea\\\xa7\x80=9\xecGX\xd1\x16\x904\x00D\xc6\x1c\x12`2\x8f\xd1#\xcc\xac\xd6\x8c\xb7!V\xd0\x03\x03\xc1B\xca\x9a!\xbd\xf8\xf8\x05\x06\x82\xa5\xa4\xc0\xe5\xb0\x13\xefb\xd6\x13\xb82\x16\x15\xaf\xc1\x1a\x90F\xb2\xa5\xf0\x99t\xec\xb9R@}\x1f\xb3\x89\xc0\xe48\xc4\x84QB\xc0\xe2AN\x9d\x97x\xda\xe1\x143\xf1\xc0K\xf2T\x03\xc9.x`\xd2x\x87l5\x18!1 \x06\xf2r\x1f\x9fT\xe9\xf2/\x88\xcfY\x81\x07\xe01GhP%.\x80\x90\x81\xb5\xb2\x0d\x89R\x8f\x8a\x85\xc9V\xb7\xec\xedN(\x89)\x80\"\x04\xb0,g\xba\xd1\xc7\x90\x1cj\xd1\xd2\x12\xf7\x03H\xc7J\x91C\xc0\xc1\xf9\xbf\xbc\x14x\x19\xa1\x94t\xd7.\xf9\x8dc\x0b\x85.Ur\x1b\xc7\xb6\x9ej\x11\xed5\x8ei\x87(u.\x88\xa0\x8dw\xb1\xe9VLZy\xe0\xeb,\x7f\xc4\x1f\xbeT\x06\x02|\xdf!\xe7\x85\xf73\xb3|\xa0\x1ec+5\x0d\xf8 FaQ\xa4j+$\xf6\x99\x80\x14!\xadT\x8b\xa4\xb5[-\xcb\xa8iA)r>t\xa9\xf4v\xee\x0f\x8a\x1e1\x11\xb6\x05'`\x8a[\x8a\x9e!\xa1\xa4\nV,\x8c\x0d\x83\xab\xd8\x82%\x1d1\xd4l\x98p^\x84\x98\xe1\xd9\xc8FJ)\x1f\x1f\xe0S_.\xa0\x90\xe9CL\x9c\xcbe\x8c}\xf2\x01\x16\x93D)\x08\x92)\x0d\x19\x0b,P\xa8:-|\xa7\x0feJ\xa1\x1aXG(\x17\xd0\x07\x00\xeb\x04(\xda\x03\xe3.\x8d\xf4 \x82\xd0\n8\\S\xfc\x80\x0bi\xba\x19p\xc1CD\x1a}\xf3C k\xc9'\x80\x9e\xbe\xb4\xee\xbb\xba\x99#\xf2\x9e\xf1 x\x8c\xd7+(\xf9\x04`\xedM\xc1\xe4\x1a<\xc1\xb4&\xe0\xa9\x9a\xacE\xce\xe0\xa9r\\x\x82o\xd4\x03\x9e\xa6\xa5\xab;,\x81\n\xb0\xb6\x13`\x0dZ\xc0\xf8m\xe5\xf7jYc\x01\xd5`\xb25k<M%~\x96\xae\x80I\x1b\xa2P\xf5\x1e\x99\x92\xea4-\xb5p\x9f\xf0k\x9e\xa6j\x08\x04&\xea\xea\xdb\xe5'\x98\xba\x8b\x8a\xfa\x96\x90\x9e\xc34E\xd7\xcex\xefE\x91\xe2\xce\x99\xb0\xef\"\xd2\x99\x10\xea~-'X\xd3\x1a$\x11\xc84\x80\x08\xd4\x03\xfb\xa2\x80\xc7\xcd\x13\xa2\xa1\xe8\x98i\"+\x0f\x9dD\xca\x82\x94\xf3\x0c\x9d$\xb7\x9eZ \x91\x8b\xf3\x01Q\x9e\x86\xbd\x00\xf2\xbbb#\xc0\x9a\xd2`\xb1\xafe\xa04X\xc2:\xc1\x0d\x06\x13\x14\xb8z\xb9O\xfa\xd5Z\x0e\xe1}\x81\x0c\xc9\x05\x1c\"A\xb9k\x15\xf1\x86\xe8\xb0\x81Y\x9d\x0f\x88.\x11\xa8\xa8\xa5_`%vm\xe4+\x0b1!\x00\x1a\xf2\x199\xc5\xa3(\x87\xfb\xf7?\xc5v\x0d\x009\xee\x90\xdb\xc1\xda\xaf\x85\xack\xd9\xaf\x85\x02A\xca$\xd4K\xf9\xb5\x90E\xd4~-6\xc0\xed\x9a\xa6\xb4_\x0b\xa1\xb8\x91\xd6\xb0\xb1\xa9<0\xf7\xa0\x04\x19#\xa5\x1aQ\x89\x8e\x04\xbebc\x9d(Q\xd9g\x12\x1a\x1b\x90\x12\xb66,a\xb3\xd8\xa0\xa4\xbb\xaa\x8aI$\xba6\xb0\x17\xc3\xad\x89b#'N\x81g\xfc\x8a0O\x1a\x9dK\xe8`\x14\x0eP'D\xc7\xa6E\x08Q\x89\xa2\xb8\x9a#\x85\x9c\x06]\xa2H\x91B\xf7V\x85\x94<\"\xa6\x10c\x91\"\x8c\xcf@\x88\xa9\xa1\xc8VN\xd4\xf2R\xaerbC\x8a\xf6UZ\xb9{\xf8z#\x88\xf6\xe1Z\xfb&\x19\xde>O\xaa*\x14\xa1U\xa2\x08\x12\xb0 \xe1\x8a\xeeHrA\x94\x80\"\x95\xb8\x0d&\xcdC$\xc7x\x00k\xd9\xb6|\x06\xd7\x92GD\x18\xd0~:T\x1eOJ\x04\x92X{\x12\xa5\xc0R\x01=1\xb4\x91\xec\x00\xa4\x00z\x93X>\x12E3\x1f\x10\xca\x98:Z\xf9\xc6\xf8\xb9\xa6\xafF\x88dh\x8c\x92X\x98ZS\xaa5\xa1\x95\xb5\xdfk\xa4\x81\xc08}ac\x88\x80\x80`J8vz\xbbg\xb3\xc7\xa4z\x82\x041Rc] B\x92vb\xf8\x8c\xc8\x8b\x06\x82\xed\xbbk;\x0b\xac\xf5]\xfcQ\"\x05\xe5\x9a\x99\xa5l\xa0\x9d\xce\x08\xdd6Ng\x84\x86d\xb5\x82\xa4T\x8c\x16l:QP\xa8K\x84=e\x9a\x9d\x7f@hQ\xc9U\x8d\x98v4K&t$K\xe0:\x97hK\x81\x0e1&\x89\xf3\x83,\xd1\xeerdRy\xe2\x19\xc3\x0e9\xb3ybB\x90\xc9\nV|\xd0>\xb2H\xf3\xda\x07\xcd\x02S\xb7\xfa\x1f\xe3\xdb+\x13.\x83g0r\x80\x16\xfc%\xd6\xec\x04\x80\xc3\xe3\x1b\x04v \xc4\x89\xf71\x91\x1e\xc1\xf7w\xf0\x94\n\xfeT\x032\x96\x0dl\x1e\x03\xb0a)Xa\x03\xb0\xb2y\xe0k\x92\x91\x93\xec\x01\xc5z\x0f\xdf\xfd\x8et\xb6\xc5g\x1fa\x99\xf9\x12H\xa0\xd8\xbc7\x82\xcf\x98\xbd\x8eL\xca*l\xe5\x18\xe9H\xe6{\x98\xb1\x8f\xb8\x93\xe6 \xf7\x8a\x07\xb6\xb0\xf2q\x89{~>2Ndoa\x82{\x89\x07\x81\x1f\xeak\x01l\xf4\xbe\xa4\xd5\x01l\x88\x1bi\x00>\xe2\xa3\xa1\xdc\x9c\xb7\xc9\xea\xfb\xae\x0c?\xfb\x18K:*-\xe8=l(\x19\xf9\x9e\xfd\x8d\xa2\x91\xef)\xba\xf0\x14\x13\xd6\x91\xef\xd5\xa4\xcf-\xb2\xc0`\xb2.!\xf0\xc6\x16^\x1b \x82\xd1a \x0e@R]\xf9\x08/\x81\xcc\xc9\xaa\x13\xaf\xde\xc3\x8cq\x14\xb8\x90\xad\x10\xdb\x8fG\x01<i@\x9c\nGa\\\xdbX\xe4\xa9\xd0\xe9\x07x\xc1/\x19Y\x06kF#\x03\xc1\xea\x89\xca\x02\x8a{\xb9\xa4Y\"F\x8f\x91a\x89\x84\x16\xa4\x19<\xa9E_D\xbc$V\xedsr(\xe4Wr&rA\xb5\x81\x14< {\x90\xd7AB\xa7\x07n\xfc$\xcd\xd8\xba\xbe\x0b\xfc\x0c\xd3\xec\xd0@\xf0z\x85\xe6\xbd\xbbg?\xc6\xd8\xa3\xb4\xa1\xfb\x98\xa3\x84\xe6i\xb2\xbf\xa3\x833\xaf\x90\xd9`r\xd5>\xb3\xb4g\x1e\x1a\xa3\xb0\x0c\x1e9\xf8%\xa6M\x12\x02f\x85:\x18\xf8\xfc`\x1f\xbb\xb0'\x9d\x8c?\xc6\xd4:,R\xcc\xd3\xb1\x97r\xc9S\xa0\xce$\x89\x97}]\xdf\xe5|\x86\xb7*4\x10lz_\xd7w9\x9fa\xae\x11\x1a\x08\x96:C\x93r\x96\xf6S\xce9k\x19\xb9Jt\x89Q|\x1d\xc88\xd6\x14B\xf8\x8c\x15\xca\xd0Pw|\xbaT\x82_\xb2\xd4\\{F\xbd\x8fYU\xc8\xf5\xdd+V*D% y\xc7\nQ\xaa\x02\x85\x99\x88g2\xfdu>p2\x7f\xcc\x11\x1fy\x13KW\xba\xdc\xce\xd0w\xf7\xa6*\x16N.u\x99'\x87\xcd%Ko\xf5`KS\xc8S\xaer\"a[AX\x04l[&\x9cf\xdc\xa3A%$\x82\x02\n\x96-\x7fD\xde]\xe7\xfb\xca1\xf9\x07!\x19\x82 \xaf&\xf4\x86\x17\xf1\xd5\x18\xb6\xae\xf9.6\xb8\x85\x1a\x80\x87\x19\xea\x988\x8a\xd9*,\x0e;\x16\x86:\xce\xcd\x06\xb8]\xdfX9\xd6\xcd\x06O\xeb@:4\xccRI\xef\x13\x96\x1aB\x1d\xd6b!\xc9\x03\x00a\xb95\xd4\xc6[\x028\x9f\x01\x06=\xa5\x030\xd1\x0eX\xb7\x0cM\xb8\x03!\xacCexx\x8a\xd5\xbbPj\x0b\xf7\x08\x0e\xc3Cq\x0f1\xf3\x0b}\x10>\x1eb\xa9/\x04\x8c'\x0d\xad+\x93'V\x11Be\xf2\xc4\xea^h|8\xb0\xba\x19\x1a'\x0eZGI)XD\x0e\xf5E2]Du\x97\x8c\xa5\xb5\xb0z\x13L\xc7P\xb9\n&\x03\xb1\xdc \x92M\xb2\\!\x92\xed\xd278dx\xc5\x15\x8emJ\xe5[\x1c\x1b<m\x00\x01\xb5 #\xd1&hK\x1d}\x0e\xb0>\x19jM\xdbr\x0e@\x1b\xa3\xddh\xb5\xf5!&W\xa1\xd1[\x1fbkZ\xb8\xa6\xce\xc8\x13:8-\xc1c6\xb5\x1e\x9dM\xb8#Y\xd8[\x98\xbb\xadG\xa1\x04\xfa\xe1@\x13w\"l\xac\xebX\x11\"\x9d\x18\x01\x16K\xec\xfam62|\xd0\n\xf0\xe7\xf5(\xab&\x95\xc7<D\x14(\x12dc\xbb\xd3z\x94\xd9\xd3\xffa ~=\xca\xca)\x93\xb0\x00\xb7^NaIW!\xc3IZ(\xcf\x8a\xb2\x95\x06\x9e\x11ee>\x86\xc9_\x01.\x06\x81)\x7fQ\x06\xc5b\xda\x86b\xe3\x9d\x0d\xe5\x0c\xf7\xc4V\x9e\xa2\x08\x0e\xcclh\xadX&\xcc2\xd6\xa3\x8c\x86\xe2\xd8ZB\xf18\x14\xe1\xa3L\xb9B\x13I\\@\x8c/\xb4\xbd\xa2r\x87\xb6\x03\xc7N}\xbb\xf0\x10\xf4C\xac\xd9\x02\x0cr\x98c\xe3\xd5z\x94aO\x00r\xe8Q\x19\xe3\x0c`[\x19\xabG\x00\xa1\x15\xb2`\x0d\x8dS\xb0by1\xd5U\x05\xca\xc8c\x1dHY\xea\xb2\x0f\x95^\xac\xd6\x95+p\x06\x93\xd7\xf5(\xab\x93\x07\x9f\xfc+[sT(|\xf2\xd7\xb6\xadV\xa2\x00\xf6\xc8\x93\x10\x85\x04v\x18 \x01\xd6\xa9\x01\x06H\x805\x8f\xf5(\xdbL\xb8\xcb=\xf5\xd2\x0b\xb6\xf3\x95\xe0f\xad\x9e\xfc\x1b\xdb\xe4t\xb1\xea\xba>\xb4P\xac->\xe6I\xca\xcbD\x0fOG\x94\x92\x195\xcb\xc8IdlTHc\xa7EOA%\x8b\xe1Y\xa86\xe4\xc1\xd9\xce{*\xe7\xdb\x03+\xb6\x97K\x15\xcdYX\x84.\x18\x8b9C\x83\xd6\x01V\xcb\x15Mb\xd3\x97(Z\x8c\xedO(k7\x05\n\xb7\x1c\xa2#\x8b\"\xae\xcb\xb9\x07\xbb\x8e\x0d\xfa%x\xb1\xeb\xd4XQ*\x86v\x1d\x1b\x1aK%\x8b\xf3\xf4\x1f\xed\x0d\x96\x16\xea\xc75\xb3Ck\xf4\xc0\xc23\x8bn,\x93\x93\xc0\x82\xccXx\xa2,Qeg\xc4Z\xa4J\x15=Y\x86\x81\x99?\xd1\xd6\xe3\x1a\xa9@\x00\x9c P \xf1mPH\xcd\xf1\xf4o\xe9+\xb4\xa1\x8e\x80\xbbG\xa5\x810\x8e\x02\x1d\\\x88M\xc9!<RB\x88@\x18'n\xce\xad\xc79\x8c!\xa2\xcdB\x13B\xfd\xba\x86\xad=\xae\x1e\xee\xb2\xd5K\xb4\xe2\x81o\xb3B\xf3\xd6\x076\x8fJ\x88\xec\xec\xfd\x7fki\xd0\xc4\x91\xff\x15\x05nU\xb5\x04\xdagUC\xa0=k\x81\x99\xe8\xd6\x89\x11\x981\x95 \xe1\xcd\x17r\xee\xc2\xd4\xd5\x0b\x8dOP\x98\x82\x91\xc3v\x0cM\xa8\x04\xbec\x08\x8d \x96\x184\xd3a\x94du\xc29@\x9b1P+\x1dt\x0e\xea\x9a\x92\x1c\xab\xd0\xbczo\x01\xd5\x0f\xa5\xf6\x84\xa4\xb7\xf5\xab?\x84\xeeJ\x18\xd8\x1b \x01\x0d\xd5#B\x0f\xe8 \xf2\x9e\x14\xc0\x9e\xfe\x84\xa2\x89\xee\x8a\xd0R\x01i\xa0\xc6\n\x0c\xf3\xae\xab\xactI{\xbfn\x1d\xae\x08\x82z\xbb\x06'B\xf5\xec\xd1\x03b\x04Ms0>?}\xc7Z &Id\xcc4\x8f\x1b\x88\xb2\x02\xabI\xd6T\xd6\x93\xb4\xf4\x9b\xa9|;D\xc8\xd7qx\x9f\x10\x8b\x96\x81\x10;T\xa6\xbc\xd1h/\xe8yr\xaa\xe2\x96K\xc0d\xa8\xaeK\x9e/\xa7\x07\xbfRD\xb5C\x04\x0dy\xa5A\xec\xc3\xf2+1\x0f\xcb,\x9a\xbfG\xbfrH\xda\xf86\xbe\x13\x0es\x9d-\x96\xd8\xb3\xc7\xfa='\xcb.^^\xd6\xcf\x14\x12+\xd8e\xf3\x82!\xb1\x18\x8cM-B\xe6\xc6\xa6\x16Y\xc6\xb1N\xbbe\x19\xc7\x18\xf2\xcf\xd8 \x17t\xb8\n9\xbc\xe3\"\xfe\x1d\xdf\\\x85cm\xcbz\x1f\xdb\xe9\xc3\xb1\x8ee\xb0\xf5\x06. v\x88\xb9\xc4\xb7\x815\x0b{\x9f\xd0\xdd\xb1\xe1\n\x0f\xfe\x9d\xad\xa6~[\xf8?X\x80\xfb\xc6\xe8Oh\xda\xbe\xe6\x99\x04\x15\xf65\xcf\xb4B\x14W\xa3\xb0P\x9b\xc7\xf1\xd5\xe1\x86I\x11\x81\xef*\"\x03\xc1W\x81Q\xdd\xf3\x99\x91\xba\xac%\xeffn\xe8\xf4\x11XF\x894\x00kc*\\\x1b\xef=Dk\xff=\xd6\x89\xa2\xda\x1797\xf4\x9bM\x9f\xe1k\xed\xc8@05\x8a\xe0!\x98g\x1fa\x9a\x13\xe9\xd7\xce\xb0\x93V\xe4\xa5\x91\n{\xc2\x96\xdd\x8d\x15H\xbd\xf0\x19\xde\xff\x88+\x00Y\xf8\xbeZ\xc6G\xd8\x95iC\x1b\xfeI[\x1a\x80\x0f\xa6\nV\xff5\xde\xa9\x0d\x93\xc4\x824e \xd8\xa4\x1d\x81\xb1\xfdC\xcc\xba\"\x9d\xa8\xe7\x116\xc3DC\x81\xfd\x9fc9&\xaa{\xa112\xa6hl\x06\x8f\x02\xbd&d\xeb\x03\xf3(\xe1#\xec\xb4\x13\xe9\xc4\x12o\xd2Z0\x17,\xcbn(O\x98\xcf\xb0\n\x1bi\x006]o\x8c\xf8\xc0\xb1\xceR\x01~\x83\x19\xe8\x86\xf4\x8f\x90\xe9\xa7\xb1M3*@x\xef#%R=\xc2\x86\x9fhT\xfb.\xec\x861\x9e\xe2+\xd2\xc8@\xb0\n`\\)\xb1\xf1i#\xe6\xa1\xf5\xc5U|\xbdo\n\x16E\xb0_Z\x14sx\xf0\xf0\x11\x96\x11\x8c\xef%y\xc5vC\x0e\xeb1\xa1 N\xe2k\xbf\xc8(\x17\x04)\xc0\xb3\xf01\xa6\x14Q\xe2\x81\xb5\xe7mL\x8b$\x04R\x8a\xd8`2\x13\x17\x16>\xa2\xc4\x13\xb8\xff1A\xe4\xc4\x1f\xa8\xec$d#\x13\xf5b\"\xde\xc6(I\x83\x08D\xb9\xc7\xf8>7J$\xa9zLH\xb1\xfd%\xe1\x0d\xa3\\\x90\x01k\xc7\x0fB\x89u\x8a\xa4O\xc8.\x1a\x08!\x94\xeau\x8f\x07\xb8\xca\x86\x11\xf4\xf0\xf6F\x06\x82\xa9\xc8F\xe1s\x8bq\xb2p\xc7%\x8f\x1a\x03\xc8\x81zx\xa97T\xb6\x06\xb2\xd2\xea;\xd9\x9a\xb1\"q\xefbanc\xccu|\x11!2\x12\xa6\x82k\x9f\xfd\x19fe\x1a\xaa\xc2 \xff\x94\xac\xfb\x98'\x9bN\xc2\xc3l\xc8S\xb86\xfc3|\xd4\xb42\x85M\x06B\xd7\x13\xd8\x87\xe7Q\xd1\x01-\x95\x94\xb8\xf2\x14s\xfc\x92}\x82B\x94m\x02\x016\x9d\xc4<\xcfF\x81\xc0\xc61\xf9\x8b\xe13&}1O\\\xc91\xfe\x19\x05\xf82\x1f\xca\x0c\x05\x8c \xd6\xf3Mlt\xd6\x94\xe7\x01\x99>O2\x1eJ\x81\xecM\xac\x85lj\xfe\x8ayu\xac\x01XX\xde\x84\xa7\xd2\xb1\x96\x1b\xc3S\xe9\x98\x1c\xc7Cxu\x00\x1f\x8ax\xa8^q\xa6\xfeX\xf1P=\x17\xfd\x17\xf8&tS\xf6\x8c\xe9z,;\xc6\xfc.\xf63wX\x9b';\x86Q\xe1S\x12\x07N\x08\xef\xc7\x93\xa4i\x00\x82\x84jx\\\x02\x06i\xb7-\xd5$\xd1?j\xf9\xec(\xc6\xff\x11\x16\x92\x05\x104\x7f|\xb2\x04D\xd7\xc2\xa6\x04\x01\xf3\xa4\x9aE\xde\x81\x93 p\xf3#\xb8\x11\xe4\xe0\xd3\xfa\x18\x0bE\x9bA\x9e\xea\x87\xd9?\xc6h#\xaa\x8d\xc2:\x88:l\x1f\x11\x1c \xf24\xdb\x97c\xfc\x08\x8b\xeb\xf1\xc8\xd6\xdaf\x04\xc9\xa8\xc4\n\xcba\x92\xcc\x83\xb1\x90\xb9\xb4\xa1\x10c\xd9\xa6\xbe|\xc5bml\xa4\x04l\xbf\x8a\xa3\\>\xf6\xf81\xde\x95M\xb9\xecO0\xd3\x05S\xe4}\xcc\x0d\xe3DE\x18a\xc2nL\x94\xf7\xb1<\x1d\xc3[\xf5O\xc8y\xd0\x96K\xfa\xdd\xad\xe9\x9b\xbb\xa50&:\x02\xee\xaaw\x83\xad\xe3(\xdf\xb3\x90\xb6-\x97,5%\xaa\x96\xf6\xda^\n\xab4f2e\xe3\xab\x05T\x8e\xd4\xc2\xb2\x96\x84+;\xce\x13\xccu%P\x87Ya\xe9J\x00\xb5\xc5\x10\x0fh3Q\x16\xc37\xe9\x16i\x08>E\x12\x92\xdaq0\xd1Qht\xf8p\xc1j\x19z\xc3\xc0\xd5S\xed\x98\x02m\x96\x1ej'\xd4)\x89\xfaN\xa0\x04\x00\xac\xb3\x08\xa0V3\xde\xc5\xca\x94\x00\xa698\\\xbfKx\x87z\x7f\xed\x1e\x96D7\x93(\x8e\x12\x9dI\xed\x1e\xc6\xcc\x02\xac\x12\xb5\xe1\xfa\xa2a\xf0\x9b\xb7\x80\xea\xb6-N\xf2\x04\x04\x83\x07\x98en\x1a\xa1\x11\xdb\xc6bc\x91\xc6\x86\xc9Mx\x95\x87\xac\xbf\xfc\xfc\x1b,\x96\xc6y\xe8*\x13\x17\x06\xbd\xae9,&\xd7\xb75\x00\xef\xc8\xed\xbal\x8b\xafk:\x87\xcd\x13\xb7\x0d\x9d\xc3\xec\xe2\xb6\xc1\xd9\xb7\xb0\x80\xf9\xbaY\x15\xact\xdf6\xab\x82\xf9\xfc\xed\xdc\xc9x\x12\xfa*3\x01\xc9\x8c*\xe0z\xf4\x98\xeb\xea\xd8\x94\xd7l\xdf\x15\x91\xc2\x02\xd5\xeb\xbb\x1b;\x0b\xec\xdb\xado\xe3*Qf\xf9\x9c\x98\x84KX\x9b\xd0B\xec\xbd\xbf\xfd;\xcc{\xb6\x8c/5\xde\xa0\xc4@0\xc3I\x1c\x0f\x12\x90\xde\xc3;\x91\x94\xb34a\xfa\xb1\xa5c;1\x1a&\x1a\x80u\xf0\xc4\xa4U\xc2'S@\xe4\x94\x1ea^\x9f\x14 \x97hs*s\x12fo[Z\xd9\xc4R\x97\xb9\xfc\xa2\xfd\xab\x1a6\x00\x10\xbc\x0f0]KLR%:\xe6\"\xa9\x12\x19Bq\x97f\x81\xa8JX\x84J\x8atKXQL\x8atK\x18\xf1\x13\x93n\xe9\x03L\x0f\x92R\xba%\xac\xe9l\x99tK\xefc\xa4O\x8aLLX\xd2(]\x03\x92E7 \x97\xb0\xc2\x94\x14\xb9\x98(\xeae>\x10M\xac5IH\xa8\xfd\xe7q\xbd-\x93\x8d [\x18\x13\x03\xc1\x1c%1y\x9a0\x05HL\x9e&\xb2[:O\xd3]\x1b@\xd4\xb9A\x01*O\x13\xa6\x84I)O\x13\x16\xd3\x93R\x9e&<\xa3-\xe3\xa7\x8f\x15\xfb\xc4@0\x03\xdf2~\xfads\x0d\x04\xd3\xd6\xc4\xe4i\xc2\xc6\xb3\x04\xf24\xe15\xd8\x02\xcd\x91\xe0>8\xc3b\xad'\xd1y\x9a0kM\xbc\xc0\xa4\\\"\x87\xdf\xe4p\"\xf8V\xe4p\xa2 \x15\x17Jh\x19\xc8\xe9\x04?9\xf0t+@g\xc9%\xd4\x99;\x81\xc9\x92k\xab\x08\x88K\xc6\xc6A\xdey\x0f\xeb\xae[+\xe7\x05\x91\xc3|5\x81W\xfe\xf1g\x8b\xff\x0fvV\xd6E\xd03r5\xc5vcT\x90<\xb7\x9a\x14\x890\xb0=\")\x12a\x90\xe6U\x0eh\xb2BZ\x90 \xdd\xe8\xc4\x16\xf8\x16\xdb\x84'\x93\x17\x7f\x13\x9d\xd8\xe2\xa7\x04\xe7\x8a\xc4\x16\x98ln\xc98\xba\xcf\xb1\x8e\x95\xc8\xcf\xbf\xa1]DR+'\x8cX\xc6\x88\xe3|]\x18\x8bQ$9\xe6>\xc8}\x820\xa7\xaa\xf7\x84\xb5v%g\x17fTE\x89J\xd4\xfbO\xf1\xfd_\xd1\x91I\xda\x85\xe9\xbfl\xaa\x9c\xb5\x0b\x93\nY\x80\xa6\xed\xc2*\xb5*\x86\xf3v\xe1\xd3b\x8a\x95\x12wa\xb3\x16*\xa3\xf3\x0ea\xf1G\x16;W\x8b\xa7\xe5\x04V:\xc2\x95\"Z\xa9\x10\xf8\x06P\x8c\x13EP\xf6.\xeb:\x97\xf2\x80A)\xc2.D)\x9c{\x8bPf\x9ff\xd4\xb2.\xa2N\x97\x85em\x0d,\xb0\x13[F,\xcfr\x13Z(\x8a\xa0\x8cYx:\xc4\x17\xf1\x01\xa1\xceVG\xc4\xa6B\x85\xf7\x1a\x96\xdad1\x925\x0bK\x04\xaaTur\x98R\xa9B\xa5\xa4WX\x8b\xab\x94\xd0\xf8\x87\x05s\x94\xd3\x8c N \xae\x9b\xc0\xbak\x02\x87\xee\xd7D\x88\xf2\xd3\xea\x83\x8d\xa4\xa2I\xa6CP1\xd0\xe9 \x08\xfa\x05\x90\xf3\x81HQEf\x1bL\x0c\x93jf\x1b\x02\xd6\x81\x0cO \x933 d0WLL\x02\x19\xbc\xe8\x89I \x83iKbn\xd3\xb0&\xb8\xa5uQ\xc2\x95\x8d.J\x04\xde\"/ \x1duqGB\xf0/\xcaC\xaf\x94\xe0\xfe\x03\xac\xde'0\xc6\x8e\xe53\xdc\xf8>\"\x9a]\\r;$<\xc2d\x03!\x04\x19\x85\xf0\x90\xb3[d\xea\xc0\x06\xb5-};E\xebh]\x1b\xfb\xc6l)\xc9\x8b\xec}\xedw\x99\\\x83\x08\xd1&\xb9\x06\x16l\x93\"\xb9\x06\x01\x15\xa9)\x082\x17t \xc7ni\xdf\xc3\xf7\xb0\xa5\xab\xe4db\x81H<z\x0f_\xc1 \x88\x8e\xfe\xf9\x10\xcb\xf8[y\xc0\x97y\xe0\x1c\xca\xe7\x10\x9e}\x885\xb2$\x0fL\xa2 l\xc2I\xa41\xf1m\xac1n\x1bm\x1f\xd3\x84\xd4@\xf0\xe6\xa5=\xbd\xb6\xb8\xce6\xa4 \xc1\xe6Pp\xb4\xbc\x8f\xd5\xefTE\x1c?\xc1\x8b\xb0m\xb4\x12\xac\x19\xa4\x06\x82\xc5.\xe3\xb4y\x1f\xcb\x96\xa9\x0b\xf6F\xbcZ\xc6\x97\x93\xf4\xae\xf5\x1b\xbcX\xa9\x81`\x8b\xcd\xb6r\x88\xf9\x0c\xd3\xfeT\x030\xc1H]m \xc5\x87&u\x95\x81\x14+\xb4ia\xd9\xc5\xf2a\xea\x96\x8e6&\xde\xa91\xfa\xe2+\xbam\xd0\xbf\xe8ZJ\xfd\x0b\x0b/&7 \xb6\x12\x08\x00\xdc\xe9\x90\x96<\xe5K\xf0\x18\x0b\x05i\x11<\x8d\xa5\xcd\xd4\x04Ocu55\xc1\xd3VHM\x9e\xa5\x144\xa6\x8f1\x99O\xf9H\x9c\xb3W\xc9\xe7t_\xb9]\x91e\xe6Y\x91\xa6\x02\xeb\xc5\x02\x18\xd6@\x0e\xe4\xc2\xfd%\xde\xd1m\xad\xc3\x90\x1a\x1a\x80\x913\xad\x7f\x025\x15\xc2\xa0\x80\xfc\x12kD\xdb\x17\x96Try2\xa1\xa1\xab\xd2\xcbc\xaa\xbf\xadj`:\x92\xaa\xf2\xd8\xe0\xbb=\x8c\x12)D\x17r \xc6CYd\xad1\xf3p\xc5!\x1asR\xea\x0f\x8d1G\xf60AW\x92ev\xe3\xa2\x00\xf6#K\x87b\x82\x1fcAb\xdb\x1f\xc0\xdb\xafdX\n\xf0\x1b\xecf(\x01\x82\xcc\xff\x06k\x1c\x122\xb6C\x94\xe7!\xfd\xae\x13 `\xcb\x9eq\xf5\xa6\xfdkOo\x0b\x04RU\x11\n\xe7\x8fT\xbaHBy\xf5\x93\x86\x84\x90\xf9#\xf5\xf0&&\x8a\xa9?R\x99\x13\xb0\x18\x95\xfa##\x14a-=\xf5G\xe6\x01A|\xe1\x94\xd6f\xae\x97\x8fg/\xf9\x89\xab\x92\xec\x10\x1a \xe0\xcd\xc7w\xe4\xa4Cy~>\xc2zE:\xe2\xc5\x93\xf7d\xbc\xb5\xe8:\xf2a0\xefR\x88\xdc\xc9'd'G*\xaf<65\x08\x00\x84\xaa\xfd\x0d\xcd\x02\xb5\xbdqn\x07\xce*\xa9\x16\xf538\xadX\x9c\x01G\x9f\xe3\xf4\xab$\xe3\x1fb!_\x00\xd4E\x1aa!F\xf0\xc5rQj d\xc9bG]\xc1\xfe\x92\xa0\x99\x04\xe9w\xfd,\xd0\xc4z\xf0\xd3\xdbJ\x96x@\x98\x9f\x80\x80\xaf\xd1\x9f\xd3\xb5Ko\xab\xdc!\x0f\xb0\xb0,!P\xefg\x965\xbf\xad\xfcg\x88\xd4t[\x076`\xb5\xa7\x08\x94x@(\xce\xedR\xf8\x82\xb5^\xe1\xd7o\xab\x0b3 \xb4\xd4D_<\xc04P\x82L \\\x0dPuH\xebJK\xd9{\x98\xd5\x97^\xae'R@=\x08j\xe1g\xa8\xc8.\xd2p\xc0\x86\x02\x85R\x8f\x17\xcb\x16\x06\xd8X\xa4h\x8a\xb0\x11Yn7\xd4#\xa6\xf8\x93;p\x83L\x1e\xf2Oo\xe75\x80\xda\xeb\xa5msk\x89u\xc8\xd4hR\x98#\xa7\x0d\x02I\x03mJ35\xee\x87\x98jogp\xfa\x08 U\x80\xbf\xb0\x01d[\x7fAD\xc6,q\x04\x9f\xe6q\xea\x07r \x7f\x83\x95$]D9_as\\\x9a%\xd2\xeeE\xb2\xdfm\xc3\x01|H\xf0Z\x1dL\xc2r\xf3\x9e~\xb3\x9b\xa8\x0e&\x16\x89\x02\xe0d\x91\x19\xe7=\x9d\xaa\xe7)\xe1\xbayo\x94\x83\x07\xf3S\"[\xe7=\x90\xfa\x9fb\xbb\xa2\x80@_\x84\xc0\xe6=\xcdE\x9f`\xb2\x9c\xe6=\xc3E\xb1^Z\x1c#\xdb\x1a\x990*+H\x11\x05\xcb\xb4\xcb\x11T\xd6\x0e\x8b\xb3d\xaf\xad\x12\n\xdb\xa6 \xd0\xdbu\xeb\xa3\xfd\x1f\xb1-A\x80`\xd3\x9f\x12\xec\x11 \xc8\xf2F8\x86\n\xf6\xa2\xfaj\xee\x96]\x8f\xb0\xd6*\xc0e\xd7#\x8cL\xe5`_\xd2\xb6%\xd2\xb7\xa6\x04r=\xaa\xeb\xa5\x14\xe1k\x19\xa7\x0eY\xb3\x80\xca\xaeGD5\x15p\xedzD\xd4S\x01\xacUPs\xb7^\x0b\xcd\xdd\xe1\xce\xd0\xb1_Bm\xc3e\xd2=\xc2\xf7j\xbf\x83!\xf0\x97\x98\xb8n\xc3v?\xa4\x15\x80}\xd2\xd3\x1a\xcf \xf2\x82OO\x9a\xc7\xf3\xe2;\x91M\xf3\xf8\x84\xf8N\x84\xc7<\xd6\xe4\x05[ \x05H#(\x11XM\x84 \x05\x009\xa0\xd8\x1e\x1b\xd2\x83\x05\xb8j@w\x0d\xb08\xa0\x96\xa6\x87\xca7\xfcWXQ\x9405 |!\x9c\xe6\xb1I\xdbJOSl\xa8!\xa55\xb1\xa2\x86Dp\xcdcE\x0d)\x1d\x8855|J\xc45#\xed\xd8\xb6\xbfn]*b\x90eI\xca\xe1\x94V\xa8\xa6h\x96\xa1\x96)\x9ae\x8e\x9a\xa2\x11\x9e\x9e\xc7z\xad\x89\xc0!@@\xd1\x08\xbb/b\xd6\x88\x19\xc6\xc4\xacachjb\xd6\xac\x90\x9a\xbc\xd7\xe9~\xa8\x8d'D\xba\xb9\x03\x91S\x9f`=q\xc7\x113\xfaA\x86>gN2\x80\x9dy\x17Oh\xc7\x91!\x9aX\xaf\xc8\xe4\xe7\xdf`\xe4\xcf\x94\x9d\x9f\xf8\xea\xef\x18k\"i\xc9@\xb0\xa6\xb1cl\x80\xd8\xfe\x92\x19\x08\x96\xa9\x94zF+H\xdd\x0c#\xbf\xce\x9c\xfcclw\xcdx\xa0\xbcb\xdf\xc5\xeclG\xdb\x8b\xf0 \xcc4\x00\xdb\xcd\xb3!O\xf8I\xd1\xd8=\xb2,\x02\xd4\x8f@b'\xd0\xac\x11\xba3\xe4\xf0\x06*\xa6g\x99\x06`\xb6)\x01\xe9\xa1\xc0\xf7\xdf\xe0\xc3)ac;\xc4w\xf7J\x197\xf1A\x91\xf0:cJ5\x03\xe2[\xbf\xa2/\xf5gC?T\x9e\x8d\x98\xdeU\xb3\x1dbh6\xdcS\xb1\xbdtD\xf5\xe3\xb9\xb0\xb1\xb5.N\x066\xc7d\xc3(\x11X\xf8 \xe6\x1c\x86\xbb\x93\xb6t<\xce\xaf\xb1%\x1a\xa5\xdb\xc0\xc4\xce\x92k\x03\x8bq(\xd1\x06\x99\xa0\xba!\xf9\x84\xe0\xa0\x00\x80\xec\x8d\x15z\x00\x01\xc1\xf8\x88\xa0\xa8\x00\xc2\xbb\xb9XP\xc9\xea\x1e\xe0\xce\"\x0e>B\xd8n\x99\x81\xd7\xee\x03r\xd2\xa3\xb8\x07\xe7\xed],\xd0dQ\xac\xd3\x18\xe3\xa1\xed\x18\xdb\x06\xa6\xed\x99\x81`\xca! *d\xe3)6\x1bdQ\n\xc3\xc6rSVx_\x93\xa3\xb6\xb5\xb8,\x99\xe4\xdb\x84\xb0$\x0e\xec\x91\x05R\\\x9f\xbf\x87\x15.\x0d\xd4\xde\x0b\xefaA\x0d\xc7\xee\x93\xac\xea4t\x9f\xa4W\xd7E@F\xc6HJ\xe2\xfa\xc9\xa5\x9a%\xac\x9f\\\xafe\x89zU\xe5\xd9/\xb0IL_\xc9\xd9z6\xb6\xc1\x8f\xb0\xdc\xbb\x93\xf8q\xc0\x97\xeb\xe8\xb2\x80\xaa\x9a\x96\xe1\x02\xea\x7f\x88]\x06\xb3\xc4\xcf\xd4\xd6~\x84e\xa3,\x89\xf9\x1d\xe5F\xf5gx\x0fw\x8c-\x00k\xbe\x99\xb1\x05\x10\xa2\xa5nz0\xfb\xcf\xd4U\x0f\x96_v\xb4\xf9\x9f\xa0\xb7\xb6\xff\xe3E\xd81\xcf\x0f\xd0>4\x04_\xc0d\xfb>\\\x8c\xdc'\xdb\xb4\x1f\x0d\xb9\xe3U\xf3K\x12\xea\x08\x85\x90w\x13&1\xbb& \x1e\x1f\xba\xdc@\xf0~\xefj\xd1\x07\x8b*\xb9\x96\x960?\xcau\x0d\x0c\x10M\xe9\x00\xfb\x0f\xf0\xb6\xec\xf6\xd4\x93\xca\xf8\xa67W\x80\x7f\xc0s\xde\xed%\\\xc6y\x7f\x86\x97,7\x10L\x13wu\xb4>\xde\xb3\\\x030\xfe\xed\xc2\xa8\xb0\x1c\x93\xc3\x98\xf0\xa9\xcf=\xed:\x809\xc6\xae \xd6\xc7\x04<7\x10LZs\xe3\xca\x89M]y\xe1?\x88\xf9\xe1\xae\x16s\xb0\xd8\x91k\x00V\xd7vM\xc0<\x16as\x03\xc1\x879\xd7\x9e\x85da\x86N\x02\xeen\x98d\xe6& -\x1ern\xde\xc5\xc2\xdaJ.\xdf\xa7\x12\xa0w1\x95\xca\xcbOWY\x80*6\xe5]l\x1e\xcd\xcdC\x18X\xfc\xda\xd5\x11\xf2X\\\xcf5\x00\xbb\xedC\xb0\xed\xc7\x98\xc1\xee\x86\x9e\x8e\xa9\xc5\xef\xe5\x00\xc8\x84\xd4\xe2Ce\xc0:\xa6\x16\xd3sY\x00\x07\xd5\xe2{(c\x8a}\x88\xf1SBt\xb6\xff\x07\xf8\xa8\xed\xaad\x0b\x9fa\x0c\xc95\x00k\xf4\xbb\x86\xc5c\xcd-7\x10L\x04\x9b.\x1cw\xe3\xc2\xb9\x86\xd0\x95\x02f\xa9Wv\xda|\x1f\xdb\x8c\x15\xb8r'KOh\\\xbd\xb3\xc5\x8a\xc5n,\xa4\x81b|\x18\x9eW\xe1\x96\xfa\xd8+\x98\x9c\xeaX91\x9aw?\xc8\x19\xd2%\x8a\xa7\xa4\xc8a\x8ak\xb77\x8e\xf1[MX\x9b\x94E\xd0\xad1\x96awU\x08\x14^\xe4\\}\xc7\xeb*\xbe\x0fm\x15v\x8d\xc1\xfbs, \xe6\x85-\x9cn\x93v\xbf\xc4\x95$\xa4\x187mSa\x10x\x7fb\x99=O\x0c\xa9\xc1\xe7)/?\x02e\x01jRC\x16\\9\x19~F6Z\x03\xb0\xd8\x92k\x0f\xaa_`\x82\xbbkD\x1d\xc2?\x8c\xa8\x83U\xb7\xdc\xbc<\x84\xeb\xecj\xdd\xe83L\xbbr\x03\xc1\xf2w\xae\x9d\xbb0M\xca\x8d\x0b\x17\x96ps-\x0b\x90\xd5\xdeUy\n\x08\xe1V\xdf\xb1.\x97\xef\x1ba\xfd\x11\x96\x9d\xc6N8\x80;\xc8G\xb8\xb9\xb1\x934\\\xab\x8c\x9dD(\xce\xd2c\x01\xaf\xd0\xd8I\xc2H\xe8\xbe\xf0\x9a\x06\xc6\xc2\xb1\x93\xd4\\\xc6\x08\x88o\x0b:\x17\x80\xfa\xb8\xc6\xb1\x16\xa7,\xed%Vz\"\x00\xe0`\x8f\xe5\x86\xb1\x93\x18O\x0clR\x11\xb0\xea\x1d\x03\xbd\xd2-\x97Q7\x0d5\x85*\xa6\xbd\xe62\xca\xc0g-\xa4-\"\xc4\xb6!`H\xd3\"\xaf\x03\x97\xca\x18\xaaH\xfc\xa1/+\xcd\xfa)f\xe1c\xc53\x9e\xe2\x83 \x002\x8a\xef)>\x08\x97A$\xc4\xe4l\x0c\x9f\xf1\xf0\x8a$f\xb8\xeb\"\x87\x19\xee\xa1HaFFe\xea`]H\xb6&%\xaf\xa7\x98\xe3^V\x9e\x9c\xf8\xa6m\x0c\xdfI\xea\x991\xe7j\xb9\x1e`qx\xcc\xb9\xd2W\xb1\n1\xe6A\xe0\xc3\xbd\x02&w\x97y\xa2\xda{\x93\x1c\n\x0d\xfa\x11\xad\x93\xd5\xd5\xc8j\xca\x97\x13\x9bb\xb9T\xc3\xd5\x13\x17u\xd5\xb7y\xec$\x8e\xf2+\xff+,B\xebR\x85\xe5\x07#3}\x04\x04\x13\xe5\xcbZ\x0c\xc7\xc2\xf6X\x030\xee\x8e\xb5\xc4JQ\xdf\xe4\x8e\xb4dz\x1c\x9b\x9c\x8b\x96\x0c\x89\x97\x8dx\x86\x95\xf1\xb1\x81\x10:[\x1b\xef=6o\x17\x92sg\xd8\x16!R\x86ma\xc5z\\\xba\x01\xb6\x90\x8b\xd2-\xb0\x15j\xeeKj\xa0\xbc\x8eZ].\x0e\x17\xd6\x00\xc6w\xfc\xc1\x1dG\xb2\x82G\x18\xf1\xafh\xbfV\xcc\xfd\xf65\x00\xf3\x9d}\xee\xa9\xf3\xf0\x18+\x00W\xb8\x07Q\xbd\x0f\xf1\xe8\xf65\xe4\x1e\xde\x17 \x81C\x89qj\x9f\xfb*[\xcc\xdb\x18\x97\xafht\xc3\xf3\xd9\xd7\x00<\x9f+\x063\xb0\xa0\xb3o \x98\x94\xec\xdb;\xdfO\xac\xa7g?\xe1N6\xb4\x82\xae\x18D\xc2\x87`\xdf \x12\xd6A\x0e\x94'\xd4C\xcc\x04\x0f\xd4\xce<\xfb\x05\x16\xc0\x0e\x94\x13\x14\xd1\x9c\x0e<-\xfe\xe0k\xe67\xf4za\x9b\xc2\x81\x06\xe0\xfd?\xd0\x0f\xb5\x90\xb7o\x0f\xb4\x8eL\x9e\xbb}Cf#\xc06\x90\x03\xf9\x15\xab\x00\x07:\xbd$y\xcb\xf7@\xdfA\x927|\x0f\xd4\xf3d\xe4!\xdd\x03\xfd\xe2\x0bf\x05\x07:\x99\xe0Gx\xaf\xde0\xe8\x80\x95\xef\x03\x03\xc1,\xef\xa0\x88\x0d\xc1l\xea 2\xd6A\xb2\x91:<\x9d\xbc\xdc{\xa0}>\xc8\x83\xbdo\x18L\xc2\xc4\xea\xc0`\x12&\x8a\x07\xc6;\xee#l\x1f<0\n\xd7G\xf8\xb6\xed\xc0\x88\xcc\xa4\xa7q\x0dK>\xd8\xaf%\x00W\x8d\x8d\x0e\x93\xdfC\x03\xc1\xb8yu\x11\x84\x12\x8c\xe6\x87\x0e\xd8\xaf\xf0\xfe\\\xd5$\x0b/\xda\xa1\x06`\xbc\xbc\n\x1d`\xd9\xe6\x10\xda\xc7\xa4\xfd\x90\xcbdBX5\xbb\xaaO\n\x96\xdf\x0f5\x00\x8f\xe7\xea*\xf4\x8b\xef\xa2\x0f}\xe8\x18+\xadW\x0d\xe2a?\x9fC\x03\xc1D\xff\xaaA\x14L \x0f\x0d\xa2`JxU\xd9\x0b\xb1\x08t\xa8\x0c\x86\xa4<\xe8;\x9f\xe1\x83z\xa8\xf4 l\x00\xb8fBQ0\xc2\xdf1\x10LT\xae\x99\x1b\\\x8c\x1ew\x0c\x04\x93\x90k0\x0d\xbc\x8cw\xe03F\x82k\xea\xe5vL\"\xee\xa8\xef\x98\xa6\xdc\xe1\\?\xe2\x89\x19\xc65\x9eDW|/\x1b\xd6?\xa3vM]\x9fb\xc9\xf0\x8e\xfa\x8eq\xe5\x9a\n\x9b\xc6]\xdd\xd1\xc8E\xa6\xa3,\xfe\xa4\x030\xf8\xff=\xee\xe0\x8e?0!c\xf8l^\xd3ar\xf8\xb6\xed\x8e\xc1;|v\xae\x19\xbc\xc3D\xfa\x8e\xc1;|p\xef\xec\xdf\x92k\x85 \xd7\x9d\xfd\x10\x00\xef\xb6\xcc\xf7\xbb\xf2\xaf\xbb]\xd6\xcfC\xe9g\xda\xe6]\x96uY\xd8a\x7fd\n\xb5\xf2\x94\xb34K|7k\xbdj\xbe\x8e\x9d\x84%\xec\x0c\x0b\xdb'\xe7^\xe9T\xbb\x8a\xe4\xf7\xf9\xeftf\xf2\x90\xa7\xae\x13\xf3K^Q\x93\xcf\xf0\x838J\xb2\x94\x9d\xa9\xf6[\xeeTw\x11v\x99\xdfeN\x97\xe5\xec\x0c\xcb\xaa\xdd\x88\x9fh\x84\xcf\xc4Qz\xc99x\xb5\x02\xf5\xfb\xac\xfd\xf2,;sF\x14H\x13w\xc6\x1d:\xc9R\xe4\xf1\xc5\xac\x9dup_\xe2\xd7\x8f\x12\xd6\xce\x8e\x1e}\x95e\xec\xbb,}\xd5VF\xb7<\x07-\xb7Cfo\xbe\xc3\x12\x9e\xe5I\xc8\x8e\xcc\xbdZ\xdb\xc8\xcb\xf3\xb2\x91\xd0\x14v\xd8\x19\x96\xb4\xa36\xb4\x98\x06\xbe\xcb\xdb9;\xca\xe6\xc4\xeat:]v\xe4\x08\x9f\x89\x9d$\xe5\xc9\xcc\xd8 |\xcf\xc9\xf8\x9a\x1f\xee\xb5\x9d\x0e{\xe9%\xd6\x96+!\x16\n\xea\xf0\x99\xc0\x0f\xf7\x96\xa20\xe3a\xc6\xce\x88e<2\xdb\xb1\x8f\xe7\xb4\x1a\x8bhGV\x17K\xc0^\x13\x7f\x9fa\xf3l\x81eG\x8f\x92\x8aw\xc9\x173\xebo\xd5\x97\x93\xeb\xec\xb33lV\xad\xb4\xe8\xf3\xc4<;\xd2\xb4\xa0\xa2\xcc\x91v\xc8\xbe\xc7^\x11\x7f\x86\xec\xbbl\xeed\xe7\xd5\x0e\x19\x81XX\xebd:j.t\xfe<Hy\xc3^\x9f\x9c-Z;z\xd4g\xdfcs\x1d\xd6K\xb8\xb3W\xbf\xb5'\xe7\x8a:\xc7\x8e\xf9\xec\xbbl\xb6\xb1\xce\xe4\xd5U+\x9b\xcbe\xca\xe4v\x0btA\xc8\"\x11e\n<!\x88aPG\xe2H\xe7\xc5\x92\x08A\ndJ?\x97\xaf\x84\x99\x9f\xf9<\x9dD\x0fl\xc4 \x93\xc7\x83#\x0c\xce\x92C\xcb\xe6\x89\xb2\x1ew#\x8f\xefn\xad\xb6\xb3*\x9e\xdce\xae\x93\xb9C&\xbb\xb1.3\x0f-U_\xd8Z\xbc\x08\xb2\x18\xd9 \xa2_\"\x88\x14\xea\xd8O\x17\xa5\x9c'NJ<s\xe4\xd1<]\xfc}r\x16\xfe\xae\xa5o\x9a\x88v\x99:6\x8eA\xd5\x93s\x1d8\xf0\xbe\x95\xb4\x8an\xeb\x8f\xff\x99J\xaf\x13\x08]R9\x14\x91\xa1\xa0\x02\xb7\xe9\xf9\xb3Q\x0b\xbf\x89\xf4Y1\xa6D\xf2\xbe\x04\x9eLw\x18\xcc*d\x89?j\x9b\xb3\xd5>\xfe\x83\xf4\xe8\xf1A\x97\xb5X\xab3\x93E\xf2\x0eg\xc9Iy\xfb\x85\xe0\xf0F\xef\x16w\xb3\x19\x8f\xf7\xfd\x90o&Q\xcc\x93\xec\xb0\x9duY\xeb\xe6M\x9e^\x8a\xbc<\xe0\xad.\xc1\xd6 \xe7\x0b\xec\xc8l1\x82N\x97\xc9V\x9c<\xc8\xca\xd3\xac\x99%\xc5\x147\x1a\xc5Q\xc8\xc3,]`\x8en\x89\"\xfb~\xe2\xc4K\xa5\xa2y}\xd14s2\xbe\x19\xe4\x03?L\x17jXA\x1as\xb7\x0e\xc6Tw\xdb<\x90\xb9&\xd2\x05\x96\xd0^\xf4/-J\xf9\xd6Bw\xedu\x9d<\x1b>\xc7\x08\xa2\xe7i;r\xd2\x13Mm;r\x8f\xd2\x05\x96\xd6\xcf+\xe1^\xeer\xd1\xb5[\xbf\xd4\xfaWZ\x84\xc0>P\xf2\xf5n\xcd)\xbcK\xe9l\xdc\x0e\xdb'\xe7\xe7;\x16\xc9\x14@'0\xc87\xa0\x93\x18$\x88W_\x82NaP\xaeA'H\xadT58\x7f\xe2e\x0c\nt_'\xc9\x08]\xdd\xe0\xc9\x13\x9d\xce\xab\xdf20}JX\xbf\x9e\x1c\x08\x02\xc6g\x8a\xc3\xc8^c\x9c\xd96Um\xce\x02\xe3u+j\xe98\xa6\x1d\x0b\x92Mz-\x88t\x95\xd4j\x0e\xfeGw)\xbb \xf3 `G\xce0N\xe59\xc9P$\xcfc~\xc8xG\x93\xa18\x89\xb2(;\x8c\xf9\xcc\xd0I7\xf6CM\x90f\\'\x08\x04Q\x0bA\xd6\xc9\xae\x877\x04S\xb9\x1e\xde@|N\x0d\xb3L\x8b\x04-,-\x02\xfbF\x90J?\xdd\xdew\x06\x03\x9e\xcc\x0b\x8e7\xe3\xa7\x1b\x8b\xdb'\xe4\x9f)O\xc6<I\xe1ow\xc8G\x1c\xfe\x8ee\x06X\xf5\x0f7\n\xd3\\CzN\xca7\x9dl(\xff1\x8c\xd2L\xb5\xe3\xe6\x89\x9f\x1d.\x8b\xf1\xfa\xf2\xa0C\x01'\xbd\xa0\xcbx\x15\xd8\xf8\xffg\xef_\xb7\xe36\xb2\x05A\xf8\x7f=\xc5&>\xb7\x1b(\x82\x103y\x91\x942\xc5#KtY.\xddJ\xa4\xec\xaa\x93\xe6\xc7\x03&\"\x99\xb0\x90\x00\n\x17^l\xb1\x97{fz\xaek\xcd\x03\xcc\x9f9o0\xefp\xde\xa4=/2+vD\x00\x01 \"\x80$)Y\xd5}\xb0\x96\xad$\"\x10\xd7\x1d;\xf6}'a\x00\x9b*\xfaf\xe7\xbe\x92\x1bl\xbf\x0d\xf1\xed\xd6\x8e\x12\xc6}-\x8cW[\xd1\xde\x07]=\x1d\x13W\x0d\xd8;#\xc5\xe1U^\x10z\x91R\x1c_aP\xfc\xeb\xbb\x9c6\xa2&\xday_\xf6\xa6\x0b!\xdf\x16\xc7\xce\x1cz\xec<?M\xa3+\x9b-\x93\x0b~vV.\xe9-\xe4PrB[\xd8\xe9E\x8b\xf1\x1a\x0b_\x1a\x89\x05\x901\xc4\x87\x0f8\xdc\xc4{\xe9\xa7\x8e\xdd\xa2\x8a\xbb\xf8\xcb\xb7i\xed\xcc\x9ba\x02Q\xb12\x8em\\^\xde\x19=\xd3\xcd\xf6UhP\xdd~\xe9\x0e\x9c\x10\xdd=\xdb\xfa)Ob\xcbm\xcc\xac55\x05\x96\xbd\x93\x9e3\x92'\xd19 V\xea}\xde\xbb_\x02W\xce:\xdc\x0e\xc8\x88k\x96\x94qa;\x94\x17f\xb8\x0e\xf6 \xb2 %t\x8b\xe6\x08\xeaF\xda'Y\xbb\xc5\xa6\x85\x90\x17\xe1ylO\xad\x9a$\xb3\\\xb0\x10\x17\xf9\xb9u\xech\x01\xee\x1a\x07)a\x18\xdf\xee\xed\x8e^}\xf4\x0b\xec\x91\xe3>\xcb\x85\xcdc\xa7\x851\xd5\xf8\xec\xa3\xcc\x94\xf7t\xc8\xb0/\x9fq\x03\xf4\xc5L\xd94s\xb7\x89\x85\xf1o E\xe3\xdf\x12\xfe\xc6\xbfk\xdc\xce\xfe\xac\xd0\xfe\xddLI,e\xffvUw\x8f\x91C\x1d\x82\x83)\x84\x13\xbcXn\x86\x7f\x95\xb8\x17\x87\xed\x85\xf9K\x1f\x89\x15F\xfe\x18\xcee=\xbd\xce=\xfb\xb9MP\x0c\xed6\x93\xc4_\xbf?=#\xe1\x9f\xa3\xe4IY,\x92,\xfc\x99\x18\x88\x8a\x9cR\xd1JZ\x9e\x96\x8c\x1e\xa8Hy\x05!\xe2+ \x91\xd2D\x88\xe4\x9f\x86\xd8\x16\xbf\xe8\x84#\x0d\xaan.\x95-\xee\xceP\x7f7k\x87.\x83}\x7f\xed6\xccvq\xab\x8c'\xdc\x01\xc2+>t\xdf{\x11\xe6\x85\xd3\x06\xfe\xeav#q\x91]\x1d\x92\xbf\xdb\x8e7O\xb2\x03\x7f\xb60\xcc\x0d\xa4[\x93\x1d\x06\xbe\xee\x0e\x1d\xc7\xd8Q3\xa2\x14R\x8a\xe9\xe6\xb1\xba\x14u\x0e\xd3\x91\xa6\x94\xe2\xdf\x92Q\x01\x94\x0d\xb1\x14g\xd8J(\xcb>\xb6P\xbe\x84bn\xfe\xc1<J.r\xcbY}\x8ap\xa3i\x02\x1f\xae~\xaa\xc0\xc91\xfdtA\"\x9b|o\x9e%\xcb\xef\x0e\x1d[/0\xa0\x0f\x9d\xa6Qb\x00\\\xaaA\xc1\x1a#\x93\xbf\xcb\xa2 Dl\x91\xda\x05\x96av\x80\xfeb\xefI\xa3\x01\xf1\xa2\xef\xc3|\x96\xa4$\xaf>c\x7f\xf6}D\xf7|\xd2\x04\x00m\xfdk\x0d\x03\x11#\x03\x92\x96\xf9\xc2\x8e\xc9\x05\xf8\x14\x81\xf3\x1b\xbd\xda\xd6_\xaeQ\x056\xf3\xe6aT\x90l\x00|@}\x88\x18FE\x91-Q\xd6\xbdv\x1cG\xc1v8.X\x8b\xa2H-\xfc\x14!\xd7\xf2\xd3\xf0\xcf\xe4J\xbc\xa1\x84\xc2\n\xc3/;\xfd\xd0>\xe2?\xc8\x7f\xadt\xe5*\x99\xbfJV@o\x8d\x8a\xad\xf2\"\x12\x9f\x15\x0b&2\x7f\x92e\xfe\x95\x9d\xc1c\x18\xc1>d\xb0\x01#\x98\xc0\xa6\xe3\".\x18=\x82\x10\xbe\x82\xec\x11\x84\xeb\xeb\x0e$\xd3\x90V8\x96[\x9b\x86\xc7\xdd\xcd\xa4}\xfaws\xd9\x97\x155\xe3\xd3\xcb=j1\x8b\xd3\xe2\x98\x92\x8b3\xbf\xb0\x13\x87r\x93mV3\xd1^\xff\xac\xe0\xf7\xbf\xff[\xf2\x8c\x9a\x9a\xbdK\xa1\x82\xdc\x06W\x1f\x0f\xe3\xebVe\x91\xef\x84\x8d\\\x99\x81\xbd3\xd6y \x03+\x13%\xf5\x86\xa1Z\xa7GB\xa0\xd5\xe4E\x1d\xde\xd6\xc8\xd7\xe6m\xbev\x18\xf1\xb2\x12\x8f\xe3\xf6*#\xccK[\xe1\x9fB\x89\x7f\xe2\n\xff\x14\x1c\xff\x14\x12\xfe\xc9\x18\xfe\xc9\xe0+(\x1eAF\xf1O<\xcd\xba\xf8'\xd3\xe0\x9f\x04Ug\xb7\xc6?\x127E\xf1\x8f\xdfB/1\xc59]\xd1\x8e\xe9\x88\xaf\x84\xd7?)+E>gV\xa9\x8b\x07\x99\x0e\xa2\xa3MH\xaa\xa2\xfb*N\x88\x15u\x98\xa4Z\xa9\xf1P\xaf\xd4\xd8T)5X\xd1H%\xcdcEz\xa5\xc6\xd6\xef\xab\xd4\x10\xbfd\x91\x7f\xb3\xa1\xa7~\x14\x9d\xfa\xb3\xf7\xf9\xa4&b\x9as\xf9\xb6(\xd2'\xa8\x88\x8b\xd4\x15\xde\x12Lc\xf5u\x12\\Mj\xfa\xbcY\xe7\x90a#\xad\xfa\x92\x97?M\xe2\xc2\x0f\xd1\xdfL\xa3\xbc\x94:;\x08B\xf4V\xc8\xd55_\xa7\x84%\xff\xa9\xfa\xd6(\xe9\x12Q\xf1E\x18\xbf\x9f@(j}\xe6\x87\xc3\xb7c\xbb\xab\x9fKxI\x07\x90C\xbc\xbe\xec\xd8\xa6p\x8cUF\x14l\x91\xa8XQ'\xf1\xd1A\xb4\xff.%\xa8\xf5B\xc0\xedr-\xb1\xb8\x18*ex\xb7\x0e7\x0cI\xc9\xec\x8d_,\xba\xe5LJbU@TA\xa6\xa5\xb0)\x0b\xe7`\xaf\x15\x95\x1e\xb0:\x03\x9cH\xe0\xe9ul+O}J\xf5\xd0\xdb\xc4\x05\xebU\x02\xd5$\xda\xcc4\x9d'SI-\xfd\xb4\xa6-z\x94@\xda\x8e\x83\xf0\xbc\x03e\xe2yO\xae&\x12c\"\x9ekW\xdf\xdcb\\\xcd\"\xc6\xeb\xaf=\xc8\\\xc7\xaa\xf1\x81Z_|\x91\x91\xb9\x10\x13\xecc[0\xb9\xd9\xf8A\xcc!W\x16_\xab\xc6\x17\x99XI\xba\x9b\xf2\x00\xa3jc\xe90\xd5\x8c-\xf0=\x9bUR\xaaa\x02\x83\n\xf7LZ\n\x0c\xf9\xd1q\xd3\xd0\xbf\xf3\xa5\x0b\n\xfe\x94\x98\xd6\x12pX\x13\x98\x99\xc5\x01\xb8\xe4Q\x8f\xc8\x00\xfd\x86,s\xa5%)\x16I\xd0\xdbV\x8a\xee1=\xa2\x15q\x9e\xe9=\xc3\xd8t\x17r\xba\xdd=\x12\x99(J.\x8e\xb2\xab\xe7\xc5\xeb\xb2\x98\xb4\x8d9\xe5\xe7Z!<\xd0\xbdo\xbfko\xe3\xb0C\xcb\x8eY\xfey\x194uo\xa3Pu\xe7\xd0\xcb\xc8\x0e\xc5\x9d\x13\xf6\xdf9\xe1\xe7}\xe7d5\xf1\xa1\xbbu\xa4*\xdf\xd3\x85\xeb\xd6\x0b\x07\xdfNX'\x9e\x87g\n\xa8/\xab\xfb\xabb \xba\x95\x98\xb1\xf8<\xee\x96D\xec\x0ee\x06\x84GW\xa9b\x9c3\xac\x12\xe6\x07\x97dV\x16\x8a\n\xf3\x9e+4\xc5\xf2$~\xba\xf0\xe33\xc5\xf7\x01\x82\x8d\xf5\xd2\xcf\xde\x07\xc9E\xac\x92?.X\x95e\x12\x90\xe8\xe0\xd2_\xa6\x11QU;g\xd5:\xb4\xa1\xaa\xee\x12\xb85q\xc1\xe4\x01\x01\xc9gY\x98\xd2\xad\xb7*]f\xf7\xb3\xb3\xd6g|\xe9\xf8'\xe4\x02\x12\xefu\x16\x90\x8c\x04/\xfd\xb4y\xce\xe9ZG\xb4\xda\x99\xf7\x9e\x08\xe1w\x98\xe5E\x9bu\xa3\x80v\x05{p\x86]\xa8\x90\xd6)\xec\x81\x95\xe0)fw\xd3U\xcd\xef\xa3\n\xdar\x81\xc9f\xdb\xb6?H\xa2\\\x19n2\xbc\xf5(\xeb\x1b\xce\xf0B\xba\x97\xcc\nRl\xe4EF\xfc%\xbf\x08\xe9$\x98\x91k\xe4\x85q@._\xcfm+\\\xfag\xe4\x1e[\x88N\xa1_\x06a\xa2+<\x0f\x03B\x0bu,\xf0 \xdb\xd6\xe7qZ\x16*m\x03\x9f\xcb\x0c\xf6\xeb\x0b\xae\x85DOt7\x1d\x93f[\xf3\x90b<e\x0d\x01\xb8\x93\x1e\x19\x88xR\x9bx,Z\xa5G[\xcd\xa7\xb2\x9a^~\x14v~\x0eL\xb4S\xb0\xc2\x9ad\xe4g\x80\xe1\xe4\x1c\xfc\x8c@\x9c\x14\xe0\x9f\xfba\xe4\x9fF\x04\x052\x96\xabok\x96\x04\xa4nN\xbb\xdd\x8e\x0b\x16,I\x10\xfa\xb8P\xb9g\xe9\x04\x07\xc0A\xe7\x14\xe5V\x8d\x16/7...6\xe6I\xb6\xdc(\xb3\x88\x19\x98\x07&HZ\x96Q\x11\xa6~VP\x98\xd0\x01\xc5\x05\x03\x8a\xef\xf2$F\x1b\x04\xff\x9b$[\xeat\x17\x07B\x88\xc2-\x19\xd8\x99u!\xaal6\xacc!\x07\xac\x8f\xafc\xb7/2\xf1\\\xc2\x1e\x1cT\xed\xa5\xec\x06\x0dI\xaekE\x0b\xb3\xf4\xb2\x90\xf5\xda\xb1C\xa9\xe0J\xaf\xddh\xc5\xb0\x9d&\xbax\x16\xf9y\xfe\xcaG\xf7\xd1\x82\x02\xc7\xc6\xac\xe2a\xba\x10h\xe8\x04?\xae\x80F_\xed4 \xae\xaaj\x97M\x9a[% \x13\x8f\xd0%\x1c\x08\x01\xed\xdf\xcb0\x93\x04\xb4\\i\xeaxa<\x8b\xca\x80\xe4va\xa0\xe7Jqu\n%\x95\xbejTW\xa5P\xea\x17\xa6\xcasa;g\xec=\xa8\x9b\xe4\xcb\xc4p\x1f\x7fG\xc4\x1dF\xdf\x99\x08cz\xf1Y\x94~\x8b\xcf\xd8\x89)\xd9\xf9:\x0dc?\xbb\x92\x0e\x91u\xea\xe7dw[p*jF\x81\x03\x9d~\xeb\xb2~\xee\xca`\xd9,CZ\xeag\xfe\x92\x14$\xcb\xbb@\x06}\x80\x16\x18\x87!w3K\"\xa8\xbb\xda\x98%\xd1I\xec/\xc9\xea}\xf6q\x96R\xa7>\xecK\xf3;\xc1\x0e\xa1\x82V\x98t\n\xb5\xa3)\\lL;(.'\xd0\x8f*/\xae\"b\xb2^\x07\xf4\x1a\x880\x98\x07\x1d\x9d\xb6b\xf72\x026F\xeb\xdf\xfe\xf5\x8f\x96\x90}\xdf\x14\x07\x81\x0e:NN\xf0p\xea:/]\x88(\xc0\xdf|\x85\x1a\xbdfI\xba\xc1O\xb8v\xba\xf6\x17\xfc^p,\xe7#L7 iFf~\xa1\xdb\x0b\xca\x95\x0b\xbcQ\xd5\xa4\x97\x82\xfc\xb7\xd8\x0d\xd3\xf8nw\x88dj\xb8w\x9c\x12\xe1\xec\x1a\xa9\xb0\x06+\xab\xabta\x1a\xf6<6\xf2\xfeA\x98\xa7~1[<\x8f\xc3\"\xf4\xa3\xef9\xcb\xaa`J\xc4\xc3n\xff (\xf8\x12\xf1H\x13\x9c\xa0\x9f\x94\x05\x1b`\xc1\xbaz\x01\xb4\xcd\xc8\x9c\xde\x04B}E\xcehs\x13\x06\x8a\xcf\xe7\xb0\x0f\x01L`\xae\xffhU*\x15\x18\xa5\x8azu\x83\xfd\x86z\xef\x9d\n\x1f(\xa5\x1dZC<\x18p\x07\xc9 \xb24\x9d\xfd@\x05'yRf32\x81es\x04\x86\x83\xb2P5\xd3\xbbW5K>\x01_\xc1p\xcb\xfc\xf8\x04\xcan\x0dr\x99\xfaq\xf0\x8c\xa4\xc5b\x02#\x85t@\xf0\xdbJ\x01\x9c\x80\xda+a\xb8\x83$\xac\x02\xf8jA\xd8\x9c \xc2d\xe2WQ\x9f\x13&z.\xe4\\w:3Y\xfb\xa3!\x12j M\xd5\x15\x90\xd58B\x96L#\x06\xec\xdd\x19\xe8]<Pl\x90\x02\x8c[\x10\xf4\xb9\x0b\xdeP\xcd\xd8\xd1MV*R\x9d\x82\xb4\xa3\xb2\x14\xea\xd1\x8e\x9f\x98P\x8evTMB5\xaa\xf4\xf6\x8a\xedM\xa5NT&Q\xe7B28\xe7\x92\xc1\xcf@SJ\x9755\x8a\x03\xab\x91\x15&g\x10\xa6\x04\xa8\xa4\xee\xc5\"\xcc)\x0b\xe4r\x93\xa7V\x81]x''\xe8\xe0urR\x9bk\xd4\x95\x1c\x87[%\xb0\xea\xb5\x03\xcd\x00\x8cK\xdb\xca\xa5\xb6\\ |\x18~\xe3\xed\xb4;\x17$\xfc\xad\x8c\xc4\x01\xc9\x14\xcc\n\x07P\xa3)\x03\xc8\xe6\x0c\x8b0\xf7(1f\xb8\xc9\x99\xa05\n\xe3\xf7\xfa:L\xd2J)l\xc3\xbd\xc8\x151MI\xabc\x167\x8a'\x14b\x03\xdb\xaa\x144\xcf\x03\xc6\xb5\xb5\xdf\xbf%sSS~\xdd\x94\xc4\x1a9\x92$Q~\xed\x15\xc9w\x87v\x0fw\xab\x12\\\x1a\xf9\xbe\xd9Mi\xd9Al\xc6\xd2\xcf\xce\xc2\xf8\xeb\xa4(\x92\xe5\x04\xac\x91\xb7C\x967\xe07>\xe9 \xefz\x8c\xa7\x15\xe9\xa2\xad\xd2\x90\xbc\xc5\x14\xeb\x95\xb0\xaf\xad\x9e\x18g\xcc\x89\x9d\xee\xed\x05B\x98\xc8\x996\xedh\xd2L\x12\x03VJn\xf8\x17\x0b\x8dW-\xfa\xaf~\xb2\x19\xff\xd4\xd4\x81\\\xc9zS\x818X=f\xaf\xf2\x83\"i!\x04Y\xdbCQd2\x87Z\xd1nY\xbd\x8a\xd1\xc2\xcb\xd3(,l\xeb\xc7\xd8r\x86)\xd3\x15\xad\xc4\xf0\x186a\x9f\x1b\xb3\x11X\x87\x91\xe3\xfd\x94\x84\xb1m\x81\xe5\xc0:\x14`V\xe0\xf2\xcat\x10\xeaM\xa3\xb8\xaa\xa5\xa9\xf5\xc5\x06\x8d\x1d&/\xfa\xe5z\xd8\xb6\xa8\xa8\xf3\xe6=q\xdc4,\xb4#\xafF\x91\xb2\xe5#\xef\n\xf6 \xc5\xb7\x9f\x1b\xf13S\x918 /\xe8\x908!/\xe8\x908>/Pz\xbb\xcfT$N\xce\x0b:*\xcf\x88\xdb\xe9\xd6c\x9d *gf\xa0rf\x9f\x9e\xca1;e\xf6P9x\xa5\xbb<ZU\xd9=\x85m\x02\x86\x93?\xdd\x8a\x95\x05i\xae\xb4 \x8d*\x0b\xd2\x1ce\x0c\x18Ci\x86\xd1\xaa`\xb6\xbe\xee@4\x9d5\xadEg\nkQI\xe8\x1eV\x1e\x1dm\x12\x8c\x19\\v\xc8\xb0\xacI\x86\xcd\xfcHX\xa8#\x13\xbd\x08\xf3\xca>=\xc2\x90U\xa1'L\xce\x18\xd3\xd3k\x88M\x9f\xd0\xcbI\xc1\xbe\xaa\xd5Hx\x06\x14gY\xee\xe3{?\x0b\xfd\xd3\x88\xa0\xc8c\x85\x0e\x85R;\xec#\xc8bn\xb3^(\xfa\xd3\x7f\x951O\xfc2\xcbH\xcc\xbf4\xd3j\xd5\xa4\xcfH\xf1\xa4(\xb2\xf0\xb4,\x88m\x05~\xe1o\x9c\xf3>\xfb\xe8\xac\xe6\xc2\xa9\xaf\x06K,\x8d\x05{\xd5\x8d\x82\x91pb\x83\xa9\x0e3\xa66\xc68AZ9\xd1\x97\x9f\xfb\xd1\x04|e\xf1\xb5f\x8f\xabE\x1f\xb4\xa3\x8c\xe3\xc0\xddd_R.\x97\x04\xac\x85\x8e\xe9/\xef\x04\xcd\xdc:\xdc\x00\xfa\xafh\x90\x08\xb4\xbd7T\x9cE8\x8c\xb3\xa8\\\x8b\x9f\x85\xc1\xcb\xa4\x8c\xdb\xc9\xff\xe0\xa32\x19\xdcB^\x0d'\xa4 \xbcH\xf9\xd3\x96\xebcZ\x08%>#\xc7\xcb,\xb2\xfa/^\x15Y\xd7Z\x8b\x1f\xc2(zKf$<\xc7\xcb2\x1f\xb0&\xbd\xa7|\xc8\xa2\xc4\xb2sJ\xdf\xc9^\x15\x1f$\x955{\xe3+\xf5\xdaS\xba\xaf\x1eqk#\xd0\xb5\xab\xf9\xceD\xc4\xd1\x15@/\x19o\x1e\xc6\x81D\xfc\x0d\xa4\xfc\niwyl\xc5F\xdf\xda6LF{h\x8c\x11Vdl\x0b\xb0b\x15`\xe9\x1b\xb3CVO`\xc9\xdc\xaa<>\xa2\x96:zu\xfa7\xb1[\xf3\xc5o>|\x80\xac\xc7\xb0\x11$\xac\xd9n\xa2\xf7Cf\x92\xda_\x0fqj\xa1P\xb7Zz\xe6\x0e\xd4\x08\xb7\xa7Ha\xb31\xf4`\xdf\xa9\xf8\xc4\x8c\xd3\xee\xfc\x98\x0f\xdc7\xcd\xe9\x1e `9\x98\xcf\xc9\xac\x08\xcf\x89\xf8\xd2\x88E\xd0\xfb\xaa}\x92{\xd5\x1d\xb2k\x94|\x92MgW{\x82\x06\x1e5\xb3\x04\x87\xc7\x14\xf4\xf2\xf0g\x0d\n\xe4c\xceo*\x14\x91\xd5|\xc2\x13L\x0d\xd8\xae\xbe\x93\xc8?%\x91\xb1\x9bE\xb1\x8c\xbeA%\xf3\x8d;aa\xd1\x8c\xbd\xd4\xea\x03\x04\xf0&y\xad\xeb0fT 3\xb7k\xda\xa2\x98\x00\xa6o\xe1\x13&p\xeb3\xa0\xe6g[\x8693:C\\!W\xd7\x03\xa7\xdb\xa8\xa7\xb3G\xf6\x8a\x841N\x8e\x905\xf5\x00\x1374\xbe\x0b\x88\xa3\xb4LY\x90`\x83\x8eP\xb7A\xd6S^\x0b\xde\xbd}1\xb1\x0c]7Dg\xa1\x9d\xe1\x8c\xb4\xb5\x17\xdb\xb5d\x8b\xd3\x0c\xd2y5|\xd8\xb4s\xd2Wk\xd89\xf9\xab\xdd\xa9}\xe0\xd5c\x89\x03z\x7f\x0d\xf1\x98\xce\x1a\xda\x06\xd4~\x1bC\xea\xf1\xdb\x95\xc4\xe5\x12\xcd\x11ns\x8e\xe9\xd3\xe2\xe8z\xaf\xf9\xfa\xec\x13\x13\xcfkZ\x8e\xc6\x14V@\x050`\xbf\x06\xa2\x03\xa8\xe2?\x92`B/\xf3\xbd=Hl$\xa6\xfa\xa9\x1c\x86\x1a\xfa\xeb \x9cc\xacH\xb1\x87\x89\xfaq`\xa2\x9fm\x88\x96\xb8}\x93\xe5\xa6\xb5\x05\xb9T\xf1s\xf2\xc3G\xccW\xa2\xcf&\x0e\x86\x83\x83\xb9\x91.\x0c\x9a\x16D\xeb\xf0Q[Ctj\xf4\x88[\xeb\x05\xee\x13\xbb\xce\xf1\xed\xe7&v\x8dtb\xd7H'v\x8dtb\xd7H'v\x8dtb\xd7\x88\x89]\xebQEL\xc0\xaa\x12\xabF\x9f^\xac:\xbb\x8dXU\x12\xac(\xa4\xa7]\xad\xadVy\xdc\x92Z\xdeJy|+\x11\xcf\x9dr?}\xbcM1\xc4)F<L\x8b\x9c\xf8\xf9\xd6\x80\xcaYU\xf9 \x0e\xd7P5\x19\xe0\xdf#\x9ePf\xc6L\\\x03\x8b|o=M\x8c\x84d\xc9jq\x87\xe7\x1e\xad\xf0 r0\xa4\xc7$DF\xa5\x9f\x82\x1cF\x1c\x9eE\xc9\xa9\x1fm\xb0I\x9bl\xd2\xc1L\xcd\xf8C;\x14\xe1;.2?M\x95\xb0(\x9eer\x1aFd\x02\xa3\xf1\xaa\x83Y\xcd \x95\x8fh\xa3\x08\x8bHo\x04\xcb\xf7\xd1D\xb3\x96F51\xeb\xc5hs\xd8`\xf0'\x10{yCll\x02\xc9\x8e\x8cy\x02YW\xf0\xdc\xf3}\xe7\xfe\xae\x1aYA\xb8\xd8\x11<\xb0\x89\xac\xd6\x82J\x12Q\xb7S\x95\xe2{\xf5\x8e}\x12\x82`\x86o?7\x82 \xd5\x11\x04\xa9\x8e Hu\x04A\xaa#\x08R\x1dA\xd055c\xe1\xc6s\x85\x01\x9a\x9d\nm,\xfa\xa06+\xa0\x8b\x87=\xdaT\x92\x12\x8ah\xe0\x1f\x9b\x94\x08`\x0f\xbe\xe1\xfd\xd7\xe1\xbf\x9bc^\xf4\xea\x86$\x92\x83\x18\xb8\xd3\xc1\x1a[\x90\xa4\xea7\xa5G0d9\xab\x8dc2\xdfT\xa8 \xc3\x83w\x94\x1c2\x07\xb8\xbeI\x8b'\xac\xfcO\xed\xd0\xcb\xf1[\x9b\xe8HzJ\xd4d\xe4\x16}Q\xc4U\xf8\x05\xe9\x91\x8d\x979\xc9P\xe3\x15\x84\xf3\xab\x1ewsW1{\x95.\x0f\xc4\x04\xf2\xd5\x06=X\x0f\x0c\x95\xec\xd8\xe8\x05-?L\x86\\\xd9\xf6\xf6pv\xc2\xbf\xaa\xe5\xaa\x87\xf1\xc9\xb2\xe3\x1e>\x19\xe9\xa3\xa6Q4\xb7\xa5\xeb\xb5\x10\xb2\xa5\x98\x81I\xdbMk\x1f\xa1w\xee1+\xa4p~\xe5\xd8\xed:\x15\xd2\x17\xb0>GI8\x962\x0fE4\xe5a\xf3\xe8\xe3\x9d\xb9\x8b\xdb\x0fYX\x90\xd7qt\xd5\xc0\xbc\xedG\xa7\xabp%\xb0\x1f\x0c\x08\x83\xa1\xb7W\xcc\xc0\x80\x96\xe9\xee\xaa\xd3g\x02\xd9\x85\x1f\x07\x11y\xbd\xea\x88[\xa0;\x14\xd0(\x10\xdf\xfb)O\xe2{\xa1W\x90\xbc\xb0\x0b\x16\xc0^\xb6\x1d\xe0yf`2\xc8\xa6\x00VY\xbe\xf6\xe17m\xaf\xbc\x91vlX\xc1\"9;\x8b\xc8\xf3\xfc \x08\x8b\xaf\x93K0$\x99\x91\x1f\x19\xbf\xb2\xb1\x0f[y\xe9\xdb~\xb9W(F5\x815\x8c'\xc0\xfe2~\xa7\xb6\xc0\x84\x1e\x98\xc7\xa46\x9d\x08W\xf2#\x8fE\xe1|!\x9e\x0e\x82\xd6W\xe5\xa7A\xa3p\xa4\xc3\xea\x14t'w{f\x1bV\xb2\xa9\x80\x15\xf8o\xfa\x08\x05u\xe3\x16\xaa/\xf1\xc1*S\x1d\xf6[\xdd\x02\x02V\xb1\x82\x001\x85\x16\x9e\xe0\xb6\x04\xf5\xdf_~\xa9\x9e\xaa-Ur\\X\x93\x1a\xab\\N\x18\x11\xd8\xf8\xb3\xd2\xeb\x0f@\x0b2d\xae\x8e\xf1o\xbc\xd4\xcf\xc2\xe0]\x1a\xf8\x85.\x08\xc2M\xd7X\xa2\x11\xf8*\xcbo\xb4\xeb\xac\xda\xa5;\x9a\xb2V\x10\x05+\x1e\x86a\xeaxXA%\x0f\x15ie\x88\xb6\"?\x99P\x9f\x0f\x101A\xa5\x9f\x1fx?\x86\x98O\xce\xfa\xba,\n\xb3c#p\xba+\xb3\xad#rY<\xc9\x88\xd2\x15M~JV}\x11\x9e-\xa2\xf0lQ<M\x02\xa3U\x1f\x888\xde\x08-\xf4\x18\x99\xebR\x16/gW\xb5\xb9\xe2\x1c+V\x87\xce\\9\xc5\xca\x8dK\xa1\x97\xaa\x8cn**\x83\x96\xac\xe84 \xae6\xd0G\xc4\xe0\xb0\xe0\xc2\x1cM\x181~\xf2\x0d\xc4e\xa0\xed\xf4\xe4d\xb8\x1e\xa7'bXK\x8d\xdf\xa4\xfa\x0c(\x0f&0\xa3\xb3\xd3\xcd\xcc(\x04\x03\xc3\xcc\x04 ?lr\x86\x11\xba\x1fc\xbb7\x98nQcR\x01l\xdb?F\xbf$\x085~\xf2\xc0:5\x81Y\xb8B\xa7s\xd8\x07\xeb\xb4\x88a\xe6\xc73\x12\x81bo\xd8``\xc2\xea\xd1?\xf4\xb5z\xa1/\ng\xef9\xf0\xb5\x08f\xf3\xc9\xda\x07\xeb)\x8e\x10\x07B?\xa9\x02#\xb8\x90\x9a@s\x95\xd5\xc0\x19.\xa3\xad\xa1\xf3\x18tY\x89\x87(\x04\x1bv\xa2W\x04\x83\x99\x08w\xc1zK\xdb\xb3\x94\xd1\xf4A}?\x1fw\xb34\xd9\xb9\xf7\xa6\xcc\x88J\xe8\xb9\x10K\x8a$`\x87\xaa\x97<\x86\x1bA\x87X`\xf1F\xd5\x86\x872\xa5\xa6gup\xc6v\x98\xf1\x1aG\x05\xd5\xfb\xebf\xfa\xce\xc5\x1f\xf8\xcb\xcfJ\x02\x8b\x0e/\x1d\x81\xaap\x85Q\xba\x01+}d\x84+\x8c\xd2\x0dX\xe9##\\a\x94n\xc0\xb3\xb6\xb2v\xa6W\xd6~v>0\xb0\x9a\xf4T\xe1\xee\xab\x97\x9ef\\zz\x13W\xe0\x81\xd2\xd3\x94U\xcc\x0c\xa3@\xf2\xad\x8f<E\xcf\x9c\x1ew\xdb\x08\xeb0\xd1\x9b\xbe\xd6\x0c\xbb;\xe3x\xa8'\xcb`6\x80\x9f\x8f\x11s\x9a\xc6\xce\x03&\x18\x82\x8b\x1a\xef\xf7kWa&jd\xe0o\xe8j\x0d\x15\xa3\"\x96\xe7\x8eY\x95\xbe]\x86J\x7fn\xdei\xa8T\xe7\"]\x0d z\xa9a\xe6`#\xa4\xbb\x14\xe1\xe14\xac\xe1\x11\xf2~\x07\xe6n\xf8\x8a\xf5\xc1=\x0c\x0cJ-?\xcc\xe2\x80d\xd9\x00\xeb\x04\xa8\xcc\x0e\xfa\xf7\x8e\xa5\x0c\x11A\x15\xcduY\x021\xebmr\xd1W\x93\x87\xcb\xee\xb1O\x80Jc\x87\xb9\x8e\x0e\xb2L\x1d\xa3S~f\xac\xfe\x10\xb7}\xa8tx\xd6w\xe52=J\xde\xf8\xc5\x82\xc5\xeb6\x7fD\x19<\xbb\x90\xd4\x07U\x846\xc7+\x92\x17\xc9\x85\xc8*nn&\x10\x80Sc8\xf3\x07\x0b\xc4\x87~\x14\xe1J\xe4\x18\x17t\x85\x9cG\xe2i\x1a\xb8\xd3\x95\xc5`\x05hdh\xfc\xb8\xcfG\xc5:\xf5\xf3p\xc6b\xcb\xa5}#\xa1G\xe7\x1c\xf6 \x80}\x08\xb8\x81rN2\x0c\x84&\xc8e}w0\x98ufd\xb7\xb6\x92d\xfe\xab\xad\xd30(N\xa4\xa8\x0el\xb0\x0eF?\x03{Q\x14\xa9\x0b_\xd35p,}s\xf3>\"\x1f\xaa\xf0\xd5SK\x91M\xcer!9\xee\xd9'\xc7\x85s\x13\xa3a-vk\xab\xe7*o^`\x19XS\xbfo\x99fC\xe6%b\x11\xa8\x82R\xf4\xcf\xe9\xc6c\xab|\x13\xf8\x94\xdfqH\x9bX\xb8Rz\xfe\xb4\x15\x01\x15,\x17\xce\xf1_\n\xa2\x06 \x83y8\xbd|\x1e\xacd\x17\x0b\x9ck 3\x12\xe0\xed&\"b\xf6~\xc5\x08\xa2\xfa\xe0\xf5\x7f\xd1q\xae\xe8\x91\xc7\x00\xdb\xbb\xbb\xdc\xbc7~\x9e_$Y\xb0\xf2\xe6\xfd\x11\x9fO\xb1w7\xdb\x0d\xbf,\x12z\xddG\xa4\xa0\xbb\x12\x93\x8b\x8d\x94\xcfu\xc0\xd7\xb1\x08\"8\xf8\x0b\x0ea+|q\xf3\xdd_\xe8\xfdkz\xc2z\x88\xa7\x07\xdd\xe7C\xf6\x85>\x84^\x9e\x83,\xe4\xa1\nf\xda[\xd5\xe0\"\xc8\x8a\x0dF\xf4\xda\x12\x11\xb6\xe4\x94\xf8\x19\xc9\xf8\xbdj\x82\xf7\xdf\xe9\xc6\xc3\xe1\xdd\xea\xca\xbb\xf1u\x87\xd7B\xf0\xd9]u7\xba\xe6\xee\xf6\x8ac\x16\x89\x16.\xcf\xe7\x86\"\x87_m\xab\"\x9c\xbb@6w\x81h\x86#\x99\x01\x08\xc6\xe8\x7fl\xda\xa9a\x08\x81,\xfb\xeb\xd4\x11\xab\x12\x0c\xf6\xfe\xed\xd1\xd1\x1b\xccLK\xe2\x82\xcbR'P\xc6y\x99\xa6IV\x90\x80IR\x08\xa5\x97\xac\xffh\xc1:\xa4\xb0N\x7f\xddN\xfc[\x0f\xaf\x16\x017W8\xed\xb3e\x919\xf6.{\xd1\x002\xb9)c4r\xc6\xab7-\x98\xf4\x1b\xcf\xb4\xab\xccLH_+D\x0b\xb5\x1e\xd5$3c33\xf1e\x95\x82\x92\xaf\x1d\xcf\xe9\xc3\xc4e<h\x8c\x9a\xd1\xf2a\x1f\xca\xa9\x7f\x8cqp&\xd8R\x88_\xf6\xdb(p!\x8a&\xe4\x98!\x8f\xa4\xfc\x08i\x90\xcd\x07\xabs\xad\xea\x02O\x13n\xfe\x91|\xa5f\xda4m\x9f\xa5`\xfe\xbf\xd50U\xbe\x0b\n\xf40Xl_\x85\xa9\x8a\x94a\xaafU\x98\xaa\xc8qq\xc8\x9b\x8f`\x0e_A\xf4\x08\xe6\xeb\xeb\x0e\xcc\xa6\xf3f\x98\xaa\xb99L\x95\xafU\x0fh\xc2T)T\x04\xba0U3\xbcR\xfd\xae\xafF\xaf2\x04$\xabK\xbfO<\xca,ZRej \xf1\x08\x0b\xe1b\x91h\x84\xc8|M|o\x9ed3\xc2l\x95l\x1c\xbe&\xd2\x11\xaai\xe8\xdd4\xa1\xb7T\xa6\x8cz\xe4k\\L>\xfd\x02$w\xb3\x00\x9d\x99\xa8\xb2\x92\x1b\xb3\xbe\xd1;'O}J\xe3\xd6\xab\xa7\x96\x1e*s\x9d\xd1\x01\x9d\x99\x00\xca\xb4\x9cd\xc8r2Q\xbby9\xd9\xc5=h9\xd9\xeau\x86l\x17\xd5\xec\x15\x06\xb7\xf54\xe5\x15\x87\x9e\x94\xbf\xe2\x11\xa4E\xefT3\x96g\xbe\x17r\xe2\x95\xa7*\x0f\xdbp\xdbK\xd0\x90\xd5\xd0\xa0\x1fL\x15\xe9G\x0d0tM\xb4k\xa9r\xbc\xfa\xf4\x07q\x05LT-\xa7j\xe4\x03\x82\xc8\x19h;\xe5)T\xc7\xa9Q\x07\x8d\xcb\xebxn\xd2\xd5\xe17\x12\x08B\x87\xa0\xba\xbd\xfa\xf2ws\xf6MZY~\xfbp\x03\x85\x82\xde\xaaYGW\xa7\x06 \x96\xf7\x95R>k\xf1\x80$\xa1\xe7<iy&\xb9\xe8\x9a\x19\x86\x02\xb3\xcb\x99\xf9\x85\x02\xf6\xa1\x0eG\xcd\xf3\xd0\x14\x0bMh\xdca:\x16=\x10\xcb\x06KIz\x1a%\xb3\xf7\x1b9a4X5\x88\x8d\xbeh@\x1f\xa3\xfb\x8d\x05\xf1\x03\x83\x1f\xf1\x9d\xf4Y\xf8\xa77\xee\x07\xe5t\xc3\xba\x11S\x1b\xe4 \x9c[Fq\xfcJ\xf3\x13\x1dK\x02\xae\x0d\xe17\xfd1'\xbc$y\xee\x9f\x19\xa6z\xb4 9J\x1f|\x17\xac\x8d\x88\x9c\x93\x08\xb8\x81$$\xe7$\xcb\xc2\x80@\xb1 \xc0\xdc\xcb9\xb2\x15U<\x93t\xd0\x1ck{u'j\xa1\x02>\xbc\x8d+u\xe5;pKo\xea\xa2\x11[p\xb8;t\xdb\xa1\xba\x9eT6(\xc2\x9b\xd6\xa3Z4\xa4*U\xef\xfe\x8d\xe2Yw\xe5J\xffhB\x83\xed-\xbd\xd4`\xab\xc3\xd3\x87UQ\xc7\xad\xd9\xaf\x8a\x1e\xe8d\x07\xdb[\x0fu\xd2\x83\xedme\x8ckV\xf4yX\xf2\xc9\xfb\xd9lHX\x8dHym\x9aSyR\x16\x8b\xe7\x05YJ\xb9\xc7\x9b\x15\xea\xec\x0c\x93ZR\xd0\xacR\xa7\xa2<an\xa2\x92\xfc\xb6Y\xf3{\x92\xe5\x94T)\xfce:\xa9\x89\xaaf%Lv+\x05aj\x81@\x1c\x851=\xbfa\xe0\x17I\xf6\xb5\x1f\x9c\x91IM\xeb\xb5V\xe7\xf7\x85k\x17\nO\xec\x00\xec\xf1\xc4V]`\xcf\xb5\xa9\xa3s!\x93\xc2\x1f\xa3-G\x05\xf59&\xc0\xe9\x9c\x15f\xbb\xb4\xb5\xa3\x80xZ\x7f[ \xb8\xf9\xa7\x05\\!P\x8a\xc9E\x0d\\\xb65K\x96\xcb$^\xfa\xd9{9\x84KD\xd1x\x8b\xbd\x88\xc2\xf8\xfd\x11\n\x9e'`\x9d\x9cF~\xfc\xde\x926\xa0\xb9\xd63dq\xa4\x0d\xd1\xb3X\xe7U\xcak\xa6\xf8\xea\xe2yFMWWx\xb7BX\xed8\xaa9cJ\xa5b\x02\xbb&]\x8a\xb1~u\xa2;\x0c\x10\xe51\xaeB\x9bv3\xafDe\xb9\x1f\x87E\xf83\xc9\x1c\xdb\xd7T\x9e)\xe0P<B;[\xa7\xdd\x14\xf1\xc1sL\xbe\xc9\x9c\x8b\x98g\xf0M3\x04\x06~|F\xb2\xa4\xcc\xa3\xabCR<\x8fc\x92}{\xf4\xf2\x85)}\xc9\xc9\xc9\xa2XFz\x03U\xf5<k\xda\xaa%\x1d\x0c]\xc1\xa7\x91\xa06\xaa\xeb4\xd2\xce\x83\xa5:\x13\x94\xd3\xa9\xa1M}\xbf2\xee\xf1\xf5\x93\xc3\xad\xea&\xfe!\xf3\xd3o\xfcY\x91dW\x8e=c\xfd\xfc\xbe\x88\xaa\x8b\x93|;\xb6\x1f(#\x9a\xf8*l\x15\nd\xa3B*\xfe\xa7E*\xed\xd5\x0f\x0d\xab?\x04\x03\xbc\xce\x14\xa4o\xdcUB\x11\x17\xa6\xd6\xeb,\xb4T\xb1\x1aX\x08n\x9d\x9d\xac/b?\x18lc\x11q\xf7\xd8\xc3\xa2\xf4C\xb2K\xee\xd6@l\xeb%1\xbd\xf7uz=\xb48\xd5(\xe1\xe6\x08\x01\xd6\xb7E\x91\xd2&\xda!\xb6\x04\nY\x14E\xca\xcc;xpn\x96\x8a\x18\xf6\xeb\x938\xc4\xa2\x02\xa5*\x864\x80\xaa\x8d\xc13\xaf\xf8F^9ef\xc2z\xd9\x94\x16\xf5\xcd\x04|\x8aM\xac5\xfbQ\x13F\x1d\x98h\xa7\x8d\x07]:\x89\xf8\xf3sC\x06\x0b\x8a\x0c\x94\xbe5\x0b\x9d\no\xa1S\xe1-t*\xbc\x85N\x85\xb7X-\xc5\xde\xc2n\xe7w\xa40k/\x0cq\x8fR\xfcl\xdez\x1bT\x9f\x8d\xd9w\x94\x1fQ\xe1\xb7\xc5\xa7\xc5o\xc2\xcex\x90RP)<\x1e\xac\xf5\x13\x02\xfb\xbbp\xd41%\x83WGkA\xc8\xd7&7\x10\xc2\xc4\x98\xc9I\xd5\xd2>6\xa6<%3\x1e\xb6\xd0\x9ba?\x98\x90\xeb\xeb\xab\xe7\x01\x89\x8b\xb0\xc0\xa06b\x08\x7f&W\xa8*\xc2\xbe;\x8db`mQ\xf5i\x12\xe7\xe5\x92\xe4?0\x01\xd1JB\xfb\xdea\x17\x8aa\x8b\x0eQX\xe0\xd8Ek\xd0\x9a\xe12_\xcf#\xfft\xd0\x00\x05\n\x97\xd2\xf2\xb1\xbc\x0f\xb0\x8f\xd1\xe0z-%\xea\x0f\xbf\x0f\xf3\x10\x85'k\x9bj*\x8d>\x14FN\xfd\xd9\xfb\xba\xb2:\x1c\x14\xa2QK\xd4^uP\xdd^\x0cCR\xcd\xc00(FO\xab\xd7\xde\xec\xc2\xa5\x98\xbbzT\xca5U\xf6\xa8A\x1f\xf0\xb9j9\xf4\xbb04z\x04\xd3n%\xf1Qv\x95\x94\x05:\x07\xeb+'\xbc2\xf3g\xee\xa9\x1cr\xbd\x99X{}M\x96\xe5\xd2\x8f\xa2\xe4\xe2(\xbbz^\xbc.\x0d\x96P,\x87e\xc1\xeb\x1d\xc4\xfei\xa4\"\xd5\xc4\x83\xf1\x1f\xbc\xb9A\x0b\x12\xad\x10\x0e#\xa8\xebb\x1ag}\xcd\x05\xd6\x1c\x18L\xf6\xbc\xaa\xdc\x1b\x1fv\xc9\xb6`H(\xd9\xb3\xaa\xea\x80!\\UZ\xce\x97\xa8\xc5\xd4\xd7<\xad\x06\xfb\xc6\xa8\x13=a\xdd\x0b\xad\x8e\xbe\xe2\x05\x86e\xaeQf\x8f\xc3\xd8\x01\xab. \xa5?\xd2\xc8%\xfb\x80\x07\x85;BZZ_\xfb\x90\xd5~Z\xa1\xca\x1e\x0f\xb0\xa7\xac\xfe\xdb\xdaM\xbc\xef\x8b\xf7\xb0\x07%\xa5m\x0c>\x7fO(Q\xe5\x859e\xbe\xf4\xb5^\xc3\x1e\x9c0\x16ArS7\xcd\xee\x0d\xec\xc1\xa9\x97G\xe1\x8cP\x9c\xb51rx\x82\xef\xc6\xf7F\xe5\xdf\x8dS\xad\x1a\xb4oZ\xcd\xcd\xc7\xe8\xacO\x05w'}\x0eP\xf5\xdd\xb8\x9f\xd5\x838T>~\x155\xd3\xcc\x1c\xac\xfdX# \x02\xc5l\xc3\x82,\xc1\x82u\x9e}\x8b\xd9\x93v\xae^\n\xf7\x96\x8f\xaa\x1b]2S\xc3\xca\xac\xa0\x13\x1c\xa6\x04\xd5\xf6\xc4#2W>F\xf5ZQv\x86\x1f\xba\x9a\x9er\x0c\xd9x?\xd1~J\x83\xf9h\xdb\xd9\"\xb9\xfe17\xb3F\xedR\xcce\x17\xcd\x9bu-\x1c\x98\x06J\x18\x0d\xa2\x14\x8b\x88\xa7A3\x193=6H1]r 9K\xb3\xf1\xb4\xdd\x02*\xe5\xf5\xaf\x1b\x1e\x10r=\xf4fI\x19\x17\xf6\xad\xceD\x0b\x1c#2\xa0cmg\"7\xcf\xb0\xee$\xc4\xb8zO\x14\xe7W\xa0\xa6\xaf\x96\x0d\xa8\xb3\x18<\xe2Y\x12\xc1,\x89N\xd8\x85\x03\x8d\xdd\x8aN\xd0IK7\x13\xeb\x15\xbap}\x8aq\xc8nO\xda\xe1<\x93}\xa3\x1c\xe3\xb8\x1a\x99\x94\x06\x99P\x82\x8c:%\x9f \xee7\x9fV]\xbd\xf4S/\xcc_\xfa)\xf3\x17R\xd8\x1f\xd2\xe7\xda\x0e\xa5\x8e\x07&o\xd2\xcd\xe7\xa2\xcf\x8fh\x1e\x1bc\x95@G\xcaj\x88ZB\x1fA\xc1O\xe0\x94\xd1\x80}\xd9\x84j\xb6g\x02\x06\xfe\x80>\x99\x7f\x81W\xe6\x04z\xe2T\xa4\xac\xd6\xa2F]?\x84\xc8\x82\xf8\xb5|\xc9\xbe\xc2\xf4%\xc6v\x98\xdb\x94\xec\x94h\xae\xdf\xcc\x04\xd4\xe7\xa3#\x7f!\xa4H\xf2\x97-QV\xff\xbaK\xb2t\x03\x07%jsNo\x02\xe7}\x8b)\xb8\xb7 \xf4\x04\xd7\xaeBEN\xe0\xbd\xb6\xa2.^h#;\x1c\x06\xd8\xbb\x0b,\x7f\x13\xe31m\xc7i}\xdd\xbfJ m\x90o0\x01\xcbj\xdc\x9bm\xb2\xe6\x8e\xee\xad\x8a\"\xab\xef.\xb8\xcbY\x1e\x1a\x07\":\x9f\xf0\xb0\xe2\x98Z\xb2K\xb8\x1a\x0e\x8a\x8c!\x14,c\x1f\xc1y]-\xf5\x13\xdb\xa1\xa4\xe2\xeb:t\xab\x9e9\xb8\x93\x95\xff\x87d/oJ\x0f\xd7\xe0}\x82w=\xa3\xda_\xd7r\x01\x8c7\x80; \xfd\xa9\xbd\x81\xb9$\x03#%\x1a \x83\xa6\x87\xb1\xae\xda\xa5iN\\\xe6y&\xe2\xfb>\xade4\xdc\xff\xe8\xccmk\x8a\xafL + y\xf2 \xf05\x10\xe9\x00\x1c\xef=\xb9\xc2\x1b\xdfH\xa8\xf3\x8b\xa1_\xd8/\x9e\xa5\x97\x93\xe2mg\x06\x03r\x1c\x8bh\xf8fd\x0dm\xdcn\xacmr\x0f\x1e\xc6\xfeI\xd1<\xf9\xd2m\xa0\x06Zw\xcaM@r\x93\x83t\x17\xb8\xf1\xa9\xd1,\xb7Blo\xf4+\xd2\x08\xfc\xf8zP\xbd\xef[\xe0\\\xbd3\x01s\x9d\xf8\xa1/\xf9\xaf|i\xaf\x06\xc1\x03\xdc\xdc\xb5\xa6T\xedG\xa85W\x9be?\x84\x03W0\xcck\xea\xdb\x8e)\x0f\x19C\xe3\n3D\x9d\x12\x0f'\xb5\xe5sY\x0dr\xc0\xa9\x84\xd5h)\xf1\xf0\xc3\x9c\xd0^\x9f\xc7L5\xd4\xfba_\xa4\x90\xc1\x88g\x95 ~Fh\xa7F\x97\xab_\x03Z|t\x03\x8bo\x95\xa5\xf7\xb9\xe8M\x1dD\xb6%\xa9\xe9\xcb\xb5\xd4\x12\x01\xf5Uoi\xb8\xba\xda\xcd\x86\xbe\xac\xab\x92\x95\x94\xdb\x13\x98\xd6!SZ\xf1h\xe9\xaa\x06\x06\x1b\xaf\xf3\xcf\xd0\xa8\xc6e\xa6\x0b\x1d\x03\x16\xcc)\x95\xc1\x1e$H\xecdM\xd3\x91\xccl:\xd2\xf4\x93k\x81\xac_[\xe8\x89W\xab\x98)\x0e4\x94SZ\x83\x85\x83\x84\x9a\xbaZ\\?\xadod\xe9G\xea$\xedyq\x15\x11\x9de)%\xfb\xcf\xb2\xa4\x8c\x83\xa7I\x84\x19\xdc\xff\x7f\x0f\x1e\x9e\xce7\xb7\xbb\xf7t\xeb\xe4\x19\xc6\x92fj\x19\x9dL\"\x9c3\x1bx\xab\xdd\xa8E\x17\xdf\x92O\xfegj\x0d\xd6\x03E\xd9\x10(\xd2\xd8K5\x0dj?\xcf\xe9\x07\xdax\x16\x81\xce\x18.\xd0\x19\xc3\x05:c\xb8@g\x0c\x17\xacf\x0c\x17\xa8\x8d\xe1\x82\xda\x18\xae\xebd\x93r\x0f\x81-\xa5\xb1[\xf0\xe9\x8d\xdd\xcc)\xfe$c7\x15\xed'\x19\xbd(L\xde:\x9e\xc2\x83M\xdbn\x95Q\xf8\xf31\xbf\xe93\xae)jO\xe0\x1es\x11JPO-t\xde\xd98M.\xadc\x03}O!L\xeb%\xcc\xd7i\x8d\xf9M\x88\xe0\xc2\"\xeeX\x9a\x91\x99_\x08i\x80\x1dsI\x8e\\\xc0.\xd7>U\xda0\x86\x8e\xcd\xa7n}\xe3\xc2\xcf\xe20>3\x89\xffE\xdd\x89uW|e\xec\xfd\x94\x84\xb1m\x81^\xe8\x91\xe8{J\xbd\x97t\x16\x1d\xfa\xf3\x97kW\x86\x01\xc3Pd\xb9\xb9\xc9\xb6\x88\xa4\x94#5d\x0b#\x97\xa9\x1f\x07\xcfX\xbd\xbaoOzO\xcf\x9b:\x01\xd4\xcd\x1c!\xfb\x1c \x19_\xa6\xbf\xb3\x16\x9f\xe75\xf4\xef\x0e\x1a\x9f\xad\x83\x86\xc15C\xaf\xa8\x890\x91c\x97\x89\x02~\x93\x87\xde<\xc9\x96\xbe\xa2_\xee\x92\xc1\x03\x9a\xab\xfd1\x84K\xd7\xda\xde\x1eD\x18\xd9\xfb4\x8c\xfd\xec\x8a\xbd\xc1\xecB\xd6\xa9\x9f\x93\xddm\xf1F\xef\xa9\xc1@_\xef\xd2\xa0\xf4\xe4\xe0\x01\x12\xe7\xa12\xdd\x90\x84\xeaJ\x1eS\n\xf6\xc1\n\xe3s?\n\x03\x8b\xc9\xe0\xbbm\x86E\xd4\xfc\xa2\xd4\xd4\\E$\x9a\xdbU\xcaK:\xda|\xba\xa9\x08\xd2\xaf\x90\x07\x04a\xce\xd9\xdc\xc2\x0b\xf3g\xfc\xaf\xe6a\xf8\xcch{\xb7\xca\xbd\xdfL\xef\x0duR~\xe1\xe8\x9e+\xde\xd5u3\x92\xa7I\x9c\x13I\xea\x01R\xa6\\\xcd\xebJ\xde\xc3\xdbnEN\xd2\xb9\xcb\xc6\xf6}\x05\xd6\xd3\"\xb7P\x8b\xdc\x8c\x84R\x15\xf0\xacP\x06<\x8b\xab\x80g\x94\x88\xccX\xc0\xb3\x0c\xbe\x82\xe2\x11d\xeb\xeb\x0e\xc4\xd3\xac\x19\xf0,\xd3\x07<\xab\x15\xf0&\x92\xadJzwx\x95\x17di;M\xdb\\\xfc\xeb\xbb\x9cN\xc7HW1Z\x96\xd9e:v\xc6r\xbf2j\x96\xad8?\xde\x0d^L<\xad\xdb\xf6\x0f\xdd_\x8a\x8d\x0c\xcd\xd1J\x854\xb6\x80}\xc0\xd4\x18\xcd\x06\xacc`\x81t\x9b/\x95x\x0e)\xd5\xe7\xb1\x1d\xf3\xec\x05-XW\xc0]kl\n\x03\x88V\xd3Sag\xfa\xcc/|\x8b}\xe22\x85\x03\xcbZr\x8c}\xb78YWw\x18\xee\xaa\xffn\xe3\xa6\x81\xa8N\xeb\xdd\x8d\xa4\xd3\xba~(j\x84\xd2?\x14q\x1eT\xae\xcc\x98\xb8\xa1\xbe\xf0\x84\x0f\xb3\xd6\xc9:\x91P\x9b\x9are~\x00Ul*\xc59\xc6\x80\xa2\xfb0\x0d\x11|;s\xc2\x98\xcf.\xc4\x02\x94\xf5\x15\x9a\xe7\x0bH\x94\x13\x15S\x8b\xbc\x96\xa6\x9d\xa2\xdb\x8ei\x1b\xb3a{\x93\x0f?\xc8\x9f\xc9\xa6\xc4C6\xc5\xbc#\x03\xb7#6n\xc7\n{\x11W\xaa\xb4\xcc{\x9dq\x17\xf5\xd4\xb1\x1d\xe5\xd6t.\xed!\xfb\xe3Br\xbb\x9d {w\xc6\xef\xdb\x99\x84\xc5\xddeq>\xf7k\x84\xe2\x9b6\x8a%#\x17\xa8G_M\xb5e\x08Mn\x9d\x82\xa8\xa7\x89G\x9de\xa3\xb4}\xa2\xbcrl\xdah\xac\xd9\xb6\x81\xb1\xbai\xeb\xa5\x97\x914\xf2g\xc4\x8e\xc9\x05\xbc%g\x07\x97\xa9m\xfdb\xc1:`D\xc6k\xcb\x05\xeb\xccr:*9\n\x11\xa5\x04\x1f\xf8\xf3\xf7\xa5+\x95\xca\x8e\xd2\x8e\xedqG\n\x1a\xf2\x92Q'4\x0fSX\x8c\xb7v\x95T]\xf9;\xb2\xac\x14\xfb\xfer\xed\xb6\xa5\x82\x99\x0b\xbe\xf7\xee\xcd\xb3'G\x07'\x87\x07/\x0e\x9e\x1e\x1d<;9<x\xfb\xfd\xc1\xdb\x1e\xe3\xce\x8a\x02\xf2R\xff*J|\x85i\"\x8b\x88\xd9$\x82\xdee\n\xfb\xc8\xa4r\xde\xc7\xc3\xa7ft\x13\x8a\x16\x93[\x92ZLG\x1c6\xdcd\xaf\x1d\xe3\xb2\xbc=\xf8\xcb\xbb\x83\xc3\xa3\x93\xaf_?\xfb\xdb\xc9\xf7O^\xbc;\xb8\xab\x95\xd1\xc4\x15\xe7\x0e\xc2\x06\x9f0\xbf\x12BT#N\\\x18+$\x04\xf4\x94\xfa\xd3M\x85\\\x13\x13\x04NG\xe6\x85j\x93K\xa5\x0by\x93p\xbc\xc9J>}\xfd\xea\xe8\xe0\xd5\xd1\xc9\xd1\xdf\xde\xfc\xfbZ\xaa\x88\xe0\xd5\x16\xf5\xf0\xcd\xebW\x87\x07\xbf\xcf\xaa\xeadR\xaa\x98\xac=\xeb\x91\xb8\x10\xeaH\xf1U\x16\x84a\xaf\x93\xef\x9f\xbc}\xfe\xe4\xeb\x17\x07w{du$\xc4 \x0c\x16{\xef\x89\xc2\xa8\xc5\x17K\xad\x069 \xef)\xef\xfe\xcc\x85\xd0H\x11b\x05\xe3V\x94.\xf8\xcd\xf5\xcdnq%\xd72\x8fQ[\xbd\x97\xf0\xd7;\x0f\xa4\xfb6\xa1\xcb\x82y\xf4\x92\xec\xc0\x9f-l\xbdh\x01\xe9>\xef^\x18\x07\xe4\xd2\xfb)gr?-\xd5Gw4\xb1U1\"\x88G.\xd3$+\xf2)#\x80R?\x9f\xf9\xd1S?'\xdf\x84\x11\xa1\xdb\xe8\xd8\x85s\x8c\x1b#.\xd1}\xe9w\xdbAH\xba~\x07-\\loo\xefR\xb2H\x8c\x03\xd7eg\xb43\xe8k\xc3\xb2\x0b\x1b\x8d\xad\xb1L\xd0\xd4\x11\xbd\xecU\x0c5*Z#\x93\xa6W P\xdfd\xc92\xcc\x91r\x89\xed\xed\x9d\xfb\x8e\x0b\x87H\x91\xd7\xa65^^\xf8Y\x91\xff\x102\x0dIlo?\xd8\x1d4\xc3\xd8~8FM\xef\xc3\x07\x9dU\xda\xde\x19\xd6F\x1fpno?TB\xe7\xf6\x8e\xca\xc0%\xb6\xef\xb7_3b\xef\xfeHZ\xe9\xe6H\xc7[\xf7\x1d\x1b\x05n.X\xf8\xaf\xd5\x83\x87P\xbbt\x82\xd2;\x9b\x08'\xb3\x13\xda\xff\xa6\xf8\xe3=ES\xf5~\x18\x92x4T\xa6'\n!|\x15\xac\xe0Da\xd7\x18W\x85\xe1\xfa\xba\x12{\xac\x11\xdcTxL\x19\x94J\x9cm\xd7s\x10\xa2\xb9\xc4\x1e\xa1MzB\x0f\x9bE\x0f;\x8b\xd3\xc6\x8d\x0cYZ\xd9\xfa\x1d\x992\x99C\xec\xe2O\x89;\xbav\xab\xcah]\xf3D\x08*Q\xd7\xc0W:\xb3Y\x17\x0e\xfe\xac\xabg\xb6E\xe2\"\x0b\x890\x9co\xc3\x8f\xbc~\xf2F\xca\x0b\xac\x8e\xd0\xd8\xfb\xa5j\xaf\xf9*\xaaP\x17\x8b\xb9\xda\xdd\x93 \x89)\xdb\xb2f\xa6\xfdoy.F;\xeas\xf1\xb0\x1d\x95\x91\x1d\x8b\x87m\xc1\xb6\x8f\x9c\xc6#\xe9,\xeflb4\xf3\xd8\x1e=tl+,H\xe6\x17\x98CV\x0f\xbb|q(,\xd5\xb3k\xa1\x82>y\x1b\xa9\x11\x11\xc6\xef\xf6U:\x9e\x98\\\x16\x142Gn;u\x00\xed.\xc4\xb6)+\x0b\xcf\xaba\xaf\xb6\xdc\x12\xc2Q\xdf\x86[\xbb\xeau\xdd\xd5\xe2\x95\xedm\x07\xf6\x95\x9coHr\xe81@N\xecv\xa2\xa1Jk\x10\xbb\xb8y!\xaa\x07\x90\xda\xadT\x079S\x16\x94\xf0\x18\xf2G\x0ed\xde\xdc&\\\x182\xcd\xd7\xd7\x8f](\xa6q[\x08!\xa8\x8c\x9b.\xd8\xfd\x91\x9a|\x18\xa9!q{g[\xb3duw\x1a8\xab)\x0e\x96wFGQ\x94l%\xf4q-#$9\x84\xcaES U\xa3\x14\x1c#\x05iBI\x1cv\xa9\xc2\xda\x9e\xde\xb5\x117\xed\x11D\xf0\x18f\x8f\xf46\xc0\xb45\x9bne>\x9d\xad\xaf\x1f;\xb4\xcd\xd2\xa9\xcdU:\x1f2\xe1S\x7f\x970[_\xef\xe9\x16\xaf\x87\x19\x841\xe4Ho\xe4\xd3\xd91\x0b+\xea\xd4r\x0f\xac\xf2\xe1\x03j\xa2\xaak\xe5\xcb/a\xa3\x19\xbbhE\x1c'a\xb3]\xd5\xa9{\xe9\x17\x0bo\xe9_v\xc1\x88\x95\x84q\x1f \xe9\x11\xba\xcd\xb0\x0dq\x1c\xf8\n6a\x9f\x9e8X\xa7C\xdc\xa4\x97 C)7F\"\xea\xf9P\xac\xbds'\xc0\xaf\x83\xfc\x10\x83\xb8SHbD\x9eM k\x0d|\xb3#\xa2\xf3k\x8dPp\xc8\x0e\x88B+\xc1\xc6\x94\xe3\xda}\xf8\x009%/\"\x14\x87\xf1X\xb4\x9c\x9a\x9d\x80\x8dr8o\xb6\xf0\xb3\xa7I@\x9e\x14v\x8ek\xbe\xb33~\xb8K\xbf\x0d\xe11\xec\xecn\x8d\x1e\xb2\x86\xd6a\x84\xe0\x87\xb6\x04\xb6\xdf\xf9\x98V`\x0d\xecn\x8d\xb1s\x9f6p\x7fk{\x8b\xf7\xcf\xeacGt'a\xc2\xdf2/\xbd\xdc\xc5N\xc6\xb4\xcc\x87\x0d\xde\xcc:\x1d\xe7\x06\x1f\xd4W_\xc1h\xd3\x81u\xd8\xdd\xd9\xd9\xda\xbd\x1b\x08\xef\xdc\x1f\x1c vu\xd8\x90\x02\x8b\x83\x12e~\xa5\x0d\x8a*\xdc\xbd7\x90\x19\x13\x1f\xb6\xc4\xf0\xc5\"K.\x802\xef\x98%\x1dO\x80\x05a\x0eqR\x00R\x00\xa7\x11Y\xd3X~dv\xc1\xa2\xf0\x11g\xc5sB/\x81\x07\xc88\x8c\xb7\xb7\xf1\xdf\xed\xdd\x87\xec\xdf\xfb[\xec\xdf\x07\xfc\xfd\x83\x9d\x0eg\xb1\xbb\xe9\x08\xaefHg\xbd\x84\xd4\xaejgd\xd2(\x99\xc6\xf6\xe8\xbec[E\xc2N\xd5\x91\x7ff!\xdbi\xfdlQVn\x9d\x82\xfc\xda\x1eX\xd3\x04o{\xf8\xf9\xd8b\x0c\xd7\xfd-\xc7\xe6\x14@\xed\xc9\x00UCV?mU\xb5\x89\xe9j\x90l\xa7\x90i\x1dK\x1ah\x0c\xa94d-\xe4\x85\\\xa3\x1c\xfe\xa6\xc32\xac\xd8\xa3\xcdQ\xbf\x0d\xf5}:I\xb5(\x9f\xae\xe3\x03\x87Y\x1e:.X\xbe\xd2\xfe\x10\x83ik{i\xf7\xd6)l\x99\x088\x9e_\xaf\xc1\xa0\xf9KDK?\x11\xa2\xb8;0)\x0d\xbb4\xc4\xd5\xf8\xa8s\x0c\xd5z0Le#\x9d\xc3*\x02\xb6\xcdTG\x02$\xd8\x86d6\x13U\x89\xf3U\xf5\xa7\xd2\xb0\xe9\x1bE\x1e\xe5\xf5|\xf56\xd7>\xcep\xdb\xf8\xc6z\xea\xc7\xff\xb1\x80Y\x12\x9f\x93\xac\x00\x0e\xe9E\x02i\x16.\xc3\"<'\x8c\xcdZ\x95\x9a\xef;\xf3\xdb\xbbm\xc91\xc3\xc6\xe3\xed-%\xcd:RJ\x15Z\xec\xd3\x03\xc1>\xdd\xff\xef\x99}\xd2\xb0\xa5\xdb\xbb\xea\x95\x1dw\xc48>\xc7\xca\x94 }~p\xf2\xe6\xed\xeb\xa3\xd7\xed\x80\x15e\x9b\xdfo\x16\xb7\xc5\x01\x9d\xf58g\xb9+\x0b\xde\x15E\\\xe1<3D\xc6@+\x0c-5\x84$w\xe1\xa1S\x90\x17\x84y\x1a\xf9W\xf4v\x88\x93\x18\xf3E\xdb\xe3\x9d\x11\x9a\xf5\x938x\xba\x08\xa3\x00Y\xb7\xc2\xcb3\xcacX?\xf9\xe7>\xf3\xe9\x9dXU\x16J\xee\xfb\xf7C\x18\x07\xc9\x85\x17$3\x14\xa18^\x92\x92\xd8F\x18\xb9\xc8\xc2\x82\xd8\xd6W\xec\xd3\xc7\xa2\x8a\xf7\xcd\x1eC\xd1_\xfdx\x8f\x17\xa1j\xd7\x9bEI\x8e\xe9\x0ds<\xc1\xdf<\x82lc\xe3\x91\x03\x01\x89HA \xaf\x01i\x1aN\xb3c\xbdMYn\xb7`H\x8dI\xf9E\xc1,8)\x9dfD\xad\x889\x95tF\\F\x11J\x90)\x15g\x97-x'\x0ecpcrA\xf9\xbef1s\xff\x8aYZ^\x82\xa6g\x98\xd5\xc2qei\xab\x90p%v|+\x9a\x7f\xa46\x1e\xec\x9c\x08\x0e\xf9\xdb\x0f\xf4\x94\x1f\xbd\x98\xff{\x90\x1d\x8cF\x0f\xd4d\xf1\xb8\x8d\xa0\xb9\xf0`w\xd7\xb1\xd7\xda\x02\x075\xca\xb8\xc1\xfd\xce\x97\xa8\xe4\x84t\x17\x17\xe0\"u_Sfiz\xacX\xf3\x98\xf2\xd5\xa5\xc3\xa4\x04>\x8a\xf31%<^\x9b\x91\x88,\xa4\xf8\xf0\x11\x14BX\xcb\xf7\x03\xbf\xa3\xa8\x01w\x83\xb9\xa8\xfc\xa7\xd0\x8e\xb0\xb5\x0f\x1f\xea\xd6\xd4[\x14\xddt\x8b\x1e>\xd4\xac$\x83N\xdb\xfa\xd9r\xd0\xd5\x82\xd2\x81\xcf\xf3\x83\xb8\\2\xbe\xc1\x96`\x18L\xe6\xd1\x82\xd2=\xac\x93\x83\xd0s\x8d\xe6;y\x1a\x85\x85ma\x8e}\xde!\xb9\xf9 \xed@\x95\xd0ti.\xa7m\xdd\xdc{'\xd3\xe0\xd6\xff]T\xf5\xdf\x92\xa8J\x83\xb2\xb6w\xdb\xef\xc3\x01\x94\x8c__\x94\xd5\xc5e\xbcN\xcfH\xf1FT|=o^\xab\x1aX$\x02\x9d\x01fp\x0e\xf1dMQ\x1b\xad\xa2\xf0)\xa9\x90\xc4y\x91\x95\xb3\"\xc9\xd0\xe4 \xc28/\xfcx\xd6-\xddo\xfe-\xdd\xbe\x93\xe6g\x1c\x0f\xec\x83\xdf6\x00_q\xfdw\xb6nz&9\xfe\xc8V\x17XT\xf7'g\x1f(;P\xb1\x0c\x0f( \xcd\x98\xca-\xc7\x15\xde\xf0[\xfc\x82E\xc6\x80'\x8f\xb5G\x9bc\xc7\xe5>\xb5\x94Z\xc0\x83\x1b\xb5\xb8\x05\xf6\xaa!kp\xd1s6\x17\xba\xb3\xa0\x13m\xe1\xe9\xe1\xe1\xdb2\"/\xc2\\\x11\xec\xe0\xe9\xe1\xe1!%M\x9f\x91Y\xe4\xb3x\xd3\xdd\x80 O\x0f\x0f\xd1\x14\x817\xd1.\x8dB\x12\x17o\xc9\xacP\x97?{\xfd\xd2X\xc8\xe6\xa2->J\xde\x93X=\xf8g~\xe1\x1fe~\x9c\xcfI\xf6\xbc Ku\x1b\xdf\x84\x91f\xe4\xdf\x1e\xbd|\xf1$\x8a\x9e&Q\xc4\"P\xa9\xab\xf4\x95\x7f\x93dK\xee\x85\xa4\xae\xc0\x9c%\xb4U^\x92 \xf4\xd53|\x19. e\x89qs\xbb_\xbe\xf2\x97$x\x95\x04\xe4\xa5\x9f*J\x93@\xb3\xebo\xfc0\x16\xe1O\xd4K\xf3&*\xcfB\xc5|\xd9{\xcdp\x0e\xbf\xff\xd3\x0b\xbc\x8a\xd4m\x1e~\xff\xa7W\xe5\xf2\x94d\xda\xe27\x98%X\x03\x0b\xb4< c\xcd\x80\x0f\xbf\xff\x93 \x90\x0e\xbf\xff\x13\x83\x94$\xd3\x80\xc9!f\\\xfb\xba\x9c\xcf\xb5\x03\xa4\x07\xe5pAH\xa1^\xd5#rY\x1ce\xfe\xec\xfdS\xddQ\xa9jh\x8a\x93rV\xad]Ur\xed\xa2+zb\x07\x945a\x94\xf89|\x05\x0b\xc1s\xc2\xf9\xfa\xba\x8aZ]\xba\x18\xc9~1=W\x18\xbcQ&4\x98\x9e)JN\x91\xacW\x95\x9c\xc0\x1e\x9cR\xa4\x7f\xaa\xba\x90\x80_\xc5'H~\x9e\xd0\xfb\xf7\xc3\x07(\xed\x13\x17f.\xa4\x8e\x0b'\xd3y\xfdn\xee\xc2\x19E~\xd33\xca\x80\xa5.\xa8\xe2\xd2 r]\xd2[=s\xe0d\xba\xc4\xcfC\xfa\xf9\xd2\x85l\xba<\xae\xc5\x9b0\x14a\xf7\n\x804J\xcb\xed\xfbj\xbe\x03\x11w\xe3\xbd_Q\x94:&n\xbc\xbd\xfb\xefv%\xff8v%z\x82\xef\xbec[e\x9c\xcf\x92\x14\xbdU\xda$\\\"\xfc\xf5T\x07\xa6\x123@2\xcd\x8e\x99R`\xe7\x01\x1a\xaff.\xfc\xa2\x97\xf6u\x98\xfaiv<%\xf4\x18\xc9\xf6\xf0\xca\x99\xe8$\xfeF\xd8\xfb\x0c\xed\\\x84\xb1\xa9/(\xa9\xf1v[\xc2\x92W\xc4V\xe35\xa7\xb0\xc6\xaa\xb8%*\x8d\xcf\x9c5\xdf\x16\xd4\xb0p%\xf7\xb7[\xaf\x03\xdez\x1b\x85,8\ni\xd7?\xe7\xef\xdb\xf6\x10K\xd6\xebN\x1b\xb5\x9c\xf1\xf7[\x8e\x97\x93\xd6\xba_\xb1\xb6\x1elvb\xe1\x9dr`m\x8f\xea\x84\xb7\xd6\x1e\xd5\x05\x7f\xdf\x1e\xd5\x01R\x9a\x95\x8c\xbeYx\x89\x85i\x96\xccH\xde\xf2D?\xc4\"\xae\x98k\x16=\x85=\xb0\xf8Gx\xceg\xf6e\xab\xd7\xf7f\x89\xee\x13\xb4\xb0\xdd\x83So\xde,xM\x0f\xc4\x9aY\xda[dW\x1a\x9eW\xe0\xc8C/#y\x12\x9d\x13\xbb\xbdz\xf2\x83\x1e\x1aM\xf6g\x8f\x1ea\xa1\x1e\xccS2C\xfcr<(\x1b\x96x\x88\xfd\xde\x85\xf7z\xd6\xf7\xba\xcb\xd2\x83d\xc7\xf0\x14\xfdQU|\x1c\xdf\x8b\xb7\xe4'F\xd9\x1e\x9c\x93\xb8p\x98\x0fK\xb1 \xb1\xfd\xde\x919\xb4\xa2\xd3\xcd5\xcc\xfcb\xb6\x00\x9cCK\xf9\xd6\x06\xbf7\xbdsF\x15\xb5V\xa8\xbcf\xaf\xa5\xf4\xbb\xe6d*m\xb5\xcd\xe21\xd0a;8\x85\xe6h[\xe0r\xd4\x87\xed@\xe8\xb9\x88w\xa2\x95\x88\xd02\xc4\xb7\xea\x0d8\xe7\xb6\xcb\xc4;\x99\xa9k\\\xe95\xaa\xf2\xd3\xe0.\x89wr\xcex\xcb\x11`\x8c\x9a\x93\x9c\xb1\x97\x9b\x8c\xb5\xac\x05K}p\xc5\x85\x995\x02M`\x1f\n/y\x0f\x13(\xbc\xb9\x1f\xf6\x84@\x87*A\x14?\x1c\xfd\xd5#^\x9d\x02\\\x7fm\x9649H\x96~\x18\xab\x17P<\xfa\x13,?%\xa5?\x124\x1b\x19\xf3\xb5[PP\xf9 \x89)\xfck\x0fF\x8e+\xe2\xff\x94H\x81\xec\xa1I\xb5\x8d\x81*f\x1e\x89\x0b\x92\xd9\\\xa7P\xda\x19\xf2\xe8\x98\xa1\xd8#\x97aas\x06\x7fm\xd3au\xf6\xd0\x1b\x81\xdbX\xefCd\x1f\xd8\x16?w\x1b\xb3\x85\x1f\xc60\xbb\x9aE\xc4B\n\x08Ma\xde\xd8\x14\x82\xf7!d\xda\xd2\x18\xfdK\"Z\x9cc\xc9\x04\"[\x91\x1dP~\x1a\xe7\xb2wYp\xfck>\x9f\x1f\x9fDd\xf7\x84\xdf\xbc6\xe0#\x88k\xd9t\xf8\xc8\x01\xdf\x8e\xa7\xe1\xfaz[9 ?\xf4\x90\xa0\x90\xdc\xad\x8e\xd5\xc8\x05\xd42\xaf\x89}z\xa9\x1b\x93\"z\xe6\xb5\xe9\xf8\xbf\xec\xc5Egl\xf1s\x03\xfd,\x1eD[(\xc4\xe5f\xfbxB\xb5\x13\xa5[\xfc\xbc\xa3\x80\xa9J\xe7\x14\x08(<Q|v2\x0c?<\x85}\xb8\xf4\xc82,(\x1d\xba\xf0\xe3 \"A\x85\xd5\x99O\x0e*\xb7P7\x9f{I\\\xd5\xcaD-\x0c\x15\xdb\x13\xfc\x94\x83qo\xe8\xd3\x8c\xf8y\x12O \xd1\x83\x08\x8e&\xc3\xd1\xd0\xeb2\x89\x08\xf7e\xc0\x186\xd2O\xdbz'\xc6*\xfa\x87L\x9e\x9a\x0e\"\xaa\x03\x8d\xf7\xdfs\xa6/\x18\xc3\x04\x0f8\xf1N|\x89\x03\xc1\x15/<\"\x0c\x9e\n\xef\xbc\x0bP\x8e \xa2\x9e\xf7B\x14\xbf\xc6FLS\xc9!\x9a{s\xe0p>|\xc0C\xe0\xf0\xa3c\xea\xed\xa7\xde\xdeV\x85_54\xca\x80U-\xfa\xb7l7,\x01S\x05\x87\xa9\xaa\x02\xdf.v\x0b\x9b\x92u\x0e\x00'\x01J\xf4L\x0d>\xfa\xc6\x9dz\xd5\xbbv\xc2T\x8er\xaa\xddu)\xbc\x93\x00\xaf\x10\xfcA1\xbd\xcb\xd6\xa0\xf0N.hA\xe1x'\x94\xa2\xa7d\x85wB/\xc81\xfe\xf2\xc5W\xccG\xfdd\xc6\xed\x0d\xe9Eqd\x17(\xc40\x8e\xfc\xed\xb0\x91\xbb\x15o\xaeV\xf5\xac\xc5\xdeI\xa0\x03\x86\xb8\x9e\x14*\xcd\xf9\x9c4\xd7\xaf\xf9\xda\xa5\x9d\xb1\x1b\xb0:X\xf5\xe5\x073\xb4\xec9\xa5\xa7\x19\x89\x87\x00\xc2\"'\xd1\\\x97?\x8f>\xb8\xceo\xd0\xbcj\x7f(\xf1\x04\x12\xaf\xde\x7f\x17\x9e\\L\xc0\x90l\xb1\xaa\x16h\xd3\xb2\x8aGC\x95\x8bg\x18\xc5\"\x0c(\xe9}\xfc\x16/\x98\x11\xde\xcd\xaf\xf8\xef\xbb$\x03^\xb1\xbe\xb2\xde\xc0\xdb\x86\x9b\xdf\xa1wL\x05\xfe1\x03\xff\x11\x85\xef\xd8\x855\xddx\x87\x8d\x93\x8f\xcf<\x91\x01\xfb\xd7\xb3w\xd7\xda\xf9w\xe7\xdd\"2\xea\x1d\x7f\x8dg\xfd\xd0x`\x17<\x82\xe7\xa1\x0b\xe2PX.X'\x0b\xcbq1\xd4\xa9\x0bY\x9d\xc5\xbau*\xd4\xe0Cl\x04\x13\xd6n\x05)\xe2\xcf\x16r1.\xfa\xabf\xfe\xec\xe6\x97\xd5_\xd7.\xbb\xc4\xf5\x93d\xd2>A\xd9\xb1\xbf\xe4\x9b\x97\xbd\xc9e f h?\xfc\xeb\xbcSy!Wf\x84b= \xa7i\xdeco?\x189\xf6\xa1l[\xdb\x1e\x1f\x89\x07\x84\xfa\x17\xac\xdc\x13{)v\xcd\x9cS\xfc=\xec)\xd9T\xa6\x7f\xc6\xb3A\x19\xacf\xad\x9a3G\xba\x97br\xce\xfd \x19C\xefb\xfe\xe7\xa4\xb5&\xb3*\x07U\xb5\xc6\"Y\xcc\x89\xdf.\xcbi\xd9\x11\x9f\xc7\x1a\x05\x93Xp(\xcd}n\x9e#\x04\x97\xbe(v\x92\xc5\"\x13!\x88q\xeaa\x88kG{\xe5\xd41\xb9\x80\xecQ\x17\xba\x04U\xc8n\\\xfa\x86\xdf(\xa8'}\x8b \xd5GNU\x84Z\xe6=v2\xb0D\x86\xe6SoNwy\x88\xb2\x98\xe0\xcdv\x88\xdb\x89?}JA\x93\x0b\x16\xf4m\x82\n\xf5\xc6$\xe7\xf6\xdc\xfb\x13\xac\xc3\xdc\xfb\x01\xff\xff\x0d\xfc\x11\xd6^\xb7\x01\xf2\x8d \x8a\x0e\x1b\x1f3\x13S[\xc6\x15\xdc\xfe}\xec\xd8\xf2+\xa6v\x90L\xe0Y\xc7\x87\x8d.%|\xd3\x9e\x1b]\x9e\xbeM\x16\x04\xd2\x13\x15f\x02I\xf4\xb4\xe9V\xdc\xbe\xc3\x14\x16j@\xeb\xacS=\\\xbb\xa4+\xbc\xf6\xda1\x8e\x1a\xf7\xbbo\xd8|T\x17v)\x0eG\xb5o\x870\x81>\\\xd7\x19\xda\x9a\xfd\x9a\xc9\xeb\xb7\x1fl\x99\xa2\x85\x1ez\xcc\xea\xd9\xc3\x13d\xbf\x97\xc1\xc24-?\x8a\xfa\xa6$\x93\xaa\xea[\x8fa-\x9d\xf1\x10\x8b\x86`\x14\xdf$\xbc\x8a^d\x13\x0e\xe7T\x05\x1e\x9d\x1a\"4\x03o\xd2\x90$\x1f\xb8~m\xa4\xa7\xb1\xce).\xa7\xd7\xc8p9\xeb9\x0f\xb6\x14\xae\xaf\xf7S\x80\xe8!a\xe8\x1f\x90\x98F\xcc\xcbP =\x9b\xeb\xebn--\xa3\x10\x81(r\xf8\x08\x01;\xa6\xa4E.\x88\xf4iy\xcc0\xdf\xc6\x062\x18\x99\x1d\xf7Q\x85Z\xa6\x198\x98KM)\xeb]\xeb\x8f|\xe8\xa1-Ub\x87\xde\xf9\xd0\x8b%\xf3g\xbdg\xf7\xae\x00]\x0f\xc5\xc9\nP\xbc:luw\xbd>v`\x90\xe6i\x93\x08jw a;\x90\xd9\x89i\x07$\x14\x84?o\xa4\"dB\xaf\xf6\xd4\x91\xc7\xb4\x1b\xb6]\x05\x8a\xed\xb9\xaasmo\x0f\x98\x84\x07\xc2\xb8f\x0dk\xa7\x8f\x18\xd6\xc1\x9a@\x18\xcf\x92,\xa3\xb7u\x18\x9f'34K\xd2\xb9\x9a\xdd\xdc\xbe\xb8\xa3\x02\x14z~\xb5;\xf7\xf6}\x95\x9f\xbc\xc2\x86\xbb\xe4f\x01m\xcdc\xce\x9bi\xdb\x02F,\xb0W\xe3\xdd\xac\xe5C\xc2u\x1c\xa6\xdd\x98\xbb\x90\xaa\x08\xa8\xc0\x85\x85\x0b\xe7\xae\xb0\x07Ia\xbf_2\xd4Y\\\xf1\\\xa30Ze\xff|\xc5|Fq E-p\xeb\xd4;E\x13\x96\x0e\xdc(I\xe6\xb3\x9b\xfa!\xa20\xd5>sT\xf3C\x9dJ\x802|a\x9d\xe0<\x82\x00\x1e\xc3\xe9#8\xd5Y\x9a\xa2\x95\xe9\x92\x07\x8c\xbd\xb2}\x9b2#dzz\xecL7\x8f]XLG\x18+\xf0\xca\xc6wN\xed\xa7\xba\xc4\x9f\xb3\xca\x0cu\xd9<\x8ej\x13X\xa6\xf7\xc1da\xdcq\xea\x11\xaca\x97\xe7^L.\x0b\xdbq\xbc \x89\x89\xc6\x1a\xb7\x1alb\x9f\xbbp\xe5\xc2\x82\x07\x82\x82b\xd8\xd0\xae\x1d\xef\xeb\xb7\x07O\xfeL\xc9ezq\xbd=8z\xf7\xf6\x15\xec\xc1l\xb5C\xb6\xd3o%-\xe07\xe90\x90JFW\xe0:\xd8\x87\xc2\xa6\xf7\x14.\x7f\xcc\x97\xbfh_\\\x15\xafk\x8c,I<\xd6\xacB\xe6\x87\xe0'\xe1\xaf\x90\xa1\xd8\xb0rhs\xdb\xfa\xc6?4\x7f\x0d^\xab\xae!QR\x1b\x99Hf\xa0M@7Y\x98\x0c3\x1f\xe1+*\xcd\x11\xaf\x11;cv3L\x8c\x87\x86W\xd3\xe4\x98\x0b\xf5n<G\xa5G\xed\x809\xb2\xe5QO\x8d1=\x92;4\x8b\x14g\x9c4=!\xd5\x8c\xe9U$0\x1e\x9d#e\xec\xa6\xd6?\xfdS5 fw6\xcdl\xe2\x1c\xf7L}\xe8\xf5\xa9B\xd5Y%\xf1`\xa6\xebMp\xcc/B\x06\xc9\x02i)\x00z\xe6\xe7\x046'J\xa4\xc0g\x88\x86\xd96\x8bk\xca\xd4\x8c\n\x8a\x02\xdb\x19\x0dh\xa7\x98n\x1e\xcbm\xb9\x80o4-\x8e\x07\xb6H[\x19)\xda\xe5\xef5\xado\xad\xd4:\xfd\xffX\xdb\x07/\xd5\xf4\xb4}\x83\x9e\xe8\xff\xb7z\xfa\xe3u4\xf8D\xeaB\xc4N\xbf\x95WZ\xc76*1X\x17\xd1C\x98y/\xcb\x02\xa9\xb1\xd7\xa7,T\x1d2\x0b\xde\x0f\xe4\xf4\xcfa\xd1.\xeb\x12K\x99\xda<\xa8\xc4\"\xa5yP\xde6\x0fB\xa7#\xdb\xef\xbbU\x94\x92$q\xd3DC|@\xb3\x8e\xab6\x88{9g\xe8\x11]\xe4\x98TNh0Q\x83\xfe\x08\xc8#\x1d]\xc5\x94\xc4\xf3\xd8E\xb9\x16\xc1\xbb\xfc&\n\x96\xc4\xee\x91\xa7whs\xf9a\x97\x1aA\xbd/\xde\x9a\x92\xa45S\xb7\xdby\xdb}\xd3h\x85/\x083\x99h\xc2s\x97R\xcb\x1d\xe4\xe1\x8c{\xe2\xe3Z\x1d\x85\xb3\xf7vdl\x10C/#'\x122\xe8\x8c\xfd\xf3\xf0\xcc/\x84n\xb9\xfa\xd3\xa3LJ\xe0GI\xac\x90\xfa\xd3\x06PXT\nfM\xb7\xa0\x14Xf<\x942\xe3\xf34j\xac\xde)\x8ag\xc6\xd8\xc4h\xb0.\x82\xcdyP\xfbI\xa5\xeaQ4\xafZI\xf5\xe9\x983!\x84\xb2\x8b\x14\xf6\xa0\xf28f.\xbeG\xe4\xb2x\x95\x04\xc4\xb6T:>&:\x8d\x1c/a\x98\xc3NuY\xa1f\x0b?\xf3g\x05\xc9\x9e\xf9\x85?Q\xba\x94q\xfb\x9c\xde\x85H\xbd\xc0/\xd0j\x8aNe\xde\x03\xdfJ$\\\xf5\xa1<l\xe7<\x9e\xbc\xba\xfby<\x01M s\xe6\x91\xcfNR\xdf\x16\x01\x9e;4\x1a\xc1\xf3\x81\xa1!]F\xae\xa1\xb7x\xe2\xd23\xee0\x87\xf6D3\xa7\x15\xef\x8d\xfb\xfdnVj\x1a\xa7\xb2fK(\xff_8\xcc\xe9,\xa1\xb7^B\x89\xf8;\xe1\xf0\xfb\xec\xfb5\xb7^\xd7E[\x90\x9d\x9a(\x04\x0d\xb3\xce\xbe\xf5P\xddGtG\xb2)i\xf9\x063\x83\x144~*\xa6>\x9a\x85'\xde\xdc.\xd0TOA\xf0a\x82\xb4\x12\xb9\xe0\xaeK\n\xac\x1aX\xa5\x90\xe3M\x88\xa7u\x14nLo\x18\x89\xfc\xa4%U\xed\xde\x7f\x82Y\x9b\xde?\x9ef\xc7m,\x1br\x16\xae\xef\xec'M3y`\x13`,\xd4<K\x96v\xd8c8\xc3.\xcf\xb1vM\xd4\x86\xb1\x83\x8d\xed\xeb\x10+kI\xed;\xdb\x127\x0baz\xfb\xbd\x9ah\x90\x16N\x8dq\xd0\xef_\xb1\xa6P\xdd\xbb}\xab\n&7\x01\xf10\xa7\x80\xb8\xbb\x01\xe2Q\\m.\x0el\x85\xee}U\x1b\xc4\x0e\x0d*p%r\x8fW\x83\xf2>\xac\xd3q H\x04\xe3\xaaB:\x1d\x1c\xc5\xd3\x12t\xfc\x01\xb8\xf3C#t\\fg\xde\x1bX\x87\xcc{kP1\xcd\xc3\xd8\x8f\xa2\xab\xa1\xd2w\x9f+\x8d\x93*j0\xe5\x88\xc5\x1f\x1a\xd1{\xacSr\xab\x92\xd9\xb4\xd5\xc7\xb1,\xa7\xd4\x1ab\xf3\xcfJ\xcchj;m\xbd\x8a\x89\xcc\xeal\xb4\xfc\xa8\x8c\xcb(\xebF\xa9\x8b\x8f<.\x86`V\x1b\x96^u\xf9\x11\x81\xb7\xebP\"\x02\xf7l\xb7\xc0\xf1\xd0\x00\x88E6\x18\x08\xf1\"\\\x84\xb9\x01\xdcB\xa5}\xad\xd0J\xc7\x1eACwn\x0b0\xa9\x953\x8e\x1d\xa3\xd2\xa4_M=dAc{\xfb\xc1}\xae\xa5\x7f\xc0\xff}\xd8\x8cj\xc7\xc3co?\xe4Q\xed\x1e\x8a\xf7;\xfc_\xfe\xfdC\xfe\xfdC\xf6\xfd\x0e%G\xf0\xdf\x11\xffw\xcc\xff\xdd\xe2\xffn\xf3\x7fw\xf8\xbf\xbb\xfc\xdf\xfb\xfc\xdf\x07\xfc_\xde\xde\x88\xb77\xe2\xed\x8dx{#\xde\xdeh[\x19e\x8f9\xdb\x0eY\x8b^0\x1aw\xc2x\x87U\x90J\xbc\x92\x9f\xf2\x10\x8f]\x94(WJ\x02\x82\xfe\xc1-\xc8CD\x88\xe6\x04k\xcc\xd0}\x84\xf1V\xaa\xa0\x19Ul\x91\x0e\x82\x94\x1b\xed\x83\xd0:o\x9f+\xb4\xdc8\xe9n\n?_$\xed{\x0c\xbeVL\xc0\xa2\xc2\xed\xc1z\x9d\xc8\xcf\xc78; \xc5'\xa3\xd1h{4\x1a9\"v>C\x18o\xfd\xf8\x8c\xebH\nYG\xe2\x03\xa6\xb3\x84Y\x12\x10H\xe9dtv\x96\\i]\xc0W,\xba%\xecc4 \x0cy\xca\xa2_\xae\x83m\x17\xb0\xb1\xc7\xca\x1dx\xfc\x18\x10~\n\xf8\x0f0\xda\x1co\xc3:\x8b\x99\xd9\x9b1\x17$\xfc\xcb\xb3\x0c[\xb7\xc3a\xbd`\xa6\x8b\x1b4\xda\xdcR`+\x0dPd\xfe\xc5pP`\xb15\xbc\xcc\xbf\xe0LiX\xcbnM\xe0A\x81\xa7d`\x12\xc3c(\x1f9\xc0-\xb9x\xe4\xd6bZ\xae\xaf\x1f;\x18F\xe2+&kiV\xa8\xc1\xa6<6X\xab\xf9w\xb3\xf4\xea\xeb\x83\xe2\xacM\xc7\xb6\x8a,\\Z&\x85y\x9b\x9bV-\xaa`\x059\x15\xb2u\xbb\x01\xf7\xc2\xca\x8e&\xd6\xdf\xa6:\xbc\xd4\xf6\xc3\xf6{\xba}\xd6\xd4\x82u\xf0YD\xce\xaeXS$\xdb\xfa\xff\xd3Z%\xff\xcf\xfac\x9b/\x8a\xea\xaau\xa5/\xda\xb5f\x03\xb8o\x90\x85\x12\x8aT\xb2\xc0\xc7\x1d\x0e#S\x04k\xb2\xe6O\xc9\xb1\xcd\xbc\xf3~\xfb\xf5\xff\xf8\xb7\xff\xc2\xe2\x9d\xf2\x9fX\xa6l\xe3Zs\x8b\xd3\xb5I\x98;s\x89J\xbe9\x86\xe3\xed0\xca\x807\xfe\x97_\x82\x9dLcZ;GWnA\xfbR\x94_\xca\x07\xb9e\xf9\xd2Z\x809\xec\xc1\xcc\xa3\xb0\xda\xc7\xa0\x81\x04\x8er0eT\x05\x8e\x803\xef6\xe1jE\x96]-w\xc1\xc2\xbc\xeccM\x85HTh\x11\x1ej\xc1\x82Z\x0b+\x8fT\xaem\xfdX\xfc\x18\xffx\xfe\xe3\xfc\xc7\x0c\xfe\xed_\xff\xeb\xff\xf5\xeb\x7f\xfd\xd7\xff\xf3\xb7_\x7f\xfd\xed\xd7\xff\xfc\xdb\xaf\xff\xc3o\xbf\xfe\x8f\xbf\xfd\xfa?\xfd\xf6\xeb\x7f\xf9\xed\xd7\xff\xf9\xb7_\xff\x97\xdf~\xfd_\x7f\xfb\xf5\x7f\xfb\xed\xd7\xff\xfd\xb7_\xff\x9f\xdf\xfe\xf3\xff\xfd\xff\xfe\xfa\xeb\x8f\xe5xs\xfc\x00\xff\xff\xf0\xc7rN\xe6sk\xc8\x19\xbb!M9\xde\xde\xc1(n-vF\x8f\x91g\xe2\x8a~\xd2{I\x0b\xd5q\xafm\xf3 $r\xc3 \xea\x02\x8a\x8d:\xe1%(n\xb1,\x8f\xc4\x01\xe6_Q1x\x14\xc8\xe9\xa7[\x8em\x89z\x96\x81\xa6\x11u\xfaVJ\\_\xa1X*\x17\xe4\xf6\x95\xe76V\xdcg\xf0\x18F\xb0/\xa5#\x1e\x1d\xd7\x06\xcc\xcaV2\x96\xf1\xc7\x1c\xd3\xacl\xe9Iy\xee\x1b\x11\xf9\xddN\xd0\xe493 \x18~j\x0d\xbc\x82O\xc7\xcdM\xe1\xd1\x0f\xb3DM \xf7\xdc)a\x03\xeaK\xbbd6\x15\xf9\xef\x02O\xf7\xc7J\xde_\x06\x8d0\x9eEe\xc0\x82]\xe8@C\xd4\xe9\x03\x8d\n\xed\xff\xa7D\x02\x8e\xba\x07\x0fS;\xbd\xc6\x08\x91\xab\x80\xc3\xed\x0ecc\x99\x06\xe3\x8e\x8c\xa4\xc4/&x\x83\xef:+v\xd9\xb7_\xa3\x91\x96\xb6\xb8\xa9\xb4\xb8\x0e\xdcO\x99`\x05x\xa3\xc0E\x91\x89>\xe4\xf1P[\"S\xf48\xe5a\xfaC\xd8\xdb\x83\x11\xdc\x83M\x05Ca=M\xca\xb8\xa8\x1d\xb7br\xe6\x17\xe19is\x12<j_\x08\x8f\xdb&^\xfc\xb1Cx\xfc\xf8\xf1\x1e\x8c\x1c\xee\xe9\xba\xbe\x87&I\xf4\xded\xce\xaf1{\xf5\xa8\xb5Q\x9fP&\xb72\x86\xaesd\xf5\x1d\xc4\xba\xa6\xe9(\xd6\xb5\xfa\x0e\xa3\nO7\xfaP\xed\x01\xcf\xaaVa\xcbUN\xa9[\xc5\x1e\xd5\xa5\x8e\xc8n\x80]3\xdc\xb8\x1a\xbb\xc6\x94]\xa2k'\x0c](v\xcdn\x85 t<\xca\x16eQ\xfcx\xb6H\xb2\x95\x98\x14#Y\xc8w\x03#\xdd[\xb1\xbf$V\xc3L\x03\xeez\xfc\xa7\xe1\xd9J\x83\x1f2v\xd6\xa6\x85\xff}\xcc\xa1Ga\xfc\xfe\xee\x07\xcf[\xfd\xf8\xc3O\xa2\xe0\xeeG\xff)F>\x0f/\xc9\xdd\x0f\xbd(>\xc9\xd8\x93\xb8\x98%\xd1\xc78\xb2\xb4i:|\xd1\xfc\xc7<\xb6\xb4\xaf<\xfc\x99|\xbcY\xf0\xd6?\xe6$\xc2\xc2\x8f\xc2Y\xbe\xd2\x1c\x86L!\xfc\x14\x80\xb42\xf2\x19\xb4\xfa\x88\xf6\x17\x19\x99\x7f\xe4\xa5\xcf\x97~\x14\xad4\xfc!\xa3\x17\xad~\xf4\xc5\xa7\xef\xdf\xaf\x06\xfc\x83\xc6/\x9a\xfd\xf8\x13(O\xef~\xf4\xe5'\xc1\xfey\x99~\x84\xa1\xa7w4\xf4\xd8\x1e\x8d)\xb9\xbc\xf4\x8b\xd9\xc2rad\xae.\x0dfZ\xd5S\x8a?\xd5k\"\x1e\xc1\x19\x10\x93\x921\x91e\x0f(z\xa8\xd2\x99\xc5\xd3B\x9f\x19C2\xafO`_\xd8\xe11/\xaa \x9a\xc0q)o\xecL\x8bc!\xc8\xcf:qA >\xbe\xe1jrQ\xa3\xe5\xc2\xf8\x06\xeb\x99)<4`\xd0\x92\x86}K\xea7\x964\x93\x974\x1b\xb8\xa4\x12?\x91a\\\xb3\x04W\x95\xbd\xe1k\x19:,N\xd3\xdd\xadhN\xfc\xec\xdf\x01\xf4\xee\x963\x8d\xc2B \x9e\x1d\x03K\xfd: \x0dGl\x8fw\xda\xbe& D!\xdd\xd7L\xef\x86J\xb4\xae\x90\xc4\x9a\xa1\xf1\x8a\xe5\x9f\x9e\xce,\x9ew\xe2\x9e}\xea\xfc\xf1\x9eC\x99\xe3\x0f\x1f`\x1bu\x1e\x05\xc9\x8b\xba|\x7f\xe2\xdcsac$\xc2:\xd1zc\xac\xe7\x9f\xca\xb5|lH\xaa\xc4\x1a\xf3\xea:\xde\xbeC\xffkT\x92\xcb\x1d[*\xa3\xdc;-\xaf\x8a\xbd\xfd\xaaP\x05r\xe7\xdc\xf7Y\x12\xa8\xde\xb3\x9d\xfd\xfd{\x1e\xb9$3\xdb\xb2\xe8\x1c\x15P3DO\x02\x92\xad\x9a\xd0]\xaa\xe3\x06@\xd3'gOx!\xf14<\x95%\\;\x95\x8a\xfc\xedZ\"\xa7_\xab\x83\xe8\xe1\xe8\xd4\x9f\x9d3K\xff\xdc\x85\x08\xc3T\xcfY8}\x93\x93z\xc0B}\x86gq\x92\x91\xa7>\xc6\xf6\xb3B\x0b&\xf4\xda\x83uZ\xb6,\xa3\"\x8c\xc2\x18\x8b\x96\x8d\xa22\x0eQ\x11\xbf\x0fV\xd9(\xc8\x8bp\xf6\xfe\x8a\xbe\xbf\xe2\xef\xf5CX\x98}\xe4\xcf\x9b\xbbY\xc0>l\x8f\x1fn?\xdc\xbd?~\xb8\x83\xe6\xfe\x8f\x1f?65\x80\xd1g\xeb\x03O\xbc\x1c\x83\xa3\xbb\x10\xc0:Xg:\xfb\x01\x94\xfea\xd0\x06t\x8e\x90Z`J\xce%o\x876\xf2\x85\xbd\xbf\xf6\xe3\x8f\xb9c\xb9\x10\xa84\xd4\xd5\x83\xfe\xeeK\x06\x8b<\xbe\xe7\x9amG\x18y\x0cE\xcd\xb0\x0e\xf9t\xf3\xb8\x82\xf0\xc7\x80\xf1\xd5\xec\x94\x07?\xe12\xa5\x85+>p\x1c\x17\xd6\xd0\xb6\xbf!\xf1\xc2\xa4!\x9b\xc7\x95F.s\xcd\xe4O\xe3\xc1\xa9\xcf1.\x01\xcc\xe1\xab\xae\xe4{\x03\xc6\x8f`\xbe\xbe\xee\xc8;S\x8b\xd8\xe6h\xe8k\xe3\x8f=\xa5D\xbc\xf1\\;nw\xf0|9\xbe\xaaC0\xa2]\x00s\x14J\xe9\x07l%F\x0e\xcf.!-\x1b\x8b1\x1f\xb9\x90V\xad\xee\xc1\xb9\xe3<r`\xe9E~^<\xc7\xb6Q\xcb\xc1\xfb\xf9\xf2K\xb9\xa8\x1d \\<\xfc0.\x98\xa2\xa6\x0e\x06\xbe6c\x0dP\x94\x899|>|\x00\xbec,\xa3O{\xfb\xe8\xa0\xeb\xc1\xc19\xecC\xca\xcb6]8\xc7O:#hY.3\x8f\x06kS\xa0F!\xd3\xdct\xa4\x15\xb3\x07a\xb6\xe6\xa5\xd9FW\xb0\x0f\xd3c\x98\x08\x1cT g\xdb\xdc\xa0Z\xcc-\xd1\x08\x1a\xa2\xeb\x06d\xd5\x8d\x08\x01\x89\xac\x8ak\xb2*\xeb\x90U\xb1\x8a\xac\xcaV\xa5\x03\xcc\xf2\xfa\xd4\x8e\xed\xedQ[\xec\x9c\x88\x92q\xbb$\x14%;\xed\x12\x9f\x97\x8c\xee?h\x17\x95\xbchgk\xb3]\x94\xf3\xa2\xadNO\x11/\xb9?\xden\x17\xcdz\x03\xf7U)\x98\x88wrB\xf2\x97IPFD\x97C\x14$\x99\xff/\nW\x10\x8c\xbb\xc7r\xe2\xe9B\x99\xd5\xf9\xdex\x0c\x86v\x8a!o\xe1\xe7\xaf/b\x91\xbe\xb5\nC\x17s\x95\x0d3\xb6 \xdd\x84oP\x83\x10&\xa6\xf3\xcb\xa8\xe0\xa1\x99\x9a\xa0A7e\xbb\xb3Ts\xae|q\x1e\xfd\xa1z/\x96\x0eR-\x8b\xdaY;\xcc\xf4<Q\xac4\x1f\xd2\xa4mb\xf1\x87\xee/\xba><\x18Y\xa3.E\x92\xd6Y0\xde\xdd\xd9\xdd\x1c\x05-E\x1b\xbdv\xad-o\xf4\xc0\x1b\xb7J\xe8}j\x9d\xfa\xf1OI\xab\xe0\x8c\x16\x1c\xfa\x85\x0b\xe3\x1dxR\x9e\xc1xs\xf4\x006\xefOv\xc6\x93\xf1.\xfc\xe9\xe5\x91t\x10\x86\xe9\ns\xb1\xf4\xde9\xc9\xf20\x89s\xbc*;/?|\x80_\xae]E\x89\x97_\xf8gg${\x17*\x9d\x97x\xb5 (\x02\xdd\x9e\x85\xc5[r\x1e\xb2\xf2\x85\xb2\xfcY\x98\x15W\x13\x08\xba\x85\xa7e\x18\x05G\xe1\x92\xe4\x85\xbfL'p\xd6\xad\xb2\xf4g\x8b0&\x93v\x0c\x85.\x07Ph\x1d\xaf\x82dy\x12\x06,\xcf\x94\x1ao\x06\xc9\xf2U\x12\x10S\x95<%\xb3\x89\xde\x88*\x8b&J5,/\xccMMG\xfeUR\x16\x13\xb0\xbe\xf6s\xf2\x02\xff\xd0\xb4\x14$\xb3\x83\xcb\xd4\x8f\xd9r[Q\x98\xebj.\xfd\xcbg,\xf5( \x8e\xfc3c\xff\xf30*Hf\xaa\x81\xe6\xa4~\x91d\xefp\x9e\x8b\xa2H\xf3\xc9\xbd{IL)^\x01=^\x98\xdc\xab*j\x86\xc5|\x97r\xfdB\xce\xca\xbcH\x96\xfar\x9eO\xf5uJX\xea\xaa\xe7A7\xa9N\xab.\xcfz\xf4\xac\xd4%\xbb\xaa\xea\x13\x92\xbe\x08\xe3\xf7a|\xa6\xaf\x94\xb1\xd6\x9e\xc7\x05\xc9f$-\x92\xacOc[\x7f\xc9\xb0\x97\xb2\x82f\xba\x19\xc9\xd3$\xce\xc9'\xea._$\x17\xe8\xd3M\x02\xbejj\x073\xa8q\xeb\xcb$ \xd1[\x12\x07$\xc3u\xb3\xc8\xa5\xbfL#\xa2\x83`\xe9+\x04\xe5\xe0\x19I\x8b\xc5\x04\xb4{R\xd7\xcf\x87|@\xa7ppY\x10<#\xb9~\x1fi\xbd\xa7\xc9r\x99\xc4\x83j\x97)\xc5\xc3$8,O\x97a\xc1\xa2M\xe4\x13\x98Zg\x04\xd5.i\xc9\xfeIr\xfc\x97e\xd1\xa5\xbf\x92\x94nU\x8e\xfa\x01\xe2\x07X\x89\xcb8\xad\"\xf3g\xc4\xd20\x9eiFrR\xd0>\"\x81\xb0u51C\x17\xad\xa9\xa9\x10\xc6a\x11\xfa\xd1!\xddX\xfd\xd1\x9a\xc7\x86c\x99,\xd3$\xa6|\xcb\xa4\xed<\x05jp\xa2\xfc?%\xd3\xe7^\xeag99D\xb9Y'M p\x82\x89x\x1c\x057\xf1:OF\xac)\xa5X?\xe5\xdd\xf8b\x8d\x1c\x9b\xdeq\x05\xd2\xde\xb1\xa2\xb7+\xed5\x91_\xe5\x05Y\xaa\xc8\x08\xf1T\xd8+\xf5\xf8\xcfU\x0eW\xb5M\xa9\xc7\xf7V\x03kl\x9b\xda\xb3\xd2\x8eJ\\\x1ff~U\xd4J=\xf6K\xdd\xb7x\xc4\x95\x90z\xec\x97\xb6\xb2f\xaeP\xdf\x98\xc6~X\x1d\xdd\xc5)\x1e\xbc]S\xaf\xcc\"\xfd84;\x01\xa9'C\x7f\x97@V\xc4&\xe8\xfb\xa4\xa2\xa7O)=\xdd\xaa\xdd\xfa\xbbEZ\xdb\xa7HRK<d\xb3\xfa\xf4\x14\xa5\x02\x1c\xee\xaf\xbc\x9c\xbf\xec\x02\xfe \x17\xb7\x94\x02D\xec\xab\x16q~\xe2e\xe4,\xcc\x0b\x92\xd9\xd3\xd4\xe3\xd0\xd7#\xe1\xe0\x97\x86z\xd3(\x82H\xbd\xb9&\xe2\xb2\x8c\"\xe8\xf9\x10\x7f\x19\x81<e3\xec\xeeJ\xe3\xcdu\x9b\xef\xa0\x0bp\x01{p\xe2\x9d\x91\xe2\x10\xcf\xad\n\xb3\x1c\xf4\xb2b \x11\x8f\x17\x1e\x85F\x96\xb91\xc9r\xda\xf4\x8bd\xe6GO\xf1\xa8\xc3~O\x05\x0c\xab\xa1\xc3\x9f\xc0\x19M5\xaaJ\xb9\xfb>\xfdS\x15\x9a\x078`\xb2\xdc#\xa5\xc0\x86\xb0\x073\xc7\x85\x13/'\x05\x1bCn\x97\x8e\x0b\x17\x02;=\xc1\x99\xe7^\x94\xf8\x01 0\x8fI\x9d=\x9d6\xb5\x16\xd3CE\x7fZ \xf2\x84\x16KQ\xb0\xe9BX\x8f\xb2\xc4y3^p\xd3\x85\xa4S\"%|ck$:.\xd3\xc0/\xc8\xbb,\xb2-\x0b\x07\xd6-|\x91\xf8A\x18\x9fQ\xe8/s\xdb\xca\xcb\x19\x06~\xd1\xd4>L\xc9\xcc\xa6\x83\xc8:\x83\xc0d)\xcdo\x82\xe4\"\xa6s\x07\x0c\xea\xc1g\xaa\x1d\"\xd6\xe8\xf4+\xda\xe0\xc5\xe8\x81#6\xc0\x81\x0b/C\xd2\xa7\xde\x14\x17\xac'i\xaa\x93\x97V\x91J\xb0\xfeI\xa8\x0d\xcd\x0f\x1c0s9\xb2\xc6\xdfK\x92] \xf8\xab\x9b\xd0\x8bR\xab\xe1\xe5bXj4\xc9\xa3\x89P\xe0\xc0T8\xbceL\x06\xd0x\x89`\xf7\xe1\x03\xf04\x1e\"k\xc7\xe1\xfb0MI\x00YM\x07\xc6 \xfc\x0bk\xe5_ \xc9\xf07\xfd\xf8_\xe0\xc2\xcf\x11\xed\x87\xf3\x90\x04\xbau\xe2x\xe8\xa2\x8b\x18\xba\xe7\xeb\x92bB\x0e\xf2L\xa6\xc8~\xbf\xcb\"\xa5\xac\x0d\xe5\x98\x8dM\xee\xbc\xa0G\x9b\x9d\xa8\xaf\xaf\xdeq\xb0Y3\xd6\xf8\xf0\xc1\xd8\x82\xe2\xfa\xc6K\xed\xb2;\x1d\nlo\xc92)\x08\xfb^M\x81\xab\xd8\x90\xd4\xeb\xbeU}\xa9`)\xe8\xa7\x9d\xd7M\x1c\xec\xc2\x01fb\xb0\x8d\xf3\xbc\xa4\xd5\\\xb8\xa0\x87\xf1@r\x03\xba\x96<J\x05\xf9\xd3\xa1\xc4\xfc4\xcc'P\x91\xbb\x9a\x8f\xd9E\x06+\x07&\x1c\xb5s\xdb%\x18\x84\xea\xbb\xc3\xd7\xaf\x98\x02\x83\xfdT\x91\x879\xca=\xc3\xf9\xd5\x04h\x1d\xaf\xfa\xbb\xb9D+[ys\x88L\xea\x06\xb9\xec>\x91,\xe9\xa5E\x1c2\xe1\xd8\xde\x19=\xe88\xf0\x8ev\x1c\x8f\x8b\xfd\xde\x93\xab|HC\xf5\xcau\xac\xa0\x99\xb6\xf5\xe1\xae4\xe1\xd8\x1e\xef\xdcwx\xbaM\x03\x95\xd1631\xbb\xed4\xb3s\x03\xacnX\"/C\xb3\xa3J8\x18\xdb;\x9d\xc0\xb0\xb5pq\xd2\x9fb\xb3\xb3\x03\xdc\x83\x1b\x1d\xbe[\xfbp\x7f\xdb\xf1\xe6rL\x94!-\x0e\x9cD{\x9bn7\x89\x9d1\xf3\x07\x1f\xdd\xe7~\xe4c\xeeW>\xbe\xaf\x04\xaf\xc3\xab\xe5i\x12\x0di\xbb\xd7J_\x9d\x8e\xb7\x13\n\x83G\xe9m\xe7\xb2\xe4\x913\xda[\xca\x83\xf4\xee\xb4\x83\xf1\xf2\x19\x8c\xb7\x1d\xef\xcf\x07\x7fk\x96\xb1\xd4\xa1;\xed\xf1\x88\xcc\xa1\xed\x011\x81\xf6\xc3vX\xa1\x94{\x87\xb4\x8d\x13x\xea\xd0\xb6O\xc2\xa2\x82\x94\xe6\xfbs\xfe^\x9d9tg\xdc\xae/2\x87\xb6'\xcc\xb2\x86n\xb5G\xc3R\x86\x8e\xdb\xb5Y\xc6\xd0N\xdc\x87\x0b\xbe\x9a\xed\xb9\x1e\xb0%h\x8f\xf1\x92Wo\xcf\xf5\x90\x8f\xbd]\xff)\x1bL'X\xca{\xb6\xe5\xed\xd7O\x04Bj\xbe~\x0d{\xf0\xb4\x9d$\xf4\x0d\xec\xc1\xfb\xf6\xcb#\xcc\xfb\xd9z\xf9\x12/\x08\x06\xd7\xcd\x92\xe7\xd5\xd5\xd1|\xff\x13\xec\xc1sJ.<\xafQz\xb3\x06\xbd`\x02\xdb:Y\x84A@\xe2\xb6\xca\xff-+-\x927Y\xb8\x0c\x99\xbfM\xb3\xc63\xd4\x03y)g(\x9f\xe7\x07q\xb9d!\x91\x9b\x15_\xd0\x1b\xd2\xb6r\x1c\xfd\x06c\x05\xb3\xabvs\xef\xe4Z\x9dd\xc6\x7fg\xa5I\xba\xa1\xa9\xf0\x0d\xecu\xb4I\xcd\x1a?\xeb\x02\xc2\xbcl\xd6\xfb\x1aW\xf4/\xac\xb1f\xd1\xf7\xb0\x07k_cf\x88\xaf\xa5\x8c/\xad\xbf\xbdy\x18\x07O\x17a\xd4R4|\x0b<\x82odvr\xe6w\xce}X\xdb\x83K\xfb\x0d\xf2fh\xd7\xab&\xd0\x87\xc5\xd8\x82\xba\xe17\xb2\xad\xb0Y*\xc2\x93,\xdf\xd7V\xbav\xbcn\xd0#P\x8aA\xae\x9dv\xddkG\x0eg\xa3\xb1]\x03 !\xbf\xb6\xbfQ\x9b\xd3d\x92\xac\xe2\x9biq\xec\xc2\x9b\xaa=\x1e\x10\x92 \xb7\xf9\x0d\xfd\xf9\x06\x9b\xe9\x04\xc0\xbf\x86 \xbcin\xd9\x0f\xbd|\xbb\xe0\xd9\xdf1\xaf\xf1K\xfbe\x0d\x08&\x1d%fL\xef\xaa'\x9b\xdd\x7f\x07{\xf032\xc5\x0c\xea\x1bP\xeb\x89\x9b\xbb\xb1\x88\x06\x80R4B:\x0b0\xa8\xa5F\x94\xfd\x97\xa6\x19\xfcm`l\x80\xaa\xe1=\xb1I\x7f\xb3\xff^m\xe0\x15\xcb\xe2\x02{p\xc13\xd6\xd1w\xb4$\xb1\xdf\xa1\x91\xc4>\xc6\xd7\xa9\x10\x10f\\\xa5\xfd\xbdby\x85\xa7\xaf\x8e\xa7\x053s\x11\xbf\xf7x\x0e\"\xdc\xb4Xw\x10\xea&)\x17\xb1\x89\x89\x8bT\x90\x0d\x93\xba\xc3\x0f\x1f\x18\xf4\xbdr\xe1\xc0\x1ea6uJ\xa6\xd4\xfd\xd2\xe1\x7f[\xad\x06\xfd\xb6\x86V\xd3b\xfey\x88q\xc8\x95\xd2\xf5\xad\xd6\xbc\xb3\xe0\x1fK\x9e\xe8\xb3\xa0CKXj+\x16e\x97IP\x98\x1fe\xf2\xc8\x81\xbf\xa1\xfe\x1d\xc3\x05&\x18\x06\xa60j\xdf\x8d)7\xfe4\xf88=k\x18\xaf\xe0\xc6\x13\x96\xaaP\xdb\xf3\x1a\xd6\xae\x01\x08A\x83\xe5\xf7\\K(0\x11f\xc1e\xaf\xd9\x05\xa2\xec\xda\x17\x9f\xff\xf9N\xfc\x16%\x0cz\xe8o\xbay\xe4\x18\x0b\xdbv4\xcd)~1d\x8f\x98\xdd\x05]\xff.\\\x0b<U\x0d\xa9\xe0C\xfa;\x0b\xa0\xaf\x17\x1d\xc6\x88!\x0d\x06\x87b\xa1\xe2n\xe3\x9d\xa3B\xf9\xd0\xc6\x89\xe2p\xdb\x0d\x0dvmZ\x8e\x7f\xee\xdd\xf1v\xf4\xa2#\xfb\x84\x85\xb3\xc8x4\x9a\x90G\xa3i\xe6\xf6e\xa3\xa7\xc4\x16K\xf1\x8b;C1\xdb\xab\xea\x17\xda\x19d<\xae\x90\x1en\xda\xd2\x85\xc6\x9f\x7f]y\xfc\x1c\x85\xb1\xf1\x1fa$\xb9\xbf\xc3\x04\xf8\xa4B>)\x11\x89\xa9\x9e\x94\xff\xc8\x11{\x82\x87\xcd\x17\xb3\x8a9\x04\x7f#v+dSz7-\x0c\xe70l\xce\xaa\xae\xf73nmi\xdb/M\x81\x0d1\x08\x14=N2\xa2\xef&\xc4\xb0\x18IZ\x87{\x92\x92\xd0w\xf2b\x9c\xf3\x8cj\xa9\xca\xebw\xb3\xe1\xf5\xbb)\xf9\xe6\xbb\x9d)6\"B*\xaf\x13\xe0Y\xdajl\xc0SZ\xfe\x9d](\xcd\x03\xce\xfe\x9a\xbe:\x16\xf8\xc2\xae\x8f\xbc\xb8'\xbe\xad\x0d\xe9\x10\xa9\xab\xd2\x1d]+\xa5|H\xf2}O\xff\xf7-\xdd\xc3N.@\x18\x14I5\xa7T^\x8bXp\\\xf8\xa1\x99\xeeM\xce8h\x15I\xe5\xe3\xdd'\x04)0C\xdf\xfb?\xc8M?\xc5\xa4t_\xb8\x94E\x81=\xf8\x1bF\x90\xdby\xe8\xe0_\x87\xf8\xff\x7fF\xae|\xbc\xc3\xde\xfd\x89\xf1\xe8\xbb\xec\xaf\xbf\xf2\xfc\xc6k\x94\xdf\xdc\xc6e-\xe9\xfc-\x15\xc3`\xb9\xf4kD0\x0b\xfc\xbaWR\xf5\x83\x1d4$2t\xc4\xbe\xedc\xaa;\x1fS\xdd\xf9,[\xda\xcf\xed\xf5f ;\x91\xe8\x16Y\\V\x1d\xe7\xbfPva\xe1\xe7\xcf\xf9\x01p\xc3\xfci\x12\xcf\xfc\xe20\xcd\x88\x1f \x9b#(0\x17\x9d\x85\\n\xbd\xeb2\xd7\x0c\x97\x07\xe8u\xd1\xde\xd3\x958)W\xec\xcc\x91\x7f\xe6\x96q>KR\xda\\.LC-\xd7\xa2\x17\x01a8\xe2/\xf5!!\xe4\x91\x03\x81\xfd\x97)!\xcd\xb4\xe65\x12\"\x98\x8f*\xf0\xf2\"\xc9\xe8\xe5\x12\xf3V\nR7\x13\xd3f\xce\xed\x82L\xe3V;t\x05\x0f\x1bk\xc7Ox7B]\xbf\xfdG%;{Ao\xb5\xf5=\xb47\xdf\x87\x17\xf4TM\xd8?{\xdd\xe4\xea-\x04\xfc\x9e\\}\xd3\xdf\x15Z\xe0\x7f\x87\x16\xf8\xc6\x9c=>0\x1a\xb8\x83\x9b\xa0\x19<-\x8c\xe1\x85ZCA{z\x81t\xdc\x9e\x9c\xba\xc3H\xc6\x9799$\x05\xaa\xb1\x8d|\xda\xf7\xaa\xf0\xc0\x9d\x96\xc2e\x1a\x91!-5\x93\xcd^w\x8eJk\xa3\x19\xc3\xdb\x8dq\x84A\xd4\x07$+\xedZ%\x17\xb0\x0f\x976\xa6\xa5\xfc\xb3}\xc9h\x1d\xe3f\x07d\x1e\xc6D\xa8\xa8'\xf07CqH\xf2 \xfc\xb9Y\xe1\x8c\x14\x92\x8a\xfb\x19\xc9gY\xc8\xd4\n_\x98*\xbe\xf2\x97\xb4\xb1\x7f6\xd5a\xc7 \x9f\xc0_\x1b\xeb\x88\"\x96\xe6b\xdakx\xc5\x1a\x98|q\x11\xbel\xc7<\x16\x8c\xda4.\xa3\xe8\x18c\x99\xfdd\x0b\xba\xd3\xfa\xe5\x9a\xbf\xe9\xae\xbd\xdf1,m}\xc26\xb7\x851\x1d\x17\xac\xef\x0e_\xbfR\x04\x01\xa9\xb4\x0c+\x10?\x9cd#\xc7\x8c\xa3\x18=R\xc5\xe0\xa1,\x05\xa7\xc9\xea\xeb>ib!\xf1\xf0L\xde\x9c \x1a\x1d\xbb`\x9f\xda\x9d\xa4n\x9c\xc4\xffN\xf6\xbf9\xe3\xd5\xecb\x089.\xfaRJ\x87X\x987\xa44;\x06\xf5\x8eK\xfb-\x1c\x0d\x1a\x00\x0e$t\xect\x1a.\xfc\xc4\xb5*\xcf\xbb\xc2\x87\x06XIB\x84\xe9[$\xc6c{g\xd3\x91\x85\x0b.\xbcm\xd4cI\xb6^\xcf1_\xe8\xcb\x1aq\xb3\xbf\xfdb\xe1\x82E\xff\xb1\xf8=;\xe7j\xa6\x1a\x06\xd66\x07\xa9\x00j\xe9xG\xca)\xa2B\xa9\x93\xd8QBaU\xbd\x94\xe0\x073e\xda\xb7\x98\xc5\xe5\xed\x1a\xce(2HV\xa0\xea\xbb\\\x00O\xf1\x11\xed=\xf4\xe6,/\xcb\xe6#(kH\x8d\x1e9\x90W\x16\xe8\x94`/\xa7\x11\x12\xe5HN2\x10V\x1f`Ia\xb8\xda\x8av\x84\xdb\xc2\x9b\x90\x92]\xdd5\xfd\xe5\xda\x13\xa4D\xb3\x10\x83\x03\xd5\x86\x14\x02\x96/\xc28H.P\xc9\\\xfd\xe2BS\x05F\x84}C\xa1\xcdZ\xa0\xb8]v\x8b\xab\xb5\xa3\x83\xa88\x0c\x8akM\xd9H\xe1\x07l\xf2\x18G\\\xe58\xeb\x95n\xe9\x93\xd5T\x04\x88\xca\xda\xaa7\xf9\xbb\x18\"w\xf4Q4\xd1<\xc06\xcf\xbf\xdc\xd4\x14\x0e\x02\x00\xa6K\xb1-?\xbf\x8ag\xcfWR\xc8\x89OY\xfa\x12\xa4\xa5\x07}\xa7\xd6|\x15\xde\xe9UA^\xb0#0\xe4\\F\xdas\x89\xe9\xa5:%\x19\x96\xb4}:\xf9Ro\xd1\xdb\x13\x83/9p\x0f\xb6aC\xe2\xcd\xaf](\xbc\"\xf9\xfa\xaa <3\x9catm\x9e<bi\xedQZ\xb0\xc9\xb9\xef\x18/\x14\xc4\x04\x98\x02f\x05)%\x8e\xb3\x80uZ\x89\x8d3n\x81\xc2&z{\xfb\x0e\xc70\x9b\xcc\xe7\xcd\xe7|n\x06\x1b\xb0\x0d\x13Ze\xce\xd0\xce\x1c\xbe\x82\x19\xfdg}\x0f\xb6\x1d\x16\xbdwJ\xbc\x19\x0f>\xfd\xa4\xb0\xe7\xce1|\xf5\x15\x8c\x1e\xc0\x87N\x11\xac\xc3\x88\x17\x8f\xd5\xc5cV\xbc\xab.\xddr\xe8JL\xf3\xf5u\xbc\xa60\xb2\xf2.| \xe3\x9d\x9d\xf6\xfb\x07\x9d\xd7\xe3\x9d\x1d\xf8\x12Z\x89\xa4\xc6<\xc5\xb5\xb8:\xd5\x93\xd1\x0c\x96\xce\xe5\xf1c\xd8\xeev\xd2\xc2\xb6\xa3A\xbd\x8c6\x8dK\xb6\xad_\xb1\xc7\x8fa<x\x01\xd47A\xd9\x04\xe0y\x96,o\x06\xc2\xa4r\x96\xc4+\x01\xfe\x03l\xb5\xa4I\x1c\x98a\x03\x92G\xe0\xc3WP\xd2\x7f\xd6\xf7`\xb4\xbb\xf5`\xcb\x11b\xa3\x19\xdef.\xc6\x06\xc6\x12x\x8c\xb1nK\x98\xd4\xef\xdabV\xb6\xd2 \xec\xf3d\xb0S\xda\x0d=?\xbc\xd1l\x8a\x8b3>\xa6\x87wZ\xb0u\xfd\x12v\xb7\xe8\x0bko\xcfB)\xf7\x98\xb7\"\xf6\xcbf\xed\x8cq\x1f\x1e8\xb0\xaemx\xb4)Z\xa6\x80Q\xb5\xcc\xbb\x1aK]Y\xed\xa1\x0b)L7\xdc\xf4\xb5\x82\x7f\x16B\xc7D\x12>Ze\xcc8\x8f@N\x0f\xfb.\x8c\x8b\x07l\x1f\xf7\xe5?&,\x9f\x0b\xdb\x14\xeb\xc9\xd7O\x9f\x1d|\xf3\xa7o\x9f\x7f\xf7\xe7\x17/_\xbd~\xf3\x97\xb7\x87G\xef\xbe\xff\xe1\xaf\x7f\xfbg\xfft\x16\x90\xf9\xd9\"\xfc\xe9}\xb4\x8c\x93\xf4\xefY^\x94\xe7\x17\x97W?o\x8e\xc6[\xdb;\xbb\xf7\x1f<\\\xbfg\xf1h\xdc\x0c\x8f\xf8\x95t\xbe\x84\xaf \x7f\x04\xeb\xeb\xa5\x03\x19K\xc6\xedOK:\xf0\xa9/\x83r\xe9`,c\x95[[\xa4\xc7\xea\x02\xd8\xba\x84U\x01\xff\x01\xb6)\x1a\x13\x8c6E\x9e\\\x16\xf8<f\xc1\xde\x19\xf7\xe0\x01\xbfF\x96e\x8eq\x1b}@\xd7\xf44\"\x90\xcca[%\x1dd\x80.\x82x\xd2\xcdT\xee\xe5\xc6\x88\x87^e1\x1b\xf7\xa0p\\\x98b\xe0>\xc1vn\xc2\x84!f:^9mfw\x1df:\x8c_g\x8cB\xf7S9:z\xc1v \xa6\xff\xac\xef\xc1\x96\x83\x00c\x13\xba\x13\x14\xe5P\xec9\xda\xbd?\x1a\xed>\xd8d>\xf6\xd3\x92\x9e-\x06\xe9\x14\\w\xc6\xbc\x84\xa1\x0fV>>\xa6\xac\xb9\x80|;\xc4\x8cZ\x08\xff\x0f$\x98\x0f\xf1\xcd\xb8\xfdfWz\xb1\xbb\x05_B\xd8\xe6\xa9*\x8a\xa6{\x14\xaa_\xc9\xd4\xda\xb0d\x08\xdaD\x08\xda\x1dS\xd0\xb2NTE[JzC^\xcd\xc2\xcb\x88\x1f(T\x81<(\x8a\x02\x0cCW\x10\xea\x0f\xe0\x8f\x90PZ\x80b\x06\x85`\x94.\xfc\x88\xaek\xe9\xa8k\xa0\xbf>\xaeY\xb7\x8c^\xcb\x1b\xf7\xbb\xef\xd1~\x06\xf6\xb1\xe3\x11LT\x01\x0bR^e\x83\x96+\x9a\x0e\x10QR2a\xde\"w\xb8\xc3\xfe\xfa\x1e\xa4\x0c\xc3\x04\xf0%\x9f\xc3\xc6\x8cM\x02\x02x\xfcx\x0f6f\x94rX\xa7'\x18f\x18\xd8\x14\xeb\x8fwv\xe1\x8f\x10\"\xc2d\x1d\xb8 \xda\x9b\xc1\xc6\x1e<p\x14=\xfa\xcc\xfe\xa0\xddS\xd8\xec)\xabz\xf2\xab\x9e\xfc\xe1=Q$\xc1\xa4?\xa1\x83c\x1d\xc1\x06\xb4\xcc_5\xb9\xfdXHXt\xf3wj\x06a\x1f^\xf9\xaf\xe8\n\xc3=\xd8\xa4\x84WP\xad\xb9Bd\x80\x17\x1eF\x17M\x93\x0b{\x8c\x81\x98!\xa4\x03mzl\\\xab\x0e\x86\xdc4\xce\xfa\x8f\x8d\xa6B\n\x84\x0dC\xd2\xc2\xbb\xc8B\x14\xb9\xaa\x01\xdb\xa5\x8b\xd0\x85m\n\xd8,\xee\x07\x07o\xdar\xa2\x06\xdeY\x05\xde\x91\x06\xbc1z\xbc\x06\xbc)\x8c\x8e\xb7\xaa\xcb[\x9e\xcd\xc6x\x9b6\xd8xu\xff\xbe\xa3\x86u\n\xcb\x19G\xab\xa1z\x18\x0b^\x85.\xdf\x86\xa2\xfc\x1c)(\x1e\xf0W\xc8\x071%\xca=\xfe\x9e}\xbb\xa9\x80\\z'\xe1@\xfd\xd3\xdc\xa6\xc8>\xcc_\xf9\xaf\xb8\x8c\xa7\xc0\xb6\x18x\xec\x83\x8dY\x04D1o\x92!\xef\x19j\xe9}\xd1\xd6<J\x92\x8cE\xa2\x8d\x12\x14\x18\xddc\x05/^\x8dQ+\xfbG\x16\xff\xa3\xb1B\xbe\xe3\xc0W,\xe6\x85\xedol\xd0k\xf9\x8f{@\xeb\xb3x\xc2\xf4\xa4\xcc\xe1\xf1\x1eF\xb1M\xe1\x1e\xe40\x81\xb4\x05H\xf4H\xcc\x1d\nb9\xad:f\xad\xad\xaf\xd3\xd6\xee\xb1\xd6\xaavfbN\xf2$\x1a\xbd`\xa9]`k\x1b\x0cr\xe5\xce\x12\xd6\xda\x1e`*\x03\xac\\\xb4\xaa\xcc\xf5\xdf\xed\xc1\xa6\xe3<\x82\x84v\xf6\xe0\x11\xd2g\xeb\x10\xd4do\x89qY\xf6`Aq\xf5=\xc4\x17\x94x2\xa1 \x9f\x02s\x02\x1f\xe8\xb7\x11\xfd6y\x04\x11\xc38\x9d\xe6\xfd\xbay\xbfj>R5\xcf?\x85\x0dX\x1c\xc3\x87=\x18\x8d\xe9\xc1:o\xddp7b\x8a\xb9\x10\xa4)\x9c\xb6\x0b\x17\xac\xda\xac\xb5#B\xe5\x96S\xb2\xb1\xab4bAj^)\xa3G$\xbcd\xac\x8c+\x81%[\xaa\xb8\x12X\xa2\x8a*A\x0b:_\xe4\xbc\xa0\x13l\x82\x99\x9a\x8e\xef\xb7U\xaf\xcc\xd6\xb4mf9\xc7ff\xad\xb7)o\\\x11\xe6\x82\xd9\x9a\xee\xec\xb6\x03]/\xaaO\x1e\xb6?\xe1\xf6\xa6\xe3v\xdfK1\xb7\xce\xac\x99\xc5\xa9&\xa0\xc3\xd5\xa7\x0f\xe8p:D\x1a&%\x1bm\x82\xca\x89IU_M\x8b(UA\x92t\x9e\xb15J\xe5{\xed\n\xb8\xd6\x88\x0d\xb4y\xdc\xd5\xcb\xab\x82\x7f\xb4\xdc\xc9\x84a\x8d\x8b\x05i\xbb@-p\xcb\xcd^\xc1\xbd\xce\xc5+\xb8\xcd\x9a\xbc\xe3L\xde\xc7\xd0\xf1@\xd6\xd7\xcb\x92\xa4x\x1eS\xd4\xd1S\x11\xe7\xfdF\xccN\xe1\xd4\x0c]M\x99xN\x932\x0e\x0e\xc5\xc45\x95\x8a$\x89N\x93K\x8d\xc34bz4\x00\xa8\\\x18\xe9\x1d\x81\x16\x01\xd5\x1b\xef4\x8c\x03\x1e\xf0\x87\x95\xa1\x82\x99\xdd<{p\xeaVn\xd63\x14r|w\xc8\xf6\x9ayUr\xe1[\xb3\x93\xfe\xb0\x85\xe2\xa9\x18s\xda\xfe\x99\xc7\xf6\xf9hQ\xc6\xef_\x86A\x10\x91\x0b?#\x8e\x1d;\x86\xc0i \x06\xf2\x12\xe1FNN\xde\x1e<{\xf7\xd7\x93g\x07\xdf\x1f\xbd~\xfd\xe2\xf0\xe4\xe0\xafG\x07\xaf\x0e\x9f\xbf~u\xf2\xf4\xf5\xcb7\xaf\x0f\x0fNNP\x87\xc7\xbcGsE$\x1c\x90\xc8\xc6M\x97\xd6D=\xe9!\xaa\xdd\xf9\x84\x12;b\xfa\x9ez\x98\\\xffS\xa5*wTf$6?\xaf\x8eXk\x0cO\xc2\xbdK\xd1\x1a\x05\xdfVN\xb5\xf8\x17?\x1e:\xadRk\xbce}$\x89\x0b\xd3\xee\xba\xbf'W\x13\xb0\xe8f\xd1\x19)\xdc\xa2\xf9\x05gTCC\xcb\xc2\x04a\xa6;\xdf\xe6\x90U\xe8\x81\x8dFLx\xc0hz}l\xd7\xd4\xa9\x07txp\xc4t\xb0\xf2\x0b=\xb0\xc9y\x80\x81\xd8&\xd0\x16\x0f\xe5}\x18t\x879\xa37\x1cJ\x91b\xc09\xfe\x1a\xc5JNC\xdb\xa8\x06KU\x9b\xdf\x94\xf1\xac\xf1-\xb1\x0b4\xa0\xd5y\xf9\xaa\x1aQ\x8c\xc0[\xfai-:\xd7jW\xe5\xa7\x1e@\xc7\xde\xb5\xfd\\;^F\x82rF\xec\x0b4\xa35\x0f\x957\xacA\xa0\xc0t4mTg\xeb\x02\x00^p\xfc\xc5qU\x8c,\x01\xb7\x06m\x1cH\x85\xfe\x03\x9a\xd7r\x1f\x00\x08\xfcF\x9b\xd6O\xf1\x9c\x07\x17U\xc0\xedX\x0b\xb7\xe3\xe6\xfd=>\xeeq\x0d\x07Nd&\xde\xc2\xcf_\xa0\xb7\xb6yD(T\xd0W\x19\n\xd3\xa8\x07T\xa9\xdf\x0b\xcf\x9f\x17${\xc1\x9d\xa7\x91\x83X\xdbt\xe1\xc0\x96J\x1cY3\x1f\x9bB:\x9a\xcf\x84\xdc\x0c?\x1e}\x1e\x12\xd52M\x14\xd9\x9f\xc5c\x82\xdc\xbb=`\xcd\x99dB\x18\xd1\x7f*\x07\xcd\x03\x00TY\x80\xeb\"\xfd4\x85<GY\xe1\xba^\xf8\xea\xc0\xa9N\xaa\xfa\xfc\xdd\xfcB\x91\x9a\x19p\xa7\x98\xae\x14\xa2\xbbRL\xa4u\xebJQ\xe9K\xc5S\xc8\xe4\x13\xbdEm\xc7\x0b\xc2\x1c\x03\xf8\x98/\xa2\xf6W\xf8\xd3/4$\x0d[\xdd\x9a\xa8\x84N\x0c\x06\x8c\x14\xc1\xdb|[\x93\xb8\xb6DD\xfe\x90\xf9iJ\x82'q\xf05m\x89;h\xa3\xe0FS\xa5\nea\xc7\xedm\x97\x89S:n\xa4\xfbr<\x9c\xe2\xfd7\xb1\xdc\xbb\x08@\x81N\x17\x15\xc4d\x047\xfb-^'\xd9m\x80\xa6&\x8ao\x0132U$-\xf7\xcdG\xd5\xdc\x8d\xdb\x8f\xac\xbd\xebZ\x18\xabVc\xd2\xa6\xef\x8d\x9fPh\x9c4\x81S\xe61L\xdf>\x95\x18\xb0z\xd3\xc5\xbb\xa1\xad\xf0\x18T\xba\xe3\xd13\x02\xceG\x16\x82K\xe2o\x06u\xfe|9\x81\xb9XZ}\xb5\xb7\xc4\x9f\x15\x93:H\xa2\x1as\nn\x8cqi\x12\xcf \x18\xc6\xe5\x96p\xce\xa7u{p\x92\x07\xa9\x8bX5xdw9\xb0\x01\xc2\x82!c\x87\xce\xf8\xbbo\x0c3\xcaW\x99\x91\x96\xb7Q\x0c\x14\xf6\x14q\xf7\x06\x0f\xab\x894\x07\x0c\xcdxE2b\xc4p\xef {(b`\x0bLmW\x97\x18\x9f\x99,.a\xbea\x8c|JN\x7fz\xe9\xa7\x0e\xbdA\xfa\x97\ndZ\x89\xf1\x18\x99fW\xb9\x87V+\xd6\x0f\xa9X\x93\x9a8\x1bB\xe6\xf7RH<\xc6-F\x82&\xd3\xf8x\x85H\xe0\x82\x10Y\x91\x0c\xe9J\xf8br\x013\xef\xa5\x9f\x9a\x19\x05\xe0\x84\x89\xcc\x15\xf7s\x93k\x99)\xc2\xb0\xfc\x08\x93\x80lZx\x94\x1d\x18\xd0x/\xa3\x0d\x12'u`\xc7\x8e\xc9_N~\xf8\x88\xab D \x97\x0c'\xc6/\xf5\xac(\xa8\xc4\xbe\xed\x07aO\x0d\x95\xc8\x0f\xbbm\xa8,\xe4\x08X\x9b.\x04\xde,Y\x9e\x86\xb18M\xb9\xc3r\xea\x9f\xf6&\xc97\xa3\xdf\xa3\xabt\x88L\xa8W\nC\xa6\x9b\xc7^\x91\xbcKS\x92=\xf5sb\xa3\x11P\x15+\xbeW\xec\x86\xa7\x9e\xcd\xcd\xb1\xf5H\xa2\x1aP\xacH\xe7!?\xe7<\xb6y\xac\xcc\xf8-\x1eTT;\xf28\x92&}\x9c\xc1:\xc5u\xa1\x9aU\xba\xcd\xa5L\xc9\x13A+\x0f\xd8\x80!\xb72\xdfN\xdb\xca\xab\x86o7@N\xef\xdfbx\x02\x915\xc7\xe7\xf3v\x07\x82\x05^\x06d\xc5\xcb\xa0\x03T\xc4`\xd6\xa2z\x1a\x02\x06\x8a^\x1c\x13\xa0\x14\x9dL\xe0\xf2\xa3a\xb5o ?j\xeel\xc0n\xf5\x9ef\xba]\xc3\x98\xd1\x06_\xa8\xf2W\x07\xdd\x86\xc6\xcd\xfd\xe8\xbfpi\xaf*\xac0\x8d\xeb\x0c\x0e\x1b\xf7\x9dc\xef\"\xf3S>\xa4\xdeK:\xe3\xf8U\x03h\x03\x04\xbe\xe2\x0e\xca\xa6q\xcf\xb5\xc6\xbbD\xe3K\x14\x10 A\x91\x9d0\x1f\x17\xb4UL\x8e\x1d\n]m\x9ad\xc8P@Z\xaa\xde\xa3\xd9~\xc4\xbd\x88\x87\xa3!\xaci\xa9:\x14Q\xc4t\x8fB\xbf\xd8~\x90\x90\x90\xcfY\xe6\xc8\x16\x89\x92\x87\xb2\xb4\xad\x10\x13\x12\xe4P$\x954\xaa\x96\xd2\x16\x0b\xbf\xe0\xafs\xf0\xb1\x91\xaa\xcc\x0e \x14\x0b\x02\x17\xec\xe4\x00CD\x8e\x0e\x11\xc9\x0f\xef\xe8\xc0\xcez$\xdd<\xf0\xe67\xbcO)\x88\x08\xbd\xafM$\x82\xb6\xf8n\xf1\xc4*\xd7\x8e Q\n\xa2\xce\x8c,\xb26\xb2\xa8%D\xfd\x01\x0e\x9a'S\xce\xa5\xa3J\xe7%?\xe2TN3 9<4)\x16A\xb87)qL\xc2\xd0J5\xf8^\xc4\x12v\x10K\xb1\xc2\xf0A\x16\xcaO\xb3a\x88\xc5\xef\"\x16\x9f!\x16\xb4x\xf5\x99M\xaa\x82\xd9\xe9\x1d\nH\x14\xd5\xca\x88\xa5\xb2\xbe\x0d\x15\x1c\x0d3Mb\x83\x0d\x1dn#\xcdlr\xc3GP\xae\xaf;h\x0e\xdd\xe0M\xca\x9e\xe5\x10\x8f@\xf1\xc8\xcf\x990\xda\x94\xcb\x8b\x9e\xc7v\xe2\x1cS\x8e{\xe6\x17\xb6\xaf \xad\xdb\xcfM\x10\\hBp\x02\xc0~?\x0c\x17\xf6\xa1\xb7\xc2\x80\xde\xd4<\x0e\x08\xf4\xa6a\x81n\x87\xdeP\xca7\x08\x99\x0d\x90\x94fM\x0b\x17\x15.X]^\xd0\x14\x08\x10\njL\xec\xad^\x0e\xf7v\xe2\xbe\xa6|\xfd\x1fg]\x06#\x16\xc1m\xb3C\xabr\x11\x15\xcf\xf5G\\\xe3o\xe2\x01K{c\x99\xe5<n\x8a+\xe7\xddp=\xd0\x19p\xf7M\x9f\xecU\xc8\xda\x07L\xe5\xae\x98\x86J\xac)\xfa\xd6r\xe8|\x91\x9a7Z\xec\xc0>\xc4+\x93\xc7z\xeaV\x83\x92\xaa\xb05<\xb6\xf9\xbe~\xf4\xd0\x96,\x8b\xb2[m\xce\x9d\xd2jJz\xaa\xd2\x98T\x14\x99\xb3\xa2\x84EEa\xf5RFz6\xb0\x97\xc1\xe1-\xf4\x1e/\xf9ix\x84u\xc9\x8f\xb0\"?2\xa7\x8a\xe6\xe4\xc3W\x90=\x02\x9f\x92\x1f\xe1\xd4o\x92\x1f\xfe\x00\xf2\xe3\x9c\xa7C=\xb0cAl`*$\x0d\xa9\x11\x1a\x93W\xf2\x87O^i\\\x81\x89(m\xd6c\xe9\xd8\x85\xcd\xa2\xca\x1b\xdb4X\xd7|\x14q\xc5] )\x08\xc6\xe6\xfa\xf0\xa1\xa3\xf1\x13jt\xf5R\xcah\xca\xab\x85[\xed\xc8\x1d\xe2Q\x9f\x18\x99\x84\x1f\x80nl4(<\x0d\xc5\xbc\x9ff\xc4\xa7\x07\xcd\xa9\x10\x17\x90\xc1\xa6 \xd2\xc6\xd7\xce\x8b\x85\x99\xcd\xe8k\x1a\xe4\xeb\xb4\xe8\xb3\xe1\x82\x017\x9b\xfc\x08\xe9\x1f\x05\xfd~\xf8\xd6\xbb\xff\xb7\x1f\x94(\xdeB*!\"\x06\x0cZ\x1e\xe0\x1d\x0e\xabI\x1f\xba5\x138\xf7^\x1d\xfcpr\xf4\xed\xdb\xd7?\xbc:9x\xfb\xb6_\x03#\x1e\xcc\x80\xa0\xcf\x92\xa5zR\xff*J\xfc\x80\xa5\xf8Y\xc8j\x84AM\x98\xb5\x1bX\x03\xe6a\xecG\xd1\xd0-\x12@\xd5[\xd9\xdc\xb5\xc9\x02\xb0p\xb42\xd7[b\xaa\x97~\xca(\xe8\xe4M\x96\xa4C\x90\xd5\x10\xf9\xb7\x11\xcf\xf4\xb6\x04M\xac\xd2\xb2\xe3!\x03H\x9a\xdb.\xc93\x8e^\x87\xaf\xca \x92q\xd8\xb2\x0c!\xee\xec\xa6\x87\x02\x8a\xe5\x0dVL\xc8\x81\xd5VG:P\xea[\xb6c\xfam\xf5\xea\xdaV:\xaa\\hCG\xddZ\xc5\xab2\x02-\xd4\x0d\x9b\xac\xa2\x1b\x0d\x8fT\xde!\x0dA\x860\x03\x95\xb4\"\x83\xea\xcbF\x9a\xcd\xea\x05\n\xd8j\x96\x04)\x9a\xd6\xd5\xd6\xaa2\x80Z\x15T*\x91\xc8r\xe6\x1a$\x91\xf0*\xf9\x1a\x067\xe8H\xe9\xf7\xc1n}\x89&\xb6\x9c\x8c\x9b\xc6\x14\x18x\xf4\xea\xf6`\xa7\xd91\x86\x95\xc1yu\x1b\x99&.\xc4\xc7\xc6\xaf\x9bp\xa7\xd0\x19\xb7\xbe\x91\x13\xfdk\x9a\xd5\xba\xee\xcb\x8c}w[\xdb\xbb\xaa\x8a\xa1Y;\xddC\x18\x9b]B\x98\xa261$\xe5ow\x18V\xa9\xa3\x1aoe\xd5\x8f6\xc2.\xc8\xb2\xd5a\xca\xa2j.%\x9d\x8b\xdfG6\x9c\xf3,K~\xaf\xa8\xb2 `9\x93\xd6\xd2O\xa7\xf9\xb1+$\x9fye\xb1\xde\xd8\x96\xee\x9bir\xac|)O\xb2\xb7\x02\xed\x13\xe3z\xf4Ub\xf3\x13\xb0\xdfW\xdd LU_\xf2}\x88W\x8d\xf4I#2\xa1*J\xc4\x81>Z\xc6\xaa\x9e$*\x9c\xe9xQr\x86\x02]\x850$\x96\x93\xa9\xef1Ij\xcb\xf7\xc3D\xec\x0b'F#\xb1\xa0'\xa3\xa5\xb0\x98*N8\xab8\xe1B\x84\x12\x7f\x04 |\x05\xc5#H('\x9cQ\xf8\x92W@wb\x05\x82GcpN\xa7\x13\x17\xa6\xf4\xba\xaf\x00&SY\xae\x0c\x8d\xe5\x85\x11C\x9a\x19\xc3\x08\xcfE\xd7\x036\xd7\x7f\xe8\xfe\x92\x13\x8d\x9f\xe0\xdb\xdeX];[c\x85\x17\xb0\x9c\x14\xa9.U\x07\xc8S{\xca \x9dE\xdbI\x99\xb4\xa3\xca_\x0f\x19g=\xae\xf1\xa64\xdc\xcc\xce0\xcce\xc6b\x86\xb2|7\xda\xb8\xa1\xedX\x9e\x98+\xc5\x9b\xd7#q\x86\x0c\x85.\xd9\xb6)\x87\x94\x9f\xe7\xe1Y<\xa4\xa9\xfeY\xe9'\xc3z\x99`\"\x98-g\xc59\x98\x93\x0c\xc9\xa7\xf2Z\xbd\xfb\xd9\xed{\xa1\xeb\xd8\xf6\x9ef\xb1\x055\xc1\x1a\xb7\xd4\xb9\x8cv\xb6\xdaYyJ\xcc\x1aP\\$O\xf8\x01\x7f\x93$\x11i\xa5{\xc3Yx\xf3\xa4\xccL\xb5\"\xd8\x83{?\xde[\xbfw\xa6\"\x86gZ\xbfi\xdb\xb2`\x1d\xd0\"\x13MG\xed\xc8\x05\xeb\x8b/\xefYf\x94>W\xca>Q\xd0C\xeb\xf0\xfc\x1c\xf4\xcfY\x12\x17\xe4\xb2`1<\xf9\x9b2\xa6\x7fo\x1a{Hu\xe7Ul\x0b\xc1\x9e\xba\x18_\xd0\x9e\xd8m\x0b\xd33_\x99\x84\x19\x0f\xb1\x81\xac\xaf\x9bg\x1aHaI\x94\xf3\xcdH\xce\xf0\x98\x98\xf1{r\xf5&#\xf3\xf0R\x9a3_\x94\xb8\xb3(\xd9J\x8b\xb2\xe8_\x146\x9c\xee\xb2\xf8XZ\x8d\xad[\xa14\xaci.\xafi\xb7\x98\x02_\xc9\xd66o\xadms\x03\x9a\xc4WD\xa9\xfbs\nq\x19\xaeo\xe8\x15\x0b\xbfx\xcb\xd4\xac\x02\xd8)\x05\xcf\x13\x9e\x02\xcb\xe1\x98xa\xfe\xbd\x1f\x85\xc1ADh\x0d\xda\x0e}\x1f1\xc6 Jb\xf2$\x0e\xde2x\xfe3\xb9\xa2\x1d\xf8\xb0\x0e\xf6ZD\xe7\xcf\xe2\x9e MF\xff\xa2T\x01{\xbf\x0f\x96\x05\x13\x98\xd9\xf8\xa7\x03\xeb`\xdd\xb3\x1c\x0cU\xe8\xb8\"\xf0n\xe4\x98\xc1\xe5\xdc\xee\x0f\xcf\x04{`Y\xcd\x85\x113dq\xb9h\x8d\x19e\xc0\xd9\x10\xba\x1c\x03\xdd\xab\x802\xd2\x88\n\x02\xbb\xc0([\xd8a\xb3\xb2O\x87\xb3p\xa1\xa4\\\x92\x97\x91\x88\xf89\xb1K\xf3\x1c\x96=We\xe3\xce\xaf\xef\xf4\xb9\x14P7 \"\x95\x81I\xcd\xd88\x1a(\xaco\x9d\x8e\xc6\xcb\xce\x01\xa1\x9b\xe2\x07\x01]\x830>;J\xec\xb9\x98\xe8\x8d\x06R\x1dd\xa9W\xf9,K\xaf\xefp\xcc\x81\x0by\x8b\xae9\xeb\xc8>\xe7Iv\xe0\xcf\x16\x93^b\x06\x84-7\xb3\xb5\x96\xa2\xac+\xec\xc5\xabk\xb4 I*\xb7f\x84\xa3\x94\x85\x84\x9aWp\xd4\x8e\xc3\xdc\xc4\x0cK?\xfdH\x03\x9e*\xa8`\xfe\x15\x9e\xbf\xcc\x15\xbb\xc0\x9c\x8f\x8diJ\x96~\xfa<.\x92\x1f\xc2b\xf1g\xb1\xdb\x98?5\xf6\xa3 \x9c7+\xe3\x8e\x0e\xd0\x00\xf2\xd1\xe0\xb2-\xd9h\x8ckU$\x88\x12\xfb$y\x82\x95\xe8[\x80B,\x80\x1a\xa5vRg\xd5\xf0\xa9\xa6\xa2\xce\xf0\xed-\xa9\xa8\xd1f\x9b.\xc2\xc0\x7f\xb1\xfd\xc0\xe9\xb34\x16)U<\x91R\x85B+g\xa3\x86H<\x9b\xdf\xa5I\xda\xa3\x83b\xa7\x17\xfdjY(\x16Epr\xdd\x06\xc4\xe4\x02\xbf\xef$gP\xd0\x8a\xe6Y7R\x85\xd1&1)\x8fm\x8dw0\xc7\x85\x84\xdb*\x1fN\xc5\xfaPv\x92\x16\xa5I\x12\x1d\x86?\xd7n\x9d\xcd5\xa1\x97\x9b9\x9d\x04\xa5 \x92.\x01\xdb\x1d\xb7\x8c\xdf\x06\x9c\x15\x90\xc5`\xc6m\x89\x1bc\xe61%\xe3\x1a{\x01g\xf0}\xfa\xb6\x9a/K\xc7T\xfd\xb9\x07#L\xc6$\xb0\x18\xec\xd1\xbbS\x91\x9bIAZ\xc6\xa4I\x83O\xda\x0bB\x9f\x0e=?p\x0dn\x02\xe4 \xad\xddJ\x80\x0e*`\x8fyl~\xd5r\x80\x12\xe6A\x05\xf7\x9dT\x15\xa0^\xceb\x91\x91\xce\x82\x0e\xb90\xe0\x96\xab\x95\xdd\xc9je\xae\xf0\xcb\xeb\\1\xe2\x19\xbe`\xcax\x1e\x8a5\xeb\xf2\x81\xdd%3\x98\x91\xdcf\xd5\x92;Y\xb5\xa4Z5FM\xa8\x9d\xc0VZ\xb8NB\x88n\x0b\x9a{\x8d\x99k|\xac{m\x9b\xa5Z\x1e\xef\xdeW\xc5\xa2\x8b\xed\x9d\xadv\"]\xbf\xbe\x10c{g\xbb\x13^\xaed\xe5\x0f\x1d\x17,\xaf\x9d\xc6\x95N\xc8\x9aX\x9ax\xc5\n\xc4#\x08-\x0c \xd2\xcdx\x80\xef\x05cB8\x8b\xe4{$\x9f\xf9)\xb1 c\x92&\x18Z\x9e\xe5Q\xb0\xb7v\xdb\xd22\xb8\x990\xae\xa2\x06y\xdc\xccj\"\x84\xc7w\x9a\xb90\xd7\x11H\xa9\x8bq\xf2\x84\xb9F\x1761_I#05\x86\x91\xfd\x12\xacSz\xa2\xfcX\xbc\x12YP\x90|sk\x07F\xbcd,\x16\xab\xd9\xc27X\xd7\x8a\xcb\xe5)\xc9\xe47\xf5\xaa\xf2.\n\xef\x8b/\xf8\xc8\xd0\x15\xb2\"wg\x94{)\\\xca\x83\xb2\x00\xcd\xfbP\xc2: \x05\xb2\x89L\xb0\xe3\xc2HM\x13/0\xc6\xa5\xf2\xc8\x9c#\xb3)59\x81\x18\xd6A\xa1y\xa1\xab\xd2\xe4\xcf\x0b\x8d\x06\xa1\x92j/\x99\xc4zII\x8c*\xbc\xf6r}\xdd\x81\x05\xac\xef\x01\xb1S\xba\x0f\xd3\xe5\xb1\x0b\xe78\x97\xd4\x85\xa5\xc3w\xaf;\x02Ml[\x90\xd8\xa2P\x99\x8d\x10\xf8\xf0\xcf\xfaP\xd8\x95\x8b\xd1\x04\xcf8m\xd7\x13Z\xe6\x0c\xc1\xa0\xf0H\\d!\xe91s\xa9\x16\xe5\x84-\xca\x9a}\x05{p\xea\xc5\xe4\xb2\xb0\x1d\xc7\x0b\x12L\x1d&-\xcc\x15K;#\xad\xcd\xc9\xfa\xba~u\xc4CW\xa9\x7f$\xda\x01\xe8\x17H<t\x12\x17\xf5\xf8\xf4#\x11\x0f\xe6B\xb1\xa5\x99]`~\x88sL\xeb\xc4\xd1\xc5\x05\xc6lY\x87\\\xccuS\xcc\xb4\xc7\x04JYz\xcd`\x05\x0fr\xe3\x88\xf5\x01\xc0\x01\x1e\x07\xf5Q\x11\x0f\xe5\xf59B3AHf[[#\xcb\xadS\xb00\xf9\xf71\x1b\xc9%\xec\x8b\xd3\x0f\x17a\xb1\x80\xf7\xe4*\x87_,X\x171Q\xe9\x0b\xbbpx@q\x17P\xd4d][0\x81K\x17\x0enf\x1b\x015\x0e]4\n0|\x97e\xddH\xa7a\xbe\x00\x95\xd6\x91<\xb7\xe5\x97_\xf2_U\xc2\xe5\xeeEi\xfd\xd3?\x89BK}K\xeb\xb9$\xc1\xe3\xe1Ue\xb3\\\xd5\xd3\x0c\x93>\x91i\xd2\x8e\xe1\xae\xcdSU(\x92P\xdd\xc1\xca4\xc7\xca\x0e\xc2P\x0e_\x0d\xc6\xd6\x9e5\x01koS\x03\xc1\xd6\x04\x8b\xc7V\x17J\xb4\xf2\x02\xeb\x0b\n\x93\x1d5\xc0\xbd\xe9\xde\xe4\xf8\xdeY\x1fc.5TL\xc9q\xb7_#GY\xc6w\xb3(\x9b8m\xdd\xa2\xec\x8di\xf1d\x95Ea\xcba[\x1e;\xccd\xba\x89\x1az\xbaV\xeco\xd4D\x13//O\x19\x15`\x8f\xd1\x97Pz1r\x1ci5\xed\xbd\xcd\x0f{c\xe7\xee\x17\xb4\x86W\xf5\xd9\xb9\x13\xfd\xd7\xfd]\x87\xc7\xe8\xfc\xc6\x9f\x15Iv\xd5=\xc5\n)\xc0\x84\xa2H\xbfM\xa5b\xd1\xe9i\xc6JOO3e\x85 \xc8H\x9e\xb3:\xec\xb7\xb2ZFx/\x19Qw\x94\x15\xe1,\"\xbc\x0e\xfeVV\xcb\xc3\x80W\xa2\xbf\x94U\xca LX\x15\xfaKU\xe5\x14\x8bO\x95E~\xce\xda\xa7?\x94\x15\x82\x90\x95\x07\xa1\xba8\xe1\xc5\xea\x9e\xc33V\x1c\x9e)\x8b\xa3d\xf6\xfe\xefeR\xf01T\x7f*+'\xc1\x15\xab\x96\x04W\xca\nl\xeb\xd4\x1bwZ\x16E\x12\xb3\n\xf8SUi\xe6\xc7\xe7>\xdb\\\xf6S])\xa5\xe0\xcak\xe1oe\xb5\x90\xcf\x8a\xfePVH\xf8\xd6\xd2\x1f\xea\n\x11/\x8f4\xc5gYR\xa6\xa2\x0e\xfe\xa1\xaa\x18\xf8\x05\x03F\xfaCW!\n\xf3\xa2\xaaD\xffPV\x0cX\x95@YH\xd8p\x03\xa2\x1cn@\n?\x8cr^\x05\x7f+\xab\xcd\xd9\xca\x06s\xe5\xaa\x06\xa1\x1f%\x0c\xa6\xd8Ou\xa5s^\xe3\\Y\xcc\xc7\xa9\x1e&_\x05\xe5\xfc\xc9\x12\x0b\xc9R]xJ\x02^~J\x94K4\x0fI\x14`\xd2\xe7\xcc\xb6\xc4\x1f\xea\x8ag2\x98\xd5\x7fj*\x97\x19\x11\x15\xcbL L\xf3$\xc1\\\xb5\xff\x1f{o\xda\x1d7\x92$\x08\xbe\xdd\x8f\xf5+\x9c\xf1\xaa% \x03\x0c1H\x89\x94B\xa2\xd8J%\xb3[\xdd\x99\x92FRVMw0\x8a Fx0PB\x00Q8xdQ\xef\xf5\xcc\xec\xdc\xf7\xee\\=\xf7\xd9\xb3;\xf7\xb1\xc7\xec\xce\xf4\xf4\x87\xce\xfc#\xf3\x07\xf6/\xecs3w\xc0\x017\x07\x10$\x95U\xbbo\xf1\x81D\xf8\x05wssss3s3Q\x08^\xe9B\xc9R\x16I\xc81.\x86\x90\xbd\x18\x92\x99\xdb\x98\xb9Mf\xee`\xe6\x0e\x99y\x1f3\xef\x93\x99\x0f0\xf3\x01\x99\xb9\x8b\x99\xbbd&\xf7qB\xc4\x8b\xad\x80\x04\n\xbe\x92\x85\xcaU\xb6\xb0\xae\xb1\x85l\x85n![\"\xca\x89\x17\xaa\x00\x92X\x92\xc0\x06\xf3\xc4_\xe2\xe4\xe2+Yh\x89K\"X\x92\xeb!\x88V9\xe2\x1c\xbc\xd1ERY\x80\\\x95\xefO\x10\x90\xefOH8\xbe\xe7\x97\xa7\x1cQ\x15_\xa9B\xa1\x7f\")\x04\xbc\x91E\xf8)\x8f\xf0K\xf8J\x16Bh\x85$\xb8\xc2 z/\xb3\xa3\xf7T\x81\xa5\x1f`G\xc5\x0b]`%\xf3\xc9\x89^\xfa\xc9{\x99\x9f\xd0\x1f\xe0Q\x8e\x05x\x94\xdb\n\x04\x99$%\xea\x07]P\xd2m\xf1b) \xb1\x17\xde\xa8\"\x91\x8f\xa40\xf2IR\x18\xc5\x18M\x19\xcb\xc8\x1fTA<0B1y\xac\xa5\n\xe1\xf4\xd2\xdbU\xbc\xca\xca\x85\xa4~X\n*\xba\x17[i^\x9cg\n\xa7\xf1\x95*\x84\xdf\"?\xb2\xf2\x13\x1fg\x00\xde\xc8\"\xc14StU\xbe\x93\xc5T\x11[v|Zp\x8c\xea\x07U\xf0gP\xe2gTV\x82\x03I\xc8\x91$\x08\x85\x84\x84@\x92\x9f \xcf$^\xa8\x02\xd8/\xb2C\xa9\xbf\xc4\xef\x8a\x17\xb2@\x89:v\xc4I\xf9\xb4\x98N\xf9N\x17\x0b\x15~\xe1+Yh\xe9\x87\x88b\xf0F\x16\x89\xf3d\x8a\x13\x82\xafd\xa1\x95/;\xb4\xf2\xe9\xdedI\x1c!I\xc5W\xba\xd0\xa5d\xe0\xe1\x8d,\x92#\xeb\x9d\xe6$\xf3\x9d\xe6\xcb\xa5\x9f\\\xca\"\xf0N\x17\x93\xf3@\xaf\x97\xcc?\x91\xfd\xc80R,Q\xa4\xe0\x9d3\x1b\xf3\x9c!\xd9\xcdH\x92\x9b\xf1\x8b\xac8\xd2\xa8\x1fdA\xc1[`)\xf1F\x16Y`\xfe\x82\xceT[vf\xdb\xb3\xb3@n\x87\xe2\x85.\x90)x\x887\xb2\x08R\xcd\x8c$\x99Y\xe2O\xdf\xcb|\x7fJ\xd2x$\xf0$u\xcf\x11As\x12;\xcf|\xfc\xf0\x99O~\xf9,\x98q<N\xc1\x1bU\xe4\\\x1er\xce\xe9S\xce4H\xd4\xa9\x12_\xc9Ba\xb0z\xed\xcbyP?\xa8\x823>W\xfc\xfa\x9c$\x11<\x0c\x83\x95<@\xcaw\xaa\x18\xae$\x9a5Y\xfa\xa7\x92\xbb\x11oT\x910\x88\xb0\x84x\xb1\x15\xf0\x93_K\xfcY\xc0\xa3\xac(Z&Q\x95\x96~\xaa\xf6\xf1\x94\x9c\xe3\x95\x82\xd0\xca\x02\x9d\x95\x9fe<\x89T\x19\xf1N\x16\x8b\xc3\xcbSI\x00\xe5\xbb\xadX1R\xf5\x83*(\xc6\xe4\x87\x95\xd1V\x93\xc8J\x8a\xb8&6\xd2\x9a\xc5\x92\xc8d1M\xec\xcf$=<#\xe7Q\x10\x85\x82:\x90\x05\n\xa2\x9b!\xd5\xad\x94\xb0\xc8\x88P\x05{\x0b2\xa2\xaa]f\xb5w2\x1a\xfb\xae\x1e|\xac\xd2 eMv\xc3~\x18\xc6\xd7\xf8\xe1\xba\xe95j`)\xfdk\xe4\x0c\xeb\xe1\xb5r\xd9\xf7zq\xb4\xa8\x7fp\xff\xbeeL\x8df\x1f\xcal\xe3&\xf2s&\x8doi\x19\xba\xfa\xcaT\x94x\xf2\xc4\x8f\xe2\xe8r\x19\xe7\xe9\xd3\xa7\x84\xa8tn\x95\xaf\xfah\x99v\xe6\xf4\xe0\x8dB;\x06\x82#\xc1\x98\x9e9\x85\x12\xd5RN\x0c\x17\xca\x15\xe3\xb6\x14Dm*\x14\x95\x8aUKA\xc55\x9f5q\xcd\x0c\x19\x8e@0\x1cg\x8eR\xde\xda\n\x02\xd0\xb1 \xbc\xda\n\xfa\xd1\xe5\x88-\x9cD7\xb3{ \xdab;(_\xcd\xdb\xe4\xdd\xeaQ\x9a\x9c\xaa\x7f\x1fk|\xcc\xfaS\xd3wh\xb7\x9a\\\xdd\x94b\xe6\xf4\xd4U\x13\xf6u\x8f\xf5!8j\xefk\x16\xcf\xcbx]\x98\x91`\xc6\xc2OY \x03\x16\x8b\x9a\xef.W\x9cEq\xe6\x83\x8a>\x88\xd2`\xc6\xd5P\x07m~\xb0\xce\xe4\xbd\xc0\xac\xd5\x99#\xdcn\xad;[k\x83\x01\x93\x9f\x00+F\xc7\xef\xee\xf4CBF\x05f\x16\xc3\x8f\xc5\xf0\xeb \x12 \xc5\xb4\x14\xd3\xd2|\xb5\n\x03>cY\xacC\xcdc\xfcb\xc5\xa7\x19\x9f1?B\xe8\x0c\x08g\xb1\xfa\xd3|Q\xbfP8\x87\xa8p\x0e\xd9\x13-\xc8u\xd8\xefw\x05\x0d\xdc\xd6p|\x8f\x85\x05f\x89\x1e\x8fE\xdfC\xf16\xe9y,\xef\x0091AS\xddf\x11.\xe5\x95\x16\x0e7\x18,ey^\x7fl>T\xe8\xa5\xc8q\x93\xea\xe0Q\x80\xdd|%\xae\x89\xe4|\x0d\xc4\xce?>b\xe7\x9d\x11\x9b\xa5At\x1ar\x8c\xbf \xd9\x80\x9ba\xf9M&\xde\x16^Ja\xe8\xf7J\x887\x1cp\xba\xa6\xad\x0e\xdey\x8e\xf1\xeeN\xe4/\xc1\x98\x95\xb8\x9fC=y\xab}\xb1\xedA\x1c\x1cL\xe3\xa8\xb8;qu\xc5\xaa)\xd0\x9bri\xb7c\x9fz\x94\xd1\x99\xd1X\xa7\x16>\x00\x14\x7f)\x90]\xcd\xa4\xa8\x0e%|(\xf1\x8bCw\x0b\x17\x05\xfa\xafk\x12\xb9\xc6\xbbL\xf5\x07\xd0f\xe9\xf0q6q\xeb\x0c\x86>\x01I9\x01\xb1\x05\xd8\x91IY\x80\xa4\xbc\x8cg\xbc\x95\xa3\xb8 \x0cm$\x03\xf9\xca\xef\x95`\xfc\xc2875\xd6V@\xeb\xbbZ;M\xea\xc6\x81UL\xba6*\xf1\xec\xd7_\xcb\xebpd\xf8\xcd\xd61k\\\x17\xf8\xa5h\x1d\xb6\x18\x90?X\xf8\xe9\xab\xf3\xa8\xb8[\x1ev\"\xfd\xac\x99A\x1b\x00\x83\xd6\x8d5c7e\xcf\xd8/\x80t\xc5\xd1\x1a[4q:\xd0<\xe5\x18\x07\xb4\x06\xbb\xbe\x9b-\xdd\x02A\x8a\x95\xa1{X\xe6\x05\x83\x9e\xeb\x17\x8fm\x8f\x18\xd4J\xcc<\x07\x7f\x1e:\x8c\xdb\x97\xa6Xp\xbf\xf1\xf6\xd5\xcb\x01\x9eu\x83\xf9\xa55\\\x80z\xd6\\i`\x1f\xaao~\x1d\x96Z\x1c\xc1\x8eY,\xcf\xa6\xfd\xf2\x1a\xe8\xf2\xee\xb2\xdd\x9cL=\xb7\x862\x157\x1f[\x8fYV\x99\xe9\xac\xfd(\xa6dAb\xef\xec@\x1f\xa9\x9d!*:\x1e8\x1bC\x8f\x15\xb3\xa7\x9c\x87T\xe6\xa6\x80\xd5\x80\x1d\xd6\x8f\xa5\xb0},\xf8\xf4}\x01\xc6\xd4c'y\xc6\x12>\xe5\xc1\x19\x9f\xb1_I\x99\x9f\xb1 \x9a\xf1\x0b\xf6+\xe9\xa0\xe7\xb1\x13\xf4\xed\x05\xf7\xa4k`\xb3\xcf\xee\xf7\xb2\x04\xa5o\xd1r:\xfc\xf6\xe9`\xda\n\xe2\x9d\xbc\x8f\xeaWX\xd3jo\x05\x81v;QG\xd6\x99\xc6vY\x9f\x96\xa5x{\xeb-]t0\xddT\xcf\x0d\xa7\xf4\xff;\xac\xc6\xd7\xf8\xc5\xaf\xd7\xe44:\x1d\xe0\nfa\x1cv\xc4\xd9i\x97f\x99lz\x0en n\x85\x0f\x99\x17\xa0\x9e\xb7\xd6i^\x12\xdd\x16\xcc\xed1%\xfc\x02BK~oX\x9fv\xc6\xfa\x10\xb0\xbe\xee`\xae\xfe\x18X\x1f\xde\x00\xeb\xc3[\xc7z\x85\xc2>:\x93\x04\xfe\xa9\x8dk)V\xca\\\xac\x94N(-J\xaf`\xa5\xcc;\xae\x94\x8d\xd5zpz\xcf\xe5\x99l\xdeL\x8e\x8f\xa2O\xfdY\xa1\xc2\x10\x195\x9e\x0da\x80\xd7\xf9{L^\x139\x8a@\xd3\x06\xb7J\xc8Z\xfa%\x13\xe5\xa7K\xd6\xef\xb0L\xcf\xe4\xa5\xb2\x95\x93zln\xae\xf6y\xb7\xd5.\xe0\xb6(\xc0\xb6\xf8\x05\xadc#\xf5\x83vE\x92\x99>\x87(\xfcQR+y\xfd\xef\xa0pR\x7fu\xc5\x86\xec\x1ed\xc0K\xc6F\x8c\xc3\x85I\xb8\xed\x07\x0cZ\xa5\xb5\x0f\x96o\xcfhJ\x02\x17g\x97<M\xfdS\xae\xf9\x18J3\x7f\xfa\x1e\xee2uj|A7^\xe4\xa37O`V|\x8f\xa5@\xe1\xc9\xfb\x95\xe2\x81\xd86>J\"\x81\xe8\x84\xe2=\xf0\xd8\x1c`\x92\xa37\x1ep\xb1\x13#+\xfa\xdc\x0f\xc3 :-D\x0e)\x83\x95\x03\x8e\xb9\xd9,H\xf84\x0b/Y\x90\xb2(F65N\x04\xd18\xb9\x84\xc0*_\xaf\x92x\xb5)\x88N\xfa5[\xf9\xd3\xf7\xfe)\x1f\xb0\xafR\xce\xbe.\x1a\x1c\x00\xc3Z\xfct\xdc\xaf\xc5:\x9b\xfaa(\x9aX\x0e\xd8\x1b\xee\xcf\xd82N\xb8\xe0\\\x17Y\xb6\x1a\xdd\xbb7?\x19,\xf9\xbd<\xe5\x9bP{\xb3\xfc\x8eu\x91hx(f<\x19\x07\x13v\x007+\x8b\xcb\xa1*\x0d\x89\xc4\xbb\x05/\xcf:\x15\xa2\x19\xa4`\xe5(\x18\xef\x94%\xfcgy\x90\x80TQ?O!\xdf\x1dd\xa9<j\x05)\xfbZ|H\xd0Q\x19k\xf4\xa3|\xa3\xb8\x1c\xab>$\x067b\xdc\xa9\xe0H\xdb\xa5k\xa6+\xe61\xbc3\x92\xa1\x0d*<eq\xec\n\xd27\xaa\xa7\xf5z[\xa63\x17\x0b\xc6\x9f\xd1\x18\xdf\xb2!{vO\xa3J\xd7bW\xe1\xc8\xb6O\x9d\xdc-\"Xt\xda**[\xea\xa5\xa8\xdeuW\x15\xa9\\\xb1\xf5r\x9e\xccI\xa9_\x19\xa2!\xb6\xa4\x9d\xb3\xa7\xe7\x01zn/\xae\xca\xd1\xf0\x99\xfa)/n@\x8f\x1a\x8aH\xcd{S\x91\xf2n6]\x8a\x95\xd0\xde\xd8\xa2'\x03\x1bR\xa6\x08\xed\xcd\x10\xd7\xc4Y\xd1\x8cd\x97\xec\xad\x90w\xa7U\xdb\xd9\x80\x9f\xf1\xe4\xd2Y\xb6\\7\xae^/\xe7z\x13\xb6Q2m\x85u\xe3H\x99qk2\xc2[\x93\x91\xbc5\x19\xb6iW\xd6\xbaEY\x7f>\xb4^\xba\xd6B\x1co\x10\xd7\xdd\xd5#\xc6\x10c,\x91\xa4\xdbm\xee\xa4v\x9b\xbb\x8b\x10\xe11\xdb\x80\x10\x91A\xed\x16ucMV\xeaBb\xbcB\xadM\xe4\xd0\x0e\x9a5nvS}\xea\xc8\xf5\x82\x17\x9f\xae7\xbbAx-\xf0cc\xe9\xf8\xe3\xe1\xa4\xd3@X\x17\xd9\x8e\x0d\xa3\xa5[\xd8\xf6\x05k~\xbf\xeeu\x96&s\xa7\xcdWL\x95\x9e\xc5\xba?\xd5\xe5\x85\xec\x80I\xbb(\xe0\xfc4\xf1\xfa\x1b~zx\xb1*\xef\x81\xf7XGG@\xf2K\xca\xf4\x08\xaf\x9c\x82;\x89\xb7ZJ6\xee\xfd\xea\xaf*\xd7\x1b\xef\xfc\xd3\x1e,\xe0\x16k\xb2L\xef &\x9bpD\xa7W\xa2\xe3\xaa\x07\xf58r6\xe0^\xda\xddwiN\x98a,\x05\xb5+UZx\x07\xd9\x84\xbc\x9a\x9bSR~m8\x01ht\xb0T\x99\xa1\xcf\xfcL\xfb\xfa\xcc\xcfx\x8f\xc6J\xa3&\xcemY7\xe1\xa7\xfcbE\\1\xb6\xa1Q7x\x9e4#+-\xd0/v\xec\xe6\xad\x1a\x91\xb6i\x1bn\xdd\xf6\xd4\xe8\xfd\x088\x9b\xc6=\xb4y+\xc620\x03M\x05$\x98;\xf4\xa8\xa9C]iL\x9b\xd3\xb7\xea/YIs>\xc9\xf6Q\xc5V\xa6xl^;\xa9\xb0}\xc1J\xcf\x07z\xc2\xdc\xd3\xa4b7\xf0C\xd0\xe4x\xa7P\xe9\xdfR\xfb\xbd\xe1\x83\xc1\xee@z\x1e\xb8Vkg\xa5\x8f\xe9\xdd\xfb\xee\xa0\x88\x98@Y\xf3\xb6\x19\x1b\x07\xb2\x9d\x07\xa4}\xef\x83\xfb{\x16\x83]\xdfQ\x92\xb9\xdb\x18\x87aG\x8c\x9d\x1fn\xd3n\xa3\xeb&\xca\xa2\xb3\xbdep\x11Di\xc7I\xad/xuf\x19\x13\xd2\xc3\xd4j\xef\x8b\x9f\x1c\xb1\xdeg\x87\x9f\xbfxyx\xfc\xe5\xb3\x97\xbfe\xf1\xad\x90f~\x16L\xbb\x95])\x0c\xefTZ\xfaS]\xa3\xc2\"\x08g\xcf\xd7\xadu\xca\xb3\xcf\x90\x1a@\x84\x9dj\x9d\xe3/\x0f\xdf\xfc\xda\xe1g\xf6\xaa/\xa2 \x0b\xfc\x10\"\x17\xadY\xf5\xb9\xd6\xddu\xaa&<\x82\xbb\xb4\xaa\xc6\xab\x97\xcf\x0f\xad \x94+\xe8\xc7A\x18~\x89\x8eK;\x80\xa4\xa8\xf6Y0\xbbF-\xf1\xb17\xa8($@j\xc3\xa3E\x9c\x0bp\xc86\xbeZ\xcd*\x10\xed:\xc8z\xbd.\xfd\xfd,\x98]\xa7\x1a|.Zv\x86\xcfW/\xdf>\xfb\xfc\xf0\xf8\x9asB\xd5^\x1b\xc8T#k\x0c=\x87\xa2\xc5\x1c\x8dX\xef\xd5\x8f\x0e\xdf\xbcy\xf1\xd9\xe1\xf1\xa7\xcf\xde\x1e\x12\xbc\x8f\xd9Nh%:\xb0\x10\x93\xe0\x8c\xcf`5}\x9e\xc4\xcb\x86\x15\xd9\xe5[S\xeb\xb7fA\xba\n\xfd\xcb\x97p\xe3\xbb\x13G\xce\x80\xf0j\xf5X]\xac\xab\x1e\x8b\xd6H\xd1\xd4\xce_\x13\x1cgK(\xb9B\xed\x11\xa1\x9a;\xaa\xb8a\x8b\xfa}W\n\xb4\xc7\xd1d-\x15\x17AJ;\xf7\x9b\x0f\x8c\xda\xe2\x88.C\xa6\x19y\xa4\xabP\xd6\xd0\xb5k\xf7\xca\xd2\xa1\x1b\xf4\xc5\xd8;\xd6\xe8N\xad.8\x13\xaa\xa7\xed\xb3\x85c\xa4B\xcb#\xb2\xf4Z\x08\xa9\xed\xc6kt{\xa5q\xa9\n\x84E\xda\xba\xf0+\x98\x87\xce\x1d\xd8\xe8^\x94u[C\xac\xba\x8e\x82\xa8\xbdU\xf5(>\xaf\xdd\xa6_=\xd0\x9f\xba)`\xd4\xd9\x14\x90)\xb1\x97\xe0\x16A\xd3\xd9\xed\xb3\xe2 \x9c\x8d\xd8cw\xc1\x88\xf6y\xe8\xa7\xe9\x88\xfdV\x9c3\x1f\xf4!\x19_\xae\xb2 :eY,C\xcf0\x9f%<\xe5\xc9\x19\x9f\x01\xa6\x88\x9ez\xec\xeb_I\xbf\xf60\x16>n\xd8\xd1\xd1\xdd\x8c\x9dp\x06\x11\xf2A\xb4\x0b3\xdac\xef\xf9\xe5\x80}\x86M\x05\x19\xf3S\xe6G\xa5\xc1\xb4j\x11R\xb8?{,\xca\x9c\x07a\xc8\xd2L\xfc=\xe1\xcc\x9fNy\x9a\x06'a\xd1\xb8n.~\x97vRo{\x94\xd8\x0b\x80\xd6A\xea\xa5\x1e\x90~\xad3;L\xe3\xb9Cs\xa2\xd9\x01\x0b\xc7\xd1D\xca\xe9\xbb\xf7\x83\x95\xa7\xcb\xc0\xa1\xb6C\x10{\xe4\x1e\xebu\x9e_1\x95\x02\xb2\x97q\x9eh\xb6\xc2\xa0 \xcb\x16~\xc4\xe2h\xca\x07\xec\xdd\"H\x05\xe4\xe7a0\xcd\xd8\xd2\xbf\x14s3\xcb\xb9h\xc9\xc7Mm\xd0C\x07\xc8gq0s8\xc6\x95_\xc0\x8b\xc7\xa8\x80S\xb6\xa7Y\xff\xab?\xf2#\xb4\xc7\xe5\xfa\xd3\xde\xac\xbd\xc4\x07\xa42\xeb\xd04?\xcf\xe2\x93 \x9aU-\xee\xd7PA\xd3\x81u\x98f#\x98\xd6\x11+\x13\x88\x95\x8e3;b\x9d\x10U\xee\xdc\x11\xc8Te\xe1\xd0Ml\x05\x8f \x12\xc2\xdc\x9fr\x1bB\xc5g<I\x82\x99D\xa9y\x12/%R\x89\xda,]\xf1i0\x0f\xa6``>`\x87Q\x9a#\x86eXj\xc9\xb3E<c\x91\xbf\xe4)\x9b\xc5\xa0\x00\x16-\x86\xfe\n\xddfBOd1\xb04\x84\x18\xb4\xb2\xf7:\xd3*]\xdc^]\x91\x0c\xe3uF\xf6Q\x96J\xd6M\x19\x07\x8c\x9b=X\x86U\xc2i\xb1\x0d5I\xc3]c\xb8y*\xc8~9@\x9c\xc08);%\xc8\xb8\x1c {\x81\xa4\xdbc?\xcd\xd3L\xd6M\xf8i\x1e\x8a\x0dJ\x99\xd2{b\xdf\xc9\xc04t\xfd\xef\xaf\xfd5\x9a\xa0\x9e\x15\x91\x91J)\x9cu\xc5\xc7\xa0N:>NDg\x9f\xe5Y\xfci\x10\xcd^\xfbAb\x89TY\x8dR\x19\xd5\x97\x99\x0f\xcbl:@\xee\x1f\xa6T\xbe\xbb\xa4\xbfw\xf5\xc0\x1c\xd7\x1bC\xbb\x8a\x1cC\"\xb6\xedJg\xf2^h4\xce;X\x8e\xad`\xd8\xc6\xf7\xda\xf5\x80sg\x85!w\xa6fm\x97M\xc7\xf9D\x0c:li\xa9\xc1\xef\xb3\xfe\x881\xcd(\x02\xd8\xd6S\xd6d7\x0d\xc6+\xe0\xac{\x05\xb7\xdc\x86H*\x06\x8a\x92w\xdb\xc1\xc0P\xbfmR\xf4\xe7L\xba\xcfN[\x03\x96\xeaO\xe0\x80\x13q;\x13\xb0\xac\x13@\x99\\_\x81_E\x85\x11\x81 \xd1l\x15\x87\xc1\xf4\x92\xfdJ\n(\xfd\x9e\xc3\xeb\xf9\x82G\xb8\x02O\x81\xdd,\x96\xa6\xa8\x02\xc4x\x89\xb3\xdf\xd0\x9d\x03\x96`\xe4\xd2\x85#^\x042\xb0\x11\xd5C\xf4\xe0\x8be\xcf\x8a\xb2\xdd\xa0/\xddA\xcb\xda\x1d8+(\x1ec\xd0\x93\\|\xc7+*7\xd6m\xe0\x15\xcc-\xbe\x13\xa1\x9fY\xf7\xfb\xea\xb1$p\xa4AY\x83\xaf~\"=\xf3Xo\xc9\x93S\xaeB\x1c\xbd\x8c?\xcbW\xa1\xd8\x90\xf9o\xf2\xcb\xd4qG\xec\xb9\x1f\x89m\x17\x8a\xb1(\x8e6\xb1\x99\x14\x08x\xe62\xe2\xc8\x82Q\xca*:=`\xf8Z\xbf\xf5.\x91\x06-\xf8\xb5\xec<\x96\xf4;\xc5\xed^p\xfa\xa9\xbf\xe4\x18\x06]l\xbd\x9dv\xd6\xc7\x02D+\xf0\xf0*\xf6\x044\x92SE\xa7~\x9eJk\xb2\xf3\xb8.\xb6u\\\xb1\xc5\xd5\x0e\xd3\x8e\xab8\x0e\xc9w\x8b\x15P\xe9\xa7\xd8\x1c\x17\"\xf5=\xbfL\x15\x0b,\x19S\xcb\x0dUeB\xd8 -\x16m\x96\x88:{i\xdd\xf70\xb04F\x83\x15\x10\xf1\xcaH\xb2\x96{\x8e\xe2\x81C\xad\xa5\x96]=\xaaL\xe2\xca{(I{\xe1\xd2\xd6#\xb2\xef\xde\xe0^\x98\xf0\xd5\xcc4\xa5\x9b\x13\xe3\x14\xc0\x0b\x1dV\xa4\xdbz<\xbb1\xe0\xad\x00\xb7\x02\xf5\x9a]]\xb6\x1e\x1524\x9e\xa3\x94\xc4\n\xec\xb5/\xd5[1C\xd1\xa9\x87P\x13\xb4\x82\x86)\x83\xd6\xe3\xe3 \x85J`\xe3\xb7\xb1E\x96&H\xaa\x89\xb4\x97\xed\x1d\xac\x88\xea\xaf\xddG\xda\xde\xa5S\x1fO\xac}\x94\xfe\xc1\xa5\x02\xa9\xb3p\x0b\xfa\x87\xf2\xf8d\xc0\xa3\x9f\xe5<\xe7o\xb4\xa6$\x86\xad}z-\x06\xdc\x11N\xca\x16g\xa3\x0e\xb0\xeb\xc3\xea\xd8\x1e\xd6\x97iF\xa2\xce\xb1\xaeT\xd7y{vB\x90\xb6\x12\xb2M\xe42\xab\xa9T\x93\x06sPV\xa2\x89yXP\x91\xd7\xee\xdc\xe9\xf0e\xf5T.\x11r\xb2]\xcf\"\xeag\xfd}\xb6\xdd\xd6>\xab\xc9,\xdb\x8f\x05L\x9e\x88\xb2q\xc4\xfal\xd8\x81O\x85\xe0\x0b\xfbH\x99\xe2\xeb\xfaA\xf8\x00\xe8\xab\"\xda\xad\xa4t\x9b[C\xe7&|\x0e\x0e\xc4\xbc\xca\xbaP6\xeaQi1\x9fq\x19\xcb\xc7>\x90\xc2\xcaWT\xa9\xb1\n\xec\x80Lv\xdcV\x81^\xe0\x10\xacY\x0evuUs2`\xa6\x7f\x85\xf8\xc4\x88-\xc5\xc9W\xa2\x7fq]]\xf0.\xe2\xd3=\xb1\xb9\xe8\xea)q\n@~_P\xc14\xd0\x14w=\xb7\x06\x91\x9c^\xad-'\xde\x04\x84\xe5\x15c\x97\x88\x9f\xb3cOO\xac\xf8\x10\xc1h\xc8Z&\x85\xe22\xa8_>\x90!O\x9d\x95n\x00\x9e\xb9\xae\xc7VN\xe6\xb1S\xf5\xc2\xd5\xcb%\xec\xb0u\xb5\x08\\EP\xc1\xe6\x0bMI\xbd\x98\xe3\x82\xacB\xef\x1c*\xda=\xd6\xc3\xc0\x07pnr\x06\x83\x81`\x98M\xd1\x16NO\xb0\\\xa15\n\xf3\xd9\xd7\xd8\xc0\xd7\x92\x93\x04f:u\xf5\xf1\xcb@%N-I\x86\x9bj\xe4w\x9a,\x93n`\xd0s\xd6\x12\xd3\x0c\x0co\xca\xe2\x91cs\xe6g\xa7zr\x00F\x0cg\xee\xca\xe0\x96\xc3\xfb;\x10\xdd\xf2v\xc7\xb3\xbdG\xdb\xe2<x\xb0M\xda\xe2<xP/\x0f\xd68*\xd4\xcf\xcb<\x0c'5=y\xae\x17\xf8JY\xb0\xd7K\x81\xe6l\xe0\x8bs\xf1\xc0\x1fh\xe6\x9bl\xc4\xf08Uv?\x1b\xf8]`\x19i\xc1\xd2*V\x96\x18\xee\xcbg#\x06\xeb \x15+\x16\xef\x85\xa1\xddj<\xf0\xc5\xcb\x88\x05\xf0r\xbb\x10\x7f\xf0`H@\x9c\xa0\x83)\x0f\xe7\xd0=\xed\xff\x00\xbb \xe3\x90\xaf2\xc7\x9c,\x01\xcd\xab+\x16\x8b?\x9f\xab\x0e\xf7\xd4BY\x04i\xcf\xd5\x03\x14\"P\x83\xeb\x0f\xd1\xb1O\x88\xe2\xbbm\x07t\xfcC\x0f\xae\xa6\x97\xc2n\x96\xec\xf9\x07\xb7\x88G\x1b9;C\xf7V\x0c\xd4\xe8U!\xaf\x0eZ\xc4\xa5\x01\xd8\x8fW%\x02\xe6J\x89\x0b\xd46\x17\xc9m\xa1\xbf\xe2\x95\x02\x84\x0c\x07YT\xa5\x84x\xd0\xadB]\xc8\x96%\x97\x04\xbb\xc4\xa5\xf8\xa9\xd6\x11\xf5(\xc0\xd5\xce+\x1f\xd8\xd4\x07\x83[n\xa8z\xd4\xf1\xd5\x97]tinV^\x98;P\x1d\x88\xd8\x88\xcdx\xc83\x8e\x8e?\xf4\xe3\xec-,\xce\xfa\x04\x17\xf3\xd0\x1d\xf6\xaa\xe7j\\\xb7\xd9=A;\x1e\xb8\x03_\xdda=\xe5b\x93\xc6\xae\xbe\x9a{\xb2\xfb\xc6\x92\xbeA\xa4\xa3\xfah\xed\xb12\x8b2\xa4\nF\x89x\x9c\xcc\x89\xdc\xba\xa2\xa7\xfav+\xfdl\xda\x10\xd4\x15T\x8a\x16\xddF_*N\xc2\x8cx\xb3g\xe5\xf5\x1c1\x9d\x8fj\x88\x0f[A%\x02ge78\xc0\x7f#K\x99\xf3 \x9a\xc5\xe7\xec@\xbd(\xd2Q\xdc\xba\xe3lT\x97>)\x1b\x00\xb1\xd5\xc5.Ek\xfd\x12*5Z\x0b\xc1X\x1f<t\x1dn!\xbb\xfa\xe8\xbb\xb1A\x01\xba\xd8;\xe7'+\x7f\xfa\xfeu\x1c^\xce\x830\xb4\xc9r\xb2r\xd1\"7J\x8at24\xafJx$\xd9\xca\xe2\xa7\xe0\xa9]\xb5p\x06\x08\xd1R\x17\xec\xb1^\x18\xfb3>\xeby\x96#$\x8f\xf2%O\xd0\x01\xfe\x86%\xd0\xe8)\xef*]Q[\xf3\x80\x96\xb5\x13b\x82\xc6\xbe\x07\xdf{\xbf\x83[\xe9\xb7D\x93\x8e\x9d'\x1b\xcf\xea\x08\xc4\xf6\xd9\xd0Bv\x18uz\xb8\xc1\xfao\xa3E\x80\xb7\x9e\x14A\xe3M\xa3*\xca\x927\x95\xe0&\xf5 >Iyr&\x86.\xce\xdcp\x0bXK\x1a\xc9\xa0\xbc\xe2P\xad\x12{\x10\xd1]+\xb4\x8fvr\x19:\xc7\xd6\n\x92;\xf0\xf7\x02\x91\x8a\x80\xc7\xf0\xcf\x00Bn\xa4\x98[\x8fYP\x11\xf0\x04\xb4\xcb\xa2\xb3\xc2)N@\xc8f\xb6<\x1a\xc4|\xecO\xf0\xe2\xa7xA\x07G\xb6\xbd\x8ai\"\x11\xbd\xc7u\xeb\xab-\x93\xd8\xa6\x16F\x8a\xe6\xbc6:\x08\xca\xaa +\x04\x04E\xc5F\x91\xe9\x99\xe6a\xabY\xf2\x85\x07C\xec\xbamm\xeaO\x06\x1e\xc7\x04;\xfb\xe2\xe5\x8bw\x8d\xc5?\xb4\\Q\xd5No\xb1\xcb\xb2E\x12\x9f\x83P\x05n\x119w\xdf\xf0Y>\xe5 \xeb\xdde}\x96\x81\x1b\x90\x9e\xc4`>c\xc5V\xc9fy\x82*[\x90 \x05\xdfH\xe3\x9b\x17sT\xaf\x81\xd8g\xe5\xa7)j\xe2DZ\"[\x0e\xd2\xb2\x19\x8f]\xc69\xca5\xf8\xc5*\x0c\xa6A\x16^\x16\x0bf\xc1U\xfb\xd8\xe0\x80\xbd\xab'\x81\xfe-\x8a\xc1B\xb0h\x15\xba!\x1a\x9e\xc5\xd1\xdd\x8c\x9d\xfbQ&:\x91\xf2\x8c\xf9\xd2\x01\x81X'\xa0\xbf\x93\xbd\xc2\x8eL\xfd\x08\x0c?\x80\xb9\x91\x86\x83,\x9ek-7\xb9\x96\x11\xd3\x1f -\x10\xad^\xdc{\xfd\xe6\xd5\xa7\x87\xc7_\xbd\xfc\xcd\x97\xaf~\xfc\xf2\xf8\xd9\xf3w/^\xbd<\xee\xb1>\xfb\xd2\xcf\x16\x83\xc4\x8ff\xf1\xd2q+\xa1\xcd\xb5\xe0\x9e{\xee ]\x85A\xe6\xf4z*\x80o\xe3\xe7k\x93\xdb\x15\xbd\x10\xb5\xe8\xed\x86\x01>\xdd\x00K@\xbb\xbfJ\xe2\x13\xf1\x1ed\x0b\xe63\x1c6|v\xc0>\x83 \x12\xcb5\x8b\xd9\xc2\x8ff!z\x99P\x98\xce\xfa\xec.\x8b\x13\x16g\x0b\x9e0\x1f\xd6 \x88\x18z\x08\xe1Ozh\xd6\xb5\xf2\xd1<\x8a_\x82\x8d\xd54\x06/\xa3 X\x96\x06g\x80:\x85yO\x81q\x1a\x9aM\xf3$\x01\xa3\x03\xc0)\x81\x1c~t\xc9\xf2\xe8}\x14\x9fG\xea\xbb\x1e\xcb\xa3\x90\xa7)\x0b\xb2\x1a\x12\x07\x11;_\x04\xd3\x05\xde \xa4>PAZ\x8f%\xfc\xd4Of\xd0X\x8c+\x06\xbf!\xc1\xd2\x0d\xcd\xd1\xa9\x86\xc0\xd9\x13D\xd9\xc1]\x8b&\x86\xd0\xfe95\xd3\xa0\xca\x01\xd3(\x0e\xc2\xf1\x06\xfa\xddEo)\x96\x87\xd83\x0b\x9d\xa4\xd2`<e[b\xaf\xd0\xf8\xeb\xa2\xc8xk\xc2\x0e\xaa?Gb\x0b#\x87\x99\xe9\x8d\x8f)U\x82X\"\xa9Bg\xc2\xdcJ\x13<\xef\xb3\x8d!\xee\x94b\xc7\xd4\x9c\xfc\xe5]\x9c\xfc\x9dI\xd3\xa8|\xec7\xec\x04S0\x9e\n\x1bJ\xcc\xa5\xa35{\x89\x15\xf8K\x9b\x8b\x03\x02M\x1ajd\xa1\xd1\x80\xe8LZ?\xc5Nho\x90\x81V\xaaJ\x10,\x16L\xb4\xfe%\x18\x87\x82'Xy\x00\xe6\x04\xcd\xa2\xc4\xb4\x9bn\xda\xcc\x06\nq\xc6\x01\x0b\xd8\xc8\x8a\x94\x1fhQ\xd4\xb0\"Y\xde\xde\xdb\x86s\xd7\xf6\xde}W\xb3\x95UX\xccb\xf2\x94^(\xbe\xc1Vf V,\xc9\xef\xf5~-8\xe3\x8ax\x00UC7\x18w\x81hF%\xd9w\x05\x95\xeb\xdd\x05}\x8a\xaf*\x80\x0b\xae\xbb^\xb1kB%\x0e% B;`\xefb\x16\x9cF\xe0{H5\xd1\xba\xb9\xae\x12~\x16\xc4y\xaavW\xb9k\xe2~\xa9m\x8e@\x9c\xe3p\xc6\xa2\x18\xb7\xcfr\xb7\xd4\xa5\x01\xe4\x86y\xb7\x9c\x12x[\x8b\xeb5\xa7$\xe9$8i\x90\x9bd\x8e\xb2\x9dP\xdbci#\xd1,Ma\xdd\x848V\xd7%\xa5\x17\x009\x88\xc7f\xbd\xd2g^)\xd3\xad\xf91\xa8/\xbd\xdeI\x10\xcd\x9e\xc1\xd7\x9e\x8bs{\x9c\xa4\x84\xcfi\xb1\x89\xfaE\xc7\xbdb\xae\nw\xab\x88\x9f\xc5w\xd8\x01\xeb\x81\xd2O\x9co\x8a\xfe\xf7\xd9\xdd\x01\xfb,\x98!\x9a$A\xc6Y/X\x8a#&\xab\xf5`\x9e\xc4\xcb\x9e\x8e\x11\xaa\xdc'\xccO\xc9\xc2\x07wk\x00\xa9\\=\xab\x1feb\xf3(\x13u=\xcaD\xe3\xc0BPs\xab/VrFA\xbb\xea\xc4x\xc4I\x9c\x1ct\x87\x16\x1cb\x9a^\xea&KB\xa5\xd60\xd1z\x0e\xa4v\\\x0f\xb6J\xe5\\\xa4\xa2\xf0\xe7\xf2R_\x86ff\xe5vZ\xbf\x7fT_rM\x9e\xb0J\x81f7\xf7W\xbc(h\xdf\xf7\x04G\x92\x83:Z\xb0-\xf6r\xa1\xe5j\xbaz\xec78\xd5s\xca3i;\x93\x0f\xd4{\xf3\xe9N\xf5\xaa\xab\x07O\xf5Hp\xa5\xba\xac\x9bz\x1a\xcc\x1a\xe8-[6\x1c\x82Zz\xe9\xaf\x1a\xd4KD5\xeeLm|\xa5\xa7t\x8d5\x9a\x1a\xbaN99b\xb9\xc2=\xbe\xbc\xe9,R\x02-\xb5|\xccH\xae\x9b\xb0\x15o\xf4\xe6_w\xd4\xa0\xe9\xa1\xfc4\x0dNA\xa4\xd9\x0c\x99\x8axe\x88N\xb8\xeb\xab\xab\xd1\x19\xb7\xa2g\xe5\xc2\xb29\xe3\xae\x1aAD\xae\xa9Q\xa9\xea\xc7P\x9c\x1c\x81\x9c\\\x90%\xa5\xe7\x1f'\xc4\xc5\\+_E\xf1S\xd7\xa2Ov\x99\xe4\xf11O\xbf\x8cgy\xc8\x0d\xb1$0\x17\x15I$J \xa7\xf1\xf2$\x88\xb8<uRR\x1f\x00\x94\xa7\x14\xee\xbbu\xc3\x02\xb1M8\x02\x0fb\x00N2(;\xc1\x0eX\"\x0e\x15\x06D\x94\x07\x97\xba3@\x9d\x06\x9b\x1d\x0b\x94\x1d\xc8/\x01\xe8,\xe0\xd9\xfb\x88\xc01\xb5\xb4b:\x1eT\x14i\xb2n\xbbd\xd7\xd8\xf7\x9b\xb7 \xdb\x9e\x1fQ\x87\xce'\xfblK\xacw\xedhT;u\x1639\xf8\xd2_\x81\x01\x96^\x80\xde\x01\x92\xd6#\xa8b\x98\x07\xe7A\xb6\xf82\xc7\xa8(iI\x90\xad\xd7\xae\xb2k\x08#\xc5|;[\x1e\x08$]'\x12\xdb\x97\x03\xfe\xf3\x1b\x8ev\xa2\xbc?\x90\xbeS\xf9K~\x81;\x9e\xeb\xc4\x80\xbf \x08\xc1S\xd1\x90\xd5\xfc\x8e\"\xd5V\xde\xda\xabh\xb3\xb2\x9b/\x1fiL\x85\xa1\x03>\xc6\xb2\x12\x14\xc9\x80\x8f\xb2\xf8*/\xbd\xbc\x88\xceb4\xdcz\xed'>\x84u\xff\xb2\xf0\xb1\x9b\x15\xac\x84\xf4\xf4@\x124\xf0\x16$\xb6\xae]\x97\xd8\xbbD\xd6\x83]#+(\xb2\xf6\\\xf2X\xeb[\x95\xba\xd2v\xa4\xb2\xfey\xf3\xfa\xb7\x1e\xc0\xb5\x05_\x1bj\xa2\xe6\xd8[\x0bd\xb1^\x8d\x82\xff/1\xe9\x15\xbds\x04\xe5%\xa61P3L\xcdU\xf0}\xcf\x15E\x9c\xed\x8e\x9f\x82\x1a\x89\xa6\x0e\xb5\x1b\x81\xa4\xb9\xa5'\xbb\xb7Y\x9cp6\x8b9zc^\xf8g\x1c%\xf3\xc1L\xc9\x1c\x06\xecK\xff=g\xf2*//#\x8c\x94J\x85\xfa\xe6\x1b\xa4\xday\xf7|\x11\xa7\x1c\xa7&\x05\x99\xb0l7\x1d\x10\xc1k}I'\x0b\x14s\x0d\xed\x13\xba\x0d-\xb6\x84\x17\x19\xaaM\x07A\xaa^\xf5\xb8.\x85\xbbd\x1f$\xd8A\x8aB\x91\xe2\\\x9e\xd5\xa2\xa2\xa8\xc1e18&\x88*\x81\xdf^,\x979\xc4\x83/\xbeZ\xdec\x9a\xc7a\x18\x9f\x07\xd1\xa9rx\x10\x80S\xaa\xbb\xac\xcf\x02T\x1a\xdc\xedy\xacw\x17eL\x83\xbb\xe6\xd8\xe1\xc0%f\xef-\xff\x19(#\xf0\\\xe8\x0e\xe6A\x98\xf1\xa4\xe5\xa8 \xc7\xbba\xdc\xdf\xaa\x1da\xeaZ)Y/\xd7e\xc0\x07\xac\xa7]\x19\x04\x81\x04^\x94,J\x1d\xb0\x9e\xf2\xeb\xd0c\xa3\xe2G\xc0S\x14\x97\xe1\xc0ss\xe0l\x1e\xe7\x118\xa5\xbe\xab&E\x03\x7f\x16\xb3y\x10\x15a\x83\x04\\Q\xf0\xaf\xe4_\x853 \xbcC.\xc5\x1a\x0dp\xd6\xef>\x96\x9dD\xff\x13'\\J\xeaf\x83\xbbuw\xca\xb7\xbf\x1b\xde\x1aE\xf3\xd6\"\x0euo\x9c]tH\xa4d\x13UH\xa0\x1a\x12X\xaed\xa7\x97+)\x0bEQ\xe7\xad\xc8?\xeb\x02(M\xb6y+\x13\xa4W\xacB\xab\xa0\xd0b\xd7\xae\x07\x00/\xe7\xa9:#]>\x199\x8fP\xc4\xfd\xe8\xa1[\xedy\xe4<\xd8\xdb\xead\xe0Y\x1e\xa1\x87\x86\xafC\xe9l\xf0\x91\xeb\xf4\x8a\xd8\xe0\xa4\xad\xf3\xde\x96\xc5\x8a;r\x86\x0f\\\x8d\x8a\xaeq*\xb0\x1d\x084ER6\x8e\xd1c\xad\x16\xbb\x1c\xee\x14@4\x81:\xcdJ\x1c]~\xd7 \xc0\xcdV\x86\xf7~\xe2\xfc\xca\xf6\xd6\xd5Q\xea~\xe2\xfc\xd4?\xf3\xd3i\x12\xac\xb2\xab\x99\x9f\xf9\xee\xbd`i\xc2\xf2\xde\xf8'G\x17\xdb[\x9bG\x17{\x87\x93{\xa7\xf5\"\x01\xb69\xfe\xc9h\xd2wG\xf7N\x97\xe6qk\xdc\x1b\x08Bt\xaf7\xa1\xe1]\x05h\xeaGA\x16|\xc3\xbfJ\xc26a\xd5\x99\xb4\xb5\xf1\xe4\x8e!\xaf\x95\x89cA\x8fRKw\x12\x10j\x05\xfd\x010\xec\xaf\xe6\x0e\x1foM\\\xf6\x94m\x12\xee\x97\x9d\xdc\x95&\xe7N\x04\x12\xc0\xa5\x9fM\x17N\xe0\x8ad4\xd9\x11\x873\x96\x0c2\x9ef\xe8\xb6\xa4\xe7\x9f\xc4y6: \xfd\xe8\xbd\xd86r\xb8\x1d\xae'V\xbe\xb3\xa6\x15e\xb9<\x1e\xd8\xec\xff\x1f\x0e]#\xdci\xc3f\n.\xa2\x07Y\xfcE|\xce\x93\xe7~\xca\x1dpG\x02\xfa\xa3\x03&\x90\x94\x8d\x0c\x1f\x1f\x96\xe5\x15\xaf7\x84]\xca\x9e>r\xb6\x1f\xda\x96\xaf}z\x95\xb0\xdbI\x1c\xeeVG\xb3\xe6\x1a+\xbb\xb7W\x17]|/\xa6\xe4`H\xdelF\xde\x0d$g\xff\xbf1y1\xc7\xf5 \x8e\xba\xd9\x8cw\x03t!d\xb9\x96\xe5\xb8\xbe\xa2)\x84\x13\xeb\xc1r\xa3g\x8f\xf2\xaf\x0b\xcb\xea\x9aCh\x96\xf5\x80\xc5\x03\x19\x94@\x814F\x12\x18 \xd1\x90\xe2y\xa34\x93\xa8\x0e\x96\x91hd\x91\x0d\xa6\x0b?y\x969[\x16%L*\xcb'N\xe4\xb1\xa1\xb2P\x82\x08!\xd9 \x0d\x83)w\x1a\"\xb0\xe4c>\x01\xc5wU\xd8\x7fm\xda\xbb\xfd\xb0\x1d\xc4\xf6cl\x0c;\x9a\x14\xdf\x93\x98T,2\xe9\x02\xea\x80\xc5\x82w\xf7\xd8\x06\x98\x01D\xec\xe9>\x8b\x95Ux\xf1\xa9\xeb\x8e\xe6\xc1^\x9d l\xc1\xbb\x9b\xd0g\x8e\x08\x02\x97\xb4\x92\xf6\xc5b\xe3h[\xbf\xc4Ks\xb65>\xa1\x10\xb97>:\xcag\x0f\xb7\xb66\xc5\xff\xf9|^\xbf\xf4\x96\xa8B[;Xhkgw~t\x94\xcf\xf96\xfc\x9c\xf3m\xf1s{k\x06?\xb7\xb7\xcc&\xe0\xc6\x00|fg:\xc6\xcf\x9c\xd8>\x07\x86~\xe3\x9f\xb4t\n.\xf49\x07#\xbd\xd1\x19\xdf\x85\xe2\xb3\xf9|\xe2\xfe|\xfb\x03y\xc5Oo\xf7d>\x9f@\xc2\xd4\xfe\xa1T~\xa8\x08\xe1sU\x84\x01r\xc5[\xef\xa0V!T\x9f\x99\xf3-\x8e\xff\xe6\x93\x03\x15\xe1\xc9\x91\x9d\xde\xde\xda\x9a\xc9V\xc7\x18\x93)\x9f\xc8\x95~\x85A\xe2\\k\x1b=\xf7\x93\xfaY`\xaa\xf5r\x1c\xa8\xae\x1e\xf4\xf0\x1a<(\x08\xa3z\xfb\xb5~\xcf\xd9\xbe\x0c\x8c\xe0\xc0\xe8\x9c\x83\xfdr\xa40\xe8)F\x8a\xec\x9d\xf6\xae\xbb&\xb8\xe4*\xe7p_t<\xb9\xee2\xde~hc\x08m\xcb\x98\xf2%/G\xdb\x1b\xdf\xfdo\xbf\xf3\xbb\x93\xde\x8dF\xd6\xbc\x9d\xa8\xdd\xdd \x1c\xb1o\x14,\xbe\x0f,\xbe\x0b\xce\x1ez\xbd\x1b\xdd9\xd2h\x9c\x058\x06\x0b\n\x87\x9e\xf1\xd1\xc5T\x1c\x8bf\xbbG\x17\xb3\x87\x9bG\x17\xf3\xdd\xa3\x8b9\xbc\xcc\x8f\xf2\xad\xa1X\x19\xf9\xd6po>\xb9w\xda\x00\xc2u\xc9\xc3M`\xed\x80\xd0\x1a\xa4\x82 \xa9U\xd0\x0c<\x96\xd4a{} \xdew\x9d\xea\xd7{\x7f\xf8;\xbd\x11\xeb=\xab\xad\x9b\xde\x1f\xfe1:\xf9\x8f\xd3\xc9\x7f\x82N\xfe\x1f\xe8\xe4?I'\xffC\x91\xec\x1b\xc9\xff\x88N\xfe\xc7t\xf2?\xa1\x93\xff)\x9d\xfc\xcf\xe8\xe4?-\x92\x9f\x1b\xc9\xff\\$O\x8d\xe4\xbf\"\x92\xeb\xde\xf1{\x7f\xf8\xefD\xf2\xccH\xfe3\"\xb9\xee;\xbe\xf7\x87\x7f\x96N\xfest\xf2\x9f\xa7\x93\xffg\x91\xcc\x8d\xe4\xff\x85N\xfe\x17t\xf2\xbf\xa4\x93\xff\x82H~a$\xffE:\xf9/\xd1\xc9\x7f\x99N\xfeW\"90\x92\xff5\x9d\xfco\xe8\xe4\x7fK'\xffU\x91\xfc\xd2H\xfe\xf7\"92\x92\xffG\x91\xfc\xcaH\xfe\x9f\xe8\xe4\xbfF'\xffu:\xf9o\xd0\xc9\x7f\x8bN\xfe\x0f\"96\x92\xff#\x9d\xfc\xbf\xd2\xc9\xff\x1b\x9d\xfc\xbf\xd3\xc9\xff\x89N\xfe]\x91\xfc\x95\x91\xfc\xb7\xe9\xe4\xbfC'\xff]:\xf9\xff\x14\xc9\xb9\x91\xfc\x7f\xd1\xc9\xff\x99N\xfe/t\xf2\xdf\x13\xc9\xf5\xd8\x01\xbd?\xfc}\x91|i$\xff\x01\x9d\xfc\xa7D\xf23s9\xfc\x9eH\xf7\xcd\xf4\xbf/\xd2\xdf-\x8c\xf4\xff*\xd233\xfd\x1f\x88\xf44\xad\xa7\x7fK\x93\xe5oi\xfa\xfb-Mh\xbf\x05\"n\x90\xb7o\xff\x04\x9d\xfc'\xe9d\x80\x80A\x0c\xbf\xfd3t\xf2\x9f\xa3\x93\xff\x02\x9d\x0c\x84\xd6\xa0\xa8\xdf\xfeY:\xf9\xcf\xd3\xc9\x7f\x91N\x06\x12d\x90\xe5oij\xfd-P&\x83Z\x7f\xfbW\xe9d \x13\x06\xfd\xfd\xf6\xaf\xd1\xc9\x7f\x83N\xfe[t\xf2\xdf\xa6\x93\x81\x04\x19\xf8\xf6\xed_\xa7\x93\xff&\x9d\xfc\xbbt\xf2\xdf\xa1\x93a\xcd\xfe\x9a\x91\xfc\xf7\xe9\xe4\x7fH'\xffc:\x19\x16\xe7\xa9\x91\xfc\x0f\xe8\xe4\x7fD'\xff\x13:\x196\xfb_7\x92\x7f\x8fN\x06\x1e\xc0X\x98\xdf\xfes:\x19\xb6Xc\x07\xfb\xf6_\xd0\xc9\xff\x8aN\xfe7t\xf2\xbf\xa3\x93a\xfb66\xb6o\xff%\x9dLo\x9a\xdf\xd2\xbb\xe3\xb7\xff\x9eN\x86\xed\xe47\x8cd\xd8N~j$\xc3v\xf2\x9bF\xf2\xff!\x92\xdf\x1b\xc9\xff\x89N\x86\x9d\xe0\x0b#\xf9?\xd3\xc9\xbfO'\xff\x01\x99\xfc\xdd\x1f\xa3K\xc3.\x13\x1a\xc9\xff\x85N\xfe\xafd\xf2w\xbfC'\xffq:\x19H\xaf\xc1\x8d|\xf7'\xe9\xe4?M'\xff9:\x196\x01\x83\xa5\xf9\xeeO\xd1\xc9\x7f\x86N\xfe\xf3t2\xd0o\x83I\xf9\xee/\xd1\xc9\x7f\x85N\x06Bm\xf0\x17\xdf\xfde:\xf9\xaf\xd2\xc9@c\xdf\x18\xc9\x7f\x83N\xfe[t2P\xcd\xc4H\xfe\x9bt\xf2\xef\xd2\xc9@\xa8\xdf\x1a\xc9\x7f\x97N\xfe\xfbt\xf2?\xa4\x93\x81\"\x1b\\\xc1w\x7f\x8fN\xfe\x07t\xf2?\xa2\x93\x81\"\xbf3\x92\xff)\x9d\xfc{t2\x90\xde\xccH\xfegt\xf2?\xa7\x93\x81\x98\x1aL\xe1w\xff\x82N\xfeWt\xf2\xbf\xa1\x93\xff\x1d\x9d\xfc\x1f\xe8d\xa0\xb1\x06\x0b\xf9\xdd\xbf\xa4\x93\xff5\x9d\xfco\xe9\xe4\x7fO'\xffG:\x19H\xef\x8f\x8dd \xbd\xe7F2\x90^\x83\xc7\xfd\x0eH\xaf\xc1\xcc~\xf7\x9f\xe8\xd2@z\x7f\xdbH\xfe\xcft\xf2\xef\xd3\xc9@L\xbf1\x92\xff\x0b\x9d\xfc_\xc9\xe4oav^\x98\x1b\x0f\xc0*0v\x9e\xef\xf0\xb8fp.\xdf\x01\xb3\x14\x9b\xe9\xc0X\xde5\xc9\x1b\xec\x1bi\xa9\xd9\xb5)Hi\x8f>\xd7\x16rw\x12\xb0\x11\xce\xd4F`\xa3[\xa9p\x03\xc9Z=\xf6\xa3\x12;R\x96\xdf\x84\xc4M\x9am?l\xf7\xbcG\xabT\n\x0b\xc5}\xd0+x\xba\xea\x04u\xf4\xfa\xc0AA%\xd5\x10~\xa9\x86\x80\x00T(\x87\xcd\xba\xc9a)\xb5\x01\x18Tlmm\x1e]l\xcf\x8f.v\xfc\xcd\xa3\x8b\xfb[G\x17\x0fN6\x8f.v\xb7\x8e.\xf6\xc4\xcb\xde|\xd2\xbfw]%\xa3\xeadt\x93N\xfa\x9b\xdfL\xc6\xcf6\x7f{r\x05\x7f\x7f\xbe\xed}\x80\xb4\xab\xf1\xd6\xe6\xa3\x89x\xc5L\xf9\x02\xa9W\xe3\x9f\xe0\xcf\xad\xcdGlr\xef\x9a\xdd\x8f\xd0Pb-\xb5O\xa1\x939:\xba\xf0\xa7GG\x17'\xc3\xa3\xa3\x8b\xd9\xde\xd1\xd1\xc5\\\xfc\x01\x01\xab\x008B\x1c@\x8e0\x07\xa0#\xd4\x8f.NP\xe0\xba%\x05\xae\xbbsvt\x94\x89\xea'GG\xa2\xae\xbf\x05r\xd9\xf9\xfc\xe8(::J\xa0\xd0\xf6C\xfc\xf7\xe8\xe8(\x1f\xee>\x14%\x86\x0fA\xf9 \x1a\xc2\x7fC\xfc\xb7\x8d\xffv\xf0\xdf}\xfc\xf7\x00\xff\xed\xe2\xbf=\xfc\x87mn=\xc2\x7f>~\x01;\xf7@\xfc\xdb\xd9\xda\xda\xaa\x11\x18\xd46\xf5X\x9fE\xac\xcfz\x16M\xd2\xac\xdf3\x17\x1cH\xa1\xb7\xf7\xe4\xb0\xf7Nh\xa5\x91\x98j\x01\xd4\xb9\x80\xd4|\xf7\x08\xa5\xddG\x17\xa6\xea''5Q\xaak\xa0\x18\xa9}\xd0\xda\xf4\xb3\xcd\xdf>BA;H\xdaQ\xd4~t1\xe36u\xd3\x1az\xad\xf0Zz-\xd0\x18\x8d;\xf7k\xae)\x98\xfcB\x0d\x96S\x8a\xa4\x95Vt\xda\\t&\x8b\xae\xa9>\xb8\xb2\xa9\x12\xdd\xba2naU\xc6\xcd,\xca8R\xf5\xc8R\x8f\x85\x9d\xf4s3Z?wV\xd1\xcf\xd1\xed\x89\xbc\xda}\xcbe\xa9b\x19OQ\xa3\xa7\xe0\xdf\x17`\x03\xc5\x95s0\x9a]\x85\xe1\xd5\xf2*\xe1W\xe9Uvu\xc6]\xf7@\xaa\xef\xc6\x89\xc7\xa6\x1e\xeb\xfd\xb0g\xaa\xff\xd8\xcah\xe8\xb3\xab/\xbe\xb8\xfa\xf2\xea\xcd\xe1\xd5\xdb\xabwW?:\xac5\xc4\xfalnk\xac\xec\xdf\xbcK\xffT\x8d\xb6\xcf\xf7<X\xef\x9f8\x07\xa3\xe1\xdbwW\xdb/?\xbb\xday\xf3\xd9\x95s\xb01\x1en\xefL\xdc\xa3\xa3\xd9\xbb_w\x9d\x83\xfd\xa3\xa3\x13 \xe3\xc7\x13W\xaf\x93fW\xdb\xd1\xecj'\x99U\xead\x8b\xa2\xce\xb3\xcd\xdf\xc6:\xb1\xc7\xce\xb4\x81\xddHG\xa56\xafe\xb7\xcd\xcb\xcer<\xaa\x9b\x89H\xcb\xd0\x9dz:\xb2\x1c\xc3vs\x8dz\x8f\xd1\x9dt\xf0\x8d\xe0*\xb6<\xe5\x17}\xe6g\xfe\xf11y\x87w\xe1\xa7\x8b\x11\x18\x1c'\x9e\x91\xb9\xf4W\x90\xe7\x04\xe0\xd7\x95\xb0qA/<\xb2\x81J\xee\xf5\x19\xb3G\xb4y\xdd\x83Gt\xb0\xee\x07\x8f\xea\x0c\x9b\xe4\xcc\x1e\xd5\xcd\x8cr\x99\xfe\x88\xbcD\x92\xdaM\xd16\x87\xe6\xc8\xc5\xd6\xae\xb3\xa8\xc0\x9d\x92\xd61pG\x15=\xa6\x87\xdcO\x1c\xf71\xeb\xf73\xf6\x84E\x8f)\xf6WA\x82\x93\x97^q\x82y\xe6$h\xc19\x1eZ]\x86\x95o\xa9\xee\x07\\\xf4\x01}\xb6\xeb\xc9\xd2.\x0d\x9c\xb7\xeb\xe9\xa7\x1cl\xf1\xaa\x89\x0b_ \xa1_ML\xa1d^5\xa0N\xd7\x9b\xfb\xe1\xf6\xa3ka\xbc\x86\xe2 Z[\xe5!\x847\xfa\xf9\x07\xaf\xba&\xae\x8b\x95\xdb\x86\xd5\x81\xc2\xca\xba\x82\x1e\xb1r\x87\xb6q\xdb6N\x1d9X+\x1f)w\xd5\x83\xfe\xc1\xf3\xd2S\xfb\xd1\xe4\x87\xf7L\x9eB\xf9V\xb6Ys\x86\xad\xf6\x9eS\x08\xdeE[s\xce\x89\x90\x99&S\xa0\x8c\x05~\x02\x9c\x01\x9a\x10\xceK\x85\xfd\xbd\xf1\xd1\xd1O~8\xf8\xa4\x7f\xe0\xb8\xe3\xa3\xc9\xcf?\\M\xee\x9d\x02%\xff\xe1\x9d\x9eV\xac\xfa\x99\xab\xc2\x00\xd8\x1d|r\x004\xfd\xc8q\xaf`\x05\x0d\xfa2a\xe2BK?\x1c\x0e>9\xc0\x1d\xeb\x87\xd7\xa6\xec\x1b\xce\x06\xd8t \xea\xa6l\x10\xc0\x14\x97\x1d\xb0\x15\x18A#\xe3\xef\x17\x0eG\xd9Z\xa8S\xdc\xb5~d\xbdk}o\xfc\x93\xc1\xa4\xff\xc3{\x03~\xc1\xa7N,z\x10\xc35\xb1\xf2m\xf0\xe2\xf0\xf8\xf5\x9bW\xef^\x81\x91~\x0f\xac\xb8{\xe8\xc8\xd1I\x93\xa9{<\x1c\xa0E\xd3\x88\xf5z\xd7\x85\xc4F >\x18@`\xd6k\x8c\x14\x91~\xcf\x1d\xf7\x8e\x8f\xa7q\xc27\x7f\x9a\x1e\xa7\x0b?\xe1\xb3\xe3c\x9b\x95\xfdu\xa5\nv\xdf6\xed2\x83\xf6s[7\xb0\xa9\xad\x01\x88\xcb\xc2\x87\xcd\xe3\xce\x1de\xde[!JcN{\x05)\xe9\xd2\xe6>\xcb\xd8\x01\x1b\xb2\x11l\xda\xd7\x05\xbf\xa0\x9e\xc4 \xeb\xf88\x8cg~\xba8\x16{\xfdqqg\xe8\xf8\x988v\xb5\xb8OX\x17\xb9*PR\xf0\xa8\x02#\x983\xc7pZ\xcc\xb4\xf3sf\xc0\x8fULN\xf7\xd1\xa6\xb4\x98\xee\xa6@J\xb2VPx\x15\x86\x95.\xbeP\xd8\xfd\xde.\xf0\xbf\x7fx\x16\xc6\xe7\x07\xd5+>0\xc4X\x1b\xf8\xed\x0e\xb4\x01\xcb\xda\x06\xd9\xe4=\xacu\x9c\xe5\"\xeaW\x17#rdC\x8fEb\xe8\xfbh\x8d\xaf\x89\xd82i\x9d\x9c!\x83pS\x02\xd1\xc6\x96\x8c'\xb7\xc4\x88\x0cw(\xf6\x18\x83\xd7h\xcc\xd8*\x0c\xa6\xbc\x0d\xf2\x9d\xd0\x8bf}\x13D\"rN6\x9c\x88=A\xc7\x11N\x04\x9e\xa0\xd4\xd5\xd4M6\x14\xebm\xb0\x8a\xd1WD\x89\x8f`\x1e\xef\xb1\xcd\xcd\x02H\x1e\xdb\xba\xd6\x9e[@\xe9\x174z\x1c\xbb.\xba\x1dG\x93\xf1\xb0m\x0b\xba\xd5\xa1\x146\xaa\xd5\xb1\x08rW\xb91\xf6\x11\xba\xd2u5\x9b\x80\x8d\x01\xb0\x91\x15\xb0\xb1\x04\xac\xd3\xefkH\x12a\xec\xd0\xb1\xf8\xf0\xc4\x85\x08P\xe3X\xc0[F9j_\xdb\x0d\xc3\xddn\x1d\xae\x0d\x89\x12\x15\xf9\xcd\x95G+\xdb-\xa1\xebr\x01\xad\x14\xc9\x8e\xdf\xd2S\x1d\xd9\x9d\x1e\x9e\xe8\xd1\x81\x1b\xf0\x9bQ\xbe<\xe1\x89\x96\x90\x02\xe7\xa9%\x9c\xc4q\xc8}\xe9\xf4M\xf0\xa6\xc7\xc7@\x89\x8e\x8f{2\x10\xc0Hs\xce\xf7}\xceFe\x1d\xc0d\x9c\xf2\x0eb\xfc\x8f\xdc\x07\xdc\xa1>f\x1f\x1a\x16a\xd9\x0fz\x05F\x80\x8c4e\x03\xc1\x034\xeeU7\xdeHnk\xc8\x8a\xc9\x8d\xf7fK\x8f\xb6{7\xae\x8eI\xe5\xdc\xfdV\x90X\xa6\xa5(\x80{\x10\xe9u\xef\xac\xe2w\x9d\xbcI\x06\x8e/b's\xa9\xfa\xaa\x8dT\x11\xb8\x1d\xa2\x05&o\xaa\x05\xe0{(j\xec\xbb\xfe\xc8q\xa4N>\xe6\x13\xb8|\x90wu3k\xa6\x9cI\x8f\xbc\xbc\x00\x87\x95\xf3\x0ea'a\x07,\x1f\xa7\xc0C\x87\x82\xc1\x0c F\x9a\xb1\x1bH\x03w\x87\xf5[ \xf2\x02\x84!`AL\xd8~\xd4*A\xb2\x12\xc6\xd8F\xa3\x87\x15&\xe6\xce\x1d\x96\x8d\xb7&\xe3\xed \xde\x19\x14\xef[\x82\xbd\x13/\xc3\x89\xd8\x82\x8ao5\xdd`\x8e\xa4\x13Q\x88\xb6\x16QAB\xaf\x0d\xb5\xa1qwF]\x8d\xa3\xa064%U\xdbm0\xc4\xaf\x0bd#\x80\x99\x02\x1d\x91n4\x8d\xe1\x0b\x04K\xcd\xe4)\xdbg\x1b\xb9y8,\xce\xf4\x85\xdf\x98\x8dZ\xfc\n\x10\xb0\xf2\x8a\xc7\x03\x96nnZ\xa5\xabs\xd1\xbdqjq}=\x85`\xa18\xbbs\xc1G\xc0\x166\x9e\x8f\xb7&\x02\xb97\x1c\xf1\x06b\x92\xd2\x93\xcdFS\xac\x0f\xe8\xdec\xd6\xef\xa7\xec \x0b\xad\xbdZ\xb1}\xe6\xa8\xae\xb9V\xe7i3\x10\x0d\xaf,\xb9\x0b1IV\xaf\xde\xc5\xd0l\x04\xa5\xe6\x90\x04B\xdco8\xab\xe6\xd1\x8aG\xc6}\xb7\xd3\xbe3\x86Q)\x1bBQ\xe7.\x94\\\xb2}\x96;3\x8f-<\xb6\xc2U\xe1\xb13\x0b\xc5\x04\xba\xabwy f\x12\x0b\x8f\xcd<\x16\xb0+y_\xeeL,\xcae\xf3\x08\x1afP\xd5\xba\xc1\xa1\xad\xf5\xeai}J\xea\x07HT\xd1\xacu\x86\xbc\x01\x8b\xd8~\x04\xca:\xf3\xb5\xa2\xac\xe4\xd5o\xbd\xc3\xfa\xc7T\x7f\xbb\xf1x\xb7\xf4\xad\x9b\xf2r\x16\x8d\xe0C\xea~\x9fH\xaf\x97\x07b\xbd\xd5\xead\xa1\xeb\xa9\x8c \xbfLy\xd9\x8a\xe7ft1\xa6\xb1G\x91\xa5\x15V\xf0Gb\xab+\xdcT=a>\xdbd\xc3bM\xe6\x95\x83\\\x15\xd3\xfb\xfdH\xa2\x90H5\x9b7\xc6!\x17L\xe0\xe4\x1d\\M[\xf8Z\xc5\xd6\xde\x90\x93\xb5n\xc5u1\x9ade\xb7\xa9x\xa7\"\x9d\xd2\x1c \x14\xaa\xab?Sl\xbf\xaeq\x08ew\xea\xcdL%\xdfTO\x9f\x9b\x9c\xc1J\x0f\xac\xfaLy\xf0\xac\x9b\x97\xcc\xaa\xa5\x12\xff\xb2^b\xa1\x97\xc0M\xbb^\xe4\xec\xe6\xc2S\xc5\xa2,=v\xea\xb1K\n\xffO\x04+\xe2PG\xa1c\xc8\xc9\x88\x9cs\xb6\xcfN\xd8\x01\x9b\xb1\x11\xcb\xc9\xba\x87l\x9f\x1d\x17%\xa86.\xc4^/\x1a:\x17\x9c\xcd\x8a\x1d\xb0\x05\x1b\xb1sW\xfc\"8\xa6\xb7\xa2\xb8h\xf5P/~h+\xfe\\5|h.\xe7\xe7bK\x0fA\xd7e\xaedX\xa5!\x9cb\x8a\x8d\xd2\\l'\xe0+\xc5\x83A42>\xc5\xf76.\x8a\x06/A*x\xa964\xd7c'\"e\x8a\"\xdb\x98\x98\xb5\x11\x0bd\xeay%\xc3\x1c\xdb\x86\x13\xb1;lN\x0eM\xcc\xf6{\xb6\xcf.@\x0c\\\xb8\x96\xe9\x1d\x1f\x9f'\xfej\x05\x82jb\xa2\xc4\xf3\x8c\xed\xb3\xb7Z\xb5\xac^\x8d&w\xef\xc5\xb8\x9e5\x9d\x07_\xb1}\xf6\x9e\x1d0>\x00Wr \x11mp\x9a\xfe\x9a\xed\xb3g >-\x8bg4[d\x05\xf6\xa9\xf3\xcac\xaf\x15\x1c/\xdb|^\xd3l\xd0\x06L\xaac\xb6\xee\x9b\xd3w\xfd\xad\xd1\xd8\xea\xe4\xc1o\x9b6\x96\xd9\xdd\x1ev\xf5\xe3zv\xcbf\x1du.M\xb7\xef\x80\x02\xfel\xe6\x80w\xe1\x1a0\xc4\xe3k\xf4\xcd\x9f\xcd\xc0\xabP\x99\"\xb6D4\xca\xf0\x0d\xfb\x8b\xa0jj\xe1\x93\xf0\xad\x037\xba\x99\xae\xa6\x13O$w\xd3\xc8\xed\xb4s~\x9f\x8cX\xfb\xb7\xec\xbae\x00\xbb\x93\xb5}\xc2\x8a\xd06/I\x86\xb9\x93d\xf5\xb6(7\x17\x14\xdf\x90K\xfc\xafo\xf8\xa9L\xaf\xb7\x13\x9a\x1b\xbb\xe0\x01\xb6\xcd\xed\xbf\xd8\xa3?E o}\x93\xae\xf0\x03\x9f\xf9\x99aiZa\x05\xc0\xa3e#+\xf0\xa5\xbf\xa2\xf8\x00-\xd8\xfb\xf2\x84\x1bM,\xf5\"h\x97R/r\xaa\x17y\xcb\x0dn\xe3\xb2\x92\x0f\x12\xf0z\x91\x93J\x11\x10\x81\xd7\x8b\x1c\x1b\x8c\xcf\xa7\xf9|nv\xf8\xbc\x066\xffG\x01?\xaf\x17:,\x9c\xaa\x15\xeb\xde\xe2\x9b\xea\x02\x18\x83\x03v\x88\xfb\xc2\xabyg\xd7k\x8aX'\x1e;\xf4\xd8[\x8f=\xaf\xe3~z\x1e\x80\x0f4R\x8e\x05q\xdc\xceGF:\x93; \x1f\x9c\\f\xfc\x0bd\xf77\xc41P\xfb}u\xc50\xff\xd5|\x9e\xf2\xac\xcc\xc7\xdf\x8d\x1c\x88x8x\xa3:\x01\x00{\xd2\x1b \xfe2\xcbCG\x8f\xe9\x8e\x16:\xcb\xb6\xden\xbcu\x04u\x8f1\x18\x0c\xbce\xaeKl\xfe\xf0\xb5\xb9\xf95H_Y\xd2\xcf\x1a{\x178}\xee\xb1>%y\x86\xda\xb3\xc6\xda|\x10\x81Oq1&x\x03O+K\xe53\x1c\xc2\x9d\xe0\x0fK\xf3KK\xa7/\x9b?\x8b\xfa\xa0~\xc5(\xa9R\x7fA\xd7W\xbcZn\xa9vj\xaf\xf6\x0c5\xfd,\xb4\x8b\x8b\x80/sD\xfb)x{\x85\xb3\xde\x86\x12R\x00\xbb\xfa\xac\x15\xfb\x14\xfb\xf6\\\n\x1b\xec\x9f{U\xb4\xf5\n\xe0aa\xd8\xd8\xd5>\x9bz\xecyy\x14\xb5\x7f\xf858\xb4{\x0f\x88\xf8\x1eC\x15\x94\x0b\xb8\x91!|^\nm<\xf6\xda\x02\xde\x13\xfb\x8a.\xf9\xf8\x0b\xe55P\x0cJ\xfe\xb0J\xaf\x99\xb6\xce\xda\x94\xcf\xed[\xf4\xba\xec\x9c\x0c\xe1\x04\xd3K\xcb\xaa\xb8\x195\x82\n\xa5\x0e\x0d\x8e\xfb\xfdl\xc2\xf6\xc1\x86\x9e\xd7\xee\xa2\xb9\x1fC\xc4\xf5q\x86\xd786\xbe\xf6\xb0\xecv\xb3\x8f(\xf1\xc7\xd0\xe4xn\xe9\xb0\x8f\xf2\xde\x94\x02\"\x08@\xd8\x1d\x16\x9bp\x9c\x82f\x8e:\xcb\x0b6hJ\xf2\xffb=\xcc\x05\xe1H\x9c\xcc\xd5tC\x1b\xa1\x95z\x14\xd1\x8a\x04\xe34\x7f\xccV\x0dJ\n\xc1:M\xc7+\x8b$\x7f\xc3 A\xc0\x00^\x9aG\x9aA\xdb\xcc\xed\xa8\x95\x10\xdfX\x80\x190E\xc1\xc47`4\xa9\x0c\x87R4\xba \xa8\x98\x12\xf0o\xd4\xbc\xab\xa6\xba`-U\xf1P\xea\xdf*\xa0\"\x18\xb9P\x1c\x9eV\xec \x9b[!s\n\x1a\x10\x05\x1f\x8b\"\xe4\x12,\x07g\x16\xf0\xf9n!\xfe \xe1B\xe5%\x1cWg\x80E\x1c\xf0g\xc4|G\x9c`!\x15\xd1+\xb5)~u\x05\xc4 ;\x10=\xdc\xdf\xc7\xd3w.\x1bA\xd4\x84vO\xecJb\x90\xa8\xd0\x14\xfc$\xe1\xfe{#\xc7T\xe1.a{\x03\x9exZ\x1a\x92\x83m\xc6\xac\x89>\x83\xea\x07\xf0wi\x03\xfc1\xb0\\Z\xab4\xe8\xcf\x81\x17\xd3\x8a\x99\x03:\x16\xeb\xe6\\|\xad\xda\xc9@F\xec0R3\xd4D\x91\x01\x06\x8fE\xde\xb1.\xa6\x86\x14\xb2,|\xf3\\/{\x8eF\xdf\x08\xfa\x0e\x1bX\xaao\xa1\xc5\x0f\x81\xe0g?\xa8V\\\x9f\xf4\x13\x87\xcfJ|\xc7\xcd!F\x83\xb5 (\xd0\xdc|\x0b\x03>\x8e'b)E\xec K\xacK\xc9\x87\xa5T\x8fZ(\x9e\xcc\xf1\x01i\xd1\xac\xd9 \xc6q\xbf\x0f\xb1\x0e;\x80(\xf8\xde\x00\xa1\xa23\xaa\x91\xf2\xc7.K0(cf\x04'\x91\xbdKZzg7E\xa0\x05\xf9\xf7\xa9\xfb\xe2\x94\x94\xbcm\x0b\xb3\xc8\x1dbiZ\x9eHf\xeb\xc6\xd0\xb5|\xa7\x953[\x170C\xcbMz\x03`>\x84)-\xc1\xe3\x8f\x0b\xf0}\x1e\xc6~\xb6\xb3-\xb5\x08\x80\x80\xb5\xcc\xdd\xfbt\xe6\x8b({h\xcd\x19\xeeZ\xb3l\x1f\xfb*\xb06\x08Y\xcfC\x7f\xb9\xe23{ \xdb7E^\xe5\xa3\x1b[\x9e\x9e\xafaP\xad&\xdd^E\xf0P\xcb+\xe48\xb5\xf4R\x08afp#Q\nr\xea\xb3!q\xc5\xc8\x00\xa9N-MIrj\xc9J\x17TKVB\x9dZ2\x08r\xeaiRxSK\xfe1\xf7\xdf\x17\xfd\xd8\x18z\xeb-\xc1@.\xc1\xd8\xe1E\x94&\xb1\x1fm\xf8c\xb1*o`\xdaK\xfb\xa0\xd85\xac\xdfn\x81C\xae\x8f\x0dc5\xe9\xf1\x98L\xfb'u\xf6\x18O,,[$6\xe7\xc2\xec\xc6\xd5\x9c\xf6G\xae\xb9\x91o\x00\x03~\x87e\xa8\xea\xb5\x10\xe86\xcb\xd7\x86\xb3\xc6\x9e\xebh\x81\xb6<\xd93\x8b\xe9\x05}\xfd\xc8N\xe5v\\\x07\xae8y\xac\xa7\xd6\x8b\xed\xe2\xd9\x0d\x9a~\x9d\xc4\xcb \xe5\x1f\xa1\xe5\xb7<\xfb\x08\xad\xca\x95uK-o\x1b\x97v\xe5\x8aX\xdf\xc0\xb3\x12\x856.B8gE\x00\xda\xa8\xe1\xf4\x15\xc0\xf1!\xb2\x1c.\x90m\n(\xb6 \x99\x0f\xe9\x06<q|\xd7\xe6\xae\x86\xdd\x06\xc2\x1b\xe6|\xeaB9m\x1c\xb9\xb3E\x99\x8fD\xce\xd0\xb8\x98\x9e[fC\xda\x16<\xaa\xeb \xd0\xb8\xc0P\xd9M\xcd\xb3\xfe\xbc\xa3u\xa1\x85\x14\xfb\x92\x14\xe7\x18\xb2!uB\x98\xd9\xac\xdd\xeaR\xf1\xbb1u\xc5@\xfb\x82\x1e\xebT|\xc9/\xae\x0b\x05X\x13\\\xefd0\xc1Sv\xc5\xe6\xb7b\xb3yo\xfc\x93\xc1\xf8h2\xe9_\x1d\x8d\x9d\x83\x91\xb3yp4\xeb;\x07\xa3\xa3\xc1\xd1\xac\xef\x1e\xb8W\xce\xb8ww\xe2:\"\xef`\xe3h\xdb\x1d\xff\xe4\xe8hrut4p?9p\x8f\xb6\xdd\xa3\xc9\x95s\xb0\x0f5\xae\x8e\xc6G\x13\xb7|\xbd\xfa\xa1\xeb\xd6\x1d~\x0bD\xb9wt\xe4\x1c\x1d\xb9\x07\xf5<eS] \xc8c\x03)\xb5=\xb0\x12\x9a\xf7w\xd1\xca\x15\x02e<\x8fg\x1c\x82eh\x9b@\xaf\x07RXu#8\xa9\x82\x0b\x95\x13\x81\xed\xc0,\xdbH \x10\xad\x1ek\xe9\x87C\x88\xb1\x01\xc1\xaa\x898\xe1\x10\xa8\xad:m\x16\xfa\x12\xac3\x89bE\xd6\xb5p\x02\xd0\x0f\xda\x0d\xb4\xea#<+\xee\x91p\xaf\xa1\x98z$\xb4\x0b;\xfc}\x067\x89#\xe5r\xc0\xab\xc9\xf4\x18\x02\xc1HC\n9\xf5\xa7\x0b\xfa\n@\x1b\xa9j=|4,m8\xd5n\xec\xa3\x04 \xab0\x16\xd7[S\x91c\x89\x1024.\xf3K\xe3\xf1\xfa\xe4I\xf2\xb8S/\x9e[\x0e8\xa9\"\x83m\xd3mv\x9a\xe9[V(\xcf\xb8\x82~:Yy\xe1\xcc-\x0e\xfas\x14\x15\xb1~?dO\xd8\xb4\xd1\xaa8u\xb2q8\xb1\n\xaf\xe6J\xa2\xa0`\x0f\xfd[\xb9\xae\x8bB'\xb3\x1e\x976\xc8\xd5\x15D\xcd\xe9\\,@\xd1\xc7\x8d}6e\x07l\xceFlc\xc3\x996\x081$y\x9f\xc2\x7f\xdfYyl*e\x10\x8evS\xff\xba\x18\xb1{\x9f\xf6\xe3\xb0{\x9f\xf6.bn\x8d~\xd79n:L\x1c\x08\xde\x008\xe6\x11\x8c\xe7\xc6\xcb\xca\xf2\xb1\xa2@\x17O{Y\xf5\xd6b]\xbbq]\x90\x0fw\xd6\xbf\x92\xb1N\xf7\x93\xda}fv\x93\xce\xee\xde\xb7\xb1T\x16?\x1f[\x94_\xc0/\xfdl1X\xfa\x17m\xc3\xa6\xc9\xc0\x992\xa8\xedd\x87\x04\x8b8/\x0eq\x9bC\xf3\x08\x97j\x8dE\xb2\xb1\xc0v\xfcJ\xe1\x9a\xa5Xp)\xe8\x19s\xd6g)\\\xc6\xf5p7\x8a\x05\xbcw\\\x8f\xa57G\xdb\xc2\x02\xc1J\nc-\xea\x14\n6#\xd6g\xb0\xe5\x0f\xd9\x88m\x0e\xdd\xc7`'\x11ln\xb2\x11\xeb\xf7\x03\xf6\x84\xc5\x8f\xcd-_\x80)s\x04\xd7\xee\x81\xe5Ty\xec\x0dH0\\\xff\x96\xec\xce\x16\xa9\xf2b\xf7\xea\x86\x1bp\xf7f\xb0\xf7ho\xf7\xd1\xcep\xe7\xfe\xc3\xdd\xed\x9d\xe1\x83=\xbe\xb3\xf5\xb0\x0do,\xcbE \n\\\x84\xc1c=\xb2\x01\x82\x03\x82\xd7\xcd\x18\xb3\xf1\x16\xed\xa6\x80\xde\xd0e\x9f\xb0@\xa0\x96\xc23\xceF\x80\x1e2\"\xadJ\xb9.,\xb6\xad.\xaf\xe8\xe5\xb4\xfb\x80v\xb3i\xec\xcc\xb9\x04u\xfb\xb9\xd0\xbe\xc6\x10\xbf\x91\x1a\x8b\x15A\xe2A\x84\xdbQ\xd1\x0c\xc6\xf4S\x81\xce\xc4*\xd0\xd6D\xdb\x82h\xc0\x99\x9d.\x03\xa1F\x11\x91\xdd\xae\xf1\x8d\xc0F\xc7\x0dDt\x03\"\x85fE\xc9\x1a9u=\xb6\xb1qm%\xf0\xee\x03K\x14\xa3N\xb3gEv\x14\x8a\xc3\x87\xe3kC~\xf7\xc1}\xd7YKx\xd1N\xd5Zw3\x9a\xe6\xb1:\xdd\x13,`\xa0_<\xf5`9$\xf0\x96\x83\xa9\xa8\x12f\xe4\x16a\x06\xd3q}\xcceX\xd8~?&\x8elL\xed&\x18P<r\x82q:\x01\xff\x86\x81\xe2\x05\x8d:\xa6\x02\xd28)\xb0\x9b\xec\xc7{\x9d\xdc\xeb\xb6\x01<\xb2 \xbf~\xbf0*6\x84\xc8\xc2)'NT\xee\x1a\x1c\x1b5\x8b\x163\x08\x14\xad\xd8\xb9\xc4\xc4\x81\x10\x016-O\xbfP\\\xdf\x88\x8b\x07\x82\x87\xfarc\xf3\xd9\x13q\x10\xbes\x87m\x0c\xe1Nb\xec\xe4c\x7f\x82&\x0f\xeec\xbb@\xc3\xe6\x10\xa7\xd3L8v\x16L_C\xf5\x83\x10+\xd7\xf8\x83\x87\xee\xe0m\x96p\x7fi\x16\x01U\x99x\xe9i\xa6\xdb\xacf\xbeM\x13p\xa6\x8c\xb5\xc5\x06g\x89\xea\x1a\xc3V/ \xed\xc4\xe8\x0e\"\xe2\xe7Ri\x88\xf5dD\xceXy\xd62\xbb\xc8\xe4\xb1\x8e\xb0\x8d\x13H\xd1C\x05\x83\xaec\x06\xc2\xe4\x00\xf7\xc4\xc7\x9a\xe0\xfe=\xbfL\x1d\xee\x8e\xb7&\x13\x17M+\x8ey\xc8\xb5[\x892AZ\xeb\xa1\xd3=L \xa6q\x1e\x81Oh--\x9aqH\xcb\xeai)\xfa\xe1+\x133\x9e$\xf9*\x83{\xb7*\x99\x86X\x88g\xce\xb1E\xf09\x97\xc2\x1e\x13\xe9\xd5|\xad\xec2\x8a*\x18L\x9b$\x92\xc7W\xcf\x14%=\x8d\xab\xbe\xfe\x14\x1bE\x9f\xdd\xdd\x87\x98\xf8\x10\x16\xba\xcf\xee\xf6\xeeZ+~\x80\xd3\xc48\x9b\xb8\x96k\xf4mw&\x98f6+1\xc20GR\x0f\xd8\xdb)\x14\xa2\xcd\xeeX\x95L\xed\x8b\xc6,\xc7r\xf5\xa4\x83c?\xcb\xc0\xe1\xd1\xca\x91?\xc0X\xe1x:\xf33\x10j\xce\x11\x9cN\xef\xc9\xc6\xf8\xf9g\xcf\xde=\x03/\xcd\xaa\x84\xe6\xa0\xefhr4y\n\x0e\xf7&\x93\xc9\xe4iQ\xfc)\xba\xde\x9bL\x9e\xf6\xa0i9\x9b\x80\xfa\xa1\xd4\xb1\xcd5 _\xda\xd1\x06M\x7f\xc8\xb5u\xc0z0 H5V\x16;\x10\x18(\x87\xccF\xaa\x0b\x05\x15a}6\x84C\xb73G'D\x1e\xc8Z6\xb6\x8a\xde\x02\xebLO=\x93\x9cP(\xa8E98\x1b\xf5VF;t\xf6\x8c\xcf\xfd<\xcc\xec\x93^\xf4'%\xbac\xddvi\x88\n\x8a2b\x01\xbd\xa8\x0b\xfa0\x12\xb3F\x16\x11\xe0\x0cN\xf2\x8c\xa7#6\xa5\x8bL\xe3(\xe3Q6bs\xcbW\x80\x84\x8dXd\xeb\x04P\xae\x11\xcb\x9b\xf2G5\xb6\x82\x19\xa0\xf8`\xd9G\xf2\xa6}\xa4B\xc87\nd\xcb\xb4\xcd^\xe0\xb3-\x84t\x02B\xd3\x92\xcc\xe2\xc9\x14L\xa0\x04H\x8aS\xbb\x9dj\xc6\x86QFQ\x04\x9d\x07\x18\x8d5\xad\x1d\xc5>\x96\x95\xd2E0\xcf\x9c\x06D\xd5.\xfe\x03k\xd1\xb64E\xf9\xc0\x89\x8b\xbd\xcb\xde\xb2x\x00\xf8q\xc3\xa2\xa2)-\x99\x8aS\xe1$\xec\xa9\xf4%\xa6\xf6\xbc\x91\xd8\xc0Y\x9f9\xd2\xc8\xfd\x80\xf5\x9e\xdc\x13TM\xfe\xee\xb3\xde\xd3\x9e^Jn\xa0\x82\xa1\x8aD\xe9\xa3Hf\x83\xa6\x10\xe4\xa0\xd4\xc2\xb3\xcfb`\xdf\xc2\xd4)kC\xc7\x138J\x96\xbf\x07\xfej\xc5#\xf0\xef\xe0\xe9\xf84\xc0\xc4\xb8\x92\xa8\xcc\x18\x9c\x0dq\x06\xdd\xd8\xeaB\"\xe0N\x06br\x01\xb5*\xbc4pi\x80*W\xbf2s=`=\x86e\xb5<t\xb6\xcd@\xf1\"\xeb&0C\xaay ~X\x1b*\xed\x9emN\xd4\x04W\xa6e#\xa9/IUC/Hpj2:F\xec4\x99\xaf\xd9\x8e\x17$\xcd \xe8\x05 \x0d\x9c\xa3i$P4,2\xe7\xcaFY\xd0\xbb<\x1c$R\xe0\xa1\xd9\x01\xde=\x91.\xb5,\xb4X\xb0\xd5=;\x0bg#\xf3+\xf8P\x01\xd1\x0d\x19\xc7\xbdL\x11\x87\x97\xe2\xe7\xc8\xfa\x8d\x99\xb4\x05\xb6/\x95\x85}\xf7\x9f!\xce\xf0\x8b\xec]0}\xef`\x8c\x935W\xe2Y#\x7fX#v\xb8\x10\xa7\xe0@\xd2\xf5\x90}\xdf\x98\x17\x9c\x0c\xec\xf6\x00s\xa9u\xd9R\x85\xe6mDX\xa0\xc2\xd4N\x1a5^\xa8\x8d\xde\x86\x03\xbe\x0c2\xa7'\xb8\xb3\x9e\xa7\x07\xcd\xaf?\x82A\xc1\xf9\xefHT\x9b\xe0\xb8l\x84c\xee\x9c\xc9;\xbf+\x0fn\xa5\x83\xeb:\xd0\xc6\xaf\xf5\x95S\xeb\xf0\xc5L\x85mP\xe6\x1f\x0b\xca\\\xf0z2\x89G\xb3\x1e\xfcL\xb8?\xf3OB. \xb0\xca\x9f\x86q\xca{M\xd3\xd2y:\xea)\x92\xe0u\x18\xc7\xcc\xbc\x91\xcf$JD\x83\x19\x9f\x86~\xe2\x03\xc4\xc1\xcd5,v-\xd5\x83s\xaeE\x84\xc4\x934\x88\xa3\x11\xeb\x0d\x07\xf5(/\xea\xe1\xd14\x9eA4\x80d\xa0\xde\xe1\\\xfd\xd5\xbb\xcf7\x1f\x9a\xe8\xf8\xc1c\xc9 \xcd\xfch\xe6\x87q\x84\xa7\xe6TO\xd8\xaf\xe4\xbb\x1e[:t\xefz\x07\x17\xcb\xb07j\x98]8\x10\x8cX\xdau\x12\xe4\"\x9a\x16\x07!\xb1Qy\xacw\xf0\x14C\xbc3\xb8B\xa7\x0e=\x07\xd4\x15\x1b\x1b\xb3\xc9\x14m\xa7Q\x16\x8e(\xd2f\xa2\xbcT\x02\xb3u\n \xc8<\x96P\x16\x0dl\x84\xcb\xf5\x14N(\x07\xcc\xa9\xe2\xea\x96\xc7\xc0#\xfe\xb4R\xf5\x83f 9\xe0!_\xa2H\xa1L;,\xd2\x1a\xb1O\xadCz\xb8 p\x181\xdf1\xdc\xd4\x86\xc1\x94\xa3\xc9\xa0\xaf\xcc\\mB\x18q\x1a\x1a5\x08Y\xf5\x07\xc4ux\xf5\x1ex*\x97e\x8b$>\x072\x0e\xd6\xabN/\x8a3\xe6\xa7ip\x1a\xf1\x19\xcbb\xe6\xb3\x95\x9f\xf0(\xdb\xa0\xf8\x07\xf5\x9ci\xfe\x91\xe8^\xaa\xa7\xf4H\xa3 f\xec\x0d\xe7\x8e\xd6[IT#\xaf\xd2\x02\x8a\x80\xfa\x82\xc1P\x94\xd6\xf5\x9agE\x7f\x14{\xe9P\xbc\xa2zlT\xca\xc2f\x08\x9a\xd7uJ\xb4\x0d\x17\x0d<\xc4\xd0\xe0\x84\xcb\x95\xd7\x1d\xc1\xe7\xaa\x1c\xd1\xd3\xce$\xd3*\xfa\xac]d+~}pK\xc7\xc3\xce\x83\x07\xf2\x80\xdd$\xe8W\xdbyu\x80\xbd;\xbd\x11\xeb\xdd\xf1\x97\xab\xc75\xa2x\xb7wW\xe4\xfc,\x8f\xb3zV\xef.VZ\xc5\xa9\x91\xf5\x04\xb2B\xb3\xceS\xc88\xcd\x1ek\xc1\xfa\xda\x04\xe3\x16\xa9\xb8$^\x92\xb2\x01\xf1*\xc4=\xce\xf8N\xef\xc9\xd3\xbb\x18c\xa1U\xd8\xa6\x04\xccFP>\xe0\xd9\xca\x8e\x92\xd0\xad\x91G}\x08\xf1\xe3\n\xdc\xa5\x19\xc1\xa3\x1dwpx\xc6\xa3\xecp\x19d\x19O(o\x1f\xe6A:\x913\xbd\x08\x0cu\xb5x\"\xe7\xe1\xd0ub\x0f\xfc\x97\xc4\x837%\xc5\x14_\xbc\x0f\x89?N\x82\xacH\xdc\xdd}\x00\x89\x9f\xe5\xab\x90_\xc8\xa4]Hz\x97\xf8Q:\x8f\x93\xa5L\xdd\x83\xd4\xd7~\x9a\xbe[$q~\xba\x90\xe9\x0f!\x1de\xe2x\xb0\x8bu\x97\x1f\xc1\x8a\xb7\xe97\xce4\xdf]6\xc9yL\x9fF\xf9\xe0\\\x0d\x07U \xb8\xd5\x88D.j\x80\xd5\xd8\xca\xcfS\xae\xbd\x1a\xc7&\xfa\x93\x01I\x85\xa2r\x1f\x82\x16\x13\x9e\xe6\xcb\xca{\xe3\xa9,\x1a\xc4Q\xc1\x92\xc5`,\x08 \x89\x1fD=\x8f\x05\x90r\x1c\xa4o\xb3Y\x00r\xfcL\x1b\x18\x1e\x9e\xc1\x119\xd4\x12l\x9c\xc7r`\x88\xc4od\xdb<\x96\xd6\xa5xg\xd2Ztch\x83oN\x0e\xd6\x87\x8f\xf9r\xc7\xe5H\xc7\xbaA/\xed\xd0 y\xa9\x8d\x0ff<\xcd\x92\xf8\x12\x17\xb6\xfc\xd1\xf5\xb3!M\xb7\xc5\x16:u\\OZ\x02$\x830H3\x1e\xf1\xe4\xb9\xd8\x87\xa4\x13\xe1\x1e\x17\x9bi\xcfU\xfbk\x9d\xde\xd2_\x9cZ\xd1d\x19\x9f\xf1/\xe4wjsndj\xf3oV\xd5\xe7\xb9\x9eW\xce9Y\x13F$\x98%\xea\xabz\xae\xed\xab\xd3\xc6\xafN\xc9v\xcb\xdc\x86\x95\xa0\xc8-br\xa5\x9f\xf5\x14\x1d\xdb\xa7\x06\xb6O\x8b:\xd5\x14<\xca\x08\x02\x04gL\xaf\x95\x86\xbb\x10`\xa9\x89\xac\xf7\x04!I\xb3$\x98f=\x92\xaa\xdf\x1f\xba\x03\xbc\xadDZ\x08\xec\xb6z\x9c\xaf\xe3R\x81f\x9cD\xb3\x8d\xf6m\x8d\x15\xa6\x91\x9ci7E3Wg#\xdf]\xae\xb8d%\x9f\xfb\x91\xe0&\xc5>\xc3|6\x0d\xfd4e~\xca\xfc\xe2K\xc4\xb9\xf0C\xe9\x86\x1b\x19\x9e\x05\xf7g\xd2LK\xa6d~\x10VS\xe4y`\xdf\xea\\\x99i\xbb\xbc\xe9E\xaa\x99QS\xbc\xad\xe5h\xe9g\xbe\xd5;Y\xc4/2\x94G\x99\xe34y3}(O\xc1\x16\xa9\x18.\x88}@Q>\xaa@%\xab\x82$\xf3\x98\x8c\x01\x80\xcdT\xa1\xe1U\xc6\x9eG \xfc\xfe\xf8\xc3/\xfa\xdb\x05\x062\x06\x89\x06 \x10\x06\xebc\xac!\xc6:c6Fl#\xf0R\x00V\xb6\xdat`\xe5\xeaH#z4\x10\x10\xa1\xcf3\x12\x01\x87\xc6\x10\x0f\xaa\x03\xaa\xe1x}\xca\x8b/ \xf0\x16\x91A\x949\x05a\xce\xde\x04\x11\x15\xf5\xae\x11\"M\xbdkY\x81\xd5\xaf\xfd4\x0e\xda\x1d\xb8#\xfc\xf7\xeb\xf0\x97\xd0\xa3|\xe6Tn4\x15\x9d\xc5kM=\x14\xc7\xc3\xacHoH\x02n\x8f]\x16\xb1\xfe>\xe8\xc03\xcb\x9c\xd1f\"5\xf8\xc5\xd1\xd4o_D\xcdcJ\x06~\x18\xc6Sg\xcbb\x8an`LQ\xb3\x0d\xedJ\xc8\xc0\xb19F\xb3)\xf9\xbd\xaf\xa2\xd4\x9fs\x87\xb3\xa7O\x9f\x82x\xd2\xaf\x82/\x17\xd3\xf9\x98\xf9\x8f]\x00\x9c\x0f\xdf@\xa8\x06x\xa3>\xf7@\x97\xb6\xbaD\x9b\x1fQ\xa5\xaf\nV\x0c||\x04\xba\x0d\xc4\x81\x01\xe2\"\xe1\x83`\xb5d\xf4\xb7 JW|\x9aU~\x0c\xa6y\x9a\xc5K \x13\xa5t\xa6\x98\xa0q\xbd\xe0\xa4 \xd9\xd5j.*\x11r5\x1c\xd6\x88YI\x8e\xe5\xf2\xa6(\xae]\xfa,to\xa0/\xd2\xc6k=rw6H\xa2\xb6\xef\xea\xeeN+nH\x8eD=\xb0\xefC0\xcb\x17\xcb%\x9f\x05~f\x95jH\x05\x0d\x1a\x19I\xbf3\xe6}7\xfd \xe1\xa2\xbb=\x7f\xda\xa0\x9baRw\xc3\x07\xb3x\n\x922{\xb9Uitt\xca\xb3\xd7\nI^\x81R\x83\xcc\xb0\xba\xb0\x12M\xad\xc0\x92D\xc0\xe4]\xb0\xe4q\x9e\xc9\xe8\x88\xdc+\xfd\x1c\xac\x92x\xca\xd3t\xd2\x835\xfc\xf3\x0fEpIy!x \x0b\xa0\xb1m\x1b\x1dQ\x8f\xa6\x07j\xa4\xdc\xfa\xb3p\x88\x0b_\xea\xb1 \xb8\xd8HG\x9d\xa6O\x80\x12u\xb0\x8a\xd3\xecK\xe9@M\x9c6\xf9 X\x8a%\xf9v\x9a\x04\xab\xccj\xef\xa3\x1eE\xc47\xb6\x9a\xa5\x88LJ\x12\x05\xb3nu\xd1\xa6?\x05\xf3W\x94o\xdb\xf4\xeaOF\xeb\x10\xf4\x07\xf7\x86\x12\x02N\xaf\xe7\xb1\xde'=y\xaa(?\x1c\xd5o\xd9UZ\xa1g\xc2qA\"%\x9b~\xbe\xf0\xa3\x88\x838\xdb\x01{J~\xce\xaaY\xee@\xc0}H\x0f\xb8\x11\xb9\x16\x0e\x07\nn\x93y\xae\x81\xa7\x01tb\xbb\x02\x14\x0b\x16\x82l\x0c\x16b/\x8e\x12\xee\xcf.\xd3\xcc\xcf\xf8t\xe1G\xa7\x1c|\xdd\xcc\x07\xd3\x84\xfb\x19\x97\xa2w\xa7\x97\x02R\xf5\x04`\xc0\x8eq^\x90\x00Yd\x9d\xae*\xd4\xb3~\xc5\x8e`\xd9\xc0\xec\xf1:\xe8%E\xbdt+\xc8d\xc5\xf2d\xfc|\x11\x8430s\xced\x9e\x1d\x8fD-\x94m\xabZv\xc0w\x87SI\xed\x9c\x85\xc7\xb6\x8c\x1bF\xea\x11\xa4\x03\xc43=}\xcf\xf8\xa1\xd8\xed\xe0\x16P\xe2G\xb3x\xe9\xc8@\xb5\xc8m\x14=h4a\xcc\x06i\x9c'S.ob\x08\x8c\xd1\x83sI\x1b\xa5\x812\xe9\x93|\x172%A4\xe3\x17\xaf\xe6\x8e\x0f\x02\xbd\x85\xd3\x97\xe9\xa0pq\x14\xd3b3q\x14\xeb\xd8\x9f\xcd@\xd8\xaad\x14\xb0*\xeb\x89NO.\xba\x1el\x7f\x1bC\x10\xfc\x0e\xfc,\xf3\xa7\x0b(\xe9\xf4\x8a\x85)\x052Ig\x00T\x89\x8c/XX\xa43\x96\xf9\xf5p\x93*&\xa1\xf3\\kR\xb5\x8d\x9a\x19/\x97DGy7q\x80\xd1\xe6MF\x7f\x156\xbd48.\x14\\\xea\x10\xb1 \x11\x0f#\xe4>#\xf6DwM\xd0\xef\xbb\xca\x97@Qo\x0c\xaaA\x8b\xdd>\xd3\xec\xbe\x9aW\xa1\xd8\x8fO\xfc\xe9\xfbF_\xe3\xe2\xf1\x93\xd3\x942\xb8S\x0fq\xacU\x8f\xdc\x86\xc2q:A\x01w\xe2\xa4\xae\xc7\xd2~\xdf\x86p+<\xa2\xe9sG\x1c\xa4\x1b\x8c\x08f\x0d\x16%\x18\x947\xac\xdfhd-M6\x18\xa9\x80t\xd4\xa5\x88\x04\x0d\x94\x86\xe88L#\xca!\x19\xebV=p\x85\xad\x8d\xc8N ?|\xf5'K.;p\x02\x1b\x1dW\x8f\xfe\xa8\x81\xa0RW\xa0Y;\x83\xa3\x9e\x04\xea \xack\xee\xbdz\x94\x91u\xd2\"\xbb\xa0\x1e0\xbc\xde\xb2\x1b\xdfRO\xa3\x01%\xf5\xb4\x98i\xd7\x1f\xe8\xd3p\xdd>%\xe3-\xeajw\xd3s\x9d~m_\xa7_\x1eK\xc6\xc3\xef\xa3w;\xd7\xef\x9d\xf8\xbb\xfd\x91\xfb\xd8j\xebM=\xa0\xb0\x0fA\xe4@\xd8{P\x0f\xcdQWJ\xd8\x98\xa3\xa2\x00\x9b\x07\x91\x1f\x86]\xe8\xc3\x0c\xd8\xb9i\x87\xf3\x825\xb7\xab\xe1oM\xb6\xe7\xf4\x8a\x98\x05:/\x94\xf2p^^aW\xf7W\xb3E\x90\xc2\x0d\xd7\x11\x14\xd0\x94\xc0\xba\x11\xc0\x0e\xec\xc5v[\x80\xee\xd7\xa2\x8a\xed\xc3B6\xed\xc4\x17\xadV\x06a<\xf5\xc3\xb7Y\x9c\xf8\xa7\xbc9\xe6\xda\xd4\x07\x02\xd8\xe6\x15\xa45\xda\x19\xd3U\xca\x95\xef7\xc6^\x97>#\xc0\x9c\xac\x97%9\xc7\xc3?\x9e\xfb\x9d\xc8\x1dd\xf1\x17\xf19O\x9e\xfb\x84\x06Y\xff\xd5\xf9^\x1fS\x97a\x9c^\x14\x7f\xc6W \x9f\x82\xe9ZO\xbb\x97g\xf6Wi\x9b(\xd7\xaa\xf5\x9b\x82M\x1b\xfe\x06ycS/\x119=\xd0\x10\xd5\xbaV7>\xb29\xf7f`\x90\xd0\xcb\x12\x7f\xca+M\xb0\x036\x8d\xa34\x0e\xf9\x002\x1d\xf0w\xa4\x92\xce\xfd$B7\xe0\xb0\xf7w\\SL\x17\x17 \xa9\xc9@%UZb\xb5\xadC\xebR\xea\xb4\x86hA\\\xc5\xf9N\x99\\j\x0cw\x86\x96+\xe5[\xbbd\x00\x98\xc0\\\x1f\xa8\xdc\x03\xc2\xa0\xe9\xf7\x82\x12\x890v\x98\xe1N\xbb4%!\x02\xe8\x8b'\x1e\x04\xd1\x82'A&\x1d\xc1\x0c\xc1\xd2C\xa59\x01\x9a\x99\x04\x9a`\xfd8\xd3\x8cF\x9a\xa0\xc5\x007\xf0\x94\xdc\xea/\xa4\xc1\xb6&r\x86\x8f\x1et\x9a\x9fj\xad\xdd\xebT\x1a>\xba\xef\x96f1\xd7\xac\xaf\x19\xd0ti\xa1M\xe3\xbc3\xa4\x02\xe8\x8bt\x8bK\x82\xbd\xf6[\xea\xf5\x89\x92\xaa\x08\xbc\xac]\x1e\xe0\x0c^H\xa2\x9b?\x88\xe2d\xe9\x87\xc17<\x81k\xa9\xa0\x96s2\xed\x8678.+\x95\x0d\xa5G\x0c\x7f\xe0\xa7\x97\xd1\xd4E\xcf\x04\xfe`\x95\x04\xcb \x0b\xce\xc4\xd6\xa7\x8c`\xd8A\xf5\x13p\xb1z\x0b\x0e\xeb\x19\\\xb3\xc0\xaaF\x89m\x17<\x7f\x8f\xea\xb5\xb5vE\xb1\x1d\x17bQU\x13\xf70Q\xbc>\x84f\x8a\xae\x82\xe5\x8f\xb3\xb7\xf5\xc8\x95Q\x8d\x96\x8146r\xf6\x86\xa0\x9f\x19\xcc\x82t\x15\x97\x89\xbb\x90\xb8\xf4/\x9e\x9d\x16i{*M&lc\xcd\x84\xcf\xc1@\x85'*}[\xac8\x81(\xfe\x9a\xab\xa6\x0d\x91v\xf7(D\x02\xa1\x8f\x7f\x92\x9a\xa8\x049\xf30\xd6\x1dbwC'\xa5>J_\xfa/\xd1_\x05\xba\xe8\x00,\x11Get\xa7\nN?\xee\xdcaA\xfay\x10\x05\xe0\xa2\x1a\x1c\x0dq\xf0\xf2\xe1\xc4\xd2\xdfP\x9bQG'0\xd4\x88\xc3\xde\xb6\x0b\x82[\x18c\x1a\x9cF0\xf5\xbb{;\x9d\x88F\xfb'\xac\xfb\xb3Re\x15\x1f&\x17\x18m6\x05h/\x0d\xe0\x9c!z\xa5\xdbT\xbf7\xb7\xb7\xd6u\xe7\xb1\xc60\xec\xb6\x99\xdadz\xe5\x8c\x03Q\xd0=\xb2pi:\x81>pn\xa3\x9f%b?\xa0\xbd\xd2\x0e\xef\xd7\xfd\xdaH\x02Y\xf7\x98$\x03V\xee\xd1\x01+\x05\x9dm\x86\x0e\xe3\xb4\xb3\x81\x08oCUgX\xec\xe5\xe8\x10\x03n^I\x97\n\x15\x9a\xebjtG\xd1\x1b\xc2\"\xfc\xd5J|<ew\xa1\xf4]\xe6G3vW\x16\xbf\xcb\xa6h\xe4s\xc2Y\x9e\x82\xc5\xf8)\xcf\x16<\xa9\xcb\xcb\xd5e\x8d\x8ak^=n\xe0\x92/\xe3\xe0\x1b\x0c\x1c\x08\xaa\xa3h0\x8f\x13\xb0\xc3\xcd\xd8\x08\x9d.\xe5N\xe97\"+\xde\xa2r\x18\x81$\xfax7\xcc\x17M\xa7h\xb1\x15\x0b&\xa3\x95\x87\x8e\xc6\xd9\x04\x8c\x05\x1d\xf1\xe6\xb1\xd0\xb8R\xf4\x01\xcd*\x8fWI<\x0fB\x9e\x1c\x1f\xa3q\xa1\x9e\xe2\x84p#&_\xcd\xfc\x8c\x1fFgp\x9bz\xa0\x06x+\x8b\xa7\x15)\x8d\xe8\xaa\x02'\x95\xb0V\xe3\xb3N\x82hfb)QPL\x95\x89\xb6\xbaW\xe1JfJ9f^\xc9y\x7f\x91\x1eF\xf9\x92'\xfeI\xc8\xdb\x08B7/&\xe4e(\x01\xa4)^N+\xf1~\xdb\xe2\xc2aU)\xb5\xd3p\xbc+WS\xecD\xe8\xfd+\x94\x07\xfe\xdc\x11\xb8\x06z\xe1\xe9 \x8d\x93\x8c\x8e\xcc\xb0\x02\xbf\x9c\x80\xfc+\x98\xeeQ\xe96\xa9E\xe6>\x1d\xf3 l\xe8\xca\x9f\xf4\xb4\xe6\xce\xa8\xe5\xcc\x9bbEt\xd8z\xa0\xda =6\xf7X4\xe6\x13\x88\xe9\x81Nx\xc8K\xe5\xb6\xe3\xea\xad\xe0\xf2\xae%\x16\xe0\xce\x90\xf6K9\xbco\x89 \xfcp\xcf\x1d,y\xb6\x88g)Ejw\x0d\xff\xc0\xa9\xe4\xec\xeaG\xa8\x90^\x0cp,\xac\x96\x9cv]6\xf3re\xa0\xa6\xb1\x9a\xad\xd9(\xa0(G\x12\xcb\x80\xd7\x86\x82!1\xe3\x9a\xdf\x80\x05\xa4\xf2e\x90uXX\xc4Q\n\xec\xbb=vVD*\xf5\xd8\x89\xc7\x8e!\xc8\xec\xa1\xc7.0\x9a\x96\xc7\xde{\xec\x99\xc7^y\x10tk\x0e\xe7/\x9a\xe2c\x00\x11y\xa1\x14i\xb9\xdc\xbd\x0b\xf14\xee\xd6\\#\xe8\x1aW-\x10\xff\x02\x9cu\xea\xc9\xae\x07Qq.\x06\xa7<\xf3 \xf2\xcd\xc5 \x15\xaf\x97\xf0\x8a\x9a\x0d\x0f\x02\xd9\\\xa0\x06\xc5\xf5J\xc1\xcc \xe1i\x1c\x9e\xf1$\x85\xe6_\xc9\xad\xa5H\x15\x8b\xfa\x19SA\xf3\xed\"-Vn\xc0\xd2\xb4\xaa\xa0 &\xf9\x10\x1b\xf2+\xf8\x1e\xf8\xbeq\x02\xb7\xec\xd2>n\xd2K\x91\x08\x8aIb\x9b|-f\xab8\x89C\xe0]_Z&\x9f\xf2\xac\x07\xab6@s<\xd7c\xaf\xc9\xe8%\xa2\x0f\xe8tO\xf0LAi\x808-\xe8 \x9e\xe2\x83\xf1\xd6DP\x80\xb0\x9e\xae\xfa\xbc\x8f\x9e\xa1\xecB!bd\x8a\xb7H\x9c\xde\xf3 \x99\xe6\xa1\x9f\xb0 :\x8b\xa54\xc7c\xbd\xe7/\xde<\xff\xea\x8bgo\x8e_\xbc\xfc\xd1\xab\xe7\xcf\xde\xbdx\xf5\xd2\xa6x\x17\xad\x9e:\x01!\x8bA\xa5\x92\xe8C\x03\x18o\xa9'r6^\xa3J2\xf6\xd8s}^R5/R\x89/\xf8\x90*\xfd\xf4\xd8\x99[x\x15\x14\xeb\xa3Q\xe0\x06\xc7gzV-C\xc5\xbb\x02\x8dh\xa3\xae\x13\x14\xa8[\xe2\x90\xc5\xaa\x10\xf4m:\xb2\x97xT\xc7\x97Rf\xc6F5$s=\x1b\x9a\x17\x9d\xbe\xe5IB\x93\x000\x19&\xa6\xa9\xb8C\x8eV\xad\xa6'l\xdd\x93\xfa\xed\x92\x02\xfd\x8e'lyRT\x0c\xab\xd0\n\xa6\xb8qZ\xe3*5\xa0\xfc\xda\xc12\xbd)5h\xe8\xdc-O\xdf8\x16k,\"'/V\xf3\x16U\x82\xf21\\c>\xa9\xfc\x8f\x93\xe04\x88\xfc\x90T\xf8+n}\xc4\x9e\x99\x99\x92\xd5\x7f \xde\x83`\xb7W?\xcd\xb2\xa7<\xebr\x15T\x0e\xf2U\xc1\xe8\xbdr\xb8\x0b\xbb\xdc\x01[\xa2\xb3\x07\x89\x14\\L\x86I\xf5\xcc//\xfct\x8d/[\xe6\x91r\x12o~\n\xf7\xdb._\xb3\x900\x86\xfd\xa5{\xc00\xaa\xfa\x9d;\xec\x12-\xa5\xd8>{\x0d\xbc\xaa\xb4`\xc0\x1f\xefu\xb4\xc0\x9c\x1e\x86\xa8\xa3\x1cE\x99\x83\x006a\xd4\xae\xf2P\xa2\x15\"N(\x83\x80\xc8w\xee\xb0\x13q\xe6\xd3X#\xaf\xe8\x18|\xa5\xd7\x15\xb0q4j?\xb52M\xa0#\x16\x7f!\x10y\x0bz\x0f6\x02\x1b\xac2\xf9y\x91,\xa1TZRA\xfcW\xf0\xe41\xab\x08\xf5i\xdf\x15f\x7f\xc5\x18Glaf\x14\x87\xe1\x0e\x00\xe6\xc8\xd9\xca\xe5i~\xb6\xbe\xbc\x8fMV\xcd~\x95\x05-\x8b\x1a\x883.A8\xe5\xe1\xf1\xae\xe4d2\xe0d\"\xe4\xd1\xfc2\xc6]\xbdC\xeb\xec\xe9\x85\xa8[\xb6&7\xbfj\x93\xacmi\x11\xe4\xa3\xdcTp\x17\xf1\xcb\x00}\xf5\xfe\x9e\x83\x14\xbd\x95\xf5\xe0\xad\xb0\x93\xdd(\x87.\xf7\xdc\x91\xda\xef4\xb0r9k\x02\xa0%u\x8b\xb0\xb3bE\x9b\x82\x97\xc3\x8f\xd6O\x1f\x82\xd8K\xd8\x93\xdd-\xb1\xa0\xa1\xe3\x1210\xe6\xbe\xd9\xff\x95\xf3\xcc#\xfa\xac\x0b\xbfF,\x00\xd7UV\x12\x1b8\xc7D\xae\xa4]\x81\xe3\xab\xd3\x8e\xf9\x15\xd8\x89\x02\xe7\x9c\xca\x83\xbd\"p\x0e\xcd>\xfbE\xca\xad\x1c\xf1w\x86T \x10q$\xb7h\x99\xea\xe2-\xb1\x97\x83`r0\xf5WY\x9e\xf0\xb7\x99?}\xff.\xf1\xa7\x9a(\xa9\xe2\xab\xa3U#\x15I{D\x94wR\xd1n\xf3\x8aphH\x88\x90\xd2\x9a\x90\x89<\x0b\x07N*\xddm\xe5\xb8\xa9I\x8f\xa4\xca\xa9=hdR\x19\xd50\xc2\x9b\xb8\x81*\x1b\x0d\xa6\xf1L\xe0^\x0eWu \x08D\x84\x8c\xea\x9a\x0e\xa8\xd7\x90\xc7\x93j\x05\xdc\x81\xa5\x90\x02}\x85t\xd7.H\xf7n\x0e\xed\x15e\x1e\xc7#\xd6K\xfcozu\x1ae\x96=\x11\x18\xdf\x9b\x9d\xfb\x1d\xcaf\xc97\x97#\xd6\x13\xffz\x06\x8a\xf3\xc1<\x8eY\x9f\xf1\xc1\x89\x9f\xc0\x7fQ\x0eh\x83\xe8\xca\xec\xdc\x87z\xb7,\xb8\xdd5\xa2B5Hn\xd7\x08\x9c`\xd1\x10\x94\x17q\x02\xc3\xe4\xd6c\xdb5\xbe\x1blu\xb9.\xe9\x04n\xb4b\xa4M\x8a\x1a\xedV<|\x9c@\xfc\xd1qBX\x9b\xb6\x9a\xecD\xe8\xac@\xac\xebV\xf3\x0bd\xf8\x87\x8f\x99\xcf\x9e\xb0\xf41\xeb\xf7}y\x85\xadX\xa0\xfe\xc4\xc3\xf8\xd4\xca=Q\xee\x9a\xea\x13\xcd5KT\xe8EHL\xff\x18\xaa\xc3\x87CT\x1dj\"vT\x1e>\xdc\xfe\xd8\xcaCz\x12\x15\x8f\xa1\xf9\x96\xed\x15Z\xf5\x1ex[\xac\xceC\xe3\xa4\xd26X\xb7-P\xa6\x94#\xda\x00\xda\x96S\xbd\xe3\xb2\xd31x\xc3-\xe6\x06\x8fg\xeb\x1a\x9f\\\xab\xef\x04\xc5\x94\x9f\x18\x91\x97\xa6\xf0\x16\xda\xc8\x98\x9ak\x0e\x1c\x86}\xe7\x0e\x8b\xc7J11\x11\xebr\xdd\x10\xb9\xed\xa8)\xd0\xfc\x01\xe2\xbf\xbc.W\xb9s\x9b\xf9A\xa4V\xc3\xee\x0dV\x83\x82\xb6N\xe6\xd7\\+M{]R\xf6Ulz\x1b\xcae\x88Ju`\xf7R\xbe\xeb\xeby\xf38\xee\xdd\x8e\xaa]\x0d\xd3\x00\xa5\xbc\x0es]l\xa8\x1d\x11+\xcae\xf6\xf46\xf5\xef\xb5\xeb\xa4\x9er\xc8N\xe9\x80\xe6\xb4^t\xd5Y\x953\xeb\xaa\xcaY4\xabr\xce,\xaa\x9c\xda\xe7\x96]5>\xa7\xed\xc1n\xab\x15.I\x8a1\x8d\xa3yp\x9a\x83\xf6\x95\xa6\x1a\xbc\xd0\xce\xd2\xae\xaf\x95\xa7\xa4&\xba\x92\x1b\xdf\x164*i\xe3V\x98\xe2X\xac\x87\xb69\x185\x9c\xea\xb8\xd7;>\xe6\x1c\x0c\x07\x0e4\x07s\x90&\xcer\"\xe9rp\xe6\x87\xb9\xe0h\x16J\"sV\xab\xed\xb1K\xd7\xd3\n\xcab\xd1\x98O\xd8\x01\xe5t]\xe6\x88\x7f\xe8\xb1\x0d\xacO!u\x9f\x8dQ\x9b\x9aM\xca$\xe9\xad\xa3\n\xb1\x1a\x8d\x8f\xa6|\x04\x94\xbe\x1b\x94<\xdd'\x98z*\x80\x8a\x95[>c\xb9F]\xee(J5u\x8c5\xe0*\x992\xdah\xb7\x8a\x05\x07;\x02\xba\xaf\xa2i\xe1\xd4\xe7\xf8\xb8#(\xe6\xf3\x11\xf0\xbe]!!\x89\x04-\xe7F`l\xd0hS\xf1\xa7@\xd7\x97q\x80J\xc4r\xc7|\xd2\xa1\x9e\x896\xe8`T\xd46!\xc6\x14\xeb\x1d\xe0\xed71y\xc98\x98\x08\x1e6pY\\\xfa\xe5\x8d)\xb8b\xae`\x94\xb7\x95s*%\xd2\x97(\x98\x8c\x03i%7\x14\x88\x99\x0c\xd2\x15\xdc|\x0c<6\xa4\xee\xee\x81*-)?\x9b4~V\x8ac\xa3&\xeb\xf8\xb6iG \xa2\xdfzG\xf1\xac\xf0j\xd18\xef\x16:!\xb6\xe3\xb8:\xa1\xf6\x19\xa1\xe7\xb1\xd9\x19<\xccbD(\xc9d\xac6-\xde\n\xdew\xcc\xf0\xc8\x92\xb1',\x12\xd3\x9d\xb9,\x18g\"\xb3z\xd91k\xb8\x08\x07\x1f\x8d\xc1\x81\x05^h\x95\xedn=\x06\xc2\x1b\x8b\xca\xd8\xb4\\\xc5I\xa9\xc9!\x1b\x95\xbaTu\xa3\xac>\x96&\x00t\xb9\xb55+\x88\x0b\xe8\xa9\xec\x03c\xedw\x8b\xba\xdc\xc6\xaa~\xaf\xc6\xb0\xdc\xfc\xeb-\xb7\xad\x9a\xbe\xeeU\x84G7\xebK\xa7[U\xbf\x10\xfc\x14\xcf\xaa\x06\x05\x1b\xe6\xfd\x80\xfe\xf5\x81\xf2\xc6,8\x8b\xa9S\x17z\xe2^:u\xe2z\xba\xd8X\xa6N\xe0R\x84g\xea\xe8\xe6\xd0hG\xb8t~\xfe\x01\x85q:{\xdc\xec\xf5G\x19\x8bi\xa1*\x17N\x88\xce\x88\x8bSc5T\xa4\xc72e\xb4\xc4\xf6Y\xfe\x03vS\x8eY\x9e\xa3\xea\xb1~\x1b\x04\xab\x04\xdb,\xf88\xd2=q\xf9\xbdf\xe7\x01\x1a\xdd\x1f,\xfdU\xbb#hU\x81\x1d\xb0\xcc\xe1\xe3\x08T\xcf\xe2\x7f\x15%\\\xe9|\xc9\xc9+Zi\xf3\n\xff\x07o\xbdc\x0d\xc8\xbd@\xe0\xd516O O\xc5\xbe\xa1Zq\x05\xd7u\x12D\xb3\xf6P\xb6\xddg\x16\x8f=\x8f(S9\x9c\xa8 \x85\xff\xd7<\xd5\xc5(\xda\xe0\x10\xce\xfdv\xba\xdd\xe9 \xadD\xcb\xc8\x98\xe2H\xe6I\\\x0b\xc8\xd5t\xdcF\xff\xed\xe0]\x00\xe6p\x0c\x82d\x0fe\xc4\x13\xd7c\x9f\xc6q\xc8\xfd\xc8\x01V&+}.C\x01\xd4\x05\x81]\xf4m\x8cY\x13\xe4<\xdav\x07A\xc6\x13?\x8big\x8e\xc6\\\xca%\xfa\xc8fAN\x1a\x90\x1bK7\xa5\xe5\xc9!\xbd\xfe\xa7\xf2\x9bur1\xaf\xe3U\xa7c\xb5yX\x9e\xdd\xc6a\x94\xc8\xd7\x0f\xa3f.\x1c\xe6\x08\x1f\x8c\x1f\xac'\xf9\xeaQ}\xddET\xb2\xa5V\x13\xcaV]\xd2\xdbF]\x128Z*%\xf3)J\xe6C\xe7B\x06\x08\xbf\x90\x0e\x12\x99t\x19\x0eh\x0e\x13'R\x02\xf4\xf8\xec\x16\xbe\xf2\xaa\x8d[\xfc1\xc0 \xe8\xc2zF\x9c3y\x89F\xaeN4\xf7tN\xb5\x10\xc5\x82\xa4 \x16\xc9\xdb\xdb\xf2\xc2\x9e8\x9f;\xcb\n\xc71t!b\xd9>\xe3p\x19}i\xe1\x86\xf0T'\xbe\xda\xc2\x85W[\xaft\xaa\xe2f\xe4T\xb05\x91\xcb\x96h\xcc\xc7I\x0bJ\xf5\xc8\x91.\xc9\x02\xe6\xa5R3e !\x03\x7f`/\x040\x9f\x1bzdf*'\x9cs\xe8n2\xb1\xc2\x02\xe0p\x02f\xae\xe7\xf2J*\x1a\xd2\x08\x82\xa9\xe0#\x0e\xc8\xe2l~\x02\xce\xc5\x9c\x128\x1b\xc7\x83Y\x1c\xf1\xc7.(\xe0/\xd8\x81b\xe2\xd0\x1a\xf8\x18%&\xd2\x90\xbd\xf8%\xf6ogVHS\x0e=\xb6p\x96\xb02fp\xddJ\x82\xf9\xb0\xfe\xd1~\xdf\x125K\xcc\x1c\x11\"\xa84\xf7\x9c6`\x03@\xe0\xb4\x123\xdb\x1c=\x8c\xd7\x03\xb9]\x0d'\x0e%B\xc8Py\"GZ%\xed\xb3\xc3\xc1t\xe1'\xcf\xe3\x19\x7f\x969[\xae\xcb\x9e\xee\xb3\x07\x0f\xb6\x1f\xed\x82\xc5\x12{\xb2\xcf\x1e\xec\xee\x0c\x1fA\xf9Cp:9\xee\xf7\xa3\x89\xb4g0\xc0y(\xedG\x0e\xad <+Ax&A\xd8\xef\x9f\xd9\x81v\xd6\x82\x8e\x1a:\x89=\xf0\xd4D\xb8\x02z\xbe\xa3\xad\x9d\x1a\x00\x9dS\x97^P\xe40%4\x15o\xd7\x1d_H~\x00\xbb2\xab\xc8\xee<\xb6,/\x89B\x8c\x90\xa2\xe6\x0d\xf6\xf5\x9a\x96\xe2\xd1\x8e\xd4R\\.O\xe2\x10U\x12\x8f\xee\xdf\x82J\xa2v\xc2)\xf48\xb5-\x1e>[\x91\xc3\xb6\xe9vH\xbe\xcb\xdcb\xc8{(8J\xcd\xf9Bm\xf7`\xfb\xb2\x88\xd3\xcbx\x9a\xc9\xee\xd5\x8d:i\xf5\xa22o\xac\x9b>\xddD\x89\xa8\x97\xd9H\xc6\x95Q\x14,\xd9\x04\x953F~\x16\xbfV\xdaM(B\x95\xc0N\xbf\xf3O'\xb7\xc74\xea\xba\x0e\x8b\x8aC!_\xfdZL\xd8\xac\x90\x98v\xd54\xcc\xbbi.V\x84B\xc2d\xfa\xc2\xfa\xed\x90\x1az\xed\x1b\xe8U;\x97\x14X\xb5\x06\x1a%\x8e+=\xda6i\xa5\xeb\xeaf&\xe7`\x81\x9b\x80\xb3(\xbb\xef50}57\xbb \x92\xc0\xc5\x98c\xac?\x8c\xa1<y\xec\xb2~?!\xc9\x17\x14\xddg\xb2\xe8DE^uV(w\xe9\xfd\xea\xaf\x82w5\x8f\xe5\x83\xd3T\xf2N\xcdg\xd2\xd2^\x02[BaK\xe6\xb1\x1c\xf9E\xc8\x19\xd6\x8f\xab\x15\xa3w\xdd\x93m\xd0\xc8\xf4\xc2\x85\x00\xc3k\x04\xed\x14^\x12\xca e\x10i\x88i>q-wF\xe3\xca)\xb4z\x98\x8f\xbb\\\x8f5\x89[\xbd\xb3\xfc\xd6:\xeb\xc3\xcdrP\x04\x01\xf4CG\xf3j!\xc5h\xda^\x0b\x01\x1a{\xa5\x15\xa1\xe0B\xa6ND[ \xce8\xfa\xa2\x0c\xe2\xe8\xf8x\xc4r\xf0/\x9aQ\xe6|\xc7\x91\xbf\xe4e\x993\xa7n\x02\xfd\xa1*\x1f\x99:q\xfd\x93\xf38\x11\xd5\x9b\xb1L\x0ez\x86\x8a0\xf87\xc2\x7f\xfb,v\n\x8anHE*\xbf\xdf\xf3\xcb\xcf\xbb|\xccb:\x0e\x8b/cA\xc4R`jgv!\xfel\x9cM\xd0\xd6\xb9\xd4\xdc4vm\xe1\xa7/$\x96(X&\xa8\x06\xd1r\xd0\xa2\xaf\xa7\xa5\x18\x01\xd3\x83\xf49\xc8\xaa\xde\xaeT\xc8\x97Zsf\x01\xd9\xaa\x99a6.\xf7\xb1z\x932Y5$\x7f\x1a\xd5\x97\x82\x1c\xd6\xeaB\x9a\xac\x08\xefF-\x19\x19\xa9VO\xc5N\xc2\x9a\xf2\x97Q7\xe5~b|\x12\x13eM\xfcaV\\\xf1i\xc0\xd3zMLUU\xf1\x17Q7\x0c2\xa3f\x18dE\xbd0\xc8\x8cZ\x1a\x0fP\xab\xab\xe5\xc8\x16\xb4\x14\xa2\x9d\x82S0\xda)r\x8av\x8a\x14\xa3\x9d<J\xa7\xf1J\xa0A\x1d\nZ\x8elGK\xa9\xd8\x91\x00\x89\xd1\xa8R}\xe5kDN|\xa3.>W\xddS\xdfoT!\xeb\xc2_E\x95j+\xae\xd6\xb1\xd8\xde1\xfd\xcb]\xbe\xaa\xc8\xb7\x031\xdcQ\xf01\xa8\x91Q\xd6g=\xd70 \xad\xfc\x863\xc5\xaby\xd7\xaf\xa6\xb5\x98Z\xcc\x1c\xe5\xbc:\xcaXG&\xaf\x0d\xac\xea\xfa\x89\xfc\x0e-\x1e\x95\x8cw-B<8\xc8(0\xce\xd1;E\xf7\xaa@D\xe8\xd5\xb4\xe7)\x98\xf6\xb0B\xd0^!\xae8\xe3\xafp\xcct\x13UHPM\x94l\xf9M\x1cj\xe9\x02\xda\xdd\xb5=\x19\xa1\xdf3\x108P\x9c\x03\xba\xf6/\xf8\x06\xfa\x1c$'\xeb\xd6\x8dG[E\xfc\x1b\x1bx\xd9\x87D\x93\xab+\x91\xaf\xc7*\xc0\xb2o\x8b\xb2\xe0\xc6\xb4\x1e\xca\xe0\xce\x1dV-2\xae\x16\xaa\xce\xfcm\x0cYM\xa0a\x12\xa5>U]\xc6`K\x81\x12\x88.\xcb\xb8\x10\xc0V\x17\xb2\xe3\xae\x8d*Uk9\xee\x02x\xe2_,\x04\"gg\xb8}\xed\xa1\xd8\xdd\x06\xfdR\x0d\xb2\x12\xf2|\xbd\x01\xa6\x86CqX\x18\x88\xe6\xa6)\x88\xf2\xcf\xa1\x1d)\xb0o\xa2R\x0d&\xee\xedY\xcc\x9e\xe9^`\xd6\x1d*\xc1N7O\xef\x01\xb1XR\x9e\x91\xd7g\xe1\xaeQ-\xea\x9d8\x12\xd1\x91\xa4\xa0t\xe2\xf0\xc1)'.\xd3i\x01R\x07)\x071a\x06/\xfbP'\xe5\x10\x9d\\\xdenC\x15\xa0\xfa\x81%\xf0\x07\xdc9\x93\x01\x8f\xb0\x90\n~$\xca\xe0\xad)\x88\xd1\x0d\xfd\x94\x1f\xc8\xd0\xc1Dv;\x14k\x8d\x89)\x04 J\xdej\x1eb\xb5\xa0\xff\xbd\xff\xbeW\xcd\x97\x87\xa2\xfd\xf2\xd20\xc8e'\xeec\xb6\xb9\x99@D\x9f\xfe>\xeb\xfdw V\x00q4\x89 \xd9\xf77j\xb5\x19\xea\xf7%Ik\xbfB\xd8\x12\x95\xc3\xcb\xf0\xd6`\x82\xf2{A\x02\xb8\x18h\xac\xc2<\xe1@\xb3q\xbf\x9f48\xf61\xd0\xb5\xcb>Q\x8b'\x7f\xcb\x17\x18\x86\x86\n8\xae\x8b\xf8Z\x00mc\x1f ]i\x06*)3=\x82\xd3\xbc\xdd\xc5\x8beA7\x9f\xe6\x99f\xc2JwG=\x01\xd8\x8bZ\xb3}\xeb\"QOPD\xdf\xf2\x8b\x15\x13\x8c}\xb8\xba Fe\xaf%>-J\xda\x06\xc0\x14>>f1{\xc2|\xb6\xc9\x86\x8f\x9b\n3\xd9\xb0t\xa7\x07\"\"\xb9?\x04\xa0\xed\xe4\xe3x\xe2j\x0eW\xad\xdd+Z\x83.\x0e'\xa0C\xe9\xf7ckaS\x05\xa9\x1e\xf9\xad\x96>\xb1\x03\x15\x8eN~N\x81\x8fl\x97\xfe\x9a6*#\x9f\xb8M\x9eV\xd0\xc8jo)\xd0(@ao\x03\x1a\xe5\xcdh\x04\xd2\xc4\x8eh\x94\xba,\xc7\x10\x0e\xfd\xbe%\xf0PK`\x03@\x1ah\xe3\xeaJ\xbe\xec\xb3q\xe3DS+\xb3\x9ao\xcd\x9e\xc8\xab{\xe2;\xf2V\x9c\xc4\xd4M\xe9\xfc\xc3 \xcaI\xcfa\xd2c\x81\xf6h(\x1b@\xd5-i\xe4\x0e\x19\xa2\xa2\xc7\xf2\xf1P&~\xc4\xae\x17}\x1fN\xc6\x01\xe0\xb8\xff\xf8F\xfdv=\xd5\x18N\xe05\xf0WJ8\xc9p\x8b\xe6P\xd7\xf3\x8e!\xdd\xc74`\xb2\xdf\x8c\xc9\xb9\xb4/o\xc6\xf5\\\xe9\xc1\xad\xa5B\xd8\x0e:\xac\x05\xc9l\xf9\x02\xbb\xec\x8bAT\x81X\x80\xe3\xb4\x0b=\x0d4,\xedNO5\xee\xdf\x07t\xc8\xc7\x81FO\x9bIi\x88\x88\xe2\xa3\xa7&\xec\xebp2\x8e\x01\xe9\x82k\x10\xd6[\xe9Yq\x15\xb7\xe8\x8c\xa8\xaf\x0c\xf7c\x0f\x10Z\xe4U\x92\x1e\xb3\x0d(&\x15\xe0w\xee\xb0P\x117\x176\xdcp\xb0\x8aW\x8e\xeb\xe1\xa4\xc8_n\x87\x96\xd7X.\xda}\x80.\xeb\xa4\xab\x03\x16\xc9\xa7\xe8|\x89\xd9\xfc\x0f\xe8_7\xe0\xca\xaa\x9a\xff\xbd-y?\x11\xdd\xd2\x0e\xc0\xa9\x9dt\xec|\x93+\x89k1q\xfa\xb7\xd79\xca\x81\xc2\x9b;?\xff\x00\x84\x92;/\xfd\x97x\x0b\x91;;\xf7\xbf\xcf\xb3N\xc1\xf5o\xec\xdf\x8e\x1c\xac\xca:_\x13\xack\xf2\xc6u\"y\x1bl\xb1F.2\x0f,\xe1,fpU\xe6-.\xb9\xb4h\x1cwZuU&\xab\xcd\x7fh\x8642\xc1\x03W\x84\xbf\xfa}\xee~\x9c\xbdP\x93XA\x10)\xd8\xf87`\xa0x\x86\xaf\x12\xab\xa8\xf2\x9b\xa0\n\xb7Ct\x08~\xe5#\xd0\x9b\xdb<\x05\xd2B\x06\x1a\xd5#++j\xe3\xe3\x08x\x10%\x83\x1b\x1e#\xad\xbe\xaf\n\x89@\xc1:\xa1\xa142\x11\xbc\x95\x89h\xdc\xa6\xb3\xca6\xddr \xeb\xc434\xb2\x96-\xfd(\x97\xb7\xfc\x8c\xf5\x10\xd6\xba\xd2\xad\xc7\xa9\x02\x9c\xd2\x00i\x0b\xaf\xdcD\x8fY\xae\x81\xb3\xe0\xc0\xfd\xb2\xa7\xa9\xe4\xc0s\xc5\x81\x8b\xbcT\xe3\xc0surH;\x9c\x1c\x9aN\x0d\x96\x13\x03\x9c\x16R\xf8\xe8p\x02N>\xfa\xfd\xbc\x0b\xdd\xbc\xce(\\O}\x06\xce\x11\x99\xc7\x02\xb0/\x10hHxN\xee@\x0b;a8\x1es\x91\xcb\xc7\xc1\n\xb2\x14\x82\x18 \x93\xc7\xbbk\xe3<\x9e\xa1B8C\xb5\xb3\xa6)B$W\xc1\xbf\xe5)\x0d\x91\xdf_\x03\xf9eo6\x1a{\xd3rd\xc8\xf4\xcf\xe7&#\x9b\x13,r^e\x91\xd3*\x8b\x9c\x16,r^\xfe\"Xd\xb3ekO%G,f\xaa#xn\xb0e\xd9 9\xbb\xe6\xf2\xf2t\"nv\xf5\x07\xf4\xaf[\xda\x03m\xbe\xc1\xe9\xcb3;C\xfa\x82\x9b\xe9K\\\x1aY\x1a\x17_R\xdb\xcd\xb7j\xb1\xf5\\\x84[6m\x88\x16!\xe3\x18\xb4\xdcx\x97B\xd3\xb9\xc7V\x1e\xd8WN\xa5\x81\xa21\x1f\x8b\xa6\xcc3\xd0n(\xc7sf\xfe\x12\xf2\x95\x13\xc6*F\x97\xf5\xc0$\xbc\x99\x97S\x9cF\xe9_\x98\xc4\xad\x04|C\xa9\xa8\x0ep\xaf\xd4*\xa9\xa7\x9d\xad0\xe5\xb1/A3\xbb\xb4`\x9f\xb7<\xb69\x14[\xc3\x99\xbc}2/\x9c\"\xac\xc4\x9b\xa9s\xead\xb1\x1c8\x1a\x00\xd9Y\x83\xe1\xf2\x87\x1a\xf8\xe2H\xb9\xe9m\x87]\xe3\xf5v\xf2\x02%+\xcc\xdd4\x17\x05$\xcct\xc3\xbd}6\x9e\x81\xcb\x8aH\x19\xf1!u\x8f\\\xd4\xc1\x01h \xeeM= nH`\x91\x89tb%}L@\xa8|e\x93\xdfbD\xa3\x1e\xe0?\xect\x94\xf2\x15\xbb\x901\x0d`\xbf^\xa0\xf7\x8d\xd2%2\xac-\xf4\x07\x1b\xe0~%\xbd\x19'\x10M!\x8e2~\x91A,\xa6\xe44u\x0b\xfb\xcd\x04\xe3G\xc4\x88)A\x89BbNlq\xa2[I#\x86\xfb\x96k\xab\xcd\x0d\xc7\x19^\x8c\x94F\xe1\xd6E\x11\x89\xa1\xf3jd-\xe9\xffC5\xcf\xb8\x1da\x14\xff\x8c,\x05\x1f\x043\xbb\xe4O\xfa\xc2d\x8d\xf1\xfc\x01\x03q\xbb\x13\xadaOf\xe3\xb4t\xdb\x8b?\xe2R'ct>\x03W\x9a\xa9t\x80\xc8\x0e\x98\xd2\xec:\xe0P\xdcY\xa0\xe0\xdc\xde \x86\xf6lbnG\xb8\xe2\x1b\x8bbh\xe7\x06Q_\x89Ri\x89R\xa9G\xaf\xaeXF6\x88\x8b;\xc9nCI\x14\xc3\xd5/\xc7C\xf5n\xd7\x90\xf5Gk\x8c\xb7\xdc\xb4gr\\\xe8)\xdc\xc2\xb5\xa1\x087wBy\x9b\xd9\xf4\xfeB\x1d\xb6q+\xa6\xa8\x00\x97\xbc\xb4\x94\xb3\xca\xae.U\xb3\x1c\xe2\x03NOp\xc9E\xb8\x00}\xcd\x05\xf9\xb2\xc5\xfd\xcc\x07OR\xd9\xb4\x03\x95\x85\x95#I\xe1\x1adr0=\xa9Q\xca\xc1\xf4\xc4-\x0d\xa0\xc5\xcf\x02\xd7\xf1G4\x08\xc4\x96)\x9d\xef\x001e\xa3\x12\xa9\x89\xeb\xe38\x8a\xc2\x9bu\xfbvA\xb0\xeb\x14\xb1\x9c\x01\xb1\xbc\xba\x02BY\xec\x9c\x0b\xdd\xabv\x95\x84b\xa2FEU$\x19 \x98 n\xb1\xf5^\xb9\xbcn\xa7r\xa2\x0bD\xff5>\xa6\xe8\x0f4\xaa\xba\x13\x0b\x8cl_\x1d\x92\xce\xc8\x9e\xf3\xa2\xe7&\xea\x1ac)~\xde\n3k2\xad\xc8\xcc\xee\x191\x18\x03\x99^\xbf\xc4\xed\xcb\xf4\xba7]\x15K\x8c\x0epc2\xb9\x1dn\x0c\xc5N/[p\xf0\xd8/\xfe\x8fd$d\xb8X\x1fG\\\xfd/\xd2\xdd:[\xabB\x19val\xb5\x0b7\xc6\xac\xc4M\x99s\xea\xa6\x11S\xa62[\xca\xec_]\x0e\xac\x96)\x14T\x1c\xfc\xa3\n\xf2\xb3\x01\x91\x96\xe8k!w{\xac\x0f\xde\x1eX\x9f\xf5\xee*3\xcf3?\x0cfL\x0dv\x19\xcf\xb8q\xf1\x8d\"I \xee\xeb\xb65\x11Z\x02\xf4\xc2\xb0r\xc7/ES1:X\xf5\xa5\xc9\x14\xb1Q%\xf4\xe14\xc2\x8aC\x8f\xcde\x13f\x19\xd1\x95i\xabS&\xbd4`\xee\x98\xb2\xb7Q\x8f\x18BH\x04\x9c\xfb\x12yj\xce\xb8\xf8=b\x9f\xf1\x8cO3>cy\x14'3\x9e\xf0\x19\x13\x88x%\xb0\x8e\xdd)\"sC\xf8\x9e\\t\xcec\xe7\x8b`\xba`A\xc4\x002K\xff=O\x19F\x1fc3hMpC\xf1\x9c\xa5\xf9t\xca\xd3\xf4\xde\xdc\x0f\xc2<\xe1,X\xae\xe24\x0dNB\xce\x9c\xf3\x05\x8fD\x13wu\xec\xbe\x0b\x13\xeb\x1eE\xcf\xe3(\x0df<aY\xcc\x12\x1e^\xb28bwE\xb7\xee\xb28\xc1:X\x16\x8c\x02\xb9?\x1b\xd8\"\xd9\x00(\x80\x04\x17\xfa\xb2\x04\x04P0\x17\x9cd9\x92\x06\xee\x93fqVml\xa6zByg\x0c\xb0\xc2\xe8\x95\xfc1\x87\x1f\xc5\xc6\x95\xac\xd7\x17\xd8\x03i\x94\x9e\x81A\x84(\x80D\xc7\x95T\x07\x8d\x8ag.\xf3\x07\xe2g\x07V(u\xa6\xc8\xac(\x96\x82\xe4PZA\x92:+j\x7f0{_\xd0\x10\xa4\x8a\xaa\xbf\xf6\xe3\x19y\xc3\xd6\x87\xab\xf6\x1d\x16\xc5\x1b\x9e%\x01?\xe3%\xc5\x99\xc5\x1c Q\xb0\\\x85\\0E\n\x0d\x15\x12\xdf%\xa9\x92z\xf0\xd3\xce\xd4c\xd4\x88k\xe3+\xa8\xfd/\xe38\xab\x8b\xd56\xde\x86\xbe\xc9\xfa\xb7\xd6\xbd\xa2?\xeb\xf5P\xcd\x08Do\x905Ht\xac\xa4\x94\x8cW]\xc4\x80\xbe\xf2l;\x8dM\xc4\x00\xfb`\xbfO{\xf5k\xb0s\x82;\xa3d%\xa6\x0e\xf8]i\x12}\x8e\x87\xc1\xd0t\x87\xfef\xee\x04\xae\x8d\xc7\x0f\x00\xd6\x10\x98\x11\x80\x0e\xa7\x8d\xa0Fl\x9a\xfa\x98\xea\x9e\xc3\xf4\xe7\x83h\xc9w\xbaO[Gn_;`\xcf\xf1D\x023\xd5\xe8\x84\xb114Z\x0cT\xb2A>\x80N\x04m3*?\x1c7\x1f\x1b\xc6 \x15\xbd\xc8\x02\x89\xb5N\x0e\x84'T\x9dc\xac\xf0\x96:\xbbh9S$k\x9d)H\x13\x97\x8fz\x8a\xa8\x8b\xa6\xa5\x90\xe0#\xe9\x89\x9b\x14\xb7JOY\x06\x90k\x06[\x86\xe7\xe3\xfa\xc5\xfc\xea\xe5\xf3\x9b\x03\x88p}\xa5NYm\x91\x96\xad\x86*\xe8\xf9\xfdV\xe7Q\x9c\xca\xd6\xbf\xbd\xd1\xe8\xa2\x1f\xaf\xe28\xe5\x15\x19p\xe8\xa6]\xfc\xd3\xa2\x895H\xad\xcd\x89\xa3\x0eC\xaf\xfd4\xe5\xb3B\x10\xa3\x05\x84\xc6K4\xc1\x9c\xcf\xea\xf1\x8cn\x17~{\x86JG\xcc\xf3\xbd\xf1Qt\x94\x1c\xe5\xdb[\xdb\x0f\xe1\xef\xa3\xc9\xbd\xd3u\xc1\xac\xd0_\xcc:\x89\xfb\x85\xc2\xe2)\x1bnm1\xe5\x80.\x93\x0eX\xb7<\xf6\xe8\x11\x1c\x13\xff\xdb\xef\xfc^O\xde\xff\xcf\xd4=iAq\x9b\x97\x8a\xfc\xcao\xbc}\xf5r\xa0\xc0y\xe9pW6?\x04\xc5Fm\x19\xdd.p\xff_\x83\x9cJ\xcf1~\x19G\x9b\xd3\x98'S<\xc6e\xb1DD\x17o\xf2N>\xea\x85\x8d\xdb\x88\x11o\xd3&\x96\xdf\x0b\x06\xb3 ]\xc5\xa6L\x85p\xa9)\xfaV\xb3\x81\x08 6<w\xa9\xd8\xe9`PR\x88l \xbd\x08\x0d_\xe0|\xc9\xa5\xa8\xdd\xb2\x12\x19\x86\xea\x06\x03~VI\xa4#\x19\xac\xb1\x86\xba\x85\xe8\xa2\xd8\xfcU\xfb\xcd\xcb\xa4&\xffk\x88\x93\x97\x839\x1du\xa2\xabu\xa5\n\xb1\x1ac\xd6i\xb4\xdc!\xc6g\xe1k\xbe\xafQ\xdd.\xb2\xdbt\xf26l7\xc5\x8f\xbeE\\\x99K\xc2N\x8b1\x8dUC\xeb\xe0MQ\xa6\n\xa3T\xcd\x99\x179A-\x9a\xf6\xca\xce>\xa5\xa2\x9dg\xa7]W\xe0\xcc\x03\xa7B\x1e\xab\xf93\x05\x89#\xf8\xe4AY\x0b\xdbg+\xc5\x96.@\x89P,\xd0\xd4\xb2@\xd3\xe2\xc7\x01\xeb\xe1za#\x06\xbea\ny#\xeb\x8b\xcf\x17\x1d%\xf1u\x86\x0e\xd6R\x9e\xbd\x0b\x96<\xce\xb3\xf6sO!\x00\x8aH\xe1\n\xb7\xe9\xbb\xc4\xa7\x06y\x94\xf0\xb9\x18@\xf9\xcb\x81\x88\xa7\xe0UNt\xe6\xce\x1d\xd6\x8b\xf8E\xf6.\x98\xbe\xef\x81u\x90J\x86\x05\xa4\xba)\x12E\xc5\xf5\xfb/\x8f,\xcb\xbasa\xd9\xff3[\xff\x97\x95\xfe/\xb5\xfe\xb7hpj\xf3@.\xfb\xca\xd8f\x18\xef\xbf\xd0\x98\x8a\xb3\x15B\xc8\x80\x0c\xa7 \xa3\xd7^\x92A\x15\x05.\xf1\xcf\xb9\xd8XE\xb3g\x18\x1ct\x7f\x7f_\xcf\xb9\xba\x92Q\xdb\xcb4\xb1m\x0fvvv\xd8\x88M\x9d\xb9\x83\xa6\xe8z>\x1aGmI\xcc^\xb2}\xf6\xf3\x0f\xd2\xaf\xd6\x90m\xb23\x97}\x82\xd2M%\xaa\xa8\x03\x07t\xde9\x05\"\x18\xec\xd5\x15\x83\x01\xb2}\x0dK<\x16\xb4O\xbbE\xda!\x1e\x0d\xaa\xfb\x1aT\x1d\x0d\x84\x9e\xae\xb0\xabl\xa1h\xbb\xe6\xc4\xae\x8b\nA\x08\xe8W\xb1\xb3\x91\xc6\x03\xd2b\xae\xb2\x8c}'@Hu\x12O\x84\x1e\x0b5 \x05\xfc\xa4$\x9c\xa6\xdf\xa7\xea\x1eT\x839\xbd\x0d\xcd\xdaP\x96\xd5\xd1\x96\xdc\x8b\xd0\\I \x01bp\xec,\xbb4\\Ctn`\xb9\xe5c\x88q\xc6\xf8\x8b\xdf\xb7\xb2\x05\x1a\xbe\x98\xd5\x11\xf3\xd1\xda\\\xb3\xe0\xca\xa4\x01\x87\xd8\x0e\x9e\xb2\xb8\xc9\xb7\x08\xbf\x98r>K\xd9\xd2\xbf\x08\x96\xf9\x92\x15z\x8b\x0c\xa1\xf2}9\x1b\xd9\x1e\xde\xdf\xbb\xffpg\xf7\xfe\xde\xf5\xdbk\x07\xe76\xad\x17\xdd\xd5\xafx\x04bG\xee\xb8\x1d\xcb8R\xc4^\x9c\x14{q.\xdd\xc0Kk\xf258\xe5\xe6\x8d\xd8G\x13\x9bf\xc4\xd7\xdd\xfb\x02\x8b0X\x04\x99\xeaZ\xbb\xc1\xc0i\xf9)b\x0b\x12\xa3W^\x11\x0cr\x00\x99\xd2\x1d\xc2m K\xcb\xe46(\x9f\x83\xf6xW\xeb\xae\xb1\xb32\x044q\xf3\x01\xc2F\x9a\xc9y)\xff23\xd3\xa6\xcc\x10<A\x92\xebP\xa2\x1a\xe5\xe9o\x11t\xba\x91s&/\xc8\xa4\xe3\xa4\xc1\x94w\n\xc6\xe9\x0dw\xdc\xf3\xf1t\x82\x86n)j\x1c\xa7\x1e\xdbh\x8cm#j\xf5\xfb\x11{\xa29\xd2\xa3\xdbg\x9a\x90\x10\xcc\xb3}\xb1{:\x89\xeb\xb1\x84\xac`7\x0f\x97\x1bp\x8e7 \xa5+\x15\xebG\xe5%\xd2\x0d\x19\xbe*\x07\x83t\xf7\xb1\x0b\xc6`A\x94\xafuW\xa99\xd2\x87z\x94\xa8(\xb5\n\xc8\xc502\x9d\x9b\xc8\xc7Y\xa9RM\x81\xb5\xd8\xdc\x8c\xd4\xf0\xb2F\x9bw\xd0\xffG\xc5\x99<\x94\xae\xab\xe3`\x06\xf6\x8fMF\xe8\xeb\x03\x87\x91SsC\xd3tyMg\xe8U\x16XeA\xe1\xb0\xcc\x0f\xff\x80\xfeu+T\xca\xf4\xb6\x1b\xd3\x87\xce\xa0\x99z\xf9vg\xbb\xe5g\xe3A\xc2\xe7\xcf\xe3<\xcax\xd2q\xeb2\xf7\xad\x1c\x8cV4\xf0i{Ul\xd9\xab\xe2n{U\xdaA\x00\x91\xcb\xe8v\xe2\x1b5G\xcc\xf5\xfd\xa8U5\xd0\xef\xe7uM\nu\x86jm\xa7X`\xd6\xc6\x8a\xfd.ma\x7f!\x90\xa1\xa9\xa0\xf2+\xc6\xdf\xb6\x1e\xbc\xe1\xf3\x11K\xba\x9dH\xb8\xf27\xa4\x99\xc0\xd2\x8bX\xbb\x8b\x86vM\xe5\xb5\xb0\x1cM\x15767sut\xa9\x9cV6\xb6 F!yc\x8c\xd8\xc0Ny\xf6F\"\xe8\xf74\x8e\xadr\x109\xfa\x93%\xd6\xff\xcd\xc4ZZ\x08\"j\x81E\x1e\xabyi\x8eJ\xa7\xbd\x1b\xd2io\xc6F*\xacb\xeb\xee\x00\x86e\x83\xe7o\xdf\x8a\xe9\x80\x97\x01O\xa7\xfe\xaa\x94\xa8\xea\x89&\xa8\xd4\xce\xd2\xbe\x07)\xb7\x0cFT/\x8b!\xdb\xd7\xe5g\xbff \xffY\x1e$<e~\xe9\xfd\xcej\xb4Tqy\xad\xf9\x99\x92^\x98\xa2\"\xca\x82 \x9e\x9bC<\x07\x0b\xf2\x82\xbct%b\xc2c\xd6\xef\xc7\xec K\x1e\xbb\x00a\x19\xc3G/\x14\xc3\xd5\xc7\x80\xf5\x05\xf4\x9f\xee\xb3!\xb0\xc1\x82\x03\xd9\x19\x02\xdd\xd9\xdec*\n!\x00 \xc6\x02O\xf7\xd9\xfd\x87E\xd9\x07{P\xb6)\xff\xce\x1dv\xff\x01@P\x10\xc6\xa3#\xf0\x1bU*'\x86\xbb\xa0\xcca\x82X:\xd0\xd7\x18\x9b\xdc\x90\xde\xbb\xef?\x00C\x12<A`W\xb7\x1f\xca\x0c\xd5\xc1G\xe5+\xddCH\xdd}P\xa4>\xda*R\x1f\xed\x15\xa9\xc3\xedm\xb8\x0f\np\x02\x18 \n\x8e]\xae&\x02\xdcz\xff\xf7\x1f\xfc~\xafq\x1d\x9av\xef\x84\x1d\x85\x8e\xb1 \x82\xc178j{\x15D\x96a>\xabK\xb5\xea\xbe;\xd1\x05\x87\x1f\xdc\xe2\xc2N\xe4\xec\x0co\xe2\xdb\x93\xf4]/\x1a\xee\x1d\x1f\xf3\xf4\xcbx\x96\x87\xbcW\xa7\xda2T\x90\x1eJ\xc1EY\x0f\xc4\xd3k\xb2UQF\x00\x89*\xec\xb1X\xbd\x96\x1b\xd0\x07\x93\xdd\x08\x1cq\xb8}Pw\xf3\x1b\xcb\xac\xfb\xdb\x10\x95\xb3\xc8S\x1d\xc0\x90cd\x1f8\x12\x99r\x9c\xd2\xef+\xb5Ca\x9c\xc0\xba\x9f\xbe\xf5\x88\xe9/\xc7\x04\xa8}\x87&\x8b\xd3x\xb9\x8a#A\x0e)8\xa8\xe7\xd9j5b\x97\xc5\x0cZ\xcb\xf9y\xb6\x88\x93\xe0\x1b_\xf4\xe4u\xbc\xcaW#v\xd2\xbd\x1a\xff4\x8bF\xecx\x8d\n\xafV<\x81\x8fA\xcd\xf3n5\xd3\x11;l/\xf9,\xcf\x16/2\xbe\x1c\xb1\x8b\xf6\xc2\xa2\xd9C4{{\xdb^:\x16\xc5\xb7G\xecY{Q\x7f\x15\xfc&\xbf\x14}\x19\xb1\xe7\xed\xc5O\xfc4\x98b\xe9\xf7\xed\xa5\xe5\x91\xe4U{\xc908\xe3ox\xba\x8a\xa3\x94\x8f\xd8\xeb\xf6\nA4\x8fG\xec\x8f\xb4\x17|\x11\xcd\xe3\xe7\x18\xd8\x9d'#\xc6y{\x95\xdf\xc8\x97\xabw\xf1k_\x8c2\xebP>\x8e\xc2 \xe2?\xf2\xc3`\xe6gq\xf2\xa9?;\xe5#\xf6\xaeCE\x85]\xe9\x88}\xb9F\xf1\x11\xfbi{\xe9\x02u\xdf\xe6\xcb\xa5\x9f\\\x8e\xd8\xcb\xf5+} A1G\xec\xcd\xfaU\x11~\x9f\xb5W\\\x04\xa7\x8b08]d\x82\xe1\x18\xb1\x9f\xb5\xd7H$\xa6\xa4#\xf6y\xf7\xd2#\xf6M\xf7\xc2\x9f\xc6\xb3\xcb\x11\xfb\xb4\xbd\xc2\xcaO\xfc%\xcfx\x92\x8e\xd8\x8f\xd6(\xfe&>\x1f\xb1\xdfh\xaf\xc0/\xf84\xcf\xf8\x88\xfdV{\xd9\x05\xf7g\xd0\x91\xdfl/\x0bF\xb4\xe9\x88\xfdZ{Q\xb8\xc5\x17e\x82y\x1d\xb1\x1f\xb6\x97\x8f\xcfxr\x16\xf0\xf3\x11\xfb\xed\xf6\xc2\xf38\xce\xc4\xc2\x8c:,\xb4\xcf\x830\xe3\x89\xb6\x9a\x93\x0e\x95^\x0b\x88\xe3t\xc6\x1d\x8aO\xf3$\x1c\xb1\xa0C\xc9t\xba\xe0K\x81\x83~\x87\xc2o\xb1\xb0\xd6\xf7\xbcC\xade<\xe3\xe1\xe1\x85\xbf\\\x85|\xc4\xc2\x0e5\xbe\x145~\x9c\xf8\xab\x95\xf8\xc6\xb4k\x8d\xe7q\x18\xfa+\xb1F\xd2\xaeUFl\xde\xb5h:b\xab\x0ee\x0f\xa3|)\x9b\x9eu(\x8e\x8c\x8e\xac\xb0\xe8P\x01\xcc6e\xf9\xb3\x0e\xe5\x0bg\xf7\xb2\xce\xb2S\x1dd\xb8F\xec\xb4C\xe9w\xc9\xe5\x8b\xecU\x9e}\x9ag\x99 \xeb\x97\x1d\xea|\xe9'\xefg\xf1y4b\x17\x1dJ\x7f\xea\xa7\xfc\x0b\xff2\xce\xb3\x11{\xdb\xa1\xfc\x8fx\x92\n\xde*\xf1O\x97>\xae\xb7\x11;\xe9^\xf1m\xe6/W#v\xdc\xa1F\xb1a\x1c^d#\xf6\xc5z\x15\x80|~\xd5^\xe7\xb5\xa2\xb7\xf0\x91__\xa3\xc2\x8bh\x1a\xe63~\xb8\\\x89\xd9\xfcq{\xcd\xa2{\x10i\xe4\xc5\x1a\x154\xaap\xda^\xed3\xceW_\x04\xd1\xfb\x11;\xef\x00e\xc1\xff|%H\xda\x1f\x1d\xc8\xd7\xe6\xb2\x02ap\xeb\xc6\n\xeaw\x03i;;}\x96\xa6\\p\xf8\x87E\x87\xc8\xd2\x9d\xe4\xd8\xb4\x9frV;K<\xef\xa4F\x88:\xb5\xf5\x9eh\x8b\xd4\x1c\x8dg\x05\xbc\xd9\xbc|M\xcbW\xbf|\x0d\xcaW\xeal\x8az@\xf9\x8a\x87\xbb\xb0L\x88<6-\x7f\xad\xca\xd7E\xf9zV\xbe.\xd5k\xe3\x89\xf7\x15\x87\xe0\x03\x8f\xa8#/\xe6m\xef\x1a\x11\x8e\x8a\xbc\x9d\xedz\x9e_\xe4\xdd\xdf3\xa2\xe5\x14y\x0f\xef\x1b\xf1\x80\xca<\xe3\xf8\x1d\x96yF_\xa6E\xde\xa3\x9dz\xde\xbc\xcc3\xfa\xb2*\xf3\x1e\xd6\xf3fe\x9e\x01\x97\x85\xca\xbb\xbfe|\xef\xac\xcc3\xda\\\x16y\xc3\xadz\xde\xa9\xca{\xb4c\x8c\xef\xb2\xcc3\xc6pR\xe6\x19\xdf;.\xf3\x8c1\x9c\x17y\xf7\x8d\xbe\x1c\x96y\xc3z\xdeE\x99g\xcc\xfb\xdb2\xcf\x80\xcb\xf32\xcf\x98\xf7\xf7e\x9e1\xef\xcf\xca<\x03.\xaf\xca<c\xec\xaf\xcb<c\xec\xef\x8a\xbc\x07\xc6\xd8\xbf,\xf3\x8c\xb1\xbf(\xf3\x8c\xb1\xff\xb4\xcc3\xc6\xfe\xb2\xcc3\xc6\xfe\xa6\xcc3\xc6\xfeY\x99g\x8c\xfd\x8b2\xcf\xc0\x89\xaf\xca<\x03.?+\xf3\x0c\xb8|^\xe4\xed\x1ac\xff\xa6\xcc3\xc6\xfei\x99g\x8c\xfdGe\x9e\xd1\xcf_/\xf3\x8c~\xfe\xb8\xcc3\xfa\xf9\x1bE\xde\x9e1\x7f\xbfU\xe6\x19c\xf8\xcd2\xcf\x18\xc3\xaf\x95y\xc6\x18~X\xe6\x19\xf3\xf7\xdbe\x9e1\x7f\x7f\x14\x94\x94\x8f\xf6\xea\xf6\xe7\x7f\x04\xeb\xfc\xd1Z2\xe7e[\x06\xac2-\xd3\x00V\xa4e\x1a\xd0J\xca\xcc\x87\x06\xb8b-\xd3\x80W\xa0e\x9aD^\xcb4\xa0\x92k\x99\x06XR-\xd3\xc0\xebP\xcb4\x800\xd52\x0d \xcc\x8b\xcc\xfbCc\nWe\xcdG\x06\x10fZ\xa6\x01\x84\x85\x96i\x00\xe1L\xcb4\xbe\xb9\xd42\x0d\x08\x9dj\x99\x06\x84.\xb5L\x03B'Z\xa6\x01\xa1c-\xd3\x80\xd0\xb9\x96i\xa0\xc9a\x91\xf9\xff\xb0\xf7\xaf\xddm\xe3\xc8\xc2(\xfc\xf1]k\xfe\xc2\xfb\xa5\xa43;![\xb2\"\xf9\x9a(q\xb4\xdd\x89\xd3\x9d\xe9\xc4\xce\x8e\x9d\xeeg\xb6\xac\xf6\x82)Hf\x9b\"5\xbc\xf82\xe3\xeco\xcf\xff8\xbf\xe5\xf9eg\xa1\x00\x90 \x80t.3s\xd6:Z+\xb1\x04\x82\xb8\x14\n\x85\xaaB]F\xb46\x95[\x05\xb6\xb5\xa9\x9c\x14o\x0e\xeb\xc4\xef\x15{z\xc0_\xad\xc1\xef*\x7f8\x1a2\xda\xa8\xd3\xab\x1fP\xbd]^M\xab^\\\xdd\x95\x994yW\xf7\x8f\n\xf3\xa6\x86M\xd2\xd8+*IM\xfc\x10\xa8\xdbd\xf7T8R\x88\x9b\xa6\"g\xbd\xc9OI0g\"\xa4@^\xe7\xb3\x06\n\xc7\x1a(\xfc\x8b\xae\x17\n\xbb\x8c\xcd\xa7z\xbb\x8c\xada\xb5\\8\x1blU\xcbE\xcc\x94\xcd\xaa\x19\x1aw6\xd8\xdcn\xb4\xd84\x1be$\xc2\x8a\x1f&\x10\xc3\x18H\xbf\x06\x8e\x00\xea\xb7\xb2\xf0\x02\xb6\xb4\xab\x95\xb0\xbe|'\xed\xc3\xb6\x8b|xPru\xd6CN\x1d\x97m\xfcz/\xf0\xdc\xc1\x91\xd6L\xb0}\xddu3\x06G\x83 81\x06(\xc1pBcH1N\xb3x\xab\xbc\xeel\"\x0f[{u\x12\xe5\x01\xe4\xb8\xc5\x96\xb3\xeaSR\xe0f\xf9.\xa9M\x97\x8c\xd8\xb3\x81:{[C\xb7_ \xf9>\xdaq\x07\xdc\xebv\x11G\xab6\xcd5\xd9\x1amW\xc7\xceQzs\xa8\xc5\xe8=}\x10\xa0\xad\x1a\x04D\x10\xa0\xadj3b\x1a5w\xc9\x807\xbfU5\xb2\xf5x\xfd]ugDN48\x81\x1eD\x837\xf0\x03tX7#\xd7\x12\x8e\xa3\x00X)\x8d\xb3\xdb\x87.>\xaa\xdd\x02\xb2\xaaM\xf1\xc1\xaf\xf3\x14Y\x11\x8f\x84)\xc3\xf6\xd4j\x82\x10\xaf\xb4F\xf5\x98\x06z\xc2\xff\x8c\xf9H\xf5-\\j6\xaf\xbe&\x13\xc9\xd0\x19\x14&\xc5\x1b\xd3\xd1\x0c\xc6\xc2\x82D\xff\xda\xaalar\xad\xaf\xb54\xe7\x05ab\x9b\xe7\xac5\xd6\x1a\xec\xe4Y\xe5\xae\x1d\xb1s\xdd\xc7\x01n\x96\x06\xb8\xa9\x0c\x106]\xb7_$\xa9\x86;\xb8\xbfg0\x14.\xe7\xac\xa9\xcc\xb93D|\xc1\x83\x0c\x83\x9b\xd1\x1b\x98\xa3!G\xe2\xac\xf3\x00x\xcf!\x85\x97\xb0|\x0e\xcb^\xcf\x05\x8c\xea\xbe\xec\xc3\n&p\xed\xac\xa7\xcbY\x1f\x96\x8c\x8c\xb0\xaf\x86\x10+\xe6^\x99\xf4-\x0e\xc6\xb5p\xf7\xc7A<\x87\x0e:f,\x06!\xbdM\x1d\xd7E\x0f\n\xcd\x10\x88\xb3@\x17\xadi4\xc0\xab\xe8>\xb0\x01q\x8b)Q\xa4\x19\x944b\x924}\x9f5W\xc9%\xa6\xe0\xfd7!\x1b\xd5\x8d\xcd\xc9\xc6\xb3\x9d/<\xc10{6;\xc9\xe3\xc1B\xd4\x89\x9c!\xab\xc8\xa6NyT\xeb\x07\x12\xef\xd0\x19\xed\xed!)\x15\x14\xf5\xd9\xa6 \xac[\xe2\xef\x9e\xf8\xfbTKh?p\xf3\xc46]Y\xc0\x95\x87\xcd\xec\xcb0\xbf\xb5\x88i\xbc\xcb\x9a\x83A\xa0'\xd0\x92$VI\xe8BO\xb8\xd7\x82u\xa9\x14\xcf\xf9zU\x87r)\x1a\xa9\x96_\xf3N\xb7\xab\xe5+A\xe7\xab\xe5KQ\xbe\xe3\x0e\x12ZQ\xcb\xde Z\xbf\xe3:U^_\xf4^\x9d\xda\xb9h\xad*Y\xde\x88\xf2*;u\x88\xb1ws+\xb3\xf2\xc3[\x1eI;\x8e<\x9aT\x82q\x9e\xe0#\xb1\xee\xe5G\xaf\x18\x05\x17/!\x01\xf7\x9c\xdb*w_1\x0f\xa9(b\x0f`\x1fw\xc9\xc5`Q~p\xcc\xd8\x97\x8e\xdd\x04T\xef\xcf\x0e\x8a\xdd\xc9\xc9\x00\xa3\x8f]S\xa7\x8aG\xea\x87QC\xa7\x9cZ\x17\xed\xa6\xa6\xa13z\xe6*\xb9\xcbg\xad\xac\xfd\xe4\x87:W}\xb82\x1b\xc3\x1b\xa2\xe1\x08\xc2\xe5\xbcb\xf4]{>\x8a\xb5\xf8H\xff\xe0\x11\xd3\x0e\xafi\xc8M\xdb(w;\xbbr\xd5\x94\xa7\x9a\xa0\xf7\xe6 \xc8\x9f\xab\xe8\xf7\xa1q\xce\xd7\xf5\x8c\xa5P\xcc\xa3\xe3t\xd6\x0e\x8fi\xa9\x8b\xea\x84G\x11\x1f\xb6p\xa2)\x0f\xa7<\x98\xd3\xa6`\x85 M\xf0\xe9\xe0\\\xebM\x0bH\x83\xcfCt\xa7\xd4/\xc0\xb5\x08xH\x07\xe7\x9e\xbe\xc6]\xb3\xc5-\xa8\xd2#O\x18z~\xcd\xcd.\xd1\xd0\x91\x0e\xce\x93RZ\x8c\xbcE\xa37\xb9\xfc\x08c\xd8\x82|F\x18\x817\xba\xc2\x98\xa5\x0b\xe2[nq\xe4'\x11\xf1.ps4W\x0fDu\x86p\xcd\xb5=\xac=\x8fV\xc4oH\xede\xde\xc1\xea'c\xf2\x0c\x1at:\x9b\x02v\xe8\x14\xfb\x07\xda\xb5\xe2\xaf}tj\x15\x0e\xb2\xac>\x97\x83\xc6\xe0\xa0\xb9\xbd7\xa0aJcG\xf0\x1f\x19\xba\xbap\xdfPo@o\xfd\xd4\x11\xeed\x9d\xa1\xcb\xeb\xb0\xdd\xa6\xd8\xe2\x07\xce\xa1\xd3\x15\xfbn\xc3\xbb$~\x08\xde\x9d\x17\xd0.\x0fI\xcd\xd6\xf1\x83\x13rk\xd8<1N\"\x9cA\x13\x87\x9f\xd8\x81\x13\x9b\xa9\x01T\xf7e#Xp\xfc\x1d\"\xe6'&\x11\xe8\xdc.\xd5\x8f\xde\x95\x07\x9f</\xb8\xa5\x97\xe0?w\x818\xe1\xd4\xef\xf5L9\x8e\x80\xef%O\xe4\xba\x90\xdbj\xd4\x07t\xa7\xe9\xc8uzo\x1aSsD\xee2\xb2\xbdo\xa4EK\x91+\xa4\xc1y\x00J\xc2J,r\xd3\xb2\x1dj\x9c([\xe2\xb7\xb5p3\xf9S\xccJ*\xc3\xcc\x9c\xb7\xa3\x0f\xaf`\x02\xb7\"\xc6U\x16^\x92p\x1e\xd0yN\xd5\xbb\xc8$\xd1<\xe4y2\x88\xc2\xbcV,k\xa1\xa9\xb1cG\x16\x81\xc6\xda\x8c\xd0\xea'\xa6$\x89\xc21X\x92\x95\xe2hb\x1e\xc5?\n\x93(\xa0H\xb4\xe3\x01\x9a\x0c)_\x9d\xee'9\xd6<\x04_\xacN\xcd\x84\x11\xf9\x86\xc6\xf3\xef-W\xdel\xc2\x1878\x1d\x9c\x93\\$\xeb\xf3\xf0\x9c\xe9 \x8fW\x98\x0e\xae\xeb\x08\xe5\xda0\xeam#F\x89cl$2]s\x8c\xe6t\xc6\xc1\xe1\xdc\xdf\xe3&p\xc5\xd6\xb1\xf5\xf6Gco\x0f\xc5_=6\xaa\x88\x95\x03\xfdg\xbe\x1a]\x89S\xa9\xc0\xa9\xbc\x82X.~\n[P\xaa\x0d:ITb{\xaa\xf5\xd6\xb7\xae\xd4Q#\xec\xa4\x8e7\xbd\xf4\x93:\\\xd2\xc19\x0fb\x8a_x,U\x11\x13\xea\xfc\x06\xed\xf8\xdd\xc1\xf9\xb5\x8c\xecz\x8e>\xd4\xf8\x8d\xc8\xb7\x08\xaf\xec\x89 O\xec\xa08uR\x94D\xad#\xff\xd8n\xe4\xfch\xd2\x0f\x9e{\x15\x0e\xce\x8d\x01=\xc3bR(`\x8b9\x19\x8e_\xfb\xb1\x8b:q\x19\x98\x99o\xac\xe2\xf0\x03\x8f\x84\x8f1\x8c\x98`\x1e\xe6\xe0\xa7 \x0d\x16\xb60\xba\x08\xe7\x0f\xe8&=i\xcb<\x81\"Z7\x9f\x85\xe77c\x08\x9b9\x93\xf3\xf9X\xcd\xf1\xaf\xfb\x18\xb8r\xf9i\xc7\xb1\xa4\xf9E@\xe0|\x14\x01\x9e\xd9\xf7#\xf1\xfd[\xb2\x01Gy\xbe\x8c/?\xf9]v\xc6\xe4\xe8\x1fr\xf4\x1f1\xfc\x0e\xfb\xd01\x8d\xb7\xdd8\xc5\xf8\xec\x13i\xb1~\x0dk\xf7\xd98\x7f\x8deQy\xbb*\xfe\x11\xb8\xd7O\xac\x1b\xf6RD.>\xe9\x83\xdc\x14\xdd>t\xcf/\xbbn\x1f\xe6\xdc\xd5Jx\xcc\\\xfaU\x17;=\xfaP\x07\xd1\x84\xb7\x9bc\x8a\xfcY!.V\xa0\x1f\x15=\xd7\xe0\xa1\xa8\xbb\xfa\xfc\x107O\x925Ppv\xfc\x97z\xf2\xf2\x92\x84\x8b/\xfc\xc7\\\xf2~\xf8\xeb\xbaV\xf9R\xad\xcc\x19\xc5b@nq\xa5&\xd4\x1d\xbb\xaes\xa2\xc4\x8c\xaa\x8d\x8f\x86\xe3fQP\x8ar\x07\xceJ\xae\x9ak\xd3\x15FWe\x9dtGI\xce\xca\xcey\xb67\x98\x80e\xd4\\\xe3\xd9\xc9jq\xe9\x07\xd9\x18v\x16\x8b\x9f\xe3\nL\xbc\"\x97\x8f\x841k\x80\x7f\xad>K\xd8\xb3S1\x8f\xceH\x0dTS^\xe7\xf2>Bti\xd2\xdc\xcb\xebH\xd6\x11\xaa\x10\xe48\xcd8$\x82\xe8\x18\x89\xb9\xd4\xc1\x84\xf4\xa6\xea\xb8\x89\xdd\x14\xe9\x07\xa8\x98\xa18Q0\x04\xecG\xbc\xaf\x1a\xb9\xf9#\xc6\xa4\xe0\x93#\xf1D\xc5\xe6\x8b\xc1\x82\xad\xb2\x15\xa5\x8b\x08\x0f\xfb\xfb\x80>r\xfc+a\x1c4\xbd\xe1\xbe[c\x0c-R\x9a\xe4\xc2Y\x0c~\x82\x1e,\x06\xbf\xe1\xffx\xbfr\\E\xc8\x0f\x92):)\xbd\x1c:\xcf\xf6\\G%\x15B\xbb\xba\xeb:j\x11\xa9*Xy\xbf'\xa5\x1e\x15rS\x9d\x1a\x83N\xd3\x1aK\xfe\xe8@G\x98@\xd1<1\xf4\x14\x10w\x1d\x1e\x8aD\x8bg50\x15\xc3u2\x06\xe0\xce\xb1k\x1d5.w\xd3\xb0\xc5\xa8n\x9cL\xee\x8d|\xd9Nro_+\x9aV \xe9\x1c\xb3\x86\x1ao\xc8N\x06x\x84\xbb\x03\xdc@\xce\x95\x8a\x15\xb6i\x91 h\x9a\x92\xca\xa9\xea\x0f=N\xb4R\x83\xd2\x92\xbb\xf2Z\xb57\x91\xa8b\xd6\xd8\xf8\xed\x05UIFm\xb9 A4iI\x90\x0f2\x96\x8b\x99\xc5\xbaf\xa4\x9c\x9d\"\xed\xd5\xac\x18|\x01\xf6\xc1\xef\xf5\x9a\x19\xc0\xc4\x90\xb6C\xfd\x88\xec\xc9\x9c\x02\xb2\xbd\xd9\xeb\xf5\x0be\x19\xc3\x88\x96\xa9\x0e\xd4O\x82\x9cE\x92'q\xc8D\x12\x89\x8d\x0d\x94/b'lb\n\x8d23\x084W\x9a\xd2\xd6\xd3eG\x90.\xc6\x03\x1e}\xc2\xf1\x07\xd7m\xcf\x95\x98x\x8d{\xf7[!\xba\x19\x8b\xa3\x07`\xf1\xc3q\xab\xbe\xea\xc5\xb6\x03\x8b2O#\xdd\x82}\x05\xa2\x81\x08\xc0\x1b\xd9V@!A\xf8\xf5KmMtgu\\\xdcuc\x94\xc1\xf2P\x93\x1b\x1f\xb9\xce4\x8f\\P\x87\x9cG\x12\n\xc3\xb1~%e\xb8\xa1 P\x8c%L\x85\x9aT\x03\x12lg\xd4\xa2\x9dt:\x9c\xa9m\xf5!\xd5gd\xc7\x167[\xb6\xc8Z\x19i\xda\x15\xe5\x86\xd6\xb7\x1e\xd4:\xfb\x7f\xd3\xd8\x87xj\xe8i\xfb\x0bzb\xffo5\xf4'\xea\x180N\xe9B\xc4=\xc66\x94SQ\x8b\x91f\xbb\xb1\xea\x8d\\d\xb9\x1d\xc5\x14\x84\x83\xf7Y\x8a.1\xc7\x17 \x8d\xaf)\x06v\x88\x07\xbf\xd1\x8b_\xfc\xb4\xfa\xac\xfc>O#\xad\xbd\xde\xcc\xf0\x91\xf6z3\xa9^o\x86\xce\xb3-\xd7!M\xd7\xf9ZNX\x1ay\xb5\xca+\x19\xf7ui\x13\xf0> \xa5\x00\x94\xde\x88\x90*\xa4\x06\x16o\x00\x9e\x035&\x98\xe6J\xeeE\xd8G\xbe\x9c\xa2\xdd\xc5\x97(\x88\"M\xd2\x0cPEScl4\xc8\xa3\xd5cl\x1c$\x04\xa9\")\xb6\x8d>V/)\xb5\"\x00\xc2\xaf|\xca\xf8\\\x9e\xaf\xbf\x00'qy\"D\xdb\x9a\x90\x81\x0cv\xe9\x04\xd6\x06\xf3D\x1e\x1d\x9fcgH\xae\xfd%I\xa5n<\xff9HR\x12\xceI\x10\x85\x1a\xad\x05\xc6\x7fC\x83\x1ey\xda\x98\x00z-\xf2\x7f\xe5\x15\x1d\x83\x1a\xaeq\x8a\xf2\xe3\x89\xc8\xa5\xadu)|\xce\xad\xda\x8frU\x95.M\xb5\x06\x92\xfa\xdd\xb1\xe0\\\x94\xb6\x8b5\xec\xc3<\xf2x\x94\x1c\x1e\xff\xeb\x94\xde\xa6G\xd1\x9c:]\x9d\x8e\x92\x8b~\x81;\x888\xe5p\xd6\xba\xb0Q\xec\xe3]\x92\x98x)\x8d_\x93\x94\x8c\xaby2@J|m\x00\xb1\x1e\xccI\x8a\xb7\xbel*\x8b\x06\xfc\xd6\x12\xe1\xbc\x0f\xedf\xbb\x16A\x08\xf5\xdd/\xc21\xc4\x06~\x0cS\xb2\xf2\x9d\xd4\xb4D\x80\xfb\x8e\xc7\xb2b\xef\xc1>\x86\xcf\xa5<\xfe\x0c\xcf\x0e\x1a\xa2\x9e\x1c\x1f\x19\xe6\xd4\xea\xdch2\xbd2\x9c&5\x93J_o\xa8\xc5\xc5\xef\x9a!\x8fLA\xae\xda\x804\xd0\xfe\xdaN\x95,\xb0>\xc1,\x8f\xa8\x15\xf1\x88Zq-D!W\x07\xe1ej\xcaD\x06\x8cf\xbapR\x0c\x93\xaaa\xc0\xa2p\xe1/\xb3\x98\\p#\xdb\xfa\x12/i\xda\"\x0c\xa0\xa2\x0djB\xcd\x07\x9e\xff\x8d\xeb\xa87\xa13\xaccm\xd5\x89\xc1\xf2*\xcbm\xa2\x8aNc'\x1e|\x80\x1e\xc4\x83\x8f\x16i^\xa4\xf7j+\xe8\x10\xa1\x9e\x8b$G\xc1\xf6\x82/\x7f\x18\xa4\x9c\xd0\x84\x1e\x9a\xa0c5E]\x08\x93blF\x93\x17\xf1\x1aOH\xe0\xb8U\x11\xd6v H\xe5\xa8\xb6\x82\xee\x1a\x8f1\x99}\xf8\xee\xe3\x12\x91\xd3\x1e4,\xb3\x96\xe8;\"o\xddt\xcf\xcfM\xf7\xca\xe8xbA\xc44n\x8d\x84\x11#\x11\x987\xda\x88n\xbe\xd6\x92A*\x00\xc3\x01E\x93\"\xa1u\x1d\x17r\xb0\xeb\x84(\x9f6k\x04\xdb\x00T\x82\xce\xba\xde&b\xf4\xd9A\xa32\x99_\xc2\xe9*\x15\xbb5+J\x0c\x01?\x88\xe9\x92\x864f\x0c\xd8\xc7,L\xfd\x15\n\xdd\xc2\xa9gIS\xc5\x95\xe7\x88\xach\xe2\xc4\xee\xc0\x0f\xe7\xf4\xf6x\xc1\xda\xaf\xbe\xdcu\xe1eM\xe3\xe5\x83\x08c\xa7\xeb\xae\x809&{\xd1\x0d\xa8\xe0c\xcb\xd6\xb7{\xec\xd4\xc2\xb4\xec\xfa\xb7\x94\xc8\xf9\xc8;\xd5yx\x11}S\xf7~\xb1p\xc6\xeb%\xeb`\x8b\xf7\xb5\xeb\xae\xb6\xa5\x18u\xd6\xeel\xf4;\x0c\n\xa37tU\xaf\xf8`\xd5\xb1\x9c/v\xd95\xab^\xcb7\x91\xdd\x93\xbb\xd5E\x14\xc0D~\x19\xd7\xccVA\x9c5\xfe\xc0O9@\xd0\xbe\xf1?\xffS\xfe\xec\xd6\xeb\xa3\x8e\x92\x87}}[~\xa9T\xa6y3\xc17e\xb0\xc3S\xb2\x14\xef)%\x9a\xb7\xf0\x92*BX\x95\xce\x94zMOX\xf7\x99\x91\x15\x04\xc2z.\x04\xc8\xf0\xa9\xa8\xe9\xb9\xad8w\xc7\xd4\x0d\xecC\x80\xb9\xa6d\x93\x0c\xde\xee\xe0&&\x8c\x99?\xaf\x93))\x03t\x93,Y\xd3pN\xe7')\x89S\x0d\x0c@H\x04E\xcd\xbf\xfa4\x98\x1bj\xa2C\n\x8f\xa9\xe4\x87:\x90\x820\x06\xefz\xd1j\xcd\xf6\x92\xa9\xa5k\x9ePA\xfbl\xa5qC\xc4\xf2)\x995\xd1Bhb\xce\xf4\xc0Z\x16\xbbfI\xd3\x0fr\xe3\x1c/\xf4#\xbc\x83}X\xb2e^:K\xe7\xbd3\x9d\xb9\xbaKS\xf48\xb9C\xb3(\x14n\x85pw\x87I\xb3ej\x91;\xcd\x8blD\x17h\x9c\xad\xde\xf9\x1e\x96~\x95\x028;+M+\xb7\xa5\xfa\x17\x15\xeb\xed\x93>\x9cT\x8an\xfbp2M\x18\x88o1MW@\x90\xc6\xb3\xe5\xfcIb\xa4<L\xba}\xf0\x06~R+o\xb4\xe4\x81&\x8e_8j*C\xd3\xcb\xeb\xd2z\xba\x93J\xab\xc2\xfd}\xb8\xc5\x8d_\x1f-\xb7FKK\xd3\xba\xbf\x87t\x10\x92\x95!\xc1\xb27X\x91\xf8\xaa\xd5|\xc4P\xc4\x92$%\x04\x82\x89\xbe\x9cQ\xfd\x1343\xa3\x83\xf3s\\\xa9\xf3s\xbe. \xf7jA\x19\x91\xaf\x87fF.\x1a\xfb\x991\xe2\x82=\xd7\xcf\x8b\x08\xc2\xd1zbf\x16\xf3\xfc\x9c\xdc\x10\xbf\xe6++?\x1aeH\x1f^9W\xc5\xb8\xdd>(\xbf\xf8\xa5\xcf\xd7mp6\xc3\x83\xd2\x19\xb2\x0fW8m\x8c'\xaeu+\xb5!j$n\xe8\xaf\x9cs\xf5\x0d{dh\xed\xde`\xa7\xf9\x04\"t\xca\xe2\x1e]\x0f\xb9'\xcbU\xcb\"\x9f\x0e\xe5\x8e]Jk\xfa%\xd0\"\xf7+\xc4\x8f\x8b*vuY\xd97 \xb2}\xb8\xc8O\xe3\x074\xd6\x9d\xf2\xd3\x18\xf2\x01Ur\x1e\x82\\\xe0+z\xd7\x9c\x8a\x04\x14R35\xa46\xa8\xf9\xaf\xa7\xd2\xa8\xc4\xba\xbe\xec\x94\xbe\xa6qB\xab\\\xb4\xfa\x91\xa3\x83f;>\x91\xd9@\xde\x1d\x19\x15\xd4\xeaG\xca\x06\xe9`\x1d\xadMZM\xf5\x83\x0c\xb5\x98fn\xd0\xc3\x91\x08\xd3h\x84\x1c\xb5\xb8\x91\x92^l\x94\x1f\xb3\xa5\x1c(\x02q\xde\xde\xd0\xd6\x9e\x96Hx|`l\x91\xdf\xf7\xe1\xb4D\xe8\xf4\xa0Q\x0e\x8c1\x9c\xeaW%\xa6 m\xb4\x02\x91\x1f\xccz\xc1\xedp\xe8\xb5b\x9a%\x14y\xf2gBCy\x81;8\x17?B\xf1L\x81'\xffM\x03\xba$\x18\xa5\x84'\x92\xc4\xd2\x15\x86 \x95\xd9\xc0\xba\xa2\x94\xc4K\xa5\xa54\xbe;\x0c\xd3\xd8\xa7\x89\xcc\x97\xec|p\xfb\xd0i\xb0h,\xa2\x9d\xb3uG\x91\x17\xbaiWxo\x88P\xdbCW\xe1N\xb8v\x86;Kux\xea\xb4\x9eL\n;\x12 \x86X\x1d\xe1[i :z\xf0'i\xb4n\xa1\\\x03i\x00\x95\xa3\x8f\x19\xb7\xa5\x0dU\x05H\xd3\xe1l XP?\xb2\xb8\xd8`*}\xd4\x93p\x98\xd0\x01\x1eJ\xf2\n\x86-\x82\xf9eU\xd3\x14_\x93zb\x020\x83\x821\"L\x8c<\xbc\xf5\xe8:\xc5\xa8\xb4\x0f\xc4J\x06\x9c|\xa0v\x00\x156\xdf\xcd\xb4*vL\xa9\xf6\xd5\x8f\xd4J\x0d\xc4\x96\x140\xecC&\xf0\x16m\xc4\xc5NA\xef\x11\xae\x04\xaf\xa3\xba\xc4s\x86\xcc\x1d\x8b_\x85y\xe4\x12\xc5\xfd:\x1aHg\x9d\x0d\x18=\x07\x1fU\x11\xcfacC\x1b\x17B\xfd\\\x8b\x1c\xffU\xac\xf2\x1b\xcc{@H\xb1\xa4\x15\xf2\x81D\xc08\x8a\xc4\x9e$\xac\xb7w\x91\x97\x13\xe8\xd8\xe9\xd2pn3\x1d\x97\xad\xc8W\xe1\xc5>\xe4d\xabi\xa2 &\x8b\xb9kD6\xf4>tQ\xc3\xf1.\xf2\xba\x96\xd3M\xfd\x04\xe5\xd7\x85J\x18\x1bhw,\xe1\x9dm\xd0f\xb4P\xa3\xcc/0=/\x1f\xb0\x02\xb7\xa2\x10\x1d\x10\x9a\xc7\x01\xda\x96\x8b\xb9\x94\xdaV\x8a\x1b\x1b\xfe\\\\z&\xdfs\x8a\x8d\x0d\x7f6i\x1et\x1f\xbc\xa3\x0d\xd4\xfc\x1b\"\xf7F\x1a\xdfA\x92\x92\x94b\xd6\xf4\x1b?\xbd\x8c\xb2T(\xc5\xa2X\xde\x07\xb4Yy\xf8n\x10\xb7\xd6\xb0\x98\xf9?\x84\x84\x93\x8b8[\xa7-l\xac\xe5G\xe15\xed\x94*\xcc)\x95\xf1Z@~r&\xb0B\xa9B\x03\xbf+?\\\xb9\xaa\xa1\x18\n+\x10W\xb6rny-\x96*.-U3VI\"m\x10\xe8\xd5\xcfEL\xc9\xd57]D@}&\xa6)\xc5\xc6\xc5y\x8f\xfa\x02\x99>\xac+}z\xf0\x16Q\x01\x0e\xc8\xd4%\xbe2el\xcc\x17\xac\x9c\x05\xdb\xe5a\xe2s\xd7\xd7\xfc`@-^#wA\xe4\x11K\xfb@\xc4a\x99\xf6\xb11\xc7\xc2=\x8a\xa3W\x1do\x1f\xae]a\x0e,GA\x1d\xf2 \x06N\xbe\xf6\x00\xa4\xff\x16\x1cVi\xc58<4\xcb\xc6\x1fLJ\xf3\xc7\xf6a\x0c\xe2\xea\xa3R\xd3\xc9Y7\xb9\x83\x04\xf3\xc2\xfe\xd6\x98s\xd1D\x19\xc0\xfctf=\x84Q\xbc\"A\xa9\x07y5\xed\xa8o\xa4n\x1f\x0c\x1e\x7fz\xa0/\xfc\xd0O\x1a\xfd\x13\xf2\xda\x05\xc7o'2iNd\xda\xf9\xd3k\x88L\xda\x82\xc8\x84\xea\x8e\x11\xdbKe\x9csL\x0c\x95\xad\x81\xc9\x89\x17)\x8d\x19e\xe9\xa3\xe3\xb8 h\xf0P\xb2\xdd\xca\xdbC~\xfe\xfd\xa0)\xa8\x92\x80d;\xa2\xcb\x8d\x84\xdb\xb2\xa4\xa0\xd9\xb5\xb1\xd8\xb5\xcd\xfd\x81\xa26\x8b\xed\xbb[\xfd|0\xd9d\xab\x1f\xfb\xb1\x0e\x05\xc10\xcb\x11\xf0\x85GG\x8d\x0b\xf2\x03&\xca\x07\x82\xef!iJW\xeb\xb4\xfb j*\xb5\x01x\xe32\xae\xea%\xad&\x82\xea\x0eR\x94\n\xf6\xe5\x91Woc\x8c7`\xe7\xecc\x9adAzDVt\x0c\x0d\x01-\x18]{\x17yc\x83m\"p\x85\x0e?\x9d\xb8\xe2A\xa1\xab9u,\xc4@\x03q\xac\x95VM\xc0J?sy\xf6\xbcA\xcd+q\x95\x9f\xf1\x8a\x9eI\x89\x0fs(\xf2\xe6\x1d\xea\x01Q\xcb\xa7\xe9D\xaa\x82[\xfb\x0e\x11Z\xe5S\x07\xef8\xa7:[f\xb1\xc8\xfe\xe0\xdc\x0f\xaf#\x8c\x02j\xb3\x15P?\xb9\xdd\x80U\x8b\x99\xb7f\x8a\x95(?\\s\xc8\xd6n\xae\x11\x08rm-\xf8 \x90 \xa6d~\x07q\x16\x86~\xb8\xb4\x89\x01E\xabZc\xf9jU\x95\x1e\xe5\x19\xc6\x0d\xd9\xf0\xe5GL\xf4\xadA9\x0e\xcd\x9a\x85\xb0\xe0\x00\"<\x96\x10O\xfd\xe7\x8d*Z\xc9\xf6\x85\xf9\x06m&\xef\xa4\xa9Q\x10\x0dg\xe8\x14B\x18\x064\xd3W4\x96m\xd32\xc8\xca\x08\xe3\xeb\"\xafns\x1f\xa0(\x85\x1a+\x7f\xa9x\x06\x12\x13\nZ\"\x97\xc7\x85Pjb\xc3B\x0d\xdb|\xfe\xe4\x92\xb9\x8a]E\xa3\xcd0+\x90x!q\x92m\xbc\xcb~\x9b\xde\x01\x9d\xa9j\xba@\x07_m\xf0v\xe2C/1\xb6\xa1BU\xc3\x01\x97O\x9d\x82o\xe5\xad6l\x18\xd8\x87\xb9\xbd\x8a\xd4\x17\xdd\xe4D\xa8\x19\xb1K\xdcq\xd2\x9a\x99\x10\xc0\x957 \x13\xb8\x841\xac\xfb \x8e\x8b\x87\"i\xe3u\xa6\xfa\x11I\xfd\xb0\xabvZ06\xc6\xb1\x18k\xe3\x0b_\xb3\x07T\\MrQ\xc3\xc9\xf1\xae\x90Y\xa4ZV\xd2\xad\xc4\x8eX\x06F\xbaV\xfa\x99-}\xd8\x07\xe2\xf6+\xc97M\xc7\xf0\x8d\xed\xc42;S4\xaeX\x8ai\xb5$z\x99\xd7\x89\xc4\xcb\xdc\xb3\x07\x87\xd1v\xa6\x8d\x11\x1c\xda\x0eQ,E\xc3\x08\xdb\x0e\xab\x15\xd0\x0f1\x9e\xa0\xe1\xe1\xad\xed\xe1\x89\xed\xe1+=0\xa6R\x01\x91c\x9d$=\xb3\xfc\xce\xcal\xd8&?\"hg;\xf1Le\x83\x05\x93\x84v\xb2\xadW\xb7j\xee\xaa\x9f\xf0\x95\xc5\x9a\xb4Nu\xd4\xd1\xa83\xb1\x19\x1a\xe4]\xf9\xad,\x8d\xe9\x8dt\xa7W \xda\xc0\xc3A\xc9\xb2\x90\x07\xbc\x8ey\x90\xbc\xa6\xd7@\xe1:n\x1c:\x0dg\x18a n\xc9{Hr\xd5\xd9\xdf\x177Fm:\x04\xe5\xa8\xc9\xda\x13a\x10\xd7\x11 \xbf@n\x1e!\x14pE\xcb=\x8dE`\xa0(E\x03L\x05\x8bV/]\x17&r\x1dr\xef\xa2` \x9e>\xc8\xb8\xa3\xfaI\x1d\xb9\x99\xa8X\xa2V\xaf~~\x88\xeb\xae\xfaI\x9d|\xd3>\xacC\x17\xc6u\x10|\xd5\xd4\x93\xdc$\x01C\xc9'-\x07\xd2j\xc8\xcd\n\x04\xe2d-x/\xb1w\xd2Z\xb0\xf8R\xad\xb6T\x08\x14J\x06\"K;\x87\xa0\x8f{z\xcc\xa8B\x9dv\xb5\"]\x07\xd6\xc8/<\xec\xa6\xd4\x0bL\xe5\xfd\xacF\x11U\xb0\xb9F\x99\x13or\xea&\x0e*\xb3\x92\xb6`\xac}L:/\xc74\x10\x80\xa9^\x1f\x17\xca\xd8\xc2PB\xcc\xd5\xd0e\xaev\xbc6\xd3\x84T\xc3:\xe5\x1d\x943\xd0\x9f^\xd2\\\xa1\x02\xf3\x88&\x10F)\xac\xe3\xe8\xda\x9fS \xf0\x18\xdf\x7f\x0c\xbcA\x93b\xc8\x86\x0b\x9aH}\xdaE\x8c\x90*\xc7}e%\xc5\xa85\xf4\xb9&H\x0bz,\xf1\xcf\x02\x80Hh\xc5\xebK\xac\x81\xa8\xbc\xeb\x89\xf4B\x90Tm\xe0\x95\x88\xe0\xed\x9dt\x8a4D\xe8\x9dfx}!\xe2\x99\xa7\x85B_\xa8\x9b\n\xee\x02\xcf\x95\xb4\xa4P\xb2\xdb\x19\xe8f\xc0\xb3\xcd\x8f\xcb\xef6\xa0@\xbe\xfc|\xd0\xe0s\x1c !\x88#\xc4\xd4W\xab\x9d{lwa\xd1o \xae\x1d\x1e\x03\x9d\x0egu\xf4\xa9\xaf\xc3\x88\x9b\x9ar\xa0\xc9\xcbd\xcc\xc72\x9a\xb9}\xd8T\x1f\xabz|\xa0\xdc\x1d>\xd7\xd2c\xd1\xd6\xcc\xad\x9b+\xa19]\xdan\xce\x1f\xecs\xa6\xea\xed\xd9\xfd\xbd\xf6\xfa,\xcdMR\xa4L \xbd:R\x8e\xbf\xa5F\xf6\xab\xd1\x94\x0d\x03;\xd5\x0f\xac2W\xd8\x87\xa9}]\xb8\xa9G}e08\xacd\x92\x8f9\x10\x8b\xc8N M\x9d\xea\xfd\xbei\xa4\xef\xf5#E\xaaj\xd3\x16\"|\xa7\xc4p\x07\x81\xb4]\xa1\x12<x\x9f\x81\xffC\x1a#\x07T2\xed\xc6\xcdk\xca@\xa4\xbe.,\xcfh\x9e\x7f\xc1r`\xc8\x83lcd\xe7\x10\xd5X\\\x906\x9adBa\x96\xd9\xeb\xc5\xf0\x02hn\x9c\xd9\xf8\x1e\x88iDy\x94\xc3\xd8U\xa0\x9738\xd3\x187\x91j&\xd8\xcc\xb0\xd6\x9a \xd56\x86}M8s\xf5\xd3|\xe5\xec\xe7\xb7\xc7\xda\x9aM\xd2(4 \xc5\xdc\x83\xfamC3&\x04\x7fk\xf3\x813\xe17\xaar\x0c\xe1\x13\xb9\xdaF\xe7\xac\xfe'\xfd\xaf\xcff\xf7KE U\xaa\xdb\xdd\xf0Z9\x026yV\xeemWs\xecp\xd7\xca\xbd\xdd\xa16_\x98\xafq_\xab\\\n\xe8 ^E\xf7\x9f\xfb}t\xa1\x07\x14z\xd0e\xc7\xe0\x9c\xaec\xea\x91\x94\xce\x81\x84s\xf0H\xc8\x0e\xc6\x0b\nYB\xe7\x83n\x95\x92\xd5\xbf\xe5\xaeN\x98\x8e\x01g2\xdaU\xd3m\x0c0%8\xf7f~Z~\xf2\xe6\xe0\xed\xbb\x93\x837\x87\xe7'\xaf~>|\x7f <LK\xc9:\x06\x7f99>R\x9fom\x8fJ\xcf_\x1d\x7f<,?/eU\x1a\xbc>|s\xf0\xe9\xdd\xe9y\xb5\x9fQ\xa5\x1fY\xef\xcd\xa7w\xefJ\xf5\xb6wJ\xf5\x82\x88\xcc\xf1\xc2\x94}\xa9>8\x08\x82\xfc\xd9\x01\xe3 \x8a\xc7 Y\xd0w\xf2]\xf9CWA\xb6\xa1\xfcV\xab\xcd\xb3\xd5\x1a\xb95\xf6\xa5\xfa\xfek\xf9P\xfeP+\xfc\xf5\xe0\xfd\xbb\\q-`\xb0W\x9a\xdb\xfb\xb7Go\xdf\x1f\xbc\xb3-G[0Z \x98x\x84\xbb\xedv\xd9\xb7n\xe9\xd9\x9a\xc4\x18F\xd1w\xba\xf8\xb5\xfc\x14\x93\x19\xcb\xe7\xe2G\xb9\x06\x99\xcf_\x95<\xa5|\xa7[.\xeb~\x93M\xfc\xb4\xea\x06\x1d\x15\x00-\x95\x8b\xb4Z\xdb\xfaDq\x08\xbdRyV\x80\xacT\x9eh\x9cE\xad^\xa1\x01F\xbd-\x15y\x18\x07\xbaL\xaba\x1f\xb6\xcaE\x0c\x81\xb6\xcbE\xf3z[\x97\xf5\xb6\xae\xebm\xad`\x1f\x9eL\xcfn\x87\xc3\x8d\xb3\xdb\xe1\xd3\xb3\xdb\xe1\x8fg\xb7\xc3Wg\xb7\xc3\xc3\x8d\xb3\xdb\xd1\x9b\xb3\xdb\xbd7\x1bg\xb7O\xb7\xcfn\x9f\xeen\x9c\xdd>{s\x96\xbdy\xf3\xe6\x10\xff\x7f3\xbb\x9f\x9ee\xaf\x9f\xb2\x97\xb3\xd7?\xbey3s&\x1dV\xf2\x8a\x97\xb0\x1a\xee\xbd3\x19O\x7f/W\xbb\xff\xdd\xadT{R\x1e\xd6R\x0c\xeb\xe9\xceY\xb69\xdc|\x8a\xff?\xab\xd6\xba\xc3Z\xfd\xb3\xe9\xd9\xec\xec\x1fg\x9f\xab\x8f/\xd8\xe3\xdf\x9d\xc9\xb8s\xdf\xe9\xdcw\xa6d\xe3\xefg\x1b\xb3^\xc7\xfd\xf3\x13\xbf\\\xf3\xbc\xa89\xfd\xbdh\xcfu&\xe3\xff\x98\x0e7\x9e\x91\x8d\xc5\xec\x1f\x9b\x9f\xef\xf9\xf7\xbf\x9fm\xfc_\xcf\xcf\x9e\x9cM\xc6\xff\xf9h\xff\xacw\xf6\xe7\xfe\xf9\xd9\xa0\xf3?g?<>s\xce\\\xf6\xf6\xcc\xfd\xe1\xcfO|\xddYqc<+F\xc3\xc2\x8an\xb4\xc5\xbf+\xd4\xbc\xde\xd4\xa1\xb1\xa9gEK[\x9b-Z\xba}HK8\xbe\x87\x8e\xf5\xc4\xd8\xc3\xf6v\xd1\xd4\xb3\x91\xf2}K\xe9b\xb3\xf4c\xa7E\x87\x1a\xbd\xbaF\xc5,\xc7\xf0\x14^\xec\x0bgI\xf6mg\x0f\x13Zn\xb0\x07cx\xb6\xc7\xca0\xaa\xf8\xd6&\xdc\x0b\x9bF4a\x1c\x0d7\xd1\x9ca\x83U\xea1\xb0\x8cacd\x1d\x98F\xff]\x8c\x82Or\x02\xdd\xb3a\x97\xf7\x9c\x97\xfc\xff\xb0@\xadr\xc1JF\xa3]\xa5(\xc5J\xd5\x82Q\xbe\\\xac(\xe4EjK\xd7X4\xdcT\x8a\x16\xbc\xd6\xb6R\x14\xf3Z\xa3\xa2\xe8\xff\xcfJ\xb6\x94\xd7\x00\x0b\x8a\x97\x1ew\x1f\xc3\x18\xb6\x95i<\xc1\x11\xaa=\x9d\xb1\x92=e8\xff\xe7\x7fc\x9d\x1d\xa5\xe4\xff\xc6:\xeaL\x91*\xb0\xd2\xa7\xc3J\xe93V\xda\xedZ\x17\xe1\xc0\xb8\x08\xb8\xfe\xbb;;[;0\x01\xeet\x87y\x0b_]\x92\xf8U4\xc7\x9c\xa8c\xed\x83\x9d\x9d\xcdg\xbb\xd0\x03\x87!\x0eka\x17^\xbe\x84\x11\xe3uvv\xb76\x87\xe5G\x8f\x18\xbc\xb7\x14o\xd9\x82_\xcb\xed\xe4\x8e\x85\x9a\x043\xee9\x9b;\x8c5\xfb\xa0);\x054\x97;\x85\x17\xb0\xb9\xb3\xfb\x1cN{=\x17\x8e\xa7\xa73\xd8\x87+\xe7\xd4\x85 \x8c`\x0c\xc3>|(\nu\xc4\xe9\xbdV\xc1\xa9\\\x94Dx\xdf\xc7\xc3\x17\x0f\x16~@C\xb2\xa2\xa8,\x0b\xd7Y\x8aN\xb4Q\xe2\xa7huH\x07\x81\x1fR\xb5\x0c6D!:\xd0\x97\xe6^\x1f\xcb[\xedX8\xcf,\xc6i}\xff\x0f\xed\xfbt\x10\x85\xbf\x918\xf4\xc3%w\x8d\xce\x7f\x8a@\x85\xa8U\x12\xed\xeb\x16\x87\xad\xcbQMe\xc4\x18\xb7\x9a\xd1\x99V\xb9{]$\xa4\xab\xcb\x8e\"7\xf0>\xd0\xc15\x8d\x136\x8dG\x8f8$\xba\xf3l\x1d\xf8\x1eF\x1d\x84h\x01\xff\xc1\xba\x84\xb9\x1fS/\xf5\xaf\x91\xc7\xe2IC\xf2\xa4:\xf9\x9b\xe5\x9a@<\xc6`&@o\x89\x97\x06w\xc0d]\x99\x03\x12\xe3E\xb3A\xb0-\x85w\xe0O~w\xd8\xa17\xeb\xb9g\x03\xf9\xed\xcfO\x06\xf4\x96zN8\x1d\xce\xb8\x17\x1b\xef\xc8\x0f\x82\x8dE\x14\xaf\x98\xa4\"\x1a\x04L\xb0I\xa1>Z\xc6\x8e!\x03\xf96L\x9d\x18\xc3B\xe2^\xf1\xcb\xe5\x9b\xb2\x9c\xcf.*z\xcbB>\x13r\x11\x88\xf6%\xccD\x9f20\x1b\xe7?\xe5\xc3}\x081\x12%\x1dx\x97\xd4\xbbz\xe7\x87\xf4\xc7\x98\x92+\x0c{\xc1v\x90\xec\n\x0d\xdc7\x8b\xaf\x7f\x88^\x93l\xcd8Y:o\xe8\xb4\xb4\xba\xd5\xccb\x07?=\x0c]\xea\xb8\xb2iX\xed\xd3\x83\x9f,\x8b\x9d\xdeDE\xc2O\x06\x988\x07\x08\xf2\xc7\xb8\x0e\x17\x83\x94&\xa9\x13\xa3\xa8][\xda\x94,\x81'o\x01g\xe1\xc7I\x9a7\xe8J \x94\xc6\xc0zI\x84\xeef\x90\x92\xe5{\xb2\xc6\xcb[9\xe2\xc7\xe9%\x8d)\x9a\xbb\xc1:\xa6\xd7~\x94%\xc1\x1d\xcc\xa9\x17\x90\x98\xce!\xc9\x16\x0b\xff\x16\xa9b\xf71\xf4 \x86\x1e<\xee*\xc3x\xec\xf6\xe1\x9c\x0f92\x0fy\x1dS\xd6\x8c\x93P/\n\xe7-\xc6,\x07;\x8dg\xb6xr::\xfa\xd1b'\x89\xb7\x0cy>\xb5\xf2\xba\xa2f\x10^\xe8QA\x18\x93Ib+\xdcH\x11q\x8c\xd1\x81\xf1(\x89\xb8\x83\xad\x8fw\xbfB\xed\x06\x11\xbc\x00\x9f\xfd\xe9\xed\xc3\xc8\x15<\x83C\xb0\x8e'\x8e\xb4\x03\x06PW\xf0~/\xf6y|8\x82|\xcfh\xb4=\x1a\x8d\n`\xd3\xdb5\xf5\xd8\x9e\xb8&\x81?\x87\xbf\x9c\x1c\x1f\x15\x11\x0cuv\x8bhp\xb5\xe2\xab\x96)4\x84-E\x92\xc6\x94\xac\xd0\x16\x89\xf8a\x02a\x14n\xacc?\xe4[=o6\xd1\xb6+n=\xd8\xbc2\xd3\x9ai\x96\xecu\xb1d5\x87M\xbc\x7f\xe1\xeb\xd5\x87\xa0\xdc'B8\x1e\xf8 \x17\xfd\x9cP\xc1@\xa1\xaaY\xd1xIaE\xd6k?\\&\xcf\x11\xdb\xc4\xdd\xd6\x1c\x92(\x8b=*.9\xd8&P\xc9\x1aC\xc3\x8c\xaf\x1e\x13\x16\x1d\xc58\xf6\x8a\xdea\xa2\xb7|A3x\x01\x01\xfb\xc3\x17\x14\x9dd\xa6\xd9,\xdf{)\xda&`r!\x1e\x95 \x9c\x12\xb6\xeb\xf9\x0fU#\xae\x03\xcf;\x05\xa3\xd5t\xaa:P\x05}\xf0\xeax\xcd\xb0\x90\xb3MN\xa4\x9e2y\xc4\x11\xf8\x07\xe6\x83N\xc9r|GV\xc1 \x8a\x97\xfd\xcd\xe1ps\x8c\xf0\x13\xa6\xf3u4gm\xf3\xf4\xd2~\xc2\x99\"\xdf\x96\x958\xe0\xe0\xf4\xf0BL\xc2.\x80\x17\xe0\xb1?\x1cv\x12\x17\xfci0\xd3\x9b\xe4!\xf6\xe6\xd5\xeau\xf09\x1d\xfc\x91\xf0\xbb\x95$\x8f\x82\xcc T\xa7X\x13^\xe0p\xbe\x08\xd8\x1e\xc3\x0c_5\xd6i\x1f2\xfe\xa4`\xb0\xca|\x01\x9dK\x14\x83+z\x87!M\xd2i\x84\x17\x7f\xf9\xadM8\x8dfZ\x01(\xb5.\xfe\xa7V\xb2\x94\x102D\x8aMN\xa3\x14JR\x8c\x1c\xf32\x15?{=&Vl d\x98\x80\xa3>\xea\xe7\xa2\xa6\xb5E\xce\xcb\x15\xaf1\x1e\x9d\x83\x87\x00\x02\x16\x9d\x9e\xd8\xf6\x92\x84\x8aSx|\xd6\xc3\xe4C\ng\x8a\x13\x90\x8dY!\xf37\xd3\xd9]J\xc69\x94\x19\xfflSx.\xb2~GZchqyr\xe8D\xees\xd7\xd4Z\xaf\xa7\xb6\xa7\xdd)\xb8\xdb\xb6\xb8he\x08\xf0?\x8f,\x979mz\xd6\xbe\xfc\x19n.}\xc62\x8c\x86\x05#7\xda*\xbe\x8bb\xc3\xb8;7x\x14\xe12\xd6k t>a\xf2\x90f@\xf7!fx\xc5\xd7\xfbm8\xe7\xe6\xcd\xc3\xe7R\x90e\x0b\xa0>d\x95\x1f<\xed\xcf\xba]\xb6!8\xf4b\xba1G\\e$/\xf8c\xcel\xce\xe9\xc2\xf7|V\xec\xe3S\xe4\xfe\x91k\xb3b\xe5\x1b\xc3~\xed\x8bD\xb3r\xc8ZR\xd0q\xb6wpl\xa6\x8d,2\xe7n\xefr[\x01\x0c\xfd$\x84\x96z]\xe81\x82\xdaTe\x93\x13\xc1\x90m\xc5\xad\xbe\x80MC\xff\x9d['u\x1bd\xc8\xbfke\xc0QNjTf\x81\xeb.R\xcc\xda\xcfc\xce\x15\xcf\xe2AL\xd7\x94\xa4N\xf7\x0c\xcdd`\xa3\x94(K\xd7\xf5\x8f\xda\xae\xafE\\A\x89Q)\xd1X\xe2\xf9\xdck2\xf4.\xaby\xb3A\xa8\xa5u\x99Q2M\xae\x11\xeetQ\x08\x95\xbcM1=\xfe\x831\xb8\xf2;;,\x88\x90 \xda\x11+lk\x9b\x93\x13\xfc~\xebX_Dtp5\x97\xbe\x92\xb9\xed\x0c\xfbP\xa6\xffHbY\xf1\xc6\xc8\xad\xef\x96}\x06c\x99\xbb*\x0b\x82v\xa3\xafu\x9f{.\xf0\x0d\xc2O\xdf\xdf\x04q_\xf0<\x1e\x1d\xcc\xce\xc2\xbb\x92\xc8\xe1\x96\xc7\xd7\xa6\xf3~q\xd8#-\xc8\x8f{1\xa5\x97\"^\x8c\x00\xb0+\xce\xb1\x0b2W\x89\x00\x93Z\x08$\xf4o\x19\x0d=\n4Lcm\x94\x80|b\x15\"\x93ji\xa9$\x01\x9dL\xe0\x08\x13\x9c\xd0W'\xc7\x1dd'\xe8\xe0\xca\x0f\xd1\xaaG\x8e\xa0\xdb/6\xd3>\xe3\x0c\x9b\x18\xca_\xcd4*g1\xf95\xbev\x07T1\x9dMq\x8b\x9f&N\xf3\x11P\xd8\x0f\xe8\xdaQ6\x0c\x9b\xbfI\x03C\x84X\xc9\xafv\x18U\xde\x15\x1cP\x9b\xd3\x82\xf1@\xc8\xcfw\xcc\xdcA\xe5\x851lq.)b\xef\x12%\x01g\xb7\xd3\xe9\xb6o\x85\xbf\xd1\xedC\x99\xd11\x98<\x1b\xd9\x816\xdd\xd5^\xcc\xd9\x00\x85\x0b\xd8\xdd4\x1e\xfd\n\xe5(lF\xd8\xecc\x9d \\\xdaem\x86W\xb0\x89Y\x98K\xb04\x9cK\x9d\x80\x10Do\xfc\xf4\xd2\x0f\x81\xc05\x8d/H\xea\xaf\xd8\xcaW\x15<\xa6p \x82sS\xe6\xdb\xb9\xe5\\\\\xbe\x9al\xaf\x11\x98H \x98,\xa5\xceC\x08\x90B\x10\x06z\xeb\x05d\xc5\x11pE\xe2\xab\xa4\x9b\xa7k\xae\xc0\x82\x1dP%\xf1\xa1\x87\xc9\xed\x84bG\x95QCR\xd1\xe9T\xfaL2\xef\xb2$r\xcb\xcc\xe5U\xf4\xe1\xa4\xbd\x1d\xdc\xeb\x0b\xdd\xbc\x9ew\xb9R\xaa\xd0\x15\x18!\xb5\x08\xa2\x1bF.\xd9v\x8d\xe2\xd2\xf8\xcb\xab\xa6#\x7fx\x90u\xce\xf5\xfd1x5\xc0h\x8c\xf6\x1b\xb1\xcb\x03KH\"\x1a\xc3\xb8\xae\x06\x0b]\xa5F\xaep\ng\xa8\xe6\x1a\xb3]*N\x89\xa2\x16+\x93Ou\x8f\xeb\xf2\xb3\xac\xcf\xb5mY\x98k\xd6\x94UG\xcdZ\x88\x9a\xb5\xc7\x98\xda\xdeJ\xbc\x7f6\x13o\x0dY~\xca\xc9r\xf8\x15d\xd9\xcc\xc8\xe8Is\x08\xa2\x86J\x9e\x0d\x03(af\x15\xab\xe5\xc6\x0d\xc5\xc6\xe5\xa2f\xe7\xc4 \xd9\x0en\xd3\xa2\xf6\x84U\xb6M\xae\x03)\xf6cy\na4\xa7\xb0\xca\x92\x02\xdfH\n\x01%I\x8a\xaa{E\xcbV:\xa6\xed\xbb\xa9a\x81\x7fS\xb4a\x9as\x01\xddqQ\x1b\xb6\xea\xc3\xb2\x0fw}\xb8\xe8\xc3y\x1f\xae\xf8e\x94\xe6\xd0~o8\xcc\xff0\x1c\xe6\xcab\x07~\x92\xd2\x90\xe6\xb2\x12\xff\xe5t\xa35\x0d1\xbfx?\xc7~~}\xa3@A\x16\x08~E\xfe\xcc9\x15^\x80jO\xd8Gc\x88u\xc1\x97-\xf8W\x11q\xad\xca\x88:\xefs~\xb5\xcc\xbe\xc1\x84\x03\x01\xd3_\xa9B\xa6\x90:\xf0\xba\xae\xfa\xf0\x85P\x84\x9d\xa2\xf1\xa5\x8b\x17\x1e\xec\x85\xd3\xfa\x19*N\x14\xe4\xa0\xee\xefq3>w\xcb\xc3\x9b\x14\xa3[q~\xec\xbb\x0c\x12\xc6\xd8\xbcn\xfdV \x832\xbfg\x83\xf4\xf3\x1b\x9cS\xf6`-6\x15\x93\xfa\xce1\"w\x0et/'i\x98\n\x80\x1d+}\xb8*\x1f5\xa5{\xc4\x1cR0\x01\xde+\xca^W\x08\x9c\x87\xdc\xb1\xf4\x0b%ob\x96\xce@X\xee\x98%4\xf6YXBr\xcf-\xcf.%Nj\x9f^[\x9f\xae\xacO\x97\x86\x0d\x08\xc2\x8eF\x97\xa7\xf2\x0b\xe4\xc7\x85PY\xb7\x93\x1f3\xa3\xe7\xbf\xf4Vn\x16'\xfbB`\xe6B\x1b\xa9\xf0\xb4\xbb\\(@\x81f\xe7\xa9\xf8~\x7f\xcfhyl\xb5\x84F\xad\x13\xd2\xc1\xb0\x0f^.\x02\x1auP\xea{\x8a\x80\xd7\xe8F\x880n\x03\xb1C'c\xfb\xdcP\xb5\x81\xbfR?l\x84;\xdc\xde\"s\xe1\xd6\xd4y\x85S\xce9F\xc2X\xf8\x94&k\xe2)\xa7\x8f\xaa[\x05td@\x0e\xfa\x8a\xdemp\xd3\xea\x84\xae \xf7\xf0\xc8\xd9\xe9\x8b \xf2\xae\xa4\xd6\x9a\x1d_(l9x\xd7\xb0\xe8\xc3\xbc\x0f\x97}\xb8\xe6w\x05n\x1f\xf7\xc6\xb5\xa0\xd2\xa2\xe8N\x109\x81\xdc\xc8|\xb2\xbf\x97\xf9\xfe\xc57$\xc1\xb7\xc3\xa5e<?D\x8c\xbb\xc2\xf0^\x1c=I\xe9\xdc \xfa\xd6H\xab\xf2\x93\xdf\x13\xa1\xb3KL\xc9\x9c\x1d\xfc\xfe\x8aq3~\x9a+\xf4\xd7\xc4\x8f\x9f\x03\x01/\n\xa2\x90Az\xe5' 59B\xc9\x8f\xd9A\xafU\xec\xc2o5O\xdd\x1c\xcbK\xcf\xd5\x17l\x82\xab,H}\xdc;W\xf4\x0eV\xe4\x0e\x84\xad\xb3\n\x15\xbc\xde0\xcfM\xfbD\xccx\x97\x8b\\\x19; \xbf\x0e\xd9\x84\xd4\xde\x19\xb2Cp\xc9\xdbSppX\x88\x96~(\xc3r\xb1\x0d\xa2_X6[\xe4\xf3\xf2\xb5}\x8e\xe1\x1f\xa3 \x88n\xe8\x1c.\xee\x80\xe05hJ.\xb2\x00/{\xe8j\x9d\xde\xe1\xe5\x06g\xfc\n\x9a\x88\xd7\x19\x9996 [\xd8\x12\x892\xea\xa0\x1c\xc9\x07\xae9k\x11\xf1R6]u[ 6@Q\x8aa\xce\x90:lW\xc2\x1dV\x0b\xde\xb2\"\xad\x99\"\xba\x1a\xa6&\xd7\x9beV\xbdY \xefLQu\x9aTg\xb5\x97\x8c\x9e\x1b\x88i&D\xbb+\xa9\xdaj\xbb\xabP\xb5I:Y\xe2_\xd9q{W\xea\x17\xc3I\\\xf5\xe1\xdc\xad3@&\xee\xa7z\xab\xdbg\xe3\xf0p\xb8\xeb>\xf2+\xa6\x04\x88\x97vF\xe9\xba\x91Q2\xe5'a\x80\x17\xe6\xa0\xce\xba\x19\x17\xf8\x9d\xd8\xb3\xad\xbe\xd0\x83sM\xac.P\xbd\x85\xf2\xb1>G\x9b\x9caX\x1beQ\xf9a\x1d\x8e6wD\x8fC\xde\xe3?\xda8\xf4|\x01[\x15\xbb}0\x80\xa1|\xf2\x0b\xfc_[\x19\xab|\xab\xb1\xbd\xda\x06\xbc\xe2\xbe\xb0.\xbe\xf2\x9b4\x8e\xbb\x97%\xdc\xbdVp\x97\xd1\xdb\x1c\x7falR\x1b\xc7\xe6\xc3d^\xf0\x1f\x9c>\x82\x17\xadV\x04.hzC\xa9P\xf8xQ\x10P.\xc0R\xeeD\xc8H\xa3\xc7\xb6\x95H~\xc9\xc5=\x1f\xef\xd99\x9a\x88\x13a\x0dm//@F*%\xf6\xeb\x8a\xd4\xcdU\x0e\xe5\xeb\x84@\xb9N\xf0\n>%Q(h\xa9\x19\xe3\xc2\x97\x05z\x02\xf9\xe5H!\\ \x8ew\x8d\xe4Xj\x9b\xdb\xe0Qe\x04\xba\xb1/\xca$\x9f\xad1\xd2\xb8\x18\xe9\xbc\x874d\xc1]\x81'\x10\xf3{\x13\xac\xc0\x17A\xa9\xc3*\x89\nI\xb5ga\x1e\xde\nI'\xe0\xcc\x1f0G\xd6-\xd6\x1f\xb5\xd8\xb3\x0fQ\x13W\x90\xb1\xaasd-\x9d\xb3\xd1\xa2\xee\x83 \xd9<\xfdn[R]\x15T\xe7f!\xd5$\xf0y\x96g\x0b\x0c\x8a\xab}\xb4\x86Z\xfe9\xf9\xd1\xe9\x01 \xa7\xa9b\x11I\xf3\"\xba\x82\x87\x7f0\xe1\x16\xb7\x08\xa4\x15\xddntP\x04I\xa6\x95\xab.\x8f\x04$.S\xacnW\x12\\b\xf0deC\xdb\xde\xb2N\xbf.h\x89\x1bU\xe22\xfc\xdcg\xe4k\x82+-\x1a\"\xc8\x7f\x8d1\x80\x17\xc7K~=\xcd\x99\x1b\xef2Z!w\xb3B\x86\x92q-\xfe\xc2\xd7[\xe1A\xb3\xd8\x83b\x80\x83\xc4\x83\xbbI\xa0\xbc\xc8\x93ne\xb9\xb3D&\x9d%6F<Ka\xb3\xa0<\x14\xcc\xe7D\xe1\xd4r\x06Ye\xd9n\xfcyz\xc9\xe7\xc6\xc5\x06\xbe\x12\xcf\xc1O\x15o\xc8\x80& \xa4\x97$\x84\x88\xb1\xc40\x06/oZ\x01O\xa8iZ\x85\x11\xdb\x8d\xb8\x03\xa0\x07>\xbfF\xf1`\xdf\x18\x11\xbe\x8e5\x0c^\x87\x0e1\xea\x16\xac\xe65m0D?\x0ey\xaf\x86]\x9b\xf9\xfe-\x89Y\xc6!X\xc7\x07_3FP\xc7\xd9\xb9q\x88r\xcf\xad\x19\x90aC*\x1b\xce0P\xc5\x1a\xa8j\xe4\xd37\x8d\xbe\x9d\xf2\xc4\xe9x5Y\xe9\x05;\xe4\x1e=\x92\xd6CDc=\xd4\x06b\xe6%\xebxP5{x \x0bdC\x169{\xc1\x1f\xb8}\xb8A\xd4[\xf7z_\xbc\xd9\xeb\xb3\xb3\xe3C\x82\xf3\xbe\xae\x98\xd3TLf\x02\xf4A\xe9\xc1\x1a\xc6\x8c\xb5\x1e\x8b\xb70\xc4\x88\xcc\xf1\xa8\xd8\xe2\x9c\x85M)\x0f\xecA\xed\xcd\xaa\x0fa\x11=\x01\xb6Q\x18\xc7\xb0\xca\xd9\xb8\x96\x83\xe7Zo\xf9\xe6\xc8\xfa\xe6Z\xf0\x8ccA\xed\xd60\xd1M\x17\x90\xee\xd8\xdaix^\x1e!\xb7\x16\xee\x0c%\xe9\xea\x8b\x83\xbbj\xfe\x05\xd5M\xf8\xdc\xfd\n\\e\x9f\x8fB_\xaaj`;\xa3\xb6\xa4\xd3(@W\x8ek\xc9A=P\xbc\xd53'[\xcf\xbe\xfez\x12\xdar\x0bUi!\xc6\xec\xbd\xfb\x9a\x0b\xc76\xe3\xb1\xb0\x1c[\xdc\xa0\xdf\x9a\xf2\x82\xd5\xfb(8\xf6\xd2\x821\xee\xbe\x01,e\x9e\xa5\x00\x8cE\x17\x18\x97\xe6Y\x85D\x19\n\x863\x0e\xa9\xd7\x8d\x83\xb7\xe6\xf9\xd0#1b4\xf6\xe3\xb2\xc3H\x88_u\xf0\xf2}\x94Kt\xfb\xfb\xfb%\xc3\xdfG\x8f\xb8\xf1\xe4\xc4\xca\xefK\x1f\x9f\x82\xe3O\xfcp\x19P\xf8[\x16\xb1\xaab\xedEBJ\xf3,5\x1b\xe9!b\x86\xbe\xd3o\xb1ST\x01\xc3\xb0k\xb69z\xb4P\xd3}\xfb]\x13\xa29\x85v\xd7\xb4\x18\x8fU3\"|W\xb3|\xd0Z\x8a6t\xabC2!>\xaa\xb16e\x9b-\xf6\xa2\xae\xab\x9bvW4\xae\x8a\xfd\xe6}\x98\xeb53\xee/\xca\x90\xfex\x9a\xcd\xdc\xd2\x01\xf3\x01}G\xd4I\xb6h\x11%\x9c\xd1\xa60\x83\xc3`\x93l/m\xa2+\xf1^.\xcal\xc3\x18\x9e\xee\xe4?\x99\xd80t\xe1%\xfb\xaf\xc5]Y\xc4/\xb4}n\xb4\x1d\xb1\xf7\x9eC\xb4\xb1\xe1b\xef\xaf\xda\xc2\x8a )0\xc1f\x1c\x1f^\xbc\x80m\x17z@r\x91*\xdf\x81\x97\xf4\x96\xcc\xa9\xe7\xafH`wiR?*(\x0f\x1c\xbf\x82/f\xbe\x85\xc3RR\x81\xab0\xba \x81&\x1eY\xd3\xdc\xd8\xd3\xd6u}g\xd8)iVPR\xbe\xf5M\x94\xb4\xde\xf0w\xa2\xa4\xf3(\xbbhCI+\x83i\xc1K<\x84\xb4\xeaG\xa1%\xad\x8a\x1aG\xc95o\x0e\xbd\xc6!\xad\xa7\xaa\xdb\\\x87\xd1|\xf1\xdd\x86\xaa\x1a\x1aie\xee\xc4M\xe0n\x85\xf5[\xe7\xc4\x89\x19\xd9l\xd3b}0\x0f2y\n|\x92<\xc8\xe2Ic\xfc\xd8/\x9b:)*\xf5J8\x16\xd5\x10\xf2q\x16\xe6j\x80\xb9\x18G\xc5(N9\x93T5}8\xab\xde]\xd5\xd9U\x86&_j\x8a\x82ZWO\xea[\xd9IiV\xce\x99/\xba\x19z\xdd:^3b1\x88\x9c8\x1ew\xfb\xe4D\x1a\x85\xde\xad\xa7\xc5\xf7\xedM\xa5|\xab\xf8.\x15}\xf8cW\xad\xf4L\xf9\xae\xd4\xd9\xdaS\xea+\xe5\xcfx\xa8\x07\xcf\x8a\xe5x\xe2\xec*\xdd\x0b\xb5\x99\xc7u\xf4\xb7\xcd\xdbHHg\xf7\xf7\xdc\xbe\x8f\xa1y\x8b\x8d\xd5\xcc\xaeD\xe8K^fw\x85\xd5\xba\xd8`\x9e\x95\x0b\x11\xd6\x19\xd6Dp|A\xbfh\x8a\x16\xe1YI\xaf\xb8\xb5\xd3v\x10\xf6\x01\xa0\xafL\x8b>\x9b\xb4\x12\x8dGM1G\xafY\xfb\xc8\xda\xbc\xc1\x8a\xcdV\x10Y\xaef\x91\xd74\x8a\xf1Y\x90\x17p\x95\x89rrn\x8cjw\xd4\xfb\xf6\x04o\xf2C\x14\xf9\xfd\x8b\xb5U\xe2#S:X+\xda\x839\xab\xc0\xe7\xfe\x1f\xdcx\x80\xd1'u%\xc4\xfduI\xe7\x16|{=\x8e\xbe\x14/\xc08/\xc3\xe9gg$y\x191\xde\x0d\xc8\\\xdb\xe6t\xfbp((\x9fS\xae!\x0c\xcd\x0c\xcb\xd1\xe0\xf2`:\x11\xabC\xedtr2\xc2]\x82\x05\x99Y\x94\xe8\xcb\xba\xaeQ\xe1\xacH_ZQr\xf2\xf7\x87@\xa1\xdc\xd1:\xf7f\xc9\x8d\x0d\xba\x93.\xea\xa6,u\x95\x12q\xb3[\xd8\x81\x15gur\x19e\xc1\x1cmu.\xc95\x05\x12\xdeI\xcbk\xbc\x84\x95\xfe\xde\xad\xaf\xbb\xf3{\xc5Buv\x9a\xcf\n\x8d<\x85\x8dg\xa5i1\xean\xa7[\x14\xe8\x9d\xcd\xba\x93n1S\xab&y\xc9ugw|\xed\x85\x11\xd2\xe9\xdd:OZ\xf7\x1c\x96\xf0\x02\xee\xd8\x1f\xf4\x1f\xb7\xd2\x1c\xe7\xa2\xde\xcet9s\x072\xe0\xbb2u;\x9dPp\xe2b\x90'lW]\xd3\xe4:_\xf0\x1b\xe6/\\\x82o\xbb\x7f\x05\xb1/<!\xee\xd6\x94w\x8d\xd8~\x7f\x0f\xdd\x05 \x82\x0b\xe2]ug}\xb9<\x13\x10p\xb3V\x9fb\xedYi\xa6\x02F\x8f\x1e\xc1\x05\x7f\x85\x17\xe3W}(\x19\xc4h|\xce\x96\xbf\xf3\x02\x83q\"${\xf0\xf8%\xa4d\x897O\x02\xe7/\x84\xef\x84h\x9d\xf1\x8a}\xdc\x08XJ\x8b\xd2\xc7\xe8\x7fS[e\xee\xf0\xde\xb4\x92_\xb8t\x85\x11\x9a\xb8'\x13\xdd\xa31\xd9\x9c\xa2\xbcS\x99a\xf7eq \x87^N\xaa\x8f\x14\x97GY\xc5\xeaKU\xa1T\xc6\x8cj\xb6\xe2\xf7\x82(\xa1\xc2\x8c\xbf\xb2\x93\xd9\x81^\x9b\xf8\xfd=\xfc\xf1\xa7\x02\xbf\xf2\xaf\xb9\xef\xc2_\xday\x16*\xe4\xbf\x86\xa4:\x0fC\xc1\xfa)a\x84\x84/A=\x8c\x10\x1d\x04tI\xbc\xbb~\xee\xd2\xc3-\xbeU\xb1\x81\x9b=I\xb5U\x0b\x97E\\\xf1\xb2\x9c\xd1\xfcV\x1f:N\xe5\xe6h(\xf8\xee\x0eZ\xf4\xe8\xb5a8W\x02\xed\x9d\x13Mrd\xc9\xdf\xadMC\x16Yv:\xebk}\xddJ\xe2\x9e\x8c\x87\x02/\xb8\x1b\xb7p\x0f\xca\xe3!\xa1\xac\x89\xa2\xa5\xee\xdaX5g\x0e\x81\xb7\xd4m\x88\xcc\x00\xdf(:\x03\x94ohkAh\xd4O\xe3\x1dm\x9b!\x98\x89\xb6\xc6G\x93\xc7_0\x1f\x05\x16\xee\xde8SkH\x07\x90`\xfdn\x88\xc5>\xb1t\xe7\xb6`T\x0b\x86N\x19\x13\xbfw\x16\xc7\xdb\x91\xf0\xf0;\x9a\x863\xa9cc\xf4\xf4\x0f\xa1q\xe0\xf44W\x82\x15hZ\xd2<\xfc\xc9\xdcy\x99\x1e\x0c\x15\xd1H\xec\xf7\xc2=\xdfN(\xdaV\xe4\xf1\x1c\xdaW\xdet\xcb\x11]D\x84\x07u\xdc\x0c D\xb3W\x13T\xd0\xadH\\\x8b\xdb\xf2[\xc1\xd3\x8bi\xa2\x9d\xc6Z1N+\x03\xa6N\xa4\x1f=\x82%w\xf0,\xaf\xbd_^{\xc8Cq\x84Q\xb8qp\xf2\xea\xed[%\x9eL\x02$\xa6\xe0\x87)\x8d\xd71E\xc7\x87\x04\xc5\xad<\xe8\x9c\\\xda\xa4\x166\xa0\x85<;\x81\xed\xddf \xbb\x82\x15h\x80\xb0RA\xf1\xa4\xdeP\xa9d]\x1f\x1a\xc5\xa8\x0b\x15\xe8Yxp\x94\xd6\xc3z\x18\xff\xd5\xd1Fa,bAQqv\xa0\xcc\xc3\xce\xc8\xa1\xe4\x17\xf2\xb8v2d\x0c-\x03\xa0\x98\x02\x82@\xc4\x92\xb1Wrhn^\xd0\x87\xdd\x9d\xcd=\x11+U}i(k\xb2r\x8e\x15#\xb7J\xfb\xaeE\xde\xe9\x90\xde4\xdf\xaca\xe6 \\B\xc0DL\xf8[F\xcfds/~\x08\x96G\xd4Id\\\xf6T~\xbd\xbfg27>,\x02Y\xb2\xe7\xc5\xafr\x13\x9c\x13\xc1*\xe2\xeb\xfd=W\xeb\xb3\xa7\x18\xa0\x8a=\x93\x91\xaa\xf2'9\xbb\x86o\xca\x1f\xe5\xb6KB\x8cL\xc2\xcd\x07\x8a\x81\xc0\xfd\x80\xce\xdf\x8a:2\x97 \xe7\xdf\x0d\x95O\xf9\xd3|\xe8\xb8v\x052\x88rE\x171\xccG\x8b\xea\x08\xf5\xa7\xd4H\xa8e\xaa!\x10O\xf7,\xf7'\xf2\x17eB\xcb\x97S\xc3\x04\x86b-\x11\x93\x86\xdd<pPX\xdf\xa6\xa1r\x00\xb9\x10\xaa\x83\xe0n\x1aai\xdf\xeaX\xce\xe7j\x9d\x17E\xc0\xc7\x0d\x18=w\xe1/\x8e\xc1\xc38,\xe6f\xdd\xa0\xbf\x98\xd4\xd1\x8a*\x1a\xf6\xf9>\xaev\xe5\x97s\x93t\xf2\xdc$EZ\x12_3#%$V\x11\x82-\x86\x17\x10\xb1?<\x04[\xea\xf8\xd3xf\xa7-?i7\x9c\xdc\x99\x7f\xd5\xad\x1f\x1b\xb1p\xe8\x96\xd9P4\xfb\x95\xd5\x1a\x89%\x95\xb5$X\xa7C\x8dOA\x91\xc9!r\x8a\x8b\xc3\xfc\x86>\xa7\xa0~\xa8P\xd7>\\d),\xa2\x8c\x9drQL\x1f\x94\xc9\xa1He\xf0K\xbf\x9e\xfa\xe0\xa7\xbe1kA\xd3-D\x8b5E\x94\x89\x07\xf46\xa5\xe1\xdc\xa9\x83\x8fo\xea1\x90\xf2|Xg\x95\xe5\x90\xc8\xf7\x85\x8d\xfdI\xf9\xa9M\xe3`\xa5\xccb6?}\xe9l\xea\xf1\x81\xbf>c\x81.\x98h\xe4\x94B/V\xa7\x81tL\x1c$\xf2l\xb9\xc8\x16\x0bN\xba\xeb$3,\x93\xccX\xfc\xf4\xa2 [\x85\xa5@\xa7\x05\xde))\xd8\x07K\x9a\x9e\x84\xfezM\xd3&\x00\xd7\xcc\xd5\xeb{\xb1\xa3\x0c\xd7U\x95\x06:\xd9\x1bD\x00\xf8m\x85c\xd8\xdb\x11\x11p\xc4\xadKi\xb6\xc2:\x80\x1d\xe7\x1b|?w\xcf\x86g\xf1Y\xf8\x7f\xfe\xb7\x9aU\xa0;\xf0\xc39\xbd=^8\xcah\x90\x8a\x1f\xa4N\xc4\xef/\x0c!\xab\"\xd8@2^\x06\xf2\x06\xf6\x9b\xc2\x13\xd8\xe4\x9c\x87^X\xc3q\xc3`0\x00\x1c|o\x1fv\xf4RJ\x1bw3\x04\x91/ A\xea\x90 \xf0B\xc5\x0d\x85\xbd\xfab\xd0\x10#X\x1c\"\xc8\xf8F\x052-\xa0\xe2\xabP!\x0c\xbe_\x01\x15\x81Q\x99\x84\x87\x98\x00\xe7\xea\"\xee\x8aX\x98R\x02\xaa\xa1\x84\xe4\x95\xa1\x01x\x8f\x07\xcc\xefUkAO\xb3\xe6=\xe5\xbc\xe8A\xf7\xf7\xaeJ\xa0\xd4=\x94F\x9c\xfb\xb5\xe6\xe6UB\xf6u\xbb\xda3\xbe\xd8\xfa\x8caE\x0e\xe2\xb1\x1fr\xe1\xb1x\x86\xd1\x92\x1f\xe3U9\xe3XH\xca%\x186)\xa7\xa0\x04(\xd7\xf5\xd8\xdc\x04%(\x9e\x8b\x02~\x05\x82;\x10\x85r|VP\x03G\xa8\xa8x/c\x0e5\xd4]j\xc9tNi\xbe\x92h\x8ev\x953Em\x9d\x9d\xc6\xb1\xa3 \x87\x93\xa4q\xb7_\x81\xf5\x95\x1f\xce\xc7\xc5}n\xe9Y\xae\x90\x1d7\x98w\xd4t\x9e\x98D\xa2\x94\x8b\x00\xca\x07\xbb\xfb/\x82\x00\xfd\x9b\x11\x02\xb9c\xde\xb7\x85A\x95\xb9\xfe\x97\xc3`E\xd6&\x18\xe4\x8e\xb6\xdf\x16\x04\x15\xd7\xd0\x7f=\x08\xd8\x08\x1f\xb4\x13\xc4\xedA\x13\x00|\x19\xbe\x07Ek\xabm\xf0u\x9e\x8cR\xc8\x01&h\xca\x98\x9d\x8f\x1eA\xf7\x7f\xc4\xcd\x1d\xf2\x02E\xb9\xd3\xc5 \x15\xcf\xbaG\xd5\xdf\x9f\xde\xbd\x13\xbf+\xbcv\xf3R7\xac\xb4\xad\xb9uL1\x10Y#\xe0T\xcc\xc1Q\xdaZ\x8d\xe9:\xa6 \x0d\xd3\xb1\xa6%\x8f\x84Q\xe8{$h\x98\x01\x14\xbdv\xffG\x93J\xb3~5\x12D74\xf6HB\x1f\xd02\xaeK\x9b\xc6\xb3\xf5\xfa\xc1\x8d\xe3\xa2\xb6i\xdc#+\x1a<\xb4q\xfd\xc8m\xeb2\xa7\x0b\x92\x05\xe9Iz\x17\xd01tsxu\xff\xe5\xfb\xfd\"\x8a\xfe\xa9\xfb]c?\xd5z\xbf\x97\xf6u\x1agT\xdd\xc7\xa7\xd5\xdf\x1f?\x1d\xca}\xcd\nv\xd4\x97\x17$HJ\xb5\xdf\xd4\n\x0e\xde\x9d\x1c~)]\xb0m\xe4\x87\x0c\xfc[\x12\x90\xeeT\xa4\x13\xf81\x8a\x02J\xc2\x19\xef\xa3\x96\x9cN\xb2\xa12\x03\xed\x17\x93\x1b\x1dQ0&\xc8\x95\xf6\xa00\x91\x00\x1a\x83X\xa56\xdbXG#Z\xf5\xc5\x81=\x96\xeb\xdd\xa6/\x1d\xc9h\xd7\x97\x9c\xd7\x1b\xc3\xbc\xfe\x1d(\x88)C\xe2\xee\x03\x93\x9c\xd6\xb2\xa7\xed\x14\x03\xd54D\xda7\xb4\xa74$\xbfUI]\xa4#u~\x98\xfe;P:\xae\xb4Q5\xd8Z\xcc\x89\xccn\xf5\xba\xa8\xde \x95'q\xa3ylw\x83\x1bB\xf1[\xd4i4C\x19\xad\xdb\x13y\xdesY\x8eN{\xbdh\xe6\xf6\xa1;\x14\x99\xfe\x8d\xe29j=z\x82!\x8b\x1b=\xbfp\x14\x17\xbcQ\xb5+S\xfb\x90\xbby\xf4z<KM\xfc\x1c\xa2^\xcf|]\x0d\xb2\x97\xf3\xea\\m}\x94\xde\x1cJx0\xe0\x8c\xc4\x8f\xc6@\x02\xea'\xd3\x07\x15P?f\x13\xcb\\K\xc1\xba\x17\xb3\xd0\xe7\x9d6_\xa6wo\x1b\x16\x0e\xfe\x05\x80\xed8\"d\x007\xdbP.F\"\xae-\x08E\x00\x81\xfb{\xd8\xdda\xdf\xc3\xbct\x0f\x0dUx\xee\xc5\xa2t4\xdc\xb4[hW?\xff\xd2\x85\x11\x178m\x80\xfde\x80F \xfbN\x15\xb4\xad!\xd4\x00\x1d\xfd\xac\xdaAE\x1f\x19\x81\xd5\xdfo\xdc]-\xe1\xf6p\x98\xe1\x1b\xe3|\x08-l\xc4;\xe4\xcb\xa0k\x81\xac\xd9\xcd\xd9\xe9`lJ\x05H\xc8\xc2\x8e\x15r\xfd\xe4wg<\x1dn\xec\xcc&\x98\x8c\xcf\xed\xfd\xf9\x89\xb4c\x10ZM\xd7\xfd6Ll\xe5\x043\x1f]\x8682\xbe!\x00\x97\x98\xacH\x86\x12\xe7\x1a\xe6\xeey\x97\xcf7\x06\xe1\xdf\x1e\x10\x8f:O\xce\x9f,\xfb\xd0E#\xe2\xd2q\x16O\x87\xba\xe3\x8c\xd5)\xd8\xff\x88G\xaa\xe57\x06\xa2\xe5\xfcN\x9f5P\x1cy1L0\xe2m~\x042FN\x9c\\\xf1t4\x83 D\xf0\x83\x92\x9bP4\xb4\xe9\xf6a\xd3e/\xdeZ*\xf7a\xb4\xcb*UK\x9f\xba\x184\xa5\n\x8bq\x17\x0dg\xe2A\xb2\x0e\xfc\x14\x7f\x0f\x16Q|H\xbcK\xa7\x99\x15\xf5\x07Y\x98\\\xfa\x8b\xd4\xc9\xbb\xa2\x98FQc\xcc$\xdc\xa4Et\x80Q\x1f\xfc\x07t\x84\xd7\xb5\x14~`X\x12\xc2\x0f\xfb\xb0\xab \xac\x83\x96\x8a?p\xcb\xa7\x1aP\x86Vd\xfdb\xc9\xe7([]\xd0\xb8\xad\xe0\xc39\xce\xff@\xa6\x86\xdf\x17u\xe2\x81\x9f\x1c\xd1%I\xfdk\xfa\xdf4\x8e\xbeF<\xba\xf0C\x12\xdf5M\x01T\x19Bx\xa7v\x87\x17\xc2\xceV\x8c\xd8\xe1\x98\xb6\xa1)\xcf\xf1\xba\xbe\x02\xf5\x0d\x1ayiI9\xf4\x80\x11U:~*\x06T+~\xd0x\x84\x83\xedCFT\xf4UE\"\xd0\xf7\xa18\xf2>\xa4\x9fb\xe6\xb7\x959\x8ev\xddA\x1a}b\x02\xe9+\x92PG@\xa2\xb1\x9a\x0526\x1c\xab\xc8\x85b*\x15I&aO\x0f\x02\x9f$4\xb1\xe1\xe2t\xb3\x0f\xdd\x0b?\xecjR \xe4\x98>\xedC7\xf2R]\x95\x1c\x8e\xd3\xd1\x10\x13Uy\xbaZ%\x88OG\xbb}\xe8^\xd2\xdb\xee\xf7\xbd\x0b0\x8b\xb5\xe5b_\x08\x90\x1f\xe9\xf2\xf0v\xedt\x7fw&\xe3\xe9Fo6q&\xe3\xe1\xfdt\xb4\xf1l\xc6\x8e\xd8\xf3\xd9\x0f\xae3\x19\x9f\x9d\x0d\xe4/VaJ\x0fgXY\xa4\xc4\x9d\xdc\xe7\x15z\xda\xc7\xc5/\xd1\x8c3\x19\x97\x0f\xf2\xa2\x07^\xf9\xecl\xe0L\xc6~\xb8\xb8\x7f\xcb\xfe\x1d\xbdq\xefyQH\xc2\xfb#rt\x7ftp\xe4\xba\x7fV-\xef1.?&\xedU:\xa7O\xcczB\xad\xf0\xbc\x08\"\xf2]\xc4gU\xbf\xcdoF\x18\xa5u:\xbe\xe0`\\\x95\xf9\xa1S\xd5zo\xf6\xcdy\x1am@\x189B\xd8\x07\xc9G\x08\x03\xe4\x1a;2H\xa3w\xd1\x8d\xdc\xd2\x8c\x97\x80 ;\xc8\xc7 b\x00Og}\xe8\xf66\x94+tdX^\x8a\x13\x86\xdf\xa1\x16\xccH\x1fX\xcdE\xc1{\x08\x0b$\x98\x88\xc3l\xf0\xe1\xf8\xe4\xed\xe9\xdb_\x0f\xcf\xdf\x1e\xbdy{\xf4\xf6\xf4\xaf0\x96\x8f\x8e\x0e\x7f:\xa8>\xea\x0eB\x12\x16\xcd\x1d\x91#\x18CZf1\x04is\xd2/\xe33\xa22\x9f\xf1\x86!\x8e\x95\xd3\x10\xb6w1\xe74\xa2\x07t\x95JN#f\xaf\x9b9\x8d\x10~`|\xf3\x18\xbf(\xa3J\xff\x9dx\x0d\x873\x1b\x9d}\xee\x8d\xa1\xe15\xda2\x1b%Bi\xc2\xf8P\xaf\x1c\xf2\x93#r\xc4\xfa\x82\xe4\xc6O\xbdKp\x8c\xca\x03\x8f$T\xd5D\x8e\xb5\xb5@\x01\x0e\"\x9f^<\xe2\x8d\xe5z\xdc6\x8d\x1d\x1d\x1cY\x1b\xcb\x15\xb5\xad\x1a#G\x1a\x8dl\xe1\xf8l\xdcnB\xeb\xf7=\xa0\xc5v\xfe7\x83\xd6\xdb\xa37\xdf\x0eZo\xc3E\x1bh\xd5)\xd0\xf7\x83\xd6\xc67\x05\xd7\xc67\x85\xd7F#\xc0t\xbb\xbdx}8\x18j\xc6\xa2\x9cKe\xbe\xb7\x0f$\xcf\xe95\x810?\xa6\xba\xb4\xcb\x0e\x14\x1e\x083\xb4\x11\x93\x7f\xd6mC\x8d\xff\x8aj\xfcW\xce\x1e)\xff\xb9\x1b\x8e\xe9\xc7\x9f\xbb\x8d\x1c]c\x8b\x93\xca/\xc6\xbb\x9d\xa6\xb3\xfb)\x9c\x9d\xa5\xb3\x9e[z8V{/\xfd\xe0\x0c\"/\xf9\xc1\xe5\x1c\"\xb6\xf0\x83\xf3\xdf\xf7\x0ec\xc6\xdcj7\xa5\xf7\xdd\x89\xebNJ\xac\\\xab\x1b\xdd\xd4_\xd1$%+\xa3)\xcb7\xe7\xd6\x8a\xb0\xe5\xd1\x80\xdeRO0my\xa9/K\xbf\x03\xbf\xa6\x89\x87b\xb85Y\x0b\xf7L\xfd\xb9\x97\xdf\xe0 \x0b\x96\xcf\xc3\xcd\xb9\xb2b\x12j\x9erW1\xf3>\x8c\xe3(v\xba\xafIJs\x9fZ\xca\xcat\xc1\x99|\x91W\xb4\x97NG3\xce\xfc\xf4\xd2\xe9\xe6\x8c{-\x11\xfesk\xd6\x87N:\xdd\x9e\x15f\xb0\xf4\x06X\x07\x0e\xfbo\xf0\xe9\xf4\x95#\xc0\xa0\xf3\xc3\xf3E\x98\x8a\x1ek\x82G\xa9\xe8\xa5\xd3\x9d\x19\x8fO\xd1K\xa7\xbb\xb3>\xa4\xd3\xbd\x99\x89\n\xa3\xca\x15\x03\xdfN\xf7f\x82+\x1d\xf6a\xcb}\x0e\x8b\xc2\xa7r\xeb\xb9\x0b\x0b4\xf0\xd3Q)l\x87u\xb7\xa8\xd3?\x13z\xa5\xd3g3\x04<[\xb3]\xba\x0d?\x80\xb3;\x84\x1f\x10Z\xc3\x19\xf4\xa0\xe7\xa4\xd3\xd1h\xc6\xd0l(\x95\x80\xb8 \xea\x9b\x1bkW\xc4g0\x82M\xc1\x9e\x85\x8bQ\xd5\x1f=\x02o\x90\xd0\xf4\xd4_Q\xc7\x1b,\xc57\x1760\x88\xa6gCa?LR\x12z\xf4x1\xc6\xeeZph\x96M\xc6\x88\xfa\xdb\x93cA\xd7\x8d\x8e\x00\xdf\x8a\x10?\x90\xcc\xf0\x04\xfc\xdf\x8f\xc4t_\xbcP\xac\"L\xe6O\xdf\x0e\x0c\xc5\xcf4\xbe\xab\x0c\x8b\xc3hg\xdb\x1d\xfc\x88\xb6\xc2E\xaf\xe0\x11dd\xd8L>\x97\x1a\xb4(\x18\xba\x07?\xbez}\xf8\xe6\xa7\x9f\xdf\xfe\xe5\x97w\xef\x8f\x8e?\xfc\xd7\xc7\x93\xd3O\xbf\xfe\xf6\xbf\xfe\xfa\xdf\xe4\xc2\x9b\xd3\xc5\xf2\xd2\xff\xe3*X\x85\xd1\xfaoq\x92f\xd77\xb7w\x7f\x1f\x8e6\xb7\xb6wv\xf7\x9e>\xeb=\xd9?\x0b\xcf\xe2\xee\x03%x\xae\xe4\xf9\x1e+\xf6\xc57\xe0\x06J\x1d5^\x8e3\xfa\xe8\x1b\xae\x88B\x1e\x030\xe4\xbeC\xa1\xed\x9e\xa8\xe3 i'\xb9\xfcK\xa5\x19;\x8f\x06\x08\xbb\xdb\x8d7G)\xbc\x80a\xab\xdb\x1f\xd4\x8b\xefj\x1f\x1b)a\x0c\xff\x01OQ\x01]\xc6\xfb\xaf>:\xa3\xb2\x02cz\x16\x9f\x85\xfb3\xa1\xc60\x03=\xb2.K\x86\x91\x80\xb4\x8f\x12\xf3r\x07\x86;\xa1\xdc\xd3{\xf8\x1c\x18\x94\xc9sH{=\x17R\xf8\x0f4\x05\xe3*\x13~\xa5\x13\x88L\x11\xf0\xf2%\x8cv\xe1\x11l\xee\xec\xb8}P\x8b\x9fVK7wv\xe0\x11$\x8c\xec'\x98\x0e\xe4\xc5\x0b\xd8\x85{\xc8rt\x88$:\xa4\xba\xe3U,\xd1\x10dH\\\x82\x03\xfb\x01v\xf1\x9a\xe6\xab\x86\x04c\x18=\xcdu=\xe5\xb6\x86\xda\xb66E)\xbe*|\x0f\x19h\xd4:\xdb\xf9\x9b1\xa6\xdfX\xc4\xd1*\xff\xe2\x04(\x16 \xbd\xc7\xaf\xdf\xd4~\x15C|0)\x87S\xd0\xf67'm\x11:\xe6n.F\x82b@>\xd2Hk2\x0b\xad1`\xe7V\x05;q\xe7g\xd3\x08\x97\x8f-\xfa\xee\x16\xf2|J\xe9\xa6\xaet\xb7R\xb8\xbb\x05\x8f\x00Mr\xd8\x8c\x9c\x88a\xecS\x17z@\xa7\xa9\xf9R\xb5\x8c\xa0[\xfc\x0e\xf1\x1b\x8f\x08\xc6\xb0Y\xa0k\xa9\x9d\xa1\xae\x9d\xedZ\xe1\x8b\x17P\xedqw\x1b\x1b\x1e\x15\xc8\\j\xb9>\xc0\x17/j\x0d\xefn\x97\xdb\xebC\\F\xbc\xfc\xd7Ws\x10f\x89\xb6\xa6\xff+\x87\x9c\xacs\x08F\x85\xe1\x03\x99\xb4\xc8\xe2\xd1`\xf0\xea\xf8\xca3\xdfd\xcf_\x91\xd7\xb8*\xdcx\x1cP\xdb~\xe3\x97\xd2A\xee%\xccv_\xf8\x9c+\x83\xcd\x1ed\"uh0MgE>\xb0\\]\xcb\x01>\xeb\ny\x15\xd5\xb2q\xb3Q\x87\x88\x89\xe3\x87\x10\xdb\xadx\"\xd1$Jj\x16\x8eB\xd6\xcf\x1a\xbb\x96\x9f/\xb2\xd6A\xe6\xa7\xb9\x0fVM\x98!$\xf9\xa1H\x9a\xc1\"\"[\xb4\xca\xdf\x91#Ny[~!\x83S\xd7O\xfc\xb3\\\x8dZ\xec\xfa/\xdc\xc4k\xe2\xc7\xc9\xbf\xd7.\x16\xbe\xbb\x96\x9dJ\xc4\x8c\x0e\xe2\x98\xdc9\x99t\x81\xcco{\xd8\x16\xce\xbel\x0bg\xb8\x85\xf5[7j\xbdu}\xf4\xe7G\xc3!\x85\xe2^\xd1\xbb\x84\xbd]u\xf17\xb5B\xa6\xe9\x8c\xd12\x7f:d\xe7\x0c\xfe\x9d\xcd\xfe\xe9hoXG\x1dW}]\x0d{&R\xd1\x18\xd6\xd1/\xad#\xd1\xae#1\xad#[-\x82\xab\x15\xd5@\xdc\x07_\xc0.\x12\xb0\x8b\x10vF6\xc6\xff7\xd8\xc1\xe5s\xfb\x81\xfb8\xa1\xc6\x0bt\xbdw\xe1\xf7\xdb\xc4\xd6#\xd6\x0f\xc1\x10\x08L9\xc9\xc2\xbe\xb0D\xccIm8Mg\xd6\xfd\xf2mQ\xdeD\xe9\xff\xed<*\xffH\x9ed\xe1\x9c.\xfc\x90\xce\xbfR\xfbb\x81\xc3\xc3\xa1\xea\xd6\xf2\xcd?T\xa6\xbb\x8e\xfc\xb9\x8c/f\xeb]'\xcd\xd94\x7f\xffn\xae\xd1\x7f$Ob\xba\xa4\xb7\xdf\xe5F\xe5\x01\xca3\x1f\x03\xd5`\xbd6\xe7S\xeeW\xa7\xe7\xb3\x19\x11xr\xf6\xc4\x99.\xfd\xd5\xec\x07\xf7\xcfO\xe4\x05\x87\xbez\xac 9\x00\xd2z\xfa\x89\xd4\xbe\x0f\x8dw \xfc\xc2C\x9a\xf2\x86\xd3\x11\xcab\xf2\x16\xe1%\x93K[\x9c\xd8\xac'4\xeb\x9d\xa6\x85!P\\\xb2 *\x9a\xa9\xb5\xf2\xbd\x8f\xe1\x7f\x0e\xc4\xe56Q\x80\xceo\xe1\xaa\xd0-\x19\x13\xf5\xc1\x001\xbc\xd0*.H\xd3~U\x96\xf9J*\x913j\xbc\x83\xb6&1\x0f%(\xd6\x05a\xb0\xea\x01\x1d$Q\x16{\x14z\xac\xc0\x08X:X\x06\xd1\x05 \xc4\xd5_o\x1f\xbaK\x1e\xb9\xaf\xc8D_<Z\xf1G\xfe2\x8cb\xfa\x8a$\xea3\x9f=K\xbf\x175{\xaeT\xca\x0f\x18%8\xd3\x8d\x1f\xce\xa3\x9b\x1c)\xf8\xcf\x01M\xd6\xb1\xbf\"\x15\x03\xc1\xa8\x994j/\x15\xfeH\x9e\xc8\xd1\xff\x8b\x89c\xfd\xd6F~r$p\x10 \xd8\xea\xbb\x06E!\xc8t9\x03\xb4\x12c\x9b\xc1.\xab\xc7$\\\xd2\xb1U\x007E\x19\x15\xbb\xe3C\x1c-c\xb2\xe2\xbb\"\xc4Xxl\xc9d\xa8\xb1\x8bh~\xa7\xc4\xe5\xe9\x1e\xde2\xd4O\xfc(<IIJW4L\xbbJ\xd5\xe9p\x967\xe1t\x0f\xe28\xbay# \\\xbcY}\x81\xe6O\xf8\xbb\xe8\xff\xfc\xd0\xb74\xb2\xbez9f\x83A#\xa5\xfe*z,\xa2\xe54/~\xa4,|h[x\xfb\xa2\x7f6\x90s\x93\xeb\x0b\x1ek9\x16p!V.\xc3H\xfcV\xb1\x80\xad\x8e\x16\x0b\x8a\xaa9\x16\xb0\xbaF$(\xd7\xaf\"\x01C\xb6\x07\xbf\xa51\x87xC\xfc\x80\xce!\x8dr\x9b\x88\x9c`\x98\xefT\xb4\x1d\xacILV\xc9\x03\xccC}\x19`5$+\x1d~\x8a#R\xdb\x19B\x1c\x17\xba\x0f\xdd\x1f\x83\xc8\xbb\xaa\xec7\xf3[\x08\xbe \xc2@\x02\xd0\xf1\xfb\x10\xcaH\xc2S\xb4``\x07\xf2t4\xe3'\xb0\xb8xQ\xabw%\x81\xc0\x08R\xc5\xab\xfc5\xbb)\xcd\x17\x1f\xd1r\x00\xff\xd4C:?vs\x1b\xb6\xefk\xeb`\xf2\x05\x18\xee\xe9L\xc7\x9c\xd1v\xb5>\x11\xf5\x9fV\xca3\x9b\xd2\xaf\\5i\xd6.\x94_\x08`\x1f\x9eU\xc8 \xec\xc3\xa8r\xad\xb5\x80}\xd8\xda\xac`\x03+\xdb*\x97\xcdY\xd9v\xb9\xec\x92\x95\xed\x94\xcb\xaeY\xd9^\xb9l\xc5\xca\x9e\x96\xcb\x96\xac\xac2\xbe;\xd8\x87\xed\xcaX.XY\xa5\xdfsVV\xe9\xf7\x06\xf6a\xa7\xd2\xc7!\xec\xc3n\xa5\xbd[VV\x99\xdb +\xab\xf4\xf1\x8a\x81\xaf\xe2\x93x\xc5\xca*\xef\x1e\xb0\xb2\xddr\xd91\xe6/\xacT\xfc\x80\x85\x95^N\xb1\xb02\x95\xf7\xb0\xafA\xfa\xe1\x18\xbaggC\xcdQ\xb4\x87O\x88\xe6\xc9S|r\xa1y\xf2\x0c\x9f\xa4\x9a'#\xdeQ\xa8{4\xc2G\xd7\xbaG\x9b\xf8h\xa1{\xb4\x85\x8f\xaa\x0c\x1d\xfbl\xf2\xa1Wu\xd1\xec\xb3\xb5=\x86\xc7gg\xdd\xc7\x9a\xb1\xf3\xbe\xce\xce\xb4\x9d\xf1\xde\x8et\xcfv\xf9\xd4\xceu\x90\xda\xdc\xe2\xad\xbe\xd3?\xe4\xad~\xa8(\x1a\xcaU\xdf\xb2\xf3\xba{\xd7\xedC\xf7\xaf\xec\xbf;\x9a\xe0w\xf1\xe7\xf0\x84\xfdA\xb6\xb7{\xcc\xff?b\xff\xe3W\xfe-\xc2\xaf\xfc\xffc\xac\xbdX`E\xf1\xe7\xcd\x9b\xeeL\x17U\xe3\x8f:\x9d,\xb4\xb6\x95\xabhn\x82\xb2ou-\xeb\xf3\xc8\x19\x9b;;.\xe7\x85n\xbb<\x80\xeff\xb9\xad\xdc\x1a\x19\xab\xef\xee\xecl\xc9\x172\xf1\xc2\xb6\xe6\x05=\xd7\xde\xe1\x8dlo>\xdb~\xb6\xbb\xb7\xf9l\xc7u\xcb\x11q\xbdhNa\x1d\xf9\xa5\x8c\xb9<\x00\xe2\x8a\xdc\xc9L\x0c\xcb\x98\x92\x94\xc6<\x19\xc3\xf0\xf6\x8d\xf8\xe8X\x07\x1c\xe8'1\xd0\xa7\xe5\x95-\xfd\x92\x87\xde\xd9YW\x84u,\xe28\x0e\xf1\xfd\x8d\\Vv\xa1\xa7\x08p\xba\xc8%G\xf5\xc5R\xa2X\xf3x\xe1y\x98n_\x06\xc9\x961\xa7\xdf\x93\xf4r\xb0\"\xb7\x0e\xa6\x0c\x17\xc5\xf7\xf7\xb0\xe9\xcah\xdfW\xfe\xfamxM\x02\x7f\xce\xdbR~\xab\xa1\xb9\x17At\xf3\x8e^\xd3\x00\x99X?9\x8a\x18L\x97\x0e-\x9e\xb8\xd2\x17I)\x93\xbd\xa4w\x81\x08\xc1]:YMLu=%p\x93Ym\xe1\xdb\xff\x8f\xcf\x06\xcds(\x12\xa2pk\x0d\x9e\x845\xae\xdc\x1b\xa4\xf9\xd5\x0c\x8f\x04\xe0?\xe7ARG<Iy<\x8d\xc4\xed\xae\xd8\x0b\xe9\x94\xa0;w\xa7\xc39\x1aRX\xb1nr\xdb^\xf6\x9aF\xb0e\xa8Argn\xb7\x0f\x0e\xcf\xe9V\x89J>\x90\x89\x86X?\xac=\x91\xe4!\x18\xa8>\x97}\xc8xg\x19^\\\xab\x8f\xa6\x19\x1b_8%3\xd8\xaf\x06\xc3\x05E\xcd]\xc6gGA1\x868\xd8b\"\x0d%s\xdc\x89\xe2\xf4\x17z\xc7\xb3\xcf\xe4?\xca\x01\xddC\xfa\x9b?\x97\x01\xd5\xf3_\xf7\xf7\xf0T\x86C\x0f\xa3\x8ft\xc1\xdb\x10_\xd5\x16\xc2\xe8U\xb4Z\x93\xf4=\xdb\xce\xbc\x8eR\xa0\xd6\xf4\"\x86\xdd\xe8zu#@\xa9\x14\xa85\xbf \x84\xbcLOd{\xe5\xf0\xb6\x1cu\x1e\xd3`\x85E\xe4\xfaR\xb6F,\x99g\xec\x0d\x92Ra\xaf\xc0K\xb3\x84\xce_\xabOJ\xb1\xfet4\xe2\xa3v3!\xd2\x8b\xdd\x14\xc1~%\x9al\xea\x8at\xc6\xfc~nc\xc4\xf1\x9a\x8d-Q\x83\xa5\x81\x0f/ y\xeeb\xda\x064`\x97\xd9\xfa\x85K\x1f;\xfb\xc1w\xd1\xec\x87\xfb\x8a\x88\xac\x16\xa2\x83\x04\xb3\xbd\x95\x9e\xb0.ydW\x1f\xad\x86\xf8\xf7P\xd5C\x9c Q0\x14x\xdd\xdb\x87\xc8eC\xec\xedW]\xcb\x04\ngV\x10\xbd\xb6\x85\xe3\xd6\x87\xdb\x95\xe4\xf2\x07H]k\xdb\xef\xea$Z\xca\x1c\x08\xb1\x05\xc3>\xfe\xd5\xbe\x8e\x9f\x8c\x0dmm\x96\xa3T\x8d6wQ~\xdf\x1dU\xc3`m>\xdba\xbf\x18\x87RxP0\x96D\xfc\xba\xbf\x87\x9d\xbd\xad\xed\xed\xf2{\xec0\xdeb\xbfx~\x8a\xbc*+\xdf\xadt=\x1am\x8fF#\xebD\xfef\x9c\x08N\xb1\xd2\x0f\xb6\xcc\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebM\xf1\xf5\xd2:\xac7\xc6a=\xf9\xfd,\xfc\x01dT\x13u\xb9\xe57\xb6\x91\xfe^\x0f<\xf2#cs\xcaE\xbf2Y\xa5\\\xf43\xe3m\xcaE\xbf\x01\x06\x99\xae\x0f\xf2/\xf6\xd0\xebl\x1c\xbej\xe7\xd4\xd1\x84B \x0c\xe5\x0b\xdc\xe9<\xeeG\xfd\xe9{N\x07j\xe5\x8cS\xfd$\x12\x92\x96r\x96TV\x12\x83\xf3t\xde9\xfc0\xca\xb0\xec\xbc\xf8z[|\xbd)\xbe^\x14__\x15_\xaf\x8a\xaf\xc7\xc5\xd7\xd3\xe2\xebe\xf1uU|\xbd+\xbe\xae\x8b\xaf\x1f\x8a\xaf\x87\xc5\xd7e\xf1u^|\xbd.\xbe\x9e\x14_\x0f\xc4\xcc\xcc\x89^49\x1f\xd2\xbaJ(7y\x18r\xba\xaaP\xd9^\xcfv\xb3\xd5\xf9$\xc8\xae\xd2\xbf\xafD\x05\xfaM\xaf\x04f+\xf7\x96\x8d\xfdoZc)\x13\x83\xfd\xc5\xc3\xd4\x0e\x12 \x9f\xe7rd\x1d\xf6a\x01hQ\xcdX\x15\xe4Ya\x03\xde\xe3\xe9\xf2\x92[\xf1vA$\xd2\x9c\xbeg'\xc3\xac\x8f\x88\xe9\x1b\xf4\xdc\xb9P\xc1@\xf4\xb5\x00\xd1n$\x1c%\x0e\xbaq\xa8\x7f2\xb7&\xc6\x85\xdcM\x00\x13\x08\xe1%<\x83\"\xed\xd2o0\xc6\xf2\x9fa\x0c\xbf\xc2\x98\x8f\xb2\x13\xf1\x87\x7f\x871\xfch%m\x7fU\xa8Fu\x85\xe8`\x9e\xadJ\xbc\xb7\xe9.\x84\xdf\xfe\xa6\xd5\xdb\xdf\xee\xe3\xc7\x86\x9b\xd9N\x85!\xe3\xa1\xfd\x19H\xde\x16!\x08\x14W\xd3\xc7\x18\xa0\x1dz\xec\x9b\xfeF\xd9\xcf\xb9\x0b<zU\x01&\xb48\x0e\x88\x84\x02*\x93)\xa4\x91\xbc\x05\xfe\xc5\x0f\x1d\xa5R\x1f\xb6\x87y\xbed\xfe\xda\x06\xf8\x86~\x18\x05\xc4tD\x8a\x80\x03/Y/\x18)\xee\xe5\xbe\xfa\xa0>;\xe9\x94\xfc\x17'\xed\xf3$\xc6\xbeH\xdeL\x14\x85\xa3\xd1eY\x80\xb0Q~\x92\x1f)G\xe97\x02\x94\xdcYd\xc0H}\xa6\xd9\x90\x87D\xe3\xd9\x82\xccv\xa8 p\xa2\x9ah6\x9c\xe5\x19H\x15T0\xc5n\x04\xeb\xbd\x0d@\x9e$\xa9\xbe{\x8d\x96\xaf\xe8Q\xfd\xf7F?jM\x06{\x90o\xff\xd8\xf8\xb6\xc0\xed\xc2\xe7\xe51z\xbb<~\xdcuM\xf8\x0e\xb2\xf5_\x9b[\xbfg\xad\xff\xc2\xf3\x04r\xbca\xcd\xfe\xe4|dE\xbe)M\"\xb6\xfess\xeb/\x8d\xad\xb7\xc67(\xcb\xee\xb0\x0fO\x9c\xb3\xb0\xe7:\xd3\xdf\xcf\xc2\xd9\x0f\xee\x93\xa5~W\xa9\x1f\x94\xc9\xb3\x9a|\xe1r\xd9DP\x96\x0c&\x90\xa1\x9aA\xb8U@4\x08H\x92\xbeeo\xf0\xfc\xe0\x7f\xce#\xd3\x0d\xfb\x98\x7f;u\x0d{Z\xfd\xa0\xa8~\x16\xcaP0Ct\xffd$^\xfe6c,\x88\xc9k$l\xf5#b\x0c\xc6\xaa\x0b\xb01\xc1\xa7\xfaam'\xc0\xc3\xbc5O\x04\xc4\xc9\x15O7\x1b\xc6\x0cyJ\x18>\xcb\x00o\x80|\xb6\xd3\x13\xe81Y\x0f\x13\xdc38\x88\n0a_\xc7<\x9f\x1d\xf4\xe0\xcfN\xc0\x85I\xbc\xb5\xb0vf\x8ey \x05*\xfa\xc6J\x9f\x19z\x12\xb7 \xdb\x7fk\xc4\xf6\xc7\x98\xac\xa4\xf9~O~rA\xba\xe0\xca\x85\xa4l\xe4\x91\x84\xce\xb4\xc2\x08\xbd\xe4\x02\xda.\xa0\xe7\x0e\x13\xd7v\xb7F\xc8\x04\xd4\x83\x95\xfa(\x15\xf3wv\xb76\x87PD.\xdd\xda\xdeb\xc26*\xa6\xfepF\xc3Mt`Na\x83\xb7\xce\x93\xc9l\x88\xd7z\\\x86c`c\xbc\xdb\x98\xeb\xbc\xde\x0b\xab\xd9\xde>t\x90\x93\xf9\xe4`Zh:\xf5g0\xe6\xa7\xdc\x1fz\xb74\xf5#\xafSmk\xe6\xf2\x8c\xa2\xfa\x86D \x08\xf3\x92\x95t\xba\xfej\x1d%\x89\x7f\x11\x08\xc7\xf71\xf8BU\xc9\x8d@x \xb2n\x13c\xf7\xd9\xb1\xcb\xf3\xbf\x983K\xc1\xbe\xe4\xd7\xa4\x02\x10\xe3\xafin\x01\xe221)\xc5\x95\xd2\xea/B\xb6\xdfx\x8em\xfd{\x9b\x9c\x1e\xe5\xcf\xd8(\xba\xbd..\x97\xdc\x94\x1b\xfc\xb09\x0b\xbb\xd6\x19\xfed\x14\x84MCf\xb8Q\x90\xd4\x8d\x11\xa6\xf7\xb4\xf6\xf1g-\x14\xd1\x1aAq\xbcV\xc9k\xce\x1bTl\x87UE\x96<Z`\xfa;\xa0;\xa9\xa2\xc3\x1a\xf2cb\xc8\xe5\xe2n\xf79\xae\x97Bh\xf1h \xf9\xd1\xe22F\x0fsCI\x03&\x02/\xc1\x87 \x10\x18s\xd9Zd\xed\xe4\x96]Rs\x15\x0b\xadU,\xb4V\xa4\xaeW\xcdY}\xd1@_\xcd}\x9a\xf7)\xbb\xc3j\xaaj\xcc-\x12@\xc9b\xae\"\x83q\xa52&\xfd\xad\xc5\xf5\xd3-\xc6\x7f\xeb.\xb2A^[K=\xbb\x88q\xa1\x81\xbe\x00/;T\xb8\xc9>\xe2CY+:\xae2\x90\x85*\x9d\xc0\x0b\x08\xd8\x1f=\x07\x89\xa2\xa3\xe31)oJf\xee\xa0\x88s\xc0P\xc4\x1b\xe4\xf6\x06\\\xcb\xdd\xf1*5\xba\xdc\xbc\x80aR\x9e9\x90\xd3XY/Z\x80\xfaR\xdeN\xder\xa5#F\xfal\x82.\x95\xea]\x98\x80\x87\xdf\xc7\xd0\x9dt\xfb\xe0\x0dr\xbb\x04\xdb\xb1\xc2\xdaXp\x95\xa8\xb8\x1a\x99b33>\x0e5>N\xdfh>\x91\xf1\xbb\x00\xb5K\xee\x13\xa1\x94\xb03sa\xa1\xe2\x06\x0d\x80\xfaA9/\xa9\xf5\x85\x11-\xca\xf4\x99'\xe8\xf7D\x82\xfe\xc7/1k\xbf\xe0\xfdc \x9eG\xd7i\x82Wo\xfc\x04\xe6i\xc2\x10\x02\x8f\x9bN\x9a\xf2\xb4\xa6\x8b\x19\x9f\x99\xf9\xe41OY\x8a\xc3\xb1\xb6\x8a5\xfe\xb4\xc6&K+\xe6w\xec\xfa\xd1\xffU\xd2\xf1\xf1M_\x95\xd9\xd5\xfb\x83|\xc8a\x9fo\xe5\xb0\x0f\x9d\x11F\xc1\xc9\x7f\x0e5\xd9\x82\x13\xc8\xb1\x847Q\xcd\xdb\x9a\x13?U\xa4}\xc1#\xc4\x95\xa5\xdcjVS\xd6|\xd0\x87E\x1f\xed?\xea\xdeR\x0cAQ\xd9\x91?B\x17\x1f\xf9\xa4\xae.C\x85\x9d\xa3h(\xc5\x8dXqI\x92\xcb\x04\xa1\x8b7f\x85o\x06\x02\xeb\xd1#\xb6\x05\x95\x02T\xdb\xdc\xdf\x83P\x84K\xa5\x02\x12\x86\x97 R.\xfb\xa8*u\x85Z\x8aVn_\xa6\xc1\xcc-\xa0\xdf\xfd!\xa6\x8bs\x86\xe3\x15\xf1\xderQ\x8d\xd3\xc2\xb6;\x9a\xc6q\x08\xba\xf2}\x9eR\xdc\x00W\x97\xaf\x1c\xcf*\xab\xde_\x8aU\x96\xc7\xcd\x04\x9cN\xcd\x96I\xa3!\x92\x9f\xb2r\xb9\xaf.\xb0\xc5\xa2\x95\xdf\x1c\xa7\xc4\"\xe0]V\xeeYM\xb9\xf1\x91\xd6H\x1f\x04y\xa5\xe8\xc2%~w\x9aT\x80J\x0e\xd9\xe2$\xd0\xb4\xa3\x145\xb4\xa8\xbe\\\"u\xf9u\xe7*K\xd0\x92\x80\xc0\x05O|\xc3\x13\x98\xdb\x8c\x10\xa1\xa4b\xe5,\xc4e\xe9\xbe\x8d<\xe72\xd8\xc8E\x95=\x135\xc4\x823\xc8\xf8\x0c\xa9\x1d\x0c\x89$\xae\xb5D\x88\x89p\xca\x18\x9c\xcb\xa9?\x9b\xf5\x05\x8d\xe1\x96\x80\x19O\xcb\xce\xffq\xbc\xc7\xdd\xd5b\x07 \xe4\xc7\xbd\xc1\xbe\x15\x1e\x15L\xf0\x90\x89\xe0e\x1dO,\x1d\xd6,\xe77\x9f\x88 N\x13\xc6\xa8\x8a\xaf\xd0\xc5\x8d\xd7\x93\xaf0\x0e\x83S\x81\xd2\xdc\xd4\xa9$|\x1a\xc1\x17\xf4<.z\x1eC\x97\xe1uo_\xed\xdd$\xedHZ<W\x08\xf1\x1aI\xdb?>k\xa2\xee\x89}&g\xe4K\xda\xe2\x14t\xe4QNG\x90\xc9\xe3\x9d3\xd9\xac\xbe[m[\xb5b#\x914\xec\xd3\xa0y\x9fz-\xf7i5\xa7\xb6\x97\xa3o%\xa7vV\xbf\x8a\x9f\xa0\x00\x8eR\x93\xa0`\xfc\x18\xc2\xbb\xddn\x1fq\x02\x95 S\xb6?\xbci\\`3N\xb63\xe2\x87_\x01\xd22N*\x8dq\x04\xcb\x8a%f2\x96q8\xc8x\xa3eF\xbd\x0e\x17\xaf\xb099\x14R\x1e\n\xb2\xe6Y{lR\x8f\xf5\xee?X\xaf \xeb\xbf\x11\xa3\x9a\xd0\xa9\x0b]\x05\xa9\xeac(\xa8\xa5\xf6`.\x1d-e\xf0~\xc9iRx\x00\xdb03\x93\x98i\xc16\xc5l'4\xd9\xe8\xa8\x84\"D[\x1d\x95\xe4)$4B\x12J\xcad\xa6%1\xc1\xb7\xba\x1b\x0c!\xc4W\x9e5\xb8Xy\xfb\xc2g\xca\xc2\x13\xce!\xcd\x9a\x16\xfd\x9fAF\x1a\xd6\x88\xb4X#\x85\"\x84&\x8a\x90\xf3\xbe\xd3xV\xdeA*1\xf091h\xd8\x8c\xae\xd0U\xb6\x82;Q7\xdc\xb4+S-7\xc2\xbe \xf0\xad6\x9cY\x94\xcc\xb7!\xd7(\x89@\x03I\x93\xf4X2\xd5k\xf4m\x84\xaa*-\x0b\xb98F.\x02\x8a\x9eT\x10-\x801/|,i\x048W$Kz!K/'\x95\xf9\x87G\x8f\xf8\xc5\xa4DbT\xe0\xd6\xc1]+i\xe2K\xca\xab\xc1\xc5N*\xc4\xce\xeeKu=\xfed\xee\xa8.\xd2\xe9D\xb5\xff2+\x03sm\x94.\xd4\x8c\xce\x1d\x87\xc7\xbb\x94-\xa3\xfb\x97\x89~*\xb4\xb3\xbe\xa2\xb9\xe5c'O \xa6\xd1\x80\x98}\xec7\x94\xc0\x14\xa1zO[Xy\x15ia|\xdc\x9c1\xf7ui\xbc\x85\x0fy\xbd\xd4\xed\xf3ce\xe0'<\xb4C\xaa\x89\xce.?Uf851\xc3\xd4I\xa7\xfeL@\xcd<\x12{G\xd5X\x11\x15K\xb8\xc8\xd6y\xc4y\xeb\xb0\xee\xc4\xca\xd0$\xe2dZ\xb9R\xf5\x0d\x97\xa8\x90\xaar-\x82,\x9a\xfa\xd3p6\xabL+\xd5\x98\x03\xe6\xe12b\xbb\xd2\x8fR\xab\"\x9b\xb5s\xc43\x02\xb0S\xe8\x1fUOB\xa9\x97V\xcc2q3\x84\xc8\x03\x85}6GZ\x9c\xb0\x13\x08%\x8b\x85\xda\xcbR\x0e\xf2b\xe7\xe5n\x9fr\xfbR\xaadh\x1f$dA_W\xac\x15,\x96{|\x8a\xf1\x80\xde\xa64\x9c;\xf5}\xc4m4\xc7@\xca\xab\x85'~et_\xe4\xf6\xa3z\xb1Z\x07,\x0d\xe9\xd5\xac\x07x\xd9\xd6q(\xecC\x8f\x9aC\xcaX\xa3\x99\xf3h\xe1\x97i\xba\xd6\x04\n\xe7\x0fo\x12C\x0cq\xd1\xdfS\xc1\xec\xd57T\xd1\xb8\xae \xd9zC\xf3\xdb\xdb[\xf6\xf6\x17\xda\xb1+-l\x8e\xec\x0d,\xa3\xf5%\x8d\xedm\xec5Lr\xe1\x07\xa6P\xebzs\x04\xeda\":\xf9\x16\x98%\x1d\xca\x1a\x83\xc4\xd47~d\xbc\xde\x99S/\x9a\xd3O\x1f\xdf\xbe\x8aV\xeb(\xa4a\xea(Q:\xcfzh\xb2\xc0\x18+\xcd\xceM\x07\xdc\x7f\xc2_\xdc5!{NT\xaa\xf1\x05$\xed\xd1\x9e\x8c\xdcQ\xdc\x0f\xa1\xcb;R\x9d\xcd\xf95\x0dZOO\xd0#\xde\x85X(6\xd1H\xf2\xd1#\x10G\x0f\x0dkS\x8cP\xb2\xdbG\xb6\xa0\xfe\x94'\xf03\xd0\xbe\\\xf4I\xd1O\xf2\x8f\xc8\x0f\x9d\xee\xa3\xae[!o}H\xb9go 2U\xb0\x94.\x92\xd1@b\xfa\xfb\xfe\xe4\xd1\xac\xe7\xeeO\x9c\xe9\xef\x8f\xb8\x95\x04\xae\xfa?>?G(\x86V3\x01i0\x159\xe8\xb4i6\x8fb\x156\xabg\x0b \x9b\xe2\x87\xfc\xba\xd7\x89\xa7\xfe\x8c\xb1\xc9-x\xa6\xf8a\x08^\xf8FnU}\x1a\xb9o\xe4\xde\xee\xb6\xd67rk\xb8\xa9\xf1\x8d\xec\x1e\xde\xae\xa9\x97\xd2\xb9\xaag+W\xcb\x14\xdf\x97\xf2\x93$\x7f\xe2\x87-\xc8\xb8\xe1\xcaL\xdc\x94\xf5a\xdd\x87y\x1f.\xfb\xe8\xc9\xa8\x89\x01\xba2X\xe2.\x0d\xe5w\xa8\xf9-\xafSE\xb5Yl\x8a\x92?\xf4\xe9\xdd\x9ar\x9fh\xa2\xe6R\x06\x950\\\xe8\xcf\x10\xb9+\x03=\x02\xe1\xddK\x1du\x04.\x04\xec)\xec\x8bh=\x1c\x10)W\x1a\xd3\x01Y\xaf\x83;'\xeeW#>}6\x0c\xf0\xdc\xech\x8f\x16\x12\xb0\x01\xe6\xfc\xedJ\xbc\xa0Kn\xb7\xf2R\x90\xa1P\xdei\xa0\xe8\xc0Z\xb9f\xcf\x16\xad\xc6t\xa35\x97dC\xa2\xb8\xb3t\xbbj\x01\xce\xb9\x9ac\xe3\x90\xed\xe0Z\xb59\xec\x83\x08\x05\x1fe\xa9s\xd3oa\x94\"A\x91\xc2\x068\x08\x0f{\x00\x88%L a\xdc\xdaB\xbep\xed\xd6\xf3s\x00ga\xabn\xdf\x06\x88\x1cZ\x1d\xad\xe7\n2\xa0Av\x00\x13\xb8`\xaf\x8c\xf9\x9d\x8e\x8a-5 M\xdf\xe3m\xd3\x1a\xe81\x97\x01\xea\\\x0bz\xb6Bl,$^f+\x1a\xa6 \x0f\xe4\x9f^\xfaI\x1fo+\xa8Ei\xc2^V\x90\xad\x10\xbf\x9b\x97\x0f\x14t\xe5\xbd\xd4\x91\x80 $\xab\x02fkmC\x9f\x1d\xd3\xc2\xb3\xd1-]u5\xea\xcd_8\x97m\xe4\xf0\xfa\xc6BSyG\xd7\xa8\xdb\xaf\x8cT{r`\xaa\x0bF\x85\xee\xefQFrB\xae\xfbA:\xd9a\xe7-\x99\xfb\xe1\x92g\xdap\x18\x95\xec\xae\xc8\xedo\xc4O\xbb<p\x1cL s|'\x1c\x88b\xd9\x12\x1a\xe2,\xfaH@\xbbiL\xfc\x009\x08\xf6\x0eL\xb0iY\x08c\xb8s\xfbp;\xf0H\xe8\xa1Cc\xbelZ$\xe3\x93\xcf\xfd\x04\xbc\x80\x92X\xce|\xeeJ\xca\x8ft\xf0R`w\xb1\x05\xca\x10a\xbd.\x82,\xb9l\xeaT\x07\xf8 \xaca\x0c\x87N\xe4\xd4\xa23\xc0m^\xf0\xd0\x03y\xcfm8\x05\x0d\x9cd<\xc0\\\x17at\xe3<P\x90R:\xdf\xdej\xea\xddp\x06K\xfe\x8c\xbb\x7f\xe6\xc1\xf9\xe2\xbc\xfe\xc3\x86\xc48\x90=\xb7_\x8eI\xe4\x8cv\xdc\x81\xe0\xbe\x974\xfd \x19\xf0\xe3E\x9b&\x8bY\xeeUy\x18\xce\xf3ln\x8f\x94\xc9\x87\xce\xe6\xce\x9e\xebt\xcb\x1du\xfb\x8d\xeb`'9\xa2R\xe4\xc4\x1a\xe2\x9e\x7fk\x15\xf6B\x85M\xb9#i\xc4\x87`|V\x99\xec\xf99M\xdeG\xf3,(G\xb4i\xbb,{C\xdb\xb2$_\xb1,\x9b\xaa\xc1D\xec\xc4\x83\x93>ty\xbb\xb5PS\xe5~p\xa2{#\x97u\xff@ *\xdd\xeb9\xe1-]B\x0f\xab\xac\x05\x82\xe43\xa1\xaf\x0f\x9d\xd8\xa9\xc4\xcd\xccs\x08\x15\x0c\":`\x8c\xc1#\xe1\xe3\x94\xcd\x0dH\x02\xb9|\xd9\xa9\xd8O~\xd6\xef\xd0\x1a\x80\xc6\xa0]\x14\x14-\xba\xe7\xe7\xd8\xfe\xf99R\xe4\x7f|\x86I\x15LZ-\xa89\xe8\x16\x8fC\xe7l?s\x1di\x15\x85\xe2`\x9f\x81vw\xe8\x0e\x16NUp\xee\x832\x0c\\\xbc>l\xba.\xeb\x7f*\xc3\xd9u\x1c\xaa\xda\x8c\xa1\x9aM\xe78\xd5\x14y*\xd5G\xcd6\x9e\xb0*0\x8cl\x87\xa8\xebK%\\\x8aFx\xf9\x9c\xd0\x1cM\xd0@\xf6\xb8\xae\x06\xad\x9a\xc1\xfe\xe33\xbf|\x19\x8b\x83\xa6\x82z\xde%\xf5\xae\xc6\x8aEv\xebM\xab\x92\xf5\x02\xe5\x8b\x8d\xdb\x82\xe8\x1b\x8f\x1d\x0fC6\xf0:\x0f\x1b\xd9\x97\xed}\xde\xdf\x18\xc7\xff\xcc}\xe0~oV\x1a2p\xed|E[\nx\xab2\xb4\x90\xad\xf7\xb4I\x88\x9d\xad\xbd-m\xdc\xa1\xa7\xba\xb0C\xa1\xb3]\xad\xcd\x07\xfft\xbbZ=\x10\xe5\xd5\x83\xc0\x13\xbdVG\xb9\xe0\xf5w\x86\xa5\xd3\xf0\x99\xf2+\x1a\xf8![\x1a\xa7\x82U\xeb\x1a\x19Z\xf8\xe1\xfc\xf5\xf1\xfb\xa3hN\xc7Ui6\xa6\xe1\x9c\xc6c\xf0\x07\xfc[e\x92\xe1*\xca\xc24\xd7\n\x1d\xa4\xbc\x11\x7f\xa0\x7fR~\xfb\x9a\xc6\x89\x1f\x85cH\xaa\xad&x\xc3v~\xc1\xe8\x05\x9d\x7fZ\xcfIJ\x931d\x83r\x89\xe15>\xd2\x93\xec\"\x8d)}\x1b\xa6\xd1\xab(L\x89\x1f\xb2y\x14\xc2\xabB\xa1\xf5\x91\x1a\xcf\xcf?\x1e\x1e\xbc:=\x7f}\xf8\xeb\xe9\xf1\xf1\xbb\x93\xf3\x9f\xde\x1d\xffx\xf0\xee\xfc\xe7\xe3\xe3_\xce\xd1CWk9e\x7fM,\n{\xbbU\xc5\x8ar>\x87\xe7iL\xa9.i\xf8\x92\xa6\xaf\x82(\xa1I\xfaV\x10\xe47q\xb4\xe2\xab\x12\x0f\xccO5\xba\x16\x8aK\xc6*\xc8\xcaM1\xc3@\xb9b\x18\x88e\xa0\xf3|\xcc\xfc\x02\x921\xfb<a\x1f\xc5,7\x9a~\xb8\x04W\n\xe0 ?\xd6\x10\x84\xef\x19\xca\x8d\xab\xc9\x8e>R/\n=?`\xcb_\\h|\xaepH\xeboAL\xf6\xf6\xaa\xd1\xca$5\xa9\xeewNM\xf6\x9e\xea4u\xac\xbc\x1a\xdd,\x13\xe5U\xaa$\x88\xe1\xd3j\xbf\x81(\xaf\xf6\xcb\xe9\xc9\xde3==\xa9\x11\xc35'3\xa3*Y\x9a\xf3\xf2\xcd\xea\xe1w)\xcaG\x95\xf2kQ^\x9d\xeeJ\x94W\xc9\xe4R\x94W\xc1p'\xca\xab`\xb8\xe0\xe5[\xd5\xf6\xcfEy\xb5\xfd\x1bQ^\x9d\xef!*\x18\xdb\xf0n|{6\xc4\xce>D>\xeeP\xb8p/\x07\x87\xd74L\x0fW~\x9a\xd2Xl\xf0\x8f\x94x)\x96\xbf\xf3\x93\x94\x864vVn^\xf7C\x90-\xfd\xf0\xe7\xecB\xd4V\n\x8f\xe39\x8d\x1dR\xad\xfb)\xf5\x83D\xd4.Q\x0bga\xab\xcaj\x9c\xc6\x84\x91d\x12\xa0\x80\xde<\x82\xe4\xc7\xbb#\xb2\xa2\x9a\xfbC\xf69\xf1W\xeb\x80*\xd5\xc7pS\xa72\xecs\x18\xa64~G\xc9u\xb9v\xa6\xaf\xfd\xea\x92\x84\xcbrMCv\xb3\x13\x1a\x94\x07<\x86s}\xcd\x1f\xe9\"\x8a\xe9\xdbp\x9d\x95\xab\xd7]\xb4>#d~\x8e\x92\x02\xb8\x020?\xb1\xb5\xf3\xbd\xbc\xf8U@\x92\xc4\xf1\x8c\xf5O\xe9mZ\xa9|\x89\x95_\x1f\xbf\x97\xd7T\xa2\xaaR\xf2*\n\x17\xfe\x1235\xb4\xab\x99\xb4\xaey\xc1\x17}\xb5f%\xe5\xb1\x96\x0b\xdf\x10/\x8d\xe2\xbb\x16\xb1>\xa5\xc2\x81\xde\xc0\xba\x1a\x98\xb2\x80\xa68\xcd\xf3\x0d!\xc8\xf5iL\xc2\x84\xf0\x1e\xee4\x15\x7fd\xbc\x80\x1f.O\xd2\x98\xa4ty\xe7\\c\xa5\xda\xd8\xc3k?\x8e\xc2\x15\x0dS'0K\xf3\xf8\xed\x8b\xc8\xbf\x99F\x08\x00\xfb\x8cw\xa9\x03\xa8Kb\x9flxY\x1c\xd30\xed\x8eu\xf7 \xbc\xca\x9c\xa6\xc4\x0f\x12k\x15?a\xac\xcf\xdcV\xe7\xd2\x9f\xcfih\xab!\xfc\x02mU\xae\xe8]r\x19\xc5\xa9\x97\xa5\xd6\x01\x05\xe4\x82\x06\xb6\nq\x14\xd09M\xbc\xd8_#\x07e\xa9J\xb24\xf2\"FMRj\xab\x87\x92\x97\x1d\x06\xf4vM\xc2y\x03\x9cH\xb2\x8e\xd6\xd9\xda:=zm\x9f\xde*\x9a\x13{\x05\x19\xb5\xbc\xb1R\x82d\x8c-\xaf\xadj\x14\xfb4LI\x13,\xf1\xce\xfa2\n\xe64\xb6V\x8bi\x92\xd8\xc1\x14S2\x8f\xc2\xe0\xce^\xe7o\x99\x1f\xdb\xdb\xe1\xd3k\xa8\x13\xc5\xd6\x1drM\x82\x8c\xae\xc8ms\x1d\xdf\n\x1d\xac\x13F7\x8duRzk\x1d\x10I\xa3\x95\xef\xd9j\\d\x89\x15t\x81\x7fm]\xef\x98\x06\xf4\x9a4\x10\x0eF\x7f\x16\x0b&\x9f[j-crqa\x87?\xa3\xc2\xd7\xb8]i8o\xe8\xd4\x8b\x02\x8f\xf1\xe1\x0du\xd0P\xae\xa1N\xb2&\xd6\xe5\xf2\xa20\x8d\xa3\x06\xca\x884\xe6\x82\xce/\xac\xe0F\xcf\xe8\x15M\x12\xb2\xb4\x82}\x11D7id]8F\xf9\x82\xa6\xfe\xa2\x9b\xd0:\xecu\x94\xf8aB\xadP\x8c\xa3\x9bFH\xc7\xd1M#\xa4\xe3\xe8\xa6 \xd2 M\x13\xff\xef\x08\x99R\x8d\x8a\x00\xf6\xfa\xf8\xfdA\x9a\xc6\xfeE\x96R\xc6\x1a\xb2s\xaf^E\xf2\x1dy\x8d\xbc\xc2W\x9c\xc2\x8aFgX\x95V\xc4\xd5\x81^\xa3\xb3\xb7W\xad.e\xb0\xaap#e\xb0\xaap\x83q\x08\x9f\xf5a\xb4\xd5\x87\xcd\xbd>lmV,[\x990\xb6\xb9\xa9 \x14\x1d\x0d<\x12~J\xe8\xeb\xe3\xf7\xa8O@\xde%\xf1\xd9\xcc\x91\x0fE\xbd/O\x11Q~\x19\xc5\xb5R\xda\xfcjS\xf3\xc8\xc3+\xda\xf7\xd1\x9cb3\xb2\x00\xa4\xc3\xa0,\x18\xa8U\xab\xca\"~\xd3Zm\x9c\xf1\xae\xd5\x01\xb2\x07\x1d\xee\xb2\xe7\xd4\x0dk1\xf5\xbbHv\xc1V\x9f\xb8F\x05\xcaz \x14C\xac\x06\x9a\x07\xbd\x0dS'/u\xdc>\x8c\x86.\x8f\xe7\xa7\x11?+cu:\x1e\xc8HT\x0b\xc0\xec\xbe\xec\x0b\x86\xe4\xabL\xf6Z\x13\xa6{\x95G-\xc5t\xbc\xaf\x84W\x03\xe35K\xf5\x96\xdax\xd2\x17\x85\\\xa1\xe3\x00\xd9g}I\x12:\xffH\x97~\xc2\xf8X?\n\xe5\xb6\xd0Vg\x9f\x8b\xec\x82\xf1zc\xe8F\xa1\"\xb9X\xbc\x10<\xb2N\xb3\xb8\xfe\xca+^^\xb7\xe5\x87\xfa\xde\x96\x9f9]\xd3pNC\x0f\xd9\xdai7\x8d\xd6*\xda\x86\xf3n\x1fX\xe1/\xf4\xee\x03\xe3\"\xc4O\x862b\x98\xf8\xfb\x03IR\xda\xd5$\xe5\xab\xf7\xea\x95\x9a\xffN\x80\xac\xce\xa1\x1d,\xcbo}#p\xfe\x18d\xb1\x80\x92 \xb2\xaf\xa3\x9bP\x0f\xe7_\xe8\xdd\xa7\xb5\xf8\xfe>\xca\x12\x8aU\x1f\n\xe7\x93\x94\xc4\xdf\x0be_U\xba\xf9\x02X\xe3{\xdf\x15\xdabd\xff,xs\xc9\xf6\xfb\x03\x9c\xf7\xf3\x05\x10\xe7/~W\x90\xcb\xb1}C\x98\x97J*\xe3\xbb\x13\xaa\xbe\xbc07\x9b\xba\xd0^\xa5I{r\xad\xb2\x83[C\xe7C\xb3ZD\xd7r\xf7\xa2G\xc5\xab\xf2\xe1\xabk\x18gim:o {\xd0D\xd3S\x9b\xe3\x105\x19\xa8\x97@k\xa9\x84ki\xb7\x00\xd7\xc4\xac\xb3F0j\xb2\x1c\xd7ymhL \xafe\xde\xb7\x01W\xa0\x94G!:1\x05A\xe9\xceIJ\x90\xbbIa\x02\xe9\x80\xfd\xac\xdeI\x14#b]\xdd\xe4,Y}t\x87\x92\x8f5\x84\xa6\xcd\xfa\xba\xd8\x0e\x1e\x86l\xb3\x99FC\x13^\x82\xbaT5\xf2\xd6\x18\xf3k9\xa8\x9e z\xe39]\x17\xec\xbczX\x07\x87\xe1\xbc}\xf3\x82Z<\xac\x07\xfeR\x13\x9d\xe0\xd7O7\xdc\x96\x10\x85\x8fG\"J|u\xb8h=\xd7df\"1M\xd9\xc4\"\x92\xd3\xa3G\xca\x8e-\x07\xba\x16\x031\xf7\x8e\xab\xe1\xf6AI\x18^\x16\x08\x00\xf9a\xf6.\xc6q\x17\xe1{kMp\x1c\xab>:\x0c\xd1j\x8f\xe7\xa9c\xf2\xcd\xcd`I\xd3\xd7$%\x8e\xcb\x81\xb3\x0f>\xdawEQ@\xe7NTu\x05`X\xbd\xc0,\xc4E\xa5\xac\xd8\x03udO\\X\xf0]V\x8bsbp\x05\x95\x97\xd9\xe7Z\x7f\xfb\xdc\x92GDH\x91m\xb7qn\x8c\x07\xc4\xf3\xb2U\x16\x90\x94\x9e\xdeD\x1f\xd8\xf1\xfb\xdaO\xd6x\xf9\x9c\xe0E\xca\xc2J\x8dn\x1b\xf6;\xa9\xcf\xbf\x83\xd1\xa2\xe6U\x13\x9fo\xb6\xe3[m\xc7s\xa7\x1a\xb0F~\xda\x1c\x1c\xf2\x93\x1fF7\x97\xbew\x89\x8bp\x0d\x13\xbe\"cp\xee\xc4u\xd8\xaa\xa9\xabBd0\xf7\x95\x1bv\xe3\xfa\xea\x1b\x04\xe5&\x02Q\x1dc_\xdf\x15C\n\xf5\xef5\x86\xd9S\xf6]3M\xc1\xad\xdc\x82\\0d\xb81\xad,:5\xd4\x17\xb6\x88\x0c\xd7\xf1\xd8\xdc\x04\x07cj\x05\x14\xc0)\x1b\xbb\x11z\xfe \xa6\x01% un\xdc~~\xe0\xf5\x0d\x01,\xf5\xae\xce\xeda\x06\x0fBu.O\xb6Z\xabo\x8e\xe1\x8f\x1eA\xa7\x85iD\xe5m\x87\x0e\xbc4\x0e~\xa1w<b\x0c \xd2\xfc\xfb\x8a\xa6\xe4\x17z\xe7ruJQ\x11\x03\xca\xf0\x8a\x96 ^<*\xa5Nm!F,\xcd+\xda\x1f\xb7\xad\xc8\xc7e\xb1\xa5l\xfb\xf1\xdb\xef+\xd7r\x06^\xe7\x11\xbd\x8a\x93h9P43\xa6SI\xb4\x98\xc8\x93\x83\xf4\x9b\x0e\x86\xc4\xedC\xf2\xa7\xfaH\xd9\x10Nj\n\"zMC\x1e\xf2o\x0c\x95\xe02\xf46\x8d\xa5Y@2\xaeiC\x0dv\x9fb\xc0\xd3C\xb5^_=\x8cb\xd7\x14l\xdd`\xafz\x82\xa5_\xab\x90\xadZ_p}l\xcd\xe8YX\xd8\xedl\xb9:\x1e\x9a\x18R:\x9d\xc7Q\xc4\xd3;\x8b\xdf ck\xd8\xd9!3\xce,)\xfetd\x06\x9es\x99\x1eHT20\xf5\xb1CT3\xd8r\xd7s\xca\x93\x9dFq\x83 Hi\x8cJ^\x9b\xd20\xd5r\xdb\xe0\xa0.\xc6\x8a\xc9\xb5L\xe2\x8e\x97W\\\xac)\xc65Q~\x0c\xb0\x06\xdb\xc0y\xd1\xd4w\xaahS\x1b\x02;@\x1a\x86\x80\xae\xdc\xb5\x19\xe6\x1b\xb7\xfe\xa8N<\xd0s\xa9/\xfd@+`\xd4k\x1f\x10\x03e\xc8km\x8d\xa8\x8e&\xdaz\xbe\x1a\xe5\xa0V\x03\x9dT)\x0flL\xe1\x05\x8f\xc7\x12N\xe9\x8c\x07\xce\x99\xd2\xd9s\xa0\xbd\x9e\xe6\x8cE~\x10C\xa3n\xe8\xfc\xac\xb1a\x86\x08\xa3\xe7<\xfa1\xe1-\xb3\xea\xa9l\x1d\x93\xa3\xcd\x9eCj\xec!C\xe7\xb7\x970\x82 \x8cX\xed\xdc|\xb9^\xdf\xb8\"\x08\x01\x1e9\x95\x8a\x08\xe1\xb5:&\xfa\xe2\xf6!\x1a\x90\xf9\x9cQ`?\\\x9eFh\xba\xa4\xd2\x1a\xf2-h\xcd\xf6S-\xf1\x88,\x0cya#M\x82\xc0\xe1\xbelJm\x1de\x18\x90l\xb9\xca\xcdv\xa2\x1aq\xc0\xddP&+\x95\xc9F\xff\xdfd\x1f8\xd9\xd1\xa8z\x1f\x17\x19\xae\xfb|\xfdu\x1f\xd1\x9b8Z\x0d\xb5\x0dv\xda[;\xd5\xc6\xb9]\xe5f\xed\xa8[\x88r\xbda\xe5\xd6N\xd5ns\xae\xbdG\xf2.yrk=_\xf9\xb5\xeaal\xbc\xb5N\x18k\x7f\x07E\xb0\x18\x05\xff\x11\xf8\xde\x95\xf8\xfe&\xf22\xa9\xf8U/\x90j\x1a\xe2\\%\xcc\xed\xfe\xfc|f\x8d\x8aa\xdd&\xba\xd4\xe1((\x18\x99(\xfc\xe4|\xc0W(\xdfKzV2\xe6Y\xa8\xf7\xa1\xeb\xc9\xd9Fv\x8e\x92\xf1o\xd5\xb0\x01\xa0\\W\"\xe3P\xeajU\xbb\x19fu\x97Fe\xf7\x9dYqz\xe9\xacpBh\xae]\x9eP\xd5\x12\xdf\xb9\xe87\xe5{\xbb\xd0\x84\xd7\x18\xd0\xf0o\x19\xcd\xb85g\x82\xaeX1\xe3\xb9<\x9a$X\xf6_\xec\xa9\xd3i\x88\xd3}^c80!\x95s\x8d\x9a_\xef\x12\x9br\xbaQ\x98\x83\xfdNx\xa0r\xc6K\xc2\xcc\xde\xcb\x8dVd\x97rt0\xc8\x10\x14\xbf2\xfe\xe9\xed\x82\xa3\xde\x9cM\xa9\x86}1*@\xf0\xe8N\x07\x89\xcf\x17\x1f\xf5m\xef\x07\xe7$\x08\xa2\x9b\x13Y\xf8\x81$\xc9\xe9e\x1ce\xcb\xcb\xba\xca\x083L\xc4E\xfcw\xeb\xe8\x0f\xb5\xa3\xcf\xf5 \x1c02D\xbe\xe4\x00\xac-\xde\x9avH\xb1k\x85^b\x02\xce9\xe3\xbe\x1bu\x1f+\x1e\x05\xc1A'ow@R\xd3\xea\x95\xf7/\x86\x04C\xbddNT\n\x0d\xeby\xcd\xd3\x96}\xfc\x8a\x95\x00\xdb \x0bG\xeeK\x11\xe9\\k!\xc1\x80\xae\x7f\xf0\x12\x9e\xba\x15\x93\x82\x13\xe3\xbe{\xd5\x16g\xd7\xc2Z&\x9f\xfd\xd5\x17\xe0\xeeU}\xf3IY\x80\xc7l\\+69\xa8\xf9\xc5\xbd\x8fp\xb8+\xa7\xf6\xab7~\xf0\x10Dx\xf5\x0d\x10A\x03\x92\x07 \xc4\xab\x86D\x16\xc7\xa6\xe9\xc8\xcdR=_\x94\xbc\x0c\xf9IT+S\xf4\xfe\xf9\xfeB \x87\xf6\xd1|h\x1a\x0d?+k-\xa7\x8d-\x9f6\xb5\xccO\xdb\xf2L\xf4\x84\xa2\xde]\xdeVe\x9f\x9d\xf0}\xe6c\xd3_\xba\xcd\x9eU\xb7Y=\x9b\xbb\xaa\\\x99\x97I\xb0\x99\xc4\x8e\xa1S\xb1\x80;\xf7\x93\xc2+\xe0$[3\x8e\x961B'\xdfB_s\x9dG+\x14q\xc3QF\x9b\xf0;\x93\x9aO\x14\x86j\xe0\x16Tu\x91\x0d\x97\x8c[\xd2\xf2\xb5\xc1K\x1b\x9e\xd9\xd8\x1d\x84\xd1\x9c\xca\x8d\x9d\xe5\xbf\x06i\xf4.\xba\x91\xe9\xc81\"\x84X\x17\x1e\xd3\x96\x1bh\xf9\x01\x95y\x13\x90y\x99`l\x14\xc6z\x1f\xc2\x18Y\xed[\x18\xc3\xda\xc1D\xd6'\xe2\xd1)\x8cE\xc4@\x1e$\xf0\xa0\xac\xf96)H\x8b\x1b[9F\xbd\x02Q\x1eO8Be\xc8iyJ\x88]]\xb4\n\xbf\x88n%\xa5\xc3Y\xb0\xb9\xc6d\xeeGj\xa9\xc6?\xc1\x11\x11\xb3\xd9\\>\xb8\x1ayJ~\xd8\xd0\xd1\xa2\xcf\xd1s\x80\xf2\x83\xf7\xba\xf9\xbe\xb9t<]XD\xa8\xb1\xa8\xf8*\x1b \xba1\x8b\xdcQ\x1a\xda\xd6HX\x01J\x810\xc1\xaa\xac\x96\xbc\x0d\x1d\x9c\xdf\xc4d\xbd\xa6\xf1I*\xb2~\xa4\xe5\"\xf3\xd5\x01gT0\xd0\x980\xd7\x0d8\xaf\xd3\x0d\xb3\xd5\x05\x8d\xf3\x95c\x0b`\x19\x0b(\xacw\x97\xe7\x8c\xc3\x03\xcc\xdc3`\xf4\xb5%Ms\x93TG\x9cyn\x112\x17\x1d\xefk\x15\xb4+\"?\xfa{\x8dz)\x9eB\x81\xd1\xe1D\xafp}\x8f\xa5_)*\xef=\xd595\xab)\xde#q\xa4\x8a$\xe2V\xb4i\x197\xd5@\xe0\xf8\xe5\\L\x17\xf5\x85\x928\x18\xd60\xd7\xe2\xce\xaf\xcfV\x00\x13\xa0\x0e\x0f8\x92]\x04\xbe\x97SMd\x02\xe2\x01\x99\x17n\xa8\x07\xc9G\xba8\x8d0m_\xbf\x1ab\x0bp\xe1B.\xc8\x0d\xce\xa3\x9b\x90Vc\x96\x16K\xc8\xc4\xb7\xe42\xca\x02!\x06\xb5\x81\xa6\x84I]r\x03\xa9\xae\xac]a\xe4\xd0\xa7\x06\xe8c\xb9\xc8\x86\x16\xd3\x85LL)\x86_\xbf\x0f\x89\x8c\x03\xf0\xb5\x03P.W\xecX\x90\x13\xcb\x94\x8f\xc3\xc7\xafb\x1c}\x08\xf1m\x0c#\x9eG+,\xde\x8e\x90\xc0\xf1\xbdY\x062g\x89\xdb\x80\xf7\xff5\xc8\x8a<;\xe2fLW\xd15-\xa3';\xf9\xbf \x82~\x075\\)\xe2\x80Q\x03iP<v\x9c\x0e?}\x0b\xc8(\x91\xf9\n\xaad\xa9\x93#\x83\x8e\xdf\xbc\x16\xb1\x1d\xcb\x9dk\xb6\x7f\x9dK\xd3-b\xe4\x84\xc8\x18\xc5Nw4z\xd6\xc5|\xfb\xf9\x18q\x81*\xb0\xefW&\xad_\xda\x87w\xbe9\xd4\xe5D\x91\xb3\x0du\x94O\xc3%\xe2\x06c\xf8\x9dL\xc5\xdd\x01\xd5\xbd\xc9\x8f\xeb\x1c\xce\xd5\x9c\xdc\x8d\x87\x98\xff\xe5\x88\xa663\xed~\xa4\xc9:\n\xe74V\xbcr\xbb}\xe8\xd6|\x8bY\xe1)YWJ\xb4\x8e\xc5\xecA\xcd\x87\x18\x1b\xad\xba\x0b\xb3B\xbdg\xb0P)~\xd1\x0c\xaf\x1b\x1dUj\xcab_\x14W\x95\xd1D\xab,^EYBq\xea&\x0dp\\Q\x15\xa3b\xf7}\xfe\x9aA\x15\xac\xd1\xdf\xe2;\xc7\xb9J\x96\xff\xbc\xa6q;\xfbg\x1c(.\xcf\xc3\x07\x8a\xaf}\x9f\x81\xda6t\xa6\x85\xb8*l\x92\xfa\x98\x1a\xa5\xc3\xcc\xc6\xa9\x97\xc7[\xb0\xfaN8\x88)J\xb0\xa7$^R\x1e\xb1\x13\xad=\x0e\x03\xba\x12i\xed\x9a\x8c^\xca\x1d09\xaa`3\xca\xfdvJ\x02\xbf\xb9E4\xb7\xe0I\x11\xcd]f\x03\xe13\x84\x82%OroH\x02\xdc\x90j\xefZ\xd8\x19f\x03< _\x0bE\x81Y*@\x0e\x02&\xb0\x90\xe9\x02\x7f\xf5)\x1aH.\x06k\x12\xd30\xfd\x8d\x8fL\xca\xda\xda\x86\xf4\"@\x1d\x98BKb\x1e>\x8a\xfc\xe6\xc1^\x0b\x13G\xedR\xa7\x91Xh\xf3\xfb\x1e\xe6\\\x9a@d\x89\xfc\xe2\xac\x8d\xc1V\xd8\xe73_\x81 W8z\xe6!\x8b\xf0\xa0\xfb\xfb\xe0\xb5\xc4\x94\xb9h\x16D\x92\xe4\x04\xc6|\xb05\xf5G`\xb8\x96\x07\x19uD\xb4\xe2Y[\xf1,\xad\\WlZ\xc9\xa0 P\x88\xd0\xb8S\x0ds\xc9ov\xf0\x9d\x80S'V\xcc\x17\x0c\xd3`]WVq_\x17\x95\x17\x04dV\xfa\xd1 \x81\xc60\xca\x96\xd1\x08\xd0\xaf\xca\x83\xa2\x9c\xb6\xb3\xe2\xbc\x7f\xf6\xab:\xa8y\xd9\xce\xa98D\x95{\xa9\xeb>\xac\xf8&w\xfb0e\xbf\x1a \xa9\xfe\x8c\xcf\xb0\xf4+\x0f\xd2Z\xf4\x1bv\x8e\xca\x00+~\x14\x0e\xde\x7f:9=\xfftrx\xfe\xe1\xe3\xf1\x87\xc3\x8f\xa7\x7f\xad\x9f\xafj\xf5\x9f\x0fN\xce\x7f<>~wxpt\xfe\xeb\xc1\xbbO\x87\xf5c\xb7Z\xfd\xe8\xd3\xfb\xc3\x8fo_\xe9\xaag\x9a\xea\x1f\x8eO\xde\x9e\xbe\xfd\xf5\xd0\xf6^\xa2y\xef\xf8\xd7\xc3\x8f\xef\x8e\x0f^\x1f\xbe\xb6\x0d0\xd0\x9eR~\xf2*K\xd2h\x95k;\xc6\xf0\x91.\x0fo\xd7J\x94\xfc\x94&\xe9\xe0\xc2\x0f\xe7NHo\xc4c\xa7\xfb\xbb3')\xb9'\xb1O\xdc\x0d\xcc\x01\x14\x0f\x0eNO?\xbe\xfd\xf1\xd3\xe9\xe1\xf9\xd1\xc1\xfb\xc3\xf3W?\x1f|\xc4\xbc@?\xfc\xb9\xab\xcb\x1ao\x0f\x85\xc1><\xb3\x8e\xd6\x07\xb9x\xfc\xea\x92\xc4\x185\xd1R+I~\xa1w\x96\x1a)\xc6\x1c3=\x0e\x82\xe8\xe6M\x16\x04'^L\xa99\xb6\x0c\xd6\xc3\x08%xjx\x96\x0e\x03\xcbp\x13\xcb\xa3\xbb\xd03w\x9f\xa5\xd1+\x11\x12\xc3\xdcD\x96F\x1f\x02rglE\\\xec\x9b\x9f\xd3 \xf8@\xe6s?\\\x1a;auN\xd6\xc4\xb3\xd6\xb9$\xf1\x89e\xd5\xbcK\x12\x04\x14-\x1c\x8c50\xb4\xc7\x18\"\xb87\x8e\xd6\xb7\xc0\xc2\x0bH\x92\xbc}m\x7f\xceYLS\x8d(H\x8cA\x89\xbc\x88\x01\xc1\x8cV^\x14\xa64\xb4@\x80??\x9c\xfb\x18\xe8\xc3^\xef6}O\xc3\xccZ'\xc6\xc1\x9a\x00%*\xbc\xf3\x13\xdb\x88\xa2xnFO/\x8e\x92\xe48\xf61L\x92\xa1\x0e\xb7\x0c2?\xa4\xa7\xbe\x05\xdey|\\\xc3,\xe6t\x81\x81 \x0dO\xfd\xd8\xdc\xb2\x08\x96c~9\xba \x83\x88\xcck\x91 \xf3\n1Y.\xad\x0bEC\x8f \x04\xc6\xe7\x8b(^Y\x1f\x1e\xd8\xe9\x14\xabr\xd8\xa2\x8f\xf74\xbd\x8c\xe6\xd6*G\xd1\xaf$\xf0\xb9\xff\xa9\x01 \xac\x1a\xe7\x0f\xcc-\xc5dE\x7f\x8cb\x8c\x16i\xa8sI\xc9\x9c\xc6f\xa4\xba\xa4\xfe\xf2\xd2\xdc\x05\x0f`d\x1c\xe4\xa5\xbf\xbc4\xbf\x1b\xd3\x85\xf5\xe1;b!`\x97\xe9*x\x13Y&\x96\xa6\xeb\xc3\xbfe\xfe\xb5\xb1\x86\xefY\x16\xd37/\x10\xden\xbd\xc7\xf0\x8d\xc6\x1a)]\xc6~j>\x81|3\xc4\xaf\xe8\xdd\x07\x12\x93\x95\xb5\x86\x15\xc9\xae\xfc\xd0<z\x8c\x85byj\x01y`#NA\x14\xad\x8dx\x10D7\xc6\x17W$\xf4\x17\xd4\xd2\xf2\x8a\xc4K?\xfc\xd9\x8e\x88\xbc\xd2o\xfe<5#\xdc\x8a\xdc\xda\x9e\xbdC;bs\x0d:\xf7\xcd\xb4\x13\x9f\xfe\x14G\xd9\xdaR\xc5\xba\xefW\x16\xb2\xbd\xf2\xc3\xa6\xd1eA\xea\xaf\x19\xf5\xb3\x1c\xc7\xab,m8\xb0C\xdbq\x1bF\x18p\xd4\xf8\xb4\x91fEk\x0b\xad\x88\xd6\xa9\xbf\xca\xcc\x14xM\xd2\x94\xc6f\x18)a\xb4lu\xee\x92\xb7a\xe0\x87\xe6A\xae\xa3$\xb55\x11S~\x0e\x19\x9fG\x0b\xdfr\n\xe1\x15\xb7\x1dQbJ\xe6\xc7a`f\x12cv\xce\xc64\xfe\x10\x05\xbe\x85\xcd\x8d-\x1b]\x86\x01\xb3\xf4qM\xe3\xc4V!\xb2\xcd2\xba1sfqt\xc393\x8db\x8e}\x12\x12\xce/\"\xf3^M\xbc\xc8B\xfd\xf0\xa9y\xd8\x89\x17GA`c\x8d\x13JV\x01M\xcc\xcc\x9a\x0c\x8ff\xddI\xc9%\xb1\x0d\xd2\xff;5\xc2\x87=4S\xff\x04AgzuM\x83\xe0\x15\x0fwnz?\xf6l\xcf^G\xd6\xc7\xd639\x89=\x9bL\x91\xf0\x08&\xa6UO\xa9yK$\xe9\x9d\x05\xdb\x92l\xb5\"\xb1y#\xa4\xe4\xe2m8\xa7f\x8cJ\xed\x8cT\xea\xa7\x96\xdeS\xdbY\x9c%\xf4=1\xcf\x0bm\x1b\x8cOo\xac\xc7\xd9\xcd\xca\xc6\x83\xdc\xc4\x96n\xc9E\x94\x99\xa7\xcb\x84\x04\xeb\xa4\xfc\xd0\xca\n\xacc\xba\xf0\xcd\xc0\x96\xa6\x82\x16\xda\x94DYl9j\xf8\xbd\xa3\x19\xa8\x91G.\xccsgr:Y\xfb) p\x13\xda\xaaEq\x8c\x11\x85-uN\xf0\xae\xc4P\xc1\x8b\x02\x0b\x8b\xea\xa7t\xf5!\x8e\xcc\xcb\xc4*\x9cpbg\xa02\xac\x86\x95\x17d\x15,26{\xfc\xd1\xc2\x86\xc74\xc9\x82\xd4B\x8c\xa8\x97Y\x19\xdd,,beV#\xd5\x81\xfe\x0eJ\x17\xb1N\x0f\xfe\xb2\xfe\xa9\xcb\x7fox\xbc\xc0p\x13\xa5h\x15\xba\xf8\xddP/\x97/\xba\x8b\xc8t\xfd\xa6\xc8\x18\x98[t\x83\x1d\xaa\xd7\x9a4\xdc\xdaI\xd6b\xeeik\xbd\xcfx\x04Q.5\x1aa!\x08I+c3P\x8d2xb\x15i\xaf.,\x1f\xea\xe6Y\xe6\x0b\x8d\xdch\xacS\xb2\xe5\xeb\x8c\xc4e\xf6%I4\xd6^\x13\xa0\x063/nI\xe6\xc2\x18\xe8\x00c\xdf\xfa):Yw\x8a\x9f\x83\x0b2\xc7\xfb_@\xe7\xeb\xd25\xd3\x80\x07\xc6\x14\xf70\xc5\xddYCw\xda\xe9i\x0c\xc8J%\x06\x05:\xbf\xb5\xf9J\x05\xfa\xe6\xa8\xea\xcf\x14iU\xc8\xc25\xe3\xd5\xa5\x1f\xccc\x1a\xe6\x89\x19Bg\xef\xd9\x96;\x98\x93pI\xe3(K\x82\xbb\x0f\xda\x9au\xa4\x13YT\x8f\xa29\xfd\xcdO/\xdf\x93\xf8\x8a1\xab\xb1\xda\xd6G]\x9d6\xb0\xf9V\x06/u\xd0\x84\xce\xd3\x07y\x9d\xed=\xd3\x07\x93\xac\x05\xa0G\xb3\xdd\xd0y\xeaV\xdd\xec\x00\xcfJ;LZnI\xb6\x1dU\xbblnb\xb2\xb3\xdb\xc5\xec8\xe2\xd7\x1e\xfb\xd5\xfd\xf9\xf4\xfd;i\"\xabZ\x11\xb3\x1aO\xb1F\xdd\x8c\xcbJ\n\xa4\x95\x15q\xd2>d\xeet83ov*nd\xd9$e\xba]D(4\x7f2\xec\"~]\x19\x95\xea3\x08a\x08|\xda\xd7\xed\xbe\xca>3$WK\xbe\x052\xd5\xd0C\xe4\x87xVE2\x11\x9b\xf4\x99>?\x84.\xd9L\xac\xac\xe8\xa40\x9d\xe7\x89x\x04\x85r\xbas\xff\xfa\xffa\xefM\xdb\xdb\xc6\x91E\xe1\xef\xf3+`\xde9ij,)\x96\x9d\xc5Q\xe2\xf6u;\xce\xe9\xdc\xc9\xf6\xc6N/\xa3\xf6\xf8\xc0$$\xf1\x84\"8\\d\xbb;\xf9\xef\xef\x83\x02@\x82d\x81\xa4lgf\xeey.?\xd8\"P\x00\xb1\x16\xaa\n\xb58\xfa\xbe\xb7\xb9\xf2\x1e\xfe\xfd\xb7\xf4//\xdc\xdf\xae\xb6\x07\x0f\xf1Q\xe8\xa5\xdbX\xbb\xca\xcf\xc5\x9a\xa2\xee\xd6\x04\xd1DL:\xfd[\x91\x8ab\xf8\x8af\xde\xd2M\xdb/>\x01Ug\xb3\xc9yU\x1f\xbc9\xf1\xa8yVH\x94np\xe0\xd6u'\xe1\x82\x1bkd4\x0e\xa2\x88%b\xbb\x08\x9c<\x9b\x9c\x93m\xc2\xc86 g\xbb\xc8\n/B\x1a{\x00\xbds\xfe\x9cx\xa3\xd1\xf3\x81\xd4\x0c\x1d\x874\xcd`\xe1V\x17\xa6\\\xda\xd5O\xb1\xe6\x90\xce\xb5B\x98\x9a\xf4\xf4\x87\x9b3\xba\x80H\x0d\x8e\xf4\xb7^?a\xe7:`\xb3\x8c\x16\xadgkH\xb8;\x1f\x8c\xe7<9\xa1\xde\xd2\xcd\xeaF\x80E/br \x83~\x81\xfa\x89\x1b\x8d=\xd1x\xb1m\xd3\xc1s\xb3?\xa2\x87Z\xdfQn\xe42\x0f7\x99,\xf1\xfc\xd7\xfb\xd8\x7f\xfb\x96\xcdm_\x82\xaa\x1d\xedkT+7nI\xcd\x1cTC\xb7\xaa\xd0x`\x86#~\xf0\x808r\x06\xc05\x03T\xb2\xe5:)\xcb^G\x19K\xd64\x94\xe9\x83\x8a\xde\xbc\xa9\x13)p\xb3 \xcd\xe1\xf3r*\x82\x14\xfe\x8b\x06\x8bO{4\x0c\x19S\xf5\x83\xa9G\xc6V\xaa\xda\xea2\x13%\x0eI\xa3\x12 \xa2\xc0\xf6\xbf\xdb\x98\xa3\xdc\xaf6\x7f b'\xe1\x0d\xd5c\xb7U\xd5n\xb6\x85r\x86\xc3\x08\x16+20\x99\x91\xad\x0c.\xc1x\x81\x8c\xc8\xa4\x18 ]\x1c\x9d\x9c\xb1\x1c7\xa3\x9ez(\xf9AK\xbc=\xb5.d?\xcb[v\x18F\x15\x87\x1d\xc1Jf\x9c\xbc&UX\xec\xbaH\xef:7\x13[U\xfa\x9e\xe0\xe4\x05\xc9\x9e\x13\xbe\xbd= \xd1\x8c\x9f\x8bI\x98q\x04\x05i\xf5\x9c\xe6\xdcO\xc9\x8c\x9d\xdf\xef\xb6\xb3\x1c{XP\xa4\xbb\x1ec\xa0\x13\x89h\xed\xcd&C\xf2\xdd\x0b\xc9\x1f\x16\x02\xec\x03'Kr\xe6|\xff\xdd\x908/\x1e\xca\xcc\xef\x9d\xf3\xe6\xc1(J;/\x80\xb1\xfc\xde\x01`\xf5\x1b\xf1\xf4=\xdb+a_d\x97\xdc\xbf\xf9\xfeE\x96\xe8b\xc9\xf7/\x1e\xaaDK\x1d^\xd9\xda\xf5\x82\\\xaf\xc2(=\x00\x8eo\xfa\xf0\xe1\xd5\xd5\xd5\xf8jo\xcc\x93\xc5\xc3\xdd\x9d\x9d\x9d\x87\xe9zQ\xb4~\xbdhT5G\xa9x\xe7/\xceT\xf6\xe8\xf0\x85\x1f\xacU\xcb\xe0\xd7y\xf38\xa4 \xa3\n\xfc\xc5\x8a\xc6\n\x1a~!\xd0\x1e\x0f\xa7d\xb6\xdb\x1c\x01\xddi\x8f\x87\x8b\x84\xe7\xba\x9e\xe2\xd56\x1a\xe2 \xd9\x82E\xben\xc4<`\xa1\x9f\xb2L\xd5P\xbe\"%c\x9a\xd0\x95.(1\x8b*\xa6_\x90BY\x82vAM`\xeb\xdc\x11y\xb7\xb0\x90\"wDn\xcacy\xad\x8bdyT\xe5!l\x92\x1e&4\x13\x9a\x84\xe7\xcc9\xcf\xf0\x9c%\xb3\xdcog~#\x08\xa0,0\xad\xbb\xa7,w\xfa\xcc\xf1\x82\xc4\x0b\x81\xc5\xf5\xc2 \xfe@\xb3\xa5\xf8\xed\xb39\xb8n`a\x18\xc4)d/\xc4\x9f`E\xa5\xaf\x07\x08\x80\xa2\xfe\xd3\xe4?\x13\xea\x07,\x02-\xdd\x15M\xc1\x03D\xac\xaaR72\xf0\x93\x877\x0b^\xfc\xd4u\x88\xc244\xebHddJ'\xcd\xb8\xf4\x0d\xc1\xae\xa5\x060\x84;8/(\x1b\xfba6\x07\x0f>\xc4\x1b\x12*\x7f\x99\xc1xk^N:i\x88@\x9c6\\\x9e\"\xf3\xda)\xa2N?p!\xe4\xfcEpV\xd4\x02\x11T\xe8?\xe7/\xa5m\xb5\xf3\"\x0c\xa2\xcf\xe4\xe1\xf7\x0e\x99\x12\xe7\x85\xa3HP\xe7\xfb\x17\x0f\xcb\xdfN\xd9\x95`<\x0f\x12M}\xa9\xe4C\xd9e\xd4\xd3\xed]\x0f\x01T\xc8`Qwoe~q\xe1BO\xeeW\x1f\x9d\xb8\x82(\xe6\x83\x99\x80\xab\n%\xfb\xd0\x0e/\xa2>\xac$Nl\xde\xc1<\xa2S,\xd1p@\xa3\x19\xc9z$=-\x97\xa8\xcfI\x8eK7R5\x85x\x9c\xc1\x86\x02\xa6\n[\xfa\xa4\xce\xbe\xaa0\x83\x0dW>\xb1\xaa\xbe\x9e.\xe3\x0cN\x1e\xd7;+\xe3\x0c\xee=\xae\xc3\xaf\xf1\x15\xa5\xc2\x0c\xee\xd4;\xab\xc2\x0c\xee\xd4 \x91\x1b\xd5\xfc\xfa`\xaa0\x83\x0d\xbb\x8d\x0b)\xb5\xd9{6\x18B\xb8\xc4\x9d\xba\n\xa4\x8a7\xd8\x18\xbe\x13U\xf0\x11\x14\x9c<n\x14\xbc.\xe5A\xca\x8d\x90\xf8\xbf;\x81\xff{\x8f\x9f\xd4\xe1O%\xfc\xee\xeec\x80\x10\x0dZ\xd6@\x8e\x05\xae\x1a\xfb,d\x19\xd31\x07\xab\x10\x9f\xc9\x01Yc\xdb\xa3\nvD\x0e\x88?\x0e\xa1\x8a3^\xcd{O\x0eH<\xae\xdbo\xc8\x90\xe6\xb5C\xe7\x03\xba\xdd\xa5\\\xa9i\x91O\xc0\x16O\x10\xfa\xd3z\xac\xe8\x1a\xd5w&\xd0\xe3\xc5\xc52[\x855\x91z\xd3]\x00\x01\x1dC\x89N0\xaa\x92T\x11\xd0\xa9\xe0\xcc\x14\x12\xb6\x81\xa7y\x0cQ\xb4\x8e\xab\xaa}?\xd3$\x82\x8e54\xeek\xcd\x7fM\x0e\xc8\x04u\x1d\xf2\xdf\xcd\x13F\xb0S\x1d\x9c\xd8\x85\x8a4\xa7hhe:\x08\xa6\x04\xa8\x8a>\xf8\xeb\xebB\xa2`r\x0b\xa2\x85\x16{\xf7\xa8\x10\xf9;\xe4l\x19\xa4D\xd0\xf6\x82c%W4%:L,\xb9\xbc!\xff%\xce\xa9H\x9cS\xff5Fn6\xfed\x7f\xd3\x1f(Ka./\xde\xa1'\x83\xb4Z\xfd?36\xbe\xc8\xe8\xe2\\\x1a\xd7(s\xcfl\xac\x97\x85\x1e)\x99jY\x0c\x8a\x1fu&{O\x1dA\x1d\x88\n\x87\xf6\xc1?$\x0e\x81\x0btA\x8f\xa9\x91P\xaa;\x84\xcf \x9c\xda\x96\xb2\xe5\xc0\x8b\xe1\x1a\xc3\x91\x0f\xf6\x89]M\xb4uO6\xfc\xc9\x0eHu\x11\x9b\xd9\xb6\xfa\xce\xc0\xa3\xa4\x15B\x8a\x94\x9fL\x9cA\xa5\x81p\xcf^1\xd158\xf72W\x14\xddu\x86\xb0\xec\x07\xed.M>\xb6x\xdc\x90N\xb6\x133P\xfd\x15\xea!\x19\xf1\x88\xa8m\xa6\xd9\xf8b \xa1<U<\xe9\xd7\xd1\x9c7w>!\xda[\xe4\x05\xac\xf2\x07\x0f\xf4\xcfRN#h\xb6\xd7`\x99#a\xa6\xe2W\x87 \xd3\x91\x9b\x0dI\x00>\xb2\x16L\x06\x8e\x85\x88\xc7\x1f\x19\xf5o\xdc\x81v\xa6\xe5\xbe\xc4\xee\x0e\xa0QQ\x9aM \x12\xeb\x99\xa0\xb6v\x16\x97\x9a\xa1:3\xa6\x88\xdf\xe7\xafVKQd\xb6^6\\ \xcd\xc7q^\xc6\xc1\x05\xe7\x92\xa2\xcd\xca\xcfd\xbd\x85*Y\xb7\xa7}i\xbci|l5\x8ey*G\xf0g\xe9\xca\x02\xbe\xd8^\xcd\xa7F5\x97\xb7\xa9\xe6\x1f\x8dj\x16\xdd\xd5\xe8_b5\xbej\x1ca\x19\x8f\x8f.y\x02w\xd3\xe2\x7f\xed\xcc\xcbx|L#i\x0e\xe0x4\x8aCzc\x05)\xfc\xe1h\xc8L&4\x0b\xbc\xcc\xe5|\x1c+\x0f\x85\x8e\xaf\x12<\xcc\xab`\xc6\xe3\x93U\x9c\x05\xe0K\x90\xc9_\x08H\xe4%7q&\x81\xf4o\x0c\xccW >\x9a\x9d$p\xa3\x0e\x91\xfd\x9a\xd9o8\xf5\x99/\xfd\xd6:!\xbc@\xc8\x0f\x0b\xe0[\x96Q\xdf\x04^\xa9\x04\xbc\x80\x8a\x9f\x04\xb0)\x12\xe4\x08\x1c\x96\xe7\xa9\x18\xb0X\xfcG\xb2\xe5L\xe1\xd3$2\x81\x88\x80\xfc Z _$\xa0X\xe6\xc4\xeag\x13\xe8#\xcdX1s \xcd\x98m\xd6N\x19\x03\xf3\x0b'\x85\x1f8\x80lQ*\x7f! \x19\x0d\xa5\xcf\xc9T\xfeB@\xf24\x06I\x8f\x93\xca_M\x90\xb3`\xc5t\xb4$'\x0bV,\xc7B\x1ae<\xfe\x89\x87\xf9\xaa\xec\xdd\x1a^m\xfd\xfb\x99\x06\x99l\xfe\x95\xfce\xd0\x11\x18 \xf6{c\xff^\x8f\xb3\x84z\x9f{\xec\xfd\x1f\x1aeK_\xcb\x82\xe0~\xfdR\x1f\x98{\xf5\x8b\x1a\xb1\xf3\x199 \xea3\xd5\xcc\xc2W\xbe.\xfe\xc8)<\xf4ft\x81\x1du\xd2\xd3{\x00\xba\xfb\xd6 ?\xeap\xc6\xdd\xb5\xcb\xeaMW@\x05>\x06\xb9\xa9/\x86%\xfeA\xba\x1bU\x0e\xdc\xd4\x1e\x01\xb9\x8f\xfc\xcf\x06\x96k\xe0\xcb\x84\xd1\xcf\xcd,\xd9\xb0u\xe03nm6\xcd\xfd\x00\xcb%\xa6\x0c=+]a\xdb\xfbp>$\xaf\x06\xe4U]\x1e\x93\x01\xb1\xd7Vx\x1c\xe7\xe9\xd2E\x86 \x1b\x92W\xb3\xec\\t\xdcB7\xb7v\\j\xac\xdd\xef\x8c\x9cH4Y\xe0\xcb[\xceI\xb0Z|\xf3v\x0d\xc9\xb7\\Us\x9e\xac\xee\xb7\x0b\x1f\x19h\x88\x11'Q?Z\xbap\x9a_\xae\x02)\xb4\xd4\xbfn\xd7\x8d\xc0\x128E\xad \xe9*\xce\x1a\xd7\x8b]g4a\xf4~\xc7\xe1\xb5\n/>\x14\xad\xd3?\x99=$\x01\x82;\x7fj\xe0\xce\x1b\xa0\x9b\xe4\x89\xd0\x87p\xfa\x11\xe5\xfd\xe5%\x07&k\xb8\xa4\xe2\x94Fs\x12<\x1d\xae@\xb0\x0c\xb6\xba\x14\xc7\x1f\x96\xb5\xb4\xd4\x15\xac,\"\x90@\xc6\x14\xc5\xb2>\xb3\x9b\x05\x8b\xf0\xbc0\x88>\xe39\x82\x9e\xc1s\xd4\x1d\n\x96\xa5Ug\xb1<8\x0e\xf1\xac\xab\xcbN\xe1\xcd\xcf\xe84\x89Uf\x95\n\xc5\x89\xad%j5w}\xf3\xff\x80\xff\xbe\xe6WW,\xca\x83\x8c\xad\x90\xf2\xe4\xc7\x9ap\xedW\xd0\xa2\x99\xd1\xd1\xefG\xa3\xbf\x9d\xab\xff\xd3\x8b\xdf\xc6\xbf\x8d~\xf3\xcf\xff\xf2\xe7\x87U\xf0\xbf\"\xb7\x95\xff i\xb5\xd3\x06#B\xfe\x8cJ3\n\xedJ\x1d^\xd0\x199\x03\xf2\xfd\x01\xd9\xa9J0\x02[\xa4\x92\xbfA\xb0\x01\xe4{\xbf\xb4\xc5\xd8\x13|{\x15\x17u\x85\xc4\xf9Oy\x03\xfeW\xf03\xfb\xe5\x0bq\x7f\x05\xf3su\xcf!\x08\x98\xc7\nW\xfeU\xdf\xbd4\xdc\xbc\x16\x04NUFb\x86\x03\xc9\xe8\x824\\C\xea\xcc\x88\xaeX\x1aS\x8f}\xfa\xf8\x9aT\xe3ph\xb9\x94\xbee\xa8e\xc7 [\x07<OOAL\xd1\x92w\xcc\xe3\x9bZ\xfe\x92\xa7@\xe9!\xc9\x1f@\xe3\xad\xde\x94\x922< ;:\xd5\xe7\xabjBC4Q\xab\xa6\xe2\xc3\xb1\x9a%\x0eO\xb6f\xa1\xc2\xa0\xb5\xdcyH\x17\x02\xb1\xef +\xe6\x97\xb1\x1f\xa4\x82\x0b\x01\xd5\xc0\x03\xe2\x80\\\xe2\xe5\xfb\xb7\x85\xd7+gH~\x19\xbf\x0d\xae\x83\xa8\xb1\xa7W\x82\xdd-\x00{;NEF\xe5o\xdb\xdb\xf5q\x89\xc6\x17\x81\x7f,\xbe\xc0\x922\xb72\xc8Y\xeb\xd0Y\xe4@CB\xc1\xf5\xc5\xbc\x88AR\x13\xd0\xc5 \x8f\xd3faM\x9f\xb7R\xe4\xa4\x17\xfd\xdaI\xa9t\x10\xf6\xa4\x07\xbd&\xf3\xc5\x81\xd1\n\xd0\xca\x1d\xf4 W\xdbIy\xfd\xa0\x0b\x18\x1f=\xfd\x14\x14I\x8bs\x1bB\x94\x93\xbcVy\xda\x0fr\x95\xb4\xa8\xa5[(1\xd2I\x8d\xe9g5^\xd5%?C2\x97n^\xc5:[\x89\x16\xfe(\x96\xaeX[:\x7f\xd0\xd9\xf4\xdfU\xd3;\x01\xef\xa1\x8fR\xb5\xa1\xa5\x93\x8b\x8eN.\xf0N\xde\xa1IV2W?7\x1dM\xba\xb9\xe5\xb8\xdf\xc3pv\xd0\xe0\x04D\x8f\xed\xad\xbf\xbce\xeb7^5\x8d\x16\"\xde\x8b\xe7\xc4}g4\xa1 D\xc8\xa1\xf6\x18Z9\x8d\x87pC\x9d)D9\x15\xd8\\\x9c\xe4\xda\xbfh\x84AK\x98\xc1\xb0\xb46\x01W\xa3\\\xfa\xb3\x1e\xa7\xeb\x85\xd4$\xe4 \x0b\x16Qy\xc7q@h\xe9\xe69\x1d/\xb3U(5\xea\x0e\xf4\xabT\xebL\xd7\x0b\xe5\xae\xb8\xa0,\xa4\xbfkY\xf7\x948+\x9a-\xeb e\xc5\"w\x15\x0el\xd4\x07\x17\xe3\x9d\xa7\xec\xd8\xd4uk\xbb\x81\x8b\x87\xf2\x82\xbc\xf3\xe6\x80\xa8 0\xbbdwp,\x9d\x89KM\xe1j_l\x8d\xd1\x8fh\xd4\x12n\x851}\xbd&e^\x7f.lGj\x93\xba\xac?\xcb\xaaZ\x0ch\xbf\\\x18\xda/\x17Z\xfb%&\x07dYQB^\x9az0\xf6sB\xaa_\xc7p{\x1e\xa4\xe4\xb0\xd1Kk\xcb\x87PB\xac\xe2\xdeE,\x98\xa3hB\xad\xa2w\xa7.\xc7I\xe1\xb6\xda\xd6\xe38a\x1e\xf5\x96`G\xa26g<\xa8\x92}_\x0e\xc8\xa9`F\x8e\x05\x9c\xa4\x86A\xb3\x1b!\xa8\xbe|!^\xc5\xf2\xe9\x15O>r\x9e\xb9e\x9dRZ[\x1a\xa4\x05,u%\xa99\x17\xb4\xbe\xa5\x9d*\xbcv\xee\xc6\x16\x08\xd5s\x18\x92\xd7Q\x90\x054\xd4t\xbb\xa0%\xe7C\x92\x0c\xc9\xd5@\xfa\xd8o\xfa\xf4\xfb\xda\xe6fP|\xfd\xa4\\\x98\xf0\x8d\xf71\x8b\xce\xe8B\x9a\xdd\x1cE\xfe\x87\xf2\xda*\x85\x0f\xb6,\xf6\xebZ]JA@\xd6\xa5[k\xe9\xa7h\xfe\xd6\xb5@)?\xce\x8a]yN\x0e\xc9\x89X\xdeR\xf3\xebD\xaet\xb2M\xae\xc5/\xb9\xfc\xadKC\x02\xf7@\xe0\x1b\x92\xaf]\x14O\xc7\xc9\xf2\xa68\x82\xe6c\x9ag\x1c\xc2\x88H\xd3\xba\xd6r\xc1x. M\xfe\xe3\x9fr\x14w4\xeb\xd3\xbfSwZ\xa9\" r\x99gY+-\xf7o\xd0\x8dNz\xb3\xa3Q\xff\xe8O\xbc(\x99J\xab\xbeN\x0f\xcc\xd0CCQ+\xd6\xc8\x03l\x83\xb3\xb0\xb8\xd2H\xe0J\x03?\xc7@\xa7\xa7~\x8f\x91t\xc6\x89\x06/\xee\xb3\xa4\xc5T\xcf\x0c)\x11\xd8\xcfP\x0d\xfa\x1ek\x03x\xa7\xfe\xa8N\xa1\x04\xe2\xa2\xd8\x0e\x04\xfdt8\x87\xd5\x8f\x03\xba$\x92\x96\x01\xcb.7P\x7f5&\xc6$6\xdc\xfd\xe3\xebP+\xa2\x08\xa2-\x80x\xf6r\x9a\xe5\xfc\xbe\xe2 \x94H\xdd@-\xa6\x8e\x06\x135\xa29\xc1\xdc\xeccOA'\x9b\xf4\xe4\x9fK,\x0c\xeb\xe8\x90\xbcm\x8e(\xc8\xd4\xc4\x87\xbcz\x9bk~ ]1\xd8\x10(\x01\x85.\xab\x94\xda'\xb9\xd4 \"\xdb\x07\xc4\x01\x15\xa5\xbc}\xc2\xfb\xc6\xcb0\xcc\xc2#\x9f%g\\\xf0\xf9\x81'\xdbA\x0eID\xa6\xfa\xf4\xa9\xd2\x1cf[\x1a\xad\x07\xfa\x03\xf4\x8eZ\x80^\xbfT\x15\x83\xech\xd0\xea\xd3\x1d;\xb5\xfb\xf9s_\x17\xe1Kp\xe2\x80\x93\x16\xb5\xad\xe6J1\xf7\x1c\x1f\x14\x0b\x85\x8f\xa5\xce#\xccRB\xca\x04divP=b\xc1\x7f\x98\x15\x1aYZUL\xd0\x1b\x86\xe2\x98M\x01R?T\xadu\xc0\x0df\x84p]\x83\x9d_)Q\n\x0c\xdc\x89\x1b\xb4\xd1\xc5f \xda\x86\xd3\x12\xbd\xef\xa5\xfcQ\x13\x8aT\xc5[\x18\xff7\x0f\"\xd7qng\xa7O\xca\xa5\xfc\xb3I\xa3 \xce\xf37\x15\x02,\x19{K\x9a\x1ce\xee\x8e\xd8\xbb\x90\xbcM\x1225\xe2^\x10\xeb\xca\xab\xd1\xb7\xbd\xa5\xa6Z\x89\xed~\x97X>\x86\xd3T\x94\x17\x08\xe2\x7f\xc6bs\xa4\x83\x89\xc0\xe8 \x84\x86\x06\x0c\xd8{\x05Z\x1bY\x9c\xd5i\xfbB\x94\xec\xca\xces\x12\x92\x17$\xd5\xb6\x94$\xdc\xde\x1e\xe8fI\x0e6\x19\x92t\x16\x9ew\x912\x8d\xe8\x14\x1e\x0b\x8c\xf0\x14\x9ba1\x8c6i\x0e\x0d\x06e\xdc\xceHv\xb0h\x81\x9b\xc1\xc9\xdf\x8czR7\xe8\xab\x16\xbb\xc5\x16\x00\x19=\xbe\x8c\x82o+\xd7\xefb\x8c\xb8M\xdc\xcb\x15 \x82f\xda\x96%\xb9\x17J\x9a\xdb\xa4\xb3\xbaMh\xe6\x9d\xda\xd4)\xba\xe56\xf1\xacn\x13\x9ay\xa76\xf5\xe0\x03\xb9M\xec\xaa[\x85f\"$\xb3\x9d\x01\x7fW\x14j\x13\xaapE@7`\n,\xa3 \xc4V\x19v\x8b\xf8\xfa-\xde\x95\xda\xd1\x15M\x8c!\xb9\xc6\x83\xe3\xde\x95\x03\xec1\x1f\x97X\x83\xee\xf0\xc9\xcee\xd9\xc1t\xfe\xd4\x8f\xe9\xac\x9f\xfc\xc8\x0co\x80\xade\x8cI\x0b\xcf\x98 >\x00\xf4\x03:\xf3\x08\xc3(Y~4Y\x1f\x7fl\x96 \xe7\x91Yq\x85+\xeb#YN\xed\xecZ;\x1f\x05\xfd\x0cD?\xd3\x01I\xeb\xed\x0e\xa4\xec\x1fX%pU\xf2\xc7\xd7\xc1,8\x07B\xbd\x83\x9d\xb33\x8f\xedW\x8e\x92Z@\xb8`r\x08\x03G L\xad\xdc\xe6\x89`\xcc*\x0c\x1fka\xf8<e\xd8\x05;\xed\x15OJ&\xef\xb3\xde\x8cP\xa1\x1b\xea\x90\xbf\x01K\xc5\x17\xbf|!\xe1\xb8\x11\"\x00\x18\xf3\x07\x0f\x1a\xd5\x16_5jm[_\xad\xd7\x18s%^\xb0Su\xb1\x98\x8c\n\x13\x7fh\x1d\xfbi\xb9\x04\xf5hN\xc9\x9a\x07>f\xd8A\xecB\x11\xd1\xed9\x90\x81q\xc5dfn\xaa\xd1\xc4\x83M\xd6x\xebZ\x12\xe0\x10\x98\xa6\x87Pb.\xa6\xb0}\xf1\x0dI\xdc\xb5\xa7Hek\xc4\x03\xb2\x15#{\xe3\xcb\x172\x87\xb1\xc0\xf3n\xb5o\xaa_\x9e\x0f\xd0\xca\x1f< \xb1\xa8OL\xc1\\\xfc\xb0\xecR\x91\xd7!\x81\x90\xfbM\x14E\"\xfb\xe9\xa7\xa0\xe0Q\xe9\x94\x98\x1aC85\x07|;\x95k\xa3\xdc\xaa=j\xaf\xc9n\x06\xf6\x9d\x9c\xb2\xacm\x1b\xb7\xdf\x8d\x17\xdf\xdb`\xa3w\xa3`\xdf\xa6|^\x7f\xca\xddrX\xedI\xd1K_u\x81L\xed\xd8\xc5\xdf0\x10k3\x05\x84U\xd4l\x80\x12\xd8\x15\xe3\x98c'\xb2\xf5\xfc\xbd5\xd7]\xb0\xb6\xac\xc2\xda\xb2~\xac\xed\xdd\x99c\nZz-6|\xd6L\xc5\xd1\xe3\xd5\xe6m\x02\x05\xd0\x8f\xbfU\xb5\xa9\xc1\xc6\xf3\x92\x8d/G\x0b/\x16vq\xffx1\xaf\xf25\x03\xbd[\xbc\x07\xcf+\x9f1\xe0\x11\x1aKg\xa5\x05q\xa4B]e\x06\xff\xabIr\x89\xb8#uF{\xa2\xc8\x16 _\x03\xf8\x8c]gJ\xf8\xe8V,>\x03PF(\xe4\x16\xd6\"d\x9b\x04\x03\xe3\x98\xcc\xc9!\xa1P.\xaf\x95SW\x92\x8e\x14\xf2\x1aE\xc2\x1a`\xd1\x81\x10\x0bg]\xdbL\x8a\xffy\x07\x0e\x85\x8b]\x84\xed\x1d%F\xab\x1b\xd5 u\xe6\x91]\x95\x10\xabyC\x9e\xfd\xff\xe9\xe2\x19\x8f\xd6\xf9\x95c\x87[\x01\xd8\x0f\x07iV\xdezvT<\\\xed<'\x11yA\xb2B\xfa\x15mo\x0fH6\x8b\xce\x95\x0e\x87\xcd\xf2\x9c\xf4a\xe7\xda\xf8\xd9\xde<\xe6\xf58\xcdx|\x96P\xefs\x10-\xbaN\xc7\xce6\x81\xc3\x82\xb6&-\x19\xf5\xdboo\xb9\x7f\xd3\xd2\xde\xc4u\x9e<qL\x9e\xbf\x01\xda<H\xe5n\x8f\xaa\x82J6\x18\x92\xf58\x8f\xaa:$p\xcb-O\xf4\xa30,\xf5\"T\x9e\xfclO\x9dfDg\xb9\x03\xb7T\x83\xd9\xde\x01\xc3\x14o_\x87\x84\xbb\xbf\x94\xfe\xdb\n}\xe6!\xb9\x90?j\x9e\x80~\xf9\x93*v'\x07/X\x0c\xf7\xc8\xdd{R\xf7y\x82\xbb\xcbi\\\xb8w\x8c\x04\x81\x80\xc3 \xea\x14\x07\x06\xa7k\x91|Kg7{Opo7\x0d\xbfrA\xc5\x11\xcb\xd3gO\xd5\xffgu?)\xca\x8f\xea\x0e\xee\x96w\x7f\xa7\xee\xb8F\xf9\xe5\x15\xf5\xe6-\xfe\xa2H\xb9\xa6h\xdd\xb7\xdf\xd7z\x1b@\x99gRM\x13\xa4\x88\xe3\xa5\xe9\xab\x90Ss,@{\xaft\x8d\x87\xd9a\x08\xaa\xa4\xd5_\x9e\xbc\xc9\xae\xa2\x1e\xdcw\xe1|<\xe7 \xa7w\xaa\x9aA\x15\xd7\x84\x8dRa\xd5?\x16i,\x11\xc9\x85\x033\\4T\xff\xd0Bvh\xe3X\x8f\x00\xf0|^\xc1\xfd\xcbQ\xb1\x99v\xc5\x8d\x8d\x80\xde\xd5o\xa2\x85\xe1X\x84\x1a\x85\xa2E\x8b\xe0\x0c\x11\x90u)Z\x80\x13GuCX\x9a\xef\x8c\xbaT'\x81\xb6o\xd5\xcf\xd8)\xc9DZ^\xdf\xa7\x82\xd5\xdc&\xce\xd4Q\xd7\xe3\x81\x9b\x80uC6$\x1cr\x9e\xf7\xbe\x04\xd5\xfe$59\\]\x06\xb5\xcdT\xe7\xc6\xfa\xcb2\xa5\x17\x0ed!\x13sj\xe8\xa6:0\xb4sj\xf2bjhujZ\x06\xdd\x9e\xa5\xc5\x99\x81+F{F\xcf[\xe3\xb9\x12-M\x9a\xc3\xfa\x07Z\x1d\xa6\xb1\xc4\x14*\xed\xcb\x17\xe2\x8a\xd5\xe0\x0d \xaa4\x17\x8co\xd9\xc9!i#L\n\x89A: |F\xcf\xc9\x01i\xa1\xe3z\xa8\xdeh\xa4\x04\xdcB2N\x97<\xc9\x964\xf2u\x83N\xaec\x1a\xa5\x01\x8f\xd2\x19mY\xbbD\x0b\xc7\xda\xa9FB*\x1e\x89\xa5\\\x89\xcf\xe2s\xcb>6\x1f\xe93\\\xf6\xd9i*C\xea\xa7\x8f&\x8bA6\xe0\x07\xa2\xf4h|\xc7\x03\xf1\xe9\xb3\xba\xcb2\x0e\x86\x87\xa3U:\xea\xf4\xdc]_\xeaj\xeb&n\xe1e\xdd\xe5C\xe2\xac\xd2\x913\xa8\xe3\xda;\xb5\xfb\xe1\xc8\x1d\x0f\x1e.n\xd9\xbe\xb2u\xc9\xb0\x1b\x85kW\xe0\xe3\x8c\x7f\x12\x14$\xe2\x02\xfc\xeb\xbdv\xceF\xa5(\xaa!\x19\x07\xe9\xa7(\xc8B\x96\xa6\xef\xc0\x7f\xd9\xa0k\x1cZ]\x19iQ\x02h@9\x97\x9c\x87\x8cV\\\x17\xcb\x0c\xa5\xc0_z\xe0\xaa\xed\x04\xady\x11\xa4\xef\xe8;7\xab\xa1\x07\xbd2DU \xe80\x9c(s\xc4?\xe5\x83\x07\x84K/\x922\xd2\x05\x99\x82\x08\xbc\x11!\x80HG\xe3`\x96\x99\x04+\xd0\xcf\xca\xc4y\x13_7N\xf7;N\xca\xfe\x0e6)\x0f\xff~\xb7\x8d2\xa8\xec\x94\x11l\x95\xfbl\xf7Cwv4\xfa\xdb\xf9=m\x16g\xf4\xe7\x893\xb08\xc3\xbfCk\xfb\xb5H\xcb\x0b\xfe\xf8\x8a.\xae\xa2 z\xe6\x17\xdb\xb8\xb6\xd8\"y\xf9\x90\xcd\"pq-M\x89\xa5\x14>\x82\xd54\x8b\xec~\x05\xc8m;lpg\x8fw:\xf7\xafej\xbes\xbe#\xdb\xb0\x88\xc8\xb6x\xb9\xe7\x86M\xcc\x86i\x92\xa9\xda\x10q\x08\x87\xecL\xd9\xfcb\xa2l\x8e\xcdE\x97A7\x01?\xa9\xea\xa6\x1b\xdc>\xa4 !(|\xa7B\xda\xff\x07\xf7\xe0[\x13\x84\x9ft\x931\xbb\xce\x12\xeae\xbat\xd9\x1e+s\x8e\xcf\xc2\xbd\x84~\xd9}2\xc0\xec\xe09z\xe8h\x9e\xc1\xb2\xcc\xa3\x19\xabn\xc0s\xcc*=\x9a9?\xb3\xcb\xcfA\x06\xae\xff\x80\x1c\xb9*\xde3\xc8\x7f\xcb\x7f/3W\xf2E\xe6\xac\xd22\xe3\xedi\x99\xfe\xbeL\xe6\x90\xda\xf8jm \x12\xe3`hN3\x8d\x82\x15\xb8\xf8\x02OM\xdcu\x8et\x823$\xe5\xcbI\xe4c|KQ:\xc8\x98\xf4\x14\xd6R\xc7k\x0d\xd3Z\x93\n\xf5g\xad\x05\x9cqa5d\x89\xa0?\xcd\xae\x9c\x15)\xa2\x86\xf2\x0d:S]\x81My\x02\xe6v\xde\\\x0d\xa6k{q\x00\xe6\xfd\x18\xf6\xca\xa0\x8a}\x01Q\x1b\xae\x82\xc8\xe7W\x80\x04\xa5\xa8\x8d\x04csf\xca\x97!i\x02\x14\x83\xdf\x0e\x06#[\xbe\x0e\xaac\x82\xb4\xa5\xa8\xa22\xb4\xc6[o\x9f\xd9\x82\xc6\xa13v^P.\xe2\xe5y\x03d+0a\x90h(\xe2\xe4 \x1aE\x0d\x113\xce)\xa2\\b$5\\D\x91\xbc\xd2.P`\x88\xce\xd1\x8d_qIJ\xee\x8e\x946s\xfc\xdct\xc1,%_\xbb\x93\xba\x0f\xe3\x1c\x97:J\xc7\xcf\x8f\xf6\x8cCE\xbb#~\x86b\xc7\xb0\xdb\xbd\x19h\x13 zY\xc6@5\xeb\xf5\xac\x07\xaa\xe3-\x99\xf7\xf9\x92_\xebHU:,\x1c\xb8\x84\xe7\x95\xd4\xc3R;d\x0c\xc5\x98oj\x8c\x8c!R\x9b\x05\x1d6\xa3)\x98\xaa|\x1b\x88\x95\xe8x\xa1$ nf\x11\xed$\x1a\xecX6\xb2A\x9a\x93\xb2\xff\x98\xcf\x1a\xf1\xc8\xb0\x9aR\xe8f\xb9f\x850\xa8m\x10\x10(\xba\x15\x80^k\x80F\xfeWX\xddx\xe3Tx\x7f\xd5\xbd\xf6o(\xd8\x9fd\xd8\xc16H\x15\x99P\xcfg\xa4\xccFX\xed\x9e*\x90*\xf4P!^\x91\xa7\xdb\xa5\xabJ\xc8!h\xe8[\xaaR\xfd\xc0++\xddc\xd6K\xeb\x9c\xe6\xd0\xb5\x9e6\xa6\xd9\xff\x06\xeb.\x1b\x9b#\xd9\\O\xac\xa7\x8b\x8dj\x9f\xcb1\xca\x8a-uh\xfc\x9e\x96\xdfm\x1d%sR\xcc:aN\xa1F\xf9kJl\xb7\xffU\x8f\x1f]s\xd1M\xcc\x92\xc6m'\xa6\x11\xde.\x9b\x95\xfb\x9d]3/\xcf\xd8{\xf5q7k\xb7mK\xc74\xa5\xb1\x1bv\x1aI\xae\x0b\x85\xf6\x88\xaeZ,\xe4Azh`Ce\xfbk\xe8k\xa2\x14\xbf\xf9\x14G\xa68Xr\xfb=\xd1\x10\xee0\x82\xe7\xc43\xc2\xf7=\x1f@j%\xa9\xdf\xd7\xe6P\xec\x1f9KnNA\xf7\x96'Ga\xe8\xca\x9b\xdb\x99\xe8\xf5\x81\xa0i\xff\xcf\xe9\xfbwc)i\x08\xe67Re\x01D\xd8\xdf\x9d\x83\xda\xcc\x81\xea\xfd\xf9w\x03\xe9\x02`\xe79\x89\xc9\x8b\"\xf4\xd9s\x12oow\x0d\x01Q#\xee\x83\xd6Y\xdc!\xb3$j\xdc\xfdR'\xc3\x1f\xcfy\xb2\x82\x19\x08\xe0g\x9f/\x12\xf5\xd5\xa5\x1ew=\xdeb\xec\xe1\xd2\xb5\x1e;\xcd\xf6,\x95c\xadg\xe0\xe4\xbb\\d\xcbn\xc9*.\xfa\xec\xce\xb5\xe7\xa0\x01\xa8\xf4\xf3u|\x19D>\x1a\x9eO<\x1e\x8f\xb2\x84Ko\xb2\x1e\xa6N\xd0\xaaM]\xa1<\xba\xf0\xc0\xda\xea@\xbfe\xf3Kd\xab\x10`sn\xca\xe3\xe9\xc1\x03\x12\xa0\xdaq\xf8\x06\x13\xdc\xb4\xa3\xaa\x85;\x1b\x88}\x8b\xcc\xbe&\x17\xad\xd5\xe0\xb8\xb1N\x9b4+\xaeZ\x84\xe1x|N\\)'\xe4pG\xa1M\xde\x00{\x0f\xf4\x0f\xc1\x8d\xeeX\xc4\xf2\xc5MD\x11\xd2\xad\xc4Y]\xb8\x1aD\xec4I\xe5]\xa1\xab\xbe6$\x93\x1d\x90\x18\xb5\xdc\xc9\xb8\\\xeai)\x8f1RcK\xb7VbH0\xa9,\xdb/\x91\x0c\xbe\x80e'\xca\xe2\x1a\x1c\xaf\x039\x8b!\xd6\xa3\x16\xf2*x\x03_W\xcfr\xd9\xd4JJ\xf1\xc9&\xa4[\x03E\x01\xb5f\xd9\x81y\xaec\x0d8.\xf3\xca\x8au\xe2\x01\xd9\xda\xaaC\xb6\x926u/\xe8\xdfl\x7f\xda\xb6Fs*\ne\xb1\xd6\x05\xa8\xf4\xab\xa4\xd7\xd66\xed\x1c\xe9\x05\xb6\xc5d\xa5KA\x08\x02\xbd\xb7~\x02<bw\x01dA\x87>\x9a\x06\x1a\x85\xdc\xa3\xed*I+\x1ee\xcbv=\xaa\xae\xaf]1f\xd3n#\x10a\xb5\xdc2C\xe3-\xea\xa0i\xf5\xd32\xaa\xaa\x82>\xdf\x8ej\x0c\xa2~\x9a\xc7\\\xc1\xb0[(3eb*\xdd\x11H \xa99?,\xbbdl\xa2zZ_(\xfc3u\x05\xcd\xe2\xcd\"M\x9dC\xea\xad\x04\x17f5\xce\xe9\xc9\xf1\xc7\x93\xb3\x8b\x97\xef/\xde\xbd?\xbb\xf8ptzzq\xf6\xe3\xeb\xd3\x8b\xf7\x1f/~}\xff\xe9\xe2\xe7\xd7o\xde\\\xfcpr\xf1\xea\xf5\xc7\x93\x97\xce\xed\xbfi\x08K\xeaR\x11\x15o\xb9\x1e\x0d+\xc0\x85\x1f\x94\xe0q\xa0\xf2\xf2^\x0f\x8e\xdf\"\xb3\x90V\xa4\xf6{\x90\xfa\x15\x9c\xe6\xe2\xc7Z\xad\xae\x88K\xc7\x86\x1d\xc8\xaf\x90[\x10\xe9\x9f\xacq\xd3&\xc5 \xe5)Z\xa6\x1f\x92\x8cl\x8b\x92SiN\x01\xd2\xc8\xad\x9d\xba\x9c}0$Y\xb9:*#\x1c\xe2\xee<q\xb6\xb4\xc3\x988\xb2\x86 *h%\x1b\xde\xd5,\x90\xc5\xb2\xdb\xd1\xe1\x18%\x11\xc1\xab>\xd9\xb8\xe9K\xc2\xd0\xa5\x96\x94\x8b2\xf6\xab\x17,d3\x92!\x01\xc4\x03\xea\xd5\xd7\x99[\xbf\xa8 V\xe4\x10\x0c[\xbc\x80\x98=\xb7X@\x08\x90\xc0PDo2\xca\xdbb\xf7OI\xea\x96\xfa\xef\x03\xf9\xd1\xad\xc9\xb0\x16\xe0\xb7]7\xa9\xe0\xc6\x0c{\xf4\xa4b\x8fn-J4\xf7 .\x0ef\xe1\xb9\xe4~\xfa0>rEv\xb36\x80\xda[\xa1,\x8a\x1b\xa5Y\x90l\x9dl\xda\xed\xe5\"r\xbd\x08\xa6$\xefX\x04\xdf\x96\xe8\xb1s\x1c\x06!\x19X\xe8\x9f\x8a\x037\xd7\x01xg\xa8K\xb6\xd2n\xb7\x14\x87&\x16\xf9e9\x9cm\"\xbf2l[\x8b\x14\x12\xa1\xeaJ\x99oU$\xa7\xbf\xaaN\xcc\xe2\xd5\x0ei\xe1\xbf\xc0\xe7\xa3\xb9\xf7\xec\x02\\\xf5-\xaft5\xcd+\xd7r\xa4\xcf!-U\xee\xeez`nt\xbb\xd0\xbcE\xa0\xf8A\x9aoz\x8b\x90\xf6\xbaE\x08;n\x11\xf4/\xfc\xb8\xdap\xb9j\x81E\xc9\xff\xd8\xad\x9e\x12\xd7y6q \x82\xfe\x1fmRp%\xaf\xbe\x1f\xe1w\xb9\x13\x1c\x159nC\xa1\xf7\xbf\x8b\x9c:\xe8\xbe\x1f\xb1\x9c\xf8\xa6fT+\xc5@\x1b\xe2p\xbb\x187$\x07\x9d\x0ed*\x96QnE\xd7V\xac\x85]\xb1\x16\xaa'n(\xc5 \xa1:F\xc9\x8b\x032\xd1\xf2\xb9=G\xf9~ g;\xe7\x03\xe9\xdc\x16\xe644\xb8r\xa9\xc8K5\xd7\x00\xc2\x9b\xe6\xfc4R\xfa\x1efUq\xbc\x94S\xfc_&w\x0f6\x95\xbb\xab-\x9eK\xc9hZ8m\xec\x10Rv\x8c\xfa\xbfD\xfcH7\x92\xfc%\xf5]\xd7E\x92v\x10\xe3\x92\x9e\xc2\x07Z\xda(F%%\xe2\x96\xfc5\xafH\x9d\x1ar\xab\xa8.\xb7B\xa4o\xcd\x15o\x17\x995+\xac\xc9\xc0\xda\xe6\xf1\xb6D\xdbf3#E\xc9Yi\xc1\x89P2\xea\x82\xdb\x8e\xee\xa1\xafY)\xc5\xd8\x90\xfd\xff\x96\x94\xc5\xee.f\xcf\xe4\n\xf8]\x19\xe4X\xda\xf2<z\"c+\xef[,y\x1a\xd5\xe7\x95\xd0\xca\xfb\x93'\x83\x1a\xf1aa\xdb\xed!U\xa4\xda\xaa\x18@`\xabg\xe7\x03\x19\xe0K0\x8e\xa6\xce@\xb3\xda\x10\xad\x96k\xbd\xb8Z s lT\xa8\x7f\x89\xc1\xf4\x1a\x08\x1b,\xd0\xa6\xc8\x82\xbbH\x98\xc7#/\x08Y\"\x97Y\x16\x18\xb6\xba\xfd\x18tb\x184\x8d\x83f-E\xd9\xe6>l\xaeg\xa3A\x9f*v\xc3\xa85\xfd\x90\xf0\xa1\x9dQ\x04Y\xbfv\x90\xd6\xd6\xec\x14\x1cGgC8;i\xdd`\x99\x0dE-\xc5\xe7\xa4\x06\xa9<s\x9a\x91^\x05\xcf.jI\xfbt\xb6b)\xd9\x7f\xb0\xd7\x15\xf7j\xad3XT\x85\xf7_\xd7\xd0\x08cc\xc1\xcb\x1aw\xcfZ\x1c\xb1P\xfbp\x172\x82\x9c\x04Q\x9b\xdb\x06q\x90$u\xd5\xaa\xbc\x97\xfb 1\x97\xc9,oi\xa0~Z\xd6\x85~:\xb2\xf5f\x0b\xc6U\xd3r \x0b:WJ$VJ\xfb\x07\xd2\xf1\x05\xd4\xfc:\xf2\xd9\xb58\x17\xb6\xb7\x87\x02'\x08\x94\xe2\xd9\x87\x0f\x97ehN\xb2\xcf\xcal8\x05\xe8:\xb9\x88>\xbd\x86\xf28B\x17V\xc7\xaa\xe0bU\xd0\x86\x05q\x04\x12T\xd8\x0fQ}M\xf0\"\x9a\xf6d\xdffg\xa5\x95\xbeg\xaer+h_DR\x1d\xca9;\xf9\xe5\xec\xe2\xf8\xfd\xbb\xb3\x93wg\x16G\xacD]1\xc3\xd0X\xa2 \x8bg\x0e\x07\xb8\xcf\xae\xbb\xbcR\xce\xd5M}\x17\\\xc6{UG\xe7\x19K\xca\xfaP\xb8\xaf\x03\xcc\x1d\xa4m14\xdd\xd8\xfe\x8f_\x07\xa7'g\x17o\x8f>\xfe\xf5\xd3\x87\xff\xb7\nH\xdeq\x1c\xdbVCf\xf8\x16\xbc\x1dIp\xdb/\xd7\xcf\xc9\xea\"\xb4\x8f\x1aG\x14\xb5\xcd\x87v\x9c\x809r6W\x89\x19Wz0\xa5\x92\xa0\xb0\x9f\xcf\xe2\x1c\x84\xab\x97V\xe7wp\x0c\x0d\x0b\x973\xed'\x1f(6\xb5\x83\xf8\xdd \xcbn\x90\xb5\xf5\xe6B?\xb0\xe1=\xa9*\xddZ\x15\x0cC}\xcb{\x9d\xe4\x00Qc\xb3\"\xeav3\x99y=\xe8\x02\xf1,\x04E8\xf3z\xa8oIU\xad\x059$\xee\x1c\xa4\xb9su\xe4\x97\xc1cVC\xb2\x1eB$\x9e\xc1@\x86\xe3yK\xb3\xe5xE\xaf\xdd\x95y\xc0\x0b\x80!Y\xd5\xce\xfc\x18|\xf1\xad\x80\xb1h/\xabB:\x95M\xb8(\x11\xe8\x91\x04s\x17CBg\xcbs\xdd\xa2L\xd9B-\xb7\xb7\x07C\x12\x0b\xf2b\xad\xf9|\xed\x81\xc7E\x9c\x7f\x98\x8f]\x7f\xab\x9c`>h\x1a\x03zR\xbaUk\xb2\x89\xf5]\x980\xc2g\xde\xf9\xa0\xcdm>\xf8?\xd2\xe8}^\xfa\x0fi\xd2\xb5\xcdK\x17\x82\xf6\x00\xc3\x7f\x91\x95\\o=\x087<\x05\x9b\xe7^f\xfah\xb5\x84\x9c\xec\xd3\x81bA\xf6vLF\n7\x05\xe6\x92|!\x80\xeb\x96y\x1d\xa8\x98\x94\xf4g\xfb\x9eU'\xef\xdb\xf7?\x9d\\\x9c\xfc\xf2\xfa\xf4\xec\xf5\xbb\xffl9|\x89y\x00w#?\xe3\x1c\xae\xf4\xa9\xbb\x94<D\xab\xfb\xc2&\x8f\xd1OyH\xb7\xc3\x19\xa7tf\x05\xb4\xdcOnt\x92\xaa\xb0\x04\xf8\x1a\xe8`\xed\xfb\x82\x93\x0dg\xfa\xf5\xbb\xd3\x93\x8f=\xc8,b\xcet\x8b$\x9elBn\x91\x0dH.\xf2\xcf\x9a\xd1\x08\x06\xb8\xb2>{\xcd\xae\x11\xaf\xac\xc7E\n\xb1L\xed}\xcd\xeb\xc7\x13\xd8\xc3\xef\xde\xbf<\xe9;\xab\xdd\xe3\x7f\xd7\xfd\xdbB\xa2\x93\xfeT5\xe9IY\x93\x8em\xdbkV\x9bg\xf8-$a\x85\xc5w\x95\xb4H\xd4\xa9b\xe0\x05Qe\xd4\xbbm\xe6Q\xd5s\xcd\xe9\x0b<\xf8\xb0\x19b\x8f\xe1w\xf0\xc4\xde\xfcH\xbaBl\xb6\xf4O\xf8\x9bEt\xedA\xea\xadD\xd7\xa5\x9b'\xd4\xd6W\xb9\x17\xa8\xfb\xe1 \x86\xa7\xae\xfa-8)\xa5\xdb\xbb\xbb{ \x97\xde\xdd\xdd\xad\x0b\xb4\x89\xa1x\xb6_\x1b\xb4\xdau91\x85\xccy\xc7\x81\xbfV\xb6\x1b\x86\x17&\xd60Z$\xe6} \xa8\x89H\xa1\xb7\xb4\xb3\xe7\x82^i*\x89U\xc7FV\xbfu\xa0*x\x0fN \x11\x15\x0f\x81=.N\xde\xfd4%N\x9cp?\x87^ \xe8\xe4\xe7\x93\x1f>\x1c\x1d\xff\xf5\xe2\xf5\xbb7\xaf\xdf\x9d\\\x9c\x9e\xfd\xfa\xe6\xe4tJ\xb6&\xd5F\xd4FJ\x8b\x0b\x9b\xdfE\xa4\xd8\x1b\x13M\xfa\x8e\x8a\x0dL\xb5\x80v\xb9j\xdd0\\?Z\xbc.>\x9d\xcb@\x01\x1b\x88\xf1\xda\xba@\xa1\xc2\x14\xa2U{\xe0k\xd7\xde#\xf0\xe9\xd1y#+\xf8\x9c\x0e\x9e/n\xf1\xbd\xa4\x1f\xd4\xba6\xee\xcd\xf3 \x06\x15\xd8%\xb8\xd8b\xb3\xf8\x1c\xb8\x0d\xbf~G\xda\x8f\x1d\\\x83\xf5n_k\x1e\xbd9@?(p\x97C\xb2\x1e\x0cH2\xae\x07Sq}`\xc3\xf2!\xf8b\xca\xa4\x1f\xa2\x96\xb1\xd3O\x0f\xbfJ\xfa\x91*JTV\x9dT\xa8W\x1f\xdc.\xd4\xbd\xa2\x8a6mM\xfa\xc4(#\x06w\xcd\xdd5l\xfa~\xa5TOW\xfd\xa0\xc57\x16\xd0\xfaZKW\xf5\xa5\xdb\xaf\xbeH\x8a\xcf;\x98Z\xd2\xca\xd8\xb6\xe7\x96k\x9c\x0d\xc8V\xc3\xc7[\x0cV&\x80\xf8\x90\x05.\xcd\xf5\xc1[[|.\x98\xf5\x8d\xa7\x0em\xd7]Y\xdc\x96\x13\xbdj(o\xf1vG\x88\xc5\xe3]\xd4\xb9\xa55r\xc4O\"\xf3A\xc6\x84\xa3\xb4\x8c~\x90Q\xa9\xa4\xd4\xd0\xb1I5\x94\x17|_\x07\xca\xb5\x8c8\xac\x1f?V\x13p+z\xa2\xf3*\xdc\xa2d\xd7PV\xa7\x96\x8bs\xa5dW\xf7\x89\x99*U\xbd\xba#\x80P\xb5\xa5\x9e\xeeU|h\xee=y\\'P\xe68\xe5\x13\xcb\xfa\x1a>9}Y\xdf\xbe\xa2w&\xf5\xea\x96\xaa;\xf5v\xacK%\xfbzO\x05Z\xaa9\xce\x14Xd\x17\xbb\xd2\x07\xc7T\x7f`\xb7\xf2\x97\xe8\xca/\x15H\xcb\xe5rS:\x7fU\xd1 M\xdf\x15\x18u\xc8\xc8\x01 \xc5\xbe\x96:\x89xX\xe8\xc6\x02\x85\xbb\x0b\xe9\x94Z\xaa\xf7(\x12^*\x97Wbf\xd5c\x0d(*B\xf5\xa9\xa2\xb5_]\x82\x17\xcd\xb1\xbbB\xe9$\x8fGi\x96\xe4^\xaf\xebALM\xcb\x88\xf3eq\xf7\xeb\x89\xad\x9c\x06\x19;\xbb\x89YA\xf4\xcb\xbc@i\xc6\xd4\x92\x8d\xd0\x8f\xcd\x8c\xca%l-_\x0e\xdb\x0f4\xf3\x96\xd2\xffZ-?f\x91\x1fD\x8b\xb2\xedH&h\xd6\x80\x03#<\xff\xa3\xf4\xb9\xa5\x15\xeb\xb6&\xb5\xfcW<\xf1\x98\xbc-\xa8dk\xc1\x9f\x18!d(\n\xb9\xa0\xc6|\xb5|\xb5>j\xa9\x80,\xdf'r\xb1\x16C\x9e)\xafOJi \xef\xc71\x0d\xc3K\xea}N\xeb\x1f\xa2ah4\xe3\xe7 \x0c?I\xa4\x0c\xddi\xac\x0c\xabZD[\xe46\xab%z\xbd\xb3\x1c\xed\xe9\xc5\xf66\xbaV\xb2\xd6\x85b'\xdd\xe9\xd0\xb8\xf3\xe9\xaf\x83G\x14\xe6U\xe3\xaa\x14}\n+\x11{!\xcf\xf61\x1ce\xe8g\x0eJ\x82\x0b\x96\xc9\xe5%\xbdl\xb5|\xc6o\xf5\xbeS\x7f\x14v\xd9r\xb7X\x89\n\xc1\xfa\xd8x\x1f\x07)\x04\xbe*f\xb7\xe5lv\xbd\x96\xb6-\xcb!\xd08\xa8B\x08I\xca\xd0F\x13\xfafD\x86%1LV\x97\x1ay\x1f\xf6\xf2eF6\xe8\xf8\x87<a}:/:^\x04/\xaa\xa3\xbfu\x11\xd5\xa7\x9e\xb3\"S\xa9\xea\xbb\x1c\x92K\xb7T\x92<\x906\xfd[\x93\xf2w0\x0e\xd2\x9fh\x18\xf8\xda\x97\xd4r\xa0\xd4\x8a';\x8f\x9d!\xf1\xc6~\x90\xc6!\xbdyGW\xd0\x13OZ\x05~\xf9B\x9c\xa2\xf1\xce`(\xcfevEn\\o`C\xd8\x0b\x01'\xb7\x019\x10\xf3\xb2\x1c\x97\xfb3\x1d\xc2\x88\xcf\xc1$[\xfcV'\x97Xy\x08\x96_\x0eI8NY&x\xaa\xcc\xee\xf6B\xec\xc9\xab!D\xe4_\x8eS\x81i[\xd9jC\xdaq\x02\xfc\x92*D\x0e\xa0\n1\x8e\x83!qu\xec\x04\x90{H\x1b\xb9\x131$U\x9d\xed\x93A\xa1\x8a\xb0Sx\xd0_\xb0L\x0c\xa5\x0b\xc3\xec\x94\x8b@\x0cSe@\xbf\xf1Qr\x05#\x92\x8b\x01\xbd\x0c\xd9\x85t\xf2w\x92$\xbc\x88\x96\x15\xb3d\xce\x93\x95\n +uW\x83l 0?\n\xf0 Z\xb8T\xe3a\x06\xa8xj-Z\x83\x94s\xaf\xba\xfb2\xf0\x01\x86t\xc7\x86GJ\x0d\xc9r0$W}\x8e\x13\x04Cl$\xcc\xd1\xaa\x9d\x16l#\x86\x87\xe7\xd9\xfb\xab\x88%fm\xb7l\x9aY\xddF\xcd\xd4l\x92\xf5`h\x97\xad\x92C\xd8\xc9 \xbe\xd3\xd1e\xca\x97>\x9d\xe9\xb3tl\xb2\xeb\xb6N\x05\xd2\xb8!\x91\x1e\x06b\x1eD\x99-\xa0\x07\xee\xaa^?E\xd4Vl\xa5V\x9b\x83#f\xed\xda>o=\x0e\xc6 \x97\xa4\x91K\x07u\x1c\x86\xee=7o\xd9\xf9\xa0\x96]\xadC#\xa7\n\xdd\xf0\xc1(Y/`2\ne\xaa\xc2\xc2\x83\x016\xbeV\xba\xb2\xc9bo\xed\x808\xa2\xd2\xeb;\x0fu\xdbZ\x0dn\xb9\x1ao\xb5\xf8\x8aq\xd6\xe3f\xa7IZ4_\x83\x12\x83 \x8a\xb8@|.\x96\xe1v,\x87\xa0\xc7\n\x08\xf4\xa4\x07\xe5<\x0f\x86\x15\xc1~\xa1\xaan\xce4\x90\x0543&\xdc\xb5 \x03\xd7\xca\xe5\xbd'\x90\xb78\xecQ\xcf\x18\xa4\xa1flp0H0,b\x08\xe6\xcd\x81\x07a|\x95|\x02i8\xdc\"x\xe3\x93\xb7\x1f\xce~m\xbf>\xb2,hI\x85\xcc\x11\x15\xdeD/\x92*\x81\xbe\x0cB\xdf\xa0\xd2\xb1(\xde\xc8z\xec\x1f\xd2\x8a\x187\xb3\x15\xb1\x9f\xa5\x03\xbd>\xbfi\xf4+\xa2E\xf0\x96ov\\\x02d\x8dmc\x97\xdcII\xbf\x87q\x8c\x0f\x1e\x90\xad\xac\x8d\xa7\xecs\x87\xd0\xc1\x92\xee\x0c\xdb\xef4\xf4S\xb9\xb8, \xbam\xe2\xa0mw\x07\x1d\x01\x05\x08\xe8w\x07\xd1\x9a\x7ff\xff\x99\xd3\xc4g\xbe\xe6\xa9A\x05\x00\xadU\x9a\x93e-!E )\xac\xd6\xf1*\xda\x82a\xd9\xb6\x08\xe8i51\xbf\x05\x1c\xd3W\xba\xa5\xd8\xa2&\xe1\xf9\xf6\x14r%\xdb&\xe3h\x95\x03\xe1\x92\x16\\\xb8e\x93\xb4\x84:p\x99\x8dE\xec\xb3\xe5/V4\xfd\xac\x10U\x9f\xed\xben3\xa7\x04\x1eVuM\xcc\xa3%\xec\x07\xf8\xdb-C \xc4v\xfc\x8e\xf9\xc1\xd6O5~N6 \xd1,9o\x0d`c\xf5\x14\x87\x8dKU\xd2\xb2\xf9\xd0\x18\xe3j=\xf2\xf4\x99\xb3Q\x83\x8c\x93\xa5w\xabL=\xfb\x8d\xa4AM\xca\xc6>\xa5\x81t3[6\x8f\xe8\xe8\x0c\x8d\x1c\x19\xa8\xa1\x0d\xa1VC\xf0 \\\xb5\xf2rpl\xac\xb6\x82\xa5~\xba9K=\x90\x1f\xc2j\xd5B\x8f\xfd\xcdj\x15g\xbe\x1d\x89\x96.w\xbf\x02\xdf\xdb{\x0f\x13\x83\x1d\xeb\xb5n\x80`7;\xd4_\xab\x0f\xf3\x81\xd1H\xaa_X\xf7\xaf~]Q\xbd\xef{\xe5\xceM\xa1\x9e\xe8T\x1b9\xd9\x86\x84\x95\xdeCyP\x011\xc7@I\xaa\x9f\xaa\xa4b\x1f\xe4\xd9\xf0z\xfe\x8e\x89\x0dJ\x93\x9b>\xfb\xb2P\x8e\xc1\xdayH\xe6ME\x80\xcc\xb0\x14\xab\xc2\x0f\xcb\xfb\x11M\xc7\x97\xce\xa8\x0f\xac\xa7\xe1\x97/\xf6\x83\xee\x10\x1f\xa3\xf2;\xd5\xd9jO\xad\\;\x99M\x94 \xb6\x1b\x95>SPk z\x0f\xd0a\xfdI{\xe2\xb8\xc8\xf4\x97 0\xc2\xde\xa6\xa2\xbb\x16\x16i\x08\xbc\xcc\xd6\xa4m1\x17D\xc3\x81\x0c\xd2\x9b\x83\x11\xb8N\x9dJ\xd7[jF\xab\xf7\x04\xc1@\xd5o\xd3\xbeX+\xc7&\x9dW\x11\x10\xe2\xd8\xe6\x1d\x88\xc0\xd5#X\xe5\x03\xeeW\x9f\x1cJ\x17\x98\xb4Ji~\x94\xeb\x1b\xbc\xa6td\xbb\x9e=\xa6\xd9Z\x07\xfe7\xfb]\xe1r\xa1\xb0\xbdGq\x8bw(\xeb\xf6\x80\xf8h\xe3t\xc9\xf3\xb0$K\x8b\xad\x13\xc3\xc4\xa0\xb9\xa25\xf3\xa1\x8c\x82\xacg\xb5\"\n?8 \xd2\x8c\x03\xda\xe5\xbb\xe1\x90x\xb0\xac\xb6|\xf1E\xd1\xa3!\x99\x03\x9f\xde\xbe{\x86$&\x87\x9a7\xeb$e\x01\x91\xd5\xdb\x1aI\x9d\x19\xb8(ab\x17\x81\x95 \xb6\xd5\xc57\x9b\xb4m0$\xb4\x10\xea{\xe2E\xcb$\xe6Cc\xe5\x1e`\xa6=-$\x909\xbb=\xd5O*|Y\x0f)My,5\xd0f\x1fb \xe1,\xect\x93\xb5\x08\xc6m \xcc\xccVii\x11\xb5]dHGo\x0f\x1e\x90\x89r\xa4+\x1d\xc6\x14\x85\x93\xd9\x8e\x85p6\x88\xb1\x03E\xb2\x08\xfc#\n\x88sF~T\xb9\x84\x13\x19\x132%;\xcfI^\xf1\xee\x96\xb7\xfb\xc5^\x1bf\xd9v\xb2\x89\xbbtH\x1c=\xe5\xa6'\xc2\x94\x1c\x92T\xea\xd8H\x8dE\xb9\x1c\xa6$\xbd\x05e\x85\xf8\xbf\xc1\x96#\xbakn\xa1y\xad\xaf\x87\x87\xda\x13A\xdfe*\xb0\xf1\x0f2d\x9b\x1bV\xee?d[,8\xd3#\xda\xe3O\xa8%\x809\xbc(\xf4\x02\xbe:\n\x91\xe0\x90\x845\x19\x81D \xe07\x0b\xc9(\xee\x03p\xaa\xc0\xd4\xe6\xa8\xa0\x8a\xb0@\x15\xd9P\xb7E\xe2\x95\xd0@\x15I\x15\xef}\xac\xcb\x06\\\x18\xe8\xa1\xec#o\xbf2\xc2\x86L\nO\xc2B\xe9Ut\xbf\x1fv\xb24\xe8V\x18\xaa).iEU\xd1m\xc8g\xbb,\xb7\x1d\xc5\xd9\xa4\xd7s\xe2.]\x10\x95\x0f0\xf2URb\xacMP\x9a\xd9\xa4\xc8\x1d\xca\xac\x1a5U%\xa16{Y\xf1 r\xaah\x88\xbb@\xd7OS\x92\x8d\xb9\xdb\xd6Ou\x1a\xbb\xa5\xd9d\x03\x896\xef'\xd1&-\xb2\xba\xd6\x90\xac\x9a\x18\xc4\xc4\xdd\xc5\xfc\x95:1fJ\xcd{E\xdbT\x8bm\xda\xddp8\x0d\xc5\xf0\xfd\x1cdK\xe9]@\x1c\x01!\xca\xa2\x91\xdeR/\xb4\xe2\xfe\x9c+\x1d\xe3-c\x1b\xd8\xd9Y\xf7\x9fy\xb9\xfb>i\x8az\xda0\x08\xeb\xc9\xcb\x14\xc62\xb2\x11\xee\xddZ\xdc\xb7q]4P\x95\x14\x16+|\xd1F2\xe4c\x85\xf4T\xa7[VS\xeb\x95\xafx\xba\xaf\xb8\xd0iA\x06N?_\xc9<\x88h\x18v}\xd9\xec\x05\xca\xf5\xea\xa7\xd5\xf9\xec\xad\xdb\xdf.*\xd5\xdaA\xcc\xd0\x0eb\xa8v\x10+\xb5\x83\x9em\xc8\x16\x0f\xfbI\xb2h\x96Qo\xf9\x91\xcdos\xa2.X\xf6!\xbf\x0c\x03\xafp\x94f\xe9\xb9\xe6\xf2#\xcd\xe5Ov\xda\x18w\x194\xa7w\xedn\xa4\x14\x99\x0e\x0e\x80=\xd3\xaf\xe4\x8f\xaf@I\x8b\xb7\x81\x0c\x04\xd7\xcbv\xc7g\xc8\x98\xd8\x06D\x05\xd5\xb3\x8d\x07||\xc6\xce\xfb|W\xcdl\xdf\x8d\x7f;\xe1s\xf3~\x10\xcc!*)\xe3B9\x86[\xdcQ\x15\xa8\xae\xa6\xae\xa6l+j\xa9\xacPbS\xf9\xfa\xb5\xaf@\xaa1\xb0\x1b\x8fQ/\xcc\x8d!L\xedc\x02\x96\xf0\xb4\xdf\xa6\xb2\x93\x19\x88\xcd\xaa\xc56R*X\xdd\xc9\x96a\x82\xd7l\x1d9\xcd\xb2no\x17\xc9_\xef\xde\n\x94\xb1<\xbdY]rp\xc7*\x7f\x8d\x057\\ys\x9dD\x8c\xdc\x98\xc9U\xed\x00\xba{\xb23\xd9\xd9\xc3{\x95\xfc\xb3Z*\xa3s\xf2\xa4:\xed\xe0W\xf3\x7f\xffo\x9dy\xeb8\xcc*\x04\x0c\xa8\xe6\xcd\x92s\xd8=3~^\xc3|\xe0\xb3\x1dkmy\x01X\x0f\x0cp\xab\x91i\xb1\xb2\x95V\xb2\xcf\x1b\x9d\x90F4\x9b\x19\xc7\xf2\x0e%;0_\x12CR\\Y\x19\xc1\x12\xda\xf6?\x18/\xb53^\x86^\x0e\xb7\x9a9\xed\x0c\xa5\xa9md\x1a\xdf\xba\\\xda\xddvG\xb8\xaa\x0e\xd2\xbf\xca\x04\xd7\x16\xdc\xd5r\xda\xe3\x96\xb4\x08\x02m\xbbS\xd6(\xc5\xd57@-\x8e\xd3\xbf\x891\x17\x1eb\xe4I\xdd3\xba\x0e1\xf2\x14\xb1\xe6*\xcd\xad\xf6'\x0d\x07\xa79x\xa4\xaa~\xbai\xd9\xacd#\xd5S\xabb\x1e_\xfc.6E\xd8D\x12p>%L9\x8f\x0d~g\x10\xef\x97\xaa\x1a\x87:_\x90\xaag\xfc4\xa3Y\xe0I\x1e\xca\x10\x0f\xe5);6\xa3\x19\x9b\xf2\xd0\xbc\xb4NP\xea\xe5\xb4\xd5k{\xd3\xdd\xa9\xe0\xe2\xcb6)\xe5\x8a\xb4\xe3\xb4V\x8b\xa4\xea!\xa8v\xac6EN\xfd*M;*5\x0c2\xfaUX\x1f\xa8\xb6\xfa}\xa6\xa9\xa8\xda\xccW\xc1J\xed\xcfV0\xad\xe6\xd9\xb2\x8a\nP7,\x0d \xc03\xaa7\x18\x12>\xa6\xbe\xff\x81\xf30\x88\x16g\xdc\x0dk\x18\xe1^\x1c \xef\xee>2\x10\xbfD\xfa&\x14o#@\x8a\xb5\xcf\x9a\xe7\x0d\xa9\xc5\xb8o\xe1Q@\x15\xc6eD\xd3|p.\x0eH\xb6L\xf8\x15\xacjA\xd8I\xfd_\xe7\x98F\x11\xcf\x88\xc0<\x84\x12/\xa4iJhJh\xf1%\x07\xc1\xee\xea\xd6\xb8\xd0\xb5\xca\xca%/\xce\x83\xea\x92\xa8\xce\xa1\xa6\x9bM\xf3\x14X\xd3\xac\xdb\xe6G\x9b\xbb\xd4\x10\xfb\xb0R\x9dB5Z\x81\xaa\x8e\xe9-\xf2\x97z7\xc6A\xfa:\xaa`\x17\xe0\xdc\xea\xb5\xe3\xb2\x19\xbcE\xd5k\xb2\xf6\x9en\xd8\x1c\xa3\xea\xba\xc3w\xbc-\xb5\x0b\xa1\xceU\xb5a{\xcc\xea\xdd\xa6\x1e\n\xde\xa6S\x96}\xab\xf6\xe8\xaa-m)1\x88\xc9a\x9b\xa8\x81\xdf\x07j\xb0\x9c\xc5\xfb\xb6\xb3\x189\x8a{\xac\x1a\xe4\x0e\xb5f\x87\xfa\x8e\xfbu\xa5\xc5[\xdb\xad\xfa|%\xf5\n\xab\x83jbbjb\xe2j\xa3\xbb\xcd-\xad\xbeb\xa8\xbc\xa0\x08\xfcc@\x1e\xc9\xf6v\x93\xf8\xaa6\x91\xa2\x9d\xdd\xd4\xf0R\x0b\xec\x1d\x02\xec\xd9\x88\xad\xe2\xecfJ B\xa5\xf1\xb9m\xe2\x10D\x0bW\xfa!\xa8\x93 m\x14|*\xfb\xc9\xaf\"\x96\xbc\xe4^\x0e\x12\x0e\xe55\x89\xaf@HfSb\xd06\x0b\xe38a\x1e\xf5\x96\xacP\xe5\x967P\xdcEn1\x9b\xf2\xc0\x9aT\xb7FX\x1d\xca0^\xceo\xd7{\xde\xd6h$\xc6!\x17\xbd\x1f\x8d~\xbb\xdecNm\xaf\xd5\xce\x02\xab\x8eW\xf3\xf0\xef\xaf\xc4^t\xdb\x1a\x04\xba\xadQ-\xda\xea(\x930\xce\xa3\xea\xd8\xd6j/qK\x8d\xda\xa0\xf7\x82R&\x15b\x03\x0f\x1b\xc0Q4\xea\x14\xb8\xc0\x01\xe7\x19J\xd0\xba\x07\xd1]j\x99\x99\x91Y]k\x86\x07\x0eP.\x06\x86\xf39\xe1\xcfI3\x80\x1d\x89\xea\x9b\xb4\x12\xb5{G\x1a\x03e\xcf }\x0e\xbfh\xb5t\x80\x96~N\"2\"\x01\xf9\x9e\xec<\x1f\x80\xbc\x8bU\xaf\x91\xa2\xd1\x08-\x16\x90\x11\x89T1@\x04\xd5b\x01ZL\xef\xfe\xe89\xc9G\xa3\xe7v^\x1dB\x02\xb71\x8dHK\x1b\xad\xb0\xac$R\x15\xa5\xff\xa9 a\xae\xb3j\x0b\x83\xf4(\xf2XZ\xa5\xc8m\xa7\xacm\x89<n[\"\x8f1\xc1\xb6\x1a\xf3\x0c\x1d1R8y:\xa8\xb0\xdaV\xfd\xa9\xd6q\"mH\xacA:\xd6q\xcc\x1b~\xc5\xc49\xb0Z\xf1\xa8\x1c)\xde\x80\x93\x1fF\xa4\xb1m\x84\xabm<\x9f\xc0m\x85}\xe6\xab_\xcf\x12\xbafI\xca\xce\xae\xf8\x87%M\x11\xd5\x10\xac \xa5b\xfbP\xc5QxN\xd8\xf3\x81v\xe9/H\xf9\xc6\x92\xb4\xccc\x02;[k\xe0$\xa3\x91\xdeE.\x9f%\xe7C\xe2x4\xce\xf2D\x06\x01\xb7-\x86D\xc6jL\xc8\x0b\xb3\xae\xedm\xa3\x9a\xcb\xfc\xf22T\xb5\xf4\x19\x90\x13A\x07\xbcatm\xd3\x96AUe*jH\xf2.\x80\x1c\x168S9d\xd4b\x0e\xe5\xd3\x0b\x84W\xf4\xf9\x80\xe4\x9b\x8f\xde\xba\x0c\x0d\"*\x94\x17\x02E\x85a\x19\xb4\xa5\xb1\xcc-\x15\xa6r$S\xf2\x82\xe4\xc5H\xa6b$#7\x9f\xa5\xd5\x91\xac;f\xa9\xd4\x12\x96\xc5\x8bI\x8d\xdcP\xd6aLj`=\xe3\xe0\xd7\xdd\xcf4\x8cL\xb6\x06\xf9\xab{\xf4\xa18U\x9d\xe3T\xb5\xf4?4y\\w\xe2\x13V\xfd\x02=\x1etE\xbb\xb5\x10\xdf\x85j\x83\x0c\x7f{&\xf5\x8dd\x08\xbc\xdb\x12\xe5\x05\xd1\xad\x13*\xbe)K\xff5!O\x83h\xa1\xc8DR\xb7\x15\x82T\xf1\xd9\x14\xbb#6=\x16\xf2\xaa4\xe5\xdehx\xde\xa0\xe1qQu`\xd0\xdbRmA\x06\xabo!\xb2\xab\x03\xc5m\xa4\xfff\xb4x\x88\xd0\xe2v\xe1\xba'\xf5\xdd*\xa4z\xd0\xa2\x055G\xe0\x1d\xf2\xb0\xec6q:\x14\x8e\xa9\xab\xcb\xeb\xd6\xbdJ\xe8b\xd5fI\xabU\x13\xc7R\xac\x01\xeeP\xe3!\xa1\xaeW\xea\x02\x1b+\x174\xaa\xeb\xa0\xfa\xa3\x02\xc2\xb0\x16-\x8b\x81^q\xb3\xdc\\$\xe7\x18wb\xb8\xf4\xa8\xaf\xe1\xf9\x90\xc4\x8d\x9e4\xcf{1]\xbe\x0cqZoLs \xba8\x1c\xbf\xc6\xe0\x04\x06\x83C\xb6\x89/^Uve\xbe\xee\xc6\x03\xb5\xddK0\xc3\x04\xa3\x8arl\xeb\xd7\x86\x9e\xf0e\xa1)z\x89\xa7p\x18\xb8\x1f1\xdaa\x0c\xb1\xa5\x0d\xa4hG\x05\x19Z\xdc\x1b\x11\xe3T\x80R\xa6\x1a^\x8b\x92W\xa0\xd5\xa8^\xb20X\x05\x19\xf3\xc5w\xdcd\xb6s>$\xc9lr\xbe\x89\x96W\xdb\xdc\xf5gIk\xea\n\x06\xea\xb5\x88\x08\xda8\x07i\xe8\x88\xec\x0e\xbcS\x05\xd1\x01*\xf1v\xa6x\x1c\xb1\xeb\xec4\xb8\x0c\x83h\xf1\xdcJ\xa7\x93\xda\xc5X\xa6\x14Z\x9e\x14\xd6q\x12\xe9\x0e\x86d_2A\xe3H\xab)>x@j\xf8\xcc\x80\x90\x11\x0d[\xbeJ\xcaE\\\xc7 \x16c-\xfd\xb4G\xe0\xb6;\xd3\x94\x04\x981,=\x17\x8d\x9e:A\xe1U\x0fx\x1c\xab\x9d[\xcedVWa\xba\x9b\xa8\xe2vD\x81\xc0\xd0\xb7\x15q\xdc\xcb\x85\x8aEj\xfa\x08'\x07\xf1\x1bL\x19h\xb1:x\x16\xef\xcb\xfafqJh\xf3\xb0\x15\x83\xd7\xb5\xd7 (\x02\x07)\xd8\xce\x04\xd1B\x85M\xb4\xb8\xa0k\x9b_Qfv\xdb6\xf2\xf1<\xcc\xd3%\xb4\x82)-\xf4T\xaa\xa1\xf3\x86\x04<?\xc7/`\xeb\xfd\x83Ub\xbd\x7f-\xd7A\xf1\xaby\x0fW\xad\xf0.\xd7\xa5\xa9u\x15V\x97\x11\x18\x97\xb1+Rs\xab?\xc7\x17@}\xde\xa6dk\xd2\x1c\xe4\xcb\xca\xb0\xde\xd68\x03\xb4\xa1\x1b_l%\xd4,+\x0bdg\x87\xa4\xb0\x92\xd0\x1f\x9f\x12O\xfb\xc1\x11MS{\xbd\x02\xd3\xb5&\xcb\xe6T\xb4' \xf5\xdbl\xed\xbd\xa7X\xd0\xd5\xc8m\xf8n\x95[\xbb\xa1\xcb\xd0\xca\xe95\xf0F\xa8\xd8\xc8z\xba'\xd9H\xb8\xcem\xee\x8dy\x93 T2\xae\xaa\x0c\x00\x11IV\xe7\xb7\xfddf\x83q\x0c\x85DN\xb5\xa0V\x1a\x00+x\xb1\xe7\xd3B\x1c\xf5JE\x9dp+qZ\x9b\x9d\x88Q\x1a\x136\xb9v\x0f\xa1\xec\x0b\xf4\xc9\x15\xd1,X\xb3\x93u\xf5\xee\x84*A\x19 \xac\xf3\xd6O\xfav\xcd\xaf\xd0ef\xfd\x08\xaf\x13\xe9q\xb2\xf7\xb7Y(iR\x98>Gv%+\xbb!e0\xc9`\x08\x85A\x17m\xee\xd6<\x91}%W\xcb d\xc4\xadKT\x8cX\x82 \x97\xe1\xe4E\xa5n-b\xe1 \xa1\x81\xc5Qd\xce\xf8\xf9\x90,\xc7\xcaC\xd7\x99\x9a\x03\x97U\xa6C:\xb53\x87j\xd8\x18;\x1c\x17\xc7v.\xde\xa6\xa9\xd1\x18&lu\x18$Du\x81\x18\x19\xf5\x01h\xde\x19\x96M\x06n\xb1\xa2\xaa!\xf8\xc5qv\xc5\x8f\x92\x05\xf0\xb5\"\xa7\xe2dx\xad\x1c\xefW\x1b|\xc1\"z\x192\x7f*0d5\xa7:\xc4X\xdc\x95\x9f_\xbf{\xf9\xfe\xe7\x8b\x1f\x8f\xde\xbd|s2%\xc1\xd8\xa3\xd1\xa7\x94\xbd|\xff\x96\x1c\x92\xab \xf2\xf9\x15\xc1\xca\xa5,\xfb\xb1Vy\xbb\xe4\xa81\xe1bQT\xc7\xa6\xf1\x85\x13\xdd\xb1\xce\xaa\xd5\x10\x88Sb\xab\xb5\xd6 mV\xdar\xfc\x96U\xb7U\x9a%4\xfeAJ\x1faQ\xf4\x13V\xeb\xdb\x0drH\xf8X\x06\xf0W\xb1\x89\x96\xa0Z-\x0e@\xa8N\x124r\x99\xb1\x81\x16\xd7v5\xe8X\x892o\xdb\"%\n\xbd\xaf&\xadx\x14d<9\xf5\x12\x1e\xca\x88\xe8]\xd3\xaaQf;\x94x\x98\xeb\xb9r\xad\"\x8e\x9b\xbeV\xdb\xda$<\x8a\xc1\x97U\x0c\x89\x93B#\x1dD\x8d\xa2\x8aN\xcc\x11\xe9)\xd3(\x17T\x1b\xd1$0f\x0c\x86\x06\x02\x05\xb4\xc6\xeei\xb7\xcfI\xc7U\"\xce\xf5\xedr\x81\x1eF7\xf18a!\xa3)so+\\(\xde,$\xd7\x12RoEr\xf5S\xc1.\xc4`?K\xe4\x067\x1d\x86\x0eY\x91q\x88\x8c\x03\xc4\xc5\x8a\xe9\x82\xfd\xf2~>O\x99\x0c\xd82\xf6\xb5\xc6\x82\xfe\xa1m4\xe4:z\xc3\xe6\x88\x00\xf5FW\xf5\xeb\x06U\x9d\xf1\xaaX\xf0+\xc1\x82\xceC+;\xbfm\xa9\xf1O\xd5_\xb7\x9a\x89\x92\xf8\xdd\xaf3\xaa\xea\x9acb!~\x1b\xd7\"\xed\x81\x16\xf6\x9e\xe0\x91\x16&\x8f\xeb\xf5\x84\n\xbe\xde\x1e\x0f\xa7\x97q\xbe\xc9\x10B\xd0q\x10\xfd7\x83qi\x8e\xef\xcb\xf7ou\xfc\x8d)I\xda OVqvcT\x9b\xb7\x02\x0b<\xf3!\xcc\x17A\xf4c~)\xb8\xdf~\xc0\x9f\xb2 L\xc5\xd9\xde\x05~\xb2\n\xb2\x8c%S\xf0\x9bg\x05\xfd\x11t\x88\x8a&\x87m\xb0\x05\xef\xe8\x95P\xd5\xf5\xf6/\xe0\xbc\x1e\xd7\x99\xa6\x00g\xb1\xa8e-\xa9\xb5\xf7\xb4\x9e\x9eV\xd4\xc8'\x8f\x9e\xd6\xd5\xc8\x15\x17\xb6[\xff\xbe\xd7-\x03\x01\x8e\xe0\x94\x85r\x08_G\x82\xd9\xa5\xf8\x98+\xd9H>N\x80\x16eE\xa9\xea\xc0c\xf1\xb9\xcd/v\xca\x7f\xb4\xbc\x97\x8e\x0b\xa2\xaa\xc3&\x92\x8eK\xa2\xce\x85X\xe3\xbd\x0c\xad\xea\x02)+\x1dP\xa9\x1f \x94S\x17D\xddu\x04\x94\xa4\xa8\xa2\xb0.F\x9da\xc6\xad=:\xb6\xd1w\"\x9e\x05\xf3\x9b\xa30\xc4\xbeU\xed(*\xf8B\x98\xfbv\xc9W\xbb\xe5Aa^Pk'\xa8Q\x94\x94Ldx\x99D\x8c\x14\x0c-\xd5\xca\x86\x8e\xef\xd5\x06\xc1\xab\xad\x83z\xc5\xb7\xb2A\xc0:\xdf\xf1\x9d\x8d\xcd\x12Z)l\x9b\x81\xc1&\x0d\xae\xf8\xa8n\xfb\x18b\xa6`W\x18hl\x11\xed\xca\xba\xa1\xc6]y\xed\xcd\xae\xf3\x82,\xc5>7\xb0.\xcc&\xcfR.\xbf\x12\x91%\xee\xdc\x14)\xa4C\x12\x0f\x86$\xa8\xf2\xee\xf3\xba\xe1\x15\x14\xbf\xe3\x01\xd6\x90\x05*]\xea\xddz\xdc\xa7@\x1dl{\xa8\x18\x8f\xb6h)\x94\xd78\xdap[*\xa8%\x96\x8d\x98KO\xe6\x85\x90\xe0\xc1\x03\xe2\xa4\xfa\x80\x01\x85/M\xb9\x8a\xac-\xd71\x8f-\xc8W\x8cZ\xf3\xe8l\xce\xeb\x82e\x928N\xa7$'\x87=N\x00\xcd3\x16tt\xd16u}\xff\x91F\x8b\xd6\xa0,`\xdb1\xce\xd8u\xa6d8vP\xb8\xb3\x1d\xfby\x1c\x06\x1e\xcd\xac\xd7\xb5 \x84\xaa?\xe3\n\xcb\x9dI\xb7\xa6C\x92\xc8\xd3\xca\xff\x00\xbb\xcd9\x89|@\xaaI\xe6\xd8\xb9=-rK\xcc\x16\xb6\x9e\xb9-\xbc\xa1\xf8VC\xed\xcf|X\xe4OA\x03\xa5\xe9\xf7\x95\xe0\xcc\x1e\xe9\xc2\x07\xc4\x98$\xb9\x12*\x84\x8dX4H\xb2mh\xe5-\xb1`\x9dv\xd4-k\"\xe6\x174mz\x86\x05\x95\xf3M#o\xc9!\xdep\xd7tKH\xb9,\xed\xb0\xd2\xb7\xc1\x9c{y\xda^iP\x02v\xd5\x99k\x7f \xb0\x86\x8f2\xd7\xe6\x91\xb0]$\x90\x8fa\xe2\x0b+\x80\xe2\xeazH\xf21\x8b\xfcf\x06>\xf9:XC\x9f\xd8=\xa8\x07\x00\x82.!b\x98\x04P\xb723\xf5\xd1\xaf\x8cpu\x14\x07\xe4\x90\xec\x10A\x04g\xfc\x14\xd40\xdcA\xe7~\x0eA\xf2\xee\x85<\xd2h\x02\x1f\xdfPa\x15\xf1]p\x06\x12e)\xec\xe8P\xedh\xb7>\xc6C=\xea\xaau\xf6\xe5\xe8)\x0d\xa7z\xf9\xd0,/^\xcd\x99R\xef\xd5\xae\x87\x9bt]\xf0\xbb\x1e\xd9&-\xee+c\x13\xadV\x90)\xde\x9bX\x0c\x06\xe03W\xb94\x8b\xf5\xf0p\xbb\x03#\xad\xd2\x14\x8f=\x1e\x864N\x99%`k_\xf4\xe6\x8bs\x83L\x89\xd7\x81\xe6\x04\x9c'\xd0W\xcfu\x8a\x90\xf3\xa9\xf5\xb8\xear\xb52\xd4\n\xcb]\xe7V\xf7icX\xbagbQ\x90CIL\x00\xf2\x801!\xd3\xe2\xd7\xf7\x05\x8c+\x01X\xe4\x0f\x15\xa2\x03\x08\xf0Zi\x94\xd5\x99,\xf2\xc1\xd4\x14?\xd9d\xba\x9c{\xc7[\xd2\x84z\x19K\x1ci\x19\xce[\x8e=^\x14\x16\xcb\xa4R4!\xa3\xa2\xb8\x18\x1a\x8c\xeb!=\x84\xb0D\x1d\x1b\xc8)\xd3\x86\xc8\xf4Q\x81\x1eN\xf6\xa5E\xd4\xb9\xc1f\x81;8\xef\xdc\x86DI\x1d\xde\xd2l9^\x05\x91[\x0e{\xc7G\xf2\xaa\x93\x03=\xad\x94L\xcd\xca\xe4\xf4\xb6\xa9\x95\x89\x035\x1a\xb3\xebL\x94\x7f\xf0\x80P\xf2=i\x0d\xc7C\x0c|\xdd\xe2\xa0\x8d\xa86Ri\xff\x92Z\x01\xed\x9aJZ9\x15\xb4\xd6i\xc7xx\x1a\xd0f7FTo\xc1\xe9\x87\xd7\xa7\x87\xf3\x0d\x11\xa0~\xe6%\"\x0c\xe1L\x15\xe8\x9aK\\=\x04\xc7Eb\xc1\x1f\x85!\xd4\x96\xba\x10/\xe8{\xc0 n$\xb8\x0c\xf9\x959\x00\xcb\x99q=U\x91\xa7+\x82\x8d:\xd7\x08\xb6\x91-\x8a\x1a5\xe1\xc2{b\x1d\xfeN\xb1>.\xc5\x93\xb3\xbc\x11\x13T$\x17\xdcKbWB\x00\xe1\xfdx\x1e$\xa9t\x91_(\"\x18I\x95\x82\x9a\xdb)\x12\xb1\xdb{n\xff\xa0\xdd\x16\xca\xd4\xa0+\xf5\x1a+\xea\x86\x8d\x82\xb2\xad\xa5\xeaCuH\xff\xd4\xfc\xd5\xdb\xb3G\xc5`-\x01\x9cl\x18\x9f\xed<'\x91\xb5'{\x92\x13,\x88\xbf6\x1cJ\xc1i\xed6\x89\x80\x1bQ\xa4\x90Fr$ /\x94\xea$%\xdf\x9b\x86b\xf6\xad\x16\x81\x96)\"\xd3\xd4\x8f\\\xceS\x92\x91\x11\x12\xa6\x8a\x90FHi\xfd\x04\x851b\x05\xb8\x91\"\x07\x8c\xbb\xd1\xe0\x9b\x9a\x7f\xec\xef\xedX\x8c\xb0\x8be(\xd5\x9c,\xfc\xfa\x96b{\xb6\"\xb0\x01WVe\x11$%n&\x13\x137\x1a\x14\xfaR\xc6:\x13\xb8\xc2\xf1$\xf1\x98*\xbb\xb6C\x88f#\x93D\xb1)\xd9\xda\x92\xf1mhR(\xda\x7f\xe0i\xa0\xb9\xb4\xad-w\xf2\x84< V 1\x84\x0d\x15\x8d;\x0f\xdb\xa4c\xd8\xac\x17~\x80F\x1e< {\xe0\xe9\xa6\xc9\xdb\xdc\xa1}\xfd\xda\xa1\xb9^\x97\x899\x19W\xec+\xe0\xf2\x8fL\x8b\xe3e0\xf6\xd9\x9c\xe6a\xf6S\xc0\xaeD\xa6$;Pd\xb6\xe5nI\x17\x83\x16_Qc0\xba9\xac\xder\xaa\xd4)\xeak \x84:\x118D\xaf\xa4W\x95\x9c\xa5v{\x13\xe0\x1d]\xb1\xfb\x9dwg\x99e\xf1\xf4\xe1\xc3\xab\xab\xab\xf1\xd5\xde\x98'\x8b\x87\x93g\xcf\x9e=\xbc\x0e\x83\xe8\xb3\xd3\x94\x90!\xf0\xbf\xbc}#\xca\xec?\x8c\xe8\x8a\xa51\xf5\x98\xd3\x94\xa05\xf1\x12\xf5<\x16e?\xb2`\xb1\xcc\xa6\xc4\x91\xaf\xa3%\xbc#>\x9a\xa8\xe7\xe5\xab<\x04O\xd6;H\xb6\xef\x07Y\xb0\xb6d\x86\xc1\"\x12s\xff\x03MY\x18DL|O\xa7\x8d.U\"\xf6\xd10\xe4W\x1f\x19O|\x96@\x99\xf2\x15\x85\x8e\x97\xf4\x92e\x81\x87\xb7b\x15\x87A\x96\xfb\x966&\xf42\xf0^\xf1d%>\x04/\xa39OV\xd8wR\x0fn\x07\xb1Z\xb2, .\xf3\x8cI7\x88N\xe5\x1d\xabJ\xe7\x8b\xa5g\xc2\x8bw\x0c>\xcf\xf8G\x06\xc6\x92\x02\xba|\xc3`\x7f\x0fVy\xb6D\xdb)\xc6\xfcU\xc2\xfe\x91\xb3\xc8\xbb\x99\x12\xa7\xf2\x8e\xd4%\xf2?$|\x1e\x84LA\xab7\x0b\xac\x98\xcf\xd3e0\xcf\x14\xb4x\x1f\xa5\"\x01+p\xc9\xaf\xf1V\xb2E\x10\xe19\x01M\xf1\x8c\x1b4\xd9\xa3\xa1\xf7\x16\x0e`G\xffD\x1a\xe2\xd1\xb8\xd8\x0f\x1e\x8d\xed\x9b\xc1\x0b\x83\x18\xffN\x18\xc4\x1f\xa8\x18tG\xfc\x1c\xc54[Z\xca\x7f\xcca,\x01,\xc9\xd1\x91\xd4\xb5}\x8a\x02\xc1w;\x95w\x0c\x9e\x87<y\x1de,\x89y\x087\xa8p\x18\x86<\x19\x05fj\xaf\xa2\xaf\x820\x83['\xac\x86\xd1\\\xe6\xdaj*\xd7\x8a,\x1c[W\x0b\xe4K\xef\xe8\x10\xe3U\x15Ht\nZ\x04\x88\xb1S/ \xe2Lm\x9cFZK\xb9\xec&d\xb5b: +\x95')O\xf0\xd9\xc6\x97\xad\x87\xafA\x1fOe\x1e\x0bYb\xc3\xab>\xb3#\x1b?\x98\xcf\xf3\x94\x1ds\xe9\xabsJ\x9cZ\n\xd2\x1b?H$go\xa9\x11\xbc\x9eZ\xf2\xd6\x81m |\xbe\n\"Z\xc1\xef:\xa9\x0d\xbd\xfb\xb9\xa5:|\\}\xbca\xcc_0\xb5\xb7\xf5O\xe4[,dkj\xed\xb8\xd4[\xfb\x81z\x9f\x17 \xcf#_\xd4\x05I\xa3\xcb\"\x0d\xab4\xc2'U\xd0L\x91m\xda\x04\x9b\x9bD4\xfc\xc8R\x9e'\x1eK?\xb2\x7f\xe4A\xc2\xe0\xa3\xb6<\xe4\xe3\xf3 \x0c\xd1\x0f\x88\x8c\xf71\xf5\x02\xf0k#\xdeF\\\xbeZjQ\xa8\x08 -\xa8H\xeew\xdb\xe72\x96|d\xa9\xacB\xfe\xb6V\xa1q\x99\xf1\x86\xc1\x86\x9c\xfb\xc7\x02\x13\x08P\xf12\x02\xbc`\x035\xba\x0b\xc0-\xfd\xe5^\x9e\x8a\x99\xc5\xfb\xc2\xa3\xec\x15]\x05!T\xc5\xa3l4\x877\xb4\xa2(;\x05]\n \x98\x06\xbf\xa3\x03\xa7\xc0\x8e\xfc\xff\xce\xd3\xcc\x04\x1eQH\xb2\x95\xc9\x12\x96y\xcb\xa2\x80|\xb5\x02\xdf\x84eC\xc4\x8b\x05\xf0'\x9a\x04\x12U\x00\xe8Z\xbeZ\x80\x7f\xd6g!\xc0^\xd9\x0eC\xa9\xae\x83\x0fg\xc2Wx\x06\xbe\xc3\xe7\xf8\x0e_L\xf0\xe4]<9\xbc\x89\x97\x8a\xfe\x82\xdf\xa3\x08'\xbe \xf3}\x12\xb0(\x03\xcc\xf0#O\x82\xdf\x05\x9f\x18\x16%y\x99;Z\x16\xd9=\xea\xfa\x89%Y\xe0YjZ\xabL[=\xe0\xb8\xdb\xd1?1\xa8\x84\xfa\xa2:\xd0\x12\x99K\x9a\xb5\x91\xd6RNo\xc2\xca;\x02\xbf\xa4\xd1\x02Ned\x98a8\x8e\xfc\xf5/S\xe2\xc0\xef\x11\xf5\xd7\xa3k\xac\x16\x91\xfb> \x16AT\x02sxG\xe1\x03\x9f\xf1EB\xe3\xa5\x85\x90\x0fVt\xc1L\x92\x01\x12ZI\x86 \"xU\x11\xbe\x86\x80\xd8\xf1X\x8c/\xeb\xcfx*\xbeJ?\xe3_\xf8\xbc\x87'?\xc2\x93Y\x12\xb1\xf0-\xcd\x92\xe0zJ\x1c\xf3\x15\xe9\xad\xcc\x16\x93\xfa\x06\xe4UE\x892\xc9R\xca6\xd9\x9f\xd9\x0d\xdci\xa4P\x95\xfa\x8d\xd6qs\x1a\x8b\xd3^\x01\xaa\x17\x1c\xf2,Xi8\xf8\x89@Iy[\x81;\xcdW\x14:\xcbXr*p?\xac\x0b\xf9>Je\x02V@\xa040\xa6\x95'\x8d~\xb7\x1e6`\x8f\x0e\x05\"v\x14-\x00\xe96\xd2\xb0r\x1cp\x012\xb2+\x9a|f\xc9 \x90\x1c\xf2\xf7\x88\xa1\xb4\x86\xcc|\x1b\x18\x80\xab\xc0\x0ex*\xaf\x085h*o\xa1,\xc0\x05\xd7c\xbeZ\xa15\xf60\xde\xac\xb0?\x07>\xac?\xe3\x0d\x85M\xf1=U\x84\xcb-qV=\xc9R\x9d n\x87\xcb\x96lE\x15\xa2\xc6>\xcf-\xd2\x82(_\xbd\xf72\xba\x86\xf5[\xbe \xdf\xd0R]\xa4\x12\xae\x89\x164O\xbaa\xc73\xa5<\x04\xcd ld\xa7q\x00\xd9\xf2m\xdc6_\xb3d\x1e\xf2+k\xa6\xd8\xe4Z6:%\x8eN\x1a\xc5*\x0d\x1b\x17\x05s\xb6\x0c\xbc\xcf\x11KS\xb3\\\xa6\x13\x91\x821\x0d\xa2\xec\xbd\x92\x08\xc1\xcb\xc8&\x10\x8ai\xc4S6\x018\xf1k4A\x81\xb2e\x81&\xcb\x17\x1cRP\xe7\xb5\xf5\x88\xa4\xda\xcb\x9a\x07v=\xc9^\xaa\xf6)\xeb78\x1c[\xa0\xee\x0e\xe0\xf2}\xc4 \xc1V\x00\x97\xa3\xc8\xac\xa3\xec\x17]\x8f\xf8m\xad\xe2(\xfb\xd5\x80\xfb\xb5\x05\xeeo\x06\xdc\xdf0\xb8\x84\xa5,Y\xb3\xa30^R\xf0\x1bo\xbc\xb7\xc1\xa71\xf3\xb2\x8fby\x9b\xa5\xcaT\xb4,`\xee5+\xc6\xb7\x92\x80\x94\xc07\x9d \xa2r|\x18\x136\x17#(\xfea\xd5\xb1\xf9\xaf2\x17\x1b\xb2\x82\x9ey\x0d+\x0b\x00U\n\x08cP\xba=a1\xa3\x19(\x89A\x81\xe2\xcd\n\xfbR0\xe1N\xf1\x1b\x85\x93<\xe8\xc9u\xc6\xa24\xe0Q\n\x05\xea\x89-%_1\x9a\xe5 3\xcb\xe9$\xb4\x94\xd2oA\x074\xcdCK\x16\xcflR\x94\x04g7\x12\x1c\xf7\xa6\x1e\xb5\xb0\x87)c8\xc3\x9f.i\\!I!\xa1\x95$MC\x1e[\xbe\xa2 \x184\x8fyyH\x13C\xe8SO\xc2\xbe\xa5@N\n\xb9\x84SO\xc2K\xd9\xba\x1b'\x8c\xfaoY\xb6\xe4>\xd4U\xbeb\xf5\x94\xda]\x02\xb8|Ca\xfd\x97l\x1dh\xe1\xa5\xf9\x8aB\xb3\x15.\xe0\x169kKN\x90y\xcb\xb3 \x84\xe5h\xbc\xa1\xf5\xf3X\xd3\x86\xe2\xb7\x95.\x14\x99\xa5\x0c\x02@\xed\"\x884K\x82\xcf,[&<_,\x8dc\xb3\x92\xdevvV\x00\xcd\x03\xb4ZC\xdb)*o\xb8,\x03\x94\xf0\xcf\x96\x95 Y/i\xba\xa4IBeWE\xca\xc8\xd7I\xf8\xa7T!^\xae\x81\xa2\x14\xb7\xaf\x04\x01\xf3&\x88\x98G\xe3\xb2L(\x13Z\x0b\xfc7\x0f\xa2j \x91b-\xf26\xc8\x04\xdd\xb1\n\x8c\xa6\xad\x8a4k1s\xbe\xa1L\xeb\x8c\xf3\xcfL\xd3\xc2\n\xfc\xcaB\x0c\xa7y2\xa7\x1e;\x95X\xc81_1\xe8\x1b\xb1\xd4\xdf\xd0h\x91\xd3\x05\xc0W\x12\x90\x12\x19\xbd\x0c\xa5\xb7&\xb1d\x8c7\x146Y0 \x02\xd4/+\xcc\xaf\x05\x0cv\x96e\xec:;\x02\xfdV\x01\xc6\xae\xb3\x91\xd4v\xb5\x80\xbed\x1eO4\x0e\x00p\xbfH\xb1\x141\x91/\x94h\xc3\xbd\x02\xa0\xa0\xf9\xca\x17\x0c\x92\xa3\x1b!+\xe98$7\xc7%\x019. \xc8E;k\x14t\x91\xd6\x86\x06\n \x13\x05\x94%\xdb\xb6\x7f\x1e\x05\x9e\x8d\xb7Qy?\x04~\x00\xf5\xc1\xdb\xe82\xf0\x03{E\xa0|e@\x83\xaa:\x0e\x9e\xa5\x1fXr\xb2\x92\xc0Y:\x8a\x05\x85\x8a\x11\xbf\xeb#\xe3>\xd7Y\x8f\xca\xeb]\x0c\xf8G-\xaar\xd6#%\xb6\xc2\xc0^\x9b\xb2%g=2dM\x18\xf8\xdb\n\x87\xe8\xacG&\xcb\x88\x15P\xdb\n\x19\xd65\xf32\x9e\x9c\xcc\xe7\xcc\x13xF\xbe\x8e\x18\xbcc5\xb1$\xb5\xb1jk\x96dG\xfe\xfaW\xa8&\xc9@\xf0\x86\xa1\x1d\x91Y\xca\xdd\x00\xb4E\xecVB\xffZ\x83F\xeb\x0e\xd8\xd5\x0f\xfcZ@\xca_\x16\x983\xc0 \nL\xbe\xa0\x90ip\x19\x846n\x18P%>\xacW<\xf1K\x89\x8fxk\x91\xf7\\% \xa9Q\xb7E\xeam\xb4\xc2o\x8cp\x9a\xf1\xba\x90\x95\\\xdb\xef\x87\xafq\x04p\x8d#\x80\xeb\xe3%\x8d\"\x16J\xad[@\x91\xf5$\xec\x1ba\x10}>\xf2\xb2\x1c\x88^\x07^\xa7T\xbe[\xc1\x13/\xe1\xa1\x01.\xdfm\xe0?& \x88\x96\xb0\xcb\x04\x15EC\xe6G\xb3\xd2\xb6\x1aO\x97\xfc\xaa\x00L\x97\xfc\xca\x06x\x16dF\x95\x99x\xb3\x82\xca\xab\\\x05\x89_\xe2^\xaf\xc2\x1f\xc0\xd3\xb6s\xbd\n\xa7\x97\x14U\x98\xb8^\x85\x11\xbe\xc8 \xe7\x17\xf8\x00\xd4\x10\xa5SLAG\x81\x8a\xb3W})\xa4\xe8:\xbc^\x85b\xcd\xea\xf6`J;D\xfa2@\x1as\x83/\xae\x1b|q\xdd4\x17W= \xf9\xf2\xefh]\xbfs\xbe:\x8a\xfc\x0fT\x1cQ\xe5K\xab\x7fT\x8a*\x1f)\x17\x02\x81\xc0\x95\xf5@\x11Dz\x1982Ug`\x84R\xcc!\x04il\x85\xa4Y\x1dil\x806 \xb9\xec\xdb >v\xd6!\x17z\x1b\x84Z\xe1\xad \xb0\xb2m\x10zI[\x8c\xdc\x8a\x85h\xcfWk\xb0WH\xd9\xc6\x8cL\xcd\xc8]\xa4\xaa\x9d*#\x02\x8e?\xb3\x9b\xd4\x0d\x06\xe39ON\xa8\xb7t\xed\n\x84t\\\xae\x08\x19\xe7vgH\x02\xf1\xeb\xc1\x03\xe2\xd2q\xe3\xeb\x12H@\x18\xeax\xdf$@\xc7N\xddu\x02\xc7\xedW[\x82\xfe`\x0e\x15\xa4\xa3\x85Guk\xd7T\x81\xef\xe2>>\x1e\xe3>>vw\xeb\xd5\xcf\xc16\xbdj\xcb\xaa50\xdf\xea\xf8\x05\xa69k\xc3;\x8b\x80\"/\x0e\xc8\xa4\xe6=\xb1i\xaeN@2\x12\x02]\x83o\xd0xIS\xe6\x7fd\x8b \xcd$\x15\xaf\x97\x10\n.\x1e\xe5\xf1~J\x1c\x1eID\x85\xa0)\xfdh\xd7\xf6\x06\xb4r\x11\xe5\xa0e\x90\xf5M@\xd9&\x16LC\xe4\x01^\x9a9\x19\x8f\x7f\x08\xf3\xc4\x19\x12\x07\x04\x01\x10\x1b\xfb-\x8br\x95\xf2\x8a{y\xaa~\xff\x95\xdd\xbc\xe4WQ\xf9\xf6)V\xbf\xdf\xf2<eF\x1e\xbc\x17\xb9\x85\xa9\x8d@\xca\x0b\xe6 q\x96\xab\xbb\xac\xdat_;i\xab\xa4.\xd1\xd45\x9a\xba\x92\x0e\x0e*i\x0bH\xc3,\x16nP\x9d\xfc`N\xdc\x95\x0e\x87L\x0e\x0e\x88/^|\xf0-\x9d\xba\x83\x16sU\xad\xc8\xdfnY\x0b\xd1b\x0b\xb31iQ%\x03p\x80?\xf3%M\xcba\xa41\x05J2`\xa9\xcb\x06\x1d\x8a\xf9J\xd0\xc8\xc6\xd5\xca\xf1\xe5\x01\xda>\x06\xe8I\xe47'\xab\xa9\xa2\xbf\xa1EV\x8b\x05q\x87\x0b\x12\xfbf*\x0dM\xa7=\x0d\x82Mc\xd4io\xd3\xe0\xc2du\xda\xcfB\xd8\xb0j\x9dV\x8d\\\xf1m\xdb\xb17\x88\x1a\xed\xa6\xa5a\xab\x85b\x0f\xdb\xc4[\x8e\xbb\xb4KP&\x84\xd3\xc2PA\x07\xc7o\xb1\xf3\x92Q\x12\xa4\xf1I\x0b\x14\x8f\x05\xd0%\xcf#\x1f|5\xc4v\xd8\x90\xcd3\x13\xf8\x0d\x9b\xdfn\x94\xbf\xba~m<\xc0\xb2n\x0d\x8a\xfa\x9e\xbb\x16\x07,6\xde\x80~\x9a\x03\xa9\xcd\xfes\xc3\x93J\xac\xe6aH\x96Cbq\x10\xa7\x06\x9fC\xb4xr\xa0]58C\x91\x04|\xa6\x98\xd7!I\xc6\xa5\xea\xba\x8e\xb8\xf3Ry\xb7c\xa9\x0bf\x99\xd5\xfe\xfd \xf9\x8c%N\x93h\xfce3X\xee\x9aE\xa0\x84\x9aNImF\xd8u\x96P/\xd3wtu\xca\xa4%|\xf4\xd6\xa2\xc3\xea_\x0fdF\x0em\xb1\xd3\x06d\x8a\x9a[\x88'\xbd\n\xdam\xde=\x9a2\xe3\xd8\x9bZW\x9a\x1b\xba\x1c\x82\x9d;Y\x923\xe9#\x9e\x8f\x95\xaa\xed\x89\x1f\x80\xc8Q\x9a\xf1\xf82\xb6\xc7R\xfa\xa2\xd5\x07T\x8b\xd1!\xb8\x82\xc7\xb3\x8b\xf6\xc1\x99mo^qd\x96\xc7d\xf1\xe5\xbb}\xb8<\xe9\xed_\x87\xe3\xd6\x12\x17\x8b\xf4\xfc\x8eI\x89\xe0_\xaa6\xe9S\xdc\xd2 \xb5\xa6\x14\x19@n\xa4E{G\x0b\xeaT\x8b\xbdz\xb1t\xe7\x83^\xdd\xd2$TG\x97$m\xd5\xd9!\xd5\x91\x0edFZ\x1c94\\b\xfa\x1f\xf2\xec\x0d\xf8\xd3d\xf5\xe8k\x16\xaf\xa3%\xf1*M\x97a\xd1\x03u\xb5c\xb5\xc1\xc3\x8d\xaf.!\xf5\xae\xcc\x0c\x1e\x99\xc9\xe6\xaf\xbb\xc9\xfbP\x9c\xc9\xc9\x95\x05\xdbc\x94\x9b\xd9\xdf\xab\xf3J!\xce\xfc(\x8f\xdd{u&g\xae\xd2\xeb\xf0\xb1jM=\xdd\x97\xf0\x8f\xea\xbdZ\xaa\xf4\xfa(\xacUz\x9d\xe9Z\xa9A\xab\xc3/\x14|\xdd\x07\xdf\x8d\x1c\xcd\xfa\xe8\\*\x1e\xad>\n\x17e\x84\xaa?\xbe\xd6\xf2\xaej\xe1\xe8g\x0e\xbd\xe4\xe0G\xc0\xa1Q \xdd\xe3\x9dD~\xe5\xfdu\xc6\xf4\x15\x89\x91\xaa\xfd\x0f8\x97\x8a\x95\xf1h\xf4!\xa47\xc6\xcf3ya\x08)a\xe0}\x86\x1fUn\xc7\xe3\xb1,\x91C]>\xcf/Cv\xac\x81\xfd\x84.\xf4\x7f\xd5*\xf9S\xfa7\x90/\xd7A\xa6\x7fC\x8c7\xfd\xf2~]\x02\x15\x8d\xf5\x13\x0e\x1c\x92\x9f\xcb.)<3$\x0e[\xc5Y\x00Q\xcc\x1c\x16y\xc9M\x9c\xe9\x17_\xfdH\x12\x0e\x15\xce5{\x16D\xb1lv\x10\xadi\x18\x00\xd4\xe7\x92_\xfb\xccn>$pO\x02\xbf%k\x16r\xea\xeb\xff\xcc\x7fI3Z\xbe\xbde\x19\xf5\x8d\x94\xa2\xd5+\x93\xd5\x83\x97\xb7\\v\x14^\xde\xe7%\x94\xee\xf5\xaa\xe4\x06c\x9afL\xfe\xc8S\xf9C\xcd\x93\xf8\x0f\x12m\xe2\xc4 _\xe8\xc6&4c\xe5\xc0\x80s>\xc7t\xf1\xeb\xa4\x8c}\x96\x83\"~\xa9\x1a\xd2\x8c\x86\xa1J\xcd/WrV\xd2<\x8d\x99\x9c\xb9,X\xa9P\xd4\xf0\xc6soy,\xc8\x87\xb0xUS\x0c\xbfu\x07\xe1\xa5\x18\x08\xb8\x1f\x0b\x8cE\xba\xe6a\xbe2\x1a{EA\xf6\x0e?\x97\x8c\x85\xcey\x0f)\x91f\x8d\xd8l\xe7|\x9c\xf1Oq\xcc\x92c\x9a2w@\xb6\x05c\x16\x06\x1es\xeb\x9b\x95(\xcbg\x87G\x10\xe3\xb7\x99\x0bv\x98\x19\x8f-\xd9\x1c\x15x\x90;\x8a5Z\x0c\xc1KiFD\xb6\x89s\x0f\x92\x8c\x04\x91*T\x0f\xe3\x0b)P\xe3Cr5K\xce\x8b\x80\xd9\x00Y\xf3\xd2~\xa2PS\x91X\x08\x07\xae\xad\x16\xca\xce\x18\xe2P\x8d/\x12\xce\x81.}\xfd\xb2\xac\x1f\xa9\xe9\xd4^\xd3e\x9ee\xd2\x0c\xf8@\x06\xe0T\xdb\xdbHH\x8d#W\xa6\x08TF\x13FU\x9a\xf1m\xfdK\xf4\xec\xb8\x95\x92\xbf\xd8\x90\x92\xe7(\x13D\x13B\x87pR\\\xcd\xd89.-\xd8\xba\xe9 \xf5\xfb\xd3\xeaGpjtPT\xc7\xeaD\xe8\x07\xa6O\x8b\x0e\xe8\x97U\xcc\xdd\x01}\xa2\xb0z\x17X\x81\xf1;\x01\xfd\x1e@pRt\x00\xbd\x86\xd5\xd5 $\x0f\x96\x0e\xb07\xe2P\xe9\x01\xa3\x0e\x9c^\x90\xc5a\xd4\x03Z\xe2\xe7\x0e\xc0\x0fp\xfat\x01\xf5X/\x1f\xd4\xa9\xd5\x05\xa6O\xb4\x0e\xb8\x8f\xe5i\xd7\x05 'a\x07\xd0\xa9<\x1b{@\xf5\xe8\xc3\xa9:S\xbb\xc0\xe4y\xdb %\xcf\xe2\x0e\xb0\xb3\xf2\x9c\xee\x80\xfc\xc9<|;`\x7fV\x07\xb3\x9d\xbf\x12<\xc0\x1d\x19\xe5\xbfj\x8a\xab\x9do\x94\xfe\x9e.\xdd\xa8M\x82\xac\x9f\xfbf#!\xb8\xd3\xdd\xba\xd9\"\x88(`\xba\x84)\xa2\x19\xde\xdd\x9a!\xc9\xf4\xf6\xa1\xdeU\xaeq\xe4\xe9\xba\xc9p\xbf4X\x81\x8e\xbev\xc9G\xaa\x80@Y\xf6\x01\xb4Nc\x15\xec}7\x1a\x7f[P\xe6\x1d\x80\xdd\x12\x18\xa2\xe6.\xbe\xdb\xdc\xbd\x14\x9cUGc^*\xae\xab\x17X\xd6\xdd\xb9\x97\x9a[\xeb\x01'9\xb9\x1e\x80}F\xf5e\xc1\x01v\x02\xf2\xae\xadkq\xadHz\x8e\xfb\x99\xc1\xf6t\xe1a\xcd\x12\xf5\x81\xeb\xb3\xa8\xcfJV\xaa\xbd\x8f\x16\xef\xb8\xa4g\x1f\x8fLABG\x9b\x8e\x9aB\x86\xbe%\xfa\xf4\xa4\xc5\xbb^\x9f\x9e\x9cU\xd8\xcd\xf6O\xad\xef\xf6)\x19\xe4\xa7\xe3\x1b\xab\xbb}\xe3g\xe0\x88\xdb?\x81\xf8\\\xd3O\x9fO\x1c\xf3\xb8\x93~;\xeeF\x98\x1f@d\xd1\xde\xd2\xa6?\xc4\xa6\x08\x96\n.-q\x9d\xfd'\x0e\x1e\xc8H\xf0M\x17\x10\x90\xa1\xbc%\xba)9\xadf\x01u\x80\x05\xed\xb7?\x17\x83!\xb9\xa8\x94\xbd\x07\xa1/\xdcV\xf3H\x1e\x89\xa5\xdcw\xeb\xd4e\xe3\x8b\x8c.\xd0\xdb1b\x08j\x05\x1fm\x17\x0f\x04z\x18\x90`\x83\xf8\xac\x9f\x08\x96\xfe\xcb\x17\xe2\x9e(\xde^G\x85\n\x0c\x89\xdf\x0d\x16_\xaamh\xae\x820|\xc9B\x961\xcb\xf0\xdc\xfb\xd8Djll\xbd\x8c\xce\x95\xc3Iw0$>4\x0dR\xbb\xfaU\xbcYd\xef\xc7\x90zG\xd9\xfb\xa3}\xd4\x81=o\x11\x18h\xf7nc\x8f\x86\xa1\x8a\xacn@\x97\xcd.~%c\x9aC\xbc\xf8\xe3\x90\xa6\xa9\xcb\xeba@\n\xa9\xb0\xf4\x8f\xd0\xd4\x06a\xd2/\xb1\xe0-\xb0\xec8e\xb9\xcf\xcb\x0b\xed\xca\xadhM\xfd\x8a\xdf\xd3\xa85o,\x9a+\xc4\x0b\x83\xf8\x92\xd3\x04\xf8\xe6>~\xda\xb54\xa9RP\xe9\x94\x1c\x126\xae\xa4\x17\xb7\xa6\xd5\xe4\xaee\x85Mw\xf0-\xa7;\x90^\x86\xcdI\x08\xeec\x12&\x93\xc9\xbf\xc1\xdaM\x98@\xe2\xbeV(\xff\xf6k\xafy\xf1\xc3-79\xb8\x87\xbd\xcf\xecf\n\xf7V\xf5[4\xa2<\x02d\xa0\xe0\xdf\xdce\xe2\xf1\xb2$\xfc+T\x80f\x83/\xb5\x96|\x1a\xb6\xe5\xaeXF[\xb2\xa51\xa8-\x17|\x19\xa0\xd8\x81\xc8\xb8\x16o\xb9\x1f\xcc\x03pA\x90 8wwR\xbf\x18\x14\x8f\xb7\xa4\xc9q5\xf4~\xe7v\xfd\xccnb\x10\x1cH9\xae\xd4\xfd8\x94nm\xa7\xb5x\xa4\x04\x17\x8f\x7ff7\xb7\xf8\xaa/\xb8V\xf3\xa3_\xbe@z\x1e\xd7\x9a\xc2\xc6\xea\x03}\xdbs\xb5\x0c\xbc\xe5\x86\xadi\x19\x83\xfbll%\x05Eg\xf4[b\x00:$\xc1\xb7P\xe9m\xee_\xfcP9I\xbd)qNR\x8f\xa26\x05\xa0=}I\x93)q\x08\x92\xfd\x06\xf4\xad\x9c\xa3$\xe1W\xe27\x02\xf2)\xd6\x00\x9f0\x83\xc6\x8f\xca\xd0\x04 >ZLM^\xf2\xabH\xc3\xc8\x9b\xc7&\x08\x0b\xa7\xc4\x91\xa4\x1a\x92\xfd3\x18K\xbe?E\xb2\xde\xb2(\x9f\x12\xa7\xa2\xf9\xda\x00:\x8a\xe3\xb4\x13H\xb2MS\xe2\xc8\x1fo\xb8\x87\x19O\xbc\xe5\xbf\x7fH\x82\x08\x14\x84\x00?9\x9f\xa2\xc0gQ&\xf0\x89\xdfjg\x80\xa3\xe0\xfd)q~\xa0\xdeg\x9b\x85\xc5\xb3)q\xce\xe8%\x923\xd9\x15}\n\x19\xc5\xcc#&{ba\xc8\xdb\xedf\xe6\x13\xd1M\x8b\xaf\xcb\xc9S5T \xc7\xec\xc7&\xa2\xc1G!ZR\xb4U\xca\xe6\x9b\x99\xbb;S\xb8(L-\x03\xbb\xfb\xb4m%\xef\xedZ\xd6\xf0\xde\x1e|s\xc1\xd0\xf5\xb9\xf7H\xe5Z\xd6\xdd\xdec\x18%\xcc$|O\x8c\xd1\x8f\x1cu\xcb\xb5\xf7\xb4c\xdb\xec\xed\xb7n\x9b\xbdg]{\xe6\xd1N\xc7\x8ey$Z\xfe:J\x19\xea3\xe7\xd1\x93\xb6\xed4\x81\x95\xf3\ns52\x81u\xf3j\x17\xcd\x12\x83\xf9j\x0f\xcd\x12\xady\xf5\x08\xcd\x12My\xf5\x18\xcd\x12\xc3\xf8\xea \x9a%\x06\xf0\xd5S4K\x0c\xde\xab}tC\x88Q{\xf5\x0c\xcd\x9a@\x97w\xd0<9\x1c\xe8x\xec\xc2xL\xd0\x01y$\x06\xe4]\xbe\xb2\xac\xe8 \xccQ+6\xd9\xdd\x15U\xbce\x19\xada\x0e\x9c\xcb\xb3\x9f\xc0\xd2\x0b\xfegvc\xbb\xd1\xcd\x04\xc99\x03\x90s\x19\xec\xf63\xbbir\xa9\xc0\xfcV0\x1ah\xc8\x97\xde\xe3\xab\n\xb9_\x1b\x8d@\xcf~[\xa3\xb4\x7f|\xabld\xa2\xfc\xe1\x93C\x8d\xcc\xc8\x94\xc8\xb0:\xe3y\xc2W\xc7\x8a@\xab\x07DF\x15d7\xa2;\x82YAy\xc0x\xd5\x06eJ\x9cr\xc6\xee\xc1\xc9\xb6\xd4\x11\xfb\xd7s0>\xcd\xa8t\xf7\xc3\x92\x7f\x1d\x03\xd3\\-\xa0\xbb\xc3R\x1bI/\xb5\xa9\xcf\xda\x81<\xb8]\xf4;\xa0\xee\xc4\x96\xdc\x91%\xb2q&\xd5\xb5\xfd?\x86i\xff\xb7X\xf1\xb1\n\x15\xfd\x7f\x8b\xb8\xe9\xdf\x04O\xb00\xa3\xbft\xf1\x84\x1a\xf1JhCv%\x13\x04\x16\x05\xd5\xba\x97\xd5\xfc\x11\x1b\x1b\xc9\x0d\xc6\xaf\x11\xa74\xcc\xe8\xaf\x1b5\xe5\xd7zS~\xad6\xe5W\xbc)5(\x1c\xa8Ws\xff\x86-%\xc8\x91\x86\xff\xdfj\x19 \xce\xf2\xf1\xa0\xb9\xac\x9eu\xd1\x1b\x88\xac\\\x1f\xe0\xcd\xb1\xbe\xc8x\xfc\x86\xadY\xa8\xe2\x02O b`u\x11\xf8\xe0\xf5KdO\x90\xecJ\x84\x8e\xa9\x8a\x91R\x84\xc0\x80 \xa9\" \xc2\xa9U\xa3y\xd8\xb0\xeb\x85\x8co\x83\xe8O^dta~B\xe0\x82q\xc6\xdf\xf0\xabB{\xd3^\xa9\xb6\xfd\xfe\xf4\xf1uQ\x87\x91F\xa6\x88\xda\xfesl{F\xb5}x\xab\x196\xa7\xaf:3\xf5x\xcfS\xb2U3\xa0\xcfS\xf6*\xb8\x14\x13\xb25\xb9\x8f\xb6\x18\x91c\x1e\xd5\x15\xe6\xc51\xff\xf0\xb7\x87\x87\xdf?\xac\xa6\x0b&\xf9\xe1\xdf_\xfc\xb6\xf5\xdb\xe8\xb7Q-\x0f7\xd4?\xfe\xf1\xe4\xf8\xaf\xa7\x9f\xde^\x1c\x9d\x9d}\xbcxw\xf4\xf6dJ\x1cA\xc7\x8c \xe4\xf0\x08b*\xa79\x1a&\xc3\xf7\x8fU\xee\x19\x97\xb1\xb4\xbb\xf0\x081\xe8i\x9ct%\xe6\xd5^\xc6\xd2LTt\x08\x01f\xd88aqH=&\x10\xaaC\x1c\xb2M\xe8\xb8\xd9~\xb2M\xbe;p\xbe#\xdb$\x13?\x9d??\xf8\xae_@s\x1a}dy\xca\x9a=\xe9\x8a\x80\xa8c\x9b\x16\x16\xec.\xd6\xae\xf6\xce\x8aJ 6QL\x93\x94\xbd\x8e \xf0\xe4dg0\x94\xc1\x7f\x80\x8eo\xf6\xc2\xb6/\xeeY\xa4\xf6\xe4\xf1\xe3\xddI\x17\x92\xab\x0fQ\x11\xc7KL\xf6d\x08=\xdc\x91\x91\"wdH/V\x84\xdb\x12ks\xf4\x88< \xc1s\xc2\xc9\x0bB\xd1\x10_E\x8d\xb9\x19f\x90\x93m\xf2h\xe7\xd9\x93!\xa1\x03Y:\x17\xff\xb6\x0f\xc8\xa3\x01\x89\xc4\x7f7\x13\x7f\xd9X\x0b\xa4\x8f2\x97\x0f\x06d\x1b\xcd \xdbd\xd2\x96\xb9\xdb\x96\xb97@f9#\xffq@\x121\x00\xffa\xc6\xa6&\x8d T\x91\xdaD\x17\xc48lo\xab\xf6c\xcdGq\xa0+?5 _\x88\x1b\xa9\x9f/^\x90\xc9\x93\xfb\xc0G\xe6\xac;\x93\xc7\xe3'\xe3]\xe7\xf6\xb5u\xd8,\xb9\x91\xfb\xe8\xc9`(m\x91p\xdb\xa5I\xdd\x9aG{bx40\x8f\xec}\xa8\xe5\xd9\xc6\xa1\xb7\x04;\x1e)kw\xd6\xa2/'\xe0&\x8a\xfb-\xe3\xce)pV\x85\xd5\xbb\x01\xac7\x1b\xe8O\xd4T\x8a\n\xdcL\x06\x11\x1e\x08\xf4\xc7\xed\xe6\x9e\xcd\x16\xa1\xa1\xb4\x04\xf2\x8c|&N\xfd\xc4u\x1e=rDY\xf1\xeb\xb13\xac\xb8\xf3\xb8\xe7\xf8WbB\xf6,\x83\x9f\xa86\x9d\xe6\x97Y\xc2\x04\xd2\xe3EX\xe0\xdb\x7f9\x1b_\\\xb0\xf4-\xf7\xf3\x90\x81!\xdeP\x86\x87\x8b\x98\x97\x01\xa6\xfe\x90\xf0u \x86BG\x1dm\xb6:p#w\xff\xf1n}\xe5\xf1\"\xeb\xd1\x00e#\x02\xabY\x83\x8a\xf7h4M\x1ejM,\xa7\xa2\xa7MIwL\xc5J_\x12\x1dw\xad\xda_\xae\x93\xefyDU\xad-\x83\x18\xb9u\xfb<\x0eK:r'\xd8\x96\x16\x19{O\x1f\x9b\x18T&=\xc1\xc7\x9a\xfes\xc7Z\x9f;-\x07\x9en\x99\n\x1a\x8d|o\xab\x1fU\x016\"n5\xe8\xdd`@\xb2e\xc2\xafH\xc4\xae\x88@2`\xdc\xe0:\xc74\x8axF\x04oJ(\xf1\x04\xc3IhJh\xf1%\x07\xa1~\x14\x17\x8b\x99\xdd\xaf\x95\x95y\xff\x862\xb3e\x1f\xd9\x9c%,\xf2t\xf3\xc4\x87\xc8\x92\xa6\xd1w\x19\xb9d,\"A\x14d\x01\x0d\x83\x94\xf9dD\xd2<f\x89;\xa8@xR\xd5\xbe\x9d^\x92!$\x8b\x08\x80[e\xcc@p\x85S\xa2@3G.\x83\xa6W\x04=\x1e\xccd\xf1a\x0e\xdb\xfc\x12\xa4\x19O\xc4~\x88\xe4\xaf^n\x06:G\x15\xa4\xc0x\xeb\x1f<\x00d\xafE\xca\xe8j8\x15\xe3I\xd85\x08\x91\xc5Z\\\xe5iFX\x90-YB.\x99\xac\x80'\xc6\xf2\x18\x12\xb1|\xc04N}\x08\xe93\x1b\xc7 \xcf\xb8\xf2\xc4\xa0\x8e\x0b\xe9@\xc3\x85\x86e%@]\xd8\xa1\x1f\x8fGi\x96\xe4\xd2G\x19\x0eB`\xfd\x859Cy^\xfd\xb0(_\xb1D\x86\xf8\xa9;\xb61\x9f\xabDz\"h\xb2j\xe6\xe3\xf1h\x1e,r]_\xf3\x96\x9c4\xe6\x92(\xb1\x82\xb4\xf6V\xa3\x91\xb2\xec\x83\x1e\x82\xf7srH\xd0t5\xefS@O0d\x17\x17\xe2P\xaa )\xddlH\x98\xf8B9\xac\x82\x02\x80\xa8\xc0\xea\x1e\xd6\xdc\xa2-\"\x1b|\xa0a\xc1N\x89X\xe8r\xf16\xfbWmP\xb5)\x8a\x94\xe8\xd7\x82d\x0c\xcdNX4\xe6Qx\x03\xbbK\xd4\x15\xa7cOe\x0c\x1a\x1f+\x11\xb0\x9b\x8c\x8f\xf9J\xfa\xb0\x1e\x98gRy\x00\xe5C\x92C\x8d`\xc8\xd7`sUg\x03]b\x1c\x14Q\xb7\xaa\xcbB7gZ\x1e\x9ac&\xd9}\xa3L\xd94\xf1Y\xcf\x98\x92\x8d?_V\xf5'r\xdb\xc3\xd9 \xb4\xeav\xe9R\x9b\xa9\xae`'\xc9\xe7\xdd'\x9d$\xb1\xf5|c\xa5\xb04\x19\x12:\xc4\x83\xac\xe7\x80\xa8\x02\xb1G\xb8\xbb5\x19\x12\xe7\x98\x86a\x10-\xc09\xa0\x1c+0\xaa\xa3\x19OR\x15\xb8.\xbc!A\n\x18)\xcdc\xd1\"\xe6\x93\xcb\x1b\x92-\x19\xf9/1\xc3#\xb1\xfe\xd2\xff\"1\xf5>\xd3\x05\x1b\x93O)+\xeb\x1b\x83\xb4\xa2xu\x07$\xe3\xf2d\xcc\x96l5&\x1f\x19\xf5\xc9J`m\x9a\x11\x15hu~9^\xb1\x87y\xca\xa4\xa8cT~\xc5\xa9\xdf\x8a\xe1\xa3\x91\xb5-~\x1b]A`\xd0\xcb\x95 \xb8\xe1&\xaf\x80\x0b\x08\x95kn\x04C^r\x1e\xa2\x19\xa2\xb1h\x86\x8c\x94\x8bf\xc9\xa3\x15\xcd\xd2\xce\xc5\xb1\xac\x9b\xd5\xa5\xa5\x114\xc2[\x0d\xfdy?Ge\x8bLK\xdb\x90r\x9a:\xb2\x14\x95\xf2Jk\xc7,\xa5xd\xab\x0fr\xa4\xc7F$\x17\xe2\x01\xe0]\xb8\xa6b\x18kW\xbf(\xff\x1e\xd5\x160\x91r\x83\xb1\x99 \x0e\xec\xa2\xec\x1d\xf0F\x83\xa8o\xa2\x14u\x82\xd14\x0d\x16\x10\x9e\xbb\xaf\xb0\xe79\xc9\xc8\x0bB\x93\x05\x88\x94S%\xe6yN\xb2\xedml\xaf\xe8\xa5^\x14\x98e\x88\xe1t\xf1\x89\x84\x04\x91\xe8\xa1j^y,-i\xfa\xfe*R\x8e&o$-')qqN3\xa9\x1b\x1f\xcd\x92\xf3\x1e\xd7\xdd\x86 9~\xe8\xb4\x8d8Q\x9d\xf2\xccN\xa9Q \xdf\x93=\xd1\x1e\xc95\x01\x8e,\xfb\xbdwN\x0e\xab\xaf\xb8\xfb\xd4\x159 ?p\x1e2\x1a\xa1\xa6\x04\x0b\xa2\x0c\xe3\xe7\xcd\xbc\x1b\x84e\xd3\xe9x\x14n}S@\x0e\x89\xbb#\x0e=5\n\x03)\x81\x88\x9b\x88\x0b<\xa2\x80\x8b\xc0\xe6\xf7\x05\xbd\xe3\x8d\xe3<A\xb6\xe6U\xd16\x90\xa8\\\x88*.\x9a`'P\xc5U\x90-?2\xa4\x87\xd7e-bxO\xc4p\x9f4\xc1N\xc9\x01\xb9\x12y\x97\x00\x864\xf5XT\xb4\xbd\x8d\xeeU\xfb^ \x86\xa4\xc79\x96\x8c\xb8+\x08\xec\xf6\"F\xddl\xac\x02\xb5\xbe\xa3+&\xf5M\"\xf5\xcb)\x88\xa1\xa6\xbf\x88\xaf\xa2\xe2m\xe2\x0c\x1c\x9c\xad\xab\xf8a\xb4\xba\xcc3\x85\x19\x166V?=\xd9Y\xfd|k\xb6V?\x9a\x9d\x0bZ\xfc\x8cm\xc4\xe6\xea\xe7_\xc0\xee\xea\xe7[\xb0\xbd\xfa\xd1\xe3\x15\xd5n\xb8Q\xf6W?|\xac<\xd8\x93\x03r<4\xd8a\xa6~}\xf9B\x12\xcd\x19\x0b\xb4\x11\x96h\x83\xeb\xf4\xef\x8ey\x1e\xfa@\xef\xcd\x83\xc8\x87\xc8*\x89\xf4]\xabxVA\xf9)WE\x82o\x05\xbe\x81\xf091.x\xc6\xe4D\xc2^%4\x86\x02 \x17KGo\x14Q\x1b%/\xb4\xa8\xec\xfb\xa1\xa8\x88]\xc7a\xe0\x05\x82\xe0\x8c\xc5\xda\xd2_\x865&\xbe\"HG\xf3#\xdfu,&\n\xb26\xa8\x05|zf\x827n)c\x88\x11h\xc6\xac.h\xf4\x03\x15+\xb5\x96\xa6a\x8a~\xbe\x8a\x89\xf0BF\x93c\xea-\xc1L\xaa\xe9\xfc\x99\xa0\x0c-\xd9@H\xa1\x9f\x7fOa\x85~\xeeCh\xa1\x9f\x9e\xc2\x0b\xfdt\x0b1\xf4\xd3W\x98\xa1\x9f~B\x0d\xfd\xf4\x12n\xe8\x07_\x13\xe4[\x0b;\x8a\x8f\xb8\x81 \xa3\x86$0H\xbat)\x10Dq\xe6Iw\x18]\x82\x07\xfdh\x9cy%p\x11\x88\x1d\x96t\xcd\x14\x89\x98Jw\x19\xbe\x91\x97\x9e\x16\x9bLe\xe2\x0d\xad6Q\xe0\x99<\x93\xc5\xa0\xe2MN\x158Q\xe0\xf3\xf3 \xa2\xe1[\x1aC=g\x1cj*\xf5F\x05\x84\x9eL\xf6\xca\x04\x95\x9fh\xc7M\x11\xa0\xe5\x12+\xb5/\x1cA\xfa\xc3\x07}^v\xea%8\x9cz\x1f\xe9\xd1\x134\xa1\xad\xd9\x82\xe8\x86yo\x81\xe8\xc6\x8cI\xbf\xc1\xc7\xc6d\x93\x19\xd0\xe3\xb3p+#D\xb2\x1e\xa3\x84\x92\xcb\x88\x0b\xdc\xa2\x8c1\x9b\xd8\xb0\x10\xa9\x96\x13\x91)Y\x0c{\xcc\xc1\x01\x99H\x04k\xab\xb0\xb8`O\xf4|5Vk\xb1I\x9b\xea\x05\xc4\xba\xd8\xb5\x85\xf5=\xacw]U\xbf%\xaf\xa1\xfb\xafz_\x95\xe8\x9eM5\xde\x95\xbeu-\xfbZ\xeb\xf1\x95\xdf\x00\xfaV\x8b_\x7fh\x93\x19\xd1#u\xe3\x1ac\xf5O[\xfd\xb5\xa116\xc0\xcd\xb0\xdf\x84\xa0{\xa0V\xadu\x1bT\xaa\xdel'\xe4p\x14\x95\xfb\xe8\xf5\xfc\x1dc>H\xf2z\x1dNb\xdc\x99^u\xcd]Y\x8a\xe6\xd58\x00\xe5\xdb\xbdp\xd4\xeeJ\xcb\xd3\xe8\xcb\x17\xb2%\xe8oZ\xd2\xdf\xba\xce\x12j e$\xf5\xb2\x07\x82\x0d\xa8\xbb\xb2\xd5\x0f: \x95\x11\xbd\x8f1\xa9N\xd1\x1d\x87\xc5\xaf\xe0\xad\x96\x91\xa9\x00\x9a\x83\xe3\xd70\xdf\xa6\xe3\xf3\x96%\x0b\xe6\xdfit\xba$OX9\xb1_/\x8b\x02\xed\xacf\x8b\xf3j\xd2\x85\xa1H\xc1N\x1a\xcb\x08\x1b\xd3\xcd\xa6oKV\xb9*\x07O\xcc\xc8)L\x0b>\x81\x06\xa89}f\x0d\x9bL^\x90\x9e\xe6\x97\xa9\x97\x04\x97\xfd\xe7K\xb5\x1d\x97\xa9\x89\xc6\xe4Q\xaa+\xed\xd3\x86,\xb9)\x1a\xd1\xb7\x0d+p\xbeQ\xffZ9\x1ef\xe2\x81q\x1f8.\x92%\xdc\x92F~\xa8\xa8\xe2\xf1e\x10\xf9\x90<\x18\x0cI#\xdbE\xfc\x8c\x10\xb47\x9f*\x1f\xef\xd5\x9f^=qu\xb3\xaa\xbd\x13\xecd\xaf\xa6\x15\x92\x83\x97\x81\xff\x96\xe7Q\xe7]\xab~\xe0\xa3\xe64\xb9\x9b}\xef\xe7 \x0c?2\x8f\x05k\x84\x93h\xfb\xf0U\xcbN\x90[\x0c\xdc\xc3\xa8\xb9j\xf2@M\x7f\xe5\xfaik\xea\xa7hu\x9b\xd1\xf9\x84\xcc\x94)\xb3\xe8\xd5\x8e\x02~\xa3\xaf\xd7\xb17h\xa5\xd7\xcf\xc2jz\x15c\x18\x19\xb6q,\xb2\x9b\xecd5\x7fm\x9c\xf7?0\x16}H\x98GC\x0f\\\x19\xf9\xca[\x7f\xadi\x06H\xc0#\x10\xa3T\x1b%o\xe6\x99\xaf\xb4\xd4\xab\x99v\xa2\x0b\x01\xaa\xf1%\x0d-|\xfd\xd4&\xc6\xc4\x04}\xa7\x06\x14\x1fk\xfb\xb5\xcf\xa1VCY}\xf9[\x02:\xb9\x07\xc6\xd8\x8eK\xe9Z\xfb\xd9\x07\xec\x8b\x14'\x00\xd1\xd9\xd9L]\xe8\xaa\xc4\xc3m\x1c]\x9f\xea\x08&\xcd\xef\xa2\xf2\xebO\x96\xdcl\x00M\xcc\xab \x1a\xc7\xe1\x8dk\x11\xe2`\xcfW\xe2\xd1vo\xc6\xb6G}s9\x06y\x9a<\xb0\x97\xbdk\xb0\xcb\xb3\xccGQ+6r^\xee\x8a\x0e\x8aI?\xb0<\n\xe7\x9a\xfd\xcaDp\xd3\xb5\xc4\xc8o|\xb7\xab\xd1\x18\xf4\xc7#\xedb?\xd2k\xa8z\xe1\xb4T\xef\xc0~\xd3l\xca\xb4q\n\xc8|\xbe\xb6\xaf\xb8\x16\xe9e\x1f\xbc\xb5`\x99\xb4\xb7\xf2\xb5zu_\xec\xa59\x8c\xea\x15\xc7\xf5\x908g\x9cP\xcfci\n\x97\x12W\xb2\xfa\xe2\xf6kHnxN\"\xc6|\x92q\x88\xe0\x1f\xcco\xc8\x1fD]kNI\x96\xe4\x8c|%T\x16\x9f\xf3<\xc9\x96\xc5\xe50\x01\"\x12\xeeF\xe0~q\x00\xf7HcgP\x1c\x04\xf3t|U\xedQ\x9fq\xe8\xa7\xda\xa5\x1f}\xcdi;\x10\xdb\x11qT\x96l\xae\xab\xf6\xa2\x81\xf9\xd1\x96\xe5\xdf^\x0b\xad\x9c\x02\xb6=\xd7^G\xae\xeb\xa8\x1d\xbd\xf6\xdd_\x1cw\x16\nb\xd2AAL\xfa\xef\xfc\xcd(\x08\xaa\xefih\xbb`-\x95{\xbeuX\xc2\x8e0Hp \xe6\x80\xf5R\xad, /e\xba\xce\xc8!\xd4m\xc2\xb6\n\x88:\x84\x84\x1e\x12\x1d\xb1\xfe\xccU\xb4D[~@\x0ee=;dJ\x803u=\xbd*l\xe7\x8a+x\xa7\x10`\xe7UXT\x82\xe2\xb6]\xc5\x16L\xf2\xd6\x96\xeb\x81\xd6\x07\x8c\xe6\xa0\x18\"\xab\xe8\xc1\x95\xbcqN\x0eIN\xa6jY6i\xc8k\xa5\xf9\xc1\xd5\xf5\x99\xca\x01\x1e#q\xff\xf8\xda$\x95\xbb\xee\xd3d\xe0\xe9\x1a~\xc2#`\x10\xc0\xfd\x03\xd1<K\x13\xea\x1f\x1f\xe0\xc4\xb0\x9d\xb1hd|u9\xaau\xaa\x9fB_\xcb\xd4\xd3\x80\x10g\xd1X\x1d#EqI\xb6Dc\xafMIT?ue\xd1f\xcbDUv]\xd7M\xea\x11\xc3\x99\x96'V4$\xacG\xcc*\xad8\xd1\xb4\xee\x108\xd9\xd3F\x1c\xd5,\xaa\xb2\xf6\x1f7\xb2\xf2\"\xebI=Kt\xcf\xf5\xb4\x0d\xc8\x10\xc0vw\x9f\xea\x9f\xfb\x8f\x9f\x0e\xeaE\xc2\xa2\xb6}\xdcj\xc4\xfb\xe7[\x8d\xcc;\xd9x\xad\xab]W\xba\xae\xbc\xc6\xbd\xabAW\x84f}1R\xab\xf5\xbb~O\x91\xa3\x96\x0b\x02>\x88TX\xc7j\xc5\xd5U\xb4l\xac^um^\xb5\xdf\xaf\x16Z\x93\x03\xe5!\xe0~\xb4\x1e\x87v\xa5\xbez'\xc1K\x90ti[\xdcR\xd5\x8f8\xcd\x98U-\xea\x9a\xc7KR\x83\xa9#\x19\xb0>\xd4\x1a\x83\x82\xd3L\xd4K\xf9\xe5\xda\x81T\xa8G\xf2\xb2j\x9bj\xa44\xbf\xddyN\x02\xf2\x82D\x85zf\xb0\xbd\xdd\xc4\x91\xc0\xd3p\xa5\x194$\xd1,8\x07a\x12\x9b\x89\x9f\xe7\xf2\xeeE\xfe\xb6\xb6\xad\x18\xac\xda\x0e\xf9\xb6Sh\xd9\xe7\x05\x00\xca0\x1b\xd4|\x02\x82\xce#\x00\x06\xdb\x7f\x9e\xa4\xf2\xbc\xe9\x89&\x957\xc2\xa7J\xb4\xd6\xd1[(QV\xd0J\x83\xe3#C\x0c\xb9\x08\x8e\x04\x1a\xd6\nv5\x12\xaf\x17\x94\x1aw8v[\xa0\xcaS\xd2\x0e\xb4`\xd9\xcb^\xb5\x01`\x12\xac\x99\x0fd\xd5\xab\x84\xaf:J\xac\x82\xeb j\xc9/\xceS;H\x06\x8a\xdf\x08+\x8dh\xe7f\xd6\xf1\x8fZG@\xee\xc3\xd6f\xca\xed\xdc2k4\x0c\xc1\x05E[~K\xf9B\xf7\xb8\x0d$\xc8n\xfa\x0e\x85\x81\x0b}6\x0f\"V\xa0\xa0\xe6\xce+A\x17,3\xb0\x15\xc4\\k\xc2s\x1b\xfc)\x98 %\x02[\x89\x97,\xf5\x92 \xce0^\x8fV\n\x19\xdaMMPA\xcaPAEP\xa5'\x85[\xe9\x17\xb4H\xea\x86C\xe2\x0d\xc9\x1cCD\xa0['\x0d-L\xcd:\xcf\xc6\x8e\x0bx\xd4\x0eG?\x023\xc4`g\xeb\xb5\xf0\x12\xb1h\x7f\x0cX\x1d\xb83hc,\xda\x88\x16\xc1e+\xe2S>\xb8\xf8\xb0}\x8a\x13\x1d\x1d\xd8\x17\x84\xb1G3\x97\xbb\xde\xc0\xc6\xe5\x14\x87\xdbR\x9e[K\xf2\x82\xf8\xc5\xb9\xb5\xbd\xbd\xec\xea\xb8 \x1b\xfc\xd9\x121+\xd0\x8fRN\x9e\xad\xc1a]\xa6\xfe\xcfE;\xe7\xb3\xf5\xb9\xd5o\xbd~\xc4WV`\x1f\xee\x0d\xc9\xbaC`\xd8O\xfc\x1a\x89\xb1_\x0f\xc9\xaaC\xf2e\xcaW7\x16\x83\xa1\xa9j\xa56%\xfeMp\x14\xd48\x12\xab\xde\x97\x12\xb7\xd7Y\xd8\xed\x81\xa2^\x1aL\xd1\xf8\x90\x04\xb8A\x9a\xd6\xdcn\x0e:\x084\x9a\xb3%\n\x18\x96\x08\xd9@\xc6\xbaeWD)\xaf\xbe\x0d\"\xf0fH\xd8\xb5\xc7b\xd8\xcf\xdc\xf3\xf2$a\xfes\"\x9a\x9f-\x19\x89x4Zi@\x9f\xad \x8b\xd6A\xc2#\xe0\xab\xc5\xa2\x06\xc9^\x1e\x86\x04\x82\x9a\x92\x15KS\xba`\x84F>\xa1\xbe\x0f\x11OhH\x96,\x8c\xe7yH\xaeh\x12\x05\xd1\"\x1dc\xda\xe2,L\x99eQ\x89>\n\xcehV\x1f\xa6s\xbb\xe0\xc3\x83\x9d\x86f\xbb\xd5\xa1\xc8\n\xbf<\x0f\xff#}\xb8\x18\xf6\x13\x1d\xeau3\xf3\xb6\xb7\x9b\x01\x1c\x88d\xfa\x07\xd2\xee\xe1\x808\xaf\xa35M\x02\x1ae\xe4\xa7\x80K\xe1\x15b\x00\xd1H\x91\xf2\xact<O\xc4!r\xc6?\xf0Xz\xa3Im\xeb\xb5\xcf\xf24\x89\xbb\xba\xefw\x1dq\xb9\xee\xb2I\x9a]\xee\xef\xd7\xbd\x9dH\xaf%\x8djd\xc4\xe5gu\x1e;U\xb5\xd4M=e\xc0\xe5\xbdF\xed\x9eJ\xaf\xd7#x\xd2\xd0\xed\xbc>\xd2\xec\xcc\x1f_\xf1\x1d\x828Hi\x02\xea\xd5\x87\x89\xd0\xa4#\xa8l\xd8A\x95\x13C}L\xbaE\x91\xf6\xd1!\\k\x83<\xb04\xaf\x9a\x0c\x86\x98\x8d\xff`Hr\xd1QO0d\xa0h,\xc5o\xa2\x7f\xdc\x8d\x86\xe4\xe9\x90\xa4\xd8\x01T\x1c>s\xe3;\xcf\xc9|4z> \x01\xa8\xfc\xcd\xe6\xe7-R\xa2\xeaR\xb3\x99\xdd\xa2\x0b\xcf\x1c\x8c\xde\xbe\xe5\x8a\x06\x8b\xae\x8d&C\xa2E\xbc0U\xe4\x90\xec\x80Nvy|F\xe4\x05I\xe0\x86R\xe9\xd2\xb9l\x16\x9dK.~\xf0\x1c\xa7b\xea1V{o\x99\xc6\x9a\x96;\xe6\xc9\xa3.{d\xac\xab\xa6\xec\x06\xd6\x11w\xb3AE\x90u?\xad\xdb{\xba\xffo\xd1\xbcF\x88t\xd9\xbcI#\x02\xbbB7O\xea\x88\x82vK\x07\xba\xfa\x89\x9e\xad\x89\xcb\xca \x8eA\xc3\xb7\x91\xbe(\xe2\xa84D\xac\xd3\xd9\xb9E\x9e\x91\x835\xd0\xc0u\x0c\x1b\x0c\xa0\x88sP\xe0\x83\x8b\x00*\xe5\x13L\x9c\xfc \xd1\x8e\xc6q\x9e.\xdd\x1c_\xbb]\x06\xb4\xdd\xbb\xae>\x06\xba\x7f\xf5^\x14Hr\xeb\xa0.]%\xd5\x9d\x1aDj^` 3\xd9\xfe\xba\xaa\x9e\xc6\x81\x9b-\x9f\x8e\x88\xdb\xdaM\x1321\x1c\xe2j+c\xb3\x83\xaay\x8f\x8c\xebdx\x95\x14i8\xd3\x05\xd4>R\x8f\x14\xb9B=\xacR\x0ff%N\x943\x81\xa0\x9c\x90\x03Q\xf5!I\xc6?\xe4\xf39K\xc8T\x99}\xdaX\xb3CB\xc74\x0c\xb9\xf7)J\xe9\x9c\x15\xf0\xd5A\xee\xbd\xbb \xa9;\xed\xd21\xca\x91\xc3`]h\xa4+e\xe4\x06\x04QL0\xdc\xc6\xb8\x11h\"\xb3+\x02z\xdez\xe1\xa3\xba\xe3\xc5\xc7=\x1e\xdf\xb8\xc9`h\xf52\xf7uP\n\xf2\xdc\xc9\xde\xa3A\xe1\xeek\xf3-\x80\x0c\x88q\xe64\x1bi\xf4\x1d\xd9\xe9\x99TP#\x07\xe4(I\xa8\xe8\xc5\xa08\x99\x9e\x0fH6\x8b\xce!0|t~\x1f;\xa2\x13\xdfO\xf6\xefr\x1c%\"\x13P\x9d)+\xbc\x9f\x96\xed=\xedt\xdcqO-\xab7+\xba\xff\xa3C\xa3M\xfb\xa6H\x14\xabQ\xdd\x05\x16\xc9\x8a4\x82\xd5B\x13\x03\xcf\xccv\xce\xe5\xa9\xa0\x8f '\x88|v\xedH\xcd\xe0d\x0co\xd0\x0e\xf85$\")\xce3\x95\x14\xe7YeSm8\x93\xbb\xbb8\x93\xb0\xff\xb4N\xae\xabS\xfb)\xee\xdap\xff\xe9\x1e\xca%\xec?\xad\x9f\xf2b\xd4\x9d\x99D\xb8\xdaQ\xc0\xb9\xd3d\x19\n\x98\x974cu\x00\xcf\x04xK\xe3z\xfe\xdc\xcc\x7f\x07\x8eD\xea \xb1 \xf2\x91-N\xae\x1b\xb5\xf8&\xc8)\xcb\xea\xf9\xcbJ>Lm\x1dd]\x01\x01\xe9_\x1dde\x82\x00\x86\x91GF\x1dnQ\x1b\x14\xfaS\xc0\xae\xea@7&\xd0\xab\x90\xd3lo\x17\xea\xac\x03^6\x00\x9f<B\x01/L\xc0\xd7Q\xb6\x8fB]\xd5\xa0&OP\xb0\x93\x1a\x98\xa5q\xd7&\xd8\xa7\xc0\xf6\xd1\xd3\x06\xd8qHW1\xf3Q\xe8\xe3:\xb4\xa5\x8d\x9f\xebpE#\xbbP\x88\xdd\xdb\xc6\x11\xecV\x03MTqDz\x15\x80\x94\x0c=\xc6!\xe0\xe9\n\x8fsZ\xa2N\xe4\xec\x85\x82i\xb3 \xa4\x87\xad\x15\n\xb4v\xe4n[k]\xb4\x96\x06\x8f\xf5\x185\x00eo,-\xba\xb4\xa4_X\xd2\xaf,\xe9'\x96\xf4kK\xfa\xa9%\xfd\xd8\x92\xfe\xb9\xb5\xefyk\xdf\xbd\xeeQ\xb7\x94\x9c[Z\xb3\xec\xae\xd1\xbe8\xe2\xd6\xc2MV\xa9(\xe8w\x7f\xd5Rr\xddZ\x92\xbav=\x0f\xf8\xb5\xd1\xc1\xd6c\xbf\xda\xc8\xc4\x0c\x9c\xd1\xb2\xf1%\xa0bi(.\x7f\xe3\\[\x93\x18\x1e\x8a\x127\x19{?\x9f\xa7,\xd3oo\xe4MyG\xaf0\xf2\xe6\xe1oW\x7f\xf9\xf3\xc3\xae.\xd9\xa8\x98f\x03\xd98\xe5y\xe2\x81\xfe\x0f\xbbf\x9e \xb7q\xcae\x1c\xd24{]\x90!\xc5\xdb\xf0\xf6\xa4mC\x04\xc9\x95yeb8F\xc0Y&\xc9\xb4\x1d\x12.u\x8d\xdf\xcf\x11V\xa9\xdf\xd8\xe8e^\xf8\x08p\x03E\x84\x81J\xd7\x1f\xff\x93\xd6^\xd8k\xddY{\xb4\xff\x14\x0b[(z\x8a\xbb\xf0\x9b\xec=\xe9\x1c\x01\xcbt\xa0N;*\xfd\x13\xecX }\xef\xff\xf1\x15\\E\xf3\xcd]Cw\xc8\xad*.9\x9a=,j\xc6\x0el\x9dI\x98\x8b\xdez\xa9\x8e\x16u\xb4\xbb\xb0M\xc0\xcf\xb6*\x83 \xbb5$\x1f\x94\xe7\xaf\xcd\xfe\xbc\xeaw\xc4\xa2\x08\xac\xd7!,,\x1c\xa4`\xeb\xcd\xea\xd4n\xed\x0e\x06\xe0Z\xd6F\xaf\xd8C\xe6\xa2\xb4H\x1c\xf7-\x8br\xbf\xce\xeb\x18\x82\x9b }K\xe3&\x07C!\xba)\x05\x8f\xe4x\xa3\xf3\xcd\x1a=i\x08\xb3d\xa3\x1bq4\x82\x06\x8bs\xcb\x0d\x05\xc1YA\xc8\x0b\xc1\x1a\x0c\x95\xd2\x0d7\xca~\xe3\xaa\xe6N\xe3}\xca\xb2\x7f\xdb\xf1\x06f\xef_=\xde\x96\xfb\xbb\xfd\xfd:\x0b\xae\xef\xef\xea,\xb8b\xcdw:Q\xb1](S\\\x82\xc1\xc5\x94\xba\xa7q\x19(\x13@1P\xb8S\xf1\xee\xd9\x8c\xba\x02\xf7\x0c\xce;\xba\xdc-\xc1\xb3\xd21\xb6\xab\"\xbc\xf1\x87\x84\xcd22\"\x93\xf3\x82J\xb8\xedlL\x1a\xa1\xb4\xd5\x11\xb8?\xb9\xcb\xf8\xea\xbb\xc1\x17dW)\xf5*9X6\x14\xb8t4\xb9\xfd\xc1\xb6\xbb\xfb\xb4\xb3evY\x9c8^\x95\x96\xc1\xf4\xf67j\xfb\xfb\xb7&\x04\x8a\xbb \xa9\xfc\xac\xc6\xe9P\x8e\xcfD`\x88Y\xd7:\xb3Ofc\xaf\xe8\xbd\xd55d\x84\xb9R\xa7\xc3\xa2\xcd\xb1VF(\x98\x9c\xd9\xbc\x0c\xae.X\x903\x07 g\x06\xfav0\x94WHn\x0e\x177 oN\xc9\x0b\x12\xa2\xc1g\xd6\xcaX$\x9b\xa5\x88\x16QD\xbe';\x80t]o\x00\x1eL\xbe'\x13\xb1\xd6\\oH\"\xb19\x8c\xce\x88\xe5\x97\x0f\x89'~Q\xd9\x82Y\xae\x9a|N\x0e\x88gc\xcf\x88\xc1\x02\xdfvVP\xae@LV=\x84\xbb\xf2\x13\x8d] J&\"H\x8fAs\xeb4N\x18\xf5\xe9e\x88]\xa8l\xb4\x1a\x81\xe0\xfc\xf2Eb\xf7/_\xc8\xd6\x96K\x8b+\"6\xa3\xe7]\xdb\xb4\x1b\xe7\xe1\xe2#-\x1b\x8a\n-\xeb\xe6\x02\x00\xcez\xa7\x95\xb3\xd6\xf1\x03l\x1c\xfd\xa4W\xe9!\x89f;\x98>\x01\xd4\xb1\xbbA\x1d\xe2\xef\xc4Z\xd3\xde\xc65\x89\xbf\xbb\xbd\xbc\xe7j+a1\xd6\xb7]\xa9\xfb\xb6\x1b\x90G\xf8R\x9d<\xc3tk\x04\x1b\xdbzH\x90\x9aL\xcd\xc9\xb8\x143;-\x91\x0c*^\xf5\x9aHH<}<\xfb)\x83\x07\xc1~\xe0\x00\xa6\xbb\xbf\x06@\xcd\"V\xb0i\x01\xbe\xf3\xf0\x18`\xdd\xbb\xc5\xb2O[93\xbd\x04,\xab\xa4{\xe3j\xd6h\x7f\xa76\xb2bYL\x9e4\x97\xc4K\x9a\xb1q\xc4\xaf6\xc5:\x9a\xdeA&0hj\xbf\xf5\xe9\xfbZ;\x02\xb5\xf9 \xc8\x01{\x8e\x88K\xc9\x08\xf5O+\x98L\x88\x86#\x0e\xa7\xef\xc9\x0e\xf6\x15\x0d\xb7\xbd\x9d\x91\xef\x0fHapnx\x8e\xdei\xaa\xd4}\x95\x1a\x82\x19\xae\xd7W\xdb\xb8\x9a\xcd,j\xbc'\x89\xe1\xe4\x11.\xe3hluEn?\xc3\xc9\xed\x06S\x9a\x93\x03T\x0d&\x85\xf4\x86\x16L\xd8}\x95Y-\xe0\x011\xde\x89G@ \xdb\xcd\xe0\xf0\x92\xb1\xbb\x80\xc6L\x95\xd6Os\xd8\xc5\x94\xa0\xf3[\xd5\x0c\xc9\x06$,\xf1\xb1\xe6|\x80D\xcafQ\x1d#[\xa8+o\xb3\xa9\xda\x7f\x86\xc7\x93\xd8\xdb\xe9\xbe\x1a\xb7R\xbc\x05\x08v\n\x13\xe3\xfb\x18iG\xf4\xbahU\xa1\x90\xfc\xaf$\xbf\xa2YPeL\xec\xbbR\x14\xd9\x85\"\xbb\xe7\x16\xc5\x10\xa2\xe7\x85\x1aW\xd6\xda\x9f;\xea\xe6Ip\xdan0\x1a\x81mu\xd1\x06\xa9Y\xcf]\xf3`\xcd\xe5U\xb4l\xfc\x0b\xb2g2\x06T\xdak\x81^c\xb1p\x05\x95A\xb6\xb7\x13\x08\x16h\xc3\x12\x9aP\x8ef\x89E\xf5\x1d\xcc\x95\x81\xdcNe4\x8f\xa6\x92\x92U\xb8V\x0bip\xeb\x83\xbeyp\xab\x95fa\xc2\xf7\xf6m\x11\xe5\xfap\x83\x81\xab\x83='bS\x92m\xe28\x1b6\xbd+\x12\xcb\xfe3\x1c\xcb\xed?{j \x1bWo+\xd8/\x03j\xf2xH\xaa\x8e\x8aB\x9a.e(\x882\x91\xe6\xd9\xb2\x9a\xb2\xe4i\xcd\xfd\x8f\x18\xa4&\x8cR\xb0\xae86Jku\xa5\x8c&^-\xed\x1f9Knj\x1f\xa0\xd9\xb2Y\x9dH\xad} asRs)T.\xb2l\x0c!P\xc9\x01\xb9\x1c\x92l\x9c\xb0\x94\x87\xebN\x97\xaejr\xc1\xc7\xdd\xd6\x04\xfc\xba\xe9\xa2\xa6\xaf\x9a\xafF\x95r\x1f\xf5\xac\x98\x91C\xb4\xf2b3V<\xac\xc3g\xe6<Y\xd1v\x93D>\x0eRIl*y\x16H}.\xad\xd7D\x15\xdf\xf9\x01D\xe0\x96_\x81\x18\xcb\xa6\x1f\x0f\x99\xac\xafZ\xaa\x0d\xfb\x94\x88%\x15TW.\x85\xd0\xc1\xee\x8c\x8e~\xdf\x19=\x1bo\x8f\xce\xb7\xa7\x83\x87A\xf3\x98}8\x9d\xed\x8c\x9e\x9d\xff\xe5\xcf\x0f\x9bG\xed\xc3\xbf\xbb\xbf=\xfc\xed\xe1\xa1{\xb8\xf5\xdb\xc3\xc1\xec\xef\xbf\x1d\xfe\x96\x9e\xffe\xe0\xfev8\xfb;\xfc:\xac\x97\x02\xb3\x04\xe7\x0fgH\x9c\xaf\xe2\xcf\x17\xf1\xe7\xb7\xdf\xc4\xdf\xbf\x8b?\xff\xe5\x9ck\x03\xa1\x99\xf3B\xa4|\xef\x0c\xc9w\xcew\x90\x07q\x80E\x81\x04\xfeF\xf07s\xce\x07\xcd\xd3{\xe6|WV\x15\xd6\x00\xe6\x00\xf0\x1f\xa2\xf8C\xf1\xe7P\xfcy.\xfe\xfc\xaf\xb2\x90W+\x14C\xa1\x12\xfe\x7f95s\n\x1fFd\xb6-\x87\xf4h\xf4\xb7\x8b\xd1\xf9\x1f;\xc3'{_\xeb\xa3\xb0T\x83\x8f\x80\x0e\xdc\xf1_\x06u\xf85ja\xf8\xdftM\xa5!\x1b\xce\x958\x06\x80\xd3\xe0(j\xd6{\xabo\xff\x89\x05\xfa \x88\xcb\x84V.r,\x86\x89s[\x99\x05\x8f\x976\x83\xc8y`\xe3\xdf\x1ch\x84\xd3\x92\x99Zs\xe7-%Uk\xacEE\x83:\x87\xedF\x9d%\xfb\xe8Yri\x93q\xfc\xff\xec\xbd\xeb~\xdbF\x928\xfa}\x9e\xa2\x84\xec8@\x08R\xa4\xe4+mZ\xeb\xc8\xcaF3\x89\xedc\xd93\xbb\x87V\xf4\x87\xc8&\x89\x18\x048\x00\xa8K\xc6\xdeg9\xcfr\x9e\xec\xff\xeb\xaa\xeeF\x03\xe8\x06@\xdb\xc9dv\x07\x1fl\x11\xe8{\xd7\xbd\xab\xab\xe8\xfa:\x17<\x06a\xa6\\\x8d\xc9\xbc\xa2S\x95\xa6\xe4\xb5\xd2\x1b/4R\xa7\x94(\xb7\x1a@\xdde\x0e\xc7\xa1Q)I\xe9\xdb\xec3\xe2\x12\xbaF,-)\x05^\x05i\xb0f9K\xe1\xebm\x1a}M\x19\x05.\x19\x04\"gU-\x81\x80\xc9Q=,<\x01_.\\\xe7\xc81(s[\x94Q\x8b\x14g\\h\xd3\xea|\xe5xp\xc4\xe9\x02\x8c9a\xa8\xd7\x8f(S\xc6&\n\xf3\x9a\x97z4\x1d\x9e\xc3\x04\xff+\xaeV\xbd{\xb7\xbfD\xf2d\x18\xf0%\xa6\xfb\x99@4\xf89 \xe3Z{|\xf5x\x91\xcbA\x9e\x86k\xd7\xf3a\x0fS\x8d\xcb\xb4\xc54\n>\xe6\x06\xf3\x17\xef\xe7\x02&\x90\x91#\xc3\xa5Ew\xbd(\x07\xf0\x16\xcc\xff\xb2\xcc\xf9/\xeb\x02\xc3\x05J\xc1\x17\\\xf8>\x92\x81\xd0\xa4\xd4\xc1\xdfV\xa4\x8e\x1c\x8e\xe0V\x80\x9bV\x18\xc3\x96\xe6\xa9;\xf2T\x10n\xe3\x07(\xa2\xad\xc9N\x1c\xa7\xd2\xc5\xdf?\x8a82e\\\xac-\xfe5\xd7\xd6\xcd\x8b\x82\x91\xffl\x8by\x02\x13py\xe5\xeb\xe9\xf0\xdc\x1b\xe4\xc9\x0f\xc95K\x8f\x83\xcc\xe8>^\x15\x08O|\xa0-\x15\x13\xbb\xaey\x1f@m\xb4x\x19\x81\xab\xa6\x18\xc1\xf0r\xb0\xc6H\xea\xfb?q\x96=\xfd\xe9\xdf\xdf\xed\x9f\xf7\xfe]\xfc\xbfo\xbc\xef\xca\x87\x8dn\x83\xfb\xfb\x0e\xc2\x8e\xea~\xe8\xc3\x81a\xd4{7\xd4\xdd\x9d;\xb0\x9e^\xe3\x8dZ\xb74\xec\x03\xaf&\xd5V#\x91\xd6\xe7\xb0\x87m\xf1-,\x9a\xdf[N\xaf\xcd\x97t\x95&}\xe6\xc3\xb1\x8f\x9e\x87\xfd\x91\x8f\xde\x82\xc3\xc7\xf0\x0c\x9e\xc0F]\x85zfNP\xc6\x1f\x81\xec\xeeK\x1c\xbeD\xf4\xcd\xf4\xd9\xb9\x88/\xdc'tz\xcf\x87\xf4\x12\x9e\xc0{z\xcd\xfb{iP\xaa\xb8^J-\x1e\x13)\xa1\xcaGpY8\xffpJ\xf2\xef\x98\xa9\xbb\xf6\xd2\x87\xf7\xa2\xdf3ZO\xbcw0\xf4\xe1\xd8S\x90\x81\xaf\x8e1\xa1}YM\x98\xb3Y2go_\x9f\xaa E\xee\x99\xe7\xc9\xb5\xb1(\xbd\xda\x82-\xba,\x18_\xf2\x97\x8f\x8bi\x96\x17n\xf1y\x0bG\x15d\xb1K \xfce\xddG[\x95\xf7\x95Uy\xef)\x12\x94f\xec\xfb$\xcb]\xaf\xae\x14\x95\x7f\x7f\xf8\x00\x8e%\xb3\xd6+<\xd7&\x9c(U\x12\x8e\xe7\xce\xb9\xe9[\xe9\x974'\xf4adP\xd5\x11\xec_\x99\xef\x81+\x00\x7fS\x1d\xb2\xa0\xec\xfb\xef\x06\xfb\x9e\x0f?r\x82\x83\xbb\xe8\xc3\x1b\xb9b\xb4\xa1?6\xee$\x88Y\x9e\xc2\x04\xdeL\x9f\xb5\\\xa2?Et<\x15\xd4e\xdezq^\x0d\xffgA\x85_\xd0\x10_\xc3\x04N\x15\xa0\xbd\x80'\xf0\xfa1\xbc\xe0\xa3<\x1d\xccVAz\x9c\xcc\xd9\xb3\xdc}\xe1\xc1S\x18\x1d<\x80#\xf8\x19z\x13pn8\xcf\xc5?O\xa7/\x1a\xc6\nrY\x7f\xee<T\x10\x0b\xf1\x9c/D\x01\\\xcf,\xc6\xde\xea\xf3\x83V\xed\x19\xa1e\xa7zoq%h\x90+\x8b\xd3Q\xb9<G\x8c\xe7t\x85\xec\xedtt\xee\xf9\xf0\xc3`\x1bg\xabp\x91\xbbo\xa7\x07\xe7\x1e\xbe\x11\x10\xc7\x0b\xa3\xa7\xfa>\x97\x8b~ \x19\xc2\x198\x1e\xf4\xe0\xd2\x80\x15\xcf\x8b\x12\xedc\xb9LY\xf0\xbe\xb1T\xdd\xbc\xd4\xfc\xa5\xfe\xd6\x88GO\xe1\xe0\xde=\x99\xeeA\x1b\xbd\xe3H\xc9\xc0\x86\xe8eV\xec\xc3+-vvQ%\x1d\xe4\xc9\xb3\xb3\xe3\xd3\xd3\xf2\x17\xd3\x05b\x0e2\x7f\x93\xbd\xa0\x15\xe6\x08\x9c1\n\xa1\xea\xcd\x98\x83\xbeq\xbe\xdfu%D:\xe9\xfb\x0ez\xf07]\xe8\xeai\x8d\xf0))\x01\xc8\xba\nRb\xf2\xcd\xeb\xdb\x07\xce\xbb9\xccp\xea~)\x08\x9d\x06H\x97^+\x1f\xbf\x9a\x9e\x9c[.E\n:\xc5i\xd6\xac\xe06\xad\xa4\x8a/\xf5/\xbc\x8e\x95L\xf1\x8e\x05//\xb8\xd1/\x8d\xa8\xcf\x1b\xfd\x96\x8b\xd8q\x8dm\xfe\xd2\x80\x02\xdf\"\xc9\xff\x05\x97\x05\xabg\xb3`\xc3x_\x8a\x17!y\xfe\xc5#\x84\xfa\xd6L\xde\xeb\xf0^\x97A\xffR\xe2\xad\\\x92/\x18\xef_\xb4\xbd&\xcb\x9e\x92\xbe\xfeR\xe1\x8aC\x1f\xfeR\x05`\xde\xfc\xf7\xe5\xe6\x8f\xaa\x88\xaf\xad\xe9\xf7u\xf1]u\xf7\xbdW\x11\xb1\x8b/RH)\xc6*\xcb\x94\xa4||\xe9\xd5G\xfd\xfd\x8eb\xfdeQR\xd3A8\xb1[NO\x10\x90\xcb\xb8\xa1\x82w\xab\xd2\xa6\xfa\\9\xabj62\xbb\x18\x0d\xc8\x04e\x05e\xd0\xea\xd8\x04\x8d\xbf\xaa\x88\xb54\xc1&R t\xaf\xbfA\x0f\xfe\xda\x80\x89\xba\xba&\xf43\xfc[\x1a\x16+JP%^p\xdd\xc8i:eU\xd4\x05\x05P\xc3\xa0\x992~\xe2?\x06Lc\x9e\xa7\xc5\x199|\xb6\x1f\xfa\x9c\x88\x92 \x7f\x02\\N\xae\x03\xae\x8aM\xac4'\xec\xbbNhc\xf3&\xd4\x0b\xa6Z\xcc\xe2\x95\xadPh *\x1b @\x96\x87YP\xed#2<H\xb6\x80\xef\xaa\xac\x8a\xaf\x92,%\x05\xe72yVX:F\x13D\xb9\xfa\x18\xa5\xd4^\xe5m\x8f\xcb\xa7\x9e~J@\xdd\xf0e-\xb3)\xaf\x8c\xc1ec\x92\x86\xa1\xfcK)\xbca\xf1I\x97:\x02\xc4o\xb2\xcc\x84\x8b\xdb\x12\x8e\xd77s[\x87}\xf4\x0er\x8e\xf8\x18\x03\x13X)\x1fE^lL\xac*\x97D\xa7?\x12\x89a\xc4D\xab\xaa(\xe7\xfa\x94ou9\xcd\xcf\xb1\xec\x9e\xb4\xf8\x1c\xd16\xa0\"\xdc\x13^e\x0eo\x01\x0d+\x92+\xc6(\xa8>\xcb\xdd!\xf5\x14+\xe6\x18#\xc1*\x9c\xd1\xb0.\x86\xe0p\xberD\xc0\xc7r]\x0ex\xfc[\x0f\x8f\xad\xb6r\xe2\x18\xa8\xabR\x94/\x14-\xca\x16ij\x0fB>Ht7/phz\xf4\xd5y)ZOSLQ#B\x96\x89\x8a\xc7\xe5E\xec{\xab:q\xber|p\xfexp\xe8\xe0\xd7\xd4FEL\x87<\x96\x83\x18\xdc\xa2\xf2\xe1\x8b~.\xe3)\xba\xd5\xd2\x97\xe1\xf4\xc7du\xac\x18\x1d\xcd6\x91\xdcl\x16\x85\xe24K\x1b\xa1O\xd4\xb0\x81\"\x97\xe2\xb7`\xbb\x14\xc2\xa5\x8aQ\x9e\x8f\x14e\xf8\x18\x02x\xa2\"\x84>\x86\xc0\x9ef\x1d\xfdO\xa6\x81\xc9\x83q\xba=\x17\x086\xdd\x9e7\x8c\x8eB\x93\nQ\x02\xbd&V>\x97\xaa\xc9\x96\xc89H\x11\x0cH\x1d\xf5i\xdc$\xae\xcb\x0eL\xe1\x1c\x85\x82\x90\xd4\xba\xd1\x9c\x93\xd5\xc3\xac\xa2Uu\xf8\x18\"x\x02E\xd6\xf9\xa8Y\\\x9c\xc1\x04\xb2id\x11\x17\x1d9\x16B\xb5\x19\xe1\xf1tF\xd1\x08f\x06\xf1\xd5z\\\xbe\x9c\xc6jf\xe2:zI\xc0\x88\xcb\xd2E\xacNN\xeb2\x86ya[6\xadXW@g_\xf5\x8bHU\xd3\xa2\xa3\xb4\xbe\x9c\x16u\xcem+Z\n\x96T\xdd\x9e\x0dm\xcf\xa6dB\xda\xb4\x1b\x1e0\x04\xf1t\xd3\xa0\xcc\xc7\xd39\xed\xc8\xdc\x12K\xcc\xf8\xb6\x11L;l,\xa1\x82f\x95-\x16\xc8\xe7\xb8\xc09\xf8\x87\x0f\xb0./\\i?\x99\xfaQ\x9f\\CD\xb7R@D\x97U\xc4\x16O\x9a\xf4\xf7\xb9\"\xb0\xd2X\xee\x9e\xcb\xa4\x8a\xb8\x1a\x90=\xc0\xabEx\x92O1\x83\xa2\x162*V\xd2E]V\xd6\xaf=$\x07\x1c\xa8VB+\\)\xe3\x03~]\xe9\xfe\xf8\xf5\xcf\xa5\xf5Y c\xc3\xbe!\xdf\xbbmC\x94\xf0\xcf\xc4\x9f\xbcM)\xff3\xfa\xcb\x17\xd8G4LL\x93+\x0b\xb14\x922\xfc\xc3\xd7\xb1tR\x999\x13\xeat,}+\x18\xfeQ\x9a\xc2\x87\x0f\x107H\xff @\xfc\xaa\x8c\xe8\x16\xc1R>x\x04\xd8\xa2\x03\xf0G\xd1\x90+\xe8\xc1m\x87\x05T\x18\xa1y\x99\xe8\x02\x91\xa2\xd4\x9f@\x83\xe4IU\x99\xce9\xe2(\xa1x[H3\xf5\x05\xb8(\xed\x173\xb6\xc4:\xb5t\x0d\x13\xb8\xe0\x8d\\\xd2\x16a\x9bD\x17E\xedz\x9d\x13\x98\xc0u\xfd\xf5MmR\xdad\nL\xe4\xfdL\x0d\x11\x17\xcf8\n\xafJ\xb4\xa0<\x90z\x1b\x1a\xb9\x06:\xfc\xd0X\x8bA9?\x13\x1c\xa5\x84\xa7\x1a\xdc\x92sN\xb1\x08\xae\xe0\xe77\x1c\x81\x8f\xe8\xbf\x89\xfc>\x86\x1b\x85\xb0\xf4\xca\xf34t\xe2\x0d\x97YM\x99@P_\xac\xdc5\xabu\xbd\xa2\xaeW\xd45\x93]\x17\xb4\x82\xa9\xae\x15q\xc2\x0c\x7f>n\xedu\xad-D\x135+^\xef\xc23\x13\x01)\xca\x90R\xa6\xba\x8e\x15\xb6[ B\xa9.\xbe<\xd2\x7f\x8c\xb5\xba>t%T\x1c\xbc*WY\x903\xf0\x8d]\xa9\x13[<\nso\xe8*\x8b\x0f7\x83M\xb2\xe1\x18\xc9\xdf\xdcH\x17\x96\x95\xd7\xb5[K\x7fx\x08\xffb\x1bE/\xd3\xb71Et\x9e\xbb\xb2\x19\xa3|\x8c\xe0\xe7\x95\x17M\xad\xfa\x8d\xe4A>\xb8\xaf\xb8\xd2\xbc\xe7\x16@H\x7f\x15\n\xed\xbf;\x1eyD\x17\xdf\x04b\xfc\xbb#\x8e\x92\x14\xf1~U4\xac:+\x0d\xe1U\xc1\xfd\x1a\x88`\x87\x85\xf2A.\x89[`=\x8eF{/\xe9?\xdf\"E\x93\xb5\xf2p\xa4\x13\x901g\xa2\xa8\xb1\xc9\x11\x1c\x15\x83\xc1\x8f\x9f*\x02\xee\xdd(xQ\x93\xdcT\xbd\xf6J\xbd\x8a\xb1\n\xad\xb5\x18D!\x9dJ\xd2\xd1*\xe9+\x99\xe5\x98v\x1e\x8dw\xfd\x91\x87^\xb0\xefiA\n\xca.\xff\xba)\x0c\xfaB_w\x06\x84e\xc7\x88q\x03\xf9\xcb\xd3\x10\xf0X\x9c\xef\xfa\xf0\x12\xfb\x92\xb2\xe6Kx\x8a\x12\xe8\xcb~\xdf\x03\xd9\x0e\x1e\xc0\xdeL_\x9e{\x9c\xd4!L\xcd\x98\xfbR\xdc\x7f+:\xe0J\x7f\xf9\xb3O\xa6\xe81<\xc3\x81\xd5>\xf6\xfb\x06Z\xbcG\xe7\xd5'\x16\xc3\xf7c^\xed1<\xf34*\xcb\xc7Pi\x89\xb2\x10\xead\x9a\xaf\x95<n\xdc/\xdek\xb6\x01\\\xcd\x92\xa8\xf5\x1e4k\xc5M!jUL$7t\x94\xe4\x98Ll\xaf|<w\xdci$\xe5V\x0c\xccI\xe1\xec\x1b8\xa2\x13\x9b\x9b\xe2n\xa2\"\x1ath\xf2\x8f\xa3\x1cf\x1fM\xf2\xe9(\x0b\x15\x05\xda\xf1\xad\x7fC\xafJ;\xa1\xcd\xaf\x84\x92\xda\xa6\xc0\xb8D2\n\xd4\xd30\xd1\xfb\xc7\x91\xa3\x92\xd8L\xd3\x97\x02\xf4g\x0b\x93\x15\x13\x8e:\xb4\xeflwF\xce]C\xb8\x1c\x8dU\"0K\xc5,K\xa4F\xd8\x0c10a\xce\xc5\x06(\x0c\xff$\xbf\xe4\x9ak\x11\x99v\x98\xe6\x14\xa3\x1d\x97\xc9K\xa9T\xcct\xfe\xb6kX\xd8\xd2}\x94\xd44\xff\xe41\xec\x7f\xb3'\x1c'\xf7\xf7\xd7\xf9*\x1b\\\xb2\xfd\xcd6\xbe\x9d%s\x06W\xa3\xc1\xe1\xe0\x00.o\xe1\xdf\xd7A\xbe\n\x83\x0c\xbe\xd9/\xd3\x99b\x04\xa1\x89\xbd7F\x07-\x82\x83\xfa\xcd\xe1?\x8b\xe8\x9f\xe6c\x0f4\x9c\xd7\x1b@\x83iZ\xaf\x12\x0c\x96Qr\x19\x90e\x8322\x0c\xae\xc3x\x9e\\\xebo2\x16-\xcc\xddm}\xb4.\x1d\x8c\xee>\xb8\xfb\xf0\xf0\xfe\xdd\x07fM\x8ck\xfc\x87\xf7\xcd\xdff\x18f\xdc\xf8\x89\x83\xf9\x81\xa5\xda\x867\xf9\xd0\xfcm\x0e\x13xP\xbd\x13'\x1f\x8ez\x0f\x0e\xcc\xdf\xb8n9:\xb0\xb4\x8a\x91\xf1\xfa\x16]s\x89~\xc97q\xbf\xbfo.\xc0\x05\xa1\xfd\xe9O\xefn\x0e\x86\xfdw7\x0fN\xce-\xe5.\xb1\xdc\xbb\x9b\x83\x93w\xdb\xc3\xe1\xf0\xe0\xdd\xf6\xbb\xef\x86'\xfc\xdf\xfb\xa3\xf3\xfd\xa5\xb9\xd2\x855\x8f\n\x7f\x92+\x96.\xa2\xe4z\x0c\xceK\xf5'Em\x8c\x19\x9bgp\x1d\xceY\na\x9c\xb3%K3\xc8\x13\xd8\xa4\xc9\x8ceY\x83b\xed\xc4I\xde\xbf\x0c\xb2p\xe6\x8c\xc19\x8d\"\xb6\x0c\"\xd1*\x17\x1dn\x1e\x0e\xc1\x8d\x93\x1c\x02\xc0R\x80h\xb4I\xc28\xf7\x9a\x9a\x0d\xe3\xab \n\xe7}l \x9b\xa6\x17\xd4\xb49\xf1\x9d!\x9d\n\x08\xc55\x82>\xcc\xcc\x9f\xb9\x8e\xfac\x90\xaf\x06\x8b(\xb1\xe5\xae\xe4:\x01\x19\xb5\x07\x8b4Y\x1f\x0bo\x1a\xcd\x9dX>\xca\xad\xf8\xcc|<\x00*\xc6\xfe\xeb ^\n/\xdc\x8b)3\xdaE\xed\xad\x1f[o\xd4A\xd5\x1e\xaeB\x85\xa2I|z\xfe\x18b\x0c\xc4\x9eR\x84X\n]n1hI?\xe5\x9d\xc6\xf6\xbeql\xc5\xb0\n\x89\xc2\x0e\x07\xa9\xe1\x00P}\x93\x02y!\xef\x82<\xf8\x89\xb98\xd5\x03\xf4\xfbC\xceON=)\xf4\xe0\xd8\xa5\x13Su\xe6r\xe9s\xc9\xd6S6@\xca \xeb\x15N;;\xcd\xfe\x99}\xdf\xd5\xb6P\xac\x06\xda\x0e\x1f\xaf:\x0d}\xe1D-\x05\xef\x84\xae\xa9\xb9\xa4jk\xee[I\xaf\xe7y\x1c\xb5\xee\xdd;xt\x9f8\xc7\x93 \xdc\xbb\x7f8z\x84R\x0b\xaf\x08G\xfc\xc5\xc1\x10\xe3\xa2\xdc\xbf{ot\x00\xe24\xad\xde\x96G\x01\xce\xb8\xbc\xea\xba\xa3\xe1\xc1!\xdc\xe1\xbb\xf7\xe4 \x8c\x86(\xc5\x88w1\xffq\xff\xde\xbd\xc3\xfb(X\x89*9\x17\xa0\xb8r0\x06\xf5\xe6\x0b\xc2\xd2K\xfbj\x8a\xf6\x10\x13\x9a\x8f\xe4\xe4#O\x9el\x00\x05\xfa\xbd\xa1\xa78\xd7{\xa0\x0e<o8\xdc\xf4'r \x9e>}\n\xa3!\xdc\x01\\\x9e\x0f\xb4\x1dB\xa0\xa1\xb5\xff\x00b\xe5\x18\x1d*\xf2&\x0c!\xcd\x01\xcf\x02\x05\xb4\xed\x08l\xaf\x1aQM\xcd\xa5\x07\x07\x07\xd0\x83\x07\xf7\xe0\x1bp\x19<\x81\x83\xfb\x1e\xf4\xc1u\x87\x18\xcd\x0c7\xfb\xden=\xbf\xb1\xdd<\x90\xcf\x95\xb8\xfd`I\x89\x82\xb8\x80\x98 Gp\xe22\xd8\x879\x06\x95\x03\xbe\xae\xc2G\x81\xde\xe7\xdec\xdc\x8fk\xf8\x06\x16\xf8\xf91G\xe4 D\x1e\xae6\x95\xban\x06\xbb\x13\x97\xe3\xbe{\x8d~3\xf0\x0d\xf0*._\x99\x8d\xb7\xdb\xc4\x7f\xb4\xc3\x98\x86\xdaz\xce\x18L\x075\xf7a\xe9\xc3-9\xe2\x98\x8c\x9a\xf2\xb9\xd0I\xb6\xb5\xd4\xb5\xf9\x16\xbe|8\xbf\xba\xb2\x7f>\xae\x1b\xc8\xe4\x83\xfb\"(\x85\xeeA\xbd\xf6<xB\x11[\xf0\xeb\xd0\xf3\xc5\xf6B\nO \xc6\xab\xb5^\x99\xbc\xa4H\xa7F\x07\x0fy\xad3W\x13\x15<\x1f.\x89ZT*X6\x11G\x85WB1l\xcc\x11\xc4|\x1fa\xcc\xbb\xe7\x04\xef\xc2z\xa1W\xd5\x0e\xd1\x14\x8d\x82\xf1\xc8\xc7c\xdd\x88\xd7}:\x81\x0b1\xbc\xb2\xc8\xe1\xf9\xe0\xba\\\xbato\xcd$\xb8\x0fw\x1f\x02'\x92p\x04\xb7\xd0\xe7(6\xc6?\xee\xdfC\x0c\x13\xaf\xef\xdf\x13\xaf\x1f=\xd0_?z\x00c\x0e\xc0O'\x94\x93e\x03O\xe1\xc4u3\xe8\xc3\xb5\x07\xfb\x10\x90\x9a}\xe6:Rls\xd0P\xdb\x9b\xc0\x06\xbe\xe1p\xb5\xe7n\xe0 \xa5\x04\xdbr\x0ep\x8cI\x95\xc7\xb0\xe5m\x1eC\x0f\x16p\x04\x0b|\xd1\x87c\xcf{\x0c[\x814\x01\xf6\x95q\x0cX\n\xd9hn\xec.\x80o&\xb0\xb4\x13K\x0eGo\xdck\xe8sP\xcf5\xbfr\xbe;>f\x82\x82\xd0\xf3\xe1\xc4\xbdF<\x86\xa7\xc0'xc\xe8\xea\x86\xf0\x9d\xca\xf1\x89\xfe\x11\xb3\x03_J\x0b\xd1u\xaf\x87\xa1\xa7n\xba\xfa\xfcA\x81\xfb/\xdd\xcb\xddp\xfc\xf4sq\xdc\x87\x0b\x9fC\x9b\xb8>QMr!\x1f\x04\xccK\xe9\xc3\xf5\x0c]\xb6\xa4\xb0\x96#\n\xa3\xa8$\x84\x83U\xc9{\xe1\x92c\\\xe0\x11tN\x83s\x8e\x9e\x02\xd5\xde\x13j\xdd\xb85\xaf\xa0R\xc7)\x06{\x99\xc0{\xd5g\xa2\xd5^{\x84\xd9\x97\xed\xa8\xc5\x91)k\x19\xdcS\x91\x81\xfc\x16\x9e\x88,\xe6\xbc\xd6m\x837\xa8h\xba\x0fy\x81\x1a1G\x0d\xf7\x02c\x82pBn\x02\xda\x98C\x12U\xe4\x84\xfe\x82\x96rk\x1a\x9f\xb5o\x10\xa6\xc7\xd2\xea\xe2\xf8{\xbd\x18\xa1\xb8\xde\xef-P\xda3\xfbb\xc9\x07g\xc6IK\xec\xa3\x8e\x1a=\x96\xc8\xcc\xd1q\xce\x919\x14\xc8<\xe7\x0b\x17j\xc8<\xc70(\xdec\x98\x0bd\xe68\xb8\x81>\x87<\xa9\xe8,\xfd\x02\x04^\xb9K.\xf3\xc2\x1f98\x0e=O8\x15\x9c\xb8\xc7\x0d<S\x7f\xb4\x966\xb2\x85\x10\xf1>F(O\xf9\xb4\x13OAj\xafW\x97\xf0\xf4\xe7c\xaf\x17\xf3R\xf5\x84S\xd0\x86\xc7\xef\x9b\x84\xa4\xea\x9b\xadU\x17\xbebi\x16&\xf1\x18\x1c4\xe6X\xb4\xd0\xed,;0\xe5\xb2\x96\x0f] \x1a\xc33;\x9b%\x1f\xb01\xbc4O\xd5b\xb4\x10\xed\xfeh\xfe,\xdb<5\x7f\x16.\xf6\xe3\x8e\x12\xb1\\\xd8\xee2\xb4V\xebv\x90\xb3,\xa7\x98|\xceM\xdc\xef;\xd0#\xd2iJ\x99-\x9f\x8f\x16\x02n\x9b\xcf\xdb8\xa4\x19w\x1b\xdfg\xcdh\xa9\xcd\xe8GW\xe6\xa6\xb9[\xb9k\xf8i\xf3\xab\x83\xac\x0fZ\xbeD\x94n\xac\xa6Y\xf9\x88qn\xeb\x8d\x15\xc1nP,g\x14\x02\xd3\xd5c}$\x15\xffC\xdd\xe3\xcf\x90\xe6\x86\xffy8\xb2d\xbb\xe9\x14\xdfC\xef\xbc<\x1f\xe9\"\xd8\xb6\xabb\xbe\xa6\x0c%\xe5\xb9\xf8\x95\xe6\xc9\x91\xaak\xf3\x16K\xab\x88\xf58i\xeb\xec\xc56\x8a:v%\"\x85vjR;1\xde\xad\xf5\x1dC\x89u\xda\xcb|@\x84 \x0d\xf8\xf2\x16z\xec>|\xf4\x88+\xb7\x03\"Kd\xdd\x97\xde\xc9@q\xaa\xba%\xf3.\xf7\xaa^+\x91,m\x8a5\xd2\x12\x99J%\xb1\xa9e\xf0\x81\x96\xb0\x87>\xd4l\xf8x\x84\x81G\x89w\x1cbzxC\xd8\x99\x18\xf2\x8a\x07\x86L\x90\xa19M1zC\x0c\x853D\xe5\xc89\xa8\xb7\x8cqE\xde\xf5\xf6+\xc29\xd3\x0ckU;\x8ct\x01\x1d\xb1\xc3\xca\x888\xac;1\xe6\xa3\xd1q \x1c\xac\x83\x9b?\xb3[\x14v0\x85\xa9zch:\xd2\xcdW\xa5\xaf\x99\x0c\xf5\x19I\xc9 \x13PV\x1bQ\xd61J\xa4\n3\x8c,\n\xbd\x9e1\x833zLJ\xa9{\xe5\xa3\xc9\x9eMg\xc5\xfd\xff-\xfaQ\x0fm\xc6\xc55\x17\xaf\xd5\x81\xa7)5\xc6\x1a\xed\xd7p\x04\xee\x02\xcb\x16gTk!D\xa9wk!\x8c\x8eEY\xfa\x8c\xc7\x94s\xf3\xed\xe1\x85\xe7\x83\xe5b\xf1\x86k\xd6n\xe0\xc3\xdc\xa3\xb0\xd3\xd39\x1e\xb4\xf3\xffI\x16[a\x1cTr\xe0\x9c\xf2\xff}X\x9d\x17\xafV\x16\xec\x87\x02a\x82\x02\x0f\x8a\x89\xe3\xf9\x97\xcc'6\x083\xfc\x9f\x83e\xab\x8by9Q\x90\xb8\xba[CJ\x19&\xb2\x1ecgw\x02\xa1\x8f9m\xf4IWYld\xf8\n\x030atO\x89\x94\xcdA>\xebpB\x95/)gTKm.)\xe5\xe9\x96a\x94\x8bE\x10e\xcc`\x8a\xa4\x06\x05>6\xe7B\xc9\xbe\x0b\xe30g$\xb1\xd0\xc1s\xbd\xbd9[\x04\xdb(ol\xc9q,@\xf3\xd1\xcc\xce\xeb\x84\xb2\x16sX\xb4l\xa7\x97\xbe\xc6\x0dA\xdef\"\x91\xc8\xb3\x1c\x7f\x1eA\xe8\x06(\x9b\xa8\x01\x046\xea\xc0I\xa4\xe1\x16F\xea\x06x\xb5\xc2\x90wW\x8c8qI\xe3\xe3\x9d\xf1\xbf\xba\x08\x92R0\x83\x9e\xb9Of\xb22\n\xa3/\x86\xc2\xb2\xd7\xe4c\xa9\xde\x1c)U<2W\xdc\xd24\x1bF\x84\xf0\xf2\xfb\xa2\x04\xe6`o&\xd6O\x0e\xfa\xeb`\xa3\xe5\x92\\\x07\x9b\x1a\xdb+\x9d\x85M\xcfKV\xcb\xe2\xb8%\xed\xf5<\x99\x035w\xd94\xe5\x05-\xfe*\xd5d\xa8\xa0q{\xcd\x81\xbfy\xbd\xae,\xf9O\xcba,\x99\xd7Y\xb6\xa1 \x97\xbfR\x1a\xd4\xda\xea\xef5\xeb*fb-\x9fn!0\xe5#\xc6\xee\x96\x82.\xe5\x82\xde\xc5\xec\x1ar\xb7\x80(\x97S\x8e\xcb0\x0e\xd2[\xc7\xf3\x8a\xd7\xcee\x90\xb1\xfbw[-\x07V\xa5\xe8\xde]O$M\xed$\xce^iY)\xcdA\xdd\x0f, \xcf\x0f\x87\xe6\x84\xe7\xf7;\x05\xf47\x1c\xc8(\xde3\x01\"\x9d1\x14\x19\x0bb\x91\xb1 uC7\xf6\xd0\xc2\xaa\xc4O_$ \xc6P\xacB\x17\x8e\xd1\xbeV\xb8\xe6 un\x81*}@\x9f6p\xc9 \x84\xbe\x8c\xd7o\x14\xc7`\xf0\x84\xe6\x81\xf0\xe0)\xad\x1a\xaf.j\xa5\x9eN\x14\xd4\x90\x13\xf4n\xc8p\xa5%\xfe5E\x84\x1f\xd57\xf3n\xdb\x86YfL\xb9\x16\xe0\x03\x84m2\x92\xde\xc0^C\xc3\x16\xed\nt2\x9b\x9bQ\xd0\xaa\xaf\xc8\x95-.\xfb\xf9\xb0?\xfd\x89\x02\xf2\xbd\xeb\x7f\xf5o\x7f\xbc\xf3\xf57\xbd\xc1\xbb\x9f.\xfe\xcf\x87\xff>\xdf\x0f\xa5m\xc5\x12\x88L\xfaw\xccVA\x1a\xccrtD\x81\x15\x0b\xe6,\x85E\xc8\xa29\xc4\xc1\x9a\x99\"h(\xf2_\xb2\xd2\x94\xd1\xda2\xe7\x8ef\x87\xb6iW\xf5msg\xa9\xb93\xc9 \xcc\xd4/f7\xba\x19\xc3F$Ak\x88I\x7fK\xbbqWL\xd0\xde\x16\x7f\xe6I\xcc\xc6\xba\x8d\xca\xe0\x10\xa8?\"6\xbb\xd9\xb0\x0b5Rk\x7fkH'%\x06\xbc\x1a\x849\x85\x88\xa7s\xf9)%/\xa5\xb7y\x92\x9e\xef`D\xab\x8f\x13\xe3\x97u\xda\xca\xc4\xbc\x95\xe8\x9f\xb8\x0e6\xa8\xf6\xfb\xe50\x81\x89\x0c>z\x12\xccV\xed\x81\xb1Us\xc1f\xc3\xe29%\xbb\xa9\x8f\x98n`\xa3G\xb5.\xab \x85\xc0\xd0]\x97\xbe\x18:\x98\xb3\xe9\xc8\xe4\x94T\xf4\x88{ \xc4\x93%\xcb5\xa1\xe4E\xb0f\x99\xcb\xbcz\xff\x9d\xe7:\xcd\x1b:\xef\xb4G\xa1\x9d\x9e\xb1\xc1e2\xbf}\x9b\xb1\xb9\x12\x1e_\xa5\xc9:\xcc\xd8 exC\xbaB\x9c\x9eE)\x0b\xe6\xb7\xc0\xffuL\x87jE\x8b\x18\x90\xad\xd3\x00\x83f[\x1e\xbb\x96\x83j\x0f\x02\x0e8\x84$\x8e\x92`\xde\x05\x05\xf8\xc3\xc5\xa6\x94e\xdb(\xb7Y\xe4\xb1I\xc6W\xa0k\x9b\xb1\xcb\x06X\xa1\xb3\x11\xbc\xdb^n\x9bI'_\xab\xef\xc2\x88\xbdFva\xa6R1\xca?&\xe7$I\x0f\x06|w\x9feZ\xb2c\x12\x97:\x8d0k\x826\x94\x9dj9\xef\xabn\xfdP\x99Q\x91b\xd8-\xa5\xe9l\x98A\xc6\x08t\xf5\xaa\x18\x82B\xa4j\xec4\x95\xa8)K\x05\xe2\xa9\x0e\xeb2\xdc\xd1E\x18\x87\xf9\xb7\xc9\xfc\xb6\x93P\xcf\xd7\x85\xaa\xf1\xb6N\xe3\x10\x19\x97\x91\xc6\xe9UL\x07\x01\x1e\x14\x0d\xbda7\xd8\x90\x9d\xf3i\x17\xc1.\xa3\x04\xc3\xda|\x1b%\x97\x9a~\x15f\xaf\xe4\xdf/\x17B^\x91\xed\xf3\xa2\x9d\xdb_$\xe9\xfay\x90\xa3\xf3\xf4w\xe2\xef\x8e\xfd\xc8\xe2\x9d\xfb\xa2\xcb\x05\x18\xcc\x15-\xaco_\xffp\xa6\xbd\xea\xd8\xad\\>M\x9d\xea\xd4{P\xa0\x0c\xe0\xf5d\xb9\xb4\xebJ\x07\x1an\xc1\x84\xe3\x8cL'\xeaC\x0d\x1a8\x1c\xf3\xf5v\xa7\xc6\xfa6\x97Uh\xbe\x07.\x1f\xbcXT\x1e\xf9\x87\x0f\xb0\xa7u\xd0\xb0f\x80WH+\xb2\xac`\x15\xdb8\xdbn\xb8\xa8\xcf\xe6\xf0\xad\x9c\x0d\xaf\xd9\x16\xfc\xada\x95\xecH!s\x94T\xb7\xd0\xe6\xe2H7(\x90Lf\x9ci\xbb\xce,\x89s\x16\xe7}\x1a\"\x1e\x1a\x9a\xb0LE\xc6\x11u\xb3Z]\x1f\x9c\x9c\xdd\xe4\xfb\x9b(\x08\xe3\xc7\\\x8c\xcfX>y\xfb\xe6\xbb\xfeCG\x05\x97-\xb0H\x86\x8cRo\x06\xbc\x95.\xdd\x18\xaayx\xd1\xf5\xd3\x91@\x8d\xa6qz\xc1f\x13\x85\xb3\x80S\xb6\xfd\x9b\xfe\xf5\xf5u\x9f\xa3x\x7f\x9bFda\x9bWgm\x94`\n\xec \nxI4\xa5\x95\xbf\xca\xeb9!\x8521\xef/\xf2\x1b[@j\xbdPy\x11\x0db\x90\xc8\x04P.\xd6\xa5=\x0dz\xad\xcd\xb6\xe2v\xa7\x9e$\x954`\xe1,\xd9r\x8d1\xc9QdS\xe4\x17x5\x082\xe0\x8bnC\xc8\x1d\xc6\xcc\xb1\xadj\x9d\x85BP-\x91\x97\x0e[\xac\xf3\xd8\x1a%8\x92;\xcfq\xd4\xbeO\xa5\xe5\x17X\xc7g\xebz\x83|\xc5bwk2D\x8b\xe1\xe6D<Z\xc7\xf9\x9b\x80b\xbb\x10\x01;\x8a\x80\xf2\xb1\x8b\x82\xf2\xa9\x88\x84|\x9b\x0d\xb2\xa0|>\xfeZh\xd2m \x8ak\x05\x06\xc1Q\xda\xfb\xd85i\x88n^\x98\xf74Kx^\xb1\x84OQ\x956\\yq\xf3i#\xeb\x95\xda\x8b\xddU\x0b*+\xa6/D\xa7\x95\xfb\x0c\xb4\xe7\x00\xbe#\xda\x97\x91\xddB\xd1uQ\x8fj,\n \xae\x15\x9dt\xb4\xe7#\x94\xa8\xbah@\xd5\x9f\xb3$\xfe\x9c\xb6\xfft\xf6\xf2\x05\xf9qX\xa9W\xe9\xbdMY\x98Y-\x18\xf2\xcc\xc5U'\x80\x7f\xff\xe8\xa1\xeaP_\x7f\xa4\x15\xba\xb5\xc4x\xe6\x0f\x06\xf5\xddhK,\xab\xeb\x0d\x92\xd06%\xb7\x85m*S\xed\xccR6gq\x1e\x06QFn\xdf\xc5o\xaeF \xf9\x00\x8a\x00\xb7\xe2\x05\xa1X\xe22\xf9FE\xfe[\xb3|\x95\xcc\xb11\xfaS\xbe'\x87\x19\x86\x7f\xf8t*\xaa\x1cx4I\x18\xef\x1cC\xe9\x9d_\xb57\x18\xf6P\x13\x0ci\x96\xca`i^~\xc3\xec\xf3\xd2o\x19\x98\xb3\xf2\xceI\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedfc\xcf\x04\x00\x05\x1a\xdc*\x8f\x0ftF\xef\x8f\xb8\xbcit\xe7\xfb\xe8\xe6r0r\xe2\xc5O\xe7?N\xde\xa8\xe8\x87k\xe9\xf8\x84\x7f\xa8\xc2\xe2\x87\x96\xc5)e\x0b\x96\xa6( \xd0[\x17\xdb)BRj\x1d|\x7f\xf2\xecy\xed\x0b]\xc7\xb7\xc0<\xaa\xdex\xd12\x8a\x92k6G\xb6\xf0\x1f'o I\x81\xb7\x06)\xfb\xdb\x96eyfB\x08\"rR\x83w\xe3nV\x99E\x07\xab\x8c \x83MV{L\xb1!/\xdf\xddq\x0cV\xc3F3B\xabxP\xbam8i\xbam\xc8\x9f\x94.\xdd\x93\x05]\xcb&\xd2\xc3l\"\xd0V\x1d\x0f\xf7\x04\xf3\x9b8\xc6\x06\xec\xcc3\x97\x16P\x83[\x10\xd7\x91\x0d\xaf\x13\x83\xf4 \x16S[W\xeb\xf6\xa6}_\x93\x86\x0d\x951\xf4\xd3\xa3w\xf1\xfe.\xbbY\xdb\xacq\xdb\xd5\xd0b\xa3\x08\x8a\xec\xe2C\xed\xb6\xbf\xfeH\x7f\x07\xb9qc\xa7\xb9A\xd0\xf7*\xf5\xab\x9e\xb5\xf2\xf9\x9c=\x98[\xf9*q\x84\\O\xb8B\xaa\xf3\x04\x1c\xe1\xea#\x95\xe4,\x0f\xf2-'\xb7\x0e\xfd\xe5`jLN\xf3\xe4\xa71\x1c\x0c\x87\xa2t\xf2^\xc5\x8b\xa5\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\xe8\x95\xb49\x14\xbfj\x1da\x9118/\xff,\xc7f\xe7\x05\xbe\xce\xb5r\xfc_\x84\x9a\xab\x90\xa9j@\xd5\xd2/4\xf0\xb0\xc1\x82\xe5\xe68rW\"\x16\xa0\x19*tS\xc2\x18\x9c\x8a%\x01\xa7g\x08w\xc6\x1fy@5\x06\x87\x0e\xa7\xa80\xfaX\xcac*|E_\xcd\x8dp\x85m\x0cN\xa1\xd0h\x8dp\x0d\xa3\xf8\xd9*\x00\xf2'Oo[\xcca\xda\xa1\x03o\xdf7eO\x96\xcfG\x98\x05\xe8R\xd7\xd5\xad~odo\xcb\x8c8\xb6l\xc0R\xaa\xe6k#\xfel\xda\x0bM\xfd\x1e\x83\xa3)\x1aT\xa9\x8e\x9ef\xd1\xa8d&\xf4\x10r\xae0\x95\x9dtv:\x95\xfa\xd6\xb9\xe3\x17.P\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83\xe5z\xea\xba\x93\\\x06\xba\xeb\xc6\x9d;\xc07\xe9/!\xbbn0\xbf\x99\x81\xc0<\x88\xa5\xf4K\x13V\xda0\xe3\x8d7;[\xe9\x8f>\xb4\xc2\x01\xb8\xd5E\x8d\xc4E\xf3@\xebP\x93h-\x11\x9b\xa8\xf8\xbbX\xd9\x11\xa3\x90\x0cB;\x8f\xdd\xd4\xc2\x82$\xcb\"\xf10\xd8L\x99\xe5\x8e\xa1V@$wO\xa0\x07\x8e\x8f\x81\xb1al\xba\x8f\xef\x97\xc6?g\x11\xcbY\xa7\xad\x17EU\x97|\"\x86\xbc\xda\xe5\xf6\x97,\xef\xd4\xb8\xda8\xb9@\xc4F\x82\x8c\x0e\xbb\xf5y\x8e\xcb\xa9R-\x1d\xaf\x82\x9d\x1c\xd0d\x07\x15\x07<77;w\x96\xfb\xca*\x93l\x80\x80\xf2\xea hk_\x08Ym\xb9Y\xe5SI\x96-z\xf4\xacs$\xe7B\xa6\xfc\xe1\xd4\x18\xe3s\xbaqT;\x957\x8c\x11\x9d\";\x98,\xa4u\xd1vkV\xdf\x8f\xba\x83A\xc3 9\xe0)\xb9p\x904\xa32\xfa\xde\x9bM\"\xfaT\xd0\xd5\xe57\x98L\x87\x99\xd8N\xef;\xce\x84\xc5y\x1a\xfe\x16S\xe9\xb6/S\x0eL\x06\xcf\x0fh\x99R\xc51H\x9b\xa1\xc9E\xc8\xb0\x00\x96\xb3\xf8[\xe4\xf3\xcfO~8ys\xc2\xf9%W\xd8}\xa1\x9e\xfb\xe0\xbc|\xf5\xe6\xf4\xe5\x8b3\xfe\xe7\xab\x97g\xf8\xe9\xd5\xdb7\x8ea\x81fZ\x97\xb3(\x89Y\x97\x15\xd7\xa4\xb2\x19ZP\xfc\x86\x15\xbcL\xe6\xb7\xfa)\xdbi\x1cZ\xee\xd8\x1aWP\xa4\xcb\xd7\xc6\xe9\xa9\x97\xf3\xd2\xcb\xf9gNe^9\xf9o\x9a\x14i\x0fc]\xdb\xb0k\x84\x85\xaa1\xae\xaa'\xf6JB\xeb\x18K5D\xd3M\x1a\x94\xcfm\x1a\x8d\x95\x9a\xb2\xc3*\xcf\x07\x9d\xfdi$\xba\xd1\x92\x91\xc5\xa8}\xa1\x1a\x82\x82\xe8\xcb\xe3X\"h5\x9b\xcf\x98R4q\x16N\xd5\xf3\x11\xcc\xd2\xd0\x95\x88c==\x1c\x8e|8\x1c\x1e\xf0\x7f\x0e\xf9?\x0f\xf8?\x0f\x0d\xe82\x1f\xa4l\x1e\xa6\x1d\xd2\x8d\xcb'\\\xa8\xfc.\x97\x9a\x95O\xb7\x96i\x11\xb7\x94\xbb\xa9Pjg\xc9\xdcz@_\x02\xdd\xae\xfb\xd0\x05\xe2\x9a\x95\xa7(\xa1\xa3\xe6\xc6\xcb\xc6;\x80\x1e\x1b|\xafT\xee\x84\xff|M\x06A\x98\xc0\x8c~f\x9b$\xc6{\x9ds\xfe\x1b5\xe7\xae\xab\xaf\xadQ\xcdi-n\x10v@\xb7\xbe \x99\xc3^\x9aml\xa1(\xfc\x9f?\xfe\xf0}\x9eo\xc4<\xec\xa6\x9apG\xcf8\xd0\xb0\xaf\xb9\x14h;\x1e\xb6\xd2\xa7r\x0dB\xc4\xb0\x13\x91\x92\x8f\x02\x9d\x8d\x1br\xc1\xf9Y\x14\xc9m\x13\x9b\xeb\x8a\xa8\xbev\x97\x110#\xa9\xfe0a|qR\xd1\xf8\xdb\xd7?\xa0\xca\x1c\xc2\x11\x84\x03\xed-\x8c\x81\x95\xfdI\xfe\xb3/\xf6\xa3\xcf+\xb5\xf8\xbcH\x93\xa2\xea\xc8\xd0\x0b\xe6\xe9\x97?\xf8257\x19\xbb\x82\xc7\xe0%x;\xe6\xf8\x08\x16\x9d\xa9\xb1|\xd2\xaak\xe8\x0b\x96_'\xe9{i^\x87E\x10Fln\xf2\xfd\x90\x8f\xe8:\x0f\xd7,\xd9v:o\x97\xcf\x17\xeb|\xc3b7Q\xc7Q \x9d\x7fa\xaa\x1d'\x8cg\xd1v\xce\xe8\xf0!)\x9d\xf6p\xc9*\x1c\\\x87\xf9\xea\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|\xb8$\xc9+\xc5sWsoO\xb4C\xb7#:\x8a\x1b\xeb/mR\xa9\x99\xd8\"\xf9\x1cl\x92\xe8v\x11F\x91\xc9+X\xfd\xe5:[y\xd1_\xbfk\x90\xb1h\x01G\xf4\xdfXS\xb1>\xeb\xa2l\xec>\x1a\x9a\xae\xaf\xf0\xf7\x0f\xcd\x17\x92\x1e>\xb2\xdc<*\xef\n\x85!\xe6\x84\xb0\xdc\n\x1e2\x8f!)\xbfUQ\x02\xc6\xb5\x9c\xf7\x9f9\xbf\xc3\x87\xd5y$j\x1e\xf5\xf9\xd5!\xeb2\x0df\xef\x19\x9fHg\xd3\x00f\x84\x9b\x9e\xd7e*\x83\x0d+\x8c\xe7\xe1\x8c\x95Zo\xe7\xab\xd4\x01f\x96\xa3\xe4s]zJ\xd9\x86\x05\xad10@\xeb\xa5\xdej\x19d\xeb\xf7\xd2\x9e\x079+Y\xcdN\xcf^\x92\xe1\xac\\\xd6\x1c\x8dg\xce\xa2p\xcd\x15\xb31\xde\x0e\xae}\x97\xc1n\xf6\x0cR-}K\xc7\x90\x8a\xe0\x13\xb6\"\x7fA]\xfde\x1c\xdd\x8e\x8d9\x063\x96\x86A\x14\xfe\xc2\xf8\\vX\xad\xa0v{U>\x86\xbd\xc8\xde\x87\x9b\x17\xdb(\xca,c@p\xe6\x05\xbe\x0f\xe2y\x84\x91Q*V\xf3J\xa3\xba\xc6\x0eL\x04~Q\xf1\xc82\x1f\"\x9f\x8buE\x88\x04\xd3l\xa4%\xdb\xc0R\xd1\xdbZv\xa0{\x82F\x1eV\x89\xb8Xwe\xba !\xdd\x82\xaft\x7f\x0e\xbe\xb6Tq\xe36\xd6RW\xc2\xaf\x9a\x04\xfdP\xb9LQ\x06\xb4\x15\xa7\x93|D[\x01\x0c\xe8\xfbf\xb8\xe2\xcd\x9f+\xf4\x8fm\x81u\xb0{\x9c_\xa1\x84U\x8f\x97A\xefe \x80\xea\x87t\x10f\xe2V\xc1\x95\xa7\x0d\xff\x08\xa6s\x17#\xc4\xc3\xb8:\x07\x8f#\xfb\x84\xa3\xfd\xdc\xcd\xdc\xab\xd2\xa7s\x18\xf3\x9a\xb1^F\xb8x\\y\x9eA\xa5\xe2\x9b\xbd\xf6\xd1~n\xb2\xe0\xe0\x96\x15\xcc\xf0J\x0d\xd1\x10\xff\x8f\x97-\xdf7\x8a<\x0f\x8f\x07\"\xcb\xd6\xdaU\xdc\xdbJ\xda3\x13t\x808|\x98\xc1\x11\xdc\x0e\xb2$\xcd\xdd\x19\xdf\xe0. \x9a\x94\xa9\xf3\x92\xbc\xdd.\xe1 \xac\x95\xb7[\xafw\xd9\xa4\x7f_\xc0\x04\xd6\xd3K\x8b\xc1\x0b\xdd\xbd\n\x80\x9d^`&\x07wY\xbd9\xef^yp\x04K\x99S\x86\xb9\xbc\xa8\x0f FP\xf3Z\xd0\x96\xcf\xb3V5\x86\x1e\xb8\\8p\x06|\xe7/T\x9e\xd2\x0b\x95\x9b\xb4\xb9Q\x03\xd1\xaa\xbd\x91\xfb_&CfQ\xa0\x91\x99\xa9s\xfd:\xe1\x0b\x80n\xe5\xa6\x83 \xcb\xc2e\xec\xfe\xfd#606\xc6\xcdQ\x01\x99\x02\x89\x07x\x8aS\xdc\xf7-\xbd\xd7\xc8W!T\x05\x05\x810\xba\xd1\x9c\x88\xfa\xab\x00\x03\xa0_2\x08\xd4\xe4j9E\xaeD\xdc\x1b\x0do\x82\x81bjp\x04[\xed\xd7X\xffV_\x89\x19\n\xc4u\xe2\x11\x0c\xea\xcc\x01\x8e\xcc\xaf\xc7\xb05\xbc\xae\xf7\xb5\xb0\xf7%\xf9\x14u\xa1~a\xcb\xf2W\xbd\xc1\x8d\xb5A\x11\x18\xea\xa8\xf8s\xac\xa8X\xbd\x1d\xae\xa2\x1b\xb9N\xb1\xb1G\xda\xdfES\x86\x05]\xd9\xdb\xca(\xa5\xbc\xf8\x83N\x8b\xea\x0d\\\x15;K\xb0\x85\x9eU\xcf\x93\x1cy\x8e\xf6\xb3^u\xdd\xd0\xb7.n\xd0 Jop\xa5\xf57\xf5\xd6\x97-\xab]H<\xdaji/\x8be+^\xd6\x91\xad\x04\xd4$\xdc{\xea/4\xa2\x0bo\x93r\xd5\"\xf3U\xa7\xc8\x15\x89h0gi\xe6\x17\x1dY\xb0\xf3m\xfc>N\xaec\xa1k@\xb2A\xf1g\x93&W\xe1\x9c\xcd\x8d\xf8)\xc2\xb1\xe2\x80\x8b\xae\xa6\xb2\xa7\ni\xb7l\xda\"\x8c\x08\xa1\xd1\xa1\x95s\x12\xf9\xces1/\\\xfd\x06\xae*\x80\xba/&o\xd7\xab\xd5\x07z\xedc*\x82*oF!D\xc6\xc2)\xe8\x98\xee.:\xe1\xfd\x0bj]\xbd\xf8s\x8d\x9d\xa2\xff\xc2w\xb4h\xc2\xc0R~9\xe6\x8a?*&\xa8\xba\x07X@\xbc\xe1lF}\x1csE\x9f\xeb\x15\x8e^\xa7>\x9b\x1b\x98@8\xbd\xaeL\x06\x83\xc8\xb8U\x96\x1f{\x18\x0d\xeb\xce\x1d\xc9\xdc\xabw\x1c\x15\x0f?#\x1e~\x06O\xe0V\xe3\xe1g6\xe1\xf6\x18&p;=3\xf0\xefE\x89w\xc7\xd3c\xe2\xdd|\x07N$\xb7\xcd\\\xfe\x1e\xa3\xf8\xde(\x0e\nG0\x97$\x83C\xd6\xca\x87+\x9f\x0bV\x17>,\xab\x8c\xf5cm]\xdec\x07\xe8f\x16\x19\xcc\x9c\xcf\xd0P \x90.\x98\xcf\xff\x9f-Ko_\xa5l\x11\xde\xf0m8r\x0c1\x9e\xc4\xce\xbf/\xf2 \x0c\xe1\x08\x9eA\x0f\xdeW\"\xfc\xe0_\xbf\x8az\xdd\x82\xeb]\xf4nEN\xcd*\x12~Vn#\xb6B\x1c\xa4\x7f\xe0,v\x0c\x07\x06\xa5\x91\x1c(Qi\xa4?ME\x9au\xd29\xdb\xe4\xab1\xdc30\xc1 \x0d\xd6,g\xa9\x18\xc0\x88\x1d\x1a\nEA\x18\xd3j}1]0\xe8\x10L\x05\xda\xbce\xd5\x0ekl\xeeH\xcb\x92\xb1\xffn\xe0N\x7f\x1aL\xcf{\x1e:\xb2N\xffmt\x8e\xf7\xfa,\xbeW 6z\xdf}7\x9d\xfe4}w~\xfe\xcd\xb9gK\\\x03b\x16\xe5\xc2\x94h*m:\x86\xe3\xd4\x0d\xc5Gq\xa5\xda'\xb2\xc5n0!\x85\xbdb\xd6p\x8e\xcd\x97\xa9\x16\xcd\xacZ`/\x1e\xe8[ \x98/\x0c9Z\x15\x1504\x1a\xa5\xab\xae\xc0\xb0$\xdav\x83vF\xa7\xe2\x86;[`=\xfdQ\xc4R\xe4\xf6VB\xb3\x1b`\x08G\xb1\xa88\xa6\x08\x9e@<@\x90n\x0c\xf3\xcdg\x1cA\x0fC\xe7\xef2\xf3`::\x17[3\xf2\xa1/\x02v\x7f\xc6J\x04\xc6\xa0\x14`]\x0ci\xab\xe1\xdd\x8a&HQ\x92\x10\xa3\xc0E\xe8M\xd6\x01tA\xb0Ry\xb9\x0d\x1c\xa9r\xca\xf2\xa2%7\x1b\x89\xe4\x03\xc3\xc7\xd0\xef'm\x8d\x81@\xd0\x90\xa2\x98\xb3i\xd2\x90\xda[>(9LE\x0c\xb6\xc0Cl\xc44\x08\xd3sO\xb28\x9b{\x99\xfet\xb8M-\x1f\xb4\x18\x97\xc1\xe3H\xf2\x86Y\xca\x82\x9c\xa1\x0eg\xd2\xefl\xcf\x95\x08\xe5\xc7\xb7\x8d\xd8b\x91\x9f\x91+y\xe7\x95\xd7\x81\xb6\xc6\x1e\xc9\xd7\x1a\xfcq-\xcc\xbe\xc7\xd5\x87S 4_\x9f\xc6\xb9\xbb\xf5ad\n\xd9`z\xf6\xc2\xecE\xf0\xc2\xcdp\x88\x01b\x1f\x06\xbd\x17\x06\x9a\xcc\xc31\xe3\xab\x8c\xc2\x8c\x8a\x1c\xc8i\xc6P|\xcc\xe8\xd3\x13\xa4\xc7\x8a\xa9\xc1\x91\xda\xc0iv\x8eQ\xf0\xc7\x10N\xb7\xf8g\xeb\xc0\xcc\x18\xa2?\x1cT\xc3\xc6R\xcdm\x08l\xb3\x0f\xe5\xa3\x9b \xec\xa9\x15\xa9\x98\x9a?\xc3\xcc\xf0 \xf6\x84X\x88\x03U{B\xe9\xbd\xd1\x9e\xa0JX4\x96\xe7l\x07{\x02\x8ei\x10.\xe3$e\xba\xe4\xa7dB\xc3G\x1f\x87 \x8d\x0c\x13S\xacl\xbd\x80\xb0D\xbef\xcb\x93\x9b\x8d\xab}\xf10I\xa5n\xae\x085s\x85\xe4\x12\xbc\x83\xba\xe5S~<R\x7fQ\xed\x0de\xb3\xd4\x00\xd8R\xbd\x04\xe2\xa5\x9f\xbc\xa1\xe2\xa7_A\x92 \xec\x8d\xc4Fi\xaf}m\xdf,zxQ\xe0H\xfb\x9bFM\xf6\x84\x92 d\xd6\xb7\xcb\xa2\x92\xfe\x0bG\xad\xcc\x03U\x92hk\xadB7+/x\x9b\xfa\x0b5\xc2\x82\x8d6\x8fS+wdx\xa7\xc6\\\xbc\x13\xcb\xadI\xb5\xb6\x0d\xac\x94:\xaa\xbf\xc2\xe1\x97^a\xa2\xd3\xba\x11\xcb6\x07\xa3\x19\xcc\xf8\x9a\xbc*jf0\x95l\xbc\xa4:\xe3/\xcd\xd6\xc1\xf4L\xcf\x9f\xc2\xc8\x14\xe3\xdf\x9a\xb1\x91\xc1Q\xfb\xd9_)j)\xa7a(E\x18HCID\xff\xe9\xdd\xd1\xbe\x8f\xc9g\xb9XN\xc6\xd5\xda\x06N&0\x82}\xd4\x11\xc5\xb4\xc7\xb5R\x94 )\x95\x91\xc4uB\x10x\x94\xebs\xf8\x98\xf3'\xd8jjx\xd6\xa4[\x08\x1b4L`;\xcd\x1a\xf2_m8\x99/2\x11\x9f7^\xd8\x9b\xc3\x04\x84\xd3\x17W\xcc\xb5z\x13\\\x84\x0d\xf4\xb8\xa4\xd5\x07*3\xe7\x0c\x94n\x15 4w\x17~\x81\xf3\x9e\x8fV\xd8\xdc\x02j\xe4\x10@\xab[m\xa5\xd0?\xe6\x9e\xa9\xc5j\xc19F\x0c\xd7K\xa2\x1b\x04\x8a\xd1\xb1\x0f\x11R\xe3i\x84\x11\xbe\xcf\xa5\xb0\xc6_(\xc9\x0d\x0f@D\x91Y\x0b7\x05\xcdC\xab\xccfE\xe4X\x04\x97l\x17\xe1\xcdG\xf5B\xb7\xe2l\xc5de\xe8v\x0d0\xec\x11\xdca\x02\xd1tf\x01\x87\x0d\xc6iX\xf8\xb0\x9d.\xce\xf98\xeb\xc2W\x86`\xbaf\xe9\x92q\xd1bS\x13-\x8c\xe1\xcf\xd3\xc1,Yo\x82Y\xeej^\xeb\xed\x116uID^?2V\xaa\xa8\x07\xb1{\xf8H\x97\x1c\x0bc\xca\xc1\xe1\xd0\xec\xab\xf0\xa8\x1a\x046T\xef\x8bv\xf0\nbt\xfbr\xc3R\xf4\x14D\xf5\xae\xfc\xca\x97\x85^\x05\xe4\xcd\x17j?\xd5\xc7\xd7l\xbe\x9d!\xb3\x0cK/x\x81%\xcb\xd1J\xfc\xed\xed\xab$\x8csQ\xaa\xf6\x96\x17E\x8f\xca\x00\xef\x8a\x84\xea\x87\xf6!I\xf5/IZ^\x91@\xad\x88>\xc3?eI\x8c\x83=\x11\x9eZ\xc1\xa0\xf8\xe9#f\xb1\xcd\xb1\xf0B\x0e\x06\x17\xea'f\xa5\xc8f\xc1\x86\xbd\n\xf2\x95\xba0\x8b\xa5\x0c\xefy\xf1ml\xab`\xfcR\x1e\xfe\xd6\x90\xd7\xaf\xd5\xad^\xc0c\xbb\xcf\x01]\xd0\xbc\xccXzE\x1e\x9c\xd3syk\xf3\xf2g\xa8f\xfc\x80\xba<]\xbdQ\x17\xed<\xb4\xb6@\x95\x9cv]\x06\xb3\xf7\x14\xc8\xad4`\x98\x98\xa2mV\x07h\x8a\xfd=\xab/I)\x8b*\xe5\x9cJ1-\xb9\xa471<\x81\xf41\xc4\xbd^]\xcb@\xdb\xce4>\xa7e\xc3H\x0bd[\xb7N\x0d\x19VlQ\xb7/S\x16\xbco\x99\xd9\xc2\xcd\xe9\xbe\x88\xaf:\xe3\x7fm8\x14s\x11\x0b\xd3D\xa8\xdfR{E\xabJ\x81\xaaz\x1b\xa2\xa4\xe1\x08\x81R\xc8\x8a\xefF#q\xa8\x1b\x891\x94\xad,.`\x8a\x15\xfb\xa8n\xfc\xf0_n\x88\x89\xbf4jY\xdf\xac\x85\xab\xb2\x01\xd4,\x1a\x18b\x82\x92\xe9\x98\x96\xda(\xa4\xe7\x83<\xf9\xd3\xd9\xcb\x17@9X'\xea\x85k\n\x14\xa3\xe0\"D\x9epAK\xfdg\xce\x9ar\x8f\x84\xa1\xf2[\xe6\x91\x98\xb37\"\xde\x17\x94\xac3\x99\xb0\xced\xfd~\xa3X\x83\xe6\x18\xe4T\xd3\xec\xbc\xc1\xa2\xb8\x97\xd6.\x8e\xf9\xb0\xf1*\xd2g>\xdd\x9cWt\xd0\x08Mf$\xc0\x94\x8f\x98rO\xc5\xac\xb7\x9bg\x92\x0d\x1e\xd9\xac\x93+\xd6\x90o{\x13\xe4\xab1\xdd\x0c\xdc'\xf3\x98\x81\xe0\xb9\x1b\xfb\xc5\x1c\\HK\xae\xd7\x16\x03\xd2\x95\xc8\xf9\xc2\xe7n7\xaf\x18\xf2ADP$i\xa2\x1f\x86B3\xbd\xd0\x8c\x0b\x89.\x89\xa2\x1cJ[\xe7\xcb\x85\x1d2\x11`;\xee\xde\xd0o_r(\x96\x1d\x05\xf3\x86u\x87\x1d\xd6\xbe\xb9\x15\x11}9\xd5X\xa0;kr\x81\xedjF5\xfbEm9\xe0*j\xb2W`\x8f\xb9YDNMm\x08\x15\xb5\xcez\xbd&\xeb'\x07\x8e\x0d\x9e%f\x0d\xc0Q\xc3-f\xc3-\xae\xfau\xde\xbf`>\xff\x87\xed\x1d\x1fm\xd3\xf6u\xd8=\xcd\xc5X\xfd\xc5\xa5\x1c\xc1\x96\xdb\xeciZQ=+\x02\x97\x94:\xb6\x80\n,\x99\xbe\x9bE\x9cR\x08\xb3!\xf1\xf5\x82\xa1\xe7\x94`871tPL=\xd7\x98\xba\xd2\xe1\xf9\xeb\xf2\x9a\xd4\x02 \xf1\xda\x898\xdao\x95vJz\xb9\x90<X!\x98u\x92Ad\xa7Z=.\x91\x14\xf2\xd3\x04\xf3\x88\xaa;W\xa5R\xf2GeR\x89\xb0r\xba\xf2\"\x8d`o\x04\xea \xe7\xdd\x85\x8f@l\xb0:\n3CBb\x06\xf1\xca\x02\x18\xf1\xba\xb5i=b]\xecC\x8bNL\xc1@8\xc5\xad\xe3\xabd\xcf\x8d\x92\xa7|f\xd6[\xbafl\xea\x14k\x8d?\xb3\x88\x05\xe9\x1b\xba~\xe1\xd2\x88=m\xe8\x19\xcb\xe5\xc7\xd02\x80\xfa\xcc\xcc.\xfc\xd7a<O\xae\x91s\xd0\x9f\x83`>?\xb9bq\xfeC\x98\xe5,F\xfb\xa3\xed\x93\xeb\xac\x93m\xc6\xb6\x1b\x87\xac.\xd6b\xef\xd9m{!lk\x9e\\\xc7m\x05\xdf\xb3\xdb.\xc5f\xab ^2,\x85\x807Of\xdb5\x8b\xf3\x81\xfc\xe3$b\xf8;\xc8\xf3`\xb6\xc2\xda\xae\x93\xc4\xe59u\xad\xa5O\xb1k\x9d\xea\x8c\xbb\xd6+/@\xd7Z\xfazt0A\xc4\x15\xb9;\x16\xaa\x01iO\xb1\x99J\x9b\x80z\x86y[\x8c m\x84\xddV\x12\xa7\n~!R'\x1f\x03\xc9+\xf4\xc3\x12\xc9C\x9e\xadw%r\x80\xc7>\x8c,\x08\xc9 _\x87\xaehH\x02\xb1\x0d\x13\x0d_-\xc8h,i\xc0G{\x8bu\\\xb3\xb5\xa9J6\xe3\xdb\x9c}\n\xbeUju\xc27SO]0\xa7\xdeW1\xb5\n\xeap\x8eT\xc0\x01\x85n`\xd7@I\x99\xbcRD\xd6\x8fd\xad\x8aYJ&\xa8\x19\xff\x8dv\xbe\xb4\x9b\xa0bp \x91F\x90B\xb1Em\xbd\x9a\x01\xac\xc9h\xa8\xb4\xe3\xcfI\x02\xd69\xadW)\xe1\xafQ\xa9\xd63\x94\x1d\x95~\x8d!\xf6\x06\xd9*\\s\xf6\xdd:/\xb9dZ\xc6\xb7%\xeer\x86'\xf2v\xa2%\x06\xdd\x12q'\x90\xadi\x92\xa7\xd9DdH\xab#}!-Ck\x0d\xf6\xa3mo\xbd?C\xee\x17uK\xcb\xac\x82\xd2\xfb\xfa\xb1\x19\xd3\x8c=\x9d\x9ce\x99\x0f\x0e\xff\x831\x87\x1cij\xb56\xa2\xfciv\x12o\xd7\x14\x11\xc3P\xf7\xc3\x07\xdd\xa5\xec\xa3Kq4\x0b\xc8\x89\xe1\x08}\x0b\x12oPD\xb3\x9f@JVR\xfdUb\x04\x94\x9d|\n\x8d`JQ;p\xe12\x11F\xad\xfaQ\x85\xf4(\x1d\xa8Y\xf6F.y1ih\xba\xebU\xda\xd1\xe6\xf1\xb1\xc1,\x89\xb3<\xdd\xce\xd0\xc0=\x99\xe8\xdf\xd0t \x86\xabv \x8e\x8aI\x8d\x0d#3A\xb9\x1d\xea\xb4\x93\xcc#\x0ee\x11\xb6\xaa\x9fh\xf2\xf7\x1a_\x1c\xeb0:)9z\xd7\x8bR\xa2\xc8#Sz!\x07\xcf\xe5K\xed\xb5\xf4\x9b\xb6\xe1\x96!g\x8f\xc4e}\xc8 \x0d\x00\xb3\xc2\x8c\xd58\xb4/\x81[\xc9Bo\xea\xcc\x90\x7fG\xe9\\\xeb`\xe3\x86\xcdc5\xe4\xa4\x91\xf4\xdcz$,\xe9y\x15\xbdE\x80%7\x9f\xc6\xe7\x18W\x9dM\xe3Z\x10\xfc:\xb57\x8c\xca\x90\x87\xa6\xa4\\+\xbaZ\x18\x82G\x15\x83\xa3*2\x1d\x9d\xf3\xb5\xd4\x7f\x8eIX5;\xf0bT6\xb6\n\xae\xc2d\x9b\x8e\xc15\xf4u`\xed\xeb\xa0\xdc\xd7\xc19\x1e3z\x83r\xabx\xc5N\x9a\xd5J#Pg\xe4|\xeb\x9a\xad\x0d\n\xb91&u\xb9\x15\xcf'+:}\xf3\xa5\x13e\xc4\x85\\%\xf2F&Y\xb7\x94\xbf:\x9dF\xe7t\xda\xad\x1f\x91\xceD\xe2\xe8\xe1c\xd8\xc0\x13X\xa8\x067v#\x18o\x11#WL7\x0d\xa7\xe6+.\xf0L\xe7\x0d%\xae0\x97\xe3\xaa\xc1\x12\xb5\xc6\x12\xe1tn\x8b\xef^\xba\x8a\x80W\xde\xec\x12?\x96- \xe3\x13X7\xa9\x1b \xe6\x8a\x0e z'k8\x02>\xa8\x0e>\x83!%\xc0\xce\xd0\xebk\xba\xf4a\xeb\xae\xbcs\xa3\xbb\x99|D\x9clQs[\xbbz \x1fu\xadE\xa76m\xf3\xd7\x8av\x9a\xfb-\x1ex\xdb\x86 \x1f1V\x07O\xbd\x1d\xe1\x17VA\x13Z2\xe9+pk\xbe,)\x9f\xf2\x1a\xd8\x07\xa0\x97Z\xd5J\x18\xd5\\\xfd\xc0H5\xd3)\x17f#\xd5\"\x12$NA\x90\x84\x1dA\x8en\x1ecL\x1e\xcd)\xc1Hd6(R\x1a\xf0\x02\xe7zk\xd3\xd4,\xefg\xe4\x16Q\x8c\xdd/\x06=\x88\x93\x1f\xb7y\x907*\xe6j\xf0\xcc8\xf8\\\x0d^\xe6g\x18\x92\x1e\xcdH\x8f\x06\xc1\x07\x8a\x81V\x0f \xd5@\xc9\xbf\xd1<\xd2\xeb0_\xbd\xc4+R5\xdfI{\xba\xd5L}\xafl]\x8b\x8cg\x0f\x0c!\xf3\x8fC\xec>\x1a\xdd\xab\x10\xa0\x8b\x0b\x96\xfd\x98\xcc\xb7\x11^\xf3\xdf\xad\xcb\xd8\x1d=x\xc0\x17\xd0}t@\xff\x8d\xee\x8b\x9f#\xf1\xff\xa1\xe7\x97\x05[wt\xcf\x1b\xfc\x95\x05\xef\x7f\x0c6]\xfah\x10]}\x99\xc9\xf7p\xe4\xb9U?\x8ePtV\xbd,C^\x0e\xa3\x83\xbb\x95\xf7[j\xea~5Y0\x0d\xfa\xd1\xa8\x1a\xbb\"\xa2\xf2\xd5\xe6g\xf8\xfa^\xd5{d!\xbcG\x0e*\xef\xf1\xdcr\xb0d9_\x91\xf2\xa7y\xc1\xbb\xc2\xec\xe4&gq\x16^F\x95\xcb\x1e\x9c\xedd\x83\xed\"\xcb\x93\xb4\xf2\xe9\x8a,\xca\xa5w\xed\x01d\xab^\x076\xaa)Y\xb8\x88\x8ag\x904\x86%qbx\xaed\xd3V\xd7\xe3\xf2\x98\x97FYg\xc9:\x05\xd6\xc0{\x13(A\xdb\x89\xbf\xa4q\x1bcj\x06\xf9\x88 \x0b?\xe0\x1c\x8e`\xe5.\xc4\xec\x1d\x01\xcf\x8e\xe7a\x0c&\x94}1\xfa\xb6HU\x14\x16\xb37v`8\xf4\xab\x8b Yy\xca\xedAK\xb2\xc1\x9c-\x0c\x83\xf4\xd1?d\xc7m\xb8\xadj\xa8\xee\xa3\x83\xa1\xe7\xaaV\xf1\n\xde\x12o\xbb\xef\x0d1\x96Q\xb1\x963\xb7\xcd\x18\xf1\x00\xf6&\x80\x96\xa5[\x0fs\x7f\xc9\xbb,\x8b\x94\xb1_P\x18\xa4\x17\x9e{\xe5\xf9\xf0\x80\xd6Yc\xff\x1fI~\xdf\xba.\xa6l\xe3\x9f\x8f\x0b\xad\xd0]\x977I\xbb!\xb3\xf4|\x08\x06/NN\x9e\xe3\x01\xba\x0f\x89;u(\x8e\xae\xe3\x83\xb3\n2\xfe\xdf\x92\xe5\xfc\xbf\x8c\xe5\xce\xb9\xdf\x00w\x12\x96n\xb5.j\xeb\x8c>\xf2\xb5x\xc1!\xc6L\xd2\x1a\xcf\x0d^\x1c\xa0`:'\x03\xc4\x1c\x9d\x10\xcc`@\xb0\xb7(\xd2\x7f\\,\xc4\xe1TSP\xe3P\x065\xbeXL\xd99\x8d\xc2\\Zj\x86|U@\xe8\x9b\xbc&\x8c\x0d\x97\x18\xec\x0e\x91\"\xa8-\x02i^\x8b\xe5\xffQ\xdfc\xfa\xbbs\xa2\xf0G\xa3\x87\x96\xc8I\x8dh$\x07\xc6\xae]\xd4\xbe\xf5\x10\xaf\x9d\xf8b1\x82\x1a\x7f\x10\x1c\xab\xc6\x96\x04\xbbz\xe4\xb9N\xb6a\xb3\x90\x95\xd2\x84t\x93\xd8\x10\xf8\x8cb\nj\xe5\x1c?LW(\x84\xf1I3\xa2\xa0}\x8a\x9c\x85PJBHK\\\xcd\xce\xe5\xa9\x1c\x08\x82\xa6\xfb\x90\n\x90T\xe6\x10\xf2\x18\x9a\x86\xe7\x9e\xf2\x1f\x12\x85\x8b\x1c\xf1\x92\x96R7\xe3\xd6T\xf6\xdd\x85\x03Z\xe7\xe1}\xe3\xfas\xf6o\xe6\xba\xc2\xcd\xb3Z-0\xef\xa6\x10\x1a\x86UaBH:w\xab\xef#%\xaf\x18\xa5\x86\xaat\xd0$5DnU\x92\x9b\xe3\xdb\xea\xc8WxxT\x86\x93\xaeR\x00\x1b\\`\xea\x07\x17\xff \xd2\xb1\xae\x1e\x10\x94~\xae\xdbN\xcb\x90\xb2\x04hrojg\xd9\x86\xa3P\x8cr\xe3\xb2A\xd0D\x94+\xe5\x19\x17F\x10\xf0j\xa5\xaa\xd9\x90\x0b\x98Zk\xd6\xc3\xaa<\xd2A\x16\x91|a)\xe8\x9c5 \x94:\x83\xcb\xa7\xa3\xc6\x15Z\x05\xad\x01\xd2\xa4\xc8\xb2W\xf4\xda\xd4b7\xf9B\x1e;4\xcd$F\xe7yT\xf5r\x99\x021\x10\xf1\xa5Y=\xbete\x1c\xc4|\xdb&'WT\x043\xd6\x01\xa0M.\xca%\x00\x18\x9cv\x0d\xb3\x11\xb5\xfe;\x07\x99\x88%\x90\x07\xa2\xb9\x8f\x97\x08\xf6\xf6\xfe\xbb\x9aTF\xfd\xe57(fe!e\\#u>\x84\xb6\xa9\xa3\xdbc)J\xa35\xc4\xeb\x96\x7f\x8d\xb0E\xe7\"$g\xd7\x8b\x9c\xdcE\xd8\xe0\x82S\xbcU\xaf\xe7\x83@r\xa2\xcc~a$\x04\xbc|\x97\xb9)\x8e\x88M\xc3ss*|\xfb\xd2\xa5n\xa4\x8b\\\xe6av\xdbv\xf9\xa0Gg\x80\x92\xbd\x04\xf3\x91]x\x97@\x9b\xec \xe2s \xbeR\xd2s\xeey\"\x11\x03I\xf71_\x93\x99\x1b\xab\x9c8\xc8\xe4D\xfe\x85X\x89\xfd\xc6\xbe,\xee3\x1d0Z>\xff\x88\xd9\x8bD\x0f\xa6\xa9\x9bgi\x80\x10\x1f\xa2f\xcc_\xd4\x91\xc0\x86\x01)YK\xd1\xb7x\xcft/\xb8<\xa1\x14'\xc4H\xbb\xc8\xc5\xa5\x9bt\xcaP9\x9b d7\x0dM\xa8\xd8c\xb8*P\xfb\x0f\xf0\x05$\x94\xaa( \x04D\x8b9\xa3f\xb6\x08\xcc\xf6\x06\x12L\xeeU[\xc9,RQd\x91Wf\x16\xf9fa\x16\x876$uW\xc3\x9b\xce\xf1\xf5\xdd\xa17X\xd4e\x13\x8b\xf9\xe6\x8a\xea\xdcm\x15\x82%\xa5$\xed\xf3\xd6$\x13_\xe2y\x003\xd8\xe6/`\x02\x97\xf5\xd7\xd7\x9c\xbf\xe1!!\xa30;f?\xd4\x13\x98\xc0\x05G\x86\x8b&m\xef\xc6p\x1e%@\xf3\xcaz\xba\x89\xcd\xba\x18\xad\xe7D\xe5\x16\xe1Rx`W\xa5\xf9\x83*\xf4\x85'\x93*\xb8\x1ez\"\xb9U\x95\xca\x83#p/0\x91\x8b\xaen\x1aqm\xc6\xbf\\\xa0j\xea\\\xcc0\xeb\xe2\xe0b&\xa4\xc1K\x9dO a\xc0\xebsK\x1f\xf2\xe9\xf5y\xcd\xca\xc0)\xc0\xca\xe5\xcb\xe9\xa3\xc3\x94O\x04\xd3\x173\xf4\x97,\xf7WA\xe6g,\xf7\xdf\xb3\xdb\xcc\xa7<\x1f\xbe\x98\x8eO\xb7\x0f\x1c\x99\x9e\xce\xe7\xa3\xe9&&\xe0\x16\x82\xbcnZ\xa8\xacu\xb2\xc1 \x8c\xe1\x84\x9c\xcdq\x03\x1c\x1c**L\xa4Em]}\xc3K:{S\xa8uN\xb4e\x16 \xbe\x9e\x9cn\xa1LA\xfa\xd5\xc2\x8d\x0br\x8e\x06\x07\x1a\xae:\xaf\xb3\xab\xec*\x0f\xd1\xc5\x8c\xab\xec\x05\x05\x1frr\xed[\xd5})\x0f\x15z{R+W\x15\x89=\x9f\x82H\xcd\xcb\x8b\xe0d\xe1/\xcc1\xf1\xf6\xb2t\xdc&\x9a\xd1,\x06\xbc\xb5\xfaPjP<&(^W\xcd=dIY\xfap\xed\xf9\x90\x95G\x1a\xe3\xadOe\xf0\xf1|\xd8\xb8b;n(G\xd3\x85\x0f\x89\x9b\x0c\xfe\x03z\x90\x0c\xfe\x8a\xff~\xe7\xc3\x8d\x9c\xf9\x9a\xb3\x90\xb3<M\xe2\xa5Kx\xb1\xf4|\xb8\xf8Cy\x98\xad\xa6\xf3G\x07\x07\x9a\xf9\xac\x93e\xa3\x95\x99\x0c[\xc9e\xcd\xd6\xe1\xa6\x833\x9cD}_\x92E\x87\x8d\xebp\xd2R\xe4\xbef\xdec`\xfd\xfec\x0f\xed_\xa5\x03\x16[\xfa\xac\xc2\x18\x83\xc0aJ\xb7S\x85\x8b\xddw\xe2\xee\xaf\xb0\x13&\xb6\xfe\xa8\xcaH\x89\xad\xdf\xad\x1e.\x04\x8a\x1f\x7f\xc9\xfd\\\xa4\xc9\xba\x8b\x84y%\xee\xf6\xf9\x90\xfa\xb0\x15w\xb34'\x84\xc6\x8d\xa2\x0c.\x9e\xaf\x1b|\xd0\x92D\xb1X\x127\xd3\xad?h3\x94{\xcb\xd19\x96W+9\x87J\xc9\xf1u\x8b\x1e\x19\xfa)\xc3\xf4\xe0\xdc\x87\x03\xcf\x87\x80o\xce\xde\xa8\x8d\x0b\xc8G\xdc<A\x8d(\xed\xf5lWp\x90\xb2\xa8\xa6\xa9\x12\x11\x0e\x05\x86qk\x04\xd7V8\xd4\x07z\xa5\"\x0d\x14\x8b\xbb\xd70\xa92\xfc\x95>\xc9J\x98\xa4\xcd\xb0\x16\xa1\x1eTy\xaf\xec#\xe72=O\xb5\xe7\xc3\xfe\xf4\xa7\xa0\xff\xcb\xb0\xff\xe8]\xff\xab\x7f\xfb\xe3\x9d\xaf\xbf\xe9\x0d\xde\xfdt\xf1\x7f>\xfc\xf7\xf9~8\xc8Y\x86\xb9\xd7\xcc\x81Wd\x82\x97\xd9*H\x83Y\xceR\xceW)\xcd\x00,B\x16\xcd!\x0e\xd6\xc6\x9c/\xca\xfa\x94'?$\xd72\xaftyq-sn\xb6\x84t\x9e6\xeb\xd4\x99\xc1\xf1\x11t'$#p\xc5\x98u\xa4\x95\xac\x82\xd6\x10\x93Iv[\x957{[\xfc\x99'1+9\x88\xb5$<\x11\xb7\xa2\xccI\xac\xc0\xa8\xe2\x99\xdf\x1a\xbcF\xc4\x80+i\xc3rS\xb2\xb0\xd6\xb5\x92\xb2C\xbd\xdf\xce\xd9~\x0d\xde}\xa0\xa5\x02\x14\x97sJ\x19\xf2\x13\x0c\xfd\xb1S\xbe\x0c2\x1eQ\xd6bs\x82\x0c\x91\xf9\xbf\x1e\xcd\x14\xbd\xeaL\xddu\xe9\x8bM\x87\xe7>0c\xe86\xadG\xdc\x03q\xee\xb6d\xb9\xe6\x1e\xf7\"X3\xae\xfd\xef\x90!\xaf:\xd7\xa9)\xab\xdcGS\xe6B\xdb\x1e\x19|\x13A]k\x90\xd9\xf8\x95\x04-\xb2 \x0dR\xc6\xe7S\xcd\xdb\xf2,JY0\xbf\x05\xfe\xafc\xba\xcc\\\xc9\xef\xdfi\x80\x06\x7fF(K0\xb5\xd4LM\x81\xec\xd8\x8eY\x93r\x97\xcf6\xdbF\xb6D)x\xff}\xb7\x8c;\xb1\xcb(aZw\x1bO\xa7\xa52\xf8n\x82F\xf1\xf8Z\x15\xb9\x97\xcdT*FW\xa9\xdc\xce?\xf2\x01\xdf\xddg\x99\x96\xac\x96\xdc}:\x8d\xd0\xe0\xc7 \n\xda0\x86\x8cvCP\x04\x9f1\x8cE\x9fQ\x91\x8f\x98\x03\xecm\xce~\xa0\x0b\xbb\x0d3\xc8\x18\x81\xae^\xd5C\x15\xfc\x12'\xd4i*QS| \xc4S\x1d\xd6G\xd54\xdf\xad\xa7E \x0f/JY\x05\xe9\"UC\x12\xa0\xd0\x9c\xdd\x81yZ\x0eE\x91\xd9\xdc\xa0\xa6\xcbG\xf9\x05\x16\x89\x8e\xbe\x8d\x92K\xcd%\xbf\x9a\xecXo\x9f\x17\xed\xdc\xbeL~\xcd\xfb\x90\xe1g:\xf6#\x8bw\xeeK\xcf\x7f\xce\xfb\xab$@\xef\xd8\xad\\>u\xc1\xa2I\x86\xd0z\xd7\xd2mC)\x87\xd4\xba\xd2\x81\x86[\xe8\xf7\xc9\x04\\\xca\xec\xc0:4\xc4\"\xb7\xb9;5\xd6\xb79\xbdB{\x00\x03\x90&\xf1\xf2\xc8?|\x80==S\xb5}\xcd\xd0\x00\xb3\xac\xc8\xb2\x82U\xe8\xd7-\xbe\x95\xb3\xe15\xdbr\xab5\xac\x92\x1d)\x84+hm\x0b\xab1\xa7\xe5\x83\x05K\xf9\xdffI\x9c\xb38\xef\xd3\x10\xf1\xf8\xd6\x12\x04\xadT7\xab\xd5\xf5\xc1\xc9\xd9M\xbe\x8f\x01\xa9\x1es1>c\xf9\xe4\xed\x9b\xef\xfa\x0f1\x04W\x05\x8b\xe4\xe1\x98z3\x10W-Z\xbb1T\xe3\xed\x7f\x0e\x12\xa8\xd14N/\xd8l\xa2\x90\x92<\xee\xdf\xf4\xaf\xaf\xaf\xfb\x1c\xc5\xfb\xdb4\xa2\xe8\xfc\xf3\xea\xac\x8d\x12\x8c\x96a\x8d\x88)\xd1\x94V\xfe*\x8d&!i\xcc\xe6\xfd\x0d)d\xb4\xe44\xf6B\xe5E4\x88AY\x12]\xb1j\xb1.\xedi\xd0km\xb6\x15\xb7;\xf5$\xa9\xa4\x01\x0bg\xc9\x96k\x8cI\x8e\"\x9b\"\xbf\x98t\x17\x82\x0c(\x93]\xa3e\xa2\xcb\x989\xb6\x9d\x9b\xb7\x99\x04\xda\x12&\xb7nq\xc9\xaaY\xa5\x04Gr\xe79\x8e\xda\xf7\xa9\xb4\xfc\x02\xeb\xf8l]o\x90\xafXl\x8aM\xfdQ\x92\xdf\x9c\x88G\xeb8\x7f\x13Pl\x17\"`G\x11P>vQP>\x15\x91\x90o\xb3A\x16\x94\xcf\xc7_\x0bM\xba-A\xc9\xf3\xbe&\xfd\x91\xbfzaS\xcde\xdc\x17\xf2\xba\x1f\n\xaf{u\xb5E:\xdf\x9f+\x1b\xc7`\x91&\xeb\xe3U\x90\x1e's\xe6\xe6\xd3F\xd6+\xb5\x17J\x99`\xcbk\xfa\xd1\xb2\x10\x9dV\xee3\xd0\x9e\x03\xf8\x8eh_Fv\x0bE\xd7E=\xaa\xb1($\xb8Vt\xd2\xd1>\xc7\xf37B\xd5E\x03\xaa\xfe\x9c%\xf1\xe7\xb4\xfd\xa7\xb3\x97/(\x06\xaf\x95z\x95\xde\xdb\x94\x85Y\xab\xe7\x0f\xf9\xf5\xd1\xfd,\x0fU\x87\xfa\xfa#\xad\xd0\xad%\xc6\x08\x94`P\xdf\x8d\xb6\xc4\xb2\xba\xde Q\xda\\F\xf9T\xf1\xcd\xac\x94)\x95\xe9\xbf\xb9\x1a%\xe4\x83\xc2Gv\xa5r4\xc7\x98\x8f\\e\xd7\xf5\xe4NQ\xd6VlL&p\xa5\xf7\xc9\x9c\xd1\xdbd\xce\xfcR\x82\x18`\x9a$\xcc\xbb\xc2l\\z\x06\xf6\x8a\xbd\xc1\xb0\x87\x9a`H\xb3T\x06K\xf3\xf2\x1bf\x9f\x97~\x7f\xf8P_\xa1\x0f\x1f\xc0I\xd6a\xee\xf8\xb0W,NE\x98\xb2/Vn_\xacv\xd2W\x98;\xf3\xe4\xedf#\xed\xbe\x8d\xc8}\xabe\x1a\x87\xa7\xd0\xa7{H\xa6\x8c\xdd\x1f\xdd\\\x0eFN\xbc\xf8\xe9\xfc\xc7\xc9\x1b\xc7+\xefcN\x7f\xa8\xc2\xe2\x07\xe5\x9d\xc1W)[\xb04EI\x80\xde\xba\xd8\x0e\x99V+\x1d|\x7f\xf2\xecy\xed\x0b\xf9\xcbZ`\x1eUoN\xf90&4\x9b#[\xf8\x8f\x937\x90\xa4\xc0[\x939\x873\x13B\x10\x91\x93\x1a|5\x8e\x8f\x0d\xf7\x17\x1d\xac2\x82\x0c6Y\xed\xd3p\xedz\xf2\x8c\xfe\x8ec\xb0\x1a6\x9a\x11Z\xc5\x03B\x1e\xd1~cxb\xfe\xe0\xf6H\x0b\xba\x96M\xa5\x87YT\xa0\xad:\x1e\xdc \xe67q\x8c\x0d\xd8\x99g.-\xa0\x14d\xf8\xed\xeb\xd3\"&\x19\xd7\x91\x0d\xaf\x93\xeeq\xe1:[\xb77\xed\xfb\x9a4l(\xad\xf4\xfe\xbb\xf4\xe8]\xbc\xbf\xcbn\xd66k\xdc\xb4\xda\xe5\x8d\"(\xb2\x8b\x0f\xdd2\xda\x8b\x8d\x1b;\xcd\x0d\x82\xbeWi\xed\x0e\x82|>g\x0f\xe6V\xbe\x9a+_\xfa\xbf\x17\x82\xbbH\xd0-\xae\xeeI%\x99R\xd5SXs\xfe\x17\xe6\nC\xf7\x0d\xf9i\x0c\x07\xc3\xa1\x8c\xfe\xfa^\xfa\x85\x88\x8fO'\xfc\xab\"\xe7\xe2\xed\x138TU\x8a\\\xf8E'\xfcW\xad#,2\x06\xe7\xe5\x9f\xe5\xd8\xec\xbc\xc0\xd7\xb9V\x8e\xffc\x8a\xfc\xaa\xa1\xb1j\x17)/7\x1axDZo\x1b4\xaf\xac\xc7n\xba)a\x0cN\xc5\x92\x80\xd3\xb3\xe4Q\x92\x07Tcp\xceD\xcc\x88P\x06\xa6\x90\xc7T\xf8\x8a\xbe\x9a\x1b\xe1\n\xdb\x18\x9cB\xa1\xd1\x1a\xe1\x1aF\xf1\xb3U\x00\xe4O\x9e\xde\xb6\x98\xc3\xb4C\x07\xde\xbe_=\xc3\xd0\x9f\x8f0\xc3\xe0\xd4\xcd\x94\x174\x97\xca\x91\xbd-3\xe2T\xa3\x1f\xcbGJ\xd5|m\xc4\x9fM{\xa1\xa9\xdfcp4E\x83*\xd5\xd1\xd3,\x1a\x95\xcc\x84\x1eB\xce\x15L`\xaa\xe2\xd5\x9cJ}\xeb\xdc\xf1\x8b(6\x85\x1aV\x7f}\x1c\x05\xeb\x0d\x9b\xd7\xbf\x9e\xc6\xf9\xe8\xbe\xb9\x92\xe9\xfdi\x9c\x1f\x1e\x98\x8b\x9b\xde\x7f\x17%\x81\xfd\xc3\xfd\xbb\xe2\x83%,A\xfbuP\xf9H^\xc0!\x94o\xd2_Bv\xdd`~3\x03\x81y\x10*[\xaf\xb0\xd2\x86\x19o\x9cS\x88\xdd\x87v\xa5\xc4\xc1\xd6\x10C$.\x9a\x07Z\x87\x9aDk\x89\xd8D\xc5 \xd5\xca\x8eP\x94D\xb5\x9d<\x83\x9a\xae\xde)?\xbeu\xb0\xb1:Di\x05`\x82\xa7\xd0\x18\xfd\xd4\xc7\xe8\xa706$\xff\xc1 ^\xc5\xf8\x85\x93z\x97\xad\x17EU\x97|\"u\x9f\xf6J\xfbK\x96wj\\m\x9c\\ b#\xe4f~T\x9a'\xa5{l\xebx\x154\xfbFU:\x96\x1d\xd4\xc2Bs\xe8h\xeb+\xabL\xb2\x01\x02\xca\xab'\x80\xa0\xad}\xe9\xf3\xdb\xe1\x1a\x14\xd4\x02\xdc\xc8\x1e=\xeb\x1c)\xdc\x8d\x88L\x95\xfb\xc5\x18\xe3st\xfc\xcak\xa7\xf2\x861b\xd0\xb2\x0e&\x0bi]\xb4\xe5\xfb\xd3\xf7\xa3\xee`\xd0\x92\xea\x8d\xc9\xc8lfT\xc6\x8b\x89f\x93\x88>\x15\xf23\xfe\xf5'\xd3a&\xb6\xd3\xfb\x8e3\x11\xae\xd2\xbf\xfeT\xba\xed\xcb4\xae\xdf\xf7\x92O\xd3\x94*\x8eA\xda\x0cM.B\x86\x05\xb0\x9c\xc5\xdf\"\x9f\x7f~\xf2\xc3\xc9\x9b\x13\xce/\xb9\xc2\xee\x0b\xf5\xdc\x07\xe7\xe5\xab7\xa7/_\x9c\xf1?_\xbd<\xc3O\xaf\xde\xbeq\x0c\x0b4\xd3\xba\x9c\x89\xf4\x17\xad+\xaeIe\xd2\x13\xdc\xbe\x82\x97\xc9\xfcV?e;\x8dC\xb3+\x96!\x16\xf5G\x1f\"Bnm\x9c\x9ez9/\xbd\x9c\x7f\xe6T\xe6\x95\x93\xff\xa6I\x91\xf60\xd6\xb5\x0d\xbbFX\xa8\x1a\xe3\xaazb\xaf$\xb4\x8e\xb1TC4\xdd\xa4A\xf9\xdc\xa6\xd1X\xa9);\xac\xf2|\xd0\xd9\x9fF\xa2\x1b-\x19Y\x8c\xda\x17\xca\x90D\xb7\\\x84\x96\xc7q,\x83nDm\xa6\x14M\x9c\x85S\xf5|\x04\xb34$/\xd5L\x0f\x87#\x1f\x0e\x87\x07\xfc\x9fC\xfe\xcf\x03\xfe\xcfC\x03\xba\xcc\x07)\x9b\x87)\x05\xd8\xed\xc4\xd2\xb8\xa0.RK]jV>\xddZ\xf6:\x88\x97UwS\xa1\xd4\xce\x92\xb9\xf5\x80\xbe\x04\xba]\xf7\xa1\x0b\xc45+OQBG\xcd&\xeb\xa4|,\xea\x93\x11\xf4\xd8\xe0{\xa5r'\xfc\xe7k2\x08\x02\x86^\xe5?\xb3M\x12g|{\xe7\xfc7j\xce]W_[\xa3\x9a\xd3Z\xd3%\x17\xd0\xad/H\xe6\xb0\x97f\x1b[(\n\xff\xe7\x8f?|\x9f\xe7\x1b1\x0f\xbb\xa9&\xdc\xd13\x0e4\xeck.\x05\xda\x8e\x87\xad\xf4\xa9\\\x83\x101\xecD\xa4\xe4\xa3@g\xe3bN\xa7gQ$\xb7Ml\xae\xeb\x91\xb1\xc4\xee2\x02f$\xd5\x1f&\x8c/N*\x1a\x7f\xfb\xfa\x07G&\xa2\x0f\x07\xda[\x18\x03+\xfb\x93\xfcg_\xecG\x9fWj\xf1y\x91&E\xd5\x91\xa1\x17L\x0f(\x7f\xf0ejn2v\x05\x8f\xf1\xc1$\x97\xcb\xe7\xa3\x8f`\xd1\x99\x1a\xcb'\xad\xba\x86\xbe`\xf9u\x92\xbe\x97\xe6uX\x04a\xc4\xe6&\xdf\x0f\xf9\x88\xaes\x8a\xfe\xfd\x0f\xe9|\xc3b7Q\xc7Q \x9d\x7f\xe1\xe5&'\x8cg\xd1v.\xe2\xd4%\xa5\xd3\x1e.Y\x85\x18\xa5\xec\xb8tND\x15\xd5\x16\xddn\xe46\x96|\xc1\\m\x17\x05\x17!/\x0c>\x00 B;\xf9G\xcb'\xe4\xea\x95\x80:B\x03\x8b\xbb\xb4|0j\xe4 c\xf1\\\x0f\xa6\x9ah\x87n*}\xa0\xf6\xd2&\x95\x9a\x89-\x92\xcf\xc1&\x89n\x17a\x14\x99\xbc\x82\xd5_\xae\x9e\xc1\x163[\x90lQ\x8d\x85\xf6\x07\xd1xiqv\xbai\x94\x9bn\x19\xdd\xbb\xeb\x0d\xc8\x98b\nd\x1b\x1a\xb7\xc0lQ\x14\\\xc0pLQ5\xd5J\x13\xa2Q'\x10\xcd\xa4*\x8d\x9b\xf4\xc6\xe5\x03\xd1|\x13m\xeb\xa9\xfe\xaa\xb6\xd0\xc6\xcd\n\xb5\x18\xef2\x89\xec\xdd\xf2`W\xf9Ml\xe9\x9eQF\xffE*KN\x910\xdc\x9a&\xe7J\xc4\x1b\xcd\xe0I\x11N\xfa\x88k\xd6\xc2\xbf\xe2Y\xee\xa2s\xfd\x8b\xe0E\x9d\xcee\xd7!\xae\x9a5\xdb\xfd,\xc8\x18\x0c\xc7V\xc0\x97\x0dX\x8f\xd7\xe5\x83\x0d\x1d>\xb0\xb7$\x1f-\xd9\x80\xb8z\xd5\x10Y@>\x98\x86\xad\xb9\x18\x0e\xe0\xeea\xfb\x00\xf0J\xac\xcb\xd7\xf4\xf0\xa0\x85\xdb\xc8\xc0\x86\xadm\x06\xd3\xa8\xd73'\xea\x94\x8fY\xf2\x82\xe6\xc9\xe1\xa4F\xf6\xfe\xb9\x0c\x1b\x92<6\x83\xa7\x13\xb8\xfb\x90On\xc6!\xeb\xde\x03\x0f\xd7z\x06}\xb8\xfb\xd0>O\xe5\x95\x8b\x0d\xdc\xbf\xa7\x1ax0,\x1a\xb8\x7f\x0fz0\xb2\xdc\x10\x86\x1d\x1ch\xa9\x97G\x0fT/\xa3\xe1Ac\xf0<\xf9\xa8\x15>|\xe0k\xcb-p\xab#\x045\x96\xb2o\x10\x08\xb0\xe5+\xf1\xe8\x01\xae\xc4'l3\x1f\xe8\x81}\xa0mPp\xd0\x0c\x05\x82\xc4\x98\xa0 \xfd\\(H\x7f\xe7P\x10\xea\x10\xf1\xeb\x83B\xfa\xd9\xa0\xa0F;\xba\x0f\xdf@\x0c=\x93Q\xfd\x0f\xf6_\x82\xdf\x05ER\xe2\x08\xfaz\xea\x94\x8f\xbe\xc6\xca\xf8\n\x15\xab\xa2XVP\xf2\xf2;\xb8w_2\xaa\xc7\xb0\x85'pp\xef\xfec\xe8\xf5\xb6\x1e\x04\xd3-\x86#\xfe\xa3\x03=p]\xfeqt\x1f\x8e\xc0\x19:\"]r\x0f\xb6\x05\x97\x1d\xdd\xf7<\x9b\x87\x8d\xcc\x9e\xd6hFo\xb8E\xd9\x9b\xf0\xfe\xca[\\\xf2ft\x9cR\xceP\xe1\xac\xc8\xb4T\xc5F\xcdRj\x94%\xb6j:I!\xf0=<$\xf9\x8fkNw\xefi\x7f\xdf/\xfe~\xa4\xbd\x1f\x1dh\x1f\x12\x0e\xfb\x87\x8f\xf8\x8c\x12\x0e\xfbw\x0f\xd4[B\xdc\x84\x10W\xbd%l\xc4\xb7\x8f\x86\xea-a\x0f\xbe\x1d\x1d\x1cX\x04xtd\x80>\xc4*\x1dh\xce\xd7P^(BE\x9b\x8b\xd3|K\x0f\x1e\x12\xbdO9T\xfb\x80\x05\x83ib\xb1\xdd*\x82\xc1\xeb\x1e\x0c\xef\x1a+\x8f\x1e\x1d\x00\x0e\xf7)\xdc?\x87\x1e\x7fs\xf0\x10>\xc0\xfdC\xb8\x03\x9dZ\xbew\xef\xe0\xd1}5\xe7{\x0f\x0e\xef\xde5utppWv4:\xd0{\xa2\xbe\xe1\x0e\xdc?\xdcm\x00\xcd\xd6\x87\xb0\xc1v\x80\x10\xd2\xeb\xe9pW2*\xbd}}*\x94\xb1\xb7\xafOa\x1dD\x8b$]3\xab\xdb!\x08\xfb\xc5hx\xc0\x07]\x81P\xdf\xb4\x18w\x87\xf0\x81\x12\xc5\xdd\xbfw\xef\xf0>b\xad\xa8\x9ex\xf0\xe4 \x8cx\x81\xd0\xf3p\xbd\x1e\xd6\xd6ktP[\xb0\xe6u4\x0e\xbc\x03\x01+\x02\x890\x8c\xfbT\x12qs\xe8\x15\x80\xea\x95c7\x96\x15\x95\x96\x88\x05\xd4\x97\xe5\x8e\n\xef\xd8\x94\xb9\x85#K\x98}\x17\xc6!E\xe4:\x02\x87\x93?,~\x99$\x11\x0b\xe2zSG\xe0\xe4\xe9\x96!Y\\\x04QF\x7f9\xfa\xb8\x0b:,\xf5\xa5hw}\xc9\xae\x1e5\xc51,8\x02F\x1e\x18vQ\x87h\xd1\xc2\xc5-&\x0c\xa4[+U\xa5\xc8\x9c\x0fX9\xf1:w\x04MF\x87UgR\xb9ht\xa5\x12\xfa\xd2\xd8\xca_\x89\x0e\xd8\xa2\x18%bD\xba\xe6H\x96\x03<\xb3\xa9\x7f\xe4\xf8B\x99b'\xf6d>\xa6%,qM=\xe3\x83\xcc1\x1c\xa8\x88$\\\xbd\xdbrvL\xd9\xf29GZ\x10+Z\xc0\x13\xd8r\x1e\xb4h2\xe1S\xaa\xe1EC\xa6\x879\xa5$n\xc9\x16\x11\xba\x19\xe6\xb7\xedU\xd3A\xca\x87\xafm\xf9\x12\xf8\xbcQ\x08Skp\x05\x13\x98\xab\xf9\xaea\x02W4\xdf%\xcds O\xe0\x8a\xcfs\xe9\xc1\x8c\xd3\xa4\x15\xf4p8\xf3\xe9\xf2\x9c\xf3\x1b^`-\xd4\xb0\xde\x04\x9a.V`\x08+\xbep\x91^\xdeLp\x88r\x97{\xe4\xdd\xb5W\xaf\x8bj\x02gf\xedDL\xc7o.v\xa1\x8f<\x024\x995\xbe<\xba\x04\x86\x88_\xa1-\xea\xc6\x87\x0f2[\x8fdFJ|,\xb7`\xa8\x9d\x17\"CM\xec\xba\x12)\xf1c \x08\xb5%$\x8fp\xdbW\x8e\x1b#vXn\x94P\xbdN\x8e\x93\xc1:\xb8\xf93\xbb\xcd\x94\xee\xae\xde\x18\x86\xc5\xd1m\x04\xfbU\xb5p\xa6\x84 ^`f\xa8\xb8\xc1m\x93T\xd2443\x15\xaa\xdb\xaf\xb0\x9b\x0d\x8e\xb3\xfe\xd1&\xc0r\xbc\xde m\n}D\xe1\xe9\xb9\x8f\xc86$,\x1b\n\x0c\xf3\xf1\x94\x99\x13\x96K\xf1\xff\x05\x9d\xc1\\\xd3\x7f'T\xe8\x86\xb0\xf1\xa6\"\x00\xdf\xd8\x04\xe0\xb3\xaa\x00|c\x11\x80\xcfp\x8c\xb9^tm\xa5\x1c\xbc\x82\x18<:]\xb9\x87\x0f\x10\x1c\xcf\xe0\x08\x07:\x821\x9c\xa8\x9d9+\xc4\xe0\xb3B\x0c>+\xc4\xe03RJ\xd5[\x12\x83\xcf\xa4\x12 G\xc0es\xe8\xf5(\xc2\xda5Y\x9b\xb1\x8f \x86\x91\xe6\xb4\xc7j\x0e\x035CJ\xba\xa2\xcdp\xd9\xaa\xa0\xf2\x8a\xbd\xde\x12\xabn=\xb8\x82'\xe0\xbe\x87 \xdc@\x1f\x96\\B\xa38\xd5\xb7\xba\x04~\xe5\xc3{N\xa2\xc4\x96]a\xf1^\x9bIl\x96\xc4y\x18ow=\xe6\x03\xe1\x0d7\xe4\x00\xf3\x9bo\xc5Ee+\xcc4\xdc\xf8\xf6\xee\xa1\x18'o\x077\x10\x8e\xc0\xe5\xebz\xa5\x86[]\xd6\x1b\x0f\xe3\xa9q\xd2\xf5\xc7\x83\xa1\xc0\x11\xea\xbfR\xf3\xd2T\xf3R\xaby-\x8f,\xd4\xf6\x188H\xa1\xb7\xf4zk\x1cn\xd6\xc4\xe5\x8f}\x90\xb0\xb1\xb6o8oN\xce\x97\xc3\xd3{\x1b\x04\xc1X\xfb^\x9d\x10B\x98\x8c\xf88\x81\xc8\xbd\xf5a\xc3\xdf]\x8b\xe2\xfc\xdd\xa5x'\x8e\xc4W\xeaH\xfc\xd6\xf3 \x98\xde\x9ec(KXMW\x82\x96\xf0\x17\x86\x9bY 4(\xf7\x18\xe5\x98\xdbsO\xbf\xa6\x85r\x06\x1c\xc1\xf1\xf4Xk\xe6\x12\xc6\xb2\x8b\xe9\xb1\x0f\x97\x16\xc5\x8c\xaf\x06\x06\xf5\xea\xf7\x17^\x93\xc1\x8cou\x99\x16\xdeb/D,\xd5.\x12UE\x8c\xa8\xef\xe7\x1f\xec\xbf\x16\nt\xaet\x95\xe5\xc3\x07X\xf2/^\xfd\x93\x0e\xb7\xe5\xdd\xe3;\xb7\x86'\x90\x19v\xce\xfb\xcc}\xe3Hb\xdd9D\x84\xcf\xd9\xa3\ns\x90B\xc5\x1f\xcak\xd69\x93\xc1#K*\x83\xc3\x87#\xaf\xfdtO\xba\x13\xc8\xebpp\x04\x7f\xffH \x0dAB\x8b\x91\xeb\xc7e\x9d2]\xea\x03\xaeF\xd5\x13\x03\x1e\xb6GI\xb4'\x85HE\xa7\xad~p\xa2|\xe2\xb2Z\xfa\xb3\xd6\xc8p\xd69\x8d\x0e-s\xba[M[D\x81\x05\x1f<\xea2U\xc3\x0cJ\xfaT\x7fD:\x94\x12\x16Qt\xfc\xfbG.\xad\x04\xa83\xd9D\x16\xbc\xf01\x0d,\x9a\x10\xe6\xe9\xe3#\x88\x0c\x82L\xec\xce\xf8\x07\xa0\x98\x81>\x84nDA:g6\xbd\x18\x8aU\xcfv[`\xf3\x19\xeb\xfe7{E\xdb\xdf\xc0,I\xde\x87L\x7fs\x9cln\xd3p\xb9\xca\xdd\x99\x07\x07\xc3\xd1A\xff`8\xba\x0b\xaf\x93u\x10\xc3\xd9*\xbf\x8d\xd6A\xdcT\xe1\x1e<O\xb6\xcb(\xc8\xe0x\x95\x86Y\x9elV,\x85\xbf\x86Q\x96\x94\xea\xfdx\xfa\x06~\x08g,\xce\xd8\\{\xbf\xaf\xfe\xce\x95V\xd3\x08\xc36%\xc4r\x03Q\x86[\xe4K\x03\xebm\x96\xc3%\x83\x00D\x036)9\x16\xc1\xd2\x92\xe2\x960\x1d\xbb\xca[`\xa1G\x00$Eo^&-%z\x0cJ\x89\x1e-\xb05C\xda\x18Y`\x0bU\x08Ek\x9d\x89\xc9|G\xa6@\xae}\x0e\xad\xc2\xa3T;f\x83l{\x99\xe5\xa9;\xf4a!/\x935\x9b\x00T\x95^o\xe1\xc3L\xaaw\x8d\x17\xd1\xbev\xbe\xe6\xf4q>\x1d\x9e#\x0f\x99\xa3*O\xfcf\xc4\x99H)w\n\xc4\xd3\x0d\x95\xc3?&\xb0u\xe7>d\xed\xa1)M8SI\xe4\x9d\xb14\x0c\xa2\xf0\x17\x93~\\],E\xa0\xc4v\xd7WZ7O}\xf8P\xbdm\x88pY\xa8n\x05d\x86\x16\xc8L0\xa9\x1e\x88\x06\xc3\x0cB\xf2\xfe\xab\xee2\xeep\xd0\x12\xa8R\x81y\x1c\xac\x9b\x1a\x93\x1auX\x8b4A\x07|\x18\x9e\x9b\xfa\xda\xb6\xf6u\x15D-]\xe1uu\xe8\x813q\xa0\x07\xdbz\x8f\xc2R\x06)W\xb5\x9f-\xadW<#(\xca@\xdft\x18\x8b\xc7\xd4\xd9\x8b\xe0\x85\x1b\x99\" \x89\xaa\xd9\n\x831 \x0dxA&\x00\x03\x14g(\x98?\x86\x1f\x83\x9b\xfe\xb3%\xc3\xc1\xff\x18\xe4\xab\xc1\"J\x92\xd4\x8d\x9a\xa87\x1e\x87\x0c\xe6\xc9:\x08\x8d<U\xdfNU\xae\x19D\xa8P\xc3R\x836\xe6\xe7X\x18\x87,\x9bo\x1d\xed&\xc8\x8d\xd7\x11\xcbc\xc5R\xcd#\xe5E:\x8e\xf3U\x90\xaf\xc4(y\xad\xd61\xb2\x9bM\x982\xa3\xbecE=Uk\x90'o\xdf\x1c\xd3\xe1a\x0b:R\x85\x8e\x938\xa1\xd2b\x1e\x86\xce\xac\xfe@\x80\xa6\xefU\x9eo^\xc6\x11\x06Owe\xa3\xdf\x8b\x97\xd5\x8e\xd3A\xc6f\xdb\x94\x95\n\x9f\xe1+\x13\xcdH\x07Y\xb0fganE\xaa\x19\xdd\x8f\xad\x1eY\x14\x15\xe1H\xfbQ\x8ed\xcb\xe5^\xf5\xc9\xb0@m>=\xe8o\xb0\xd7\xe4\x15$'(\xfa\x98\x9cUe\x9b\xea\xd3\xe6\xdd\xe0D\xc1\x8d\xb3C\x87?\x047\x9f\xd3\x9b\x90\xc5v\xe8\xf0sf\xd8\xeaF\xd4\x04\xf4j\xbfu\xa8\xaf\xb5\xd4\x81\xffj2k1L\xc9Y\xebF\xca\xba\x1aP?N\xa9\xab\x04\xfb\x8f\xe1\x9b\xfd\xf2k.\x9a\xed\xff4}\xb7\x1d\x0e\x87\x8f\xf8\xbf\x07\xc3>\xff\xef\x01\xe3\xff>\xa4\x1f\x8b\xc5y\xef\xdf\xf6M\xc7c\xdb\xdf\xeax\xac\x1a\x93\xb9\xfc\xd7'I\xf8\x1dC\xaa\x8b\xfek\xcb\xeb2-\x1c\xc4t\xefk\xd7\xfb\xe6|\x7f\xd9\x16\x8b\\\x1eK\xa0\xbbF\xc9\x9e;\xf4J^\x1ae'\x8d\xf2\xec\xdb4H\xbd\xe3n\xb3,\xb9i\xc8\x1c\xf32+\xb2\x92\xc7c\xbb<\x9eV\xcd\xd3\xb1E\xe4N\xd1U\x00\x1d\x07\xee\xdc\x81\x14m\x97\xf7\x0fG\xe8q\x11C\x0fF\xfa\xc9|\x83X^s\x08\xc1\xca\x16\xc1\x9a\x0e*\x9fbW\x07h\x1c\x12n\x1c\\un0\x1c\xcb\xe3\xcf\xd1\xf0\xe0.|C\xde\x1a8v\x0fz\x90\xf0\x1f\xd8^\x8f\x8e\xf2\xed\xe4'\xa7\xebp\x07w\x87ey(\x84}\xb8\x7f\xb7\xf8\xc7\xf3at\xf0\xd0Z\xc6\x83?\xc2\xfd\xbb\xd62\xe5\xcf!\xfeB\x1f\x84^\xa3\x1bg\xa3\xbd\xban\xf25\x9c\xc6Qh\x89\xbb\x0f1B\x04\xcd\xf4\xe0ny\x84i\xf3$S\xc3\x04R\x9a\x00\xe7\x97\xbc\x03\xfeR\xb5?zt`l\xa0^WTH;\xd8\x0d\xda\xd2O\xea\x90\xb2gw\xf3\xe7@\xc3la\xf9\xedF\xb2J\x91\x86\x0b\x96(\\\xa6z\xfe/\xcb\x19\xb2\xc4\x93\x86[d\xa1\xddAs\x9e\xb4`F\x80V!v\xc3f\x8d\xa9\xc5\x94\xb62\x99L h4\x0d\x83\xd2\xcbCx\x02\\\xbao)\x9c\x90S\xcd\xf0\\\x19\xa7\xc2^\xcf\x0c\xc8p\xbd\n#\xa6\x14'>\x14s\xbb\xd2v\xc7\x81N\xf3x\xe9\x8f\xcc\x19r\xfe`\xdfIK\x8a\x00\xd0\x9d\x04\x85v\xbaS\xbb\xc2\xach\xa3\x8eZz\x8d;\"\xbd\xc1\xd4\x99\xfet\xee\x9c\x97\xcd\x07d;\xe0\xa2l\xcd\x9e\xa3\xda\x12\xa4\xbd\xed\x92\xf0\x0ea\x81\xb0\x1a!%\x1bd\xc96\x9d\xd9\"Fx\xbe,\x18\xca\x82\xe48\x98\x0efI<\x0bD\x10Gv\x0d\xaf\xd9\xf2\xe4f\xe3\xa6\"\xe0\xcf\x07\xc7\xab\x99]\xc1H\xba\xd8`\x11\xc6\xf3\xe3U\x90\x9e\xc6sv\xd3fB\x93\x0f\x87\xd1\\\x87\x0f\x85\x89\xfd\x86\xb3\xa22\xceZ.>\x95,i\x89\xeb\xf9\x02E\x0b\xd7\x98X\xa2\x1c\xda\x1c\xdcx\x10\x05YN\xc3\x7f\n\xb9\xf7\xd8\xe38\xd0\xb8]\x86\xfc\xcc\xbeX\x8aoos\xb6\xd3R\xc8\xd9\xf0\xd5\xc0\x1b\xb4\xb4 \xe4\x95\x858\x83\xf5q&\xe6x\x8b\xc4\xc5\x9fu\xbe\x1a*\x17\x87n\xa6\xebc\xa6j\xf6\x0d\xe0\xd2\x0c\x9e\x88\xc6\xc6\xbd\xb3EY.\xe4\x1b\xe5\x98\xc9\x85\x8d\xea\x89\x88\xfe$\xe8t\x84\xfb\xd4\x92~KQ\xc6\x84\xeb\x8c\x94)?\x99\x0e\x8dq6tyg\x97\xd5j\xbd)\xa3?r\\Hc\n\xdc\x92(\xe8#\xb50\xee%\x7f>\xb6\xedA\x8a\x06W\xd9\x8b\xf1^\x0c\xd8D\xbc\x96\xa5$\xa9\xf2\xc9\x84\xbcA\x92B\xb4<R\x02\\\xa2\x0bpn\xb9qr\x02\x102\x9d'\x85:3\xd1Gt\xd1\xe2\xa8\xee\x12y\x84\xc1Sl\xfa\x1e\x1cq\xe2\xdc\x17\x8e\xa0\xbe1>+\xcd\x89\x8f\x15}?\x87\x9e\xafdN\xe95\xca<<a6\xd56GW`\xd22\xde\xc1\xb8+\x9f\xd2\x9d6\x99\xe7\x9b~\xc9\x88\x96\xa6\x04\x08\xa0A\xa0\x19_\xe3\x16,b\xc5\xed\xef\xd6Tv \xe2\xb7 ;\xaa;E\xdd\x91\x0eYVD\xd1\xd0\xddV\x85O\xcd\x0e\xeb\xdamD=\x1e\xe8\x847H\x04E\xeb\xd6\x1a\xc1\xb8\x83\xc7s\xd2\xb0\xbcv\xe1\xc90\x84\x1d\x82\xdf\x81v,\xda\xbe\xee\xe6\x987\x82\xa2\xee\xba\xe2~\xc3\x84m\xabX\x02\x11.\xf8\x10p\xa9[\x80\xf6\xbd\xe2tY+\x0bcJMf[oO\xf5\x90\x96{\x90\xec#iX\x0d<2\xdaa9\x14\xf7}\xa2n\x10\xd4\xd8p\x0f\xf2\xb6\xf9Qx\x0d\x1c\x1d\xb1\x87q\xf5\x15\xfa\xaf\x1be\xaab\xdca\xbc,\xb8\xa4_,\xd8\x0e\xb4\xd1\x0c<\xaa\xa5>\xa7\xd0=\xa8\x07\xee\xa2Q\xe0\x10\xde$\x9c\xf4\xbdJ\xc2\xb8\xc5\xe6!\x9f.\xb6\x0f\\\xdb\x99lW\xae\xb1\xc6=DjIU\xc4\x13\xd6\x12\xa1~j\xef\x1b\xa7o\xe1\xfajBo\x84\x85\xe8\x8bM\xac<LZ\xfe\x12\x07\x99\xc6\xd6\xf0\xfdJ\xf8\xb7\x06\x07/m\x0b\xc7\x93/\xb7#VkT\xad\x11\x83i\x8a\x08\xc8\xf4\xfc1\xa4\xf0\x14\x86\x8f=H\x84\xdd\xe2\xde=\xb8\x03)\xea\x19O\x9fN\xa0\xe1R\xde\x08\xf0\x92y\x01\x1f\xa2 \xce\xa2s\n\xb7LJJ2H\xd9\x15K3\xe6v\x0e\xee\n\xad q\xc9\x17\xf3\xd7\x80\x06\xaeP\x1f\xb4\xd9\xc4pI\xa7\xf19<y\x02\x0f\xe1\x03\xff\x9b\xa3\xa5EI\x84\xc2\x02f\x12R\xd2OZ\x96\x8e@\xc7{!\x97\xa9.k\xa4-\x8fu&B/\xfbD\x9b \x85\xb9\xdd\xcdf\x92\xb6\x9aA\xa4\x91k:\xb4\x05\xdb\xaaY?\xda\xb2\x02\xd7\x97\xb5^^\x9aG\xf7\xa7\xef\xb6\xcf\x1f\x0e\x87\xfdw\xdb\xe7\xdf~\xf7\xdd9\xffyL?\xbf\xfb\xee\xbb\xf3}K8O\\H\x0e\x89\xd5],\xef\xbc&z\xe6%\xd13\xc7k=\x13\x0c\xf9\xedl\xe39[\x841\x9b\xeb\xc7\x98\xd7a<O\xaeK\x95\x8aWz\x9c\x06z;x\x9b/\x04F\xd5\xabh\x1f\xb9\xc4[{)\x02\xf8\xf2\x01U\xbfU\x96\x9a\x0d\xae\xc2l\x1bD\xc2U\x06\x99\xfc\xf4\xdc\xc3\xbf\xc4'\x1f\xa6\xfb|M\x0f\x8f\xf9Z>?\xb9\xcf\xd7\xf2\xf9w\xdf\x9d\x1b_\xeek\xbb\xfeQ\x1c\x16t=\x13\xf8\xba\xdf\xef\xbf\x8b1\x00\x96\xb3\xca\xf3M6\xde\xdf\xdf\xb0\x1c\xf3\xdd\x0f\xb2\xeb`\xb9d\xe9 L\xf6\xaf\x0e\xf6\xe5\xaf\x9f\xb3$v\xde\xc5\xf3d}\x11\xce\xc7\xe0|%>\xf4\xb7\xa1\xf3\x8e\x0e\xc1\x82<I\xdf\x96\xdaL\xe2(\x8c\xcb-\xca\x82\xce\xbb8 \xb6\xf9\xea\xe0\xb5\x08\x12U\xd4\x1c\xef\xefG\xc9,\x88VI\x96\x8f\x0f\x0f\x86\xc3}*\xd9\x97\xf1\xa4\x06\xab|\x1d9\xef\xe2\xaf\x8d\x936\xb9\xd2\xf9\x90\xf8\xfa\x15\xc1D\x90\xc3\xc6\xb81\xe6\x13$\xd9f\xbb\xfa\xa7T\xbf;w0\xbb\xf7q\xb2\xdels6?\xcbo#\n\xafR\xc0\xa5\x93\xad\x93$_Q\xc8\x16\x01J\xd5*.\xf3\xa6N6K\x93(\xea_\xb2Up\x15&\xa9S\xb6\x19\x98\xae\xa0hH2\xa9\"\xc9\x87\x0f\xb0\xe7:\xf3d\x86.*\xda\x98\n\x93U\xf5Z\x8b$\x97j\xee\"op\xe3\xb9\x8d\x99\xec\xa8;5\x8f\x1e=\xe2{\xa1.\xc6\xe0\x9f(J?j\xd0/\xc3\xd6\x1d\xd0\x1f\x14\xfd\xad%,\x91jA\x90,+\x8cT\x1fL\x1c\xff\x86\xc2\x02\xb9\x89\xe7C\xe8Z\xfc\xea\xa1\xb9\xd7\xedN\x93\x13{\x85g#\xeb\xe0\xc6\x1d\xfa\x80 =\xdf$\x1bJ\x8e\xd57\xa9\x1f\xf2i\x18FIv#4j\xbc\xaa\x01\x02\xea\x02\xd7\xf3eL\x1e\xba,L\xd6\x192\xc517\xc7\xe4\x17\x1e\x17B\xf3\xe4\xbf\xf0\xda,\xbaSm\x9b\xe2\xb5C\xbbb,\x9f+\xe1N\x85\xab\xf0_M~{\xfa\xc3\xa9\xb3\xbe\x86)_\xb8\x0e\xd1\xc0@\xb8\xb6bl\xa7\xe7A\xce<\\\xfcpmMf\xa1? \x88E\xa2\xae\xc3\xd8\xc5?\x82\xcb\xcc\x8d\xbcfc\x89\xfe\xa8\x93\x02\xd6\n\xa5\xfa\x13\xba\x19\x0d\x95Clg8\xaf>\xd2>\xab\xa60\xf2\xc15-\x07\xf4a\xe6\xc1>$\x1dg\xa5?ie{\xb4\xa3\xc0\x0cz\x10\xc17d\xee\x1d\xdc\x83#8\xc08\x0e\xdf`$&\xfe\xbf{\x17\xfa\xf4\xd2C\x95\xd2\xa6\xe0\xd8\x9e\x02Py\x17#\x0e\xac\x08\\\xdf3t\xef\xf5\xf0\x00\xf2 \x10`\x0f\x88L\xd37.\xb1\xa0\x0b\x90\xbe\xd2\x81\x0f\x8f\x1eiPo\xc7\xce\xea\xf3\xd1\x87G\x1d\x8b\x7ft\x9b\xcb\xd9/%5\x90\x84h\x07S\x85|2wK\xf1\x9e\x8dG4\xf2\xb1\x84\xb4\x93\x8c\xc8N\xa4X\xbe\xdd\x8c\xbb[\xbb\xa1h\xd4\x1571\x91*y\xeap\x8c\x8fU|B\x87\xe6\xdcS\xc6\x9d\xdck\x8a\x1d)\x1f\xe1`\xf4|\x9b\x8a\x00\x90q;\xb8\xb3\xf9\x92\xbd\\,2\x96\x9bBz\xeb\xcf'\xed[\x9e\x8c\xc1\x92\xab\x80>\xff\xd7\xb8\x89\xd6\x85q\x9e\xfc%d\xd7\xe5u6]\x9c\xad>\x92Wc\x9c\xf0o\x93m<\x0f\xe3\xe5q\x14\xb28\x7f\xcdf\xb9\xeb\x0dV\x88'\xed+\x14H\x8a\xae\xf8Z\x0f\xc2\xf6j3YM\xe2j{\x95\xc5N\xbcc\xc3Q\x02zm\xa1n0\x05\xf2\x13Xp\x88\n\x91^<\x85\x19\x1cQ\xbc\x01Z\xc91\x04\xe2\xc3\x06\x8e s\x03N/\xf9\x9b\xa2\x00\xb1\xd2\x06\xccn\x80\x81\x19\x8bs\x96\xd6\xb60\xed\xb0\x8b\x99\xdb$]\x94I\xe1>\x1c@\x8f\xa3\x0b\xc7\xaa\x96]\xe7\x85=OL\xefS\xe6\x94\xe5\xc9f\x0c\x81\xbd\xc0:\xb9\n\xe3e\xc7\x0c\xfcP\xd0\x86\xbd\xbd\xfa!\x90|\x1a\xc6\xc3\x81f,\x80\xa7\xb1\x14.\xdfX[Jca\x833N\xbdUN\xb3\xa4\x14?\x90\x7f\x9cDl]s \x04\xc1G[\x17C,\x82\xd0E\x88\x9f\xfd\x17\x1a\x91\xc5\x8f7\xc9\xa6\xcb\xd0\xd0j\xef\x9a\xfb\xa0x\xd7j\xe0\xd4n\x18/\xc5\xc8yo\xea#/k^N\xa4\\\xddd\xe5\xd2l\xde$\x1c\x92wL]\x81\x9bkIN\xa9P\xa0#\xac\x95\x978\x8cc\x96\n\x89\x01\x97y\x86\xc8Bov\x1c\xa3\x00\xadn\x8b\"\xf5T+\xa2\xe6\xc9\x86\x93 \x14\xde\xe2A\x82,\xca\xb4\xfb`\x06W\x83\xb75\x06%\x0drv\x86\x1bQ\x8b\xeah\xa3G\xd2N\xd5\x08N\x96D2e(i \xcb\xaf \x9c\x03\xef\x8ek\xff_\xbb\xed>k@'h\xec\xe8S`M\xc9\xe7\xac\x04^~' \xdc\x15S>\x0d\nw\x86/\x01/\x7f\xa8\xbct\x82\xf9\xfc\xe4\x8a\xc5\xf9\x0fa\x96\xb3Xd\x0c*L.{b\xcaq\xf2\xff\xb2\x98\xcc/\xf8\x9a\xb9%\x9ac\xbc'&E\x1ag\x15fy\x92\xdeV\xad9\x9bm\xb6:\xcb\x83\x9c\xcc<\xa2\x90y\x9d\xb8L\x13\x92 \x08\xe1\xe05\xe3\x85Qj\xd4+\xd7%\x0b\xcaT*>\x0fj\x95\xf9\xe8\x82m\x9e8\x9e\xda\xdc\xea\x82\xb8N\x94\x04s\xc7o\x87 \xeakWE\xb1ql\xeb \xde\x06\x91%\x86=Wq\x1a\x86\xbdI6\x19\xaen\x9b\xe7\xb5|\x18\x86\xe8&K\xdc/,\x16\xdc\x8cRH\x15\x9f\x12T\xf1\xc4\x8bAQ\xce\x06\xf7\xb0\x87\x97\xf3\xc40e\xb0\xf7\xc1*\xc8\x10\x92v].iUL\x06\xa8\xd0\xb8\xde\xa0\xd0\x08\x9aO\x0dZ\xedC\xd2h\xa7 {\xc9\xa4x\xf0\xed\xed\xe9\xdc\xadM!e\x0b\x99\xc1\xef+\xc7\x9b\x8e\x9a\xf2\x05\x83t\x8ek\x1b\x05\xd4\x0c\x05$L&\x850\x99s\x1e\xc3:\x88\xdc \xe4\x98D\x08\xe9\x9c5\xb5+\xf4Cx2\x81\x14\xc8 \x1d\xd0\xff\xdc \x124\xa8\xa8\xd0\xac}\xd9\xa1\xd9D\xb6\xf6L\xae\xebW2\x8aO\xe1\x86\xe5\xb8?}x\xf7.\xf34J\xe5\xbe{\x97}\xf87\xcf\xe4\xc2i\xc5\x9aY\x14\xce\xdewB\x99\xd2\xb1!\x1b\xe4A\xbad\xf9c:\x89q\x9e9\"\xd8L\x1e,_\x04k\xf6\xd8\x13G\x9f\x9b eq\xfe\"\x997$\n\xdfs\xf7\x90\xb1\x8c(\xe0\xd7\xe0z\x15\xceV\xa4&`\x1a\xc8?\xb3[\xfa\xb5fy\xa0~\xcc\xf24R?\x82\x88\x97j\x8c\xfd\x82\x16\xc86h\x94\x90\xa8\xa8\x94\xa2\x10\xf5\x08d\xe52G\x95\xdf\xe3\x9a\x91\xbc\xfa\xc4\x1a5\xd1\x80\xb6\xb9R{\xca?\xd0\x88\xac\xb8\x96\x82\\\xc7\x8d\xeb\xe7k\xd5\xa7\x94\x02pW\x90\x06\xdd\xc5\x0b\xb3\x18\xe4y\x1a^ns\xe6:\x9cv8\"\x85A3\xd9\x12\xc6\xfe\xe2\xce\xf6W\x0e\xf9\xb7n\xc9C:\x1f\xcc\xa2 \xcb8\x90\xb5\x86\xfa\x91\x06\xdf\x06\xb7w\xf9D\x0d\x840-\xdcZ\xdcQ\x9b\x89\x10\x8fW\xber\xc4\xd1j\x87\xbdB\x0c\x88\xe4\xd1J;\xb9\xca$\xac\x10q\x8c>\x95.\x01egJ\x19'\x08\xcf\xc94\xd5\x06}W\xe2\xcac'\xd6\xa5?\x15^\x02\x93\x16c\x164\xab\xd3\xf2Y\xec\xcc\x19\xa9\x16]\xff,3\x9c\x0c\xfa\xb0@/\xeb;\"x\xd9N\xb3\x94(\xa7\xa4<\xf7\xef\\\xdet\x8c>^\xfa\xf3\x11C\xbb\xa2\x94\x91\xf9\"\x83\xf4\xac\xc1\xe8af'\x16V\xf2\x07{!\xe9\x07\xa7^~t\xcb\xdea\x18\x9e\xd1\x18J-\xc5[\xad\xc1f\x13\xdd\x92\xa7 \x8c9\xac\x7f\xf8\x00\xae~\xa2\x1c\x9a\x0f\xa0;\xdd\xc9\x13\xc1\x1b\xe9\x94\xb2\xc8\xc9\xe7\x83sq\xc1\xb2\x1f\x93\xf96\xe2\x92^y_0}\xdbX\xcf\xc8\xa0\xeb\x99\x926m\xdc\xd8\xbd\xeb\x19\x02\xa8\xf0\x0f\x07\xd5\x0f\xa1\xf8pX\xfd\x10\x88\x0f\xf7\xaa\x1f\xb6\xe2\xc3\xfd\xea\x07L\xf6\xe0\x0e+o#,^MJ\x85'G\xbc\x15\x94&\xf1\x0f\xb2\x88\xb9\x87\x0f\x1fT\x1b^P\x94\x17\xcft1\xd3\x90\xf4Y?\x83f\x83b=E\x9c\xd5:\xac\xcb\x9b\xb1-\x97/A,2E\xbdX\xb1h\xc3\xd2l\x90lN\xe7\xe5\xe1\xb6;\x02\xaa\xd1\x0b\x7f:\x0b\xfe\x91\x9c(F\xe7\x89Lj6\xcf:\xa9\x9e\xf1JA\xb5\x92\x9b\x0f..0\xfd\xd9\x05\xc5\\\x1b\xfa\x18\x19R\x16\xf2<\x91#\x11K\x93{g\xe3\xc1D8\xc8\x93\xe52bg\xab\xe4:\xeeJK\xa4\xb0\x1f\x0e6i\xb2i9c\xcc\x85\xd3\xeem\xb2\xcd\x9fa\xdb-\x15b!\xb7-\x9b\x8b\x91\x97\x1cG8$\xd5\xd5\xcd\xab>\xc25;\xc3\x896\x17E\xad\x96s\xae\xd7,K\xa2+6?\xdb^\xe6)k<\x0f\xc53P\xcd?'@;\xf9@$\xc6\xa95\x84!KV\xc9\xb5;u\xd4\x0c2\x87\xec\xd9\xe7>\xec\xd9\x9c\x9a)u\xcfq\x10\xcfXt\xccE\xe2\xae[\x869j\x04\xbdo\xde\xae\xf4\xf64\x7f\xb9\xcdO\xe2\xe02b\xf31\xec\x85B\xa7\xac|\xb1\xb6b\xc8H\x03\xc5\xd8\xdf\xa4\x1c\x10v\x1a\xfb'\x80[\xb6a\xb3\x1d\x80m\x13\x98b\x8a\xea\x0fA\x1be,j\x10\x0c\x7f\xcbU\xe60\x84.\x1b\x7f!\xbf$F\xc9\xc11\x87ejs\xab\xa3M8\xb9a\xb3m\xde)q\"\xec2-F\xed\x9e\xc6\xaf\xd2d\x99\xb2,\x1b7&\xf2n\x18c\x1d\xfb\xba\x0e\xf6\x13\xa1\xe5\x8cEl\x96'\xe9\xaf\x00/]\x08\x13\x1f\xc2\xab _\xd9aK\xdd\x07\xc0\xac\xf6\x1b6\xab\x12\x15.\x9b\xfd\xe9\xcc\xf5\xe8\x12\xb1\xa9\xc4\xd4\xe1\x03Wt\xa6a\xf9\xcdt\xebW\xde\x82_\x0da\x7f\x85\x0d\xb0\x10\xf6\xf2\x1eX\nu\xdf\x06R\xd1\x9b\xb2\x00\xd6 \xc9\xc8>[\x13zZr\x8a\xfb\xa6;\x97\xb57\xca\x11\xc1\x87\xad&\x85\xf8\xc2\x07\x81OA\x7f;5\xcf\xe3=\xbb\x1d\x83\xb3\x0e6Hb\xde$\\\x8c\xce\x1c\xf34\x84\xe8\xdc\xd9]B\x1aJ\xf2A\xb2i\x07\x98\\\xc8)\x1d\x89A\"\xc4\xb4\x9c\xdc\x1d\xe3E\xb8\xcc\xbc\xb63w\n&?Of'7\x9b \xce\xc2\xa4\x834\xc2\x85G\xb6\xf9!\x8c\xdf\x87q\x8bX\xb4\xa5\xe2a\xb6\x89\x82\xdb\x97]\xa5\xa3L\xaf%R\xd9I\xff\x8f\xe6\x9a\x11\xa9\xb6\xdb\x0d\xd7\xa6\x10\xc6\xd7a\xfe#\xa2]\xcb\xeaa<E\x94\x82\xce\xb6\xebu\x90\xde\xb6\xad\x1c\xaa\x0f|\xa9Oc]nrP\xd9J\xd2p\x19\xc6A\xa4M\xd99\xf7\xe8\x1c\xc8X%\xa9\x15\x9c\xbb1\xe5\x90,\xca!\x93Eb\x03\xb9 &E\x9b\xae\x13\xce\x9d\x961o\xf0.{I\xc6C\xe3\xa3\x0fM!\xf9Ah\x1fxt!s?\xa0X\xd9\\\xe7\n&\x10\x15\xf7\x0f\xd5\x88\x9fNd\x84\xd9Bm\xce\x07A\x14%\xd7o\x04\x01QlE\xc1~\xf9\xfbwI\xea\xd6\x97b\\m\xa6e9\xd6\xf6-\xc4\x88Wa~+6\xa3:\x18\xf9\xb9I\x08ou\xb6\xe2\x8f\xb6\xefcX\xb4\xe0j\xf6\xbc\xc0;Eb[8\x8f\x06\xd1c\x985\x97\xad\xe3\xe9\x18\xb6\x9d\xaaT\x90\xb4\xd1\xfd\x89?\xa5]\x1a\xc3U\xcb\x1c\xc4j\x8fa\xdd\xb6B\xcf\xb6\xf9*I\xc3_\xf8\xca\xe4\x83`\x9b\xaf\x8aM\xd3\xbf\xba\xeb6\xc2H\xba\xd9\x18R\xa9\xa6\xb9\x1b\x1f\x9c\xc56\x8a\xc8\xb5<li\xe0\xe7\xedz\xf3&\xf93r\x13\xe4\xb0\x03\x07z\x02\x7f\xa1\x07\x8e\xf8\xd9E&\x90\x99B\xc758\x94_\x8c\xf8\xd0\xd6(n\x99\xa9M\xfc`l\xd2\xda\xe2\x0e\x06\xb6&\xb6;\x93\xe1\xa1\x9e\x87\xf3\x1f\x93m\x9cwd\xbcmL\x97\xc9;\x87(\x02vS\xbc\xd5=\xc5\xddto4\x10\xe9\x94\x0d\xfd[y;6\xf5\xfb\x0b/\xdd_\xc3(z\xcdf,\xbcb;\xc9.mkH\xa2\xb1\x84\xb8.rq\xa7eN?m\x99s::+\xf6TeH\x96\xcb\xfd\x19Z\xa2Y\x0c\x05\xa1\xe8\xc6\x95\x1dN\x7f\xa3\x1dNY<gi\xc7\xedl\xdb\xcd2F\xb4c\x02k\x15Yw\xb2\x94\xb5\xabLIg\x95\x89<b%\x93h\x97_Y\x89\x13\xb4\x0b\xb0;\xd8\xf52\x1aJ\xc1s\xdb\x85\xce\x8eh\xb2\xc1\xa2\x8a\xa9\xb4pe,\\b\xb2\xed\xe2]W\xdc\xbe\x12e\x11\xd4\xdb\x05,\xb6\xb3\xf8\xbf\xd4k\xed$\xfe\xdf\x8a\xf5\xac\xcbI\xcd\xf5.KJws\xd9\x8b]\x8d4\xd7\xbb\x99\x14N\xb0\xb8\xb8\xb1f\x88DY}n\x8a\xf2\xa8\xf25\x97\xa6<8;\xe9\x95\xc7Z\x95N3xO\xd0\xb7\xcdW\x9d\x8a?S\xc5;\x0e\xe8%\xe1d\x90\x1dvj\xff\x95*\xde\xb1\xfd7Xa\xd1\x02k?\xc2\x04N\xca\xdaYc\xf9\xd3&>'OO\x16\x83\x1f\x83M\xab\xd2\xfe\xb3\xd0\xf4\x17x\x13\xfcOg^\x0b\x8b\x03T4\xc6p\xda\xdc,\x7f\xf2`\xd9\xe9\x86\x05\xa7\xdfV\xef]\xfd\xc9\xa4\xee\x91[\x14-\xfa.\xf4,\xc7\xc2\xdd\xf4g\xce6)\x9b\x059\x17\xf1OI\xf3-^9B]3\xf6\xa5\x15\xa3\xee\x9a\xccS\xf2!\x0e4\x86\xa4\xbdh\xa1\xa7t\xb8JQ\xd6UZTi\xa8\xaa\x8a-j\x19\x96\xaf\xdb \xc4\x82u\xb7X\xb4\xf7R\xd2/;\\\xf0SzU\x8b.\ne\x15\xaaE\xf6\x80\xbaN\xd9B\xf2AW\x81Z\xf4O\xb0\xe8\xc6-\xda(4\xe8\xc7-B\x12X\xd5\xfd\x16\xce\x0ff\x89\x96\x04b<\xd2\xa9}mo\xb0f\xd6\xd5\x9a\xebzB\x04P\xf7_\xd7\x1fa-\x89\xa4\x89V\xb8\xb5\x0b\x8f\"\xf7\xc7\xb6\xabb\n\x9c\xc7\xf0s\xf3\x8c\nm\xba\xcdh\xdf\x11<\xba\x82\xb4v\xb6-\x96P{\xd3\\\xb5tR)*\x97\xde\xb5U\xd7\x0eiUu\xed][uqD\xa7\xaa\x8a\xdf\xcd\xd5\xa4<5\x86\xcb\xf6\x82\x82\x95\x8f\xe1\xba\xbd\xac\xe2\xe3c\xb8h\x19y!$\x8c\xe1e{Y\xad\xe5W\xcd\xa5K\xf2\xd0\x18\x8e\xbb\x94\xd6Z?k.\xaf Och\xd9\x9d\x92\xe44\x86g\xcd\xa5u\xc1r\x0c'\x1d\n\xa3T9\x86\x9b\xe6\xa2\x8bx\x0co\xac%l\x87\xab\xb5\xb7\x1f\xcf=\xbfrO\xe4\xa3\x9b\x0d^mSfJ1\xb9\x92\xe4\x02-\x1d\xb5\xb3\xa9\x12s\xda\xab84\x16t\x00\xdd\xc7J\xdf*\xbc\xa4Z\xd5\xc4\x0c\xaa\xb2\x84\x8d\xf2k\xc6\x05\xcc\x15#&\x00\x13\xa0\\\x14\xbf7\xc7\xaf\xc8\xe6\xf8\x15\xd9\x1c\xbf\"\x9b\xe3Wds\xfc\x8al\x8e_\xfc\xc3Pw\x1a\x8a\xc8\xb9\xcb\x92k\xfa\xb7\xf6\xd9\x9a5\xfadi\xfeX&k\x8cv\\ip\xc7\xf2?\xd9\xe5Jx\x18bq\x992\xa7\x9a\xd6\xc8\xe8\xd4\xf8\x19\x07\xa7d\xa0Z\xb2\xfc\x07$t\x06)\xbe\xab}j\x17\xdbT\xbe\x83\xaa\x1c\x9b\x14\xdf\xc1l\x9b\xa6\\\xbch\x10t\xd1>\xe9\xc6\x98T\xbc\xd1y\x0d\xef\xe8\xb6\xceO\xab\x90Yd\x1dg5r\xa4O\xeb\xd7\xf0\"\x11\xdc\x03D\xf0\x19\xbcS\xe0|\x8d\xe7\xf5_;\xf0ug\xd2Z\x86\x00\x93@\xd5bg\xfc\xa4=T@a\xb3\xe6\xb6\xac\x06\xa3\xa50\\\xfb(\xcf\xa7\xcc88\xd3\x90\xed\x99\x18\x87Nwg>\xccj|\x84Z\xff\x171\x16\xcf\xfftb\x8c \x8b(\x15\xfa\xd5|a\xb0\x8b\xd3\xac\xba\xf0\xc3WL\x91_\x15_?\x82 \xe5 u3\x8fr\xe8\x0f\x1f\xc3\x0c\x9e@\xf6\x18f\xbd\x9e\x07\xd1tv\xae\xd7\x9c\xce\x0ca\x01\xc5R\xc6x\xe1\xd1\xe6\x9c\x8b\x18\xd8\xca-fA\x14 \x96\xc1|\x98\xf2\xba\xe72\xf4b\x84IZ\xc3\xc1,J\xb2N\xeeV\xc2\xc5J\xb7\xfd\xa11\xfc9G\x85\x10\x7f\xbbU\xffz 4\xc3\x8bZ5\xa6\xc77\xe3\xb7\xe0\\_\x96\xe4ub[\x1d\x0d\x9eqwcj\xba\x03;\xa4\xd3\x15\x96\xa6\x1d\x86\x10\xeeb\xf1\x0e\x84\xf1t\xf0\xec\xec\x8d\xbd\x14\xdfm\xed\x04-\x90)m\x1b\xcc`\x98\x0e\x15\xa1)\xd6\xc1\xa9\x81sS\x8aT\x87\xaf]f\xcb\xd0\xd0\xc6\x8a\xe7\xe1U\x8dT\xeb\x8f\xbaV5\x06g\x1e\x06Q\xb2\xecoo\xacWq\xbfH7\x97\xc1\xec\xfd<M6\xf6\x8e\xbc/\xd4\xd3:\x99\x07\xd1\xaf>\x1f\xea\xe57Z<9\xa5>^\xcf\xff\x8d\xfaZ\xb1`\xfe)\x9d\xad\x0e\x95\x1c\xe8<\xbb\n\xc2(\xb8\x8c\x18\xea\xfbI\x1a\xfe\"\\\xb8\x9a6\xfbr\x9b\xe7h\xe0\xb5\x0f8\xbf\xdd P\x89\x92\x9d&\x86\xfc\xa0\x8f\xd3k\xa8\x91\xc4\xba\xb9 \xeb\xec\xbc\x02\xd9\xd5\xb2q\xf4\xd7\xe1<_\x8d\xc19\x186\x0cd%\xa2;\xf0R;\x8f`\x9b\xd5e5\xfdY\xa5l1\x06\xe7+\x9c_\xc3 n\xa20~\xff}\xa9\xb0\x05y\x91\xe9~Y\x00\x9c%q\xce\xe2\xdc:\xfbh\x80|\xee\x8c\xfd\xcd\xf5\x06\xeb`S\xcaI\xdex\xfd\xb7\x85~\xce\xda\xcc\xb6\xc8~[\x0e?\x9e\x9d\xbdi=\xf0\x98\x17,\xc1\x1a\xb7D>e\x13X\xcb\x19\x96\xce\"[\x0f\x81*\xa6\xb8\x96\x93\xdb\x92\x91\xaf\xc5\x00\\1{\xd6\xdd\xa1\xe5c\xb3\xb4y\xf8\xd4\xbe}9%\n\xdf\xfeK_\x12\xcf\xbf\xf4\xa5\xff\xc5\xfa\x92\xe0|]4\xa6\xce\x97S\xf2\xeez@\\\xd7/\x06\x1a}|\x93\xa8\x83g\x9bI&\xafim\xe6\xd4\x15\xffR\xda\xccO,\x80\xac\xac\x8dy\xa4\x8b(\xd9\xedU\xb2\xd9n\x1c4,6+u{{\xbb)>\x89\xa8\x13\x14\xee\xce\xde \x0b\x7f\xb1D\x13\xf9\x92:\x10\xef\xb2\x7f\x9d\x06\x9b\xcd\xa7\x08\xbc\x1d\xe4U\xad\xb3\x04\x8e\xc0\xb9\xccc%\x113\x88\x92\xd9{6w`\\\xfd\xb0\x8d\xc5\xa7\xae\xf2\xaa\xf8\xb5\xf3\x14\xb2M\x10kR\xbb\x1c@\xa3\x98\xfe\xcf\"\xe5\xe2\x82\x7f\xa5\xad\xf1W\x1d\x96U\x13|\x1b\xea\x9bG\x8c\xf4\x14\xddkm#\x8f\x85u\xf8_\x92\x0d\xfcK\xb2\x81\x7fI6\xbf\xbddc\xbd7\xc0\x06Y\x9el8\xd4\x07\xcb\x80\xf8\xb0\x99\xff\xc8\xcb\x05\xd2z,:\xb1\x88&\xe8lop\xa9\xff\x9f(\x8e\x94\x1c\xd5?\x8dy\xef\xc6R9\n\x96\x85\x94\x8b\x0b\xceH5\x9am\xf8\xda\x81\x0b8A\x1a\x06\xfd(\xb8d\x91c\xea\x06h\x9c\xd6\x8e\xe4\xf7\x0e]}!>\xfeO\xc2\x93\xd9g\xf2\xe4\x86\xfa\xe6\x11\xff/\xb4\"\xcc8K\xad\xf1\xd4D|\xa9q\xe1PV11\xdb\x99\x89\x0bo\xc5\x87\x1a\x17\xce\xc4\x87\x1a\x17\x8e\xc4\x87\x12\x17\x9e\xc9\xc8G3\x11\xf9\xc8\xc4\x8fg\xbf=?^t\xe5\xc7\xb6\xb0EU*l\xe5\xb9W\"\xafz\x95\x98[}g\x92:\x0fl W$\x16+\x18$1\xa7\xcd\xc7\xab ^\xb6g0\x02\x8d\xcf\xb1A\x1c\xac-\xbaXP\\[\xab\xb0\xe8\xbf\x7fDL`&\xf4\xe3\xfc.\xc3\xbb\xee|H\x9d\x06S\x0fb\xc7\x1b\xa9\x1f\xdf*\x15\xca\x0d\xc8\xe3\xd7\xd2}\x94,M\x91tv\xe8\xbfY8\x08\xda\x14t\x8a\xab\xd0\xc9@B\xc1\x154\x93H\xcd\xe6\xdd\x1a\x80U@\x819\xa25 \x1d\x19\xe4 \xc9w\x96\x99\xc5b\xcd\\s:\xd3\xa0~\xec\xbe\xc3b\x9a7\xb3\xe3Y|P\x84\xfa\xe0\xbf,8\x0ee\xd9)3\xcaN\xc1?@vj6\xe2t1\xf6\xc4U\x00i\x83\xa5\xee\x87\xeeyW\x1bR\x88\x85\xbb\x9d\xd0\x07t\xd2\xcd\x91\xff4g\xeb\xa6\xabH[*Jy\xe0\xda\x8cO\x19\x15\xfe\x96d\xc8\x96\xa3\xf6\xa4do\xb2\x97\xa5\xc0\x19\x8b0\xcaY\xfaIH\xb7\xb77\xc3k?\x96(\xea\x80\xd8g\xef\x7fc\xee\xbfc\xe7r\xe5D\xd4]\xbc~\x94\xdfnXC\x8c\xd8\xa6\xc1\xcc\xbf\xcc`&;\x0c\xa6Q\x8f\xb0\xdd\xbf\xd8\xdd\x088K\xe2<\x08\x9b\x0e\xd9\xf7\xf66h\x95\xe4b\x87\xb5\xdfE\x92\xae\x1b;Nb\x8a\xf2\"o\xa5(6h\xebvS\xa6\xf6mI\x97Z\x16&\xe8t\xc2\xd9v\xba7[\xb1u\xd0z`\x18\xe3\xf2\xb6\xb4\xb5\xd3\xe9\xa6.\xc3\x8c\x81\x95d\x9a\xe6\x9a\x81vy\xad\xe5\xdeK\xf9\x08\xf5\x13\x8e.\x0bN\xea\x7fA\x00\xbd\xcc\xe3VK\xb5\x00P\x8e^\x0b\xfa\xf3\xc8:\x82\xack\xef\\e\xa6\xa3yi\xa3\xee\xac\xcdjR\x96m\xc8\xce\x0fX\xc6\xf1`\xfciC\x15\x1e!\x84H\x1d=B\xeaS*\x00\xc4\xba\xb8e\xeb\xf8'\x8d\xb5e\x0c|\x8b\xe7I\xdc\xe4\x97\xb1\x83\x97\x8as\x8cn\x1bh\n\x9bs\xa25o\x03 \x01\x94t\x18\xf0E 7\x9b%\x1b\xd6\x9f\xb3E\x83/\x87\xa5\x9bMq,q\xc6[\xc9 H\x19l36\x87<\x81e\x1a\xc49\x041\x04\x9bM\x14\x8a\x80\xd3\xf3p\xb1`)\x8bs\x88\xd8\x15\x8b2H\x16\x10\xccf,\xcbx\x95y\x90\x07\x90\xc4p\xc9VA\xb4\xe0\xdf\xf2\x15\x03\x16\xcfy\xa3\xe9\x00N\x82\xd9\n\x9e\xbd:\x85up\x0bs6\x8bx\x7fI\xcc Ia\x9d\xa4\x0cp2\xd9\xa0i\xf7\xf5Q\xf3\xa6R\xf6\xb7m\x98\xb2\x0c\xbbZ$Q\x94\\\x87\xf1R\xb6\x04Dg\x80b\xe1'1\xcb\xe06\xd9\xc25\x9f\x9a\x9ac\x9e\xc0\x19\xa5\xd1\x85\xb7\xa7\x03\x07\xe3\x03\xef\xc6\x81?\x8d\xfb~\xac\xbb\xd64J<\x9f\xcb\x91A2\x9f\x06%\xc5\xbe\xf0\xdb\xb6\xa6w`\x00\x92\xbd\xb5\x05\x8dA\x10oR\xa9\xda\x19\x04\xa7z\x9ft] \xeal\xa3\xa2\xe4b\xbf7\x1b\xd5\xef\xf2<\xc8\xa7?,\x96\xa8\x7f\xb6\x93\xa1\xffy\x17\xb6\xbe\xa8\xda\xdd\xa6T\x8b\xd0\xaaH\x0b\x9aUo2\x905\xeb\xdc\xbb9\xbaw\x93kC\xe5\xe3\xd1\x16\x1a(\xd8\xc1}^h\xdc\xc1&\xfc3\xbb\xe5\xc3hR\xa4#*|\x19d\xe1\xac\xad\xecL9\xd17+\xdb\xb9\xce\x9a\xcc\xda_v\x1db\x06\x93E\x13C\x9a\x05\x19\x031\x0fgl-\x06bh\xb6\x83\x8dV\xce\x02\x1d\xb5&\xe8\xae9AW\xed j\xfaJ\x87\xc8\x1c:+\xec\x10\xf9c'\x0d\x0dHF\x15\x1a\x9a=\x8d&4\xe8\xf6\xf2\xb9LY`9V\x05\xb5\xbf\x08z\x9f\xb1\xbd\xd1\xbf\xb6\xf7\xf7\xb9\xbd\x92U~\xf2\xcev\x928A\xedn\xf3\\|p\xde\xc6\xef\xe3\xe4:Vas4'nTB\xc1\xf1a\xd1\xf5v+t8\x0bo\x1b?\x8d\x1bz\xe0\xf4\x7f\xde\xae7V\x15\xcb\x90h\xe6\x7f\xf8 \xe8\xefR\xba\xfc\x97L\xf9\xbfD\xa6\xe4\x82V\xd2@HU\x1c\x00\xd7A;E\x93\xd0\x14\x17e\xd7,\xcb\x82%k*\x9d\x16\xa5\xb3d\x9b\xce\xac\x02\xd4\xe7\x92\x1e\xdd\xc6\x83\xb3\xb5\x85m\x05\xcc\xd3}\x1b1\x13\xe4\xea\xcfe0{\xbfL\x93m<?N\xa2$\x1d\x83\xf3\xd5b\xc1\x18k2\x86\xf1g&J\xa7\x8d\x1e$\xfcY\x07\xe92\x8c\xc7\xe0\x8c\xd8\xdaL+\xc1J\xaa\x1b\xbd\x80\x1bW\xaa\xd3\xe4sv\x93\xbfI\x838[$\xe9z\x0c\xce,\xd8\x84y\x10\x85\xbf\xb4\xcd\x9e\xe6\xf4Z\xb8\xed|\xda\xc4R\x1f\x1c\xce\xbb\xf2F\x9f_\xddO8\xfe_\xeaSSc\x10\xbf[\x9f\x9a\x7f\nO\x1a\xe8\xe6M\x03\xbbx\xd4\x80\xb6g\xbf\xa2W\x0d\x7f6T0m\x18\x05\x1et\xb7\x19\x1a\xd0\xdf\xb6\xc5\x84\x10a\x996c\x04%\x85X\xb2\xfc/\x1c\xa6[\x02\x98\xa4\x1d\x12\xa4\x90\x92\xd24v\xa1\xf0D\xf6\"\x02\xbff\xc6\x02\x9c\xfc\xd4>\xd4)\xd5\xe7\xfbm\x80\x1e\xf5\x07\x97\xe7\x1f\x16\x98\xbay\xa7\xa1t#\xaa\xc9\x95\x16t\x7f\xea;w\x8a\xd4\x10\x9c\xe0\xe14\x1c[z\x9c\xfa\x92\xdbX\xd8\xef\"\x94w\x1b\xdc\x83.(u0\xb2\x81\x12\x95\xba\x99\xc4@\x19\xe6\xda\xf7.\xc44\x8d\xcei\xbc\xd9\xe6m1v\x03*\xfb:\xb9n+\xb9\xa5\x92\xc7I\xa3\xb0\x08*\xff$\x1e\x19\x9fp\xc1\xac\xad\xfc\x8c\xca\xff\x18\xa4\xef\xe7\xc9ukX`\xcaB\xe9\xfc C\x9d\xbe\n\xf2U\x9bO\x0e\x08\x17\x96\\\x04W\x12\xa4\xa9\xb9\xc2\x1c Y\x10E8\x85\xcc\xf5v;\xf0\x92\x8fdo$\x11\xf3%9\x9d;\x1e\x9e\x7f}\xba\xe9\xa2\xdb9W\xcb\x19\xea\xean{\x99Y2g\xaaT\xa2\xe2\x04\xbb\x0e\x07B<\x07t\xfe\xff\xff\x0f\\2pz\x8e\xbd\xa5E\x9b\x11\x84\xa2#OU\x16\x19\xcd\xe7\xce\xf1!9\xb7V\xc6\xb4\xb6\x9bF\x87\x98\xd5}\xc3\xf5\xb2y\xd3\x19j\xd0\xb62\xad\xb7\xf4I\xf7\x19\xcb\xf5\x9a\xb3l\x96\x86\x9b\x1c\xa3^7\xcf\xe5\x93\xc7\xa4\x1f\xfc\n\xbd\xa8\xeb\xd6\x96w\xf5\x8b\x8d\xe24\xde}\x0ca\xfc\xd9#\xa0;\x13j\x14\x88\xeec\x07\xc1\xa4\xc1\xf1\xa04\x18\x07\xbe\xc1\x07\x1a\x9dB\xb6mC \xdb\xc0Dx\x8ep\xe5\xabE\xcd*L\x9e\xf2\x92\x06\xfel\x82%\xcf\x87yS\x98\x8a\xae\xde\x83\x9f\xe4g\"\x1fT\xcd[\x0f\xb2\xa1\xfd\xe4\x1d\xc0\xea\xefD\x9f:\x0b\x1a\xa6\x80\xa9\xa6\xc3\xec\xf2\x907m\x97\xd3u\xc1\xa2N\xbbK\xbb\xa67e\xdd\x85+\x91\xfa\x8e\x15\x97\xbcZN\xe3\xc8[6\x0f\xd2%\xcbi\xe3\xede\xe5\xdd\xb7\x8a\xbf<#\x91\xbcmg\x85\xc0ega6\xf6\xc5\no\xfd\x10\xd3L\x87\xadz\xfc\xbf|\n\x8a\xe7\x93\xac\xbe\xffd>\x05\xb0\x9bN\xde\xe9f)\x88\x9e\x7f\x83\xc4\xdc\x0b*\x186\x8cb\xdb%|\x05\xdf\xd1m\xab\xde\x11a\xa9f\x9d`&\xf3a\x0b\xc1w\xb0\xcdXj\xbfP#v\xbfK\xf6RR\xce\x1b4o\xa9\x9c7\xccS*\xe7p\xd4Bs\xe4\xa8m\x8a<\x7f>r\xf0\xb4\x9a\x19\x7f\xeb\x94\xa8\xffp=\xbf\x8bc\x06\x94\\HZ\x95\x0e\xbaM,\xf5\xfcX\xd3\xf39\xda\xd8\xd6\xbe\xbe\xf0\xffK\xb5\xfdv\xed}\x978\x93\xf0;\xd0\xf6\xa3O\xd3\xf6wS\xdf\x17\xbb\x99\x08\x0c\xda\xbe\"z\xedj\x7f\xf2\xab\xaa\xfduc\xa3\xfetP\xfb[N\xccH#\xb1GH,\xd4~\xe7\xdb \x0bg\xe5\xe8\x88\x8e\xbdj\xab\xce\xdb\xac\xc3\xa7]tx\xfb\xb0\xad:\xbc\xadJ\xd0\xb6\x14\xad6\x89O\xd7\xe1?yLU\xdd\xf5\xad\xe4yR}\xb5V\xac\xa8\xaf\x8e\x0f\x1b\xfc\x9f\xeb\xaf\x0d~e\xcd\xc3\xf9\x82\xfa\xabpC\x9f#q\xa7?[j\x10\xafw$\xde\xfe*\xfa\xf1\x17\xdb\xa8WA\x96]'\xe9|\xe7\x8d\xd2\xed\x0c\xbf\xde>\xed\xbe\xfa\xc16O8g\x8bX\xcew!f\xd7\xfd\x8d\x98c\xb7}\xebXZ@P\xc7\xd2\x9f\xb6\xcb_\xc4\n\xf2Y\xde{\xff$V\x10\xd3\x11yy\xc8\x8b\xdf\xbf\x15$\xd5\xac \xf6R \xda\xf7;\x18I\xd2\x16\x99\x8d\x1c\x9b)\xb5\x176gf\xe0\xc14<\xe7\xb2\x85\xaf\x9b@\x9a\xe4V\x94q\x03\xf3n\xa2\xe5\x84Y\xa3\x0b\x94w\xf5\x9f\xc9\xc7aa\x8d\x1b\xb2\xb0\xf98,l>\x0e\x0b\x9b\x8f\xc3\xc2\xe6\xe3\xb0\xb0\xf98,\xc8\xb2R\xfe\xc0\x05Yw!M,\xfc\x8fGw\x1fxf#\xcb\xe2\xb77\xb2l\xbe\xa4\x91\xe5\xf7\xe6\xf80\xff]:>\x04\x9d\x14\xee\x85*\xd9A\xc3\xe3\xbb8\xe3 B\x17\xf8\xb3\x06\xc5\x07\xa3\x98\x0c\x8a\x04d\xae\xd0\xc8\xed5\xae`Bb\xf7\x86$\\%j\xb5f\x16]Wj\xce\xa2\x90\xc5\xf9\xa9H&\xba\x1a\xc8\xdfm\xed,\x8d\xed\x9c\xb1Y\xca\xf2r[\xf4\xae\xad\xbd\xdbJ{R\xacx\x8379\xb0\xb6\xc8Q\xd8\xbfL\xe6\xb7\xceg\xbb\xa7\x04\x9b\x0d\x9d\xb5\xad\x06\xe2O\xfb\xe0\xbe\x84+\x0b]\xdb\x1c\xc3\xf4\xbc\x01\x14\xc5\xe27\xa6\xdb\xd4W\xb51\xb9favkH\xea(\xd7y\xdc\xb8;\xfan\x8c\xe1\xd6X\xee\x1f\xe0\x8e\xf3\xab\x18\x9b\x9a%\xbd\xaeaU@\x85Vi\xa3?\x00\xbbEV\x81]\xa3\xab\xc0\x8e\x11V@\xb0\xe1\xbc\x83\xcdkKS\xec\x96/\x05\x8a0+\x9d\x8c^\"\xa9I\x07\xa3\xd7\x82Jv0zm\xba\x86y\x01\xe9J\xb2\x83\x85lE\xe5w\xb3\x90]Q\xa5\xae\x16\xb25\x9e\x1b\x84\xd9\xcbgg\x87\xcd%9\x89^\xbb^-\xfe\xe01\xd7c1\xea ^o\xc7\x9f\xcd-\xdd\x16-\x11\xf59N\xd9\x9c\xc5y\x18D\x19\xb5T\\\xa4oi\xea\xff\xb2\xf7\xef\xebm\x1b\xc9\xa28\xfa\xffz\x8a\x12fN\x06\x1c\x93\xb0(\xdf\x99(>\x89-\xef8c\xc7\xde\x96\x9d\xcc\xda\x1ao} \xd0$\x11\x83\x00\x02\x80\x944\x89\xdfe?\xcbz\xb2\xdf\xd7\xd5\xdd\xb8\xf6\x0d\x94l\xcb\x19c\xd6r(\xa0\x80\xbeUW\xd7\xbd\xe6\x98\x04\x06I\xfc\"6/\xeci\x0d\x8eu*I\xc8\xe2\xf9\xd9\x91\xc0\x9f\x14\xfc\x96\xfeSg\x98)\xba\x9d\xb9\x07\xdf\xf7\x0d/\x1e\xa1\x15\xe6Cj\x16\xe5\xc2\x82\xb8t9u\x80W\xc5\xdf;\xbaT\xa7\x9c\xad\x1fG![\xbff\x88\xbf\x08\x040\xf4\x0fsC\xe8;y\\/dK\x1dgT\x9a^\x99\xaf\x94?\x06\x07\xdc\x17\xdfm\xca\xd5\xc1\x18\xe8\xed\x16\x1a\x823\xd2\xb9\xbc\xacL\xca\x02\xbd\x0e\xd57\xe8P\xcb\xba\xca4\xe7Ft\x1e/\xab;\x0d\x9dj\xbd\xf5\xd0g\xa7\xff\xa5J\x9b\xc8\xde8\xd6\xb9\\mM\xc3\x14\xaaU\xd9Zj\x868\x86\xb3\x1d=\xbd\\'Z\xd3\x11F%\xc3\xcc9\xdd\xf8s\xfc\xb9\x1ci\xbf\x99\xf5?\xc9R}\xbcy\xf5l\x80{SRo\xd8\xea\x13o\xf2\x98\xe5F\xa9\x19\xd5~\xef\xea\x9f\x17\xd6\x1d}\x9d\xbe#\xac\x83\xd6\xfds\x1a\xb8\\\xd2\xd7\xab\xcei\x1b\xd4/s3F\x077\x88zm\xc7\xe0<\x89\xd3\xb3\xe13\xca6\x1e\xfa\"\xd6\x93\xb8\x87\x93\xf8\x10!5\x0e\\\x81i\xe7\x1b\x01*=\xb0~\"V\xe5:~\x82AB\x98\x01\xe5\xb4\x92\xb4\xb4\x13\xb2ij\xff\xcf\x068\xaf\xb57pe\xf9\x12;X\xf5\x19\xa3E\xa4\xf4\xe71\x15\x17\xa6\x9a\xf8y@UE\xf1\xaeL3\n\xa8\x1b\xa0r8\x11\xf2u\xa6\xdeDa\x7f>\x0dl\xb7\xb5\xb9\xc2 \xfd\xd2\x9f\xe0'/a\x83@\xfe\xd4JE\xfd\xb1\x11\xb0\xda*Z\x04\xcc\x9aV\x8d!\x08h\xe3=\xf9\xf9b\x9b\xa5\xb1b\x98i\xa3\x8dq\x96/}\x16\x18'\xc6r\x8a\xf94\xb4\x08\x87S6\x14\xd9\xda\xd4\xae\xa9d\xf8|(^\x81r\xafqR\x11 \xdb\xf3\xb9\x0bV\xbd6\xbf\xb8\x1bfiF\x98f\xdc\xbf@?B\xaeoi\xab\xe9\xb48\xf3\x8aA\x02B\xea\xf8\x95\x81=`i=\xb4M\xd7\x0e\x14W\xd9\xf0o\x1b\x92\x1b\xc6\xfc\xbf)\x08d~\xee\xafII\xf2\x02}\xe6)#\xc99E\xd4t\xaa9^|\xdce9\xbf\xfaJ\x8c\x19\xd9'\xc5\x96B\x1e\xd4\xdd;\xa3\x9f@f\xbc\x01'\x14\x8fZ>\xf5\xea\xe9\x0bk\xf642\x1cf\x15\xd8`\x02\xf3g=\xcd\xea\x89\xb3:\xc8,\xd8\xa6\x86\x9fA\x07\xbd\x0c\xda+\x86\xfa\x12\\\x1aB\xde*+\xc4\x87 m\xbd\xfduE{\xe9\xa3\xef\x93\x82YWl\xf6\n\x03\xfd\xb2_\xda\xfb\x85O\xe0n\x18\xcd,.W\xb5\xdfd\xf8\x7fl\xd3\xbdK\xec\x81=$\xfb\xa7\xf8\x8fe:W{-\x01W\xc2\xee\xb4\x92\x98\x9d\x9d\xe3 \xd3\xef\"\xe6\x9e\x0e\xcb^\x0df\xa5\xa1\xd1\x13\x12\xacS:]j\xe2\xa03y\xc1\x8a\x04\xef\xe6\xa9\xa2 \xb8\xb84\xadZEt1\x9cc^\xdfV\xe9\xc3\xe8\xdea9\xa2\x1c\xb8\x01s\xfc%\xba\x8a\xb7\x84\xfb\x8c\xd9PD\xaf0*(i\x08gpf\x06\xe6[\xa9\x9a\x19\xf3\x1b\xf5\xce ^\x9a \x1e\x19\xb6\x05p\xdd\xe4% 54\x89\xb5\xf5|\xed\xba\xd4\"\x9d\x8a\xb9OM\x0c\x8bJ]~\x170M\xc4.H\x8dTp\xe7Q\x9au\x94\xd0iO\xaf\x96\x03\xd6^r9\xbd(t\xdal\xea\xbfMM\x97\xf2\xb2\xd4\x15\x84$\xb5\xef\x18\x8e\xae\xc2\x03R5\xe0\xd0f\xb8\x1f\xcf\x03\xf2\x92\xf87<\xeb=\xb0\x859G\xc9H\xc7'eC\xda\xd6&\x887\x1e\xee\xbd\x0c\xf8\xba\x9e\xdb$\xc0\xff4}\xaf\xde\xd2v\xbf\x91\x15_\xb3\xfa\x97\x1d\x81Ej|\x18\x90\x1e\x1fx\xe7\xab\x14\xf9R(K\xc7\xddz\xcc*\xc7\xdd\xf0\n\x1cw{\xe5\x95\x94\x94\xa3\x94\x94W\"\xbb\x97Wj\xe3\x82i$\xc0GS\xd6n\xc3\xea%\x1b\\\x04\x8b\xe4\xb9\x112\xad\x1dq\xd0\x15O\x0d\x19\x0dq\xc1\xf1\xe1\x10R]\xe2\x92\x8d\x88\xf4\xac\\\x00\x15\x0en^\x10\x13?\xd7\xf8\x1f3\xc7\x82\x19\xe8Y2\xce]\xf9\xfa\x82\x1c\xc2\xd8\xcb\xe0\xe4h\xce\xbd\xb6\x02\x81\xc7#C\xdffU\xa4\xba\x16\x8c\xaf\x94\x96M\xad\x17T\x9b{6`S\xaa\xcd\x7fK\x9b|$\xe06\x8a\x91*\x11\xbc\xc5mZm3\xe1\x1covw\xcf\xd1q\x02\xb9H\x9doj\x8a`\x94\xc1/D\n\x019\x06E\x0bp\xb1\xcc\xf4d\xca==\x18K\xca\xcbJDIH\xce_,\xdctd\xf2\x97\x8b\xa0\xf72\xaf\xa0{\x92\xbe\xd5\xf8uXy\xd1C\xc3crx\x15\x1d qA`/g\x1e\xda\x8a\xf1\xc1\xb7t\n\x18\x84\xb9C\xa23\x9d\xcf\x0dv\xba\xa9\x9c\xc7\xf7\xb4\x89\x84\x94\xf5\x8148\xd8P\x04\\1\x0e\xb6\x91KOY0\xaa\xd5\x14\x9e\xe1\xcbsX\xa4cPE\xdf7\x16\xc9WO\x02\xe3\x98\xacF\xdf?\xe8\xd4\x1e\xe9\x89\xcdy\xc46\xaa\xd5y\xc4\xe6\xd3\xe6<b\xb3\xa9\x8e\xefN\xad\xcf\x03M6\xef+=\x0crQ\xea\xf1$\x92d\x90\xb3\x8ap\xc9\xf0\xee\xa7\x8dp\x19\xb7s\x96(\xf7w\xcd\xae\xd0i\xe9\xcf^\x9d\x8eO\xb9\xd6U69%\x04\x8b,\x0fT,\xc9\xa6jC\xc9\xb5\x14U\xfd\x04$\xfa\x1bx\x08\xbf\xbf\x87\x19l\xfa\xa0\xb1\xd6k9\xe0O)\xf5\xeb?]h\xdc\x861\xb4[c\x1d\xa0|n\xac\xf7\x0c]\xc1!\x9ct*\xc3\x8br\x0e\xa1l\xa3\xb34\xff\x95\x8e_\x9e\x0f\x9e\x93d\x9c\x9e\xa4fVE`\xa8+\x8b\x98\x11\xf5!j\xb7\xd7A\xdfn8\xed\xe9>_\xfb\xe7\xca\xbf\xbe\xf2\xb2M\xb1r\x9d\x9c\x14Y\x9a\x14\x04\xed\xca\x87\xa8\xd3WP3E\xde|\xd6^ev\x1c\xd2\x1a\xba\x9c\xed\xd4\\\xdf\x95\xf8C\xcca\xcf\xf3y\xc8\xe0\xd8T\xb6^hS0\x87R\xa0d\xe9\xc0\xe1!\x92\xd1t\xc1\xa2X\xc4\xe7*C\xdd!\xaa\xff\x12\xfa\xc17\xaf\x9eV\xb2\x9e\x9bu\x03\xa5(A\xd9b.\x03Vr\xeb\x15 \xa3\x9c\x04\xe5\x9b<n\x03RF\xae\xb1\xa5\xb7\xa3\xd6D\xe5^B\xce\xbec\x8e\xeb\x92\xd3A\x9c\n\x0b \xa9\x10t\xbe\xe1\x13,\xa1\x12dKb\x91\xc0[\xf2\x9c'\x1c\x17\x9e7\xcdap\x86|\x933o\xcc\xa8\x80$-1\xc4\x84\x84\x1e\xbc@\xf0vn\x03\x08\xfc\x84\xc2\xcc d$_\xa4\xf9\x9a\x84^\xfb\x08\xea\xa6_\xa0\xb3S\xaf)k\xfbt\x93G\xaau\xd8\x8eFc@\xed\x9b\x17\x15L\x0b\x17\xa0\x95o\x1f\xbe\x81\xc0\x8bI\xb2,W*\xe9{\x8d\x95$\x90(\x1e\x93\xcc\xcf\xfd2\xcd\xd1\xba\x08\x928%\xd1+\x04Wu'\xf0~M\xa3\xc4]w\xb5\x0b\xef{\xb8\xb2\xac\x12#\xcd\xcb\xd4\x1f\xb9 9\x83\xc7~I:\xf3Q\xb5JY(U\xabK: \x1c\xa7(\x7fZx9\xf1\xe3u\x13\xa1\xf1\x86\xea}\x0e/C\xe9\x0b\x9c\"?\x0cQ_\xe0\xc7\xe8\x07q\x8c\x9b\xe7\xa5\x9f\xfb\xeb\x8e\xe6b\x91\xe6\xe0\xd2\xf7\xe6\x10%p1j\xf6\xea\xe2d\xfe\xb6\xd1\xa5\x93\xf9\x18o\xbdE\xf5h\xbfW#6\x95\xce\xa1#\xeb\xd7i}\xea\xf8=\x0f\xdf>Z\x9f\xd1\x13\xe8t\x0c+\xfe\xd1\xaf\x9c\xd1[\xf6\x93\x8bS\xa7\x95\x84\xe1<t0b\xe2!FH|%\xfb\xdaQu*\xb7;F\xefw\x9c@Bx\x08 eY+\x95\xd9S\xfe\x1c\xd3\x0fl\n\xf2\xbd\xa8\xa3D\xa9)\xa3\x8b\xbfD\x94\xed\x10\x87\xc8\xff\xc2\x92\x80\x0f[4\xb4zHA%_\x80\x99\x1a\xfcI\x9a\xafekW\x85\x9cz\x05\xab=\xf8\xe6\xa9\xd8\xfd|s\xcb\xe2\xf2\x98n@\"\x84 \xc6J\x03\xdd\xf2\x9a\xa6Hc\xdc\x02?\x8e\xe7~\xf0n\x06G\xfd\x87$\xcf\x1f\xcdg-:\xd9\xdei\x8d\xd8Y/\xcdH\xe2\x9e\xd5[\xb1\xc1\xb8b\xdc\xec\x98\xb1\xf4\xee\xad\x03I\x9c\xb3K\x19\xbc\x14\x89I\xde\x0e\x17\xce\xf5\xe1\xc2\xdd\x0e\xb5\xfed\x19\x81\xa6\xfb\xacS\x9f\x96Y\xee\xcc\x06(\x12\xdb\x8b\x8c\xf7\xd2tz\xd2\xc4\xf6\"\xe3\xbd4\x9d\x9e4\xb1=Ka\xdc\x8d\xb9b\xe9\xee\x8bFG?\xa7\\\xf7\x8dpo\xa5\xfew\x0c\xc9\x18\xa21l\xfa\x07\x8eu\xae\xbd\x8a\xe8bp\xb5\xa8\xa4\xc2\xcf\xbe1N\";\x19\x8b\xd1\x18\x05\x81\xfd\xaf!\x80o\xa0\xf8\x1a\x82\x1b7F\x10\x9f\x04o\x9bo\x9e\x04o\xfb\x8dTY\xc7\x0f59\xfdP\x9dm\x95\xd7\x8fW\x7f!c8\xa1\xef\xbe\x15:\xa8\x18=\x1e\"\x8f+\xf5m5\xcf\xc4&\xc1\x1fO5\x96\x91\xc0(\xbfs\xcd\x81/\x13\x0d\xc5\xc5\xe4\xbf5)W\xa9\"[{\xc9\xa4\xfcW\x9c7u\x931\xe4(\xa1\xf2\xdb\xe8F\xc9\xee\xf6\xde\x7f?f)\xc1z\xc1\xb5\x14Y>\x8b\"9\xa6@\xb09\x8b\xe5\xd4\x19\x89\xba\x06\xa2y\x99Lp\xee \xcd\xe6q\x1a\xbc\xc3\x12\xeey\x1a\x9f\x9e\xceK]\x08c\xdbF\xc4\xff\x92B3\x0b\x11\xf1sI\\\x94\xb1\xde\x89\xa9\xce\xc9\xf5\xcc\xa1\x8aD_\x9a\x03\xe4Z\xd69\x19\xb3\x1f\x07X\x15\xd9\xbd\xf7y\x9c\x05\xd0\xd29\xad\x88\x1f\x92\\b\xf53\xed\x19\xbb\xe0\xc9F\x98\xa1\xa0=\xc0\x9b\xd4\x17\xb2\xce\x1b\xd9\xc1\xbb\x12L{\x81\xcc\xc9N\xea\xd1\x86\\d\xfc(\xc3e\xae\xe9\xa2I\xfb\xe1\x8e\xc1\x81u\xe1\xe8G\x1d\x1aGm8\xf3\xa1M\xa0%Y^\xc6;gr\xb1\xa9\xa7\x06=*\x06W\x9c\xdb\xa1X\xa5\x9b8\xac\x08\xe1\x9b,\xf4K\xdb|\xac6\x15\xcd\xeb$\x0e\x9e\xd0\xf9\xa0tI\xea?\xff\xf8\xa3 E\x0fq\x0e\x81?\xdbO\xd9\xf1\xcd\x9f\xf3?\xda\x10aTd\xb1\x7f\xc11\xeb\xb1P\x7f\xb07\xe4\x0f\xa5c\xf8\xdcR\xb2\x8a\xe9\xd4\xc3\x0eM\xca\x9a\xd6\xf0\x06C=T\xd5\x8e\xe5\x93\xac\x7f\xd3\xafx=\x0b3?T\xcax=\xc7\x07\xfc\xc8\x12\x98\xa2\x87\x0c\x98\xf3\x00\xba\\<\xdfPi8\x14\xe4\xe9!\xf8\xde\xbau\xebI\x9a\xbb\x9b1\x14#\x98\x81\xef\xe5\x9d\x9b\xfa\x86B\xa8\n(S\xa1{cL\xa9\xb0\xa2\xa7+\xcf@$\xd7\x974\xafm\xfd\xf9\xea\x10\xf1\xca\xf4\xc7cSE\x97u\xfdb\x92\x96\x8f\xd3\x00I\x12\x86\x87k\xdf[\xd6\xef\x11\x9b\xf4\x1d\x175<\xfa.\x1a\xc0\xe75x\xe3\x98\xd0\xber\xda\xb7{n-\xd2VlO\x1c\xca\x9f\x92\xa4\x9c`\xe4\xd8[JZ\xb6'\xce#~\x13\xa3\xc24y\x85\x80\xeb\x94\x12\xd7 ,\x16\xea\x9c\x81\x8a\x8d\xfb=\x0b\xcf\xd2\xber\x0c\x87]wm\xa3)\x1c,\x0enk_W\xe8p\xf9\x0c\xc3\xe2\xc8\xe8\xf5%.\xa4\x95z\xa7\\\xe0l=8\x98\xe3\xcc\xc1\x90\xf7\xed y\xcb\xa2\x15\xb5\xef\x9a\x92x<\xa2\xe24\x1e\x06\xc7\\\xe0\x96\x8b\x82`1iMn'\xd0E\xaa\x1c\x99f\x96\xd3\x0fm\xe2\xf6\xd1\x18V\xda\xf4\x06v\xcc\xd7\xed>\xf3\xf5\xe6\xd53-\xdf5\xd4)TD&\xd2-\xa0\x1e\x8f%\xa3\xb7\xd2\xa7Xh\x8e\xe7\x98\xe4[\x92\x83\xd8O\xda1a\xf0\xcc\xc0Q\xb1\xcf\x16\x13\xf6\xeeN#+\xe9~1\xafR\x99\xef\xd85\xb6\x1dw\xec[8\xa8\xd1 \x8d!H\xe3S\xd6d5\xeb\x13z\x8f\x1fk\xban8h$\xd4.\xd1\xd5\xf5\xc7\xca}\x9cv\xea1)\xfd(.\x0cy=J\x8c\xa4\xfdP\xab\xf8\xd1Vo\xe8\x92\x85cX_e(S\xd5\xfe& kfc\xa7\xd1G\x8d\xe0\xba7\x8d\xaf\x81S\xf9\xf8_1\xaa\xed\x84_K\xdd\xf4\xb5\xca\xf7\xb6\n\x8e\xc1\x0d<\x04\xe1\x86\xb8]\x95\x99\xae\x03\x18.4\x9f>7\x0e\x8e183\xb80\xb0\xc8\x0c\x8e\xa5'4\x04\x17m\xf2x\x06\x06\xe6\x9c\xf3\xa7\xda\xcc\x89\xf4j\xca+\xba\x98\xb1\xf7\xf5|<\xd2\xcc\x871\xb4\xb2\xea\xd7\xb1MS\x11=\x96\xe7\x97 k\x10|\xed\x0c\xe6\xe6\x06\xd5\xe1-\x97\xf0\x85\x97\xeb?C\xbc{\xdd\xf4\x9f+\xa5\xfe\x13\x9f\xf4\xb4\x96\x91x\"S\x80\xaed\x9a\xd1\x0d\x7f\xd0\xd3\x8c\x16\xfcA\xaf\x8d\x98?\xe8iF\x03\xfe\xa0\x97\x1dy!\x1a\xdf\x7f\xd0}\x94Q\xf1e%\xb4\xa7h}\xec@\x84\xa2\x83\x8a\x9aU\xab\x8f\xafO\xdd\xda\xda\xd6T\xa9\x94\xa5&*\x99\xfd\xac\x99B\xb9\xb0Q\xbcEm\xc5\x9bE\ne\xac\xd0\\\xc7]\xbc\xc9\xe3!\x96-\x9eU\xb9\xad\xce\x90\xcb\x19\xc2LG\xce`!z\xe9\x12o\x93\xc7.\xe6\xe5\x17;5N\x99\xa3\x00\x95\xe4\x99;\x87+\xd1\x14\xca\xe7*\xe5s\xd5\xd4\xe3\x8c\xdc\x91\xc7\x1d\x8f\xd2\xbc\xe7\xf3\x04`\x9d\xe3\x17\xc9|\x7f\xbaT\xba\x86f\x9b\xb3\xa6\xabd\n\x0f\xc1Y\x95eV\xccn\xdeL\x13*Q\n\xbf\x06/JoV\xef9 \xab\xaa\xd7K\x8a\xab\xb4\xb1\xc5\x0d\\\xa8\x15\xa6m\xcb\x9b\xd2\xc6\x16\x08z\xf9K\x14\xc7\xafH@\xa2-\xd2\xb6\xc2\xc2\xec\xa6\x94\xd3\x85\xe2}\xf8\x12\x81\x88;\xb2p\xac\xc7uB`\xdb\xa5\x02\xddr\x95\x03\x96K\x1eZ'\xf3\xb1o/\xa1\xec\xd4\xbc\"[\xa7\xd8\xa9t\xce\x1b\xba\xe3\xf6\xe4\xd3\xed\xab\x9e\x1a\xb1d\x99W\xf8t.\xffM\xde\xe41\xa3Bu\xb1\x83j\xf2TqF</h\x8a\xa7%sAjz\x1bR\xea\xecl\x12v\x8a\x86t2;\x86\x042b\xf9f\xda\xca.2\xe2\xca\x8d:\xc3\xdf^\xa3c\x9b<\xa6\xa4qO\xd1\xd7J\xa1^A\xd7\xceV\x94\x0e\xc5\xab\xb4(\x9d\x11|{\x08\xfb:\xd8\xe9\xc1=o\xdf\xdb\xf7\xa6\x02\xb6\xeaL`\xe0\x81\xd5h\\\x94\x171\x91\x9dV\xcdk\x11\xa7~I\xd1$Z\xaety<\xe4x9Vw\xcf\xd7\xf6\x8d\x85w\xcc\xc09\x9d\xc7~\xf2N\xa3\x10\xcb\xd1\xa73I\xd3\x8c$$\x87$\xcd\xc9\x82\xe4\xb9\xd2z@\xafUN\x163(\xa9,p3$\xf3\xcd\xf2\xe1&\x8fU\x1e\x82\xed%Qp\x8b\xea\x81\xae\xb5K\x90\x07\xbc\x1f\x03z\xa0\x1e\x97OY\x0c\xe7\x05\x92\x90\x9a\xde\xc0\xdc\x0f\x97\nQ\xf8\xbd\x8c\xff5\xd8\xfa\x03k\x9ew\xdbf8\xd7\xd6l\xcd\xa5y\x9a\xe4\x8ax\x1a)C\xc3\xf9\x0c\xc3i\x1e\xa7~H\xc2\x19\xecM\xe5\x0b\xc6\x83\xd4\xf7\xa6\xfd\xf9\x1fw\xe4\xb2\x0f|\x02?\x8e\xc2\xe7\xe9&\x91\xa5q\x19z\x08\x94\xdal\xf4\x14'({\xf6t\xed/\x15\xd1A\xa5\x97&t\xe6lxD\x18\x12\x9aW-\x87&s\x8frs\xd3^\xe1z]y\xb7\x04\x16\xec\xd6\xab\"\x0fZ\xc6Mz\xc3\xb4\x9d\xd5\xac\xc0\x07e\xc9Ji\xa87p\xbfw\x82C\xa9\xd2WU\x831\xd9v\x133F\xd1+\x19\x88U\x80\x98h\xb9\x84`\x87]\xa0^K\xe0\x9b~(\x96\xc1\xd0n\x9a\xb1\x0d,z\xc9\xb0\x8eH\x91\x0d\xe4\xba\x13[\x14\xbc47\xdat\x95`G&\x9b\xd1\x87jN$Z/\xb5\xbc\x08;UY5\x05\xf9xG\xd0J\xbe\xc5\x90\xe12M2\xbe\xa0\xb5\x13\x0c\xa7~\x03\xd8\x8fUR\x02\xd7z\x99\x96\xc7\xe6\xc0\xc7\xc7\xd7M\x9b\xf5I]\xb8\x03\x99f*\xa6|H\xcbyOU\xb5\xeb\x13\xb9\xed\x9d8KR:cpXb:'\xa3\xf2\xc8\x18\x9c\x90\xc4\xa4\xa4\xeb\xc0\x13\x8a\x16\xf4'\xb7\xb89\x99_\x06\xab\xae\xf5\x1e\xdd\xe2\xaaxz\xa7\xcc\xfd\x808o%\xca\xb6\xab\xf4\"\x938\x89\xf7\xdd\xb6l\x8b\xae_\x89\x17\xd9\x8e\x8e\xc7`&\x810\x80\x0c\xc2\xce\xbeO\x03\xfc\x86\x86:@1\xaf\xf1\xd8\xbfH7\xa5e\x13i\xe3\x15\xa3\xe7:TnS\xb6NV\xccUjap\xa8\xda\xf0\x8c\x03\xcb% _d\x84\xd9\x17\n\x93\x0b\x10\xaf=]\xbd\xf0(MJ?J\xe8\xd2\x9a+\xec\x84\x9d\x97_\xfbK\x93?\xcb\n\x0e!\xc2\x8c[\xe7\x8f\x99\xd7\x18 _\xfb\xa6\x19\xc0R>^\xb0\xc9s\x92\x94OXj\x08s\x85\x93-%I{\xcc\xf9\x03\x7f\xbb\x1b,4\x97f\x05\xff\xc6f\x0c\x18\x9f\x88~\x16{Q\xf1\x93\xff\x93\xbbB\xfd\xca\x8a)0\xc4K\x1b\xaf\x88\xa3\x80\xd0M\xb2\xd2U\xc9m\xf9dlzy\xc5|\x13\x9fDw\xc3F \x87\xeb\xa4\xd5:\xea\n\xba@=dU\xbf\xac\x12\x92\xb1\x9d]\xb5\x89\x89\xf5\x0c\xf5\xb5\x00\xb5 \xcb\x17\xf3_\xad\x12\x99\x95\xfeR\x9b-F\\\x9d\xdd\xa7\xcdB\xd3~\xa7\xca[\x93\x9a\xdf\xa8\xf7\x9f6\x8bC\x0b\xdc\xc2& \x8c\xe7\xe8\xae\xbei\xe9\xa1!,\xf0\xe5\xcf|L\xa3m|\x0d*\xb2\xc5\x8d\xc5\xe5*5:\xf1\x89+\xc5@M\x816\xcf\xa2\x82\x9e\x8b\xb4ez\x98&c\xc8u9g\xc4\xc5\xd1\x8f\xc7j\xba%\xaf\xa3\x85\xa5\xad2\x98\xc1bTi \xf3Q\xad\x16\xdc\xb9\xb0\xba\xb8XJ\xd1*3\xa4\x05\x9a\xd0\x8b\x9e\x1e/\xb1\xac\x90\x05\x96\xd0+\xcd\xac\xd0\x1b\xaarE\x169@\x01\x83\xb9\xe9JY\xa17T\xdb\xc7\x08\xaa\x91\x8c\xd8\xe3F>D%d\x13\x8a\"3\xa6\xb5\xfd\x06\xa6\xbaB\xde\xab[\x0d\xaf\x8c\x9fR\xa8\xc9\x17p\x856D \xce\xfe^]8\xe9R\x96mYy\xe6\xcf\xc9\xb2-\xad\xe1\x9b\xaaj\xf8F\xaa\x1a\xbe\xbe\xaa\x86\xefFU\xc3\xb7P\xd5\xf0\x8d{5|Y \xcf\x82K\x05m\xe8@\x04\xcb~\x16%~\x0d\\\xfb\xa7\xe4\xd8\xafi\x88\xe0\x10\xee\x9cq\xe6\x8c\x1bPC%\x02J\x0d\xc2\x8e\xb2`\x15\xc5aN4\x944\x1d\xc6\xa9GC\xb8t\xdf\x9aC\xdf\x0c\x90/\xb0p\xb2\x8e%_\xb0\xc38\x0d\x8e\xce3?)\xb4Q\x14\x19?\xb8I\xf6,J\xdeE\x89fFCQ\x04\xd8Y\xf8qAX\n\xfeL\x0dO\xb9\xf4\x0d\x96\xfd\x8c\xfd\x0c\x1dk\x95\xa0[\x06jSes\xcd@\x1f\xf3\x1e\xeb@\x97\x0c\xd4\x04V\x05\x16<M\xa80\xef/\x85;\xe7\xb8\x9dA\xf8\xed\x98{\x04*\xbf4\xd7|\x89\x9c\x97$O\xfc\xf8q\x1a\xf4\xbf\xac\xf9\xe6\xe9\x80on\xf2X\xfb-\xcc\x8f\xd1\x90\x07&\xa5\xbftD\x86Hv\x0c\x8by\xa5\x9c\xcd\xc8MF\x9a\xb8\x85#\xcc\x83\x13\x15\xc7\xab\xf4,q\xcf\xc6\xe0,6q\xcc\xac\xd1\x0bL\xb0\x12G\x05\xb7N/\xf4\x96l\x83$\xa4f\xe3\x1a\xfe\x95G\xf0\x90\xca\x1d,`\xb8\xf4\x97\x93\x820:\x1d\x15\x934# &\xfa\x90<W(:5\xe2\x19z\x8f\xab\xfbTE!\x1b \xa3\xb8\xf8,D\x18DDgr\xefH\xa7\x97\xb6\x99\x8d\x8b\xceltG\x0fI:\xa1(\xa81\x1dG\xe1\x0c\xcex&\x95\x89\"\x80B3MZk0Ix\xaeyMt\x15\xc7,i~\x10q\x19\x19\xe5\x92\x9c+\xe5\xac\xf7#\xe6\x00\xab\\\xe8b\xed\xc7q\xc5\x8d\xaa\xc0\xb4U9E\xbe&EUnt\xc5\xb5j\xdfV_0\xb7\x1f\xd0|\x0c\xa7\x14Mf\xe0T^\xa9\xa7\x9a\xd7\x97\xba\x812G\x03FJZ\xae-\xa7\x1a\x82\xd4\xdf*F W0\x7f^Q\xa6\x19\xe5\xa3\xfd%\xcb2\xb6\xd3\x8e\xe9:_\xa8\x90\xfc\xb4\x124j\xbfp\xe5,\x0fLy@\xe8)\x1dN*\xb2\xac\xd9\x92eT\xc6\x82\xd4\x89s\xb5\x16\x90p\x8f\xe3\x99\x1f\x82\xcd\xd7>4\xa1\x1aJ1\x9cb\xab\xb7\x15\xb5r\xc8\xe7yz\xa6\x19\xdcY\x14R\xd2\xe0\x1c\xec\xeb\xbccH\xb4\\\x95\x0cjpo7\x85>\x14\x88\xed\x08\\\xab\xbf\xc4\x14\xcf&\xd8\xe7 r8t\xa9\x9aw5\x9d<\x8f\xa3\xe4\xdd\x0f\x83>\xa6\"6:\xad\xa3\xb6\x86rT\xbc\xc8HB \xf6\x91j\x9er\xa3\xf9@\x92JC'xg\xe2)\x1a\xe6{\xce'BcX\xab\x9d\x16y\xba\xfe\xf1\xd8\xfd\xbd\x1b\xcd\x87\x1a\x0f\xa7\x9e\x94\xf7\xe3k\x97\xd0\xb4/\xd4g*\xa1>S \xf5\x99J\xa8\xcfTB}6,GS\xe6vc\x94\xa9\xe4\xeef:\x97\xf3\x05~\xed^sY\xb96@&\xecg\x1f_\xd8\xd7\x9b\xe9\xbe\x08\xfb\xe2\xfap\xc2\xbeP\xa4\xaa\xe1r\xcbT\x05)\x87\xc3@R\x0dc\xc9\xb4\x07\xe9r\x19\x13d1\xd5\xa0L\x82O\x93\xd79\x15\xf8\xf1\xb8T\x03o8\xf0#? Hl\x00.8\xf0\xd19 6\xba|\xfb\x0b\xa3\xe1.\x1b\xa0<\x08\xadU\x12\xabjq\x8cz\x8e\xed\x10s\xea\x1a\x81\xad2q/+P\x8b\xef^\xb0 \xf5\x8b[\xc6\xef\xce+P\x8b\xef\x9e\xb6\xdd\xce*\xc6J\xc3z`\xb8\xbd)w\x02\x15\x9f\xcf\xbc\x90d9 \xfcRW=\xe0\x1c!\xb98\xa4\x06;F0}n\x8bG\x08c\xcak\xf1\x0e\xa1R\x8dn\xe7;\x84\xd0*\xe0^\xf0\x8f\xf0\xe9\xd2\x95\x9c|\x89\xa0~\x1c\xa7g\xaf\xf3\x8b\xa7\xe5\x8b\x8d\x06\x83_\xb3y\x1b\x98-\xe49\xeb0\xff\xfa\x11\x13?\xd5\xe0O\x11\x9c\xb0\xbd\xf94y\x99\xa7\xcb\x9c\x14\x1a,\xf9\x15\x0e\xe1\x9d\xd7P\xea\xa8A\x7fB\xd0\xa6\xeeF\x0d\xfb\na1\xdd\xb7,\xa3\xb7\xb8\x1e#\xc6 %Q\x9ai\xb5@\xcf\xe0\x10\x1e3#_\x15\x02\xae\xd3\x8f\xbd\xa9\xe1\xb3<\x0d7\x81\x1e\xfc7\xee\x8f\x8c\xa9G\x9eEE9r\x1f\x8f\xe1\xc4iT\xd5\xd5\xf5\xee \x1c\xc2\xb6F\x9bc\x1c\xba{<\x86G\x9a\x97\xfe\xddQl9c\xf8n\x0c/4\xca\xab\xef\x9b\xbd<:/ \xeaI\x8b\x91\xfbX\xd3\xcc\xcf\xc8\x04\xd9\xcd\xda\x0f\x0c\xb6YKX\x0d\xfc\x0b\x03\xe6\xf8\xa6\x83\xfc\x91A\x06,w\x9d\x1a\xee\xbf\x19\x9c\x8d\xf2\xf5\x1f\x0c\xd4F\xf9\xfa\xbf\x18(\xc7G\x1d\xe4_\x19d\xe5\xd5\xc1\xb2,h_\xf9?\x9dW\x8e\xf4I^\xfe\xd9ma\xb3^\xfb\xb96\x17\xca\xfff\xaf\x98\x14\xc2\x84\xf2/!\xcf\xe9S\xe3\x86\xda\xa5\xf7\x19f\x8fe)d\xd1\xc4\xf9-\xec\x9b\xdc\x95\xd0\x9d~\xef\x19\xee+\x1e\x9a\x97{\xad\xec>,F\x87\x838\x9c{\xd3\xb9p\xe4\xe8\xe0R\xf43\xf1\x8c\xa1$\xb6\x16R\x10\x1e\x04\xb4\x7f't\xdfI\xd2\x84\x02\xd8\xe69\xb1\x12\xe6\x9b\xaa\xdb*\xe7c}2R\xf9\xf6\\\x06\xe2\xc0\x0dx\x047\xc0\x91\xe9x\xdbP\xea\xd5\x8e\xc2\x99F\x03\xfe\xefZ\x01\xaa\xd4\x80\xaa\xa6\xe0\x9fZ-\xb1\xc0[\x94ngp\xaa\xeea\x83S\xd5\xfa\x98\xb4}K4\xa7w\xab\x84\xd3Z\x0f\xd7\xf0\x9f\xd1\x1c\xf6\xb53\x84\xca!W=M\xffm\xa7x8\x1f:\xfdC0\xb0R\x8d\xab\xeb\xe2\xbf\x1f\xc3c\xba!\x1f\xb3-\xfe\xc7\x1f\xcc\xff\xe4\xf0\xf0\x10\x1e\xd7\xce(\xea\\\x13\x06?\xe8J\x15u\xeb \xd3\xd5S\x15z-\x03\x18\xbaU'\xee\xed\xe9TC\xe8d\x13\x10\xa7~\x18%\xcb\x89\x9fDk_c\x1f\x19\x8d\xe1H\x9bX\xc8`%\x91\xb5\x8d\xea\xcd\xd3$\xcd\xd7\xbe\"\x07\x10&x\xfa\xc5\xcf\x93(Y\xce\xe0qM\"Fc\xf8\xd5\"\xcf\xd1\xb0\xfe4\xd89}\xa9\xca\xab\xc6Bcf\x10M\x83\xff\xb01G\xfc\xaaX\xd4\xd1h\x0c?\xd1y\xfc \xc3=/\x91\xb6E6,\xc1\xf3N\xc24(v\x9f\xd1\x0f\x86YO\xa2$\x84u\x9a\x13\x08EF\x9f+^\xd8\xd6\x0c\x0c\x1f\xb91\xd0\xd5\xd8\xe6\xa99\xeb\xcceq\xeb\xa7\xa6\x18\xa4\xc23u\x1b\xff[\xd7\x86}\xb0\xac\xc5L\xc4\x91\xf6\x0bJ\x8b\xd6O\xda\xe8X\xf6\xb4\x91c\xa7yj\xa87\xd4\x0f\xbaa\xd7R\xc4\x0c~\xb3:\x85yA\x10;\xf1\xa3\xe2Ef\xf0X\x03\xc5+x\xff\x03\xdd%uj\xb8\xa6\xbaL\xeb\xaa\xdb\xd2\x95I\xeb]\x89\xab#\xb9\xcf\xe0\xb9\x86mi*\x12f\xf0R\x0d\xb9H\xa4Ev\xc4e\xcdP5\xb4d\xda\xecE-\x15\x996\x7fQ\xe6\x97\xab\xe7\xdc\xb1\x93q\xe1\x86nr\x17\xe4P\xb1\xe1*l|\xae\xc1\xc1\xbf\xeap\xd0z2\x98M\xfeX\x0d \x1cV5Ly\xda\x91\x1bgB\x03Q\x98\xe5H\xda~\xf5\xda\x16\x15b\x85;\x12\xda\x91\xe31T\x1f\xd1\xe9!\x96\x84\xbb\x83\x91\x90}l\x06s\xafh\xdd\xd1\xacs\xff\xe5\x0b\xafw\xd3\xf0>\x05\xf9\xd9\xcf#\x8a\xf0?3\xed;\xffH\xef\x89a\x18Mx6\x8ca_8Z,HPF[\">\x85\x9d\x11\xdf\xa9\x9e\xe2}3\xfe}\xf5\x15\xbc\xa4\xff\xbc\xc2\x7fLtq\xa7cV((T4Z\xd5\xd8\xff\xd2\x9eo\xec\xa33x\xf5aq\xdf\x96\x98\xf0H\x16\xa6!\x9b\xc1\x13\xc5\xcc\xd7S\x7f\x15S\xfc\xbcRu\xbc\xa4\x12\xf9\xbcL&\xcb<\xddd(ys\xfd\x95\x91\xb3{.\xdeW\xf5\xe8\x17+\xc9Y{Z\xd9\xce\xe20\x92|\xd9\xb5\xad\xec=3(\xacvJn\x9a\xaa\x1f\xb5(k9 \xf6C\xd3wz4\x86\xa7W\xb5\x97\x85 \x1aT\xc1dCw\xf3.\xcd)]'\xaaey\xa6\x19\xe0\xcf\xba\xd6*\xb5\xf1\x0c\x9e\xa9g\xbaJ\xea\xab\x89*\x11\xcc\x90(\xfb\xa0\x8d\xfd\xb0>\xb7[l\xc4Ul\x98\x86-N\x9b#\xd2\x1aK\xb9\xf5a\x06o\xcc@\xfc\x90\xda\x8a\x80\xbf\x97\xfc\xfe\x934w\x19C\xa59\xfc\xfb\x8c\xb4\x95\xce\xdf~\x1b\xa9A\xe4\x86\xad\x19\xbcV\xbf\x82\\\xac\x89\x9a\x10\xf4\xa0\xf8\xdet\xdc\xfe\x1f\x1d\x06\x93J\x17>\x83\xef\xad1\xce@2vq\x1bz\xb9\xc9\x89\xcce\xa8\xca|'w\x19j\x9c\x1c8)\xad\x87y\xb5\x99d\xcf\xf8\xa6\xec?\xaaQ\x85J\x8a\x0b\x8fY\xbc\xba>5\xcc6\xa1\xf3B\xfa\x12Z\xd4\x9e1\xa5\x17\xd2B\xee\x85\xb4\xa8\xbd\x90\xee5S\x19-4\xeeF_b\x8b\xfe\x03\xdd\x8d\xac\xfc~\x86\xc4\xfb\xe7\xf6\x0e-\xe9\x10\x87\x16\xe6\xa6\xd4\xb6\x13\xa9\xa1}K_\xaa\x0d\xd6\xd039\xa7\x14,\\\x9d\x91-5X\x80`QQ\x95=\xd5\xf0\x0d\x0b\x845\xb9\x9ed\x08\xa5s= Y\xd7V\xe9\xd9\xb1\xa9{+\xfe1\x0b\x17\x94-\x03\xcd\xa3e\x94\xf8\xf1\x0b\x9bW0\x12I8\xa2X\xbd\xb1\x84C\xc8\xcc\xb3z\x81K\xc4\xd5\x1d\xc1&\x8fJ\xadU{\xce\x12(Tu`\xab\xae|_j\x8d\xf9\xa7\x9d\xc4\x0b|:\x9f\x1b\x03\xbf\xcf\xe4/\xbe4\x04\x9a\xf3\x1a'?n\xd6\xd9\xeb\x14\x811;\xc4\x07\xb7.\xd7Z\x01\xd6O\xe8\xfc\x8d\x06b\x8d\x16\xb0\xae*(\x05\xd1\x08 \xa7\xba\x1e\n^P\xc5\xb9\xa9?{f\xaf\xa6\xd3\x05>v\x0c\xd0\x1a\xc3r\xcd\xe3\xc8\xe3\xc6ig\xc3\xab\x92\xfb\xba\xabcc\xafX\xd2\x83\xad\xa8\x99],\x8a\xedn\xe9\xdd\xd5\xc8\"{\xfen=\xab\x93\\D\x8a\x02\x04\xef\xc7 :Qg\xdc\xff\xea+\xb8\xf0\x82t\x93\x94\xae\xaeos\xbdY\xbc&\xb93\xd0d\xcc\x1a\x1e\xe3!N\xd4\x941\x94\x98\xef\x97JMT\"\x89r\xec[\xe1^\x982\x89 \x81\xae\x13\x06\x17\xae\xc2\x01\x05z\xacEu\xd7\xac\xb8\xd2V\xc8\xc9\xb4\x08{\x85B\x87!N\xa1\xbb\xcfL\"D\xb0\xb3\x08q=\x03\x19>i\xa6\xb2\x01\xc5\xa6?\xa32\xa3_\xc4\x04q\xed.&hK:\x9b\xb8\x8fK\x1d\x1b<\xb3\x8e\xf4\xdd\xf7c\x94P\xded\x19\xc9\x1f\xf9\x05\x91%W\xd9\x99P-\x86\x13\xaa\xfa\xbb\xe3\xcf\xa0\xc4\xf1g\xaa\xad\x10\x91S_\x94\x16\xff\xb1\xd4H\xcd\xc0\x95\x034\x11\x89Dc`\x14\xf5\xe9\xc6I\xac\xe2PR\x844\xc6\xa1D\x08\xa6\x8fC\xf1\x11F\x1b?\x82u\xf1\xed\x84\xf7\x82w\xecq\x9d\xc6\xc4\x18\xe1AO\xd8\xb2\x99G\xe4\xc3\x9f\x04y3'\x838\x0d\xe8<\x9d\x9e\xb6\x9d\x9d\xa5@\x83\xcd_\xdazUU\x02\x06\x9d\x02J$`\xd0\x98\xa2\xb2\x06\xdf\xca\x9ao\xfbO\xfbXy\x80J\xd8\x1b\x0d\x0e\xb2,\x0d\x91|\x84Wy\x04^7v\x99\x9e\xaa\xcd\x80\x078\xe4\xe5R\xfa\x87[D\xcf\x84\xfb\xb2\xd3-\xea\x96\xd0\x8f\xd8\xe9\";=\xa2\x8f\x7fz\xf8\x98\xc1\xa63J\xf5q\xb2\xad*\xca\xd7\xe6\xa6>\xe6$\xed\xd27b\xa5\xdb\xe1#\xaf\xd2\xb3\xee\xbe\xe6\x83M\x87j*\xa4\x0c\x9d,\x81\xcc\xfb\xf1\x95~\\Z\x9bS\xd7F\xb3\xb4i\x1d\xbb\xe2P^\xe3R\xfd\xc2\xf2\xa5*c\xbc\xaeC\xa2f*\xeb\x93\x1a\xacU\xe3T\x0d\x96[\xc0\xc8\xeb2\xaa\xcb~\xf6\x06\xe3<\x89H\x8cN\xe5\x1f\xb2\x114Q\xb3\xa2\xa1\xeafZECK\x8f$e~qL~\xc3\xec\xb7\xa6\xcc\xa0\xdbF\x8d\xa8f\x9d\x9f1\x1c(\x881=\xbb\xcb\x93}\x85\xb3!\xee\xe4\x93\xa9$ \xc8\xb0\xad\x12\xd5Q\x84\x0cUT\xa5\xdeT\xb8\x8a\x9e\xa3\xcb\xa9BAy\xfe\xb3\x1f\xcb\xf4<\x9d\x04\x96\xef\xdb\x05\x10\xdf\xcb\xcf\x04\xf6\x99\xebu&\xbcJ\xcf\x0c\xc7\xc2\xed\xe9\x9f\xe2X`\x03\xb59\x19(B\xc8\xcf\x04\xe2Q|\xe8?C\xa6\x14\x1eR\xa63\xfd\xf1\xb8\xfa\xe1\xa2\x92\x91+\x1a\x87\x9d\x14\xd6\x94\x88o]#1ap\x9d\xbd\x1a}&H\xdbG\xcc?Q\x02\x13\n\xf0\xe0\xee\xfe\x9f#g \n\x9f\x98\x949\x1a\xc3\xa6O\xca\x15\x82z\x1fp\x91\xe6\xe0\xd2\xaf\xd1 \xaf$p^Bn\x8c\x13\xceR\xff\x16\xa31N\xf4\xfe\xd7\x10\xc07P|\x0d\xc1\x8d\x1b#\x88O\x82\xb7\xcd7O\x02\xf5\xc1B\xb7v\xc4O\xb2\xbe\xb2\x00ei\xa3\xc2 \xf0\xe3\x98k\x0d\xc8\x18N\xe8\xbboE\x11\x87\x18O\xe1\xc8Cs\x85\x1fG\xff\xae\xa5\x07c\x19\x07zE\x1e\xa1\xe3\xed{?\xbfG\xadBz\x865y^\x936\xef\xab\xfa\x1a\xf3$\xaai\x00\xd7X\xe2\xbe\xa3\xdfc\x7f.\xa2\x98PN\x03S-\n\xef%\xaf</%\xb9\xfa\xde\xb3\xd7\xc8\x96$\xe5\x7f\x1f\x07y\x1a\xc7Q\xb2\xfc\x9e\\\xa4I\xc8\xa9\x90\xd58k\x12\xcc\"qL\xba\x88\xc4/\xa3-9\xa2\xcdz!\x89K\xff\xbf\xf5\x8a\x88\xd2+\xb0s?`4\xa4^\x15Qz\xe9bQ\x90\xd2\x04\x1b5\xbe\xfb:\xcd\x14r>|\x0b)Z\x0dY E\xac\xce\x9c\xc07\xacVa\n7 \x82o\x0f\x99;n\xc2\xe2\xbbqs\xf39}\xcc\xd6JV]u\xcc4\x19=E\x17\xdd}\x1fC[u\x95\xb5\xcf\x98\x9c\xbf\x8a\x96\xab\x98\xce9\xaf[I$\xc1P\x1d ]\xc6\xff\xf5\xbb\xf7&\x0b\xfd\x92\\\xaf\xfe}\x02e\xdfV\x1f\x90\xc1vV%h\xe87\x14\xa9\x88\x0f\x15\xc3\xb4:.,0\x86\xc4\xc4\xb9\"\x9f\xeaj!&A\x1a\xaa\xca2\x8eQ/v%\xed\x89\xa1Nx\xc5yY57q\xd5^\x1dt]\x9a\x14Z\xd5M\xe71\x07r\xcc\x96i'\xcb\xf5\xc9\x01YYN\xda\xb4\xe4\xc8\xd1\xf5\xfa\x97\x15!qU\x04KG\xd0\xd5_i\xcc\x19\x96=\x80uD\xbf\xa0\xae{\xfa\x9er\x00\xc6M\xd4W\xc3\x99Tpr\xa7\xd7\xe6N\"\x1e9\xcf\xd2\xbc,Z\xc7S\x9f\xbd\x85\x06\xe7\x99\x903\xf8>N\xe7\xee y+[\x83\xf2\"\xc3\x91ST\xa7\xfc@\xc4\x8ad\xdfL\x83\x92\x94\x93\xa2\xcc\x89\xbf\xeeH\xeb\x1d\xf6'ZT\xf5v\xf7\x0e\x0f\xe1,J\xc2\xf4\xccK\xfcm\xb4\xf4\xcb4\xf7\xd6\xc5\xb1\xbf%\xb4\x0f#\xddC7\xefsV$.\x88\x82k\xa3\x87\x1e\xff\xda\x9bW\xcf8\xc61\x0e\xfe\xcd\xabgn\xae\x91\xe9C\x9e\x0c\xa4\x8b\xa6\xbeL\xef\x1dyX/W\xb8\xb6\xc1!8I\x9aP|\x8e\xbcUN(G\x9c\xd2\xdf\x05)\xbf+\xcb<\x9aoJ\xe2V\x9b\xcfa\xb2N\xa3\x1cq\xcd\x00\xd13\xb3\xfb\x1ec$\x9cq\x15\xd3;\x1a\xd7\xdd\x9d\xa7\xe1\x05\xe5\xd9H\x12>ZEq\xe8F\xc8\xa6\x05t\xeb\xba=\xc0\x9c\xac\xd3-\xa9\x01\x1b\x93\x95\x93m\xfa\xae1Y\xa9\xea\xe8}/E\xc9\xeb L\xc9\x95\xbfR1+R\x89Y\xbeJ\xcc\xda\xa8\xc4\xacB%f\xc5\xfcAOb\nx\xca\xc7\xbe\x1cUKZYU\x12B\x98>+\xe0?\x81`\x95\x8f\xc1\x97\x0bV\xd1u\x14\xacr.Xml\x05\xabt\xa8`\x95{\"x\\\x84\xe1\xfc\xc2B\x04\xad\x84\x0e\xde\xd5\\T\x88\xac\xc3\x85\xbc\xa0\xf5QT\xa8\xba'\x02\x10M\x90\xd5k\xcc\xed\xe2-\xe5\x9f{\xad\xbcg]\x14\xf1T\x8f\x18\xfb\xf0\xfa\"#\xac\xd7V\xdd\xace#\xca~\xe4i\\|\x17\x04$+\x7f@\xf5\xaf\x89\x9f30})\xe6v2\xb0\x8f\x11\xba\xedY\xa5@\xf4\x11To\xa4\xdd \x8c\xceO\xa6\xac\x08\xbad\xea4EZ9\xd1\xd3\xe5\xb4d\xde{j\x00\xe1>\xbb\x91BH\xaa\x17\xbd\x1f3\xabs\xafp4\xdd\xad\x96\x82X!\x15\xc4|;A\xacX\xa5\x9b8\xacX\"ka\xc7\xb4/\x1a>M\xdd\xc0@\xe4NH\xff\xb6(\xbf\xcf\xde\xaab\xdb8x\xfdw\x1bN\x84\xd6q\xb0\xeaO9\x14n\xc6\x0e(\xbb\xd7\x86\x97\x07\xbc\xf1\x17\x15\x0f;-\xfa\xe5J4D\x7f\xb6\x9f2D\xe1\xcf\xd9\x1f}\xdch/\xffG\x92\x06\xf5$\xc1F^d\x1e\x19\xd5z\xe9)C\xd2\xc3\x03=yH,\xbdN65\xac!\xa5,\xf3\xd3\xb0\xcc\x13\x8bl\x841\xefm\xd2\xc6-5p\xc8\xdc\\\x06\xa6\x0d]U=\xd6G\xd5l\xf9\x11Zi\xed\x8e1\x89\xdf\xa34$#7\xd5x>\xac\xb1\x98\x8f\x13\xd4d\xd3T\xd1\xc6w\x9d8\xda\x12\xb1\x86\xa6\xca6~\x1d\xbbj\n\"\x91m\xf5\xaf\xbe\x92\xdd\x16Q\xa4\xb27f\xb5\x84\xf7\xb2\xf5D\xdd\xf8)\x1cB\xd1\xac\xf6\xc7\xa6rIJv\x82>b\xe7)\x95p\xc5\xb0\xe9\xacJ\xcd6\xe229\xee\x0c\xd1+T\x1b\xcc\x98\xd9\xe0J\x9a\xb3q\x01\x10\x971O\x16w\x05x\xd5\x88_n\xcf\xb5)q]\xec\xcfI]3\xc4\xe4\x08\xd5i\x0e8b\xa3\xcc\xad\xcb\xa6\xa5\xad\x16\xc3\x89\xab&(L\xb0\x97\\1\xa2\xe065\xc4\xa6\xde\x7f\xc5\x0c\xe6\x1a\xc0\xc6:\x89t\x17\xfc\xe5 \x8eQ\xbeJ#]\xc6\xabA\xc8Q\xe3b\x94\xe8\x92\"Df\xa5\x9a~E\xb5\xd5^\xea`i\xeb|\x94\x1a^\xae\x99y@\x93\x03\xaa\x93y@CP\x18\xf7\xd8a\x11\xcc\xbcd\x8fk\xd0\x1c'\x8a0}U\xfe\xa5\xe1\xdb\xd4B\xc9(\\k\x86b\x0e{o0=i\xbb\xe8\xa8\xc1\xf2\x1d\xba\xb4+\x8dS\xb8\xe1\x88K\xed\x8eS\xa1\xf0\x84\xde\xe39wU\xcd;\xf4 \xd7&\x03\xbc\xa2~\xd8\x04\xbb9\x8f\x1b@]j\xfe\xa1;\x18G\xc9;\xcd<=\xc3\xc7un\x07\xdd\x8c\xb5<\x9bR\xa5gS\xa9b\xa5\x81\xb3\xd3I\xdf\xc3\xa9T{8\x89\x0bYg\xa5\xa7\x93\xb8\xb0|\xc9\xc9\xd4\x00\x15\x027\x18F\xed\x0c\xcepx\x08)<\xac\xf1\xfc\x94'#A'_G\xce\xb8\x80\x99y\xb9\xd0\xad$\x08a\xc5P\x96\xb8\x8e:[\xb1\x1c':6\x15\xd0\x1d\xf8\xb1\xd0\xa6mQ\xafkh`\x91h#\x13\xa1\x8du\x1aZ\x8b\x90iH\x8cC\xaaO%M8/\x0c:I\x803\x07]u\xce\x8c\xa2\xc6\xe1\xa1.m30\xbe\xa4\xabK\x9aa\xd9\x0f\xa5\xaa\xc9\xdc\x15\x0e\xae\xe5\x87\xc0\xfeT\x85\xfeI\xad\x84U\x14\x85n\x15\x83\xde!\xa1K\x8d\xe7;$u\xe9'C\xeaGX\xd6\x99\x83\x98\x85\x98U\x8a\x1a\xb9'-\xfb\xcf\xaf\x85\xa4\x16\xa7\xea\xa0\xdf\x9b\xd6\x03\xf8\x1c2\xb9\x84*w\xacP\xe5\x8e\x15\xaa\xdc\xb1B\x95;V\xa8r\xc7\n\xa5\xe6\x8b\x98?\x91Z\x10\xdcP\xd8\n\xc2\xcaV\x80\xbf\xa6\xb7z\x05\xa4\x17R\x8b\x03\xaa\x07Te\xa5\xc3\x8fo\\X\xd9\x1a\x17\x88\xc4\xb6 C<\xb3hkjo);O)\x0e\x8d}\x914\xc1'+\xf2N%$n\x90\xba<2)\xb9\x12\xe6\xeb\xd3oF\xfd\ns%\x92\xd1m\xf9\x99\x8b*\xec\xe3\xd2/uJ\xeb\xbcO\xb2\xbbK/\xae\xf7h\xd82\n\xb4\x9a\x11\xc8\xcf\x9c\\\xd1Z\xef6\xfa{Q6\x84\xf4\xe8\xa5\xb8\xa4\xc3q\xfa\xac\x1d\xfd\x94\x02\xbf\xe1\n\xdd\x94\xaeF\xb3\xca\x08-Z\xe0RK\x1d*3\x9aP\xfeB\x0d\xc3\xac%\xe6\x02d\xccbb\xe1\x9a\x13\"\xa0Y\xaf\xb8B8\x9d\x12t\x8b\x10v\x9a\xdau\x0dk\xd0\xd4.\xab\xfeYhj/\xf8\x0cVx\xa4\x06\x9dW\xa0\xf6\xf6\xb1S8\x84\x95\x17%\x0b\x92c\xaeS\x8d\"\xe1\x0c\x0ea\xc9\xc5!5\xd4\x11\x1c\x82\xcf8u&\xe2h\x93\xfa\x9d\xd7\xd0\xe4\xdc_g\xb1>\x07\xe0q\x0d\xced%\x0d\xec#8\x84\xadU'\xdeqH\xe1P\xc5\xe5Q%\xfcw\x0c~\x9d\x86$>b\xbd\xd6\x81\xbf`\xe06%\x80^2\xd0*.\xd3TL\xe75\x83\xb7Tp?\x17\x9b\x16i\x97'\xa1Q\xf4\xc8\xbaPP\xf1\x05\xb8g\xee\xc8$/>\x15+\x84\xc5\xb2x\xc7\x9c1<\x7f;\xe6\x8a\xe7\xe7~6r\x7f\x7f\xdfe3\xba\xd7\xafp\x08O\xb9\xc4\x87\x88\xe9\xf4>\xa0\x16\xf1\xeaP?4M=ma\x98#\x94\xe0\x99W`m\xa0hq1r\xbb0T\xccf@KR\x1e\xe3M\xb6AF\xee\xaf\"\xec\xd70\x9b&A2J\x82x\x13\x92W\xc4\x0f_$\xf1E\x8b\xcb\xec^\xf4\xd0\xa3\xc7\xcd\xaf\xf0\x10\xcaJy\x95\xf0;\xa7U\x9fj\xc5V\xce\x9f\xb9\x8d\xcc\x89\xcd\x151\xf5]L\xfb[\xfaI\x85\xe6\x8d9T\xd1^\x9c\xba\xbe\xe8\x01k\xda\xf7V~Q\xad\x1d\x9d\xf2\x90g\xfb\xacnQ\xb9\x14\x07\x95T\x0b\xd2\x9b\xebd\x0c\xcfu\xf3(\x99C\xcdi\xc4\x80\x7f\xc9\xa3\x92hg\xfc\xbd\xde\xfcq\x8e\xbe\xcc\x94v\x9d[\x04\x8a\x89K\xb0\xc0\x94\x1d\xa2l/+&\xf5\xd7\xbf\xe6d\xe1\x08\x97.\xda\xae\x8a\xebQ\xe0;\xddu?Y8\xf05/a\xdcF\x0bTeo\x1a\x16\xff\xd6\xbc\x9a\xb1p\x0d3\xbe&\x16\xaey\xe5\xda\xb8\xb8\xe6\x95\xf2\x1893\xa4\xe0\xd0[{<5%V\xba\xa4YK\\\xc8t\xc9\xd9IqiMKw*\xcd]\xaeQ\xf2)\xe3\xfe\x9aW\xdb\xa4\xc2h\x9by\xf68[(\x8f\x19\x17\x97,v\xbc~V+-(J_\xd6^b\x1c\xeb\xf0q\n1A3\x06A\x05\xe4\x1b\x92\xa2\xf7\xf9\x18\xde\xed\x98\xdc`\x07M>8p\x03\xdc\x0ds#\xd7l,'\xf4K\x9f\xb9\x85+\x03\xff\xafN\xdd>D\xd7\x1f]\xa1\x9a\x7f\xb0n\x7f\xe7}-[\x8bn\xab\xa7\xa7z\x93\xa1\xaa\xf1\x17\xba\x86E\xd5\x1f_\x94)l\xd8&T\xa7\xc4\x18\xce\xcc\xbb\xcdj\xacL\x9dWQ\xf3\xe6\xd0\x1b6Y\xd3\xcet\x84@2\xf1Q\"\x11\xd6\xa8\x19\xcc5[o\xe84\xbe\xb60q\x1b8\x1e\xf5\x94\xb4\xec\xd7|-\x04#E9\x9b\xee-\xef\x1da\xc7(\x88\xc4\xd5\xc7\xe4\xb7^\xd2\xb9\xe6\xd51\xb1\xcb\xf4>\x8a\xf5\x1e\xc3\\\x9b\x83q\xed\xc7\xb5\x83\x81\xc3\x9d=\n\xd0E\xa1 \xe1\xa8^ar\xa43\x1a\x83\x03l\xe9\xbc\xda\x06Uq\x9b?i:\xf1\x9d\x16\xc5+K\x89u\x9a}MV\xfc\xa6Z^S{\xb1c\xa2\xd0\xd5^D>T\x88\x02L\xb5\xfd\"\x0fIN\xc2\x91\x9bhV\x94\x1fB3\xf8I\xb1p\xd5\xd4\x1di\xa6\xee\x91n\xea\xb8h;\x83#\xeb\x99\xd3\xf7e4\xae\x04\xfc+\xb5w\x0e0r\x1e\xc3C8\xf6\xcaT\xc6\x85v\xa2W\xba\x97\xe1\xc0}i\"T\xc8\xb5i\x14<\xf4JpP\x06 :B\xad\xfe\x11,\x17\x064\xa4p\xa4\xad\x87Yo\xdf\x9fR\xe0\xaa\x92j\x95{\x1f\xbc\x94\x05i\xa5\xb7 \xd5fCF \x85u\xe8\xf7\xf7]s\x89\xcc\x9a\xd7TL6T\xffm\x9b\xd0\xea\xbf\xf8\xcdke\x13Z)sG\xacTQ%+UT\xc9J\x15U\xb2RE\x95\xacTQ%+\xa5Mh%lB+\x8c\xc8\xbf-\xb5\x04\xb1g\xbd/W\xe6\xa0\xf6\xedP\xf4]\x91no\xf5\xf1\x0dE[[C\xd1\x97(\x94\x8e\xd1\xca\x14\x85\xa2\xb7\x88d~^\x90\x90oq\x85X\x85\x91\"\x1bt\xdd\x7f\xd9\x04\x1fd\xf2\x12!)\x9c\x1bSk3\x99\xff|\xa9\x16b)\x10S\x91@\x94\x14\xa5\x9f\x04$]\x00\x0b<4\xebC\x12\x1e,\xf9$\x8aQ=\xa52\x8f\x89+\xf1R\x16\xc6g\x91\xc3\xa0y\xe56\xe6\xb5\xe6\xd5] \xca\x0cobydn\xf3R\x9cD\xd5\xe31~\xca\x0f\xbf+^\x93\xf3\xd2\xd5L,\xd7\x1bZ\xf7\xbc\xd3\xe3\x92\xf2\x07\xac\xaa\xbbN\x03!C\xafO\x1b\xa4r\x95\xd9\x02PN\x90\xec\x15\xd7\xea\x88W\x07a\xec\x942@\xb9)\x95\xbd$b\x7f^\xa2\xabWc\xd5\xb4\xb4d\xd6\xc1g\x16YB\xad\xccu\xac^\xc9&\x97$T\x12\x17\xabR\xc2\xf9|5\x98_\x9b;Xz\x8d\x87\xf0\xfb{\xd0\xba\x0fo\x06d>-\xdav\xa3\xd6nT\xbf\x85\xf5A\x06X\xd5\xe8\xc1\\\xfb\xf2\xa1\xa6\x8b\x92\xcf\xc7~I\xb0\xbe\xe8\xebhMt\"\xf4\xba\x9a\x04\x8d4$\xc9\xf5\xd5\xbc(\xc5\xa7\xcb\x92\x8aL\x0d7\xffo\xc3\x87\xe9_\xad \xf6\x9b\x91W\x92\xa2t\x93\x11\x05\xf6O\x1c>#\x93\xc7Q\x91\xa5\x05f\xe6w\xde\xd2\xe3\xe3\xa6_\x96~\xb0\xa2\x07\xb5xI\x05.\xbe%4,\xa1\xdd\xb7\xa4\xe0\xbd~5\xb4G\xec[\xf4h\x82\xd7\xb9\x9f\x14\x0b\x92\xcb\xba\xd6|\xa3\xd75\xeb\xcfI\xdf\xd0(\x8f\xe9*8\xf4\x98u Jx\x9c\xb9\xe9$\xa4[\xf9\xa2\xca\xb1Q\x92\xf3\xf2\xe6\xaa\\\xc7\x16\xban\x0c\xce\xe9\x1e\xf0\xc2\xcaV%;(\xa5\xc9\x0ed\x17K\x80pa\x84\xed\xca?\xb2\xebT\x9f\x94`n\xf1\x8938\x84\x93\x0b\xca\xd0\x15\x9byQ\xe6n\xea\xc5~Q>MBr\xfeb\xe1:7\x9d\x11\xdc\x80\xe9h\x0c\xa7o\xbd_\xd3(q\x9d\x99n\x9b\x8a\x0b\xed\xfc*D\xd5l\x08=\x13\xd4\xc9\xfdpdZv\xe0K\x7f^\x99{\xc8y\x99\xfbA\xf9\x84\xe7oz\x92\xa7k\xde\x8fF7\x98W\xc4\xc8=2\x18\x84\xe8\x85!<\xb43\xcc\xeaG\xe7\xf3\xdc\xc0 i\x9fR\x1aTy]\xd6\x99+\xe8\xc7%\xb7yB\x8b\x17\xf9\x8b\x8c$\x1c3/eIq|\xa3\xc6\x16\xaa\xfa\xec\x06\x07\\\xd8\xa9\x06\x8a\xb88We3hw>\x863\xfd\xa4\x83q\xe2\x9bYf`\x11 #\xff\xb5\x9aM\x91\xcbc\x06g\x83\xc7\xa2|\x81\xb3\xdb\x14\xf1\x94\xe3`)u\xb8\xce\xa8\xfa2\xe7< $%\x96\xd6\x86\xf9\xa6\x84\x8bt\x93\xc3<O\xcf\n\x92C\x98\x92\x02\x92\xb4\x84b\x93ei^V#\x88\x92%\xcc\xa3\xc4\xcf/`\x1b\xf9\xf0\xcf\x1f^\x81\x8b\xa2\x93\xa7\xca\x06\x8e\x9d\xa4\x04\x00}\x85\xeb\xe3U\x87Oe~a\x98\xfeu?\x80\xe1\xc7\xe3\x17?1.\xc6-G\xd5\xa0\x01\x146\x15\xc0)\x0c\xfc2X\x81\xd9\x14N\xdbs\x02?\xf9[\xc9\xc4\x16\xc0\xd6\x00^\xf9g\xc0\x04\xad\xd9\xbf\x92\x7f%\x94\xbfQ\x8b\\jD\xd6-\xe2\xca\x84\x8a\xcdlUzO z\x89\x14x3\xd8\xc2\x0dp<\xf4\xe0\xd6\xbf\xc2\x19\xef\xb5z`\nm&[\xfc\x9b\xe7\xeb\xb8\xc1V=\x04W\xac^\xd0\x12\xb04\xf8@\xce\xcb\x9f\xd2\x90\x14/\x92c\x7fM\x9eE\x89a\xa0Q\x12\x92\xa4L\xf3\x19\"\x80\xbcs\xa3\xf1\xee\xd3n?\xe5\xdd\xe9>\xd7r/\xda\x99f\x96k\xda\xe7\x06'\x84\xa2\x81\xdbN~\xc8x\xd7\x9b\x14\xe8_7\xb3\xd8\x8f\x92\x9b\x8d\xd9\xff\xc8\x036\xf0k\xc2\x88\xa7\x181\xcc\xe0\xe6\xff\x8d\xd6\xfe\x92\xfc\xebf\x0b\x87\x12\x8f\xbb\xfd\x14\xaeSl\x97\x8e\xd6\xb0\xd1\xa4\xf9\x0e8\xa8Fv\xc0\xd1+\xdb\xd7K\xed!\x80\xf9\x9ed\x9a\xcb\xe6\xb5\xf6\xcf\x7f\x89\xc2r5\x03g\xba\xbf\xff\xff\x93c\" \xe5W7\x94\x073\x1d\xbb\xa8\xd0\xc8\xf0\xb9\xf37a\x94v\xe6\xce\xea\xb8P\x9f\x8d\xf4\x8bzC\x117G\xaa\x1d\xb1tA\xd1h\x1c\xd7O=\x9d\x11]\xado\x96\xacL\xb5\x89\xe8\xc48\xcc\x7f\x88n\x1f\x04O\x17P~\xfc\xbdQ\x9e\xcbtE\xe22o\x0d\xee\xe4\xf5-\xec\xc3C(lw\x80z\xf9\xad\xcd\x7f\x91:\x9c\xf1M\x92\x93 ]&\xd1\xbfIX\x99\x89p\x8e\xbf\x16\x81A\x94\x89\x10A\xee~\x81\xd4\xdd\xd3E\x8a~\xca\xd9/4\xa4\xf8\xd3M\xe4\x06K\x91@\x99\x8a)\xad\x8d\xf7Z\xb7\xa5\xe5\xa5q\xa4\xe1\xc5Vg,\xc0\xb0Tz\x9e*]\xab\xacm\x916UH\x98Yu'\xcb`\x95\xef\xd0}p\xf7\x8e\xc4\x88\xa7\xd7}\xd6\xbe\x9eY\x1c\x95\xeeM\xf7\x9b\x7f\xdd|x\xf2\x7f\xbf}{\xe3\xdb\xd1\xcd\xe5\xc8[DqIr\x0b\x0fK\xfe!\xc7\xa9\xb2\x0dEkY\"\xdc\x8e\xfa\xba\xdd\xdf\xc8\xb6\xbf7\xbf\xf9\xd7\xcd\x1b\xac\x9b\x9c\x11 \xda\x0f\xfb\xf6\x1f\xc6\xaf\xfe\xeb\xa6\xddw7\xb6\xdf\xb5\x9e@\xec\xc0\x9er\\\x80\xc8E0\xef\xf0^$~\xf8\xbdn\xd6\xf8!\xcf\x9d\xd9\xed\x850JuM|\xf0-Li\x13\x0d]Gm\xcb\x9b\xbe\x85\x87\xed?g\xf0\xbb\xe4\xdcg\xb1[\x82\x83\xed?G\xbd\xad'a\x89\xfb\xa01\x1c\xca\xf4\xa6\x01\x1c\xc2IGeSg\xb2\xa5\x7fu\xe2\xac\xe9x\x17c4\x07\xbb\x0b8\x042\x86\xd4]\xd8\xb8\x13\xf3uR)\xeau!]\xec\x14wK\xd6^\xe4\x96\x94uq\x1e\xc5i\x11%\xcb\xd7\xfe\xd2\x81\x19l\xf8\xdd\x17\x19I\xea\xbb>\xbf{L\xe2E\x1b\xdeyM\xe4\xb9\xbe\xe5\x01\x81\xed\xa3\xf7\xfdH\xe2\xba2\x86TeR\x8eLI\xeaX\xfdq\xa4\xe8\xbd\xe7\xad\x81R\x1e\xdf\xa7\x88\x15O&\xf2\x9e\xd2\xad\x95\xbb\xc9\x18b\x85\x92\x0fK\x89\xc3\x0d\x88\xfa\xef\xa3b\xb69\x83us7n\x8c\xa1\xd0\xd9Y(J\xa4'%L@\xe7\xbe\x1dVP\x07\nM\xa1|\xb8l\xb9\xf0\xef\x0c\xe7 ov\xbb\x1aV\x8f\x109\x1d\xac\x9c\x057 ds\x0f7 \xab~ET\xe8\xc4\x80\x05\xec\xcd\x18\xb0\xeb\xc6\xf0kh\xd0\xa6\x0eN\xb4\xc7\xc3\x81\x02o\x91\xe6G~\xb0\xb2\xdb\x1e\xd9 yK\xf7_\xf7\xe4\xa42jfw\xaa\xf0/\xed\xedu\xfc%F\\\xfb\xfb\xaf\xa6o\xe9%\x12\xb6\xde\xfc\xfb^\xdd\xc0\xdf!'\x19\xf1\xd1vB\x99\xbaoVe\x99\x15\xb3\x9b7\x97Q\xb9\xda\xcc\xbd ]\xdf\xfc5M\x8a`\x15G\xc9;\x92\x977[\xf0\xdf6\xbe\xd4\xfc\xe8\xa34\xbb\xc8\xa3\xe5\xaa\x047\x18\xc1\xc1\xfe\xf4\xf6\xe4`\x7fzg\x0c?\xa6 \x1cW\x1f\xf3\x9a\xef<\x8b\x02\x92\x14$\x84M\x12\x92\x1c\xca\x15\x81\xe7O_\x8b\xdbM\xd0\x9b\xd5od\x06X\xd4c3\xb3\x842\x7frw\xdeq\xe3\x08Ab\xaf\x12$\xc8\x08\xcaU\x9e\x9e\xa1\x9d\xe1\xf5EF\x8e\xf2<\xcd]\x87\x9cgL\xdd\xe6\x03\x7fI\x92\"y\x8a(]\x8e*^\xa3\x0fr\xd0\x05\x81\x1b]0\xe1\xa9@\xc4\xc1\xf4w(\xfb\x1f\xca\x19\xf7A\xa9~\xc3\xce\x98\x8fX\x16\xf4\xfe\xc4@S\x9d\x97Vg\xde!\xc5\x1b\xde\x97\xca\x1e\xb1O\xb1\xa9\xfd*z\xc7|\x8d\xa5\x00\xaa\x97\xd1\x0d\xe3[\x98~=\xa2''\x0b]qS\xb8q\x88F\xf8\x12\xbe\xfd\xf6\x10\xa6c:\xc4\xc3\xee\x18E\x8b\xf4P\xe2o\xb4\x1a\x1f\x86\xed5cxw:2\xe1\x82\xc2\xbb)w\xc9\xc8+\xd3g\xe9\x99\xa8D;\xac\x0f\x1f\xdd\x99\xed3,\xfe\xba\xa82\x1b\xd0_\xf7F\x7f\x8e\x82\xaf\xdb/\x05f\xd4\x05f\x84\x17\xfd\x80h8\x81\xe0<Q\x82\x9c\xe7`\xdd\x91\xa4F\xf6s\x7f\xfd\xfd\xc5S\xca\x80G\xe5\xc5\xc8\xadS1\xff\x83\\\x8cE\xc4\xbc\"\x83\x80\x00}\x94&\xc5f=,ks'\xbf\x83\xba\xdb\xa5\xa4\xdb\xa2AL\xea9r\xcbN\xa7\xa5\xdd\xfd\xb4eV\xae\xd4\xd3G\xa3\x0e\xb4\xf4\x05\x12I3^\xe7\x17\xe9\xa6D\xfb\xa7\x1a8\x17\x196\xfc$ \xb1\x01\x98\x95\xde\xc9(^\x91R\xeb\xf3\xc3\n\xef\xf8q\x9c\x9e\xbd\xe6Iz\xd4\xc0\xac\x1c\x9cH\xe6c,\xdf\xbbaE}\x8c \x14\x98\x80\xa9K\xa0\x80\x85\x80-\xdd\x8c\xb2\x1a\xd6\x90@!\xac\xfag\x91@aU\x01\x1b\xf3vo\xf9\xec\x97\xab\xe7\x86\x0c\x85k<\x80\x9cj\xa1\xb0\x18\xaa\x1a|\xc9\xc0\xc5B}\xbf)\xcbT\x9b\x08\x00\x93\xcbb\xd23\xad\x96\xee*\xa2\xbc\xf4\x15W\xc5uU\xe1sW\x95~uH\x9b\xa5?\xdf\xb9\x1d\xcc\x1fi\xd7\x8c\x18Z\x19\x95\x9a\x04\x90\xce\xcbjsc\xddX]*Qm\x96\xd0\xaa\xc8\xb4&eG\x8b\xeah#\xacZ\xc4Lm\x12\xa9\x03\x85R/H7I\xa9\x8f\x13\x1a\xb8J\xea\x1a\xb8\xe2\xd2\x86\xad\x0eJ\xd8Y\xd3\xd8\x1dZ\x1a\x90\xab\xd3\x04\xb3\xb2\xeeq'sd=\x00\x0c\xabJ\xfc\xb5\x06\xe9\xe8'\xf4)6\xaf\xaa\x1f6\x81\xb8\xed$\x9b\x03\x12Yj\x85\xec\xe6U\xe9\xdf\x91A`\xc1d\\;R\xb9\x12x\xcf\xfd\xcc\x8b\x8a\xe7~\xc6\xb4u*\xf3\xa8\x9b6\x1a\xb6\xcc\xac\xa0\x1a\x8f6\x133\xf0\xbc\x8e\x86\x8c\x89u\xc4\xe4\x86)\xa8\x92\x86?\xbc\xc1s\xaf\x1dufH\xe4\xd8\x0c\xa64\xa4C\xcc\xfd3\xa4k\xc6\xd8\xb8\x8cA\x855\x8f\xf3K\x84\xc7\xad_\xf3\xd1\xee\x16\xab\x1ci\xbf\xc3\x82\xf5X\xdcm\x94\xa0\x0f\xa3\xe3\xa1S\x0d\xbb\x970\x84\xd7~\xa3\x0e\xba%\x15\x0bl\xf7\x86\xe0\xa0\x9bov\xd8x\xf3\x1a6\x02P\x0d\xf99\x1b\xcc\xcb\x0c4\xfc\x18\xf0\xec\xcc\xcfy\xcaeM\xa0,`\xce\xd1#\x96d[\xe7\xaej\x97\x95\xd2\xecGgG[\xc4\x19\xda\xa0\"\xbb\xa7\x85\xcfZQ\x90Y\xf3\xdc5\xa9q-\xcb\xade\xa2iy\xecc\xe7P}\xc2\x89\x88\x87\x92n\xd9\x0b\x0e\xe8\x9c\xd6&\xf0\x0e;?\x83\xbdi\x1b\xa0%\x1c\xf4-\xde\x0d\xa9o\x06'\x1d\xa5|MdN\xde\xd6\xd3\xd0\x8e\xbb\xcc\xfe\x0b>\xb9\xaa\x8a\xf6\xa8\xe2\xa8\x8e\xceKM1\xef\xb4[\xb2;U\x97\xecN?\xbeZ\x88 t\x9d\xb1\x98-\x8b\xe6z\xddReh>t\xb7Jy\xa7\xd3Sr^\x92\xa4\xe8\x1d\xf6\xef\x99\xe7\xd4\x0c\x9c1\xf0\xa3)1\xd7\xda\x8e\xae\x1bB=e\x9ecG\xeb\xac\xbc0\x94\x89\xef\xc5\xd4\x8a*\xf1\x98S\xb5~'\x12\xfa\xc9\x88\xeb'\xafU\xc5x\xd5\xc8m\xf0\x10\xb1B\x85\x88Q\xc1\xbf(9\xea\x98\xf9S}\x02\xfb\xfc\x0b\x8f\xa3\x02)\x9d\x14\xa1\xf9\xb9\x8f4\x0f{\x8d\xda-\xf4\xf6\xbb\x0c\xaew\xf4\xa9-\xd4\xa7\xad\x9c\"\x0e\x9d\x96\xe9r\xa9\x11>B\xdesY\xfa\xe7\x9e\xeb\x86\xba\xbfQ\x92mJi#\xcc\x04\xee\x04+\x12\xbc\x9b\xa7\xe7\x12MY\xa3\x0b\xfd\x87\xf8\x1e\x1e!\xa8t\x90(tj^\xc9\xac\x9c\x8c\\Q\xc1\xda\xe3\x1f6\x1e\xb7\xa318\xc7$ \x01'\x95mL\xa7\xe7#\xf4Y\x95\xe8\xff\xa49\xa1\xe5&\x93Pj2Q\x94\x93T\xa4\x88\xbeu\xd0\xcb\x0b\xf0%\x17\xb4\xdc\xb0ag\xd4\xb0\xcd\x05-v\xe0.f\x82\xa1\xeeG_}\xd5\xfa[-F$&\x1bD\xc3\x02\x90TC\x18\xb9\x89'$\xc618\xcc9\x03\xad\xcb\x88\x13\xcc\xbaLD^\xc2\x84\xd5PB\x91\xbfOG\x9a\x96\x14\xebCK\\\xdbai\xb2\xad\x94\xc8y\xad\xc2W\x03\xa5\xd6\x9af\x1fS\x1aX\xc9\xb4\x9b\x1a\x94\x8a\xc4\xda\x05IxT6\xce\x15.\x04N\x1e\xe5\xe4\xdct\x0c\xfe\x186*S\x10\xe6\xf3\xe6\xd5*X\xcdA\x8b\x8c\x05\xc2\x00c\x9ci\xc6KX\xea\xf6\x13\x10u M\xd3\xc8\xca\xb5WHg\\\x18\xb5r\"\x19C\xae\x98\xdbF\xf4\"\x96\xf0`k!\x0e\xb3\xaf\xbe\x02\x07\xb5Y\xb8\xdf\xd2z\xa1t\xfa$\xc1\x9a\xe9\xa2\x96\x01\xcf\xc3\xa88>\xf3\x97K\x92\x1f\xa0N\xd6\x87\xaa\x8d\xf3I\x9d\xf9\xf6\x8f?\xd8]L\xcf\xcbi\x11\x8f\xed\xad\xefW w\xabT\x8aj\x88\xc67f\xd8\x0b\x9e=\xea\xab\xaf\xc0m\xf4A\xd1\x83\xddZ\xaa+`\xef \x07\xb0\x1e}tY8h\xb2Y\xcfI\xfe\x9a\xeb\xc7F\xae\xaf\x88\x93\xeb{q\xc90\xdd\x1d}\x9c|\xedU\x12\x86_\xa28~E\x02\x12m\x91;\x91\xd5\xdc\xb7\xce\xc5Ps\xea\x9fxw\x99R\x88G\x97\xda\x83Hd\xa2\x02 \x1b\xee\x84\x1cf*3\x9a\xcd\xeeJ\xab\xed\xe4F\xad|\xd4#q\xa8\x07,%\xf5h\xc4Q=\xd9\xac\x91w\xf5\x81\xe5b\x88:\xf7u\xad \x17\xcd\xc6{53lJoP\x18\x86\xd2\xd84\x1b\x8c\x03\xa1\xff\x9d\x893#'\xbfm\xa2\x9c\x84\x8cT\xe1\xae\xf2\xd9\x19L\xf72\xba\x89x\x8b(/J\xb7\xb3\x01\xb1\x90e\xc1?+jZ\xdam\xc7bTe\xd1\xee\xee\xb4\xfe\x86lo<\x99\x18\xf4\x01\xbc\x05\xec\xce+\xc3q\x9fX\xee\x8f|@V\x8e\xb4\x865\x98\xcb#.?sm\xaf\x9e\xd7 Z{\xfe\xa6%\xaa\x0b\x95\xb7\x1e#\xad\xe9M`Mo\xc2\xea\xb3\xe6\n\x0f\x85\x91\xde`\x95\x07cj\x11\xafX\xa5gGB\xdde(\xef\xc0\xa0\x1f\xa5\xebu\x9a\xd8\xbcs\x81^\xd9\xce\x8fE\x9a\xb0\xcc\xe7O\xd2|m*)\x9b\xbb\xcc\x98\xfc=\x0b\xaaQ\xc2\x9e\n\xc7\n\xc6n\xa8\x01\xcf\xe0\xb0\xc9\xa2\x9c\x9a\x0b\x98\xceM\xf6\xac\xb6\xc1\xc9`\x15Y$Zk6\xd4\xf6#\x83\x95)\xa8\xec3\x85W\x15S\x10\xd8\xea\x06\x06\xbbP\xd0\xf4\x8f\xa2\x9fh\xa4\xf3\xc1{\xf4\x135\xcd$E\xd9\xc8\\hot\x92\x91I\xbbwk\xf3\x93\xa1\xf4X\xc3\xc2\xa3\xc9\x05\x04\x83\x8b\xb65\x8dL\x81\x12R\x97\xe1\xe4\x88\xe1\xafm\x0d\x8ds\x06nSC\xe3\xb8\xb13\xb8\"\xddT&\xa4 \xde\x94!MEC\n-\x93\x12P\x89^\xfd\x81\xef\xea]\xb9H\xf3\xb5\xaf\xed\xe5\x0b8\x04\xf4\x81^!7Rv\x18\x11\xed\x86x \x87\xf0\x82\xbdP\x1a\x10\xf45%\x00\xb47\x8f\xfd\xd2wL5\xf8\x9eS\xe8'\x15t\x94\xd4\xa1\xe5\xea\x97\x9e\xd6\xc3\xae\x19\x0e5\xf8\xaf\xa2\xf3(\x0cD%Y\x17T\x16\xc0\x81t\xab\xc95\xaf\x9f\xe0\x10\xde\xc1Cx\xd7\xe5\xa1\x1cM$\xe7+8\xc4\xc0GW\xd4\xa2\xe8\x12\xf0\x91[Vy{\x95_y\x0c\x87\xb0n~e\xe0\xfb\xcf,\x12Y\xbd\xb1\x80\xf9\xcd\x02\xe6 \x1c\xc2\xdeT\xab)h0z\xcc\xe9\xfeY\x8dOl=:\xec\xe03:v\xda\xc1gM\xbew\x8c\xfd\xe1\xb7\x84(\x87\x86\xe37\xf5\xf7\x04h\xe3koh\x9bo\xea\xf0e\xda\x03\xec\xf5~\x1b\x8e\xf5\xed\xb7\xfa[U\x1b\xe3f\xccB\xd9\x15G\xb1\x02FWL\xd6z\xa4\xe8\xf3\xf6\xb3\xdc\xfbH\x17&\xa8\xb0\x99\xd9\xba$4\xdf\x8c\x12\xa7\xe5\xde }\xe9\ns\xf8\x0fq&\xba\nC\xffSx\xd82#\xd2\x06\xa1\xa2\x070\xeb=T\xf6\xa6=\xb9\xf8au\xc6\x00VF]\xddC\xabT\x0dA\x1ac\xbe\x10\xdaS\xf5\xd9\xa7\xea\xaf\xf3?\xff\xef\xefN\xc3\x8f\xee*f\xb39Y\x9a:\xe9cx9\x86_Q\x0fu\xe2\xc0\x0d\xf8\x15n\x80\xf3\xd6\x19\xc3w\x18\xc2\xb7\xf3\xac\xb5z\x92\xa7\xd9\x84\x9fg\xca)p\xffJ\x1b\x1d\x833\xd2o\xb5\x1d\xa7 $YN\x02\xbfT\xad\xcf\xfbq}\x96\xd6\xdb\xbf\xf1\x16\xc6\x846\xfe\xfep\xab\x15i\x9c\xe4\\g\xdcb\xdbq\xba\xc6\xb0\xa4}~%\x94\xe3\xaf\xae4G\xfa\xb1\x89\x9dgnW\x14o&\x14\x83\x0c\xeeR\xe7\xff\xb0H\xa9~\xfe\xb3\x1f\xeb\xcb\xb0\xc8g\xa8N\xa0\xbf\xa63\xf2X\xcc\xc8\xe3\xff\xf8\x19\xb9\xc2\x1a+;8wV\xdb\xa9\xe1\xe2\xa9!\xca\xe7Zz\xcc\xeb\x9f\xc8\xbei\xc2\x8a\xbd3\xd4\x0b\xc3\x1f\x7f\xc0\xde\x13\xb3$\xab\xed\x87\xca\xf9\x85\xb2+\xea\xb5\x14\xbdw\xbe\x89\xbe\xfdn\xebG1\xa6\xe2@V\xb4\xf8\xe6f\xf4-=\xe6\xe0\x06\xbc\xb1\x88\x8eo^\xc2|\xaa\xc1\x8f\xda7\x8f\x07\xf5\x8eU\xc9\xcd\xde\x8fZ3\xd5\xe0\x94~\xfb0s&\xd82\xbbi\xe3*A6i\x8d9\xfbM9\x98\xd7t,{\xcf\xb5'Z+\xcb\x13\xc6\xdc\xce\x0cY\xed*)\x07\xcb\xebP\x94\x8a\xcc\xd3\xa3\xad$o\xd0uX\xebM\xb8N\xf3'5\x84`\xabf\xf0T\x0d\xd4\xd8Z\xf2\xedVK\x9d\x8c\xd5\xa2\x14\x0f&\xd0p\xb9m\x83\xcfXx\xbd%\xef\xbb\xabV\x84\xd0\xc5+fB\xccc\x7f\xea\x1a\x12\xf5\\^(\x11\x087\xc3\x0b\x0d\xc5:\xd2-\xab\xf5\xba\xd5\x0e\x96\xdd\xba\x88\x06\xa4\xe0\x0e\xd9\x9a\xacVvZ\x1f{\x8d\x8f\x98\xb3\x8e\xd6A\xb3*\xa2\xf6\x8d<\x89\xa5\x84H\xefX\x01G\x816M\x1d\x8en\x9a\x84K\xda\xac\xa9\xc9\xa9\xec\xe0\xc7\xa4,\xa3d\xf9$\xcd\xdd\xa0'g4\x183\xcdD\xd4>k3\xf8\x89\xb96PY\xf5'\xe4U\xd4\xaf %\xa7~\xf6\xae\xca\x89\xf9\xfa\x97R T\xaeT\x81\xca\x95*P\xb9R\x05*W\xaa`\x98+U\xe0\x16\x8d\x8e\x06jO\xe2\xe0\xe3\xfb?-l\xfd\x9f\xbe\x04\x98\x0b@\xfb\x00\xf38\n\xde}j\x87\x17k?$R[?4goevS\xc30\xcb\xe0\x1aU\xferma\xe2m\xfd8\xe2\x85\x1e\xfcu\xe1\x9e\xa4c\xf0\x91\x02UO\xbe'\x8b4'\xfcp\x12\x00\xa8\xb7\xe3\xb3\xe4\xa5 \x7f\xca|::7\xdd\xd1\x18\x12\x8f\xf0?4\xc7\x82\x18\xb4\xf6\x04\xce\xf0\xf4\xd5\x9c\xa3kn\xe1\xe8\xfb\xec\x02\x12*\x837\xda\xcb<\x0d7\xc1\xb0\xb8\xfe\xca\xdb\x8f\x8d\\\x92r\x80\x7f\x94\x19\xc9O\x04 \xae^\xf5\x1a\xeb\xf8\xdb?i,\xbf)\xf6y\xce\xa2\xabme\x93y\x99\x00G)\x10\xe1G</\xe9\xe9\xe9\xbc\xd4\xa5<\xaer\x9f\x0b\xee\x83\xfe%G\x16*h\xb0FdI\xc5\xda\xd3>\xfc\xd8f\xa9\xa6\xae\xdb\xb1\x8d\x19X\xee\xab\xb2\xc6H+\xa0I\xd3\xc9\xf8\xaat2\x1bU:\x99B\x95N&\xe6\x0f\xe4\x15\xd0Z\xb9c\xaeY\xc6\x98\xfeG\x84\x1e\xfa/\x0f\x1e<\x90 \xe9\"M\xcac\xa6\xcfv\xa2\xd2\x8f\xa3\xa0\x1b\xa2\xd3\xfa34\xd2'\x03\xe3\x00m\x1a!)\x83\xd6\xab\xbb\xa4\xf6\x93\xee\x94\x1fc\xc72\x03\xaf\x18\x02#\xff\xdb\xe9\xd1\x8e\xa5\x9b\xc0L\xb9`\x00\xf5\x82\x81\xfeEP\xb1\x08\xc62@\xc0\x19\x04:\xac\xb6\x17\xd1\xc8u\xc4\xd6V\xf9\x05C#\x94\x06\x9ae\xe1wVyC\x87\xd0\xf2\xfe\xeb\xe39\x01\xf46&C>\x06\x90\xb7yz\xaaI\xca\x00\x9c>\xff\xc0\xcb\xa9\xea\xe3\xe4\x8dI\x06@\xde\x85\xdd\x86;$\xd3\xc0\xd0.M\xf2\xf4l\xd7^\xed\xd2\\\x90\xc6\xfa\x05\xb8l\x92\x02\xd8\xb1\xddV6\x82\x8f\xdf<\xf3\x1a\x1a\x90\x05\xa1\xf4HR\xe6\x17\xb2\x12\xb9&\xdd\xb1\xf0\x01\xee\xc8?d\x0c\x07\x06\xbf%\x10\xee\xbb'\xfb\x9ax\x10q\xa1\x0b\xef\xc9\xd4\xa2\xda\xcf\x9e$\x1f\x83\x1b\x8d\xaa<\x81\xeaL\xd5\xe2\x12N\xbc\x91\xd7\xf1\x19\x7f;\x12N\xb4\x1dOr\xee=\x02\xb3\xc6S\xa3G\x89\xb86\xb2\xa6Z\x0e\xec\xfa\xee\x9a\xd8W\x8b\xbd\x0c\xe2HJ\xb5`\x97\xf0\x0f\x10\xd7P|\x06\xd6lz \x13\x94\xb8vl:\x92(\xa3?]o|^Fb\xa39H\x13\x9b\xf6)\x97\x80\xb6CGx\xcb\x991\x95\xbe\x83\xa6D\x83\x97\xa0\x80\xe5\xdcb\xa6\x1f\x94F\xfdX\xc3t\x93CHS\xbd\x83\x94c\xeb\x88?x\xcbP\x82\xba)\n\x85x\xf7\xba\x89B\x9fT\x83\x19\xc8\x04\x1e* \xb9\x81\x10xP\xdc\xf93\xa8/\x1b\xfc\xbeDK\xd9g\xf9m#5m$\x90k\xaa/\x19\"m0I\x83\x84Q\x99\xe6F\x0d#SF\x92<\xb7P\\2md\xec_\xa4\x9b\xd2\x02<m\x80\x1b\xfb\x11\xa9d\x9eGi\x1c\xfbYAT2O]\xe0\xd9\xfbu\xb3\xce^\xa7\xcf\xa2\x84\x8c\x1a\xe9\x10\xea\xbb\xfah\x9d\xc4\xf3\xe3\x18\x0d\xc9\x85;\xa0\xb8\x03\xd4h\xe2`\"\xe8\x84\x87\xc2z\x0do]L\xb5\x8f\x86\xcd\xd6\xc3\x98lI\xac4\xea\xab\xc7\xbb\xb7\xa1\x1f\xdcT\xd9\xdb\xbe\x81\xa9\x05\xafE\x07\x1acxiT\x1c\xaf\xd23\xca\xfa`\x9f^\xfa q\xde\x8e\xd1\x1dS9\xc6\x00\x0ea\xe3\x15i^~\x7fa9-\xd0 4|\xc0Q\"\xd3\x9d\x89K5f\xfe\x91Bu\xfe\xb3JF\xea\x8e4\x0f~f^6&$R\xb6\xb5Z\xe6\xe9\xc6\xbe\xe4\x0b[\xf4\xe1\xad\xd8\xa7,d\x03\xd2J\xc7\xef\x85\x8bDAe#e\xa3\xbb(]y\xe3AL\xfc|b\xa9i5R;q\xf1uO1\x10\xa7\x87\xad\x92\n\xd9\xe2Rzn\xc6\xf0\x10\x9c\x1f\xa2\x90\xa0\x7f*\xdd\x05\xc8Y\xaa\xa6$\xd2\xcdET\xbc\xc8HB\xc2\x19h\x1c\xc1\xfd$Z\xfb%\xa6\xe5PV\xc7R.\x88I;\xd3G\x03\xe5\xfa\x07\xc3<\xea\xb6UJ\xf9\x06\x153*\x9dZ\x04\x90\xd5\x17\xf17\xe5J\xfc\xfdP9\xd2\xcc\xc4>\xbf\xb3p\xb9#\xcc \x884\xdcH\x18\xe55\xf8\xf3\xd5\x07\x84\xcaL\x04\x82gv\x8a\x8c\x04\xe6\xe1\x84W9\x9c+\xeb<\xf3\x0b\x93#\xc8h\xa7tj\xb6\xfc\xfc\xa2\xcdL\xeb\x93\xa7C+\xcc\x19gA>\x05\x0c?u\xc7;\x9e\x95\xa5\xe1h\x14\xec}\xd9<\xa2\x94V\xea\x9d\xf6jo\x9f\xaa\x8f\x9f\xf7c,Mgh\x86\xe9\x90\xf4\xa7\x87\xd031\x7f\x1fVg\xaf\xe9+\xcd\x99\x0fx\x08+\xb7\x03\xc5\x1c\xc3\x1a\xae_\x02\x16Co\xc4\xcd\xcc/W\xf8\xbe\xb2\x1f\xc5\xda\x8f\xe3F-F\xbf\x84\xee\xeb\x0d\x7fW\xf5gt\xce\xebFw\xff\xb3UT\x92\xe3\xcc\x0f\x98k;\x99\xe0\n\xabw\x95U\x15Gi\xaa\x01>\xb05)\n\x7fI\xb4\x07\x8b\x16]\x8cC\xc2\x8a\xa0\x93\x90\x04)3\x91;3p\xb0\x12\x8aah\xc1&/\xd0\xdc\x94\xa5QR*\xb9\x1f\xd9\xd8\xb0\xb6\xb5\x8e\xe6i\xaa(W\x07\x7f\xe2\xcd\xa3$t\x19:\xe4R\xbb\xb6\xf3\xe3f\x9dA\x99\x02\x1d\n\xc5\x96\xbc\xd6U\x88\x1fm\xb24\xd4\x04\xb6\x13m\x91C\xe5\xbc\x8c\x8f\x92ZtwJ\x8e%h\x9fEE\xe9E\x05\xfd\x8f\xdb\xd9\x0c\xf6\x9bI\xb2\x97\xb8\x9f\xb0\xc7v\xd5%>\xc4\xd2\x804\xc8!\xfa\xe3&\xe8\xe5\x91c\xcc\xa4\xdd\xa7\xd3\xa4Z\xc6\xd6\xe7v\xde\x19\x9f\x90\x90Z\x13I\x0c\x0fB\xc4\xfd\xc8$\xcd~3\xff\x99 \xd5\x95\xd2\xa86\xd6Z\xd1\xab\xf6+\x06\xda%\xd3\xd6\xad\x94\xda:\x17\xd3k9\xce\x88W\xa4t\xc0\xb1\xb1\x1d \x11\xfcd\xff\xadW\xa6o\xe8va\xf5\x8a\xe0\x06\x10\xaf\x88\xa3\x80\xb8\xd3N\xc7\x04-\x81^\x1d10\xa7\xccm\xf2\xa4-\xa51\xfb\xc2\x17\xbd.\xbf,\xf5\xbaA\x95\xbb\xefO\xa3\xe1\xfd\xe2\xa0jQ\x01\xe9\x12>\x87\xe2\x13u\x12O\xdc\n\xd7\xd0\x93\xb0\xca\x92\xf58\n\x9f\xa7\x9bD\x16Td\xab$\xaf\x95\xe3\xcdl\x1fE\x95\xce\xa837\n\xf0*?R\x7f\xb2\xda\xf3!;J>`\xea/\xd2\x1bT\xfbN\x9d\xe6\xa9s\xbf*\x9d\xcf+)0\x9dH\x13G\xa4\xc3\xbf\xc4\xf8?\x81\xb9\xa39\x04\x93\xb5\xa3\xe2\"M\xa6\x0e\xec\xaeV%\xddv\xb3\xda\x89\x89\x82^\xc8&\x8edR^dD\xb0\xb7\xc8f\xba ?\xfe\xa5\x9f\xd1\xe9\x11\x0b4\xd6\xec\xd4\x03s\xcd\xf4\x9c\xf5J\xab\xf7\xd5\xc4\x85\xa9\x06SZp6\xe22\xe9fR\xe6C`\xa5\x953\xe8\xdb\xf8\xa05\x81\x9bR\x8fm\x80\xaeE}\xc7\xda\xe9z\xa5\xdbB\xcf\x98I\x12@\x8fzU\xa9\xf9\x08\x93^~\x93\xe6\x16cI\xb5co\x91\xa7\xeb\x1f\x8fG\xee\x89C\x0f\xb5(@.\xff\xe6\xafE\x9a8o\x1b\x9c\xe3\xf8\xday:\xd3\x1e\xbd\x10!\x06\xcf\xa2\xe4\x9d&5\xfcug\x10\x13\xf7\xb6* \xfdg\xc9\x18^\x05?\x98H\xf9\xc1\xa8\xe2\x07\x93\x11\xe3|\xf6\xbf\x86\x0d|\x03\xc9\xd7\xb0\xa1\xfc`t\xb2i\xf3\x83\x1b ?(\xf8\xcd\x0f\xc5\x08F#M\x12i\xcc\xb2\xf8\xda_\xa2\x05\x17u1\xa7\x8d\x1bLx\xa5\xccn\xa1X,\xb8B\xe6\xad\xd9\xb2\xc5i\xaf3:5\x98\xb1\x96\xc7\x003\xfd)\xf2F\xb7\x87\xa8\xe6G\xe87^d\xd7\xb9\x87\x9f\x80c\x1a\x14\xadf\xed\xf4\x91\x0fq\xfaH\x07\xa4\xcad eK\x7f\xb9$aE\xb8\x0b]\xc6G\xcc\\lv 11\x0f\xf6\x8aB;\xee*\xdd\x92|\x1b\x913S\x8d\xc1\x17\x1c\xceA\xa1p\xb0\xf56\xad\xad\xb7U(\x9d6\xaa\x1e\xf8$\x9f4z\xe8/\x0bg\x0c\xa5\xc1Y\x98y\xcf\x08\xa7\x92\x08\x1dI\x8c\xb6\xe2\x9dye\xa86M\xd5OT\xc2*_\xb8\x84\x9f\x05\xec\xe4\xb6\x00\xf5(sF\x1d\xe8\x9cl\xd4\xee\n\x00=;F\xf7jbPL\xd9\x95\xe6\"\xe9}\xd3\x85\xef\xaa3A\xa7\x87\x1b\x0e\xf3\xa2S\xcd\x89o\x9a\x90\xda\xef\xc1\xe0\x93j\xf4}\x00\xd6\xc3t\x00\xab\x0f-\x0bN\x992\x86PG\x06\xc4U\xa7\xeb7\xc32b\xb36d\xb0\x15\x17\xf33\x8b, \xe9N1$G\x05\xce\xde%\x0d/\xad\xc6\x06\x1e\xc3\xc6\xd29}g_\x0b\x10\x1b\xcc\xa2\xa7\xc6\xf8[q\x898\\C\nSzE\xe1\x0c\xd2*\x19\x93\xc5\x0bt\x8b%Z/\x9c&\xe4\x8b\xec\xa9\x19u\x9b\xc0/s\xb2\x88\xce\xb1\xb0]\xbd\x0c\xc6\xb7W9Y\xcc\xc0\xf9K\xf5\x12\x8e\xc6\xa2\xd9\x8a\xde0\xda\xa1'\x1a\xb6\xfe\xdbR\xb0&\x08&\xca\x8f\xfeM\xe0\x1bVUDM1o5\x0c\xfa?\xa5u\x9cv\x01L*\x0b!J01\xc9\x1eHm&\xad;\x03\xe5[\x83SI_\xa4\xb3\x12D\xa4\x04\xc7Z\xe4\x10\xd2\xc6\xae^\xc9\xcd\xfa1\x1a\xbe?i$.H\xbcS\xfe\x077VQ!\xb0=\xaf\xff%\xf9\xc4\xe5\xf9}\xde\xea\xc7\xe5S\xf964\xb1\xa8\xed\xed*'\x91\xcc\xc3\x98\x8fb\xe4\x9e$\xc8\xdc\xc0\x1e{[V\xe4\xbf=\xab\xd7\x8a\x81\xd7\x1d8I#\xd7\x83\x89Y\xc7\xa1\x9b\x98tJ\xcev\xe2\x9fc\x8fnE\xdd\x99\xc3(\xa5\xe6\x0c1\x9a\x99\x81\x87J\xffB\xa2\xe5\xaa\x9cAN\xb9\x9dy\x1a\xb3,\xa4I\x9a\xaf}m\xfc\x9ez\xec\xb2\xe4\x00j\xf0\x96wl\x9c\x06\xef\xaad\x04\x94e\x1b\xee\x05l%z\x08\x9f\x0b;\xe9\x83\xce\xca$\xf6\xe7$\xc6\xf3HQ#|\x0cI\xdbT\xbc\xb3/\x03(\xdbW'\x1f\xb4\xb0=\xd8\x1c\x1b\xff\x05\xd7B\xcb\xf84Y\xa4o\xf2\x18\x8f'\xfa\xfb{\xbf /\xfdr\xa5Q8JS+\xa4\xaa\xd4\n\x91*\xb5\x82\xafJ\xad\xb0Q\xa5V(T\xa9\x15\xe2Vj\x05\xb4C\xb7\x01\xea\xdc\x0b\xdcR=\xdd\xbf\x16\xa9\x17zsn\xc5\x11h\xdc(\xbeD%5\xe1\x86\x9eY\xab\xb4\xd0\xe8x\xd8\xa95\xe7\x8b\xb5\xd3q3(\x16\x84\xb64\xd9\xe4jR\xe4\x9c\x00E\x1dx\xf3\xea\x19\x96\xc1-\xd1g\xc1\x81\xb7\xbb$\x80\xd11\xb6vn\xd1\x06\x0c\x85O\x8c\xa5\xd0\x9b\x05\xb8\x12l\x053\xc6\xc2\x00\xac\x85\x81\x98\x0b\x15\xf6\x86~i\x90\x89\x93\x01\x1aM\x00h:\x9e\xf3\x94\x9c\x7f\xfc\x01N\xb9\"\x10\x92-\x89\xe9\xc9c\x905\xd3\xfa\x0b\x14\x93-\x14|\x1c\x9a\xac\xfd\xc8\x08\xefc\xf2<\x87\xb2p\x16\xf1\x1fV\x8cL\xaa\x15/mX\x1e\xa3\x86\x8aq\x94.\x96\xf5*\xfc$*\xa3\x7f\x937y<rS\xc3p\x99\xb3\x0c\x95t\xe6\xb1\xaf\xe2\xd8\x80\xd1\x86|\x8c\xc9S\x7f!\xf3\"*\x99\x13e\xa4\x1b\xda\xee\xbdv\xe8J\x95\xe9\x0c\xd5!\x1a\x89\x9f\xce\xed\xc3\xaa\x06\xaf\x1f\xc5P\xa6\xe89\x90S6\xf8Q\x9a\x94~P\xb2\x1b\xf6\x15\xf4d\x91\xdc2Z\xd6\x9eX\xb3\x1b\xf6\x17Z\xf6iiY\x1c\x05$)\x0c\xde\x0e\xcaLD\x8c \xecB\xdb\x9e\xb1v\x07R\xb5\xab\"=j\x1f\x1dc\x06\x87.m\xd0\x0f@C\x82\xb4DE\xef\xb9\xcf$-\x11?\xf1\x81\xf70\xe5\x96\xdd\xa6\xfc\xf2eC_\xe7\x0d\xbd\xc9\x0d\np\xc3f\xdey\x8b}\xac\x9d#\xb1\xaf\x8bK\xeb\xfcfRO@G*P\n\x04\x00\xb5A\xad\xc4\xff^\xd5\x16|\xb9\xc9Ic\x1b~\xd9i\xd7z\xa7E\xc9\xc2`\xf1J\xecvdn!\x13C\xa5\x82\x15r\xb1\x99\xc3\x1f\"\x81\xb0\xac\xc0\xe4\xbc$y\xe2\xc7\x8f\xd3\xc00\x05\x9b\xfad\xde\x92\xbc`\xf9\xd6\xb4o,\xea7Z\x19\x9d\x0cd\xa0~\x8b9J\x18\xe0\xb7\x0dx\x92\xaf\x8b\x17\x8bc\x92o\xa3\xc0\xf8\xe2\xba~1`,\xb2\xe9\x8de3Z\x98q3\x867.(\xe9\xf5\xc5\x9e\xaa\xdd&\x7f\x7f?\x1aye\xfa\xe3\xb1\xc9\x80=\x87C\xb80#\xd4)\x825fY\x0f~\x06\x87\x10\xd9Ud\x04^\xef1\xb2\xe3\xfd\xce\x19\xe8\xcf\x0cC\x8eK\x7f\x9d\x99^9f\xafpv\xc3\x04\xfd\xa8\x86\x16\xca\xbdK\x1caVN'\xcd3\x82\x92\x00\xed!\xa1\xb6\x9f\x9a\xf3\x87@\xa7\xb1\xb5\xaf*1\x05\xa6\xc6\x0e\x065dN\xb0\xb9\x1a\xb3\xf2\xd0\xaa\x16\xb5\xd5d\xe8\xc5i\xc6\x0c6\xeaf\xa8(\x8d^\xe5:~][S\x82^\x94\xac\x1a\xab\xd5\n\x9a\xaaK\xc3\xd7(u\x91\xe8\xc6n,3\xd5\xae+bpl\xd8\xe4\xf1La\x9e\x011IW\x86\xce\xc6\x9aP\xa0G\xb43Sc\xa2\x1e\xd0B?\xa0\xed\xa5uC\xda\xc2.pu\xcc\xe8V\xcb\x8c:\xaf\xe9\x11\x04\xe9\x02\nq\x08\x8dx\x8d\xb3\xb5)X\xc4\xe8\x9f3\x08\x8dB\xbf\xf4g\xb0\xb6An,J\xb74u\xcf\x98\xdbdP\xf7\xf8\xf99\x83\xa5M\x0f\xe7\x9a~}\xac\x85\x9fk\x17\x1e\xf9\xe6\xb9<\xda\xb7\x02\xeb\xdd\xb5\x16\xd0?\xab\x8a/\xb1\xca\x8a\x19\xab\xac\x98\xb1\xca\x8a\x19\xab\xac\x98\xb1\xca\x8a\x193+f\xdd\xabX]\xde%\xfe\xb8&I:?\xc1\x17K$\xbb>\x99%r\x90\xfb\xbb\x9d8\xc5\x14\x9e\x945\xd4\xb1\xf3L\xb5\xb9\xc9c\x1d\x10\xb3\xd3\x08\xee\xc4\xe4\xe5^\xa2\x0c\xa9\x83bR[S\xca\xd3A\xc7\xcc\xea\x83L\xee\x15x\xcdc\xee\x98\xbc\xcaV\xa8\xa6\xe1\xb1\x8e\x86\xd3\xdeh\xf99\xe4\x984\x829c\x085\x06\xbc\x9a\x19\xd4\x9cZ\xcd9\xd4\xba\x91\xb6\xcfA\x85\xa3\x8d\xfa\xa4\xb8\x949\xb9y8\xb0\xda\xfe\xd7\xedp(T\x87C\xa1:\x1c\n\xd5\xe1P\xa8\x0e\x87\x82\x1d\x0e2\x92_||\x92\xaf\xd7\xa0\x7f!\xf9\xe2\xb2%\xf9\xc2/v\x97 Z\xc6\x1cXo\xa1\xf8Zn\xa1\xeb\xc1_\xf5\xf7\xd6\x17v\xea\xcf\xb2\xb7v\xd6/4u\x0b\x8b4Ugp\xfa\x8f;\xf7\xae\xc7\xa6\x157\xffDB\xd1\x97\x94B\xda\x94BO0\x9f9K\xff`4\xe5\x03\x9fO\x1ed\xd7\xc8 $\x17\x06\"i\\\xf4&\x0b\xfd\x92\xb0\x86e\xc6\xdbO\x9e{\xe8\xd2d\xf2\x03K\x9d\x83\x82\xae\xa5\x96\xfdG\xa9\xd6\x90B\xe9\x8e\x13\xa7~\x18%K\x96\xd5\xb8\xf4\xf8\x9f\xc7\xa5_n\xb4B\"\xc5[g\xe1G1 \x07\xbf\x8bn\x85^\xb0\xc9s\x92\x94\x1cC\x0c\xd2\xeb\xef\xef\xb5\x82(\xba\xde\xb9\x1b\x0f\x0b\xea\xd1\x9e\xe5$tF\xdc\xdb\xb0y\xff/\xbe\xefk\xb3\xa07%W\xfa/\x8e\x0dmw{S\xfe\xbb\xaa\x1a\x7f5\x07$\x8e\x1f\xebU\xfaQ\xb2CN\xfa|XK rf\xaa'|\x9d\xce\xa3\x98\xcc`z0\xb4/N\x94d\x1b\xfbTCut$\x9f\x05\xfe\xba\xf2\xe5,\xf6\x03\xb2J\xe3\x90\xe43p\x18\xea\xc0\xfc\x02J\x7f\xa9y\xab\xbc\xc8\xd0\xbeE\xceu\xdf\xee%*j\x12M\xf5k\xd5\xc1_c\x8aS\xe6\x1b\xe2T\xd8\xe28\xa0U<\x84U\x81qs\x14\x94\xdcn\xf6\x81\x13x_O^*S\xf1R\x99\x8a\x97\xcaT\xbcT\xa6\xe2\xa5\xb2a%\xc53\xca\x15\xb4\xeeb`L\xa6\x89\x9cY\xe0\xc7\xa6\xfbR.,\xfb\xf8\\X\x08\x87\xf0\x84\xb7\xef!\xebAwO\xbb\xcf\xfa@\x1a\xe8\x84\xd7v\xf0\xa4yYse\xc0{\xa7\xe6\x96\xec8%\x11iK\xfb\xa4Wmn\x19|\xc4B\xa3K\xbf$\xd2\n\xae\xe2\x8a\x8a\xa30*\xbfO\xcfg\xb075\x12\x0bGI\xe4#\xc3.\x86+a\x80`P\x02F\x18\xc0\x13\x81H\x95\xc3\xd8?\xacq]4\xa7\xbef\x96\xac\xcdc\xaa\xd3dx\xb6E\x90\x8cD\x9boB;\x14U\xa2\xb7\xa1#\xf8d\xfel\x8c\xcf\x14\xe7\xde\xa34)6k]\xfeD\xa8\x9c\xd62?\xf7\xd7z@\xe6\xb5\x16\x15\xbcf\xb6\x1e8\x1a\xc2\x1eC\xe5\xb7\x96\xf9\xe5\xea\xb9E\x9a\x8e\xcd\x003\x0ep\n\xbfq\x9d\xefYE\x1c\x0dk\n\x9c\x82o\\\xe759/\xbf\xcb\x89o\x02\xcf\x18\xf8*Z\xae\xe2h\xb9*\x1f\xa5\xa1\xd1\x81,d\xef4R\xf0\x99\xde@\xef\xed\x08\x8bg\xe2Z\x91\x92\xe4\xbfD8[\xfe\xf7\x17OC\x92\x94Qy\xe1\xfa\xdc\xe7<\x1fyu\xd9\x94\xc2\x19s\xd3\xf7\xb3\xa8(Gn\xf7\xc8\xea^[,\xa7\xd9\xe8\x1c\xdb*\xae\xcf?\x9a\x93\xdf6\xa4(\x1f\xd9\xf7~\xddBb\xfai\xc4\xccN*Wq[\xf8,\xc8\xde\x98\xd5\x8c\x0c%\n\xd5\x03}\xfbK\xd1>\x12~=\xec\x05\x1c\xc2\x92\x89\xc7z\xc09\x02V\x07\x85\xd1[\xed\xca\xaa6\xcf\xd3\xf0b\x82X`\xf0zpB\xbf\xf4\x19\xe4\x04c6f\x907#8\xec\xdf\x8e\x92\xfa\xdd(\xd1\xd5\xfc\x1a\xc3\x9c.k\xaa\xa9\xae\xb9\xd8m\xb0\xa7\xa7\xc8\xf0\xc3\x0dpW\x0d\xeb\xa3\x03Q\xb2\xf5\xe3\x88e\x070\x0d\x8a\x93\xdf\x0b\x03\xadk\x8b\x0e+? c\xf2\x82\xdfT\x8f\x9d\xee\xbc\x0b:z\xd5\xc8\x8d\xce@\xaa\x91\x13\xab\n\xa3bp\x9a\x1ej\xca\xae\xee\x8e\x86\x13\x96\x91U_P[\x87\x11\x97i\x9b\x84Q\xa9mX\xd5h1\xa0\xc19\xa6\xa0(\x13\x08\xfc$ 1H\xd6\x86u\x04D%\xb50*\xd5PF\xeck\xa4\xa9(\xd3\xe52&O\x05\x99\xd1\xef\xbc\x87\xe0<\xc2\x1ebG\xe8+u\xd5\x02\xcd\xd2\xb3\x0c\x0e\xa6\xf9X\x95\xeb\xf8 \xd6q\xd8i\xbe\xdb\xf1N\xceKq\x8c\x89L\xb4\xc0\xca\x92\xa9?`\xf4U\xe3\xf8\xbf\xd5Oo;\xf1\xad\x89\xeb\xa9(\x81\xc1\xf9Z\x81\x9d\xad\xe4\xcb\x9a}\xa9L\xea\xd4\xbb\xab\xf0.k\xc7\x9c\xd4\x87\xd1\xaay\\\xf6D\x1eq|\n\xdf8m\x02\xe0\xf6\x04\xe0\xf8\xba\xef\xfd\xfe\xbe+\xbfW\xf3\x17\xca\x1f<\xaaz\x10V\xcf\xdf\xb7\x95\x03\xdb\xa6x\xda\xe5\x97\x9b<r\xfb\x08\xee\xf1\xfa\xcd\xcfH\x13.\x8a\xdcO\xa5\x8e\x1f\xe6nAz>\x98y\x05\x89\xd9\xfdY\xcdLDU\xde\x10T/\xa5B\xbd\xa4\xd0\x1cQ6\xf9\xe6\xf9:\xbe\x19y%)J*\xceJ\xe1(\x83\x8c\xcbf\x02D\xab\x08<\x84\x84\xc7\x80\xd0\x9e\x9e\x9e\xafYu\xb0\xe6M\x99\xe7P\xb4\x00\x97w~\xef\xf0\x10\n\x9db=\x86C\xd8C\x8e\x0f\x93\x17\xfe\xfe\x9e\x8e\xb2\x903M\xc4+HyLY5W'\x1c\xe1fW\xd4\xb0\x1e\x8d\x9b9\xf1\xf5\x9eH\xc5?\xd7\xb1V\xa1\xd7P\x06(\x12\x9cK\x94u@\xe2\x82\xe0\xdc\xb6\x92\xf3\x17x\x0c\xb8\x0e\xce\xb1\xaa[\xfa.i\xbb\x83L\x88\xacEMc\xda\xcf\xb5)\x0d\x17\xf8\xd97\xad7\x14\xd1I\xafXvK\xb7\xe3R\xae$J\xbcE\xe2E\xc9\x82\xe4\xc7X\xe2\x7f\xe4\xe6<\xdaF\x9dg\x8d\xbe\xb7\xa0h|\x8c=\x16/\xa6\xa8\xefT\xcc\x07+\xb0\xf0K\x1e\x95\xe4E\x12_H\xf3]*\xe6EL{kf\x14\n3\xa1\xf7Lj\x19B=~\n\xf4\xcf\xb5\xa44\x99q\xaf\xf0}\xa2\x90\x90\x0d\x8bOw\xd1i]bc\x0c\xa9|\xdc\xa7C\x06\xee\x92N\xed\x0e\xf8\xe3\x0f\x08G\x0c^\xfa\xf96\x03>\x14\xedl\xe8p\xde%\x98\x89\x82`\xa6\x1d\n\xac\x82\xa3\x84=\xa7Bl\xcb\xe0\xea\x95y\xb4vYA6\xbd!\xb6\xb1\x85\x95ek9\x99\xe8\xc7\xba(\xb0\xb3\xc3J\xea\x8eUh\xa8\xa6k\x0c3+\xd9\xf8;v\x8aURc\xbe\x14^\xc2\xfc\xa8\x0c\xc9\xef\xe5\x96\x8e\xeb\xe9J\x7f\xdd+\x10\xd0\x1f\x0f\xee\xdf\x1a\xfd9\x8a\x10\xfc\xf9\x1c\xc2\x189|\x92\x06\x9bK\x96 \xe2$\x88\x15\x94\xa1\x1cB\x98\x068\x0e\x8f\x9c\x93\xe0Q\xba^\xfbI\xe8:A\x9a]\x98Sd\xc9\xa8\xd4\x07\xf3\xcc\xf0\xb8\x12R\xcd\xb4\x95\x9ck\x88\xeb9%W\xe0\xfd\xae\x0e\xce\xac\x8bK:\x8fX\xee&\xd3\x17\xd5T\xb2]\xbf'\xa3\xd2dQ\xaa\xb3\xcb+\xdb)\xc9y\xe9\xe7D](\x11P\x14CTj)\xbb\xf0\x8ezrs\xe2\x87\x8c7b\xb6q5dk$tZ\xd4\xa0V\x89A[\xc52/\x91\x0bT\xb0E\xf2)\xfd\xa0\xe6\xf7\xebP0\xa7\x7f(m\xe8\xa14\x95\x9dJ\xf4\xc9\xf4\xbe\xecX\xa2O\x1eLUqlj\n$\xbc\xd1N$\xa5\x08(\xe3&\xab?U\xd9|\\gE\xfc\x90\xe4EW$\xa5\xe2h\xe9e\x9bb\xe52T\xc3\x84\x9d\xec\xef\xc9?\x9d\xb1x\x9d\xe5\xd1\xc5\x18N\xfe\xf8o\xce\xdf\xb0zf\x9d\xa1\x08n\xc0\xdf\x9c\xbf\x8dx|\xf4\x06M\x12*V\x93\x9e\xaa{\xfbrTC\xb1Wa@\x0e$9C\xc5U\xe6\x17\x8a\x8dP94.\xc6h{\xea\x9c\x1b\xdd)\xf2HR\xe6\x11)\xa8\x90\x04{.\x16\xba\xa1\xc7i\xe6%\xe4\xbctG#/L\x132\xfa\x9a\x8f\xc2d\x8e\xc4L`6\xd6\x91\x15\xefZ\xe3\xc8\x0d\xc7p`R\xcfS\x9e\xedd\xdfP\xa1b\x8dPS\x89#\xa6\xb8(\x12\xad\x1b\xab\xff\x038\xdd\xd5\xde\xc2\x0dpf\x98?m\xcdW[N\x0b\xfa\x84\x00\x02\xbf\x0cV\xa0>Yc\x86\x11\xb8\xc2}{\xc1{XD\x89\x1f\xc7\xaa\x15V\xaf=\xbd\x98\x12%\xf3\xf8\xa1\xd5\xf8\xed*\x06`h\x0e\xf8\xd6\x89GP\xae\xf2\xf4\x8c\xbb\x07u/\xc9<\xfc\x97\xfa/\xfaA\x8e\x8a\xf34\xbc\x90\xa5\xd6\xa1 \xcez\x13\x97Q\xe6\xe7\xe5\xcdE\x9a\xaf'\xa1_\xfa\xcc\xd1\nG\xe6\xbc|q\xfc\x9a\xfd\xdd\xdd\xbb\x1aNa\xa9\xd9\x8f\xc0-|:\xa7\x8e\xb9f_\x82q}\xaa\xfdy:\xc6\x8c\x1c\xf2\xfd\xc9&\x057\xe7\xc51\xf9\x8d\xefN\xdas\xf7\x14\x0e\xe1\xac\xbb;\x97\xc6\xdd |\xf4G\xfd\x8dw\xca7\xacq\xfb\x01\xcf\xf5qd\xdc\x82\xc0\xb7\xe1\x91v\x1b\x02\x9e\x08|\x0f>q0h>J\x8a\xd2O\x02\x92.j\xae\xdb{\x12\xa1\xb0\xd0\xda\xa0\xe7t\x83\x1e\xfe\xffq\x83z\x89\xbf&\xf4\xef\xaf\xcb\x8b\x8c\x1c\xb2{\xf4'\xdf\xb9(P\xf7\xde5\xeem\x90\xe25X\xedq\x10\x98\xb4?F\x8c\x91\xdb\x05m6\x9f\x1e\x9f\xe8\xb5\x87\xc1\xfcg\x8d=\x7f\xa6\xdf\xf3`\xd94\xf0}x!\xf6\xfe|\xe8<I\xa8\x1b*>\xabe\x0f\x1b\x94\xb7#E\xb5 \x84\x97\x13t\x07uo\xfe\xeb_\xc9\xcd\xe5\x18\x1c\xa7\xab\xd8\xe3\xe3/e\xe5\xac\xdb\x1c\x8d\xcf\xb9\x93[\x8aJz\x9b\x8f'\xc4^7F\xefK\xcc\xca\x97\x98\x95O\x11\xb32 Z%B\x95c\xb0\"k\xab\x9a\xd7\x0dp\xab\xcf\x0b\xf1#29\xd5 c\xa0.K\x1b\xb3\x072\xbeD\xc1/\xa0#\\U_\xb0\x1e\x19\xe2J~\x0dCiZ>\x98\x97\xad\xe3-Q\xde\x148\x01\n\xeb\x1f305\xd6\xff\x9aV\xf0n\xba\xa7\xb1\xd0\x17\x8e\x82H\x9b\xf8\x10\xebr\xdd*p\xcc\xa3\xdb\x1b\xb3x\xfd\xf2c\xff\x00\xca7\xbd\xd2\xad\xea\xbc~_\x91\xf64\xec\xa6\x993;\xae\xd4N+\xbcW\xc3\x95h\xc6\x94\xa3M\x1d\x17o\xc5T\x0e\xf2\x98wF[\x89\xc5\\\xe7[Q\x8c\xdb\xa8\xf6R\x16\x8a\xe1d\x16E\x92\x01u\xfcL\xebdY\xb2\x9b\xf7\xce\xa0Z`\x85\xbd\x95 \xb6%\xbbM[jw\x05\xdf\xf5\x8c\xaf\xf9\xc2\xf7} \xbe\xef\xcfg`\xfa\x14gF\xcd\"\x99\xce\x0d\xcb\xb0\x82|@\x90\x00s\xb1\xa8\xc2\x17\xf91\xac\xd1\x96D\xf8\x02'\xf6\xe6\xd8\xd8\x82\x04\x9b<*/\x1e\xd3}\x1d\x95\xa6Z\xc7t+\xe5\xc6x\xdf\x98A\xf9\x9br\x95\xe6\xd1\xbf\xc9\xf7%\xa5\xb0{\xdd@\xb6\xe6\x15\xb0W\xc4Qx\x05\xf60\x8c\xd4\xe5\xc5&\xff\xf8\x03\xfd\x9d\xae\xc4\xea\xc5\xbax\x890\xda\xcd\xb0\x96\x8a+\x89\xa3m\xce\x86z\"\x02m\xd7\x9a\\\x91>\x84\x94u\\\x9b\xdf\xaa\xb1\xad\xd4\xc6\xae\xcaAX\xb7z<~\xbaJq\xf5\x1f\x9b\xeb\xea\x93zo\xc8\xe3T\x03\xb7ht4P\x1f\xad\xd7\xd9wC\x15Xj\xad6\xd9~\xf8\x80\xd2\x88\xfbP\x89*\xf4\xa1\xc9\x87\n\x1a\xf94\xd2\xe45\xbe\xcchD\xfb\x9e+n\xac\xd3\x90\xc4\x942\x8da\x8f\x07\xaaz\xe4<\xf3\x93\x90\x84#\xa1\xea0\xb8\xc6\n\xf8Y\xff\x13\n\n\xd0\xdf\xc3\xf2\xe9\xdd\x98\xb4&\x18iW\xb5&\x87\x89\x11&\x10S\xc8\xe3\xc8\x94\x1a*S\xb8n=ZE\x9f\xba-\xcd F\x99[\xac\xfeK\xee$\xd8\x86\xeaOI7\x9a\xf7\xc3\xf0^6\x11\xbc\x1f\x8e\x0d[E!9&\xf1\xe2Er\x84\xd3j\xe2\xc5\xf4+\x0d\x15\x1bV\xa1\xb5B\xe7C\xf7D\xd2\x89\x07\xac\xf6F\xdes\x0c\x85!\x1a\x90\x0f\xad\xfd\x11s\x80N\xf0\xf5\x94T\xa3\x19\xb4cw\xd8\xaa\xb6\xf3\xf0 \xb8z\xd4\x82\x98p\x08\x991\x956P\x98|\xaa\xe8\xcd\xfe\xfc\xb2U\xe8b\xae.\xdcl\x88F'\xc1\x0c \xea\xf2\xb6\x0d\xb5\xde*\x8a\xc3\x9c$\x943\xfa(M\xebB\x0d\xcd\x0d\xc9\xc2\xcc\xaasM\xc3Q\xdaxi\x05\x9b\xbc@\xa5[\x96F\x892_\x1c\xf4\xb0\xb7\xba\xcb$\xe7?\xed\xe0v\x1fX\xab\x92\x04%\xaa\x1368\x8c\x8b\x95\xed\x12\x1eP\xe4\xd4\xc7\xa0\"|\x17S\xf6\xcb\xbf Ar\x985a\xbb\x87\xa7\x91J\xf5\x85\x02\x990\xb0h\x1d\xd1\x92\xe8\xb5\xee\xc1\xee\xfc\xeey\xde\xfb\x0e\x89k\xb0C\x1d\xaf\x0f$O\\\xf8i=\x10GO\x9b(v\xdc \xbb\x14\x87~\xbf\x1e\xd2\xf83\xf0\xf9\xbb\x96*\xc11\xfb\xa10\xdc_g\xe5\xe0\xe7!\xc1\xf8A\x19m\xc9k\x7f>\xc8VZ\x99aC\xbf\xf4\x0bR\xa2G\x8e\xfc\xc8\xb6\x92Q\xaa^\xa8\xd5\x12\xbd\xdb\x97\x13JP\x13\x98,\xa2\xa5\x02\x8a\x89%\x86\xc0\xce\x00\x13QW\xb9\x86\x9fS\n\xfc\n\xf9\xaa(Y*E\x18G\xc4\xef#\x8b\x18\xa0k\x1b\x12\xef\xc6\x0d\x97~\xba\x02\xb4HS\xd4\x98\xc1\x98R\xf9\xaa\x8d\x99\xc4\x83\xefc\x0b/W\xc9j7\xb2\xce\xb0-^\xffIg\xafq8\xb5\xe0ly\xef\xc6<Vsh\x8d\x91\xed9\xbdV\xbc\xb7\x9d\xe6{\x07\x95:\xea\x1d5\xe1\xb2)\x97\x0cq*\xd5`\x91mB!\xbf\x1e\x8ef\xfbB\xe5#N\x07\xa3\xaf\xacG\xb7\xba\xdf\xd9\xc5\xec\x0c\x7fL2\xdd\x8bt\x8f\x96\xae\x83/\xfc\xc2\xf5\xc5W\xa0DW\x02m\xf4\xc6\xedV\xb5/\x7f>XG\xee\xc4\xd1\x90\xefG%Y#\x9fY\xd3\x9a\xc3\xc3ff\x9d\xc6\xd9\xf2\x10\x1c\xbe\xb3x^\x96\xc1}\xd3\x07\xadt\xba\x16G\xc9;U\x860\xa8\x92\xd9\xf0$8\x8e9\x9dJ[~\xa8\x86\xa5\x1aDD\xc7{\x14F%`\x8c)\xcb\xbe\xc1\x1a\xe1wX\x154\x8dqd\xd7\xa5\xe0\xe7\xc8\xf5Z\x08\xda\xb3\x88'\xe7i5n\xbbBlTW\xb6>l\xc7\xd6\xb9P\xcc\xb1Y<\x92\xcb\x8c\xe8_}\x05\xe9\x18\x8c\xcb\xa0\xa9\x84\xa65\x071b\xab\xad\x94\xd2.M\xa2\xa1\xf55 \xd5\xa6;h\x1d\x06\xda\xc4'\xa4\xa6\x993\xd0\x14\xb3\x14\x14Y\x97\xef\xb4\xf7\xc0(1~\xdef\xa4\x05\x15\xb1z\x12S\xca\x9f\xf4\xa4\xb2H\xbc\"\x13\xbe\x162\xa9l\xc3\x1f\xf4\xda(\xf8\x83\x9eT\x16K\x0dL(\xfe\xb8qS,W\x1b\x98\x16\x1f_<\xcbl\xc53\xbd\xcfn>\x06\xbf\x7f\x92wy\xdfk\xe3\xb3+\x92\x84ozb\xa2\xc2g7\xed\x8b\x8az\x9f\xdd\xbc6X\x1d\xb6\xb7\x8e\x8aG\xcde\x89\xe3\x01\xabE\xc92\xca\x17\xab\xf4\xcc=a\x94\xb3p\xc6@\xde\xd2o\xf7\xe9\xc0\x989Q\x8c\xbb\xe3\xa5+f\xe9\x0dSH\x85\x1a\xdfN\xa8\xb9\xe6\xbc\xbb\x0dc\x9c6\xf8V\xdd!\x1c\x19B\x9f\x9a\xda\xf8\xe6\x92V\xc7\x05J\xb2Q\xdb\xdb\xb7\x03\xe2E\xc5\xf1*=K\x9aK\xdf\x80\xa6\x1c\xc0[\xccB\xa0?\xa0\xed8\x12\xa6\"\x9d\xa7\xe7J\xdeX\xd5L:\xeejX~o\xa9\xfbu=h\x1e\xb4\xc6\xe3\x93\x84Z\x0f\x8e\x90\x9d\xae\x9ax\xb5ZYY2'P\xf6\xa7\xa9]~l\x97]C\x16\xde\xa7T\xa3\x9f\xf5\x06v<\xabc\xe3\x19\x9d\xe1]\xc3\x19\xed\xea\x1e\x82\xf2\x10\x07\xbe\xad\xd0^\xe2\xf06)g\n%\xc6\x9c\x89^\xcc\xa0c\x84\x16G5\xe7\x02\xfc\xa2\x88\x96h\x931\xeb,\xaa\xe3\x806<\xfd\x1aJ\xf8\xa6w*|\x0d%\xa5\xfcj4\xda\xf2<6\xf5\xa1Pj\x82\xed\xaa&s:\xb4d$\xba]%\xfd\xf6V~\xf1\xe2,\x11l\x0c\xd3\x16b\x04\x02\xeeZr\x92\xd3\x13(9\xc9\xdf\xdaF\xc2B\xe3x\xef\xe3D\x1f\x01S\x1bw\x89\xea\xc4&\xda\xc3\x06\x9aCN\xd8\x81\x9a\xc07PV\xb3\x9b\xe8g\x17\x1a+\\\x9e$\x860\xc6\xdc#\xc9fMr\x7f\x8e\xe7a\xebO,&1\xc6\x9a\x88t\xd3o\x04\xd0\xde\xfe\x18x\xf64\xba$X8\xd1\xcd\xbd\xb3<*+\x88\xd1X\xc1d\x12\xfa\xc1w\xe4B\x1a!\".\xdb\xa0<\xa8\x17\xaa\x9a\xff\x92\x87\x9fh\xa6\xa8\xe27(\xeb\xe66P\x89\xee=^ \x12\xd3B\xe5\xbd\x9c\x84\xe2\xea\xf7\xe5\xbd;\xeao\xb3\xc8\xa8\x8c\xae\xd0\"2\xd5\xb9\xb2\xe2U\x80G>\xee\xb9\xa4\x19\x92Z\x8eD$dB\xce\xe0\xf5EF\x8e\xf2<\xcd]\xe7\x91\x9f$i t\xcf\x80\xcf\x8e\x18\xf0\x0b\xf0\xab\xd6T\x825g\xcbT \xf8\xa014c\x87At\x9a4{\xf9\x8a,HN\x92@t\x956\x08+\xbfH\xfeV\xc2\x9c\x90\x04\xd0\xe5\xd4\x8f\xa3\x82\x840\x81b\x93\x91\xdc\x1d\xb5 \xe8\xb0H\xa8+\xb9\x0f\xf5\xfc\xee\x95h\x97N\x11m\x1d\xd8;\xc4\xcc\x9dt\xf2\x90\xc0V\x13\xd2z\xc2\x98}9\x8e@c\x9e\xdc\xa8\xcd\xba\xf2\xcd\xb1$\xe5K\x81|/\x16nd\xe9\x1e\x0dR\x0c\x1c\x82'\x18\xa5.\x1f\xd2W_\xb1\xc21\xa8\x84V\xa0\xcd1\x9dlz\xe0\xe6\xa4((\xf6\xae7E $*W$\x879a\x1fH\xf3\x06\x1e\x8d\x81\xe2\x99\x037\xaa\x86\x14\xabB\xea\xedX\x9fQ\x8c\x87q\xb1s\xad\xfd\xaaa\x97\xd2\xa4(\xf3\x0d\xe5\xcdL\x96o\xbb\xf8\x8c\x9a2\xea\x8b'\xd0K\xd0\xc2\x996b\x1fX7+\xda*M\xc9'.\x05M\x1cq\x87 \x97\xcfT\xd1\xc2(x\x08\xd2\xfb\x1c7f(\xb9\n\xb4<\x94\x8a)n4\x86\xa62b\x0c)\xbd\xa5-\xd7P\xac\xd2M\x1cV\xef\xbc\xc1l\xa5\x96\x95\x03\xb4\x019\x82\xf5\xc0\xed\xa1\x9d\xd7T\"\xaf\xc2\xb70\xa5s\xd5H\xeeY\xf3 \xd3\xb7\xf0\xb0\xfd\xe7\xacg\x1a\xef^Q+\x01;\xdd\xd7\xaa\x02P\xd0\xa03\xcc\x9f\x81\xa5p}\x910\x1f\x80\x9a$\xbc#\x17\x85\x9b#WNZu(F#\x8flI~Q\xb3\x8b\xdaC\xae\xd1b\xe2E\x05\xf2Ac\xb6y\xb2B\xc9\x0c\x01\xe2\x14\x1e\xfd\xedn\xa2\xb9I\xd1\xcf\x94\x9e\x03\xfd\xeeiW\x12:\xddKO\xa8\x9c\x1c\x9d\x10m\xc7\xe4{\xa0\x8f\xb4\x94S\xef\x18\x06\xbb\xc73\xf1\x9e\xae\xd7\x1b\xdc\xa5\xad$\xc3p\x08\xd1\x18H\x83\x89\x8f4\xbc\x8cNa\x06R\xa5\x19\xb4\x07\xf2\x9e%\x88t\xf7E\xdd\x1d|r\xdd\xb4z\xa14WR\xca\x9f\xdc\xef)\xe9\"\xfe\xa4\xa7\xef\xf3\xf9\x83\x9e\xbeo\xc3\x1f\xf4>U\xf0\x07=}_\xcc\x1f\xf4\xf4}\x81T\xdf\xb7@\xf0\xa0s7\xe3\x1f\xb9\xd7t*\x08\xd5\x8a\xc0\xf0\xe3+\x02\xf5e\x8c\x86(\x02\x15\xc1\xfb=\x97\x0c\xad\"0\x96*\x02\x83J\x11\x18\x8f\xc68\xd7\xfb_\xc3\x02\xbe\x81\xf8kXP\x81%8Y\xb4\x15\x81\x0b;E`a\xab\x08\x8c\xec\x15\x81\x01W\x04.yd\xb2\xff=\xaf\xa9n#\xc7\xf1>\n\xdd_\xcb\xaa\xe0E\xc5\x8b\xef\x8eoa\x01\x87\x93\xdak\xa0p\xc6<\x1e\xc7/\x1cz\xae\x9c8a\x1d1\xe5\xbc\xed\xb5\xf3\x9e\xf7\xeeQ\xc7\x13l@\xff\x1c\xe8\xab\x86\xf0\xb3,\x11\xde\x15h@\x15\x8aN\xce\x8f4\xe7G\xbc\xc0\x93\x1b\xbe\"E\x1aoIx\xbc\x99\x979!\xeeI\xb50\x1d\x85\xaed\x85\\\xbar\xf4\x900\xa5\x17(Z\nU\xdb\xf4\x02\xb1T\xa1\xba\xf9\x04\nU\xbd*\xd5F\xe5\xca\xb2<X\xba@ 'c\xa9\x9f\xf5\x11\xd6\xba\xee\xe7\xa6\x01n\x0c\x85,\xea~\x18t\xbfh\xd5\xf1B\xbb\xc8C\xee\xdf\xa4QG\xc2!\x04^\x98\x06\xe8/AE\x1a5\xec\x8a\xc12\x94@\xdds\xd1\xf0\xb2P8\x8fQ\xf16\xae\xe2 W\xf0\x0d\xec\x8f*z\xb7\x89%)\xb0\x81c\xc4\x96\x92\xcdJ\xbb\\o7\xca\xce\xee\xa3h\x9a\xa4 \xf7\xc1\n5C\xac\xaa\x15I6\x95\xfa\xad%e\x80\xba\xae!j\xf0\x0b\x06.\x08\x97\x0et\xde\xf8\xb2\x0d\xfc)\x83\xffq\xb3\xce^\xa7\xb4\xdb\x06\x17\x95\x85J\xd1^\x10&\xf5Z*\xdb\xb7\xf0\x90+\xdc\x0b\x88\x8aI\x9a\x91\x04\xad\xfe|!\xa4\x9f\xa0\xfc\x9b\xaay\xcc\xa8\xaan\xb9r\x010\x92\x0bq\xf1\xf1n\x18A\xae\x11do;X\xc3\xa6\xe9v\xbb\xcc C{g\xa4{a\xbb\xd4\x0e\xf4,\n\xcb\xd5\x0c\x9c\x83}\x8dC\xc4\x8aD\xcbU\xc9\xa0\x06wyS\xc8\x99rq\x9d\xc7Q\xf2\xee\x87\x9c,\xf8\"\xff%\xf6\xf3%\x99\xf8y\x9e\x9eM\xc2\xf4\x8c\xads\xf3\xae\xca\x83n\xa4\x99\x88\x0b]\x17\xa2\xe2EF\x12\x12\xce`\xab\x1a^\xdcH\xa7\xd7\xce]\xa1U\xaa ^\xad\xebO;\x86\xe9\xc8\x98\x07/\xc0,\xa6\x8acyM\x8f\xe0\xb8[8\xa5{\x85,B<#A\xf7\xbc\x0fP\xbe\xcc\xaa\xe9z\xeeg:\nD\xafm\xf5\xb1\x1f\x0b\xba#(\x0d{\x9a\xb8\xc1\xb8\xfb\x19\xc3w(y\nYz6\x96\xc9\x04\xbb\xb2\xed\xddQ\x90cz\xf92C_\xfcv\x0c{\xd3QC\xb9pH\xa91\x13 .\xcf\x08\x11\x15#\x14\xbfU\xd5\x07\x05\x8e\x02g\x98\x14U\xcc\xd1\xb3\xa8(\xd5\xcd\x88\x855L\xe2\x11&K\x95#\xfb\xd2\x94\x0b\x85^ \xd2U\x8dc\x8d\xb8Z\x16=\x8d\xff\xa2\xb8\x84WQ8\x18\xc1\x80\x158\xceb\xff\x82Q}C)5h\xb9\xff\x9c\x99\x81\xdb\xdeL\x1a\xc3\xa8\xb8\xec\xdd\x95\xc4\xd54\xcf\x1a\xb4c\xf4\xea0pZ\xdf\xa9\xf6;U\xe4\xbd\xdc\xedI\\\xdd\xa2I\xdd\xeb\\\x83G\xe6\x88!q\x0d0\x8b\x8b\xcb\xe2\x98\xdb\xa1]\xe0qK\xea\x0cI\xe2z?\x86\x0b\xdd\xbe510&O\x01zEa5\x1f\x0e\xdc0m\xb6\xfe$\xd6\x19*\xf4o2\xd1\x87\x11\xc2 \xe7\xacX\x8b\xca\xd7.=\xfd\xbd\xde\x16\x93_7\xeblR\xa6\x93\x8c\xf2\x85\xbb\xb4|jj\xb4\xb1\xdb\xd5\xdf\xd7\xf1\x01sS\x0b<`\xb4\x85\xc7\x86e\xebE\x8a\x11\x99\xda\xc0\x8d\x0d;\xb1v\xb5 -\xfd\x80\xfe-\x1ef\xa6(\xef#\xae!T\xb5\n\xa76\x9e\x0e\x92 5\x83\xa1\xa5\xf6JA;\x80\x0eG\x8eTU\xeb.\x95h+0z\x8b\\\xcf\xb2.i7\xa0-\xd5\xc4\xb1\xa5\x1fW?:,/?QexO8\x9f\xdc\xf6P\x1bY\x08\xa7):MX\x89L\x888p\x02\xce\x18k\xe8a\xa1\xd718\xf0\xb6+\xc7V\x1a\xc6\xa14\xb2I\x17)\xd39!\xc9f\xdd\xa6\x86\xef\xc7\xe0\x1c%\x9b\xf5\xcc\x19\xab\x1b\x98\xe7\xbc\xd7#5P\"\xed@\x8f\x1e\xa5\xbd\xd6\xf9\x04\xb0T\xc7cL`\x8fs0\xea,\xefu\xdb\x06[e!\x89\xad\xd4\xe59\xe2O\xfaf\x13\x9f?\xb9\xdf\xb3\x8elD;2#\xc8Vf6\x89\xf9\x83\x9e\xd9$\xe0\x0fz\xfdZ\xf0\x07=\xb3I&5\x9b\x84\x08\x9eu\xeeb\x19\x84\xad\x08l\xed\x98O\xb6\x1a\xfa\xb0\xfd\xb8\xf4\x81.\xde\xfa2\xf6\x13\x85\xb3m+ ^\xd0} \x0bim\xea\x90-\xbd<\x94Z\xeaEK\x9c\x17Z\xea\xb6\xee\xfa\xe3h\xa9M:\xe8\xd2*\xb2\x8e9\xfcR\xa9P\x0d\xc3b\xe0\x1a\xcc\x84\x1a\xb4\xe0\x11x\xaf\xc8B\x0d\x14\x0fpH\x0e\xac\x1d\x92\x17\xac\x97\xfah\xbb\x0c\x81\xcc\xfe\xac[\xcbT4k\xcb\xf0\xc0e?\x04\x9b\x8c\xe1\x84[\xa6(-\xc60\xa518\x8di\xa6\x7f\xe2T\xd2\x1f\xcd\xe9\xaa\xfe\xc6)\xc1\xb7\xe8\xb0\xe9\x0f14\x07#\x8dX\xf7\xd1\x04\xc6\xbb\xd8+\xba\xdb\xbcX\xa1zK\xb3\x05+VOlb\x1cO\xe1\x10.\xb8\x81N\xa3\xa3/-\xb5\xf2gp\x08\x81;B\x9d\xeb\xd1yI\xd0f\xa0\xe9\xe9\x910l\xb8NH\x8a \x8fX\xeaX\xcdD\x9c\xd7od\xec$\x8b0\xb3\xae\xf2\x85\xe3\xfa\x05?\x0c\xd1(\xe2\xc7/\xad^}T\xbf\xda\xd0\x82m\xe8?\x1a\xc5\xc3\xbb\xfa\xad\x9c\xfc\xb6\x89r\x12\xea\x1a\xf9\x0e\xb3#4\x15\xf8\x86\xb4\x8e/\xd8\x0b\xcf\xfd\xfc\x1djc5\xa0/9\xa8)\x12\xe0u\x03\xce\xc6\xe8\xf0\xdc\xc6\xe4*.\x8e8\xe1`\xc6\xad{\xf5\xc5q;\xf9\x16\x18\xdf\xa4\xea\xc0w6m\xd7r\xeeZ\xdf\x8eBH\xc2g\xea }\x8a\x1aX\x1b\x86\xd9\x0e\xca\xf9\x1d9H\xcf\xf3\x1c\xebW\xdec~jx\xa8\x84\x7f^'\x85\xd4\x06w\xfe\xda\xa0)h\xf4\x17\xdb/\xb9x\xb1p\xaa\x04\x94\xca\xf7\x7fR\xbc\x9f&\xc4\xea\xfdW\x8a\xf7\x93\xb4\xb4x\xfb1\x1c\xc2#\xcau\x99\xa6\xcdBm\xd1N\xdd\xa3W\x81\xbd\xa7\x93\x8f\x8e\x9c\xd8\xd9\xbf\xfe5't\xb0\x1f\xa0#\xab()\xb5\xfdhwad\xc6\xa0\xa1=\xc0\xa98=-\xc9\xb9\xbe#\x8fT\xfa\xc0K\xd3\x94^\x9f\x94v4U\x1b\xafu\x9fo\xa8l4'\x05W\x15=VC\xd4*\xa8L\x0d\xd4Hy\xb4\xb7\xc5\x88\x15\xf8\xe6\x10\xe6\x1a\xce\xad'\x90>\x1d:\xfaa3<\xcf\xfd\x80\xa0\x8d\x18\xb8#\xb9\xaa=F\xb8,\xa9\x90\x1dE\xb4\xebb\x94$$\x9f\x18z\xa7l\n\x1d&\xad\xdb\xda\x0d\xe1\x9c\x12k' z}\xa4\x99#\xa7\xcc\xb5\x9d\xb1\xcb|\x96\xc6\x98\xf8\xec/w\xef\xde5h\\\x17iR\x1e\xb3o:Q\xe9\xc7Q\xb0C\x9a4\xf5`\xc2\xfa\x90jp\x893GG\x99\x1a/\xa9`^h\xa7(\xdd\xe4\x01\x99\xc1\x91\xbc\xbb\xa3Q\x8d\x80\xe7\x94H\x9f\x8b<\xd0\xe7J\xc3\xb4\x95\x0fw\xc7i\xcf\xa2\x8e\x1b\x0bi2\xd9\xae\xd1=\xe9dj\x80\xa2\xf2\xe4\xa9\x8b\xa7\x8e/\xd8\xf2,'\x81_\xea\x99X\xe0\x02\xe6\nm\xa9^T\xa0I\xf5\x1d~\xe8\x9d\xc7\xad&\x85\x9b\x1b>\x91)\xf3\x1f5\xaf-\xe5\xdc\x03?\xfe.\x8e\x96\xc9\x0c\x9c2\xcd\x0c\xf8I\xaf\x8cr\xff\xc9\xf2\x15\xf7\x9c\xd8\xf7\x0e\xc8\xda\xc03\x1amQ,\x026\xf3(\xfe\xff\x82>\x19p\x08\xce<\x8dC=n\xeaw'\x08\xad\x84&\x0d\x04\xb4I\xca\x86G;Vk\xa5\xde~\xa6=\xa3\xef\x17\xa7\x1c\x99\xee\xfb9\xe7dv'\xcc`K\xa3\xa0A\xa7r\xdd\xb0AIy\x80\x1f<\x7f\xd7s:\xf6sc\xee\xb1\x0c\x81w\xef\xb9\xaa\xcb/\xc7\xddT\x00\x16(\xc7\x03\xbd\xd0V\x99\xc0\x0dp\xf0WN\x7f\x9d\xd2_\xbe\xae'F7\x07!\x0f\x1b-\xf1m\xbf\x00\x83\xd5\xab!\x9b\xf1:\x84\x0d\xcd\x00\x86+\x9a\xdb\xe2\x0e\x02\x81\xa1%\xeeIa\xf0 \xe0Q\xdc\x0b\xb8\xa1\xb3\xa8\x8dd\xd62\xf6\xa46\xa8U\x87\xcc\x99\xf1\xb8\xe7'\xe4\xff\xfc?\xa7\xfdV\xf9\xb1\x0f\xa4\xc4\xea@J\xf9\x81\xa4&\xb2\x18\x8dw>\xe1%b\xbd\"\x8e\x02B{s\xa0,\x08+\xae-/\n\x99\xc2CH\xbd2\xfd\xf1\xb8\xfa\x81S\x9a\xf2 \xb2\x8a\x80\xbc\x0c\x19\x07\xb1\xaf,\x1cU\xac\xc9\x074\x99\xb3{\xf7\xee\xe9i\x07h\xe9\x07\xd8\x1c \x0c\x97\x92K\x92G\x18:\xc6\xc1d\x12l\x86\xda\xf1\xfc\xf3U\xbb\x10\xd4\xbc\xaal\x7f\x1e\xd3\x13\xefX0\x816;\xd5f\xce\x9do\xe0\xef\xf0\xed\xa59]\xc9Q`\"\xd75\xa9\xd6EuZ\xd3\xe9>\x8d\x1e\xaa\x8c\xb5$\xd3\x82D\x1f\xabA\x8c\xe4\x19Is\xb5\xb2\xbf^\xe5z\xa2\x0e\x0c&\xdf\xda\xae\xe8\xaf\x1d\x8am\x88\x197\x91,\x1b\x1f)\xa4W\x9a\xd8\xed+E3\xb0F5\x18\x82n G9T@\xa2\x89\xd2\xdc\x8c\x19\xd5\xa0\x81n\x06\xa7 #\xca\x01(\x92\xad@W\xda\xfc\xe9*\xd1\x11U\xaa\x03\xd0\xf1\xa7/\xe8\xd8\xb8.\x89\x8eL\x9f\xfd\x99\xa3\xe3\xab\xabD\xc7$-\x07 \xa3\x01\xad>\xbf#\x11\x0d\x14Wv\x02\xbe\xba\xec XW\xff\xba\x94 \xa0\xaf\x08\x0e\xe2\xb4\xd0\x94K}\xef\xec\xe0G\x98\x19\xfd\x08\x99\xe1\xee\xba9Pe\xca\xcc\x90\x99\xd4M*\xe2O\xa41\xe4\x99*\x86<S\xc5\x90g\xaa\x18\xf2lX\x0cy\xe6\x06\x8d\xc1e\xc2\x07*\xd38=e\x1f\xdf\xe9)\x94\xea\x17+Y\xea\xc1\x83\x07\x12E\xa2I\xb9\xdd-\x14a\x9f\xdcH\xee\\\x05m\xb7&I\x1cz/\x96W\xed`\xd5\x89\xff\xb6q\xb0\x02\xa9\xe0s\xf9p`0;[\xc1\x00\x87+\x18\xe8t\x05\x03\xf3-\xc2\xa0\x9c\x8bP\xe587\xb9uA\x95\xe4\xdc\xe0\x10\x05\x95\x7f\x97\x95'\x0fT>^z\x971\xa8\xdc\xbc\xac\xdc\xc6\xa0\xf2\xf42\xbbR\x01W\xe1G\x83<z\x80o\x1a\xfeVT\x92\xb5V\x10\x04\xee\x04\x16\xf5\xe3\xd3\xe8?\x86EZ\xe3\x9b\x8b(.In\xcf\xc8\x8a\x8b\xef\x82\xc9\x14uR'Ny\x911_0\xect\xdb>E\xffd&\xf4\xb7^\x94\x84\xe4\xfc\xc5\xc2\x95\xa4\x12j^\xa6\xd8\xa0%\xcf\xeci\xe1\xfa\x03\xdci\xac\x1c\xe0\xd6\x03\xdcw\xcc&y(p\xe7\xb1\xd2u\xc4\x81h\x02?\x83C\xd8R\xd2~\xb98\x17\xd8\xc5\xbb\x02\xe0\n\"l`wg\x06`\xedo/\x13\xe0d\xd5GK;3\xe8\xe7C\x1b\x9d\x0b\xb5\xeb\x82!\xc4\xaf\xf6L\xf0\xe1\x9bC\xd8\x18\xc8L\xbf\xc2\xd3\x89\xe7yo\xb5#pN\x9c1\xac\x85\xdem\xbd\x9b\xae\x1b:\xfa\xeef\x90\xa9Y\xdf\x0d\xd6:o\xa8\xcc\xb5:\xbd7\x98q\xc1\x18\x97\x05\x95\xe2\xb96\xe2\x98\xfbF\x8f\xd0\x7fX\xaa\xab)\xec\xcf~l\xb4R\nX\xceB\xc9+\x1d\x8aK\x91\xcb\x8a=\xaad\xce\x0c\x1e\xee\x1ej+\x0c\xfb\x1a\x13&m\xa9B\xa9K\xc5\x1b\xb6v\xa3\xa0\xda6C4\x11\x01=\xd4\xfc\x12\xe9\x8c\xc1>\xa51\xb4\xa4\xd8\x80K\xb1V\x078\x0bvN\xb4\x9ex\xd0\x10f\x0d\\\x87\x9dh\x0e\xb5\xe8\xeb\x1bU\x1fcpZ\xf17\xad\xe7\xbd\xbb\x1dy\x14o}\xb6\xb1mr\xc93UI\x9e\x91J\xf2\xf4U\x92\xe7F%y\x16*\xc9S]\xad \xeb\xc5qRy\xd4\xcd\xea0\x9c\xe9\xfe\xe7\"\x80\xde\x9d\xd3\xff]?\x19TR\x14\xa1/\xf4)e\xd0\xf4\x03\xc8\xa0;\xe6\xf8\x87\xeb\"\x83\xdaH\x89\xc9@i5\xddAZ5\xcb\x8a\xfe0Yqc+\xda\x16\x18D\xdb\x0d\x15\xd1{\x03\xb0d\xc4{\xe8\x9f\\E\xa4\x18J\x07\xa0\x06S\x9f\x0d$n\xc4yP\x81\xce\xc2K\x8d\x83/\xd2|\xedk\x95\xb6\xc0\xb7#\x7f\xe1|m\x94\xaa\xb654F\xaa\x1a\xc0\xd7\xd2 \x15\x9f\xfec\xc8\xa7\xb1\x1c\x1c|\x03\\\xa8d\xe1vKR\xd6\x0bG\xf7\xb6\xfeE\x94,\xafL\xf2\xc6\xa9\x19C%\x81\xf3\x95\xb8\x02\x11\x9cw\xf1\xa7\xb4\xdc\xb9\x97\x17\xde\xca/\xcc-\xe9\xe7\xeb\x14\x8f<ka\xff\x8c\x81\x1f%\x9b\xb5\x95\xf0~\xc4\xe0k\xe1\xdd(\x98*7\xda\x07\x10L\xaf\xae-J\x92\xb5ME\xf4\xb0\xbf\xb2\xf6\\\x86\xa0\xcc!\xb3\xa9\x9a\x18QA\x0c%!V\xf7L\xd7\xa5\xb5\xae\"\xca\xd0\x1e\xb1\xa0w\xdc'\xba6\xe3\x11\x15\xac\xaer*X\xc3|c\xea\x9av\xdc\xbf:c\xc8\xc6\xe0\x8c\x9c\xd1\x18\xe6B\xf4\x9a_\x8d4\x9f\x7f@i\xde\xec\xc5\x06\xe6\x0dtd\x9aT\xe8K\xf3\xa9\xb9o;I\xf3\x96\xdf\xbdBi\x1e}\x85/\xc4\x9a_|Y\xf3\xfa\xfa\xd3\xae\xf9\x12\x1e*g\xc6\xa8\xdb\x12\x1a\x9c\xa5MK+\x8a]+\x81]&\xda\xc6\xdeQB5S\x80\x98>e\x18\x83i.)Y<_\xc7\xe8\xfa\xb7\xfa\x0f\xd9\x13vS\x07;m\x0c\xe3\x84\x83\x81\xf1h\xae\xbd\xf3?\xff\x8f\xfe\xcf\xc1\x14\xe2\xce\x0c\x9c1\x1c\x97y\x94,\xddT\xe7M\xdaL\x94T!\xe8Vw\xe6\x9e\x99&\x83K\xaa[\x03\xa7\xdf\xf2II4=\xbc\x9c\xc2\xcb\\\xfa\xeb:(\xbc\xc6Pz\xe2}I <}\x86\xa7k\x91\xe0I\x14Qj\x8d\xc3&\xd3\x13?\x1e\xfa\xd8\x92T\x8f\x7f\xf6%*\xd9\xb4z\x8c\x87\xc0\x15ef\xe2{\xb2\x97\x0d\xc9*\x05S\xd9\xd9yI3W\x92\x1c\xf9\xa2k\x80|}<\x8be:\xd5\x94?\xe8\xe9T#\xfe\xa0\xa7S\xf5\xf9\x83\x9eNu\xc3\x1f\xf4t\xaa\x05\x7f\xd0B\xf2X\x8d\xe4\xf1\xc7G\xf2\xe0\x8a\xb2\x14\xa5*\x05f\xcf\xbbF\xa6\xc0\xcc\x87+0\x95Y\x8a6R\xc5edR\\~\xb2,Ei\xf2:\xbfH7%\xa6\xdfV\x03'\x1c\xf8\x91\x9f\x04$6\x00\xe7\xcc\xab%\xf1\xe71 \xb5\x01\xfe\x86\xba\xdd\xea\xb3\xb1U\xa8<\xbf\x98\xa4\x1buT\xb7\xb6R\xfb|S\x96\xf6Y\xd1\x9dy\x99\x00o\xef\xf4\x94\xfe\x11\xe0\x84\xd8\x147\x97\x1f\xcb\x94\x0fd\x93\x8aa]\x1f\xaa\x9f6\x1dT\xd4\xfc\x1b\x83\xf3:\xbf\x80\xa8\x84tS\x82\xccdfp\xdd\xd4\x17\xf7\xaeX#V\x12\xaak?i\xe1\xe7\x0c\x9e\xf0\x1d\xd0\xa8\x86\xd6\x01o`\xa8\x19\x9c\xe3\xe8\x0c\xf6jc!&\xc8\xa8\x0f\x95\xebYp\xfc\xcb\xa1\xf2\xe5P\xb9\xbe\x87\xca\xfc\"\xf3\x0bC\x91\x16\xe2E\xc5\xf1\x99\xbf\\\x92\xfc\xc0t\x94\xb0\\?\x1a\x12\x86P~\\\xa4\xc7\xab\xf4L{\xe2\x94\xba\xc3\xa0\x19XP\x8f\xd6\x0bVQ\x1c\xe6$A\xa1\x0e\xcb\xfc\x98?bG\xa6\xb7$/\xa24\x99d\xb9\xbf\\\xfb\xca\x13,\x1d\x7f\x88\xe6NO\xd7\xa4(\xfc%\x01\xc5\xfd\xc9\xc4_\xcf\xa3\xe5&\xdd\xa8\x0b~X\xcd\xa5\x12hu\xab\x0e\x0ey\x83\xb4\x18\xca\x14\x18\xc6\xe2\n@]\xea\x06\x13\xc7\xa8>\x94\x99\xdb\n\xd2\x90\xd4\xad\x15\x0c\xf5X\"V? \xa9\xa4a\xf9j\x9a\x91\xc4\xcf\"\xf6\xea\"\"qXP6 IK\x98\x13\xc8rR\x90\xa4\xc4\x8a\xd4+\x02\x85\xbf&\xc0\xf1\x1c\xd2\x1c^d$\xf9\xee\xe5\xd3\xc6\xb8<x\x19\x13\xbf \x90\x93u\xba%\x90&\x04\xd2\x05\xbe\xcc>\xeeY\x8e\xdc9\xdedY\x9a\x97$\x14\x0b*z\xe7\xe7d\xc0\xf8\xf8\xd4\xa0\xf0\xf57\xe7\xc0\xdbw\xfeV\xcdR\xb9J\x0b\x02\xe5\xca/a\xed\x97\xc1j\xc0g\xf9\xb4\xcd\xe0\x96\xb7\xef%l\xf6\xdcE\x9a\x039\xf7\xd7YL\xc6\xbb~k\x1f\xbf5\xf2\x1c\x11\xd3BI\xb0\xc5\x16\xd5\xee\xf3\x0f\xb0\xdf\xae\xdf\xf6^GE\x11%\xcb\xcfgs;\xafWt\x87\xa5\xdb($a\xe3u\x08SR`\xad\xdd\"#A\xb4\xb8\x00\x9f\x1eoQg'X\xef$\xbe#\xa3$\x8c\x02\xbf$\xd5\xd7$\x1b\xb9\xdd\x00|\xd9\x83\x97\x11\x10Z5I\xed\x85\x04q\xf2\xcb<\x0e\xc5\xa6\x96=c|\xca\xe7\xc7\xfd_c\xd5\xe5\xe0\xdc\xf4l\x97\x0c\xd48\xae\xfd8\xae0Q \x96\xe5\xf2\x9cm\x12\x9a\xd9u\xb7\x03\x07\x13\xb6\xe3\x7f\xafY\x92v\x8a\xa0\x8f \xc9\x9eE\xc9\xbb\xcf]\xbd\xdd\x18\x87\x0d\xb2pq]\xa9\xde\x96F/1\xe1\xa0$\xe7\xe50$\xf3\x8d\xb8\x93\xa4\xa8\xe1\x96\x88V\xb5N\x05\x1e\x1a<5\xa11\xd9^\x96\x93-I\xca\xc7\xacG\xae\x84\x92*\xf3\x9b\xae\xb0\xa2[\x89\x15\xddn\xb2\xf4N\x0c\xb4\x8b\xd9&=>\xdbT\xe9g\xa9n\x1f\xe3j\xf7\x1d\x89)\xb6\xb9\xb8+F\xacLk\x0b\xa1s=B\xe7\xed\x19\x94O\x86R\x8a\xe6k\x1b\xd9\xb0RJ UU\xc1\xf3u\x9c\x143pVe\x99\xcdn\xde<;;\xf3\xcenyi\xbe\xbcy\xb0\xbf\xbf\x7f\x13_\x93\xbf\xf4\xcf8J\xdeI\xdf\x9c>x\xf0\xe0&\x16 \x94\xbc\xabM\xf0\x93\xa5\x05rc3p\xfcy\x91\xc6\x1be\xf9{^\x05QQ\xbcF\x94?\xdc\xef\xa3\x7f\x17\x99\xd5\xd3J\x16\x85\xc5\xbc^\xac\xe7i,\x9d\xdamD\xce\xbeO\xcfg\xe0\xec\xc3>\x1c\xd0\xff\x93\x0c\x06\x0bNm\x928\x0d\xdeu\xd3\xd3\xe9z\x97\xb1<\xe0\x12\xa4\x9b\x81\xf3|z\xc7\xbb\x0f\xf7\x7f\x98\xde\xfe\xf9\x8ew\xf7\xd1\xf46\x1cx\xf7\xf6o\xc1\xf4\xc0\xbb{\xf7\x0eLa\xba\x0fS\xb8\xe7\xdd\xbau\x1b\xa6p\x97?\xbd\x0bw\xbc\xbb?\xdf]\x1dl'\xde\xfd\xfd\xe9\xa3\xfbp\xcb\xbbw\xe76\xdc\xf7\xee=\xb8\x07\xb7\xe8K\xb7\x82\xa9w\xb0\x7f\x8b\x0e\x07\xf0\xd9\x01\x1cx\xd3\x07\x0f~\xbe\xff\xc3\xed`\xe2\xdd\xb9s\x0b\xf6'S\xf0\xee\xde\xbe;\x99\xc2\x14\x1fM\xef\x05\xfb\xe0\xdd\xb9\xfd\xc0\xbb}p\x9f\xde\xbb\xf5\xc0{p\x87>\xbd\xb5\x7f/\xa60\xf7\xbc[\xf7\xef=\xba\xe3\xdd\xbdw\x00\xd3\xfb\xde\xfd\xbbS\xb8\xeb\xdd\xb9\x03\xd3\x07p\xcf\x9b\xc2\xf4\xc1\xea\x8ew?\xa0\x9f\x80}\x98\xd2\xcfL\xe8W`J\xbf3\xa9>swB\xbf\x13xw\x0enO\xbc\xe9\xdd{\xde\x83;\xb7&\xde\xbd;\xec\x07m\xee\xee\xcf\x0fh\x97\x1eM\xef\xc1}\xdaG\x98\xde\xf5n\xdd9\x80\xfb\xc0&\xec\xdf\x9d\xf9\x1f\x8d>\xf8\xca_\x9bu\xff\x93\xac\xe0\xf3\xe9\x01\xdc\xff\xe1\xfe\xcfw\x10l\x10\n\x7f\x82\xd5\x97\xe4\xb9\xb8\xc4\xe2\xdf\xf6n\xdd\xbe\x0f\xd3\xdb\xde\xfd\xdb\x0f\x82\x89w\xfb\xee\x03\xfa\xff\x93\xa9wp ~\xdd}p\x0f\xf6\x9fQ4\x98z\xf7\xa7\x0f\xe2\xc9\x81w\xf7\xce\x94\n`\x07\xdaW\xf0Q\xe3\x1f\x04\xa0\x98B\x1f\xc7\x07\xde\xbd;\xf7'\xb7\xbc\xe9\x9d \xfd\xf9\x00\x7f\x1e\x04\xb2\x97\xee\x8b\x97\xaa\xdb\x80\xb7\xc5\xcf\xaa\x83\xf7\xbd\xe9\xfd[1vor\xcb\xdb\xbf5\x0dto\x80\xe8z\xf5\x9ca\x1a\xed\x1d\xf6\x89b\xc2\xf4\x0e]k\xf1;P\xbe\xf2)0AY,\xf7\x12\xf8p\xcb;\xb8\x03\xd3\xfdgw\xbd\xe9\xfe\x038\xf0\xee\xdc\x0f&\xde\xc1\xdd\xfb\x13\xef\xe0\x1e\xffqo\x1f\x17\xf7\xc1\xbd\x07\xe2\x81wo\x7f\x8a\xff}p\xf7\x01\xec\xc7\xf7\xbc\xfb\xb7\xe0\x9e\xf7`\xff~@!\xbc\x83{S\xfc\xef\xbd}:[\xf4\xc5x\xd2\x80\x99\x08 \xfa\xe9)\xb6\x83\xdf\x11\xed\xd2\x15\xec4\xfcL\xf4\xf3\xd3\xce\xfa\xa4\x1fyy\x89\xa9\xbf\xe7\xdd\x9e\xde\x07\x9c\xf8\xc0;\xb8w0\x11\x93\xc6~<\xb8\xf7\x00\xf6\x0b\x9c\xcc{\xfbS\x9c\xc8\xbb8\x91\x0f\xf6\xef\x03\x9d\xce\x00\x97@\xcc\x14\xfb\x81/q\xa0I\x05\xd4XQ\xfc\x14N8[\x81~\x93\xb8\xf3\xe9t\xc7\xd8\xc1\xc9=oz{\xfa\x81\xe6\xfd6\x1c\xdcV\xcd;/\xcbqe\xd3\xfd\x00\xeemo\xffp\xc7\xbb\x7f+\xbe\xe5!)\xba\xf3\xe0\xd9}\xb8\x1bO\xee\x02\xfb\xdf\xd4\xbb=\x9d\xd0\x7f\x9eQ(\x98\xde\xfa\xe1`\xfa\xf3\xbdO0t\x16\xf1~e#\xdf\x87\xe9\xfd\xd5\xed\xed\xe4`5\xb9\xbd=\xf8\xf7\xf3[pw{\xb0\x9a\xde\xff\xf9\xee\x0f\xb7\xfe\xbd\xbe\x05\xf7V\xd3\x83\xed\xe4\xe0\x87\xbb\xdb\xff\x8f\xbdw[r\xe4F\x16\x04\xdf\xfb+\x90l\x9d*\xb2x\xc9d\xd6E\x123\xb3\xb2\xd5j\xe9\xb4\xd6T\xdd2\xa9\xfa\xcc\xce\x90\xacj0\x08\x92\xa1\x8c\x9b\x10\x08ff 5\xd6\x0fk\xfb\x03\xbb\x0f;f\xbb/\xfb0k\xf3\xb2f\xfb\x0b\xf3)\xfd%kp\x07\x107D0\x98U\xea\xd3\xe7LS\xb2\xca\x08\x04.\x0e\xc0\xe1\xeep8\xdc\xcf\xeb\x9d\x1d|\x1c\xc5\x84Q\x18D\xfd\xf3O\x07\x13\x9a\xa6\xfe6\xaa\x9f+G\xfd\xe9\xd9Y\xd5\xa6\xd47\x1f\x9e9\xce\x95\xd5\x87\xe9s\xc7\xb9\xb2\xfa\xf0\xb4\xbaCK\xf1\xc3\xf3j\x13\x81\xf3F\xa5\xdd\x9b\xa9\xba\x9e}\xee0u\xdddA\x80\x9f\x9f\xbb\x82\xedxq\x18\xc6QH\xf9\x8d\xce4\xad\x1c\xc5\xba\xd4$\x9ekP\xd5\x0f\xce\x10R\xee\x91+\xf5\x19\xdeX\x04\xd1\xbb\xf5[\x0c\xd7\x95\xd0}\x8b~\xd6_D|\xc3\xe0\xc3|\xa9S\xfc(\xf0#\xf6*^3rEN\xa6\xa5T<\x0d\x85G\x9d\xbeR\"(\x1e\xba\xaa'\x9d\x8aJv\x86\xa7\xa7\xe6\xc5\xb4x\x9f\xc4[N\x93\x9d\xfe\\x/\xa0S\xbd\xf7\x1b\xe7-\xa9^\n\xe6y=rrE\xc4}\xc2\xe2\x0d\xea\x8c\xfa\xa0\xb1\x19\xc1\xc1qOOWoP\xedL\xc4nIV\xe9\x89J\xa3:\xcd\x8b\xb9\xc9\xe6\xd7\xbb\xa6\x92c\x93\x9c\x056-\xad\x8d\xba\xbd\x1e\xef\xc1\xd5\xc9\x8c\xb3~0gK\x03O\xcaD\x1f\xae\x1e\xfe\xfc\xbe\xba\xa4`\x08r\xf3\x11\x95\xb5UY\xc5\xfb\xc5\xa6G\x84\x15*\x1c\x95j\xb2\xa0tR~\xa9Z\xcb\xfa+\xb80\xc9\x06D\xecx|\x0b\xfd\xfe\x8a\xf3\x98\xf7{\xff\x81\xc7\xd1\x96\xfc\x993\x85\xdet\x15\xb0?\xe3\xa1\xa4\x18\x11o\xc7\xbc\x1b\xb8\x9c\x7f\xea\xa1\x13\x8e\xea\xbd0\x8b\x9f\x18\xabF\x8d\x8cM\x1a\x8c\x88\x02[\xab\xe7!\x87V\xe4\xdc\xb0\xfb\xb4_\xfc6\x98lb\xfe\x15\xf5v\xb9-{m\xd5`sy\x99y\xb4\x84i\xc4\xa6\xcd\x1b\xd7Z\xbf\xbe3+\xc4\xd2\xaa\x10\xc6\xa6\x01W\xd4\xef\x8a\xb4\xde\xf93\x8a\xb8\x82\xc1\x87zj\xaa1\xa1\xfcp\x9dj\x06#\x8d\x99\x9e\xae\x18\xf29\xd5\x91\x16\xedU3\x1eK\xd3~4\x18\x91H\xd3\x89&@\xf4\xa1Z\xb7\xde\x01:!\xb6W\xd6\x94~@\x14\x86\xcea=\xe5\xf5\xa4RZG\xe4\x1b\xb3\xbc?\xe2\xb8D\x15\xbax6\xfa\xa0\xa1\xea\x06\xe2\x03\x06\x0c+\xee2l\xe0\xf7+\xe6B\xd1\xa7M\xe1u\x92 ?H\x0dC\xfe\x15\xf9(|\xbd\x81\xa1?u\x1e\x07\xf85%\xa6%\xb1)D\xfeE!\x01\x9c\x8e\xc4\xa6\x97[&~\xcb\x19U\x14<\xb6/\x0ebZ\xec\xb6\xaf$\xa7nS\xe3\xe0\xba\x9b\x98\x93\xbe\xe9e\x0e\xe1Hk\xfc\x03\x16m\xc5n\x04B\xca\xd9\x08D\x92^\xef\x82\xc4\xe3\xf1\xc5\x80P2\xbc\"|\xce\xe6\xfeR1@\xb6T\x8d\xf8\xc3!\xb6\x84]r#\"-\xcea\x1d\xfa\x8f\x0b\xf7x\x9a\x03>\x1c\xfa\xe4\x92\xc4\x17\x03\xd2\xc3\xa5\x80\x8e\xf3m\x17\xc85\xf6\xaa\x80\xa0\x06\x19U\x16s\x0ej`\x9a5\x8c\xc1Q#\xf0\x91\xb0s\xb2\xa3\xa9\x0bC\xd5\xa7,b\xa9G\x13\xf6j\xed\x92=U\x0e\xce\x92\x80z\xec\xabH\xf8\xc2g\xa9K\x12U\xd9\xb0\x9a\xdf\x8b0\xa8\x8b\xa4?\x17\xb4\xfa\x19J\"?e\xb1`o!\xa6\xd5a\xed~\xef2/\xf3rQ\xd8\x88\xbe\x1f\x95\xeb\x03\x95QG\xb2\xd3\xbb<-\xd4\xda#C\x92b\xf6r\xed\x1eR\xc4.5\xb2\xb9Xj9\xeb\x9a\xf4.\x13\xce^^\xaa\xe2P9\xed\xc3g-\x17\xc0u\xe6\xcbS\xf8zy\xaar\x16\x00 3\xd2\xebR\xb02\x0e\x1b\x16y\xae\x85=R2`\xe0\xe2\x0f\xdeH\x91F\x08\x1d;\x17\x8ekjkX\x1b\x8e\xc305\xeb\x93\x80F\xdb\xef8\xdb\xf8wu\xc9)Q\xe4\x9a\x86\xa9K(Q\xdf\xc1\xc9\x0c\xf8\x9f\xd1\x19'i\x12\xf8\xa2\x7f\xbaH\x87\xa7\xdb\xc1@\x87\xf2\x86H\xde\xbc\x1f\xe0\x12\xc6\x1e\xbe\xf5\xb2T\xc4\xe1\x88x\xf3\xb3\xe5\xc0\xfa\xb1p\xe5\x99\xab,\xcb\xca8\xd4\xed\x17U7\x1f\xe3\xd1\xe3U\xef1\x19\x92\x1d\x0c\xbb\xdf\x8f\xfb\x9b\xc1@\x8d\xf8\xe3\xde\xe3R)\xa7)ia\xc6\xd5\xbc\xad\xd5L\xc1\x0c\xf6\xa3\xc9\xce\xdf\xee\x02\x88p\xf4\xe8\x11)\xbcj\xc3\xd5B\xca\x88\xcc\x133\xd90\xeb\x1e\x15}o\x80n)\xfa\xf6\xd3\xa0\x15\x83\x1c\x88\xa1\x87DK\xeb\xd9d\xc7\xe8\xda\x8f\xb6\xb5%\xd8\xbabv\xaa\x0d@\xc7\xdd\xb7l\xcf\x02\xecb\xb95S\xf1\x91k\xd1Yum\xad\xef\xbap\x00c\xda\x1bM\xeev\"\x0c\xfe\x98\xc1\xb1\xed\xe5\x8e\x93\xd3\x97=X\\;\xfe\x12<\n8\x87k\x95\x05\x01\x13o\x03?\x15\xdd T\x168\x08S\xa1\xa2#G#\x0b\x9a\xa7\x13\xea\xf3\x05\x0b\xbbC\x17\xf8\xd5Y\xca+\xa9A\xd6\x0cU\xe0\xd7;\x19s%\xaa\xad\xdd\xc3\xd5&\x98\xaa\xb9v2\xc0\xdee\x1c\xe8e\x03\x95\x93\x97dJ\xae\xc9c\x92\n\xca\x05\xaeP\xf3 \x96&FTu#L \xbc#'!n\x99\x04E\xb5`[\xdf\xa9\xcfE\x06!\x80\x0c\\\x93\x1e\xa2bR\x9d\x99\xbc\xe6N\xe0\x9a\xe1<\xe9\x17jW;<p\xa1Q\x16e\x04\x19\x93\xa9\x16g\x1e=\"'6\xc5\x10\x15\xe7|\xf4]`\x9f&\xb8\x82\xfa\x11\xb9.\xf2\xad^\x0dY\xa3\x1b\xe7\x109\xd6\xad\x11Zt{\x02\xac\x07\x1e\xa3\xb3L\x9cvE\x94\xf3\xaf\x864C\xbbn\xcb\x94\x08\x00xM\xf9\x96 \xac\x0c\x1e\x0d\x12\x15>\xe659\x07\xe1\xf1%\x05\x1b\x10\x03\x07R*\xce6\x06\x06\x0c\xf3\x15\xbb(\"\x8c\xc1\x11\xcb\x8cV+\xf0C\xba\xed\"\xb2\x9b\x01|LR\xee\x95 M\xb9\xa7\x01\xad\x8fS\xf6\xd0!oX\xbd~\xb85Q\xcf\xfa\x8f \x0d\xf4hc-4P\xf3\x80\xcc\xd5$\xa0]1.\xe1\xc7\xbd\xc7\xeaO\x86\xeb\xbfH\xbf\xc9i\xaf\xb0\xd0+#\x04\x11D\xbb\xd3C\xc8^'\x16X\xcb\x113\xd5T\x8f\xe2\x81G@\xa3\xb27\xd5r\x0c4\x0d\xf5\xac\xe2\xf5\xfd\x11\xd0\xa8\xecM\xb5\x1c\x03MC=\xfc\x08Pxm\x9e\xf9Q p\xd7\xa8v\xa2\xd8\x1d\xb8\x94\xd8i.E\x03\x7f\x1bi\x0eu\xaf\xd6\x8d`wb\x0c\xa93\xa43\x98\xa3\xca\xac\xea\x90\x1d\xd3\xb7]\xad|\x1d\xe5\x1e\xda\xb3\xf5G\xee\xd9qh\xbc\xae\x96O\x05\x8f\x1d\xa2jc\x15\x98\xbf\xa1\x96# q\xd7s\x8c\xe0\xc5BG\xe9# \xa8\x97_\xb3\xa0{\xf3k\x16\xb8\xca\x1f\x01\x80\xa3\x06?J\xbbC\xe0G\xa9\xab\xfc\x11\x108j\x08)\xaf\x0b\x15\x8d5\xa8\xdc\xce\x1a\x8e\x00\xc2UG\x9a\xad\x0e\xad\xb5\x1c#\xb3U\xf3f\x1e>V\xebN\x8e\xa8;i\xab\xbb&`\xee(_\xaf\xb4.\xf1\x90D\xa1\x1b\xa9\xec\xa4Vj'\xb5\x88P\x12\\9\x88l\x1ao\xc4\xd1M@\x81\x94\\whM=\xd6);\xbb\x13\x1d\x07\xad2T\x95\xf1\x11a`N\xcb\xbaTV\xac\xaa^\x93\xa0\xdb\x0f\xae\x87\xaeVu\xae\xd9R\xd3\xe3KU\xe2\xa0\x14\xf7\xf2\xb1\xa3\x99#\x16\x85\xca_SB\xc5\xb1\x88b\xc1\xder\xb69\x04\xad\xe1D\x7f\xc8\xc2\x15\xe3\x08\x9f\xbf&C2\x1dLD\xac\x1d\x938N\x97\x95\x88\xdb\xdbD\x9cm\xc0\x10\xdb\xc9\xc4P\xea\xcdV\xdf\xac\xc9Kr\x06G\xa6\x9c\x0c\xafHof\xf5\x0c\xf0u0\"\x8f\xd5\n2\xea\x1f\x03\xffX\xd5\xfe\xd2\n\xfd\xbf\xdeD\x8fuL\xdf\xc7=\xe2\xaf\xaf\xac\xc4\xff\xb8\xf7rn>\xf5\x96Jxw.:;.\x80Y]wD\xba3eI\xf8\xf1\xe5\x8eW\xc1M\xc7)Kz\xb0N\x14\x1fn\xce\xa22\xc0\xec_\xa6\x0c\x9a\xaeeSY.\xe3\xa0^\\m\xa1\xa1|k\xcf\x8e\xc0\x9f8PM\x9dj@\xeaT\xc4\xd6|\x14\xea\x07>\xcc\x0fNX;j\xe1l\xd6\xa6\xde\x17,\xac-\x0e\x0b\xcc\x11\x1dt\xe9Kl=4\xf2v\xf1\xc1CE\xb3Fr|o\xefR\xd7\xc5\x105-\x06\x92\xe3|\x01\xe3\xabC\xb4\xa2\xde\x0d\xac\x90\xbf\xfe\xaf\xffM\xe1|e\xb0\xd6\xc7\xc8(\x0e\xcd\xd9\xfa\x08\xcd\xdbZ\xd4D\x9c#\xf6^\xeb\x9a\xb0\xb9>N>rC\x7fL\x0d\xc2Q\xc3Q\x02\xf3\xba\xb2\xe9+\x1f\x03\xa5\xe4\x8ad\xc5\xf3\xc3.\xcb\xa8_\xe4\xa4\x84\xf5]\xc4\xa9\x90}8\x8c\xc8\xcb+\"\xf4\xe9\x1a\x19\x93s\xc5\xc7\x15\x9b.+\xcaP\x13\x05\xd6\x07F\x0b\x85/FmU\xd2X\x89\xb9B\xbf\x82\xc6\xea\xac\x9c\xac\x99\xa5iU\x15\xafh\xcf\x8a\xf5\x9c\x97\xda\xd4 Z\xab\x85=Tip\xc5\xb9\xd4\xcf\xf78P\x03ri\x8f\x0f\xa1\xa9\x8a\n\xd5*\xd9\xecya\xaf.\xa7\xe4SS<\xa8\xcd \xf5\x03\x0f\xfa\xea\xc6]1\xb9\"\xf3\xda\x94\xcd{@\xa8{\xe8\xdb\xff\xec\xf9\xc0q\xf03\xef)\xden\xb2\xbcpg\xe1l\xc38\x8b<\x08\x13\x0f\x19?ug\xd4S\xaa3}\xe6\xced\xe9\xa2\xa0~`\xf2~\xde\x0c\xdc\xb9\xce3=k\x82\x0e\x8e-C\x16 \x03\xdft\xea\xce\x9a\x86\x94\x0b8\x06\xb49\xcf\xdd9\x03?\xba\xf17\xf7&\xd7\xd3\xc1\xb2\x94iy\xc4q\xbf\xc3z\xaahd\xc5\xcb\x84\xdc\x1ej+\x92pvA\x18\xb9$\xb1F\xc6\x0b\xc2\x86\xc3A\xa1\n\x8c$\x12\xcf\xd9r~\xb6\x1c\x11x\x98.]\xa6W\xc5\x03vm\xe5Q\"\x10.n\x84Gi.\xf8\x04\x9a\x02D\xe66X\x01\xa2-\x13\xdfg\x01K\xfb\xbd\xde``\xe1\x16\xe4\x92D\x17D(\xf0\xf9\\,\xfb\xac\xd1\x84\xe3\x03n\xc3\x95,A\x1a\xbb\xc6\x8a\x160\xd7\x84i;\x17\x1c\xcb:\xe1SC6\xb3\xd4\xcae\x01\xa9\x830\xb1I\xca=s\x88\xde?]D\xa7[\xbc\xf6:\x11\xdc\x0f]\xe2m\xc0\xf6,p\xde\xdeRm\xa532?\x1b\x91\xa9\x03?\xf3\xbb\xd8\xf32^\x82CWm\xc2h\x0c\x8f\x14X\xa3\xa2\xbd$\x9b\xb0h?\xb2\x1d\xff\xd8\xc6\xafO\xab\xb6\xaa\xdaJ\xe6y\x93\x91\x0c3\xa7\xb6\xbe\x0b\x0b)\x9c\xe6\xa6#\x12\x8c\xe0\x18\xbb~\x04\xfd\xec\x9c\x9c(\x82<\xf1v\x94\x7f\x19\xaf\xd9\x17\xa2\x7f\x96\x9f\x17\x8f\xa7\xf5\"\x9fO\xebE\xa6\xedE\xb4G}f\x1d\xe4\xf7\x96\xb3^{\x11j\x96x\xa1\x8b#2_\x0eF\xa4\x9f\xc1\xd5b:\"S\xe07gDJ\xf2\xfc\xb3:T\x19\xc8}\x8d\xcd\xc0r\x0c\xc8\x15\xa1\x93$N_\xd1\xbb\x11\x8a\x01\x8a\xc1]\x90\x94\\\x92@\xb1\xb0\xe9\x19\xd4L\x01E\x0b\xb5\xa7\x83\x0b\x92\x0e\x87naR\x873\x0c|\x8f\xf5\xcfG$\x1b\x8c4[\x86C}\xf3\x05\x9a\x1a\x91\xd4\xa0\xb9Y\xf4\xe4\x9a\x8c\xa7dF\xfa>l7\xd9\xde\xa7H\x07\xa5\xac\xa7)\xda8\x18\xe9;\xd8\xd0F%\xc7\x1c%Xo 2m\xe3\xc7+\xb2\x19(X\x1c\x14\xb0\x1bq(\xd0=\xf0'\x82Q=p\xa1\xb8\xccF\x0b\xb4\xa4~\xc9\xd8\xd2\xca)\xd2J\x9aKM\xd3\x12M\xac\x954\x0d8\x85*Z=\xde+\x89R\xd4\xca%\x8dR\x92\xaa\xc0J[.a\xcf\xfc\xa0\x03jY\xd3\x82\xc6\xe2\x82\xf0\x82pt\xd2\xef\xab\xf5\xed\xf7\xf9\xa8`R]\xa56\x88\xe3\x83\x8b\x01\x10 \xaeQ'68S\xb7\xd40\xbfb\xc3\xaa\xe4(o\\\xe1Q>\x14 \xde\xa1=c\xde=\x9bx\xc8[\xef/N\xf9\\6W\xcf\xa6U{B\xaa\xd3\xab\x86\xf8h\xed\xff\xec\xfc\xccIA\xd3\x9c\xbc\xd4\xccp\x14t\x9apB\xe4\x80\xf5\x88\xecFd?\"\xe1\x88l\xbb\xd1\xc5\x03\xa4\xf4\x01t1\xa8\xd3\xc5\xd4\xd0E\x0f\xe8b0\"g\xedt\xd1\xeb@\x17\x13rE\x02K\x17\x15\xd1\xf2\x90.n\xc8%\xc6p\xe8?=G\x8a\xb6\x86\xac\x15\xea\xb8Ac\x9c)R\xa4\xf5\xe0\x82lj\xb4\x12\xc8\x80\xaf\x00\xde\x1c\x80f\x0fM(\xc1R\xc7m\x1ca\xfc)\x03\xa4\x82px\xa5(\xc3G\x04\x0fZ\xb6\xf5\xed`\x1c7\xea\x91\"\xc8\xe4\x9a\xf4\xc3:`\x16(%O@\x86^\x0fSw\x83\x02|\x1a<\x07d\x17\x03\x05\x8c\x93\xad\xd8\xd2\x9a)9J[\xde\xb1U\xbc\xacoX\xcdtD\xbcA\x99M\xa4\x93|s2\xdf\"w\xa8\xa6\xb9.\xbe\xe8\xb8\x9c\xa1\xc3\xe4\x0d\xfc?\xecK\xe9\x8a7m>\x1eS\xf1[\x99\n\x10\xccB\x17\xb4\xc7\x8eR\x92\xb6\xa1>\x92\xff\xf8\xc7\xf3\x9f\"g\xf1\x1b8K\xce\x99\xfc\x1agr\xf2\x1f\xffh\xfe\xe3\x1f\xe2?\xe9/\xc4\x7f\xfcv\xfe\xe3\xbb\xf8\x8f\xff7\xe5?\x0fA\xc1F\xfc\x83\x01\x8fpw\x07n>\xec\x0e.\"\x97\x84_\x90H\xed\xe0JX\x01\x08\x16\xcf\xa3\xe5\xc0\xce\xba\x99\x07\xbd\x03\x11f\x00]\xbb\x10\x91{\x8b\xfb\xd7\x1a\x0d\x90\xcaK\xdb\x0c\x18\x80\xfar\xc2{d\xb5\xf4\xa4b\xf8LJ\x0b\xd9\xaa\xd5\x816\xb1\xfc\xa2\x9a\xddx\xd6B}\xb5\xe8\xdfz\xc5c\x17\xa4\x06\x85\xf5\xc7\x8cB\n$t\x85\x8b\xe6F\x1cF2\x0f\xe8\x8a\x05#r2\x053\x1cGUE\xfdV\xb9\xae\xe9\x88$Z\xce\x0e\x14IMM5}`'z\xfb\xcc\x06#r\xb2\xa9^$\xd2\x93\x9d\x0f\x05\x18%\x0e\\\xdd\x04\x04\xa4\x96\xe4\x95K\x8c\x0en\xd6I\xbeaw\x9c\xc348Q\xd1\xdbpo8\xac}\x06/Q\xb9\xb2\x83:\x15\x1an0\xa0']\xe0%\x0e\x98[\xa0%\xfa\nmK\x90\xc3\x96\x0e\x11\xdd)\xdc% *^\x93>lG\xe7\xcbAG8+\xb4\xbf\x19\x12\x81\x0eh\xda\x82\xcdv\x006\xeb\x08V\xa3\x8e\xc6\xfc\xac\xae\xc6eEh~\x06\xa0\x96j\xac\xfa\xa50\x8c\x1f\x0c}\x95U~\x8cQ\x1d\x8f\xbd\x06\xb8\xe0\xe2\x8a\x82\x1eh\x02\xd0&\x886\xab\xd7x\xfei9\xc8\x97]\x91ji\x83\xf5l\x80\xf2\x8c\x9b\xd3\x9b\xdcs[,\x97@\xac\xf6<_$q\xd2\xcf\x03\xbe\xc4\xf9\xbe3\x8b\x04\x9cg]\x17\x13fJ\xac\xe1\xa8%\xe5p\xa3\x87p\xb5\x1c\x1f\xba\xe6\xf0\x98\xee\xe1\xab\x0e\x0e\xd6Z\xc3|\x1b\xccj\x98\x12\xb7\x14\xe2#G-\xf6\xc9\x1ft\xa3\x84\xc4\xd1\xcbC\xb8u\x10q\xea4\xb2\x96\xd2\x0567\x95n\x83\xae\x05\xb2\nT\x1f$W\xd9d\xbb\xbf\xe6\xcd^\xfdruo\x7f>\xee\x0f\x16\xf3\xc5\xf2\xe7\xf7\xc3\xeb'\x93O\x16o\xe4h\xf6\xeb\xcb\x93\xc5b9\x00E\xf0b\xf1\xc9\xb4\xf71\xf6\x10\x0ey\xa5\xb8\xbb\xef\xb0\xb7()\xcf\x1a\xb6\x0dy\xce\xef\xd9\xf6\xab\xbb\x04\xc4]\xb8&\xd4\x7f#\xe7=\x08\xd2\xb8\x88\xfa\x83\xf9\xf2\xf1\xa27\x19\x9d\\\x8f{\xfafO\xaf\x87\xc1\xb7\xb8\xb9\xdb\x83\xa6\x82\xcbA_\x95*_t\xaeC\xd31n\x97\x9d\x804[\xa5\x82\xf7\xa7\x0e\xbc\x1cL\xd2\x98w\x0cN\xaa\xeb+\x9ck\x9a\x13@W\xbd\xa5\xeeI\xec\xdf\xa0\xff\xc9\x03\xc7\xa5g\xe4\xa3\xc2h\xa3\x82\x04_\xfa\xeb\x11\xe9m{j\xe7\xbb\xb1\x92Q\x9e\x17E\x933$\x98\xbb\x92\xc0\x1e\xa3\xc0\xee\xa6+\xd5\xed\xdd\xce\x9c\xd5\xba\xf3\x93\xe2\x86\xb2\xafH>\x14\xb0\xd2{eo\xf9\x12\xe8\xb2\x18\x8f\x9bk#\x06\n\xc1\xee\x84\xdeLP\xbd\xd9\x1b\x1c\xdc\x1b\x9a\x9f\xd5\x80\x9f\x8d@OF\xf3\xdd\xc6f\x12\xd0T|\x13\xad\xd9\x1d~\xf7\xb4\x0c\xb7g\x81\x11\x8d/@|\xdfL\xd8\x1d\xf3\xfa\x19\xe8-\n\xa5^\xa2\xfa\xfc \x95-\xfe4e\x83N5\xd3\xd9\xe2\xcf\x8a%\x99\xde\x98\x06#\x92\xa0>\x8d\x0cI2\x9f.\xf5\xe0v\x08EG\x0e\xf1\x99\xe2\xef=\xb8q>\xbeo\xd6L\xadc\x07\xb5\xb6\xc5\xb1\xde\xb5\xb8\x91\xcc\xcf\x97\x1d\xa2\xe7\x91\xc3\xf2b\xf1\xf7\xd0\xee=d\xeaT\x0f\xba\x15\xf9\xdb\xcc\xce!>_\xfc\x1d\xe0\xf9\xc5\x9f\x82)\x80\x05\x93/\x921I\xe6O\x0d\x8a6\xabR\xcc/-ho\xfa\x01\xb9$Y!\xe1!\xfd}\xc8t\xd9\x95\xf6K,\xa9\x12aT\x04\x0d(\x8d\x91\x98}\xdd\xf4\xd9\x08\\\x1b\xa4#bR\x04\xea\xb4\xdb)\xe6\x07 7&\xd5\x1cZ\x9c.\x86c\xb9\x98,&rq\x8d\xff\xc9\x93\x93\x93\x139\x1a\xc9\xf1\xf8\xb4~\x98q\xba\xe8\xf7=)B\xc9e2X\x0cN\xb7~\xfd`\xa3>w\xde\x8c\xf4\xfe\xfb\x7fsL\x11W\x1f\xfe_\xc7\x87D}\xf8\x7f\x1c\x1fD8#\xbd\xbf\xfe/\xffw\xaf\xf4\xa5\xc1\xda\xa6\x8b4\x95\xcbQ.iIk\xab\x8a\xbe}\x1a\xe4\xa5\xd2\xde\xa8\xc8\nS\xcd\n\xd3&VXc\xc4v\xd3\x94v\xe7\xc7\x19)\x97;\xcc\x96I\x91\xed*,\xcd,\xdb\x85\x95 gQ9/U\xafx\xd0<\xc8Oz\xfa=<\xa3\xb9&\x01\x99\x91\xc0J\xc3\xf1\xa8\xdd\xf6\xac\xfa\xd3\xd2\x97?\x17\x13\x11\x7f\x1b\xdf2\xfe%MY\xbfbtS\xfc\xa9e\xc6'\x82\xa5\xa2O\x07\x16^Z0\xbf\x18\x8eA\xec\xfe\xef\xff_oPH\x9d\xfc|>z\x0f\x1f\xfe\xfa\x97\xffZ\xfc\xd2\x9f_\x9f,\x07\x7f\xfd\xcb\x7f\x85\x8f\x9fL'\x93\xfa\xd7\x9f\x9f\xe9\xb2\x9fL\xd5\x7f\xc5\x0c#[\xef\xa8T\xee\x8d\x9c\xbf\x19/\x07\xe3\xf1\xb8\xaf\x1e\xe4'\x83\xd3m\x085\xfc\xf5/\xff\xfb'\xe7\x95\xbc\x8bt0\x1e\xf7\x17i)\xdb\xffV\xcb6\x7f3^\xa4\xaa\xd2>>\xd5\xb3\x83\xff\x96\\mM?\x8an\xd5\x12\x8d\xf9\xe3\xde\xd2E\x1c }[\xa7\x08\xa7\xf3\xf1\"\xc5\xdd\xd1\xf2\xd4\xb5\xc3\xa2m\x16\x8a'}a\x0e\x02\x01\x7f\x8d`\x0e\xd3~\xe2#\x120\x85\xbc\x85N\xd6\xdb\xc8\x0e\x98^\xdb\xad\x04\xd0em\x10k\x13\x914WF\x91<\x80\xde\xf8\xceM\x9b=\x92\x1d\x91\xfb\x11Y\x8d\xc8\xdb\x11\xb9\xfd0\x82t\xab5\xbf\xab&\xc2\xb4\xd2\xc4`u<aZu\"LoI\xb9H\xee9\xe5\xd6\x00\x02R\xb9@\x1d\x8e\x9a\xe5\xb7\xb9\x82\xb5i\xdfb~\xd5\x9d\x83\"aoK$\xecD\x13\x88\x08.\x8c8\xd5\xcd\xd5\x9f>.\xc5\x9a\xccFaK\xaer\x88a\xe8\xb60tx\xfct;\xdf\xea\x9c\xe4\xf2\x8al\x06\x17d;\x1e\xb7\x9c(\x99_a\x0c\xb6\n\xb9P\xae\xd2\x9b\x14\xd8_\xd9\x15<\xe8,[\xb1\x19v\xe1\x82(\xc1\xca\x03\xc2\x18\x97vAz\xe3\x13\xe3\x86\xc7\x1f\x0c.\xda\x87\xd9\xfc\xc0\xd7\x07\xb9\"'\xb4\xafPX\xefN\xc6d\xaa\x05\xc2\xd4\xeeW\xa6#rO\xaeH\xef1NL\n\xa6\x89\xa0:\xc0\xb2\x01\x1e[']\xe6\xc3\xfcT\xeb{U\xc3zDB\xf57\xe9\x06\xb5\xf9\xc1\xa0\xb4\xcdc_\xcd\x83\x9a\xcaQeJ\xc9f\xa0\xa7\xf4\xa8\x06\x89\x06z7I\xfdh\x1b0\x18\x8a{\xd5R\xa1r\x95\xb69f\x18\x8a\xbf\x1c\xe0{rM\xfao\xe7;\\j\xc5\xe3\xca\xcc\x91<\";\xb46\xc8\x89 Z\xc4\xce\xcf\x97\x15\xb6\x91\xf5\x0b\x02\x80\x9e`G\xb9\xa7K\xd0&\x7f\x0c\x10\xce\x1e\x08\xc2t\xa9X^qI\x1d^+\xae\x9fj\xca\x8f2V \xbe\xd1\xe5WW\x836\xfd\xf6\xe4\x9a\xdc\x1e\xb3\xcf1?\x18\xc5V\x1d\xb4\xeb\x97\xc4\xe9\xcc\x0e\xddQ%\x11ug\xc4\x11\x07\xbb\xed\xa7\xf7J\x9b\xce\x85\xc0j5T\x8b\x03VH\xff0\x02\xf4\xfe\xfa\x97\xff\xe2\x8a\xa0\xea\xfa\xbd',H\xd9G\xad\xfa\xa3\xee\xc1\xc0\xc0\xbc\xea\xf8\x15\xe4\xa9\xdb\xdb[\xf9\x1b\xb9\x98-N\x17\xa7N\xb9\xc9o\xd4L\x9f\xbe\xb9\\\x9c\xd2E\xfa\xe4\xe5\xa9\x91\x90\xda\xc5#Z3^7F\xe8s\x87^CX\x0b.7\x06\xab\xce&\xe82\xaa\xf9\x9c*\xe3\xc1\x8c\x9c4\xc4\xae`!\xf5[>\x8b[_\x08\xc6\x9b+\xd7\xf2\xf2\xd7Q!0g\xd3\xdd\x16\xf3Ko}\xe1\xed\x14\x92l\x99x}\x9f\xb0\xfeA\xa1\xc1\xa3)#\xbd\x8c\x07\xbd\xd9Add\xc7\xacy%\xb2\xccH4\x81\xc8dl\xfd\x9a\xddu\\\xf60\xaa\xd0\x83?\xf1\xc0\x11\xf9\xa6\xfak:w*\xfe\xe0\xc2n{6\x1c\x08\x98\xb5\xbf\xaf\xa1\xe8)\x90D\x0cjF\x18\x96\xafTB\xbf\xb0\xa3z\xa3s\x9c\xfa\xa3\x92[\x9b\xa6\x9f\xe3\x0c\xcc~j\xfcb63Sg\x8ez\xb9\xea\xb4\xe8\xf2\xf5\x11\x0b\xfc\xe8&\x9d\x11V\x1f\x12\x9a\x89X}U\xcb\xa4\x1c\x93\xda\x15L\xea\xd8\x8d\x0co:\x80*\xeee\n;\x80:|jg\x12eA\xab\xe2E\xdf\xc3i\xd8\xe3\x14,\x95\xee]\x96J\xce\xb1\xaemk\xee;\x1e|\x14\xb6+\xa0o\xb9\xffX\xe7\x1f\xb9\xdb\xa0\x1eXD\x822);\xea\x14\x04\xea\xd1\xb7\xd0\xb5\xdc\x9d\xabr\xb6 \x9f[Vw\xfa\xe6\x92\xce_.\xd2\xa5a\x0d\xdb\x01\x1a\x87\xea+\xa3\xbb\xf1xD\xfc~\x9a;\x18P\x89\xc3\xe1@\xc9\xc6\x90\x0bR\n\x9b\xaf\xbc\xad\x18k\xcc\xcbv\x01\x9e\xe8\x0e\xac\xe0\x90Q\xc9\xf9}\x85\x1b\x14.\x13(\xf4F\xa1\x7f5\xc91\xda\xee:l\xaf\xf6\xa5=e\x08\x05\xfb\x81\x82yo\x15\x06F\xbc;L\xf1\x88\x99tOo\xa3\xd7\xd0\x9a\xde\x11np\xc7\xba!\x97\xb6Y4\xbe\xcdM\xdf \xce%\x15\xec[\x05\xc6~\xbeYN2\x1e\xa0\xa6J\xdb%\x1b-\x1a|\xd4;T\xf5Y\xb5\xb4\x1e\x11\xef\x18\x12I\x1e\xa4\x0d'E\x8dx\x90\xab\xa5\x93\x8eJq\x92\x0b{\xebN\x05 \xb2\xc0C;f\x1d\x8c\x1d\xd1;m\xcc\xab\x87\xbf{9}`\xd5f&T\xfd\x99\x81\xe8p.E\xb4\x02\xf3\xa1#\xf1\xd0)\xb6\x98\xd6\xbd\xec\x91\xd3\xfb\xf0>\x15h\xe0\xd1\xd0\x8d\xc7\xdd\xe1\x0b\xd0\x92\x1eP=!\xc3|L\x0c\x91\xe8 \x0e\xa9_P8\xb4zh\x9f\x1f:\x8fG \xf2\xd1\xf3w_9\xbb\xcaJgWY\xf9\xec\xca\x1b\xd9\x834}vu\xb0\x9d\xf6m2\xee\xd5\x0eV\x82\xe7\x1e\xe3\xf1\x05pI\xadM9\xb9\xb2\x14\x9a\xe0\xadmC/\xe0Sf\xac\xd7/\x06\x8a-\xdb6:\xed\xe0\xf6:(\xe2\x88\xf89z\xc4\xfa\xe6+\x1a\xc0\xd9\xe2U\x8ew\xfa\xe4\xa4\xdc\xa1'\xe4\x0b\xcb\xc7&?\xa6\xd5\x8fg\x93\xe9\xf3\xc9\xd3Jj5\xd3\x97qr\xcf\xfd\xedN\xf4\xbd\x019?\x9b>'\xff\xcc\xd96\xe6\xf7\xe4\x7f\xa2^\xbcJ\xc9\xe5\x96\xb3\xedo\xd4?\xe3\x1f!e\xe2\xc5\xe1\xcbj5\xaf\xbeyM\xbe\xf5=\x16\xa5l=!\x85\x18\x86j\xdc\xd28\xe3\x1e\x83X\x86\x01\xe6IOC_\x8c\xf5\xcb$\xd9%\x07\xa0T\x15\xa6\xb3\xd3\xd3\xad/v\xd9JAp\xaa B\x80N\xdbF\xe1\xb4\xf4\x0e[\xd1Q\xd9\x80\xbd\xddF(\x9e\xfcI\xf8\x81q\xb0\xae\x9d\xe2W\xac\xc4\x9c\x02v\x9c_\x94v\x9fe\xc6Q*x\xe6\x89\x98\xcfH\\_\x88\x19\x0fR\xf7\xb6\xb5eG\x9b\xeff\x1d\x1f#v\xfb\x1f\xfch\x1d\xdf\xba?\x97\xb7\xda\xae\xcay\xa6\xd6.\x9b\xe9{3\xf5\x1c\xc5X\xac.'\xd0\"\x0c\xbe\xa3<U\x006U\x01{\xb3C\x99\x04\xdd\xfe6\xf3\x83u[\x1e\x0c\xa7y\xd8\x00\xcc\xde\x937A=\xd4\xd6\xee\xf7\x16\xd2\xfe\xc0\\\x7f\x1eX\xfb(\xaeE\xb9\x18_1r\xae\x91\xdebrI\xfc\x0b\x127\x1bt\x13s!Y\x95\x9b\xc7\x07\xac=\xd0\x14\xc9\xea\x11\xda3\xa763\xbb\x13\xad\xd7Q\x94\x98\xcf0(\x12\x8a\xde\xd9\x80\xf4\xa8\xbe\xd6 5\xd0\xad\x9a\xc9\xbe>\x14\x9d\xf8\xe9\x97A\x9c\xa2\x13\x9ck\x18\x89WT\xec&!\xbd\xebGj\xaf2R\xd2\xfc\x0cvK#\xa2\x1d\nT\xfd\xd5\x17\x7f\xa0KC0\"\xe1\x8b{\x0b\xc51e\xf1\xeeV\xab.\x86\x98\xcb\x8bfz\xf5N\xf0\x07\xc1[\xdbP?\x0dJ\xd0\xb2OGX,\xcc\xce\x8cnV\xa5\xe9\x04\xb7F|\xb5\\\xef\xddX\x8d\xc0w\xc1mc\x8c\xa8\xb1\xfaU\xbe\xb6\nj\x0bf\x02w@\xa0,\xc8\xf3=\x94\xfb\x17\x1a\xe8\xa8\x03] s\x15\xef\x02#,=\xf74\x14\xc1\xb7j8bb\x19\x95\x93'\x1e\x0d\x02\x13%FS\xe9\xc1(\x8f\x86te\xa3! rM\x04\x99\x91\x13\xbco\n\xbe\\\xec\xe8\xa0V\x08\x8c\xc7\x05\xf1\xa3T\xd0\xc8S\x85\xe2\x89\" \xaf\xe9V\x15.\xfa\x83\x9a\xd9\xd1}m\x89R\x7f0Y\xa9\xa7>+\xfaY\xea2\x88%\xd23k\x16\x05\xcc\xcf\xa8V\x01\x86\x9c\xbc\xb6\x0e'\x83\xcd\xb1\xa3\x94 \xe0TH\x9a\xe4\xd0\x0cF\x8e\xb3\x0cw\x17^\x15i\xf8q}(\x90\xffc:Q(f{QH\x9b\x141\xbf\x99T \xcb\x85\n\xd5c3\xa9\xd5\x1c\x18r\xc2ssV\xcb\x91!\xb3~k\xce^b\xc2P\xa4\x90\xe2&.\x83#f\xe6u\x81q\x1e719\xcb=f^\xf2RvZ\xbe\x80\xdb\x11\x85\xc5\xd2<\x1f\x05\x81\x05j\xb3\xef-\xc3me\x14l_\xbf6\x17(\x88,H\x05\xcd\xfbQ\x83]Jy?\"1p\x99C\x9e\xb3H>n06}\x81j\xaa~U\xc0\x1c\x19t\xd6\xbe\x7f\xe2\xf2\xaa\xfd9\xcfPIS\xb2\xabS\xfa\xa4\xabTp\xea\x89WL\xec\xe2u\x07d\xc0\xa0f=S\xae\xd7\x05\xe1Ph\x9e\x1d\x1e\x04R\x94\xc3\"\xe2G*\x9b\x98\xech\xfa\xc7\xdb\xc8F\xa3\x8fP\x14a\xf3hI\xd0#X\x03\xfb6\xb8\xd8\x05Fv'X\xb4\xee\x08#\x80\x87\xf2\x1f\xcb\xc5\xfbf\xe4\xaan\xe7\xde7\xdc\xcc)m\x15\x1a\x16\x98\x91\x18AW]\x1b\x9b^a;\xd1\x1b\x00\x93*\xa4\x90\x0e\x13L@\xde)\x14\xd2\x81F\x90\x99R\xbe\xcd\xc01V\x83\x843(u\x01\xc2\x03\xb6\xce\x0d-\x81\x07q\x19\xe9$\xcd\x12\xc6a\x01\xe2\x0d\xe95\x0b\x98`\xe5\xae\x8c*;2\x8a\n\x84\xa8\xd3\\\x07\x81\x9f\xa4~:k\xdd\xa2\x17\x7f\xd6\xa4K\xebh^b\x90\x04\x98\x83(\x0b\x02%VD\xe4\x9a\xf4&\x93\x9e\x12~1\xbc\xa21\xf6Rl\x1f\xf4\xfcc\x12Y\xd5\xf1\x90D] \xb6V\xecvDN%\x0f\x7f\xc19\xbd/x\xe8\xd25\x0c\xf2\x8e\x18eq5r\x83\xf9\x15\x96\xa1\xdd\xeb\xb0\xceG\"\xc4\x9c\xbb\xc0\x1aU\xd2\x95m:j\xc5\x87q\xfd8\xcb1 p\xff\xe5\x8bh\xfd%MD\xc6\xd9\x11\x03s\"&\xdb ^\xd1\xc0\x11\x9e\xf1\xcfP\xed\xf7l\xcb\xee\xfeL\xc2,\x15dG\xf7\x8c\x88\x1d#\x8f\xb7\x8f\xc9&\xa0[\x92\xb2Z`F\xf3\xcbG\xac\xb23\xbc \xb8T\xc1@\x8a\x81\xcf\x00}\xb9\xb9\x80\x1f\xf1\x08\"\xe9\xad\xd9\xdd \xdf7Eh\xbf\x82\xe1(\x8c9\x94Jl\xb5\xdf\xb2\x1b\x8az#Pw}\x84\xeb\\\xc6H\xb9Wf\x99!}\xec\xe3m+W\xdc\xdc\xdb\x9d/X\x9aP\x8f\xc1\x08\xce\x08\x04dr\xec\x0f\x8a\xfa\x8e\xc3\xdb\x02\xb7\xde\xc5\x86+\x8d\x18W\xa0\x1a9#O\x90\xb2\x98\xf2\xfa\xd5\xb7\x9d\xf0\xcanw\xbb\x80V\xdc\x96\x08,\x86\xa1UE12\xa5\xf95\nb\x95\xe6\x8eiMJ\xd2\xeb\xc4\x81S&\xbe\x10\xe5\xbdb\x87\xbbkzC\xa3J\xa6\xfd\xc1\x9c-\xf30\xba]\x1a\xdd\xd6\x1b=\xba\xc5.\xed\xe8\xce\xa5]\x1a\xaa*xtK\xad\x0b\xa9\x82\x829\xfeu\x01n[\x07\xae\xcb PU\x06d\xe8\xc2\xebU)\x0c\xae\xf9\xb9G\xe4K\xc5>\xbb\x8cH\xb1U=\x92\xfd\x1e0\xdf^M\xc3I\x1a\xe4\xbb\xf5\xbass\xb9\x9a\x0d\xd5hf\"\xa0\x82\xfe`\x94\xc7^\xac\x10\x14\xd4\xaf\xe9\xb9\xd0\xdc\x0bo\x11D\xe0\xf8\x1d\xefDr\xb5\x13W\x94\x17\xef/\x98\xc4\x0b\x98\xf4l\x92\xee\xfc\x8d\xe8+\x12<&\xb8\xed\xf7QrP\xdc\x9c\"\xc1l\xe2\x88n\x1c\x9d\x189\x85\x16\x03\xcfu\xc5\x0e\xce\xc2x\xcf\xfe\xee\x07\x8f\x16oX\x95FR\x0de\xbbv\x13\\p\xe2 _\xc0\xa8\xc3\xb1\n\x8e\xb7j\xc1c\xfdtD\x1c\xd7m\xc9!\x8d\xd9G\x9d\x89m}\xc9tY1\xb5\xe6;\x93\xe4\x1dM;\xcf\xbb\x15\x8e\xd0\x9a\xa3GzdX\x9d|\xb8(\xdc+\xdc\xa5\x81LL'w\x81(e\xe2\x1b\xc3?\x8f\x80\xaa\xc6\x89\x8f\xe3\x80\xae&\x8fk\xb1\xf3\x90\x1b\x1d\\\x87\x96J:\x8f\xa2\x16\xbcE\xe5`\xb2\x83\xce\x0f\xb0\xe2\x07\xc1\x0f\xf0\x96y\xef\xb2\x87\xd1\x95 \xaa \xf5\xdcb`2\xd2{\xd9\xcb\xa3\xf8\xda\x91R+\xbdwy\x8a\x05{/{\xcb\xa3T\xc7%\xf0:\x0c\x05\x8a\xcd\x96\x0bYA\xbe\x1a\xc5\xcb\xfc\xaaC\xa7\xd7G\xfb\xc0\xcd\x97\x87\x84j\xe2G\x84\x0d\x08sk\x03\x84\x16\x98\xc9\x90<\xc6\x08\x0b\xb0\xf5\xc0\xa8`\xed\xf4<\xa7\x16\xf5\xd1+\xa5\xbcW\xa2xMou\x84\x88\xfcQD\xdf\xceS\xdc\xa5\x89\xa2\xd6\xc9\xc8\xfcm\xbe?\x8c\xb4\xda\xa3-f\x06\x14\xe5\x1d\x98\x7f<\x0d@\x14`\x85\xd3+T\xb5\xe3X\xfe\x9e\xb3M\x7f\xd0\x82 ~N\"\xa0R\xedoZ\xcf\x04\xbb\x13\xfdBm\xa8\xb7oROt\x19\xbd\x02\xcc\x1d\x05f\xb3On\x1e9bm\x87Dc\x1e\x07(\xe6g\xf9:\xc2\xf6e\x8a\xbcC\xed&\xdb\xe6\x95\x1b\x13u\xa3K1\x1b'\xabA\xd5\x190\xb6!\xb9\"\xbd\xb7\xab\x80F7\xbd\xae\xaa\x942<]P\xae$\x81[-k\xfb\x12\x85\x93\x9a\xa1\xa5\x8dC\xd2\x1b#s\x9bu\xa4\xfc5\x8c\xe9\x02\xa9Uek`\xd7\xf1k\xadF\xae*f\x89\xbb\xd5\xbc\xc0\x11\xcd\x19b\xa2uT\xf6X\xce\xa8\xb0\x15\xbb\xc3@\x1e\x93\xef\xfe\xf8\xc37\xaf\xbf\xf9\x97\xaf\xde~\xf3\x87\xaf\xbf\xf9\xc37\xaf\xffc7\n\xe6<\xd69\x82\x8c\xa9\xf2z\x8f\x0f\x1a\xfe\xd3\xfe\xf5\xac7\x7f\xd3[>\xb9\xee\xc9\xc7\xf37\x8f\x97O\xae\x1f\xcb\xf9\x9b\xc7\xbd\xab\xcb\x97\x7f^\xa4\xcb\xe1\xe0\x14\x19\xdc\xe9\xfc\xcd\"]\x9c\xf5\x1e\xbf\\\x9c^-\xee\xce\xa6\xe3\xc5\xdd\xf4\xeb\xc5\xdd\xa7_/\x87\xa7\x134\x0fQ\xb3\xdb\xbf\x9e-\x16\xe9\x93+\xf5O\x0foM\xdao\x83\xeb\xde\xa8\xe8\xcbd\xaer+Vy\xd9?\xf9\xdd\x1f\xbf|\xfd\x1f\xbf\xfbj\xa0^u\xeab\x91\x0e\xf3W1\"= \xeeQ\n\x15\xaa\xcf\x83'\x86\xdb\xe2\xbb,Tq\xd9?\x85F{\xe0o\xe6t~6\xfe\x9c\x8e\xdf}1\xfeO\xcb\xfcq\xb6|rZ\xad\xb3\x0c\x81\xb0\xad\xa8^\x9d^\x17\xda\xcb\xf9\xf7\x88\xf4\xb6~\xcfE\x0b\xd5\xa0\x7f\xb9\xa3\x9cz\x82q\x13Q\xddhZ\xfa\x8f\xa2U\x9a\\\xc8G\xbf\x9e\xbe8\xbb\x90\x8f\x02\xa1\x9e\xe1q\x8b\x8f\xe7\x17\xf2\xd1OY\x0c/O\x9f\xc1\xbf\x9f_\xd4\xaf\xdb\xab\x1f\x989tA\xd8\xd2n\xa4\xb0\xf7\xb0\xf8Q\xb2\x8c\x98//PUzb|<r\xa3\x11;\xbc\x89@\x13\x89\xb3\x0e&\x12b>]\x82\xf2g\xfe\xf4@nE\x10ON\xc4A7\x1bAE\x93\x1b\x8f\x88\xd0\x9a\xbaf\xab\x81\xc0\xaa\x87\x91c\xa91Ut\xe7\x8bh\x0d\x93w\xff\x87x\xcdR0'\xf6At\xd1Zv\x7fD\xa2\x81M\xec\x17h\xfeWh\xa4\xa1\xca\xf5\xb5\x8f\x81\x81\xd6\x0d\n\xab\x1b\xa4M>\x86H\xe3fJ\x89wq!@\xc9\xa1\xa9\xf0\xaa\xc3\xd12\n^\xb7Q\xf0\xdc\xa3pD'4\xed\xf4\xbbP\xe5\x06(\x8e\xc3x\xad\xdf\x8dr\xb2Y\xd1I[\xba\xdd\xbcp\xf5~]\xaf\x8f\xc8*\xd79Z\x0eA\xd0\xb1\xf3C\xd3\x01{\xf89\xef\xb02\xa29\x07/\xb2\xcd\xd3E\x0b\x92t\x01\xf3\xd4X!\xda)\x84\xcb\xdc\x99\xf2\x91\xecg\x0f\x99\xba\xbaX\xd4(m\x14V\xc2\xd1'85\xc3\x86\xe2\xb2j\x11|Adh9\xe1\xb3\x92q\xc5\xe1Ds \x0f\xad\xa8\xaa!\x83\xcc\xef\x18Q5\x1f\xfb.H\xdc8\x12\xf9\x0c\x1e\x1c\x88\x0f\x06\xd9\xe0\xd4\x87\x00l\xf1\xf2\xe3\x81\xfb\xabr\x06\x87\xb4\xa4\x1a<BVB\x00\\F\x90\x7f\xb3\xcd\xa0\xdet\xcdl\x15\xa5#\x7fw\xfe\xb2\x84\xdcE\x1d\xa3:z\xecx\x16\xd6^mH\x9d\x03\xef\x1ca\xbb'u\x0d\xb2Yd\xae[\x9dv`\xbav\xd4\x1aJv\x1d\xf6\x0f9\xdc\xe9\xd2\x86\xb5\xc5<\xb2 =,G\xcf\x97\xa5\x10\x0f\x9f\xae\x07\x0c:\x9a\x85\x1e\x0b\xac\xa1\x0e\x7fKP\xe1\xfeE'@\x1b\x8c\xd2\x8e\xa0,\x1f\xdf.\xfc\xa0\xe17\xde\x97\xe5f\xef\x17\xc1\x8e\xee\x8b\xf1\x7f\xa2\xe3wg\xe3\xcf\x17\x93\xc5x\xf9\xa4\xf0>^\x9e\x8e\xb4S\xb0I\xffz\xe6G\x82\xf1\x08\xbc\xf4\xd1@Z\xf2\xe7\xc7\x91z\x01\x92\x14\xf3T2\x95-\xe1~\xcaR\x99\xecb\x81^i\xeee\xc2\xe35fO\xe5&\xce\xa25\xd4$\xfd0\x8cW~\xe0\xb3H\xfa\xd1:S}`\xa9\x0ciD\xb7\xb0VU\xb9\x84q%tI\xc1\xbc]\x14\x07\xf1\xf6^z;\xee\xa7\"\xa4\xa9\xf4\xe20\xcc\"_\xdc\xcb\xb5\xcf\x99\x82\xe1^\xb2u\xe6a\xf5\xec\xa7\xccO\xa0\x1e?J\x85/2\xc1dH\xf9\x0d\x13~\xb4\x95i\x1cd\x08\xd1\x9eb\x81T\xae(\xdfR_=\xc4\x99\xf0\x7f\xca\x98\\\xa1\xa20\x95j\xfb\xaedf\xe9\x05\x8cF\xf8\x10\x8b\x1d<\xc4a\x92 \xc6\xe5\x9a\x85\xb1\xc7\xa9\x90k\x9f\x86q\xb4N%\xf4\xdf\xf7R\xb9\x8b\x83\xb5\x1fmS\x19\xf8\xdb\x1d\xb4\x9fP.\"Us\x12d\xe1\n \xca\x92$\x80\xber\xeaC\x13{\x16)y4\x95\xd4\xa3k\x16\xdeK\x8fr\x06\xd0\xc4aB\xa3{\xe9\xf1\x0c\x06{\x1d\x87\x007\xbbK\xe2\x94\xad\xe5\x06\x9aI\xe5&\x88\xd5X\xc9-\x0d\x02\xc6\xef\xe56\xf3\x05\xe5\x00\x8e\xbf\xa6\xf7\xf2\xc6WX\x11\xc9\x88e\xa9\xa0\\\xc67~Do\xa9\xe4\xcc\xf3\x13\x96J\xce\"A\x03\xf5w\xef\xb3\xdbT\xa6;\xff&\xddQ\x89\xce R\x009\xe6B\xa6\xf7\xa9`a*\xe9\x96E\xde\xbd\\1\x1e\xf8\x91\xf4h\xc88\x95\x1e\xa0\x85\xf4\xe2\xcd\x861\x85/\xeb8\x95\n\x05\xa2\xadd\xa9\xa0\x82I\xa6z\n\xe03.\xe4&\x13\xab8\x9074\xdb\xb0H\x06\xd9]\xc6\xefeH\xfd4\x8ed\x18G4\xdd\xc90KY\x16\xca\x88n\xe3{\x8a\xb8\xa6\xa0L\xa8\xcf\xd5\x1f\x80)\xf6|\x1a\xe0\xa8\xdeKA\x85\x88c)|\x16\xad\xa9\x1a\xe1=\x0b\xe4\xde\xa7?\xb2T\xee\xfd \xa0\xeaO\xaa\xd0f\x1f\x03d\xfb\xf8\x9en\x99\x04\xccF4P\xa3\xbfN\xa5\xb7c4\x91\x9e\xdaw\xc85\x8d<&a\xd1\xcam@S5\xb2Y\xaa\xd0,\xda\xc62\xf2\xa3\x1f)L\xb4^\x0e2\xdd\xc5j\xd4\xe2\x80r)b5\x03\"\xbe\xb9\x8f\xa5\x88\xe3 \x95\xb7j\x8d\xca\xdb\x98\xdf\xa4\x922\x1eK\xca\x13*i\xeaS\xb9b\xa9\x90+\xff\x86\xc9U\x00h\xf9\xee\x9d\x1a\xdeDzA\xb6\x92^\x1c\xabU\x19'rCy(7~\xba\x93[\x7f#\xe46\xe3\x99\xf4\xa3M,\x7f\x8cW\xa9\xbc\xf1o}y\xc3\xd9Z\x064Z\xcb\xc0\x0fc\x19\xf8\xd1\x8d\x0cY\x94I\xb5\x18e\x18\xaf\xa9\x8ch\xc8d\xa2\xf06Q_\x938\x15\xf2\xa7$\x8e$\xf7\xbd\x9d\xe4\xd9\x8e\xcb\x94\xdd\xddK\xe1'\xa9\x1a/\xa6\xfe\x89\xe5-\x8d\xb6\xf2V-\xe7[\xff\xc6\x97\xef\xe2\x88\xa9%%W\xfeZ\xae|\x05\xf0J\xad#\xe9\xb1Xa\xb0Z\xaar\x1b\xef\xa5\x1f y\xe3\x872\xf4\x03\x191!\xe3(\x901\xdf\xaa\xe5/\x93l%\x15\xc0\x82\x052\x8bby\xcb\xd6\xf2\xee\xeeN\xde\xdd\xbf\x93\xd4\x93t-)\x93t#\xe9VR_\xd2@\xd2P\xd2H\xd2X\xd2\x9f$\xe5\x92\xa6\x92\nI3Io%\xbd\x93\xf4\x9d\\Q\xb9Z\xc9\xd5Z\xae\x98\\m\xe4j+W;\xb9\xf2\xe5\xeaG\xb9\n\xe5*\x92\xabX\xae\xb8\\\xa5r%\xe4j/W\xb7ru/W\n|\xe9y\xd2[Ko#\xbd\xad\xf4v\xd2\xf3\xa5w#\xbd@z\xa1\xf4\x14)\x94\x1e\x97^&\xbd\xbd\xf4n\xa5w'\xbd{\xe9\xbd\x93k&\xd7?\xca\xf5\x8d\\\x87r\x1d\xcb\xf5;\xc9<\xc9\x98d[\xc9\xb8d\xa9dB\xb2Ln|\xb9\xf9Qnn\xe4&\x94\x9bXn\xb8\xdcR\xb9]\xc9\xedZn\x99\xdcn\xe4v+\xb7jb\xe56\x90\xdbPn#\xb9M\xe4\xf6'\xb9\xe5r\x9b\xca\xad\x9an\xb9\xbd\x95\xdb{\xb9\xbb\x91\xbbP\xee\"\xb9\xe3r'\xe4.\x93\xfeZ\xfaL\xfa\x81\xf4C\xe9G\xd2\x8f\xa5\xff\x93\xf4\xb9\xf4S\xe9\x0b\xf9#\x93?\x86\xf2\xc7X\xfe\x98\xc8\x1b&o\xb6\xf2f'o|y\x13\xca\x9bH\xde$\xf2\x86\xcb\x9b[ys/o\xde\xc9\x80\xca`%\x03O\x06\xbe\x0cnd\xc0e\x90\xca@\xc8 \x93\xc1^\x06j\xa9\xca\xd0\x93\xe1Z\x86L\x86[\x19\xeedx#\xc3@\x86\xa1\x0c\xd5\n\x96a\"\xc3\x9fd\xc8e\x98\xcaP\xc80\x93\xe1^\x86\xb72\xbc\x93\xe1\xbd\x0c\xdf\xc9\x88\xca\xc8\x93\x11\x93\xd1FF[\x19\xf92\nd\x14\xcb(\x91\x11\x97Q&\xa3w2\x0eeBe\xc2d\xb2\x91\xc9V&;\x99\xdc\xc8$\x90I(\x93H&\\&\xa9L\x84Lner/\x7fR4M\xf2X\xf2T\xf2L\xf2[\x99R\x99\xaed\xea\xc9t-S&\xd3\xadLw2\xf5e\xfa\xa3Lod\x1a\xc84\x94i$\xd3X\xa6\\\xa6B\xa6\x99L\xf72\xbd\x93\xe9\xbdL\xdfI\xe1I\xb1\x96b#\xc5V\x8a\x9d\x14?Jq#E E(E$E,E\"\x05\x97BH\xb1\x97\xe2V\x8aw2\xa32\xdb\xca\xecFf\xa9\xcc\xeee\xf6N\xee\xa9\xdc{r\xcf\xe4~+\xf7\xbe\xdcGr\x9f\xc9\xdb\x8d\xbcM\xe5=\x93\xf7B\xbe\xa3\xf2](\xdf\xdd\x0e\x16\xab\xd3\xaa\xe6\xb47\"\xe8\xffoq\xbb\x1c\xfc\xa6\xbf\xb8\xfdy:\x9a>\x7f?0\xba\xcc\xb2:\x14r_\xcf\xe6\x8b\xf1\xc5\xec\xd1\xd5b\xb8\xf8d\xb4\xb8]L\x96\xc3\xdf\x14\nD\xf6\x897Ub4\xa3\xb6B\x94\x19\x96\xf3\xf1dh\xc5\x87\xe5p\xd6\xbf>i\xfa\xb48]\x9c\x0e\xfa\xd7'\x8b\xf5pqz=\xe8_c\xca\xb5\x13\x90\xbaJ\xb7?\xb9>E\xa5\xaej\xff\xf6\xf6v19\xbadsG\xad\xf6\x17\xd4\xc5\x8b\xb1\x05|\xf8\xe87\xbf^\x9c\xfe\xd3\xd5\x7f~\xdb\x1f\xc8\xc7\x9f<Y\xcc\x17\xcb\xeb\x93\xd9hr\xb1|r(\xdf\xf2\xb4\xaa\x04\xef\xa89\xf6v\x94\xff\x96mb\xce\xbe\xe3\xb1\x88\xbd8\xf8\x9e\x05\xfa~\x0e\xaa\x8f\xdf\xf4'\x83k\xf0 \xf4\x0bmS\xb5*\x0c\xe4\xc7\x7fA?\x06q~\x13\xe0U)\xb9\xcb\xbeG\xdf\xf6\xe9\xae\xfd1\xae\x91\x14\x18\xed\xb6\xe2\xf6:T\x0e\xb1\x96x\xcb\x17z\xddN\xf3\x0fi\xeb\x12P{\xeb\xd3\xa8/i\xb4\x06\x97\x0e0\x00-\x95\xb6_\xdf;\xe8\xf7N5\xbc\x0651\xdc\x8d\x8aF$\xc1\x8e\x1d\xba\xf5\x86C\x92L\x12\xd8\x13\xfc 8\x19\x925\x19\x92d\x92f\x1bLi\xac\xe0\xa0\xe3\x9a\xeeJ\x99\xc6\xe3\xbc\xf2\x00\xd6\xb1\x01\xae\xf6\x96\x06\xb4\x0d?<t\xc3\x01&<-\x17y\x12\x8c]\xd7\xf8\x1dB\x1a4\x98F\xa8\xe9\x02\xc3q\xb4\xa7\xd0\xbb1\xd5\xa0\x9f\xa7\x82$\xa8\xd2h\x9e\xa66{*\xe9\xc4\xb1\x8e&~\n\xcf\x88E\xd8\xd7B\xe8\xc0\xbaC\x9c\x124\xb6\xbe\xdf\xd3\xf4O\xd1\x8a\x06J\x1a]k\xb5\xc2w\x943X\xecp\xdf\xa2\xa0\xf8\xef\x9f\x8drcx\xf4\xd9\x08\xfd\x1e(B\xe4\x0f\xe0\x90\xa0p\xfbj\x82.\x92\x9a\xd1\xb4\xe0\x89\xa9U\xcd\xaa\xb7\xb6u=?!\xcd\x8e\xa7\xec-Q1 xm0\xc1\x9b\x06\xac\x10uv\n\x9eD*`\xbf\xc6 \xfa\x08\x80\xeb\xa9\xfe=\x8d\xd6\x01\x9b9l\xb0\xc9\xa1\x0e4\xc3\xa0\xbav\xd0\xeb\xa3\xc2p\x88\x0e\x89]\xd3\xaa\xfbv\xd60\xd0giM\xe8l~;;\xa8\xbb\xda\xa0>\x80@Tg\xe1O\xbc\x0du\xc8\x11\xb3@\x8c\x0f\xaf\x03y\x12=\x1a\x7f\xe2\x81&-''Y\xb7\"\xdf\xb3\x80\n\x7f\xcfl\xb9\xcd\x81S\xc8\xa3/\xfa\x117\x99$\x87NX\x9a\x87\xd0\xd2\xf7\x19I\x9a\xa1\xb54\x7fF\x1cZc\xf3\x0b\xb1\xdf\x0d\xc1~\xba\x10\xf7vj\xd4E\x08\x81\xdb\xe4\x03\xe3bX!\xf9\x17\xa2_\"W\x87\xf8\xb4\x00$\xc6\x95r\xba\xe8\x9fn\x0f\xdc\xb7\x8fJ\xf9\x07\xa7\xdb\x03<\x1b\xb9\x80\x0d\x0e#%9\x1b\x90K\xd2\x07\xf2\x14\x95\x92-!?9\xeb8\xa6$\x9fs\x87w8\x976\xf2UU0\xeb\xaa\x84\xf4#pK\xd5(X\xce\x17\xb7\xcb\x06\xc1rG\xd3\xaf\xb3 \xc8\x8b\x9a\"-\x12\xbf\xa3\x9a\x8c\xfb?x;\x16\xb2\x83\x15\xb8a\xf8\x0f1_\x7f\xa90d#\x18\xaf\x023\x9b\xbfY\xa4\xcb'\xd7\xa6JG\x15E\xe6\xdb]\x1e5\xd3S\x94\x06tM\x7f2\x1dR\xec\xca\xdcb\xc94!\xfa]\xcc\xd2?\xc4\xe2\xf7to)\xf6\x1f\xf9\xefb\xa1\xad\xd3Z\xb2\x7f!\xbee4\x15\x7f\x8c\x98\xe9q\xa5\x8c\x9f~S\x9b\xcc\x9c\x92\xf5]\xe7\xf1\xce\x13\x89r'\xba,\xd7\xea\x82\xd3](\xce\xeb`~\xb6,\x1f\xac\xb6J\xf1\xbd\x1f\xe9\x9e\xa6\x1e\xf7\x131Cg=0\xce\xbd\xfd\xaa\x9c\xd8\xa5G\x87\x86\xbe\xa3\x89\xa0\x9d\xf1\x13\x86\x8e\xe7\xd5\xfa\x07\xfb\x00\xc7:@\x9fw89c\x13A\xdb\x1avO\\\xded\xbbA^\xc7\x82\x87\x81\x7f\x827&NL\x0f\x9aWQ\xcdW\xac\xf99\x91\xa7\x0d\x05\xbb\xa0\x92\x01\xf3\x84\xd9\xf1m#Q\xcd\xc09\x88$\n#P\xf8\x08\n\xf9Q\xf6\xcf]\x06\xef\x01\xc7\xbc\xaf\x8abS\xd7C\xae\xc2\xbe\x18Jv\x84-7\xf5=\x06\xc2\xa2\xc1\xa6\xb3T\xe3<\xc1\x8e\xc3q\xf6W\x98\xc5\x8fs\xe6\x87\x1ej;\x8e\xc2W\xb8\x7f\xe9Zy\xbe\x1f\xecX\x7fq\x94\xbb6R\xf4g\xfb\xc0\x06\x1f\x80A\x0d\x8d4\xce\xa7\xde\x8a\xfd-fT\xef\xd5\xba\xce\xe9\xeb\xf2\xd6\xaek3E\x0d\x00\x96\xed\xd8\xde\x83\xe6\xd88N\xd3\x0d\x82\xe74;\xe1\x0f\x87\xe2\xb8\x89\xef\xfd\xa6k\x93\x8dh\xf0'\xfe\x80E\x9d\xf1\x00\xf7S\xb9\xc2\x13\xc6\xc3(\x8d\xfb\xa8\x00\xbe>uY\xc3VX\x91\xad\xa2A\x1e5\xf9\xbf\xe3,a\xd1\x9a\xad?\x96\xedI\xc6;S\x99?\xf1.4\xa6tO'\xe3\x0dJ\xa2\"\xb6:\xf7\xb8V\x80\xacn\x9ak\x1f\xec\x90\x94}\xc3d0\xa5=\xed+\x10\xcc\xbdGM\x05!\xf4}G\xaf \x0f\\*\xd0\xb2qv\x9e\xfb\xf4~D\xc3\xe4\x02\xe21=\xeav\xcd\xea\xd85R\xbd6\x05\xed?tN\x8c\xbe\xae\xa8P(\xe7\xc3\x05\xd1\x07\xe7XU\xb5\x83\xa3\xf8\x9f\xcc\x12\xc2\x12\xf6#^`}\xcd\xa9\x1f\xf8\xd1\xf6\x87\x80B\xcc\xf6.\xe3S\xae\xb6\x8bl\xe4V\xd1\x97\x17\xb7\xdb\xe1zS\xf3\xeeAy8,Nb\xd1\x19$\xc7X\x1e\x01J\xef\xb4M\xe1Q\xd4\xe0\x1a\x87\xab\xe3i'/F\x8a\xfa\xda\x94\xf7#\xedh\x11c$\xf16?\xa5\x1a\xb0x\x92\xfb\xe5\x84\xbb\xc0\xf9`\xbc7\xbeeFd\xbe\xc4(>\xfd\xa2\xdbx\x1d\x8a\xeaC\xa3a<?w\x04\xc3\x80(\x19/*\x1f\xe0\xa2Bm@\xe6=/^\xb3\xde\x08\xcb|:p\x18[\xcf{\x1b\x16y,5\x99>\x1b\x8c\xc8<\x0fa\xde\x1b\x91\x1e\x04\xa4\x86\xf02\xea-\xf0S\xd1s\x85(\x9d\x973Bm\x9f\x7f@m;\xaek9?\xfb\x80Z\xe0\x93\xaeg\xdaZ\x8f\xbb\xbc \xcbm\xea8\xaf\xd4\xd1\x00;\xa3k?\xda\x9aBO\x1f\xd0pP\xa9\xe3\x99{\xf6v\"\x0c\xa0.\x93\xef\xf9\x03\xda\x12t\x15\xd8\x1e~\xda\xa9\x87k\xb6)\x0em\x15m\xdc\x85\x8aPA\xb1\xcf+\x81\x0d\x97\xee\x98x\xd5\x05\x8a\x14<\x0b\xacW\xb6\x8a\xcb){\xdd\x81\xa1\x1b\x1bF.\x89o\xaf)\xb0\xe1pP\xa8BG\x92\x9f\xb3%\xc4\xe7\x82\x87\xe9\xd2%\x8e\xd1@\xcc\x08\xe6<\x87\xf3\x85\xf9r\xa0\xa9\xd2\xa0BzrJa\x9fh\xc1\xad\x11\x04\x82\xf0\xdf\xb1\xaa\x835\x87\xe6\xcd\xf6E{\xfb-\x00\xbee\xe2\xfb,`)\x1e\xa3\xa3\xa3\x04\xec$\xbaH\x10\xe8\x10\xe1dzA(\xb9\xd4GHl\x12\xf8\x91j\x98\"Q\xbd\xf1\x93\xaf\xc2D\xdc\x7f\xebG,\xedS\x08m@\xc9\xcb+\x12\xa1\x17\xfe\x93>\x9b\x88\x1fv\xfeF\xcc\xe9\x12\xae\xdb\xac\x82\x9bo\xa25\x8b\x84\xfb\xfa\x13\x00\xccq\xe0\xe1F\x08\xd4\x12\xcf\xf9Ru\x91\xc2\xf1\xe6\xc9tpA\xf8p\xe8\x90\x130\xea\x85\xf0\xb7;\xa1`\xcfF\x84M\xfc\x14@4\xb0[\xbe\x90\x19\xb9\xaa\x8f\x9dQ_\x07\xa6\xa7y1\xda\xa86W\x8da%#2\x1c\xdaAB\xaa\xa1\xb9RB9\x8b@\xe8\xad\xd7\xda\x12\x0e&\x1f\xe7\xda\xe7\n\x9f\xcaq\xa5\xcc\x0420S]D\x0bQ\x8b%\x99\x82q*W\x1f\xb3\xb3\xb3\xcf\x9e/\xe5|\x91\x9d?;\x7f\xb6\xc8\xce\xcf\xce?\xd3\x89\xd5R\x01\x94\xca\xce\xce\xe8\xd9i!,X\x111\xe1\x8e\x91\x03+G\x84W\xc7P\x81\xe8#\xa2\xb9<)\x03\x02\x94\x92\xe1>>\xb3\xc7\x02\xd5\x9b\xf3\xc0\xe55\xab7\xc2I0\x02'\x10\xb98\x9b\x8eHo\x11\xa9\x14\xabU\\\x88\xde \x8f^W.\x9f\x15\x18p\x93Z\x1b\xd6V}\x0e5\x94\xd3\xb3\x82p\xf2e\xbcf_\x88~4 \xd7:,,F\xf9\xf3t<\x14\x08\xfe\xa6P\xbf\xa7j\xe8i\xda\x00\xee\x85)\x19\x13o@\xfe\x89<3\xc7\xb5\x90\x08\xc5y\x95z\xe8\xd5\x8c>\x15\x99\xf1\x07k\xe6\xc1\xdc\xab\xd54\xa4\xef\x8f\x14q\xf3#f\xfe\xbe\xa2w\x05\x024*\x05\xb4Al<J0\xa9Sd^2T\x88\x9b0\xa3b\x0e\xe2\xa0\xd1(\xa7s/w\xbe\x81\x18\xc8s\x87M&\x00\x0e\x9e|\xa3\n&\xda\xa3\x7f\xbd|\x1c \x92\xa3NX\xbd\xa2\xfc&\xd5\x17\xdd\xb0@-\x05)Z1\xc5R5=\x97;\xf4\xb4\xcc*\xaf\xaf\xe8]!\xc5\x92\xa9i\x0e\xbd!\x16W\xa4\xc7\xe3X\x18?\x18\xeb\xb5\xad~lr\xeb\xe0\x87\xb6:\xce\xd2,\x10h\xa7a\x90j\xa3\xab\xcf\xc0\xc4\xe3\xca$\xabb\x80\x82f\x08mhL\x92\x92K\x12\\\x90\xd4\xed\xc0[\xadB\x1f\x9c\xcd\x140:Ud\xbf\xf1(^\x15yz\x8e^\x87\x9a\xf2\xa8\x9f7\x1c\xb6\\\xa9\xd4\x11g\x9c\x19\xdcg\x81\xd0\xf5\xfa\xe1a=\xf3\xf4\x0c\x8e\x1a\x80\xd3\xa4\xf0\x18\x80\xc7\x1e%\x96\x97\xbe\x0d\x87%\x1cA\xd6\x9f\x0dJhb<a\x970\x05\x13\xbdA>\x1fz\x1epZ\x86U?@e\x18kM\x9a\xeb\xae\xae\x96\xab\xdf\x8a\x00\x9c\x0dj\xa8X\xac;\xdf7\xfd\xaa\x0e\x08/\xbaUD\x1e\xd6\x1a<\xa0\xb8Y\xc7\xfa\xe7li\xd5`(\x11\xb0\xa5\xa2\xbc\x85.\x14=\x9f\xbd\x1f\x95\xda,K\x1a\xadM\xd7]\xda\xeb\xfe\xa2(\x87g\x8f\xfdC\x90]V\x00\x1b\xa0\xe8w\xe1\xea%k\x83\xfa\x87\x84zGC\x9cr/\x978\x0d\xd0z\x15\xd9\x0c\x85%\xc8\x1e\x0c\xde\x97;\xca\xd3C\xaezKn1\x9d\x00F\xf6\xe4\xa9\x06\x19\x02\xfdA\xf0\xfd\x96z5w\xc2\x0e\x86\x0c\xd2\x1f\xb9\x04\x97\xf8\xa6n\x07\xdfP\x10\xbf$\x91#b/Z\xaa\x9d4\x0c\xf2x\xccr\xbb\x04\xa6\x96\xedq\xdd\xd92Q\xc7\xdeV \xa9j\x19\xa98]],b\xb0\x8c\x1a=\x14\xa9,\x81\x82\xb6\xe2\x92\xd4/\xaf\xffy\xa0V\x01F5\xf0\xf1\x10\xce,\x87`9\x02\xb7\xad\x8acpr]Z\x19Pjj\x1c\xc1\xdb\xc4Q>\x82(\xc7\xa8~\x0c\x1c\x93\x91iQ\x05|\xb7\xf6\x05\x19\x83\xe1\xac\xf6 \x1a(\xd4\xbf \x81\xa2\xbc\xf1p8\x80\x88ne\xc8\x06j*Ax\x03&?\x18\x01\x07;\xb3)gZ\x1c\xaa\xf54\xc5\xfe\xe0\xc8\xa8\x15&e\xf7\xcee\xf3xY\\\n\x8d}\xd4c\x9d\xd5}UUD+\xb4\x8d;J\xb42\xa9\xee\x90\x83\xee%b\xf6\x82\x0e,2c*\x96j\x12\n\"\xcd%y\x96\x9b\xe3L\x1ds\x18\x03^\\\x81\x8f\x9a)\xee\xdb\x9aVW\xbe\x03\xe2j-\xb9x~\x8b\xdd\x1fl\x02rHy\x15\xd2\x97W\xe4Y\xfb\xc6J\x81:\x1c\x1er\x06k\xf5\x9cZ\x86\xe3\xa3<\xf6{C\x8c*\x1d\x8b\nUf\xb5\xaf6\xe6TN\x05\xd4\x96\"\x1e\x91g\xe0\xe8\xc5va\x04[\xd2ZyP\xc2\xb8\xaf'*\x10\xd3\x19\x99\x8b\x91\x86\xd7\xa1<\xd1\xe1\xab\x18\xca\x8c\xa5\xcf\xef\x95\xf0\x96\x8bI\xef\x7f\x194\xecN\xdf\\\xc7F\xe8|C/^\xb1\x84\x11\xb3\xc8Z\xcf\xbe\x81\xec\xccd\xaf\xa3\xbaG\x86\xe4)yI6\x8dh\xadrM\xcf_\xa0\xd7\x96\x18u\x1def\xe0\xa1\x82\xe3s\xcc\x13\xb7\xd6\x04\x92\xf7\x08%\xe7\xbeg5'\xc0\xda\xfa\x9e\xda\x03\x0d\xc8\x98\xa4\x03rI\x9e\xb6V\xa45\x159\xc5\x01C\xf9\x89\xe0~\xd8/\xeej\xff\xac7\xb5\xad\x95\xf1\x82\x8d]\x03a\x16\x17\xe4\xa4?\x1cf\xa8\xd1A\xc1 :\x90\x16g$+\xcdH\xb6\x04\x9b\xbe\xd2$\xa84P\x7f\xd8<5]P\x03\xb5\xa8\x8d:0\xb1\xb8\xa2[\xca\\\x84\x00\x04\xf8\xe6\xd1\x06\xe5R9\x0b\x8aj0\xb5\x10\xb0\xbe\x81\n\x01\x9a\x9e\xb9\xe9\x0b\x90\x9en\xd4\xc5\x87vs<\xce\xc9MF\x86\x8ae_\x03\xeb\x81\x93\xbfn\xc4\x07\x94\xf1\x0e\xea\x93PN\xc3tFhG\xc2\x84\x8a\x85\x0c\x16\xa7\x93\x1c\xfd{\xa29\xf5\xb0\xbb\xc7Q\x9b\xf0\x10\xb5\xd9\x93\x97$l]\x89/\xce\xb5\xb1[\x05\xdb\xf7\xc3\xe1\xa0\xb5\xa0\x1e\\\x85\xeey\xac\xdf\x90\xde\xfd\x81\xa5\xc2\x8f\xb6\x1f\xb2\xfc\xf5f\xa3\x0e\x13\xac\xe4\xbd\x92\xc84\x11\xc8Y\x17\xab\xeaA \xeaaa,\x01\xc9\xf3\x91\xbd\"{\x14\xce X\xed\x9e\\\x92\x10\xc2\x11\x15\xd6\xe2~@fd\x0f\xd4,D\x81m^\x98\x0d\xa8/\x17[T\x1d\xe3b\x0b#\xcd\x0bP-TS|\x17\x8e6\x8cO)\x94`b\xb3\xa39\xe9\xf7K\xe8\x10\x97\xd0!^\x02`\xfd\x12\n\xc4\xcb\xc1\x00\x03\xa09IZ\xfb\\7\x8b=~\xabXc\x03+\x9fLGpW\xe7\x0c\xaf\xa6l\xec&-!\x97d}A\x92C\xb1\x0b6\xf3d\xa9/eE\xb0\xfa\xdbt6\x04\xaeA4SC\xf3sSE\xf3k\xf6\xd0\xb5k\xedtf\\\xfd\xdb\xc9Q{\x14\x93\x98\xcf\xd1\xa88c\xa0A{\xfa\xf4\xd3:\x8dF\xc1\xb3\x03\xde;\xdb-\xa2\xc8\xf1x}\x18\xe8\x12f\xc7K\xc7\x8a\x0dH\xf9\xc0aT>~\xb8\xaa\x9c{v\xe4)y\x99\xa6\xa0\xc1\x9a\x19@\x84g1\".wue^P \xed\xfb~0\xca\x97\xa8\xd5K#\x11\x8f\xbb3\xbf\x02\xa0M\xf1om\x9c\xdb&\xa6T\x190\xc5\x1b\xe6\xd3\xa5=\x1d\xd2K\x0b\x17\x13\xcd\x97\x16F\xac\xd6s\x93\x90!\x01Z\x94\xcd\x93\"}\xb2\xe9t\x9e,\xdd\x8a\x83\x12\xf9L\xff.xd\x99\x17:\x0cJ\x0eq\xbf~F\x86%9Gm\xd8\xd3V\xce\xf4\xec\xbcE\xee\xce\x80N>zD\x9e=G\xc9\x1b\xa4\xf0\xe7\x07\xa4pX jEN/HF.I\xea<|\xac\x88\xd8\xb5Vm{O\x11B\xda\xd8\x1e\x01\xbfrVT\xf5\xab(\xef\x9a\xfe\x93\xbe\x8f\x1b\x80G\x8fH\xff\xe4\x84k\xbb\x10-\x13j\xa1\xac\xe3b\xd8\xf1\xe6\x85\xfaaR\xdb\xa0z:}\x14N\xda\xe4\xcai\x90\x0b \xf5\xf9\x90s\xa9\xf4y\x9b\x90\x86\\9.\xa3\xe6\x80\\\x93\xb1\x12\xa8\x0dzE\xae\x89\xe6\x15\xf4\x02)\xe0\xd9S\xfd\xack\xe0\xe4\xb2\x84\x07\xf5Zlc\xbc0Z\xf5\xce\xc7\xad\x9d?N\x0e\x8d\x0f\xadD\xf0\x83\xa8F&_&c\xd7\x1e\xb3e\\.\xc9\xb3\xcf\x14ZF\xe4%y\xfeic5\xa8em\\b\xbc\x1d\x08b\x15=m\xa0\xa8\x1d\xdegj\x0e\"ry\xa5\x80i\x13\x9e\x9e\xa1\xee3R\xb0?{a\xa2\xa6\xb6\x88\x16\x16\xb4\xda\xd7\xa6\xe3\xf7B\xa9\x07\xa2\x87yj\xa7\xd7\xb534p\x87\xd9\xb2\x9b\x19)\x01c;\"\xf7#\xb2\x1a\x91\xb7#r;\"_\x8d\xc8\xdd\x88\xfc0\"_\x8e\xc8\xcd\x88|\xe1\x10\xe1\x00\x15\x94\x08\xa9q\xd4(\x14\xb6\x8e\xbc\x0d\x1a;=\x89\xaa\x12^\xaa\xa4\x95lB\x03\xd3\x96Q\xfe\xd0\x8dO\xe8B\xaa\xb5\xbe\xcf\xed\xb7\xef\x8aV\xb8gG\x12l\xace\xb6\xe4\x1a\xef\x017\xafV\xd8T\xa2\xffj\xad\xd4\xd07\xca\xd5<\x911I\xf0~fg\xfa\x1e\xf35\xe3l\xfd6\xf0S\xd1$\x97A\x9e\x19\xd972\x82\xdb\x87KlJz\xed\x08\xea*\x0b\x02&Z!\xfdpx\xac\xc9\xd2[\xbd\x07\xbak\xdb\xf7\x81\x81\xce\xe0\x82\x9c\xf4O\xfa`\xb6\x836\x98\xb0\x81\xea\xdfW\xd5AkD[K[\xe9Rkf\xee\xc9\x98\xac\x958\xf3\x0cX\xb6*\xadPhG.\xc9\xb4\x94\xa2\xa4\xa8uQ~\xa7\n?v\x9dg\x1b\xc6\xce\x17,<0\x80_}\xc8\x00\x06\xd5\xdd<\xea\xc5\xc0H\xc1\xec\xf5\x0b\x08\xbdq\xec6\x8a;\xf1\xfb\xeaN\xbc,\xdd\x82e\x965\x808\xab\xefU\xb4}`\xd3\xc6\x00\xf7\xa6y%j\xaf\xfe\x16f\x11\x88\x99\x1a\xf5\xb7Vn'c\"\xc8K\x9c\x14\xa7=X\x15\xba\xa0\xda\x9b\xb4\x08\xaeW\x83v\xf3\x80\xa9|\xf0&\x050\xbd\xb0'\xf9\n\xb7(tD\xee+\xd2:\xd1\xa6xj\\\x8a\xa6g\xf8~\xbc]\xde\x8d^\\?\xa0\x82\xe1KrE\xee\xec.\xe8\x07rI\xbe\xbc ?4)\x18\x14\xe9\xbd\x9b\xffP\xb4\xe3kW.\xdc\x1cP,4+\x15\xea\n\x05\xd5\xf8M#\xc7W_\xb7m\xf2C\xce\x08)HAg\x83&Eo\xeev#\xe7{\xe52\xee\xe6C\xb7\xa4\xb0\xd6\xf7\xf6\xeb\xad5\x1cXuAB\xc5\xaf\xca\x1c\x04q\x91T\xa8\xf5\x831\xf4\xd6bdn\xc7\xa8\xa4\x8cG\x8f\xda\xcd\x0cHY\xf2G\x1c\x07>?$\xe7\xf5q\x03\x9c\x8c\xf4\xde\xe8\xdc\x08\xcc%\xe6L\xc6\xe4\xbc\x14\xb7\xd3f\x98GKcAevi\xb9\x851\xd2Y\xad\x08\xca\xf3\x0bm\xc6\xd9\xcf\x13U\xcb\xcb\n!+\x14(\xa4G\xe8\xd8\xbc<Xj\x18V\x7fO\xda\xf0\xe3\xf6\x1c\xde\xa1=\x87\x9a\xb9g\xe4%\xf1Z%\xb2\xcf\xa7n\xec\x0f\xda\xb5\xdf\x9f?k(\x06\x16U\xbf\x88\xe2\xdc\x9e\x8c!J\x82.\xc1\xbb Y\xb3\xb5\\\x93>1k\x97\x82\xa1\x7fO\x9b\x8bv$\x08\x99\xb6g\x1b\x92sT+\xf43\xb3\x0b\xf4\x14\x17x\xfe\x99{\x08\x87\xc3lPVDd\xc3\xa1\xc2m\x16\xed'\xe6VCjn\xae\x94\xd2 \\c-\xeb\x84\xb3\x8d3?~\xd0\x85R+\x9a\xe3\xf1f\x80\x0b;S\xcb\xb8\xa1\xcey\x0f\xae\xf0\xa6Km\x1a\xd9\x8d\x04\xda\x9b\x19o9\xdb0\xce\"\xafY\xbdIW\x8a\xda9\xe2\xe1\x1f\x14\xa9\xe2*?\xae\x1d\xf9\xd1\x03RTI\x10\xcd\x06d\x8c\x82S\xf1\x08%+\x0b/\xc3+\xf2\xac.M\x15.\xa2\x14\x1b(1~C\xd9\xec\xd7\xe1U\xedx\xc7\xb6;.}k\xd1\xe0\xe6\x82Z \"Z\x86z\xac\xa1.\xf6\xdd\xaf\xf64\xfe\x90\xd9}03SR\xca\x07\xe9\xbcL\xea\x07Q\xe7\xe3\xe8\xf2A\xad,\x9c\xe8\xb7ka\x9f>o\xd3\xc2\xe2\xb5\xb5\x03\xd5\xe4ZW\xb3\x16\x1cd\xe6\x82<}\x9e\xf3`P\xce\x82\xca\x94\\^\x91\x17\x17\x03\xe2\x83\xf1Wci\x17\xd5;\xe9\xfb\xe4%y\x81\x10\xea\xfa\xb4.&.S\xb5\xd4\xae1kg\xd8OG\xe4\xa9\":\xf9\xcd\x90\xfa\xf7\xe7\xea\xbb\xda\xfae$7\xcc\xac\x01H\xf3\xcb&`=?(\x08DG\xeas\xf1:W\x13\x8d\xda}\x8bX\xec\xb8\xc9\xfd\x11\x94\xbev\x0c;\x02\xebG\xaa\x9dv+\xa8\x9c\xc6CH\x1fm\xc2r\x084\x18\xb3\x07u\xd1\xdb\xf9\xc1\x1a\x1ci\xcd\x97\xb5\x0ev\xec\x97\x99\x84&R\xd26\x0b\xbf\xacZ\xdd\xa4>\xc4\x12pd\xee\xe1\x88F\x8bV{\xa7K\xcb\x10\xcd{GG\x86\x8aa\x8e=\xe0\xe8\xf7K\xec\x91\x96\x88\x1a\xd5:|\xbfH\xc8\xe8R\xcb$\xfdg\xcf\xf3\x8b\xb8\xb5U\x17#mz\x81:_\x8eE\xe2\xf2B\xee\xc7x\x17\xc6BQ`\xb31l\xd7\xfcb\xb9F\xb5^\xe1>\xdc/\xb0\x9cM\x17\xb4\xbe\xe9\xfca\xa8\x7f\x00\xf7:\x82|\xdc\xa2\x06V\x9d\x1f\xbd|\xdc\xe5\xad\xa8\xea\xbf\xf2\x12\xef03\x87W\xfc\xe0# \x16\x85;\xdfg\xe7\xd5\xbb\xdd\n\x81O\xdf\\\xf6\xe7:x\x9fvu=_\xa4\x8b\xd3\x97U\xd7n>f^\x9c:\xb2\xbf\\\x9ev#4#B]\xb4&?\xa0\xa8H\xc5\xb5\xa1\xab\xd8o\xd63$e1\xba.\xbbxJvMF\xe4$\xdf\xdc\xedD\x18\xb4\xca;\x89\xa2M\x8apx\xb0[zyu\xc0<\xf4\xc5\x99{\xeb\xe4\xb5\xef<\x9f\xe2\xa6\xae\x9f\xb9H\x97\xa7w\xae\x8a|a\xbe\xaci_Y8{._rz\xdfv\x1c\xf3\xecS\x00\x1a\xa4\x96\x93\x96\x1b)\xe6g.\xa5<='\xb2z\xf5\xc0\xfc4\x18`t\xf9\xf9\xa7\xaaf\xa1d\xb7\xe9\xf9y-\xfb\xfb.\xdb\xdeg\x9f6\xf7\x9c\xd8c\xa5\xeaV\x11-a\xd1\x95\x9e?(\xb6R\x87\"W\xd2\xb5\xd7\x13\x0f\x0eC{\x82h\xc0\xe7\xe9|Zq\xd6\xb7<X\xb8y\x12Ko\xd6\xbcG\x9b\xa7\x05\x18\xb8P\xdf\xe2RS\x99kw\x83\xc1\xc5\x80\x04U\xbbz\xab\x1f\xd4\xec*\xe8N\x11s\x17\x01\x07h\\\x07\xca\xed\xa2\xdan\xcb\xf8`D\xce\x80J\x96\x87\xe5\xa3\xa9\xca\x0c\xcd\xfc\xb9pmz\xde\xa3\\\xf8\x1e83\xe8\xd1\xd4\x07\xe7\x17\xbdU&D\x1c\xd5\xddF\xac\xe2\xf5\xbd\xfa\xeb\xd1hOS|\x02Z\x03\x8fq\xa0\xffly\x9c%\xeay\xbd\x86\x7f\xfd=\xfc\x81\xcfk\xa1\xfee\xe1\x8a\xc1\xb7\x8d\xcf\x82u\xca\x04>o\x0b\xd5m\xfcm\xc6\xa1U\xb5\xb3e\x1c\x9fx\xa8\xfe\xee\xa6\xf0\xef9\xfc\xfb\x14\xfe}\x06\xff>\x87\x7f_\xc0\xbf\x8c\xae\xb1\xd4\xce\xc2\x03\x1e2z\xfe\x86\xd3P\xbb\xc1P\xff\x86\x14>\xc6\xe0\xd9\x0f\x9e\x00\xd28\x13I\x06\xef\xf09A`\x12\x1eo9K\xa1\xf3\xe8b\x12\x9e\x98g\xe0N\xc5=\x8e\xa6\xf1\x11\xd1\x13f\xd8\x04tY\xb0;A9\xa3\xf0\xbc\xc1\x0b\xaf=\x01~'\x04\xc7gF!g\x06p\xec\xfd5\x8b{\xcb\xc9&\xe6_Qo\xd7o\xb9\x808g\xcb\xf2\x0dP\xad\x95\xfa\x90\x1b76\xb9\x8b\xf9\x8aCr\xcc\x95)\xb5u\xc0\xdb\xb6\xecv\xf9\x16N\x8e\xc1BdL\"\x97\xb7\x88v\xf6\xdc\xf5\xcau\xd1\x8a\xa0\xce\xc8\x04\xb2\xc9\xc2];\x17\xbb\x0bJ[]\xe4\xd8Am\xd7\xd0RA\xbf\xa4\xfa\x08J\x12x\xb0,\x9f\xcc\x06\xcd\x14\xd7\x87\x0b\x1d\xa80\xd6\xbb\n\x87J#\xb7\xfb\x81\x1b\xbfZ;\xea\xb7\xd6J\xady\x030\xef\x1199}3\x1f\xcf$Y\x0e?9EW\x9b\xb4]$\x80\x1b\x08\x14C\xa9\xf6{\xb2\xa7\xf6\x1f\x10\x03\xb5M\xad\x92\xe8\xeb\xe7)Z$\xa6\xe4\x92\xe472[no\x9f\xc0\xb9\x947O\x97\xe6\xdaH\x1b\x9fE\xff\x05\xa0\xb8M\xe1\xd1+\xb9W2\xd7\xb2[\x05\x83\x83\xde\x98\x89\x01\xed\xf4\xcd\xecz<\x9c]\x9bq[\xb7\xb3\xdf\xe7\x9f\x01H\xeb\xd2\x81Y \xbek\x92 {se=S\xdf{\x18b\x0b\xce\xbe\xb8\xbf\xdd\x89\xde\x80\xcc\x9c5\x9f\x15\xaa\xeb\x05l\x839MB\xaf\xed\x06\xb7\xea\xdc\x18w\x0c\x05tq\xdc\xdb\x81\xb9o\xc1\x14D\x14\xeb\x9d\xed\xcdB\xca\x85\xfc\x04\xfc\xb3\xf5\x06\x05\x04\x1a\x91\xc4\x8c\xc3Ia\xd2Z\xeb\x8e\xdb-_:\x8a\x0b@\xe8\x0f\x98)\xec>\xc4L\xa1+\x1c\x8ao\x1c\x80C\xc1\x00\x8b\xf6\x97\x84\x83\xff\x92@4/\xfe\xae\xe0\xed\x9a\xc0\xa3\x81\xbf\x8df$\x99\xa7.\xc0>\x02\xec\x1d!<\xacw(\xd0\xb2\x8f\x00\xe9/\xa3W\x10\xbb\x87\x1e@|\xc0R\xe4\x0fm\xf3\x88n\xa9U\xf6\x8b\xb7\xa2d\xc6\x03\xcbh\x0f4\x05\x8f\x0b\x1fDW\x8c\xa0r\x8e\xdb+}\xfb\xa7Efy\xf4\xc88)\xcfiz\xe0\xa6\xe9p\x83\xbd\xd1\xaa\xa6;Q?4^\xa4\x0b\xdd!\x87F\x83|0q!\x058\x1a\x8909DdHW@7F\xa0\xc9\xc3\xf3+Q\x0f\xc4\x15\x95\\e\xe2p\xabrD\x9a\xf2\xc0{Y\x8a\xa8$\x91Y1\xc5j7\x8f\x19\x97F\xb2F\x8a\xa4\xad!\x8a\xca!\x8aE\xda\xa8\x16\xe9\xb8\xf8Hi\x12\x9b\xd689\xb4\xce\x89\x83\x8a\x11\xd8\xa2to\xbe\x99\x90\x91n\xcd\x97W{\xe9\xcdn\xad\x8e E\xbf8\xc1\x03!\xea\xc1\xad\xec\xd0\xfcj\x8f\x7f\x82QI\xed\xf3a\xea\x13\x9b\xdce\x03\\\xb0\xe2\xea|r\xedw\xd8\x06\xc7j\xd3\xe7\x1b\x13z{M\xdf}\x18d\xees\xe8\xbd\x1c7\xc5b\x14\xc7#\xd7\xe9\x8f\xce\x12\x95\xda\x89*\xe3F~\x91}\xb6\xb5\xd6o\x15\xd0\xfb,\xf7\x08\x06\x96\x85\x8f\x1e\xd9\x89x\xe9t\x9d\xb7)\xee\xc3\x8d\xaep\x03\x05\x87\xc3\xcd\xc1m\xbc\x9d\xb3\xcdQ{w\xdf0\xc6\x8d1\x81lm\x03\xd0\xf9h\x9b,m\xa7\\4\xfb\xeb\xbc\xd2\xd6\xc1\x01\xb9\"\xf8\x90\xbdJ\x866\xe9J<\xa8\xf8\xafc\xb3\xb6K2\xf0\xe9^\xdb\x0dn\xb5\xd1\xed\xa1\x1e\x91B\xaf\x1a-\xedIA$\xceF$\xfb\x10\xb6{\x04@\xdd\xb8]A\x03\xac`3\xd8Z\xf4\x8d2m>J$\x1d\x8f\x13I\xb7!\xf8\x98\xfcs\xddlKK\x0e\x11t\x82\xfc\xd3\x89'$_\x9d\x07A!\x05pZe2\x92\x8f\x8f\"k\xf3\x8d\x1b\xf9m\xd6C\xa8B\xf4x\xe1\xb5\x1b}\x9d`\x0d/\x86\x86\x8d\xf4\x89^a\xa6\xf7\xc5#>\xba\x1c\x81\xd2\xa0j)W4\xd9gE\x1f\x89E\xfb\x03\xd8\x12\x14\x13\x14M/\xdd\xc5\x18\x91\xf6\xab\x08\xb9\xb7b\xa7\x91\x1bu\xdfF\xd8\x82\x81\xd1\xbd\xb9\x8d\xb0\x05\xb0\xf4\xf15=x\x1b\xa1\x08\xee\xbe\x08`X\x83oW\x1d\x8adT\x1e\x8du7d%%\x0ciCX\xd2\x05i\x89\xd9F\xa0\x18\xb2\xb1\xfdW\x02\xfb\xcb\xfc\x02^\xd3\xb1\xe2\x01\xb6s\xb0\xac\x83\xf9\xb4\\\xf8\x03\x1a]_x\xb5\x14\xe4\xa5/\xdb\xee\x0f\xfa\xda-\xf0\xa6\xc8j\xb3f\xb7T\xa5\x8e\xd6<\xe3\xb4\x95\x82\x8d'\xd0\xc9\xc1a\x90J\x17@\x1e=\"t8\xcc/\x88t\x01\xadn\xec\xd3\x06\x9a\xef\xbe\xfdP\xca\xfc!\x92\xf8:x\xb8\x80\x1ch\x94,H\xc6\x9b\x11\xb9\xff\xc7\xfd\x04\xe7\xfd\x04\xef\xa3\x1d\xba6\x8a\xcb-\xdb\x87\xe2\xfd\x04\xb7\x91\x9a\x0f\x1e\xb6.\x8d,\xaf\x8f\xc5\x07\x95s\xf1\xd4\x11=\xceZ\xf37\xde\x14\xcc}\xce\x0fP\x13\x12\xd5\xaaE\x9dH#\x19*\xe8\x90R\x971\\\xdb\x0d(\xeb\\O\xc9\x7f>^\xba\x82%o\xd51>\xb9$\xf4\x82\xf8m^]\x88\xa1Is\x1f._\xa5]._\x99_\xdc\xc1\xbb\x0b9\xe8\xe1\x858i\xa9\xf9\xe9\xcdM\xd7\xfb\\\x9aN\xe0j*\xda\x0c\xa4\xcd\xd2b\xbe\xd0\xd3\x11\xe1f\xf1\x15\x97\xca\x01rSYzu\xa2\x03K\xc9\x1d\xf5\xa8\x8b\x19DY\x8c\xaaQ\xac\x8eP\x1eV\x96\xf3CMw\xb4\xc1\xfb\x85\xec\xef\xf2an\"\xeem\xe3\xdc6\x86\x1f\x8d\x88\x1d\x8e\xb0r\xfe\xf4\xb9#\xc0J\xd4?\xff\xb4\x92L\x1b\xe2\xae\x08vgbc<\x9d\xba#wD\xec\x16\xa7\x1as\x9d\xbbs\xb1\xd4\xa3\x89\xcd\xf4\xd4\x9diE\xbd\x1b\xe1{7&\x8a\xcb\xd3\x86`!k\x16\x98\x1c\xcf\xdd9\xfc\xc8\xd6\xf1\xc2\x9d#\xa4\xdc\xc4\x1ay\xda\x10Q\x86\x85\xc9\x8e\xa6\xbe\xad\xe93w\xb64[\x99\x1c\x9f7\xe5Ht\x8egg\xee\x1c\x81\x1f\xd9^?k\x18h{\x95\xc4\xac-\xcc\xdd0\xe0\xc5\x8b'&k\xc3\xb0S\x1d\x1e\xc8dk \xd1\"\xa8 \xe4\xf2\xaca\\Y$|qo2}\xd6%0J\xf6Q\x02\xa3\xe4^\x90\x9c\x81Q\xa8 \x8cB10JE\x11\x0c\xd9\xf7\x18\x81\x99}\xebG7\x8a@\x17\x16i\x1d\xea\xb4n\xe9\xb3\xb7\x81t\x91\xd8\xb7E\xcc\xd5\xbc\xc3\x1c\xc6\xabb\xbe9z\xf9J\x8d\xa1\xafXI\xf1\xf8f\xd63\xf1hU\x89\xb9\x0d\xa6\xdb\x1b\x15\xe3\xed\xf6\xc0H\x0bM\x9c\xd6T\xd0\xde\xd2\xd6 \xcc\x11\xce\xac7\x98\x9f-]\xe6:Y\xc5\xe7\xf5kE*[=\x86C\x9fG\xc6KLa\xd4KQ]j\x88\x02\x8ez\x8d\x8e\xac\xf6\x15u\xafI\x9c:4y([y\xd4\xdb\xb1\x7ff\xa2\xef\xc3\xe5\x97\xb3\x01\xe6W\xe8R\xd1o\xb9MP1l\x03b\x8f \x97$\xbe \xa2Mx\xe2s\x01\"\xcbI\xc1g\x08\x04\xe2\xd2\xa0\xfc\xa0@\x19!\x10\xce3\x86$N\xf1\xdeb={)w>\x17\xefG\xa5\xe90\x1b\xfd\x8e\xfe\xdb\x0fNIy\n\xf2!G\xf7\xf40\x98\x97\xc4o\xd6\nF8x\x91q1s\x02\xc3\xc9\xe7\x11\x8e\xd3t0\xc0}\x84{W\xd6\x18\xe8\x187z\xaa\xf5\x97`\xef\xd4z\xbb\x9dM\x12\x16\xad\xfdh\x8b7\x04S\xee\xcd\xf5H/\x1b\x06\x95\xe0d\xe8R\xa0\xf7P\xe4\xe1;L\xe8\x0f\x9aF\xff\xd8\x802\xcdaO\x1ct\xc7\xeap\xfcF\xa7\xdc\xd9\xaf\xc8\xb1bB\x9dd\xf1:\xc2\xa4\xb7\xbe\xf0v\xc4mw\xed\xd1\x94\x91\xe9\xd9\xcc\xfd\xe1\xf3\xf3\xa6\x0f/\x1a><k,\xf1\xbc\xe9\xc3\xb3\xa6\x0f\xd3\xa6\x0fO\x1b><m\xfc\xf0Y\xc3\x87\x17M=\x7f\xd1\xd4\x8f\xe9yS#\xd3\xf3\xa6.>m\x1a\xad\xa7\x9f65\xdf4(\xd3\xf3\xc6\x91o\x82\xebE\xd38>w\x8c\n)\x98\xd29vbk\xb6\xa1Y \xda\xcb5\xf9S\xeap\x94\xd5H\xec\"\xcb.\x80\x1c\x192\x06T\x89\xd7]7G\x83\xc1\xc5@\xd1&'G\x8e\xf4e\nE\x82\xd4\xb6L\xe8\xbb\xe2UJ\xa3\xad\xf4!\xa3Z\x87\x83Q\xce\x82\xca\xf6\xe2\x1f \xe2w\x1e\x8b\xaa2\xc8\xc9;\xa7\x0d\x17E\xe2v[?=\xbc\xd8\xff\x82\xf1\x81\xd1#\xe1h\x8f\xc8\x89p;\x9a\x85\xd3\xcb\xb3\xd2\xf5TSYyV\x9c\x88ck\x98\x1e\xacA\xbb(9\xa0\xc6\xb0\xf4\x19U^>\x9eS\x12\x7f<>\xac\xb9\xb0~\xd4\x1c\xcd\xfb\x9d\xd4\x189\"\x15\xab\xc9\xedE\xce\x14+\x1e\x92iC\xe8\xd9\xe2\xefC4\x1d\xec\x90\xfe\x9d\xe4[\xe1\x1d\xe5kh\xabE O\xdaw\xbd\xc5\xdf{\xf70\xd7Xzi|\n1SG\x87\x81\xd7\x80\xa7\xf1F\x1c\x02\xbc\x03\xd0N\xa3\x11\x0d\xeb\xc1\x13\xb7C0\x1ch\xdfiv\x17\x0f\x87\xe8\x19\x9a\x93\x96;\xdf\xb1\xa2rq\xe3\xfd\x1b$U\xf1\xc7RF\xd8\xa5\xc5\xb59\xb8\x0e\x9c\xa2\xc0<\x7f\xfe\x02\xfdP\x13\xbd\x19;+\xf4\xaa\xb7X\x9c,z\xbf\xfe\xe4\x9f\x1e=\xee\x0f\x9e\x0cG\x93\xd3\xd9\xc5\xe5\xd5\xcb\xeb\xdf\xcc\x97o\xde\xfe\xf9g\xf9\xfe?\x8f{f\xe3\xd2\x1bt\xbboQ6\xb4Z\x92\xabb$\xa9\xca\xe5\x8b.d\xd5\xd2\xd4\x96\xad\x8a\x92\x9bk\xa4\xf3\xf3\x06\xbf\x8b\x07(\xeep\x18\xe3\xc5\xdf:j\xf9\x8d\x8e1\xf1\xb6\xf0\xf9\xf3\x17\n)\xcc]\xb0(\xbf\x88\xd0\xc4\xc8\x8c\x8fg\x85\x10\xc3+r>r2w\xcd?\xb4\xc3J7\xca\xebM\x15\xf8\xf4\xea\xb6B\xbb\x90\x96N+\x14\xa2\xf2 \xb6\xf9\xc7/\n\xf3k]\x1c\xb6\xb1_5\xbf5\x0fuo\xb1\xe8\x99aV\x1b\xc1\x8f\xb3\xea\x8eE\xe4\xd29F\xb3\xa0\xa0c\x89\x1c\xe3*\xc8\xee \xb3\x11\x01\x0f=\xbc\xb4\xa1\xcc\x0c\xb5\xfa\xfcE\x93+\xa1\x8b\x81*\xe8\"w\xa4,rE\xe8\x12\xc3\xd7\xc1_\xb3\x0b\xb0\x84\xac\xdc\xa7)D \x81\x93\xbf\xe6\x8d,\x85sx\xb8\xceH\x0fAIU=\xd4\x85>>\\\xc0\x19+\xa8\xae\xf2\x00\xb6\xe5\xc5\xd7\x85_4\x84\xed!\xa4\xd9i\x85_\x08\x93?'\x8bh9\x04\x93]\xd2k7Q1\x91|\x9a,S\x0e1\xa6\\\xde\xa5\xb5u\xd2uU\xc4E\xca\x93G\xfd\xfd;Z\x1cJ\xb2\xadu>m\x91\xb1\xcf\x1b\xd6N\xdaN\xf2\xdb\xed\xd7R\xf4^\x06w\x91[\xb257\xfe\xcb9\"\xf3u \xce\x94\xbc$g\x18\\\xa0\xda6\xd8.\xcf\xc0)\x96\xd3\xa7\xb9\x82\xee|0\x02\x03\xca\xab\x83\xd7\xdcL\xaef\x9f\xe7~\xee\xed\x8c*\x9c\xd3|\xab\xb9\x00\xd0\x01\xaeC`\x9ec\xdc0\xb8\x99n\xda\xaa\x81\xcc\x15!\xa8\x05\x0d\xf3\xd1\xa74T\x93\xc7O\xb2\x08\xce\xc9\x98\xa4\xa3FF\xacWt:\"\x1c\x0f\x89\x1c@\x9a%\x97\xe2A~\x8c\x8e\xe4u\x0b\x10>.k\xf4v\xdd\xd8\x19TC\xb6\xf6\xd7\xb6\x80\xceH\x9c\xf7\x161\x0f\xda\x0dY[Xj\x96\n\\\xd2T\xc3\xea@\x11\x9b\x01\xd1\xc4\x82b\xef?\x9a\x8d\x17\xbc\xd8P\xa8\xd7$\x1e\x8f\xc9\xcc:\xc1/|\x84\xe7\x18\x1d6]\x82\xa7\xe7&\xa1%\xfa\xc0\x18J\x04wSxjou\xe6}\xd6\xc1\xd4;\"\xd7zF1\x06\xaa\xd6%T\xe6\xd8\xa2K\xbb\x15\nk6 m3\x8c{\xef\xf6\x98\xd6\xb6\xcb*\xb4\xf8@\xc3\x97\x02\xef\xb0\xdd\xd7\xd6qv02P\xa2\x90Y\x01\xe7A\xad\xfco\x963h\xdf\xfd\xff*\x8c\xa1\xb1\xed\x7f\x13|\xe1\xd9\xd3\x0elAg\xfa[p\x85g\x0d\xee0\xdb\x98\xc2\xc9\x95\xae\xe7\xef\x8e-4\xf5&\xe7\n\xad9\x8e`\n\x1a\x0b\x1f\xce\x13t\x05\xff` \x9dX\x82\x1f\xa5\x7fc\x96\xa0Z\xfc\x07K\xa8\xfcZX\xc2\x8b\x06w\xc3\x7f\x0b\x96\xd0\xd8\xf6\xbf \x96\xa0\xdd\x9e\xb5\xb3\x04\x9d\xe9o\xc1\x12tS\xffNXBSor\x96\xd0\x9a\xe3\x08\x96\xf0b\xfa\x81,AW\xf0\x0f\x96\xd0\x89%\x84\x94\xdf\xfc\x8dy\x024\xf9o\x8c)\xd8\xe46\xd3 \xb3f\x89\x0d\x00\xc50\x00\x14\xa8\xfaT\xea\x8b\xe76\xf5\xf33\x9b\x8a\x9e\xe9X\xd53\xdd\xd1Q\xb9\n\xfeR\xeb\x03\x9b\xa1-}-=mH\x0fZY\x98\xe7Z\xc6\xc2u4\x85\x97\x0c\x1a\xc8\xbb\xc8\xc9;\xeaZ\x03\x18\x89j6\x8a\xa1\x95=\x97\xaaU\x0f:\xdc\x16\x81\xd2`5\x0f\xf7\x9a\xfa\xa8\x10\x1e\xeb\xab\xa7\xcf\xc85\x8c\x02\xf4x\xaa\xf0\xe3i!\x9a\x1f\xb6\xee\x80\x91\x16U\x10H%bt;o\xda\xd1\xd5D\x85\x1c\x91u\xe1\x0c9>G\xa7\xb0\x1e\xc0\xc7\xfb\xda[\xad\xad\x80\xf7\xe3\xdc\x15\xf3\xc9t\xa0\xd0\xbc\xbe|<\x1a\xc1J\x9d\x91\xcc1!4\xc25\xe5t\x07\xbff\x81\x1f\xa63\xe27\x10\x97\x07\xd8Z\xe4RO\xf5\xdap+\xe2l\x9a\x0f\xce\x12\x17Nm\x06uF\xa9C*&\xb0\x01\xc0\xb1O>@<R\x18\n\xce\xc0b}#k\x82\xc35\"'\xc1\xc4\x0cz\x9d#G\x07\xb9\xf1\xc6\xd8\xf398\xf2\x87HM%n\xbe!C\x05\x8az\x9cG\xcb\xdcP\xcf\xeb\x1a\xb7\\\xb3p=\x8aN\x96T\xe7r\x0dF\x94\xc4\x8a2\xc5!\xd5\x83`\x87\x15G\x15\xb0\xf5\xa0m\x86\xa2f\xe9$\x89\x93\xbe\xbe\xb4\xcc\x15\xa1P\xc0\xba\x85\x95\xe2\xcf\x87\xdbn\x97u\x9f\xaf\xae\x9f6\xffW\xe4\xa2\xea\xba\xdd\xf5\xfb\x10S\x0bba\x1b\xc3Q\x89\xf6dfO\x88Z\xee\x02\x9a\x9f\xc5B\x8a\x04_\x0fQc\x99\xf6\x1b.U\x00\xdaG+\xc2\x03\x1e\xbf\xc3\xf5\x9b\x87\x04W&\xc5\xee\xf1\xe6\xfa\x8d\x837g\x06w\xd5\xf9rV\xa4C\xcf8/\x9e8\xf1Z9\xa7\x04\xe6\xb7K`zM\"y(0\x87\xa79o8$$\xa5\x82\xc7\xcd^\xb8\x0fJf\xd3\x075\xda\x12\xc5\xedP\x83nQ\xf0\xc1`<P<\x1c\x91\x0f\x1a\xed\x07\xb6\xea\x16J\xa3\x92P\xea\xd5\x84\xd2\xcd\x07\x0b\xa5&\xd5\x18\xd9\x9c.\x16\xfd9Y,N\x8a\xc63\x0bk=\xb3\xb0\xe63\xcb\xc1\xe9\xf6\xe1\x8a\x8e\xb8l\x1b^\x1f.\xfa\x80\xc3\xd0\x03~(\xdb985n\xb1\xdbw\xff\x1f\x85\xdfR4\x0c0l\xd6m\x0f\xef\x1f>\\\xfb\xbb\xdcW>z\x84\xfd\xd3s\xa4\xbax]7\xb7\xb0\x01\x05\x90\xad\xa3C\xea\xd3\xfe\x1b9\x7f\xb3X,\x07\xfd\xc5b\xb1\x18<Y\xa4\xa7\x03K&\xb5M\xc04_\x01N\xc2\xa9kn\xb7\x8d0k6[\x1d$T\x0e9\xd9\x98L\xc4\xd6D\x82\x8fH\xef\x93i\xd5K\xa6{QOK\x8b\xda\xaf-j\xfa?\xe2\xa2n\nv\xf6\xefoM\x7f\xfe\xec\x1fK\xfa\x17]\xd2\xc9\xff\x08K:\xeaO\x9f?u^\xcf}6\xad\xde\xc3\xf5u\xfa\xe7\x8e\xfb\xb9Q\xff\xd9y\xd1p\xf6\xd85\xef\xf6\xf4\x85w\xfak\xa3\xbco\xde\xb8\x87\xad\x84c\xdb\\\xf0\xde\xb5\xe3\xdf:v\xfc:2\x05\xb8\xc1\x80\xd0\xc5'g#w\xe9\xe1p\xab\xe41\x1d\xb6\xf1\xfe\x17\xa1\x1dFi\xb0E\xec\x01=\x0e\xf8\x13\xd9vp%\x06\xee\xce\xb4c\x94K\x12\x82\x0e\xe3\xccMU6N\x8a\x02\x94k3\x1c^\x90\x8d\xa9\xc0\x1cY\xf4\xd7n\x15\xca\xa0p\x94\xb1\x1e\\\x90M\xe3-<\xf0\x1f\x136v\xc0\xb6\xbfE\x01VkL\x14M@}a\xe0G7_\xe2z\x1c\xe5\xba\x1e\xb5\x9e\xd4\xf7^\x0f\x9d\x0dm~!\xd8u\x95[\x98\xfb\x8dz\xf4\xb5J\xc7I{\xad\x8b\xd3&\xb8?:\x98\xa06\xf1`$\xda\xc6_\xd5\xf5\xac\xe14n3\xa8\xa8\xa2\xc0 \x93s\xa2\xaa\xdb\xb4\xb6\xe8+8\x04\xdf\xe2zhAab\xc6\xed\xa3\x8fMi\n?o8MB\xb7\x80\x88~z\xf5m\x8a\xbe\x94\xe0^\xd1u-X\xe7v\x04\x8d\x92\x19\xcc\xedV\x1f5a\xd0O\xb8\xb4k\x9c\xc9\xab\xca\xf3\x05Z\x8f\xfa \x96\xc6\x10\x9c\x0b\xb5\x95,\xdaOl \xc7tN\xfb\xe9`\xd9y\x82\xd4\x92H&;\xce6\xa85M&\xc2\x17AY\xa1\xd1n7k.\x97\x15\x18X\xa6H\xf8\xf5AV\xeb\x87t\xeb\xda\xea\xa6\xdc\x9b\x11\x07\x93\x05\xc8f\xc4s\x08\x86An\x80l\xc3?d\x10\xfe\xe1\x10//\xf7\xd4p\xddV\xb8\x15\x966\xc6&\xe3ls$\xf0\x1d\xf4\x1av]\xe0mm\xf7\x89\x97\xcd4\x1e\x1f>\x00\x83><T\xd7P\x10b6\xa5\x89\x0f?\x96\x95tYLy\xb8x\xf1a\xd6\x10\x86\xfe\xe0\x01\xbf\xb6^P\xcb\xb3I\x06O\xf5\xe7\x06\xcaQ8\x83>9\xcc\xf9U\xb6(?K\xd5\xb1\xf8\x80\xcc\x18s\x08\xe3\xdc\xd4\xde\x07}p\xfc\xe1\xc0O\x9du\xe0\x87+2_\x0e\xcc\xee\xac\xfe\xbd\xe0V\xd4E\x0e\xe2\xc3\xe8Xv\x0cR\xa7\xcb\xeb\x87\x84\x8d\xac\xac\x1b\xdc=\xd6\x1c\xa1\xba\x17S\xbd\x93s\x7f\xa9\x06\xaf\xde\x03\xa8p\x96W\x9d&\xb8\x9d\xa9H\xfe\x95%ZXCqm\x07\x90\xd9\x08x\x1fc1\x1d\xbbhJa/\x9b\x17M\xcbU\x1d\xc5\xba\x9e\x92\x97\x07\x8c\\N\x1c\xf8ZM\x83 \xd6\xad\xb54EGo\xb9\x16\xd4\xa60\xc8~9K#k\xa7\x93\xe5v:\xf4\x82\xf0\xe3\xa3\xa3\xf3\xc3\x81\xd7\xa6\x0d\x02}\x87\xa2M\x81\xd5y\xf7\xc0\xeahG\x04\xfd\xd4\xe4\x8e\xab\xe1B\xd7\x8a}\xae\x96cT\x11k2\xe3\x05\x10\x05#-\x12\xe1\x1c5\xc65\x8f\x96\xcd\xe4\xaf\x1bMk\xaf\xfc\x12D9\xad\xaah%|\x0e\x82\x11\xbb \x86\x8e\x98\x1e\xb9\xb4\x08Y$f\xe4\xacN8\xda`\x84\xa8\xcd3\xe2\x82\xb1\x94\xb1\x99~\xcf\xe3\xe5\x04\xdan\xec\x08~\xd6\xd2\xc7\x87R\xf2\xd8\xc1\x80\xb3\xd57\x0f\xa0\xf1\x05\"\xcaK\x04\x94~\xc4\xc0\xe4\x05Y\xe4\xecY\xd5u\x99\xd1\x99|\xe6\xd0\x99\x14\xe2\x8a\x9e\x8d?\x9f\x9c\x80\xf2\xf4\xc9pqzum\x15\xa6\xc3\xdf\xe49\x96\xfd\xebY\xfe6^\xfe|6z1}_\xf8>\xb8\xee_\xcf\x16\x93\xa3J\x0c\x9e\x0c^\x9e\xd6\xf56\x05\xd8&\x8b\xf1\xf2\xe7\xe9\xe8\xfc\xf9\xfb\xc1\xac?\x7fs\xf9rqwv6^\xdc\x9d\x9f-U\xd9\x87\xf3\x91\x92n\xa7U\xc2z\xd1\xa8}\xd0\xd4\xa3_\xa5\x16\x9b\xa2\x13\xaa\x97\xbd\x82(\x04\xaa\x90H\xab\x0f)\xb8\xab?\xe9s\x9b9\xab\xc5\xa1,\x94U\xbb\xa1l~\xb6\xd4\x8dL\xf5\xd5~\x0f\xac\x08\x02\xb5\xe7:\xb1\x02C\xd1/W?(\x8ba\x1dd\xef\xd6\xfd\xc3\xc1]Be\x1d\x1c^\x96\x02|\xe69(\x8e\xd6[\xba\xc2S\xb2\xaa\xe3\xc3\xa3[\xed\xb2\xcb8\xb0\xb2\x87zF\xf2[\x98\x03E\xedN04i\x94\x874\xb5\x13\x986M`/\xa4~ b \x87m\x93\xe9\xfdc2K\xbf\x8f:\x99iu2?\x0e\x91.\xd2\xa6y\xcf\x8b1N\xe7:\xf6\xeb\x8e\xe8(\xa5\xfa\x0fD\xe6\xa4\xab\x18CwR\x0f\x0b\x99?>\x04\xd6\xf48\xfe\x05\xb7u\xf0\x17#\x94\xfa\x18\xffs\x0d>\x1d\xads\xbb\x8d\x80\xb2[\x16\xc3\x1f\xfdo\xb2\xd3\xd1E\x9f\x9ec\x04R\x81\xd9\xd4_(\xee\xd3;\xf8\xa3\x9b\xf6C\xfcW\xbfE\x1b\xa8\xc7O\xf0\x95\xfb\xa9\xf9;Y1f\x13'w\x89W|\xces\x05\xb7\xef\xd4s\xb0\xc6\nq\x19\xc0\x13\xf6-Lyb\xfeB\xa9P\xfc\x84 Y\xa2V\x85z\x8c\xd8-|\x8a6\xf8\xc7\xc7\x7f!\x16i\x14a\x7f\xe2\x84\xfe\x94\xb1 \xf6n`+\xa4\x92\x92\xd8DD\x85b\\\xa4\xf0\x9e2\xbe\xf7=\x86\x8fij\xe2\xa1\x9a\x81I}\xb6\xc7\x8f\xbe~G\xb8\xd2\x10\xffD!&\xc74\xb1C`_ \x0b\xfa\x84\xec p\xca\xa9\xfeD\x188V\xe8\x19\x12;?\x0dY\x9a\x82\x06\x8a\xf4D\xf4\xf4\xfc\xd33x\xc2\x16\x05\xccr\xc6\x01\xae=\x0bC\xe8/\x0e\xc1-\x86t\xbd\xf3\x10j\xf5w\x9c\xa5L#\xca]\x18\xf0\xc4\xb3`\x15^\xb1T\x88\xd3\xf8\xee\xe9\xe7\x93\xe7g<\x7fDd\\\xfbYx'8b\xe8&\xc1?\xf8 \xb1\x82j$\x16\x82z\xbb\x90E\xf8v\xab\xfe]\xb1tG1\xf4\xec\xca\x17^\xeccX\xde8\x80\xb9\xf6h\xa0g\xdd\xdb\xf1\x18\x83\xda\xe2\xd3\x98\xdd \x16\xa566o8f{\x16\x89\x15\xf7\x05\x1bS!X\xb4f\x98\x1d \x0c<\xee\x01\xa8u\x10\xd1q\x12\xd0\xfb\xd4\x8f\xb6\xda\xbf\xa3IR\xb9\xa9\x1f!\xea\xaf\x05T\xbe\xde\xaf\xd4\x1f\xb6>\xbfQ\x7f7\xd4c\xc2GX6\xcc\x84\xf9\x8d\xb6:\x84\xaf\x9f\x02zma*\xb7\xbe\xc0?\xef\xc28\xe1\xb1 \xc0\xbb\x154\x80\xbav\x1e\xae\x04=+~\x82\x7f\xb8^\x13\xde\x0b\xfd\x17\x97\x85@L\xfa\x91BK?\xe2\xdb\x0d\xbbO(\x16\x08h*60\xe0j\xd5\xe0\xa2\xa0[\x8dD\xa1M\xe17:%G\xa5\x10\xeb\n\xd3\xf1\x8e\x05zYE8wa\x16\xea8\xbf\xe1\x1e\xa0\x03\x19[=\xc4\x88; \x0dB\xfc\x9bPN\xdf\xbd\x03\xa4K\x02*L4\xe3\x84\xc7w\x10\x1f8I\xef\x01\xce\x9f2\xc6!\xc1,0\x96\xc6\x19\xc7\x95\xc5\x11iyz\x1fA^.\xf4\xb2a^\x1c\xad\x03\x7f\x83KL\xaf\x88t\x8bk\xf0\xe6>\xc1\xf4\x10\xa6*\x8d\x835\xc5\xc0\xc5I,\xfc\x0d4\x96\xe2\xc4\xa4\x82Q\x00+\xc5\xee\xa8\xd74\x01\xc7)\xb0\xc2\xa2-\xc0\x94\xad\xa1\x81,\xe2\x8c\xc2r\xcc\xc4\xf9\xd9\x19DaVx\xc6}D\xd0\xbd\xcfn\xc79\xf4\xb7l\xe5a\xf6[Aq\xf5\xdd{\xfe\xed= \xc3\xdd\xc6GD\xbf\xe3\xf0\xe9>L\xb7\xbc\xb7|8\xff( \xf9\x9f\x0e&\xbf\x7f\xfd\xea\xdb\xb7\xaf\xbf\xf8\xe7\xb7\xdf\x7f\xf5p\x01\xb8\xa2Eq+\x17+A\xf8I~CE+^\xc8Ic0}\n\xc7\x1aE3\x05\x14\x97\x9f\xea;\x8dN\x97<Tk8\x1e=\"/\x9e\xe6\xa6j:\xf6=zp'\xcd\x9e\x8cH\xc1\xa7lS\xdc{{F\xd0\x1e\xf3\xfe}?\xd2r\xdb\xc9I\xdd\x1c\xc0\x98\x00\xf0AA\x1e;$\xa4X\x7f\xc0\xcd\xd2Q\xa9\x91\x11\x8c^\x9c\x0b%\xc7\x1e\x18\x14D\x9b\xf8\xe3\x8a66\xb9x\xdf\xc3\x81l\xe6\xa0\x07\xc7\x0f\xd6\xcf\x08f\x07\x06\xac\xe7\x18\n[a\xd4\xe7\x8e8\\\x95\x8a\xb9\xd1\x80\xc4\xbavUm<\xd2\x0d\x16\xcc\x1d\xe2\x01\xf4g\x06NF\xbfg\xdb\xaf\xee\x12\x04\xb8V\xbb\xcb\xea_\xe1\x14*\xb8O\xfb\xd7\xb3,\x82H\xf2k\x89\x8c\xe5\xad~[\xc7\xd9\xca\xbe\x0dN\x07\xfd\x9e\xc9\xd8\x1b\x91\xd3\xf9\x9b\xde\xe3\xab\xcb\x97\x7f\xce7\xb0C\x95\xa5T\x85\xca\xf7x\xfe\xe6\xf1\xf2\xc9c\xf5\xadT\xa1\xfa\xd6\x9b\xbf\xe9-\x9f\xf4N\x07U\x0f5\xbe\x85m\x91\x0e\xa9\x10\xfcmDC\x06\xafO\xae\x16\xe9\x13H\xda\xd3 c\x83k\x80\xcc\xe6\x01\xd0p\xaf\xfdv\xb6\xccw\xe7\xb3\xc9\xdb\xf1\xf2\x89\xcd\ne{j\x18\xabMc\x00\xcd\xd3\xcb\xf9\x17\xe3\xffD\xc7\xef\x96\xfa\xaf\xda\xe0C\xb3\xfe*\x13\xec\xc9\"}\xb28\xbd~i\xea\x83\xc4\xde\x88\xf8\xb5\xea\xd0V\xe0\xf4M\xffz\xa66.o\x05\xddJ\x90\xeb\xf1)\x0e\x95X!\x13\x1e{J4\x8b\xb6r\xcd\xbc\x80r\xaaPFzJ\x10\x86\xfe\x99\xb2\xe0\xca\xa8\xdf\xb35\xa8\xee^.N]\xc0.\xd2'\x00\x9fn\x03r\x9e\x8c\xc7\xfd\xf9\x9b\xf1r(\xe7\xe3%<\x0c\x9e\x8c\xc7\x90-\x07\x01r\xce\xaf\x97\x93'\xd7\xf3\xeb%|,\x00\x85\xf5\xa8\x86\x96\xc3E:\x9c\xbfy\xb9\xd4\xedh\xa9\xfd\xf4\xf2d1\xff\xf2w_\xbc\xfeb1\xef\xcf\xdf,\x96\xcb\xa1\\,\xe1A.\x96\xea\xe9\xe5r\xf0D=\xa9b\xae\xf3\xa6\"Cx\x98\xe7[\x93\x9as\x9ag\xd3\x17n\x07\xf9\x9f\x0e&;\x9a\xd6\xd1\x0f?\xf9\xe9\xbf\xa8\xdd*\xf8\xe3\xbeW4\xbd\x8e,\x98q\xc3\xe3P}\xff.\xf6\xab!\xf53P\x01=\xfau\xbf\x7f=\xbb\x9b\xd3\xf1FM\xcf\xcf\xd3\xd1g\xef\xe5\xdc>\x0e\x06\x17\xa7\x15\x8d\\\x8a\xe5@u\x04\x98\xac3?\x9d\xbeW\x99\x1f\xce*\x8b\x97v\x1c\x04\xab\xc0\x0f\xeb\xfa\xf8\xa7\x9f\xb9\xb9\xa3w(Z8\xde8\xdd\xb8/\xa9<}\xee\xd6Iy\x9a}\xbai\xa6\xbf1f(9\x93\xf1\x0c'+\x1cI\xa0rA\xf1\xe7\xde\x1dF\xaa \xe6\xd3\xa5b %\xdd\x14\xb9&\xa0\xa1\xf8&\x12}\x95\xc1\xe85\x06#2}\x01\x01\xd6\x8b_Gd\x8aa\xb6\n\x97\x81\xfc~\xa4j\xa1}\xa0\xcc\xb4\xff\xe2\xf9\xf3\xa7OK;\xf2\xa0\xcc\xb6\xea\xc4\x1am6\xc0p\xa8\xb1k)2\xe9X\xf1\x01\x05J\xb5\xa7%\x98\xf8\\eY\xb6\x00\xe1\x14\x95\\\x0e\xec\x1e\xfd\xc2\xfe\xeb\xca\xb3\xac\x05\xb5\x99c\xf2\x95\xe0\xe1\xf6[v\xa7>\xfd1k\x88\xca\x01\x07*iC\xc4\x0e\x1am\xbf\xe3l\xe3\xdf\xcd\xd4\x8e$\xdaft\xcb\xc6.\xed\x8b\x1f\xdd\xf8\x9b\xfb\xc6\xf8*7\xaf)\xdf21sJ\x03\xe2>\x89!\xa8\x08\xe3\xee\n\x809\xa63\xd2\xfb\xeb_\xfe\xcf\xbf\xfe\xe5\xff\xfa\xeb_\xfe\x8f\xbf\xfe\xe5\xbf\xb8\xd4]\xfev\x17`\xfc\x91(\x0b\x1cJ\xa8\xfc\x8clF\xce\xab\xa7\x1c\xa5W/\x0e\x938b\x91p\x8e\xb5\x17s\xe6JW?\x9e\x05\x10\x8a\xa5\x07\x9e\xe4z\xa3<\xea\x8b\xda\x1c\x19+\x19|\x03\xc9E1\"x\xd7\x83\x88{\x1f\xca\x05v\xbb^\x8e\xaeV\xfc\\=\xd8\xa3\x0eA\xfd\xa0\xe7\x08\x83\xe8\x98mto\xd7\x05th\xbe72\xce\xf7\xd4\x06\xd9@`\x1aV\xcf;F\xd7\xc8 {;T2\x890\xb0}\x0f\n\x9fu\x90\xbeB\xd0\xa6\x91\x8e\xa5\xdb\x0dv\x1c\xc7\x83\xc0\x17\x02w\x94b\xa7\xe8\x00)\xc5\x00&y\\\x8e<\x14K5FH!\xc2\x87\x0dHR\x08\xef\x82\xbaP\x07\xfc\xbfr\xbf\xfd\x83,\x14?\xfe\xbb$\x0b-\xcb\xae\x0d\xab\xff\xce0\xc6q\x1d\xbe\x801\x8e\xaf\xff\xc0\x18\xf8=\x04cj\xe9\xe4(F\x82\x0c\xa1\x13\x0d\xfd8\xf4\xffCh~'0?\x94\xd4\x1f\xa2\xf1\xff\n4\x1d\xb6]\xf9\xd2\xe4\xc5}IU\x98w\xaffS\x0b\x83#&jf\x1e\xfez<\x8e\xeeQ?\xbf^s\x86\x07\x04\x943\xcc\xc5\x85\xef\xa1\xde\x97\xa6>N&\xcd\xd6>h=A\xc9\xbaZ\xfb\xf8\x07\x93|\x18\x99\x95\x1d\xda\x12:\xac\xe25\x8c&\xb6\xbc\xca\x84\xd0z{\x1a\xed\xf1D\xcb\xa3\x890\xca|\x16 T\xa6{~\x19\x9b\xbc8\xd0\x7f\xb6<\xce\xf0\xc4+W\xef\xe7\xa7]\x82\x1a\x1cZ\xe39\x18\xf3bNE\x8cZ}d\xe9k\xa6$ d\xf2\x1b\xd4\xf3\xfb\xf8\xdd\xc7\xc32\xcc\x05\xb5\xb0\x80\x99S\x0b\x06\x03\xb6\xf1Y\xb0N\x99\x8e\x11\xb5-\x00\xbf\xf1\xb7\x19\xd72\x01\x96P\xb2\x81>\x1b\xd0\n\xf1\xdd\x14\xfe\x05yl\x87\x87k\xa0X\xde=\x87\x7fA\xe9\xaf\xd6\x83\xf9\xab\x0f\xe2l\x9f\xf3\xf5\xa3\xfe\xc2,\xf8!\x0c\xbf\x1f%x.\x88a\xdbz7+\xa8\x04\xacw\xe0\x81mY\x84IP,\xa4x\xde\x12\x9aC6\x08\xe5\xa6\xfe\xfe\x94\xe1\xf1I\xc8\xa2\xcc\xfc\xf5\x05\xf6>d\xbaC\x11\x9e+F1\xce+\xceN\x9c\x08\x0bil\xc7%\xce\x84\x06\xcd\x9c\xad\xe1\x9fxk0\xef'\xf5\x0f\x9e\xe9q\xc8\xc8\xb3\x15\n\xb6\xf0\x0f\xb5\xe7\x00\xa6\xca\x94\x05\xfa<%\xdd\xd1u\x0c\xc7IiH\x03\x80\"\xd7\xc9\xa7 \xf5\x10\xdc4\xa1XPp\xff\x86\xe9\xa7\x18\x89N*\xee\x11\xdb1\x08]/\xcd\xc2\x90\xe2)\x05\x06\x9d\xd3R\xa7z0\xd8,`$\x05\x0b\x93@\x1f8*\"`V\x90P\x13\x0f\x0f(\xb4\x9a\x195gG\x82\xe3\xbf\x14)\xa0\x80\xbc0\xd6\x19\xf4`\x8f\xc7<{\x7f\x8d\x07\xb3\xb7+\xdes\x04\x8a\x03\xa3\xb0^\xba\x87^\xe0\xd2\x0d\xc46\xb8GQ\xd9<\xafQ.5\xaff&i\xe4\x87T0/\x0epm\xe8\xf706c\xac\x13\x04\xa7Qj\xd0\xd7\x92\x81\xc2\xea\xf5\xb9&\x16^\xe0' \xc5.\xaf\xd9F\x0b\xd1)\x9c\xe5\xb0 \xf0\x93\x14\x17\x87\x1f\xd8E\x81\xcb\x04\xcf\xcb\x0c\xdc\xf0`\x84\xe9\x1b\x86G\x9a\xda\xf6\x1e\xe8\xaf\xfdK\xf9\x96\xd3\xb5\xaf\x97'\x9cnq|J\x11\x97\x99\xa0\x862\x84\x06\xb2\xc2_\xa1+O\xe2\xe0~\x1b\xdbG\xcb5\xe9\xda\xa7A\xb1 n\x90N\xe01q\x8e9\x10\x01\n\x9e\xee\xc3U\xac\x0fq\xef\x84\xf9k\x1a\x05\xabzx\xd0\x1d\x14\x061\xed\\\xef}\x06\xe8\xbc\x87\xae;f=\x82Y\xdf\xb0\xdf\x06z=o\xd8\x97j\x12_Q\xc1\xfd;\x93\xa0\xc5\x88\xd70{z\xb819\xd5\x94U\xbdF\xfb8\xd8\xb3b\xc9\xdf\xf9\x9bM\x96\xb2o\x958\xa3\x99\xb2JL\xed\xde\xf3\x15\xd2\x0bH\x144\x12\x90\x13S\xbe\x0e\xe2XC\xf4u\x16y_\xe4\x8f\xbf\xcd\x1f\xff9\x7f\xfc\x1e\x1f\xff\x99fi\xea\xd3\xe8\xb7A\xa6\xe1|\xc5\xf8\x96\x15\x1e\xff`E\x8aW1Ovq\x10o\xef\xf1\xfd\x8f\x9b\x8d\xa1\xc5\xa87,\x80\xf3C\xc2\xbc,\xa0\xbc\xdc\x97\x1f\x92\xb8\x98\xe9\xb5\xb1\x84`\xaf3\xbe\xca\x02%\xb4\xb8F\x1d\"r\xf4B=\x8f!\x8b\xb4e\x89z\xe6\x1c\x97P\x08\"\x0f\x9a(l8\x05\xc4\x0f-^\xe3\xe9f\x08\x04\x99\xad\x91\x04\x84a\x16\xf8h\xea\x81\xa7\xb0H\x92\xd1\xd8!\xdektN\xe8z\xad\xabMv4\x121\x92b\xae\x89L\xc8\x91\x00\xea\x83\xdc\x04\xa8\x1e&\xfc\x84\xe44\xbc\xb7\x98\x1aj\"\x17j\xd2\xa6\xde\xcd\xa3%s!\x92\xb7\xd0\xa0p\xa8\xa1\xcd\"\xcd\x90\xf0 \x00t\x8cU\x0cc\xf5k\x14\x8b\x1c\xd2\x1a\n$\x9e\xc7\xb4m\x80%\xeb4\xf0\xb7\xfa\x01\xbfd\"V\x12q\xc0\xb4,A\xbd\x1b\xc5`\x10\xefW[K\xbcV1\xd7\x90y,\x08\xd4x\xe9\xf9V\xafj<\xcc\xeb\x8ey78\x94V\xc0\x08(2!/`Hvm\xad^\x8cB\x82\xfa\xab\x97\xa9\x17\xc7|\x8d\x89<N\xd3\x98\xfb[d\xa3kE*5y\xd71\xbczE\xc1\"Uc\x8b\x12I|\x1b\x0512\x04\x16yB\x9f_o\xf4\xa4m\xb0md\xfeZ|6\xe8\xba\xf3\xd7k\xb4SQ[\x0e\xf8k\x08%g\x1b\xb5QR\xcfx6\xefG\x82m\xb9\x16e\xfdT\xb3\xf9\\\x1c\xa0e\x89;\x88\x91\xa4\x05\x1a\x97\xd0\xc2'\xa4w\xa8\xe4\x84\x17\xb6\xf6\x91\x962\xb1\xc3\x85\x1ej\x19\"\x0b\x84\x9f \xee\xe8\x13\xa4^\x14+\xd6\xac\x1f\x8d\xbd\x1a\xbe\xddr\xaaE\x04\xec\x8c\x12\x15\xc2L[\x12\xe4TYQ\x9c]\x1c\xe8\x89M\xe2T\xb3\x8d\x8433~I\xb62\xd5*2\x1d[\xe9\x833\xba\x8e\xa3@\x9b\x1a\x04\xf8\xe7\xa7\xcc\xe78\x07\x9c\xed\xf5\x1f\xc6S\x9d\x14#\xfc<F\xab\x19\xf5\xd7\x08\x0d \x0b\x02@\x1dx\xf3bmq\x00B\x08\x96Nwz\xab\x90\xfa\xef\xec_\x94^L%\xdc3c\x9e\n\x8a\xeb2E\xe3\x8d\x94{\x9a\x88\xa5\x82U\x18K.\x8b\x08\xba\x02\xa3\xd0^\x89\x8fh\xec\xc9R\xa6gxo\x17\x919\xa0\xeb\xdd\xfak\x9c\xc1\xbb0\x88R\xd7\x92\xa4vIFb\x9c\xe3\x1b\xf5\xbc,\xcc\x8c\x84\xa3V\x95\xf0\xf7>\x9a:A3\x8a!\x8cW4e\x86g\xd2\xd436>\xe6L\xcf \x84M00\xd3w~\x98!`\xaa\x8a\x8d\x9a \x16y\xf7&A\xd59Nw\xfe\x06\xea[1\xbd\xd2V>\n\x1e(!\x16\x96/ZB\xa9\xbfc\xc3o\xe1E\xed\xffz\x95u\x1d\xf3\xb1Z <\x89\x03j7\x1f\xf5\xe41\n+i\xfe9\xe1\xb11\x9e\xc3\x04\xce\x14)4\xf4\x05f\x07\xbb\x80\x8b\x1d\x12Pf\\#k\xf5\xe2\x08\x18'&\xf1\\\xa8]\x03\x97\xd5Y\xf7~\xaa\xf7,\xc8\x14\xd9z\xcbB\xcd\x06Y\xc0\xf6\x16j#\x04\xf8(\xfc\xaa\xbf\xe3XQ<\\\xf9\xf0nF\xa0 z)V=\xb6#\x82\xaf\xc5bq$\xc6\x1b\x1a\xfaA\xfejP\xdb\xbe\x8c\xe9\xfa\xc7,\x15y\x9a\xe0L\x8bA\xfa]c1\xbc\xed)\xf7i\x94\xe7\xbe\xb5h\xb6A\xd9\x03Z\xda\xc2\x06i\x0b\x1b$`\x9dc\x83?E\xb9\xd0\x08eY\xe4#\xe34 %i\xb5@8u9M\x1a\x950Y\x9e8D-?\x82va\x99\xdf\x00 7\x98\x00;\xb5\x1b\xd8\xa9)\xb1L\x17\xbaa\xf7\x89\x929R\xfd\x92&\x10X]\xbf)n\x00\xcf\x96\xd4\x02%\xcd\xc7,`\x8a\xd6\x8d\x0b\xecI\xd5\xcd\x82\xd0\x8ac\xf8\xae:\x99S\xe1@K3\xf9\xe4\x05\xb16<B x\xac1B\xbf\x19\x9bI|\xb3\xa4\x07\xdf\xf3\x11\xc2w;\x9e\xf8j \x87\x92\xa8\xf5v\xbb\x90%\xbd)\xbc\xdc\x99\xb4^\x03\xab\xd0\xc8\xabY\x86e\x13Y\x18{\x82\xee\xb5]\x99\x15\xe7\xe2\x84\xd9m{\x01/-\x9f\x8f\xb9\x11\xca\xf1\xc9\xae\x87\x9c%+\xf1d\xa3\xf9YB\xfdH\x8cm\xe9\xe2f \x1fZ\xcd|\xaa\x1d\xd5\xc9%\xd4\xd2iy\x1e\x8b\x07 g)\xe3{F\x83dGK i\xc2<\x01\x16\x00*\x19\xe0\xe00j\xda\"\x8e\xae\xfd\x0cY\x0f\xc3\x15\xc1\xd9F3\xb0\x84Q\x01WZ\xf2WM\x178\xb3S\xcaY\xaa\xa5\x0e\x1e\x0bM\xb3S\x8fjF\xc2\n\x8c\xaa\x8c\xfb\xa9\x96\x93\x8b\x84\xc9\xa4\xb1;\xdcG`\x9a\xe2\xaa\xf9\x8c\xa6b\xbdf{\xdf\x8e|*\xd4&H\xf8\x81f|\"Nr$\x85\xb7\xc2D\xaa\xed\xf7\x0d\x1b\xafi\xba\xa3\x9c\xd3jZ\x8e\x08:Q\xad,mn\\H\xf9Q\x1b\x8d\xea\xa4\xd0\x17\x8c\x07~\xe8\x17K\xd6\x1a-|\xb3\x08^`\xb8\\Ibv\xdcJ\\\x17\x94\xc9\x85G\xe4\xcbE\xbcP2\xef\x98F\xde\x0e{\x0d\xafZ\x05\xa5G \x92J\xe3\xafRr$\xb4\x1c\x1d\xe8O\x06\xf4'\x8b|\xa3\x07\x03\xa6\x0e\xe3\xab6\x8a\xab\xf8\x0e\x1fS\x7f\xe5\x07\xba\x97{\xc6\xc5\x98\xae\xf7\xe3\xfc\x0d\x17\xc5\xf8\xae\x9a\x009\xec \xdc\xc6|]$GFN\xbb\xe5>P\x1c\xb3\x84\xef\xbc\x1d\x8d\"\x16\xa0\x00\x84=\xbdw\xa4Asw\xd0\x8f;\xe8\x07\xca\x1f*7\xfc\x03_\xee\xe1\x0b\x18|\xbf\x8b\xe3\x90Fk%09d\x94\xac \xa3\xf4P8\x81U\xaa\x97\xb4\x15{Vl\xcf\x02-k\xdbM\x9a\x17\x07Y\x18\xa56\x13\xbe[r\xad?kQm\xcd\xa28\xb4Y\xd7,\xd1:\x0d+\xcb\xe7l\x1a\x1es>\x07\xbbG\xf5\xc05ykbA\x81\xc2\x1f-q\x17H{\xc4\xc4\xce\xf7n\"\xad\x17\x0b\xecV.\xb0\xfaT\xb5\x05-\xef\x83T\x8a]g\xea\xc50j\xf5\\\xe0\xba!\xbd\xb3_\xfc\xc8>\xc6{\xb55\x81U\x03\x8dFqNL\xa3,\x1f\x07#\xad\xf3\xf8\xd6\xa6\xf1\xf8\xd6\x8e!\n\xcc\x06w\n\xe23\xb7\xbd\xe0\xb6\x17\xb8\xe7\x05\x03\xc5\xfc\xb5\x00\x95\xde\x13\xfb\xef\x98\xde[\xf8Z\x8f\x07\xe8e\xb5\x80 \xb5L\xc2\xbeh\xe2\x03\xa2\x88V\xe2\xe9 \xffV\x96L\xb3\xa4\x9ar\x1f\x86Lp\x1f\xe4\xf1}N}\x0e\x8b\xcex\x83\xe3.\xf0\xa3\x9b\x99\x99\xe3\xbb0\x98i\xebzH\xb7\xe2\xba\xfa`G\x03\xaa\x9cA\x8e\xde\xb2`?I\x8a&\x8f\x81\xd3\n\x89T#7\x9b\xab\x9d\x17$\x1a\x8f/\x06\xa8\xe8\x8c\xb6=ru\x05\xa6\xa6\xf1\x86\x88\xb9\xb9}:\x87[\x98\xeaO\xe5f\xd9\x88\xb0\xb9J^6x\xdf2\xa6\x9b\x95\x83\x0d7\xe4^\xbb-\xae\xebp\x93h\xf5\x16^\xa6\xad\xb7\xaf\xbdc\xfb\x11a\x03\xf2\xc7\xd5\x8f\xcc\x13\x85\xf0\xf2;\x9a\xfe\xf16\xfa\x8e+\xd1A\xdcO<\x1a\xc0\xe0i\xcf\xd1\xba\xd7l\x1e-\x1d\x9eT\x8c\xc9N\xc3\x91\x0d\xd1\x80o\xc0\xbb\xdc\xcf\x8b\x9f\xe7\x8bt\xf1\xc3\xf2\x89\xd4\x7f\x17\xef\x17\xefO\xb7a\xbdG\x89*p\xf9O\x95\xec\xff\xf4\xd2\x99y\x0d\xd6jk*\xe8x\xbe\x18/n'\x8b\xec\xec\xec\xb7\x9f\x8e\x17\xd9\xd7_\x7f\xfd\xf5\xf2\xd4q\xf2\x08%\xd4\x12\xc7\x12\xcb\xe1'\x8e\\{\xc8\xd5\xbf\x9e\xe1\xff\x1b\xb9\x13\x03\x91\xa4\xd7\x12o\xd6H\xc1\x02\x89\xd7-\xa4\xe7\xaf\xe5]\x98$\x83\x99\x9c\xbf\xa1\xe3wK9\xa7\xe3w\xc3\xc9b\xbc\x1c\xf6\xafg\x90\xa6\xdefK\xf9\xc9`P5\xb7#\xda\xb3\x154\xb6\xb8\x1d\xe2\"\x93`\x829se\xde\xaa\xccs\xd5\xcd\xb3\xb3\xb1\xfas~\xa6\xfe\xfd\xe2l\x91M_|\xa6\xfe\xfd\xec\xec\xabEv\x8e\x9f\xcf\xcf\xce?W\xff>\xdf,\xb2\xa7ggg\xcb\xd3m\xbd\xca{rEz\x06 \x8b\xf8\xff\x03hf\x15.\x18%m\xed\xe3D\xc9\x0f\x8a\x86\x90\xeb\x03\x16\xe5\xa4\x803XC\xdd\xa9\xee{2\xeb^\x0b\x03\xc0\xda\xe1f\x13\x10\xd1x\xa6\x18,\x18\xe1\x15\xbe\x81M\xa1\xee\x86]\x13\xe4:\xef\xec\xac\x05\xd2&\xea\xb3r\xc3\xedoH\xff\x0b%\xb5M\xfc\x14\xfe\xf6Y\xa3\x85\xa1%Sj\xd1\x9f\xe1=z]\xc6\x98\xb0_\x10\x01\x11\xe7\x0d \x13\xc3\xe1\x80Ds\x81\xebU,\xeb\xcb\x95\x14\xdc\xf5\xd5{\xd3\xb4\xba\x11\xe4\x0d\x8f\xc3vG\x80\n\xda\xb7m\x07\xae\x85:{J\x00\xd9\xf8\x11[\x17\xe7\xec\xd6\x8f\xd6\xf1-\xb9\x06{\x002\xd3\xef\xe5&\x9d6\x83v\xe4o\x9d\x8d*\xc8\xbe\"W\x84\xf2m\x06\x86`&\x92\xfcK\x8c\x0d_\xf0B`\xb3\xcc\xcf\x96\xe4\xba\xfc:#o\x9b\x02\x9a\xde\x95\x0c`\x9b&\x95\xe4\x10\xdfV\xc7\xd2\xfc\xde\xbb\xbd5\xdcM\xf6\x8c\xa7\xaa\x8bW\xa47\x9d\x9cM\xd4\xae\xfan\xc2Y\x18\xef\xd9Z\xc7\xbd>\xf9\n\x9ck|5Y\xc7\x1e\x80\xad^?\x87~\xe5i\x93(^\xb3\xd7\xf7 \xb3\xb6\x9bw\x13?\xfd!K\x92\x98\x0b\xa8\xead:\"wu0\xd4(\xfe@\x8aU\xb9\xc7\xe2\xcb\x06\xbf~\xeaw\xd3\xf2\xed\x8b\x0eu\xff\x11\xf2\xfcN\xe7\xf9\x9a\xd3ms\xde\xef \xef\xef_\xbf\xfa\xf6\xb5>p\xfc\nO\xa5\xdd\xd9_C\xf6?\xd4,\xad\xcd\xef\x95\xfd\xfe5\xe8\x83\xdc\xb9\xbe\xc1\\4dk\x95\xf5\x15M\xdc\xf9~\xb4\xfc\x1a(\xd27\xe4\xbaRLM\xddW\x93W\xf1;H\xfcB\x08\xae\x12g\xe4\x1bw}\x7f\x80v_\xb3\xbb\x86\xde}\x0f\xdf\xbfD\x8b|w\x96\xdf\xe1\xd8\xfe\xf1\xd5wp[\xda\x9d\xe9[\xc8\xf4?\xbf\xfa\xf6\xf7B$\xdf\xb3\x9f2\x966T\xf7\xa7r\x0f\xbf\x85\x1e\x96\x0b\x92\x19\xf9\xd6]\xf8'h\x86Ej\xff\xf6\xa7\xef\x1b\xfa\xfcu\xb9\x85\x9f\xa0\x05[\x86\xcc\xc8O\xee\xb5\xe4\xe4\x17\xdf5-Z\x85\xf6\xef\x14\xf5\xfd\xff\xd9\xfb\xda\xae\xb8m%\xe0\xef\xf7W\x0c~zR\xfb\xe05\x90\xa4\xb7\xed\x06\xc2!\xb0ii\x03\xe4\x02i\xdaK\xf3p\xcc\xaev\xd7\xc1k\xed\xe3\x17^z\xcb\x7f\x7f\x8eF\x92-\xdb\x92\xec%iz?\\\x7fHXk$K\xa3\x91\xe6E\xa3\x99`\x9c\x92\x8a\x88\xdc\xea\x18\xdb\x10\xc4\xff\x8f@\x98D\xd8\x16S\xfe\x08\xe8mBRI\xc1(c1\xc27\x94\xdb.\xd5\xc8\x87u\xf0\x15\xeb\xa0\x1eK\xbf\xc0\x0e\xbc\n\xa2\xc5\x92\xf7\x1b\x95\x14=\xe4\x8f\x08\xc9G\xc9\xa8\xf0P\xb0u=\xf4{\x84\x9e\x91\\ ${u\x7f\x1e\xce\x18\xb5\xea\xe1\x7fRZ\xef\xb7\x80\x7f\x83\x1d8c=\xa7in^\x97?\xa3T\xdc\x9e\x82\xe6\xae\xf6Kc\xa7\xffE\xf4\x85m\x10\xeat\xf0\xfdr\xaf\xdc\x88\x8e\xe8Ds\xf7\x8d!\xfd\x07\x8c\x8c\xa6\xed\xd4W\xb0\x03\x86\x95\xffo\xd8\x81\x89\xbe\xe8W\xd8\x81\xb9\xbe\xe8_\x18wM[D\x08\xec\x80F\xa4cON0(\xa0\xb6,aez\xcf;@F\x05;\x10\xbb\xffy\xf0\xe1\xe2\x03\xa3\xceq\x98\xbbW\x188\xeb\xca\xcd\xf1\xdf\x04\xffM\xf1_\xeay\x06\xdeH\xed\xdf\x89\xf4\xdf\x89\xb0\xd5\x10\xff-\xf0\xdf\xcc\xf8\x85\xd0\xfe\x85\xc2^\x9c\x11Cb\"\xc0[\x81\x96\xc21\xb1\xb0\xb3\xa9\xadpi+\x9c\xd8\n\xe7\xb6\xc2\x1b[\xe1\xc2V8\xb3\x15\xde\xdb\n\xafl\x18\xba\xb4\x15\xde\x12\x8bB;R\xc8\xa2r\xa0\x91.A\xd2\xa3\xa0\x8a\xf7PZ\x93T\xef\"\xe1\xe4\xc3\xbdD>\x98d7\xed\x97J\xcf\x12\xe1(V\xb9Gq\xa7\x1aSkg\xb5\xd6\xb8a\xb9<m\x13\xa7\xd4Q\xdd\xc7L\x1a\xf5\xcd\xa7\xb8\xeay\xa64\x8a\x94\xe7\x94\xe5\xc8\x85\xb1\xc5\xd0\xb1}\xfb*\xb8&:\x1e\x87\x06ZC\x83{D\x15z\xa76\xa1\xd7\xa1hup\xf8}e\x85gO\x99\xaa\xa5\xe8\x02C\xb8\xc70\xae2:*F1\xc4\x8d\xca\xd9{\xf3\xe6\xe4\xfd\xe8\xe0\xf2|\xef\x873\x07\xa2\x04\xebrDO\x03\xb5\xd0\x83!\xa4\xc4\xe7\xfbNYm\xef\xfc\xfc\xd4X\x8d\x15\xb2j\x11\xf1\xf9f\xe2\xbc>9}uh\xf8\x98R\xc6*\xb1\x97\x85ZI\xfb)\xa5LVB\xfaw\xde\x9d\x8d.\xdf\x9e\x9e\xbc>|3\x92\x9fz\xf2\x04\xa6\x81\xfa\xde\x17\x9b\x14\x0f\x82'\xfa}\xb9wz\xb8\x87\x0d\xfab\x9b\xaa\x17\x1f\xec\x9d\xcbb\xdc\xa8\xe4\xfbw\xc7?\x1f\x9f\xbc?f\x8d\x9f\x9f\xec\x9f\xbc9C\xa5a\xcb\xe7;\xd648\xdb{=\xba|}rz\xf9\xd3\xbf\xde\x8dN\x7f\x93\xa5\xcbF\xe9\xf9\xe8\xe8\xed\x9b\xbd\xf3QY}\xc2\x01\xde\xffx\xf2ftyp\xb2\xff\xeeht|.\x0b\x17\xbc\xf0tt\xfe\xee\xf4\xf8\xf2\xe0\xe4H\x16\xcc\x9a\x05\x97\xafO\xf7~P\xab\xde\xb7 \x0e\x8f\xde\x9e\x9c\x96\xe57\xbc\xfc\xf5\xc9\xe9\xfe\xe8\xf2\xd5\xc9A\xd9\xe3\xab\x1aR\xce\xf6\x8e\x0f\xcf\x0f\xff\xcd\xbav\xe4\x8b\x8dI\x96\xfd<\x1a\xbd\xbd\xdc?9>\x1f\x1d\x9f\xfb\x9ciV\xc4\xf1\xee\xf4\xf0\xf2t\xf4\xc3\xe8\xd7\xb7\xac\xe1\x9c *0\x0c\x11\x91i\xd5f\xfc\x05\xdfa7=\x9cZ\x0c\xecI\xb4\xbc\x0dy%\xa7OT\xdb\xf8Z\xb8%Uh\x80\xd8M\x88\x0f\x8c\xd7\xc6.%>D<\xb3\x97\x84\xcbnf\nX^\x82\x85\xe5_Y\xab\x02\xd7Z2\xa5^\xd2]\x8f\xed\xb3Gj\x97\xd2\x12\xb2P\xebx\xb8\x9a\x0e\xf8\xa2(\x87\xbe\xb3\xc3\xa4\x88\x12\x11c7!\x1e\xd6b-U\xf0UmF\xad\x08Oy\xed\x88\x94\xbf`\xecRQ\x9b\x12\x15\xbe\xaa\xcd&\n\xc9S6\x13\xbbgD[\xe8!\x01\xf0\x8e\x95.Wr\xee\xb8\x85\x94\x1b\x96RB\xfe \xb8*\xab\xb7\xc2\x82\xca\xcb\xdc\xa9\xe7\xf3\xadu\xaa\xdd\xfd\x0c\xdc\xed\x84\xf46\x18\x94J\xbe)&\x82\xfa\x08\xbf\xeb\xa1\xc6Z%\x9f\x07K\xce\xb1<\xbd\xb7\xf4\x04dv\x08\x92\xa0<.:\xb6?\x8f\xe2\x89\xc9\x9c\x01h\xd1\x1b\x87\xf9x\x8ey8\xbaZ\xa7ENR&\x92c\xe8rs\x93\xab \xfb-\xe9\xba\x9e\xac>\xdd8XiF\xd8S\xfa\xf0\x0c!g\x1a\xd3\x9e\xfc\xcd\xb0\xc8$\xea\xce\x16\xa6)]\x0c\x1bv\xf6\xe6\xf3\xd0c\x06\xac\x94\x06\x9f86\xb3p\xa1>\x9f:\x14\xf3\xc4\x89\xae\x97\xd85\x9a\xd8\xf4\x9d<\xef\xbf&\xa5a\x96K2\xf61\xdbNf\xe4\x13M\xc1\xbd\xe1\x1b\x12\xca\x04\xdb|$/\xb77\xc4\x1f\x0e\xac#7\xb8\xee\x9a\xbfn\xeae\x0f\xfb\xc8k\xdb\x92\x85&\xd1\x98\xd1\x0ej\xb4\x03r\x0b\xef\xcc\xc3dO\x1a\xa4$[\xd2$C\x1b$\x1b\xacT\xb4\x1d\x1f\xd2\x80.I\xe2:?\x8c\xce\x1dq/e\xc86\xe7\x0d\xc6\x18_\x8c\xe7a\x9a\x91|\xa7\xc8\xa7\x83\xef|D\x89/\xd2\x9a\x06\x19I&.#@\x8fGE\xa9>\xf3\x08Jb\xd3\xb1\xef\xf5\xc0%\xfb\x92\xcb\x06}\xe0\xf1\x18\x83\xafS\xba8\xc33D\xb6\xcf8e\xdf\x9d\x9ek\xd3\xdc\xa7\xf2v\xfc\x93'\x90\x97\xc6 !\xa8\xe3\x95y\x9e^\x94uIg\xdap\x1d\xc7\xf3\x82+:\xb9\xf7L[x\xa2\x16L\xa34\x93\xcdc1\x13\xc4k\xdb3\xa3\xc7\xf7\xfc\xbc0G\xe9oW\\\xb1\x81\xa1\xb8\xbf\xe4]l\xb6\xefw\x81\xde\xc8]7\xd70 \xd8v\x8c\x00\xca-\xads\xe2~\xbd\x9d\xdd\xcc^n\xcf\x80\xa2\x8f\xf0\x0e\x06~k\x0f\xd3\xf5\x9c\x97\xdb\x1b\xb3\x97\xdb\x1b\x0c\xfck\x03#$\x01\x86\xdb:\x13.\x19.j\x91\x18\x82\xc9\xbd\xe62\x82\xbe\x9e\x9d\\\xdczW\x97/\xb7Qo{\xb9\x1d-f\x90\xa5\xe3\x1dg{\xa3\xf1\xe6\x0eh\x82^\xf2;aL\xd2\xdc\xdd\xf266\x9c\x97_{\x9e\xa6\x83\xc0\xd4T\xae7\xed\xf3N\xea\x11o'\xb6\x07W36\x86\xe7\xa3\xfe{\xa3 \xd4\x1f\xc5Ir\xc3\xde\xf9\xe7\x9fl\xd1\x12\x1f\x8e\x82\xb3\x1fO\xde_\x8e\xde\x8c\xb8\xac/_\xec\x9f\x1c\xd5_\x9c\x8f~=\xf7\xbb\xa9\xa1\xf1\xf9\xa3\xe0\xf5\xe1\x9b\xf3\xd1\xe9\xe5\xde\xfe\xfe\xe8\xed\xb9y\xf5\xd5s.\xd5\x8b\xb4\xaf\x0fWFE\xa9\xfd\xee4\xb4\xdfs\x8d\xf6{\x8e\xb1l D\xe8U6&t\n\xe70\x14\x07\x9d\xa6\x86\x88\xa6!\xc2\xd5h')\x16W$UM\xdd\xa4<\x02\xe2\xc7\xba-\x9f\x07\x0ep\x1c.\x0c)O\xf5\x88\xf9\xd8\x12\xb3\x1a\x973\x9b\xcf\xcf\x17\x04]+\xd8\xff\xc1\x94\xa6\xa3p<w\xfba\x16p\x9d\"\x85\xdd\xf1\x0f1)\xdc\xb2\xc9\xae4\xc5\xc7\xfd\xa7\x18%\x01\xbf7\x93\xffH\\\xe7\x8aLiJ\xce\xc2$\xca\xa3?\xa4\xa9%spU\x08\x0e\xb6\xe6\xe2>N<\x95\x0c\x8eQ\xfdT\xdf\x9cb\xe8/\x8d\xcfJ9\x7f\x86 \xce\x03\xc6\x99\xf6\xab\xe3 \xed\x91H\xaer\x07\xcewJi/S\xfb\xf1\xb1\xb3\x89R&\xb3@f\x8a`\\\x05\x969\xe1\xb9\x1al\xf9\x7f\xa5\xf4Q\x91m\xddA\xa7{J\x8a%M\x1a\x13\xc2\xe7\xa3\x83\xfd\xf3\xf3\x8e!\x18\x8eH\xe4\x13\xc61\xbd%\x93\xf3p\x96\x0d!\xb1\xa9f>\xac%\xe4\"\xfd\x80\x01\xff\xd8\x1f]\x8b\x80\x8d\x80\xab\xb2k#\xach\xc2/ \xa2$#i\xbe7\xf9\x18\x8eI\x923&\xdeG\xc4\x01\\i\xed\xba\xae\xb37\xcdI:Bg:\x06\x90p\xc1\xe0\xb3\xc9\x94\xcd\xf97c\xadk\xff]\x9b\x12\x1eT\xb0%\xd3\xf0\xd7\xca1]\xf9C\x0f\xbb\xb6\xb1\xbd1\x0br\x92\xe5.Q\x97\x10\x97\x0eV\xd2\x9d*M=\x18\xc74\xe1\xaa\xa0m\x03\xaba\x99'9\xa9:P\x06\xe8c\x1d\xf4\xc1y\x12\xe7/\x1c\xcf\x93\xa6*\x99\xeaA\xdd\xf7\xb9\xb8X\xfeS\x1fO\xd9\xde\x0f>8\xc0$G\xf9\xe2+\xfe\xc2\xafW\xa8\x82J~\x01,\xa8\xdf\xdd\x81\x84\x0d\x93-\xe2\x90\xd1\xa3}[\xddZ\x85\x0b\x9c\xae\xc8\x05V\xd6\x07\xedpiO8\xda\x13.\xea \x17\xf6\x84+\x1e\xcd\xf2\xca]\xbe>;<\x82j\xc5a\xba\xb6>\x86\xf4v\xcc\x15\xdd\xc3\xda\xe4\x1b\xb5.\xa0\x89\x0e\xfa\x970.z\x82_\x13\xb2d#\xd2\xc7ki>\x82\x15T(\x18\x0253\x04\xd0\xebJ\xea\x83\x8ebl.\xc2\xd2\x11\xac@_\xd6n\xb4\xc8\xec\x92(k\x84\x17\xc5\x07/H\xc2\x05\xf1\x91\xf4\xf2\x00\x0f\x98\x82<\x8d\x16\xae\xe7\xf3\xa0\x85u\xbe\xeaC\x16H\xd4\xf2\x04P\xfc7\"\x8f'\xeb\xc8\x02\x89\x1e\x91J\xb3\xc9m\xf7\x94\x18\x96hJ\xe6_W\x1a\x92\x07d\xb8\x85Q\xe4o\x87G?8\xca\x8e&\x05\x9d0\x88&\x1e\xd29\xfb\x8b\x13\x14w^\xab\xbc]1\xa0]\x10.\x97\xf1=\x1e.\xbf%.?\x8e#\xfcG\xc2\xff\n\xcbL\x12\x91\x07/\xa1\xe0\xbcA\x95PD\xb5\x88\xa3\xc9\"c\xc8\xc7\x90\x12Q\xf7\xa0\x93\xca\xe1\xf1\xdbw\xe7\xbaa\xf2\xbb\x0e\n:\xf0f\x1d\xb7\xb6\x0bs\xf9\x05E b\xad`\x7fy\x1eF\xc5\x8d\x92B\xe3\xc7\xa0{\xd8\xc8\xb0\xb9D3\xec\xc4\x07\xc7Qp\xd5\xd9\xa2\x9d\xcb\x83\x18\xaeB(\x18)\xf8\nY6\xf6d\xad\x1c(\xa7\x03\xfe\x9b\x0d\xcfM!J`\x8f\xfd\x8d\x7f]\x13\xcf\xe8P\xd9|\xd8G\x05#d\x04\x87\xff\xa4\x9dl\xcf\xc3\xa3\xb6'O\xe0\xdf\\\n\xa0^\x8f\x99\x079\xfb8P\xac\xfe\xebc\xaa\xf7\x1b\x18\x88\xc1\xad\x95d\xc0\xa9`E\"\x00\xd1\xcc\x19V\xee_\xa7\x1chN\xf8\x18+\xa4\x12\x82\xb4\xd3w\xcc\xa0\xb6\x86\x97~\x15RPn\x0eT\x04\xc1\x1d{\xaa,0\xdc\x80\xc8m7kw\xe4\xc2\xa4 |\xe8\xa6b\xf5\xc1\xb0\xa2\\\xe6\xfe\xd7g\x18#\xa8\xe3L\xaby\xea\xd5@\xf7\xea\x82N\xd3T\xf3i\xaf\xf8\xd4\xf3\xd5\x93\x01\xba\xb4\xc8h\xea\xb3\x82\xb8\x0f\x9d\x83\xb1\x97\xb6$@\xad\x94alb\xa5\x03\xa5\x03U2\x04b?\xd7\x92wM\xfa\xc8Tl\x13:b\xed\x99\xa9\x07\xf9}[\xa6:\xc3\x80>\x07'G\x0e7\x87\xb0\xc1\xbe\xc0\xef\xa6AB\xeer.X\xbf\xf0Z\x0c\x98W\x14\xa1B\x92R\x18;&n\xc2\xb5\x9a\xa4\xd4\x8f\x14\x8d\xff\x049CU\xe6\xf9p\xcajX:\xde\x9a ]\x97\xf5\xb3`\xbcxr\x17d\xa2\xb1\xbe'|}g\xa3\x8f\xf4\xddG\xf2\xee#u\x87\x1d\x924f#\xe4Qqa\x07\x9c\xdf\xef\x9e\x8d\xd7\x06\x83\xdf\xef\x9e\x11\xc6\x88K\xf3\xceZ\xa5\xeb\xe3\xdetH,\xf7\x0b\xa0\xed\x0b\xab\xd4\x0fr\xcaO1<\xc8\xe7)\xbd\xc5\x83\x1d\xa68\x8e\xd2\x94\xa6\xae#\x8b!\xca \xa19\x84%\xf2M\xce\xb0\xe5\xf7Z\xbd\xc5AU_t\x19\x0b\xd7~t\x12\xa5\xf9}\xf5E\xde\x90\x0f\xe1\x15M1N\x8d\x81x\x8c(]\xab\x1d9t\"J\xb5\xbd\xde\xbb#\xecp\x98GcnHa\xc2\x8a\xce\xec\xd2\x84\xeb\xb6\xe6\xe8\xec\xb1\xa55\xac\xde\x9c\xdb%w\xb2\xf6\x04\x19\x18\x1a\xa8NtV\xdd\x1b\xc1t\xb3M>f\xcc\xcf\x91\x9a\xf7\x08\xba\x916/1\xd4M\xdf\x1e\xf0,\xbb\\HK\xf8\x19J} x\xf5#\x06\xc5a\x98\xed\x04k\x9b\x9eW\xb7w\xbf:9\xf8M\x88\xcb\x95\\\xbd\xcb\xf7J\x18B\xc2\xb4\x03\x92L\xf8\x99Xj:$\xb2\x0bdH_\\\\_\x9b\xe0\x7f\x03\x99-\xb8\x14N\xb6\x1d%\x7f\xb7}\xd5\xac\xc9\x91\xa3\x80+\xea\xf0^\xf3\x9b2\x06W \xfd\x14\xf0\x93\xe6\x13\xb6}\xa3\x95\x8b\x1f\xef\xe9{P\xdeC*8kJ\xbc\x17\xb8\xef\x15u\xae\xc2\x0dL\xb4\x86h\xca]x\xd8T\x1f\x13\x97rnB\x8d\xdc\xe4\x80T\x85\x9c\x9dP\x91\x8c\x98\x1a\xfa\xc60\xb3\xb0\xdae\x18\xc4\xacCG\xc1\x11\xb2-\xf8'~\x9e\x904<\xf0_\x80\x8a\xa6\x17\x1e\x845\x02\xe9\x81C\x90\xf4\x82A\xfb\xcd0b^\xef\xb9V\xc2\x80\x7f\xe3]:\xf3e\xaaK\x1f\xc2\x15&Z4\x88G\xb3\xea\xd9-#\xf2\xd2\x94\xd8\xaa\xf9\xc0\xd6dF\xf2}\x9aL\xa3Y/\x1b\xd8\x1e7\xd2r\xdfdMly\xd6\"\x06\x8aj\xb7ij\xb2rW\x95.\xcf\xfaf\xc3\xc9\xe4GJ\xaf\xfb\xf2\x7f\xfd\xd9\x03\"\x1c\x8f\xa3v\xf8\xa9\xd4\x9f\x7f\xe2^\x84'Sh\xc6\xcc=\xcdU\x8cj\xf3ju\xc1\xf4\xfd\xda\x99\x97^\x90n4\x9b\xad\xd4\xae\x1c\xc5\x85F\xa7Q\x1a\xde\x8b\xe3V\xdb\xc6\xa6\xd1\x0fW\xdbZ\xed\xe5\x832\x16\x9e\xce\xb6\x0c\x8b\x9c\x8a\xa2G\xc5W\x16\xfev\xfcpS\xdeSvs\x1f\x9c\xcbK\x92\x1d\xd1 \x0f\xd3S\xef\xfc\x0d7\xe0\xa9\xa9\x02\x94\xd5)O\x8cb7q\x9f7o\x15PQ\xf0\xb4Y\x10\x89\x82g\xcd\x82P\x14|\xd3,(D\xc1?\x9b\x05\x99(\xd8T%f\xf6b\x8b\xbd(\xdf\x94:F\xdc\x9ey\xf5\x06, *T\xe0\xe9\xb1.\xa8\xaf\x88\xaf\xd6\xf4\x0dlF\xd8\x05\x81\x9f\xb1\x95\xee\xca\x9e\xe5\xb6k\x9e\xee\xa6\x0f4\x10\x1f\xf6\xdc|\x1ee\xdc]\x95\x15\x84\xcd\x027\x0f./\xd1Twy\x89\xccb\xd3\x87T\x01\xf2<a\xb8\xe3\xe0\xe5\xddL\xcfv+U\xe9I\xa1\xb4\xc5\xcd|\xecmT{{\xd1\x1e\xcb5\xb9\x1f\x82\xc3c\x8fh\xec\xc1\x82\xd2:\x97\x91tW\xe1\xae))]j2\xa0\xc8'\xe7 8\x96d,\x9d<,\xc0\xfc\xf4f\xc66l\x11\xbe\xd2\xae\xd6$\xaesv3\xdb\xcb2\x92g&\xdf~(\xd3\xd48\x87\xc9\x94\xee+I\xfe\xd66-ux\xfe\x1a\xe7\x17~W\xf5m\x1a\xce\x16!w<\xb6}\x89'\xb3\x11\xc1\x8b\"\x8a\xc1N\xac\x9f)x\x85#:!q'p\xcc\x81O\xe9\xad\xad\x0fc\x0e\xb5Oc\x1b\xd4T\xe0\x8f\xa47$\xcdz\xa3e\xc9\xab\xa13Og\x7f'\xe2\x1b\xe39Y\x90\xfe\xdf\x98\xf3j\x1c\xdb\xbdk\xdd\xa0\xa9?\xca\xcen\xc3\xd9\x8c\xa4OM\x17\x9cA\xc4(`\xb0'{g\xcfL\xa7\xea(\xad\xe6\x9ct\xf3\xd4\xb5\xea\x9flE\xccz\x9c\"\x89%\xcc@\x9d\x98\xf2\xa8\xe7([\xe6\x81\xf8\xc94\x9a\"\xc3D:\x99\\\xce\xcd\xab,<J\xb5]\xff\xc2\x8b:\xe2\xa4H~\xc9X\xe1\xc1\x83\xa1\xf9s\x18\xa0\x9a\xcb/\xce1\x85\xbd\xb7\x87\x80\x1c,\xc2]s\x99\xd2\x9bhB&\x81\x83\xa7(\x9f\xa9\xcb\x19\x9f\xc4A\x11Yz\xfd\x19\xbf'P4\xa8r\x80\xda>;\xd3\x88P\xd0%\xbb>\xba\xaf\xab\xe0\xc5\x82\x93\xb4\xb4\x88\x99 \"[/\xaa\x8554]\xc3\xe4`lM\x0dM7<\x01\x0f\x0e3z6\xa7\xb7f\x92[Zmh\xe6\x01,;\x87\x18\xf7Et\x94Li\xba\xe01 ;\x88\xc2\xd2\xa1\xb1\xeds\x0bz\x15\xc5d\x08[OWm\x96\x8aqz\x96\x91N:q1\xed\x84\x98wB\xc4rg\xf8D\x0cXx\x08\xc9\xaes\xba|\x0c\x9a\xc2\x1eh\xfa\xaf\x1e@Q\x0e@\xa7\xb3\xd5\xde<|\xf0|\xe5*\xc2\x83[\xb5Y\nS\n\xa3\xcbe)\xec\xc0\x18\xdf\xfe\xbd\n\x8d\x0fy\xf0SF\x13\x14\x15\xc2Kn\xa1D&\xad\xbc\xbd\xa24&a\xd2|\x8d\xe1\x03\x9b/\xb9\xe9\xb1\xf1\xf65M\x17\x1a.-u\xa8{\xa6*\xb5T\"*KZ:Q$JZzW(\xab\xe8\xb4\xa8{\x9d\xde\x95\x89\x82\xd67bQ\xd0\xd2\xbb\xb8\x94\xd7\x14\x88\xa6\x08>n\xbc]\x8aF\xb6\x9a\x8dp\x01\xed\xdb\xc6\xdb\xb9\x04\xdfj\xf5\xf3F\x16\xb5\x86\xb6\x90%\x9b\xdf\xb4\x061\x13\x89\x8a\xb5\n\xe1\xfd\x97U\x08\x97\xe5\xba`=\x08\xa2\xecT\x84\x85\xf6\x95\xa20\xb9\xf7\x1b\x90\x96bN\xad\x86\xa6x\xa1\x0f7\xe5\x9b8\xcar\x15\x82\x91\xb5\xedw\x98\xdc\xd7i\xf5\xaa\xe5*t\xa3w\xf2\xa1\xc9\xfe<Lf\x0d\x9d\xaeq\x14\x98\xe1\xd2h'\x9b\xba&\xf7zO#\x19G\xbb\x9d3\x89k\x05CTF'\xc1\x9b(\xcb=\xd5\x92\xa2\x9b\xfdK\xe3\xec\xf3\x06\x82(c\xff1(>\xf9\x86\xb6]\xcd:\xff\x1c:\x7fK\xb5\x97:\x7f\xd6,\xd0\xe9\xfc\xaaF\xfe\xa9:\x7f\xac\xb4U\xe9\xfcuK\x80Q\xe7/\xd3J\x1dD\x93#\x1eG\xb6\x05\xf9\xd7\xa9\xff\x93([\x86\xf9x~\xc8t\x860\xe6\xceP\xc6:\xdc\npc\x07\xe2^\xd2\x92\xc0\xf5\x1a\x17\x1aCS7\xe9\xe4\x9d:\x16\xff\xf7\xd9J\x90\x84\xbb\xd0\xc3\x97Z\x17~:\x90\x18\xd5\x90h\x91\xd8W\xb0\xcb\x14\x08;5\x1c\x0e\xe4AN\x7f\xe2\xd7\xaa9{g?]\xd3a\xbb\xf4\x8b\xb4|.F\x17\xbb\xfc~i\xe9\xfe\x18a\xb8<o\x86Z\xd6c0\x8da\x17\x1c\x07\x8606Wa\xec3t\x97\x0cR\x11=\x1cX\x87\x18\xd6\xc1\xc1\xbf\x960l\x97\xf24\xf8\xae\xd3\x12XL\x87\xce2:\x9cY\xd8o\x18(\xff\xf3\xe0\xab4g\x91a\xe5\xa6m\x08\xa5\xc4\x9ei2\x84\xc2\\\xac\x12\xc6\x10,\xa4+\x16\x8d\xe5\x8eA\xc5\xb14\xc1\"\xe5#9\x96\xfe\xe6\xed\xc3\xea\xb2\xf2X\x91\x91=\x89C&\xce2\xe2\xbb\xc2\xad]'Z>\x9a\xbf\xe0\xa6\x80>*\xa9\x0f\xb4=\xe3\x06\xc6\xd3\x06\xac\x9di6c\x02\xfa\xb88x\xa8\xc5\xc2\xe3\xf9\xaa7_\xc0\x18\xb6\xa1x\x01\xe3\xf5u\x0f\xe2\x8b\xf1\x07\xb5\xe6\xc5X\x13kQ\xc6Y\xc4S\xe5\x1d\x03\xf3\xc3=\xae\x93\x01\x8e\xc38\x16\\\x90\xf8p\xc1\xea\x96\xc1$\xb8\x9e\x96\x96\xdbQ\xaf\xc3\"\xe9\xae\xaez\x8er\x92\x17\xfbh \xa2`\x92\x80G\xec\x0e\x18\xa0\x88\x81X\xbeC\xba4,<\xd1\x9a\xec\x15\xe3\xb2\xf2\x9d\x90\x90\xb4\xc7Sl\x1c\xa3\xa4X\xac0\x16\x81\xe7\xd6\x17\xf5\x1f@\x9bvK\x14a\xf4\xf4%\xe4\x89\xbf\x81/\xf6c?+\x08\x0f]\x8c\x96\xf6b\xb4\x9c\x87J\x99\xb8\x8b\x87N\x08\x8f\xf3d\x8c\\\x07\x82\x85\xa6\x01I\x8a\x85\xd92\xcd:G93\xdd\x15\x7f\xb8\x1e\x0c\xf1\xac\xb7\xe82U#Ou\x1d~\"c\xf3s\xea`;V\xbe\x02u\x8b\x1a\x95\x91Jw\xc1\x89\x12\xcc\x07\x84\xd7\xab;\xee%`\x90\xa8Zm\xda\xa3\x96\xb8\x9b\x80\x82ff\xe5]P\xd1\xaceF@\xb69Z,\xf3{q\xa5b\xcd\xc2\xa2\xa0\xc6\xcb\x90\xc8\xd5\xfd\xc0X\xcft\xbb\xd3\xb8\x86b\xdc\xfch\xba8\x08\xf3Pn\x80\x11\xba\xbb\xaf\xb9\xce\xeb\xb2 JD\x0c\xda\x8e\x83\xa3\xdcu\x0e1\x91\xa4]\x10\xa9\xed\xb7b\x8b5Q\x89\xd5\x82\xc6\xea\x0eEs\x96\x9e}\x12\x1d\xadNC\xad\xa9\xeb\x92\x90e~\xaf!\xc4\xfa dk\xd3\x84\xa0\x85|\xdf\x03Q\xcb0\xcbni:\x91\xb8\xe7R-CFU2\x94\xb9\x07\xffk\xf0\xd9\xbd\xc2\x16Q\xf2\x06[\x1b\xda\xfcK'\xe4\x8a\x16\xc9\x98\x9cG\x0bB\x8b|\x08\xcf\xbe\xb1@+\xa1\xe7\xacb\xe9_0\xdb\xad\xd7\x9fU\x02\x95\x16\xcf^\x02(1\xdc]\xef-dJ\xf3\xe8c\xad\x1e<\xae\x06Bc_\xcc\xd1\xf7\xf5\xc2\xdf\xaa\xf2R\x1ady\x98\x0b!\xc0(\x9c\x1d\xe6D'\x9cY\x1c\xae\xd2 #\xf9\x19k\xba\xba\xdao\x8d\n :hg\x91ri\x88Kj\x19\xc9\xb98f\xacd\xf2\xefW\xb0g\x184w\x98b\x03\xef'\x8fj\xc6k\xbd\x1f\xb0\xcax\xe5\xa5<\x11\xce\xe4/\x19o8\x994\x07\xbb\xcaX\xfb\x04\xc4\x10T\x06;p\xe9J\x8a\xeb\x12\x8a\x04\x06\x048w\xcaslau\x1e\x8d\x80\xd5U\x10\x0d\x1az`\xa1\xdfx\xff\x82\x01\xe2B7^\x9c\x15\x1f\xaefF\xdbH\xed\xe5_\xa3-\x95\xd6\xd7\xf7Q\x1c\x9f\x921\x89n\xf0\xb4,\xeb\xa1@\x19\xe7J\x92\xde\xda\x8e\xd0\xa2\x94]\x8f\x89\x7f\xfc\x9d\x9cN\x9bB\xa0\x92\xa3~*:\xf9\xd9\x17\xb2\xa0\xdau\xc4>\xba$?=\xec\xa7KR\x84\xedV\xed\"\x84\xebR'C\x84\xeaR'\x0b\x842\x99OC\xbc\x11,\xb4\xbeP\xd5\xfa\xec\x06\xd4\"\x88\x92)I\xb9\xf8\xe0FA\x94\x93E\xd6\xedhV?Q\xe9\xe1s\xf6\x8ag\xf7\xef\xf0\x1f\xcbP\xb7\xb5\x88W\xd0\xa6h\xb3&\xbc\xec\xd2v\xe7\xd2\xd3\xed\x13\xb5\xddy\xd7\xc6\xaeH\xd5\xe1\xeaR5T\x92\xb5R;\xecQKf\xdf\xed\xbe\xb7/\xd6\x9c\x85\x96\xa1\xad=\x1b\xa2\xbf\xd7\xa0kz1\xfd\x9b\xf5\xe2\x8ey\x14\x0eW\xdc\xedc\x8dGC\x99\x04\x98]\x91\xfd-\xfet=\xd8\x86\xad\xea^\xca$X\x84KE\x10\xf2\x81v\x11^$\x84\xe6\xb4n\x96\xcf:.\x96\xc9\xd9\xb75\x0f\xe2\x13K\xdc\x10xZ\xd7\x9e\x92\x8b|J \x06\xaf\xf1\xf0[/\xd6J\xb6p\xab\x80'\xeb\x82j\xe5\x9d\x8f\x8b\xe5\xc5\xe6\x07\xbe\xe3\xc1:P\xcb\xdd\xe4\xce{Y\x1dsi\x1f-2\xa2\x0e\xa2T}\xbf>f4\x19\xf0\xed|\xc0\xf4\xeb\x01\xdb.\xad\x0e\x81\xa6\xeeY\xdd\xcd\xa0\xfbd\x05Z\xa7+\x1dF*)]\xf7]\x81\xfd\x04{\xf9\x94$\xa3\xaaO|)\xd8)\xc7\xde\x1dy\x9e\x13Y\x96\xbf\x19\xc7V\xf3\x124\xa6\xf6*O\xe0*O\x06\xd9\x02\xb4\xb3<\xe0\xfaH\xc7\x86K\x93\xfd8\x1a_\xf7\x10^\xd4\xa7\xc4^\xa5\x87\xb9]\x88\xb3\x11\x9d\x03\x03pL\x9e\xa8^\x90S~\xf4\xf3X\xd4\xad\x84\xb6p2\x01\x07\xd6\xab\xcd\xab\xc1\xf8\xb8\x1b\xa1\xf1[%B\x91#\x08\xbdM?06\xee\xbd\xc9\x04\xd8g\xb5\xc3\xef\xb4\xb4\xbc-R\xb2\x8a\xb5\xa5r;\xebeo\xf9\xdf\x81\xdf\xca\x07~\xabj\xa9\xff;(\xd3?\x7f\xd1AY\x97\xceB{\x1d\xa7\xd5\x0f\xca\x0c\xa7\x0bx\xf2%\xf4\x9b\xb4\x9f~\x13\xf69\xcc\xea\x10#\xc2\x9e\x1ba\xba\xbaX/Dz\xa5f\xda\xcfX.\x82\x08$\xb6\xdbFuA\x9d\xbb\xc6MS\xba\xf8\xe9\xccs)jYx\xff\xd3\xc9S\x9e`e\x1a\xc6\x999\xe1\x0b\xe8\xa5\xf9\xb2\x1d\xdb\x81\xd7\xaaB}\xb7I\xe1\xd3L\xe4\xa5\x07\xf1\xa3\xf7\xec\xde{\xb2\\\xa1\x9fl\x1f\xb7X\xc6\xd9\xc2\xc9H\x8esrN\xcf\xc2\xc52\xeee#\xaf\xbc\xbb\\\xf6\xe5\x19\xdb\x1cxm\x8e'\xcf%5w \xfd\xdd`\xa2\xb5\xcb\x1bEF\xd2\xf2\x990\xb4:\x0f\x93ILNVi\xfb\xa6\xccw\xdc\xed\xbb\xa1\x0c^\xe7\x03\xe8\x1b\xbd\x85\xe132\x80\xcf\xe9y\xb9V1\x81\x86\x9dO\x9d\xc3\xf2e\x9bdtw\xb4\xeb8\xf8B\x86\xbc\xffbN\x96\xbb\xce9\xb9\xcb\xf7R\x12>\x92\x9b\xd4\x0c\x0c& \xda\x93\xe50R\x9b+\x06\x04c\x1d\xf6\x08\x9e\xc4\xd8M\x16\xfda\x0d\xcfkF\xbddX\xac\x05d\xc3\x1fi\x94\xb8\x8c}x\xfd8\x97EGm\xb0\x89\xfa\x06\xa0\xad\xf5(w\xbe.\x11\x1f\x81\x1fu\xe3E\x1e\x86\xe2E\x87\x7fz\xc1\x818\x91F\xa7\x89\n,\xad\x17\xf0\x10\x92\xb58\x02\x8f\xef\xc2g\xbdt\xd3\xec\xa6\xe9n\x8c\xf8h\x98e\xd1,a\x8c\xcc.\xa6\xd7\x92>o\xf1\xfc\xceMuE\xe4y\xb6\xef\xf3\x95\xa6bJ\x03]~\n\x03'&=\xf3\xc2c(8\xb4Ta\xac\xe9\x1dH.R]\xa0\x89\xd6\x1b\xc9\x90\xeb$X\xa7x\xda\xc5\x9aK\xd1\x83XO\x9ck\x19\xfe7_@\x02\xdbj\xa2\x7f3\xf6@\x99\xb9\xfc\"1`\x0e\x90P\x99tG\xd2\xf0\n\x05\x8a\xdaO\x91|,e\n\xdb4\x9a\x15\x12hm\xb3L\xda\xc7P\xce\xe3\\\xa6\xc1m\x1a\xe5%D\x99}\xaaI\xa7\x845xM\xee\x19\xfe\xf5\x0b\xbe\xff$\xa8\xd6X>\xa1V\x85\x91\x07\x01u\x15\xd2\xe0\x99\xc3R\xf1\x9eG\x07l{\x157\xb6\x9b\xe6\xc5r\xa6\xd8\x14<\x02F\xbd \x14\x05[\x9b\xdf|\xab\x0f\x86Q|\x91\xbbOn{\x99\xf7\x92\x8a\xb5+{\xad\x9f\xb3\x04\x8f\xf5T\x8b\x80\x95\x9b\xc2\xa1\xed\x87IBs`\xeb\x12B\xce\xfb \xccj\xa1\xd8\xdas\xd2!\x90'}\xbd:\xb0\xa3D\xed\xd9)\x99\x92\x94$\xe32D\xdc<\xca`\x1ef\xc9\xd79\\\x11\x92@\xc4\xaf\xb1D\x19\x99\xc0\x00\xb2bIR\xd7\xabA\xb0\xa1\x90I\x87\xf8\xb0\x86\xc7\x0dJB\xc9Z\x10\x1fm8\xbb\\P\x81\x86F\x0d\xfa\x86X\x843\xc2\x98\x1f'\xfa\x93i\xcb-\xc7\xa2y$\xab9d\x93`I\xd2,\xcarSX\x05\xc9\x14\x92\xee\xd3\xbdd\xa5\xe3kU\x1f\xd0o,=s\xaf\xb0\x1e\xd2~=dO\xe9\x06\xf7\x92U\xe1\x82x\xe9\xcd\x86\xe1\xaa\x12\x9aGS\xbc\xe68,\xb7oxYU|\xf2\xa4\x02J\xf1\x88\xa8G\xbe\x066\xd8!\x08p1\xf8\xaeZP\xe1\xcb\x92\x91\x0e\xf4\xeayUd29\xb7\x89\x12\x13-%?\x93\xfb\x03zk7\xa0\xca\xa7\"\x0f\xa9C\x8a\xda\xfa pFI\xceS\xc20\xf1\xfe\x9a\xdcsdNi:&\xc7\x12\xed\xbe\xc85e0\x10\xb2.\xbe\x8a\x8b\xf4\x91\xfdcUM\xf4\xbbb?\xb8\x86\x80\xf0\x11\xe9\xd7\x1f\x1eQs\x1b6\xbd\x92\x86\xba\x84\x0f\xf9\xc8\x05^\xc4\x06/F\x83V-\x03\xfc\x8a\x84=\xb5\x0f'\xc1\x84\xf2\xf1Z*\xdb\x97^.L)\x8a\xed\xa5\x1b\x0d\xf2I\x82(\x13\xbc\x8e\xdf\xd1a\x02L\xd5)\xab\x9f\x19\xdb\x07\xcd\xcb\\\x87\xddGtg\xd3\xd7\xcf\xbf|\x90\x0e\xa6q\x91\xcd\xfbN#TS\x99\xf3\x9a\xb6\xb4\x13Hf\x8c!\xc7\xab\xb4\xafEk.\x1a\xb2}NOXz\xea\x97\x93\xd4\xa7cI\xc3\xc4$\xce\x18D|Z\xe5r\xad\xfeS\xca\xba\xec5\x9f\x98_\xa0\x86\x03\x1b\xc6J\x0c\xe3^$\x91d&--K\xec8\x81\x04\x0d\xb31\x7f!Wx\x14E\x9e\xa4\xac\x08\x0c\xa2X\xfe\xfeR\x0c\xe8\xf1i3{\x07\xdf\xc1\xa9\xee\xe5\"(\xdd\xe6\x98<\xd6f\x8c\xd8\x8en_\xa9Aj\xcd\x87\x9d\"\xa81r1\xb2\n\xf4=A\x07?\x83\xe8|\xc6\x84O w\xcb\x94d\x19\x93\xda\x17E\x96\x03\x89\xf29I\xe1\x8a\xf0\x06h\xaa\xc8\xd2>\x06\x1dv`\xbd\xfc\x90\x862I\xa5\"U\xba?\xe7N\xae\xc8\xdb\xa8\xe8Pz\xd4\x8ei\x92\xe5i1\xcei\xaaS[\xe4#g\xc0L\xef\x95F\xda\x8e8\xa0>R\xff\xb4\xbbA\xa9\xba\xec\xd0\x94\x8cICK\x92{\xbb\x02\x1bYM\xa2\x86]\xd0\xbe\x17\xf3>DUN\x8a\xe5l:\xeb\xa4\xc3t\xcf\xf2T\xa0a\xbd\xf2\x81\xf630\xbf\x8f\xe2\xf8S-\xcch\x95\xab\x8b!\xaeb`n\xdc\xbf\xe8\xb2\x97X\xac\xc9\x7f\x89K\xac\xdcH;\xb7\xd0D\\\xc6\xab\x8dF\xbf}\xe2\xe8k\x8b\xff\xcf?\xcb\x8c\x85\xb84+g[\xc5\x01\xb7Q\xd2[\x8f1\xddi\xf6!\xa9<}\xb5\x93Q~\xac1}I\xb7\x01\xb5\xe74\xbdK\x16\x9f\x83\xbc\xb8t#{k\x92Xzw\xf1o8\x97\x10\xb9\xbe\xec\xf4\xe5*\x91\x15J\x8a\x04R\xb1k\xbfM\x82\xec\x95\"\x9b\xbc\xbaG\xf5\xc6\xe68\xc3\xa3-TUNP\x1f\xb1\x9c\xef\x8a\x90\x0fB\xab2\x03\x16\x02\xd0\xde\\\x86PQ\xb2,\xf2S25\xc3\xc5}\xcd1\xf2\x916\x9c\xff\xf4I\x1aUZ\x7f\x89\x07y\x19\x96<\xf5\x98\xb8\xb3\xa9XA\xec&aR\x9a\x84\x13n\x12\xc6\xac\x85\xf6\xcfK\x1d\xca\x08\xf4\x80~/\x8e\xa0\x18\xc7\x07G\x12\x85S\x1aQ}pJ\xa2\xc0d\xd1u\xa2\xc0\x83\xfb\x16Q4\xde\xf2y\xe7\xed\x8b\xb9\xe5?\xe4k9G\xd6\xd3\xffqG\x0cKt\xf3\x86]\xcb\xdc\x95_/\x1d\x01\xc4o\xfd\xbe\x06C\x08\xfb\xb6g\x88\x17\x0eC#\x910\xba\x98v\x0c\x89\x95\xd3\x8e.0\x1c\x96\xe3a?\x8c=)z\xb5T<j$\xe8:om?%\xd3!d+7.\x8882\x9cT\xe6\xbe\x90\xf2\xad\xde\xac+_\xa2\x94\x0c\xaf\xc19\xf5\xbd\xf7a\xec\xc3\xd4\x87e73k\x9e\x06\xb6\x8f\xff\xea\x83(\x137\xf2%\xd2`$\xe2\xda\xad\xe6>\xadB\x99\xba\xb4(r\xaeueb\xe8\xba\"\xf3=\xd8\xd6\xdd\xd7\xad\xcd\x06D{\x93h\x8b\xc2\xad-\xa3\x0d\"w\n\xd9\xc1\n\x97\xf8W\xc7\x99\xa5\xe5\xae\xa0\xdc\xd3\x9d\xd1\xdd\x92\x8cs2QM\xfcmBIa\x07\x8e\xc3\xe3v\x01cz\xce\x85\xf0\xf09\xbb_\\\xd1\xf8\x83\xa6~\x04;\xb0\xf1\x7f\x7f\xcf\xd6\xff\xfc=[\xffjc\xd6\x86\x08\x11\xe2b\xb0\xfea\xf3\xeebs\xf0}8\x98~X\xffjC\xe3\xe6T \xe4\xe6\xd5\xc5\xe6\x96\x01\"\xe3\x10\xf4bs\xf0\xad\x01\x841A\xcc\xad\x7f\xa8\x93\x1d\xd8\xde\xaa\xa4f\xa9\xe9\x81B\xe7:\x11NM;R'\xc3\xd7\xed\xa6\xa6\xfa\xa62\x12OY\x0d\xf5\x7f}\x9b\xac\xa4\xdd,\xdb\x80\xc6x\xf6\xcb\xfey-\xe7\xd9\x91\xd6\xa7y\x949\x9e.\xec\xf2\xa4R\"+\x16,\xd3\xe4\xb4\xc1\xe7\xb0\x03Ga>\x0f\x16\xe1\x9dF\xac+K#\x8d\xf8\xd2\xef\xb6'\xef\xf028`\xdbNBou\xf2\xa7r^\x07\xea\xb9\xd8L\xaf\x7fH\xddC&\xba1\x1e\xa8\xac\xad\xf1\xac\x18\xb5 \xd2d\xddiz\xa7\xea{\xa3\x89\x9e\x08\xd2\xac\xa0\xc9\x97nK\xd3\xc2\xeat\xebX\xa2\xbe\x93\xe1\xba\xab5\xde\xed\x16\xd0hD\xa0BC\xaa\x066\xc0Z}\xf2\x04&B`\xf3@{i\xe5AM\x13\xa4\xb1\xcdc.\x15KF\xa9\x9b2\xa8PmBdF)\xdc\xbdQ\xe5/\xffF'U\x93\x17\x1a\xec\xc0\x8cm\x86\xbb\x90\xc3:\x8f)\xd6u\xc6\x0c\xcd\x0cJk\x9a)\xac\x12\xe6\x13\x18\xc2\xba\xe6\xf3D\xb8\xdc\xf2\x84~\x11\xe6\xf33\x1f\x97\x16\"\x1d\xb4\xe5,\x90\xcdp&\xc1`\x17bW\xe4!u\x9f\xa2\x86\xba\x0bOa\x08\xdf1l\x84\nX\x8a\xfdk\xd0\xb3\xfaK\xf5\x8ci0\x17\xed\xa1>\x1e\xd1\xf9\x10a6\x99\xc2\x87\x0c\x85\x13\xf4w\xd7\x0b\x1cSn\xb2\xd3\x96--e\x13\xb4\xd9\xebIH\x9fpLo\xa8K\xbc\xc6v\x02\xea\"\xbe\xea\xf6w\xb4\\_b|2\xb2Jv\x8ca*\xe9\xdbx\xa0\x17_\xa8x\xdcr\x9e26\xae\xa1Js\xa75\x91;\xe5#;M`\x00\xb1\xb5gJ\xc0\xbd\x98\x11W\xc2T\xb6\x9c\xff\xb5\xcdu\xb7%zB\xc0\x00\xc6\xac\xac\xad\x04\xd8\xfax\xdb\xa9\xf4/l\xe1\xff/k\xf9\xc6\x8c9\xca\x18\xd5f$\x17\x82\x99{\xeb\xf7\xdc\x05K_V\x18\x80\x8b\xb8\xea\xbe\x9c\xba\x84]\xb8q\x13\x1fBYi\xec\xa1\x05\xdf\xb8a\xae6\xab\xa3\xce\x9d?S\x08i\x02\x98\x1dk\x17\xae\xf89\x82\xdb\xa4\xb4b\xb5\xaf\xdf\xf5\x99/\xf3JHx\x1c\x06\xcb\x8cR\xd5\xa5\x8c\xe7\xe4\xe2.\x10L63EJQ\x1bP\x086\xf3\xdaV\xfe.\xb3\x86\xa80\xe6_k\x13N\xee\xf90\xad\xf0\xa9W\x14\x01g\xd6F,\xe2^\xb42c\xed\xcf\\\xb9\xa6\x00\xfb=\x17l\x86b\x8c\xaeq\xcf\xd7\xf4\xdc\xe8\xc5\x95c\xe4\xe8\x1ccbn\xfa0s\x85\x15\x06\xf7\xec\xb54\x88 \xe6f\xe0Y\xb0]\xb6[;\x8b\xf0\xee}\x18\xe5\xdc\xfd\x8cq\x98\xb9{\xef\xa6\x81x-[B\xc3{\xe8\xe3&\xee\xe4i\x18\xc5\xc8K\xd1em\x17\x9b\x96/a\x08\x13L\xe0\xd7\xffhT\xb1\x00#\"0)\x98\xc4B&o_\xf1\xebG\xb1X\x15\xd5\xd2ic\x87}\xbd\xf7\xb9\xafn2v\xa1\x80!\x8c\xdc\x85kH\xf0U{\xa9\xb8\x87IW \x1f\x12\xf7\xd9\x96\xa8\xdc\xa1\xe5I\xe7\xc2z\xf7\x9c`#\x8c\xe3\xe0c\xe6\x0c\xe1\xf9\xf3\xe7~\xab\xb0\xc8\xe7\x1b!6\x9aq\xa8\xa7\xcf\x9e\xea\xa1\xd0\x88\xc7a\x9e}\xffL\x0f\x93\x92I1&i&\xc1\x0c\x1f\xccd\xe2! \xf7\x8d\x01nI\xc6\x83\xdb4\\\x0ej]|\xf6\xfd?[\xf0\xfc\x10)k\x8e\xa5\xdd\x01 8'\xf1\xb2\xec\xe9\xd3g\xed\x01I\xc0\xda\xb8\xbf7\x82\xd5\x87\xfe|\xb3\x8dE \xd9\x18\xfd\xf3\xcd-3(C@mH\xcf\x9b&\x06'\xd8\x98\x10\xb2\x1c\xc4Qr\x1d%\xb3\xfa\xb8\x9eo\xb61[\x83V\x06\xf7|\xb3\x8d\x83\x1al\x1c\xde\xd3\"\x97\xc0m\xcc\xd6\x80\xcb|K\x83<\x9c\xe1\x1c.I\x1a|\xcc\xee\xb0\xf2\xb7}+7+\xb6'~Bo\x93\x98\x86\x93A\x91\xc6r\x96\xbekA\x914\xad\x93\xc6\xd6\xd3v\x1f\x18\x10\xdeG\x18\xe4i\x98dS\x9a.H\x9am\xcc)\xbd\x16-?mO\x95\xa1R\xedGB\xf3\x01\x9d\x0eP\xc9\x16\x0d\xb5\xc9\xa3OC\xcb0\x0d\x17$'\xe9\x80&\x84Nec\xed\x89\xeb\xd3\x18\xd3d\x96\x03\xe9\x0e*\xdbj\xcf+kK]\x04[\xedE\xc0@\x1ak\xffi\x9bN\x19Ts\xe9?m\x13(\x8f\x9dP'\xcd\xf6\x8c\n(\xba\xccxV* \xd9\xee\x1c\xa7\xdb\xc6\xce\xa0YF\x02N\x1d\xea\xd36\xbd \xa8\xe6h\xdb\xd4$\x00[\x03n\x0f%\xa6\x8dm\xe6\xbb6Rh\x98=knn\xed\xceq\xa8\"\x9f\x0f\xc8]N\x92\x8cAo\xe0\x06\xda\xdct44\x83\x95\xcb\xe3\xc5l\x83\xf1\xa0\xabp|\x9d\xc9\xd5\xa7\xc1F\xb3\xce<\xcf\x97\x03\xd6\x01YG\xc3M\x9au\xd4\x89\xd6\x90C\x13\xbc\xda\x1c\xd8vQ\xf6\xad\x8dVs\xc5\x8c\xa7X+\xfb\xd8\x8d\x8b\x94\xfc\xbf\x82d\xf9\xe0\x8aN\xee\x07d\x12\xe5\xb4\xdc\x93\x9e\xb5\xf7\x04[\xed\xb2\xc3m\x8aiV\x13\xdd\xac\xb2\x1d\x95\x9fl\x13\xaf\xa1n\xf9\xb5\xf6\xb2\xc0\x1a5n\xf1\xcc\x80\xfc\xda\x04\x19F\xdb`\x7f\xcf\x0d(m\x92\xe1s\x03y \xe3Sh\xb8E\xbe\xedmJ[OO\xfb\x86\x8f\"\xb0\x82C\\HQN\x16%\xde\x0d\x0b\xa0YQE\x98F\x04\xd1\xd6Q\xa38p\x1b\x93D\x91\x01\xe3\xcd\x06\x16az\xcd\x98\xa1\xfc\xaea2[\xd5\xe8\x84\xc4r\x80\xcf\x0d\x84\xd5\xacD\x938J\xc8\x00\xaf\xb6\x859M\x07W\xe1dF\xe4\x97\x0d\xb4\xd6l\xa4df\xd5B4\xac\x89f\xcd\x1b\x9e\x02r\x90\xe5\xe1bYV\xd6\xec\x00 \xd6\x8aINjs\xb2\xd5\x1ef\x86\xb71\xb3\x8d\xa9\xc0\xdf\xd6\xf7m\"\x910\xb5\xad\xba=\xbd\x8c\x06\x9b\xdcF\xd3\x18\x83R[\xd2\xec\x94\x08\xd3\xe04\x9a\xcd\n\xc1\x1aD\xfeT#U\"\x9cF\x9c~\xde&k\x99\xd5\xeecc\xb4m\xc8\"\x8f\xe2\xba\x8c\xdc\x9e\xc4\x9b\x88\xdc\xd6`\x9e\x1b`RJ\xf3A\x94|$\xe3\xbc\xec\xdcw%\xa46]\x0d5^\xd8I\xdc\xa8fly\xd0\xd4\x8e\xda\xb5\xa5\xad9\xbd \x8d[Z\xfc\x06M\x0e\xeb\xb0U\xbb8S\xbf43\x8d\x92 ,\xf8\x0d\xa1\xaf\x1dX\x07\x02\xeb\xe0|\x1d4\x0d\xbdR\xd7V\xfa'\xff\xa2\xc15\xb9\xb7\xe6O\x16\x95\xc5\x11\x0e\x83v\x95\xcb[\x0f>\xd0 %\x19\x8do\x08St\xeb\x17\x1d)+\x8d\x98\n\xbe\xb5\xf9\x0d\xc7\xee\xc3\x07\xef\x1f\x0f\xde\x8b\x7fll\xfc\x1f\xc8h\x91\x8e\xc9Q\xb8\\F\xc9\xec\xdd\xe9\x9b\x9d*\xc3\xe1\xe0\xaaH&1[\xe7\xc1\"\\\xfe\xff\x00\x00\x00\xff\xffPK\x07\x08-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00 \x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8\xec\xbdys\xdc6\x9a0\xfe\xff|\x8aG|w\x152M\xd1\xdd\xad\xc3:,k\x1d\xc7\x9e\xf5\xbb\xf1Q\x963\xf3\x9b\xb7\xa3UQl\xb4\x9a1\x9b\xec\xe1!Y\x13i?\xfb\xaf\xf0\x00 \x01\x10 \xd9\xb2\xb33\xbb5\xacT\xac\x06A\xdcx\xeec\x0b\x16U\x1a\x95q\x96\xba\xa5\x0f\xc4\x83\xdf\xfe\x00\x00\xe0dW\xbf\x92\xa8t\xe0\xf4\x14\xca\xbb5\xc9\x16@\xbe\xac\xb3\xbc,`{\xdb\xf4v\x95\xcd\xab\x84\xc0\x19\xff#\x10\xb5O\x81\xb8\x1e\x1c\x83#\xba\x91?\x9a\x93E\x9c\x12\xda\"\xfb+\x08Ws8\xe3?\xdc\xd9\x05\x0e\xe8\xb8k0g\xe2\xaf\xe0\xfc6\xbc\xbe&\xf9\xcfo\xce\xcb0\x9d\x87I\x96\x92\x0f9)HY\x0f\xa1\xec\xab\xf3\x87\x07\xb7\\\xc6\x85\xdf,\x89X\x8e\x9c\x94U\x9eJK%^\xd0\xe7&\xcc\x81\xc0)\xfc\xf6p\xf2\x87\xbaPT\x85\xd4\xcd\xe5\xca\xf4\x89\x17\xe0\x92Y~\xe1\x89v\xe9\x0f\xb1b'JU\xdavLG7\xcb/h\x17\xcaKl\xeb\x18r\xbfU\x9a\x1c\xc3\xd6\xa4]\xcc\xbb8\x86\xdf\x1e\x94w\x0fj\xa7|T%\x1dU\x14&\x89\x1b\x8b\xc1\xf9\x10\xfb \xfdJ=\xfa3\x81S\xd8\x1aK/\xea\xd6\x9anx\x9bi\xb0\x82S(}H\x83\x88N\x8b\xfe1\x87S\xf5\x10\xfa\xd0Z\xb24\xc8\xf8\xf9\xbc\xbf\x87\xf7x\x1c\x02vL>\xe4\xd9\x9a\xe4\xe5\x1d\xff\xb2\xbdBQ\x96.\xe2\xeb*\x0f\xaf\x12bY\x96\xb4Z\x11\xf1~\xdc~\x7fM\xcac\xc8\xd5\x15\xf3\x9a9\xd29\xa4\xca\x1c\xf4\xd1\x8b\x13R\xd2\xa3^\x06\x97\x97\xa4x+\xeeK\xeb\xac\xc9\x8f\xd8 :\xd7\xb0JJu\x0cp<\xec\xeb\x01{\x9d\x06s\x97\xf8\xe0\x84\x0e]d\x1f\x88:\xbdL\xdf\"\xbd;\xde\x0c\xdf\x99u\x9e\x95\x19\xbd\xa9\xc12,\xde\xdf\xa6b\x8f\xd8i\xc2\xef\xd5\xf6\xd7p\n\xce\x93y\\\x94\x8e\x0f\xa9\x9b\x06\x14pL\xc7\x07\xac\xda\x83;\xd3\xceG*\xf7\xefT\x05\x81\xa2\xcc\xe3\xa8tN\x94[\x99\xc3)\xa4\xee\xfe\xd4S\xf7\x94^\xa8\x99\xf39N\xe7\x8e\x0fNN\x8a,\xb9!\xf4\xcf(K\x8b2\xaf\":\n'N\x8b2L#\xf2~A\x7f\xads2\x8f\xa3\xb0$\xec\x935\x05\x1b)\xd6\xe3[s^\xde%\xf8\xb2\xa0\x7f\xbcH\xe2\xb0 \x85s\xa1\xf6\x9ca\xcfE\x14&a\x8eu\xc9_+\x92F\xf8\xdd*\\\xaf\xe3\xf4\xda\xb9h\xe6PJ`\xb4s\xf9\xe9dS\x1f\xaa\x936\x9c\xa1\xb7\x8c^\x9a\xdf\x1e|\xb1=\x9f\xc9]\xe1\x12/Xd\xf9\xab0Z\xbau\xd3\xadvE+;\x138==\x858\x88\xd39\xf9\xf2~\xe1\x12\xcf\x83r\x99g\xb7\x90\x92[\xc8\xdd\xef~N?\xa7\xd9m\n\xd9\x1a\xa1\x9e\xf3\x1d\x8c\x80\xc0\x08\xbes .`EJ\x88S\x06\xd8c\xac\x90-X\x9d\x92\xd5\xf9\xcb\x8b\xb7?!l\x0f\xbe\xf3\xb4\x8b\xe6\x03\x05\xcaA\x19^3\xc8\x81\xbf\xe8\xe6\xd1\x99\xb1?\xee\xef!\xad\x92\x84\xbf\xe3\x1b\x8a\xaf\xc5\xdf\xf7\xf7\x83\xae\xca\xd6X\xed\x9c\xb7X\x9f\x0bl\xb3\xf9%\xb7\xda\xba\xf4`\xbd\x81\xbc\xd5\xe6\x80a\xb3\xd2Ou>\xf5\xd1\xc3j\xcd/}\xd6\xfcL\xf2y\x8b_j-\xf9\xb0bE\xa5@\xad+\x1fd8\x057\xc5\x0f\x94\xd2\xfa\x83\n\xf1\x9f\x8f\xbf`\xeb\xf4\x14R\n\xea\xe4\xf3\x96\x1a\xce\x9bq\xcd\xd2Yy1\xf0h\xd2\xa7\x9a\x9d\x97y\x9c^\xbb\xc4\xa3\x18\xb2lUzh\x1f\xa8\xca\xf3\x81\x1f\xe9\xac>\xd2\xf5\xb9\xb2\x1dm<j\xec\xd0\xd6GP\x1c\xf0bM\xa2x\x11\x939,\xb2\xbc\xffd3\xbc\xf8\xe0\xebx/\xd5\xe9\n\x06\xc1&\xbb\xbb\x9e\xeb\xdc~.\x1c\x03$K\xdd\xa3C\xaf\x0dfRw\xdf\x0b\xce\xefVWY\xa2\xbe\xa4[e\xa4\xc6\xb2\x06z\xb8f\xc8c\x81\xfa\xf9\xac\xbc\xa0G\xc1\xc5?N\xa1\xa2{\x9f\x89\xc2\n\xce \x83c\x88=\xd7a\xe3 \x1c\xba<\x9e\xb4\x1c^P\x94YNOdn\\\x19}Y\xe8Q\x94\x87\xa8AC\x92\x17q\x96\x1e\x833\x0d\xf6\x83}\xa7\xe9\xa7\x99\xa1\x93V\xab+\x92\xcb\xf3\xbf\xbcDR\xd4\xa5\xff\x9eB\xeam\xb6G\xfb\xc6\xad\x99\x1c\x19\xb7f\xf2\xd4koJ\xea\xee\x8e\xb5\xe2\x10\x8b\x0f\xf4\xe2\x16>\xd0F%\x1e:\xba\xc8\x87\x85\x0f\x89\x0fk\x1f\x96\x8c\x06\x81\"x\xdd\xa6r\xe83\xaf+\xfc\xd1\\\xe1\xa6\xaepn\xaepWW\xf8`\xaep]W\xf8\xc1\\\x81\x12\x88\x94\x0b\xc8\xe1\x18n\xe8\xbf3\"N\x17A\x1a\xf8\x81\x12\xf3\xae(\xfe\xed\xc1k\xe8\x0ds\x8b\x97\xbc\xc5\x98\x9eB\xd1Z\\\xb7f\xfe\xe8\nN\xe1\xb2i\x19\xbf\x91\x7f\xe3\xa7'\xadO\xe9\xf5w#Dvx\x98\x10hz\xb8?\x94Lv]\n\xec\xb7\x96\xf4\xdd\x8a\xfe\xef&\x8b\xe70F\x90\xb9\x9aE\x17\x1e\xe5\xa0\xe0\x18Ro\x16]\xf8@\xe9\xa2kZm\x01g\x10\xba R\xc6\xc7p\x87L\x98\xe9\x0e'X\xef5\x7f\x83\xf4\x96\x0f \xfd&\xf1Y\x87\x95\xbb\xf2\xe9\xa1\xa0P\x1e\xb7\xe1g\xcf\x87\xcbYt\x01[\xa7\x90\xe0\xcdu/\xb1\xc6\xda\xf3YOW\xf2[\x17\x7f\x9dB\xa2\x81\xd5f)\xf2 bw9\xf6\xe9I\x83S\x98\xd0?\xfeHI:\xfa\xc79\x9c\xc2\x1e\xfd\xe3\x03\x9c\xc2!\xfd\xe3\x07Z\xe7\x80\xfe\xf5g8\x85]\xac\xf53\x9c\xc2\x01V\xfbH\xdfN\x0f}\xe5\xc6\x17\x9b\xdd\xce]\xe3\xed\xdc\xd3\x8b\xf9\xed\xd4\xef\x1b\xbd\x9dO\x9c'\xd7\xed\xcb\xa9\xf7n`]@b\xe38\xaa\xca\xdc\xd2\xb3\x1c;\xda\xa8\xf3\x8c\x02H\xd2>\\\x1c\xde:N\x83b\xdd\x10F\xa7\xe0\x00\xfd\"\xa5\x18\xe7\x14\x91\x0f\xef(\xf7(%\x90\x84\x11q+\x1f\x9c\xed\xbfVYy\xe2x\x88\x99\xbe\xf3|\x08a\x04\xces\xfamL\xffz\xf6\xc4\xe1d\x9b\xf3\xdc\xb1m\xeffD)\xe7\x8b\xe5\xf2\x94a \xe2\x86\x9e\x0f\xb9\x9b\x07\x1f`\x04y\xf0\x1a\xbe\x87\xd8\xed\xa4\xd2\x04\x1f\xe580+/\\:\x07\xeb\"\x11\\#\x12\x94\xd9O\xd9-\xc9_\x86\x05q\x91{$A\xb1N\xe2\x12\xbf\x0e\x12\x92^\x97Kx\x0e\xbb\xeat=\x1f\x1c\xb6\x86\x94!\xe9C\xdc}\xe8\xc9\xa9R\xc6\xac\xce\xe9\xce\x89\xbbz\x1b\xa7\xf3\xec\x96n\"\xfb+x\x1b\x96Kz\x97\xf1\xdf3\xf1\xfe\xd8\xf2yA\x92\x05\xfd\x98\xfe\xab\x7f\x8a\xef\x8eA\xc0\x01\xd7\x11\x84\xe82.\x1c\xcf\xf5z\xf0\xe05\xc7\x83\xd7\x8f\xc0\x83G\x9d\xa4\xca\xbe\x8e&\xd9\x8d;\xfa\xdfC\xaa\xd8\x89\xb8\x03\x9d\x16\xa0Kb\x90m\xc9\x1b[o0#\xa5\x91d\xe5\x7f\xf27\xed\xe5\xcc\xe9\\b\xfa\xbf\x01\xfb/\xaf^6\xf8p\xbf\xc8\xf3\xf0.\x88\x0b\xfc\xd7\xdcX:\xb8\xb1\xff\xe57E\x9e\xf2\xb0\xb3J9nN\x17\xd0\xbe\x04;\xf2\xe9nM^\xe5y\x96\xbb\xce\xcb0\xfd\xae\x04\x8a\xdd)k\xbd\xcc\xe6\x90\xa5\x00\xec\xac\x9aey\x9bB\xb0\xa6\x15E\xb4e\xb9Vt\xb5\x9a\x1e\x94\xf3\x95\xdfi\x9f\xd0\xf6\xd2\xce\xd3\x89wq\xec\x03\xb9 \x13\xcfuXq\xd3<Da\x19-\xa1\xbdn\x86\xbb\xd4\x9c\x1c\xa4\xc4\xd8O\x1d\x9c\xc3\xa0\xa3;H\xea4|\x83%\xb8\xd6\x9c\xd4Rf=\x9b\xfd\xa6\xac$\xb2\x99iVBX7\xec<n\xaf\xed\xa0\xdb\x08\xb2u\xe9\x19\xa7\x91\xa6\x07F\x16\xa6U\x1cr\xe0\xf7MX\x98>\xfee\xd9\xc7\xbf\xcc\xfb\xf8\x97\x9b>\xfe\xe5\xae\x8f\x7fi\x18\x9c?\xdb\x19\x9c\xe5\xa6\xec\x08\xe5aV}\x8c\xce\x15o\x99\xb2Ns\xc1:\xd9x\xa5.\xdee\xa9\xf1.\x8ckY#3\xa0q-W\xc8\xb5loC\x88\x8c\x05\xbb\xbc\x94\xd5\xa1,\x0b\xf2\n\xc7\x90\"3\xb3b\x8c\xc3Rc^\x9a\xd3\x8f\xb5\xcf\xb0\xb6`rh#Y\xcd\xf7\\\xd7\xdc\xc8\xe9)\xb2:\xdd\x92$\x90H\xc6F\x90d\xa7\xd2\xc5C\xaf'\x05: Dr\xecf\xda?\xa0Oq\x1b#T\n\xf3\xebjE\xd2\xb2\xe0\xb4e\xdfw\xf4\x89\xc2\x82\xc0\xf8\xb8\xb7\x1eH\x02{r\x0be{\x0b\xf5\x07[\x9el\xde\xb2K\x0c\x94\xb5\xfe`\xe3\xd3\xc74\xae\xd0\xd4\xa6\xe7\xa1\xf3m\xab1\xba\xa1\xd6/\xecm\xd5\xea\x95p\xbdN\xee\xb8\xf2\xaf\xde@s\x8b\x0f\xe6u\x11\\\x87\"!\x904!\xb2J\xa5n\xcaE\xce\xfc\xa6\x93\x9b\xcfl\xdc<~\xe6\xba\xab\xe0&\xce\xcb*L\xf0\xe25\xbf\x10\x96x\x9cW\x17\xbc\xfeG\xfa\xcd%\xfd\xdf\x16\xb2\xfc(\x0f`\xdc~\xe2yV\x8e\xfe\x1f\x85\x8b\x9f\xeab3.dk\x953\x1cu\xa8#4\x8a\xa2\x8c\xca\xc3f\xaa$X\xb06\xf7=83W\x96\xd5n\x16\xccE!H\xee\x96\x9e\x8f\xb0'\xa3gtk\x8c\xdc.jL=\x03Y\x04\xcd!\xaa\xeaf\xd5\x0d\x91 \x9f\x87V\x7f\xce5)\x1d\n\xbc\x91\xb8r\n\xf1\xcb@>\xbe\x88\"R\x14Y\xce\x08\x8a\xa2Z\xd3\xfd \xf3-\x0bA\xe1\xdc\x84IEx\xdb\xf4\xd0\x95\x0cY\xa5\x01\xbe\xf0\xfcMI\x0e\xf9\x08l\xa5\xee\xf4\xc8\xb3\xf3\xfd|\x0cO)\x9e0+~\x7f{\xe0\x8a\xcb\xf6\x82\xa2\xe6\xb6S\xa4 w\xd1\xbe\xa0\xea\xfa{A\xd8\xcc\xb3\x9f\xd8o\xe4\x1f\x9a\x1a\xb4\x8f\\\xb4\xebWS\xa3\x06u\xc8\x92K\x82j\xcb%\xda\xdd\xb3\xb0\x85\xa9\xbb7\xf5\x14dk>\xf4\x82\xc5\x0e\x16\xbcF\xecNh5\x99t\xef\xbf:\xb5\xf1\x01;b\x1b\x9f-I\xe67\xb1L\xa8\x9b0\xdf\xa2\x17\xb7}iT\x1a<\x05\xc6k\xd8\xaeL\xdf\xa0\xfb\xf8`uX\xff\x8d\n\x8dne\xba\xb2rCd\x82\x88\x9bc\x1f2\x1f*\x1fB\x1f\n3\xa8\xa4@d\xcbHc!\x03\xd0\xc6\xb9\n\x8fL\xc9T\x88\xe8\x1c\xc9-p\x18\xf76N\x99B\x8e|\x89\x08SJgQT\xe59\x99\x9f\x00\x9dd\xb9$\x90f\xe9\xceJT\x9c\x93\x1b \xe9M\x9cg)\xc5\xffH\x0e\xd3J\x8b*I\x80\xd0VaE\x8a\"\xbc&\x10\xa6s\x08\xe7sTe\x87 ,I\xb2^T \xdc\x86y\x1a\xa7\xd7E\xa0\x9f\n\xfa\x90\xa4 \x1dD*E;3}\xb1.\xcct>}(\x86\x1f\x9bi\x11W]\nR\xcb\x80\x9f\xfck\xf1\xe4\xda`\xdedz\xf8A^\xcc\x92\xd1\xe8\xc2X\xeb\xc1\xf3\xbc \x0dW(\x91}\x93\xde\x84y\x1c\xa6%\xfc)\xce\x92\x10)\x99\xd6WmJ\x8c\xdd\xb2(X\xe4\xe1\x8a\x14\x9f\xb2\x0f\xd9\x9aQ\x1a\xd1\x1f\xcc\x1f\x0e\x82\x01}\x16!OM\x9c\xae\xa4\xac\xeeW\xec\x0b\xb6bvaa\xa3\xd8\xa5\x8eS\xca8\x90`]\x15K7\xed\x10V\xab\xb35_\xacD\x9d\nW\xf2\xca@.\x0b\xe2tI\xf2\x98\x83\xed\xdd}O\xfd\x84\xb1\xe8\x93C\x1d\x03p\x1e}\xf2\xd4\xd8\x16e\xbf*\xe9M=?\xdaK\xec\x86\x0d\x91\xeb\xf9x\x0b\xc7'\x10\xc13\x10\x1c\xd0 D\xa3\x91\xbe\x88\xe2\xc8\x17\xb3H[\xc2\xa4io\xb6`\xcc\xb1Vt\n\xa1R \xa3\xc2f\x94|\xff \xb1\x80\xf9\x16\x8b\x97x\x9e\xccY\xd0\xef\xd4\x91U\x1c\xfb\"\x9b@\x89\xbbP/@\xa9\xec\x16\xb3,(\x83\x9c\x84\xf3\xf0*a@\x98\x1bi\xf0\x92S\xd8\x9a\xb4\xea\xdf\xe6q\xa9\xd6\xafKD}Z\x18&Iv\xfb\xefa\xb2x\xbf&)7\xbdS\x1bRk\xd4\xad\xb5>\xac\x9b\xcc\xd2\x88\xb8\x0eA\x83\xa8u\xf7r\xae[P\xc3\xd0\xf6\xfd=+\xbd\x14\x138/\xc3\x92\x04$\x9d\x13\xb4\xd6\xc9\x83\x94|)?\xc5\xd1gw\xc9\x86\xd0\xdd\xe9\xb2\xbd\x87%m\xcd5\x89\xf2\xccTb\"\xf3b\x8e\x18\xd7\xbf\xc7\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\x16 \xa9\x18\x06j\x86\x83\xfd\xa4\xa5$\xd5\xd4\x17b)w\xab\xde\xfdfB\x9e?h*sR\x94yvG\xe6\xad\xe1\x0f\x1e\xa2$\xcea\xa3\x15\xe7\x14G\xab |\x0c\xf3i\x8e\x98\xfaeP\x8f\x8d\xd60-D]Acu4a\xa12\x113@\xfe\xfd\xa7\xd0X\x9f\xd9&A\xabx\x1d\xdb)m\\p\xc9\xbf\xea\xa3\xfc\xb1C\x86?\xaa$\x11\x17\x16\xcf\xbe/\xdf#\xe2\xcb}\x7f\x13499\xda\xb3\xea\x8a\xec\xbb!\x8e=\xaetN\xd7\xb56\n\xeb\xa3\x8a7\x1c\xdf\xde\xc1\x9e\x01\x8f\xbf\x0d\xcbe\xb0\n\xbf<r\xdc\xb1;\xa6|\xba\xa2\xf3\xdbt\xb0C\xeaK\xcb<5M#u\x0f\x9f>v\xeds7\xde|\x02\xd2\x80\xcc\xe3\xd9\xb73\x88LZ2\x90\xb5\xfb\x87a\x10\xa7\x87\x1b/\xf0\xdf\x85A\x1c64!\xaci+\xc1J8\x93\xee\xa0\xcd\x19\xe3\xdb\x8f\xa8S\xc8\xb5\xb5U\xba\x1d\xf2-\xebg\x9a\x85\xeec\xf7\xdeb\xaeg\x16$\xee\xeb\x06\x96\x8c\x90>:\xf4\\\xa7\xc8#\xdd\xd4\x81\x92\xd3\xb5\xd0\xb6\xcc\x98\x1dI[\xfd\xe5:\x0e\x8c \xf4\xb8=\x8a#j\xca'\x06-\x08\x838-\xd6$*\xcf\xb3*\x8f\xc8\x90C \x08S\xe9f\xf96K \xc1\xa5\x87&\x12=\xb2Y`\xa4\xea\xa9\x8e\x10\x7ffn\xea\x83CYB\x07\xf5@q\xf3\x9b\x1e \x8a\xbc\xe8\xadm\x8c\x97\xa4\xcf\xaa\xe6\x8b\x8a\xd7;\x03\\\xa1\x92i\xb1\x8a\xe0\xd7,N\xdd\xda\xda\xd7\xc3\xf6\x90\xe2\xcd\xe1\xac\x86\x07p\x0c\xa1\xf8\xa9\x94\xc6\xcd\x818\x06wN\x12R\x12|\xefK\xaf\x14K\x8fF\xf2.\xd3[\xf56u0\xd2\xe2.\x1a\xef\x19e;894\xab\x90\xc1\x91\xf8\x08\xb9\xffot\x0d\x7fo\xc0\xb01\xd66_\xbd\x03\x93\xa2\xd9M\xdd\x83\x03\xcf\xc7\xf7\xe3\x86 \xb69\x98\x18\xaf\xe9\xe4@7\xf3\x0b\x8d\xaeT\x9f\xc9\x9d\xd9\xff''\x0b\xf3\x8b\xcb\xcb\x82$\xf6wx]\x8f[ \xcb\xe4%VX\xb7M&[\x83\x9c,\xa4\xcdh7\x13\x0dk\xe63\xb9\xd3\xf6\x14$\x96\xbc\x0d\x1ar!\x962\xc2\x88\xb6\xbc\x92>\xff\xf2/\xec\xf8\x1cC\xd5^\x1c\xfa\xea\x18\xca\xf6\x0b\xdc\x03\x83v\x1b\xb7 m\x97\xaf\xf3l]\x1cChX\xff\xec6%\xf917j\x12\x8f\xd9\xfbI\xb2]\x91\xc4\x1cA\x94\x93\xb0$\xaf\x12\xb2bn\x15}\x94 \x9e\xf1\xda\x17\xa25\xa2\x84\x9e\xc6*I\x0c\xb3\xe0o\xd4\xc1QZ\x83\xdfNY\xdc/\x1e\x14\xc3\xe4\x10\xd3\xc3CP\x03\xef\xae\xb9\xef\xc7\xc2\xf3!\x12\x85 3\x98\x1c\x01\xa1\xfb\xee\xf9 \x8bM\x03v\x84\x05\x1c8\xaeK\xda\xd5\x18\xf2Q+b\x19\x02\xa5\x8c\x810\xe6\xbb\xb7\xbd\x0d[\xa1v5]V\xeeV\xcc\x93\x11\xfd\x1fOZ\xcb\xb7\x84S\xd05\xe8\xb0\x03\xd3\xf6\xca0Y\xc7\xd2\x83*\x88\x96q2\xcfQ\xa4\xa1\xa1%\x94\xb9\xd2\xdaKx\x0e\x13\x13YQ\x0b\xb3\xe6\xc2\xac\xcd]\xd25bb\xac\x1bx\x06\xcb\x13\xb8\x19\x8d<\x98\xcfn.\xe4\xd1\xcdn`\x04S\x83\xfco\xec\xabc\x9a\xab'\xb05\x13\xee\x15\xc8=q\xe8z\xb5\x84\xe4\xc0\x97\x07\x8dO\x94\x9a\x16\xf1#\x9e\x8b;O\xdeD\\xi\x07\xee\xe8\x0et\x0cM\x08\x80\xe9ig\xee\x03c\xfc/\x0eP\x8a\x9e\x96\x14g7\x17\xc7\xaf/\xcc\xeb0*\xb3\xfcn\x90G\xa4v\xc9\x82\xab8\x9d\xbb\xdc\x07\xc9L8\x93@(\xd75/\xc5E\x10%YJ^\xa4\xf3\x8fL\xdc\xfd\x1f\xa4\x97\xb9n\xe6\x18p%\xbd\xcf\xa0,\xfd\x87\xdf\x03\xfa\x07?\xe7e\xc0\xa0\x8a\xcf4\xfb\xebB\x9f?\x1d\xc0f\xf0\xa2\xaa\x0d\x9brTd\x8a\x86\xdb@\x02m\x9b\xe8\x15n\xbfB\xc1\x03\x0e\xbb}j(\x12\xed\x9a\x8b\xb79\xd0\xa9\x14\xa03\x17@\x87\xdd\x9a\xfax\xc80h\xa9\xc3 \xb6\xde\xec\xe0#\x1e\x97\xcft\x0d\xb6\x0c\xef<\x0d\xdaT\x16h\xc3\xca\x15\x15\x11%\xb6T9P\x02g\xb0\xa6\xc5\xa7\x90\xd0\x7f\x8e\xc5/Z\xd7\x00\x9d\xee6\x84Nw\x1e\xac\x87@\xa7\xbb^\xe8t]C'\xbaz+\x06\x9dV\xf0\x0c\xeeN`E\xa1\xd3\xf5l\xa5B\xa7\x95\x05:)\x03\xba\x1et\xff\xf9\xddX\xfa0\x17@\xe0F\x95\x13\xd3\xc3\x1f\x17\x7f\n\x93xn:\xfe\x9bP\xa4\x8a\xbc\x88\x1d\x10AJ00&\xf7\xaa\x10\xc0\x7f\x80~\xe2T\xd2\x0e\x1f\x98Y\xc0\xdd\x83~\xa9@\x87\xb3\x03c%\xcc\xa0+wS\x8f\"P8\xe6\x87\xb0\x99\x8aq\xec\xfa\xc09%\xa6\xab\x8a\x8d\x04ef\x10\xd3\x0b\xc3R\xae!-H\xf9)^\x91\xac*a\x192\xb1\xc5\x15!\xdcK\x97\xcc\x9dn\x91|\xd5\xdfA\x94\x900\xff\x8a.B\xb3\xfc%\xc5s\xd0\x8c\xbe\xd6\xda4Et\xf9\xc6\x06\xc8\xc6\xbf\xcd(\xd3\xb5\x95\"\x880\xb4C\xf7\xb1)\xf6{\xda\xed\x94r\xa4\xec\x0b\xf5\x9a 9\x87\xd1\xa7\xd5\xdc\x1c\xb4l@8\x92l\xb5\x0e\xbd=\xb4\xdb\xe2\n,s[\x16\x10\xf1\xb0eg\x7f\xcdsHm\xb2\x04\xe9 \x9e\xc9?Z\xc4{\xa7\x80(\xad=\x18\xea\xfa\x03\x06\x95\xdb\x06\xa5\x1c\xde3\xf5\xe7\xb1\x04\x85\xa0w`\xb4\x8b\xca\xb6\x8a\xae\xa6\xa2-\x98\nu\xa6i\xfe\xd1\xfeV\xd3@Q\x0c\xb931]\xfe\xb6\x8e\x8e\xf9? J\xe4M\xd5\xeaY:9z\xe0\x83(K\xa3\xb0t#\xb4/\xc4\xb6}\x88D\xa5\xedmX\xba^\x9f\x96\xcet]\xb7\x166j\x96\"\x89\xd0]\x1b\xd4\xe28F\x83uC\x8d\x0f)\x01\x18\xd5\xfaerb;\xe7\xf8\x01\x85\x92\x91X\xd7\x13\x18\x8d\x12x\x86\xdf\xe0\x82\x14\xb3\xe4\"\xc8\xab\xd4\xb5X\xbc\x8a\xa5\x90\xbb\xec\xb9%\xc0%|\xec\x8e\x9a\xf6N<v\x1c)?h#\x83\x90K>\x865\xbc\x92\x0b[Jk\xbd\x1d\xdeP\x85 \x90\xf1d\xc6F\xe9\xa9\x95_\xf8\xc3\xbb\xb1\x830\xf1\xe4n\xd9\x864\xe2\xe9\x87^\xe2\xe9\xef\x08d\xb5\x83\x0c7\xed\xdd\xc3FC\x80V\x07\xc2\x1a\xa0\xbb\x03\xfb\xec\x8do\x1e\xf4\x05{\xe8\xbc\x89s\xbb*qQ\xa5\x92&3\xa44%%x;\x9b\xbbq\x15\x8b\xd3\xb8\xd6:\x0e\xe2\xf1(E\xc0hW\x03\xed<1`\xe9V5J\x1d\xdba\x01\x9d\xcf\xe4\x04Rx\xd6\"\xceO \xa5\xc41\x99\xa5\xb4+\x95@N5\xe28\xe2ZVr+\x96\xcf\xf3a\x82th\x0d\x05\xef\xef\x01\xa3s\x84\xeeR\xa1~\xe7\x92D2\xaf:=\xa6\xc4&p\x9bs)\xde\x06\xee\x85\xd2l\x1c\x94q\x89\xd6\x1f\xceU\x9e\xdd\x16$wh!\xff\xbb\x89\xba\x94\xde\xf0\xf0\x1bq\x10\xe6\xd77\x0c\x7f@\x1cp\xbbAd\xbe\xa4\xdfE]\x1b\xdf\xdd\xe0w\xf3\xf9OqQ\x92\x14\xdb\xbda/Q\xd9\xc0\xfe^,\xc4\x9f9Ye7D\xaf\xccJ_$\x89xQ\x887d\x15\x97\xe2\xefuN\xd6$m\xf5\xc4\x8b\xdf\xa7Q\xab\xddDj\xae\x97\xa1\x98]\xa8\xabw\x15\xa7\xf38\xbd\xeeVR\xe9T\xeb:\xcf\"R\x14\xf5\xc7\xb1f%\xedh[\x14\xdd\xce\x07x\xc89O\x1c\xed\xb3\xe5<n\x99T\x0e\x1b\x19\xfb\xb4o\\\xd5*,>\x0f\x18\xd9&\\\x88\x91R\xe22y&\xc8\x81\xb3\xe1<S\x19\x14\xd5\x9a\xe4\x97,\x10X\xa9\xb8N(\x8d\xbaD\xd6\xc0\xb4\x01r\x1d\x91'\xcb\x8f-\xf0\x1a-\xd5\x8d\"g\xe81\xf4\x11\x8f\xb0\xf90\x8b\xfb\xa1\x1dil\xdc\xaa\xa4\xd1\xd2\xaa\xde\xfbQ\xcb\xd6\x96Q\xe8\xc0Gw\xbeWVYYWu\x03\xe8\xb9K\x95\xc2@Zf\xf8\xe6\xc6\x1c\xd3i/\xdbm\xa4.ee\xbc\xea5\xe9\xbc\x0cSzCh\xc7(R\xc8rh\xfc\x83\x1f\xa7\x96\xef\x9cT]\\#\xce\xbcO\x1f\x83\xf6z\"\x8c\x12\xfb\xa5\x8d\x00\xe4\xe5\x08\xe2\xe2]V.\x19L\xcb}\xe5\x85\xf0\x10\xef\x07\x93\xfdr\x17\x19\x924}\x94\xd9\x0bN.\xf4v\xa18\x88\xd3Zg\xa8_\xcc\xd9\x9f\xb3\x0b8\x86Yya\xee\x86\"\x83\xb0%?5Q\x17\xa9\xcf\xf87G\xddK\xa4\x0cR&#K\x91\xd4\x87\x14F\xa70\xf1 \xa7\xff\x96f\xe9\x8cy4q\xf1\x8e\\\x87e|C\xfe\x1f\xc9\xb3!s\x17\xbb\xba\xbd\x0d\xef\xd0&?x\xf7\xea\x8f/>\xbd\xf9\xd3\xab\xcb7\xef^\xbfy\xf7\xe6\xd3_\xb0\xc6\x04\x9e\xd8V\x9a|)I\xda\x8a\x8bh[\x02\xa6\x9dk\xd3Q6\xf9-.\x0d[:7S-\x9f]\xe2y\x0d\xed\x04\xcf o\xd6\xae\x9c\xc5\x94\xc5\x9e\xa5\x17LD\x1a_|\xfb+$J%9\x9d\xd9]\xa5\x15\xd4\x8fYj\x8c=\xd35\xac:5v\x063n1\x95 N\xa3\xa4\x9a\x93\xa1\xa1\xcb(\xa7_\xf7\xa5\xbc~\xe0\xc6\x0fC[2D@3\x8c_<\x84\x85\xc7C\xe5.\xfdk{[\x84\xc6ce\xf8\xe7\xf66\xe4\xc2\x12\xbd\xd5\n\x1d_\xca\xde\xea\x9c\x06\xbeY\xc4IIr\xb7\xf3<B\xb3r<\xbaZ.\x05\x0c\xd4\x1a\x95NI{\xc3\x0c\x92\xbf\x92\x85\xcc\xc3\xed@ \xa8\xf8\xfb\xfe\x1e\xa9]\xf6~\xb5N\xe2\x08\xe9\xcd\xb2\xf9!\xd7 _\xa4\x1a\xf5\x0fS\x1b\x03w\n5xA\x92\x85\xf3\xff\xe0\x8b,\xe2;re\xbbx%#\xa9\xd8u>-IN(\x11\x17\xa2\x17\n\xfb\x06\xc11z\x0d, \xd4\xe3\xa740d\x0b\x08\xa1\x88\x96d\x15\x06\xf0F\xbcb\xf1\x0d)>\xc8\x16PT\xd1\x12[(Z\xc4a\xe0\x18\x8e\xe3\x12C\x1b\xae\xd6qB\xe6o\x9a\x95\xab8\x0b\xeb\x88\x018>\xcc.\xf4\x0f^}i\x7f \xd6\xd3\xf8\x01E\xcco\xc3u\x17E\nB0\xc4n\x90\xd1\xae\x80>l\xb1\x8e\x8dZv|\xcf\xc3j\xdak\xf0`\x9b\xf6\n\x8b0I\xae\xc2\xe8s+V.}d\x89{\xfdA\x07\xce\x17O:cW\xf1b\x86\xd7\x94\xf9P\x8a\x9e\x9a2C\x0c\xc3vw\x14\x90\x97\x0c\x90\x13\x83Z\xea\x04J\x86\xf9J\x0e\xbd\x1b\xc6W\n\xaf\xa8k\xff@\x12\x0d\xab\xe7\xc55\x9e\x16\xcb\x99\x90/\xb7\xf8+\x0c~|\xf5\xfa\xc5\xcf?}\xaa\xe5b\xa1`\x19:N\x848\x0d\xea07\xf1\xb5\xef\xf2\x80G\x01\xa4\x18\x97\xb6\x8e\xb3\xb1AyF\x9f\xab\x9c\x84\x9f\xdb\xaf\xba\x9c\xe1K\xada\xbd\xab\xc9f]q}\xa8\xa5/\x19\xc8\xfc9\xcf\xd2k`\x9e\x81\x08AD\x97x~\xce\x194\xe1\xbbP\xb3v]F\x01\xcc^\x81\x02vN\x0c\xd6N\xceM \xf3\xe5\x0b\xc8\x0d\xc9\xefz\x80\xa7\xc0\xb3\xb2\x1bN\xa8\x01*\x0dn\x9e\xd7\x916\x05XDn\x88\x83\xc6\x02\xdc,\xa7\x802N\xaf\x13\xc2g\xc8Mq=\xca\xa0\x95a\x9c\n\x98\xab\xbcm\xf9\xec!wA\x1e=\x8dl\xd3i\xd4\x81B\xb59P\xb8i\x9b\x81\xf4\xae5~q\x8f\xc9-\x84\xae\x01o1\xf4id\x89\x05\x1c?\xd6\x1d\xd3\x14\x11\x83\xcc\xa4\xb1M\x1bj\xab\xf8\xdb \xcaP2Ho\x05\xc6\xe4\x81Om\x16\xe9\x83}\xf9j\xcdl\xe9C\xac\x83\xad^},s\xee\x16\x06\xa1\x9b\xb2\xaf\x9a\x0e\xce\x0b\x8a$\x8e\x88{\xe8\xc3\xce\xa4o(\xdd\x0e\xf5{\xbb\xff+\x1d\xea\x87-\xeb?\x80\xd5\xf9\xb7:\xf7\xfb&?U\xe6\xdf\x12\xa7\x8f<n%<\x871\x9cA\xcc\x03T\x1c\x8d\xc7O'GG\xd3\xfd\xbd\xa7{\xe3\xa3\xa3\x89\x07\xc7\xbd\"\xc1A,\xdc\x93\xef\xeb?\x19\x84\xda \x8b\"\xben\xe8\n7\xf2\xe0<N\xe79\x81\xf3,_V\x8d\x15\xe6\xbf\xd1\x8b\x90\x16\x04\xde\xbe\xf9T\x17~\xff\xa4\xb5B\xfc\xf8^\x93R2\xfda\x81\xfb\x8a\xf6\xc2\xf5\xd8\x0e\xb7\xd9\xc9\xd6\x07k^\xf5M\xf1\xaa\x16\x18\xf6l\xc3\xb0\xd3\x89\xb8\x86w\xc7V\xa9\xd6\xc3mM\xda\x04\x80P\x9eR\xd8\xce\xed\xe1\x9d\xf0*2y\x9d#\xc2\x9e\xedS\xb2\xd2\x99c\x9c\xf9}G\x8a\"\xa8\xad\xdd\xbbpE\n\xb7\xf4f\xe3\x8b\xce\x01(zX\x8c\xfb\xddH[&\xe3Z\xeb\xe2\\:u,\xd2`\x91g\xab\x97\xcb0\x7f\x99\xcd\x89\x9bb\xb0\xee\xd4<^g<\x99\xee\xee\xed\x1f<=<bLT\xc7X\x89\x17\xac\xc2u\x0f~\x86\xe6\xf8\x13Y\xec$\x9e\x07\x8f\xf9\x168\x8e\xd7\xbb\xee\xb9!\xa2)H\xb2\xb5\xf0*\x9a\x93\xc5\xf52\xfe\xf5s\xb2J\xb3\xf5_\xf3\xa2t\x84\x8b\x8734\x08:\xb6\xc8BT\x9a\"\x9a\xfb\x96~\xe4\x9dEq\x8er\xa6\x10\xb0\xe7^3Y\xa5\xe5a\x80p\xa2~\xd3\x00\nW\x8a\x97\xc3\xba\xd3}\xb9\xf4f\x1b\x05\x1e\x8bw\xd0 \xbd@\xb6M\xac\xa5\xa6\xb2\x14\xd5\"\x04V\x87\x141\x91\xf0\x15\xc1\xe0\x89d\x0e\xb7q\xb9\xec\x97\x0eC\xb3\x02\xac\xbd\x96\x90\x04ai\xc14\x91\x85Q\x13Y\xb4\x9d\xe0A^\x85\x88\xc5\xd7\x11\xfb\xd707\xb3\xe2\xc2\xf3 \xe6\xeak\x8c\xb1\x86\x81\x7fYl\xa7t\x16\xe9\xa6\x8a L\x06l'\xabBsSS<\x02\x90G\xb4`\x97z\x01\xcf\xa0\xaa\xa7\xb1\xa0\xd3\xc8\xea\xc1T\xb3\xc5\x85\x18\x0f\xfd\x9b\x0d \xff\x1anK\x04\xcd\xf2J\x04\x01\xfe5\x18W\xee\xee\xedn\xac@\x10\x14\x18;S\xe8\x0e\xe38\\L\xfd\xd8q\x18\xa3\xbc\xd2\xe1\x99#\xdf\xee\xb6\xdca0\xe8\xed\x8c\xa1LxW%\xc9\x85\xa3V\x08\xe5\n?\x8b#\xab\xd7*\x80\xf9E\xe55}\xfa)\xbc\xae-\x0f\xbf\xc1J)\x1a\x8c3\x08\xe1\x18*8\xe665\xf4,\xd77\x05\xa9\x8d\x92\x12\x16Y\xff\xc2nN\xf0\xc9c\xdb\xe2\x82w\x93\x8a\xe3\x9bw,\x10\xa0\xe8\xc0\xcc\x7f\xc9\xc3r\xe5q\xa1\xe8R\xd5\xa8n\x1a\xd5\xa9\x03\x8b\x887\xd0\xcd\xb3\xb6h\x1cqZZ\x1e\x84\xd0\xba\xb2D(xz!\xb7I+\x04gm-\xd1qs\xb0\xb1\xec\x82a\xb4\xb45\x0e\x1f;\xff!\xcb\x12\x12\xa6C\xbbw\xaeX}\xf3\xa9\x90\xda}\x87\xc7|X\xa3\x06\xc5\x9d\xd6\xd2\xfb\xbc\xbe\xa4\x1b6jk\x13\xc59\x03\x9b2\xc4\x852\xb6\xcav}p\xab\x05\xf3\x81\xecm\x15\x89\xf1\xe1\xadb\xf5\xdeV7^O\x19V\x99\x1a\xfcH\xae_}Y\x0fm\xad>\xa3\xec\xb3\x9eC:@/+\xb7=\\7+\xf5\xf1\xa3&F\x1d4z\xfaQ\xcf\xd8\x91\x86\xda\xb8a\xfcJj\x19\xc3\xc1\xc8\xb21\xac`\xeaO8\xdc\x0e\xeeR\x81\x9e]G\xe6C\x1e\xaf\xe22\xbe\x19\xbcL*\xa1i\x04\x1d\xf8\xc2p\xbdX\xfc\xc5\xf6\x05a\xe5\xed#\xaeS\xb2FPW-\x16x\xe9\xcb\xfaG]\xed\xc1\xab\xddaR\xf7\xe0\xd0\x0b\xd8{\xb3@es\x0b\x06\x03\xe9\x8e\x1b(9-s=\x80\x08\x06\xf6\x97\x17o\x7fz%\xc2\xae9u\x82\xaa\xb0\xc8d\xdb\xc3U\x98\x7f\xe6\xa6?\xf8\x93\xc7V;mb%\xd1\xfat\xcd\xdc\x8a\xa7`be\x1ef\xb0p\x9bF\xcex\x02\x8c\xba\xa4\xc6b,\xf7\xa4\xe3\xf9\xf5\x90\xd7e\x95\x93\xf32\x8c>\x7f\xcaCth\xb4\xbc\x11\x86\x9cK9\x01X\x86q\x88\xb1\xac\xa05\xd1EYXhy\xbc\x8c\x0eY\xb2\xf6\xaa\xff\xca;,\x9c\xd8 \xe4HZ\xb9\xd5\xf2&W_\x8a\xb9\x0e\xa3U\xea}\x1a\x81s\x0c\x8e\x91f!h%\xd1\xb7 >l1\x07\x9dz\x1f(\x85C\x9a|$\xa6\xed\xd0s\x0b\xca\x94\xd6\xa0\x84\n\xbd\xf6\x026\xf7\x1d\x96\xcdK]\x95Z\x08>K\xdd\xe9x\xeaiV\xf7B\x01\x8a\xef\xf7w'\xe8\x88\xbe\xbf\xdb\xaa\xd7\xc8\xcb\xb1\xde.\xaf\xb7\xc7\xff\xdd\xe7\xff\x1ex\x92\xc5\xcbc\xc5\x9dv/\xc66(S\xcc\xda\xdc lCip,\xd4\xcc\xd6\xdc\xa9\xa5\x9ed\x00\xe7\xeeY\xeap3;Mm\xa0\xdd\x85!ru\xcd\xc4.\x17\x82\xcf<L\xe7\xd9\xea\xd1Q\x89xZ\x0f\xd7\x11\xde\x0e\x1a\x17\x83\xec_\xe9\x83\xe3]:>\xb8\xa3Q\n#\xc8\xbd\xe6\x00\xef\x1e<>\xae\xce\xe3\x03\xfapV\xea\x11a\x89$%\x8a\x1e\xc4\x84\x87\xf7oE\x1f\xcax\xb9\xce\xb0n\x10=\x99\x05\x8c\xfdg\xf4\xe4\xea\x9bDO6\xdd\x8f\xbfOPa\xd3H\xf0ZF$N,7v\x91dY\xde7:\xcb\xd0\xe2\xe2]\xf8\x0e\x15\xce#\x14#\x8c\xe1\x18\\\xa1\xc1\xc81OZ\xbfD\xc1.\xaa\xe9\x0f\x10\xdcw@\xd5\x10\xb4|\xd4\x9a @X+\x18\xad\xb7\xba\xcc\x13xs\xf5h\xac\xe6_R\xe5\xb2!\x05\xdb\xf27\xfa\x18D\xd7]\xa6\x0b\xad1\xf4\xe4Nh\x0f\xc3\x1a\x9b\xdf6\x92\xdd\xe1#Ah\xb0\xe1`\x14E\xaf\xfc\x0c\x90N\xd6\x9dw0\x0e\"\x9b\x00\xb1\xa6\x12\xd8\x04\x1f\x0e\xbb.qoB\x99\xded2\x8f\x0dTf\x8f\xaefQ\xdaO\xc6\xbd\xb7\xce\x02\x0d\x1e\x15\xd6\xae\x8f^l\x85\xfc\xe2\xf2Z}\xf0\x0c+\xb62\x06VbNm\x19m\xea>\x16\xbe\xdc\xf0\xa8:\xa1k\xa4\xd7\xb0\xed\xca\x87\xc2\xe7\x99\xf0\x0c\x95(\x1e\x8efcC\x00\xe9\x04\xdf\xe8&G\xd9\xb0\xcc{\x1d\x9a/2+.\xba4\x9fZu\x83q\x80\xcf\x8c\x12xv\xbf\x96\xc5(\"\xcf\x98\x07\x00S\x1c\x17|X y\xc0\xe41\xf2\xab\xc2\x87)\x93\xb5\x9eu\xe3BhF\x96\xd4\xf8\x90q\x80\xfa@\xa0/\x16\xa9\xb1\x1d}6}\xc7Xn\x98\x91U\xbf=\x18\x15\xd0\x8f\xbf\x04\xc3.\x9f\xa2\xeb5y\xf01\xedo\x13p\xfd# \xa3\x92\x07L\xff?\x0e\xcf\x84\xec\x9c\xc0M\\\xc4%,\xcbr}\xfc\xe4\xc9\"\x8c\xc8U\x96}\x0e\xae\xe3rY]\x05q\xf6$\xa7\xdf=\x99gQ\xf1\x04?\xde\x99\x93(\x9b\x93<X\x96\xab\xe4,\x16\x01\xc6O\xb1If\xbe>>\x81\x9c\x999\xe6\xa3\x91\xc7,\xd5\x9d\xed0\xbf.f\x17X\x8f\xa4\xb4\x89\x9f?\xbey\x99\xad\xd6YJRY\xaf\x96\xc3\x08&\xba\xf2\x8c\xb5\xa1\x06\x7f\x17\xa2\x89,\x1f\x1e9\xbe\x89\x1a_\xf4\x87\x8b?i]\xff\x18\xe4\x10\xee\xba\xaa\x8e\xc1\xf4\xb83\xfa\xba\x0fq;\xacz\xdcs\xea\x06\x9d\x1b\x89\x82\xb2q4\x8f`\xe5\xebb\xf1I\x87\xf7\xcc <\xac^\xb8?\xb4\xff\x12\xeb,\xb7&\xc1\xb78(\x97a\xf9\x11[+\x98\xd8E)z\x1d&\x05Z>\xba\x18H[y\xf7)\xaf\xf8\xab\xb1\xfe\x8a+\x17r\x11\xcfW\xfdn\x19w\x9a\x8f\x88\xb9)\xf9\xf6\xb46^\xf0\x03>\x04\xa5\x9a\xfdO\xe0\x94\x1f\x94\x8d6P\x94v(\xa5\x9e|\xbf\xa5n\xd7\xf7\xf0iI\xe0\x8a 7W\xd9\xbcJ\x08,\xf2l\x05i6'\xc1\xaf\x85__D\xee\xf4\x1ah\xdf\xeb\xcd\xfd[X\x95\xcb,\x07\x80\xd7$\xcf\x8a\x02^\\e\xd5\xe7e8\x8f\x7f%Kx\xb6\xc0\xc2\x7fc\xff\x04Y~\xfd\x1c\x9e \x88\xd4\x94\xb5\x1a\x15\xf6H\x8aA\x12{\xf9\xa4uu\xb9\x1c\xaa\xc5?CC\\\xb4\xb2\xe4A\x93X\x0f\xef\x94\xf2\xb2\xbe\x10\xed\x98+\xd0le\x11|\xfa\xcb\x87W?^\xbe\xf8\xf8\xf1\xc5_.\xcf\x7f\xfe\xf0\xe1\xfd\xc7Op\x06\xd3\xc9\xde\xd3\xbd\xc3\xdd\x83\xbd\xa7p\x0c\x93\xf1\xd3\xdd\xa7{\x93\xc3\xa9\x96\xef\xd6\xd2ah\xc5\x95\x94\xe2\xa4\xc3yF_7\x86\x17\x1f\xc3\xf4Z\xf0\xc9\x14(%\xf1\x1cI\xd190Os\x865:\xcc+l\xb3p\x85\xbd\xd3\xcfqZ\x1e\nCc/\xb8\xbcDl\x7fy\x89!,\x1a\xf9\xea\xb1b*\x82l7o\x00}\x9c\xe8a\xe7\x18\x8c\xe5\xb8\xd3\xa1\x85y=\n\x1b\xc5\x06\xc2\x88\xcb5O\x80\x07\xc4\x97\x95 \x85\x9an\xa0i\xba\xbd6H\xde\x1b\x14\x0d6\x12\x0b\xeb\xb7\x15\x10\xcaN\x89MZ0\x1c\xc9=\x9d\x8b\xda,\xb9\\\x12\xe6\x86\xb2\x88\xf3\xa2\xac\x11?\xac\xaa\x02\xedgB(Z\xd1j\xe5G\x10A\xf6x\x08\x0f\xb63\x105\x01i\x0cr\x1c\xcb\xd6Db\xfd,\x0c\xaae\x0d\x89\xd9l\xe8;!\xb5Q\xe7\xcdm\x87BnR\xdf\x91~\xda\x9c\x89\x16\xcf-W\xe5lo\x03\x91\xcf\x83\xfc\xae\x1dK\xbb\x83\xedFW\xbf\xe0\xea\xae$?\xe1\x89\xf6\xd1\x0co\x0c\x98\xeb\xba)\x86g\x8d4K\xbf\xaa\xdfe\x8bEA\xca\xef\xe8\x11\xc8*4G\xbf\xca\xaat^\xd8vW\xef\x936\x0e#p1\xf7\xf0\xd8\xb3\xf6\xc3\xee\xdc\xf0~0\x00A#cI\xa5\x00n\xa7<\xf0o\x0b(\xd4F.\xd6*x\x81\x8fM\xc5t\x99\xcd#\xe9\x04L\xa4\x0b\x10\xd1\nk\x06H;\xaf\x8a\xc1\xd0O\xd9\xfdc\x93R\xb1\xc5\xd8tx \x1a>\xc7\x05\xad\xf3\xc9\xdf\xdf3\xe7P\xa7*\x17\x87][\xbfU\x04q\xf1\x8a\xc3\x0d7\xb58`\x7f\xe7\x08\xd0\xe2H`\x83!\x056\x94\x1a\xf6\x98n\x12H\xf8t\x0c\xf70g\x1bg\xf6\xd7\x02\x8e\\]\x16T\xa8d\x86\x8e\xb7y\\\x12\xd7\x02U\xd9'u\x96\x02\x97\xf9\x042#\xfc\xb1\x0f\xb1\xf7\xe8\xed\xf2\xfaL\x1f\xc5C\xd7\xb2\xa8\x15\xba\x141uH\xb3j\xd5\x08\xdc\xc3\xd2%\xc2\xe7\xc9<Hh\x06\xca\xeeA\xb30i\xed\xe2\xcb\xbd\xb2]\x12D\xd9\xfa\x8e\xbec\xd1\xfdR\xcf\x1a\xc0\xa6\x0d\xb4A\x80\x83\xae\xb1#\xf4\x1d\x04\x12\x03N\x0cZ \xe3\xfd=8\x9c\x88\x808\x95\x84\xae5lo\x9a&R\xd8\x167\xc7p\x07\xc2Ol\x8b\x01\x06\\\x8f1\xdd\xae\xce\x0bZ\xcf\x80\x0d\x82Y6\x90:\x84e\xe6\x92`\x1e\x96a\x83\xd0Yk\xacp\x83e\xc4\xd3n\x1e\x82\xd1\xb6\xf5u7j\xf6\x81\x8d\xd7\x97W\x90\xff\xf0)3\x8b4\xd9N\x12\x7f\x96\x9c\x88,\xa7z\x18\x12^\x98\x05\"\n\xee\xed\xcdv\xfd\x9dS\xc4\x7fk\xa1\xde\x1e\xb4\xcb\x1c\xd3\x9e\xd1\xcd4\xa2\x1es\xa3\x1c\x9f\xa7\xdc\xc3\xff\xbba\xb3L:\xa9\xe2\x05:\xc0\xd5\xb7\x8d .f\xaa\x0b~s)\xf9\xb9e\xc4'\xe6\xc3\xa2D:jb\x1a\x8cF\x14\x9f\xcf\xd2\x0bs&8\x0b\x1bl\x9e\xd2\xda:%\xd1o}\x99Z\xd3\xb1\x03\" \xe4\xb4_\xd6\xb3\x92\x049\xe9 \x8b\xd0\x80\xd1\x060J\xf1t\x7f\x1f\xb61Z\xf4W\xce\xd0\x90B\n\xeas\xf3\xfc\x94\xf2V6\xaa\xe5EY\x92\xd5\xba\x842\x830I\xb2(, \xbfY\x90\x84\xf95\xa1\x0cj\x98\xc2*\xfc\x12\xaf\xaa\x15\xd0\x83v\x0c\xe3/\x0e\x8ch\xab\x8d\xeexr\xe0\xa1\xec\x9d\x92MF\x8a\xa7\x06\xd8\xf7\x03'e\x8e\xf3\x05m\xccR6\xb0I0>\x166c\x08\x906\x9a]Iu\x82\xb8\xf8SLX\xda\xfdv\xb1\xc9\"L\xaa%\x8f\xb4!0\xdb\xa3\xad\xa9\x99-\xd5R\x0e\x11\x1dK\x1caX\xe2\x9b:\xd9f\xd7*pj\xb3\x1eIW(\xc2\x1c\xc3\xfb\x9d\x9cx\xb5\xa2\xcf\x8a Q\xbd\xe5\x84E\x14\xc7\x8eY\xc9\xc5j$a\x19\xa7\x93\xce*Wq\x1a\xe6w\x96* )w\xcd\xe8\x845\x82d^W/U\xb9\xd8\xe9\xac\xc1\x08\xed\xdeQ\xfc\xec\x96\x9eu\xc1\xa1\xe9.*\xa6\xdd\xe3\x89\x8a\x9d\x9e\x1a\xe5br\x90\x90\xbe:;\x1d\x95\xa0\x19\xf7\x14\xbe\xef^\xc1%\xf9\xd2\xdfJ\n\xcf\x9f?\x07\x83?\x114\xdb\x19\x16\xe4`\xaf\xbf\xa9\x1f\xfa\x16\xb2\xd37\x1c\xa0v\x0c\x19\xba1\xc0\x990\x96\xac\x86Ph\xf6SvK\xf2\x97aA0\x03\x19F\xa1k}\xaa\xebR\xcd\xe0\xeb\xa6\x8bc\x11w\xab\x9c\x11\x03\xec\xe7F\x14\x14\xfd\xf9\x02 \xe6\x83:\xbd\x93\x98*\x8b\xfe\xb8\x01\x01eM1\xf2\x05\xdb1l\xa3E\xdc\x92R\xee\x10\x85\x81\xdc?\x0eyNx.K\xe4\xce\xf0\x8d\"\xa2\xa3\xd8}\xa7.9D\x90F+Ie\x1ekp\x94\xfa\xdcB\x82\x852\xc6j1G\xce\xa5\x1ccQ\x88\x04D\xa5\xfa\xe5\x08i\xfd\x94\"\xc0\xb2#\x88\x82\x98e\xdc\xb9\x0e\xc0C\xe0\xc8]\xb7OF\x13\xf6<e\xf4\x9a\xbd\xbb\xada\xfd\xf5\x1d?\xe8\x10\x89q\x9bE\xca\xb3/\xf2l\xc5\x12Xx>h\\\x99\xc2J\x91\x86}\xda\x99\xc01\\k'\xcarB\x8c\xc2'\xde0\x81m\xa4u|\x8b\x9c\xc1\x86t\x1b\xf1\x85d\x10\xcac\xee\xc0\x19\x1e\x86\xae*\x8d\xe5\x0f\xe7Z\x8d\x95\x93\xb0(\xdfX>\xc0\xb9c\x12%\xfb\xec\x8d\xbc\xcbM\x98\xd4\x84\xbd`WD\xa0\x8a\x9c\x93W\xadP\x14\xe6\x1b\xad\xaf\xbf\x05\x98d,5\x8b%\xbc_(\x1d\\s\x8dB\xa2\x82\xcd[,\xa5\x16`\"\x05\x86\xd1\x18\xffM!\x01'\x04s\x0d\x8c\"=\xc4\x91\x1b\x17Za\x01\xc7ej\xd1\x8eTf\x95\x17\xc4,*\x91\xa0\xd8\xa7L\x18\xd8\xfc\xee\xbdWt\xa5\xa6>\x84\xf0\x04\xff-\xf8\xbf)\xfek\xb8o\xad\"M0k\x1b(\x1f\x06\x0b\x17U\x89\x8c]\xc7<{\xee\xcfo\xd2rr\xf0\xc3+\x97\xc0\xf7r\xb6\x11\xf1\x98\xef\xb9\xd5&H85\xda&\x8d4\x1d\xaaaN \x83g\x10\x9e@6\x1a\x99\x992\xe0\x9d\xe1\xf42\x0f\xc7\x1fQ\xf0\xc1C_-8\x1c\xce`\x07\x16\x9dr\x1d\xd1R\xfd\xa1\x88\xd2\x9dy>\xfb\x1cF|\x81\x8az\xdf\x16tA\xacMr \xbb\xc3\xc2\xd7\xb2\x163\xd89\xe5\xa3\xf1\xf9*X\x80\xb3}mR\x18A\x01\xcf!\xac1I\x08;P\xe08\xf9\xaa=Gf.\xdb\xd9\xe9\x9arM<'<\x88\xed\x9a\xf1\x80kx\x06\xc5 \xac\xbb\x16\x1d\x94\x85\x87\x11\xac=\x16\xa4\x97.\xfe\xbaw\xa5\x81\x9b\xc0\x98\xfc\xbb\xf5\x07\xe3\xeft\xd62\xcbq\x80\x0f1\xa9\xb7+3\xd6\xb3j@vt7k3\xe0[\xf5h\x07\xe8\x061o1J!\xdc\xdf\x9b\xf8\x18\xa1\x04\x97\x90\xb6\x81\xe2\xcd\x05-\xc3\x9b\xa3\x90\xe79\xc4x\x0chqLq\x01\xfea\xee!\xeb\x85\x9d\x19\xfc+L)/7\xb68r\x0bu\xe2\x92|\xe9P=\xe5\xf0\x1c2x\x02\xd3zh\xf8\xabK\xfeP\xb1\xb3W\xb1h\x87\xa3Q\xd5\x05>(\x9aX\x87yA\xde\xa4\xa5K\x82\xa2\xba*\xca\xdc\xa5|B\xe5\xc3\xd4\xf3ar\xd0!7g\xd4\x9a$(\xac\xccu\xcb\x19\xbdi\x98\x8a&\x1c\x00\xf4Dc\x83\x0e\xcde\xcf\xa1\xe1\x8d\xfd\xd5\xfd\x19s\nK\xc7\xc2C\x95\\\xdb\xa0\xd3\xd6\xd3\xd5\xd0\x9e\xec\x06\x03u\x9b\xb2\x11\xd2\xecB 8Q\xb3\xf2L\"\xc6\xb3\xed3\xc1Q\x19D<\xe4\xc4\x8b\xd2M{$\xfam\xc0\xf7\xc0dy\x9bL\xfav\xd8\xa4\x95\xb5\x19\xd4\xf0\x97a\x0d\xff\xd5\xfda\xf3A\x9f\x0fm{\x90VC\x0e\xec\xc0\x83\x93\xf2]\x93\xaeZ}\xb0\xb6\xb7a\xcbu \xc5NS\x0f9\x02~ \x19+!\xed_\xc5\xf9M\xcaO\xc3!\xcb\x84\x93R\xb0\xb1\x7f\xe0C\xc6\xb6=\xf6\xea?m\x9a<+H~\xf8\xda\x03\xff\xaa\x8b\x9fUY\x08\xf4\xe9TXL\xf4\xd5\xa7<\xc8\x0fw%\x91<\xa2[\x85\\E\x85\xfd\x0c\x1b\xd7\x8b\xaeq\xa5RL\xa1\x9af\x1c \xb2\xc5\x10\xf3\x18\x83\x1ab\x14\xddv\x81\xcd\x8c\x85\xf8\xf0E~\x93r\x16\x1bLS\xc5\x83N$\xc6L\x89\xe2A#V\xcaJ\xef\x1e\xc1\x19\xec\xc11\xfb5\xdd\x853\xd8\xe5\xbf&G\x138\x83)\x1c\xdbD/\x08\x91a\x04 <Ca\x9f\x90\xdf%]4D\x97\xc1~]\x07\x9e\xc1dzX\x13rQ\x87^ \xecq\xfe\xc4\xd3e\x9f/\x1e\xda\x1d\xe52&GS\xd8fDl9\x8b\x99\x81#\x13\x0eP\xf6\xc5\xdd\x9d\xc06D\x1e<{\x06\x07p\x0f\x07\xbb\xb0M\x89\xd7\xe70\x99>\xad\x87[|\x83\xe1Z\x8c\xf8\xc5#\x8f\x8f\x81\x05\xf6kz\xe1kS\xc9p\xf4jY%\xcdh\xb2_\xcfh2\x85{p\xc5\x9c\xe4)Vt\x8a\xd3\xf1\xdeS\xfe\xdd3\xd8\xdf\x9f\x1e\x1dP\x92\x88\x92\xb3\xfbOw\xf7v\xbdo:\xff\xbd\xc7\xcf?\xac\x7f\xedn\xb0\x1ajYhY\xa1Cm\x85\xa4%\xab\xd4%\x0b\xe9\x92\x1d\xec\xef\xef\xee\x03\x06\xf4x\x06\x93\xc9do2\x99J\xcbd\x9c\xa2\x99$\xae\x8d\xb1(_\x84\x9f\xd3\xb6w}\xbc\xc9\x18tl!\xf7\xe7.(>\xa0?\x0f|\x11\xb5x\xc1\xc4\xa8c\xd8\x86\xc9x\xba\x0b\xf7l\x1397\xb3\x7f\xb0;\x1d\xc3={\xb5\xcd\x0c\xc2\xf9w\x1e\x05T\xa3SH\xda\x10\xdf\x06\xa5\xfb)\x12A\x8c\xd8\x15 \x14\xe3\x14\xbc\xbc\xafI>C8,\xee1\xc2\x13\x85\x1b\xf5\x16 \xe9.\x1c\xc7\x0e\x18s\xb32\x10\x04\xf4\x16\x06\xd3\xdcXz\xc0`8\xba\xc9}\xa6\x9a{\xdfCD\xa5\xedEv[\xe8S\xfeE\x82\xda\xb7\xbd\xf0\x81\x04\xe7Iv[\x97t\xef\xc3\xa8l\"\xab`,\xdc.\xbbBT\xdd\xb9#S\xa0\x837\xef\xce?\xbcz\xf9\xe9\xf2\xed\x8b\xff\xef\xf2\x87\xbf|zuN\xcf\xd3\xd8&\x8b;U\x93)\x9b\xcd\x82\xcc\xe5=\xb1\x13\xed\xf9\x8cn\xa4\x88o\x92\xc9\x92\x9e=G<\xb5\x02M\xb6J\xb2\xe3\xb4\xba\x96Y\x00\xd8\x81\xa8\xb3l@8H\xf1\xf0Q\xed\xb5\xe5G\xe21\xc3\x8e\x07\x1f\xf6\xa6\x9cVZd\x99\xebY\xc5\xa1%e\xc8\x98\xa5\xe9\xf6\xb6p\xeb\xad\xcb\xdc\x89\x0f\x13OR*\xb6\x8fjg\x0c4h\xe6\xb0e\x90\x9d\xa8\xe7\xca\xf5\xe8\xc9\xfa\xfc6\xfc\xc2-\xe4P\xc5L\xcf\xd4:\xcb\x92\xf3\xf8o\x14x\x1cN\x8e\xa6\xb4\xe82\xac\xae{M\xb6\xc1\xb6\xb1\x85\xe2\x0c\xa3\x1fo&\xd8\x1e\xe0u$\xb5\x1f5\xe9\x05\x0d\x16\x98\x1dBjW\x1a\x8b2F\xe3\xb9\xa237\xd6\xf1-\xf6\x93<\x9c\xcc\xf66\xff+@{U\xc2\xf3\xb8\xa9e\x17LbF_\x99\xc3\x9c\x16\xbe\xd6\x8a)\xe0)wh7S\xa3\x9d _\x1e\x98\x1a\x01\xc1\xcef\xab\xbf\x81\xed\xa7\xf8\x02Y>D4ca\xd6$\x1bB2\xf3\xbe3\x93\x05`\xde\xd4\x0f\x161\x0b\xea\x86\xc6\x86j\xa1Tb\x00\xf0}\xa7\x05\x17\xe1\xe7\xb4\x08\x17\x83\xe3\xafX2\xb5\xe9\xcdQl\xf1-\x9a\x94\"\xac\x0cjk\xcbmb\xa1\xdd\xdf\xc3V\x19\\\x8a&\x0c\xadG\xd9j\x1d\xe6\xa4\xcf!\x1bd\xf3\xca\xdar\x03\xdb\xd7\xf4QF \xd9\x8b:\xba\xb7P\xac\xb0/\x8c\xb6&\xcc\xf0Eu\\\xee2s\x90\x15{\x8c\x0d'\xf5\xaf\x98\xc5\xa1\xcfdN\x92\x99\xd2\"k\x98Q\x86\xde\xe2t\x8b\xc3\x98\xc5\x17xD\xc9,\xbe\xe8B\"\xa9\xe0\x1cY\xff\xad\x0c$\xf2c\x97\xddZ\x89>\xccw\"\x94zh\x8e\x04g0Q\xe2\xe1Bs^\x84\xf9k\xef\x89\x11l%W\xfe\x94-\xe5\x8fy\xc2}\x06\x06\xdf\xca\x84\xe3\xbf\xc1\x1ee\x80\x8d\xc3?\xa8\x01\x88) )\x0c1\xb3\x18L'\xf8u\xe6\xd5\xc1\xd0!\xb3\xa6\xbc\xfa\xceI\xe2\xa24\x99N\xf2\xe0{\x90-\x04P\xb0YQZ\x0c\x1f\x04\x01m\xa2\xb1\x11>\x98[S\x02$\x18W\x0b!\x0ca\x10\xa4C\xaa\x8b!\x89f\xe9\x85\x95\xdd\x12r)\x05=P\xbch\x86;f>IO\x1d\xa5\x8d\xc2N\x9cW\xdc\x18\xc5\xce\x06\xca \xbc\xfa\x9d\xf6\x8f>\x153\xe6FM8g|E\xf4\xd6\x9e\xb3\x08\xcd\xb9mEg+dg\x8fS\x98\xfb\xa0Pz\x12\xfa\xdc\x1a\xab\xef\x8a\xdbp=9\xe8\xf3\x0c\x17\x0c\x0e\xc6\x8c\xea\xd2\x13\x95F=\x91l\xae\xc9GRP\x12\xbb1\x1d^UI\x19\xaf\x13BWpr\xb0s\x15\x97F\xb4\xa8(\x1a\xc6'h\xbe[\x9e\xb0\xe37\xf5\xe0\x86\xbb&\x11Jm\x8dZ\xd9KA\"\xd1e\x17M\x10\x8b\xa8.\xcb\xee\xf4\x9b.\xcb\xdeW.\xcb\xee\xf4Q\xcb\xb2\xd7Z\x96]\xcfo\x8a\xe82\xb1\x7fLZ\xb8\x0dV\xeb`\xef\x9b\xae\xd6\xe1W\xae\xd6\xc1\xde\xa3V\xeb\xb0\xb5ZO\xcd\xabu\xa0\x15O\xd9?\xfbZ\xf1.\xfbg\xef\xf1kk\x8a\x1f\xd7\xb5\xbah\x9e\xdc\xb5\xc2\x8a\xa6\xa3\x8e\xaa\xc5~\xb6\x02\x08\x9c\xc1\x0b>\x9b1\xa5\xcc\x07\x84\x87\x92\xc7\x93wh\xf2\xe9F+\xf8\x07\x8d`\x98\xcd\x99\xb0\xfa\x1a#\xdb\xf4\\\x9eO\xe3Q\xe2\x0ck\x17\xfd\xa6R\xbd\x91\xda\xd4N*D3<<tC\xba@\xb3Q\xac\xfd\xec\x94\x8e\x96\xff\xea\xfd\x98\xa7\x86\xba\xbf\xe7\xa6\xd0\xdc\x99K2P\xb6J7`\x00\xdd)\x1e>\x8a7\xcda\xb69Y\xc1\x10j\x15\x06Q\xac\xe2\xe1\x9d\xbf\xd8\xa4\xf3.:W<\xbc\xdd_7i\xb7\x93:\x86a\x14\xb2xx\xff\x9f7\xe9\xbf\xd7v\x18\x9a\x86_m\xd2p\x075\x0e\x83(r\x18H\x95\xc3&\x9494\xb3y;l6\xbd\xc4:4v\xd1F\xc6\xfag\x1e\xf9Rx+\x1e\x83\xcd\xbd@~J\xe6\x8e8\x02\xc7\x19j6\x0dF\x9a\xec\x81\x8b\xe4\xd9dmA\xa5T\xa0N\xfeZ\x85Iw`\x170J\x1bzd\x0b\x122\x146\x9a\x9d\x88\x87\xe3\x80\xfb{\x0e,kY\x88\xd9/\\\x9bE\x9c\x16k-xr\x17f\xb2)F\x98\xffRK\xca\xdf9p\x81\x9f\x9es\xb3\xe9\x9a\xae\xa8\xddy\x10Fr\x7f\xc9`\x15\x96\xd1\xd2}\x12\xfc6}xr-2l\x80#\"\xe3\xd6\x8d\xf1\x10\x80,\xc8L\x10\x04\xe0x\x9e\x0f\xce3No\xd4\xe1r\x9e;]\xebb\x91'\xf5\x1a\xb5\x7f\xfb\xad\xd6y<\x05\xb3\xea\x9e\xdb\x0c!\xa2v\x84/\xc8\xb1^/\xaf\xed\xb6\xb4\x17\xcc\xd6,naT\"|\xdd\x11\x03\x8bv\xef\xefQ\x80\x83/b\x1d5\x9b)>\xee\x8f\x9e\xd3\"@\xfbh\xdb|sx\xce\xc7C\xe8_\x9dnBM\xfd^\x17\x02\xad1{-\xa4\x03|H\xeb\xbf\xf2\xfa\xaf\xb8\xfe\xab\xb9|\x83\xc4{\x19\xba\x0e\xec\xd0\xd3\x83!\xcd`\x87\x1e\xa7P\x96\xe8e>T\x1e7\xdf\xc0\x00\xc8B/\x18s\x15\xacb\x99\xc24\xbb\xe3\x13H\x98!\xedh\x94\xd8%\x80\xd1,a\x12\xc0\xc5,\xe9\x94\x00f\x18\xbc,\xe1:sZ\xdb\x0e\x83\x1f!\x01\xcc\xe0\x19\x1a!\xa3\x04\xb0\x82g\x90\xd9%\x802\x94\xc2(\xc2C\"\xbbI}q\xe3\\\\J\x91%\xd7.Ao[\xf7o\xd4\xd9\x9d\x1aR\x03\x03\xaavu\"\x99\xfc\x7fmG\x93\xce\x8e\xd0C\xdf\x0c\xc7l@L\x8b\xb9Y\x93\xb8L|$\xddt\x9f\xf3_\xadVj\x0f\x14\x1d@\x99\x83\xa6\xe4,J\xf9F\xad\x9b\x8f0\xc2\xe0\xb8x\x1d\xa7\x18\x97\xc03\x04d\xe1\xae\x92,r\x81p\x8c\x10\x84\x87\x0f,P\xc7\xcc\xe7\x91t.<\x16\xc9\x11\x92,\xbd\xa6\xfc\xaa\x88Fk\x0f\xa8q\xcf\x00\x85\x18D\xea\xc1\x19\x05\xcc\xac\xd8\x08\x899\x07Ay3\xd9\x9f\x89\xd5\x1db\x94_\xdb\x18K\xa8pGO\xea\n]\xacU,98\xc9\xc1{\x9e\xd7NM\"\xe2 \xe3\xef\xf0\xafA`_r\xeeeg1\xab\xca\"\x9e\xd7A\xa9\xec\xf1I\xf2:\xae\x805^\x86\x02^U'Q\xabJo\x08\xff\xc5/\xdbJ\x0b\x94c\xde\xf2^\xd6k\x18\xdb\xc5\xfb\xbc\xdc\xa0\xcf>\x8e\x8b7y\xb5A\x93_\xab\x8a\x80\xa6\xdb\xdb\x0d\xba\xed\xe5\xb1x\x9b_6h\xf3\x1fN\xd9q>h\xf0\xbd\xdc\x14Z\xf3o\xc4I\xd9,u\x01\x98A\x13s>\xd5\xbd\xa6\x98\xc2\xb1\xdf\xf9T\x97v\xfd\xdf\xf3\xf7\xef\xfa8\n\xbe\"\xe6\x1bJ\xdb9\x06\x11\x0c\xc4\xccr\xcc\xc32<\x06\xdd\x93\x0e\xe9\xa3&oFp\x19\xe6\xb9\x88\x0d\xe6\xf7\xc3R-\xf8*\x05,\xef\xe1\x14\xf6\xc6G\x07\xb6\x90q\xbfv\xe1l!A3I\x92\x1ec\x16\xac\x98\x03\xa3\xce\x97\xd9\x8c\x992@\xa2\xc1)js\xed\x0c\xe40\x87\xde\xcf\xff\xa8S\xfc\x16\x93{3drv\x1bDw\xcb&\xf5t\xb78r\x95\xd8\xa7\xbc\xc1\xb2\xa6+\xa9,\x82\xe3\xb0\xfbG\x98\xab\x1c.F\xe61}\xd3k\xb7\x9ce\x1dS\x8f\x07M\xfdm\xd7\xd4\x15St\x8d\xf1\x90\x877f\xc3\xcbk=^\xc659\xb1m\xd7\xf2Yv\x01#\x98\xee\x1f\xc0\xf7\x90\xcf2S\x90X\xd8t.\x9f\xba\xe6\"4\x12\x13\xd4H\xb0\xd8\x18\xf6H6\x0e#\x01E\x04\xef*NK\xbb}\xc7\x08\xc9 k\xdc\xb7O\xf9]\x9c^c`\x13Lj\x00W\xe4.K\xe7\x82\xf6ak6\xd0\x0b\xf7\xa5*\x82@\xa7\xc8\xc7K!\xbes\xd8\x18\x8ca\x80\xb8\xb0D\xc4\x0f\xb1i\xb2 \xba\xa8\xf1\xe3\x9fY\x03\x03\xe9\x91\xfe\xf4\xd8t\xb6\xe615\x88$t\xb0\xc7\xc1\x9c\x93/ \x8b\x17\x06\xae\xe8\x87\x1ef\x88\xd4>\xfd\x84\xdbS\xef\xe3\x86\x9b\xf5\x92\xca\xed\xd5\xadud\xaf\x17\x1f\xa6\xaa\xe1\x0ewG\x8b/\x00\xf5\x10\xdb\x18\x94\xe7\xd938\x84\xef)\xfd{\x061\x1c\xc3\x04v \xf6<\xb4\xd16\xbc\x184\xe1\x8f\x1bMxoz\xb4wt\xf0tz\xf4\x8df\xbdg\x9f5iOk\x17\xa7\xc5\x16c\xd0\xe4\xde\x0d\xbe\x1f_s\xb0lG\xb5\x03\x9e<\xfa|\xfe\xa4\xcc\xc88\x9dZ\xaer\x7f\xcf\x16`\xec\xb3\xa5\xf6!\xe6<\xae\xdc\xc6t\x97\xbd\xa3+\xb07h\x0c?>z\x0c\x87\x961\xecO\xd9;:\x86Cm\x0c\xf2\xafB\xa7\xeb\x86\xd8\xef\x08\xaf\xb8aJ\xeaS\xf8\xaf\xff*}=\x08&\xe1\xb9O\xfe\xeb\xbf\x88\xcf0\x05\x0bC9\xa2X\xbb\xbe!\xa5\x888RR\xc4^\x17\xe5^\x13\x92\x8c\xe5\xea\x92\xbe!\xe2\x1bR\x7fC\xa4o\xca\xba\x04\x93\x1d\x1b\x03\x985:\xcf\xda\xea\x1a\xd7\xc2\x1a s#\xf9IM\x81\xc1\x8e\x9eeE<i\x1d\xe67\x16\xe2\x0c\x0bw\xa10\xe7\x9cN\x889\x19\x93R\"\x80M\x04)\x00S\xd2p\xdbAS= 4\xf6CD5\xf8\xe9\xd5@\xb9Z\xc9%3Bp\x83T\x9b 'd\xf9F\x07\xec\x13\xc7mVr\x9f\xbdIM\x1c\x8dFt\xda\x84\x0b\xd7\xbf?\xa5t\x8fw\xc2\x89Z\xf6\x0d\x8c \xbb\x80\xefM\xae\xddfR\xd6<\xe3\x1f\xfe>3\x86\x11\xec\xec\x101\xef\x13<\xda\xe3\x9e\xe9\xd2\x0f\xbe~\xc2\x87C\x00\x02o\x90\xd4s\x9c\xf8\x9a\x82\x83o\xdc\x90\x1e'\x07\xedc5\xa8\xd3\xa9\xa5Sn\xe9\x81\x8b2\xb9@\x9c?l\x1c\xed\xcd\xfe\xbaq \xb5\xa1\x0cf\xc88v\xa7\x8f\\\x8f=}\x1c\xae}A\xe4\xa2)\x16\xb18\x7f\x93\x83\xa7O\x9fN'\x94\x8b\xa8\xdf\xef\x0e\x1c\xf6#\x97\xaf5\xec\xd6\x18.D\xe2Li\x06\x93\x83\xf6\x14\x94Y\xed^t\x8a\xf0\xe9\xb0\xff\xd7A4x~\xca?\x9fL\x0f=.\n\xdf\xe1\xb4\xe3:\xbbu)\x95\x00\xdf\x03\x06\xf3\xec\x05\x07\x7f\x0f\xf0G\x94\x85\x91`[~q\x82\xe4e\x1b\nf\x1a\x14\xcc\xbb\x17)3,Rf]\xa4l\xc0\"}#\x90\x89\xbe\xd7\xf5\x89Gu\xde\xf7\x80\x11!v\xa4{0\x11\xa9\\\x07@\xd7\x0d\x80\xab\x15\x9a\xb5\xd7\xf1F\xf8UX\x81\x8bu\xedw\xa7O\x0f\xe8$S8c\x8c\xd0x\xf2\xf4`\x0c\xf7\x90\xc2q?\x05\xb2\x01\x8c~\xf4t\xd8$\xee\x15\x10\xfe\xfbM\xe7\xdb\x81\xfa\xcd \xbd\n'i\xd9to\xd0p\x87\xad\xfe\xf0\xe1b\xcf\xedA\x0f\x00\xee}\xc3}\x9dd\xa1\x01\xba?n\xb816\xd9(\x1a\xb6\xc6\x82\xeb\x1b4\x8co\xb5j\xadaL\x86\x0e\xe3\xc7\xac\xbaJ\xc8#\x97\xe3\xb0w\x1cc\xc1\x80\x0e\x1b\xc7#\xd7\xa3\x7f\x1c\x93!\xe3@\xe6\xd9\xca\xcdX\x848<\x9d\xa7\x82\xe0\x98\x15\x0b\xaam_\xea\x06\x04:2I=\x96t\xcc\xe6\x88\x12\xdbc\xfce\x1dN\x1fx!H\x13r\xba\x14\x94D\xdaB\x93\xac*#\"N\xa1\x84'\x1039\x90\x15\xbc\xd1\xca\x9dP\xac^I#\x99\xf0w\\\xc9\x14\xabXW\xd3`\xa4$\xad\xa6\x10\x9f\xd5+\xba\xb3\x13c\x808N*\x18\x964\x16K\x9a}\xb3%m\x11\x15\xdd\x16,\x86E\xd5\xd7\x92\x02\x8b\xfd}\x1f\xf5(\xd6|?\xb8;M\x06\\\xb7\xf4\x04\xb4\x96O\x197\xf9\x1f4\x11\x13\x05\xf2\xd5s\x99\xfaLr\xdc5\x9b3\xc3\xf5\xf0\x9b=\x9b\xb0=C\x11)\xa5\xa9>(\x1dl1\x1b\xfb\x91\x166\xd2>\xc9\xc1\x94\xf2\xef8I>\x1b}\x92|\xee\x86IN6\x9a\xa4\x89Z\xf9\xeaI\xee\xf9\x92H|\xd0L\x19\xcd\"f;\xdd\x93\xa6;m\xca'\x07\x96\xbd6\x1cg\xba2\x1f\xcd\xdb\xdfI\x16I+\xf3;l\xff\xe6+cY\x95\x89eU\xa6\xe63\xb3\xdb\xbd2\x93\xc1+\xb3!\x8a\x15\xd2cyY\xb6\xac\x06G\x02\xd4\xb7\xd0\x03\x86\x8e6\xcbN[\xb8%f\xa8d\xc7\xe0\xe6m\xb6\x07C\\lF,=Qz\x1f\x89\xc1+\x19\xdd\x08\x917wJb\x7f\nsL\x86\xdb\xe9\x84.\xf0\xcb\x10C\x14\xf9\x1a\xdew)\x96\xaa\xe0\xf9s\x18S<\x1a~\x13|\xb5!\x05\xf0?e\xa3;\xa8\x88\xaf\xdal\xb1\x17\x12\x81\x915\x04\xc6\xc6;>\xfa\xfb\xec\xf8\xefB\xa0L\xa6O}\xd8\x99L\x0f7\xa7Q\x14\x1d\x12]Z\xe6\x930\xf9\x1a\xfa\xe5w$_v\xa7O\x0f\xe8\\Q\x860\x0c\xb4\xff\x8e4\xcc\xefH\xc2<b\xa2\xbf#\x1d\xf3;\x921M>\x04_K{0`\xca\xdd{;\x80\xc4QH\xa2\xaf\"h~Gz\xc6\xbeD\xea\xf5U\x8c$\xc4-\x1e\xb0\x8a\xff@\xc4\x8fE\xfe\xd4\xbd\x8a?i{\xd6\xe7U\xd1\xf4\xb4\xe9~i=M\x06\xf5d\x93\"uw\xf5\xe3c&e\x13\x14m\xd4U\xef\xac\xa2l}\xb7\x19\xdd\xd2\xa4\x9b\x1c\xa3Cd\xed\"\xd8\xd8\xd5\x97\x9a\xa7\x97\x94\xa5\xa41E\x90+\xd0\x0fI\xdd\"Wq\xe45 \x88\xce\x0b\xcc\xfb\xb2/\xbdS\xdc\x8a\x84\xd2\x0cP\x1eVO\x13\xa4\xcb\xf0\xa6\x0c\xf3kR\x9e\x97a^\xf6gC\xad\xcdx\x80\x19kj\xc30\xf7PdU\x1e\x91\x0dz\xc8\xbb\xc6\xcbZ{\x95\xce\xfb\xdb\xcaU\xe7\x8bz\xf5\xd5\x1d\x95\xec\xaf\x08\xc6^\xda\x916Jy92Z\xe5\"A\xcb\xf4[\xb99n=\x12\xc8\x8d\x1b*\x06]\xe6\xcaA\xec\xb1#$M\x0c,]\xc2\xe4\x04b\x9e\xd5`g\x07\xcd\xc2b\x18\x01\x03\x92\x14\xd6\xd1_\xa6\xb8/\xb5\x93\x11eA&d\x17X\x18\xaf\xcd\xb2\xfe\xb105\x9aY\xda\x06\xfd\x1b\xf3\xb9\x14\xa4\xac\xf3\xb8\x94\x8a\xa9N\xca\xcc\x9e2\xcf\x9c\x0bS\xe8\xfd\xba\x00\xc1\"\xc6\xf4\xf6\x1b\x00\x02\x83\xd3\xd5\xc6\x99\xadEz\x02\x0c\xa9\xc1\xd1\xa6vC\x8c\xe9s%\xb8\xd0\xfe\xc4\xe7Y7\xfa2#\x81\xec\xe2$\x07,\xb7Y\x1e\xd1\x87n\xe9t\xff\xa0F\xd4\x96\xf8h\xf6|\xabz\xb2\x19C><\x9b?{\x9d\xf1{h2o\xcb\xb2c\xbfj.\xe0\xdc\xe6Ul\xf3\xfch\xf5\xc7s\x97\x98\xf2\x9d\xf3\xc5b\xa9\x92\xacF\xbf\x1cF\xca\xe0\xe7\x19\xc3\x0dj\x91\xd5*\xfa\xfd`O`\x0c\xe7\xd1\xc4\xcf\xa3\xed\x9b\xa1Tf\x1bl\xe3\xcc\xab%\xba>SF{\xcc\x93\xc8\x8d}h\"{P,gL\x0bo\x87'\x06\x8b}\x04\"L\x93a\x01\"viB\x85\xb6|r\xacB\x96Q\xf8g7\x15)\xeds)\x01\xa6\xd7\x91\xbc\x99\xb2\xdc\"N\x95\xf9\x10\xd6\x13\xe0\xb6z\xe8\xa3\xacLB\xc0\xc5j\x96\xc1\xbfB\xb8\x81\xcd^\xd9\x8a\x91\xa3\x8e\x81N\xf6op\nOf\xff9\xfa\xe5\xc9x\xe7\xe8\xc5\xce\xff\x0bw\xfe\xb6sy\xf1\xe4\xda\xe6z\xf3\xba;\x84+\xa0r\xf6\x0c\x9c1:\xfd\xabiB\x8f\xb5\x02ul\x96\x0e\x7f\xb6*\x00o\xcc\x01\xda\x08\xf0\xa88\x13x\xd2\x9b\xe3\xb2q\x90\x89Ex~S^\x87\xee\x14*1\x0bl\xd3J\xec\xe0\xc1s\x8c\xe6\xbd/P\xf4\xfe\xd3\xdd\xbd\xbd.\x80\x1b\xf3\xfcp\xf6\x1aP_\xd2\xe7\xb0\x7f\xb0;9\xea\xabL\x1f\x96\x88b\x97\x8eggB\x07\xc3\x93ILw\x8f|\x98\x1cM|\x98\x1c\x1eu\x80u\xf1DYZ\xc6ie\xce\xa5$\x1e{\xf6 \xe0c\xaf@\xa4~\xb2J\xf5\xe4\xe7\x1fi\xf4\x98\x10\xaa\xb3Jo/\xdd\xd9\x95\xf0\x98\x1c\xecN\xad)\x04\xc53lU\xfc\xdfy\xc8)\xf7\xd18\x80\x11\xa5\xebvx\n\x82g\xcf`\xc2\x0c]v\xf8l\x8c-\x88\xb4\x89\x9c\xef\x190\x1f;&o\xeeo\xca\x12U\xf4\xdd3\xd6\xe1\x84eg\xe9K\x7f\xc0\x07\x93v\xcf\x83\xef\xdft\xbc7\xb0\xf7\xe9f\xbd\xc3\xf3\xe7\x98\xcb\x00\x03lcB\x83\x94\xfe\x9a\x1e\x0e\x1a\x16\xee\xd3\xb0q\xedn>.L\xba0\x9d\xee\xb1\x10\x1ep\x00\xdbt\x848\xba\x0d\xc6\xda\x03\x1aq\x1e<e\x83)\xce\x80H\xa7\x15es\x02\xeb\xcc\xe2E&7\xc9\xe6\xbb\xf7\x88\xf9\x1e\xd2\xf9\xee\xf1\x90%t\xfa\xf2\x84\x1f\xb7\x06\xadR{L\x8f?\xa8\xd5\x94\x9f5\xee\xfc\xa1\x13Y\xe7A\x995\x19x\x1a\xde\xa6\x13\xcd)a\x8b:C\xae \x92 (\xf3x\x85\xe1q\xe8\x1f\xae\xc7\xf3 \xae\x930\"\xee\x93\xff\xfc\xa5\x18\xdd\xffR\x8c\xfe\xe5\xc9\xb5\x0f\x8e!S?}\x1e\xdc\xd2\xab?\xf9\x1b\xd6\xf3\x1a\x92w:,x\xdcI\xc3|\x8b\xa8\x92\xa8B\x19\x9d\x82sj\xf9P\xcc\xa1\xbd1n90M\xd1_{\x98E\xd5\x97\x8bq\xc5\x8c\x05\xc14>(\x14!\x92\xb4&V\xd2\xdar\xf6\x99p\x86\x19X(i+\x93\xab\xfbu\xd6\x7fy\x8cw\xa6\xe3t'\x13>\xb5\x07\xbfS\xb8&h\xa8\xd4}\xea\x05,\xe8|\xd3q\x19\x90/\xeb,/\x8b:\x85\xf1\xe0\xd6\xf6\x0e5\x8a:f\xc5GZ1\xa5\xd3\x9cY\x86a\xf0y\xd0\xfb\x0b\xc7<\x02\xfb\x89\x15'\xa7\xc0\xefU\xc6\x8c\xae6\xfdb{\x1b\x90\x0d8=\x95\xee\xdd\xc3f\x93\xda\xdd\xf5\\\x16\xb1\xdf\x07'\xcaIX*~m_\xb1\\\xbbOw\x8d\xeb\xb5\xfbt\xcf\xb0`\xb4|_+\xafx\xf9\x81V\x1e\xf2\xf2\xa7\x9e\xc4\x0d\xd4\x07\xbbh/\xe6\x0d\x8f\x0e\xbac\xd0}\xa6\x1c?\x03\x0f\x9f)\xa7sV\xcfk\xad\n\x0d\xa2\x84\x84\xb9\x8b\x87\x9cX\xb3q\xddt\xa7\xd4FQ\x10)\xdd|6\xbe\xf0!\x9fMt\xbb\xff?\xb4\xffRd\xc0t\x0ctWT\x89\xd0\x9c$\x04c\xfc\xc4j\xf95\xa1\x102S\x0b\x97!\xdd\xd7J-,\xb0f\xe8+{_l\xb6\xf7O\xf7,gH\xf9\\_5c\xf8\xfb\x13HwvN\xda\xf0\x17\x05\xa8n9K/p\x01\xa5\xbc\xd1\x1aU\xc9K\xa5,\x9f\xe6+\"\x8ff\xf0\x90\x1b5\x92\x88y\xdad\xc9!\xf4/\xf2\xe8\x8b\xf9\xf4\xe81k\xd8,\xdf\xe5\xe5<,\xc3\xcbK\xe3j\xe4.\xf1\xe0\x0c\xd2\x99E\xbeW\x17\x1f\x83\xb3\x0c\x8b\xa5s\x01\xc7\x90\x06\xabp\xfd\xd8\xf9\xec\x8d-\xe0s\xa2_{\x06\x0e\xf0v\x8b\xa2\x8d`f\xc6D#9\xcb\xe8G!\xe5c\xc7<\xb1\x80\xb0\xc9d\xf7\xb1\x83CP#NH\xec6\xd2N\x8aY\xf3\xaf\x18\xeb\xd3\xb1a\xa8\x9a\xa8a\xd8Hmbbz\xbaY\x0c\x01q\xea\xdbb\x1bT\x12a\x14N\xe3\xb1s\xc6\xd8\"\xaa\x04\xe8\xd8\xe8\xbd\x81\x9d\x98\x1e\xb8\x9d1=l\x1b^\x17\xa7*XB\xf3\xa8\x94:lh\xc6\xd6\xf5\xd8\"\xc1\x0d\xc9\x0b\x8a'j\x0dS]TG\x86sn\xc6\x81\xe3u\xd7\x98\xd0\x1a\xb5]\x8b\xb9\xc6!\xads\xa6,{\x1bO\xa4\xe4K\xf9)\x8e>\xab\xb1\x98;bK\x82\xd8#Q_\x96B\x97\xb6\x08\x0f\x94\x8e\xba\n\xa3\xcf\xc6\x18\x0f\xa2%[\x98\xfb\x9b&\xab$\xb4\xc3J\x9b\xbf\x11\xb1\xb7\xc2.b\x1c\xa3&\x8d{\x02\xd5\xf6$\x80\x14\x16@\x81XI\xb7+X,\xb6\xd8\x93\xdf\xb1\xddb\xbd5}\xe2\x0f\xc0k\x86D+\xe7\xfa\xcd\xac\x83x\x1e\xfa\x86\xda\x93\xdb\xf1\x9b\x0e\xb5\x95{U\x7fzG\xdb\x93\x89\xf1[\x8f\xd6\xb7ir\xc4\xd35\xe0\xde\xd8Z \xcb\xc1\xe9}b\x1ci\x88\x16|\x8a\x1c6\x137\xc1\x83lV\x8dF\x17\xf2-\x99U\x1dq3\xe1[\xac\n\x8bX\xcc\xa5\xc4}\x0bb|\xdd\xc7\xe2? U\xdc\x801 N\xcb,\xda\xee\xde\xa6,\xda\x81\x89*\xc8y\x96B\x13y\x9f\xf5\x91\x8eqJ\x81 \x99q\xae3m\x14\x13\x0f\x86\xe6*\x9by\x86\xe0L\xeb\xf7R3\xe2\xaf\x98e{\xa3\x98\x9c\xa7\x1ek\xfe\xe4 \xb8\xf4\x02L\xa1\xa5\xa2\x84\x1c\x8e\xc1\xcd\xdc\x9cN\xcb\x9734V\x9e\x0f\x99\x1b\xb3H\xb0\xd5\xd0\xccr\x88\x1aL\x8a\xaa!\x01\x88\xd3\x8cc\x04\xde\x80gD\xe3\xa6E\xa1#\x1c\x9a~M\x19b/\xee2\xc5H6\x0fO\x1c\xab\xb8\x85\x01\xf8\xc0%5.1ghKYf\xe8\x98\x9fh\x9e\x13\x1a\x7fJ\x7f\x8f\x15?\xe4f\xee\x03\xb2\xae\xfd^so\xb6\xc6\xb4)\x03\xf3\xb7\xfd\xce\x83\xcb\xa5|\xa3\x1b\x93\xbafZO\xbeH\xa9\xbbwp\xe4\xb9\xce\"\xcb_\x85\x91\x08\xa5\xf5\xa8f%\x1e\xe0H\x17?p\x1e\xe0H\xe7\x0d2\xce\x1b\xe8\x10\x8d\x891\xf6\x9e\x1eJ\x8b\xe2n\xc6\xd0\xf9\x94\xfa\xe2 \xbd\x8d+\xdb\xca\xf4\xf1\x0c\xa6\x94~5\xd8)\x94p\xc6r\x15s\xf3\x8d\xd2g\xc9N\xab$\xa1'\xbcPP\xd7\xf4\xc2W\xa4#\xa8N\x0cy\xe2!\x16g\x15#\xd5\xa6\xa8P\x16v.N\xe4\xf0\x80\x91R\x19\xa1e\xa1Zv\x8b\x01\xd9##]\xcc\x93A\x1a\x12\xa2\xaa\x99 \xd3v\x05\x92V+\xc2_g\xed\xd7\xb7y\\\xb2\x97\xa1\xf2\xee\xc1\x87\x02\x19\xc7\xd8-\xe8\xb0\xe8\xcc\xa2\xe6\x90z\xc1\xf5\x90\xa8\xd3t\xc3\xf8V\xf9\xb00\xb3A\x96]\x89\x1a\xd3\x18\xf3\xe6D\xca\xe6\xecJ\x9bC\xc1\x99\x14\xba\xe8\x182\xce\xe1\xf3\xf7\x14\xae\xa5\xea\xfb\x149\x1c\xb9S\x1e\xc1\x87nh\xd4\x8cAz\xa3\x1d\x06q\x10\x8a\xe6 \x84\x86\x83P\xb4\x0e\x02\x8fa\xde\xde\xf4kR\x1a\xb7\xbc\xa0\xe5\x86\x9dV\x8fB\xd8}\x14Z\x89y\"\xbe\xdb\x11\x1d\x0ff\xc3\xf9\x16 I\x92\xe1\x1c\xdaD\xa9\xc1\x8f\xaf^\xbf\xf8\xf9\xa7O\x9c\xb0\xcc]\x0d\x0e\xb3 \xe7\xc70K\xdd\xfd]O\xcb\xdeO\xbe\xac\x938\x8aK\xfe\xfa)\xdd\x16w\x7f\xf7\x90\xff{\xe4I$\xcf \x18hgP\x05\x8d\x0c\xa9;m p./I\xf16\x9bWZ>\xd6AKG\xdb\x93\x05\\\x8a\xf5C\xea\xd6\x1abwz\xc0AI\xea\xee\x1eq\xaa;u\x0f<\xd7\x11&\x1b\x9f\xc2k\x01Z\x9c\x97\xe7\xe7\x1f\xab\x84\xfc\x14\x17\xa5\xff\xf2\xfc\xfc\xbc\xbcK\xc8\x8f$J\xc2<\xa4#\xa1e\x7f\xa2p\x85UHb\x92\x96\x1fIT\xe2\xcf\x1f\xdf\xbf\x95\xfff\x8d\x8b_\x9f\xb2\xcf$e?\xc22\xfc\x94\x87i\xb1 \xf9\x9b\x92\xac\xb0\xf0u\xcc;\xfd\xf7Oo\x7fz\x91$/\xb3$!8y,\xd1~\xbe\xce\xf2\xd5\xab\x84\xd0[\x8c\xbf\xcf }+J\xde\x92y\x1cbco\xe3\x15\xa1\xe8\x96\xa5\xe9}\x17\xae\xc8\xfc]6'o\xc3\xb5O\xff\xc5:\x1f\xc2\x98\xce\xe1\xaf\x15)\xd8\xd0?$\xd5u\x9c\xf2\x7f\xd8\x97\xe7\x7f\xfa#K&\x87\x15\xce\xff\xf4\xc7w\x88\xa5\xc5\xaf\x0fa\xb9<'\xd7\xf5\xcf,NK\xf1CZ\x85\xf3?\xfd\x91\xcd;\xcb\xd9\xa4\xcf\xd1D\x95\xa1sV@\x97\xfb|I\x08\xfb\xfc\x13eg\xf20\xfa\xfc\x92/x]\xc0~eU\x84#r\x82b\x9d\xc4\xa5\xeb\xf8\x02Z\x8cO0 ~X\xcb\x80\x8b\xd1\xc8\x04g\x11\x1e\xce\x8a\x8b\xf6\xbd\xa7\xe0%\x9fE\x867h0I\xe9\xf2E#\xf4V\xa14\xe6<\xdeJf\xd5\x05\x13\xd2%(\xf9\xa0@\"\x9bE\x94\xab\xc8\x02\\\xd7\x9e\x13\xaf3<\x14\x8e\xfe\xf6P[\x1am*\x96\x13\x02D\x0eH=\x1e\x86\xf5\xd0\x87\x9dI\x1f)e\xbb\xec\xdd\x94`m\"\xd7\x10\x80\x12\xf1\xf72L\xbf+\x81\x0e\x06V\xa4\\fs\xc8R0\xe6\xeaii+7\x1b$\x07-\x83Y\xca\xa9\x0d\xeav\xd2Y\xa8\xc7\xef\x13o\xa6\xbe\x1e\xa1\x87\x19\x16ZR\xa4s\xe3+\xb1\xe3B\xc8\x8b\x80Mlc\xd3\x9f\xa1\xe5\x8eF\x91<z\xbf\xd8\xbc\xcd\xad\xdfg\xb8\xb6\xf3\x91\xa57$/\x81\xabC\xcb\x0c\xd6y\xbc\x8a\xcb\xf8\x860\n\xcf\xe9;\xbb\xf6}~j$\xcc\xa7\x13\xb3~\xf1H/f\x98\xe4h\xea\xb9\xce\x9bW\x97\x1f>\xbe\xff\xf4\xde1h\x1aeY\xcc\x83\xfa\xba\xd0^\xb7`\x0d\x1dl\xc9\xa9(w2=\xf4\\'^\xe4\xe1\x8a\xe8\x1d\x89'G\xe8b\x13\xab\"\x92$AA\xc1l0\x8f\x8bu\x12\xdeQ\xac\x97f)q|\x9c\xfb\xa1\x17\x84\xeb5I\xe7/\x97q2g\x99\xca\x83\"\xa7\x80\xd2\xf95\xbc \x8b(\x8f\xd7\xe5\xb1\xe33\xabV\x12DYZ\x92\xb4\xfcs\x9c\xce\xb3\xdb`\x9eEH\\zA\xb6&\xa9\x8bn\x03,j\xa7\xf3\x8c}\xfa\\T ^\x9f2\xc5\xf1\xb3_\x9e\xf0W\x98\x81)\x88\x92\x8cE\x8c/\xf08\xbd>\x81|g\xe7\xc4\x03\xae\x9a\x94t\x8d\xb3l\x96_\xd8\xad\x02\nWS\x89\x9a\xaf5O8\xcf\x94\xd7\x94\xa4\xed\xe7\xa7\x8c\xf0\x89\xabf\x04m\xdb\x0c\x93\xa2\x12\xb7\xf4\xfc:\xdce\xe8\x83\xfa\x9aK$)\xc68e\x0eX\xb4j\xe1\xaaY\x95\x08\xd2\xe0\xc7\x10\xbb\xa9/'\xe8\xed\x07\x87\x02}\xa0\xf7hDb-=~\xae8\x96\xf6\x01?\x9b\xa4\xabx\x17\xbe\xe3\x0e\xce\x1eW\x84\xbb%\xfa\xf5\xb0\x10\xa8\xa9\xb71\xcf.\x11t\xbb\x9e\xeb|&w\x85~\xf2\xd9\xa5U,\xcc7\x1av\x8e\xe1\xa3\xee\xc1\xc5?\x98\xec\xe7\xf1\xa34 #g\xce\xe5e\x94\xe5d\xe7\xd7\xe2\xb2X\x869\x99_^:\xa2O\xf3;\x8a\xe8\x1f;\xa1XL(f\x13\xfa\xed\xa1o:6\xc4\xe9DYZ\x94y\x15\x95Y\xee/\xc3\xe2\xfdm\xfa!\xcf\xd6$/\xef\xfc\xb8\xf8 \xce\xef\xfb\x85\xbf\xe6\xc5o\x8aW5\xbf\xe4\x97\xd9OY\x14&\x84a\x03_\xa0\x05\x9fc\x1e\x99j\xdbl\x95'{^\xb00\xcaTtQKf&\xf6\xfbV\xd6\xcc\x98\xa3\xcau+\xc6#\x9er\xdb\xf9\xb2\xb9\xc6\x18\xd0\x98\x99\xd4\xa0\xb8\xa5\x0d\xcdUfs\xcb\x10PA\xc8,\x94\x17\xbd\xfb\xb7!W9\x9d\x1cy\xee\x96\xec\xeeBq\xcb\xbe\xc7s\xde\xfb\xe0\xb0?\x1c\xbf\xe3\xb0\xa1\xfd\xc9%]\x8a:S>\xf7O\xbaD\x83\xaff\xc8\xbe\x1d\xc5I\xe8\x8d\xb7g\xb6\xaf\xe1\xed\x9a\xa1\xaebHvf\x17\x041@\xda\xee`\x9e\xa5*\xffI\x9f\x07\x06\xbc(\xe0\xc6\xe5m\xe66\x92\x8d\xeb\xad\x9d\x19&\xc2\xfb\x99X\xf7v\xc3[\xb071\xcb\x15[\x9cm\xebF\xd4r\xd7\x02\x89\xb7\xbc[]\xa4K\x08\xd5\xf1\xbb^\xefm2\xed:A\xfd[\xd5%d\xaf\xf3\x11\xff\x9c\xce\xc9\"N\xc9\xdc\xa1H\x84\xc9\x8f\xf8\xabwU\x928Fg1\xa4E;\x119\x0e8\xbf3\x94Jc)g\xc4\xe0\x98\x02QX\xa7\xe6\xd5\xf4\\\xe8\xd1\xca(\n\xbc\x12\xb1\xe7q\xac\x9d\xa1\xb0\x08\xb5\x00\x0e\xab\x80\xc3u+v\xca<\xcfFV\x03KBCP\xe3 m\xdd1T=\x80\xc1D\x02\x8c-\xa8?\x0f\xd3y\xb6r7\xdeM!\x92d\x86\x8a\xaeC \xc2(,]}\x17\xe9xK\x1f\x1c\xef\x92\xd2\x8e\xa3Q*\x92\x04q\xf8\xb1{\xf0x\xb4\xbbk\xbe\n\xfb^M\x8f\xb6/A\xee\xc6\x1c\\\xc7\x9c\xf4\xe3\xf2\x93\xc7\xae\x00\xdd_\xad)fA\xf4\x9bn\x8a7x^\x93\xddn\xaa\xe7\xa8\x9fS\xfd\xef\xa0z\xf6\x9fZ\xf0\xf1\xbe.\xf1\xcb\xcc \xaao\x12\xff\xbb\xf1\xf1\xc1\xc4\xb4\x00\xc1b\xc8>Rn\xc2^ $h\xdb\xe6\x92\x10\xa3\xad\xf3l\x15\x17\x843&\xa5+O\xc4\xea\xc5\xa4y\xb4\"\xd3$\xfdN\x0d\xd2\x9e\x1f\xc29|\xe0}Id\xa5=\xf3!\xea.\xd2\xdalX~\x1e\x04:\xceI\x91%7\x84\x03\xd0\xba\xf0W\x96\x858\xd7\xddZ\x1e\xbe\x82\xff\x98\xec\x99\xa5\x05\x93\xf1#O/\xb3?m\xb2JJk\xc5n\xc6\xffq\xd0L~\x04\x0e\xcc3R\xa4\xdf\x95\x98\xf7g]BN\xae\xc9\x97-\x8b\x8e\x94\x83\xd3\xaf\xba\xd0\xf4\x82b\x8e\xe4\xfe\xabiD\xeep\nO\x82'\x9a|\xc7\x88j\x9d'\xc1\x13\x07f\xe5\x85K\xb4\xbd\x128\xb6\xb5p0\x04o\x93Y~\x81J%\x1f\xb6\xac}@\x0f.7-\xef\xa6z\n\xf3\xe5'A\xa3\xfb@ e\x1b.Tn\xeaN\x0f\x0ft/\xdc\xb8~u\xa8\xbfB\xd2\xceD?\xc4\x01W\xc3 \x85\xd1\xf6\x08\xc8\xeb\xf7g=\xc0DPE\\\xe7\xa8\xed\xd8\xf1\xc0\xaf\xad\x84\x8e2\xd02\x90\xe0\x04\xcb*\xad\xbcFPS\x17I\xe2\x94\xb3f\x8e\xc7\x96\xa1\x9a\x0c\x83*+\x90\xe5\xc3\x91\xb6\x8c!\x9b\xf6\x0ckuWi9I\x0f\xd2\x11\x10\x93\xd9p\xd7N!s\xeb\x1d\xf3:\xb7\xccBPW2A\x9d)@\xb1s\x0f\xff\x1e\xfb\xb7\xc1\xd8\x87\\G\x82h5u\x0f6d\xb6L\x82\x9d\xd4\x9d\x1a\xc9\x9bC\xb3\x01\xc7dl\xf6CAi\xc6c\xc1l\xcc\x1d\x94\x98\xc0G\xfc8Eb\xf4\xb7\x0748j*\xfc\xa6[3:\x97l\xf7\xd0\xbd\x1bC`0\x0f\x84\x98\x87\x9f\x0e)\xf3[v\xb0\xb9U\xb0p\xb5\x08\x06\xbd\xd4Q{;\xb8\x00\xf6\x9a\x94\x92\x84\x89\x0d{C\xbf\x91\xdd\x03}K\x84\xcf\x90\x99\x12\xdd=\xd4\xad\xde\xb9\xcf\xd0\xa1\xceQp\x9f\xa1\xc3\xe9?}\x86\xfeA}\x86(\xaf\x94\xbaO=\x1f\x9c\xb7\xe1\xfa[9\xa1\x1d\xea\xde%\xdc\xebdj\xf6:\xd9\xdb\xd5\x0f ;P\xfa\xf1\x0by\xedG\xfb\x81\x18\xe1o\xc9\x11\x93|\xb628\x06'k\xe4\x0dR\xd5\x8a9\xba\xc4n\x89\xe7\xa1\xa4\xe7\x81\x82\x0c\xc6\xb6\x86\xfd\xc0U_3z\xae\x8f\xc6\xe3\xa7\x93\xa3\xa3\xe9\xfe\xde\xd3\xbd\xf1\xd1\xd1\xa4-nx\xf2\x9f\xee\xd9\xf1\xf8~6\xd99\xba\xf8e\xfe\xbd\xf7/O\xfa\xd6\xc0\xa2\x86\xc1\x10>|:FZxk\xcb%\xd2U\x13\xfa\x13\xc2\xb2\x9f\xc8F\xae13v\xe3hg\xeb\x94\xf9\xee\xe7AI\x8a\x12u\xba\x88\xb1\x84\x0b?\xcb\xffy\xcaC\x97\x96\xf0\xac\xd7\xefd\xc8J\xf5\xad\x82\xed$Xb\xeft\x0c\xf7T\nu:\x08m6\x17\xc2\xec\x84\xd5r\x1e\xa2\xb7\xe1\xc9/\xc1\xfd/3\xf7\xecx\xf6\x9f\xb3_..\xbe\xbfwg\xcew\x17\x9e{v\xec\x9em\xfd2\xf1f\xff\xf9\xcb/\x17\xf7\xbf\xfc\x12x\xdf\x9f\xfd2\xf1~\xb9x\xd2\xbe9O\xfe\xf3\x97\xdb\xef\x1fu@\xb8\x7f_\xa3o\xde\xd2\xc2\xdf\x8bm\xe8>A\x8a9k\xaa\x90bu\xc1U\x96%$L\x9b\x12\xc5Ik\x0bY1z\xbe*q\x9c0\xbaX&\xff\x12_\x10\xb6Cq*d\x88\x1b\xa9\xf9j|\xd4\x96\xe42\xf15\xb9!).\x9d\xf2\x13I\x03!\xe1^\x85_~\x8a\x8b\x92\xa4$o**\x855\xb3/\x8d\xac=\x84|C\xd0\xd5\xd9Xlo\xcc\x04\xda\x9a-8\xedi8\x1bD4k[\x00\xda9L}H\x83Wt-_\xad\xe2\xb2D\xdb{,k\x10\\\xb3\xf2\\\x0d\xa1\xbe\xd5\x16\xbd\xa9\xc3\xa9\xe3\xb7\xea\xfb\x89\xf6}A\xf4\x1av\xa8a3\xd1\x06\x91\xc9\x18\xdd\xc3\x99.\xd7$\x9cH%c\xeduV0K\x8cN\xabm\xf3\xb9\xf2\xd50N\x0f\xea\x8c\xc8*\xee\x8e\xc8 )\x11,\x96\xcd1\x8f&(\x1fsW\xbb\x06\xbf=Pr\x81\xd0\x999M\xd4AwK\xae\x16\xe0k\xee4\xdf*gF.\xedr\xe1\x97i\xa2\xd2x|\x0e\xd9\x14\x97b^\x91!9[\xb0\xb0\x1fb\xf1\x0dY7\xe9\xec\x17\\f\xc7\x1d\xf4~N\xa3\xb0\xba^\x96>Ti\xb1&Q\xbc\x88\xc9\xbc\x9e\x1b\x0e-\x00\xf7;\x9e}\xd7\xf1L\x927\xd6\xdf\x82\xd9t|)\x99 \xefB\xa9\xf6\xd0Z\xe3\xac\xc9\"\xcaW`V^\xd8\xc1.\x83\xcb\xa9\xe75\x0e~\x9a\xed\xb9i\xc9\xba\xfc\xf8\xd2&G\xbfE\x9ah \x7f\xd2\xe5\xca'5\xea\xab\xfb\xb4y\x17\x16\x17<k\x17\xbeb@\xbfY\x87\x9dNi\x94\xeal\xc5\x97L\xe2\x88)\x98\x9a\x8d\xf0\xd1?-\xe5~a|\x80\xba|\xae\x8e\xc1\x13\xd3\xddl\xf5\x87\x9c\xcbf\x1dR\x84\xcf\xcc\xc9\xb9mb\x1d\x0dE\xb1\xea\xac\xb89g4+.\xb4!\x9aq\xf8\xd8\x06e\xc2\xf9\\\xc0\xa4>r\x82\xde\xb8\xaa}\x92\xb7,\"\xdcD4\xdb\xf6\x91\xed\x84\x92=\xa0J\x813)\xb9\xadG\xbf\xcd2\xe8!\xdct\x1d\xe9\x8d\x83\x0c|\xee\x92@\x0c\x89\x92\xfc\xcd/$\x87}\xfd\xfa2\xae@\xbb\xd2\"\xcaaS\xc4\xc2\x06\x11\x91\x9aOn\xe0\x14fZ\x91\x0f\xe4\xc2X\x91\xf8\xa6\xcet\xb0J\xbb\xbb\x0d\xf3\x94\xcc\x81\xa5\x0b8\xa5\xc8\xbb\x85ZP\xdbjD\x9b\xc7\x06D\x84\xddT\"\xf6\xb0\xde\x1d\xb7)x\x0e\x15vi\x19\x0dsa\x88\xb2\xb4\xc8\x12\xc2\x80\xbf\xeb\xb8i6'\x1e\xd0*\x18>s\x9d\x15E|\x95\x10P\xc8\x84\x15Ye\xf9\x1d$$\xfc\x0csR\x92\xa8$\xf3\x00\xfeu\x0eI=\xeap>\xa7e?\x17\x04\x08\xfbJ\xc7\xf6\xae\x07e\x06q\x1a\xe5\x84\x02\x9b$^\xc5e\xe0\xb4\xb6\xb4\x89\x93j\xa4\xbf\xc4\xf8\xcb<\x8c\x90\x08U\n\\\x91\x0e\xc9v\x932\x14i\x98\xaf\x96^\xb3?\xf9\xf67\xbaY\x82\xc2\xa7(Hy!\xd1\x95&dS25\xd2*\xbb!b\x0et\x98\xb1\xc7\xe3\xbb#\xc2\xa3\x9bNT\xf0#\xa0Y+\x82\x92\xfcKXi57\x10o\x00\xf6\xc9\x96#\xeeYkud}kyS\xfb\x7fQB\xe9w\x81`\xd8\x8c\x0e\xbf\xf4\xcb\xdb\x11w5^\xb0\xfbl$$j\x0c\x901a\x1a\xddQ\xa1s\xcc\xddT\x02k\x94\xea\x97V\xf5\x14\x83\xbdr\xd9T\x0b\x16)\x90T[Q\x15\x98\xaa/\x19<\xd5\xe3-\xab\xb8\xd0p\xa4jlX\x9d@\xb8\xb3C!\x8e!&\x0d\xf0\xc5Hg\xe1E3K\xfa\xab\x99\x17\x9d\xa5R\xc0'\xda\xeeS<t\xe1B3\x11\x01\x82\x900\xbe}h\x95\xc6<B\xf6\xb8'\x8a.\x8b\x82\x996VYn\xfd7\x06\xd05\xef\n\xda\xbd\xa2U`D\xdc\xcc\xafs\x98|\xcd>\xf5\xdf\xc4\xfe\xab\xf6\"I\x86\xf1Vf]{\xebz\xf4\\\x85\xad\x8e97!\xecYf\x1c\xddm\xf3Lg\xf4Q \xa0\xe3\xdc\xed\xed\xce{\xd1\x1e\x92\xb97\xebA'\xe8D\xaf\xccX\xdf\x1en8 \xb6\xb0\xbd\xd0nGLs\xdb'z'\xda\xf9\xc1\xe5\xd0`+\x18y\x9a\xdc\xc2\xd3X0\x83\x1e\xee\xbe Oi\xa1\x8bO\xea\xbbqbotV\xdf\x99\x1dh\xf1\x1d|%\xba\xb6\xd1v\xa8\x93Ag\xd9D\x96\xb6i$\x16'I\xbf\xc6g-\xe2\xcf@\xf9 \x1a\x1f\x8eav\xd17\xd6\x97Y\x95v\x0b\x04tv\xdf\xa6\x1e!\xed\x8dm\x9f\xb3\xc68\x83/\x83!u&z\xee\xd4\x15\x84\x05j?\xbc\xd1\xb8\x11\xfb\x0c;\xc2\x85\xa9_\xf5\x0b 5q.\xcf\xc5!{\xbeO\x0e\x9fz^p^\xe6$\\q\xd7\xdd\xe0# \xe7\xe1\x15Z(\xe0\xef?s\xbfg\xf6\xc1\xe4)\xfa\x86\xfcX\xad\x13\xf2\x85\xa9C1MLP;\xf9\xb1zGS,\xfd\x10\x16\xc5\xa7e\x9eU\xd7K\xa6\xfb\xd8?\x1c\xa4\x83\xed\x0d\xd1d\x0ett#\x92\x99\xb9\x18\x07MyW\x93\x7f\x06\x95?h\xc7\xc4$$\x89\x0b\x8c\xb4\x02\xc2o\x83!\xa1\xb4\xcc\xef\xd4\xa2E\x9c\xc6\xc5\xb2\xcf\xc7\x87>[\x9dK\xa0?\xb5\x96\x8fujG\xed\xa52*{=\x0e\x93r\xa3NQ~\x84\xd6%\x0fD8({\xa3\x80\xfa\xdd5I\xe7qz\x1d]\xed\xecP6\x8f't\x81\x1cW\xd0\xfam\x9b\xf2\x10\x0f \xa2,\xffL\xe6\xdcc\xb5x\x9d\xa3]\xac\xa9XlRIy\\\xd3g\xa7\x86\x00\xa8\xf4y@\xb5\xb7\xc1V\xa8\xe3r\xcb\xb7i\xd5fCB\xee\xe4N\x82\xab<\xbb-\x18\xf12sn\xc6\xc1d\xec\xf8@\xff8\n\x9c\x8b:\xfaW\x13\x0f\x8cA\xc9\xb1\x0f\xfb\x1e\x8f!\xcd\xbci\xb2:\xda\x8f\xda\xdb\xaa\xbe\xa6\xe7e\x88Z\xd9\xeb\xf6pP\xc8\xe2\xee\xeby\x04\xa3 N\x97$\x8f9L\xd8\xd5\xd36\x08\xb1\xa3\xf9\x90\xcc\xc9:'QX\x92c\xbc\xdeO\x0d\x0b\xd8V\x85'\x1c\xfa\xe8z%\xfa\xac\x99\xc6i\xec\xf1\x906\xed\x1aK4\x81h\xf2\xa6(\xde[\x1e\xfcfH\x0c0\xf7\xe1\x86\xf7i\x07\x0cw\xf8\xb1\xe5\xe5\xb5\x114\x03\x97\xaf\x85H\xb23X\xc8N\x1f\xaaW\xda\xf7D\xdcb\"\x0b~\x0dt:\x82\x12\xa6\xe5x\x9b\xcd\xd1\\l\xab\x94\n|\x16V\xd7m\xd7\xd3K(W\xb6\xc5\xfc\xf1\xe8\xf9x_\xbf1PZ\xb5~5X\xc6\xd7\xcb?\x87%\xc9\xdf\x86\xf9\xe7\xf6\x16\xd0'\xc2\x8a\xa2\xdd\x7f\xef\xff`a\x18\xdd\x19L\x0e\xe0\x18&\x07\xbb\x87{\x96UP\x86\x02\\k\xcbh\xd3\x18\xce \x86c\xbe\x16Q\xf3\"\xa2\xe4H\x04\xc7\xb0\xf0\xcd\x8d\xc8\x19\x15[\xef\xbd\x06\x94\x87\xc9\xcb0I\x98\xc0g\xe2\x0b4@\xe6?\xe6a\x9c\xca\x85\x0c\xe2i%\xeaw\x0c3\xa8esR\x94yv\xc7\x0b\xcd;\x92\xe0;\x9e\xe7fN\xa2l\xce\xbd\xablxJ\xa9C?N\xea\xdePB&R\xc1\x00kP-\xbb\xbf\x07\xa7*\x17\x87B\x98$spX@w\\\x9b*\x03\xb3R\x9d\xe2.\x8d\xb8\xb8\x04\x7f_\xe1U\xfe\x90g\x11)\n\xed\xe3,E_\xd1N:O<[\xdd\x94\x92\xfc\xdc41Moe\xd8h>\x9b\xe2\xc9\x99 \xfa.\x8d\xba\xeb1\xf7f\x1cxteG\x87\x94\\\xec\x9f\x95xJ}mE\x07\x0d\x85Q3\x07\xe2\xee\x91\x84\xa4\xbe\xf4\xb7\xe2\x86\xa5?\x0f\x88\x8a\x89g =\xba#G\x8aggGB\xee>\x1a\xe0\xbb\x0dNrc\x1fr\xcf\x97\xb0\x94\xfb\x8as\xe4~k\x1f\x98\xd0\x94 E\x85<\xb5\xe4\\=\xd3_\xd1\xc60<L\xec\xe6\x8fn\xc0\x87W\xec\xa8\x98\x05/\x80\xabR\x87\xce$t\x0d\xec\xdb\xd9\x13\xd5\x1f\x84\xca\x00N\xe1\x8bkJ\x87&?\x15\xe2\x0cqw\xf0\xef\xd65\xa1\xc0[\x14\xd7t\x0c-\xbde\x1c(E\x03gP\xb8W\xb8\xccL/\x1a\xd35\xbbr\xa5\xdf\xf6\x99\x1b\xdfX)! \x00(\x87\xb2.\xe4\xe7O\xb9\xf4\xcd\xb0\x95\xfaIX\x94?tU\xa8\x8f\x99\xd4\xe2:'& \xaa\x1f\x84\x89y\x00\x82\xd9\x1a+PK#\x0eSrK9\x84e\\\xe8R$3]\xb02_kz\xf1u\xc2`\xcb\x9d3\x0d\xd8\x8a\x0d\x80\xd9].\xe3B\xa1\x05\xa4\x90\xd4\xe4\x16\x9b\xb7@y\xf56\xf0\xa1#\x99\x82\x8dK\xfb\xc2\xd97\xbc \x88)\xcd\xc6\x18l\x0f%\xad\x87\x80\xcb\xfc\x8dM\x8b\xc0_\xdf\xe8_\xde4\x9f\xde\xd8\xbf\xe5\x18P\xfaX\x94\x9c6o\xed\x9f#\x8e\x96>f\xbfO\xc5\x1b\xcf\xf3!\x91T\xc5\x83\xf6\xf4R\x05\x8aL\x8en\xdae\"\x1f{\n>\xa4\xbbQ\x89\x9f\x1c\x9e\xa3\xe6@\xc2\x8b\xe8\xbc$V\x8aBN\"0!K*\xc1\xde\xb8\xac\xf7\xe6\x9d\xdc\xcad\xd0l\xae\xa4\xd9\x98&\x91B_\xf4\x03\xf1\x88\xb8\xc6\x1c\x07moc\xf4QA\x0ca\xda\x9b6q\xc4!\xf2\x9c\x969\x06(\xfc\xe0\x96\"\x86\xa5\xc26\xe6n\x03\xbb\x07\xcd\xf3\xd6:vb\xa4?\x0c\xd9\xb4\x04\xcd@t\xd0a\x16\x04\xd5\xdb\x87\xf2y\xa6\x8a\xa0\x98\xcf\xb6~5\xf1o\x84Lv\x82#\x069\x92ln\x89\x02\x02\\\xeao\xe2z\xcd\x98(k$\x05\xe6\nu|\xad\x90\x81\xcd\x82\xad\x1b\xda!\xc7\xa8\xae`&O\x98^\x0e\x95d\x05\x0b\xea\xc6\xa3^\xe0j\xf8\x10\xc2\xe8\xd4$L\xa3\x0f\xc69e\x88\x00\xcd\x7f\xfd\xfa\xf6\xb1\x1bSg4\xf3\xc1q(i\xc1\x10\x80z^F#\xac\xda\x81R\x18IB\xc9\x15\x8bP \xe3c\xcdd)\x8fg\x17\"0<\xc1\xce\xad\x0d\xcf\xb4\xcfz\x17\x05!d\xc4\x9d\xf2\x98\x9a\x8f\x0f\xa2e\x95Z\x18-\xf1\xa0\xb1P \xd29v\xd7M@\xc4\xeb\xe9\x16\xf0\xd0s_\xef\xd0\x04!\x93\xc2\xcd\xc11D\xf5\xa6E>e\xc0\x12\xed8\x98\x17\x8c\xde\xf9\x1a`z\x1b)\xa8\xe8S\xbb\x88\x0b@d?\x0d}2\x1e\x90@\x86\xf2\xado\x81$\xc3\xe0\xf0\x97n\xff(\xc1Abtx%\xab\xb10ld\x85\xfa\xb8\xd0d\xa2\xe1-\xd9O\xbe\x8c\x83\xc6un\x85\x9b%G\xa7\x0d\x0bc\x95Pj\xc0\x1b7A'\xc6SviU\x1aN\"\xda\xeb7\x8e\x05\xf2\xd3\xe7a\x182xe\x9d\x94\x80\xf1_\xbatM\xec\x10\x0d\xe46\xd59\xdd\xdf\x03Q$\x07\x14,Z\x88\x17N\xad T\xd2\x80\x99&{\x18+\\\xd59\xe7\xaa\x90;\x1a\xb8\xa4]\xa8W \xf6\x86\xe6fw\xc8\xd2j\xd3\xa4/\xd9\x94C\xeb\"5\x92EJ\xf2R0p\xad:\x8a\xd4A\xab;e\xe55\x16*\x85\x00I\xbb\x03,\x98\xc8\xec\xe2\x04\xca\x13\x8fN\xa3*\x96,4 \x12\x82t\xd9\xac;\xadyy\xb7\x81d\xaf\x18\xdf\xee\x96J\x1f\xee\xe6\xc4\xfc\xd7\x84\x9b\x93{-{\xac;l:\x8e\xc9\xe5J~0\xcc\xe9\"\xa8%\xae\x9b\x05|\x97U{\xf5\xd2\xbbv\xde\x10\x18\xc7\xe7hL7\x1b+\xc4E#\xf9\xe5\x96JZ\xc5f{)wC\xc2y\xe0\xf8\xe0\xfc\xf8\xea\xc3x<\xde\xb5\xa4F\x83\xf6\x05\xaf\x8b\xed.\xbb\xf8\xda\xb5\xb1\x08\xdc\x13n{\x9b\xff\x15,\xc3\xe2\x0d\xe7\xb7\xc0\xe6\xd3\xf8\x9a\x97IQ\xc7\xda__\xd0\x8bK\xef\xc6\xb0\xda\xbe\xe5,\xac|\xc3\xc8:\xdc\xef\xfa\xe5I\xb5#\xcc\\66-\x1b~\x93\xde\xf6\x15\xf0T\xcd\xdb-\xc9\x8a\xcc\x8f^\xf7a\xcb\x07\x84B\xf3^\xf1]\xedG*5^\xb6\x94\xf2>\xac$\x10\xb1\x8e\xd7\xa4\x0f:0 \x80\x8ah\x9a\x1c\x8a/\xc34\xcdJ\xa0\x0d\xf9\x18\xa7>\xe7\xeaM\x9d\x15\xd1zn\x8b$\xed\x1a:$\xebY\xe4Y\x03cn&\xbb*\xc6\x1e\x19\xdfa\x80\xe4X\xa6\xab\xea\x84\xfb>\xac\x9b\\\xce9nh./\xe8\xd2\x8e\xd2B$\x0d\xd6J*h\x91\xd9|\xf0\x91Zc>\x01\xdd\xfb\x13\x80\xe7\x10\xb4\\A6\x81T\n\x0eM\xa90\xca\x17\xb0\xf0\xd3\x02\x00Rj\x1b\xd1%sr\xd5$\xd3j\xeb[R\xf0}\xd1\xfa\x9d\xe7C\xcc\xe5\xeeg\xc3p\xb7\xa0\x06\xa4#\xc3\xb6>\\\x94$\x07\x92\xcem\xc1*L\xd4\x8d\x84\xa2\xf1\xb0\x98V \xefb\xca\xc3^\xeb\x9c\xb7\x9dK\x07I=c\nZ\"\x9e\xca\xa2H\x00\x89\xb8iH\xe53\xe6\xa9\xa8\x06\xe8\x7f\x1b\xde\xe1Ua\x0b\x81\xb5\x11\xf4\x14PfP\xa0\xb1\x80cM\xd6\xdf\x04\x05a= 9\xa4\xaa\xa3\\C\x9f\"\xd7i\x9a\xa5;\xac\xd9'\x1c\xd3 \x9f\x83\xc1\xbf\xb9A\xae\xb6\xee\x95\xba\xee9+\x89\x05\x1f\x1a[\xf7 f2S\xe6\xe6\xe7\xc6*\x01V\x19\xee~-\x0d\xb2\xed\x0f\xdaq\xf5*\xf1MM\xf7!\xf0R\xd7\xe8\x19\xd5A`\x8e\xdd\xdf\xdc)~}\xb1\xc7\x1e\xe9\xb4\x91<\x92\x9f\x87\xda\x08\xc3\xdeP\x8e\x06_U}A)\x11\x19K\x17\x9e\x99\x05T\x16\x8co\xbd\x03!J9Z|g\xde\x99Y\xaa\x16[\x8d\xac\x86\x91\xb4\xed\x02$ \xd73 \xaaf\xd0\xfc\x1d3\xdd\xd7d_c\xcb\xba\xa0\x05Q-\x18\xc4\xeb\xc1\x04\x0c}\xe7&b#k\xb3\xb5\x1d\xfa\n\x0b\x17\xdc}\xd8\xf0\xc6\x1d\x83A\xf3.?B\xacp\x0cq\x8f\xaa\x8c\"\x1cc\x1c~\xf9\x11\x92\x07c\xee\x05\xf9\xa17\x9d9;\xdb\x8f&\x0b\xd2\x1f Q\x8ey\x19\x8e\x8dL\xbe\xb1\xaeU\xc83:\x85\x89\xf9\xf02I\x8f,) \x1b\xf8\xd1 \x9e\x8b.\x88\x152\xce\x0f/\xb0/\x85\x82\x836 CO\xd5 \xe2I#\xdc\xd9i\x1c\x8d\xba\xda\xae\xd2!\xad+<\x9b\xda\x8bA\xa7!4a\x0c\xc8\xb3\x1f;;\xbe\xa4\x15\xa5\xe4\xab\xa4/\x93\xa4\x1e\xf8\xcb\xa8=k\x0bL\x98\xf6\x8c\x93\xc4\x9dD`A\xca\x1f[\x1a\xf3nZ)\xb6\xa5A\x14\xa4V\x19\x94\xd9O\xd9-\xc9_\x86\x05\xf3\xb0\xd8rg\xce\x92|\xa1\xdc\x11\xd7\xbb\xd3\x7fw\xf0\x8f\xb0\x88\xe2\x98\xfeq\x15\xa7a~\x87\x7f\x85\x059\xd8\xc3ZQ1\xe5\xff\xeeL\xf9g\x93\x83\x84\x88\x16\xc4\xdfyx+\x19\x19\xb9,\xd3\xa2\xa7\x8d\x03\xad\x8c<K\xca\x9e\x9f\xd3\xcfiv\x9bJw\xde\x14\xb1\x1dt\x03R\xf5\\\x19\x8c\x0fLf\xb9V6Ia\x99oMf'F\x0eZ\xce\xe5a\xa2\xb8\x19W\xdd\xc7Iw\xccKA\x10\xed\xbb\xab\xce\xceSO\xd8\xe5&|F\xeaJT*W\x0fy\x94\x13\xa7\xc4Z\xbcZ\xb3\xf0\x83d\xde\xc3\xda4\xca9&\x1a\x97\xdf\x91t>p0\xb59\xe2\x90\xbbm\x8d[\xc1,\xae\x9bt5\x12{@ \xccM\x98 )\x10\xf7\xf6\xb6\x1c\x98\x8e\xb1\xb8\xb5\x8eZ\xc8\xbcr\x19\xde\xe4\x8d \x8bP\x1e3\x10\x8774\x17\xb2Y\xcan)@g\xc8J\x01\"\xe2\xc6>h\\\x0b7\xfdZX]\xb7y&\xd3\xb2)\xd3\x04fiDj\xa1[\x07\xe9F\x1a\x93\xa3\xb1/\x99f\xb5E\xd4 !\x95\xbc\xc5\xa8\x0c\xbc\x82\xb5\xe9\x92\xf1\xdamt\xad\xe4\xdd2\xa8\xb6k\x0bt\x1d\xa0\xf0\x01\xb4\xe7\xd6\xbe\xe6\x852\x1e+\x9fk\xe9\xde\xed\xec\x9f\x9e\xe1~1\x89z\xd3\x1a%\xf7\x8d\xf8[\xbb\xa6U*\xd7\xa9\x7fi\xb5\x9a:\xbd\xfc.\x93\x94\xa4s\xd7\xf3\x81\xb4\"8\xfd\xa1\x19\xa9\x9a\x9b\x11\xb3\xe8\x1f\x8d=\x8a\x0e\xdf\xacVd\x1e\x87%\xd9$\xb5~\x7f\x0e6\xfb\xbe\xf0\x03\xd2\x1b=\xe2\x9b\x0c#u\xf7\x0e\xf7<\xd7\x833\xee\xbf\x8c\xc9\x13\xd1\xb0\xf5p\xff+\xa6z\xd3\x84o>2\x87R\x99\x9a\xd3\xc2\xed\xea\xc1\xc3*\x83k5G\xec\xedPC\xfc\x1275\xb5h\xee\xca\x07\x850\x8a\x0c\xaf\n\xf5M\xf4Uy\x02n\xea\x90\x0d\x0b\x1f4k\xf4\xb8\x95=\xa5\xb2\xf8V\xaa\xdf\xa1B \xc5\x00\xb6\xcc\x1b\xd8k\xfc\\\x17Z\x84\x05\x86#h)\x0bo\xb1\x10Y\n\x16\xf0\xfc\x14\xb3\x14D\xee\x82\xa7\xfc^\xc6\x8d\x93\xd3\x0eDn\xe1.<\xef\x04X\xe4-\x18\x8d\x0c\xea(\xb4\xf3\x91\xa5\xac<\xccP\xc2Q\xe3\x8c\\\xf8\x90\xbb\x89\x94\x02E\xc3\x8f\xbc\xb47\xd3\xfc\xa0\x93\xa6xH\xb4\xb0\x91\x10Tj\x03\x18F\xd4\x9aDo\x96\x14\x8fHa\n\xc2\xc4\xeeA\n\x12]\xa5\xbcx`R\x82\xeeA5\x07\x8b\xd6\xad\xf3\x8b\xb0P\xcc\x9f\xc8\x97\xf2]6'\xaec\xcb\x99\x92ah\x01\xdbx\xb4\xb0\xb8]\x029\x0b\xfb\xcd\x1d\x858\x82g\xcau\x16#\x9bX\xf1w\xb7u\xa1\x90.\xb1!v0\xfdp\xaai\xe5\xc4c\x96\xa8\xa0\xcb\x9aJNY\xe4\xb8i\xe3\xc3\x08u\xfa?V\x1f1x\xe9Zf\x86\x176\x0e\xe6a\x19b\x98\xc2S\x18\x8d2\xf8W\x982s\x07l-(\x96\xf1\xa2t1\x04\x05\x17\xbf\x08\xafkN\xe1\x95\x06m\xd5\x83\x17dW\x05\xc9o\xd0R\xca\xbcx\xd12\xcc\xc3\xa8$\xf9\x8fa\x19\xb6\x82\xfe\xb3V,\x16\xeb\xbd\xf4\x02}X\x9a\x17\x0cai&X\x99\x94{F|(/P\xec\xc0\x15\x94\xa8\xbde\x04\xb0iq\x86\x88\xc5\x1e|3\x1c\xb6^\xe3v\xe4$$p\xec\xaa\xb0&\xc1\xb4\xe4\xf6f\xf6B\xe9\xe8D\xdcO\xdaM\x9d.\xa8C\x8cj\x1c\xca\xdb\xaa\xc4\x84|\xef\xd9\x8e7~\xb1\xb1\xdbze\xbf\x95\xc6\xa6\xffL\xae\xfe#.;:\xb0Th\x1f%\x1bH1\xdf\xa8\xde\xe0\xbb\x80\x8c_\xee\xea\xa2\n\x00\x16\xb8\xd5\xd8lA\xcaO\xf1\x8ad\x15J;\x0c\xdb!U\x182\x80\xa6\xba\xcb\x0e\xfb\xd8<\x98\x96T\xeeA\xba\xb2\x83\xe8\xcaoBeY3h\x9a\xb2f\xaay1\xa7l\\\xfb\xd3}\xfe\xef\xc1\xc6y1;F'\xd2S\x1e\x9a\x92\x8d\xa1\x86\x8f\xa7'P\xc3\x0e\xe7\xdda\x87\xd5X\xe9\x96|WV\xc8 \x84t\xed\x0e\x92,\xc2\xc3~\xdcJaF\x9fe\\\x94Y~g~\x99\xadI\xaa\xb2\x7f\x86J\x98\xf2\xab\xb7\xd6\xeb8\xd1+\xd9\xe6\x0b\xe2\x86K\xf1\x82\x9b3\x7f\x8b\xc9\xcal\x89\xfa\xccV\x1cta\xd8wmxr\xc3\x1dFm\xda\xb8\xb4C\xc5\x9b\xd7\xf1\xde\x0c\x82P\xab=Im\x08\x13\xf3\xb0Ih\x15$\x82B\xbb3\x87\xae\x95\xe3\x83\xf3C\x92]\xd1\x7f_g\xf9\x8a\"=\xe7\xc2;\x01\x16\x16\x13\x13\xf3U\x08\xc0]\xcf\x0b\xe6YJ\x90\xc4E\x8dE\x07\x92\x13z\x97\x98\xe5\x10\xb4\x93\x1f!\xc4)_3\xc693;QV2\x0b/\x86`5,\x91\x0d>\xec\x0b<f:\xa4\xb6O\xe7\x03\xa0 Ub[\xccn\xb3\x1d\x96\xef\xb0\n\xf8a\x91\xfe\xb6\x98\xcc\xf4u\x07\x82\xd2\x12$s;\xc3\x01\x98\xd7A=\xed\x9d\xab\xa2\xc6#\xb2r\xf8`\"\xbc\x05\xa8\x1e\x1e\x14\xf4\xc0\x02ey\x10K\xe7o\x8e\x17\x98r\x84\xb9c\xca\x83\xb1ZCB\x8f\x8b\xccTp\xcaR\xea\xa1\xe1<O#\x86\x8a\xe8:\xf3N3\x99!S\xe9C#-\xf7T\x9e\xfc\xc1\x92\xc2}\xaa\x87\x0bgA\x80\xa7\xe6\x00\xe0\xbbzm&\x80\x98\xb6Zg^\xbbGz\xe4\xe1\x05\x1f\x8b\x1e\xb2\x9a\xb9\xd6\x1ex\xae\x13\x97$\x0f1\xdb\x86ZcM\xaf\x8d;\xbb\x08>\x93;\x8c\xee\xe0P`\xe0\xd0k\xcb\x0b]=\xc9@\xaf;\xbb$\x1eW\xcf\\\x9f\xb8@h\xd6\xe7>\xdc\xf8p\xe7\xc3\xb5\xde|\x81y\x0f}\x98\x1b\xdc\x92W>\\\xfap\xe5\xc3m/\xbb\x08\x82\x83Z\x83\x08\xb6\xfa\xa2\xc6\x05/\x8c\xf1 \xe8#\xc2\x15v2\x00\x18\xef\x8fe\xec1\x87\xe0k*1C\x8a\x8ej\xd0\xacf/\xfbi\xf8\x86R8i\xad\xdd\xea\xfc\xca\xe2\xfce,\xdddD\xc3Gb\x00vmt\xf9\x05\xbd\xa5G\xe0\xc0\x1bq\xa0\xdb\x95\xce\xe1\xb4^[\n&n\xdaU^Y\xd0\xf1\x0bT\xca5\x82\xedV\x85\xf7p\n/f fNz1s\xfe\xed\xdf\xea\x8b\x85E\xe8\xfc\xf1bvcH\x1a\xfd+\x05\x86L\xdfxc\xe00?S\"\x00\xce\xe0\x1c\xce\xe0\xd6uHZ\xe61)\x10\xa2\xfd\n\xf6\xd4uoX2\xb7<\xbc\xc3\xa9\"\xa2z\x11\xf0\xafio\xef\xdb\x14\xd1\x1bD\xc5W\xf4\x96\xb8o\x18\x19\x8e\"\x0e\xcf\xf3P\xea\xae\x8b\ni\xf5+\xa6>G\xcfj\xf7\xca\x87/>%\x11(\xba\xa5<\x85\x89\xed\xb8\xe2\xabT\xd1\xea\x89\x0fK\xcf\xf3\xe1\x9c\xb6\xf0\x1e\xe1\x8c\xd8 \xec1H\xc3\x15\x93\xad\xbf\xe2x\xfc\xd7\x81P\xe6\xbd\xd5\x9f\xcb\xe3n\xf1[L\xf7\x8bW}\xeb\x15\xdb 1\xb4\x178\xb4_=\x1f\xc2\x19\xa1\x94\xc9\xaf\xf4\xaf/\xf4\xaf\xa5\x0f7f\x11\xdf\xcaj4\xc1\xe6t\x8c\x9bHw\xed\xd6\x15\xd3\xb4\xc8\x14(\x988\x86\xbb\xa6\xba)\xd3\x97x\xf8\xae\x1e\x83A\xb1\xe8\x9bl3A\x90\x89\x97\x14\xc2\xad<\xc0\x7f_\xd0\xa9gt\xea\x97>\xacf\x97\xa6\xf0\xa2,|\x91\x1b\x07\x1f`\x04q\xf0\x1a\xbe\x07wM\xbf{\xe5!\xfc]\x99c\x11\xad\xea\xc2A8\xf7FJH9\xb5\xd0\x0f]\xdfC\x1d\xa7\xa7\xd4\xd2\xe4\xda\x08{\x01\xc1\x8d\xba\xb9\xae\x08\xb3:\xcc\xeb4\xd2\x12}7,\xae\x05\xe4\xb5\x17\xbe+ mk\x0c\x1d\xd6\x81`\x1c\x06\xfd`\xa3\x91X\xe2\xd6\x9aF\xd2\xe30n\x1c\x8c\xd5\x1f\xb9+\xce\xca\x10\xf4S\xf7\xc64\x08DV\x1fX\x9a\x1etb\xe5\x93\xb9\x95\xba\x93}\x16\xa54u\xa7G\x9e]B\xccG\xf3\x14\xb6N-\xcaT\x91\xda{\x1e\xdf8\x9e\x0fN\xf8\xf5j\xd4\xa7m \xa1\xce\xdc\x0b\xc2f\xf2\x1b\x92\xfbS35|\xf4?3\xdd\xa2\xaa\xf6\x9bn\x9a\x19\xa8\x95s\x98\xab\xf1\xcc\xf9A\xa6\x93}\xcf\xdd\xd2)uc&\xf9\xbeu\xb1\xc7\xfa\x0cyB\xc76\")\xda @\x813\x163\x8d\xec\xe5\x9a\xb58\x85\xd0\x83\x94\x1e\xde\x8a\xed_\x88K\xb1\xbd\x0d\x11\x13^\xeb\xc1\x0d\xb8\xf3\"i\xc2\xe7\x16'\x1e\xff\x8e\x12p\xb3b4b\xf1}\xdd\xff\xca\xdc\x08[\xbb\xbfoZ3#\x97h\xb3M\xed\xdd\x9f}s\xaa\xe8\xcel\xfe\x95A\x93\xda\xc5\xf7\x06\xd7\xa4\x94\xb2d\xabV\"\x96c]\x8a\xbd\xe3y+\x91\xc5\x9de\x176\xf9\xae\x9ae\x8b\xf33\x8dW\x85\xf2\xf6L\xfd-\xd1x\xc7\xeag\x9c!?\x83J\x97\xe4n\xb8\xf8\x87\xe6\xc5o%\xe4no\xc5?s\x14\xd7\x03\xee\xcbu\xf8?;G\xb1\xf5\xec\x98\x12/\xfd\xcf\xcd\xa5\xdf\xb9\xcd\xbc\xb7\xf6.+\x16\x8b\xee\x04\xb6\xc1\x04\xd5\xb5<\xb6\xee\xd4RO\xd8,\xd1:{\x96:\xe6\x8c\xb7\x9b\xeda\x9f4m\xb2{\xd0N@\xbf\xfb\xf4\x9f \xe8\xa5\xe7\x7f@\x02\xfa}sR\xc4\x01\x19q-\xe7\xbf\xae`\xb3\x9f\xa4}\xf3@\xe6\xcd\xbe\xc7\x14.\x99y\xe6\x82g\x016\xbf\xa5TOhu\x14\xe1c*DJ\x9c\x82ns\x84 \xd6x6s\x8e\x03\x8e\xc1\xc5\x08\xdb\x98D\xf1e6'/J\xb7\xf0<x\x06\xfb\xfb\xd3\xa3\x03\xe4\xb7\xe19\xec\x1f\xecN\x8eXC#\x1e\x1f;\xaa]\xa0\xd4\x8fi\x05\xd6\xc0\xc1\xee\x14;\xafh\x03Ow\xf7vy\xff\xa1\xc8\xd8Xx\x08\xb5\x8fy)\x0b\x16Y\xf8\xd8\xc9\x94\xbe\xab`\x8773\xa2\xe3\xdc\xe1\x83z\xf6\x0c&c\x0fFp\xb0\xbf\xbf{\xf0\xfb^v3\xb7`1s3\xe7c\x9c\xe8\xc9\x97y\xfe<]y\xcai\xf8\x96\xa0=\xe2'S'\xbc\x99\xe8|\xdaJ\xda\xc7\xa3R\xfeStnx\xfe):\x97\x9f\x7f\x8a\xce\xf1\xf9\xa7\xe8\xfc\x9f\xa2\xf3\x7f\x8a\xce\x7f7\xd1\xb9U\n91V\xb7K\xeeZ\x9aiN\xb3\xedM:5\xf8\x0c\xcb\x0d\x91_\xf0L9=\xf3\xd9\x8c\xa6D\x93\xf3U\xf8\xa5M0\xb07q:\x00AZ\xc6\xcbi\xec\x12\xe9\xad1\xcb{\x05#:\xc2\xb1\xc72\x8c+\xb1\x876\xdb\x1eG\x92\xb6\xf8\x9a\xc9}\\H\xa2!\xdfd\x1c\xe1\x97\xd9OY\x14&\xdc\xa7\xdb\x17\x12\x13\x1f\xaf\xc6\xfb\x85#,\x1f|gS\xca\xbd\x91\xd4\x9aW\x0e\xef\x7f^W\xe2\xf2\xd5\xcd:\x99\x98\xe9\xbe\x03\x9d\x06\xcbjZ\x0b\xd3\x16\xd2;\xff\x88\xed\xe4\xa2\xcf\x8a\xef\xa6,\xe7\xea\x13\xe0`\xf4\xd5\xfa7\xb33\xce\xdd\xca\x9be\x98\xca\x82\xa0G@\xdaw\x06L\xebPG\x8cd3\xd7i[F\xc4N-T\xecdO\xa7J\xb9\xfd\x87~E\x16Fq %a\x17\x14\x17E\xa4(\xda\xb4\xebB\xf5\xe1Q\xde#\xa1\xca\x92}[j\xa0k`\xf0\x96\x14ExM^.\xc34%\x89Z\xe3\x06k\xfc\x18\x17\xeb\xb0\x8c\x96\xea\xbb\xbb\xb6\x14\xfa\x9a\xe5fQ\xcaV}\x98L\xd8+\x8eJc\xa2\x06\x8ar\xae5O\x17\xbc\xe86\x1c\xc4\x8c\xf8\xae\xadd,O\xb6r\xcd\x92\xd9\x99L\xd0\x95\x12m:\x97\xbd\xd4\xf5\x8a\xa3d4\x00\xd7\x90r3\"\xc4\xc7\xcc\"~\xdd\xd9dm#\xc8Bb1\xf1\xfb\xe4\xa4\x9d4\xe89\x9a\xdes[\xf4\xc6c&\x1d\x8d,Yg\xaeg\xa3\xd1\xddE\xdf\xf6\x84\x96Xg<I\xf9\xebf\xe0\xed\xc0\x9e>\xe4\xee\x9d\xe7\xc3\xdd\x1f\xa4\xa2e\xe7t\xa5\xdd\x91?r\xf8\x15\xc0!\xa4\xee\xde\xc4s\x13\x0f-i\xbb\x1aK\x1a\xd7\xcb\n\x83\xf4\xfa0\x91\xcc\xae\x1f(eI\xf7\xe1&H\xb3\xdb\xde\xd6\xb0\x96\xb5\xa19\x86\xce\x16\x06\x99\x94\xa2\x9c{\x01\x05zS\x1fb\xfcc\x12d\xe9\x8a]68\xa5\xd4\x07\xc6\xcap\xb3`\x9d\x15%\xbf\x85\x08h&\x18\x81i\x11\x84\xf39&\x1a\x94Se\x197Cj\x00\xc9\xbcE\x10\xafh\x8f\xe7Q\x1e\xaf\xcb\x82\x8e\xac{j\x0by\x0c\xdc\xa1\xdc\x07\xe7{)\xac\x17\x85\x94\xad\x11\xb9\x0e\x9f\x90\x83\xe4\xd4\x16\x1b9\xed\xcb\xc9\xd2\x9c\x84\xf3\xbb\xa2\x0cK\x12-\xc3\xf4\x9a [\x1d\xb9N\x81\xa3r\xbcNK\xf5\"\x08\xd7k\x92\xce_.\xe3d\xeeJ_yA\xbb\xe5\xbe3,\x123\xb1\xc6J\x16MY\xdcS\xab2\xb9\xd3\x94Q\xb2\xa0oN\x84bG\x8f\x99>%\xc4\xd7\xfa\xfe\x18\xd6\x1af\xa0\xb0\xfa\x18\x9a\xecC\x9b\xd1)\xf6\xc1\x9a\x95\x0fVy5},\xce\xf5\xf4\xb996{\xee\xa8\xeb\xd8i\xd7\xda\xdb\xb5\xc5\x04\x9bv\xdd\xd7q\xcf\xeamJ\xe9\xb4\x0c29\xa53\x1ed\xed\xa2O\xbe1u\x89]\xe6YH\x14\xe5\x1e\xea\x9bl\x9e\x857<\xb6U\x16,ZQ\xc4\x05!\x8c9\xc5sRd\xc9\x0d\xf10\x9c-F\xb1[\xc5\x05y\xec\xc2\xb4V\x80-\xcc\x9e\x9d\x04\\\xd1\xad\xef'\x00M\xd4\x9f\xd9\x99\xb2\x0en&9\x963O+N\xdemmQ\x02\xcf\xf9H\xae_}Y#h\x8c\x15\x0f\x9bAS\xb6\xdf\xd6\xda5#u\xa7\x87:A\xd7\xb8v(\xf2\xffA]\xca\x12V\xe3*\xeb\x9dq\x03\x84\xa3\xde\xc5\xb5Q\xd7\x88\xa1\x02\xae\x1b\xc6\xa46\x1eW\x8f\xb12J\x16\xb5\xaeX\x85\x84\x9d\xba5\x15\xcf\xfb\xcb\xb2A\xb9yp\x0e#\xc8\x91Y\xce\xba\xf5\xbc\xf4\x90(\x85\x98\xbf\x9dk*}9|\xd4\xa054\xcb\xae\x89\xecr#\xc2\xb5\xf3}\xec[(\x14\x8e\xba\x8a2\x9d\xd8B\xa9\xf0\x80\x84\x14\x97@\x08Q\x12\x16\x05\x84\x85\xe2%\xfb\xbbLG\x93\xd2\x0bO\xa4\xc9\xbe\xe9\xc4|{W$\xe3Z\xb6\xc8\n\xfe\x02J\xab^\xbc&oS\x96\x1a<\xc5\x18]\\\x9d\x03\xe9h\xd4E\xe8\xe7h\x89\x92Z\x08\xfd<h\x14\xaf\x98\xacL\xfa\x89!\xd7X\xcc\x90F\xeb\xca\x8f \x13Z!\xb5\xc2\xf2\x10\xe5j\xd2\x05\xcf\xd7\x1duJ\xda\xd2grg\xb4\xcd\xb3\xa1'\xb0\xa8\xcc,\x16\x81\xb5\x9er{\x1bJ\x8c\x11\\G\xeeH\x85\xac\xaf\xc4\x10n\x94\x10\xb7\xf49\xd0'd \xd49\xde\xaf\x01\x84_y\xea\xc7&C\xad\xff\xa6So\x85 \x8a7\xfdG\xb2 9I#\x017(\x15\n\xcb\xb0H\xbf+\xe1\x8a\x90\x14\xe24.\xe30\x89\x0b2\x87\x1d(\xaa5\xc9]O\xa9\x81\xb6\x19\xad\xf8\x95\xfc`l\xe1\xa1\xae]C\x11C\xca\xe6\xb4p\x06\xb2\x1b\xdd\xb1~\x86\xdbf![\x8a\xc73\xc6W\xdblOe\xe4\xa6KM\xb8\xb1\xe1\x9e'\xbc\xe8\x1dv\xe7\x1d\xc6\xeb\xb1\xa3-O\x95\x04\x0b\xc5$K\x12\x07\xbc\x0bW\xe4\xbfE\xaey\xa0\x9fxn\x85f\xf2\xfe4\x18\x0f2\x01\xd2\xa1.\xf9a\x02\xa4\x96\x85\x1b\x97\x1fMu\xa5id[\x86\x1f \xe3\x91dY\x19[5f\xe5\xca\x13\xa8\xf5\x1d\xdb\x92\xe5\xe4\xf7\x98AE\xe5\x12\xae\xeb(\xbcn>\"\xd2\x84\xac\xa0s\x01\x0f\xad\xaeB\xf6\x89\xe4\x95\xbd\x95\x07\x0b\xce\x97\xb1\x80J\xe5\x8c\\l\xb8_\x8f\x03%8WJY\x1d\xea\x1a\xdf\x98\xbf\xda\x1dO\xf5W\x19\x7fE\xe1\x8f\x9c\x86\xb0F|\x86\xdc\xa4\xb5\x89 \x0b\xd4,\x83\xa5\xb2\x1b,iA5\xfe\xd0\xfek#\xf8d\xb9\xea\";\xc1\x163\xc27\x12=\xe7\x14:\x01\xf9\xb2\xceIQ`\xd6\xa4\xaa(\x81\xc4\xe5\x92\xe4p\xc5c\xccf\xb9D\x05\xb1`\xcd\x0e\x8c6\x86J\x1a\xb8\x935s\xccc6\x96\xaa3\x8eJ\xc2\x8d\xed\xe5\x94\xd8-\xd3jC\xa7\xf5\x0d\x0c\x08@\x07\xaa\x91\x96\x85\x95\xd5\xcc\xbd\x0c1,\xd4\xdd\xc6\xfb\xc8\xa8\x11\xb1\xc7g8\xfd\\\xa1CD\xb2\xa1K\\\x83\xcbKJ!}\x93\xfb\xa3\x1aX\xef\x8e\xbfM\xfc\xa4\x03\x93}`\xea\xee\x99\xedz'-\xc5\x12zMS\xe09f\xe1\x07\x0e&\x9eb\x906e\xe5\xbb\xe3\x03\xe3\xf5\x0cMc\x06a\x97\xb6\xce\xb3u\xd1\x845\xa4\x98\xaa\xe4\x01HyIN\x16\x05K\x0d\xc5B\xcc\xad\xe7a\x89\xf9\x0f0Nr&\xad{\xbb\xef\xe2\xef\xd8w\xa4\xba\xdd\x87r\xf4\xa9\xe2# \xa3\xf2e\xb6Zg)\xc1\xbc7\xbf=\xf8J\x95\x82\x94\"EY'\x90\x91\x88\x11%n\xa69\xf4\x90\x04x\xd8\x8f\xdcu\x0e\xf7\xeb\xec\xef|~\x01I\xffZ\x91\x8a\x9c\xf31\xd4V\x15\xbe\x94\x87^\xab\xfb\x92\x87\xa2\x15\x11\x9d|p\xc4\x14T\x01\xa7<\xc9E\x96G\xe4gl\xa8[\xb6f\xe8\xf0u\xf3\xad\x906\x96\x03\x07W\xfa\xe0H]\xab\xe3\x8b\x14\xd8\x17\xcap\xaeP^Qp\x1d)\x85\xaa\x94 \n\x1fb\xb7\x90\x1b\x90Z\xf3\xd4/\xe3\xe2C\x95\x93\xd6\xa9\xe0 D,\x8cB]\xf3\x18B\xf5\xca\xd2\xc6\xa4\xb7\xc5\xb7\x00N\xa9{ ;\xaf\x0b\xf8\xa2\xe1\xbc\xe2mV\xa5%\x99\xf7\xc5\x0d\x14\x14\xb5fc\xa9NC\xdb\xbe6ae\xae/\x1d\x0dm\x18\xe6\xfa\x1f\xc9: #\x16\xa0ph\x1f\xe2n\x18\xea7\x8bm\x86\xec\xf9\xe3\xf7@,\xba\x1c\xac\xfe\x1b7\xfd\xdb\xb7\x1f\xb5\xfd\x04GU\x9e\xe3 \xdd\xdcu\xa2{\x16\xc3\xb2\x9a,\x98#H\xf3\xcburz\x05\x03\xc2\xd4\xf8\x0e\xfa\xdb\x1c\x8c'\xe3\xdd\xdfuQ\x9c\xf3W/?\xbe\xfat\xf9\xe3\xfb\xcbw\xef?]~xq~~\xf9\xe9\xdf\xdf\x9c_\xbe\xffx\xf9\x97\xf7?_\xfe\xf9\xcdO?]\xfe\xf0\xea\xf2\xf5\x9b\x8f\xaf~t\x86\xf4\xa9Q\x12\xd3\x897L*\xd1\x17!\xafu\x97\xcd~z\x14\xfc7T\xb7\xd1I\x8f\xd3\x7f\xba17\xa6\xbb\xba&\x14\n\xae\xb2\xf4\xd5\x97\x92\xa4\x94\xf8-0\xca\xf85)\xb5\x12RD\xe1\x9a\xfcH\xc8\xfa\xa78\xfd\xfc!\xc4\xa4\xcb\x84;\xbb\xb5\x8a\x8be\x98$\xd9\xed\xab\xbfVa\xf2\x1f\xe4\xae\xe0i\x05\xe3d.\x82\xbe\xb0jY^\xb2\xccz$\xb8*3^H\xf28L\xe2\xbf\x91s\x12\xe6\x11ko\x1d\xe6\x85\xfc\xfb\x9a\x94\xe7\xe1j\x9d\x90\xf3hIV\xec;L\xd1\x10\x96\xe4C\x98\x87+\xad\xa4,I\x9e*eo\xe3\xf4'\x91;Z*\x0d\xbf\x18J\xffX\xc5s\xa5\xe0\xc7\xb0$\x9f\xe2\x15Q\n\x99%\x8cR\xf4C\x96%$T;~\x1d'\xeawo\xd2\x92\\#\xad\xd3\x94\xbd\xabVWZ\xd1\xdb8\x8dW\xd5J\x1fn]Fi\xac\x97K\x12}\xe6\xdf\xad\xc8*\x8b\xff\xc6\xba\x8a\x8b7\xabU%\x84~\xa6\xd0>\xe2:_Q\xd6p\xfa\xd4d\xbd\x1e\xd7\xaf\x8fL\xaf3\xfe\xfap\xcf\xf4\xb6\x12\x1f\xef\xee\x9a^\x87\xf5kc\xd7\x05\x7f\xcd9S\xf9\x15\x9d\xdc\xff=\x7f\xff\x8e\xeb\x00\xfa\xec\x19\xec\x9eK\xc2*\x816\xc6\xce\x9b1\xb9-p~\x93\x85\xa4kb\x97\x0d\x11P\x15*+X+\xc6Z\x9d\xf4\xa4\x93\xb2\xa1\xf4:\xedD\xbc\xb8\xeb] \xde\xc8+\x17C\xd6|qy\xe4\x9a2\xfb\xbf\xe7.\xb2]\xaa\xdfj\xdd\xc3\xff\xcf\xde\x9fw\xb7\x8d#\x0f\xa3\xf0\xff\xcf\xa7(\xeb\xc9/C\xb6i\xc5r\x96N\x9c(\x9et\xe2\xa4\xdd\xd9z\xb2\xf42\x8a\xc6\x87\x96 \x8b\x1d\x89TH\xd0\xb62\xf2\xfb\xd9\xdf\x83\x02@\x82$\x00\x82\x8e\xbbg~\xf7^\x9e\xd3\x1d\x8b\x0b\x96B\xa1P{\x85i\x1a\xae;t@E\xb3\xe8\xd8\xaa\xfe\x8d\xbd\xbc\xf70@v4nv4K\x93\xe5O\xef\xdf\xa6S\x92\x125\xef7PO\xab|g\xabr\xe1\x11c*S(VN\xb1\x84,\xe5\x92\xf4\xd9\xbe\xb4}Z\xc0\x8b\x94\x19x\xa3\x8c\xcf\x04oM\x8a\xa6\xde\x93/\x1e\xf1\xfb\xcbp\xe5Q\xccd\x1fe\x14g[\xbe\"\xa6\xf5:\\\x95oB#\xc6 +;D\xf1\xf4C\xe2$\xa2\x80b\x16\xab\x1b\xb8\xa0jV\x0d\x159\xdb\xef\xcf\xa2\x05%J<\xa3\xb1 \x91hA\xefD\xa3\x8d\xf9\xf3\xd9i\x7f\x18N\xe6e\xeb\xc6\x1c\x01\xd2*0J\xc7h\x0dM\xc78{O\xe4^\xd7X#\x9a%\xfe\x18\xc8\xe2$]\xe2 \xc2qn\x08\xef\x03\xa4\x13\xcfcW\xa4m\xc9\xe8\\\xf4\x14e\x05\xdd9\x14}\xe4X\xfd\xf8\x9a{\x91\x13qj\xb6\x8a\x9bu\x97\x10A%^\x87+\x17t2\xa2LJ\xa6\xf9D)\xf2g\xcb\xfdP]W\xe2\xb1\x95\xe5\xa6\x9df&\xd8\xcb\xa0\x12\xd1\x08\xca\x90\xdfa\x97\x7f\xd9\xa8\xcfD=\xabr\xbc\x06\xcb\x9cP\xf7Z\x0f\x84\xa8\xed@\x88D\xa5\xa7\xdd\x00\xf2\xf2n\x1c@\xd4 L\xd9:\xa3d\xf9a\x9e\xc7\x9f_G\xd3\xe9\x82\x9c\x87\xa9]\xe4\x07\x9d\xe5\xce\x04\x13\xd2\x9fJ\xf7I\xc1\x85\xe9K*@\x97Fu/7\xf4H\x86\x0f\x8cyKc\x8fz\xe8\xbfE<C\xb2\x13\x00]\xa0\x8a\xfe\xae\xe6\x1c\x14k\xc4\x00\x90gO\x93i;\x94%\x87\x81\xae\xeb\xec\x8c\xd0 \x94<\x7fPE\x16Fq\xe6\x9d\xb3\xb3\xe5\x1c\x13\xf3\xd6\xc9\xb41vI\x02gO \xa2(\xaa2\xda\xd5\x12h\xc6\x85{\xec\x10H\xb3\xba+\xd4\xa5Xfv\x82\xb9l<\xb4\x14\x96\xa7\x1c\x06\xf6\x9c,\x90\x01\x15\x7f\xaa\xf9\xd4\xcb\x17\xf9 \xd9\x04\x87<\xcd\xd0:t\x14{\x9ac\x970\xf6\x81\xe8\x02\x1f\xb4\xbd\xf4\xa3\x0c;\x8be|y}\x10\xcd\xf9\xcf\xa3\xd3\xf9\":\x9d\xb7s\x97r\x85\x9b\x9e\xec\xf2\x92\xa6T\xb9B=\xfd+\xb4O\xc9\x05}\x9a\xc4\x94\xc4\xb4\xf4\x89\xbdKn\x97\x89\x84\xd4W\x8c\x93o\xc7\x95\xd2g!P\xbc\xc3y8k\xa5\x8f@\xa4\xea\xe0A\xaa\xa3\xdd1Og?\x08\xd0\xaf\x9b\xf6\xa38&\xe9\x8f\x1f^\xbfbrv/@\x97\xee\xdd\x87\\5\xce\x1d}W\xf0\x08\xbeG2\xf9\xe9\x13\xf7}\x15\xb5\xd1f\xd6\xaa\xe2\x0c \xac\xa7\x89\xecz{;\x1b\x07(p,J\xd8\x0c\x02\xd8\xc2|\x16+x\x0c\xf7y/\x9c*\xe0\xdd\xd1\xadO\xefo\xf5)\xc9\xa87\xf3\x03\xf66\xfb\xe0\xd6\xe8\xc6\xa7\xf3\xb1r\xdf\xeb\xdd\x12#\xdbl\x8a\x06xn\x91$\x80\xbf\xf5\xfe\x06\xb2\x88w\x12@\xefo=\xf5g8\xca`\x07\xee\x8ca\x1bR\xd8f3\x1eBog\xe7\xd3\xc5m\x82\xb5\xe4\xe4\xad\xefn\xf5\xc6\xa3\x95!\xd5\xa8\xbcpYP\x85\xe2\xd1\x8a\xf7h\xae\xc8\xdd2\xc9L/[\x85q\xcf\xc7d\xc5O(M\xa3\x93\x9c\x12\xaf\x97\xd15\xea\x04F\xbdI\xb2H\xd2}\xf8\xbfw\xef\xde}\x08\xb3$\xa6;\xe7\x84a\xf4>\x9c$\x8b\xe9\xc3\x1e/_\x8f\xff\xa9\xaf\xe2\xbd\xf1h\x05\x07\xb8v\xb7\xe1\x00\xf6`\x1f!|\x0f\x0e\xe0\x8e\xf8\x9b\xdd\xbf\x0d\xfb\xb0}\xeb_^\xe8\x9dd4\x0d't\xb3\x88\xc2l\x13O7\xd2y{\xc3\xf6\xec&\xf3\x96\x9b\x8c\xa4\xd4?\xd8\xe44\xf17'^\x98\x91\x0d9\x8d\xe2M\x92,<\x12\xc6\xfe\xc1&%\xe1\xe7\xcd\x9a\x12\x7f3\xc1\xc7\xec\xc0\xd9\xcc\xc3t\x83\xf2\xedt\xb3\x08\xb3l\xb3Hb\xb2I\x96\xab\xc5&\x893\xbaIb\x1a\xc59\xf17S\xe2\x9d\xe4\xa7\xa7$\xddL\xa2e\xb8\xd8L\x16aJ63\x8f\xed\xf1\x0dI\xfd\x83M\x14Gt\xb3\xf0\xc8iH\xc9\x86P\xe2\x1f\xf8\x9bi\xb2\x99&\xf9\xc9\x82l\x887\x99'\x9bEv\x10\xcd6\x8b\x8cx\xd1\xcc?`\xf3\x88\xb3<%\x9b8_n\xceHL7\x17\xde\x84\xac\xe8\x86L6+\x0fS4o\x92\x94\xfa\x1bJ\xbcx\x9amPs\xb2Ic\xdf\xf7Y\xd7\x8b\x05\x9d\xa7I~:\xdf\x84\x8b\x8cl\xb0l\xf9b\xcd\x86r\xc1\xa6\x93\x84\xeck\x8f\x84\x939\x9b}D\x18\xd8\x92\xe5&\x8f'\x1e\xdb\xbdl\x80\xa7\x8b\xe4$\\lN\x13\x9alN\xf30\x9dn\"o\xb6Y\xae<\x8e\x03\xd9F\x19D\xecEt3Y\xe4S\xe2\x1d'\xf1\x84\xf8\x07\x9bE\xc4\xa0\x95\xd3\x8d\x14}6\xd4#\xe9,\x9c\x90\x0dI\xe3p\xe1\x1f\xf8\x07\x9b\xcc\xdf,\xbcpy2\x0d7\x84n\x92\xc9\xe7M\x12\x9f\xfa\x9b\xa5\x17M\xd2\x04I\xe0\x06\xf5L\x1b\xaeK\xf07o\xc27\x9b\xd8\x0b\x97$[\xb1\x96B\x1a\x9d\x91\x0d\xb9\xa0\x1br\xbe\x89\x16\x9b\x84n\xf2\xc5\xc2\xdf$\x1e\xb2E\x9b\x15\x8f\xaf\xdc\xa4\x9b\x9cn\xceH\x9aFS\xe2oV^8\xf9\x1c\x9e\x92M\x98\x86\xcbl\x93Fgl]\xd2\x84\x92 %\x0c\x104\x99$\x8bM~\xb2\x88&\xfe&\xf5\xc2\x88a\x8c\x17N\x93x\xb1f\x0b7\xdb\x9cF\x19%\xe9fEB\xba\xf9\x92Gi9\xefl\x92\x93\x0d\xd7\xb3mh\xba\xde0\xaa\xe8\xfb\x9b\xcc;Y\xb3\xc5\x0f\x17d\xba!\x8b\xd9f\x9e\xa4t\x13\x9d\xc6d\xba\x89\xbe\"xB\x1aM6\xa8\xd3\xd9\xa0\xa9a\x93\x9fp\x97\x84M\xbe\"\xe9f\x1dO\xe6i\x12G_\xc9t\x83\xb1\xc4>\x83\xe8r\xb5`\x83\x9f\x93x3\x8f\xb2\xcd<M\xce\xb3\x83M\x1a\xc6Y\xc4\x90&\xcd\xc9&]o\xd6+\xe2\x85\xb8?\xa6d\xb6\x89\xa6\x9b8\\\x92M2\xf3\xfdM\xee\xc5\xdeD\xa0\xf9\x94\xcc<\xc6.2<I\xe2\xcd\x82d\xd9&\xe3c\xa4\xd1\xc2\xdfdd\x93El\x81\xce\xbc0\xddD)\xcd\xc3\xc5&\x89\xa6\x9bd\x11R&\xcen\xce\xbd\xc9<L\x8f)\x1f\x10I\xc9f\x1e-\xc8&\xa2s\x7fs\x91\xa4\x9buD\x16S\xff\x86 \x80X\xd6jw\xec\x07\xbc\xd2IArH\xbdn\xc5\x02\x8b\xabGH\xd2o\xde\x14t\x9d\xd1\x88}v~,\x94\x03`0x\x08[\xa3A\x00\xb7F\x9fn\xfd\xfbr\xe4}\xda\xd9\xfen\xf8\xe8\xf1\xfe\xc3\xcd\xa7O\xfd\xe0`\xeb\xe6\xdf\xff\x7f*\xfd\xbd5\xfa4\xf6\xab7j\x14Z\x10\xe8\x19\xeb8\x82G\xb0\x87\xa4\xfe\x11Z\xdf\xe2\x82D\xcf\n\xea<c\xc7\xd46L`\x1b \xf46\x0c\xc6\xc5\x9f{c$\xc8\x9f.nO\xb6vvz\xf2Mv\xef\xd6w\xd5\x9f\xb7\x18-\xfc\xbf\xbc\xc5\xf1hgg5~h\x90\x07\x00#\x9d\xb6\x870se.\xb52\xda2\\}Hj|\x97I\xf5!\xd9$M\x18\xcd\x00\xaa\xf5\xc6\xd4\xea3pP\xfd\xb9\x8f\xb1\xee\x1a\x96Dj\x075\xed\xef\x19\xdb\xdf\xab\xb6\xbf7\xae0[\xaf\xc3\x95\x8e\xe1\xab1\x90\xaf\xc3U?\xca\xb8\x96\x04\xdd\x1cI?\x8b\xbe\x92\x0e\x1cd\x95c\xe4y\xbd0\x9cn\x14\xebxFL\x82]\x16X\x1d(U%\x96$=%\x9eN\n<\x13us\xdbGs&\xf2\x94\xc7\xa3]\x8d\x9f\xe7\x99\xa8\xf0\xba\xa5\xc9\xbb\xce\x9e\xcd\x0c\xd5\x93\xd9\xb3\xc5\xb7\xe5l_\xf1P\xa6\xba\xc3\x8a\x8c>\xf7|L\xd1\xce\x06\x87\x11^\xf3z\x8a\xf6\xcc)E\xfb\x14\xab\xfc\xa2AB\xefGR\xbc\xdc\xf4\x86\x99\x06Pw\x06\xae_X\x8b\x8c1\xa6\xd6\xb7N\xf1\xadA\xcb[K\xc6\xd3z\xa7\x01\xc4\"\x83\xc9\x00K\xede\x84za\x00k[\x81\xe2&*H\xa1c\xc9\x84\x8e\\: .1\x19\n\x0fq[\xea\xb9A\x0d\xb1hM<?\x13\xe6\xec\xc5\x9f\x91x\x1e\xf3\x8a\xcc\x95\xc4\xf3\xf3\xebI<?\x93\xbeY\xfa\xba\xb9m\x129\x94\x12O\xa3\xea,\xe9\x93\x0b\xe4H\x9fG\x0b\xf2&\\\x92\xe7i\xb2\x142\xcd\xb3([%Y\xc4h\xeb\x8f$\x9c\x12{`\x19(\"\xde\xadY\xb4 \xec\xd8\x1e\xf6\xbc\xd1\xbf\x1e\x8e\xbf\xf3\x1f\x1e\xf4nE}rA&Z\xc3A\x91\x81\x8d;>U\xdb(\x9a([0\x11\xa7\xc2\x9b\x8d{\x87\x95\x84\xbe$U\xa3\x81\x86\xb8H%\\\xa3\x08J\x80\xf6\xb5l\x12.\x9e\x86\x19\x1b\xd6\x93\xea\x9d\xe7b\x90\xad\xa0\x91\xeaG\x8f\xf6Sn\xe8\xf7n}\xea\x8f\xfe\xd5\xbf5\xfe\xee\xc6-&J4K\x7f\x92~\x16\xc6\x11\x8d\xbe\x92\x8f\xe9\xa2\xb5\x87H\xad_\xabz\xdb0a\xadW\x8b7\xd2\xc9\xd6\x8abp\xa6\xf6\xeck\x8f\xe0SB\x9fL\x18\x97\xcf\xb0%M\x16\x8b(>}G\xb2U\x12g\xed\xd0\xa8\x9dd\xa5\xc2\xbf\x1fe\x8a\xf6_Q\x87\xb0\xa51i\x0c\xaa\xc7\x9e\xfe\xcdR\xbf4\x8b\xe2\xa9\xd7\xaa\xac\x91Wq\xc2e4Li\xf6kD\xe7^o\xafW\xe8#U\x15*\x83\x89\xd7\x9b\xf0\xdd\xc3\xad\xf6\xff\xbe\xf4K,lz\xfe\x01\x98+X\x15\xaa\x1d\xaf'\xba\xe8\x89\xc4\x9b\x1a;\x89\xa1\x8d\x14\x9d\xe64\xe3\xd27\xe2\x17\xca7a\xea*\xb3\xa4\xc5\"O\xa2Y+\xc7\x9aM\x9bx2%d\xb5X\xbf\xa7i\xb4zI\xd65~\xcd\x927\xecZX\xaab\x99[\x94\x81:\xa7L=\xb6ut\xbb\xafZ51\x99N]K\xb7\xd9\xa8\xe4\x8f\xf1q\xb1\xcd\xd4&5\xef5e\xf8\xbf\x19\xb05d\xb1\x86\xa3\x91\xc6\xe4dVh\xe3\x98b\xee\xa1\x17a=D\xd4*\x8a\xc8mv\x87 5<\xa1\x0c\x15o\xe8\xd3V_\x9aU\x90\x91\x86\xec!\x15s\xb1\xa3F\x86\xa2\xdd\xa6\x94\xe2\x80^)\x0c\xb9A-\xeb\xcdp\xddp\xa6\x18\xad\x16\xb4m\xc1)\xb7Z\x94\xd5\x8dMn\xf5P%\xbeU7_n\xdf\xd3T\x94+\x98\x9d6\x83d\x91o\xb1\xd9\x84iM\x18L\xc4g\x1a\xd2\x1f\xa3\x03\xc6\x87\xa4p\xeapX#\xfe\x8da\x8d\x94\xde\x8chR3\xfdU\xdfc\x9bb\"\xfd \xee5\xfc\xfa\xa1\xc8\xbaq\xfbN=<\x05D\xee\x0d\xf4\xb0\xb83\xd0}\xba\x92-\x7f\xbf\xab{</\x1e7\xa2\x06@\xe4\xde\xc0\xc6\xefk\xbd;\xce\xc4\xe3;\xfa\xbe\xd7\xe2\xf1\xf7Z\xcf\x91S\xeeC}\xa7\xee,\x0d\x82I\xc7a\xedi\xfb=\x16\x8f\xef\x0e\xbe\xaf\x044\x80\xea=|\xd2\xe2\xbd\xe0\x1a\xd8\x00\xe6\xe0\x06hZ\x90\x1aK{\x0eC(\x0e\xc1\xe6T.4~<\xed\xba\xfd\x86\x94\xac7\xc84\x07k\x02\xd6\xfbN\x86g\x01+5\xfb\x05\xb6nh\xfc\xd0\xee\xc0\xbaE\xad\x16V\x17ZeY\x03\xd5aj.?2\x81\xe1\x89u\xa4\xac\xdfU\xd9/\xfb\xb9p\x1fF\xd5\x8f\xab\x95\x89\xb3\xa8~\xba\xf1\x11#\x83@l`Rn\x1b\x1b\xbf]m\xfc6o\xdc\xca\x8bW\x8d\xf4\xa2\x0f\xe4>\xaa\x0f\x89\xaf\x16_e\x0f\xcf*\x07\x89\n-\xa3\x05\x19\xb3\x16\xf4\xa3\x18\xf5\xe3\x99\x17\x97\x0c\xb8N\xb7\x02\xaa'\x809:\xd7m\xa3\xc1\x01(\"A\x84A\x13\x11\x16Z5\xf2\\.hm\x8d\x95t\xf1<\xc0C\x9c\xe2\xa7Q\x93\x18p\xfe\xad\x9f%K\xd5s\xa2\x8d\xddd\xbd\xac\x95a\x8eb\xc6[\x8db\x8d\xdd\xeb\xb2\xbe%\x9a'\xdf[\x83\xdfc\xeb\xfe\x80\"\x10\xf01\x94\x02T\xef\x97p\x91\x13\x1e\xe8uB`A\xb2\x0c\xe8<\x8cA\xb4\xdck\x8e\xb1\xb9;\xfe0\xf8gv\x18\xd3#\xf3\x98NQ\xe5\x9e\x8aa\xf1\xc6\x9d\x86\xf5Y\xefI\xda~Z\xa0\xa4y\xeb_;\x07\x9f\xa6\xdb\xde\xa7>\xfb\xc7?\x90\xb6\x01EN\xad\x0d4\x04\xc1\xf8\xb8\x0c\xee\xc8\xe0\xfa\xdamt\x0e\x83\x8a!\xe2\x8d;\x0d\xeb\xb5\xceE\xd7mLx*\xd5\xf2+\xd4\xbc\n\xcd\x90\x9bE\x0b\xe24\xc0\x0f\x06\xbfb\xb71\xf6h\x9a\x13N\x1aD\xccR\xb8\xc8\xd4\x1b[\xbb\xca\xdf\x03\xc9\xca\x9bF}\xc2\xbbw\x1a\xf8S\xbd\x8f\xb4\xdb\xb8\xf9`5\n\x1f\xf3\xd8\xc4\xcb.C\xfb\xd9\xe4\xd3\xed68^\xb1\x9f}V\xb8\x0b[VZ6\xef4\xb2w:\xf7s\xb7QIqO\n\x1b}\x9a\xbcJ\xceI\xfa4\xcc\x88\xe7\x07\xb0u\xeb_\xa3\x7f{\xe3\x83\xd1\xee\xce\x83pg6\xfe\xf7\xfd\xcb\x9d\xe2\xef;\x0e\x7f\x0f\xf6.G\xfe\xe5\xd8\x890\xb0\x91;M\xf8\x8d\xd1\x0b\xdf\x9d\x98\x96\xbc\x89\x1b\x9d\xe7]8\x0d\xef\x951t\xa0\xfb\xf0:\x90\xfc\x0e#|f\x08xp\x1e\xdf\x16O\xebpzx\x81\x1e\xc9\xb6\xa5\x9d%\x8bEr\x0e+\xd1I\x0f\xb6u.\xec\xd53\xbc\x19\x9e\xd1:\xb2\xabr\xb67oV~\x9b\xb9Z\x13\xc7\x8b\xac\x1eR\x9e\x93d\xba\x16je\xae`\x8c\xe2\x1ew\x93\xc7_h\xc8:\xbeX.z<N\xb9\xbciJ\xfb\x9b\x94\n\xcf\x94\xa0\xa3\xc2\xd4\xf4*\xe6W(\xfb\xca0\xd0\x85wdP\x12\xe7\xc5j\xa5f\xcbc\xce\x9b[\n>\xc7\xd0\xf9LyS\xb0\x1e\x867\x17\xe5\x9b<\xc9\x85\xfe\xb5U\xf9\xda,I\x97!5\xbd8\xaf\x8cQ\xec\x00\xc3\xbb\xd3\xca(\xed\xef\x9e\x95\xef\n\xc4\xad\xa7\x1e\x01\x01G\xeet\x950\xa67\xb2f\xe6\\3\x91\xbdT\xcc\x0d\x01\xbf\x8c\xf4\xfd\x83Pe\xf4B\x99\xe0[\xbc_\x15\x9ay\x82\x97H\x16\xd306u\xackJot\x94MN\x92<\xa6&-:\xbbN0\x9c\x8fq$\xcal\xccl\x8d\xb9!\xd4eH&\xa1l\xcb\x8bx\xa6\".\x96X\x06r\xc1\xbe/\xb5i\x95\xcfw[\xbf\xc6\x94\xf1\x92\xf9\xeb\xfe\xf9\xa1\xc1\xc8\x0e\xd2\x00\xd7\xd0B,\xcc\x9e|V\xed\xaa\x9bdvhp\x08\x90\x17O\xef\xad\xd7\x11G6u\xac\xbc\x94\x80\xa7\xc8\x0fD\x7f\xc6/\xda\xed\xcf\xf2\x92\xb4\x88\x1b\xb8{H\xf7 ;\xde\xf88y\\bq\xf6\xe1\xf1\x80c\xe9\xf9\x81\xa1\xfc8h\xf5\xb9 \xb6\xe3\x13F\xd2\xd7\x01\x9c\x16\xb5#0\xb5\xfd\xfb\x00\x0e\xc75\xe1\xd5:\xf6R\xdf\xa4}E\xa7\xe6\x07\xb1\xd4 \xf2\xcfe\xf9 9\xf7w\x82\xd6\xc3,\"\x8b)D\x19\xe6\x0fY\xa5\xc9Y4\xc5\x13@G\xb1e\xa3g\xb6\xc1\xb2\x89\x7f\x85!<\xf3\xa2\x00\xce,N _\xd1\xc4\xc1\xc7\xf3\xd5\xd5\xd9\x00\xc4\x10\xe6\xe5\xd6\x99\xb7\x8d\xe69\x0c\xe1\x0d\x1b\xcd\xdc2\x9a\xe7\xcah\x9ew\x1d\xcd\xb4m\x08\x1fa\x08\xaf\xd8\x10\xea\xa5E\xd4\xeb\xa32\x84\x8f]\x87\x10\x96\x00 \xdbF\xf3\x03\x0c\xe1-\x1bMh\x19\xcd\x0f\xcah~\xe8:\x9aY9\x9aY\xdbh\xbe\xc0\x10\xfe`\xa3\x99YF\xf3E\x19\xcd\x97\xae\xa3\xa9\x1e\x89m\xe3\xf9\xdd\xe2\xb7$/\xe4n\xbc\xdfQC\x1eR\xb2C\x99\x1c\x85\xcd\xaf\xe0\x00~\xf6P\x85\xd6\xcb\x99\xb0Q\xdc}\xc7\xef>\xe5D\xd4\xcc\x17\xc9K\xcc\xf6w\x93\x1bKIf\xab\x07[\xdb\xfc~\x85!|\xf0\"\x0b\xb0qv\xbfv\x18\xe3\xaf\xedc\xac\x1c\x9emC\xfc\x05\x86\xf0\xb9}\x88\xbft\x18\xe2/\xedC\xac\x9e\xd0mc| C8j\x1f\xe3\xcb\x0ec|\xd9>F\x95\xc1j\x1b\xe1\x8b\x96\xa1\x1d#\xf3S\xb0a.\x03}!y\xd6\xa3\xd8\x1b\xf5\"J\x96Y/\x00\xceg\x8f\xfd\x00\xa2\xa6\xa1\xbb\xcd\xd7\x03\x14\xc1\xaam\xdb\xb1\xab\x82I/\xd0I\x82!\x0b\x06\xabV\x97P><\x12\x0fU*\xf0\x02\x190\xf6\xf4)\x13*\x03ap\xe7\xeb`\x1f,\xbb\xa2xJ.\xf6\xa1\xc5g\x90]$M\x93t_\x13/\xa7^\x97\x96x\xb0v\x9cP\x18\xe46\x94\xb8\x01Cx\xdd\x8e\xb47\\pA\x00\xeb\x86+56\xda\xbd5\xfe+\xcdl\nvNI:\x1a}\xbb\xbb\xb1\xc6\xd2 \xc2/\xa8\xab\xd8\xdf0h\xe9\"\xa0\x19\xbco],\x17BwE\x8c\xf2]\xc4\xbd\xae.\x96\x0b\xdc\xb6\xf8\x17\x166\xb2\xad9\xd7\xf3\xb0o\x98\x94/\xbe\xfd\xf7e\xc0\xbe\xbfq#%3\xd5\x1d`\xbdBO\x18\xda\xc7}\xcd\xff\x14%WD\xb9'\xda\x0f\xa7S\xf4M\x0c\x17?\x97O\x0e\xe0o\x8f\x0eX\xe3g$\xcd\xa2$\x1e\xf6\x06\xfd\xdd\x1e\x90x\x92L\xa3\xf8t\xd8\xfb\xf8\xe1\xf9\xce\xfd\xde\xc1\xe3O\xb1pl\x87\xdf^\xbf\x02r\x81K\x0c\x13\x9e\xe2\xf7\x84\xc0)\x89I\x1aR2\x05\x1e\xa4\xf47\xa3\xff\x93\xbc\xa4!LL\xa7\x8f\xa9\xb1\xbd[\x9f\xde\x7f\xf7\xe9\x96\xf7\xe9\xfd\xb6\x7f\xe3\x96\x05\xd9K \xc2\x10\xa2\xd1\xa0\x19\x8c\x08F\xc6B1\x16\x9eJK\xed\xf4)\xea\xcb~{\xfd\xea\x90\xcf\x8d;\x93\xb8\xf8\x80\xb0\x89$\xc2\xc3\xa8l\x8fo\x82\xe7i\xb2\xe4\x1bA\xb4\xd7\x9c\x91T\x8a\x99$\xbb\xa4M\xb2K\xb0\xbcm\xcd\x13&)=a`_\xc9y\x06Pxi\xaaYP\xac\x8e_g\xa2\x0eI=\xa9\x92\xbc\xd8\x12\x94\xe2\xfc\"\x99\x84\xac\xa9~\x86\x8d\x1b\xf4K\xa5\xde\xd2\xb4\xb5z\xa8\xa47\xee\x11y\xf0\x90~\x96\x9fd4\xf5\x06\xbe\xac\x17tS\xa7\x8d\x01\xd5C=\x85(\x86\xd8\x87\xb8^>%\xe5\x8e\x8a\x18g8J\xc7\xb2\xc5!&[\x1bM\xc9$\x99\x92\x8f\xef\x8e\x8a,]^:\xda\x1d\xfbc,\xdd;@u\xa1\xf6\x9d\xc1\x98\xdbU{.\xf8$\xb7us\xcd\x9a\xd9l\xec\xb4\xd5h\x15_\x86+\x07\x7f6\xf19\x12\x83\xea\x8c\x88\x0f\xdb\xd0\x1b\xa2\xb6\xb6\xf9\xb4\x9a\x99T^\x97~\xff\x8f$\x8aqy\x9aS\x13\x19{\xec\x83\x92\xf3\xa9d\xdd\xa0\"n\x17K\xd5yD1W\x04\xd0\xcb\xe9l\xe7~\xcf\xf7\xcb\xbb\xbd\x930#\xf7\xee\xe8\xc6Pf\x10jv\x9d`\xb8Y\x94\xc4\xd9{|\xcb\xe4\xb5\x13.V\xf3\xb0%\x97\xacz\x154\\j\x13\xe7=\x1f\xb7\xd0\x02S\xc1\x85)\xf1\x88\xfa\xccpd\xeb7\xe6\x92\xd0y2\xbd\xf2h\xf8\xe7\xa6\xf1\xc8\xa7\xceLDs\x8c4<\xfd\xb3\xc0Y\x1b\xb2\xf3 5\x98Y\xcb4\xe5\xc6\xce\xe8\x9cT\x94\x8c\xeeQ\x0cF\xbd\x91\xf4\xe6\xa5F\x0f\x11\x85m\xe1\xa5oz\xe5\xdf\xa2\xcc\xd1(\x0e\xd8\x06\x0dt\xfb3\xf5K\x9f\xfa\xff\xd9\xdb\xbdu\x1a@o\xbb\xe7\x8f\xc5\xfe\xd4-\xa9\x91J\x11\xdb\xa6\xd6d\xee\xaa\xac\xa4\xc1\xb1\xa6P\x9a1\xc25- W\xac8\xe5\xb4\xb9\x8ct\xf2\x18\xa9\x8e\xbc\ns\xa9\x143\xa4's\"\xc0:\x8f[d\xcaT:&\xcc\xd9\x98\xd4(\x8d\x96\x9e\xb2H\x9f2\\\xa3c\xb4\xd8\xf4z\xb6\xe1\x1a\x92\xab9\x0d\x93\xc1\xec\xb8\x84\xd9\xd7\xa6{Y\xa0I\xe7\xe6\xd44m\xe6\x9b\xb0\xecd\xf1\xd1\xad\x7f]\xec\x14\xccu\xeb\xb2\x05\xc6\x14t\x7f\xe6\x08\x85\xfdgS\xd8\x976\x85\xf5h#\xecb\x1ba\xf5r\x9f\xca\xff)\x1f\xf0\x94\xdfl\xa7x\xf7\xee\xfb\xfd\x1f\xf2\xd9\x8c\x08\x7fq[\xf5\xa3\xb3\"sSq\xf2\x95x\xa2\xa6\x19\xacX\x8c\xc0%S|o\xc49U\xfe\xe9\x18\x91:nT\x8cr\xca\x06\x89\x94\xae\x1cWjcD\xf59\x0eAaO\xf9T\x94d\xbc\x8bhBL^\x97\xc4\xb8\xbc<\xa4\xaa\x9aL[\xe4K\xe4\x14@-1\xe1c)+S.\xd9zZr\xfdP\xecx\x99\x97\xbe\xaf/\x9b%\xb9\xf4-\xa6\xd6\x16\xc3\xb2\xc5\x17\xae-F\xd6\x16\xb3\xb2\xc5\x1b\xae-&\xed\xb3\xbey\x13\xb6&e\xd3?\xba6\xadI-\xaf4\xbd\xe5mQ.\x87\x8f\x16c\xb7\x06C\xd7\x06\xeb\x898L\x0df\xae\x0d\xce\x1d\x1b\x9c\xb4\xaf\xf8f\x83\xdd:57s\x1d\xdf\xb41>\xf5\x17\xf1R^\x83\x85x\x91\xfc#\xe1\x7f\xc4\x8a3+\xcf\xd5\xcd\xee\xbc$kL\xcf\x17\x8a\x17\xe2)\xb9\xc0\x1b\x19\xbf\xf1$\xcb\x92I\x84\x99!\x00s\xb8\xc4e\x00\x1c`x~\xdc\x97m\xb0\xae\xfbe\x0bl\x00\xfd\xf7\x04k84\xe9\x07\xa6\x19\xf8\xfb\xdf\x8f\x8f\x8f^\xbf\xfe\xf8\xe1\xc9\x0f\xaf\x0e\x8f\x8f>\x1c\xbe\xc3?\x8e\xff\xfew\x8dji\xd5\xfc\xe2\xe5\xe1\xef\x87\xcf\x0c\xaf\xcf5\x1d\xbcyv\xf8\x9b\xf1\x83i\xf3\x83\xb7\xef\x9e\x1d\xbe3~p\x06C\xb8\xdb\xbc\xbd\x86!\x0c\xe0\xd1#]\xb5\xf3S\x18\xc2\x1av@\x93\xaa\x7fi\x90\xf7\x8f\xed5\xae\xf7\xeb\x89$A\xcf\xf9\x9f\\\xa5\x19\x13-?o9\xd8\xb9q\x18\x0b\xbb;\x92\xe4\x0b}\x8bT\x1c\x0dE\x83\xbbn\xdb\xe9=O*\xaf\x7fxh9\x89D\x84\x9bF\xaf^\xa9\x0e%\x0bH{\x98x\\\xa88w\xb0JH*r\x9e\xcb\x94\x05<\xd3\xc6\xeeCLw\x11?\x84h{\xdb\x87t\x14\xf1$\x89\x11\x13\xe8\xcd\xee\xf5\xa9\xd3l\xed\x01\x0d\xaa;:\x06\xa2\n\x98f<\\\x82\xf6\x8f\x8fy\xe9|\xe2\xfd\xc1OW\xf6\xc4\xa9\xe3\xb7\xd6Tb\x85\xf5A)\xe9a\x13\xc1P\xb9\x04\x8f\x1f?6\x995\x84\x92j\x1bb\x11C\xbd\xd9\xc0\x9d\xbd\x07w\x1e\xdc\xfb~\xef\xc1]\x9ca\x19\x99\xf8&|\xa3o\x85MZ\x93\x92\xcf\x04>\"\xcax#\x90\xb7Q\xf1\xe1\x06\x9c?l\xc5\xf2\xeb\xf9\x9c\x0dm|v\x90\xda<\x19jP\x16\x9d\xde\x92Q\x91\x14\x1e\x0da'\xae\x14,\x1cJ\xd0\xd5_&\xf0xXW\xc0\x9a\x06v\xd4\x96\xbd\xf1\x83\x18\xb9\xe3\x86}\xed\xda^\xbd\xaa\x8f\xa1\xbd\x0f\x0e\x80\xab\xc5i\xc4\x986\x97/\xb6\xba\xbf l\x03\x1a\xc5j\xb1\xb4\x8cC\x92\xe5\xe2\x99\xbc`\xac\xde\n\x02\xbf\x9f6\xabT\x83pd\xd6\x9c\x07\xef`\x08{\xcd\xdbo\x9c\xb3\xb6\xf3M\x9d\xa4\xcd6^\xf1\x93N\xbe\xa09\xda\x9e\xc1\x10\xde0\x1cye:\x02\xbe\x1a\x08\xf6<\xca0\xbb\x8833\xfe\\\xae\x94!\x99\xa7\xb4Z\x94\x0b\xc5\xb6\xe0\xa0\xb2l#\xf6\xbd\x85\x8a\xc2\x01\xa4\xc5\x19\x12\x89\xb2\xc0\xd6\xd3\xd0\xe0\x078Mb\xd3\x89\xebH\xab?\xda\xa8\x82uH\x1c\xfd\xac\xe3j\xad\xdcc\x18\xd4\x0fv\xees\xebWW6\xf6\x8b\x9d1\x00S\xd5h\x8a8\xe3\xd4\xc5\xefv5\xe0\xaf\xda\xf4\x1d\x05-\xe7Un\xb5\xc5\x96\xf5\xdd\xfdj\xef\x8e3(o\x90\xd6\x8e\xde`\xedR:ze\xcaM\xa4\x9d\xbb\x92\xb7\xdaiD\xbf8\xc0X\x13\xcc,\xb8\x14\xa7.^Z\xbb(\x92\x01\xa8G\x8e\xdc\x8e \xcf\x95-\x85\xe8>M0]\x83\xb5\x80\xb5\xbc$P\xd1y\xbd\x12\x167\xac\xd5\xe6!\xe7@\xa85\xc3\xfb\x96\xa9^\xd8\xe1\xc5\n3\xd3q\x06\x0d\x92\x14\")\x15 5K2\xe3[.\x0b\xd8\xd3\xcf(\xdd\xf0G\xfb\xe8.o\xeaV\xbb\x8a\xecj\xa6\x083\xc0\xfd\xc5\xb7\xc1\xbdO\x13\x94\xc5$\xc4\xc5\"\x84\xcd\xb5\xa0\x98\x9f\xfd0\xa6\xe9\xbax\x99\xba\x8e\xf2\xc6\xb7\x8dR30\xa2\x0e\x84\x8dSH\x91\xf2V\xe8<\xb6\x1f\xadc\xf3\xbe}pr4h\xe0\"\x14\xef\xd7F\xa6\xfe\xfa\xaa\xa8\xaa\xa8&\x1f\x81e\xb0\xbd\xd1\x918\xa0\xc75\x05t\x00_\xfb/\x0f\x7f\x7f\x0fCx\xca\xfe\xfe\xe5\xc9\xab\x8f\x87\xec\xd7\xcf\xec\xd7\xe1\x9b\x0f\xef\x8e\xf0\xe7\xbb\xa0\xd2\x7f\x14g+\x9e\xed\xbc6\xaa$O\xab\x99\xb9m\xf4\x85\x1d\xf0\xe6\xdc\x0bJ\xcb\xa3g\xe3\x0em\xd6\x1b\"\xdeK\xae\xb7x\xd9Of\x8e\xed\xbc\xf4\n'\x92\xc6\xc0^V\xa7L\xbe8\xb6\xa9\x1b\xdb\xcb\xab/*\x82\xef\xf8\xb84\x8e\xb2\x91\xfc\xbb\x17@\xef\xb2i\xcfQ\xfb\x99\x84\x939yG\xb2\x962\xc7JW[\xbc/\xfc\x10d\xc5\xafB\xd6\xfb\x18\xe3\x83)\x17\x06\x957\x87\xfc\xc5\x12\xeb\xcb\x8a\x0f\xa2\xfc\x99\x14\x1c\xcb\x8f\xc4\xd9\"^\xb0M\xa3\xe8\xdf%\x86HLdB\xcb\x82d\xbc\x02\xa8K\x0f\x89S\x00\xbe\xe8b\xd6\xda\x05\xf1^\x04\xf0\xd2\x0f\xe0Ee\xf1%\xbdu\\\x13=\xa6\xdf\xe0-\xdfp\xc7\xf4\x1b\x16L\xbfQ\x19`II\x1d\x9b\xd6\x0d\xf1\xc65#\xfc\x88!\xfc\xb8\x89\xf07\xae\x19S\xea\xb5\xdd\xf5=|\x13\xa64\xbb \xde\x8f|=\x7ft_\xcf\x1f-\xeb\xf9c\x8dr\xd1o[\xcb\x97\xfd(\xe3-D\x94\xfd\x92\xda[\x86\xdeB]\xcb\xc6\xaf(ro4\xb5\xb7?\x05\xf0\xcf\x00~\x0b\xe0\x1fM\xa5\xe9\xfb\xc3\x7f\xa0\xc2\xd4$9Rj\x11\x1d\x8fCQ+\x83\xd6\x88M\x17\xf6\x95\x18z\x90\xfc\xa50.}&\xebL\xcbC\xf2\x91$\xb26\x88\x1c\xca\xf1gQ\x0b\xab:4\xd2eh\xb1u\xf2Q\xa9\x9f7\xcc\x9f{\x16:+\xe8\xd2\xf6\xee\x84\xe1,\xa8\xdd{*\x0e\x83zm\x1fCG\x91\xa1#y\x16\x95\x06\x8c\x7f8\x1aX\x90\x1b36\xf8\x13k\xcd\xfbI\xe8Z)\xf5F\xe3Ff\x16}\xbby\x0brh\xd2\xe0\x88.\xa8\xdf\xe4\x9a\xbf\x94o\xa4\xfa7~(\xdf\x88\xf5oh\xa5\x9c\x83R\xc8)TOf\xcf\xbe\xabK:\xa3\xcf\x01\x9c\x8dAd\x8a\xed \xf1t\x92Y\xc3\x16\xa0gza\xee\xdb\xa7\xc7\x05\xb9k\x9aEfG\xf2_j\xd8\xa2A\x0f\x0d>\x14\xab\xeb4\x04v\xc29\xa9\xcb\xa8`\xcd\xf4@\x8dL\"xa\xe5H\xd8\x01QZ6\x06\x01\x864\xef>\x84\x1c\x1e\x0d!y\x08\xf9\xf6\xb6\xa9\x11\x10\xe3\x08\xd1S8f\xa2\x15\xec@\xced+\x83\x7f\x15\xc8\xc5\xe6z=\xe2\x85\xa3\xc18@\xc5]8\xda\x1d\xb3/\x03P\x02\xdas\xd8\x86\xa6\x12\x0e\x1a\xe2\x97\xbc\xe4g\x8d\x87\x96\x04s\x0dV\x99g\x83tZ\xa6\xd9\x9f\xbcL\xda\x152B\x96\xaf\x9c\x0d0\x0c\x1b\xbfzV\x96B^\xd2\xf9\xc3}a%\xf0\xb7\xb7\xe11:W\x9b\x1b\x077u\xa7\xbc\x8cjOy]\xc2><g\xeb\xc60\x89\nL\xe2\xe8LG\x03C\x11\x0fM\x18\x89\x03\x9a$\xe9\x15\xf0dA\xdb\xf8M\x02\x07\n\xeb\xe4 \x94\xc2\xc4Sz02\xbc\xa9\xa7M/5\x8c\\\xf7\x19a\x137\xbc\xb8\xe6\x98lk\x17\x94I#D\xb1\xda\x8c\xa1:\xd3\xa5)\xc36\xc6\xa3R\xe3\x90^\xfc\x07\x86$\xb7@s\xd1\xd1\xaa\xc3\x0b\xab\xe8\x07\xd0\xebi\x93\x052\x9a\xberVY\xad\xec\xa7\x8a\x86\x1f\xb9!=\xcaW\xd5\x02\x85s\xca\x9f\xbf\xa8>\xc7\xcc\xb9P\x1f\xa9i8s\xfbp\xa4E\xbe\xe2w5\x94<u]\xab\xa6\xbe\xe6\x06\x8d\xa9yGD<A\x8e4_\xd2\xa2:;\x11q\x0b\x92\xd941J\x9c\x05%\xd6\x8cqF5\xbdpBx;3\x1a1\x88|\xc3\xb65E\x8a\x1f\xf1\xa6\xe7\xfb<\xfc\x84\xc8\x0c0\xf2n\xd7 \x82y\x92\xee\xd4l\xcb\xd3\xd7\xc3\xef\x93/y\xb8\xc0\xb0&\xed\x0bDyaK\xbe\xed\x11G\x8e\xfc\xcci\xc9\xdb\x977\x17\xc9\x8a\x15\xbbv\xe9\xf0\xa0\xdc$\xc5M\xf1X\xb9Y\xff\xfc\xf8x\x1ef\xf3F\x03\xe5\xed\xe2\x95\xca\x83\xcd\x86\xeb\x8f1\xceM\x0c+\x9372qc&o\xcc\xd4\xba\xa7&\xa4\xac{p\x08Ct5\xb5\xb8\xa9\xf6D\x0cC\xee\xd9\xa7o{\x86\xc9\x82\xcc\xac\x06J\x88e5 \xbb\xf9\xa3O\xceH\xbav\xf3\xea\x05\x85\x15JEU\n\xbe\x0bZ\xd9 \xac\xd88\xa5^\x84\x9c\"w^\xf4\xb0\xf0\x17\xde\xdc\xc5\\\xd0\xa6\xa3\x000\x80U\xf4\xc7\xb8\x08\x87=\"\xc7iZ\xa0\x86\x9f\x8d\xbe\xf3\xda\xabr\x01\x0d4GU\xfb\"\xb6)7L\x0b\x81\xd1\xaefxG-)I$o\xa9IT$/\xca\xb5 \x8ch%z\x08k\xa1\xb7\xe0\xb5-\xb4_\xac\x80o\x1f\xe9\x8aT\xa0\x0f\xb1\x14\xf9\x04\x01O\xc6\x89n\xd1\xfe<\xc4\xad\xb5\x8f\xb9Y\xb6\xa6\xc8\x13\xf0\xc8\x9a4\x80%\xd6\x93dw\x95[\x88#\x12\xa3\x16\xc2cMC1\x01\xac\x19\xc2\x17\n1a\x8b\xbar\xa2{k;\xdd\xdbBE\xa3\x1a\xb0\xb0V\xcb\x0d\x90\xf3\xa2\x01=>r}\x8e\xf4z\xa8\xe9\x93j\xbe,\x03\xb8\x05\xbb\x85?\x8b\xf0{\xf1\x03\x89\xce\xf2C\xdb\xc1\xf6\xcfbh\xff\xd4#\xce?\x85\xcd\xa0e\xab\x99\xa0u\xda\x02-\xaa\xaa \xb8\x8a\xc0\xd1WhIm\xceB\xfa\xa5X\xd6\x96BiC\xbf\x1a\xa7\xd4\x13\xaeV\x01\xf4\x9e\xf2(\xde\x8c\x92\x15\x84\xf0.\x8cO \x9c\xaca\x17\x83\x1eAX'w\x83\xea*\xc9\xba#\xb8V~\xa0$\x01\xe0\x9eo\xa2\x1a#.ax\x92\xa1\xeb!\x81G\x82cco\xef\xc4\xd2\x84s\x8c\xc5\"T\xbd\x1f\x89\xa7\x8aj\xf3\x18\x87\x86\x83U\xb1FE\x0f\xfc{B\xa2\x85\xe7\x11\xd8a\x04\xf8\x16\xc4L\xb4\xf2\x99l\xde\x0dw~+`\xf9\x9b\x1ew~\xfb6\xdc9\xd6\xeb\x129\xbe(*\xa5'\xa2\xfaa\xdd2ah\xf6\x84\xda\xdcL\xcf\xadO/\xc4S\xf5\xa1b\xc6\x1a\xfdc,\n\x01\x11\x8f\xd2\x00n\xb0\x95S\xe3\x1eN\x89SIW\xc9\xb5\xb3U`\xe4\x91\xdb\xb4KM\xfb\xe8\xad4g\xf8c]\x05\xf3J\x9f\x9dL2\x15\x7fY\xa5G\xe1![Q-\x95\x1e\xb2CH\xb9\x8b\xac\x11W\x84\x8a\x88z\xf1\x88Q\xae\x14v\xd0\xa3+\x1a\xa3\xf0\xc7:*wf\xc4P\xd1H\xb5\x1bu\x1d\xb4\x93u\xb3\x0e\xe9&\xaa\x9dBc\xf2\xfa\x89\xea56\xdd\xb45\x05\x10\x1e\xa3\xfa\xc3\xc6\x819i\\\xac\xda\x16\xaei\xa1\\\x02/Wf{\x9b\xad\xcd\xf6\xb6C\x14 CuB\x03x\xc1\xe8\xd6\xd5Q\xbd\xee\xe5\xaaC}\xae\x1f\x1eQ-\xcaW\xfa\x9e\x87\xee\xf1lJ\xd3\xf5(wM}\xa2\xeb\xdcX\xbcS\xbe\xb3JSU \xd8ju\xa7%|\xa7%l\xa7E\x0f!1+q\xcfDY\xbc\x14\x173\x82\x1dH`\x1f\x12\x83\x9e\xaf\xb63\xf31V!\xae\xee\xc6D\xab\xb45\n\xa3\xcd\x14\n\xd7\xb5=\x05\xb8\x8c\xfbS\x01\xa1qw\xa6\xad{8\xb9\x8e=\xdcm\x15$\xe4P\xd3\x1a\xfdu{>g{>w\xdb\xe3\xca\"\x8e\xa6\xe5!\x17\x8bC.\xd6\xee\x8b\xc2[\xc5a\xad\x19*\x96\x121\xaeeEhR\x84\x0c\x03\xf7,\xb1\xe5w\xafj\x96\xb5\xd4\xb02\xe8$\xbex\xb1A\x06-vq\xf4\x10\xb6\xbc\x08O\x05\xb5*#(\xb9\xbc\xbdHT]\x84t{[\xec*]\xfdR1\xe5F\x8e -LK}\xf5\xb5\x025I;C\xd5\xa0\xce\xf9\xa2j\x89\xf9v\xf9hh\xd6\xb0\x02\xdd\xb7\x1aQ\xd6\xa1E\xcb\x81\x8b\xc4\x9d\xd1q\x0f\xe0\xd2\x08\x15\x9e\xd3F\xf0R\x81\xf2\xe9\x7f\x01\xcaW\xea\xc8\x17$\xb0\x08!\xe0\xb6\xaa\xa6\x83\x80z\xa0\x14\xc6\xa8\x87\x0e\xcc[4J\xc6\x01#T\x8dC\xc206\xb6KbEK\xc4w\x89\xb1\xf2\xbc\xa4\x9b\xb1M\x9b\x84&\xb6Q2\xe6\xe1\x90\xc5\xd8\xf2\xea\xc0NR\x12~n.\xa8 \xdb\x1a\xc7\x96vy\xffc\xbb\xaf\xb6\xb0F\x82\xa6[l=\x10\xafc\xef\xe1J\xc0\xe3\xf2XmS\x18\xb6oT\x90p\xe3En\x8b\x8dkQ,\xf2\xa0<\xb1\x87\xb5\xafY\xad\xcb\x92\xfdMG\xee\x0c\xefZ\xd0\x805\xbd\xba\x8b]M\xd0\x86\x03\xe8\xbd#+\x12R\x18\x8d{\xb0_\xfe\xe2^\x10\x8aZh\x1bz\xe5=\xfc\x96\xdd\xa1\xd1\x92d\xd0t:^_\x9d)\xd71\xe1|\x08\x1a\x06\xbc\xd2\x8f\xac\xf4\xe3\xca\x85O\xa9\xaa\xf8jFe\xd5\x9a\xc7\x94\x05.\x13\xa9\xec\x1f\x06*#\xca+1{|\xaa\"U\xd2\xba6\xb2\xd7\xa2\xba\xe4\x0e\x0f\xa6\xab3\n\xf5\x91\xa6\xe4\x8c\xa4Y\x177\xed\x16\xb8N\xc9\xc5\xdb\xd9\xd5\xc1\n\x07\xa81\xdc\x19X\xbbY\x84\x19=\xba\x86\xaeJ\x0cm\xed\xf2\xea\xc2\xd4\xeeC\x88\xe1\x91\xb2\xc4\x10;i\"*\xc3\x8d\xeb'ZlUB\xc4Ns\xe9.\xe5tbU\xbb\x11k\xc9f\xc2#\x88%\xc5)Y\xa0X@\xc27\xd6\xd9\x83\xeb\x12?\x1c(l\x05\x9a\xc2H\xe9\x88\x87\xb4\xaaz\x87\x83&f*S=k\xda\xfb\x19}_\n\xfa\xbe\xbcf\xfa\x8e*cI\xde\xf9\x0f\x85\xbas\xed\xee6\xf4\xfa\xfd~y\x97\xc4S\xd8\x06O\x08\x15\xf3B\xcd{\x00=8YW>'+\xcc{\x84I\xe74'\xc1\xf2zO\x029\xdcR\x17 \xdfU\x87\xd28#\x96W:#$\xe7\xe0Q\xd8Q\xfb\xf6\xe1\x96\xd2\x9fq\x7f`\x80\xf4.7\xc8+d\x82\xdf`k\x84:\xf1\xd9\"\xd1\xd8\x1ejCv>wj\x87J\xd1\xa9r\xb8\xa0K\x01\x9e!\xe5\xd3\x80\xdb\n\xf0\x8c)\xef\xfa\xf0hX\xf8\x96.\xa9\xb7\x1b\xc0\xae/\x8e\xa7\xa5@\xeeSB=\xd5* M\x06\xec>\xd1\xdcG\x905\xcf\xae\xe5U\x0e\x9b\xb3\"\xaa\xb2\xb2<z\x01\x91\xc0\xff\xa8H2\x1c\xb2\xb9\x98\xa5\x01\x9e]\xc0\xbe\xceP\xd8\x13\xe5BW\xce\x03_O\xb4\xc1&\x0e4\x0f\xab\xe57\x9e\x8f8\x1c\x01Q\x0d\xcdY^\xcfYXb7\xea\x0dK\x91\x80A.\x10Uv\xea\x1b8\x86\xef \x85}\xf5nU\xe5\x18[U\x8eU 1\x80D\xabA4,\x1bl\xf3\x11\xed\xb0\x014+P\xb8\xcbkZ\x00v?\x80K\xe0i\xc7[\x03\xa8aN\xae@\xd6~~\xad\n\xc8\xc8\xaa\x0e\xa9A\x9f-\xfac\xb4H\xfe\xc9\x1c\x80T\xbe\xa0\xbc\x9e\xbb\x88\\\xcbkb\x08\x96\xb4\xb60\xdc\xefC\xfc(\xc2\xed\xd0\xac\xca\x9f\xb0?\x8b\xfb\x82d\x89O\xf0\x8c;+\"\x8b4|\xc41\x95\xe9\x9cNh\x00\xc7\x14\xff</\xff\xbc\x90\x7f\x1e\xd3\"\xa2\x87\xbf\xa9\x04\xf2\xf0\xf7E\x90\xcfE\x8d\xac\xb2\x85~OM\xd9%\xf0d\x8b\x969z:\xec\xec\x95\xa7\x1d\xbb\xe7\x95IX0\xfd\xf1\x81\xf2\xbaC*Q\xb9k\xee\xdd\xbd{\xfb.`\xd1\xf3\x0d#\xe6\xe6\x8dS\xbcI\xf8\x9bf$\xc7\xbd\xb2\x8dnw\x8f\x1f?\x86\xc1=_\xdcaO<R\xdc|\xf4\x08\x06\xf7x\xee\x19\x1f6ug|S(\xd3a\x9b\xaf$6\x0f7a\xb0\xfb\xfd\xed\xef\xef\x0c\xee\xef\xdd\x81\x0d\xdc\xde\xdb\x1b\xec\xed\xdd\xbd\xf3={\xe2\xe6\x94\xf9\xc4\xd0\x91J1A\xad\xd3\xdf\xf0\xc4,h\xa8AS\xdd\xee\xf3(;jz0\xda;n\xeby\xab>B\x0d\x85/\x18\x031.\xc3\x1c\xd4r\x07V\x87\x03\xe1Z\x89N\x96\xece\xeeSa\x19((x\xba\x0b\x1b\x93s\x14\x1e\xa1qY\x8d\xd3\x8b\xe1_C5G\xd1w@\xfd\x87\x0c1\x94\x9b\x0f}\xc0\xd7(\xdcR\xdf\xb5\x12\xdcC\xea9\xa5J\x8f\xea%]\x145b\x99\x9a\xffg\xaax\x99\xeb1\x0d\x94UxEG\xd4\x9e(\xb7\xea\xb1\xf2\x96ao\x00o8\xac\xdf\x89\x9c\x19\x14\xd3\xe1\xc0+\x9e\xe8\x1c\x9f3*\x8e\x8d\xb3\x83\xef*Y\x16`\x9fw\xd6 \xc7\xe7a6\x7f\x9aLU\xc8\xc8[:\xe5bT\xaf\nV~\xe8\x08B3\xe3\xf9\x9a\xd6\\M\x11~G\xdccM\xadPji\xa3\xfe5\x1d=\xa5c\xa7/\xb7>\x1b\xc7\x0d\xa6\xc6\xfb\xa2\xea\xc1\xfa(;\x8c\xf3\xa5\x08\xc0Bw8\xdd\x13\xa7\xb1\x98:k\x07\xaf\xfa\xb5p\x98\x8c\x93)\xf9\xb0^\x11@\xd2\x9e\x9dG\xbc\xfeYq\xbf\xad)vM\xc2\x8c\xc0`\xbf\xf5=Ph\x7f?\x8f\xa3/99zf\x9e\xa3\xbc\xb0\xf9\x07\x1d\x9b\x9f&\x13\x0c\x18>\\\x10\xf6\x0f\x9fl\xedf1\x06k\xd3z\xa56\x88-\xa5\xac\x96\xf6=\xfd\xd7l\xb9\xb6\xb7?\xd0@=\xfan\xc2\x07\xbe\xf7?\xe0\xde\xb7\x84\x88\xbc\xa6>\xc3\xfa\x8c\x18=\x1c\xc1\xc1\xd1\xb5\x8aB\x7f\xc8\xfa\xc8C\xfc\x81.\xcfu\x8f\xc1\xde\x9b$\xde!<\x95q\x19H\x98A\x98\x12,\xfa\x86\xd9\xb5\xc9\x14\xc2\x0c>\x93u\xd67\xd5=\x90\xdd\xb3\x0d%\xa2\x8dy9\x89\xd2#$\x80\xa7\xd4\x14W\"/R\xec\x9b}\xd8\xb2\x04x\xb1k\x92\xc4\xb3\xe84w|\xfb<\x8d\xa8\xdb\x9b\x82O\xd7/>\x80\xb9\xa4\x1e\xa8\xe5\x0d+N\xf5\xddH\x86`\x93\x95H\x12\x85\x83\xd7}\xe0\x1b\x1b\xb2\xab\xdb\xd4K\x95\xb5\xdd{\xee\x87\xab\xd5b-\xd8xCD\xbfz]\x06\x162\xc9\xce\xc0\x16\xc8\xb6\x13\xc1\x8aSzI\xf2\x1ax\xff1F\x08\xd1\x042B!\x84\x98\xed\x83\x12rr\x8c\x90\xc4bOXQ\x9f]T\xce\xc1<\xfb\x0e\xf4\xc4z\xeaw:\xed\xa5\xf2\xb5 k\x8caP2\xdah\xf3\x01\xd4\xa0\xc5\xcb)\xb3&y\xfddT\x93\x96\xa5y\x18\xf7@\xa6}G/\xd2\xb7\x06\xde\xbeP\xc7\x10\xce(\xa9\x16\niiG\x03\x05\xbep{\x00\xdf\xf1T\x85\xfd\xc9<L\x19\xf3\xf2\x84\xf1\x88\xa0MfZr\x91\x0d\x1fi\xf5\x17\xeb\xfd\x0fZfL\x88\xb2\xc3\x8266\xa9\xc6\xe7\xd6\xcc4\xec\xb2\x974\x95k\xa2\xa5\x99\xff\xbe\x0c\xa0\xf7\xf7^\xc0\xd9E\xa3N\xc0\xa5\xc4\xa9\xe8\xc7\xe4\xea\xafA3\xbf).\x1f\xd1\x00^\x1bE\xe6_I\xf8\xf9uX\xd32r\x06\xcf;\xa2\"s\x81xI\xd38?#\x9bP~\x8a\x1d\x1e\x1fG\xcbe\x8e$\x9ca\xdb\xf1q-E{K\x8aH\x0f[\xe1\xbf\xbd\xa7\xb4\x8e\xf4\xac\xff\x9f\xd9\x1b\x83{\x9a\xc4\x94\xec\xc1\xde]M\xe6\xe37\x86!\x0b\x16\xdf$E?3l\x80S\x8ar\x9a\x90\xceJ\xb7\xf9\x15IgI\xba\xe4\xea\xef\x90\xb7q\x1e\xd19\x841D\xf1,\x8a#J \x8b\xbe\x12\xd7\x1d\xf8\xd5.\xc6[\x93\x86\xfd\xc6C/\x9fc\x13\x8c\xbf\x98yE\xfet\xf6\xac\xcfF\xf6:\xa7\xbc\x94\x8dC\x0d )e\xa6\xc6\xf4v\xcf\xa8\x17K-\x7f\xac-\"h\xac\xd5\x01\n)E\xee*n\xa8\x9b\xe4\xa5\x8b\x82v\x03\xe7s\xe7\\ ?\xd0\x96l\xe6_i\x00'Lv\xfcJ\x1d\x92\xe9\x14Z\x02\x1eR\\\x1c\xc0\x81MEd[$# \xd1\x99\x8dII\x94a{\x08{m\xa2\x14\xda\x85\xe1q\x99@Fs,\xbf\x8e\xb2\xac\xac\xb6<\xe3\xc99x6\x0b,\xadb>\x829\xf3Ld\x15\x16\xd6\x97)\xdc\xbdu\x9d\x11\xfcW6_r\x85\xa7\x92\x01\xeau\xb82\xa6<\xfb\xfa\x8d\x96\xc5\xe34IJ\xcd,\xfb\x81\xa2s\x11K\xc3\xf36\xf9:\x93b\xa5\xeb\xacS\xd7\xffP\x93B\xd9\xe7\x94\x11z\x14wh\x1a'\x92\xaf\xa6!%G\xf8\xf22h?c\xcd\xdc\x92}p)Y&g\xed\x92\xb6f\xd6K{\xc3S\xb2 l\x02\xaeM7f\xed:\xe5e\xd7)\xf3N\xea\x0bbO\x1c\xcdE\xc8F\x89\xcb\x03\xe1\n\xe2K\xe3L1\x81\x11\x1d\x8bF\x1d\xc6\xd2D\x0f\xc3h0\xd8\x15\x9d\"E,&Gq\x8b\x8flA\xa2]\x12I\x9c\x898P.\x80-\xcd:\xd1\xbc\xd5\x17\x8f\x91\xbb\\\xf8\xe1\x99\x89\xe2\x99H\x19\x93`\xf0Hk\xc5\xd8\x0c\x86\x10y\xb6\xb2\xdcb\xb92\xbe\\\xc2Y\xb7\x19C\x06F\xa9\xe3\x94z \x03\xb2\xc8\x1b\x9c\x11\x1a@/\x8ay\xb5\xfb\xcfd\xfd3V\x883Cf\x82%\x80-\x1e\xa8\xec\xa5\x99\x98\xf2\x92M\x19\xa9\xd5\x84\xed'\xf3\x07X\xa0\xd4\x9b\x95\x0bhU\x94r\xd6e&f\xcf\x7f-\xd9/\xb1\xdb\xbd \xc3W/)y\x19\xe2\xe3\xd91 `\xa1\xe1\x01\xc4\x9e\x8fc\xd4\xe9\x1a\"\x1eE\xdfi\xd1\x9b\xe0\x9a\xea\x96\xd9\xfa\x0e\x98,Hh-J\xa44\xdet\x8b\xa1\xdc\x1fB\x1c8\xc9yL\xd2\xa3gp BaE\x0c\xe3n\xa0\x9e\x14CQ\xb4S|\x83\xc1\xfb\xc3\xf2\xac\xe0w\xc3\x05\x15\xf5N\xb6\xc4M_pw\xd6\xc9,Iz\xda\xaat\x90\x90\"\x02\xae\xb2ks>\xc0f\x1f\xbfF\xd5\x92c\xb6\xf3\xa4\xe8\x08\xfd\x97\xea|\xd2\xa0\xe9\xc8\xd1\xec\xaeJ\xa0\xec\x86pM\x0fFl\xa9\xd2L\x12 \x84\x03\x07\xad\xaf\xf8\xde \xf0\xf3e8\x90\x7fI\x1d\x0d\x12\xd5}\x88Gj4^\xb3\xa8m\xcb\xf1\x81M>#\x18,\xdbi\x9d#\xd2m\x8dY\x1fN\xeb|%\xd0\x17\xc3J\x88\x87b\x85\xe3\x88\xfe7\xa2\x02\xae\xd6\x81\xfa\xebzQ\"KR\xea\xca\xe7\x1c\x11\xef\x17R\x98\xfd\xdb\xdb\xfda\xdd\x81uT\x1b'\xed\xedWd\xa0\xd6 \x14\xb2\x16[\xa90{\xcdu\x11:\x06@.)\"\x16\xe9\x9f\x87\xd9\x13NO=\x1f\x8f\xa1\xe3c\x12gyJ\xde2z\xedU\x89\xb7d\xa5\xac\x03/zw\xdc\x83\x8d\xf3\xa1zn\xa8\xa3a\xa2\xd8{;\xd8\xc2\xecHjb\xba\xf5\xaf\xf6\xd3\xb22\x05\xc8\xba\xf5 \xce-k\xdb\xdd\x1c\x9c\xa4F\x84\x9c\xc3\x0dw\x99\xa7\x93\x17\xda\xb7:1+\x87{\xe1m\x83r`3\xb3H\x0b\x11\xe1\xc1v\x1e\xc1\x043\x043\xca\xe8l\xee\x01/\xfb\xd4\x02\x01e\xb5[\xf7\x96\x9cI\xc9\xe0\xe8\xb0\x15\x0e\xe0\x9f\xb4dmT\xb6&(\xf3: K\x83\x1c^\xad!%\xf7\x83\xca\xe0\x0c\x04\x83\xa3\x99N\x941\xc9}\x08\xcf5\x9eC\x1fi\x00?\xd0f2\xe0\xd7O~6TO\xfb\xc2\xdeV\x81dR\x0f\xfenN\xfc\x81\xc3oNH$*j\x18\x1f\x8c5>\xac @\x0c\x9d\x9cDt\x89\xe0\x90\x90\x8f\x13\xee\x82\x1c;\xf5\xf9\xcbU\xfa\x9c$yL\xaf\xdc\xe5\xcb\xabt\xf9\x99\xac\x7f\xe4L1i@\xd7\xad\xdb\x17\xd7\xd7\xed\xda\xb9\xd3\x1b\xed\x9d\x1eS^j\xb4\xdc9E\x84M\\\xfa6\x87\x93\xcf\xc8\xbc\x14\x14\xe5'\xea\x89_n\xda\xd0\x1f[S<\xf2\nH<cU#)\xa5\xa9\xd9\x9fZ\x9b\xd5\xd36\x862\xfb`\xf0\x18E\xaf\xe2}\x93;\xe6\xf1\xf1*%g:S\xb0[\x16\x96\x7f\xba&E\xad\x16\x7f\xfdb\xc9\xdb\x1bI\xa9\x8e\x06\x10\x15\"\x1d\xc1\x1f\n\xa5\x8b\xf9\x0d!\xdd\xa5\xfcW\x95\xe8ENS\xf8\xcd\x9a\x94\xfa#\xea\xb5\xbd\x8fl\x0c\xff\xa4\xde\xaec\xfe\xbb\x7fXq\x15u7\x81\xce\xff\x16\x9d\\\x04*\x1aV[\xeap\xce\xbdc\x83;%\x88\xfc\xb0\xe7\xde\x89Ey\x83\xde\xcaD\xf6\x86\x91/\x12\xbc\x01(\xcaU\xbe\xb8I\x00\xb9\x1f\xc0\x96P}\x94~U\x86\x0e\xa0\xc8k\xb7\x0d^\"\nu\x1d0.@h\x0fv\x06X\xf2k\xbf^M\x8e]\x976S8\xd7\xb3c3.\xa3\x18\x94\xe5\x1b\x7f\xc7m^Nrd\x84\x1e/>\xa6}\xac\x0b\x025!\x0f\xad\xa9,$fGAA}\x10u\xa9FM\xd1\xd4Q\xf8X\xe4\x0c9\x84\x08w\x9bN_a\xc0G\x11%^\xe8\x97\xf8\x82\x06\x10Zy\x15&Qq\x89\xcd\xd3~\xba\xcf\x10Q\xac'e\xfc\xc8\x85\x17\xfa\x01\\x\x0cU\x18\xc4_\xc8\x1c\xae#\xf6\x99k:wB\xec<T#Q\xe9\x0b\xee\xf6\xd9\xb8\xff\xd2\xcd\x137\xae\x01G\xd77\xdf\x98\xc5\x116\x1c\xb2\x05PX\xe7\x97\xc5LEu\xa1\x00\"\x9d-\x07w/O\xbc\xed\x95I\xbe\xca\x96\xf7\x95\xbf\x1f?~\xcc\xe8\xc7M8\xd5\xef\xf3\xb0\xda\x08\xba\xe9+\x1f\x19),\x1a\xa9q\xbcX\xd36\x87\x0d\xff#\xc4q \xbd\xea\xa8\x84\nl\xc3\x99\x80\xcc\x98\xeb\x15\x87\xd5\xd5\x8d|\xf6\xe5#\xfe\x1de+\x0d\xfb0J\x02\xa0\xaeK\x9e\x12\x1b\xbd,\x13k`\xf5\x82J\x86\x82\xb80\xd1\xb5$\xbea\xd0\x8aG\xc9\xd8L334\xd1\x9a\xb4\xcf\xb9\x17\xa2[\xb4\xc7^\xcb\xaa\x19\x8d]\xfc\x12\x16\x8dhBy]\xfa>;\xbeVy6\xf74\x9eEF\xf2\x92K\xa0En@\x8e\xac@.v=zm\x95j\x95\x9b7\x01\xb3\xb0V\xd4+<'c\x91\xd8\x97o\x7f7\xce<\xb1\xef\xeeR\x9433\x15\x002\\\x0cu\xf8Ue\x1a\x8e\xb7\x92\x8c\xba\xf2\x9c\xab\x84\xcc\x9ax<\xb9\x8a\xce\xadjx\x9e\x8d2\xf2\x85\x1e>jY9\x13@r\x97e\xe1\xdb\x1c-Cq\x7f\x16\xb1\x93\xc1\x01\xfd\x8a\x8f\xcb\xc4\xb9\xcdA\xfa\xbeb\xedb\x07\xb2\x9af\x17\xe9jy\x8am\x18\xa9\xc0\x94\x87\xca7W7\xb5\xa7\"\x1a\xaa\xf8\xc4\xb6\xe2\x80&pq\x1e\xa5U\xabi\xab\xf7pE\xfe^\x8a\x1a\xa3\x08x\xec\xd2\xf8\xad\xc6e\x02o\xabA0\xa6\xa5\x93\x17\x95n\x19\x86\xf4\xb1\x97\xd5z\xd2\x05A\xc3\xb2\xd2\xf1(\x1a\x17\x0e!\x9a\x81bf\xf2\xca\xd1\xe7\xc5\xa3]G\x89#l9iA\x84\x86x\xf7\xef\xde\x7f\xf0\xe0\xf6\x9d\xbb\x0fx,\xcf\xce\x10\x03ax\x1c\xcc\x9d\xdb\x83{w\xef~\x7f\xef\xae\xef3f\x0f\x1f\xec\xc1M(\xbeQ\xee\xdfa'\xd3\xde\xdd\xbd{w\xee\x0en\xdf\x0d\x80\xc2\xb6h\xea~\x00\x83\xbd\xefy\xf3\xf2\xde\xe0\x9e\xdb42\xe2(\x85\xa4\x02\xc5\x0fm\x15E\xa3\x11\x19\x0b\x01\xa3\xd6\xbb\xfa\xeb\x0b\xba\xba\x08\xde\xec\x0b\x15\xe6p\x18\xb2\xbf\xb9\x15.(\xffD\x9dz\xf1\xd2Q\x1c\xc0\xef-N\x11\xe6\xb9T\x0eCUz\x17\xc7\"g.\xa2\xf2X\x84G\x90\xf3\xd3\xd1HH\xa7\x88\x9e\xd1(\x193\xd4)s-\xb2\x1b\x03\xe7R\xe6\xb5Y\x19\xcd\xf0*\x1fi\x9d!\x16\x1b\xe1;6\xc0\xd3\xb9:\xdd \x9f\xee\x0c\xcfc9\xdd <\x02\x8cm\xda\x9abB\xe0l4\xc1I=\x84\xc9\xf6\xb6\x81![\xc0\x90\x7f\xa7\x17\xc8\x16p\xc0\x9b\x19\x8cq0\x11\xec3\xeeWQN\xea\xbf\xe3|\xb0\x17\xa2g\xd4\x02]\xc9.\xbc\x84IQaIH\xb3\x96\xec8\x18\xc4\x81\x0e~[!\xfb\x7f\xe1\x9a\xf0x\x08\x13]\x98\x8a\x15y\xe4\xc5\xa5Z\xe9\xb1\xf8\xdebp\xaf\xa0\x9b\xe0\xfah\x00\xe8\x88\x1a\xc0\x88u4\xf6+\x1c\x19q\xe1\xc8\xe4%\x9d\x0d\xc8\xc8\x94\x00O^\x11b\xb5 \xff\xb4\"\xa2\xe6\xa8h\xc9\x8d\xd5?@\xcbE\xc9K\"\xbb\x9e6\xb3\xae2\xabQ\x9eMa\x05\":LQ\xf0J9\xd3\xd81\x93\xf7V\x0c\xb7\x90\"em6\xff\x03\xe4\xaf'\xc2\xf6\xbf\x03\x038\x80y\x7f\x95\xf0J\x10\xf3\xd1\x84Q\xa3\xc6\x8d\x11\x1b9\xe3\xc7\xe7\x9c\xc1\xe4\xbf\xfd\x00{\xf6j\xda\xbfyi\n\x97\x02s\x00\xf36\x96\xf42\x80_\xafL\xce\xb4\xd1e\x88]\x86\xcd\x8aB=\x13W<\xafZ?\x9cG~R\x94}\x0c\x9a\x91D\xd2\x10\xae\xe95\x126\xd60\x93snr\xee\xae\x08\xcdF\xe5\xec($\xfc\x11fF\x1e\xf38..#\x11\x1d;Q\x07\xcf\x95\xe9b%3\xb4L\x00\xfd\x84z\xa9 T\x8a\x80H\x04\xcb\x13#\x90\x88E\xaa\xcc$|C\xfd\xf3I\x15\x86\xfa\x97f\x18S\xb95\x04o\x027A\x87\xdaH\xd7\x90PGue\x8e\x96\xa0J:\x1d\x12\xde$\x02_\xdf\xf9J\x8e\x10\x97K\xff\x0e\x1a\xdd\xe1\x00V\xa3\xc5\x18Z\n\xb1sE\xd9\x9c\x9b\xc5\xf8BW\xd7J?;\x1e%>w8(8\x1c0\x94|\xa5\x90\xf7\x99\x95\xbc[\xdc\xbc*\x15\xbf\x04C\xc0\xf63\xaf7\xb3\xf6\x03\xc4\x8c\xdd\x87\x82\xd5\x8f\x1fB\x88i~\x18n\x0ca\xe0C>\n\xc7\x88\x067Q\xb3@F\xc9\xf6\xf6\xd8R\xb3\x0e\x14\xa1t\x94\x8e\xb9\x8a\x8b\xf5\xc8M\"\x98\xe3A\x1f\xcc\xcf\x1e\xaf\x02\x98\x04\x10\x0605@R\x9c\xe7\xec\xff<L\xbd\x80\x12\x93\xff\x88\xb7\x1a\x0d\xe0_\xb0P8\x17y\xc7\xd2\x1e67\xd057-\xdb\x99\xea\x11\xf1\xb8+\xb9?\x11\xe86E\n\xbe\x0f\x13\xf8\x17\x92\xfd l\xc0\x80\xa1\xe7\xca'\x19\xf1V\x01,\x02\x98\x06p\xec\xd7\x03\xf0[\xc4\x8f\xb3\xa2\xdaG\xe9\x01a>j\xb9z\xb5H\x7f\x93*\x11\xb4x\xb2\x04\xb6\"\x12\x0df\x81c\\\xeaWxS^q\x0eRQp.W\x88?{k\xe03V4\x1fc\x9ck\x0e\xdb\xc6\xd4\xb8\xd0~xs\xa8iA\xd6\xc2!\x15\x1c\xb6\x84\x9a1M \x14\nu\x84\xda\xb6@\xaa\xa8\x84\\!P\xb8\x80.\xa9\x80\x8e\xab\xd6\x10tb\xcf\x86\xf0\x08\"\xdc\xb1>\xbb%h\xbb\x97\xf0-\x1b\xf3\xd7w\x06\xa8\x9d\xe5\xf7\xe8(\x84m\x97rn\x86\xc2\x1f*\xee\x19\x8f\xcc\xe3\x82\x9d(\xac\xa8'5\x93\xe6y\x95\xbb\xe0&\xda\x93\x00\xce\x1b\xe7\xe5/\x7f-;aa$Z\xf8\x08\xce\x10Df\x11)\x81\x03Ht,\x82\xceo\xf2\x97\xffel\x82\x94\xcd\xb4/L\x1cNa\xc6&LF\xa1\x81Lg<\xf8\xc6\x911\xa0\xc4\x9bu=\xa2\x85#\xadC\x0f\x05O\x81\xf6z\xc3\xb1\xd2.\xc3\xed\xec\xac\xe0\x11,\xae,\xb7U\x08\xecn\xa0?\xe0cy\xc0s\xa1y\xc0%\xe5R,c\x14d\"\xce\xfc\x0c\x1e=\xc2#\xbf]L\x9b\xa1\x98\xa6[\xac\xca\x9beT0\x1e\xb3!\xfe\x89\xb4\xd1\x8b`3d\xc2T\xce\xf9 \x06yc[\xad\xf2ZIB\"-k\x01\x92\xbd\x98 \x87\x11\x1a\xcd\x8c\xab\xedm\xfd\x9a\xcf\xbb\x9e\xf2\x8cS\xcc\x88\xc7\x99\x99\x05\x93\x9c\x8cta^\x90K\xe9\x00\xb2\xaaQ\xcbi\x95ZrNj\xc5\x98\xa4:\xd9xyej\xf9\xdf\xacKz\xf9\x9f#\x86\x82\xae\xe9wy\\\xe6Z\x14\x86\xbab\x8e\xa1\x92\xc0\x8f+\x7f\xb8\xbe'&\x8a_\x1d\x0eZH\xe1\x9a1\x14K\xf2\xff }WXr\xee\xb3\x8a\xd5\xf4E\x99\x97P\xc0\x92M\x80\xb1\xee\x13\x93\xf1\xb4\xb3\xa6\xa5]\xcb\xf2\x1f\xd4\xb0\xbc\xd4\x00`\xde\xd8\xe0/\xae\xbc\xc1\xa5\x18\xc3\xa3B\x0b\x9f+\x86 2\xa2\x8e\xdf\x18\x8cu\x0c\xc9\x8b\xeb\xd9\x835U\xaev\x99\x90\xe4!\x06W\x87i\\./\xc3\xea\x19\x05\x12(\xf3\x08\xfd\xc6F\x0ce\xc0\n\xc3H\xd8\x87\x0c-\x01Z4\xaa\xac\x1a\xb68,\xca\x10\x89e\xd3\xe1\xadXv\xde\xa5f\xd7#\xd1)w~c\x91+\xba\xf3\xd2\xb9\xf6\xa5\xfeve\x0d\xac\xa4=n\xd0\x91\x94\xd3\x91\xa8V\xb6\xe8!\xa4\xa2\x84L\xea\x94\"9.\xea\x97\xa0\xe7\xc1X\xadwY\x9f\xdc\xaf\xfaY\xfcrm\x93\xe3L\xa6\xdb\xd4\x0c\xbcN!|\xd5\xe6\xa5\xe7w\x18(\x12(\xb3\xcf$\xfdJ9\x06\x13,@\xa7=}qE0H\x8a\xac\xa0k\x03\xad\x88w\x83\x06\xf0\xd5\x0f\xe0\x86\xdaKL.ZS;\x14P\xa6\x12\xca\xe8_\x19\x94A\x02\xdc\x99\xf2!\xd8\x8b6\x88\xfa\x13\x04\x17\xc9\xac\x0e\xc7\xd4\x98<\x0b\xaa\x8e#\x03)f\x8b\x89Z8\xd6\xa8\xa8\xadZ\n\xe1\xdcg3\xd5AI^\x97en\x9bT\xee\x96\xb6n\xb0\xbe\x99\xa8b!>Q\xf0\xce\xd7v\x1f\x91l\xc4\xc1'\xddS\x0f\xb0\xcc\x1e\xafy\xd6:6\xb5KD\xfbj\x87v\x95FR~f\x19\x83]\xd1\x91\xb4I\x0b\xf8\x92\\\xa6\n\x00\xe4]\xbb\x0cQ\xc3/\x18\xc2O\xd4K\x8c\xf6s\xb0\x8a\x0b\x93$\xa6Q\xdc\xa9\xf8C\xb3\x7f\xe5W\x9f\xfb\xcc\xb6\xecj(\xb7\xa7ic\xb4\xe6J5\xe6I\xad\x11\x90*0\xd9*c\x1e\xea5\xdc\x82;\xcd\x96g\xf2\xd9^\xf3\xd9\xa2\xf8\xce\xe4\xb9\xbf2x\x0c\x9c\x89\xd8\xa1\x0bc~=\x87<\x96\x9a\x88Z\xf6\xe5\x9cxJ\xcaI\x8d\xf0-O\x82\xc8\xa3\x96\x0c\xa3\xb1\xbd\xc6\x03\x1fL*t@\xde3~\\\xa7\xf0\x98g\x8dN\xe1\x11\xac\xe1\x00\xce\x89\xb7\x8b\x0c\xcfY \xe2L\xb1\x10\x04\xf1\xe2>M\xb8\xfc\xedcYZ\xd2\xd9-\x06\xfdD\xdeG_ \xf6\xacI\x03\xd2\xa6\xe9-4\xb5-\xfe&:/\x127O\x8b\xb9\xddaD\xc9\x032%-y@\xd8ArN\x19\x9bL\x1c\xf2\x80(\xc2\x87g\x8e\xb1\xe49\xbc\xc4\x11\xf7\xad9-^E\x19\x85Q/\x80\xde\xb8\x99\xd4\xa2\xd2\x93cR\x8bH\xd6\x8a/\x93\xe2\xfbEVrZ\xcdJn9M\x99\x00[\xb0\x96\xe8+\x83#O\xd2\xe842y\xb6I\x99\x8b\xf5\x14\xf7y\x99P\n7\xe1T\x13\ni\x02P#\xbbF\x05\x06\xdd\xb2k\xb8\xda/\x10d\x84\x83\x8c\xb3U\x95\xaa\xf9&\xbfo\xf4\x0d|\xac:\xb1\x11x\xa4d\x83\xed\xee\xb2\x06x,<\x82]8\x80\xb7\x82\xc7\xc3m\xb6+\"L\xdfJ\xa7\x04\xb4\x00\xf0gD\x1b]\x06`N\xb0Gp=\xe5b\xea\xdf)\xed9\xc74\x8c\x16v\x86J\xba\xf7\x1b_J\xac\x81\x02\x08\xc5\xcf\x18%0 W\xe1$\xa2kn\x10\x1f\xc2{t\xc2\xabG\x0dpy\x10E\xac\x88\xbf\x14\xd5^\xa2\xfd\xe3\x059#\x8b\xf2]\xf3\"n%\x8e\xe1\x06<l\xa2\x0c1-\xd6Yz\xd9\xf3Q0xuq\xb9\xb7n\xa6s\x04\x0b_)\xfcZBH\x9dc\xa4\xf5.\xbc\xb4\xc5YV\xb6U\xb7\xf4-H \x8aJ\x1c\xa5U\x83\x13\x96y4\xe3\xd9 \x14\x99Wf\xb4\x97/I\xdd\x06\x7f\xb8ZD\x13\xc4\xeb\x81)j\xb72\xd8(\xceH\xda\x85\x0c\xd4z\xd9m\x05\xc7_\x90LB\xa5\xa6\xc5O\xb9\xb4j\xb2 \\a\x86?\xb5\xec\x13BR\xe2\xa8v\xe5T\x14\x8c\x91\xb2\x82b\x95g\xf36HH\xe1\xad\x8c\xd07\xecr\x05NF\x06 \xdf0\xd0M#\x01\x7fK\x18#\"\xc8\xa2\xb4\xa5\x1av|\xc5-x\x17ev%-\"J\xee1\xa7\xab\xb0\x8d{x\x94:\x95d\xab\x82-q\xcd\xeb\xf0V\x1e\xb2\xbb\x01\xec\x0c\xec\xad\xe61\xee\xae\xb6\x96\x1b\xebq%`\x1b\xd9\x83\xb7\x18\xa7\xb3\xe3\nfK\xf6\xc9\"\x91\xdc(\xee\x0eb'P\xd4\x81\xdc\x02\xe0.\x89W\xfepO\xbc\xd2\xec\xc3)!G\xbd#\xd7\xc4+\xcd\xee:\xe4\x19\xf9\xc3-\xcf\x88\xbe\x0f\xa7i\x9d]%\xaf\xc7\x1f\xadyF\xea|\xe2{Nh\x9dN4u\x136\x8bhT[v\xad\xbft\xf6Mu\xff\x8a\x11\x89\x12\x7fE\xd5?\xfb\xe8\xba%e(\xb6\xa7Y\x9c=)\x90\xcf\xbc6\x1d\n\xc2\x10\x0c~\xb2\x8b\x0f\xdc%\xe8\x98\xfcuE`b\xac\xc0\xdb\x99\x02u\xcaNQ\xaf\x93+\xf4\xc7V\xf8\xe2\xe5q\x9d\x03\n%\x08\x16\xb5\xbes|\xd5\xca\xce\xb5\x89\xfc)I&\xce\x89\xa7\xb29A\x8d\xcb\xa9p8*w\x13(\xccM\xa7\x84\x14\xba\xe5\x8a2\x94\xb0\x870'M\x0d\xd6\x944\x13O\xbc:z\xff\xc1\x90y\x02Yd\x15r&\xfd\xd5\x9a\x18\xf1\x00\xc7\x8e\xa2q9n%\x8dA=\xbaM\xfduFFS\"\x83A\xceH\x19\x0crF\x8a`\x90\xb32Q\xe4\x17\xca\xffT\xde\xc5\xfb\xc5\xdb\xf2-\xf9\x0b_,\xeco_d\x14\x94r[~!\x7f\xe1\xa32\xb5\xd7\x17*\x7f\x94\x0f\x8adO_\xa8z\x03_\xa8'\x0e\xfaR\x93\x98\xf1%5I\xcf\x17Z\xfe\x14\x0f\xd5\x1c:\xf8\xb8\xb8\xc1\xbbP3\xe0\xb0\xf6\x8b\xdf\x01\xac\x9b\"\xd0\x0fd\x96\xa4:\xeb\xa3I\xd3\x12\x17\x0eM\xe8\xcdL0\xb2\xad\xd8\x18\xb8\xceE\xe8\x85\xc2t\xe9\xb5\x8b\xa8?\xe4>Q\xfa\xd0Z\xee\x00\xf8\xd8\xd6\xba\xd0\x13\x8e\xc6\xec$\xd3w\x13 \xbf\x0b\xae\x8a\xd4\xf7\"\xaa^\x98)y\x0e\xea(F6\x03\x16\x16\xa9\xcf\x19\xdd\xca+`F\xd8\xc2\x0e\xea8}\x1fG\x83o%\x15P5\xa9\xb2v\xc0\xdcJ\x169@9\x84!\x1c\x96\xb9\xb3\xf4\xf3\xdfJ\xf4*\x95\x8a\xe3\xc4\xeeC\xc8\xb8\x8bi\x86~\x92\x02\x16\xd9\xb8\x10\xbf\x8c\x049B7\x91\xb0\x80\x1e\xa3\xf1~\x00a\x9d\x82ip\xf4\xc9\x8c\x92\xc6\xf1\xde\x8a\xa2^\x15G1\xc8\xf8\x1b0UX?Q\xa8oA\xd8\xc8\x8e\xb0\xfaN\x9cp0\xa9\xe2\xa0\xc9\xa2\x848\x98b\xb2L\x86]*\x185(\x88/Ez\xc8\xa0\xf1\xab#r\xca\xcdbE9\xd1d.z\x13\xca\x8a\x08\x95|\x81\xf0k\xcb\x8bi2&\xca\x0f \xaf\"K\xf3x;%\x01,I\xc0\x98\x06[\x1a\xf5\x13\xf3iU\xf2\xea\xf2\x10\xd7BX(\n\x8b\x93]\xbf\x0c\x80J\xbe\xd4\x165\xc3\x0f}3|*\x89D\x04\xe3\xb0\xeb\xd7&\x06\x95\xb8g6\xb70\x00\xa3\x8d\xb5\xa2\xc7 +\xe5\xac\x0c\x9e&\xf2\x92\xc4$\x17\xfeK\x07\x12\xc1\xf8\xf1\xbe/\xa3\xdc\xf1\xa7\x99G\x05\xe1\x97\x92\x8b\xca\x87\xbb\xe8\x19\xbb\x03\xb9\xfd\x93 F\x9a\xee@n\xe0\x1b\xf1\x95\xc7\xb0F\xdca/\xdb\xec\xa1\x02\x08\xad<\xbc\xbc\"t\x9ce\xd3\x9e\x14\xfb\xe1\xd8Rt\x04\x14\xb5\x04V{\xdc\x99\xc0>\xa3\x9a\xf6OD\xcb\xe8\xd9\x15\x8e\xa8>W\nh\xb7\x1d\x80\x0c\xab\xab\xbb\xe5G\xa89nYV\x11 \xea\xbc\x80\x13$/\xd5\x05L\xe0\xf1c\x88\xec\xdf\xcd0\x00f\x9b\x1d\xeb\xf2\x03\xcb2\xcd\x8a\x05\x9d]\xf3\x82\xe2\xb9\xf6\xd0\xe8`\xa1^l\xed\xb5\x19]tW\xa1\x8b2 }\xf5+\x12E\xf6\x98\xa8\xd3\xa6\x90\xaf_\xa1P\x85\xb6\xbel\xb6\xe3\xcb\x8b\x0dcR\xf3%lCpP\x08&G\xf2\x19\xec\xc3\xa4\x0d\xc9A\x8c<\xe7\xae\xe8\x19f\xde\x8f\xf8\xa1\x940\xd4\x88\xd9\xa9\x1d\xf9f\xb7\x04\xb0N\xc9\xb27\x90.6\x1e\xbb%\x948\xd7&\xfb1\x1d\"a#;\xd7\x99E\xa3\x10J59;\x9b\xd98UU9\xfeTT\xe5\x04oH=y\x8c\xbf\xca\xacGa\xa1$\x8f\xf0\x87\"5&\xfc\x86\xd0\x97\xe7\xfcW5\xb9W\xe8\x04\x8a\x0bb\xd3\xa8\x9d\xa2i\xd0C\xc5\"\xb7\xeb3\xf1\xcd\xd1\x14\xfe\xbe e\x13\x88s\xee\x8f/\x92\xf3\xd8c*(w\x9a\x7f$\x89\x9bT\xcc6>@^\x18\xf1R\xf1\xa5\x88l\x1b\x93\xb3\x9c-\x9c\xdb\xa4F\\G\xa1%c\xce\x8c\x9b\xf8&\x1c\x0e|cHXX5I3~B\xc9\xbcQ\x9ed\xc3\xd0\xc6[t\xccXi}\xd8\xa0iE\xb3\xea\xc8\x8b\xe3\x9f\x96n\x99jWA\x05v\x1c\xf2(\xec4xK8(nJ\x13Y\xae\x8e\xb3\x19\x83`\xc2\x9bC3OW\xa8\xd9\xd0\x1f\xa0\x88\xc1\xa3\x8ag*\x15\x1e\xa8k\xe2\xf1\xfc\\\x82-E\xae\x94\x8d\x8a\x89\x97\x8d\x02P\xfa\x91<1\x8f\xa4\xb0\xa0\xd7l\xbf\xaaeU\xcf\x0f\xf2/\x1fq\x81F\xb2\x82\xb0\x0dg&\xa4\xab\xfarJ&R\xf0\xad\xf8\xf5C\xee\xb7\x80\xae8XXuX\xf80\xf0P\xad\x14=\x19\xd8G;C8\xb3\"^[\x99wcE/k\x92\x1e%\xe8EF\x9d\xf1r\xc7\xea\x13\x19\x7f`(o\xac\x98\xf5\xd5t;\x98\x9f\xc1\xcc\xb6\xb7\xb0\xff\x89\x0b\xfb\x8f1\x1e\xb0m*\xce\x10\x1623bc\x8c\xdc\xf4>\x9a\x8dv\xf1\xefm\x0c\x19c-h<\x16\x18>\xe4\xf5\xfd\x95\xb4\x91\xa9\x9c\xe1\x9e\x12s\xc0\x0d\xbf:N\xa5\x1a/Q\x88\x1e\x13\x15\x99f2\xe8t\x1bfl\xd4\x0f}|.\xf6\xd1\x84\x8dkR\xdd\xf1\x070\x92\xc6\xa3\xc9X\xec*&\xd8\xcd`[f\x1f\xc8\xd8\x9fg\xba\x11q\x99\x90=\x9e\x05\xbc\x8c\xfa\x8c\x1d\x00\xfc\xdf\x04\xff\xb5Md\xc1\xa5\xb1\x04#\x08\xf0\xcf\xd0\x7f\x08+\x06\x11\xec9c\xbb\xc9i\n\x95\xa1\xf3\xf1\xea\xf1n\xde\xe6N2\xc5 \x8aG\x18#\xc1\xc9F\xc8%\xee}60\xbc\xad\xa8\xb70\xba\xd1pda\x905\xff\xe6\xe6M\x8c\x03F\xd1l^SA\xb4\xd0\x8a5F\xb0 !\x9f\xf0\xe9-a\x08\xd9CX\xc2c8c\xff0J\xd0&K\x1c\xc3\x10\x16HA\x96z%\x89\xbcXwkAr\x8e\xc7\xbc\xdf\xf2\xb71\x81\x94\x9e\xbf\x93\x1f\xf2\x9e\xcf\x90v\xc1\x10\xe6-\x94 $\x83/A\xe6\xb1E\xc1(\xf6iEq\x92\"\x1b\x13\xfax\xd6=\x1e\xc2\xca\x87\x9c\x81c\x85\x8b\x86\xfff\xdcmaR8(4\x9a\x12z@\xde\x96.|\xb2pGf\xc2q\xc4(\x15\xe2\x87u\xe5\xc4>\x9cX\x85\x19\xb60'\\\xe8~\xfc\x98\x1d\xe8\xb6\x85a\x038A\xea\xba*_\xf7\xe1$%\xe1g\xf3W'BP\xdb\x1e\x82\xc7\xb7\x94\x0f\xdf\xc1 n\x92\x9d\x022b?\x8dN\xf4\xc2\xad~q'\x1c\xab\x1f\x0b5\"o\xa7\x0e\xd2\x8c\xad\xcc\x0e\xcc\xd8\x12M\xf8~x\xc4\xf7C\xe5\x83b93F \xc4\xfb\x92\xba\xec\x08\xaa\xb2\xa3\x8d\xa2\xec\x9c\x924D\xb5Fy\x9cp\xb6\x9bV\xd8\xf9\xb0\xd4\xed\x00\xc6q\x96\xeeU\x13\xd5\xbdj\xea\xea^\xc5\xc8\xc49\xf1r.\xee`\xa4f=\xba\xd1p\x1c\xff\xe1\x96/2U\xf3EV\"\xe8\xcb,k\xa1=\"\x04\x93b[\x99\xe0 Z\x01M\xe9{&\x1c\xc2\x8f\xc5\x9eMp}E\xa5\xbf\xdc\xcbxJI\xbe\xea\xd7\x9dR2\xe5\xf1h\x93\x0e\xe8\x91\xc0c\xe94y\xf3&O\x10Uz%'HR$\xe4\xebYn\x0c+\xf5\xb9-\xc5\x1cw\xab\xdeE\xa5\x9c\xd4Y\x9f\xb1My\xe6\xd4\xfe\x91\xbd}k\xa1\xc7\xa7\x9ce~M\xca\xfa\x8e\xecVg\xbf\x9b\xb3\xff\xf5\xf5\x1d_\xdb\xa1X\x94\xc2\x9c\xd5\x11\xce\xd4\xe0\x07\xd7\x94|U\xd5\xc3\x91bT1+!\xca\x14\xe1(\x02\xe1\x8f}\xb4\xdb\xf7\x8fy\xea \x9e;|\xc1\xed\xcb\x0e\xb9\xc3\x9d\xe6\xf4\xd4\xaaLXre\xc2\x92\x8d\xeb\x03\xf1xu\x9b\x0b\xe25B\xfd\x0c\xad\xffl\x970\x84i'\x90,\xbd1\xf5R.\xf8\xe0(3x\xfdb=6LIA\x0c\n\xff\xac\xe4\xf8\xd9\xd1\x1a\x9aT C\x9e\xb7I\x8f\xb7\\?\xd1\xa6(\xcc\x05y\x1cr\xedi\xf9s\x0f\xbe\x83D:n\xa2\x8d\x88\x1b+\x9b\xc9O\x0d\"\xac\xbcD\xff\xca|\x84\x8a\x05\xa55\xc3>\xf2\xfb4yI\xd6d\xfa\x9e|\xf1\xfc\xee\x94\x99\x8ev\x0d\\\x83\xdf\x9f-\xa2\x95\xc7:x\x1d\xf2|:\nn2\xa2\x9bVp\xb5\x8a\xb9\xaa\x933:\\\xa0\xf1L\x96}c\xd4%\xc2\xc3\x9c+1\x14\xe7\xde\\Q[0\"\x12J\xd1T\xa3\xbcTb\xcd\x8c\xb6\x99\x12\x01rD\xa5\xd0\x1f\x0d\xc6m\x8b\x9dr\xd5\x1e_G1\n\x9ej\xdd8\x08>?\xe1L\x9fK\x12Z\xb6\x90\x8bB)\xa2\x19#\xc90\xf1=\xa9,\xb4\")\x07\xf7\x0d\x17\x94#\xd2s2\x0c\x8c\x1f\x90\x93s\xcc\xbc\xfc\xae\xc5\xeb\x04\xdd\x95\x14\xaf\x93\xe3<#/\xc9:SJYH\x8a\xd7L\xe2k\xea\xf4\x8d\x81\xa6k{\xec\xde\xfc\xab?\xb7\xf9g\x7fn\xf3_[\xe2\xd8\xfeAl)b\x89:\x02R\xed\x9e\xdd`[\xbc\xcd\xabSi\x8e6\xb1?\xc0b\x8e\xb2xIkCgE\x99d\xf1\x91\xac\x7f\x86\xdeg\xb6\xbe\xdd\x07\x0b\xean\x12\xddx\x06F$\xd0U\x14as\x9a\x87Y\xab\x1b*\xa8\x1dE\xf1d\x91OIV\xafj_\xb4(_\xe8\xd6\xec<4\xb78 's\xf2\x8ed\xf9\x02\xf9\xdf8\x00\xc5\xa3\xf0c\x8c\x8f+e\xbbl\x11L\x85ZO\xebL\x01U\n\xd5\xa8g\xe5\xc8\x18\n\xafC\xf4\xb5\xa7fu\x84\xb1\xd8\x95\xe2\x9d\xdau~\\\xdf\xcb\x0e\x82wmR\xbd\xd4n\xca\xaex\xbbf1]\xb2\xf0nN\xac\xf2\x92v\xcd\xd4Z\xbeV^\xc8\xa5\xd0\xd6:\xb6\xf2*\xf7\x19\xba\xb9\x8ev[\xb2!\x01\x86u\xcaw\x95\x0f\x07\xe3@\xf9\xbb\xe1^X\xbf\xecfQ#\x19\x91\x97)\x8b\xb9\x1b>\xb2\x95\xc2\x15\xfe\x99\xc9L\xb0\x0f?\x1b\x11\xa9r\xd3D{\x9f\xb7s\xba\xad\x148\xad\x13\xdd\xb4;i1\xd3\x80\xb4\x1e\xd2\xe9RT\x99\x97%O\xcd\x85~\x0b\x19{(r\xd0G\x18&\x8c\xbe\xf6\xbc\xc4N\xaa\x15\xedp@V\x02\xe44\xbc\xab\x12\xa0\xa8\xc5\xd9\xa6J\x83R\xaf\x9c\x91\xfcXX\x04MD)j\x99\xb2\x9e(9\xcdY\xc5\xe1w\xe6\x14\xce\xdd)\x8d\x14_\x93V*\x83\x8ev\x82\xc0H\xf9\xd5\xfc\xf6\x99\xf0I\x8b8m\xb0\xbb\xa8\xa0o\x82\x95\x06I\xf9\x9dA+\x0c\x14d\xcb\x91\x02\x85\x0c\xdf\xb4\x0b\x00\x06uB\xa3*\xa2a\x8f\x7fl\xf7\\\xb3o\xf0Xe\xb1\xe2\xfan\x8f\xbb0G6.\x8br\xf6\x07-s\xce\x9c\x90<\x05\xbe\xeag\x00*w\xd5a\x9c\xa0\xeeE.%\x9a\xb6\x8c\xae\x8c\x07\x83J\x8dl\xd9\xd2 \x16=\xa1&@\xe4}\xdc\x19\xc0\x8e&\x855\x08\xee\xa1Nc\x8d\\A\x95\xc6V\x1a7\xb4|56\xae\x85;\x8c5\xbc\\\xac\x8f\x0e\xf9\x8f\xf3p-\xc5H.\x03\xd82\xc1N\x1f[d\x9b\x91\xf6\x8c7\xf7\xe0\xb4\xe5\x7fpU\xf9\xb5\x9c\xec\xb8\x19\xa3:\xaa\x19\xf1\xf8\xacH\xd4\xebv\xfcFxL-Y/[[%A\x8c,\xa7o\xf4\xe7\xb2\x03\xc5x\x9a\xbc\x80\xb0\xb5kJ\x0b\xf9\\\x87ia\nl\xde\x94gJ\x9c\x80\xf9\x8c \xf5Uy\xa1\x1d\xe1\x13\x8b[/H\xa9A\xe5\x13\xf0\x832\x91\xe2\xf6v\x00\x91\x87~ \x1c\x02hn6\xe7\xf9dS\xad\xfb\x84\x81\\<;\x1f\xe1\x04\xa6\x1a\x1f\x91X*/\xb6\x03\xad\x03\x9b\xe1\xe8\xfc)q.o\xe5F@\x06eT9\x92\xc4\xfe\x854\x84%.\\ \x08\x9bX6\xda\xb5X\xcd\xe4\x85\xd9,\xb5\x89A\xd5\xab\x8a/34\x15*9\x81\x9ecED\x91[\x1d\x91gfd8\xc1(\xf8\xe8\xf9\x1d7\xdb\xc0\x17W\xe2G\x0d\x11\xa7l\x86\x9d\xdc\x88\x98\x101\x80[\xe8\x83\x83\x81\x88\xe8\x93#\xde\xff,*\x98E\xady\x93\x18\xda\x1c\xf1:ff{\xc2k\xa4\x90\x86\x80\x1cF\xc0 \x81\xcd\x06r\xf6W^\xf4\xc8`\xd2\xa7 W\xa1+\x07\xb1\xe7\x97\x90\xd2\x0fJ8y\xe7\xb0\xa3\xc3\xcc\x0c\x86C\xee\xe9\xe7\xb1\xcd\x96 G\xa4]\xd8\xd7V\x9a8\x13^\x8d\xf6cg\"Y\xcc2\xdc \xc4\xcaZ\xd2\x18\x1a\x96\x06\xc4\x00\xb6\xf0\x94\x8a\xa4Y,,\xd2\xf8x\x93\xfaY\xe1p\x0c\xcb\x0c7\"\xdc\xb4L\nDDQE\xc9\xa4m3:\x89\xe9f4~l~\x00\x93o\xd3SEV\x1e'*\xb2\xea\x95\x8eY\x06B\x87\xd6\x81J8Nu\xfd\x95S\xc3\xa2\x03\x92\xd4\xd7\x12E\x9cqW\x02\xe3\xf3I+1\xbe\x12\xcb&|o7\x1b\xd8\xc2r\x90\xf9\xf66<\x82\xa4\xdcl\x13F\x83\n\xad\x9c8\xc7b,\xf8\x80\xe7X\x84h3\xe1\xe65\x031\n`\xa2\xa3G\x93oT\xd6 \x9b\x1e\xeb\xdfi\x89\xecz:\x896J\xabM\x15\x9fy}\x1c\x96\xf7\x9a\xcfR\xb9V\x0f}\x88ZOK\x06\xaf\xed\xed\x0c\x1e+(\xdfv\x12;E\xbfC[\x04<\xbb.\xedj\x024P\xb5N\xa1\xe0\xaa1 \x96\xd4\xe2Q\x0c\xb0'\x01\xaf\xa3\x13\x88'Oe\x92\\\xf4\xc6P5\x95]\x14\x04U\xac5\x1d\x98\xbf\xbb\x1e\x98v\xb2}M<\xb0\x99\x8c%.{\x84x\x16\x97\xf73\x11da\xa3S\xed\x88n\xe1\xb4'\xad\xa4\x8a\xa7\xe4\xc6\xd3\xb2\xceuO\xfc\x92je\x0d\xb6;\xb3\xb3\xdd~\x00\x9a@\xcbk\xe2\xb9\xbf}Y\x92\xd4e]\xba0\xf7\xdf~\xdet X\xb8\xc9q\x914\x89\xda\xe55MZ(R$\xb3\x0e\x86\x82V\xf8U\xd6\x1f)CT\xa3\x0cQ\xc0\x8f\xb0\xa8\x8d.\xb4\xcb\x0d\x8b\xd2\xeaa\x7f\x99q\xa2\x0b\xac\xe47\xc3\xbfX\x07\x9c\xcb\xcb*x;\x13\xf1L\x16\xf6\x1e\xce\xe7\xd1\x82\x80\xd1)\x0fTu\x00\xda\xae\xd4\x99'\xd8G'\x9a\xe7&$\xfcz-\x86\x8fo\xb6\x04X\xf0\x17\xe9\x94\xa1\xce\x91\x18@1\x1b\xeae-\xb4\xe7LT\x0d1oeve:\xca\x16\xb5(\x10@\xe1\x9e\xb7\xd0\xf3j\x02\x8f\xb0`\xcdM\xc8=\xac\xda\x87e\xf2'\x18\xa8\x0d\xfb2M7R\x84X\x94\x03HPR\xf4\x0bIbk\x17\x8bs\x9a\xf1\xca\xac*g\x0b\xcb\xben\x96P\xfa3L\x19\xa9Y\\\x03\xb1\x8a\xa3\x96B\xe7\xd7F\xa5\x04[\x958))\xa8\x93\xc9\x04\xe4\xb9%R\xcdw2\xcfN\\\xe9\x0d\x88^RA\x01\n\xf7\xeb\xd1`\xcc$T\xd4\x10z\xa1\x8c\xa7@\xecb\xc7h\xeeM\xca#3.\x08G\x1a\xf0\xf3s\xd2N\x16\xd9\x15r\xe7\xdcD\x94F\x9b4\x96\xd7\xda\x82\xf0\x8eJ\x90\xac\xa3g\x97\x19i\xdb(`\xdb\xaa]#C\xdb\x81\xa2\xba\x99\x99~\xb1RT\xee\x91\x89\xd1\xaa:\xf9E\x12\xdc\xd0\x986:2SK\xbe'\xa5v\xa3\xe2 HZ\x8a8 \xb8\x8fR\x1cy\xc4K/\x1e\x00\xffP\xb8\x97\x11\xa3\xfb`\x91e\xdaxD$\xfd,I\xa9\x9b4+>!\x1e\x1d\xdd\x1e\x07\x10\x8fn\x8f\x11\xcb\xe9ho\x0c;\x10\x8f\xf64\x19\x82\xfd\xb2 y-+\x83q\x97\x96;i\x08{\xcd6\xeb\x15\xfal\x0d1\xd0\x8f\x06\xba\x81q\xce\xf5\x85\xa8\xf1\xc1\xdd\xbao\xf0_?z5\x85\xa0 \xa7^Zq\x8a\xfb\xbb(x\xe5b7\xfa6<aC)p\xc3\x88\x17)\x99\xe6\x93\x0e:\x0c\xd1\xfa\x0bT\xc1P\xe4\xb6b\xf4\xe1\xe4\x8a\n\xbd3\x89)oq\xc1K\xde\xbc \xa9\xce\xf7\xd5\x12\x90\xd2e\xe0\xd5A\x07<1\x9f~\xb8\x8e\x9e\xef/\x9cx2\x91N\xdd\xb8\xe5d\xf2\xf8\x9b7!V\xf4\xb7\x95\xb0\xc9\xcd\xa6\x8cF\xe0\xbf`k\xc8\xba\xddlxl\xab\xd3xo\x94\xf1\x17\xdf 4\x0b]';\xe6)\xf5RW\x0f\xe7b\xcd\x1a~\x96\xc0\x91p\x19\xc5^\xd52UO\x87dj\xba\x9e\x85\x8f\xfby\x96g\xe2\xcf<^;\xe2!<[\xb2\xfe\x85\"\xd1@%\xfd\x9e\xb0Tp\xf2JMI\xf8@\x01Js>\xed\x82,u\xe0\xdcRG\xe0\xcaK\x02\x99\xad\x0f;\x99\xe0w\x0fC\xd8K\x9fK\x86\xef\x96\x03\xff\xea\xfa6\x07\xf6\xbf\x03g\x88\xab\xd9*\x80\xa1n\x02\x973\xb9\"\xa0\x04\x16\xd8\x00\xc2\x13\x90\xf4\xb3dI\xae\xd2\x01C/K\xf3\xa2\xbe\xd4_\xc8H\xc9\xfc\x989\xe6\xc7\x14\xce\xbe\xa2\x1c\xc5U\xa1\x88\x03\xb4\xcd\xf2\xfa\x05\xe2\x1f[s!p\x13\x0b\xaf\xc9A\xfb\x93$\xceh\x9aOP\xb3\xecF\xdf\x7f28zGE6\x1b\x1e\x81\x84%F\xe8<M\xce\x11\xc5?\xacW\xe40M\x93\xd4\xeb\x1d^\xac\xc8\x84\x92)\x8c^\x06\xf0\xcb\x18h\xbeZ\x90}\xe8\xc1v##\xada\x0c\xff\xb4GW=\xa3\"\x1e\xc1\x0f\xe0\x89k\x80\xd5o\xf66C\x0e\xb6\xb4d\x83\"&\xf0:5\xfd\x0f{\xd3\xd5\x88-O\xf4\xf4Ba\xb8\x18\xb7\xe5+\x81\\N\xbdR\x87\xea\x1c\x8c\x14W\\zd\xee\xf6\xc6\x13\x0c\xac\x99\xd7\xb3\xba\xe3[\"\xe0C\xe4Y\x7f\xa9f\x97/\xbf\xe7\xda&\xdaL]j\x18=i\xcfu\x0f\x8fE6\xca}\x8cz\xc4<D\xec\x87\xdb\xb9\x1f\x1b\xb6\xf2\x99\xf0E\xfb]{\xe0\xa3\x14m<s\xf1\xe9/\x0e\x98\x8fG\xe0\xc9\x82@\x92\x02\x06E\xef,\xa2\xcf\xc5\x1e\xd0\x93x>(6j\x0d\x810\x01\xc9\xcd\x818mI\x9c\xcc9\x88\x82\x04Zs\x8aq\x0bv\x14g4\x8c'$\x99)\x15\xcf-N\x11\x089D\x8f\xea\xa7\x95d\x9f\xa9gR=\x17MX9tv\xc5\xa8\x96j\xd7\xb2\xe6e(\xe5g\xb2\xce\x8c~\x89\xf2\xdar\xe3\xca\xd4\x8b\xa6k\x87\xb7\xd8E\xb4\x11\xaeN\x9d\xc8K\xcceJfQL~N\x93\x15I\xe9Zp\xbe\xee\xad\xb0\xeb\x94PE\xb4\xec2\x06y\xa9$\x88\x87Mvj\xe2\xb2\xdd F\xbd\xb2\xcax[\x8fo\xdduJk\x89\x98\x03\xe8=\x0d\xe38\xa1\xacuHb\x08c\x88\x8a\xf4\xbc)\x99$\xe9\xb4\xdf+H&\x8f\xb6\xb3\xb0\x98\xba\xab=s\x9b\xbc\x0c\xd1\x08\xf5\xeb\xb2\x7f\x12\xc5S\xaf\x8c\xbak\xff\xec\x12&!\x9d\xcc\x01\xc1f\x1f\xd0\xa5']\xd3\xe5\x11\x91\x0b\xfd\x04r\xfdq\x88\x81\xbc<t\xf83\x0f\xc5\xcb\xf1\xc7\x94\xcc\xc2|A\x7fa\xdc\x12\xe6\x9c1vc\x1e\x00_\x1d\x1ep\xf8\x95\xd6\x15\x13\xf22 N\x842Eqj5b\xa8\x13\x9d\xae\xab\x90\xfc\x14\x16\x8aG;\xd6\x15m\xea/\xe2\x1d\x91\x00\xbe2!\xe4\xe8\xfa\xaat\x1d]g\x95\xae\xb7\xe9\x94\xa4d\xfa:\\\xc1\xbf{\x01\xf4.\x9b\xb5\xba\x8e\xaeP\xab\xebL\xad\x11\xc0V\x8a\xd7\xf07C\xb6\xe2\xa1%\x8a\xe9`\x18)~\x18\xfb\xbc2m\xa3\x86\xd6\xd1_\\\xdd\xa6(;\xc3\xa6$\x92*\x05\xeah+\xf7|\x91\x11\xc1:\xean\x95\xbf~&\xb6\xdaGGW\xaf}\xa46\xbc\xb47\\I=\xee\x02\xec\x12d\xe5\xa7\x1e\xd7\x93\x96\x90S\x1fY\xbb\xef\xa4\x1bQ\x11\xd1\x88|\xca(4\xb6\xb467z\x9eo\xce\xe3&]\x82\x16XCx\x97\xdb\xbc\xdcJ\\4\x87>K\x93\xe5aL\xd35\xd7\x95*\xca\x9fv\\\xe9V(\x81\x0b\x7f\xc3F\x95\x04\x87\xfc\xda\xa4B\x14*\xdd\x1a\xcd\x08%!\x11KT\xfd\xc8\xbc\xacp\x00\x1f\x88p\xe5\xecPmA\x1e-D\xdd\xd9<\xef\x85F\xa2AHF\x99BH\x87\xf0\x9aT\xe1;\x9a\xca\xea\x06\x15\xa8\x17u\x0e4\xfb6\x00\xe2\xbd#\x01\xbc\xf0\x03xw\x05\n\xdc\x14\xfc\x90\x02\xeb0\xa1\xd2|-n\xa0\xb5\\\x1ao\x9b\x17M\xb36\x8c\xfa\x91\xf7\xe4K'\x9a\x81\x8d\xcb/\x9bt\xe1]\x15nN\xa1BgJEf=\xbe\xb1&>Jr\xb8\xa5K6X\x19\xa3L6\x80F\x0d\xe7i\xaa\xcd\x88yJ+\x8798\xfc\xd2o\x04\x89\xd6\x80\xc01\xb7\x15;T\xb2\xa8\x07\x02\xa3\x02\xcf+\x87M\x070\xa4W\x01C\\\x03\xc32\\i\xf0\x15\x04\x18\x1a\x85_\xde}\xdb\x19\x11XB\x94\x9a(Y\x1e\x13\xd5\xc9+\xe6<\x07\xc7e\xea\x11S\xcc\xd2%#P2\xdf\xf2?y7>\xcf\xd2S\xf4`T\x9d\x17\xcdG\x81\xc8\xd7\x1c\xc3>/\x06\xa4\xeb\xcao%\n\xdd\x8e&<\x1eT\xb0\xf8\x16\x08\xca\xe3I\x7f\\\xc4U\xddS\xc3\xa0aD\xdd:\xd8\x8c\x8b\xea\xa8\x90\x97\x96\xa1\xd8\xea}Q\x88 hP\xe1JCT4\xf3U\xc0\x82\xf8\xe8\x17V\x98Wt\xcba[\x8a\xf2$!\xde\x1b\x12\xc0\x0d?\x807\xeaR\xe9\x02\x01\x1d\x89x\x11\x0d\xd8\xa4\xe4o\xbems\xb5R\x1a\xf3\xfah7\x9d3o\x86;\x0cA\xee\xca\x92ig\xea\x86\xf7\xdf\x84\xb0\xd7\x82\xa1\xc4\x15C\x89\xc4P\"14\xe5\xa6\x10\x81\x97N5\xc3\x88\xf7\x8a\x04\xf0\xa3\x1f\xc0\xabo\xe7 ,\xc8\xf7\xeaZ\x90\xef\xcf\xc40\xe2\x8e_\xda\xc9\\\x1b~\xfd\x87\x91\xa8\xc4\x9f\x8e\x88\xf4Lp\xba\xcfT\xe8\x10!\xcc\xb4\xf1\x10\xcdu\x14,D\xbd\x9fg\xff\x95\x88\x84.1\xa6\x87\xec\xfa\x89x\xc6\"z\x8a\x93En}\xab@W,\xd1\x8f\xc2\x00:vr\xb1\xb5\xbc\xb9\xcbo\x1a\xa4Xv5\xf5rZD\xd7\x02\xfb\xbf\x06\xd1\x1d\"C\xdd\xf6\x02\x14\xe1\x95\x15\xb7p\x8b\xf3\xa4\\/\xd2\xe6e\x89\xde\x95\xb6\x11\x02G\x0e]\x18\xa0zI\xde%o}S\x0c\x1e\xf7r\x04\x07<\x91\x0bG\x89\x14Q\xa2\xbc9\xe07\x07\xcd|\xf9\xeaepYt\xa0 \x95s\xb8\x9a\x86\xe0\x9d\xf9\xd1+\xf3\xa3g\xe6G\x98\xa3\xcaK\xe3\x00N(\x13-b\xe5\xcdoT\xb0\x86\xb1\xe0A\xb7\xa1g\xd4\xb0V:\xec||V4\xea\xec\xf3\xb7\xe7qi\xf2\xb1w\xe6\xa8L\xe0i\x9e\xe6Eut\x1b\x9aW7oep#\xaa\x89S\xae\xcc\x85\x89\xaf\x07\xe5\xdfRg\xa1\x89\xd9\xac\xcf\xc4I\xf9[J&Z\x95\x15\xef\xff\xe6Me\x00\x15}\xae~\xb2R\x99\xa0\xda\x06\xcc\xd3\xec\x1f\x93\xe5\x8a\xaeQL.~\x0c!\x8f\x85\xa8\xfd\x1bm\xa6<\xadM\xd5Qc\xdc\\\xb4\xd2J\xcd-\xd4\x7fS\xacZy\xfc9N\xcec\xf8L\xd6\xd0\xfb\x1bl\x03\x85m\xf8[\x0f\x92\x18\xd8/\x89\xc7\x06#y\x05z[%\xf8D1\xfd\xb2\x16\x87\x16)\x1c\xf4\x86\x15cBu\x892\xa9\xd7j\xc1\xadJY\x08e4%\xce\xc1~\xb9\x0e\xcd:\xcc\x955pT\xae\x1b7\x8ey\xa6\xc4<S\x91\xa7\xd4\xa6\xf2l\xcc\x94\xb4\xce\xb4ytWfzM\xda~k\x1fWg\x0f\x8c\x90H=\x0d\xae\xd5\x1d5\x0d\x1d\x80\xaa\x942\x98\xac/\xdb5\xec\xda)^\x1f\xbb\xf9\x17\xce\x908M\xf0?aB\xa8n\x90N\xa6\x81r\x03\x88\xa0\x01W\x83@\x0d\x0e\xd5N\xd0m\x15\xbdk\x15\xe0\x98\nT\xe6|\x85Z\xbc\xa7\xab\xf6i\xf1\xeb\x94\xd0\x9fe\xf3og\x8c\xb4\x98\x11E\x19\x7fZ\xcf\xe4\xed\x16(\x12\xb60\"\xc2\xe2\xbf\xd9T\xbd\x0c\xfb\xf2n\xef\x1d:I\xf4\x9c:\xcb\xec\x9dYs\xd2\x9f\xc5\xe8\xdf;\x89\xc5\xb1\xb35\xf3\x8a\xe4\xf4\xec\xd9\x95\x93\xd3'WNNo\xe3\xe0\x0bI:\x9cN\xcd\xc5\x084[\xd3 \x90\x13; \xb7\xbc-\x04\xe1\x16\x1d-\xea9\xa4\xab,z\x12\x97\xb6\xaa$.,T\xc5m\xac\x83]<h\x96\xdfNb^\"[\xa9\x96]\xde\xfc5\xc2\xa0\x16\xf9\x80\xfd,\x1f6\xcao\xcb\x07\xcf\x08Y\xd5\x8aoW\x1f\xd6\x9a\x95\xb7\xaa/i\x0bx'\xb1\xa6\xd4x\x12k+\x88\x17\xb7\x9b\x15\xc4\x93\xd8\xa1\x0ex\x12[\xea\x80\xe3C[\x1dp\xe2eq\x00\x17Lh\xc9\xe2ks0\xc9b\xb4%\x8b\x0c\xda\xce\x92\x88\xc7(n\xff3\xe1\xf6g]\xab\xd7&U\xf5\xde\x13j\x94\xa6\xb2o\x92\xa6J\xae\xd5\xdan8\x9d\xba\xb6;\x97\xe7L\x83e\xdd\xaa\xa7\x8f\xaf\xf7\xe2\xc8e\x9a;*8F{?N\xc2\x93\xb9\x17!$\xd9\xfb\xc8\xe3\x08\xcfEk\x1f\xc5\xf9\xce\x1d\x88\x0b\x1c\x0d\xb45\xdf\xc4\x888\xf5\xe7\x01e\xcd\xfa\x06-\xec\x8f\xa8i`\n\xc9\xf1\xcbz`\x82o\x16\x1f\xcc\xa5SP\xe1\xc5\xa2r\xdd\"uM\xf5c\xd3\xd9c\x1cb\xa5\xb6\xdf\xeeC\xac\x19G\x8a\xca;\xf1\xf6\xb6\x0f\x89GF\xf1\xd8o\x1e;V\x8dbql\xb3c\xc7\xa0\xbe\xd1\x1e;\xd2A\xaa\x12I0\xda\xad\x1f\x1e\xb5\xa5\x8fbJ\xd2\x8cL\xe8\xf5.\x7f\x99Q\x89\xb8\xd5^\xe7\x18\xe2\x16\xdf!\x1aJt\xa7\xb2.\x8c\xcf\x89e\xbf\x12\x16hx\n\xab\xdf3\xe9\x933\x92\xae\x1dZ\x96W\x81\x0e\x85\x11\xc6\xa0\xfa\x05\x8e\x04\xc8\xe6 \xd2bR\x12\xb73-5$\xc9\xf2\x13\x9a\x86\xff\x1f\x8e\xfcE8r\xd5X.G\x14\xc1DV\xd7\x8d\"\x92\x87t9\xa6\x10\x8cx\xe6(\xb5\x1c\x02\xb0r=\xb5\x9e\x04\x07i'\xa9\xc5\x9a6\xd0q\xd0\xa2\xa6i\x0e\xae\xa9s\xaa\xee\x90$\xa5\xae\xbc\xc0:\xf6~)\xbcwZNf\xd6\xee\x0fk\x17\xbd\x84\xa6q\xd2\xde\xfe\x9f\xa4A\xca\xfe\\\xf5\nU\xb4\nMc\x9eCfh/\xc5\x98sW\xc3\xb0v:n\n\xb1\xc6\x88\xbb\xea\x80\xb4\xc1\xc8m\xea\xad\xec?\xaf\xfd\xe9\xa6\xf0\x11}-\xc3\xcf<\xfe\xfd\x1bt>8\xfb({\x8f\x9a\xf8I\xdcT\x01\xcd\xe2\x00\x16\x0c\xc7z\x7f\xff\xfb\xf1\xf1\xd1\xeb\xd7\x1f?<\xf9\xe1\xd5\xe1\xf1\xfb\xc3\x0f\xc7\xc7\x7f\xff{\xaf\xe9\x08\xb2bog\x0eJ\xa3y;\"\x18\xaa5\x91z\xb5& \x05Y([j\x88\x91\xcd\xe5\x87\xa6\xf4\x8eg\xa0^\xae\xe8\x9a\x87O\x17`tSDL\xdb\xf7bU\xc9\xb5\xb2\x04a\x94\xd9\xeck\xe5\xebb9-\xca\xb3z\x97kJ\\\x93p\x9fY\xe9\xd2\x0c\xf3\x0ex36\xdei\xec\xe9L5\x86v\xd7\xdf\xa0\xd2:\xe7*\xad\xd3\xb8\xd4d\x9d\xff\xbfM\x93uj\x87_\xa1\xee\xd3\x14XT\x7f\xad\xe2\xd1\"\x96\x0et+E\xa9\xb5*\x95Z\xab\xaa\x82I\xfe\xac>\x10\xac\xc1*VuV+\x17\x85\xcf\xca\xa6\xf0Y\xb5)|V\xb1\xdc\x870\x84\xb3X\xdc`[\x11Q2\x00\xe2\xadcF\x9c\xfc\x00\xd6\xd7\xa7\x11Z\xff)\x1a\xa1\xf5uj\x84\x84\xff\xbdM1\xb4\x8eK?}N\xb9O5\x94{\x19\x07p\xcc\xf6\xc9\xda\x81\x16\x9ft%l\xc7\xff!\xc2vn\x85\xe6\x92\x13\xb6%\x1b\xefI\xec=u/\xbby\xf1\x0d\x84\xed3'l\xef\x15\xc2\xc6n\xf5\xf38\x9bG3\xfad\xb1p\x8d\xe6\x7f\xef\xac\xe8~bWt\x1f\xc7\xa5\x83\xed\xb1\xba\xd7\xcecqC\xec\xb5\x13\xdck\x17q\x00\xe7\xd4\x0f\xe0\xe2\xfa\xf6\xda\xc5u\xee\x8a\xf74\x9c|\x86\x11\xdb\x10\xe3\xe6\x86\xb8\xb8\x82+H\xd5\x18?'\xe1\xb4\x89\xcf\xa8\xb7\xa2JRn\xea?\xe4\x89\xd7\xe9\xce\xceC\x1f\xbf\xe7^U\xe6\xbd\x00\x07 \x92\xd0\xe8\xe2\xfe*#_\x11\xf2\xb9\x13\x80\xd8\xa8K\xc3!\xfb\xa5\xc9\xde\xd1\xe8%\xcf\xe6m\xbd(9\xbe\xe5\xfa\xbai\x1d\nM_\xe1L\x82\xbb\x7f\xbb\xd1N\xa00\xc0l\xe0\x01\x02\xb3\xfe\x16\xec\xc0\x80A\xfc1W\x1b\xee\xec\xf8\xf8\x99\x89/\xc0\xcc*E\x1b\xa3\xd8\x90\xfb\x90-X}-\xd8\xa5I\xb4\\\xc5GC0e\xc1i\xe3z(\xf1V\x8d\x8a\xa1\xfcn\xad\xfc\xb9p\xed\xff#\xd6\x8b'\x8d\xc5{\xc2H\x91\x83`\"\xd4\xc9\x98\x1f\xda\xa3\xbe\xcf9\"\xfb\xfa\x959HZ\xa4\x16d\xc0\xf5\xd0m\xd9T\x05o_\x84\x07u\xe0\xd0\x08\xcf\x92gB\x01(\xd1\xc0P\xf5\x18\x8a\xf5o\xa6\xce\x87\x06\x19\xc5;E`\xaci\xfdIm\xfd\xe3\xab\xae\x7f\xd3\xfd\xba\xb1\xfeIke*\x15e\xb3E4!\xde\xc0\xde\xa68\xa6\xba\xb4\xcb\xd0\xd0Q\x1d\xa5\xeb\xca\x05\x83\xeb\xdd\xe9N\xd1Z\xeb\xdd\xa7\x91\xac\xae2\x8b.V\xa6o\x8d\xcf\x16(U\xc3\xa0.x\xc5X\x11;\xd8\x18\x92\xb8\x1c\x99\x8c\xa8|\x16\x8e\x1e\xc5`]\\\xc1b,.\xa2V\xe95h\xb8_{\x95\xa6\xab\x16\xaa\xa2\xa3sZ\x1f}\x99\xa6\xc7\x18\xe3W\x9cLi\xe5d\xc22gQ\x95d\xb1\x83\xe6\xa1\x8fw#\xfb\xe9n_\xc4\xb4\xb6\x88\xd1\x95\xd6\xef\x8fXWa\xba\xb6\x86\xdd\xd4V\x85.\xa9\xa9\xb9R\x10\x14\x0e\xf0L*\xa8\xbd2\x99\x8ea\xc8\xea\xcc\x06\x06=\xd4\xc5\x95\xb5\xa0\"\xee@]\x92\xf2hQ<\xbflH\x11\xf3=\x97\xd6\x10!\xad$\x13Le0H\xac$\x13\xc4o\xd2\x16&\xd0i\xb2n:R\xa7\xd9&z\x1db9S\xed\xd9\x97\xba\x9d\xdc\x8e\x91 \xad^\xff\x92\x9fH\xdb\xe2\x07D\xbf%\xa0\x03\xee\xd9\x8f\xcb`\xb2\xfa\xeag\xc8[je\x1e\xda\xb2\xf3Y3\xf3\xb9D\x05\\\xa0\xd6\x15\x85\x9a!\xbc\xd7H\xef\x87q\x00Otz\xd7\x0fO\x9e\xbe4h^\xdf\xb2\xf7/\x1c\xa4\xfd?\nw\xbd\x96\xfc\xa15\x8f=kF\x99\x92\x19\x8eTN8\xaa;\xeaE%\xfdK\xf9\xaf*upK\x19\xf8\xd9z\xea\x1er=\xc0!\x03\xc8\x1f\xb1\xd7pO14z\xd4..\x16ho4K*\x87\xd3\x08ut\xec\x9f&J\x18!\xa9\xa6\xef\"%o\x1c\xfb\x01\x94.\x93Jh\xc4\xfb\xf5\xf2$Y`\x85\x04\xdb\xf3z[\xb4\x06\x11\xf5\xd7\xdbx\xf4\xa4P/\xbeu\xd1\x06\xbe\xb5i\x03\xdf\xb6i\x03Y\x17\xaam\xed\x8b\x9aE%\x80\xb8\x7fT\x12\xc8\xaf\x01[\xa6X\x97\xfeK\xa4\xc4vH\xf3\xf5\x8cz6V\x04\xc4\x82S\x91\x1b\x97g\xda.\x8f\xf6\xcdFk\xa3\x87\x1acP\xe6{0\x98\xde\xac\xa6m*\xb0GOc\x1a+\x88w\x9b4\x81&G\xf1\x94\\\x90\xe9{\xf2\xc5\x010\n\x89\x7f#\xa2\xce\xddz\xf9\xe9\xbd{\xeb\x08\x1cm*l\x17\xcd<e\x98\xde\x93\x9f\xf4\x80\x1d\xcd\xeb\x15If\x98_\xfb\xa7\xf7\xa8sd\x7fp\x0b\x8f\x01|\xa8]b\xef\xb8N\xef\xed\x9b\xff\x96 \xbe}SL\xf1\xed\x9b\xeb\x9c\xe4K\xb2\xbe\x02\x9e\xbcS2\x8c\xb8\xf5\xf3:\\\xb9w\xf1Ul\xd5rxu\x0d<\x98\xfa\xe1\xe4\xd0\xa1\xab\x0e\xe4\xe0\xdf\x86j\\U\x81\xe0?\xb6\xd9\xcb\xec=\x0e\xd3\x16c>\"W\x87pa\x84p\xefn\x1d{!\xa7,\xd2\x94]\xd2I!\x17;\xf6\xde\xa9\xdb\xec:\xbb\xed\xbcI^u\"\xa6\x9d\x9a\xcf\xaa\xb3R >\xce,\xac?/WY\xaa!\xe4\x9c\\ \x052\xae\xee#\xbc\xb86\xd0\xbf\x8a\xb2\x0eK\xbe\"\xd7\xd5/7C\xb8\xf7\xdc\x1b!\xc7r\xb2 \xe3\x9eK\x0f\xa5\xa9\xc3\xb1\xfc\x85Y\xbb\x04\xdb<I6\x06\xeabb\xde\xfaa$h\x94\xec\xf1u\xb8Z\x91\xd4\xef\xff\x91D\xb1\xd7\x0b\xa0\xe7\x17\x9fjT\xe4\xcd\xb1O\x92x\x12vX\x95\x1f\xe5y\xe14QPxos\x81\x16y1\x99eD\xc7}>&\xc6\xf2\xba\x9f\xbe\xf2\x12\xc3\xcc\xb91\x8f\x97\xd9e\x94?\xc5\xb0\xc7}\xce\x14\xc2\x01\xe4\x98\x92|\x1fB\xea!\x7f\xd8\x8f2\xc1'J#\xe0\x88\x8e\xb5\x94[\xbd.}wOo\xf5*\x10\xc0\xe2\xf5\xad^\xa6\x8a\x1dP1\x16D\x0d+\x8f\xfd\xabA\xed+\xfb\xb8\xcfD%\x84h\xb4\xebP\xe79)\xed\xad\xb8\x08\xa1\x97\xa0\xc7\xae\x0c\xc4\xcd<\xa5\xd0j\xb3\xde\x96\xbc\xcc\xd9W\xcfD\x95(Q\xfdBW\xd7X^\x92\x92ci\xe9!L\xeaT\x14\xc7\xc4$N\xf9T\xd2S?\x90\xf7f\x8b\x90R\x12{[\xbb\xc2\x12\x83\xdaEM\xd1\x13\xebV\x00\x01\x1c%\xcd\xa8\x13\xba\xc8-\xc4\xfd\xa0\xec\xc0\x87f\x1fJ\x85X\xd86XN\xe4e\x06\xf8%\xaf\x8d\xd6,g\x8b\x0f\xa5\xfaV\xe3\x0e\xed\xc6\x8eH\x8f^\x97\xb4\xc9*\xbbV\xf5 v\x897\x98\xda\x12#k\x0b!4n\x91\x98\xa6Qe\xac.CU\xf4{\xef\xdc\xba9#\xe9\xda\xf1Lq\xe4\x82cK*\xf2\x16.8\x0d\xc0V\xf2\x13\x8a@s\x8e\x03\xbc\xd6\x11~\xa1\x14Z\xe3Z\xa2\xad\x81\x01\xf8uG\x12\xd0\x03\x86\x13]G\xc8\xd4O\xae\x1f\xd4|\x82\x9a\xf0'0\xf5\x19Ok=\xbaT\x8db\xc0d\x9fbNT\xcf`\xde\x00UOz\x80 M\xf4\xe5\xc15\xc3\xe2Z\xa1n\xb0\xa8 KP_q\xeei\x89y\xbb\x89\xaf/S\xa3\x19\x08\xe3@\\6o\xbd\xef\xc2\x92\xc2\xe9!\x1c@\x0f\x19\x1f\xd8\x87^\xd03c2#\xc1=\x8d\x1eU^\xdf\x82\xe96\x1c\x8fE\xa9\xfe\xad\x01\xba\xacn\xa3\xd2\x14\xffE7\xa3-YBJ\x99\x14\xaei\xe1E\x83gN\xaf\xc9Y\x82\xd8\x01N|\xdbg\xb2\xfe\x06\xf2\xf3\xd4iE\x97\x159\xd4\x01\xad\x8a-VM\xd9\xe9\xd4\x19?K;n\xb0\x00\"\xeb\x02\xd7p\xad\xe1\xa0\xf2\x08\xf60?\"\xc3\x14\xd8\xe7\xf9\x90\x1a\xdbAU\x03`\xcdZ\x1b\x01\x84\x03\xf0\"A\xe5\xb09_\xb4K\x8b\xd2\xb7\xbcb`b-\xc8\x9c\xba\x83\xec]t:\xa7\x1d\xe1& \x93\xca\x08\x95\x86(;}\x12\\\x8f0\xbd\xa7F\xbb;\x98\x06\x8d\xbd\xb8\xe3n\x81Tj2\\\xa7\xae\xd0\xb8|E\x0c\xfer\xb5C\x82q#\xddz\xe4yYx\xac\xdc\xbb\x18K\x85\xe9\xb2`\xe8\xbaJ\x9djL\xd4gf\x0c\xc8\x01}?(u\x7f\x03\xad\xf9\xd9\xa9\x97\x93\x9c\xbe\n\xbb\xa8\x07\xf8\xbeF\x0f\x99\xdd\x00v\x06N\xbdD\xd9\xe1rE]l\x0c\xa2\x17\xf5dR\xe4\xf4\xba\xe4\xbe/\x96\xb1\xca\x8c:\xf0\xa2&#\xa4\xd3l&I\x1e\xd7w~\xcb|\x9ex\xb4T%\xf1m/\x04X\xfeq\x07\xbd\n\xf6\xfe\x83+{*\xfaw\xa5R\xa0P\xaa\xaf\xd4\xf3K\x83\x94-\x03\x9eD\x0d\x1d\xf1nc]\xf1{\x917\xc1+\xeb\x94\xf3J\xe2lW\xaa9\x8f\x9d\xa46E\xe6\xd2\xb3\xbb\xf2\xb2\x94R\xc1\xb3@5\xb7\x19*\xe4]\xaa\xe7\xad\xcb\xea\x91/y\xb8\xe8\"l\x9d\xd1\x82l8\xb5/\xb2f:l5\xd5\xe1T\xbf\xb6\x18\xa8\xd5?\xc6ty\x95\xe2L\x94\x96\xf7\xed\x9cb\xb5z\xeb\xcf\xb1_S\xb5Z\xcf<R\xa9j\xd0\xe6;V\xfb\x98j\xf3\x80\xca\xeb\xd2\x91\xdf\xe3\xbb\xf4M\xd2q\xbf\x0b\xf1\x03wx\xa7\xd3\xa5\x10Y\xbas\x16\x86j\x91-<w\xec&]\x96\xc2e\\\x17.Y\xdf\xa3(\x80xl\x150\x9dX+6\xfd\x97\xc4\x95\xb8U\xbc\xd1\xbb\x08{\xa8\x1a\x8b\xb5\xa5v\xf5c\xaa\x9d\x91-+\xa2\x82\\\xcf\xea\xe1h\x8bf\xba\x8c\xa2#r8\x0e\xa5\x04\\\xd7\xf1\xb8\xaf\x96\xe3P^\x12\xb1\x82n\xa3H;3/\x08\xfa?\xdc\x9a_\x84\xf4\xf5\x95\xa51\xd75\x02e\x13\xff\xa6w\xb9\x93W\x9d\xb6U5\xf5m\x1bYi!\xd5\x9c\xb5\xb6\xe3P\xd5\xc4\xea\xb7xg\xc9S\xb4\xd8\xe1,, \xfb\xab\"%\xb8\x8a\x08\xeaQ\xe2\x8e1\xec\xb4{\xd6\xc1\x0cY-\x98\xe7\x80-%J\xaa\xf2\xaeK\xf1\xf1)\xd6\xd56\xe9S\x83\xc2O\xd6m'\x9d\x12z\x14;\x0e]Wn\x9a\xfb\x03c\xa1MYa:\xaaT\x98n\xcd\xb6\x9c`\\\x90CVd\x0f}\x1a\xb1Z:\xc6-\xc9\xa4\xc4I\x00K\xc6J/}\x14\x13\x96e\x9eZ=\x88l\xcb\xe2tZ\x9d\xa6I\xbe\xfa+Xq7\x1b\x9e'\xb2\xdd\x1d\xf1*\xd7_\x11\xf4N\x0c\xbc\x96so\xd3\xb9\xb0+jr\xee\xec3\xce\xb9\xb7\xefk\xf5\x12\xe0A\xab!\xda\xafFc\x1fc\x180g\xf9(\x0f \x19\xc3>$\x0e\xc6A\x0b\x1d3\xc3@\xa2\xa0\x1b\x05\x8e\xaa\x94\xb7\xd5\xfc\xa4P\xb0\x00\x12OG\"\xe5e\x18\x7fgQc\x1ev\x913\x90\x0e\x89\x84\xcbK\x1eC\xb0t\xec\xe5\xa8\x0b\x0d\x97\xfdp\xaf\xd1.=E\xd9\xfb\xfc\xc4\xb1\xc0g!\x03\x0eM>aE\xa5\x14nu\xe6<\xba\xa2\x13r[\xda\xe2<.\x12\xe3t\xc8\xa7\xa5\x9f\xe2\x8a\xf1B]&\xe9\xd9f)`\xa6\xcc\xd2/n\xba\x9fj\x9f\xc9\xfa\xed\xac\xc3\x90\x8aC\x8d1s\x9d y\x0dFB\x1eq\xee~\xc4W\xb42lW?mH\xa9.\xdd.\xba\xab\xd1\x1a%\xbf\xfa\xc8\xcf\xba\xf7\xf7\xf2*\xebb\xe0\xbdq\x8d\xb5\xb9\xac\x9a}/\xc3\x8b\x0e\xbd\xbe$\x9dT\x18\xcb\xf0\xa2\xeb\x99\xfa\xb2\x92\x8f\xc8\xa9\x137\xa3Yc\x06p\x00ob\xee\xc2\xf2\xd5MPZF\xf1\xd5\xa7\xc3\xbb#\xbc;\xd7\xb9\xa5\xa43&jC\x1eA\xdf|\xf69Zu\x80\x9d\xd2\xfe\xeb\x90\xce\xfb\xcb\xf0\xc23T$6tV\x17\xbe]\xa5\x04\xc3\x1ecMzT\xb9\xe3<\x90_\xe7\xd1\xa2\xa3\x99\xa1\x18\xcc\xefW4l|\x8eV\x1fc\x1a-\xbau\xcb\x81.\x87\xdcM\x05\xc5\x13\x82u\xeb\xafi\xe5\xd0d\x06\x03}\x7f4\xfcL:,/\xad\x18 \xae\x80R\xac\xbfkF)\xd6dw\x94b_}\x0bJ]E\x92\xf8\x87\x13w\xab\x940\xfa\x18\xa3\x9a\xb7\x92\xbc\x0d#+[\x18^\xc9NS\xa3vY^L\xa4\x8b\xaa\xb1yJ\x81\x96J\x18\x08vlo\xedL\xd4\xf3o)\xfb_0n\x1a\xc1\x87\xa2J$l\x9b\xa1\xd2L)\xfd\x14\xdf\xde\xbc \xdb\xdb9\n\xa9\xa2AC\xa1ry]\xfa\x01\xe4\xc67.\x03P\xcb \xfd\x17\xadJ\x92vY\x16Z\xf1\xc6b\xdf\xd9\xe5Zv\x85\x16\x8f\x12y\x89q:FY\xaa\x17\xfaN\x85\xc5L\xdb?\x00\xf7\x88G\xf5\xb2F?\xaa\x97!VB\xbd\xa4\xe9&o-N%/\xae\xc3\xaf\x14\xa9\xb2x\xa9\xcaKF4R\x11\xc3\xdb\xfa\x01\xbb2\xe1\xac\xea\xf6\xf6\x04\xdf\x1e\xb4\xb8\xb6\x82n\xafM\x02\xc8P\xe3y\xc0H\xdbp\x08\xef\x84\x98\xf3\x9cad\x86/\xf04\x7f\xa1\xf0\x0c\xf9/X\xdc6\"`\xa5\x00\xda\x87\xdd5\xaf\xec\xe0\xb9*SQ\x1cZ\xdd\x98\n\x19C\xd0\x91/\xed.\x86\xcd\xc3l\xfe4\x99vpt\xa1\xf32\xbb\x00\xd6e\x9a\xab\xd9\x06\xday\x04(\xb6\x17wP\x1e\x0ea\x00\xb7`\xb7\xd8h\x16\xd2%\xcd\xa4\xb3V\x05\x9f\x9b+\x7f*\x8a\xdf\x0e\xf4Uo\x8b\xd7\xf8\xc0\x9c\x16\xbf\xf6\x0d\x1b\xed{\x14\xd2o\xdf\xb9\xbd\xf7`p\xff\xf6\xdd\xdb~P\xdc\x86G\x8f`p\x176@\xe0\xf1\xe3\xc7\xb03\xb8\x1b\xc0\x9d{\x83\xfbw\xee>\xd8\xfd\xbe\xfe\xdem\xe5\xbd\xdb\x01\xdc-\x9fc:w\x8f\xc06\xdc\xbe\x7f\xef\xce\xde\x83\xbd\xc1\x83{\xb0a0\xfd\x17\xdb\xd2\xff\x12\x9f\x0d\xee\x05\xb0\xb7w\xe7\xde\xfd\xbd\xbd\xbbE\xf3\x87\xe2s\xec\xa6x\xf3v\x00\xb7\xf7\xee\xdd\xbbs\xff\xc1\x83\xdd\x07\xbe\xda\x84e\xcby*\x7f\x10c\xad\xcb\x83\x8eP\x83!\xdc\x1e\xc0w\x90\xc26<\x8f\xbd'\x147\xcd\x13\xea\x11\xdfg32w\x0e\x8e\xbbS^\\+~\x85^\xaa\x93r\xe9\xa6\x98\x11v\xd4\xdaA\xb7\xc6\x1d\xdb\xf5\xb5\xe5\xac\xa1 \x88:RX\xb9SW\x06\xb3\xbd\xf8\x9a''Sr\x01\xa8o\xbc\x8eG\x0b\x19\xe0\xfd:\x1e=c\x7f\xbf\x16&\x8b\x8c\xdd\x12\xa1\xa3\xfc\xb6\x08\xac.\xee\xab\x81C0\x84W1>\x89\xe2l\xc5s\xe3\xe3'\xef\x93<\xad\xe6\x95\xd1\x81\xac\xa6D\x12\xee\xad\xd5\xd9a\xeb\x93y\x18\xc5\xbcma\xcb\xe4\xb7\x93\x98\x86\x11F\xa5\xe3\x10\xb8\xee\x12c\xc4S\xdd)9[D\x1dB#\x0b\x01\xe5+1\xae\x84N\xed\xb3:l\xb8\xf7\xbbZ\xff\xcdT15\xcb\x02V\xe1\xae\x93a\xb5\x90&\xa4\x93\xc4( \x1a\x9b\x8bO\x03p\xa3\xaab\x93t\x14\x1a\x97\xe1\xeae\xd5\x07\xd9\x15FW\x00\x02[\xf7:,\xda\xc4\x8c\x06,x4\x82\x05\x08\xd8\xc9Uv\xeb\x87\x18\x93\x9b\xb4f\xeexj\x06\x92<\xd5\xaa}\x19\xda\xf9\xb9\xb5\x9d\x11 \x80\x8e\x9d\x1a{g \x87\xf5\xb3\xb9e\xb3mQ\x97d\\\xd0\x84\xa7aXo\xaegX;\xd7<\xacW\xf6a\xf52\xa4\x81\x15\xe3\x07\x1c\xc0O\xef\xdf\xbe\xe9\xf3G\xd1l\xcd\xd5\xb6\x82Z:\xe6\x16}f%\xc0\x87\xc6L\x9e\x86\xe6\xbe\xb6b\x10\x85G\x05\x07G\xe11\xfe\xbd\x83\xec\x9cS\x07\xcf\x1d:`\xac\xcf6\xec\xdd\xbb{\xe7\xce\xed\xbb\xdf\xdf{\x00\xdb\xe0Q\xc6\x90\xdd\xf3\xf9\x9f\x8f\x1f\xc3^\xf3\xf4\xad.\x94h\xedC<Z\xc9#\xf1Cy$\x8a@-v\xafv&\xf2\xf4\x02\xc5\x83\xda\xa1\xd8J\xd4D\xb7\xb5\x85%\x18}\xbb\x8f\xe1\xb7\x88)\xd5\x81\xe3\xc1\x16\xe9\x93\x9f|k\xfa\x067\x9d\xf9\xb5\x06N\x0d\xdcN\x8aY\x14OQzr\xec\xf6\x1b\xbc\xe9\x0e\xd0\x99\x0e\xf6a\xa7\xe9\xff\xa73s\xb2Q\xb9\x19\xae\xce\xd4\xf4\x99\xd2De\x1d\x8d\x92f\xb8\xd8;N\xae\x9e\x8b0\xa3GW\x1cYa\x8c\xfb\xd3Fw\x1d\xf1\x1b\x8e\x88s\x9d\xf1\x1b\xae]\xae:\xf4)\x11\xb5\x1eVdvbf\xebTZ\n\x98\xd4\xc9\x83j\xf9B`\xda\xab=\xf1\xe7\xcd\x9b\xb0\xd5\x96\xef\x95]\xb4\xc8\xce\x08\x8f`W:\xf7\xa3s~\x99\"\xa2%(\xb4L\xaa(\xcd\x19-\xd8S\x80y F{\x00)\xecC*C\xf7\x0f\xd5\x08\xe0=\xe9\xd0\xc0[\xc7\x1c\x07\x8eA\xc1\xd2\xb9\xf3\x9b\xc8G\xe1\xad\xfag\x90\x90\xab8~\xf2j\xf6N\xad_\x93k\xa2#\xf6wv\x1a\xac\xa5\xd7\xf6\x11\x05e)\xba\xaa\x16J\xc9\xbc^\x8d\xa6\xb9y\x13\xf9\x8b\xf2\xc6\x01O\x811\xbf\xaa?\xa2\xa8\xaa\xad}\xad\xb3;b7\xe7\xa5\x06<\x1e\x0fa\x17sP\x18\x02\x89\x0c\x80b{\xb9|\xc4p\xb1\xfcR\x1cZ\x8dj\x8a`:\xe3(IWI\xd6\xc5\xb4y\xf5$\x1fnf\xbd\xb2\xc4@\x81\x02{\xf0\x9d\xfc\xb5\x03\x03^`\xc0b\xf93\xa5>T\xaf\xc2h`\x95\xcb\xe5\x95|\xb3\xad\xaeu@J\x1b\xdeV\x82\xa5\x00\xf8\xba\xf2\xd0R&\xa2G\xbe\xaf$-\xc5f\xc5}k\xcb\x97\xac\xf7\xc0\x96GC\x85\xa8\xdel\xe7\x0c\xd2\x80[\xee*1~\xd8\x7f\xeb\xe4\xdd\xed\xa1W\xb0\x9f\x15\x90\x8d\x18ds\xf8\x1f&;\xb0\xad\xc7p \xa9\xb8\x00c\xcc\xef>\x7f\x07\x0e\xe09\x9b{\xce\xd3\x91\xa2\xd5F\xfe\x8cd\xca\xd86\xf0[\xad%\x86T\xe5%\x95p\xde\xc6\x0b\x12\x9e\xb9p^\xd2,7b]\x8c5\x87\xb2oY,\xb6/op\x02 \xf5/\x01\xdc\xe8'3t\xa65~\xc6\xf3\x93(\xde\xf9\xd6s\x96\x14\x1b\xdf+\x88\x81\xb8\xc7\xe8\x80\xc8H\x13\x94\x94\xc8\xcd\xc7\xa9\xab\xcb\xdd\x92z\xbbj\xcaj\x97>\xae\xe0_\xc7\x0e|\xc7\x08\xd5\xebv\xefq<\xf9\xbf^I\xafzC\xfe\xf1,\x0el\xc8\xe6<\x86_#:w9\xa7\xa4\xcc\xa3\xf6b\xc77\xc6\xd3\xc9\x00\x81\xe6\xf8M&\xcb\xca\x9dK\x9fQ\x842=\xec\\\xea\x1b\xd4\x9bE\xdd\x96#t\\o\x0e\xbf3\x8f\x85\x18\xc4kA\x0b\xb3\xb2\x93\x9cv\xd5|:\x9a\xaa\xd3p=\x9b\x0d\x9b/s\xb89@;Q\xf2l\xf3\x12\xda\x15+\x81\xfaX\xb1$\xa8\xb7+&\x85\x17\x81\xaa\xa4\xf5\xf1\xde\x8d\xca\xf2\xf1{?V\x9a\xe6\xf7N\xa8\xe6\xe3s\xaa\xf9\xfa\x82\xd6?oBE\xe6\x97\xdb\x87\xb8 W\x04\xea\xcb\xe6\xfd\xa7\xc9bA\x10\xd2\xfbp\xac)\x90\x81\x01b_5\x0f\xd4\xb4\x92G\x1a\xe7 \x9e\x97o\xa5y\"R\x05^hGI\xf7!\xd3<P\xb3J\xae5\xcf\xdf\x91I\x92N\xf7!\xd5=\x0b\xe3S\xb2\x0fK\xcd$\xde\x91\x15 Y\x93\x9agQ\xb6\x0fS\xcd\xfdY\x9a,\x7fz\xbf\x0f\x0bS\xba\xe4\xcb\x00h\x9f\\\xac\x92\x94f\x98$\x8ec\xe5\xa5\xdd\xa7\xcd\xe2I.\xf9\xe0^\x82\xeaEU\x0f\x8c\xa7\x1d\xff_\x9f+\x1f\x91\xe7\x17\x7f\xb2\xdbU\n\xa6\x0e\xacd!.\xfd2\x00\xd6\x1bH\xea\xde2\xe0\"2\xd7\xbb}\xe7{\xdf\xeb\xd1\xe4\xe3jE\xd2\xa7aFz\n\xdd\xac\x80B\xdbn\xbdQ6\xd5w\xe4\xf4\xf0b\xe5\xf5F\x9f>\xe5{\xbb\xbb\xd3O\x9f\xf2\xe9\xfd\xdd\xdd\x1d\xf6\xefl6\xfb\xf4)\xdf\xbd\xcd\x7f\xee\xde\xbe\xc7~\xce\xc8\x1e\xfe\x9c\x91\xbd\x19~3\xc5\x9f{\xbb3\xfet\x97\xf0\x7ffc\xd3\xe0\xcc\x14\xad\x100(\xc9\xa8J\xc7.\xbb\xc1i\xb0\xfb\xa0\xc6\xeb0.\xb2wx\xb1\"\x13J\xa6\x10\x16\xed\xf4\x14c\x8f\xbc\x07\x89\x96\xb0G3\xf0\x94\xf8\x88-\xc5D\xb0\xd9\xc8\xecA\x1cE\xb4\xaf\x11\x1f\xe8<M\xce\x91;\xfe\xb0^\x91\xc34M\xd2F\xea\xbb\xb3z\xb2s\x1d].\"\xba\n=M\xe3\x15\x10\xb3F\x89\xbcbEI1\xa9\x8d\xd1\xb5\x8a\x07\xd0\xa1\x84\xd1<\x9419 \x9e2\x91\x92\x00\x10Y$\x9d\xef^\xe9\xafW\x1d@\xf3\xcdb\xe9\xb1c<\x072\xd6(F\x8fm6\x18\x0fV%\x03\x0f\xf5\xa8#\xbf\x8f\xc9\xb9\x97\xf4\x9f\xe2\xaf\xcd\x06\x05\xac\xb8\x86O\xec\x92\xaf\xf0\x8a!\n\x96&\xddP\xee\xce}\x0d\xc6\xc5\xde\xdd\xdd\xdam\x06\xdd\xde\x88\xd3\x17x\x92\xad\xe3\xc9s\xd1\xfe\xb8\x96\x0d+W\xdf4\xbd\x14\xaa/\xbd 1\x97\xe8Log\xea\xdb?\xa7\xc9\xc5z\xdc\xeb\xbaG\xd1\xd1\x11kZI\x98o\x0d\x9a\x18LD\xd2N\xed\"\x11FWs\xb6*\xf8WX\xfc\x95\x14\x7fe-[_G\xca\xe4\xac5\xa5\xef\xae2I\xb9\xa3\xb5|\x17M\xd7vv)\x16eq4\x8c\x12LB:\x99\x03\xf6\xda\x8c\x1emm\x19\xb3\xcbj2\xdb\x9a\x9b\xd5\x9a\xdc\x94&:R\xd7\xef\xf7\xb4\xa8~\xfb\xfe\xf7\x1a\\g\xf7\xeb[#\x17\xf7\xebD:\xe4\xf7\x1f\xd4\xf7L&\xee\x0f|\x1d\xb5\x9e4\x97\xafbT9>\x9e\x864<>\x16\xd9F\x9bX\xa9h\xf1\x84\x14[\x83\x0c\xbb&\x9a\x1aTQP\xb9]\x14\x82M\xaa\xf7yQ\xc4\xbcz\x933\xc4a\xf5f\x86ofUB4\xe9\xb6:\xb7\x1f\xe8\x97\xe7\xce\x83\x96\xe3\x18\xa8\xc8\xcb\xc1Co\x1b\x8e\xeb\xca\xe6\x15\xc6\x0eOT\xe6\x04R\x9c\x80\xf2\xd1V\xc4\xb8\xab\x9b7\xd9\x1f\xb1\x8fJay8\xc6\xec\xaf\x98\x1dA\x95\xfe(\xeb\xf2\xca'\xfe\xed\x07\xb7\xb5\xb3\x1e|_G>\x81\x94\x0f\xeei\x90r\xd0\xc4\xc7\xbd6\xd2!k\xb9pG\xe1\x99\x0e\x15\x17\x98\xb5\xf8&\xe4\xcd\x03\x17\x0b\xb2\xca\xb2\x8c\x8d\xa7s\xc4H\x9dY\x8a\x11\xa8\x15\x03\xe4\x1c\x81\xec-\xd8?sx\x0c+;]F\x9d!\x0f\xd0\xf5\x9b-bAK\xfeX\xa9-6\xc5%n\xb6u\x06C\xd8\x194G\xbd\xe62t\xe3\xfe\xa9\x00C\x08\x07|'\x82\xf4\x8e\xae\xb6\x8dy\x01fx\xfc#\xa9\x0f\x80\xff \xbc\x06\xe8\xf6\xf6\x19<\x82\x956\x11\x00\x1b\xd6\x92\x81ttf\xe0n\x8e\xb1(\xcc\x99\xc6Q\x9c\x01 \xf3\xb1\x89\x13\x18\xc2\x02\x0e \xf3\x8e\x03X\x06p\xc6\x03\x91py\xf7!\xf3\x96\x01\x1c\xe3]\xbe\xfa3\x0d?SK\xe2{b\x92\xae\xd9{'>0\x018\x8aM)\x0b\x10\xa2\x03\xfd\xb3\x93\x94\x84\x9f\x1bO\x9a\xe7\n\xeb\xe8\xd46\n\xb6e;\xd8\x0c\xf0\x93\xc4;\xc5\xd7n\xde\x04oY\xe6\x8c\x9e0\x08Q\xb9-f~\x89K\xa7<\x16\xdf\x18\xdel\xeb\xd1\x06\x050B\x02\xb4\xd0\xb8\x04\xb2\xc8\x08Nb\x89\x0bt\x8c\xfbh\"\x96\xb6\x18\xb8a8\xdf\xba \xda\x13y&N\x10t\xba-~0\xfc_\xff\x9f\xea\x876n\xc8H\xa5\xeas\xa9\xd4_\xdb\x11 /%\x11\xa7\x98&o\xbf\xa0Ml\xdb\xc5\xf0\x08\xd2\x87\xcd\x95C\xd3\xb8GG\xf1\x18\x01\xa7r\x86\xbbZ\xfeOI\xef\xd4\x91\xcc\xdf\x19\xd4y\x83\xe2pkRyQ\x91\xa98^\x9b\xf4\x1e%\x19\xa5\\S\x93\xfc\xa3*\x08\x9f\x1de\x87q\xbe\xe4\x8a\x9f&{\x92\xda\xad\x1db\xe2\x85\xb8VE\x06\xcf\xf7\x85 \xde\xae\xec\x13\xad0\xe6\x9bak.X\xcc\x00z\xec\x0fBz\xfc\xc4\x0d\x9b\xf7\xab\xfd\xe9\x8f\xb4\xcce),\x99\xf2\x15\x06Qch\x10\xeb4\x18h\x9e%m*\x97-\xd2\x8f\x93)aB3\xdek6\x81\xab\x89\xa2w\xb3\x1d\xca\x8d\xd4\xac\x1dZiG\xa3sbk\x9es\xe0\x16\x90A\xc1\xe4\x00\xd2\xfe\x0f\xf9lF\xcaS\xab\xf95\x03\xa3\xc7\x8e\xb7\xb0\x1fe\xb5\xb7Q\x8a\x8d\xccJ\"E\xe2\xa9(\x89\xee\x0f\xfc\xc2X\xdc}\xdf\x1b\x988\xda?''\xabp\xf2\xf9\xe7d\xb1\x9eE\x8b\x05\x0fY\xe9O\xc9*%\x93Z\xedG&O0\x96t\x15\xd29k}4\xc6L\xf1\xf3h1MI,\xbe,~\xb2\xe7e\xb9\xb4)\x99E1\x91\xfb\x0bqr\x91\x84S2\xed\xe9\x14\xab\xa4\xd8a\xfbz\x0e\xa2K\xd1\x19\xda_4\x1e7\x95\xd4\xe6qF\x7f\xc9\x18#\x8716Wk\x08\x83J\x02\x9b\xced\xd4 #\x0c\xea\\t\"\xee\xdf\xd1p\xcb\xb8\xdf\x92~\x94\xb1\xfd4\xe5Q\n\x95\x97\xf8f:\x80\xc8\xcbQ\xe5\xa4\xa7;a\xb7\xb1\xdf\xdd\xbd\xaaZ\x91\xf2\x83\x8d\xd1\x81\xb4]\xb9\xd8\xbe\xb74g\xaa<\xc9\xe5;Z\x87\x17\xa9!\x10\xfa\x05\x91E\x90\x8e\x85;_\xcd\xdf\x84p\x8f\x92H\x16'\xf4\xe2\x9a\xa9\xeb\xf2\xaaX0\xb8_\x97\x818\x16|\x7f\xbf\x15\xc2m\xec\xc4.\xf72\xf0\xb8\x1a\x88\x07\xf1\x17\x9cD\xa1X\xe1\xd2\xe0#H\x1e\xfa<\x85\xe8(\xf2\xc8(\xde\xde\x1e\xfbc\xbdv\x8f\x7f!\x082-h\xebU!\xa0\xd7\xd9\x0d\x1a\xd8.v\xc1^\xfd`\xe3\x8a\x8c;\xdf_\x05^bJii\x18\x8c\xc4{\x07\xc0\x90a\x1f\x12/\xaf\xb8 9M\xae\x97g\x042\x9aF\x13\xaa\xa8\xf6*^X\x0d?\x11\xe9j\x13{\xdf?\xa8\xebF\x94\xe9\x1c7E@&\xbas\x98\xdd\xfb\xbe\xf6\xe5q\xff\x1d \xa7\x8cN\xbe\xa7\xfc@YV_`\x80\xbe\xeb\xf7\x0f\xcfHL\x0f\x97\x11\xa5$mv\x10\xb6\x81Q^%\xd1\x8f2Jb\x92b\xd1M\x8er\x8d\x0ft\x96{\xb1%\xea(\x01\"\xb88\xf6\xee\xef\xfa\x82\x03h\xbe1CA\xfdc\x14\xd3\xfbH\x07\xd9\x9e\xad\x9c\x9f\xcd\x99-85\x1b\xd4\xc0\xb6\xe8G\xf1\x9c\xa4\x11\x15J\xaf\xbb\x1a\xf3\xc0\x8a\xa3\xdd\xdd:\xb1\x06\xa12\xd0 \xd5\xec\xfe\x8am\x9fU\x7fJN\xf2\xd3Er\n\x07\xca\x0f\xaf\x97\xd1\x94\x84\xcb\x9e\x0f\xfbmC\x9f\x06(\xfb\xb3!\xd4w\n\x08\xe1\x88\x81\xb2\x8eK\xe5\xd4\x98X]7\xf9\xb3\x86O\x19\xf7\xd0#i\x9a\xa4=\xc6\xbd.\x92\x8c\xb0?\xa6$\xa3i\xb2f\x7f\xae\xc2\x9c\xdfKI\x96/Iol\x8a\xd6Y\x1a\xd1%\x01\xa1i\x8e\xbd\xbd\x81\xa8a\x81b\xab\xae\xbe\xa0$\x16\x04\xa28\xa3a<a\x1ce\xd2|\x0f\x95\x88\x9c\xf7|\x9dL\x19\xbaomQ\xe5F\xc0S\x0dz\xcd\xf7\xeaw6\x1b\xfc4\x15\xbb\xe7m\xf1\xc4`_\xe1\x91\xf5\xf3\xe8t\xfekHI\xfa:L?\xebU\x1f\xdc\x10#\xdb\xfd\xb1\xfd\x83P3\xba\x03\x18\xdc\x83}\x18\xdc\xbb}\xff\x8e\x01\n\x95\xa1\xc0\x10\xd0\xa3K\xd4\xb8\x12\xbe[\x1c\x16y\xf9 gd/\x87}\x08\x03}#\xe8w=[$I\xea5\x9fK\x17\xe5\x13\xcersE\xef\x99\xb8)\x8aE\x94u\xfdW\xd1\x8adB\xd6Uo=M\xf2\x98*\xef\xcd\x16\xc9y\x14\x9fV\xdf$\xf1\xb4RK\x9d\xdd\xe0\xd4\xabr\x97A\x99\x7f[\xdc\xca\xd6\xf1D)/\xdf\x8f \x99J\x12Yi\x90\xb7\xa6{$\xd7\xee\x15\xd2\xb8Z\xfb|C\xbc\x9f\xcc\xc94_TG#\xf6O\xfd\xe6,\xcc\x17\xf40\x9e$b\xa8\xb4qo\xb3\x81^Ng\xf7{\xe2\x9b\xf0<\x8c\xe8\xb3\x94G\x83\xeeV\xe7\xfa:II\xb5\xfdI2%i\x1d|Eo\xe2ny\x8b\xa1\xc4\x14\xc5\x89)\xa7 \x0f\x06~\x9f\xdbo\x9e\xf1\xb6\xfcf\xd3\xe4\x1c\xa6^\xd9\x88\xdf\xecGyX\xc1WS\xec\xd3\xb1^\xf8\x16e\xd1*\x94c\x0bqQ\xa5\x0c\xc7~%\xc3\xf9\xb1\xd6\x9f\x96\x9b%\xd2\xda\xf1\xc8\xdeG\xa2\xc5\x1e\xfb\xb5\x15\x97\x88\x83@2d\xe9c\xef\x964\x06\xdb/v\xbc\x1f\x98r\xfb \xdcP>\x94w\x86\xe5S\xdf\x0f \x13j\x85F\xb6?\x13 OJ\xe5\xb8)\xdaS\xe1!h\x0d\"M\xb0 \xdd\x147i{ym\x8f9q \xa8\xaa\xe2{X\xae\x93^\x89\xc7_\x14xfSJ\x9e\x15\xc5\xdd\xc4\xcb\xacu[*\x15\xce\xc3J\xaa\xc4\xa0N\x04\xdd\xe2\xaa\xd1\xd8\x0f\n\x9d?l\xb3\x86\xab\xd4\x17\xf6\x8b\xaf\x0dJT\xed]RR\xae\xdd\x00\x0e\xb5\x86I\x06\xba\x1c\xeb,zH\xb3\x11\xdf\x9d\xe0\x8aP\xd0\xcf9\xe5Uy&\x85F\xc4KQ\x15\x92\xaa\xdbf\x86\x94\xa6\x19}I\x94\xb8\x83a!\x0c\xd5NK\xcc\x12\\u\xaa\xe8\x1d\xc5g\xe1\"\x9aB\x9c\xc4;\xbc\xd9[\xe2p\x98\xcc\xf3\xf8s\xcf\xb7\xc5\xd3\x18&\"\xb6\xb5\x06n9: \x06\\*A\x02\xee\x15\\L\xc2\xe0\x99\xd7\x86,\x1c\x89\xc4*?\xc6\xc8\x1f\xcf4\xff\xfa\xc7e\xa5\xf9\x9f\xa5j\xf3\xed\xcc#<]\xb1bND\xd8\x10\xa7\xe4#bn\x13\x0c%\xd7\xe3\x06N0e\xa7\xb4z\xe45\xe7\xcb\x16B,\x02\xe7(\xfby\x9c\xcd\xa3\x19\xf5|\x08g\x94\xa4@\xe2)\x10\xc6\xf5\xf7\x10\xd7\xce\x11\xedd:;\x04\x16GU\x97\xb6q\xcb\xc8\x86\x0f\xdf>\xe7M6\x88C^\x1c\x19L\xfa\x8f\x19\xb4 &>\x92\x9b\xf6<\x8d\x84\xae\xbd\x0em!\x85\xcb\xb5:\xa8\x8cw\xc0z{[\xee\x9b\xea3\x9fW\x8fb\xcbP\x1d\x90\x0e\xfb\xea\xaa\x83\xb6\xb5\xda\xa2\x02LH\xb8\xab\xdc\x04n\x92\xa2HV\x8d9,\x99.j\xa4#\x97^\xeeF\xe3\xcf\x15\x1a\xaf\x1b0)\xb8\xa8\x9b7\xe5\x1eVh\xdf\x16\xe1l\xd1\x01\x9b\x02_\xebiHC\xb6\xd4\xa8\xf7b@\xf3v\xf9\x9a:\x12E\x8e\xa4\x05M\x95\xc8\x17\xb36t\x94\xb6\x02\xb8\xff?{\xff\xbe\xdc6\x924\n\xe2\xff\x7fO\x91\xc2o\xc6\x03|\x84h\x92\xba\xd8\xa6M\xeb\x93e\xb9\xc7\xd3\xed\xcbH\xb6\xbb{\xd8\xfa\xa9!\xb2H\xa2\x05\x02l\\(\xab\xc7:\xd1gw\xcf^#\xf6\x01\xf6\x9f=o\xb0O\xb0\xb1\x11\xe7MN\xef\x03\xec+lTV\x15P(T\x01\xa0,\xf7\xec9\xdf\x87\x88nS\xa8B]\xb2\xb2\xb22\xb3\xf2r\xef\x1e\x92F\xc7e\x8bJL\x9a\x16\xfa\xe85\x87\xe7\xd2}C.\xb8\x18\xd4\x9d\x1b\xa9\nU\x17$\x85\x7f\xb8wO\xf7\xba\xe0\xfc\xaaK\xac\x91\x81\xdb\x05\x0c6to\xd7\xf6OO\xf86F\xc3\xe7%\x83\n\xc1\x88\\\x8b\xdf\xe5\n\xe7Y(\xd7\xc9\xffRj\x15u\x1a\x0f3&\x0d vdA@\x11D\xe3\x06.7N\xeb\xb6ix]\x8es\xdf\xc8\xec\x08\xf5P\x19\xd1C\x91\xebN\x1b\xa9\x80.\x02\xd25f\xf1\xa6r\xf3,Hv\\f\xb8\xa9\xc0#\xc8>\xbbl'\x98\x99\xd1qyg\x8eK\x19\xb9\x92SB\xc5\x9fC\x81 \xdfs\x8d'\x0f\x9f\xa3\xd4<\x93 (\x87\xa2z\xc4+]\xf8\xc9[/K\xca.P5]l\xf5\x8b\x94_\n\x86r\xfaT\xd7YBd)\xa9\xd5\x9c\xda\xc91\x95\xcd\xa2\x885\x86z\xb2p\xc3j\x94G_U\xac|\x84\x11<\xdcy\xf8p\xbf\xf7\xd0\xa4/95\xa2n\xae>\x7f2b\xfe\x8dU:N\xf2#\xbb\x87d\xb6B\x9dS\xa6\xf0=(\x1f\x08\xd2\xa9\x9a\x93\xe6\x05\xf1\xa6]z\x08\x88\xb2aQm\x88a%\x80(\x07\x1ac\xa2U\x8dA3!\xcb'\xf6t\x04\x1fQ K\xff\xa5\x9dloSY\xeb\x13\x1d2F\xf7*\xfd5(\xfd\xb5[\xfa\xeba\xf9\xbb}\x17\xd2NG\x9bk\xe0\x86\x9d3\x08U \x0e\xe8!\x92CS\x9e9\xa9h\x0cz\x98\x9f\xb9\xd59}\xac\x87Bn(\xd7H\x8f\xaa\xbd\xf7\xe9\xe9\xa9*+(\xd6/l\x8b\xbe\x16\xef,\xb7XtG\xf7\x0d\x9bI\xce \xb0|\x1f\xef\xfc\xc9\xa5}\xc8#/\x1eV\xdceM\xf3<\xd4\xcf\x93\x0f \xc4$-\xe4.\x18\xc3!\xbf{\xd56\xa0\xcb\x1b\xe3n!%}\x08\xb2\xe0\xaa\x86\x04\x9d\x8e\xf2I\xfe\xa4u`2u\xfc\x93\xb1\xe3\xd2\x05Ln5FY,\xc1z2\x86K\xda\x7f[\xa4\xe0!I\xc10\xea\xf6\xd7\xc2\xb6\x96\xde\xf5\x05\xa1\xab\x86\xf3@\xf5B\xcf\x92\xd94\x17m\xfb\x8a\xce\x9d\xc7Ny0\x0d\xc0\x1a\xa9\x89\xbfL@\xb84\xaer\xae/\xa1\xe0M\xfd\xc9\xa5n\x9c\xad\xfax\xd9\xbc\xc2\x02\xdb\x99\xe6M\xd7\x13\xe2\xbb^1G\xaa\xca\xb4\x1c!Q\xb3\xcd\xd1\xd1\x05u\xc9\xa4\xe5\xdclJ\xaf>\x97\x08 \x8a-l\x8b\x8e\xa7\xb4\xad\x1f\x97\x07\x99\xa7R\xe6\xe3s\x1e+\x02\x8fi\x84\xef\x9a\x0e!\xe5\xe89`]!u\xac0J\xf9\x91\"\xc4\xcf!l\xa5\xec6\xf5i\xa9\x0d\xbb\xa4\xc0\x91\x0f\xa3\x9f\"?\xb4-\xbc\x13\xe9\xf3\x9eyI\xcd\xc1%\x0b\x1a\xdc\x9f\x92\x14>\xb1EQ@\xbc\xd8F\xd9&\xd4X\x94\xd6\xa9Z\x0c\x1a\x8a\x94\xed]\xf5\x00=\x00Lu$\x97H\x91B\\\xb9@[-u\xf2,\xc8\x1c\x06\x9a.\x88\x04\xe5p\x93\xf0\x96\x05\xc5\xa2\xad\xea/\"\xc4\x13Wmt\xd5\x07\xef1qlf\x15\\\n\xdb#\xf0\x8dDI<\x88\xed\x8f\x81\xc5r\xa4\xf4\xa46\xf7\x14\x08uf>\x80\xfa\x81\x82\xb8\x91\x81\xa7\x10\x15p\x8c\x8a\x13\xbf!\xb2\xb2?\x03;c\xd6I\xc5\xe7>\x95\x8e#\x18\xf2\x1f\xe5\x85f\x9b\xc7\xc6\xe9g\xb5\xa6\x96\xe2\xa9\xb4ow:\xb1\xcb\xc1\x81\xab\xbe`Zf\xfefX\xbc!\xdd\xd4\xf3\x03\xae\xe7\xe7\x02\xbc\xa8\xecr\x08A1\xc4\xcc\xa4\x91\x93\x1f\xb3\x85\xa7xn:\x1d}xc0jFA\xb2m\x17\x13\xddFw\xa0\xaam\x0e\x085)q6\x89\xab*p|\xd2\xf5\x82 \x9a\xbc\x0f\x13oF\xdaE\xe1m\xb1+(\xca\xd7\x98\xc5\xc6l\xa7N\xa2\xd55\xaa<p\xf9cy\xfb6n\x01\x8c\xa7\xba\xd9\x16\x88\x7f\xaf-\x10\xf1\x99\xb9\x85R}\x9b2T=\x17\xb2;\xc3y\xdf\xe5\xf3\x97q>\xde\x04\xe7c\x97\x83\xe4\x8b\xe0\xbc\x1eSaS\x9c\xf7k\xc2]\xb8M\xc1\x974\xb9\xee\xf0+~\xde\xb9\xc5 K\x19E\xc3ev\xb9{\x13\x9bp\xf4\xb9\x8c\x0c\xbb\xde\xe1\x13\x7f\n=\xd95\x93)\x98\xffd\x910\x17Ql\xc7\x024\xa5\x9dB\x14\xe2\x9d\x02Y\xae\xd2k`J\xe8?i\xe6Bd%9\x13\x02\xe4\xfb\x17\x89\xfd\x7f\xabMrb\x8c\x1dj\xd6\\)=rU\xa1\x98$\xb3\xd2,_V\xf7\\\xce\xcbVD:\x9b\xce\xdej9\xa6\x93v\"I\x8fk\xbfr\xc9\x84\xd9\x93C\xd8\xe9\xe8/\xb20\x1a\xfa8\xe4vq\xc5\xbd\xaaQY\xb6\xadJ\x0f\xf2_\xb2B'f{\xb2^C\xc0\xa5 \x8b\x9d\x9d)\x8c`\xe5\xc5 y\x19\xa2[J_\x17\"e]\xf2;+\xe1\xa0\x9e\x12b\xa43=z\xf2\xf5\xe3\xca\x0d\x9dQ@N\xdd\x98\xffyE\x93-a\xf8\xa8\"\xd3}\xfa$\xd4\x0c\xc5\x8d5\x9f\xf1\x10*\xe2;k\xc7\xcd?qku@G\xec\x92\x18\x86pl\xf3\xcblJ\x10M\xf3\xe4\x04z$TP\x8e\xd4\x9ac`\xfc\xef\xdd\x13\xbd\x98\xdaF>\x99\xa5\x13-\x83\xc6\x88>\x0b\xdb\xa2\xf5\n%\x01\xe6\x15\x11#$\xd2N\"\xd2IS\x95\x97q\xfc\x0b\xdb\xe2u\x02\x92$\x90.\xbc\x10\xaeh\x8d\xa5\x17_Zl\\\xa8\\\x15`\xc3f\x85hw \xd6\x82\xfe\x11\xe1\x95\x19\xde!\xf8l\xe1\x91\xbf\xe3R\xf94\xc2\x01[\x8e+}_R\xa9pMQ\x05\x80:\x8dRI\xe3\xa8*\xd5\x1c\xb9\xc9\xbe\xab\x08\xc2l\x05C\\A\xbe*lic~\xc4\xf7\xe0 \x17\xf0\x86\xfc\x88<0\xe8\xb5\xd0\x0e\xc7\x91u\x7f\xdb\xa8\xec\xd4\xce\"\x07\xa0aFa\xb1\x95$\x85\x07\xc7\x1f1T\xd4\x8d\xe7\xd7(\xa5\xbb\xa8\xb8\x92w\\Q\x10\x9f\xb7\"(R\xc3\x9a\x0bM\x06q\x07\xfc\x04\xc2(\x05\x7f\xb9\n\xc8\x92\x84)\xa9\xd2a\xe5\x06\xc2_\x91\xd67\x10\xb5\x01\xd5\xa2\xb6\x97\x13\xc9\x95\x8f\xae\xc6\x91d8eb\xad&^B\xa07\xd4\x96\x01:\xe0\x0b{\xac\x1af\x0f\x99 }1\xb6\xdfo\xd3\xfe\x98\xfft!\xad\xc9\x13S\xd3\x15\xbfOi\xec\x8b] 5^wI_0\xd3\xb3\x0e\x95n\xe9\xce\xc7%\xc5 \xa0\xa3?N!Z\xa5\xc9\xe8\x8f?Yn\xa9\xb6\x9e\x1f\xa3\x8b\x8c^([\xcc\x90\xb0\xcf\x15r$\x9c\"YJ\xf9\x1dP\x92N\xa3,U\xde\x908\xa6\x92;\x0c\xe1\\\xb9%\x80\xb2\xc3\xb5\xce\x88X<\x0b\xdb\x8a\xc2,\xa4\x03\xb5\xd8m\x92\x08\x88\xca.\xdf\x99\x1e%\xee.\xbc\xe4=\xd6b7\xd8\xa5\x17\x8c\x06,lk\x12\x10/\xccVB\xa7\xb6\x8c\xd6\xdc\xf6\x8d\xc4vn\x1e:\xd7\x96\xce\xfc\xd0O\x16\x96\x0bKm\xf14\xf6\xfc\xd0r!\xd0\x96\x8a\xfdy\xad-\xe5\xb3saB\x89G\xf5\xe3\x90\x92\xeaYM\xd9\xb9\xb6\x8cS\x9b\xb5\xe3\xa2\x85/\xde\x82E\xb2\x96\x10\xaf\xf5\xcf\xafb?-]\xbcn\xa9/\x91\x08\xe6\x9f\x04\xfa\xa8\xf8\xe6\xf5\x9d\x19\xaf\xa2qm\x913d\x86{\xd3\xc68P\x808^2\x18\x91x_\xe4\x11\xc2n\x14N\x88\x00\x0dZ\xbeu\xa3\xb0\x04e=\x9e\x07\x8d\x14\x174v\x15Mrz;\x01B<|\xb3\xbe \x9fs|\x92\xd5\xba\x8e\xa2\xe5\xc5\xf3\xa7\xf8{{\xbb8\xcf\xca\xb5<J\xc4\x19>8\xfc\x8c+\x8cQ1m\x886~(h\xc1\x7fc\xeb\x84-\x06\xe3b\x17\xe8A\x8cx\xa8\xd1-\xac\xb9+9-3#\xd2\xda\x9c\xab\x171\x89M\xd0\x05\xa1\x12\xe7\xd4*\xcd\xadq(\xfa\xb2\x83\xdd\xees\xa9\\\"\x97\xe8}\xc4\x89\xbb\xf0<.Ux\n}Z\x89\x87_=\xb1\x0b\xfa\xcf\xe3t\xae\x04\x135\xf3\x82\x84\x00v\x0b1IVQ\x98\x10\x17\x84\xady\xa8^\xc0\x96\x96\xb8\xa6\xb4\xd3\xe1\x93C.\xa4\x8b\xedm\xba\x1b\xaf\x1b\x80(H\x15q\\8\xb7\x1b\xa9\x19C8\x86`\xec=;\x17\x14\xc6D\x17L\xb1f\x90s\xe3\xb6j \xcc\xe7Z\nb\xeehYO\x9bx\xdb\x8d\xc7\xc5\xa6\xdd\x9e\xd7u[\x1cva\x97\xfdnw\xf6\x0by\x96\xed\xc4\x9c\xf8k\xbbi{;\x00P T%\x1b\xfb\xaeb\xb2\"\xe1T\x00\xa5\x08P\xae\x96\xb0h\xcd5*\xf4\xee9\x9a\xf0%\x0cy\xf8\x1fcr\x06\x07\x90\xd9\xf2\x0b\xf4n\x92\xfe.[d\x95>\x1d\xc18tK\xaf\xce\xb0\x8a\x08\x1e\xad'x\x12*\x8b\x03\x9b\x1d(e\xfe\x80\xbdS\xb8\x02\x86\xf4\xfc\x9c 1f\xa1 \xb4\xfcn\x0fY\xb1\xe2F.\xe4\xb7y\xb6S\xb9\xd4\xaf\x18\xc1T\x18\xf3Z\x9d\xd5&*\x03\xf3\xda\x17L\xd4P\xbdL\x15\x8f\xc6\xc9\xa5\x90\xc3I\x89\xa3\x17\xd8\xa1\x0d_O?\xea\xd7|T0\x97\xbc\x9c\x07\xccfV\x1cBb\xe4exT\x96\x1d3H\xc5+\xa3t\n\xf6\xb95\xbcX\xc4\x9c]Hy\xc4YnH\xaf\x1f\xf8Vmp\xd2\xb8\x18\x98Y\x83\xedCy\xe6\xfa\xcd\xb2\xe9\xac\xf4\xad\xe4\x8a4\x16\xe7\x1a\"x\x02\xfec\x88:\x1d\x07\xe2qtf\x82A\xad\xc2\xb6b8\x04Z2\xb5\xe61\xdcNlR\x9c\x9f5:8D\x89LZl\xfeY\x97eg\xb03\x17\x9d\x97K\x80\xd8F\xc9\xa7\x8aM\x9c\xf9\x11 \xe4\xbf\xc6\xbd3i\xf7\x9a\x16\xbensF\x95\x1b\xd7:\x899)}Y\xb8Ap\xc3\x0d=\x861\x8a\xce8\x13'gm\xcc\x06h\xb9\xeaA\x10\x18\x8dRY\x84,)lVD\xfb\xf5\xb8\xdcJ\xa8\x07\xbc+*+\x91c\x8d\xcb\x11\xdd\xb9\xba\xf7\xecB\xa4\xa2\xc9\x89\x0d\x0eM\xb1\xa4\xec\x8a%}\xceq\xae<\x94\x04\x85K\xbe\xa6\x9b\x1c\xabu\xeb\xefM\xf3\x93\x0eF\nf\xb8\x8a\xaa\x18m;Z\xc4cL\xdb\x02:?s\x95\xa3\xa68eR\x85\xddo\xc4T\xe0f)eC\x13a|T1?)\xdf@\xbc4GP.\xa2\x9c\xeb\xec\x0c\x15=\x14\xe5n\x9b\x00U\xa8Z\xe9.b\x1c6\xf0\xc92\x1dG\xcd\x16q\xdc\x96\xfb\x08\x0fnd\xde\x0d\x16\x94\xca9R(\xe6\xf8W-\xa6{\x15{\xab\x8dN\xf7\x9a\x1b\x80\xb6g\x7fl8\"\xf2\xe3\xc1\x07?\xe4\xa2\x1d\xd7B4\x89\xbd\x94\x9c,l\x8b\xcefE\xa6\xc0\x85\xfb\xb0\xec/!t\xf1\xf5\x92s\xca,\x1f\xda\xb9A\xf1\xb3[\xbe>0i\xcd\xc0x\x8dI$S\xed*\xf2\xe6\x9a\x04\xce[\xe7\xb00&\x1e\x94!!\x84\xd3\x12(l\xbf4G&\xa7\xfa\x14]\xb6B\xc5o$W*\xa3\xa6^\xb2\xde\xf7\x99Ho\xab\x1f`=a\x95\"\xc4~\x9c\x9f\xef0\xa2+t\xe3\xb9 \xa9\xdb\xb2\x0e\xdaLJ>S\x14\xbb\xc6\xfe\x19\x94\xe3\xd2JR\x01/\xb4EE \xa9\x9b\xdc\xed\x1b\xd1K\xaa\x9bR\xe6\x9f\x87\x81\xadM\xe5\x07\x065\x86\xaf\xbb.\xd7qF\xf3\xfc\x8a\x11\x19$D\x82\xf98:\x93vz\xf7\xc2\x0f\xa7\x9c\xba\xd1\xa2\x1a\x8f\x9cT\xf6\xa6l\x86\x8c\x84B\xe7\xfc\xfe\x908\xc2\xfb;\x16\x14\xa7\x10#\xaa\x13\xd5\xd3\x9e6\xee&\x82\x84\x94|\xbb\x9b\xa3\xd8hL\xaa6rM\xd1Q\xd8\xd2\xc5Qu\x8e\xe5\xd9\xa1\xdf\xc7\xf9,\x8e\x96\xf4T\x86\x11\xbc\xfb\xa7\xa2\xac\x1c1\xdb\xc50\xd8\xed\x02g\x97bpW\xa3M\xb4iB\x1fNc]\x84\xbaz\xa4\x8dI\xeakO\xea\x1a%\xcb\x8dv\xd0\xe5\xcf\xb9\x1bK\x0b\xbb\xa3[_\xf5@\x93\x1bQMd\x01\xfc\xac\xa2\x9c\xd6\xbc.Z3\xee9t\xb2\xce\x98\x9b\xde\x01\xfa\xe0\x14\xc6\x9b\xed\xfbA8\x97\xb8\xd9\x9c\xe7\xf1\x85\xb8 |,\xd0Z\xc7\x00\x91F\xcf&\xe9\xde\xb420\xbb\x16\x02\xe5\x8f\xf9k;\x8f(\xee\xb6Ppo\xf1$\\\x07\x94-\x97'\x18\xb2\xd9\x85\xbaA\xa9/\xcb\xb0\xc2A\xe1\xed+\x9e\xccZu\x96A\xcc*\xfd\x99;d5\xd0\x92[\xc3\xbd\xafg\xef\xe2j\xf4\x85\x8a\x0b\xcd\xb4\xb6\x05%\xaa\xc3\xe7,o_\xfb\xadf\x04\x95ru\n\xe5\nL\x95U\xdf\x86\xb2\xa8\xaaO\x95B~>?\xf6\x9f\xec\xa4\xc8\xb0\x12#H\x84\xec\xd4\x9a\xca\xe1\xf0\x13\x12\xcch\x15\xfc\xf7\xd3'\xb8\xf2\xc3itU\xa5/\xbe>\xb272\x12&_&}\x00\x7f\xc81\xcd\x9f\x16\xaeS\xdds4\xc4~\x816\xc8\x06\xf0\x00\xf2\x9a I\xdf\xf9K\x12eiK)'$W\x10\xd9>;\xc0\x8a\xaf1\x1cB\xc1\xff\xb8\x80\x03\xe0\x85\x15\xb5\x05\xf6\xfb2LI\xbc\xf6\x82[v,>\xd7\xf7,J5]\xcb#C\xfdK\xe9\x83F\xf1\x873\xf9\xa8\x88\xad&\x96\x8fJ\xda\xd2\x98\xcc\x94\xec/\xec\x8d<_\xe5#l\xb7 $\xa55f\x10\x89\xdd\x1c\x0f4s&a\x1c\x05A\x1b\xfd\x90\x0c\x1d;\xa5\xcd\x05\x84\xff\xf9r\x8a\xd2\x87\xfc\xaa\x8a_\xb4\xb7,\xd4\xf4w'\x9d\xa9\xd6p\xb4\xb7s\x84\xf3\xe1$\xf5\xd7\xe8'\xda\xf5\xc4\xcf\xcf\xe9\\\x7f?\xc8/R\xa5\xaa\x1a\x8dV\x91bQm\x15FPl\x99\xe6\\ri\xf7<\n\xc5\xe4\xd9\x9dD\xfe\xb7\xee\xb2G\xe3q\xe5bD\xab}G\xec\xb9\xe5\x92L}\x16\x9b\xa5\x99\x84\x95\xbfP\xb2e\xb2\x01\xa95(\x0e\xe6\xac\x8b\\\x98\xef\xbc\x0d\x87\xa0|\xa3\x1dD\xb5Ni\x18\xe5\xe2\xe2|\xb8M\xde\x9a&\xde\xd9\x14P\xcdGU\xa2\x9f\xc8Q\x88\xea\xd1S\xd8#\xe1\x8d\x82eA\x07R~\xab\x99F\xdfDW,W\x8em\xb4\xfeF\x13\"kA>Zz\xd3\x1eV\x8eq\x90\x1a*l\xd7\xd7\xf0\x92\x89\xef\xd7\xd6\xb8\xf0C/\xbe\xae\xaf\xe2%d\x7f\xb7~$\x93d\xd0Ta\xbb\xa1F:\xeb\xef\x07\xa4\xa9\xcevc\xa5\xd8\xbb2\x94\x83\xe4\x9fm\xc8+\xd9hq\x95\xfbwWwxys\x1b\xf2\xfc\xe8\x18\x19Ee+\x90\x0b\xf7\x07i\xeb\x07.(`3\xff.\xae\xa3\xf8T\x18\x9e5\\\x03\x91\xc7\x8f\x9db`u\xca\x97F\xdc\x85V\xf8+\x9e\x16\x83\x846h\x08\xadP\x11Z\xa2#\xb4EI\xf1H\xd3\xc0\xdaM3 \xbc\xd4\x0f\xfb\x8d\xbd\xd7\xee^\xf1\x88\xbey\x9bM]\xd7nwhEZ\xa0\x05\x8d\x13\x8fP\xe9\x98\x87\xd5\xb8'A8X\xd4\x87\xd8\x12\x0f\xa5\xd96'\xdaez\xcdbQl\xf5\xb4\x9f\xeb4\x84\xba{I\xbc/\x13\xd12\xb6\xca\xc1\xc5\xed\xd213\x1a\xf1X\x85,\xbdQ\xd5'\xc4z\x1f^\x86\xd1U\x08\x82\n\x0c\x81\x0d\xdb\xa8\xc7`\x07l\x99\x12\x15a\x1d\xf2\xb8t:\x8e\xab\x05\xdac#)\xf9(\x92\xc6\xb06)\xe74a\xa0\xd3Dh\x04\xb3\x89k#\xa9\xc0\x0ef~\x10|\xe3\xa1\x96\xce\xbb}/\xb5X-\xcfkV\x9aW\xc0z\xdc\xd9\xa8\xc7Z\x84\x95U\x98\xcc\xfek\x04+\x96f\xdc\x96:^\x98$g\x10\xe3\x0d\xbc$}MP\xce\x16\x81\x11\xe9\xabwQ\x8a\x82\x92\xfc\xeeh\xe11\x8f:\xd9\x1b\xb0\xa4\x0c\xcc\x7f\xe6gUV\x13\xd6\xfa\xc9\x08\xfa\x83\x07\"c\x03<}\n{0\x1a\xc1>\x1c\xc0@\xbc\xd9\xa5o\xfa\xbbp\x00;\xe2\xd5\x0e}\xb5\xd3\x83\x03\xd8\x15\xaf\xf6\xe9\xab\x01\x1c\xc0v\x1f\x86\xb0=\xa8\x1d\x92g8>\x852\xb0\x98\xfev\x19DU!\x7f\x13\x07h\xb4;\x19<\xa4{\xd9\xee?\x1a\xc0=L\x0f\xebH\xb6L\xe5\xa5\xb0\xfe\x9f\xff\xeb\xff4PY\xf40*\xaas{A\xc91\xac_w\xb4\xea\x06\xd27\x0d\xa4_;\x10\xd0\x0df\xa0\x0c\x06\xffV;\x1c\x98:\x1c\xf0\x0e\xdb\x13O\xae\x0f}\xacC2I\x90\x08\xd1\xbd~\xa8`\xfd\x13\xc9\xd7\x0c\xa3y\xa1Wf \xe5qY\xe5}@?t\x94}\x91\xa7l+\xf3[nuS\xb1\xa8`\xb5\x1d\x89\xcb4y?\xe7#\xde\x96\x02\xa0\xd5\xef\xbdD\xab\x01\xa0\xebe\xa7\x85'\x10q0!\xf9\x08\x1dWjt\xf2\xc5\x0cs\xf2n\xb6\"\xa9\x0f\x03\x80\x97\x91\x93\x85\x17\x1fESr\x98\xda\x92\x07\xac\x1aWZ<\xb4\xd1\x98J\xdd{{\x83G\xfb\x80f\xf9OF\xb0\xb7\xbf\xd3\x7fT2\xf8Rp\xa9B\xd0v\x95\x85\xe3)\x9a\xc7\x12D\x06gj\x9d~\xa5N\xff\xcc\x85\xb0pS\xd7\xe6\xd9\xae\xbc\xd1\x9bxh\x89\xa32\x93\xbef&\x83\xe6\x99\xf41\xe5\x85v\xe1\n4C\xa8\xd7\"R]\xaa:\x90\xef\xc3\x0f\xa4\x03\x89]~X\n\xe5@jQ\xdaH\x0d\xf7@fr\\\xc3\xbdtL\x9bS\x82@\xaf\x1a\x0eL\xb7\x12\xa4\x1623\xed\x16\x13\xe3\xafl\xb3\x1d-\x91\xeaq_\x93\x83\xd2ZqV\x83\xbb\x9d\xd9*F\xec\xc06\xde\x94\xa8X\xb1#\xec\xd1B\xb1\x1a\xb5\xf8Qj\xfa\xb3\xf6\x83\xe3\x1a\x86_\xc2\xb4\xb0\x81f\x05w\x87j\xda\xadtP\x8b\x1d\xf9\xa0{.\x02X\xc1\xd4a\x036\xac\xcc\xcc\x8e\xe1|\xa8\x07\xc6\xa2\x86yj\x82\x85\xd4\xb0\xf8E\xca\xd1\xdcX\xc6\xc7\xa8d\x1b\xe4\xa7\xf5\xc2\x7faq\x9b\x9fA\xb9`\xa8\x80\x1f\x97\xcdU\xdd\x9e[\xed\x7f\xbfHB\x87\x9e\x989k&\x98x&\xe7\x18:\x06\xd9<It\xe3V\xb9\xdd\xf2\xdegV\x8a\xe8\xf0\xadE\xa3\x10#\x92\xe6\x00'2&Q\x9e\x9f\x12\x82\xd0\x11\xfcE\xe9\x0dJS\xf2\x8a\x94\xa1\xce8\xf5\xfaK\xaa;\xc6\x7f\xe4\xb0\xca\xe8\\\x1e\x93\x90b\xea\xae\x12\xd6j\xc6\xe7\x1a\x06\xb8\xb0N.(\x86\x9es\x88\xe1 mB\x90\xc6j\xa55\xcf\x1d\x90\xd9d\x1c\x9f\x19\xf8\x0f\x1f\x15\xf4y3>\xba\xf12u\xbd\x84\x02>\x1e}\xae\x9a\xdeJ4\xb2\xbd\x8d\x83\xa1\xab\xb7=`bv\xdd\xc0\x90\xb1\x92F\xe6\xb4\x1e\xc3\xe0\xf7\x1f\x03o\x0bC\xef\x8cD\xca\xbc\xf2\xa8v\xf4\xa3\x12\x9d\x97\xb7\x8f\xd9\xb0\x98\xe9 \xcb[\xbeJ\x15E\xb8~\xf5\xeb\xca\xf9\x16V\xa9\x8c\x1c\x9e\x01\xb6\xc1\x0e+\x94[\xbf1\xb4,x\x8f\xf9M\xeb\x86FKL\x1bFR/\xd4S\xcf\xf2v|\xa2!\xa4\xfaq\xd5\xf3Bw*\xa0(+p\xeb\xe1\x14bLy\xd2\x92\x04\xa3\x9cR\xb7\xba\x99)e?/^\x17\x176\x035y\x1f\xcfq\xae\xcf\xcb\xac\xd1\xae#\n#\x04J\xd9T\xca9\x13\xa2j\xda\xf0\x92\xc9}n\x8b\x91\xc6^\x98\xcc\xa2x\xc9\x8c1tn1\x18\x17\xfc\x9d\xa8\xd7\xc2r\nT\xaeY\xe9E/T\x85\xdd\xbcV\xbd\x1fG!\xb5\xe1y3\xb90\x0bi[qY\x1c3\x06\x0e`\xcc\x06\x85\xd0\x857\xb9\x14qj\x96Y\x90\xfa\xab\x80@\xea/Ib\x8cw/\x06\xb2\xc8\xc2\xcb\xdcG%\x1f]\xf1\x86\xa7\xec*L\xadx\x1aWW\x93O[<\xe2\x80apl\xe1}\xe0+\x86;\xb6_ k.\xecc\xe1 \xf8\x9a\xa8\x1bEW\xb6Z\\\xe9\xf1\xa6\xb0\x01\xd58\xdd\xd1\x8e%\xc4\xd1\xd9H\xcak\xae\xaf\xc1\xc1\xc8\x82]\x98\x8a)\xe8kk\x14\xdafZ\xa9|\\\xe8\xad\x97t\x0154\xd5\xa4P\x1e\xb5\x89E\xf2\x89J\x06O\xc5\xbb\x91\\\xc3\x9cgd\x16d\xc9Bj\x80\xfd=\x12%\xc2\xe4\x1e\x0d\xb6W1\xc9\x1d\xf5\xb2&\xbd\xa8\x8e\x9d\x12\xbe\x18e<\xd3\x8fL\x1a\xcd\x81\xfcW)g\x9a\x96\x19\xf3r\xdaZ^\x14\xcaDz\x9c\\\x15\xfb\xa7~\x1e\x9e\x89\xeb+\xdd\xa4hLH\xabLB)\xb1`Z\xc4\xba\xaf\x84 \x10\xe7e\xe5\x9e\xe3\xc8\x0b\x02\xba\x0d\x8bE\x9eF!\x81\xab\x05 \xe1*\xcf\xa8\xb45\x82\x9e\xa5\xe9?U\x89f\x89:n\xd8]\x92\xfaAP\xdajj\x979d4\xbe\x00\x85\xcc\xe6W\xf2\xaa\xb9\xd2;;b\xdcJ\xb4adw\x99@\xab\x93.Q\x90\xdc\xe9\xa9\xdc~\xc5\x97\xac\x18yy0\xa5\xfd\xd6$(T\x00\\|m\x080c\xec\xb6*\xc9\xea\xbb,{\x9a\xd5\x9d\x99(\x9b\xc8\x07\x0c\x85J\xe9\x10J\xf37\xd2m;qa+V\x10I/\x1e\xb5>r\xecXY#<_\xbe\xd0\x89sc\x04\xb1\xeaYP\x7f\xa9R\x0b\xdb\xdc\xe7\x84\xc8\x10\xc5[\x04\x01p\x16B\xb8\xc4\xae`\x0c&\x95\x81\xe9U\xb8,[n\xd4\x15M\x16\xfc/\xe9\x96\xb9-f@\\\xdd\x06=#$Z\xe6i\x90\xf93\x95Q\xac\xb6\xa6l\xb1z{\x0c\x96{=\xe4D\x969\x90\xab\xc4]!.\xb7b\xb5%\x9eZ\x97\x89\x17sH\xcaBQ\x14\x1f{\x93E\xb9\xa2\x94\xe2|\x12\x93\x12.\xb4K\x8b+\xf0*bDSKU\xb9\x0din3\xda\x04@Lgz\xef\xde\x06\x8c\xb6\x9e\x15DK\x97\x10\xbd\xd9\x1c \x18\x04\x10\xd2qxV\xa9|c\xf3\xb4\xb8\x18\xc9X]+\xb7\xa4h\x84\xdb.\x97\x16\x9e\x0e\xfc\xfd3\x9a\x940`\xc7iZ93\xcd\xf5\xf5\xab\x96\xbc\xf6^\xdb\x98X\x16\x95\x18\x84\xa9/\xf0\xe2\xee\xde=\xae\xad\xd8\xc6\xc4\x0c>\x86\xb6\x1e\xe6\x8e\x95x#\xd4\x9c\x1d\xb9\xd5\x1c\xcb\xfe7\xbb\x0f\x06\x8eM\x87\xc4\x91\xd6K\x12\x7f\x1e\xc2\x10\x8bv>\xd7\xa2\xd0\x05\xdf\xc5Tr.x.\xcf\xe6:P\x13\xa4N\x9aH\x0b\xe8\xee+\xe8#\xe7\xcc\x8f\xaf\x95\xaf\xf4\xaeY\x13\x17x\x08@\xad\x07\xd6$\ng\xfe<\xab\xc9$.\x985\xbdl\xd1\xe4\xc1\xb5\xf6\x82\x8c\x0cA1\x02\x96\xd6\x15&^n>V\x9cN\xec\xcec\"]\xe5\xc6\x15\xc9\xba~\xe8\xe6a\x97\x87\\\x8c\x84\xc55\xd4B\xd1\xdd8\xa12\xa5h J\xa6\xb9*k\xc4s\x06\xa60\xa4\x87>B\x86\xb1\x14\xe8\xa7U\xacR,_\xaa\xe0m\x11\xcfn\xfc\xe8\xa1\xe3b:\xd4\xf1\x19\xcbl\xdd@U]\x9d\x02\x9cr>\xde8=\xcb\x99y\xfaG\xb9\n\x92=\x82\xfd<\x86t{\xfb\xb1#|\\-\xcf\x82\x0e\xd8\x9dN\xe8\x14\x1a\xa8\x9d}U\xae\x97\xf4(\xc2i\xc2\xb6f!K\x98\x8bE\xb9\xc4a\xd3\x06 \x0fq\xef\x82\xe5@\x87\xfe\xef\xef\xa2\x8dY(\xbc5\xf1\xec,\xdc\x06\x1e\xc3\xcd\xe32\xcb\xd8z\x8d4\x14\x1f\xe5\x1b\xc3\x9a\x15b\x8f\xc2\xe7\xe0\xa9E\x9c\x8a\xea\xa1\xba7\xe9\x93\xd9\xe8\nU\xde z\xf4\x07\xdd\xed\xf2\xcd\xe7\x12'&r\xe8\xb2\xad\xeb\x91\xbeTM:\xe7\xe7$}s\x15\x8aj\xcfI2\x89\xfdU\x1a)\xf6\xd3\x99\xe9\x83\xd7\xdeR\x0dh\xe2\x99\xea\x9e^//\xa2 iq2i\xd7\x98\x91`~4\xc76Q\xf1\x14\xe5D\xb9\x06\x86\x18\xc8\xec\xc4\x11\xccN!~kC\x0d\xeaW\x1a\x9b\xb6\x99\x87M\xc4\xc2\x14j\x14?\xf2\xd2k\x9b@\xee\xb2\xfa]\x19\x81L\xaa\x0e\x0f0\x82\xdb\x7fY3\x91\xed{r ]/g\xffS\xb9\x95\xcf\xdc\x15}\x1d\xff\x1b\xda\x0fUUs\xa4w\x03\xa3\xdc\xe9mq\x94\x9ek\x9a,xt\xfb\xe4\xc4n<8\xd3B!Fj\x85\x0b$w\xc4\xd8\x10O\xb7\x1a\xe18>C\x07'\xe1H\x91\xa1<\"\xbe\xa8\xacH\xd8\x00g\xb9\x8fv\xfc>\x1f\xfa\xd6\x16W\xf6\xb1\xf0\x03\xe5\x14r\x9f>\x19\xb4d\xc8\xd5\x9b\xf4\x83\x0b\xd24\xdaVX\xa1\xe7\xa3\x88\x0b\xd6\xf99I^E\xd3\x0c\x0dN\xd4\xa5D>G\x16+Yt!/N\xc8\xf7\xde28BnE\x93\x16\x7f]D\x88\x0e\xed\xbdAO\x83q\xc8\xfc\xb0\x80\x0dq\xb7\x18\x04\x1c@\x0cC\xcd\"\x0bSS5\\p\xd1\xa9n`\xb5\xa8\xaa'\x0f|-#\x91\xe3\xaf\x9bx3\xf2M\xe4M+ \xacjID\xce3\xb1\xd0\xc8q|\x88\x03I\xba!\xb9zG\x89@x\x1c\xc7v\xa1IB*\xad\x1c\x97\x1bz\x916\x11\x84\x9d\x87\x06q\x88\x8e\"\xb6\xcbs\xf0\xc3I\x90M\xc9\x10\xc6\xa1=\xe8\xed8g\x12\x12\xfcC\x07\xd3\x1f\x0c\x9c3\x85\xb0-W\x81?\xf1S,\xdf\x1b<\xc0P\x06{\x83\x87\xfc\xdfG\xec\xdf\x9d\xde\x1dM\xe2N7S\x10y\xcc[\x99t\xdf\xbd\xf9\xea\xabo\x8e\xcf\x8f\xde\xbc~\xf1\xf2\xabS|\xf5\xfe\xed\xf3\xc3w\xf2\xab\xda\x9d6\xe8\xed\xfdN;-[M\xbd\xaa\xf6\xd2@\x165\x07\xf3\xf5\x8a\x0c!\xab\x9e\x10+\xef\x9a\x02d\x08v\xcf-\xb6\xa0c\xff\xfdF\xd5\xe2\x02(\x9a?\xd2M\xa3\xf9<\xa87\x0ej\x18\x91&\xabJ>\xa2\xd4\xd4uy12\xfd\xbaYL\xb2K\xce\x19\xe4\xac*\xaf\xa8Y\xff\xfc#63K^\x81\x1cod\xad\x89n\xaeU\xad\n|\x1eA!2\x12\x8dJ\x0ef%l\xec\xef\xa9\x0c\xc8\x97\xc2F^\xa7\x85b'\xa7\xca~\xc8\xe2:\x94\xd1\x8c}U\x1d\x04\xdf\xbca\x83\xae@\xa3i\xd8H\x17\xa1\x18\xac\xa0\xa9\x16\x8b\xde\x19\xba\x9br\x87\x94\x1a<p\\ES4x\xd8\xfb\x0c\xc2W^\xde\x92vM\xb6\x85\xdbd\x895\xcb{\xe3\xe4G\xef\xdb8Z\xfa \x9e\xa1\xa1=\x18\x0c\x1c\x17\x98|.\xa7\x90M\xbd8M\xbe\xf5Y\xfe\x88\xd0\x1e\xec\xf5[M1\xb4\x1f\xee\xe1\xc1\xf0h\xbf\n\xa6\xc1g\x83\x89\x9bu\xa8\xac\x0f'\xd4}\x1d\x13\x1e\xda;\x8f\x9c\xaa\xc0I\xa7d:+\xed\xfe`\xcf\xb1Q\xa9\xed\x82\x85\xffZ\x0dA\xed\xf8\xdd\x03\x1a`\x15\x16\x1f\xbe\xe4Hs~Yr\xa8\xbf\xa9\x89u\xb6.E\xe7K5\xfb#/\xbc\xac\x16\x16\xa6 ~\xa7\xa3\x15\x06X`\x9a\x10\x9e*>\x10\xf9\x1c\x18\xdeQy\xa1\x8f\xb7\">\xdd\xd1\xd6%\xb9N\x90\x91&\xdc\xa3\xc2\xc2\x1d\\\xbc\xc3\xe47C\x16\x14w\x1c\x9e\x9d\x95t.\xa22\xdeZ\x1e\ny\x05%\x0c\x0e\xe9\xd8f]\xa0\x91\x86T\x1d\xc3\xd0\xa7\xb1O\xff\xd2\xe2O\xa3haT}7~\xb9\xd1\x01\xcc \x9a&\x18\xde4\n))\xda2\x1ew\xb7\x1c\x9d:4\xbf\x1cJyK\x96\x87\x98\x90\xfc\xeezE8o\x0c\x1d\xb0\xc4\xed\xaa\x977\xbae\xba\xafn\x18\xec\x86\x9b\xf8\x91~\x0f\xef\xedj\xb7\xf0#\x95\x05\xcbP\x18.\x1a\x0e\xed\xc1\xbecg\x94\xf2\xec;\xb6\xe5\xa7$\xf6\xd2(\xa6\xe8\xd3t\x94\xa7r\xf0\xb2\x1b\xa7F;\xa8\xbb\xba.h&\x8c \xa6#\xa8\xe2EH>\xa6t\x13i\x12\x91\xd3\xdd\x80m\xe3b\xbc\xcc\x87\xbd\x19\xb0%\xf5\x84\n?N\x1a\x1fh\xc1\xba\xdb3\x93\xc0=\xe9\xea\xa3\xc4\x94\xfb$i\xca%\xe8W\x14\x9dEf-\x17\xd7.B}\x04\xe5\xd02N\x81\x98\x06\xae\xf7\x18<x\n\xc9c\x07\xe2.:YPr\x96\x8d\x93N\xe7\xcc\xc5\x8b\xb5;\xc1N\xe90Q1K\x9c%\xaa\xf63\xe2\xef\x1f4\xde~5\xb1\x8c\x04C]e:\xf9\x96\x8e\x8b_\x07\xa1\xc6\xa6R\x01\xf8\xad\x90o'\xb9\x95\xa5\xb6\x12\x06\xa7\xa1\xe8\xa8\xcbF\xc1\xb4\x99\xf4\xfcG\xbb\x1b\xddH\x00\xf2l\x8a\x13x\n\xb3\xc7Um\x9ex\xd0\xf6\x98.e2\x9eu:g\x0em\xd3\xcbU\xe1\x1awhfs\xdf\xdc%\xccL\xa9\xd6@t\x8b'\xd9\x8c2\x9e \xb2F\xc9x\xc6\xf2\xaf\x85R`o\xac\xf2\xe9\x13E\xae\xe2\x04\xc4D\x0b\xe5\xcdx[\x1cz\xa4\xb33}\xe5\xa5\x8b\xee\xd2\x0fo\x89-\"\x01\x95\x8f\xbaf\x17\x1e\xf5z\x0f\xfa\x8f\x1e\x0d\xf6v\x1f\xec\xf6\x1e=\xc2\x9cZ\xbd/0`\xefc\x15\xed\xdbN\xc5|V\xa2\xee\x1c\xd51\xf0\x84O\x8b\x1e?\xc4eI\xb3x\xfc\xab[O\xc7\xe9N\xa3 2\x14\xfa!\xc6\x8ck\x16\x95\x8e\x99!\xd1\x86\x9d\xe8\x8d\x89\x1f\xde\x0d=0\x11\x03~C\x0c#\xce\xa2\xdb\xbeM\x1c\xc3\x96gT#\xac\xa1\x1a\xe6\x04\xaa|L .\xcf\xa7O\x90P\xe6p\x82w\x90\x07`Y0\x14\xb2\xc8\x10\xec\x08[\x92\xdc8\x13\\V\xe6\xa0\xf9\xe9\x13D\xf0\x94\xf9g\xb2\x86:\xe2\x8e\x16\x83\xc2f\x95\x8fi\x05\xd6\xc0\xfe\xce\xa0\xc7\x02)>\x85\xbd\x07;\xbb;\xbc\x7fV\x1f;\xa2\xc8\x82\xce\xdf\xf4-\xf3\xc2L\\\xecd@\xcb2\xd8\xe6\xcdt\xe88\xb7\xf9\xa0\x9e<\x81~\xcf\x81\x0e\xec\xef\xed\xed\xec\xdf\xcd\xa6\xaf\x1c\xa9\xfc\xe0\x18\xf4\x8dg\xea\xc0\xe9\xceI*\x0e\xf9\xe6[Y\xa4\xf3\xeaIjd\xf1H\x03\x8b\x87<\xd1E@L\x0c^l\x13n{\xe4\xdcz'\xf6w\xf4\xd7#\nOV\xa10(\xa4\xb5\x03\xdb+\x92.\xa2z\x034\xc9\x8dl\x0b\xa3\xcd\x0b\x9a:\xf6\xcf0\xc0\xc5\xd8\xfa\x97\x7f\xc9\x87\x83\xaf\xa21\xa5Ng\x9b\xcd\x9b\xae\xf6\x0eJ\xbb\xfd\x1d&\xf5\x0evv\xf9\xbfLM:\xd8ej\xd2\xc1^\xaf\"\x0e\xf7\x1f9B\x14o\xd3Y#C\xad\xc3G\x99E\xf6\xc7\xa1\xddwlK\xdc\xc6\xbf\xf3\xe6\x96s\x06#\xb0~\xc1L\x8d\x1d\xba\xcf\xb7F`\x8d\xd9E\x0b\xfcrf1\x1d\xc1N\xcf\xe1VK\xa5\xe8\xbd\xa2\xa1\xba\xb0\xdd\x1c\xf2y\x9b\x16t\xe89\x80\x01L;`\x9d\x95\x9c\xe3\xb6\xda\xe9\x07d0n\x85\xf6\xee\x80%G\n\xed\xdd\x1d\xc7\x1cx\x8d\x8f\xe4\x01\x9d\xa2^\xd7\x1c\xda\x8f\x1e9\xb65\xf5\xd7Tl\xb0<\xad\x19\xccF\x81\x86\x1fT\n\xd5\x9b\xcc\xaeW\x00\xa0\xd5\xe4%]\xbf\x89\xd0\xd4\xb3\xe6\xe8\xaa\x81'\xb1\xdeV\x813\xe9~\x95\xea\x10\xd3\x95\x9a]\x8e\x13\xc0\x96#\xe6\xb1\xc7\x05I)|\xd1j\xe9\x99\xda(\xca\xd4of\x9b\xb7\xb9\xf5e\x86\xab\x92X\xeb\xc8\x0b\xff\x94\xc2$\n\xd7$N\x81\xa3y\x1a\xc1*\xf6\x97>\x06+\xc4)l*\xd25m\xf7\x81\xe1\xfc\xe9\xef\xe8%\xe8~O\xe5_\xaa\"t\xff\x01\x17\xa1\xfb\xff\xaaE\xe8\x87\x86\x83]}\xcf\x01\xbb\xab\x03,\x05x\xcf\xb1\xad\x97\xc7\xe7oO\xde\xbc{\xa3\x1ez\x9e\xaa\x9e*\x17\xab\xda\xab\n<PE\xc8\x82\x0bq\xb2\xe5\xcfb\x0f\xb3qT\xea\xd2\x07\x9d\xbe\x8d\xdc\x1f3\xe3\xea&\xe9u@\xbaS?Y\x05\xde5=\x18\xc2(\xc4DSv\x7fw\xe0t\xbd\xd5\x8a\x84\xd3\xa3\x85\x1fLQz'\xdd$\xa6\\\xa5\xf5\x93\xb7\xf6\x98i\xcf\xd0rE\x9a\xa4I\x14\xa6$L\xbf\xc50\xb99\xeb\xedt\xa3\x15 Y\xda7\xe6\xc2l=a\x9f>\x15U\xba/F\x8c>?\xf9\xe1>/b9FxXV&\x1e\xa7\xdd\x17\x8f!F\x8b\xb3) HJ\xe4\xac7\xe3h\x1c\x9fir\xa6\n.W\x8d\xed\xaa\xa7\xa3%c\xe5rP\xc7v\xa6b\xbc\xbb\xdc\xca\x1d\xefF<\x05\xdd\xd1\x80\x1b\xd8\x0d\xad\xe7B\xb9\x98{\xe3\x8c3\xb4'\xc6\xec\x93hzVX\xc0\x8c$}\xac\xcf\xb2\x19\xdf\x16\xf1\xf7\x0c\x14\xc5\x80\xf75\x1c\x1b=\x92\xff5(\x8f\xf6\xf4\xa4b_wEG\x99\xc2\xbeco\xb5\xa3\x16\xb78\xd99\x80<.5T\xe9\x00\x82\xa8\xfaz\xc2\xcc7\xab\x10Gsv\xcfaJ\xa2\x8c\x19Z{\x08\x8b{\xf7`\"\xfc\xb44\x1f>\x96\xa3@\xe1j\xe0w\x94,\xe0Z\xb0d!\xff.\xb2'\xd8\xda\xa7OEk\xfa\x05\x9a\xdcv\x81vM<\x12\xb7\xe3\xb3~\xb1\x1c\xba\xe1\x90\x01|\x99\x1c\xe7\xf7\x8ev\xaf\xc0\xe0\x12\xc2\x9a\x18\\\xce\nS.#f\x96\xec)&\x10Km\xcb\xa2\xfb6\xb7\xfa\xbf\xedT*H\xc5pmWg\x9c@ \xb6I\xb5\xdb8\x95\x92^\xe2\xdf\xf4\x94\xff\x15\xe9)\x0d\xe4j\xb0\xa3\xfa\x1dD-8\x18\xc9j7?\xb1j\xcf\xd19I\xdf\x8a\x8aof\xf5A\x92s\x90pZF\xf7\x94\x0b\x11n\xabqt\x06C\x93i\xdf$\n\x934\xce&i\xc4r\xe3\x83\xe4\xb7_.=(\xff-\x1d\xbb\xc3\xf2g\x9c\x08\x1c@\x06\x8aG\xf3\x86\xe0\xef\xdfzK\xcaV\xc7\x9b\xf5\x9e\x1f\x9d\xc2w\x07\xfdH\xf3\x03\xdc\x15\xda\x97\x9e\xe3\xf2\x93h\x8f\x1f\xad(\x0e\x08\xcf\x94\xdd]\xc7\xc5\xfdLe\x03\x177\xed\xa4,\"\x04\xecUI\xb9\xc0\xf2\x82'\xe2~wQq\xcc8:==\xc9XN\xbe\xaa\x19\xc7\xd1\xe9\xe9)eH\x9f\x93I\xe0\xc5\x1e\x9da\xd5E\xe3\xe8\xf4\xf4\x03\x15\xafx\x13ji\xe0\x930=!\x93T_\xfe\xfc\xcd\xab\xdaB6\x17c\xf1\xbb\xe8\x92\x84\xfa\xc1?\xf7R\x8fy\x11\x92\xf8eJ\x96\xfa6^\xf8\x81a\xe4\x7f~\xf7\xea\x9b\xc3 8\x8a\x82\x80L\xf4S\xa7U\x9a\xca_D\xf1\x92k\xbb\xf5\x15N \xfd\xdeX\xe5\x15\x99\xfa\x9e~\x86\xaf\xfc%\xa1b0.n\xf5\xcb\xd7\xde\x92L_GS\xf2\xca[iJ\xa3\xa9a\xd5\xdfz>]\xb1\x9f3\x92\x18\xd6\xe5m\x90\xcd}\xcd|\xd9{\xc3pN?|\xf5\x0d\x1eC\xfa6O?|\xf5:[^\x90\xd8X\xfc\xd6K\x17\xa7\xc4\x80\x0b\xb4<\xf2C\xc3\x80O?|U\x87H\xa7\x1f\xbe\xca\xfdM\x0d5\xa2,\x9e\x10\x16z\xdeP\x83n\x94\xd3\x05!\xa9\x1e\xaa\xef\xc8\xc7\xf4]\xecM.\x8fL[%\xafa(\x8e\xb2I\x0e\xbb\xbc\xe4\x86\xa5\x0b\xf7m\x0cY\xc98\xf05<\x81\xa9\x904a\xdd\xe9\xe8\xf8\xd4k\x17\xe60\x82\xe9x\xad\x18\x9d\xd2g #X\x8c\xe7\x9a\x92sd\xe7u%\x170\x82sJ\xf1\xcfu\xa7\x11\xf0c\x18\xdd\x89\xed\x0bz\xf6~\xfa\x04\x9e}\xe1\xc2\xcc\x85\x95\xe3\xc2\xc58(\xde\x05,\x07s2\x9e\x9f\xb1\xe8\xbaK\x8d/\x03R\xd6kz\xa2\xc7\x0e\\\x8c\xaf\x99\x1a\x99~~\xedB<\xbe>+\xf4\x99\xd0\x96Z7*}\xb4>9\xf4\xbd\xe1~_\xd5\x05e\x82\x954In\xfd\x9d\x07\xfff\xf9\xf4_\x8e\xe5\x93\x99\xd7pl+\x0b\x93I\xb4\xa2\xd2L\xa22o\x1a\xa7m \xdf\x84f\x01\xfcq|\xc6\xae\x00\xfa\x0f\x1c\xdbG\xef\x8f\xbf\x9b\xf5{\x15I~\x1c\x9f\x8d\xd33\xc5\x89^;\x11\x93~\xbf\x16\xf5\xf8\xa2\xea\xc4\x93\xbb5\xc4j\xbfMe\xb7^\xbe\xa1T\xa6;\x11lV\xe9-c\xae\xf6U\xab\xa8\x19\xbe\xae\xdc\xed\x04\x8ckS\xde\xae\xd8[U\xc3\xb0`M\xab\xaf\xa7\x9ct\xa8\xd6\x91k\xf6~W\x1d\xca5\x17,\xd5^\xe7\xfc\xfd\xae\xd3M\x88\xb2e\x97\xbc\xad=\xc7V\xbe:\xe7,\xb1*\xd5^\xf0\xd6T\xf8\\\xf1\xf7*\x01\xfc\x88\x1cf\xae\x8fW\x8eE\x91\x0c{B\x12\xc5\x91\xf0\x18\x8b\xf8\xfd[\xb9\xe8\x10F`\xf1\x8fp\x87\xcf\xecS\xa5\xd77\xf5\xea\xdb\x9f0\x92\xde\x08\xce\xbb\xb3r\x01\xa5\x84[[\xf5\xaa]\xb3\x7f\x9d\xa0\x8e\xc7\xdd\x98$Q\xb0&\xb6\xba\xa6\xf2CX ZY\xe6\x19\xd1\xdd\xcb\xaf\x01\x93\x15\x99 a9\xab\xdd\xc3\xea\x93\xdao\\xc\x96v5\xd9\xfaA\xb2\x0394zl\xf1\xa58!?1\x86\x163_\x8a\xac8\x0b\x12\xdao\x1cY*\xab\x8a\xe55\x1e\xb27*\xf6\xbdl\x9c\xf3\xba\x9aX\x05\xa4s\xc4\xde\xc2\x98\xaf\xe5\xc9\xe4w\xf1,p)\x0e\xdb\xc1)\xa8\x89\xb4J\x7f\xbej\xa2s \xae\xb4\xd2\xee\xb9Q B\xcb\x14\xc7\x01\xf9Y\xe7\xe1\xbc\xcf'\xfa\x1a\xcb\xe6\xa4U\xa0J\x94i\xf7|\xcd\xe4\xc9>.e\xf7<a\"e\x8f\x89\x93\x85.\xa9 \xaf\xb8\xf6\xb2 \x9d>\x1c\x00\xe9F\x97\x18\x94e\xe6\xf9\x9ahc\xea\x93\xe0\xc5\x03\xdf\x1b\xcd\xd5'\xbc:E\xb8\xe6\xda3\xac=\x8d\x96\x9e\xdf\x94 \xc4\xb8\x81\xe5\xc7c\xc1.>}b19)\xec0\xdc\xd8[\xc6E\xd1\xbfF\x18\xa4t\x8b)\xf9=d=Fh\xedoc\x0e\xadY\x97\x84)\x89m~\x81\xe0\xd91\x8a\xe6\x94\xc5\x9du\xc9G?\xb5\xb9P\xbf\xd5sX\x1d\x8c\xb4\xb3\xe2\xe6\xff\x070\xb1?\xda\x16\xdfw\xdb\x93\x85\xe7\x870\xb9\x9e\x04\xc4b\xa1\xea\xe9:\xbe\xb4)\x06\x1f\x087\xd0\xd0\x85\xc4\x85 -N\xb0d\x08\x13;6S\x03P\xf7e#Xp\xfc[\x19\x9f\x1f\x9f\xc4\xc4\x94f[<75\xf4\x08\xc2B\x19\x1d=v \xb3\xc3q\xd4\xe9\xe8\"\xc8\x8a\x87n\x12\x1e<Al\xab\xbe\xcb\xbc\x0e\xb7\xc4:\xbd3\xa6\xfe\xae\xbe\xbe\xa9\xdb\xfe\xef\x1ai\xd1\x9c'F\xaca\x9c\xc5\xb3\xe6\xd1\x1c\\\xe1R\x82;\xd48Q\xba\xc4G\xc6\x80\x88\x94\xe6D\x88O\x94\x9e]\xb4\xa3\x0f\x87p\x00\xa7< Q\x16.\xbcp\x1a\x90iN\xd5-d\x90\xf0&\x0b\xaf\xe1\x93n\x14\xe6\xb5bQ\x8bb\\h\xd7#\x0bG\xe3!4\xec\xdd\x98xI\x14\x0e\xc17\xa3\x08\x8e&\xc6\xd1\xd0\xd32\n\x08w\xb3\xc1\xa8u\xd2O\xdbz/\xc6*\xfa\x87X\x9e\x9a #\xf2\x0d\x8d\xe7\xdf\x11\xbb \x18\xc0\x107x\xda=\xf7$\xd1\x03!N\xba\xb99\x17\xe9\xae\xab\x08\xe5\xd4a\xd4Q#F\xf1c\x8c\xc7\xd0\xe1\x18\xcd\x1d\x8dp8\x9f>\xe1&p\xd4p\xad\x9a\xde\xde6\xf6\xb6)\xfe\xea\xb1QF\xac\x1c\xe8\x7ff\xaba \x9c\"\x1c\xa7\xf2\n|\xb9\xd8)\\\x83Rm\xd0I\xa0\x12\xddS\xad\xb7~\xedJ\x9d4\xc2n-\x05S\xab\xc2\x85t\xcf1S\xb4\x8d?X\x184\x84\x01\xe9\x9e_\xd1\x02\xe2t\xcf\xd7,F\x1d\xe9\x9e',{\x04\xe1+l\x13\x86y\xa4{>\xe1\xc6\x94\xf4\xa0xe\x13\xd4]\xd4\x8e\xfcu\xbb\x91\xbb\x86\xc8g X\x9a\xb0{\xae\x0d\x05\x0f\x18\xec5\x9f\x14\xde\x90\xf39\x19\x8e\xdf\xfac\x17\x03M\xb2\x00\xf6bc\x15\x87\x1fL\xd0\x88\xe7\x82\xeefd\x1e\xa6\xe0\xa7 f\xaa\xa9\xa4\xfc \x9c_\xa2%\xd5A[\xe6 $!\xbd\xf9,<\xbf\xd2zGV\xaaM\x87\xba\x84\x82\xf2c\xe0\xca\xc5\xd3\x8ec\x11\xe6\xa1\xf4<~\x8d\x07L\x1f\xcf\xe6\x13\xfe\xfb.\xd9\x80\x93\"\xf3\xed\xadO~g\x88y\xc39\xfa\x87\x0c\xfd\xfb\x14\xbfC\x17\xb6L\xe3m7N>\xbe\xfa\x89\xb4X\xbf\x86\xb5\xbb1\xce\xbf:o\x85\xc9(V\xfc\x12\xf7\xfaq\xed\x86\x9d\xf2\xa8I\xc7.\x88Ma\xb9`\x9d/,\xc7\xc5t\x14\xae\x1c\xd5\xbaU\x14\xa3\xd4F4a\xed\xe6\x98\"\xfeT\x88K-\xd0O\xca\xf1\xb4\xcb_\xe6\x7f\xdd\xb8\xec\x107O\x92\xa9\xf9r\xce\x0e\xff\x92O^\xf6&\x91U\x97\xe5l\xe5\xebJ\xe5\x85\\\x991\x8a\xc5\x80\x9c\xb2-\x8f=\xd8\xddw\xecc\xd9\x86V\x1d\x1f [\xc4\xfc\x16\xa2\xdcO\xb6\x88uu\xac\x0b\x97-\xac\x8f\xa8\x0c5\xd2\x8a\xa9\xec\xca\x19\xf7\x06\x15\xb0\xca\xb5F\xe5\xd4\x83\x94\x92s\xe9\x07\xd9\x18z\x16\xf3?\x87\nL&R\x08_\x0e\xe3<\xf0\xa8\xa7\x96a*\xdfW|\x1e\x98\xb8>\x14\x12Jy\x9d\xcb\xfb\x08\xd1\xa5\xce.\x03\xca\xd6\x89L\x85\x90\x8f\xd3\x88C\x8e\x12.\xcd\xa4\xa0\xc6x\x1a\x8f\xab\xd8%\xb8\xc2\"];?Q\xf0z\xf45\xc6[\xc8\xb3\xf33&\x05KNx\x89\x8c\xcd\xe7]*s\xfe\xd4\xe6\x828\xc5\x93\xed\x18\x97\x13\x7ff\x94\x83\xe6\xc1\xe9Q\x8d-\x1b\x9e8.\x04v\xd0\xfd\n:\x10t\xbf\xc5\xff\xbf\x80\x7f\x86\xadK\x15!\xdf\n\xa6\xe8\xb8\xf41\xb3&\xb5eZ\xc1\xad\xdd\x1f8\xb6\xfcJD\xa3\xcb\x0d\xddY\xc7\xa7\xa5.%z\xa3\xce\x8d\x82\xa7i\x91\x05\x83\xf4\x93\x8e2\x81\xa4z\xea\xb9\xb9\xb4\xef\xb0\xe8\x9bzD\xab\xc0\xa9\x18\xae\x8dl\xd3\xd6\xa5S;j\\\xef\xa6a\xf3Q]\xd9\xf9\xe6\xc8\xd7\xed\x98'\x93i\xc0S\x05\x92\xf6%\xd3\xd4\x0fv\x1fJV\xf0\x95\xbe\x8f\xbb\xcc\xc0\xb9\x8b;\xc8~#\xa3E\xdd\xb4\xbc h\x9a\x92\xcc\xaa\xeaO=F\xb5L\xf6BxsQ\xaf\xbe\xf1y\x15\xb3\xca&j/\xa9\n::\xd6\xdc'\xcaO\xa4\xb7\x9b\x93\x1f\x8a\xe8\x86\x14\n\xf4YSZN\x8f\x91\xf6zV\xb4\xb0\x82\x11D\x9dN3\x07\x98\xd4\xa4p\x10O\xc8(/#\x81tov:n\xa1-\xa3\x18\x81$\xb2\xfd\x08\x01;\xa6\xacE\"\x98\xf4\xb1w\xc6(\xdf\xf6vFKb;l\xe2\n\x8dB3p4\x97\x9a\xd2\xd6\xbb1o\xf9\xa8\x8bG\x97oG\xddu\xdb\x83%\xf6&\x8d{\xf7\xae\x10\xdd\x8c\xc5\xfe\x06X\xbc9nUW\xbd\xd8vP\xa3\xcd\xd3\x88\xb7P\xbf\x02>[\x81\xd8\xf6\xebV@\"A\xf8\xf3V\x97\x83L\xe9\xa5N\x9dgp)\xdd\x1c\xa0\xda^\n \xc84<<v\xb3\xea\xdf\x11B\x07\xac!\xf8\xe1$\x8aczZ\xfb\xe1:\x9a\xa05\xd2\x1dEJ\x90L<\x0dqM*\x1e\x06\xdc\x9exW\xbd<\xe3\xe7\xadz\xe3\xc8n\"+Wj\xdc\xbb\xaer\xa17\xd1\x04\x1a\x9c)\xce\"\xfc\x86\xa3n-\x02\x17V:\xf6i\xe1\xc2\xd4\x85\xb5+\x8c@Vp\xd0\xac\x17\xaa\x80V<7\xa8\x8a\xd6\x99;/\x99;\xac\xcb\x920\xe7\xea\xb6J\xbds}\xe4[-\xc3<\xbf\xad\x8f%\xaaR\xed\xb9\xa3\x9b\x1f\xde\xa8,P\x83\x9f\xa7Nz\x0c\x0bx\n\xe7\x8f\xe1\xdcdZ\x8af\xa5\xd7\xc0\xec\x0f\x96vfO1\xe4\xf8\xf9\x993\xee\x9d\xb90\x1d\xf7\xcf(\xe7\xb7\xb4\xf1\x9dS\xb8\xe0^\xe3\xcfYnwz]\xde\x8cz\x9bWv\xeb\x03#\xa1\xcbK\x9d\xc7\xb0\x85]\xae\xbb!\xf9\x98\xda\x8e\xd3\x9dF!1\x98\xdf\xe6\x83\xf5\xed\xb5\x0bK\x17\xa6\xcc\xb1\x8bn\xeeVC\xbbq\xba\xcfN\x8e\x0f\xbf\x06\x96+\xbc{r\xfc\xee\xfd \xea\xa06\xdbb}S\x80\xbc*\xfe\xfa\x15\xf1\xb1.\xb2!^W\xd9\xf4\x94B\xf0\x87\x1c\xfcD=\xb6rI\xd7(\xdaE\xb8\xb3X\xb3U\xc2\xca\xd0O\xa2^\x11#\xb0Q\xee\xb9\xe6\xaa\xb7\x8d\xffT\xfe\xd5\x1aV\x15\xeb!?7-\xa9\xf3\xe55\xda\x95\xb43\x1a\xe1\xf0\x94f\xc8\xc2\x7f\xc6\xccX\x86\xa9\xf0\x98\xcb\xae\x7f\xc6\x15z\xb7\x9d\xa1\xd6g\xb6y\x86\x08\x1a\xfd\xbc\x98\xb4\xf3\xff\x11w\xe5\xb6\xe7\xa6\x8eJ\xc7\xb9\xaa\x83\x99\xa9\x9711\xb9\xf2\x19\x12\xe79y\xaa\xb8\x8c\x89\xf3{\xb5Y\xec\xd1\n\xdb\xc6\x88l\xfc~Q\xc3J`;\xfd\x16\xed`Zu\xa9-\x97%Z7\xb48h\xd9\xa2\xcb\xb2\xa4W\xda\xe5\xef\x0d\xad\xefl\xd4\xba\xcb\x12\xa3\x1b\xfa\xe0\xa5\x86\x9evo\xd1\x13\xfd\xffNC\x7f\xbc\x8e\x81\x94H]\xa4<\xec\xfa\xe7\xf9\x9e\xe97\xa2\xd6\xa8\x88n\xc1\xb8\xfb*K\x91\x0b{s\x91\x90xMb\x14\x12\xba\xdf\x92\x8b\xaf\xfdT-\xabrI\xb1\xde*\xc8\xc3\"\xadUP\xa2Z\x05\xa1w\x91\x9d5\x9d'Z\x0d\x928c&m\xfc<cm:N<\x91\x13F\x1a\xd1\x13\x8ei\xe3\xc4\xcd%\xde\x9c?\x86\xf4\xb1\x89\xa3b\x97\xc3\xb3\xd0e\x06\x97x\x8a\xdf\xeab\xc5n\xd0\xa3k\x83\x88\x8b\x87\x1dg)\xde\xf7\xb2\x94\xb9\x85\x865\xd6\xb7[y[}Sj\x85\x03\x84\x99J\x94\xd1\xb9\xca\xa3%N9\xb5\xadn\xec\x19\xc2\xea\x9d?\xb9\xb4'\xb5\x0dbfa\x94@\"\x86\x9d\xa1\xb7\xf6\xe7^*\xee\x94\xf3?\xbbT8\x99zA\x14\x92*01\x0d\x03\xfd\xc0\x13B\x9a \xa0\x14Yf\x18_E\xc8w\x86\xeb\xab\xc6)\x8ag\xc6\xc4\xc3I\xeb;\x88\"\x9brc\xfb~~\xc5\xa3i^\x07I\xfd\xee\x08\x98\xf2A\xdb\xc5\nF\x90\xbb\x153?\xdew\xe4c\xfa:\x9a\x12\xdb\xd2\xdd\xed1\x95\xe9\xc4\xe9F\x8cr\xd8+\x9d3:}&\x0b/\xf6&)\x89\x9f{\xa9W\x892\n\xc05\xa5m\x00\xb1\xeaN\xbd\x94R\x1e\x9cJ\xd0\x80\xdfZ\x1a\x9c\xf7\xa1\xddlk\x9eeL\xdf\xfd,\x1cBlPc\xa0\xd7=\xdbIMK\x04\xb8\xef\xd0X\x04\xf7\x07F+u\x19\xab\x86.\xe1\xbeK\xf7\xb8\xc3\x9c\xd6}\xc3\x9c6<6v\x9a]\xaa\xf4,Nn\xc5\xe6S\xb9\x9f8\xcc\xc1\xcc\xa7\x87\x9eO\xd9\xf7;\x91\xec\x9b\xcc\xf9\xf5\x87^\xc5\x0d\x9b\xb3\x9c\x06a_6\xe5l\x82\x85\xee,B/\xf4Jb\x17f\x84\x82\x06Od\x9c\xa1\x11\xb8\xdf\x9d\xf14\x00\x1a^\xaf1 \xefFqSR9\x9e\x84x\x94mpkV\xa3\x8e\xbb\xf7\x15Ej\xf5\xe8\x13\x12\xda\xf8\xc1\xd98>S l\xc4\xe5\xb6\xa6m\xef\x97m\xe2\x81\x8d\x9fIN\xb38Z\xdaQ\x83\xad\x0c;7\x07F\x90\xe8ma[[\xd6\x17\x01T\xb6\x8a\xb4\xe3\xaa\x86Y\xe8\xcf\xd5\xf7z~A\x02\x9c\x9e\xd8\xa0g\xbf\x06\xa6\x90\x1f\xb9MP\x85:\x9f\x00\xf10\x0f\x80\xb0\xba\x00\xe2\xd1\x9cj.\x0el\x83\xee3]\x1b\xa9\x1d\xd5\xdczk\xe9\xfa\x9d\xa4\xa9\x90\xc8\xa5\x9e\xcbV=\x00\"-u\xe2\xf4\xa6\xa2.\xe4~\x0e\xbb\xfb\xd2\xba\xc5v\xdc}\x0b\x1d\x88\xbb'5wJ3?\xf4\x82\xe0\xba\xad\xba=\xe3\xb7\xc4~\x1e\xc1\x9aJ\xc2\xe2\x0f\x83\xae=4\xddjk\x98\xdd\xca}q(\xab&\x8d\x96\xd7\xfc3\x8fRGT\x84\x95/R\xea\xf8\xab\xca2\xcb\x8f\xce\x9a\x8c\x8al\x94\xad\xf8\xc2\xe3\xe2 u6\x1a\x96\xf9\xae\xf2\x0b\xa2n\xc5\x7fD\x84?\xd8S\xb0\xf1\xb4\x06\x0f\xd3\xb85\x0e\xd2C0\xd5g\xe0\x86<\xd1\x97\xce\x9eV\xdcB\x87]\x82\x86\xed\xfc\xee\x7fX\\\xc68v\x88\x97$\xcd\xd7\xd2m\xe0\x19\xda\x83\xbd\x01\x8f=\xb7\xc3\xff\xdd-\xc7\xaa\xdb{\xc0\xff\xe5\xb1\xea\xf6x\xac\xba\xfd\x1e\xff\x97\x7f\xbf\xcf\xbf\xdf\xe7\xb1\xed\xf6\xf9\xf7\xfb\xfb\xfc_\xde\xce>og\x9f\xb7\xf3\x80\xb7\xf3\xa0\xcf\xff\xe5\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=\xe0\xed=x\xa4\x8d\x9d\xc7|j\xdb\xc0\xa2\x11\x8b*\xbeNQ\x1ep\x13\x8f\xe3#\x1e\xae\xb2J\x10\xe5J\xd1\x94\xa0\x17\xb0\x82xH\x06\xd1z`\x8b\xd9\xb5\xf71\x9eJ\x1e\x16#\x8f\x1dR!\x8fr\xa3M\x08\x9a3\xb4\xdc\xe4r|\xe6\xe2\x9c\xf3\xccPy\xa4\x9c\x8c\xf9\xe9\xc6\xf0\x142\xb3v\x80g\xb9\xeb\x14\x99\xa52\x8c\xa2\xe3Sj\xd2\xef\xf7w\xfb\xfd\xbe\xc3r\xf7\x8a;\x91\x13/\x9c\xf3K\x11R\x8e-\xbe\xf6\x02\x7f\n\x93hJ`E'c2\xab\xe4w\xd4\x04\x9e\xb0H\x9dp\x80\xb1~0B,\x8b\xe4\xd9\x01\xdb&\xb0=b\xe5\x0e<}\n\xfd\x1e\xca\x14\x7f\x84~o\xb0\x0b\x1d\x16\xffS\x97|\xcc\xb4'C\x9eSP\xcd\x9c\xbb\xe1\x8ek\xc22CT -\xa52`D\xec]\xb5\xc7\x03\x16;\xa3\x1b{W\\\x10\x8d\num\x1dnP\xcc\xf1\x18\x8e\x84\xf0\x14\xbc\xc7\x0edl]x\x08Z2\xf6:\x9d3\x07\xe3D<a\xfa\x95r\x85\x02g\xbc\xb3\x1a\xcb\xb4\xecn\xe0\xae?9(=\xdbsl+\x8d\xfd\xa5Uw9\xaeJ\xd0:\xa0\n\xc6\x803 ;\x9f7\xe0&D\xa9\xa4\xb7\xe0\x88\xa2\xd6\x16i,T\x97H\xbax\xd6\xd8\x82\x0ed,\xc6fU\x91yB\xe6\xc7\x1fW\xb6\xf5\xff\xa7\xb5<\xfe\x9f\xf5\xcf\xaa84)\xaa\x16\x95\xfe\xa0\xd6\x9a\xb5\x90\xb7AVCh\x92\xd8\x01\x1fw\xd4\x8e?\x11\x12\xc9V6N\xcfl\xe6\x87\xf7\xdb\xaf\xff\xcb\x7f\xfa\x0f,\x82)\xff\x89e\xda6n\x0c\xe77\x85\x8d\xcf\\\x96=\xbc\xd0\x0b0\xaapE<\x06<\xeb\xef\xdd\x03\xdbg\xb9\x9e\x13\xf4\xd6\x16L/\xa5\xf6\x9e\xbc\x8d\x15\x1b\x17\x05\x00\x01\x05`\x97bj\x93\\\x06\x122\xca1\xa1\xf1\xda\xaf\x0f\\d\xb7S~\x85\xb8\n<\x16 \xd9\xb2h\x85\x81\xa1\xc2DTP\xbc\xa2\x0d\xea\x04-\x8e\xcb#\x95k[?\xa4?\x84?\xac\x7f\x98\xfd\x10\xc3\x7f\xfa\x8f\xff\xf9\x7f\xfb\xf5?\xff\xc7\xff\xf5\xb7_\x7f\xfd\xed\xd7\x7f\xff\xdb\xaf\xff\xcdo\xbf\xfe\xb7\xbf\xfd\xfa\xdf\xfd\xf6\xeb\x7f\xf8\xed\xd7\xff\xfe\xb7_\xff\x87\xdf~\xfd\x1f\x7f\xfb\xf5\x7f\xfa\xed\xd7\xff\xf9\xb7_\xff\x8f\xdf\xfe\xfd\xff\xfe\x7f\xff\xfa\xeb\x0f\xd9\xa07x\x88\xff\x7f\xf4C6#\xb3\x99\xd5f\x87\xdd\x92\x99\xdc\xd9\xc7\xf8l\x8a\x18c&\xc7\x13q8\x1f6\x1e\xcf\xe2\x96\xb8\xd1\x88\xb9\x15\x05\xb9\xdd\xfcL\xa1\xc2z:\xc2bY]\x12N1\x03\x90N\xac\xa3\x18N?\xddulK\xd4\xb3jx\x19Q\xa7 N\xeb<\xc7{*2\xe0\xcb\xedk7m\xa89\xca\xe0)\xf4\xe1@\xca\x8b\xd9?+\xec\x94\xb5\xad\xc4x^\x92\xfahe\x9er+\xca\xb3/\x89\x00\xf9\xb6\x8f\x96\xcdq\x0du\xe1[\xb6FD\xc8\xe0\x00\xb2<\xebf\x82\xe99\xa9\x98\xc0\x1ct<\xd8\x86\xe2\xbc\xf6\x98\xf1D\xf2\x0f\xc0&\x8a6M\x98\xc13\x0c&u\x98!\xea4aFN\xf2\xff\x9d/\xe1F\xd1C\xd7\x0f\xa7\xe4\xe3\x1b\x0c\xfb\xb8 6|\xdeN\x94\xa1\xd4\x9an\xc4dE\xbct\x88\xb2\x92l\xf2\xdd\xaa\xc7\xa6\xd5\xdaS\xb599Sq[\xedpq\xcaP\xc1W\x83\xdb\xa8c\xb1\xaa\xef#\x1e\xe0\xb4\x8c\xea\xcc\xab\x94\xe7\x19\x88`4\x82>\xdc\x87\x9eF\x8a\xb0\x8e\xa2,L\x0b\xe7\xac\x90\xcc\xbd\xd4_\x13U|\xe0\xc1\xf8\"x\xaa\x1ar\xf1\xc7\x8e\xe0\xe9\xd3\xa7#\xe8;\xdc\x9b\xb53B\xc3#zb2\x07\xd7\x90\xbdz\xac\xac\xd3\xef\xa7\x84\xdb\x948\x17 \xda\x9a6aQ\xb3n\x1b\x16\xb5\x9a6\xa2\x8eD\x97\xfa\xd0\xad\x00\xe2\x88o\xe7\x84r\x93\x1d\xea\xe6\xe1DM\x99/\xe2[\x10\xd6\x18\x97\xad \xac!\x15\x92(\xec\x84E\x0b%\xac\xf1g\x11\x07\x93dBW\xc5\x0b'\x8b(\xdeH2\xa9\xe5\x06\xf9b`\xd4z+\xf4\x96\xc4\xaaK\xec\xf9\xd9\xc3\xbf\xf0\xe7\x1b\x8d\xbd\xcd\xd0Y\x9b\x16\xfe\xf7\x05G\x1e\xf8\xe1\xe5\xdd\x8f\x9d\xb7\xfa\xc5G\x1f\x05\xd3\xbb\x1f\xfc\xef0\xf0\x99\xff\x91\xdc\xfd\xc8\xd3\xf4\xf7\x18z\x14\xa6\x93(\xf8\x12\xbb\x956MG/\x9a\xff\x82;\x96v\x95\xf8\xbf\x90/7 \xde\xfa\x17\x9c\x83\x9fz\x81?I6\x9aB\x9b\x19\xf8\xbf\x03\x16mLvZ\xc1\x1e\xc9\xfd\"&\xb3/\x0b\xf8d\xe9\x05\xc1F\xa3o3x\xd1\xea\x97\x06=}}\xb9\x19\xe2\xb7\x1a\xbeh\xf6\x8b\x8f?\xbb\xb8\xfb\xc1g\xbf\x07\xd5O\xb2\xd5\x17\x18\xf9\xea\x8eF\x1e\xda\xfb;\x8em-\xbdt\xb2\xb0\\\xe8\xd7\xd7\x96\xc62\xce\xebi\x15\x9dz\x88\x88GH\x02i\xddE\xa2/+\x1aP\xcf\x90\xe7_\x0b\xc7\xc4\x9c\xdaB2\x9b\xf7\xe1@\xd8\xd81\xcf\xa8!\x9a\xb7q}n\xe8\x8c\xc9\x99P\xd8\xc7\x95X\x1f\x10n\x9a\xd5\x9f\x03\x93\xeb\x14-\x17\x06\xb7\x00g\xecV\xdd.\xa0\x15D\xa3&\x88f%\x88\xc62D\xe3\x96\x10\x95\x04\x88\x18C\x95\xf9\x08T\xf6\x86\x832rX\xe8\xa5;\x03hB\xbc\xf8\xdf\xd0\xf3\xce\xa0\xb9\n\xfcT\x8b\x9c\x15\xcbI3\x98\xc4EFh\xf7wUc=\x10z\x8f\xeakv\xb9\x867eU\x8d\x885A\xe3\x14\xcb\xbb\xb8\x98X<s\xc4}\xfb\xc2\xf9\xe7\xfb\x0e\x95\x85?}\x82]\xbc\xdaHI\x92\x16\xe5\x07C\xe7\xbe\x0b\xdb}\x11\xa7\x89\xd6\x1b`=\xefB\xae\xe5aCR%\xd6X\xb7\xa8\xd3=p\xe8\x7f\xa5Jr\xb9cKeTX\xa7\xe5yq\xf7 /\xd4a\xdc\x9a;3K\xaa\xd3\xfb\xb6spp\xbfK>\x92\x89mYt\x8e\x1a\xa4is\x1d\x02\x92%\x9a\xd0\x01\xe8\x03\x01@\xd9\xd7f$\\\x8bx\x12\x9d\xdc\xceMM\x86\"\x7f\xbb\xe5\xcb\xa9\xd3\x8a\xa8x8:\xfdgkf\xc2\x9f\xb80\xc1p\xd3\x01\x0b\x8b_\xe7u\xbe`\xa1;\xfdy\x18\xc5\xe4\xc8\xc3`}\x96o\xc1\x90\x1ey\xd0\xa1e\xcb,H\xfd\xc0\x0f\xb1hY*\xcaB\x1f\xaf\xda\x0f\xc0\xcaJ\x05I\xeaO.\xaf\xe9\xfbk\xfe\xde<\x84i\xbd\xd3\xfb\xba\xbc\x9a\xb4\xb3\xdd\xc1\xa3\xddG\xfb\x0f\x06\x8f\xf6\xd0\x8e\xff\xe9\xd3\xa7u\x0d`4\xd9b\xbf\xa7\xdd\x04\x83\x9c\xbb\xb0\x80\x0eXs\x93\x85\x00\xaa\xfaX\xf0\xaa\xb8\xdc\x02\xbb\xcb\xbc\xe6\xed\xd0F\xfe`\x1fl\xfd\xf0C\xe2X.,t\xd7\xd0\xf9\x83\x0e\xec\xd7\x0c\x17y\xc0\xce-\xdb\x9e`(1\xd4*C\x07\x92q\xef,\xc7\xf0\xa70E\xad\xe1\x8aG3\xe1*\xa4\xa9+>p\x1c\x17\xb6\xd0h\xbf\xa4\xe0\xc2\xc4\x1f\xbd\xb3\xfc\xe2-v\xebY\x9f\xd2\x83S\x0f0\xd0\x00\x04\xf0\xa4\xaa\xe4\xde\x86\xc1c\x08:\x1dG^\x99B\xa3\x16\xa0\x15\xaf\x8d?FZ\xe5w\xe9\xb9q\xdc\xea\xe098\x9e\x141\x15\xf1\xf2\x9f9\x00\xad\xe8\x07\x0c\x12}\x87g\x89\x90\xc0\xc6b\xc5O\\X\xe5\xad\x8e`\xed8\x8f\x1d\xb8\xee\x06^\x92\xbe\xc4\xb6\xf1>\x83\xf7s\xef\x9e\\\xa4\xc6\xf4\x16\x0f\xdf\x8cSv%S\x84\xf5\xde\x9a\xb1\x06(\xc9\xc4,<\x9f>\x01_1\x96\x93G]>:\xe8bp\xb0\x86\x03X\xf1\xb2\x9e\x0bk\xfc\xa42\x02\xc5,\x99\xb9*X=A\x1a\x85\n\xb3\xe7H\x10\xb3[Q\xb6\xf2\x99\xa9\x92+8\x80\xf1\x19\x0c\x05\x0d\xcau\xb1\xaa\x14\xa8\xd7iK,\x82\x81\xe5\xba\x05Su+>@b\xaa\xc2\x82\xa9\x8a+LU\xa8c\xaa\xe2M\xd9\x80z\xe5|f\x87\xf6\xe0a_U3\xfb\xbchg0P\x8b\"^\xb4\xd7\x7fHIL^&\xc6\x80A\xf1\xf5\\\x1a.f\xda=?'\xc9\xabh\x9a\x05\x18G\x1e\x86\x9a\xa5\x98\x92\x99\x97\x05\xe9P\xbd\x9f\xff\xa7\xea/q\xd2\x8e\xfd.\xff\xca\x85\xa8\xf8i\xa46|L\xd5\xbe'\xd1r\x15\x85\x94\x80\xe8F\x06\x98{B\xf8.}\xe3]GYJ\x17\x8fw\xd8\xb4Y\x8a H\xa8\"_Ny\xb7_S}\x8eW\xe2\x82U@\xbcr\x0b\xc2\x03\xc7\xcb\xe1\xea\x9d*\x9aLl\xca\xf9=\xd4\xa1 \x16\xed\xf5th\xc2\x8a*\xc8\x95\xe5E;j\x91\x97\x17\xed\xabEI^\xf4@>\xda\xf0\xd5\xfe\x9e\x1e\x15'\xbf?*\xcej/\x18\xf3\x91\x91:\xc1\x9f\xd2\xde\x1c\x9b\x1dN\xe8\x88\xe3bA\xa6\x16\xd8\xa4{~\x8e\xce\xe7\xe7\xe7\xc8&\xf4\xdc\x02\x1f\x1d\x9b8\x0e?\xadX\xf5\xfcxTE\x0c\x1d\x98h[\x9e\xd4\x96\x0b)\x1fFTz;\xae\xce\xe5\x92\\\x0f\xc1\x8aI8%\xb1\xe6\xa6\x94\xe3]#3\xb0\x96\xf3c\xac\xe2he\x88?\x03\"UFwN\xd2#\xb1\x85\xcduYd\xf0dE&,!P\x14\xd74\x1c\xb3\xd0\x1fq\xdc\xa2.\xdd\x13\xc4\xb6\x8e\xa20\xf5\xfc\x90T\x1cn\xe4'buO\xa2\xab\xbaZ\x99h1\xa8\xab\xe5\xb1Z\x18\xb57\xb10\x9c\xa9\xb9\xf2\x84U~\x17\xad.\xbc\xb8\xa9\xf2\x8cU~\xe6%\x9c\xde5}\x10\xb0\x0f\xa2\x90r\xeb\x1f\xbc\xc0\x9fzi\x14?\xf3\xa6s\xd2\xf4)&t\xe8\x06\x917\xf5\xc3\xf9i\xea\xa5Y\xa2F\xb2\x97\x9f\x05z/S~\x89\xdd\x9f7\xb0\xf7\x94GZP\x04\xb1\xad%I\x12oN\x90+\xb24J\x01(6A\"P\x9d;T\xf2\xdcQ\xb6o\xf2\x94\xa4\xcf$\xf0\x92\xe4\xb5\xb7$C\xb0\x92+o>'\xf1v\xe6[\xda\xfa7.L\xe0\xc0\xd8\xcf\xc4\xc5$l\x0eO\xc6\xe6\x82\xc5\xe1c!_\xb4b|\xaa\xfe[\xcc\xed\xddv\x9c~8\x8b\x8c#\xbc\x93\x1e\xf8\xc0\xb7'\xf9\xee\xf8=\xba3t\xe2`\xf8\xb7\x99\xe7\x07d\xfa\xaf\x12\x94\x8b\xdd\xd6\xbd\xa5~\x1a\x10c\x0f\xd6\x0b\x04\"\xa4\x11\xd0a\xc1\xe1\xdb\x97\x80l\x88Oi{\xd7r\xcc\x83\xf08rKkq\x84\xae\x95_dE\xcc\xe4\x013A\x9b\x18>\xf1,\xbd\x8f\xdf\xfa\xd3t1\x04\xeb\xe1\xc3\xde\xeacM{\xacz<\xf7\xc3o\xc8,\x1d\x82\xe5ei]\xffE\xfd\x13\x7f\xbeh\xf9AJ>\xa6\x87\x81?\x0f\x87`M\xd0\xdf_\xbfDP9\xdf\xf3\xb7\xff\n\xb01&\xcb(%\x85\xc7n#NZ+\xcb\xe5\xa4v\x8a\x88\xb9\xb5B\xe5_\x92MD,\x8c\x06\xcc\x9cq\xac6\xf7\x11\x89\x1eL\x15\xb2\xa6\nA\xbes\xaa:\x0dE\xea8+\x85H\xba\xb1\x8b&sNIb\xa9\x89(m\x1bl\x8a\x8a\x90;\x15\x8f\xa5\x81\xd3\xd5\xe6Am\xd3\xa2d\xdc\xa7\xcf\xff\xd6\xdf\x91\xad\x96\xa9p\xf2\xc8\xb1\xadrGV\xb3\xf4g\xe6\xd4\xa5J\xbe\x92\x86\x14\xe06\x17o\x83\x87{\x1a\xc1J\x02\x93^\x1ely\x01\x12\xabb\x9f\xa8^\x8c\xb3\xcd0\x8ba\xf5U\xeb\xce\xc2\xabk\x8b\na\x94\\\xb3qWvmy$C\\\x1d\xa7;\xdb\x10b2\x10*\xed3\x89\x8c\x02U\xbd\x8d($\xbaas\x0e\xb6\xca\"=b\x0ey\x0f\xf7\xaa\xfew\xbd}\xa7;\x93\xfd\xe8\xdb\xb4\xd8r\x12\xaa\x01\xeb\xe7Mb\xf0\x88\xbb!>\xe2n\x86|V\x83G\x0ft\x9b\xf4\xf4zy\x11\x05m\x9an\xb2\xf34\xd8\xe1\xaa;\x98\xdby\x1a\xbc\xad\x0d\xce\xd6\x03\xb5q>\xfeG}\xa7\xfb\xf5\xf1\xf7\xe5\xb2 /S>\xe1\xa9\xe5\xd4\x1eXj\xb9G\xeaxXn\xb9=\xf55\xcf-\xa7\xbc\x9d\xe6HR~\xbf\xe6\xefU4\xbd\xe6#T=\xe4\xe6\xfc\xbd:F\x9eV\xae\x82\xed\xec\xb5\x1a\xfe\x92\xa5\x94\x1b\xe83\xcaU\xb0\xed#\x9b\xa8\x1a\xfb\xee\x94\x81E\x95\xd6\x8e\xf9\x08\xd5\xea\x87|U\xd5N\xdf\xb0\xf7j\xf5\x9f\xf0u\xc5\x0d\xf5\x12Fp\xa8\xe6\x90{ #x\xa3\xbe|\x85i\xe1\x94\x97\xefP\x1ed\x18].9\xc2\x92\xbf\x9c\xbey]~\xff\x16FpD\x8f\xf2\xa3n\x82\xaaW\x7fv]\xaeqB\x05G\xdb:_\xf8\xd3) U\x11\xfc5+M\xa3\xb7\xb1\xbf\xf4\x99\xadv\xb9\xc67\xe8\x00\xa6\xcd\xb9_\xae\xf8\x9c\x92{\xdbJp\xf4\xdb1\x99\xfbI\x1a_\xab\xcd\xfd\"\xd7\xaa\xa4\xb9|\xc1J\xa3\xd5\xb6\xa1\xc2{M\x12\xf3r\x8dg\xa6\xf8\x01\xef\xca\xf5~F\x88\xfe\x955V.\xfa\x1eF\xb0\xf53F\x0e\xffY\xca\x08\xa0\xfc\xdd\x9d\xf9\xe1\xf4h\xe1\x07\xd3\xf2\xd7\xdf\x02\x8f\xf18\xa9w\x8d\xe3G\xdf\x03\xd8\x1a\xc1\xa9\xfd\xd2\xfe\xfb\x0d7\x0f\xd33\x91\xed\xe2\xb1@\xd1\xf0K\xd9\xe4\xac^0\xe0\xda\xac\x07\xc6J7N\xd7\xd3\x16V\xd9\xf2\x1bG\xad{\xe3\xc8\xd1\x0f\x0c\x8c\x00H\xa4\xf8\xd2~\xaf\xbf\x9dE\xd7\xd5) HJ\xe0\xfd\x98\x9c\xb9t\x92\xbc=\x1e8,\xc5;\x8a\xf7\xf4\xe7Kl\xa6\x12 \xf9\x06\x86\xf0\xb2\xbcd\x1fj\xb5\x9e \xd9\xd0\xff\xc2|\x0dO\xedw\x05\"\x98\x0d\xd8 K\xa5\x9bV\"|\x96\xbb\xff\x1aF\xf0\x8c\x8e\x98o\x8b\x12\xd6v\xc5\x91]\x02b\x0dBi\x1aI+\x00h\xd5R)\n\xf3\xbb\xba\x19|\xd5\x82\xd5+5<\x12\x8b\xf4\x95\xfd\"_\xc0%\x8b\xf2\x0f#\xb8\xe2\x19\x8d\xe8;Z\xe2\xdb\xbf\xe0\x9d\xdb\x01\xc6c\xc8 \x10f\xe4\xa3\xfd\x9d\xb0\xbc\x93\xe3\x93\xb31a\xb7\xa6\xe2\xf7\x88\xe7\xa8\xc0E\x0bM\x1b\xa1hr\x08\x1f\xed\x1e&\xb6\xd0a6\x0c\x8b\x0e?}b\xd8w\xe2\xc2G\xbb\x8fyv)\x7fR\xf4K\x87\xffm\x0e\x0d\xfa\xed\xcb*_\x0bU`\xfe\xa1\xcd]\xe3R\xeb8\x91;\x93\x87\xcca\xfc\x9a'\x82#th>K}\xc2\xa21\x8a|\xdf\x11<\x05\xff\xb1\x03_\xd9)\x83R<\xf61n\x00\x19\x87\xba\x10\x96b\x05\xeb&\xf0\xe7\xd6\xdb\xe9\x9b\xd2](.|\xcaRY\x19{\xde\xc2\xda\x05\x02!j\xb0\xbc\xa3[>E\xa6\x94\x19\x04\xd8[6#\xd9\x85\x0b'\xff\xf3\x17\xf1[\x94p\xecY\xf8 ]\xbc\xf4\x0c\x0b\xd5k\xd9\xf2\x14\xff\xd2f\x8d\xfc\x19s\xdc\xbd\xd0\xe0\xb5\xa0S\xf9\x90\x08\x1f\xd2\x0b\x16bY\x8f\xa7\xc2n\xe6\xd2\xae\xb1_\x11\x80\n\xab\x8dW\xb6\xca\xa7O\xca\x8e\xe2x[\x8d$sS\x07\x8e\xbf5\xae\xb8\x1a\xee\xe2\x95}\xc1\x9c\xa0c\x1e\xc1 \xe2\x11\x0c\xba\xa5\xdc\x8fl\xf4\x94\xd9b) qe(e;\xc9\x7f%,T#\x0bDa\xc6\x9b\xb8n\xfc\xdfm<~N\xc2\xd8\xf8_a\xe0\xa1\x170\x04>\xa9\x88OJ\x84\xee(&\x95=v\xc4\x9a\xe0f\xcb\xc4\xacB\x8e\xc1\xef\xc5jElJ\xbf\x8cI\xcd>\x8c\xca\xb3*\xea=\xc3\xa5\xf5l\xfb]]\x14,\xc4P\xba\x9ddB_\x0d\x99n1\x96\xb4\x88\x0f\"\xe5(\xaeDN\x17W^+\x9d\xcfX\xaf\xe43\xd6\x93\xbc:\xdd\xca\x14\x89<r\xedq\x02<\x8bOA\x0dx\xca\xb3\x17\xec@)op\xf6\xd7\xf8\xe4L\xd0\x0b\xbb\xd8\xf2\xe2\x9c\xf8\xb6\xb0\xcb@\xa2\xaeK\x87q\xa35\xd0@\x96\xef{\xfa\xbfo\xe9\x1a\xa6\xb7\x8b\xba\x97P.Oa\x16\x1c\x17>\x94\xd3\x01\xc9\x19\xa9\xac4\xca=\x04\x9b\xf4E)K\xc4\xffOr\xd3\x87\x98\xb4\xe8/.\x15Q`\x04_a\xc4\xa1\xbd]\x07\xff:\xc6\xff\xff\x8d\xbe\xdb\xe7\xaf\xfe\x8c\x15z\x0f\xd9_\xdf\xf1\xf4\x97[\xa1\xfd\xf0!\x02\xd5\xa3\xb3\xb7t\xe2\x82\xe5\xd2\x8f\x91\xbcL\xbb\xf5\x17\xcd|\xbc\x1f\xecEIuE\xc7\x9b\xd9\x19&B\xca0\x11R\xc6T:\xcfTh3\x84\x1dJ\\\x8bl\x17\x90o\xe6\xbfRaa\xe1%/9\xfa\xbb~r\x14\x85\x13/=]\xc5\xc4\x9b\xa2\x90#\xf8/\x17\xcd\xce]n\n\xe623_\x97\x87rt\xd1x\xc8\x95\xe4(W\xac\xcb;o\xee\xca\x99\xfd\xb9\x9d\x91\xe5Z\xf4\x18H\x19\x85\xf8k\xb1E\xd2\xf4\xb1\x03\x0b\xfb\xaf\xe34-'\xbd-HP\x8a\xd9J\x16\xdd$\x8dbB\xa95o\x85\xa4E3!mfm\x93t\x1c*\xedP\x08\x9e\x96`\xc7\xf7w5\xa0Q\x14\xb7d\x15}\xfb9=\xd3:#4^<\x80\xe7tO\x0d\xd9?\xa3j\xea]\x85\xfc^\x92\xeb\x17\xcd]\xa19\xe7\xd7h\xceY\x9b\xd3\xc1\x03\xc6\x01W(\x13\x94\xc3\xed\xf8!<\xd7\xdb\xd3\xd1\x9e\x9e#\x177\x92\xe3\xbb\xd72\xf1YBNI\x9a\x92\xb8AJ\xfb^\x17I\xb2\xd2\x92\xbf\\\x05M\xf6\x05\xdf\x97\xb3\xd7\x01\x94\xf5\xba\xaen\xa1\x0d:O\xa6\x9ao\x91\xca\xaej\xe2F\x99\xf0S\x1b\x93\x96\xfd\xc1>e\x9cN\xedb\xab\xfa\xd5\xafj\x8a}\x92\x0c\xe1\x0f\xe5\ns\x92\xbe\xb9\n\xc5\xf7\xcfI2\x89\xfdUJ\xd1\xe7/u\x15_{K\xda\xd8\xdf\xea\xea\xb0m\x90\x0c\xe1\xbb\x12\x1cQ\xc1R\x06\xa6\xbd\x85\x07l\x8d\x88/\x8e\xc1wjxL!\xa6\x8d\xc3,\x08\xce0\xfe\xcd[[p\x9d\xd6\xdfo\xf8\x9b*\xec\xbd\x8a\x11\x8f\xf2 [\\\x85b:.X\x7f9}\xf3Z\xe3@\xce\xf5EM\xfb\xae\xc4\xfap\x86-=\xe3Y\xe4\x1f\xebb7P\x81\x82sd\xc5a\xef\xebSx\xf3<\xaf\x9c\x1d\xea\x9f\xb9`\x9f\xdb\x95\x94?\x9c\xc1\xffZ6\xe6\x9e\xf3j6i\xc3\x8c\x8b\xbe\xb4\xba!\x16\x1a\x08\xf9\xcc\x8au\xa6\xe3\xd2~\x89c \x03\xc0\x91\x84\x8e\x9dN\xc3\x85\xb7\xdc`\xe9\xa8\xaaz(\xa1\x95\xa4B\x18\xbfFV<\xb4\x07\xfb\x8e\xacZp\xe1u\xa9\x1eK\xc2\xf2f\x86\xd9\xe4\xde\x15\x84\x1b\xff~\xe5\xa5\x0b\x17,\xfa\x0f\xb7S\x81\xc0\xe6J\xc3\x1c\x07\xb6z\xad4\xff\xd2\x0d\xd6\x9ec[K\x92z\xba\xd0\xbb\x1a\xe5m\xa4\xd7\x9a\x8b`\xa4\x8e\xaa\xf3\xf4\xaav\xebI\xa1\xe4\xf3\x93\xe3\x8f) \x13\x9f\xca&\x9f>\xd5\x13D!\xf8\xd4R\xd7 \xa5\x9a\xa8]o\xa5\x9eK\xec\\\xddH\xd6$L\xf9p\xa20\xb1\xa9\xc0\xaf\xec\xc7rW\xf5<\x0e\xe0Q\x9c\xa2\xf7\x91I\xdaC\xb5\x9c\xbe\x90>\xfe\x10\xac7\x16t\xa0\xd3\xf1\xaa\xbc\xa4x\xae\x86j\xb0Z\xf1\xe8\xb4wu\xb0\x0b\x94\x1cR\xd5\x91}}\xfc\xbd68\xf9\xeb\xe3\xe3\xe7C\xd8\xeaWKf^\x92~M\xae[\x9c=\xa0u\xe9\xd0\xa9\xbb\xb85$s$e\x86Fr\x99u\x8a\xde\x14o\xd1\xcd\xc2\x90C\x81e\x01\xc0\xe51J\xe3y\xbd\xa44\xa0\x17\x06{\xac\xbcz\xe1\xb9b\x1d\xd7\xd4\x9d\xa9\\\x93x\xf4\x8b)x\xfcq|\xd6\xad\xe6\xce\xd7\x84p\x9b\x93\xf4[\xe2]n\x02\xf9[\x01dK\x1f\xe3\xa5\xa8M\x8c\x11\xab\xe5\xe73\xc0q\xd5\x06\x1cQ\xf8\"&\xe4\x97\xc6d\x82P4>\xa1\xc7F\xd0\xa5\xc8\x8d\xe6\x146?\xa68\x98\xe8\xef\x19rD\xed\x0c\xab[\xd3\xe4\xca\xbd\x93\x08\x19\xa4'\xc6\xfb\xa6\xe4G\xe6\x89\n\x05]\xac\xcd\xd4\x16\xb2\xc0\xba\xe5\xb5\xc2\x83\xbc\xbaB9\xf7\x90\xb9\xfc2\x94\x02\x84\xf6\x1eug,\xa1J\xef1x\x05\xf30y\xec@\x92g.\xa7\xe7\x867\x9e\xa0\x96\x04\xe5{\xe4*2=O%\x19\x89l\x06\xd0\x87\xfb\x06\x08\xb1\x08\xef~\xc2RY\xc9\x07\x90If\xb5\xb0*\x92\x9c\xd8\xbe}\xa6\xab\xca\xed'_\xe2\xbd\xea \x1a\xb1\x1b:!oV\xcf]+b\\\xbfD\x06\xaf\xfcp\x1a]Q\x88\x16\xbf\ns\x17\x95m\x86\x83\x9aB\x9b\xb5@\x05\x80\xb1\xce+\xa0\x9d\xa8\x8f\x81v\xad1\x1b)|\x8bM\x9e\xe1\x88\xf3Di\x8d\x17 \xe6\xbc7\xb9\x94\xaa!!\xcd\xf9\xe3\xc5\x10\xb9kQ\xa3\xbd\x92\xcdS8\x97\xedn\xf4\x08\xe0\xc0\xdf\x1b-\"\xfa\xbd\x07\x8emy\xc9u8y\xb9\x91\xfd\x86\xf8\x94%GA\x1dL\xab\xef\xda\xd9}<\xba[\xbb\x8f\x9d^\xaf\xc6\x08+\xf9\x0c#\xac\xaa1\x90Y\x12.\xf73\xc4q\xf51\xa7U1\x9fV0\x94\xb6\xb2J\x95}\xbd5D\xd4F\x8c\xa1T\xd6G\x12\xba\x15S\xf9\xe7\xde=4\xa3+\x07v.\x14#\x84eCe\x11\xd9\x12\x92\x82\x97@.Ml\xa9\xe1\x18\xf44\xb0\x02\xa0!h\x17\x05e1+w\xe6\xb0\xc0\x0f\xe1\xef7\xd5\xbb_m\xca\x1b\xf3\xde\xb5\xf9\"R\xd1\xe8\x05o I\x82\xcb\x0d6\xba3\xbbb\x12\x00\xd28XF2\x188\x0e\x1d\xc0\xf8\x8c\xdf\xc5(Yf\x91l\xdf\x86:\x10}f\x8a*W\xc2\xc9\x88\x0c\x0d\xa3V[(\x95Y%\x96\x0f5\x95\x1ceF\x10\xc2\x90\xe5\xc0 \xdb\xf0\x17h]\xb0\xd5wL\xfa\xf6\xc9\x82L.\x87\xd2uB\xabM\xdb\x8aN\xecT\"\xe2}.\x9d\xd8\xfdlKD\xc3!\x14s\x1bUVg\xb3\x81\xdd\x8e\xdc\x08\xc5\x1bZ*\x15\x1d\xb6\xa20M\xf6l\xbb\x06\xdb\xd3==\x97\xb8S\xb1\xf2b2\xfbN_\xb5\xf2bl\xdc\x8e\xfa:\xe1\xd5u\xe9\x89\xe9{\xb5\xf9\x19\x7f\xaf\x0e'\xe0\xcd\xab8\xba\xc2Li%+\xe2r\x85\x85T\xe1\x857I\xa3X\xb1\x85\x9a\xb2\nA\x14\xea\x1bXW\xe3@\\7\xca\xf0mn\xc4\xe7Za\x19\x8d\x87b\x12\x9aD\xfc\xa5\xb7\x1aB\xd4]z+\xbdp?\x8b\xe2co\xb2\xa0u\xf8O}\xbdI\x94\x85):\x1e\xd3\x1f\xfa:i\x84\x04\x90\xd6\xe2?\xf5\xf5\xa20\xb8\x1e\x82&\xe7Y\xb5zn\x9c=\x04\xbf[\xe3\xd3\xf66\x8bI\xa9n\xe9E\xb5~ \x03\x86\xa0\x01\x8e\xbc\xc2C\x98V+\xf8 \xfau\xe5U\xbcn\xf9\x8df\x90q\xb4\xa2\xc7j2\x04\x8d\xf7\x1c\x1b\xd2Q\xe0%\xc9\x10f\xa6r\x8e\x93C\xd0\xac\x13\xab\xf1\xca\xff\xe8\x87C\xd0\xc0\xfe\xf9\x9bWC\xc8\xaa\xef\xd7$N\xfc(\x1c\xc2\xa4Zv~\x9e\xe05\xd6\x10\xd6e\xe4\xd4S\xc8V\xa99\xea\x89\x8e\xacQ3\xf4\x12\x7f~/\x94V\xe9y\xaa\nM\xe2\x02\xb0\x81\xb2\xf5T\x0e\x96\xa5\x13M\xaf\xa2C\xae\xb6~\x1bE\x81\x9a\x8e\x14g\xd1\x9dEY\\W\x8bR\xbd\xfb?\xdc\xef\xdc\x9f\xeb\\{gFA\xc8\xb6,\xe8@\xea\x94\x82\xbd\xff\xe1\xde}K>\x8f\xaa\x0d\x06\xdas\x0d/|i\x1df\x85\x86\x7fN\xa20e\xb9\xb9H\xfe&c7\x88\xb5=\xact\x0b\x05\xd2\xb2\xa4\xd8\x93f\xb3a\x19\xefV\x91\xdb\x99l\xe7c\xc3)\x1b\x88\x9c?]7\x8e\x85\x18\x87\x86\x93\xc4\xe9\xc4$a\xde\x1fb\xc6\x97\xe4\xfamLf\xfeGi\xce\x1c(a\x05(\xf1F@\x996\x03\x85\x0d\xa7\n\x96\x0cK\xf3\xb1U+x50Md\x98j\xa8 ;\xe8(l\x13\x05\xb6\xe5\x05(\xe97\xec \x95\xb1\xd7\x14\xe3b\x84o\xd4M\x17^z\x82\x88\x99\x08d\x17\x8e\x9c\xb05b\n0\xdbW\xa8'm\x87\xbe\x9f\xa0\x9a\x08\x89\xf1a8=a\xf8\xfc5\xb9\xa6\x1dd\xd0\x01{kB\xe7\xcf,yP\xb9C\xff\xc2\xe4\xf2\xf8\xeb\x00,\x0b\x860\xb3\xf1O\x87\x8a2\xf7Qg\x1b\xa2\xe1\x10S\x05M\x9cztYK\xe8\xe2V#g\xacy\xd4\x0c\xd5\x89V\xcc\x90\xdd\x0c\xa1hf\x87b\x08U\x83\x17\xbaV\xe8\x9a\x8b\xa4`j\x13\x8c\x8c\x81\x1d\x96+\xa3\xc6\x7f\xea\x82\xe7\xb8\xb0\xe8\xc6$ ^Bl\xaf~\x0e\xd7&,\xe34\x83\x0eVj@\xfc\n\xa4\x8b\xa3)\x11\x06;u\xf6@\xa5\xad\x81\xee[\xca\xee(\xbd\xacl\x10\xba(\xdetJa\xe0\x87\xf3w\x91\x1d\x88\x89\xdej \xf9F\x96z\x95\xf7\xb2\xf4\xfa\x0e\xc7\xbcp!Q\x04\x8c*\xfb\x96\xb3^u\xa7\x98xP3J\xf1\xa9dM\xa0\xb9x\x10D#(c\x92.\xc9:\xe2\xd1\nS\x17@\x90\xe3\x91z\xdfX\xa6\x0c\xc8O~\x91\x01\xeb\"p S\x01\x9b]q\xb1U\x10\xa6\xda\x0d\xc3|\x19\xa6\xd1\xb7~\xba\xf8Z\xac\xf6\xcb0%q\xe8\x05CX+\xc7,\xe3m\x1b\xf5&B\x87G+\\s\xd7\xc3\xbaA\xe4\xfcp=\xf3/\xf4\xe4M\x00 \x02\x00z\x92Z1\x10/\xf0\xf3\x8b\xf1j\xa1\xbd\xaf\xd31\xdb\xa1M%\xaf\x86y\x0b\xc3\xc1\xae\xd0\xa0Pl\xad (\x07\x12\xac\xaa\xdf\xad\xa2\x95)\xf3\xb5\xc0=\xdc\xbd<\x12|\x15^P\xa7p \xc9\x15~_1B\xaa\xd5\xbfi\x95T\xb2\xc2\x08\x0d\x0f?}\x82\xd8\xb6\x06{h\xcb%\xd16\xdbq5\xf3\xe4w\x1cOx8\x90(\nN\xfd_\x880>V`B\x0f\xb7z\xb3\xa9\x0c\x934\x97^yZAS\xa6o-\xf6\nH\x96\xc6\x86\xebQ\x01\xda\xd2\x98\xb9\xd1kXP/\xb4\xeb\xf8\xf4 2\xfa6\x9f/3:\xce\xff\x1c\xb1\x8cp\xa1\xa0b0\xa2g\xa7\xc6\x02\xb9\xca\xe7P\xce\xa2\xc4\x83\x0fU\x80\xd0\xa7\xc2\xcf\xb7\x84\xc1m\x90\x1cd\xd8m\x82\xe8\xa0Cv\x11\xa8P\x07\x0e\xd0\xe2<\xe8\xf0\xbeb\x92\x05zp\xa6\x8b\x98T\x00\xda\xe6\xc0\x80\xcf\x84V|'\xd0\x8a\x19\xb4tG\x8cx\xda\x03\xac\xe2\xa5\x01z\x98U\xe5\xc0*\xc8\x0c:o\xf8L\xa8\xf9w\x025?\x87\x1a\xe3&\xaa\xb6\x03\xb0)\xe0*\x86O\xd5\x16\x0c\xe7\xdag\xc4\x0fk>\xd7\xfa<Aj\x7f\xbf\x12\xb9\x8b\xab@+\x99\xfc2\xe9D\xa4\xe5\x95h`\x1e\xab\x80\xa9U\xad\xaej#\x85 \xd5\x86\x96!\xb8\x97Y\x11\x8d\xf1\xbd4\xd7\xb6\xa9t\xdf\xc3\x84G\x0c\xc6G\x92\x89\xb7\"v\xca\xc4\xa4!\x90\xfc2\xd8\xde\xd9W\xf5\xd8p;\x17\xfd\x9c\x1f\x84\x03\x0c\x17\x98O$\xb5\xd9\x92\xcf\\\x08L,\xd2\xcaE\xe5,\x9f\x05\xa9b'Z\xe6e!3\xfe\x9cZx\x9d\x85\x91\x17\xad\x0b\xba\xa7\xbcP\xbc\x12\xf6~<>\x05\x1f\x15?f${\x1f^\xd7\n\xb3\xe5\x05\x89\xe57\x05Ty\x17\xa4\xfb\x87?\xf0\x91\xd1wE\xfe\xf4\x99\xcd8V\xcb\xca\x93\x87y\xd0\x81 \x9dp\x0f\xc5`\xc7\x05\x8d\xc5\n\x9dqM8\xd65\x8a\x9bR\x93CLd\x93\xe8\xa1R\x96\xd0\x89\xc6\x1f\x01d+\x8bkfOq\x0dO\xf2$<\x8f\xe1\xba\xd3q`\n\x9d\x11\xa4\xf6\x8a\x9e\xc9\xe3\xeb3\x17\xd68\x97\x95\x0b\xd7\x0e_\xbd\xea\x0808\xa6\x99C\x98\xb3,\xa5\x06rC\x87?o\"bK\x17\xdd\xc0\xe7\x9c\xbb\xab\xa1\\\xd8\x1c\xbb\xe8\xec\x920\x8d}\x92\xe8\x81!\x9e\x1c(\x17\x0c([\xf6\x12Fp\x8e\xa9\xe9m\xc7\xe9N\xa3\x90<.\x01f\xc9\x0c,%\xd8\\t:f\xe8\x88\x87B\xa9y$\xc6\x01\x98\x01$\x1e:\x89\xabb|\xe6\x91\x88\x07\x0d:lifWhZ\xbbF\x03fN.\xae\xc6\xbd3\x87\"\x9e\x98kO\xcc\xb4\x1e\xac\x06[B\x86+\xb8\x91K[\xac \x01>\x1a\x92\x91\xc9\xcfi\x11+\xba\x0eCb\xdb\xda\xe9[naG\xc2n\xdd\xce\xd8HN\xe1@\xec~\xb8\xf2\xd3\x05\\\x92\xeb\x04\xfenAG\xdcg\xd3\x176qx\x9a[\x17P\xd9d\xddX0\x84S\x17>\xb65?3J\"\xd3R\xc1\x0d\xa5\xb8\x96\xa5\xf2\x1a\xadn\x1b\xeb\x8f@\xad\x8d3\xf7\xe1\xbaw\x8f\xff\xca\x1d\x8b\xabg\xa5\xf5/\xff\x92\x07\n\xd1\x9f\xd3f9)\x97\xf2\x80\xc5\xcdEg\xc3\x18\xcd\x9b\xd3\xb1\xafZ\x80\x1b-\xb2\x89\xc6\xdc\xfa\x0e S\x1e+\xdb\x08me|=\x1a[#k\x08\xd6\xa8g\xc0`k\x88\xc5\x83j\xb8\xa7\x1b\xa3\xc6\xc0\xfa\x03\xc5\xc9\xcaE\xc0\xfd\xf1hxv\x7f\xde$\x9aK\x0d\x91qzV\xed\xb7^\xa6\x0c\xef\x06(=\x9c\xb6 (\xa3\x01-\x1en\x02\x14\x06\x0e\xdb\xea\xb2\xcd\x9c\x8e{\xe8\xe8Ma\xc5\xfe\xee\x9f\xa1\x8dD\x92]0.\xc0\x1e\xd0#Z~\xd1w\x1c \x9a\xf6\xa8\xf7i4p\xee\x1e\xa0\x05\xbe\xea\xf7\xce\xdd\xdc\x80\x0d\x9c\xba\x9bn_\xaf\x07\x18R\x12Y\xb1\xe4\xc7\xa2\x8b\x8b\x98\x95^\\h\x83~z\xd3iL\x92\x84\xd5a\xbf\xb5\xd5b\xc2{\x89\x89\xbe\xa38\xf5'\x01\xe1u\xf0\xb7\xb6Z\xe2Oy%\xfaK[%\x9b\xfa\x11\xabB\x7f\xe9\xaa\\`\xf1\x85\xb6\xc8KX\xfb\xf4\x87\xb6\xc2\xd4g\xe5S__\x1c\xf1b}\xcf\xfe\x9c\x15\xfbsmq\x10M.\x7f\xce\xa2\x94\x8f!\xffS[9\x9a^\xb3j\xd1\xb4\x12P\x05+\xb0\xa5\xd3/\xdcE\x96\xa6Q\xc8*\xe0O]\xa5\x89\x17\xae=\xb6\xb8\xec\xa7\xbe\xd2*\xf5yS\xfc\xb7\xb6\x9a\xcfgE\x7fh+D|i\xe9\x0f}\x85\x80\x97kc\xc6N\xa2`\x1eG\xd9J\xd4\xc1?t\x15\xa7^\xca\x90\x91\xfe0U\x08\xfc$\xcd+\xd1?\xb4\x15\xa7\xac\xcaT[H\xd8p\xa7D;\xdc)I=?Hx\x15\xfc\xad\xad6c\x90\x9d\xce\xb4P\x9d\xfa^\x101\x9cb?\xf5\x95\xd6\xbc\xc6Z[\xcc\xc7\xa9\x1f&\x87\x82v\xfed\x89\x85d\xa9/\xbc S^~A\xb4 \x9a\xf9$\x98\xa2\xe9`l[\xe2\x0f}\xc5\xb9\x8cf\xc5\x9f\x86\xcaYLD\xc5,\xd6\"\xd3,\x8a\xd0+\x93V\xc2\x9f\xfaJ\xf1\x92W\x89\xb5s\\\xf4\xb1x\xd1\xd7\x16\x0eX\xe1@[\xb8\xc3\nw\xb4\x85\xbb\xacpW[\xb8\xc7\n\xf7\xb4\x85\xfb\xacp_[\x88V\x1f\xb4\x98x\xda\xf5\xa0\xef9P\xd8Om\xa5b\x97-\x8c{l\xc1[\xd1\xb7\x90.\x19\xca\xd1\x1f\xba\n\x8c\xc4j \xac?\x8b1\\&-\xc7\x9f\xdaJK\xb6%\xfc\xa5v?\xf8\xe1*c8\x87\xbf\xf4U\x12^A\xbb+//\x18 //\xb4p\xbc$\xd7s\xc2P\x95\xfd\xd4U\n\xbc\x0bN!\xf0\x97\xb6\n\x99\x93\x90\xf5\xc4~j+1h\x05Zp\x05~x\xc9\x8b\xc3K]\x85\xa5\xe7\xb3\x81\xd2\x1f\xfa\n+^\xae]\xe8\xa5\x17_\xf2\xf2X\xdf\x01 3V\x81\x84\x99\xa9\x82\x9frR\"\xfe\xd0W\xe4t[\xe7w\xc8+p\xec\xc5_\xba*\xa1\xc7Ha\xe8iIa\x181\xbfaV\x87\xff\xa1\xab\xc8\x04F\xac\xc6\xc5Z]%\xb6\xbc\xfa\xe3*Z\xa5\xc5F\x12\x7f\x18*\n\xba\x17\x19i^\x94\xa5\x02\xa7\xd9O]%\xd6\x97\xb6\x93\x95\x17{l\x05\xf0\x97\xb6\x8a?I\x05]\xe5\xbf\xb5\xd5D\x15Sq4\xcf9F\xf1\x87\xae\xe2\xcfX\xe3g]Q\xcc&\x12kg\x123(\xc4Z\x08\xc4\xd9\x05\xe3\x99\xe8\x0f]\x056.\xed\x80\x12o\xc9\xfa\xa5?\xb4\x15\n\xd41#NB&\xf9r\xf2\xdf\xfaj\x81\xc0/\xf6S[i\xe9\x05\x0c\xc5X\nN]\x15L\xa3\xc4\xea\xe0Om\xa5\x95\xc7\x07\xb4\xf2\xf4\xa3I\xe3(d$\x95\xfd\xd4W\xba\xe6\x0c<\xfe\xd2V\xc9\x18\xeb\x9ddZ\xe6;\xc9\x96K/\xbe\xe6U\xf0\xb7\xbe\x1a_\x07\xfd~IY\x1c\x95\xd8\xb6R\xe6\xdb\xa2\xa9\x92\xf3\xce\xa9\x89yN\x19\xd9M\xb5$7%\x1f\xd3\\\xa4\x11\x7fh+R\xde\x82\xd5\xa2\xbf\xb4U\x16\xac\\\x9br=\xcd\x8f\xec\xd4tf\xa7>?\x0e\xe9\x0f}\x85T\xc0\x03#L\xeb\xaa0\xaa\x99jIf\x1a{\x93K^\xeeM\xb44\x9e\x11x-u\xcf\x18\x82fZ\xec\\{\xac\xe3\xb5\xa7\xedy\xedO \x13\xa7\xf0\x97\xae\xca\x15\x17r\xae\xf4R\xce\xc4\x8f\x85T\xc9~j+\x05\xfe\xea\xad\xc7\xd7A\xfc\xa1\xab8%3\xc1\xaf\xcf\xb4$\x82\x04\x81\xbf\xe2\x02$\xff\xad\xab\xc6v\x92\x9e5Yzs\xce\xdd,1\x93C\xb5J\xe0\x87\xac\x06\xfda\xaa\xe0\xc5_\xc5\xde\xd4G3f^\xb5x\xa5\xfbh\xe9%\xe2\x1cO\xb4k\xbc\x12\x10Z\x19\xa0\xb3\xf2\xd2\x94\xc4\xa1\xa8C\x7fk\xabE\xc1\xf5\x9c\x13@\xfe\xdbT-\x9f\xa9\xf8CW\x91\xce\xc9\x0bJ\xb3-\xbf\xd2~$\x88kl\"\xadi\xc4\x89L\x1a\xe9\x89\xfd\x9a\xd3\xc3\xb5v\x1d)Q\xc8\xa9\x83\xb6BNtSFuK5\x0c:\"v {\x07:\xa2:\xbbvn3\xdd7\xb9\x07\xfb\xc2\x9e\xecs\xc7\xd1\xdf\xdb\xd8\x01Yx\xe4\xd0\xfe\xe4`\x8cw\xa0\x03\xd6\xd8\x83s\x8f<\xf5\xf6\x97[\x8f\xebcYT\xdckx\xa8\xe7}5V\xb0\xf0\x8b1\xf9\x18\xd7\xda\xa2\x08[\x92\xcfQ\xe9\x03\xb7\x08\xd6\xab\xf5E/3Z\xe3\xc9\x13/\x8c\xc2\xebe\x94%O\x9fj\xb4\xb7\x81Q\xe5\xeb1s\xb9\xb5m\xe1/\xddN\x00\xd4eQ^ym\xe7\xf7\xba\x86zt\xbaX/\x9f\xb7\xa1\"\xbb\xe0\xc5\xaa\xfc\xae\xd7PQ0\xf2\xeb:F\x1e\xf2\xc08X\x91\xdf'\x9b*\xf2 ck\x11\xcf\xd8T\xd1\x0b\xaf\x870\xb5c\xd9\xf6\xef5^`\x9bA\xf9f\xd6\xa4\x82\x17\x8f\xb8\\*\xe2\x99\x14\xe6\xce.DM\xf7\x8b\xca\x15\xccVal\xe0\xc8\xf6\x1d\x0b\xdb\x12n\xdf\xf0\xa3\x05\x1d\x88\xa0\x03\xd6\x8f\x10\xcd\x8a\x94s\xac f\x05\x0b/\x01?\\S\xea\x93{\xcf@\x18\xa5\x98\xc0\x82\x8a\xdd\xfe\x94\x88\xa9vM\xe9C\xc5C\x11\x14\x13I\x8dCC\xb2W\xf1`D\x89\xf2\xa5yV\x1b\xb0B<\xb4\x0b4\xad\xacD\x17\xd0=e\xc8\xbc\xe4\xf3\xa4\xd3\xf71\x16\x99\x02\"\x0c \x8d\xef\x12\xf6.\xc9V\xab\xc0gi>$\xa8\xb9@>\xae\xc8$%S\xf0B\x06\x9d\xaeu\x9b\xebX\xf1\xe4w\xe0<\xd0\xc2\x04\x9e@\x96\x1b\x06L:\x9d\xb6\xa0\x99aj\xc9\x0c\x93\xe2r\xcc\xa2#\x1e\xd3\xb1O\xe8\xaf3\xcb\x05\xaf\x05\xe4\xe8\x02\xcddCJ\xf4T.\x8c.>c\xb2:sx\xf5\xb91\xdc\xe2\xea\xb7\"\x11\x1eb\xf9\xde\xfa\x82;qC$O7@l\xef\xcb#\xb6\xd7\x1a\xb1!\xf1\xc3y@\xe0\x84x\x93\x94s&\x9f\x87\xe5\x9f\xb3\xf0\xa6\xack\x02C\x7fWB\xbce\xd3\xc5/\x99\x19\xb7^c\xe6P\x14zK\x16)K?+\xf5\xf1\x1a\x8d\x9eM\x0f\xc3\xc1\xae\x14\n\x16\xe3\x0d\x97\xde\xe0h\x8a\xad\xdd\x8c}\xe2\x11vp\x95\xc6Z\xb5pc\x1b\xa2W\xab\xcf\x97Gv\xb1\x92\xf4s\xac\x91a\x8d\x7f\x1c\xba\x1b\xb8(\xbc\x92\xbb%\x91\xabu\xb0R\x1fD\x9bk;\x1d\x933Ge0\xe4\x05\x88\x8b\x05\xf0\x0d\xc0\x0e\xab\x94\x05I\xca\xebhJ\x1a9\x8a\xcf\x81\xa1\x89d0\xbe\xf2w%\x18\xff0\xceM\xcc\xb5\x11\xd0\xf2\xa9\xd6L\x93\xdaq`%+\xb3\xad\xd1\x08\x92:T\xbaC\x8e\x8c\xf5\xd98g\x89\xeb\xf2C\xc8\xea\xf7:\xf0 e\xdd\x85\x97H\xd1\x95\xecI+\xd2\x0f\xf5\x0cZ\x17\x19\xb4v\xac\x19|.{\x06\xff\x00\xd2\x15\x85\x1b\x1c\xd1\x1a\xe9@\x8aTW\x11\xd0jL\x0d?o\xeb\x16Q\xd1\xc4\xce`\x810\x1f\x83\x07O \xcd\x19tO\xf6\x866=tR+\xba\xf2\xe9\xd8\x93\x89j\xed\x04@\x12y\xfer\xfa\xe6u\x91?H\x9bYB~6\xdcih\xb2*\x1f~-\xb6Z\x14\xe2\x89\x99o\xcf\xba\xf3\xf2\x16\xe8B)\xda\xef\x8e2R\xe8i\x16\xad\xbb\xb4\xd2\xa4Y\x14\x13\xba\xa0T\x9b\xa9_~\x8c'C\x98\x0f<\xb2\xb7\xfa.\xe4\xab'\xe2\xf4\x96\xd6&\x87U\x17\x8eU\xb1\x14\x8f\x8f\x05\x99\\\xe6`L\\\xb8\xc8R\x88\xc9\x84\xf8k2\x85?&\xe0\xa5\xe0\x87S\xf2\x11\xfe\x98t-\x17\xce1\x99\x0bA\xe7m\x05l\xe6\xd5\xfd]\xb6`\xef1d\xa5\xe5\xc8\x9a\x97\x03\xa4\x1d\x94\x8e\xb3\x86%\x01(\xfb\xd5&\xe5\xd1R\x02\xed\xb4\xa2\x8e\xd0\x9a\xc6\xb6\xd9\x9f\x86\xadxw\xfb-Y\xb4\xb0&\x15\xcfg.\xe9\x7f=\xac\xc6\x8f\xac\xc7\x1f7\xe44Z p9\xb30\x9e\xb4\xc4\xd9Y\x9bf\x817\x1d`\xac\x84;\xe1C\x82\x1c\xd4\xf5\xdb\x01\x1a\xb7D\xbb\x0dswL \xf9\xe8M\xd2\xdf\x11\xeb\x93\xd6X?A\xacO6\xc5\xfa\xc9g`\xfd\xe4\xce\xb1^\xa0p\x86q\xed\x18\xff\xd4\xc4\xb5\xe4;%\xa0;\xa5\x15J\xd3\xda+\xdc)A\xcb\x9d\xb2\xb5\xda\x0cN\x97\x84\xcbdA=9\xfe!|\xe6M\xf3+\x0cZ\xa0\xf0l\x0c\x06,\xc6\x80\x05\xdcs\xe5\x87\x10/\xff\xd0\xd1E\xfb\x95\xec\xf7\x92:\xa5\xef[l\xd35\xf7s[\xd9\x89\x0bAu\xb7\x07\xedv;\x85\xdb4\x07\xdb\xf4\x1f\xb4\x8f+oo$\xafM\xa8\x06B\xd2\xe1\x8f\xd0Z\xe5\x891x\xf2\x02\xf8\xf4 \xfap\x1f\x0b\xf0\x07\x81!f\x00c^2\x84\xfeR\x03@\xe8\xfb^\x18\x02\x13,\xfc\xa4\xbb$I\xe2\xcd\x89\x14\xf8(I\xbd\xc9%\xbaW\xb5j|j\xc8\xff \xcaC\x9b\x11\xa5\xc8\x85\xcc\x85\x04)\xbc\xd6\xe5\x93>6=\x883\xa6\x89D\xa23\xc1\xa4V.\xb0X\xa5\x9e\xc3S.`b&dE\x8f\xbc \xf0\xc3y\x11j\x0dp\xe7xi\x14'0\xf5c2I\x83k\x91\xe4\x85n\x94(\xa6D\xe3\xe2\x1a\xd2\x05\x81\x1fWq\xb4\xda\xa6D'\xf9\x11V\xde\xe4\xd2\x9b\x93.\xbcO\x08\xfc\x987\xd8E\x865\xff\xd3v~\xa4\xfbl\xe2\x05\x01mb\xd9\x85\x13\xe2Ma\x19\xc5\x84r\xae\x8b4]\x0d\xef\xdf\x9f]t\x97\xe4~\x96\x90m\xfcz\xbb\xe8\xc7\xb8I$<\xc48\xd0\xe3\xe8\x0c\x0e\xd0\xd93\xf7W\x15\xef\x18\x91x\xb7 \x85\xacS\"\x9a~\x82\x86\x97\x94\xf1N &?g~\x8cZEY\x9eb|\xb7\x9f&\\\xd4\xf2\x13\xf8\x91vD\xe9(\x0c\xbf\\\x1f\xb9\xbf\xae\xe8\x88Nn\x08\xa9]\xc2\x91&Op\x90\xaf\xe6\xbb\x17~8\xb5\x19\x19\xda\xeak\xc0\x9b\x8b]~r\"F\xaa~\xd7\xabF\x981`\xfc\xba6\xa4\xa3\xe9@v!3a\xbd\xb8k1_\xe1\xf0\xb6\xe7\xb6\xe7p\xe2p\xd0\xee\xa8(\x1d\xa9K\xfay\xdbS\x95\xbeM\x05[\xcf\xd7\xa9\xba(\xaa\x17\x93\x1eb\xd7\xb6\x96\xf2%W>\x8b\x92\x9b{\xef\xe9\xe13\xf1\x12\x92;e\x0fk\xaa\xf0\x9b\xf7\xba*\x85\xbb\xb8\xbe\x16\x14\xd06\xa5 `\x0d S\x84\xe6f\x0c\x9e\xb7\xac\x19\xce.\x99[\xd1\xbas\x8b\xb6I\x97\xacI|m_7x@\x97=\xdeS\xb9\x89\xbaD\x0bk5Bc\xa3\xa8\xb0.9r\x86\xcc\x913\xe4\x8e\x9c\x93\xa6\xdb\x95\x8d\x1c;\xd5\xe7\xa6\xd1\x0f|+n\x953\x82\xce\xc1\x17)O[9\x98\xc7\x8a\x83y\x1b%\xc2c\xd8\xb2}LhPv\xec\xae\xfd\x12\x8a\xbb\x10\x9fyuK\x0b\xd97\x83f\x03gs\xdd\x98Zr\xbd\x18Z\xa8\xad\xb39*\xaf1\xf1\xc5\xb5\x9d\x8d\xfbg\xad&\x02mt;&\x8c\x16\xe1\xa5\x1b\xbf\xaf\xf6\x7f\xd3\x8a\xcc\xcd\xeb\xbd^\xc5=\x8b\xf1|R\xf5\x85p\x00\xdc.\n9?I\xbd~B\xe6\xc7\x1fW\x85k\xba\x05-\xa3\x13\xf1\x9e\xa4\xfc7\x9c\xd3\x14I\xa1\x18\x95\x18[\xff\xf2/R*B\x0b7p\x835\x19\x91\x07\xc8^W\xe1\xc8\"q\xd1\x81\x8b\x11T2W\x1a\x80\xbb4\xc7\x14\x93\x12\xcb\xe1\\rjW\\i1\xb7\xe8*\xe4\xc5\xda\xcc\xb5\xfa\xebJ\\\x82\xfa\xa8O2\x00\x9e{\xa9\x94\xb1g\xea\xa5\xc4\x90\xb4\xa7\xf2%[\xdb\xe2\xdb\x98\xcc\xc9\xc7\x95\xc6\xeb\xd9\x84F\xed\xe0y^\x8f\xac\xfaT\xd1\xe2\xc4n8\xaa\x19\xd2\xd6\x1d\xc3\x8d\xc7\x9e\x98\xbd\x17\"gS{\x86\xd6\x1f\xc5\xac\x0e\xae@]\x05\x0e\xe6\x16#\xaa\x1bP[\x1a\xd3\x14\x89\xae\xfc\x17\xffH\x8a\x88 #v\xc5&g/\x08\x14I\x05F\x94\x95\x0e\xba\xf2\x8b\xc0\x055\xe8\xe7\xad\xccb\xebb\x01\xe5W\xfaw\xd4\xbe\xd5\xdf\xeb\xeewy0\x84[\xb5\xb6.\xc2\xec\xef=tLa\xc5\xfdV\xf6\xcf<U\xdd\x9e\x1a\x05Z\xc4\xbd\x7fd0\xd8\xcdl\xa1\x99\xbb\x8by\x98\xc2\xf4\xef\xf7\xb5\xd6\xc8\x15#e\xcc\xf0\xb3\xf4?\xfaa\xd2rU\xd5\x1d/\x84\x96\xb1F}XM\xed \x1e\xd6\xe5\x10\xac\xe7\xc7/^\xbe>>\x7fu\xf8\xfa{C\xbc\x87$\xf5R\x7f\xd2\xae\xee\xaa\x08\xb4\xde\xa26\x8f\xf2\xba\xc1\x07\x0b?\x98\x1em\xfa\xd5\x9c\xa4\xcf\x199\xa0;P\xf9\xe6\xfc\xd5\xf1\xc9W\xc7\xcf\xcd\x9f\xbe\x0c\xfd\xd4\xf7\x82\xd3\x14S=l\xf4\xe9\x914\xdcM>\x8dI\x88\xfe\xbd\xe2\x8b7\xaf\x8f\x8e\x8d \xe4[\xe8[?\x08^\xb1p\xaa-@\x92\x7f\xf6\xdc\x9f\xde\xe2+\xda\xd9 \xbb)\xd4\x80\xd4\x84G\x8b(\xa3\xe0\xe0m\xbc_MK\x10m;I\xf5\xbb6\xe3}\xeeOo\xf3\x19v\x17.[\xc3\xe7\xfd\xeb\xd3\xc3\x17\xc7\xe7\xb7\\\x13\xdd\xd7\x1b\x03Y\xd7\xc8\x06S\xcf\xb0\xaa\x94\xcf\xc1z\xf3\xe1\xf8\xe4\xe4\xe5\xf3\xe3\xf3g\x87\xa7\xc7\x1a\xe6\xa7\xda\xce\xc4Htp#\xc6\xfe\x9aLq7\xbd\x88\xa3e\xcd\x8el\xd3\xd7\xcc\xd8\xd7\xd4OV\x81\x87I\xceZ\xb2\xe4\x80\x84W\xfa\x0eT\xbd\xaex\x0c\xd7F\x82\xa6\xb6\xee\x8d\xb2\x9c\x9a\xd8\x9e\xf2\x93\xdf{\x84\xec\x9e;,\x85\x86\x0b;\x1d\x87k\xb4\xc7\xe1\xd9Fw\\\x1aR\xdaz\xdci\xb7\xf25f\x1b\xfc\xfb\x8d\xab+\xd3\x060\x85\x9a\xa1\xddzT\x86\x01}\xc6X*g\xc7\x06\xc3Q\xbe\xc5\x00G\xea\xbb\x11L\xed\xca[ly\xa8\xad\xbd\x11BJ\xa7\xf1\x06\xc3^Il\xaa\x00a\xfenS\xf8\xe5\xccC\xeb\x01l\xb5\xaf\n\xed\xf6\x10\x94\xf7\x91\x1f6\xb7*\x1e\xc1\xe85\x1b\xf5\x8b\x07\xc7\xa3\xda\x02\x86\xadm\x01A\xe8\xbd(\xbb\x88W\x9d\xed\xba\xa5Odo\xf9.\xfc \xadhy6\x9b\xef\xa3\x0c<\xbc\x10I\xc9r\x95\xfa\xe1\x1c\xd2\x88gi\x07\x0fb\x92\x90xM\xa6\x88)t\xa4.\xfc\xf8\xc7\xe4G\x17\xd2\x85\x97\xf2\x03;\xfc\xe1O)\\\x10\x88B\xbc\xa9\xb1\xf8\x8aZpI\xae\xbb\xf0\x9c5\xe5cn:/,,\xa6E\x8b\xf8\x86x\xd3\xc7\xb4\xce\x95\x1f\x04\x90\xa4\xf4\xff\x17\x04\xbc\xc9\x84$,94o\\\xb6\x17\xff\x93>t\xbe\xe9\x11z/\x04\x9a!\xee\xb5\xeeA\xf5\xd7&\xab\x03\x12\xcf=\xa9.4\x1c\xc0d\x1c\x9eqE}\xfbq@!^F\xb6\xee8D\xbd\x87\xe7\x82\xd5z}\xe9RR\xc8^GY,\x19\x0b\xe3\x0dY\xba\xf0B\x88\xc2 \xe9\xc2\xbb\x85\x9fP\xc8\xcf\x02\x7f\x92\xc2\xd2\xbb\xa6k3\xcd\x08m\xc9c\x87Z\xd7ba\x99\xd7\x91?\xb5Q\x8f\x8ct\x0bo\xad\xe3\x86\x80\x93\xf2S\x7f\x01,?\xbc\x13}\x1ch\xf5in\xd6\\\xe3\x86Q\x99Mh\x9a\x97\xa5\xd1\x85\x1fN\xcb&\xf7\x1b\xdcA\xeb\xd3\xfd\x80d$\x98\xa8\x88E(b%cbF\xacs\xcd'\xf7\xeeQd*\xb3p,tm \x8f0?\xc3\xcc\x9b\x10\x13BEk\x12\xc7\xfe\x94\xa3\xd4,\x8e\x96\x1c\xa9\xe8\xd7\x90\xac\xc8\xc4\x9f\xf9\x13\xb40\xef\xc2q\x98d\x0c\xc3RVkI\xd2E4\x85\x10\x93\xd1N#\xbc\x01\xa6-\x06\xde\x8a\x85\xf2\xc4\x91\xf0jhjH\x1c\x97\xdd\\\x94\xb7\x82\x08\xbb\xfb\xe9\x93\x96a\xbc\xcd\xcc\xbe\xc8V!\xedn\xe3\x90q3\xa7\xf00\x11\xa5\xc8`\x1cZ%\x0d\x7f\xaaL7K(\xd9/&\xc8\x160\x8a\x8bAQ2\xceg\x02/\x19\xe9v\xe1\xa7,I\xf9\xb71\x99g\x81\x17\x17\xb6\xf4.=w\x08\xda\x86n\xde\xff\xc6\xbd\xe9 \xea:\xcf\xd7T\xa8\xe1\x8c;\xde\xc7\xfb\xa4\xf3\xf3\x98\x0e\xf60K\xa3g~8}\xeb\xf9\xb1&\x863\xc8\xac\x83G\x8f\x96P\xddf\x19\xcb\x14\xdee\xdc?.)\xff\xedh\xa3\xd0\x8b\x07\xd7Xm\x8c\x19Vxx\x8d\xd5x*\xad\xb9ch8\xf6Z\x98\x8e\xadp\xda\x95\xfe\x9a/\x02\x03{\xc5\x12\x01\xcd\xaa_;0\x1b{gt\xd2\x93\x86\x96jbQ\xcb\x0f\x9d\xd3BG\x00\x9bF\nu\x86\xd3h\xbd\x82\x01\xc4W\xe8\xe6\xd6g\xa4\xa2+(y\xbb\x13\x0c-\xf5\x9b\x16E~\xd6<\xa4w2\xf6Zr\x8f\x80\xfb\x1b\x03\x9b\x9b\x99\x80k\x95\x00\xf2\xd7\xea\x0e|\x1f\xe6V\x04\x94D\xc3*\n\xfc\xc95\xfc1A\x94\xbe$\xf8\xf3jAB\xb6\x03\xe7\x14\xbd\x8b\xadI?Ab|\xcdV\xbff8\x07\x10\x8f=\xc6\x13\xd0\x1f\x14\x19`\xa8\x1b!\x8b*\xcc\xea\xae\xf3\xba\xed\xa0\xcfCT\xf3\xaf'\xcd\xf0d\x11\xadY*\x16\x8f\xf6\xe3\xe6\x1f\xd7~[\xc3+T\x8f\xf8V\x84~a<\xef\xcbbIds\x8b\xb2\x9a\xfc\x01\x9a\xf7\xc4\x05kI\xe29\x11\x89\x97^G\xcf\xb3U@\x0fd\xf25\xb9Nlg\x08G^H\x8f]\xac\x06a\x14n\xb3f\x12$\xe0\xc4\x01\x8d\xc8\xc2r\xa7\x95.\xf5\x90\xe1k\xec\xeb]\xcc-ZXo\xe9U\xc4\xe9w\xc2\x8e{\xca\xe9'\xde\x92P\x14\x1c\xe2\xd1\xdb\xead}LA\xb4\xc2\xa8\xb3\xf4L`Vr\xa2\xea\xc4\xcb\x12nNv\x15\xa9j[\xdb\xa1G\x9c\"L\xdb\x8e\xe088\xdfMw@i\x9c\xf4p\\\xd0\xb7\x97\xe4:\x11,0gL\x0d.\xaa\xc2\x86\xb0\x15ZL\x9bL\x11e\xf6\xd2x\xee\xa1OI\xd7[\xad\x82k\xccE\xe2\xe6\xde \x89\xc1\xd1\x91>(\xd4\x1a\xbe2\xdf\x8f\n\x9b\xb8\xc2\x11%n\xae\\\x18{\x84\xe6\xd3\x1bC\x1ek\xe2G\x83t\xebf\xfbl \xf0\x87>\xd9I\xbb\xfd\xb8\xfel\xc0\x1b\x01n\x04\xea-\x87z\xdd(*\x10f=\xa7\xbb%\x16`WzR[\xd1\xe77\x06\xfd5A#h@X\xb4\x9e\x9f\xfb ~\x84F~\x9a$\xeb\xa0'\xa9U\xa4]6\x0f\xb0\xa4\xaa\xbf\xf5\x18\xf5\x06/\xad\xc6xn\x1c#\x8fY\xce/\x90Z+\xb7p|L\x1f\x1fwI\xf8sF2r\"5\xc51lc\xe95\x9fpK8 c\x9c-\x15`\xb7\x87\xd5\x859\xd90HV\xa2\xf6\x85|\xab.\xf3\xf6p\xae!m\x05d\xeb\xc8%Q\xaeT\xe3\x1a{P(\xd0\xa4*,\x88|p\x94\xf9o\xecY<%/\xc2T\xdb\xaekP\xf5Cg\x04\x83\xa6\xf6A\xd1Y6\x8b\x05\xc0%\"2\x0e\xa1\x03\xfd\x16|*&\x84\x181\xca\xe4\xdf6\x10\xc2\x0d\xa2\xaf\xc8\xb3\xb7\xe2\xda\xedj\x96c\x91\xd07&3\x0cj\xe6\x96\xf6\x850R\x0f\x0b\x93\xf9T\xe4\x172ODh\xef\xf0\x13\x85U\x80\x03\xedk\xdbiT\xe8E\xb6\x865\xf3\xd0\xb0\xaelO\x86\xcc\xf4\x1f5]\x0caI%_\x8e\xfe\xb9\xbf:\xe5]h\xd7\x16=\\\xe4\xeb)*\x050~\x9fR\xc1\xc4\x97.\xee,G\x81\x88\xa7\xdf\xad\x0d\x12o\x8c\xca\xf2\x92\xb5KH\xae\xe0\xc2\x95_\x96\x82\x88`\x8ef\xb9P\x87\xe2<\xd5\xa0'\x12\xdf\xdb+\xd9\x02\x9c8\x8e\x0b+\x9b\xb80\x17?R\xf1c\x89'\xacz-\x82\xbe\x08\xdd\xa9rS\xa2V\xb3\x1d\xd4U\xc8\x83c\x17\xed.XR\nx\xbb\xdb\xedR\x86\xb9\xaa\xdab\xcb\xe3/W\xcc\x1c\x05<\xf8\x915\xf0#\xe7$\x91\x99N\x1cy\xfe<y\x8a\xad\xbc\xe2)\xb0j\xf9\x9d:\xd3\xa4\xcf\xb0\xe8Y\xd7gZC\xc3\x9b\xa26\x9a\xac4\x19\xa6\xa8T\x89O\xa0\x92Y:ux\xca\xcd\xfe\xee\x0eb\xe8\x1d\xcfg\xa3\xc0\x80\xfd}S\xe4D\xe3\xb1\x98sei\xc9\xc4*\xa3\x02\xb2\x86035N\xf4;8\xc9\x98}d>\xd3E\xa64'\x13\x8fJ\xb4\xfc\x83A\x14\x92\xffJ\xcb~ \xca\xad\x8d`p5\x80e\xd1\n5\xa9\xd3Y\x80BM\xc1\x0c#\x12j\nD\x04BM\x91p\xd8\xd3\x14\x89(\x83\xba\"\x1eWPS\x84\x91\x04u\xefE\xc8@\x8d\xd62\x8fa\xa6\xf9N\x0er\xa5\xf9\x94\x85\x052N\xcc\xf0\x15\x8f\xc8a*a\xc1\x174\xa5\xdcU\\7\x05\xe6N\xab\x98\xc3jy\xbe\xb0j:\x19\xbb\x10\x96L'C9\x9f\xeag\x10\x0e\xee>\xc9n\x00\x8a[\x13\x17\xac\xf3s\x92\xbc\x8a\xa6Y@,WA?4\xaa\x1f\xca\xd2\xcc\x0d\x1eI\xfc\xf0\xa9\xa3\x1e|\x8aUt\xce\x85\x98dh`\xef\xdeE\xab\x0b/\x1eB$\xfa\xa9\xd42Y\xad\xde(\x84\xd2\xcd\x89\xfc\x8e\x86*\xda\x94\x90\xfa\xa8\xf9\x89\xbb\x05\x14\xe0\x00b\xd0\x8dMX\xd9V\x1c\xb6\xe0\x1f\xbe(\xd5\x03be\x87v\x7f\xf7\xa1\x9a\x03\xd4\x17E{=]^QVT\xc9\x1c\x9a\xe5E\x95l\xa4^^\xb4\xaf\x16%\xdcfU=\xa8&\xcc\x0fWy;\xa3+\x82-\xed\xef1\x9e\x88\xae\xdb\xae\xa3\xb6\x1a\xf0\xf3l\xdf\xd1\xa5*]\x19\xcfg\xd4'\xa6\xe5uN\xeb\xd7\xd9D\xcdoJ\xd0^\xd4r\x07\xd2\xb9a\xba\xff\xb2{.\xf8\x02\xd7\x1d.\xe9\xea\x9c\x7fho\x88\xb8=\x172\xf5\x03\x9br\x9f\xc8v\x9d\x9f#\x13\xd6s!.*\x11\xc7a^E\xb9 \x1d\xea\\B\xc5\xa5|7\n\xdf\xc7\xc1\xd1\xc2\x0b\xe7\xa4\x95+V!\xe6\xa5^<'i\x9dCN\xd4MH\xca\xc4\x00\xb3\x80\x97\xc5\x81JE\xc5\xa3\xf1\x8b\xbeq!\xea\x06\x917=]\x91I\xab\x01GL\x0e\xebR\xa6\xf7\x10\xeb\nA\xeb}\x1c\xa0\x87\xb9\xae\xc64\xba\ni7j\xba\xf3|\x0c\x08\xb7S\xcc\x8e\xd0j\x18z\xb8\xa1\xe7\x9ax\xb3\x88\x89\xc1.\xa6\x98\xb2Mp\xc0\x14\xae\xd87\x99\xd2Y\xe0\xcdrw\x15\x935 \x85t`\x1b\x06.f\xf6>\x0eZ\x0d\\\xea;b\x82W7\x8b\x83\x0d:\xc4\xb1z\xf1\xa4~\xff\x88G\xc0\x89\xa2u\xd0]yqB\xd8\xd7\x8e)\x834\x19[Y\x1cPq\xdb_z1\n\x91\xd6Y\x1ew\xd2\xac\x9c\xa5\\\xd8\x95\x1fN\xa3\xabn\x10\xf1k~\xdcW\x93\x08#\x1f\xdc\xbfoA\xa7Rc\x11%\xa9\xe6\xf5\xcaK\x17\xe6\xeeXmJ\x98\xf8w\x0b?I\xa3\xf8\xba\xfa\x06/v\x98\xcc^-\x93un\\\xac\xb4,\x97\xc5\x1c<\xa0\x83e@KH\xec{\x81\xffK\x0e8]\x86\xde\x9b*\x1am\xb4>b\xd3\xccIz\x14\x853\x7f\x9e\xd8\x0eE\x8c\x84\xa2\xf4\xd8\xa0p\xc1I\x11I\xc7\xc4n\x86r\x899\xef^\xe7\x12Pj\x88v\xc5]\xb2\xf0B\xa7\x0d\xa5\x81<\xb5 \x99\xbe\x0c\xa7\xe4\xe3\xd0\x90\xc2\x1e8\x03$\xe1\xae1\xcb\xb1\x89FE\xe1\x0b?HI\xfc\xc5H+\x03\x7f\xe0]GYZ\xa6k\xacc\x9d\xfd [t\xae<\xd1\x0f\x02\xc9q\x8a\xb4\x90\xa1F\x14'\x14\xd8\xa6\xf8\x92\n@\xab\xfap\xdag\xe9\xa5\xd6\xf9\x88b\xae'\x9dbL;B\xdfF\xa5\xb7\xe3\xea\xa8\xf1\xbe\xcd2\x1a\x98kl\xc29g\xd5\xbc\"L\xd9\xd4\x8cYf\xa0\xb5\xc6\x992\x88T^\x10\xf4\xf3D\x9du\x8b \xd6a\\\xcau\x86f\xa5*\x11Z\xc5\xea\x8e7\x7f\xc4.q\x9a\x08\x02\xde\xa8\xd1\x1d\x1cr\xa2P\xb7\xe9\x0b\x15\xb0\x86\xe0\x9bU\x981k\x7fc\x1a\x03Hg0v1F\xc7`|e\x0bl\x10OkZ\x03z\x9ch(j\xbc\xb7o\x81D\xe2\x06\xec\x8ep\xe86g\x02\xe7\xd7\xa53\x816\x94\xf3\x1c\xe9\xb8\xd0\xf8vK\x10=C>\xe4\xf6@`Z\xce;\x9dy\xc3\x1eb\x80\xd1z\x07\xca\x0f\xbb\xfb.\x11\x13s\xe5\xb8h\x18!n\xae\x89\xf7!\xb6\xf5\xcc\x98pU<\x11\xab\xf8\x8d!i\x9fx\xd0\xc9\x8f\xae\x93\x1f\xce\xb9\x95b\x97\xffIwHVK\x1e\xbc\x9a\x9bqk\xe6\xf9\x01\x99\x1a\xda\xc4\xf3\xde\xebN\xa2\x00\x15\xf3V\x8c\xd9=!S\xdf\xff\xff<\xcf\xab\xb3\xac\x0b\xd0\x11\x80\xe1\xa7y\x9c+\x83\x0f\xa2x\x16\xb5\xf72<`\\=I\x9bb\x17f\xfa\x15TIW\xd3-+}\xa6\xccFh\"\x8eO\x9e\x9aYh\xadE:?\xdd\xfeP\x1f\xdc/5\xb6\x87\xe2\xe1\x1b'\xa50\xad'v.\xe7\xcek\xac\xa4(\x03\xb6j\x98\x03\xcb]\xd94\x054\x07e.S<\x9f\xdd6\xff\xb0\xf6\xb3E\xba\x0c^Dq\xfeQ\xd5uK<7.\x18\x87\x88\xf9\x95\xf2(f\\`\xf4\xf0\n\x86\xa2\xad\xf9;\xd6g\xd3\xdc\xfci1\xbe\xfa\xe9L\xfd\xc4\xbb\x08\xc8t\x08Y}\xc5(d<\xeb\x90\x116I\xd0\xad\xff\x8e\xaf~PO\xb0\xeb\x808uLL63{[\x08b+\xc9\xb0\xcdH\xc2\xd2\xac\xd6\x01RF\x10\xd1\xf4v\x16\x07\xdb\xfcS\xe3\x87)\xaa\x8dY\x9a\xad\x1az\xaa\x01({c\xfeFl\xa5\x02\x94Y\x1c\x98\xab\xb7Z\\\x9e#\xd1pi\xea4\xef7\xffV@\xe4\x19\xbek\xe1\x13\xf8\x93\xcbaem\xf5\x03u\xc1:\xfe\xb8\n\xa2\x984\x05;3\xa2\xc4\xd4_\xb7F\x88\x14\xb5\xd4\xfa\xcd_\xb7\xf17\xe9\xe3*\xf6V+\xf2\x85;a\x13\xd9\xbem_\x91 b\xe6\x8d\xb6\x9c\xd7\x0efA\xfc\xf9\"\x1d\x82\xb5\xd3\xab\xc1\x86+\x7f\x9a.\x9a*%\xf1d\x0831\x90\x1a6#\xa0\xfd\x9d^y\xf39\x89\xe1\xfdK\xc3\xack q\x89\x80'\xac)\xcb\xa9\xfb\x04\x13v\xb7]\x96\xd2^\x11\x8bS\xb7YN\xb3\x8b\xa5\x9f\x0eaaZ\xc1Uw\xe9\xad\xda3\x0b\x92\x04\x9et'A\x14\x8a\x898\xf4\xd3\xfa\xe3\x87q\x06f\x9an\x92\x7f\x1d\x1d\xa5W8\xf73\xc7\x95\x9a\xbe\x91\xa8R\xceCK\xdb_\xbe\xacb\x90Qojd\x18\x94\x02\x80`J~\xccxy\x7f\x15\xce\x1f_x \xd9\xdfu\xfd\x0f\xcf\xde\x9c\\\xf5\xbe\xfej\x1e\x1d\x1e\x1e\x1e\xbe>}\xbf8~??<<|\xb6K\xff&G\x87\xaf\xe8\xbf\xaf\x1e\x04\xfb\x7f\xa5?\xbe\x7f\xf1\xec\xd5\x87\xe3\xf7\xb4\xc2\xfb\xd9\xd5\xad\xfe\xeb\x05\xbf<\xbb\x1f\xf6\x9e\xcd\x16\x1f\x9f\xad~\xba>\xea}\xdc\xbd\x7f\xff\xfe\xfd\xce\xcf\xeb\xdd\xa3\xbf\xac\xfa\xcf{\x8f:\x9dY\xbast\xff\x97\xbd\xfb_\xf7\xf7\xef\xbf\xdfy\xf0\xe8\xfd\xec\xea\xf9l\xef\xe1\xfd\x9f\x1f<\xea\xbc\x8f\x07\xcf\x07'G\x97\x8f\xe8x\xfe\xfc\xdd\xc9\xe9\xbb\xe0\xd5\xe1\xf1\xf1\xe1U\xf8\xe8\xfe\xfd_v\x0e\xe7\xeb\xdd\xfb\xeb\xef_>\xbf\xaf>\xef_\x91\x9f\xfc\xfe\xe5\xe1\xe1\xe1\xf3\x87\xa7\xefO\x9e}\xf8\xf3\xfcY\xf0\xb7W/\x0e\xa3\xbf^=?|w\xf2\xf1\xe2\xbbg\x0ff\x9d\xf5\xdb\xaf\xc3\xe0\xbb\xc3\xbf\x85\xfb\x97\x83\xc9l\xe7\xf0\xd1/\xf7\xdf\xce\xde\x1c=|\xf9\xf2\xfb\xd0\xdf{\xb1\\\x1e>{\xf5\xf0\xc5\xab\xc5\xd5\xbb\xfe\x83\xc9\xa3E\xb8\xf0\xff\xf6M\xff\xe8j}\xfcM?]\xbe}\xde\xfb\xf9\xf4\xeb\x9f\xf7\xe7\xdei\xfa\xed\xfd\xcbW\xdfy\xe1\x87\xe5\xe1\x87\x93\xe7\xef\x83?\xf7\xdf\xac\xb3\xec\xdd\xcb\xd7\xd1\xfe\xe5\xa3\xde\xe9\xc7\xd9\xc3\x9f\x937\xe9\x8b\xfd\xf9\xeel\xd6\x8f\x92\xb7;o\xc2W\x93\x0f\x0f\xa6\xbb\xab_\xa6/\xdf\xa7Y?:\xdc\xfd\xd0{\xfe\xb7\xe8\xeb\xe5\xc7ep\xfc\xfd:}\xfe\xfe\xa7\x9fNw\xd2\xe5\xd7\xcb\x9f\x9fuV\xdf_?\\=\xef\x7fx;{\xf0\xd3\xdb\xe3\xde\xcb\xdd\xde\x9f\xff<\xf1\x9e]\x85\x19\xd9\x9f}\xf5\xcb\xfc\xfat/\xfd\xee\xe5\xfbG\xfbo?<\x88/\x9f\x7f\xfb\xe7\xd7\xdf|\xe8=\xffz\xf7\xc5e\xf4\xf5\xf2\xc5\xea\xf5^\xf4>\\\xfb\x0f\xbf\x8e\xc8\xe1\xe0\xfe_\xbeK\x96\xdf\xfd5\x8b.?\xf6\x12\xff\xa4\xff\xd5\xc3\xf4\x9b\xcb\xd7\xfb\xe4\xd9\xa3\xe4\x9b\xab\xbf\xac\xee__/'\xd7\xde\xdb\xfb\xef\xe2\xb7\x9d\x93\xb7\xcb\x8bW\xaf\xfc\x8f\x93\xbf|\x98\xbf;\xe9{\xef\xff\xf6h'\xfa\xea\xbbd\xfe\xdd_\x0f\xbd\xaf\xf6\x8f\xaf\xe8\xb2\x1c\x9e\xbe\xff\xf0\xe6\xe4\xeb\xbd\xa3\xef_\xbe\x1c}F\xd0\x19\xd2\xbd\xb8N\xc97Lj\xae\xd3.\n\xad\xe2\xc4N5\xf2\x18\xaai\xc6=\x8d\x84\xc34-\xaa\xe9\x1c'\x16;\xf0\xcf`\x87\xd0\x81\xd8\x81\xfb\xb0\x0b\xdb\xd2]\xe9\x8d\x0b\xa4\x9bF\xcf\xaeS\x82\xa6a\xf5\xd7f\xb9\xe9 \xb3\x10\xc4Q2\xcb\x17:*\xe6\xfc:\xee\xf3\\\x14!\xb9\x82\xa8\x92\xe4\xa7\xc6N\x03\xc7I\xa0C+\xb1q*f\xc3x{\xe6BF\xe99%\x06=\x97\x05q\x86\xa7\xd0\xc3\x0b\xe2m\xd8\x85!\xad\x120\xfb\xc5\x00\x9e\xc0\x8c\xfe\xd3\x19\xc1\xae\x83\x90\xf5\xc7iw\xb2\xf0\xe2\xa3hJ\x0eS;p\xce\xe0\xc9\x13\xe8?\x84O\x95\"\xe8@\x9f\x17\x0f\xf4\xc5\x03V\xbc\xaf/\xddq($\xc6I\xa7\x83\xe6\xfa\xf0\xf4)\xf4\xf7\xe1\x1e\x0c\xf6\xf6\xd4\xf7\x0f+\xaf\x07{{pO\x0d-5@)\x9bI\xcf\xe6\xc9\x18\x06K\xe7\xf2\xf4)\xecV;Q\x18\xb3~\xab^\xfa\xbdZ\x90\xed\x9a!\xf6\xf4)\x0cZ\x03\xc0\xd1\xa2\xb4WF\xe0Y\x1c-o\x87\xc2B\x97\xc5\x8d\x12\xe0\x8f\xb0\xc3\xc2=\x8e9>\xf782\xc36\xf8,\xc7\x83G\xff\xe9\x8c\xa0\xbf\xbf\xf3p\xc7\x81\x88\xb1\xe13\x8a\xe0\x99\x8b\xd1n\xb1\x04\x9e\x82\x07\x07\xe0\xc1\xb0x\xa7\xb2\xc0\x0c\xd2>\x1c0@\xa7c\xda\x0d\xdd?\xbc\xd1x\x8c\xc0\x19\x9c\xd1\xcd;&\x0c\xae\xf7`\x7f\x87\xbe\xb0F#\xcbq`\xc8\xb1\xc2\xcf\xd7\xcbf\xed\x0cp\x1d\x1e:\xd016\xdc\xef\x89\x96)b\xe4-\xf3\xae\x06RW\x15\xee=\xbf\x93\xfe)\xf2C\xdb\x92\xec\xb4$E\x91d\xc5\xc9 \xea\xf3\x7f)\x84\xa5\xf8\xab\x92\x9f\xdc{?L\x1f\xb2u<\x90\xff\x18\xb2\x90\x88lQ\xac\xc3gG\xcf\x8f_|\xf5\xe7\x97\x7f\xf9\xfa\x9bW\xaf\xdf\xbc\xfd\xeb\xc9\xe9\xbb\xf7\x1f\xbe\xfd\xee\xfb\xbfy\x17\x93)\x99\xcd\x17\xfeO\x97\xc12\x8cV?\xc7I\x9a\xad\xaf\xfe_\xea\xde\xb4\xc9\x91d9\x0c\xb4\xdd/k\xf6\xfe\xc2~q\xa4\x86\xdd\x99\x83\x04\n@\xdd\xa8F\xd7\xeb\xd7\xd3#55\xd3\xfdl\xaa\x1f\x9fH\x00S\xcaJ\x04\n9\x0dd\x82yTW\xcdT\xafQ\xd2R\xa2H]\xdc\x95(R\x07\x0f\x1d\xe4.IQ\xa4\xb4\x07wy\x99\xed\x9b\xf9#\xfa\x03\xfb\x17\xd6\xc2#\"32#\"\x13\xa8\xaay\xd4\xc2\xac\xbb\x00\xcf\xc88=\xdc=\xdc=\xdc\xafo\xbe\xec\xf5\x07\xbb{\xfb\x07\x87G\xc7\xed\x1d\x8b\xa7\xcbat\xa4\xc8g\xe9\xc1\x13HN\xa0\xdd\xf6\x1cqS+\xc3+b\xc18\x93Q\xd9s\xe8#O\xe7\xec\xe0\x9b\xa9z\x9e\x1d\xa4\xf4\x14\xc35\xc0O\xc0\x1e%c\x0e\xa4\x8b8z\x87\xc4\x13\xa3\xba\x15Q}\x99\xc3W\x178\x1bAO\xd0\x0b\x02\x1e\xac\xb2e\x1a\xac\x97\x98\xf0f\xaf\xaaE\xbb\xca\xef\xe7`\"\x95\xd7s\x9b.\xa6v-;\xfcN\"\xb0x\xad#\xbc\x03=\x0eq\xa3\xe4\xf1\xc8\x87\x8c0\xd3\xfeN\x8b%\xd7\xcc\xc3\xdcD\xf1s\xa4\xe0\xa1\x90\x85+.m\x90\xad@H\xff\xb4G\xb0\xeb \xc2\xd8)] Jr(\xf5\xec\x1f\x1c\xf6\xfb\x07G=\x8a\xd7\xf4 \xba\x8c#\xa6St\xdd\x1f\xf0'\x8c|\xb0\xe7\x03*\x9df\x02\xf3\xed\x88y\x18Q\xfc?\x92p>B\xc8\xa0\n9\x90\x00\x07\xbb\xf0\x08\xa2\xea\xad+>}\x99f+\xe4\xdf\x82\xb1\xd5\xb1d\x0c\xea!\x06\x1d\x0c(jY\xe7\xbaG\xbbZyC\x9eM\xd2\x8d\x897\xab\x0b\xbb\xa7\xa0\x02\x0b\xabM\xe7\xfa\x08>\x84\x80\xca\x02\x942\xa8\x12\x05\xdd\x17v\x9f\xce\xab\xe7\xe8K\xf80\x82\x04\xe7L}F\xd9r\xe7P\x85\xa3\x9f\x10\x9cb\xc3}\x18BO-\xb2\xe6E:\xf4\xb9\xa6\xea\x05K`\x04m\xa8\xe6T@\xc4B^\xbff\x14f\x01\x8f\xf8\x18:s6\x08X\xc0\xd3\xa7#\xe8\xcc\xa9\xe4\xd0\xa6;\x18\xe6t\xdb\x9d`\xf9\xc1\xfe\x01|\x88\xe1\xb2E\x03.\x88\xfa\xe6\xd0\x19\xc1\x91\xa3i\x91\"p\xa4\xb6\x14\x95[\x8a\xf3\x96\xb2\xbc\xa5l\xf3\x96(\x91`7 #\x07\xfb\xda\x87N\xf5\x06\xaa\xe1~3}5\xc2W\x8b\xcc3\x19\x9c\xc2+\xef\x15\x9da\xd8\x81\x1e\x15\xbc\x16\xf9\x9ck\xf44\xc8\xf0>\xf5\xd2Ew\x1d\xbd\xb3\x07\xec\xee[D;Z\xbe\xc8\xaa7\x17KU\xe3\xa8?,U\x15Q$\x94\xf6\x0ce\xe8\xef\xe2 \xad^\x93\xa9\xcdiBq\x9b\"6\x0b\x19\xcf\xd1\x9b\xd6\x1c\xe8\x91w\x9e\xa3\xb7o@o\xf4\xb00\xa07\xc5\xd1\xc1n\xce\xbc\xe5\xd1t\x06{\xb4\xc2\x12\xe8\xf0\xd0\xd1\xe3:\xc5\xe5\x98\x93\xd5H\xdf\x8d\x19/B\xa7\xaf\xa3y~\x85\x12\xd4\x13\xe8\xc1\xed-\xbf#\x8b\x8e\x1b,K\xc4\x13\x14\x8cq\xa7i0\x97\xce0v\xd4\xbbH\xd0-)H^y\xafl\x82>\xf2\xcc\x90\xca\xd0\xe3\x14lJ2\xf2\xc7\xbcJF\xbc\xe7tp\xb8\x0b\xb0\xae\xf92\x8ab\x1b\xbf.\xa3KZz\x87=\xf8\xe4\xd5\xc0q\x81P\\K\xa0\x8cM\x9d\xccq\xe0 \xf4\x91\xf3d\x9d\x0ee\xcb\x1f\x8e\x80\x96\xa7\x07\x82\x11\xee\x94%<\xa5\xfd9\x855\xec@\x02CXW\x10\x89n\x89\xa5CQ,\xa1E\x07\xac\xb6v\x9b\xd6\xb6\xc3j\xcb\xeb\x99\x8b1\xc9\x83(\xb5\x82Om\x82\xb5u\x18\xe6\xca\x8d\x05\xac\xb6\x11,q\xf8\xc8\xbd*E\x96\xe6\xf7F\xd0s\x9c\x13\x08hcG'(\x9f\xb5aQ\x88\xbd\x1e\xa5T\xed\x11\xcc(\xad\xdeAzA\x85\xa7:\x12\x94Qd\x0e\xe0\x96\xbe\xeb\xd3w\x83\x13\xf0\x19\xc5Q\xaa\xcf\x8a\xea\xb3\xbcz_W=\x7f\x15:0\x9b\xc2\xed\x08\xfa\x03\xba\xb1\xae*\x1c\xae\xe1P,+p\xca\xdb6\xf7\xea\x0c\xed\xdd\xc1Q\xe5\xc8[x\x85\x96\x1dk7i\xb2\xb8\x921\xd08\xdb\xc6\xdd\x9f<{\xfd\n\x1d2\xf9W\x9d\x87M\x9e\xe6fXI{S&yMW8\xccwS\xf2\n\xf9\x85\xdd@{[w\xa3\xf1\x9a\xf4\x0e\x92g\xed\xa8\x14\x0d]LPd\x87\xf6\xee\xae\xe2w\x1c\xf0GG{\x8e\xd6\xa57\xfa\xf1\xba\xf4n\xe3\xdd\xde\xa8KU\xd3(H\xf9\x185q\xbbh\xf9\x8a\xe3.\xf3\x11\xa7\xef9\x1b7\x0b\x924^g\xa5\x8eq\xa5j\x94\xcaxM\xd8\xfc\x9c\x12\x03\x161\xc1\xe0\xc3\x11\xdf\xd4(\x8a\x8bP3\xeclT\xf5\x83vN\xa0\x85>\xfaH\xf2\x92Rv\x00f\xee\x0fy\xbc\x0b\x9e\x94\xc0\x85\x16z\xce\n\xa7!\x96\x1f\xc19\xe1\xe34\x18\x85\xde\x83\xef\xb1\x84 u\xda\xf0\x88M\x15\xcb\\n\xa8g\x1e\x84\xderY7\xe4\xfa \xa1\x9f\x16\xfa\x13%]\xbe\xd4\xd2w\x83\xd3\x18l\xd84\x08\xf9L\x9c\xfb2su\xfa\xf1i\xa1\xda[\xf7X\x9ca\xa7:\xe7\xc5\xa9\xf3\xcd\xcd\x9aTN\x9e<\x80\x12\x0bV\xc5\xeeYf1\x8b\xe1\x11\xa4$\xf6.\x96E\xc0\x7f\xe5\xc2V\xd14{\xf2 \xbcb\xb7\x1a\xdb\xfa>\xbc\"\xb4\x8f\xf6\x1d\x17B\xfb\xf8\x00=\xa5\x8b\x0e\xd0\x96\x06\x1bu\xbb\xe07\xfd]\x1d\xc7 \xed\x03\xc7\xb6p\xb6\xd2(\xaez\xea\xb0\xeb\x80\xbb\xa6x\xe1\x94\x89u\x83\xe4\xa5\x98\xebM4\xc89\x85\xd2\x9eUyD\x15\xdc\x8a\xe3\x80\xa5t\xf8\xeew\xf3\xee\xe1\x9d[L\xb7U\x8d\xc9\x12\x97|k7\x9a\xde\x0dWt\xefAWtww_Y\xcb\x81\xd3\xe5w{\xbc$ .\xc3Mj\x92\xd7U\x9a\xca\xd8\x8e\xbbg\xd0\x86\xb8\xfb\xb1\x0b\x16\xabU1\"\xb2V\xd8\xe8\x0e\xa4I\xdb\x08\xa1\x9an\x9a\xeeU\xaf\x94\xf2\xa8\xef\xbd\xaa\x14\xc5p\xeb\xa0:\xbd,F\xfd~5v\xbc\xc7j\x19T\x8b'9J\xf1\xc9\xd3cj\x0b\xbd\x07C{p\xec\xd8F>-\\\xf1\xbe\xd2\xc4e \x068e\x9a,\x91\x88\xceQ\x0d}\xc8t\x9a?K\x8b\xfd<\x80\xce!e\xe9\xc9z\x19\xa4\xb6e9\x1a\xc7-\x1d\xeb!\xe3t\xaap\x9b\xf7\x8e\x0b\x87\xd0\x1aA\xc2\x82\xd5:<\xcf\x91\x9c\x1e\x91=\"\x8e\x93\xab\x89\xe8\x0b\x92%\x86\x1e\xabj\x85\x88R \xe6\x0cm/t\xces\x911We\xd3\xf3o\x9f\xd9F\x82\xee\x9cYC\xa2\xee\xfc\x84\x9e\x8b\xc0\xd7\xe4\x15\xcak^\xbbx&\xf5\xec\xbc\xd2\xb1\xdfnO\x1d\x17\xcf\xa1\xf4\xd0\x14\xdb\x0b\xa7\xebG\xa1\xef\xa5\xf6\xdc^\xa0\x02\x9a\xc2\\<\x89\xce\xf2>\xdc0\x0b\xcc\x15<\x85\x9b\x13\x07\x96\xec\x9e\xd3\xc2\xc5\xb3\xf3l|Cke\xe2\xc2xM't1^\x1b\xf4j\xd2MK\x18B\xb2\xc9\xe6\xd9\x90\xe4<\xe4\x81\x83\xd6w\\Cr(\x0elRO\xb1\xc3\x95\xbd\x19\x88\x8d\x7f\"\xb5\xda\xdf;vl\x8b\xd6n\xb9[\x88\xc65f\xb8\xc0\x8e\xa9`[Fp M7\x19E=\xf5\xda\xf9\xdc\xfe\x89A\xefv\x928\x1f\xda_xW^\xe2\xc7\xc1:\xbd\x9dy\xa9\xe7\xec\x04+u\xd4;\xe3\xcf'\xd7\x83^gr}\xf8b\xbasY-\x12\xb1:\xc7\x9f\x0f\xa7mg\xb8s\xb9RI\xdd\xd8\xeaZ.X;\xb2\xef\xb9\x19K\x12/\x0c\xd2\xe0K\xf2\x83x\xd9t\xf3@\xd8\x92\x98R5\x15\xd7~\xe8Y\xce\xd2y\xb4n\xb4\x12 k\x95\x85\xde>\x1d\xf7\xa6\x0e<\x85\x8e&'\x95\xed9\xdc\xd6\x84\x8a{\xaf\xbb\xa2\xd2\xb3\x1d9\x8e\xb0-1\x0bm\xdcMI\x922\x15\x8e\xe5]DY:\xbcXz\xe1[\x0b\x86\xe0a\xc4<\x19hB\x81M0\xa0\xc0\xe3\xdd=\xbd@\xb4\xbb\xbf\xeblc\x1e\xc6`\xf8\xdd4\xfa$zG\xe2\xe7^Bl\x0c\xd1\xda\xa6C\xa6t \x03\x96W\xe3\x9e\x1a$\xaa`\xbb!\xec\xe9\xc3:\xf4\x0f\xef\x1e\x98\x027Yy4[\xcaUE\xf7\x0e\xaa h\xf8\x04\xefU\xb98\x93\x05\xaad\x8f\x89\x02\x87U\x81\xc2\x03\xae\xfeS%\x81\x98N\xb8\x14\x93e\xc8\x05\xcarIf 8\x85\xa4+\xf2\x87\xe5\x05\xebg\x0d\xb3\x12V\xe6\x0d\x03k\xf2\xa4\x8e\xfal\x80\xaa\xc2<\x92\x93\x1b\x06<\xdfX\x1b,K-\x9a\xc9E}8\x05_\xa4\xfb\xa3\x9b\xa2\xf2\x82\xe0\xc1DS\x19\xaf\xc2\xeaa/\xc3B\x15;\x1aA\xc7\xa3\xdb\xae\xd3\xa3\xbb\xad)~\x80\x89\x9dm.!t\xfa\xdc7\x83\x07\xc1K\xb9\xa2\xb9l\xf2f\n\x90\xd89\x81v;\x84'\x10\x9f8\x10\xf0\x00\x83<\xbcv\xa8\xe6\xc6\x16s\xfa\xa0\x18\xcb9\xa5!~.Z\xed*\xc7\x11\x15\x8f\x83\x1c\xd7TdfX+\xe5\xb2\xdb\x10\x1d\xcd\x87\xac\x88\xdf\xde\xc6\xf0\xa4\xa5\x12 \xae\x86(qW\xf5\xda\x86\x94G$5\xe8m\xc4\xccUB\xd8\x95\xb4$\xef\x95.\x06h\xdbf]\xd4/`\xcc\x9d\x06NE\x07B\x18\xc2\x8c,IJ\x10R\x8ap\xd8\x8c\xa8\x02\xf5\xaa+\x99O\xfa\xb6\x13-D@1\x88\xbb\xe2\xdb\xee^\x95\xe8 \n\xaeO\x92\xb5\xbb\xaf\xcb\x92\x85\x8c\xe0\x8eC\xc8\x0bhu\x83\x04%zSx\x01:\xa5\x01c\xda\x11\xa3H:r+>\xcc]\xe5\x149>\xe5\x88hZF\xb3\xb2\xbe|\xc2\xcb\xc7v\xe8B_:\x9e\xd0w\x93e\xe0\x13\xbb&\x91\xb27N\xa76\xa5\xaaI\x193\xef\xbeR&-H\x93\xa8 0^\xefe!0)\xdfd\xdc\xd7\xe1\x14\x02J\x8dQK\xf9\xe8\x11\x84\xf0\x94\xd9\xf4R<\xd7\x88\xa6\xb6\xd8\x03\xdbv9f\xa4Z\x99_\xf3P\x98YOx\xfbt\x08<\xc5\x1eS\xda\x1e@\x1b\xbd6P\n\x0c\xf9\x03\x1c\xa0\x93\xbf\x84a\xfc\x02\x87\x91\x7f\xfar\xc8_\x0e\xa1\x83\xceXO\xa1\xe7\xb2/#\xad\xd9\xf0\x8aG\xbc`\xac#@\xd6\x11\xc3\x13\x08N\x1c\x88Xh\xb1t\x1c\xd3\x9e\xe8\xfd\x11\xa3;\xe3\xc6~u\xb76\xed\xe2A#.\x19\xe5\xb3\x94m\xb7\x94\x1dp\x1bIO3\n\x18ZJ\x0b\x15\xc4\x16M\x08\xb2`\x8d'\x93lv\xd4\xebu\xe8\xdf\xf9|>\xad\xb8\xa3\xc7\xa2Po\x97\x15\xea\xed\x1e\xcc'\x93lN\x06\xf8sN\x06\xf4\xe7\xa07\xc3\x9f\x83\x9eZ\x05\x9dd\x0b\x9b\xd9\xf5\xc7\xac\x99\x0bSs\xe8\xd85\xfe\xbc\xa1S\xe8\xc3e\x9f\x0e\xe5Jg\xe4\x00\x8b\xcf\xe6\xf3\xa9\xf3\xd5\xe0\xbd\xa52\xf0\xf2`/\xe6\xf3)\x02|sC o(\xcfk~\x9b\xe7Fw,\x16\x89A\x95Y\xb1\x999\xe9\x11\xf6g>=\x15i\xefm\xde\xe9A\xaf7\xe3\xb5\x8e\xb9G\xcd\x94\xd3\xcd[\x0bEL\xc7X\x87\xe5|XU\xff\xce\xa5^\x8e#\xd1\xd5S+\x0f\xed\xe6BX\xad\xbf\xd2\xef%\x8cx\xb6X\x1bGg\x9f\x8e\x8a\x91\xe2\xa0\xe7\xd0\x06\xdf\x05\xeb\xd2\xba\xeb\x9eH\xf9\xa9r\xe9\xb0+\xc2w\xdf\xc6\xd5s\x898\x10V\xa3\x01\x8am\xac;\xb1\xf0\xd1Z\xe3\xc7\xff\xe5\xe7~mj\xddkd\xf5\xccY\xc8JvdS.\x9c\x1f\xf13<\xe2;\x18\xb7\xc72\xdb=\x1a\xf7rC\x02U\x13\x9f\xd31\x8d\xa8F\xde\xd7Pr\x14\xff\xa2\xdc\xdf/\x1d\xb7\xdb\xc1\x14\xe9y\x00O :q\xd81\x87\n\x06\xe98\x98\xa2\xeb\x8dA\x92l:\xcf\xd4`\x83A\xcfU=s\xa3\x96g<\xb9\xf6{\x9d\xc9\xf5\xec`r=;\xeaL\xae\xe7\x07\x93\xeb9~\x99O\xb2^\x9f\x92\x82\xac\xd7?\x9cOw.kpf[zx\x1f\xe4\xb2S\x14\xdfR\xc7a\x96q\x81>\x11]\xdb\n2\xdd}\x12\x0f\x9dJ\x90\x03\xebG?g\x0d\xc1zV!\x14\xd6\x8f\xfe\x96\x1e\xfc\xb7\xf5\xe0\xbf\xa3\x07\xff\x8fz\xf0\xcf\xeb\xc1\xbfI\xc1\x9e\x02\xfe-=\xf8\xdf\xe8\xc1\xffV\x0f\xfewz\xf0\xbf\xd7\x83\xff\x1e\x05?W\xc0\xbfC\xc1\xbe\x02\xfe'\x14\\M\x91j\xfd\xe8\x0f)x\xa6\x80\x7f\x81\x82\xab D\xad\x1f\xfd}=\xf8\x17\xf5\xe0_\xd2\x83\xff\x17\n&\n\xf8\x7f\xd5\x83\x7fW\x0f\xfe==\xf8\x1fP\xf0K\x05\xfc\x0f\xf5\xe0\x7f\xa4\x07\xffc=\xf8\xf7)8P\xc0\xffA\x0f\xfe\x03=\xf8?\xea\xc1\xbfL\xc1\xaf\x14\xf0\x1fQp\xf5\n\xab\xf5\xa3\xff\x89\x82_+\xe0\xffY\x0f\xfe\xa7z\xf0?\xd3\x83\x7fE\x0f\xfeU=\xf8?Qp\xa4\x80\xff\xb3\x1e\xfc\xbf\xe9\xc1\xff\xbb\x1e\xfc\x7f\xe8\xc1\x7f\xac\x07\xff\x1a\x05\xff@\x01\xff\x0b=\xf8_\xea\xc1\xffJ\x0f\xfe\xbf(8S\xc0\xff\xb7\x1e\xfc'z\xf0\x9f\xea\xc1\xff\x9a\x82\xab d\xad\x1f\xfd\x19\x05\xdf(\xe0\xbf\xd0\x83\xff.\x05?S\xb7\xc3oS\xb8\xa7\xc2\x7f\x9d\xc2\xdf,\x14\xf8\x9fSx\xaa\xc2\x7f\x83\xc2\x93jH#\xebk=Y\xfeZO\x7f\xbf\xd6\x13\xda\xaf\x91\x88+\xe4\xed\xeb\xbf\xa3\x07\xff\xbc\x1e\x8c3\xa0\x10\xc3\xaf\x7fA\x0f\xfeE=\xf8\x1f\xe8\xc1Hh\x15\x8a\xfa\xf5\xdf\xd7\x83\x7fI\x0f\xfe\x87z0\x92 \x85,\x7f\xad\xa7\xd6_#eR\xa8\xf5\xd7\xbf\xac\x07#\x99P\xe8\xef\xd7\xffT\x0f\xfe\x15=\xf8W\xf5\xe0\x7f\xa1\x07# R\xf0\xed\xeb\x7f\xa6\x07\xffs=\xf8\xd7\xf4\xe0\x7f\xa9\x07\xe3\x9e\xfd\xab\n\xf8\xd7\xf5\xe0\xdf\xd4\x83\xff\x8d\x1e\x8c\x9b\xf3R\x01\xff\x86\x1e\xfc[z\xf0\xbf\xd5\x83\x91\xd9\xff5\x05\xfc\xdbz0\xca\x00\xca\xc6\xfc\xfaw\xf4`d\xb1\n\x07\xfb\xfaw\xf5\xe0\xdf\xd7\x83\xff@\x0f\xfeC=\x18\xd9\xb7\xc2\xd8\xbe\xfe==X\xcf4\xbf\xd6s\xc7\xaf\xffH\x0fFv\xf2\x93\n\x18\xd9\xc9\x17\n\x18\xd9\xc9_W\xc0\xff'\x05\xbfU\xc0\x7f\xac\x07#'\xf8D\x01\xff\x89\x1e\xfcgz\xf0_h\xc1\xdf\xfc-}i\xe42\xd5\x981\xd6\xd7\x7f\xaa\x07\xff\xb9\x16\xfc\xcd\xcf\xe9\xc1\x7f[\x0fF\xd2\xabH#\xdf\xfc\xbc\x1e\xfc\xf7\xf4\xe0_\xd4\x83\x91 (\"\xcd7\x7fW\x0f\xfe\x05=\xf8\x97\xf4`\xa4\xdf\x8a\x90\xf2\xcd?\xd2\x83\xff\x89\x1e\x8c\x84Z\x91/\xbe\xf9\xc7z\xf0/\xeb\xc1Hc?S\xc0\xbf\xa2\x07\xff\xaa\x1e\x8cT\xb3\x1a\x93\xc1\xfa\xe6\x9f\xeb\xc1\xbf\xa6\x07#\xa1>S\xc0\xffJ\x0f\xfeu=\xf87\xf5`\xa4\xc8\x8aT\xf0\xcd\xbf\xd6\x83\x7fC\x0f\xfe-=\x18)\xf2\x1b\x05\xfc\xef\xf4\xe0\xdf\xd6\x83\x91\xf4VC\xe4X\xdf\xfc{=\xf8w\xf4`$\xa6\x8aP\xf8\xcd\xef\xea\xc1\xbf\xaf\x07\xff\x81\x1e\xfc\x87z\xf0\x7f\xd2\x83\x91\xc6*\"\xe47\xbf\xa7\x07\xff\x07=\xf8?\xea\xc1\x7f\xa4\x07\xffg=\x18I\xef\x0f\x150\x92\xdew\n\x18I\xaf\"\xe3~\x83\xa4W\x11f\xbf\xf9c}i$\xbd?\xa3\x80\xffD\x0f\xfe3=\x18\x89\xe9\x97\n\xf8O\xf5\xe0?\xd7\x82\xbf\xc6\xd5y\xa92\x1e\x9c\xab@\xe1<\xdf\xb0\xe3\x9a\"\xb9|\x83\xc2R\xa4\xc2Q\xb0|\xac\x927\xe4\x1bI\xe1\xcab\xf2\x08a\x8ex\xdb\xab\xe9\xee\xa3Q\x945u\xdc(5\x84tL\xa6\xa5\x17\x9aT\x895J!\x83_\xc8\x81>\x1d\x89\xa2q\xcbx\xf1~\xa3\xeaKo\xde\x12zc\xbcK\x92\xf2\xe4\xdd\xdc\xf2\xc6\x9c\x92\xe4\x81\xa3}\x93\xdb]\xb2\xc2\xee\x82\x1aL\xa6x&\x9b)\x9euv\x12\xf4 \xeb\xf5:\x93\xeb\xc1|r\xbd\xebu&\xd7{\xbd\xc9\xf5\xfeEgr}\xd0\x9b\\\x1f\xd2/\x87\xf3i{\xe7\xae6j\xd1\xc9\xf0>\x9d\xf4:_N\xc7\xcf:?3\xbd\xc5\xff\xbf\x1a\xb8\xef\x11v;\xeeu\x8e\xa7\xf4+{\xc8\xbf \xf4v\xfc9\xfb\xd9\xeb\x1c\xc3t\xe7\x8e\xdd\x0f\x99g\xd8Vv\xae\xdc\x085\x99\\{\xfedr}\xd1\x9fL\xaeg\x87\x93\xc9\xf5\x9c\xfe\x87\nV:\xe1l\xc6q\xca\xd9\x9c\xe3\xa4\xb3Y\x9f\\_0\x85k\x8f+\\\x0f\xe60\x99\xa4\xf4\xf5\x8b\xc9\x84\xbe\xeb\xf5P/;\x9fO&\xe1d\x12c\xa1\xc1\x11\xfbs<\x99d\xfd\x83#Z\xa2\x7f\x84\xd6\x16Z\x11\xfb\xd3g\x7f\x06\xec\xcf.\xfb\xb3\xc7\xfe\xec\xb3?\x07\xec\xcf!\xfb\xc3\xea\xec\x1d\xb3?\x1ek\x81un\x9f\xfe\xd9\xed\xf5\xaaq\xae\x98y\xcd\x826\x0b\xecm0\x9d\xcd\xda\x96\xba\xe1P\x0b=8\xe4\xc3>\xbc\xd0[\xc9\xe8R\xd3I\x9d\xd3\x99\x9a\x1fL\x98\xb6{r\xad\xda\xba<\xad\xe9Mt\x0d-A\x95\x06\x8dU?\xeb\xfc\xcc\x84)\xdaQ\xd3\xceT\xed\x93\xeb\x191\xd9\xd7\xb60\xe4\xf9w2\xe4\xa1\x89l\xbcq\xbf\x96\x92E-\xcb\xed~\x9e\xcer\xb6\x96\x8a\xce\xeb\x8b.x\xd1-\xcd\x07\xb7&\xdb\xa9S\xb5>\xce\x8c\xd6\xc7\x85\xc1\xfa\xa8\xb5\xb5\xe2\x1d\xe8\x8d\x0c\x92\x0b\xbdA\xf2\xaad\x90\xd4\xd7G\x9f\xcd\xca\xaf\xdd\x14&\x96\xf1<\x8fs\x8f\xf3\xdf\xa6\xd3\x86\x96:\xfbt8\xbb].oW\xb71\xb9Mn\xd3\xdb+\xe28\xa7\xdc^9\x8e]\x98\xbb`}`\xa9\xf6NX+\x15}t\xfb\xc9'\xb7\x9f\xde~\xf6\xe2\xf6\xec\xf6\xcd\xedO\xbd\xa8T\x04mX\x9a*+\xfa\xb7\xdc\xa4\x7f\xe2\x8d\xa6\xe6-\x17\xf7\xfb\x87\xf6\xe9\xb0\x7f\xf6\xe6v\xf0\xea\xa3\xdb\xdd\xcf>\xba\xb5O[\xe3\xfe`w\xeaL&\xb37\x7f\xcd\xb1OG\x93\xc9\x05\x92\xf1\xf3\xa9#\xbf\x93\xa4\xb7\x83pv\xbb\x1b\xcfJ\xef\xa4\x8b\xfc\x9dg\x9d\x9fa\xef\x04.\\I\x03\xbb\x97\x8dJ0\xaf\x9b\xcd\x98\x97Y\xe48\xa8\xe6\xf4a\"\xc7a\xd5\x05\x98'@\xeb7:\xd0V;\xcc\x82l\x06_\x12vw\x9b\xe7\xc6\x9cy\xa9w\xae\xcf\x7f\xba\xf0\x92\xc5\x10o\xb6\xc5\xae\xf2p\xe5\xad\xf1\x99\x1d\xd1q\x07\x1a\x0f)\x91f\x0b+(=\xbd\xbb\\\xa6\\\xc6\x11rYU^\xe3\xf6o\xc55\x97\x0bf\x8a\xdb\x8b\xc7\xe1\x03\xed\x9d\xdd\xc4\xec\xc8\xa8\xb3%\x87\xdb\xd9\x92Y\xd6\xcc%\xf1b\x1b-\xc8\x04\x03\xb9\xe8\xa4_1\x13T\xd2U\xfd\xcaD\x18\x7f;f\x1e\xeb\xe3\xfe\xb4\xde\xb4N?\x89\x9c\x0b\x92\xf6\x81e\xed\x92\xc1\xdc\xab\x11\x13x\xca\xf0K\x82\xf2i\x19\xb8\xf0(\x12fe`\x82%\xbd\xf2\x1d\x8f-/u\x1c6\xca\xd2Z\x84\x970<f\xaez\xd9\x12\x03\x0f\xe0u#yK\xdc\x15)\xfb\x87\xfa\x9d\xbb{P5\xcf3\xa448H\xf6\x0f\xab\xb8\xed\xe1\xe5\x8c\xc9\x98g\x12\xed\xb6O\x9f\x17\xc9:'\xd3\x0fvT\x89\xe2c\xdec\x93+\xb0\xdf\xe8,<\xc7\xbb\xc9zW`*\x1b\xf8\xb5\x8e\xc4k\xc9U\xe0s\x94\x0b\x98\xff\xe9\xb20\xd7\xef\x8c'\x93\xcf?\xe8~\xd8>\xb5\x9d\xf1d\xfa\xd5\xfb\xdb\xe9\xce%\xd2\xf1\x0f\x1eYR\xb1r3\xb7\xf9}\x07\xa7\xfb\xe1)R\xf4\x89\xed\xdc\xe2\x06\xea\xb69`\xea`M\x1f\xf4\xbb\x1f\x9e2~\xf5\xc1\x9d\xe9z\xcbn\xa1\x0b\x1b%n\xc2\x03\x01o\x1e`\x18\x8d!x\x0e\x13\xfb\xb3\xd2\x8d\x9f\xcdQ'\xcf\xe5\xa6$\xbe\xccs\xb9\xed\x8c?\xefN\xdb\x1f\xect\xc95\xf1m\x8cR\x16\xe0m\xa8\xe2[\xf7\xe5\x8b\xf3\xef\x7f\xf6\xfa\xcdk\xbc\x87j\xe1\xa5\x15\x8b\xdf\xf6Kb\xdf9\xefw\x99\x03W\xd9\x15\x7f\xbb\x99hE\xcc\xd9%\x08\xb7M\xfa)\xed^gl\x9d\x9f\xfbQL:_$\xe7\xc9\xc2\x8b\xc9\xec\xfc\xdct\xa7\xe8\xae*\x05\x8dc\xff\xc6\n\x83\xe6C\xdbf\xb3&\x18\x03\xd2\x96\x85\x87\xac\xe3\xd1\xa3\xdc5\\\xa6I\xe3T\xef\xe6Y\x90\xa5\x0e\x0b\x1e\xc6c\xc6\x90;\xcf\xbe\xce\xfb\xd3:?_F3/Y\x9cSF\x7f\x9e\xc7\x94;?\xd7\x1c\xb9\x14\xbf\xf4\xf2\xf6\xdc\x16\xb5J\x93$\xa6\xa3<\x17\xc1\x1cl\xc5\x83\x0b\xa4\xb33Q\xa6\x0fJ\xde\xca<\xc4P\xbe\xdau\x99\xf4\x85\x7f-\xbf\xba\x82\xd7]N\xd9\x8dU\xe12\xfe\xa0s\xff\xe3\x9f\xce\xfc\xda\xc2i\xf9\n;\x8e0\x90\xc6\xfd\xa0\xe3\xac\xc1\xb1\xa61j\xf6\xb2X\xf9\xe6a\x16;\xa8]\xde\x89L\x18\xeb\xbb\x10\xb2\xdb\xc8\xe8\xc7')\xd7\x08\xf7\xfa&L8\xb8/uh\x12I\xc6\xd3\x07\x12B\xb42\x08\x0b\xd5\"\x89a\xebe\xe0\x93\xa6\x89\xdf\x08\xb9\xf4Bo\xccPH\xbb$-;\x14\xc1\xb6l\xba;\x8b\x04i\x1d\x8c\x1aE\xba\xebh\x8d\xa9\xda\x0bl\xc4k\x15.t:\xf9\x1c\xb9\xd0\xbb\x13\xbb\x15\x93\xf4\x974\xf8\x90\xc7\x13+T\xb6\xe3p:\xee7q\x9f\x87\x1cI\xee\x8b[\x1e\n\xa5t\xa5\x9b\xb1\x0f\xdf\x93Mw\xb2:\xad\x18q\xca\xae\xb9E\xc7\xa7\xd5n\xb7%\x0c\xe1at\xc6\xb4\xe1)^\xb3\x0f\xc7\x01\x9dm\x96\xe0~\x83}m\x1e\xed~\xe3hM\x18\x14\x8bT\xa5\x0e?P\x99n\x96\xdd\x95\xfb7\x12#3r\xb3\x1b\xa1\xa9\xb6;\xf2\xd5Q\x8clb\xb1\xac\xdb\x12\x80e\xcd\x96\x00\x17Q\xb4$^\xc8!\xa7\x94\x0d\xf0T\xae\x16\xb2\x9d\x94\xae \x93\xc8F\xf7\x90)\xb7_\x8c\xd2&\xc0\xb5\xb8$\x1b\xa8\xee\xbf\xdd.0\xd6\xf4-v\xa1f\x03\x16\xdd\xd0\xef\xbe\x101QO\xd3P\xd7\x80\x95\xbbe\x86\x1brv6\xcaoW\xf5\xef\xb7\xedv\x8f\xf6\x1c;\xb4\xf7v\x0f\x9c\xad\x8c\x90\xe63{_\x7f\x1f\xeaPw\x18\x0b\xed\xc3\x83\xc696,s^\x80q\xb3\xcc$\xd0zE\xe0!\xdd]F*\x0c\xb7\x02\xbci\xad\xbe/\xeaH\x04\xb5\xdc\xd5\xd4\x00\xfc\xaed\x84\xe1*\xc3\xda\xbe\xcb\x1f>\x8e\xc4\xf6\xc6\xe9\x14/lx\x86l\x17\nT\x85\xd0^\xfa\x94\xe0\xe4\xd3a\x14\xe0}\xe4Jp\n\xde8AQ\xdc\xa7\x82\xaa\xaf\x91\xc7\x01\xee\xa3Q<2\xdc\xa1P\xe2\xf8p\xbd\xeb\xd1\xde\xd6\xa8 \xc8l`\xa2\xf8\xfd\x928\xf4\xe8\x11\xa6*\x18\x0f\xa6\xec\xd6*\xfd\xde\x9b\xba\x0c\xd8\x9fR~\x96\xb7\xa5\x18\x8e\xa1z\x04J)Af<\xd4Ub<\xdcu\xd6\xfa\x87\xd5\xfbF\xe2:\xa1N\xe5\xd5W\xd5]\x83\xa69\x14wx<\xddd&H\x98\xf8]|e\xf8\x18<A\x05\xcfa\x04-O=c\xe6\x9a\x81<\x88A\xab\x12\x1d\x98)iK\x91\xc1 \xe9t\x8c\x1aZ\x0c\xd5<N4\x87S\xda\xde\x9c.\xf0\x92\xad\xee\x92\n%\xc8\x10\xc7\xcbqoJ\x91\xbbe\xd3o\xa8k)\xc2*\xb4\xfa\x86u\x03\xd1\xbd\x13h\xb7\x13x\x02\xbe\xb1Wk\x18\x81-\xba\xe6hsa@\x1e$zmx:\x83\x11v\xbaah&\x82B\x0bI\x87-\xc4\xf5\x96\xbd\xae\x1f-\xfd\xbc7\x85h\x06>\xba+`i3b=\xe5\xa3\x0d{\x0e\x96\xbc\xc1(M\x0b\x17f.\xac\xd9\xaep\xe1\xca@1\x91\xee\xca]\xbeAO\x8b\x99\x0b\x0b\x17\"\xb8\xe5w\x0c\xaf\xe8\xa6\xbc\xa9\x1fA\xcd\n\x8a\xb7\xee~\xfak\xbc\xad[]\x91\xeaA\x94Yy\xb6:\x8b\xdeC\xdel>L\x91\x8d\x85dZ\x96\xcb\xfd\x0f\xdea\xb91\xd1\xdf\xcd$\xc6\x07j\xeb\x9e\xa2\xa1>|P\xbf\xaf\xf7b\xea\xf7\xaaV4$\xd5\xbd\xc6 \x1f\x9b\x1e\xf04\xc4\x17D\xf4\xcbh\xae\xde\xd7\x04I8\n\x0d\xb5@.\x1dQF\xe7 &\xfa\x042\x16C\x9aO\xabW:\x13\x96\x11\xbd\xdd\x0e9\x06Q\xa8Z\xbd2\x0e\x10)z<\x13?\x85F1YH\xc9\xf7\x13\x8c\xcd\x8cX/\xc8\xee\x1e\xeb=\xd5\xf6zz\x83\xe8^\xbf\x8a\x12\xc8{\x95@H>\x17\x8e\xaa\x885\xe7\xf0*\".U\xb1\x00\xbdI\x84\xad\xeb\x99\x08\xa2WuOY\x94K\xc5\xdeM\xb5\xc4L.\xc18v\xb5\xc8\xd5\xfd5\xb0B>\xb9q\xe1\xd2\x85\x95\x0e\xfd)\x9a$\xdalT\x17\xf8\x84h\x9e\xbc\x83\x11\x9c\xc3),`\x08\x9e\xf6\xddk\x18\xc1E^BW\xc7\x19e\xf4\xb4\xa2wT\xacY\xc3)\xcc`\x08\xef\x1c\xfak\xa6\x16\x7fA\x8b\xd3Z\xaf\xe5\xe2\xd7\xa6\xe2\xcfD\xc5\xd7\xean~F\xf9\xb9\x8f\xd62u#\xe3&\xf5\xe5`Q\xad\xbe\xba\xd7\xcey\\\xe23\x0c\xd5\\\xb3\xbb\xf2\xf6Zgy\x85+T.\xae\x04;s\\8\xa7\x909S\xfc\x06\x9aU\x1bB\xc4\xa1\xefJ\x0f\xd4\xb1\xb5\xec\x10\x1ea\x90|=\x8dz\x0d#8Cer\x1e\xd9\xc8:?g\x89\x0eg\xe7\xe7\xa6\x0c\xd3_\xc0\x08^H\xaf\x91\xeakzj\x87\xf6\xbe/\xea\x0e\x83o)\x8e\xc3)\xa4,\x984*Vk2H\xbe\x84\x11|\x81Z\xd8\xa28\xd1\xcbD\xc6\xc9\xbe\xb4\xdf\xba\xf0R\xcc\xe3J=&n\"\x03\xb5pQm\xb5\xf6L]\xbe;3F\x95\xd3qc\xec\xb1\xfe\xd4\xb7{\xbc\xaf\xf5\x0b\xc9\xbe}\xbf\x90\xaa\x8c&;\x88`\x01o6\xb3\xd31\x99V'\x83~2\x89\xbey\xb3\x19\x06\xb5* \x94#2\xaf\x8eLq\xe0\x88\xca\xbe\x1a\x99v~\xab\x93\x1b\xde\xcf\xe2\xb3\x91D\xc4\x99i\xe8l\xc48\x7f\x9cbXs[f\xf3t\x8aM\x90\xa6&\x8c\x08m\x8acx\xac\x8fi\xac\xb8\x9ad\x06\xa9\x81\xbbE\x1d\xeb\xa5\x80\xbd^\x95\xdf\xfb*_\xa7\"\xc0@\xe5\xfe9\x8b\xfe\x1e\xd3\x15WytI\x1c\xf8\xc8K\x15G\xd5\x92$\x80a\xd7k%\x81O\xbd\xb5N\x0c\xc8\x9f\xbfB\xa5v\xb5\xc8\x8d\\\x849\xb6T\x8b\\\xcaE\xce\x88\"l\xacJ\xcfQ\x97^-r^*\x82\xca\xf4j\x91\x0bE\xee\xf9^6\x9f\xab\x1d~W\x996\xef\xa7\x02\xf2\xaeZ\xe8z\xe3@\x94g(\x17\x9c\xc25c\x0b\xaf\xe7\x1b\x07\xfe\x13\xb4:v\xe1\xda\x85\x17.<\xab\xa2~\xf2.\xc0\x08|Z\x1d\x96\xef%\x04\xde\x0d\x158p\x06\x98\xcayA[\xa3r\x9e\xd0\xdb[`\xcf_\xcf\xe7 I\x8b\xe7\xecw\xad\x00B?)\x06\x10\xbb\xc0 vy\xf4T\xf6K-\x8f\x1d\xbd\xd0w4\xb7|6\xf5\xb6\xf5\xc2\xa6\xc4=\xc0\xab\x1e\xec\x1bqtY\xbf\xb1\xb5\xa5\xda\x1a\xc2\xd7\x06\xf8Um\xef\"\xbb\x9d\xba\xd0\xd6i\x9d\xf1\xedE\xed\xdbi7\xf4V\x84\xe9/\xf1\x1b\x06jY\x91$\xf1.9\x98\xff0T\x7fc\xe8\xf4\xaa\xbeYfYR\x83\x88\xe6\xef\xcf\xf4\xef\x0bQ\xcd3\xbcvi~\xed\x0b\xe6.P\xcd\x1d&>\xb9Xf\xd3\xfa\x13\x0ch\x8d'\xbd\x96\xd0P\xa0\xb4\xfaE#\xf6 \xe9\xed\x19\xd74\x98\x9b{\x9b\xd7\xf5\x16\xe7\xc3 \xaf\xc1\xed\x08\xe6.<+\x0e\xa2\xe6\x86_b8\xc5\xd7\x88\x88\xaf\xd1T m\xe0Zy\xf0Y\xa1\xb1q\xe1\xa5az\xcf\xcd;\xba\x10\xe3\xcfD\xccJ:\xa83\x11M\xb6\xf4\xa2^v\xbc\xbb\x11\xdb\xe9\x16 3\xf5\x94\xed\xae.i\xdb\xca\x87<\xad\x0e\"\x8cA\xf5\xa5\x89\xb7\xaf v\x85\x15\x8e\xdbm2\x85\x11:\xf5\xa7\x95\xcbq\xce\xb7\xa11\xfbv\x86W;65\xa1@\xd3\xb0\x8cx\xb0\xd7\xd3i\xcc\xfa\xaa\x08\xf5@\xda\x03\x9ewO7\x89\xa8Q\x81G\x10\xa8\xf38gv[\xcd\x89\x123\xef\x19S\xa5.1m\x82M\x1c\xc9\xd2\xd4\xf2\x8d\xf4\xa8Hm\x00#X\x9e\xc0\xba\xc6\xe4\x81\xb9\xb9\xc7k\x83]\xa0e\xfb\xa8\xb1\xc0\xdc(C\xc9\xcbn\xe1lh\xe3\xa0m\xcc\xd03YG\x13i\x1b3\x96[\x88>\x96T\x0c3\x0d]\x14\xe6\x82V%Bg\"+\xea\xd8\x0f\x8dCO>+T4\xf4\xe9il\x0dO`i\x9c\x99K\xb4\xa7\x88\xf91\x98UV\xe8\xce\xb80L_\xe6\xe4\xfa$\x1fox\xae\xf0\xfc\xbb@,J\x11\x7f\x86\x90\xd9\xf4H\x8cP\x86^\x89\xc9\x8c,\x9b3\xce\xe1\x94\xf6p4b\xc7y\x8fW\xc2P\x13\xeb=7\x9b\x9cQE\xa3\xe7 \x171\xf1\xde*OT\x83\xf0\x0d2L\x94\xb2\xfd\xc2\xb7\x1d\xfdF\x16u\x14\x1f\x0dI\x88\xbf7\xa6\x89\xbf@!N\xaaU?\xf5\xefP\xba\x93\x8a\xa9\x03\xba\xa0\xfb\xe6\x1dm\xad\xdc\xc9\x80\xa7lS\xa0\x8c\xd3\xdb\x96\xd8\xf0r\xd8\xf5\x0b\xfa\xecBV{#D[\x16\xdb|'\x97}\xc7\xfc\xd0\xd9\xd4o\xc0\x12\x13\x99)\xe7?(\x82o\x99\x88P\xa6\x91\xfa\xeb\x0e{=}\x0c\xca\xbb\xfbN`\x10\xe1\xc8\x85\xe0\xce\xc7\xe2\xbd\x9e\xfe\xbe\xd0Qc\x97\xd4ZE\xcd\x11\x8b\xefnpHc\xaa\xc6\x08o`G.\x84\x1b\xdc\x0ehf\xb2\x1a\xbd\x816^=)\xc5\xa7\xcf5KR|\xfat\x1c@\x1bX\x8c\xfaqh\xf0>\xbf\xfbl\x9b\xf2\xae\xe8\x8c\x11\n\x0b]s\xe6\xf92y\x11f+\x96\xb0K\xd5R\xf0\xd7.I*\xf1[vfNT\xddEV\xca\x0c\xa4#\x15\xc2J#\xa9\xe5\xc6S\x18V\x0c\xfe.\xc46\xcb\x1b\x94\xd7\xa6\x0dO \xd5XD\xb8'\x1aMh5K\x0c\x0c!\xd0\xe3\xa4\xf7-#M}\x92\x83\x9e\xc8\xe9/c\x91\x9e\xe0f,\x0f\xbf\x86\x89a\x8cN\xf4\xe2D\xea\x15\x8d\x83v\x1b\x13\xc4o@\xc1\x9aB^7N\x84\x81\xb8\xdc\xfd\xa6\xe6\x9eAy\xdc?\xd4_B\xd4'\x0dQme<\x81X\xbf*\x82&\x06\x1b\x9a\xee.\xd7\xf6r\xa8\x8e\xc4\x85\"\xec\x84\xb2\x92\xe8D\x83\xa99\x02\xa3\x00\xca\x9e\xb7\xd0\x19$\xd3\x96ZWJ\xb5\x96(\xbci\xcb.P\x0e\xbe\xbd\x859\xfdoI\xff[\xab\xa5f\x98\xb3\xfc\x94\xb2\x8c\x1c}\x99\xae\x8d\xca0\xba\x9c\xa1r\xce-\xa3\x84\x87~)<\xbe}\xcb\xcf74\xbb\xeb\x8b\xf2\xb3m\xb1*\x90m\xdf\xb0.\"8BUS\x01\xb6\xd6^LB\x0e\xc0\xf7\xd7\xac S,I\x05\x0b\xd5P\x05\xf8Z\xaa\xd2a\xe2\xda\x8d\x0bW\x0e~\x9f1\x03\xf7\x8d\x9e/\xcd\xee\xbb\x8b6&'\"-\xac\xa0\x17\xe9\x89\x03\xb1\xc8\x8a\x12\xea{\x17\xdfy+\xeasS\xec\xe96\xa2\xce\xb6\xdc\xb4?\x0c\xb4#\xe0w\xbab\xae\xa3\xf8\xb6h\xd4\xdd\x15\x1a\xa6\xa4\x1d\xfd\xaa\xec\x16\xe9',\xc3d\x82\xc5\xf4d\xe3|\xfa>^F^\xba;\xe0\xb6w$\xe3\x95\x87\x07{\xfa\x87/\x85\x86E\xf7\xa4\x7f`|dj\xacP\xd9\xe8\x1f=_z\xab5\x99\x99K\x98\xda\xa4\xcfJ\x8db\xa6\xdc\xb1\x0e\x83*o\xea\xeb+\xe9\xeb+\xcfr\xf3G\x05^\xe8\xee\xd5\x07D\x01r\xfbGu58\xae(\x0f\xd0\x18R\x81 \x03H\x05,<(*`a\x0b\xa9\x80\xd1\xfeQ\x85q\x9bG\x05\xfcC\xe2\xbd\xcd\xfb\xd1\xea\xbb\xdbm\xc1\x88o\xc1 '\xf8\xf8\xb3\xd5\xca\xc6tW61\xf7\xc6\x1d\xd9\xec\xcf]#L\xa6fu\xe5F\xfb\xb8F\xf3Ul\xf1\xbeb\xf3\x03\xbe\xcf-6\xc3\xa5d_tr\x18\x1b#\xdd0\x9a\x9177k\x06S\xab\xc0tQx&U\xeba)\xca\xb1\x9e\xb4T\x8f\xc6\xb5\x80\xd2\x10vs\xb8\x98\xe0\x11\xaf\x1a-O>I4~\xba^\x1da\x14\x9f\xfa\xc4\xd3W<M*o=&?\x9b\x051)\xfd\xb0\xad,\x0d\x96\x96\xd3\xa5\x03\xd3\xf8|\x89Ono\xb8\xbd\x85\x0c%\x9a\xeeE\x10\xce\x82\xf0\xb2\xf4CT\xa7\xad\xa7&\xd7\x14>\xb6+\\Q\x95\xfe\xb1\x98S\\\x8b\xb3\xfbG}'?Zn\xce\x15\xfa\x86\x03Z\x7f\xa3\x03\xdav\xb2eu\xe9P\xf7\x14\xcb \xe3U\x7fx\xa1=\x1eO\x0d\"YHE\xb2\"\x85\xbct\xc8\nq\xff\x97U1-\x9eF\x8e\xb9:\x98\xa4\x8fm\xeeU]\x19\xd2tm;\x19b\xa0<\xe5\xbfQ\xfd$\x99\xbbF\xa0W(\x11>\xc2\xdc\x92{{\xdb\x9cv\xa9\x06E\x8eD\x8e~\x0c0\xe0\xf2\xa1nu\xed\xa6\x99\xba\x9a=!\xf22uW\x1bR\x9b\xca\x92\xf7\xa2\xb1\xd2\x90\x07\x86\x84\xd0\x067\xd9\xbdA\xd5W\x92\xfbP\x0e\xaa'4\xeeC9\xa8\n]\x89^F\xe3N\x94\x8as\x06=t\xf9v\\\x81b0\x0e\xbb\x1axg\x8d\xd0\xa8\x02] 4\xab@g\x08\xad\xe6\xdf\xa3\x07#\x89 \xb2L'\x1a\xb1\x84\xee\xae+4[\xc7\xf8\xbf$\xe4\xd8}\x87\x1dJ\x82\xd2\xbb\xc8\xed\x8b\xd7\x02,\x12\x95\x8a|?\x8eVABD1J\xae\x93hyElV_V*\x8c\xc2FQ_\xc6\xceD\xa5\"\xb9\x90Q\x14\xf3\x9cB\x87\xda\xbcA\xf5\x87\xd2P\xe7c*.;\x96\xb6sM\xc69\xc4>8\x05\x9f\xa2\xba\x9a*\x93\xc7?\x10^\x12Z\xfb\x1e\xdaT\xe7\xb5\x96r\xcd\xca\xa9\xdc\xce\xe4V\xa0\xab\x07\xa7\xd3P\x85\xc6\x03AWE\xbe\xca\x86j\xea]\x0e\xca\xebo\xa8\xc2`\xfe\xafV\x91\xe3\x87\x81\x94\x80\x96MT\x92U_mGovw\x1d;\xb4\x0f\x1d\x17,\xb1&\xa6(5[\xdej\x94j\xe6S\xfc\xf0\x15\x9f\x91\xf4\xe1+\xe5\xcb\xf0@\x15\xf7\x8f\x0c\xa1\xd4\xb6\xb7D\xe4\x82\x87\xb8\xbf\xe7\xf2\xdb)B\xb5\x1e\xd6\x18E#\xaeeW\xb7>p\xa6\x91\x8e#\x9d\xba\x94\xa9Kx~\xb4\xd8\xce\x1cSX[\xd8\\\x8a\xa9\xb9B`\xba\x01\xa9\x0f_\xb57\xd0)\x0b(\xbb\xd4\xc5\xaf\xd2\xad\x86PhV\xcb3\xfewXe\x8bs\xd5\x04\xbf\xdc\xf0\n\xa1A\xc6\xc8\xf8\xe1\xd1c\x99A\x13\xdb\xc7\x95%\xcdW+\x85\x9e;\xd0\x05%\x90Z\x90L\xac\xec\xd4\x90\x07\x17\x89\xd8\x9bh \"\xb8\xc0s\xb8\x85\xe5\x03\xc92\xfd\xa3\x8dn\x83\x1bL[\xb8\xf0\xba@I,\x9d\xa7^|\x96\x86\x1a\xc0)\xa6\xc1mJ|k\xe8\xfe\xce\xf8\xf3\xeex2\x9d\xb6o'c\xfbthwN'\xb3\xb6}:\x9ct'\xb3\xb6s\xea\xdc\xdac\xeb\xf1\xd4\xb1\xe9\xb3\xd3\xd6d\xe0\x8c?\x9fL\xa6\xb7\x93I\xd7\xf9\xf0\xd4\x99\x0c\x9c\xc9\xf4\xd6>\x1d\xe1\x1b\xb7\x93\xf1d\xea\x14_o?p\x9cj^3:\xdc\x9d\xc9\xc4\x9eL\x9c\xd3\xea3\x81\xebGN\x83\x1b\x8a\xe9\xc8\x02\xc5\x0c\xed\x1d\xb0\x9b\xb8\x98N\xf6y4#\x98RV:\x98X\x16r\x14\x11\xfa,.O\x17s\xa2\x8cLGa^GLq\xab\x94C\xff\x83>f\xa2E\xe5y\xaa3A\xc9!%\x18D\x8f:\xd16\x8bH \x8a\xce\x89f\xbf\xf9\x1a\x99I\x06C\xec\xab_\x05\x90,y\"\xf8\x00W5\x84\"\xb4\xa2[\xf1\x14\x026 \n\x8c\x11x\xdf\xf3\x17\xfa\xb8\x07w\xa6\xb4{\xbb\xfa\x83\xc6\xdench\xc3\x1ab\x86\x1b\xb6\xc5\x8f\x92\xe2\x8eK\xdct\x00\xbc\xcf\x11\xad\xd4\")\x9d\xc8\xef:5}\xc35\xfc-mj\x8a\xedL\xd8\xd4\xf4,\xe8\xf0\xae~\x00\xb9X\xe0s\xcb\x07\xe5Q6)\x82\x009\xb9\x15j\xc9\xbcd\xa0\xdd\xf6\xe1 \xcck\xafg'6\x19\xfbS\xa3\xdf\xceR\x90g1\xf7\xd8\xbf5=k\xa1\xbf\x8d\xfa^\xca/s\x97\x1eh\xc5\x074\xac\xd1>\xb6F0\x87SX\xc2\x10Z-{\x0ef\x031g\xa1s\xfc\x9b\xd9k\x17\xe6\xdc\xbekKq\x13\xef\x8d\x87\x06$\xbc\xbb\x97\xc2\xae\xde'doW\xef\xbf\xa2\xca5\xd9\xa6\xc8c\xe8z\xc4\x9cD\x98G\x01\x06\xbcj\xde9w\x9e\xa7\xbc@\x9d\xc2Z,1)\x87\xa8\xaaz\x8c\xdeu\xca7\x91J\xee\xd3\xfd\xb8\x12\xb9\x0e\xee\xd3\xd9\xbd\xdd\xaa2T\xa8\x83\xf4\xa9\xb2\xf7vu\xc4\xe8S/]tW\xdeu\xd3\xb0\xcd\xc2\x98W\xb3\xf5TMA\xcb\xcb\xd5\xaa\x9d\x8aO\xde\x95\x88\x98\xc1+\x13I\xcb#\x93B4\xc9\x13\x9e'\xe8\x0d\xeeA\x1b\x12\x0c\xbc\xe62^\x1c\xd0\xf9\xdeu\\H\xee\x8f\xb6\xc2\x15V\xd1o\xe44V\xf6eb\xde(!\xb4\x01\x05\x9e>\x0c\xa1\xd3wN\xf06K\xd4\xe9\xc0\x10\xda\xed\x88%TW\x90\x85N\x13\xb1\xe9\x91\x0b\xbd\xca$Et\xa4\x9d\x86\xbb\xc7D\xdb\xdbm\xce\xc4_#\xec\x98d\x12\xf8 \xe8\xeb%\x12\xb1w\xe9\xd2\x12\xe8\xa0\x10N`\xd8\x18\xc2\xc1<\x82=\x9d\xa8\xd2\x87\x9d\xaa\"\x0b\xe3\xbbt\x0f\x8f\x0f\x0f\x8ew\xfb\xbb{G\x07\x83\xdd\xfe\xfe!\xd9\xed\x1dm;\x01\xb9\xaa\xfb\x94\xf9^1S\x01\x13\xe3\xa8\x04\x8b_;\x01{\xcc\xc2\xbeu\xe8\xfa\xf7\x1d\xf8\x10\x1d\xeeR\xb1SR:r\xfc7\x92!w\x9d\x0b%^3\xd7&\xe8\xb4\xc3\xaf\xbcW*-\xd8\xf9|\x92\xb4o'I\xfb\x83\xea)\x83Ex\x1ew\xda\xd3\xde\xf5\xb8\xd79\xf6:\xf3i\xfb\x83\x9d@\x15Vv>\xef]\x8c{}\xcdS\x9f=\x8d\xc6\xbd\xce\xa1\xe61\xe5\xe0k/N\xc8\xcb0\xddvI\xe8\x8e\x91\xa3\xbd #`\xbeqR\x95\x10\x05\xb6yc\xa1J\xd3p=\\\xe0\xbf\xd6\xc6\x91\xe6\xd7\xcfN\x8b\xef\xecJ\xb3^\xe8\x89\xd9\xc9\x9e\xdd\x10\xa2\x9b\xa1T\xea\xbd:J\x11\xe4\xae\xa5\x19e\x19\x8f\xda\x95&\xd9e\xb1r2j\x95\x00\x87,\xac6K\x14\xa3\xdd\xc4xN\xf3E\x118\x85\xb9\x9dv\x93e\xe0\x13{\x80j\xa7S\x18\xc0\x10\x8e\xe8\xa8=\xa9X\x84}\xba+r\xf7\x15uK\x03\xb7\xdb\xab\x8a\xd8\x99V \xe7\xa6\x8f\xbdf!\xc9\xcc\x01\x19\xf7a\xb2\x12\xe5W\x86iC)4\xaf\x86\xb2-\x8aGL\x8c\xa1<J\xe2XM\xec\xaa\x86\x1e\xde=\xcc\xa5\xb6\xdb\x953-\x1e\xf1\x83\x1a\x11\xa7e\xb3|\xf2\xa2dE\xd8q\\h\xb5\xee~\xede\xcf \x12\xef\x1d:vl\x18x\xb0m\x1b\xfaH%\x1b(ek\xaeM\x03\xf3\xc2\xc2\x86\xef\xe1&\xbew\xe0\xd8[\xe9\x9e\x9b\xe5\x9aFyV/\xf5@U\xf2\xa1\xa7\xcbH\x0e\x0e\xe8\xe2\x8e\x8b\xf1\x1b\xba8\xe7\xbah\xcf\xa0\x8b\x06y?\x8d)\x1d\xf3PP\n4*+\x10\xf2d\x1f\x89^hG\xe3d\x8ail\"q\xccT\xdeQ]\x1a\x14M \xdcG\"?<\xbc\x07\x8a\xe4eB\xc3\x06\x0b\xa4\x18paN\xf3C\xc3!<\xb6\xc3\x82\xbd\xa5\xacR\xb5h\xbe\x82H4s\xd95\x03\xae\x03F\xb1\xd5\x95\x83>VE\xf1\xfcc\xd3\x172.\xdaf\xf0\x04\"\xe6\xe8\xd4\xc7\xb8q\x81\xed\x8d\xb3)\xbbH\xe6\x9c\x98\xf5\xd1\xa6\xd8\xe7\xdb\xae\x84\x9eN\x18\x82\x0d\xa9\xea\x98L\x08T\x1b\xac\xa7\x86)\xe0\nd\xf2\nT\xef\x1f\x89\x83\x93\xf0\x8d\xd0\xd2\xdeV\xab$\xd5x\x18\x1b\x86\xb1\x8e\x08\xf7e\xae\xe0\x18\x96\xa2\xdfz\xb9\xbe+\xe4\xee\x9f\xe1\x98L\xb7\x8f\x99ne \xc1\xec8~*\x99/\xb9\xd3\x05\x0b\x97!\x9clx<\x18\x92|\x1a\xcd\xb2%\xb1\\\x85\xc1,32,E\x8es\\\xbcs\xbd\x8a\x82/\xc9\xec\xcc[\xad\x97\xe4\xe38Z\x9d\xf9\x0b\xb2\xf2`$=|\x1e\x13/%\x7f\xe3\xd3O^\\c1\x16J\x0d\xbf\xfe\x8d\xd5\xb2\xf2R\x10\xceI,\xfdN\xd4\x9a\xb9\xa1\x1bH\xd7Wk^\x9eh\xf0\xa9\xaf\xa4H \x90\xe7\x87\xf6\xde>=n*H\x85\x8f\x0ev\x9dM\xa3\xb1\xc8|\"\xed\x16\x13\xc9e9\x95\x1a\xcc\xc8\xdc\xcb\x96\xe9\xb0z\xab\xf4;\xea7\x81kj%\"\xf3Q\x8e\x04&\xaa\xcc\xbb'\x90L)\xf3^= \xb2\xa2\xe7d\xe5\x05\xcb-Z\xc8\x12\x12\x7f\x97\xb0\xd5\xe8\xfa\xd1j\xa3\xb6x\xbf\xceg^J:i\xb0\"\xd6\xe6-\xa2\xaf\xc5G^J\x9cn\x1a\xbd<{\xcd\xbc@m\x8d\x1dBs\xda\xc5\xcd\xb9y[\xbd\xcd+=\x9f/#/}\xe0\xaa\x830%\x97\x0f\xdea\x1eD{X#T\x88\x8fX\xe5<\xee\xb6t\x8c\xe9r\x94fQ1\xf8\x0f\xb5\xfd2\xba\xab\x07\xd0\xfaN\\\xe5\xfel#\xb0{.\xc4]\xe6`\x11\xcco\x1c\xadB\x03rC\x8b\x9a\x82H|\x02|>\x8f\xe2\x95g\x88\\EI\x827\xc6\xfc\x91\xe7\x16\xb4!\x98\xa2\x0b\x90\xf6\x12\x92\xc0K\xec]\x90|\x9c\x85\xbecGx\x82\xb2\xd1\x1ek\xfd |\x1bF\xefBxs\xb3&C\xa0\xf5\xa5\xd8\xbb\xba\xa9\xf1M\xc40\xa7J\xa9^u)\x0e\x85\x9e\xf0%\x17\x97\xb2\x9fB\x1f\x8a\x9c\x14\x94\xc9\xe7E\xc6\xfd)\x15\xde\xe4\x9f\x98\xc7\xca8{\xcaR\xe8\xe2\xc5\x81\xf0\xf9\xadY\n\xb4yw9\xfd\xd0\x17\xf1\xb0\x08\xbf\xc4\x17\x10\x8dg/\xf0\xf9\n\xba\xdel\x16\xd0\xc9\xf1\x96\xdfo(?\xc7\xf2AJV\x86\x02h\x14\xe9\x06\xa1\xbf\xccf\xe43\xe2\xcd^\x87\xcb\x1b}\xd1\xb5\\\xf4\x87q\x90\x12ZV/\xe8I\xd3\x9f9e\xdc\x99\x11\xb2^\xdePz\xb6\xfe\xeb\xe4\xc6\xc1#\xff\x07\x1f\xc4dnma\xa5\x94\xe5\x8a\x92ou7\x08g\xe4\xfa\xf5\xdc\xb6\xfe\x8aU\xc9\xcc >\xefM\x16\xa2H\xef\x7f\x1c\xb0\xe0\xb7\x91\xe4\x1a\xae\x176kb\xec\x82hc.f\xc3 \xaf\x8a\xdb6^\x1c{7*\x97\x01\xedy\x01U0\x85\xb7\xf9\xc8l\xed\xbe\xe2\xc1\x06\x14\xcc\xae\xba1\xca\x9fY\xe56\x8b\xfc\xc9E\xf5+*\xd8-\x1cX\x8c\xaf\xa6t%\xe8\xdf\xee\x8c\xacc\xe2{)\x99\xe1\x8d/\xf9Q\xccq\x0d\xd8\x05\xb6\xea\xe3w\x02\xbf\xf0\xf9\x1a\xef\xb9\xcfh\x81\x11\xa46-A\x85B\x83\xd0\x8f\x13\xcd\xb4N\xbe\x03\xb3\xcav\xe9\xd7\x8c\x06W\x90\xbe\xee\xebQ\x01\xaa\x11\x0c\x94y\xf4\x1d\x97\xc5,\xb0o\\\x8c\xb2\xb6\x82\x11\xf4O`\x05O`\xef\x04V\xed\xb6\x03\xb3\xb1U\xee\x12\xa5\x95+:\xb4K}\xb78\xd2\xcfTT6\x91i\x8e?\x0c\x19\xe0\x94\xa7\xb2 \x12v\xbdl\xde\xf5\xc2\x9b\xd7s\xd4\x92\xb1\xaf\xdd\x95\xb7.<5\x9a\xee\xe6\xb2\xf8\xf3:\x9f\x08\x18*ME!\x11M\xe1\xd7\x07lj\x9c\xdas\xfa\x94\xd2q\xd2%a\xb6\xc2\x10\x8c\x82c\xcb\xdf\x87|\xa9B\xca\x0e\x97\xc1\x97\x04\xbb\xe7\xd8\xec5g\xdc\xa3uX\xf3`IX\x8a\x8d\x08\x1d\x9b\xd0\xa5I\x17/_U\x12\xdbU\x19\xbf\x9e\x96\x89\xe1u\x13V\xfe\xd1#\xa6\xb6\x17\x00\xf4h)\xb8\x01{\x8e\x1cF\"C\x8aO\xc6{\xd7x\x04\xd9\x88\xa1\xb2K\xcb\xdf\x1aO\x8d\xb6\xe1\xa9x\xff\xa5\x86\xa7z\xf8|\x13\x86\x19m\xc90\xa3&\x86\x19\xd5\xb3\xf25c\xba\x9b\xf0\xd4\x85\\4\xe7\xa9\xfa\xb23l\x99#\xb4\xbe\xc8\x15\xd26\xfd\xb3\x9b\x9ag\x97(\x86]\xaf\x96\xfa\xc7\x94\x86]b|2\xfd\xf3s|\xbe\x8e\xc9<\xb8\xd6\x97\xb8\xc8kH\xd6\x9eo\xa8\xe6\x1d\x9b\xda0[\xe9\x9f_\xe7\x87d\x03\x03\xcfj\x188\x9a\x07\x1c\x96\xda\xfc\xc7\xc1\xc5\xb3&.\x8e\xd1Y1l\x8c\x15F\xa9wI'\xc7b\xfe\xb1\xf69\x9c\xc29\x15\xcb\x87\x16\xba\xb6;\x94A\xb8p\xc1\xf4\xf37c\xfa\xdc\xba^-\xc3\x043e\x9f\xd3B\xf8\x13o\x03^\x18\x04\x1c\x99)\xa0[\xe5\xdcD|i\xe99\xc5\x07J8\xf0\xef\xed-\\\xd2\xff\xbez\xef2\x08\x0f\\'\xff\xa0e\x18\x96\xc0e\x97\xc7\xe0\xcd\x85\xbf+\xee\x95;u+\x1cbIy\xc3R\x8dZe\xe4\x0c\xf43\x17;\x90\xe5\xa4\xa2\x953?>\xe4\x08U\xfd\xbe\xf8h\xf8\xd3\x8c\xb6>\xdb\xbau\xc1V\xb6n]L\x03/9u\x01%\x9c\xa2\ns\xab\xe7^\x9a\xc6C\xb81T\xee\xc2\x95\x1e\x1b)e?3\xb8XB\xc1\x8a4\xabb\xdfsY\xce6\x9a\x15\x17\xce\x0c\xebb\xdfsa\xb6j\x9f\x97R\nm nk\xd3\x12\x01\x9f\xfa\x17zq\xbbA\x9c~F\xc5ii\xcf\xd0\x9d\xb8\x14\x1b\xf0\x85Y:\xa5}{Q\xb9jh?ct\xa3\xf5b\xfcL\x12\xbcooa-?(Dn*\x8c\x1b\xa6\xab\xd4\x0e}\x8b\x11\x89\xfc\xab\xe8!\xff\xdd\xa58\x1b\\di\xed\xb2\x89\xcf\x15\x8f.YF\x05\xac\x0b\xa54\xda\xd9\xfc\x971\x05K\xf5\xf3\x85\xe8_-\xd3\xae~\xde\x8a\xb78F\x99)\xbd\xf8\xdc\x8c\xf3Q\x0br\xf8l\x9a\xb3,\x14\x9b\xbe\xa0#\xf8\x82>\x91\x80\xcb\xf13<\xf7\xe0\xdf\xf2\xa3\xb7\x14\xfe\x96\x0214f\x82sQ\xbf0\xb5\xa9^\xe4O\xb9\xb3#P;\xef\xca\xce\xe9\xf2\x0cV\x84A1\x00\xbbT\x86\xc1Mv\x19\xe9s\xc5\xe3f\xa6lt\xcd/\x94\xd1\xe3%\xa5\x14|\xa7 \x19\xf5\xa3\xd0\xf7R\n\x1fJt\xf5e\xc3\xb4\xd5\x91Fq\x98\xe4\x0d5\x11\xea\xb2\xb49\x04\xebYx\x93.\x82\xf0\x12|/\x84\x0b\x02\x0b\x12\x13\x83T@;\xedo\xca\x11\xaa\x0d%\xa6s+%r\x0f\xc8g6\xa0\x91|\xe6\xae\xcb\xf8\xbf\xe4\xae\xb1\x12h\xc63&\x94\x17\xf5\x1d]\xd4w\xecT\x96\xb0\x80kl\x85o\xe0\x14\xc6\xfa\xbe\x1b\xfb\xfd\xde\x85kZ\xd1u\xb5\xeb\xef\xb5v\x90\xa5\xd9\x17\x81\xca;\xeci\x19K\xd1\x08Z\xd2s\x05\x82n8vX\xb5:\x01\x1aJ\xfc\xa5\x17{\xb4\xc1!\xb44\xd7\x1b\x83pF\xc2t\x08\xd6$\xad\xdc\xae\xab\x9a\xcb\x00o1\xd4X\xa5h\x7f\xa2\xa2?\xcb&\x13W\xa5<\xc7\xa9\x06\xab\\\x0d\x87\x96<\x05\xf6\xabn1PxK\xec\x0f\x9c\xeeY\x1a\x13O#\xfe\xa3N\x8c~\xb1\xa4\x15\x83\x8a\xf5Jo\xf5\x04\x919\x80\xd24\xcd\xc9\x01=\x05\xd0\xa5\x11\xc7\x1e0\xd1!\xbf\x92k\xb3\xf7\x9c\xee\x17Q\x10\xda\xe8KgYU\xdb\x9a\xf8$\x94\x8c\x19\x84oC4\x08\x1b\xbdD\xd3\xb1\x142\xe0-\xb9I\xec\xd4\x19\xf7\xa6SdyI\xf7\x9c,\xc9\xaa0\xdbr\x80\xa0\xdc\x91\x9bC\x02?\xcaB*\xfd\x84\x12\x0c1\x89\x0d\xab\x0c\xa3-{20%q\x9c\xadS\xcc\x00'\xc0\xfa\x19\xf3\x99\xd3\xbe.4\x14\xf0S2\x957\x95\x87\xf9z\xad\xcd:\xde\xf24l-\x02\"y\xab\xf5m\xa8~r3g\x1b\x1e\x8f\xac\xc7\xd0f\x0epmxl=6\xbe\xf8\x1e\xbd\xa6\xc7dj\x14,7 \x93\xe2z2\xc7\x08%\x94\xad\xf8\xe0\xa5\\\x81B\xfa\xbb\xb9Pv\xc6\x18\xd1\xca\x0c\xf7\x1a\xc4'\xe9\"\xcd\xa48\xb6\xb6\xf9\x0f\x0cty\xee\xcf\xbc\x14\x95RK6\x9d\xb6\xf5\xa45~\xfe\xd1\xb37\xcf\xc6\xf4\xc0)J8\xb9\xe3\xde\xced:\x99>\xdd\xb9t\xc1\x9aN\xa7\xd3\xa7y\xf1\xa7xx\xb5\xa6\xd3\xa7\x16V\xcdW\x13Q\xdf\xe7\xa1k\x96\xd2=\xaed\xc3\xf8\xc5\xf2G\xbb\xb7N\xc1\xc2\x01!T\xd9YpJ1\x90\x0f\x19\x86\xa2\x0b9\x15\x816\xf4\xf1r\x81\xbdd\x89\xb5]T%\xb5zyo\xd1\x13\xd3,T\xbc\xc77no\xa5\xc1\xd5\x8865\x0b%L\xea\xc6w\xf3\xfe$\x9a\xee\x189\xb3~F)E\x19B\xa4\xdf\xd49}\x18\xd2U\xd3\x16\xc9\xc5\xfdd\x08s\x83F.\nS\xe4l\x06e\x13#aC\x08M\x9d@\xca5\x04\xaf\xeey\xd5e\x15\x94\xa9xo\xe0#^\x1d\x1f)\x11\xf2\xc2HL$\x97&\x8a\xcf\xba\x08\xf1\x82 \x12\x89\xcc2\x0f|\x0c\x9fK\xa7$\xbf\x9d`\xa6\x9a\x81\xd14\xce\xd3X*\x95\xd5\xed\x1d\xe1$W\xbc\x94,\x82yZ\x0d\xa8#\x7f*\xc6=\xadKX\xb5|d\x07N\xb3\xc2\x8c~p\xf25gp\xf1\xd1K\xe9z([\n;F\xed\xf5)\xce;\xe3yB\xa1f\xf3\x94\x0b\xa7`=\xd9\xa1T\x8d\xffn\x83\xf5\xd4\x92Kq\x06\xfa\xe8\x11\xb4BZz\x12\xf2\xc7\xe8W\x8c\x17\xc9t\x1b\xcf\xbc\x8aQ\xa3\xd9\xa3\xd5\x92\xf1\x04\x9dr\x8b\xdf]o\xbd&\xe1\x8c\x8a\x0d\xae\x8cO]\x06\x0cJ@\x11\x1d\xccn\xf5\x1c\x17Z\xbdMH\x04]4\x8e\xc9\xf9\xac\x95\xe7K\x9a.i\xa2\x8a\xdd/,\x07\xa7`\x01++=CI\xca\x02\xcb)\xde\x8dq\x85D\xf5|\xfaqo\x08\xd8\x8eiM\xc4\x02\x97\x96\xa5\x15W\xb7\xa4xC.\xa8\"#\xae\x0c\xde\xbd3]\x87\x82\x1a\xa7;-\xcd\xd0\xd0\x0bD\x1a\xf4H6\xa8_9\x0d\x0b\xd5\xb52Q\x16\xf41\xc5\x08\x00\xdd\x04eh8e\x99Px\xaax\xb3\xb5\xc3\xb2\xcc\"\x9c\x89\xcc\x0bW\x00>\xa3\xfc|,A\"\xda\xac\xf894\xb6\xb1\xe0q\xe4\xcd[ef\xe6\xfe\x0b\x863\xe4:}\x13\xf8o\x99\x13J\xba\xe5N\xbc\xaa\x95\x0f+\xc4\x0e\xf5\x1e\xf6\x1c\xda#\x96\x8c\x12\xf2\xd8\xab(\xc9 \xb7\xc79\xe7\xd7V{\xa2\xd0\xb2\x89\x08\xe3\xc1\xd2L\x1agv\xa3g\x94\xf8\xf8]\xb2\nR\xdb\xa2\xd2\x99\xa5\xb5\x9c\x8a\x0f\x15P\xd8\xfaoHT\xeb\xe6\xf1\xa6v\x1e=\xfb\x8a'\xa0[\xbb\x98\"\x91\xb2\xbd\x9e\xa3\x0f\xed\\\xd3\xca\xa5q\xf8\xccf\xdf0\xcb\xe9\xb75\xcb)\x95\xf58\x88\x843\x0b\x7f\xc6\xc4\x9by\x17x\x00\xa7\x04H<\xf7\x97QB\x0c\x91\xee@\x7fl\x00\xc3rT!\xc2M\xa0y\x1c\x0b5=$p\x94\x08\xbb\x92j\x02q\x1b\x8f\xee2\xd4\xc5s\xae\xbe\xe6+\x12'\xa8\xd3\xb0\xfa\xdd\x9ea\xd7\x93\xd0\x8ff\xe8\xe1\x19w\xc5w<W\xff\xe0\xcd\xc7\x9d#\x9dk%\xc4\xdd$\xf5\xc2\x99\xb7\x8cB\xb6\x0b\x13\x190*=w\\\xb81\xa8\xb7\xac\xd3\xeb\xd5\xd2\xd29\xae\x8a\x0fW\"%\x9b.\x02\xdfD\xf3\xfc D\x19\x95\x0b\xd6\xe9S\xe4C\xdc)I\x1czNu\xe9YL\xc2&\x08\xda\xaeGY<\xa2\xf0\xc8\x18EB\x12\\\xadK\x9c\x82r\x1c\x03\xf1A\x0d#n\xd7K<\xa1\x9c\x82]\xc6\xd5\x9e\x0b>Fr)\xbd\xfa^\x8a\xd9\xd4%K\xb2b*\x85\x02\xf6\"\x87\xd5b\x9f\xd8\x87\xfa\xe1\xa2\xc2a\x08\x99\xcd\xb4\x81E\xecD\xbc\xc8\xc5\x82\x15\xe6\xbe\x06&%\x0c=\x0dm\xe2\xf5 \xc2\x9a\xcb\xf2@\xa2L\xe5@\xba\x88\xa3wH\xc61(\xacm\x85Q\n^\x92\x04\x97!\x99A\x1a\x81\x07,\x14uK'?\x88\xcf\x95\x94\xaa\xbb\xde\xdePdG\x96\x143\xe6\x8a=[\xea-'\xaa\xa1[\xaa\x81\xa9\x80\xdaT\xc0\x10\x94V\x0e\xbc\xdfD\xdb\x08\xaf\xdc\xd6\xc9\x8a\xe2c\xa2R\x86#\x1f\xa5y\x9b.\x89\xc4p\xd9\xee\xa1Ccv<\x91\x01\x9a\xca\xb9\xe2 \xed\xe9\xc6$S\x9dW!$\x96\x91=\xffU\x8a\x1a\xba\xbbg\x88\x18*\x0fG\xb0\xf3\xf2\x00\xadG\xd6\x10\xacG\xdej}R!\x8a\x8f\xad\xc7\xf4\xc9\xcffQZ}d=f/\xad\xa3Dy\xf4\x04\x1f-\xd5w\x9e\xe2\x83\xcb\xf4\xa4\xa0\xa3\xd2\xb0\xb7\xbal\xc5\x89\x17\xa7lH\xbcru\x8f=~d=y\xfax\xea\xec\\\xd6LF\xa5\xc2pL\xaaI\xb4`\xb8m(\x8a\xd2%\xba\x93\xd2\xbc\xf3[\x11\xfd}\xa7\xfb\xe2\x8a\x84\xe9\x8bU\x90\xa6$\xd6)\xf9\xd5\x83t\xccc\xa1.\x02\xe5Z>\xfd\x84\xf6\xee\xbec\x07.&\xd3\x0d\xba\x9f\x15\x14\x93\xb6x\x80\xc0\x1f\xc6A\x9a\x03\xf7\xf6\x8f\x11\xf8Q\xb6^\x92k\x06:\xe8!\xe8M\xec\x85\xc9<\x8aW\x1c\xdaG\xe8\xf7\xbd$y\xb3\x88\xa3\xecr\xc1\xe1\x03\x843\x9d8;\xd8\x05r\xc2\x8f\x00\x9d\xc1j'\xffJ\xca#o\xd2\x9c\x07\xfa\xd3h\x8a\x06a\x1c\x0e\xbb0\xc5X\x0dZ\x89\xe9\x1b\x18\x1bh\xede \x91\xbe*\xc7&}\x93\x91\x96\n\x85\x05\x1f\xc2\x1ac\x92d\xab\xd2\xf7\xdaSY\xd8\x8d\xc2\\$\x0b\xd0\x81\x0e\x01\xb1\x17\x84\x96\x0b\x11B\xce\x83\xe4,\x9d\x05\x11\x957\xe4\x81\x11$*\xb7\xb7`\xb3j\xa8\x18\xe7\x82\x87\x02\x11\xfd\xcd\xc46\x17\x92\xaa\x16\xef\x8a\x874k\xf5M\xf3\xebi\x07\x9bac\x19\xe7\xb8)\xa3c\x9b\xcd^\xb2A\x85\x86{\xe03\x92\xa4qt\xc366\xff\xb1i\xb3\xbe\x9en\xa3\xaf\x90\xed\xb8\xdcN\x1cw\x97A\x92\x92\x90\xc4\xcf)\x1f\xc2\xfd\xe4\x82E(3\xb5\x1c\xc1_\xab\xf4V\xdf\xe2\xdc\x88&\xab\xe8\x8a|\xc2\xdb\xa9\xac\xb9\xf2PZ\x7f\xf5Uy\x9d\xab\xcf\x8a5\xd7\xbe\x89#\xa2\xc2\x92\xaeU\xf9\xa9\xa9\xd5ym\xabsm\xbd\xc5\xd3\x9a\x9d \xc8-\xc3\xe4R?\xab\x10\x19\xdb\xe7\n\xb6\xcf\xf3w\xca\x10v\x94\xa1\x04\xc8b^\xceM4\xdca\x8ec5d]\x7f\xab\xaf\xa0\xeaG=\xa7\xcb\xc2\xe3\x96\x19\x9e0\x1e6\x86\xc8\xa9\xa2R\x8ee\xa9\x16\xcbZ\xcd\\\x0d\x84\x00i\xa7 %\x19#\x8e,E\xbe\xb9Y\x13.I>\xf7B*LR6\x03\x1e\xf8K/I\xc0K\xc0\xcb[\xd2\x1c\x0b\xdf\xf3\x0d\x94\xcb>\x0b\xe2\xcd\x80E\xa3\xe1\x90\xd4\x0b\x96e\x08?\x0e\x8c\xaa^\xcb:$I\xd5\x8c\xe6\xf5r\x9a\x10m\xf5\xf3A\xb7\xa21S~H\xaeS\xa6\x8eR\xc7\xa9\x8af\xf2P\x9eb\xc0\x92|\xb8\xa8\xf5\xc1\xdb\xc0\xc3\xd2\xac\x90\xf2\x94\x10\x17\xdam\xa9\x9a\xf2l\xb8\xa5\xb1g!\xea\xbe\xbf\xfd\xe1\xe7\xfd\xddd\x0ex\xec\x0ci&\xd0\x11\\\x1ec\x051\xb6\x19\xb32b\x13}\xe7\xe2xQk\xddy5\x15'\x1a\xda\xa3.\x9d\x91Z\xbf\xc3\xbe2\xc4\xd3\xd2\x80\xaa8^Y\xf2\xa2%:\xbd.t:RU\xda\x98\x85u3\x82\xb1\x0e\x9bf\xa4\xaew\x0d;\xb0\xdc\xda\x17Q\x106\"\x1c\x9b\xffQu\xfe\xc5E\x0f\x8d\x17s)\xean\xdeY\xe6Zl1m<\xae\nO\xcdM\xe7\xed\xc4\x81\x10\xda#4\x81\x13\xc3\x9a \xaeR;\x7f\xe8{u\xcf1\xc5]o\xb9\x8c|\xbbg\xf0cV0\xa6\xd0\xf57\xa0]13xj\x0eXl\x08\xde\xde\x0f\xc2\xc4\x9b\x13;\x85\xa7O\x9f\xa2v2+O\x9fG\x97\xf3\x04\xb2\x13\x07'.\xc36\xd8\xacF\xfc\xe2\x04^\xde\x8e\xd67,\xb0\x01}\xa5-\n\x96\xa2\x18dl\xd2MS\x1c)S\x9c\x03\xdeSI\x0b\x03s\x06\xdd L\xd6\xc4OK?\xba~\x96\xa4\xd1\x8a\x91\x89\\9\x93/\xd0\xb8ZpZ\x87\xecb7\xe7/i\xd4jlXC0\x92\x1c}\xb8\x1e,.\x05z\xcfMo\xec\xe2h1^\xe3\x89{c\x7f$\x1d\xfb.sw\xbd\xddF+\x90\x88\x0fS\x1cu\x13\x92\xbe\\\xad\xc8,\xf0\xcc\x1e\xae\xdc>\xc3|\x8cx\xcab5&\xb3\xfc\xf1k\xaej\x007\xdb\x98L3\xc0M7iw\x16\xf9\xa8(3\x97[\x97\x12B~_ \xc9k\xcc*\xa7}`\xcc\xa7N\xab\xc2\x8clk:'o\x82\x15\x89\xb2\x14NaM\xc9\xb5[D\x8c\xe7yk\xa6\xccq\xfa\xab\xf7\xdd4bW\xdb\xf9\xe9[$\xb6aQ\x8b\x9a\xe8\x88\xf8Hf\xa0Z\xca-\x7ff\xb6&\xaa\xaf\xf8\x98\xf4[0\x94Q\xa7\xae \xb4\xa1v\xd7Q\x92~\xca\xb3\xf9\xb3\xac?\xc1\x8an\xc93?\x0e\xd6\xa9\xd1\xddG|\x04\x11\xd79\x08V?x\xcc\xefF\xe1\x8a5Woh\xcf\x85\xbf\xbc|\x13\xd3\xab~\x88\xde\x84 \x7f\x18o(f\xc0\xb6,\x17\xac\x0f-~\xa8(\x1a\x0e\xab\xa1\x94K\xb5\xe8W\xc2vP!\xc5\xab~\xbe\xf0\xc2\x90,\xe1\x14l\x1b\xa3\xa7\x90wP~\xe4t\xe9\xbc\xf7\xf5\x03\xaeE\xae\x99\x9d\"\x057\xa9<\xb7\xc0\xd3\x08;1(M\x8a\x01\x0bQ5\x86\xc6E+\nc\xe2\xcdn\x92\xd4K\x89\xbf\xf0\xc2K\x82i\x92\x97<N\x08\xd7\xbc\xdbV\x82He\xe1\xcd \xca\x8e\x969 \xe0E\xb6\xe9\xaa@=c+f\x04#]\xb5\xc7\xdb\xa0\xd7\x8c\x85\x93\xd7\xd7\xc2\x84\xac\x80\x1f\x8c\x9f/\x82\xe5\x0c\xfd\x83\xc533\x1e\xd1\xb7\x98j[\xbce\x9e\xf8\xcd\xe7\xa9\xa0v\xf6\xcc\x85\x9e\x12HU|(\xe9@\xed\x8c%\xf3\x8c\x0f(\xb7\xc3`\xa7\xb1\x17\xce\xa2\x95\x8d\xcer\x1fXn9\x8fW\xad\x07#\xe9&Q\x16\xfb\x84\x87\xd9\xa3\x18\xa3\xde\x8egB\x1d}\xd8\xe3\xfa.\x14J\xc4m\xf9\x0c\xf5y3\xbb\xcd\xe1,p\x9e\x88\x8de\xf2p\xa4\xfb\xd8\x9b\xcdP\xd7*T\x14\xb8+\xab@\xdb\xe2\x9b\xceB\xf6\xd7\xea\xa3\xde\xb7\xeb\xa5\xa9\xe7/\xb0\xa4m\xe5\x1b\x93\xebc\xe2\x8d'\xa0Ld2*\xc22:cX_\x971\xa9|\x116^kI\xa9\xd6\xaax\xf1\xa6\x9c\xe8\x88\x9c\x816\n\xdai\x9d\xcf_IL/\xfc\x8d\x95\xdb\xb7\x1d\xe8\xf3\xbc\x19\xbd\x13\x08\xe1\x89\x9c>\xa3\xddvD\xbe\x8b\xe2\x0e.Z\x06\x0d\x97\xbd@r\xfb\xaa\xdf\x85\x94\x1f_x\xfe[\xe3qV|\xbc\xf82\xd1\xf9\xdb\x89\x8f\xe1\xae=\x14l\xc8\x1f'S\xa6\xdf\x8e\xed\xc4q!i\xb7M\x08\xb7fG4y\xed\x16J\xd9:\x1f\x82\x85y\x89Yzw\xf0\xab\x81\x9b\xa1\xa1\xca\x1a\x1f\x15T\x8e::\"\xa1\x9f\x94\x86\xbb;\x02[h\x17\xeb}\xf4\x1a}\x9e\xe7\xdc\xf5\xa6\xaeL}\x9a@\xf1im\xb8{\xe4O~:\xed\n4k\x16p\xc4'\xc6\xf7(\xd6\xd5\xf7^|\xf2\x14P\x0d\xba\x0b\xdd\x07\xfd\xae{f\xdf[\xdd\x87\xd4\xf9O\xea>\x0d^\xda\xd5\x0f\xf6\xa9\xbfm\x9f\xe2qo\x93\xbbU\xf2\xe7.\xfd\x1a\xdc\xa5_.\xc4\xe3\xfe\x8f\xa3w\xbbw\xef\x1d\xfd\x7f\xf0-\xf7\xb1\xd1\xd5[\xf7A{\xfd\x12U\x0e\x1aw\x0f\xddG/Q\x97J\x98\x84\xa3\xbc\x00\xcc\x83\xd0[.7\xa1\x0f\xccp?\xdf\xe0\xbc`|\xba\xa9\xdfoE\xb7g[Y\xc8\x02\x02\xcedY(!\xcby\x11\xa9?\x0fN\xbc\x08\x12\x0c\x83=\xc4\x02\x92\x0d\xb8\x949\x14y\xb1\xd9\x15`\xf3[Q9\xfb0\x90M3\xf1E\xdd\x03\xe9.#\xdf[\x9e\xa5Q\xec]\x12)\xa2\xa3:)r\xfeTm\x855\xef*\x10aQ.\xb7\xaf\xe5GBa\xc8sn\xa07\x99\x95\xc6\x19a\x87\x7f\x1e\xd2.t\xbai\xf4I\xf4\x8e\xc4\xcf=\x8d\x01Y\xfe\xb5q\xf0R\x10wal+\x8c>\xe2A\x88\xd0\xc0b\x8a\xbd\x0d\x92\xb1\xa9\x1a\x15\x13\x8a\xb14\x9eapm\xb4ai\xe5\x12\xa1m\xa1\x85\xa8\xd2\xb5\xaa\xef\x91\xee\x1e\x81\xf8\xd0*b\xcf'\xa5*\xe0\x14\xfc(L\xa2%\xe9\xe2C\x16\xc0F\x80\xdeyq\x88g%\x1c\xa4\x1aD\x0f\x8c;-W\x170R\x93\xa2I\xaap\xc4j\xda\x87\xc6\xad\xb4\xd1\x1e\xd2+\xe2J\x19\x96\n\xb0\xe4\x06r\xac\xcb\xa3\x14\xda\xfb}\xed\xad\xcfH\xdd\x1e\xdc\xb6G\xe9\x82d\xde\x8b\n\x1c\xa2+\x15\xa9\x01\xc9\x0bG\x12MpS\xac\xb8\x1b\x84\x0b\x12\x07\xd8yt,q%\x98\x1d1'\x93H\xd2\xab\x9f\xa7\x92\xcbH\xddd\x01\xa2\x06\xb7DT\xdb\xde\xc2\xb3\x86.\xcf\xe1F\xcbS~k\xd0\xbf\xc3K\xfd\xfe\x81S8\xc5\xdc\xf1}\xc9}f\x93\x1a\x9a\xec\xcd\xfdc}\x16\xc4\xfe\xb1>\xcf\xcd\xdeAs\xac\xf6\xeaBqK\x04\x0bH-\xc7P\xd2\xeb\xcc\xb3\"zU\x8c\x97R\xd1*g\x13)\x8a5\xe6\xd6\xcb\n\xebWau\xe8z\xc9M\xe8\xf3\xe4\xadYw\x1d\x07\xab \x0d\xae\x08\x9c\xe6.0pZn\x02\x87u\xbc\xef`6\x0c\x1e\x03\xca\xd6\x948pl\x82w\xe5*\xcf\xa4zi\xb1C\x07S\x0e\xc8\xc0\xfd^\x9f\x01\xe9\xd7\x01V\x93w\x15\xfd~\xec\xfd\xde.\x82\xd6,!\xa7\x00\xee!p\x16$\xeb(\x07\xf6\xd1f\xd3]y\xd7\xcf.sX_\xc0\x04\x80\xbd\x19\x939\xba\xa7\x90X\xc0\x0f\xe8\x8e\xa3\x88\x92m\xb9k\x9a\x10i\xef@\x17\xb9\x1du>\xdeE\xa2\xa2\x12>\x99/#9\x97\xf5f\xe8\xc4\xd1$H^y\xafl\x8c\xfb\xcf\xd2x \x96\xa40\x82W\x18\xc3\x153H<z\x04A\xf2q\x10\x06)\xb1y:\xa5\x143\x81\xf0\x0c\x14[\xbb\xe55Si:\x15\x07\x0e\xeamq\x8cIp\x19\xe2\xd2\xef\x1dlFi\x9a\x9b0\xb2ga\xc9\xca\x1b\xd6n0\xbd\xd3\x14\xa2=\xb79\xda}\x96y\xb0#~w\x06\xbdm\xd3\"l1\x0c\xb3g\xa6\xb4\x98n\xb1\xe2H\x14\xe4l\x1b)\xf7\x9c`\x99~\x1e\xa2\x9f\x12\x85\xd4\xf3\xd7#}\xe6\x8b\x81>\x0d\xd8\x9e\x92\x07\xc6\xcb\xc9l\xfd\xe4\xe8\x02\xd9]\xb1 v\x89\x0b~y\x81\x03L\x9dBe\x1f\xbb\xc8?_&\xb9\x8eDv\x04\xb9\xd1\xb8\x83\xbf^\xd3\xc6\x13x\x8c\xa5\x1f\x83\x17\xce\xe01/\xfe\x18|\xe6\xe2sA K\xd0]\xfc\x92\xa4\x0b\x12W\xb5\xe5|\x19\xcbazr\xd1\xc8:?\x17\xd1\x19\xce\xcf-\x16\xaf>\xec\xce\xa3\x18\x9dp \x0cYf)\xcf.B\xe3\x93\xfc[X\x0c#\xe24\x9f]\x0c\xcbh\xd5 s\xd7\n\xa8\x8c\xd1(A\x87c\x82q]R\x1e\xa8\xddW\xee\x13\xb1T\xce\xe7\xe7\xeb8\x9a\x07K\x12\x9f\x9f\x03\x8f\x14^@0$\xa6\xdf\xcd\xd63/%/\xc2+\xbcJ\x9d\x87\x9fx\x90\xbd\xd3\x88\x93\xbb\xba\\\xbcBU+\x89Y\x17A8S\xb1TS\x90.\x95\x8a\xb6r\xe2\xff\xd2\xc3\xa4x(y[\xf1u\x7f\x99\xbc\x08\xb3\x15\x89\xbd\x8b%i\xa2\x07\x9b%j\xd0\xde\x84\xa2\x934g7\xd3\n\xbc\x1f\x18\xe27\xacK\xa5vk\x0ew\xc5n\n\xec\x90\xa58\xf3\xf9q\xdf\xb3)\xae\xa1Ux\xdeM\xa28\xb5\xb5\x04v\x8d\xa9W\x11\xf9\xd7\xb8\xdc\xc3\"\xfbL\x83\xc6}>N\xa7\xc8\xcf\x99\xc4\xed\xd2\x01\xca\x93e<\x88\xf1\xde'\xecE\x96R\xf8T\xd4\xe3\xbb\xb0t!\x1c\xa7S\x17R\x91gD{\xa3\xdctX}\x10\\\xde;\xacRR!\x81\xea\xf3E\x1c\xe9\xd3E\xec\x1d\xf5\x9d\xee\x8a\xa4\x8bh\x96\xe8(\xed\x9e\xf2\x1eg\xd6\xc7\xba\x04\xd3\x9a\xbd\x80g\xc2r\xc9\xf9\xa6\xbbfYl\x0cff,?\x96\x1c\x14J\x89\x1d\x94\xf0\x9d\x0b\x94\x81\xa3J\xcc\x80\x19B\xc9*hL\xdd\xa5?H\xa1o\xb7\x0bW.\xdc\xb8p\xe9\xc2\xca\x85s\x17.\\x\xe7\xc2\xb5\x0bg.\xbcp\xe1\x99\x0b\xaf]\xf8\xc2\x85\xb7.\x86\xb1Z\xe2\xe9KO\xf0\xaf\x98T\xdc\xe2\x020%\xe5\x9cw\xe7\xbai\xc6\xabS\x89\x9eK25\xc5\xfb3\xcct*\x831\xb8\xd3\x08\xce\xba\x97$e\xd1\x87\xcf\xba \xfd\xba\xc2\xaf\xcc\xac\xe1b\x94\xce3f>q\xdcB+\xd3\x8dI\x12-\xafH\xcc\x82\xcc\xbe\xe5\x9c%\x87\xd2=\xfd\x05\x8f\xbc\x144\x04a\xe1\xfc\x97\xfbU\xe5\x04D\xa5\x1e\x94\x1fcp3\xb4\xd6\xbf\xb5#\xa7\xe8\xd2\x88\xf1\xe8\x1b\n\xa4Et\\\xf2%]\xad\xfc\x1c\xfe\x82\x16\xcb\xb8W\xf2%I-\xdc\xb4\x11\xf3\xc5s\\x\xa9\x8dhO\xfb\xc0\xd2\xf2a\x94\xe4\xc2\xfbp\x9e\x93\x13v\x86\x8f\xc6\xbd)\xeaQ\xaap\xd1\xe7\x11\xcb}c\xd6\x08iF&D\x8b\xd8\xb6\x9e\x07\xb1\x9f-\xbd\x18\x82\xf0*\xe2\xaa\x1c\x17\xac\xe7/?{\xfe\x83O\x9e}v\xfe\xf2\xd5O\xbd~\xfe\xec\xcd\xcb\xd7\xafLVwZ\xeb\xa5\xad\x89_\xfe\xbe\x08i]3\x8d\x0f\xd4\x13\xbe\x1a/\x99=2p\xe1\x99\xbc.\x89X\x17n\xc1\xa7bH\x99|\xbap\xe5\xe4y\x07\xe9\xfe\xa8\xd5\xb6\xe1\xe1Y\xbf\xaa\x86\xa1\xb2{\x02\xb5h#\xae\x12\xe4\xa8[\xe0\x90\xc1\xa5\x10\x8dm\xba\xa0\xc9\xa7\n\xbe\x14\n3\x18V\x90\xccqMh\x9ew\xfa\x81\x17\x89\xf9\x03\xa0\xbf\xb0f\x99\xf2\xfb\xe3\xb8VD\xcdu.\xa7\xfa\x7fXR \xdf\xefD\x8e\xc7\xf5\xc4\xb8\x0b\x8d\xd3\x14\xd4.kP\xa6\x06\xba\xcc]\xb8M\xefK\x0dj:\xf7\xc0\xcb7\x0e\xe8\x1e\x0b\xb5\x8b\x17\x88u\xa3\xe2\x97\xe2\xae\x9bi-\xffQ\x1c\\\x06\xa1\xb7\xd4Z\xfb\x85\xb0>\x84/\xd4\x87\\\xd2\x7f\x85\x91\x83\x90\xdb\x8b\x9fj\xd9K\x92nr\x0d\x94\x0f\xf2m.\xe7\xbd\xb5S\x07\xb9\xdc)\xdc\xb0@\x0f\x1c)R\xba\x18*\xd5S[^x\xc9\x16-\x1b\xd6Q\xe3\xda\xa3i\x8a\xf1\xdbMZ3\x900`\xfd\xd5\xf7\x00\xe7\x04\xfd{W\xccM\nF\xf0\x12EU\xee\xbe\xc0~\xbc\x96\xd1\x82=\xb1P\x9a%\xba Q\xea PL\xd8 #\x8fP\xac\xbc\xd4\x0f\x03\xcf\x83\xe7\xf4\xc8'\x89Fn\xde1l\xc5\xdatb\xa3R2\x9f\x9aK9B\x9dC7\x7f\xae\x0ey\x81F\x0f\xccI&\x83\x9f\xe5`>K\x85\x1b\x95\xfdZD\xf1X\x94T\xfa\xfa\xb8\x15j\x7f\xe9\x18\x870S\x1f\xe4g\xe1\x0d&8e\x92-\xdf\x9ej\xb3\xd5\xed}\xa1\x8aj\xe6{,n9\x87\x8e\xba\x86l\x0b\x86\xb8\x05\xc3\xb2\x8cFP\x92 \x99\x8c\x96q)\xb3j7\xde\x92\xa7\xe7\x8an^\x1bg~\xe5*\xa1iki\xc8G\xc1T\x18\x17\xc9[\xa8\xa6=w1\n}P\xefF\x8cH\xdf8w\xbc\x1b\xc5\xd09\xcf\x1d\n~'Mk\xcaW\x8dNhA\xddB\xd6Y\xba\xa3U\xbd\xcb\xf5\xb7\xd6\xcf\xac\xbb\xf0\x121\xf7\xda\xee\x16XP\xd3q\x8e\x18\xb4\xaeT\x93pum\x7f\xa1\x0b\x8c*\xeb\xbe\x86\x10a\xd8*#\x89\x8d\xec\x0b\xcdSN\xbb\";\x13\xa7\x1d\xb5\x15\xe4D\x91\xfdN\xf7\x0cyEd_\xab}\xcer\xc8\x83\x9c\xf0\xfb\xc7\xba\xfc}\xf4\xe4\xaf?\xe1\x0ft'|\xd4Kv}o\x9df19K=\xff\xed\x9b\xd8\xf3%\xb6B\xe48\x1d\x8d\xf6\xa8\x90;#2u\xa7.\xf7\x98\x07\xe5\xfc\x1fj\x89\xa4\xa2c\xd2\x9e\x85#;\xe1\xa1\xb6<\xc6\xd4x4R\x91\xb8\x1f\xed1\x89\xc8\x14\xc9n\xe1F\xa2l\xd8\xf5\xa3\x19\x8a\xddxO\x87\"\x1a-CJ\x02\xcf=\xd6hs\xa3\x02\xe3\xc0\\I\xc1\xe2\x84ln[`\xb1l\x88\xad\x8f\x882\x8f\xa2!X\xb1\xf7\xa5U\xa5Qj\xd9\x0b\x8a\xf1\xd6\xec\x9d\xb7A\xd94\xfe\xf2f\x08\x16\xfdS\x0d-\xecb\x80\x9a\x08s\xb7]x1\xcb\xe1\x16\x7fy\x83\xb4\x81ve\xf6\xce\xc3\xf7\x1eXo\xbbgH\x8d\xaaU\xdc\xa2\x11g\xe5]o\xa0\xd41\x18\x08\x8a[8\x91\xe2o\xeb\xc2\xa0\"w\xa3\xa3n*+:Q\x1a-yhk5\x8df\x17\x9et\x1cS\xf9\x9d\x8cc\x8d\xabi\xa3\xbfN\xc8\x02\x15\xd0}\xdd\xe8{\xc1\x04\xfe\xfe d\xf0\x04\x92\x13h\xb73v\x7f\xad\xd8\xa0\xd9\xd4\xc5\x80\xb7yh\xa2jv\x82J\x1c\xb407\x8bh1\xfd\xdb0\x1c\x1e\xee3\xc3\xa1\xa4ag\xa6\xc3\xc3\x83o\xdbt\xa8_D>V9\xae\xac\x95\xdb\xd4-\x8c\xb4X^\x87\xdaE\xd5;`=\xb0>Y\xe1\x1eA\xd9d\xd1\xb4\x9d\xaa\x1d\x17\xe6f\x8c\x84\x9b\xaf\x0d;\x9em\xebzr\xa7\xbek(&oB\x1fR\x9d]A\x1b*Ks\xc7\x81\xe3\xb0\x1f=\x82`,\xec\x12\x98\xbe\xa1\xf5 f\xd6*\xfe\x1f3\xfc\xe7w\xe5J\x17nS/\x08\xf9n8\xea\xddc7\x88\xd9\x96\xc9\xfc\x96{\xa5\x8e\xd7\xc5E_1\xe7\x88\x08\x17\"\xa06r/\x91\x9d\xbb\xfal\x1eE\xd6\xc3\x18\xda\xc50\x95\xa9\xe4wa\xee\x8a\x0d\x95#b\xc9\xb6\\NDy\xdf\xceW\xee\x92\xba\"\x18\xbb\xc6\x04\xb4\xd4[E\xd7\x1b[r\x16\x9bZrf\xf5\x96\x9c+\x83%\xa7\xd2\xdc\xcd\xa6\x06\x9fK\x9dE\xb5\xac4)\xbf\xb0\xd2\x12\x0c?\n\xe7\xc1e\x86\xb6W=\xd1 \xb9mV\x1f\xf5Z\x04I\xaa#+j\x9akJ\xa2\xe2&a\x05\x84\xc0b<\xb3-\xd1\xa5\xe1RF=\xeb\xfc\x9c\x10t\x1b8\x95b\xcb!\x8c\x1e\xe5(h\xd5\xc5\xbc\xe70\x82\x99P\xc8\\U\xdeva\xe5\xb8RA^,\x1c\xa7S8\xd5\xc5[\xe7O\xe8\x1f\x16\xac\x0d=O\x11:\x821\xb3\xa5\x92i\x01\xe2\x91:\xca3V\x11\xf5B\x9f\x0c\x91\xd0o6K\xae\x1c\x0eL|J\x13\x15\x88\x88|\xcan\x0d7\xb9\x9f\xc8\x8d\xd4\x01{\x03\xaf\x91 \x97\x8df\x8fX\x8c\xadCg\xf7u\xe8\xe7\xf1|\xce\xcf7\x9c\x8a\xf9|\x88\xa2\xef\xa63\xc1i\x84^\xcd\xcd&\xa3\xa5G\x9bR,\x05\xfd\xfb-\xbb\x82X\xce8\x9dn\xf0\x9e\x8a6,\xb6(}[\x9d1\x10\x92w\xc4n\xbe\xd1\xc5\x8b\xc7\xd1\x94\x8a\xb0\x91\x03A\x11\x927\xd0\xcd+{J\xe5\xe4\x81\x88K%4\xfa\x1c\x05\xe3q\xc4]\xe40ie\xdcM\xd6x\xeb1r\xa1\xaf\xbb\xb7\x87\x96\xb4\xb8h6\xaem\x96kc\xc3:\xcf\xf8\xa6eg\n\xc4\xac\xf1~\xe2U\x1e\xd1\xa2v\xdd\x0dt\x82r\xe3\xa0\xbc\xa0\xe6\x15\xd1\xafc}\x1cx\\\xc5Pc#c\xb6!9\xd5\n\xbb\xebH\xd8\x89\x85\xc0\x13\x08\xe9r\x13\x07\xa21\xa1\x0f\xcb\x17\x1dI\xcd%8l4\xc0\xe0\x15\xec2+\xaf\xb7w\x82\x847\xa0/\xb3\xaa\xf9.\x8e\x0bC\x8e\xb6RnJ\x15\xb7\xc9\xaac\xa9\x9b\x80Mnl-\n\xe2\xb2\x08\x92\x86{F\x0d\xf7\x8a6\xb9\x89Un\xaf\"\xaf\xdc\xbf\xf5\x86\x9bVu\xad\xbb%\xdd\xd1\xfd\xfa\xb2\xd1\x8d\xaa\xbf\x14\xfc\xa4\x9fue\x16L\x98\xf7\x1d\xfd\xaf\xf7\xba@\xcch$\xb1\xab:O\xc6K\xe7vP\x85S\xc62\xb7#GGx\xe6\xb6\xec\x0b\xcd\xbc\x08o\xec\xaf\xde3]\x9c,\x1d\xd7_\xa1\x16\xaeb\xccU\x02\xad.3\xdbgq\x88\xf3C#\xadTn\x8c\x08\x9f%:\xa3\xdf\x81\xfb\n\xcc\xdc\xd5\xa9\xea\xd3_\xa3W\xd5\x88\xcd^\x9e\x9b\xb0\x12\x99\xb8h\xaf>p\x80D\xf7+i\xb05\xdeG\xd2\x0b\xe8,d\xa7\xe3\x10-\xcf\xf4o\x19%\x1c\x91\xf4\xce+\x19\xa5\xd5\xeb\xfb\xef\xdd\xedN5\xa8\xf6B}\xd7\x86iy\"~(\xce\x14\xcb\x8aC\xa5\xae\x8b ,\xc5]\xb9\xefQ\x88\xadS\xffX\xa3\x1d(%\x94\xbb\xe3\xa1.`\x9a\x8d\x94\x8a\x07\x0f\xd4\xed\x8d\xce\xd1B\xb3\xcc\x04S6\x92y\x1cUrq\xd5\x9d\xb6Y\xe8v\x14\xddq\x0d\xc7\xa8Gv\x99\x8ax\xea\xb8\xf0\xbd(Z\x12/\xb4Q\x94!E\xb8e,\xc0LA\xe8\x15\xfd\x10c\x96\xf4\xbcG\x07N7HI\xec\xa5\x91>\x90\xe3\xb1\xde}|O\xb9\xcd\xc5\xf6\xe8\xa0\xba\xa3=\xfd\xd6M\xf4\xead_\xbf\xff\xe7\xbc\xcdj\xe5\xcb*^mt\xacV\x0f\xcb\x8b\x878\x8cj\x9e\xcb\x87Q\xf5)\x1e\xe64\xf1\x17\xdf\x1bO\xf2\xe5\xa3\xfa\xb6\x9b\xa8\x10K\x8d\x1e\x94\x8d\xa6\xa4\x17\xb5\xa6$\x0c\xb2T(\xe6\x13\xa6\x98\xf7\xed3\xa4A\x9e}\xc6\x83#\x02\x8f\x16\x8eh\x8e\x0bG!\x11\x0b\xf6\xec\xe4q\xf2\xca\x95\x1bb1\xe0 \xe8\xcc$\xee\xa1S!\xde\xa0\xe1\xbb\x93y{\xda\x97P\xc4\xe9\xa7$\x85a\x11\xbf\xb9\xcdo\xeb\xd1\xf3\xb9}S\x928\xfa\x0e&+\x1bA\x8a\x17\xd1o\x0c\xd2\x10;\xd5\xd1V\x1b\xa4\xf0r\xed\xa5N\x95B\x8c\\R\xb1&t\xe0\x86\xf9\xf2\xa5Z\x07J\xf1\xe1#5$\x0cU\xa0*\xe4\x06\xb3\x05~\xc7\\\x08\xe7|\xa9\x98\x91A\xb5M\xd8\xef\xb0\xbb\xf1\xd48\x178\x0f\xe7\xe8\xe5\xfa\x8e_Ge~4\x94`\x8a\xf9\xa1\x07\xe4\x0b\x18\xc19\x06\x16\xb3\x8b\xc9i]tgQHN\x1c\xb4\xbf\x9f\xc1\xa9\x10\xe2\x983\xf0\x05\xd3\x98p7\xf6\xfc\x17\xe5\xdf\xf6\"\xd7\xa6\\\xbb0\xb3opg,\xf0\xae\x15\x9f\xe6\xebj\xa3\xed\xb6!a\x16]9Mv\xa0\xc2\xdbs^\x83\x0d8\x03\xf2\xda\xebF\x8f\xe3uQoW\xc1\x89k\x8e\x10<K\x1e}\xc2\x9d\x92Fp\xdd\xf5\x17^\xfc<\x9a\x91g\xa9\xdds\x1cx:\x82\xfd\xfd\xc1\xf1\x01:,\xc1\x93\x11\xec\x1f\xec\xf6\x8f\xb1\xfc5\x06\x9c\x1c\xb7\xdb\xe1\x94\xbb3(\xd3y\xcd\xddG\xae\x8dSxUL\xe1\x15\x9f\xc2v\xdb\x90\x08\x9d\x0e\xb9)w\xad\x84N\x94\x07^\xaa\x08\x97\xcf^fK{\xa72\x81\xf6\xa5\xa3\xdfP\xdaa\xf2\xd9\x14\xb2\xdd\xe6\xf8\xa2\x95\x07XW\x16%\xdd\x9d\x0b7\xc5\x0dQL\x0f\x92\xbfy\x0f\xbe^1R\x1c\x1dr#\xc5\xcd\xea\"Zr\x8b\xc4\xd1\x03X$*'\x9c\xdc\x8cSa\xf1\xd8lI\x0f\xdbd\xda\xd1\xca]*\x8b\xd1\xdeBa\xa3\x94\x02/\x94\xdf\xa3l\x89\x15\xb1\xad\x94$)\xef^\xd5\xa7So]\x14\xde\x8dU\xcf\xa7\xfb\xd8\x10\xe52\xadx\\\x1aE.\x92\xb1<\xde\xea\xf34\xfa\xbe0nb\x11] \xd6\xe97\xde\xe5\xf4\xe1\x84F\xd9\xd4\xa1\xb7p\x08\xdc\xab\x1e\x01\xfcz{\xc4|SC\xc3r3\xc3\xc5Zc\x8fPe>\xbfz7\xa4\x82]#\x05\xbb*\xc7\x92\x1c\xa9\xb6\xc0\xa2\xd8vx0\xdb:\x9bt\xd5\xd8\x0c| f\x8c\x07\xd8\xb3\xa2\xfbn\x8d\xccW\x89\xb0\x1b3\n8\x1b\xa7,\xcb\x1f\xcb\x9e<=q\xa0\xdd\x8e\xb5\xd4\x0b\x8b\x8e\x80\x17\x9d\x8a\x9c\xab\xf6\x9a\xa9]\xac\xef~\x17\x03\xab\xb9\xe0u/\x13.:\xd5\x1fI\x0bo V\x13\xd3\xb5\x10\x17<&.\xe2\x93~\xf5\xb4Zry\x97\x83\xd8F\xb52/J\xa4J\xc4\x08}<xN'\x83\x040\xc7\x10H\xe1p\x0d\x17F\x83\xd2!\xb4|\x96\x0f6\xb9\x1b\xab\x11\x9f+\x9dM\x1f\xac\xb3\x19\xde*G;\x10\xce\xbeoK\x11-\xb8\x16Mb\xb5\x98\xe5\xd1*|\x08i\x91\xb9>y\xfa\xf9\xf9\x8c\xb00\x94A\x14\x9e\x9f\x0f\xc1\xc3\xd0\xa2D\xe7\xccw\x1ez+R\x94\xb9\xb2\xab\x0e\xd0\xef\xcb\xea\x91\xb9\x1dT\x9b\x9cG1}\xbd\x1e\xcb\xf8\xa0\x17\xcc\x0e\x86\x7f\x86\xec\xcf\x08\x02;'\xe8\x8aR\xa4\xf4\xfb-\xb9\xf9x\x93\xc6\x0c\x8e\xe3\xb8\xf9\x08\x04!$(\xd3.\xcc:\xfc\xc5\x98L\x99\xa7s\xce\xc1Hm\xd7\x16^\xf2\x92c\x89\x98\xcb\x98YA\xa4'\xcc\x9f\xcf\x92 J\xaa\xf4 y\x8e\xaa\xaa\xb3\xb5H\xf6R\xa9N-\xc0kU\x1f\xa8\x95s6V\xad\x92\x83EE\xfc\xa7\xf2\xfa\x8a\x92\xc3\xca\xbb\x08\xe3/\xe2w\xe5-\x9e\x13\xa9\xf2\x9e\xc8\x9a\xc4\xde\xe4\xbf\x94w\x13\xe2\xc5J\x93\x0c\xc8\xdfd?\xd4\x17\xd7\xc4\x0fHR}\x93A\xc5\xab\xec\x97\xe6\xdde\x90*o.\x834\x7fo\x19\xa4\xca[\x92\x08PyWz\xc2k\x90 \x9azrAA\xa9'\x7f\x92\xd7\x93C\x94z\xb20\xf1\xa35E\x83\xea,HOx=\x12\xa4\xe4E\x82$F\xa2J\xd5\x9d/\x119\xdaFU{.\xba'\xda\xaf\xb5 \xcb\xba_A\x95*;\xae\xd2\xb1\xc0\xdc1\xb9\xe5MZ\x15\xe4\xdb\xc6\xec\xedL\xef\xd1\xad\x90Qh\x83\xe5(\x0e\xa1\xa5\xdfx\xa4x=\xdf\xb4\xd5\xa4\x92M\x0b\xd4Q.\xcb\xa3\x0cddr\x9b\xa6U\\>\xe1\xed\xe8\xb5\xa3\\\xee\xae\xe4\x86\xc7\xe0\x189\xc6\xd9r\xa7\xf4\xbd\xca\x11\x11{\xe5[\xae\x98S\x8b\xbd\x105\xbf\x10\x94\xe2\xf0\x97\x04f}\x15\xe5\x99\xd0UQH\xe5\xf7\x89\xa5%\xe9g\x8f{[G1b!\xcfP\xdf\xa0\x93\x1cR\x8c\xea\x9f\xcb\x0d\xfac\x90\xd8\x1c\xc52\xdc}4\x9b\xf5:?\n\xb1\xab>Z4\xb9\xbd\xa5\xcf\xe54\x05\xac\xecY^\x16#\x98V\xb3\x18<z\x04\xe5\"\xe3r\xa1\xf2\xca?\xc4\x90\xc5\x02*\x1eQ\xa2\xa9\n\x9b\xc4\xa4\x17\xa8\x80\xd8d\x1b\xe7\xfa\xd7\xf2F\xb6\x9d\xadQ\xa5\xe2+\xe7\xe0\xf4\x04\x7f\xb93\x10\xda\xfd\xe3\xbd;\x0f\xc5\x1c2\xe8\xbf\xaaA\x96\x92\x9do7\xc0D\x89%\x8e\x1b\x83\x19\x8bTO\x10\x11\x9cC:R\xb0\xbe\xd1\x97*s\xe2<\x9c\xbf\xec\x95\x1c\x02f\xdb\xa1j\xc4\xe9\xfa\xe5=\xd5l\x96\x84\xa4\xda\xcb\xb3x\xd3\xa8\x92\xef\x8e\x1e\x89\x88\xd6\x06\x84\xa5c\x1b\xf3nT\x18\xa7[J\x8d\xdaM\x08\xed\x87M\xf0\xcb\x08\xdfI\x08\xa6 \xe3w\xdb\x98\x05P\xfc`%\xd8\x0f\xbcq\xc6s\x1d\xb1B\"\xef\x11-\xc3\xeeLavn\xec'o\x80\xb0\xf0\x12\xe4a(\xd6\x16\x0b\x93+\x12\x84\xbaU=\xc4J\xe9\xfe\xad\xff\xd6*?\xe7\x87\xa2Qqe\x18\xd5\xb2S\xe7\x04:\x9d\x18\x93\xf9\xb4G`\xfd7\xa8V@m\xb4\x16\x13\xc8\x8fo\xd4\x82\x19\xca\xb7%\xb5\xce~\xb9\xb2%,\x86G\xd8\x9d\xc1\x98\xa9\xef\xd1\xaf\x8b\x0e4\x10\x19\x9e\xd8@\xc9\xb8\xdd\x8ek\xa2\xfa(\xe8\xba \x9f\xa8d\x92\x7f\xe0\xeb\x0b\xfdA\xf5&`PU\xf15L\xb4I|\xd4\x19Z\xd1\"\xa5\xc2C<\xcd\x9b\x03\xbc\x186t\xfdi\x1e$\x0fV}w\xc4'BwQ\xe3\xe3\xcc\xb8I\xc4'\xc8\x13oe\xf9\x8e\x89\xc6\x19^\\\xa0\xa32\xbfE\x9b\xa6%M\x03\x00\x81\x8f'\x10\xc0\x13\xc8\xa0\x03\xfd\x93\xba\xc2\xc0+\xe6\xa1\xf4PE\xc4\xf9C\x84\xc6\xcet\x1cL\x1d)\xd8\xaa\xb1{\xe2\xc3\xba\xd8\x9f\xa2 \xa5\xdd\x0e\x8c\x85U\x0b\xa4\xf8\xf0\xb6\x1a\xfa\x04\xa7\"\x13\x1doNL\x9f\xb6^}k\xd2\xa8\x94\xe7\x9a\xbb\xe4I \x8d\x8c\xee\x96\x14\x8d\"\xa6\xec\xadA#\xaf\x1e\x8dP\x9b\xb8!\x1a%\x0ex,{C\xbbmH[\xde\x90\xd3\x00\x91\x06\xeb\xb8\xbd\xe5_F0\xae]h\xdd\xce,?7>\x9e\xf2\x8b{\xb4\x1d~'\x8ecj\x87\x87\xfe\xb0\xa3b\xd1=\\\xf4\x80\xa2=\xf3\x93\xc5X&\xe3\x1e\xf7q\xc7\x07\xf4E\x17\xbcq\x9f\x03\xbf\xc5\xae\xe7}\xefO\xc7\x11\xe2xvr\xaf~;\xae\xa8\x8c-\xe0\x1d\xf0\x97k8\xb5\x99\x16\xd5\xa1n\x17\x1b\x83\x07\x8f\xa9\xc1\xe4\xac\x1e\x93=\xee^^\x8f\xebyn>c)\x1f\xd9\xc1\x06{\x81\x0b[\x19\xc5.\xf3f\xa0\xaf`\x1a\xc0q\xb2 =\x8d$,\xdd\x9c\x9eJ\xd2\x7f\x86\xe8\xe0\x8d#\x89\x9e\xd6\x93R\x9f!J\xc6\xe24\xb1\xbe\xf6\xa7\xe3\x00\x91.\xba\x03a}\x90\x9e\xe5\x17q\xf3\xce\xd0\xf7\x85\xdf~\xe0\"B\xd3g%\xd0 \xb4\xb0\x18\xb7\x7f?z\x04\xbe n\x0e2\\\xbf\xbb\x8e\xd6\xb6\xe3\xb2E\xe1\xbf\x9c\x0dj\xdeb\xbbH\xd7\x016\xd9'\x9b\x86_\xe1r\x8a,\x97\xa8\xd5\x7fG\xff\xeb\x1eRY\xc5\xf0\x7f\xcco'\xb2\x90\xb4]\x0ci\xc7\x83:\xdf\xe7B\xe2VB\x9c\xdc\xf66G9\xb4w\xa7\xf6W\xef\x91P\xa6\xf6+\xef\x15\xbb\x83\x98\x16I\x1e\xe0\xe1fk\x03\xa9\xbf5z\x18=XYt\xbe\xe3\xb4n)\x1bW\x89\xe4C\x88\xc5\x12\xb9 .:\xc2\x19\xbc\xe0\xca\xc2[PHi\xe18\xd8h\xd7\x95\x85\xac\xa6\xe0\xa1,_6K\xac\xe3B\xc8~\xb5\xdb\xa9\xf3\xed\xf0BIc\x85\xf9\xa3\x90\xf1\xb7p\xa0\xec\x0c_&Va\xe9\xb7\x86*<\x0c\xd1\xd1\xc8+\xdf\x02\xbdy\xc8S\xa0^\xc9\xa0G\xf5\xd0(\x8a\x9a\xe48\xcd|hJF\xf7<F\x1a#_\xe5\x1a\x81\\tb~\xd2L\x88H\x1b\x85\x88Z6MJl\xba\xe1@\xb6\x91\xccP+Z6\xf4\xa3\xd8\xde\xbc\x19\xe3!\xacq\xa7\x1b\x8fS\xf9tr\xff\xa3\x1e\xbbq\x13\x9e\x80'Mg.\x81gEO\x13.\x81{B\x02\xa7\xcf\x12I\x02\xf7\xc4\xc9!\xd9\xe0\xe4Pwj0\x9c\x18\xf0\xb4\x90`\xa3\xfd)\x86\xf8h\xb7\xeb\x13\xb1w\xee>\n\xc7\x15\xcd\xe09\x82\xb8\x10\xa1\x7f\x01ECM\xd8\xe4\x0dh\xe1F\x18\xce\x8e\xb9L\xcag\x83\xa5d\xc9G5\x00\xe1\xc7\xbb;\xe3<;C\xf9x\x86j\x16M\x136#\x9e\xcb\xf3~\xf3S\x1aC\xfel\x0b\xe4\xe7\xbdi\xd5\xf6\xa6\xe1\xc8@\xe4\xe6=U\x90\xf54\"\xb2W\x16\x91\x93\xb2\x88\x9c\xe4\"\xb2W\xfc\xd2\x88\xc8j\xcd\xc6\x9er\x89\x98\xae\xd4\x86\xd3s\x0f\x96e&\xe4p\xc7\xed\xe5\xcaD\\\xed\xeaw\xf4\xbf\x1e\x86\x07j\xef;\x85v\xff\xb8\n\x8f8\xfcH\x7f\xbfM $..\xcfT\xef\xe0$\xa6\x8bo\xe5b\xdb\x05\x0870mL\x15\xc1\x93\x184\\x\xe7J\xd3\xa5\x0bk\x17\xfd+\xe7\xdcAQ\xa5/u\x0f\xaf\xd0\xba!\xc2\xce\xa9\xcfo\xf0\xb9\x08\xc1X\xc6\xe8\xe2=\xf4\x08\xaf\x97\xe5\x84\xa4QD\x17\xd6\xe2V\x8c\x91\xa1DJ\x07\xbcVj\xd4\xd4\xebC\xad\x80\x88\xd7\x1737\xbb$\x17\x9f{.t\xfa\x945\\\xf1\xcb'\xcb<&\xc2\x9a6\xab\xda\x9c6rX\x8eli\x02\xe1\xaa\xc6o\xf9}e\xfa\xa2P\x04\xe9m\x9e\xbb\xda\xdb\xed\xda\xfb\x93\x90\xbb\xbbI\x11\n\xb4s&;\xee\x8d`\xbc\xc0\x88\x15\xa1p\xe2c\xd4=t\x98\x0d\x0e\xa7V#\xbd\x89O\xcc\x18\x12\xdd\x95KF'\xd6LZ^b\x96|\xe1\x92\xdf\xe0D#>(\x7f\x98\xe9\xa8.R\xec\x8c'4@~=c\xc17\x8a\x80\xc8\xb8\xb7X4\xd8\x88\xf1+\x1e\xcb8\xc6T\nQ\x98\x92\xeb\x14\xf30\xc5\x97\x89\x93\xfbo\xc6,yD\xc00%*P\x88\xae\x89)Et#id\x99\xbe\xf9\xdej\x8a\xc2q\xc5\xeeEr\x9fp\xe3\xa6\x08\xe9\xd0\xd3rV-\x1e\xfeCT\x0f\xa9\x19a\x84\xfc\xccD\x8a\xb4\x1b\xcc\xcc\x9a?\x1e \x13jS\xf9\xd3\x82\x9c\xdd\xd1\xdaXO\x16\xe3\xa4\x08\xda\xcb~\x04\x85MF\xe9<F\xb7\xe1\xf1\x10m:@a\xd9\xb51\x9c\xb8=c\x8ass'\x80\xf9\xb3\xd1\xb5\x1d\xb2\x1d_[\x94eu\xaeQ\xf5\x15(\x95\x14(\x95\xb8\xfa\xdd\x15\xf0\xbc\x06A~%\xd9\xa9)\xc9\xd4p\xd5\xbb\xf1\xf8\xfaf\xb7\x90\xe5\x8fTY\xdap\xd1\x1e\xd8\xb8R\x16'\xdc \xb51\x15\xaeg\xfb\xfc2\xb3\x1a\xfcEw\xd8f\xacXG\x05R.Ks=+\xef\xea\x8d\xa8\x16\xf3;u\xfd\x0b\xb6\xe5B\xb6\x013)\x00\xf9MC\xf4\x99\xf7.\xa7\xb2\xc9\x06T\x16w\x0e'\x85[\x90\xc9\xae\x7fQ\xa1\x94]\xff\xc2)\x1c\xa0\xe9\xcf\x1c\xd7\xd9\x8f\xb0\x1bP\x96\xc9c\xef 1\x85a\x81\xd4\x9a\xdb\xe3l\x14y,\xebfv\xa1\x11\xd7u\xc4r\x81\xc4\xf2\xf6\x16 e\xce9grL\xed2 e@\x89\x8a\x8a42H0Q\xddb\xea\xbd\x08x\xddL\xe5h\x17\xd4\xfe\xcbrL\xde\x1f\xacTt'\xa0\x18\xd9\xbc;8\x9d\xe1=O\xf3\x9e\xab\xa8\xab\x8c%\xff\xf90\xc2\xac\"\xb42av\xbf\xa7\xcf\xb3\xb8\xdf\xab\xde\xe1\xce8\xbc*\xe42av\xd0\xab*\x8c\x12\x83\x90\xbb\xc1\x8d\xa1\xc0\xb6\xd2\x05\xc1x\xfd\xf4\xef\x90'A\xc6{\xf5QH\xc4\xdf\x1c\xeeT\xc5Z\x91\xc6p\x13\xc1\x16\x8a\x0b7\xca\xaa\x04u\x0f\x97\xa0\xb9i\x04\xc2U\xa6'\xdc\xfeS\xbe\xef*\x02\xad0P\xa5\x18\x1d\x95\x92\x9f\x16\xa6Y\xd2_\x0bylA\x1b\x83=@\x1b\xac\xc7\xc2\xcd\xf3\xca[\x063\x10\x83]E3Ru\xf8\xd4\x92\xa4\x98\xf1u\xd3\x9e\xf0\x0d\xb9yqX\x9e\x9d\x15\xaa\xa9\x80\x85W\xcd\xb8\xcb\x94\x86Q\xc5\xfa\xc3i\xc8^\xec\xbb\xb0\xe4U\xa8ehW\xe6\x8d1\x99\xe4\xd2\x88\xb9c\x9d\xbf\x8d\xf8\xd0!\xf8\x9als\x9f2\x99\x9a\x00\xa1\xbf\x87\xf0\x11I\x89\x9f\x92\x19da\x14\xcfHLf@\x11\xf1\x96b\x1d<\xca\x93rc\xf2\x9e\x8cv\xce\x85w\x8b\xc0_@\x10\x02\xce\xcc\xca{K\x12`\xa9\xc7`\x86\xb5a\xf6\xdb9$\x99\xef\x93$\xd9\x99{\xc12\x8b \x04\xabu\x94$\xc1\xc5\x92\x80\xfdnABZ\xc5c\x19\xbb\x1f\xe3\xc2:\x93\xf0y\x14&\xc1\x8c\xc4\x90F\x10\x93\xe5\x0dD!<\xa6\xddz\x0cQ\xcc\xdeae\xd1)\x90x\xb3\xae)\x8f\x0d\xe06\xa7$8\xb7\x97\xc5\xa8\x80\xc2\xb5H\xb5\"G\\#}\xeaE\x9cu\x93\x98)>>\xbf3\x86X\xa1\xf4\x8a\xffX\xe2\x8f\x9cq\xc5\xdb\xf5e\x81\x0eZZ\x94\xc6\x1b 6-\xc0\x88\x8e\xc3\xa9\x0es*^8\x90u\xe9\xcf\x0dD\xa1\xc4\x9esa\x85\x8b\x14Z \xa5qJ\x12{\xad\xe3\x0fj\xefs\x1a\xc2\xa8\xa2\xe8\xaf\xf9x\xa6\xbd`\x9b\xe1M\xfb\x0d6\xc5g$\x8d\x03rE\n\x8a3\x8b\x08#D\xc1j\xbd$T(\x12h(\x90\xf8\xb1\x96*\x89\x0fk\xda\x9e\xbb\xa0\x1bqe|9\xb5\xff\xafq\x9c\xe5\xcdj\x1aoM\xdf\xf8\xfb\x0f\xd6\xbd\xbc?\xdb\xf5P\xac\x08\xe6n\xe0oh\xd1\xb1\x04)\x04\xaf\xaa\x8a\x81\x85\xca3q\x1a\x93\x8a\x01\xf9`\xbb\xad\x0f\xeaW\xe3\xe7D\x19\xc0R\xfb\x12\x88\x03\xfe\xa64I\x7f\x8e\xc7\xc1\xe8\xe9\x8e\xbeM\xcf\x8e\x1c\x93\x8c\x1f\xe1\\cVF\x9ct<mD\x15bS\xd7\xc7D\x0e\x1c&\x7f\xde\xd3\x9a2{\xf3e\xdbP\xda\x97\x0e\xd8Kv\"\xc1\x95\xaa\x8d\xc1X\x9b\x18-@*Y\xa3\x1f`1\x04M+\xca\x1b\x0e\xea\x8f\x0d\xe3X\x97\xbb\xc80\x13[\x9d\x1c4\x81Pe\x89\xb1$[\xca\xe2\xa2\xe1L\x11ou\xa6\xd0\xba\xb8|\xab\xa7\x88\xaaj\x9a+ \xbe%;q\x9d\xe1VXk\x8a\xf4q\xf5\xd3F\xd8\xf9\xb8z1\xbf|\xf9\xfc\xfe\x13\xa4\x89|%NY\x87M\x9e!&G\x15\x16\xf7\xfdA\xd71\xb4\xfb\xfd\xed\xb3\xe8\xd7\x06\xe8gWq\xec\xe2\xaa\x1f\xc6s\x93.\xfeI\xb9\xc4j\xb4\xd6J\xf5\xda\xc3\xd0\xf7\xbd$!\xb3\\\x11#e\x83f\x97h\x829\x99U\xb3\x19=\xec\xfc\xed\xf7t\xa7\xe9\x9d\xf1$\x9c\xc4\x93l\xd0\x1b\x1c\xe1\xff\xc7\xd3\x9d\xcbm\xa7Y\xa0?]u-\xee\xe7\x06\x8b\xa7\xd0\xef\xf5@\xc4\x9f\xe3\x96\"\xbb\xe7\xc2\xf11\x1e\x13\xff\xcb\xcf\xfd\xb6\xc5\xef\xff\x13qO\x9aR\xdc\xfa\xad\xc2[\xf9\xc9\xb3\xd7\xaf\xbab:o\xec\xd4\xe1\xd5\xf7\xd1\xb0Q\xd9F\x0f;\xb9\xff\xbfANa\xe7\x18\xbf\x8a\xc2\x8e\x1f\x91\xd8g\xc7\xb84\xe2\x88\xe8\xb0\x9b\xbc\xd3o\xf9\xc2\x86\x96\xe4l\x93\x1f\xdedL,\x9a\x8b\xba\xb3 YG\xaaJE\x13P\x93v\xad\xe2\x02\x11`^\xf8\xd4\xd1\xe5MG\x7f\x92\\c\x83\xf0<-|\x8e\xf2\x85\x90\"\x98e)-\x8c\xae\x1b\x80\xe2\xacPH\x87<Sc\x05ss\xcdE\xce\xfbE\xfd\x0d\x92P\x99U\xd7$\xc9\xf3\xd0\x9bNw\xa0\xabt\xa5<c\x15\xb9l\xa3\xd1\xa6\xb6f|\x06\xb1\xe6\xc75\xaa\x07\xc6u\x83I\xde\x80\xec\xaa\xf213(+\x99\x12s\xdf\x10\xcfR\xd94z\x0b\xbc\xaa\xc8\x14)\x94\xcaO\x96\xf9\x93\xa0\x92I{m\x16\x9e\x12Z\xcf\xb3\xcbM7\xe0\xc2\xc5\x90B.\xdc\x94\xf1\n\xf5\x8d\x18\x91\x079\xc7\x02F\xb0\x16B\xe9\x0cM\x08\xf9\xfeL\x0c\xfb3\xc9\x7f\x9c\x82\xc5\xb6\x0b\x0c\x01#\xc3\xe4\xdaFh\xd3\xe6\xf3\x8ej\xd1u\xc1\xa2\xab%$}\x13\xacH\x94\xa5\xcd\xa7\x9e\\\xfd\x13jU+\xa9\xc9\xdaE\x9b\xeafaL\xe6t\x00\xc5/\x1b\xb3\x9dbH9\xda\x99G\x8f\xc0\n\xc9u\xfa&\xf0\xdfZ\xe8\x1b$\xc0\xb8\x7fD7)\x90\xbe\xb8}\xff\xf9\x81\xe5\xa6\x1aY\x98\xf7\xff\xca\xd4\xff\x9bR\xffo\xa4\xfe7\xd8o*\xeb\xa0\xdd\xf5\xa5\xb1-X\xaa\xff\xdc^JOVl\x86\x94\x99Iu3#\xbf}\xa3M\xa8Hq\x89|L([\xa5\xd5^\xb1\xc4\xa0\xa3\xd1H~r{\xcb3\xb6\x170\xca\xb4\xbb\xbb\xbb\xbb0\x84\xb9\xbd\xb4\x99#\xba\xfc\x9c\xb9F\xf58f\xdf\xc0\x08\xbez\xcf\xa3j\xf5\xa1\x03W\x0e|\xc8t\x9bBQQ\x9d\x1c\xb4x{\xba)\xc2\xc1\xde\xde\x02\x0e\x10F\x12\x96\xb8\x105/\xbbA\xd7A?\xd2\xac\x8e\xa4Y\xb5\xa5)tes]\x89\x832\xcf5;p\x1cf\x0e\xf4\x1df\x00-\x9cD\xb8\xeb\x00\xf7\x97+m\xe3\xcc\x8e\xd8Lm\xa4\x9c\xf0]\xf0%\xfd\x04\xfe\xd4\xe97\xd5\xa8Oe\x16T\x99s=\x17Z4\xa1,T\xd1V\xcb\x8a\x98\xb3\x12E\x02\x86\xc1\x81}\xb3I\xc5\x15DO\x15,74\xc60N\x19\x7f\xfe\xfbA8\xa0\x12\x88\x99\x1f0\xfb\xbb[\xcb\xccT(\xe3\xee\x1b\x94\x1d<\x85\xa0.\xb2\x08\xb9\xf6 \x99%\xb0\xf2\xae\x83U\xb6\x82\xdcj\x91\xb2Y\xf9q\x85\x1a\x19\xf4\xf7\x0e\xf7\x8ev\x0f\xf6\x0e\xef^\xdf\x06\xd3\xa9\xb7\x8a\x0e\xf6\x1cY&^y\xd7\x1b\xb2c\x9eCJ\xc3\x8b\xe3\x9c\x17{<\x06<\xf7%\xdfBP\xaeg\xc4\x19s\xb0\xa9G|9\xb6/\x8a\x08\xddE\x90\x8a\xae5\xbb\x0b\\\x16MiX\x10\x1d\xbd\x88\x89\xa0\x90\x03|\xc8\x83!<\x04\xb24,n\x8d\xe99jNv\xb5\xed\x1e\xbb*\xd2?k\xee=`\xcaH\x15\xec\x15\xda/\xf5aR\xf7\xd0\xc78\x90\xda}\xc8QM\x17\xe7o\x11lt\x1f\xe7\x8a_\x8fI\xc6q\x8d#\xef\x1c]\xd3}=\xb7\xa3$\xc7\x1b\xcf\xa7\xcc\xcd-a\xf6\xc6\xb9\x0b\xad\xda\xc46\xf4\xadv;\x84'R\x18=}\xfd \xa9\x08\xd19;\xa3\xdc\xd3\x8e\x1d\x17b\xed\x0bf\xe7p\xce\x80=v\xff\x91\x07R1\x8f\x9a]!m\xf1\xdcU\x1e\xba\xa3;'\x0e\xba\x82\x05a\xb6\x95w~}\x9a\x0f\xf1\x11\x8a\xa2\xc4\xa8\x1e\xa7\xc3 \xb24\xe1\x8dIaPMP\xb4\xe8tB1<R\xeb\xf1\x8e\xd6\xff0?\x92\xfb<nu\x14\xcc\xd0\xfb\xb1\xce\x05}\xfb\xc9\x01\xed\xd2\xdc\xd31\x9d_\xd2\xe9\xbb\xa5\x0dV\xdaPlXj\xc3\xdf\xd1\xffz\x10*\xa5\x84\xda\x0d\xf4g\xce\xa8\x9exe\xe6H\xbbE\xabA7&\xf3\xe7Q\x16\xa6$\xde\x90s\xa9l\xcbC\x8f\x15i\xf6$V\x15\x18XU\xb0\x19\xabJ6P?x<\xb3\x1dm\xa3\x12\x84\xb9\xca\x8e\x1a\xed\x02\xed\xb6W5\xa3\xe8\x8eP\x8d\xf5\xe4\xfb\xcbXY\xce\xee\x92\x06\xe9\x17\x93\x18\xaa\xd6\xa9\xac\xe4\xf9m\xea\xc1gd>\x84x\xb3\x03I\x1elH\xf2\x7f\xd5\xefa\xe9\"\x1asj*\xee\x84y\xccO\xb1\xd5\xe9x\xe2\xe4R:\xac\xb4z\x98\x9fP{]L\xc3\xbf.I\xfa\x19G\xd0\x1f\xd38z\xc5 <\x16LV\xb3\xfd\xef\xa7\xd4\x92\xd2\x0f\xe96X\xe8B%DsXD\xecm\xf1\x88\xbd\x04\x86\"\xa5b#s@\xaf\xb2\xee\xf3\xb33\xba\x1c\xf8\xa5K\x12\xdf[\x17\xfaT\x19\xa8N\x95`,\xcd,H\xc4dP2z\x19\xbc\xd8\xfef\xd1\xec\xdf\x84\x98\xfcl\x16\xc4$\x01\xaf\x08}g\xf4X*\xc5\xbb\x96\x82L\xf1\x10La\x9ea\x81\x12\xcfN\x9f\x1d\x83)ya\xa2t)[\xc2 \xb4\xdb\x01<\x81\xf8\xc4\xc1\x19\xe6\xf9{\xe4B\x01\xde{\x8c\xa0Mg\xff\xe9\x08\xfa(\x05S\x01d\xb7\x8ftgp\x08\"\x03!N@\xc0\n<\x1d\xc1\xdeQ^v\xff\x10\xcb\xd6=\x7f\xf4\x08\xf6\xf6i\x81\x8c\x12\xc6\xc9\x04\x83F\x15\x96\x89\xfe\x01Zr\x80\x12K\x1b\xfb\x1a\xb0*[<t\xf7\xde>\xfdJ\xd8\x01\x82uup\xc4\x1f\x88\x0e\x1e\x17_\xf5=D\xe8\xc1~\x0e=\xee\xe5\xd0\xe3\xc3\x1c\xda\x1f\x0c\xf02(\xce\x13\xce\x11\xa5\xe0\xac\xcbe \xce\x9b\xf5\xff\xfe\xc5\x9fY\xb5\xfbPuz\xd78Q\xc8\x18\x8b\x1a\x18\xf6\x0dO\xdan \x91Y\x8a\xcfJt\xe5r\xec\xeeX\xd6\x1b\xbew\xf2\xdb:\xa1\xdd\xef\xdf'\xb0\xa76p=\xad\xd8:?'\xc9\xa7\xd1,[\x12\xabJ\xb5y\x9a 9\x8d\x82\xc3T=\x98K\xaf\xceQ\xc5x}9I\xbd\x94|\x7f\x99]\x06a24l\xdadM|\xd33\xfa\xf1\xb0\xcdd\x08\x99Y\xc8O\xc8\x92\xf8i\x14'C0\x04c\xd2\xbf\xcbR/\x19\xbb\x068\xb6Y\xe6\x13Zs\"\xa6\xc2\xdc\x8f\xbc\xaf\xd1F}\xf5\xf4}U\xf1\xf0;\xfa_\xefU\xf9mn\x87\xf6~\xffX\x89\x90\xcd\xed\x0c:\xbb\x84o\xd3'{J\xa0e\xfeh\x7f\xaf_}\xe4\xe5\x8f\x06J\x90i\xd1\x87\xbd]\xc79\xf9N\xfeL\xe0\x0e\xf8z\xc5O\xca\x98C\x81\x9f\x05s8\xa9\xa0)\xe3\x06_U6\xa7|+G\xa3\x10\x93b\xe6\x05!=\xb65\x1c\xac\x0bC\x1d\xa7eEF$\x93\x19\xbc\xd8(i\xd9\x8fC\x9d\x84\xb9\xd1\xbdB\x99\x07\x1e\xb4X'a\xb1\x1c\x97\xd5 \x93\xdfQ\xbf\xd1q/\x95[B\x97$\xfd$\xf2\xbd\xe5s\xdc\x04\x9b\xc5\xfa\xb3{\x18\x8c\xd8\x8b\x13\xf2\xd3\xde\x8a\xbf\xea\xd8\xb1\x18\xfcv^\x0erC2]|\xdc\xe9t&a\x16/\x87`-\xd2t\x9d\x0cwv\xd6$M\xd2(&\xdd\xe4\x9dwyI\xe2n\x10\xed\\\x0dv\xc4\xaf/\x92(\xb4&\xe1,Z\x9d\x07\xb3!X\x7f\x85?\xe8d\x815 \xd11\xddK\xa3\xf8\x07\xa5:\xa3p\x19\x84\xe5\x1aEAk\x12F^\x96.\x06\x9f\x91Y\x10\x13?-\xde\x1c\xee\xec,\xe9\xbc-\xa2$\x1d\xee\x0ez\xbd\x1dV\xb2\x13\xf3\xa2\xddE\xbaZZ\x93\xf0\xb1v\xd0\x1bQp\xc9\xb5c\xd07hR\xe3\x87\xa9^\x7f\xdc\xdb\xdf\xebi\xb7od\xc4\xdcZ\xf4Q\xbcH\x85\xb5\x120\xfe\xa6\x88\x15=#\xeb\x98\xf8^Jf\xe0\x853\xc9\x91&K\xc8\xac\xdb\xe0C\x03\xf2\xfct\xa9\x98\x87#\xe9\xc9IK\xbbg\xfe\x82\xac\x98uu\xf7\xa8\xf4\xe4\xe3g/?9{\xf6\xf1\x8b\xf3\xb3\xe7\x7f\xed\xc5\xa7\xcf\xb8\xc1vP*\xf3\x93g\xaf_\xc9\xcf\x07\xbd\xdd\xd2\xf3\xe7\xaf?{Q~^~\xff\xa3\x17\x1f?\xfb\xc1'o\xce\xab\xed\xec\xefj\x8b}\xfc\x83O>\x91\x8b\x1d\x95\x8b-#o\x86\xa1\x02\xe8\x97\xea\x83g\xf4P\xc1\x9f=c\x17\xce\xc4\xe3\xc4\x9b\x93O\xc4\xbb\xe2\x87\xae\x80\xa8C\xfa-\x17\x9be\xab5\xc6\x0c\xa4_\xaa\xef\x7f$\x1e\x8a\x1fr\x81\x9f~\xf6\xe9'/\xae}\x82!\xe89\x1e\x96\x86\xf6\xe9\xcbW/?}\xf6I\xddZl8\x87\xe6\xe9K|/D\xd5\x81E\xbfY\xa5gH\xe1\xd8C\xfcZ~\xeaG+\xee{\x12\xd9\x16\xffQ.\xe1\xcdf\xcf\xa5\xf0\xe1X\xb0\x0c\xb3\xee!\xdfI\xfe}\xd5\xab\xfcA>\x9b%0\xbfD\xa5h\xa0\xb3|\xeaJ`/\x9f\xaf\x128iVH\x97_\xf0U\x85\xf2\x1cF0(\x83(\x92\xed\x96A\x14u\xf6\xca\xa0\x85Z\xd7L\xad\xebJ\xad\xeb\x86\xb9\xc2]\xf7z\x9d\xc9u\xefhr\xdd\xfb\xde\xe4\xba\xf7|r\xdd{\xd1\x99\\\xf7?\x9e\\\x1f~\xdc\x99\\\x1f\xedM\xae\x8f\x0e:\x93\xeb\xe3\x8f'\xd9\xc7\x1f\x7f\xfc\x02\xff\xffxz;\x9ed\x1f\x1d\xd1\x97\xb3\x8f\xbe\xf7\xf1\xc7S\xfb\xb4E!\xcf\x19\x84\x96pn\xed\xd3\xe1\xf8\xf3r\xb1\xdb\xcf\x9dJ\xb1\x9dr\xb7.y\xb7\x8e\xf6\xcb\x1ez\xe5R+,\xe5N\xc6\x93\xe9\xe4\xab\xc9\xfb\xea\xe3s\xfa\xf8s\xfbt\xd8\xbam\xb5n[c\xaf\xf3\xe5\xa43m\xb7\x9c\x0fv\x82r\xc9\x8b\xa2\xe4\xf8\xf3\xa2>\xc7>\x1d\xfe\xc4\xb8\xd79\xf6:\xf3\xe9W\x83\xf7\xb7\xec\xfb\x97\x93\xce_9\x99\xecLN\x87\xdf}4\x9a\xb4'\x1f\xb8\xe7\x93n\xeb\x7f\x98|\xf8xbO\x1c\xfa\xf6\xd4\xf9\xf0\x83\x9d@\xc7\"\xde\x19YD\x9f_B\xc33\xe3.\xfb.\x11q\xb5\xaakcU\xc7EM\xbb\x83\x0dj:\xdb\xa6&\xec\xdf\xb6}}alao\xaf\xa8\xea\xb8/}\xdf\x95\x9a\x18\x94~\xeco\xd0\xe03\x83yG+\x9e\xee\x1d\xa1\xb9\x02\xa5K~\xd2>\xc5 9{G0\xa4\xc7\xea'\\\xef\xb0;\x80[`\xc9\x9c\xd91\xbb7@}O\x87\x16j\xd3i\x19B\xa7_\xdb\xb1\xd7\xe6\x998\xca\x15]\xd6\xa4g\xb1\x96s\xc8\x7f\x87\x00\xb9\xc8\x05\x85\xf4\xfb\x07\x12(\xc5BU@?_.\n\n\x19H\xae\xe9\nA\xbd\x81\x04\x9a\xb3R{\x12(f\xa5\xfa\x05\xe8\xbf\xa7\x90]\xe95\xd4}\xec\x16/=\xb6\x1e\xc3\x10\xf6\xa4a\xec`\x0f\xe5\x96&\x14r(u\xe7\xff\xf9y,\xb3/A~\x13\xcb\xc8#E\xaa@\xa1G\xbd\n\xf4\x98)\xabk\x17\xe1\x8b\x9a#\xc6\x93\x11\x1c\xec\xef\xef\xee\xc3)W\\a\x96\xe9\xe7\\\xdfd\xa7\x85\x03j\xf9\x01K\xe9\xd9\xa6\xa7\xb5\x0e\xd6p\x00O\x9fB\x9fJX\xfb\x07\xbb\x83^\xf9\xd1#:\xdf\xbb\x8a\x11\x15\xe4\xd3\xd8[\x90\x13\xd3\x0e\xf6\x0f\x1c\x17^j`\x9f\xb2\x84r\x9f\xc2\x13\x18\xec\x1f\x9c\xc0\xa7\xed\xb6\x03o\xc7\x9f\xd23\xd9k\xfbS\x87\xc7\x19\xe8\xb9\xf0\xb2\x00\xea\x88\xd3\x1b\xad\x1e_hb\xc9;\x08P\x01C\xdeQI\xb7;\x0f\x96$\xf4V\x84\xb2\xf6 \\g)\xde\xdb\x8f\x92 \xc5;\x96i\x97\x9e\x1fd\x18t8\xf0,\xf5\xe2\xb2\x9b\xbc\xda\x97\xe7\xda\xbe0Q\x99\xf7\xb3\xf6\xfd\xef\xeb\xdf\xefF\xe1\x0f\xbd8\x0c\xc2Kv\x96\xcc\x7f\xf2\xeb\xea\xe8y\xca\xeb\xd7-\x0e]\x97\xcf\x94\xd3\"\x15\xd9\x86\x8d\x16\x1a\xf1\xbe1d\x0b?\xa2\x8f \xed^\x918\xa1\xc3x\xf4\x88\xcd\x845\xcb\xd6\xcb\xc0\xf7R~3\xf5'h\x93\xc0\x8eT\x98Q\xca\xe5\x91\x0fC)`\x15{\xb3\\\x12<\x9f\x8a\x96 \x90k\xcfO\xf1b*\xc9U\xba\xb4\x9a\\\xe3n\xc7\x8c+R\xa67m;\x93\xae\xf8\xf6\xc1N\x97\\\x13\xdf\x0e\xc7=\x1e\x03\x8d5\x14,\x97\x9dy\x14\xafdw\xffh\x0e\xe9\x82\x80\xda[*\x8b\xa1\xf4\xf82L\xedx\xdc\x9f\xbal\xafDe\xf8@\xc0\xa5\xb8\x8e\xac\xb5,d#\xc1lhX\xbf\x983\xde\xe6,\xf2\xf3A\x15\x13:\x82\x90E-\xef\xfa\x0b\xe2\xbf\xfd$\x08\xc9\xf7b\xe2\xbd\xa5\xe2[Dw\x90h\n\xef\xdc\x0e\x8a\xaf\xdf\xe7\xad&\xd9\x9a\x8a\xb1d\xd6\xd0hiu+*\xb67\xcf\xfe\xeav\xe8\xa2\xe2\xca\xc0\xb0\xdao\x9e\xfd\xd5\x9a\xc5N\xdfE\x85\xfe\xdf\x12\ny\x16\xd1\x0e\xbf\xd1u8\xef\xa6$I\xed\x18\x03@(K\x9bz\x97\xb0\xf0\xc2\xd9\x92\x80=\x0f\xe2$\xcd+t\xc4$\x94\xfa@[\xc9C*\xa4\xde\xe5\xa7\xde\xda\x85\xb8@\x9b\xc7\xe9\x82\xc4\x84\x1ep=X\xc7\xe4*\x88\xb2dy\x033\xe2/\xbd\x98\xcc \xc9\xe6\xf3\xe0\x1a\xa9\xa2\xf5\x18\xda\x10C\x1b\x1e[R7\x1e;.\\\xb0.\x07\xe6.\xafcB\xab\xb1\x13\xe2G\xe1l\x83>\x8b\xce2\xbf\x87r\xe0\xfc\x92\x96Q\xa5=\xaf\xc4\x92\xe2@U)\xa4\xc8\xdf\xaa\xaa\xe9\x08<\xd1\xa3\x02\xbac\xb0\xd8;\x94\xd8\xf2+\x1e\x888\xb4\x19\xa5<\x08V\x120sz$E\xf5f\xf9\x08\"\xfa\xa7=\x82\xbe\xc3e\x06t\x0e\xf0\xaa\xb6\x15&\xfb=\x19AF\xd7,C\xb9\xa7\xdf\xdf\xeb\xf7\xfb\xc5d\x93\xeb5\xbb\x83\xcf\xa2\x1c\xfc\xe4\xd9\xebW@\xab\xf1\xfc\x94(\xb90A\xdc4\xbca\xab\xe6I4\x84.E\x92\xc6\xc4[\xa1\xc3\x81\x17\x84 \x84Q\xd8Y\xc7A\xc8\xb6z^m\xa2\xab7\xed\xc6$\xc9\x96\x98/\xd53\xad\x99f\xc9>)\x96Lqo\xb9\xe2 \x04\xd0-\xac\xe2,\x833\x1cw\x83\x84\xa7\xdb\x0f%\x0c\xe4\x1a\x9a\x15\x89/ \xac\xbc\xf5:\x08/\x93\x13\xc4\xb6u\x1c]\x053\x8a\xddQ\x16\xfb\x84\xe7o\xa6\x9b@&k\x96\x93\x87\xd8\xa4\x87E[\xf2*xKn\x12;t\x9c|A=x\x02>\xfd\xc3\x164\xc3\x80\x8f\xde\xd4\x95\xe2\x9ce\xd87\x9b\xb0\x90\x94!\xfa\xdb\x04\xecG\xabW\xcfM?\x920Z\xce?\xac\x9b*\xdf\x85\xb9\x8a\xd7Aa\x08\x0cd.\xc3S\xf2\x08#\x91\x95z\x97\xc3\x1bo\xb5\xecF\xf1\xa5;\xe8\xf5\x06C\x9c?\xe6q\xabAsZ7\xbb\xeb\x18$L(2E>\xc0\xa5\xe2\xae0\xf4\xa0\x1d\xe5s\xe7\xc3\x13\x98\xd3?l\xee\x04.Dc\x1fS\x90\x1b\xb07/\xa6\x96\xc1\xe7)\xea]\xe9\x94'y\x8cb\x9e\xde\xa9X\x13\x06\xb0\x99\\\x04t\x8f\xdd\xde\xeaD\xa7\x11x\xecI!`\x95\xe5\x022\x13(\x06o\xc9\x0d&\xe0#\xe3`\xcaB$\xe5\x97~\x83\xe6D>\xea\xe2\x7f\xb9\xd1Y\x8a\x1f2p)\x05\x8d\x92(I\xd1s\x87\xdd\xe8\x12?\xdbmz\xac\xd8\xe5\xc8p\n\xb6\xfc\xc8\xcd\x8f\x9a\xb552Y\xaex\x8d\xca\xe8lz<\xc0\x89\xbd\xa0,\x9en/A\xa8\x18\x85\xc7gmt3\x92$S\x1c\x80\xa8\xacvf>6\xf1\xee\\\x86\x97s\x0e\xd5\x0e\xe1\x84;\x10\x04\xda\xb8\xac\xdc+\xeb\xda\x0e\x1c\x1e}TS[\xbb-\xd7\xa7\xdd)\xb8\xdbv\xd9\xd1\xca\xe0!7\x8bj\x0c~\x9b\xb4\xac}\xf9=\xbc[\x04Td\xe8\xf7\nA\xae\xbf[|\xe7`C\xbf[\xef\x90\x15\xe12\xaa%pv\xbeD\x07\x83\xe6\x89v!\xa6x\xc5\xd6\xfbe8\xa3R*\x9e\x9f\xf8A\x96.\x80\xfc\x90\x16\xdez\xd8\xefu\xbb\x8c\x87\xb0\x0d\x8b\xe1\xc6\x0cq\xa5\x9e<a\x8f\x99\xb09#\xf3\xc0\x0f(8\xc0\xa7(\xfd[%\xffH\x1dV\xfe\xa0\xd6\xb5\xb5\xe8\xb2\x96\x14\xb4ltS0o\xe4\x90\x89\xfc{\x07\xdc\xdf\x05\xbd\x0fZ\xfa-\x1aB\x9b\x12\xd4\xa6\"\x03F\x041\x17\xd7\xae+<\x9b\xeb\xdbo\x9d\xd9\xc4i8C~O{\x06\xec\xe7\xa4F\x16\x16\x98\xee\x82\xc0S\xe6?b\xcb\xcf0s1\xf1R\xdb\x9a\x84\x96\x8b\xfa\x9e~C\xd3?\xabmZ\xb8\x10 \x8cJ\xbdK\xd5\x16\x1e\xe1#/\xf4\x17Q\xac>\xcd\x0c\x99\x06<M (\xdc\x17\xd2\xa1\x92\xd5\xc9\x87\xc7~P\x01W|\xc7\xd8N\x8e\xc8+\xb7 \xb1\xc2\xba\xf6\x189\xc1\xefgv\xed\x8b\x88\x0e\xce\x89\x9e\x8b{<\xb2P\x99\xfe#\x89m\xb1\x10\xad\xeanAw\x9a\x8c\xc7\xd7cN\x8e\x1b\xf4^i>\x8f{\xc16\x08\xe3\xbe?\xc5\x89\xfb\xd2\x85V\x1f\xbd\xe3\\\xd1\x94@\x0e\xa7\xdc\xbfM\x1aw\x0bf\x8f\xb4 g\xf7|HO\xb9\x83\x10\x9f`\x87\xf3\xb1\x0bo&\x13\x01zj\xf1 !?\x9b\x91\xd0'@\xc24\xbe1\x8a\xd9\xcc\xc7\xacDd\x88\x96\x96\n\x12\xd0\xf28\x8e\xd0\x83\x13Kd$p\x07\xc5\x89\xb4\xfb6\x08g0\x02K\xf4\xc0r\x8b\xcd\x841\xc6\x9a\x04\xca\x9f6\xd3\xa8\\\xc4D\x8c\xd6\xef\x80*\xa6\xd3!\xee\xee\x16\x11\xc2\x1b\x04\x90\xdc\x7fBW\x8f\xb4a\xe8\xf8M\x1a\x18\x8f\x1f+\x99i\x87R\xe5\x03.\x01m\xc2-0\x12m\xc41~\xb3\x17\x86\xb0\xcb\xa4\xa4@D\xb1\xc58\\t\x19Z-k\xf3Z\xd8\x1b\x16\x0b6 \x0b\x94\x91N\xf20\x8a\x03\x9b4\xa7\xbc\x98\x8b\x01\x92\x14p00\xb2~\x89r<\xc9\xb3\xf8\xd1\xd1\xc7\xba\x83pi\x97m\xd2\xbdBL\xcc\xc2\xfc\x04K\xc2\x99\xd0 \xf0\x83\xe8\xbb ]\x04!xpE\xe2\x0b/\x0dVt\xe5\xab\n\x1eS\xa8#.\xb9I\xe3m\x9d1)._M\x96D\xe0T\x9c\x80\xbdK\xa1\xf3\xe0\x07H~\x10\x06r\xed/\xbd\x15C\xc0\x95\x17\xbfM\xac<\x0eqe.X\x16\x85\n\xdd\xcd\x15;\xf2\x195\xf4*:\x9dJ\x9bI\xe6/JGn\xe6\xa5I1\xaf\x8c>\x8c\xb4o6\xef\xeaB7\xaf\xe7*WJ\x15\xba\x02\xe3L\xcd\x97\xd1;J.\xe9v\x8d\xe2R\xff\xcb\xab\xa6#\x7f\xc8\xc8Z\x17\xfa\xf60\x99u\xfd\x1c\x0d\xd1m#F]\xe6)\x08\"\x1a\xc3PU\x83\x85\x8eT\"W8\x85STs\x0d\xe9.\xe5\\\xa2(Ea\xe2\xa9\xee\xb1z~\x16\xe5\x99\xb6-\x0bs\xcd\x9a\xb4\xea\xa8Y\x0bQ\xb3\xf6\x18=\xc1k\x89\xf7\x0f\xcd\xc4[C\x96\x8f\x18Y\x0e\xefA\x96\xcd\x82\x8c\x9e4\x87\xc0K\xc8\xe4\xd9\xd0\x81\x12fV\xb1Zl\xdc\x90o\\v\xd4l\xbd\xb0C\x07\x93\xc76\xd7\xa8\xe5\xb0\xd2\xb6\xc9u \xc5~,\x0f!\x8cf\x04VYR\xe0\x9b\x97\xc2\x92xI\x8a\xaa{I\xcbVb\xd3\xf5\xbb\xa9a\x81\x7fJ\xd2\x86i\xf8\xc2U~I\xf2\xc6\x85K\x17V.\x9c\xbbp\xe1\xc2kf\x8c\xd20\xed7\x06f\xfe}\x033\x97\x16{\x19$) I~Vb\xbfl+Zc\xd4\xd9T\xe8j\xa1\x88\x1e\x9d\xcf\x82\x00pyE\xfc\xcc%\x15\x06@\xb5'\x8c\xd0\x19b]\xc8eLA\x85A\xeb\x1f=R\x04Q\xfbM.\xaf\x96\xc578e\x93\x00\xc3\xca!\x93\x9f:\xd0\\W}\xf8\x84+\xc2>E\x97x\x07\x0d\x1e\xf4\x85O\x0d\xde\x9a'L\x82\xba\xbd\xc5\xcdx\xe2\x94\xbbwZ\xf4\xee\x86\xc9c\xdfJ'a\x88\xd5\xeb\xd6\x8f\x07j\x80\x11\xbc\xa1\x9d\x8cr\x0b\xce\xa7\xf4\xc1\x9ao*z\xea\xbb\x80\x11\xf8\xc5\xa4\xcfs\x92F\xf0<\xd6\xa6\x9c\xecu\x99\xd5\x94\xec\x88\xf9L\xc1)\xbf:\x8eg\xaf\xd789\xdb\xd8X\xdcB\xc9\x9b\x98Og\xc0=w\xcc'4\xe0^;_\xd5\x8475=\xcb\x91T\xfb\xf4\xaa\xf6\xe9M\xed\xd3K\xc3\x06\x04\xeeG\xa3\x0b\"|\x87\xf3\xe3\x92\xab\xac7;?z\xc6$D\x18\x84\xa8\xa9\x1e.\xd6D\xd2\xa1-\xab\xc8\xb4\x07\xecP\x80\x07\x9a\xfd#\xfe\xfd\xf6\x96\xd2\xf2\xb8\xf9\n%\xd2\xc1\xd0\xc5[\xaf\xec\x08h\xd4A\xc9\xefI\x07<\xadL-\x7fX\xaa\xdf\xa6\x91:'pm{t\x9f\x1b\x8a6\xc8W\xf2\x87\xf6p\x9f\xf9[x\x0e\x9c\x99\x1a\xafH\xca\xb9\xc4\xe8Q\x11\xfe\xffc\xee[\xbb\xdb\xb6\x95E\xbf\xf7W\x8cx{\x1c2\x92\x15I~$Qlk\xa5i\xd2z7ur\x9a\xa4\xfbt\xcbj\x16-A6\x1b\x89T\xf9\x88\xed\xbd\xdd\xf3\xed\xfe\xb1\xfb\xcb\xee\xc2\x0c\x00\x82$@\xd2N\xd2\xd6k\xb5\xa1@\x10\xcf\xc1`\xde\x93\xb2d\xe3\xcf\xb5\xdbG\x97\xad\x82\xbf\xe4%\x9c\x82\xfe\xc0\xae\xb7\xd1w\x02\x12\xb6\xf1c\xa4\xc6\x149}\xb6\x8a\xe6\x1f\xa4\xd4\x9a__\xc8l\xb9\xa8kX\xf5\xf2\xa88Z\xc4\x9b\x8f\x02K\x8b\xa2\xb5@r\x02\xb8\x91\xf8\xe4\xff.\xd4\xf9\xc5/$\xc2\xaf_\x97\x86\x9c\xcc\xf2\x0f\x01c\xad\xb9g\xd1\xd5\x93\x14\xee\x9d9\x07\x96\xfa\xee\xf8\x9f\xd2\x13aD\xd8\x98\xf9\x0b~\xf1\x07kN\xcd\x04\xa9\x12\xe8o\xfc ~\x02>\xcc\xa3U\x14\xf2\x95^\x07IR \x9bW\xfe3\xbbKC\x1d\xb3\xa2\xff}\xaey\x9a\xe6X\xdcz\x12_\xf0 \xae\xb3U\x1a\xe0\xd9\xf9\xc0\xaea\xed_\x830q\xd6W\x05\xd5\x1b\xf6\xb9\x19\xdf\x88\x19\xef\x13\xcb\xe5\xf3\x0b\xf2\xd3\x80Mp\xed\xe42yN\xedi08\xc8Y\xcb \x9cG\xeb\x0d\xea_\xd8\x95ec\xf9l\x91\xceS{\xfb\x04\xa2\x18\x96\xd1j\x15]\xb2\x05\x9c]\x83\x8fj\xd0\xd4?\xcbV\xa8\xeca\xebMz\x8d\xca\x0d\"\xfcr\x9c\xa8\xbc\xa6c\xf3\xc6P(\x11\x0dEYeP\xae\xa4\x037DZ\x04T\xca\xa7\xab\x1f+A\x06hB\xb1s\xbc\xd9+k{-b\xd9\x1b\x97\xb7(Hk\xc6\x88\x9e\x81\xa8Qr3\xbfVnV\x80;\x9b\x17c\x93\xe8\xac\xf2Q\x15\xf2\xc4\xd1AH\xb3\x01\xda\xba j\xab\x9c\xae\\\xd4&\xf1d\x81~\xc5\x16\n\xfd\xfe\x81\xc4O\x0f\xce\xbc*\x01d\xa3~\xcaZ]\xccY\xb3\xd4\x93\x88u,\xf9\xc6\x17\xf5\x84\xd2\xc7FB\xe9\xda\xe0\xad\x04\x02H\x859\xa8\xbbi\x86\x05\xd2\x89=\xde\xe9 98IbM\xe9\xc9k0\x1f\xefs8\"\x82ac\xe5EUmN>\x8f\xf6D\x8f\x03\xea\xf1?M\xfeip7\xb2*\xf6(\xc3T\xd3=- \xabM-a\xa5\x8e\x1a\xf3z\xad\x96W\xe8\x0b\xab\xec+i\xd2\x08v\x17\x05\xd8\xfd\xa8\xc1.\xc7\xb7\n~al\x13\x1b\xc7\xf6\xcb\xe4\"\xa7?\x08?\xc2<Z\xaf}8c\xe9%cB\xe03\x8fV+\x91\xbb\x81\x9f\xec\x80\xa1\xb8j\xc9\x8f\x95\xc80D\xec^\x84zv\x02\x13q#l\xa0\xad\xf2\x02\xb7I\xb5`WW0O\x89\x1c\x8a\xea\x84\xb9\xa6NX\xe6tJ\xa2a\xd0B3\xd6\x8d/2\xf4\x19(\xe5H\xce\\ \x8aw\x83\xe8XJ\x9b\xdb\xc0Qi\x04\xa6\xb1\xaf\x8a(\x9f\xef1\xe2\xb8\x18\xf1\xfc\x12q\xc8\x8a<\x8c'\x10\x93\xde\x04+\xd0&hux%Q!)\xf7,\xcc\xc3[\x01\xe9\x84B$\xb6\x9d#\xe6bB0hqfo#&.\x01cY\xe6\xc8[:\xe3\xa3}M\xd1\xf4\xc6\x9c\xfe\xdf\xdaj\x8d\xaa\xcb\x8c\xea\x85\x9dI\xb51|\xcb\x9aw+\xf4\xcd6\xbe\xda\x98##\x81\xc0\xe3\xb6<4\xc3\x91\xd8\xc4\xacy\x13=A\xc3\xdf\x1aq\x0b-B\xd6\now\x9a\xc2\xc6\x80D\xd3\x9a\xaak\xee\xaf0,\xab\x86\xb1\x1cG\"\xdc\xcc\xa0\xd4\x041\xb4\xdd\x9d\xda\xe9W\x19-\xa1Q\xcd<\x0e\x9f\x87\x1c}Mp\xa7EC\x19\xd2_cX(\x1a\x93\xd4\xd3D\xdc\xcc/\xa25R7\x94]\x86S-\xc120[\xe1A3\xdb\x83l\x80\x8b\xc8\x83\xdc$\x90_\xcc\x10\x0f\xfa\xcaY\xc2\x97\xce\x12\xdbC\x0f\x8e\x0e\xa1\x05\xa3<\x10\xc4\xe7D\xa3\xd4\x14\x81\xac\x93l\x97\xc1\"\xbd\xa0\xb9\x11\xdb@;\xf1\x04\x02=\x9a\xf8\x8a% \xa4\x17~\x08\x11'\x89a\x0cK\xd5\xb4\xb6<\xa1\xa1i}\x8d\xf8i\xc4\x13\x00]\x88H\x8d\xb2\x84\xa2}\x9c\xfeW\x85\x1a\xbe^W\x98w\xc9\xbc\xa6\xb5\xe65m \xc4<\x0e\xa9W\xc3\xae\xedt\xff\x8e\x84,\xeb\x10j\xc7\x07\x9f2F\xd0\xc7\xd9\xb9t3M\xcfm\x18\x90\xe5@j\x07\xce2P\xcd\x1a\xa8l\xe4\xd3\xb3\x8d\xbe\x9d\xf0\xc4\xed,+\xbc\xd2\x01\xbf\xe4\xb6\xb6\xa4\xf5Pf\xb0\x1ej\xb3b\xf6-\xeb,\xa1l\xf6p\x04+$CV\x8a\xbc\xa0\x17^\x0f.\x11\xf46\xdd\xee\x9d\x0f{uv\xf5\xf0\x90\xe0\xbc?\x96\xcciJ&3s\xf4A\xe9\xc2\x06\xc6\x9c\xb4\x1e\x8b\xaf\xd0n}\x0ee{\x1b\xfeM\x83\x10\xcb\xcc\x82\xc9?\xbb\xe8CXDO\x80\x1f\x14N1\\+2\xae\xe5\xe0I\xea-\xbf\x1c\xd6~\xb9\x114\xe3X`\xbb\x0dLL\xd3\x05\xc4;u\xed4\xbc/\x8e\xb0\xa7\x92t-5rhP1\xff\x82\xf2!|\xe2}\x02\xac\xf2\xbf\x13!/\xd5%\xb0\x1dC\x02E0\xee\x91\x95\x81.\xa7\x02\x11\x14\xd4-\xd9[3q\xb2\xf3\xf8\xd3\xd5\x93\xd0\x96Z(s\x0b\x9cQ\nJ\x9b2h=\x9e\x1a\x92c\x87\x0c\xfa\x8d\xfa\x0e\xbd\xde\x89\xa0\xd8\x0b\x1b\xc6\xa9\xfb\x86e)\xd2,\xf9\xc2\xd4\xc8\x02\xe3\xc2<\xcb+Q\\\x05\xcb\x1d\x87\xd8\xeb\xd2E\xad\xb9\x1az F\x8c\xc6~\xc4;\x0c\x05\xfbU]^:G\x8a\xa3;<<,\x18\xfenm\x91\xf1\xe4\xa4\x96\xde\x97>>9\xc5\x9f\x04\xe1\xf9\x8a\xc1\xefY\xc4\xab\x8a\xbdGZ\xa2n\x96\x86\x83t\x1b6\xc3\xdc\xe9\xe78):\x83a95\xbb\x04\x1e-\xc4t\x9f\xff\xd4`\xe2m\xf3\xa9i1\x9eZ\xc9\x88\xf0]\xf5\xd5\xa0\x8d\x18m\xe0\x95\x87d\x03|\x14c\x8dd\x9b-\xce\xa2\xa9\xab\xcbv*\x1aO\x87~\xfb9TrM\x9f\xfcE9\xd0\x7f\x98\xfa3\xafp\xc1\x1c\xa3\xef\x88>\xc9\x16-Rp\xd1\x910\x83\xe3\x1c\x8b\xcf\xcf\xd2\x08]\x89\x1f*Vf\x17\xc6\xf0hO\xfd\xe4l\xc3\xc0\x83#\xfe\xbf\x16\xba\xb2\x80\x14\xda\x11\x19m\x07\xfc\xbb'\x10lo{\xd8\xfb\xd3\xb6k\xc5\x99\x14\x0c\x1b\x87~5\x07\x07\xb0\xebA\x172\xc5R\xa9\x13x\xc1\xae\xfc\x05\x9b\x07k\x7fU\xef\xd2\xa4\xff\xe9K\xf9\x9b\x1b\x95\xe0\xc5N\xb7\xd0ZJ,\xf0!\x8c.C\x10\x11\xd3\x94\xcc\xac\xa6\xeb\xea\xc9\xa8\xc7\xa4~\x8eI\xe9\xe8\xdb0i\xb5\xe1/\x84I\x17Qv\xd6\x06\x93\x96\x06\xd3\x82\x96\xb8\x0dj5\x8f\xc2\x88Z51NGC\xb26\x0c+\x0c\\\xcdXu\x97d\x18\xcd\x8a\xef6X\xd5\xd2H+s'2\x81{#\xac\xdf:\xcf\xdd\x98\xa3\xcd6-V\x07s+\x93\xa7U\xe0'\xb7\xb2x2\x18?\xf6\x8a\xa6N\x9aH\xbd\x14\x8eE7\x84\xbc\x97\x85J\x0c\xb0\x10\xe3(\x19\xc5iw\x92.\xa6\x0fge\xddU\x95\\\xe5`rWS\x14\x94\xba.\xa5\xbc\x95\xdf\x94v\xe1\x9c]\xd1\xcd\xc1\xeb\x8d\xbbl\x06,\xbe\"\xcf\xdd%\xb9}\x12\x92F\xa6w\xe7Q\xfe\xbc;\xd2\xcaw\xf2g)\xe8\xc3\x1f\xfbz\xa5\xc7\xda\xb3Vg\xe7\xa1V_+\x7fL\xa1\x1e\x96\xb5P\x8e7\xce\xbe\xd6\xbd\x10\x9b-IF\xff\xa6\xf9\x18 \xee\xec\xe6\x86\xec\xfb8\x98\xb78X\xcd\xe4J\x80\xbe\xe4ErWX\xad\x8b\x03\xb6\xac\xa5B\x84u\xc6\xb2\x89b\xb8\xe3\x14k\x98g-\x8f\xef\xce^\xdbA\xd4\x0f\x00}eZ\xf4\xd9$\x95h\xbcj\xf29.\x9b\xa5\x8f\xbc\xcdK\xac\xd8l\x05\xe1+1\x8bT\xd3h\xc6gsU@\"\x13\xed\xe6DdP\x14\xdc\x1c\xda\xb3t\xe9\x7f\x99\xc6\xbf\xdfYZ%\xfej\xe3\xb6\xcb?\xbb\xc0\x04\x8af\xf8\xc2\xff\x83\x8c\x078~\xd2wB\xe8\xaf\x0b27Kr\x01\xf9w\x179\x8e\xb9\x14\x15`D\xcb\x10\xfe\xec\x0c%-#\xc6\xbb\x0d\xbeWw8\xbd\x1e\\ \xcc\xe7\x16k\x08C3\xcbv4\xb8<\xd8n\xc4\xf2P;\x1d\x85F\xc8%X\xa0\x99\xa2\xc5\xea\xa6*Q!R\xa4'\xad( \xfd\xbd\x16 \x94\x07\xd0\x96\xde,\xca\xd8\xc0\x998(\x9b\xaa\xa9\xab\x95\x08\xcdnn\x07\x96\xdf\xd5\xc9E\x94\xad\x16h\xabs\xe1\x7fd\xe0\x87\xd7\xd2\xf2\x1a\x95\xb0\xd2\xdf\xbb\xb5\xba[\xe9\x15s\xd1\xd9\x8fjVh\xe4)l<KM\x8bQ;\x1d'/0;\x9b9\x13'\x9fi\xad$\xf9\x9cdgk\xda{a\x84\xf4\xf6z\xc3\x12\xe5?~\x0e\x07\xb0\xe6\xff\xa0\xffx-\xceq\xdfW\xdb\x99\x9e\xcf<>\xe1h\xf5\x91\xb9\xda\xd4\xeb\xf1\x84\x06\x13\xef\xfbs\x19;OwM\x93\xfb\xfc\x9e4\xccw\xdc\x82\xcf{~\x05\xb2\xcf=!\xae7\x8c\xbaFh\xbf\xb9\x01g\xe9\xafVg\xfe\xfc\x833\xeb\xc9\xed\x99\x80X\xb7\xda\xeaS\xac=+\xccT\xac\xd1\xd6\x16\xbc\xa7O\xa8\x18\x1f\xcd\xa1d\x10\xa2\xf1=\xdf\xfe\xce\x01\xc6\xe0\xc4\x95\xec\xc2\xbd#H\xfds\xd4< \x98?\x13\xbe\x13\xa2uN+\xf6\xf0 `i\x9a\x97\xdeC\xff\x9b\xca.\x93\xc3{\xd3N\xdeq\xebr#4\xa1'\x13\xdd\xa31\xd9\x82!\xbfS\x9a\xa1s\x94+\xe1\xd0\xcbI\xf7\x91\"~\x94W,\x7fdI(\xd5\xc2\x8a\x7f\xbe\x8a\x12&\xcc\xf8K'\x99_\xe8\x95\x89\xdf\xdc\xc0\xeb\xafr\xf8R\x8f\xcaw\xe1\x87v\x9e\x85\x1a\xfa\xaf\x00\xa9\xc9\xc3P\x90~Z\x18!\xe1KP\x0d#\x94\xf6W\xec\xdc\x9f_\xf7\x94K\x8f\xc8l\xa6m\x18\x99=I\xb1U\x0b\x97E\xdc\xf1\"\x9f\xd1\xfcU\x0f:nIs4\x10tw\x07-z\xcc\xd20\x9ck\x06\xed\x9d\x13m|d\xc1\xdf\xadMC5\xbc\xect\xd63\xfa\xba\x15\xd8=\x19\x0f\x05\x0e\xc8\x8d[\xb8\x07\xa9xH\xc8k\"kiR\x1b\xeb\xe6\xcc!PKNCd\x06\xf8L\xd1\x19\xa0\xa8\xa1\xad\xcd\xb1\xd4\xa8\xa3m3\x04;\xd26\xf8hR\xfc\x05\xfbUPC\xdd[gZ\x1b\xd2\x01\xe4\xb2~1\xc0\xe2\x7f\xb1t\xe7\xae\x81\xa8\x16\x04\x9d6&\xd2;\x8b\xeb\xed'\xe1\xe1\xf7\xd34\x9cI\x19\x1b\xc7\xa7\xaf\x85\xc4\x81\xf0\xa9\x12\x82\xe5`Z\x90<|e\xef\xbc\x88\x0f\x06\x1ak$\xce{\xee\x9e_\x8f(\xdaV\xa4x\x0e\xed+\x8f\xbcbD\x17\x11\xe1A\x1f7_\x90\xccpV\x13\x14\xd0\xad\xfd\xb8\x12\xb7\xe5\xe7\x9c\xa6\x17\xd3D;\x8d\x8df\x9cV\\\x98*\x92\xde\xda\x82sr\xf0,\xee}T\xdc{P\xa18\xc2(\xdc~\xfa\xe6\xd9\xf1\xb1\x16O&\x01?f\x10\x84)\x8b71C\xc7\x87\x04\xd9-\x15tNnmR \x1b\xd0\x82\x9f\x9d\xc0\xee~\xf3\"{\x82\x14hXa\xad\x82\xe6I\xbd\xadc\xc9\xaa<4\x8aQ\x16*\xc03\xf7\xe0(\xecG\xede\xfc\x9dk\x8c\xc2XL\n\xc3d\x86(~G\x0e$\xbd\xa0\xe2\xda\xc9\x901\xa5\x05\xc8\xa7\x80K b\xc9\xd4Wrs\xf3\x82\x1e\xec\xef\x8d\x1e\x8aX\xa9\xfaG\x03Y\x93\x97\x8b<\xfa^\x19\xf7Q\xb2\x04\n\xc5\xd9\xa8YK/\x82\x84\xb6\x100\xfd\x01\xfe\x96\xd131!\x92\xfa!H\x1eQ'\x91\xf1\xd8\x99|\xbc\xb9A\x9e\x9b\xbf\xcc\x03Y\x1eb\xda*\xf9\xab\xd8\x04Q\"XE<\xde\xdc\x90\xd5\x02\x7f\x8b\x01\xaa\xf8;\x19\xa9J\xbdQ\xe4\x1a~)\x7f\x14\xdb.01|j\xf9\x981\nx\xb0b\x8bcQG|\"\xe8wK\xe5\xb7\xf4V\x0d\x1d\xf7.\x07\x06Q\xae\xc9\"\x06j\xb4(\x8e\xd0\x7fJ\x89\x84^\xa6\x1b\x02a\xa1:\x9fH_\x14\x11-m\xa7\x81\x08\x0c\xc5^\"$\x0d\x1c\x158(\xac\x1e\xd3P\xbb\x80<\x08\xf5A\x90\x9bFX8\xb7&\x92\xf3\x89^\xe7 \x0f\xf8\xb8\x0d\xc3'\x1e\xfc\xe0Z<\x8c\xc3|n\xb5\x07\xf4k\x9b8Z\x13E\xc3!\x9d\xe3rW\xc8G\xcb\x96\x1c\xcc-B\xf9\x88\xf3\xfc$\x91aFZH\xac<\x04[\x0c\x07\x10\xf0\x7f(\x04\x1bs\xa3i<\xab\xc7-\xdf\x1b\x0f\x9c<\x99\xdf\x99\xf6/XJ\xaa&T\xc9\xaf\xaa\xe7\x95\xd7\x1a\x8a-\x95\xb5\xe4\xb2N\x07\x06\x9f\x82<\x81C\xe0\xe6\x8aC\xa5\xa1W\x184\x085\xec\xda\x83\xb3,\x85e\x94\xf1[.\x8a\xd9\xad\x128\xe4I\x0c\xbe\xeeU\x93\x1e|\xdf\xb3\xe6+h\xd2B\xb4\xd8S\x04\x99\xb8\xcf\xaeR\x16.\xdc\xea\xf2\xd1\xa1\x1eCV\x9c\x0f\xef\xac\xb4\x1d\x12\xf8\xee\xd8\xd8W\xdaOc\x02\x87Z\xcc,f\xf3\xfd]gS\x8d\x0f\xfc\xe9\xe9\nL\xc1D\x03\xb7\x10z\xb1r\x97r<&.\x12\x89e\xcf\xb2\xe5\x92Pw\x15e\x86E\x94\x19\x8b\x9f\xf3h\x95\xad\xc3B\xa0\xd3\x1c\xee\x02-\xa3\xc19K\xdf\x84\xc1f\xc3\xd2\xa6\x05\xae\x98\xabW\xcfbG\x1b\xae\xa7\x0b\x0dL\xbc7\x88\x00\xf0\xbb\x1a\xc5\xf0pOD\xc0\x91\xf1o\xf4\xd9\n\xeb\x00~\x9do\xd3yvN\x07\xa7\xf1i\xf8\xff\xfe\xaf\x9eU\xc0\xe9\x07\xe1\x82]\xbdZ\xba\xdah\x10\x8b?M\xdd\x80\xf4\x17\x96\x90U\x01lS\xf0\xc0\xc2\"oc\xbf\x0c\x1e\xc0\x88(\x0f3\xb3\x86\xe3\x86~\xbf\x0f8\xf8\xee!\xec\x99\xb9\x946\xeef\xb8Dz\x1e\xbd\xd2Jd\x9c\xec\xd3\xa6\x97\x93Ww^\x9a\xcc\xba,n&\xd0\xf8vieZ\xacJ\xa4\xafJ\xc6\xd7\xf7\x13VE@\x94/\xd7CL\x80\xa8\xba\x80\\\x11sSJ@1\x94\xe0\xbc|4\x00\xefR\xc0\xfcn\xb9\x16t\x0d{\xde\xd5\xee\x8b.8\xbf::\x82\xd2\xcf\x90L\x19\xd86\x1b\xb5\xe3\x18\xef\xf8\xfc\xe8s\x82\x15)\x88{A($\x8f\xea\x1dFK\xbe\x87\xaarN\xb1\xf8)q0\x0e\xc6\xa3W\x98\x00\xf9\xba.\x9f\x9b\xc0\x04\xf9{Q@*\x10\xd2M0\xb9\xa096p\x85\x88\x8az\x19\xd3\xaa1\xde\xad\x11M+L\xf3\x89Hs\xa0])z\xe3\xfc2\x8e]C4\x9c$\x8d+\xd9\xfd>\x04\xe1b\x9c\xabs\x0b\xef\x94<v\xdc`\xddQ\x11y\x8a\xe4dZ*\x02(\xde\xeb\xde_\xb3\x00\xecw\xeb\x02(\xb7\xbc\xcf\xbb\x04e\xd2\xfa\xaf^\x82\xb5\xbf\xb1-\x81\xf2\xb2\xfd\xbc+PN\x12\xfcW\xaf\x00\x1f\xe0\xad\x8e\x81\xd0\x1c4\xcd?\x90\xa1{\x90\xad\xae\xb5\x0b\xfe(r\x15J\xee\xaeZC|,\xe3unm\x81\xf3\xbfBk\x87t@^\xee:8\xa1\xfc\x9dsR\xfe\xfd\xee\xe5K\xf1\xbbDg7\xeft\xc3F\xd75\xb7\x89\x19\x06!k\\8\x1dpp\x94u\xad\xc6l\x13\xb3\x84\x85\xa9)\xf5\xe1\xdc\x0f\xa30\x98\xfb\xab\x16\x99\xd6E\xaf\xce\xff:\x95\xd7\x86\x005\xab\xe8\x92\xc5s?a\xb7h\x19\xf7\xa5M\xe3\xd9fs\xeb\xc6qS\xdb4>\xf7\xd7lu\xdb\xc6\xcd#\xaf\xdb\x17\x91\xe7\xf1Mz\xbdbcp\xd4z9\x7f\xf5q?\x8b\xa2?\xf5\xb8\x1bL\xa7Z\x1f\xf7\xc2\xb1N\xe3\x8c\xe9\xc7\xf8m\xf9\xf7O\xef\x9e\xcbc\xcd\x0b\xf6\xf4\x8f\x97\xfe*)\xd4~Q)x\xfa\xf2\xcd\xf3\xbb\xa2\x85\xbas|\x9b\x81\x7fN\xfc\xe1LE&\x81o\xa2h\xc5\xfcpF}T\xf2\xd2I\nT\xa8\xe1k\xe7^\x8bmL8\xc1\x9a\x82\\\xd2\xad0\x91\x0b4\x06\xb1KmN\xb1 E\xb4\xea\x8b\x16{,\xf7\xbbM_&\x8c\xd1\xae/9\xaf\x17\x96y\xfd\x1d\x10\x88%3\xe2m\xb3\x9aV\xf2\xa6\xed\xe5\xe344\x94\xb5o\xe8\xa1\xd6\x90|*c\xba\xc0\x84\xe9\x820\xfd; :\x12\xd7\xe8\xb2k#\xe0\x04v\x87zS<o\x90b\x93\xb8\xd10\xd6\xd9&\x13(b\xd5\xa6\xc1\x0c\xb93\xa7K\xa5,\xe7\xe2\xa6\xddn0\xf3z\xe0\x0c\x08UX\xed\x13I\xde\xd1\x15\xe4X\xdc\xe8\xf3\x85\xa38\xa3F\xf5\xael\xed\x83r\xf0\xe8v)?M\xfc\x04\x82n\xd7\xae\xa8\x06\xd9\xcb\xfb\xf2\\\xeb\xfa(|9\x90\xeb\xc1\x17g(~4\x86\x10\xd0\xff|s8\x01\xfd\xcfn\\\xa9\xe4\x13\xbc{1\x0b\xb3\xa1\xa6]\x8d\xee\\5l\x1c\xfc\x05\x0b\xdbqE\xb0\x002\xd8\xd0T\"\x01\xc9 B\x11:\xe0\xe6\x06\xf6\xf7\xf8s\xa8J\x1f\xa2\x89\ne]\xccK\x87\x83Q\xbdmv\xf9\xef/\xdd\x18\xa1\xbai\xb3\xd8w[h\\\xe4\xc8-/m\xeb\x15jX\x1d\xf3\xac\xda\xad\x8a9&\x02\xaf\x7f\xd8x\xbaZ\xae\xdb\xed\xd7\x0c\xbf\x18\xab!\xb4\xb0\x0e\xefdw[\xdd\x9a\x95\xb5;8\xbb\x1d\xd4\xedj\x8b\x84\x14\xecXC\xd7\x0f~u\xc7\xd3\xc1\xf6\xdel\x82i\xf8\xbc\xee\xd7\x0f\xa4\x05\x83\x90gz\xde\xe7\xa1aK7\x98\xfd\xea\xb2D\x90\x89,\xa1\xb7\xc4dE\x1a\x94X\xc9\x96\x9d\xf7\x0e\xcd7\x06\xe1\xd9\xbe\xf2\xe7\xcc}\xf0\xfe\xc1y\x0f\x1c4\x1f.\\g\xf1t`\xba\xcex\x9d\x9c\xfa\x0f(F-\xe9\nD\xcbJ\x9b\xcf\x1b\xc8\xaf\xbc\x18&\x18\xebV]\x81\x9c\x8e\x137W<\x1d\xce`\x02\x01\xdc\xd7\xb2\x12\x8a\x86F^\x0fF\x1e\xff\xf0\xaa\xa6r\x0f\x86\xfb\xbcR\xb9\xf4\x91\x87\xe1R\xcak1v\xd0d&\xee'\x9bU\x90\xe2\xef\xfe2\x8a\x9f\xfb\xf3\x0b\xb7\x99\x12\x8d\xfaY\x98\\\x04\xcb\xd4U]\xa5\x98@\xd1`\xc6$\x1c\xa4E\\\x80a\x0f\xa2[t\x84\x8a\xda\x14\xees( \xe1\xfe!\xec\x1bB\xea\xa0\x8d\xe2}\xb2y\xaa,\xca\xa0\x16X\xef\xcc\xf8\x9cd\xeb3\x16\xb7\xe5{\x88\xe2\xfc/$jHS\xd4\x89\xfbAr\xc2\xce\xfd4\xf8\xc8\xfe\xc5\xe2\xe8S\xb8\xa3\xb3 \xf4\xe3\xeb\xa6)\x80\xceB\x08\xbfTgp&,l\xc5\x88]\x82\xb4mC\xb9\x82\xeb\xea\x0eT\x0fh4O\x0b\xa2\xa1[\x8c\xa8\xd4\xf1#1\xa0J\xf1\xad\xc6#\\ko3\xa2\xbc\xaf2\x10\x81\xb9\x0f\xcd\x85\xf76\xfd\xe43\xbf*\xcdq\xb8\xef\xf5\xd3\xe8\x1d\xe7G\x9f\xf9 s\xc5J4V\xabY\x99:\x18+\xb1\x85b*%N&\xe1o\x9f\xae\x02?aI\x1d,NG=p\xce\x82\xd01$\x11\x12\xc01}\xd4\x03'\x9a\xa7\xa6*j\x1d\xa7\xc3\x01\xa6\xa8\x9a\x9bj\x15V|:\xdc\xef\x81s\xc1\xae\x9c/\xab\x07\xb0r\xb5\xc5\xd2H\xf0\x8f?\xb1\xf3\xe7W\x1b\xd7\xf9\xd5\x9d\x8c\xa7\xdb\xdd\xd9\xc4\x9d\x8c\x077\xd3\xe1\xf6\xe3\x19\xbfa\xdf\xcf\xee{\xeed|z\xda\x97\xbfx\x85){>\xc3\xca\"\x17\xee\xe4FU\xe8\x1a_\xe7\xbfD3\xeed\\\xbc\xc7\xf3\x1e\xa8\xf2\xe9i\xdf\x9d\x8c\x83pys\xcc\xff;y\xe1\xddPQ\xe8\x877'\xfe\xc9\xcd\xc9\xd3\x13\xcf\xfbZ7\xb9\xc7\x80\xfc\x98\xadW\xeb\x9c=\xb0K \x8d\xbc\xf3r\x15\xf9_\x84{\xd6\x85\xdb\xa4\x15\xe1\x88\xd6\xedD\x82\x80\xf1t\xda'\x9d\xeaf{\xb3\xcfN\xd2\x18#\xc1\xc8\x11\xc2!H2BX\x1eW\xa8\x91~\x1a\xbd\x8c.\xe5\x89\xe6\xa4\x04L\xf8=>\x06\x11\xfcw:\xeb\x81\xd3\xdd\xceu\xe7\x0c\xe9\x95#q\xc1\xb8d\xf2\xa7h\x91\x1e\xf0\x9a\xcb\x9c\xf4\x10\xa6G0\x11wY\xff\xf5\xab7\xc7o\x8f\x7f~\xfe\xfe\xf8\xe4\xc5\xf1\xc9\xf1\xdb_`,_\x9d<\xff\xeei\xf9\x95\xd3\x0f\xfd0o\xee\xc4?\x811\xb0\"\x85!0\x9b\xcb\xeeFf\x04E2\xe3\x05\x07\x9cZBCX\xe7\xc5Dh\x04\xb7\xe8\x8aIB#\xe6\x9f\xdb \x8d\x10\xees\xb2y\x8c\x0f\xda\xa8\xd8\xdf\x89\xd4p\x89\xd6\xe8\x1c\x92\x1b\x86\x81\xd4hKk\x14\xf0\xa4\x0d\xe2C\xb3l(HN\xfc\x13\xde\x17$\x97A:\xbf\x00\xd7*;\x98\xfb \xd3\xe5\x90cc-\xd0\x16\x07\x81\xcf\xcc\x1dQcJ\x8a\xdb\xa6\xb1\x93\xa7'\xb5\x8d)1m\xab\xc6\xfc\x13\x83<6\xf7x\xb6\x1e7!\xf4\xfb\x12\xab\xc5O\xfeg[\xad\xe3\x93\x17\x9fo\xb5\x8e\xc3e\x9b\xd5\xaab\xa0/\xb7Z\xdb\x9fu\xb9\xb6?\xebzm7.\x98\xe9\xb4\xe7\x9f\x0f\xfa\x03\xc3X\xb4{\xa9H\xf6\xf6 S\xc9\xbc&\x10\xaak\xcaa\x0e\xbfP(\x02fX\x87L\xfe,]C\x99\xfc\n*\xe4\x97\xa2\x8e\xb4\xffy\xdb\xae\xed\xc7\xd7N#A\xd7\xd8\xe2\xa4\xf4\x8b\x93no\xd3\xd9\xcd\x14NO\xd3Y\xd7+\xbc\x1c\xeb\xbd\x17~\x10}H%\xf7=\"\x10\xb1\x85\xfb\xee\xbfn\\N\x8by\xe5n\n\xdf{\x13\xcf\x9b\x14(\xb9V\xea\xdc4X\xb3$\xf5\xd7V+\x96\xcfN\xac\xe5\xe1\xca\x83>\xbbbsA\xb3\xa9\xd2H\x96~\x01r\xcd\x10\x07\xc5\xa23\xd9\x08\xb7L\xf3\xb5\xa7\xf47H\x81\xa9yx\x8a(\xcb'\xa1\xe7'\xf74\xf3\xee\xe7q\x1c\xc5\xae\xf3\xad\x9f2\xe5K\xcbx\x99)(S \xf2\x89v\xd9t8#\xda\xa7\xcb\xa6\xa3\x19y+e\xf4sg\xd6\x83\x0e\x9b\xee\xcer\xf3Wv \xbc\x03\x97\xff\xaf\xff\xee\xed3W,\x83\xc9\xff.\x10\xe1)\xba\xbc \x8aN\xd1e\xd3\xbd\x19\xc5\xa5\xe8\xb2\xe9\xfe\xac\x07l\xfapfC\xc2(p\xc5\x80\xb7\xd3\x873A\x94\x0ez\xb0\xe3=\x81U\xeeK\xb9\xf3\xc4\x83\x15\x1a\xf6\x99\x90\x14\x88\xa8\xd1\xddU\x15\xfd\xd9\xc0\x8bM\x1f\xcfp\xe1\xf9\x9e\xed\xb3]\xb8\x0f\xee\xfe\x00\xee\xe3j\x0df\xd0\x85\xae\xcb\xa6\xc3\xe1\x8c\x83\xd9@\x8a\x00qC\xf4/\xb77\x9e\x88\xcb`]6\x0dzV\x1eFS\xdf\xda\x82e?a\xe9\xdb`\xcd\xdce\xff\\<y\xb0\x8d\xc13\x97u \x1c\x84I\xea\x87s\xf6j9\xc6\xeeZ\x10h5\x87\x8c\xe3\xf4\xe37\xaf\x04Z\xb7:\x00|&<|K,Cy\xf7\xbf\x1c\x86q\x0e\x0e4\x8b\x08\x9b\xe5\xd3\xe7[\x05m\xfa\xf1uiX\xb4D\xfb\x8f\xbc\xfe7h\"\x9c\xf7\ns\x1f\xc9\x18>\x93?\n\x0d\xda\xa5\x0b\xce\xd3o\x9e}\xfb\xfc\xc5w\xdf\x1f\xff\xe3\x87\x97?\x9e\xbcz\xfd\xdf?\xbdy\xfb\xee\xe7\x7f\xfe\xcf/\xff\xf2\xcf\xe6\x0b\xb6<\xbf\x08~\xfb\xb0Z\x87\xd1\xe6\xf78I\xb3\x8f\x97W\xd7\xff\x1e\x0cG;\xbb{\xfb\x0f\x1f=\xee>8<\x0dOc\xe7\x96\xec; x\xbe\xc4\x86\xddY\xfbm\xc1\xd3A\xa3b\x9cc\xc7\xc8\xa2\x1e\n)\xf2_H\x1eCa\x9d\x8e\xa8\xe3\"b\xcfr3vi\xbcN1\x00a\x7f\xb7Qk\xc4\xe0\x00\x06\xad4?(\x13\xdf7\xbe\xb6\xe2\xc1\x18\xfe\x0b\x1e\xa1\xf0\xb9\x08\xf6\x9f|q\x06E\xe9\xc5\xf44>\x0d\x0fgB\x86a_\xf4\xa0v[|\x8c\xffc|\x95\xd8\xb7{n\xd1\x07)\xff\xee\xc1\x13\xe0\xab\x9c=\x01\xd6\xedz\xc0\xe0\xbf\xd0\n\x8c\xe4%\xa4\xce\x99\x8b\xfc\x10pt\x04\xc3}\xd8\x82\xd1\xde\x9e\xd7\x03\xbd\xf8Q\xb9t\xb4\xb7\x07[\x90p\xa4\x9f`\x12\x90\x83\x03\xd8\x87\x1b\xf0\x158\x04\x12\x1c\x98\xe9r\x15[4\x00\x19\x087\xc3\x81\xdd\x87}T\xd1|\xd2\x90`\x0c\xc3GJ\xd0Slk`lk$J\xf1S\xe1q\xc8\x97F\xaf\xb3\xab\xbe\x8c1\xe9\xc62\x8e\xd6\xea\xc1\x9d#O\x80\xe8\x1e\x1f\xe7u w[\xa9\x08\x06\xf6\xe0,\x0e!\xd0\xf6Z\x93\xb6\x00\x1d\x93s\x8b\x15\xa1X\x80/k\xc45~\x0d\xae\xb1@\xe7N :\xf1\xe4\xfb\xd3\x00\xb7\x8fo\xfa\xfe\x0eR|Z\xe9\xc8T\xba_*\xdc\xdf\x81-@s\x1c>#7\xe0\x10\xfb\xc8\x83.\xa4SfW\xa8\x16\x01t\x87\xf4\x87\x9fyD0\x86Q\x0e\xae\x85v\x06\xa6vv+\x85\x07\x07P\xeeq\x7f\x17\x1b\x1e\xe6\xc0\\h\xb9:\xc0\x83\x83J\xc3\xfb\xbb\xc5\xf6z\x10\x17\x01O\xfd\xfad\x02\xc2\xca\xceVd\x7f\xc58\x93U\x02\xc1*,\xbc%\x89\x16\xd5x2X\x9c9>\xf1\xca\xb7\x19\xf2\x97\x985\x12\x83[o\x03C\x80\xca\xfc\xb8\x91>z\xae\\\x83\xf9\xe1\x0b\x9f\x90 \xd8\xea6\x16\x88|\xa1\xf3)\x9b\xe5I\xc0\x94\xa8\x96\x16|\xe6\x08f\x15E\xb2q\xb3=\x87\x08\x84\x13\x84\x10\xd7\x1b\xf0\x04\xa2Id\xd3j\x08\nY\xdfo\xecZ\xfe\xdd\xc9P\x07i\x9f\xe6>x5a\x81\x90\xa8;1k^\x16\x11\xce\xa2U\xd2\x0e\x058\xc5SyG\xfa\xa6*\x9c\xf8\x93<\x8cZ\x1c\xfa;\x9e\xe1\x8d\x1f\xc4\xc9\xdf\xeb\x10\x0b\x7f\xdd\x9a\x83\x9a\x89\x19=\x8dc\xff\xda\xf5\xa5\xdb\xa3R\xf4\xf0\x13\xec\xdf\xed\x04\xfbx\x82\xcd'7h}r\x03\xf4\xe1G\x93!\x0d\xe1~`\xd7 \xff\xba\xec\xd6ok%\x9b\xb2\x19Ge\xd1t\xc0o\x19\xfcw6\xfb\xd3\xa1\xde\xb2\x8f&\x9a\xfac9\xd4\x99\xf0\x06\xb6\xeccT\xd8\xc7\xcc\xb8\x8f\x99m\x1f\xf9ne\xb8[Ae\x89{\x10\x89\xb5\x0b\xc4\xda\x05\xb8vV\"&\xfa\xeb\x0fp\xf1\xd6\xbe\xe51N\x98Uun\xf6)\xfcrg\xb8\xf6\x82\x0dB\xb0\xc4\xfe\xd2\xee\xb1\xb0'L\x10\x15\xa2\x0d\xa7lV{\\>/\xc4\xdb\xf0\xfc\xdf\xcd\x8f\xf2\xb7\xe4A\x16.\xd82\x08\xd9\xe2\x13%/5\xcbp\xfbE\xf5*\x19\xe6o\xcb\xcf}\x8c\x82\x85\x8c(V\xd7\xbb\x89\x93\xab\x13\xfa\xfd\xcd\xbc\xa1\x7fK\x1e\xc4\xec\x9c]}\x11U\xca-\xe4f\x01F\xa6\xc1zm.'\xe5Mg\xa6\xb19\nxp\xfa\xc0\x9d\x9e\x07\xeb\xd9}\xef\xeb\x07R\xb3a\xae\x1e\x1bb\x0c\x80\x18\x94\xf3@\x8a\xdd\x07V%\x02i:\xa4\x05o8\x1d\"\x1b&\xd5\x07G\x9c%mq]\xf3\x9e\xd0\x9aw\xcar\x03\xa0\xb8`\x0b\x947Si\xe5K\xdf\xc1\x7f\xce\x8a\xcbS\xa2-:\xa9\xdf\xca\xab[0\"\xea\x81e\xc5P\x93\x95kFY\xaf\xcc\xc7|\"\x92PT\x1au\xd0\xd6\x14\xe6\xb6\xf8\xa4vC\xf8Zu!\xed'Q\x16\xcf\x19ty\x81ua\xd3\xfe\xf9*:\xf3WB\xe7\xd7=\x04\xe7\x9cB\xf5\xe5\xa9\xe7\xf3Wkz\x15\x9c\x87Q\xcc\x9e\xf9\x89\xfe.\xe0\xef\xd8\x97BfO\xb4J\xea~\xd1\xa21]\x06\xe1\"\xbaT@A?\xfb,\xd9\xc4\xc1\xda/\x19\x06\x06\x8d\x98\xd1\xa8N\xf8-y \x07\xff\x17\xe3\xc6\xaa\xbaF\xfe)\x18p\x11\x06\xf8\xe6{\x16\x11!\xc8\xf48}4\x0e\xe3g\xa1\x9eM\x8f\xfd\xf0\x9c\x8dkyo[TQq8^\xc7\xd1y\xec\xaf\xe9P\x84\x18\xfb\x8e\xef\x98\x0c-v\x16-\xae\xb58<\xce\xf3+\x0e\xf9I\x10\x85oR?ek\x16\xa6\x8eVu:\x98\xa9&\\\xe7i\x1cG\x97/\xc4\n\xe7_\x96?`\xea\x0d}\x8bN\xcf\xb7\xfd\xca\xc0\xe6\xebZ\xb1\xba5hD\xd4\x9f\x84\x8eEt\x9c\xe6\xcd\x0f\xb4\x8d\x0f\xeb6\xbe~\xd3\xff\xb0`s\x9b\xc3\x0b\xdej\n\n\x88\x81\x95\xdb0\x14\xbfu(\xe0\xbbc\x84\x82\xbc\xaa\x82\x02^\xd7\n\x04\xc5\xfae \xe0\xc0v\xeb\xaf\x0cf\x10/\xfc`\xc5\x16\x90F\xca\x16B!\x0c\xbb6\xc5\xd8\xc1\xc6\x8f\xfdur\x0b\xab\xd0H\x06T\x0d\xfd\xb5 >\xc5\x0di\xec\x0cW\x1c7\xba\x07\xce7\xabh\xfe\xa1t\xde\xec_\xe1\xf2Mp\x0d\xe4\x02\xbaQ\x0fB\x199x\x8a\x96\x0b\xfc>\x9e\x0egt\x01\x0b\x95\x8b^\xdd\x91\x08\x02#F\xe5\x9f\xd2g\xf5&4w\xbe\xa1\xe5\x00\xfe\xd4;Z\xdd\xba\xcat\xed\xcb\xda8X<\x00\xf6F&\x8b1\xf7\xd1N\xa98\xa3\xda\xe5b\xbfN\xdaW\xac\x9a4\xcb\x15J\x08\x0f\x0e\xe1q\xb1h \x870,i\xb3Vp\x08;\xa3\x12(\xf0\xb2\x9db\xd9\x05/\xdb-\x96-x\xd9^\xb1\xec#/{X,\xbb\xe6e\x8f\x8ae\xe7\xbc\xac4\xbe5\x1c\xc2ni,\xefyY\xa9\xdf3^V\xea\xf7\x12\x0ea\xaf\xd4\xc7\x15\x1c\xc2~\xa9\xbd7\xbc\xac4\xb7\xe7\xbc\xac\xd4\xc7S\xbe|%7\xc4W\xbc\xac\xf4\xedo\xbcl\xbfX\xf6\x01\x93\x15\x96*\x1eca\xa9\x97\x1f\xb1\xb04\x95\xb7ph\x80\xf8\xc1\x18\x9c\xd3\xd3\x81\xe1\x1ez\x88o|\xc3\x9bG\xf8\xe6\xcc\xf0\xe61\xbeI\x0do\x86\xd4Qhz5\xc4W\x1fM\xafF\xf8jiz\xb5\x83\xaf\xca\xd4\x1c\xff\x1b\xd1\xd0\xcbBh\xfe\xb7\xb3;\x86{\xa7\xa7\xce=\xc3\xd8\xa9\xaf\xd3Scg\xd4\xdb\x89\xe9\xdd>M\xed\xbdi\xa5F;\xd4\xeaK\xf3Kj\xf5uI\xc6P\xac\xfa\x8c_\xd6\xce\xb5\xd3\x03\xe7\x17\xfe\xbfk\x96\xe0\xb3\xf8\xe7\xf9\x1b\xfe\x0f\xd2\xbc\xce+\xfa\xff \xff?>\xd2S\x84\x8f\xf4\xffWX{\xb9\xc4\x8a\xe2\x9f\x17/\x9c\x99)\x90\xc6\xeb*\x92\xcc\xc5\xb5%\x0d4Y\x9e\x1c\xd6z\x93\xf5(X\xc6ho\xcf#B\xe8\xca\xa1h\xbd\xa3b[\xca\x02\x19\xab\xef\xef\xed\xed\xc8\x0f2\xf1\xc1\xae\xe1\x033\xc9\xde\xa1FvG\x8fw\x1f\xef?\x1c=\xde\xf3\xbcb\xf8\xdby\xb4`\xb0\x89\x82Bz\\\x8av\xb8\xf6\xafe\xda\x85\xf3\x98\xf9)\x8b)\xf3\xc2\xe0\xea\x85\xf83\xd1\x0d8\xd0wb\xa0\x8f\x8a;[\xf8%o\xbc\xd3SG\xc4p\xcc\x836\x0e\xf0\xfbm\xc5'{\xd0\xd5\x987S\xb0\x92\x9f\xaa\x9b\xa5\x85\xac\xc6\x9d\xc9crG2\"\xb6\x0c0\xfd\xa3\x9f^\xf4\xd7\xfe\x95\x8b\xf9\xc1E\xf1\xcd\x0d\x8c<\x19\xda\xfbC\xb09\x0e?\xfa\xab`Ami\xbf\xf58\xdc\xcbUt\xf9\x92}d+\xa4`\x83\xe4$\xe2kz\xee\xa6\xf9\x1bO\xfa\x1fie\xb2\x97\xf4z%\xe2m\x17\xaeU\x1bE]\xcd\xffkH\xdfU\xe0\xdcrw\xfe\xff\xfca\x919\x87\"\xfb \x19iP\xc6\xd5\xb8\xa40`J'C\xce\xff\xd1\x13\x8a\x88:\xa4\x8c\xe4\xf14\x10Z]q\x16\xd84C\x0f\xeeN\x87\xc8\x99,7]\x1d\x91A/\xff\xcc\xc0\xd5r\xd0\xc8\x94\xff\xb6\xd7\x03\x97\x12\xb8\x95B\x90\xf7eV!\xde\x0foOdt\x98\xf7u7\xcb\x1e\xf8\xd4\x99\x8f\nk\xfd\xd5\xd4\xe7\xe3\x0b\xa7\xd9\x0c\x0e\xcb\x91oA\x13p\x17\xe1\xd9\xd5@\x8c\x03\x0e\xb6\x98H\xf3H\x05;Q\x9c\xfe\xc0\xae)\xd5\x8c\xfaQ\x8c\xde\x1e\xb2\x7f\x06\x0b\x19=]\xfd\xba\xb9\x81G2\xf6y\x18\xfd\xc4\x96\xd4\x86x\xd4[\x08\xa3g\xd1z\xe3\xa7?\xf2\xe3Lu\xb4\x02\xbd\xe6<\xe2\xd0\x8d\xeeV\x97b)\xb5\x02\xbd\xe6\x1d\xe2\xc5\xcb\\Du\x9f<\xbf*\x86\x98\xc7\x9cWa\x1e\xa6\xbe\x98I\x9a\x97,2\xfe\x85\x9f2a\xa7@\xa5Y\xc2\x16\xdf\xeao\n\xc1\xfdL8\xe2\xc4x\x98\x10\xe8\xc5i\n\xe0\xb0\x14:\x96y\"w1)\xe6\xb6\x87\x04\xd7|l\x89f\xaa\xf4\x04\"8\x80\xe4\x89\x879\x1a\xd0j]\xa6\xe6\x17n|\x98\xf8?\xf2\xd0\xda\x87\xfcCD\n\x0b\xd1A\x82\xa9\xdd\nox\x97\x14\xc65Bc!z\x0eu!\xc4\xa9\xe0\x03C\x01\xd7\xddC\x08<>\xc4\xeea\xd9\x9dL\x80\xb0_\xbbD/\xebbo\x9bc\xebJty\x1f4\xce\xce\xd4\xf6\xb7U\x14-\x19\x0e\\\xb1\x15\x87>z\x9c\xd76\xf4okC;\xa3b`\xaa\xe1h\x1f\x99\xf7\xfda9\xf2\xd5\xe8\xf1\x1e\xff\xc5)\x94\xdcm\x82\x93$\xe2\xd7\xcd\x0d\xec=\xdc\xd9\xdd-~\xc7/\xe3\x1d\xfe\x8b\x92Q\xa8\xaa\xbc|\xbf\xd4\xf5p\xb8;\x1c\x0ek'\xf2\xc2:\x11\x9cb\xa9\x1fl\x99?\xbe\xcf\x1f\x9f\xe6\x8f\xaf\xf2\xc7\x0f\xf9\xe3\x8f\xf9\xe3e\xfe\xb8\xa8\x1d\xd6;\xeb\xb0\x1e\xfcz\x1a\xde\x07\x19\xc8D\xdfn\xf9\xc4\x0f\xd27\xd5X#\xbfs2\xa7X\xf4\x0b\xe7U\x8aE\xff\xe4\xb4M\xb1\xe8g\xc0\x88\xd2\xd5A\xfeP\x1fg\x9d\x8f#\xd2\xed\x9b:\x86\xe8'sK\xf9\nO:\x85\xfa\xa8\xbe}Kx\xa0R\xce)\xd5\x7f\x8b\xec\xa3\x85\x04%\xa5\x9d\xc4x<\x9do]\xba\x8c|,;\xcb\x1f\xdf\xe4\x8f\x97\xf9\xe3\xfb\xfc\xf1i\xfe\xf8*\x7f\xfc\x90?\xfe\x98?.\xf2\xc7\xeb\xfcq\x9d?n\xf2\xc7\xe3\xfc\xf1*\x7f<\xcf\x1f/\xf2\xc7\x8f\xf9\xe3\xf3\xfc\xf1713{V\x17C\x82\x07\x83<H\xd9:\x0c\x08\xafjX\xb6\xdb\xad\xd3ju\xfe-\xd0\xae\xd6\x7f\xa4\x05\x02\xfa\xd9,\x01\xe6;\xf7\x8c\x8f\xfd\x85\xd1H\xcaF`\xdfy\x98\xc6A\"\xe2[z\x04\xac\x83\x1e\x90\xd2\x83\x83\xe8\x1ciV\xd8\x86\xb7x\xbb\x1c\x91\xf1\xae\x03\"k\xe6\xf4-\xbf\x19f=\x04\xcc\xc8\"\xe4VL\x05_\xa2O]\x10\xe3A\xc2Q\xe2\xa0\x1b\x87\xfa\x95\xbd51.\xa4n\xe60\x81\x10\x8e\xe01\xe49\x96~\x861\x96\xff\x13\xc6\xf0\x0b\x8ci\x94\x9d\x80^~\x03c\xf8\xbd\x16\xb5}\xa7a\x8d\n\xbf\xd0_d\xeb\x02\xedmS\x84\x90\xe6\x97\x955\xbf\xce\xbd{\x16\xadl\xa7D\x90Q\x1c\x7f\xbe$\xcf\xf2\xb0\x03\x9a{\xe9=\x8c\xc6\x0e]\xfed\xd6&G\x8a\xba\xc0\xabWg`\xc2\x1a\x7f\x01\x91=@'2\x057\xa2Z\xa0\x87 t\xb5J=\xd8\x1d\xa8\xe4\xc8\xf4\xd96D\x96~8\x06\xc4\xdcC\x1a\x83\x03G\xbc\x17\x0c\x0ewt\xa8\xbf\xa8\xceN:\"\xff\xe0\xb2\x1ee,\x0eD\xa6\xe6L\x936Z\xdd\x94\xc5\x126\xf2O\xf2O\xf2Q\xe6\x83\x00\x05/\x16\x19#\xd2\x9cV6\xa4(h\x94\x1a\xc8n\x7f\n\x02&\xcaYe\xc3\x99J7\xaa\x81\x82-\\#\xd4*m\x00TF\xa4\xea\xe9\xb5Z\xbc\xa2\x17\xf57\x8d\xbe\xd3\xcc<\"\xfc\xfa\xf7\xc6\xaf\x05l\xe7\xae.\xf7\xd0\xc9\xe5\xde=\xc7\xb3\xc1;\xc8\xd6\x7fin\xfd\x86\xb7\xfe5%\x05$\xb8\xe1\xcd~\xef\x9e\xf0\xa2\xc8\x96\x13\x11[\xffgs\xebG\xd6\xd6[\xc3\x1b\x14yw8\x84\x07\xeei\xd8\xf5\xdc\xe9\xaf\xa7\xe1\xec\xbe\xf7\xe0\xdc|\xaa\xf4?\xe4\xc9\xfd\n\x7f\xe1\x11o\"0\x8b\x0f\x13\xf0Q\xcc \xbc) \xe8\xaf\xfc$=\xe6_P2\xf0\x7f\xa8`t\x83\x1e&\xdbf\x9e\xe5L\xeb\x7f\xc8\xaa\x9f\x862\xfc\xcb\x00}>9\x8a\x97\xbf\xed\x10\x0bb\xf2\x06\x0e[\xff\x13a\x05c\xdd\xef\xd7\x9a\xcdS\xff\xe3m'@\x91\xdd\x9a'\x02\xe2\xe6\x8a\xa7\xa3\x861\x83\xca\xffB\xb3\x9c\xa3\xfa'\xe2'=\x81.\xe7\xf50\x9b=_\x07Q\x01&\xfcqL\xc9\xeb\xa0\x0b\xffp\xe7\xc4L\xa2\xd2\xa2\xb63{\x98K\xc8A1\xb2V\xfa\x83\x83g\xe65A\xfb\xcf\x8d\xd0~\x0f3\x934+\xf7\xe4\x9fb\xa4s\xaa\\p\xcaV\x1aI\xc8LK\x84\xd0\x111h\xfb\x80\x0e;\x9c]\xdb\xdf\x19\"\x11P\x8dO\x1a!WL\xdf\xec\xef\x8c\x06\x90\x07+\xdd\xd9\xdd\xe1\xcc6\n\xa6^\xbb\xc3\xc1\x08\xbd\x96\x19lS\xeb\x949f[|\xd6%\x1e\x8e/\x1b\xa7\xdd\xc6$\xf3z+\xcce\xbb\x87\xd0AJ\xe6\xdf\xfc\xe2\x99@:\x8df0\xa6[\xee\xb5\xd9\x1bM\xff\x93\xba\xd4\xba=\xf3(}\xa8\xb9!\x11\xfc\xc1\xbee\x05\x99n\xb0\xdeDI\x12\x9c\xad\x84\xb7\xfb\x18\x02!\xaa$\x0b\x10\x8a=\xe64\x11v\x7f\xb8\xf5\xfc\xfc\xd7\xf64Rp(\xe95)\x00\xc4\x90k\x06-@\\D&\x85XRF\xf9E\xc8\xcf\x1b%\xd46\x7f7\"|\xa4\xde\xf1Q8]\x07\xb7K\x1e\xcam\xbalNC\xa7v\x86\xdf[\x19a\xdb\x909l\xe4(u{\x88\xb9<k\xfb\xf8\x87q\x15\xd1\x14As\xb7\xd6\xd1\xab\xa2\x0dJV\xc3\xba K^-0\xfd\x15\xd0\x8bT\x93a\x0d\xe8\x9a\x18\x10_\xec8Op\xbf4D\x8bWKHW\x8b\xc7 =L\x04%\x8d\x9728\x82\x08&\x90\xc1\x98xk\x91\xa2\x93\xac\xba\xa4\xe4*\x16R\xabXH\xad\xb2\xaa\\U\x91\xfa\xa2\x81\x9e\x9e\xe8T\xf5)\xbb\xc3j\xbah\xcc\xcb\xb3=\xc9b\x12\x91\xc1\xb8T\x193\xfcVB\xf9\x996\xe3_&-6H\x9d\xb5\x94\xb3\x8b\xc0\x16\x86\xd5\x17\xcb\xcb/\x15\xb2\xd5Gx(JE\xc7e\x022\x17\xa5gp\x00s\xfe\x8f\x99\x82D\xd6\xd1]r.o\x9a\xcd\xbc~\x1e\xdc\x80\x83\xc8\xb2\xaf\x8c\x0dH\xca\xddY\x96j8d[\xc0!I\xa5 $\x1c+\xebEK\xd0?R\xed\xa8\x96K\x1dq\xd4W\xc7\xe8\xa6R\xbc\x0b\x13X\xe2\xf3\x18\x9c\x89\xd3\x83e_\x19%\xd4]+\xbc\x8d\x15\x89D\x85jd\x8a\xcd\xcch\x1czL\x9c\x9e\xd5v\xc2']\x80\xde%9Ch%\xfc\xce\\\xd5`q\x8b\x04@\xffC>/\xa9\xf4\x85a,\x8a\xf8\x99\xb2\xf1/E6\xfe{G\x98\xa2_\xd0\xfe1\xf8\xf39\xdb\xa4 \xaa\xde\xf0\x06^QN0\\\x81{M7MqZ\xd3\xd5\x8cff\xbfy\xecW\x8ad\x87cc\x95\xda\x90\xd3\x06\x83,#\x9b\xdf\xa9\x97\x8f\xfeOA\xc6G\x87\xbe\xcc\xb3\x17\xf4\x07r\xc8a\x8f\x8er\xd8\x83\xce\x10C\xdf\xa8\x9f\x03Cj\xe0\x04\x14\x94P\x13\xe5$\xad\n\xf9\xe9,\xed\x01E\x85+r\xb9\xe5\x14\xa6\xbc\xf9y\x0fV=\xb4\xff\xa8\xbaIq\x00Ea\x87z\x85\xbe=\xf2MU\\\x86\x02;W\x93P\n\x8dX\xae$Q<A\xe8\xa1\xc6,\xf7\xca\xc0\xc5\xda\xda\xe2GP+@\xb1\xcd\xcd\x0d\x08A\xb8\x14* b8\x02\x91_9BQ\xa9'\xc4RiI\xfb2\x9d\xcf\xbc|\xf5\x9d\xfb1[\xbe\xe70^RG\xd6(\xaaqZ\xd8v\xc7\xd08\x0e\xc1T~H\xf9\xc3-\xeb\xea\xd1\xceQ\nY]\x7f)vY^7\x13p;\x15C&\x83\x84H\xfe\x15\x85\xcb=}\x83k\xccYI\xbb\x97\xfa5\x0c\xde\xa2\xa4g\xb5%\xc2G\\#\xfd\x0f\xa4J\xd1\x83\x05>\xbbM\"@-al~\x13\x18\xda\xd1\x8a\x1aZ\xd4?.\xa0:\xa5\xee\\g Z\x12\xf8pF\xa9n([y\x9d\x05\"\x14D\xacDB,\n\xfa\xb6\xec \xf1`C\x0fE\xf6\x9c\xd5\x10\x1b\xceW&\xe2@\xedb\x1c$\xa1\xd6\x12\x91%\xc2)'p\x16\xd3h6\xeb \x1cCf\x80>\xe5`\xa7\xff\x08\xee\xf1t\xb58A\x02\xf8\xf1l\xf0\xa7\xdc\x9b\x823\x1e2\xeb\xbb\xac\xb3\x14[\x875\x8b\xc9\xcc'\"r\xd3\x84\x13\xaa\xe2\x11\x1c<x]\xf9 \xa70\x08\x0b\x14\xe6\xa6O%\xa1i\xcc\xef\xd0\xf38\xefy\x0c\x0e\x87\xeb\xee\xa1\xde\xbb\x8d\xdb\x91\xb8\xf8BC\xc4\x1bDm\xff\xf9\xc3\x10iO\x9c39\xa3H\xe2\x167\xc7#[\n\x8f \x91G\x9ds\xde\xaczZ\xeb\x8ej\xc9F\"i8\xa7\xf3\xe6s\xbalyN\xcb \xb4\x97\n|K \xb4\xfd\xaa*~\x82\x0c8rM\x02\x83\xd15\x84\xba]\xa7\x870\x81\xc2\x84)?\x1f\xcbi\x9cC3N\xb63\xa4\xcb/_\xd2\"Lj\x8d\x11\x80\xf9\xf9\x16c2Q\xdbp\x90\xf0\x1e;\xc6:\xc4^asr(Yq(H\x9a\xfb\xed\xa1i\xaeA\x93\xf3\x1f\xdek\xc2\xfbo\x84\xa8&pr\xc0\xd1\x80\xaa:\x86\x1c[\x1a/\xe6\xc2\xd5R\\\xde\xbb\xdc&\xb9\xebo\x1dd\xfa\x122k\xa0M3\xdb m6::\xa2\x08\xd1VGGy\x1a\n\x0d\x10\x85fE4\xd3\x12\x99\xe0W\xce6\x07\x08\xf1H)\x82\xf3\x9d\xaf\xdfx_\xdb\xf8\x8c(\xa4Y\xd3\xa6\xff\x19h\xa4a\x8f\xb2\x16{\xa4a\x84\xd0\x86\x11\x14\xed;\x8dg\xc5\x13\xa4#\x83\x88\x90A\xc3a\xf4\x84\xac\xb2\xd5\xbag\xfa\x81\x9b:2\xafr\xe3\xda7-|\xab\x03gg%\xd51$\x89\x92\x880\x904q\x8f\x05S\xbdF\xbfF(\x8b\xd2\xb2\x90\xd81\xffl\xc5\xd0\x8d\n\xa2%p\xe2\x85\xc6\x92F\x80sE\xb4df\xb2\xcc|R\x91~\xd8\xda\"\xc5\xa4\x04b\x14\xe0V\x97\xbbR\xd2D\x97\x14w\x83\xd8\xceT\xb0\x9d\xce\x91\xbe\x1f_\xd9;\xaa\xb2t&V\xed\xbf\xed\xc2@%\x8d2\x85\x981\xf9\xe2\xe0\x19Q-#on\xc3\x9f\x1a\xee\xac\xee\xa8\xb2|\xec\xa8\x9ca\x06 \x88\xdd\xbb~[\x8bH\x11\xeaz\xda\xdc\xca+\xcf\x04\x13\xe1\xe1\x8c\xc9\xd1\xa5Q\x0b\x1fR=\xe6\xf5\xe8Z\xe9\x07 \xc5t`\x86\x88\xec\xf2\xafL\x0c3\x1b1\x9c\xbal\x1a\xcd\xc4\xaa\xd9GR\xdfQ9HD\xc9\x12.\xa8\xeb< \xda:\xac:\xb0r0 \x08Mk*\xd5\xc8\xa2D\x05\xa6\xf3\xb5\xb8d\xc14\x9a\x86\xb3YiZ\xcc`\x0e\xa8\xe2d\xc4\xf5B\xbf4\xad\x15d\xa3C.e\x01\xe0\xb7\xd0\x7f\xcan\x84R.\xad\x99e\xe2a\x08\x91\x06\n{|\x8ei~\xc3N \x94$\x16J/\x0b\x19\xc7\xf3\x93\xa7|>\xe5\xf1MS-\x1d{?\xf1\x97\xec\xdb\x92\xb5B\x8d\xe5\x1eM1\xee\xb3\xab\x94\x85\x0b\xb7z\x8e\xc8Fs\x0cYq\xb7\xf0\xc6/\x8d\xeeN>?\x02\x90\xc85V\xba\xd6\xf0\x83\xed\xbc\x7f\xcf\x92\x1f\xa3E\xb6\xaa\xc6.\xfd\xe8\xaf\xb2\xa2w\x1f:\x8a\xf5\xcfY\xfa,\n\x97\xc1\xf97\xd7\xefb\x0c\x86\xdb_D\x97\xe1*\xf2\x17T\x0e\x87\"\x1eB>\x80\xdc\xe9h4\x18j;h\xf8\xd4\xae\xf1*\xdb\x16\x18\x15\xbd\xa2\x92;\xe0C]\x86\xfd%K\xe7\x17^\xc5E+\x9f\x93qJmvU\xd51\x92-\xca\x97\xb8\x9fl\xd8\xfc)\xd6L\xccH2\xf7\xe7\x0dJ\xcb\xe1\xa6^?\xbd`\xe8\x07\x17\xe9\xe9F\xe5\x9f:E\x91y\x14\x80\x9aSM\xbe\x8c\xce\x88\xa8.\xed'\xa9\x9ff \x1c\x1d\xc2\xee\x00\xd3[\x04\xfdl\xb3\xf0S\xf62\xf2\x17Ax\xfe\x06\xdf\xbb\xce\x12\x1d\x17i@\x9c\xb3\xb8e\xb5w\xf1\xcaux\xc1<\n\x93h\xc5\xfa\xa8\x14se\xffo\xd9U\xaa\x91'Y\xbc\xe2@\x86\x17\x07R\x89\xcc\xe5[)\xdcQ\x7f\xf1\xd7+\xea\xc1s\xc3~\xca\xae\xca!\xb4\xa1\xaaF\xfb[\x9d\x1f\x1d\xf2\xcfY\xda\x12\xd2R^\xf78t\xcbw\x15L\x80\xc1\x18\xa6l\xf6\xf7\xc2\x12\xa5s\xaf\x08w~\xfa\xf7\x0c^\x84H\x91\xcb\x1b<\xef\x0b&\x10\x83)9\x93\xd4\xc7\x96\x83\x17\x16[F5\x9a;\xdc\x7fT\xea1\x11#\xd9-\xe2!j\x93\x02I\x92\x0b\x06\x07\xbcL\xbe\xf0\xdc\xa0\x07I\xff\xdd\xebo\x9f\xbe}\xfe\xfe\xd9\xab\x93\x17\xc7\xdf\xbd\xe9\xb5\xdc>\x0c\x0e\x8d\x80\xeccp\xd1\x7f\xbc\xf1\\\xd6\xdf\xf8\xd7\xfc\xa8\xeb(\xde3\xf7\xfa\xf6\xd5w\xdf\xbdl\xdb\xab\xbc9U\x07f\xb5/\x02UEt\xa2\x86\x9c\xf0\x97=\xe8\xc4\xc5\xd1\x05\xc2\xf3t\xe6}\xc5\xf7\xf9\xc1\x83\xff\x03\x14J\xe2G\n\xdb\xf4\xee\xa7\x97\x87\xc9\xa5\x7f~\xce\xe2\xed,\xd8\xe6xg\xe1\xaf\xa2\x90m\xa3N$\xed\xff\x96\xf4\xd7\xfe\xe6\xff\x07\x00\x00\xff\xffPK\x07\x08v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00 \x00swagger-ui.cssUT\x05\x00\x01\x80Cm8\xec\xfd{s\xdb8\xb27\x8e\xff\xff\xbc\n=\xbb\x95\x9a\x99\x1dS!EQ\x17\xabf\xeb\xc8\xb1\x93q6r\xc6\xcem\x92\xad\xad)\x8a\x84$\xda\xe0\xe5\x90\xd4\xcdz\xf6\xbd\xff\x8aw\\\x1a $;s\xf6\xf7\xad\xb3\xd9dl\xe2\xd3\x8dFw\x03h4\x00\xb2\x9bl\xed\xe5\x12\xc5\xda\xda;\xfc\x9fN\xe7\xe5\xdf\xfeo'\x08c\xdf\xc6\xde#\xea:I\xd2\xd9\x0c\xbbzW\xef\xfc\xbf\xce\xec\xfac\xe7\x9d\xe7\xa0 A\x9d\xff\xd7Yz\xe9j=\xef:\xa1\xff2@N\x88\xed\xe4%M\xf7\xb7\x97\x8b0H\xb5\x85\xed{x\x7f\x9e\xd8A\xa2%(\xf6\x16\x13'\xc4a|\xfeWs\xde7,\xe3\xdfD\xfd\x9dU\xea\xe3\x03\xf6\x02\xa4\xad\x90\xb7\\\xa5\xe7F\xd7\xb0&\x9a\x9fh)\xda\xa5Z\xe2=\"\xcdv\xef\xd7Izn\xe8\xfa\x8b\x89\xb6E\xf3\x07/\x85K)\xce\xf3\xd0\xdd\x1f|;^z\xc1\xb9N\x95\xd8q\xea9\x18\x9dQ\xcf\x12\xcf\xa5\x9f,\xc20E1\xf5h\x85l\x97y\x14\xd8\x1b\xea\xf7\x049\xa9\x17\x06\x07\xd7K\"l\xef\xcf\xe78t\x1e\xe8\x16\x1b\x87\\K\x99\xf0\xe7=\xe4OJ\x19\xbb\x83!\xf2;\xb4\xa4\x0bo\xe9\xd8Q\xc6\xf0\x8cy\xbc\x8eii}\xdb\x93UZPT\xea0\x90\xdf\xe9\xeb\xd1\x8e\x96+>T\xca\x9d\x87\xbbL</X\x9e;a\x90\xa2 \x7f4\x11<.\x0d\xa7O\xc2\x0d\x8a\x178\xdc\x9eo\xbc\xc4\x9bcD\xb1\x8fbt \xbd\xc3\x0f\x830\x89l\x07\x9d\xd5?M\x1a\xbd\x18\xc8\xa7Mv\x98\xdb\xce\xc32\x0e\xd7\x81\xab\x15\xde\x94\xc6v\x90Dv\x8c\x82\x94\xf6\n\x179algJ\xd3\x92\x07/:\x0f\xe7\xf7\xc8I\x13\x9a\xdf|\x1e\xff3\xf5R\x8c\xfeu\x98\x87\xb1\x8bbm\x1e\xa6i\xe8\x9f\x07a\x80&\x0c\x9f\xf3u\xe0\xa28\xf3RQM\x0d\xa2\xe3\x86i\x8a\\1\x8b\x12@\xfb*\xedCi\x1c\x06\xcbB[\xdbB\xb9^\xb0B\xb1\x97N\xc8g\xf3\x10\xbb(\xa6\xf88!\xe3\xc4\x0fs\x97fm\xfb\xd1\x13\xcc\xe0.\x82\xd2y\xd3=F\xe7^jc\xcf\xf97\xed\x87\xf1\x03o\xab\xbf.\x16z5\x08\xe8:\xed\xe3\x89ocLt\x89\x11\xd3\x8f\x935\xa3\x9duD\xa0\x87\xd6\x8b 9|\xe8\x93(L\xbc\\\xe31\xc2v\xeam\xd0d\x83\xb2\x0eoc\xcd\xc6\xde28\x9f\xdb \xcaH\xd8Z\x0e\xa5\x07h\xdd\x9e\xc5\xb4;\xab3\x0d\xa3s\xad\xcb\x96\xd8k\xd7\x0b)\xf96\x9e\x8b\xc2\xba+zA.\x1d\xdf#s\xc2\xf3 L\x7f\xfcg\xd6\x99\xe2\x10'\xff\xfa\xa9&\xcb\xbd\xb0j\x12E\xe7\xf9\xcb\xcac\x0b#dPZ\xd8\xcd2\xe7{\x1e\x87a\xfa\xd3\xa1\xee\x95+\xcfuQ@\xfb\xdd:M\x99\xb1\xc5\x0b\xa2uJ= \xa343f\xc4\x8cs\x1894.\xf3x;F\xf6A0 \x10n\x95\x8d\xe4\xdc\xa0\x0f\x8e\xd5\" \x0f\xd2\xc1\x06\xa0*\x04>\xe4\xdd2\x1f:\x16a\xec\xf3\xca\xfbg\xba\x8f\xd0/1JP\xfa\xaf3\xbe Y\xcf}\x8f)\x01*\xcbf\xb5\x92\xa2(\xfdW=\xb6\xdaQ\x84\xec\xd8\x0e\x1ct^\x14\x01\xd5\x974\xe7\xe7\x9a\x1f>j\x8b\xd0Y'\x9a\x17\x04\xcc\xd4C\x8a\xaa\x04-\x85o\xc1\x16\x95\xf3 \xde\xeb&\x91\xed\xba\xd9l\xa0K\xda\xd0\xb0\x89\xbd`)n@+\xae\x92^\x02,E\xa7\x11\x87p\x9df\xbevnD\xbbr\xec\xed\\\xe4\xc0\x8fh\x972\xb3$\xc2n\x82\xd2C\xd5\xb0\xaei!\xbf\xd3\x1d\xe6\xff\x0e\xb8a\x01\xa3%\n\\h\xda\xac\xe7\x14j\xd6$\x9e\x16\x83a5\xacW\xdd>\xb5\xe7\x18M|{\xa7m=7]\x15\x1d\xa5\xd6\xf2d\xbb\xf2R\xa4\xe5\x83\xf4y\x11y1Sl\xb8\x8cQ\x92\x80\x83\x8f\xd2(Xw\xe1\xbaw\xd9\xeb4\x04\xac\xeb\xac\x90\xf30\x0fwP\x1f\x89m\xd7\x0b\xffu\x92Vd\x0e\x15\xac\xfd9\x8a3\xef-\x19\xe7^\xa9%\x91\x17h@\x17\x14\x10\x85\xeb\x94&:\x94C\x90\xa0\xa1 \xb2cg\x05v\xdfLY\xb9\xc7LJ\x0f\xd3\xc2\xc5\"A\xe9\xb9\xd6cB+\x8aU#K\xf1@s2nX\xdc\x06\x11]\x13\\@\xd2q#[C\xbf\xf00\xd2\xd6\x11\x0em\xb7R\x82pt\xcaG\xed\xcaO\xe9X\x00\xa5\xb6\x87\x13:\nE\xc1Z\x12\x85&k\xdf\xb7\xe3}\x8d\xc0^\x92j^\xca\xf4*\xc7\x0e66\xec\xc4\xb4V\x8b \xed_\xcc$\xe4G\xd8N\x115\x93Rd]\x17\xcd\xd7\xcb\xce\xdf\xa8q! \xb1\xe7v\x96!v\x01\xac\x96\xf7;\x90\xe2\xaf\x8b\xc5\x02\xa2\x98c\xdby\x80)\xd8\xf8\xa7\xa4X\xc6\x9eK\x04Ndx\xdbY\xc7\xf8G\xd7N\xeds\xcf\xb7\x97\xe8e\x14,'Y\xf7\x1d\xf4\xcf\xbc\xcf\x17\xef\xef\xb6\xfa?\xde,\xc3\xe9t:\xbd\xf9\xf0iu\xf5i\x99\xfd\x98\xffs\xfdj\xfau:\x9d^^]\x0e\x07\xef\xb2\x07o~\xbf{\xfd\xe5\xd7\xbb\x8f\xf3\xde7\xdd\xed\xbd\xde\x7f\xbb\xbd\xb8\xf8\xf6f\xec}\xfbp\xf1v\xfe\xe5u\xf0\xed\xf3[\xfc\xf5\xcb\x9d\xe58\x18\xff\x96\x11\xecW\xd1\xe7\xd7+\xfd\xcb\x951{\xef\xdfl\xe6\x1f\xacU\x81\xb7\xfa\xf3\xdf\xa7\xc5\xff.\xb7/\xd1\xaf\x17\xab\xaf\xbd\x14\xbb\xaf.\xbco_\xdch~\xaf{\xc3\xe1\xfa\xe5\xb5w\x11}\xbb\xd4\xbd\xcf\x8f\x9fofW\xc6\xf6\xb6\xf79\xb4?\xad\x06\x8e\xff\xf9#z\xb0>}5\xa3\xf8\xeb#~\xb8\xbe\x1f\xfd|}\xb9\xeb\xbf\x0fV\xa9\xf3\xc6\xc0\xee\x9b\xab%zc$\xf3`6@\x97\xba\xf7\xf5\xcb\xdd\xe6\xab\xffi\x90\xfd>\xff\xf2Y\xff\xfaa\xe4]\xff\xba\x1c\xa07\xc6\xd6}\x93\x8c\xaf\x1f^?\xcc{o\xf1\xf5\xeb\xd5\xcd\xa7W\x17\x97s\xf3-\xbe\xbe\xfc\xb4\xbe\xf1\x8c\xfb\xd9\xc7\xab\xdd\xf5\xa5c\xbd\xbb\xbf2\xde_\xce\xf67\x1f\xb6\xcb\xd9\xfdtw\xf3a\xb4}\xffa\xb4\x9b\xbd\xd2\xb7\xb3\x8f\xe1nv\x19\xeeg\xaf\xa6\xcb\xeb\xea\xef}\x7f\xf9\xdb\xafo\x1f\xbe\xddG\x1f\xee\xae\xbe\xd6\xf28\xfe\x9d\xff\xdb\x87\xb7\xa1\xfb\xeb\xdd\xf6\xbd7\xda\xb8\xa6k\xbe\x0b\x9c\xc7w\xfex\xffm?\xda\xbd\xff\xf8`\xbd{\x9c\xee\xdf=^\xef\xdf\xfd\xfe\xf6\xe1\x9bg<\xa2/\x96\xfe\xf5\xf7e:\x0ff\xf7\x04\xdf\xabo\xbf\xdf\xdc;>\xde\xbao\xf0f\xee]\xec\xbf\xbd\xf9:\xf8\xfa\xe5\xed\xc6\xfd\xfdv|\xed]7:xcl?~\xd2\xc7\xd7\xfeJw\x7f\x9d\x0e\xde\xed\xc7kg_\xdb\xe2~\xde\xd37\xe8\xcd\xeb\xed\xbb\xc7\xab\xf5\xec\xd58\x9d\xe7\xfaY\xa5\xf37\xd6\xe3\xfb\xe0F\xff\xe4\x7f\xa6d\x9e\x07\xb3u\xa9\xd3\xf5\xd7\xde8}g\xaeV\xce\xab\xd1\xee\xdd\xfdt\xe3\x18w\x96\xf3\xe6\xd3\xe6\x93\xff\xf9qn~\xde\x7f\xed}\xfe\xf0\xed\xcb\xd7\xfbk\xef\xa2?\xff\xb2[;\x8fQf{EY\n9\x9c+\xe3\xe6\xfd\xc3\xdd\xe6\xab\xf99\xfd\xf6\xc5\xd2?|\xba\x1d_g\xb6~e=\xd8_n\x07\xb3\x8fw\x97\xef?~\xed\xdf\xe8\x9fz7\xfa\xe7\xd7\xb3\x8f\xaf_\xdf\xdc/{\xb3\xc7o\x97\xb7\xf7\x0f\xdb\x9b\x87\xdb\xfe\xec~\xb9\x9d]]\x13\xfc\xf0\xda1\xefVs\xff\x06\x13\xfc\"\x9a\xdf\xad\x1a\xbf\xcb\xe8\xd2\xf1?\xaf\xdc7\xe3\xfd\xe77\xe3\xcd\xfcR\xf7n\x0b\xfd,?\xbdYm\xdc7\xe3G\xfb\xcdx{}usy}y\xbd\x9d}\xfc\xb4\xfc\xc7\x95\xb1\xfa\xda\xc3\xeb\xbc\xec\xd5\x83\xf7\x9b7\x1d\x95v\x1a\xdc\xbd\xf9\xbc\xb7\x7f\xff\x86\xbf]}\xdb\xcf{\xfa\xd21\xef2\x1d\x0e\xec/\xd6\xa3\xfb\xe6\xf5\xfak\xef\xf3\xdb\xbbK\xdd\xcb\xf0\xef|\x1c}\xbb\x0c\xcd\x9b{g\x7f\xfbpk\xde\xdc\x7f5o\x1f?\xedf\x9f>\xf5n\xef\xdf\xbe\xba\xd5?\xedo.\xa7\xfd\xd9\xc7\xe9vv\x7fe\xce>\\\xd7\xfc\xbe\xbd\x19\xdf\xbb_\x0c<\x0f\xee\x08~w4\xbf\xc7V~\x9bL\xf6w&\xe0\x93\x99\xaf\xbe\x1a\xe7~\xf9\xe9\xe1\xeeM\x81+\xfa]\xde\x0f?\xf6\x97\xbf]\x8e\xfb\xce\x9b\xd7\xf7v\xef\xb3~\xfd\xe6\xf3:\xeb\xef\x8ew\xfd\xf2\xb7\xe4\xe2\xc3\xcfof\xd9\x08q\xff\xe1\xd3\xdd\xc5\xe7_\xef\xed\xaf\x9b\xc7\x97/\x1fG\x97\xef\x92\xcb\xfe\xd2y\xf3\xbb\xf7\xf5j\xfa\xe6\xe2\xfa\x1fo.\x02\xf4\xf2\xe5\xe2u\xb4\x9d.\xb7\xd3\x8b\xf1hj\xbf\xeeE\xf7\xf8\xd3mF~\xf1\xf6\xee\x93u\x15?\xbc].\x97\xbf\xfc\xf2S'F\x11\xb2\xd3\x8e\xde\x11\x8e\xa4\x9a1x\xc6\xc1\xf4\"\x1f\xe6n\x8b\xc1t\xba\x18\xbd\x1c\xaf\xfew0\xfd\xdf\xc1\xf4?u0}\x7f\xf9u\x7fw\xbf\xba\xba\xbb\xcc\x06\xd3\xaf\xfb\xd6\xc1\xafe0m\xf8\xdd\xaa\xf1\xfb\x0f\x1aLo?\xb6\x0e~G\x0d\xa6\xb7\xed\x83\xf3\xf7\x19L7\xaf>\xe8\xc6u6\x18\xcd\xea\xc1\xd4\xbf\xeb\xbf\xb4~\xbex\xfd\xdb\xc5b:{\xed\xbf\x9c],w\xa3\xbb\xe9\x9b/\xaf\x02c:\xf5?,\xcd\xfe\xed\xe0\xe1\xe2\xf2\x1f\xb37\xb3\xcbW\xdb\xebWhv\x8d\xfc\xd7/\xad[{{\xe5E\xd3/\xdbO\xab\xed\xd5\xfd\xecr3\x9f~\xc1_\x1e6\x9f/\xb6\xeb\xd1\xe6\xf6zz1\xbd\xda^\xbc\x8aV\xa3O\x03G\xcf\xc7\xa5+\xfc\xfa\xe3\xc3\x87\xf5\xad\xff\xea\x95\xd2\x00<\xd2\xf2x\x97\x1c\x85\xb3`\x99\x1d~\xef#T\x8f\xbf/\xc7\xf7/\xfb\xb7\xd3\xafw\xbf\xaf\xa2o\xcb\xe9\xf4\xc3\xa7\x87\xff.\x03\xd9\xe6\x7f\xbf\xbdL\xa6\x17\xaf\xaf\xdc/71\xba\xcdF\xe6\xdbj\xe0|\xd9\xbf\x9d\xed\xec_\xeft\xe72\xdc\xbc\xebY\x8f\xef\xfcb\x1c{\x97\x8f\xb5\xe3\xfe\xd7\xdf\xa7\x9b\xd9\x87\xfe\xf6\xddv:\xfa\xcd\\m\xbf~\xb9\x89\xbf\xfd~\xbb\xfc\xea\x7f\x0e\xec/\xfd\xf1\xf5\xfa\xe7\xe1f\x7f\xbd\xb4\xbf\xdc\x8e\xaf\xb1c|\xfcxq\xe3\\\xdd`\xfb\x0d\xbeF\xc1[\xfc\xc9\x8c\xde\x7f~s3\xb0{3\xeb\xdb\xab\xeb\x97\xb9\x8f^f\xfd\xf7\"\xfd\xf6\xfb\xdd\xaa\x19#\x96\xe3\xeb\xb2\xee\xf7\xbe\xf5\xf8\xde\xcf\xc7\xe0M\xd6\xe7\xf31\xf9\xd7\xbb\xf8\xb7\x0fo\xab\xb9\xe2\xeb\xc7\xcf\xd3\xe5mo\xbc\xff\xf6aj\xbc\xbb\xff\x9a~}\xbc\xda\xcd>L\xcd\xf7\x1f\xfa\xbb\x9b\x8f\xcb\xc7\xd9\xfd\xa7\xa4\xec'\x9b\xd9\xe5\xc3f\xf6q\x9a\xce.\xaf\x06\xb3\x8f\xd3\xc1\xec\x9e\x18c_]g\xe3~\xed_\x8d<\x99/\xea^\xad\x1b\xd35\xdd\xbde\xce\xf6\xd6\xc6\xf1\x9d\xcd\xec\xe3\x83\xf5\xfe\xc3h;\xf3F\xfb\x99gd\xf4\xa9cf}\xf1u\xff\xdd\x17\xeb\xf1z\xdf\xf0\xbd{\xf3\xf9\xf1\xab\xf96r~\xbd\x8b\xe6\xbd\xfe2\x1b\xbf\xdf\xfb\xaf\xbd\xb9\xf9Y\xff\xed\xc351Nf\xe3\x00Q\xa7\xcc\x1e\xfb\xff\xc0\xb1\xf9\xf7\xe9\xe0\xd6|\x8b\xbf\xfe~\xb7q\xf0\xddf\xde\xdb\x12\xf3\xe2E87\xef6No\xb5q^]\\\xde\xee\xa7\xfb\xd9\xe5\x95q\xfdju\xf3\xf5\xcbM4\x0f\xb2\xb2eT\xf0\xb9\xb8\xf9\xf81z;\x0fn\xf4\xaf_\xac\xfbo\x9f\xf0\xd5o\x1f\xdef\xfc\xd7\xf6\x17\xfc\xf0\xfe\xe1z7\xbb\xbf\xd6\xdf\x7ft\x1eo\xee\xddW\xb3\xc7\xab\xdd\xdd\xc7o\xaff\x0fo/\xef>^\xeb\xb3\xcb\xe5nv9\xdd\xcf>:;\x82\xdf\xd5\xbcwc\xcc\xbf|^\xbbW\x0d\xbfoo(~z+\xbf|\xee\xac\xe7\x13\xec\xf8\xb8\xf7\xed\xcb\xdd\x1b\xc7\x1f\xa7\xd7\xbf\x16\xba|\xef\x8b\xe7\x85\xdb\xfb\xab\xfd\xec\xfe\xd6\xbay\xbc\xea\xdd\xe8\xd7\x8f\xf9\xbc\xf0p\xbd\xbf}\xb8y=\xbb\xbf\xdd\xbe\xbf\xbc\xda\xce.\xafw7\x8fW^\xc3O<o5\xfc\xae[\xf9\xbd{l\xc6R\xc6'\x7f\xbe\xbe\xdcnr\xbf\xc4o\xaf\xee\x8a1\x97\x8c\x85\xb2r2\xc6\xc2s?\x93\xe3\xda\xfb\xedq\xf8r\xb8\x9c\xbe/\xe7\xaa\xe9\xb7<v\x9d^\xbc\x1c'\xd3\xd5t:\x7f\xb3\n\xa3_?\xe0\x8b\xb7\xde\xb7\x8b[o\xb4y\xa7\xbf\xfd\xf5\xb7\xc7\xfe\xcf\xbf\xe9\xee\xafw'\xfe\x9d\xde\xe9\xd1?>\xde\xfa7\x97\xa3\xf0\x1f\x97\xe3_\x7f{\xfc\xf4\xb2\x8d\xa6\xfd\xef\xe2\xe5v:\xbd{5\x9d^O\xa7\xcb\xcb\xe9\x87\xeb\xe9tuu1\xdd]]\xbc\x1c\xddN\xbfd\xe3\xe6\xed\x14\xf8\xdf\xd7\x8b\xe9\xed\x15\xf0\xfc\xfa\xeajzu1\x9d\xce.\x98\x82\x8b\xe9\xe5\xd5\xab\xa9~u7\x9d^]^\xf0<\xef\xae?\xbe\xbe\xf8\xf4\xe5\xea\xc3\xf5\xe6\xa5=\x9dn/\xa7\xb7\xd3WW\xb7\xb3\xbb\xe9\xe5h\x1a\xbe\x0f>~6n?^\x0e\xdf\xbeMV\xbf\x99\x9b\x0f3\xf3\xb7\x97/\xbf)\xcd/\xc6@m\x829*\xbe\xcf\xe6\xd7W\xb7\x0f_\x96\xbd\xe9\xff\xc6\xf7\xff\x7f\x1d\xdf\xab\xce\x01t\x1c\x9e\x8d\xad\x8asV\xcfH\xc9y\xab\x8c!U\xe7\xad\xc7\xcf\xbf\xe2\xed\xb7\x0f\xe3\x0f\xdf~\xbf\xd9\xb8\xbf\xbf\xbd\xcf|\xe9\x9b7{\xb6\xf8Y%\xae\xbfy\xfcj\xce\x1e\xde^\x15I\x97\x99!\x1f\xbf\xdb\xd7\x1d\x0d\xbf\xaf\xad\xfc\x9e-\xbeoOn\x1c\x15\xdf\xdf]\xb6\xf2\xfbN\xf1=\x1a\xbc5\x1f\xb2\x11\xe2\x91M\x96\xe8\x9f.\x93\xd9vv\xff\xe1.\xfc\xfa\x9b\xf5\xe6\xbf\xfb\x1f~\xbb\x99\xdf\xdd\x7f\x9e]\xdd\x1a\x8bWw\x97\xcb\x9f\xbd\xe0\xe5\xe0\xe7\xb7\xc6\xf4\xed\xa7]\xb2\x9c^\xbd\x99NM\xe3b\xfav\xf6A\x7f\xf3\xb5\x18\xcf?|\xfa\xfc\xfe\xee\x1f\xd6\xab\xaf\xd7\xd7\x92\x04J\xb3\x15C\x1f\x8e\xa1\x7f\x03\x8e\xcf\xccCwO=\xe0N\"\xb8\xf4A\x04\xd7\xa3\xcf\xcd\xb8\x98\xfe\x95\xdeZ\xae6\xe6\xe8\x87\xfc\x01\x9dE\x18\xfb\xf4F\xacA\xff\xda\xa3\x7f5\xe9_\xfb\xf4\xaf\x16\xfd\xeb\x80\xfe\x95?\x0b\xb4J}\xba\x15\xf9Nu\xb1\x89\x83|\xdb\xc3\xff\x12\x95\x96\xdbT\xa2\xe2\xc8N\x92m\x18\xbbB@\x8a\xc4\xbcS\xb4K\x85\x85\xeb\x98!,\xb64\xe9G\x1e\xbd\xc7c{\xf4.UH7\x9a>'\x101\xe7\x94\xca\xf3Q\xd4\xb3|\xd7\x93~BKPmK\xd2\x0fW\xf4\xaf\xb4-\xd6\xf8\x94\x0dH\xba7\xd8I\x84\x9cT\xcb\xf7\xd8\x0e\xe2\xf3%b\"M3\x06\xbbq\xb5\x9b\\\x9d0\xb2\x06\xdd\x9e\xf5BF5\xde\x19\x03\x96\xca\x18\x0e\xbb\xc3\xa1\x94\xac\xbf3Y\xaa\xa1\xbc\"s\xd7\xe7\xea1\xcd\xaeiJ\xa9\x06<\xd5`\xd0\x1d\xb4\xc8\xc6\xb7\xc8\xd2\xa5$\xa3\x9d\xc5U\xd3\xeb\xca\x1bd\xedF\\5\x03y5C\xbe\x9a\xa1\xd1\xed\xf7Z\xea\x19r\xf5\xf4\xe5\xf5\x18;\x83#a\xcf,2$\xc5\xc9\xb5C\xedq\xf6< \xf1:E\x934\x8c\xce\xf5I\\zd\xc9M\x9f`\xb4\xc8~'\xce\x0eT\xe7k\xb2\x9f\x1f5/p\xd1.\xfb\xe5\xdf\xff\xe5#\xd7\xb3;\x89\x13#\x14t\xec\xc0\xed\xfc\xe8{Ay\xea\xc0\xd4\x91\xff\xd3A,W\x90<\xa17d\xd4'u\x08\x80P\xadO\x00\x84\xed\xdd\x02\xaaM\xa9g\x00\x84*\x9d\x03\xaa\xaf\xbd\x7f@\x95)t\x11\xa8\xb2\xf6^\x02\xe9Q\xa5\xa3@\xb5\xb5\xf7\x15\x88J\xa9\xbb\xe4\x84\xcf\xdfc\x14\xbaL\xf9\xb0>\xbd3h\xe9G\xfeS\xba\x91\x7fb/\xe2\xe8\x14;\x11G\xa7\xd0\x87\xf8\xba\xd4\xba\x10G\xa7\xd4\x83\xf8\xda\x14:\x10_\x95J\xff\xe1\xabR\xe8>\xbc\x06\x95z\x0f_\x97B\xe7\xe1\x89\xd4\xfa\x8e\xff\xe7w\x9d\xb6^\x82\x9f\xd2K\xf0\x89\xbd\x84\xa3S\xec%\x1c\x9dB/\xe1\xebR\xeb%\x1c\x9dR/\xe1kS\xe8%|U*\xbd\x84\xafJ\xa1\x97\xf0\x1aT\xea%|]\n\xbd\x84'R\xeb%\xf8\xbb\xf4\x12\xb2^\xcf_\x1e\xe8c\xa0\xb4XN\xb8A1y\xce>?W\x9d?\xfd\xbf\x9e\x1f\x85qj\x07)K\x12\xa4\xb6\x17\x00D\xf9s\x82\xac}\xa6;\xf0\xc2d\xd3\xee)\xf2\xc0t\xacH\n2)\xcc\xbe\x85\xa0\xfeirBd\xc7\x89)\x94\x08\x9f&\x11D\xc6IDQ\xce\x97\x9a\x83\x82\x94v\x9d\"\x19t\x1e\x84\xe5O\x13\xa2\xac\xf6sn\x90\x98/\xb54\x8c\x8e\xe6\x93\x86\x11\xc7'\xef4Gs\xe2;\xc5\xbc\xea\xc7G\xf3*\xc88nY\xe7=\x9a\xd7\xf1\x8b\xab\xda*L_P\xaaN`\x98SX ms\n3\x89yNa'\xb1\xd0)\xec\xda\x82\x12\xd5\x11\xa51\xdd\xf1N'\xb2\xdc\xf1\x9c\xc4\x86;\x9e\x97\xccn\xc7s\x93\x99\xedxnmV\x93\x1a\x08\x1f]\x9d\xc8@\xc7s\x12\x1b\xe8x^2\x03\x1d\xcfMf\xa0\xe3\xb91QL\xb7<\xfe\xce\x1f\x83\x07a\x1aqL\x1389O\x94\xc2\xe4zMt\xfc\x18\\\xf1\x08\x92\x13\x84\x05\xa9\x14\xe4%\xe9\xda|[uD\xaa\x98\xfb\xa7\xb4\x03 Ri\x86\xaf\xdc\n\x89\xc0\xf8\x14\x81\x01\"\x15\x811)0\xed\xfb6}\xcf-g9)\x1f\x95\xd18s\xbb\xa7;O+\x9alt\x00\xe8\xb2\xc7\"\xda\xfa^]1\x1e\x00\xd4E\x81\x88~N\xdf_\x86\x18\x94%\"\x0e\xb8\xe2\x90wz\x80>\x7f.\xa2\x0e\x80{\x81\x94\xba\x8e\xef\x8bs;\x9f\xd2\x8f7\x03Av\x8a%\x08\xf2S\x8dA\xb08\xdd\x1e\x04\x93\xd3L\xc2\xa9\x0f\xb2\x8a\x82Y\x14\x86\x9b\xb9\x9d\xcd\xe3'\x98\xca\x7f\x92\xa5\xfc'\x1b\xca\x7f\x06;\xf9O4\x93\xffT+\xc1\x06\xc1'\x19\x04?\xc9 \xf8\xc9\x06\xc1\xcf`\x90'\x0ee\xac\xe6@\x83\xd04Zq\xd5\xaf\xa2\x13\xbc\xe3 \xc3\x05\xc8\x8eA\xb0a\x18\x1c\xd8\xb5\xe3\x07m\x19\xdb{\x06k\x9a&\x87\xf5=\x17\x82Z\x96\xc5A\x01\xd8p8\xe4`\x89\x877\xcd\x85\xef\x128\x1e\x8f9 .\x8c\x0d\xc1m\xdb\xe6%\x0d\xc3\x00\x92\xc1q\x1c\x01k\x00\x8c\x10\x82u\x9b\xdf\xd2d\xc0\x8b~\xf6\x87\xc3\x83P\xf6&g\x85\xd3\xc6:\x0d]%\xd8\xfeQ?\xd3_\x9ce\xb1\xf8Yw\xfc\x93\x80p\xd4B8\x12\x11\x0e[\x08\x87\"\xc2A\x0b\xe1@Dh\xb5\x10Z\"\xc2~\x0ba_Dh\xb6\x10\x9a\"\xc2^\x0baODh\xb4\x10\x1a\"B\xdd\x92\x13\xeaB\xed\xe8\xbd6\xd2\x9e\x98\xd6h%6 \xea|\x8c\xe1\x9c6^\xces\xda3\x1dt\xd8\x82\x88uX\x92\x08p\xd6\x82\x88uV\x92\x08p\xd4\x82\x88uT\x92\x08p\xd2\x82\x88uR\x92H\xa8\x08\xd6AI\"\xc09\x0b\"\xd69I\"\xc01\x0b\"\xd61I\"\xc0)\x0b\"\xd6)I\"\xc0!\x0b\"\xd6!I\"\xc8\x19K*\xd6\x9f(2\xb1+\xf1\x8eH\x11\x82N\x98O`1r\xd9\xc1{\xa8\xf7u~\x9c\xe5\x81\x8bE\xdf0\x07\x82Y\x01\x82\x0f{\x16?\x89\x84\xb1\x1d,\xf9\x81~`\x02\xf3\xf32\xc4<\xd7\xf9\x10@\xee\x11\xc6\xe1\x96\xc6\xf2\xaf\x0e\xa8\xa5\x85\xe0\x7f]\xcc\x17\x86\xcdO\xa8\xd1:\x8e0+\xb0\x85z\x8e\xcdO\xe6\x05w\x90\xc2\xee\x0f\xccE\x0f6J\xe4\x05l\x04\xe2Z\xba>\xe2\xad\xb2\nS\x08\x9d\x99f\xce\xcf\xa9 r\xa4\x0b\xa7v\x10o\x9b.\x1f\x8e\x94\xc1\x10B\x01\x837\xcc\xe1\xd0\xe2\x9b B\xc7\xf6x\xc8\x0b]E\x19<\xc1\x18\xa1\xb9\xc3\xeb$\xb07l@\xa2\xeb\xc6\xbc\xcf\xb3\xce\xa5\x9e\xe35k\x1b]\xef\xf7\xc7|\x08\x03 Mk\x88\\\x91W\x01\xf8\xf1\xc0q\x80 &\xc7\xa3\x04$q\\\x04\x91l\xedd\x85\\\x88`1X,\x16\xbc\xf4%\x01\xa4H4Z\xb8\x0b\xde{K\n\xb8s,\x16\x0e\x9a\x8bH\xa0\xde\xef.\\\xbe\x15d:\x91\"\x10f\x88\xe6\x9aV\xbe\xea\x84&\x80\xde\x7f\xd2\x9d\xc7\xf5\xd0\x1d\xdb\xae\xb7N\xce\xd9\xa1\"6\x18@\xd7\xe8Y1b\xd3\xadq\x8f\x85\x81(\x93EA\xa0>\x032\x00\x8cf\xe8\xac\xe4@R9\xd6\"\x0fc\x067\x1e\x8f\xc7\xc0\xea\xaf\xdew+\xc0y\x92<[iUz!\xd7\x90\xc5:P\xa41\xad\xd8U,\xe0UV\x1bbU\x96\xb5q+\xf7\x16[\xe4\x82*\xe2y\x15\xdb\x81\xa2\x96\xc8\x05kO\xb6\x1cX\xe7\"\xd3Q\"\xff\xe21\"\x17\x03\x90\xb0\x97\x01@\xd0\xd1x\x9c\xc8\xd7\x00\xa4\xc8\xddx\xa8\xdc\xe3\x98\x8c\xdfS\x9c\x8eO\xdd=\xd9\xefT\xa4Sw=\x86\xdb1\xde\xa7\xe0~*\xb9\xbeX'\x12oB\x97d!B\x8f\xe4\x80\x02\x87\xe4p\xb0?\xb20\xa1;r@\xa17\xb2\xc8\x16g|\xb6\x01\x90\xcbN>\xdd\x15\xdbe;\xc2\x13\xfd\xef\xe3\x88\x02\x9fc'!\xc0\xe7X\x88\xd0\xe78\xa0\xc0\xe78\x1c\xecs,L\xe8s\x1cP\xe8s\xc7M\xb9,\xbc6oc \xa2\xa0<\x9e\x06\xfb\x1c\x9b\x80}\xba\xcf\xe1\xe7\xf49|\xb2\xcf\xd1\xfc4\xadx d\xc5\xaeH\xf5\x02/\xe5-\x82\xf8,\xe4d\xa0\xf93\x0eZ\xdeF&\x91\xc0&f\xb6\x84\x08\x03D\xe3\xf2w\xd4\xb5\x0f\xd1\x07\xb8!\xdcn\x8f\xb4-<Z\xd2\x1cx\x1f\x0el\x11\xb8\xe7\xf4\\\x13O\xddT\xff\x98\x96\xb2`YC\xa1M,\xb8\x9d\xc0\xa6\xcd \xc3Z\xdd\"|L\x8bX\xb0\xacE\xd0.\x10\xdc\"`\xd7\x83\xed4\xdbz\xc1P\xed\x830\xe5\x06]\x0e\x8f\xbf\xdb\x1e\x83\x02A&\x03\x820}\x1a\x03\x0c\xbb[\x8b\x86\xf4xH\xaa\xe9\xe4\x98\x02\xb7,n@\xe4\x0e\x16\x0b\x9b70j\x97\x8a\xc5\xe1\x06G\xecE\x9d\xb0>\xd8\x92a\xb5\xc8(\x1cDd\x17\x1e\x08\x9b\x86\xc7\x81\xd6\xe1`\xa0\x818\x14l#&\xee\x15\x9a\x89\xdb\xbe\x17Z\x8a\x0f\xf5\x85\xc6b\xf7\xe2\xebm\xc0v\x83\xa9\x0cl[\"\x1a\x15\x1a\xd1W\xb4!\x8b\x13\x98\x90\x85\xc1\x16\xf4U\x0c\xe8+\xd9\xcfW3\x9f\xafj=68\x16\x1b\xcf?\xc1v\x023\xe1V3aE3\xb18\x81\x99X\x18l&\xacb&\xacd&\xacf&\xacj&6\x9e\x14\x9b \xc3f\xa2\x80\xc9\xcav\xc3\xadf\xd0\xd7\xba\xf3\x87\xe7zG\xef\xf4\xa3]\xa7\x17\xed:\xf4\xa6\xcbD \x05\xd6\xd4\x13\xd54R\xaa F\x815\x99PM\xbd\x92\xbe\xbd]r$Xc_Vc&\xb9\xaeP\x1f\x84\x03k\xb3\xa0\xda\xfa\xa5\xc4m\xb5\xc9p\n\x83\xf0\x01t\xa2lT\xff\xd3\xfcHR\xd9\xf3\xbb\x92\xa0\xb2\xef\xebM-\x95\xb6\x99\xf8x\x87\x12T\xf8,>\xa5\xe0T\n3{\xedi\xfe\x9f\xe8h\xc2\xba\xbe\x83\x9f\x81u}g7\x93\xd6\xd9f\xf4\x13\xbc\x0c\xac\xefOp2\x99?\xe1?\xd1\x9f\x84u}\x07\x7f\x02\xeb\xfa\xce\xfe$\xad\xb3\xcd\xbe'\xf8\x13X\xdf\xf3\xf8\x13Ua\x14\xa3\xfa\x0b\x1e\xda.\xff\xb4E\xfdq.m_~\x08\xa8\xf9\\W\xe2\xc4!\xa6?%\xd2\xcdb@=\xff\xe6\x11\x13\xb0\x15Q\x9f~\x80S\x89E\xa4\xa7W\x9fRb\x8a\xf3\xf0N?\x14\xe9I\xbe>#\xaf\x8f\x0fa\x8b*\x8d\xb2J \xc4-j5\xaaZyD^\xb1QT\xcc\x97fu\xf7\xf2\xba\xf9\xc8\xb8\xa8\xbbW\xd6\x0dD\xceE\xdd\xbd\xaan\x1e\x91\xd7\xdd+\xea\xe6K\xb3\xba\xcb\x86k\xa2\x96\xd7M\x07\x10e\xfdM\xe3\x01L.A\xd5|\xa0<\x97\xa1P\x80&\xd2@\xad\x02\x00Q\xc9P+\x01\xc0\x142\x94j\x00\xca\xab{\xd4\x9a\xb6\xf00>HoS+\xcc\xd0\x07\xde\x99\xb3\x98\x01\xf0\xe7\xc2'\xb3B\xc8-Ko\xcf\x8a\xa5\x0e_\xa4 \x9f\xcf\x1d\xbb\xaa[\xe4\x99u\xf5B\xe7o$\x10\xfb?!\x84\xc0\xc9+9D^Z\xcb!\xec\x08\x8d\x1c\xe2\xbe@\xc8!r\xf8J\x10\x89\xcf75\xc9\xdc\x9e\xa8K\xec\xf9u\xb3\x84\xce_\xcb#\xf6\x7fB\x1eI\x17 \xe5\x11\xf6\x82F\x9e\xb6\x8eP;\xad\xb0/(t\x06\x85p\xb5\xe8!\xbe\xa4\x83\xf8\xd2\xfe\xe1\xb7t\x0f_\xda;|y\xe7\xf0\xdb\xfa\x86\xdf\xde5\xfc\xb6\x9e\xe1\xcb;\x86\xdf\xd6/\xfc\xf6n\xe1\xb7\xf6\n\xbf\xb5S\xf8*}\xc2W\xe8\x12~[\x8f\xf0[;\x84\xaf\xd2\x1f|\x85\xee\xe0\xab\xf6\x06\xffI\x9dA\xe8\xf7X\xe2\xf7X\xea\xf7\xb8\xc5\xef\xb1\xd4\xef\xb1\xdc\xefq\x9b\xdf\xe3v\xbf\xc7m~\x8f\xe5~\x8f\xdb\xfc\x1e\xb7\xfb=n\xf5{\xdc\xea\xf7X\xc5\xef\xb1\x82\xdf\xe36\xbf\xc7\xad~\x8fU\xfc\x1e+\xf8=V\xf5\xfb\xb6\x80\x88&v\x16\xe7\xf6\x82}5j\xf6t\x8e\x16a\x8c\x0e\xe5\xc7{\xcf\xff\xd2\xf9\x0b\xfd\xe5A\x98\xcd\xc1\xc1\xc8\x8e\xcf\xe7a\xbab\x01\x87\xbf=\x86\x99o1\xcfqI\x92I\xc7\x14U\xdc\xf2\x960esqMAYt\xd2N\xb9\x93O\xa3b\x91\x9aRP\xaa\xa6\x18\x12\xac)U\xd8 V\x9d\x8e\x9dl\xa8\x93\x08\xecK\xe5\xf5e\xe2\xfa\xea\xd2\xc2\x82\xc9\x8c[\x17\xc2\x82a\x99`\x98\x12\x8c*u\x03\xd9\xe7\xfc<\xe6S\x81L\xf1\\\xf2A\xc2\xae\xeb\xcd\xdb?4\xd8u\xbd\x94E\x01\xfd\xc5m@`\xa9C\x17k\x0eb\x17\xddn\xaa\xc5\xe1\x96\x81\xc5\xe1\x16Bi\xcb8\\G<\xb6x\xceQ8!^\xfb\x01+A\xfeP\x80\x05+ \x8b8:m\xe1\xed\x90{(\x90\xd8\xde\x87\xeb\xf4<\x7fD\xbc\xfeJ\xa1\x7f\x1c\x18\xdbg=Lf~\xb2\x1c\xf6\x00\x12\x01;\x01\xcfC\xe0\x07\x00\x1046\x89\x83\xbd\x81C\x08\x1d\x82GJ}\x02\x84K\xdd\x02\x10\xa5\xdd3DDR\xe7\xc8\xd73R\xffPp\x10\x85\x01\xd4\xcd\x06:\xa9\xd3\xf8m>\xe3\xb7\xb9\x0c\xcbA\xe41\x1c\x0ev\x18\xbf\xcd_|Uwa\x81ro\x01\xd0rg\xe1\xe4P\xf0\x15\x98F\xee*\xfe\x93<\x05v\n,w\n\xdc\xe6\x14\xb8\xcd)X\x0e\"\xa7\xe0p\xb0S\xe06\xa7\xc0\xaaN\xc1\x02\xe5N\x01\xa0\xe5N\xc1\xc9\xa1\xe0\x140\x8d\xdc)p\x9bSPt\x0b\x8cvu%D\xee\xbd\x0e{5?\xd12\x10\xf9,\xfb\x9dfS\x9a\x08\xe4V\x99\x99aJ\x90\x90E\xc4c^R\xcd^\xa7!\xb5E\x90==7&\x95\x94\xe7F\xc7\xe8\xe4\xd9|\xfa\xb7\xc6\xeb\xf5\xfc\xe7\xea\x85\xa9@\x15\xf9\xe1S\xae\n\xbd\xa9\"\x7f\xe7A\xfd\x13\xc0\xa1\x8c$H\x1ea\xece\xeb\x89\xea\x0b\xe3\x13\xb2\xcc\xf5\xe2\xe2\x95\xff\xe5\x17\xcb\xeb\x9a\x88\x92\x82\xe5\x04|\nH\x90\xc5H@\xf5\xab0\xf6\x1e\xc3 =A\x808\xdc\xb2\xb5s\xfd#/\xdf\xc6vt\xa8\x19d\xbf\x9dg\xffL\xe8_A\xbd\x03\xa4\xc5\xc3 \xfb@P\xaf\x16\xa3\x0d\x8a\x13\x04\xd4_\x15M\xe0\xc7B+6,\x8f\xb6fU\xa3\xd0\x9c\xb4L\xa2R\xd8\xbc2\xb9Z\xcd,\x91\x8c`\x0d\xd8\x1b\x96\xc9K\x91\x9fhIj\xc7)%N\xf1\x19\xfd\xfcyS\x15\xf90\xff9\xff\xbcy\x92\x8f)\x05\x0f\x889\n\\\x805\n\\\x96q\xf6\x88c\x8b\x02\x17bZ\xbe\xe8\x93\xe7[\x14\xb0\xac\xcb\xa7$\xf7\xe2\x11\xc4{n'(\x1b\xc8\x00\xeeU\x11\xcb\xbf~N\xd6P=\x845\x1e\xa3\xd4Y\x81:\xcfKx\xad\x17\x8f\xc9\n\xcag4\xff\x04\xe1Ee\xd0\x8aE\x06\x07\xac\x97A\x85\xc6\xcb\xf9\xe4\xb6\x03\xb84\xa6jxp\x96\xca9T\x86\x02\x98PF\xc9\xf9@6\xc9\xb94&\x01\xf80\xca\xcf9\xc1\xba/uS\xaa\x1e\xd4\x0e\xa9\xe5\x9c\x13\xa8\xe4\xfbu\x92z\x8b=\xd0q\"\xdby`\xfb\x0d\xf1\xac\"\xac\xb2T\"\xedW8\xb6\xf3\xe4\xac\xa8\xbeS?\x01YsF\xa9Q|\x07\xca9\xb1\xfd\x87|\xc8\xd6\x00\x99\xab\xc2\xccQ\xbaE(\xe0+(\x01L\x0d\xd5S\xb6\x8a$\xb2\x1dT1\x83k\xb2\xf3\xd74\x1eh~\xae\x97\xa4\xb17_\xa7H\xc0\xb2\xa0\xa29\x96\x08\xb6\xf7\xe4A\x0da\xc3\xc29\xda,X1\xa3\xbaP\xc3\xaa\xe9Ar{Ul\xd8~\xd4p\xa2\xba\x91\xcc4\x15\xab\xda4<\xaf\xca\x0c43\x89\x11*\x9e\xac\x11\x1a\x96\x84% \xaer;0=\x95\xb4\x04\xd9Qk\x96P_-\x0e\xdf\xea\xccl\xebz\x81\x8d\x8bh\x9c\x88A\xb5\x1c|\xaeO\xca\xffB\x9c\x0c \xa7\x1e\xcb\xc9(9\x19\x10\xa7\x9e\x84\x93\xc9r\xea\x95\x9cz\x10'S\xc2\xa9\xcfr2KN&\xc4\xa9/\xe1d\xb1\x9c\xfa%\xa7>\xc4\xc9\x92p\x1a\xb0\x9c\xac\x92\x93\x05q\x1aH8\x0dYN\x83\x92\xd3\x00\xe24\x94p\x1a\xb1\x9c\x86%\xa7!\xc4i$\xe14f9\x8dJN#\x88\x13\xb6\x93T\xe6\x9cz\xf6?\x96\xe38\xfb\xdf\x84\xf8\x19\x085\x97Y\xd4\xa7\xcb\xd6C\xe5\xbbm7\xe8\\\x9f\xd4$\xe0\xca*\xe7e\xc8\x96o\x0d/\x83\xe0e\x00\xbc\x92U\xec\x05\x0f\x99d\x15i\x80\x966)F\x81\x00\x05)\x89\x0d\x80\xd8\xa0\x88\x0d\x85\\\xdb\x81\xe7O\xe4\xfd\x88\xc6\x9e\xbe\xa4\x86\x18>\xf7\xaaZc\x0e\x0c/\xbe\xcb\xc2\x1a\xac\xe5\xf8\xb55\xcbFmA\xf6\x9c\xcbk\x81\x04\xadK\xafgZa\xe7\xd5W<\x8e^d\xf3\xd4\xa7\xad\xb3a)\x9e\xba\xd4>\xcd\xb8\x7f\xcaj\xfbT\xab\x7f\xbf\x057+\xd1\xf3\xae\xb9a\xee\xcf\xb2\xec\x86Y?\xe3\xca\x1b\xae\xe0\xb9\x17\xdf\"\xfd?\xd7\xfa\x9b\xeabOY\x82\x8b\x18\x1d\xbb\n\x17\xf19a!.bu\xdaZ\\\xac\xa9\x13\x96\xe3\xacY\x9f\x7fE\x0e\xd6\xf0|\x8br\x90\xfd3\xaf\xcb\xc1:\xbe\xd3\xd2\x9c\xb2\xee3\xad\xce)\x9eO^\xa0\x0b\xb8\x9d\xb6F\x170;u\x99.`\xf7\xc4\x95\xba\x80\xeb\xd3\x17\xebB\xc3\x1c\xbb^\xe7\xe7\xeb',\xd9\xe5\xcc\x8e\\\xb5\xcb\x99\x1d\xb9p\x973;r\xed.gv\xe4\xf2]\xce\xec\xc8\x15\xbc\x9c\xd9\x91\x8bx9\xb3#\xd7\xf1rf\xc7/\xe5[\xfc\xf6\x89\xaby\x96\xfb\xe2i\x0bz\x90\xddS\xd6\xf4T\xf7?aY\x0f\xd3\xb3+{\x85\xa5\xbd\xc21\x9a\x9c\xa7\xff\xcc\xcb}\x9e\xdf\xb3\xaf\xf6\xfd?c\xb1\x0fTr\xc2Z\xdf?a5\xf8\xacK}P\x80\xd65\xdfs\xad\xf4\xfd\xa7,\xf4Y\xe2\x13\xd7\xf9\x90\x0cO^\xe6\x9fb\xd7?g\x95\x7f\x9a\xc1\xbf\xe3\"\xdf\xff\x9ek|\x88\xf9\xf3,\xf1!\xce\xcf\xb9\xc2\x87\xf8?\xfb\x02\x1f\xd6\xfd\xb3\xad\xef\xfdgZ\xde\xc3|\x8e^\xdd\xc3lNY\xdc\xc3\x9cN\\\xdb\x8b\xb4t\xca\xd2\xde\xff\xde+{\xa0\x82g\\\xd8\x03\xdc\x9f{]\x0fT\xf1\xbd\x96\xf5\xfe\xf3\xaf\xea\xfd\xe7\\\xd4\x83\xccN\\\xd3\x83\xbcN^\xd2\x83\xdc\x9e\xba\xa2\x07\x99>\xc3\x82^`\x93\xa3\xd7\xf3\xec\xcc\xfc\x94\xe5\xbc\x8c\xd7\xb1\xaby\x19\xafc\x17\xf32^\xc7\xae\xe5e\xbc\x8e]\xca\xcbx\x1d\xbb\x92\x97\xf1:v!/\xe3u\xec:^\xc6\xeb\x84e\xbc\xd4]\x9f\xba\x8a\x97\xae\xae\x8e^\xc4K\x17\x84'\xac\xe1\xfd\xa7-\xe1!\xf2\xe3V\xf0\xa2\xc5:~\xe6\xc5:\xcf\xef\xd9\x17\xeb\xf8\xcfX\xac\x03\x95\x9c\xb0X\xc7',\xea\x9eu\xb1\x0e\n\xd0\xbav{\xae\xc5:~\xcab\x9d%>q\xb1\x0e\xc9\xf0\xe4\xc5\xfa)v\xfds\x16\xeb\xa7\x19\xfc;.\xd6\xf1\xf7\\\xacC\xcc\x9fg\xb1\x0eq~\xce\xc5:\xc4\xff\xd9\x17\xeb\xb0\xee\x9fm\xb1\x8e\x9fi\xb1\x0e\xf39z\xb1\x0e\xb39e\xb1\x0es:q\xb1.\xd2\xd2)\x8bu\xfc\xbd\x17\xeb@\x05\xcf\xb8X\x07\xb8?\xf7b\x1d\xa8\xe2{-\xd6\xf1\xf3/\xd6\xf1s.\xd6Af'.\xd6A^'/\xd6AnO]\xac\x83L\x9fa\xb1.\xb0\xc9\xd1\x8buvf~\xcab]\xc6\xeb\xd8\xc5\xba\x8c\xd7\xb1\x8bu\x19\xafc\x17\xeb2^\xc7.\xd6e\xbc\x8e]\xac\xcbx\x1d\xbbX\x97\xf1:v\xb1.\xe3u\xc2b]\xea\xaeO]\xacKWWG/\xd6\xa5\x0b\xc2\x13\x16\xeb\xf8i\x8bu\x88\x9c[\xac3\xf4\x87\x05\x0e\xed4\x7fG\xce\xe4\x0fz-\xcc@\xe3\x12\x9a\xbf1\xa7\x05\x1b\x94\xd8\x93\xde\x82\xb4\xc8\xdf\x82\xa4.W\x83V\x12\xad\x81+\xbcYH\xfd\xfc\x81\xe6\x1f#\xb2\x7f\x94\xc4\xbe\xba\xc0\xb0l\xc7\x98\xb9\x06\xab\xc9\x86)\xd9\xa8\xd2\xc4\x0e\x12-A\xb1\xb78,\xc2 \xd5\x16\xb6\xef\xe1\xfd\xb9fG\x11FZ\xb2OR\xe4\x9f]`/x\x98\xd9\xce\x87\xfc\xd7\xd7a\x90\x9e\xd9\x1b\x14xq'@\xbb\xea\xe7\xb3\x15\xc2\x1b\x94-r\x9b\x9f:\x01Z\xa3\xb3\xf5|\x1d\xa4\xeb\xb38\x9c\x87ix\x16d\xff$h\x19\xa2\xce\xda;\xb3c\xcf\xc6g\x8d\x14\x8ct\x9c`K\x14\xc6K\xcf>\x83\xc0\xb9t\x9a\xa0E\xc2*J*\x9e\x80\xc7:\xa1\x8b\xa8\xf7\xa0e\x0f(\xa2Wa\x90\x84\xd8N\xce\xfc0\xb0\x9d0\xfbO\x98G\x13,\xa3u\xec\xa1\x98!\xcd\x9fun2\x95\x96\x00\x11}\xad`\x8a\x03\xa3\xf6\xc6\x1e\xa2\xb6\x17\x86\xa3x\x00v\x15R\xa7+\x84\xed\x84&/\x9e\x9dI\xccT\x16\xa9Z5\xf5|D\xd7\x91?\x81\xa0\xf3\xd0\x0d\x03\x8f\xc2^\xe4\x8f:\xb3\x8f\x10\xde\xb1\xb1\x97\xa4!m\x85\xe2\x99\x80bi\xc7\xb6\x1f\x06.-|\xf9\x10\x14\xc9N\x1eP\xbc\xf10\xa6\xfd\x84x\x0e\x91\x95\x8d(>\xa1\xe5\xa56\xf6\x98\x0f_/\x12\xad\xc8\xc3\x91\xc0\xe2\x89\xc2`I\x8f=\xf9;\xafT\xebc\xb0e\x95\nu*\x0c\xd0^6\x88\xaa\xca\xe1\x1f-\x06X#V\xaf\x11\xd25\x8d%M\xb2-r\xc8}\xee\x93\xefT1\xf7E\xf8\xc5\xd6\xa0\x00\x06\x0f\xe8Q\x80\x1e\x0f0)\x00\xf7y\xfa\xc5\xb6/\x17q\xb1\xb5(\x80\xc5\x03\x06\x14`\xc0\x03\x86m\xcd\x1cQ\x80\x11\x0f\x18S\x80\xb1~\xfc\x9b\xba\x19\x8f\x15Z\x84E@Fa1\x90]X\x0cd\x1a\x16\x03Y\xa7U\xe2E\xf1\xb9\xb36\x1b\xb1\x18\xc8L\nm\x1f\xb1\x18\xc8X,&\xb3\x97\x82\xc1\x14F\x05\xba\xbf\x8b\x8d\xe8\xb7\xb5\xc3` \xa0 \xfdv\x0b\xfa\xed\x06l\x11v\x91\x7f\xed\xac\xd5|~\xbb\xf5Z\x1b=b \xa0\xed\xfc#M'\xb6R\xdb\xe0\xc7\x00@+\xe1v+\xe1v+\xe1v+\xb5\x08\xbb\xc8?v\xd6j%\xdcn\xa5\xd6F\x8f\x18\x08h%\xcc[\x89\xc2xA\xb4N\xb5\x18%\xa8\xb9\xdfnG\x11\xb2c;p\x8a/qN4?|d\x1f2&Z\xa7i\x18\x14l\xce\xcfs\xfc\"t\xd6\x89\xe6\x05\x01\xfb\x16`\xa2F\x1eZ~\x86\xed\\\x9fD\xb6\xebz\xc1\x92]\x18\xaf\x8cC\xb9\xd1\xca\xbf>y\xd5\xab\xca\xf8\xd7\x19\xaf\xcc\xaa\xac\xcf\x97\xf5\xab\xb2\x11_f\xd5\xf5\x0d\xf8B\xadW\x17\xf7\xac\x17l\xa1\xa5W\x85\x16\xfb\xa9\xe5\x956\xac)\x87<\xa5\xa1\xd7\xa4\xfcg\x9a\xf3\xcd\xe6\x1cBl;\xf3\xb0\x0d-\xddf\xc5\x15\x93\xf2\x01\xc5\xa4\x84@1-#\x0b\xc8D\xdb@R\xb2\xc0U\xf1\xce\xb9\x12\x90\xfd\xcc\x96{\xc1\n\xc5^ZA\xca_\x15\xe6\x89\x03\xe39\xd9t#q\x1e\xa2\x18\xf2\x1f\xa2\x18r!\xa2\x18\xf2\"\xb2n\xd8\x91\xc8\xea!_\"\xcaAw\"\xcaa\x8f\"E\x10;U\x86j\xf7+JX\xd0\xb5(qA\xef\xa2\x04\x86\x1d\x8c\x16Y\xecc\xbc\xd0\xb0\x9b\x11\xfc$\x9eF\xa0*gS\xf06\x85\xa8d\x95E\x132\x0f\xf4\xa5\x0e\xe8K\xfd\xcf\x97\xba\x9f\xdf\xe6}\xbe\xdc\xf9|\xb9\xef\xf9-\xae\xe7\xabx\x9e\xaf\xe2x~\x9b\xdf\xf9mn\xe7\xb7z\x9d\xaf\xe6t\xac\xbc\x02\x9f\xf3U\\\xce?\xce\xe3`\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2R\xe7\xc2m\xce\x85\xe5\xce\x85\xe5\xce\x85[\x9c\x0b\xab8\x17Vq.\xdc\xe6\\\xb8\xcd\xb9p\xabsa5\xe7b\xe5\x158\x17Vq.\xcc9\x17\x05Lc\xdby@\xee\x01\xa34E\xb1\x96D\xb6\x93E^]\x83\xfb>E\x01\xd4\xd2\x8c\x19\x0b\xd7\xba\xba%\"\xf0\xd1\xd2\xe6\xd8\xf72x\xfb\xb8z\x009\xe6\xdf/:F\\\x80\xa2Mb\xa8\x92\\h\x05\xa9\x15f\x83\xba\xaac[\xc2\x11\xb46\x84\xafB\xa1\x1d\x12\x91\xf1\xb1\"s\x04\xad\"\xf3U\x14\"S\x14x\xa5%!\xf6\xdcC\xbe\x8f^u\x16\x0e\x93z)F4\xa6\xdb\xb38\x98\x13F{\x06e)\x98\xfa\x00\x8a\x94;O\xbbT\x1cL$\x18\x0f\xb4\x9e\xc9\x0fk\x89}%\x81}EyY\\\x9b\xb82\xc9\xb0\x92dXQ2\x16g\xb1^\xe5\x05\x0f\x87\x14\xedR\xcdEN\x18\xdb\xe5 Vv\xd1\x9b\xc1\xce\xb8'\xe7\xb6\x93z\x1b\x04\x14\xe4\xcb\\\xe0\xf9*\xdc\xb0k\xe4\xfc\xb9\x80\xff\xc6K\xbc\x145o\x1cMc;H\xbc\xea\\g\x18w\xba\x86\x95t\x90\x9d \xcd\x0b&\xd2R\xbe=\x85\x90\x87p\x9df*:7\xa2]\xc7\x0d\xd3\x14\xb9\x1dg\x1d\xc7(H_eLX\xba$=d\xff\x14Yn-\xddGP\x8e\xc0\xdf\x16\xab\xc1\xda\x15\x81\xd9zk\x90\xe5\\,\xe1o{D9\x1f\xc6\xf8[\x93(\xe7\x03\x19\x7f\xdb'\xca\xf9P\xc6\xdfZd\xfd|0\xe3o\x07\x04\xc0\x84$\x18\x92\x12@U\x8c\x08\xc0\x00\x92qL\x00\xc6\x90\x0c\xc5+\xd4\x1b\xd0I\x9b\xf1\x859\xf2\x85\x93\xdc\"\x0c\x042\n\x0d\x01\xedBC@\xd3\xd0\x10\xd0:\x8c,\xa0\x81h\x0cl#F\x1a\xd0L4\x06\xb6\x14\x8d\x11\x1b\x8b\xc6)\xec\xf6\xab\x8e\xdd\xa5\x15\xfdV#\xfa\xad6\xf4[M\xe8\xb7Z\xd0o5\xa0\xdfn?\xbf\xdd|~\xbb\xf5\xfcv\xe3\xf9j\xb6\xf3\x8f3\x9d\xd8J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xd5J\xb8\xddJ\xb8\xddJ\xb8\xddJ\xb8\xddJX\xcdJ\x98\xb3\x12\x05\xdb\x1a\x07\x91Z\xb7\xbd\x83H\x9f[\xf3 R\xe4\xb6\x7f\x10ipk\x1d\x84\xaa\xcb<\xa1*e=`\xab\xf5\xaa\xb2\x1ePVq\xe5\xd6\xd0[\xcd\xac\xe8L\x9e\xce\xac\xda`\x9a|Y\xd5\x08\xb3\xcf\x95\xf5+\x9e}\x9e\xa7U\x95q\x0b\xf6\xad6\xa8\xca\x06|\xd9\xb0*\x1b\x02eU\xfb\xb8U\xfeV\x1bUt#\x9en\\\x95\x8d\xf9\xb2,\xe0\x10\xf5\xb7\xad\x96\xae\xbc\xd8\xad\x95\xd35\xb3\xff\xf1\xa0mX\x00\x93\xaaY\x83\xee`0\x18\x0c9d\x9e\xc7.0\xf9b\xbc}\x80?0.\x9aM\x13b/mJ!GmJ!_mJ!w%\xea\x85=\x96\x00@NKH\x06\xf9-Q\x0c\xb9nS\x0cz/Q\x0c90Q\x0c\xf90\xa1\x16\xc8\x8d\x9bb\xd0\x93\x9bb\xd0\x99\x9bb\xd0\x9f\x89b\xc8\xa5 \x9b@^\xdd\x14\xc3\x8eM\xdaD\xe0\xdb\xa4\xeaZ\xdd\x9bh\xab\xcc\xc3\x1bX\xee\xe4\n^\xae\x10\xc6\xe4\x01\x8a\xc4\xf3}\x99\xe3\xfb2\xbf\xf7en\xef\xb7x\xbd/uz_\xea\xf3\xbe\xd4\xe5}\xa9\xc7\xfbR\x87\xf7\xa5\xfe\xeeK\xdd\xdd\x97z\xbb/uv_\xea\xeb\xbe\xd4\xd5}\xa9\xa7\xfbrG\xf7[\xfd\xdc?\xc2\xcd}%/\xf7\xd5\x9d\x1c\xf6g,\xf3g,\xf3g,\xf3g,\xf3g\xdc\xe2\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xea\xcfX\xee\xcf\xb8\xd5\x9f\xf1\x11\xfe\x8c\x95\xfc\x19S\xfeL!\xc2\x0d\x8a\x178\xdcj\x1b/\xf1\xe6\x18\x1d\xaa\x07\xe7\xe5\x03\x01|\xe5\xb9.\n\x1at\xf1\xbb\x00\x9c8q\x88q\x03.~\x17\x80\xf3H\xaa\x86\xf2;\x1b5p\xc7\xc9\xac\xedZ\xa4\xde\xb1rk;\xb9\xe4;Vvm'\x97~G\xcb\xaf\xedd-\xd8\xf3-\xd8\xb7\xb4`\xcf\xb5`/o\xc1\x9ek\xc1^\xde\x82=\xd3\x82\xfdi\x01-\xebXY\xe8p\x94oQ\x04\n\xeeE\xe1[=\x8cB\xab8\x19I\xa0\xecg\x0c\x91\x92\xab14\n\xde\xc6P\xa88\x1cE\xa2\xeas\x0c\x91\x92\xdb14\n\x9e\xc7P(\xcc\xc1\xaa\x81&\xe7\x92\xfe\x91\x1e\xe9\x1f\xe7\x90\xfe1\xfe\xe8\x1f\xe9\x8e\xfe \xde\xe8\x1f\xef\x8c\xfe\xb1\xbe\xe8\x1f\xed\x8a\xfe \x9e\xe8\x1f\xef\x88\xfe\xb1~\xe8\x1f\xe9\x86*\x1e\x87\x8f\xf48|\x9c\xc7\x1d3\xc7\x92`%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dki\x02%\x8f\xc3'x\x1c>\xde\xe3\x8e\x9dsi\x02 XKR;\xf5\x9cCq\x055\xcc\xdf\x8d\x91\xb2\xb7Ob\x84\xf3;\xa2\x0d\xaazB\xe3\xecy\x12\xe2uJ\xe0\xaa'4\xae\xf8\xa8~\x0d\xca\x7fU\x18\x8e\x0f\x80\xe0\xd9\xc8\xae$;\x05\x94\x8bOA%-\xa0pE#\x14Z\xa10\xa9\x94M\xf3\x15[\xe6+7\xccWk\x97\x7f\\\xb3\xc4-\xc0\x8a-\xc0\xca-\xc0j-\xc0\\\x0b\xe8N\x92'r\xc3\xc8v\xbct\xcf\xbdu@\x1b7e\xdd1[8\"\n\xd9\xbb\xe9\xda\x90(d/\xc1k\x03\xa2\x90\xbdm\xafYD!{\xad_\xeb\x13\x85\xec\xfb\x034\x93(d_T\xa0\xf5\x88B\xf6\x8d\x08\x9aA\x14rJ\xd0\xad\xa6P\xe7$\xd2{d1{0\"\xd4\x1a\xce\xccy\xfb8L\xed\x14i}\x8b>o\xb0\x08c\xff\xbc(\xfb\xb1o\xb9h\xf9\xd3D\xf0\x1cd7\xd6\xc5\xec\xc6:\xcc\xaex\x0e\xb23L\x89x\x86)\x90\xaf,\x809\x8e$\x12\x1a#\x81\x88e\x01\xc8\xb1\xd7\x93\xc8\xd8\xeb d,\x0b`\x8eC\x89\x8c\xbd\xa1@\xc6\xb2\x00\xe4h\x1a\x12\x19MC cY\xa00\x96\x1e`\xd7\xd2\x88\x0f\x1c<\x8fwI9\x9e\xe6`R\x96\xa7\xfa\x98\x9c\xe9\x89n&ez\xaa\xa7\xc9\x99\x9e\xe8lR\xa6\xad\xfe\xa6\xe0p\n\x93w\xe3\x85\xfes;\xa1\x84\xe1\x89>(\xe1x\xb2\x0b\xcax\x9e\xea\x81\x12\x9e';\xa0\x8c\xe7\xa9\xfe'\xe1\xf9D\xf7\x93z\x1a~nO\x930<\xd1\xd3$\x1cO\xf64\x19\xcfS=M\xc2\xf3dO\x93\xf1<\xd5\xd3$<\xdb=\x8db:\xc7\xb6\xf3\x90EP\xf9y\xce\xf3x9\xb7\x7f\xd4\xcf\xb2?\xdd\xf1O\x10t\x04AG t\x08A\x87 t\x00A\x07 \xd4\x82\xa0\x16\x08\xedC\xd0>\x085!\xa8 B{\x10\xb4\x07B\x0d\x08j\x80P\xdd\x02\xa0:\xdb\xae\xed\xca+\x02\xde\x02\xbbJp\x8e}qf\xe8\xfa\x0b\xded\x05|$\x82\xb3f+\xe0C\x11\x9c5]\x01\x1f\x88\xe0\xac\xf9\n\xb8%\x82\xc3M\xed\x8b\xe0\xac\x19\x0b\xb8)\x82\xb3\xa6,\xe0=\x11\x9c5g\x017Dp\xd0\xa4%\xf6\xaf:{\x93:@v\xacQ\x10\xc3`V`\xae\x1d?h\xcb\xd8\xdeW\x08\xd3dVw\xbe\xe7R\x00\xcbb\x96ad\xe1p\xc8\xacG\x13\x0foP\\\x15s\xefB\xc3\xf95\x0b\x1ad\xdb6#A\x18\x06\x94\x08\x8e\xe3@lH\x08B\x08\xd0E\xae\xdd\n\xb2\xe8g\x7f\x00\xf5\xd7\x80\xc5\x02PV\x8c\xdc\xba\x92\xa1\xde\xd7\x19\x0cQ\xbcX\xf4\x0ds\x00IJ\x81\x86=\x8biN\x18\xdb\xc1\x92\x10c\xc0]\xe9_\x86\x98\xe00\xe7\xae\xd9\xef\x11\xc6\xe1\xb6Dd`H\n\n\xf4\xd7\xc5|a\xd8\x8cy\xa2u\x1c\xe1Z\x10\x0b\xf5\x1c\x9b\xbd\x9c\x90s\xa2qv\x7f`.z\x80\xea\"/\xa8=\xd1\xb5t}\xc4\xe8n\x15\xa6\x14&S\xe0\x9c\xb1\x10]>\xd2aW\xa0Q\xb6\xe9\x0eA\xb7G(\xa8{\x869\x1cZ=\xd6\xb3I\xc0\xd8\x1e\x0f\xfb\xb0\xdf\x11\xb01Bs\x87iW`o\xf6M'5\xe6\xfd> \xcd\x1c\xafQ\x03\xea\xf7\xc7\xec\xcb\n\x88r\xd3\x1a\"\x17\xb4)\x89\x1a\x0f\x1c\x87u\xe1\x1c\x85\x12\x1a\xe8\xb8\x88\x03n\xedd\x85\\\n\xb6\x18,\x16\x0b\x04\xc2(\x15\xa0\xd1\xc2]X \x8eq\xb9\xc5\xc2As\x10H\xf5\x10w\xe1ro'\xc3a\\_\xb1/\x80\xd5-AZkK\xad\x8e<\xe6\xb6\xf3\xb0,\xde\x91ZPH\x83\x90\x8ap\xd4B\xc8\x85$\x15\xe1\xb0\x85\x90\x0bP*\xc2A\x0b!\x17\xaeT\x84V\x0b!\x17\xbcT\x84\xfd\x16B.\x94\xa9\x08\xcd\x16B.\xb0\xa9\x08{-\x84\\\x98S\x11\x1a-\x84\xdc\x0cY\x11\xea\x96\x9c\x90\x0b\x81\xe6K\xad\x8e\x828\xca\xb6\x80\xa8&\x86\xdc\xa7-<\xaa\x89!\x17j\x0b\x96jb\xc8\x8d\xdaB\xa7\x9a\x18r\xa5\xb6@\xaa&\x86\xdc\xa9-\xac\xaa\x89!\x97j\x0b\xb2jb\xc8\xad\xdaB\xae\x9a\x18r\xad\xd6\x00\xact/\x9e\x92\x0f\xc7\xe6K\x8d\x88\xc8x\x02.8\x9b/\xb5&>\xe3\xf1\\\xa86_ju\xb4\xc6\xc3\xb9\xc0m\xbe\x14A\xb90n\xbe\xac\x824\x1e\xcc\x05u\xf3\xa5F\xc5u< \x17\xe2e\x92\xd7Q\x1e\x8f\xe7\x02\xbe\xba\n\x01\x01\x17\xfeU\xba/\x02<\x9e\x00\n\x06+\xc7\x80\xe0\xect9_\x16+\xe4\xc8\x8eQ\x90\xf2\x14D!l\xe3l\xc2\x03\xda\x01D\x98\xf3\xa5\x00\x0c\xc5\x9b\xb5\xa2D$|\xf49_je\x00\n\xe1\xf9X4s\xa3,\x1c\x85\xd0|d:_VA\x00\x87\xe7\xe3\xd4Zz\x11 \x18\xb5\xce\x97U@\nt\x02 \x86\xadk\x11RA\x11me\xb8<\xd4\xe4I\xa0\xf8v\xbe\xd4\xea\x10\x176\x1f\x1b\xedfM\x11\xa1\xf9\xd8\xb7i\x88\x88\x86\x8f\x84\x9b1&\x8b\xe0\x80A \x88\x8b\xf3\x81C\x00\x07\xa2d\xa2\xb3\xc2DP\xcc\x9cu\xd8,l\x86\xc6U>\x82\xaeZ\x91\x87\xab\x10 \x10O/Eh(\xba\xae\xdb \xa0\x81b\xed\x8a\xa6\x0e\xb7\x81\x81\x0d\x88\xbc\xb3a\x87\x08\xbe\x013\x02qxC$R2\x14\x957T\xe2\x0e\x06\xc4\xe8\x0d\x99hT\xe1#\xf6\xf9\xb2\x0e\xd79\x020r\xcf\xef\x97\x17s%t\x07\x9d,\xce\x7fn\xd6N\xec\xbb\xd7rd3\xf3\x8a\xb9\x11\x18\x8a%71\x17\xf0zn\x16sl \x14Cn\xe6.\xd0\xd5\xe4-\xe6W#(v\xdc\xcc^\x80\xe5\xacx6\xdc\xac_\x00\x8bY\\\xcc\xa8,\xa7Xq1A\x01%\xc3\x021C\nE\xb1\xe5\xe2\x86R+U\xe8 Q\\\x0d\xa1\x18r\x81\x05)\x81\x9c#\x81\xa1Xr\xa1\x07\xe1[y8\xd1\xe2\x7f\x05\x86b \x05'\x05E\x0bC\x88\x17;\xdc\x10\x1dI\x1b\xeb-]-C\x90\xecd+h\x92l\xd4\xcax$f\xcc.\x8fH\xb2a+\xe3\xa1\x981\xbbt\"\xc9\x06\xad\x8c\x07b\xc6\xec\xb2\x8a$\xb3Z\x19[b\xc6\xec\x92\x8b$\xeb\xb72\xee\x8b\x19\xb3\xcb1\x92\xcclel\x8a\x19\xb3K5\x92\xac\xd7\xca\xb8'f\xcc.\xe3H2\xa3\x95\xb1!f\xcc.\xf1\x88\xae$\xed 5\x82d\xdc\x96' Ie\x9d\xa4F\xc8\x98\xc3\x1d\xa5J%\xb41\x1f\xca\x99\xc3\x9d\xa5J5\xb41\x1f\xc8\x99\xc3\x1d\xa6JE\xb41\xb7\xe4\xcc\xe1NS\xa5*\xda\x98\xf7\xe5\xcc\xe1\x8eS\xa52\xda\x98\x9br\xe6p\xe7\xa9R\x1dm\xcc{r\xe6p\x07\xaaR!m\xcc\x0d9s\xb8\x13\x95\x81\x9e\x98w\x05 Y\xcb\xa2\xc3e[HW#\n\x8e\xd0\xd2\x00\x0c\x17\xa9\\\x8d\x94=\x174\x02\x8b\"8~$\xd3;\xd2*\xd8(\x12X\xb2\xc0\x01%\x91\x10\x92V\xc0\x84\x95\xc0\xb2\x19\x8e0\xcb\x0c\x92\x94\xb7\x94\xaf \xe4\xac\xd3MR\xceT\x84\x08,\xc9\xe0\x18\x94\xc9NIk\x00\"Q 9\x00\x07\xa5dJK\xae|&4\x05V\x89p\x94J%\xc1\x14\xda!\xadC\x10\xb6Ry\xb3\xf6~@\x06\x9c\xc0\xbaP\x18\xc7V\xa96i\x0d-\xcc\x05\x81-\x95\x98\x93\xf2'q\x82Z\x84i\xbc\x9a\x89B \xbddci\xae\x1a\x85\xb0z\xa9\x12Y/\xd9\xe0ZZ\x93 \xce^\xaa\x84\xdaK6\xda\x96\xd6$\x08\xbc\x97*\xb1\xf7\x92\x0d\xbf\xa55 \"\xf1\xa5J0\xbed\xe3qiM\x82\xd0|\xa9\x12\x9d/\xd9\x00]Z\x93 V_\xaa\x84\xebK6b\x97\xd6$\x08\xde\x97*\xf1\xfb\x92\x0d\xe1\xa55 \xa2\xf9\xa5J@\xbfdcziMpdBl\xf6\xb5\x8fA\x92\x9e\xab\x16\xef\x13\xbb\x83\n\xb5\x89{\xaf\xda\x02\x80\xd8NT\xa8M\xdc\x83\xd5V\x04\xc4\xfe\xa3Bm\xe2^\xac\xb6D 6,\x15j\x13\xf7d\xb55\x03\xb1\xc3\xa9P\x9b\xb87\xab-\"\x88-Q\x85\xda\xc4=ZmUA\xec\xa1*\xd4&\xee\xd5j\xcb\x0cb\xd3U\xa16q\xcfV[wT;l\xe2\xaajDQO\x15\x14\x01\xdbo\x05^\xca\x8c\xe3\x03\xed\xcc\x15\xd0zsN\xcc\xad\x810<\xf9\xad\xbb\x82\xa0\xd8\xbd\x133,\xcb\x19n\xfc\xc6^\x81^\x86X\"\\^\xcap\xe27\xfd\nl\xb1\xc7 \xe6U\x96\x93\xdc\xf8-AR'm\x0c)\x14-$\xb0mX\xd0\x14{\x80b\x9ee9\xc5\x0d\xdaT$%h\xe3I\xa1(\xce\xd0\xc6#\xe1\xb0\x91\xe0\x05\xbd,\x84\xe2 \x9f\xbc\xcb\x08\xaa\xcdI1\xcb\x1a\xc1\xb97\xbbsYjK\xca\x0d\xe2\xc4\xefjR:\x92\xf2#0\x0cW~\xdf\x93PQ\xbec\xd6\xa2\xc6\x02Cq\x85vF\xcbN!g\x08\xf1\x02\xb6M\xc96\xb5p$A\x14_hg\xb5 \xec\x8dd\xcd\x98\x97R\x9c\xa0]WB?s\xbc\x968x\x03ax\xf2\xdb\xb2\x05\x81\x9c\x1d\xcf \xda\xb2%U#\xe7G`h\xed\x01\x9b\xba\x04E\xb5\xaf\xdb\xc2\xb8\x86Q\xbc\xa1\x9d\xdf\x82\x88\xd8\xfc\x15s&A\xb4\xaf\x03\x9b\xc3\x14I\x8b+Q(\x8a3\xb4\x81L\xd1\xb4\x0d\xc74\x8c\x96\x1a\xd8e\xa6\x88\xa43$\x81a\xb8\xf2\xfb\xd0\xa5\x07-\x15b\x02\x12T\xf0\x05\xd2&\xc2\x08\xa18\xa6#\xe5.c,\x0e\x19\xc8#=R\xf6l\xe0\x00U\"\x8a!\xeaC@\xd2\x1a\xa8H\x02b/\n*\xca3CR\xe6Dh\x01\xb1\x16E\x19\xf5\x01#)s\xca 9\xf6\xa2\xb0\x839\x8f\xa4\xa0}y=\x928\xa4>\xc4$\xad\x84\x8a\x19x\xf6\xe2\xc0\x849\xf3\xa4\xd0\x92\x96\xaa\xc4\x91\nyP\xaa\xbd\xb3\x11\xb37_\x898t!\x8eVI\xeb`\x02\x18\xb8\xdf\xc1\xb1Ly\x16Kn\x0f9kQpC\x1d\xdcR\xb1\x85\xbc\x1aQ\xb4C\x9d\xf5j7\x059\x07\xf0\xd5\x88\xc3\x9f\xeax\x98\xbcw\xcb\x99\x0b\xe3!\xfa0\x99\x82\xae\xe4\x15\x89\x03\xa4\xf2\x00\x9a\xb4\x06\"L\xe2Y\x8b#&\xf2\xb4Z\xbb\x19\x889\x1e\xaaD\x18B-\xdb\xf9KY\x8bc*\xea0\x9c\x82 \xa4\xd5\x88\x83,\xf6\xfc\\{ML\xa8\xc5W&\x8e\xba\xe8Sw\xd2\xaa\xf8\xd8\x0b\xe8\x84\xc20\x8c9\xa9\xa7R\x93\xdc\x85\xc5q\x19{\xbcO\xa5\xae\xb6 K\x18\xa8Q\x87\x02Uj\x92\x07&\x92\xc8\xadu\x17\x99\xc0\x08*\x00\xf7\x94#[?\x08\xbe\xdf\x1a\xd9F]\xd4\xedY\xdc{j#\xbb\xd7\x94C\xc5f]\xcc\xbfY7\xb2\xfbu)\xffj\xdd\xc8\xb6\xeaR\xfe\xdd\xba\x91=\xa8K\xf9\x97\xebF\xf6\xb0\xa9\x97\x7f\xbbn\x84\xeb\x06k\x18-R\xae\xd5\xd8\xa0\xcb\xc1\xa6\xe3\x1e\x03\x820&\x8d\x01\x94\x80\xfb4\x04\xd0\x04\xb6h\x08\xa0\x0e<\xa0!\x80N\xf0\x90\x91\x05PL\xdc(&\xce\x06\x16N3\xb1\xc1\x00@\xd5\xc4=\x16\x05\x81L\x06\x04('\xee3\x18@;\xb1\xc5`\x00\xf5\xc4\x03\x06\x03\xe8'\x1e\xb2\xf2\x00\n\x9a7\n\x9a\x87i\x1a\xfa\x9c\x86\xe6\x06\x8b\x00U4\xefq0\x08e\xb2(@I\xf3>\x0b\x02\xb44\xb7X\x10\xa0\xa6\xf9\x80\x05\x01z\x9a\x0f9\x99\x00E\xa5\x8d\xa2\xd20\xe2\xb4\x94\x1aT1\xa8\xa2\xb4Gc \x88IA\x00\xe5\xa4}\n\x01h&\xb5(\x04\xa0\x96t@!\x00\x9d\xa4CZ\x0e@!\x1bF!\x93\x16?\xda@\x1ab\x89@\xbdm\x00\xbdq\x84\x10\x1d\xafL\x96\x0cP\xf0\x86W0K\x05(}\xc3+\x9d\xa5\x02\x0c\xb1\xe1\x0d\xc1R\x01\xc6\xd9\x00\xc6\xe1\x1a\x06Xl\xc5\xce\x125\x11<6\xae\xc0Y\x83!\x02-\xb6\x82\xa6\x12\x96\x10\xa2\x03\xa6\x17\x86\x0c\xb0\xd8\n\x98q\x18*\xc0b+`\x12b\xa8\x00\x8b\xad\x80y\x89\xa1\x02,\xb6\x82\xa6*\xb6a\xc0\xc7\x85l\xfd\xe0\xdb\xf1\xd2\x0bX\xdb\xf8\xb6Q\x95@\x06\xf0\xed^]\x0c\x95\x9aU)\xf0\x95'\xbb_\x15\x02\x9fU\xb2\xad\xaa\x10\xf8Z\x92=\xa8\n\x81\xaf-\xd9\xc3\xbaN\xa0\xa1\xb8j(\x18\xbf\xf8\xd8\xa0\x8a\xc1&\xe3\x1e\x8d\x81 &\x05\x01\x1a\x8f\xfb\x14\x02\xd0\x00\xb6(\x04\xa0\x06<\xa0\x10\x80.\xf0\x90\x96\x03PH\\+\x04\xec\x9b~l\xd0\xe5\xa0J\xe2\x1e\x03\x820&\x8d\x01\x94\x12\xf7i\x08\xa0\x95\xd8\xa2!\x80Z\xe2\x01\x0d\x01\xf4\x12\x0f\x19Y\x00\xc5\xcck\xc5\xc0\xf3\x8c?7\x18\x00\xa8\x9ay\x8fEA \x93\x01\x01\xca\x99\xf7\x19\x0c\xa0\x9d\xb9\xc5`\x00\xf5\xcc\x07\x0c\x06\xd0\xcf|\xc8\xca\x03((\xad\x15\x04\xc4)~j\x90\xa5\xa0j\xd2\x1e\x05\x81\x10&\x89\x00\x94\x92\xf6I\x00\xa0\x91\xd4\"\x01\x80:\xd2\x01 \x00t\x91\x0e)\x19\x00ElhEL\xe4n\xb3\x01\x143Qp\xa4\x0d\xaf-\x96\x0c\xa2\xe248i\xf5\xb4\x0d\xa7\xd4I\xab\xe7m8=OZ=q\xc3\xa9~\xd2\xea\x99\x1b\xde\x1al\x83\x00\x0b\xad\x98Q\xbf\"\x81\x87\xbc\x154 \xd0$\xa0\x85V\xc0\xc4\xc0\x90AT\xfc\\A\x13\x01\x16Z\xf1\xb3\x07M\x03Xh\xc5\xcf'4\x0d`\xa1\x15?\xc3\xd04\x80\x85V\xc0\x9c\xc34(\xb7P\xfb[-\xe9\xd7\nFv\xfer\xce2\x96\x01\xf2-d\xa9 \xe5BA \x84I\"\xc0\xc4\x0b \x00s/$\x00L\xbf\x90\x000\x03C\xc9\x00&a\x08\x84(\x0f\xc3A\x04\xa9\x18\x1e\x07\xc1L\x0e\x06&d8\x14\x98\x93\xe1P`Z\x86C\x81\x99\x19^.09C\xc2D\xf9\x19\x1e#H\xd1\x00@\x08g\xf280Q\xc3\xc3\xc0\\\x0d\x0f\x03\xd35<\x0c\xcc\xd8\x00\xb2\x81I\x1b\x12'\xcc\xdb\x00 A\xea\x06BB@\x13\x00\x82 \x1c\x00\x07\xe6p\x00\x1c\x98\xc6\x01p`&\x07\x92\x0fL\xe6\x90@8\x9f\xc3\"\x04)\x1d\x0e\x06\xa1L\x16\x05&vX\x10\x98\xdbaA`z\x87\x05\x81\x19\x1eN&0\xc9\xc3)\xaa=\xcf\x03kN1\xd5\x03\xeaS-\xdb\x03)Y)\xe1\x03)^)\xe7\x03\x19C)\xed\x03\x19H)\xf3\x03\x1aM-\xf9C\x92*\xe6\x7f8\x92cR@<1D\x0b\x91\xc2\xd3\x9aJ\"\x88#T\xcd\x05q\x84\xaa\xe9 \x8eP5#\xc4\xb7Q9)\xa4\xe5\xdfs\x8f\xe1\xbc\x10Q(H\x0d\x91\x08\x08`\x12\x000AD\x94\x839\"\xa2\x1cL\x13\x11\xe5`\xa6\x88\xac\x1fL\x165\x00Q\xbe\x88E\x08RF\x1c\x0cB\x99,\nL\x1c\xb1 0w\xc4\x82\xc0\xf4\x11\x0b\x023H\x9cL`\x12\x89@\x89\xf2H\x1cD\x90J\xe2q\x10\xcc\xe4``B\x89C\x819%\x0e\x05\xa6\x958\x14\x98Y\xe2\xe5\x02\x93K\x04L\x98_\xe21\x82\x14\x13\x00\x84p&\x8f\x03\x13M<\x0c\xcc5\xf100\xdd\xc4\xc3\xc0\x8c\x13 \x1b\x98t\"pp\xde\x89\x01\x08RO,\n\x02\x99\x0c\x08L@1\x180\x07\xc5`\xc04\x14\x83\x013Q\xac<`2\x8aUPk>\nT\x98ZJ\n\xd2\xa2RV\n\xd0\xacJb\nP\xb6Jn\n\xd0\xbfJz\n0\x89J\x86\n\xb2\x92R\x92\x8a T\xcbS\xb1\x04G\xa4\xaa8R\x80\x12\"\x04\xe7(\x85\x84\x15K\xa6\x98\xb3b\xc9\x14\xd3V,\x99b\xe6\x8ak\x9b(y\xa5\x90\xbdR\xf8&Kd\xeb\x9a_\xc5fPF\xab)\x14%\xb4\x08\x04\x040 \x00\x9c\xcej\xca\xe1lVS\x0e'\xb3\x9ar8\x97E\xd4\x0f\xa7\xb2|f\xad\xc0\"\x0c\x16!Jd\xb10\x08e\xb2(8\x8d\xe5\xf3\xb1=\x0b\xb2X\x10\x9c\xc4\xf2\xf9\x98\x9d\x05\x0d9\x99\xe0\x14V\x83\x12f\xb0X\x88(\x81\xc5\xe1 \x98\xc9\xc1\xe0\xf4\x15\x8b\x82\xb3W,\nN^\xb1(8w\xc5\xc9\x05\xa7\xae\x1a\x988s\xc5aD\x89+\x1e\x08\xe1L\x1e\x07\xa7\xad8\x18\x9c\xb5\xe2`p\xd2\x8a\x83\xc19+^68e\xd5\xe0\x04\x19+\x1a JX1(\x08d2 8]Ec\xe0l\x15\x8d\x81\x93U4\x06\xceU1\xf2\xc0\xa9*FA\n\x99*Hc\xaa\x89*@\x8f\x8ay*^\xb9ji*^\xe1jY*\xde\x08jI*\xde0j9*\xc0X\x8a)\xaa\x86R5C\xc5P\x1c\x95\xa0bi!R\x88\x12\x9c\xae\x94\xd2S\x0c\x9drv\x8a\xa1SNN1t\xca\xb9)\xb6}\xea\xa9)\xbf\x8c\xd4\xa0\xccT]&JL5\x00\xa8\xdcl\xca\xe1\xb4T]\x0cg\xa5\xeab8)U\x17\xc39\xa9\xa6n8%\xe5\xd3k\x04\x16`0\x00QB\xca\xe7\xc3\x7f\x16d2 8\x1d\xe5sq=\x8b\xb1\x18\x0c\x9c\x8c\xf2\xb9\x88\x9d\xc5\x0cYy\xe0TT\x0d\x12f\xa2\x18\x84(\x11\xc5\xc2 \x94\xc9\xa2\xe04\x14\x03\x82\xb3P\x0c\x08NB1 8\x07\xc5\xca\x04\xa7\xa0j\x948\x03\xc5BD (\x0e\x07\xc1L\x0e\x06\xa7\x9fX\x14\x9c}bQp\xf2\x89E\xc1\xb9'N.8\xf5T\xc3\x04\x99'\xaa\\\x94x\xa2A\x10\xc6\xa41p\xda\x89\x82\xc0Y'\n\x02'\x9d(\x08\x9cs\xa2e\x81SN\xb4b\xda3N\x80\xa2\x14\x13N\xbc\xf6\xd4\xf2M\x9cF\x95\xd2M\x9c\x92\x95\xb2M\x9c\xde\x95\x92M\x9c)\x94rM\xbcu\xd4RM5\x9db\xa6\x89\xc6\x1f\x93hb(\x01B\x88\x0e\x9a{T\xd2L4\x95j\x96\x89\xa6RM2\xd1T\xaa9&\xa6]\xa7\xa5\x98\x04\xd9$\\\x85SP6\xa9)\x14e\x93\x08\x04\x040 \x00\x9cMj\xca\xe1lRS\x0eg\x93\x9ar8\x9bD\xd4\x0fg\x930\x13\xd7\xb3\x08\x83E\x88\xb2I,\x0cB\x99,\n\xce&a>\x16gA\x16\x0b\x82\xb3I\x98\x8f\xb2Y\xd0\x90\x93 \xce&5(a6\x89\x85\x88\xb2I\x1c\x0e\x82\x99\x1c\x0c\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12\x8b\x82\xb3I\x9c\\p6\xa9\x81\x89\xb3I\x1cF\x94M\xe2\x81\x10\xce\xe4qp6\x89\x83\xc1\xd9$\x0e\x06g\x938\x18\x9cM\xe2e\x83\xb3I\x0dN\x90M\xa2\x01\xa2l\x12\x83\x82@&\x03\x82\xb3I4\x06\xce&\xd1\x188\x9bDc\xe0l\x12#\x0f\x9cMb\x14\xa4\x90M\x824\xa6\x9aM\x02\xf4\xa8\x98M\xe2\x95\xab\x96M\xe2\x15\xae\x96M\xe2\x8d\xa0\x96M\xe2\x0d\xa3\x96M\x02\x8c\xa5\x98Mj(U\xb3I\x0c\xc5Q\xd9$\x96\x16\"\x85(\xc1\xe9J)\x9b\xc4\xd0)g\x93\x18:\xe5l\x12C\xa7\x9cMb\xdb\xa7\x9eM\xc2eP\x06e\x93\xea2Q6\xa9\x01@\xe5fS\x0eg\x93\xeab8\x9bT\x17\xc3\xd9\xa4\xba\x18\xce&5u\xc3\xd9$L\xaf\x03X\x80\xc1\x00D\xd9$\xcc\x07\xf9,\xc8d@p6 s\xf1;\x8b\xb1\x18\x0c\x9cM\xc2\\l\xceb\x86\xac<p6\xa9\x06 \xb3I\x0cB\x94Mba\x10\xcadQp6\x89\x01\xc1\xd9$\x06\x04g\x93\x18\x10\x9cMbe\x82\xb3I5J\x9cMb!\xa2l\x12\x87\x83`&\x07\x83\xb3I,\n\xce&\xb1(8\x9b\xc4\xa2\xe0l\x12'\x17\x9cM\xaaa\x82l\x12U.\xca&\xd1 \x08c\xd2\x188\x9bDA\xe0l\x12\x05\x81\xb3I\x14\x04\xce&\xd1\xb2\xc0\xd9$Z1\xed\xd9$@Q\x8a\xd9$^{j\xd9$N\xa3J\xd9$N\xc9J\xd9$N\xefJ\xd9$\xce\x14J\xd9$\xde:j\xd9\xa4\x9aN1\x9bD\xe3\x8f\xc9&1\x94\x00!D\x07\xcd=*\xd9$\x9aJ5\x9bDS\xa9f\x93h*\xd5l\x12\xd3.a6\x89\"\x0c\x9a[\xfd\x1a\xa4\xe8\xa0\xb9\xd6\xaf\x01\xfa\x0c\x9a{\xfd\x1a\xaf\xb7\xa0\xb9\xd8\xaf\xf1\xfa \x9a\x9b\xfd\x1a\xaf\x87\xa0\xb9\xda\xaf\xf1\xed\x0d\x9a\xbb\xfd\x1a\xe0\x88\x01s{\x1fn\x1as}\x1fl\x1fs\x7f\x1fj$s\x81\x1fj)s\x83\x1fj.s\x85\x1fj3s\x87\x1fl8{I\x1fn9{K\x1fl:{M\x1fj;{O\x1fj<{Q\x1fj={S\x1fj>{U\x1fl?w\x15\x1fV\x00w\x17\x1f\xd4\x00w\x19\x1fR\x01w\x1b\x1f\xd2\x01w\x1d\x1fR\x02w\x1f\x1f\xd2\x02w!\x1fT\x03}\xe7\x1e\xd6\x01}\xe9\x1eT\x00}\xeb\x1ej=}\xed\x1ej:}\xef\x1ej7}\xf1\x1ej4}\xf3\xbelq\xfb\xc1\xcb\x033f\x90\x17UD\xa3\x1d\x05\x01\x07<\x12\x01\x8ey$\x00\x1c\xf6H\x008\xf2\x91\x00p\xf0\xa3d\x00\xc7?\xf6\x00\xabh\x08\xe4q\xe0(\xc8\xc1\xc0\x81\x90C\x81c!\x87\x02\x87C\x0e\x05\x8e\x88\xbc\\\xe0\xa0H\xc0\xe4\xe3\"\x00\x04\x87F\x1e\x07\x8e\x8e<\x0c\x1c y\x188F\xf20p\x98\x04d\x03GJ\x02\xd72XBHp\xbc\x04\x80\xe0\x90 \xe0\xc0Q\x13\xc0\x81\x03'\x80\x03\xc7NH>p\xf8$\x80\xb2\x11\x94\x83\x81\x83(\x8b\x02\xc7Q\x16\x04\x0e\xa5,\x08\x1cMY\x108\xa0r2)l5\xaa\x9ef\x0f\xc8\x83W\xc2\x81\x96@\xc0\xe3l\x03\x80\x87\xd9\xa6\x1c\x1ee\x9brx\x90m\xca\xe11\x96\xa8\x1f\x1eb\xe9\xfd[\xe1\x08\xcb\xc2\xe0\x01\x96A\xc1\xe3+\x03\x82\x87W\x06\x04\x8f\xae\x0c\x08\x1e\\Y\x99\xe0\xb1\xd5gF\x1b\xd1\xd0\xca\xe1\xe0\x91\x95\x85\xc1\x03+\x8b\x82\xc7U\x16\x05\x0f\xab,\n\x1eU9\xb9\xe0A\xd5g\x07\x18\xd1\x98\xca\x03\xe1!\x95\xc3\xc1#*\x07\x83\x07T\x0e\x06\x8f\xa7\x1c\x0c\x1eNy\xd9\xe0\xd1\xd4\xa7\xc6\x1a\xd1`\xca\xa0\xe0\xb1\x94\x06\xc1C)\x8d\x81GR\x1a\x03\x0f\xa44\x06\x1eG\x19y\x14\x86Q\xc1\x88\x89\xeb\xe1F4b\x12\x08x\xc4l\x00\xf0\x88\xd9\x94\xc3#fS\x0e\x8f\x98M9<b\x12\xf5\xc3#&\x9d\xa3\x10\x8e\x98,\x0c\x1e1\x19\x14<b2 x\xc4d@\xf0\x88\xc9\x80\xe0\x11\x93\x95 \x1e113\x94\x88FL\x0e\x07\x8f\x98,\x0c\x1e1Y\x14<b\xb2(x\xc4dQ\xf0\x88\xc9\xc9\x05\x8f\x98\x98\x1dDD#&\x0f\x84GL\x0e\x07\x8f\x98\x1c\x0c\x1e19\x18<br0x\xc4\xe4e\x83GLL\x0d+\xa2\x11\x93A\xc1#&\x0d\x82GL\x1a\x03\x8f\x984\x06\x1e1i\x0c<b2\xf2\x00YI'\xc4\xd8\x8e\x12t\x98\x87\xb1\x8bb\xad\xfa\xfd\xbc\xfaaR\x16$\x91\xed\x00g\xdc\x924\xf6\"\xe4j\xf4W\x98\x83t\xa59+\x0f\xbb?\x86\xae\xfb\x13\xf4!\x12\xf6s\xcc5\x9f\xe6C\xcb\xadL\xb8/.3\xc2\xa8q\xe1\xbe\xa9\\s!>\x96\xdc\xca\x05\xfajr\xc1\xa8\x10\xa6\x95C\xdb7\x12Kf\xae\x1d?\xb4\xf2\x92}I5\xe3\xf3\x80\x0e)\xda\xa5\x9a\x8b\x9c0\xb6S/\x0c\xce\xb1\x17 -]\xc5\xe1z\xb9\xa2 \xd6\x81\x8b\xe2\xac\x98\xa3\xa9K\x18\xc7\x0b51M\x10\x06Ha\xe9s\x00d\xce\xd6Q'\x88\x0d\x91)H\x0e\x91\xe5\xc2+H\xaf\xb0p+\x9b\xe4\x9f\xd4\"\x9eJ\xa5A<\x95B{\xc4\xa2\xe3\x93D\xe7\xa9TD\xe7\xa9\n\xd1)\x8a\xb4D\xd9\xd8[\x06\xe7YT\xc0\x94\xc7dy>Q2\x00\x87\x048(HQ\xac`\xed\x03#E\xed9bA\x18\x08(\x0b\x83)\xc5Q\x90G\xc1\xfbR\\y\x83DF\xbf]D\xffh aaZ-G#`a0$\x0c\x0d\xaa,\x9c\x7f!~\x11\xc6\xfe\xb9cG^jc\xef\x11\xb1P\xccBq\xb8E\xb1c'\x1cr\xcd\"\xd7Q\x04#\x03\x16y\xd2p\x98\x12\xce\xa1\xd4\x12\x00-n\x0c\x00\x16\xb7\x07\x00+\x0c*\xcan\xda\xb8\x98Z;9\xb0\xa4\x99\x1cV\xd2J\x0e\xab\xd0HA{8\xb7\x92\xb5\xe7\x08\x1f\xe4\xb1\x92\xf6pX`8]h\x833\xe6\xc1\n\xd9n>\xab/\xc2 \x8b\xf5\x1e\xd19\x1fR/4\x8b\xa5K\xd6s\x80\x94\x0f\xa1\x17\x06Ql\xf2\xc5=\xa2\xb8\x07\x05\xea\x0b\x93@\x18@\x90\xbe\xe8S\x00\x88\x85E\"\xf8\xe2\x01Q\xdc\x1d\x0d\x01\x06C\x12Q\x00\xda{\xc3\x81\xd5\xbd\x16$\"\xf5g\x9d\xae\xc5\x02\x005a\x04\x9a\x01d\x07\x1a\x01\x99\x82F\x08\xacA\x83`\x83\xb0\x18\xd0&\x0c\x080\x0b\x8d\x10X\x86\x01\x15\x18\x05\xeb(\x8cU\x99\xc9|\xa1\xc5\xfcV\x83q\xb4\xa4\xbd\xfc6s\xf9m\xd6\xf2\x15\x8c\xe5\xb7\xdb\xcaW0\x95\xdff)_\xc1P\xfe\xb1v\x12\x98\x04\x0bM\x82[M\xc2\xd1\x92&\xc1m&\xc1m&\xc1\n&\xc1\xed&\xc1\n&\xc1m&\xc1\n&\xc1\x80I(\x8c\x8f\xecd\x1d\xa3C\xd3O\xb2\xce\x03b\xb2r\n\xd8\x17\x01\x03;\x8e\xc3-\x01\xedq<\xbd\xc0EAZLi\xc5\xcf\xe7Fs\"+m?\xcf\x98\xf86\xc6\x9acG\xe5\xe8\xb0\xb1c\xcf\x0e\xd2\xf3\xe69\x8dO\xe3u\xe0\xd8):\xe4\xc9\x81<5\x82\xce\x83p\x1b\xdb\xd1$\xdc\xa0x\x91\x7f\x9c\xcfs]\x14Lr\xa9\xea\x87\x08c/J\xbcDa\xcc9\xc0\xeaH\x94\xd5\xcb`[4L\xa3EJ\xae\xe3\xbd'\xea\xb9\x1e\x88UU\x9d\x11\x9c\xaem\x05u+\x0c\xf1\x95\xc2|u\x13\xf8\xc7X\xc0W1\x80\xff<\xfa\xf7\x8fT\xbf\xff\xdd\xb4/Q4VW4>F\xd1XE\xd1\xf8y\x14\x8d\x8fT4~\x8a\xa2)\x96U\xb9\xe6\x84Aj{\x01\x8a\x0f\xf5\xa3\xfdy\xe2\xc4!\xc64E\xb1h\xa6\xb7\x12\xecu\x1aN\xc8\x9d\x96\xec\x01\xa3\xddX\xcb\x1e\xf2t\x0c\x0cS\xb0\x86Y{\xe7<\x00bj\xec\xd9\x1buIARPX\x8d9\xf4\x94\x03\x15\x04V\x18M\xcaV\xf8'7\x02\xa0\x84\xdb\xe0\x1f\xdb\x04\xb1\xb4\xf8di\x01JXZ\x0cHK\x8b\x82\xbd\xe8\x10\x85\x89\x97'\x02\x17\xde\x0e\xb9\xff\xd7\xf3\xa30N\xed \x9d\xfcQ\x97\xd8\xf3$\xc4\xeb\x14\x11\x85\x19\xe9y\x8c\x9c\xf4G#\xdau\x88\xbf?\xd1Eg\xc4\xdf\x9f\x14\xcc}\xe0\x04\xcc\x1c\xe7\xcf\x94QAH\x15\x9f\xcc$\xf7\xff\x83\x04\x17\xc9\x88\xff\\\x19)\x01\xb6\x89\x16\x84\xb1o\xb3#u\xf6\x88F\x16\xa370\xa0\xd3\xb0(\xa6#\xc9(>>'X\x0b\xc5\x07J\"\xb9\xe0\x90\x8a\x13\x8d\x85e\xd2)\x88\xa7\xe0m\x8d\xcclt!\x14\x19\nCx\x89\xfd#\x05\x96\xca\xa6jfp\xe6\xe6e\xc3\xbcl\x14f\xa3\xcd\xed\x04\x1d6(N=\xc7\xc6e:;{\xc6\xef\x91l4\xdfsY\xa8\xef\xb9.\xe6\x80i\x18\xb1\xc04\x8c\xb8\xaaS\x9f\xab9\x0fp\x14\x0c~\x00\x9a\x91\xf9\x8ezK\x00\xb4\xb01\x00\x16n\x0f$B\xd1$\x856)8q\xd9P^o\x92vr`q39\xa8\xa0\x95\"\xbb\x1d\xed\xf8e{\xf01\xed\xe1\xc0\xe2\xf6pPA{\xf8\xfa\xcb\xf6PX\xd7\xf3\x0fad;^\xba?7\xb8\xa23\xf6\x01\xf41\xfa\xecq\xf1\xfdym\x8b\xe6\x0f^\x99\x15/f\x90\x92w\xa7kXI\x07ez\xf1\x82IK9'\x86\xbc\xd6J\xfc\xae\xc5\x13\xdaN\xeamP\x03\x19M\x94d\x0c\xd7\xa9\\\xc8p\xcd\xec\x9e-q\xb8=\xe3\x9e@\x82\xe7\xcf\xbf\xa3\xbe\x14\xea\x15\x18|\x95-\x03\xf3S\x11\x9dn\xfe\x9f\x1a\xa8\xab\xa9\xedXQ\x9b\nKC\x95\xf5\x9e\x89Py\xb3\xda@y\x1b\xd9\x16\x18\xdf\xa7\x05\xcd\x06{^+\xa4w\x16R\x98 _\x7f\xb6\xef\xe1/\xe3p{\xd0\xfc\xf0Q\x0b\x93\x9dVd\x0f\xfd0LW^\xb0<_\xc6\xf6>ql\x8c\xea\xb6\xcdm\xe7aa;H\xdbx\x897\xf7p\xd6\xf2r\xc1+)\xa24\x93of\xe5?a;E\xdf~\xd4\x7f\x9a\x88\x9e\x03\x1a\xe5Xu\xba=A\xa7:\x02z:\xe4\xac\xa5\x16^\xdb`\xd7\x89\xe1.\x9b\xeb$\xb7\xc0\x8fFW\xb7HM\x11O\x81:\xcaaI\xc4\xac;\xe6Yu\xc7\x00#\x0d\xdb\xf1\x12\xfd\x7f\xc5A\xbc\xe0\x18\x1f\xe1\xd1OEI\x9d\xa5\x80\x88L \xf2\x9a\xb2\xb4\xcdwz\x90\xeb\xf4\x84\x06o\xf7\x1f\xc0\x17\xb3\x87L0\x1dzAZ\x8fH\xce:N\xc2\xf8\xbc|H#\x93\x95\xed\x86[\x0d\x02N\xea\xc5b\x8c\xb0\x9d\x89\x05\x99\xdd\xc6\xb8\xd3\xb5\x92\x8e\xb3\x9e{\x8e6G\x8f\x1e\x8a\x7f\xec\x1a\x03\xeb\xac;\xea\x9fu\xfb\xfd3\xe3\xa7\xc9\x91x\xb1\x88\xe7\xf6\"\xcd\x04\x0d\x83\x14\x05\xe9\xf9_\xfe\xd2\xf8\x7f\xb8\xd3\n\xe4\xb9\xde\xd1;\xc6 \xdauz\xd1\xaeC\x9e\xf7\xeb\xfd4Q\x86\xe5\x07;c\xdb\xf5\xd6\xc9\xb9\x17\xacP\xec\xa5\x93f\xd2\xe4\xd6\xd1\x93\"\xf3\x99\xe7e\xf4I\x11A\x1a\xba\xfeb\xb2ByN'\xff\xf91\xcf\x98\xee\xce5\xf9\x9cu\x846Ui$\x1a\xcd\xfd\xbb\xd0\xeb\x99\x18Ej_\x10d\xcc\x97\x9a\x1dx\xbe\x9d\xa23\xc1s\xa8/\x11\xa5\xc2\xd0\x89=\xc4IM\xdb\xec(\xd0\n\xa6\xa5~\xd4\xf4Ce\x17\x9d-2\xea\"\x83-\xea\xd5E=\xb6\xc8\xac\x8bL\xb6\xa8_\x17\xf5\xd9\"\xab.\xb2\xd8\xa2\xf1x\\\x17\x8e\xc7c\xa0\x98*\xe7\x00\xbe\xbdk\xa45\xfa\xc3\xfe\xc8\x1c\xf4\x87,\xaa\xf4\xf2\x1aY\xfe\xce\xc3\xbc\xd4\xb3q\x0d\xe3\xb3\x95\x8f\xda:HP\xc3(\xff\x8d\x86\x04(IQf\xa0h\xaf\x15\x11T\xdeM:!\xb3\xaf,\xc2Ej\xb05>\x10\xbf\x9e\x1b\xecB\xa2\xa4k6\xae \xda\x95\x01\xd6\x01c{G`\xcd#\xb0\xfd#\xb0\xd6\x11\xd8\x01\xa3\x17\xe8`\x7fA\x8f\xbd$\xd5b\x94 \xa1q\x08\xc4\x9a{\xf1\x1c\x99\xaf\xd6'94I\xf7\x18i\xe9>B\xc5\xd1*\xa1%\x8b\xed\xa5N\xf4sDm7u\x8f\xdbo\"9&(B\xb1\x9d\x86q\xce\x94\xe0at-A\xfb=\x7f\xd9\xf1\xfc\xe5\x81\x18\xd2\x9b\x9cG\xfe\xab\xeb%\x11\xb6\xf7\xe7s\x1c:\x0f\x02\x1d\x06\x0fI\xc7>\x94\xe7\xe1Mk\x88\\\x17\x9a\x02\xf8\x01k\"-\x95\xd5\x06\x0d\xb6\x0c\xa2\x9c\xf5\x0b\xa9\xc6\x03\xc7Y,\x9e_\xaamlG\x11\x8a\x05\n\xec\x0f\xf4hW\x1a\xf0\\\xef\xe4\x9b&\xa5\x0b\x9d\xeb\x9d^VH\xcd\xf0\xdecVRN\xcf\xf3p7\x01\x9f\xd2\x12\x84Qn\x1a-\xb5\x97Z\x82\x9cL\xeaCe4\x82ymH\xcdO\xb4\x05F;\xf2Y\xf6;%I\x18{\x993V\x99\x18\xaa\xcc\xf5\xe2\xa2\x9a2%:\xa98\x12%N\x88\xd7~0\x01\x9f\n\xc5\x7f\xba\xd8\xe4 \xe0F,\xeai\xfe\x8b\xe6\xa5\xc8O\xaaG\x95E\x0c=\x0b\x97\xb2\x7f\x8c\xea\x9f \x134\x8aB\xc4^\xc2E\x81\xbddR\x9b,\xef\xb9F\xb4\xeb$!\xf6\xdc\"\x1c\xb3\xc6g\x03\xebld\x9cu\xcd\x9f\x84*)\x9d\xb8\x99\xf5\xa9\x1b\x1e:\x1bj\x93\xca$\x8e\x18\xf5I'\xd4;V\xb4\x9b\xe4\xa5\x0b\xdb\xf7\xf0\xfe<\xb1\x83DKP\xec-&U\x1f\x9e\xf7\x0d\xcb\x10\xf2\xee\x06\xa1\xe6\xa2\xc4\xe9$\x91\x1d\x1cH\x03d\xfa>7j\xd5\x9f\x1b\x93\xe2?BV\x9dd\xb3\x84\x82\xa2\\\x85}^\xab\xfdD\xc2\xca\xb71u\xde\xa9_5t[\xcc\x04}]\x9f\xa8HK\xf4\xd1\xdc \x8eWVd\xc7\xb6\x8fR\x14\xff\xf1G6\x15\x90B\xf5\xa2]\xcd\xdf\x8av\x1d\x9db\xef\x87A\x98o\x10P\x82\x0ft]V\xdb\xc6C[\xad\x9a\x06\x1f\x0e\xfc\xca&\x9b\x04\xcch7\xa9\x0e>\x90\xfe`\xa9{\xb9\xc5\xdb\xc3\x82\xedq \xdc\xcd\xc8j(\xba\x02\xd1\x07\xfe\xaa\xeb:\xb3\x10\xe9\xb3\xc3a\xb3\x921\x99E\x8c1\xe6\x16;\x00\x04\x14\xad\xd3M\xedy\x1e8\xa0\xf8\xe9#\xceQ\x0eOV]\xfc\x9c\x8dC\x87\xc6\xdb\xfa\xfc\x90s\x04\xa3\xf3\x85\x17'\xa9\x16.\xf2\xf0\x83a\xdb\xd1;\xfa\x11\xbc\xbaebs\xd5/:9\xe7S\xa7\xf3*\xd7Y\xfc\"\xb3\xbe\xad\x999L\x1eSY\xfa\x8bj\xb5\xd9kV\x9b\x99\x9f\x00kd \x9b\xf3\xfb\x8f\x9a\xa5\xbf\x00\x13=U\x111\xb4.c{\x0f6\xab\xeb%Z\x18\xa1\xa0\x19n\x92\xb5\xef\xdb\xf1\xfe \x1a\xe13\xef\x16h\xa8fQL\x8a\x95'V\xd6\x1a\x95s\xd0\xc4\xf7\x82*\x82\xb5\xb2\xdf A\xd9\x1b\x83\xa3\x9f\xe0~c\x00\xcb\x7f\x83\xe980\xe6(\xd9\xcf\x8e\x01w\xb0=G\xf8\xe9\x1d\xef\xa4\xa9\xfe\xa8f\x95\x922C79,\x0fu\xbd\x1eG\xb9\xc30'\xcc\x1aJ\x02\x95\xfd\x91\x9a\xa1$\x9d[\xc0j\xd5g'J\x95Q\xadi\xeds4\xae\xe8C\x9a\x8f\xd2U\xe8\xca\xe6\xed\\\xcf\xf5\xd6\xe5H'f\xd0A\x16\xa8e\xe3\x05w\x03\x8c\x99\\L\xba\x0b\xe5\xd3ONC\xf5\x04\x9d\xed+\xf2v.\x16\x0b\xc5F\x86\xf9\xd2,3\x80\xe7\xb6\xf5\x97\x92$\xb2\xd3\xd5\x11\xd0?\xfepQ\x14#\xc7N\x11\xa5\xccAD\xf4\xacS{[n~\xbdq\x08\xbdc\x16\xab\x19\xfa\xb7'w\xd0\xc96\x8c]m\x1e#\xfb\xe1<\xffW\xb31\x96\x85c\xaa\xf1R\xb9\x19N\xec\xe8\x0f\x07\xa3h\xc7l\x81\xff\x07\x9a\xaf\x17\xed\xd8\xd3\x9d\xcal\xd8\xcd:,\xbc\xa6\xab\xd4p\xa6\x8b*r\xc8\x16\n\xb1\x17\xe5\xebR\x82\x81\xa9:\xe4<\xdfH\xf3?4\xe9\x90\xd1\xbeZp\xc7\xc8\xad\x18\xe0\xf7\xea\x00\x9f\x98\x95\x9e=\xb2\xe7\xa4\xab\xf6\xad\x19\x19\xcb\xb0m\xc4,5\xe0\xf8\xaab\x19\x85IJ\xbc\x8f\"3p\x7f\xec8c}\xc2\xae\x80\x87\xe6YO\xef\x9f\x19\xfd\xbe0\\\xa1\xb8\n\xa7\x1drN(\xea:\x81\x19(\xb3\n\x1f\xf5p\xf9h9\xd7\xac&\x17\x8em\x98\xbc&{V\xef\xcc\x18\x18g\xfd\x91\x82&\xd7j\x8a,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2\xdeE\x18\xa5\x88\x95kl\"\x13\xf1\x9a\xec\x8f\xcf\x06\xbd\xec\xff\xad\x8a,\xd8\xaa\xe92\xaf\xec$v\xa0\xd8j\x9cN\xd4\xa8B\x0dK\xc4:\xe6\xc0\xb0\x17\x0b^\x9d\xe3\xe1\x991\xb4\xcez\x96B\x17_\"5\xc7,\xaa:\x9e\x17(\xb1\x02\x9b\xd3\xd4\xa8\xc2>\xb2Sg\xc5\x88e\xe9\xc8tz\x9c\"G\xfaY\xaf7<3\xc6\n\x8a\xcc\xd9*\xa9\xb2\xa8\xec\x14n\xa0\xd4J\x8cNS\xa7J\x05\x19WF\xae\xb1n\xf4\x00\xb7\xcc\xa6\x1cc\xa4\xe6\x96\x19W%e\x16u\x9d\xc0\x0c\x94Y\x85\xcfi\xaaT\xe1\x1f\xe6\xb1^\xc2H\xa6\xbb\x96m\x0fym\x9agc\xfd\xcc\x18\x0c\xdb\x95Y\xf2U\xd2gQ\xdbi\xfc@\xc1\x15Y\x9d\xa6U\x95*\x88\xb0\xbe>\x15:\x98\xd0\xa2\xa2y\xf6\x07\xce\x14\x8d{\xc0\xab\xa5\xc4\x95(i\xb9\xa8\xefd\x96\x07Hzun\xa7\xe9ZR\x0b!\xa0\xb3B>J\xb8\xa4\x9c\x1aY\xa7[\xfe\xa0\xa5^\x8aQk\xaef\xe1\xe14kD\xb3\xd6*\x9eh^\x90Eq\xd4\xd6b\x1eI\xe7{T:\xb5oU%\xd8{M\n\xd2\x1d\xb9.b\xbc*\xb5\xe7\xa7\xad\x82\xa8\x9a\x8bex\xdd,b\xe3\x1b\xd8\xf3N\xedy\x07{l\x1a\x8d<\x89N\xf1b\x16,\xc7\xaf\xfe\x8a\xfa\xd8\\8\xb7bbv\xf2\x99\xcf\x96\xf5X[C\\\x85\x89\xecb\xdf\xbe`5\xa8WeF\xb4\xa3\xceK\x11)l\xc1\xfe\x1e\xbb\xbdW\x08Q\xfa\xf8\x81\xc9\x90\x81\xbeI\xae\xbe\xb5r\xaf\x1aLJhh\x97\xa28\xb0\xb1\xe6\x86N\"\x87\xe6^\xfdGy\x13\x8a\xb5+\xbd\xcdX\xbb\xa8U\xa5\xb5\x8f7\xa8\xa4)\xdc\x11\x12ik\x84h\xb2ALf\x14h\xd3\xf3\xb6 :\xa6\x01\x020%\x7f\xc4fR\x9f\x9e\xb3\x15\xaa\x939\x0fC\x13\xa3\x1dr\xd6)\xaa\xe0\xf50\x98\xbb\x81\xfc\x9d^\x0ci\xa7;O\x03r\x1c$\xc7\xe5>7.\xcfCw\xaf\xe5;\xb0u,r\xd2\x98\xf7?s \x82\x97\x9ez\x86\\/=P'\x16\xf4V\xfab#\x83T\x9a\"M'A\x189i\xb5\x9bkB\xb3W\x8c\x92(\x0c\x12\x94h^\x100f\x96\"\xb9\xee\xc8\x95[\x82\x9eXN\xa3\xa7u\xc6\xaa\x96,\xec\xf8#I\xedt\x9d\x80{\x0fOeJ<\\\x07n\xe8\xac}\x140\xb9]\xe3\xd8d\xf6X\xcf\xfeH\xaa\xce\xcf>1\x9f\x0f\xcd\xcf\x93UY\xef\xbe\x8e\xfc\xc9\xf36\xb78o\xf5?\xd1Zb<\xfd\xe3\x8f\xc2g\\o\xd3\xf5\xed\xf8\xc1\x0d\xb7\x01\xec]2\xca\x18\x05.\x8a\x91;+9\x80\x9b\x7fE\xa0\x93\xbf\xb9\xcd\xa1\x8f\xc75C-\x10\x9a\x91\xa7\x1c\xa8d\x9e\xd1\xef\xf7\xd1q\x9a\xe1\xf6\x9dT\x1aW\xa9\x85\x9dEThY\xc5t\xa2\x038\xad|g\xc9\xedg\x90\xdc>\x1c%\xf0h<_\xe8\xfd\x89\xe2\xbd'\x15\x89\x9a\xd6\x14\xa9\xf3\xe7h\x13}\xd8qd\xcc\x0d\xddy\x82d\xec\xce\x95\n1'T\xba:N\xd3\x8b\xc5BxbN\xb8\xd3\xaaeSW\xf3\x1b\x0e\xed|\xe4+\x0e\xdd\x93G!\xa9\x0ej6gl\x9b\xfd\xfa\x96\xb7TP\x15F1w\xa6\x0b\xee\xfb\xcc\x95\xef<\xa2)69\xb3\x9f\xca=\xce\xecwx\xe7\x93{\x98C\xab\xe0c\xb5\x8fV(H\n\xf1\xb3\xa0\x83z@\xfd\xa24\x06\xd5/\x89ae;\xd6\x8er\xcd\x15'\x18\x1at\xf3\x96\x86\x16\xban\xb1\xdc\xcf\xba\xddAr.y\xe5-W\xc5{\xc0\x9d\xd0\x05\xd6~2\xf4\xdf\xbb\xbe\xe7\xc4a\xfe\x80|iN\xe9!\xbb\xeaHN_g\xce\xe8\x0c\xd8\x13\xd6Y\x1f\xc8\xdcQ+\xd7y\x89\xf8\xc4S\xee)\xe5\xca\x138tJZj\xe8\x8ezc\x138\xed@n2\xf2\xc6&\x0d\xf8\xd1K=\x8c\xbd\xb5\xdf\xf9\x82\xe6g\xc4\x84/\xe9\x97L\xc4P\xb6\xd9\xd4\xeb\xc5\xed\x90\xdb\xdb+r \xc4+\x88\x88eT\x8f\\\xf3\x9bE6\x83\xdaG \x8ej\x83\xa7\x95\x98s\x1a\x96\xe0P\x13\x07\x93\x8bX'n\x9e\xbe^8i\xa7XQ\xba\xbf+\x1dLzr\x13\xbe\xe7\x92\xa7\x1a-\xb5\xe2\xb8\xb5U,,N\x88D[\x94T/`\xeat\x93a\xd6\xcb\xcf\xe6T\xa0\xe0\x85\xb9\xd5l\xd2\xf8p\xe5\xb3\xe5\x89J\xe2x\x7fq\xd1\"\x9bW\x9a1\xc1x\x8e\xa37\x91\xed<p\x8eD>\xbc_'\xa9\xb7\xd8W\xe3L\x8d}\xaa7\xfei\xce\xd0\xa2\xf4\xfaQ\xdbH.\xa6,3uD\x8f\xd1\x81\x1e\x03'\xf2,\xfdEs\x18\xb5\xce\xd9\x95\x8c\xa5\xa7O\xf3\x13\xa6g\xc2\x13\xa8T\xb1\xc0\x1fO\xe8\x11\x12-\xcc\xd1\"\x8c\x91 aI\xb5\x93\x8e\x9a\x88Dm5\xdb\x11G\xc8\xb5\xbcG\x01\x07r\xeb \xec<\x0e\xd3\xfc\x87\x8e\x91t\xbc`\xe1\x05^\x8a:\xd94n\xc7g\xc4%\xcf\xc9\xf1\x14\xcd{\x12\xb8\x04x\xb1\xf7i\x9d\x15\xff/\x0e\xbe\xe6\xf3b\x1aF\xe5\x9e\x039;\x0c\xd8{\xb1y\xa6\xa9\xf6\xf3S.\xa0\xff\xfb\xbf*\xf2\x07\xb4_\xc4\xb6\x8f\x92N\xd5\xb0C\x1a\x02\xf7\xa0\xf3R\xf4\xa3\x91\xae\xe3\x80t\x1a\xea\xf9\xbf\xff\xfd_\xcf\xccO\x14\xec\xe7&\xa5N\x93W\xc3\x9c\x02I7\xfb%\x0eq\xa2\xd9\x8e\x83\xa2\xb4\xda\xac)\x87dj\xf3g\x19#\x14<\x85g~\xf5\x83\xe0ED,\xdd!\xf2!K\xcc\xb1\x17<\xa0\xf8`\xe9/\x9a\x17\x86P\xba\x15 H1\xcbc\xb5\x9d\x95y8\xba\xab\xda\xdd \xcc\x93 u\xb8\xe1\x05\xdc\x92\xb2\x06\x9d\x81O\xcf3\xa7\x83\xce\xfaU\xb7\xba\x8b\xea\xeb\xdf$\xc7\xcf6(N\xbc0\xd0\xa2\xd8^\xfa\xf6\x81\xdc\xaa\xa8\x83K\xe4\xb3\xe9?\x9a\xea\x8f?|\x94$\xf6\x12==\x82:u\xde#\xe5&\x06\xfcn\x0f\xf9@\xd8\xcc\\\xa0E>q\xd8\xb4\xcb\xc5\xf4\x82\xc6\xfe\xdd\xf56\xc4\x8bE-\xcbY)\x9dmTb\xde\xc9\x171Mt\\m\x97\xba(\xfbS\x8b\xdb\x8fv\x9d~\x11\xf6\xb2\x8bN\xba\x9ay\x1a\xb4\x9d\xb5&\xaf'\xf5\xc8\x83\x9a\xec\x19A\x93?6h&\xfcH\xbc\x8c\xed\xbd|\x05\x9as\x89\xec\x18\x05\xe9s_e8a\n\x9d\xa7A\xf6WK|\xd1\xc5\xad~\xa9\x19\x8e\xee\x9f\xae\x97\xd8s\x8c\xdc\x7fU\xef\x9b\x08\xc2\xcc\xe5p\xb8En=[uM\x8e\x90y?\x00s\xb9\xc9b\x9aer\xd7\x9fx\x04\xdf&\xc7\x0e\x1c\x84\xd9Sa\x8b\x81> \x97_e\x01i\x12\xb9\n\x0b\x0e|u\xf6:]\x85\xb1\xf7\x88\xe8\xeb\xd8\x13z\xb4\xab\xb8T\x07=\xe5\xa7?y\xe1$\xf5\x16\x89\x86\x05\x0e\xed4\xff\xb6\x0cm>p/\x9e\xa1\xdf,\x0f\x0b\x0fc\xf8\xc8e\x86-w\xaa\x80\xfe\xd9\x1f\x8fu\xd4\x03\x92[T9\xc7Q\xcb\xb8D\xa7\x0d\x9f\xe4\x8aZ\xc0\xb8\xe8\xff\xc7\x0fN4\x83r\x1f\xbcxU\x15\xd7\xb13\xadv\xb8\x03\xe2\x0c\x07l\x0b\x18\xe4\xa4\xf9_F\xdd\x95Y\xec\"\xf3\x98\xb5\x83\xb9\x18P\x0e<A\x18P\xc7\xb6\xf83 <\xabn\x16\xe8\x12gk\x8cV\x82u\xc0\x90t\x99\x97^\xa0]d\x07nyn\x86\xb9\xaa^\x96\xd5'>\x0e\xca\xa2\xd3\\3\x0f\x95s\xce}\x98\xb8\xf7Y\xf6B~w\x8ef\xcc\xa8V\x06-\x0f\x80\x13}E\xcf\xfe\xb4\x89-\xbc\xf5\x0bO*\x05\xeb\xa1\x9e\xfd\xa1X\xcf\xd7i\x1a\x06\xec\xdb}\xc2u\x9a\x0d.\xbc\x02\x0bx\xd7\x0b66\xf6\xdc\x03\xbfVIV\xf6\x03\xeat\xfbI\xc7\x98\xc0O\xdb\x0e\x03\xffu\x81\xb83Fe\xd0{\xc4\xc4\x9b\xa7\x18\xac\xea\x1e:\x7f\xbc\xa7\xcc\xd9\xca\x13\xbb\x8ba\xf6\xa7\xb3\x8e\xf1\x8f\xae\x9d\xda\xe7\x9eo/\xd1\xcbd\xb3\xfcy\xe7\xe3\xc9\xdcN\xd0\xa0\x7f\xf6\xdb\xaf7\xbdo\xfb\x8b\xfe\xfc\xcbn\xed<\xea\x9e\xfd\xeb\x9d\xee\\\x86\x9bw\xa6k\xba{\xcb\x9c\xed\xad\x8d\xe3;\x9b\xd9\xfdt;{5~t}\xc7\xbb\xfe\xf5[\xf4\xedw\xf7\xd5\xdc\\\x8e\xaf\xef\xa7\xcb\xd9\xab\xe9\xbe\xf8{\xfd\xf3\xf5\xab\xe9\xf2\xfar\xb7\xfd\xfa\xfb]x\xfd\xe6v|\xfd\xa0\xeff\xfb\xbe>\xfb\xb8\\\xde\xec\xfb\xfd\x9b\x8f\xf8\xfe\xdd\xfd\xb59\xfb\xa0\xafg\xf7_\xfb\xef\xee\x9d\xed\xfb\xfa\xe7\x07\xf3\xfd\xab\xe9\xf6\xfaU\x7f\x7f\xb3\xef\xefo\xee\x97\xeb\xd9\xbd\xb3\xcf0\xb3\x0f\xf9s\xeb\xe6\x1e'\xef>\xce\xd6\xef?N\xfb\xd7\x97\xb3\xf5\xfb\xcb\x9b\xfbw\x1fj|\x9aa\x9b\x9f\x1f\xcc\xf7\x1f\xa6\xdb\xf9+\xfd\xf1\xdd\xfd\xc3\xf6}\xfe\xdf\xe5\xe3\xd7}V\x9f\x93\xbe\xbb\xbf\xee\xdd\xd4?\x17u\xbc\xfb\x90\xd5\xf1\x90=\xdb\xe5|\xef\x97\xeb\x9b\xc7\xa9U\xfd\xfc\xfe\xa3\xd3\xbf\xbe\xbc\x98\xcd>N\x97\xb3\x8f\xaf\x93\xb2m\xe9l\xdf\xdf\xdd\\\xbe\x1e\\{\xa3\x9f\x7f+\xf4\xf4\xf3O\x9d<\xaf[\x9c\xfc*b\xceN\x10j1\x8a\x90\x9d\x92\xf3ZqS\x9f{#\x84<\xa3\xd9SK|f0\x95(\xa8Y\xb9G\x11\xb2\xe3,Z(F\xa4\xfcEm\xecC\xe6w\xc0\xdd\xff\xe9\xafq\xeaE\x18\xfd\xabJ\xfeZ\xd4\xc15\x0b\xf4V\x80\xd1\x9f\xde]\xe9\xbd\x07.\x89\xd8\xcbg\xd8\xa3\xee\x94 8\x19#\x9d\xbd\xe0\xa5\x94\xdd}\xea\x99\xa4\xfch\xe1?\xb3%\xf5/\xc8\xb7=\xfc\xaf3A\xe9\xc2\xc3HX\x18\xd9I\xb2\x0dcW\x08H\x90\x1d;+aq\xb6\x1e\xa3\x0b\xb3'v\x8clRE:\x91l\xa2\x1dh\xc4\x0c\x8f\xc4\x86\xa1;\xce\xfe\xb4\x0d\x8f\x8b\x85\x9a\x15\xff\xf3\xd5\xd5\xbct&\xdf\x8a\x91\x1b\xbb\xeaO\xd2V\xb4\x81\xea\xd6\xb4\x01\xcbV\xb5\xc1\xf2\xd6\x81\xa0\xaa\x95\x7f\xca0\x00d\x8ar6\x07C\x7fq6\xd6_\x00Y\xb6:\xa5k\xba?jF\xb4\xcbF]0\xe5K\x96\xff\xbb\xa7\xbf8\x1b\xb5\xf2\xeb\xc9\xd9U\xc5\xff6\xf5\x17g\x96\xfe\xe2l\xd8\xcaQ\xeb\xb7HX\x95\xff\xbb\xaf\xbf8\x1b\xb4\xf2kaWs#3k\xff\xab\xd1g\xd1(8\x1403\x07y|\xbc\xd9\x9a\xeaQ\xb7\xe8\xf9\xd5\x137l\x92\x01u\xcb\xbb(\x8e:-\x00\xccMUK\x8aw|\x1d\xf8\xd0\x17\xb8\x1fU\x0f\x11\xce:\xe6\x0f%\x13[r\xe4d\xc2\x9c\xd5\x88QN\"P\xc0\xb3\x9f\xd9rV\xc8y\x98\x87\xbb\x03\x19\xf5\x97+Y`mD\xeez\x08\x1eW*\xd5\xb3?peOx\xfd\x86\x80aD\x1dD\xef\xeb:\xf1\xd1\x8d\xc2\x0e\xe4y\xb9J\xf3,HU\x8bP\xba\xae\x16\x85\x98L\xaag\xff\xaa\x9b\xca/\xa5\xa5t?\xe7\x8a\xfa{\xb7xC\x8f\xf0\x8dJt.K#\xf7\xcb\xf27/Tn7 \xcf\x91\x8f\xca\xedn2\x0ef\xcf|\xd0[Q\x8c\xff\xa1Q\xf6G\xf4\xb2$=_\x02T i!\x97\x08\"\xde\xf1\x90\xf7\x83\xfa\xa7\x13U\xd7\xfe\xca_\x85WFKk;\xcf\x7fB.e0^Y\xf9\x1a\xf8/\xc0\"\xd8Y\xd9q\x82\xd2_\xd6\xe9B\x1b\x9d\xbd0_%\x9be'\xb7\xe0/?\x18\xfa\x0f\x9d\xc2\x82\xbf\xfc0\xfa\xa1\xb3\xf1\xd0\xf6\"\xdc\xfd\xf2\x83\xd9\x19v\x0c\xbd3\xfa\xa1\xb3\xf3q\x90\xfc\xf2\xc3*M\xa3\xf3\x97/\xb7\xdbmwkv\xc3x\xf9\xb2\xa7\xebzV\xc7\x0f/\xcc\xab\x17\xe6\xab\xc8NW\x9d\x85\x87\xf1/?\xbc\xe8\x99}\xa3?\xec_\xfd\x90?\xd0\xe25F\xbf\xfc\x806(\x08]\xf7\x87\x8e\xfb\xcb\x0f\xb3A\xd74\xcd\x8ea\xbd3;\x86\xd1\x1d\x0c\x86\xd8\xc8\x9eh\xd9\xbf\xfdN\xaf\xd3{W<\xce\xc40;\xa3\xac\xec\xf1\x87\x97EMY\xa5/\xcc\xab\xbf\xfc\xd4\xb1\xf4\x17\xcdZ\x93\xd6\xa8\xeb\xd98\\j\xeb\x1d\xf35\x9d \xf9\xa2U\xea\x1e\x8b^\x1dV\xaa^\x03,`\xd8\xe9f\xbaw\xe30\x02\xb8K\x19\x8an\xc1\x8c~\x12V\xe5\x87\xae\x8d\xa9z\xea-m\xae!\xd4\xfe63)\x16\xbf\x9a\xe5\xdcP\x7f\xf3\xc3\xe2\x86\xe2\x937\xf8\xf9\x05JuY\xafm\x81\"\xc8\x07\xe8\xd1\xaeS\x9c\x9c\x92\xbe\x04Z\x8ckUj\xb5\xb1&;\x06g\xf5\xc90\x82O*J\xd8\xd2\x17U\x80{6U\x9e\x9c\x9fk\x95V\xb8\xd2\xba\xe9K>#f\x81=h\x16\xd8O8\x9a\x04\xd5\xff\x94\xd7\xce\xd5\xb1J\xaf8/':*[:\x16\xe96'\x9d\xffQmM\xa7\xeb\xe00AZ\xfe\xf8\x88\x94\xfc\xf3e\x9bd\xc2\xad\xc8\x0f\x83\xf7\xd8c?\x03\xf2\x0d^\x8d\xe8\\\x1eN\xb4Ir\x82[\xf8\xa1+O\xef\x98\xfa\x91g\xea\x85\xb5t\xba\xc4}\xd9$\xb2\x99\x1b\x11<&u\xabc\xb9\xb6\x9e\xfd\x11\x9d\xcc\xe5(\xff\x9e\xba\xcc\x8dK\xf5w\x0f\xe5\xcc\xb44\\.1b\x8fh\xc1\x81\xd7@\x14x\x95\xa6\xccF\xa9N\xd7D\xbe\xc2\xebo\xb8\xe1]\xf8*`u\xe4\xa9\x08\xe8C\x0e$\x03~**\xcf\xf1\x8cu\x17-\x81\xf3=\xe5s\x8eN\x0bc/\xcf\xa6\xe9/\xb2(a\"*\x10\x1b\xaa\xeb\x84\x18\xdbQ\x82\\\xf1\xa9#\x81P\xf9c1\xe7\xf2\xac\x1et\x02\x8d\xdd\xc0\x12\\\xa1=*\xd2k\x0f\xe0\xaa`\xb0\xd7o\x82\xc1\xec\xe7:\x1a\xcc\x83\xea~\xa7\xd7'c\xbd,\x8c3\xf4\xce\xe0\xdd\xa8k\x8d;\xc3n\xdf\xe8\x18f\xd7\x18v\x8c\x1e\xd6\xfa]k\xd4\xe9w\xad\xf1;C\xef\x18#<\xd0\x06m\xf1\x1b\xb7W\x90\x05/\x90\x16\xef\xd7~\xa4\xa5a\xfe60`\xe1\";\x01\xc43\x10\xbfz\x8a:;\xa8u\xfb\\g\x03-\\\xdc\x87\x97\x1f\xe3$\xa0\xd5\xbb\xa5\x8aG+/H\x0f\xc4!\xbb\xfcG\xf6cc\x04T \xab\xd1\x1d!\x7f\xc2\x9f\xe3\xab\x86\xff\xae\x81\xfcN~\x14\x08\xf8\x1eo9<\xaa\x04od\xb85\x84\x1c\x9e\xb8D\x95\xad\xfb\x99\xc3F\xe5\xc9\xb2\x02\x9a\xd4W0ub\xf2\x97\xbdR\x9a\x97M\xc2\xbdz\xc1)1{\xeb\xfc\x0b\x0f`\x9a,\x96b\"7Qh\"\x7f\xef5\xcd\x9e \xd1\x9e\xe5-\x86'\x85Ap\xb2\xe8Y\xdf\x13.\x0f\"\x06:w\xbc\x86S\xd5\x13_\xa3\x0d\xf0;\xe9\xcd\xde\x1c\x9f\xe3\xde_\xce\x92[\xac\x07\x90\xddEo\xdd\xf6\x02\x0e\x0b05\xa8\x0d\x99\xf9\xeaQ\xda\x17*F\xc0e\x97\xfa\x82\xc3Q\x1f\x1c\x02\xde\xc6\xa7>\xd8\xb0\xdf\xeej\x91\xb5\xc5F\xc3\xe3\x98\xd1Q \xf1\xda\x90\xa3\xb8\xe4\xa7\x83\x18&\xad#\x12\xc7\xa6|\x90\x08\x0cLM\x0b\xa3\xfa\nVf\xab\xe6\x15;\x96B\x85\xf3pw\x90\x1e\xdai`T\xc2\x19\x8ca\x95\xcd\xcc\xbe\xcc\xa7\xae\xe4\x08\xb7\xe6Ni\xd5L\xba\xd0\x0b\x87,\xf1\xa4\xce\xf4Ty\xcf\xb4\xf4\xec\x0f\xc4\xac\xa9U\xdb\xdaq\xe0\x05K\x903\xb7|\xab^\xdcR\xddn\x17\x1fV\xe4_Q\x97\x8du\x7f\xcf\xfe)\xa7\xe5\xee<\xb6\x1d\xa4\xe5\xabZjF\x84\xceBEq\x18i\x81\xed\xb3\x87\xb8\xa9\x15I#\x1d@\x9c\xfbx\xa5\x18\xcb\x06\x10(X\xfb\xb2\x0b\x8f9(\x0b\xb1\xed\xf4 \x9e4\xba \x8a7(\x16\\\x1f{\xb6\x0bYd%\xa2\xebW\xf47f@\x06\x9dU\xbf[\x9d%\xaf\xee\x1e\x94\x01E\x8fUcE\x92\xdas\x8c:i\xf55\x16So\x01\xba\"\x9b\xd5\xd2eQ \xf8\x85\xdb u\x1f\x82H\x82i\xc4\x9dNy\xe5\xf0\xeb\xfaKWik\xa3\xdb\xe1^\x0eE\x1c|\x87I\xbbN\xe8G\xeb\xack\xadc\\\x0f\xcd\xfc\x91~\x10_\x1cC\x07\xf5E\x9c\xaa\x9d\x88&l\xce\xf5\x978\x9c\xdbX+\xea\xfa\x8f\xbe%*\x90\xb4\xd6S9\x00\x92g\x9c{\xd50$~=S\xf5\xaa/\xc0\xdd\xcb1C\xe0\xed\xb9\x03@/\xc3\xa12nZ\xb5>?\xaf~\xe0\x99\x94\xc3]\x9a\x9fLJ\xe3\xac?\xd4\xbcX\xafg?\xd6,`\xc0\xf8tu\"\xa5O\xbe\xe2\xab\xd8\x84\x82ZU\xde\xefN2IZ\x12dp\xa7|j\xda\xac\xec\\\x80B\xaa7\xb7)\xe9E\xa2\x91fl\xe9Q{\x0f\x03\xe2\xe6 \xf0V\x9f\x92m\xfe\xea\xc6\x9c\xed\x99\xact\xd5vz\x8cI%\x13\xd7b\xf2c\xf2\x8a\xeb\xb7\x9e\xda\xa9Bf\xae\xaa\xbe\x8c\x93\xb0/\x93\xe0\xce\x02\xc1\x1f\xd52\xf9\x17>Ix\xd2\x97\xcdJ\x86B\xfa?\xfe\xc8grI\xc4\xd1\xd7O\x99\x14\x99\n\xba1\xfa\xef\xb5\x17W\xaf\xc7\x11\x0d\x12\"*\xf86+\x1c\xe0i\x03\xfasCM\xca\xac\xe2\xf6\x97R\xf0\xf2e\xd0V1\n\x0e\xd8o\xae6\xb2\xa0]\x8a\x82\xc4\x0b\x99l2\x81\xf0\x14^\x9csLW\xe5?\xccBT&|m\xfe\x13+\x8d\x91+V\x81\x1f\xa5\xfb?66^\xa3?\xf8\xc4\xb5ID\x03\xe5\xda\x91\x8b\x0e\xb8\x17\x0cJ\xb9\x97\x93=\x15L\x0e\x8f\xe2\xd0\xad\xee%5\xc1<\xffjH\x8c\x80\xab\xee\xfc\xa6^\x1aFs\x9b\xfeb\x0dpE\xa7|s\x0eDZ\xfd\x17~\xcd`\x89\xb1O\xdb%{r\xbe\x07\x14\x98:U\x95\xe7\x06\xd9!U%WB\x8eb\xf9^3\xbbIR\x1c\xb9\x90\xaf_\xd8cD\x95\x84E\xca\x06\xd8\xcc\xe2#\xd1\xca\n\xf5+J\xd61\xae_\xd3\xf7d\xad\xe7m5\x9b\xd6\x9b\x93\xea \x01\xca/r\xa2\xc0e\xaevfO\xd8{\x9dy)\n\\\xf56\xb4\xcc$\xa5\x86\xf8seV\x7f\xb8\x80\xbeJV]h\x12\xdf*\x91\x8b\xd3-f!\xed\xf4\xb3WOw\xeb 8\x99\x0e\xa8\xe3p\xa76\xa9\xbcgG\xcf\x9aJ\x1d\x82\xf6\xd2<\xc0\x92\xbf\x19\xf2\x18\xa1\x8a\xa9\x9f\x93\xa3\xd7\xc8\xd1\x9b\x94\xff!\x94#t\x0b\xea\x04$\xb0\xee(\xcf\x0dR\xbf\x1f#<\xf5\xb4\xbc\xd5$\x89D\xc88\xae_\x1e\xf2\x90\x9c\xe1$\xae\xd5Q\x8b\xa8\xb2qG\x0e:^\xb0\x08\xeb;\x1d\xc0K(\xb3\xf2\xce*\xbf\xee\xd7\xf5m/`\x97urt\x87=\xc4\n\xc0\xb1w\xc6?\x8c\x80g\xc5z\x89\xe0w\xda+\x0f\x0b\x19\x0d\xa0\x02\xf6\xf3\xc8\xc5C\x13z\xd8\x87\x1eZ\xc7\xbf9\xa0\xa0,\xdenU\xad\x8f\x8b\xdbb\xea\xe9C\xdd:\xf2\xa4.\xf4\xee\xf7\\\x0e\x9b\xd5\xeeQ\x1b\x11-\xb6\x80\xae\xc9\x16\xb5\xd2\xef\xbc3\x16\x83\xb1\x03xay7\x9f\xdc\x9f\x02\x98u\xe7v\x824\xe0\xe80\xa9\x0b\x93:\xdbZ\xcf#G)Qh\xcc.\x9bF5\x07O{w/\xc1\x95\xff2\xaad\xc1`\xb5\x1c\xae(\xd6\xef\xe4\xcb\x9d{\xc5\xc0\xc2.\x8d\x93u\xc4\x1dd\xb5\x86\xcc\x01\xb7\xa1;\xea\x8f!\xf3\x92\x92\xe7\xaf\xdbST\x057T\xd9\xebt\xa5\xcd\xd3\xe0i\x01\x0e\xbd6\x7f\x8e\x17U\xc8\xa5,\xeeK\xbba\x80\x0e\xf2\x14rN\xf8\xa4\xa6)M\xd4\xcf\x1a\xbb\x912w\x88\xd7\x040)\xd0&4\xd1\x9a\x97\xe3\x01\x9c\xc0\xe4\xa1\xc1\xdeo(\xd2\x89-\xa7\xe6d\xdc\xe1M)a\x1dl8E3#v\xcd\xcbc\xffV\xb4\x13\x1d\xb7bH\xeb\x8f\x8e\xf3\xc1\xbe\x94\xae\xf5&\x9a\x84\xa0\x08\xa3\xd9\x1b\x90R)Q\x1c\x87q\xc2\x0e\xa8\xd4\x06\x18?Y=y0M\x9c0BIg\xd5{\xfa\x94\x9f\xb3\xd2\\\xb4\x90\x1f\x8b(\x1b\xaa1V\xe9\xc1\x0eXu$\xe2\x92\x9acc\xf4)b^\x80E>\xe5C\xd2\xea\xfaZ\xebd/\xf9&\x15-v\xf9;\xdb\nx\xd3\x0b$e\x8fl\x08\xdf=\x7f\x92]\x05U&\xc4\x8b\x9f\xc0M/\x86\xae\x882\x9f>P\x9e\xb4\x06S\x90\x8c\xd6a\x8f\xba\xac\xa44P+\xb99t\xc7\xb1\xf0\xb7\x03x9\xad\xbc\x971\x02\xeej\x8c~\x9a4\xaf\xc6\x02\xdfAV\x00\x0d\x9e\xd6hH\x0d\xfav\xe0\xff\xb4,\x94\x9d\xee\xf2kaq\xb7\no\x9aTZ\xe5\x1d\xf9J\xef\xff\xbc\xfc\xdb_;I\xb8\x8e\x1d4\xb3\xa3\xc8\x0b\x96\x9f\xee\xde\xfd\xd20\xea:I\xd2\xf5\xed\xe8o/\xff\x7f\x01\x00\x00\xff\xffPK\x07\x08_;\x94/\xe8Y\x00\x00\xa8X\x02\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xbd[w\x1c7\x96&\xfa\xee_\x81\xd1C[\xea\xa6\x92\xb6\xab\xdc\xabG3\xee52-W\xb1\x8f-\xf1HT\xcd\x99\xa9U\x8bFF\"3\xd1\x8c\x04\xd2\x01\x04/\xe5\xf6\x7f?\x0b\xb7\xb8%n\x11\x19\xa4\xe8\xf2\xde\x0f6\x95\x11\x81\xcb\xc6}\x7f\xdf\xde\x10\xb7x\xb3!\xd5+\xf4\xf9W\x8b/>\xff\x8c\xb25\x7f\xf5\x19B\x92\xca\x92\xbcB\x05f\x92\xa3\xb3-\xa6\x0c\xbdD\x9b\xf7\x17g\xe8OX\x92[|\x8fV\xbc\x10\x9f!\xb4\"\xa2\xa8\xe8^R\xce^\xa1\xd7\xe8\xfd\x9b\x0f\x97\x882I\xaa5.\x08Z\xf3\n \x89%A?\xd7\xa4\xa2D \xccVHV\x98 \\\xa8oT\x127\xa4\x12\xfa\xf3/\x17_,\xbe\xf8l\x8f\xe5V\xa82\x9c\xea\xdcO\xc9\x9e\x17[qz\xf3\xe5iQW\x15a\xf2J\xff\xa2\xde@hC\xa4\xf9\x03!Q\xefv\xb8\xba\x7f\x85\xce\xccko\xd4[h_\xf1\x1b\xba\"\xc8~\x8b\xf4\xb7\x88\xaf\x91\xd8\x93\x82\xae)Y!\xba\"L\xaa?+\x9b\x12\xdf\x93\n\xab\xd2\x9d\xaf\xfa\xa9\xd9\xe7\x15\x11{\xce\x04\x11.k\x84>\xff\xea\x8b/>o\xffy\xa0\x17Q\x17\x05\x11b]\x97\xcd\xd7\x8b\xce\xdb\xa2\xd8\x92\x1d\xee~\x8f\x90\xbc\xdf\x93W\x88/\xff\x93\x14\xb2\xf7`_\xa9\x02J\xda\xcd\xdf\x88GA]1)\nYQ\xb69x\xb8\xe6\xd5\x0e\xcbW\xaa\xf1\xfe\xf5\x8f\xcd\xd3\x15Y\xe3\xba\x94\xe1\x9a1T3r\xb7'\x85$+D\xaa\x8aW\x0fYA\x9d\xc1\xa8\x8a\x15|EB\x1f\xa8~\xbaiZ\xbd\x95\x8e*\xfe\xf0\xd5\xe0\xe9\x8e\x08\x817\xc1$\xbdeX\x11\x89iyP\x19\xf7\x0d\xae*|\x7f\xf0\x8cJ\xb2\xf3|\x12Q\x9b\x91\xb0\xf2\xda\xcf\xaf\xea\xaa\xf4?Mt\x12%7\xb8\xac=\xf57\x92\xfc\xba\xd5\xee\xf2^\x12\xfb\xca\x1eWxG$\xa9:e~\x89\x18\xde\xa9F\x1a\x8eN%\x94\xbd\xd23JWm\x15\xf9\xb9\xa6\x15Y\xbdBk\\\n\xd2y\xe2)\x94\xc4\x9b^^\xff\xafM\xec`\xce1\x7f\x85'\x1b=/\x9c\xb35\x17\xcdTS\xd5\x8cQ\xb61S\x8d~d?\xea\xcd+o\x86O\x9f\xec\xac\xd2UAW>E\xefm{\xc3\xe4\x1e($\xae\xe4\x95\xa4\xbb9:\xf1\nK\xf2R\xa5\xe5}oU\x9b\xf6\x9e\x9cQbB7\x92L%4\xb9w\xa5\x97\xd3\xd5#\xea\xc8dX\xf0\x9aI\xca6&g\xb2\x8ag\xbb\xe4\xbc$\x98eWdK\xe8f+g\xa8\x8aO\x7f{\xbc\xa1,\xd0\xcc\xd1\xde\x1e\xef\xeb\x8c\xdc\xc9\xabkr\x1f\x9e\xc5\xa3e\xf6\xcc\xb2}\xe9M%\xff\xf52PqW\nD\x05\x92[\x82\xd4\x9f\x92\xa3%A{,\x04Y\xa9\x7f\\\xe0\x0dyO~\xae\x89\x90\x0b\xf3<\x90\x98\x9e\xb1u2*Y\xa58\x82v\\HD\xd6kZP\xc2dy\xbf@\xe7\x12\xdd\xd2\xb2Ty\x90\xdd^\xde#\xba\x0e5\xdc\x96T\x04\xe1\x8a \xc6\xd1\x8eWD\xcd\x82u)\xc5\xc27\xf1p\x89\x03\x8b^\xb62\xeb\xf0\xf8\xb1\x1b\xe6\x7f\x0f)Rg\xaf\xb5\xa8\xff`\xf5nI*\xb5\x0f\xb5EF\xf8\x06\xd3\x12/K\x12\xaeoW\xd1z\xc0\\\xe9\xc4>\x0b\xbc~\x8b\x05\x12D\x9e *\x85Y\xb5U\xfe5[\x915ed\x85\xb8\xd2\xdf-\x15\x87\xfd\xa3\xd77\xbcU2E1K\x8e\xa9\x95i\xaf%Y\xad\xd4\x96\x9a\x99\xc3\x82[\x95\xdc\xb6I\xa0[\xd5f\xbe\xe6\xd9\x12_=\n^\x994VjE\xadL\xe5]jh\x8b\x05\xaaU/\xecj\xc6\xab\x0e\xf7\xc5\x07\xbek\xcb\xfdK@qZ*\xb2'Xmj\xbf\xc5U\xd3H\xdf\xa0/\xffG\xec\xa3\x9eZt\xff\xfe\x06}\xe5\xfd\xe2\xd7\xe6G\xd8b\x0f\x9e\xc2\x16\xfb\x91\xb7\xd8\xed\n\xa6\xe6\xefP?\x1c\xac\x11vQ\xc0vf\xa9\x88\xac+f\x86~w\x14,\x9a\x15DO\x11\x1b\xda_\xb5\xf5\x92\xa0\x86vjUx\xc7\xca{\xc4\x19QS&_\xaf\x05\x91\x88W\xa8_\\\x84\xc4\x96\xd7\xe5JME\x82\xc8\xee\xe08\xfa\xc0\x80Bk\xaaG\x89\xa6|!=\x0e\xe6S[\x19\xadJV\xefHE\x0b\xf7\x9b\xdcb\x89\n\xccT}\xf44w\xbb%\xcc)\xbef\xcd\x8a1\x98\xf2\xceuj%\x11\xa2U\xa1J\x8b\xa1Z(U_\x93\x91\xfa\xec'\xff\xc0\xca\x1d\xac\xb1\x1e\xf5\x96tGs\xb5\xab\xdfu\x9b\x97\xd0\xd2k\x16\xafn\x0fVo\x9b\xa7\xbd\xd4T\xdf\x1c*{\x8dJ\xb2\x96n\xabb\xf7.vNW)\xbb\x01b2Qz^\xde#\x82\x8b-\xc2\xfb\xfd'\xd4bw\x03\xd1~\x1f\xd3e\xe7\x0b\xa5Q\xddC9\x92UM\xd4\xf6\x06Q\xb6\xa2\x05\x96\xc4t\xdbV\x83\xfaE\xdb\x91\xba\xc9QV\x94\xf5j\xb0\xeac\x93\x8bj\x1d_\x8b\xe9\x19\xbb\xb3UZ\xf3\xaaS'4\x98\\>\x9e\x8bAk\x0d\xaa\xc0\xd5 Pk\xa9Y[\xf5\xf0j\xc7\xa3\x1ar\x0b;\x9a\xe8\x86\xf1\x8a\xf4+\xe0Fc?\x0b\xa3\x99c\x1bvx\xc2\xf14`EnH\xd5\xfb4\xd6x\xf6\xeda\xc3\xd1\xce\x06\xb4\"\xfe\x91\xd0KG\xe5A\xccn\x8cW+R->\xebW\xff\x03e\x05y\x85\n.v\\\xbc\x14\xabk\xf4\xc5\xe2\x8f\x7f\x98U\x1b)\xdbMU|\xf5\xc5\xe9\xcd\x97\xa7z\xc9\x8b\x98n.\xf4sU\xdb\x8a\x92\x1bb\xe6\x08\xfd5\xda\xf1U]\x12\xb3h\xfa\xad7\xef\xcf\xbe\xfa\xe2\xa2\xfb\xf8\xc9\x9ao\xbaj\xe8\xca\x11gS\xc2\xd4\xe8\xbb\xd2\xba\x8a\x1d\xa9b\xe7\xf4\xf4\x19\x03u\xb7-\xaak\x9alu3\x15\x9cY\xd8@M\x0bg\xba\xb7\xa1\x82S&\xd0\xff|\xf9\xf2\xdf\x03\xa9\xe9VC\x92_\x13\xe6=#\xbaz\xdd\xec\xae\xb6\x9c_\x7f\x9a\xaa\xbd\xf9\xcb\x8fH\xe5n\x97\x7f]Q5<\x99)~ 5])\xb3\xde\x18m\x84N\x85g\x9c2\xb5\x04i\x10fM\xaa\xca\xed\xbe.\xb5Z\x90\xdcV\xbc\xdel\x11F?\x8a\xcd\x1b}\xc4\xaew\x97w\xe1S}\xe0\xe4\xa6\xe4G=\x8c^\xafV\x95\xda\x8c\xb8\xc4\x106?\x1c\xb6\x80=D\xdb\x81i\xce\xa9\xa9ai$n\xcd\xd03\x84I\xb5wh5k\x94\xf9\xb7jV\xbd\x9e\xa8_\xf5\x07\xa7\xb6\x1c\xef/\xce\x06\xe9\xed\x88\xdc\xf2U[~8\xc2\x1d(\x08\x8ep\xb3\x1f\xe1r\xd7==\x15\\\xed1\xad\"\x8b\x9f\x1e\xed\x17\xea\x9d\xce\x02X\x91\x0d\x15\x92T\xda\xae\xa7\xe6\x13\x9d\x88\xfd\xb4\xb7\xfe\xb5\x9f\xdb\xa7Ov\xf9;\xd0F\xef\xe1'\xe8Z\xba\x9d\xae\xec\x1cxD\x0f\xb1\x93\xa5MH-\x83fy+8\x93\x15.\xa4\xa9\xb9\xf7\xe3\x15a|w|\xd6f\x93\x87\x96X\x10\x93\xa4\xdb\x87\x9bm\xe4\x0e\xef\xf7\xba'\xf9\xd5\xa0W\xbc#\x0c\xfdM1\xc4\x96\xdf\n\xdbaU\x9e\x1a{3\xeb\xa9\x90X\xd6\xc2\xfb\xb9S\xd3\x15\xbfe\x114)a\xd6u{\n\x9dH\xd3\x16o\xde~\xfc\x11=\xff\x02Qv\x83K\xba:A_\xba\xa5\xb0\xd0'\x90\x134\x9c0[!w\x92T\x0c\x97.\xb1\x17\xd3\x9b\x89\xb0:\xd8\xcaj\x02y\xf7\xbf\xdf\xbey\x7f\xf5\xf1\xed\x87\x8b7g\xe7\xdf\x9f\xbf\xf9.\xf9\xee\x8f\xef\xbe\xfb\xf8\xc3\x9b\xe4ko\xfe\xbf\xcb7\xef\xdf\xbe\xfe!\xf0\xa2[.\xb3\x0b\x90\x87U \xf4N\xb7\x02\xd1f\x14,\xed\xd6A7\x8d\xd8\xd2\xbd\x1a\"x0H\xfc\xd6b#\x1e\x05y\x8a\xdclS0s\xed}\xda\xb1\xb1\xab\xcc}[\xcdA\x1eF\xb1\xafz\xff\xb2\x9b\x1euN\xbdUi-\xef\x0f\xb7B\xd8t\xa8\x8c\x1c\\\x9b\xbcB\xee/O\xfa\x98u\xfa_8\xe9\x9c\x0dn\xb3B\xf4\x15$$f\x85\xb5\x11T\xa4\xe0\xd5J \xac\xd7\x99 \x06\xca\x99\xa0B\xea\x13\xa7j@5\xc7\xdc\xf81-w\x10\xd0{\\\xccV\xcd\xa6\xd9\xce\x0e\x81\x8dg\x0c\xc1\xebU\xb5cj\xe8nN{\x16\x88\xde\xae\xd2\xb3\xc5\x9d~\xea\x02D\x10\x10\xc1\x81<\n\"\x18\x1f\xedz\x17\xdan\x07\xb3\xceW\xbe$N;;Ru\xe2\x1a\xbc\x03G.8r=\xfe\x91\x0bP\xb3\xd1\xb6Z@\xcd\x005\x03\xd4\xac\x15@\xcd\x005\xfb-\xa1f\x1d{\xd9\xe9/\xfa\x1f\xbffX\x11;FD\xec7#\xdaO\xfdV\xc4\xcf\\\x8d\x9e\xbc\x111\xb4W\x9at\xa2\xcb0\x05&\xf7-\x93\xcd\x80\x11#`n\xa6G\x18\x00\xa3\xe6\xbf\xb4\xf1\xef\x08\xd3_\x8e\xe1/uv\x9b\xd7\xe8\x97g\xf2K6J\xcc\xdc\x97o\xec\xcb2\xf5e\x19\xfaF\x9a\xf9\xf2\xcc\x0fs\x9a\xf8\x1e\xde\xc0\xf7\xd0\xe6\xbd\xf9\x8d{i\xd3\xdeL\x86\xbd|\xb3\xde\x14\xa3\xde\x18\x9b\xc5\x0c&\x0b\xb0X\x80\xc5\xc2\xff\xfc)Y,\x86;\x81\xd8 1c\xabu\xb7r'jB\xe5\x96\x18\x92\xc4\x96\xdc\xb5\xbb\x8c\xce\xfeC\x93X\x0e\xa8*v\x18\xf5~;\x0b\xec\x1f:/Qmv\x97\xdb\xceO\xed\xbeWm\xc6;\x0f<\x1aK\xecz)[\x97:G\xed^L\xab\xa2V\xffd\x9b+Q\xef\xf7\xe5}x\xe3\xdbY\x9f\xce\xda\xcf>\xe8\xaf\x06\x8c\xb2\xe1iL:\x9e\x0d\x96\xfa\xf4\xd09~5%\xe0\x0c=\xa7\x0b\xb2@\xe4N\x1d\xf7\xd4$Y\xb3\x1b\"\xa4\xdbR\x8b\x17nJ\xe8;+\x0f\xcbb_z\xb2\x1b\xeb\x90\xce\xbbb7cF\x8fx\xe7N\xba\x86\xedEYWk\x87\xdfN\xdf\x9cO\xdf\x1f\x9b2N\xf84\xbd\xf8~G\n\xbd\x0e6K\xaf\x1d\xa8\xb7Tn\x11\xeeo\xc2\xf5Z\x89V\xa4\xa0\xbb\x9e\xb5\xc2\x89)\xe6\xf0(j\xe4\xed\xbb\xcb7\xaf\xd0\xe5\x968\x85\xaf))W\xda\xde\xc6T!\xd0\xed\x96\x16[Dw\xfb\x92\xec\x08\x93\xa6\xab\x17\xb5\x90|\xe7I\xce\xac\x85\xbe\x8c\x04\xdd0,\xebJ\xb3O\xcc\xb8V{\x95\x0d\xdf\xf0}\xc5%\x8f,\xeb~\x9a\xd7\xc1\x10\x98\xbe\xbc\x1f\x8e\xec\xf7\x17g\xb0\xae#X\xd7\x1f\x7f]\x1f\xb3\x90\x19\xd7\xd7\x1de\xf2J\xfb\xa4\x8b\x06\xd9\x0ez\xb0\xffH\x99\xbcp\xefv\x160\x176C%\xd6\xf8\xb4\xa3&USS\xefRt\x98\xac}\xeb\xc9\xaeEa\xb5u%=G\xfb\xd2q\x93\xcfP\x9f{u\x98\xed\x84\x16\xe9J@\xcb\xad\xfcv\x16\xb7\x8cy\xfb\xb0\xbfL\x9f\xb8=]\x1afn+0s?\xe1\x99\xbb\xf9\xc7U\x85% \xcf\xd9\xe7\xee\xbd\xf7X\x92\xc1y\xa3I\x03\xa94\xdc\x81\xccM<{R\xd1v\x0c\xf4f\xec^\xa2\xf6\x85';Y\xfb4\xd5\x95h[\xd9\x13\x85\xd6\xcf\xf2\xde\xeee\xdb\xb3\x9a9\x88 \xca\x8a\x8a`A\x84\xde]S\xa6\x81_\xa3\xbf^\x8a\x19\xb6\xa6\x9ej\xa7\xcfk\xfd\x16\x1a\xbc\x023\x9c\x15\x98\xe1\x9e\xf0\x0c7\xc9)\xcf\x0eK\xa2\xcf\xfd\xcd\xd6\xa9\xb1t\xc5g\xb3\xdf\xb6\x97\xde\x80\x7fz\xe0\x18\xd5j\xc1\xcd\xf4\x06:\x98u\xb7\xa8\xf7\xb2\xd3\xb7\x8c\xad GMp\xd6t\x83$\xd7\xe9z\xde'w{\xce\x08\x93\x14\x97W\x05.\x9dq'\x90\xb7I\xfa\x06W\x14/K\xa2y)\xee#\xd2M\xaa]2\"u\x08\x8e\xcb\x94\x8a\x94\xe0\xd0\x83\x0c\x0d\xa1\xb6*\x94Q]^=R\x03/\x07\x1d\x16\xc6eU\x91U\xad\xe30\xa25.$?\x9cK\x8d\x14\xf3\xe4Vr\xb6A\x92T\xbbDS \xb44\x01_\xae$\xae:\x93\xc4\xa1\x8c\xc9\xdd\xa6\x89L\x9a\x81\xb7w\xf8\xeeJw%V\x04'\xc9q\xd9\xee\xf0\x1dr)z\xdem\xf71+\xaa\x12\\\xd6\xc9\xae\xden\xf0\xba\x9f4\xc3_-\x8b+s\xc0{\xa8\x8e.$\xbeV\xcdS\x91[\\\xad\x82\xaf\x8dST\xc4\xc7\xe6 \xc7\xfe\x14X\xf1=\xaf\x0eu\x10I\xce\xbc`\xa64c\x89\xa7A\x87Y%\x86\xcf\x80\xcb\x92\x17:&\x10\x16\xaeD\xc8\x96(4r\xf8nW3*\xef\xaf\xf6\x9c\x07\x17\xed\x19\x15uz\x8aj\xb5\xc3\xb9\xa2\xacP\xf3\x9eZB\xa3\xcaJj\xe9PY1M\xc5\xf5xzz\xa0J\xc9\xed\xa9\xa5)\xae\xc3\xbe\x0d\xa2\x14K\xce\xe8\xeb\xb0\xc2\xdf\xa0\xaf\xd0_#\xdf!\xf4\xbc50\x1b\xa3\xb5j\x80\x17\xe8\x1b\xf4lC\xe5\xb6^.\n\xbe;5\xf4\x96\xd3\x96\x95u\xaa\xde\x12\x8b\xefH\xf1\xec$7yV\x97\x9au\xa7\x12\x1f\xf2\xb4\x86\xf2\xb7\xff\x11\xabm\xbf/=\xc4\x10@\x92\xc7\n\xe0k\xb7\xa6PH\x15\xca\xf3\xb1\xf5\xa9o&\xad\xd8\x0e\"\x83\xf13\xca\x9d\xbe\x9d)1[\xa1-.\xa5;\xd4Y\xf2th~\xbb\xa6\xfb=Y\x99\x18\x82\x11Gs\xffa\x0f\x1c\xcd\xe1<\xd7Hj1\xfd\xcd\x9f\xe7\xb4=\xc4\xbc\xed=\xcf\xe9\xe7\x1eD!b\x88\xba\xe8\xdaX\x9e\xee\x89\xadS\xf3\xaeDu\x9e\xf0\x1b\xeb\x9f\xf6\x8c\xeaR\xc8A\x1c'\xc8\x99\xaft>\xa3\xe6+S2\x98\xaf`\xbe\xf2=\x7f\xca\xf3U\x7fi\x0f\xcf[\x1f\xcc{\x1aI\xf2\x9b\xa3ZF\x8fM\xd3\x06\xca\xf6Ni\xbd\xe4\xec\x0bOvf\xf3\xe9\xa8+\xb3\xcdp\xad\nMV\xad\x13L\xbbs\xb3\xa7\x81-\x16hI\x88>\xf3j\xe6\xf8\xe8i\xae\xd7\x04Y\xb3\x9d/\x95\xd3~K\x0e^\x01\x1b\xbc\x15\x98\x03\x9f\xca\x1cH\xe4\x96Tj\xd3pJnvj\x06\xb4\xd4\xef\xd3_\xec\x01;\xe2\xdec=\x17:\x97\xb7t\x82x\xf5\x19\xe4\xbd\xd9\xce~g\x1f=\xd9yn\x89K\xbf\x9d/\xda\x04\xbd\xa2\xda$\xdc4\xe2\xfe\xe9X\xb0\x7f\xf9\xb1G\xc9\x1b\x1a\xe5\xd5\xc8\xba\xdab1\xf6\xae\x96^\x11\x9aD\\!\xb6\xe4\xee\xa5\xe9!jBQ\x8fuG\x11h]\xe9\xa3>Ao\xde\xbd\x1e\x16\x85\xf1\xf1\x9a\x185\xd5\xf3\x8e\x9al\xdf\xf9\\ A~\xae\x89zb\x96\x82\xd1\x93\xba\xediY\xd3\xb9\x9d\xc0\xfb\x9d\xd3 \xcc\xdcV`\xe6\x8e\xcf\xbdi\xfe\x97\x91\xd7\xe8\xe3\xfb\x1fN+\"x]\xa9\xfe\x8dw\xd69\xa6f\xf4\xe7\x9a\x94\xf7-\xb9\xde\xee*\x0d8\x16LP\xbd#HEqI\xffN\xbc\\Z#\xda\xecX\xf0\x12-\xeb\xf5\x9aT\xae\xd1\x16\xe8rK\x853\x99\xeej\xa1cKJL\x19\xc2!4\x04\xa1\x92`\x11\xb1\xf7rF\xd0\xb3\xd3g\xa8\xd8\xe2\n\x17\x92T\x0b\xcd\x19.\xb1\x90H\x90\xcd\x8e\xb4N\xc9\x1f\xdf\xff\xf0\xb9\x18R\xf9\xfb\xa2\x0bU\x91}E\x04a\x91\\Ur\xeb\xba,\xef\xd1\xcf5.\xcd%^Z\xbf\xce\xffYi\xf29\x16\x88\xb2p\"?\xa9\xa2\x9cn8\xdf\x94d\xa1u\xb6\xac\xd7\x8b\xef\xec\x8d-?\xbd05\xd1\xc9\xb6\xf1\x11h\x08\xb0\xd2>\xd8\x98qF\x0b\\\xea1\x14\xce\xf99Yl\x16'J\xb5\x1a\x8fz\xb6x\xa6\xa6-\xc6\xa5\x9a\x17\xc9^\x92\xd5\x0b?)\xdb\xc89C{\xa5lZ\x90\x13$ \xde T\x8b\x1a+u\xec+R\xf0\xdd\x9ej\xd3\xa75\xd0.)\xc3\xd5\xe1\x08s\x82\xcbR\xeb\xab\xdd{\xdf\x87\xb36s\x1d\xa2\xda\x13\xbaV\xd3-\xb3F`&\xc9\x9dn\xea\xd7\xec~\x81\xfe\xcco\xc9\x0d\xa9N\x94\"\x82\x89}|\xff\x83\xb0\xd4\x1b\x95T$\x8c\xa8\x9dA \xfai+\xe5\xfe\xa7\x13\xf3\x7f\xf1\xd3 \xe2\x15b\xdc>=\xd1\xbd\xb1\xc0\x0cq=:\x95F\xc2 \x12\x89\xea=\xc2\xba\xee\x91|Iu\xa3\xbd]\xb0D;\xbc\x17\xa6k\xe9\x92K\xde\\*\xa1-\xf1T\xe5)\x10\x0e!Ajf-K~+^E\xda\xf6\x9f\xd1\xf9\xba\xad\x91\xea\x16\xf6R\xa9USi\xcd\xc1\x17\xa2\xde\xa9#P$\xa1\xd7\x0c\xfd\xf9\xf2\xf2\x02\xfd\xe9\xcd%\xe2\xcc\x0dA3\xc6\xee5\x99\x1f\x07\xbf\xfe\xebpX\\\xde\xef\xc9\xdf\xfe\xfa\xb7\xe0\x07\xc8E\x13b\xb6\xbf\xd9eD\xb7\xd0\xbe\xe2\xab\xba \xda\xffP-a\x87\xd4\x04'\xff\x8c^\xef\xf7%-\xb0\xd5ee\x00\x87[\x037\x14\xb8Ps\x0b\xe7\xd7\xf5\x1e9\xff\xfb%\x16\x11\x98\x83\x1f\xba\xe2\xf7\xe5\xe3\xfb\x1ft\x19\xb7\xf8Fw\xc1]g\x0c\xad\xcc \xc2\xaeJ\xea\xef\x1bNW\x08\xb3p\xc7B\xb6\x80z\xfa\xa8\xc8\x9aW\xe4\xc4%\xa0\xd2\xc5\x92.iI\xe5=b\x84\xac\\\x14\x0d=\xe5U7Q\xc0\x8635\xcd\xb2\x8d\xa18\xe81\xbb@\xcf?\n\xe2.PTZR\xddS\xcdY\xa6\x7fb\x867\xb1\xda/+b@L\x9b\xf0\xe2E\xb8G\xbd\xe5\x92\xbcBR\xad!\xeb\x9a\x15f\x84\xa9z\xd8\xb9\xcb\xda'\xcb\xfbn\xdc\xaa\xf0t\xa9\xfa#\xd7qV\xc2\xe1\xaa\xecZ\xb6\xac\xd7\xa8\"j%\"'\x1a\xc81\xb1IT\xa6:\xbe\x8b\xde\xde\xb9q\x19LJG\xd1\xd1\xf7\xb2\xddR\xb9\x8d,.\xf7{\xb20\xfd\x1f\xef\xa9X\x14|\x17\x9b\x8d?\xe8\x91*L\xe8,\x13/f0K\xa1\xe7v\xfbi\x82\x9d\x98\xa1\x1d\x8a\xea\x88\xd0\x8en\xb6\x12-#\x93\x92 jCe\xc7\xfd\xc6\x98J\xec\x95\x96\x05\x12d\x87\x99\xa4\x857\xec\xd9\x83\x1c?\x87\x92\xbbK\xfaQMGKb\xe2\xbd\xd0Ug\x83s\xb0\x8f\xb1\x8b;^\xf2P\xf4?5a7\xb7z\xeav\xf4\xbc\x97S\xb2\x9f^\xb3\xfb\x9f\xdc\xf6H\x1f{q\xb5\xa4\xb2R\x838\\BoRn\x8d\xc0\x9a\xfcb\xdc\xb4\xfcM\xabfg\xbd\xd0\x98\x12.\xfb\xdb\xc2\xc1\xf6\xaf\xd9\xd5\x05\xba\xe6\x85\x1b8%]\xeab\xdbuDhr+\xaf\xf4\n\xbe\xc7\xc5\xf5i\xcd\xd4\xff\xd4\xbam\xfa\x85\x7f\x04\xd9\x85>\xbc\xb1\xe1kTK3\xb1\xb9\xe9A\xa8\x89\x15\xafV\xd4\xcc\x15hC\x98\xf6\xd9_\xd9\x83\x96\x881\x10TyL\x13\xfa\xf3{s\x87U\xe7G_\xbeB\x17\xaa\xfcj^\xb0U\xc1\x8d\xd2)Cg\xff\xf2/\x91e\xf2{\xce\xd1\x9as\xf4\x0dZ,\x16\xe1\x9b\x9dTa0\xbb\x0f\xbf\x80\xd9\xfdB\x15\xe3\xfb\x8a\xef\x9e\xaf9\x7f\x11~u\xb1\x08\xaf\x7ft\x8d\x9e\xab\xa4>\xea\x8a\\\xf2\xe7\xff\xa4\xd2z\x11\xbd\xa8*\x96\xde\xafq\xdd}\x95\xd0\xdd\x7f\xe0\x1b<\x9b\xf2\xd07zo\xa8r\x99ACT<\xff\x9e\xf3EQb!\x12\n2ET\x1f\x99:v>\x0c\x97\xe1\xd7\xe0\x93\xd3S\xd5\xad\xf3\xca\xf8\x01\xef\x88\xda:\xbd6\xa5\xdd\x10\xf9\x9d1)\x9c\xdbp \xcf_L)\xbc7\x9dX]\xa2\xbd\xe0\x0f\x89^pq/\xb7\x9cE\xfa\x81)\xe3\xf7\x9c?_,\x16\xe1\x85\xad\xe9\x03\xcf\xa3\xef\xe8q\xa4{\xc8\xd4\x0e\xa2\x1297\x1a\xff\xee\xcd\x87\xb3\xf7\xe7\x17\x97\xef\xde\xbf\x08\xadw\xc8fk\xc6\\<c\x93uT\x9b\x7fLh\xf3O1\x86\x8d\xd2\xe4\xabo\xd0?\xed\x97\x8b\xef9\xffe\xb1X\x84\xfb\xa1*\xf4\x89\xdaP\xab/0\xbb\xdf/\x17o\xc9m\xa2\xfct\xad\xbf\xf8o\xdf F\xcb\xf8\xfdw1%G\x86G\xfc\xbbA\x05#\xc9\xd8\x92\x9a\xba->\xb2\x1d\xae\xc4\x16\x97\x97\xdcL\x1esU\xc3\xfb\xecR\xf3\xaa\x8b\xebf\x9dr\x870\xb4\xbco\xb7\xa4ne5\xa1i\xfd'\x02\x17\xd1\xae\x16\x81\xfd\xdc\xe7\x9e\xed\xe6\xe9\xba.\xcb\x85~\xa0\xb6\xf2\x9f#\xdc\xd9 \xa8]\x82\xbeC=\xb0n\x9a>\xe7\xcf\xacYvYy\xef\xce\xdc\x07\x86\x94\xe6\x08\x81\xf0Z\x12\x1f\x0efD\xdbx>?\xfd\xdc\x9f\x95\xdd/\xb8\"kK\x00\"v\x8c<[s\xbeX\xe2JW\xf6\xee\xf4~\xf1\xf7gF\x8b\xfa\\\xeaM/|L\xd7E}\xa6\xd2\x08m\x15\xfe\xe3\xc3\xbb\xb7\x81G\xaa\xa5\xd5\xe3\xd6\xeadv\xd2\\\xcd\"v\x1bhN\xb6\xb5 \xce\xb4\xbc\xa9K\\\xf9\xd3;LF}\xb2\"\xed\xc6\xed\xa4\xbd$\xd3\xce\n'\xe6@\xe2K\x0e\x07\xecW\x9dM\x95\xf1\xcb\xff\xe9\x7f)\x05\xfdd\xcd)\xcd\xc6\xb5\xdb\x04\xfea`\xa7\xadW\x91#\x18.\xae\xd5\xdc\xd5\x9a\x04\xd6\xb4$\xe1\xd5\xc6\xcdu\x17\xa4\x12\x9cE\x07\xa7\xb5E\xaei%\xe4\x95n\xc7\xc4\xfd\x9a\xf6\x03\xd5\xf5\xdc\xfb\xfe\xdb5\xb5\x04F\xb7\x92X\xa9\x9ei]>{\x85\x9e\xf9\xc6f_\x0d\x0bS\xcb(\x1b\xf4\x99\xae\xdf[\xbcSi\xfeOS\x85\x7f\x8f~\xa0\xea7x\x7fl%\xcf\xd7\xf6\xc8\xd9\xefk\xa67P\x81nIY\xbe\xbcf\xfc\xd6Q#\x05\xc2\xe1\xf0\x0dn\x0c\xf9\x9e\xf4\xbb\xfc\x89\x0b\x00\xd5\x1b\x07m\xf4n[\x1c\xd5\x81\x03\xc7Kl\xba\xb4?\xb3\x9f\xf4`t\xfd|\xcb\xcbU7\xf0\x84\x19\xca\x945\xe3\xc3\x92T\xfdI\x99!\xe3\xcfG\x17a\xd1,\xea\xcf\xd5\xec\xe5Tx`\x1cs6\xe3\xbf\xfd\xf5o/\"\x03i\x8e>\xd7\xcf0\xde\xed\xb4\xaaT\x92_.\xbe\xfa\xf2+\xf1,\xd2\x85\xcc\xffc\xa1\x83\x1c\x19\xbb\xfd\xaaw\x8ev\xd1\x7f,\xfcF\x1cH\xbc%w\xcd3\xc9;\xe1\xde-\x02\xa8\x96\x85\xee\xc4\xf4P\xd1~\x0e@p\x0b\xd4\x8a\x1c\x14\xbc\xe3\xaf\xfe\xad\xc5w\x1d >\xc0|1\xf2\xa1\xbez\xed\xc3HP\xb6)\xdb\n\xbc\x91\xdb\xd7\x11\x08\xdd\xe6d\x1f\x01\x84\xee\x87\xd03\x10b\xab\xc81\x08q_\xf7N\x00!\xb6\x02\x081 \xc4\xad\x00B\x0c\x08q+\x80\x10K@\x88\xfd\x02\x08\xb1\x13@\x88\x01!\x06\x848s\x97\x04\x08q#\x80\x10w\x05\x10b@\x88=\x02\x081 \xc4)\xe5\x03B\x1c\xfc\x06\x10\xe2\x9e\x00B\x0c\x081 \xc4\x80\x10\xf7$\x17\xad\x03\x84X\x0b \xc4\x80\x10\x8fG\x88\x1d\x0e\xf8\xe9\x10bA\xae\xd6$\x12\x84\xf9\xdf\xbb\xb8\xb0 \xdf\x93!.,\x08Z\x93\xe6h\xbe\xc7:~\xcb\xb2\xe4\xc5\xf50*\xb3\xfe\xf1\xa4\xed\x19T\xfb\xc6\xd2\x1d-\xb1\x8eg\xb5&d\x87\xabk\"m8\x84\xcf\x85]\xaaO\xd0\xb2\x96\x08\x97\x82\xa3bK\x8ak\x81J\xceV\x9d\xb8\x8a[\\\xad\xd6\xbc\xba\xb6\xf7\xe1\x05\xb0f]z\xfb\xe8 c\xcd\xdd\x16\xe9J\xd4\"\xe5\xc2?\xda\xaf]\x0f|s~\xf1\xe5\xd7_\xff\xf7\xa6\x99z\xdf\xf5\xeagad\xad\xa3\x06F6\xb7}\xfa\x93\x02|\x18\xf0a\xc0\x87\xad\x00>\x0c\xf8p+\x80\x0fK\xc0\x87\xfd\x02\xf8\xb0\x13\xc0\x87\x01\x1f\x06|8s\x97\x04\xf8p#\x80\x0fw\x05\xf0a\xc0\x87=\x02\xf80\xe0\xc3)\xe5\x03>\x1c\xfc\x06\xf0\xe1\x9e\x00>\x0c\xf80\xe0\xc3\x80\x0f\xf7$\x17\xab\x03|X\x0b\xe0\xc3\xff(\xf8p>\xbaZ\xf0U\x9e\xf3\xed\x19_\x85\xddm\xcbR_%(z\x1e\xb6\xd1\xc8\xd4*9\xfb\xfb\x93\xc59c\x98[\"\x12\xb3\xd7\x9er\x10-\xba\x1d\\\xb6\xef\x0fBDc\xd6\xe2\xf3\xb6\x85\xfas\x7f/E\xffu\xdeJ\xd1c|nu;\xc3\x85\"\x00\xa8\xfa\x9e\x03\xa0\xda\x11\x00T\x01Pm\x05\x00U \x80\xaa_\x00Pu\x02\x80*\x00\xaa\x00\xa8f\xee\x92\x00Pm\x04\x00\xd5\xae\x00\xa0\n\x80\xaaG\x00P\x05@5\xa5|\x00T\x83\xdf\x00\xa0\xda\x13\x00T\x01P\x05@\x15\x00\xd5\x9e\xe4\x82[\x00\xa8j\x01@\xf5\x1f\x05P}L\x87[\x8d\x02~*o\xdb\x82\x8b\x1d\x17W#\xee&>\xd3_d\xdcP\xfc\xb9\xb0\xef\xa2\xd7},s\x00\x0cw\x92\xfb\xccU\xf5\xc9\"\xc4F[\xa6>\xa3\xb0\xbf\x038\xb8\x9b\x92\xeb,\xe6\xd7\xa6\x9b83O\x1fWw\xe2\xae\xf0\x1dY\x8c1\x97\x077\xb7\x04\x8f\xbb?\x18\xb9\x17\xaf\xcc\xd3yKh\xfd\x8a\xfbY\x0cJh\x8b\xd5\xfb6#fu\xaf3f\xa1\xe8\xbeTN\xfb}z\xf0\n\x84\xb3\xb6\x02\xe8:\xa0\xeb\xad\x00\xba\x0e\xe8z+\x80\xaeK@\xd7\xfd\x02\xe8\xba\x13@\xd7\x01]\x07t=s\x97\x04\xe8z#\x80\xaew\x05\xd0u@\xd7=\x02\xe8:\xa0\xeb)\xe5\x03\xba\x1e\xfc\x06\xd0\xf5\x9e\x00\xba\x0e\xe8:\xa0\xeb\x80\xae\xf7$\x17\xe9\x04t]\x0b\xa0\xeb\x80\xae\x8fG\xd7?\xf5\x85\xc7DH\xba\xc3\x92\\m\xb0\x08\x83\xeao\xec[\x7f\xc2\xa2\xb5\xb5\x98*\xfeD\xe4\xf6\x8a\xb4\xcf\x7fB\xd5\xbe@xOm\x1a=4\xbd\x93\xceg\xaeVO\x14Ko\xf4\xd1\x95\xa8M(\x0f\x17\xde`\xd1\x0b\x12\xedT\xb7RO>\xf3|\xd0\xd1Y\x03\xf9jC;\x11\xbdvq\xbah\xd2\x00\xd4v\xf0\x14P\xdb<\xab\x1f\x02\xd4\x16P\xdb\xe0\x9b\x80\xdaj\x01\xd4\xf6P\x00\xb5\x05\xd46$\x80\xda\x02j\xab\x05P[@m\x01\xb5\x05\xd4\xd6\x08\xa0\xb6S\x80O@m\x01\xb5m\x05P\xdbC\x01\xd4\x16P[@m\x01\xb5\x05\xd4\x16P[@m\x7f\xf7\xa8m\xb5 C\xb6\xd5F\xb4\xf3\xa3P\xe3\xf2?\xd5\xd07f\x02\xb7z\xe9\x9f,\xb29\x04j\x7f\xb6\xe8\xaa\x93\x16\xa9]\xe3R$\xa0Z\x14\xb2H\xb8\xb2o\xb0\xb8*\xf0>T|\xfb\xb8\x81\x04\xcd\x8cm\xd6\xed\x0d\x16H=3V\xbaZ\x90\xd5\x83\x15}\x00z\xba\xc2\xef+\xbe\xe7\x82TW \xdc|\xf8\x9e[{Ty\x88P\x87ns?2e\x1aJ7\xb9>Xe\xbc\xedPl1eWt\x15\xaa\xc2\xc0\x18\xe3^o\xa8\x00t\xff\xe5\xd7_\x9b\x9f\x11]\xa9\xee\xaa\xad\x7f\x15\xdf\xf9j\xdaKkK\xf0\x8a\x1c\xf0\x03f\xabn\xb7\xe9F0\x07\xe4\xf6\xaa\xc0e\x19a\x0d\xc8\xed\x19.K/c@}\x19\xa7\n\x98\x8f?su{\xa24\x81-\x16\xdbQ\x80r\x83\xeb{\x8dw*9\xd7\xf7\x1b\xf2\x88\xac0\x13X\x1b\xa5\x06\x03\xc0\x80\xa2\xea#OZ+\xba^\x93J4]\xcc7\xb7_\x12\xb62\xcd\x8a\xc4\x16\x7f\xf5\xf5\xbf\xf6J\xd0\xcdX\xc7\x81_\xa0\x0f\xc4\x9b\x8e\xb6\x15\xbf:=\xddP\xb9\xad\x97z\xda\x97M\xd2\xdd?\xa9\x105\x11\xa7\xff\xfa\xf5\x1f\xfe{\x00^\xab\xc8\x9aT\x84\x15\xc3u\xaf\xe4\x9b'\x02\xc3\x07\xe3+\x18\xc90A\xbb\x18\x01\xfd\xc9Nm|+\\H\xb3 i\xed\x8d\xba3\xdc\x10\xe6\xc7\xb9%\xdf\xd3\"Q\x18\xbf~\x8c\x04\xb5d$\xa36\xbd\x81g\x8a\xa3a>TRa\x00t\xf3[\xf7\x1c\xda\xad\xaf\x7fo\xbf\xc2\x12\x1f\xa1\xe2\x0c+\x7fl \x1aQe\xb0\xbb5jl\xcf%=,\xff\x89C\xb0\x83\xe9\xbc\xfe\xf6\xfc%a\x05_\x05 2=\xe5\x07\xa3Q\x18\x19Q\xe7\x00\x03\xc9H\xba\xd6\xdd\xd2\xb8\xbe\xd9,\xbfF\x1b\xc3\xd9\xe16\x02\x1cSV\x94u\xa8\xe6\xf2\xee\xca?\x85\xda\xc7\xe9J\xdb\xfa\xd8\x84\xdcr\xdb-\\`~\xd4\x99S\xb6\"wG\xe4>F\xe5.;\xdf\xf4j-\x0e\x87k\xbf\x13\xd3(\xf3\xe8*\xd9\xf6\xddE\xe0\xa1Z\xfe15\xdfS{\xc97iuWd\xc7o\xc8*^\xbe%\xe7%\xc1!\x948\x07\xaaCmV\xba\xe7V5AtmpjU\xce[M\xec\xbb!\x95Z\x07V5\xd1(\xbe\xd9D\x86\x8fj\x15\xe1\xd5\x063*\xf4fj\x81\xfe\x0f\xaf\x0dqb\x8f\xef\x11\x96\x92\xb0\xf6tI\x85\xb5\xc1\xd00u\xeb\x9e\xd7\xa8\"\x05\xa17Zy\"\x9c\xb3\xdcV\xbc\xdel\xf5)\xb8\x94\xa42{\xd4\xa98\xe6\x0f|\xd3\xbd\x92\x06\xb3\xd6z\xe9\xb8\x08%i\xe3:\xa9\xd7\xd5\xca\xe9M\xcb\x1d\x8fp3k\xfbk\xa1\x94\xae\xd7Z\xcd\x80\x10v\xe15d\x8evE\xb6\x0b\xc0\x0f\xef\xfe\x84\xf8^\x07\xc8\xc2\xcc\xdf\xcb\x85\xe4\x15Y\x9d\xea\x0e\xa8?\xf4g\xabRc|\x15\xc4\x0b\xdf\xbe\xbb|\xd3\xec\x17N\xdc\x82\x8a\xd9\xca,Q\xaat\x85\xda\xe12Q\xdb\x06\x15\xba\x02\x81\xbe-\x1a^\x9by7`\xa7\xab\xd4Q\xb2\xa27du\x82\xe8\x82,T\xab\x1ab\x89\xd3\x80*\xb38A\xcbZjB\x83 E]\x99j\xfa\x12l\x8ax\xd8#\xd2\xfdA\xf5\xbc\x81mp0\xc7;\xcb\xb2\xe9&/\xdb>\xe2I\xcdm\xae}5W9\x0dKX\x119r\x9b\x1f\xdd\x80\xc4&\xe2\x8a\xc86\xa6\x93\xac+Fl+\xeb\x8d<\xb9\xd95\x105znxD\x88W\xfa\x0dOb\xcd\x9eEc\xf7f*\xf1\xd5\xd9t\xe3!\xf6r\xb3\xbb\x1aO\xdbmj\xe7\xben\x8e\xc0\x96bl\xeb\xb4\xbcG7;D\xeeHQ\xab\xca\x0cR\xd9`qU\x0b\xdf\x0c\x9c\xa5\xf58 \xdb\xabw\x97c\xc3\xc2\x10h\xcbo\xd1\xae.\xb6\xda\x92\xa2\xe6b\xd5\x83\xeb]3\x03xR\xe9t\xca\xde\xd3^\x07\xffQl\xdc\xb4uyw\xc0\xeaV\xba\xfaQlN\xdbW\xfa\xc1\xbd\xda\xbe \x14\xef\xc1S\xa0x\xe7L\xa5F\x80\xe2\x0d\x14o\xbf\x00\xc5[\x0bP\xbc\x0f\x05(\xde@\xf1\x0e P\xbc\x81\xe2\xad\x05(\xde@\xf1\x06\x8a7P\xbc\x8d\x00\xc5{\nK\x1a(\xde@\xf1n\x05(\xde\x87\x02\x14o\xa0x\x03\xc5\x1b(\xde@\xf1\x06\x8a7P\xbc\x81\xe2\x0d\x14o\xa0x\xb7O\xa6\xb4\x03P\xbc\xfb\x14o=\xde\"a\xe1.\xf4\xf3\xe6\x925M\xbdh\x86\xa8j\xdf;\x95\x12\xda\xf1U]6\xa6\xae>\xcb\xfbfg\x12\xf9\xccU\xf0\x89\xf2\xbc\xbb\xaa\xe8J\xbf\x8b\x1b}\x98qj\xbaDS\xfd\x8ef\x0e7:\xc1\x02\xa1$dLnvW+\xc2\xf8.\x8c'G\x8d\xa59\xd6\xc6N.]B\x96\xde\xbc\xf1k\xc2\x90~D\x99YK\xb5\xf5WrT\xd5!\xe3\xba\xfa\xf0\xcd_~DBb\x194#k\"\x85\xc1\xac|;C\xc2\xf0\xb2$WEE\xb0\x0c\x98\x8ae\x92\xa4\x97\xe2C\xf62A\x92o6%\x11\xa6\xd8\xdd\xf2Y\xd8\xdcb\x84\xfe\xa4nv\x8b3\x93\x8c\xb3>F*\xd5\xb8U\x0ce\xbe*iX5\xabB\xba\xe8\xad+\xc6Pb\xd5\xb9\x93\x15\xbe\"t\x1f!;\xc4\xc8\xe9Qjz\xb2g\xfbg\xbf\xbeXm\xb5\x05\xed-\xb2\x9dS\xcc\x9b\xf3\x0b\x81\xec\xa5zZ!\x9c\xad\xa9/_\xb3(\x14\xfaq\xa0\xd6\x89\x16\xea\xa6\xd0+\x8e\x1a2fq1\x0f\xed&+\x90L;\xdfDt\x1f\xe4\xa9\xa4\xa6\x1d%[\xbeS\xcb\x19^]\xe9\xf5,l\xbf\xcah\xaa\xb4Z\xd0a\x8eH\xdcRYl\xd1sFK\xc4\xb8j\x9f\xeb\x13\xf4\x05\xfa\x06\xe1\xb2\"x\x15\x03A\x9b\xa4B\xc6\xa8\x15\xe6W*\xc1G\xab\\?CT\xf0\xca\xacg\x06\x83\xbd\xdc\x92\xef^\xbfC[\\\xad^\xaa\xb7l\xdd#\xe9\x99d\xba\xbaIV\xd5B/\xa9\xca\xc6y\xcf#k\xeb\xe0\x1e\xd7\xd3o\xb7\xc4\"\x95\x96^\xea\x00!\x81\"\\\x0d\xb5\xafP\xdbK3Rz\x9a\nM\x84j\xb7\xf6\xc5\xa3\xb5n/;5\x9d|\xf9\xf5\x17C\xcf\xb8?a\x81\xf6\x15-\x88\x83\xbb#\x96X\xf4\xdc\xe3s\xe5X\xad\xa7j\xbar\xbeV_~\xfd\xc5\x0b\x9ba$\xb9?\x7f?\xa2\xc3\xd8\xca\xc4\xbc\x11\xe6W\x9d\xce\xcdi\xee\xcf\xdf\x1b\xca\xefsF\xc8\xcaB\xecf\x0f\xad\x8d\x87\x91\xd4\x8a\x92\x1aF\xb753n\xac\xd2[\x96ApJ0\x1b\xfc9\xbb\xcc\xe7\xbd$M\xe5\xbe\xfeV\xb7\x83k\x90\xcfc\x85\xf9\xb7\xf9\x0b\xf3o\xbd\xc2\xfc[\xb2\x1c\xcb\xfb\xbfc&i\xbd\x9b\xb3(\xd1\xfe0\xcc\x11}\xeb~p\x0b\xc2aO\x8e\x19\":\x0b\x06\xd2\x9e\x8e6\xb5P7(\xb8\x06\xb5$e|_\x92G\xab\xb67[t\xd6\xfb\xf5P\x01\x91\x04}+&\xc2\x85\xa47X\x86\x07\xc1^\xef)\x96u\xb5y\xb4\x9a\x1fd\x89.\x9a_<M\xae\x0d<\x11\x9a\x1b\x1a(-TS\xaa\xdeY\xd6\xe5\xa3\xd5s\x90!:\xb7\xff\x8etk\x14\x9b\xd3{\xdd\xda%\x1e\xaa\xed\xae\xa6\xd5\xd5\xa6\xc4\x05%\xd5\xa3\xd5\xd8\x93)zC\xf7/\xbf\xfa\xc3\xbf\xfd\x11=_\xf2\xdd\x12\xadH\x89\xef_\xf4T\x10I0\xb8\x15Lw\xec%\xa9J\xca\x1e\xad\xea\xbd\xec\xd0\xb7\xfa_\x9e\x86\xfe\xa6W\x9bHz\xdd\x19L'\x16\xaag\xc9\xd9\x8a?^={\xd9\xa1\x1f\xf4\xbff\xaa\xa7I:TO\\U\xfc\xf6\xd1{\xb4/W\xdd\xa5\xff\xf8\x87?~\xed\xeb\xd2\xb1.\x12RO~\xa7\xdeT\xf8\xfe\xd1u\xe0\xc9T\xed&^~\xfd\xe5\x1f\xfe0}TOU\xc1\x8eT\x1br\xc5\x88\x14\xfb\x92\xcaGS\x827[\xf4\x17Z\xc9\xda\x10\xf0\xaf-~}\xb9%\xe8G\xf52\x92<\x92^-\xd4\xa2\x860bD\xde\xea\x03\xa0JW\x06X}\x08 \xb5\x97\xddb\xfah\x15\xeeg8\xd3\x10w\x89\x06\xf7b\x98\x15\xf5\xe3Mf\xdd\xec\x925\xcc\xb0Bpf\x93\xf4\xd7/\xcf8{\xb6\xc5\x94\x9dy\xecE\xce3\xb6\xfbB\xc2,\xa4\xfa\x99: \xfd\xb3X]/\xce\x99t\x94\xcb\xc0\xcb\x94i\x1b\n\xe2k\xf4\xcfK\xbaQ_\xf8\x8c\xb5\x9a#\x7fU\xb3}\xc5\xa5\xf6E\xbb\x92wQ\x9b`\xcc\xc2\x90\xa7\x14o\x96\x8dz\xe8\x1aUd_\xe2\xfb\x97\xcds\xf4\x9c.\x08bA{\x9a9\x9b\x85\x14!\xe8\x86\x91\xd5\x8b\xae\xfb\x9f\xd0\xae\x1eKb]\x1c\xc9\xcay9\x18s\xeb\x0e\x17[\xca<\x0c`\xdb\x0f/\xba`Bk\x00<@\x13z\xdf\xc7u\xa3\x91\x1e\x93\xae\xd7\xe9\xb0\xe7e\xa8\x8f\xd4\x1a\x80R\xfdA#9\x83\xe4|\x88\x06x$\x0e\x9e\x82Gb\xaaW\xb6\x02\x1e\x89\xe0\x91\xe8\x17\xf0H\xd4\x02\x1e\x89\x87\x02\x1e\x89\xe0\x91\x18\x12\xf0H\x04\x8fD-\xe0\x91\x08\x1e\x89\xe0\x91\x08\x1e\x89F\xc0#q\x8aS\x1fx$\x82Gb+\xe0\x91x(\xe0\x91\x08\x1e\x89\xe0\x91\x08\x1e\x89\xe0\x91\x08\x1e\x89\xe0\x91\xf8{\xf0H\xcc\xf7\xa5\x12\x92WxCN\x7f\xb1\xeeo\xbf\x9e\xferM\xee\x7f5\x1f\xfb\x9c\xab>\x98\x0fz\xdeUK\\\xaa\xad\xab\x9ek\xcb\x12\x15\\\xcdXJ\xd1\x18 \xca6%A\xb8(x\xdd\x82\xb0=g+\x9b\xa2}\xf4d]\xad\x02\xa6\x96\xa8\x91%m\xa10KR\x17\xed\xb4-b\xe1X\xf3\xdc\x84\x11\x16\x82\x17T\x9f\xba\xb5\xf1\xc1?\x1c6\xf4\x860tM\x06\xe1\xad3\x10X\xdb\x0e\x0d\x04KC\xe8\xab\xfaU\x7fq\xdao:'\xef/\xce\x86c\xc7\xecW\x00\x8f\x05<\x16\xf0X+\x80\xc7\x02\x1e\xdb\n\xe0\xb1\x12\xf0X\xbf\x00\x1e\xeb\x04\xf0X\xc0c\x01\x8f\xcd\xdc%\x01\x1e\xdb\x08\xe0\xb1]\x01<\x16\xf0X\x8f\x00\x1e\x0bxlJ\xf9\x80\xc7\x06\xbf\x01<\xb6'\x80\xc7\x02\x1e\x0bx,\xe0\xb1=\xc9\xc5\xc6\x00\x8f\xd5\x02x\xec?\n\x1e\x1b\x8d\x10\x1b\x8fO\xea\xc2\x92\xba`\x9e\xceyvK\xee\x9ag\x92\x1b\x8fHt\x88\x1f\xae\xf9A\xf4\xce\x01P\xd0\x06\xef\x94U\x9d\x8c\xdd\xe9J}M\xeeC%\xbe&\xf7=@S\xfd\xdb\x9d\xb2\xbbe\x9b\xafX\xf9p\xb7\xacp\xd1\x0b\x8d\xe3\x83\xb8;\xa6\x8bK\xf5\xbe |4\x08\x8a\xf5\xd3\x8a,\xeb\xcd\x95l^\xf8\xf6\xfe\xad\xbe\x9a\xfc\xa7\xde\xa5\xbb\x9e\xd7\xfe\x8c\xc5\xf6'\x17\xd1\xd7\xbe\xd8\x03\xc4\xdbL\xed\xd3'\x8b\x89\xfb/\xc3\x8f\xda\xb9r\xee\x9f\xd5\xd7\xca\x0e\xe1\xe7\x8e\x85F_\xf4+\x07\xf6\x14\xfb\xadn\xfbV\x83\x07\x0e\xc5\x9d\x16uI7\xc9\x00*=x\n\xa8t\x9eU\x13\x01*\x0d\xa8t\xf0M@\xa5\xb5\x00*}(\x80J\x03*\x1d\x12@\xa5\x01\x95\xd6\x02\xa84\xa0\xd2\x80J\x03*m\x04P\xe9)\xc0.\xa0\xd2\x80J\xb7\x02\xa8\xf4\xa1\x00*\x0d\xa84\xa0\xd2\x80J\x03*\x0d\xa84\xa0\xd2\xbfwT\xda\x00\xa5\xe6B\xaf\x85\xfeG\xf7\xb8\xdb;S\x9b\xa7\xdaL\xe9\xda\xe5?\xf1\x0d6o\xd8\xa7C\x0c\xfa\xc8\x1b$\xfd\xa5\xa4;\xc2k\x19*\xe6\xe0\xe8o\xdfF\xfc\x86T\x95>(\xcb\xce\xfd\xa5\xcd\xd35\xfa\x1a R\xe8\xeb\xae\x86\xc6mu\\\xfa\xa03x\xa9\xad\x92\xba8\xaa\x98\xbd\xb7\n\\\x96\xe21\xea_\x11rG\x8a\xcc\xea\x9b\x97{8=\xd3\xf0\xb5\xaa\xb2\xc6\xc7\xedj\xd24\xae\x1a\xd3j2\x96\x1cm\xfa\x01\xe1\x97\xb8\xb8\x9e\xb9\x82\xc9\xeb]{5_Q\xa1o\x0f\x14\x12\xf7\xe2\xf5\xf7\x14\xd0{\xc9\x06I7\x97\x0c\x16\xd7\xa8\xc0{YW\xe4\xd8Z\x0c\xe3\x83'J;t\x9e\x0e\x94\xd7r&\xda\x12\x9b\x1f\x1e\xb5\xccdYo\x82%U\x0f]Tqw\xcd\xe6\xbe\xa2L\"^\xcb}-\xd1\xaa\xd6\xeb\xb8-1\"\xec\xe8\xeb\x80\xb3J]\xd2\x1d\xcd\x9d\x0f\xf4\xbb\xbd\xf1\xb0\xc3wtW\xefPI\xd8Fn\xd5\xb80\xb59A\xcbZ\xa2\xbf\x93\x8a\xa3\x1d\xc1\xaco?\xab\x99N\xe8\xf8\xfb\x8e\x0f\xe1z?P\xef\xadx3\xa9-\x06W\x13\x86\x941\xf6\x06\xc3\xce=\x85\xc7V4gjk\xeb\xd3\xbf\x8d0\xb3m']a\xd8\xbf\xd6\xa8\x97\x9e\xbe\x83\xee\x13\xd5\xdb\x9as\xc7\xd6|\xd4u\x86\xddK\x0b{\xc9\xf5\xf4t\xac\x02\xb2\x86p\xab\x81\xeeM\x85\x99\xb5\x9f\xe1r\xc3)\xd7\x19\xf6/-\xec%\xe7.0<Vw\xe3:O\xe7\xa6\xc2q\x9a\x1bs\xb7\xe1\xf0\x06\xc3^z\xbe\xdb\x0c?\x81\x0e\xbe\x8ew\x9f\x8ck\x0f\x17\x9f?~\xa9\xff-\xa7\xd4\xa1\xfb\x11\x1f\xb9\xc0\x83K\x103\xbb\xdb\xa4\xab\x13\x07\x17$\xfa\x13|\xe4^\xe6\xbb\x0c1S\x07\xd3\xeeQ\x0c\xdf]tx\x11\xd5\xe3\xaabx;b\xa6\x1af\xb8Tqp\x8d\xe2\xe3V\xbb\x7fYbf\xa5'\xdd\xb0\x18\xee\xfd\xcd\x9d\x8a\x8f[\xf5\xc3[\x133\xab?\xed\xba\xc5\xc8E\xaa\xfe\x8b\xd8\x1eW\x1b\xdd\x8b\x143\xf50\xe9\xee\xc5\xe0\x14hn[|\xdcJwoU\xcc\xac\xf4\xa4\x8b\x18C\x95\xb6W/>n\xa5=w+f\xd6}\xf4\xad\x8cC\x8d\xf4R\x8b]B\xf8\xb8\x1a9\xbci1S!\xd3\xaeh|\xf2\xfa\xf0]\xba\x98\xa9\x91I\xf756\xb72\xf6\x92\x1a\xde\xd0\xf8\xb8:\xe8\xdf\xc3\x98Y\xfb\x91\x977\x86\xa6\x85\xe6\xba\xc6\xc7\xadr\xf7Z\xc6P\x85']\xdd\xd8\xb9\xa0\xf11jD\x98\xb6D\xee\xc8\x8e\xf7\xd2\xeeU\xa4\xf7Rk\xad\xb4\xff~Lc\xa5-IEd]\xb1\xab\x15\x968Q\xe6\xce\x9bm\xc15\xccd\x0d\x96|\x8d\xcc;\xda5\xe9Q*a\x0c\xefW\xff)8\xb3?\x85*q\xf8&2\xff\xab+\xd23\xe2\x9b+4\xb1A\xcdL\xbb\x1f[\x95@\xef\xd1\x1d\xf8\xca\x00\n\xa1bw\xdfi\x1c9TAW\xf6\xe0:o\xd1z\xf6S\x0f\xa0`\x8a\x133\x91\xb4o\xa0\xe7[r\xf7\xe2\x11\n\xdd/\x9c\xa4\xbb Z\xd0\xbe\xf1\x08\xc5ju\xb9\xc2\x92\xbc\xec\x95\xcb\x15y_\xf1=\x17\xa4\xbaJ\xf8\xb7\x0e\xdfs~\x7f\xee\x9f\xb66\xaa\x84D\xc8\x07\xafP\x8f\xe2\xec\xeaRl1eWt\x15\xaa\xc3\xf0$o_o|v\xb5U\xc9\xfc\x8c\xe8\n\xedq\xa5i\xec\x15\xdf\xf9\xea\xd6K\xcb\x18\xd8\x1e\xac\xba\xdd\xb10\xd6\x8bV\xde\x85]h\xb5\x97\xe5\xe5]\xcci\xf6\xb2\xbd\x926\xed\x0d{y\xf7\x99\xab)\xb8\xc2\x8ew\x85\xbd\xbc\xf3\xfb\xc1^\xde\x81\x13\xac\x16p\x82\x0duR#\xb1\xe9\xae+\xe0\x04\x0bN\xb0~\x01'X-\xe0\x04{(\xe0\x04\x0bN\xb0!\x01'Xp\x82\xd5\x02N\xb0\xe1>\x0dN\xb0F\xc0 \x16\x9c`\x93\xee\x8f\xe0\x04\x1b\xd1\\\xe8 8\xc1\x0e\x05\x9c`\xc1 \xb6\x15p\x82\xed\x088\xc1\x82\x13,8\xc1\x86\xc4\xda\"\xc1 v\xf0\x018\xc1\x82\x13\xec\x13s\x82\xdd\x89\xcdB\x13>\x1c\x82\xd2I-v\xa2\x9e\x8a\x82\x1c4[\x08\xf9\x98\x82v\xf8P\x8dIHF\x14\xb1\x98\x8cRLD&\xba\x08D/\xbd\xc3C\xfb\x04\x04b\x12\xea0@\x17\x86\xea\x19 \x0dS\xd0\x85\x01\x8a0\xcc\xa1\x9f\xc1T\x14\xa1A\x0b\xfa\xc9\x1flI\xa6\xa0\x05!T\xe0($ \xcb\xfa\x9fk\xe5\x9fl\xd9\x9fj\xcd\xf7[\xedg\xb2\xd4\xcfi\x9d\x9f\xc9\"\x9f\xb2\xc2O\xb3\xbcG,\xec\xe3\xad\xeaQ\xeby\x86\xc5|\xaa\x95<`\x0d\x9fh\x01\x9f\x81/t\xb0\x1e\xea\xd1\xd1\xf9*\xb6\x18N4v\xb7F\xedC\xb5\xcf[\xbb\x04\xf9KUZ\xd0\xbf\x07\xab\xab\x9e5L/Vp\xb5\xd3k|\xf6\xd5\xb3\x96\x8f\xe7\xf8N\xe8\xf9wo.\xde\xbf9{}\xf9\xe6\xbb\xa3 \xbc\x07,\xcb\x86\x9b\xc7\xebe\xe9\xafO\x8c\xe6\xa8 \x8e\x9e2S\xa6\xef\x9c0\xa9\x1f[\xe8H\x07[W\xbd\xddx\xacki\x06\xdd\xf0b\x0cA7\x8cT\xed\xbd\x19\xbdb\x9b\x0d\xd2!%\xb1\x99\xf0\x05*\xb6\xa4\xb8\x1en\xb8\xf0F\x1d-\xa5\xe9\x9e6\xe5\x15\xa9\xe8M\x97\xc7\xa7r\xc6\x9a/\xfc\xfc/'\xe8\xfd \xfa\xf0\xc2rn\x0f\x17eR\xec\xbf\xfa\xfa_\xaf\xbfD\xa4,U\xed\n5\xa1\xdd\xcc\xdd\xb5#\xcc\xe2\x90\x8a-W\x18\xa2\xb9\xe8\xe2P\x88\xe62C\x05!\x9a\x0bDs9\xbe\xd4\x10\xcd\x05\xa2\xb9\xe8g\x10\xcd\x05\xa2\xb9@4\x17\x88\xe6\x02\xd1\\\x1e\xba\xc0\x10\xcd\x05\xa2\xb9@4\x17\x88\xe62\xaa\xfa\x10\xcd\xc5\x08Ds\x81h.\x10\xcd\x05\xa2\xb9\xa0\x8e@4\x17\x88\xe6\x02\xd1\\F\xd9\x0c \x9a\xcbo1\x9aK\xd5\xc4\xb4\xe8`\x883\x97o\xd6\x90.\x8fT\xe6~\xd9\xf2#\xba<F\xd9\x1e#\xac\x8b\xfb\xfd\x1f!\xae\x8b\xfcG\x8c\xed\xa2I\x1aX\xf2\xea\n\x17\x05\xaf\x99<\xfd\xa5\xe0L\xb8v\xfc5\x1c\xf3\xa5\xa3\xad\xbf\xb8D^\x9b4t\xa5(\xd1N\x85o\x1cPo\xd3\xff\\\x18mY~\x88\xfa\xaaIG\xe5L\x98\xa8;f\xdc\xd7\xa6\x1cNk\xbdP1\xc3l\xed;O6f\x8c\xd5\x80\xd3\xed\xa8\x08#\xf1\xaejd\x90\xbe\xeb\xb7\x05\x17;.\x86\x11\x96\xec\xcb\x9a\xf3F\x8a\xedA\x18\x14\xd4t\xad\xc5\xe0\x89P}\x9c\x15\xe3\"\xa4\x041a'\xbd\xea\xb9,\x9a\xe8PM\xdfi\x9e\x98\xb5gX6\xa7\x02\xf3t\xde\x12\xda0;\xfd,\x06%<\xa4\xe7\x0cj\xf6_\xc3\x86\xd3Cs\xd8\x93\x9b\xf0=\xc3P@\xaa\xfc\x86\xb5v\xc0\x1d\xd4 \x9d\x1e\x0c\xc5\xf7\x17g\xd6'\xa6\xd5\x15\xc4\xfc\x19<\x85\x98?9\xf3\x8b\x91\xa9l\xf7`\x82\x12b\xfeX\x91S\xd9\xf4]\x99\xc8\xac\x0f\xa6\x071\x7f \xe6\x0f\xc4\xfc\x19\xef\x19\xd0\x95\xa9^\x02\x91\xf9\xc9\xb3\x03\xe8\xcaL\x9e\x04]\x99\xd3\xab\xa0+3y\x18t%\xe5m\xd0\x95i\x9e\x07\xd19\x1cb\xfex\x04b\xfed\xb8A\x84'l\x88\xf9\xa3\x05b\xfe@\xcc\x9fd\xb4\x17\x88\xf9\x13\xd1\\\xe8 \xc4\xfc\x19\n\xc4\xfc\x81\x98?\xad@\xcc\x9f\x8e@\xcc\x1f\x88\xf9\x031\x7fBbm\x91\x10\xf3g\xf0\x01\xc4\xfc\x81\x98?O,\xe6O\x17\xec\xee$\xd4gyu\xdeq\x88\\\x03^\xeb\xa7\x0d\xb8*\xb9\x01\xf4Q\x17\x13\\\xf3\x03\xd4\x7f\x00\x17\xb4\xa0\xbf\xac\xea\x04\xe6\x9f\x81\xed\xaf \xd9\xe1\xea\x9a\xc8\xd3\x9b/O\x97X\x90\xab5!a$\xff[,\xc8\xf7\x844\xa8\xbd\xb6\xaecA\xd0\x9a4'\xf4=\xae\x08\x93\x96\xdcf\x7f\xb3\x96\xb1>\x95\xa3\x87\xd0\x7fO\xc8\x8f\xba 6\x8b\xcf\\u\x9f(B\xdf\xd7UW\xa2\xd6#\x8b\x0c\xbb\xaf]\x1f1.H\xff\xbd\xd1e\xef\xbb^\xfdt\x1bZ\x1d5\xd8\xaf!\xad\xf9\x93\x02,\x17\xb0\xdc\xa0!\xf3\x01\xcc\xa0\xa3'\x1d\xcdf\xdb`\x11\x99u\xd4+\x7f\xc2\xa27\xedl\xb00f`,\x11F\x1bzC\x98\x9ds\xb6\x84n\xb6N\x9d\xbdI\xc6%d\x9f=\xd9\xc9\xa5\xd1FW\xa2\xcd\xe1\xe7;6\x9f\x9aYG\xa9\xac\xa1\x89\xa8\x19\xc3\x91\xcf\xd4\x93\xdeG\x9e)\xc7\xaa\xee`\xcei\x12h\x91\x08\xd7\x1c\xa6!`\x02\x82 \xe8)O@z\xcf\x17\x99}.\xf4\xf3\xde\xdc\xd3n\x13\xd5\x06\xe7\xaeM\x0f\xed\xf8\xaa.I|\x87c\x12\xb4\xaf<\xd99\xa8\xab\x96\xae\xf4\xc9\xbcF7&\xda\x809n\xdd\xec\xac\x12:Z:<xG\xfb]\xbc\xd71~\x15\xde|\xa1&\xed!\xfb\xbe\xf7\x86\x99\x0f\x83\xa0\\'\x0b\xd5\xc3\n\xd2l\xad^\xf6\xf6Vj\x13\xffE\xd7Q>\x90\xde\x17.\xf4\x00.K\xe1\xb3M\xba\xdc\xae\x0c\n}\xb5\"\x8c\xef(S\xa7\x86X\x1dCs\x0eJ\xae\x08(\x13\x06\x8c\x16\x0d-y\xcd\xec\xf1\x13\xef\xf4\x01\xa6{ \x08$X`\x87\xe2\x87\x0e\x8aK\"o\x89[\xce\xbd\x00.)\xb1\x90\xb4\xa0\xf2\xfejW\x97\x92\xeeK\xea\xe3p\xa2G\xd5\x94\xb7P]\x1d\xb9H3j\xb14qh\x02\xfd\x13u\xba\x9a^^w8HI\xda\xe2\x1b/\xc8k}^\xcc\x1a\x1cSMd~\x9dM3\xdd\xb24\xb1I\xb0\xb4F\x8c\xee\xb6-\xaf\x07\x95E]\x1a\xbb\n\x156\xf5\x95O 9\x13E\xa4\xfe}\xb7\x8b\xce\x8c0h\x1fo\x1f\xddQ\xa6\xb6\xb5Wz\xe8O,@j\xa2\xea\xe5\xd1\x8fjDY\xd3\xd7\xccSc\xc4\x0dOR\x8e\xfc\xcdV\x88\xc8m\xd7\x9b\xc4\x87\x87\xbb\x9c\xf3\x86\xdf\x0cU\x0c\x0c\xa9N5]H\xaae\xb0\xdflq\xb5 \xf3F%G\x82\xb0\x95Z\xd5\x9b\xc0\xab\xcdP=\xf8\xc6\x96\xfb\xa2\xbb\x02\xdae\xe2/?\x1e.\x81\xbd\xef\xe3\xa3FoXL\xba\x07\x97\xb3J/\xc5[\x1b\x92(\xdb\xa0\xbbSr3\xb4^\xfa\x96a\xd8\x89\x0f\x9e\xc2N\xfc1w\xe2\x05f\x92\x9fr\xb6\xe4\xb8ZQ\xb6\x19\xb1\x0d\xaf\x88\xac(\xb9q\xcc .q\xa9\x99\xac|\x8d\xda\xf4<}\xbe\xb7\x15\x7f\xd7\xbc\xf9\x8f\xba\x17\xf7\x9dS\xf4|\xd9;\x9f\xb4r\xc4~\xdc.\xee\xad\xf6\x8f\xdc\x95\x9b\xf4\xba\xady\xfe\xed\x19\xda\xd1\xd5\xaa$\xb7\xb8\xf2M\xee\xb8\x96\xfcJ\xdc\xe2\xfd\x95\xdcVDly\xb9\x9a\xb4\x1a\xddn\xa9$%\x15\x92\xac\xf4v\x97\x11\xdf\xf0F\x89!\x8eb\xc3\x1c\xa5J\xd1_W\x0c\xbe\xd3iG\xeb\xd1\xd3U\x8fi\xd3^B\xe3\x17\x98\x98\xfb\x90u\x18\xb2Ez\x7fq6H\x0f\x9c\x86`uyr\xabK\xc1)SS\xc2\x88\x85E\xdb3Ssfo!9\xb3\x99\xfc\xb6\x97\x91#&\xff\xa9g\xab=\xe7\xe5UQ\x11\xad\xc9\xd4 -\xd8mS\xa5CZ\xd3\x8c\xefB\x0f\x93\xe5TbL\x1bG$\x91wHV}\xa9=\x1b#\xc9\xaf \xb3li\xd4\x18]\xd4\x91W\x9d\xd00\xb3\xc5\n\x13\xf3\xdf\xbe\xbb|\xf3J\xd3{\xacm\xc6\xf0d\xa8&s\x9f3w\xf8\xee\xc7\xc9\x0c\xa4e\xc9\x05f\xa2\x0fe\xd8D9\x17\x0dJ\x8d\x96\xf7h\xc37\\\xe3\xf6\xbeC\xb2\xc4wW\x15\x96\xd3:\xd1\x0e\xdf] \x89\xd9\nW\xab+5\xde\xaf\xf6\xa4\xbaR]kzrj\x13\x11k\xf0\x19\x16\xfeHw\xce\xe9\xd0\xc9.\x9d\xac\xa8\x91T\xb7\xceJ&\xafk\xcf\xdf\xb9\xe7\xed\xde\x99\x1d|J\x17\x0f\x98 t\xfd\xcd\xc2\xf2\xb9\x98\xcfL@\x05\xec\xe0\xb4\xc0\x0e\xce\xf3\xf9ov\x07\xc7y\x19\xd9\xc0\xfd@\x7f\xae\xe9\x8a\xca\xfb\x0b\xf5^\xb3\x91\xd3n\xbd[\x82J\xf7Xo:D\xeb\x9bg\xd3\xe9m\xe8\xfai\xd97\x9e\xee\x86\xaeULW>E\xff\xa2\x81\x13wF\xdfP\x9a\xe3\xb7\xe1X'F\x92\xc9\xb4\x06\x04\x9d^\x97S\x87Vd\xcf\x85\xf6\xd9\xbe&^s6Bn#\x01k\xf7P~\xb7k\xb7\x11\xdb\xabv\x982[\xf7%.1+\xfc\x05\xd2o@\x1f\x1a\n\xf4\xa1RS\x88k&I\xb5\xc7\x95\xbc\xcf\xe8K\xe5>\xd8<\xd0\x93~\xdf=\xa9\xdd\xd4\xa4\xbbQ\xd0\xba\x92\xd5.\x07\x19\xaaM\x87\x07\x9c\xdf\xe3\x8d\xd5|hC2\xc9\xc0\xc4\xc8\x9d\xbc\xba&\xf7\xe1]m\xb4\xfcI?\xfd^\xb7;\x08\xb9\xe5\xc4\x95\xc2\x99\xc9\xd5\x9f6l\x05\x16\x16v\xbe\xc0\x1b\xf2\xde\x04\xf5[\x98\xe7\x81\xc4Z\xda\xbfJV)\x8e\xa0\x1d\x17\x12\x11\x1d\x0cBG\x90X\xa0s\xd9\xf1\x19\xd9\xcb{DCq\x91t\xd8<\x1d)\x84q\xb4\xe3\x15q\x91A\xbc\x06\x17.\xf14\xf3H2\xea\x19Bi4\xdf\x00vJ\x8b\xfa\x8fnXP\x13\xcc\xa4\x139#T\xdf\xae\xa2M\x805\x9dXh\xac\xddb\x81\x04\x91'\x88J\xd1^\xe6W33\x87\xacL\xd8\x8a[*\x0e\xfbGzJ2E\xe9@(\xbc\xe7\xe3C\x19\xda\xbc\xbf8k\xcf\xe4\xf6\x18\xa9\xef\xe5\xf1\"Y\x81\x10@\xedUF\x94m\\\xe8\xc8\xc6\x1dg\xeb\xc8\x0f]\xcdx\xd5\xe1\xbe\xf8\xc0wm\xb9\xa3\xce\xa3\x15\xd9\x13\x1d\xb0\xe0[\\5\x8d\x94\xf0Q\xeb\xabE\xf7\xef\x90\x97Z\xdf\xfd5\xd4{\xf4\xc1\xb0\x7f4K\x9a<|I\x9c\x0e\x8e\x8a\xef/\xce\x86j\xb2\xf3\xb6\xfb'\x18B\x0e\xf4\x03\x86\x90\xd9\x0d!1\xb7\xb3v]U\xabJ\xa8\x1f\x0eV.\xbbTa;\xdf5l\x7f\xcazcs\xd1\xackz\xe2\xda\x0c\x82\x155\xb4\xa2\xd4Z\xf5\x8e\x95\xf7:\xf4\x18_#\xbe^k>F\x85\xfa\xc5E\x9d\x18r\x82\xcc}Ol\"\x9eoG\x89\xa6|!=\x0e\xa6\x1e[\x19\xadJV\xefHE\x0b\xf7\x9bv\xf2\xec^\x86x\xbb%\xcc)\xbef\xcd:6\x98\x88\xcfuj%\x11\xa2U\xa1\x89\x99d\xc2v_\x93\x91\xfa\xec'\xff\xc0\xca\x0d\xdc\xd2\xd9Q\xef\xf8\xbb\x18i\x97\xcas\xb8!0Kj\xb7\x07[\x9eB]\x0efM\x13\x0b\xa8\xfb\xd3\xf9\x1a\x95d-\xdd\x06\xca\xee\xa8\x9a\xcb_y3@L&J\xcf\xcb{Dp\xb1Ex\xbf\xff\x84Z\xecnk\xda\xefc\xba\xec|\xa14\xaa{(\xd7>\xa2\x9a\xd8H\xd9\x8a\x16X\x92&\xc4\xa1\xd5\xa0~\xd1v\xa4nr\x94\x15e\xbd\x1a\xecE\xb0\xc9\xa5\x8919h1=cw6pj!n\xeb4\x8c\x84\xf6\xf1\\\x0cZkP\x05\x1d\xa2A\xad\xa5fm\xd5\xc3\xab\x1d\x8fj\xc8-\xech\xa2\x1b\xc6\xabA\xe087\x1a\xfbY\x18\xcd\x1c\xdb\xb0\xa1\xc0\xfe\x9d\x06\xac\xc8\x0d\xa9z\x9f\xc6\x1a\xcf\xbe=l8\xda\xd9\x16W\xc4?\x12z\xe9\xa8<\x88\xd9#\xf2JG\x10\xefW\xff\x03e\x856C\x88\x1d\x17/\xc5\xea\x1a}\xb1\xf8\xe3\x1ff\xd5\xc6(\x9b\xfe\xe9/\xe5^\x1a\x8f\x82H\xf8\xf0\xce\xda\xd6\xdb\xbf\xf5\xdc^\x87\xe7S\x8b{\xb9\xb0%M\nM\x86\xf6\x97\xb0\xf5\xdf\xbe\xf0\xa4\x8d\xff\xb3\x1e\xb5C&\xfc\xc4\x9e&\xc7|\x9f\xdc\x16\x1da\xba\x8f\x1b\xee\x93\x86\xb2\xd4~1i$K\xd6-m K&\x91>\x89\xa2\x070\x8d\xcdi\x18\xcb2\x8bM3\x8a\x8d1\xd0G\xcc\xf3\xd0S~/=e\x94\x19>h\x84\x87\xfe\xf2{\xe9/\xf9\xc6\xf6\xa9t\xc8\\3{\xbe\x81l\x06\xfb\x18\x98\xc7\xc0<\xe6}\xfe\x94\xccc\xc3\xfd<z\xc0\xb0ItY\x9c\xe2\xfd^\x9cj\xdf\xc85\xa9No\xbe<u~\"\xa7\xbf\xd8\xbf\xae\xe8\xea\xd7S}\xc5\xfe\xe9/\xea\x7f\xfa\xdf\xbeMr\xe2\xaa\xa47\xfa\x13{\xabQ\xef\xac\xe3v\xc9\xf6\x91 \xb9\xa1V3Z\xd4%\xae\x90\x0en\x8cY;Lm\xc9\x10]yY\xec\xbd\x9c\xec\x0bO\xf6\xd8\x93:nD\xbb\x98\x9d?\xbbJ\xb4G\x8d\xc3\xc0^\xa9\xb5Qw\x8b\x9e\xea\xe2\xce4\xdeH\xcf\xfdF\x86\x1bx\xac\xc0\x14\xfb\x84\xa6\xd8v^\x0b\xf5As\x9fOg\x9a\xb1\xb7\xfat\x1b\xf6\xc8I\xb9ce3sj\xa2,z\x0e|\x88\x82\x8c[\x1d\xf4\xd2\xa4\xef\x91$\xe2\xf4\x17}Ag\xc4\xd2\xf5\x9dz\xfb\xcfXl\xdbk\xf1\xfa\xdbk}!%e\xa6\x01;\xf7<\xf6\xa6\xf3&\x95\xcf\\\xed\x9e\xe8T\xaej3j\x18\x0f\xca\xa9\xb5\xf1\x9c2\xb4%w\xb6S\xbfh\x03\xcev\xd4\xa6\xf5\xee\xd3\x9b'Q\xff<\xdf\xe84\xcba\xd2\x97\xc2i\xdb\xb8\xc1}5\xcc\xfa0\xeb?\x95Y_\x8f\x99P\xf7\xbb\xf4\x8f\xb0\xe7\x7f\xb5\x93\xf3\xdfN\xff\xda\xae\x1a\x7f{\xf1/\xa7\x7f\xd5owoO\xfa\x04\xd3\xb0.dd\xf3\xadG\xe8\xa5~\xa9\x9d\x805`8\xac\xa9?\xac@\xe7\xfb\xcf\\\x8d\x9e\xe8\xd4{\xa8\x90\xae|\x8a\xf1\xa1\xfa\xc2\x11\xbd;\xcf\x8ee\xb2\xe9\xc5H0\x17\xf4\xf2\xb5\xde1\x9c\x1ena\x0c\xd4\x18LO\xcf\xf8\x15.,M\"B\xf84\x97 \xda\xe5i]\xb3\x0d]\x96\xc4X\x94\xfc\xd6'\x1dp(j\"\x1c\xab\x17\x1dW\xa9\xd7\x9b\x9b\xcb\x96K|OV\x19\xc5\xca\xd1s;\x0e\xfaq\xd8\x0f\xb3W\xda;?\xfb\xf0\xd5\x17M\xce\xde\x04\x0d\xf6\xd3\x04\xfd\xf7\xbec\xf5\xeb\xda\xa2\xb3\xd8\xeb6?\xacK\xaf&\xdd\xf1\xd0\xf3 \xea\x16W\xa46\x12q\x16l/\xc3\x0e0\xde\x8f\xd8\xd1\xc1\xcb{\x1b\x8c\xc3\nD\x07\x1c\xb0j\x81U\xfb\xf4X\xb5\x19;\xed3\xce\x181a\xc7\x8e\xdck\xdb\x95\x1cv\xdb\xb0\xdb\xf6>\x7fJ\xbbm`y\x8e\xa3\xd0\x01\xcb\xf3\x01\x95\x9b\xe6'\x02\xcbs\x0e-\x02\xcb\x13X\x9e\xff`,\xcf\xa4\xf5\xe5\xf4\x97-\x16\xdb\x94\x0d\xdc\x1c\x1e\x03F\xf0\xe0!,`\x8c\xf9\xcc\xd5\xf0\xe9\xdbbB\x9b\xa7I\x87\xbc\xb0E%\xb9\x7f\xc99\xe5\xcfmK\xc9\xb4\xa4\x8c\xb5\xa3\xa4\xac(\xe3tq\xb4\x05%\xad\xd9\x99\xad'i\xdb\xc9(\xcbI\xc6 \xae\xad\xc0\x1c\x0788\xbf\xc1\xf9\xcd\xff\xfc)\x9d\xdf\xb6-\xdc\x8a\x12\xa3\xc4\x8fZVfh\xa3\xe7\xeb\xdaY\x1d\xed\x05\xf7\xcb\x02\xed+\xb2\xa6w/|\x14\x92\xbc\x95\x11}\x12\xc0E\x9c\xfeb|;N\xf5v\xef\xcaPn\xc2K\x7fGQ\x97\xea\x03C\x8e\xf9\x9eWz6\xe8Q\xa0\xcc\xfe\xd1\x92G\x95Z\xcc,G\x99\xe3\xf5\xe8\x08\xeeMr\x9c\xb5\xa0\xb0w\xb7\xe0\xc9\xcf\xbe\xf6d\xb7\x0d!\xea\xef\x11;\x86\xe9\xcbd:db\x0e\xa0\xef]\x0f\xe7\xe4\x1eO\xe2\x1d\x87/\x05\x0ds\x8e\xc7\xf1\x8d3\x16UO\x07M\xae\xae\x83t|c\n\x18gV`5}B\xab\xe9'%\xf4f\xc6\x8b\xee\x12\x04\x0ecF\xd3e\xf1\xd2%\x1a\x0b }i\xdf\xf9m\x07\x90\x1e \x9b\x9f\xe6\x1e\x02A\xd8\xea\xca\xde\x05\x14[\x88bW\x10\xa4W#4\xc8\xc9^W \xf4\x0e\x8e\n\xf3\xb7\xea\x13E\xc5\x85xiN\xc4z\xcd\n\x8d\x1e\xdb\x03\x04ZW|\x87\xe4\x96\x8a\xd0\xd1W'\xe6;\xe3V\xa4 \xf4\x86<N\xed\x07\x99\xcd\xa8\x00}U\xf5\xa8\xeag,\x9cp\xcf\x01,\x94\x8d\xfc\x16\x17\xca\xe8\xeaU\xf0\x8a\x9c\x16%%L\xdfei\xfe\xba\x12\x12\xcb\x18\xd1\xedL\xbf\xf6A\xbf\xd5[\xc8\xd4 8\xff\xf6\x0c\x95\xfa*6\x93\x9a\x9e\xb3q\x7f\xf4\xf5\xd6\xb0nj\xf6\xf9\x93]\xc1<\n\xea\xca\xa7\xe8s\xb6HG\x04\xd0m\x1d[uR~\xda{+]\x1d\x04\xf3\xec%\xa8_\x8d\x96.\xe2\x06\x9b\xd6\x00\xca\x18y(O\x11(\xb9(\xf4\xe55\xfa\xf8\xfe\x87\xd3\x8aX\x1b\xa8\xda~\x1a\xf0\xcc\xb8\x11\x94\xf7\xad2\xe3a\x1f\x91-\x9f\xdb\xe0\x08RQ\\\xd2\xbf\x87\xaf\x9b3\xa2O\x83\x05/\xd1\xb2^\xeb\xbd\xa2\x99B\x17\xe8rK\x85\xad+\xda\xd5B:c0\xc2!5\x1b) \x162\x9e'g\x04=;}\xa6\xef\xc3\xc3\x85$\xd5B\x1f\x89K,$\x12d\xa3\x0e\xbe\xae\x1a\x1f\xdf\xff\xf0\xb9?^\xb2\x13\x0d\x02\xe8\x02Vd_\x11AX\"wc\xb6/\xcb{\xf4s\x8dK\xa5\xd9\x95\xd1\xbb\x03\x1c\x95\x16\x9fc\x81(\x8b'\xf4\x93\xca\xfat\xc3\xf9\xa6$\x0b\xad\xc7e\xbd^|W\x9b\x99\xe9\xa7\x17\xa6V:\xe9\x86\x94\x10MP)\x17\x15\x98qF\x0b\xacc\x88\xec\xe2%xN\x16\x9b\xc5\x89R\xb9F\xe3\x9e-\x9e\xa9\xfd\x05\xe3\x12\xe1\xa2 {IV/b\x81G\x95\x9c3\xb4W\x8d@\x0br\x82$Q\x1b\x8fZ\xd4X\xa9g_\x91\x82\xef\xf6\xb4$j\xb1\xe5\xc9\xee\xb7\xa4\x0cW\xf7f\x1e\xbf\xdf\xeb\xfejP\xe0\xe0\xdd\xa1F\xcc\x0e\x05\xe9\x18\x1b\xa8V{$c-S\x1d\x8e\xdc\xe9\xae\xf0\x9a\xdd/\xd0\x9f\xf9-\xb9!\xd5\x89\xc7\xb4\xd0\x97\x8f\xef\x7f\x10\xd6\x92\xa2\x92\x8b\xd2b\x91\x9b\xdb \xfai+\xe5\xfe\xa7\x13\xf3\x7f\xf1\xd3\x89\xdaQ2n\x9f\x9e\xe8^[\x04/L5\xc2\xf5\xa8\xd7\xda\x13D\xa2z\x8f\xb0\xd6E\"\x7fR\xdd\x90\xca\xa8k\x87\xf7\xc2tA]\x0b\xc9\x9b\x98\x89\xfa@C\xa5\xe6\x81\xe2\xf8\x98X\xf3\xb2\xe4\xb7\xe2U\xa2\xed\xff\x19\x9d\xaf\xdb\x1a\xaa\xae\xe3\xc2\xd54J\xd0\xa6)!\xea\x1dY\xf9#:v\x12{\xcd\xd0\x9f///\xd0\x9f\xde\\:\x83\xe7\xc7\xf7?\x98\xb1y\xaf\xed\\8\x9a\xc2_\x87C\xe9\xf2~O\xfe\xf6\xd7\xbfE?B\x8e\xfc\xc7\\\xff3[\x18\xddz\xfb\x8a\xaf\xea\x82 \xcc\xcc\xe6\xd4wvi\xe5\x9f\xd1\xeb\xfd\xbe\xa4\x85\xe5\xda\xe2\x8a\xa8\xbe\xcco\x0d\x11\xb4\xc0\x85\x9a\xa38\xbf\xae\xf7\x0e0\x8f\x0f\x07w\x87gj\xdc\xe8\x0e\xab\xcb\xbb\xc57\xba\xbb\xee:coe\x06\x1fv\xd5S\x7f\xdfp\xbaB\x98\x1d\xee\x11\xfab\n\xab\xa7\xa1\x8a\xacyEN\\\"*m,\xe9\x92\x96T\xde#F\xc8\xcaQ`\xf4\x14Z\xddD\x18\xe7F\xb8\xbbD\xd9\x1c\x9b\xd4x_\xa0\xe7\x1f\x05A7\xa4\x12\x943\xa55\xd5\x8d\xd5\xfcg\xfa1fx\x93\xd2\xc4\xb2\"\xf8Z\xcde6\xf1\xc5\x8bx\xaf{\xcb\xa5\xf6\xa7\xa5\x02\xadkV\x98\xd1\xa7\xead\xe7\xc1\xa2\xae*M\x1f;\xb8v\xc1/v\xea\xe1\x9a4\x15f\x9f\x1aq\x1d\x15UD\xadz\xe4D\x9b\x80\x0d\xd9He\xae [\xfal\xe7\xc6s\xbc\xc3\x90\x0deLU\xfe\x96\xcamb\x11\xbb\xdf\x93\x85\x19/xO\xc5\xa2\xe0\xbb\xd4L\xffA\x8fra\x98\xb1\x86\x0c6\x98\xf1\xd0s{\x0e\xd5L\xa6\x8c)\xf3\x05\xda\xe9\x8d\xfa21\xc1\x19\xe6\x9aF\x93\x9ce\xdb\x98\xcc\xc5\x9e\x14tM\x0b$\xc8\x0e3I\x0b/\xbb\xd9H\xf4h\x83\xf2\xb7gI\xf2\xb8\x911\xbb\xb8\x1f\xd5\x14\xb7$\x86\xe8EW\x9d\xcd\xd7\xc1\xfe\xca\xeb\x85\xdd\x17\xbc\xe47\xc4\xa9\xc6\x0e\xa3\x90ZrK\xf9\xd3kv\xffS\x8b\xe7c\x86p\xb5\xa4\xb2R\x93A\xb8\xb4\xc1\xe4\xdc\x9a\x84Kn\xbb+\xc2\xe1.\xa0V\x01\xbd\xb8\x99\xd2.\xdd\xe5\xa9\xde\xedj\xb3\x03\x8dt\xe7\x0b7\xf0J\xba\xd4U\xb0\xeb\x96@\xa2\xdek\xcf[\xc9\xd1\x1e\x17\xd7\xa75S\xffS\xfb\x87x\xbf\x12n\xe4\xc77]|\x8dji&M7\xddh\xc3\x13^\xad\xa8\x99{\xd0\x860u6\xd5\x15\x91[\xbeR\xc7\xd7`z*\xc7\xd7\xec\xde6q8\xdf7wX\x0d\x1c\xf4\xe5+t\xa1\xea\xa3\xe6\x19[5\xdc4\x06e\xe8\xec_\xfe%\xb1L\x7f\xcf9Zs\x8e\xbeA\x8b\xc5\"\x1aDY\x17\x0c\xb3\xfb\xf8K\x98\xdd/T\x91\xbe\xaf\xf8\xee\xf9\x9a\xf3\x17\xf1\xd7\x17\x8b\xf8\x1aL\xd7\xe8\xb9J\xf2\xa3\xae\xdc%\x7f\xfeO*\xcd\x17\xf1\x18\xd1\x19\xe9\xfe\x9a\xd6\xedW \xdd\xfe\x07\xbe\xc1\xb3+\x17}\xa3\xf7\xb6*\xb7\x19\xb5G\xc5\xf3\xef9_\x14%\x16\"Cy\xa6\xc8\xeaCS\xef\xce\xc7\xf1\xf2\xfc\x1a}zz\xaa\x86F~\x99?\xe0\x1dQ[\xbe\xd7\xa6\xf4\x1b\"\xbf3\x06\xces&$f\x05y\xfebje\xbci\xa5\xea\x96\xec1\x7fH\xf4\x98\x8b{\xb9\xe5,\xd1gLy\xbf\xe7\xfc\xf9b\xb1x\x91\x1ak\xa6\xbf<O\xbe\xa7\xc7\xa4\xeeQ\xc7v(\x95\xd8\xb9i\x91\xef\xde|8{\x7f~q\xf9\xee\xfd\x8b\xd8:\x8cl\x11\xcc\x18N\x17\xc2\x14#\xa9\xed?&\xb4\xfd'\x1eW\xb4\xd6\xf4\xabo\xd0?\xed\x97\x8b\xef9\xffe\xb1X\xc4\xfb\xaf\xaa\xc4\x89:8\xa8\xaf0\xbb\xdf/\x17o\xc9mF}\xe8Z\x7f\xf5\xdf\xbeA\x8c\x96\xc9\x0e\x9bl\x84\xc40K\x7f?\xa8x\"9[zS\xe7\xc5G\xb6\xc3\x95\xd8\xe2\xf2\x92\x9b j\xee\xaa\x05\x9f_j\xe0\xae\xb8n\xd6Qw8E\xcb\xfbv\xeb\xedv\x00\xc6\xab.\xbc\xca;:~-\"{\xd5\xcf=\xdb\xea\xd3u]\x96\x0b\xfd@\x1de>G\xb8\xb3{Q;\x9bn\xa0\xa3\xa1\xa8\x17M_\x0dg\xdal\x13Xy\xef\xec\x15\x07\x06\xaa\xe6(\x85\xf0Z\x12\x1fo\xb1\x15mG\xfb\xfc\xf4\xf3p\x96v\xaf\xe3\xaa\xa0-*\x88\xd8q\xf6l\xcd\xf9b\x89+]\xf9\xbb\xd3\xfb\xc5\xdf\x9fi\xed\x06S3g\xfb\xb8\x99C\x17\xfd\x99J+\xb6\xcd\xf9\x8f\x0f\xef\xdeF\x1e\xab\x1e\xa1^i-}\x0d\x05V\x1df\xf4\x16\xd7X\x03j\x910\x97VdS\x97\xb8\n\xe7u\x98\x85!p\xb5\x1b\xd5\x93\xf6\x9e\x0d;\x0b\x9d\x04S3;\xe4\x88=\xb1\xb3\x814\x94\xa0\x9f\xfe\x97R\xe8O\xd6\x8c\xd5#\xe2\xbaf\x0b\x0f-;e\xbeJ\x1c_qq\xad\xe6\xce\xd6\xec\xb2\xa6%\x89\xaf\x8an\xbe\xbd \x95\xe0,9\x01X\xfb\xf1\x9aVB^\xe9>\x90\xba\xba\xa3\xfdHuc\xf7\x8d\xff\xf2\x8eF\"\xb3\x88\x92T)\x9fi]?{\x85\x9e\xf9\xc6\x7f_=\x0bS\xf3g\xe1\xb6\xb6i\xea:\xbf\xc5;\x95\xee\xff4U\xfa\xf7\xe4G\xaa\xce\x83o\xa6V\xfc|m\x8f\xf2\xfd>jz\x0f\x15\xe8\x96\x94\xe5\xcbk\xc6o\x0dqm\x8bE\xc4<gc\\\x9a\xf1\x19z\xa9?dN\xcc\x91o0\x8eZ\xe7gS\xac\xe8\x80`\x1b\x84\xcdp\x08g\xfa\x93\x1e\xf0n\x9cly\xb9\xear\xe6\xcctAY3\xbeP\xc2\x8em\x87]8?]\x9cE\xb3)y\xaefN\xab\xda\xe07\x07\x86M\x87\x11\xfc\xed\xaf\x7f{\x91\x18\xa4s\xf5\xdd~\xc6\xe9\xee\xab\xd5\xaa\x92\xfdr\xf1\xd5\x97_\x89g\x89nx\xf8[\x8ee\xe2\xdca[\xab\x0e\x86\xdb\xe1Zv\xe1\xbff\x0e\xf5%\xd4\x99>\xcd7~\xa5\xb6\xc0\xa4m\xc7\x83\xb7z\xa5.\xa9\xd0\xe8\x83\x90\xbc\"\xab>jm\x17\x04/%&z\x15\x99\x016;\x1ek\x0em>|u:\x17 \xe2+@|\x85\x81<J|\x05\x945\xf0\xe1\xd62\xafL\xbd\xb5,\x83\x84\xd6\x9d\xba\xb2\xa8h\xbeDN{\x13 \xb8E\x01?\xcd\xfb<\x01\xc1\xa4\xa7\x07#c\x991\x0eN\x08&\x98\xcb\x8a\x99\x95\x11\x93`\xc3\x8ce\xc2\x0cY\xe8}\xc9e\xc1\xcc\xc2\x80\x99\xc2~\x19z\xe7w%\x9f\xf9r$\xebe\x1c\xe3\xc5\"\xe6\xe1b\x8fa\xbb\xcc\xcat\x19\xc3r\x19\xc5p\xe9\xb0X\xc2 \xe6\xb1[fe\xb6d\xb0Zfc\xb4\x1c\xc7f\x99\xc0d\x99\x85\xc52\x9e\xc12\xf0S\x1cJ\x92\xbd\xf2\x00\xcc\x95\x87b\xad<\x00ce\x0c[e\x02S%6]\xe6\xb1Tfd\xa8\xe4\xb2S<f\x88\xd8l<\x96\x95\xe2\x98'\xe1E0\xc9H9\x9a\x8d\xf2\x00$\xfb\xa1\xe4\xee\x92F3O\x0c\xbb$<a'Y'9%\x9b\x91m\x92\xcf4\x99\x95e2\x85ab\x99$\xde\xf4\x92\xec\x92\x89\xcc\x92\xe0\xf4\x9cb\x95\xcc\xc3(\xc9$<$\x99$#X$1Hq\n{$\x96^\xc0\xbc>\x13cd\x9c\xf2\xf2\x99\"9\x1a\x1a\xc1\x10\x99\xc4\x0e c\xcciV\xc8\x9c\x8c\x909\xd8 \x89^p4\x0b$\x93\x01\x92\xc3\xfe\xc8c~$\x94?\x9e\xf1\x91\xcf\xf6\x082=fay\x8cbxLaw\x8c`vD\xa9\x0f\x91bE\xbf\xcbgr\xcc\xc5\xe2HT\xc3\xfbl>\xe6F\x92\xb51\x95\xb1\x11\\7cl\x8dY\x99\x1aq\x96\xc6$\x86\x06\xd2\xe7Roz\xe1cz\x9a\x99\x11ae\x8cgd\xc4\x99\x17\x93X\x17\xe6@\xe2K.\xc4\xb8\x98\x8fm\x91fZ\x8ceY\x8c`X\x8cfW\x8ccVD\xc8\x05\xb1R\xe5\"\xd2\xb9l\x8a\xd1L\x8aQ,\x8a@%\xa7\xb0'\xc2qzP\x8491\x855a\xd9\x11\xfe\xbe\x1dcL\xcc\xc8\x96\x882%\",\x89\xc9l\x889\xfa\xdc\x08\x16D>\x03\xc2\xad\xc2\x10_{tT\xd7\x033 \xc4\xd7F\x10_\x1b\xe2kC|m#\x10_\xfb \xc6\xd7\x8e\xc5|9\xfd\xa5 '\x12\x89\xb1\xdde\xfb5\xe1_\xd8A\xe4\x17\xd7\xc2\xa1h/\x9f\xb9\xaa\xfd\x06\x82\xbd\x84\xf8\x1b\x93\xe8}2J\xc3H\"\x109&\xfc\xd9 \x18y\xf4\x8b)\xe4\x8b8\xc9b\x12\xc5Bg\x11H0I\xb0\x98\x81^1\x91\\\x11\x84\xa4\xf3\xa8\x15G\x11+&\xd1*\x10\x0e\xfa\x95\xc8<R\xc5\x14JE\x0c\xe8\xcc\"T\xccL\xa7\xc8\"S\xccH\xa5H\x12)f\xa2Q\x1cC\xa2\x18M\xa1\x98\x81@13}\"A\x9e\x98\x9d:\xf10\xc4\x89\xd9i\x13\xf9\xa4\x89i\x94\x89\x88\xd2S\x84\x89\xd9\xe8\x12yd \x8f\xad\"<\xbf\xceL\x94H\xd1$\x8e$ID(\x12\xc9\xedI\x92\x1e\x91\xb7\x7f\x99\x97\x1a\x91\"F\xa4\xcb4\x8d\x14\x11q.JQ\"f$D\x1cA\x87\xf0\x93\x98bd\x88y\xa9\x10q\"\xc4\x1c4\x88,\x1c?A\x81\xc8&@\x84\xf1\xb8\xf1\xe4\x87pZ^\xab\xf8,\xb4\x871\xca\xca\xa5<\xa4u\x92Mw\x98@v\x08\x81\xb0)\xa2\xc3|4\x87\xe3I\x0e\xd1\xf6>\x92\xe0\x90EoH\x93\x1br\xa8\x0dQe\x8f\xa55\xe4\x92\x1a\x02\x94\x86\x19\x08\x0d#\xe8\x0c\xe3\xc9\x0c\xd9T\x86\x08\x03 X\x9c\xc87\xb9\x14\x86y\x08\x0c\xd1\xc2{\x9eL\xa2.8[\xb4'\xbd\x00qaf\xdaB\x98\xb40\x95\xb2\xa0\xed#\xbe\x82\xfb \x0b\xf3\xd2\x15B\xc7\xe0\x14U!HT\x98\x97\xa60\x9d\xa4\x10 $L\xa2#$\xa9\x07\xe3\x88\x07\xd9\xb4\x83\x91\xa4\x831\x94\x83 \xe1 \\\x9a\\\xe07\x8fl0\x92j0\x82h\xe0\xad\xda\xbc$\x83\x10\xc5\xe0\x08\x82\x81\xd7:\x13\xa4\x17L#\x17\xc4\x88\x04\xf3\xd3\x08\x8e\xefI\xd9\x14\x82\\\x02\xc1\xe1\n\xe8 ~\x8e\xb0\x10\xbc\xa0\xfa\xc8\xa3g\x123G\x19\x8f\xe6`\xbc\xf5}\xc5\xf9z\x94\xb7i\xe2\xf4mK\xb6#\xd5uIL\xf2j\xfe#wTH\xc2\x8a\xe1\x07\xfa\x85\xab-\xa1\x9b\xad\xef\xa20\x93\x98y\x8c\xb0\xbb\xfcJ\xd5\xcc\xa4|\x8b\x05\xaa\x88\xac(\xf1\x19\xa8\x8e\xc0O*rC\x05\xe5\xec\xca\xc0\x9eG\xda)\xd2\x8e\xfd\xa6\xb1L\x9e-v\xeb\xa2\xe5\x8b\x8e!\x8b\xfb\x0e\xcbMqC\x9aD\xf3\x17\xd7\xb6\x8a\xeakvq\xdf\xd0\x1b\xc2\x9a\xb2\x1c|\x9f6\x80\xbcU\x05P;\x0f\x95\xda{\x9b\xce\x9fM>T \xca\x8aJ\xdb\x99\xd4\xf4#\x0d~oJ\xe1I\xebvKK\x82\xae \xd9\xab\xeaz^p\xe9\xbf5\xc0\xb66v\xe0\x1di\x80\x00$\xf8N\xa3\x04\x820Q\x0b\x84\xcb\x0d\xaf\xa8\xdc\xee\x04\xday\x1c\xaa\x11*\xb6\x9c\xab\xfd\x93w\xbb\xae\xe6R\xd9\xd5\x1be\xa8 \x95\x06\xa8\n\xceV\xd6\"O\x16\x9b\x05\xda\xe2J\x1b\x11\xaf\x85o\xee\xd0\xa3\xfd\xe5\x0e\x17[\xca\xbc\x9b\xa0\xa1\xf9\x14\x9d\xeb\xe6\x11\x04\x15X\x10q\xd2\xd3\xae\xad=\xf5\xd9)\xbb\xfa\x16\\wK_~\xb6Bj\x13BYM\x9c\xe1x\xc7\x19\x95\x06S*\xefMZXS_\x88\xea%8\x14}\xab\xdf\xec\xbe\xfc6D\n\xa3\xcf\xde\xc3qA\x0ef\x89q\x10 q\x80\xbe%B\x9b\xbf:\xe3X\xb7\xdc\x89\xb6\x16\x1b\xda\x85Z\xad\xcdD\xe6\xdf\xb9[\xcd\xae+~`\x06\x8b\xce\x84\x10`\x01\x02,@\x80\x05+\x10`\x01\x02,\xb42\x85\x0d\x10L\x0c\x02,\x1c\xcaL\xcc\x80\xe3\xb8\x01\x13\xd8\x01\xb3\xf0\x03fg\x08$9\x02\x0f\xc0\x12x(\x9e\xc0\x030\x05\xc6p\x05\xa6\xb2\x05\xa2sx\x8a/0#c \x9730\x9250;o \xcd\x1c8\x9a;\x00\x01\x16\x92%\x9b\xc6%\xf0&\x05\x01\x16\xa6\xb0\nR\xbc\x82y\x98\x05\x99py\x92]0\x82_\x90\xf4\x0e\x1f\xc91\x80\x00\x0b\x10`\x01\x02,td\x02\x13!\x9f\x8b\x00\x01\x16\xac@\x80\x05\x08\xb0\x00\x01\x16\x0ee:w\xc1\x9b\x1c\x04X\xf0~\x90\xc5v\x80\x00\x0b\xf3q\x1f \xc0\xc2\xd1\xcc\x88y\xfa\\6;\"\x9f\x1f\x91\x17`\xa1q;\xed\xa4\xd2;I\xf7\xd8\x14\x06\xe2\xf0\x13'({5D\x01Z\xe7YY\xd5 \x17\xf1\x89\xae\xb3u\xa6\xeb\xec\x07\xfdn\xe35\xab\x0f\xdd\xe6'\xb3$\x9c\x7f{\x96\xe7=[\xbbs\xf4\x93u\x9f5\xf5\x1a\x81\xe5\x8d\xc2\x88\xebY\x02\xe1\xd7\xb1@\xf8\xe8\\ZGo7 h\x0bd\xa7\xc1\xd4\xaf\x87-\x06\xc0.\x00\xbb\x1e\xc91\x0c\"\x00v\x01\xd8\x0d\xbe \xc0\xae\x16\x00v\x0f\x05\x80]\x00vC\x02\xc0.\x00\xbbZ\x00\xd8\x05`\x17\x80]\x00v\x8d\x00\xb0;\x05\x1b\x05`\x17\x80\xddV\x00\xd8=\x14\x00v\x01\xd8\x05`\x17\x80]\x00v\x01\xd8\x05`\x17\x80\xdd<`\xf7\xa9@\xba\xce\xa3xT@\xe4N\xe0\xff3\x97\x80\xbdg\xbb\x89\x8f\\\x96\xce\xe2m]\x96\xfd\x81\x01\xb0q\xd4n\xd2\x8b\x81\xc1\xfd\xac\xec+O\x16\x0f\x1e\xaa\xf6i\x00{1\x9f\xfc6\x94\xc3\xa0\xd1\x82~\xed(] \x94Q(\x94\x1b\xe4\xc0H\x86\xe5\x0d\xe5E\x1002O\xd8\x03#Y\xc1\x0f\x8c<`5F\x87C0\x92c\xf2C\x93B#\x04\x93r%M\x05H022LB0\x9d~\xf8\x84x\xb0\x04#\xf3\x85L0\x92\x0c\x9c`d\xb6\xf0 F2\x83(\x18\x99\x18J!\x98\xdeag \xe7\x1d\x08\xab\xe0d0\xb7\xc6M\xf4GOM2A\x86@\xf9\x839w\x84\xa1 \xc4\x88hb~\xebx\xc4\xc427A\x02\xa5I\x12h\x02Q\"^\x01\x17\x1b?\x87,\x81\xe6\"L\xa0\x89\xa4\x89h\x82J\xb9\xd9\xc4 t<y\x02\x8d&PD\x93j\xe3\xe7\xe7\x93(\xd0\xdcD\n4\x92L\x81\xc6\x12*\xe2=\xbb![\xe4\x92*\xd0\xdc\xc4\n\x94G\xae@s\x12,\xd0\xd1$\x0b4\x8dh\x81\xe6\"[\xa0I\x84\x8b\xf8p\xc0\x82\xac\xd2\xa4\x0b\xf40\xc4\x0b\xf4\x80\xe4\x0b\xf40\x04\x0c4\x92\x84\x81\xa6\x111RSp\x1e\x19\x03\xcdK\xc8@#H\x19h<1\x03M gdL\x99/2\x08\x1ah\x0e\x92\x06J\x115P\xfe\xf6,\x83\xb0\x81F\xee\xe2F\x137\xa2\xa9iRG\x06y\x03\x8d(\xe5\x8c$\x0e4\x8a\xc8\x81\xe6&s\xa0\x89\x84\x8ex\xbf\x12iR\x07\x9aN\xec\x08\xa6\xa7rL\x91;\xd0l\x04\x0f\x94\xcfS@9D\x0f4\x8e\xec\x81R\x08\xe4D\xd2\x07\xcaH7\x02\x7f\xccD\x00A\x93\x94\x9bO\x04A\x19\xb5\x9c@\x08ASI!(\x8e|g\x91C\xd0\xcc\x04\x114\x13I\x04\xe5\xf5\x98\xa3\xc9\"(\x9f0\x822I#(\x9b8\x82\xf2:\xd4x\x02 \x1aE\"A1\" \x9a\x8bL\x82\xc6\x12J\xd0DR \x1aG,A\x19\x8d\x90\x18f\xe9\xef\xf3\x89&hF\xb2 \xca)Zd\x94\xcdG<A9\xe4\x13t\x04\x01%\x98\xa0z1FBAs\x13QP\x92\x8c\x82\xa6\x12R\x82\xa9\x99\xb3}\xdc\xcc\x91&\xa6\xa089\x05M\"\xa8\x04\x93\x8a\x12W\xd0T\xf2J0\xb5\xc8M\x0bF\xe6#\xb1\xa0,\"\x0b\x9a@fA\xe3\x08-h\n\xa9\x05\x8d&\xb6\xa0\xf8,\x82\x12d\x034\x82p\x90KrAS\x88.h,\xd9\x05\xc5+>\x85\xf4\x12L\xacC)\xc9\x1d2y\xe4\x97\xe8\x80`\x9b8\x01\x06\xcdK\x82A)\"\x0c\x8a\x93a\x82\xdfL%\xc9\xa0\x19\xfb\xee\x08\xb2\x0c\x1aE\x98A\x91\x0d\x8a\x9fj\xe0y9\xc7\x8c\xd1\xa7\x86\xfco*\xb7\x16\x8d\xd6\x86q\x1d\xda|\xc8ip\xd3\xae/\xb9\xce\x8c\xbb\x8d\x00\x95\xa6\xbd\x0f\x1e\xf9k&\xbcwb\x84\xef\xc2h\xaeu\xf7\xf0FL\x06\x9dk\xee\x1d\x8d\xe5\xf0\xd5\xe9\xb7N0r'\xaf\xae\xc9}\xd8A<\xeb\xfe\x86\xbck1\xff+d\x9er\xa5pQ\x0f\xd4\x9f\xd6\x1a\x8d\x850\xe6\xf7\x0b\xbc!\xef\xcd\xe5\"\x0b\xf3<\x90\x98\xbee^'\xa3\x92U\n$h\xc7\x85DD\xdbt\xb51X\x87Ah\xa7\xa2\xbd\xbcG4rIxE4\x18\xc08\xda\xf1\x8a8\xe3\xbfo\xf9\x95\\\xe2\xa9W\xa0gp@l\xa7\x08\xda\xf9t\xf6Z\x8b\xfa\x0f\xc3\xb2Q{\x97\xe6\xb6\xff\xd6\x1b1T\xdf\xae\xa2\x0b^3y\xa5\x13\x0b\xcdR\xb7X A\xe4 \xa2R8(F\xa0\x9a\x99A\xb92\xd6\xe6[\xea\xe9\xb6\xe91o\x8a\xd2\x89\x88\xc1{\xbcI\xca\xd0\xe6\xfd\xc5Y\x1b$\xc3\xce\xc3\x02\xdd\xaa6\xf35\x8f\x1f ,xe\xd2\xd0K\x8e\xbb\xc2\xc6-\x98je\xd4\x06\xec\xaef\xbc\xeap_|\xe0\xbb\xb6\xdc\xd1 \xbc\"{\xa2'\x8boq\xd54Rj\x8b\xd4S\x8b\xee\xdf\xa1\x0dR\x7f^\xb6\xbd\xe7`\x18\x9a($}\xe2\xdd\x11\x81H\x06dA\xd5B\xe6\x88\xd3\xbc\x0e\xa1D\x06O!\x94H\xcet`d,c\xc6\xc1\x0c\xc1\x04s\xd92\xb32e \x94\x08\x84\x12ieV\x06\xcc\x18\xf6\xcb(\xe6\x0b\x84\x129\x96\xe52\x81\xe12\x0b\xbbe<\xb3\x05B\x89\x1c\xc3d\x19\xc3b\x99\xc0`\x81P\"\x10J\x04B\x89\xe42Pfe\x9fLa\x9e@(\x91\xd0kI\x86\xc9\x08vIN\x10\x8a1\xac\x12\x08%2%\x1aG\x8a5\x02\xa1D\xf2\xd9!\x99\xcc\x90\x1cVH\x1e#\x04B\x89\xa0\x89\xac\x8f\x11\x8c\x0f\x08%2\x03\xa3#\xc9\xe6\x98\xca\xe4\x08\xae\x9b\x10J\xe4@ \x94\x08\x84\x12\x19\xc8\x1ca\x1drY\x16\xa3\x19\x16\xa3\xd8\x15\x10Jd\"\x8b\x02B\x898\x993\x94\xc8C\xc4\x10iK\xd1\xb2\x0c\x16\xd7\xe4>T\x94\x01ph\x01{l'rs\xab\x80\x81e\xbb\x08\xe5\xa2A\xf7\xb5In3\xb0]i\xb8^M>)\xc4\xfe\x1d\xd3A\x19\xf4\x99\x9d\xaf\xd7\x82Hu^\xe8\x17\x17u \x05A\xe4b\xa0\xab\x9fm\x90\x14'\xad\xb2\xd6\xb8\x14Im\x05\x0c4\x1e%\x9a\xf2\x85\xf480\x8e\xd8\xcahU\xb2zG*Z\xb8\xdf\xf4\x98/0S\xf51\xd6\xa9-aN\xf15k\x0c\x82\x83\xbd\xf3\xb9N\xad$B\xb4*4&\xb4Z;\xf1_\x93\x91\xfa\xec'\xff\xc0\xca\x1d\xf0\x1f<\xea-\xe9\x8e\xe6jW\xbf\xebP\xec\x10-\xc2\x18\x8b\xbb=\xd8b\xdeu9\x00\x91\x8di\xa8\xfb\xd3\xf9\x1a\x95d-\x1d\x8d\xc4\xf2J\xdc\x06U\xdb\xb9\xcd\x001\x99(=/\xefu\xbc\x0c\x84\xf7\xfbO\xa8\xc5.\xb9\xa3\xfd>\xa6\xcb\xce\x17J\xa3\xba\x87r=\xd1 \xf5\x07e+Z`I\xda\xb8*F\x83\xfaE\xdb\x91\xba\xc9QV\x94\xf5j\xb0\xfd\xc4&\x97\x06r\x1c\xb4\x98\x06\xb0;\x96p\xb5\x80t8R\x83\xc9\xe5\xe3\xb9\x18\xb4\xd6\xa0\nz\xc7^\x11a\xa9\x06zx\xb5\xe3Q\x0d\xb9\x85\x1dMt\xc3x5\xc0\x11\xdch\xecga4sl\xc3.9/I\x87\xba\xe6i\xc0\x8a\xdc\x90\xaa\xf7i\xac\xf1\xec\xdb\xc3\x86\xa3\x1drPE\xfc#\xa1\x97\x8e\xca\x83\x18\xa6\x0c\xafV\xa4\x1a\x9e\x0e>PVhf\x9c\xd8q\xf1R\xac\xae\xd1\x17\x8b?\xfeaVm\xcc\x15\xfc\xea\xd4\x10\xfflZ\xbe X\xff\x1e\n\x82e\xa8\x87\xfdK\x8fl,\x15\xbeFJ\xd5\xf7\x07\xe4\xc0&\xa9@|\xac\xfc\xb8X6w\xfb\xe2o%:\xd6UO\xdd]\x91\x9f\x80\xb2\x92\x19\x8bj\x04l\x13\x0d\xde4W\xfc\xa9\xcc\xd8S\x0fP\xec \xf1\xa6r0\xa1\xf1q\xa6b\xa1\xca2bL\x8d\x8c/\xd5\x89#\xe5M.#\xb6\xd4\x9cq\xa52bJ\xcd\x18O*;\x96\xd4\xc48R\xc1SdN\x0c\xa9h\xfc\xa88U\xb6\xed_X\x95\x91{\xcb\xb8\xc22\xc6c\xe9n\xce5\x03\xa1R]t\x83)\x13\x12af\x80k\x9b\x91%L\xa2}]\xed\xb9\x08`\x81|\x8d\xea\xfd\nK\xed\xf7\xc0\x02'\xf5uE\xc8\xdfu\xe3\xea9\xe30\xa5hx\xbf\xe1\xeb\xc0@7\x02\x0ct\x94\xb7\"\x00\x03\x1d\x18\xe8\x8f\xc2@\xb7[\xdc\xb9x\xe8n\xbf\x0elt#\xc0F\x076z+\xc0F\x076z+\xc0F\x97\xc0F\xf7\x0b\xb0\xd1\x9d\x00\x1b\x1d\xd8\xe8\xc0F\xcf\xdc%\x01\x1b\xbd\x11`\xa3w\x05\xd8\xe8\xc0F\xf7\x08\xb0\xd1\x81\x8d\x9eR>\xb0\xd1\x83\xdf\x00\x1b\xbd'\xc0F\x076:\xb0\xd1\x81\x8d\xde\x93\\f0\xb0\xd1\xb5\x00\x1b\x1d\xd8\xe8\xc0F\x076:\xb0\xd1\x81\x8d\xfe Z\x046:\xb0\xd1\x7f\xe7ltG\xa4=\xfde\xc0MvD\xf5\xce\x03\xf3C\xe4\xfa\xe6 s\xbd\xbd\xbd9\xe3\xdef\xbb\xde\xf7\xc3\xf6v9\xa0\x8e\xban\xca\x93A]\xb7o\xfcV8\xeb!B\xcb$\xae\xa3\x8c\xf2R\x92\x90L\x0e\xa61;#%\x8f\x8f2\x85\x8d\x12g\x9dL\xe2\x9c\xe8,\x02 &\x19'3\xf0M&\xb2M\x82\x18}\x1e\xd7\xe4(\xa6\xc9$\x9e \xc2\xc1\xeb d\x1e\xcbd\n\xc7$\x86\xfcf1Lf\xe6\x97d\xb1Kf\xe4\x96$\x99%3\xf1J\x8ea\x95\x8c\xe6\x94\xcc\xc0(\x99\x99O\x92`\x93\xcc\xce%y\x18&\xc9\xec<\x92|\x16\xc94\x0eID\xe9)\x06\xc9l\xfc\x91<\xf6\x88\xc7x\x13\x9e_gf\x8e\xa4x#G\xb2F\"\x9c\x91\xe4\xf6$\xc9\x17\xc9\xdb\xbf\xcc\xcb\x15I1E\xd2e\x9a\xc6\x12q3\xbb'\xc1\x14GdF\x86\xc8\x11\xfc\x10?\xab+\xc6\x0e\x99\x97\x1b\x12g\x86\xcc\xc1\x0b\xc9\"6$8!\xd9\x8c\x900@9\x9e\x0d\x12N\xcb\x0b\x13\xcc\xc2\x03\x19\xa3\xac\\\x0eHZ'\xd9\xfc\x8f \xec\x8f\x10*\x9db~\xcc\xc7\xfb8\x9e\xf5\x11m\xef#\x19\x1fY|\x8f4\xdb#\x87\xeb\x11U\xf6X\x9eG.\xcb#\xc0\xf1\x98\x81\xe11\x82\xdf1\x9e\xdd\x91\xcd\xed\x88P\"\x82\xc5\x89|\x93\xcb\xe9\x98\x87\xd1\x11-\xbc\xe7\xc9$.\x873\x8b{\xd2\x0b09f\xe6q\x84Y\x1cS9\x1c\xda>\xe2+\xb8\x9f\xc11/\x7f#t\x0cNq7\x82\xcc\x8dyy\x1b\xd3Y\x1b\x01\x86\xc6$~F\x92\x8b1\x8e\x89\x91\xcd\xc3\x18\xc9\xc2\x18\xc3\xc1\x0820\xc2\xa5\xc9E\xc2\xf3\xd8\x17#\xb9\x17#\x98\x17\xde\xaa\xcd\xcb\xba\x08q.\x8e`\\x\xad3A\xbe\xc54\xb6E\x8cY1?\xaf\xe2\xf8\x9e\x94\xcd\xa9\xc8eT\x1c\xae\x801\xdf\xf8\x14\xd4\";Q`\x1ar\x052FTOr]\xd0e\xf0x_q\xbe\x1e\xe5\xbb\x9b8\xba\xdbj\xedHu]\x12\x93\xbc\x8eqtG\x85$\xac\x18~\xa0_\x08F\xa79\x02=\xc9\n\xd8\x93m\xa5H\xc78\x90\xc7\x85\xea\xc9\n\xd43sqG\x87\xe8I\x9b?\xe6\x0c\xcf\x93\x0c\xce3=4\x0f\xday\xfc\xcbQ<0\xcf|ay\x92Ayf\x0b\xc9\x93\x19\x90g\xdep<\xe9`<\x91P<\xb1Y\xf1\xf80<3\x07\xe1\xc9\x08\xc1\x13\x0d\xc0\x13\xaa\xac'\xc0\xc5\\\x91-\x86e\x84\x08\x17F \xc2\x05D\xb8h\x05\"\\@\x84\x8bV\xa6\xb0\x0f\x82\x89A\x84\x8bC\x99\x89\x89p\x1c\x17a\x02\x1ba\x16>\xc2\xec\x8c\x84$'\xe1\x01X \x0f\xc5Kx\x00f\xc2\x18n\xc2TvBt\x0eO\xf1\x13fd(\xe4r\x14F\xb2\x14f\xe7)\xa4\x99\nGs\x15 \xc2E\xb2d\xd3\xb8\x0b\xde\xa4 \xc2\xc5\x14\x16C\x8a\xc70\x0f\x93!\x13\x9eO\xb2\x19F\xf0\x19\x92\xee\xf9#9\x0d\x10\xe1\x02\"\\@\x84\x8b\x8eL`>\xe4s\x1f \xc2\x85\x15\x88p\x01\x11. \xc2\xc5\xa1L\xe7Jx\x93\x83\x08\x17\xde\x0f\xb2\xd8\x15\x10\xe1b>\xae\x05D\xb88\x9a\x891O\x9f\xcbfc\xe4\xf31~K\x11.\x06T\x86`Y\x06\xa4\x91\x86\x8dp\xf0\xd9\xd1%K\xba\xea\x0f\xe8\x0c\xa3\x8b|\xf0\xd9\xc3\x17\xb9\xc4\x92\x08\x99(\xf00@C\xf7\x1b\xc4oHUU\xda\xdc\xd0\xa1 \x98\xa5JM7\xdd\xdb\xbf\xcc\x97\xbd\xc4\x84\xd4N\xfa\xbd\xdf\xfa\xe0\xed\xbc~\xf9c<\xd1\xf5 \x89\xdc|v\xa6\xdf\xbc\xd0o\xb5.\xe3e\xd9\x19]n[@\x97E\xe3(^/w|U\x97\xc4\xef \xdeI\xf33W\xc1'\xea\x07\xde\xd5OWz\x851/\x19\xdc\xc4v\x83C\xf5\xf4\x15\xd2J\xb0P( \x00[0\xe1\xcaR\x10b\xdc\"?.\x8db\xd84\xca\xb1\x9e\xe6\x98\x1f\x0f\n\xda\xd3TI\x85F\xda\x1c2\xe2\x8d5\xd0\x17\x0d\x16\xb8\xcd\xa1%}T\xfa\xfa\x92\xd0r\xa5\xcd\xecL\x12\x8d\xea\x1ak\xf3Bm*\x9a\xd0\x06n#Q\x91\x1d\xbf!+\xb4\xae\xf8.\x82\xb5\xf4\x0b+t%NP\xad]\xbd\x02\x9f\xe8n@\x85\xcb\xd0\xed!VT\xe0eI\xd4\xe9Z\xd2\xd2b\x01\xd8\xec*6X\x9d;B\xf7\x0b9\xe5\xf5\xbbT\xbcA\x0c\x01\xa53\xfe\x8e\xa0\x9ftg\x86\xf7\x17g\xc3z\x9b\xd3Y[8`\x9f\x1c(\x08\xd8'y\xd3\x07\xb0O\x80}\x12z\x13\xd8'Z\x80}r(\xc0>\x01\xf6IH\x80}\x02\xec\x13-\xc0>\x01\xf6 \xb0O\x80}b\x04\xd8'S\x08\x1c\xc0>\x01\xf6I+\xc0>9\x14`\x9f\x00\xfb\x04\xd8'\xc0>\x01\xf6 \xb0O\x80}\xf2{`\x9f\x8c\x01\xe1\xeb\xfd\xa6\xc2\xab\x06\x1f\xb5A\xe1\xc3\xa0\xfcG\xfb\xbe\x81\xe0\x06\xe1\xdcY\xf3\x18\x9d\x7f{\x86J\x13\x01@\xbf\xe9E\xe3=\x89\xd9\xd7\x9e,(\xef\xd5W\x08\x13\x9b\x84\xac\xc7\xa1\xad\xa4U'\xc7,2;\xa8\x95\x07iM\x01\xb4 D;\x84h\x1f\x05S\xc5\x8c\xc7Y \xd5\xcc\x10U\x16@5#<\x95\x04\xa7f\x82\xa6\x8e\x01\xa6F\xc3R3\x80R3CR\x10\xa2\xdd+\xf9@\xd44\x18*\xa2\xf4\x14\x085\x1b\x04\x95\x07@\x8d\x82\x9ff\x06\x9fR\xd0\xd3\x91\xc0\x13\x84h?\x90i@\x93\x9b\xd9= \xa6`\xa6\x19A\xa6# &\x08\xd1\xae\x05B\xb4\x1b\x19\xa3\xac\\\x18)\xad\x93l\x08i\x02\x80\x04!\xda!D{D{G\x80D# \xa2\xf1\x00Q6<\x04!\xdaSp\x10\x84h\x9f\x17\x02\n\x1d\x83S\xf0\x0f\x84h\xef\xca80'\x1b\xca\x19 \xe4\x8c\x81q D\xfb1\xc0\x0d\x84h\xcf\x80f\x8e\xefI\xd9\xb0L.(\x13\x0c\xd1\xdeu5\xf3\x86b\xaf\xc8\xcf5\x11\x017\xe0\xc1\x91\xf4\xbf\xbc\xbeV\x1ete\xba\xcb\x95\x0f\xf7i\xe3\xfc\x82\xab\x15\xb8Z\x81\xab\x95\x15p\xb5\x02W\xabV\xa6`X\xc1\xc4\xc0\xd5\xeaPf\xc2\xb3\x8eC\xb4&`Z\xb3\xa0Z\xb3\xe3ZId\xeb\x01\xb0\xad\x87B\xb7\x1e\x00\xdf\x1a\x83pM\xc5\xb8\xa2sx\n\xe5\x9a\x11\xe7\xcaE\xbaFb]\xb3\xa3]i\xbc\xebh\xc4\x0b\\\xad\x92%\x9b\x86\x80y\x93\x02W\xab)XX\n\x0d\x9b\x07\x0f\xcb\x04y\x92\x98\xd8\x08T,\xe9'2\x12\x19\x03W+p\xb5\x02W\xab\x8eL\xc0\xcf\xf2\x114p\xb5\xb2\x02\xaeV\xe0j\x05\xaeV\x872\x1dq\xf3&\x07\xaeV\xde\x0f\xb20:p\xb5\x9a\x0f\xb1\x03W\xab\xa3\xf1\xbcy\xfa\\6\xa6\x97\x8f\xea\x1d\xebj\xe5\x02\xb0\xe6{[\xf5B\xb6\x06\x1d\xae\x06\xa1o\xe3>W\xfd+<\xcd\x9b\xbf\x01\xb7\xab\xbe\xee\xc0\xf3*\x0b\xe1\x9a\x82o\x81\xe7\x15x^\x8dB\xad\xc0\xf3\n<\xaf|23B\x05\x9eW^\xc9\xc7\xa5\xa6\xa1R\x11\xa5\xa70\xa9\xd9\x10\xa9<<j\x14\x1a53\x16\x95B\xa2\x8e\xc4\xa1\xc0\xf3\xea@\xa6\xe1N\xe0yu$\xda\x04\x9eW\xc1\x99\x18<\xaf\x0ed\x02\x9e\x04\x9eW\xe0y\x15\xd1\xde\x11\x98\xd1\x08\xc4h<^\x94\x8d\x16\x81\xe7U\n\x1d\x02\xcf\xaby\x11\xa1\xd018\x85\x06\x81\xe7UW\xc6a;\xd9\xc8\xceH\\g\x0c\xaa\x03\x9eW\xc7\xe08\xe0y\x95\x81\xd4\x1c\xdf\x93\xb2Q\x9a\\\x8c&\xe8yu6\xb8\x1f\xf0\x81\x9d\xafz0\xcb\x0c\xfeW}$\x08\\\xb0\xac\x80\x0b\x16\xb8`\xb5\x02.X\xe0\x82\xd5\xca\x140+\x98\x18\xb8`\x1d\xcaL\xc0\xd6q\xd0\xd6\x04pk\x16xkv\x80+ q=\x00\xc8\xf5P0\xd7\x03\x00]c\xa0\xae\xa9`Wt\x0eO\xc1]3\x02^\xb9\x90\xd7H\xd0kv\xd8+\x0d|\x1d\x0d}\x81\x0bV\xb2d\xd3\xa00oR\xe0\x825\x05\x14K\xc1b\xf3\x00c\x99hO\x12\x1c\x1b\x01\x8f%\xfdGFBd\xe0\x82\x05.X\xe0\x82\xd5\x91 @Z>\x94\x06.XV\xc0\x05\x0b\\\xb0\xc0\x05\xebP\xa6Co\xde\xe4\xc0\x05\xcb\xfbA\x16X\x07.X\xf3Aw\xe0\x82u4\xb07O\x9f\xcb\x06\xf7\xf2\xe1\xbdQ.X\x9c1\xa2\xcfv\xa77_Z\x87\xac\xab\xf6Gq\xfa\x8b\xfd\x8d\xae~\x0d\xfbbup>\x13\x04\xf1\xacM\xa1\xf1\xc8\xb2fe\xfb\xbb\xc6\x0d\xc4\x01\xc2\x88m\xf4\xc7&\xbd\xb0\xb7\xd6AN\xf6\xa5'\xeb\xa8\xd5V\xfeJW~V\x00-`\xde\xe9UT\x94\xb4\xd0\x96\x07\x0d\x11\x8ci\x8e\xe1R\xb3\xaf8_\x8f\x02\x0d\x136&\x0b@\xefHu]\x12\x93\xbc*(\xb9\xa3B\x12V\x0c?\xd0/\\m \xddl\xa5\xa7\x18&1\xf3\x18ai'\x17Uc\x93\xf2-\x16\xad\xed\"P\x8bInr\x15\xb9\xa1B50\xabwK\xe2\x81vQJK\xa8\xa3\xa9\x9a2\xf9\xaf\x7f\xf4\xa7a\xaah\xb6/&\xcf\x06\xeeq\x01T\xa9\xe8\x98p\xb9\xcfp\xdb\x147\xa4I4\x7fqm\xab\xa8\xeee\xb7\x94\x1bzCXS\x96x\x17\xf6\x9a\xf7\xde\xaa\x02\xa8=\xafJ\xed\xbdM\xe7\xcf&\x1f*\x10eE\xa5m\xaaj\x99\x92\x88`\xb5\xd0\xe8\xa7\x9e\xb4n\xb7\xb4$\xe8\x9a\x90\xbd\xaa\xae\xe7\x05\x97\xfe[\xdd\xc2\xc6\x88\x87w\xa4\x81\xc8\x90\xe0;\xd2q7\xc5\xe5\x86WTnw\x02\xed<\xc3\x1a\xa1b\xcb\xb9\xda\xb9{\x8f\x91j\xcd\x95]\xbdQ\x86\nRi\x90\xb7\xe0le1*\xb2\xd8,\xd0\x16W\xdat~-|\xab\x88\x9eH_\xeep\xb1\xa5\xcc\xbb\xf1\x1eB\x07\xe8\\7\x8f \xa8\xc0\x82\x88\x93\x9evm\xed\xa9\xcf\xb6\xd8\xd5\xb7\xe0\xba[\xfa\xf2\xb3\x15R[[\xcaj\xe2\x80\x93\x1dgT\x1a\xd4\xb5\xbc7ia\xa1\x8aET/1\x07\xa7H\xb3\x98f\xf7\xe5\xb7!R\x18}\xf6\x1e\xda\xae\xe9\xa7\xaa\x1c\xac1\xd3Y*\x87\x0bcKPi>\x00~\xca\xe0)\xf0Sr&@#\xc0O\x01~\x8a_\x80\x9f\xa2\x05\xf8)\x87\x02\xfc\x14\xe0\xa7\x84\x04\xf8)\xc0O\xd1\x02\xfc\x14\xe0\xa7\x00?\x05\xf8)F\x80\x9f2\x85\xe2\x01\xfc\x14\xe0\xa7\xb4\x02\xfc\x94C\x01~\n\xf0S\x80\x9f\x02\xfc\x14\xe0\xa7\x00?\x05\xf8)\xbf\x07~\xca\x1eWxG$\xa9z,\x155\xce\xdc-\xa0W\xb4;;\xf7N\xd2\x0e\xe5n\xfc\xd0}\xec\x85\x06n\xeb\xa4B\xd9\xab!*P\x91\x9fkZ\x91\xd5+$\xab\xba\xdbz\x1e\xdb\xc4hRM\x0b\xf9\x85\x194>\xc2\x8cci\xd8\xf0\xc5\xcds\xb5T\xa0b\x8b)\xf3\xf3b~\x8b\x8c\x98'\x82\xd6\xd1\xd5\x11F\xaa~\xefl\xa95m\x0f\xf5\xaf\x88MO\x9f-o32\x0e\xa37P\xd1)W\xc0Rg,\xbb\x01\xfd\xc4[\xc5H\xb0m\x8c$Z\xc8H\xaa\x9d\x8c\xb4\x8a\x8d\xbd\x95\xa5?\xfb\xa2\xe1\x02\x18\xbc\xd4\xa9\"\x14\xe9\xa2/k\x82e]\xc5\xcb\x9b\xa3=# \x1d\x1a\x19[\xad\x88Q\xd4HI\x85F\xd4\\]\x1a\xf8\xa0$m\xfc\x8f\xc6\xde\x99H,Ck9\x86Q#\x7f\xb1M\xa1q/\xbb-\xb6\xcd\xa3\xb6g\x16\xbc\xd2fj\xc9#\xe90\xb2\xe1R\x0d\x89fb\xbd!\x15U\xbb\xc6\x18p\x8b\x1c\xe4\xe8F\xf4\x16\xb3\x95\xd8\xe2k\xaf\xb9\x17ei\xdc\xe6\xadke\xf7\xd0\x98\xa9\x1d\x8b\xb6i\x9a\x8a\xa0\x95Z\x1bw\x94\x11DX\xc1\xd5\x06&\x8c6\x18\xd8K[\x87\x85FA\x83o\x16[\xcc\x18)\xb5\xb1T\xed\xb5\x89\x146W\xa5\xcb\xc1,\xe1M%\x10_\xdeH\x7f*2\x18\x8d\x8d'cO'\x1dM\x12\xb6\n\xea0\xdd\xbd \xabw\xe1Q\xf2\x12}\xb8|}\xf9\xe6\xea\xe3\xdb\xf3\xb7\xe7\x97\xe7\xaf\x7f8\xff\xbfo\xbe\xbb\xfa\xf8\xf6\xc3\xc5\x9b\xb3\xf3\xef\xcf\xdf|\x97\xfcR}\x97|\xe9\xf2\xfd\xffyw\xf1\xe6m\xf2\xbd\xc8K\x8e\xf63\xa9\xc0\x05\xaf\x99$\xd5\x1eW\xf2>\xafM:\x1f\x98}\xc4\xb4\xa5\"k.\xcf\x99\xc9\x93\x0b \xca\xeb\x0eh\xd4\x9c\x82\x86t\x18\xbblr\xc70\x18j)\x9a\xd6\xe1\xdeS\xd3\x1ac\x93\n\xca\xd0p\x8f5\xfc\xc9\x15\xd4\x1b\xb7>E\xc5k\xeb\xedj\x01l\xca\x89!\x87\xe6(j_\x915\xbd\x8bih0\nv;*5_\xa8a\x1d\xab\x04\xdaIj\xd8\xfe\x11\xb3^\xceH@\x99\xa3A\xc95\xb9\xbfJ\xd7\x07\xe5\xb7:\xca\x03QQ\xd6\xda\xa5\xe4G\xad\xb3\x0b\xa32*\x1a\x1db\xb9\xb5\x8a4K\x98R\xe55\xb9\x8f\x18\xf3\x91\xb5\x8a\x15\x9c Y\xd5\x9a\xd9xM\xee\xd1\xba\xe2;\xfd\xf9\x05\xd6q\x0cW.-}\xb8\x8f&\xb7$\x08\xef\xf7\x84\xad\x9e\xabo\x17\xff\x0f\xb9W\xff?\x89\x97a\xf8\x85\xae\xc4\x89.\xfcb\xf1\xc2o\xe2^\x91\x12\xdf_\xedIE\xf91\xbb\xf7\x0c\x06\xf5\xa0\xf7\xea\x8c\x91\xc9x\xca\xec\x9d3\x0b\x9c\xbb\xd1\xbfj\x8f\x94\xcd\x0e\xac{\xb6\xb6\x03\xb91\x11zS\xebl)\xbc\xcf;\xe7xc\x0b9x\xabWf\xb7W\x15\x92Wd5<\x1f\xeb\x01\xec\x1b\xb3{\xbc\xa1L\x1f\x95=\x07N\xd3\xf1\xdbW\x9a\xa3\xef\xe1\xab\xd3]\x04\x18\xb9\x93W\xd7$\xb0T';Kr\x10\xc7\x03\xf09q\xa5p<f\xf5\xa7%\x06aaw\x9f\x17xC\xde\x9bh\x7f\x0b\xf3<\x90\xd8\xcf5\xa9\x0c\xf9^%\xab\x14H\xd0\x8e\x0b\x89\x88\xa6\xdbh\x8e\xce\x02\x9d\xcb\x8eUn/\xef\x11\x8d\\\xdcS\x11\xcd\xc5b\x1c\xedxE\x1c\xf7\xca\xd7\x93%\x97x\xea\xb5D\x19\xe3.5\x1b\xea\xec\xb5\x16\xf5\x1f\xc6\xefCuAG\x17\xebp\x93B\xf5\xed*Z/;W:\xb1\xd0tu\x8b\x05\x12D\x9e *\x85c\xc1 T334W\x86\x18tK=\xdd6=\xeaMQ:\x1cw\xde\xb3\xa2R\x866\xef/\xceZ\xda\xbb5Q\nt\xab\xda\xcc\xd7<~\x92e\xc1+\x93\x86&\xa4\xba\x98\x92\xce\xe0\xb9\xc5\xc2\x1c\xe6\xba\x9a\xf1\xaa\xc3}\xf1\x81\xef\xdarG\xe1\xb9\x8a\xec\x89\x9e*\xbf\xc5U\xd3H \x14\xa0\xaf\x16\xdd\xbfC8\xc0\x10`L\xf8(\x99\xa1\xb3,yq\x1d\xf2I9b\xae\x01w\xa4dq\xc1\x1di \xe0\x8e\xf4I\xdd\x91\xe2\xdd\xcb8%\xcd\xe2\x8e\xd4wD\x1a\x96\x10\x02\xe7\x82cR\xf2\xd8\x92\x9e\n\x8d\x80c\x128&\xf9\x05\x1c\x93\xb4\x80c\xd2\xa1\x80c\x128&\x85\x04\x1c\x93\xc01I\x0b8&\x81c\x128&\x81c\x92\x11pL\x9a\xe2\xdb\x03\x8eI\xe0\x98\xd4\n8&\x1d\n8&\x81c\x128&\x81c\x128&\x81c\x128&\xfd\xde\x1d\x93Z~\xd0\xe2\x9at\xd7\xba\x18\xf3\xc6Rm\xb0\x9dB+\"\xeb\x8a\x19BE\x97[\xb0hx9\xda\x18\xb6\x19X\x8d4[\xc0\x90\xb4\xe3\\\x9bwLc\xec\xfa\xb4\xcc\xd7kA\xa4\xda\xa9\xf7\x8b\x8b:\xc6|Az!^)\xb3\xcc\x84\xceo\xad\x8b\xd4\x1a\x97\"\xe1#\x85B\xa6\x11\x8f\x12M\xf9Bz\x1c\x98%le\xb4*Y\xbd#\x15-\xdcoz\xb49\x12\xbd\xb6\x0bm s\x8a\xafYc\x8a\x1b\xecZ\xcfuj%\x11\xa2U\xa11^\xd5\x1a\xe7\xbd&#\xf5\xd9O\xfe\x81\x95; 9x\xd4[\xd2\x1d\xcd\xd5\xae~\xd7a\xc9!B\x931\xd3v{\xb0E\x9e\x87\xf7\x91\xef\x8dQ\xa6\xfb\xd3\xf9\x1a\x95d-\x1d\x01\xcc2\xc2\xdc\xd6P[\x98\xcd\x001\x99(=/\xef\x0dE\x02\xef\xf7\x9fP\x8b]ZV\xfb}L\x97\x9d/\x94Fu\x0f\xe5\xda\xbd\x10\xa9?([\xd1\xc28\xa2X\x9a\x8c\xd1\xa0~\xd1v\xa4nr\x94\x15e\xbd\x1al\xfc\xb0\xc9\xa5\x01\xfb\x06-\xa6\xa1\xe3\x8e\x0dz\xad\x1d>\x1av\xe3`r\xf9x.\x06\xad5\xa8\x82\xde+WDX\x90_\x0f\xafv<\xaa!\xb7\xb0\xa3\x89n\x18\xaf\x06\x16|7\x1a\xfbY\x18\xcd\x1c\xdb\xb0K\xceK\x82Y\xac\x01+rC\xaa\xde\xa7\xb1\xc6\xb3o\x0f\x1b\x8evh}\x15\xf1\x8f\x84^:*\x0fb8n\xbcZ\x91j\xb8/\xff@YA^\xa1\x82\x8b\x1d\x17/\xc5\xea\x1a}\xb1\xf8\xe3\x1ff\xd5\xc6\x11\xee\xaa\xa7\xbf\xf4\x9c\x0f\"\x01\xe0;\x04\xe1\xc6{\x95\x0d\x1cW\xbb\xbe>\x01\x87\xd5\xcf\\\x05\x9f\xbc\xbfj\x90\xd0\xd7\xa9\xef\x84\xdb\xb3Q\x8a\xd7\x11gu$\x1ci\x92x\xc6L^\xa4q\x1fR\x99\xf0\x81\x8c\xfa>F\x95c$E|A\xd9\x9e\xa3I}\xd9\xd7\xa6z\x8d\xe6\xf8\x8c\xa6\xb4e$\xc3_t\\e\x12\xde\x1f3z\x8a&\xf5\x94\x83R\xa1\xb1>\xa2\xad'h0=9\xc2CT\x8e\xf2\x0f\xcd\xab\xd1\xcc\x1e\xa2\xb9\xfe\xa1\xa3\xbcC}\xf5\x8b8\x87\xce\xe3\x1a\x9a\xec\xc91\xb7\xd0\xa9N\xa1\x19.\xa1y\x0e\xa1Iw\xd0#\x9cA\xd3\xae\xa0\x0f\xe2\x08\x9a\x9c\x94\xd3Sr\x86\x0bh\xb2\xd9Q\xf6\xd0B\xb3:\x7fNp\xfdLi4\xdb\xed\xf3\x81\x95r\x8c\xc3\xe7\x04w\xcf\\g\xcf\x94k\xe4\x839z&{:\xca\xea\xedh\x84\x8bgV\x0b\xa3<*J\xde\xf2>\xa7k\xe7x\xc7N\xb4\x8c\xd1\xb4\xc6\xbau\x8ew\xeaL\xbbt&[$\xc3\x03%oH\xf6\xbc<\x0d\xf3\xb2\x16R\xbb\xe8\xa1\xa5&\xd4\x19?L\xeb\xdbaV\xd2\x02\x87&+g\x18\x8b\xac\xfef\xc5\x7f\xa9\xf6<kK>Do\xdf]\xbe\x19x\x9c\x96|C\x0bg\x13\x08$\xd50\xb2\x0cX(\xf8.H\xe42\x93\xaf\x87\xa2\x95VS{x|\xc3V\x1d\xefT\xad\x0bu\x1c4\x83U\xcd]6h\x92\x9b_\xbc\xfbR\xc9\x11f\x9a\xc0\xe6+\xab {\\\xe9\xdd\n\x1bZ\xb6\x8c\x18U\x19\xffE\xddT\xdaf\xb2$\xe8+\xe4\xbc\xf3z\x05\xd6\xd64\"$^\x96Tx\x99x=?\xdb%\x91\xb7\x840$o\xb9\xa9\xcb\x81\xca\xfe\x01.\xe6\xaa\x88\xac(\xf1\x11@\x8f8\x19\x83'\\\xb2\xb8\xe0 7\x10\xf0\x84\xfb\xedx\xc2\xcd\xe1\x08\x17\xf1\x83C\xdf\x12\xa1)\xa3\x87\xbb\xe2\x13\xcd\xc16\xd6y\xb5\xf0\x98\x89\xcc\xcfK\xb1\x9aU\x1b\xa0aF\xd1\x99\x10\xfc\xf0\xc0\x0f\x0f\xfc\xf0\xac\x80\x1f\x1e\xf8\xe1\xb5\x02~x\x12\xfc\xf0\xfc\x02~xN\xc0\x0f\x0f\xfc\xf0\xc0\x0f/s\x97\x04~x\x8d\x80\x1f^W\xc0\x0f\x0f\xfc\xf0<\x02~x\xe0\x87\x97R>\xf8\xe1\x05\xbf\x01?\xbc\x9e\x80\x1f\x1e\xf8\xe1\x81\x1f\x1e\xf8\xe1\xf5$\xd7'\n\xfc\xf0\xb4\x80\x1f\xde\xef\xc1\x0f\xaf\xc7\x90\xeb\xa44 \x7f5X\x9d\xe5g{\xf9\xc6\x9f\xeeJ\xb0\xa1\x8f\xc5\xa9eBvX\xb4>\x87\x8b\x8e{a\x0b`\x9e\xe9O?h\x16\x90s\xc3\xe8\xd0\x0e\x0c=\xc8\xe3\x95\xd0$u\xc8\xbc\x0b8jtr\xb2/>Y\x9f\x8d\xa6\xbdWW\x87\xaa\xed\x8as\xe0H(\xcb\x11\xa4\x0f\xbf\x9f\xceN9\xd6o\xa3_\xf4(\xa3>\xae\x03\x94\xaa\x07J\xd6\x05e`\x9a\x19UB\x99v1#\x93\x90\xcdHz\x07\xc6\xad\xc8 i^t3\x89o\xce\x8dp\xe6c\x9c3\xa1\x9c\xd3p\xceHr\x94\x8d@:\x8f\xc6:\xe7F;G\xe2\x9d3#\x9e\xe30\xcf\x91\xa8g\xac\x0f7xh.\xee93\xf2\x99\x85}\xce\x88~\x1e\x8b\x7fNB@g\xc2@\xa7\xa0\xa0\x91\xc44>\x9a\xc6A\x1f\x04 }8,\xf4A\xd0\xd0qx\xe8\xec\x88h.&:+*\x9a\x8f\x8b\x8eFF\xc7c\xa3\xc9\xa9\xf0E\x06::\x03>\x9a@H37T\x19(\xe9\x98]\xd7h\xa44\xb6\x08.\xf9\x0d\xc9\xc0Js\xcb7#^:\x061\x9d\x193\x9d\x86\x9a\xc6z\x90H\xe3\xa6\x93\x91\xd3@j*\xb7\x14v:\x17z\x9a\x0d\x01f \xa8\xa30\xd4\x84Y\x7f\x12\x8e\x9aJ3hM\x9c M\x1d\xaf\xcc|D5U\xb7 \xa8\xeaD\\5\n\x1de`\xab\xf3\xa2\xab\xf3\xe0\xab\x19}\xe3h\x8c5\x1be\xcd\xc3Ys\x91\xd6\x8c\x8e3\x1em\x1d\x83\xb7F\x10\xd7\x990\xd7\x91\xa8\xeb4\xdcu\x14\xf2\x9aRzt\x08\xa5\xbe\xcdG`\xe7\xc3`\x93\x85\n\x8e\x9f\xf9\x90\xd8\x0c,v:\x1a\x1bHN\xbd\x16\xc3cgFdS\x98\xecDT6\x90\x969C\xc7\xcc\x08id6\x8a\xcd\xce\x8f\xce\xce\x8e\xcf\x86\x11\xda91\xda\x1c\x94v<N;\n\xa9\x9d\x80\xd5\x8eEk\xa3xm\x1c=\xcb\xc7\xcfr1\xdb \xa8\xedH\xdc6R\xdd)\xd8m \xa9\x0e.\x9a7$\xf2\xf0\xdbH\x97g\x9b8\x82;+\x86\x9b@q\x1f\x06\xc7\x9d\xab/\x8e\xc0r\xc7\xa0\xb9\xa1\xed\x81\x07q;x/}\xda\xef\\S\xdd\xc1?;\xf7Tw\x01=sv\xf7Y\xbc:\x93\xa3\xf9\xc2\xa7\xee\xd4%\xd5\xe0~\x0f\xee\xf7\x8d\x8c+.\xb8\xdf\x0f\x04\xdc\xef?\xa9\xfb\xbd\xed\x9a\x077\xc8\x0f\x1c\xef;s\xee\x1c>\xf8\xdd)\xfc\xfd\xc5\x99=\x8d4\x1f\x81\xfb\xfb\xe0)\xb8\xbf\xe7L\x84F&\x91D\xc0\xfd=\x87\x1a\xe2\xb3\x11\x8c&\x86L\xa1\x85\x80\xfb\xfb\x8cd\x901T\x90QD\x10p\x7f?\x96\xfe1\x81\xfc1\x0b\xf5c<\xf1\x03\xdc\xdf\x8f!|\x8c\xa1{\xccL\xf6\x90YT\x8f\x19\x89\x1e\xb94\x0f\x8f\xcd\x02\xdc\xdf\xfb\x92A\xec\xc8\xdd%\x8d&u\x80\xfb{\x16\x95c\n\x91\x03\xdc\xdfC\xaf%\xc9\x1b#\xa8\x1b9\x8e\xd3ch\x1b\xe0\xfe>\xc5\x83<E\xd3\x00\xf7\xf7|jF&1#\x87\x96\x91G\xca\x00\xf7w4\x91\x861\x82\x84\x01\xee\xef3\x90.\x92\x94\x8b\xa9\x84\x8b\xe0\xba \xee\xef\x07\x02\xee\xef\xe0\xfe>\x909\\\x91s\xa9\x14\xa3\x89\x14\xa3h\x14\xe0\xfe>\x91:\x01\xee\xefN\x1e\xc2\xfd\xfd\xc9\xfb\xbd;d\xd8\xf8&\x9f:\xdc\xfb\xf4\x97\x01y\xe0\xd7S\x83\x90v\x1e\x98\x1f\"\xf7\x13\xfa\xdd\xe5]\x8e\x1e\x8f\xf9\xc1\x9d\x1a\xf38\xcd\xf7\xf2\xb3\xef>Y\xbf\xf9A{\x84\xd0\xc2It\x908\xe8\x97\xb4w\xe5\x18\x8cf\x87\xfb\xf2\xc0\xbe)P_\x1c\xd2\x9b\x04\xe8\xe9,\x02 &\xe1\xbc\x19\xc0\xbc\x89P^\x984\x98\x05\xe4\x1d\x05\xe3M\x02\xf1\x10\x0e\x92\x913!\xbc)\x00^\xcc\xac\x9e\x05\xdf\xcd\x0c\xdeeAw3\x02wI\xd8n&\xd0\xee\x18\xc8n4`7\x03\\73X\x97\x80\xeaf\x07\xea\x1e\x06\xa6\x9b\x1d\xa4\xcb\x87\xe8\xa6\x01t\x11\xa5\xa7\xe0\xb9\xd9\xc0\xb9<hn\x14073,\x97\x02\xe5\x8e\x84\xe4\"\x80\\r{\x92\x04\xe3\xf2\xf6/\xf3\x02q)\x18.]\xa6i\x10\x9c\x9b\xd9= \xa6\x00\xb8\x19\xe1\xb7#\xc07?d\x1e\x83\xde\xe6\x05\xde\xe2\xb0\xdb\x1c\xa0[\x16j\x94\x00\xdc\xb2\xe1\xb6\xb0\xf5w<\xd4\x16N\xcbk\x83\x99\x05d\x1b\xa3\xac\\\x80-\xad\x93lpm\x02\xb4\x162\xf9\xa7`\xb5\xf9@\xb5\xe3!\xb5h{\x1f \xa7e\x81ii(-\x07H\x8b*{,\x88\x96\x0b\xa1\x05\x00\xb4\x19\xe0\xb3\x11\xe0\xd9x\xe8,\x1b8\x8b\xe0M\xc1\xe2D\xbe\xc9\x05\xcc\xe6\x81\xcb\xa2\x85\xf7<\x99\x04\x949P\xcc\x93^\x00&\x9b\x19$\x0bCdS\x012m\x1f\xf1\x15\xdc\x0f\x8f\xcd\x0b\x8e\x85\x8e\xc1)`,\x08\x8b\xcd\x0b\x8aM\x87\xc4\x02\xf0\xd7$\xf0+ t\x8d\x83\xb9\xb2A\xae\x91\x10\xd7\x18\x80+\x08o\x85K\x93\x0b3\xe4A[#\x81\xad\x11\xb0\x96\xb7j\xf3BZ!@\xeb\x088\xcbk\x9d \x82Y\xd3\xa0\xac\x18l5?hu|O\xca\x06\xacr\xe1\xaa\xc3\x15\xd0\xf9\xf5\xa6A\x94@0\xddH<\xdc\xe8\xe9\xbb\xefP|\xfe\x9d?\xcb~\xb1\x06\x89\x80\x07/x\xf062\xae\xb8\xe0\xc1;\x10\xf0\xe0\xfdMx\xf0\xf6`\xe9Y\x9cx\xfb\xc0:\xf8\xf1\x1a\x01?^\xf0\xe3m\x05\xfcx\xc1\x8f\xb7\x95)4\x80`b\xe0\xc7{(3Q\x02\x8e#\x05L\xa0\x05\xccB\x0c\x98\x9d\x1a\x90$\x07<\x00=\xe0\xa1\x08\x02\x0f@\x11\x18C\x12\x98J\x13\x88\xce\xe1)\xa2\xc0\x8cT\x81\\\xb2\xc0H\xba\xc0\xec\x84\x814e\xe0h\xd2\x00\xf8\xf1&K6\x8dD\xe0M\n\xfcx\xa7\xd0 R\x84\x82y(\x05\x998y\x92V0\x82X\x90tB\x1cI.\x00?^\xf0\xe3\x05?\xde\x8eL\xa0 \xe4\x93\x10\xc0\x8f\xd7\n\xf8\xf1\x82\x1f/\xf8\xf1\x1e\xcat\xd2\x8279\xf0\xe3\xf5~\x90Es\x00?\xde\xf9H\x0f\xe0\xc7{4%b\x9e>\x97M\x8b\xc8'F\xfcv\xfcx\xdb\xd2\x0c`\xfe9\xb3\x08\xc2\xe9\x07y\x1f@\xd8\x0f\x95\xf7X\xffe\xdd\x8e\"\xecf\xdcB\xa0\x17\xfa\xcd\xc6\xa7\x18\x97e\xa7\x13\xb8\xd5\x8b.\x8bn\xcb\x8az\xb9\xe3\xab\xba$ ?b\x93\xf6gN\x0fO\xd4\x7f\xb8\xab\xab\xae\xf4\nc^j\x82\xf5K\xbd=\x1c\xaa\xa9\xaf\x94V\x82\x85BI\xbcr\x87\xef\xae\x1c\xbc|%\xe9\x8e\\\xedIu\xb5,yq\xfdpT\x91\x1c\xfb\x98.\x1a\xdd\xd5;\xd4\xa0\xdf\xaaxhO*\xa4\x8b\x87\x9eS\x86\x18f\\\x90\x82\xb3\x95xqb\xac\x96\x92\x07\xd2#l\xcd\xab\x82\xd8\xafW\xa4\xc4\xf7\x16\xb0l4\xed`\xb8\x8a\xacKR\xc8\x18`T\xe2jC\x84Dx\xc7k\x8b@R\x07\xbfJ\xc3\xe7\xa2\xccZZ+\x82\x05gx\x19\x04\x8b$\xbe&\xdaZfa\x0c\x95\x00#w\xd2\x96\xb5f+R!\xa6)0n,\xf8\x99+\xc8\xf8\xab[\xce\xc8B\xf5q\xbcV\x85\xe1\xb4\xd0\x8b\xf2\x1f^~}g\x96\xed\xa1V\x03\xa9\xe9\x12\xf4\xbb\\\xbc\xf9\x06\xa4\n3F\xe7 S\xd8\x99\xa4%Q\xb4\xa5\x02\x16\xc5\xe0)\xb0(R\xdd\xb4\x15`Q\x00\x8b\xc2/\xc0\xa2\xd0\x02,\x8aC\x01\x16\x05\xb0(B\x02,\n`Qh\x01\x16\x05\xb0(\x80E\x01,\n#\xc0\xa2\x98BD\x00\x16\x05\xb0(Z\x01\x16\xc5\xa1\x00\x8b\x02X\x14\xc0\xa2\x00\x16\x05\xb0(\x80E\x01,\x8a\xdf\x03\x8b\"\x03\xad7\xd1$t\xa8q\xf3g\x0c\xac\xb7o\xf4@z\xd5X\xe7\xdf\x9e\xb9\xb8\x14\xfa\x08\x88\x0d\xaa\xe9G\xe5\xed{\xf6\xd9\x93E\xe3\xfb\xea\xe8\xca\xa7\x80\xb9\x02\x11\xc5\x8d\xb8 \x1e\xc6^gc\x87\xd8\x95\xcaV\x03\x11\x16\xb2Df\x98\x87\x08\xabw\xe1\xdd\xf6K\xf4\xe1\xf2\xf5\xe5\x9b\xab\x8fo\xcf\xdf\x9e_\x9e\xbf\xfe\xe1\xfc\xff\xbe\xf9\xee\xea\xe3\xdb\x0f\x17o\xce\xce\xbf?\x7f\xf3]\xf2K\xf5]\xf2\xa5\xcb\xf7\xff\xe7\xdd\xc5\x9b\xb7\xc9\xf7\xb2^:\xfb\xe1\xdd\x87\x8c\x82}\xff\xc3\xc7\x0f\x7f>\x7f\xfb\xa7\xbc\x17\xcf\xde\xfdx\xf1\xc3\x9b\xcb7\x81\xb7\x1d\xf8<Q]9f.%&\x84\x80#\x88P;\x1au'\xd0\x0104\xa8b{\x87\x010\xc2\x0do;\x9e\x88L\x82F\x93'HU\xe6\x04\xd9F:A\xe6\xbfN\x7f\xf6/\xa7 \x14\x03\x91\xbaj\x89\x9cQ\xd3\xdd\xee\x15\xb2gj\xf4\xc1\x13\xb6\xc6\x93\x92JGM0N]j\x0d\xfd\xcfZ\xe8\x11Ui\n\xc4\x96\xa8\xc9L\xdb\x9c\xb7\x98\xad\xc4\x16_{M\x92\x83\x84\xadV\x86i\xe3B\xad\xd7%Yml\xdaM\x9aHH\xb2w O\xc1k&I\xb5\xc7\x95\xbc\xefO\xac\x91,}\xf9\x15\\\xad}r\x98\xd9\x02\xbd\xdb\x13\xd6N\xe0\xb8\n\xeb\xaa\"x\xa5q\x13A\xd8Jo4*R\x10zc\x8eWD\x06\xec\xd3Z\xfacoX\xb8%Qe(\xb9 &\xdd\x023\xc48*9\xdb\x90Jm5,i\xc7\xe4\xacy\x19:\xe3`~\xf9\x05r\xbd\xd4\xdb\xf6\x0e\xc1\xd5:\xab\xf7\x9b\n\xaf\xba\x0d\x85\xa5$\xbb\xbd4(\x86@\xeb\xb2\x16[\xd5=({\xb9.\xb5\xe1\x7fd9\xdc\x18\xf1\x16\xa6m\xc1&#\xcc\xees3\xe3\xd5\x8a\xa8Y>\xb1\x8e\xdcn\x89\x85>Hw\xe6\xd0_\x13\xad\xfa\x9a\xd9\x7f<\xdc\x92\xf2\xee\xfdwo\xde_\xbd}\xf7\xf6M\xc6\xd4\xd8~\xf0\xf1\xad\xfe\x7f\xc6\x9b\xf1\xf7\x9a\xb9zT9r\xa7\xe8P\xf5^\xa1\xbf\x93\x8a\xbf4\xe7S\xb5C\xf5\x07\xfbj\xc5\xb5h\xaco\x0d\x14\xf3\xca\xf5\x11=\xc2\x96j\xa5(\xe9\x8dnY\xb5\xcff\xf7&\xd1\x13\xbb#\xdf\xe1{\xb4\xa2\x1a\xaeYW|g\xa6@\xf5B\x0c\nlbl\xdd\xa3[R\x115de\xb4\xff\xf7\x9a\xa4-!\xae\xba\xc5#w\xb8\x90:\x0eP\xa7\x14\xbe\xac\xbc9ug\xd1\xd4Fj0\xe1fm\xa0\x82[;\x94\xb1\xbd\xd3\xef\xf0\xca\x1f\xc0\xad\x95\x8cq\x85FtCds\x0d/4V\xbd\xfc\xd6\x9a\x1e4&\x1aMOO\xce\xbd\xadg\xb8\xe1\xed\x0b\xf3T\xda\xb5]\xdb\\\xe1j\x05:HC+\xdf\xf2}\xb0\xa1b\xbb\x7f#\xc13\x80\x91\x8c\xfa\xd8\xbaD\x9a\xae\xa4B\x93s\xbc4wq\xa2\xb7yf\x18[\x98R\xb5c\xb8\xeb\xd9\xf1&4\xbb+B\xb1\xd2d\x01\xa7bm\x03\x90\x15\xbe LP\x96\xc4p\x04,\x9d\xd6\x03\xdf\xe3\x9f\xebv\x99\xb2Y\xba\xc9\x8b\n\x847\x15!+T\xef9C\xabZ\x1b\x9bb\xfc\x91fa\xf7\xbe\x91\x18\xa2\xf95\xd2\xa3\xce\xeb\x97\xd0Jzt\xe4\xe7\xd7,\xe3\xf1,\xed\xf6\xe6J\x90\x9fk\xc2\x8a9\x18\x05\x11vwN\xfb\xba\x0d\x97+\x11\xa2lE\x0bu$\xd1C\xbbT\x7f\xc9\xe6-\xbb\x19\x0b\xf7sR\xa9r\x19\xb3\x7f\xb7/\xc7z<\xb1\xf6b\xbeF_\x0c\xb2\xef\xee\xcf\x98\x0e\xf8\xa7v\xb1\xa9\xca\xf8\xd6\x91\x9c)\xfb\xdc5\xde\xca\xdaP\x9aC\x1e\xee\x8cI\xb9\xed\x1a\x93uG\xc3\x81\xa5+Z\xf9\xb6\xab\x18\xdb\x99gO\xd9+\xb4\x9b\x91\x84\xe4j\xb1\xee\x9a\x83\xa4\xa3\xb9\x0f\x93\xd8\xe3\x0de\xda2\xe4\xb1\xb2\xd8\x91\xd2\xbc\xd2\x18{\x0e_\x9d\xee\xd6\xc0\xc8\x9d\xbc\xba&\x81\x1dA\xb2\x9f'y3=\x15\x1d\xc4\x15t\xe2J\xe1X\xef\xeaOK#\xc3\xc2\x1e{.\xf0\x86\xbcW\xa3@\xc8\x85y\x1eH\xec\xe7\x9aT&\xfc\xa5\xf6\x0c\xd8\xe3\x0dA;.$\"\x9a\x9c\xa5\x19]\x0bt.;6\xdc\xbd\xbcG4r\x8d[E\xf4V\x8cq\xb4\xe3\x15qL=\xdf\xc2.\xb9\xc4S/\xa9\xcb\x982R\x13\x86\xce^kQ\xffa\\\xb2T\x17t\xe4\xc2\x0e\x93-T\xdf\xae\xa2\xf5\xd6\xe1J'\x16\x9a\"n\xb1Z7\xe5 \xa2R8\xce\xa4\xd0\x9e\x18jl\xae\xcc\x96\xe9\x96z\xbamz\xcc\x9b\xa2t<\"x\xcf\xe6N\x19\xda\xbc\xbf8k\x9d$\xacA[\xa8#\x9c\xf7\x10\x1f\xa0\xe4\x16\xbc2ih\xfare*\xdf\x98\xc7\xd5\xec\xa6\x0f\xdf]\xcdx\xd5\xe1\xbe\xf8\xc0wm\xb9\xa3`nE\xf6D\x13\x88\xbe\xc5U\xd3H \xcc\xa8\xaf\x16\xdd\xbfC\xa8\xd1\x10\x8eND 6C\xc7\xf8\xd2\x04\xa2\xc2\x1e1\xd7@@\xe0dq! \xf0@ \xf0'\x0d\x08\x9c\xe3\xc1f7:Y\x9ek\xceW\xad\x8f\x819\x01\x8f5+\xe0\xb1\x06\x1ek\xad\x80\xc7\x1ax\xac\xb5\x02\x1ek\x12<\xd6\xfc\x02\x1ekN\xc0c\x0d<\xd6\xc0c-s\x97\x04\x1ek\x8d\x80\xc7ZW\xc0c\x0d<\xd6<\x02\x1ek\xe0\xb1\x96R>x\xac\x05\xbf\x01\x8f\xb5\x9e\x80\xc7\x1ax\xac\x81\xc7\x1ax\xac\xf5$\xd7{\x08<\xd6\xb4\x80\xc7\xda?\x8a\xc7Z,\xeeoK\x05Z\\\x93\xeeZ\x17#\xd9XV\x0d\xb6ShEd]1\xc3\x9d\xe8\xd2\x08\x16\x0d\x05G\x1b\xc36\x03\xab\x91&\x06X\xee`\x94V\xf3\x8ei8]\x9f\x96\xf9z-\x88T;\xf5~qQ\xc7\x98/H\x8f\x18M\x99%!t~k\xe3\xf6\xaeq)F\x04\xee\xed\x99F<J4\xe5\x0b\xe9q`\x96\xb0\x95\xd1\xaad\xf5\x8eT\xb4p\xbf\xe9\xd1f\xc9\xe4\xc6.\xb4%\xcc)\xbef\x8d)n\xb0k=\xd7\xa9\x95D\x88V\x85\xc6xUkH\xf7\x9a\x8c\xd4g?\xf9\x07Vn \"sG\xbd%\xdd\xd1\\\xed\xeaw\x1dr\x1c\xe2.\x193m\xb7\x07[\x9c\xb9.\x07\xf0\xad1\xcat\x7f:_\xa3\x92\xac\xa5\xe3zY\xf2\x97\xdb\x1aj\x0b\xb3\x19 &\x13\xa5\xe7\xe5\xbdaC\xe0\xfd\xfe\x13j\xb1\xcb\xc0j\xbf\x8f\xe9\xb2\xf3\x85\xd2\xa8\xee\xa1\\\xc7\xbcF\xea\x0f\xc7\xe0l\x191F\x83\xfaE\xdb\x91\xba\xc9QV\x94\xf5j\xb0\xf1\xc3&\x97\x06\xec\x1b\xb4\x98\x86\x8e;6h5uw\x88\x8c\x83\xc9\xe5\xe3\xb9\x18\xb4\xd6\xa0\nz\xaf\\\x11aA~=\xbc\xda\xf1\xa8\x86\xdc\xc2\x8e&\xbaa|\xe8\x96\xe3Fc?\x0b\xa3\x99c\x1bv\xc9yI0\x8b5`EnH\xd5\xfb4\xd6x\xf6\xeda\xc3\xd1\x0e\x83\xaf\"\xfe\x91\xd0KG\xe5A\x0c\x9dM\xf3\xe0\x87\xfb\xf2\x0f\x94\x15\xda\xd3C\xec\xb8x)V\xd7\xe8\x8b\xc5\x1f\xff0\xab6&9_\x9f\xfe\xd2\xd2\xbe\x7f=\xdd\xf3J\x8a\xd3_,\xed\xfcW\x93Z\xc43\xbbu\xccf\xda'\xfb\xac\xef\x81\xe1\xf3\xc3\xfe\xccU\xedi\xbba\x07){\x8e\xf8\x8c\x85\xe0\x05\xd5\x96]m\xe06\x03\xdb\x10\x19;\x9e\x11\x87\xc9L\xe7\xf3E|\xb2\x8f\xf1\xc8N\x82\x1f1\xd7\xb9\xa4Sl\xe2\xbb\x88'v\x9e\x1fv\x86\x17v\x96\x0fv\xa6\x07v\xbe\xff\xf5Q\xde\xd79\x80\xcd\xbc\x9e\xd7 \xbf\xeby\xbd\xae3}\xae\x93\x9d+\xd3\xe3\xfa\x81\xfc\xad\x1f\xdd\xdb\xfaA}\xad\xa7{Z?\xaa\x9funa>\xad\x8f\xf5\xe3xX\xc7\xfd\xabg\xf2\xae>ry\x18\xe5\xcf\x9c\xebU\x9d\xe3S=\xc5\xa3:\xcf{f\xac7u\xd2k\xfa\x13\xf8L\x8f\xf2\x98~\x04\x7f\xe9\xb4\xb7\xf4\x14_\xe9\xe8f\x0b%7\\(\xed\x82\x991>P\xf6z\x8ef\xf7\x8f\xce\xf7\x8eN{\x7ffV\xf5H\xbf\xe8,\xafh\x99\xf0\x89\x8ezD'k\x91r\xfa\x9a\xd3\x17:\xd3\x13z\x84\x1ft\xd4\x0b\xfa\xe8\xba\xcf\xeb\xff\x1c\xf3~\xce\xf3\x0dNV(\xdf\x1f(X\xe79}\x82G{\x04\xcb\xd9\xfc\x81\x83\xde\xc0\xe9\xc9i\xe8\xff\xbb\xa7{RRF\x1c\xc2\xa9\xa6\xfd\x97\\\xa9\xc6\xf4g\xb7(\xf8F\xe7\x92\xc8[\xb5%t\xc4=_\xc5\xcd}bBM\x1c\x82\xecq\xa5\x8e9\xdaKN\xcf\x1a\xc2u7\xbd\xcb\x96\x86\xaf\xaf\xcf:\xfeu\xa0\xc0{m\x15\xe3k_^\xc2\x9am\x9a5MOX:\xad\xce\x97vW\xday\xf1\xc0\xb7\xb8\xe2|=\xcaK$A*\xb4\xddrG\xaa\xeb\x92\x98\xe4UA\xc8\x1d\x15RuC_\xfeA\xdf9\x9b\x98us\xc2\xb2]\x97m\xca\xb7X\xa0\x8a\xc8\x8a\x12\x1f#\xf7\x08\xab\x05x!&\x8b\x0b^\x88\x03\x01/\xc4\xdf\x88\x17\xe2\x04'\xc4Aj]\x1f\xc4\xc1\xa3o\x89\xd0\xec]\x95\xc4Y\xbb\x9d<\xd1\\x\x83\x92\x08\x84\xed\xfce\xf9AN\x85\xea\x1c4H\xae\x99\xf1\x86\xf9x&@\xf0\x87\x04\x7fH\xf0\x87\xb4\x02\xfe\x90\xe0\x0f\xd9\n\xf8CJ\xf0\x87\xf4\x0b\xf8C:\x01\x7fH\xf0\x87\x04\x7f\xc8\xcc]\x12\xf8C6\x02\xfe\x90]\x01\x7fH\xf0\x87\xf4\x08\xf8C\x82?dJ\xf9\xe0\x0f\x19\xfc\x06\xfc!{\x02\xfe\x90\xe0\x0f \xfe\x90\xe0\x0f\xd9\x93\\\xdf4\xf0\x87\xd4\x02\xfe\x90\xbf\x07\x7f\xc8\x96\"\xd6I\xa6w\x94v|\x14\x03o\xf8\xa3\xffS\xf6j\x88\x00\xb4~.\xb2\xaa\x93\xde\\\x8d\xcf\x8fa\xe6\x85\xca\xa2\x0f\xb8\x0fX\x90\xf9\xddmN\x0dI\xe1\xffg\xef_\xbb\xe36\x92uA\xf8\xbb~E\xbc\xfep$\x9dC\x93v\xdf\xf6z=\xd3\xb3F\x96\xe4n\x9e\xf1\xb6\xb8(\xa9{\xce\xec\xb5\x87\x06\xab\xb2\x8a\xd8D\x01e\x00E\x8a\xad\xee\xff>+o@\x02\x95\x97\xc8\xac,\x89\xb6\">\xd8T\x01Hd\x06\xf2\x12\x19\xcf\x13\x91WF\x9c\x87-\xf6\xc6\xf0W(T\xf4\xa5xNF\x03\xe8\x88\x1c\x8d\xbd*\xe2\x83\x8c\x08\x19~\x9cA\xb1c0\xcb\xd8u\x87\xa8\x96\xc1\xf0\x19\xd8\xc3#\xd9\xcd\x17\xe9c\xd4J\xdd\xf5h\x83~\x86\x16-\xaf\xf6\xbf\x81)\x9a\xdch*\xd5\x16 4W\xf0\xf0|:\x8fFU\xcc\xc5\xcf\x0c\xba\xec\xa6U\xf7\x1e\xcc\xe1\xd7\x01\x84\xda\x01\xc1\xb6\x00\x02\x86E4 \x90\xae<)I`\xac\xa7\xbc=\x7f\x9cgS\x97\x17\x90\x0dB\xb2\xb9AY<,\x9b \x98M\x83f=\xc5q\x85\xa2\xc1\xd9\x83\xe1\xd9\xdc\x00m$D\x9b\x19\xa4\x8d\x83i#\x81Z_\x1f\x1e \\,T\x9b\x19\xacE\xc1\xb5\x19\x01\xdbC!\xdb$\xd06\x13l\x9b\x02\xdcz\n\x13\x90n\x18\xba=\nx{<\xf8\xf6(\x00n\x1c\x84\x9b\x1d\xc4\xc5\xc2\xb8Y\x81\\<\x94\x1b\x0d\xe6\xc6\xc3\xb9\xc1\xa9\xf09\x02\xd0\xcd\x00\xe9\x06@]\xa4A\x85\x00vc\xac\xaehp\xd7\xb7\x08^7w\x0c\x01\xefb\xeb\x97\x11\xe2\x8d\x01y3\xc3\xbci@\xaf\xaf\x07ua\xa87\x19\xecu\x94\xc6\xdf\x16\x82{s\x01\xbeh\xd4\x12\x01\xfaF\xc1\xbe\x01$\" \xfa\x0d\x95\xe9t\x80f\x02\x80\xe3\x95\x89\x07\x81CmK\x00\x82\x13\xa1`/\xda\x85\x80\x83\xf3\x02\xc2y aD\xdf8\x18\x16F\x03\xc38h\x18\x0b\x0e#:N<@\x1c\x03\x11{@\xe2L0q$P\x9c\x06\x15G\x81\xc5!\xa5{\x87P\xe8Y<h\x9c\x0f6\x0eV\xca9~\xf2\x81\xc7\x08\xf88\x1d@v\x14\xc7o\xf3A\xc8\x99A\xe4\x10\x8c\x9c\x08$;\xca\x92{h\x9f\x1b!\x0c&{\xe1\xe4\xfc\x80rvH\xd9\x0d*\xe7\x84\x951\xc0r<\xb4\x1c\x05.'\xc0\xcb\xb1\x00\xb3\x17b\xf6\x03~x\xc8\x0f\x0b3'\x00\xcd\x91P\xb3\xa7\xb9)p\xb3\xa3(\x03\xca\xc5\x0d \x1c\xe4\xec\xe9\xf2\xf5\xda\x0f:g\x85\x9d\x03\xc0\xf3q\xa0\xe7\\}1\x02~\x8e\x01\xa0]\xe6\x81\x05q\xdb\xbb/\xbc\xdb7\x8e27\xb0R\xe38s\x13\xd0\x93{w\x9b\xc7\xcb\x98\x1c\xe5\x136u\xcf\x0f2\xa7D\x01Z(Q\xc0\x9e\xc4U\x97\x12\x05\xcc\x84\x12\x05|\xd6D\x01\xaak\xeeeJ3S\x04\x18\x13\xee<[\xc0\xa5-[\x80\xad\xa83G\x81F\xf6\x80\xe11\n\xd8\x9f]\xa5\x80}\xcc<(%\x89#B\x01\xfb\x18f\x88\xcdE\x10\xcd\x0bIa\x85P\xc0~F.H\x0c\x13$\x8a\x07B\x01\xfb\x87\xb2?\x12\xb8\x1fY\x98\x1f\xf1\xbc\x0f\n\xd8?\x84\xef\x11\xc3\xf6\xc8\xcc\xf5\xe8QL\x8f\x8c<\x0f,\xcb\xc3\xe2\xb2\xa0\x80\xfd\xa9 x\x1dX+)\x9a\xd3A\x01\xfb(&G\n\x8f\x83\x02\xf6]\xb7\x05\xb9\x1b\x11\xcc\x0dL\xa8w\x0ck\x83\x02\xf6Sb\xdeC,\x0d\n\xd8\xc733\x90\xbc\x0c\x0c+\x03\xc7\xc9\xa0\x80}HdaDp0(`?\x03\xe7\"\xc8\xb8H\xe5[8\xd7M\n\xd8\xdf\x13\n\xd8\xa7\x80\xfd\x99\xe4\x08\x9e\xc62)\xa2y\x14Q,\n\n\xd8OdNP\xc0\xbe\x16\n\xd8\x87\xc8\x8a\x1c#`_#\xd52V\xfaL\xe3\xf0g\x1fgd\x86\x7f\x9dI\xc4\xd6\xb8 \x7f\xf0\x9c\xb1\xf9\xcf\xfd8\x7f\xfd:G\xa8\xff\x80\x9bc\xa3\xfd3\x04\xf9O\xaa\xa4n|\xb4q\xfe\xb3\xef\xe5\x827\x93\xe8+\xbd\x17\xa5\x0c:\xe80\x1e\xae\xec\xf8$\x0e\x9dL\xc1&\xfd\x18d\x12\x02)^\xe1(0\x88?f@\x1f\x13\xb1G7\xc9\x11\x85<\x1e\x84;&\xa1\x8eP8\xc9\xd3=\x0esLA\x1c}8\x00\no\xcc\x8c6\xa2\xb0\xc6\x8cHc\x10g\xcc\x842\x1e\x821F#\x8c\x19\xf0\xc5\xcc\xe8b\x00[\xcc\x8e,\x1e\x07W\xcc\x8e*\xe21\xc54D\xd1\xa3\xf4\x10\x9e\x98\x0dM\xc4a\x89\x16S\xde=\xbff\xc6\x11C(\xe2\x81\x18\xa2\x07A\x0c\x9a'A\xf4\x10g\xbf\xe4E\x0eC\xb8a\xb8Ni\x98\xa1\x9e\xd9-\x05\x86\x10\xc3\x8cx\xe1\x01h\xa1\x1d\xe3\xf7a\x85y\x91B?N\x98\x03%D\xc1\\\x01\x84\x10\x8d\x0f\xba\xdd\xd5\xf1\xd8\xa0\xbb,\xab\xd3(\x0b*\x18\xa3,,\"\x18\xd6 \x1a\x0dL\xc0\x02]\x18E\x08\x07\xcc\x87\x02\x1e\x8e\x01z\xbf\xf7\x81\xf8\x1f\n\xfd\x0bc\x7f\x18\xe4\xcf\xab\xecX\xd4\x0f\x8b\xf99\x10\xbf\x0cx_\x04\xda\x17\x8f\xf5\xa1\x91>\x0f@\xe6\xac\x8e\xe7\x19,\xc2\x97\x07\xdf\xf3V\xder% \xd9\xd3(\x9e\xa5<\x07\xae\x97\x19\xd5scz\xa9\x88\x9e\xf0\x8f\xd8*n\xc7\xf3\xf2\xa2y\xaemp\x08\xc9s\xe2xyQ\xbct\x0c\xcf\x81\xd7%\xa1uAd.\x0e\x97C\xa3r\x91\x98\\\x0c\"\xe7\xc4\xe3\xdc\xb5\xc1\xe2\"8,.\x12\x89\x8b\xc0\xe1\xacM\xcb\x8b\xc1\xb9\x10\xb8\x03\xf07\xabw\xc6\x89\xbe\xa5ao>\x9c-?\xcavxOB#lX|m\x7f\x05\xd4q\xc83\x8c\x05\x9f\xfc\xd7\x93\xbf\xd7\xbb\xfb\x9e\x06@\x9f\xbf\xb2\xbfrZ\xadY!\x14qL\x11\xc7\x83\xc4U\x97\"\x8egB\x11\xc7\x14qL\x11\xc7\x14q\x1c\n\xb7 \xcf\x83R2#\xfaXL?\x0d\xd5w\x16F\x11\xc7\x14q<J\n\xfe\xef,\x8c\"\x8e\xf7%\x13\x17\xe006@\x02\x1f \x0b# ;' \xc8\n8\x02/\xe0X\xcc\x80#p\x03b\xd8\x01\xa9\xfc\x00\xef\x1c\x1eb\x08d\xe4\x08`Y\x02\x91<\x81\xecL\x810W\xe0`\xb6\x00E\x1c\x07k\x96\xc6\x1e\xb0\x16E\x11\xc7)<\x82\x10\x93 \x0f\x97\x00 \x90\x07\xf9\x04\x11\x8c\x82`\xb8d$\xab\x80\"\x8e)\xe2\x98\"\x8e\x0dI\xe0\x1e\xe0\xd9\x07\x14q\xac\x84\"\x8e)\xe2\x98\"\x8e\xf7%\x9d\xad`-\x8e\"\x8e\xad\x0f\xa0\xf8\x0d\x14q\x9c\x8f\xed@\x11\xc7\x07s!\xf2\xf494\x1f\x02\xcf\x88\xa0\x88c)i\x15\x991\x0d\\\x15\x1a\xc8\x01\xf26\xbd0\xb8\xd9\x1d\x07W\xd0\xc9\x07\xd8\xab\xf9\x1e\x06o\xaf\xb9\xc2\x89?[\xcd\x8f\x10\xe5]\xb3\x0f\xfdU\xc7~\xd9\xb1z\x81;\x97\xfd'\xf6\xa1\x7f\xab\x1e\xb8d\x0bV\xdeq\x83\xa0\xdf\xb5j\xb1\xe5%B\xab.\xe8\x92\x85\xedSH~\xc5P\x92\xaa\x975\x04\xdb\xf2\x16u\xdb\xa3\x0d\xc0\x9e\xa8\xf2Ji \n'\x0e\x12X\x14C@\xa8xP\xad\xd6\xf5\xde\xf0\x03\xa2G\x11=\xca\x94\xb8\xea\x12=j&D\x8fz\xbc\xf4\xa8q\xad\x98\x92\xa2\xda8R\x94e\xd9\x19J$v\x94\x14bG\x11;j\x14bG\x11;j\x14bG\xf5\xc4\x8e\xb2\x0b\xb1\xa3\xb4\x10;\x8a\xd8Q\xc4\x8eBZI\xc4\x8e\x1a\x84\xd8Q\xa6\x10;\x8a\xd8Q\x16!v\x14\xb1\xa3B\xca'v\x94\xf3\x19bGM\x84\xd8Q\xc4\x8e\"v\x14\xb1\xa3&\x82e\xaa\x10;J\x08\xb1\xa3\x88\x1d\xf5\xa5\xb1\xa3\x8e\xcd\xd4\xb9\xeaX\xbdt\xd3uL\x18\xf3-\xab\x97\xfb\x04\x1d\xfe\xbc\x95\x9d\x83f\xe5\xf0r\x9fh\xcd\xfc*(9\xa3\xceL\xf1\xba\xb3R\xf88B\xb5D\xc6\x99\x08\x91q\xf6$\xae\xbaD\xc6\x99 \x91q\x1e/\x19g\xbeL\xec\x93r~\xd9\xb1\xae\x97\xb6f\x14'G,fD\xc4\x91BD\x1c\"\xe2\x8cBD\x1c\"\xe2\x8cBD\x9c\x9e\x888v!\"\x8e\x16\"\xe2\x10\x11\x87\x888H+\x89\x888\x83\x10\x11\xc7\x14\"\xe2\x10\x11\xc7\"D\xc4!\"NH\xf9D\xc4q>CD\x9c\x89\x10\x11\x87\x888D\xc4!\"\xceD\xb0\xa4\x08\"\xe2\x08!\"\x0e\x11q\x88\x88s0\x11\x87O\xb3\xac\xbf*\x16|PVl\xb9\x16~\x9d\xce\xcd\xc61\\\x17\x17\xe2\xd9\x17\xb3G\x07z\x8ep\xf1+\x93\x86\xf50\x7f\xc5P\xccxL\xd6\xd8\x89\xa5\xc3\xc2K\xdf\xb1\xbf]\xdd\xf9hI<vE\x9b\xd2\x7f\x06|Ru\x87\x03|s\xd61)\xc6\xc38\x10\xec\xa6\xc0\xd8;s\xbf~o$\xda+0M\x18\xb5/\x88\xd7#\xe8/\xf3\xa9B\x0e\n\xfdn{\xcd\x96E_d\xa8\x15\xd6_:,\x93\xfc\xbd\xb3\x05\xb5\x1bj\xdc\x17}\xb2\x83S\x8eYy>\x93@\xaf\x94q+\\t\xe5Bm\x02\x18\x1f\x87\n\xf9\xd0\x14-kq\xdc\x84\xe8\xfa\xa6u\x98\xe8\xaa\xc6\x8bf\xb3){1\xdaN\xf6\xc6\x9f\xf4\xec\x8b\xacS\xdb\xbesl\xb2_\x16U%\x98.zf(\xaf+\xc9\xf5\xe0\x85q\xd3\xd0D#\xcd\xfa[\x8b+\xeb\x9e\xb5\xdbV\x90z\xca\xce\xfeJ}h!\x9f\x04\x87\xfa\xefU_`H\x85\xae\xfe\xfc\xabl\x8buY\x8b\xf9\xd2\xc9\x8f\x1bo\x19&=\xc7\x84\x94\xc4\x85\x13\x94\xc5[\xf6p \xab\xcc\xd9\x81'}n\x8f\xbe\xa3E\xd7B3v\xf8\x9f\n\xff*\xbaN\x82|\x17\xc5\x9a]J&\xcf\xa9\xbc\xee(\xec\x17\xbe\xe6\x8ab\x04Qr\xcbM\xb3M\xd3\xf5\xc0\x04\xaa$\xa0\xa8S8\xef\x0d\xe3s\xdb?@\xe9\"X\xf47\xace\x02r\xac\x1b\xd84-\xd3\x10\xa3m\x8c\xf5M_8H$he\x86)zN\xdcD\xbc^hQ\xfc1\xe6>\xd4\xa8\xa8\x01\xc1\xb9\xdak*z\xd1\xec\xea\xfeJ\x14\xe6\xb2_\xef\x8b\x0e:\xd6\x9f@\xd9w\x1a\xec\xed`W\xcb\xd9c)\xf1\xaf\xfb\xd2\xd2m\xc3\xf3\x91\xac\x8a\xc1\xe6j&\x9b\x85\xb2\x86\xf5\xe5\xc5\xcb1\xeb\x92\xb2\xc4;\xb8\xe7\xdf\xcc\xf6y\xec\\\x82E\xd3\xca2\x04\xefB\xf3\xc5\xb4]\xcf\xf7@\x02Z35cU\x87~\xe2m\xb3\x19\xeb\xed\xf5B\xb5l\xcb\x04\xf2\xf1}\xd1\x0e\x1f)\xb0\xd9\x9d\xaaE\xf4o\xd7vw\xeeG\x0b\x90q\xe5\xd0\xb9\xae\x9a\xc5\xad\x8b|y\xc0\\C\xbc\xdb`u\x89w;\x13\xe2\xdd>^\xde\xade\x7f\xd7w\x87\x91o\x1d\x1bV\xa2\xe0J!\nn\xc4&\x93(\xb8D\xc1UB\x14\\\xa2\xe0\x12\x05\x97(\xb8D\xc1%\n.Qp\xb1V\x12Qp\x07!\n\xae)D\xc1%\n\xaeE\x88\x82K\x14\xdc\x90\xf2\x89\x82\xeb|\x86(\xb8\x13!\n.Qp\x89\x82K\x14\xdc\x89`\xe9\x90D\xc1\x15B\x14\\\xa2\xe0~i\x14\\\xa3\"\x03u\xea\xf4\x96=\xb8\xea3\xc36\x15\x0b\xa9PK\x8b\xa4\xcaJ\xae\x89I\xbb8\x1d(K\xc2I\xb8\x9ey\xd3\x04\x91B\xd3\xce|4\xa47\xb5\xa0\x1f\x08/B\xb3Zu\xac\xe7;\x98iu\xc1\x009:6!\x91q]\xfd\xa28\xc6ZFe\xad\x8a\xaa\x0bj\xcb\xe12\xb2(Q\xd6\xcf\xa5\xc7\x99\xbbF5F\xa8\xb2\xdem\x04yP\xfd&f\xa1EQ\xf3\xf6H\x7f\xd9\x0d\xab\xb5\xe2w\xf5\xe0\xa2\x9cY\xf3\xe7\xa2\xb4\x8au\xdd\xa8B\xe9\xd4\xdb \x08\xfc\x96E\xeasZ\xfc\x91\x95\xeb8\x13\xd6PoUnJ\xacv\xc5\xbd\x1abwq\xbd\xa4\xfb\xda\xec\xc1\xd2F\xe2W'\xa5m\xa5\xb3\xca\xfc\xe9|\x05\x15[\xf5\x9a\x1b\xa7\xc8r\xdad\x16\x9ew9@\xe4K\xb8\x9e\xaf\x1f${\xa4\xd8n?\xa3\x16M\xc6\xda\xf8\xbcO\x97\xc6\x13\\\xa3\xa2\x876b\xa2\x01\xfeGY/\xcbE\xd1\xb3\x91A$5(nT\x1d\xc9,\xae\xac\x17\xd5n93\x88\x0b\xf9\x96\x01\x04\x9d}1\x01\xa9\x1b\xbey\xbe\xa4\x19\xc4\xcf\xd9\xe4\xf2\xfe|N\x83\x9d5A\xec!Z\xd6)\xf2\x83\x18^\xe3x\xe4C\xeeT\x8d\xa6r]7\xed\x0c\xd9\xd0\xa3q\xfa\n\xa9\x99C?\xecu\xd3T\xac\xa8}\x1f\xb0ew\xac\x9d<\xea\xfbx\xea\xee\xf9\x87+\x0d\xc6c\xcb\xec#aR\x0e\x7f\x07\x93\xf4\xbf\xa6]\xb2v\xbe_y[\xd6\x0b\xbe\xd46\xdd\xa6\xe9\xbe\xee\x96\xb7\xf0\xcd\xe9\x1f~\x7f4m\x88\x90\x8f\x91V<$\x15\xed\\j\xa9\xcaN\xf4\xae\x19k\xbd;\xf4\x83\xcd) \x16\xf2\x87\x13\x94pR\xdf\x16MU1\xe1\x86\xfeA\xdd\xb2\xd9U}\xa9\xee8j\x0cMw\xf6Q\xeb\xe6_\xf2%\xb6\x10\x1a+\x0dI\xe8\xaed|A\x13\x94\xf6\xa5#n\x86\x1b\xec7\xf8\x80\x18u\xe3\xaf%\x1e&\x8a_\x84\xcb'\xab\xd58D\x19I(\xc6d\x8f \x9b\x7f\x8e~P~[\xe2\xd9\x0e\x12W]\xe2\xd9\xce\x84x\xb6\x8f\x81g\xbb\xd7\xb1\xdc\xa4\xd8\x81gkFi\xa917_\xe4\xc1X_\x84m\xb9\x87r\xab)XNQE\xd55\xda\x8c\xe5\xab\x9d\x9c\xae\x94c[kl\xd56\x9bqJ\xdb+\xcf3\xc3\x11swv\x95\x98\xbb\x98\xf9U\n1w\x89\xb9k\x17b\xee\n!\xe6\xee\xbe\x10s\x97\x98\xbb.!\xe6.1w\x85\x10s\x97\x98\xbb\xc4\xdc%\xe6\xae\x14b\xee\xa6\x90_\x89\xb9K\xcc\xddQ\x88\xb9\xbb/\xc4\xdc%\xe6.1w\x89\xb9K\xcc]b\xee\x12s\x97\x98\xbb\xc4\xdc\xb5UDSt\x9c5\x99\xb2\x9crV\xc1\xc1$8\x1e)\xc9H~\xe9&$\xfds\x9e\xd3\xf7\xe5\xf8\x94+\x9d\xafQ\xb0\xa0$\xb1\xceL\xe4\xab\x8bC\xe7\xf15\xde\xa8nz\xb4\x94\xa5=\x95\x9a\xd2\x7f\x06\x80\x94\xb2\xf7R\xf6^\xca\xdeK\xd9{){/e\xef\xa5\xec\xbd\x94\xbd\x97\xb2\xf7\x86GIO\xacbb\x15\x13\xab8\x03\xab\xd8\x97\xbd\xd7\xd8\xd5\xe5\xc8\xdcknK)i\xaf\x14\xa2\xfeF\xec-\x89\xfaK\xd4_%D\xfd%\xea/Q\x7f\x89\xfaK\xd4_\xa2\xfe\x12\xf5\x17k%\x11\xf5w\x10\xa2\xfe\x9aB\xd4_\xa2\xfeZ\x84\xa8\xbfD\xfd\x0d)\x9f\xa8\xbf\xceg\x88\xfa;\x11\xa2\xfe\x12\xf5\x97\xa8\xbfD\xfd\x9d\x08\x96\x86I\xd4_!D\xfd%\xea\xef\x97K\xfd\xa5\xa4\xbdq\x19Q)i\xef\x11\x95\x1bN7KI{sh\x91\x92\xf6R\xd2\xde_g\xd2\xdeO\x12\x17r\xf6q;$\xb0\x1dS\x01\xff\xeblW\x0bf\xf2\x1d[\x8a\xd4\xb6\xb2\x1e\xb6\xf0\x11C\xff\xef\x87g^,n\xf7cG\xc6\"\xe1\xfc\xfb\x97{t\xee\xa1\x18#\x92d\xf8m\x1aJ\"\xd9\xe3\xf3<\xc4\x93\xc0\x92i]\xd4\x1d\x8f6\xaadhKV\xe6\x8d\x13\x17\nP\x0f\x15\xb7K\xe7}6\xbe\xdb<\x1d\xb1-w4\x10\x9b\xb4'6)\xb1I\x89Mj\xb9#\x85M:\x9d\xca\xf7\xa9\xa4\xea\xdf}\x88K:[\x9e\x88C*\x858\xa4\xc4!\x1d\x858\xa4\xc4!\x1d\x858\xa4=qH\xedB\x1cR-\xc4!%\x0e)qH\x91V\x12qH\x07!\x0e\xa9)\xc4!%\x0e\xa9E\x88CJ\x1c\xd2\x90\xf2\x89C\xea|\x868\xa4\x13!\x0e)qH\x89CJ\x1c\xd2\x89`\xf9|\xc4!\x15B\x1cR\xe2\x90~\xc9\x1c\xd2}\xb6\x8c\xabV\x9a@\x81aM\xc4W\xf0\x13\x1d\x9f\xbd\xe8\xee\x8c\xeb\x9b\xb2>\x17\xef\x81o\xd5\xaf\x9f\x96\xa5d;\xb7|BV\x92\xf7\xc5\xf2\x95d\x86\xa1 eI\x15>?Nz(\xd0p\xf4\xa40\x95T-\xd4MDV\x92\x92LV\xda\xce\xce\xab\x9f=J\x1c%\xe2(\x11Gi\xbf$\xe2(\x1d\xc4QR\x93x\x0e\x9a\x12\xe5\xbd#\xce\x92\xe3:q\x96\x0c!\xce\x12q\x96F!\xceRO\x9c%\xbb\x10gI\x0bq\x96\x88\xb3D\x9c%\xa4\x95D\x9c\xa5A\x88\xb3d\nq\x96\x88\xb3d\x11\xe2,\x11g)\xa4|\xe2,9\x9f!\xce\xd2D\x88\xb3D\x9c%\xe2,\x11gi\"X\xfe\x08q\x96\x84\x10g\x898K_<g\xc9\xc6\x9dqUN\xd3)<\x1c\x8a\xf8\xea}Y\x8c%\xad\xb3\x7f\xb9\xb9Hs\x80W\x90NJ\xc6\xa79q6\xeer\xff\x1c\\q\xdc\xb6\x95G4/L\xdd\xf3hiDc\x9b\xa2\xa0\xda\x80go8\x1cW\xe8mF\xd4R\xb6\x91<{NL\x9fsG\xd2\xb6m\x9a\xd5\x11\xea\xb3a\xedm\xc5d\xf1|\\\xb1\x0fe\xd7\xcf\xce\x97\x07\xfd~'\xcbF\x15\xa6\x08\x11E\xaf\x96\x18\xde*Y\xf2}\xd1\x0d\xc7.\xef\xdb\xa8\xce\x8f\x04AT\x9a\xf8J\xc1\xea\x12_i&\xc4Wz\x0c|\xa5\xbd\x8ee=Rs\xa0+\x99G\xbb\xab\xe1&\x99\x90\x8e3\xc6W\xe2\x14s9\xdd\xce+'g\xa7\xa2\xea\x1a\x9d\x04\x93\xaflr\xa6R\xee\x01\xad\xacU\xdbl\xe6\xb3\xd9\xbc\xb4b\xef\xbc\xf5\xfd\xa9\x8e\xd8P\xb3\xab\xc4\x86\xc2L\xb4R\x88\x0dEl(\xbb\x10\x1bJ\x08\xb1\xa1\xf6\x85\xd8P\xc4\x86r \xb1\xa1\x88\x0d%\x84\xd8P\xc4\x86\"6\x14\xb1\xa1\xa4\x10\x1b*\x85PDl(bC\x8dBl\xa8}!6\x14\xb1\xa1\x88\x0dEl(bC\x11\x1b\x8a\xd8P\xc4\x86\"6\x94\xad\"\x9a\x97\xe3\xac\xc9\x94\xf2\x94\xb3\n\x0eJ\xc1\xf1\x08I\"\x93\xc4\x16\xc9F2<+\x12\x1e\xbe\x94O\x0f\xac$n\xa8+R\xc3LIb6\xbaf\x82\xed\xa0\xb2\xef\x18\x84\x87 N \x0b[\xf2\xce7\xf8\x1a-<&\xf5nu\xc3\xa3%1\xe9\xe6\xba\xb0\xd2\xf9\xf9\x86\xc3U \xce\xabJ\xc2\xaa*\xd6\xc2\xde\x12\xe7\x14J\xad\x0b\x8a\x10\xf1\x93\xb4\x10?iO\xe2\xaaK\xfc\xa4\x99\x10?\xe9\xb1\xf3\x93\xd4\"\x80''I:\xd2|\xce\xb2\x92\x93\xf44\xeb!)\x9d\xf8YJ\xb6\xa9\x91XJ\xc4Rr]'\x96\x92!\xc4R\"\x96\xd2(\xc4R\xea\x89\xa5d\x17b)i!\x96\x12\xb1\x94\x88\xa5\x84\xb4\x92\x88\xa54\x08\xb1\x94L!\x96\x12\xb1\x94,B,%b)\x85\x94O,%\xe73\xc4R\x9a\x08\xb1\x94\x88\xa5D,%b)M\x04\xcb\x18!\x96\x92\x10b)\x11K\x89XJ\xce\x9a\xfc\x16XJ\xbb\xed\xba-4\x92h\xa3$\xbd\x977\x0c\xe7\xb2\xf1!\xa9\x1eR\x99'\x14\x1d\x89\x7f\x17>\xdf\xe8\xceR.\xad9\x92TyO\xb4Z\x1e)\xabh\xa2\x17S\x9ceA\x10\xa3\x94\xe9\x8e|L\x13'\xf8\x19*\x9aK\xd3.\x19\xefE\xee\xdd\x10\xc2\xff\x07\xc0\xea\xdd\xc6\xb7\xa1\xfa\x1a\xde\\\xbez}y\xf5\xd3\x9b\x9f^_\xbd\xff\xe9\xed\xc5\xeb\x97\xe7?\x9c\xbf~\x85x\xe4\xfdO\xe2\xff\xa8{Cwj\x00?\xb66\x18\x1f\xa1\x14WC\xbf\x83\x7f\xb0\xb6\xf9Z\xda\x8e|\x08\xa8\x1e\xef)J\x7f\x1a\xcf-\xfbJ\xfan8\xecpQ\xd4|\x89]\xb2\xaa\xbcc\xad\x00/\xc4\x96[\x14{\xa2V\xccM\xf1\x00\xcbR\xb8S\x05IBx\xe1\xf9\x0d>W=\x8c\\\x8a\x07\xb8g-\x03\xbe\xb2{\xb6U{\x1fh\xace\xd1\x9aUd\x1f\x8aE/X,FMl/s\xf7V\xc9Ny#\x9e\xd4\xbc\x13A\x80\x1c\xa6\x98\x0eT-\xa0i!\xd4\xbb\x16M]\xcb4uW7\xcd\xd69\x8c\xfc\xec\x05-N\x16\x83\x16\xc4XS\xd8N\xa8\"\x9e2p\x9dYM\xb9?\x88\xe9G|&\xb19\x94\xff\xe4]iP(\xab\x97Fo\xbav\xf9\xe2%\xa4\xe4\xe4),w\xc2\x94\x1f\x8bU\x93\xa9\xad[\xf5\xe5\x865;/\xfd\xee\xa0I\xd1\xc7\xee\x03\x0f\x05\xca\x14\xf3\x04J\xb5s6X\x95\xd2\nh\xdaaU\xe4MrcU\x00\xcd\xce\xd3\xe7C-\x06T\xab\x01\xcb\xc7\xd4\x12\xeciZ\x10\x84G-yx\x9aZP|M-GnN4\x8fS\x0bn\xbcB\x12\xaf\xd3S\x98\xaeo\x88\xdf\xa9%\x92\xe7\xe9)i\xca\x00\xf5\xf3=\xb5\xc4\xf2>=EIFh\x98\xff\xa9%\x1b\x0fT\x0b\x92\x0f\xaa%\x85\x17\xea\xd3~g\xe9>\xbe\xf7;x\xa2\xa3\x88\xb9\xad/6\xdb\x03\x16-\xc0\x8f;\xfc\xec<T\x0c\x9e\x955\xd4E\xddt\x8cw\x96\xee\xf9|\xc6\xf6\x14\xe5\x98\xcb\x9d36n8\xbf\x93K\xdc`\xc2\x145\xb0\x0fl\xb1\x13^\x8c%+\x96UY3\xae\xb0\xdd\xa2\xdf\xb5\xccC\xac\xfa\xe6\x0f_\xeb%\xf5\xa6\xa8\x97\x15k;'v#\x18\x81\x03\x9dV\xb5\xac*Wl\xf1\xb0\xa8\xd8\xf0<\xef#\xf7\xac\xaa\xdc\xecb\x18wC\xe2\xa9\xee\xa6\xb8e\xe1\xf7\xbfP\xa8\xbfn\xfd\xe0\xb8d\xa5\xa0S457\n\xe1\xba\xe9o\x84Kv\xfc\x82\x8e\x02\xf9\xder\xb2\x12?\xd3;\xef\xe76\xc3\xa2f\x1f\xc6$\xcbW\x1d\xab-\x01\"\x80\xe9\xae\x81\xae\x1a\xee\x03z\x07]vPp\x9b\xaf\\\x95\x82A#\xfcu\x16\xafn\xcb*vWX\x0d\xe3\xb2\x96\xb5\xe1k\x8c\xe5\xb2\xd8\x8f\xd7P\xf4=\xdbl\xf9\x94\xa3\x0d/8\xefG\x96@/cA\xb6M'c\x80\x14\xed\xc8R\x9eX\xa8\xd5\xe6\xc6r\x99\xd5K9#*#N\xb2ux\xbf\xd3\xfdE\xd5d q\xf3\x8f\xa2\xc9\xe0\xfb\xe5\x0d\x9e\x14\xcb5\xcd\x11\xaf\x9a{\xe5\x16lvu\xcf\xdam\xd1\xf6\x82\xbe\xc5\x04\xe1H\x1a\x12\xb7us/\x17\x90r}\xc3:\xdf\xbb\xa0\x14\xf9\x9c\x87(\"k\x7f~\xa7\xab><\xc5\xfb\x13\xff\xa0\x03Ii\xdb\xee\x04\x01I`\x83\xa2\xf5\xc2\xfd\xddZ}\xae\xbbZl\x87$\xf5M\xff\xa9\xfd5\xf3\xceL\xf1F\x14o4H\\u\xa3\xed\xd4\xf0d\x16o\x97R\xbc\xd1\xfe\x0d\xd9\xecL\xa4}\x99bW~\xeax#\xb5L&\x9f\xda>\x7f\x9e\x0ej\x97BA?\x14\xf43\n\x05\xfdP\xd0\xcf(\x14\xf4\xd3S\xd0\x8f](\xe8G\x0b\x05\xfdP\xd0\x0f\x05\xfd \xad$\n\xfa\x19\x84\x82~L\xa1\xa0\x1f\n\xfa\xb1\x08\x05\xfdP\xd0OH\xf9\x14\xf4\xe3|\x86\x82~&BA?\x14\xf4CA?\x14\xf43\x11l\x00\x06\x05\xfd\x08\xa1\xa0\x9f/6\xe8\xe7\xe0\xb8\x15w\x0c\xcf\x81E\x1f/\xf2\xe5\xca@\xe1<\xf1/\xaf\x15\x188\x06\xc1hxP\xe60,\xe5\xf8\xdc'J\xad\x8a\xb2b\xdeP\x18Q\xf4\x13\xad\x93G\x1a\x0f#Z\xab\x93\x19\xbb\xb0\xbf$\x1e\x87\xe6\xd4|\x12F\xc4\x8c\x91n\x0b\xde\xd2\xe2\xc4F\x01S-\xe3\x9d\xb2\xa3\x8c\xd8B_\x94\x15_\xf5D}\nn\xb65+\xd1Mv\xed~=\xc2\xde-\xd1}t\x9e\xe8\x81c(\x17\x069\xad\xb2zQl\xbb]U\xf4l\x12\xbf\xe5\xf9\x18b\x11\x91\x15\xb7\x1c\xe0n\x9b\x13\xed=\x7f\xd7\xb2S\xf8\xfb\x0d\xab\xf7\xa3\x01\x8c;\xad\xd4\x86\xe2\xbai\xf9K\x05CP\xa4\xaa\x96\x00\xc2\x80\xcf\xf7\xcdH\x7f\xd0\x0b\x83\xa5\x9c q\x8b\xc8UZ\x88\\\xb5'q\xd5%r\xd5L\x88\\\xf5\xe8\xc9Uj\xadHdX\x9d\xed\x15E$+%D\xb2\"\x92\xd5(D\xb2\"\x92\xd5(D\xb2\xea\x89de\x17\"Yi!\x92\x15\x91\xac\x88d\x85\xb4\x92\x88d5\x08\x91\xacL!\x92\x15\x91\xac,B$+\"Y\x85\x94O$+\xe73D\xb2\x9a\x08\x91\xac\x88dE$+\"YM\x04Kx!\x92\x95\x10\"Y\x11\xc9j\xfc)\x86 \xf5hHVC6\xcd\xee\xec\xe3\xf8\x8f\x7f\x0d\xec+7\xa5\xea\x9f\xa3\xff\xe0\xe5\xf0\xe0K\xf5\xd8p\xd4\xb9\xf0\xb1\x8f\x94\x9dn\x8f\x88R\x18\x19=\x87\x02Ym\xe7Z\xed\xbfH\xdd\xf5h\x19WS=\x9a\xd2\x7f\x06\x0cP\xa0\xeeN\xef\x97\x84\x9e\x953S\xde\xab\x97q#\xb5\xa8\xeb\xe9\xb0\xef\xcc\x9f\x93\xf8kx\xfb\xee\xc5\xbb\xd7W\xef\x7f:\xff\xe9\xfc\xdd\xf9\x8b\x1f\xcf\xff\x9f\xd7\xafP\xc9\x80\xf5\x93\xfc\xb9\xe0M\xef.\xff\xd7\x9b\x8b\xd7?\x05\xefC\xdd\xf4\xf2\xc77o\x11\x15\xfb\xe1\xc7\xf7o\xffz\xfe\xd3_p7\xbe|\xf3\xef\x17?\xbe~\xf7\xdaq\xf7\x9029M]\x18\x1f \x97\xb7\xe2\xf3\xbb\x12\xf6\x96\xb5L\xfd\xb6R\xae\xb1\xaaj\xee}\x99\x02Eg\xea<+\x84\xd4\xe4 \xf0\xc6\x9c\x80\xfaH' \xff\xab\xf5\xa7\xfe\xd2\n\x02\x1f\xc2f\xaa\xc5\xb3\x81\x0fw\xbb\xef@9\x1c\xa4J\xc2%\xf1r\xf8\x043&\xf9\xeb\xe0\xbfv\x9d\x18Q\x82\x0b'\xfc\xff[&\x1c\xf2\x03}\xce\xb3U\x9bu\xddy\xd9\xc5\x82\x1b3\x15[\xaeU\xd9#%\xaf\xeb\xd9V#`\x93Tk\x82\x89\x87x\xa5\xed}\x8b\x86\x1b\x06\xfd\xfce\xa7\xf0f\xcbjc\xa2\xb7\xf0 \xb5\xb4\xacX\nPId`\xe3V\x98\xca\xdc\xa6\xd3P#\xaa&{\xcc\xbcr\xd7\x8c\xd7\xa1\x12Y\xf1D\x1e\xfb\xa2\x86\xba\x81\xaa\xa9\xd7\xac\xe5v\x98@\x10\xf4\x9b5\xf5\xd7\xe3U\xc7WH\xf7R\xeb\xb7\xd7\xf0\xb6\xd0\xd9>w\xd2L\xb1Wv\xb0\xaav\xdd\x0d\xef\x1ee\xfd\xf5\xaa\x12\xa8Hd=\xf4\x18\xb1Vf\xfc\x82\xc3\x8b\x8a\xfa\x01\xfb\xb2P\x86z\xb5\x8e\xdc\xdf0\x85\x0b1s\xe6\xd0\x89\xf2\x9avL\xa0w\xbc%%2\xad<>\xc5=.\xc1}Zz{\xec\x14\x9d-\xb5}8\xb1\xfdgIk\x1f\x99\xd4\xfe\x93\xa4\xb47g\xd1\x90!5\x9bpQ\x06\x947ix\xc8\xbc\x13\xf7\xc8\xfd\x84\xcf\xe5\x8b\x18W\x10\xd1\x0dA\xbd\xd5\xbd\xd0(\xf56\xf7\xca/#\x00coybr\x9e\x98\x9e\xee\x0f?\xee\xcf24Z\x7f;#\x95\xbe\xb3Y\x8e\x0e\x82:\x9f\xc0g\xfdK \x9cM\x80hO8\xefrUv\x82\xb94V\xda8\x8d\xa7;\x11f\x9e\x1c\xc6\n\xc3\xe5\xdf\xd1\xdd\xf5\xd4x\xeb\x04\xf5\xcd\xc3?\x13L\n\xadb\xe1 \xe9\xdb\xe2\xce1A\x05\xceW\xc8\xa2\x87f[\xfc\xb2\x1b\x97)\xf5J=y\x95\x1d\x14\xeb\x96\x89L\xbcM\xad\x0fF\xf0\x91k\x86\x85\xddzG`\x88\xe2[$F\x9d\xf5\xf8\xa4Q\xc2\xa3\x03\xff\xbea\x19\xf7\xbfR\xc7d\xf9c\x82P/F\x90\xf91\xdfw\x1e(\x04e\xbd,\x17C$\x8d\x88\xa9\xe9\xe7\xf9\x8e\xdd\xfd\x9c\xb5\xbc^\x12\x131\xfb\xb2\xaf\xc73\xe5LoV\xf0\xcd\xec\xf5\xa6}V\x0b\xd2>\xb7bC\x8d\xb1\xad#\x98)\xfb\\\x7f\xbc\xa5\xf2\xa1\x18\xe1F\xe3\x98\xecoLO\xbb>\x16\xca\xd7\xc3\x1c`\xc8\xd0U\xd4Q%\xfb\xf3\xf8\xa4\xd2\xc3\x8c\x84\xf1\x17\xed\xc5\x01\x15\xeb\xb2\x16\xce\"\x8b\xbbE\x0d\x99\xe1\x96\xc1\xeb\xb3\x7fkz\xc4\x8d\xc8W~\xcb\x1c\xa6A\xb0\xc3\x07\xd9E\x13]\xfd\xd3\xd5\xe1u-tl\x00\xffS\x91\xed\x8aN\xed\x7f.\x8a5\xbb\xe4\xc3\xa1\xebO\xe5uGa\xbf\xecX+cYT\xde\xef5\x83M\xd3\xf5f\xaen\x91\x9a|\xf4to\xfb\x07(]ln\xbe\xf63a\x93\xd5\x0dl\x9a\x96i>\xa3m\x85\xef\x9b\xbep0\xd6\xd1\xca\x0c\x07\x029g\x0e\xf1z\xa1E\xf1\x87\x0c\xa3\xe2\xddSS0\x0d\xbe\x9f\xab\xbd\xa6\xa2\x85\x0dq%\ns\xcd\x15\xf7\x05_@\xfb\x13(\xfbN3K;\xd8\xd5r\x90.\xa5\xedt_Z\xbamx\xf0\xcb\xaa\x18q#\xcd\x04\x99(kX_^\xbc\x1cCI\x94\xdb\xbf\xe3{9\xebn\xdeA\\^4\xad,C\x90\xbc[\xd9\xf8\x01D\xe0\xd3\x9c\xd8\x85\x9b\x9a\xb1\xaaC?\xf1\xb6\xd9\x8c\xf5\xf6B\xde-\xdb21W|_\xb4\xc3G\n kS\xb5\x88\xfe\xed\xc2\xd6\xe6\xa0} \xe4O\x0e\x1d\xf3\xb8\x83\x9cs\x0dE\xf7\x05\xabK\xd1}3\xa1\xe8\xbe\xc7\x10\xdd\xb7\xb7p\x0b\x8cn\x1f\xdc\x9a\xc7\xf8]\xc6\xc5\xf8Y`9\x8a\xf4\x93B\x91~\x14\xe97\nE\xfaQ\xa4\xdf(\x14\xe9\xd7S\xa4\x9f](\xd2O\x0bE\xfaQ\xa4\x1fE\xfa!\xad$\x8a\xf4\x1b\x84\"\xfdL\xa1H?\x8a\xf4\xb3\x08E\xfaQ\xa4_H\xf9\x14\xe9\xe7|\x86\"\xfd&B\x91~\x14\xe9G\x91~\x14\xe97\x11l\xd4\x15E\xfa \xa1H\xbf/\"\xd2o?\x12m\xb6\x956\x88\x92\x12\xe1\xb0s\xe1\x0e\x0c\xe13\xa2\x03\x07\xba\xd2\xe9-{p\xd5j\x86'*\xe6O\xa1&u\x99\xee\\\xf2;L\xaa\xc3\xe9@\x13\x12\xee\xb9\xf5\xcc\x8f%\xc8\x0b:\xc3\xb5\x8f\xfa\xf3\xa6\x16\x90\xbf\xd8\xbf7\xabU\xc7z\xbew\x98V\x17\x0cx\xa1c\x13\x167\xd7\xd5/*FQ\xcb\xa8\xacUQuAm9\x9c5\x16%\xca\xfa\xb9\xf48s\x94\xa8\xc6\x08U\xd6\xbb\x0dk\xcb\x85\xfeM\x8c\x7f\xc5|\x97\x9e\xaa\x1bVk\xc5\xef\xea\xc198\xb3\xa3\xcfEi\x15\xeb\xbaQ\x85\xd2\x9d\xb6\x13\xb0\xf3-\x8b\xd4\xe7\xb4\xf8#+w\xc6\xb9\xb0\xa8\xb7*7%V\xbb\xe2^\x8dl\xbb\xf8U\xd2ql\xf6`i\x9d\xf0\xab\x93\xd2\xb6\xd2Md\xfet\xbe\x82\x8a\xadz\xcdGS\x045m\xac\n\x9f\xb7\x1c \xf2%\\\xcf\xd7\x0f\x92\xb1Ql\xb7\x9fQ\x8b&Kl|\xde\xa7K\xe3 \xaeQ\xd1C\x1b1\xd1\x80L\xb0.\xe9\xa6#kGjP\xdc\xa8:\x92Y\\Y/\xaa\xddrf\x8a\x16\xf2-\x03\xfc8\xfbb\x02\xcc6\xbc\xe2|11\xc8\x96\xb3\xc9\xe5\xfdy7\xfbZ\xb3&\x08\xeb\xbde\x9d\xa2\x1d\x88\xe15\x8eG>\xe4N\xd5h*\xd7u3\x8f!\xd2\xa3q\xfa\n\xa9\x99C?\xecu\xd3T\xac\xa8}\x1f\xb0ew\xac\x9d<\xea\xfbx\xea\xee\xf9\x87+\x0d\x96a\xcb\xec#aR\x0e\x7f\x07\x93\x94;A\xda\x9f\xef\x14\xde\x96\xf5B,r\xdd\xa6\xe9\xbe\xee\x96\xb7\xf0\xcd\xe9\x1f~\x9fU\x1bQ\xb1\xe7b%\xf6\x04\x98+\xd2\xca\x85\xb8m\x12P>\xae\xe1\xba7\x96\xd7\x8b\x81\xbc\xdc\xed\xae7\xcdrW1{\x08\xb9Y\xea\x13\xdd\xc8G\x1a=n\xaa\xc8\x94Ie\xe4M\x03\x8b\xbb\x17\xfb\xfa\xb9\x82\xa6\x1a\x19\xc5Y)\x08\x12M4\xcd\xbf/7\xac\xd9y }\x9e\xa8\xa6\x10\x99\xc5M\xb2\xd4\x12\"\xf1r19\x98j\xcbo\x9c\xc2 \xe2VDD\xa2\x8a\x00\xe0Mr\x83l\x00\xcd\xceM& \xb6\x18P\xad\x06,\xc3S\x0b\x02\xd2\x92\x82\xa0Pj\xc9\xc3\xfc\xd4\x82b\x80j9rs\xa2\x99\xa1Z0\xc8\x9a\x94x\xa6\xa8\xa70]\xdf\x10cTK$s\xd4S\xd2\x94S\xeag\x90j\x89e\x92z\x8a\x92\x1c\xd30\xa3TK6f\xa9\x16$\xc3TK\n\xd3\xd4\xa7\xfd\xce\xd2}|\xefw0OG\x11s[_l\xb6\x9e\x19\x153\xf6\x90\xe3\x0e?;\x0f\x15\x83ge\x0duQ7\x1d\xe3\x9d\xa5{>\x9f\xb1=E9\xe6r\xe7\x8c\x8d\x1b\xce\xef\xe4\x127FJ\xd5\xc0>\xb0\xc5N\x98\xb6KV,\xab\xb2f\\a\xbbE\xbfk\x99\x87\x11\xf6\xcd\x1f\xbe\x1e\xc3\xbd\xeae\xc5\xda\xb9!<\x8a\xa02*[\xbc\xd3-\xab\xca\x15[<,*6<\xcf\xfb\xc8=\xab*7_\x19\xac';\x05\xdf\xffB\xd1\x15t\xeb\x07\x8f++\x05\x0fD\xecQ[y\xb4S\xb3\x82b\xfc\x82\x8e\x02\x8bz9]\x89\x9f\xe9\x80\xbc\xe7S\xcb\xc4\xffU$\xb9\xd9\xb4\xe3\xd2\x0fC\x99\x1a\x99#=z\xac\x0f\xf1\xa3gW\x89\x1f\x1d\xea\xa0\xa3\x10?\x9a\xf8\xd1v!~\xb4\x10\xe2G\xef\x0b\xf1\xa3\x89\x1f\xed\x12\xe2G\x13?Z\x08\xf1\xa3\x89\x1fM\xfch\xe2GK!~t\n\xc5\x98\xf8\xd1\xc4\x8f\x1e\x85\xf8\xd1\xfbB\xfch\xe2G\x13?\x9a\xf8\xd1\xc4\x8f&~4\xf1\xa3\xbf\x04~\xb4\x93\xc2%ycg\xc5\xae\xbf9\xbb\xfb\xf6\x9a\xf5\xc5\xb7g\xc5B\xd2\xf6\xcaz\xd5\x9c},\x96\xcb\x96u\xdd\xbf\xdc\x94\xae\x17\xf2\xfe\xf3z\xd5\x8c\x84.\xf9\x1b\xf02\xc6\x84\xab\x8bf\xb3\x91\x9f\xae\xa8\xaa\xe1\x1e\xe9\xefR\xa5N\xf6\xf0O\xad\xec\xb6\x7f{\xaa\xee\x9dP\xc0\x8cZ\xa8\xcb\x8f\x96\x00\xc6\x95\x12\xa0\x7f \xbd)\xdc\xd3\xae\xcba\x1cJ\xdb\xe5\xfb\xa2cJ\x05Y\xf9`\xea\xf3\xfbx`N\x87\xd2vw\x1dJ\x9by\x10\x87\xac\x0f@~\xc1\nJ\xc1\xb8\x8d\xa4$\x01\x7f\x9e\xf2\xf6|?\x9e\x0dD^\xf0/\x08\xff\xe5\x06\x00\xf1\x10`&\x100\x0d\x06\xf4\x14\xc7\x15\x8a\x06\x02\x0f\x86\x02s\x83\x81\x91p`f@0\x0e\x12\x8c\x04\x05}}x\x80\x0b\xb1\xb0`f`\x10\x05\x0df\x04\x07\x0f\x85\x07\x93\x00\xc2L\x10a\nH\xe8)L\xc0\x87a\x98\xf0(@\xe1\xf1\xa0\xc2\xa3\x80\x85qpav\xc0\x10\x0b\x19f\x05\x0d\xf1\xb0a4p\x18\x0f\x1d\x06\xa7\xc2\xe7\x08\xf00\x03|\x18\x00\x10\x91\x06\x15\x02D\x8c\xb1\xba\xa2\x81D\xdf\"x\xdd\xdc1\x04\x94\x88\xad_F81\x06P\xcc\x0c)\xa6\x81\x8a\xbe\x1e\xd4\x85a\xc5d`\xd1Q\x1a\x7f[\x08Z\xcc\x05.\xa2\x112\x04\xc0\x18\x051\x06\xbc\xdeI0c\xa8L\xa7\xb3-\x13\xd8\x18\xafL<\xe0\x18j[\x02\xe8\x98\x08;z\x91\x15\x04\xf4\x98\x17|\xcc\x03?\"\xfa\xc6\xc1\x10$\x1a\x84\xc4\xc1\x90X \x12\xd1q\xe2\xc1\xc8\x188\xd2\x03Hf\x82$#A\xc94X2\n\x98\x0c)\xdd;\x84B\xcf\xe2\x01\xca|\x10e\xb0R\xce\xf1\x93\x0f\xa8D@\x95\xe9`\xa5\xa38~\x9b\x0f\xae\xcc\x0cX\x86 \xcbD\xd0\xd2Q\x96\xdcC\xfb\xdc\x08a\xe0\xd2\x0b]\xe6\x07/\xb3\xc3\x97n\x003'\x84\x89\x011\xe3a\xcc( 3\x01\xca\x8c\x053\xbdp\xa6\x1f\\\xc2\xc3KXH3\x01\xd4\x8c\x845=\xcdM\x816\x1dE\x19\xb0!nH\xe0\xe0MO\x97\xaf\xd7~\x803+\xc4\x19\x009\x8f\x03s\xe6\xea\x8b\x11Pg\x0c\xd8i7\x0f4\x9ay\xdc\xf3\x94\xfc\xa7\"\x1eR\xbe\xffp8\x01\xe4\x1a\xd0\xe7<fR\xc6C\x9a\x08\xed$\x8ar\xcf\xc0\xb4\x03\xaeO\xc6\xcaP\xd8\xe4D(l\x12\xeb)KDO)l\x12\x83\x99fALS\xf0R\n\x9b\xcc\x88\x92\xc6`\xa4Q\x08)\x85M\x1e\x8a\x8b&\xa0\xa2Y0\xd1xD\x94\xc2&\x0fABcp\xd0\xcc((\x0e\x03\xcd\x88\x80b\xf1O\x8b1Oa\x93SA \x9eX+)\x1a\xed\xa4\xb0I\x14\xc6\x99\x82pR\xd8\xa4\xeb\xb6 \xaa\x19\x81ib\x02\xeeb\xf0L\n\x9bL\x89<\x0c\xe1\x97\x146\x89\xc7,\x91\x88%\x06\xaf\xc4\xa1\x95\x146 \x89\xf8d\x04:Ia\x93\x19\xd0\xc8 \x16\x99\x8aD:\xd7M\n\x9b\xdc\x13\n\x9b\xa4\xb0\xc9\x99\xe4\x08a\xc3b\x8c\xd1\x08c\x14\xbeHa\x93\x89\x98\"\x85Mj\xc1\x1c+\xa3\x02\xe3\x8c2&\xfbhuy\x1e\xc3\xa7\x7f\x96\x9d\xd8\x9c\x81\x0e<]&%\xc2\xd3\x93\xa6_!\x86\x9d:\x9b@f\xe8\x17\xe3\xe7C\xd9\xf5\x02\xebVwX\x037\x0d/\xc2\xdfoX\x0d\x8b\xa2\xaa\xd8\x12Vm\xb3\x81\xa2\x96\x9e!\x99\xbc\xfeD:\xd0\xc4 \x05\xca\xd3\xb3h\xean\xc7W[\xb8)\xd77Pl\xf8{\x86\xf2\x9a\xd5\xd8\xa1\xd6E\xc7\xcd\xa2^X'\xc3\xa9\x14r\x01\x90Yv\x9b\xb6e\x8b^\x86\xff\x98\xab\xa1\xf7\xd8\x04[\\\xe9\xa3?U`\xfaMM\xe9 V$Xq\"\x04+\x12\xach\x17\x82\x15 V$X\x91`E\x82\x15 V$X\x91`E\x82\x15\x07!X1\x05\x99#X\x91`\xc5Q\x08V\xdc\x17\x82\x15 V$X\x91`E\x82\x15 V$X\xf1K\x80\x15GQ\xe7hj\xecF\x9e nC\xd9fO\x8eh\xd7\xbe\xb55;Fz\x80\xc5\xa6GI\x1bg\xb8\xab\xd9v\x1f\x99\x92\xe2E\x82\xfc8P\xcd>\xf4\xa1\x0c\xa0\x88\xa8H\xa7\xfb\xc3\x1f\x1b\xa9E\xd7Bc\xb1\xfcO\xe5\x0d,\xbaN\xba</\x8a5\xbbd\xbf\xecX\xd7\x9f\xca\xeb\x8e\xc2$P\xc9\x8b\xe1\xc5rE2\xd84]\x0fL\xf8\xd8\x84cN\x1cb?\x0e\xc5m\xff\x00\xa5'kQ\xcb\xc4w\xaf\x1b\xd84\xad>\xc5\xdf\xeaQ\x12\x07\xe9\x1f\xa8L\xcf\xc9\xae\xa1S]\x87s\xfc\xe5\x1f2\xa2\x96\xaf\xbd\xc3\x91\xf6\xa3C\xd2\xd5^S\xd120W\x14\xe6\x1a\xcd\xf7\x858?\xff\x04\xca\xbe\xd3\xae\xef\x0ev\xb5\xec\xccK\xe9\x0d\xbc/\xbbi\xff@\x9c4\xaaa]\xd4!\xa3\xd30\xda\xf9`4\xcf\x17\x9d\xb7#p<?\xc5\xd3\xce\xaeR<m\xa8\xf7\x8eB\xc07\x01\xdfv!\xe0[\x08\x01\xdf\xfbB\xc07\x01\xdf.!\xe0\x9b\x80o!\x04|\x13\xf0M\xc07\x01\xdfR\x08\xf8N\xc1\x8e \xf8&\xe0{\x14\x02\xbe\xf7\x85\x80o\x02\xbe \xf8&\xe0\x9b\x80o\x02\xbe \xf8\xfe\x12\x80o_<\xed\x08I\x9f\xde2s\xad\xf3\x81\xbc\n\xd5-\xd4\x14*\x83U\x85[M\x01\x8d\n*\x1b `\xe1\x0c[\xcf\xbcF\x02\xd3\xe5\xc3>\x04\xeb\xbe\xe1\xcbZS\x8b\xddr\xb3Zu\xac\xe7\x96\xfa\xb4\xba`8\xf3E\xd0\xe9x\xa1\xac\xbf\x93\xef2~\x1bc|WE\xd5\x05\x82|\xc1\xe5\x1a\xb1(Q\xd6\xcf\xa5\xc7\x99[B5F\xa8\xb2\xdemX[.\xf4ob\xb4-\x8a\x9a\xb7G\xfa\x85nX\xad\x15\xbf\xab\x07W\xdc\xccj=\x17\xa5U\xac\xebF\x15J\xe7\xd5\xae\xe3\xaa\xbee\x91\xfa\x9c\x16\x7fd\xe5\xce@r\x8bz\xabrSb\xb5+\xee\xd5\x00\xb3\x0b;\x97nZ\xb3\x07+8zW\xcd\xe0[\xe9\x941\x7f:_A\xc5V\xbd\xe6\x1a(\xf2\x816\x0d\x85\x87Y\x0e\x10\xf9\x12\xae\xe7\xeb\x07`\xc5\xe2\x06\x8a\xed\xf63j\xd1d\x00\x8c\xcf\xfbti<\xc15*zh#\xe2\xe3\x81\xffQ\xd6\xcbrQ\xf4l\xc0\x9a\x94\x06\xc5\x8d\xaa#\x99\xc5\x95\xf5\xa2\xda-g\x86_!\xdf2\x80}\xb3/&\xa0c\xc3\x07\xcd\xa7\xee \xa1fR\xd8\xfb\xf3n\xf6\xb5fM\x10\xb6r\xcb:\x05\xf2\x8b\xe15\x8eG>\xe4N\xd5h*\xd7u\xd3\xce<\xf8z4N_!5s\xe8\x87\xbdn\x9a\x8a\x19\xe7kZ>`\xcb\xeeX;y\xd4\xf7\xf1\xd4\xdd\xf3\x0fW\x1a\x0c\x92\x96\xd9G\xc2\xa4\x1c\xfe\x0eV\x0bl\xb3i\x97\xac\x9d\xdb\xe5\x01\xd6E\x0em$\xe5[\x888M{L\xbc\xa0\xfe\xadX\x0e\xe3\xb1\x96\xaa(\xfd\x91\xa7I\x0bv\xfd\x8d*\xe8\x89n\xdd\xe3\xce[\xe0bo$\xf1\xcez/ #\x88?`\x1c\xf8\xd9\xe9\x178\xf2E\n\xf5\xc2O\xb1H\"X\x88W8\n\x0c\xd2+2\x90+\x12\xa9\x15\xee\xd3BP\xc4\x8a\x83h\x15I\xa4\n(\x9c\xa7\x10\xf58JE\n\xa1\xc2\x07s\xa2\xe8\x14\x99\xc9\x14(*EF\"E\x90F\x91\x89Dq\x08\x85\"\x9a@\x91\x81>\x91\x99<\x11\xa0Nd'N\x1c\x876\x91\x9d4\x81\xa7L\xa4\x11&<J\x0f\xd1%\xb2\x91%pT \x8b\xa7\xc2=\xbff\xa6I\x84H\x12\x07R$<\x04\x89\xa0y\x12$G\xe0\xec\x97\xbc\xc4\x88\x10-\"\\\xa74J\x84\x9e\xd9-\x05\x86\x08\x11\x19\xe9\x10\x07\x90!\xec\x14&\x1f\x15\"/\x11\xc2O\x83\xc8A\x82@\xa1\xf8\x01\x02\x04\x9a\xfe\xe0F\xe3\xe2\xa9\x0f\xee\xb2\xac>\xf1,\xa4\x87\x18ea \x0fa\x9d\xa0\xc9\x0e T\x07\x17\x04\x1b\xa29\xe4#9\x1cNq\xf0~\xef\x03\xe9\x0d(rC\x98\xda\x80!6x\x95\x1dKj\xc0R\x1a\x1c\x84\x86\x0ct\x86\x082C<\x95\x01Md\xf0\xe0\xff\xce\xeax\x9e\xc1\x12\x18\xf2\xd0\x17\xbc\x95\xb7\\I\".hO\xb4\xa5<\x07m!3i\xc1MYH%,\x08\xff\x88\xad\xe2v\xbaB^\xb2\x82k\x1b\x1c\"*8i\nyI\n\xe9\x14\x05\x07\x1d!\x89\x8c\x10$\x1e\xc4\xd1\x0e\xd0\xa4\x83H\xcaA\x0c\xe1\xc0I7p\xd7\x06\x0b\xfb\xe2\xa8\x06\x91D\x83\x08\x9a\x81\xb5iy)\x06.\x82\xc1\x01\xf4\x02\xabw\xc6I.H\xa3\x16\xf8h\x04\xf9I\x04\x87\xf7$4\x81\x00K\x1f\x98\xae\x80\xf8\xd0\xde\x84\xc8\xdeYif`\xef\xf8~\x8a\xd8\x9d\x08E\xec\x86:\xe5(\x99!#,h\x94\x06\x1b9\x0b\xa3\x88]\x8a\xd8\x1d%\x05`r\x16F\x11\xbb\xfb\x92 l:\x0cnJ\x00\x9c\xb2@N\xd9A\xa7 \xect\x04\xe0\xe9X\xd0\xd3\x11\xc0\xa7\x18\xf8)\x15\x80\xf2\xce\xe1!\x08*#\x08\x85\x85\xa1\"\x81\xa8\xecPT\x18\x8c:\x18\x8e\xa2\x88\xdd`\xcd\xd2\xe0)kQ\x14\xb1\x9b\x02T\x85\xa0\xaa<`\x15\x12\x81 \x02V\x11\x90U0\xdc0\x12\xb6\xa2\x88]\x8a\xd8\xa5\x88]C\x12\xc0-<\xbcE\x11\xbbJ(b\x97\"v)bw_\xd2\xe10kq\x14\xb1k}\x00\x05\xa0Q\xc4n>8\x8d\"v\x0f\x06\xdb\xf2\xf494\xe0\x86\x87\xdcp\x11\xbb\xc8\x13p\xcd\xbc\xd3\xfa\xb7\xbeQ\x89\x94WS\xd7\xdf'=\x04W\xd6\xe5\xea\xfa\xe1\xaa\\\x9e},\x97\xe1\xa0\xac\x17\xf2\x91\xef\x1f\xce_\xed\xc5g\xe9\xa6\x8d\xf1Y\xea\x82\x0c\x1c\xd4\xad\x9c\xa8\xe8\xa95P\xedO\xa7\xbf{\xaa\xee\xb6\x9dDkT\xe2\x89V\xd1\xe3\x8e\xed\xbaR\xba\x89\xc0\x08\xe3\xd4\xa4\ns\xa4\xaf6AaCyA|xV\x8c\xad\x0fl\x17\xca\x80\x1a\xee%|xv\x95\xf0a\x9c\x7f\x11\x08\x1f&|\xd8y'\xe1\xc3B\x08\x1f\xde\x17\xc2\x87 \x1fv \xe1\xc3\x84\x0f\x0b!|\x98\xf0a\xc2\x87 \x1f\x96B\xf8p\n\xc4J\xf80\xe1\xc3\xa3\x10>\xbc/\x84\x0f\x13>L\xf80\xe1\xc3\x84\x0f\x13>L\xf8\xf0\x97\x8e\x0f\x97\xe6\xb4\xec\xcb\xe2\xfc\x8a\x7f\xf9\x05\xdf\xe5\x9d\x88%F\xc3\x86\xe5\x12\xca\xba\xebY1\xfb\xb2\xfcw\x85'O0\xd6a\xbb?\xa2\xcc\xd7L\x00\xcd%[*,c\xb5\xb7\\(O\xbd\xf0\xe6]3\xc6;\xb7\xca\\\x0b\xcf\xaa\xf2V\xb8\x13g/\xea\x9eK\xa7\x92\xea\xa3\x93\xe2v\xdb\xa5\xd8\xaf\xf6\x8d.\x85w.X\xed\xfa];\xb8\xdd\x86\x9a\xee\xfa\x1b\x89\x84gD\xc1a\x8a\xc8Y2\xf0\x8e\nF~!\xf3\x8b\xc4k~\xfa\xf5\xac`\xee\xbf\xcd\x9a\x1f\x9b\x9c\x15\x97\x838\x8a\x1fp\xcd\x167\xbf\xff\x9d\x9b\x13\xf0\xbd\xb8~\xd1\xb2U\xf9A5\xb5\x83k\xe3G\xf5\x00\x06\xca\xb6\xe2\xfd\xdf\xef\x97\xf5h\x91~\xd9\xee\xab\xad\xa8l\x04\xd6\xeb\xf7\xac\x99\x1a\x08\xc2\xf5\xd3\x0f\xd2n\x17\xb3\xc2\xa2\x8eh\xfe\xd3p\x13\x01\xfa{z$@\x1f\xe3\x10\x06\x02\xf4 \xd0w\xdeI\x80\xbe\x10\x02\xf4\xf7\x85\x00}\x02\xf4]B\x80>\x01\xfaB\x08\xd0'@\x9f\x00}\x02\xf4\xa5\x10\xa0\x9f\x82\x89\x13\xa0O\x80\xfe(\x04\xe8\xef\x0b\x01\xfa\x04\xe8\x13\xa0O\x80>\x01\xfa\x04\xe8\x13\xa0\xff%\x00\xfa \x10\xe9p\xaa\xe5\xd5\xf5C\xcf\xbcg[\xea\xd8\xd9\x9eu\xef\x9a\xb7r /\x9a\xfa\x8e\xb5}7\x9c|\xf9BGR\xf3\xdb\xf8\xd7\x9b\xf8!\x92\xe1T\xdb\xcb\xd5}\x8f\x16V\xd5\x8a\x95\x1a\x88\x80\xdc\xfc\x0e\x0e\x9b*\x82\xf8\xaa\xbd\x0c\xf5\x11\xc7Hh\x02X\xcd\x07\x08`u\\'\x80\xd5\x10\x02X `\x1d\x85\x00\xd6\x9e\x00V\xbb\x10\xc0\xaa\x85\x00V\x02X `EZI\x04\xb0\x0eB\x00\xab)\x04\xb0\x12\xc0j\x11\x02X `\x0d)\x9f\x00V\xe73\x04\xb0N\x84\x00V\x02X `%\x80u\"X\xb0\x8b\x00V!\x04\xb0\xfeV\x00VDFm\x89\xa3\x1a%e\x0c\x086\xbc \x07A\xbd\xf2\x05a\xacW\xe2\x83\xef\x1a\x815\x1aX\xaf\xc2x\xd5\\\xd37`\xb6\xf9P\x8cw\xf2Ru\xdf\xa3\xc7x\x85\x02\xa2@?\x8f\x8f\x08\x85\xffN\xd4\x14\xc4\x7f'\xa8\xf1\xac@\x82\x7f\xed\x0f\x10\xfc\xeb\xb8N\xf0\xaf!\x04\xff\x12\xfc;\n\xc1\xbf=\xc1\xbfv!\xf8W\x0b\xc1\xbf\x04\xff\x12\xfc\x8b\xb4\x92\x08\xfe\x1d\x84\xe0_S\x08\xfe%\xf8\xd7\"\x04\xff\x12\xfc\x1bR>\xc1\xbf\xceg\x08\xfe\x9d\x08\xc1\xbf\x04\xff\x12\xfcK\xf0\xefD\xb0P\x1c\xc1\xbfB\x08\xfe\xfd\x92\xe0\xdf=\xbf\xc0\x81\xf8o\x14\xd0\xbbi\x96\xbb\x8a]\xa9\xfc\xce\x9d\x1b\xe0\xfdwq\xa3\n\xda\xed\xc6\xf3\x90\xabJ\x8e\x8a\x0fe\xd7\x0b\x14D\xdc\xa7\x13F\x0f\xde\x92d\x8cw\xfa\xde'Z\x1d\x8f\x15\xdd\x9d\xe8\xd1\x94\x9e\xa09\x82\xe6&B\xd0\x1cAsv!h\x8e\xa09\x82\xe6\x08\x9a#h\x8e\xa09\x82\xe6\x08\x9a#hn\x10\x82\xe6R\xd0-\x82\xe6\x08\x9a\x1b\x85\xa0\xb9}!h\x8e\xa09\x82\xe6\x08\x9a#h\x8e\xa09\x82\xe6\xbe\x04hN\x8a\x7f\x7f,\xa0\xb3)\x02\x15\x0e\x9c\xdb\xff\x04\xa2\x98\xb3\x19\x82vy\xf1\x92\x82\xe8,\x0fP\x10\x9d\xe3:!u\x86\x10RGH\xdd(\x84\xd4\xf5\x84\xd4\xd9\x85\x90:-\x84\xd4\x11RGH\x1d\xd2J\"\xa4n\x10B\xeaL!\xa4\x8e\x90:\x8b\x10RGH]H\xf9\x84\xd49\x9f!\xa4n\"\x84\xd4\x11RGH\x1d!u\x13\xc1\xa2&\x84\xd4 !\xa4\xee\xb7\x82\xd4\x1d\x12\xd0v\xf6\x91\x8fGO\xe2\xd2 *\xf7\xfd\x03\xef\xdeCp\x1b\xff\x82\xd3x6(\xebU\xc3W[\xf53/\\\x95\xe8\x8eZ\x93\xa5\xaa\xdb\x1e{\xe8\x9a\x0b\x0fs@[~`\xcb\x0fk\x05=:\x18\x97Hv@\x0b\x07g\xa5\x80Y~\xd0* \xb2\x12\xafp\x14\x18\x04\xac2\xc0U\x89`\x95\xd3\xc5\x8f\x83\xaa\x0e\x02\xaa\x92`*(\xaa\xca\xa5E\x1cH\x95\x02Q\xf9\x1c\xc7(\x80*3<\x85\x02\xa72BSA`*\x13,u\x08(\x15\x0dIe\x00\xa42\xc3Q\x010*;\x14u\x1c *;\x0c\x85\x07\xa1\xd2 (\x8f\xd2C\x00T6\xf8 \x07>EAO\x99\x81\xa7\x10\xect \xe8\xe4\x81\x9c\x82\xe6I\x10n\xc2\xd9/y\xa1\xa6\x10\xd0\x14\xaeS\x1a\xc8\xa4gvK\x81!\x88)#\xc0t\x00\xbcd\x07\x85}\xe0R^h\xc9\x0f,\xe5\x80\x95P\xb8H\x00RB\x03Jn\xfff<\x98\xe4.\xcb\xeae\xc8\x02#\xc5(\x0b\x0b!\x85u\x82\x86\x8f\x12\xc0#\x97S;\x04\x1c\xe5\x83\x8d\x0e\x07\x8d\xbc\xdf\xfb@\xc0\x08\x05\x17\x85\xc1\"\x0cT\xe4Uv,L\x84\x05\x89\x1c\x10Q\x06\x80(\x02\x1e\x8a\x07\x87\xd0\xd0\x90\x07QqV\xc7\xf3\x0c\x16\x12\xca\x03\x08y+o\xb9\x92\x04\x05i\xd8\xc7R\x9e\x03\x08\xca\x0c\x03\xb9A\xa0T\x08H\xf8Gl\x15\xb7\x03@y\xe1\x1f\xd768\x04\xfd8\x81\x9f\xbc\xb0O:\xe8\xe3\x00x\x92\xe0\x9d \x94\x13\x07\xe4\xa0a\x9cH\x10'\x06\xc2q\x028\xee\xda`\x1d\xe98\xf0&\x12\xba\x89\x00n\xacM\xcb\x0b\xda\xb8 \x9b\x03\x00\x1b\xabw\xc6 \xd7\xa4\x815>`&?,sxOBC2X@\xe6\xb0\xc0) \x82d\x8a\x9eR8\x8d\x19B5\xd6\x8bb\xa3&B\xb1Q\xa1\xce:Jf( \x0b&\xa5\xc1I\xce\xc2(6\x8ab\xa3FI\x01\x9e\x9c\x85Ql\xd4\xbed\x02\xa1\x0e\x83\xa1\x12\x80\xa8,PTv0*\x08G\x1d\x01\x90:\x16$u\x04P*\x06\x96J\x05\xa6\xbcsx\x08\x9a\xca\x08Na\xe1\xa9H\x80*;D\x15\x06\xa9\x0e\x86\xa9(6*X\xb34\xd8\xcaZ\x14\xc5F\xa5\x00X!\x08+\x0f\x88\x85Df\x82@V\x04\x94\x15\x0c\xec\x88\x84\xb3(6\x8ab\xa3(6\xca\x90\x04\xd0\x0b\x0f{Ql\x94\x12\x8a\x8d\xa2\xd8(\x8a\x8d\xda\x97t\x98\xccZ\x1c\xc5FY\x1f@\x01k\x14\x1b\x95\x0ff\xa3\xd8\xa8\x83A\xb8<}\x0e\x0d\xc4\xe1\xa18\xdc\x01cFp\x12\xc0\xa7=VLT\xcbs\x9a\xd8\x85\xb8\x0e\xbf\xecX[2y\x8a\xd8\xd8\x12=\xebM\"\xaa^\xec\xfa\x1b\xf9\xd4\x13]\xf7G\x1aHe\xb6\xdd\x94Ie\xe4M\xd2\x0b\xad\x16\xa9Q\x01z\x0d\x92Af\xfb\x8b\x80\x17P\xf3\xc3i\x9b\xe2\xc3\xd5\x86m\x9a\xab\x01\xfd\xf1\xa0n(\xf6\xf3\xae\xac\xfb?\xfd\xc1rK\xff\xe1\xaa+\xd7WU\xb9)-Qe\x90\xef\x1d\xff`W\x8b\xa6\xeb\xaf\xb6\xac\xbd\xba~\xe8\x0f\xa5s;_\xc6[s\xc7\xdar\xf5 \xdf\xc7\x96\xbf\xfb\xe3\x1f\xbf\xfd\xff\x7f\xaa\xd7ul\xb1\xfd\xdd\x1f\xfft\xfbm\xfe\x17\"\xc0|9\xf6P\xf8\xbdB\xec\xd5\x18\xbf\xbcx9+\x8f {\x82\xec\x83\xfej\x8c\xcb\x17\x08\xb2'\xc8\xdey'A\xf6B\x08\xb2\xdf\x17\x82\xec \xb2w A\xf6\x04\xd9\x0b!\xc8\x9e {\x82\xec \xb2\x97B\x90}\n\xeaM\x90=A\xf6\xa3\x10d\xbf/\x04\xd9\x13dO\x90=A\xf6\x04\xd9\x13dO\x90\xfd\x97\x00\xd9c\x80\xf4\x7f\x0cH\xfa\xba-\xea\xde\x83\xa4_\xaa\\\xa5U\xd9 \xc7\xf0\xcf/v\xfdM\xd3\x96\xff\x90\xfe\xf5\x13\x10\x05H\xcf\x1e\xff\x84\xf2\x9f\x8c/\xb1\xe3?[+\xe4\xfe\x17\xf1ju\xe5\xd1\xc2\xed\xa6\x82L\xf9\x1c\xb8Wa\xea\xde\xef\xf9q\xbe\x03\x10\xef\x01\x04\xc6\x068'\x13 }5Zb\xf16oav\xa7\x8b\xc7r\xcf\x8d\xbbA\x18{\x83\x04\xfc\xcd\xdf\x00\x9d\xb7\x15\x83\xc1A.\x1c\x0e\x12\xb18o\x81\\\xb9h<\x0e\x0e\xc7\xe4 \x1a\x97\xf3\x165\xe6v\xc5cs\x90\x1b\x9f\x83H\x8c\x0ebq:\x7f\xcf\x1e0<,V\x07\xb9\xf1:\xc0av\x90\x13\xb7\x83\x83\xb1;H\xc3\xef \x17\x86\x07I8\x9e\x7f8\x14\x1d[\x86\xb1<8\x0e\x9e\x07G\xc4\xf4\xe08\xb8\x1eDb{\x90\x86\xef\x85\xa6`\x1c\xc6\x07yq>\x88\xc0\xfa \x1e\xef\x83\x04\xcc\x0f1e>G\xe0~\x90\x03\xfb\x83\x10\xfe\x07x\xf3\x0c\x81\x03B\xa4\x15\x17\x8d\x07zK\x13X!\x02\x13\x84\x88Zf\xc4\x06!\n\x1f\x84\xdc\x18!$\xe2\x84\xfe~\xd5\x85\xb1BH\xc7\x0b\x9d\xe5\xf17\x860C\xc8\x86\x1b\x02\x1e\xfe\x02\x0c~\x08q\x18\"\x84\x1c\xdb\x89X\" \xca\xf5x\xd52\xe1\x8a\x90\xa4\\<\xbe\x08\x88V&\xe0\x8c\x90\x8a5\x82\x1fPAa\x8e\x90\x19w\x84L\xd8#\xe0z\xcc\xc1\x18$\xe0qH@b\x91\x80\xc6#\x01\xd7\xa1\xe2qI\x88\xc2&\xc1\x87OB.\x8c\x12bqJH\xc4*!\x0e\xaf\x04\xc4G\x08\x0c\xb3\xf0\xf3x\xfc\x122b\x98\x80\xa9\x9ag\x94\xe5\xc33\x01\x83i\xc2\x01\xb8\xa6\xb3@~\xa3\x0f\xdb\x84\xdc\xf8&\x041NH\xc59\x9d\xa5\xc9\xbd\xbd\xdf\xcd\x11\xc6;\xc1\x8fyB\x12\xee\xe9,\xca\x8b\x87B*&\xea,\xcd\x93\x05XJ>l\x14P\xf8($`\xa4\x10\x87\x93B\nV\n\xd1x)\xf8g\x11\x08`X\x10\x81ca\xb1SH\xc1O!\x16C\x05\x7f\xc3S\xb0Tga\x06R\x89\x1d28L\xd5; \xea\xb5\x1fW\x85\xbc\xd8*\x84\xf0U\xf0c\xac\xcegR\xb1W\xc8\xd8w#0X\x88\xc2a\xc1i\xa0\xb0\x0f\xdb\xb2E`w(\xd6\xf6\xb2\xe8\xd9\xd7}\xb9qi\xb9/\xfb\x8ay] \xfca\xb8\xbfa\xf5\x88\xd4\xca\xee(\xea\xc9\xc4(\xd0\xdds\xdb\xeej\xb6<\x85s\xf7\xd6\xbd\xdeU\x15\xef\xe3fy\xeeO\xb9lXW?\xed\xa5\x87\xb7\x90u\x19\xf5\x03\xcf\xa4Sn\xd1\xd4K\xe5\xe1\xf7E!\xfc<\x01F=\x9duS<@\xb1\xddV\xc2k\\\xd6\xc29U\xf4l\xac\xb0\xcd\x90\x9d\xb8\x94\xfei\xd7\xa7\xc0\xb2a]\xde\xb1\x0e\xb6\xac\xdd\x94]'j\xdd7\xc0>\xb0\xc5\xce\xe1Y\xe3\xefUV\x9c2{\xe4\xcahh\x82kf\x7fa\x0b\xbb\xb9&*\xe9\x04l1\x80\xf8\x12\xd3\x1e\xa0{>dG\xdc\xdeR\xd6\x0c\xc5\xd7\xb2-\xd6e\xed\xe8\xcf\xb3ht}\xe3\x10\x91^\xd4\xe6\xaf:\xb2\xd7\x86\xe3K\xf1\xa2\xda~<\xbbf\x1f\xfa\xab[\xf6p`\\3\xee\x18.G\xff\x18k\xa1C\x9b\xf9\x9f\na(\xbaNB*\x17\xc5\x9a]\xb2_v\xac\xebO\xe5uGa\xbf\xecX+ \x16\xbcX\xaeI\x06\x9b\xa6\xeb\x81 ?\xbdp\xf0\x9f\xc2yo,/\xdb\xfe\x01J\xcf\xa1\xa4|\xc0\xb7\x0c\xea\x066M\xcb4\xa0c3\xa9\xfa\xa6/R\x8f\\\x0dF\xa5\x87'.\xf1z\xa1E\xf1G\xbd\xdb\\K7\xb2\x8e%3\x02\x97\\\xed5\x15-2\xbe_\x89\xc2\\\x13\xc7}\xd1A\xc7\xfa\x13(\xfbN\xc3k\x1d\xecj\xd9\x99\x97\x12A\xb8/\xbbi\xff@D\xbdK\n\x0c*\xea\xdd\xf6\xf8\xd9\x8b\xe9 \xa7\x84\xf5J(\xfa\x9d\xa2\xdfG\xa1\xe8w\x8a~\x1f%+\xbb&\x86Y\x13\xc5\xaa\xa1\xe8\xf7C\x194 \xec\x99,\xcc\x99x\xd6\x0cE\xbf\x1f\xc2\x92\x89a\xc8$\xb0c(\xfa\x9d\xa2\xdf)\xfa\x1d\xcbn\xc9\xcalIa\xb5P\xf4\xbb\xeb\xb6 {%\x82\xb9\x82\x89\x9b\x8ea\xacP\xf4{J\x00y\x88\x91B\xd1\xefx\xe6 \x92u\x82a\x9c\xe0\xd8&\x14\xfd\x0e\x89\x8c\x92\x086 E\xbfg`\x8b\x04\x99\"\xa9,\x11\xe7\xbaI\xd1\xef{B\xd1\xef\x14\xfd>\x93\x1c\x91\xc8X\x06G4{#\x8a\xb9A\xd1\xef\x89\x0c\x0d\x8a~\xd7\x82IX\xaf`l\xa3\x8c\xb2\xfeNb\xa9\xc6oc\xd2\xfaUQM =\xabWaZ8;N\xe1\x9bn}\xa5a\x1f\xe3\x19\x9f\x1b\xe0\x8d\xf2\x1f\x9fL\x1e>\x91\x84\x0f\x01f\x8a\x0e-\x91d\xb1\x98*V\xc0\xa6\xe8\x177\xf3\x8e\xbd.\xefX\xcdK\xdasIdl\xe5H\x088\xbde\x0f\xaev\xce\x10v\x05\xa9\x17j\x89kE\xbe\x02\xe1\xf6T(\xaf\x822\x07\xfc]8+\xd73\xaf\x9eh\x01\x9f\x96C\x98\xfa\x1b\xae\xa9\xa6\x16\xde\x8cf\xb5\xeaX\xcfwR\xd3\xea\x82\x01\xb6t\xac\xcf\xac-\x87\xeb\xca\xa2DY?d\x7fQ\x8d\x11\xaa\xacw\x1b\xd6\x96\x0b\xfd\x9b\x98\x0d\x17E\xcd\xdb#\xfdv\xbc\x0f)\xc5\xef\xea\xc1U:\xdbU\x9c\x8b\xd2*\xd6u\xa3\n\xa5sq\xd7qU\xdf\xb2H}N\x8b?\xb2rg\x0c\x05\x8bz\xc5\xc9\x03H\xed\x8a{5\xbe\xef\".H7\xba\xd9\x83\x15\x1b`W\xcd\xe0u\xe943\x7f:_A\xc5V\xbd&z(\xe6\x876\xdd\x05\x02 \x07\x88| \xd7\xf3\xf5\x03\xb0bq\x03\xc5v\xfb\x19\xb5h\xd2/\xc6\xe7}\xba4\x9e\xe0\x1a\x15=\xb4\x11'\x8c\x80\xa4u-\xcb\x85$uI,PiP\xdc\xa8:\x92Y\\Y/\xaa\xddrf\x98\x17\xf2-\x03\x18;\xfbb\x02\xda70\x02\xbe\xb4\x1at\xa6\xd9\xe4\xf2\xfe\xbc\x9b}\xadY\x13\xc4\xf4\xdb\xb2N\x910\xc4\xf0\x1a\xc7#\x1fr\xa7j4\x95\xeb\xbaig\x08\x8b\x1e\x8d\xd3WH\xcd\x1c\xfaa\xaf\x9b\xa6bF\x8c\xbf\xe5\x03\xb6\xec\x8e\xb5\x93G}\x1fO\xdd=\xffp\xa5A\xdfi\x99}$L\xca\xe1\xef`\xb5\xc0\x9e\x9bv\xc9\xda\xf9\xbe\xe9mY/\xd8w s\xde|\xdd-o\xe1\x9b\xd3?\xfc>\xab6R\x12\xed\x9c)3\xe1\xec\xa3\xfa\xe3_\xb2\x04[\xea\x9d\xbf\xc8;$GH)\xc3d\xf1\xfd,\xaeL\xf3\xf1\xf0A\xadJ\xd6\x9f~\xf25\x9eZ\xf5\xf2\xa7\xa7\xea\xde\xfd\xfc<\xfa\xfdO\xb4\x86(MO\x90\xa0\xa3\xec\xccdpJ}\xc0\xe4\xe7)M\x10\xa5 \xa24A\x1e9\x90\xbc\x04\xd1\x04&oQ\x94&\x88\xd2\x04\xa5\x92\x9c \x8d\xe8\x04\xb9\xc8N\x90Dx\xf2\x0f\x07J\x13\x14G\x80\x82H\x12\x14\xa4\x11\xa1BS0\x8e\x0c\x05y Q\x10A\x8a\x82xb\x14$\x90\xa3\x10S&\xa5 \x92\x12M\x9c\xf2\x96Fi\x82(M\xd0L\xf2\x10\xac\x00\xcf\x13\x02\x0c\xd1\n\xe2\xc8V\x10b\x00$\x92\xae\x00Q.\"\xe9\xcb\x81\x04,HR.\x9e\x88\x05\x88V&\x10\xb2 \x95\x94\x05\xc1\xfc%ar\x16d&hA&\x92\x16\xe0z\xcc\xc1d-\xc0\x13\xb6\x00I\xda\x024q\x0bp\x1d*\x9e\xc0\x05Q$.\xa04A\xe1\\:\xde\xcb\xc1\xe7\xf1D/\xc8H\xf6\x02L\xd5(MP^\"\x18\x04\xc9`\x90J\x08s\x96Fi\x82(M\x90C\xa2Ie\x10M,\x03J\x13d\x95\x14\xd2\x99\xb30J\x13\xa4\x85\xd2\x04Y\xe43\xa7 \xf2g\xda\xd8G\x97\x81}\xe8Y\xbd\xec\xa0\x18\xb2\x05\xf57p\xdd\xf47\xa2\xeb\x14\xcbe\xcb\xba\xce\x11|\xa5V\x02\x9dg\x86\x8f\x9d!\xad\x8c\xf5\x81\xf3\x81\xfc\xc0;\xe2\x9a\xd5\xac+;\xf9I\xc4\xd3\x02\xbc\x97\xff\xde{~\xe2\xdeQ\xbc6_\x06\x9c\xe9\xe15\xf3\x05\x82\xf2\xdc\x08\xa1<7\xe3%\xac2)\xcf\xcd\x98\xe7FSI\xd2\xd3\xddL\x191\x94\xedF e\xbb\xa1l7\xa3P\xb6\x1b\xcav3JV\x92H\x0cA$\x8a\x1cB\xd9n\x0e%\x82$\x90@\xb2\x10@\xe2\xc9\x1f\x94\xed\xe6\x10\xb2G\x0c\xd1#\x81\xe4A\xd9n(\xdb\x0de\xbb\xc1\x924\xb2\x124R\xc8\x19\x94\xed\xc6u[\x90\x84\x11A\xc0\xc0\xe4I\x89!^P\xb6\x9b\x94\x841!b\x05e\xbb\xc1\x13(\x90\xe4 \x0cq\x02G\x9a\xa0l7\x90H\x8c\x88 EP\xb6\x9b\x0c\xa4\x87 \xe1!\x95\xec\xe0\\7)\xdb\xcd\x9eP\xb6\x1b\xcav3\x93\x1c\x99G\xb0D\x84h\x12B\x14\x01\x81\xb2\xdd$\x12\x0d(\xdb\x8d\x16|\xb6\x1bS\x93\xa5\x80\xa8'\x13\xd7\x18\xf1\xde\xb7\xbb`^\x07J\xd4\x92\x96\x05\x83\x12\xb5\x1cQ\xb9\xe1\x14#\x94\xa8%\x87\x16)Q\x0b%j\xf9\xe2\x12\xb5\xb4:QK\x1bL\xd4\xd2\xce\x12\xb5\xf8\xd2\xb4\x9c\x0c\xcc\xb3!_\xcb\x80\xb1\x1d\x98\xaf\xa5\xa5|-s QL(_\xcb\xfe=\x88\x80`\x0c,\xa3%\x96Z\xe3-\xcc\x8e\xafx\x9ct\xb9)6\x10\xa6\xd9@\x02\xd5\xc6\xdf\x00\xca\xd7\x92J\xbf\x81h\n\x8e\xb7(\xca\xd7B\xf9ZRi:\x90F\xd5\x81\\t\x1dH\xa2\xec\xf8\x87\x03\xe5k\x89\xa3\xf0@$\x8d\x07\xd2\xa8<\xa1)\x18G\xe7\x81\xbc\x94\x1e\x88\xa0\xf5@<\xb5\x07\x12\xe8=\x88)\x93\xf2\xb5H\x89\xa6\xfexK\xa3|-\x94\xafe&y(B\x80g\xba\x00\x86*\x04qt!\x08a\xd8\x89\xb4!@\x94\x8b\xc8\xbeq \x85\x08\x92\x94\x8b\xa7\x12\x01\xa2\x95 \x94\"H\xa5\x15A0\x91D\x98^\x04\x99)F\x90\x89f\x04\xb8\x1es0\xdd\x08\xf0\x94#@\xd2\x8e\x00M=\x02\\\x87\x8a\xa7 A\x14\x0d (_K8\xa9\x89\xf7r\xf0y<U 2\xd2\x95\x00S5\xca\xd7\x92\x97\xca\x04A:\x13\xa4R\x9a\x9c\xa5Q\xbe\x16\xca\xd7\xe2\x90hZ\x14DS\xa3\x80\xf2\xb5X%\x856\xe5,\x8c\xf2\xb5h\xa1|-\x16\xa1|-\x8f$_\xcb\xf5\x83Q\xb9=w7\xe5k\x11B\xf9Z\xc6KXeR\xbe\x16#_K\x9b'_KK\xf9Z\xa6B\xf9Z(_\xcb(\x94\xaf\x85\xf2\xb5\x8c\x92\x95$\x12C\x10\x89\"\x87P\xbe\x96C\x89 $\x90,\x04\x90x\xf2\x07\xe5k9\x84\xec\x11C\xf4H yP\xbe\x16\xca\xd7B\xf9Z\xb0$\x8d\xac\x04\x8d\x14r\x06\xe5kq\xdd\x16$aD\x1000\x99>b\x88\x17\x94\xaf%%\xe5I\x88XA\xf9Z\xf0\x04\n$y\x02C\x9c\xc0\x91&(_\x0b$\x12#\"H\x11\x94\xaf%\x03\xe9!HxH%;8\xd7M\xca\xd7\xb2'\x94\xaf\x85\xf2\xb5\xcc$G\xee\x0c,\x11!\x9a\x84\x10E@\xa0|-\x89D\x03\xca\xd7\xa2\x05\x9f\xaf\xc5\xdc\xe2R\xbe\x16\xca\xd7B\xf9Z(_K\x9a\x16)_\x0b\xe5k\xf9m\xe6k\xb9.\xea\xdb!]\xcbuQ\x15\xf5\x82ug\x1f\x15\x9f\xcd\x93\xa8\xe5EU}\xafn\x17U\xd4\xbc\x00U\x86\xd8\x93T\x15,\x1an\xd9\xf3\xaeW\x00\x9fP+\x06\xc5B\xf4,\xfd\xd5]\x1f\xe2\xef\xbc\xc7,\x8a\xaabKX\xb5\xcd\x06\x8aZ\xa2\x16\x9bf\xb9\xab\xd8\x89\x04w$KJ\xa2\x10\x8b\xa6\xeev|'\x087\xe5\xfa\x06\x8a\x0d\x7f\xcdP^\xb3\x1a\x95\xbf.:\xfe5{\xb1s\x1e\x19jbs\xc2;p\xbdh\xda\x96-z\x19\x93\xafk:\xc9\x10c\xb4_]~\xb4\xf9a\xf4g}\x1c\xa4\x96%\xab\x9bM2\x9c#?j\xe2\xe3\x180\xe5eS\x1a\x0cF\xe8\x9b[V+ DV]\xf7\x16\xbe\x11)jU!\xd7f\xfe\xa77\xef^\x7f'\xf6\xed\xf2\xbe\xb1\x8f\x155\x9c\xd7\xbd\xda\x1a\x0c\xc8\x98\xb9?\xb0\x16(\x9d\"\xf6\x97u\xe5\xba.\xfa]\xcb\xbaa\x92\x109\x91\x9au#\x8c\xf1\xfd=\xf5D!\xba\x9bh\x0b`\xf8\xb7\x1a\xca\x92:Q\xd6{0\xdd!\x1c\xd1\xd9\x10\x1c\xcd \xe2\x88\x12G\xf4\x8b\xe1\x88\x1a\x8bI:C\xd4\\\x91//^\xce\x1bAtQ\xa2\x8b\x06F\xe5\x11\x98\x16>/\x8d22]\x1dP]\xd6\x03A\xff\xb3o\xd4\xb47\xacO\xab)I\x8b\\=\xe4\xea!W\x0f\xb9z\xd2\xb4H\xae\x1er\xf5\xfc:]=\xa36Z\xd65\xd5\x1d\xbb\x12\xfbU\xb4\"\x8cg\xf4\xcc\xb0\xaa\x8a5o\xbc\xba\xa8\xe0aq\x83\xe4\x1a\xdf\xec6E\xfdu\xcb\x8a\xe5^\x9a4>\xe4\xa4\xe3\x86?\xb5a}\xb1,\xfa\x02\xa3\x97?~\x93U/\x07\xba\xc0\xce\xae\x1f\xae\x0c\x9f\x85\xcd\x17\xa6\xccn\xa7\x1fL{\xbe\xf8\xee\xd9\xeb\x0b\x9bx\x98\xbe/\xea[U\xf2\x13\xdd\xee\xc7\xedar\x99\xc1I\xdbu\x8f\x9f(`\x8a\xfa|D\xdeG\xc3\xfe\xa1\x9c\xde\xa1\xcc\xbe!\xb7g(\xce/\x84\xd8\xae\xaa^\x89\xda\xaa\xaa\xcd\xe9\xb4#k\xa10F%\xb4/\xa5}i\xd0\x8c\xd5\xf5\xf3.\xeb\x93\xf5{!\xa7+\xfe\x0b\xaaz\xb1\x0b\xed\xa4\x82Q\xeb\xac\xa8\xd4Us_\xb3\xb6;\xfb(\xfe\xe5\x01\x9b\x8ci\xe8\x15\xbf\xf5\x8dxnXo\xc5\x92ZUz5\x1d\xb31H\x9b[\xd0\x86\xf8\x17\xef\xcb\x85 \xc3\x0d\x8d\xe0\xd3\xf78c\x9a\x13\xf8\xaf \x9d\x1a\x9f\xb4\x9fp\xa0.O\x8c\x0bC\x8d\xea\xf2\xa35.\xcc\xae\xf28&4\xd5\xbf\x0e\x98\x91\xc2\x96\x86\x14=\xb9\x98p\xc90\xe1\xa8\xbe\xdd\xd9;\xf7\\l\xbd{*N+NJ@i\x80P\x1c\x84\xf0?\xc0\xa9/\x84\x03\x02\xae\x18\xecW\xc8i\xf5II\xb2\xfd\x9c\xa5)>\xa1\x0f\x1b\x84h;P\nFE\xe3\\2(\xa9\xeb\xdb\xdd\x82\xbfj\xe4V\x8a\xd4L\xf50G\xf3\xdek-M\xf4\xe8\xa6UtIG\xf4\xd9\xd8\xdf\xc7\x0f \xb0\xb3[V\x0b\xdf\xc4\x84T\xac\xde\xe9\x1b\xcb\xf2\xd3\xa9\xfb|\xa3cdI\xcf_\xeb\xf8\xdc\xde9Y\x0bA\xa8B\x08B\x1d/a\x95I\x10\xaa04\x0d\x83f\xd8\x97\x9a#\x84o5\x87\x0d\xaap\xca\xec\x9b@Z\xf8\xbd2\xc5\xd6\xde\x98\x0e\x8cf\xda\xbc\xce\xae\xd2\xe6\xf5\x13o^c|\xbergh\x8e\x92q\xc3\xa8\x97\x93a\xdfhn\xb0\xf8\xda<\x1f6\xc7\xda\xed\x12\n\x1b\xdez\x03\xa1\xb0J\x8e\xac\xdc0~H(l\x0e-\x12\nK(\xec\xaf\x13\x85M\xf6\x82^]?\\\x89W\xc7\xbaA\xbf\x7f\x10\xef\x88\xf2\x86\x0e\xe5\x18\x1b\xe9Xo\xa8\xf5<\xd5?~s\xfa{\xeb\x89\xaa\xfb\x15Vw\x91\xdfq\x90\x90-J~G\xc7-!\xc5\x01\xf9\x1d\xa5\x90\xdf\x91\xfc\x8e\xa6\x90\xdfQ\x08\xf9\x1d\xc7KXe\x92\xdfq\xeewTv\x0d\xce\xfd8+\xcbb\xcfEz!\xb9\xe55\xdcF~\xc8\xd9U\xf2C~\xc1~\xc8\xd8\x1d\x1dy\"\x0f\xd0\x16y\"\xa5\x1cY\xb9a\x1f\x1ay\"sh\x91<\x91\xe4\x89\xfcR<\x91\xdd\x95\x0e\xd3p\xfb \xff9\xf3Av\xff\xae\x1e\x99D?,*1\x9b\xea\xe2\x06\x9fd\xcb\xd6e\xd7\xb3\x96-\xc5\x12?\x14e.\xf5\x9d5\x1ab\xfa2u\xc7\xa3\xf5\x1d\xea\x86?\x12\xe3\xd1\xd4\x81\xf5\x06\x84\x05(\xdd\xa1\xbb\xba\xec\x03\x0eH{\xd3\xa48\x1b(\x05\xe1\xea\x0b7VJ\xd0\xdd\x87h\xb2\x16\x8c3\xca\xbc\x9b[\xb3\x83\xffI\x0e\x08\xf9\x96\xc9\xb9/\xeb\xf2\x8e\xb9O\x1c0\xcb\xe2J\x17\xe7\xb0\xc0\xae\xe8\x9b\xcds\xbb\x1bU\n\xfb\xb0mj\xe6wQ\x866R\xa6\x18\x9b*\xc7n_K\x9c\x96t=MEm\x9b{\xb9~}\xfb\xcdx]\xba\x9bk\xb7\x17R\xcaf\xe7;\xf9GJ[\x94*\x8d\xecu\xd1\xe9P7\xb1$\xcbI\x9a\xff\xcd~\xd9\x15\x95\xd7\xeb)E|=9+\xbd\xaf\xcb\xfei\xa7v<\x81\xc7\xbeU\x9f\xf4\xcf\xf0\xed7\xff\xef\xd0\xc6\xb1:\xa1\xe7\xc5i<\xda\x07l\xb4\xa2Y\xc9\xbe1\x1e+\xb3h\x19\xb72\xdc\xc7\xa6H\x19Z\xc0\x8bx\xca\x8bx\x1a8rB\xcaP\xf7?\xc3\x9fN\xa0\xbf\xd9u\xdf\xc1\xb7\xc0\x9f\x97m\xfb\x13\xa2\xaf\x16UYt\xfea\x8c\x99T\xa4\x04\xa6\x16)\xe8!\x1fraiQM\x80\xc9 \x8bj\xb0\xebk:\x12\n=\xe0\x9d\xf7\xe0\xfc\x940\xf9\xac\xc6\xf8*\x94\x7f|~pC\x11\xac\xdad+\xbeS\xbdE\x0d\xa4r\xa1\x1d\xd1\xf6g\xc3\xaa4\x96\x96\xf9\xbc\xa9Uj\x0e4aL8\x0b\x93\x03sb]\x98\xc2\xc7L\xf2\x1a\x88\x9f\xe4\xf8k\xe6m\x11\xbf\xc9\xe1\xfal\xdc\x81\xf3+C\xeb\x9c\xe5\x89\x11o\x8c\xb9o\x1c\x03kYv\xdb\xaap8\xca\xe3[\xe8\xe9c\xeaM\xc3~F\xads\xbb\xf5\x9au|\x97\xa0fW\xde\xd3\x86\xc6\x86\n\x93\xb6\xb44\x1e\x1d\xa7\xc1\x08\xfb>S\xeb\xac\x08\xf6\x1f\x06\xfcz.\xaa#?\x15\x8b\xb8\xe9\xad2Wu \xd2=c\xeb\xef\xe0\xa5(\x16^\xf0i\xd0^f\xf7\xb0\xb9n\xd2]z\xf8\xee(_4n\xf0y\x1d\xd5o\xfa4\xb6\xee\xa6\xb9\xafA\x9ct\xab\xceWr\x96&Z\xf7\xe2\xdd\x9b\x7f\x7f\xae\x8e\xe9[\xf8\xce)W}\xbc\x13I\xdae\x05\xd4\xe7\xf6\x9eT\x14\xda \x8d\xb2k\xcbO\xa0\xc2\xf7\x97\xe7\xd2O\xb1l\x16;qT\xe0\xb3\x86\xdb\x0d|'\xfc\xf5\xe2\xa6(\xeb\xe7\xca\x13\xa5 @gIF>\xf4\xb2\x96\xf6\x15\xdf\xa8\xc2\x9b\xad\xfc5Z-sTO\xca\xae-\xafn\x8a\xee\xe6\xd3\xe8\xe6\xafEw#W\xc1\xee\xa6\xf8\xdd\x1f\xff\x04\xfc\xd5\x92h=(l\xdb\x94\xfa\xc8\xe1\xf7\x97\xe7n\xcb\xe0\x9c\xcf\xf2;\x85\xa8\xdd\xb1\xb6\\=H\xdc\xd6\xf9\x84\xe8T\xfa5\xcbrY?\xed\xd5)a\x99\xd5\x8a\x99\x1d\x87\x1dqx\xe9\xb5>_\xf8W\xd5\xf0G\x19\xb6\xdd\xc31J\xc6\x9e\xdc\xe8r\xc3\xb6\xdcn\xee\x1a\x9buQ\x15J\xfcG\xe8\xb1\xb8\x99\xd0\xe3\xac\xe8\xf1\xe0\xd5B%T\xb0\x15s6s\xc5Q\xfa?B\x88\xad\xd7\x1f\x13BLpj\x1cVEp\xea\x11\x95\x1b\x06\x02 N\xcd\xa1E\x82S N\xfd\xf2\xe0\xd4p\x86\x1ba\xc0\xa1\xa0T\xb1\xa5\x1e\x9d\x9cV~\xfd>r\xfak\x03N]&U\xd2\x060\x08\x7f\x06\x8c\x9b \xf4\x19\xc2(\xbc\xd8D\xc0\xec\x83`\xf3\xa4\x04\x01O\x84\x05\x07\xc1]\xcb\xfc\xde\x08\xa83\x80m\x808\x0e\x12\x0btb`N\xff^`\x14,\xc4\x19\xa3\x99\xbc\xf0f\x18\xdc\x8c\x826\x83p\x0f\xc4\x02\x9b\x87\xc1\x9a\x99A\xcd4H\xf3p@\x13\x01g\x86&\n)\x08(\x139\x98C\xbe\x14)yAL\xdf0\xc7\xb9\xca2\xc3\x97\xe9\xe0eH})\xc0\xa5\xb7\xb2\x0e\xd8\xd2\x0dZ\x06\xfb\x01n\xd2\xca\x0bW\xe2\xc0J/T\x19\xd7.gO\xca\x08Rb!J7@\x19\xd7\xa6(p274\xe9\x03&\xe3\x9a\xe1\xecrI\x90\xa4\xa8\xbd\xa3@$ \x99\x02G\x06\xb7\x17Z\x9cPd&\xa5\xe5\x02!\xd3!H4R\xe6\x87\x1f\xf3\xe9#\x1f\xf0\x18\x0b;\x1e\x06:\"\x15\x19\x9e\xe7\x0e\x83\x1b=`#\x16\xbf\xc8\x04_\x10zA\xe8\xc5\xaf\x07\xbd\x98[\xb9\x93\xee'\xcd\nO\x12\xe6\xde8\x12\xc1\x16\xb1v@\xe6\xacC\xfcTC\x0e\x92+Y\xa4,\x07\x93\x8aD\x0f^\x15\xbc\xfaVn\x1e\"\xfcXCqq\xfe\xac\xc9\xfb\xd4\xdd\xe4\xdc\x9a\x089\xb7F\xc1Y\x15\xfa^rn\xd9\x85\x9c[\xe4\xdc\xb2Hh\xa2\x90B\xce-rnM\x84\x9c[{\x82\xebI\xe4\xdc\"\xe7\xd6L\xc8\xb9E\xce-{a\xe4\xdc:\xcc\xb95\xd9h\x06=]\xb3\xe2\xfa\xe1\x1c4\xac\xa7\x0b\xce\x97\xac\xee\xcbEQ\xc9\x05\xc7\xe3m\xbb\xdeqCb\xc1\xca\xbb=\x1d\xc8\x15\xa0\xd0\x07\x11)\xab\xa7\xac\x85C\x81u=9\xd4\xc8\xa1\xf6e8\xd4b\xb9_\xe9.5\xd1Fu\xbb\xcdsv!\xaeO\\c\xa3Z\xf8\xd4\xfeA\x94\xa7\x0e\x12\xb3z\xc0\xbe/\xea[Y\xcc\x13\xdd\x9aG\xea\xf12\x95a\xca\xa42\xf2\xa6i\xb0\xd2T%\xd2b\xdfS\xca(\x07\xf8\xcf:V/\xafX]\\Wl\xe9[\xce\x7f\x0b\x0e0o3\xa5\xc8r\xe6D\xd0\xa9\xe0\xcc\x17\x80\xb7\xac^\xbe\x96\xaf\x84M\xb1\xedf#\xb7\x98\xe8\x1e\xba\xbe\xe8w\x9e\xa0\xd3\xfb\x1b&N\xd8+\x86\xd9\xc0\xed\xf3\xe0\x05\xf3R]Q\xd2\xa8\x06\xbc\xe2&\x07\xdfX-\xbf\x83\xf72m\xa3\xd9\xa2\xb2\xd6=\xb7\xec`9\xdc{\xea\xaa\xd5\x0fM\x0bkV\xb3\xae\xecN\xb8%&\xb70\xec\xbez\xe0\x16+W\x80\xa9\x0d\x95\x98w\x9f\n;\x8a*Lu.\xe7{\xdf\xf6M[\xac\xd9 TMs\xbb\xdb\x9e\x88\x94\xb3\x9b\xa2.\xb7\xbbJ\xba\x0d\xc4\x08\x13'\x0b\x8e\xa1\x81\xa5\xebK\xd4\xcd\xbd\xe6\xaa\xdf2\xb6\xdd\xe7\xe2\x8e\xf2B\x0c\xde\xa9\x11\xf8o\xeahDA\x82f\x1f\xca\xae\x97\xae\x83\xebbq{_\xb4K\xd7k\x17\xcdf[\xf4\xe5uY\x95\xfd\x03/V\xb7~UV\xcc\xbaWU&\xcd\x15v\x80\xdb\xfa<\xc2J\x94\x13\xb15\xe9\xe7>\x00:\x04\x9e\xc8I\xde6[\x8aI\x8f\x0c32\xcc>\xa5a\x16e\xe1\xec\x0f(\x9b\x9dcN\x95\xe6\xd1\x04\xe6\xef\xac\xee\xf9\xef\xba\x9f\xbaF\xdb\xbb\xf1,U\x15;\xd1\xef\xda\xba\x9b\xf8>;\xb9\x1b\xbc)\xee\x18t[\xb6(W\xe5\xc2|\xd7PX\xc7\xfa\xbe\xac\xd7f\x8c\xc6\x8b\xfaa\xeaG\x95\x1b\xcb\x86uP7\xaa\xccb,U\x95 cn\xd4D>\x1f\xafc\xe1r\x8d8\xb5\xcdFr*\x16\xc5\xf0\xf7\x981\x10\xd7\x0f\xc6 \xb2\xc1#^\xffM]\x9eX\x89\xfb\x8d\x7f\xb4f\xa2\x7f\x8a\xfe\x1c\x83\xd4ko\x05\xc7X\xc0\xce\n\xd9X\x18\xf3$\x9bm\x85\xb6\xab\x9c6\x15:\x0d\x80\xb5)\xf1\xb9\x01\xe4| \x0c$Ky\xca\xb6\xb0\xb5a\xdb\x08\x93\x87\xdbnF2\xfdnbki\xd7\x08/GD\xd7e\xddlP*\x02JE0\x93\xc7\x92\x8a\xc0\x98Pp\x19\xec\x8d)hV^D\xd6\xfaa\xe9\"K\x97,\xdd=9\x82\xa5\x1btAv\xae\xfe7\x1b6j\xedPS\xe8`\x1c\xaa\x9f\x1f\x9a\x1d\xdc\x17u/6\xdd\xb0\xdb\x9e\xc2\x8f\x8c\x9b\x91r\xf2\xeb\x1bn2O\x8a+\xaajn\x0eC\xa2\xefr\xfe\x91-\x9f\xd7\xa1\xbbESUl\xc1\x9b\xfb\x83\xd2\xdcfW\xf5\xe5\x9e\xa2(uC\xd8i\x0c\x94\xbaA\xc9\x91\x95\x1bN:@\xa9\x1brh\x91R7P\xea\x86/ uC\xb7U\xfb\xdc+u\xf2Zw\xf6Q\x1d\xd6\xe6\xc9\xdf`(\xef\xad.\xe0{\xf5\xfc\x04\xeb\x1b\x8a7\x0fv\xe3\x8b?\xdf\xbf\xcfs\xdb\xf2\xd9\xb72:\xbc:\xf7&\xe4/\xfb;\xefg\x8b\xa2\x128B\xdbl\xa0\xa8\xc5\xb6@\xc1g'\x86k 6\xe5\xfaF0j\xba\xdd\x86A\x017\xe5\xfaF\x1d\x0e8\x94\xd7\xac\xc6*\xac\x8bN\xef\x9e\x8dq4\x1c#X\xd6\x8b\xa6m\xd9\xa2\xaf\x1ed\xaf\x0ex\xae4'd\xea\xb9\x9akP\xdd\xf4h\xfdW\xba\xa7<\x0e\xb3\xfb0\xdf\x95\xff\x84\xcb\xc0\xe3awO\xeeS-\x93N\xb4T'WZ\x0b\xf4\x9df\x19\x7f\x92\xe5D!\xba\x9b\x18\x9b\x86\xe9\\\xd0\xe9\xc9@\xd3\x1c(\xe5&\xf9\xb9\x80\xfc\\Y\xfd\\\xf3\xc5\xc5\xea\xedZO\xdc]\xc3\xb1\xb2\xb3\x02MHw\xde\x90\xf1\xcc\xd9\xa7\x9de\xa4#\xddc#g\x92\xdcc\xb3\xab\xe4\x1e\xfb\xc4\xee1e\x05\xbb:\xa0>\xd1XM\xb6\xc3q\xe1\x9a\xa2gY\xed\xf2F\xbe\x92\x7f*u\xf3O\xfe\xa9#*7\xecY!\xffT\x0e-\x92\x7f\x8a\xfcS_\xb8\x7f\xea\xec\xfa\xe1\xca\xd8\xfdG:\xaa\xbe\x97\x01&\x08w\x95rL\xcd8\xfb\xab\xa65\\U\xfa\x9e\xdf\x9e\xcf\xca\xce\xb6\xb2+S\xdd\xfa\xd8=W.\x838i\xf3\xef\xf1?\x05\x8cR\x9f\xef\xc9\xfbh\xd8\xef\x94\xd3\xeb\x94\xd9\xe7\xe4\xf68\xc5\xf9\x9b\x126\xbf\xaa\x97\x86\xb7\xc0\xb3\xc2\x86\x0d\xf1t\xd0K\x19L`\xff\x16XE\x8cO\x91s\xe4\xb6\x98X#\xb4-\xfe\x8dl\x8b\x8f\xbe\x19>,\xb0\xceW\xbdX\xabgR\xc18\xa3g\xb7\xddV\x0fn\xab\xe6\x1d7\x80\xdf\x8a\x9b&\xe6\x8b4\x8c\xe5\xd3\x13\xa0\xed\xd7d\x8e\xa8\x12Lk\xc3h\xaf\xba\xfch-\x0c\xf3\xd3\x99\xf29\xa6\x16B\xc6\xd2\xad\x94\xdc\xc8\x98\xc2\x1c\xd4\xd8\xd4\x88\xd80R\x07\x04l\xf6 \x1a\x00\xb3\xa2B \xa8\x98\xa5\x94\xe0\x96P\xca\x01&4\xe1g\x84\x9f\xcd\xe4\x93\xe0g\xae\x86\x88\xc5\xd9Xt\x82 0\xf6\xdc,:\xd5\xab\xb9R;\xd3_\x0c?\x92u\xbf\xa7\x1f\xb2\xee?\xa9uOPR\xd8\x94\x07\x82\x92\x94\x1cY\xb9a\x10\x84\xa0\xa4\x1cZ$(\x89\xa0\xa4/\x01J\x12f\x18\x024\x92\xf6\xda\x9b\xd5\x14\x1a\x1a\xbd*\x1a\xeb\xe1\x1b\xb6_\xb9gE7U]{\xb4n\x15\x973\xe2\x80M'\xe16q\x1e\x91O\x89\xdb\xa8^\x89\xdaw\xa9\x9d\xd6\xac'k\xb9\xbcxI\xc7i\x00m\xb3\x1e\xd76\xebW\nR,K~\xfb\xf5\x8e\xd7sXV\x17\xcdf\xb3\xab\xcb\xfe\xe1j\xdb\xe8<\xc3\xb6U\xf5\xa5\xbe\xef\xa2i\xaa\xc9\xd2:\x94\x00\xbc\x84)b1Y\xad&E<\xd1\x0d|\xa4K\xd6\xa8\x0dS>\xc7\xe8x\xe48\xc0+\xb6\x88[\xf6`\xc9\x16\xe5f\xb2Y\x19\xe5\x00\x94\xe0\x15[D\xae\x89\xb9Q\x82\x89\xba\xc4`\xd0J\x99\x8e\x91\xa7\x9d-^\x06\xb1\xb2NF\x10jy\xb5\x95r6\x1d\x88\xb3[h\xc9UBK\xee'^r\x93\xd6\xaf%\xab\xd8\xba\xe8\x9b\xb6;\xfb8\xfc}5p\x0c[&\xf24\xba\xd75\xc3\x19\xfaJ>^6\xb5\xf0\xfb_\xcaG-\x10\xbd*\x14\x8a\xc5\xa2\xdd\xc9Y\x81\x15\x8b\x91\xfcpWT\xe5\x92\xd7\xc3\xba\x0c\xda_\xa3\xee|\xb4\xeb\xe1D\x91\xa6|\x8e\xde;(X\x7f\xe8\xe4\x8e(\x9b\xe5\x7f\xdcwHL\xe0\x80\x98@;\xa5\x84Z+%\x98T\x17\xd1Z)~\x93@\n\xaa(\x8cy %\xdaH\xf0*B\x98\x0f\x01SAJ\x92\xc1\xe0)O\x9a\x12^\xb3AJ\xbc\xf1\x80\xc3\xb9\xc7\xc9\xe3\x95\x9e\xec\xe4\x042?3f\xecT\xd6r\xe4\xa9\x0c\xba\x08q\xb4\x94.X\x8d\x89\x80y\xa3\xe7\xc0\xe1\x8b\xaa@`\xcb\xdch\xbch^\xa8\x03\xea\xfe\x1cs\n\x99\xd9\x83$\x8d\x9a\xcfdf\xcb\x15\xd9\xe4\xc7t\xbb\x8d\x19\x99\xae:\xa4\xc7\xd6\xde\x1bj\xea\xfc\n\xdb2\x9dnt;\xac\x0b2\xb7\x95\x90\xb9\xfd\x89\xcdm\xbf\x87kfI\xbb\xba\xe2\xde\x8d\x93\xa18\\\xddg\x12\xe7%\x10\x1fq\xebp\xf6q\xcf\xda\xf4\xa4\xd6\x19Gy\xd4\xf6\xa10\xd6\xdf\xc0\xa6\x81\xf6\x0b\xfb\x97C\xc3\x8f\xd6\xf6A~Mk\xfb\xdc\xc6\x0c\xd9\x97\xc6\xe0\xb1\x94\x16Z\xe63\xae\xf0\xb4\xb8\xcf\x84\x16wZ\xdc\x93\x17\xf7\xb1\xe6{+\xb1\xab\xe6{7Nj>\\=v\xcd\x8fa\x96\x0c\x95\xf785\x07\xdf\xc0\xdf\x86\x9b'v\xc8X\xc6\xcc\x11`\xb7=\xca\xae\xb7\x94\xf8D\xeb\xe3\x91Z sE\x99r\xc04\xe1\x18\x89\xe1u\xdeP\xba\xb53v\xe6\x87\x80rt\xc9X\xc7\xfdj\xeeL\xc1\xafu\xe6G<x\xb5\x9b\xf41Z\xef\x94\xd0zG\xeb\xdd\xa3Z5\xf8Vb\xd9\x16\xf7S\xc0\xc4\xbbv\xfc]=\xf2B\xb5V/ \xba\xa8A\x0d\x98%\xc4Q\xe8\x13\xad\x9dG\xba\x86\xd8\xd5f\n~Q\x98\x97\x95\xd8\xb9\xe2f\xfa\x99\xbe3L\xf7\xf3nAs\xbe\x12\x9a\xf3i\xce\xff\xb4s~\xe4\xe9\xbd\xea\x00P\x15\x91a\x96\xe8;\xbf\xf7\x95q\xdfo\xef\x1c\xdfi`\xf5\xfc\x18\xdf#\x9c\xe0;\xf2-\xfb\xe2\x83{\xacyF\xc3u\xd1\xb1+\xfe\x92\xa6c\xed\x95\x8f\xc0\x10\x1cV\xe1M\x0b\xcc\x8e\x96}'\x0e7\xde\xaf\xc0\xe8F\x1c\x0f\x97u\x14W\xd4\xe2\xbe\xba\x81\xaa\xa9\xd7\xac\x15\xe19.,]\x85p}8\xb3t\xd7\xa7\x9d\xf2\x06\xc2\x86-n\x8a\xba\xec66X\xfd\xba\xa9w\xdd\xe7U\x98\xad\x06\x8fXc\x13K\xe5\xd3\x9dF\x8b\x08\x13P3\xda\xe5\xc5\xcbYyd\x81\x90\x05\xf2\xe9-\x90\xa4U{t\xf8\xc4A\x8b\xc6\x18\x1a\\.\xe6\xe2|^\xaf\x9aa\xad\x1f]\x9c|\xc1)\xbbNaGC\x11\x1d\xabV_\xef\x91~\xe4\x99\x1e\xc3\xc3\xea\xee\x89=\xe0|\xb7\xba\xf9\xd1\x9a\x05\xb2\x15>\xce ~/7/\xcb\xe1^\xd6\xb7i\xebq>\xd9\xf2\x8fpu\xdd\xd4\xcb+\x82K\xa5`\x16X\x82K\x07\x99\xa8k\xaf7MiQ\xacZ\x19@ig'F\x811_Pg\xa4\xce\x98\xdc\x19\x8de\xc7\xec\x85\xc6\xcf\xd3\xa9\xb2e\x0bV\xde\xb1\xa5\xc7\xd5e7\"\x9d\xebQ\xd0\xae\x9c\x956Z\x99\xee\xe5\x95\x9c]J\xc8\xd4\xfc\xc4\xa6\xa6\xcf\xd9\xf5E\xc0\xe2~\xb3\xf9l\xbel\xd9,\xe8a\\\xbf\x1cg!m0\x17\x8b\xc5n\xa3\x0e\\7&)\x99\xf6\xd7\x1f\xd0c)\xf6\x89V\xca#\xb5\x85}\x8b\xfc\x11\xa6q\x08\x8d\xc9\xb0\xcf\xccU[\x08\xcc\x11\x10\n\xd2 \xcc\x15\x10\xac\x9d\x94`x\x0eb\xd8\x87\xcc\x15\xc0\x15\x831[ \xc5t\xf14\x1e\x1b\x92\x93d\xc28KC\x86\xe3\xc4\x992*\xad\xa0\x1dX\xb3\x8c\xf5\xa0\x9d\xe1\xc4\xd4l\xf3\xd1ha\x0c\x8f\x90\x811\xbbJ\x06\x06\x19\x18\xe3\x85Od`4\xbb\xbe\xeb\x0b\x910\xeb*\x18U<\x8c\xec7\xe3S\xf3\x80\x00\xbdI\x17\xf4\x89=\xd5\xf8-\x8d\xfdb\x9fh-=R\x8b#\xe0\xe0J\xb2\x0b\x9ce\x02\x19\x05s!\xa3`&qF\x01\xa0T\xe8\x1b\xf6F|\xae1\x95X\ny\xb6\xab\xbf\xd6\x08\\\xfd\\wr[Cf\x9b\x13(\x85\x15Pw\xe5\x1d\x93y\x01\x8b\xc5\xed \x14U\xd5\xdcw\xd0 \xf5AW\xd4eo\x1b\x11\x8b\x1b\xb6\xb8\x8dOI\xe2ir\xd00\x9a\x95\xc7?\xaa\xed\x15g>\xb5\x92GF \x19Ld0=*\x83\xa9\xab\x8a\xee\x86a\x8c\xa4\xb7\xf2\xce\xc12\x12O\x02\xbb\x93\x93\xe5\n\xef\x80Q\x05=\xd1\nx\xa4\xb6\xd0D3\xa6|\x8e\xa15~\xb9-k\xcb&\x90\x0b\x055H<\x87\x0f\xac\xdab\xd1;\x1d9\xc1\xb7\x84\x97`\x98\xf5\x86\xd7\xbc\x17\x99\x8b\xaf\xb9`\x1a\x1d\xcdzv\x06\xc0_\x99\xc8\xeaZv\xc2\xfa(\x17\"/t\x7f\xa3H6]\xdf\xb4\xe2\xa4 \xc7\xd3\xefnJq\x96R\xcd\xd8R\x9e@\xb1(\xaa\x85\xf02B\xb1\xe5_\xa6-\xc5\xdf\x1b\x9d+\xb9\xeb\x8b[\x97\x82\x85!f5\x04\xa4)`\x82{\xd2b*Z6\x90yj(V=\x13\x87\x98\x89V\xdf\x14\x8e\xcc \x8b\xc5\xaemm\x1e\xbc)\xd8\xa8\xc6\xec\x04bT\xbf\xe1\\\x82\xe8\xc3Q\x12\xceA\x99\x97w\xc0&\x83N7\xa1\xd3Mf\xf2IN7\xf1\xf7\x8b\xa9\xed\xad\xd6\xbd\xa0\xc1\x1d\xf6D\xea\xa5\x98\xccj%dV\x93Y\x9dlV\x8f5\xef\xfa\xa2\xed\xcbz}u#\x0c\nW\xbdg\xd3\xd6\xec\xa9I#\x1a\xf1HQ\x0d7\x81\xbaih\xcb|\xb0\xab\xe5y\xde\xbe\x83r\x0eC\xf8\xa8\ny\xc8\xc0\x11\x1a\xaeN/x\xa4\xcd\xa6\xb3x\xe2\xd4Hg\xf1\x1cQ\xb9\xe1>Jg\xf1\xe4\xd0\"\x9d\xc5Cg\xf1\xfc6\xcf\xe2Y1\xb6n\x8b\xba\x1f\xbc\x7f\x02V(\xea\x05;\xfb(.\xb0\xf6_\xfa/\xe6\x89bx\xa1\x1fS\n\xe9@>\xb3\x84\xa2\xaa\xe4\x05\xae\xc6\x1b\xa6~g|d\x8f\xff\xb4;\x00\x87B\x9f\xe8\xa6?R\xcf\xdf\xa0\xb4\x80\xcbc\xb8O.a\xe3?\xb5\xb2\xf8\x185\x144S\xce(\x078>T\x99\x89[u\x8c\xa7nx\x07\xcc\xce\x1bW\x13\xd5\xaec\xaa\x95\xfa\x80\xfe\xd9w\x9e\x8b|\xaela\xb5\xab\xf7\x99\xed0\xbc\xd0\xb1e\xc9\xda(\xe6k\xd45\xe3-\x1az~\xed(i\xfc\xee\xcdj8z\x8a\x17\xf0\xb4s7\xd1\xd3\xc7\x00\xdd\x86\xf1\xcd\xcaT*jqz\xd6u\xd1\x95\x8b\x13\x90\xaeb\xfe\x97\xb8\x91wH\xe6\xfa(CQ\xb6\xca\x06\xb7\xb0\xa1^\n\x88m,\xe2\xcb\x02Z3\\^\xc0\xfb\xcb\x1f\xcfZ\xd65\xbbv\xc1\xc4*\"\x17\xe8]]\xfe\xb2c\xd5\x03\x94KV\xf7\xe5jH\xfc\xf8\xb0u\x03\xd6\xba\xdfB\xc7\xda\xb2\xa8\xca\x7f\xb8\x83;A\xea\xa3o\x16M\x05\xd7\xbb\xd5\x8a\xb5\xda\x0bq*\xbd\xcd\xb2\x8d\xb0\xd9u\xe2,\xb2\xbe(k(\\\x1c\x06.\x15+\xba\xde\xf7>n\xcf~u\xf6\x15,n\x8a\xb6X\xf0YF@\xf5U\xd1q+d\xbda\xa3e\xf1\xfe\xf2\xc7\xa7\xdd|\xc3<\x17Q\xb5\xc1!\xef{3/r\xb5\xab\xc41\xf9E\xc5\xb5\xb9\x94\xba\xd6\x86\xcc\xc3\x96\xc1\xb3\xa2\xe3&\x8a\xa7\x98\x9fy\x85\xce\xd6M\xb3\xae\xd8\xa9\xd0\xde\xf5nu\xfaj'\xd7\x8f\x9f\x9f\xcb\xf6\x88\x82\x87\xad\x8e\xa78\xaeP>*\x9a\xba\\\x14\x950\x0e}o\x7f\xc6N\xd7\xa7'\\\xcdb}\xff\xea\xf4+\x19\xcb\xdbC\xb1X\xb0m\xcf\x96\xcf\xfd9\xcc\xcfk\xd8\n\xd4d\xc1N\xa0g\xc5\x86\x1bQ\xbb\x82\xabe\xdb\xb2E\xb3\xd9\x96\x15\x83\xb2V\xcb\xe6uY\x17\xad\x9d\xf2\"E$F~\xd8\x8a\x9e)m\xca\x07\xdf\xeb\xa5C\x8f\x1b\xe1}\xc3\xe7\x1em\xc9\xf3\xce\xc5\xb7\x96\xcd\n^\xd4\x0f\xa7\xf0\xd7\xe6\x9e[C'\x16`\xdf\x94\xf7\x97?jt\x82\x17f\xc1\xfcM\x11\xcb.\x83\x9fo\xfa~\xfb\xf3\x89\xfc\x7f\xf7\xf3 \xdfU\xd5\x8d\xbaz\"z\xe8\xc29\x89\x82\xb0\x16\xa4\xcf@\x9e\xa5\x07\xbb-\x14rL\xfa\xde\xcd\xda;\xd6J%m\x8am'\xbb\x9b\xa8\x7f\xdf\xe8Q'=\x13e/@\x17\x07\xa2\"e\xd5\x08\x1e\xc6w\xdeo\xfd\xdf\xf9\xd6gh\x19\xef(\xdb\xb6\xb9+\x97l94^X\x04]\xb7\xdb\xb0\xa5\x03u\xd2E\xbd\xa8\xe1\xaf\xef\xde]\xc0_^\xbf\x03E\xd4~\x7f\xf9\xa3\x1c\x7f\x0f\x82a\xe3K\xb3\xff\x1f\xf3\x01\xf3\xeea\xcb\xfe\xf3?\xfe\xd3\xf3\x08h\xefv\xadz\xa1\xda9\x89\xef\xb5m\x9b\xe5n\xc1\x17\x12\xe9\xb9\xb5\xaf\x06R\xfe;\xbc\xd8n+\xbe\xf1\x91zm\xd9\xb0\xce\x08\x0cm\xc1\xe7\x9f\xa6\xb9\xddm\xb5\xa1\xed)\xec\xba\xe0\xbb\xfcf\xdf\xea\x9e\xcb\xfb\xcb\x1fEMo\x8a;\xd117\xc6\xf8Z\xca\x01V\xe8\x86\xf1\xbf\xef\x9a\x92\xaf\xdd\xbe\xb1\x06\xaa\x9ab\x8ai\xd9\xaai\xd9\x89.\x82\x97\\\xf4\xe5uY\x95\xfd\x83\x80\x08\xf5\xa6YL\x8d\xed\x9d3\x1f\x80\x94\xa6\xe6Sr\xbdf\xe211\xa2O\xe1\xd9\xfb\x8e\x01\xdf\x94\x94\x0d\xdfk\x88.\xcbg6\xd9g\x8b\xbaX\xfbup\xdd2\x01@\xea\xa2O\x9f\xfb\xfa\xd8OM\xcf\xbe\x93g`\xaev\xf5B\x8e1\xde\x1a5\xc3 $\xb1\xee\xab\x07\x13U\xf1\x8dS\xe1\xdf\x13\xee\x157\x9c\x02z\x0d\xbc\xde\xf1}\x16_\xbf\xd8\x89\xcc\x91\xd0\xeb\x17\x0b\xc7\x8e\x00<\xf4\x98\xf5u\x10\xb6.\xeb\x9a7\xfa\xbe\xeco\xbc\x0b\xd2\xc3\x96\x9d\xcaqQl\xcb\xeet\xd1l\xfcs\xf7[1\x8e; \xf1Hw\xd1l.\x83g*\xc1\x81\xf0u\x04\xa7\xc2\xe7\xea\x98\xd1k\xef\xd4%\xfdZeop\xe6\xe4^\x9eo\xca\xcbU\xb9\x80\x8em\xb8Y\xbd\xb0Z\x90\x10\xf2\xec#\x0d\xaa \xf6 QV\xd7\xbf\xf3\x89\x8b\x9b\xa2\xd2\x81o\x98K{6\x914\x10|\x8b\xe0us\xc7\xb4:\xd4@\xb1\xec\x9e<`\xe2_\xb8\xf1.v\xfe}\xd3\x8e\x0e\xae\xff\xeboo\x05)\xa0o\x80O\x1e\xed\x12\ni\xe7\xcb\xef\xc1\xcd\x19Kaj1\x9d\\A\x90\xef\x86}o:\xf27\xee\xc7 \xf2SB\x90_\x1e*q\xd2. \x1a\x17\xea\x0e\xe8=R\xd6\x1dR`\x7f\x94ww\x84\xdd\x1be\xd9\x19\xa5\xec\x8b|\xcb7~Wt\xe0\x9e(\xef\x8e(j?\x94u7\x14\xb3\x17\x8a\xda \x19\xfb\x1dw\x81\xb8}P\xd6]\x10b\x0f\x94m\x07t\xd8\xfe'a\xf7\x93e\xef\x13\xbf\xf3\x91\xfb\x1b\xcf\xfc\x14\xb0\x84\x8e\xb0\xeb9\xd6\x9e\xe7\x08;\x9e\x98\xfdN\xe6\xdd\x0en\xaf\x93q\xa7\x83\xdd\xe7D\xeerb\xf78z'\xe3^\x04\x83;\x9c\x83\xf77G\xe0-\xcd\x05k%E\xefj\xe4\xde\xc5=a\x07\xf64\xb8\x9a\xfd\xfc\xa2~\xf8Y\x9bG\"\x0e\xabh\xaf\xcb\xbe\xe5\x83\xd8]CkQz\x8d(\xaaFu=(\xec\x9f\x96\xcf\xceb\xa1\x915\xbc\x9e\x9a\x853\xf3o\xb0\xea\x1c]\xf3B\x0f\x9c\xaa\xbc\x16\xd5V\xebH\x07\xddn\xbbmZ\xb1\x82o\x8b\xc5\xed\xd9\xae\xe6\xff\xe3\xeb\xb6\xec\x17\xf6\x11\xa4\x16z\xb7a\xd3\xac`\xd7\xcb\x89MO\x0f\x1dH\x8eY)\xe7\nX\xb3\x9a\xb5\"\xc5\x84\xdchu\xbe\x8d*\xaf\x8f\xfc\x84\xf6\xf7\xbd\xfeP\x88\x88\xaeo\xbf\x83\x0b^\x7f>/\xa8\xa6\x14\x83\xd2\xcb\x1a^\xfe\x8f\xff\xe1Y&\x7fh\x1aX5\x0d\xfc\x19NOO\xff7\xe7m\xbc2E\xfd\xe0\xbe\xa1\xa8\x1fNy5~h\x9b\xcd\xb3U\xd3<w\xdfzz\xea^\xff\xca\x15<\xe3E\xbd\x17\x0dy\xd7<\xfbo\xbc\xac\xe7\xf0\xd13\x87\xfb\xca\xfb\x97_w\xbf\x0b\xe8\xee\x7f\x16wE6\xe5\xc1\x9f\x85m\xc8\xdf\x92ACe\xf7\xec\x87\xa69]TE\xd7\x05\x14$\xab\xc8\x1f\x92m4\x1et\xd7\xe1_\xce+gg\xbc[\xe3\xea\xf8\xb6\xd80n:\xbd\x90\xb5]\xb3\xfe\x95t)\x9c\xd7]_\xd4\x0b\xf6\xecyJ\xe5\xad\xe5\xf8\xda\xe2\xed\x05\xbf\x0f\xf4\x82\x8b\x87\xfe\xa6\xa9=\xfd@\xd6\xf1\x87\xa6yvzz\xea^\xd8\x86>\xf0\xcc{\x8f\x18G\xa2\x87\xa4v\x10^\xc8\xb9\xd4\xf8\xab\xd7o_^\x9e_\xbc{s\xf9\xdc\xed\xcd\x93\xaf\x95c\xce\xffb\xf9j\xaf6\xff\x10\xd0\xe6_\x1a\x8f\xeb\x92k\xf2\xbb?\xc3\x7f\xdb^\x9f\xfe\xd04\x1fOOO\xdd\xfd\x90W\xfa\x84\x1b\xd4\xfc\x89\xa2~\xd8^\x9f\xfe\xc4\xee\x03\xf5/W\xe2\x89\xff\xdf\x9f\xa1.+o\xc7\xf3*\xd93<\xfc\xcf\xcd\x1a\xe8)F\xd5T\xb6\xed\xf4}\xbd)\xda\xee\xa6\xa8\xde5r\xf2\xc8\xd5\x0c\xeb\xb5w\"\xbefq;\xacSz\x13\x06\xd7\x0f\xa3I\xaaWV\x19&b\xdf\x11h\xd2\xde\xaes\xd8sO-\xe6\xe6\xd9jWU\xa7\xe2\x027\xe5\x9fBaX\x02\xdcJ\xe0}\xcb\xb5n\xca>g\x7f\xd9\xb0\xec\xd6\xd5\x83\xdes\xef9R\x86-\x84\x8a\x98r\xbdH\xf8x\x9e\x9e=\xb5\xbfJ\xd9\x0b\xba\xca\xc2\x13\x00L\x8d\x91\xafVMsz]\xb4\xa2\xb1\x1f\xce\x1eN\xff\xf1\x95\xd4\xa2\xd8\x97Z\xcbso\xd3EU\xbf\xe2e\xb8L\x85\xff\xf9\xf6\xcdO\x8eK\xfcK\xf3\xcb\xa3\xd7IZ\xd2\x82p\xa2\xcc@\xb9\xb3\xddu\xc3\x11|\xeb]U\xb4\xf6\xf2\xf6\x8b\xe9E\x1e\xfd\xd1p;\x01\xb6\xb9f\xcb\xe5h\xc2\x9d\xc8\x0d\x89\xad\xb8\xc2\xe1\xbf2\x8c*\x99,\xe0\xe7\xff\x93+\xe8g\xe5N\x19\x0cW\xf3\x13\xd8\x87\x81\x9a\xb6\xbe\xf3l\xc1\x8a\xc5-\x9f\xbbF\x97\xc0\xaa\xac\x98{\xb5\xd1s\xdd\x05k\xbb\xa6\xf6\x0eN\xe5\x8b\\\x95m\xd7_\x89\xef\xf8g\xf8\xd6]\xf2\xf0\x00\xefz\xfa\xfe\xdfE\xaf{\\|\xb5\xfaJ\xe8\xf2\xab\xef\xe0+\xdb\xd8\x9c\xaa\xe1T\xb6\xf2\xab\x13_y\xa2}?\x15\x1b^\xe6\xff.\x9b\xf0\x7fx\x1f\xe0\xed\x9b\xdd\x1f\xdb\xc8\xf3\x95\xdarN\xfb\x9a\xec\x0de\x07\xf7\xac\xaa\xbe\xbe\xad\x9b{\x99\xc7\xe2\xa6\xe8\xa0\xf0\xe5\xca\x94c\xc8ve\xda\xe5O\xe4\x16f6\x0e\xc6H:U\x1d\xde\x81\x1d\xdb\xcbBvi\xfb\xcb~\x16\x83Q\xf7\xf3\x9b\xa6Z\x9aY>\xe5P.\xeba|(2\xa5\xbd(9d\xec\xef\x11U8\x1d\x16\xf5g|\xf6\xd2*\xdcs\x8ei\x9f\xf1\x7f\xfe\xc7\x7f>\xf7\x0c\xa4\x1c}n\xfaB\x7f\xb7\x13\xaa\xe2E~{\xfa\xbbo\x7f\xd7}\xe5\xe9B\xf2\xff\xbe\xd8#EU4\xca\xf0\xed\xa3S\x89\x8d\x03\x85qR\xda\x1e\xd7/[\\\x92\xe2*F\xb5*\x8a\xd98i\xda\xa4\xb0\x10\x9f\xf1\xc06\xa6\x13\x9a\xbb(\x1es7\x10\x99\xf5\x89\xf3\xe2\xe1N\xa3\xae\xb0.\xefX=\xa8\xce\x97\xdei,\xf3\x89n\xefc\xe71?\x12T\xd3\xcbUFy\xf40N18``;\x0b\x0cs\x96\x03\xac\xe5#4/j\x84;\xcbJb/\x07\xf9\xcb\xf8\xb6d\xe40\x07Y\xcc\xc1\x1e\x0c\x88^\x0c\x08|\x1ep\xdf\x1b\"\xf4\x04 X\xbd\xb70\xbb\xc3\xd6\xb3\xeb\xcf\x8d\xd9C\x18\xb7\x87\x04\xec\xde\xdf\x80\xa2\xbfA\xe3\xf7\x90\x0b\xc3\x87D\x1c\xdf[`$\xc3\xf9`<\x1f\xa21}oQ\nk\x8c\xc2\xf5!7\xb6\x0f\x91\xf8>\xc4b\xfc\xfe\x9e\x9d\xc0w\xce\x8c\xf5\x03\x0e\xef\x87\x9c\x98?\x1c\x8c\xfbC\x1a\xf6\x0f\xb9\xf0\x7fH\xe2\x00\xf8\x87\x03\x96\xff|\x14.\x00\x1c\x91\x0f\x00\xc7\xe1\x04@$/\x00\xd2\xb8\x01\xa1)\x18\xc7\x0f\x80\xbc\x1c\x01\x88\xe0 @<W\x00\x12\xf8\x02\x88)\x13\xc7\x8a\xce\xc0\x1b\x80\x10w\x00\xf0\xe6\x19\x82C\x00\x91V\\4\x97\xc0[\x1a\x8e#\x1dJ\xb9\x94\x95'mgJ\x833|\xd6\x98=\xf9?\x9fv\x91\x01\xb4\x87\xe4(+j\xf3W\xed\x0d\xa0\x1ce\x94\xa3\xec\xb7\x99\xa3,\x10\xa2p@v2\xc3\xd7FA\nJ(H!\x8f\xc3+\xd6\xf1\xa1\x9d\x1b\xce\x02\xb1N\x8f\xac\x0e\x0f\nR\xa0 \x85Q\xb2:2b\x9c\x18Q\x0e\x0c\nR8\xd4Y\x91\xe0\xa8\xc8\xe2\xa4\x88wPP\x90\xc2!\x0e\x89\x18gD\x82#\x82\x82\x14(H\x81\x82\x14(H\xa1\xa7 \x85Q0\xf4v\nRp]\xa3 \x05\nR\x08)\x9f\x82\x14\x9c\xcfP\x90\xc2D(H\x81\x82\x14(H\x81\x82\x14&\x82%\x8cS\x90\x82\x10\nR\xf8r\x82\x14LM\x1e\xc8\xa2\xa7\xf3,R\x0f\x0b\xa0\xf3,\x8e\xa8\xdc\xf0I\x0ct\x9eE\x0e-\xd2y\x16t\x9e\xc5\x17r\x9eE\xd9u;\xb6\x1c\x0f\xb3\x90\x0f\xfbC\xbf\xbe\x7f\xf8\x8b\n\x07r\xc4\x80\xc9\xd8\xaf\xeb\x07\xe1\x9b\x9e\x1cY6\xf9\x0cO\xad\n\xf9\xd3Su\xaf#Hlx\xfb\x13\xad \x8a\x16\x13\x12\xa2\x97P\xb4X\xd6\xe6Q\xb4\x98\xbb0\x8a\x16\x0b \xfb\x14-\x16&RA.2\x15$\x12\xaa\xbc\x05R\xb4\xd8\xe1$+\x88$ZA,\xd9\xca\xdf\xb3)Z,\x8d\x80\x05i$,\xc8E\xc4\x82$2\x96\x7f8P\xb4X\x1c9\x0b\" Z\x90F\xd2\nM\xc18\xa2\x16\xe4%kA\x04a\x0b\xe2I[\x90@\xdcBL\x99\x14-&%\x9a\xd4\xe5-\xed7\x11-&\x1631\x9f]3V\x83\xf4 8N\xa0\xd4B1bB(Fl\xbc\x84U&\xc5\x88\xcdb\xc4\x06\x97V\x8e`\xb1\xd1;gF\x8d\xcd[gw\xbd\x0d7Qp\xd9\xec*\x05\x97\x85\xfa\xf4(\xb1~\x12\xed\x0bq\x16\x88\xf5\x91d\xf5\x8fPp\x19\x05\x97\x8d\x92\xd5\xef\x11\xe3\xf3\x88\xf2wPp\xd9\xa1\xbe\x8d\x04\xbfF\x16\x9fF\xbc?\x83\x82\xcb\x0e\xf1_\xc4\xf8.\x12\xfc\x16\x14\\F\xc1e\x14\\F\xc1e=\x05\x97\x8d\x82 K\xa2\xe02\xd75\n.\xa3\xe0\xb2\x90\xf2)\xb8\xcc\xf9\x0c\x05\x97M\x84\x82\xcb(\xb8\x8c\x82\xcb(\xb8l\"\xd8@\x1f\n.\x13B\xc1e_Np\x99\xb9\xc5\xa5\xe02\n.\xa3\xe02\n.K\xd3\"\x05\x97Qp\xd9o3\xb8\x8c\xf1\x9db\xbd`Cp\x99\xfeA>\xe4\x08*{\xadn\x12\x95+\x99\x0c&\xd3O\xea\xcf9\x8f\x05\xd3\x0f=\xd1\xedx\xa41`S\x0d\x98\xd2\x13\x07\x848 \x13!\x0e\x08q@\xecB\x1c\x10\xe2\x80\x10\x07\x848 \xc4\x01!\x0e\x08q@\x88\x03B\x1c\x90A\x88\x03\x92B\xa3 \x0e\x08q@F!\x0e\xc8\xbe\x10\x07\x848 \xc4\x01!\x0e\x08q@\x88\x03B\x1c\x90/\x81\x032\xcad\x8f\xac\x11\x9cI\xaeC\xfd\xe3\x9e\x87\xe1\x90\xac\x08\xbdXw\x0dLUM\xb8\x94\x15\x81\xb2\"|QY\x114\xb8{P6\x84\x01V\xbe\xbcx9o\x04\x1d\xa5K\xd9\x0e\x82n^\x8c\xa7\x14\x08\xe9&\xa4\xdby'!\xddB\x08\xe9\xde\x17B\xba \xe9v !\xdd\x84t\x0b!\xa4\x9b\x90nB\xba \xe9\x96BHw\nXLH7!\xdd\xa3\x10\xd2\xbd/\x84t\x13\xd2MH7!\xdd\x84t\x13\xd2MH\xf7\x97\x80t\xfb\xb2\x1dPJ\x82\xb8xoJIpD\xe5\x86\x83\xe9)%A\x0e-RJ\x02JI\xf0\x85\xa5$8\xfbxSt7\x9e\xe3n\xf7\xd2\x12\x0cD\xb0\xe1\xac\xb0\xe1\x17^\x94\xfe\xca\x93L\x05\xbf\x954\x05I$\xb3\xde\xcb\xc1\x08\xc2\x0f\x18\xff}v\xf6\x05\x8e{\x91\xc2\xbc\xf03,\x92\xf8\x15\xe2\x15\x8e\x02\x83\xec\x8a\x0c\xdc\x8aDf\x85\x13\x8f\xc6\xf1*\x0ebU$q*\xa0p\x9c\xb3\x05XFE\n\x9f\xc2\x87r\xa2\xd8\x14\x99\xb9\x14(&EF\x1eE\x90E\x91\x89Cq\x08\x83\"\x9a?\x91\x81=\x91\x99;\x11`Nd\xe7M\x1c\x875\x91\x9d3\x81gL\xa4\xf1%<J\x0f\xb1%\xb2q%pL \x8b\xa3\xc2=\xbfffI\x848\x12\x072$<\xfc\x88\xa0y\x12\xe4F\xe0\xec\x97\xbc\xbc\x88\x10+\"\\\xa74F\x84\x9e\xd9-\x05\x86\xf8\x10\x19\xd9\x10\x07p!\xec\x0c&\x1f\x13\"/\x0f\xc2\xcf\x82\xc8\xc1\x81@\x81\xf8\x01\xfe\x03\x9a\xfd\xe0\x06\xe3\xe2\x99\x0f\xee\xb2\xac.\xf1,\x9c\x87\x18ea\xf9\x0ea\x9d\xa0\xb9\x0e L\x07\x17\x02\x1bb9\xe4\xe38\x1c\xcep\xf0~\xef\x03\xd9\x0d(nC\x98\xd9\x80\xe15x\x95\x1d\xcbi\xc02\x1a\x1c|\x86\x0cl\x86\x08.C<\x93\x01\xcdc\xf0\xc0\xff\xce\xeax\x9e\xc1\xf2\x17\xf2\xb0\x17\xbc\x95\xb7\\I\xe2-hG\xb4\xa5<\x07k!3g\xc1\xcdXH\xe5+\x08\xff\x88\xad\xe2v\xb6B^\xae\x82k\x1b\x1c\xe2)8Y\ny9\n\xe9\x0c\x05\x07\x1b!\x89\x8b\x10\xe4\x1d\xc4\xb1\x0e\xd0\x9c\x83H\xc6A\x0c\xdf\xc0\xc96p\xd7\x06\x8b\xfa\xe2\x98\x06\x91<\x83\x08\x96\x81\xb5iy\x19\x06.~\xc1\x01\xec\x02\xabw\xc6\xc9-Hc\x16\xf8X\x04\xf99\x04\x87\xf7$4\x7f\x00\xcb\x1e\x98\xae\x80\x888\xde\xa8 ^\x15\xb6;\x83K\xb4\x98\xe7\x98\x8f5\xa0\x90\xdd\x89P\xc8n\xa8[\x8e\x92\x194\xc2\xc2Fi\xc0\x91\xb30\n\xd9\xa5\x90\xddQR &ga\x14\xb2\xbb/\x99\xe0\xa6\xc3\x00\xa7\x04\xc8)\x0b\xe8\x94\x1dv\n\x02OG\x80\x9e\x8e\x05>\x1d\x01~\x8a\x01\xa0R!(\xef\x1c\x1e\x02\xa12\xc2PX *\x12\x8a\xca\x0eF\x85\xe1\xa8\x83\x01)\n\xd9\x0d\xd6,\x0d\xa0\xb2\x16E!\xbb)PU\x08\xac\xca\x03W!1\x98 d\x15\x01Z\x05\xe3\x0d#\x81+\n\xd9\xa5\x90]\n\xd95$\x01\xde\xc2\x03\\\x14\xb2\xab\x84Bv)d\x97Bv\xf7%\x1d\x10\xb3\x16G!\xbb\xd6\x07P\x10\x1a\x85\xec\xe6\x03\xd4(d\xf7`\xb8-O\x9fCCnx\xd0\x0d\x17\xb2{St\xe6\x14\xe5\x0b\xd4\xe5\xb7N\xf2MOB\x98\xf4\x9c\xd8\xca4\xc0li\x1c\xc3:)\xc6\x1a\xd8\xf5o\xc6-\xd9NH\xd7\x15\xb8\x8ah\xe4\xe4\x99IkC\x8d4Ky\xc5\x87\xc9\x82o\x89\xbf\x83\xf7\x9d|\xf6\x04\n\xf8\xeb\xeb\xff\x1bX\xbdh\xf8P\x91\x95>\x81\xb2\xeezV,\x0f\x0d\xf4\xc3\x04\x19\x87\x02\xde\xd6\xcd\xdd\x10\xeb&:Mw\xf6Q\xfe\xff\x8a\xbf\xc4\x13\xf0v!\xee\x9a\x9c\xc2;\xf6:\xad\xb5us\x07\x9bf\xb9\xab\xec'\xf3\xfe\xa5\xb9\x93\xc5<\xd1-~\xa4\x01owM_\xd6\xeb+\xa9\x99\xfd\xed\xc7\xa4N\x93{g\xd9\xda\x07\xfd\xb4\xac\x12\xee\x93\xbeQ\xf7\xef\xaf\xe9\xcejB\x10\x1d\xd5U`m\xd9,\x13 \xeb\x936\xe9iJ\x7fW\xf9\x02\x90/\x98W}\xc9\xb6MW\xf68mMoF\xa8K=\x90U_\x9b\xb2\xbeR\xe5\xfa\xb4e\x07\xb8\xc1\x07rC\xa8bRB`7\x08\xb5\xd5\xcd\xc6\xb7\xf5\x0d~R.\xc5\xa6\xd9\xd5\x8eVJA\x14\x83q\xbcry\xd9\x94\xe3y\x05\x05\xf4\xcd-\xab\x95\xe3T6GG_s\xc3\xa5\xa8U\xe5|>\xfa\x9f\xde\xbc{\xfd\x9d\xb0\xf5\xe5\xbd\xcah.\x85g\xf7\xbc\xee\x9591x\xd3;/h\xa4l\x0d\xb9\x99r\xbf\xb4+\xd7u\xd1\xefZ\xd6\x0ds2\xdf>\xae\x9bu#\x16r\xbb=>Q\xd2\xbf\x97u\xb9\xd9mt\xef\x15{\xa8B|\xf6\xa6+*\xde\xafY\xcd\xb7h\xde\x81\xc5eS|\xb8\x1a\xc6L\xb6\xf1\xed\x8e7)>\x88z\xcbW\x89j\xbf\xe0*\xe3\xf6\x1a\x1f\x98\xe3\x80\x04\xfe\x19\x87\x16\xb9v\xea\xe7u\xd9\x97E\xa5p\x0b\xf8\x9dK\xe9\x9b\xa6\xeeo\xf60\x8f\xbe\xa8\xaa\x07\xdc\xbcb\xde\x8a\x98U\xc4\xedY\xe7\x94_vM\xbbs\x8c\xd7\xe0\xc7 \xc22\xc8\xaf\xa7z\xdd\x96\xb5\x0bn\xc1\xaf%\xfc r\x18t}q\xcb\x04r9,C\x92_\xe5\xc2\x92UJ\x06\x81r\xba>\xdb\xa2\xa9\xbbr\xc9\xf8\x00\x11 \x90\xad\x1b\xf47-\xebx\xffy$\xba\xe1=\xb6\xd5\x8b\xdb\xffb\x9d\xd0D'\xf3C\x18\xe3s[t\x0e\x0c\x8e\x1b\x7f\xd27\xa4z\xf57\xa7\x7f\xb4\xddy\xc7\xfa\xe6\xea\x91\xb5^zD\x9a\x15\xfc\x8d\xa9> \xc6\xf4;\xd1E\xe4?\xc5\xca\xef\xa1\x7f\x98Jr\xf7\x0c\xdex\xb6<\x9d\xab\xea\xdb\xb3\xdfOU\x85\xa0\nJ\x931\x86(\xa8l\xd5\xcb\x8b\x97\xb3\xf2\x88&H4\xc1l\xd6\x0e\xd1\x04\x89&h\x17\xa2 \n!\x9a\xe0\xbe\x10M\x90h\x82.!\x9a \xd1\x04\x85\x10M\x90h\x82D\x13$\x9a\xa0\x14\xa2 \xa60\xed\x88&H4\xc1Q\x88&\xb8/D\x13$\x9a \xd1\x04\x89&H4A\xa2 \x12M\xf0K\xa7 \x1a,0\xa3\x1c\xdf^\xdaxb@\xdc\xe5g30\xf7\xbe\x91<7\xbe<\x9c\xe8\x13*\xe4a\x12\x93\xc2\xbe\x92L\x88\xafN\xa6\xea\xfdJ\x00\xf5\xfc\x02\xb7\xc9\xbfR\xdc\x83\xaf\xe6T\xba\x03\xc8\x84Q\x8c9\x05}\xaa\x07\xac49}\xcb\x94)7\xfc:d\x87_\x97w\xac\x86\xae/\xfa]g%\xcb\x0d%=\xd1\x8dz\xa4d\xb9\x99VL\xe9?\x03\x02\xa8\xabsU:0\xf7(\x0f\xd8\xect\x8c\xa9L\xd4m\xbcwB@\x91h \x94Km,\xf893\x02iq3\xb6\x02\xca\x01\x84\x82\x00\x01\x93\x02NK\x80t\xb7i\x89\x85L\xbd\x85\xd9\xfdf\x9e\xcdWn\xe8\x14\xc2\xf0)$@\xa8\xfe\x06\xe8\xc4\xfe\x18\x18\x15rA\xa9\x90\x08\xa7z\x0b\xe4\xcaEC\xaap8\xac\n\xd1\xd0\xaa\xb7\xa81\xf9?\x1e^\x85\xdc\x10+D\xc2\xac\x10\x0b\xb5\xfa{\xf6\x00\xc3b\xe1V\xc8\x0d\xb9\x02\x0ev\x85\x9c\xd0+\x1c\x0c\xbfB\x1a\x04\x0b\xb9`XH\x82b\xfd\xc3A\x1b6\xa1qs\x14H\x16\x8e\x08\xcb\xc2q\xa0Y\x88\x84g!\x0d\xa2\x0dM\xc18\x98\x16\xf2B\xb5\x10\x01\xd7B<d\x0b \xb0-b\xca|\x8e\x80n!\x07|\x0b!\x08\x17\xf0\xe6\x19\x02\xca\x85H+.\x1a\xd2\xf5\x96&\xe0^\x04\xac\x0b\x11\xb5\xcc\x08\xefB\x14\xc4\x0b\xb9a^H\x84z\xfd\xfd\xaa\x0b\xc3\xbd\x90\x0e\xf9:\xcb\xe3o\x0c\xc1\xbe\x90\x0d\xfa\x05<\x82 \x18\x08\x18\xe2``\x08a\x13\x89p0 \xca\xf58F3A\xc3\x90\xa4\\<D\x0c\x88V&@\xc5\x90\n\x17\x83\x1f\x13C\xc1\xc6\x90\x19:\x86L\xf01\xe0z\xcc\xc102\xe0\xa1d@\xc2\xc9\x80\x86\x94\x01\xd7\xa1\xe2\xa1e\x88\x82\x97\xc1\x071C.\x98\x19b\xa1fH\x84\x9b!\x0er\x06\xc4G\x08\x0c\xb3\xf0\xf3x\x08\x1a2\xc2\xd0\x80\xa9\x9ag\x94\xe5\x83\xa4\x01\x03K\xc3\x01\xd0\xb4\xb3@\xe9\xeet\xc3\xd3\x90\x1b\xa2\x86 L\x0d\xa9P\xb5\xb34\xb9\xb7\xf7\xbb9\xc2\x905\xf8akH\x82\xae\x9dEy!mH\x85\xb5\x9d\xa5y\x8e\x89\x90\x92\x0f\xde\x06\x14\xc4\x0d 07\xc4A\xdd\x90\x02wC4\xe4\x0d\xfeY\x04\x020$D@\x91X\xf8\x1bR p\x88\x85\xc1\xc1\xdf\xf0\x148\xdcY\x98\x016c\x87\x0c\x0e\x16\xf7\x0e\x88z\xed\x87\xc6!/<\x0e!\x88\x1c\xfc0\xb9\xf3\x99T\xf8\x1c2\xf6\xdd\x08\x18\x1d\xa2\xa0tp\x1a(\x12\xcauY\x8a\x13\xcf\x85\xbcu\x1a\xa6\xae\xa3j\xa7\x88\xf0\\\x10N\x1fV\xbb\xc2\xd0A\x00\xdc\x17\x97o.\xde\xbc}\xf1\xe3\xd5\xdbw/\xde\xbd\x7f{\xf5\xfe\xa7\xb7\x17\xaf_\x9e\xffp\xfe\xfaU\xc4S\xaf^_\xbcy{\xfe\xee\xea\xe2\xf5\xe5\xf9\x9b\x98\x07\xff\xf6\xe6\xdd\xf9O\x7f\x89\x7f\xee\xe2\xc5\xdb\xb7Q5\xbc|\xfd?_\xbf|\x17\xf5\xc8\x0f/\xce\x7ft>\xa0c\x85\xa3\x15\xb8*\xeb\xa2\xba\x92 \n\xa4'\x1d\xd5I<\xee\xad\xfd\x12uT\xb4\xb8\"\xb3\x1b\xe8\x00\xfe\x80\x0bn@\xa3\xe1\xef7\xcc\xb3d\x0b\x16\x87\x9c\xa3\x86\xbezW\x16\xb0\xbe\xbcxy\xa2\\\xd2:7G\xdd\xb8A\xd3m\xb3\xdd\xc94\x0c\xbb\xba/+?\\\xa5\xdf\xf4\xb4\x9bf\xca\x10\xf37\xab\x97\xcc\x9aq\x00\xf2\xe1\xe4O\x1fX\xf74\x83\x17v\xf2e\x1fX\xa7\xbfW\xbd\xdb\\K7\xe9\xc3\x90\x89\x00\x95X\x03\xa0\xb8\xee\xb8\x91\x94\xbbr\x01\xdf\xafz\xeb~\xfd\xf5\x85\xb1\x0d\xder\xc2\xed{Z7\xd95_7\xfb\x15\xaf\x9b8\xbd\xd7\xcd\x15\xb7o\xaf\xeeX\xdf\xe4\xae_@\xf9\xe6\xab\xad\x0d\x11\x86\xf7\xdd\x98\xda\xa1\xf1\xe3\xb7\xa1\xe6v\xbb\xebM\xd9_\xf5\xe5&G0\xd9\xb2\xe8\xd9\xd7\xbc,\xcc\xecg\xbcZ\xb7T\xfc\xdd\xac\x8c\xa5\x92\xdf\xd3ueS\xdb\xab\xaf\xf3\xe6\xb0z\xf9Y\xda0\x7f\xbfn\x08\xab\x97\xb21\xdc\x9aR79\x1b!\xb2\xb7\xf8\xb3U\xf9yVR\xbc\x19\xabP\xd3%n\xc2\x84p\xde*\x94\xc2\x01\x95\xbb\nY\x14~\x8cEf\xb0\nV\xde\x8fR\xe6\xcdn\x85\xceo\x95\x9a\xe1j\x9er\xc9\xec\x99\xc3 \x15\x99d\x8c\x1cQa\xc6\x9b\xca^\xd7\xf5E\xfby\xe6\x1aO\x8f\xd8\xab\x9bn\xa7\xf8\x85\x1b$\xe2G5\xe1\xfa\x97=\x94\x16>\xd7\\5{\xfd\xdeT\xd5\xac\xb4\x05\x16\\&1\xba\xd5\xe4\xd6\xc9\x1eh\xd1\xb4L\x0d\x81\x0d\xdf1\xcb\xbc\x92\x05\xac\x9b;\xd6\xd6\xc5\xfe\xc9\x7fR\xdcu\xb1\xf23\xc7}\x97\xa0nMr}\x8eo\x1ao\x9f\x17\xbb-\xd6j\x12\xd8\xffF\xd3\x17\x0e7\xce\x12\x92\x0d?+\xc7\xa4\x8d\x9b+\xc5;-\xfb\xa7\xe3\x9a}\xe8\xafn\xd9\x83\xbd#\x05\xbbQ\x9060i\xea?]#H\xd7B\xf7'\xfe\xa7b\xde\x14]'\xa9F\x17\xc5\x9a]\xcaOp*\xaf;\n\x93Dra\xf4\xb0\x0f=W$\x83M\xd3\xf5\xc0\x04\x7fE\x10_N\xe1\xbc7\xdc.\xdb\xfe\x01J\x17 \xdd\xdf\xb0\x96 \xe2S\xdd\xc0\x86w>Et\xb2\xf5j1\xb1\x1d\xa8L\x0f\x99\xb8/\xfb\x8ay\xa6\"9\xafr-\x8a?F\xabO\xa7\xc90r2\xb8\xdak*z\xc1\xd7\x9b+Q\x98k\xa1\xb8/:\xe8X\x7f\x02e\xdfi\xdaY\x07\xbbZv\xe6\xa5d\xd6\xdc\x97\xdd\xb4\x7f`\x12z\xe9\xa1\x85\xca\xe9e+\xe1l\xa4\xd9_^\xbc\x9c7\x80\xb2|Q\x96\xaf\xe0*\x89Y\xa5 \x81\xb2.\xfb.e\xf9B\xd0\xd3m\xc8_45=\x85\x96NY\xbe2R\xd0c\xe8\xe7Q\xd4s\xca\xf2u(\xcd<\x81b\x9e\x85^\x1eO-\xa7,_\x87P\xc9ch\xe4 \x14r\xca\xf2EY\xbe(\xcb\x17\x96\x02\x9e\x95\xfe\x9dB\xfd\xa6,_\xae\xdb\x82\x14\xef\x08z7&?T\x0c\xad\x9b\xb2|\xa5$\xca\n\xd1\xb6)\xcb\x17\x9e\x9e\x8d\xa4fch\xd98J6e\xf9\x82D\xdau\x04\xe5\x9a\xb2|e\xa0T\x07\xe9\xd4\xa9Tj\xe7\xbaIY\xbe\xf6\x84\xb2|Q\x96\xaf\x99\xe4\xc8\xb8\x84\xa59GS\x9c\xa3\xe8\xcd\x94\xe5\xabO\xa31S\x96/-\xa8,_:I\x91\xa4\x19\x1be\xf9\xf0\xdc\xd9S\x138[\xfd4\xcbm\xd4\xcd\xcd+/\xef\xd8\xcb\xa9\x9d\xbcM/\xc4~\xbat\x88\xae\xbc\xff\xbe\xe9u\x83\x014{\x11,wb\xea\x92u\x11$\x97\xa9\xa6l\x07\xb9\x05H\xd0\xfb\xb5\x99\\\xc6UF\x923R\xea\"\x89\xd5\xfb\x95\x90\xbf{\xde.\xb8\x19\xc3\x8fb\xbe\xb8\x99\xb9\xcd%\xc8\x1f\xac\x82\xa6j\xefWB_9\xac\x1a\xd7\x8c\xd5\xd0\xb2\xff\x12\x00o\xb06\x92\x05\xbe_\x17\xf9\xfba5Y\x15e\xc5\xf2\x9f\x04\xbb\xcf\xf9\xc7\xf3\xfcC\x83%p\xb3\x9b\xcf\x8f\xe2\xf0#y\xfb\x08\xae~\x14?_\xcf\x87wM?q\xf8\xcd9Q\xac\x9dL?\xf2\x97b\xb9lY\xd7i\x82\x82\x9d*\x94\xe1\xbb\xeaJ\xaa\x89\xa6qVt\xb8a6WJ\x12\x9e\xaa.\xeb`\xd56\x9bOR\xe3\x91\xe3tz\xcb\x1e\\\xd5\x9e\xad2\x8a&T(K\xbde\xfd\xae\xad\x05z\xa3\x98+\x8a\x911p\x8a\x04\xe6\xb2\x9e\x81\x13C\x9cB\x1f\xe0 \xbd\xe1\xbb'\x99\x89\x12\x9a\xd5\xaac=4-L\xab\x0b\x06f\xdc\xb1>\xb3\xb6\x1c\x1ex\x8b\x12e\xfd\\z\x9cy\xbfUc\x84*\xeb\xdd\x86\xb5\xe5B\xff&\xe6$\x95\x84S\xc2\x0f7\xac\xd6\x8a\xdf\xd5\x03\xe23[\xbd\xcfEi\x15\xef\xf3\x83\n%F\xb2\xeb\xb8\xaaoY\xa4>\xa7\xc5\x1fY\xb93\xd6\x95E\xbdU\xb9)\xb1\xda\x15\xf7N\xd9\xae\xfbd,\x89\x06\x9a=Xn9\xf9\xd5Ii[\xe9\xfb7\x7f:_A\xc5V\xbd&\xaf)6\x9b6|\x04\x90)\x07\x88| \xd7\xf3\xf5\x03\xb0bq\x03\xc5v\xfb\x19\xb5hR\xca\xc6\xe7}\xba4\x9e\xe0\x1a\x15=\xb4\x119[\x81\xffQ\xd6\xcbrQ\xf4l\xa04\xe8\x90&~\xa3\xeaHfqe\xbd\xa8v\xcb\x99\x7f\xa1\x90o\x198%\xb3/&\x18J\x06\xd4)\x8e\x015\x19\x9a\x93\xc2\xde\x9f\xcf\x0d\xdbY\x13\x84K\xa6e\x9d\xe2\x92\x89\xe15\x8eG>\xe4N\xd5h*\xd7u\xd3\xce\x80b=\x1a\xa7\xaf\x90\x9a9\xf4\xc3^7M\xc5\x0c\xc6\xba\xe5\x03\xb6\xec\x8e\xb5\x93G}\x1fO\xdd=\xffp\xa5AIl\x99}$L\xca\xe1\xef`\xb5\xa0\xd04\xed\x92\xb5s\xf7\xcf\xdb\xb2^\xb0\xef@\xa6\xe3\xfd\xba[\xde\xc27\xa7\x7f\xf8}Vm$\xe5\x00>\xfb8l\x8b\xca\xa5\xef\xe0|m\x10\xea\x84\xc0\xdb\x91\xfb,(uc\xea<}\xeb\xf9+\xfd\xb5\xad\x19\x81\x9f\xe86>\xf2\x84\xc0.\xae`\x12\x9f\xd9P\xf6\xf1X\xb8V\xc2\xf8A }\xbd\xe9|\xbd\xea\x80\xa0J\x00\xc1\x84D\xe8\x05\x90h\xba\x94$>\xa4\xa7\xbc\xa8\x04\xbeY9\x91AVdn^$\x9e\x19\x99\x89\x1b\x99\xc6\x8e\xf4\x14\x17\x99\xb2\xf7@\x86dn\x8ed$K23O2\x8e)\x19\xc9\x95\xf4\xf5\xe1\x81E\x89eKf\xe6K\xa2\x18\x93\x199\x93\x87\xb2&\x93x\x93\x99\x98\x93)\xdcIOa\xe8\xa4\xbcG\xe0O\x1e\x8fAy\x14\x0ee\x1c\x8b2;\x8f\x12\xcb\xa4\xcc\xca\xa5\xc4\xb3)\xa3\xf9\x94\xf1\x8c\xca\xe0T\x88K\xbf{0\xab2\x98z\x17eP!\xb8\x951VW4\xbf\xd2\xb7\x08\xa2\x13\xee\xe2\xea\x97\x91e\x19\xc3\xb3\xcc\xcc\xb4L\xe3Z\xfaz\x10*\xc9n\"\xdf\xd2QZ\x8fJ\xb0\x9b\x87s\x89&\x0e\"x\x97Q\xcc\xcbP\x9e\xc5\x14\xf6e\xa8L'\x07!\x13\x073^\x99x\x1ef\xa8m \\\xccD6\xa6?\xb7g\x98\x91\x99\x97\x93\x99\x87\x95\x89\xe8\x1b\x0733\xd1\xdcL\x1c;\x13\xcb\xcfDt\x9cx\x8ef\x0cK\xd3\x9b*7\x0bS3\x92\xab\x99\xc6\xd6\x8c\xe2k\x86\x94\xeeO\x8f\x1bx\x16\xcf\xdb\xcc\xc7\xdc\x0cV\xca9~\xf2\xf17\x11\x0c\xcet\x0e\xa7\xa3\xb8>\x98\x0c7+\x8f3\xc4\xe4L\xe4r:\xca\n'\xc1\x0d\xf39\x03 pss:\xb3\xb3:\xdd\xbc\xce\x9c\xccN\x0c\xb73\x9e\xdd\x19\xc5\xefL`x\xc6r<\x03Im\xfd\xb5\xc3\xb2\xee\xb0L\xcf\x04\xaeg$\xdb\xd3\xd3\xdc\x14\xc6\xa7\xa3(D\x1a\xdb\x14\xd6\xa7\xa7\xcb\x87S\xd8fd~\x06\xd3\xd7\x1e\x83\xfd\x99\xab/F0@c8\xa0v\xf3\xc0\x97\x9av\x9au/11m\xd0%\xe2KJ\x8b\xa7\xaa\xf9\x9eA%\xa4\x8d\xa1\xaf\xf9\x9e\xf2&\xa3ER\xda|\x0fx\x12\xd1F\xd1\xdcF\xc1&\xa1\xc5\xb9|\xf2%\xa0\x1d\xb0So\xfa\xd9\xc8\xe4\xb3c\x92YGy\xc1\xd4\xb3\xfa-\xb1\x89g3 \xba\x81\x94\xb3\xc1\xa1\x06\xf3\xaf\x98#\xddl0\xd9l|\xb5\"2\xc9\x06\xab\xe7\xcf\x15\x1b_\xb7\xc3\xf3\xc4\xe2\xb2\xc4\xc6\xd7\xcc\xeb%N\xc8\x0f\xeb\xc5\xc1|\x8d\x0c\xe6\x86\x0d\xb6\x0d\x97\xa7p\xba>\x1d\x9c\x15\x16\x97\x13\xf6\x18u\xcf\x90\x0d\x16\x91\x0b\xb6\xf7d\xe3\x82P\x1e\xd8\xe0\xec\x85\x99\xbf \x9c\x016\xa8^@e\x7fE\x14\x83\x1d;\x91y_\x11\xd9]\xf3\xe6vEfvM\xcb\xeb:QR\x9e\xac\xae\xc8\x9c\xae\xc1/\x980\xce\x9c_9_.WD\xcb?\xfd\xfc\x92-\x83kX\x9b\xf9\xb2\xb7\xdak\xe1\xaf\xc1$\x87$*\x85\xe4,i\xe4\xac\xbc\xcb\x8b\x97\x942\x12(ed\xb6\xc5$\x89\"I)#1\xc4H\x9b\x87<\x9a\x16\x99B\x8a\xa4\x94\x91\x19\xa9\x901D\xc8(\x1a$\xa5\x8c<\x94\xfc\x98@}\xccB|\x8c\xa7=R\xca\xc8C\xe8\x8e1d\xc7\xccT\xc7\x1eEt\xccHs\xc4\x92\x1c-\x1e{J\x199\x15\x04\xad\x11k%ES\x1a)e$\x8a\xc8\x98Bc\xa4\x94\x91\xae\xdb\x82\xd4\xc5\x08\xe2\"&\xd9`\x0ci\x91RF\xa6d]\x0c\x91\x14)e$\x9e\x98\x88\xa4%bH\x898J\"\xa5\x8c\x84D\x12b\x04\x05\x91RFf\xa0\x1c\x06 \x87\xa9tC\xe7\xbaI)#\xf7\x84RFR\xca\xc8\x99\xe4H\xdf\x87%\x12F\xd3\x08\xa3H\x84\x942\xb2O#\x0eR\xcaH-Q)#Ks~\xce\x97)\xa3\x14G%N\xa6\xc11{K\xdf\xeeRs\x14eH\xear\xa6\x10oU\x8e-\xbb\xcb+u\xc7\x90\xdd\xa5\xa8\x06\xa0\\\x01\xa0]Y\xaf\xab\xfd\xb6OR\xbb\xe8b\x9eh\x05<\xd2\xd4.S\x85\x98\xd2\x7f\x06L/\x98\x13&\xca\xa7\xe5\xc9\x0b\x93\xb3\xbf\x9be\xaa\xb4}\x07T\x1e\xe3\xd3\x02\xf3]\xc8\x14\x81\xce\x82\x86\xa1bo\x93\x9f\xb5\xe3\xeb$R\xe8\x9cj\xc4\xc7\x8c\xe6+\x05+\xff[>\xa7Z\xd5Y\xc2-\xaa\xc7\xcbr\x86A\x91\xea-V\xd3\xf6\xf8%43l\xfa\x1e\xfe\xf3B\xa6\xa1\xd3\xb9C\x1d\x87\xdc\x8a;\xfb\xf2\xce\xb1\xe3A\x92v\x86\xf5\xc7\x1c\xeb\xe3)\xc7\xfa\xf2\xbc\x14:\xd9X\xc8\xa4\xa9t\xb21J\x99t\xb2\xb10/\xb5\x19\x17\xc3J\x9b\x99~Z\x88\x95\xa6\x84Xiy,@b\xa5\x11+\xcd.\xc4J\x13B\xac\xb4}!V\x1a\xb1\xd2\\B\xac4b\xa5 !V\x1a\xb1\xd2\x88\x95F\xac4)\xc4JK!v\x11+\x8dXi\xa3\x10+m_\x88\x95F\xac4b\xa5\x11+\x8dXi\xc4J#V\x1a\xb1\xd2~\x9d\xac4:#3\xf5\x00B:#\xf3\x88\xca\x0d\xf7Q:#3\x87\x16\xe9\x8cL:#\xf3\x8b=#s\xa0S\x9f}\x1c\x98w\x9e\x833\x0d]j\x9e\x9d&Y+J\xf5\x90\xa5\xac\x96#\x90\xf7\xc6\xe1\xc8+\xfd\xe6\xf3W\xa3U2\xb2`\x15\x0f\xcfG\xc6V\x97\x1e;\x17\xdbEdI\xe2\xd6\x05\x19\xd5A4\x06\xc1\x08\xcbg\xa5\x8d%z\x99\xd4\xc1Jc0\x98l\x1cj/\x83\xda\xc7%\xee\x03\xeci\xca\xedh\x95H\xae4\x82\x11\x9d\x97\x0f\x8ddC\xa7q\xa1\x0fgB\x87\xd5\x9c\x99\x05\xed\xe5@\xdbg\x01<53\x81\x999+\x8d\x88\x99J\x88\x98\x99g~\"b&\x113\xedB\xc4L!D\xcc\xdc\x17\"f\x121\xd3%D\xcc$b\xa6\x10\"f\x121\x93\x88\x99D\xcc\x94B\xc4\xcc\x14n#\x113\x89\x989\n\x113\xf7\x85\x88\x99D\xcc$b&\x113\x89\x98I\xc4L\"f\x121\xf3\xd7N\xcc\x1c\xb0PW\xfdcy\x00v\xc4\xff\xc0\x86\xe4\xe0\xe3\x88cz\xdd\x04\x9cw\xfc\xf2\xa5\xa4\x93i\xe6\x8dX(\x04\x84 r\x1b\xea\xe2\xc4\x91yV2\x8dQ\xc8\x13\xdd\xcaGJ\xa81\xd4a\xca\xa4.\xb2\xed\xf6\xbcZ\xe2\xda\xfe\xea\xe9\xac \x04qH\xcfY\xc0A\xef\xdb\xa4\xda\x87\x9e\x01\xec=\xff7\xae*\xb9\xce\xfdu\x9f\xf9\x1bW\x9f\xc3\xce\xfa\x0d\x9f\xf3\x1bW\x1b\xa7\x074\xe7\xd9\xbe\xc9$\nc0\xc7\x10)\xdeY\x106\xa2Q(!\x1a\x05\xd1(F!\x1a\x05\xd1(F!\x1aEO4\n\xbb\x10\x8dB\x0b\xd1(\x88FA4\n\xa4\x95D4\x8aA\x88Fa\n\xd1(\x88Fa\x11\xa2Q\x10\x8d\"\xa4|\xa2Q8\x9f!\x1a\xc5D\x88FA4\n\xa2Q\x10\x8db\"XH\x9bh\x14B\x88FA4\x8a\xc7K\xa3\xc8AK\x10\xf8\xa5\x9b\x96\xf07\x01ojB\x82\x02;WP\xc0\xba\xbcc\xf5^k'l\x04\xf1\xec\x13\xdd\xdeG\xcaC0\xdaoJ\xff\x19\xf0\xbb`>\x90(\xff\xd5'?a\x91k2\xdb\xe9\x8a\xa20\x0dw\xcb\x7f\xe8<\x06\xa8\xcaH\x94\xc4U\x1b\x8c\x9b\x0cd\xb2\x85\x96-\x8a\x9e\x8f\xd3\x8b\x96\xad\xb8\xc5(\xb1\xa1\x9f\xe5\x0b\xba\x9f\xa1\xac\xbb\x9e\x15K\x85@\xae\x9cF\x1e\x0c\x99\x93\xf8$\xaeF\x94{B\x15[\xbd\xa5\xb4f\xcb\x15\xfc\\\xb1\xfa\x99z\xe7s\xf8\xf3\x9f\xe1\xdb\x9f\x95\xa5\\\xf4\xaa\xb1|\x9ds\x16w\xcf\x84\xe7\xf5\xdbS8\xaf\xa1\xa8<^i\xe9\xeb]\x14\x1d\xebN\x94G\\Xa\xb3\xac_\xce\xe7\xff\xf6\xe6\xdd\xeb\xab7\x17\xef\xce\xdf\xfct\xf5\xfe\xa7\xb7\x17\xaf_\x9e\xffp\xfe\xfa\x95k\xa3\x82\xe8\x18\xac\xdey\xb2\xa0|\xedz#\xf2\x89\xff\xf5\xfa-\xf2\xce\x17\xdf\xbf}\xf7\xe2\xfc'\xe4\xdd?\xbdA\xdfx\xf5\xf7\xf3w\x7f\xbd\xfa\xdb\xebw\xaeG4W#\xaa\xa9\xaa\xb7\xf8G\xe4\xe38\x1e\xd4?Z\xa5`\xc7\xac\x145$\xcc\xe9L\xfa\xe0\xf9\\\xa2Us\x02e/1\xc3\xbaq7A\x8a\xa6\x13,w\x12\xc3c\x93\x92<\xdbp\\\x1f\x97\xe2\xef\xe9R\xe2\xfb\xbb\xed9_\xaf\xb7\xdd\x1f\xea\xfb\xb6g<#\xc0~{p\x1cHI\x1a\x0dR\xe44\xe8W1\xfak\xc5\xf5H5\x03\x1bK\x9a\xfe\xa9\xe8\xbafQ\n\xec@@(\xfa:\xaa\x8b\xbb{\x1e\xbez\x7f\x17\xf5`Kn\xb0\xbd\x99\x0e\x9c\x82[\x01\x82\xfb j\xcc\xb7\n\x81\xaau\xdb\xaa\x0c\x1cq\x1b\xcc\xa0g\xca\xa4\x19\xce\x13B\x87\xe9N+\xf8^\xb5i6L\x9d\x8f\xa3\xeb\x84Q+W\xa4\xa1BY\x85\x9a[\xcd\xcd\x1dk\xeb\xa2^\x98\xf6\x8b\xb5\x88\x17\xb2\x90ESwe\xa7O7\x1f\x18\xc0\xe7\xafNF\xcb\xe8D\xfb\xcc\xdc\x9f\xc6\xd5W\xf6l\xae\xe91\xb6\xd2J\x91:\xa4\x13l\xed\xaa\xc5\xf5O:\xc1\x16p{\x93/\xe9\x04[\xb1A\x8e\xe1\xf6\xca\xdd\xf8\xe5\xc5\xcbYi\xc4\xed%no\xd0h\xc1,\\@\xdc^\xe2\xf6:\xef$n\xaf\x10\xe2\xf6\xee\x0bq{\x89\xdb\xeb\x12\xe2\xf6\x12\xb7W\x08q{\x89\xdbK\xdc^\xe2\xf6J!no\n=\x96\xb8\xbd\xc4\xed\x1d\x85\xb8\xbd\xfbB\xdc^\xe2\xf6\x12\xb7\x97\xb8\xbd\xc4\xed%n/q{\x89\xdb\xfb\xeb\xe4\xf6Z\x0fD\xa4\xb3k!\xacF:\xbb\xf6\x88\xca\x0d\xf7Q:\xbb6\x87\x16\xe9\xecZ:\xbb\xf6\xcb=\xbbV\xf0\xcd\xce>\nv\x9b\xe7\xd0Z\xc1\x903cS\x96\xc1\xd3i%c\xee\xc5r\xd9:CV\x9e\xe8V?\xe2\x88\x15\x17)%\x89!\x17\x8c; \"+\x08^W>\x8bK\x8b'\xde$X\xe1\x8c\xb1&>\xee:\x06\xb2I\x8e2\x81\xd2\x85\x19\xe2bL\xb2F\x98`\xe3K\x0e\x8b.\x89\x8a- v\x02\x1f\xdb>\x96e\x8fe\xd7\xc7\xb0\xea\x91l\xfaH\x16}\x02{\xde\x1bI\xd2\x07\xe2H>\xc5A\xc9\xe1\xf8\x11\xdcH\x94\x929v$=r$\xd8\x83\xa5\x84\xa3Fb{\xb3\xed\xa9P\xc4HL\xcf\xb6=\x11\x88\x16\x89\xec\xe5R\x12\xfa\xba\x94p\x9c\x08\xf2\xdb\xc4\xf4\xbb\xcc\x11\"\xfe\xf8\x10l\xc52\xc6\x86\x04#C\x82\xd6\xe9(8\xd6\xfdA1!\xc8\xda\x84\x15yp4H\xceX\x10[\xaf@R\xd5c\x99\xeaDT'\xa2\xba\xf5:\x11\xd5\x0d!\xa2:\x11\xd5G!\xa2zODu\xbb\x10Q]\x0b\x11\xd5\x89\xa8NDu\xa4\x95DD\xf5A\x88\xa8n\n\x11\xd5\x89\xa8n\x11\"\xaa\x13Q=\xa4|\"\xaa;\x9f!\xa2\xfaD\x88\xa8NDu\"\xaa\x13Q}\"X\xd20\x11\xd5\x85\x10Q\x9d\x88\xea\x87\xd3\xa6\x8eOT\x17\x00\xa4\xab\xee\x92W5\xe1TL\x98V\x1a>\x1c(\x81\x19\xeb\x1e\xa2$vU\xd1\xdd\x94\xf5z\xe4%\xf2\xef\xe4\xc9\x8a}!\xaeO\xce\xe9\x1e?-\xff\x08\xbaD\xd84\xcb]\xa5\xab7\xa1\x1a\xbeU\xb7\xc8\xb2\x9e\xe8V=R\xd2\xa1\xa9\x11S\x9cEA\x10+\xec\xcau\xcd\x96W\xd7U\xb3\xb8\xed\xae\xee\xcbz\xd9\xdc'\xd2\xf9\x0cD\xd5J?\xdc\x94\xf5\x95z\xdd\x96\xb5y\xde\xe5p\xcd-\x9b\xfb\xba/7\xec\xea\xbf\x8a\xb2\xbaZ\xaay$\xe9]\xa2\x13]\xad\x04\x12\xd5\xd4W\xcbfw]1\xd1\x8e\xa4\xe2\x82U\xdf{\x9fl\xc91^\x16v\x11\xaa!6,s{\xa3lpL_\xcbT\x88z\xc8\xd9>\xbf\x18\x84S\xf3\xcc\x95gP\xcc\x0d\xf2\xe51|\x07U]\x17\xe3a\xf8\x91\x08\x0f{\xfa\xf9\xd2 \x0fG\xc0\n\xa2\x17<>\xa9\x94\xf5\xfa\xaa\xacW\x8dg\xdd{+o;\xe7w\x0d\xab\x9fzVP\xef\xc5\xb6\xae\xaa$\xd4P\xf4M\xab\x17\xb6\xe9\xd2g\x14\xa3\xae?\xda\x85\x8f\xb7\xeaqt4e)%\xf7\x94\xae/\xda\xfe\xea\xc6\xcbl\x0c\x16\x12^k\xc13\xb9\x8e\xf2WEl\xec\xd5Fc\xe80\"\xdb\xaa\xd8\xcfI\xbe\xc7\x92\xff\xcc\xe0\xcd%\xbf\xe0,nW\x7f\xcd\xd7[\x07\xba[\xd6K\xf6\xe1J\x86\x0e\x1d\xb9\xe5\xe1\x85M\xca9\xaf\x92j{\xd9AY/Z\x013\xf2I\xffNd\xf7-7\x03f'\xf4\xe2d\xfb\x03\\7\xf5R\xc6\x03\x15 \xcc)\xbe\xe3to\x93\xae6\xc5\xc3\x95\xc4\xe3\xa5Q$\xd8\x84\xec\xebE\xb3\xd9\x94\xbdd|\xf4\x8a\xcc\xe4\xc1\x97\x17M\xfd_\n\x87\x1aX\xa9\xee\x97\xda\xac=\xb9\x9c\xf3\xe9\x9c\xb5\x9ba_ \xbe\x96-\xb8\xc9\x94M)\xb2&\xcb\xd6^\x97\xfd\xa6\xd8\xda\xdd/\xb2[\\\xed\xea\xbeL\x9f\xa2\xc7o\xcf;\xe3\xd7\xfc\xdb\x1c\xf8\xfd\xdf\x95\x1b\xd6\xf5\xc5f\x0b\xa2f\xaa'\xf4\x9aj\xae\xbe\xb8\xaa=,E\x84\xa2\xb3\xb0\xaa\xbcc5\xdfDi\x93\xcd\x11\x10\xd1l\xae\xbb\xbe\xa9Y\xe0x\x99yt\xdbT\xb0-\xfc\xfb\x0d\x13\x80\xbd\xecN\x93\xae|Stp\xcdXm\xd4\x08\x9e\xdd\x96\x95k\xfcriv\x92i\xac\x0b\xf1\xf44\xd6?\xd7\x81\x81\"p\xb6^\xb0\x99feO\xef\xc0\xd9H\x00\xbe\xbd\xbck\x16\xca\xcb\xd8\ns\xaf\xa8\x1f$\x0b\xc1\xfd\xf2ES\xaf\xca\xf5\xaeeK\xdeE\xaf\xd9MqW\xba\xf88\xb2\x0f\xeb!!\x82\x1f\x0f:@'\xe7\xfc\xf4\x02T}\xb8\xd2\xd5`{\xb6\xab\xe5(~.\xc7]\xa7\xb5\xbc\x93 \xcc\x9d\x85IN\xcf\xae\xae\x19_\xb0\x8b\xd6\xc3\x7fkY\xb1\xec\xb4o\x1b9\xc81m\xfa\x9b\xfe\xf6\x86\xedar\xb2\xf5\xe5\xa73{\xc6E\xaf\xdb4u\xd97\xad\x8a\x8d/\x1d=b\x18\x98|KuW\xf6\x0f\xfb\xd5WK\xa5x\x99\xdag\xa0\x0c*-\xbe,\xfc\x07l\xce)k>e\xcd\x9f\xc9'\xc9\x9a\x0f\xa8\xf1l\xa6\xb0\x90\xad\x9a\xf8\xbe\xcb\x1a\xd6\x97\x17/\xc7\x0d\xbb\xdadvp\xcf\xbf\x99\xed\xf3\xd8M\x97E\xd3\xca2\x04\x8d\xb8\x95\x8d\x1f\xdc\xd4|\x19\x13S\x9f\xa9\x19\xab:\xf4\x13o\x9b\xcdXo/\xa8\xda\xb2-\x13D\x9e\xef\x8bv\xf8H\x01\xecf\xaa\x16\xd1\xbf]\xe8\xcd\x14\x16\xf6\xfaB\xcc\xcd\x1a\xca#b+\xe4l\xb2s\xbc\xbcx9W\x13\xb9I\xc8M\xf2\xc9\xdd$^8\x86\xb2\xeeD\xa54\xa1\xac;GTn8_\x0ce\xdd\xc9\xa1E\xca\xbaCYw~\x9bYw\xfc\x1e\xff\xb3\x8f\x8b\xa6\xee\xae\x94\x87\xd9\x93q\xc7\xdc=\x9b\xe8\xf7|\xcb*O\x87^\x88\x10#Y\xa8*\xc9\x85\x03<\xd1\x8d~\xa40\xc0]Q]\x99*\xcb\xba\xd9\xf6z\xf6\x03\xa6M\xd8\xab\x1f\xb4\x8d\xc2~\xa3\xd0\xf62\xab7\xdf\xe7\xcb\x0f{\xf23\xb46\xbc\xff\x84\xbc\x1e\xfc(\xff}\x9c\xf7\xde\xf4\xd2;\n\x0c\xf9\xee\xb3z\xee\x91.\xbd\xb0\xd7\x1e\xfd\x9d\xfd\x1e{\xdc\xb7\xce\xe8\xadG\xf9\xeaC\x9e\xfa\xb0\x9f\x1e\xd7\xae4\x1f=4;W8;\xc6C\x1f\xe5\x9f\x9f\xf8\xe1]/Ez\xe7\xf1\xbe\xf9\x08\xcf<\xba\x1f\x1e:\xdf\xa4x\xe4\xa5\xe7\xdd9\xcf\x06\xfd\xf1\xf1\xde\xf8p[\xf2z\xe21~x\xbc\x17\xdeZ\xe1\xf9\xd2\xefr\xd3+\xf7 [\xf2'\x84\xedc)lj\x0dI\xc1\xba\xdf\xb2x\xdf\xc8\xf9F\xce7\xeb\xf5\xc7\xe4|3w#\xae^h\xde\xa3G\x84\xfeg\xdf(\xb4g6F\x8d\xb2\x8eM)\xeeE\xd8\xff\xb0\xddZ\xb2\x8a\xade\xd2\x85\xb3\x8f\xea\x1fM+\xea\xef\xd9n\x19S\xc2+\xfd\xcc\xab\xb1\xa4a\x0bV\x08\xf7\xca\xf8\xbbH\x10%\xf7`\xc3\xbb\x86\x92\x94\x92\xf4Hu\xcd\xd8\x7f\xe7;\xf9E!\x16\xfcU\xdbl\xa0\xa8e\x04\xbedS\xaa\xec\x8dR\xcd2\xa2\x9e\x7f\x91\x9d\xb0yo\xca\xf5\x0d\x14\x1b\xbe^\x0d\xe55\xabq\xdaY\x17\x1d\xdfe\xf7\xd3S\xc0uVKnK7m\xcb\x16}\xf5`\xfa\x0d&{G\x9b>\xd4}\x8fv\x139~\xa2+K\x1d\xb5|\x8e b\xac\x99\x7f\x90\x1f\x9c\xa9q\xda\xf5=t6\xc0M,\x80\xb29\xcc{g\xef\xd7S\x07\xab\xf9\xaa\xb1\x9ce~\xc5\x95\xe5\x8e\x7f\x1c\xac\x99\xcf\xd4\xdc\xbd\xf7\x1f\xd0\xdc\xa1,ws\xbb\x9b\xa2\xf5}\xfd\xb46\xcaR\x95\x8d(j?vW}\xb1e\x0bV\xde\xb1\xa5\xabnX\xa5\x8d\xb3\xc9\x9cz\xce7\xe9j\xaf\xdc\xdc\xb2\xba\x83\x1b>[]?\xf8HD\xc5B\xd8\xec\xca*w\xb3^\x9a\xfbZ\x86\xbe65\x1b\xbb\x95J\xc5\xd2\xd9\xd2?\xba{\\\xd3\xf3\x05o\xdb\xdc\xcb\x9dBS{Hy\x81Oz]TE\xbd\x08\xac\xfb\x19\xa6\x84\xba\xf1\xe6/E\xf5\x19\xb9\xda\x1cX\x0c\xb6\x97\xbclJ3\x0d\xa6\xe8\x10*\xf3\x88l\x8e^\xd2\xf8\x07,jU9_\x92\x9b\x9f\xde\xbc{\xfd\x9d\x08\x96\x95\xf7\x8e\x8baQ\xc3y\xad\x1dkC:\x9a\xce\xdb T\xb0\x9e\xb2\xeb\xdd\xc3\xb5\\\xd7E\xbf\x93\xe3G\xda>\xbc\x13\xae\x9bu#\"\xe1R\xc9V\xe3 2\xb7,b'_T\x02xk\xcc\x81\xc6>,\xd8V\"{\xd6\xe2\xca\xdeH\x14co\x8d\xea\xa9\xf3\xc8D59\x0cN:\xc1\xd2\xe9ve\xaf\x81\x12ka\x8bJ\xa0\x83\xc3\x12\x9d\xb2\xcb\xb5-\xf5c\x8f\xa9\xaa\xd94\xd6=\x1d\xd9^\xee\xd2\xf6\xc7\xa9\x8f\xfd5\xa9\xa4af\x991x\x13\x9ch\xb2\xa9\xb4\xec\x91\xd3\x1d\xdc\xc4\xd9L> \x9b\xcc\xdf/\xc4\x9e\xcd\xb6\x8f0g-\xbc\x93\xc5\xbaC\xbb\xbcxIIo\x81\xfc+\xd9L\x0fJzKIo\xedBIo\x85P\xd2\xdb\xff\x8f\xbd?m\x92\xe38\xd2E\xe1\xef\xfa\x15\xfe\xf2\xbdv\x00J\x8d\x86H-c\x07sul@\x00\xa40\x02\x01\x0c\x16\xe9\x8c\x8d\xc9\x1aQUQ\xdd9\xc8\xca,fF5\xba\xa5\xd1\x7f\xbf\x16[n\x15\x8b{dv7@\xc5\xf3\x85DW\xa6g\x84\xc7\x1e\xfe\xb8\xfb1r\xd0\xdb\x1c\xf4\xd6\x87\x1c\xf46\x07\xbdU\xc8Ao\xfd}:\x07\xbd\xd5\xc8Aos\xd0\xdbh\xb8\xd3\x1c\xf46\xa09\xdf/9\xe8\xed\x149\xe8m\x0ez\xdb#\x07\xbd\x1d \x07\xbd\xcdAos\xd0[\x1f\xcc]d\x0ez;y!\x07\xbd\xcdAo?\xb3\xa0\xb7c:\xd6@\xd4\xe88=~jd\xc0\xee~:\xe6~n\xc7W\x823 \x9f\xd93<\xd5\xed6{\x86\xdf\xa0r\xe3>\xcd\xd93| -f\xcf\xf0\xec\x19\xfe3\xf5\x0cw{*\xd4\xcd\xb1\xa3\xc2\xc3\x86\x0f(kZ\xa8\xcbm\xe1\xcd\xf0\xb1\xceIa\xf4r\xef$\xfe\xf3pG\x18U\xd9<\xf0\xd9\xfa!\x0c[\xe2s\xf3D\x18\x96\xed\xc6\x89\xc7\x9f\xa9/\xc2\x8a\xaf/~\xf3\xed\x83c\x8e~P\xdch;\x8cqIh\x9b\xf5\x1d\xd5\xdcY\x06[\xfb\xde\x0dx\xd8\x17\x82\xf2\x0c\x19J\x8f\xc8\xfe,\x80Q\xc2\xa6\x15w\xae\x84A\x19f(a\xc3[a\xe7.\xbc&x%\x9a\xe0( O\x03=\xbc\x13B\x0f\xc4\xb8\xd5\xc0\x8c^\x8du\xc3\xf54\x16\x8ek\xdd\x03\xd9\x90\x1aq\xdf\xed!(\x8d\xaf1)=\x8c\x8e\xb6\xe6o]\xac\x01\x84\xbca_\x01Q\xd7\x1fa_\xb2\xb5'\x1cp\x8fu\xbd\xdb\x97\\\x15\xc4\x9f\xf0a\x88$%\xc6B'\xf7HP\xe4\xb8\x06\xd3\xec8W:\x18G\x886\xd6c\xa4\xc4^pL\x89\x8a\xaa\xc5\xca\xb3\x88\xd3L\x0f\x92\x12\xe9*\x99\x94g\xa4\x12\xf3\x9bu\x9b@HS\xbb\xf7\x91fT\xe0\x19\xbf\xc3\x95\x85v\xc1\x90S\xdc\x9dk\xa4/\x8a\x9de\x8d\xafMda\xd5\x18L\xaf\x0f\xfa\xd9\xd9x\x98\xa8\x81\xac\x0c9\x08IC5\xc6\xd4w\xa8V:\xfa\xe8Y\xe1\x8d\xda\xdd\x83\xa4@\x84#\xc0\x101\xa7\x80!\x9e\xdb`8\xca\xf7z\x13\"(\x07\xc2\xda\xf7\x90\x8bTL\xb3\xbd\xa6\xe4|Z\x97\x9b\xb3\x86ou\xec\x8e\x1bR\xdc\xf2z{+\x9aB\x1d3\xf6u[\x88\xe2\x92\xebcI\xd1j\x0d\xdck\xfbZ\"\xa4u!\\ZQ\xef\xf7\xda\xcc\xc8\xaf\x04o*V\x9acSX\xf9\xb4!6<\x02=\x93\xc5\x1dx\xc8\x8df\x0e\xc4\x06\xc0D%jx\xc9/Y%`\xc7\x05\xdb0\xc1B\xc3eTZ\xb3\xad\xd1\xc7tu\xb92(\x80\xf9\xd1'\x0c[\xed7\xe3\x85b`\x1c+\x8bVh'\xfc=kD\xb1V\x96=\x9f\x98n\xcf~oxF\xae\xce\x95\xc7i\xc0iT\x9f\x82\x07_\xb0\xdb\xe0~vR\x17j\xa8\"\xf4[\xc7\x88Ohd\xbf\x18\xdf+F\xf6\x89\xa8=\"n\x7f8:\xe6\xaa\x01\x94\xb7\xa7\x88n\xdd#oO\x9dHPd\xde\x9eN\x91\xb7\xa7S\xe4\xed\xe9\x08y{\xda#Iq\xcb\xeb-oO;\xd0\xb7\xa7\xa8\x89\x17\xd5\xd0\xf8z\x1f\xd5\xd9\x1f\x8f\xc1\xef\xb5\xe5R\xdd d\x03\x14\x01\x97J\x18x;P\x824\x04\x04\x0e\xc37\x98P\x0d\xa1\xef\x07\xa28\xe049\xac|@}\xe3\xd3\x80\xd6\x8fS\x9e\xd1Ykw\xd2\xee\xc2w>\xb4\xb3\xb5\x86\xd6\x97WS9\xc8\x84B\x88\xde\xd3#\x07\x99\x00\xdc\xe2\x1d[x\xbe\xcc \x13G\xd5Q\xe6\xf6\x91u8-\xba\xc4\xd8\xa6\xee\x0d\xe2\xd97d\x8e2q\xa4\xa0\x1ce\x02\xb3\xe0A\x8e2\x91\xa3Lx\x9f\xccQ&\x14r\x94\x89c\xe4(\x139\xca\x84\x0f9\xcaD\x8e2\xa1\x90\xa3L\xe4(\x139\xcaD\x8e2\xa1\x91\xa3L\xa4\x04j\xc8Q&r\x94\x89\x1e9\xca\xc41r\x94\x89\x1ce\"G\x99\xc8Q&r\x94\x89\x1ce\"G\x99\xc8Q&\x86\x8ev\x03Q\xa3\xe3\xf4\xf8\xa9\xbb\x8e2\xd16\xeb\xb3q\xf6\x1e_\xb9\x8f\x9f\x1c\x95\xbd'\x83\x0d\xca\xde\x11^\xb8\xa2\x11Ok@\xf58\xf6\xd4a\xd3\nd\x1d\x8e\x9f$\xd5a\x9c\xaad\xc1\x1a\xe4X\x1f\x18m\xe5X\x1f\x1a7\xac\xdcx\x94\x8a\x1c\xebc -\xe6X\x1f9\xd6G\x8e\xf5\xd1\x13\x96\x07\xc4#-\x1c\x9b\xaa\xf4\xbd\x15\xe1\xcbY\xda}\xe3({i'L\x05 \xe9\x15y\xb4\x13\xb3\xdd\xc9\xd7\xc2\x9fy\xdc\x90\xa0\xae\xcc\x0b\x9fm\x1c\x91\xbe\x8b|fAD\xc6}9\x10\xda\x01a/\xc4\x98\xdc\xc0\xf5MHK\xb5\xd9\xc9\xf1\x9a?q\x19E\x17\xac\xdaRYD\x7f>\xae\x85$\xbf>DKh\xe0=7\xb0-\xa71\xf5\xe3+\xdc\x1e|h\xef\x0d\x9c\xeb\x1e\xc9m\x8f\xac#\x9c\xbb\x1eQO\x137\xbd\xc2\xe1\xa1\x87V\x12\xce5\x8f\xe4\x96\x87V\x12\xad\xda!W<\x93\xeb\xd6<\x12\xe0\xa4i\xc8\x85E.\xab\x1b}@W9yA\x1e\xd5P\xca\xb8K%\x04*?\xaa\xca\"\xad\x8ew\x9bC\xd7\x16\xc1\xb8\xb7\x881\xef-\x96t\x93\x8b\xb9\xc8%\xbb\xc7\x91\x15\xb4\x9c~\x08\xeepp\x11\xa0Vj$\xbb\xc2\xe1\xfb\xb9c\x8f9\xf1\x84\xab\x06E\x8e\xfa\xc1\xd1|\xe0F\xc5\x9c\x86gp\x1d\x04Ba\x1a0uv\xd4V\xea\xb71g\x0f\x15\x9e\xa1-\xaa\xf3\x92\x0fC08E\xf5\xc5\x0b\xc4d\x90\x8bC'\xb1\xbf\xb1,*\xa9V\xb9|<P\xc7B\xbeQ\xe1!\xa6\xb5\xcaNV\n\xd9\xc9\xaa\xff \xab\xcc\xecd\xa5\xee9\xa6\xe3\x1d\x9f\xd2w\"\xcdA\xe6\xd7>X\xc1/\xe4T\xbf\x16\xd9 k\x99cwv\xc2\xcaNXnd',\x85\xec\x84u\x8c\xec\x84\x95\x9d\xb0|\xc8NX\xd9 K!;ae'\xac\xec\x84\x95\x9d\xb04\xb2\x13V\x8a\x1fSv\xc2\xcaNX=\xb2\x13\xd61\xb2\x13Vv\xc2\xcaNX\xd9 +;ae'\xac\xec\x84\x95\x9d\xb0\xbe<'\xac\xec\xfeC\xf3\xad\xc8\xee?7\xa8\xdc\xb8\xe3Jv\xffYB\x8b\xd9\xfd'\xbb\xffd\xf7\x9f\x8e\xc0\x16\xf0\xf9\xf9\x1f\x87\xcf\xcf\x9f\xbb\xf7F\x9e>\xbd8(\xaam\xad\xfa\xa7\xce\xff\xdb}\xb8\x93\xf53\xf3\xec\xe95b\x1e\xfbl\xfdy\xa6m>\x84\xb8\x03\xae\x8d\xcdbz\x8b\xae.\xd3O\x8ev\xa0c7\x97^]\x1e\xd6\xe8P\xde\xbf\xaa\xa4\xbe\x9d\xc3LQ\xa9\x93\x86\xfbD-\xbb)\xaf\xdaC{\xb6?\xac\xbc\\\xcb\xa8v\x01\xa1a@0\x9a\x00\xa7a h\x19\x12\xd8MAan\x13W\xe0\x9eti\x96\x13\xc4\x99N\x90\xc0v\nW\x80\x89\x0b4\xe3 \x96b=A\"\xf3)(Pe\xba\xc0\xb2\x9f`>\x03\n\xc8,\xa8\xa0(\xc3\xce 1\xa1`i6\x14\x10\x19Q@eE\x85{v\xc7\x98\xc22\xa3`iv\x14\xe0\x18R\xb0$K\nf3\xa5 \x8d-\x05K1\xa6 \x895\x15\x1e\x0eL\x9e\xc9\xa3\xcc)\xb8\x19\xf6\x14\xdc \x83\nn\x86E\x05D&\x15\xa4\xb1\xa9bS0\x8eQ\x05\xcb\xb2\xaa\x80\xc0\xac\x02:\xbb\n\x12\x18V\x88)\xf3k\x04\xcb\n\x96`ZA\x8cm\x05\xf8\xed\x19\x82u\x05\xc4]\x1c\x99}\x15\x94\xa6\x98Y\x08\x06\x16\x10J\xb9 \x13\x0bHl,X\x9a\x91\x05\x89\xac\xacp\xbfj\xe3\xcc,Hggy\xe5\xc9/\xc6\x18Z\xb0\x18K\x0b\xf0d#\xc0\xb0\xb5\x80\xc6\xd8\x82\x18\x8d \x91\xb9\x05\x08\xb9\x01\x1b\xe6B,.HR.\x9e\xcd\x05\x88Z&\xb0\xba \x95\xd9\x05a\xfa\n\x8a\xe1\x05\x0b\xb3\xbc`!\xa6\x17\xe0z\xccl\xc6\x17\xe0Y_\x80d~\x01\x9a\xfd\x05\xb8\x0eEg\x81\x01\x89 \x06!6\x18,\xc5\x08\x03*+\x0c\x12\x99a@c\x87\x01\xa2\x11\"\xc3,\xfe>\x9e-\x06\x0b2\xc6\x00S\xb4\xc0([\x8e=\x06\x18\x06\x19\xcc`\x91y\x05\n\xe5\xd5\xefg\x92\xc1\xd2l2\x882\xca \x95U\xe6\x95\xa6\xcf\xf6\xe1k\x8e8\xbb\x0c\xc2\x0c3Hb\x99yE\x05\xd9g\x90\xca@\xf3J\xd3;\xe4\xc0}\xe2rL4@\xb1\xd1 \x81\x91\x064V\x1a\xa40\xd3\x80\xccN\x83\xf0,\x02\x11\xc6\x10\x10XCX\xa6\x1a\xa4\xb0\xd5\x80\xcaX\x83p\xc5S\x98k^a\x03^\x18v\xc8\xe0\x18l\xc1\x01Q\x9d\x87Yl\xb0,\x93\x0dbl6\x083\xda\xbc\xef\xa42\xdd`\xc1\xbeK`\xbc\x01\x89\xf5\x06\xde\x0d\xca\x7f\xb3\xa2\xe4\xde\xc8N\xc2Id\x18\x03{\xbb\xa1\xbf\x046x\xc6\xa7\x0bn\xee\xb8\x86!h\xbaL\xfb\xfai\x7f\x0b7\xf5NE\xb8\xe1\x1bh\x05\x13\x87V\x1b\x02\x8e\x82\xd5h\xe8G|\xb5\xc4\xd6\xc0|\xa8\x98F\xfa\xd6\x7f\xf7\xbev_\x97\xb3\x0fSj\xfeO\x19~\xdc\xaf n\xc9xu\xd8\xf97\xf8\x0f\xe0\xbbW/\x9f\x9e\xbd}\xf7\xf8\xdd\xfb\xb7g\xef_\xbe}\xfd\xec\xc9\xf3\xef\x9f?{\x8a~C\xfe\x8b\xf8\xf8\xf3\x97? \x9f\x0f\n\xb7\x91HHU\xd0\x01\xd0n\xc1\xecn\"\xad\xe9n\x0c\x03\xb6\xa7\xb2@\xa8\xdf\xee\x17\xd5\xba\xf4/\xfc-/\xb7\x0f\xfa\xe0Q\x9eN\xd0\xb3\\t\xfe\xfc[\xa8\xda\xf4\x93=\xa3@\x91\xad\xcc\x1f\x8b\xb6=hk\x8b\x7f)\x1a\xf0\x0dz\xa9\x9ek\xe3a\xe9fW\xa0{n\xc2\xc7\xed\xff.x\xb3k\xc1\x9d\xbf\xbcG$\xfe\xe7b\x8c\x86]]\x15\x1f\xb9#\xd0M\x0fD\x03\x03AG\xd0\x7f\xb5\x0f\xa6\x06\x17\x87\x1d\xab\x1e4\x9cm\x14'O\xed\xe8b:\x02\x8c\x9e\xc0p#\x84\x97\x1b\x027SG\xfb\xd9a\xc48k\xf9\xed\x7fl\x8b\xf3\x8a\x89C\xc3\xe1>\xbf\n\x1f\x83\xdf\xbf\xae\x1bE\xb0\xfd\x13\xbf^\xb1\x96{'o\x80O|\xd5\x16b ;\xc8\xa8\xc6F\xac\xb3F\xf6\xb7\xb2\xa8>\x86\xa6\x9e\xf5\xa1)\xc4\xf5\x99:\xab\xac\x83\x01\x0bSJ\x18i\x93\xe9\xe7\x9d5\xe1;V\x94Q\xfa\x80\x15\x05F\x94\xbf\xce\xde\x98L=R\xaaj\xc4\xda\x85@\x1b\xec\xbaJ\x98_\xdd\xa5\xea#H\x86c\xf2\"\x8a\x85 \x15\x89m\xa1i\xb1l\xeb\x9c@\xb1\xed\x7f<Q3\xaay\"@3\xb2\xb1z\x8b\xf6h{w~\x18\x04o\x8c\xa9(\x14\x90\x97\xa0\xa0X\x10^\xba\x92T\x98\xdd\x80\x8avE\xd5\x85\xe2\xf5\x8a\x1bo$Em\xa3\xb2\xf2\x98\x82\xd6\xf5nW\xb4-v\xd1\xec\x1f\x1f-\x8c\x83?\xf7\x0e17\xbc\xe4\xf5\xdf<k\x98\x08\x07\xaf\xc6\xb6\n8\xe4\x8e*j\xa2\x02\x0f\x1e\n\xca\xd2\x024\xd9\xa2#\x08\xe8\xd8\xd4\xea\xbc\x8bX\xf6P\xfa\x02\xa4\xce\xc0\x94)v\xa3\x8f\x18\x10\x16\x14\xd5\x82\xf9\xbc=\xfa\x0c\xba\x8d\xfa\xf3\xfa\x825\xe7jO\x18\x15\xd3\xef\x06O@\xf9\xe1m\x15\xb1-\x1c\x84\x18`\xc7\xae\xce\xeeX\x01\xb6\x08\xa3~\xb5cW\xc5\xee\xb0\x9bj$*L\xcf\x8e\xfd\xc8_\xb3\n\xf8%o\x8c*\xc9\xba\xd1L\x9c\xcfAE\x83\x9285\xb5aE46\xb7r,i8k\xf9\x11\x81y\xa0i\xad\xa4\xa8\xa8\xb8\x12\x0f{\xb9:DC\xbf#\x15\x87]q\x80\xa8\xe0A)\xed8TF\x04\xf5\x07\xd7\xa8\xfc\x14! \xea\x96\xda\xb8\xf5\xb2+\xaa3yP\x1d\xa4T\x99\xb1\nc\xeb\xe9\xf8\xea\xd1u\xcb\xbdV\x9d\xa0a\xc3\xd7%\x9b\xfa\xf3L\x84\xa9\x1eg\x9e\xb6\x02\x83\x01\xae\\\x9e/\xbfw>\x9e\x10\x06\x1c\xa1(\xcc~.\x16)W_\xce\xbb\xc3}\x0f\xb58\n\xf9\xadn\xdd\x02\x02i\xc1\xbe\x87Q\xe3o:KFd@\"B\x0fcTZ\x16\xad\"9\xf7J+6\xed\x89v\x02<r\x03\x90{\x04\xbf2\x07q\xcb\xa7\xad\xe2x\x073t:\xbf\x9d\xc1\x89\xbe\x93y\x02\xa2>\xd7w\xad\xca\xc2%\xacO\x9eS\x94\xf64\xb2\x0c\xb8\xf0\xd7\xee\xb5\xea\n\xd6^\x0c\x99H\x1dE\x03\xfcJ\xcf-z\x1eR\xbb\xda\xa2\xf2\xec+\xdf\x96\xac\xbd\x90\xca\xb0>l>F?\x93#^/\n\xc64:\xfa\xcc\x89\xe6\x01+Z\xaa\xf6xrJY\xb3r}(;{\xe1\xf6 \x0f\xff\xee\x0f\x1e\xaaa\xaa'\xa9\xbb\xfa d\x9fl\xf46\xb0\xbeTW(\xdd\xed\x96q\xf3\x92UuW\xa0\x19\xdf\x15\xba\xbf:\xee\x10'\x93\xd5\xafh\xe56tS\x08\xcb\xd5d\x83\x99\xcd)\xef\xd3E\xdd\xf2\xde\xfd\xd2\xfd\xd1a3\x16\xed\x88\x15=\xe8\x11\xaaj}\x15\x9c\x926Eg\xfe\xd7\x16\x1eE\xedu\x7fu\xd4~\xa7\xf0\xe7Z\xa9u_\x7f\xe2\x8du\x99\xb6\xcd\xc57\xca\xa4\xef\xed\xb6\xd6\x14\xa0\xaa\xe0\xfe\xda\xeeP\x8ab_\x16v\x1a\x1b~\xfb\xe8\x85\xd1\xa8\x1bx\x04:S}\xb6\xf7\xb4\xa7\xa0\x8a\xd3\xefM\x8a\x94\xc3\xe6+\x8c\xaa\x9a\xc3\xe6\xa3\x94\xf9O\x176\xff\xa8_(\xff`\x87\x9fj0X\xbe\xe3\xf6ZG\xc7w\xb9\x00\xe7\x98\xf8\x069&\xfe2g\x19\xaa\xd7\xa8\xee\xb69&>\xc2CT,\xe1\x1d\x9a\xe2\x19\x9ac\xe2/\xe8\x05J\xf1\x00%y\x7f\xe6\x98\xf8s==\x13\xbc<\x17\xf1\xf0\xa4{w\xe6\x98\xf8s\xbc9)\x9e\x9c ^\x9c9&~\x8e\x89\x1f\xd9%\x91\xbd2sL|\x94\x07f\x8a\xf7%\xe4\x98\xf8\x1eD\xbd, \x1e\x96\x98h\xea\x14\xcf\xca\x1c\x13?%\xac|\xccs2\xc7\xc4\xc7{H\"\xbd#1\x9e\x918\xaf\xc8\x1c\x13\x1f\x12=\x1f ^\x8f9&\xfe\x02^\x8dQ\x8f\xc6ToF\xef\xba\x99c\xe2\x1f!\xc7\xc4\xcf1\xf1'X\">9\xd6\xd3\x90\xeceH\xf20\xcc1\xf1E\x9a'a\x8e\x89o\x91c\xe2\x0f\x90c\xe2k\xe4\x98\xf8\xcb*7\x1e\xcd=\xc7\xc4_B\x8b9&~\x8e\x89\x9fc\xe2\xf7\xdc\xb4\x87\x7f\xef\xfe_\xff\xa6?A\x0e\x92\xdf\xc5\xc8\x1f\x90\x11=\xe1\xf1\x1d|\xd6=+\xba5>\x12{\xde<\xf5\xf9\x87\x9e\xf71Z\x92hw\xb8\x00\xf2Q\xdb\x0c\xc6\xb8\xb1t\xe8xz\xe0x\\\xd8\xf8\xa06!\xaaQ@\xd0}\x10\x1a\x05\xb4V!\x95\xf4\x13\x90G\n\x14\xbf(\xf1'J\xfdY\x9a\xfc\x83\xa7\xff,D\x00J\xa3\x00\x05\xc4\x11C\xc3\xcf\xa4\x01-M\x04\"R\x81\x16&\x03\xd1\xe8@DBP\xa8\x0fwT!,%haR\x10\x8a\x16\xb4 1h.5(\x89\x1c\xb4\x10=(\x85 \x14\x10\x86\x0e\xfe~\x03$\xa1\x9b\xa3 \xdd\x08Q\x88F\x15Z\x9c,\x84\xa5\x0b-J\x18\xc2S\x86\xc8\xa4!:m(:\x15\xe2\xc2\xbc\xcf\xa6\x0eEC\xbc\xa36T\x08\x02\x11e\xd7E&\x11\x85\x16At`w\\\xf9\x16\xa4\x12Q\xc8D\x0b\xd3\x89\xd2\x08E\xa1\x1e\x84\n\xe6\x9eH*\xf2H\x13\xa8@\xee\xcb\x10\x8b\xd0\xec\x18\x04\xb9\x88D/\x8a\xc5\xf3M\xa1\x18\xc5dz\x0dm\x0b\x11\x8d\xe8\xca\xc4\x93\x8dbuK \x1c%R\x8e\xc21\xa4\xe3\xb4\xa3e\x89G\xcbP\x8f\x10}c6\xfd\x08M@\xc2Q\x90\xb0$$D\xc7\xa1\x13\x91(T\xa4`H\xf6E\xe8HDBR\x1a%\x89DJ\x8a)=\x1c\x86=\xf2.\x9e\x9c\xb4\x1c=)Z(\xef\xf8Y\x8e\xa4\x84\xa0)\xa5\x13\x95<\xe2D4\xe8\xfa\xa2d\xa5\x18])\x91\xb0\xe4\x91\x15\x0f\xb6\x1e'-E\x02\xad/M\\Z\x9c\xba\xe4'/-I_\xc2\x10\x98\xe8\x14&\x12\x89)\x81\xc6D%2E\x82\xa7\x87K\x87\xa5\x96`\xe9L \x84&\"\xa5)P\xdd\x14Z\x93G\x14\"\\z\n\xb5)\xd0\xe5\xe3\xa1\xd2\x17\xa47E\xc3\xa4\xdf\x04\xc5i\xa9\xbeH\xa09Q\x88N\xee\xedA(\x04\xbapZ\xad\x87\xc0\xdd\x02\xa4\x04?WA\xce=\xf2\xb0\xa1\xcfC\x81\xcfq%O\nzN\x0ey\x1e\xbd5\n\x85;\xa7\x06;'\x85:\xa7\x05:G\x879O\x08r\x1e\nq\x1e\xd5\x1f\xae\xb1\xe7\x067\xc7\x846\xc7\x056_\xa8BK\x854\xc7\x074\x1f\x96kV\xc1\xbb\xa7f\x852\x8fD*\x15\xf3m\xec\xd1\x10\xe6\xd1\xa6\x04\xb4V`\xc1\xe0\xe5\xd1\x18\xae\xf1\xc0\xe5\x0b\xd7l\xe1\x90\xe5\xe8\x80\xe5\xd1p\xe5\xf4z\xce\x0dU\x8e\x0fTN/[\xb0\x0d\x16\x0bQ\x8e\x0dP\x1e\x0dON\xaf`rhr\\`\xf2h\x81\xe2A,q\xed\xb1d@\xf29\xe1\xc81\xc1\xc8\xd1J \x87\x85\xa5*\x86\x12\x84\x1c\xb3J\x00:\x04y,\x00\xf9\xa8&\xf3\xc3\x8f/\xb0P\xe1\x03\x8f\xe3Z\x01\xe8A\xc7u`\xf1\x80\xbcY!\xc7\xa3:\x02\x94\x9e\x00\x15l<\xda\xe1-\xf0\xca\x04t\x98\xf1a\x18\xf1\x88@t m\\\x88\xf1\x1b\xaa6%\xb8\xb8\x9e\xcb\"\x02\x97\x08-N\n,~\x83\x8aA\x85\x14\xefB\x86G\x04F\x03\x8aGU\x83\n\x17\x8eR\x07nM\x00\x92\xd2\x16\x0e\x13\x1e\x08\x12\x8e\x0e\x11\x1e\xd5\x05\xaev\x0b\x06\x07'\x87\x06G\x07\x06'\x87\x05\x8f*'\xbe\x9b\x8a\xc5\x00m\x97\x0d\x07N\x0b\x06\x8e\x08\x05\xaeU\xe0\x0f\x04\x1e\x0c\x03\x1e\xd5\xdf\"aT\x17\x0b\xffM \xfe\x1d\x1f\x16i\x81\xbfMHg\x87<\x7f\xd8\xef%\x83~#C~\x93\x03~\x0f\x83{\xbb+\xe7\x0f\xf7\xbdl\xb0oL\xa8\xefe\x03}#\xc2|'\x05\xf9\xb6\x01\xbd]\xf2\xa2!\xbe\xd3\x02|\x9b\xcbm\x87<\x7fxotp\xef\xd1\x98\xc2\x86\x19\xee\xa2\x0c\xcf 1\x9c#\x0c[\xe4\x08\xc3\xe1\xf5*>\xefk$9\x1b\xe5\x08\xc3\x18\x17#\x17\xd7\x84\xec`\x94\xe2^\x94#\x0c/\xe8TDq)\"9\x14\xe5\x08\xc3s\xdd\x88\x12\x9c\x88\x16q!\xa2;\x10\xe5\x08\xc3s\x1c\x87(nC\x0b;\x0d \x94\xcb\xd0\x82\x0eCXw!As\x16\xa2\xba\n\xe5\x08\xc3#\x90\x9d\x83r\x84a\x94KP\x8aCP\x8e0\xec{,\xea\x04Dp\x01\xc2\xc4\xa6\xa5\xb8\xff\xe4\x08\xc3)Azc\xee>9\xc20\xde\xc5\x07\xe9\xe0\x83q\xef\xc19\xf7\xe4\x08\xc3\x90\xe8\xceCp\xe6\xc9\x11\x86\x17p\xde\x89\xba\xee\xa4:\xeex\xd7\xcd\x1ca\xf8\x089\xc2p\x8e0<\xc1\x12\xd1^\xb1.9d\x87\x1c\x92;N\x8e0,\xd2\\pr\x84a\x8b\x9fk\x84\xe1qhE_\x99\xc7O\xb9s\x08\xdft\x99\xa9\xc1%/\x8aV\xd4M\xb1f\xe5YQm\xeb\x87\x7f\xd7\x04\xdb@\xf4\xc8?vo<\xaf\xb6u\x17.R\xd6\xb2\x176\x8d\x19\xa9\xa5\xdaz\x8e\"C\x8e\xe5\xfd\xc2V\xf93\x8d\n)\xabx\xbc\xff\x1f\x15E>2j\xfc\xa9ZLxY\x97fzx\xcb\x06Q\xe3\xe4\x05g\x1b\x9f\xa3FP,DEK\x98;\xe2\x00'N\x93lV\xac-\xd6\xb0*\xeb\xf5GUo\xff\xf3\xb12\x01\xaa\\\x12\xeak\x0b\x11\x18\x11t\"\x0d\xb6\xdf\xdf\xee'1\x17\x8f\x1aOl\x04NX\xb3\xbd84\x1d!\xdb\xfe\xb99\x94\\\xfb\x16\xed\x9bZ\x8e\x9fp\x11Y\xd7\x9e\xda\"(\xff\xb1\xbe`Eu\x128\x8b\x9aP\xc9\x8a/%W\xef\xee%\xd80\xc1\xa4^\x0ek]6s\x1c\xd1\xa5\n\x08\xb4\x17\xb8\xbd\x89\xe7\x9e'\x1b\xbcF+\x14W\xa9aU\xabW\xf3\x1d[_\x14\x95'\xe0\x93bC\x16\xd5Y\xe1q\x16\x05\\\x93\x86|+\x00'\x02\xc3\n\x04\xb8E\x86\xaa\xda/\xab\x06\x0ckG\xcf\x00\xfb\x86_\xde\xf2\x04p\xc1\xda\x8b\x85\x07c0x\x99\xda\xeb\x88\xb3\x96\x8b\xb3\xd0\xb4k\x81\xaa)\xa0k+\x11H<?z,H\xd5\x99\x02\xd3\xed,\xe2*\x07\x8a\xda\x01\xaf\xfa\xae\xa3\xbdf\x8dh\xb9\xf8\xa3j\x81P\xd7U\xa4hq\x16.2\xaa\xa8\xa8\"\x9a\xe2\xc9\xcfqe\xa3\xd0\x83AN{\x9ew\xe4O\xb7T\xbc>v\xf8-}p\xaa\x8fmS\xef\xec<\x0e\xf5A\xec\x0f\xa2\xff[?wx\xa4\xa9\xc4\x1c\xb7^\x87>\xa4\xf5\xed|\x8f\xed\xf7\xb7\xf4%5>\x0c\x17\xe2\x96>\xc9/\x8b\x0d\xaf\xd6\xfc\x96>\xd7\xf5\xbf~\xfb\x13X\x96\xe4\x0c\\\xb7<\x12\xa9\x1d\x16+\xdfhS\xa7g\xb2\xd1)\xa2\xdb&\xa9+E3\x93\xe85\xc7\xb5\x8d\xb9de\xcb\x83\xbe\x08\xb3\x88\xf8\xc1%\x0c\xb3x\xe1\x02\xe1k\xa0\x14L\xd9\x16\x93B\xe3\x07\xe5\x0c=+\xe8\x01\xf25pa\xf25\x10\xda\x07d\x0b\x80\x11\x17\x0e\x9c\xdf?\x87h\x01 \xb6\x02$\xb0[\xa3\x02\x85\x93\xe6\x10:\x1eh\xa0\xd9\xaeQI=\x1b6\xc6z\xb5\xa0\xb2_\xa3\x02\xf7L\\\xa0Y\xb0\x16.#\x0e\x99\x0dk\x81g\xc5FE\x0dY\xb3\x04v\xac\xc5L\x96\xac\x05\x8d-\x1b\x15g\x98|$\xd6\xac\x05\x95=\x1b\x15\xb8\xad\x1b\x12\x8b\xd6\x82\xc4\xa6\x8dJK \xd2\xaf\x81b\xd7F\xa5\x8c\xd9\xb7\x18\x96\xad\xc5bl\xdb^\xe0\x1c\xd6\xadE\x02\xfb\xd6b\x11\x16\xae\x05\x9e\x8d\x1b\x155b\xeb\xc6Y\xb9\x167\xc0\xce\xb5\xb8)\x96\xae\xc5\x0d\xb0u-(\xac]\x0b4{7*i\xc8\xeeU\xfd;\xce\xe2\xb5 \xb1y\xa3\xd2\xd4<\x81e\xf5Z\x08\x1a\xbb\xd7\x82\xca\xf2\x8d\n\xa4\xa4\x05\xd0\x98\xcd\xfa\xb5\x88\xa4\x08\xd0 l\x1d\xa3g\xa4\x1e\xd4]&\x89\x1d\x1c\x95&,{\x18\xc1\x12\xb6\xa0\x94\x98\xc8\x1a\x0e\xca\x1a\xeff\x11\xeca\x0b\x12\x8b8()\x9at@#\x85i\x1c\xef\x9f\xa8\x04\x04\x1a)\xcc\xe3\x98@\x81JF\xa0\xb1\x0c\x13\xd9\x02I\xaa\xb5\x882\x93-\x08\x0ce\x8bH\xeck\x85\x14\xc6\xb2\x05F~0\xb4\xeebLf\x8b4\xe5\xe3\x99\xcd\x16\x98\x9a'0\x9d-\x92\x18\xcf\x16\xc1\xc0\xea\nq\x06\xb4\xc5\x92Lh\x8b%\x18\xd1\x16\xc8\xde5\x9b!m\x81dJ[`\x18\xd3\x83g\x11\xcci\x0bd\xe3\xd1\x99\xd4\x16xF\xb5E ]\x82\xc6\"\x0ck\x0b\x12\xd3\xda\"\x85qmA`^[`\x1a 1\\qr\xf0\xccl\x8b\xa5\x18\xda\x16\xa8bFF,\x9d\xb9\x1d\x14\xb7\xba\x8e3\xb8-R\x98\xdcA\x81\x96V\x11N\xc4\xa0\x91\xc2\xec\x0e\n\x14\xf6\x1e3\x90\x94A\x83\xca\xf4\x0e\n\xebY\xe0\x88+\xa48\xf3\xdb\"\x98\xacA\x83\xce\x04\x0f\x8a\x8b\xa4s\xb0\x0f\xe1\xd9\xe2\x91\xe6\x1f0\xc9\x03\xa9\x1d4\xa8\xec\xf1\xa0\xb0\xf7o^\x9c\"X\xe4\x16T6\xb9\x05\x81UnAf\x97O^D\xb2\xcc-\"3\x13D\xc3\xefk`\x99\xc0X\xf6y'\x97\xcaB\xef^\xa4\xb0\xd1-\"\xcaHa\xa7\x07\x05\"\xd2Eh\xa4\xb0\xd5\xa3\x83)\x9e:B\x83\xce^\x8f\xce\xd1\x914\x12\x1a\x016{\xf0\xbdT\xa6\xbb\xc5\x92\xfd\x9d\xc0|\xefD\xa3\x19\xf0\x16\xfe]O(\x0d\x85\x86\xbe1\x0b%\xa3\xd0\xa0\xdc(\xa5$\xa6\x08\xf7\x84\xa6\xde\xa1\xd3Sh\x84\x92ThPj\x94\x94\xb0B\x83\x9c\xb6B\x03y\x93\x19Ja\xa1AMd\xe1~+\x98\xce\xc2\xff\x8a?\xa9\x85\xeb\x9d\xe8G\x12\x12\\h\x84\xd2\\\x98'p\xfa\xa6t\x9a\xb9\x89/40\xe9/4pI04n\xa0\xbaK\xa5\xc5\xd0\xc0'\xc7\xd0\x18\x96t\xb1\nu\xcf\xceJ\x97\xa1\x81\x88\xb5\xbd8\xe3&\x9aFC\x03\xd9\x19\x80\xa8?X0\xb1\x86\x06J\x87\x98$\x1b\x1a7Xob\xda\x8d\xa8\xbc\xfb\xfc\xea\x14\x9f|C#\x9a\x82C#U\x0bs\xd3qh\xe0\x93rh\xa4\x96\x16\xd1f\x8b\xa5\xe9\x18\x8b\x8b%\xeb\xd0\x88\xa6\xec\xd0H\xad~r\xfa\x0e\x0d\\\x12\x0f\x0dd\x11\xb1\xac\x7fJ+\xd2\x93{\x04\xc511+\xc5\x87\x06&\xd1\x87\x06Qq1\xf7\x19HV\x1e6\x01HP\x9c\x99\xd3S\xd2\x80h\xc4\x92\x81h\x8cj8?%\x88\xc6\xc2\xcb0>I\x88\x06\xa5\xd5\x80\x9e0$*O\x0b\x99\x956D\x03\xa9G \xe8\x12P\x89D4\x90\x03\xca\x82\xaav@\xa7\x16A\x89\x1a\xa4\x1f\xc1\xe5\x8c\xe8\x81K3\xa2q\x0bJ\xa1$\x1eA \xd4\xb3p$\xfd\x08J\x12M\xa7\xe8D%\x1a\xb7\xa4ZT\xea\x12\x944\x9b\xde$\x9e\xc0\x04%\x0e\xa7\\T\xaa\x13\x0d\x82B)\xab\"$(\x9f\x9a\x02%*\xf0\x13kC\x89P4\xd0\xe9P4\x90\xfa\xa2\xd4}\xc1\x04)\x9d@Z\x9a\x14\x0dt\xb2\x14\x0dr\xca\x14\x0d\xa4\x02\xb1{\xd7X\x06\x10\x8d\x96\x9eJ%(O\xdd\xaa\xd2\x12\xaah \xd2\xaah\x88\x88O\x97F\xd0\xb3K\x03\xa9ot\xb0\x02\xac\xca\x17K\xbd\xa2AI\xc0\xa2\x81\x1d\x82i\xc9X\xbc\xe2\xfa\x94\x1cA\x8f\x0bzb\x16\xaf(\x9d\xb0\x05\x9b\x9eE\x83\x9c\xa4\xc5\xff\xf5>yK8U\x8bFR\xc2\x96p\xd5Qi[4\xa8\xc9[\xbc\x82\x06S5\"\x85\x8bFR\"\x17\x7f \x8a\x8e\xbe\"\xc2\xe9\\4\xd2\x92\xba\x04+\xc37\x81\xd4.\x1ai ^\x8eF\xab\n{4\x8e,\xd4%w)ZB~\x97I\xb4\xa37\xaf\x9fL\xcb\x9eS\xbd\x8cW\xdf\x9c\xea\xc5\x01\xec\xdaBu\x86\xd5\x1d8\xa7zA8\xb9\xbaxld\xe7V\xbcSkN\xf5bAuV\x0d\xde\xe4S\x9cTI\xce\xa99\xd5\xcb\\\xa7\xd3\x04g\xd3E\x9cL\xf1\xce\xa59\xd5\xcb\x12\xce\xa3\x14\xa7Q\xb4\xb3hN\xf5\x92S\xbd\xa0wI$gN}\\\xca\xa9^r\xaa\x97\xa5\x1c,\x91\xbe}Q\x87J\x82#%&I\x08\xc5q2\xa7zI\xc9\x96\x12s|\xcc\xa9^\xf0\x8e\x8cH\x07F\x8c\xe3\"\xcea1\xa7z\x81D\xc7C\x82\xc3aN\xf5Bp\x18\xcc\xa9^&\xa0:\x00\xe6T/.q9\xd5\x8b\xf3\x05\xa4\x13^N\xf5Bs\xa6\xcb\xa9^:\xe4T/\x066m\xca\x11\x9fwt\x8c\x1e\xf3\x81{f\xaf\xf9{\x97 E\x1c\xa7\xd0\x18NK3\x13\xa6\x80\x87;BM\xa4\xa2\xf4`\xdep\xa5My\xdd\xe9i\x942\xc5\x88q\x90`GIR\xde\xea\xc7\x94\x10{\xd6\xfels\xa4\x0cU1\xc4\xa80\xfa!3\x1a\x95=A\xed\x9f:%Y\xd6\x86&\xc8\x1c\xafCA\x9b^\xd8\xa2\x87\xa1\x7fG/\xb4F\x95\x99\xf0\xb4\x0d\x19Ks\xb6\xcd\xb0\x1bQ[\\\xcb\xea\x8e]\x0d\xc2\x99\x87J\x15\n\xe2\x1f\xa7A\x8d\n>\xfe\xa8-\xb8e-v\x1c\x85A\xacx_\xd1y%\x9a\xa0\x05u\xd1r{/\x07\x07E\x19\xd4\x06\xec\x9f\xd4\x86\xb2P\xb7\xae]cx$\x0d\x18\x1b\xcaB?\xf8\xf7\xfd=o`\xcf\x8a\xe6\xa1h\x8a\xda\xe9\xf23\xc8\xab\xf4\x99h\xe6\xb8DVA}3\x0f\xa6Y\xfb\x8c\x97G\xb4\xe7M[\xb4N\x17\x1a\xa9\xd8\xb3\x0d\xafj\x8f\x1f,mp\xf5\xd2F\xd4Z\xf9ge/X\xd7E\x05\xea\xf7\xa22\xbc\xc5c\x89\xbb\xa2:\x9bp\xf2\x13\xcb\x16c\xb39\xbe\xd4\xb1\xd1/XQ=\xf8TlxG\xb9\x8c\xba\x00h2\x97\xdc\x1e\xb1 \xdbZ\x13\xadA\x93\xbfz\x06\xd4H\x0e\x82%\xa3\xd7\x94(;\xc6\xf0a\xf4\xd3\x8a\x073\x96\x95i0\x99\x06\x13\xb5\x01\xe1f\xaaL\x83\xc94\x18\xdf\x93\x99\x06\xa3\x90i0\xc7\xc84\x98L\x83\xf1!\xd3`2\x0dF!\xd3`2\x0d&\xd3`2\x0dF#\xd3`R\x98$\x99\x06\x93i0=2\x0d\xe6\x18\x99\x06\x93i0\x99\x06\x93i0\x99\x06\x93i0\x99\x06\xf3\xcf@\x83!\xd3E\xea\xba\x0c\x90E\xea\xba\x1c\xd1D\xe4\xe3#\xe6\xcb\x88\x1d\"\x1f7\x7f\xff|I!]\x85\x87\x18SBd%\x87&\xde\xa3Z\xf7\x08\xda\xb2\xc2\x96\xac\xaa\x16g:\x1a\xc1Y(\x06q\xe4.g\x8e\x84Q\xad\xb5\x11\xb6\xaeK\xb4 Vj\xe5\xcd\xeb'\xd9\xe4\n\xd9\xe4\x1a\xbdo\xc4\\\xd9A6\xb9f\x93\xab\xf7\xc9lrU\xc8&\xd7cd\x93k6\xb9\xfa\x90M\xae\xd9\xe4\xaa\x90M\xae\xd9\xe4\x9aM\xae\xd9\xe4\xaa\x91M\xae)V\xcblr\xcd&\xd7\x1e\xd9\xe4z\x8clr\xcd&\xd7lr\xcd&\xd7lr\xcd&\xd7lr\xcd&\xd7c\x93\xeb\xd4\xb9\xdaex\xfds\xef\x0bm\xcd\xaf\xac,\x07\xee\xcf\xf6nU\xacul\xff\xf3\xe2Rev`\xe2\xd0\xdd^\xf8\x8e\xec\x7f\xb9\xe0\x15\xacYY\xf2\x8dN\x9f\xcb*}\x0d\xa3}\xdcO\xf4m\x95\x0ez\xa0\xafU\xd6u\xd5\x1e\xe4\xd2\x06\x17\xc5\xf9\x85 \xfa\xde\xc9\x1b\xc6\x8e?g\xadNQ!\xb7\x02\xe7\xc6\x11\xd6\xcc\xb6E\x0bEe\xc2\xf2\x97\xd7\xd0r\xe1\xb4\"\xf7u7\xbf~\xb6\xb6\xe4\x90\x9b\xfc]\x98\xe9\xb4\x1a\xeb\xe6\x8cm6\x0do=O\xa1\xee\xaa0\xd7=\xe0\xf8\xe4\xc8nn\xff6M!t\xcf\x7f\xddh\xe5\xfd+\xac\xf8\xfa\x02x\xb5\xae7\xeaFYMR\xee\xc5X\xf6N^\xb5\x87\xf6l\x7fX}\xe4\xde\xdc\x9e\x11\xed\x02B\xc3\x800\x86\x02N\xc3@\xd02$\x18F\x83\xc2\xdc\xb7c\x81#\xd6\xd2\x06R\x88\x1bI!\xc1P\x1a\xae\x00\x13\x17hc),e0\x85D\xa3iP\xa0T.\xdap\n\xf3\x8d\xa7@6\xa0\x06E\x19\xc3\x0e\xc9\x88\nK\x1bR\x81hL\x05\xaaA5\xdc\xb3;c+\xd6\xa8\nK\x1bV\x01g\\\x85%\x0d\xac0\xdb\xc8\ni\x86VX\xca\xd8\nI\x06\xd7\xf0p\x18d\xd4\x89T\xe1\x06\x0c\xafp\x83\xc6W\xb8\x19\x03,\x10\x8d\xb0\x90f\x88\x8dM\xc18c,,k\x90\x05\x82Q\x16\xe8\x86YH0\xce\"\xa6\xcc\xaf\x11\x06ZX\xc2H\x0b1C-\xe0\xb7g\x08\x83-\x10wqd\xc3mP\x9a2\xea\"\x8c\xb7@(\xe5\x82F\\ \x19raic.$\x1at\xc3\xfd\xaa\x8d\x1bu!\xdd\xb0\xeb\x95'\xbf\x183\xee\xc2b\x06^\xc0\xdb)\x01c\xe8\x05\x9a\xb1\x17b\x16\x88D\xa3/ \xe4\x06\xae?\x172\x00C\x92r\xf1\x86`@\xd42\xc1 \x0c\xa9Fa\x08[\xbeP\xc6aX\xd8@\x0c\x0b\x19\x89\x01\xd7cf\x1b\x8b\x01o0\x06\xa4\xd1\x18\xd0\x86c\xc0u(\xba\x01\x19HFd\x08\x19\x92a)c2P\x0d\xca\x90hT\x06\x9aa\x19\x10\x8d\x10\x19f\xf1\xf7\xf1\x86fX\xd0\xd8\x0c\x98\xa2\x05F\xd9r\x86g\xc0\x18\x9fa\x86\x01\xda+P>\x182B\xc3\xd2\x86h\x88\x1a\xa3!\xd5 \xed\x95\xa6\xcf\xf6\xe1k\x8e\xb8a\x1a\xc2\xc6iH2P{E\x05\x0d\xd7\x90j\xbc\xf6J\xd3;\xe4P\x06\xe4\xc5\x8c\xd8\x802dC\x821\x1bh\x06mH1j\x03\xd9\xb0\x0d\xe1Y\x04\"\xc6F \x18\x1c\xb1FnH1t\x03\xd5\xd8\x0d\xe1\x8a\xa7\x18\xbd\xbd\xc2\x06&e\xec\x90\xc1\x19\xbf\x83\x03\xa2:\x0f\x1b\xc0aY#8\xc4\x0c\xe1\x106\x86{\xdfI5\x92\xc3\x82}\x97`,\x07\x92\xc1\x1c\xbc\x1b\x94\xfffE\xc97a\xbb\xdd\xaa\xaeK\xee\xbdT\xc7\xden\xe8/\x19+\xe5\x06>]ps\xc75\xcc\xa7.{\xf8\x8a\xf3\xca<\xedo\xe1\xa6\xdeu \xc5\x95\xe9]\x1b\x02\x9c\xc1\xa8\xc1<\xe2\xab%\xb6\x06\xe6C&\x94s_h\xfdw\xefk\xf7u9\x1fv\xe1\xc6\xcd\xff)\xc3\x8f\xfb\x15\xc4-\x19\xaf\x0e\x9e\xd8\xda\xa0\xb8\x10\xdf\xbdz\xf9\xf4\xec\xed\xbb\xc7\xef\xde\xbf={\xff\xf2\xed\xebgO\x9e\x7f\xff\xfc\xd9S\xf4\x1b\xf2_\xc4\xc7\x9f\xbf\xfc\x01\xf9|P\xb8ub&U!\xe4\x85\x8d\xd2'\xb6\x13\xe8\x0f\x99nl\xf6\x1b&\xf1\xbe\xfd\xed~Q\xadK\xff\xc2\xdf\xf2r\xfb\xa0\x8f%\xef\xe9\x04]8\xef3\x9d0\xff\x16\xaa6\xfdd\xcf(\xa8\x05+M\xe2~(\xda\xf6\xa0\xad-\xfe\xa5h\xc07\x18\xc4%\xf7U\xb4/\xdd\xec\nt\xcf\x8d\xd8\x10\xc3\xbf\x0b\xde\xecZp'\xfc\xef\xd1U <Bg3\x1avuU|\xe4\x0e\x1f\xf9\x1e\x88\x06\x06\x82\x8e\xa0\xffj\x9fx\x05.\x0e;V=h8\xd3\x01\xf5\xd5\x8e.\xa6#\xc0\xe8 \x0c7Bx\xb9!p3u\xb4\x9f\xed+\xd9\xbb\xd9\xf6?\xb6\xc5y\xc5\xc4\xa1\xe1p\x9f_\x85\x8f\xc1\xef_\xd7\x8d\x90\xab\xcc\x9f\xf8\xf5\x8a\xb5\xdc;y\x03|\xe2\xab\xb6\xf0\xa5\x17\xd0H\xa9\xb1\x11\xeb\xac\x91\xfd\xad,\xaa\x8f\xa1\xa9g}h\nq}\xa6\xce*k\xb1t #m2\xfd\xbc\xb3&|\xc7\x8a2J\x1f\xb0\xa2\xc0\x88\xf2\xd7\xd9\x1b\xce\xa1GJU\x8dX\xbb\x10h\x83]W \xf3\xab\xbbT}\xae\x18\x9d\xe8h\xc6\xd4\x1eO\x0d\x82o\xa1i\xb1l\xeb\x9c@1H\\s\xa2fT\xf3D\x80f\xa4\xf7\xfa\xca\xe8;\xdd\xde\x9d\x1f\xaap\"\x1c\\\x82\x1e\x92\x826L\xf0\x07R\xd6bJ\xd2\xb9}\xfc*\xda\x15\x95\xce\xff\x13\xea\xca\xe3\x8d\xa4\xa8\x95\xd1\xbf\xe4\x82\xc7\x14\xd4g\x0dA-\x9a\xfd\xe3\xa3\x85q\xf0\xe7\xe3\xf4SS,\xb4\xe4M2\xa3\x04\x07&\xb6U\xc0!wTQE\xcaae<\xd9\x8a\x86\x16\xa0\xc9\x16\x1dA`\xddp&\xf4y\x17\xb1\xec\xa1\xf4\x05H\x9d\x81)S\xecF\x1f1 ,(\xaa\x05\x9b\x85\xa68\xea6\xea\xcf:\x0f\xcd\xc6\x9f)\xa8G\xbf\x1b<\x01E\xe1\xdf*b\x9b;eO\x8f\x1d\xbb\nd\xec\xe9q\x83\n\xb0E\x18\xf5+\x9b'k\xa2\x91\xa80=;\x8e\xb3\xf9\xf0K\xde\x18U\x92u\xa3\x998\x9f\x83\x8a\x06%qjj\xc3\x8a@\x94\x13\x8b\xa2\x92\xa3\xad\xe5G\x04\xe6\x81\xa6\xb5\x92\xa2\xa2\xe2J<\xec\xe5\xea\x10\\i\x00\xaf8\xec\x8a\x03D\x05\x0fJi\xc7\xa12\"\xa8?\xb8F\xe5\xa7\x08\x01Q\xb7\xd4\xc6\xad\x97]Q\x9d\xc9\x83\xeaY\x7fP\x9d\xb1\nc\xeb\xe9\xf8\xea\xd1u\xcb\xbdV\x9d\xa0a\xc3\xd7%k\x02wD6\xc1\x96y\xda\n\x0c\xc6\xc6(\xaa5\x97\xabe\xbb\xab\xdb\x07\xed\xe6#\xfc\xfa\xf4\xb7\xbfw>\xdeo\x04\xea\xea\xec\xa2.7g\x0d\xdf\x9e\xad\xebCu\xd3\xfb\xb9X\xfa1}9\xaf\x1c=\xf6u[\x88\xe2\x92k\xc7\x90\xe1V\xec^\xdb\xd7\xa0\xbbu\x0b\x08\xac\xf7{m\xd4\xe3W\x827r\x8b\xab]V\xdc]\xacWN\xb1\x89\xdc\\\xb8\xfd44\xbc\xde\x1a\x1a\x08}\xf6\x1a=\xccSiY\xb4b\x94\xc0\x11\x8aM{\x02\x9c\xad/\x8e\xdd\x00\xe4\x1e\xc1\xaf\xcc^D=m\x15\xc7;\x98\xa1\xd3\xf9\xed\x0cN\xf4\x9d\xcc\x13\x10\xf5\xb9\xbekU\x16.e\x9d\xaa\x05s\xdb\n\xb5\x83\x91e\xc0\x85\xbfv\xafUW\xb0\xf6b\xc88\xf9\x16\x0d\xf0+=\xb7\x98\xd4u\xb5J\xd0\xe7\xd9W\xbe-Y{!\x95a\xe3#\xf9\x18\xfdL\x8ex\xbd(\x18\xd3\xe8\xe83'\x9a\x07\xach\xa9\xda\xd1\xc9)e\xcd\xca\xf5\xa1\xec\xec\x85\xdb\x83<\xfc\xbb?x\xa8\xfaI\xa3U\xba\xab\x0fB\xf6\xc9Fo\x03\xebK>\xcc\xbawj\xbc\xbbdU\xdd\x15h\xc6w\x85\xee\xaf\x8e;\xc4\xc9d\xf5+Z\xb9\x0d\xdd\x14\xc2r5\xd9`fs\xca\xfbtQ\xb7\x83\x04\x8f\xee\x8f\x0e\x9b\xb1hG\xac\xe8A\x8fPU\xeb\xab\xe0\x94\xb4):\xf3\xbf\xb6\xf0(j\xaf\xfb\xab\xa3\xf6;\x85?\xd7J\xad\xfb\xfa\x13\xd7\x1b\xa2\x15\xef\x9a\x8bo\x94I\xdf\xdbm\xad)@U\xc1\xfd\xb5\xdd\xa1\x14\xc5\xbe,\xec46\xfc\xf6\xd1\x0b\xa3Q7\xf0\xfd\xeb\xc9\x99&_\xad\xf6\x11\xdc\x80?=j\xef\x8cw<\x93\x8d>3\xf0\xda\x1b\x85@\xed\xffl\xfa\xbd\xcb\xafN#x\xe4\x88\xc4D\xe5W\xe2\xcc\xeb\xc2\x15\x9dj\xa3\x84\xddQU\xff\xc77\xd1\xdaR\xd8U_\xfe\xaf\xe1\xbc\xb3\xb6\xd5\xd7\xce\xaf\xd99\x7f\xc3\x7f:\xf0V\x9c\xea\xdf=\xc2\xfa\xe4\xd1R\xacT$\x87]\xdd\n\xe0\x8a9\xae(\xe7\xa7\xf0\\\x0c\x0c\x9e{q\x0d\x85\x8f\n*\xe7P\xae\x86qU\xc3\xaen\xb8\x9d\xb3\\3\x9b\xea\xab3\x95\x19X\xb3b+\x96\xbe\xb2/\xec\xdd}\x9f\xe0\xd5N\xb3\x83\x98g\xbe\xfa\x0e\x15\xad66gz\x00z\x1e\xff\xc4\xe4\xceL\x9c@!Z\xeb\xf0\xd1\xaaYT[\xfc\xd4\x15\xd9\xa7\xa2\x1d\xf7\x0f_E\x94/o\xef\x90\x8a\x0d\x8d{\xe4\xc2j\xd1\x87\xcb\xed~\xc8\xd1r'\xbf\xe6h\xb9\xb8\xfd\x16$8\x85\xea\xce\x9a\xa3\xe5\"\x1c@\xc5\x12\xce\x9f)\x8e\x9f9Z\xee\x82N\x9e\x14\x07O\x92sg\x8e\x96;\xd7\x913\xc1\x89s\x11\x07N\xba\xf3f\x8e\x96;\xc7Y\x93\xe2\xa8\x99\xe0\xa4\x99\xa3\xe5\xe6h\xb9\x91]\x12\xd9\xe92G\xcbE9X\xa68W\xe6h\xb9\xbe\xc7\xa2N\x94\x04\x07JL\x9cU\x8a\xe3d\x8e\x96\x9b\x12p6\xe6\x18\x99\xa3\xe5\xe2\x1d \x91\xce\x8f\x18\xc7G\x9c\xd3c\x8e\x96\x0b\x89\x8e\x8d\x04\xa7\xc6\x1c-w\x01\xa7\xc5\xa8\xc3b\xaa\xb3\xa2w\xdd\xcc\xd1r\x8f\x90\xa3\xe5\xe6h\xb9\x13,\x11\xb9\x14\xebHHv\"$9\x10\xe6h\xb9\"\xcdQ0G\xcb\xb5\xb0\xabp\xcf\xf0\xed\xf7J\x0f\xd4\xfc\xfa\xe8\xd8\x85mt\x8c6\x8eo\xbcb\xabR_=i\xd3\xaaT\xdb\xc08\xaeb\xe2j\x82\xac+(.\xa8u\xe3\x91~w\xf0\xb7\x86\xfft(\x1a\xbey\x04[V\x8e\xac\x83\xce\xbb\n[\xe4\xde.~\xfa\x91_\xfb\x8a>\xb14\x1b\xd323\xb3~\xc3\xc5\xa1\xa9t\x94Sm\xed4\xd6\xbd\xce\x0e\xad\xee\xef\xce'\x17]\xaa\x06\xb2\xa21\xdb\xf2+\xb9\x12\xd7\x95:\xe0\xd7\xdbm\xcb\x95\x03\xc9\xb8\xb80\xb0?\x0c\x02\xf3\xc22\xda\xf2\xdc\xe68\x94\xa8\xcb\xe7\xd3\xe3\xe4&\xc5TF\xa9\xb2:\xecxS\xac\xed\xdf\xd4\x04a\xe8\x1b\xfa*\xeb\x82WV\xf1\x87\xaa\xbb=\x9cl\xb4\x9f+i%o\xdb^\x85\xfa\xbe\xed\xd0JU\x7f\xe4D}\x8e\xc5\xdf\xb0r'\x96z\x87z\xcbbW`\xb5\xab\x9e\xb5\x14\x08\x9f\x01_\xdf,\x0f{\xb0\xe1\x86\x1c\xca\x89\xc5Y\xdf#\x0d\xff\xf4|\x0b%\xdf\nKx0\x0c\x08\xbb\x9bU\x97\xe2z\x80\xe8\x8fH=\xaf\xae5\xd9\x8d\xed\xf7w\xa8\xc5!\x0d\xa1\x7f?\xa4\xcb\xc1\x1bR\xa3\xaa\x87\xd6 \x9a\x03\x07\xf9?E\xb5)\xd6\x8a\xa5f\xcccF\x83\xeaA\xd3\x91\x86\xe2\x8aj]\x1e6\x93\xbd*\xd3_\xe9\xec\x93\x93\x16S\xd6\xee\xc1\xb5\xb9\x9c6G\xac\x9e\x91\xb0\xf7\xcf\xdbIkM\xaa\xa0\xb6\xf7\x0do\x0d/A\x0d\xaf~<\xca!wjFSq^\xd5S\x86\xac\x1d\x8d\xe3Oh\xcd\xccm\xd8\xa9\xa3\xb8\xa3\x01\x1b~\xc9\x9b\xd1\xab\xa1\xc63OO\x1b\xae\x18\xd0X\x1a\xee\x1e #9\xf2\x1b\xdcp.\x9b\x0do\xa6G '\xef\xf77\x8bj#=V\xfd\xc3\xbfw\xff\xafb}\xffC\x8b \x06\xaf\xefb\xd7\x0f\xa8\x83\xd5\xb6V]O\xaf\xcd\xfd\x0f&V\xb8m|wD\xf8_\xd8:\x7f\xee\x01\xe1}D\x94$R\x1c.\xac{\xd4\xa4\x82\xb1I,\x1d\xd0\x9d\x1e\xce\x1d\x17\xcc=\xa8M\x88j\x14\x10,\x1d\x84F\x01\xadUH\xe5\xea\x04\xe4\x91\xc2\xb7/\xca\xd7\x892v\x96\xe6\xec\xe0Y;\x0b\xf1v\xd2\x98;\x01q\xc4\x80\xed3\xd9;K\xf3w\x88\x0c\x9e\x859<4\x16\x0f\x91\xc7\x13\xea\xc3\x1d\xc3\x07\xcb\xe4Y\x98\xcb\x83b\xf3,\xc8\xe7\x99\xcb\xe8I\xe2\xf4,\xc4\xeaI\xe1\xf5\x04\x84\xa1C\xb2\xdf\x00\xb7\xe7\xe6\xd8=7\xc2\xef\xa11|\x16\xe7\xf8`Y>\x8b\xf2|\xf0L\x1f2\xd7\x87\xce\xf6\x89N\x85\xb8\xe0\xeb\xb3\x19?\xd1\xc0\xeb\xa8\x0d\x15\x82\xf7C\xd9u\x91\xb9?\xa1E\x10\x1dn\x1dW\xbe\x05\x19@\x14\x0e\xd0\xc2,\xa04\x1eP\xa8\x07\xa1B\xac'r\x81<\xd2\x04*\xbc\xfa2| 4\xa9\x05\xc1 \"\xb1\x82bQvS\x98A1\x99^\xfb\xd8B\xfc \xba2\xf1\x1c\xa1X\xdd\x12xB\x89L\xa1pd\xe78[hY\xbe\xd02\x8c!D\xdf\x98\xcd\x1aB\xf3\x86p\xcc!,w\x08\xd1q\xe8\xfc!\n\x83(\x18(}\x11\x16\x11\x91G\x94\xc6$\"q\x89bJ\x0f\x07G\x8f\xbc\x8b\xe7\x14-\xc7*\x8a\x16\xca;~\x96\xe3\x16!\xd8E\xe9\xfc\"\x8f8\x11\x0d\x85\xbe(\xc7(\xc62J\xe4\x19yd\xc5C\xa0\xc7\xb9F\x91\xf0\xe7K\xf3\x8d\x16g\x1c\xf99GK\xb2\x8e0\xbc#:\xf3\x88\xc4=J`\x1fQ\xf9G\x91\x90\xe6\xe1\xd2a\x19!X\x16R\x02\x0f\x89\xc8D\nT7\x85\x8d\xe4\x11\x85\x08b\x9e\xc2H\nt\xf9x\x00\xf3\x05YI\xd1\xe0\xe57\xc1LZ\xaa/\x12\xd8I\x14~\x92{{\x10\nL.\x9c\xd6\xe6!p\xb7\x00)!\xc9U\xe8q\x8f<l@\xf2P8r\\\xc9\x93B\x91\x93\x03\x91Go\x8dBA\xc8\xa9!\xc8I\x01\xc8i\xe1\xc7\xd1\xc1\xc7\x13B\x8f\x87\x02\x8fG\xf5\x87k\xec\xb9!\xc71\x01\xc7q\xe1\xc6\x17\xaa\xd0R\x81\xc6\xf1a\xc6\x87\xe5\x9aU\xf0\xee\xa9Y\x01\xc6#\xf1C\xc5|\x1b{4\xb0x\xb4)\x01\xad\x15X0\xa4x4\xb2j<\x9c\xf8\xc25[8\x908:\x8cx4\x888\xbd\x9es\x03\x88\xe3\xc3\x87\xd3\xcb\x16l\x83\xc5\x02\x87c\xc3\x86G\x83\x86\xd3+\x98\x1c0\x1c\x17.<Z\xa0xhI\\{,\x19&|N\x90pL\x88p\xb4R\xc2\xc1Z\xa9\x8a\xa1\x84\x06\xc7\xac\x12\x80\x0e\x0c\x1e\x0b\x0b>\xaa\xc9\xfc\xa0\xe0\x0b,T\xf8p\xe0\xb8V\x00z(p\x1d\xee; oV \xf0\xa8\x8e\x00\xa5'@\x85\x00\x8fvx\x0b\xbc2\x01\x1d\xfc{\x18\xdc;\"\x10\x1d\xde\x1a\x17\xf8\xfb\x86\xaaM \xf9\xad\xe7\xb2\x88\xc0%\x02~\x93\xc2}\xdf\xa0bP\x81\xbe\xbb@\xde\x11\x81\xd10\xdfQ\xd5\xa0\x82x\xa3\xd4\x81[\x13\x80\xa4\xb4\x85\x83w\x07Bw\xa3\x03wGu\x81\xab\xdd\x82!\xbb\xc9\x01\xbb\xd1\xe1\xba\xc9\xc1\xba\xa3\xca\x89\xef\xa6b\x11:\xdbe\x83t\xd3Bt#\x02tk\x15\xf8\xc3s\x07\x83sG\xf5\xb7H\x90\xd3\xc5\x82rSBr\xc7\x87EZ8n\x13h\xd9!\xcf\x1f\x8c{\xc9P\xdc\xc8@\xdc\xe40\xdc\xc3\x90\xdb\xee\xca\xf9\x83p/\x1b\x82\x1b\x13\x80{\xd9\xf0\xdb\x88\xe0\xdbI\xa1\xb7m\x98m\x97\xbch\xe0\xed\xb4\xb0\xdb\xe6r\xdb!\xcf\x1ft\x1b\x1dr\x1b\x17\x04\x98\x1c\x03x\"-\x87\x00\xd6\xc8!\x80\xc3+S|\x86\xd7Hr+\xca!\x801\xceD.V \xd9\x95(\xc5\x91(\x87\x00^\xd0}\x88\xe2<Dr\x1d\xca!\x80\xe7:\x0c%\xb8\x0b-\xe2,Dw\x15\xca!\x80\xe7\xb8\x08Q\x1c\x84\x16v\x0f\x12(\xe7\xa0\x05]\x83\xb0\x8eA\x82\xe6\x16Du\n\xca!\x80G \xbb\x01\xe5\x10\xc0(\xe7\x9f\x14\xd7\x1f\xc8!\x80=\x88\xba\xfb\x10\x9c}0\xc1c)\x8e>9\x04pJ\x14\xdd\x98cO\x0e\x01\x8cw\xe6A\xba\xf2`\x1cypn<9\x040$:\xee\x10\xdcvr\x08\xe0\x05\xdct\xa2N:\xa9.:\xdeu3\x87\x00>B\x0e\x01\x9cC\x00O\xb0D8V\xac\xf3\x0d\xd9\xf5\x86\xe4x\x93C\x00\x8b4g\x9b\x1c\x02\xd8\x02\x13\x02x\x1cdp jt\x9c\x1e?5\"\xfe\x1cE\x14\x1c\x05\n\x1eNN\x85\xcav;\x9a\x11\xfb`\x8a\xa29DB\x86.\x18J\xf1\xe1\xc0\xbe\xacE\x06\xc3*>\x1dX\xa3m\x84Ek\x94\xf5\x06X\xb45\xf7]Kh\x9b5+\xads\x11\xb0J_5i\xfa\xc6\x89\xbe\x91\xd3\x8a\xd4WG\xeb\xbaj\x0fr\xf9\x86\x8b\xe2\xfcbJ\x1c\x18\xda\x99\xcfY\xabi%\xa3<\xc2zE)Z(*c\xa4\xd7\x81\xb6lI\xdd! \x07\x957\xcf}\xb6\xd1 \xfbV=s\x94\xd1B\xdc\x81y2\xc6\xca\x8a~\x00\x10\x1f\x81\x91\x8fM0v\xa5\x06\xe2F\x10\x90\x17k\xfd\xb3\x93\xef[V\x98\x8dD9\x8eh\x89\x93\xe5\xdf\xe8\x8f\xc7\xf5\xedW\xf7\xe8\xfb3\xaa\x8b \x15\x87\x9c\xb44R\xea8\xf2\xc62\xfb\xda\x8e\xd4g~l\xf8\x9a\x17\x97n\xee\xe1\x91\xc0\x80\xd2\xfa\xd9\xa4\xdfJh\x8d)F\x8c\xe6Fi\xe7\xb6\x0b9[\xad\xae\xfd\xf4-\x00\xb6Vd>\x13\xf8\xd8\xbfB\xd7\x9f*}\xc6\xab+\xdew+csPV\xb7z]\xb0\x8e\xde\x13j\xa9\xcb!o\xa6\xdeJ\x89\xfe\xefF\x9at\xc5JV\xad#\x17\xf6\x0bL U\xedu\xd7\x04l\x9f\xd1\xab\xcdL1\xd8^\xf2\xa4.\xaa\x01\x8bNu\x88\x9eyU\xd5;\xbb\xa4\xc9\x06d\x95)\\\xc8\x9a\xf3\xf2\xd5\xbbg\x8f\xd4\xa9\xd0\xb0\xab\xba\xc5\x90U\xf0\xbc\x12f\xe3\xd9\xd9]\xda`'0\xbbR\xc3*\xf2\x0fW\xeb\x1d\xd6v\x1b\x1d\xd9 \xcf\xeb\xf3Zm\xf9R\xad\x18\xfd \x1ar\xa3\xe4\x17.Y\xa9\x02\xe8\xd7\xc3\x81\xc6\xaf\xd6|\xaf#\xf4;\xc5\x15b`\x11q\xd7\xc6\xf4\xd4\xe9\x16\xdcL\x0eFw\xad\xce\x8e\xdf\x1e\na\x03\x9e;\x85\xadK\x15\xe5\xbf[\xa2\xa7j\xe8\xb7,\xc7\xddm\xa4\x9e\xc1\xdef\xb8#\x1d\x05Y7G\xfb\xe3=\x87Fp\x8c\x85G\x97M\x16\xe1'$\xa1\xa8\xc4^[\xdb\xa8\xaa\xff\xe3\x1b,]\xca\n\xb3\xf0t\xd9+`\xcf\xdaV\xdb\xd7\x87\x19\xfd\xf5\xef\x1eaz\xb7)\"\xe9-\x9e\x8b\xc1\xb9Oe\x12\x08\x04yk\xb8\xb2\xf6W\xb5\xee\x1c\xc6\xba\xef\xea\xf9\x8ao8S\x993X\xc5]\xa0}_\xe6\x85\x81\xf5\xdbW\xdf\xa1\xa2\x879\x0b<\x8f\x7fb*\xc0\xfd \x14\xa2\xb5<\x8bV\xb1_ud\x02u\x1e\xf8TL\xdc(LE\x8ez\xc4\x9859\xd8\xb6G \x94.A\x0f\x9d\xa7\x9f\xcc\xa5\xd4\xc8\\\xcae\x16\xfa\xcc\xa5\xcc\\J72\x97R!s)\x8f\x91\xb9\x94\x99K\xe9C\xe6Rf.\xa5B\xe6Rf.e\xe6Rf.\xa5F\xe6R\xa6\xd0\x113\x972s){d.\xe512\x972s)3\x972s)3\x972s)3\x972s)\xbf\x14.\xa53I\xf78\xa1~\xc8\xfcl\xec\xcd6]\xfc0\x07\xb76\x81\x1a\xf3^g\x9cV\x17x\xe7\x93\x9b.U19U\xc5\x0c\xce\x94\xfc\xff7\x9d\xf2\x7ft\x9d\xe3P\xa2.\x9fO\x8f\x93\xab\x94>\x7f;\x83\xea\xb0\xe3M\xb1\xb6\x7fS3\x84\x89\xcb\xa3\xef\xb2L\x06wm\"\xee\xae\x0f\xa7)\xfe\x95\xb4Rv\x9dN\x85\xfa\xc2\xed\xd0JU\x7f\xe4D}\x8e\xc5\xdf\xb0r'\xe6{\x87z\xcbbW`\xb5\xab\x9e\xb5\xbc\x08\x9fU\xdf\x99E\xde\xfc:\x92\xb6\xd7\x17I\xc3?=\xdfB\xc9\xb7\xc2\xb2 \x0c-\xc2ng\xd5\xad\xb8\x1e \xfa#R\xcf\xabk\x1d\xa7\x8c\xed\xf7w\xa8\xc5!7\xa1\x7f?\xa4\xcb\xc1\x1b0I\xcb/\xff\xa7\xa86\xc5Z\x85\x1a3\xf61\xa3A\xf5\xa0\xe9HCqE\xb5.\x0f\x9b\xc9f\x95\xe9\xaft\x06\xcaI\x8b)s\xf7\xe0\xde\\.7#\xaa\xcfH\xd8\xfb\xe7\xed\xa4\xb5&UP\xfb\xfb\x86\xb7\x86\x98\xa0\x86W?\x1e\xe5\x903\xb4B(\xce\xabz\x1a\xbe\xd0\x8e\xc6\xf1'\xb4f\xe66\xec4\xc3\x85\xa3\x01\x1b~\xc9\x9b\xd1\xab\xa1\xc63OO\x1b\xae\x18p[\x1a\xee\x1e #9\xf2\x1b\xdc\x04\xcck6\xbc\x99\x9e%\x9c\x81\x19\x7f\xb3\xa86n\xc8 \xe0\xe1\xdf\xc7\xc4\xe5\x7f\xe8o\xb8\xbc\x02\x06\xc4:\xb4/@\xcf9\x85=+\x1a'\xe1\xfe\xe94\xa2\xdc\x97D\xb3\xf7\x11W\x92\x88u1\xb2|P4D\xc5\x03\x8d&\x8f0\xf5\xe0\xec%\xf6\xc9\xa5\x08\xf2Qz<\x81\x1c\xbfp%\x97\xa3\xc5GI\xf11J<\xbdf\xf3\xe9\xf08E-I\x85\xc7\x11\xe1\xe94xCw\xf7\xc8\xc3\x90\xe0\x83\x0d\x18$\xc0/2\xcc\x83\xd4wD\xdf\x88\xd1\xde\xa3\"p}ai\xc2\xfb\x92tw\x14\xd9\x9dNu\x8f+&\x9d\xe6\x0e\x85\xab\xc7\x84I\xee\x0bR\xdc\xc3\x04\xf7p\xc5\xd5\x86\xc6]\xf3P\xf0\xd3\xa3\xdd\x83E\xcf\xd8\xedK\x91)\xbb\x93_3e7\xd6-{d\xcan\xa6\xec\xba\x91)\xbb\n\x99\xb2{\x8cL\xd9\xcd\x94]\x1f2e7Sv\x152e7Sv3e7Sv52e7\x85\xf5\x9a)\xbb\x99\xb2\xdb#Sv\x8f\x91)\xbb\x99\xb2\x9b)\xbb\x99\xb2\x9b)\xbb\x99\xb2\x9b)\xbb\x99\xb2\xfb\xe5Qv\xc7\x14\x12_\x99\xc7O\x8d\xca\xdc\xb3\x91n\xb8\xcc\xb7\xc5\xd6z\xd8'\xb6\x9d\x92\x87\\\x14\xae\x01\x9b\xf9\xbd}\xd1A\xeb\x1a\xe4\x97\x8d\xf2\xba:\x81^~\x97\xe3K\xe6\xb1\xcf\x96\xe8\xa5\x15p\x13\xdc\xae\x18')zY\x17\xe8\xeaQ\xbaQ\x989\x85dM\xd1JH$D\x85Y3\xbc\x12M\xd0\x12<3\x7f\xf3\xec\x88\x93\xeb\x86kz\xe0\x05/\xce/\xe6\x06\x8d\x04\xc0\xe4\xdd\xd6\xc0\\\x82ZLJi[\xc4\xfcK\xaf\xc4\xf2\x0f\xdd4\x10\x94&\xea\xfa#\xecK\xb6v^\xcej\xack\xb9\xea\xaao\x86\x13\xd6\x93\xf5\x12OZO\xd4\xcd\xb8\xa4V7\x87\xaa\xb8\xd2\xc9\xeb\xe5d\x88SL/*p\xb9Q\x15\xa2`\xe5Y$ *\xe0\x15C\xa9\xec\xe4\xeb\xa3\xa5\xd2\x10\xf0\xcc#\x01\xc3+\x98iws(\xb5U\xcfP\x04\x81 \x94\nn\xa8\xea\x81:\xd1\xcb8L\x1f\xbf@A\x11A\x1b5L\xc4\xc3\xe7\xd5\xbaQV!\x9d\xf2=\xc4:)Z5K\xfa\x9b\xab\xaf\x8a\x9c\x00\xears\xd6\xf0\xed\xd9z\x81\x18\xb7@\x98\xaeb1)5\xde\x8a\xa6P\xb1\xda\xf7u[\x08\xd9^\xc5vP\xc7{\xc3\x9d\x8a<\xf0\xac8\xf7\xdb'A\x1d7\xeb\xfd\xdef\xe7\x16\xbc\x91\xe7m\x1du\xdegf\xc4\x0e'\xc7&\xe7\x99,c\xcfm\xac\x86Y\xf7C\x0b\x0dh\xa3R\xc3K~\xc9*\x01;.\xd8\x86 \x86\xa0\xdc\x9a\x05R{5\x0cg\xf0!\x93\xd7<\x94BLtm\x1a[Q\xab\x14\xfce\xa9.Y\xa0-\xaa\xf3r\xb0\xd5\xb8\xe7Rm_0\xf9_'oWN\xb4\x9d\xb4~\xe3)\x0f\x83\x95\x9a\x8a\x1f(W\x0c\xbe\x81\xb2h\xc5M2\x0d]\xaf?t\xedj'\x0ff\x06\xa2Af f\x06b\x8f\xcc@\xcc\x0c\xc4\x1e\x99\x81(2\x03\xd1\x8d\xcc@\xb4\xc8\x0c\xc4\xcc@\xcc\x0cD\xe4.)3\x10;d\x06\xe2\x10\x99\x81\x98\x19\x88\x0ed\x06bf \xc6\x94\x9f\x19\x88\xdew2\x03q\x84\xcc@\xcc\x0c\xc4\xcc@\xcc\x0c\xc4\x11\xb0l\xb0\xcc@T\xc8\x0c\xc4\xcc@\xcc\x0c\xc4ye^\x92\x81\xe8\"\x19\x1a\xe1.\x96\xe1\xe0\x06\xa4\xcb\xa5\xe80\x97\xb6\x0e\xbe\xe1@\xbeZ0;AG\xbc0\xdf\x9d\xcb\x97\x92]\xde\xa5\x10\xf3\xc2gN\x8b\x94\xfd\xe0\xf3\xcc2\x1f\xa3.\xa2n\"1\x97y\xe0\xfafb\xa8\xb7H4;$+s\xd1\xaa\x11I\x9bq9\xee\xaa\x05\xe9\x9cqBg\x84\xd2\x19\xedT\x1a\xb1\xae\xa5A v\xa2ZB\x03\xcb\x96\xc2\xb7\x9c\xc6\xb2\x04O\x1c\xc5\x93D\xf2L\xd0\x11\x86\xe8I\xd6\xd3rdO\x1c\xdd\x93D\xf8$(\x89V\xed\xc5h\x9f\xf3\x88\x9f(\xea\xe7\x8d)\x01\xcb\x0f]\xa4\xd5\xb1\xfcQBm\xd1\x1cR,\xd9\x12h4\xd3\x88\xac0 5\x99\x86\x9a\xa0\xa0\xe5\xf4C\xa4\xa3\xc6: \xe7U\x02!\x95\xd2\xcf\x17%\xa5\xd2h\xa9\x8b\x12Squ^\x8c\x9c\x8a\xa2\xa7\xce#\xa8\xc2\xe0\x00q\xdc\xdfG\xb5\x1d\x9c4\x86s\xd5(\x00\xbc\xb9E<\xde\xf8k\x047B\xe1\x0d\x90Md\xe1\xe7>\x06\x07c\xd4\xac?\xaa\xeaQf\x7f\x8b.\x9d\x86Y\xa1\xbb\xcc\x1a\xb0gm\xabW\x1f\x9d\x7f\xe3\xa7\x03o\xc5\xa9\xfe\xdd#L\x9f\xfdD$\xf5\xc6s1\xb8bRY\x0e|4Jy\xba\xe4\xaagW\xb5\x8e\x92j\x88D\xae\x8e\xac\xa2\xf0\xcfTf`\xca\x8fMe]\x12\x00_V\x88\x01\xd1\xc6W\xdf\xa1\xa2\x87\xf9\x14<\x8f\x7fb*\xf8\xfe \x14\xa2\xb5\x94.9S\xea\xce\xbc\xd1,\x97OE{\x1cq?\xc2\xe0\x0e\x1e\xa5\x83\xa4\xee\x894\x07MPs\xbc\xc3\xb7\x17\x99\xdem\x90\xe9\xdd\xcb\x1c\xbb3\xbd;\xd3\xbb\xdd\xc8\xf4n\x85L\xef>F\xa6wgz\xb7\x0f\x99\xde\x9d\xe9\xdd\n\x99\xde\x9d\xe9\xdd\x99\xde\x9d\xe9\xdd\x1a\x99\xde\x9d\xc2\x90\xce\xf4\xeeL\xef\xee\x91\xe9\xdd\xc7\xc8\xf4\xeeL\xef\xce\xf4\xeeL\xef\xce\xf4\xeeL\xef\xce\xf4\xeeL\xef\xfe\xf2\xe8\xdd\x83D\xe3\x1f\xf9\xb5\xaf\xcc\x133\xb5\xb1K\xdb\x94\xf7\xc3<\xe2\xdaTj\xcc{\x9d\x11[]\xe0\x9dOn\xbaT\xc5\xe4T\x153L\xbf\x92Kq]\xa9\x13\xbeI\xdb^70..\x0c\x0c\x10\x0b\xe4e?\xba\xdaq^\xe78\x94\xa8\xcb\xe7\xd3\xe3\xe4*\xa5\xcfA\xcf\xa0:\xecxS\xac\xed\xdf\xd4\x0c\xb1f\x95\xac\x8f\xbe\xcb2Y\xe8\xb5)\xb9\xbb>\x9c\xec\xb4u\x16\xfbRv\x9dN\x85\xfa\xc2\xed\xd0JU\x7f\xe4D}\x8e\xc5\xdf\xb0r'f~\x87z\xcbbW`\xb5\xab\x9e\xb5\xfc \x9f\xf5\xdf\x99 \xdf\xfc:\x92\xb6\xd7\x17I\xc3?=\xdfB\xc9\xb7\xc2\xb2%\x0c}\xc2ng\xd5\xad\xb8\x1e \xfa#R\xcf\xabk\xe0l}\x01l\xbf\xbfC-\x0e9\x0c\xfd\xfb!]\x0e\xde\x90\x1aU=\xb4V\x13\x0d\xc8\xff)\xaaM\xb1f\x82w\xf61\xa3A\xf5\xa0\xe9HCqE\xb5.\x0f\x9b\xc9f\x95\xe9\xaft\x06\xcaI\x8b)s\xf7\xe0\xde|\xab2\xec\x0f(A#a\xef\x9f\xb7\x93\xd6\x9aTA\xed\xef\x1b\xde\x1ab\x82\x1a^\xfdx\x94C\xced\xd8\x86\xe2\xbc\xaa\x9b\x89\xd5\xc1\x8e\xc6\xf1'\xb4f\xe66\xec\xaa\xaeK>H\xff\xedh\xc0\x86_\xf2f\xf4j\xa8\xf1\xcc\xd3\xd3\x86+\x06\x1c\x98\x86\xbbG\xc2H\x8e\xfc\x067\xcc\xb9f\xc3\x9b\xe9Y\xe2mQ\xad\xf9#\xd0\xee6\x0f\xda\xcdG\xf8\xf5\xe9o\x7f\xb3\xa86b>>\xe2\xaas\xef\xd9\xf0\x9e\xd9\xb1\xaf\xdbc\xa7\x9dwWO\xd5#\xa0\x9f4\xf3D\xc3\xaa\x96\xa9\xabY\xdb\x8e#\xd5\xdesV\xf2_\xee\x99gG\x9e/\xf6\x03\xbf\xb05\xbd\x0d'\x97\xff\xa7\xe1\xdbGp\xef\xff\xffp`p5\xda9\x15W\xa7F;\xa7\xb6lv\xad\xbe\xf7\x8b\xbe\x08\x99\xd03B&\xf4\xe0\x0cB\x90 =\x99\xd0\xe3}2\x13z\x142\xa1\xe7\x18\x99\xd0\x93 =>dBO&\xf4(dBO&\xf4dBO&\xf4hdBO\n'&\x13z2\xa1\xa7G&\xf4\x1c#\x13z2\xa1'\x13z2\xa1'\x13z2\xa1'\x13z\xfe\xd9 =\xabz3\\\xe1\x8a\xea\xe8O^\xd2\xcdB\xd6/qu\xb6\xba\x16\xfe\xa0s\x9e\x1b\x8b\xe0]\xc5\xe8.\xc0~\xc0\xf2$\x1a\xf6\xc9e\x03u\xbcy\x14\xba\xa27)\xaaH \x9dD\xf3Oq\xdd\xe7\x97\x83\xb7\xbc\xb9,\xd6\xfctb\"\xb5\x18\x06\x1a\x98\xfc\xe4\xb6\xbf\x9a\x87\xa6\xe6a\xf3\x99\x90\x81\xf8!\xdb\x15U\x8d0\x13?\x96\xcfu\xb6bV\x81\xfe\xc3@Y:\xfa\xa2\x8d\x18\xa7\xd5*j5>\x17\xb3%\xab\x8f\x9a\x07n\xc7\xa0\x9c\xd0k\x95J\xcf\xfe\xbbuEz\xf1\xf6\xdb\xf0\x15\xd5\xa8\xfe\xc3P\x17b\x10\x07f\xd4\xc7\xa6\xfdf\xd2\xe3\xb4\"C\xfd\x8e\xd2\xf1\xb2\xd9<\x9b\xcd\x1d\xc0\\\xbbB6\x9bg\xb3\xb9\xf7\xc9l6W\xc8f\xf3cd\xb3y6\x9b\xfb\x90\xcd\xe6\xd9l\xae\x90\xcd\xe6\xd9l\x9e\xcd\xe6\xd9l\xae\x91\xcd\xe6)\x96\xe7l6\xcff\xf3\x1e\xd9l~\x8cl6\xcff\xf3l6\xcff\xf3l6\xcff\xf3l6\xcff\xf3\xbb6\x9bk\x03\xa4\xbeI#\x19\xa0\x02\xf7\x15$\xfbd\xd4\x02>y\xfdf\xad\x93$\xb3\xb8\xb6_\x07\x0d\xe2\xcf\xd4#\xc6\xd2}\x13~\xd3\xfa\x03\xe6\xb7\xcf\xd6\xcc}\xeb\xe4\x0cK-\x18r\x0e\xd4\x034\x9a\x86\xd6\xee<#\xba\xe9\x02)$\x8dl+\xcf\xb6r\x070w\xad\x90m\xe5\xd9V\xee}2\xdb\xca\x15\xb2\xad\xfc\x18\xd9V\x9em\xe5>d[y\xb6\x95+d[y\xb6\x95g[y\xb6\x95kd[y\x8a\xb99\xdb\xca\xb3\xad\xbcG\xb6\x95\x1f#\xdb\xca\xb3\xad<\xdb\xca\xb3\xad<\xdb\xca\xb3\xad<\xdb\xca\xb3\xad|Q[9:\xfa\xb3\xb5\x01*\xcb\xb4\xb5\xc2&\xd8\x89\x11\xee\xd3\xfaS\xda[\xda\x9a\x8c\xfd\xee\xd3\xaa\xab\x89z\xecF\xbd\x98I\xf9\x0br\x9f\xbe]\xf6\xc2@=K\x18\x86\x97\xe5/d\x8bq\xb6\x18;\x80\xb9q\x84l1\xce\x16c\xef\x93\xd9b\xac\x90-\xc6\xc7\xc8\x16\xe3l1\xf6![\x8c\xb3\xc5X![\x8c\xb3\xc58[\x8c\xb3\xc5X#[\x8cS\x8c\xae\xd9b\x9c-\xc6=\xb2\xc5\xf8\x18\xd9b\x9c-\xc6\xd9b\x9c-\xc6\xd9b\x9c-\xc6\xd9b\x9c-\xc6\x8bZ\x8c\xbdf\x9c\x98}r\xe1\xf0\xce#\x03d\xba\xfb\xf4M\x98\x1fIf\xf1\xb6\xd8\x1dJ&B\x0e\xd4o\xcd#`\x9fm\x81_\xf1\xf5A\xc8\x19\x95\x8dM\xe2r\xadnE\xb1c\xea\xc7s\xd6\xc2A_6h\x99##\xb7\x95k~\xfbl\xed\xdb\xe7\xac=+\xaam}\xdc{F\xc5\xb1\x8f\xd9~ \xff\xbf\xd9\xe9i\x8c\xad\xea\x830\xea\xe8\xd3\xf6\x1b}\x1e\xc5\xad\x87\x98\xb92l\xac\x94\x05\xf9\xc4*\xc17~Sf\xf0\x9e\xce\x93\x99\x7f\x08\xcc]\x18\xc0\x0f\xac\xfd\x8b*\x88\xd5\xc9\x8e]\x15\xbb\xc3\x0e\x0eU!\xd4%\xce\xa7\xba\xf9\x08\x9f\xcce\xbd\xbe#\x16W j\x8f\xc0=od\xe1\\;\x12Yk\xa9\xdc[\xaa\xf3\x0f\xac}\xdf\xf6\x15c\xbb\xfa\xa0-\x96\xb2\x91\xd9Zh\xb3\xda\xba\xae\x8c\xbde,J\xdb \"\x1dJ?4\xa05\xc8\x7f\xd9\xfb\xbc\x9b\xe9:\x1b&\xd8L\x05z\xafvq]\xe6)\x13L\x19\xaa\xaakU\x9a>\xc3\xbf\xa2\xdb\xd8\xa5T\x19^\xaaM\xe9\xb9;\x05;C\xd5\xd5)<\x17\xf0\xe3\xfb\xb7\xef\x027\xe3%\xaf\xce\xc5\x05\xec\x1b\xbe-\xae\xf4\xf8\xac\x9b\x8d<\xc2\xd4\xd0r\xb9\xba \xaeK\xa3\x0bq(E\xb1/}w\xc9\xb6\x8c]\x11Z\xef\x15\xc8S\xb9\xdbY3\xc17\xc6\xc8\xae7\xe5\xca\xda.w>\xfbz\xaf\xa6\xc8\xcd \xac\x0eB\x15\xd0[\xe3]{~\xd6q_\x8a\xaa\x15\x9cym\xfd+\xbef\xca\n+\x80\x95m=\xde\xf7\xff\xd8\x9e\x8fI4\x9e3@Y\x9f'\xf6\x15\\WxQ\x9f\x8f\x0bV\xd6\xe7\xa3Y5\xb5G8\x1e\xe0\x97\xbc\x12\x01\xea\x87\x8fn\x02!\xca \xc4\x06\xa3F\x8cz\x02V\x8c\xf7W\x84\xca%\x98\x10M\xb1:8C\x80\xf4\x88UW#Xi\x0dD\xd550\n\xd0\xf8\xc8\x1d\x0c\xb3)P\xba\xd0\x08\xda\xb3z\x10$\x16\xd5\x86_a%\xae\xea\xba\xe4\xcco\xea\x04\xf4X\xb1x&\xfb\xf1c\xdb\xcej\"\x85\xb6\xa8\xceK.u\xf7@\xdfH\xecY\xd1\x84\x0e\x00\x12\xacm\xebu\xa1l.\xda\xf4T\xe91\xe2\xbb\x13\xc3\x16S\x15P/\xf7-\xb0\xdef\x0f\x1b~\xc9K\xd9\x0f\x94\x01\x9a \xc1\xd6\x17\x83\xeb\n\xaf\xc0\xe1\x84 \x02W\xa4\x96&\xf8}Q\xa9\xfb\x94\xef\xca\xda\\\xb6\xda_\x9e\\\xf0\xf5\xc7wW\x81\xfb\xea\x17L\xf0\xe6d\xb8\xe3ma\xc7\xae\xe5\x01\xf5\xa7\x03o\n\xbe\x81\x83\xd4\xb6\x9c\xadZn&\x15\xb7\xc6p\xfaR\xdaj\x07\xf6Dh\xcbb\xad\xaczZ\x91zt\x19\n\xce'\xde\xc8\x93r!\x84\x97\x0e\xb09h\x12\x97\x9e4}5\xed\xe7\xd2\xf0\xac9\\r>\xf3\xc93\xc4\xdd\x03\xfc\x10\xc75\x9b\x06\x95\xc7\x17\x9dL\x8f\x8d\xb9\x01\x8b\xc0\xd2|>\x88s\xfa \x81\xd7\x17\xae\x00\x13\x17hn\x1f,\xc5\xef\x83D\x8e_P\xa0T.\x9a\xe7\x07\xf3\xb9~@\xe6\xfb\x05E\x19\x1e\x12\x89\xf3\x07K\xf3\xfe\x80\xc8\xfd\x03*\xff/\xdc\xb3;n \x96\x03\x08K\xf3\x00\x01\xc7\x05\x84%\xf9\x800\x9b\x13\x08i\xbc@X\x8a\x1b\x08I\xfc\xc0\xf0p`\xf2\xec\x1f\xe5\x08\xc2\xcd\xf0\x04\xe1\x06\xb9\x82p3|A r\x06!\x8d7\x18\x9b\x82q\xdcAX\x96?\x08\x04\x0e!\xd0y\x84\x90\xc0%DL\x99_#\xf8\x84\xb0\x04\xa7\x100\xe70\xe4\xf6,z \xa5A\xd9\xc5\x91y\x86Ai\x8a\x83\x88\xe0\x1a\x02\xa1\x94\x0br\x0e\x81\xc4;\x84\xa5\xb9\x87\x90\xc8?\x0c\xf7\xab6\xceA\x84t\x1e\xa2W\x9e\xfcb\x8c\x8b\x08\x8b\xf1\x11\x01O\xab\x03\x0c/\x11h\xdcD\x88\x11f\x129\x8a\x80\x90\x1b\xb0\xd6/\xc4W\x84$\xe5\xe2y\x8b\x80\xa8e\x02\x7f\x11R9\x8c\x10&j\xa1\xb8\x8c\xb00\x9f\x11\x16\xe24\x02\xae\xc7\xcc\xe66\x02\x9e\xdf\x08H\x8e#\xa0y\x8e\x80\xebPt\xbe#\x908\x8f\x10\xe2=\xc2R\xdcG\xa0\xf2\x1f!\x91\x03 4\x1e$ \x1a!2\xcc\xe2\xef\xe3y\x91\xb0 7\x120E\x0b\x8c\xb2\xe5x\x92\x80\xe1J\xc2\x0c\xbe\xa4W\xa0|0\xc4\x99\x84\xa5y\x93\x10\xe5NB*\x7f\xd2+M\x9f\xed\xc3\xd7\x1cq\x1e%\x84\xb9\x94\x90\xc4\xa7\xf4\x8a\n\xf2,!\x95k\xe9\x95f\xcc#\xfe\xcf-\xc7\xb9\x04\x14\xef\x12\x12\xb8\x97@\xe3_B\n\x07\x13\xc8<L\x08\xcf\"\x10\xe1\xc6\x01\x81\x1f\x87\xe5dB\n/\x13\xa8\xdcL\x08W<\x85\xa3\xe9\x156`@b\x87\x0c\x8e\xab\x19\x1c\x10\x8a:\x16\xe0k\xc2\xb2\x9cM\x88\xf16!\xcc\xdd\xf4\xbe\x93\xca\xe9\x84\x05\xfb.\x81\xdb $~'x7(\xb8\xbb\x89\x91}\xf0\x98dbm\x8c\xfd#j\xa1q\xcb\x923\x9a\xa6\xe6<\xae\xae[\xffJ\xe3\xa4F\xfe~\xf4p8\xe1\x88\xa5%\xce\x89+\xd3\xc9\x18p8\xfb\xaf\xe7\xd80#\xe4\xd80\xd8\xf1D\xb7)\xdb\x8b8\xaf@\xac=yQ[r\x8e\x0d\x93c\xc3\xf4X\xd4FL\xb1\x0f\x93l\xc396\xcc\\;p\x82\x0dx\x11\xfb/\xdd\xf6\x9bc\xc3\xcc\xb1\xf5R\xec\xbc 6\xde\x1c\x1b&\xc7\x86\xc9\xb1a\xb06\xdaE\xed\xb3)\xb6\xd9\x1c\x1b\xc6\xf7X\xd4\x06K\xb0\xbfb\xa2\x8aP\xec\xae96LJx\x95\x98]5\xc7\x86\xc1\xdbO\x91\xb6S\x8c\xdd\x14g3\xcd\xb1a \xd1.J\xb0\x89\xe6\xd80\x0b\xd8<\xa3\xf6\xceT[\xa7w\xdd\xcc\xb1a\x8e\x90c\xc3\xe4\xd80\x13,\x11\xa7\x03k\x87$\xdb I\xf6\xc7\x1c\x1b&\xd1\xce\x98c\xc3X\xdcAl\x18d6\x91\xde\xc0\x97\x9eMD\\\x99g\xcf\xf9q\xc0\x94\x1f\xb8xw\xd5j\x07\xcd-\x17\xeb\x0b9\xc9_\xb5r\x9d\x1f\xf9\xd0\x8e\xa2\xa1\x0c^2?\xdfN@\x14\xa4\xd2\x06\xc5\xb3\x86\xd1{\xbf\xe8K\x91M\x9a#d\x93&\xeeJ\x0c\xb2I3\x9b4\xbdOf\x93\xa6B6i\x1e#\x9b4\xb3I\xd3\x87l\xd2\xcc&M\x85l\xd2\xcc&\xcdl\xd2\xcc&M\x8dl\xd2L\xb1\nf\x93f6i\xf6\xc8&\xcdcd\x93f6if\x93f6if\x93f6if\x93\xe6?\xbbIS\xc7|\x1d\x88\x08\x1d\xa3\xf5\xc3\xd6\xc1\xb0,Zm\x04\x18$TPO\xd8\xf3\xdd\xf0\xd5>r\xb8J\xda\x00\x97\xbf>\xfd\xed\xbf\x9c^=R\xcb\xd5O\x07\xde\\\xdb\x18\xe0'\xa6\x13\x98\xcb\xf9\xce\x961\x12\xa7.\x15~\xe1*\x9c\x925\x9c\x13\x8b\xea\x91\xfe\xe3\xe0o\xbd\x99v\xcb\xcav\xd8\x8f\xdc\xc6+\x87\xd9\xcas\x9d\xb2\xae\xcb\x92+]|o.ST\xf4\xf5#\xbd\xef\xd9yQ\xe9\x80\xf8\x1f\xf9\xb5O\xff\x13g\xcf\x8f\xfcZ\x87H\xd6KW\x17j^n\xe6\xd9y\xe7\x01zZ\xf1+q&\x1fV\x97\x90\xe7\x93\xdb:\xa5\x0c\x13\xf5\x17\xe4\xa3\xb20\x1cv\xb2Y\xb8\xba\xb9S\xd7}\xa7\xf0Jn'\xeaJ\xddR\xd4\xdbm\xcb\x85<!\x8d\x8b\x0b\x03#J\xcb\xc5\\\xc5\x1f\xe9\xd3y%\xe5P\xa2.\x1f\xb2\x1f\x9b\xca(UV\x87\x1do\x8a\xb5\xfd\x9b\x9a\xe5\xd6\xac\x92\xf5\xd1\xf7q\x17\xbc\xb2\x8a?T\xdd\x15\xe8\xa4{?W\xd2J\xde\xb6\xbd\n\xf5\xa5\xa1\x0e\xb0\xfc\x91\x13\xf59\x16\x7f\xc3\xca\x9d$\x91p\xa8\xb7,v\x05V\xbb\xeaY;I\x88Z\xb0R*y\xa5o\xfa\xec\xf5\xbe\xbe\x1e\x1f\xf6`\xd1%\x8d\x18I\xdb\xeb\xcb\xb0\xe1\x9f\x9eo\xa1\xe4[a\xee]\x0b\xa1\x97!\xbb%W7\xfbz\x80\xe8\x8fH=\xaf\xae\x81\xab\x00\xdd\xfb\xfd\x1djq]\x1f*q\xa6T\x82\xd4\xe5\xe0\x0d\x95e\x81\xab\xfa\x89\xe6\xc0A\xfeOQm\n9\xa9v6>\x9bvC>h:\xd2P\\Q\xad\xcb\xc3f\xb2\xe1f\xfa+\x9d\x91u\xd2bj\xee\x1b\xdc\xfd\xcb%\xb3\xaf\xd3\xd4\x14\xf0\xfe\xf94{\xc4\xa4\n\xea\x8c\xd2\xf0\xd6\x90+\xd4\xf0\xea\xc7\xa3\x1cr\xa7f4\x15\xe7U\xddL,'v4\x8e?\xa153\xb7a\xa7\xd1\xed\x1d\x0d\xd8\xf0K\xde\x8c^\x0d5\x9eyz\xdapE?\nX\xc3\xdd#a$G~\x83W\xca\xa6\xac\xd2|L\xcfC\xce\x10\x02\xbf\xb9!m\xa8\x12\x9c\xad\xfcK\xd6\xb7\x93\xab\xf7\x07\xf0\xea\xcd\xd3go\xce\xbe\xfb\xcf\xb3\xf7/\xdf\xbe~\xf6\xe4\xf9\xf7\xcf\x9f=}\xe4\xfckw\xcd\xaf\xee\xe6\x0f\x95\xde\xc8\xb6u#\xfa\xca\xc3+\xf9\x9f\xef\xae\xed\x80\x1f\xdfk\x8b\x1a\x1e\xbf}\xa2\xb5X\xb4\xb0f\xed\xd4X0(\xcf\xe3\xb7O\x1e\x8d\xfe\xa5-\xbe\xf2\xebc\x8d{%<}6\x12!\xff\xd9\xc9\x986\xdb\xcc\x069\x9awxu\xd8\x8d\xf7$nU\xfb\x1ey\xfc\xf6\x89\xef'Y\x8fQ\x03k\xbeTX\xfc`\xbcxG\xc8dC\xa36\x1ef\xa5P\xffo\xa6\x1dQk\xf5\x9c@+X#\x07\x8a\x80oN\xb5\x0d]\x0cL\xe7G\xb1\xa0\x06\x8b\x80:\x9d\x99\xe5\xa3\x7f`\x11\xcdGf\xfc\xbcX&\xabn*?\xa4:}j\xb0\xa3M\xe9\xef\xe8$\xa2\x9fQ\xab\xa3\xe6\\\\\xa9\xab\xb0q\xbe\xaew\xbc\xda\xf0fWT\xe2^;V\xde\xbb\xab\xb7\x9c5\xeb\x8bar;u\xb7\xa4\xe5\xee\x8c\x91S\x9dF\x9c\xb3\xf2xR\xfe\xdd\xaf\x97T\xa7\x9f\x00\xeaI\x8c\xf7]S\xb3\xcd\x9a\xb5\xe2\xdd\x15\xac\xec\xff\x0f\x95\xe6$z\x0e\xde\xfa\x85-\xe5m\x10=\x05\x9dH)\xae\xba\xf0=>ZbR\x9a\xb1\x0b^\x9c_8\xd2\x9f\x01\xc6\xac>\xe0]z\x12\xb5\x89B\x94\xfc\x91\xeaW+\x95\xe5E\x7f\xcf\xf1\xac\xb8\xba`\xedEbAFM\xf2n2\\\xa4\\\xd7M\xe2\xba\xde\xf0v\xcf\xd6\x1eZA\xf4\xa3\xa6n/\xd9N\x8b\xb1\x81\x88\xe0I\xbdq\xdd\xdf\xb8\x99\xad\x001v+\xa04=RA\x170I~\xd3\xc9(H\xcf.7\xfd\x90\x9ck\xe5\x11\xb6=\xb1\x86,\xc7k\x0d\xfbtv\xd3I\xcad\xbb\xd7\x07\xb1?t\xfb\xfdAR\xa3{-\x94\xf5\xf99o\xe0~\xc3>\x99\x8f}}\n?zSk\xf9\xe9,U]=\xd8p\xa1\xe6\xd5\xa2\x15\xc5\xdaU\xe3\xb2>\xff\x8c\xf3\xf0\xec\xda\xf3\xb3h~\xacx\xb7\xd4\x88wN\x08\xe5\xa8\xd3\x88v\x02\x88\xe4\x86\xd3\x88)W\xe3nR\xa6)\x91\x91g\x90\x8a\xd0\xc0e\x91\xd3\xc0)F\x03\xa1\x1e\x0d\xb4\x924\xf0\xaa\xd2@\xe5\x98\xd3 hM#\x9a\xe7`\x08\xa2t\xdc|5F\x9f)\xae;\xa8U}\x03\xc3\xa7\x86\xed\xf7\xbc\x81O\x17\xbc \xd1#{\xc8 \xf0#\xbfV\xb6\x12\xbd\x0dfM$\x81\x84\x85\xaehk\xaf\xad\xd5~\x9d}\xd2\xb3|\xc04M\xae\xf9[\xf5\x1d\xed\x9dck\xcd\xabQ>5R\xc5\x151\\\xce\xfb\xdd\xb8\x88\xd5\xd7^\xc1\x7f\xe4\xd7\x0f\xfb\x8c|\x86X\xce\x1a>UED\x1cVQ\x145\xd1\x13\xcf\x05\xc5\x99\xa4t6\xfd\\[\xef\"\x9d\"\x98v\x0e\x08\x95y\xfc\xdd\x93\xe7?j\x83\xd4\x8b\xfa\xbc\xef\xe6R\xc7\x87\xb584\xdcVR\x85$\xadt\x02\xc7\x00\xbfX\\)\x99\x9d\x95\xab\xac\xcf\xdde\xc4\x95\x10\xbb\x7f\x90\x93\xc1Fo\x1d\xfc\xa9\xc6P{\x04w*k\xc0L8\xe3CHo[\x1f\xe4`\xb4%\xc4\x95e\xb1T\xd5\xc8-\xea\xe3Q\x9af\x93\xa9\xdd2\xa3\x8f\xcfmC,\x94_:\xa9\xa06\x8d4\xac\xaec\xc5\x14\x9e\xcdUt\xd1\x8c/\x93\"\x9aF1\xaa\x05@\x8f\x0bH\xf5\x0c\x0b\xc8#\xa5O\\\xd4;,\xea\x1f\xb6\xb4\x87\x18\xdeGl!/\xb14?\xb1\x808b\xc2\xc4\x99\xbebK{\x8b\x11\xfd\xc5\x16\xf6\x18\xa3\xf9\x8c\x11\xbd\xc6B}\xb8\xf3'\xc3\xfa\x8d-\xec9\x86\xf2\x1d[\xd0{l\xae\xffX\x92\x07\xd9B>d)^d\x01a\xe8\x94\x887\xe0Ivs\xbed7\xe2MF\xf3'[\xdc\xa3\x0c\xebS\xb6\xa8W\x19\xde\xafLo#\x08\x9eet\xdf\xb2\xe8T\x88K~8\xdb\xbf,z!\x80\xdaP!\xbc\xcc(\xbb.\xb2\xa7Yh\x11D\xa7;\xc4\x95oA\x7f3\x8a\xc7\xd9\xc2>gi^g\xa1\x1e\x84Jq\x98\xe8y\xe6\x91&P\xe9\x0d\x97\xf1>C\xbbP!<\xd0H>h\xb1,W)~h1\x99^6\xf6B\xdehte\xe2=\xd2buK\xf0JK\xf4K\x0bgV\x8b\xfb\xa6-\xeb\x9d\xb6\x8c\x7f\x1a\xa2o\xcc\xf6QC{\xa9\xe1\xfc\xd4\xb0\x9ej\x88\x8eC\xf7V\xa3\xf8\xab\x05\x13\x15.\xe2\xb3F\xf4ZK\xf3[#y\xae\xc5\x94\x1eNN\x18y\x17\xef\xc1\xb6\x9c\x0f[\xb4P\xde\xf1\xb3\x9c'\x1b\xc2\x97-\xdd\x9b\xcd#NDS\x11.\xea\xd1\x16\xf3iK\xf4j\xf3\xc8\x8a\xa7 \x8c{\xb6E\xd2\x0f.\xed\xdd\xb6\xb8\x7f\x9b\xdf\xc3mI\x1f7\x8c\x97\x1b\xdd\xcf\x8d\xe4\xe9\x96\xe0\xebF\xf5v\x8b\xa4\x14\x0c\x97\x0e\xeb\x7f\x84\xf5yK\xf0z#\xfa\xbd\x05\xaa\x9b\xe2\xfb\xe6\x11\x85H\"\x98\xe2\xff\x16\xe8\xf2\xf1\x04\x82\x0b\xfa\xc0E\x93\x07\xde\x84\x1f\xdcR}\x91\xe0\x0bG\xf1\x86so\x0fD\xb1\xe3\xad`\xbb}\xa2\x9d\x0cw\x0f\xf0\xae\xe8\xcd\x13\xfb\x86_\x16\xf5\xa1\xd5\\\xbfS\xf8\xben\x0c\xe1\xaf\x85\xff\x03\xdf\x9c@!\xee\xb5\x81\x96\xfd\xa4\x9eU\xdd\x7fS09W\xfb\x9aD\xcd\xa0\xb6~6(\x8b\xb9%\xb9\xacE\x7f\n\xd7%y\xc1Z\xf1\xa4\xde\xed\n\xe1\x9bn\xfb\xa2\xc2\x1f\xfe\x00\xdf\x9cx\x97SY\x03y6o\x8bV\x95\xc0%0DS\x12\x9f\x01\xfbKD\x88H\xd1\xae\x01h\xf2Q\xac\xba\x1a\x08\xc2\x11\xa2\xea\x1a\x18\x05h\xa0\xe8E(]h )E\x04\x89Q\x8a\x9e\x86\x968ukq\x017\xa6-\x14\xbf\xa4'&)\xa7\xc2\xb6\xa8\xceK\xc5,z\xd0\x13fbyNY\xdb\xd6\xebB\xddf\x99\x1c\xcd\xe3\xf0\xbbS`\x8b\xa9 0\xcaR\xd2\x0e\xd9\x1a\xb0\xe1\x97\xbc\x94\xfd@\x99\x01\x98\x10\x8a\xf4\xdfm\xcf\xbc\x02\x07\xf4 \x10\x81#\xa4%\xd8~_Tj\x0f\xf9\x9d\"7\xcb\xa5\xd9\xfe\xf2\xe4\x82\xaf?\xbe\xbb\n\x9c\xef_0\xc1\x9b\x93!\x8b\xa0\x85\x9dfl\xfct\xe0\x8d<\x06h\x0fKq\xc1[n&\x959W\xb6\x86I\xd4\x11o\x0c[\xcax\x17[b\x90>e\xady\xab\xbe\xed\xdbe\x0c\xb9\x0f\xca*\xe2\x9d1\x87\xa5\xb7^z .j\xf9G\xf7'u\xb9<\xe2\xccR\xde\x9a\x88\"\xb5\xffdg\xa5o\x9bz\xa7*\xca*\xc1O\xe1/\x17\xbc\xe1\xac\x85\x17\xf5\xf9$\x11\xae.\xa3\xaf/\x87L%\x83\x8d\xff\x8e\x0b\xb6a\x82\x9dt\xdfW\x07\xbdq\x15\xe3\xd5#f\xd5\xfd\xf6\xf4\x9boN\xe4\xff\xfc\xf6\xf4w\xea\xbf\xbf;z;\xdeG\xde]u\xbc\xf1\x089\xab\xe1%\xbfd\x95\x00q\xa5\xa8\xe4\x9e\x03\xb1\xd5\x852\x06\xba\xea#\xd8y;\xa0\xd9\xe9\xb3\xaf \x15\x03e}.\xa7\x1c\xb59\xdc\xf0u\xbd\xe1\x9bq\xef\x0f\xb9_\xc1\xd0\xb9cN\xfe\xe0\xa1gI\xce\x1f\x9c\x83mG\xd7\xee\xf88\xd3H\xa2T\xe5`\xdb\x18\"\xd5\"4\xaa\x14\x12U\x0e\xb6\xbd u\x8aB\x9c\"\xd1\xa6r\xb0\xed\xb9d\xa9\x04\xaa\xd4\"D):M*\x07\xdb\x9eC\x8f\xa2\x90\xa3\x16\xa6F\xe1\x88Q\x0b\xd2\xa2\xb0\xa4(\xc7\x0d_\x0e\xb6=\x06\x82\x06\x85\xdd%\x91)P9\xd86\x8a\xf8\x94B{\xca\xc1\xb6}\x8fE\xa9N\x04\xa2\x13&L3\x85\xe4\x94\x83m\xa7\xc4\xab\x8e\x91\x9ar\xb0m<\x91 Ic\xc2\x90\x98p\x14\xa6\x1cl\x1b\x12IK\x04\xcaR\x0e\xb6\xbd\x00E)JPJ\xa5'y\xd7\xcd\x1cl\xfb\x089\xd8v\x0e\xb6=\xc1\x12\x81\x8f\xb1\xc4#2\xed\x88D:\xca\xc1\xb6\x13\x89F9\xd8\xb6\x05&\xd8\xf6\xc2\xf9\x83\xbdf\x9c`\x844\x15w\x83d|\x8a\xdcU\x8c\xee\x02\xec\x07:+\"\xfb\x14\n\x01\xb0\x0b\xd8\xd6<e9\x0e{\xa9\xf1\x00\xbe{\xf3\xea\xf1\xd3'\x8f\xdf\xbe;\xfb\xf1\xd5\xd3g\xde\x10\x98\x9e\xc7\xbf{\xf1\xea\xc9\x9f0\x0f\xbe\xfd\xcf\x97O0\xcf=v>\xd8\xc5\xd2$\x946~\xdb\xd2\x19`\x7f\xac7|\x10EU\xd9.\xbaP\x7fR\xdb\x1eK.\x98h\x87\x13{.\xbcy\xfd\xc45\x18\xad\x91\xd75\x1cB\x0d\xf1\x08\xfe\xc6\x9b\xda\x90b\xd4| \x8b\xa4\xc2\xa3z\xa62w;=\x82\xa7\xcf^\xbfy\xf6\xe4\xf1;)S\xee\xc2\x1c\x8d\xd4E\x94w)\xcc!\xd4\xde\x87\x9a\xcb\x1d\x13\xbf\xe2\x82\xc3\xdb\xa7\x7f\xd2\x04 \x13\xb5\xde!\xaf\xae>\xb1f\xe3\xbe*t\xf6\xa0\xa3\x0e\xa0J\xdcS\n\xc4 F\xa3\xb25JE\xa9\xf8>z\xae.U\x88\xf1O\xacpz9K\xd520\xf4\x9a>:Mo\xd4\x97\xbbW\\a\x1f;K\xfb8\xa5\xb8\x8e\xef\xe9\xa0\xa6-\x14;Eg\x14|Z\xacp\xdf\x1f\xf1\x17Tt\x94\x9e\xbe\xa0\xff)H\xec\x05#d\xda\xaf\x07\xe1?\xcd/\xd4\xec\xeb\x0f\x15\xc7\xf2\xe1\xdf5}\xf2\x1f\xfaUO2v\xc5\x93\xfaK!.\xde]\xb5]BvfbC\xaa\xcbO\xc3\xf4\x00q\xd5\xf5\xb8\x91\x9e\xee9\xf9/\xbf;\xfd\xd6\xe6@\x9f\xa6r\x1f~\xd2<r;Q>\xf1\xe9\xdc\x87E\xcc)\xdd\x152\xcb$\xb3Lzd\x96If\x99\xf4\xc8,\x13\x91Y&nd\x96\x89Ef\x99d\x96If\x99 wI\x99e\xd2!\xb3L\x86\xc8,\x93\xcc2q \xb3L2\xcb$\xa6\xfc\xcc2\xf1\xbe\x93Y&#d\x96If\x99d\x96If\x99\x8c\x80\xb5\xf8g\x96\x89Bf\x99\xfc3\xb0L\x8e\xb2\xc7\x8d\x8e\xd1&~\x8b\xb1\x92\x9a\x7f\x99\xc9O[\x18m\xf2\xcd\xe1,TT\x8f\xa6\xf6\x00/U\xc5s+\xe1\xce(\x91\xf3\xa1\xe3\x13>\x82\xef>'\xe7C_V\xb9\xf1L\xde9\xc5\xeb\x12Z\xcc\xf9\xd0s>\xf4/3\x1f:\x99\xfe\xf3\xf7\x0b\xd6^\x84i?\xef\xae\x06d\x1fq%\xc7\xe80+\xeb\x94\xb2s\xcb\xe9x\xf1D\x9d>\x94L\xa6\xe7dzN\xa6\xe7\x18dzN\xa6\xe7\xf4\xc8\xf4\x1c\x91\xe99ndz\x8eE\xa6\xe7dzN\xa6\xe7 wI\x99\x9e\xd3!\xd3s\x86\xc8\xf4\x9cL\xcfq \xd3s2='\xa6\xfcL\xcf\xf1\xbe\x93\xe99#dzN\xa6\xe7dzN\xa6\xe7\x8c\x80\xa5Jdz\x8eB\xa6\xe7\xfcS\xd0sX;\x9c\xa2\xc6\xe4\x1c\xd6^tL\x81+\xfdOK\xc79\x01^i\xaf\x7f\xd5\xc3.\xf8\x95\x19\xc4\x0b\xf2t\xe2f\xcd\x15k\xf9C\xc1\xab\x0dovE%:\x1b'[\xad\x8b3UN\xbf\x8dspE\xf0\xf8\xbb'\xcf\xffC>=\x08!\xa1\xde\x86\x0bVmJ{QlN\xd8\xadz\xde$|iaS4|-\xcak\x10u'pt\xe7=Hrs\x02\xab\xeb=\xd3 E\xdeu\xc5V\xf7\x87%W\xd1&\xd4\xca\xd5\xc9\xbfV\xd7\xba\x9d$3\xff\x0fD\x9b\xdb\x159\xd4\xfb8!R\xe5'\x86M\xa0\xb2\xb3\xec\xf7'f$\x9d\xc0\xfe\xdb\xbd\xbelkE\xddt\x17)\x88x\x0d\xbfwFk\xe8Tg~\xbc\x1d\xf3\xaf\xd7Z\xe8\xb7\x13\xce4\x99\x0e\xa8#\x1ae}N2\x97\x16\xd5\xb6&\xbe\xe0L$\x15\xbc\xc6\x0b\x15\xd8\x99:\x0b%\xcdq\x1d\xe8\xb9iL\x15\xb7o\xeaz{V\xef\xbd\xd6d\x8fa8l\x16v\xca\x83\x88\x85\x1aBVj\x88\x15H#f\xad\x06+\xc6\xfb+\xea\xba6\x9a\x0e\x0d%\x03u\xed\x0b*g\xd0\xed|\x0bs\x91\x0b\xfa*\xb4\xde\xbe\xda\xf7sv\xd5OM\xbd\x01a\xcd\xca\xf5\xa1d*\x0c\xd0\x8f\xbc\xf9X\xfa\xab\xd8\xd4\xb5\xd0\x13\xb0J\x90\xb4>f\xfa\x0d\xb1\xe2\x83\xcbck\x15\xd3\x07J\xf9\xad\x8a\xcbIM\xfe\xa6\x84\x85\x0c\xa6\xf6\xf8T\xf1\xe2\xfcbU\x1f\xd4^\xb8\xaa\xa7L\xb0!4\x15\xc7\xff\xbb6\xea(b\x80\xdd\x192\xd8\x1c\xf4B\xd4];[\x0d\xaa\x0d\x88>\x8a\xf9\x04j%+\x02T\xbfp\x1d\x1f=\xe2mg\xbe\xa9B\xb2\xe9\xf6\xd0\xa3\xbf\xfb\x82\x89rU\x16\xad\xb2;\xdb\xe7\xdd\xb5%\xd5\xb3\x0dW\x14UEMQN\x9c\xf9\\\xd3\xb2\\\x97\xda=[Sf\xd3\xb0\x96\xbb%\xf9(5\x98\x18&\xd2\xea\xb3\x84\x99xTGk\xb9\xc5\xf9\x9b\xd7O, {\xda\x08\xb8\x06\xb0%\xd1\x9b,o+\xf4-0\xfd\x8c\xabA2\x8bk\xf2kfq\xc5\x86F\x8f\xcc\xe2\xca,.72\x8bK!\xb3\xb8\x8e\x91Y\\\x99\xc5\xe5Cfqe\x16\x97Bfqe\x16Wfqe\x16\x97Ffq\xa5\x10\xa12\x8b+\xb3\xb8zd\x16\xd712\x8b+\xb3\xb82\x8b+\xb3\xb82\x8b+\xb3\xb82\x8b\xeb\x9f\x9d\xc5\xb5abx]\x98\x12Q\xc2\x1b8\xc5\x13\xdbg4'.\xf0Ao\xbc\xa8\x05dG\xc3=5\xe3K\x8b\x94OR#r\xf8\xa8k*\xeaU\xfb\xb0d\x82\xb7\xc6\xb6\xe9\x89\xd0\xf1B=\xa2\x12\xd1t\x89\x8b\x94\xe5\\\xfd]\x87\xcf\xb2\xcb\xca4\\\xc7\xe0\xdd_\xd8\xfa}\xa6\xc4-U\x8f\xb3b\xb3(5\xe8\x82\xb5\x17!nP\xe0\x82-r\xbd\xb6g\x8d8k\xb98\xbb\xe0l\xc3\x1d\x06a\x88\x95\x1c\xa2\xa5\x97P!{\"\xf4\"\xaf\x15\xd9\"DL\xb0\xf0\xab\n0\xea\x82\xb8\xca\x00D!J.\x8ff\x8dh\xb9\xf8\xa3\xd2\xdcqs\xeb\x87T\xa7}>MK\xa7z\x89\xa3\x8b\xe8w\xee=\x95+\xde\x9a 9~\xf7\xea\xaeZ\xed\xb0?\xb4\x9b\x8fg\xea\xd5\x0f6=\xdb\xbdE\xbb\xd9\xcd\xf6\x01cY\x08\xb4\x8e\xae\xfe\x8a\xb5\xc5\xda\xc4\xd3+\xaam\x1di\xcd \xb7\x0dS.\xf07\xc8\x10\xa8\xbe\x03\xfe\x18^\xc7`\xfb\xfd\xed~\x12s]\xad\xf1DN\x8fU{ha\xcd\xf6\xe2\xd0\x98\xf3\xca\xba\xfbss(y\xab\x0eb\xfb\xa6\x96\xf3j\xb8\x88\xackOmG\x96\xffX_\xb0\xa2: \xdc`\x0cI\xc1r\xcf\xd7\xbd\xa4Ij\x1d%\xa8\xb5\x87X]\xaa\x80@{\xed\xdf\x1b\x06\xef\xb5\xa1\x02\xb4B\x05DkX\xd5\xea=\xe0\x8e\xad/\x8a\xcai\x0b\x90P\xa5s\xce\xfe\x16\x88&\xf5\x91\xb6,\x10\"ps\xa5(v\x01R'\xe93\x1b&\xf8\x03)\xcf\xf3\xa4:e\xf9\xd7F\x8b\x05Gtx!\x00l\x05\x01\xb3 h\xa0\xd6R\x0bTM\x01][\x88\xaf\xb1\xddc\xa8\xb5\xd6\x02\xd3\x8f,\xe2*\x07\x8a\xda\x01\xafz\xe4\x9a<y\xd8\xbd6[\xa8.\xbb\xaew\xbbB\x9c\xdd\xc6\xae\x02\xfa\x82\xc9\xcfqe\xd1\xd2\xb3\xe6\xe4\xc04\x84\xfc\xe9\x96\x8a\xa7\x8c\xaaL\xd4M{K\x1f\x9c\xeaC\xa5\x915\xf37\xd4\x07\xb1?\x88\xfeo\xfb\x86_juy\xa4\xa9@\xb6\xb7^\x87n\xc5\xbc\xa5\xef\xb1\xfd\xfe\x96\xbe\xa4\xc6\x87a\xce\xdc\xd2'\xf9e\xb1\xe1\xd5\x9a\xdf\xd2\xe7\xba\xfe\xd7o{\x02\xfbQ9Q\xd7-o\xce\xd8f\xd3\xf06\xe6L1\xbb|\xa3\xcd\x9c\x9e\xf0F\xd4\xe9\x9e1]o\xbb\xfd\x97^\x9a\x9cT\x06\xaf\xc7Dt\xa9\x8a/Q\xe2*\xaa\x0e\xbf\x7f\x0b\xc4|\\\x00\xabS\x84V\x81\xb4M~we\xa8\x8e\xf6RR\xed,\xb5mG\xef\x1d\xff\xcd\xdcl\xfcQm\xea~\xf5M\xc0\xf4 \xf0\xf2\xd5\xbbg\x8f4y\xb3,\xa5\xd2@%\x81f\x0d\xd7\x93\xef)\xc0_\xf8\xbd\x86\xc3\x7f\x1fZ\x01\xec\xbc\xe1<\\]\xc3\xd5S\x91^\xf5\xd5x\xf0\xfb\x8a\xd4\xbb\xe3\xac2\xb5\xd2E\x7f\xbc\xdf\xff\x91\xb5\x17\xb0\xa9\xb9&J\x99\xc8\xbfRt\x1bZ\x95\x07\x19\x96'?\xe8a\xe5U\xedS\xed\xd020<\xa8\xf8\xd6\xdba6\xfc\xd6\x16\xc3\x19\xe6\xb6\x87oI\xb0s\xc9\x8d\xf5\xf9\xf0\x07`\xd9\x8e\x1f\xddH\xc6\xcb\xab\xd19C\x9c]\xd6\x82\x9f\xc5+\xa1\x81,\x05\x10J\"\xa1\xca\x10t\xe4\xb2 \x14\x00\x88\x85\x00+\x1e\xf5$z*\x1a\x82W\x87\x1dV\xbc\xba\xa0}\xfe\xc3\xcbgO\xcf~|\xfb\xc3\xd9\xbb\xff|\xfd\xec\xec\xfd\xcb?\xbd|\xf5\x97\x973$\xbc~\xf3\xec\xcf\xaf\xde=\x9b'\xe1\xc9\xab\x1f\x7f|\xfen\x96\x8cW\xaf_\xbd}\xfc\x02)\xc2\xfa\xd4\xcc\xd4\x07~\xbe\x1f\xe3mq^\xf1\xcd\x8f\xed\xf9\xbb\xce\x97H\x18\x82]\xab~BK\x1ap:F\xd7,\xc1\xd9z\x02o\x9b>\x82?\xd7\"x-2\x81\xbf]\x1e\xc1k\xb5\xcba%N\\\xec*c\x8c\x84\x81C9\x9ej4\xf5\xa1\n\xdc@\x8cA;+k\x84|\x9e\xdc\x88\xdf\x8b\x8cA\x9c\xeb a\xbe\x03\xf4q\xbeGB\xf3\x01vK6\x05\xe9\xaee\x8c\x04\xedA\xa2\x06%\x90\xb72c\xa4\xf4;\x0b\xfa\x90\xb0\xa068\xa47:\xa46<\xf1\xa6g\x0c\xd4\xbd\xcf\x18\xa2\xd8\xf1V\xb0]\xe4\xa6\xbeG\x82B\xb0\x97\xa8ctW\x19\xf1\x03\xe7\x183J\x88n\xaa\xbep\x9e\xc0\x10n\xa4\xf4{\xfa|+\x17g&O\xc6\xb4b\xdd\xac\xc6\xd2\xb7!ru\xef\xebd=\xd2\xbb\x16\x80B\x19=B^Fc\xc8\xb9\xb5X\x17{\xc5\xae/\xaa\xc1\xed\x87q\xbd\xc6oJX\xdb\xd6\xebB \x1a\x19\xf8\xc3\xe0W\x82WaS\xe1\x18_@\xfbtu\x1a\xf1?\xc3\xfedc\x0c\x8cV&\xfd\x93\xf6r\xd168\xaeo\xaa\xf1Mc\xb6\x9c\x9e\x13\xfa\x14]\xf1\xcf~\x8e\x83\xa7o\x9c\xe90B\xcb9\x1an\xd3a\x84o\x99\xa3\xf1\xe6\x18Fha\xbe\x8eBj\xff\x14\xe5*\xc5v\xd4=y6\xda7\\\x9e\xe7aT\x0c\xf9\x17\x94<u\xd1\xdf_\xdf\xcb\xda\xe0\xb408L\xc5\x1eU\xd7\x0d+L\xc7&n\"\xa9\x9b\xc7|\xdd0A\xben\xc8\xd7\x0dq\xe4\xeb\x86\xd8\xd3\x90\xaf\x1b\xe8{\x8b|\xdd\x10\x00}HXP\x1b\x1c\xd2\x1b\x1dR\x1b>_7X\xe4\xeb\x06\x0d\xfa|\xfbs<1\xe5\xeb\x86\xcf\xbb}\xf2u\xc3\x17\xd18\xf9\xba\xc1\x85\x14\xe5~\x89\xd7\x0dj\xafvvY\x8b\xa2:?\xdb\xd7\x9fp\x1bKb\x07\xa7\xed\xcf\xfa\x85\xf4\xf3(\x0fi?\x94X\x12\xec>\x88\xda-\x9fZ*\x8d\xec\x9b\xcf\x0c\x91\xa6\xa75Yj\x8d\xa2\xe7E\x85\xf5\x03^\x9f\xf5A|\xaa\xa5\xacmY\xacU\xb4`\xd9\xb3#}\xae\x94\xa7\xe3\xb3uY\xf0J\x9c1!\xd8\xfa\xe3]\x13|\x0658C\xf8\xe0h\x10\xca\x02\xc4\xf2\x80\xd9\xaf\xf1\x0d\xf1\xa8G,\x13$\x94\x0b\".Zn$\x14\x0c\x12\x0b\x07\x18'/7\xa8\xae_n$\xd6\x15f\xd4\x17p\xcecn\x10'\xac)\xec\x04\x16u4s#\xea~\xe6\xc6]\x16\x9a:\x05O\x81sk#\x8b\x1d\xbb\xc1M\x9c\xdd\xc8\xd2\x90\xceqn`]\xe6\xc8\x82G.vdG:7\xa8\xeeun\xc4\x9d\xee\xdcH\xee\xc8\xb4kf\x8b\xe4\xcfQ\xf7LC\x84]\xfc\xdcX\xa0\xa0\xd8-\xd5\x18H'A7\xeeh\xeeO\xb9\xc4\x84yJ\x86\xb4#k\x8f\x19\xb7\xd9\x163\xb4\x0d35\x0e\xa9\xb7\xdc\x16)\xb7~S\xa4\x8fH\x8b\xd4\x8e\x03\xf3;\x0f\xcc\xed@\xb3n\xc5-\x12n\xc7-\xf0\xae\x99n\xcc\xd0\xdf\x0c\xbd\xd1\x9d;\xdd@\xb8|\xbaq\x17\xd5F;\\\xbaq\x17E\x8e\xfb'\xf9\x81\xf5T%\x0b\x0ey\xb6\xbaA\xf3wu\xe3.\xd4\x8f\xf5\x98u\xe3.J\x1c\xf7\xb9u\xe3.\xcaJ\xf0\xdau\xe3.\n\x8d\xf4\xfbu\xe3.\nL\xf3\x1cv\x03\xefO\xec\xc6\xed\xd7{\xce\xe9\x1c\xe9\xc0L\x92\xe9wvvC\xef((zN\xdc\x06\xa7n\x7f\xbf\xa0\x83'\x89\xf7d1ggN\xb7\xcb[\xe4\x13'\x06\x89s\x82F>q&\xf7k\x8b\xf4\xa1h\x91\xdaq`~\xe7\x81\xb9\x1d\xe8\xaeO\x9c\x9d\xa1\x9e\xdc}\xb4\xe6\xc2N\xfenD]\xff\xdd\x985P\xe6\x0d\x13;\x93\x9emK\xe6\xc87\x8c\xc1\xec\x8eF\xe3\xb6\x8f\xf1\x00\xbe{\xf1\xea\xc9\x9f\xce\x9e?=\xfb\xfe\xc5\xe3\x1f\x88\xbc\xee)\xa6\xd2\x1e\x7f\xf7\xf6\xd9K<]}\x8c\xa90\"\xf7}\x8c\xa9\xb0\x97\xcf\xb1\x14\xf81:B\xfcrjK?zk\xe8\xc1\xbd\xf9\xbed\xe7PT\x1be\x7f\xb7\x99\xe1\xcc\xc0O2\xcah\xf4|\x9dBSBb/\x1c#\x99G9\xc6\xecq2{:&\x103\x8e\xb1X\xf1\xd3,\x0d\x1adn\xd9\x18\x8b\xd5!\xa9 \xe6\x1c\xb64\x9e\xa8\xe3\xce\xdb\xe2\\\xfb\x92\xc8=\x9a\xb5\xeb)6\x95\x8d\xaf\x93 \xba\xa8\x80\x19\xf9\xf8\xe3\xd7\xbc:\xe9\xaf\x8d\xa3\x06u\x14\x1b\x15\xcd\x88v\xcb\xaa/g?\xb1\xd6\x1c\x0b\x85\xa6P2\x13\x8a\x88$\xab\xbf\x85\xc3i\xa3\x9f#Z\x8e>\xee%\xac\xfb)\xab}_\x17\xfc;\xa9\xbb\xa0\x84\x1dP\x82\x164Rt\xa1\x91<\x8f\xcf\x9a@fL\x1e\xfb\xc3\xea,\x92\x8b\xdf\x8dd\xe5\xc2,\x05K\xf0\xcd\xb7\xbf\xfb\xdd7\xff;\xe5\xd5\x99\x8a\x86y\xca\x06\x95\xf9u\xbd\xff\xf6w\xbf\xff\xf8\xcd\x97X\xfc9;\xb2\xd7\x87UY\xac\xff\xc4\xafG\x17{\x1f\xf9u;H\xec\x99\xb6\x8f:\xb4\\g@\xfcs7!\x11\xa5P\x89\xb7c\xccj\x949\x87\xf9\xee^x\xdf\x14uS\x88\xe4q|\xabe\xb7\xa5\xa6\x146q\xbaI\x9dh\x12\xe7\xf1\x19\xcaL\x1e\x97\x893x\xa2Ba\x86Ra\xde\xdc=C\xb90G\xc10w\xd6\xbe\xbb\x82\xa7\xcf\xd776[\xcf\x9d\xab\xe7\xcc\xd43\x1a\"m\xa6\x83%\xe6\xe8[/u\x9a/\x8aEbqiE\x95\xe7\xb0\xba:\xc3\x1b\xc1\x88\xa5\xa2\x95fu\xfd7V\x89\xa2\xe2g\xb4\x13\x11\xed$D8\x01\x91'w\xfa\x94N^!\x89-\xa0\x910\xf7\x91\xd7C\xb2\xb2 Ia\x90\xba\xfa%)\x0e\xd2\x94\x07\xe9k\xdd\xed\x163ee\xbb\x815-}5K\x9b^\x93\x94L\x9b\xcc4f\xacZ\xb7P\xc6\xb4\x15\x8aX0b\x91(\x97\xe0\x89%\xc1^pS\xefN_\xc8U\xf4\x89\xf2\x05|\xac\\\x01\xe7z(\x9a\x10\xed\x03\x9fY&\x04\xdf\xed\x95w\xa2\xa8aW\xb4%g\x1b`\xda\x0f1*O\xfb)\xba.L\x07\xf4_\xb7\xe2\xa3\xb3{|&\x8f\xed2P\xad\x89\xe9M\x11\xa2\x8c\xfeN\x8c:\x80!\xbf\xc4i.Q\xb5\x01Ju\x80\xe2\x1a\xa0\x14\x08\xf8\xa5\x82D1A\xd5\x14\xd0\xb5\x05@\x13Dp\xedi\x81\xe9@\x16q\x95\x03E\xed\x80W=\x91\x9c\x81\xa2a`\x08\x17\x98\xadtt\x03\x8d\xec\n\xd8\x8e@\xa2@\x10\x1a\x03GkH%0$R\x15\x12I t\xfa\xc1,\xa2\x01~\xdb\xb8\x14y\x80D\x13 \x13\x02\x08\xbd\x860\x80\x91;\x99\x84\x8f\xe3v0hc|B \"\xd5\xa7l\x9d\xb0Fse\x02GHr\x1b\x84q%B\x98\xbc=fl\x8f@v\xbc\x89\x9b\x96\xafKA{\xdcL6{\xed\xdb\xa2Z+\xea{\xbb\xab\xdb\x07\xed\xe6#\xfc\xfa\xf4\xb7\xff\x923\xd5\xc6\x16\x99x\xb9\x00\x17l\x00=B\xec\xf8\x88\xfa\xe2GC\x05,\xfdI\xdc\x00\x00\xb4K?\xe4L\xb5c\xc4\x9d\xe6\x11Mzk\x87\xa4\x9c\xa96^A\xc0/x\xf9\xac\x14U9P\xd4\x0ex\xd5\xdf\xc4Y \xef\x0e\x8d\xaa\x11\xaa&tgf\x84\xdb\xf2R\xc5C{\xbd.\xf5\xc1\xa9>\xa2\xfe\xbf9S-\xc2kv\xa9/\x11|^\x97\xfa$\xd2cu\xa9\xcf\xd1\xfcM\xf1\x9e\xa5\xa8\xf2\xe1\xf7j\xd3\x0f\xcb3\x94\xceOZ\x9c\x17\x153\x1b\xa7\xee\xb1\x80$#\xe0\xc4(G\x9ej\x98<\x8f}\xc7\xd7\x17\xbf\xf9\xd6\x948\x18\xb7\xf2y\x05\xefx\xb5\xe1\xcd\xae\xa8\xc4 \x88\x0bY\x16\x13X\xff\x83Tu\xfb\xe1\x04V\x07a7\x82o\x9f\xfe\xe9$ \xee\x93\xdar^\xf2F@!@\xd4\xd3\xb2\x84\x8a\"\xf7\xa6+.\x04o\xe0\xfd\xffE\x1c\x08\xe3\xbe\xb2}\xcdr\xde_\x05\xd4\x18\xc2w\xe4\x9c\xf77\xb4\xc7\xc9y\x7fs\xde\xdfc`K\x029\xef\xaf\x079\x11\x8fAN\xc43@N\xc4\x83z\x87\x14\x90\x82v\xf3\xa0\x81\xb1\xc1\x8f\x11\xbfe\x1a\x838\xd7A\xc2|\x07\xe8\xcb\x91\x1e \xcd\x07\xd8-\xd9\x14\xa4\x9b\xab1\x12\xb4\x07\x89\x1a\x94@\xdeq\x8d\x91\xd2\xef,\xe8C\xc2\x82\xda\xe0\x90\xde\xe8\x90\xda\xf0\xc4{\xb31P\xb7hc\xa0\x0d\xa2\x16 \n\xc1^I\x8fA\xb6\x17[\xcc(!\xba\xa9r\"\x1e\xaa\xc6\xd2\xb7!9\x11\xcf\x17\xd0>9\x11\xcf\x17\xd189\x11\x8f\x0b)\xca\xfd\x12\x13\xf1\xe4\xbc\xbf.\xe4\xeb\x06\x83|\xdd0@\xben@\xbd\x93\xaf\x1bb\xcfZPO\x9f \xcd\x07i{\x8b|\xdd\x10\x00}HXP\x1b\x1c\xd2\x1b\x1dR\x1b>_7X\xe4\xeb\x06\x0d\xfa|\xfbs<1\xe5\xeb\x86\xcf\xbb}\xf2u\xc3\x17\xd18\xf9\xba\xc1\x85\x14\xe5~\x89\xd7\x0d\x9f\xa1'{\xce\xfb\xeb\x07\xb5[\xe6\xbc\xbf1\xa19\xef/\xa5\\\x90\xf3\xfeF\x90XW\x98Q_\xc0\xb9\xe2\xb9A\x9c\xb0\xa6\xb0\x13X\xd4m\xcf\x8d\xa83\x9f\x1bwYh\xea\x14<\x05\xceI\x90,6\xe7\xfd\x8d\xb9%\xbaAuVt#\xee\xc2\xe8FrG\xa6]3[$\x7f\x8e\xbag\x1a\"\xe7\xfdE`\xce\xdc\x9fr\x89 \xf3\x94\x0ciG\xd6\x1e3n\xb3-fh\x1bfj\x1cRo\xb9-Rn\xfd\xa6H\x1f\x91\x16\xa9\x1d\x07\xe6w\x1e\x98\xdb\x81f\xdd\x8a[$\xdc\x8e[\xe0\x1d]\xdd\x98\xa1\xbf\x19z\xa3\xbb\xca\xba\x81p\xa0u\xe3.\xaa\x8dv_u\xe3.\x8a\x1c\xf7O\xf2\x03\xeb\xf7K\x16\x1c\xf2\x13v\x83\xe6=\xec\xc6]\xa8\x1f\xeb\x7f\xec\xc6]\x948\xee\xc1\xec\xc6]\x94\x95\xe0\x03\xed\xc6]\x14\x1a\xe9E\xed\xc6]\x14\x98\xe6\x87\xed\x06\xde;\xdb\x8d\xdb\xaf\xf7\x9c\xd3y\xdc\x97\x99>\x03\xe6\xbc\xbf\n\x0bt\x04\xfa6\x97\xc4{\xb2\x98\xb33\xa7\xdb\xe5-\xf2\x89\x13\x83\xc49A#\x9f8\x93\xfb\xb5E\xfaP\xb4H\xed80\xbf\xf3\xc0\xdc\x0et\xd7'NL\x18Z7\xb4\xe6\xb0y\x1e\x86\x88\xba\xfe\xbb1k\xa0\xcc\x1b&v&E\x05\xbducvG\xa3q\xdb\xc7H\x0d\x9b\xebFb0]7\x12C\xec\xbaA\x0f\xbc\xeb\xc6\xacp\xbcn\xa4\x1f\xbd5\x96\n\xdd\xeb\x06)\xa0\xaf\x1b\xc9<\xca1f\x8f\x93\xd9\xd31\x81\x98q\x8c\xc5\x8a\x9ffi\xd0 s\xcb\xc6X\xac\x0eIM0\xe7\xb0\xa5\x81\x0da\x9c :\xe7\xfd\x1d!\xe7\xfdM\xdb\x05%\xec\x80\x12\xb4\xa0\x91\xa2\x0b\x8d\xe4y|\xd6\x042c\xf2 g\xc9\xb2HV.\xccR0\xa4f\xcf\xb2\x98\xa5h\x98\xa7lH\xcf\xaaeq\xb7\xc5\x9f\xb3#\xbb\x81\xac[\x16\xe9\xd9\xb7,\xa8\xc4\xdb1f5\xca\x9c\xc3\xfc>=;\x97\xc5\x1d\x94}\x9f\xf3\xfe\x1e#y\\&\xce\xe0\x89\n\x85\x19J\x85ys\xf7\x0c\xe5\xc2\x1c\x05\xc3\xdcY\xfb\xee\n\x9e>_\xdf\xd8l=w\xae\x9e3S\xcfh\x88\xb4\x99\x0e\x96\x98\xa3o\xbd\xd4i\xbe(\x16\x89\xc5\xa5\x155\xe7\xfd\x0d\x82<\xb9\xd3\xa7t\xf2\nIl\x01\x8d\x84\xb9\x8f\xbc\x1e\x92\x95\x05I\n\x83\xd4\xd5/Iq\x90\xa6<H_\xebn\xb7\x98)+\xdb\x0d\xaci\xe9\xabY\xda\xf4\x9a\xa4d\xdad\xa61c\xd5\xba\x852\xa6\xadP\xc4\x82\x11\x8bD\xb9\x04O, \xf6\x82\x9bzw\x9a\xf3\xfe\x06g\xf2\xd8.\x03\xd5\x9a\x98\xde\x94\xf3\xfeF\x86\x03r\xa9 QLP5\x05tm\x01\xd0\x04\x11\\{Z`:\x90E\\\xe5@Q;\xe0UO$g\xa0h\x18\x18\xc2\x05f+\x1d\xdd@#\xbb\x02\xb6#\x90(\x10\x84\xc6\xc0\xd1\x1aR \x0c\x89T\x85DR\x02\x9d~0\x8bh\x80\xdf6.E\x1e \xd1\x04\xc8\x84\x00B\xaf!\x0c`\xe4N&\xe1\xe3\xb8\x1d\x0c\xda\x18\x9fP\x82H\xf5)['\xac\xd1\xfc\xe7\x9a\xf7\x17S\xb6\xef\xb4\xf7s\x0b\x82w\xe9\xa7d\xab\xe9\x1fN\xf4\xe1I\x16\xd6\x90\xbe\xf7\xfe<_fH\xb8\\\x8b\xb7\x05/76\xd9\x16\xdf\xc8-\xe6j\x9c\xf5k\xf8t\xb8\xd4?p\xf1B\x8eu\xa1J\xf8\x86\xb7\xfb\xbaj\xb9MK\xd6\xd8\x7f\xabJ\xd8\xa8Tc \xffq\xe0\xcd\xf5\xc3\xb1\x1cx\xf3\xfa \xec\xb8\xb8\xa87}a\xecT6x\x7fT\xb6\xc7\x15\x1c*~\xb5\xe7kY)\xde4u\xd3\x15`X\xa5v}\xc1w\x93\xd48\xde\xb5\xcc\xbfz\xa9\x0f\x1c\x0f\xb9\xc0 [\xd7\x1b\xc7\x18\x0d\xefkB\xfbS\x13\x19\x88T\x86\x0d\x17\xac(\x1d3ehK\xe0\xdd\nD\xb6\x00\xb1\xa5_\xbe~vh\xbc\x9b?\xc4\x84\x15\x1fS\x1a\x8f\xe1\xfd\x9b\x17\x0f\x1b\xde\xd6\x87f\xcd\xa1b;3\xd0\x0fU\xf1\xd3\x81\x97\xd7 G\xbf(\xb6\x85\xb9\xe8\x10:@\xacW\xa0\xce\xad\xd5\x14\xac,\xfe\xc67~\x0f\xfe}S\x8bz]\x97\xb0:l\xb7\xbc\xb1\x8dv\xaaS\x86\xe9\xba\xc1\xee\xd0v\xb3\x110\xffn\xaa\xe4\xac\x0d\x84\x0e\xab+\x0e_=\xfc\n\xd6\x17\xacak\xc1\x1b\xf9\x15\xaeN}\xd0\xf2\xf3\x1d\xaf\xba)\xf7\xfd\x9b\x17\xf7Z\xd83q\xe1\x95\xa6\n\xd5\x05\x86\xf2\x7fU\x8a\xdb\x1e\xca\xf2\x1a~:\xb0Rjp\xa3\xf5k>\xa54y\x9f\xb5\xc1\xd8Z\x1fdQ\x1e\x9e\xd7\xf5y\xc9O\x95\xceV\x87\xed\xe9\xd3C\xa3B$|\xf8Z\xd7D\x89m/\xeaC\xb9\x81\x95\\2\xbc\xf2\x18\xacYUW\xc5\x9a\x95j\x0c\xf9\xbf|\x9f\x9f\x9e\x9f\x9eH\xd5\xaa\xe0\x0f_\x9d~%g/\x95Jn\xbd\xe6{\xc17_\x9f\xfe\xc2\xff\xfa\xf3\n\xf6R\xd9\xc5\x9a\x9f\x80\xe0l\xd7\xc2\xa1=0\xa9\x0e\x1d<k_\x94\xb2\xa4\xa2V\xcaX\x15\x15k\xfc\x9bn\x95\xbd\xeez\xcfM\x1a9\x15\x0e\xd0\xfb\xb0\x9e\xebL\xb6\xc4C;\x8cJ,\xf8\x95j\xea\xc7\xd5\xf5)\xfc\xb1\xfe\xc4/ys\x12\xdcP\xbd\x7f\xf3\xc2n\xd8\xa4\xa8`\xf4@5\x83r\xf8p!\xc4\xfe\xc3\x89\xfeo\xfb\xe1\x04\xea\x06\xaa\xda\xfcz\xa2z\xe3\x9aUP\xab\xd1)5\xe2\x17\xc8\x05\x1c\xf6&,s\xe0\xbb\xbc\xb9\xe4\x8dV\xcd\x8e\xedM\xbaIUrQw\xb1\x99\xd5ue\xa13\xdd1\xff\x05\xe3\xb6.\xcb\xfaS\xfb(\xd0\xb6\xbf\x84\xe7\xdb\xbeF\xb2[\xd8\x98\x80]\xa5\xd5f\xa6m\x0f;\xbe \x04{\xfb\xa5\\\x9c\xfe\xf8\xee\xddk\xf8\xe1\xd9;\x9b[\xf0\xfd\x9b\x17z\x8c]\xab\xf5\xd8\xbf\xe7\xf9\xaf\xe9\xb0xw\xbd\xe7\x7f\xfd\xaf\xbfz_P[\xe3\x83\xea\x0f\xba\xbf\x99e\xe4D\x87t\xab7\x875\x07V\xe9%\xccO\xac\xfb%<\xee\xa3\x94\xb4*\x99\"\x93:\xd3[\x865[\xcb\xb9\xa5\xae?\x1e\xf6`\xfc\"a\xc5\xda\x00\xed\xb1\x8e\x85uy\xff\xe6\x85*\xe3\x05\xbbT]p7\x18C\x1b=\x88\x98\xad\x92\xfc\xff\xcb\xba\xd8\x00\xabB\xf6 ]@5}4|[7\xfc\xc4\n\x90r\x99(VEY\x88k\xa88\xdf\xb4z+\x04j\xcak.\x83\x04\xce\xba\x92\xd3lu\xce\xd5Kj\xcc\x9e\xc2\xfd\xf7-\xb7\x81\x9c\xa4\x96d\xf7\x94s\x96\xee\x9f\xacb\xe7\xa1\xda\xaf\x1a\xce>\xca9\xc8\x08>\xfd\xda\xdf\xa3^\xd6\x82?\xd29W\xb7\x87j\xadG\x98\xac\x87\x99\xbb\xd6\x87\xa6\xe1\x95(\xaf\x07\x97\xf5\x81\xe9R\xe5\xba\xdcn\x8bu\xc1\xca\xc8Z\xb6:l\xa1\xe1r%\xe2'*\xb6M!\xecG\x0f-\xd7\xd1\x0b\xbbq\xe9\x15\xb5\xe2\xe7EU\xc9\xca\xca=m`q\xb9\xde\xf3S\xdd\xff\xd9\xbehO\xd7\xf5.4\x1b\xbfU#\xb5\x85Z\\\xe8\x89\xa2\x9a\xceRp\xdf\xc4j\xe4\xbb\xbd\xb86C\xfbk\xff\"X\x9c_\x08X\x05&%Ui\xb51/v\xfb\x92\xcbEV\x0d\x18h\xf7|]l\x8b5\xb4|\xc7*Q\xac=\x1cV5Vgl\x81\x10g5\xec.\xe9G9\x1d\xad80\x13\x89\xb2\xdf\xe0\x1c\xedcl\x1c\xa3U}\xe9\xef\xd3F\x05f(8\x93\xe7\"J\xf6\xe1qu\xfd\xa1?\xac\xb1\nX\xb3*D#\x07\xb1\xbf\x84NQv\x8d`em\xba\x1e0w\xd3\xca\xd9Y-4\xba\x84\xab\xf1\xb6p\xb2\xfd\xebvu\x9e\xae\xf9\xda\x0e\x9c\xb2X\xa9b\x9bu\xa4\x85\xf6\xb0\xdf\xd7\x8dZ\xc1\xf7l\xfd\xf1\xe1\xa1\x92\xff\x91\xeb\xb6\xee\x17\xee\x11d\x16z\xff\xc6\xa6\xde\xc2A\xe8\x89\xcdN\x0f\xad\x9cX\xd9fS\xe8\xb9\x02\xcey\xc5\x1b\x15\xaaT\x1f\xb4lh*\xa7<Y\x1e\xdd\x84\xee\xef=\xbbb\xb2\xf3\xc37\x8f\xe0\xb5,\xbf\x9c\x17LU\xd80i\xc2\x93_\xfd*\xb0L~_\xd7\xb0\xadk\xf8\x03\x9c\x9e\x9e\xfe\xab\xf71Y\x18V]\xfb\x1f`\xd5\xf5\xa9,\xc6\xf7M\xbd\xbb\xbf\xad\xeb\xaf\xfd\x8f\x9e\x9e\xfa\xd7\xbfb\x0b\xf7\xa5\xa8\xf7\xaa\"\xef\xea\xfb\xffK\xca\xfa\x1a\xfe\x1e\x98\xc3C\xf2\xfe\x11\xd6\xdd\xb7\x11\xdd\xfd;\xbbd\x8b)\x0f\xfe\xa0\xf6\x86\xf2+\x0bh\xa8h\xef\x7f_\xd7\xa7\xeb\x92\xb5mDA\xba\x88\xf2%]\xc7\xc1\x8b\xfe2\xfc\xc3\xfb\xcb\xc3\x87\xb2[\xe3\xca\xf8\x96\xed\xb8\xdc:=\xd6\xa5=\xe7\xe2\xa9\xbeRx^\xb5\x82Uk~\xff\xeb\x94\xc2;\xe5\x84\xea\x12\xec\x05\xbf\x89\xf4\x82\xd7\xd7\xe2\xa2\xae\x02\xfd@\x97\xf1\xfb\xba\xbe\x7fzz\xea_\xd8\xba>p?\xf8\x8c\x1aG\xaa\x87\xa4v\x10)\xe4\xb9\xd6\xf8\xd3go\x9f\xbcy\xfe\xfa\xdd\xab7_\x87\xee*\xfb1\x17\xfe\xb0\xfetP\x9b\xbf\x8dh\xf3\x87:\x10{Oj\xf2\xd1\x1f\xe0\x7f\xedW\xa7\xdf\xd7\xf5\xdfOOO\xfd\xfdP\x16\xfaDn\xa8\xe5\x1b\xac\xba\xde\xafN_\xf2O\x91\xf2\x17[\xf5\xc6\xff\xef\x0fP\x15e\xb0\xe3\x05\x95\x1c\x18\x1e\xe1\xf7&\x15\x0c\x881%\xd5u;}_\xedX\xd3^\xb0\xf2]\xad'\x8f\xa5\xaa\xe1\xfcM\x1e\xfcU\xcb\xd9uj\x18\x98}?]Yu>y\xf7\x89\xc0\xdc \xca-\x9b\xfbS\xf7\x1c\xdb\xcd\x87\xdbCY\x9e\xaa\x1f\xe4V\xfe\x1e\xb0\xc1N@\xee\x12L|G\xa7@\xdd\xe7\xdc\x1f\xeb\x96\xdd\xaa\xbc\xb6g\xee\xa3\x8b\x94\xee\x08\x01l+\xb8\xeb\xfeTC\xdd\xf1\xdc{x\xcf\xfd)\xb3_\xb0EV7\x01\xc0\xcd\x18\xf9j[\xd7\xa7+\xd6\xa8\xca^=\xbc>\xfd\xdbWZ\x8b\xea\\\xea\x94\xe7?\xa6\xab\xa2~%e\xf8\xb6\n\xff\xfe\xf6\xd5K\xcfO\xb2\xa5\xe5\xcf\xfd\xad\x93\xdeI\xd7r\x161\xdb@}\xb2=\xb4\xdc\xde0\x9f\x1fJ\xe6\x890~,F\xbe\xb2\xe1\xfd\xc6\xed\x04\xf8n\xc57\x9b~\x0b\xa7/\xd9\x9d\xe2\x98\xe7\xfej\xb0\xa9\xd2W\xeb\x1f\xfeM*\xe8\x83\xb9N\x19Y\x19l\x13\xb8\x87\x81\x99\xb6\x1e\x05\x8e`l\xfdQ\xce]\xfd\x95\xc0\xb6(\xb9\x7f\xb5\xb1s\xddk\xde\xb4u\x15\x1c\x9c\xe6.r[4\xad8S\xed\xf8\x07\xf8\xc6/\xb9{A\x91J\xcc\xf3\xdf\x92\xd7=\x89P\xa9\xbeR\xba\xfc\xea\x11|\xe5\x1a\x9bc5\x9c\xeaZ~u\x12\x92\xa7\xea\xf7\x92\xed\xa4\xcc\xffWW\xe1\xff\x04_\x90\xf5\x9b<O\xad\xe4\xf3\xad9r\x8e\xfb\x9a\xee\x0dE\x0b\x9fxY>\xf8X\xd5\x9f*5\x9b\\\xb0\x16\x18\xac\x0f\xad\xa8w\x811\xe4\xfae\xdc\xe5O\xf4\x11f2\x0e\xf4\x149(\x8e\xec\xc0\x9e\xe3%\xd3]\xda\xfd\xb1\x0fj0\xda~~Q\x97\x1b\x13\x15X\x95\\\x0f\xe5\xa2\xea\xc6\x07\xe8;P\xb7(=d\xdc\xdfQE8\xed\x16\xf5\xfbr\xf6\xb2*<\xba\x1c\xb3w\xc6\x7f\xfd\xaf\xbf~\x1d\x18HK\xf4\xb9\xf1\x07\xc3\xddN\xa9J\x8a\xfc\xe6\xf4\xdbo\xbem\xbf\nt!\xfd_\xc1\xce\x07f\x93\x07\xf0\x967\x97\xc5Zj\xef\xe1\xbanwu\xfbp\xc5Z\xfe\xb0\xb7\x14>\xbc\xfcf\xc5\x05\xfb\xe6\xa1\xb2\\\xb6\x0f\xff\xae\x99X\xff\xd0B\xce{\x7f\xd8\xf6\xb0\xdb\xb1\xe6\xfa\x11\xfc\xc0\xb5\xb9\xed\xbb\xeb?\xaaG\xe1\xa7\x03o\n\xde\x1a\xdb\xa7T\xf3yq\xc9+\xc3\xe9\xb2sV\xbd\xe7\xba\xc6\xcf7\xc72\xcc3\xd6\xf06\xa8\xc2\xbdo\x7f\xfd\xeb{~\xeb\x1d\xb4\x87\xf5\x9a\xb7\xed\xf6P\xde\xa4\xd9\xceO\xe6\n\x1a\xb3\xc2\xa6,?\x83(z\x7f\x13\xb9\xbdA\x91\xb3\x82%\x87h\xe9!N\xc2\x12(\xf2\x15\x86t\x15&[E\xd5\x05q\x95!IUA2\x95'0\xbdy\xe7\xdeS9\xa1\xae\x99\xe0\x9bG\xb0WW\xa1j\x03\xf7\xa1\xdd|\xd4a\x98?@Q\xb5\x82\xb3\xcd\xbdE\xbb\xd9\xcd\xf6\x81h\x06\x02j\xae\x81h\x99\x00U.\xc0e\n@\xf5\x1d\x18\xf4\x9fh \xfdh\x9c\xff\xa5?\x89\xb9\x0d\xd5\xc0\xc5\xe3\x87q|\xfdPUG\x91\xf7\xb1\x91\xf4\xb11\xf3\xc71\xf0\x03\x02\xa9\xd1\xf1\xa9q\xf0\xe3\x11\xef\x11Mzk\x0c\xe7p\x0cz\xd2gbT2d\x04\xf9\x05Gt\x9cu\x8b\xaa `\x16\x04\x0d\xd4Zj\x81\xaa)\xa0k\x0b\xf15\xb6{\x0c\xb5\xd6Z`\xfa\x91E\\\xe5@Q;\xe0U\x8f\\\x93'\x0f\x87\x89\xce\xf8X\xe6\xa8\x1a\xa1jB\x8fD\x8e\x889\xbeT\xf1\xd0!\xab\x97\xfa\xe0T\x1f\xd1\xe0\xdd\xc1P\xb4\xb4\xb0\xdbK\xd5\x01\x1b4{\xa9\xef\xc5C^/\xf5%B\xc0\xea\xa5>\x89\x0c7\xbd\xd4\xe7h\xc1\xa2\xf1a\xa1\x97)\xdfh3\x87\x8c\xd2\x1c\x88\xbc,'\x92\x1b\xdb\xfa\x8b\xab\xa8:\x16\xf1\x16\x89\xae*Q\xad\x02i\x9b\xfc\xee\xca0\xe9\xec\x9d\x97\xdaYj\xd3\x81\xde;\xfe\x9b\xc9\xd4\xa9o/~\xf5M0e\xe7K\x95\xa5_q\x03\xcbR*\x0d.x\xc3\x153JM\\\xa7\x00\x7f\xe1\xf7\x1a\x0e\xff}h\x05\xb0\xf3\x86\xf3pu\x0d\x15\xacnd\xe7P7\x93\xc1\xef+\xce\xe8\x8e\xb3\xca\xd4J\x17\xfd\xf1~\xffG\xd6^\xc0\xa6\xe6\x9a\x87c\xa8\xf4Rt\x1bZ\x95\xc5\x95\x87\x92\x12s\xfcx*\xb7\xf7\xa3{mC\x7fW;qf\xf8\x06CF\xbf\x9f\xf7\xe5[\x12\xc2\xf9\x15\x17\xe8\xf3\xf1\x04\x8e\x0bv\xfc\xe8F2^^\x8d\x8d\xcd\x8dyvY\x0b~\xd7Y(U\x19<\xd3\xd2\x18\x84\x02\x00\xb1\x10`\xc5\xa3\x9eDOEC\xe0\x9c\xc8,\x1e\xc0\xdb\xe7?\xbc|\xf6\xf4\xec\xc7\xb7?\x9c\xbd\xfb\xcf\xd7\xcf\x90\xfeV=\x8e%\xbc~\xf3\xec\xcf\xaf\xde=\x9b'\x01\xe9ff\xe1\x92\xf1\xea\xf5\xab\xb7\x8fc^g\x16\x9d\xf7\xd9<}\xe0\xe7\xfb1\xde\xaa|\xa4?\xb6\xe7\xef\x8c\x9dE\x13\x8c\xe5D\xa5S\x95\xa2%\x0d(\x03\xa3k\x16B\x82g\x7f\x9b>R\x0eP\xd8P\x08\xc1vy\x04\xaf\xd5.\x87\x958q\xb1\xab\x8c1\x12\x06\x0e\xe5x\xaaA\xca\x7f@;+k\x84\\j\xdc\x88\xdf\x8b\x8cA\x9c\xeb a\xbe\x03\xf4q\xbeGB\xf3\x01vK6\x05\xe9\xaee\x8c\x04\xedA\xa2\x06%\x90\xb72c\xa4\xf4;\x0b\xfa\x90\xb0\xa068\xa47:\xa46<\xf1\xa6g\x0c\xd4\xbd\xcf\x18h\xff[\x8b\x04\x85`/Q\xc7 \xbb'[\xcc(!\xba\xa9\xfa\xc2\x15\xd5\x86_\xd1\x8aF\xeb\xf7\xf4\xf9\x16\xed\xd1lq\x1b\x1aK\xdf\x86(\xf7\xe6\xde\xb3}u\xad\xf6\x10}^\xfaB\x19=0A\xcd4\xe4\xdcZ\xac\x8b\xbd\"o\x17\xd5\xe0\xf6\xc3z\xd8\xa2E\xb1\xb6\xad\xd7\x85\x12\xa4\xcf\x92\xa87\xf9\x95\xe0\x15%Y\xf9\x17\xd0>]\x9dF\xf4BL\xcc\x02\x8b\x81\xd1\xea\x14^U\xe5\xb5q\xa2\xd068\xaeo\xaa\xf1Mc\xb6\x9c\xc8\xc0\xe7]\xf1\xcf~\x8e\x83\xa7o\x9c\xe90B\xcb9\x1an\xd3a\x84o\x99\xa3\xf1\xe6\x18Fha\xbe\x8eBj\xff\x14\xe5*\xc5v\xcc0\x15\x92\xa1\xe1\xf2<\x0f\xa3b\xc8\xbf\xa0\xe4\xa9\x8b\xfeA\x0c\xabm\xedaeN18L\xc5\x1eU\xd7\x0d+L\xc7&n\"\xa9\x9b\xc7|\xdd0A\xben\xc8\xd7\x0dq\xe4\xeb\x86\xd8\xd3\x90\xaf\x1b\xe8{\x8b|\xdd\x10\x00}HXP\x1b\x1c\xd2\x1b\x1dR\x1b>_7X\xe4\xeb\x06\x0d\xfa|\xfbs<1\xe5\xeb\x86\xcf\xbb}\xf2u\xc3\x17\xd18\xf9\xba\xc1\x85\x14\xe5~\x89\xd7\x0d\x9fa\xe0\xf4~!\xfd<\xcaC\xda\x0f%\x96\x04\xbb\x0f\xa2v\xcb\xa7\x96J#\xfb\xe6\xdc \xee\xfd\x80\xd7g}\x10\x9fj)k[\x16k\x15\xc8]\xf6\xecH\x9fS\xe1\xdd\xcft\xf8\xf63\xa6b\xcb\xdf5\xc1gP\x833\x84\x0f\x8e\x06\xa1,@,\x0f\x98\xfd\x1a\xdf\x10\x8fz\xc42AB\xb9 \xe2\xa2\xe5FB\xc1 \xb1p\x80q\xf2r\x83\xea\xfa\xe5Fb]aF}\x01\xe7<\xe6\x06q\xc2\x9a\xc2N`QG37\xa2\xeegn\xdce\xa1\xa9S\xf0\x148\xb76\xb2\xd8\xb1\x1b\xdc\xc4\xd9\x8d,\x0d\xe9\x1c\xe7\x06\xd6e\x8e,x\xe4bGv\xa4s\x83\xea^\xe7F\xdc\xe9\xce\x8d\xe4\x8eL\xbbf\xb6H\xfe\x1cu\xcf4D\xd8\xc5\xcf\x8d\x05\n\x8a\xddR\x8d\x81t\x12t\xe3\x8e\xe6\xfe\x94KL\x98\xa7dH;\xb2\xf6\x98q\x9bm1C\xdb0S\xe3\x90z\xcbm\x91r\xeb7E\xfa\x88\xb4H\xed80\xbf\xf3\xc0\xdc\x0e4\xebV\xdc\"\xe1v\xdc\x02\xef\x9a\xe9\xc6\x0c\xfd\xcd\xd0\x1b\xdd\xb9\xd3\x0d\x84\xcb\xa7\x1bwQm\xb4\xc3\xa5\x1bwQ\xe4\xb8\x7f\x92\x1fXOU\xb2\xe0\x90g\xab\x1b4\x7fW7\xeeB\xfdX\x8fY7\xee\xa2\xc4q\x9f[7\xee\xa2\xac\x04\xaf]7\xee\xa2\xd0H\xbf_7\xee\xa2\xc04\xcfa7\xf0\xfe\xc4n\xdc~\xbd\xe7\x9c\xce\x91\x0e\xcc$\x99~gg7B\x99+\xddH\xdc\x06\xa7n\x7f\xbf\xa0\x83'\x89\xf7d1ggN\xb7\xcb[\xe4\x13'\x06\x89s\x82F>q&\xf7k\x8b\xf4\xa1h\x91\xdaq`~\xe7\x81\xb9\x1d\xe8\xaeO\x9c\x98\xac\xa7nh\xcd\x85\x9d\xfc\xdd\x88\xba\xfe\xbb1k\xa0\xcc\x1b&v&E\xe5XucvG\xa3q\xdb\xc7H\xcd\xd2\xeaFb\xeeV7\x123\xba\xbaA\xcf\xf3\xea\xc6\xac\xec\xafn\xa4\x1f\xbd5\x96\xca\x14\xeb\x06)\x7f\xac\x1b\xc9<\xca1f\x8f\x93\xd9\xd31\x81\x98q\x8c\xc5\x8a\x9ffi\xd0 s\xcb\xc6X\xac\x0eIM0\xe7\xb0\xa5\x81\xcd\x98\x9b \xba\xa8\x80\x05\xf3\xe8\xba1\xa7N\x88\x9c\xbb$y\xfarv\x9a\x9f\xb7\xcb\xc4K\x92\x15\xca\xda\xebB?G\xb4\x1c}\xdcKX\xf7SV\xfb\xbe.\xf8wRwA ;\xa0\x04-h\xa4\xe8B#y\x1e\x9f5\x81\xcc\x98<\xf6\x87\xd5\xd9G~\x9dZ\xe0\x04\xe5\xc2,\x05K\xf0\xcd\xb7\xbf\xfb\xdd7\xff;\xe5\xd5\x99\x8a\x86y\xca\x06\x95Xt\xbd\xff\xf6w\xbf\xff\xf8\xcd\x97X\xfc9;\xb2\xd7\x87UY\xac\xff\xc4\xafG\x17{\x1f\xf9u;\xc8\x1b\x99\xb6\x8f:\xb4\\'\xd8\xfbs7!\x11\xa5P\x89\xb7c\xccj\x949\x87\xf9\xee^x\xdf\x14uS\x88\xe4q|\xabe\xb7\xa5\xa6\x146q\xbaI\x9dh\x12\xe7\xf1\x19\xcaL\x1e\x97\x893x\xa2Ba\x86Ra\xde\xdc=C\xb90G\xc10w\xd6\xbe\xbb\x82\xa7\xcf\xd776[\xcf\x9d\xab\xe7\xcc\xd43\x1a\"m\xa6\x83%\xe6\xe8[/u\x9a/\x8aEbqiE\x95\xe7\xb0\xba:\xc3\x1b\xc1\x88\xa5\xa2\x95fu\xfd7V\x89\xa2\xe2g\xb4\x13\x11\xed$D8\x01\x91'w\xfa\x94N^!\x89-\xa0\x910\xf7\x91\xd7C\xb2\xb2 Ia\x90\xba\xfa%)\x0e\xd2\x94\x07\xe9k\xdd\xed\x163ee\xbb\x815-}5K\x9b^\x93\x94L\x9b\xcc4f\xacZ\xb7P\xc6\xb4\x15\x8aX0b\x91(\x97\xe0\x89%\xc1^pS\xefN_\xc8U\xf4\x89\xf2\x05|\xac\\\x01\xe7z(\x9a\x10\xed\x03\x9fY&\x04\xdf\xed\x95w\xa2\xa8aW\xb4%g\x1b`\xda\x0f1*O\xfb)\xba.L\x07\xf4_\xb7\xe2\xa3\xb3{|&\x8f\xed2P\xad\x89\xe9M\x11\xa2\x8c\xfeN\x8c:\x80!\xbf\xc4i.Q\xb5\x01Ju\x80\xe2\x1a\xa0\x14\x08\xf8\xa5\x82D1A\xd5\x14\xd0\xb5\x05@\x13Dp\xedi\x81\xe9@\x16q\x95\x03E\xed\x80W=\x91\x9c\x81\xa2a`\x08\x17\x98\xadtt\x03\x8d\xec\n\xd8\x8e@\xa2@\x10\x1a\x03GkH%0$R\x15\x12I t\xfa\xc1,\xa2\x01~\xdb\xb8\x14y\x80D\x13 \x13\x02\x08\xbd\x860\x80\x91;\x99\x84\x8f\xe3v0hc|B \"\xd5\xa7l\x9d\xb0Fse\x02GHr\x1b\x84q%B\x98\xbc=fl\x8f@v\xbc\x89\x9b\x96\xafKA{\xdcL6{\xed\xdb\xa2Z+\xea{\xbb\xab\xdb\x07\xed\xe6#\xfc\xfa\xf4\xb7\xff\x923\xd5\xc6\x16\x99x\xb9\x00\x17l\x00=B\xec\xf8\x88\xfa\xe2GC\x05,\xfdI\xdc\x00\x00\xb4K?\xe4L\xb5c\xc4\x9d\xe6\x11Mzk\x87\xa4\x9c\xa96^A\xc0/x\xf9\xac\x14U9P\xd4\x0ex\xd5\xdf\xc4Y \xef\x0e\x8d\xaa\x11\xaa&tgf\x84\xdb\xf2R\xc5C{\xbd.\xf5\xc1\xa9>\xa2\xfe\xbf9S-\xc2kv\xa9/\x11|^\x97\xfa$\xd2cu\xa9\xcf\xd1\xfcM\xf1\x9e\xa5\xa8\xf2\xe1\xf7j\xd3\x0f\xcb3\x94\xceOZ\x9c\x17\x153\x1b\xa7\xee\xb1\x80$#\xe0\xc4(G\x9ej\x98<\x8f}\xc7\xd7\x17\xbf\xf9\xd6\x948\x18\xb7\xf2y\x05\xefx\xb5\xe1\xcd\xae\xa8\xc4 \x88\x0bY\x16\x13X\xff\x83Tu\xfb\xe1\x04V\x07a7\x82o\x9f\xfe\xe9$ \xee\x93\xdar^\xf2F@!@\xd4\xd3\xb2\x84\x8a\"\xf7\xa6+.\x04o\xe0\xfd\xffE\x1c\x08\xe3\xbe\xb2}\xcdr\xde_\x05\xd4\x18\xc2w\xe4\x9c\xf77\xb4\xc7\xc9y\x7fs\xde\xdfc`K\x029\xef\xaf\x079\x11\x8fAN\xc43@N\xc4\x83z\x87\x14\x90\x82v\xf3\xa0\x81\xb1\xc1\x8f\x11\xbfe\x1a\x838\xd7A\xc2|\x07\xe8\xcb\x91\x1e \xcd\x07\xd8-\xd9\x14\xa4\x9b\xab1\x12\xb4\x07\x89\x1a\x94@\xdeq\x8d\x91\xd2\xef,\xe8C\xc2\x82\xda\xe0\x90\xde\xe8\x90\xda\xf0\xc4{\xb31P\xb7hc\xa0\x0d\xa2\x16 \n\xc1^I\x8fA\xb6\x17[\xcc(!\xba\xa9r\"\x1e\xaa\xc6\xd2\xb7!9\x11\xcf\x17\xd0>9\x11\xcf\x17\xd189\x11\x8f\x0b)\xca\xfd\x12\x13\xf1\xe4\xbc\xbf.\xe4\xeb\x06\x83|\xdd0@\xben@\xbd\x93\xaf\x1bb\xcfZPO\x9f \xcd\x07i{\x8b|\xdd\x10\x00}HXP\x1b\x1c\xd2\x1b\x1dR\x1b>_7X\xe4\xeb\x06\x0d\xfa|\xfbs<1\xe5\xeb\x86\xcf\xbb}\xf2u\xc3\x17\xd18\xf9\xba\xc1\x85\x14\xe5~\x89\xd7\x0d\x9f\xa1'{\xce\xfb\xeb\x07\xb5[\xe6\xbc\xbf1\xa19\xef/\xa5\\\x90\xf3\xfeF\x90XW\x98Q_\xc0\xb9\xe2\xb9A\x9c\xb0\xa6\xb0\x13X\xd4m\xcf\x8d\xa83\x9f\x1bwYh\xea\x14<\x05\xceI\x90,6\xe7\xfd\x8d\xb9%\xbaAuVt#\xee\xc2\xe8FrG\xa6]3[$\x7f\x8e\xbag\x1a\"\xe7\xfdE`\xce\xdc\x9fr\x89 \xf3\x94\x0ciG\xd6\x1e3n\xb3-fh\x1bfj\x1cRo\xb9-Rn\xfd\xa6H\x1f\x91\x16\xa9\x1d\x07\xe6w\x1e\x98\xdb\x81f\xdd\x8a[$\xdc\x8e[\xe0\x1d]\xdd\x98\xa1\xbf\x19z\xa3\xbb\xca\xba\x81p\xa0u\xe3.\xaa\x8dv_u\xe3.\x8a\x1c\xf7O\xf2\x03\xeb\xf7K\x16\x1c\xf2\x13v\x83\xe6=\xec\xc6]\xa8\x1f\xeb\x7f\xec\xc6]\x948\xee\xc1\xec\xc6]\x94\x95\xe0\x03\xed\xc6]\x14\x1a\xe9E\xed\xc6]\x14\x98\xe6\x87\xed\x06\xde;\xdb\x8d\xdb\xaf\xf7\x9c\xd3y\xdc\x97\x99>\x03\xe6\xbc\xbf\n\x0bt\x04\xfa6\x97\xc4{\xb2\x98\xb33\xa7\xdb\xe5-\xf2\x89\x13\x83\xc49A#\x9f8\x93\xfb\xb5E\xfaP\xb4H\xed80\xbf\xf3\xc0\xdc\x0et\xd7'NL\x18Z7\xb4\xe6\xb0y\x1e\x86\x88\xba\xfe\xbb1k\xa0\xcc\x1b&v&E\x05\xbducvG\xa3q\xdb\xc7H\x0d\x9b\xebFb0]7\x12C\xec\xbaA\x0f\xbc\xeb\xc6\xacp\xbcn\xa4\x1f\xbd5\x96\n\xdd\xeb\x06)\xa0\xaf\x1b\xc9<\xca1f\x8f\x93\xd9\xd31\x81\x98q\x8c\xc5\x8a\x9ffi\xd0 s\xcb\xc6X\xac\x0eIM0\xe7\xb0\xa5\x81\x0da\x9c :\xe7\xfd\x1d!\xe7\xfdM\xdb\x05%\xec\x80\x12\xb4\xa0\x91\xa2\x0b\x8d\xe4y|\xd6\x042c\xf2 g\xc9\xb2HV.\xccR0\xa4f\xcf\xb2\x98\xa5h\x98\xa7lH\xcf\xaaeq\xb7\xc5\x9f\xb3#\xbb\x81\xac[\x16\xe9\xd9\xb7,\xa8\xc4\xdb1f5\xca\x9c\xc3\xfc>=;\x97\xc5\x1d\x94}\x9f\xf3\xfe\x1e#y\\&\xce\xe0\x89\n\x85\x19J\x85ys\xf7\x0c\xe5\xc2\x1c\x05\xc3\xdcY\xfb\xee\n\x9e>_\xdf\xd8l=w\xae\x9e3S\xcfh\x88\xb4\x99\x0e\x96\x98\xa3o\xbd\xd4i\xbe(\x16\x89\xc5\xa5\x155\xe7\xfd\x0d\x82<\xb9\xd3\xa7t\xf2\nIl\x01\x8d\x84\xb9\x8f\xbc\x1e\x92\x95\x05I\n\x83\xd4\xd5/Iq\x90\xa6<H_\xebn\xb7\x98)+\xdb\x0d\xaci\xe9\xabY\xda\xf4\x9a\xa4d\xdad\xa61c\xd5\xba\x852\xa6\xadP\xc4\x82\x11\x8bD\xb9\x04O, \xf6\x82\x9bzw\x9a\xf3\xfe\x06g\xf2\xd8.\x03\xd5\x9a\x98\xde\x94\xf3\xfeF\x86\x03r\xa9 QLP5\x05tm\x01\xd0\x04\x11\\{Z`:\x90E\\\xe5@Q;\xe0UO$g\xa0h\x18\x18\xc2\x05f+\x1d\xdd@#\xbb\x02\xb6#\x90(\x10\x84\xc6\xc0\xd1\x1aR \x0c\x89T\x85DR\x02\x9d~0\x8bh\x80\xdf6.E\x1e \xd1\x04\xc8\x84\x00B\xaf!\x0c`\xe4N&\xe1\xe3\xb8\x1d\x0c\xda\x18\x9fP\x82H\xf5)['\xac\xd1\xfc\xe7\x9a\xf7\x17S\xb6\xef\xb4\xf7s\x0b\x82w\xe9\xa7d\xab\xe9\x1fN\xf4\xe1I\x16\xd6\x90\xbe\xf7\xfe<_fH\xb8\\\x8b\xb7\x05/76\xd9\x16\xdf\xc8-\xe6j\x9c\xf5k\xf8t\xb8\xd4?p\xa1\xca\xf6\xdd\xb5\xce\xd3\xf4\x86\xb7\xfb\xbaj\xb9ML\xd6\xd8\x7f\xabj\xd8\xb8Tc\x19\xffq\xe0\xcd\xf5\xc3\xa9$x\xf3\xfa \xec\xb8\xb8\xa87}\x81\xect6\x900*\xdf\xe3\n\x0e\x15\xbf\xda\xf3\xb5\xac\x18o\x9a\xba\xe9\x8a0\xacV\xbb\xbe\xe0\xbbIz\x1c\xefz\xe6_\xc1\xd4\x07\x8e\x87]`\xa0\xad\xeb\x8dc\x9c\x86\xf76\xa1=\xaa\x89\x0eD*\xc3\x86\x0bV\x94\x8e\xd92\xb4-\xf0n\x07\"\xdb\x80\xd8\xf2/_?;4\xde\x0d b\xd2\x8a\x8f+\x8d\xc7\xf0\xfe\xcd\x8b\x87\x0do\xebC\xb3\xe6P\xb1\x9d\x19\xec\x87\xaa\xf8\xe9\xc0\xcbk\x903\x80(\xb6\x85\xb9\xec\x10:H\xacW\xa0\xce\xaf\xd5\x14\xac,\xfe\xc67~/\xfe}S\x8bz]\x97\xb0:l\xb7\xbc\xb1\x8dv\xaa\xd3\x86\xe9\xba\xc1\xee\xd0v3\x120\xff\x8e\xaa\xe4\xac\x0d\x84\x0f\xab+\x0e_=\xfc\n\xd6\x17\xacak\xc1\x1b\xf9\x15\xaeN~\xd0\xf2\xf3\x1d\xaf\xbai\xf7\xfd\x9b\x17\xf7Z\xd83q\xe1\x95\xa6\n\xd5\x05\x87\xf2\x7fU\x8a\xdb\x1e\xca\xf2\x1a~:\xb0Rjp\xa3\xf5k>\xa54y\x9f\xb5\xc1\xf8Z\x1fdQ\x1e\x9e\xd7\xf5y\xc9O\x95\xceV\x87\xed\xe9\xd3C\xa3\xc2$|\xf8Z\xd7D\x89m/\xeaC\xb9\x81\x95\\6\xbc\xf2\x18\xacYUW\xc5\x9a\x95j\x0c\xf9\xbf|\x9f\x9f\x9e\x9f\x9eH\xd5\xaa\x00\x10_\x9d~%\xe7/\x95Nn\xbd\xe6{\xc17_\x9f\xfe\xc2\xff\xfa\xf3\n\xf6R\xd9\xc5\x9a\x9f\x80\xe0l\xd7\xc2\xa1=0\xa9\x0e\x1d@k_\x94\xb2\xa4\xa2V\xcaX\x15\x15k\xfc\x1bo\x95\xc1\xeez\xcfM*9\x15\x12\xd0\xfb\xb0\x9e\xebL\xc6\xc4C;\x8cL,\xf8\x95j\xea\xc7\xd5\xf5)\xfc\xb1\xfe\xc4/ys\x12\xdcT\xbd\x7f\xf3\xc2n\xda\xa4\xa8`\x04A5\x83r\xf8p!\xc4\xfe\xc3\x89\xfeo\xfb\xe1\x04\xea\x06\xaa\xda\xfcz\xa2z\xe3\x9aUP\xab\xd1)5\xe2\x17\xc8\x05\x1c\xf6&4s\xe0\xbb\xbc\xb9\xe4\x8dV\xcd\x8e\xedM\xcaIUrQw\xf1\x99\xd5\x95e\xa1\xb3\xdd1\xff%\xe3\xb6.\xcb\xfaS\xfb(\xd0\xb6\xbf\x84\xe7\xdb\xbeF\xb2[\xd8\xb8\x80]\xa5\xd5\x86\xa6m\x0f;\xbe \x04|\xfb\xa5\\\x9c\xfe\xf8\xee\xddk\xf8\xe1\xd9;\x9b_\xf0\xfd\x9b\x17z\x8c]\xab5\xd9\xbf\xef\xf9\xaf\xe9\xb0xw\xbd\xe7\x7f\xfd\xaf\xbfz_P\xdb\xe3\x83\xea\x0f\xba\xbf\x99e\xe4D\x87u\xab7\x875\x07V\xe9%\xccO\xae\xfb%<\xee#\x95\xb4*\xa1\"\x93:\xd3\xdb\x865[\xcb\xb9\xa5\xae?\x1e\xf6`|#a\xc5\xda\x00\xf5\xb1\x8e\x85vy\xff\xe6\x85*\xe3\x05\xbbT]p7\x18C\x1b=\x88\x98\xad\x92\xfc\xff\xcb\xba\xd8\x00\xabB6!]@5}4|[7\xfc\xc4\n\x90r\x99(VEY\x88k\xa88\xdf\xb4z;\x04j\xcak.\x83$\xce\xba\x92\xd3lu\xce\xd5Kj\xcc\x9e\xc2\xfd\xf7-\xb7\xc1\x9c\xa4\x96d\xf7\x94s\x96\xee\x9f\xacb\xe7\xa1\xda\xaf\x1a\xce>\xca9\xc8\x08>\xfd\xda\xdf\xa3^\xd6\x82?\xd2yW\xb7\x87j\xadG\x98\xac\x87\x99\xbb\xd6\x87\xa6\xe1\x95(\xaf\x07\x17\xf6\x81\xe9R\xe5\xbb\xdcn\x8bu\xc1\xca\xc8Z\xb6:l\xa1\xe1r%\xe2'*\xbeM!\xecG\x0f-\xd7\x11\x0c\xbbq\xe9\x15\xb5\xe2\xe7EU\xc9\xca\xca}m`q\xb9\xde\xf3S\xdd\xff\xd9\xbehO\xd7\xf5.4\x1b\xbfU#\xb5\x85Z\\\xe8\x89\xa2\x9a\xceRp\xdf\xc4k\xe4\xbb\xbd\xb86C\xfbk\xff\"\xa8\xb6\xa3\xab\xc0\xa4\xa4*\xad6\xe7\xc5n_r\xb9\xc8\xaa\x01\x03\xed\x9e\xaf\x8bm\xb1\x86\x96\xefX%\x8a\xb5\x87\xc7\xaa\xc6\xea\x8c-\x10\xe2\xbc\x86\xdd%\xfd(\xa7\xa3\x15\x07f\xa2Q\xf6\x1b\x9c\xa3}\x8c\x8de\xb4\xaa/\xfd}\xda\xa8\xc0\x0c\x05g\x02]D\xc9><\xae\xae?\xf4\x076V\x01kV\x85h\xe4 \xf6\x97\xd0)\xca\xae\x11\xac\xacM\xd7\x03\xe6nZ9;\xab\x85F\x97p5\xde\x16N\xb6\x7f\xdd\xae\xce\xd35_\xdb\x81S\x16+Ul\xb3\x8e\xb4\xd0\x1e\xf6\xfb\xbaQ+\xf8\x9e\xad?><T\xf2?r\xdd\xd6\xfd\xc2=\x82\xccB\xef\xdf\xd8\xd4[8\x08=\xb1\xd9\xe9\xa1\x95\x13+\xdbl\n=W\xc09\xafx\xa3\xc2\x95\xea\x83\x96\x0dO\xe5\x94'\xcb\xa3\x9b\xd0\xfd\xbdgWLv~\xf8\xe6\x11\xbc\x96\xe5\x97\xf3\x82\xa9\n\x1b&Nx\xf2\xab_\x05\x96\xc9\xef\xeb\x1a\xb6u\x0d\x7f\x80\xd3\xd3\xd3\x7f\xf5>&\x0b\xc3\xaak\xff\x03\xac\xba>\x95\xc5\xf8\xbe\xa9w\xf7\xb7u\xfd\xb5\xff\xd1\xd3S\xff\xfaWl\xe1\xbe\x14\xf5^U\xe4]}\xff\x7fIY_\xc3\xdf\x03sxH\xde?\xc2\xba\xfb6\xa2\xbb\x7fg\x97l1\xe5\xc1\x1f\xd4\xdeP~e\x01\x0d\x15\xed\xfd\xef\xeb\xfat]\xb2\xb6\x8d(H\x17Q\xbe\xa4\xeb8x\xd1_\x86\x7fx\x7fy\xf8Pvk\\\x19\xdf\xb2\x1d\x97[\xa7\xc7\xba\xb4\xe7\\<\xd5W\n\xcf\xabV\xb0j\xcd\xef\x7f\x9dRx\xa7\x9cP]\x82\xbd\xe07\x91^\xf0\xfaZ\\\xd4U\xa0\x1f\xe82~_\xd7\xf7\xff?\xf6\xde\xbdKn\xdb\xca\x17\xfd\xdf\x9fb\x8f\xd6:\xa3V\xd2\xaa\xb6\xe4x\xee\x8c\xce8kd\xa9\x9dt\x8e-\xf5\xd2#s\xcf\xcd\xca-\xa3\xaaPU\x9cf\x91e\x92\xd5\x8f\xcc\xf8\xbb\x9f\x85\x17\x897@\x12\xed$s\x80?\x12\xab\x8b\xd8xol\xec\xdf~,\x16\x0b\xf7\xc5\xd6\xef\x813\xef7\xf4\x1c\xd1\x1d2u\x83\x10\"Wl\xc6\xdf^~|\xf3\xe1\xea\xfa\xd3\xfb\x0f\xcf|\xfa\xca\xe1\xcc\xf9\x1bfM{g\xf37\x81\xd9\xfc]\xed\x89\xbfGf\xf2\xd57\xf0\x8f\xc7\xd5\xe2\xbb\xba\xfe\xcf\xc5b\xe1\xde\x87\xa4\xd3\xe7D\xa0&5P\xf5p\\-\xde\xe1\xbb@\xff\x8b-\xad\xf1\x0f\xdf@U\x94\xde\x8d\xe7\x9dd\xcf\xf1\xf0\xd7\xd3\x06\xe8!\xc3{\xca\xc6\xb6\xf8\\\x1dP\xd3\xeeQ\xf9\xa9f\xcc#\xd50\xac\xbf\x91\x87?]9qO\xc9\xc1\xd9\x8f\xfa\xcd\xcar\xca\xdb_\x04\\\x83HD6{SO-\xe2\xe6\xc5\xf6T\x96\x0b\xfa\x03\x11\xe5\x9f\x02\x92$\x01\"%\xf0\x18\x8fV\x82l\xcf\xd9\x1b\xeb\xaf\xdd\xaa|\x10onC\x91\xd2?!\x00m;l\xd3\xa0\xb2Bu<O/\x9e\xda\x9b\xe2\xf2\x82\xe82\xd5\x04\x00\xe6g\xe4\xc9\xb6\xae\x17+\xd4\xd0\xc1\xde_<,\xfe\xf2\x84\xcd\"}\x97Z\xe9\xb9\x9f\xe9\xb4\xabO\x08\x0d\x97\xa8\xf0\x87\x8f\xef\xdf9~\"+M~\x1e\xb4NL\x92\xae \x17\xe1b {\xd9\x9eZ,t\xcc\xbbS\x89\x1cQ\xc6M2\xa4\xca\x06\x0f\x82\xdb9\xe0\xc3\no6\x83\x08\xc7\x14\xedVr\xc8\xa1\xbf\x92\x84*\xa6^\xff\xf1\xdf\xc8\x04\xfd\xc8\xd5)\n\xd2 \x96\xc0~\x0c8\xdbz\xe5y\x82\xa1\xf5\x0d\xe1]\x83J`[\x94\xd8}\xdb\x08^w\x8d\x9b\xb6\xae\xbc\x87\x93\xeb\"\xb7E\xd3vK\xba\x8e\xdf\xc0\x0b7\xe5\xbe\x025,\xe1\xdf\xbf\x1c}\xef\x91\xe2\xeb\xd5\x13:\x97O^\xc1\x13\xdb\xd9T\xa7a\xc1F\xf9\xe4\xdcG\x8f\x8e\xef\x1d:\x10\x9a\xff\xca\x86\xf0[o\x052>\xed\xfb\xb1\x83\xbc\xda\xf2'\xa7\xba\xd7\xd8n(Z\xb8\xc3e\xf9\xfc\xa6\xaa\xef*\xcaM\xf6\xa8\x05\x04\xebS\xdb\xd5\x07\xcf\x19\xb2\xfd\xa2n\xf9s\xf6\x84\xd1\xce\x01c\x91Rw\xc8\x06v</\x11\xdb\xd2\xf6\xc6~\xa4\x87Q\xec\xf3}]nxd`\xdasv\x94\x8b\xaa?\x1f\xc0t\xa0vR\xec\xc8\xd8\xdb\xa1]X\xf4\x97\xfa\x19\xe1^b\n\x0d\xe5\x98\xd0\x19\xff\xf9O\x7f~\xe69H)\xf6\x9c\xda\xa0\x7f\xdb\xd1\xa9\"$_,^\xbex\xd9>\xf1l!\xf6\xffG\xd4\xa0\x03\xee\xb0l \xfd\x9c\xf2\xd7W\xdc\xceJ\"QT\xafte~\x83\x7f:\x15\x0d\xde\xbc\x82\xae9\xc9\x93\xeeP)\xd8\xacf:\xb4SZ\xff\x88\x9b\xdbbM\x88]\xac\xeb\xf6P\xb7\x17+\xd4\xe2\x8b\x01\xb1\xbc\xb8}\xb1\xc2\x1dzqQ\xd5\x1b\xbc,\xaam\xcd\xaa\xef\x06\x8f\xdc\xf6t8\xa0\xe6\xe1\x15\xfc\x0ew\xef\xea\x0d\xbe\xaa\xb65\xfct\xc2\x8d@^\xb8\xea\n\x08 \x1a\x00L\xf0\xca\xfa\x88\xd9L_m\x94\xda_\x88\x013\xacO\xea\xf1\xd3\x97_~\xf9\xd4\x0d\x18B{Z\xafq\xdbnO\xe5c\"\x85\\\xecXjs\"\x17/\x90\xe6\x87\xd1\x84\xdac\xe9\x0d\"\xefm\x00\x82\x8d\xd0/^z\xec\x1c\"\xf4T\xc3\x16\xf3F1\x0f\xc4\x85O\xd7\x907\x92{\x9af\xd4\x95w\x18\x11\x06\x9a*\x8b\xb6\xc3\x155s\x99T\xbf\xc2\xdd]\xdd8f4P7bK9\xeb\xae\xf7\xa8\xaa\xb0\x0dj\x8e\xa8\x1c\xd4j\x1e\xea\xaa\xb8q\x19,\x06\x88S\xe5\xf0\xa3\x1d\x93\xee>\x94N-8v\x80\xe6\xb8\x0e\x1b6y\xe8H!\xe6\xdd|a\x06\xd3\xa1\xd7\xd0\x94\xb9G\xc7\xe3rr\xe59\xdbqW\xc4X?;\xab\xafNE\xb9Y\xaa\xf7\xe1\x88\xea\xbb:\x86=\x07Z\xdf\xe0\xa3\xb7u\xb7M\xa7\xd7\x9e3\xb8\xe7C\x9b\x81\x7f\x83:\xaf%m\xc4\xae\xa7\x9f1\xbb\xc3C\xbd9\x95\xd8o\xa0\x10\x915eR\xa3\x9c\xae\xf3\xfb\xd6oT:\xae\xcd\xf5\x1e\xafo\xda\x93]\xce\xef\xbf\xfa\x81\xf5\xac\x90\x1e\x91D\x08\xfe#\xeb\xe9\x95=J*\x13\xd1\x96\xed\xe6f\xd6\xe6\xeb;\xf1\xf4cQ\xadixVB\xf7y\xbb\xb9\x81/\x17\xbf\xf9\xea\xa9QG\x91\xb2\xa4>\x1a\xfd'\xff\x90\x04\xb9\xde\x80\xac\x87S\x9cTm\xc6h\x06\x19\x9f\x1d\xda`y\xa6\x89\x91\xa2d\x134^\xb2 Z6A\x1bJ6A\xcb&hC\xc9&h]6A\xb3\x97l\x82&J6A\xcb&h\xd9\x04-RJ\xca&h}\xc9&hr\xc9&h\xd9\x04\xcdR\xb2 Z6A\x0bM~6As\xd6\xc9&hJ\xc9&h\xd9\x04-\x9b\xa0e\x134\xa5\xc4\x9a\x03e\x134Z\xb2 \xda\x7f\x17\x13\xb4\xe9\xe6_\xedC\xb5.*\x1e\xca\xc7a\xfc\xf5\x91}\xd3\xdb~Q{/^\xd1e\xf2\xc5\xeb\xf0_\xfff-\xbe\x94\xe1\xcb\x85\xd1Z\xd5u\x89\x91\xaa\n\x0b\xa2\x9b|\xe8#\xc1Mu\xc2D\xc9\xd8&/\x19\xdb\xcc\xd8\xe6P2\xb6\x99\xb1\xcd\xa1dl\xb3\xcb\xd8\xa6\xbddlS\x94\x8cmfl3c\x9b\x91RR\xc66\xfb\x92\xb1M\xb9dl3c\x9b\x96\x92\xb1\xcd\x8cm\x86&?c\x9b\xce:\x19\xdbTJ\xc663\xb6\x99\xb1\xcd\x8cm*%\x16g\xca\xd8&-\x19\xdb\xcc\xd8\xe6\x10\xe6\x1fw\xedE\x89:\xdcv^\xa0\xf3{\xfaI\x9f\xf7\xec#\xeez\xcc\x93\xd5\x1e2\x07<oq\xe7\xc2>M2\xfc\xc3\xbfY\x18\x94\xa5uq%\x85\xf2\xea^|9||\xa9#\xbb\xbf\x02\xce\x16p\xd4\x0f\xea\x98\x02y\x18\x03\xbd\x83\x88\x1eB\x04\x1a\x081]e%F\xab$\xcaXd\xd0K\xcc\xae\x1e\xf2\xbc1R#\x84\x10F a\x02R\xe8\x1f\x00\xea\xf6\xd1h!\xa4B\x0ca\"j\xe8%H&7\x1a9\x84\xf9\xe8!\x8cF\x10\xbd\xa48\xb21\nE\x84\xd4H\"\x8cD\x13a,\xa2\xe8\xdf\xd9=\xda\x18\x8b*Bjd\x11\xe2\xd0EH\x890\xc2l\x94\x11\xa6!\x8d\x90\nm\x84I\x88\xa3\xff8\xa0\x16o\xc2\xa8#<\x0e\xf2\x08\x8f\x88>\xc2\xe3 \x900\x12\x85\x84iHd\x88\x05\xc7\xa1\x91\x90\x16\x91\x84\x11\xa8$\x8cG&a\x02:\x19\xc12\x9fE \x94\x90\x02\xa5\x84\x10R \xf1\xe2Y\x04b #\xa5\xb8\xd1\xc8\xa5\x97\x1aE5#\xd0K\x18\xd1\xcb\x84(&\x8cB2!5\x9a \x13\x11M\xff\xbej\xc3\xa8&LG6\x9d\xf4H\x8b!t\x13\x92!\x9c\x10\x0f\xd4A\x0c\xd2 \xe3\xd0N\x08\xa9\xe0'\xa2\x9e\x10A\xd7\xa3\xffK\x84\x80\xc2\xa4\xc9\x8dGB!b\x94\x13\x10Q\x98\x8a\x8a\x82\x1f\xfa\x89BG!1B\n\x89PR\x88\xdb1\xb3\xd1R\x88GL!\x125\x85h\xe4\x14\xe26\xd4x\x04\x15F\xa1\xa8\xe0CR!\x15\x9a\nc\x11U\x98\x88\xaa\xc28d\x15\"\x16!p\xcc\xc2\xf5\xe3\x91VH\x88\xb6BL\xd7<\xa7,\x1d\xf2\n1\xe8+\xcc@`\x9d\x04\xc9\x87>\x14\x16R#\xb1\x10Dca*\"\xeb\xa4\xc6\xde\xf6~5G\x18\x99\x05?:\x0b\x93\x10Z')/r\x0bS\xd1['5&!{\xf4\x89\xe9P\\\x88Bra\x02\x9a\x0b\xe3\x10]\x98\x82\xea\xc2hd\x17\xfc\\\x04\x02h\x1b\x8c@\xdcbQ^\x98\x82\xf4\xc2X\xb4\x17\xfc\x03\x9f\x82\xfa:\x89I\x98j\xec\x91\x89C\x7f\xbd\x07\xa2\xda\xf9\x11`H\x8b\x02C\x08 \x06?\x1a\xec\xac3\x15%\x86\x84{w\x04Z\x0c\xa3\x10cp\n(\xb7uWT\xbb\xe5\xb1\xbes\xc5\x13\x8f\xd2\xd9\xf8\xb0NVD\xae\xf7\xe5\xb1)\xea\xa6\xe8\x02X\xe1\xac\xd6\xd4\xe0\xbd\x02j\xb5\x86\xee\xb5\xc2\xd6\xa2\x1c\xd1\xae\xa8\xe8Z\x98\x9dU\xda\x18>d\x08\x00\xa6\xda\x1b\xe9\xaf\xa29\x1bR\xcdJ\xe7\x83H\x03\x91\xcc\xf1}\xe7F_\x83\xf3\x19\xd4\xb5)C\xfd/\x97\xfeJ\xf4BL3\xf9O\xae\xaeFm\xcb\xf4\xf3\xd7h\x87?\xe0\x9fN\xb8\xed\x16\xecw\x07\xb1\x9fN\xb8y\xa0d\x08Y2\x93\x18\x0eu\xdb\x01\xa6J_\xaa-^\xc0U'\xf1\xaac\xf7\x00\x85K\x8b\xd3\xedq\x83)ZP\xd5p\xa8\x1b,\xd0\x01\xdb\xfd\xdc\xd5\x1dr`\xcc\xd1\x93\xe9I\xdb\xc0CQ;\x15\x81\xb4y:\x8b\xf4?\xaa\xd3a\xc5t\x92\xc2\x85J\xf2\xd7q\x8dW\x9e\xe8u}\xaa\xba%%\xe6bcw\xa8\x85\x16w\xe7Pt\xad\xc0jZ8Ul3o\x98:\xfa\xaeh\xd5\xfd\x11\xf4\xf76\xcd=\xa2\\\xbf5B\xbd#\xb8L\xe8\xdb\x87\xdfS\x9b\x8c\xec\x07.J\xf6\x03\xcf~\xe0C\xc9~\xe0\xd9\x0f|(I\xad7\xc6Xn\x8c\xb2\xda\xc8~\xe0s-4&Xg$\xb1\xcc\x18o\x95\x91\xfd\xc0\xe7Xa\x8c\xb1\xc0\x98`}\x91\xfd\xc0\xb3\x1fx\xf6\x03\x8f\xb5\x9eHj91\xc5j\"\xfb\x81\xbb>\x0bZG\x8c\xb0\x8c\x88\xf1 \x1ec\x11\x91\xfd\xc0\xa7\xb8R\x87,\x1e\xb2\x1fx\xbceC\xa4UC\x8cEC\x9c5C\xf6\x03\x87\x89\x16\x0b#\xac\x15\xb2\x1fx\x02k\x84\xa0%\xc2T+\x04\xe7\xbd\x99\xfd\xc0\x8d\x92\xfd\xc0\xb3\x1f\xb8VR\xf8\xe4\xc6Z\x08\x8c\xb6\x0e\x18e\x19\x90\xfd\xc0'Z\x00d?pQ\xc4-|D\x0d:\xe0\x0e7\x8a789g22\xbd\xb8\xc1\xf2]\xe7\x03u9\x8a\x8b8\x0bmpwj*\xaaV\xe3\xc0\"\x87\xcaz\xc8\x97*\xc3v\x9a\xd6\x88b\xb8\xe4\xd8\x87`\xdc\xf7\xe4Z\xab+\xfaZ\xae\xb7\xdb\x16wDRW\xbb\x0b\x922_C\xea\x8b\xea\x15kK\xfa[\x83\x7f:\x15\x0d\xde\xbc\x82-*\x15\xd8\xd2\xa1&\xb1\xaaF,\x93\xc8\xfa\xe7\x9aGM-\xc1\x07C\xa7\xb2:\x1dpS\xac\xc5\xdf\xe8i[\xa3\x8a\x8c\x87\xe9\x85\xf6\xb8\x12\x13\x7f\xaazU\x9c&\xb5^Qj%n\xdba\n\x99\xf2\xea\xd4\x92\xa9\xbe\xc1#\xe7S%\xff\xc8\x93\xab\x81\xe2\x96\xe9-\x8bC\x11;\xbb\xf4\xdb\xde\xa8\xc3\x81\x9535\xad\xbc\x839\xec|*5\xf8\x96)e\xe4?]m\xa1\xc4\xdbN\xd8\x16pc\x03!\x1aR\x0d3; \xac\x112\xcf\xab\x07\xc0h\xbd\x07t<\xfe\x15gQF\xfc\x87\xfa\xbe\xb9\x94j\x90\x19\xa5;\xb4\x86\xae9a \xffQT\x9bb\x8d:\xdccM|\x06\xe9\x87|#\xc9\xe4\x8aj]\x9e6\x9a\xe0\x87X+=\xd8\xa7\xad\x18\x85\x8e%\x1d4a\xdd\x92\x05\x8d\xc6\\>_\xb5\xdajiC\xa0\xb2r\x83[\x0e\xf2\xd3\xe35\x9cGr\xe4\x16\xfc4\x15\xbb\xaan4\x0d\xbe8\x8dj\x13lf\xe6.\xac\x1e:\xdf\xb2\x80\x0d\xbe\xc5\x8dR\xd5\xb7x\xfck}\xe1\n\xc9b\xa4\xc1\xf6\x93\xa0\xd0!m\xe0\x8ab\x9bu\xb3\xc1\x8d.\x97\xdbs\xa7'\x9d\x8dT!M\xfe\x93E\xec\xf8\x99\xd1r\x045\xb1\xda\x93\x88\xb0&\x8aa\x18\xa0\x0e\x10\xec\x8a[\\\x01\xa3,6\x81\x1e\xe1\xc4F\xf3\x0b1\x139\xc6\x89(\xdd_\xc1\x86$\xc78\xf1\x94\xb1V/^bv\xe8\xc3\xa3?Km\xfd\x02a\x0b\x18\x98`\x05\xe3\x1f@\x8eq2\xd52\x06F[\xc7xI\xe5\x18'9\xc6\xc9T\x0b\x1a\x98fE\x03\xa9,i`\x925\x8d\xff8\xe4\x18'\xe3\xack`\xa4\x85\x0dL\xb3\xb2 \xb1\xe08K\x1bHkm\x03#,n`\xbc\xd5\x0dL\xb0\xbc\x89`\x999\xc6 +\xa3\xadr\xbc\xd4r\x8c\x93\x1c\xe3D+i\xacw \xde\x08\x05b\xacx`\x9c%\x0f\x84\xe0\xe5\x89\x16=\x10A7\"b\xc5L\xeb\x1e\x984\xb9\xf1V>\x101\xca \xd6>0\xd5\xe2\x07\x82\xc1\x17\xc2\x96?\x90\xd8\xfa\x07\x12Y\x00A\xdc\x8e\x99m \x04\xf1\xd6@\x10i\x11\x04\xd1VA\x10\xb7\xa1\xc6[\x07\xc1(\x0b!\xc81N\xc2\x81@\xbc?\x07\xeb\xc7[\x11ABK\"\x88\xe9Z\x8eq\x92\xd6\xca\x08\x82\x96F0\xd5\xda\xc8I-\xc78\xc91N\x1ce\xb4\xc5\x12\x8c\xb6Z\x82\x1c\xe3\xc4Z\xa6X49\x89\xe5\x18'\xa2\xe4\x18'\x96\x92c\x9c\xe4\x18'\xd6\x0f\x82\xba\xb6\x1c\xe3d\xf8)v2s\x8c\x13\x87\xc1G\x8er2\x14\xcfn\xcaQN,\xd5s\x94\x93\x11v\x1e9\xcaI\x8er2\x94\xa4\xf6\x1bcl7F\xd9m\xe4('sm4&\xd8g$\xb1\xcd\x18o\x97\x91\xa3\x9c\xcc\xb1\xc3\x18c\x831\xc1\xfe\"G9\xc9QNr\x94\x93X\xfb\x89\xa4\xb6\x13S\xec&r\x94\x13\xd7gA\xfb\x88\x11\xb6\x111\xf11\xc6\xd8D\xe4('S\x02\x85\x84l\x1er\x94\x93x\xdb\x86H\xbb\x86\x18\x9b\x868{\x86\x1c\xe5\x04&\xda,\x8c\xb0W\xc8QN\x12\xd8#\x04m\x11\xa6\xda!8\xef\xcd\x1c\xe5\xc4(9\xcaI\x8er\xa2\x95\x14\x11'bm\x04F\xdb\x07\x8c\xb2\x0d\xc8QN&\xda\x00\xe4('\xa2\xc4D9\xd9\xcb~\xd6\xc0=\xd15e\xfe\xe0\x88\xde5\xa7\x11\xe1\x16\x82\xd1\x16r\\\x15\x08\xcfb\x8e\xab\xf2\x88\x93\x1b\x8e\x08\x92\xe3\xaa\xa4\x98\xc5\x1cW%\xc7U\xf9\xef\x15WE\xc2\x06\xc9\xcfkTu\xf5\x02\x1f\xeb\xf5\xbe]\xdc\xbeX\\\x92\xff\xba\xaa\xb65\xab\xdb\xe9\xe6\x0d\xa6ACo5 \x99\x82X\xce]\xdb\xa1\xa6[v\xc5\x01{?\x1b\x0e\xe7\x06u\xf89\xf9\x9e\xff\xb2\xe1B\x86\xb7:\x07}\x96t@\x91\x0d\xc9L@\xa9\xbf\x9c\xddgF\x86\x9e\xa7\xa2\xda1zx\xa3\x13S\x17\xce\xd6\x05=RK\xd4x\xf4\xa5\xa5\xf6Fo\x18u\xba\xccB\xfa\x88^\xea9\xb3k\xed\x0d\xedFK\xb6\xdb\xe8\xbe0Jz'T\xeb\x1d\xc3j\xc7\xa0\xcb\x8a\xcbJ\xc7\xb6\xb5eB\x16P\xca\xb6e\x02U\xdc\xdb\x87\x15s\xe3\x07\x08:\x96)P\xcbg\x80\x1a>\x16\xd1\xc4\xedc\x0c\x1d\x14\x99\xbc\xce\xf5!\xf2\xd0\xc84\xa2\xc7o3\x96\xb5\xee\"\xfb\x1e\xb2\x1b\xb1:\xfb\xe0\x042\xfd\xc6\xaaI\x8cTS\x19\xa7F\x19\xa5Z\x8cQ\x83\x93b1>u\x19\x9d\xce16\x8d42\x1do\\\xea^C\xf9)\xc8z\xad('\x8a\nv\x1f\xae\xdf\x0cF\xa5\xfc\xe5\xdf\x12\xe1\xaa\xc1\x9a\xf4\xb1\xae\x1b\xf6!\x15?\x1a6\x92^Y\xb0GLdS\x86\xa9\x8cM|\xf9\xb1>\x0c\x9d\xb2\xea\n\x1a|\xc4\x14>\xfd\x165\xfd\xcc\xba4f\xca\x18\xe9\xe6\xd2ue\xe4\xd9\xcf$\xa2\xc5\n\xb5xA7\xe4\x82G{[H\xfd\x8d\xbe#\x94\x83\xe7\xbd\xa5\x94\x03\xe7^\xa8\x14\xcf\xf9\xa4\x8fy\xebS\x9e}\x1c9r\xedT\xb9\xc7\x9e\xe4 >\x90\x9b\xf7\xfe6\x9fJ\xea\x14\xd0\x17m\x82\x19P8K\xcag\xb2\xf1HN\xf3D\x96\x18\x96_\xca\xf4\x8d3\xe9\x13\xd6\xf2\x80\x9d\xfb|5\x9e\xacs\x1f\xac\xf4\x13\xf5\x98\xcb\xe4\xd5\xc7*\x7f#N\x9f\xde\x19\x8fL\xe9a)\x9fL\xf3\x89\xe9y`\xdaO\xb8\xca\xf5\xd9\x9da0\xfd\xef\xea\x1a\xda\xfa\x80\x97\xbdf\xd6\xca\xee%V-/\x9c\xcc\xef\x99\x8a\x97_\xdf}'\xe4\x8a\xbekP\xb9\xd2Z\x06\xe5 \x1e\xc2II*\x00\xb8\xbc\x7f\x15q\xb5\x8c|\x7f\x98\x92]\x8a\x0bf\xb6$\x97B\x8a\x0bJpV\xfe\x12\xc7]\xf5%\x87\xb1\xd2\x9aS>\x1b\xe8\x8d\x13\xcd\xec\x8b\x91L$\x9b#\x8e\xc5\x89b\xd1b\x98_\x04#GR\x07v^W\x0f\xd1\x07\xa23\\Y\xac\xfb\xc2\xcd\x17\xa7:\xa8h\xf2\xaf\xdd%e\x8a\x13\x8a\xe9l2\xc9\xbd\xc4\xe3Fb\xb3w\x88p\x1c\x99\xe8*\"\xbb\x84H\xd4t\x1b\xca\xd1\xee \x93\x1c@4G\x0fuR\x94\xebw\x8a\x93\x87\xe6\xcc\xa1R\x97\x89Ou\xe4p;lLq\xd1\xb0\xbbb\xccp\xbe\x88r\xb7\x88s\xab\x98\xe8H1\xd5u\xc2\xe6\"\x91\xc4)\"\x9d\x1bD\x12\xc7\x07\xbf\xab\xc34\xe7\x06\xba\xca6'\x86\xf1n\x0b\x1e\xf7\x84.\xe4\x900\xd5\x05\xc1\xeaj0\xc1\xb9@s'\x98(\x97)w\xd3D\xb7\x80\xc1\xfc_\x9f\xbf/\xdc\xedM3\xf6\xb7\x18\xf6sz\xbdy\xffL\x83\xfe\x19&\xfc6s\xfd\x19\x06\xfa\x16c\xfc\xa9\xe6\xf7N\x9bq\x8b\x89\xbd\xd7\xa8^\xb5\xeb\x8c3\x9cW\xeb\xfc\xac\x8fe\xb49|h0>\x93w{\xff\xbdf\xed\x91\x86\xec\xb2Q\xad\xcdX}\x9ey\xfa4\x83tc\xae'\x18\x9d;\xcd\xcc\xed\x86\xe5.Src2b\xcc\xc5}\x06\xe2\x92I\xf8D#\xf0\x80\xd9w\x9c\xa1\xb7\xd7\xb4[\xb3\x82V\xc8k\xbf\xf9L\xb4\xa7\x1be\x1b\x1d\xe0\xff\x9adjm3\xab\x9ecH\xad\x19MO5\x936L\xa2g\x18A+b\xae\xcd\xc4Y1j\x9eo\xc6<\xddpY2R\x9ed\x96l5A\x0e\x1b\x1d{\xcd\x8c#\x0c\x8bC\xa6\xc4\x8a]\xadJ=\xd6X\xd3m \x1ca\x12\x1c0\x02\xee\xbb7\xc3\xd0W1\xea\x9da\xc6\xab\x9b\xecN3\xd2\xd5\x0dr\xd3\x98\xe0N[9\xaf\x99\xad\xcf\xb0\x96*u\x9a\xe3z\xb1C\x1d\xbeC\x0f\x8b\xe6Tu\xc5\x01/.\x87\xd8-\x11\xba\x1d-\xd2\x8bE\xa2V#\xbb\xb0\x0f\xf4\x88.\xb6H.|\x06\xbd\xb4\x8d\x88-\xdd#\xd8zt\x8eH,\xd6\xd7\x03+!\xcf\xddD\n-V|\x91V\xd2(\xb7X\x99\xae\xe22Hy\"\xa7LT|\xb12Y\xfdeP\nEH\x19\xad\nce\xa6B\xcc2[\xceH(3\x95c\x06=g\xe4\x93\x99\x8a2\x83\x9e+\xd2I:\xf5\x19+3\x94h\x82@2U\x1a+\x13\x15j}o\x92\xa9\xd5XI\xa2\\c%\x9d\x8a\x8d\x95$\x8a6Vb\"\x8bLW\xba\x99\\\xd4\x19Id\x8e*\xce f\x8f\x1cb\x91%l\\j\x9e\x9a\xce g\x8b\x102Ay\xc7\x8a5\"\x88\xe7*\xf6D\x00 \xdd\xd2\x13U{&\xe3rF\xfa\xf0\xf5 \x85\xb2O!h\x8b\xe81S\xf1\xc7\xca|\xf5\x9fB\xce\xbcpg*\x04\x15Z\x9d%R\xc7T\x15!+\x81\xe0\x12\xce\x88\x1c\x11\x918l.\xe1q\nDw\xfd\x9f\xedc\x1f\xadRd%n\xf0\xe1\x88\x1a\xbe\x91FD\xd0\x88T8\xb2b\xfa\xf2\xbb#e\xccSA\xb22M\x11\xc9\x8ac\xb5&(%Y D\xc0\xf0E\xbe\xf0G\xbcpL^\x8c\xca\x92\x95pd\x0b#\xa2\xc5D%&+Q\x11,\xe2\x14\x9a\xacDD\xac\xb0\x86x\xb04k\xfd.\x1c\x91b\xba\xd2\x93\x15G\xf7\x94\xbf%S\x83\xb2\x92P\x19\xcaJ2\x95(+\xa9\x14\xa3\xac\xb8#@X\"?\xccW\x95\xb2\x92Da\xcaJ:\xb5)+a\xe5)+^\x15*+\x11\x8aT\xe5\xc3@d\x06K\xb0\x02[\xab\xb1j\xbaP\x04\x86\x085+\xff0&\xe2\x82\xd6\xf9T\x8aWV\x12\xaa_YI\xa3\x84e%\x8d*\x96\x959\xeb\x1d\x11\xfd \x1c\xf5\xe0\xe7\xc19\xaeY\xbf\xfcrq\xfbb\xf1\xfe\xae\xc2\x8arVz\xf3\xe0\xeat\x10\x17\xebsx\xff\xef\xef.?,?\xbf\xfbx}\xf9\xe6\xea\xbb\xab\xcb\xb7\xda/?\xbc\x7f\xfb\xf9\xfbK\xed\x8f\x97\xff\xef\xa7\xcb\x0f\xef^\x7fO\xff,b\x8a;H\xd9\xad#i\x07iW\xa88\xceV\xb2&\x7fl\xf7\xc5\x91\xf2.\xb8\xfc\xf0\xe6\xe5\x97\x94Y4h-\x195Z:mi\\\xce8PT\xf4ev!Yp\x92\xa6\x16:E6\xd8W\xca\xbf\x80N*\xb5\n\xbf\xab\xd8\xf5EO \xfd\xeb\xa1\xde\x9cJ\x0chM\xedH\x0dzb\x9e^\x81\xf8/\x0b5T\x01\xbe\xefpC\xb8\xa5DH[\xd1k\xd4 \xa1\x9e6\x14\xd3\x16}{\x85V%^\xd2\xea\xa3\x0c\xcd\x07\xc3\xec\xae\xe6T\x84:\x90\xabL\xc8\xe2\xbc\xa1\xa6\xd0\xb0\xae \x17\xff\xd7\xe7\xcf\x7f\xcb\x17\xab\xabop\xd5\xbf\xc4E'n\x0f\xcb}]\xdf\x8c\xea\x87\xf2\xcauu\xea\xf2\x8f?\x00\xa1\xcc\xfdGh\x17;\xba\xe2Rw\xa8\xceI\"\xc6\xfa\xfe\x85\xf2\x97\xa2\xa2\xeb\xda\xa0\xaa\xdd\xe2\xa6\x11\xce5\x9f\xe8p\xa0\xdb7\xf5i\xb7\x07\x04?\xb4\xbbKj\xdc|:|\xba\xe7\x1cF\xa6\xf4\x03\xdd\x0f\xaf7\x9b\x06\xb7-\x88O O\"\x7f`\xf3\xc2\x0d\x98\xd9\x82\xf6\xbb\xd4\xd8St\xcc\xad\xb9\x11\xa8\xdb+\xab<\xda\xe4\xfc(m\"k\x15{5pn(p.&\x04\x15'\xb3v\x9aFK\xddw\xe0\xdb{\xf0\x08]\x9e\xb4\x0f\xc1\xba\x17!\xe9~\x84\xc8= \x13\xf6\xa5\x8b\xb5[6(\xf8\x92Z\xf04\x16\xbc\xdd\x0f\xd7o8\x9d!w\x85\xed\x04\xd0\xa9\xb8FE3\xfa\x10\xd0\xc5X\x1eQa\xe0\x91q\x07\x81tc\xc9g\xcf\xb6\xad,\xeaE>\xb5\xbc\x12\xd9\xd6\xea\xdd\xc6\xfa$U\xd9\xe0\xaa>\x8c#\xce\xbcS\xa8\xae\x9eU\x17^3LK~@\xc7#U\xf1\x1bgd\x13{6xC\xed\xbe\xbek\xf9\x96&T\xc9\xe6\xe4g\xa1\xedPw\x92\xd1'1\xc0e=\x08$\x1a9\xe3\x90\xb1\xa9\xa1\x15\xfa\x19\xbb|\xf7\xf9\x078\xfbR\\\xe4\xe7\xf0Blkva\x9e\xc3\xcb\xfe\x12\xd5\xc8q\x12\xcf\xe2&S\x16\x8eDq\x0bI\xfa\x17\x8a\xb0\xa4\xff\xa8\x08M\xa2\x04\x84\xa7\xe13\x9f\xf7\xf6\x1caJ\x94\xf4B\x95N9\x95p\xa5\xd3\x9d#d\xb1\xe2f\xfa=\x97Q\x07\xce\x14q\xe2I\xb3\xae\x9b\x0dy\n\x11\x96B\x01\xa2\xbaj\x8b\xb6\xa3\xb1[\xb6\n\xcb''RU\xfc\xf3\xeb\x8dr|\xf2\xa8\xd2\xae\x0c\x85I{\xd8\xad\xc1\x0dc8\xee0\xb8\xd1Lw\xbc\xe81p\xddG6\xc3\xf0\xf0g/\x004\x9aG[\xb9tL\x13\x138\xb5\x83W\xfb\xb8\xf5$~\xed\xe7\xd8\xbe\x1c]\x89\xb9\xb6\x83o{\xa7\xd7\xc6\xbbc\xb8w\x80\x7f\x078x4\x0f\x0fq\xf14|\xfc19\xf9\xe3\xf1\xf2\x94\xdc\xdc/\xc4'\xe6\xe86\x9e>\x8e\xab\xdb#\xc4hor#\x8dbG\xd5\xeb\xb2K{gM\xa38B\xb0\xcd\x91fr\xa4\x19\x88\x143F\xbd\xec\x86Z1\x82F\xffu\xb4h\xe1\xb8\xf1\xad\x8b4\xea\x96\xd7\xeew\x1f\xc1\x91w\xbaq\x9b\xdb\xef\xf1\x917\xb8\xeb\xee\xb6m\xbd\x84\xf7\xb5qS['J\xbf\x9d\xfd\xf7\xb2\xf3Fv\xde\xc5\x11\xb7\xb0\x9b3\xcd\xbdy\x1f\xe7\xce}\x8c\xdb6\xcd=k\xbfa\x13\xde\xad\xea\xad\x1a\x7f\x9f2fRT\xdb\x92\x85\xee\xb8}\xb1\xb8\xbc?\xd6\x15\xae\xba\x02\x95oP\xb9>\x95\xd2U\x1b\xc1]P\x1c\x03\xa0\xc6\xa4\xa8d\xec\x95\xff\xe87x\xef\xab6xs\xa2\xc6J\xb0E\xeb\xae\xcf/\xb8\x8e\xabM\x9d5;\xdc\x1c\xa0\x1f5\xffd\xc5BF,;\xd4\xec\x82\xd1\x9c85^\x07X\x1d\xfe\xeb\x01\xdd/oQS\x90e\x8c#s@\xf7 j|\x01\x16\x16d_\x14\x8e\xea\xb1ih\x99=*\xfb\x11\x03\x1ej\x0c#\x85\xbaG\x9ei \xa3#n\x8az\xb3\x00\x99f\x83\xb7\xb8\xc1\xb4\xeb\xfcS\xf6\xd5uS\xdf\x16-\x8b+#\x11\x7f\x8b\xd7\xe8\x81\x8f\xe6W\xfd$^Uk\xf2\xf3m\xaf]\xdd\x9e\xdd?\x03\xa9|\x03g\x08~\x05g/\xe094\xcf\xe0\xff\x87{\xf85\xac\x9fQ\x1ag/\xe0\xd7\xca$\xc2si\x89\xf0\xe6\x03\xe9(\xfcJ\x90>S>\xbd\xd0\xd6\xf1\xd93\xfb6\xbf\x12\xffx[\x905Y\x9dF\xed\xf2\xb6\xa3\xc6\xad\xcb\x06\xdf\xa1f\x13y\x8b*\x17\x8aFA\x95T\x9b\xfaX7\x9ddVp(*j\x84G\xffoIoL=\x8aC\xa1\xe8\xc5\xd9=\x8a\xca\xb2^S\xf3=\"\xd2\xb0\x16\x81\xb7(\x8eM}8\x9c\xaa\xa2{X\x1e\xeb:\x14K\xc46\x90\x8b\x0b8\xb5h\x87\x97\x85X\xf3 \x83\x91{N\x86\xe5\x1c\xd7\xc5\x8514\x0e\\K\xcd\x0b~\xce\xf8\xdc\x17\xca\xacS&jt\xf8\x1bx \x7f\x92\xbe\x038\xdb\xd5\xbb\x9aB\xce\x0b\x86\x98\x93 y\x06\xdf\xc0\x93]\xd1\xedO+\x8aL31\xe6b\x88\xfat\xd1Q\x9b\xe9\xb7x\xad\x81\xd3\x12\xb9\xeaTR\xf9\x94\x10\xd3\x03\x0b\xff\xf9\x7f\xca\xbdU\xd7f\xfc\xac\x9a[\x84\x88T\xd2\x1fl\xf3\xd87\n\xa4Q+7\xb2\x9e\x1d\xa5{\x1b\xf9\x87\xa2\xe2F\x08\x03\x1f\x1a\x16Uj\x9f\xc34d\x04\xf4z\xab\x18\x93\xa2!F\xe1\x8co\xdfsi\xa1\xcf\x87\xce>\x13\xb7\xf6U\xbfy\xf0=\x0d\x84\xc6\xcdf0:\xc0-f\x17\xa7\xdc\xbbsf\x06U\xb4dv\xf8\x1c\xd6\x84\x91\xa0\x8eZ\xbf\xb6\xc5\x10\xfa\xec\x13\xddf\xec\xe2\xb2\xcf\x01\x8f\xc9\xd7\xb3\xe1\x0dl\x1b\xba\x0e\x18.o\xc9\x9dL\xef|A\xef\x87z\x83K(\x8b\x1bL{\xd03\\\xd2\x0d\x99\xec\x0b\xf8F\xe9\xf3\x0b\xb8`\x9c\x93\x8c\xea\x8flP\xf2\xf7\xbd\xa9\xfd\x97\x8b\xaf\xbf\xa2\xa5_\xf1o\xe07_\xfe\x0f\x18\n'\xf4\xf2\xeb\xff\xe1\xe0\x93#\x81t\xd2\xf5\xe5\x88\x87@\xc7M\xa2\xd7DV\xe9jZ\xbf_\xbf\xfe\x92Y\xaeuID\"AY\xff\xaa\xc41\x17\xa0\xd6\xa7\xa8\x87\xbe5o\xbb\x1bX\xb2I6\xa0J71d\x1cR\x0e\xa8\x92N\x0c%\xb7\xc4\x03\x1e\xa9'\x86\xb2U\xfa\x01\xa7\x04\x14C\xd2\x90\x84`\xe8\xf5rc\\\xd5 \xcf\xbb`.\n\xf3Q\xb9\xa3z\xd9\x8c\xd8\x04\xce\x0b\x1f\"\x06e(1f_\xfe\x1a=\xfaV(\x0c`<Z\x08\x00\x8f \x00S\x068U(\xd0\xc8\x98\x97\x99\xf6\x819\xe6\x99\x02\x02\x8c\x12\x12 \xbd\xa0\x00\xf1\xc2\x02\x18\x02\x03$\x10\x1a\xec[K\x13\x1c ^x\xe8mK\xfa\x03\x1a\xa9\xc6\xb1Y\x8f\x0c\x87\x9c\x99T\x96\x1dY\xd6\x06\xa3V\xd8|\xb47\xc5\xf1\x887,0\xb9\xc5\xee\x82\xdbM\xb0\x97\xd3\x90\xf0\xa8\xd7\xc1\x0d-\xb0M\xe2x%\xb3\xd8\xfeE\xc3n\xa5j\xf7\xf1t<\x96\x0f\xa3a\xbe\xf5@a\xd9R\x12\x06_czNt\x10\x11\\\x99iOQ\x0du\xa7]k\xf16\x13\xac\xed\x88O\xdd\n\xa3\xb7xM\xb5\x11\xbd\xa2\x83\xab\"\x989\xb4\xaa\x02\xa4\x1a\x0b\xd8\xe0uq\xe8\x07\xae\xa8\x8f\xde\xbd\xfft\xf9\x8a\nc|V\x98\xd1tA\xf5'o\xf1ZH\x9b\xc2\x03N\xb1{e\x8aT\x89Z[\xec*\xd4\x9d\x1a\xdc\xf6 ?`\xf5\x00\xc3\x114\xf7\x90\xaa\xe5u\xee\x02\xaf\xb2W\xa6pa\x90\x80\x0f\xd7o\x0c\x9d\xaf\xb9\x01i:\x87\x1f\x8a\xaa\xeb\x1f\xe7\xa3w \x0b\xe0O\xc5\xb6\xa3 \xf2\xca\xbe\xa2\xb6O\xc5\x18\xb9\xabf/\xbc\x1fq\xc3\x05\xf7\xe1S*\x11M\xc2Z\x12\xefU\xcfb\xbag4~5M\x1a\x91\xcb\xd9\xbf)>\xa0n|\x80\xdcANjP\x17\xa9x\"_\x92\xdd\xceNL\xd7\x07\x87f\xbcH\xf0V\xdc\xd2\x83ZT\xd4\xdd\x9c\xa9\x83\xcc\x89\xfc\xad2\x91\xd6\xb1\xc4\xcf\xa1R]\x1c\xfe\xb8YLd\xeci\x9a\xf9j\"\xccpw\x88\xcb\xb4\xbf0\xe4\x89\x8f\xda\xe0\xb6g\x13D\x08^\x9e\xe7\x13\xc4<\xa1$R\x93\x9eQ\xe0\x1a&xLN\x8c'\x15\xf8F\n\x10|Z\x81\xf9\xbc\x82H\x92\x9eg\x16\x98O-\x88\xa4\xea\x7frA\xe0\xd9\x05\x91\xad8\x9f_\xe0}\x82A$y\xcbS\x0c\"\x9ec\x00s\x9ed0mCy\x9fg\x109`\x8b\x99\xce\xb4\xa7\x9a\x85\x8c\xf1\x92\xb1<]H\x19\xf5d\x83\xc0\xb3\x0d\xe6\x0c<\xd1\x13\x0eb\x9eq`}\xcaA\x9a\xe7\x1c\x8c~\xd2\xc1\xe3<\xeb`\xdc\xd3\x0e\xac\xcf;\x98\xf6\xc4\x8bY\x15\xfb3\x0f\xc6<\xf5\xc0\xfb\xdc\x03p=\xf9\xc0\xb3\x19'\xbd\x03u\xfe\x10x\x15\xce6\xc2\x8f\x91K\xa8\xdc4^.\xa1\xd5\x02\xe2\\Lj\x15Fh\xa2\xc0n\x99-e8Q\xb3\xc5:\x107[\x1f\xd9\x8a\xb1\x84u\xa3'M]\xef\x04\x937\xd8\x191\x92C.\x16]a@\x1d=W\x18\xd3K\x8f\x9a\xad\xf8l\x00\xdcc\x8d\x97\x95\x95\xea\x0eYY\xca\xc5!\xb2p\xf07y\xf4\x9c\x86\xb5\xfa\xfa\xe3+\xf2\xe1\x95L9\x90N1\x10\xa3\x14\xc0\xdd\x1e7\xe4\xf8,\xf0\xed\x81\xec\xdb7{TTo\xeaj[\xec\xa2'u_\x1fp\xdba\xb4Y\xae\xcazm\xf8\xfc\xd9_mZ%h\xef\x8an\xbd\x87\xb3\xaa(\xa1\xaa\xc9\x1e\xb99\x87/\xe1\x1b@e\x83\xd1\xe6a\xa8 \x8c\x8e6\xa8^\x92\xcf\xc6\xb4\xaa0f\x95\x80\x94t\x83>\x1f>\xed\xf1\xdb\xd7\xefa\x8f\x9a\xcds\xf2\x95\xe8!\xfb\x98\xf7S\xa2F\xbe1\xba\xc6\xa3\xdc\xe8\x9dsh\x0b\xed\xbd\x13\x91r\xc4\xd6\xba\xdbc\x1e| CUK\xb1th\xe0\x9b\xfax\xac\x85\xcf\xff\xdb\xd7\xef%\x82\xfdH\xf8\xdfpq|\xf1\xf5\x97\x93gO\xa9\x0e\x97W\xd7/\xbe\xfeR\xdf\x96\xbfC-\x1c\x9bb\x8dE\x04-\xf9b>\xa3\xf1\xa2^]\\H\xc2\x08\xe6\xaej\x17\x97W\xd7\xedE\xd1\xb6'\xdc^\xbc\xf8\xfa\xcbg\xa2\x81\xdf\x7f\x17\xb5\x00\xbcs{\xd4\x86R\x8ez\x86FkK\x0d\x93\x7f\xc3Y\x85\xf1\x86G\xdb\xdac\xb4!\x0c\xb5*\x1f`]\x16t\xd8\x88\xc5\x97\x90\xa8\xed\xf8$\x0c\x81\xc46J7\xbf\x1e\xb3\x04O\x95*\xacs_\x7fKgDL\xcdS\x99\xf8?\x8f'\xfe\xcf\n\xf1\x7f6\xe8\xae\x1e\xfe\x82\xaa\xae8\x1d\xc6\x90V\xe6W\xa7\x00\xdf\x8a?X\x0f\x99\x85\x19\xa8\xf0\x9f\xa8-\xa6u]S\x03\xb4\xae\xa8\xeac\x89'w\xd3J\x06\xde(\x7f\x0dtX\xa2&\xba\x8e\xd6]qK\x84P\xd1\xdb#U\xc0\xacN\xcdnLO\x9f\x1a\xd5\xe0\xba\xff\x8b\xa5W-\x0di\xd2j\xdd\x7f&\x16\xb5 \x7f\\\x9d\xca1]P&K#\x00W\xfc\xdf\x93VT\x10\x13St8\x15\xcdrW\xa2u\x81\x9b\xc9=\xb4\x10\x81\xcb\xe2\xf8\xfc\xe5W\xff\xfc\x1b8[\xd5\x87\x15lp\x89\x1e\x9ey\xbb,\x11\xfc\xc6\xbd\xa6+\xdc\x94E5\xb9\xabJu\xf8\x96\xfe\xcb\xd2\xabo\"\xa6\x92\x91\x12\xfd*\xebjSO\xef\x97R\x1d\xbe\xa7\xff\x9a\xd8/FJ\xf4\x0b5M}7{\x85mT\xe8\x12\xff\xe6\xab\xdf|\x1dZ\xe2o\xcc\xdbD\xed\xbe\xb1\xc8\xbb\x06=\xcc\xee\xb3\x85\x08a\xbc\xcf\xbf~\xf1\xd5W1]f\x1d\x95\x08z\xbb|\xc0\xcd\x0e/+\xdc\xb5\xc7\xb2\xe8&w\xdaJ\x06\xfeX4\xdd\x89\x85\xc5\xbd\xe1\xd1\x93\x88\x1c\xfb\x03\xf9\x18x\xa4Y\x1a@\xa6\xc2\xdd\xdd \x87\x00\x8d\x83X\x16]\xd7\x87}n\xc95\xb9G\xc5\x98\x0e\xaau\xc6\xec\xca\xbej\x7f\x7f\xa0j}\x1auJ\xe4\x1a\xa3\x9af\x15Y\xc3\xf6\xd7\x95$\x91+Z\x92\xde\xab_\xfe@R\xe8\xb3\x8c\xa8\xbfj77\x8b\xab^\xa1\xceB+\n)\xac\xa8\xa8@M^\x84\xbfZ\x15;\xf2\x9d\xf5Qp\xd9v\xc5\x01u\xf8wh\xfc+v\x87&>]\xf9\xcc\x12\xe9\x89%\xb4d\xc3\xc6\xbc/\x1b\xf2\xcb\x17\xd2\x87\x96N\xf6\xf3%\xfd\xd6\xbfEm\x03\xfd\xbe\x8e\x7f\xf5Lu>\xe9x\xa0e\xe6z\xb2\xe7&z\x0d7\x1f\xc4\x80o\x87\x84\x94]},\xd6F\x13Q\xce\xb3Z?\x94\xbd\xc5\xc8\xd27%\x94E\xcbbs\xb3\xbf\xc9!\xdb\xe4\x9e\nDh\x83\xba\x90u\xbc\xd5K\x8c\xcf\x03\xa9.^\xb0\xec\xddR\x16fc\xe7}\xe4\xeb\xd7\xdf^=\xc7\xd5\xba\xde\xf4\xda?z\xaa\x96L\x95\x11\xd9\x11\xfb\xc6\x92 \x89uaG\xb6\xb7\xf5\xa4Xb\x83\xaa\x161x\xe5\x8e\xc6\x16\xa7\x16\x99\xa2;\xdd\xfd\x88G\x06\xffXhEd\xd2\xe4\xef\x03\xc9\xa2\xda\xe0\xfbY\xa3\x13D\xc4\xc8\xe4\xb6\xb8\xe7 \x1d\xac2\xab\xf1#\x19\xbe\x9f>u\xf3\x07\xa9\x8c\xb0\xacw\xb6\x915\xf8P\xdf\x86\xdd\xae\xdc\xfe\xa3\x9c\x00]4\x9er\x97\x9a\xda\x92\xf6\xee(?\xb9\xc5\x0d\x05\x81X\x9eeD\x1eyj\x04\xfa\x06\xd7\xcd\x0eUE\xcb\xd4\x83\xf0\xbf\xeb\x13\x0b\x04~D\x0f\x80\xba\x0eWt\x8e\xa8R\xbah\x85\xc6g\x0b\x0f\xf5 \x1a\xbc\xc6\xaa\xb3iY\xefT3\xf9>4\xcc\xb6(\xc9\xa5\xcb\x12\xd5~\xe1\x1e\xd6\xf7\xf5n\x08\xcbF\x15K}tF\x11s\xbb\x94.\x18\xf29\x8f\x04,\x94[\xe2\xa4\x8a~\x90\xc9\xa0\x8c\x8b\xc6\xf1n9\x17c\xa1\xc6\x07\xf6\xc6\x8f\xf9\xf7\xef\x7f\x07\xf5\x91\x1cj\xaa\nk\xbb\xba\xc1\x9b\x0b\xba\x98\xc31\xef\xc3\xd6\x0b5\xc7\x10\x16\x91\xa9\xc88K=\x17\x9c\x8b\x90\xa2\xec\x85\xb4I\x9en\xb8jO|2[\x16\xdd\xbf\xc1\xad\xc8C\xc0I\xb1_{;\xee\x86\\\x19Mq\x8b7\xe7P,\xf0\x82\xcc(\x0bh.\xfaN\x15.\xe7\xb0:u4\xf0v\x8b\xd7'\xaeW\xeb\x9b\xb4^\xa1J\xd4\x9e\xe8;\xc6\xc6m\xa3\xb0\xf8\xce\x9a\x98\xc2z\xc4\xc0\xbb\xfb!mJ\nwB\x8at\xe9(\x92%\xa3p\xa6\xa2\xe8\xa6'\xa2H\x95\x86\xc2\x9f\x84bR\n\x8a\xb4 (\x9c\xe9'\xd2&\x9fp\xa4\x9e\x98\x99x\xc2\x98\xee\xce\x92v\"m\xd2\x89\x99)'\x12'\x9c\x98\x91n\"u\xb2\x89d\xa9&\xd2&\x9aH\x96f\"\x9cd\"Y\x8a W\x82\x899\xe9%\xac\xe9$\xba\x98d\x12\xf3RIXRGLL\x1caI\x1b\xe1\xbc(\xe3\"`\x187\xe8\xc4t\x11\xd6L\xb0 \xe6\xf7\x8bp\xdb\x89\x13E\x98i\"\x12$\x89H\x9a\"B\xbf\x0cg\xa6\x87\xe0\x13-S\x9c\x93\x10\xc2\x9b\x11\xc1\x91\x0c\"\x98\n\xc2\x8c\xcc\x1e\x9f\x06\xc2\xac\xfb\xb3m\xac\x93\x12@\xc4\x0c6\x94\xfc\xc1=\xb6`\xe2\x87\x11i\x1f\xf4p\xf9\xae\x94\x0f\xf3\x13>LO\xf7`]\x97\x89\xa9\x1e\xbc\x89\x1e\xdci\x1e|I\x1e\xac\x93\x15\x9b\xe0!\x94\xdeAK\xee0#\xb5CDb\x87\xf8\xb4\x0e\xc1\xa4\x0e\x96\x9c Fs\x96oB\xc9\x1c\xe6\xa5r\xb0vJ\xfaK\xd2$\x0e\x89S8$M\xe0\x902}\x83+y\x83\x91\xba!M\xe2\x86di\x1b\xd2&m\x88K\xd9\x10L\xd8\xc0\xdf\xfa\xa1t\x0d\xfc3o\xb2\x06#U\x83\xd9Zl\xd8~\x7f\x9a\x86\xc8$\x0d\x11)\x1a\x94.\xa7L\xcf\x9089C\xba\xd4\x0c\xe9\x123L_\xdd`R\x86PJ\x86\x81K\xcbHGAD\xd4\x8a0!I\x15N\x7f\xe1g\xb6\xd7\xb1J\x1fpJm\xf1\x17\xc3\x01\x8a\xa1\x15\xfd\x1f\xc5kdS\x9fV\xa5\x81\xb5\x10\x02\x02j\xe0\x18\n\xd5\xb5\x92y\xa5\xbfY\xa0\x81\xb3\xb7\x97\xd7\x1f.\xdf\xbc\xfet\xf9V\xdcw\xf1\xa0\x80\x0c\x07hx\xc3\x1e\xdf\xf3\xde\xf2J\xdb&6\xba\x82\xf2\xa0\xa1\x91(\xc4\x98\xc4\xdc\xb5\xc5N\x0ei\xa64\xc7\xf5\x87\xe27\xdd\xeb\xa6ha\xbd\xc7\xeb\x1bU\x1f\x89v\x84\xeb1\xd3XQ\x93\xeb\x85\x87X\x18\xbdy%\x9c\xfd\xf1\x1c>\x9c\xc3\xc7g\x1cs\xd5\xf4Q-^\x1f_~\xfdO7/\x00\x97%y\xa6\xad\xc9\x8b\xfd\xd6\x12yO\x0d\xed\x8e\xab5:\xb6\xd4\x83\x89\xc5\x95\xb7\xec\x15\x8a\xa7W\xf0\xf1\xed\xff\x1a\x1eW!\xed\xf3h\x087~\x07(k%o\x07l\xeb\xbbm\xa1h\xa5MA\x9e\xa1-\x9dk\x89\xa06\xaf\x9fp\xb5a\xc3\x84v\x8f^~\xfdO\xce\x0dH^\xeb\xed\x02>b\xa5\xbe\xc5\xfc\xb0\xebI\xca\xff\xc9\xcd\x10\xff\xe9\xeb\xaf\xfe\x85\n }t)N\xac\xacw\xd30\xda\xe8\x00\xc7)B\x1bw#pgNCC\x9f\xe5F\xd5\xf1\xb1b\x8cR\xae`\xede*T\x9aSS\xd0\x92`\xe3\x9e\xf4\x9f\xc9\xd0jV\xec\x985o*\xdcAKd\xd1\xc4(6'\xa9c\xd9\xfc\xcf\xc1]\x16\x87k\xf7\x8dh\xc0o\xb0\x95\x98y\x18\x89w\xb3bC\xbd9\xd5\xe0\x98S \xe0\xac<\xc6t\xc4 \xe3\xac\x18\xf88\xa7cE\xc9Y\xf1\xeb:\x93 \xe6\x82\xd0d\xdc\xdcB\x8b\xe2\xe8\x06z\xce\x8a\x0fCg\xc57\xe8\xd9x\xbaBM\xc7\xd6Y\x99\x81\xb0+tT\xb4]\xc2\xd9Y\xe9\x0c\xb4\x9d\x95\x84\x98;+*\xf2\xce\xca\x1c\xfc]\x9f\xc2\x01\x8bg\xc5\x1d\xd7\x83\xec\x08\xed\xa9\xab1\xb0^%A\x97\xf5\xb9\xb4\xa6B\xae\xd1\xc8\x89f\x9b`\x0cN\x9f\xb1\x94f\x86\xd2\x0d\xdeT\xdd\xa9\xa90\x9fz*\x90\xe2\xdbC\xaf\xe0\x863\x86\xabA\xdd\xb0/\xc4\xc5%Q\xa3\xba\x00v\x0e\xe5%`{FH\xfe\xb7\x87%E\xf8\xe2d?\xf1u/\x9e\xd3\x7f\xf4}]=\xc0\xed\x01\xf0=^\x9f\xa4G\xce\x0e\xb5\xcbSk\x9a\xe7\x8c2\x03\x12Dz\xb8\xa4\x85}}\x07\x87\xd3zO\xcd\x07 \xcf!;\xe2t\x18N\x88\xfe\xder\xcb\xe1\x861!\xa9\xfeC\xbb\xbb\x90Du\xc5\xbf\xcd*\x81\x8f\x0cA\x87o\x0fQ\x11\xe8\xdc\xbb\xba\xa7 s&:r\xea\x97\xa68\xa4\x9dx\x10\xf6\xe6\xc4n\x89\xcb?\xfe@\xa3L\xcb'\x96N\x18\xc3\xb1\xc5\xee\xe6N\xb2\xeb\x06[bu\xc4\xb88)\x04\xa0\xabw\xbb\x12\xb7\xace\xb9=nl\xc2\xf5}\xb7\x87\xc5\x1bZA\"$\xb6\xbe\xd61T\x1a\xc1@\x1d\xdd\x92j\x8c\xe9\x07\xf9\\o\xfb\xbek\xd0\x12\x17\xc7iO\x02\xe3\xc6\x17[\xdf\xba\xf3\x87\xc6\x94\xdd)\xa9\xf5.\xaf\xae\x87\xb8P\xa4\xcb\xd4N\x98\xd3\xa1\xd7\xeer-y\xfbI\xb4\xe5\x1fU\xc3\xe3?\xfe\xc0~\x04\xf6#W\x9aH\xb6\xc7\xda\xc0\xa3,\x96\x9cN\x84\xe0\x93\x86\x84\xe6a\xb63!x\x1c\ncz`\x88As\x9d\x0b5r|\x14\xd6\xee\x1aN\x86\xe0\x15\xe0\x82=\x9e\xecp\xa8\x11TF(\x1f{\xab\xe3!L\x99\xe5\xd9N\x88\x90\xc4\x111\xbcXV\x87D\x981\xe4\x89\xce\x89\x1a1\xfa\xab\xc7A\x11\x9cN\x8a\x10\xd1\xf7\x11\xce\x8a\xe0tX\x8co(\xe4\xb8\x08>\xe7\xc5\x98f\x8c\xb5\x98\xed\xc8h,\x87\xe9\xcc\x08A\x87F\x98\xd2\xf5\xd9\xce\x8d\x1a=\x8f\xd3\x11x\x9d\x1caJ\xef\xa79?jD4WH\xe9W\x977$L\xe9kR\xcfH\xb0xGB\xc0C\x12\xa6\xf4z\x9e\xb7\xa4F,\xc2\x99\x0e\x9c^\x930\xa5\xfb =(\xc1\xf0\xa2\x04\xa7'%L\xe9kB\xafJ0<+!\xe4] S\xba\x9c\xd2\xd3\x12\xe27\x88\xcf\xe3\x12\xa6\x8cc\xae\xf7\xe5\xb4a\xf8\xbd0a\xca@\xe6ydj\xc4\xb8\x7f\xa6\xee\x95 \x1e\xcfL\x98\xd2\xe9\xe9.\x9b\x0eB\xca\x9diu\xe2\x84\x88~&q\xe6\x04\xaf\xce0\xa9S'\x18\x8e\x9d\xe0v\xee\x04\x9e\xaf\xe0ny\xaa\x8eM\xdd\xe1u\x877\xcb\xee\xdex\xaez=\xa4\x14U\x83\x95\\?\xacb\x0b\x0d>\x96\xe8\xe1y\xff;\x9c\x15\x0b\xf2\x94\xa8\xb8H(\xef\xafbW\xe1\xcd3Y?\xd3\x8a\x8c\x04Ly\xd4[\x8a\xf3\x07\xfa\x01\xad\xf7E\xc5\xcda\xf9\nZ\x12Z\x93W\xab\x9c\xceZ<T\x0dM\x0d\x8dG\xc4\xb3_\x8d\x86JW\xa8\x8c\xc8\x98\xa3L%\xaf\"\xd4f\xe2\x9f\xc2@\xe0\x8f?(\xba\x1a\xb1\x84\xebz\x83c\xfc\xf5\x94\xa6\xfaJ\xa2\xb1=\xbe\x7f\xce\x14\x0cdZ\xa9\xbe\x98b\xa5R\xc6\x87\xf7\xafE\x93U\x1d\x1eYT\x18\xaaZ\x1a.O1\xf5\xb4\x85\x16\xfft\xc2\xe4\x17\x06f\x05\x03NiK\x14\x13\xbc\x8bW\xb1\xa6\xa4\xb3\xef\x83o\xd9j\xfc\xad\xee\x03\xcf\xf4h=\x8f\x99\x1e^e\xd4\xf4\xb4\xf8;<ezZ\xbc\xdc\xe2\xd0\xfc\x08\xa8\x8d\x7f-\xc6\xc0\x98\xc6\xbf\xb0\xcc{[l1\xa4\xb0uN\xf1\"\xd7I\xb8\x87\xf8\xa6\xde\x8c\x1f\x1f9I\x91'EQ\xfc\x1b\xa7UW\xde\xeaG\x14U\x83iEl\xe2hyD1\xdb\x82|?bO\xb0\xc4mS\x19(\x0b\xf2\x16\x99\xd9Q\x9b.\xb9f\x1f\"\x90\xa5\x91\xd3\xec \xb4,y\x82\xf5D.\x99\x8f\xb9\xf5\\,\x8e\xbf\x81\xf8 \x85G\xbbJJ\xeb\x81l;\xe6a\x1b\xd6\xd5\xf3\xee\x12\xb9\xf6\x85R]H#j\x18?\xfb\xaey\xf4\x80\xd7t\x00\xf8\xf6`\n\x01\x0bm\xce\xa3\xd4\xd5\x16\x80\x06|\xa2\xa5\x1f3\x9f \xd6h\xd4\x18t\xa3\xfd\xd1\x82\xdf\x80\x1b\xc3\x01\xa7\x18\x08\x1ey>\x19\x9e\x03&\xa6\x03.\\\x07fuu<\xe0\x13\xd1M\x0b\x04\x04}/M\xcb)\xab\xdd\x94s'\xb9 !\x80T\xb0\x108\xa1!\xa9\x8d\x14\xf0\x10\xb8\xce\x1cx\x03e{\xa1\"\xf0\xcf]b\xc8\x08\x02\xb0\x11D\xf6\xc6bE3\x0bB\xb2P\x93G\xe6\x1c\x82\x15J\x02\xef \x83\xd8QL\x82\x95,\x04;\x16\xd9\xd2\n-\x81\x17^\x829\xab\x91\x04j\x82\xb9p\xd3\xc8\x85u\xc2N\x90`*\xd2@P\x10 C\x81\x17\x8a\x82\xc8\xf1\x8c\x84\xa4\xc0\x0bK\xc1\xa8Fc\xe0)\x08AT\x10\xd9\xa4u\xdd&\xc3U\x16Z\x92\xda\xcb\nYA\x14l\x05s\x863\x19\xc2\xb2\xd0\x8a\xd4\xdcB\x10\xca\x829#J\x02k\x81\x17\xda\x82\x00\xbc\x05s\xfa?\x11\xea\xf2o/\x1b\xdc\x05\x11\x90\x17\xcc\x19IR\xf8\x0b\xc6m07\x0c\x06s\x864\x0b\x12\xb3\xd0#'\xdf\x80\xc5\xc0\x0b\x8d\xc1\x9c\xfe\xcf\x82\xc9\xec\xfd7\xa12\x88\x81\xcb`\xce0\xe6Ag\x16\x82Vi\xd5\xb9\xb9B\x10\x1a\xcc\x19\xdb,8m\xf6\xd0\xc2\xb0\x1a\xcc\x19\\R\x88\x0d\xfc0\x1b\x04\xa06\x983\x90d\xb0\x1b8\xa07\xf0\xc2o0\xa7\xefS\xb19')\xb5\xdf~5\xcd,\xd4N\xa3%0<\x0br\x07~\xf4\x0e\xc2\x08\x1e\x80\xef\xc5\xe6F\xf2\x9c\xa4'\xa2y0\x1f\xd1\x03\x98\x82\xeayu\x9cZ\x8e\x1c\x99\x9e\xa9\xe1\xa4\x8e \xe4Ir\x7f\x81o\x85\x9d\xbf\xaa<\xb4k4?2W\xdb\xd1*M-\x1c\x91\xf5\xa4\xb8\xb7)\x0b\x1e \x0f\xa9w\xf9\xa5s\xcb~gN\x0dm[\xaf\x0b\xea6B\xdd\x01\xc8\xc7\xbb\xe2\x16\xcb\x9b\xe5\x06\xdb\x02I\xaax\x826\xd0\x18H\x81W\x19\x81*|j\xd0\x1a\xd3w\xda\xe8 M\x11\xb2V\x1f\x93\x14\xd4\xa8\xe0\xfe\xa5_Hu\x1c]\xee\xd7e\xf8\xc9\x1b\x8ex 3\xc1k\xf7\xaf:l\x8b\xdb\x04\xff{x\xc0\x7fDe\xb1A]\xddL\xc5\x90\x04\x0e2\x01D\xd2\xaaF\xa1Ht*\xf0z\xff\xd5K>\xa1\x19V2x\x84kM\xe3\x91%\x9dB\x08U\xa2\xdbmd\"\xa3\x8e\xd4 M\x16\x9f\x15\xf6-\xf3V\xe61/\xfe\x03\xdd\"6\x03\xfcWA\xb68\xe0\xfa\x14\xf2\x04\xb3I=\xbc&\xd4\xb7\xb8ihL\xb4\x8e\x06za\xc1v\xfa_\xb7\xf05\xb4xM5\xc3[%\xff\xe7\x1f\xd0-\xfaH\xbb\xf4\x9c\x05Y$\x1d#\xadJ\xdf\xacQY\n\x1dB\x83\xc9\x95<k\xbb0\x12\xca\x154\xb8'SQ\x8dC[\xfd\x04\xde\x15eI\xe3&\xd4\xb0\xaba\x85z-'O>\xb6l;$\x0b\x91v\xc9F\xf0-\xb9\x0e\x97\x10\x19\xb6\xb3\xbe\x815:v\xa7\x06\x1b\xe4\xe9m4\xba\x01~\xaf\x0eM\xb0?h\x8d\xe0\xd5i\x17K\x9a|+d#\x81\xf3\x1d\x9b\xa2\xea\xa0>u\xc7S\x07\x9bSC\xd5\xa3\xac \xc0\xbdsgY\x1c\nc\x87\x15U\x87w\x96x!E\xd5}\xf5Ro\x9cRP\x96\xed\x80\xee\x8b\xc3\xe9\x00%\xaev\x1dusf\xbd`\xee\x97\x7f\xc1M\x0d\x07\x8c\xaa\x16N\x15\xad\xdc{\x18\xf6\xdb\xf5\x95\xde\xc8\xb0\x91\xb5QrI\x10\x10\xdb\x17\xdc\xd0m{\xa2\xc3\xa4o\xab\xe6T\xe2\xecY4\x0f\x16\x8atV\xc9\x9eE\x89\xe0\x9eYPO\xe4be\xcf\xa20\x8c\x93=\x8b\xb2gQd\xef\x93@0\xd9\xb3\xc8\xd3\xeb\xa4\xd0J\xa4z8{\x16\x8d\x87L\xb2g\x91TF\x8fc\x16\x142y\x18a\x08d\xf4@\x92\xc2\x1e\xd9\xb3h\x12z\xf1w\xe3Y\xc4\xcd*\x0f\xf8P7\x0f\x91\xaf^\xa5\xce\xf0\x9c\xe6\xffV_\xd3\xfc[f\xca\xbf\xb4\xa98\xfd\x8dH\x15\x87\x96\xa8\x86\x8f\xbf\xa8\xeb-\xf7\x13\xa0\nPN\x85\xa9*\x96\xff\xd1\xd6\x96h\x19A\x1d\x91\\\xaf\xb7\x89\xc4\x8a\x12\x84M>bQS%Z\xca2K\x1a-\x1eo\x95\xday\xca\x8b\xd8\xd5\xfc\xf9\xdc\x07\xbbWuc[\x8c\x0f\xa8\xb9\xc1\xdd\x84\x904U\xbdt\xb9m\xc4\xc4z\x91\xaa\x93-\xbe\x16\xdb\xf2\xea\xfa\xb9\xe2\x89A\xc6\xf0\xa5\xf2\xdc\xf8\x92\xbd\xb1\x94\x03X\x96\xad8\x0c\x82\xea\x92=0\x96\xbd\xb1\xb4\x19\xb8\xc8\xa3\x0fq)^\x15x\xcc\xd3\x14\xac\xeaS\xc5C\xe0\xf2\xc4\xed\x1d\xf5\xe2\xe1\xa3Z#\x91/D\xa6\x87\xbb;\x8c+\xae\x15\xeb\xcfP\x89\xda\xaeX\x17\xdd\xc3\xf2p*\xbb\xe2X\x16\xa6Rr\xc2P\x94\xe5\xb06\"\x0fB(\x7f\xc8\x13\x8e\xa9\x86P%\xadV\xa9\xda\"\x1e\x90\x12Gl\x8fn\xb1\xc6\x12\xf6\xb8\xd8\xedC:\xd0\xd1\xa3\x90i\x0f\xe1\xd4:\x1e\x82\x8f\xb1V\xfe\xab\xb6\x1c\xe5\xfaT\"\xcdp\xbbh9\xc5\xcdB\xdb\\\x81~k\x8e\\\xc36\xd7f\xac_\xe3CQ-w\xa8]\xd2\x9d\x1d\xc7L\x94\x81+\xf5U\xa5]Q\xf5\xeb\xc6~e\x90\x1f\xe9\x8c\x801\xaa\x0d\xe1 \x129\x19\x9b\xd5z\xe8\xde\x82\xf6n\xfe\x97\xad\x9b\x8e-&uU\xe8\x01WT\x97\xd2\xec\x94he]\x0d-\x0d\xc7*\xa5\n\xea\xf7\xe5\x17R\xe3#\x10b\x07S\xfc\xef\xec\xd6f\x19(\xd9\x94\x8f\x9b\xd5\xd5\x99\xd4U\x0ff\xc7\x0e\xabH\xeaj\x19\xb7\xd6\xd7~\xe0}\xc5!O\x11b@6?\xfa\xa1Y\xf8{\xf3=\xb2\xde\xc4\xe0\xbc\x8d\xc1\xc1C \xf1\xad\x0c\xfa\xcd\x0c\xb1\xb738\xaf5\xf0\xba\xbb\xf8\xadu\xe6\xdd\xd6\xfa\xc0\xd8\xdd\xad7a\xbd\xc0!|\x89\xc3\xa3\x8cx\xde\xa5\xae\x8f\x8d\x1e+\xedb\x07\xedr\x07\xf7\x05\x0f.\xce\x00sF8\xf1\xc27\xb7\xa9\xb8\xfe-\x97>XY9\xf8\xc63Z\x00\x00\xb7\x10\xe0m\xc8\xf9J\x9f)\x10\xe8\xf3\xdc\xedmB\x01\x04\x04\x03\x88\xe8\xbaap\x96HH\x80(A\x01& \x0b\xbf\xa89\xd9\x1aU]\xbd\xa8\xabU\x8d\x9aMQ\xed&\xbc\xd5\xf81\x19hD\xbe\xd8X=\x18\xea\xc1\xd5\xb7o\xe0Pl6%\xbeC\xfd+\x1c\x9d\xbaz\xd9\xde\xa1\xe3\xb2\xdb7\xb8%\x8fQ\xaf4p\xb7/:\\\x16m\x877\x94\x19W\xb84\xc4\x87\xb1\xd11\xd5Ed\xefa\xe9%,\xec\xcd\xa4\xa1\xb0\x85uL\xf0/#\x08\xb0]!u\x93[\x12\xb1\xaeM\x12\x06<K\x0d1\"A\xe4\x92Ch\xd9\xc1}\xf4\xfd\xcb\x0f\x8e-\x00\xa3<cgl\x07\x9b\xb0\xa9\x9d\xe9\x08\x93F\xde\xb2j\x95\xc4v\xda\xba.*2m\x13\x0er\xe81q\xac\xeb\x92\xf9[\x17ue{zD\xed\xa1xGv&,E|\xeaV\xa2\xbc\xa9\x8bj\xb8\xb9\xb9\x87;\xcbM\xa5:\xba\x93g*\xaax\x93J\x068\x16\x8c\xfc\xd3 \xbc\xf1\xc8\xef4\xf4\xfaU%\xa4\x01\x0d\xad\xe7VZlu$j}\"\x97\x16\x1a\xfc\xd3\xa9\xe0\xf9\xbcw\xf5\xae\xa6\xf1\xbe\xc5\xb1\xec\xd0\xfd\xb2\xb1D:VF~@\xf7\xcb\xb6C\xd5\x065\x9b%Y\xf8\xe5\x117K\xb2L\xe1j\xe4d\xe9\x13<\x829Fg\x13\xb1,\xb7\xe7\xda\xb6-\xb9\xf3s\x9fiy\x82\x85O\xbd\xf4\xb1\x8b\xef\x90\x18\xe8\x08\x18\x1fy\xda\xaa\x12\x83\xe5\xe4\xd7uyUm\xeb\xe8\xb3_\xf8/U2\xd3\xf5]\xa4\x91\xab`\xf6\xb4No\xbbI8\xd8\x06\x1f\xeb\x96&\xe3\xbe\xc1\xbd\x9c'vp\xe6&\xa3\xb7T\xdc\x86\x82aM\x0e\xa8\xa8x\xbfy\xcc'\xfe\x05\xfd[^\x81\xc7_\x01z\x18psDM\xf7`]\x89\xf2hp\xe4\xbc\x0e\xe9\xd7\xa1,~:\x15\x9b\xc2\xb1\x08!Q\xc8B\x86\\\xbb\xfc\xf5o\xf2c*\xb6}/\xbe%\xdcy\xbc\xe0o\xb9\xd6\xa36F\x11'8\xbbX\xbc\xa7\xcahV\x0fVv\x0fn\xa9\xc2\x17\x99\xc5*Yx\xfa\xea\x92.<U\x02\x1ezS\x0f\x81Fg\xceI\xd0H\xf1s\xa1\xfd5\xfep@\xc4U\x01\xe6u\x01y\x05\xff\x06W0x\xd5\x80~\xdd@^\xc7\xbf\xc1u\xf4_U\xa0_W\x10\xc1\xb0\xad\xd7\x96\xa9\xf0u_[dN|\x1a\n\xa5\x12\xa7\xf6\xe1\xfa\x8d\x98\x8f\xfe\xfe\x8e\xb9*'(\xc9H-\xfd\xb2L\xfb\xae\xd5oU\xcf\x9c\xfbnV\xef)\x99p\xbb\xba\xeeW\xcf\xb9\xf6\x9dl\xe7\xd9\xf6\xf6\xdb}\xbe\xbd\xd5\xfcg<\xdd)Oz\xce]'}\xecY\x8f\xbbw\xad7o^[\xb9\xfc-\xafm\xd4\x8dl\xb9\x93\xf3\n\xcb\xe5oy\x85\xc3w\xb5\xe5\xb6\x8e\xb9\x04\x1c76\xc0\x11\xed\xf8\xcc\xe9\x17^\xd4\xeb\xb0\xc2\xf7\xdd\xf2\x06?D\xca\x0f\xce<\xc6>e\xec\xd0\x8a\x007\xc8\x7f2l\xf5\x88Z\x0e\xb4^\xd3\xb8\x0e?\x9dp\xdb-\xd8\xef\x1a\x11\ng\xd2\xea\x84\x1c\x198\x86C\xddv\x80\xb7\xdbb]\xe0\xaa+\x1f\x16p\xd5Q\x1f_\x1a\xf1\xe3p\xec\x1e\xa0\xd8\xea3\xba\xc7\x0d\xa6\xf9?\xab\x1a\x0euC\xb1\x96S\xd9)xyWw\xc8\x1a\xf8\xd53)\x96$\xb9.\x08\x9d\x92\xa7\xb3A\xffcpZ\xe6]\x01t\x8b\x8a\x92\xa2eF\xff\xe5\x89b\xde\xf2\x94\x88\xbe\x87\xefP\x0b-\xee\xce\xa1\xe8x.z\xd2\xde\xa9bgp\x035\x99\x87\xbb\xa2\x1d\xd6\xd1\xbd\x86\xd7z\xcc\x8d\x9a\xcd\xef\no6,>\xc3\xee\xc3\xf5\x9bA\"\xe4\xf9\xe1\xa9\xd3eCM\x92$b\x83\x13iQ\xed\xe8\xe9\xc2m'\xaa\xc0^`\xef\xf20\x95\xb1\x89/?\xd6\x87\xa1S\xffi\xe1V\xd0\xe0#\xa61G\xbeEM?\xb3\xdf\xc0\x8b\xffi\xfbX\x19#\xdd\\\xdf\xc0K\xe5\xcb\x9f\xe9?\xc2Br;IJ\x16b\xdc\x0819\x11\x86<\x82]\xc4\xbe4<X!\xf8\xae\xb3\xfc\xc8\x1cs}\xcd\x7fd\x9a8#\xb8g(\x06o\x0cU\xb7\xe1\x8eC\x9dQ\xa8|\x96\x86 \xedvJ!\x0d\x8dG/\xe3L\"\xc6\x9bCPs\xb3\xc5\n\xb5xq\xfbb\x85;\xf4bAf=\x9aKj\xbb\xc5\xb2\xd8\xfa\xce0>\xb1_\xa8\x93\xd7\x9eU\x9f\xb3\xe0*p\x12\xb3\xaa\xc5j\xbd@\xc7cY\xaci\x9f\xda\x05\xb5\xd4\xdb\xe2\x86\\BoIo\xa9\xabP\xf4\xac\x1eQ7*\x8d\x90rvHe\xc5\xba\x89\xc5~\xaf\xb7p\xac\x9b\xee\x82\xdb\xfb@\xb1\xc1UWl\x0b\xe6j\xc6m\x88E0\x9a\x81\x1a\x91J\xa4\x7f\xb6\xf5\xa9\x19r\xe0lO\xd5\x8ef]\xa7\xcb\xa3\xb8h\x847\x06\x986\x9a\xea\xca\xf2F\x1a\\\xa2\x07\xd2?Kc\xf6Y\x18f\\\xcd\"o6A\xc6|\xf5\xe6\xe3\xcb/5\xea\xb2\x05\xa64\x03|\xf4|\x96\xa0\xa8\x98P\xcb\x82\xe9w\xfb\xe0V\x18ik\xd4\xe2j\xb3\xe4\xa6\xb0\xfaTz\x93\x81)\xfbA\xa6\xc2\x8d\xcbh0\x0f\x1e6\xa7\x05T\x96\xb0n\xea\xb6}\xcev\n;k\xa2\xdf,\xaf\x8d\xb2#\n\xc5\xf9\x90V\x12k\xdf\xe05.n\xf1\xfc^k\x84&u\\y\x1cy\xbam\xef\x85\xc5\x1a\xb5\xc54\xb6\xd3\xd5\xb7o\xfaV\x14SQ^\x933\x9f\x1a\x8e\x0d\xbe\xc5U\x07\x08\xda\xa2\xda\x89\xcd\xc5\x12\x05\xad0\x8d\xb0\xc4\xc94xsN\xc9K\xbb\xed\x93\x18\xc8%\x9f\x83\xbe)\xe6Vx\xc2\x94\xf9u{\\\x89\xaa\xb0B\xd5M\x7f\x85p:\x1fq\xb5\xe1$\xbe\xe8\x19\x8c\xa0$. \xe5Xt5lQ\xd9\xe2\xe0\x86\xa6W\x0b=n\xbfG\xed~\xb4\x8c=6]\x1a\x0b|RT\xb0\xc7\xf7\xfcA\xf9L\xb0 u\x00\xf4\xf0K\xe7\xd3\xb2\xd0j<4c\x101&\x86}%k\xdc\xc4\xc8\x99\xa3\x8cj\xf4\xd4\xd1\xe1.\xbb\xe1Z\xb1\xd6\xb3\xd7\x05\xe3\x8a\x81\xe9\x12\xff\x8c\xebF\xa3$\xd8\xaav\xe5@\xe4\xb5\x03\x8e\xab\x07\xa2\xc76\xe9\n2\xa8(3\x94\xe0*\x92\xa8\xf1\xe3n\xb9\x90}WRx\xdf+[0z\xe3\xb3a\xcd\xdd\xf9\xe3_\xe6\xd2\xd6\x7fd\xfc\xca<$\xb3\xde3\xe9\x8e\x8a\xf7\xb0\xc4\x1f\x17\xf7\x81\x89\x1f\xe7\xe4C\xe3\x9f\xaf\xb4\x07\xc7zt\"\x0f\x8f\xd1Sy\xff\xf5>\x8fD\x16\x91\xbb\xd5\xba\xee \xbb2Zi`\xf8@\xf3R\xe8\xff\\T\xca\x11]h\xa7 \xea\x06\xc8J\xed\xac\xd4\x06\xe7)\xa4\\\xfaM]U\x98\xf9\x9bM\xbb\x1d\x9c\xea\xda\xb8[\xe2\x92\x82\xfa\xaf\x99M\xc0\xe8{\xc2eR`]M\xbe\\d\x10\x9a)\x01\xaf\x1f\x9a+k_\xed\xb3%2\xc8\xca5&\xde\xa3\x89\x94\xdb\x1a\xfby\\\x07)\xfb\xb3\x16\x9c\x8fD\x08^\xads\x9f\xb8\x1a9\x9ek\xb90\xa2G*O]\xf0=wa\xc6h&?}uN#=\x84C\xc3\x89\xd1.\x86\x8e\xbdU\xc3\x18\xde\xc2\x9f\x08\x0bcg\xe1\xbb\xba\xa1\xbcc\xf4~\xb6+\x19\xa3vc\xfck\xe1\xff^\x93p\x0f\xdb\xf3\xac\x9es\xcf\xf0\xfa\x96\xaa\x96\xcd\xb3\xae\x1b\xbc`AM\xc9\x96yC(U\xed\xa9\xfd\xd8\xa1\x0e\xff{\xd1\xed\x7f/\xb9\xb9Gl\x15#\xec\x8d\xb0:\xe1tyZ\x06\xf6\xd9\x94\x0d\xd5\xe0\xdb\xa2-\xea\xca\x88\xf4\x0e\xf3$ 6\x95\x8c6\xcb\x83J\x17\x96\xce\x0c\x99\xea\xf5\xa9i\xa8$\xa4\xc6L\xeb\xbb3)\x1c\x80\xbf;\xdc\xaf\x9fl`.\x91\xb2(\x1f\xa2M\xfb\x89P\x18\xde;\xd2PY2\xe9\xee\x03\xaf\xc7\x96\x94\x0c\xaa\xa8\xd6\x0d\xdd\xc6x\x03\xa8\x03\x8c\xd6\xfb\xbe\xd5}Q\xca\x92\xe8\x0d\xc6\xc7B\x0d\xa4.\xe8\xbdcB\x16i\xa2E\x07\xbc\x80\xdf\xd7w\xf8\x167\xd0\xd6\x07,-=*wuSt\xfbC\x0b\x07\xf4\x00\xeb}]\xb7\xaaE\xf7\x17\xca\xcc\n\xad\x1b\xefQQ\xc1\x1a7\x1d\xcf\xb4\xba\xe1)k\xf1b\xb7\xa0\xb1\x91\xc9\xa4\xde\xb4\xe7l\x83=\xe79Ud\x82\xab\x06\xa3\x9b!2o\x0bWtR[\x0ck\xd4\xe2\xf6\\\x99\xa3w}\xf0\x7fy\x8eZU\xe5\x89:\x99>\xef&yO\x15\xd5 \x0b\x0b\x85C]\x15]]\x15k\xba\x0e\x94\x1a\xa2\xe1\xcf0YKD\x0f\xb1eR\xd9\"\xc9\xf4w\xb8k\xd9\xac\xf0?\xf63\xbb\xa4c\x9e\xc4\x9f\xc9\xa7\xcbS\x13+\x91\xfb\xaf\xd6\xd7\xf0\xf9\xc3\xf7\x17\x0d\xe6\x0f\xbf\n\x1d0O)\\\x15?\x9d0\x19\xbex|3\xde%\xc9k\x1a\xa9!\xf3\x86~\xadR\xc6\xb9\xaeKX\x9d\xb6[\xdc\x08S\x8c\x05|\xda\x17-\xef3\x1cNm'^\xb6dg\x97\x18\xb5\x9dN\xa9\xae0<\xb9xBc+\xa0u\x87\x9b\x05e\xfc%j;h\xf1\x8e\xac\xb9\x90\xc7>\x7f\xf8\x9eb\x86\xdd\x9e\x92\xd6\x08\xf5I\xac\xf5\x16\x98~\x80\xac\xfbO'T\x92qo\xd8\xacp\xb2t\xfcg\x88l2\xbd\xea\x8f\xa4\xb1\x8b]]\xefJ\xbc\xa0c^\x9d\xb6\x8b\xb7<\xbb\xf0\x8f\xcfX_)\xb1v_\x9f\xca\x0d\xd9kd\xb0\x1a\x9d5\xaa\xd8\xe6\xa3LGo\xe5\x8c\x1c\x9fs2=\xd4\x10\xe6\xc9\xe2 \xd9\xf2U\xdd\x11\xf9\x1c\x1f;\xbcyf\x02\xbeW\x15\x1c\xc9\x84\x15k|\x0e\x1d&R\xc9\xa9=\xd1\xed}l\xf0\xba>\x1c\x0b\xf2\xbc\xaa\xa8\\\x84aUT\xa8y\xa02\x15\x19\xaf.\x0e\n^k\xc4]\xc1\xf7G\xbc\xee\x80\x9a\x18\xd3\xf8\x9a\x9c \x92e%\xef\xd4z\x0b\xaf\xab\x87\x9e\xdb\x9cSy\xe9\xf3\x87\xef[vGk\xd4xVkC\xf5\xb9\xde\xe3\x03\x86\x1f\xf7]w\xfc\xf1\x9c\xfd\x7f\xfb\xe39\x91\x06\xab\x9a\xffzNw\xca\x1aUP\xd3\x9dOGJ\x98\xd3\xe9hL7\x19\xa1\xd1\x06nn)\x7fD\x1d\x1c\xd0\xb1e\xcbN{\xda\xd5\xbd)\x11\x95[8SC-l\xeb\xb2\xac\xef\xdaW\xc6\xec\xff\n\xae\xb6C\xdf\xc8r\x1d\x9b\xfa\xb6\xd8\xe0M\xdf}*\xae\xb4\xed\xe9\x807\x0b\xb3\xfa\xeb\n~\xff\xe9\xd35\xfc\xee\xf2\x93\xc8C\xf5\xf9\xc3\xf7\xec\xc8<Pi\x07\xc1\x9f\xf4\x8d\xf7\xe9\xe1\x88\xff\xfc\xa7?k\xc4D\xfe\xa5\xa2\x12\xab\xccn6:\x7f\xc7\xa6\xde\x9c\xd6\x98\x08N\xb8i\xeaF7W\xfc\x15\xbc\x96$W\xaa7\xa0\xb9\xb8\x98\xd6b\x8d\xd6\xe4,\xd6\xf5\xcd\xe9\xd8?\xde\xfb '&\xc3\x002\x08\xda\xee\x1e\xdd\xd2\xa5>H\xbbq\xc3\xb6#\x12\xdd$\xff}[\x17D\n4S%\xb2F\xe9\x01k\xf0\xb6n\xf0\xb9\xa8F\xa8\xa1\xaeX\x15e\xd1=@\x85\xf1Fpy\xca\x00\x9a[#B\x0b\x8dD..\x1cr \xc8 X\xc0\xd9\xe7\x16\xc3-n\x08\xa7'\xe3%\x1b\x82\x9ce\xb6#P\x85v\xe6\xf8\xf4\xfbk\xf1L_\xdbwuGE\x87\xa2\xed\x03b\"\xdaS~\xa6\x07\x19F\xd2\x82\xd8&\xb3\xa6\x8a\x1fS\xf5!\xb6\x034\x98pT|N%\xe9\xa2\x13\x0d\x0cHw\xbf\xc3WxWT\x15\xe96\x91c\x0c\x06\xf9p\xc4\x0b\xb6\xd7\xd0\xb1h\x17\xeb\xfa`\xf2\x9b\x8ft\xa7\xb7L\xb1B\x8eQ\xa5\x9fW8\xe3O%\xa6\x99bG\xe3\x19\x1c\xe8\x85\xbc2\x0e$\xed&}\x17\xf4r<{\x17\xb4G\xbc.\xb6\xc5\x1aZ|@UW\xac\x15\xd5\x95\x96\xa9\x0cb$<\xbf>\xcf\xb8A\x7f \x87p\x85\x01\x91\xc6\x8a\x8d\x9c\x80J\xbf\xf7DR\xa6U}\x8bE\xc7\xcd\x00Ad~\xbf\x08\xb7\xfd\xe3\xeb\xea\xe1\xc7A\x15L\xdeF\xcd\xaa\xe8\x1a\xb2\xe9=}\x10\xbc\x0b\x95\xb52~\xf6\xe6\x92\xa7\x9dp\x18\xca\x00Y\x1fV\xa6\x00 \xb7#\xeete+\\\x8b\xcdW\x16+\xda1\xce\xf7\xfa$\x1a4{\x0cZ\xdf\\\x9c*\xf2\x7f\xe4v\xe0\xd1|\xcd]\xae_\x86\xf5\x16N\x1d;\xd6},Y\xc2L\xd0\x86 \x9a\xa8\x84\x1d\xaepCM9\xd9\x13\xaaW\xd6\x90v\xd8D\xcb\x14/\xef\x11\xd9\\\xf0\xe2\x15\\\x93\xde\x90\x93\xc2;\x86\xfa\x89+*x\xf3\xeb_\x1bL\xfa\xbb\xba\x86m]\xc37\xb0X,tKQ\xd2\x1c\xaa\x1e\xf4?\xa3\xeaaA\x1a\xfa\xae\xa9\x0fg\xdb\xba~\xa6\x7f\xb0X\xe8\x1c\xb8\xd8\xc2\x19\xa9\xf6\x99v\xebS}\xf6\x8f\xa4\xde3\x8b!\xabY\xf7g\xdbX_\x06\xc6\xfa\x07t\x8b&\x0d\x16\xbe\xa1w=\xa18rlE{\xf6]]/\xd6%j[\xeb\xd0X\xd3\xe4S\xd6c\xe9s\xbd\x95\x9f\xb5\x7f_\\\x90-\xe2k\xfb#:`ru\xbef\xbd\xd8\xe1\xee-KfuE\x13&\xac\xf1\xd9\xb3\xf8NYk\x9b}\xb4\xac\xcbW\x81u\xb9~\xe8\xf6ue\xac\x0c\xeb\xc5wu}\xb6X,\x8c\xac\xc1bU\xce,\xbf\xd0\x9dHW*f\xa1H\x85+6Co/?\xbe\xf9pu\xfd\xe9\xfd\x87g:d\xc6\x08\xb3\xbdj#\xcd\x88[F\xff\x9b\xc0\xe8\x7fW\xeb\x03\xa7#\x7f\xf5\x0d\xfc\xe3q\xb5\xf8\xae\xae\xffs\xb1X\xe8kO:sN\x04\x1b\xf2\x1d\xaa\x1e\x8e\xab\xc5;|g\xedW\xb1\xa5\xdf\xfd\xc37P\x15\xa5\xcdJ\xdc\x9c\x14c\xab\xd9\xbe\xd1:iT\xe1\xed\xb2\xfe->W\x07\xd4\xb4{T~\xaa\xd9\x11\x9a\xd2)\xe9/\x9f\xa8\xe2z}\xd3sC!\x86\xc2\xeaa\x10\x14\x04\xaff\xd0\xd1\x03\x88\\n\xa7V\xb9\x95\x9fZ\x04\x81\x0b\xf2rZ\xd0\x1f\x88h\xf4\x94\xbf\x95{\xd9B\x80\x8e|Mer=\x83\xae\xca\x07!\xf9\x1b\x0f\xb1^\xe8\xe2\xf1\xfc;\xf1\xf6{z\xf1T&\xc6\x9f\x1d\xa2Y\xf6\xce\xc0|o=\xd9\xd6\xf5b\x85\x1a\xda\xe1\xfb\x8b\x87\xc5_\x9e\xb0\xb12IZ\x7f\x0e\xd0\xe6\x9e\x90\xaf\xd4\xcb\xe2\x0f\x1f\xdf\xbf\xfbB\x9f]\x1a\x1d\xbd\x7f[\xf6\xe8/\x11\x7f\xe8u\xcdd\xefS\xdb\x07\xdf\xdb\x9dJ\xd4\xc8T\xcc\xca\x1d\xb5\xe5\x19\xae\xda\xf3\xc1\x83\x82\x9f\x88s~{+/R\xe9\x1ad\n\xd1\x1f\xff\x8d\x0c\xedG\xae\x0eU0d1Q\x0bq\x00_\x19b$Z\xdf\x90\xb37<2\xb6E\x89uN&N\xe85n\xda\xba\xb2lQ\xfe\xd6\xdf\x16M\xdb-\xe9\xccZ\xfd*\xf8gdi\xc5W/\xbd\\\x93\x14\xb3\xb5't\xc4O^\xc1\x13\xdb^U\x87\xb2`}~rnR\xa1\xbd}\x87\x0e\x84\xd2\xbf\xb2\xae\xfd\xd6\xf2\x19\xe9\xad\xf6\x95\xaf\xcbW[.\xfe\xaak\xc9\xd6\xa2h\xe1\x0e\x97\xe5\xf3\x9b\xaa\xbec\xba\xef=\x92\xd28\xb2\xbd7\xd0R7\xcd9\x13\xdb\xb4\x9d4 \xc1\xbcA\xb2AhH\x7f\xba=dr?\xd2m*v\n\x8bT'\xe9\xcc\xe9&/\xaa~\x87\x01\xd7\x1a\xf0\x0d&S\xa2\xa4\xfb]\x05g\xe4\x1c\x8a\x81\x1a\x0fV\xa1)\xf9\xf3\x9f\xfe\xfc\xcc\xd8\x80\xd3WW%n[`:\\B\xe8\xc5\xe2\xe5\x8b\x97\xed\x13c\xd9\xc4\x7f\xd9U\xe3\xf4g\xbb\xa0\xeeR\xceK\x90\x87\xaeg\xe7GY:\xbf\x9c\xd6^Q/\xb2\x99\xb5C\x02#\x01\x00\xa7~\xde\xfaT\xf2\xa7\xd6\x9c\xa0\x93w\xea\xe3'6\x1f\xa5\x83\xb7#R3u\xef\xbd\xc6\x9dQK\xa2l\x1fl?\xd2h\xd7\x19\xad$\x8au\xa6Ng\x04gh\xd2u\xfd9#\xa8\xa9\xceu\xe3\x91aQ\x10i\xa4\xb66Bs\xa8\xc8\xf79\xdd\x90<\xad'U\x0c5d%w\xe4\x1e\xec\x00UL[\xc1I\x0b(\xf7xjX\x8eG\xf2\xde<nP'yrT=\xdb\xdc6\x18\xff\x85N(\xcb6h?\x98WB\x97\xbeyC\xff\xf6q\x00\x01\"\xce)\xa3\xb3\x0c\x04\xdd\x1b\xb8\x14?t\xbd\xf1\x9cJF\x07 \x94J\x03_\xb3\xf6\xcd\xde?\xc8\xe0D\x06'28\x91\xc1\x89\x0cN(%\x83\x13\x19\x9c\xc8\xe0D\x06'28\xe1\xa9\x9b\xc1\x89\x0cNdp\"\x83\x13\x19\x9c\xc8\xe0D\x06'28\x91\xc1 N(\n\x9c\xb0\xab\xb3\xad\xeaF\x19z\x90\x94}\x16\xdc\x81\xff\xce\x89\x0dzD/\xf602\xa2\x07\x7f\xa1/\xb9\xdaT\xd7lFy/G\x07\x82\xd1\x1aS\x1c\xba\xca\xa2\xa5* \xa12P\xe6\x86\xbe\xb2\x0d5\x90P$74Z\x9c\xc2\xde*\xaa \xc0T\x0d\xc8\x9e\x86\x0br\xa6\xfa)\x17\xe7\xa8\xc1\x87\xfa\x96\xbcq\x99\x83U\xaf\xb1\x90[\xe1\x9d%\x1d<\x87\x13\xd9\x9d\xdaC\x83>\xd09aq\x90\xb8_\x14\x11P\xba\xa2\xe4Oj\xc4\x8e\xd6\x8e\xf9G\xf5\xc3\xb6\xb8\xb4\xf8C}\x94L\xd7\xcfZT3\xc3Yv\x04s\x9c\xa4\xff\xfc{t\xces\xeePp\xecR\x18\x95\x15\x0c\x82o\xf8y\xbbV#\xc6\xefW\xe7\xce\x85\xc4\xbb\x17\xc2;\x18f\xefb\x8d\x98cOk\x9e\xbc\x96\x0d\x19\xe3\xd3'\xd7\xe3\xf4\x9c\xbe\xbc\xee\x83@9\xf1\xe8s\xe0@n\xe2\xf7r\x97\xd1\x99\x8c\xcedt&\xa33\x19\x9d\xe9KFg2:\x93\xd1\x99\x8c\xcedt\xc6S7\xa33\x19\x9d\xc9\xe8LFg2:\x93\xd1\x99\x8c\xcedt&\xa33\x9cP\x14:\x03v\xfbj\xf2j\xaf\xd7\x05\x12JV~\xaeYb\x1b\xc3l\xfb\xd8\xd4\xf56\xd29By\x87\x88\x0cq\xb8\xb9)1#Cx\x03\xbe/\xda\x0e\x0fY\xa6\xe8\x0f\xa6\x0f\x06\xab\xcc\xcd\xfb\x91\x08\xa6E\xb5\xec\x94\xd2\x1d\xa2!?\x9b\x02\xcb\xcf\xe1\x11:\xc9\x1c\x1d*G\x87\x1a\xe1\xbf\"\x11L\xe2\xc4\"w\xf7\xaf\x1b\x1d*\x08V(\xa0A<V\xf1Q\xf2\xe50\xa1\n\xf8\x16\xb7\xf4Y-\x9d\x0e:\xe3\xe7T\xd3S\xad\xcb\xd3\x86\x82\xc5\xec\xb8\x0b)\x8c\xcf\x0d\xcd\x84\xc0 z9C$$2\x1e\x1b\x941\x91i\xf0qt\xf0k\x8b\xff\x8dL\xc7\xc2\x16\x82\xbe8\na\x0d\xd7\xb1\x11P\xfdr\xf8\x17\xf6Q\x80g$\xe0\xc4\x82\x86\xdf\x1c\x03\x82\xa0V\x8b\x95\x84\xe8\x10+n\x8c\x88\x95tH\x11+\xc9\xf0\"V\x9c\xa8\x11+\xb6'K$v\xc4J*\x04\x89\x15?\x8e\xc4\xca$4\x89\x95\xc9\x98\x92}\xee\xa8u\x86\x13Ybe2\xbed\xa5\xc6x\x9d\x03ebe\x0e\xd6d%x:\x02\xb2\"N\xacL\xc1\x9d\xac\x84\x9cX\x14+3\x11)A$\x02\x97\xb2\xd6\x8c\xc6\xaaX\x99\x81X\xb12\x03\xb7r\x1dtGW\x93!Z\xac\xa4\xc5\xb5XI\x86n\xb1\x12\xc6\xb8XI\x86t\xb1\xe2\xc2\xbbX\x99\x83z\xd9y\x85\x05 c\xc5\xf2\xf8tq\xcc\xa9\xa8\x98\x95\x98\x0b)ce\"^\xc6\x8a\x055c% R8\x114Vb$\x8e\x89h\x9a\x9d\x99\n\x84M\xc3\xd4X \xf5f\x1e\xbef\x90\xa3x\x9b\x05ec%\x01\xd6\xc6\xca<\xc4\xcd G%\x1a\xab\xf00\x13}3[2\xd08V\xe6`r\xacx\xc1*V\x1c\xf8\x1c+A\x94\x8e\x15\x8b\xf2\x9d\x96x\xc4\x8e\x15\x17\x1dC\xdf9\x13\xc3c%~rBx\x1e+\xa1Y\x08b{\xac\x8c@\xf8X1\x90\x14Z\\h\x1f+\xf31?V\xa6#\x7f\xacxVv\"\n\xc8\x8a\x17\x0bd\xc5\x8d\x08\xf6\xbf;qAV<\x93\x1b\x8b\x11\xb2\x12B\nY\xd1\xf0BVf\xa0\x86\xacD`\x87\xac\xc4#\x88\xac\x04qDV\\\x93\xe8\xd8\xd6\xee\xefC\xf8\"+\xf3PFV<]6\xfe>\x0bw4\xa8i8$+s\xd0H\xb3\x05\x03\x9dde\x16FivY\xc5,YI\x89\\\xb2\xe2\xc2/Y1PLV\xd2`\x99\xac$C4YI\x8bk\xb2\x12\x87n\xb2\x12\xc48Y\x89D:\x95\x8f\xbdx'+\x96\xd3\x05Vt\x8c\x95X\x8c\xcc\x8f\x80rZq8(\xff8\x8c\x86\xb2b\x19PJd\x94\x95Y\xf8\xa8A\xcd\xc0KYI\x87\x9aJ\xcd$\xc1NY\x99\xbbG\x828*'\x17@SY\x91o&\xdfKl\xa6\xf7\x9bB\x8b{\xc2)\x7f\xb39\xc4Yz%\\t\xda\xaen\xf0\x06d\xb0C04%\x8b\x96-\x19\"\x07\x01\xa4|\x87\x02\xf6\x19>\x89G\\s\x9e\xc3\x9c\xe7P\xd4p\xaf!kR\x02\x1bk\x85\xc5\x15\x15\xec>\\\xbf\x19\xf0G\xce_Z\xb8\xa3s\xad\nG\xeb\xbaa\x1fR\xbe(l\x1c\x04K\"l\x98j\x9d\xe4a*c\x13_~\xac\x0fC\xa7\xac\\\xa9\xc1G\xea\xd4\x06\xdf\xa2\xa6\x9fY\xd7\xfd\xa9\x8c\x91n.\xfd\xf6\xb4\xb8\xd7:\xa1\xd9 ~d\xac\x1e\xa77\xd1\x8f\xec4\x1e4mi5\x8f1I\xd4\x80O\x13\x07|r\x0f\x98\x1ce\x91@\x96]\x80T\xb3\xcb;,\xf8\xe5\xd5\xb7o8G\xf6\xce\x90\x12{\x95\xc1\xef\xe3\xa7J\xcb\xd8\xc4\xcdB\x1e\x19i\xf6\xda\xc4xu\xa9\x1e\xbe4\xd72&`\x1b\x93\xa4[\xd1\x162\xfe\xab?\x9d\x95\x8c\xd5Nf\xae\xa5\x8cBj\x08\xf3\xaa\xcd\xf5$k\x19\x85\x86\xd3r&\x85\xed\x8c\xdaRmX\xcf\xa4\xb2\x9f\xf1Y\xd0X2\xac\x81\xf3\x06\x9e\x162\x96S\x9c\x178V\xa1%\x82\xc8\xca\xe1cY\xb1\x04\x91\xe5\xcd\xfbR2\x8a\xcf\xb2\xe0(\x95,8\xb2\x92\x05\xc7\xbf\xaa\xe0\xc8\x97\xf4\xbfT \xca'\x98xE)\x99\xca\x85\x95\x8c\x94/6Z4\x9a+\x13\xe9\xb2P\x14/\xe9r(\x82\xf9\xa6e9\x14A\x9c\xd9\x18\x1do\x0eE\xd0+\xb5s(\x82\x89&]\x16\x86\x91\xd0p+\xad\xc9V2c\xad\xb0\x99V2\x03\xad\x1c\x8a \x87\"\x18a*\x95C\x11\xf0\x89\x96)\xce1{\x8a\xf1\xce\xcf\xa1\x08\xa4\x92C\x11\x88\x92C\x11\xf4e\x86QQ\x849Q\xbc!Q\xd0\x84(\x87\"\x98c\xfc\x93C\x11\xe4P\x049\x14\x01\x17\x7f\x13\x18\xdc\xcc2\xb5\xc9\xa1\x08\xc6\x86\"P\xe4p\x1dZ\xb0\x85&0\x9cX\x81C\x87\x14\xa3\x93\x88\xed\xe5D~\x7f\xa5\xb8\x05\xf1\x9a\xc8\x1c\x80 \x07 \xc8\x01\x08D\x17,\xbca:p\x9a\x0e6u\x81\xa6V\xc8T\x1f\x84\x07\xf3\x98\n\xb7\x88>L\x80[f\xdb\xa0<\xb2\xf1\x89\xc3\xb8\xc3\x07A\xeb\xdfN\x8bH\x10\xb0z\x01\x1f\xffc\xc5kf\x02\xb3Y3+\x01+\x18H\xdb\xcdh\x96\xcdJ\xc851\x1d\xfbf\xc5j\x1d\x03\xb3Y\xb9A\xcea%\x03\xd3\xd9\xbaA\xc7c-\x03\x93\x99\xbdA\xc6\x96B\xd9\xf8(\x0d\xe3g\xc5g=\x03.\x0b\x1a\x0f\xc6\xcb\xca\xc4#\xde\xe5\xa0#9\xe8H\x0e:\x12D\x92\xad\xd4r\xd0\x91\xa9\xd8\xb3 \x12\x81@[kF\xa3\xd2\xac\xcc\xc0\xa6Y\x99\x81P\xbb\x0e\xba\xa3\xab\xc9\xb0kV\xd2\"\xd8\xac$\xc3\xb1Y \xa3\xd9\xac$\xc3\xb4Y\xc9AG\x1c\x988+\x13\x91qVr\xd0\x91\xd9H\xbaA.\x07\x1d\xc9AGr\xd0\x910\x8a\xcf\xca\x08,\x9f\x95\x1ct\xc4,9\xe8H\xd8>\x80\x95\x08+\x01V\xe2m\x05X Z\x0c\xb0\x92\x83\x8e\xe4\xa0#\xac\xa4\xb4Q`%\x07\x1d\xc9AG\x82hx\x0e:\x92\x83\x8e\x84\xf6H\xd0b\x82\x93\x1b\x1dt\x04\x9cp\x98\xf4\x91\xef\xb9\xa6\xe2\x81\xff^t{\x8e\xc0H\xc1I4\x9cM\xb0\x17\x99\x8c\xc4Y\xf6\x16\xe5\xbe\x16\x94\xc4\xde\xe3\xd6j\xe9a&\x9f\xc8\xbe\xa5C\xc9\xbe\xa5\xacd\xdf\xd2\xbfu\xdf\xd2\xd9^\xa5\x91\xfe\xa4\x9f\x8f\xbb\x06m\x94@K\xa3\x8d\x1cN\x9c\xc62g\xb9\x9e\x01#&\x03\x10\xb3ki\x1c8\xc8\x00 c\x8e\xb2kiv-\x1d\x07\xdcY_\xf6\xc9\xe0\xb9\xb4\xc0\\2H.\x0c\xc6%\x83\xe1\xb2kiv-\x1d\x01\x88e\xd7R\x0b\xc45\x07\xdc\x8a\xf1\xb6\xcc\xae\xa5R\xc9\xae\xa5\xa2d\xd7\xd2\xbe\xcc\x80\x8e\"@\xa3x\xb8(\x08\x14e\xd7\xd29\x10Ov-\xcd\xae\xa5\xd9\xb5\x14\x92\xc1*\xb3\x00\x95\xecZ:\xd6\xb5tj\x96k\xbb\xe27\xa4b\x8cWnZ\x88H\n\xceE\x8c\x86s^\xe4\xbcA\xc9\x99C\xe8e=g\xd6sf=g\xd6sB\xd6sf=g\xd6sf=g\xd6sf='-Y\xcf\x99\xf5\x9cY\xcf\x99\xf5\x9cY\xcf\x99\xf5\x9cY\xcf\x99\xf5\x9cJ\x99\xbe\xba\xe9\xf5\x9co\"\xa2\xe6\xcdPu\xce\x8cXe\xa7\xe3Tx\xd6\x87C\xd1\x1d\xb8\xd2\xf3\x07\x1au\xef\xba\xc1\xdb\xe2>Z\xbby\x83\x1f\x96G\xa9\n\xb8^Y\xc6\x0bK\xb7e\x95\x9b'\x03\x16A\x00Q\xb7\x07\xd6\x02\xd34t\xcc\x86[\xdcv\x9f\x98\x8a\xa9\xed\x9a\xd3\x9a,\xc2\x0d~\x80mS\x1f\xe8w\xd7\x88\xb2\xc6\x8d\xa8\xd4\x1f\x04t<\xe2jsF~_\xfc/\xfc@\xfe_\xec\x0d\xfd'\xda\xf49mr\xb1x\xf6L\x9d\xbf\xaa\xc2\xf4\xf1A\xe6\xefM\xff\xaf\xcbj\x13=\x81\xdc\xf4\xb5\xd8\x04\xe6O\xd9<\\\xd9n\xee\xbd\xa2\x05\xa9S\xbc2W\\<r\x0c\xb1a\xb3\xdb\x03\x07Y]\xf2\xf9&`\ng\xd1Q\xd3\x17\x81\x95-F\xdd\xa91c\x0c\xd9F\xc3\x8a1&\xb9\x82\xafC\"\x83\xabh\xb2W%\x95x8\xe6\x83\xf3\xbe\xb5\xc3>\xd5\xc1\x1f\xf9H\x85\xf7\x07!\xc7GO\xf82W\x16\x9e\xb8{B\x85wuG\xd6\x99~w\xf5\xed\x1b\x85\xd6-n\nr\xe3\xeaJi\xae|\xe5\x9b\x01\xf6\xa8\xda\xb4{t\x13\xa5`\xb8\xfa\xf6M\xbf\x1a\\f`!\xfd\xe8\xab\x9bwk\x83;\xdc\x1c\x8a\n\x03\xae\xd65\xb9PZ\xaeH\xa4Z\x07Ys\xbc\xad\x15Ag\xbdGU\x85K\xf69Z\xdf\xe0\xae\xe5\x94\xc9\xe8\x1d\xdbXCM\xd4\x03!%\x8d\xec5\x14\xd2\xe0q%\xbb\xc5\xd8\x96\x1fW\xa7\x83\xbcS\x9e\xc3\xc7O\xaf?].?\xbf\xbbzw\xf5\xe9\xea\xf5\xf7W\xff\xdf\xe5\xdb\xe5\xe7w\x1f\xaf/\xdf\\}wu\xf9\xd6\xf2-\xf9\xd2\xf2\xe7O\x1f\xfe\xf7\xfb\xeb\xcbw\x96_\x94?sY\xfbUd\xc3\xd4\xfd\x027G\xd4t\x0f\xaeY\x91>a\x19\x87cY\xc6(P\xca\xc2\xc2`:*\xa5aN\x9c\xd5\xd5\x02L\x08\x8eHW\xf1\xb3H\xb5\xda\x1fm#\x96\xff\xfaX\x83Qvd\xd4\xa04\x82\xf6\xe8\x1c,>\xa0}P\xfa\xed\x0c\xe6.\x11R\xc0\x10x\x97^\xc2\xfd1\xd2\xbb\xb7\xb0L\x8d%.\x9c;*\x9cMj\x10\xc5\xc3\x9c=zZ\x97\xb3\xd3h\xa9B\xab?I\xbc\xd0hX\x85\x8d\xc07\xa6\xd4\x01t\xddJ\xf4\xb0<\xe2\xa6\xa8C\xf2\x82\xc31\xcc\xbd])m`\xb49\xf8uj;\xea$\x07+\x8a\xabX|\x14\xc5\xad\xc0\x81\x04yT\x8c\xaf?'\xb7\xd3\x96\xa3F\xf0\xee\xfd\xa7\xcbWjKe\xbd+\xd6de\xe8\xe3\xbfW\xf0S\xbd\x84D\xad\xad\x0f\xca\xcb\x9c\xc7~e;\xd1.X+\xf2\x98\xe4gI{\xbe=\x95|\xcb\x92S\x88\xf8\xb1\xe3'\x88m \x1e\xac\x96Sk\xf1\x115\xf4r\xa9\xfa\x1b\x94\x0d\x87\xf9\xf4\xd1\xc9\xa2cXax \xc2\xd3M\xe9\x04\x85\x8bp\xdb\xa1UY\xb4\x02\xf1D2WX\xe1\xee\x0e\xe3\n\xba\xbb\x9au\xa9]\xf8\x04N\xfd\x06x,yS\xd9()\x19\xb4\xc1\x9cM\x1e\xe6`\xca3;=\x8b\x11\x9bL\xd8\xc5\x80u&\x97\x8c\xf1\x8e\xb8\x9e]\xcc\xd6\xc9h}\xa1\xd9\x95I\x9d\xc3\\\xe72\xd6\x10S\x8da\xa8\xf6\xed\"\x1f+E@\x8f\xd9\xdb\xd2\x1e\xe0\xe4\xb8\xe8\xe98\xc3Wb_n\x06N\x11}\x96\xc7\x9d\x07i\xcf\x0f\xef\x95\xc5\x1c\xb6\x90\x9f\xa1&\xfd\xfc\x0c\x1d\xfd\x0c\xb5\xb1\x96\xbf\xa5\x07(\xaf\x97\xdf\x9f\xf9\xfd\x191\xa2\xfc\xfe\xcc\xef\xcf\xa1\xcc\x11\x91 \x81\x98\x04\x11\xa2\x92\xed\x9b_\xe4\xfd\xa9<\x04\xa38\x83\xfd\xa5g\x13\xa2\xd4\xc0:\xe2\x8fl\xfb\x0e\xe8\xa8\xc1\xe4\xa5LG}0\x1d\x87\xe8v\x8d\x1a$\xae\xf5\x08a\xed\x80\xee\x97\xccF\x16o\x96]q\xc0d\x1e\x97\xab\xb2^\xdf$\x98Je\xe3\x1d\xd0}q8\x1d@4\x07\xa492\xcf@\x9b\x83\xb3\xa2\x82\nUu\x8b\xd7u\xb5i\x9f\x9d\xf7W<\xae\xb6u\xb3\x967\x10\xabAW\x8a\xdbl\x93w\xf0\x81\xdc\xbc\xc2\x92\xb9\xc1\xdb\x92<\xa45{\xdd\x125;\xdcv\x80\x0e\xe4\x00\xd3\xd3\\\x08\x0bsz\xae)\xa7aF\x7f\x0dFm]\xa1U\xf9\x00\x1d\xba\xc1\xd44\x8c\xd9\xa3J\x04;\x11~\x87\xf5\xe9Tmp\x03\x15\xcdn\x01d\xb6i\xb6\x18\xed1\xc9SA,\xe05\xb4hK\x1a\xad\x8b5\x05\xd4\xbez\xfe\xf5=%\xe9\x98%\xcb\x86c+\xaeHK-\xa6#\x93\xf6]?=\xbe\xa7;\x0b\xdcB\xaf\x96\xa1\xea\xa4,1\xe2\xc2 \x1ce\x9ah\xed\x93\xf0\xdb\x92\xccV\xbde\xe6\xe0\xea\x0dB[\xb4\xbd\x80\x98\x1b\x05'\xf8W\xca\x05\xc6*\xf3\xa4\x1a\xa8\xe32$\x19\x01\xa3t\x87\xda\xc1BP\xeb]\x94\xd0\x91S\x88\xe5\x14b\x90S\x88\xb9bR\xb9X[\xbc)\x83A\xc2\x15\x97\xca\xc2X\xfb?\xcd\x89N\xd5\x8b\x02\xce\xf8T\x91\x9eo\xfc\xb19\x85\xcb\x8c}\xda\xa8]\xb2\xea\x03\xecc\x81i\x82t\xe7L\xee\xe3\x15\xa3\xfd\x8f\x16H\xeb\x9b\x06\xc1\xa4>\xe9|\xd4 \xa5\x9f\x1a\x84\xd2\xf9t\xd3\xfd\xd5 \xa1\xcf\x1a\x04\xfd\xd6`\xaa\xef\x1a\xcc\xf1_\xb3\xcdX8\x85\xcfd?6\x0b\xad`\xfa\x9e9\xfel\x16r\xde\xd4=i\xfd\xda`\xbeo\x1b\xa4\xf7o\x83y>n0\xcf\xcf\xcd~D\xad\x9dL\xe6\xfd\x06\xc9=\xe0 \xa5\x17\x1cDy\xc2AJo8\x08\xa4\xde\x99\xe3\x15g;\xe3\x8e\xb4;]\x8c\xaf\x1c\xcc\xf6\x97\xb3\x10\xb4'\xdc\x99\xe8E\x07\xeed;\xd34e\x10u\xffO\xf4\xac\xb3\xb1=O\x8a\x1d\x7f?\xe6y\xd9i\xc4|\xc9u\x12x\xdbAj\x8f;\xb0x\xdd\xc1|\xcf;\x8dZgM\xa93\xc7\x17\x0fB.j\xe0O\xa6\x13\xf4\xcb\x03gf\x89x\xff<7\x0d\xc3\xb3a\x96\xaf\x1e\x8c\x98\x8c\x90\xcf\x1e\x04\xc7\x1d\xf4\xdd\x83q\xfe{\xe0\xc8.\xe2K\x993\xdf\x97\x0ff\xf9\xf3\x81o\x0d'\xfa\xf5A\xc8\xb7\x0f\x82irBIr\x9c\x93\x19\xeb\xeb\x07\x11\xfe~`O\x8e3\xc3\xef\x0f\xe2|\xff`\x94\xff\x1f\xc4\xf8\x00\x82;\xbf\x8c\xb5y\xc7\xb7!\x9f@\x98\xed\x17\x08\xbe\x8ej\x7fM\xea#\x083\xfd\x045R\xf6\x847I=\x07!\xb1\xf7 \x04R\xdbX\x13\xdb\xa4\xf1$\x84\x94\xde\x84\x90\xdc\xa3\x10\xa2\xbd\n!\xc6\xb3\x10\xe2\xbd\x0b!\xd2\xc3\x10\\\x89l\xec\xad\xc7\xfa\xa3\x85\x93\xd8Dz\x1cB\x9c\xd7!\xd8\x86\x91\xd2\xfb\x10\xe6z j\xb4\xac\x89k\xd2\xf9$BR\xbfD\x98\xbd\x1f\x82\xfe\x89\x10\xe1\xa3\x08\xc6\xa5c\xd1L\xf7\xbf\xdb!tPat)X\x9a\x84\xa3\xcb\x8an\xce'\x140\x9d\xfe.\x11\xb4\x81\xe9\xf0\xb7\x8d 6\xb8k\n|\x9b1\xc1\x8c fL01&\xe8C\xe5F\xe0\x8262\x93\xb0\xc1yq\x1ds8\xc7yPY2\x98,\x87s\x8c\x83\xc3\x98\x1a\xdf\x98\xa3\x1c\xceq\x0c\xec5\x13\xf2J\x0cw\xcd\x80\xbaf\xc0\\\x16\x86\x91\x10\xd0J\x0bf%\x03\xb2\xc2 V2\x00+\x87s\xcc\xe1\x1cG\x00M9\x9c\xa3\x05F\x9a\x03!\xc5D8\xcc\xe1\x1c\xa5\x92\xc39\x8a\x92\xc39\xf6e\x06\xac\x13\x01\xe9\xc4\xc39A('\x87s\x9c\x03\xd3\xe4p\x8e9\x9cc\x0e\xe7\xc8\xc5\xdf\x04\x80\xca,0%\x87s\x1c\x1b\xceQ\x0fh\x13\xb6\xdf\x8f\x8d\x94\xa0b0Wo\xed\xa4\xd5\xe6y\xe5\x8c\x8f\xc8?\xc4\x01\x12\x19\x1f\xc9\xf8\xc8\x7f\x1b|df\x14X\x17\xa5)( \xf3y\x1d\x8d\x8e\x1c%\xe7h\xd0\xb7\xf9\xd1\xf4\xa3\x1d\xbcf\x85\x9ct\xa87\xa7\x12O\n\x08\x11\xe5j\x0d\x13\x0f\xb9_\x85\x94\xd2\xf5\x1af\xb9_\xc3l\x17l\x8d\x98\xd0(wc\xdd\xb0\xe1\x11\\\xb1\x7f\xeb8:\xeav\x9drd\xb8\x93\xb73d\xb2\xe7\xac\x8c>%\x035\xe3\x1a\x96\x1c\xadG\x84\x98\xb6\xb6ko\x1b&\xb8\x17\xce\x88\xfe\x04\xd6\x08PCkf\xdc$k\xd4$\xeb\xe0Xq{)\xfa\xa2B\x81o\xbc\xfc\xe71\xd1\xa1\xc0\x13!\n<\xa3e\xc5\x11)\n\xa2;\x99\"b\x14\x04\xb9\\\xda\xc8Q\xe0\x89\x1e\x05\x10\x13A\n\x82=\x9e\x11O\xca\xdcf,\xba\x14h1\xa5`l\\)\xb9\xff\x16w\xdc\xe9\x01\xa6\xc0\xb7]\xf4@S02\xd8\x14\xb8\x03N\x817\xe8\x14\xb8\x02O\xc1\xf8\xe0S\xe0\x0c@\x05)\x83P\x81\x8f\xe3\xb8\xf9\x8d\x83\xadB\xe8\x14\x87\x0e\xdd\x9c\xe0T\x16b<^\x875@\x158\x83T\x81?P\x15\xa4\x1f\xa4\xb2\xcb\xdd\x83\xb5P2csY>\xf2\x05\xaf\x02\xb0\x07\xb0\x82\xd4A\xac\xc0\x7f\xb7\xf9o7\x7f@+\x08\xad\x08\x84\xdc\xf5\\\xc1\xad A\x80+H\x14\xe4\n\"\x03]\xd9\xbe\xb3\x07\xbb\x02g\xc0+x\x94\xa7\xc3\xdc\x00\xcc\x1a9\xcb\xed47$\xb3Fn\xf5`\x84e\x06=43x\x87=3D\xb3DI\x04k\x96\xfe\xa4Fl\x96~\x98\x19\xb6YnUfN\xf6\xd8\xcd\x90\xf5y\xf1\x07$\xeb\xf3\xb2>\xef\xefQ\x9f\x17\xa5\x9a\x88RJ\x18\xea\x08\xf8p\xfdF\xb4\xcc\xf5\x11\xf0-n\xa9\xe5\x8d)\x1d\x9dSs\xb0j]\x9e6\x94\x91\xb2\x83.nO6+\x9c\x18\xb9`\x05a/g\x88\xd7\x7f\x8cW\x13\x0e\xe4\xa6\xc5\xae\x1b\x11\x16\xda\xaeI\xb0\x8aD\x9ad\xd7O\xb0\x196\x9b\x15\xa7\xbc\x1f\xdd\xc6hU\x8aK\x99\xe2S0x\xc3PO\x12;\xfdj\x95\x08\xb1s\xb4j\xc5\xaf\\ \xa9W\xbc\n\x96\xf8\xee\xa6R\xb2\x84$B\x98\xa7h\xb1P\xe3j\x10\xa7\xaa%V\xd9\xe2{\x13\xa4S\xb5\x04\x94-#\xd5-Jm\x8b\xbee\xae\xc6\xc5\xbb\x7flZ\x97\xf1z\x17\xaf\xe6%\xa4{\xf1h_&\xe9_|\x1a\x98\xc4:\x98\xc9z_\x8f&&x\xdc\xc3g3\xb1>&\xac\x91\xf1\xe9d\x82Z\x99G\x19\xf0t\xddL\xa4v&\xac\x9fqkh\x1eAG\x13\xb8.C\x17fXS\x13\\%\x08ik\xfc\xfa\x9a4\x1a\x9bt:\x9bx\xad\xcd\x18\xbd\x8dOs\xe3\x9da\xcfkP\xdbM\xe3\x83\x97[\x88\xfc\x97\xbaD \x03\x99\xb3\xe2\xf2\xc0\xd6\xba!\x04\x9a\xb6\xab\x1b\xbc\x91\xa5\xf2\xfel\xc8\xc7\xe1\x88vEE\xd5G\x86\xb6a\xf8\xa9\x7f\xdf\x0c\x9f\xc4k\x16*|\xdf-o\xf0\xc3\xc87\xbc\xdf\xdf\xe3\xbf\xf4\xf3 Z\x11/2\xf2\x9f\xdc\xa1\x08\xb5\\P\xb9F;\xfc\x81\x81\xad\x0b\xf6\xbbF\xe4'\xf2\x06\xa2\xd5)(~D;\xf2\xcel;\xc0\xd4\x8d\x87\xea)\x16p\xd5IV{\xc7\xee\x01\x8a\xad\xbe)\xa9>\n5\x18\xaa\x1a\x0eu\x83\x85\xdf\x95\xbcy\xba\xbaC\xb1\xde\xa2a\xc5\x86\xc1 (y:\x1b\xf4?\x98Z\x87l\x01\xe1\x02&y.\xe9\xfd\x97'\x8ar\xd2%%\xa2\x9fd\xf2\xb4lqG\x1e\xaa\xad\xf0_k\xa9\x11\x01\xd3\xbcQ5\xde]!m\x1b\xf7\x1a\xb2&\xa5Wu\xadXE\x16\x15\xec>\\\xbf\x19\x1e\xda\xdc\\\xb1\x85;:\xd7\xaa\x88\xbc\xae\x1b\xf6!5\xa5\x14\xf8\xba\xb0p\xdc\xa3\x96 \xd9\xf20\x95\xb1\x89/?\xd6\x87\xa1S\xd6\xe8\x10\x0d>b\xca*\xbeEM?\xb3\xaeh%\xca\x18\xe9\xe6\xd2\x0dh\x85M\xa3C\xff\xc7\xf6'\xb3\xd5P\x14\x00\xa3\x0edV\xf5eU_V\xf5\xc5\xaa\xfa\xe2\x0c\x90\x0c]\x9fp\xce6U~n\x15\xdc\xc7\xe1!k\xec{\xf9\xd1\x19\xfb\xd4\xb4<0\xed\xcfJ\xe319\xea ig\xeaj\xc4\x99b\xab\xca<tWPop.\x940/m\xaa\x06!\x15{\x86E\x1a>\x07\xde\xdds \xff\x0bu\x03J\x8f\x06\xe6\x1d\x9c\x99W\xc0\x1d\xbfX\xff\xf4z\xa4\xd6+x\xad\xbf\x85\xc8\x8d\xf1\x1f\xa7\x96*\x10\x1a\x8aW\xed1\xd4GL\xd56\xa6ZE\x9bd\x07A\xb4\xbe\xa9\xea\xbb\x12ov\x9c`O\x08\xda\x0e\x1fm\x0f0\xde\x80\xfa\x9e\x91\x17\xcf\xd1\xd4\xba>\x1cK\xdc\xe9\xedx\xb6\"WU\xc9\x9b1.\xc0\xbet\x9dXyw\xa4\x96\xd0\xd4\x0c\x8e\xd0$\xdb\x9b\x9c\xa7\xe9\xb3o\xf2\x19\x1a=]\x7f\xc7\xfb\xeaQ\xd9\x0dK\xc5Te4o,\xfb\xcf\xe8ur\xa4=\xb0\xea\xc7\x18i\xb2\x89\xfcK\xfa\xd7Ow7\xfc\xf9\xcd\xf7\xef?Z\x1b\xf8\xee\xfb\xcf\x1f\x7f\x7f\xf5\xeew\xae\x9f\xde\xbc\xff\xe1\xfa\xfb\xcbO\x97\xfd\xef\xa3X xe[\x1b+\xe4\x93\x1b\xcd\x07Ia\x83;\xb7\xf1\xc4s\x10\x03\xe4\xff%\xc6\xe3a\x96\x10\xb3V\x0e\x86 6\xa6\xc9\xc74\x92[\x82\x83cJ\xd4&\xb0J\x8b\xd2\xc7`\x94R\x0b.\x0e \xef\x8f\xb8\x1at\xd3\xa8\x91g\xa0\xc1hC_\x99-a\xb4\xa8\xda@\x83\xd7\xb8\xb8\xc5B\x81mm\x9e\xad\xa2\xde\x81\x15&\xed\x945a\x15\x84\xd2\x1aU\xe4\xf1X\xd6\xd5\x0e7}^n\xd1V\xdd\x88\xa6\xa4\x16|\x8d\x8a\xdda]'\x11\xa1\x86\x8e\xfdt\xdc5h#O1\xea:\xf2\xcee\x11*Z\xd8\x96\xa7vO\x96\xb2\xa8\x9eoK*\xb0\x05[\x16\xbb\xd1\xda\xfc0\xf7=iT=\xb8\xc9\xd7\xcd\x06\x13\x06d\xb0\xb1\xbb=\xe6\x81-\xb0|\xc0\xe8\xf7\x98N\xda\xa9\xe2\xff\x18\xcb\xd1\xde\x7fx{\xf9a\xf9\xee\xfd\xbbK'#c\x9f|~G\xff\xdf\xfa\x9b\xfeK\xcfb\x02\xd4\xdd\x9c\xc5\xd5\xb1W\xf0\x17\xdc\xd4\xcf\xd9\x9b\x9c\x88\xa8b:\xc4\xdc\xa9+\xa5u\xfdU\x0f\xc0p\xb4g\x83\xcb\xe2\x96\xceaQ\xd1\xb5\xa1d\xce9$D^\"\x9b\x82\x86\xb1\xe8\xb5\x86\xf4\x03P\x94\xc5=0\xfd\x00w\xe4\xc9\xdeJ\x99\xc5\x94~\x18\xbd@\x8d\xdc\x05|\x8f\xd6\x1d}\x07H-\xd9\x88s\xdavd\xa37\xcdWY\x86\xe3\xc6\x8bzW\x1f\xebf\xaa\xfd\xbd\xa1\xbd\xa1Q8\xdc\xd8\x03\x1bn}\xc7\x1d\x85Y<\x17\xca\x18l!\xc0\x84\xbc\xf0\x85\xf1\xa7\xf8\xee\x8a\xf9\x1a\xa6(\x88\x10H\x18\xc6\xbe>\xa6\x14\xe5\x943 \xe4:+\xb8\xdf\x9e\xd3\xfb\x95mW\x1e\xb7\x9f\xce\x9d\xd8[-\x03y\xe4\x86\xa9\xbe\x97\x8f\x93*\xfa\xba\x06\xdd\xf6>\xa3\xb7\xb2d\x1c\xeah}DD\xcc\x15\xd4x]qp\x8a\x16\xd0\xae\xc1x\x03\xa7#\x11\"O\x0d\x83:%\xe6\xcb r\xa6\xbcl\xf1O'\\\xad\x8d\x08u\x0e\x034M9bS\x15\nv/(CQm\x8a5\x91<hGJ\xf2_]\xff\x95\xb8\n\x8e\xb8!m\xd0\x10\x05\x8e\xa9\xfbB\xf9;\xe6\xfa\xc1z\x0b_jM\xc8\xf7AE\x95\x1e\xf4.\xe4M\xb2\x93h\xe7\x80\\\xf8\xed%\xabcq\xc4eQa\x11W\x80\xb0\x89\xe75\x19\x14[m\xc1D\x1ez\xfb>\x11\xa6\x88\x13d~j-\xd9\xd9\xbd\xc5!\xd5\xb61\x1b@\xb1nT$\xe1\xa1\xf0\xa8\xec\x86\xe9\x85}\xa4\xca\xd4Z(S\xc9EM\xd6\xb3\xe7b\xf4\xc8\xe8\x1f\xf3{\\\xfa\xd0)\xea\x1b|,B\xde7x\x92u\xbf\xb8yQ2>\xa4\xf1 \x1b\xff\xf1\x1d\xa4x\xbe\xc3+X3\xff#\x85\x8e\xf6\xb2\xb6\xcd\xf9e\xd3\xd4\xcd\x07\xb2B\xc7.z\xce\x93\x1cR\xf9d\xe8gT\xecV\xa6\xa5\x8e\x9b@B\x8f\x06\x8f\x93\xc2\xe4u\xa8(\x05\xc7Y\xa3SK\xf7\xe3\x16\x15\xe5\x89\x8b\xb9\xf6}!O\x8a4\xb5T\x1d\xc66\x04\xae\xd6\xe8\xd8\x9e\xca\xfe\x8c\x1b\\\x06\xf5W,\xeb\x94\xc5/N0\x10S \xe5]\\\xc0\xbf\xefq%-\xaa\xf9%\xe1\xb0\xab\xba\x190\xfaU\xdd\xed\xd9fab\xc5\xe0\xa5X\x0fjJ\x8e\x98\x8a\x0eP,H\xf4\xdcu:%\xb8/?\xc9\x95?\xe7'y~\x92\xe7'\xb9\xd9h~\x92\xe7'y~\x92\xe7'\xb9\xf6\xa7\xf8\xee\x8e\x16\x8d\xf3\x93<\xe1\x93<\xeee%L\xa9\xc8\xde1@\xae\xa9\x8f \x83PV\x0f\xd8\xb8\xb1!\x92[\xde\x81\xba\xed\x1d](z\xd9\xf3n2R\xba\xed\x9d\xf3\x91\xfe\x9elkY\xf4wB\xf8\xde\x0b\xc6uu\xd9\xae\xad\x98+\xcb>A\xb3\xaf\xaa_\xe0\x9a\xf2^Q\x8fr=\xf1c@W\xd2\xf9B\xe0-2Q~X\x0d\xdb\x96\xb8\xa6}2l;R\xabmD\xe74V3Z\xe1b%\xca\xe1z\x93\xec<\x8e\xa3\xb4\xc5ut\xf2C\x9b~\x83:\x14I]1\x19Uh\xf7v\x84\x84\x9a\x16\x87\xb1\xed[&K\xb4\xf0\x9c\x17i%\x15\xc4\x9f\xc6\xb3.\xd6L\x03R\xe15n[\x1e\x1a_8\xdeQ\x96B-r\xc5\x02\xb3&\x073\xf6\xf6\\~R\x89\xbf\x88\xf7\xcbq\x10\xb5\xdf\xa0\xb2dfU\xdc\x10\x89\x1a0\x90SJj\xf7\xea\x1c\x9e\xdaA\xe9MA\x85\x82\x86\xda\x84\x15\xc2@I\xc4J\xa4\xf69\xa27Fgh>\x00$:\xe3\xe2~\xd7R\xa4\xb0\x88].\xae\xad\xae8\xe0\xfa\xd4\xe9\xab\x1c%\xe1Y\x8d\x06\xd9 \x96\xed$ydZ\xc99\x92-\x00y\x80\xf0\xcb\x8b\xf4\xa2\x85\xfa\xa4z\x02X\xbb\x02^\xe7\x00\xaf}%\xf8$:\x08Y\xad\xcf\xb5\xb5\x84\x90\xbd%\xa4\xeb^\xb4\xed%\x04E\xeft6\x98`\xb7\xc3\x84\xd9\xb6\x98\x1a1f\x99\xa9\xd9c\xc2t\x9bL\x8d\x8a\xd3B\x13\x92Xi\xea\xad\xd5\x86\xa5&$\xb3\xd6\x04\xaf\xc5&\x98V\x9b\xac\xd0\xd3\xda\xa1\xc31\xf2\xb1\x14\xb6\x176v\x1d\xe3\x1f}CF\xbc\xbf0O\xd1\x08\x9a\x1c\xc6\xbd\xed?1\x9e8\x88\xac\x15\xe0{\xbc>u\xcc\xdc\x0cm(\xd0\xc5\\vN\x0d\xbb\x00\xbe\xfc\xcdsUl%\x85\xbc[J\xdc\xb4\x8a\x92\x91F\x1f\xec}\xcby\xbf\xcbb\x8b\xd7\x0f\xeb\x12\xf7u\xc8j\xdd\xe1\xb2\x14\x01\xc3\xcda\x0d*)k;\xafy\xf6\x0d1\x9a>\xbc5.\xe8\xfb\x98jY\x1b\xa6\x95\xaf\x89\x885\xcc6\xb9\xfb\xe8\n\xc8\xad\xb1\x1dw&d\x84g\x96\xdb\xfa\xda\x0cHIN\\\xbd\xa5\x06w\xbd\x94\xd4\xc7\xa8t\xdde\xcc\x0c\x98\xfd\xdb\x92\xe4,\xfa\x92\xebe\xa6\xcd\x92{0:\x14\xferF\xc6p\xe8\xe2Q\x97\xe4\xd8\xd8\x80j\x97\xac>\xcf\xf6\xb1\xc0\xb4\x1b\xb3\xb3\xe6N\x83\xd0]\x14vrL\x98G\x0d\xbc\xb9\xd4@rp\x9e\x9fO\x0dR\xe6T\x03_^5\x80Y\xb9\xd5 a~5R\xfc9\xd6`j\x9e5\x98\x93k\xcd6c\x0fG\xba_\x1c\xf9\xd6`N\xce5\x0b-v\xc38\xf2\xae\xc1\xcc\xdck\x16r\xa7#\x87s\xadm%\xcd\xc1\x06\xf3\xf3\xb0A\xfa\\l0/\x1f\x1b\xcc\xcb\xc9f?\xa2\xd6N&\xcb\xd4\x06\xc9\xb3\xb5A\xca\x8cm\x10\x95\xb5\x0dRfn\x03O\xf66\x10\xdc~b\x067\xdb\x19\xb7\xe4t\x03\xcej\x82y\xdd`vn7\x0bA3\xdb\x1bL\xcf\xf8\x06\xf6\xaco\x10\xba\xe2\xbd\xde\xf1\xe1\xfb\x7fb\x168\x1b\xdb\xeb\x1dC:%\x13\x1c\x04\xfb1/#\x9cF\x8c\xe3%\xd6\x10\x0b 2\xc3A\xea\xecp\x00f\x868\x98\x9f%N\xa3\xd6\x199\xe3`f\xde8\x08\xa5S\x03w\xfe8\x88\xc9!\x07\xf6\xc4P\xa3r\xc9\xb9i\x18Yxf\xe5\x95\x83\x11\x93\x11\xca/\x07\xc1q\x07\xf3\xcc\x01\x8c\xca5\x07\xb6$`\x9e\x9cs\x90$\xef\x1c\xb8:\x19\x95{\x0e|k81\x07\x1d@ \x0f\x1dxs\xd1A \x1f\x1d\xf8\x1666/\x1dD\xe4\xa6\x033?\x1d\xcc\xcbQ\x07\x10\x95\xa7\x0eF\xe5\xaa\x83\x98|u\xe0\x9c4\xeb\x96u}\x1b\xca_\x07\xb3s\xd8\x81\xaf\xa3\xda_\x93\xe6\xb3\x83\x999\xed4Rf\x86;H\x9d\xe5\x0e\x12g\xba\x03O\xb6;\xb0e\xbc\x83dY\xef e\xe6;H\x9e\xfd\x0e 6\x03\x1e\xc4d\xc1\x83\xf8Lx\x10\x99\x0d\x0fl\xe7\x03\xacy\xd3`D\xee4\x7ff<\x88\xcf\x8e\x07q\x19\xf2\xc06\x8c\x94\x99\xf2`n\xb6<\x8d\x96\x91;\x0f\x92\xe6\xcf\xeb\x9bH\x92C\x0ff\xef\x87`.=\x88\xc8\xa7\x07\xc6\xa5c\xd1L\xf7\xbf\xbb\x0d %\xb3\x9bAm.\x9b\xde\xc8\x8an\xce'\x94\xf0W\xf4w\x89\xa0+\xf0U\x0e\xc5-\xff\x10\x06\xb8\xbai\x98q\x8e\xcf3\x15\x13\xce\xf1y\xe6\xc5\xe7\xd1MK\x03\x90\x9c\x08\xd0\xf3!\x98!\xccA\xc8\x95S\xcf\x01\nZ3\xfbE\xe3\x82\xfd\xa61\xf0\xc0xN\xd1Yq3\xe7\x99\xf4\xeb\xa9\x12ben\x9c,\x1dF\x96\x0c\x1fsbc3p\xb1T\x98\x98\x1f\x0f\x9b\x84\x85M\xc6\xc1\x98\xfe\xde\x98#\x07\x066\x19\xffb\xf7\xa9F\xcd\x81}\xcd\xc1\xbd(\xca\xa5\x8f\xc6\xf2\xf4J\x8bw\xcd\xc4\xba\x12\xe3\\30\xae\x19\xf8\x96\x85a$D\xb2\xd2\xa2X\xc9\x10\xac0z\x95\x0c\xb9r\xa1Vs\x10++>ey\x94\x98\xfcf\x1e.eA\xa1&\"P\x16\xf4)(\xbc\xfac\xd0\x1a7\xe8D\xb4i\xc0\x96l\xf3\xfbE\xb8\xedy\x08\x13\xc3\x94$r&\xba\x94\x00YJ\x8a*\xe9\x97\xe1L4\xc9\x82\x1f\xcd\xc1\x8e\xbcP\x89\x033\n\xe2E\xa6\xf25\x1e'2\xeb\xfel\x1b\xeb$l(f\xb0!L\xc8=\xb6 \x164\x02\x07\xd2\xb5\xe2.\xfcg>\xf63\x1d\xf7\xb1\xae\xcbD\xbc\xc7\x8b\xf5\xb8q\x1e\x1f\xc6c\x9d\xacXl'\x84\xebh\x98\xce\x0c<'\x02\xcb\x89\xc7q\x82\x18\x8e\x05\x161\x9a\xb3|\x13\xc2l\xe6\xe15\xd6NI\x7fI\x8a\xd1\xcc\xc1g,\x88LR4&%\x12\xe3Ba\x0c\x04&\x0d\xfa\x92\x0cyI\x8b\xba\xc4!.A\xb4%\x12i\x89AY\x0ch\xc2l-V\x93\xeeGV\"Q\x95\x08DE\xe9rJ$e\x16\x8ab\xe2&\xe90\x93tx\xc9\xf4\xd5\x0d\xe2$!\x8cd\xe0\xd2}\xb0\x025\x87k\xd8p\xdfb\x8bo}\x87\xa8\xe0\xcb\xd5[;i\xb5y^9\x03#\xf2\x0fqHD\x06F20\x92\x81\x91$\xc0\x08\xf3\xc0\x1a\x0d\x88\x1c%\xe7a0\x9d\xc3\x0d\xaf\xae\xc1\x85K\x88F,|\xe3b\nkq\xba\";\xe9\xb8i\x81\xc3-\x19 \xadk2\xf8\xba\x06\xde\xeeA\x88\x9b\x8a\xe2dc\xa2\x04\xfc\x81a6\x97\x15%\xe8\xb6\x0c\xe9\xbb\x1b\xcd\x85E [\xa4O\xe6\xca\x16Z\x94O\xbb\xdc\x99a6\x97\xb6\x10t\xba5\xc3t\xaem\xa1\xe4uo\x86\xc9\xfc\xdcBH\xe5\xf0V7gH\xc6\xdfE\xf1\xbb;\x83\xcb\xe5\x19\xc0\xe9\xf6\x0c\xa1\xbd\x1f\xe7\xb6o\xdd\xb1\xd3\xdd\xa0-\xc4\xfc\x1c\xcd\x7f|\x92\xb9D\x83\xcb-\x1aR\xbaFC\xd8=\x1af\xbbHk\xc4\x94{\xc5\xeb&\xfd[\x9b\xec\xa0\xde\xdc\xe0Kx$\xd7\xbeP\xaaK\xc2B\x8co\xf5h9\x81\xd31\x1e\x1e\xc2\xb5\xdb\xf6N\x12)\xe0\xa4(dC\xf5x)\xc1\xe6\xed\xcc\x1b\x8f\x0d\xd7\n\xbe\x93j\xcb,\x1c\x0c\x07\xea\xf8\xde\x92U\xd8\x1d\xc2\x15\xdca\\\xc1\x17\xca\x15\xfc\xe1\\\x8d\x9f\x8d\x90\xae0%\xac+\x04Y\xc5\xbc\xf0\xae\x1a\xb1\x891^5*\x9e\x88\xaf\x10\xb3\xcc\x9e\xa8\xaf\x906\xf2+\xfcR\xd1_\xe11\"\xc0\xc2\xe8(\xb0\xf0KD\x82\x05\xb0G\x83\x85\xbfjDX\xa3\xf5\xa4Qa\xc1\x1a\x19\x16\x06\xae9%:,\x8cg\xa0\xc1H\xb1\x10\x88\x16\x0b\x9e\x88\xb1\x10\x19\x82o\xf8\xd6e8\x0d)B\xf2\xe9\x84\x1e14\x9f(\xc1(\xb2\xf0X\xa1\xfaXq\xa7\xae\xef\x95\xb4\x81\x88\xb20\xed\x91o\x8d.\x0b!Q<\xfcFL\x1ai\x16\xec\xd1f\xc1\x13q\x16BC\xd0$\xae\x98\xc8\xb3\xe0\x8b>;4\xa8F\xa0\x05[\x14Z\xf0\xf5\xce\xf5\x90\x99\x1f\x91V#X\x1b6\x9f\x81 \xb5`\x0bT\x0b\x11cI\x15\xb0\x16\xbc\x81b\xbd= \xeb\xac\x8d O\x1a8\x16\xc0\x1d<\x96\xfd63\x80,x\xcf\xe5\xec<3\x12\xad>\xe3\x8c\xf4\xb7Dig\xe4Vf\xe4\x9e\x81\x8c \x8d\xde\xfe\x13u\x9b\x19A\x9a\xaa\x9b\xcc\x08\xd2<\x04)\xac\x0b\x8a\xd2\x02\xa9\xfa\x1f\x9a\xec\x9aQ\x12\xfa\x1f\xfe\xcfoqKm=I\x957\x83\xd4pN\xad\x8f\x85\xae\x0d\xf1S.,\x83\xf8\x94P\xf1\xb3\xe7\x04_\xc8\x1cDe\x081\xda\xa6\xf1\xb0\x94xf\xea\xdc0*V\xbe!N\xba\x84I\x8bfi\x9an\xc9+\xb9\xd9\x9eG\x11\xaa\x07g\x0d\x8b\x8e)\xa4e\xf2\xea\x99\x02\x9a\xa6\xa0\xae)F\xdb4Q\xdf\x14\x96\xdb\x93\xea\x9cRi\x9d\x82z\xa7\x88\xe5\x0fh\x9e\x92\xeb\x9e~A\xed\xd3#\xe9\x9f\xa6h\xa0~!\x1d\x94[\x0b\xf5\xd7\xd6C=\xb6&\xca\xa5\x8b\x9a\xad\x8d\x9a\xc4r#4E\x10\xa1\x95\xf2\xeb\xa5\xc6i\xa6B\xba\xa9\x84\xda\xa9_T?\x15\xa9\xa1zT\x1d\x95OK5NO\xe5\xb5\xf9\xf0Y|8\xb5UA\xb3\x89\xd0\xcd\x07\xb3tVVr\xd2\x194\x17\xca\xa7\xb7\n\x0ef\xa2\xee*\xa0\xbdr\xeb\xaf\x1c\x1a,o?\xddp\xfc,=\x96AMdZ2\xfb\x16\xd6e9\xb4Y\x13\xc75Q\xc9e\xd0\xb1)\xbd\x9c[?\xdcS{\xde&V\xdc\xbb0L\xb7\xbf^\xec\xa4\xfdj:o\x03^C\x0f\xf7\xfc\xcfT\xd7\x19\xf4V\x0f^\x85]\"\x95\x9d\xff\xc6J\x98\xff\x89\x15k\x16(K?\xc4!\xa5 _6\x83\xa08<\xdd\x06Q\xf4\x88vEE\xcd\xd1\x0d=\xd8\xf0S\xff\xf8\x1e>\x89\xd7yU\xf8\xbe[\xde`\x1d\x1a i\x97\xfc\xbe\xaf\x86p Z\x11\xea\x02\xf2\x9f\xdc\xb9\x1a\xb5\\2\xbdF;\xfc\x81Yb,\xd8\xef\x1a\x91\x9f\xc8K\x9dV\xa79w\x8fh\x87\xe1P\xb7\x1d`\xea\xd2L5h\x0b\xb8\xea$\x0f\x86c\xf7\x00\x85~\x87\x90\xdb\x05\xd3[\xbb\xaa\xe1P7X\xf8\xa0\xcbwIWw(6rFX\xe5f\x9c)J\x9e\xce\x06\xfd\x0f\xa6pdJW\xe6\x0e/yq\xeb\xfd\x97'\x8a\xdeJKJD?Ew\xa8\x85\x16w\xe7Pt\xad\xf0\xe5o\xe1T\xb1m\xbea\xb7\xec]!m\x1b\xf7\x1a\xb2&%\x95O\xadx\x88\x14\x15\xec>\\\xbf\x19\xb4@\xdcu\xa3%Rs\x835^\xbc\xae\x1b\xf6!UB\x0b\xe3\x1b\xe1\xedAN5}\xac\xc8\xc3T\xc6&\xbe\xfcX\x1f\x86NYCd5\xf8\x88\xa9\xa9\xcf\xb7\xa8\xe9g\xd6\x15\xb2M\x19#\xdd\\\xba3\x91\xf0\xefph\xa6\xd9\xfe\x94\x8d\xac\xa6\x1c\xc8\xac\x84\xceJ\xe8\xac\x84\x8eRB\xc7\xd9\"\xaaZ\xe8\xd6\xa2\x86\xf6)\x86{I:\xab\x88\xb3\x8a\x98\x97\xac\"VJp\xf9\xb3\x8a\x18\xb2\x8a8\xab\x88\xb3\x8a8\xab\x88\xb3\x8a8\xab\x88\xb3\x8a\x98\x97\xac\"\xce*\xe2\xac\"\xb6\xf4\xa3?\xa4\xbd\x84\xa8y\xad!\xe9\xfcf]q\xd6\x15g]q\xd6\x15g]1-YW\xfc\x7f\xa1\xae\x98o\x14-\xe4\x8dSw\x0b#C\xde\x18\x84\"C\xde\xbc\xc3\xf7\xddG.\x10}`\xda\x94\xd1\xeacz\x1d\n\xa9j\xc9u2\xba.\xd9\xe1|\xa1\x1d)>K\xf4F\xec\xe54\xa1Vb,\x84\x7f\x9b=<\xe4\x1f\xe28Tf\x98\x99a\xfe}3\xcc\x81UE\xc0jr\xc5\x8b\x10\xb7\x9b\xc0/?\xe2j3\x93Y\xb6\xb8\n\xc5Q\x1c\xc3)\xa9^<\xb3\xc9\x99|)\xb3\xc9\xcc&\xff\xbe\xd9\xa4\x8bK\x0d\xec\x92\xbdR\xe3\xb9%\xa1\x12\xc9\"\xaf\xa9&\xf6\xf5\x00`\x92Y\x1b\xcd'\x91Z\x7f\x06\x0b\xe3>\xcd\xbe\xb0JL\xd5%\xb3\xb4\x19\xede\x96\x99Yff\x99\x7fo,\xd3\xcb\xb5\x94\xb8\xad|g3\xfdX/x\x12.*\xd2qq\x8e\xc3N0*\xdbz\xac\x8f0'c=\xf7\xe3\xf8\xeexc0\x8d\xf1>\xb2Q\xd8x\xd8J9\xb2\x02\xe3\xd0@,\x15O\x9d\x84bY\x9ba\x99\x04\x9d\x0d\xa5\xc6\xb2\xb4\x08\xc2tS\x896\xd4\x967\xa8C\x13Z5p\x0f\xad\xcd^%N\xe8k\xa1\xf8\xfb\xd8\x92\x94m\xc8\xdd\xf1a\xe9l\x93\xaavd\x94?\xe3\n7\xc5\x9aI$\x15^\xe3\xb6\xe5\x99\xd2\xc4\xde\xa7G\x86z$\xa8\xd0\x00\xef\xc5\xba>\x1c\x8a\x8e\xee\xd8sc\x0f\x9f\x0f\xe6I\xc7N\x0fa\xf9\x06\x95%cX\xfc0\x17\xab\x92\x9dgBDD\xa3\x11y\xff\x94\xbe\x15\x14Lo\xb4(\xa7\xdd\xbeh\xd5&Dl}\x8a\x8a\x89~\x1a\xdd\xa4\xf9\xe3\x90\xe8f\x06\xcd2h\x96A\xb3\x0c\x9aeI\x9d\x96,\xa9gI\xdd)\xa9w\x16?\x8b\x18\x0d\x87]d\x1e\xa5\xe7x\xd3\xdf\xe7\xa3%\xedA\x14\x98\xa1m\xc8\xda\x0dV2\xcf\xcc<3\xf3L\x8b\xb8\xe9\xe5U\x93\x14\x1b\xa2\xf1\xc9\xfa\x8d\xe1\xcc\x0bR#\x14\x1c\xc3 \xc6\xeb6\xa4GbVkd\xb5FVkd\xb5F_\xb2Zc\x92@\x92\xd5\x1a\x12\xb1\xac\xd6`%\x8b\xe8YD\xcf\"\xfa\xf0K\xbcZ\xc3\"\xddNQiHdFi3>\xb0Kz\xb4`\xcdMt\x0d[\xb6U]\x97\x18U:?iOk\"n\xc0\xb6D;:\x94b+\xe4\x03\xa6P\xc8\xda\x8a\xe9\xbc'\xb3\xc2\xcc\n\xff\xdeX\xa1M[\xa1\xf1\xa2XU\x85\xa6\xa4\x10l\xc5\xa3\xac8\x8f\xd1Vprcu\x16\x9f+\xc1\x1a_\xafo\xc6+,\xc4\xb3x\x9a\xba\xc28\xb3~[b\xe1\xd3y\xea\xfb\xac?\xe5\x86\xfe\xf0\xbaY^\x14\xa4\xe7u'3\xc9\xcc$\xa5_b\xe4E;g\x81h\x87\x08\xb5~\xa4\x948Tb<\xfa\xef\x8f\xa3i\xfa\xc6\xcc\xc82#\xcb\x8c\xeco\x84\x91i<e\n/\x9b\xfa\xfc\xfd\xcc\xe2n\\6M\xdd\x8c\xe6i\x98\xd4ZrIS\xe7kQ\x1c\"y>\xbbN\n1\xa2\x07>\x91\xbe\xe7\n\xc7\xc8f%\xdat\xc8\xbd\xber\x83;T\x94=\xa6\x80N-\x8dy\xb2EEyj\x1cZX\xe5\xcc\xf3yg\xa2\xfa\x10\xc2\x84.8\x13\xc4q\xb5F\xc7\xf6T\xf6\x01T<\xa3\"\xe2<\xeb\xa0\xc5,B\xde\x9efl7\xde\xe5\x05\xfc\xfb\x9e\xectc\x0e\x87/\x8b\x16\xd0\xaan:%V\x0b\xcdr\xce\xb2\xdeQ5<\xbe?\xe2u\xc7P\x80\xfeP\x92\x7fh\x1dQ\xdc\xf8z\x88$+?\xa4\x12\xb7\xe7\xf3u\x98\xaf\xc3\xbf\xb7\xebPU~\xd8n\xa2\xf8\x9b\xd0 1\xee\xfe\x1b}\xf5q\xbe8\xe9\xd2cvi\xb6\xf3f \xfc\xe7\x0e\xfb\xe7\ny\xe99\xbc\xe0\x8cZ9\"neL\xe4\xcaP\xecJ\x18\x19\xbd2\x84FC\xda\x08\x96\xbfp\x0c\xcb\xe8(\x96\x8f\x1c\xc7\x12\x86\xb3\xf9\x9e\xd6pE<\xe6\xadC\xdd\x80k\x0f\x04B*\xda_\xbf\xa28\xc2*zw\xb6#d\xa1\xa7\x8e\x7fKq\xce\xf0\x1d=\xactz\xc9L\xb2\xb3K\x97\xbc\x9f\x10\\m\xa4U_a\xce\xa5\xf5\xc8y<\xb4\xa1![)6\n\xc5\x01\xd7'\xeb]<\x8a7\xd8\xaet\x18VW~\xd8\x03\xdav\xf2\xe6\x10\x9a\x82\xba\xe9\x85?\xd2\xab\x16\xea\x93e\xb7\xb8\xba\x06\xde\xeeAH\x1a\x12\xc5\xcb\xc9 dp\xc5\xca<)I\x14\xaf\xb4\xd47\x95\xb6\xbb\xd1R\x94(>S-V&KUv\xa6Ub\x9bt%\xca<)\xcbB\x90\xc9]\x9a\xb4%\xcaD\xa9\xcbB\xc9)\x87\x892M\x1e\xb3\x10R%4C.\x13%\x8d|&\x8a[N\x13E\x93\xd7\x86B9A\x87\x0e\xc7\x11l\x16\xc2\xfb\xdeeSE\n\xe3U}\xc3pVTP\xa1\xaan1Y\xd4\xf6\x99\x9b\x7fY\x88\xf99\x9a\xff\xf8|b\xbcyx\xa6W\x80\xef\xf1\xfaD\x0d\xf66\x18mhj\xf9\xb6kN\xeb\xee\xd40Q\xe3\xcb\xdf<_[\xa2\x8d\xb2`\xb6%nt\xe3E\x80O{v\x0c\x19R\xc7\xc7R\x16[\xbc~X\x97\xb8\xafGV\xf7\x0e\x97%_e10K+\xec\xd5\xeel\xef5\xdc\xa2\xb2\xd8\xf4\xa3#{\x8c>\xe3qA\x039\xd3\xcc\x06\x0d{\xe0\xd7D\x0c\x18V\x02\x19\xe1\xab\x95{\xe5L\xbc\xeb\x9f\xc97\x9c/\x0e\x10Lxx\xba\xd7\x8c_\xe0TaA\xa4\x83b[P\xeb;I\xb9\xd2\x0f\x96]\x0e%\xbeE\xe42\xa8X[\x85\x1a>\x99\xa2\xac\x95\x08\x90K\x03\x16\xb3\xfb\x1b\xae:r\xd7\xdd\xf6\x99\xb2\xc9\xc5G\x83\xf9\x0b\xf6\xc0\x15\x1f\x03\xad\xb5\x19;\x97\xa6\xd5&\xb5\xb9\x0c\xc0\x9f9Ek\x84\xe6\x15\xa8-\xb7\x99T\xf4\xfa2E\x01\xfd\x96\xf5\x1dG\x8f\xe5(\xd8]-[YR\xe3X\xc6<\x8b\xdd\x1e\xb7\x9dM\xbfTt\xd4\x96O\xe8\x1c\x95\xbd\xf4ItH\x0d\xcaTp\xd3?2\x98cs\xa2\xe9!H\xff\xd9\x98\xc8\xbf\x88x,\xd1\xe9\xe3\xf0\x93\x0e\x8a\xff\xe4\xd3\xd5f\x0d\xd1\x88\x93\x01\xb3e\x9f\xac!\x9a*\xbbd\x0d\xd1\xe3i\x88\xa2\x94C\xf6\x1az\x82)\x87f\xe8\xe3\x90\xb1\xc9\xd8\xe5\xb2\xfa$\x98^G\xfbN\xca\xa9d\xcf\xa4d\xc9\x9fd\xcd\x9a\xe4\xc8\x95\xe4\xce\x904*/\x92\xfd]</\x07\x12\xa311\xf1\x91+\xd1Qp\xfe\x1d\xe9\x8d\x12%5z\xf4TFI\x13\x18\xc5\xa7-z\xd4dE\xae\xc6~\xd9\xc4D\x8f\x93\x8e\xc8\xc6K>\xc9\x1a\x9d\x08\xc5\xb2C\xe8\x98\xad\xb1\xc9R\xc8P'K!\xacd)\xc4/\x85X\xf5\x1d\xde\xc7\x86\xdd\x1cK\xd9/\xd3\xf5\x19\x96G\xbez\xce\xed\x9bt\x9e\xde\xc2\xd4\x1c\xcc\xd3P\x18i|\x0c\xfa\xf34\x12l~\x05m\x9b&\xc2\xc6\xa5?\xcbp^\x04\x97\xd6!\xbc\x11\xdc\xd5\x0e\xdb9\xf9\x98\x0d\xae\x8b\x84\xeaB0\x9d\x0f\xa2\x1b\x03\xcf\xf9q\x94d\xb0\xdc/\x08\xc9E\xc1q\x8f\n\xc5\xa5\x80\xe1\xbc\x10\x9c\x0b~\xb3Bo\x8e\xddi\x85\xdc\xac\xdf\xba\xb7HR\x98-\x04\xb1\x19\xf0\xda\x88sk\x95>\x12 g\xce\xae\x80\x17F\x0bBh t\xf2\x13\x856\x08 n\x90\xae{\xd1B\x1c\x04u\xfc\xe9\x849\xb0\x0bt0[\xa8\xd3\x889!\xb1\x89\xc2\x9dF\xc5\x0b\x85\xcd\x17\xf7\xf4\xd6\xec\x10X\x1a\xb1\x0f\x82\xd0\x97\x15\xf6r@^3\x1e\x1e\xc6\xaeK*\x12\x82!\x16\x82w\xdb\xcf\x13\x0fe\x06i\x83\x98\xe6 \x8b\x1au\x0f\x94\x95Ph\x04\x97\xe0\x08\x89\xd2X\xd8\xd7\"%\\5\x1b\xaa\xd2\x01\xaa\xb4\xe0T\x1a`\n\n\xb1\xbd\xad\xa0\xd4,@J\x81\xa18A\x1b\x18\xe5yK|'=\x11\"^\x14\xe6\xb3\xc0\xba\x9d\xf4\xe7@\xc4S\xc0\xf7\x0cp=\x01b\xc5\x7f\xb7\\\x97D\xec\xff\x85D\xfe\xa0\xb8\xffh\xa2\xfe\\1\xdf)\xe2\xdb\xc4\xfb\x18\xdf2C\xa47\xbe\xb1/y21\xde'\xc2\xaf\xeb\xf6P\xb7\x0bt\xea\xf6\x8b\xdb\x17+\xdc\xa1\x17\x8b\xd7\x9bM\x83\xdb\xf6\xdb\x87\x0e\xb7\x9f\xea\x8f\xb4\x9f\xa3\xady\x11#\xb2d\xc3\x8c\x1d|\xcf\xba}}p\xa3T\xbc\x16\xfb\x1c\x9a\xe3\x9aSc\xd0\xd4\xe2\x0b\xc1\xc8>\x16\xd5\x9af\x10'\x83\x7f\xdenn\xe0\xcb\xc5o\xfe\xc9?\x1d\x8c\xe8\xa7\x9avi\xf2t\xac\x1e:\xd3_1\x04\xb3{\xa7\xc8\xda\xaf\xe0\x14\xd1\xafS\xcd\xd0\xb7\xa8\xc5\xaf\xd7\xf4\xc6\x19;!\xde\xa98\x9eVj\xd4\xad\x11oK\xf2\xe9\xf2\xd4\xc4F\xa7\xf2\xbfa^\xc3\xe7\x0f\xdf_4\xb8\xadO\xcd\x1aC\x85\x0e\x98=\xdcX\xb8;\xc2\x9fD\xc0;6\xeft\xba\x19r\xa7\x91jqS\xa0\xb2\xf8\x0b\xde\xe8\xa2\xf2\xb1\xa9\xbbz]\x97\xb0:Q\xf6\xca=\xa2\x16L\xe0c}\x86\x03\x03P\xa8\xd0B\xdeK%F\xad!t\x13\xc9\xec\xc9\xc5\x13r\xde\x1b\xb4\xeep\xb3\xa0Ww\x89\xe8U\xbf\xa3\x8eC\x1cV\xfc\xfc\xe1\xfb\xa7D\x88\xec\xf6\x94\xb4F\xa8\x0fe\xa7\xb7@9\xd1\x89\xbc\x11~:\xa1\x92f\x8df\xb3\xc2\xc9\xd2\xf1\x9f!\xc2\xa7\xf4\xaa?\x92\xc6.vu\xbd+\xf1\x82\x8eyu\xda.\xde\x9e\x1a*n\xfd\xf8\x8c\xf5\x95\x12k\xf7\xf5\xa9\xdc\x10\x86F\x06\xab\xd1Y\xa3\x8a=T\xe8y\xd1[9#\x8f\xb0s2=T\x00y\xb2xB\x8eDU\x0f\xc0\xd7\xb3a\xb3\x8brU\xc1\x91LX\xb1\xc6\xe7\xd0at \x82\xcd\x89>\x85\x8e\x0d^\xd7\x87cQ\x92\xbep\x81nUT\xa8y B\x17\x1d\xafn\x8c(^\xf6\x0fz3\xcc\x93\x0b\n\xea\xbduj\xb1\xb8\xdcD\x00\xbdz\x0b\xaf\xab\x87\xfe\xedzN\xcf\xed\xe7\x0f\xdf\xb7\x8c\xc9k\xd4\x08\x01\xcd\x05\x8c\x94v\xbd\xc7\x07\x0c?\xee\xbb\xee\xf8\xe39\xfb\xff\xf6G\x1a@\xaf\xaa\xf9\xaf\xe7t\xa7\x90k\xbf\xa6;\x9f\x8e\x94<qOGc\xba\xc9\x08\x8d6psK_\xdb\xa8\x83\x03:\xb6l\xd9iO\xbbZ\xf2\xe8\xdb\x16\x15\x7f\x1a\xa3\x96\x03\xd9\xed+c\xf6\x7f\x05W\xdb\xa1od\xb9\xb8X\xbd\xe9\xbbO%\xf9\xb6=\x1d4K)V\xfdu\x05\xbf\xff\xf4\xe9\x1a~w\xf9I \xc1\x9f?|\xcf\x8e\xcc\x03\xb96\x01\xc1\x9f\xf4\x8d\xf7\xe9\xe1\x88\xff\xfc\xa7?k\xc4@\xc4\x82\xab\xc4*3\xa6L\xe7\xef\xd8\xd4\x9b\xd3\x1a\xd3g]\xd3\xd4\x8d\xae\xc6\xfc\x15\xbc>\x1e\xcbb\x8d\xf8\x98\x1b\xcc\x04s\x86\xe1\xae\xd1\x9a\x9c\xc5\xba\xbe9\x1d\xfbpk+D\x04h\xd6i\xa3+\x9f?|O\xdb\xdd\xa3[\xba\xd4\x07i7n\xd8vD\xa2\x9b\xe4\xbfo\xebbC\x047\x83\x10k\x94\x1e\xb0\x06o\xeb\x06\x9f\x8bj\x84\x1a\xea\x8aUQ\x16\xdd\x03T\x18o\x84F\x802\x80\xe6\xd6\x92\xb4\xbe\xae\x94\x17\x0e9\x01\x0b8\xfb\xdcb!\xf1\x90\xf1\xd2`\x95\xe8\xc0\xbe9\xa0\n\xed\xcc\xf1\xe9:\x8f\xc53}m\xdf\xd5\x1dUL\x15-lO\xd5\x9a\xedU\xd2S~\xa6\x07\x8d\x99\x14\x11\xd06\x995}\x05\x99a\x00\xc5v\xa0O@\xd4b\x16\xc7\xa5\xe8D\x03\xfd\xfbf\xd8\xe1+\xbc+*\xfa\xd6\xb9+\xba\xbd\xc1 \x1f\x8ex\xc1\xf6\x1a:\x16\xedb]\x1fL~\xf3\x91\xee\xf4\x96\x05\x19$\xc7\xa8\xd2\xcf+\x9cq\xdb\x1b\x16\xa5\x91\x1d\x8dgp\xa0O\xe9\x95q i7\xa9wjq8\x96T!\xc4\x82_\xb6G\xbc.\xb6\xc5\x1aZ|@UW\xac\x950\x8et\xafG^\x94V\x1b@\x08\xde\xa0?\x90C\xb8\xc2\xe4\x1dN\x95\n\xc35h\xdc{\xfc\nA\xab\xfa\x16\x8b\x8e\x1b\xdb\x8f\xce\xef\x17\xe1\xb6\x7f|]=\xfc8\xbc\xf2\xc9\x0b\xbeY\x15]C6\xbd\xa7\x0f\x82w\xa1\xb2V\xc6O\xe7\x16\xc9\xd3N8\x0ce\x80\xac\x0f+S\x00\x90\xdb\x11w\xba\xb2\x15\xae\xc5\xe6+\x8b\x15\xedX\xafNhOG\x1a\xb7\xb7\xab\xe9\xf3\xe8\xe2T\x91\xff#\xb7\x03[\xb3\xd6\xdc\xe5\xfaeXo\xe1\xd4\xb1c-\x8eNK\xa3\xa8n\x98\xba\x12\x95,\xb2,ulfR`+:N\xdaa\x13-S\xbc\xbcGds\xc1\x8bW4V-{\xea\xb3\x8e\xa1~\xe2\x8a\n\xde\xfc\xfa\xd7\x06\x93\xfe\xae\xaea[\xd7\xf0\x0d,\x16\x0b=\xc0$i\x0eU\x0f\xfa\x9fQ\xf5\xb0 \x0d}\xd7\xd4\x87\xb3m]?\xd3?X,t\x0e\\l\xe1\x8cT\xfbL\xbb\xf5\xa9>\xfbGR\xef\x99%\xfe\xa5Y\xf7g\xdbX_\x06\xc6\xfa\x07t\x8b&\x0d\x16\xbe\xa1w=\xa18rlE{\xf6]]/\xd6%j[\xeb\xd0X\xd3\xe4S\xd6c\xe9s\xbd\x95\x9f\xb5\x7f_\\\x90-\xe2k\xfb#:`ru\xbef\xbd\xd8\xe1\x8e\x9b\x85]Um\x87\xaa5>{\x16\xdf)km\xb3\x8f\x96u\xf9*\xb0.\xd7\x0f\xdd\xbe\xae\x8c\x95a\xbd\xf8\xae\xae\xcf\x16\x8b\xc53s\xbf\xb1U9\xb3\xfcBw\"]\xa9\x98\x85\"\x15\xae\xd8\x0c\xbd\xbd\xfc\xf8\xe6\xc3\xd5\xf5\xa7\xf7\x1f\x9e\x99\xa8\xcd\xb0Wm\xa4\x19q\xcb\xe8\x7f\x13\x18\xfd\xefL\xa7\x1e2\xf2W\xdf\xc0?\x1eW\x8b\xef\xea\xfa?\x17\x8b\x85\xbe\xf6\xa43\xe7D\xb0!\xdf\xa1\xea\xe1\xb8Z\xbc\xc3w\xd6~\x15[\xfa\xdd?|\x03UQ\xda\x82\xcb\x9a\x93bl5\xdb7Z'\x8d*\xbc]\xd6\xbf\xc5\xe7\xea\x80\x9av\x8f\xcaO5;BS:%\xfd\xe5\x13G\x03zn(\xc4PX=\x0c\x82\x82\xe0\xd5,\x8c\xf2\x83P\xef\x91+X&\xf6\xd4\"\x08\\\x90\x97\xd3\x82\xfe@D\xa3\xa7BC/d\x8b^\xe1\xcb\xd6T&\xd73\xe8\xaa|\x10\x92\xbf\xf1\x10\xeb\x85.\x0ert\xe2\xed\xf7\xf4\xe2\xa9L\x8c?;D\xb3\xec\x9d\x81\xf9\xdez\xb2\xad\xeb\xc5\n5\xb4\xc3\xf7\x17\x0f\x8b\xbf<ace\x92\xb4\xfe\x1c\xa0\xcd=!_\xa9\x97\xc5\x1f>\xbe\x7f\xf7\x85>\xbb\xe4\x8f\xc3\xdb\x92I(4\xd0?\xbf\xae\x99\xec}j\xb1Pb\xecN%jd*fe\xf2\xe1\x06\x0fW\xed\xf9\x10x\x99\x9f\x88s~{+/R\xe9\x1a\xa4\x9a5\xf8\xf1\xdf\xc8\xd0~\xb4\xc1\x03b\xa2\x16\xe2\x00\xbe2\xc4H\xb4\xbe!goxdl\x8b\x12\xeb\x9cL\x9c\xd0k\xdc\xb4ue\xd9\xa2\xfc\xad\xbf-\x9a\xb6[\xd2\x99\xb5\x86c\xe6\x9f\x91\xa5\x15_\xbd\xf4rMR\xcc\xd6\x9e\xd0\x11?y\x05Ol{U\x1d\xca\x82\xf5\xf9\x89\xe9\xe2\xf7\x84\xf6\xf6\x1d:\x10J\xff\xca\xba\xf6[\xcbg\xa4\xb7\xdaW\xbe._m\xb9\xf8\xab\xae%[\x8b\x82!\\\xcfo\xaa\xfa\xae\xa2\xa7f\xcf\"\xc8\x9f\xda\xae>\xf0\xbd7\xd0R7\xcd\xb9\x16\xad\x9f\xed\xa4!*:o\x90l\x10\xaa<\xa5\xdbC&\xf7#\xdd\xa6b\xa7\xec\xebr\xc3\x91\x97\xa1u\xaa\xb7\xe0;L\xc0@|\x83\xc9\x94(\xe9~W\xc1\xd9V\x8a\x87c<X\x85\xa6\xe4\xcf\x7f\xfa\xf33c\x03N_]\x95\xb8m\x81\xe9p \xa1\x17\x8b\x97/^\xb6O\x8cec\xff\x8f\x98\"\xd00\xa0\xb0\xbe(\xac\xc8\xae\x19\xc1(\xb6\xae\xfd\x1d \xa9'\xa5\x80@\xe4\xc9-:\xcb\xa4\\\xb8\x92@N\xaa\xd5\xd9K\x99\x1681\x9e\x01\xe9\x8b\xbe\x0f\x84P\xb1\xee))\xef\xd3\x05\x15\xf3\xf8\x86\x90\xdb\x12\xaa-|\xdf\xe1\xde\xe5O\xce\x8a\xd0 }\xad\xcc\xa0\x94\xa7/\xd5p\xc1-n\xbb\xa2\xda=s\xe9\xf2\xbf\xc5\xeb\xfdW/\xaf\x1b\xbc-\xeeG+\xadW\xb4\xf2\xf2Hk\xc7\xaa\xf0{\xfc\xc2\xd6\xb4[/-\x7f\x0d\xcdq=h\xa4\x19\xb5Q\n\xe9k\xd4\xa0C<Px@\xf7\xcb\x03>\xd4\xcb^a\x1a\xab\xa2W\xf6mw\xbfl\x8b\xdd\xb2,\x0eEl\x1a.\xb3\xfe_\xf0r]\xb7\xdd\xf2\x88\x1b\n\x16L!DzA\xe1\xee\x07F\x0bo^~\xfd\xf5\x8b\x7fIA\xaa\xc5\xeb\xe3\xcb\xaf\xff\xe9\xe6\xc5xb\xca.a+\xa4\x04\xe2=\x92?a2\xf9 <\x8e\xc8\xa2\xc2\xa1\xde\x9cJ'XE\x9d\x92\xf8\xe9\xee\xb1\x8d\xab\xb7\xa3\xf7\xba`[a\\B\x19\xc7S\xfb\xbe\\\xbc|\xca\x1a\xb69]\xb9{\xeb<\x1e\xbc\xbaYS:*\x11\x13tUm\xeb\xd13ST\xdbz\x98\x0ee\xf4\xe4'\xd1g\xc1\xde\xe8\xdf\xd8\x9dH\x13\xc6\xf0\xeb\x95\x89\xcf\x12+^h3\x1c\x85\xea\x18\xab\x03n]\x95\x81\x1e\x81\xab-\xf0\x9a\x04vV$ |J2\x08\xea\xc3 -\xaa\x04^d \x92\xa2K\x90\x12a\x02\x1f\xca\x04\xf3\x90&H\x886A\x10q\x82\xa9\xa8\x13\xccA\x9el3\xf6p\xa4\xfb\xc5\x81>\xc1\x1c\x04\xcaB\x8b\x1du\x07\n\x053\x91(\x0b\xb9\xd3\x91Gs\xb4\xb6\x95\x14\x91\x82\xf9\xa8\x14\xa4G\xa6`\x1e:\x05\xf3\x10*\xfb\x11\xb5v2\x19n\x05\xc9\xb1+H\x89_A\x14\x86\x05)q,\xf0`Y0\x13\xcf\xb2\x9dq\x0b\xc2\x05\xb1(\x17\xccF\xba,\x04M\xec\x0b\xa6\xe3_`\xc7\xc0 t\xc5;\xb10\x88\xba\xff'bb6\xb6'P2\xb6\"\xca\x17\xfe~\xcc\xc3\xc74b\x14-\xb3`d\x90\x06'\x83\xd4X\x19X\xf02\x98\x8f\x99i\xd4:\x03A\x83\x99(\x1a\x84\xc0%p\xa3i\x10\x83\xa8\x81]M>\nYs\xd30t\x92\xb3P6\x181\x19!\xb4\x0d\x82\xe3\x0e\xa2n0\x0ey\x03\x1b$\xe2A\xe0 \n\x07\xb3\x908\xf0\xad\xe1DD\x0eB\xa8\x1cx\x919\x08\xa0s\xe0[\xd8X\x94\x0e\"\x90:0\xd1:\x98\x87\xd8A\x1cj\x07\xa3\x90;\x88A\xef\xc09i\xd6-\xeb\xfa6\x84\xe6\xc1lD\x0f|\x1d\xd5\xfe\x9a\x14\xdd\x83\x99\x08\x9fF\xca\xc4\xfb 5\xe6\x07\x89q?\xf0`\x7f`\xc3\xff \x19\x06\x08)q@H\x8e\x05B4\x1e\x081\x98 \xc4\xe3\x82\x10\x89\x0d\x82\xed|\x80\x15E\x82\x11H\x92\x1f'\x84x\xac\x10\xe2\xf0B\xb0\x0d#%n\x08s\xb1C\x8d\x96\x81$BR4\x11\x92\"\x8a0{?\x04\x91E\x88@\x17A\xbbt\\(#\xc4\xd8.\x1a~\xa4\xf3s\xa6\xd8!0\x97\xee]\xe8\xccY\xa0}\xe9\x03U\xf3\xef\x07\xbf\xfe\x9f\x08\x85\xffhe?\x92\xdd8\xacu\xec\xf5\xc0\xa9(w\xcebv\xb9\xc8.\x17\xd3\x15\xdfLag\xccQv\xb9\x18\xa3\xe0\x9e\xa9\xdcN\xac\xd8\x9e\xa1\xd4\x9e\xa1\xd0\xb6jW\x93\xa9\xae\xd3\xaa\xad\x93\xa9\xac\xc3\xea\xead\xaa\xea\xecr\x91].F\xa8\x94\xb3\xcb\x85Ea<GY\x1c\xe3\x85\x90].\xa4\x92].D\xc9.\x17}\x99\xa1\xc0\x8dP\xde\xc6+n\x83J\xdb\xecr1G!\x9b].\xb2\xcbEv\xb9H\xa7:\x9d\xa56\xcd.\x17Q.\x17vI\xdc\xa6\x05t[\xdf\x1b\xcaH#\xafC\x8c\xfd\xf5\x84\xb08\xbc\xa2\xaeo\x8c\x8a\xb2dX\xf1\xbalx;\x87\x05\xaf\xf3\xc5\x15zZ%UO\xfa-w\xd3\xa9(\x13*)\xbd6\xbb3\x14\x95\xe9T\x95!e\xe5Duej\x85\xa5Ge\x99Zi\xe9T[\xceV\\\x1a\xf4\\\xf6\xb9i\x95\x97\xb3\xd5\x97\xc9\x15\x98\xb3T\x98\xe9\x95\x98 \xd5\x98\xa9\x15\x99 U\x991\xca\xcc\x84\xeaL\x9f\xdd\xed\x1c\x95\xa6A\xccnsk\x91(l\\j\x9e\x9a\xd3 g\xb3\xb6\x9d\xa8\xf8tX\xdaz\xaeb\x8f\x95m\xe8\x96\x9e\xa8\x025\x19\x97\xd3\xbe\xd6\xd7\x83\xc4\x8aP\x9b*4\x8924\xb1:\xd4fS;S%\xaa\xd0\xea,\xf6\xb4s\x14\xa4A\xf3Q\xa7%mPMj7K\x8bW\x95\xda\xeb\xffl\x1f\xfb$\x85i\xec\xe0CJS\xffH\x83\x8a\xd3Q\xaaS\x9b\xf9\xa1\xdb^v\xbe\x02u\x8e\n\xd5\xb9Z\x13\xd5\xa8A+Y\x9f\x8d\xac\xdfB\xd61y\xb1\n\xd5\xb0J\xd5b\x19;C\xad\x1a\xa5X\x1d\xa3Z\x8dP\xae:\xccL-\xcdZ\xbf\x0b)Y\xe7\xaaY\x9d\xddS\xfe\x96T\xd9\x9a\\\xdd\x9aX\xe1\x9aV\xe5\xea\xb3u\xb5X\xba\xa6Q\xbc&T\xbd\xa6V\xbe\xc6\xaa_#\x14\xb0\xd1*\xd88%\xac\xd5\xb2\xd5\xd6j\xac\xb2.d\xd5\x1a\xa9\x8c\x8dR\xc7\x1a\x9dO\xa9\x92M\xae\x94M\xa9\x96M\xa9\x98\x9d\xb7\xdeA\xe5lX=+_\x0c<\x10\x84\xd0w\xf6\xe1\xdci\x9al:\xb1\xfc\x17^\xe3\x88vEE\x9bv\x84^\x18>\xd0\x82h\xf4\x7f\xe6\x8cO({\x87\x8b\xc1\xaa=\xb5\xebNin\x0eG\x10\x85\xff\xc3\xde\x9f6\xc9m\\\xf9\xc2\xf8{}\x8as\xf9\xff\xc7\x90\xf44\x8b\x96\xbcL<\x9c+\xc7m\x91\x94\xd43\x12\xd9A6\xed;\xe1\xf0\xd3\xccBeucX\x05\x94\x00T/\x9e\xf1w\x7f\"7 \x97\x93\x0b\x80l\x99\xf2\x00o$V\x03'\xf7\xb3\xffNN\xceTq\xee3S\xad(\xff4\xfb_\xe9A \xad\xbc\xfa\xf4\x9c\\\xd1w\xf4\xa7#m\xbb\x95\xf8\xbbE\xe4\xa7#m\xc4%C\xf2\x9e\x8c+\n\xfb\xba\xed\xf4\x9b/x\x89\x9fak3\xc3\xb7\xdcZt\x98\xc5L\xf9\xfaT5\xec\xeb\x86*g\x8b.Y\xbb\xba#\xa9y\xae\x13n\xaf\xe1\xe4\xf9l\xf0\xff\x11I\xce\x8c\xef+\xbf\x8f\xe6\xa4\xb0\xfb\xafO\x94\xc8\x91\xe6D\xec\xd3qKZhiw\x02e\xd7*\xb7U\x0b\xc7Jl\xa6\x8d\xf0\x1c\xdc\x96m\xa8\x02=\xea\xfb\x1f\x11dh\x91(\x83\xea'\x9a\xf2\xfc\x9bP\x10\xe2G^'F\x92\xfe\xe6\x9e\xb1\xd8\xa9\xf1\x88%\xfdydl![daI\x7f\x9e\x11MX\xd2\x9f\xc7E\x10f\xc6\x0f2G\x0ff\xc4\x0erG\x0e\xb2\xc5\x0d\xf2F\x0d\xb2\xc5\x0c\xe2\x11\x83l\xf1\x82%\xfdyI\x7f\x9e\xe3\xf5_\xd2\x9f\xe7y\xf7S2\x82\x97\xf4g\xedY\xd2\x9f\xd5\xb3\xa4?\xf7\xcf\x0c?}\x82\x97>\xddG\x1f\xf5\xd0/\xe9\xcf\x99\xfd\xf1Y\xbd\xf19}\xf1K\xfa3$\xfb\xdf\xa3\xde\xf7D\xdf{\x8a\xe7}I\x7f\x1ehe\xf6\xb4\xe7\xf3\xb3\xe7\xf3\xb2O_\xdd\xa8\x87=\xe6_\x8f\xa6?\x07<\x82A/\xa5N\xe39B\x04\xde\x9d\xbfLI\x8b6>]\x92\xa3\xa78/\x97\xe4h\xed\xc9\xe5\xc8\x8c\xb92':3s\xbb3\x97\xe4\xe8\xe9\xae\xcd\xd9\xce\xcd\xec\xee\xcdY\x0e\xce\xfc.\xce\x8cN\xce\xdcn\xce\x8c\x8e\xce\x14WgFg\xe7\x92\x1c-\x9f\x89n\xd1%9z\xaa\x9btI\x8e\x16O\xb7$G\xa3c\x9f\xe4NM\x1d|\xcc\xa5\xba$G/\xc9\xd11\x87\xeb\x92\x1c\xbd$GG\x9d\xb1\x99\xdd\xb1y\x1d\xb2Kr4XO\x9as6\xc1=\x9b\xec\xa0Ms\xd1.\xc9\xd1Kr\xf4\xac\xf5\x8e\xban\xe3\xce\xdb\xb1\xee\xdb\xb4\xfcR\xfds\xd3s\xdb\x1aN[5\x1d\xa3n\x95\xe4T\xc5\xc5\x85\xa3}\xb9\x07\xedFJg\xd8\x87\xe0e\x88\x92\xa3\x0d\xd7 \x8a\x07u\xf3\xe2N\xde\xe0\xfd\x96\x90\x92{\xe3\xe4.\xe3w]\xce\xa0\xe5\xbf\xf7r\x1a\xd1\xe8\x1d\x98y\xc8\"\xf7a\x8e%ll\x05d\x8f\xa5$T\xcb\xeb4\xbdq\x89\xbf\xf6\x9b\xf8\xbb\x86\xa8\xfc\xe6\x84m\xcb\xbe\xad\x9b\xf2\xaf\x16\x12a\xc4\xde\xeb\x96\xac\xe8\xf9!\x85%+zF\x18a\xc9\x8a\x1e\x17:\x98\x198\xc8\x1c6\x98\x114\xc8\x1d2\xc8\x160\xc8\x1b.\xc8\x16,\x88\x87\n\xb2\x05\n\x96\xac\xe8%+z\x8e\xbb\x7f\xc9\x8a\x9e\xe7\xd6OI\x14^\xb2\xa2\xb5g\xc9\x8aV\xcf\x92\x15\xdd?3\x1c\xf4 \xee\xf9t\xe7|\xd45\xbfdEgv\xc4gu\xc3\xe7t\xc2/Y\xd1\x90\xecx\x8f\xba\xdd\x13\x9d\xee).\xf7%+z\xa0\x95\xd9\xc5\x9e\xcf\xc1\x9e\xcf\xbd>}u\xa3\xae\xf5\x98c]qizw(\x1b\xd4ogY\x13\xca\x92\xd8\x90\x8e>\xeb\xca\xfd\xa0\xc5b\xe5)\xd8\x0bp{M\x05\xcf\xbajH%+j\xf0\xf6(_}\xb5x\x87\xe6X\xd1\xcd\x8a\xfb\x13\x8e\xbb\x1d[ij\xeb\xc9\x9c\x82>}\x9b\x9a\xb6\xd5\xe3NX\xd9D\xb47\x8c\x05\x9e\x08#\xad\xa8\xab\x8d\xf4e\xb0\xc5\xfdh8*\x8dE\xdd\x93{ \x87\xc3\x8e\xdb\xe4e\xc5\xcd\x1e\xd2\xd1\xa1\xfbB\x9c\xe2\x15J\xb8\xb7\x14\xae\xca\x1b\xda\xc2\x816\xfb\xb2my\x9b]\x0d\xf4\x8e\x16\xc7\xde\xf6\xe2>{!\x9f\xa4p\x10\\N\xeb9\x1bI\xd8-{\xeaz[\x13|\xb4|\x10\xfa\x1d\x88\xc8*\x8bwh\xf0\x9d\xc5\xd7\xbb\xf8z\x17_\xef\xe2\xeb]|\xbd\x8b\xafw\xf1\xf5.\xbe\xde\xc5\xd7\xbb\xf8z\x17_/\x7f\x16_\xef\xe2\xeb]|\xbd\x8b\xafw\xf1\xf5.\xbe\xde\xc5\xd7\xbb\xf8z\x8dg\xfa\xea~.\xbe^\xdb\xcf\xeb:#\x81\xdeu\xb4\xda\xb0\x85V.\xdf\xee\x1a\xd6uw-\xec\x86\xcd\xa6\xa1-\xe3\x1d\x92+H\x7f\xa3\xa4\xc7v\x89\xf4R\xf62\xf5\x8c\xdby\xdcx*+\xae\x0e\xb7e+&\x85\xbf\xcf\xcb9\x8b\x7f\xfb|\xa6<\xf5\xf5;\xd1\x12\xff\xcf\xf8\xb4l\xde\xab\x07.\xb0\xe1\xf8gu*\x88\xb5\xe7\xf8j#\xef{\xfc\xb6\xfaWN_!\xd0_\xf0zr\x87\xbfy\xd0\xc8\x10\xb5I\xc5\x93\xd1\xb7+\x9eP\x91\x10\xc8\xea\xe7\x15O6o\xafx\x02\x05C`\x9e\xe7W<\xb9\xfc\xbf\xe2\x89\x15\x0f\x81\xa9\xbe`\xf1L\xf6\x08\xe3sw\x7f\xe0{\xc8[H\x04\xe6x\x87QjB8y\x0b\x8a\xc0LO1J\xf0x\xf0\x16\x16\x81\x89^c\x94P\xa0\xe0\x08\xcc\xf7'+\" ^e\xf4\xcbdO\xb3xf\xf8\x9b\xc53\xc3\xeb\xec;\xe8\x9e\xaef\xf3G\x8b'\xafWZ<\xd9|\xd3\xe2\x89{\xa8\xc5\x93\xcdO-\x1e\x7f\x01\x13\x98\xe9\xb3\xc6y\x05Z\xc8\x04R\xbd\xd9\xe2\x99\xea\xd3F\x89\xf9\xfc\xdc\xe2\x99\xe8\xed\x16\x0fZ\xdc\x04\xe2*E\xa0\xc8 $j\x1c\x13}\xe183\xf5\x16<\x81\x84\xde\xcc\xf3\x8e;\xe4\xb8\xb7\x1c-~\x02y<\xe5\xe2\x99\xe7/w\xc8q\x8d\x06U\x1ef\xfa\xce\xdd\x96\x90\x82(0\xd3\xa3.\x9eHm\x10\x08\x15G\x81\x14\x1f\xbbx\xd0\xaa\x05\xa3\xfc\xed\xe2\xf1\xd1A\xa0\xe0\xb3<\xf0\xe2I\x9f\x9c\x987^<\xb1Y\x88z\xe6\xc53\xc2?/\x1e\xa4\x0cE\xb0\xa0\nd\xf1\xd8\x8bg\xba\xdf^<\x81\x95\x9d\xe8\xc3\x17O\xa4\xc8\nD\n\xad@\xb4\xd8\n\x84\x17<\xd5\xc3/\x9e\x98\x9f_<N\xf1\x15\x98\xe7\xf3\x17O\x82\xe7_<\xe9\xfe\x7f\xf1D\xa3\x00\xe2\xf1M\xa2g[\xfb\xdf\x8fE\x07\xc43/F \x9e@\x97\x9d\xdfgE\x0d\x1cjN\xf1\x16\x98\x19Kp[@\n\xba\xc0\xdc\x08\x83\xdbe\xbb\xc8\x0bd\x8e;\x88\xc7_\xec\x05\xf0\x82/\x90-\x12!\x9el\xf1\x08\xf1\xe4\x8dJ\x88'-6!\x9eh\x84B<\x89q\n\xe3\xe5H1\x18\xc0O\x17x\x8a\x84\xc0\x08\x0fw\xac0\x0c\xa4G1\xe4\xcb\xf1X\x86x\x90\x01\xe5\x8ck\x88gVt\xc3\xa1\x86\x14\x8f\x81\xac1\x0f\xad\x99,\x91\x0f\xf1\xcc\xdd#\xd1(\x88$\x17-(\x03\x8e`\xc3\xe2\"\xe2 X\x9c\xfe|x\xdf\x85\x8d\xb3\xe3%\x065\xe9\xffG\xa3&\xe2\x19\x17;\x11\x8fa\x96\x8a\xb0\x07\xf7\xc4\xc1\xael\xb9\x83S\xfe&Z\xdc\xa8]$;\xa3d\xf2\x94kII\xa5\xff\xaa\xea\x96,\xd7\x92.\xd7\x92>\xe4\xb5\xa4h\\0\xbdv\x94\xf1yJ]\x1d\xad\xd1f F.\xc1\xc8%\x18\xb9\x04#\x9d\xa7[\x82\x91K0\x12}y F.\xc1H\xf7Y\x82\x91K0\x12\x96`\xa4Mh F:Oz\xbcm Fb\xaf,\xc1\xc8%\x18\xb9\x04#\xc5\xb3\x04#\xd5\xb3\x04#\x97`\xe4\x12\x8c\\\x82\x91\xbe\x97\x97`\xe4\x12\x8c\\\x82\x91\x0f\x1f\x8c\\\x8b\x08Z\xdf\x01Ae F.\xc1\xc8_R0\xb2\x99\x17\x8cl\xa6\x04#?\xcf(\xe4\x12%\\\xa2\x84K\x94p\x89\x12.Q\xc2%J\xb8D \x97(\xe1\x12%D\x9e%J\xb8D \x8dg\x89\x12\xcag\x89\x12.Q\xc2%J\xb8D a\x89\x12.Q\xc2%J\xb8D \xf5gn\x04h\x89\x12.Q\xc2\xd8\x1e\xf9%E !\x10C\x99w\x9d\x8fK\xcc\xa0\xe3N\xfd\x94\xab}\xdc\xbd\xe5\xbf\xeaG<\x89\x17\xfe\x88'\x14tK\xbe\xfcG<]\xfa\x15@H\xdb\xc6\xa8\xc2\xd1P\xb6\xfbU\\v}\xbfDE\x97\xa8\xa8\xf6\xfb/-*\x9a\x16\x0e\x95\x81\xd0S\xf3\x90\xbc;\x7f)\xe99\xf1\xd05\xa9>\xf5\xe1\xd0W\xb4\xaa\xf7oo+\x85{t\xb6\xb1\xbb\x85eR\x84\x1d\x06\xb5\x16\xc9<\xc1\xe2\x93\xfePuCn\x85\x90\xb2\xf5m\xc5N\xf5\x814]Y0\x05\x116\xacc\xf2\xd8\xa9M\xb2&;f\"\xdb-'\x1d:N/is\x91=[\xe0\x84W\xfd\xe7\xefe]j\x1c\x04\xba\xfa\x13\xad\xa4\xaej\x0c\x8c\xcb\x10R\xc9&\x0d\x9b\xf5\xcd\xdb\x8b\xd7/\xb8\x86-\xfe(\xd5\xd8\x92s\xa43&\x8a\xb8\x02\xd1\xfbm\x0d-B\xac\xb9F\xad-\xaf*\xd2\x1d\x1b\xdaBC\x7f:\x96\x8d\xb0\xaa\xae\xea\xab\x9a\xcb\xec\x95\xbb!\xfb\x01\x0d[\xa4\x1fR\xdb5\xc7\x82\x91\x1b\xd4#\xae\x04U@\n~<\xb4U\xad\x1b\xa9\xe5(\x15 [d\xce\x8e>\xd1\x8a\xf3\x12C9W\x04\xd5v\xe13&~3w\xc5`2\xd84\xd5\xb4\xbe/\xd9\xe6\x91\xc7\xe0Y\xbb\xf9\x04\xbf^\xfd\xf6\xf7\xa1\x83\xf1\xa1*\xbb\xe4sa\xed\xb0\xf8\x96\xe1\x1f\x0c3(\xc6+\x95|= \xcc\xc4l%\xdf>Ve\xc7\xc3\xb1p$]\xbd\x7f\xaa\x8e\x06\xbd;\xd4\x15\xd5\xb7\xadh\xbf\xac:zE\x9b\xfeW\xc57M\xb6\xe9\xf7r+\xbaz7\x0f\xf5\xad`\x9c_\xfez\xf8\xbbX\xf0\x8a\x8a\xb0\xb8F\xa1!\xa5\xb4\x81\xd7\xa4\xa5\x97b\x18\\\xfd\x80\xba\xd90\xd3\xb7\x06\xca\x0ccm\xac\xfd\xe4?n\xc5\xb8u\x82_\xca\xa9\xf8\x1a\xbe\xfc\xf5\xff\xdb\xb7?\x10\xd7\xdf\xe5\x81ku\xf2\xb4\xf6\xeb\xad\x98\xbf!*[4\x94iBdh\x9b\xbd\xf4\x98\xbd\xf4X#hGx\xfa\xf6\xbf\x86\xdf3\x8b\xe1\xd8\xbe\x80/\x81}%\xfa\xf7{k\x9d\xc8\xae$-\x9d\x96Cb\xed%)\xe7$ES-\x92\xbbH\xfdM\x89\nm'\xc5\x0e<\x9f\x01m\xd1\x89<\xf4v\x00\x82\x08\xa2\xfa\x19P\xcc\xed('Q\xae}Y\xa8\xf3\x88\x9f\xb8\x1fiG6\xa4##\x0e\xdc\xd0\xfb\xd0\xb1\xe3\x9d\xbad\xbd\x996\xef\xc9\xb9;\x88\x8c \xda&\xb1\xe0\xd2,\x06\xe1P37\xa2x\\\xb6!\x1e\x9cy\x88\x07g!\xe2\x89\x8dh>;\x11\xcfL\xa6\x82\xcf\xb4\xdb\xcc\x18V#\x9e\x99\x0c\xc7\xa1'\x18\x90'\xb0<\x96\xf9\x88\xc7aA\xe2\xc1\x0e\x84x\x9cc\xa1\x7f\x80n\xec\x0c\xacI<!\x13g\x06\x9bR\xc4\xd3\x98\x951&\x8d\x99\xd8'S\x8dP\x97^lx\xb2m(\xea\xdefg;c\x8c\xaa`\x1c%\xf6\xb1\xdd6\xffMl\xb5'C\xd2\x17\xfb\xcb0M\xca\xe4\xe6{F\xa3\xf75\xfc\xba\xdf\"\x9b\xb2=\xec\xc8\xfd\x98\xbe\x19\xcb\"\xbf\x87\xb2\xda\x94\x05\xe9\xa4\xae\xdf\x1e\xaf\xaeh\xcb42yR\xd9\xe2\xf4\xddt?\x17 \xd3\xc5\x8e\x19\x98\xbd\x89\xc88\xde\x98~=F\xf5\xbd\xdf<\xb6W\xf41g\xa5\xbaibd\xe3q\xdd\xfd \xbdz\x01/9!8eGJQi\xef\xf7\xebz7\xa6[\xc6R\x8a\xcf\x95}'\xda\x92\xbf\xa9,\xb9\xf6\xba\xbe\xad\x80\xa7\xaa\xab\x84\x1c\xde\x9b\xd3\x8b\xb7?>\x15)\x8f\x1a\xc1\xc2t\x86\xcb=\xd0\xf2@\x83hDN\xb1\xe9\xe6\xc7\xa7J\xbepl\xca\xc9\x03\xfc\xf0\xee\x8cg0\xc1\xa6.\x8e<\x91\xf2I\xcdx4\xd4\xdb\xed\xb3\xe2\x9a\x94\xd5S\xb1\x1b\x86\x14\x8a\xdes\xaf\x91)+!u\x981\x08oe\x02]\xc2\x10~?\x0c\xe1\xf2\x9a\xb4\xd7s\xc6\xf1=i\xaf\x05+k\xaf\xc9W\xbf\xfb=0\x82<\xd61\x0c\xeeP\x97*+\xff\xc3\xbb3f\xcd<\x96\x00\x00\xc3\xb5rC\x9br{\xcf\x07\xae\x0f\x81/\x8f\"\xb5)7\xd5\xe3N\xe6KM\x184~F\x95\x92\x95\xc03\xe5\x17$Ew;'\x0dQ2\"Aski\xb5\xb9\xa4\x15Y\xef\xe8\xe6sR\xc9\x9c.\xe9\xef\xaf\xebzG\x89.BB\xda\xce{Zm^\x0br\"G\xb3\x10>\x01\xa9\xa8\x10c\x0e\xa0\xedHwl\xe1\xc9\xed5\xe5\x8e^\xe2\x0e\x02\xca\xd6\xd4\x00\x18\x01\xf6\xf5S\x8f\xdb\xd4\xe8\xd0+\xb6\xdc\x8c!o^\xc0\x87\x96s7\xbd\x87e\xc5\xccr\xb2\xe7\xb2z\xd3\xbfkx$\xbe\xad\x1b\x85a9\xe9\xe3\x9a\x15\xbd\xdd\xdd\xb33\xcb\x06\xa1\x8fH\xba+\xa4\xd3[|\xa6\x11\x13\x0bh\xd0\x7f\xdf\xd5\x0d\x0f\xea\x89tF\x91\x8c\xb7'Uy8\xee\xb4\xa0`\xd9\xea\xdc@\xa4\xea\xdd\xba9\x80\x9f(=p@\x8e\xf6\xdb)\xcf-2\x0f\xcb\xbf\x9c\x08\x9a<ZK\xef\xca\xb6\x13B{M\x8aO\xb7\xa4\xd9\xb4V\x0e\xa5\xa1\xa3\xc9q\xc1\xb6\xdc\xd1^N\xc9\x88\xf4eh\x93\xeb{\xc9X4q\x90\x0ci\xc4\x17\x86v\xb4\x19\x94%v\xf6`_o\x8e;\xea;\x91\xdc+x\xba\xdb}#\xbc#\xe3\xc1\x0e\xd2\xad\xf2Y\x99L\x98k\xce\xfbzHw\xcc\xe0\xa0\xcb\xed\xa2Ku\xd29CS\x0b\xa5\xb4\x88\xfe\xdfL4\xed\x84\x05\xc4\x98O;'\x0c\"6b\xff\xb3<\xd7K\x18d \x83<d\x18\x04\xe1_I\xb1\x90\xe13I\xed\xdd\xf9K\xd5\xc9p<\x84\x13\x90\x1fOe\x996\xc7L:\x0d\x08#\xf4\xac\xfa\x12\x9f@v\x8a\xb5d)\xbbD~\x92\x1c*\xe3_qkZ)\xd1\xdf\xdc\xf3\xdf\xde\xf3i\x1f\xbd[\xf6\x86\xbf\x13\xfd\x08\xff\xd0\x9e\x8a\xf8N\xf0\xf8@\xc1#\xd4\xc1\xe7\xf4\xf1\x08w\x88\xe0\x0fQ!\x0f!\xbe\xa6\xbe\x0b{\x13\x01\xa6\xfbHQbH`ex|\xbeR\xe8\x07\x82\xfbK!\xe23\x85\xc4\x91\xe6\xf2\x9d\xc24\xff)J'\x18\xa8\x19\x9e\xf1~T\x98\xe9KE \xf6\x01\x9d\x00Pg\x9aO\x15\xfc~U\x08\x1c2\xf1x\xfc\xab\x10? \xd9\xfc\xac\x10\xd5\xa32\xf8[\x01\xc6\xfa\\\x012\xfb]\xc1\xf1\xbdBh\x96\xc3\xc7r\x8e\x1f\xd6\"\xa5\xed\xba_\x1b[\xcb\xf1\xc7Br\x7f\x9d%\x9c\xe9\x9b\xd5H\xa0\xfeYp|\xb4\x90\xdc\xd7\xa8\xaf\x16 \x8f\xbf\x16\x10\x9f-$w\xd3\xd9\x02\xb3\xfd\xb7\x16=\x0e`/\xdc\x84\xe6T?.\xc4|\xb9`\xfbsa\xfa\xe03\xf9v!\xcd\xbf\x0b1\x1f/\xa0~^\x985\xbeY>_\x8b\\W\xfb\xfc\xbe\x00S|\xbf\x10\x9f\x10??\x18\xef\x07\x06\xcc\x17\x1c\xd4\xc9\xe3\xbarz\x9d\x0f\x83\x16b\xce\xc1\x19/1Q\x90\x9dP\x18\xdc\x0e\xf4m\xae\x8fL\x82\x15\x94'\xaf\n\x9e\xd7\xc3\xe3\x85\xa1/EgYqc\x84\x19\xbb\xc9&\xc1b\x05,V\xc0b\x05,V\xc0b\x05,V\xc0b\x05\xf4OZ_\x17+@<\x8b\x15\xb0X\x01\xff\x98V@~\xc5?\xaa\x99s\xe4B+\xcd\x8f\xd1\xea\xb9\x1085\xa7a\xab\xe8y#\xe1\x0e\xacF\xa7\x82\xca~c\xd23Al\xc4\xe3\x04\xb2\xf4\xbe\xfcL\x8a?\x1e\xeb\x8f|\x16\xd3\xa0'\x07\xbe\x1cJs\xe2_\x0e1\x19\x0fs~O\x0b\x8b\x89'4\xf4\xd9\x10\x1e\x83\x9a\x82\xf3\x18?\xceF\xf5\x98\x87A\"|\xb0] \x01\xa0\x8f\xf1~\x90-.I\x10K\x12\xc4/# \xc2/\xc5\x8c\x8d\xf9\xee\xfc\xe5 N\x99n\"i\xb8\x9f\xf3WE\xed\xe9\xfe\xc4`g\xe5w\xbf^\xfd&Q\xbc.ru\x91\xab\x8b\\]\xe4\xea\"W\x17\xb9\xfa\x0b\x94\xabi\x02U\x17\xa5Z\xd6X\x82$\xf5\xa2\xcc\x87\x8e\xb4\xb3#H\x0f,G\xbd\xb1\xa6\xa0g\xc5\x13o\n9\xc3\x83pCTH\x86\xc5d@PFD%$H>\xf5V\xc6\xf8S$\x02\x15\x8eA\xa9!\xf9\xa3P\xf18T\xea\xa8s\xc6\xa2\xf2E\xa3\x92\xe3QS#RSbR\xb1\x9e&E\xa5\xe6\xc4\xa5\x82\x91\xa9\xd0q\x14O :\x95p\x88\xb2F\xa8bB\x19rE\xa9\xa6\xc4\xa9\x1e R\x85\xc5\xaaf)\xeb\x19#V\x81\x98\x95'j\x95\xdesda3\xc4\xae\xe2\xd1+,~\x95\xde\xeb\xa4\x18V\xbe(\x16\x1e\xc7J\xef.\xb2=\xa6G\xb3\x1cR\x1aF\x19\x8bg\x8d\x8bh%\xc4\xb4\x90\xa8\xd6\xac\xa9\xc8\x18\xdbJ\x8enE\xc39\xe0\x8dp\xcd\x1dk\xce8W,\xd255\xd6\x950=!.2-\xe2\x85\xc6\xbc\x9c\xa6\x8cIUZ9\xf4\xa5\xf5\xb9\x9f\x82\xb3\x1b\x03\xc0\xca9\xbf\x84\xe95\xf4\xaal;\xda\x18\xb3\xc9\x9b\\\xc0{\x8b}\xfdK\xb4\xaf\x1d\xb3vd\xe4\xb7\x9d\x18\xfa\x158\xea\xd1\xb6\xf4A\xabc\xe0\x0cO\"\xe4\x8d\x03\xad\x81\xb3{\xd5\xd0\xc0f\x8bg\xc4\xc9\xc2a\xe3\x10\xd0\xd1\xff\xfeI\x9a\x9e\xba \xc3wn\xed\x04H\x10I9k(@o\xa5\xdbu\x14\x00\xaf\xa5\x00\xd1\x0ef\xa8\xa9\x00\xb9\xeb*\x00^[\x01\xe6\xd7W\xb0\xf7\x17g\xc7n\x8d\x05\x98Zg\xc1\xa2aW]\xc0k-\x00_\xa4P\xbd\x05@\xf7`\x80m\x99\x9c\xc3\x90\xa1.\xcf\xe2\xb2\x85\x99\xafw\xcf\xd9\xb9\xd7\xb9\x08g\nA\x1e\xa5m\x96\xd1\x8cj\xa9\xa02\xea\xf4\xe3'\xdf9\xf5Q\xe5\xca\xd0P\xc6kZ\xc2\x12\xea#Z\xec,\xe8\xf4j~\x12\x19\xeb\xd0\"1\xady\xe4%\"\x81}\xce\xf5\x94I2f\xd1\xde\x16\xed\x0d\xbc\xeb\xe7cN\x91\xe8\xc8\xf0E\x1f\x12\x11\xf4P\x83\xed_\x82\x9c\xf1 O\xa6\xc4\xe8\x7f#\x94\xc9\xd1\\r)\xc8\x90\x168\x7f\x80\x82\x0c\x91%4\xf6\xd2\x95\xb1\x99\xfa\x08\xba$\xb7\xad\xfb\xebbzq;\x84\xd3\x1f\xb7\xd0\xaa\xa6\xfaH\xb6\xf0\xa6\xf6\x97\x18\xf2\x19\x8cD\xe8F\xed\xc7\xf1\x86\xc5RM\xe9\x17ZM\xc9\xd9\\K]%\xfe,\xc2\xdd\xee\xc3g-\xdc\xc3\xcc\x197w<l\x993dAL\xf1c\xd5\xd10[n\xe7$I\xbc?\x1e\x0e\xbb\xfb\xb7\xdb\xd1\x9c\xd7\xe6r#N\xd2\xa2\x02\xc4\x19hh\x97YK\x16t\xfdI\xa7\x9f\xfaf\\U\xa6\x0bvZ\xc4\xa7\xa3\xf7G\xcb?[\xe4\xf2\xe7'\x97%\xa7\x15\x0b\xd4\xcbc\xf1/\xe9l\xe5\xf2W~\x10\x15\xbf3\x8dw}Z\"\x91\xc8\x11<f\x91\xd6\x8b\xb4\x06\xa4\xa3>\xbe\x96\xc2D\xb5\xcf$5'x\xe2\xe1\xa6\x9a\xd5\x9f\xcc@-\xe6\x86\xac\xd2\xd8\"\xb8\xfd\xf6\x9d\xe9\x02\x1c\xdc~\x82\x9c\xe1\xef\x93\xc3\xdf\x94\xac\xab\xeb#kY\xbb\xfcgG\xaf8\x17\x90\xffW7\xef\xe8-i\xd2'E^\xadW7\x97)\xd7e5\x1aq\xf8\xc7\x92A\xafh1N\x0c\xc1\x86\x16\xe5\x9e\xec&H\xa3W\xb4x\x18i\x84\x0f\xd0\xbbK\xec\xe4\xaaaI\xe4\x97\"\xa5B}\xc4\xb3\x14\x15)\xb9\x17b;td\xc1\xf5\xa2\xde\xef\x8fU\xd9\xdd_v\xe4.\xb8\x15y6##P\xb7\xb4\xb9\xc47fH\xa758\xad\x1e!\xbbP\x89\x9d\x16\xf1a\x05\x87\x18\x19\xdf <\xf2\xa4\x11\xdb\xd5\xd5\x15mD\xae\x89\xf6\xb3\x14\xd3w\xcf\xf5y\x92\x01\xd8\xc7\xad\x9cN\xd8\xd3\xe2\x9aTe\xbbW2f]W\xc7\xf6\xe1\x06\x8aQ\xff;\x8d\x94\x9d\xb4MCn9'\xcaQ\x90\xbc\xa5<}Q\x067\x95\xe8A:\x15\xdb\xc4\\Z\xbdT[\xf3\xbc\xaew\xa3\xb5\xf7C\xed\xde\xbe\xb1\xf0\xcd\xcf\x85o:\x83d\xcb\xd5\x0f\xa9gJ\xfc\xe7\xc7\xad\xeeM\x0b\x98\x95\xe8\x86IO+1>W\x93\xf4\xee\xfc\xa5kg\xfa\xf7\xec\xc0\xf9\x05\xc3\x1f\xef\x0f\x16\x87\xf5\x1f\xd3\x1d\xfc\x8f\xb9u\xe5\x8aY \x01\xe27R\x14\xcdQ\x90!\x9a,\x0f)\x0f\xe1}\x94\xbe\x9d\x1d\x12\xd3\xf727\x1b>\xeb\x0d\x1d\xd0\xaauz\xc8\xe6\xb6\xe5\xbb\xfe\xfa\xe7\x0eB\xf2#v#\x9f\xc6\xf2\xabf\x1cUo7\xb1\x8c\xddyg\x18!\xe7\xc3\xf5\x8e9\xdc1\x1e6U\xb7\x17O\x9a\x86\x8f\xf4\xc3f3Cj\xb0\x9f\xd5\xd4\xfd\x0d\xe7\x96\xd7\xe4!\xce\xe0\"T2\n\x15\xe1}2\x94\xeb\xe3^\x0f0\xcae\x1f!I0.>E\x9c\xe8t&\xca\x94\xba\xf9\xa3b\xd8\xe3\x05J\xcf\xeb\xa7\xc9\x94\x90\xe96\x906\xa6^\xfbY;Z\xc2^\x13\xb3R]\xb1IK]\x0cl\xf8\xa3WB'2y\x19\xfe$M\xc0S!5G\xaf\x85aB\xc6\x9cY\xd6\xd4\xd8\xdf\x1aS>\xccr_S\xa3\x96~\xe6Q\x13\xed\x19\xe0\x84\xd9\xb6(\x8d\x9d\xf2\x07\xcc;7\xc3\x14v\xda\xf9\x8c\x8cs\x8fs\x08\xfc\x8c:\xec$\n|\x18\xd3I\xb2:\x8c\xc0\xefJ\x81\xe9\xee\x14\x88;\x8f \xe3\x04\x8ct$Y\xe4\xaa\xfa\x81f \xe2T\x82~\x06\xbc\x8e%,\xd9:!\xb6!\xfdQ#\x8fe\xcfC\x99\xf5_\xb6-7\x97F\x9e\xd1\xa2\xff\xd4sN\x87\x17\x8c\xb3\xaa\xfdlH\x19U\x84|3\xf9\xd0\xda\xbd\x81\x80I\xf3\xf7\x07\x89<H\xe1\xa1\xc9j\xa1\xa7{\xa3K\x12\x8d5^\xe6\x95$\x92QBS\n\x066w\xba\x00D\x88h\x87l\xd4\x19{\xa5\xbdrVm\xeb\xd1'\x8d\xfd;9vf\xed\x11\xfb[\\\xc3\xeb_Sz\x87:\x83-\xddm/\xd7u\xb5\xb9\xfcY\x1c\x1a\x8b1\x95\xd1\x98r\xd6\xce\x8aZ\xec\xb6\x9a\x15\xde\x9a\xa6\x15\xceP\x97%\xff\xcc\x97|\x9e\xc8\x0d\x04\x19\xa2\xccl\x02g\xb5IMVb\xde\x1e\xbb\xb6#\xd5\x86\xdf\xa4\x92\xd5]\x9b\xa4z8\xdf\xc2\xa2w$\x1f'O\xf7>s\xbd\x03\x82S\x12\xd8\x98\xba\xbb\xb4\x1e\xfe\nO\x8e\xd53eCTO\xdd\xcd\xa5wT\xa09\x86C\\V\xf4\xee@\xab\xb6\xbc\xa1\xd0\xd5\xd05\xa4\xf8t\x02d\xb7\xabo[h\xf9t@Kx`\xb1\xb8\xa6\xc5\xa7\xb8\xf7,\xe1dM8\xef\xc8lL=\xf1\xefw\xa4\xbd\x9e\x00;i\xc5w\x0f+\xd1\x86\xa8\xcc\x816e\xed\x89\xb2\xa0\xc7,\x90\xb9\xb7mH\xd19\xe6\xcd$\xd9gN\xe3\xeb\x1b\xabd\x99\xbe\xb7\xf8\x84\x01e\xaf\xac\x0c\x1a\xdf\xd3\xf2\xea\x9a\xc3.\xd9\x06+\x0bY\x0fI\x9a\xd0mW7<\xab\xd2\xfc\x88\xc3=\xcb\x16*J7\"\xc9\xb2 \xbb\x82\x83<\x81\x1c\xd8|6%\xff\x7fq\xbey5,\xf2\x89\x9d\x0fQ\xf4\xc3\x9c\x90\xba1\xf4\x17q\xfaIC{c\xbc\x02\xb2\xedx\xe2\x9b\x18\xc65i\xa1.\x8ac\xd3P_\xb8An\x10SS\x92\xbf\x85\xad\xd5h\xba\xed\x84\x0c[Eg\x840Z\xf2g\x97\xfcYH\xe4\xee\x16\x17\x9d\xc0\xd2%\x85\x11|\xbc\xff\xf4\xb4(\x8e{\x81\xef~i\x99\x1a \x8c|\xb1N>\x7f\xeb\x04\x1f`x\x03\x18rhxA[oI\xc6V\x82>\xd1C\x07\x84\xcdTs\xac*&2\xf8Q\xa2\xcd \xaf;\xb96\xa4B\x07\xa4\xba\x87\xae\xdcGS\xf2\x02\xcaK\xf2^]<'\xbf\xec\x8d:U\x8b\xefuwA/\x8b\xda\x9e\xb4W\x07\xb5.y\x8f\xfauVtS\xa0\x12\xd2\xd5P\x9do#3=I\x1f\x1d\xa9\x89f\xd2A\xe7k\x9fr)\xb7\x94^5\xa4\xea\xfae\xfc\x8e\xfd+y\xe1\xf8\xb7\xb4\x89\xac\x97\xdfV\x95\xdf+\xd9\xaf\xbc\xc42\x8azli#^QU\x06\xd8\xf6\xd4\xaa\xe3\x97zE\xe5\xed\xb1\x1a\xfc\x87\x82\xb0Skbd\xc7h\xa8ck\xcaz%^\xdc\xd8\xbd\xd3H\x91\x8a\xebF\xfc\xa3\xc7\xad\xd9\xcd\xfe\x13\x8f\xd6>\x90\x94b\x84I\x8ez+\xca\x1f\x9e\x808-\xec\xff\xf8\x8bt\x03[J\x87\x8f&\xa9\xf0\xec\xd5\xcbc\x93\xaa\xad\x86]3\xa7\xf0\xe1\xdd\x0f\xcf\x1b\xda\xd6\xc7\xa6\x90\xe5Ty]\xc7cU\xfet\xa4\xbb{(\xf9M\xc1\xdbR\xda#\\\xe9\x13\xb3l\x91jiS\x92]\xf9W7p\xcayiQ\xef`}\xdcni\x03{\xda\xb6\xe4J\xd5\xf7\x11}\xe6\xb5\xaeUaP&\x82w\x94\xb8\xc5\xaf\xeb\x8a\xc2\xa3\xe7\x8f\xa0\xb8&\x8c\x9b\xd0f\xc5\xa5\xc1\x8e\xb4\x1d\xb4\xf4\x8a\xd7\xc6\x94[\xe0\xc3\xbb\x1f\x1e\xb7p \xdd\xb5(\xa3m\x12\xea\xf9\x87\xdd\x02\xfbt{\xdc\xed\xee\xe1\xa7#\xd9\xb1qo\xcc\"\xb3l\xfcOH\x0b\xa5S\x9f\xf5#k\xec\xf9U]_\xed\xe8\x8a\x8fy}\xdc\xae^\x1d\x1b\xce\x03>>\x15}\xe5\xc4\x86\x9a\xc1l\xb0\x16\x9d\x82Tu\xc5\xefff|\xd4n\x85\x17\xd3>a\xd3\xc3e\xca\xa3\xd5#\x11\xc9\xef\x98BD\x0f\x1d\xdd<u\xbdcg\x15\x1c8\xfb-\xe8 t\x94\xec\xdb\xbe8\xed\xa1\xa1E\xbd?\x94\xcc\xf4\xa8\x98\xa0\xb9\xa6\xb0.+\xd2\xdc\x8b\xac\xaa\xfb\x03\xb5\xc3\xe4|\x83t\xd7\xf4\xden\x86I\xac\xa2\x83\xb2c|\xf3\xd8Re\xb2\xb2ee6\\\xbd\x85\xd3\xea~\x05\xdf\xd7\xb7\xf4\x86\xe9^\x8cM~x\xf7\x83\xe4\x8f\x165Y\xdc\xcdn\xa4-\xae\xe9\x9e\xc2\xc7\xeb\xae;|<\x11\xffm?\x9e@\xdd0\x03O\xfcu\xa8(^\xf3\x9d/\xca\xf0\xd2\x0e\x8e\x07g\xba\xd9\x08\x9d6hsC\x1b1P\x8e\xa4\xe3\xcb\xce{\xda\xd5j\xff\n\xad\xa6\x14\x0c\x9e\xb4\xb0\xad\xb9p~\xe1\xcc\xfe\xaf\xe0l;\xf4\x8d-\x97,\x8a\xb8\xe9\xbb\xcfu\x98\xb6=\xee\x91\x8aw\xbf\x82\xd3\n\xbe\xbf\xb88\x87\xef^_\x80t\xd2\x7fx\xf7\x8382\xf7\\\x05\"\xf0g{\xe3]\xdc\x1f\xe8_\xfe\xfc\x17\x8b\x18(\xdb\xb0R\xab,\x845\x9f\xbfCSo\x8e\x05cb@\x9bf\xc8\x93\xd4zr`2T\n5&\xce\x14_\xe3\x82\xb2`g\x91\x97\xcb\xeb\x0d\xdb5a\xf6\xbe\xe8\xb4\xd3\x95\x0f\xef~\xe0\xed^\x93\x1b\xbe\xd4{m7n\xc4v$\xaa\x9b\xec\xffo\xea\x921r\xb7\xe6\xbah\x94\x1f\xb0\x86n\xeb\x86\x9e\xa8\xcf\xcc\xc2xL\xaa\xb7\xca\x15\xc1\x18@s\x83\x94\xe2\xad+Pu\x9a\xd9\x81`'`\x05O>\xb4\x14nh\xc3\x8c\x0c6^\xb6!\xd8Y\x16;\x82T\xe4\xca\x1d\xdf\xba\xa1B7\x90\xe4VO\xed\xb5}Sw\xf4\x85(\xf5\xb7=V\x85\xd8\xab\xac\xa7\xf2Ls}\xa0\xeav\xf7\xba\x87\x00\x9b\xcc\x9a;E\\\xb7\x80\xda\x0e\xd0P\xc6Q\xa9\xa8cXv\xaa\x81#[\x1en\xc4\xf7;|M\xafJa#a\xb5\xf5\xd9{+\xb1\xd7\xc8\xa1lW\x85^+H=\xef\xf9No\x85\xd3\x81\x1d\xa3\xca>\xaf\xf0D\xe6\xa9\x08\xaf\x8d8\x1aOa\xcf\x95\xb5\xb5s y7\xb9\xd5\xd0+\xf7\xc2j\xe8\xab\x16\xb5t\xcf\xf4\x90\xc2p\xeb\xf0\xbd\x9e((\xd3|]\x8e\x04\xfd\x91\x1dB&\xf8\x85\x1a\xaa\x89AG\xeeI\x11B\xd6\xf5\x0dU\x1dwo<e\xf3\xcb\x7f\x93\xce$\xae\xf0\x01\x17\x94uC\xfb\xcav\xff\xfe\xc7\xf7\\w\xedj`g\xa6a<\x80\xeb:b\x9a\x98\x0cS|7\xa0Mr\x87\xcd\xa9\xd2GF;\xcc\xd3\xd5#^'{\xf8\xa7\xd2\xca\xd8\xceS\xaa\x1c\xb3\xbc\x84\xba9I/rT]\x98\xae\x16\xe5T{\xc1V}\x01S\x7fang\xb3\xa8\xc2\x10Q\x87\x01_sx(\xb5\x18\xfc\x9e\x8eP\xec\x13W\x91!4\xc5\x10\x9df\xc8\xab.CPe\x86\xacj3\xe4T\x9d!\xa4>\xc3<\x15\x1a2\xaa\xd1\x10U\xa5a\xaa:\x0dsTjl\xc6\x98\x8a\xe1W\xaba\x8ej\x8d\xd0\x12\xce\x08\x8fz\x0d3Ul\x84\x1cS\xbaQ5\x1b\xb2\xab\xda0_\xdd\x86\xfc*7\xccS\xbba\x9e\xea\x8d\x1fQ\xb4\x93\xd9\x14r\xc8\xae\x94CN\xc5\x1c\x92\x94s\xc8\xa9\xa0C@I\x87\x99\x8a:v\xc6=\xd7b%\xa9\xef0[\x85G\x08\xbaJ=LW\xec\x01W\xee!&\xe2\xbdJ>$\xc9\xff\x89\xca>\xc6\xf6\x94\xfa\xaf)\xfc\x90Y\xe9\x0f\xa6\xec9J\x7f0\xbe+#\xbb\xfdG\xa1\x82s\x11#\xa3\xfd\xe6\xfe;\xa1^O77\x1e8Z\x86\x9a\x12\xc1\x9d\x15\xdb:3\x0c\nw\x833\x03\xc3\xd5\xcb=FE\x86ng3-\xe2\xc6\x85\xd7\xbcx@\x03#`b\x84\x13,\xfdfF\x84\x0b\xc5'\x1e\xf2\x1b\x1b1s#\xb7\xc1\x91\xd9\xe4\x88\x18\x1d\xb3\xcd\x8e\xbc\x86G\x8a\xe91\xc3\xf8\xc8k~$\x19 yM\x90\x04#$\xbb\x19\x121D\xa6\x99\"(\xa1\xa0y\x92\xc5@I4Q\xd0/G\x99-\xb3\x0d\x97\xdc\xa6\x8b\xdfx\xc9l\xbe<\x84\x01\x93\xd9\x84I5b2\x9b1aC&\xbb)\xe37fF\x983\xd3\x0d\x1a\x94\x98/N!\x9e\x19F\x8d\xd7\xac\x89\xaa\x14A\xd3&M\xe3\xc8g\xde\xf8\x0d\x9c\xdc&\x0exUC)\xd083XSZA\xd9\xb6\xb2\x16\x0ck\xc8\x8a5LI\xd0&\x95\xfe\xab2\x95\x96\x04\xed%A;o\x82\xb6\xc7rw-\xe9\xa0\x0d\xaf\xd3x\x8e\x101\xd2\xb4U\xefcW\x0f\xc4\x8c\xfd\xc5\xc6_l\xfc\xc5\xc6_l\xfc\xc5\xc6_l|\xec\x95\xc5\xc6_l|\xe4Yl\xfc\xe1Yl\xfc\xc5\xc6\x97\xcfb\xe3;6~\xcfj\xd8?\x1f\xb7\x89\x99\x85\x8b\xb5\xbfX\xfb\xbf4k?\xc9\xc8w\xcc\xfbP\xa4\x9e2\x85\x84\xd9J\xb6\xf1\xfeZ\xfea\xb4\xf5\xae(>\xac\xed\xee3\xcafX\xc1Y\x0d\xb1\x90\x11\x96\xd3\x00\xcbh|\x05\x0c\xafYFW>\x83+flM4\xb4&\x1bYB\xb1Cf\xcbk`M6\xaePx\x94\x17 5\xcf\xa8\x82\xe3\xc1\xa1\xe73\xa8\xa6\x18S!\xc3i\xb6\xd1\x94d0\x8d1\x8ef\x19F3\x8c\"\x8fV\x9e\xd1\xf8\xc9m\xf8d4zR\x0c\x9e\x8c\xc6\x8e\xdf\xd0\xc9j\xe4\xe0\x06N\xa2q3\xd5\xb0\xf1dcbF\xcdd\x83\x065f\x02\xa28`\xc4\xc4\xa4t.\xe3\xc5o\xb8\x84z\xf0\xf1\xb4\xba\xff\xa8\xc42\xb7\x07H\xb3.\xbb\x86\x1d\x9a@O\x14\x1f$\xbb\xda\x9a\x0bQ\x06\xc3\\\n\xc6\xad8C\x15=Y\xbb\xea\x86\xde\x96\xd2\x1e\xac-s\xae6\xee\xae\\\xf3\xeeI>\xda\xf2\x0ba\xeb\x86K\xa0\x03)>=?V\xec?L\xee\x88ul\xb1S\xe2\n\xdcz\x0b\xc7N0\x08u\xfcZ\x10\xf5aKq\x16\xe1\x8aV\xb4\xe1\xd5Y\x84\xde\xd9\x87\x14N-~$\x96\xc0\xa4\xff\xfa\x8e\xf0\n\x17_\xbe\x80s\xd6?v\xeedWI?\xa1e\x05/\xff\xf9\x9f\x111\xf0m]\xc3\xb6\xae\xe1kX\xadV\xff\xea\xfc\x99\x0d\x96T\xf7\xee\x1fHu\xbfb\xcd}\xdb\xd4\xfb'\xdb\xba~\xea\xbe\xb2Z\xb9|\xbe\xdc\xc2\x13\xf6\xe9\x07\xde\xc1\x8b\xfa\xc9?\xb1o\x9f\xc2\x7f!\xbc\x0d\xfb\xfeo\xf8\xd8\xbf\x8a\x8c\xfd\xdf\xc8\x0d\x99<x\xf8\x9a\xeb\x1a\x8c\xea\x84\x91\x96\xed\x93o\xebzU\xecH\xdbz\x06*\xba\xc0^\x16}\xd7>p\xdb\xfa\x9b\xf3\xcb\xf3\xe7l;\x85\xfb\xf0\x9e\xec)\x13\xdd\xa7\xa27W\xb4{E\xb7\xe4\xb8\xeb\xce\xaa\xb6c\xc6\xcf\x93\xa7c:\x87~\x8f\xf5\x15]\xad\xdfDV\xeb\xfc\xbe\xbb\xae+d\xbdD_\xbe\xad\xeb'\xab\xd5\xca\xf5D\xf5k\xf5\x04\xfd\x1b\xdf\xaf|\x05S\x17\x90}t&f\xec\xd5\xeb\xf7/\xdf\x9d\x9d_\xbc}\xf7\x14sF\x0d{\x1ao@4\x81\xce\xc6o#\xb3\xf1]\x8dx\xd5\xd8L\xbc\xf8\x1a\xfe\xe9\xb0^}[\xd7\xff\xb5Z\xad\xdc}\xc1:u\xc2\x14.\xf6&\xa9\xee\x0f\xeb\xd5\x1bz\xeb\xe9_\xb9\xe5o\xfe\xaf\xaf\xa1*w\xe8F@' \xd9\x8e\xf8{V\x87\x91\xcfd\x0fD_W\x1f\xaa=i\xdak\xb2\xbb\xa8\xc5\xa1\x9b\xda=\xe3\xb7\x0b^&\xb0\xf8\xd4\xf3Y\xa54\xc3\xfa~Pa\x94$\x10\xee\x99{\xa6\x95\xb3\xad\xce\xc4\xbeI\xee1\xa2\x92<g\xf6\xdf\x8a\xff\x81\xa9o\x8f\x99\x1e\xdfK%&\xb1\xd8:\xf3p1_k\x93`\xcf\xfe\xab\xdd\xbd\xb2Y\x1c\x83\xb2W\x0deY\x9cN\xd9\xb1\x8f\x9f?6\xc9I\xa3I5-\xac$*\xf7\xdd\xa3m]\xaf\xd6\xa4\xe1\x9d\xbe{~\xbf\xfa\xeb#1b\xa1\xfb\xbbf\x0co\xf2\x11{\xcf\x16A\xff\xf6\xfe\xed\x9b/\xdc\x99f?\x0f\xd6\xb2\xd0\x90jv\xaa\xa4z ,\x86c\xdb\xdfywu\xdc\x91\xc6\xa4\xe3~\xde\xf1\xdb]\x06\xc1~\x02t\xbf\xa6\x9b\xcd \xe2O\xa4\xb6`\xd9\xd8\x9a\xc0\x15\xc5\xb0>\xfe\x1f6\xc8\x8f2\xf6\xd6++\xfa\x94\xad\xd41}\x81\xa8\xbc\xa4\xf8\xc4\xce\xe8`\"m\xcb\x1du\xb9\xa0:\xcb\xe7\xb4i\xeb\n\xdd\xbc\xd2\x97\xb1-\x9b\xb6\xbb\xe4\xf3\xfc5|\xe9R\xea_d\xcb\xad\xde\xfb*\xcaw\xd9\x83\xb5\xfa\x88\x8f\xff\xd1\x0bx\x84\xedcsX+\xd1\xfbG'\x18\x1d\xde\xef7d\xcfh\xfdo\xd1\xc5?\xa0/\xb2~[\xef\xc5:\x7f\xb6\x95\xaa\xba\xb9\xc6b\x85\xca\x16n\xe9n\xf7\xecSU\xdf\x8a\xb2h\xd7\xbcr\x9d\xacc&\xf6\xa5N\xcd\xdcN'B}\xb4\xf6\xd8\xe0\x95\x95M\xb2\x8dS]\x01\x11\xdb\xc6$\xf8\x91ob\xb5\x87\xae\xeb\xdd\xc6\xa8\xa4\xc6\x8f@Y\xf5{\x0f\xa4oDn=\x93\x16'\xdf\xef8x\xc2N\xab\x1a\xaec\x88+\xbf\xd0_\xfe\xfc\x97\xa7\xc8\xe6\x9c\xb3\xdef\x03\xf8\x92\xf3a3R_\xae\xbe\xfa\xf2\xab\xf6\x11\xb2\x8c\xea\xff\x0c;Ay=\xa1\xa1\xdd\xb1\xa9\xc45t\xea\xc7vN\xcc\xa1[J\xc0\xc2\x12s\xf8;\xc4\x1c\xec\x08@b\xd0A}&\xa9\xbd;\x7f\xa9:\x99\x18|\xc8\x1eyH:\x13\xddRSm~\x10a\xa9\xa96#p\xb0\xd4T\x1b\x17,\x98\x19*\xc8\x1c(\x98\x11&\xc8\x1d$\xc8\x16\"\xc8\x1b \xc8\x16\x1e\x88\x07\x07\xb2\x85\x06\x96\x9aj\xffp5\xd5\xc2mgv\xf0\xbb\xee\xfd\x0c\xce\xfd\xac\xae}[\x18\xcet\xeb#\xae\xfc9\x8e\xfc\xa0'\xdb\xe3\xc4\x8f\xba\xf0]\x8fZ\xba\xfb\xde\xfd\xf6o\xd8X'9\xeeS\x06\x1bs\xda\xfb\xc7\x16u\xd8\x8fp\xd7\xdbnN\x9f\xab~\xbe\xa3~\xba\x9b\x1e]\x97\x89.\xfa\xa0\x83\xde\xef\x9e\x0f9\xe7\xd1\xc9Ju\xcc\xc7\xdc\xf2\x96S~\x86K>\xc1!\x9f\xee\x8e\x8f:\xe3\x11_\xb7\xd3\x1c\xf2N\xcc ?\xcf\x05\x8fvJ\xfb%\xab\xf3=\xb3\xeb=\xab\xe3=\xa7\xdb\xdd\xe7tw\\\xeey\x1c\xee\xd9\xdc\xedy\x9d\xedi\xae\xf6\xa8\xa3=\xd1\xcd\x9e\xe2dw\\\xecnk\xa9\xee\xd6\xb0{=\xd1\xb9\x9e\xe0Z7\xba\x9c\xd3\xad\x9e\xd9\xa9\x9e\xcf\xa5\x9e\xcf\xa1>}u\xa3\xce\xf4\x98+]p\xe9\x80\x0br\x8a\xffQ}\x13Jy\xbe\xaaoz\x87\xe3+z\xa8\xdb2\xfd2\x8d\x03\xbfW\x9e\xec.\xcbI\x17\xa0\xd8\xde\xfe\x81\x9a\xe1\xee\x17^B(7\x8aQ\xa9\x17\x95 \xda\x88n\xd7\xa3n\xf5\xe8?2\xda\x92\xbf*\xd0/ma\xdb\xd4{\xa3\xd5\xe1*\x0c\xebR\xa0\xee\x01\x12\xbb\xffN\xd7\x14\x8d\xbb\xa3\xa8\x9ap9\xd1Y\xd5=\xcc\xe5D\xce\xd0d\xe3\xc2\x1f#\xd7W|\xd9o\x81\x95{\xf8\xfa \x91gB\x07\xbdH\x8a\x06-\xf6s\xc1C\x11=`\xbc\xab\xc5\xaf]\xd9'\xdc\xe9;\xd7\x7f\xfe\xceIC\xf6\xe9\xf7e\xed\xcb\xear\xa3\x9f\\X6\xe3\xe7\xba\x19\x7f,\xabr\x7f\xdc\xf7|F\\r\xa5\xb6\x05\xdb2\x94\x97L\xb8\xa9yU\x04\x01\xe9W\xb4\xf6\xe4N-t\xda\xb5S~\xc7\xce\x8f\xe4\x8e\xf7C\x90\xe1\xdd8e#er\x986|\xef\xaa.\xb2\x89\x1d6.\x9cUeW\x1a\xf7\x10\x0b\xff\x17|eh\xdau\xd5]c\x17\xe7\x1a[\xdc\x8a\xea\xf2\x9f\xc4EQ\xfc%\xa6\xa8\xc3U}C\x9b\x8aW=080r|\xce\xe5\xdf\x93O\xceg\"\xbfx\xe4\xc2\x95$K\xa0n \xd4-\x81:\xf5,\x81:\xf5\xf9\x12\xa8[\x02uK\xa0n \xd4-\x81:\xed\xdfK\xa0n \xd4-\x81\xba/\xb0^,\x81\xba%P'\x9e%P\xb7\x04\xea\x96@\xdd\x12\xa8[\x02us\x03ulW\x92\xee\xa8\xb9\xe2\x0c\xdd\\\xfc\xd1to*\x1f\xaf\xf8\xdb\xc0\x9bQ\x13\x84VG\xc3\xd3\xfe\x0c\xce\xdf\xbd=\x7f\xfb\xfe\xf4\x87\xcb\xf7\x17\xa7\x17\x1f\xde_~x\xf3\xfe\xfc\xf5\xcb\xb3o\xcf^\xbf\n\xbe\xf7\xea\xf5\xf9\xdb\xf7g\x17\x97\xe7\xaf\xdf\x9d\xbd\x0d\xbf\xfa\xc7\xb7\x17go\xbeKy\xf3\xfc\xf4\xfd\xfbH\xbb\xef^\xff\xdb\xeb\x97\x17\x91\x97\xbe==\xfbA{E\n\x97\x17 \x83\xdd\x96\x15\xd9]vd\xb7\xbb\xbf\x14\xde\x05\xcfR\x18\xc1\x04\xf7+\x15F\xe5\x7f\x01\xfe\x17\xe9\xadp\xbc\xb5\xf0\xa7k\xaa\x17g\xe4`\x1cqh\xfa\xc5\xbd) \\\xbd;\x7fy\"\xadx\x15d`\xc6\xf5\xa1>\x1cw\xdc\xfe8V]\xb9\xb3\x0c\x1aE\xe2qk:\xff\xf9Y\xa7\xd5\x86n\xec-\x93\xe4\x1f~|O\xdb\xc7\x896\xaf1o\xf7\xcc\xea\x12s3@s\xd8\x8f7uG[+*\xa0\x91!\xeb\x96\x89\x92)M\xcaO\xddf\xd5\x1f\"M?\xae\xeaIC\xadj\xb7\xc9\xaa\x8e\xb5V\xd5\x97L\xd0^\xde\xd0\xae\x9e\xd6\xea\xf0=\xda>\x17\xe3\xfc\xaf\x81\x9e\xb4\xc7\xf5\xbe\xec.\xbbr\xef\x00}<!\x8c\x0d\xe9\xe83\xf6\xbe\x87u\x0d\x04U\xaf\xf8\xff\xd7[\x8d\x85\xb1w\xda\xb6d&\x87\"!\xc2R\xb4\xdad\xec\x8bMUu\x882\xc5\x91\xfd[\x0b\x16i\x9d\xe1X\xb0%$\xfa\x0b \x89\x1a\xab\xd5o9\x8e \xd4B\x90\x1d\x127\x13|\xf2\xb2\xedH\x93\xf3\x048dU\xa7\xf8/\x8c3\xf3\x1f\xe5\xb9\xc4\x8f\xa5\xa4\x91\xf78XD\x9d\xd3Po\x95\xe8@\xfadPR\x91RCC)\xea\x86\xca=\xb0gza\xc3\x1dd\x04\x8b\xc0F\x02\xb0\xef5\xdd\xc8\x19\xb0\xae\xda\xa4\xa85\x89*M\x9a:\x13Qe\xa2jLP\x85IV_\xf0\xa3m\xce\x1e\x9f'\xee\xaf\x14\xab#\xfd\xc9\xfcoT\xae\xcc\xb0\x1cj\xc3\x04'4\xd81+\x0dJX\xf9>\xa55\xb6&nK\xe6\xdf5\xdee5\x01\x9b#\xb7\xf6\xba!\x19K6j\xe6B\xc4\xd6\xdb\xed\x81\xf1\xe7\xb4\x0e\x88\xd3\x94\xda\xbe\xd8In\xc3\xe2\xf7@\x8b\xc6Z\xaa;zT\x98U\xa0\xc3\x03\xcd\xaa\x1d\xea6\xac\xfe2\xb5i~GPC\x99(\x0c\xf6@\x1c\x01\xb7}\xf1\xfb\xd4\xd6\xb7\xa4\xdcQ_\xa6\"\xcfo\x94\xb9$\xa3\x91\xd1\x1e\xcd I\x9fFSF %\x92\x84@\xe3\xf3\xa4\x8f\xc00\xa4\xbaI\xecT\xe6TH\xf0(7\x98\xca\x05\x98\xda\x05~\xd5\x0b\x02\xea\x17\xf8T0\x08\x0d\x1e\xbc\xaaX\xe4\xb3p\xeco\x86Z\xe6P\x9a\xa3\x9b9\xc4\xa4\xae\xe6\xfc\x9e\xae\xb0\x81c\xaa\xa5&U:_\x1a\x9al\xd6\xe4J\xb0\x12,}\xeb\x85\xf1\x8e\x94lj\xd5\xd9\xc4dj\xbd\x99\xf1\xb7>\xa9\x14\xb8\x875_\xbc\xdc,x\x0c\x02\x1c-'O\xf3r\xb5\xf43\x9a\x87\xb3\x85\x0d7\x97\xbby\xf8[\x90\xc3\x85y\\\x80\xcbE\xf8\\\x88\xd3E>\x8dq\xbb\x9c\xfc.3\xc7\xf3\xf3\xbc\xb1\\o\x0e\xdf\x0bO\xe1L\xdeg\xeeO\xc1\x07\xd1\xb3\xed\xe1\xc3}\x8e\xad~2\x1aQS\x87n\xfa?\xab\xaf\x97ZMK\xad\xa6_F\xad&[\xe4\x8e\x10\xed\xc1\xbb!\x1c\xd9.r\xd8GKv\xe9\xc59h \x0fgD\xc6;n\x96<\xedh\xc3\xb8\x97\x88&\x08GTY]M:Q\xaa)\x0bO\x00\xc9\xd6\x83\x8a\xa5)Q\x8eB\x17z\xd8Bh\xd4\xe6K \xc3\x96\x1fL\x1a7\x8a\x9a\x81\xc5f\x99.\xc3\xb3J\xf0\x07\xb0Yfao \x82\xbf\x81\xe4\xf3\xe2\xe6\x8cf\xc4\xe2\x80\x07\x8f\x03\x16&\x07D\xa83|\x1e\xf5W\x12N#\x7f}\xd2Y\xfc\xe9X7\xc7}\xe2d\xa6\xc9tw\x96\xe5\xea\x1fhS\xd0\xaac\xd2\x981,.\xcf\xda\x8e|\xa2<\x1d\xbcg\xa7Tn\x0f\x19\x0bv\xa4\xbb\x9b\x94\\\xd4U[n(\xdb\x90\xdcWk\x88\xe7\xeb\x86\xb6l=\x7f\xa61\xb2\x1d\xd2(\xa6\xfc\x1f}\xd0v+\xb2\xfa\xfb\xfd\xce\xb4\x99\x15\xc8\x9cD|\x17\xfdz\xf5;} 7\xb4\xab/\x7f\xe6\xd1\x08e\xa0\xde\xc2\x1f\x87XhW\xc3\x05_:\xf1O.\x81\xec\xe1EW\x8c\x0d\x86n\xfa PC\xfe\xf2\xf9o\x10\xf7\x01\"\xf2S4\x0b t\xd3o\x92\x0eh\x14\xb2\xf3\xa3u\n5\xea\x17SN\xdfg\xea\xd2tPq\x10\x92\xb7~i\xdby/,\x9ei\xfdfD\xcbA\xf4\xa2\xe2|\xa89\xc8\x89\x9c\x83\xd8\x15\xc5\xddt\x04\x1ddD\xd1A\x14I\x07S\xd1t0\x07Q\x87\xcdX\xfcZ\xe2\xc9\xc8:\x84V\xf4J\xe29\x08;\x84\\\xf0:\xe2\xbcH;\x98\x8f\xb6\x83\xfc\x88;\x98\x87\xba\x83y\xc8;\xfc\x88\xa2\x9d\xcc\x86\xc7\x83\xec\x98<\xc8\x89\xcb\x83$l\x1e\xe4\xc4\xe7A\xe4:\xe198=\xec\x8c{\xae\x12\xeeR\xd0{0\x1b\xc1\x87\x10\xc4/\x11\x9e\x88\xeb\x03\xff\x05\xc2A\x11\x1f\xb8w+E\xfeO\xc4\xfaal\xcf{\xfbV\xac\x1f\xf3p\x7f\x161\x8e\x02D\xef\xe0\xca\x82\xff\x83\xdc\x18@@p\x800\x1f\x0bhQ\xeb\x90\xdb\xb8\xe6\xa1\x03!\x06\x9a\x83\xd0\x9d\\ HA\xf0]\x943\x021\xe8\xa7\xe1`-f\xa1\x07a\xc4d\xc4P\x84\x10\x1dw\x14M\x08\xe3\x10\x85\x80_\x8e\x14\xb8\xad+\x07\xba\x10f!\x0c!\xb4\x86\x13\x91\x86\x10C\x1bB\xe4\xe6\xae\xd8\xdd]\x81\x85ME\x1fB\x02\x02\x11\xb0;\xbcf!\x11!\x0d\x8d\x08\xa3\x10\x89\x90\x82J\x04\xef\xa4\xa1[\xd6\xf7n\x0c\xa5\x08\xb3\x91\x8a\x10\xea\xa8\xf5kV\xd4\"\xccD.Z\xa4\xb0\xbb\xbe2c\x19!3\x9e\x11\x827~\xa1w~\xe5\xc26BN|#d\xc78B2\xce\x11R\xb0\x8e\x90\x8ew\x84D\xcc#\xe0w\x80\xe1\xb7B\xa5#\xe4b\xf7\x80%c !\x0d\x07 \xd80r\xe2!a.&\xd2\xa2\x85\xdc\x0f\x96\x13% Y\x91\x920{?D\x11\x93\x90\x80\x9a\x04K\xe8\xd8\xe8I\xb0-\x9d1\x08J\x08\x19z6\x92\x12bY\xf2\xd1w\xbd\x88J\xfcu\x1f\xaa\x12\x7f\xdbAV\xe2\xaf!\xe8J\xfcE\x0ba |\x9e\x13a\n\xe2 !-!j\xa0f@\\Z\x14g\xc2.-j\x88\xd3SQMAb\xc2\xb4\x98\x04\x82\xca\x84\x98\xb7\xc2\x98\xe7\xa9\xe8L\xf0!4aT\xf3s\x91\x9a\x80\xa25aT\x1f\xa6\xa16!\x88\xdc\x84Q=@\xbdB\x93`\x9d\x08\x1d\xac\xf3(\xd8\x13R\"u.\xb2\x0c\x1c\x8e; \xf8 Zr\x8f\x8bv\x83L}\x9b\x08\x04\xe5\xcd\xe3`P\x80%\xd3\xe7\x1f6\xd3g:\xa4\x14\xc2\xb0R\xc8\xb4\x9fs@L!\x043\x85\xbc\x1d\x9d\x069u\xa8\xe5\x80\x9d\xfa\xf69\x9a@\x91\x94\xa1\xa1:5*\xf7S\xe1\x04&\xa7j\xfc\xcfFv\xa0\xc9\x1d\x93\x99l\xe7M\xf1\x88\xf0\xd98\xd3\x84\xfc\x89\x1e\xb1T\x8f\xdc\xc9\x1e\x99\xd3=\" \x1f\xb3S>\xf2&}\xa4\xa4}\xccH\xfc\xc8\x9b\xfa\x91\x94\xfc\x917\xfd#!\x01${\nH$ dZ\x1a\x08J(\x98\x1a\x92%9$1=\x04\xfdrT\xca\xc8\xec\xa4\x91\xdci#\xfe\xc4\x91\xcc\xa9#\x0f\x91<\x929}$5\x81$s\nI8\x89${\x1a\x89?\x91dD*\xc9\xf4d\x12\x94\x98\xafD\xb4xf$\x94xSJ\xa2*E0\xad$M\xe3\xc8\x97Z\x12N.\x89\xf7&k\x82I8\xc5$[\x92\xc9\xdc4\x13\x87\x1c\xd7hP\xe5!o\xaa\x89/\xd9d~\xbaIB\x8eE0\xe5$1\xe9\xc4\x1b\xc7\x1d\x99x\xe2\xa7\x83\x04\xbcf\xa7\x9f\x8c\x99\x9c\x94\x14\x94\xf8,$\xa5\xa1\x8cND\xf1\xc4\xf5\x83\xc9(\xb9\xd2Q\xe6&\xa4\x04WvFRJBZJ,1%\x9e\x9a\x12\\\xf01\xe9)i *h\x8a\xca\xec$\x95\xe44\x95\xb1\x89*\x89\xa9*\xfeI\xf4lk\xff\xfb))+9\x92V\x82]v~\x9f\x95\xba\xe2PCRY\xb2&\xb3\xf8\xd2Yf&\xb4\xb8]v\x13\\\xf2\xa7\xb8\x84\x93\\<i.9\x13]2\xa7\xba<D\xb2\xcb\x98t\x97\xc4\x84\x97Q)/\xe9I/\x9e\xb4\x17_\xa2Cz\xaaC<\xf5eT\xf2Kr\xfa\x0b:\xa0\xdc)0y\x93`<i0\xb9\x13ar\xa7\xc2\xcc\xdf#I\xe90i 1\xb6`\xc3\x92bf\xa6\xc5\x04\x8dU,5f\\r\xcc\xe8\xf4\x98\xb1 2\xc9)2#\x92d\x12\xd3dF'\xca\xc4Se\xe2\xe6\xf6\xact\x19\x87\x1a\x96>\x93;\x81\x06M\xa1\x19\x9fD39\xf6\xe3I\xa5\x89zi\xb2\xa5\xd3\x04\x12j\xc6u\"GR\x8d/\xadf\\O\xa6\xa7\xd6\xc4\x92k\xc6\xf5\xc3\xe3\x1d\xcb\x95b\x83'\xd9\x04\xd2l\x92b\xa7xT=[\xb2M,\xdd&_\x1fg$\xdd\x04\xd3n\xfc\x897K\xe1\xbc\xd1\xa98\x99\x93q\x1e\xacp\xde\xbc\x94\x9chRN\xbe]\x9f+5'\x92\x9c\x93\xbd\xc3\xd3St\x1e$I\xc7!\xdb\xe7\xbd\x0c\xfb~\xb7\x93&\xb3*:\xe8\xbb\xeb\x1b\x96\x02\x84K\x01\xc2\xcf\xb8\x00\xe1\x7f\xa3Ih\xe3\xea\x04\xf5\xc7cL\x1a\xda\x053\x07\xde\xf1)\x18\x9d\x88\xc6M \xcfY\x12f\x06^\x19tz\x99\xaf\xe5.\xa2x\xbb\xd3T\xef\xcf\xe1.\xa2@Z&\xb2MS\xce\x04\xffl\xd4y\xf8c\xdd\xd1\xd1\x07\x81\x8d\xe8\xc5\x94\xfd\xec\xcd\xb1\x9c\xc2\xf9\xf2eW\xb2\xf1L\xba\x07\x80\x7f\xa8\x16F\xfcC\x95\x1c\x0e4'\xd2\xbd^\xf8\xc9:\xcc\xfc\x15=4\xb4 \x1d\xdd0m\x83ni\xa3\x12\xd9>\nb\xedG(\xab\xb6\xa3d#S\x1e{\x95\xb6\xa5\x9d\x1b\xa0g\x82\xae\xa4\xad\xcd\xd0y\xecm#\xc2\x14\xe5\x16>\xeeh\xf5D\xd2\x7f\n_\x7f\x0d_~\x94\xa1\x0f\xd2\xc9Ap\xe7\xc4-\xe5)%_\xda\xea\xecY\xc5\xb3\xf6\xac_E\x12KAZ\xda\x1a\xbe\x13.S\x15\xec\xb8\xab\xe1\x8fo/^_\xbe=\xbf8{\xfbFw\x1f\xad\xd2\x96 \x07\xb1yh\x06\xdf\xfb\x8f\xd7\xef\x83\x7f?\xfd\xe6\xfd\xc5\xe9\xd9\x9b\xe0;o\xdeF\xfe|\xf9\xa7\xb3\x8b\xef/\xff\xf8\xfa\xe2\xad\xb5+\xa4?-\xdeq\xb9N\xd8.~X\xbc\x06\xb6\x9b\xc5\x13\xb7\xea\xd4\xd7\xc6\x91\x15 <\xc2V\x10\x83b\x1a\x86H\x0e\xe4 _\"R\x83\x92\xdb\x1cE\xba\x1e5\xbe\xc7\"\x8e\x11S\x16\xf7\xf4\xc2\x88]\x84\xbd\xed\xee%\xec-|Gao:\xfb\n\x7f\xc9\xb3\xbb\xc43b\x8f\x89G\x1cwlr\xc6x\xaa$\xd3\xd0x\xa7\xfa\x89\xb4m]\x94\xdc}\xca\x85h\xffw\xb1\x9aA\xa3\xd9\xb1\x0b\x00\xfe\xc4\xa9\xd2\x0d\x93to\xcd\xddF\x98x\xe8\xa4\xbd'd)\xff\x9f\xf6\xb0+\xed\xbb\xdf\xd8\xf3\xbe\xac\n\xfaB\xca\xd2g\xed\xe6\x13\xfcz\xf5\xdb\xdfX'6\xd4\x1b\xb9\x1f\xd5\xa8oe\xd7\xac\xcd\xfa\xc5\xa8V\xfd-\xb2\x11kc\x1d\xac\xef\xa0\x0d\np*\xbe\xe4\xe5Y\xdb\xce\xbet\xe8\xec\xd5\xc9 \xeeN\xfa+\xa9\x9d\x152\xfa\xe5\xe8\x1a)\xda\x0c\xefEZ\x1dP\xf6\xeaxd \xd7\xcclE\xe6\x7f\x14\xaa\x04\xd1|\x82\x1d\xcb\xa0\xfd\xf8$FLZ\xcc\xd3\x81\x1cre\xe5\xd3\x82\xb2\xebA>M(\xb3.\x14\\8_\xe42\x95\xe9\xc7\xe5X\x9a\x0c\x8b\xca\xafd\xd95Jn\xa1\xda\xd1\xcf\xebV\xf7\xebI\xf1\xbd/\x9e\xcc\xba\xd2\x18m)*\xdbC\x1a\xd3\x98}\x86\xbd\xef\xd3\x9aR\xf7\x1c\xf6\xaeGs\x1a\xb1\xff\xc43j\x17\x8a\xc7\xaf?%\xcc\xf2\xc3\xe8P1\xbd\x05\xf2\xeaQQ\x9dF<\xb1>M\xd2\xa6\x12\xda\x0e\xb5;U\xa7\xca\xa5U9\xfd\x13\xde%\x9d'\x08\xb1&\xa6a \x06tK0\xe0s\x0f\x06\xb8\x1a|\xaau\x90pM\x00w\x89\x9ek\x97v$\xd8\x05\xf6\xed\x1a\xe8R\xa0{\xd3\xbf/\xe7\xde\xa6\x01k\xfd\x04\xf8\xae\xce@.\x9a\x98\xd8\xf9?\xa0\x9do&\\\x93\xe1\xc2\xc2\xb4+2|\xd7cL\xec5:\xe5S\xaf\xc30\xa7|\xd4\xdd\x17\xda\xae\x03\xe7\x1e\x181_<*TVW\xb2\x07u\xe5\x0d\xe6\xfav\xf5;-a.aW[\xc1$t\x86g\x07\x91\x9c\x00R\xbc\x999\x81#3h\x14ok|\xb0\x08\x0f\x14\xa5\xb4\x949@\xa4-\xb9\xa6\x80\xb4\x1d\xa96\xa4\x91AF\xc94\xd2\xef\x9f\xffc\x1f\xc9I\xd8@\xa8/#xP-\x11\x95\xc7sa\xf9,\xe2K1\xdeOa\xdbj~\xce8\xcf+aFf\x10\x7f\xc4\\O\x04\x9c\xe9\x0dX>\x88l\xde\x07t l{0\xc5\x06\x0c\xd9}1[/`\xdf%\xd8t\x89v\x9c\xe3Gx\x08\x9f\xe14\xffXF\xef@\x9a_`\xf16\xf9\x86\x80[\xf8\xa9n\xd5,V}\xc8@\xcad\xc9O\x8eK\x8c\xb6\xdb\x03-\xe1\xadL\xb1\xd2s\xd8\xe7\x1e \xfbV;\xd0\xce.\xd0\xcfJ\xec\x84\xf8\xceE\xe84x\xce@d\xe7'\xedw\x9c%i\xdb\x8a\x8d\x8dC\xf9}\xfcH),\xe5\x0d\xd5\xf5_IiX\"\xb5\x19\xbc\x13\xe4\xed\xa8\xb6\x0d\xaa\xfaY}@\x0f\x8c3\xaf/\xec\x1f42J\x03\x0e\x13\x91\x8b\xf0\x02\xfbq V\x19Jn\x98\xe2\x9b\xb7/\xac\x7f\x1bcK\xa20\xac\xb2Mk\xf8\x8bI\xd5TS\xa3{\xbd\xac\xaeF\x1a\xdb\x9e\xebt\xe3j]\xc25\xba\xc6\xfbz\xef|F\xd9\x90\xf7;\xc2\x18s\xf9i\xf2\xe0\xd3\x15\xcd\xe9\xe2}\x10\xe7\x1a9\\\xb0\xff\xcfQ\xe4l\x11\x1d\xdfn3\xc52.\xa8f\x8bb\xafh\x94\xfb\xb4\xdd\x91\xf6\xba\xac\xae\xfa\xcd:\xf2t\xb6\xe5UE7\x97\xeb]]|j/o\xcbjS\xdf&\x1a\x7f\xba\xed\xb7/\xabKI\xea@\x9bqt4o\xcf\xa6\xbe\xad\xbarO/\xff\x93\x94\xbb\xcb\x8dd\x00A:|\x02.\xb7\xbc\xe0\\]]n\xea\xe3zGy_\xc67\xef\xd0\x12\xbd\x19K\xc8\xd8\n\x92\x1f\xf5\xa0b\x8d%\x89\xfb\x82\xfb\x92Sk\xe1\x8dV+\n\xfbzs\xdc\xd1U`\xad\xe7\\\xban\xdfs\x8c\xda0\xb8\x05\x13\xde3\x10R\x85\xb1\xbd\x03\xf1\xfd\x93D\xd3\n\"\xc4\xf6R\x80f\xca\x9e\n|\xee\xedRt\x7f\x8d'\x9a}\xaf\xf5A\x86\\\xd7\xfb\xc6\xf6\xef\xfb\xf2\xaa*\xab\xab\xb3j[\x8f\xde\xc47d\xc7\x97\x85)\x18e\xb5u\x1cxI\xdbY\xfa\x8a\x92VA\x80\xa0\xae\x11\xfb/\xbal\xdeh\xce\xf7R\xca(\\\x1a\x17\xfb\xa4\xab\x1b\x1es\xe1\xc5\x15\x80@A\xaa\x0d\xfb\x99\xc2\xdbw\xfc\x0f\xc7\xea\x19\xdb\xd9F9\xbf\xb2\xda\xd0\xbb\xcbz\xbbm\xe9\xfc\xee\x85\x1d\x12g\xac)\x85\xa4k\xa1\xac\x8a\x86\x83\xe9\xe8\x06\xe8\x0d\x8f\xac\x95\xfb\xbe\\\x1b\x1fM\xd9\xc2\xba\xae6\xbc\xdc\xa1\x83>\xe5\xcc\x84\x99]v\xdc\xe9rO\xee/E\xd9D\xc1 \xb8\xd5F\x9f\x15\xf5~\xcf\xc4g\xc3T!\xe9z++\xa6\x13\xfd\xa7,;&j\xf3\x99\xd4\x10d6\xc6\xcd\xc4\x99\x81\x0d;5\xfb^\x1f\xe3\xb3\xab\xc2\xa4\xfb\xb2m\x9dR\x8ab\x14\xeb\xb2\xdb\x93\x83n\xad\x8b\x85\xba\xe4h\xf1\x91\xeb\x92P\x92\xdaY\x9b\x8brO\xdb\x8e\xec\x0f\x02\x9f.W\xa9W)\xd5j\x88^\xc1\xe6\xc8\xc1{;f\xa3\xd1\xd6.\x1b\xaa\x98\x94\x19\xcd\xdc\xaf\xdb\xae\xae(\x9a\xe5\xbf\xae\xeb\x1d%\xd5\x88\xfe\xfe\xe9\x9arW\xa5XLc\xd3\\\x93\x16\xd6\x94VZ\x9b\xf0\xe4S\xb9c\x1d\xaf\x8fL}\xb2h\xf5\x9f:\xebL\xbb\xa7<\x9e+]\xb35S\xfd\xcd9\x11{\x8a\x9bm\xf4\xa7cyS\x17\xd2\x00i\xd8rX\xf4Hu/<\xacvCE]m\xcb\xabcC7l\x93\xac\xe95\xb9)\xcd\x02\xa4b\xef\xa8-\xc7\x83\xae\xc9\xf8\x84\xa9\xe7\xf5\x14d;L\xe3\x14\x1d\x80'\xc7J\xec\xfe\xa7b\xe7\xb6j~\x8e2\x88\xce\xcb\x90Z\x84\x8eUE\x0b\xda\xb6\xa4q\x8a\xf16\x94lZ\xf3\x80x\x8e\x84\xbf\xaf\x7fT\xab\xa1\xc9\x05\xdd\xd5\xa3\xfe\xfc\xb8\x05\xc9\xf9\x81q~.\x85\xf6uUv\xb55e\xdd5-\x8d5R\x1b\x1d\x98\x18\xbe);\x1d\xba%8\xb2-V\x94\xdc3\x1a\xe4\xd1u\x05\x01\xbb!;\xeeYR\xc2\xe4\x0b\x8d\x9a\x89\xfcA\xc4]\x8aX\xd5>\x93\xd4\xde\x9d\xbfT\xa3\x1a-h\xc7\xab\x8b\x98t\xcd\xeb\x15G\xc5p\xe0 \xf8Eq\xd0\x15\xeb??\x0f!\x90C\"yr7c\x91\x82\xcc\xa29 \x9cs\x8bgO\xe9\x94\x9c\"\xda/\xa4Cb:i\xad\x92\xc0\xe9\xc8z\xe5\x14\xd7\xb8\xc0\xf6\x8b\xec\x90\xd0\x8e\xf7<\xa7\xe0\x0e\x88\xee\x99\xc2\xdb\xa1\xc6\x9d\xd2>\xf1\x9d\"\xc0\x93Dx\xd2\x9e\x99r\xbe\xb3\x89\xf2\xa00\x1f#\xce\xc3}\x9e!\xd2\xcd9\xef\xc5\xbb+\xd4S\xc4zH\x94\x93\xddn\xe8\x88:TXR\xe5\x08\xc3rI\x86\\\x92!\xd5\x17\xfe5\x14Mj\x9a`mT\x1b,+^\x86lP\x0ee\xa9\xbf\x16n\xf9\\\x9buJ\x8b\xba\x11/\xf2\x12\x85R?\xed\xab\x032\x9e\xcc\xf9\x81>Lcl\xea\xcd\xf7\xf5~\xe8\x14Z \xb0\xa1\x07\xca]\xe2\xdf\x90\xa6\x9fY_)Kc\x8c|s\xd9\x85,E\xdd\xbf\x98\xc6<\xca\x13\xa5\x7f'\xe9\x8d\xd1\x991\xae\x95\xac.;\xca,\xb2\xc1q\x05\x16= \xb8\xb4\xc8\xab\xae\xe2\x8a\xea\x88\xee\xf8E\xc0\\\x85TH\x1d\x8d\xa0\xa5\x8a\xceTBm\xa5s\x96\xba\xe9\xf4\xd5\x94\x95\xb8\x8a\x19\x9ceW\xad\xf4\xcft.U\xd2V\"1\xf5\x11W\x1c\xfd}\xcb\xa5,\xa2j\xe2,\x05Q)\x84\x1a=G5\x0c+\x85\x11up\xea)2\x04\xc5t\xb5\xcfP\xf3\x06\x82i\xfa\x9d' d\xbaN\xe7\xbai\x0cm\x0e\xd5\xe3\x14\x93\xee\xf8\x952=\x8f\xfe\xa6\xae6\xef\xb5\x1a\xb1\xce<\x9b\xc97\xdf\xbc}\xf3\xca_\xb1\xd4\xfe;\xfbW\xf0\x8fgo\xbeC\xff\xaa}\xd8G\xabCM\xe3K>\x8c\xad\xd7Y\xc5\xbfx\xe2R?\xc1z\xee\x8c\xa7\x91\x17\x80\xe6\xcbTPV2\xc5\xa0?#V\xc5\\|J\x18=\xf1\x7f\xd8\x8a\x8bdUY)U0\xf1 \xbd\xb37\xdf)\x82go\xbe\x0bR<Vk\xa1\xd9x\x08\xaa\xee%tn\xe8\x98gk\xbdd\xdc\x82\xd7\x9aL\x16\xfaE\xff\xc9%\xcf\x89z\x91\xc0\x14\xedo\x8c\x04\x10~\x99\x17\xf7,\xaa\x97@&[q\x1dQE\xf3tr\x0d%\x9d\xa8d\xab\xed\x10\xf5\xd7\x11\xb6\x0bk'QE7\x06\xc7\xbeS\xfb\xd5\xea6\xbfl\xefJ\xb0\xa5\x0d\xdd\xd1+nj\x9d\x00/\xd3\xad\x82\xa2\x86\x9b\x9c\xdc]N\xed\x87c\x15(b\xc6\x04\xef\xc9\x1dG\x90\xd8=\xb5\x15\xa9\xc2\xf1\x8c0\xbdE\x0e(2\x02q\xfdU\xde\x81h4\xd1\xf1lH\xb9\xbb\x17z\x16i=\x17/Z\x82\x91\x8f\xde3\x94\xe3\x81\xe9 \x97#r!\":\x8bFPm\x16~\xf5\xa2($\x89l\x1d\xa6\xb0\x8aAc\x99_\xc3Y\xedgC#\xa0\xc5\xbf\xf5lD\xe3|D\x99\xc0\xbb\xe1@'p\x02s\xb1\xd1\x99z\x90S\xe3\x9e\x98x\xdb\xc6\x06\x9b{J\xf8\xb9\xd0\xf9Q\xe8\x84xO\xc7\x84NO:\x11\x9a*\xa9u9|\x1a\xf0nX\x1be\x06\x17W\x1c\\\x89u\x92\xb4Q_\x89\x9d1FZ\xf5\x9b\xe92\xc5X\xb5\x06\xee|\xacv/\xad\x8aZ^\x92\xa0\x03p\xfa\xf7\xd5\xda\xf7\x83\x9a\xd2\xba\xf3q\xa4uG\x14\xb6\xd7\xa4q+\xc3\x84\x9a\x14_\xc8u\xd5\x87\xc4\x96S\xfe\xb1\xa1\x05-oP\x0e\xd5ku\xc3B\xd9i:L#\x91\xe6h\xfd\x89V-\\\xd3\x1d/'L* \x05W\xfd\xa5r/I\xd5\xb7\x95\xa87\\W\xda\x04\xcb\x1b\x0d[_\xd6\"O\xa1\xado\x85\x15QW\xd4^\x8f\xa4M6:|\xb8\xb1\xf6'\xfa\x19\xfe)\x84\xf7*$K\xd2\xd9{\x16\xc2\xfb6\xbd'\xb3\xf7/ {8\xbd\xf9\xf1{\xd9!a\x18\xa6\x19\xf74\xe4\xde\xd7`\xefm\xf6\xac\xc9\x8eT\xc5\xb4\x12\x97H\xf5t\xcf\xacc\xd5\xd2\xe3\x8c\xc6\x98\xd9\xc9U\xd1\x07\x12s\x8a\xa1\x0fNR\xf5\xa4U<\x8f\xb1>\xdd\x8b\xcb]1dG+\x0eE\xd4\xb6\x12\xbd+\xe8\xa1\x93\x06[\xa7]\xb8i.\xa2}u\x8e\xdc\xbf\xbd\xb3\x91\x07!\xdac\xd9q\x87?S\x00\x8b]\xc9ZS\xae\xe36\xc8\xf1\x86\x81\xa4\xb2\xba}]\x95\x9f\xa2\xce\x1fc\x8a\xe4'\xdaJ_\x1f\xf7\xa4z\xd6P\xb2\xe1\xdd\xe6w?)\xef\xb6\xb3\x9d\xc5]\xeb\xdd\xfd\x98&\x0d\x05J\x11\xd0}\x03\"\xb7\x9d\xec\x86?\xf6k\x0fO\xe8\xdd\n>\x9c\xd7MgFW\xff\x9d\xde\xafIK\x9f\xaa\x8e\xdd\xd2u[\x8eS\xec\xe4'hO\xd4\xdfve\xf5\xa9\x97\xe4\xb486ew\x7f\xc9\xf7G\x11\xf3\\\x9b|\xd0\xfa\x16m\x94\xeeI\xc9/J\xef_\x07\xf9\xba\xea\xc2\x86v\xa4\xdc\x8d\xd2&\xe4'\x8a\x05\x0b\xa0n\xdf\xa4\xfc+r\x96\xb4\xfd\x88z7\xb4\x97\x03\xbb\xfa\xfb\xb2\xed\xea\xa6,\xc8nTL\xe3\x9a\x92\x8d\xbb\xaf\x93\x98\xa6\xbc@\xda\xe2\x85\"|\xb1&mYH\xbfc9\xa47\x05\xda\x80`-.N\xc9\xfe1 \x1a!V\x8f\x8f\x1c\x0e\xf9\xc8\x85m\xfb\x97\x8c!U\xed\xb1\x85\x82\x1c\x04\x9b\x15&\xa1\xfa\xb99\xee\x86r\x1c\x05m[\xe1\xebQ\xb3g\x91\xe3\"\x98\xfd\xa9\xb8&eubG1\xcb\xaa\xd8\x1d\xc5]f\xbb\x9d\xf6\"\xb3\xde \x1b\xdb\xb1\x10}PhH\xd1:\xeaM \xc3=\xea\x8f\x9d\x8a{m\xc7\xcc\xb2\xae!\x95\xb8\x18\x05\xf6\xa4\xb8.+#E\x85\xb7\x9cZ7:K\x02\xf6\x84\xd4{,\xc3\x87_\xce\xc7'\xcf\xed\xbd\xd8\xe1\x87\x86\xded\xdc\xe0\xd7\xa4\xbd\x9e\xb8!\x91\x0b\xb8\x0f\xa4\xe9.[\xda]\xda\xc7[=\xde\x1eB\xb0\x97\xfcS7\xd0\xdf\xff\x89S-\xab\x8e^Q7A\x07\"\x192\xe0\x9d\x06\x88M\x05\x84\xa7\xa3_\xb4s\xd2t-\xed\xbe\xe7\xb3b/\xb7\x08%]\xba]\x88\xee \xa7I\xd9\x1c#%\xce\x96\xd8(\xec\x08j\xef\xb1\x7ffhn\xc8p\xc9@\xcc\xee\xfb\xb6\xa9\xf7\x9cM\x90\xc3\x01\xeacw8v\xc3o\xc3\x19\xd0(\xf0\xd4\x95\xac}\xea9e\x06Z\xe4p\xc8@\x85\xef\x17\x99\x1f\x91\x81\x1c\xbda\xfaXA3\x90\xea\xd7o\x10/\x16{\x12\xc0X:\xd6\xd6\x8d\x03\x95\xc4\xa92\xbcd\xbd\xb8\x11\xf1-q\n\x04O\xd2|FHnB\xde,d\xf6\xab\xdf\xbc\x0f\xf2\x96\xb0hwI\x1b\xc3\xf7Y\xfc\x8f\xdd\x04OE\xe7_aM\x8b\xeb\xdegPV\xfc*\xd1\x95\xf1\xfep\x1e\x0e\xc7\xb5\x93\x8a\x16d\xee!\xd6\xce>\xbb<6(o\x8fp\xdf\xd8,\x01\x8ft\x7fx\xf7\xc3\xf3\x86\xb6\xf5\xb1)\xa4\xf5\xc3\xed@Q;hw/\x8d\x92m)g\x8f\xb5\x89\xeb%\xe2\x19\xae\x14v\xb3\x1cA\x8c\xb5\xab\x8bz\x07\xeb\xe3vK\xfb\xebTe\xca\x88\x18\x8b\xc0]+\xcc5\xe9`GI\xdb\xe1\xf4\xea\x8a\xc2\xa3\xe7\x8f\xb8\xfb\x9b\x14\x1dmV\xdc\x02\xe71\x8e\x96^1;[\xad\xf4\x87w?<n\xe1@\xbak\xde\x00J\xae\xf7\xaa\xe0\xadu\xc8m\xd3|\xced\x13|v\x9e\x10v\xbcq\x02\x1fY\xf3\xde\x1b]?>\x15\xbd\xe7$\xdb\xeb\xfa\xb8\xdb\xc0\x9a\xe2\x99\xe2\xec)HUW\xcc\xba\xe0\x8c\x00o\xf1 ]]\xadN\xd8\x14r\xfd\xf3\xd1\xea\x91\x8a\x18\x93\x82\x99\xfdt\xf3\x14\xbf\xdb\x8d\xd7Z>p\x8f|AO\xa0\xa3d\xdf\xc2\xb1=\xf2\xeaX\x87\x86\x16\xf5\xfeP\xeeX\xef\xe45\xba\xeb\xb2\"\xcd=/\x8d\x84Qcs\xd3\x8a\xcd\xd5]S$ \x96=\xf4\xee@\x0b\xee\x85\x90\xb5\x9fd\xce\x04\xdb\x0c\xf4\x8e/\xe5iu\xbf\x82\xef\xeb[zC\x1bq9\xf7\x87w?\xb8g\x97=\xc25!\xaf \xc7\x1bl\x8bk\xba\xa7\xf0\xf1\xba\xeb\x0e\x1fO\xc4\x7f\xdb\x8f'\"uF\xfe\xf5\x84\xef\xb2B\xb3Uw\xf7h%l\xe0\x11< |\xac\x9e\xf6hsCep|O\x0e\xad\xd82l\x04l\xc4*)\x90\xf3+\xae\xc0\xb7@\xf0\xb1m\xeb\xdd\xae\xbem_x\xd6\xeeWp\xb6\x1dF\xc0\x96\\\xdd\xf8\xde\x0fR\xba\xf8\x8e{\xbaA+\xcb2\"\xa7\x15|\x7fqq\x0e\xdf\xbd\xbePw\xe4}x\xf7\x838\xa0\xe2\xcas|g:\xb7#_\xdc\x1f\xe8_\xfe\xfc\x17\xf4e.o\x8e|\xad\xe5\x1e\x12r\x8d\xaf\xc2\xa1\xa97\xc7\x82\xf2\\\xa2\xa6\xb1\x93\xc3\xd5\xf3+8\x1d\xcc\xa2\x96\xa7\xc5\x126?\"\x9aW\x90\x82\xf1\x84\xba\xfet<\xf4\x19\x94k\xd2\xd2\x0d\xd4xEg\x1f{\x03q%<O\xa4\xba\xe1\xdbj\xaf\x9d\x85\x8d8\x0cD\x0d\xa3\xcf\n23\x9e\xf4Gt\x8a\x1f\xfb\x86n\xeb\x86\x9e\xa8\x8f\x19M\xd2\x95\xebrWv\xf7\xbc\xa4\xa5\x8acq\x16\xd5\xdc \x80\x0b\xf1\xd4\x95\x8c\xe0\xf2\x0f\xf8\xb9[\xc1\x93\x0f-U\xde\x01\xfd\x8e|\xb1\xefHE\xae|#^7\x94{5\x14\xd1\xd5S|\xb7\xbc\xa9;\xfaBV?\x93I\x7f\x84\xf7]\xf2\x9b\xe2\xd84<\xbdYO\x0b\xae\xbcS]\xf3|h7#X<jcAC\x99t\xa0\xd2i\xdd\xa7\xc3\xf4\xf8\xeb\xe1|\xad\xe9UYU>K\x85cd\xbc\x8c\xcb\xba\x93\xdb\xc71\xdf\xf3\xd3\xd6J7SwM*\x9b\xb3\xc0\x13\xe9[\x14i\xdd\xe2x>E\x89\xedy\xb2\xe9\xda\xc3H\xf8\x00\xb9\x83\xbaw(\xcb\xb0\xc2\x81\x16\xe5\xb6,\xa0\xa5{Rue\x81\x94!w\xea\x88\xaa'\xa2R\x04\xcd\xb94\x8d\xe3G\xc6:\xd6}\x0e\xaa\xa608\xba\x81\x14\xaad]\xdfx\x94\x0d1T\xb9\x9d\xeda\xc6z\xf3\xf1\xb4\xba\xff\xa8y\xbb+ \xcd\xba\xec\x1av\xf8\x02\xbd\x92<\xda!Gvuu%C\x06\xee\x921\xae\xc9\x99\xbe\xe8\xd5\xdaU\xa7\xf46\x95V\x84l\xb3s\xb5\xf1w\xe5\x9awU\xf2\xf5\x16\xda\xe3\xe1P7\x9d\xa8\x1a[|z~\xac\xd8\x7f\x98\xbc\x14\xeb\xdd\xban+\xa9\xd1\xa0\xcaC\xbd\x85c'\x98\x8f:\xce-c|*\x04@vpE+^\x93j#\xc3\x17\xbdR}\x8a\xf0;\xb1Dn;\xeav\xfd/_\xc09\x11\xe07\x90]'\xbd@,+x\xf9\xcf\xff\xec\x11S\xdf\xd65l\xeb\x1a\xbe\x86\xd5j\x85f\xc5\xf3I \xd5=\xfeGR\xdd\xafX\xd3\xdf6\xf5\xfe\xc9\xb6\xae\x9f\xe2\xaf\xadV\xb8\xec)\xb7\xf0\x84\x91\xf8\xc0;}Q?\xf9'F\xe3\xa9\xf7\xb6\x7f\x1f\x9d\xbf\xf9\xe7\xe6\xab\xc8\xdc\xfc\x1b\xb9!\xb3'\x07\xbe\xe6\xba\x15\xa3>c\x16\xca\xf6\xc9\xb7u\xbd*v\xa4m\x03\x93 \xba\xc4>\x10\xe3\xd1>\xc2\xdb\xfd\x1b\xfa\xeb\xf3\xe7lK\xc6\xfb\xf4\x9e\xec)SANE\xef\xaeh'\x8b\x0f\x9fUmG\xaa\x82>y:\xb6\xb3(\x0d_\xdf\xbd+\xfb\x9b\xc8\xca\x9e\xdfw\xd7u\xe5Y[\xd1\xafo\xeb\xfa\xc9j\xb5\xc2\x85H\xbf\xaeO\xbc\x7f\xe7{\x9f\xaf\xf8\xd8\x05g\x1f\x9f\x89\x19}\xf5\xfa\xfd\xcbwg\xe7\x17o\xdf=\xc5]\x85\xa2)qF\xfc\x8d\x89\xe6\xbc\xb3\xf5\xdb\xc8l}W\xe3\x13\xc5g\xea\xc5\xd7\xf0O\x87\xf5\xea\xdb\xba\xfe\xaf\xd5j\x85\xef'\xd6\xc9\x13\xa6h\xb2\xb7Iu\x7fX\xaf\xde\xd0\xdb@\x7f\xcb-\x7f\xfb\x7f}\x0dU\xb9\xf3n \xef$z\xb6\xb5\xff}k \x9e\xcfe\xaf\xc4\x18V\x1f\xaa=i\xdak\xb2\xbb\xa8\xc5\xc1\x9e\xdbe\xe7\xf7\x0b^\xfc\xa6\xf8\xd4\xcb\x01el\xc0\xfa~P\xd5\x94\xc4\x12\xc8\xb6{\x95\xb2\xedP;\xb6\x88\xce\xf3\x18Q\xc3\x9e3[|\xc5\xff\xc0T\xd9\xc7@4\xa9\xca$\xae\x0c\xa7\xb8-\xf0\xbd\xe36\xd2\x8b\xb1jw\xaf\xecF\xc7\xe0\xefUg \xdb\x8e\nmnG\x10\x87\xc2\xe3\xe7\x8f\xdd&\xa4A\xab\xba(,X*\xf7\xf7\xa3m]\xaf\xd6\xa4\xe1\x83\xbb{~\xbf\xfa\xeb#1[\xc2\xd6\xc2\xcdJ\xde\x95G\xec]L\xbc\xfe\xdb\xfb\xb7o\x90\x9f\xd9\x8a\xb1?\x0d\x1e\x8f\xbe\x02 SZ\xb9j$\xac\xb2cK\x15\x02\xec\xea\xb8#\x08\x8a\xd7%!2]\x06\x85\xe6d@\xd9\xc9\xd3z\"5%\xc4O\xa2)\x18\"\x83\xe2\xe3\xffa\x03\xff(\xcd\xf9^a\xd3\xa7q\xa5X\xc4\x0b\x8f\xb9@\x8aO\x8cG\x0cf\xe9\xb6\xdcQ\x9c[+~rN\x9b\xb6\xae\xbc\x07D\xfa\xaa8\xea\xeb\x92\xaf\x81\x0f\x937\xbc\xcc]\xd4\xf2\xdd\xaf\x92e\x05{|\xbdx\xc4\xe7\xe6\xd1\x0bx\x84\x9d\x0fs\xb8+1\xa2G'>Z|,o\xc8\x9e\xd1\xfb\xdf\xa2\xcb\x7f\xf0\xbe\xcc\xc6b\xbd\x9b:\xa0\xb3\xad4\x81\xcc=!V\xb3l\xe1\x96\xeev\xcf>U\xf5\xadH\xb7\xb9\xe6\xc9\xa12QF\xecg\x9b\xa2\xb9\x05O\x84\xaam\xed\xcb\x01P+\x9be\x1b\xad\xbaB<\x18|\xdb\xb9\x8d|\xe4\x07B\xed\xc3\xebz\xb71Rx\xf8q\xb2rd\xd8\x9f\xe5\xf6u\xe9\xf1f\xfa\x9d\x0bO8bGN\x85\xe3@Q>\xc2\xbf\xfc\xf9/O=\x9b|\xee\x1e1\x1b\xf2o\x13>\x0d\x8c\xdc\x97\xab\xaf\xbe\xfc\xaa}\xe4Yv\xfd_\x02\x06\x87\xfb\xc4\xa7\x15DP\xc0:\x89\x03\xbe\x95\x907\xc3\xa5?\xa0\xdd\xe4\xdb<H&\x00)\x0eA\x85\xf9\x11\x10\xc6/\xdc?\xd9\xbd73\\\x0c\xfc\x90\x0d\xf3\x81'\xa2\xd1\xe7=\xaeF\xfe\x1f\xf7\xbe\x9ad\x03&\xb8\xaf\x18x\x18m\xe5\x7f\xd3\xc0]\x85_\x1b\x10X\xbe\xf7PbI\xa8,\xf5\x88\xcc\xc5\xa9q \x99\xf7\xe8\xe6Zr\x1f \xff\xdb\x93\xb2*v+h\xe9n\xfblH\xc4\xb4V`H^\xc5\xf2>\xd3\xfb\x83\xecY\x9b\xf4\x10\x97\x12\x97\xd7\x88\x1f\xcb\xb6=JHa0:5`\x14\xec\x01X\xa9t\xf8\x9f\xf4\x7f\x18\x012\xfd\xf7\x8e6\xea\x92\x15_v,L\x0fn9 |\xc3\x13qD\xe5L\xea\x1b\x1e7\xbdox\xc6t\xc8\xe3\xfa\x9a\x9e\xfc\x87\x92\xab\x1b'\x0dpx\x9c\x84\xc0\xe1\x193\x92\xb1I\x82\xc3\xe3O\x17\x1c\x9e1=\xf1\xcc\xe9\xc4\xccB\x94\x96\x95m8<N\xde\xe1\xf0\x8c\x19\xc2\x88\\D\xf5\xf4\xf2\"o\xf9\xad\xd8\xcc\xda\xcd\xaaY=a\x96e\xffGQ\xc7\xff\xda*\x8a\xd0]\x97.\xaf\xb2E\xf2\xd5\xb1B0\xa6V\xdbn\xdaX\xd2\x80\xa7\x16\x872\x1b\x0e\x0dy\xcf\x8c\xb8r\xe0)\x81\xe1v5\x0f\xe4\xechG}\x03.,\xfc\xeb\xf0\x18=.\\\xe8]g\x82\xd8\x06\xf8]&\xfe\xec\x87\xd9\x0eOlV1:#@[(\xbd>\xb8\x13\x06\xe1\x0eO`\xfc\x10\xcd\xad\xc3 \xba\xc3\x13a\x00\x908E \x9b\x99\x80M\xf4\xd2\xc3p\xb2\xc3\x83c~\x87'\xe3\xc0\xc6c\x1d\xbd\xa4\\\x0cd\x1c\x1b<<A\x94\xf0\xf0d\x1e\xfah\xc4\xa4\x97Z\xe7\x96\xd9\x08\xa1\x89\x87\x07\xc5\x15kt\xd3\xc2~>\xce\n\x89\x132\x05\x8c\x8c3\x14\x1d\xa0\xac\x1e^\xd9\x9c\xee\xb6\x97\x18\x04N<3tw\x84\xbac\xed=n\xb9m\x01\x1bZ\xec\x88\xa8_\xc2\xefMt\x88\xc9\xb7\x14!\xcco\x87^G\xf0{\xe3\xb5A`\xd5\xd5\xe5u\xbd\xdb\\6t+J\xa2\x8c\x18xHO\xf0\x15\xfe\x12\x0e\xad\xa2\xdb\xdd\xc3\xa1n\xcb\xae\xbc\xa1LL\xf2\xd8\xbf>\x1b}\x0f\x07K\xbc\xed\xea\xc3\x01\xab\x15y\x0f\xf4\xae\xa3\x0dS\x85D\x8d\xf4\xd63\xd8r\xe3\xb1\xc9F\xdf>\xee\xd9\xf0A\x8c\x82\x7fJve\xcb\x13\x94\x86A\x97\x9b\xf6\x04()\xae\xddt:&\xb34\x15\x08;\xf4\xe6lj\x7f\x0em\xd5?j\x08\x15\x07\xb5r\x02]}%\xfc$=\xa0O\x98\x9e\x12\xb1&\x13\xfbp\x8a\x8fE-\x0fe\xa6J\xdfz\xd9\x00\xbd\x13\xe7Q\x9cY\xae\xf1\x94U\xbb\x82\xf7\xb2\xd0\x97AN\xa5\xdf\xd8\x19r\x84\x9d\x1a\xc1\x00\xa5\x8b\xdc {\"\xf2yx\x1aJ\xdd4\xb4\xe8\xa0 \xbb\xe2\xb8S>g\x83\xd8\xf6\xc8\x0c\xa8/\xac\x0d4\x1c\xb8\x96\x8f\xbf>vl\x7f4B\x85\xa8o\xb8 \xd9\xdb\xd4\xf0\xa7kZ\x89\xa1\x00iL\x96\xa7{\x16\xccV\xccE;\xb18v\xd92\x95eS\xf6\x90J\xa2\x03Bo\xaf\xeb\xd6l\xa7\xaf\xa8g6\xa2/C9d2\xf1\xc6\x86\x95\x14]\x1f\xba\xba)\xfb\x90\x8c\xad\xb3\xca\xd4\x1c\xb3\x15c\xfeW\xf2\xd2\x1f\x89\xfcd\xc2wM\xfb%\xa0\x1b\x1ez\xe1[IV\x13\x13\xdd3)\xee\x8f\xbb\xae<\xecJ\xd1 \x93>\x7f\x11\xdf\xd9&\x8aj\x08\x00\x88\x9ce\xbe\x11\xb5)\xae\xc4\xf1e\x13\xaa\x15\xa1\x90\xa4x\xb2s\x1f`\x94E\xac\xba\xba\x11\x038\x90\x86\xcf\x9c\x84qI>\xc4\xb8z\xc7\xb7\xa00p\x0e\xb4\x11\xf7\x9aq\xe7n\xf5Q\x12\xdb\xd7C\x8ejC\x0bZuV\xc7\xd5\x1f\x9f|\xac>\xaa\xe2Y\xeav\x08\xbb\xc1\x8f\xd7\xfd\xa7\x97\xb4\xea\x9a\x92\xb6\x1f\x07\xfd\x9e\xdb\xfb\x1e\xc8\xd9\xc8[i|\xd6\x16\xca \x8d\xe5\xb1\xcc%)\x0b\x85\xe9\xa4\xdd'\xe5\x18=L#\x1a\x90\x08v\x8b6N%\xa1t\x97IPuD)WCQ\xca\xe1\x1d\xbd+rv3\xf4\xc3\xa9\x94!Ik=\x02\xf5\x13\x0f\xfa\x95\x9c\x13\x0f2@c\x05\x06\xbfo\xa8\xf6\x97'\x07\xda\xc0\x81\x94\xcd\xf3\xae)\xeb\xde\xf3\xe3\xee\x97\x0c#r\x89\x82s\xff\xee\xf0N?\xb8\xaeVgD\xf5\x8e\x8d\xf0\xd2\xc2s\xc7w\xd8\xf0\x95\xa16\xb3\x9f\xb9[\xaf\x10\x98\xed\x01\x9c\xdd\xafkY]Z6g\xa4]L\xaa#Tz\xeb\xec\x9a\x94\xd5\xb3\xdbrC\x95\x8a\xe7\xa8\xae<\x02\xa5\xdbf\xa6\xe5\"\x8c\x16)@\x07\xa9\xf3\x853 \xbe[\xd6\x862;\xec\xa7\xbb\xe7&\x0b 1\x88\xba\xde%\xb3\x87\xaa\xee.\x05C\xbf\xb4\xbd\xf3\xc8<\xa6\xbei\x0c\xb0G\xad\xb3\x8eA\xa9]\x9d\xd35\xa4\xe0c\x92\"\x851\xfa\xaa\xee\x9e\xc9\x7f\n\x8c~{<\x1cv\xf7*\xe8\xcc\xfe$\xc9\xd9\x1b\xc33\x1d\xbc\x82i\x96z\x1b\x97\x8d\xf1-\xfa=N\xc3\xa4cj\xab^\xd7\x85\xdfi\x11\xa9\xe1\x011\xfd\xd7rZf\xa8\xe5\x01\xf1z\x1e0\xaaWY\xeaz\x80\xa7\xb6\x07\x8c\xea\xca\xb4\x1a\x1f\x0e\x19\xc7\xa0\x98]\xeb\xc3\xa2W:`\xe1\xf9\xe5?l\x82\x95\x93\x9e\x82N\xbcS\x15\x04\xa6nt\xa7B\x08\x84\xd7\x0e\xab\x14\x12\xfc$\xbcF\x93\xab\x86Xt\xe6\x94\x0e\xb1H\xc9B\"\xf66O\xaa&\x02\xc1\x01\xe7\xa9*\xa2\x114\xd2\xa4g\x16\x19\xd1(\x19\xe5F|\x03\xf2\xb0}\xd6D\xa8\xd2\xb56\xbew\xe7/%-1\xe5\x892\xa6n\x06\x1a\xe3/\x87A\xa4\x8d#h\xf3\xc24c\xce\xb4\xd1A\x85\x04\xe9\x14uH>\x8c\x84J\x92Q\xe3\xfa\x96MN\xf9%\xd5\xb8\x0eM\x97V1^8Wb9\xe4D\xb5*\xe7\xe7\x99R\xcb\xa5\xb7\xc5\xe4\x96Gryd\xd7\x8c\xc3\x80J\xb0\xc8\x9a\xfa\xa4\xd8,\x07w.Y\x96U\x9a\xf9\xe4\xd9\x18\x89\x16\x1e\xfa,\xa9fP\xd2\xeafa;&\x83dsd\x1bxx\xa1!\x1f\x86E\xdd\xed\xac\x13\xdf>\x1e\xaeeq\xf9\"v)\x8b\xd1\xda\xf0\x82e\x9f\xf6?KW\xae\xea\xcb\xd0\xeb\x11\x96\xd1r\xb9\xcbr\xb9\x0bx\xd7/\xaa[yU:\x9d\xc0s\x8c\x82v\xb5n\xb2r\xf7Ay\xf3\xe6hy\x83k\xf5\xe7U\xf2\xe6\x17\xe3\xc8\xa4\x8bE\xf5\xb0\xd4\xfed\xd2\xbf\x1c\x97\xaa\xde\x8b\xd1a\xc7I\x15\x9eD\xaaK]y\x12\xc1\xc4\x13\xd1\x04\xe3\xa5\x9e\xe2j\x82x\xac\xde\xa8Y\x95\xff\x1a\xeeB\x19\x9c\xdb]]\x7f\xf2\x10;\xecH\xe1\xa0wA\xe4\x0d\x1dv\x94\xb7\xe3\xcb\\\x181\xe6P\xf6\x825n\xaba5\xbccU\xde\x0d\x89_\xc3\xd8\x86\xd7\xb1Q\xc8\x04\xa7K\x8f\xe6(\x9e\xe8(\xd2\xd6\xc5j\xcb\x10\xcbR\xf5\x96\xaf\xec\x04\xf8|s\xdc\x89(&NO\x9a\x02@\xba\xc8 3\x0e.\xd0\xf7\xaeN\xef\x91\x9e00\xb1[\xc1D\x00\xf1H\xe9y\xa6.Z\x12a\xffP\x0d\x1d\xa6]V]\x83\xa5\xa0\x8eH\xe8\x90\xad\xa7\x8e :\x00\xef\x8ez\xefM\xf4\xe0\xa3@\x93<<\xa4d\xeaG4\xd5\x03\x92\xb6;\"i_\xb3\x1e\xe9\x19\xc0Z~\x05\xe7\xb9\xf8M\xa8\xc0\x8bH\xdc\x90\xaac\xd2\x9elHG\x82\xa6\xaf\x8as\x11q)\x1c\x1e\xc1\x93/\xa5\x9a!\xc8hD`Z\xa8\xed\\Ao\xcb\xeaj\xa7\xc9L}\xee\x0db\xec7\xcbr\x16\xa1pIA\x8f\x96\xb3ib,\xedY\xddl(3\xa2vZ\xdcn\xb1\x00\x16\x0b\xe0\x97a\x01\xd8\xe7g\x86)\x10$5\xc5&\xe83\xa8F\x1b\x02\xfdA\xb5\xd5\xff\xa4c\x13\xae\xb0\xe7\xdd)a\xd6;\xb1\xb6\xdePK\xcf\xa2\x17\xab\xac\x17\xae\xab\xe7U\xa8\xfd\xcat\xe7\xad\xa8\x17\x94\xa6q\x81\x94\xb9\x96^\xb8\x92^\xde:zY\xab\xe8\x05k\xe8u\xf3*\xe8\xe5\xac\x9f\x17\xaf\x9e7\xb9v^\xce\xcay]\xbcn^\xce\xaay\xd1\x9ay\x99+\xe6\x05\xeb\xe5M\xa9\x96\x17\xae\x8c\x97\xa1.^RU\xbcq\x15\xf0f\xd6\xbf\xcb[\xfd\xceW\x90-k\xe5\xbb\xfcu\xef\xb2V\xbdK\xaby\x97\xb5\xe2]\xa8\xde]\xe6jw\xbeZw]j\xa5\xbb\xa9u\xeeDM;\x84 ^\xe5nF\x8d;O\x85\xbb\xa0\x88\x0fV\xb7\x8b\xcb\xff|\x95\xedBu\xed\xc2\xfd\xc8Z\xd3.T\xd1.S=\xbby\xd5\xec\x90\x93\x84\x89\xf2\xbc\x95\xec:\xb4\x8e\xdd\xdc*v\xd12m\x81\nvI\xf5\xeb\xf0rN\xe3j\xd7\xe14\x9c\x02/\xb3\xab\xd6\xa5NFJ\xc5\xba\xf0\xb8\x93\xaa\xd5\x8d\xacU\x87\xd5\xe4\n\xd5\xa9\xcbS\xa5n^\x8d:\xef\x1a\xce\xa8O\x17\xadN\x17\xaeM\x17\xabL\xe7\x9d\xcc1U\xe9Rj\xd2!\x15\xe9f\xd6\xa3K\xacF7\xae\x16]R%:OQ7\xb4y\xcf\xbb)\x15\xe8\xe6\xd7\x9f\xf3v\xd4\xfauV\xe59\xac\xd2\\\xc6:sx\x95\xb9Y5\xe6\xb0\x9ar\xb9+\xca\x85\xea\xc9\xa1\xd5\xe4\xf2\xd5\x92\xcbZI.\x7f\x1d\xb9\xf4*rI5\xe4\xa4\x97&\xa5\x82\x9c|5Z?\x0e\xad\x1e\x87\xb7\x9eZ\x15,^9nD\xdd\xb8\xc4\xaaq\xce0rW\x8c\xcbY/\x0e\xad\x16\x97\xb7V\\\xdeJq\xf3\xf6CR\x95\xb8\x94\x1aq\xba\xe4\xc0\xea\xc3 [\x0d\xab\x0e\x17\xb6\x812W\x86\xf3\xd6\x85\xc3\xaa\xc2\x99\xb9\xb6\x99j\xc2y\x8dV\xac\x1e\\j5\xb8\xa4Zpi\x95\xe0\xa2u\xe0FT\x81\xc3j\xc0y\xc7o\xccv\x9e\xfaoC\x02\xd3\xf4[\x7f\x9d\x1di\x13\x9dS\xf7m\xc0\n\xfaB\xcb\xfe\x8ei\xff\x98W\xf1\xad\x1b\x1fv\xf1\xd6z\x0b\xbad\x8c\xeeg\xaa\xf3\xe6\xaf\xf2\x96\xde\x15\xd4\x014\xbd\xbe\x9b\x89\xf7U\x8f\xaf\xba\x9b\xb7\xb6[z\xff\xa7\xd6u\x8bWuK\xef\x03:\x87\xf9\xea\xb9y\xaa\xb9yk\xb9\xa5w|t\x1d\xb7p\x157o\xc3\xfe\xe4\x9d\xf0<f\xae\xdef\x0bMo\xed\xb6P\xe5\xb6\xe8 \xf1\xec\xbc\xd4\x81\xce\xac\xd86\x0c1Z\xaf\xcdW\xad\xcd\xce\x1f\x9cX\xabm\x02g\x8dWi\x8b\x1f\xbb\xbc\x15\xdaF\xd6g\xf3\x8e\x19\xa2Y\xb1\xfe*^\xc1\xe3\x0cI\x93\x02\xd9k\xb2\x85\xaa\x93\x85\xeb\xb1e\x1aN\xb6Jlf5\x83qu\xd8\x92\xaa\xb0e\x1c\xf0\xe8\xfak\x9e\x08\x1d\x98\xe3N\xad\xbe\x16\xac\xbd\x16\x1cf<s\xd9\x98\x84)\xe5\xd5\xb0Rj\xd1Bj\x13\xd5\xe09%\xd4\xf8\xaf\x16\xbd\x81\x8c\xeb\xa8\x8a\x96OK\xce\xb5\x8dJ\xae\xf4\x84\xba6o\xd1\xb4p\x1em\xa0`\x9a\x18\x92\x8b[@Q\x0b\x81\x1d:!\xa70o\x914O\x894\xff6\xcc]\x1e-kq4\xbc4Z\xc6\xc2hnY\xb4|E\xd1tc[o!gA4\xb4\x1c\xda:o14\xa4\x14Z\xeeBh\xe3\xca\xa0y\x90nNRiBf\xab\xfb\xf1\xact\xd6\xf1\xc0\xb6~\xe1\x1f\x18\xcf\x16\xce|\x0d\xf2\xb4\x98Z11\xff\xd5Kg\xb9[:1\x1f6\x96\x11\x9b;'6sV\xecr\xb7\xb4\xf1\xe4\xcc\x90\x15\xbb5\x92#\x9b7K6!O6{\xa6\xecr\xb7\xb4xFe\xd6\xce\xce\xad\xcd\x9d]\xbb\xdc-\xad?iy\xb6\x993m\x97\xbb\xa5\x97\xbb\xa5\x97\xbb\xa5\x97\xbb\xa5\xe3Y\xb9 \xa9\xa8\xcb\xdd\xd2)\x93\x93\x92\xa9\x1b\x9f\x85\xa4l\xdd\xd1\xf9\xba\xcb\xdd\xd2\x18\xddh\xf6n,\x7f7\x9e\xc1\xbb\xdc-\xbd\xdc-m=\xcb\xdd\xd2\xcb\xdd\xd2\xc6\x935#\xf8!r\x82\xc7d\x05'\xe6\x05\x8f\xca\x0cN\xcf\x0d^\xee\x96\x9e\x92)\x9c7Wx\xb9[:\x945\x9c\x967\xbc\xdc-=1\x8f8h\x82/wK\xdb\xd4\xb3\xe7\x16\xbb\x89\xc0S\xfb\x83\xec\xd9\x9c9\xc6\xe0\xc92\x06\x7f\x9e\xb1\x93\"\x99)\xd3xrpk\xb9[:1\xf7\x18%\xb7\xdc-\x9d5\x17y\xb9[zx2g'\x8f\xc8O^\xee\x96\xd6\x9eL\xf9\xca\x93\xf9s<k9>\xab\x18\x9dy\x99\xcb\xa3s\x97\x83\xe3\x87h\xfe\xf2r\xb7\xf4\xdc\x81e\xcbh\x9e\x97\xd3\x9c\x98\xd5\x9c}\xe8\xa3s\x9b\xbd\xd4\xba\xe5ni\xfe,wK\xc3\x98\xf4\xe8$\xb19\xee\"\xe5\xcci\xd2\xb1D\xe9\xe5ni\xed\xcf\xa1\xad\x9a;y:s\xfa\xf4r\xb7\xf4\x88T\xea\xffywK\x83\xbd\xbb\x87ddCr\x0e?/\x97\xe3\xa8g)\x8dm\xf7\xe1\x17T\x1a;\x90\xb8\x9fV\x10\x1b!0\x027`^\x82>\x1a2p]\xb6\x9d\xe7\x84\xb1?\x19gK\xbb\x8b\x9a\x9f\\\x91\x0e,.\x80\x97\xbe\x84I\x87L\\4\x8f\xed\xa6Q@]\x99!\x89h\x0cb\x97\xadI[\x16\xe2\x8az\xde\x7f\xf7\xbd\x90\xa9\x19649U\xdc&\x89Z$\xd1k0\xc8\xe1\xf00\xa4c\x8a3\xc0K\x05\x8d\x80\x82\x1c\xc4upB\xd9W?7L\xdb\xe3\xdb\xfa\xd0\xd4\x05m[a\xd2\xf3\xf9@\xe8I\x9e\xcc\xff\xcco\xf9>\xc1\xe2aeU\xec\x8e\"\xc0\xc7XU\xff2\xb3b\x08\x1b\xef\xb1\x10}\x91\x8a\x8c\xec\x85\x17\xdb@\x86\x04\xe3\xc7\xc8\x95\x87\"JD\xa1kH\xd5\x8a\xf8\xdf\x9e\x14\xd7e\xe5\xe4%\xf2^\xa0\x17\x9e\x04\x96\xc2w\xa3P\x92\"\x8b\xeb\xb1\xd9\xa1\xae<\xba\xcd'\x1a\x1f\x9d8A\x87\x86\xde<\xd0\x01\xba&\xed\xf5\xccM\xee\xc9l=\x90\xa6\xbbliw\x89\xb1\x19\xf5D\xbcL\xb1\xde\x03.\x12\x8d?\xf3\x16\xca\xaa\xa3W\xc8-\x99\xea\x89_(\x13\x9a*H\x99.\x88OY\xbf\xe0\xe7\xa4\xe9Z\xda}\xcfg\x0e\xdb2\xdc\xea\xef.\xf1.%\xedH\xb4\x0b\xb2yFV\x9ck\xb1\xe9\xd8\xf1\xb7\xdee?en~\xd0P3\x13\xb6\xc7\xc5C\xda\\\xf1?\x1c\xa0>v\x87c7\xfc6\x9c5\x8b\nW\x16\x1f\xac\x8f\x03\x16./]r8d\xa6\xc8\xf7\x9f\xd4\x073\x93\xa6\xcc\xda\xaa\n\x9a\x99l\xbf\xfe\x83\xf8D\xd8(\xe34uK\xa7\xde\xe3\x9ff\x82\x88\x13mhw\xbdX\x15\x16\x998q\x82g\xeab\xf0\x86\xecZ\x8ab\xf8G\x01\xdeG\x074b\x98S\x88ML\x8a\xba\x93\x0f\x7f\n#1\xa8\x90\x80C\x85\xb8\xa0\x8a\x89\xa9.\x80I\x85\xf8\x0cB\xe2,\xc2\x0c|\xaa\x97`g\x00-<\xd9\xc2\x13q\xaa^b\x01\xfc*L\xc5\xb0z\xa9\xf1NEp\xac\x00\x19\xb0\xac0\x1d\xcf\xea\xa5G\x920\xad0\x0f\xd7\nS\xb1\xad\xfen\xefv|\xbe\xa2\xf8V\x98\x88q\xf5\x12\xe3\xc8\xb6\x04\x9c+\xcc\xc0\xba\xfa \xd2.\x86w\x85\x9c\x98W\x80(\xee\x15ra_a\x16\xfe\x15\xc6c`!\x07\x0e\x16f`a\x03\xfc\xc9c\x12\xab'3&\x16\x1e\x08\x17\x0b\xf9\xb1\xb10\x02\x1f\x0b\x931\xb2A\x1e\x1e\xc6\xc9\xc2$\xac\xac\x97T\x8f\xa1\x0d\xe0eA\xaa\x00\x89\x98Y\xc8\x8d\x9b\x85(v\x16\xe6\xe2g!\x84\xa1\x854\x15(j>\xa7kI91\xb5\x10\xc5\xd5Bb\xcf\xa6\xe1kQRJF\x841\xb6\x90\x13g\x0b\xf3\xb0\xb6(=)\xe8\xfd\x8a\xcd\x0c\xcc-J\x8f\xf5\xa7\xf3\xe0n!\x0b\xf6\x16\xd2 \xa6\x10\xc3\xe0B:\x0e\x17B\xe0\xb4 x\\\x88\xd0\xf3 r2`sa\xf4\xe4\xa5at!q\x86\x12\xb1\xba\x00\x13\xf0\xba\xe0\x077Fq\xbb\x90\x11\xbb\x0b\xbe\xce\x8f\xc0\xefB|\x17\xcc\xc2\xf1\x02$ay!\x01\xcf\x0bI\x98^\x88o\x90q\xd8^H\xc6\xf7\x82\x0f\xe3\x0b9p\xbe\x00#\xb0\xbe0\x01\xef\x0b\xe9\x98_\x88Lr\xe0x\x84\xbfK\xc3\x00C&\x1c0\xc4\xba\xe39\x19\x930\xc1(\xa5\xc0M@\xe2\xc9\x8a\x0d\x86\x00>\x18f`\x84Qb\xbe\xfb\x82\xc43\x03+\x8c\xd2\xf3\x9b\xe9a\x0c1\xf8q\xc4\x90\x19K\x0c\xb3\xf0\xc4(9\x0cc\x0cSq\xc6!\xb6\xe5\x81e\xc2H\xfc1\xa4c\x90a,\x0e\x19Fa\x91\xc1\x7f\xba!\x807\x85\x11\x98\xd3\x14\\2\x8c\xc5&\xc3\x18|2\xf8\x079\x03\xa7\x1c8C\xd8_f\xe0\x97\xf1\xbd\xed\xc30\xc3d\x1c3N\xca\x87mfOn|3d\xdas\x898gH\xc6:\x03*\xccq\xcc3\xf4\xde\x01\x1c\xf7\x0c\x89\xd6\xf5d\xfc3JM%m\xfa1\xd0\xe0\xc5A\x83\xdd\xe3|Xh\x88\xbbRpL4\x8c\xc2Eco{\xb0\xd1\xbeW1|\xb4\xfb\xae\x97\xe8(\x9c4\x80\x0f+\x0d\xf1\xf92V*\x17f\x1a\x86\x9ch/n\x1aF\xf6\xcd\xb3\xefGc\xa8Q*:H\xc1\x87\xa3\x06\xabG\xb1\x0ek\xff\x98\x8b\xa7\x86\xf9A\xda\x00\xb6\x1a\xe2+\x01\xf6\xe0\xb2a\xac!\x82\xb3\x86 \x9d\x0b\xb8F\xa7`\xae\xbd\xc4\xd4=P\x01\xdc5\x84\xb1\xd70at\xd31\xd8\x90\x88\xc3\x86 \xbd\n\xccyNL6\x84p\xd9\xc0;\xe5\xc5f\xc3\x84aM\xc0hC\x02N\x1b\xe2]\x89e\xed\xa5\xcc\xfe\x0c\xdc6J\xcfD\xb3\xc4\xb1\xdb\x10\xc5oC\xfaD\xccF\x1b\xe6\xc3s\xc3XL7\x04q\xdd`\x8f`\x0e\xb6\x1b\xe6\xcb\x8a\x14\x9c7$\xce:\xcc\xc0{{ \xae\xe9x\xcc7\xc4\xe7\x05\x12\xe6\x06\"\xf8o\x88oh\xf5\xa4N\x1fL\xc2\x82\x07\xc9%`\xa3!\x01\x13\x0e\x0f3\xd8\x8c\xf8p\x98\x8d\x11\x87t\x9c8<\xdct\x8c\xc3\x8c\x07\xc9\xd9\x89\x86cp\xe3\x10\xc7\x8eC\xda$\xa4pu\x181Q\xd9\xb0\xe4\xe0\xc3\x93C\x1a\xa6\x1c\xe2\xe3O\x19SV|9\xa4a\xcc!\x0dg\x0e\xe3\xb0\xe6\x10\x9f\x90\x98\xae\xe3\x07Y\xc3\x0c\xec\xb9\x87\x18\xc7\xa3G\xf1\xe7\x10\xc3\xa0\x03\xf8s\x98\xc5\xe3\xc1\xa2C|\xbe\xa2 \xac\xd8\x94\xcd\xc1\xa6\xa3\x04k{\xc6\xad\xb7b[~.N\xdd!\x88f>N\xc6\xae;\x94\x14\x96\xdd\x8b_\x87\xdc\x18v\xf0\xe0\xd8!3\x96\x1d\x06\xa7\n\x82g\x07\xc7\n\x18\x85iwhq\x8c\xbb\x0f\xd7\x0e\x19\xb0\xed\xd8\xc6\xc0\xf1\xed0\x17\xe3\xeeP\xc30\xef\x90\x82{\xc7OK\x00\x9a\xeb\x05\x05K8\xb0\xf9\x95\xa4\xf7\xee\xfc\xa5\xea[\x1a,\xf8\x9c\x19\x1d\xe3o\x10\xe3\xb6\x8a\xc6\xe8\x8c\xd1\x89?\xca\xa8\x03\xcf\x9b\xe6qbe\xdd\xf4\x8cE\xf0\xe0\xe1 \xa2\xaa<\xae\xbc\x87,P/\xa35:i\x99\x8eR\x0e\x0b3R\x86\x0d\x0cn\xaa\xf3\x0b\xa6\xbd\x0d\xc8*\xacu\x0c\xbf\xe7\x97\x88\xa6\x1b\xce \xae:\xa6\x94\xc2\x01\xe2>\xbccw\x8dV]\xe3\x18;\xb3\xfb\xe5px\xad)\xad\x97\xa0~\xe2\x81\xec\x92s\xf8A$i\x9a\x8f#O\x1a\xaa\xfd\xf5\xc9\x816p e\xf3\xbck\xca\xda\xf0\xc2\x0d\xf0\xf2\x07\x1a\xa9\xdb\x80\x1a\xdf0\xfb\x1a\xc6]\xbd\xd3\xd5p\xa0M[\xb6\x86\x1b\x8b\x8d\xfcrC\xabz?e\x97\x0e_\x1b&\x02\xfb\x99\xbbd\x19\x93\x04\xfewY\xcd\xc2\xd8\x0beui\xd9\xe9\x89}\xf0i\x1a\x08\xc5\xde\x82\xbd&e\xf5\xec\xb6\xdc\xd0\xfe\xaeX[=\xef\xae\x1d\x00\x0d\xb1,9a\xc4I\xc1=H7\xfe\x9511\x08\xf3\x8a1L\xf1\xf6\x88\x92 \xe7u\xbd\x1b\xcf\x19\xebz\xe7\xe3\x8bu\xbd3\x8b\x90\xb0\x1f\xcaj[O\xe2\x81U\xdd]\n)u\x89\x85\x8a<\x8b;\xe6\x0bd\xc6\xb5)\x89\xce7\x1b]\xfal\xbf\xd3\x8e\xffx\x81\xa43\x8fK\xd5+m|\x98\xda>\xf7zK\xbdM[\xe7\x0f\xb8\xa5B\xee\xa8!\xf4\xf5\xb0\xf0E\xa7\x1du\x8c\xd7\xb4\xb8\xfe\xcdW\xcf\x14\x06\xd1D2\x86I\xb9\x1au\x7f\xb6/\xdb\xa6x\xe0\x11\xa1m\xb9\x01jC\xc8\x08\xc8!JNa2\xd5\x0c\x84\x06\xb7i\xbb\x9fmpZ[\xe1\xc1y\xd6\xaa\xedT\xd9\xa3\xf8\x08Q\xe9*\x9e\x99V\xf0\xac\x02\n\xc2;\\W\x818\x8cx\xa2\x167$\xf8)\xc4\x93\xb2H\xe2\xb1z\x07fe\x1c\xf1\x9b\xaa\xa2\x1br\xea\x19\x1b\xb5\xab\xebOp\xd8\x91\x02Ej\x80\xf0\xc7\x1fv\x947\x1c\xf2\xe2\x8d\x9c\x94\x98'o\xd4\xc4\x98=4\xe6\xe5X\x95wCx&\xba\x8dm\x82\xbeI\x91q\x88\xcb5\xd9\x91\xaa\x98;)\xe9C\xb5\xdaEc#\xeao\xb7\xd7\x1e\xaf\x95xL~\xd5\x91\xa6\xc3|\x98\xe2\x11\xb6)c\x11?\xdbH\x87&\x157\x1a\x0cx\x8d\xd9<\xf3\xf9\x90\\Z\xe2\x00 3Z\x1f\xbco\xd0\xba\xc3n\xe6\xb0\xa3\x0e8\xf1H\xe5\xf8\xac*\x1a\x8e)\x13\xae\xb6\x10f\xbdl9/\xf5\x85\xbfG:^\xc53jDI\x03\n.\xf4{\xafC\x96\x8f,\xdd\x19+\x9e1.YH\xde\x91\xba\n\xf9\x9auK\xf3<\x1a\x07I\xc8\x1f\x7f>1p\x1c\xe5\x0d\xa9:\xa6\xbc\x92\x0d\xe9\x08\xb6\xff\x8c^)3\x904\"8a4(\xffh\x13\x89\x0dK\x1f\x90\x99\xad\xac\xbc\xbd\x84\xd7-*\x8b\xe3\x8eh\x06\x13Rhb\xe8Nu\xc5\x8d\x00\xc4\x89\xc5\x8b\xca\x18\x14eQ\x06#0n5\xd9\x1fr\x87\x9c'v\xebQ+\xfc*E\xb0\xc0\xeb\xa4*R\x86\xb5\xc07\xf0\xa2\xad,\xda\x8a\xfe,\xda\xca\xa2\xad,\xda\n\xf6,\xda\xca/T[ \xf2\x95\xe0\x02\xc5\xc7\xe3\x8cEw\x12\xd2\x9f\x8e\xe5\x0d\xd9\xd1\xaa\x13\xea\x83\xf32B\x90\xde\x15\xf4\xd0\x89mZ\xa2%\x8e\x86\xaa\x03=w\xb2\x10-\xf2\x88\n\xf9\xc5\xe3MH\\\x14\xa0=\x96\x1dw\xa6\xf3\xd4\xb3]\xe9)\xa9\xd4;\x15\xf5\xb9\x0d\xcd\x8c>\xcc\xd4\xe9\xb0\xc6mn/\xa98\x99\x9d\xebkS\x8d\x99\x05c\xcc&9d\xfc\xce\xc8\x97\xa2\xdbK\xd1\xed\xcf\xb5\xe8\xb6\x19ZG\x83\n\xb1\xc0\x85\xf1\x91\xa46:\xb0\xfeA \x98W\x0e\x13\x10K\x93\x10\xd4\x10B\xea\xc5\x94\xb3\x11 $x\xf7\x831\x97\xde(\x01\x1e\x1e\xc0C\x01\x83\xefzFO\x1c\"\x91\x9e\xa0\xa6g Z\xfc\xb05)\x13l\xc0\x88\x82\x14S\x8d\xe2\x12\xda\xb5\xf5J\xdc\xca\xd3T#f\xc8\xa1\xa4<\xc6]\x82Y\x978\xced`\x80m\xa7\x95\x98\x896\x8c(d\x85%\xd8_\x19B9!kK\xe2\xf1\xe4+;Q\x03\x8b\xa9\x99\x1b_\xe6|C\x0b\xca\xd4[\xd2\x05\x87\x96iH\x81>wuj_b&P\xe2\x0e\x89eI\xe60xF\x9a:\x89=\x9f\x96\xde9\xc5\xa4\xf1\xde\xc4\x04 \xb71\xc5\xb73\"\xe2,;\xc6\xb8\xfe(`\xc5D\xec\x97\xa0\x9f\x15M.r\xfc\xad~\x1d\x0f\x19\x05\x9b7\x9eC\xba\xdb \x1fk[VW;\xaa\xfbW\xb5f\x853u \xc88N\xff\x89\x96DY\xb1\xf9`<\xe9Y\xddlhC7\xdc\x89+\xba\x88wO\xbf7\xc42\"B\xfa\x0b2\"I0=\x1b\xa3O\xab}\xe5\xeaO\xc9\xfa\x8b\xe6d\xfd\x99R2\x86\x163\x89\xee\x88\x1e%\x9e1<4\x8bN%\x9e\x88f%\x9e1}\xcb\xa2e\x89'\x0f@\xdc\xc0\x7f\xeb\xd3\xc1\x0f\xa9\xf8\xa3\x14;\x8e\x9f1\xc6\xbd\xb4\xe3\xdeW\xe1\x18\xb2\xebdV\xba\x10n\xd7t\xc7\x9d?\xa4\x02Rp\xf6\xef\x0e\xf8\x8c)T\xae\xdf\xa0\xbe\xad\x84\xe3\xa8\xae\xb4\xb5\x94\xe59y\x81\xda\xba(I\x9fX\xcdgU\xcbPv\xe9m\x19%\xb7\x1d\xcfRx\x04\xff\xe4\xc3\xe0\xa41\x8a'\xb8\xa6\xc2\xc7:\xf2\xb3\xd8\xea\xbd\x14\x89\x8f\xca_\xc6\x17j\xc8M\x1f\xf2!\xf9D\xb3u\xdb\x8besg\xee\xcd\xdb\x8b\xd7/x\x81#\xe9\x0c\x16\x95\x82J.\xbe\xce*\xa5\x19\xf7%De\xba#^\x02F0W\xb7\x91\x1e}\xce\xf6\xebO\xc7\xb2\x11\x9b\xe2\xaa\xbe\xaay\xb5\x92T\x9f\x12.\x0cL\x8f\xd2+\x9f7\xc9\xa04\xb8\xcf\xbe\xc0v\xcch/\x92\xf2\x1c\xe9\xb4\x16\xc7\xd1\xe28\xd2\x7f\xff\xdc\x1cG\xb2\xa3\xa6\xbe\x15\xd2|\xbc\x9a\x97N\xe09FAS\xbdR5\xaf\xd1\xeaV/\x03l\x1d+\xe9P\x84/\xceHs\xd38K>\xf1\x9a\x8c\xe1J\x0c\x8b^\xec\x82\x8c\xf0\xd5\x18^\xb1\xe7\x17z\x9d\xf7\"\x8c\xa0\xcc\x8b\x89\xaf\xe9\xd7^\x00\x1e\x88\x0f_x1\xe5\xaa\x0b\xff\x95\x16\x93.\xb3\xe0\xe4\x11b\xc1k,\xbay\x17XL\xbc\xba\x02-(\x14\xbf\xb4b\xf2u\x15\x93.\xaa`\xc6)6c\xf1+*\xa6\\N\xe1+\x19\x1f\xbd\x96b\xea\x85\x14\x8c\x8b#\xe4\x82WQL\xb9\x84\"|\xd9D\x86k&\x92.\x98\x18w\x91\xc4\xcc+$\xa6^\x1e\x01h~\x8b//(\xeb\x85\x11\xf9\xaf\x8a\xc8zID\xda\xf5\x10\xd3.\x86\xf0Lp\xe8J\x88\xf1\x97A\x0c\x97>`g\xdcs\x0dD\x97z\x01\xc4\xd4\xab\x1f\xc4\x15\x0f\x08A\xfc\xd2\x87\x19\xd7=x.z\x08\x8a\xf8\xe0\xe5\x0eq\xf9\x9f\xefB\x87\xd0U\x0e\xe1~L\xbb\xbeAqR\x8bX\xe8\xe2\x86LW6\xcc\xb8\xac\x01?I\x98(\x9fqA\x03k\xcf\xa2\xd6\xa1W3\xcc\xbd\x94!z\xa3@\xe0\"\x86\xa4+\x18\xf0j\xe0\xe3\xae]\xc0i8uxg_\xb2\x90:\x19)\x17+\x84\xc7\x9dt\x99\xc2\xc8k\x14\xb0\xd2\xee\xa1\xab\x13\xf2\\\x9a0\xef\xba\x04\xef\x1a\xce\xb8\"!z9B\xf8Z\x84\xd8\x85\x08\xde\xc9\x1cs B\xca\xf5\x07\xc8\xc5\x073\xaf<H\xbc\xec`\xdc5\x07I\x17\x1cx\xee\x04@\x9b\xf7\xbc\x9br\x91\xc1\xfc+\x0c\xbc\x1d\xb5~\x9dta\x01\x04.'\xc8x-\x01~!\xc1\xd4\xab\x08\xbc\xd7\x0e\xcc\xb8p\x005\xbcB\xd7\n\xa0\x17\n\xe4\xbbJ`\xfa%\x02\xc8\x85\x01\x93\xae\n\x08^\x0b\x90~!@\xd2U\x00\xd2K\x93r \x80|5Z\xfe\x1f\xad\x89\x8f\xb7\x9eZx=^\xec\x7fD\x99\xff\xc4\x02\xff\xce0f\x14\xf5G\x0b\xf8\xcf(\xdd\xef\xf8\x92\xd0\xa2\xfd\xd3\xca\xf5\xfbJ\xf3\xe7-\xca?o?$\x15\xe2O)\xc1\xafK\x0e\xac\xec\xbe\xb0\xd5\xb0\x82\xfba\x1bhr\x91}\xbcB\x94\xb7\xbc>VX\xdf\x8cug*\xa9\xef5Z\xb12\xfa\xa9\x05\xf4\x93J\xe7\xa7\x15\xcd\x8f\x96\xcb\x1fQ(?\xa9\x8a\xc9@W\x9b\xed<e\xf1\x87d\x0e,\xdf!\xad'\xce\x8e\xb4\x89\x0e1\x13O\xf9{=r\xe2\xa3\xe5E-\xf8;\xa6\xfd\xc3\x08\xdb\xe8\xbf'\x15\xbb\xef\xc6\x87]\xbc\xa5\xed\x83.\x19\xa3\xfb\x99\xca\xd9\xfb\x0b\xd9\xa7w\x05u\x00M)[\xdf\x97\xa7G\xe8\xf9\n\xd6{K\xd5\xa7\xf7\x7fjy\xfaxa\xfa\xf4>\xa0s\x98\xaf\x0c\xbd\xa7\x00\xbd\xb7\xf4|z\xc7G\x97\x9b\x1f\xb2N\xb1tqo\xc3\x89\xc5\xcd\x9cy\xb4\x9bSs\x98PP\x9e;\xb3-r\xb6\xd0\xf4\x96\x92\x9fT\xc2/\x9c\x1f\x9e:\xd0\x99\xc5\xe2\x0d4|\xb8L\xbc\xaf@\xbc\xd1\xd3\xe9\xa5\xe1'p\xd6x!\xf8\xf8\xb1\x9bZ\xfc\x1d\xd6\x98\xffzd\xd9w\xef\x98!\x8a\xc7\xf7\x17\xfa\x0e\x1egH\x9a\x14\x98T\xd2\x9dW\xe7\xf6P\x0b\xd5\xec\x0e\x97q\xcf4\x9clE\xdb\xcd\"\x7f\xe3\xca\xb5'\x15j\xcf8\xe0qe\xd9C\x95\xd1\x8cq\xa7\x16d\x0f\x96b\x0f\x0e3\x8e\x9d1&aJuu\xac\x8az\xb4~\xfaD5xN\xb5t\xfe\xabEO\x07\xe7\xdbvn\xb4Bz2\x12$*\xb9\xd2\xd3\xe5\xda\x895\xd0=\xa8\x8f0\xdeCG\xe5\xccG\xc8\xa1;tB\xc6\xe0\x9c\x9a\xe6n\xb1mO5s\xff6\x9c[\xc1\x1c\xac\xa4\x98\xc9\xb5\xca\xfb\xda\xe4\x1a1\xbcJy\xc6\xfa\xe4ne\xf2|5\xc9uc[oaF\x1drQw\\\xa3\x85V _\xcf\xac=n1{\xa4\xea\xf8\xacz\xe3H}\xf1heqyx\xf0\xe4\xd1\x18Vh\xd8\xe2\xe3\x13T\x11\x9c\xd1x\x8c\xd0\xc0x~^\x88\x90\x1f5\x13`a\x96a\x97\x05\xc9\x13E\xf1\xa4\xf6'\x13z\xe73(\xcf\x95\x80\x97NP\xf9bx\xcb\x98\x02\xa2\x9e\x8c\xb8i/r: ;=b\xcc\xe1RX\xb6\xf5\x99\x0bA\x9d\x84\xa1N\x18E\xda\xba\xe4ER'c\xa9\xe7\x14\xd2\x01{pY\x10\xd5qLuB\xb7\xa2\xb8\xea\xac\xc8\xea\x11\x1au\xdfz\xea\x08\xa2\x03\xf0\xee\xa8)\x18k\x0f\xa91%\xa3\xe2\xdb=\x1f\xd2:\x8a\xb5\xb6\xba3\x0dm\x1d\x1e\xd3\\\xc4\xb5Al\xed\x96\xb2\x9c\x02\xc0^\xb0i\x0b6\xed\xb3\xc2\xa6\xe1\xeb\x97\xae\x80\x8f\x84\xaaa\xa4\xa6\x94\x0b\x18o\x00\xf4\x07\xf4\x81\xf5\xfe0\xbe-]\xcdF\x18\xf4D\x94\x9b\x97\xce\xbfFqn1\xa4[P\xfd\x0e)\xdf\x9d\x17\xef\x16\x95\xc0\xb1Y\x82\xfc\xa8\xb7\x18\xee-7\xf2-3\xf6-\x82~\x9b\x8d\x7f\xcb\x8b\x80K\xc1\xc0\xcd@\xc1\xe5\xc5\xc1\x89\xdd\x1aA\xc2\xe5\xc5\xc2%\xa0\xe1\xb2\xe3\xe1\"\x88\xb8i\x988\x94P\x10'\x97\x05)\x97\x88\x95C\xbf\x1c\x85\x9f\x9b\x8d\xa0\xcb\x8d\xa1\xf3\xa3\xe82\xe3\xe8\x1e\x02I\x97\x19K\x97\x8a\xa6\xcb\x8c\xa7\x0b#\xea\xb2c\xea\xfc\xa8:\xc1\xb8\x92pu\xd3\x91u(1\x8e\xb6\xf3`\xebf\xa1\xeb\xbc\xf8\xba\xa8J\x11\xc4\xd8\xa5i\x1c\xf9pva\xa4]\xbc7Y\xd1va\xbc]6\xc4\xdd\\\xcc\x9dC\x8ek4\xa8\xf2\x90\x17w'\x8f\x112\xa0\xb9\xd8\xbb\x04\xc0Y\x10\x7f\x97\x88\xc0\xf3\x82ZF\xa2\xf0\xfct\x90\xec\xff\xd9X\xbc1\x93\x93\x82\xc7\x8b\xcfB\x12&o4*\xcf\x03r\n\"\xf3ra\xf3\xe6\xa2\xf3\x82+;\x03\xa1\x97\x80\xd1\x8b\xa1\xf4\xe28\xbd\xe0\x82\x8f\xc1\xea\xa5\xa1\xf5P\xbc\xdel\xc4^2fo,j/\x11\xb7\xe7\x9fD\xcf\xb6\xf6\xbf\x9f\x82\xdf\xcb\x81\xe0\x0bv\xd9\xf9}\x16\x8e\xcf\xa1\x86\xe0\xfa\xb2\"\xfb|\xd8\xbe\x99\xe8>\xb7\xcb.\xda/?\xde/\x8c\xf8\xf3`\xfer\xa2\xfe2\xe3\xfe\x1e\x02\xf97\x06\xfb\x97\x88\xfe\x1b\x85\xffKG\x00z0\x80>\xd4W:\xee+\x8e\x03\x1c\x85\x04L\xc6\x02\xa2\x03\xca\x8d\x07\xcc\x8b\x08\xf4`\x02s\xa3\x02s\xe3\x02\xe7\xef\x91$l`\x1a:\xd0\x16l\x18BPY\x9b\x18F0n\xbde\xc6 \x06\x90\x828V\xd0\xeaa.\xb4`\xd0\x04\xc7\x10\x83\xe9\x98\xc1D\xd4`*n0\x019\x08c\xb0\x838z0=\x0e\x94\x07A\x08\x11\x0caz\x7f\x90=\x9b\x13I\x08\x1e,\xa1\xd9\x8bP\x07\xb5\x7f\xcc\xc3\x13N\x0enyQ\x85QG\x941\x90L\xc8\xc2\x10\xb6p\\\x87<\xae\xaf\xe9\x08C\x94\\\xddx1\x86\x01\x94\xe1\xb8\x91LE\x1a\xa6`\x0d\xc7\xf5\xc43\xa7\xf9\x10\x87^\xcc!\xf8Q\x87\xe3\x860\x1ay\x18\xc3\x1e\x06\x9b\x0f\xa5_\xc5f63\x06q\x04\n1\x8cCL\x1a\xb0/\xd72}\xd03\xf1\x88\xa3\x10\x89~L\xa2\x9b\x17:\x11\x958\x99?\xc7\xb1\x89\xf1Y\xc5\xe8\xcc\xc3'\x8eF(\x06\xc7\x0f\xd1\xec\xe7\x10N1\xca\x00 q\x8a ;Z1\x8cW\x8c!\x16\xb3\x0e,\x1bnq\x1er1\x11\xbb\x98}\xe8\xa3\x11\x8c^j\xa6m\x91\x8ca\x8c\xa0\x18\xa3\x03\x8eqVH\x9c\x90)\x10G\x9c\xa1\xb8\xb0\xc7\x04\xe0\xe3,\xdd}\x0e\xfc\xd1!&\xdf\xf2\x03 \x13 \x90\xa3R\xb6\x13\xc4&\xa6'\xf8\x13\xb4\xdb\xbc`\xc8\x18\x1c2\x08\x88\xc4\xf3\x13\xc5\x13\x04\xc3x6|0\xf5\xde?%y\xc1\x91^xdx\xab\xe6\x86Hf\x06I\xfa`\x92Y\x81\x92\x18T2'X\x12\xbcp\xc9\xbc\x80I\x0fd2;h\x12\x85M\xe6\x07N&@'\xc1\xde\xddC2\xb2\x96\xa8\xb1\xdb\xf1\x91\xfet\xa4\x0d#5\xbc\xa3\x88,\xd0\x81\x05:\xf0\x19A\x07\xec\x8ez2\xf4\x93\xa1\xc1\x1c\x08 i\xc5\x10\xc2\xfa\xdd\xc9b\xca\x9d\x0d\xec\xbd'\x10\xcb\xcdG\x17\xca\xf2rx`\xb8kZ\\\xff\xe6\xabg\xa9h\xdc\x01>\xdb6\xc5\x94\x8e\x18\x1b\x03\xa5\xe6\xba\xeb\x8d{\xfeeR\xbcB\x01h\xd4\xe4\xf7nW7m\x97\xb1\xab\x1a\xb5HW7\xb4\xed$\xeb\xd2(\xa9\x9e\xdb\xfdu \xc5\x98\xfe4\x17\xdf\x11\x01\x0dO\xd4Hcj\xba\x0d\x0e6\xf8\xbb\x03\x116\xe6\x10E #\xf8\xe0\x0828a`S=T64X\x1f\x9b\x89\x0f\xd6\x07\x16 c\x0e,\x02\x16\x9ea<\x85\xa0\xc1\xca\xff\xa3\xfev\xcb\xd4\xae`\xff\xdb\x8e4\x9dm\xfd }\x83\x1d\x99\x8c\xfd\x1e\x88\xaa\xf37\xa8W\xda\x91{\xa6\xc5\xfb\x84V\xc6\xb7!n\xe5\xe8C\xf3y>]\xd4p\xc2\xae\n\x99+s1\xc2\x7fOSs\n\nX\xc3\xfb:\xf4\x02ffh?\xe8\x92\xd4\x02\xfb\x9a|D\x83\xfb\xf6\xe0^\x83\x92\x0b\xf45\xda\xb5!\xbe\x06q\x03\xda\x8bwW\xef\xa8\x99-\xa3,T\x02\x07\xd2t%S\xdd\x1b\x03\xd2;4\xd5\xaf\x9d\x81\xe7\xe5\xf1s\xe3k)#\x0d\x87\xb7E\xbe?&\xa6\x8f6Aa\xe1\xd3\x9c\xac\xb5x\x05\x0e\xba#\xf1\xbdhz\xdc\xe7\xc9\x12Svx\xa5F\xb0w\xae\xa4\xb0c\x02\x13\x04\x02\"\x00\xbc\xac?\xae\xbb\xcc\xe2\xed6/\xc7\xb8x\xbc\x0b\xc6I\x9d\xcb\xb3M\x96\x81qk\x9cO\x07\xd7\xd1\xe2\xcd\xb3\xb9r\x12?\x1e\xb1\xef1\xee\x9b\x8f\xef\xa2\x1c\xd7X\xc1Y\xcc\xd5`\xa8\xa9le4.Z\xef\xc6%\x1d8\x13\xfa9N\x02bjq\xd4\x0c\x1e[Lv&\x0b\xb3\xa89\xcapP\x15\x8e\x0e&\xa1hl6\x06\x071\xfd\xd6\xdb\xdb\xf0\x04\xcf\xe2~\x16-D\xaf\xf5i\xb5\x13{;\x977Z\xe4\x02\xda\xac_\x97\x8dn\x0b\xbf\xabg:\xbf\x84T\x9e )=L\xf7E\xe5\xe3\xa1\x10\xd2\\\xfd\xab>\x8b\xb1jtl\x9d5\xae(\xc4\x95S\x83\x0f\x83so:A:\xaf]\xa0. \x96\xbd\xd7zp\x10\xcf\xbe4]R4\xeeKO\x10,\xb3d\xca$i\xd2+\xefsn\x89v\x88L\xf4\xd8A\xdck\x97\xde)\xe7(M\xf7\xe0Y\x84|^1\x88{\xf2 G\xf7\xe7z\xf5 2\x06\xb4` \xe6\xe1\x83p\xd1\xd8\xf1\xe9B\xf12\x81\x01\xe7\x00D\x1c\x04\x10\x9db\xf1LWyPr\xae%\xa75\x15\xaf\x11\x988\xe0\xb9\x99\x15\xd3\xf4\xa4\x08)w\xc0 \xe5\x04#\x03N\x19\xccX\x9d\n%\x12\xb22\x87\xc7\xef5\x84<c\x99\xaaq\xf9\xb7\xb6\x08\x9e\xfa\xbd\x88\x90P\x7f0qWzk\x0ff\xd1\xc7\xc4\x93\xac\x95\xc9\x96\xd3z\x1e\xe9\xb8g\xb1\xe6hk(\xc1XRK|\x0f\xe5\xd2\xdf\xc4\x83\x97\x18\x9c\xe8}t>\xf5*\x9e\xe3\xbc\x90\x1a\x11\xdd\x1f\xe9V\x16\x9c\xe7\x8d\xd4\x089\xb9\xa3?K\x80,\xe4P\x08\x12\x0c\x11\x85E\x0eO\x11K\x8b\x1cF\x9eE\x0e/rx\x91\xc3\xe2\xf99\xe4\xf0\xb8\xb8\xfb\xa8X\xe5(/\x8bAJ\xf3\xb8h\xbe\x16\xf1d\xf0\xb8\x98\xf4\x0c\xef\x8bx\x0c\x1fL\x8aW)u\xa8\xd6\xc8\xd4\x86\x90\xa2\xdfr*\xcd\x18\xe1\x04\x9f\x12R\xfc5\xd9\xa5\x14\xf0\x08\xa1\x1b)\xcd\x13\x94\xea\x02\x1a\xbc\x1c\x13Zw>\x8e\xb4\xfe\xf7Q\xdb~\x86\xbc\xa6i7\x1c\xfc\x1ds\x952\xddY\xf0\xf7I@\x1aw7A\xc2\x1d\x003\xbb?\xfb\x0e\x82%\x8f\xe8s\xce#\x9a|w@\x96d\xa2\x81\xb2\xcf\xac7>\xef\xb3\xcd\xe7\xde\x11 \xadwAl\xfc\x85\x00\xe9\x82\xf23\xcb\x19\x9a\xc2\xba\x7f\x96T\xa1\xd1,zF\x8a\x90q\x02&\xb3b\x8d\xf5i\xe4\xdc\x8eN\xe8\xe0\x0c\x96\xbb$\x03\x8dd\x9e\xf1d\xa0?\x04\x98\xce4V\x99\x90 \xd4\xa3+\x92y\x87\xff\x02\x83\xf8\x863\xe6v\xe2u\x05\xd6\xf5\x04\xfa\x14\xe3\x17\x15\xf8\xaf(@U`\\\x01\xee\xd0\x0b \xbc\xc2:\xac\x98e\xbc~\xc0\x7f\xf1@\xbe+\x07\xb2]6\xe0\xbdf\xa0\x9b~\xc1@\xae\xab\x05\xc2\x97\nL\xbaN`\xf2E\x02|\xbc\xb6\xab\xc6{\x85\xc0\xe4\xcb\x03\xd0\x9a\x03\x9ek\x03\xe6\\\x18\xc0/\x07\xb0G\x83\xd4t\x9crI\x80\xffB\x80\x99W\x01$]\x02\x90^\xf0\x7fF\xa9\xff\x19E\xfe\x11\x86\x91\xb1\x94\x7f\xde\"\xfe\xd9\xca\xf7\xc7\x0b\xf7g+\xd9\xef+\xd6?\xa7L?Z\x92\xbfK)\xc6?\xb5\x0c\xbf\xb7\xe4\xfe\xc4b\xfbH\x99}\xaf\xa0LC\xff:\x12tb9\xfd\xa1t>6\xbf_\xc4\xdb\x9eW<_\x14\xcb\xd7\xc8\xb9e\xf33\x14\xcc\x9fW*\xdf\xda\xe5\xb60\x9cY\x1e_N\xb4NqN!\xfc`\x95wO\xf1\xfbh\xd9{\xb7\x02tz\xa9{\xf7\xdb\xbfac\x9dT\xd8>e\xb0\xb1b\xf6\xfe\xb1E\x0b\xd8\x8f(]o\x97\xe7\xf6\x95\xab\x9f_\xa8~z\x89zt]&\x96\xa5\x0f\x16\xa4\xf7\x97\xa2\x0f\x15\xa1G'+\xb5\xf0|\xac\xe4\xbcUl~F\x99\xf9\x84\x02\xf3\xe9\xa5\xe5\xa3E\xe5\x91\xda\xecNs\xc8;\xb1\xe2\xf1\xf3\xca\xc6\xa3\x9d\xd2~\x99U$\xde.\n?\xa7\x1c<R\xfe}V\xe1w\xbb\xd0{\xce\x12\xef\xbe\xe2\xeeNY\xf7<\x05\xdd\xb3\x95r\xcf[\xc4=\xad|{\xb4p\xbb\xb4\xf5c%\xdb\xe5k\xc1b\xedNUs\xb7\xb5\xd4\xb2\xdb\xe1\xd2\xec\x89E\xd9\x13\xca\xb1\x1b]\xceY\x82}V\xf1u\xb7\xd8z\xbe2\xeb\xf9\n\xacO_\xddhQ\xf5X9u\xc5\xa5\xed\x12\xea\xc2\x92\xb0\x8b\xa7\xfb5\xf6\x8c\x05\xd3\xd1R\xe9v\x91t\xa3'9\xca\xa3\xa3\xa6\x93]\x12=\xa5\x18z\xb4\x0cz\xbc\x00z\xb0\xf4yb\xd1s\xbb\xdc9:>c\x16\xe7\x978\x1f\x12<\xec\xe2\xe6\xf1\xd6\x8d\xddd\x13\x1a|\xd6\xe3J\x99\xf7t\xda\xa1\x8bC\x9bxG\xb4\x7f\x18\xaer\xfd\xf7h\xe1\xf2.\xdd\xe5\x8d\x96)\xf7\x1a\xf2FW3\x94&\xc7\x8b\x92\xa75\xef\xb8\x0b\xa6\x97 \x07+W\x0b\xd0\xe2\xe3h\xd9\xf1\xb4\xbeN)5\x1e.2\x9e\xd6\xee\xc4\n\xe2X\xb5p\xb4NxZ/F\xd5\x06\x1f\x02~\xb9\xc2\xd6\xc6F\xb1\xc9\xab\x19\x99P\xfd\xdb\x96,h\xdd\xef\xa1\xbd|\xe1n\xcf\x80\xba\x91\x95\xbd\x87\x01h\xe4\x825\xbd\xb1j\xdev ~B\x1d\xef\x11\xec*\\\xb5;\xcc\x1ffT\xea\xe6NR\x8b\\Z\x8dntl\x10\x049\xe0\xd5\x9b\xbdG\x0d\xa2\x03\x87\xac\xf5\xb7}\x85\x98\xfd5\xb7gv}|\x85mtg\xabg\\m\xedhU\xed\x0c\x83\x1b]C\x1b R\x80Y?<\xa5z\xb6\xb7n\xb6wH#\x8a[L)\x87m\x97\xbe\x0e\x16\xbd\x1e\xa9\xd3\xcd)q\xcd\x7f\xfdB\x1f\xe8\x80\x8a\xd0\x8d\xa9`Y\xeb\x9f#\x91\xa5\x9dY\xb8:!\x99\xc5[\xacZt=)\x1d\xd9\xd9Y\xe1\xe4!c\x883\x0bQ{e8\xff\x0d\xdf>9\xcbN\xcf/8\xad\xc2\xbf\x92\xe0\x90+1\xb7\xc8\xb4UXzfI\xe9\xc1z\x93\xf4\x86b\xd2\xb3\xcbH\xcb\xb2\xb7\x92\xdcP@z\x9d\xaft\xb4U4:g\xb9\xe8H\xa1\xe8\x8eV\x1b\xda\xec\xcb\xaa\xe3\xde\xdev\xf5\xcd\xae.>\x9d\xbd\x12\xc7\xc8Q'\\5\xe2\x9a\xb4\xd7\x89\x1cE\x8b\xc7\x1eH\xd3]\xb6\xb4\xbb\xbc\xa6d\xa3\xdb\x83#\x943o\xed\xe3\xb2\xea\xe8\x155\x85\xb1/\xcf\xd9\xec>\xa4\x88##\xac,\x99\xc69i\xba\x96v\xdf\xf3\xd1|\xa1\xfdAN'6\xd3\xdfkCO\x98h\x99\xb1\xf0\xc2nzM\xda\xb2\x805k\x07\xcaj[O\x99J\xfe\xf5\xc8ipr\xdb\xc9\xe10\x8f\x84_\x9c\xbeT\xe9vP\x90\x03c\x1bJ\xb3T?7Lbp\x1d\xf9\xd0\xd4\x05m[\xa1%\xabY\xb14\x18\xfesqM\xca\xea\xc4\x0c6\x14\xbb\xa3p\xa5\xeev\xdaKL\x01!l\x1c\xc7B\xb4\xad\x82\x1f\xa2UGA\"Cj\xcdc\x03e\xddv\x9c\xc96\xa4j\x85\xbfuO\x8a\xeb\xb2\x1a\xb2\x95Yk\xb1\xe4\xd7\xc9v\xea\x0c\x8b\x90\xfb\xef\xf9\x84\x98\xbd\x13;\xf0\xd0\xd0\x9b\x99\x1bp\xee1\x0cp\x14\xf0\xf5\x04\x82f\x11\xc2] \xc8a \x82\xa6p\x87\x08\xa1aB(\x91\xc5\xcbu\xe4Rqm\xb7\xbb\x9c\xc6\x9b{\xf2\xecs\xb1\xbf\xc5\xe2\xb2c \xdfa\xff;\x91|/{\xdb\x89\x04\xec\xfeq\xc7:\x17\xba\x87\x03\xd4\xc7\xeep\xec\x86\xdf\x86\xbd)\xbf\xe65\xfeg\xf7a\xc8\xff\x9d\xf6=9\x1c&~\xc9\xd7W*e\x13IP\xa6\x81T\x05\x9d\xf8y?\xff\x03\xfb\xd5\x8e=;QuKSS\xb9\x1d\xfa\x86\x10\x10;\xdb\xb0R{6,\x802bg\x8a3\x8f\xea3\xec\x8c\xbcWg$Y\xd8Z\xa7\x1f?\xf5\xd8i\x9f2\xa5\x9e\xd3\xac\x0dE\xca\xfeU/\x07\x93\x07bI\xf6`\x87\x0cqlH\xf3\xd4\xcfp \x9eQz#\x92;\x87\xd4F%vHZK\xe4\x03\xd3\xf9Wd]\x94=\xf6\xe1\xf4\x9b\x97g?\x8a\xb8\xe8\x0f\xf5U\xf22\xed\xdb\xab\xcb\xb2\xda\xd0\xbb){n\xa7\x1a\x02|\xa9\xe8\x0d\xad\xbai\xb6s2\x94\x97\xbfn\xfc\x12\x90m\xa4\xeb\x9ar}D\xaeA\xc4\xba&\x9e\xe0\xedSh]\x97pe\x17\x00\xe7:\x19\xf5\x04e2\x9a\x8a\x9a\xf4e\xdc;w\xaa\xe6E\x0f\x9c\xf4\x93\x05\xb7\x0d9\x1c\x98\xe5\xcfo\x86\xe9\xe4\x055l[\xf3.!\x04\x89}s\x93xD\x07\x19\xdbn;J6\xec,4\xe4\x963\xa4\xd6\x0c\xc2h=\xb6n\xcby\xcfi\xbcf[\xab\xef-\xad@\xfc\xa0\xf0CF\x87\xd5eC\xc3\xea\x1b\x04\x15b\xe4\x13\xbd\x7f.\xb2k\x0e\xa4lZ\x91\x02\xc1L\xfc\xb4^\xfb\xfb\xcc\xbb\xa6_~\x04\xed\xae,\xb8\x1c\xd1{-[\xbce]\xa6\xfb\xb2\xe3F\xfb\x915\x0dmm\xf8 \xe9\x1d-\x8e\x83\x9b\x13__\x93!h>\x9dA\x90\xc9\x1eI\xff\x11g\x03t\x03\xdd\x1d\xffVeY\x0cg=\xcc\x7f\xd4\xe4&\xb3\x1e\x04\xbddl`k\xbb;o\xe0\x13>o+k\xb7\x84\xc5V\xdd;\x13\xdf\x91\xf6\xac\xda\xd6\xc9\xf3pE\xda\xcb[RunbH\\\xee9\xf3\xf0\x1di\xff\xc4i)\xaf\xafr\xae\x1f\xab\xb2\xe3\xc2\xe7\xb6n>\xc1\xad\x84]\x08'Uw\xc7\xb3\xa8i\xc3ZXi\xdd:\xb6\xb9:\xf5\xa1\x1d\xba4\xf8\xa8\xaeH\x0b\xa4\xe8\x04\x8c\x88\x89e\x81^\xc1\x08\xb0)\x1d\xf4\xb1\xbb\xe1\x0cp\"\x12\x1e\x14\\\x97w\\wM^\x16&\xc5\x13\xc7n\xe8\xa8~n\xfb\x8a\xe9\x05e\xcb\x93h\xb9\x8e\xd0\xd0\xee\xd8T*EGe5\xf1@k\xb5\xd9\xd1F;\xe8p\xd6\xc1\x8f\x1f\xde_h\xe4L\x88\xc3\x8eVW\xdd53;\xb6\xe5\x9d\xc0\x0dr\x006\xafoB\x0fDD]X\xab\xa21\xe1\x9d\xa3\xd6)\x07\x9d\xbb\xb4Fb\xed+zhhA:\xba\x91\xa8;\x91\x13\xc8\xe1w\xe5n\x07\x87\xfa \xfc\x82'\xb0>v\xbc#\xb4\xe1\xfa\x85*\x97\xa2\x11\x93\x87\xea\x0bc8\x05\xe1\x80\xaf\x0e\xc8\xae\xad\xcd\xf4\xc2\x1f\xdb+\xf3^\xad\x0f\xef~P\x1b5\xa6\x85XK\xc2\x98\xa1Y\xcb\xae\xbe\xe2v\x04[K\xb6\x9f\xe2\x8b! /\xea\xcdg\xa1\xde\x00X\n\xac\xfb\xa5\x9da\xa7\x9e\xb8f\xc4\x05\xf4 S\xcav(z\xf0\x89\xde?\x1b\xf4\x85\x13 m[\x17%\x19\x1c\xfaX15\xbeg\xbc\xaa\x8e\xd5\x05\xa1\x1dpF\xdd\xea\xa6\x02l\xe8\x0d\xdd\xb15\xe0q{\xd2u\xa4\xb8\xd6\xd3u\xb5\xedl\xee&+\xe9]\xd5Y\xfa\xb6\xacxf0w\x1asi\xa8\xfe\xf2\xf2\x9a\x16\x9f.\xee,\x94\xc0\x0f\xa4\xa3\xcd\x890Q\x88\xc4\xcd\xec\xc9=\xac\x87\x1b\x1d\x8f\xdc\x96\xea\xaeiK\xe5A\xf1\xa8J\x7f\xc8\xaa*i\xb4\x14g\xd3~\n\x9df\x9dS\xfd\x0c\x87\xda\xc5_\x07\xb7yl\xa7fDa\x87p\xd89\x91\xd8\x19\xb1\xd8\x014\xf6,<v>Dv\x0c\x93=\x11\x95\x9d\x1b\x97\x1d@f\xe7\xc6f{\xd1\xd9\xb3\xf1\xd9\x0e=\xc2\xc7\x8a\xb4\x93\x15\xa3=\x1b\xa5\x9d\x1d\xa7=\x0b\xa9\x9d\x1f\xab\x9d\x11\xad\x9d\x1b\xaf\x9d\x11\xb1\x9d\x82\xd9\xce\x88\xda\xf6\xe3\xb6\xe7!\xb7\x1db\x18\x92[\x88\xac(\x96{.\x9a\xdb!\xe7\xa2\xbb'\xe3\xbb=zg@\x14{\x83cq)=\x11\xe9\xed2.\x85\xfc\x16\xf3\xaf\xfd=\xd4\x83\xccxo\x0c\xf1\x9d\x05\xf3\x9d\x19\xf5\x0d\x88\xc0\x9d\x89\xfc6hu\x0e\n|\x1e\x0e<\x02\x8e\xf6b\xc1\x13\xd0\xe0(\xc0s\x04\"\x1c\xff\xfeo\xf8\xd8'\xe1\xc2S\x07\x1f\xc3\x86\x87G\x1a\xc5\x87\xc3\x18\x848\x02\xdc\xf5\xa2\xc4s\xe0\xc4=\x9dKB\x8a{Wk\"Z\x1c\xc2x\xf1\x10b<\x8c\x19\xf7.`*n<\x8e\x1cw\xb0\xe3\xb3\xd0\xe3\x90\x82\x1f\x1f\x83 O\xc0\x90\xe3\x93\x84lG\xfc\xbd\x18\x96|.\x9a\xdc\xdb=\xe3\xb7\xac\x98\xf2\xec\xa8\xf2\xcc\xb8\xf2\xbc\xc8r?\xb6\x1cA\x97\xe7\xc2\x97gD\x98\xe7\xc6\x98\xa7\xa2\xcc\x13p\xe6\xc9H\xf34\xac9\x826\xc7\x10\xc9\xe9\x98\xe40\xe2<\x19s\x9e\x84:w:\x9f\x13y\x9e\x1d{\x9e\x13}\x9e\x13\x7f>o\xbd\xa3\x18\xf48\n]\x17\x0c\xfeh\xb5\xe1\x07u\xa30\xca\x7f:\xbc\xc2\x17\x9d\x9d;\x11u:\xad\xee\xcd\xc0Q\x00.b\xf4B\xc4\xe7\xb4\xa2\xb6\x82\xb5\xf4>jnv\xe1\xce\xe9@\xd4OK\x17H\x0e\xfduF\xd0\x051\x05\xb1@K\xf7\x00\x8eb$\x94\xe25L\xc7\x98\xb1\xa1\xfc\x8al\x01t\xf1\xc4\xc2\xe8\xbe\xcedL\xf3\x98\x9d\xe0\xe1\xdd\\\x17w\xa3\xaf\x0b\x9d\x9cE\xdd\xa7\xeb1)\xae\xb2\x0f5\xefHw\x97\x90\x02h\xcc5#\xa4\x85px\na\x9f\x11^oh{ \xd1\x12\xcc\xb2OL~\xf0\xd7A\x81n_\xd6\x1b\xaa\xd1\xb2\xc9\xa4\xa4\x97\xb9\xfcA\xc4\x7f\x19=\xd5\xcf\x84(=\xc6d\xf8\xd2\x9e(sB\xbe\xda\x90\xdb\xcb\x91\xc1d\xe3\xec\xb0\xf9\x94i\xc0\xca{\xa3\xa7\xf7\xc1\xae\xbe\xba\xa2\x0d<a{K\x10}\xba\x82\x1fy\xd8L\xa3R\xd5\xd5\xb3\x0d\xedx\x02f\xd9ve\xa1\xc5\xb9\x1f\x98\xdd \xc9\x80:\x1d<\xf9\xdc\x9fzn\xcc\xa5N\x08\xe1^v,]\x7f\xfd\xe7 [wH\xa4]\xfb\x8b?\xfa\xec\x8f\xba\xeb\x9fc\x83\x10\x8fg(\xe2 \x0eH<\xe1a\x89\xc7\x1b\x93\x17Od\x84\xe2 \xc4\xe7\xc5\x93@%\xe6 U\xcfT!\x14\xee\xbc/-Q<1)`>\xf1\x91L\x96`\xc1=\x86\xf5\x7f\xb6\x80\xd3\x9f\xd8\xc0\xa6\x87\xe8\xdd9\xd4\xb2\x1b\x9d?:\x01z\x88tnn\xc2\xa3AL\xa9\xf82\xed1\xd6z*\xebgGd3\x8a\xeb\x97}*!$I\xa4S4\x0bD\xb5\xe8ogt\x16b@R\x9f\x1a ~\x0d\xfd\xe9H\xdbN\x85\x9a\x06\x85cb\xa6ar\xc3*\xa1\x90C^\xddf;'\xe7= 1\xd6-\xc5\xf3\xe7'l,\xc5\xf3g$i,\xc5\xf3\xc7%f\xccL\xcb\xc8\x9c\x941#%#wBF\xb6t\x8c\xbc\xc9\x18\xd9R1\xe2\x89\x18\xd9\xd20\x96\xe2\xf9K\xf1\xfc9\xc9\x14K\xf1\xfcyI\x13)\xf5\xe4\x97\xe2\xf9\xda\xb3\x14\xcfW\xcfR<\xbf\x7ff\xa4?$$?\xa4\xa7>D\x13\x1f\x96\xe2\xf9\x99\xd3\x1c\xb2&9\xe4LqX\x8a\xe7CrZC4\xa9!1\xa5!%\xa1a)\x9e?\xd0\xca\x9c\xc0\x90/}!_\xf2\xc2\xf4\xd5\x8d&.\xc4\xd2\x16\x14\x97\xee\xca=m;\xb2\x8f\x95\x07 xi\xcb\xc1\x91th\xe8MY\x1f[\x11J]\xc1\xb7\xcc\x0e\xe6\xf1\xd4\x16\xfe\x00_\x9e@\xd9=\x16\xd3~\xcb\x7f\xe5[dS\x1a\xa0\xbe\xa1$\x1fH\xd7U\xdfG\xf3\xb2O\xb8\xa9\xbb^\xa7\x96-\xfe@\xda\xee%/\x97\xa47\xae\xd1\xfb\xfak\xf8\xd2,\x13\xc6z\xc4t\xea\xb6lyKJ\xdc,@\xd4\x05\x88\xba\x00Q\x1f\x02\x88\xda\x07\x91dn\x89 \xd0cN\x85\xde6\x14\x0eB\xa2\x0c \xbdL'\x16\xab\xe8{#\xeb\x081\x8d\xabn\xa9\x8f\xb4l_2\xef\xd6\x8au\xf2O\xf5\x06\x14\x95\xa1DY\xd5Q^\xbb\xb4\xa1\xa4\x85\x1f\xea++\xb5K\xf4\xe5\xc4q9ik\xa9.`>\xe9\xa9se\xd1\xec\xa8\xde\xc9\x84\xaa\xc1_\xad\xbe\xfc\xf2\x84\xfd\xcfoW\xbf\xe3\xff\xfd\x1d\xff\x02_\x97!\xdb&\x16\xdcSWGCw'j\x1e\xb0\x9dd\xdf\xb2\x7f1\xf8\xb6;r\xd5j\x81R\xa1\xed*e\x99\xd7\x07h\x85\xd8\xddP~+\xb3\x96\x14T4\xf7\x87\xae^\xf1z\nm9\xdcE\xfd\xb2\xde\x1fH\xd1}Sv\xa7\x8c\xd9 \xa6\xe003\x97\x81\xd1\xbb\xae!\x97\xeb\xb2k/\xf9\xdd\xfcNT,%s\x86\xee\x0c^\x8ar\xadp\x01\xb4\xff\x1ejh\x19\xe3\x10\xf5+l/ \xaf\x88&\xf2\x7f(w\x842v\xb1.;\xc1\xe8\x87 /y\xc1Z\xeeL\xecj\xa0U{lh\x1f\xce\xe8\xaf\xbc\xe6+\xd6\x91O\xb4\xe5\xf1\x02Q\x9eZ\xaf4,\xe9\x89\x06\x85)\xc2\x15\x0dAA+\xe4\xafZ\xacj\xd6BC\xc9\x06Z\xb2UNX\xf1;\x9bO^\xbe\x96\x17\xba\xaf+\xe9\xf2\x85\xa3\xf0\xa7\xf5\x0b\xdd\xdd\xad\xda\xf2\xaa\xd2\xef\x1b\x7f_^U?\xf6\xc9M\xce,\xeb\xf7\xda<\x83\xf7g\xdf\xbd\xb9\xfc\xf1\xed\xab\xd7\xc852\xfa__\x9d\xbd{\xfd\xf2\x02\xf9\xc3\xc5\xeb\xff{\xf1\xe1\xf4\x07\xef'\x97\xa7\x1f\xfe/\xf2\xc7\x1f^\x7fw\xfa\xf2?.O\x7f<{\xf3\xf6\x92k\xae\xee;\xaf\xcf\xce/\xbf\xfc\x7f\xbe\x94\xdb@\xde|\xe3\xef\xb0'cO\xce\xc6\xa0\xf9\n\x19\xc5\xe7\x0c\xf6\xec/\xc2\x83\xdc\xb5\xc0\xd4\xea\xfe\x16\x8e\xab#i\x18\x7f\xa2C\xde\xe8\x85\xb8\x95\xfe\xb8\xd7BuE]\xb5\xe5\x866\xech2\xd3\xadl\xbb\xe6\x9eo\xbd\xdd\x0e\x84\xa6\xce\x1a\xe3-\x0de\xa3\xf9\xcez\xc9\x97\x10hQ\xb7\xf7mG\xf7+8=\x1c\xc4\x89g[@\xc4\xcd\xc4\xa6T\x9e\xd1\x9e\xa8\xdal=i\xf9\xb1Ho\xe0\x9d\xdb\x95\x9f\xa8\xfe\xadT\xd4\xb5o\xb4\xb4H\xb6G\x8f\x0d\x91\x17\x11\xd4\x07Z\xb1Y\xda\xb3\xf6\xce\xdf\x01\xb9b,\xb9\x93!\x89r\xc7\xe9\x92\x0d\x1brEo\xa1 }\x19\x15\xae\xf5\x97\xed0\xed|\xba\xa4\xb3X\xb2\xe2\xb2\x19\xfa\x00m-\xfd\xc9\xe5vKy\xd5gA\x88\xb0\xd1\xf0\x10\x10\x11s\xdcvl\xff\xcbX\x0b\xc8b\xe2\x9c\xfc }=\xfb\xd9\xb3kzo\xbb\xbc\xee\x7fX\xad~k\xb0\x13)m$\xd9FC\xff\x93\xaf\xca\nkSl\xf9\x17\xce/zK\xd6\xde\xe3\xd6\x14\xb7\xfd\xd9\x94\xbd\xaa\x0b\xc9\x05$\xf9\x1b\xda\x08\xbe\xcf7i\x9f\x1e#D\xa8H2vz!\x8f\xe4\x0b\xf7'\xa1\xa0\x89R\xe3f?\xc4\xbea#\xe5-\xde\xeb\xc5\xbd\xac\x8b\x85:z\xd7\x1d\xc9\xceqJ0\x93\xef\xa0\x0c\x0c\x19h3\xdf\x91\xf4x\xdf\xed)\xea\x17\x11\x93\xc8\xbf\xfb\xb5\x7f\xb6\x19\x83qg\x9c\xfd\x9a2\xeb\x1a\x97xU\x17\xaf\xca\x86\x16\xdd\xe9\xf1n\x05\xa7-\xd4\x87C-\x85\x82M\xfeD\xec\xbea\x1boj\xca\x19w\xbfK~:\x96r\x8e\x99\x1a\xaaZ\xe7u\xdbE\xfcK\xfe\xe91|\x14\xffw\xc9\xb4\xd2\x8f\xc1i\xe8\xaf3\x08\xb3\xd2\x17\xa1?\x8a-\xb0&\xc5\xa7[\xd2lZ+\x14\x8a\xcf\xce\xe9\xbe\xacj\xa1jh\x07\x02\x1a\xba\xafoDz\xbd\xf0\xcb\xb1m\x85\xeeH\xc9\xc9_\xb8?ik\xc4cG\xfd\x842\xb9\xf7\xfa\xec\x1c\xf8;j\xf6t\xbe\xa9\xe6\xe9\xd5\xbf\xaf\xe0\x1d\xdd\xbe\x00\x1eB|\xf1\xfc9-\x0f\xed\x8a_\n@\x8f\xfbU\xdd\\=\x7f}v\xfe\x9e\xfd\xfc\x8cI\x13\xf9\xddK\x15C=A:U\xb6\x92\x95\x0b\xbe\xcef\xccdh7\xa4)I\xd5)\xb7\xc1\xfa\xd8\x87N{\x1dd\xa8~\xff\xfe\xd5\xbfk.\xd3\x15\\0\x95\x80\x1f\xa5\xd7g\xe7\xacO'p_\x1fy\x18z\xe0\xa2\x07\xd2j\xbe\x9d\x8f\x17w/\xebj[^}\x14'\x95;~\x10\x85G~\xffQ\xf5\xf6{\x81\x8b\xf8\xa8\xa6\x93\xb5&2NX\xa7\x98M\xb2\xa1E\xb9\xe1\xfc\\\xf8U\xa5\xb4\x90\x84\xe4'\xf6\x12\x87\xf6\xe8\xefV_\x19\xeaI_\x8a\xef\xd8]\x8f\xaa@\xa7\x1d\x8b\xb1^\x84\xff\x7f\xc36\xc4\xe3\xff\xdfs-\x19\xe3\xb9\xdb\xa5\xf7\xbc\x05\xd6\xa9\xc7\xfd\xc7~\xe3K\xef\x8fY\x83Wc-\xc3\xcdp\x92\x05l\xd4A\xe7\xd3\xae\x91\x93\xd7(h\xbf\xb0\xb3%\xaa\xa3\xd5[\xae,se\x85\xe7s\xecIW\\\xa3d\x95$\xf8\xa6\xde\xdc\x9b\xe5\xd5{\x83\x87\xaf7\xf7W*\xaa\n\xcerh\xca=\x0f\x0dsZ\xbdmQW\xd4\xc9\xbd9\x90\xfb\xd6\xf6+mi\x7f\xdc\xb7T\xf3M\xf8\xe7\xf0[\xda_H\xb3\xa5B\xbc^\x91\x16v\xe5\xbe\xec\xfa\x99\xd3\xedU\xad\xef\xb2\x93\xc6\x0d\"V&Pl<|\x14}\xd7\x05mJ\xe5%\x12\x1a\x9d\xe1: \x9d\xbaq\xa5EQ\x8b\xabP\xe8\x0d\xd9\x1d\xc5\xa5\x1c\\\xee\xd5\x1b\x81;\xd9\xd4<\x89T\xddw\xa7\x91\x11\"]\xb8*t\xf2*|>l\x97\xb2U\xf7[\xd0\xb6+\xf7\xdcwrS2Y\xb6\x977\x87\xac\xacs\x91\x94+(,\x16,\x01\xc2\xf5\x80\xa1\xfe\xaf\x80\xf7+\xe4\xfb\xda\xd0\xaa\xdec~\xa8\xa0\xff\n\xebm\xf4\xb3\x98\xe7\xeae]V\x9a\xb9\xce\xaf\xb8\x1c.<\xa9\xea}Y \x96\xca\x96\x92T\xb2\x13X\x0d\x917o/^\x0b\xd0\x8a4\x04\xfb\x02\x84\xa4\x82\xb3J\xdd^\xd7sj\xddi\xee\x10\x13\xf1.\xb7\x91~\x1b\xb5\xc3\xf9_\xdf\xc3U}Us\x13\xd3\x8c\xf0I\xf4\x8b\xec\x8fS\xdeR\\\xc1\"\xd3\x9dH)\xe5\xdb\x96\xea{\xf4\x8a\xb4\x97\xfcP\x8eL\x93qn\xc1\xc0\xef\x11\x02\xbd \xbb&\xe8\x15\x91f\x8c\xdc\xfb\xdc0g\x02h`\x0b\xee\xa6\x93\x9e\x1e{\xea\xd6<\xef\x8b_\xb8x\xec3py\x16\x1b\xd4Eqlt^r \xf7\xd3\xae\xe2t\x86\xc6o\xffki'n\xd7\xb1\xb8\x97\xc2(\x96L\x01\xe0E\xbe\xc9\xbd\xe2\x1e[fm\xc2\xd9\xd6\xa2\xd7\x93\x1a*\xac\x90\x82_^%\xa4\xc3\x81\xdc\x0f\x9f\xdbS\xc0\xf9<\x1b\x9ax\x97'%uw\xaa?O\x04\x8f<J[\x8b\xff\xbaQv\x1e\xdf\xc8\xf6d+9\xfe\xd4i\xa9\xa5\x9d\xe4\x83\xfd\xd7\\-\xfeUUw\xbf\x92\xd9n\x82\x1f3!W\x8a+\xa1\xd4~\xb6i)\xe9\x86\xc8\x04}\x9fr\x13=u\xd5|[\xb1\xdc\x0eS\xcc\xe4\x81\x98\xae'\xb4\xec\xef16\xd6p\xb8\xc0\xf1\xe8\xc9z\x16\x04\xf8\x14<U\x99\xe6\n\xf8\xc0[\xe0\xfd\xee\xaf6\xb4W\xac\xe6+\xcaVS\xc7F\x18\xbd{,\xbc\x15k\xb2#UA\xd9\x9eq\x1d\xea\xe4\xc0\xb8qS\x92\x8ej\x8d*K\x05\xe8\x1d\xbf\xcdK\x0cF\xd6\x88\xaf](\x07{U\xb9\x10z*\xad4\x80\xb8)\xb0%\xe5N~\xd4\x95\x87\x145\xe0\xa2<\xa8S\xdf\xdfD\xda\x95\x07-\xefPw\x9d\xf3\x89\xe0\x9c\xaad\x0c\x99\x9bO\x1a1\xce\xafWV\xd4]\xaf\x04[^U5\xe3\x98\xe5V\x1fj\xb9\xa9\x1ewJ\x11\xef\xcaC{\x02\xe5\x8a\xae\xd4\x1f\xc8\xc6te\x1bz\xc6\xc7\x8b\xf2\xf0\x8a\x16uC\xba\xba\xf9\xc8\xbaUv-\x1c\xea\xb6\x93@\xe4\x04'so\xcb-\xa2\xdbx\x16\xd1\xed\x17\xdd\x9c\x13\x96z)\xc1\xae<\x1c\xc6\xf2?\xf1MO]\\L\xd2\xe7\xa1J\xc1\"\xa5R\xcf\x7fe\xab\xb8\x93U\xc9\x04++T\xa9\xf8\x92o\n\xfb\xa8\x87\x7f)\x87;\xb7\xf9U\xfe\xbd\xc5\xe7]\x9b\xed\x9b\xa6&\x9b\x82\xb4]\xb2\x8b\xfb\x9bwoO_\xbd<}\x7f\xe1\xf7s[\xaf|\xf3\xc3\xdb\x97\xff\xee\xfb\xe3\xfb\xffx\xf3\xd2\xf7\xb7\xd3\xfe\x8f\xc3M\xed\xe1\xd6\xf1\xf94\x06i\xb9H\xd6\xeao\x83\x9f\x84\xfd|q\xf7\x9e67eA\x87\x19\x82w\xe7\xaa\xa7bw\xea\x8eR\x7f\xbf^\xc0_iS\xcb\xd8-\xcf\xcd`\xed(\x99\xed\xa5\xc0'\xed\x05\xbcz}\xfe\xee\xf5\xcb\xd3\x0bF\xe7\xd8Rl\xf6\x94PS\xde\x13\x8c\x90r\xa7H\xc9\xd3\xdf\x10\xc8\xfd\x16\xdc\xe4\xbd\xf9\xf5\xea\xb7\xff\xb2\xba\x83\xba\xe2\x8e\xac\x95\xb7c\xacIg\x1dx?4.r7\xcc\xab\xe6%T8\xceb\xc7cG\xb7\xa4\xec\xaf~d\x13C@\xc6\x7f\xb5\xba\xef}=\xf0\xba\xda\xdd\xfb;u\x8a\xf6\xeatJ\xb7d\x1b\xa2l{\x0b\xe5\x9eg\x84tT4\x1f8A\x17w\xef\x84j\x92\xec\x92\xe9\xee.\xb9\xfbyl\x10\x0f\xec\x9d\xae\x08)&\xd4\x90[L\xc5\xdb#\x18}\xab-\xfd\xacC\xdayG_\xd3\xcf<\xfa\x82v\xee\xd1\xbf\x9f\x1a/\xa4\x9e\x7f\x08J\xbc<|@#\xc88\x82\xf6O\x9b-@\x16\xd6\x80R\x99\xce\x1e ;\x8b@;\xf80l\x02F\xb3\n\xb4s\xf9\xd9\x05\xf8YFT*\xf5\x8c\xa3?\xbe\xf2\x9f\xec\x84\xf6;\xd1\xd9\x87\xfdg\x92\xde\xbb\xf3\x97\xfd\x0e\x8c2\xaa\x91\x05M\xba\xbb\xbe\\\x90\xcd@\x92\x14m\xbb \n\xa4x?\xbc\xce\x0fOq\x14\xfe\xc6\xdd\x88\xcb\x1e\x8du \x15J\x01\xbcXJ\x90xJ\xd1\x14p\n\xa7\x0c$\xc7\xdc3k\x0d\x05-\xa2\xc2\xdf2\n\xa9@\xf2\xdc\x84\n\xaa\x00VT%\x9d\xf4\x7f\xdb&I*\xca>\\`\x05Bp{p\n\xad\xc0\xcfd\xf8y\x8b\xaf@p\xdd\xc5\xe3_}\xc0\x0b\xb1@\xcc\xa2\xc4\x0b\xb2@`2\xc4\x13\xa8f\x12\x98\x18\xf1\xc4+\x99p\x12\x9e\xbfE\x06$\x9eX\xb1\x16\x88\x0eP<\xc1\xa2-\x902X\xf1\xc4\x87,\x9eH\x01\x17H\x1b\xbdx\xa2\x85\\ \x9dZ\xcc\x87\xa0?S\x8a\xba\x04 \x9aU\xc7\x82\xaf\x8a\x81\xa4U@\x11O\xda\xc8r\x16y\x81h\xa1\x17\x98^\xec\xc5C\xcd;\x01)\xc3\xcfX\n\x86=\xc1r0\xe0+ \x03 \x9d\xcdZ\x1a\x06|\xe5a \xda\x93T\x01\xd6\xf9\xca\xc4@Lv\x99\xe5b Y\xd6N-\x1b\x03\x9e\xd21\xc1\x96\x13u\x95\x91ed\x00-%\x03\xd9;\x12)+\xc3\x1b\xbc\xc3:\x80\x08\x03?\xfb\xef<w\x04E8s\xec$d-9\x03\x91\xbb\x82r\x96\x9e\x81\x9c\xe5g |c\xd0\xac24\x90\xb1\x14\x0dD\xcb\xd1\xc0\xd4\x9240\xa7,\x0d6c\xf7\x07\xe5r\xc6o\x0f\x9aQ\x9e\x06\xa1\xd5g\xce\xfd\x7f\xec\xbd]\x97\xdc\xb8q0|\xef_Q\x8f.\"\xad=\xdb\xb2\xd6vr\xa2\xe7\xd9\x9c\x8c>vw\xb2ZI\x91F\xb6s||Z\xecnL\x0f\xa3n\xb2\x97d\x8ff\x9c\xf8\xbf\xbf\x07\x00\xc1\xcf\x02P\x05\xb2g\x95\xbc\xa8\x9b]M\x93\xc5B\x01(T\xa1\xbe\x00\xed 4\xadL\x0d\x82N\x05\xa2Wh\x17\xa1\xb9\xcb\xd5\xc0\xf4\x9250\x7f\xd9\x1a\x98V\xba\x06\xa6\x95\xaf\xc1\xb7(J\xe4lEm`\xf6\xc260gq\x1b \x15\xb8\x819\x8b\xdc\x80\xb3\xdb\xd0\xb4b7\xd8\x1eG;\x0eiQ\xe3-\x81\x03\x93\xcb\xe0 \x08\xb1\xbeC\xc1\xc5q\xc0n\x8a9\x8fxG\xff!\xca\xf9\x1fX0\x07\x13{\xd6.D>:\xa6\x15\xcf\x19 S\xa5t\xd0^D\xb3\x14\xd1\x81\xb9\x0b\xe9\x00RL\x07\xa6\x17\xd4\x19`\xab\x90\xaeD\xd3J\xec\x80\xaf\xf2\x0c\xb8z\x13\x11\xca\xed\x80\xada\x08\xa3\xec\x8e\x1d\xc7\xa8`\xc1\xa4\x12<\xc0`\x86\xaf\x14\x0fx\xc7\xed-\xc9\x03\xbc\xb2<\x807\x89qt-\x9a\xa3D\x0fL*\xd3\x03\xae9\x0c,\xd7\x03\xbe\x92=\xe0\xe9`\xe4\xeba\xe4\x98Xj \x1f \x94\xf1\x01\xac\x97\xd1\xa4r>@+\xe9\x03\xac\xb2>@)\xed\x03V\xa6\xa1K\xd6\xf6\xac\xaf\xd4\x0fL.\xf7\x03.B\x07\x7f\x9d\xb5\xf4\x0fL,\xff3@\x85\xf5<\x9a\xb9 \x10\xcc\\\x14\x08\x9c\x9d\x8f\xd0\xdeGs\x15\x08\x829\x8b\x04\xc1\xec\x85\x82\x80\\,\x08(\x05\x83\x80^4\x08\x88\x85\x83\x00\xef\x85\x84w\xc7\xa1\x97\x99\xf1\xf5C\"\x17\x12\x02Z1!\xc0\x861gQ!\x98ZXh\x80\x0b\xe9\x934g\xa9!\x98\xb5\xdc\x10L^\x0f\xde\xb2C@(=\x04\x83C\x07)A\x04\xe4+\xf6\xb17`R9\xa2\x91\xbc\xde\xa4I6(I\x040\xb5,\xd1\x00\x99&i\\\x9a\x08\\\xe5\x89\xc0\xe2N\xae\xee\xc1\xab^Y\x1c\xc6N\x0b\xdb\xed$\xb6\x91\xad\xe1\xb4\xfeo\xa7\x1b\xd89&\x0d\x1e\xd7/\x01\x83\xa3\xc4\x114\x18le\x8e\xc0\xbb'\x0c\x84\x97;\xb2 L\xb2q\xc9# \x90\x13Z\xfah\x84\xa8\xe3V\x1b\x95?\x82 %\x90`z\x19$\xf0\xf2a\xd6rH\x80\x95D\x02\x98\xa1,\xd2\x00\x9f\xd6w\xf3\xb1\xf6<[y$\x98\xb5D\x120\xcb$\x81;\xf5gR\xb9\xa4\x0e\xa2\xa6pR\xb7d\x92\x84\x90\xb2I\xa4\x90\xc7\x9a\xec&\xe6\xb1\xfew\xd5 z\xac_CB\x1f\x9d\x91\x8e\xdf zd\xe30\xa9\x06\x13\xfcS\xcb\xea\xa1\xe9>V1\x8c\xa7\xf9X\x1ew\xc5\xd2\x05\xa7\xf6t\x91L\xc9\xea1Y<]|\xf4\x04\x9e\x89y\xb7H\xce-\xcaCK\xae-\x96\xdc8S\x8e-\x9e_K\xcd\xad\x1d\xe4\xd5\xa2c\xb2\xcb\x8b\xc9\xb9\xb4*\xb5\xb3\xbb\x15\x02\xf2h\xab\x19sh\xf1\xfc\xd9I\xb9\xb3&[\xb6\x83\xcf\x917;\xca\x99Eg\x04[N\xb3\xe6\xc9\x86\xe7\xc8\x06\xe7\xc7v3b\xbb\xbc\n\xca\x8de\xe4\xc5\xe2\xab[\xd5\xc2\xd0\xea\x04.*L\xca\xab\x1a\xa89\xc0\xea\x1d\xfc\xabVh\xd4\"Em\xe1:\x03bTAC\xd9\x9b\xa0\xae\xad\x94\x1c\x14WWb]\xa5\x8d\x03\xed\xc16)\x0fE\xba\x16\x0f\x1a\xf5G\x8b\xc9f\xbd\xeb\xf6\x14\xf9^\xc0>\xdd\xa7\xd9q_\x7f\xd6\x04s\xb4\x01\x19{\xb1?\xe4\xf9\x0e?\xe9\xbe\x17\x95R!\xff\x94V\xd7\x97\xb7e@\\\xff\x89j\xc1\\\xdeZj\xc0T\xb7Z\x9b\x18\xf0u`\xa0\xd6\xef\xaa\x7f,\xd3QyDZ\xce\x01=\x11\xc0\xe2m=$E\xb5,E\xb5\xbc\x16\xc9\x06O\x0b\xe5\x85{\xe5Ub\x8d\xf5\xb2\xc5}\xbb\xa2\xbe\xc7C\x04\x9f\x81gu,\xd7\x12\xeamRT\xa5\xa8~P#\xfe\xd5\xe0G\xb5\xd6.^tg'lj\xe6\xe1g\x1dL\x81p@\x93\xbbJ\xcat]g\x8aH\xcb\xcc\xc2\xa9\xa0\xba\xc3\x83\xc1w\xc1k`;\xca{hH\x0e\x87\xd3\xa0\xf6\x19\xc2Ri\xccJ\x91\x95\xc7\x12\xd6\xc9A\xebi\x95\x0e\xdf\xaa\xff\\\x1cwuY\xa6\x9e\x19\xa8\xf8\x81\xe0\xebnk%\xf9G\x06\xa1~J\nnc\xed\xb5\x0fkK\xa5\xb1gZ\xb9\xad\xa9\xb0\x06,\xf6\"n\xb1\x0f\x96UR\xd5\x02H_z\xee\x93\xf5u\x9a\x89\xa1 \xab\xa8\xe8I \x03\x8e\xa9\xc0\xb2\x9d<\xaf\xb8\xf7y\x95\xeeC\x03H6I%\xbe\x96\xef\x0f\x9eP\xd7\xf7c\xf9j`\xc2\xce\xc0\x85\x12\xf8\x08\x06_\xd4\x8bG\x1e\x1b\x98\xe1\x02\xce\"\xa7\x9b\x9f\x9d\xf2\xda\x80;[G\x83\x9dU@a\x17\xf8Y\xe6\x91\xeb\x83\x87\xfa\xf2\xdd\x80Z*ku]\xbc\x9c\xf3\xc4\x81\xf6\xc3\x12\xad\xde\xcfZZ\xcbm?xV\xfei\xe6\xcf\xab\xfb\xf1\xa4\xca\x8brf\xc4\xc3q\xb5WP\x87\x83\xc9\x0dh\xfev(\xc4\x0d*>3q[-OFc#\xd1g\xc6\x9b\x1c\x0e3cT\xeb\xaf\x0e\x16\x9d\x19\xb5\xb8I7\"[\x8b\x99\xd16\xf3\xdf\x1e\x9b\x88\xfe!\x05Q^\x8abY\xd7\x0c\x99\xeb\xfb\xbdC^o\xf8~\x81\xc5\xe6zP\x95\xf46\x99\xb4\xf2\xb9\xee\xf1gK\x16e\xa9h=\x03\xa3\xf9#bh\x18\xb0\xbaV<\xd2pb\xc0\xe4\xe5m\xd9)\xda\xbb\xaasv\xb4 \xa8u\x85\x7f\xadM\x93\x1f\xd4\xe1\xfe\x9b'h\x9c\x91\xbe-SQ\xf9\xbb\x9d\xb2ut:XQ;\xe3\x16\x00\x7f\x12\x0f\x0b\x01\xff)\x0d\xc1d[\x08\xd1VbE\xf0\xe9\xfa\x95\xea\x1a\x00\xfd\x9e\xca\xb0\xd8\x8b$\xab\xa9\xd7$\x9e\x1f\x0e?$\xe5uk\x7f\xb7\xd7\xec\xa2\x14\x92\xac\xbe\x9aS/\xd6\x17R\xd7\xea\xdd\x88\x97B\xe7Z\xf4\xed4\x85k\xd3\xd3\xec:\xe8\xcc\x96\x9a\xbctpD0m\xfdX\xf5\x02\x9fV\xb09j\x8dR,o\xf2J,\xed\xc4i\xf0j!\xfe/JP\xdfJ\xec\xbf\x93>\x04\xc4\x8f\x81A\xe7|\xc2\xbb\x13\xbb0,'\x82\x83\xaem\xfc\xf2\xc5\xf2\xa7\xf7\xdf//\xff\xe3\xed\xcb\xe5\x87\xd7?\xbe~\xf3\xa7\xd7\x01o\xbe}\xf7\xf2\x8fo._\x86\xbd\xf9\xfc\xcdO?]\\\x06\xbd\xfb\xe6\xed\x9b\xf7M\xdd~\x1b\xf4\xca\xee\xf3\xc7\xeb\x17c}P\x05y7?\x95\xdb\xcb:4Eg\xb7\xc8-]\xdf\xaav\xe2\x03\xed\xe9\xaa-4\xc7\x19*\x8c\x06`\x9d\x9b\xa7\xf0\xc7\xbc\x1a\xf9\xf1\x88\x184\x9f\x9f\xc2[ux&;7\x1a\x9b%\xd6\x07\xc6\x82\xa6h\xf5\x1a\x8a\xfc\x98!\x86U\x1fh\xa6\x84\x86\xce\xa7\x7f\xf7\x8d\xf3Y\xbbY\xd7\x07\xa2\xec\x00\x86\xfc\x00\xafU\xd3\x02\x83\xed\xe0;\xe1\x87@2\x15\xfb\xc0\xe0\x0609\"\xc1cT\xf6\x81\xb3.\x0c\xd0\x97\xa6\x01\xeaD\x01\x7f\xb2\x80;aDC\x15}\x057[\x87\x8f\xa2Q]\xc8\x83\xf4\x81\xfa\xeeX\xfa\xd0Xrv}\xbf\x0f\x01\x94xY\xdd\x12\xe1\x89\xf1\xd1\xc0Y\x87t\xf9\xd4\xf8\x80i\x9f\x9f\x97\x03\xfccT\x9eV-\xcd\xc6)\xd4p\xb2.\x84\xea\xaeb\x01\xb5LJ\xd7\xe9!\xd1\xfe\x9d\x8eqh\xc2\x1d\xbc(:aP=G \x0e\xe2\xb6\x12\x19~C\xde\x87/\x88\xcf\x0d\xcd\xbd\xe8\xf9\xaa_Ea\x01o\xb2\x9d\x9f\xe1:\xfeQ_U\x0b}\x81\xe5gq\x1b\xb5\xe3z\xaa!s\xf9?q1\xb7Lv.k/2\xb9\xec\x87\xcb\xda\xcf\xe1\xd1\xbaG\x96\xb5\x17\x89\\\x00\xd8\x04\x93\xe6\x8f\xc34\xc5\xb0^\xb7\xabC!\xa4]\x06\xbd\xcf\xaa\xbf\\\x15H)\xdb.\xb4\xb7y\x92j\xf7(;\xca\xb6\xed\x11e\x1e\xae\xa2yH\x7f3\x9a\x87-D\xf30\x9a\x87. \xca\x0e`\xc8\x0f`X\x1d\x0c\xb6\x03\xef\xcc\x8c\xe6!\xe9\x1d\xeaD\x01\x7f\xb2\x80;a\xd1<\x1cA\x00%^VG\xf3\x90\x7f\x8cF\xf3\xb0\x03\xa7\xe6s4\x0f\xef\x95\xc9\xd1<\xf41\xedK6\x0f\x95N\xb1\xbc\xc9\xab4\xdb.\x0f\xf9g\xb7\xa2C\\\x804=\xa2=H\xee\xf7\xbb\xa4s\x9c\xf9E\xdf\xf9M]./\x8c\x0bY\xae\x99\x97\xb5\x03\xb9u\xb8\x1b\x97\xb2\x8e\xcah\x18hEg\x12#>\xe7\x12\xc7\xd5.]\xab\x94\x07\x95\xee\x8b\xaf\x89\x9d\xb4v\x96\xban\xfdR%3~\xba/Gv\x87\xc2\xa5#tV\x03\xe1\x9b@\xfc.4\x8c\"\xaa\xfa\xc4o\x03\xe3\xfb`\x89x\xc6\x81A\x000\x89\x00W\xcc4\x0e\xd4Hj\x1c\x98c\x81\x80\xf1\x80;\x16\x1b\x07\xa2\x00\x18\x82\x11\x08\xd6\xb8m\x1c\xac\xd1\xdc8\xdc'qT\xd15\x04Z\x948\x19\x1d\x1eMN\xbdv2\xe0\x891\xc7\x81\x1ayNF\x88E\xa8\xfb\xe3\xd1q\xa0F\xa9\xe3`\x8f]\xc7\x81\xbd\xf0h\xd7g\x06\xd8\xe8\xa9g~\x17\xf0Hy\x1c&\x10\xe4S \xfa\xe0\x89\xb5\xc7\xe1\x9ed'\xe7\x92\x07\xc2\x98\x06<\x93\xa5\x85\x80[:\x03\x01\xdc\x83@\x0e\x020o\xef\x0cpnO\x86\xc0\xdf\x19\x06\xb8\x13\x0e\xe1\x93\x0e\xa1\x13\x1ft\xdbg\x80q\xebg\xc0\x9f\xe1\x80C\x00_\x02\xf8A\xcf\x91\xc0\xc1\x919\x81\xc3}\x0c\xcb\x9b\xd7\x80\xc3}\x90\x86gk\xbb\x81\x9a\xe8AFh\xcb\xa7\x1b\x03-M\x04\x87\xfb`\xa7/\xd1\x04\x87\xfb\xa0\xcc\x9e\xaa\x82\xc3}\xd0DHv\xc1\xe1>\x88\xf3\xa4\xcb\xe0p\x1f\x84\xd1\x12np\xf0\xa7\xe1\xe0p\xfaq\x85Xg\xc4|\x1f\x12\xaeqN\x10\x0e\xfa\xe4\xa4\xf0\x8d\xa9\x96q\xd5\xb1/\xd0 !\xf9\xf9\x0d\x84h\x84t\xbf\x9a\x81h\x890\xf6\xa0\x86h\x89X\x81\xbf%\x0cp'\x1c\xc2'\x1dB'\xfe\xbe-\x91\xb6<\x16\x953\x9a#\xeeF\x86}\xf0\xb65\xecC\xd0\x02\x0e[\xbeF2-\xafv \xda\xcd\xd2\x0e\xc1\x0b\x83\x16\x83\xd8\x87\xafA\xb5L^^\xbcX~\xf7\xea\xfc{b|\xde\x10\x86X\xce\x9f\xbd\x7f\xf9\xda\x1f^\xd8\x87!\x12b\x8cb\x1f\x86H^_\xf8B\x15\xfb\xd0\xb6\xe7\x9e\xcc\x16\xbe\xe9\xa5Ao\xb2\xcdw\xbbd\x0bi\xb6Q~\xb6\xb2\xae\xbaTo@\xd6e\xb2\x86\xd6\xff\x9dj\x97\xac\xef\x85\x16\xd8\xf1<}\x08^\xcf\xc1b\x8e\xe08\x1d\xc3d2y7\xa9\x1a\xc81\x15}\x98L+\x8b\xa5!\xca\xbb\x06]\x99\xf9}\xba\xd51\xb9R\xf70~\x04\x15m`2\xb0\x19(\xd3\x0c\x92\x1a\xaf_\x9d\x0f\xa3]c\x1fVT\xad]\xdau\x1d:\xba\xe9\xf1Y\xf5`\xdc\xb7\x05a\x13\x93\x8c\xde\xdet\xb8G\xd2\xee\xbfRxM\x02\xc6\x19\xc79\xd9ZZ\xfd\xcfrOr\xc6)\xce\x18\x9d\x06\xce\x185\xb0e\\\xd0f\x0c\xd8\x88\x87\xe3jI\xe8\xab\xdc\x02\x9bY\x10\xc40 b\xf3\xcd\x1f\xfe\xf0\xe4\x9f9\xaf\x042\x0e\xc2\x98\x07\xaa\x94\xe6\xfa\xf0\xcd\x1f\xfe\xf1\xd3\x93/\x99\xcc\x10\xad\xe1\xedq\xb5K\xd7?\x8a\xbb\xdee\xc9'qWvZ\xe4\xf1\xce\xfcc)t\x81\xdd?6\x1b\x9f\xf865H\xab\x0fAL\x0e1\xd8\x9a;\xb2C\x91\xe6EZ\xb1\xf7\xd3Ii4\xd4Q\x88bno\xee\xc6f\xca\xc1\x00\xe6\xb0\xf7\x07S\x022\x19\x04\x01L\x820\xd9\x17\xc0,\x08a\x18\x84J\xbd\xfb#\x90/\xeff\x97v\xa1\xb2.D\xd2\x050\x96'A`\x8a\x8c;9u\xbc8\xde\xe6-\x1eY4\x92\xa4N\x9egK\xffE;\xf1\xeb\xb4\xaf\xae\xee\xfe\x96dU\x9a\x89%M\xa3\xa6i\xd2\x04\x0d\x9a,\x0c\xe9\"\x90|B\x109\xa8\x81!C\xc8\xe7\x01y\xf0\xc0b\x00p\xa5?\x8b\x11\xc0c\x06\xf0e\xfdi\xc9\xe1Hv\xaaLW\xbd\x05}\xc8\x80)\xcdy\xe2\x88\xc54\x9aP\xd0\x10 \xb5O@\x0bOB\x13 ~\x9arq\xc7\xfc\xa2\xefR\x8ez?\xf4J\x9e\x12\xcfU\xbe\xc1\xb9J7\xf0e=\xe8;\x1e+\xbeN~LRUb\x7f\xd0M\x1er\xd8\xa7\xe5N$\x1bHt\x8e\x03\xe8\x1c\x87\xee\x05Q'\xc4\xab\xcf(\xab\x94\xb3K\xb4\xd9\xeb;[\x9c\xc4\x1a\x1f\xa10\xfc\xc8\xf1\x1b\x0b;\xa3\x10\x0b;\xf7\xc0\xe5lt\xa9P\xa7\xaa\xb1Ir\xff\x11\x98\xe7v\xe9q\x9dwL7\x1d\xd3!Gw\xbd\x059\xd9z\xf3\xef\xf5\x8e\xd1\xfc]d\xcf\x16a\xaa\x08\xab\xdcs\xbc1>\xe2>\xd6\xbc^%\xc6\x97,\xc3\xe9\x9d\x9bT7\x8f\xddy\xe3>\x86\xc9\x0e\x19\x8b\xb3e\x80\x0eu\xbd\x1c\x92m\xddD\xaceZ\x8f\xaa\xf6\x81N'\xb2\xce\x1fM\x8a\xafi\xff\xd6i\xff\x85\xc9\x12\\\x82\xa8\x08\xd8\x91Ic\x9d.\xeb$\xb9\x9a\xa9\xb5_1\xcd\xbf\xe4\xff\x9a\xf6ce)6\xf2\x1fo\x93\xadx\xa7\x9b/-\xf4\xef\x03$?\x1fE\xa13\xa9%:\xc9 \x01\xfb\xbc\xac@\\]\xa5k\xa9\xb4\xec\xee\x16pQu:\xfe\x1e\xaa\xbbq\xb2u\xd5\xd4\x95\xcer\xd8\xe7\x85\xe2\xe0q\xd7o\xf8\x88\x1cw^\xa6 \xe9c6\x93D\xa1W\xdcP\xff\x93\x1d\xf7+Q\xe8FZ\x8a\x94\x8e\x112\xa2\xbf\xcb(\xd52l\xa9\x90\x0cS\xa3\xe4\xcaT=\xb2\xd2\xaa\xac;_\xa5%\x1c3\xbd\x966\x90K>|Nk\xf3\x06\xdf\x0f\x96\x1eI\x9c\xc6\x83\x03\x14\x86J\xd3\x83\xd0\xfc\x1bm\xeb\xf8\x87\xc57\xb6\xd6Mm\x17D=I\xa3%?^\xeeU\xa7&\xc7\xf4VL\x86\x07\xa6\x7f(\xd2\xde\xac\xba]\x16=\"QBqb\xc1\xa2+{\x17\xa1u\x0d^\x9a\x82\xe35\xde\xeeb\xbf\x1d+]\xd6\x0f\xf5\xf8p\xd9oE\xa5\x94\xb7\xee6Z\xe7\x1bQ\x1e\x12\xbc\xa49\x82\xbc\xa6\xf5u\xb2\xd7\xaf5B\xeey\xbe\x11\x03\xbc\x18JL\x01\xb5s\xa67\x94fqK\xdc\x94b\xfe>\xde\xbcS[Y\x89\xca\xf2\x0c\xd2+H\xb2\xbb.\xde\"\xf9\xbc\xdc\xe5\xdb\x10\xd4#\x01+\xe7\xa1\xce\x99\xc0\xd2&a\x97o\xb7\xa2\x80GE\xf2\xb9F\xfe\xd5\x02~R\x1dp\x07\x98\xb2<\xfbz#*Q\xec\xd3,-\xabt\xdd\xb3\x04\xf3m\x89\xd1{\xda\x1e\xd5\xfbrk\xaf\xa9\xe33<\xdc&\xc7\x88\xff\x1a\x9c\xea\n\xd6\xaa\xbb\xfb\xda/\xd3\xf9Z\xa1\xb0\xfcF\xd2\xbf\xdcM\xbd5\xb8\x07\xa8\xc1{5\xec\x1d\xac\x06\xff\x905\x10\xeec \xa3\xd7\xe0i\xff\xad\x81\x88\x8dz\xd1#\xa1m\xe4\xddhzY;!\xf0\xb9H\x0e\x07Q\xc0g\xa5\xb9\xd4\n\x94\x13a\x92m\xea3?)<\xc5\x8f\xf4@z\xfd+\xa5\x94Pb\x0b\x0f\x13\xa2\x8d\xec\xbd\xc2\xab\xdb\x83\x9bQ\x89\xac\xee\x17\xaeg\x7f0\xb0\xba[\xb5w}\xda\xc6S\xab\xeb\x929\x8f\xdb\x06\xe8\xa6\x93g\xd3\x86y8T\x0b6+\x03(\xc3\xaf\xfb\x817\x06D\x02\xe5.\xd57u]\x06\x98\xc6)r\xf4uGl\x9c\xe3GI\xb8jz\x89\x0f^\xdc\x8a\xf5\xb1B\xfa\x88\xfb\x88=\x7f\xf6\xfc\xe2']\xd7\xe7U\xbe\xf55\xc2N2\xdd\xdf^\xea;\xb7\xea\xdd\x11BS\xf7r\x97o9\x16\x17\xf5\x00\x93\x9bo\x13tv\xa5\xd9U\x1er\xd6\x9e\xb7\xed\xcb;-\xea\x0d\x05\xeeon\x93r\xf99\xc9*\xb1!~\x99\xa8\xab\x9c7\xfdY\xb7IiZ\xd6\n]\xaf\xc9\xd2T^\x92r,OK\xc8:\xcf\xca\xe3\xbe\xae+\x86\x93Q\xddb\x04\xb0\xae\x90\xe5+\xcbca\xed\x06j\x91\xcc\xbe\x9d\x00p\x0e\x1f\xde\xbdz\\\x882?\x16k\x01Y\xb2\xaf\x8d\xfdc\x96\xfe|\x14\xbb;H7\"\xab\xd2\xab\xb4v\x17Uu\xc9W\\h\x95\xa2H\x93]\xfa\xb7~\xcb`\x03\xaac\xf7:\xdf\xc1\xeaxu%\n\xb3o\x16\xba/\x91\x1e\x83\xeeyk\xc4ZR\xc1N$%Zh-\xcf\x04<x\xfc\x00\xd6\xd7I\x91\xac+Q\xe8f\xbb\xbb\xa4\xac\xa0\x14\xdb\xbd\xc8\x9a}\xf5\xe1\xdd\xab\x87%\x1c\x92J\xb7\xd4E\x905%\xb9\xb0/I\x14W\xc7\xdd\xee\x0e~>&;\xdd\xbaZq\xaaF\xafx\xf2()-\xf5\xca>\xca\x0f?\xde\xe6\xf9v'\x16\x8a\x07\xab\xe3\xd5\xe2\xc5Q\xb5\x05\xce>~\xa5\xe9V\x08\xcb\xeb\xfc\xb8\xdb\xc8=&\x07\x8f\xe0Z'Y\x9e\xa5\xebd\xa7V+\xf6\xb5Gb\xb1]\x9cI\xb6\xa92%\x0f\x16\x0f\xa4\xd9\xa6zL\xd5\xcd\x82\xbfjM\xd0.\\dp\x90\x8cL\xd7\xe2\x0c*\x91\xecK8\x96\xc7D\x0e[\x17&;\xa4\xd247\x8d\x86Wi\x96\x14w\xf2\x00\xc38vw\x10\xb5\xa0W\xc5\x0c\x91G\xc4\xedA\x1e\x87i\x05U\xae\xa2C\xea\x06Qr\xea\xc5\xad\x9a\xba\xf3\xecn\x01?\xe4\x9f\xc5\x8d(\xce\xd4F\xff\xf0\xee\x15\xe6h\xd47\x93\x12\x89\xa5\xeea\xb9\xbe\x16{\x01\x1f\xaf\xab\xea\xf0\xf1L\xff\xb7\xfcx\x06y\x01Y^\xffz\xa6V\xd4:\xc9 ?h\xe1\xb7\xbbC.\xb6$\x1c\x0fu\xf1c\xf4[\xa2\xb8Q\x0d\xb9\x93\n\xf6\xc9\xa1\xd4\xcbCR\xae\\O\xf5Y\xd11\xc2!)\xe1*\xdf\xed\xf2\xcf\xe5Stf~\x0d\x17W-\x9dr:M5\xc3f(\xeaR\xb0T\x92\x08-w\xf7k8\xcf\xe0\x87\xcb\xcb\xb7\xf0\xfd\xcb\xcb\xba\x81\x98\xa4Io7\xd5\x9a\x1a\x12\xf8\xcbp\x91^\xde\x1d\xc4_\xff\xf2W\x04!\x98\xfb\x95\xcc\xac\x04->\xcft!\xbb|s\\\xab\xee\xf4\xaa%=\xa6R\xfc\x1a\xce\xdb\xd3N7yN$\x0f\xf4\xcd\xd8:Y\xcb\xbd\x9c\xe7\x9f\x8e\x87\xe6\x82h\x95\x94b\x03\xbd\xe6\xf8\x06l:\xd4\x87w\xaf\x14E\xaa7|u-\xf6\x9d\xb5\\w\xcdN\xcc\x00\xe4\xff\xdf\xe4\xe9F\x1a\xad(2M\x8e\xda\xae\x85j\xbf\x7ff^\x95\x18\x93*]\xa5\xbb\xb4\xba\x83L\x88\x8di\x0c\xae\xc4JqcQr\xf2\xac\xee.\xaf\x1eW\xbbf\x01\x8f>\x94\xc2\x14\xde\x92\xdc\x90\xcbGJ\x07\xbd~\x92,\xd9\xe2c]\x15\"\xf9$\xf7|\x8dr\xf1\x15\xb6\x12^\xe7\x95xZw\xba?fk\xbd\xd2%\xd5\xb5\x94X\x1f\x8bB\xdd+v\xef\xe3\xac\x0d\xe7\xd45\xe4\xf8\"\x0e\x8c\xb4_\x1d\xaf\xa0\x10R\x86\x8b3\xa5\xa1\xa7\x95\xf9\x90j\x99\xaeN\xeff\x7f\xac\xc46\xcd2\xdc\xc6\xf8\x9cV\xd7\xa8p\xbe;\x88\x85^\xb7\xc9!-\x17\xeb|\x8f\xcb\xb7\xf7j\xf7\x94\xfa\x12Pn\xcfl(\x0f\xe0Q}\xf3\xa2oQ\xf5v\xfb\n\xf6\x83\xab#\x03+t\xfb\xaba\xa9\xd8\x88t\x7f\xd8 y\x0c\xe9\xbb\xeb\xf2 \xd6\xe9U\xba\x86R\xec\x93\xacJ\xd7#M\xdbb\x8a9\x8fx\xa7\x0b\xc1\x7f\xfe\xffd:\xcc\xd7\xd5/\xdb\x03|tZ\x1b\x1du\x95\xdf\xa0G\xbf\x1e^\xbd`9z\xf0\xc7\xf3\xec\xeec\xc7n\xc8 )ViU\xc8\x8d\xe5\xa0\xa7\x96\xa4\x03d\xc9.\xcf\xb6\x9a\xff\xc9pz\xa4\xbcSbY\xd3\xb3\x1a\xab4\xdd\xef\x19\xedd\xb4\x98\xde\x9a\x85\xbdKW\x8a\xc8Z\x1a\x97P\x1e\x0f\x87\xbcP'\xda!Y\x7fz|\xcc\xe4\x7f\xe49\xa6\xe7\xb6\xc4w\x12v\x94\xe7Wp\xac\xb481\xdb\xb4\x94\x82,iU\xf3\xad\xc8D\xa1\xca\x9c\xea\x9b\xe5\xa6|\xd8\xf9H~\xe9)\x19~\xe3\xe5m\"\x97(<y\no%\x9dr\x7f\xd6$'\xddb\xfe\xcf\x7f\xf3\x1b\xf4P\xf9.\xcf\xe1*\xcf\xe1[X,\x16\xff\x17y@\x0e<\xc9\xee\xb0\x9f\x92\xecn!?\xfa]\x91\xef\x1f]\xe5\xf9W\xd8C\x8b\x05vr\xa4W\xf0H\xbe\xfeA\x91z\x99?\xfa\x07\xf9\xfeW\xf0_\xa8T\xc4q\xfc\xdd\xc6\x8bo<\xbc\xf8\xb7\xe4&\x99\xc4\x0c\xf8V\xe95\x12s\xe0\xb8\xd3\xf2\xd1wy\xbeX\xef\x92\xb2\xb4\x0e[\x93\"\x1f\xd7\xa3\xe8\xbc\x82}\xf1\xef\xc8\xdf\x1e?\x96\x0b\xceG\xcb\xfbd/\xa4\x9ap\xae\xa9\xda\x8a\xea\x85\xf6<_de\x95dk\xf1\xe8+\x1e\x91(\x06\x9cf\xcb\x1c\xfe\xce3\x87o\xef\xaaki\xa2!85E\xdf\xe5\xf9\xa3\xc5b\xf1\x15\xben\xf5\x0c>\xb2\xfc\xaaV\xb5\x9aY\xce\xc4\xca\x17/4\x07_\xbc|\xff\xfc\xdd\xc5\xdb\xcb7\xef\xbe\xc2\xaf\xe5\xda\xb5o\xfb\x8c\xfe\x90\x85;\xbf\xf7p\xe7\xfb\x1c\xbdo\x91\x9cy\xfa-\xfc\xc3a\xb5\xf8.\xcf\xffk\xb1X`kF\x12w&\x95>\xf9l\x92\xdd\x1dV\x8b\xd7\xe2\xb3\x95\xce\xf4J=\xfb\x7f\xbe\x85,\xddY\x16\x89\x85i\xe8\x92\xb5=; \x1e}\xb5\xa6E\xd3\xbd\xf8\x90\xed\x93\xa2\xbcNv\x97\xb9\xde\xa6S\x08\x1d\xfcU\x9a{\x8a\xefFnw\x8b\x93\x1f\x86\xa7\x8bv\xed\xde\x99\x80\x0e\x15\x9d9@\xf8\x10Q\x82\x1eK\x8bu\xa1~\x90\xca\xe3Cie4\xa7\x9d< \xeb\xca\x93\x03TzE\x0c?\xd0\x1c0\xd9\xee\xce\xd8Y#\x93\xb8QT!\xb9\xaa\x84\xd6\xa4\x945\xfe\xf0\xf1\xc3!\xc2\xda\xd83\xc4h\xebN\xd4+\xf4\xc1U\x9e/VI\xa1\x86q\xfb\xf8n\xf1\xb7\x07\x9a\x0b\xdaN\xc1\x0c/\xf5\xd9\x07\xf2\xc9\xf11\xf7o\xef\xdf\xbc\x1e\xfdQ\xce\x81\xfc\xa1\xb5\xfc\xb5\x96\x96\xcb\xbdX\xab$\xda\xc29\x96\xc2\xb8~\xb7\xc7]2\xaa\xb3=F \x1f\xde\x88V\x958\x03\xb1_\x89\xcd\xa6U*\xcej\x0det_\xd09\xde\xaf\xd4`?\xfe\xab\x1c\xee\xc7\xda\xc4\xedEg\x18\xe6-\xcc\xd6~\x8a\xaa\xe1\xc9\xfa\x93\xdc\xd9\xadiw\x95\xee\x04&O\x8d\x0cx+\x8a2\xcf,\x8b\xbc\xbe\xa5Q=\xa6\x97\x8a\xeb\xdf\xc2\x13\x0c[\xf3\xa8\n\xa5\xac\x9f\xfc\x86$\xc7%\xe0_\x7f\xa0\xb8\xf1\xe0)<\xc0V|\x7f\x88\x0b=\x8e\x07g8&5\x82\xd7\xc9^b\xfb\x7f\x9a\xd4\x7f\xb1<*G0x\x922\x8c\x8b\xab\xda\x98\xe8\xcf\xbd\x9e\xb7\xb4\x84\xcfb\xb7\xfb\xfaS\x96\x7f\xce\xd4^\xbcNJH`},\xab|_\xaf\xd9>\xbe\xfeB;\xd3\xaa\xec`\xf5\xb5q \xf5G\xe5\x82\xca\xb6\xa3\xbb$\xb5\xb8\x86\x1f\xf8\xa8\x16\xbcYk\xd7\xf9nS\xd7\xe9miR\xf7R\xf5\x1a\x85\xfa&\xa8^\xa2Cl\xea\x13\xcd\xda\x84Gr\x87\x1b\x16\x8c.\x1a\xccm\xd8_\xff\xf2\xd7\xaf\xd0e<m=\xf4?b[\x12j\xf8\x12\xd9\x93\xc57O\xbe)\x1f\xa0\x93\xdc\xfe\xbf%\xd6\xccj\xaey\xbc\x01i{\xa1x(\xc4M\x9a\x1f\xcb\xba\x7f\x01|\x97\x17u\x04C \xff\x02O\xce \xad\x1e\xea\xa9\xf9\xac\xfe:\xba]\xd8\x8bM\x9aHY4d\xa5\x92\x1b\x86\xee\xc6`\xd0\xb6\x9f*\x05\xdf\xeb\xd3\xbex\x95\x94U\x1dJ&\x89\x18 \xd3$\xc1\xb7\xdf\xc2\x93Q eE\xa1\xb4P\xca\xb4T_\xec\x1e\x8d\x98;\xb9\xba\x07\xafzeq\x18;-l\xb7\x93\xd8F\xb6\x86\xd3\xfa\xbf\x9dn`\xe7\x984x\\\xbf\x04\x0c\x9e\xb6?\x1a\xc3*\xcfw\"\xc1n\xed|{\xc2\x80\xf2\x1f\xb6\x0ec\x15\x00Y\xa6\xd9v\xa7\xbc\xc2_\xb7\x8e\xcf\xb3n\xf3\x0fuc\x84#L2\xbd\x06\xb9\xaeC\xed\xc8T\xf7\x94e\xd7[\x07\x1bq#vr\xbe\xd4%\x9dj\x96p\xdd9\xccG\x88:n5\xa8\x10\x85\xdbD\xe6|\x97fJ\x87P\xf1d\xea\x980\xbf<\xbf\x16\xebO\x97\xb7\x88\x15\xf3*\xa9Dq\xd6\xf5F\x95\xb0\xd7\x9e;\x13\xb9uT\x85\xd3\xabkQ\x8az3r.ljOo\xe38\xd5>\xec\x1a\x91q\xea\xd6\xbal[\xa4\xdd\xe2\x1d\x83\xfaNr$A\xba\xd4\x99\xe8V\xa8\xae\xf3R\xd8>Q\xd3az\xb6\x0c\xf0i}7\x1fk\xcf\x06[[\x8d5\xab\xc4\x02\xfet-\n\x91\x94\xf0*\xdf\x96\xc3\xb0XI\xd3\x19z%\xd9Q\xe0\xf6\xa2J6I\x95\x9c5_P\xeas\x9f\xe8.\xc1c\xd5\x15\x0d\x11\xfcf\xf1\xe4\xc9\x99\xfc\x9f\xdf/\xfe\xa0\xfe\xfb\x87\xe6-\xfb\xbc\xb5\xc1\x83>\x87w!v\xe2&\xc9*\xa8nuU\xfb$\xeb\x1e/fT\xea\x1a\xbcKo\x95l\xcbN\xc8\x81\xb6 Ly\xfb]\xae\xe2\x96\x95\n\xb1\x11\xeb|#6z\x11\xf4(\xee\x059:#.\xbb\xb1\x96\x97\xb7Mh\xa55r\xb2Tk6 ~\xb2#|1Q?\x12\xf0\xd3\xa3,K3\xf0]Z*7\x18\x12nY\"\xf1\x96\\J-\x07\x90\xed\xd8\xc1\xb3\x98\x1cg\x84+\n\xcd\x1f\x9f\x89Gh:?\xc8\x8a\xd2\xb4\xc6i:?A\x8d\xd5\xc4\xa25\x0db<n\xcf\xc5-Z\xcc&\x16\xb5I\xe7\x97/r\xd3\x12\xbbI\xff\xc0(~\x93\x1e\x00\xe3\x8f\xe0\xf4\xc4\xc1`Q\x9c.\xd5\xcd\xa2\xb69U6\xb7\xba\xe6\x8c\xe7t\xaf\x0c\x0d\xbe42KT\xa7W\x8b\xb3Gv\xfat[O\xd8\xa3W\xbf\xf5\xb1L\x83Me\xef\xfd\xee\x8bL\xa4\xc4y\xfa\x87\xab\xc1\x1b\xebI\x1a\xba\x06\n\x034\x10\">\x89\xbc\xd0@\x8a\xfad`\xf4)\xce}\xe0\xc6~\xfa\x99\xc3\x89\xfe\x0c\x89\xff\xa4\x8f0(\x06\xd4\xbe\xfc\xa5P\xf4F\x81\xce\x1d\x07\xea\x88\x04\xa52b\xe6hPB<\xa8#\"\x94B\xf4\x84\xa8P\x0b6{\\\xa8\x9f\x1e\xea\xd1X\xb9bC\xbd\xa7\xe28>\x94~\x9eO\x89\x11\xb5G\x89\x06k\x94ScEm\xd1\xa2\xa7 \x88\x103:\x8e\x1au\x1e+\xbeK/<v\xd4+\xdf}\xab\x14\xe6\x8f \xf5\xc5\x90\xce\x1dE:s\x1c\xa9'\x92tr,\xe9\xbc\xd1\xa4\x94x\xd2 \x11\xa5\xf3\xc6\x94\xea\xd5\xea\x89*\x9d7\xae\x94\x10Y:{l\xa9'\xba4,\xbe\x14E\xe4\x8c9\x9d%\xea\x94\x18w\x8a\xbe\xc9\x8aE\x9d\x1c\x8d:w<\xaa=\"u\xe6\x98\xd4SD\xa5\xce\x1c\x97J\x8dL\x9d96\xd5\x1d\x9d:{|\xaa=BU\x0b.R\x8cjx\x94*\x8aLE\xaeZ\xe2T'E\xaa:\x0cH\x8fJ\xc1)ya\xd18\xe6\x8bYuG\xad\xfa\xa9\x995r\xd5\x1d\xbb:[\xf4\xea\xd4\xf8\xd5\x11:\xa5\xd1\xa0\xca\xc3\xbc1\xac\xf56B\x0645\x8e\x95\x10\xbc\xe9\x8ce%F\xb3Z\x03\xc4\x98\x11\xadv<H$\xcd\xe4\xb8V\x0es(\xb1\xad~.\x90\xe2[\xd9\x11\xae\x96\x80Ag\x94\xeb\\q\xaeS#]\x9d3;!\xda\x95\x10\xef\xea\x8bx\xf5\xc7\xbc:'\x9c\x13\xf7J\x8b|Ec_'G\xbf\x92\xe3_\xb9\x11\xb0\xc4\x18X;\x13-\xcb\xda\xfe<%\x16v\x8ehX'\xc9\xa3\xbfO\x8a\x89\x1daCbdg\x8d\x92\xb5\xc5\xc9N\x8c\x94\x1d\x93<\x8e\x9c\x9d?v\xd6\x1d=k\x89\x9f\x9d3\x82v\xe6\x18\xdaSD\xd1r\xe2h\x89\x91\xb4\xacXZz4\xad%\x9e\xd6\x16AI\x8f\xa1\xf4\xc7\xd4\xb2\xa2j\xc9q\xb5\xe8\x80\xe6\x8e\xad\x9d7\xba\xd6\x12_;w\x84\xed\xdc1\xb6\xd3\xd7\x08)\xce\x96\x16i;<\xd8\xac\x95\x1d\x1d\x06\xa7\xcf~\x9b5\xe6\xd6\x11u;s\xdc\xad;\xf2\xd6\x13{ks\xf9W\xf7\x18\x0dQY\x9d\xfa\x9e\xdb\x03\x9f#\xdf>\x08\x0d\xf7\x11\xb1\xe0q\xd5{F\xa8\xc1\xeb\x9e'a\xf1D\xe7\x1a,\xae\xf8\\\xff\x1e2\x10\x14\xa3k\xc5V\x1f\xedx\x94.\x85\xa8\xd9\"u\xfd\xb1\xba\xd3\xa2ug\x89\xd7\xf5s$(fw\xbc\xe7;\xdeJ<j7<nw\x84\xc8\x84\xc5\xda#wg\x8e\xdd\x9d;z\x97\x1f\xbf\xeb\x9e\xc7\xd9bx\x1dQ\xbc\xa1q\xbc#\xda\xbb\x91\xa9\xb6\x88\xd6v@\xf4\x12\xc1\xbd8\xc2\xf0z\xc1\x00/\xa4n\xb7Vw\x8f\x87\xbc\xac\xe0\xe6\xb7\x8b\xdf\xff\xe3\xe2\xf6\xa9\xb6\xdat\xb1Z\x1d,\xd3\xbe\x85\x1e\x11\xb1\xcap\x0d\xb1\xca0Rex4bt\xb4\x96\x91\xd6\xa3\xa4\x0fJ\xbd\x89/\x19$\x0e\x9e\x16b\x7fy[>\xbb\xd3\xe7G\x8d\xea\xdd\xdb\xe7\xce\x90\xfb\x9f\xf2\x8d\xb8hb\x8bF\x9bf\xbca\xb4\xa2\xf0t8\xeeZ\x7fh\xac\xb0\x8eNQ\xa6\xdb\xac\x13*\xcb\xd8\x98\xfbq\x1d]\xfd5\xf9\x83\xe1\x88D\xaf\xe2H\xe4\xdf\x8cw\x05\xfd2\xb8\x160\xd6Z\xe0kx\x7f\xf1\xfd\xeb\xe5Oo^\xbc\\~x\xfd\xfe\xed\xcb\xe7\x17\xdf]\xbc\x1c6[\xe8>\xf5\xe2\xe2\xdd\xcb\xe7\xc3\x9e\x00\xdd\x07._\xfe\xf9\xf2\xc3\xf9\xb0\x13\xc0\x18\xc5\xf2\xfc\xc3\x9f\x1d\x0f\xbdz\xf9\xfd\xf9\xf3\xffX\x9e\xfft\xf1\xfa\xcdRY\xc9\xf6g_^\xbc]>\xf9\xe7'\xbd'\x9a\x96\x03\xfe\x01\xba\xd5\x95\xf7\xe96\x93kh8\xf3\x9d9\xd1~\xcb\xaa\x04i\xe2\x97b},\xd2j\xa8\xf3o\x8fI!\xf5\x01\xeclV\xc1Brz:Q2\xeb<+\xd3\x8d(\xe4y\x07\x85\xd8\xa6eU\xdc\xa9\xfb\xac\xdd\x0e\xf4e\x82\xa4A\x110\x8a\xc5\xac\xed\xb7\xe7j3\x80X\xe7\xe5]Y\x89\xfd\x02\xce\x0f\x87\xb2\x16\x8aU\x1d\x9d\xa2\xe5\xb2\xf1\xb6\x8d\xc3]\xd4\xb7\x86\x1fh?]\xe3\xd4\x91\x93\x8a\xf8]\xfaItQ\xd6\xf7 \x9dw\xb0\xb0X\x91\xad\xf3c\x91l59\xf9Ad\x92\xcb{9\xda\xb7\xef \xd9J\xa5\xa9\xaa\xdd\xf1\xe9N} \xd9H\xded\xe23\xac\x93\xb1>\xa6\xae+\xd2\xb2\x9d?\xc5\xe0\xda_Y\xebKi\xd1R\x05e^\xbb4\xd3\xab+Q AS\x89\x1c\xa8\n\x94H\xf4\xf4\x94\x95\xd4\xeb\xeb(\x04\xbd3\xeb\x89\x1c\xeb\xd6\x96\x9dfY\x9f\x8d/X9r\x8fY;\xe1\xcd\xa2\x93ZP}\x06\x0e\xbeU\x88\xffT\xf3:2U\xc6\x9b\xf0\xe9\xe8/\xdd/\x0fV\xb9 ?\xd2<}\x91\xafu\x90\xc20\xa0\xe7F\x14ZOS\xdb\xa2\x89e\xd6j\xb14;\x1cT\xd5\xc2\xe3\xe9\xf8O\xda\x88\xbb:*\xed\xb2G\x97^z\x92\x13\xea\xcbw:,\xb7\xff\x8d\xeb\xe3>\xc9\xbe.D\xb2Q\xa7m%n\xabc\xb2\x1b]\xf5J\x9b\xea`D\xac\x0e\\\x19\xf1\xb6\xfb\xc6p\x96\xd5\x10\x87\x1c\xa5e\xd2\xfd\xe1\xb7\xfe\xd9\x92\"s<c\xf2\xaf\x94YC\xe4\xda\x8b|\xfd\"-\xc4\xba:?\xde.\xe0\xbc\x84\xfcp\xc8kMm\xf8\x993\xbd\xba\x9b\xfd2@\xb7\xc9\x85\nU\x19\x8e\xb5\x10?\x1f\xd3\xc2\x9cTeC\\~#\xb5\x06\x15XR\xff\xf4\x10>\xea\xff[J#\xf7#\x8dm\xbf\xffG\x17\xdbF\x87\xc8S\xd7\x8fz\x89\xad\x92\xf5\xa7\xcfI\xb1)\x07!Knn\x9e\xef\xd3,\xd7\xa6HgcB!\xf6\xf9\x8d\xee\x83\xa2}/r\xf9:w@}\x96=\x1d\xff\xa93\xc7F+\xd0DI\x1d\xe9\xe5\xc5[P\xcf\x18\xf6vO\x80!\x1f_\xfc\xb8\x80w\xe2\xea)\xa8 \x9e\xa7\x8f\x1f\x8b\xf4P.\x84R\x99\x8f\xfbE^l\x1f\xbf\xbcx\xfb^\xfe\xf9ky\xae\x0e'\xe2\xb9 }:C\xa8L\xcb\xfa\xb8\xd2g\x97diO\x04\x0f\xa5ER\xa4IV\x8dl\xf7\xd5\xb1 ~j\"\x82\x94\xdd\xab\xd5\xc1\x17?v\\n\x0b\xb8\xccAdjk\xbf\xbcx+i\x1e\xde\xf6\xde\xe5G\x15t\x86\x9c\x12\xd28i/\xe4?^\xde>\xcf\xb3\xabt\xfbQ\x0b\x16u[\x9f\x0d\xa3\x92\xc6\xd7\xaa\x1f\xcd \x7fH\xb2\xcdN\x14\x1f\xcd\xb4Hjt\x1c\xac$z\x9fH\xaa\xd7\xe9F\x9d`\xda\x17W\x1f\x94C\x8c\xf5\xbb\xc3\xb5C\xda\x15\xbas\x87\x84\xfdqW\xa5\xad\xdaGL 5J\xf3\xe2'\xf9z\x9b\x1ej\xb4S\xf9\xd7\xbeB\x94\xe9\xa8v\xf5K\x99n\xbb\x9aiO\xbf2\x98\x07\x91CC\x1d\xb7\xd1\xad\xf3\xc2\x82\xda\xad\xedk\xc2\xc9:\xff*\xad\xd4E\xedH\xeb7?t6\x9f\x96\x01\xaaU\xa5<\xe1\xea\xe9i\xa8K\xda\xf3\xa9EF\xb7\x08\xc4mU$\xcbUZ\x95\xcb\xb2\xca\x0b\xbc`4\xa7\xcd\x86\xd8\x8d\xae\x99\xbd6n\xcf\xf0\xb7\xab\xc7\xcf\xa5\x80\\W\xcf\xd2\xea\\\xf1(\xc5\xb7\x8a\x9cL\x95\xa0\xda\x98\xf0\x92\xad\xfaf\xbc\xa7()=X\x9a\xaf\xf5\x11$\xb2\xf2X\x88&\xc8Z\xe9\x88\x1b\xb1\xd1\xb7HU\xf2I\x94:>y\x9ff\xe9>\xd9A\xa22\x1b:\x08\xfb\xdbT\x13\xa1\xbd\xdc\xca?\xa4\x11\xa6\xd9\x16\xa5B\x8a\x9e\xeaZ\xea\x0cP&W&$\xb3\x16IY%\xb2M\x1d\x93\xb9\xce\xb3:\x18\x14\x8e:\xceM#\x92kY\x9de\xdclh\xe6&\x1dm\xcf\xde\xcdLK\x85\xb1'\xd7y\xa1\x8d\xec\x8d\xd9qekV\xeaS\xba\xfe\xa7Y\xd4\x1dt\xc6k-5}s\xa1:\xdc\xa0\x07\xd5\xdcUm\x91_u\xc8R[\xd2\x10\xa1\x0d\\)\x08$\x0b\x13\xece\xf7\x06\x7f\xdf1\xd3 ;\xbcoiO\xb2\xb2\xd1\xed3\xb4\xae\xfd\x96\xb5\xd3\xaav[\xd4^k\x9ajI\xbb\xach\xa2\x05m\x17\x0f\xa1\x96\xb3\xd5V\x9e\xd5N\x9ed#\x8f\xad\xe2y-\xe2Y\xad\xe1y-\xe1`+\xf8\x9e,`\xd4\xfa=\xbd\xe5\xcb\xb1zOm\xf1\xceb\xed\xda-]\x82\x95\xeb\xb7pOh\xddN\xb5l\x95-\xdb\xc17\xb0jg\xb2h\xfd\xd6\xec\xfd[\xb2\xc1V\xec=Z\xb0\x93\xac\xd7I\x96+j\xabN\xb5S\xa5e\xda]k\x03\x1bu\x16\xfbt^\xdb\x94`\x97:m\xd2\xa1\x92\xaa\x159\x9b^\xd8S\xc1\x94\xe3O'\xd6j?s=M\xfd$\x16y\x18\xeev\xf9g\x8da\x10~YBy\\_\xcb\xd7v\xf9:\xd9\xe9\xb5\x87\xc8\xden&\x97\x1e\"\xaa\x8e\xbe)6\xa2xv\xd7UC;\x8aaW)\xfc\x1a\xde\xbc{\xf1\xf2\xdd\xf2\xd9\x7f jT\xe7\xc7\xf3\xf7\xcf\xc7\x7f|\xf1\xb2\xfek\xa3\x94Y\x91\xe1\xfa\x18\xfeu\x1c\x8d\xe5\xe8\xcd\x8b\xaaUxs9\xee\x05\xd4\xc37d5\nV\x95\xc3\xf9\xfb\xe7\x9a\x8bi\xa94\x92F^\xf4\xc7\xfa\xb4\xf7\xaf\xd6s^\xae\x85\xb6O\xd4\x97\x90w%K\x9e\xf6\xff\xd9\xbc-y0z\xbd^w\x1d\x92\xd5\xb3J\x12\xe9\xb15\x0f\x8f\xe7\xf9\xbdZ\x7f,?\xa26d\xfanw\xc6E@\x85\xa6\xca[Mw\xb7\x13k\xc6\xc4x{J\xfc|\xc9\xf0\xb3\xa5\xc1[\x13\xe0\xab\xf0\xd4\xf7\xb9\x92\xde\xdd\xe9\xeeA\x89\xee\xc1)\xeej\xbc\xc3{bkr{pZ\xbb\xd6:\x06\xd8, \xedSR\xd9\xd5\xb5\xd0p4H\xb6AH\xfa\xba=U}b\x92:)=\x9d\x9e\x8a>! }B\xfa9\"0fL2\x9f7\xbd|\xb6\xc4r\x7fJ\xf9l\xc9\xe4\xb64\xf2) \xe4h\xfcaEI\x13\x0fM\x10\xb7&\x83\x07\xa6\x81#!\xca\xbc;n\xf0\x9e\xa0\x81\x89\xdemR7\xc6\xdf_\xf9\xbf=-\xad[\xa7qw\xd0\x8d\x13\xbagH\xe5\x9e\x96\xc4=X\xe5\xc3\xc3pb\xe2v\xcd\xe8\x9e\x013!E\xdb\x99\x7flI\xcb\xf6&d\x8fs\x13\xe9I\xd8\xe3w\xff\x8e\x8d5(\xe5\x9a2X_\x9a\xb5}l\xde\xd4jFR\xf50q\xd4\x96H==\x85:<y\x1a\x9d\x97\xc0\x84ig\xaa\xb4=I\xda\x95\x1e\x8d2\x8b\x9a\x12\xedK\x86\x1e\xa4AOH\x80&\xa4>\xd3\x93\x9e\xbd\xe9\xceH\xd6\xf0\xe8s\xc83\xbe\xb4\xe6i \xcd(Q\x9d\xbfLJ_\x1e\xa6+OITF\x12\x93'\xa5$\x0fS\x90\xe7L>\xb6\xa5\x1d\x8f\x12\x8e\xe7I5\x9e-\xc9x\xde\xf4bZb\xb17\xa5\x98\x98LLI#\x1e\xe5\xdb\x8e\xbfFM\x08u'\x0d\x13\xd3\x85 \x89\xc2=\x92\xe7L\x0e\x9e\x94\x16<N\x03\x9e/\x01x\xbe\xd4\xdf\xf0\xd9\xf5\xa6\xfb\xfa\x12}\x8d\x94n\x02&\x82\xa3\xa6\x88\x01\x19\x9e\x10\xa8\xaa\x89\xc70\x91'&\xca\xaa\x83\xac\xcd\xb8\xea\xf8\x97\x91x\x8cO\xe2\xee\xa1\xb9\xdf)\xc5\xcfG\x91uk\xcd\xa3\xc6\x92%\x0d\xc4n\xaa\x18\xbcMD\x85\xf9\xb71\x88\xd6*\x91\xe5\xac^p\xbd\xd1\xf7Dq\x93R\xb2Vi\xc7\xd5\xa0\xdf\x80\xe6\x8a:\xcd\x12\xd8\xa67B\xad\xd1B\x94\xa5\xf1\x0fH3\xb2\x83\xb0\x9f(y(T\xde\x9d\xdc8\xbb\xe4Ng]~\xaa\xcdI<[\xa5\xbd\xfc\x1dLY\x1b\xab\xa2\xa6\xc8\x1a\xc4V\xe5\x87\xafw\xe2F\x98\xd8zW\x04\xdb\xfbt\x7f\xdc%\x95I\xfe!_7wk\xb4\x12\xd7\xab\xb5\xf1Co\xbdV\xb7fB\xbb=\x0c\xe4r\xab)\xc5\x13\xd9\x16\xf0^d\x1b\xe5 \xafnkg\xf8 \x87\xad\xba]\xaa\xbf\x13\x17\xa2=*m@\xef\xb2\xfeZ}\xfaJ\n\xba\x95m;\xcf\xa2\x8e\xaa\xdf9\x97Bov\xda\xa4%\xfd\xcf\n\xcbY2\xef\xd4(| K\xed'\x98\x0dB\xb6I9\x90[\xbd1\x98\x9f\x0d\xcd\xddT\xe2d\x95\x1f+U\x0fX\xdd\xc0\xd4\x8aU=\xc1\xbdr\xc0#:pZ\xc0QW\xd9{5\x83\xa4\xd8\xb9/g\xbeO\xca?\xa9\x0f5^\xc4\xe46\xdd\x1f\xf7p\xccTp\xd1\x15|\xce\x8bO\xf0\xb9\xbe\xc7\xd4\x17q\xd5\xed8\xfb\xf0 \nI\xc4b0\x8aq)\xe6\xc9c\xf8>)?\x94-\xc1I\xaf(s\xb2\xae\xf4\xad\xbd\xa9\xcel\x08\xd2\xd7\xad\x96 \xd6?\xb6KR\xfd\xab9H&M\xe5\xb8\x9b\x87\x97\x01\xcc\xfb\xb5\x17I\x95\xe8\x00\xd2;\x1d\xdfY\x88\xeaXd&\x9d\xdah\x13\xea\x16Y9\xb1;\x15\xd6\xe1b\xe8\xf7\xf9\xe9\xc3\xfbK\xe4zq'\xb2mu-O\x80\xab\xf4V\xafs\xe5\xf2S\xd2L\x1c\x92\"\xa9\x84\xfe\xba\xfe\xa8<@\xa5B\x83\x17Il\x08(G\xf6yW\x0c^\xea(-\xa9\x9b+7\x98T\xd0\x0e\xf9A\xed\xf1\xcd\x99\n \x90\x04\x89B5\xe60\xe9\x8f\x03\x84\xb5\xe4\x1c~g%\xd6\x89r\xc0T\x90\xec\xca\xbc\xaf\xee\xffTn\xfb\xd9\x94R\xf5\xef \x18\xb5\xe9\xb0\xce\xa9{\xea^\xe5\xdb\xfe\x87UbvG\xbaXf\xd0\xc6\xce.\x8d\xb1;\x9fs\x08\x1a\xfc\x95@bw\xbe\xd8\x9d\xef\x17\xec\xce\x17\xd0y\xa3\xee\xb11\xc0g\x04\xf1\xe0\xcf\xe8\xa9\xd0y\xa6+X\x7f!a\x12\xbb\x1e\xc4\xae\x07(\xb6\xd8\xf5\x00b\xd7\x03\xfc;\x13\x03J\x0c\x12BX \xfa&9\xd4D\xc3\x84\x80\x13\x0d\x13\xc2Nl\x1b\xddB\xeal\x01)\x1a\xe6\x0dK\xd10[p\x8a\x06\x7f\x88\x8a\x86\xd9\x02U4\xc4\xae\x07\xb1\xeb\x81\xbe\xdf\x88]\x0f:0-`f\x84\xae\x8a]\x0f\xfcA6\x1a|\xb5\xf5\xfd\x017\x1ab\xd7\x03^\x80\x8e\x86\xd8\xf5`\x0c\xb1\xeb\x81?\xe8G\x03!\xf4G\x03=\x00H\x837\x0cHC\xecz\x10\xbb\x1eh\x983\xf0HC\xecz\x10\xbb\x1exC\\b\xd7\x83\xd8\xf5\xc0\xb7F\xbcaP5\xba\x80\xae\x07n[\xacw\xc7>vD\x9a\xfb\xf9\xf6\x11\xb5P\xe4\x9eVW.\x03l\xe7\xd9\x1dR(\xd3\x913\xef\x0b\xd7 \x14\x995\xef\x0c\xc26|\xf1\x1a\x97\xe9\x81\x1c\xa2\xa1\xdd\xfc\xc3x\x17O9\xa0\x11^\x0d6\x8f\xc3Fd\xf9\xa8\xd0\xab\xf5N`H\x91\xf3q{\xd0\x0d\xc0\xf3<\xed\x16\xbe\xae\xf2O\"\xab\xcf\x07M\x92\xa9\x83-\xa5\x81\xb4\xd3\xd5\x87\x07z\xe2\xeb7\x97/\x9f\xaas\xad\x0e\x88h\xfc\xe6I\x06\x17YUo\xdb\xe6\xb6\xa4\xb7w\xf5$\xf5\xf0\x95\xe96K\xaac!JS\xb6Ai3\xdb|\x9b\xab\xbd\xd2 \x86\xd0\x91z\xf5gGQ\x19\xea\x9cJ\x0f\xbf2\x0f\x1f\x0e\xa2\x18N\xe3\x80]\xa6^\xb2z\xb6\xc1\xa8\x03\xd5\x06!qpH\xee\xd49T\xdf+\x99/\xe1\xfc\xbeL\x0fMDVzho\xc9\xf6\xa2J\xbe\xee\xfa\xf2\x1a\xe6Z\xf7\x0d\x16\x13F^\xcc\xab|\x83\x14L\xcb7M\x01\xf0\xba8\xbd\xba$T\x97\xff\x1d^\xb6d\x0e\xb8H\x8aG1u\xee\xa3/\xaf\x8a\xbe\xbc\xe8\xcb\x8b\xbe\xbc\xe8\xcb\x8b\xbe\xbc\xe8\xcb\xebC\xf4\xe5E_\x9e_\xe3\x88\xbe\xbc\xe8\xcb\xebA\xf4\xe5\xd5\x10}y\xd1\x97\x17}y\xd1\x97\x07\xd1\x97\x17}y\xd1\x97\x17}y]\x98\xea\xa7\x89\xbe\xbc\xe8\xcb\xf3\xad\x91_\xce\x97W_\xaf\xeb\xfc)\xd3)\xb5\xf9\xab\xbe\xf5\xd0\x996:\xc3Q4\xee\x95\x01\xa6\xb6\xa1\xc4\x90E\xba\x0bo\x83S{\x8e\xd4\xfc\xd4\xf9\xffr\xa5\xe9\xec\xcc\xfcJu1\xa9\x9b\xf8\x0e\xf0\x9c\x1f\xabkUta\xd4\x05\xafS{[\xf7\xed\xbd\xbc}Xv\\B\x0bx\x99\xac\xaf[\xc7\x90)\xb6P\xbbhF\x8d\xcd\x12\xb5H\xc79XU\xd3MV\x9eR\xea\x84\x92\xfbVu;\x87\xb4\x82|\xbd>\x16\xe3\x1c\xd1g*\xbd\xf7Fdf\x87\x98\xf7\x86\x04=2\x97\xbcMca\xf5\x1c>g\xa3\xbb U\xd5\xfaJ\x14\x85\xbezK\x8ck&\xdd+\xbb\xba-0qH\xee\xf4oWb\xe8\x125\xf0\xf9:\xdf\x8d\x1b\xedus\xeb\xdb?\xef\xc5>\xc7\xdc3\xec\xf4R\x89\xc8d\x06\xb7\x17\x02Y^\x89\xc7\xeb|\xaf\x1c\nzA\x9a\xf9\x81\x81\x83i\xc4\xf9?\x9d\xbf{}\xf1\xfa\xfb\xa7R8\xacw\xa9n\xc2,\xd1\xebz\x0e\xbb;\x10\xb7u\xb5xq[\x99\x8b\xff,\xaf\xc6\xbd\xf6\xd6\xc9n\xa7\x04\xe6>G[Xu\x1aU\xe8'?J\xc2?\x9a|^xT\x8a!JS\xd6|\x9bV\xd7\xc7\x95\x12 \xdaM\xf7\xb8\xf5\xdf=N\xcb\xf2(\xca\xc7\xff\xfc\xe4\x9bo\xbe\xear]\xae\xb9\xfcX-uS~\"\xff\xfd\xadmG\xbd~\xeb\xef\x18O\xdfJ%\x1d\xea\x8f\xd6Z\x98\x16\xca:\xd3\xbeS7B \xfd,\x1f\xae\xdeU\xe3-\xd4:\xaa\x12\xe3\xd7Io\xb7\x8b\xdbJde\x9agK}\xed\x1f\xbd\x7f\xd1\xfb\x17\xbd\x7f\xd1\xfb\x17\xbd\x7f\xd1\xfb\x17\xbd\x7fC\x88\xde\xbf\xe8\xfd\xf3k\x1c\xd1\xfb\x17\xbd\x7f=\x88\xde\xbf\x1a\xa2\xf7/z\xff\xa2\xf7/z\xff z\xff\xa2\xf7/z\xff\xa2\xf7\xaf\x0bS=;\xd1\xfb\x17\xbd\x7f\xbe5rB\xef_}\xab?\xb2\xc2F7\xec\xfa\xea\xa6\xb1\xc3\xcc_\xd5|\xae\x93\xac\xf5\xba\xac\x86\x16\x86\xba\xbc\x1f\xb9\xe4>_\x8b\xac\x16G\xba\xdbD\xf7;Y^AyT\xf7\x0c\"\xab\x16r]J}I\x0b\xb0R\xa8\x1e\xd9}t\x96\xdba\xb9J\xd7I\xf6PY\xb6:\xf1p\xa3\x1dl#O\x84\xean\xab\x1bFw\x90dy\xb6\\\x17i\x95\xae\x93\xdd2\xba\x1d\xa2\xdb\xa1\x07\xd1\xed\x10\xdd\x0e\xd1\xed\x10\xdd\x0e\xd1\xed\x80@t;D\xb7\x83_\xe3\x88n\x87\xe8v\xe8At;\xd4\x10\xdd\x0e\xd1\xed\x10\xdd\x0e\xd1\xed\x00\xd1\xed\x10\xdd\x0e\xd1\xed\x10\xdd\x0e]\x98z\xa5\x1c\xdd\x0e\xd1\xed\xe0[#\xd1\xed0\xbb\xdb\xe1\xaeYu\xe96\xcb\xbbIR=\xeb\xf4\xf2\xf6Y\xa7x\x9a*\xa4\xa6\x9a\x88\xf6\xdanJ\x16$\xbb]\x93X%\xff\x0b\xf9\x8dh\xae\xc4\x92cu\x1d\xd6\xbe\xb6\xc9\xa4j^\xc4\xb2?\x1a\xfcMI\xbbcu\x9d\x17\xe9\xdf\xf4\xfe*\x84\xeak\xe7\xa8\xf7\xd6]Q\xe6\x9aB_\xa6\xea!\x9d\x99\xa4\xa4}.\x0dZ\xc9\xd5\xab&I\xa6\xcd\xde\n*\xa28\xba\xd3\xf0\xf7\x16\xed\xb7\xb8m\xeb \xf6R\xe3:\x7f\xaf/u\xab\xf5u}b\xd6M\x07\x9bt\xb6\x0e\xba~V\\\x9b\xc9\xd6O]\xab\xf2\xbam\xe5:\xcf2\xb1\xae\xa4\xb8j>\xa8\xaa\xfeu\x9b\x84u\x10\xee\xd2O=M\xc1\xd5\xaeV\xaahy\xa9\xd6\x86^I\x83\xa5if[\x1a9\x9b\xa4\xa8\x15\xa0\xe6\x82mU\xe4\xc9f\x9d\x94\x8a\xb8~\x0dB\xbc\xca\xe0\xb3\xa6x`\xe5\xaf4h\xb2\x04\x83\xe6\x9c\\8\xb3\xb2x\xd9\x1c\xd7a\xbe\xdb\xa5Y=k.\xaf\xda\x9c\x1e\xb5\x19\xbdi\x0eO\xda$/\xda|\x1e4\x9f\xf7,\xd0s\x16\xec5\xd37\xf5\x08\xb7\xac\x1e\xb3`o\x99VaF\xf8\xac\x9e\xb2)^28\x1eF\xf8l\x1e\xb2\x10\xef\x98\xcb\x136\xd9\x0bF\xf2\x80q\xbc]\x93<]\x13\xbc\\\xa8X\x99\xd5\x9b5\xb7'kF/\x16\xc5\x835\xa3\xf7\xca\xee\xb9\x9a\xd5k\x85{\xac\x10\x15\x1f\x93R\xa1\x9e*\xed\x95\x1a\xa1\xc3\xbcT\xc1\x1e*\xd4;\xe58\x8a\x1d^)\xdf)=\x977\xca\xee\x89rQ0\xcd\x03\xa5=N=\x84\x98\xf7i\x16\xcf\xd34\xaf\xd3h\x97\x8c\x0f\xdc9\xbdM\x15\xe2i\x9a\xe6e\xf28Q\xac\xde%\x82g \xbbf\xe5x\x94\xb0\xf7\xff\x8e\x8f=\xd0\x8bD\x1b\xbc\xdf{\xe4\x1a)\xc1k\xc4\xf2\x18\x8d\xef\xc5\xed\x9e\xa29\xbcDS<D\x96\xd9\n\xf6\x0cy\xbcB.\x8f\x90\xdb\x1bda\x1e\xdd\x0b\xe4\xf7\x00\x8d\xbc?\x93<?$\xaf\x0f\xc7\xe3C\xf0\xf6\xa0n\x13\xe4\xb3\xe8s~\xef\xceT\xcf\x8e\x85\xbc\xde\xdf&ys\xc6\xde\x9b)\x9e\x1b\xd4S3\xc9K3\xf6\xca\xcc\xeb\x91\xb1{c\x10O\xcc\\^\x98\x19=0s{_\xa8\x9e\x17\x82\xd7\x85\xecq\xa1y[\x10\xc7\x04\xf6U\xea\xed\xb9\xcf\xc3B\xf6\xae\x90<+\x03\xe2\xe7\xf5\xa8L\xf2\xa6`\xde\x939='szM\xa6\xcc7\xc1[\xe2\xf7\x94\xb4\x12\xden'\x98+\xd0\x80\x92l\x96\"l\xc1\x05\xd8,%\xd7\xe6,\xb7\x86\x95Z\xab\xf8e\xd6f,\xb1V\xf3\xa9wg0\xa9\xb4\xda\xb8\x98\x1aRH\xad_D\x0d\xb5~]Kf\xce\xc2iS\x8a\xa6\xd5\xc5\xcf\x06\xb4\xf5\n\xa6\x05\x14K\x0b.\x94f+\x92\x86\xf2\xd7R\x1c\x0ds\x8d\xcdY\x14\xcdW\x10\xcd\x91\x95TE\xdfH\x0f\xa2o$\xfaF\xa2o$\xfaF\xa2o$\xfaF\xa2od\xf0\x93\xef\x94\x8e\xbe\x91*\xfaF\xa2o$\xfaF\xa2o\x04\xa2o$\xfaF\x14D\xdfH\xf4\x8dD\xdf\x88\x01\xea]y\xf4\x8dD\xdf\xc8\x10\x15\xc37\x82e\x8fL\xc9\x1cArEf\xcc\x13A\xee\xf6&\x95\xa5\xa2\x96\xa4\x8a\x97\xbf}\x88\x97\xbf\xf1\xf27^\xfe\xc6\xcb\xdfx\xf9\x1b/\x7f\xe3\xe5\xef\xe0'\xdf)\x1d/\x7f\xe3\xe5o\xbc\xfc\x8d\x97\xbf\xf1\xf2\xd7\xfc\x16/\x7f\xe3\xe5o\xbc\xfc\x8d\x97\xbf\xf1\xf2\xb7\x06\xeae`\xbc\xfc\x8d\x97\xbfCT\xf1\xf2\xd7Z\x1ch\xe6\xc2@X\x05\x96\x17b\x9do\xc4\xf9>\xcd\xf2w\xe2\xe7\xa3(+r=\x96D\xbe\xb4\xd4\xf7\x17\xc4\xf0\xe9\xc6\xfa\xec\x8d\xac \x9f\xc6\xc81\x03.\xea\x7f\xaa\xddj\xa2\xe7\xdf\x8b\xe2&]\x8b\xfe8jd\xef\xde>\xafO\xc1F]z\x9ffk\xf1\x14\xda\xc0p\xf8\xed\xe2\xf7\xffD\xe1Ly\xc8\xb3R0Y\xf3\x9fe\x9e9\x18C\xe2\x81\xfep\xcb\x84\xfa\xdf\xf7\xcc\x05\xee\xd2\xa8n\x97r\xaaG\x1e \xdf\xb2\x18\xb1\xc5 j\x18\x90|\x1egH\xb8\x19\x19\xb2\x8eff\x1es\xf5T\xb7-\xdf\x88U\xbb.o\x1f\xda\x18h\x06\xbeQ\xc4l\xf8\xec#,A\xc3\x9c\x01\x1b'1\xefe6Q2\x05n\xbf\xf1w\x89K\xa7\xf3\xe2L\xeb\xa7G\ns\x11\x9dB:#\xf4P%\xd3\xa9\x98\xc3]\x1a\xa7\xd9[\xbd38\x07\xa1Hs\xef\xae\x1e\xf9\xac\x1563\xff\x98\xeb\xead\xa2]3\xad'\x9f\xd4\xdb%\x8d\x8f\x84\xe5h\xb84\xe0'\x99\x8b\x95\xc86\xa2\xd8\xa7Y\xb5HV\xebt\xf1\xf2Fd\x8c\x95'\x1fq1-\xa9\xaa\"]\x1d\x11\xde\xce\xeb\xc8\xff$\xee\xc8\x8e\x03\x9e\x9b!\xcd6\xe2\x16\x7fz\x95\xe7;\x91t\xeb\x12\xf6&T\xb1\xf2\xdc0@\xa7\xb7\x96i\xb6\xdd I\xee\xd7\xda\xbe?$iq\x06IY\xe6\xebT\xddq\xd7\xc69\x08\xf9\xb6k\x99(\xf4\xda\x0fXB\xd2\xfa\x07a#n\xc4N\xb2I\x17X\xac\xaad}\xdd5\xef;%\x15\xa1j$W\xbd\xb8\xbeK3uq\xf0L\xa5\xf8I\xdd\xde\xfc\xf2\xfcZ\xac?]\xde\x9ak\xa4WI%\x8a\xb3^ED\xd8'wR\xdd\xff\xf9(\x8aTl\xe0X\xaa\x9a\x89\xca\x8cP\xc3Q\xcb\x1e]q\x0d\x9b\xc8K\xaf7\xe3\xc8\xec\x0df\x19yb0\xb3\xe39=\xc5lvF\xbf.\xee\x0eU\xbex\xab\xb2L\x7f\x14\xf4\xa2\x91b\xf3\xcd\x1f\xfe\xf0\xe4\x9f\xf9\xd2\xaa\x14\xeb\xc37\x7f\xf8\xc7OO\xb8\xaf\xd6FjCj\x9dS\xad\xe5\xd2'qWv\x9c\xa3R0\x1dK\xa1\x87\xfe\xc7d\x97n\x92*/\xca\xfe\xd8+\xe5\xd6U\x8b\x8c<\xeck\x91lD1$} \"p\x01Q{\x8e\xfb\xdb\xb8\x1e\xd4*)\xd3u\x9d\xd2*\xb7F\xff\x19\\\x0c\xd9\x05\x11hL\xc3?:\x04\x0c\xd8Sq5$\x87\xc3|\xe8\xdc\x8e\xd1\xe7r\xa3g\xe5\xb1\x84ur0U_U\\I\xfd\xe7\xe2\xb8\x13\xa5\x9a\xe2:\x87W_\xfd\x18\xee\x0d\xd0U&WX\xddI\x9c\x0d\xefa\xd2l\xbd;\xea\xcb\xa3\xdd\xae\xf3 l\x92*\x91c;\xae5\x0d\xe6RX\x7f\x1d\x8d\x95\xea\x08\xc0\x87\xa3*\xc9e\x95T\xb5B\xa3\xef\x99\xf6\xc9\xfa:\xcdz\xfeZ\xf5\xe5e\xbay\x8a\xcc\xff\x88\xcd\xc3\xfcj\xc7\xa3\xedl\x0c'\xa3J\xf7\x82\x89b\x93T\xe2k\xf9^\xe7Wu\xdb\xa9\x98g\xa1\x9e\xb5z\xaf\x93\xf2:p\xb5!n\xf8CRT\xcbRT\xcb\xe1\xde5`\xa5\x10\x9cT\xaaW\xf3*A\xfbF\x1a\xaciV\x89m\xaf*q\x0b\xb691\x80\xb3\x01|\xac\x007;ZA\x9a\x14U)\xaa\x1f\x14W~\x85<\xa0$\xe3\xc5\x8b\xe14\xaf\xf3\xfd>\xad\x96c\xea\xbc+gDM\xfd!\x89J\xef)\xbd\x87\xe5\xd6\xeb<'\xff9\xc3\xe7n\x9ac`\x06dC\xda\x9b\xca\x16\xc9\xe1\x00\xf9\xb1:\x1c\xab\xf6o\x87B\xdc\xe8\xa1u0d\xe2\xb6Z\xceJS#!g\xc0\x95\x1c\x0e3`Q\xeb\xa5\x8e\x06\x9b\x01\x9d\xb8I7\"[\x8b\x19P5\xf3\xd7\x1e+\x83sWn\xfc\xbc\x14\xc5\xb2.\xa12\xe5{\xbd\x03Oo\xb8\x9e\xf6\xd2\x1c3\xfa\xe6\xd9\x94\xb6\x90\xcf\x99\xe3An\x82 \xb5\xa3\xbaEIg\xb5\xd4E%\x8d\x95\xb3\xee\xe3\xfd\xf2\xb6\xf6\x19\x98\x8byujj\xb7\x81>#\xffU3`\xf1\x83:\xe0~\xf3d\x14f\xf0\xfa\xcd\xe5\xcb\xa7:\x18v\xb7\x93\x03\x84k\xa1|\x13Bo\xf2\x05\xc0\x9f\xc4\xc3B\xc0\x7f\x1e\xcb\n\x92m!\x84<\xe0\xd1@D]\x82G\xb9\xc7F\xdfQA\xcc{\x91\x18/\x87&\xeb\xfcp\xf8!)\xafa\x93\x0b\x1d8\xa7U\x08Q\x1b\x19\xd5m'\xa2\xac^d/\xa4.\xd1\xf3^\x96B\x073w-\x97\x1a\xcf\xc68\x85\xbb\x12\xc3,\xfd\xa0%0~\x19\xc2\xd6\x01\xbb\xb5\xf2\xe6\xa85\"\xb1\xbc\xc9+\xb1\xc4 \xd1\xe0<\x85}\xe70\x80\xc2\x9f\xe0\xbfy\x91\x03\xe1\x03`\xd0X\x7f%\x9c\xcb\x1aDv\xdc\xbb\xd0\x00|\x0d\xef/\xbe\x7f\xfd\xf2\xc5\xf2\xa7\xf7\xdf//\xff\xe3\xed\xcb\xe5\x87\xd7?\xbe~\xf3\xa7\xd7\xcc\xb7\xde\xbe{\xf9\xc77\x97/\xf9o=\x7f\xf3\xd3O\x17\x97\xec\xf7\xde\xbc}\xf3\xfe\xfc\x95\xe3\xb5\xda\xfb\xf74`|\xbep\xca.\xbcO\xb7\x99\xd8\xfcTn/k\x1f\xb4\x0e\xfa\x86\xba\x99D\xc7I\xed\xe8\x8ej\xa09\",-\xe2\x1a\xb0\xf2\xff)\xfc1\xaf\x90\xf0z\xef\xdb\x9a\x9fO\xe1\xad:\x8c\x92\x9d\x1d\x05f\x0d\xf4\x81\xb88}Z\xa9\x86\"?f\x1b\xff\xd7\\\xea\xaf\x86\xce\xe7~\xf7\x8d\xf59\xdc\xb4\xe8\x03a\x8f\x03q\x9f\x83S\xfbn\x81\xc8R\xf0i\xe4]\xf0\x9a+} \x8e\x1a\x18#\x97\xe00l\x06\x0f\x12\xe7\xd9\x00my\x19\xa0L\x02\xf0&\x028\x93A0\x96\xd0\xc7\xc7\xa6\xd3\xf0\xb1\xbd(\xabd\x8f\\\xaat\x1e\xa2\x0d\xcae\x97\xf7\xa1\xb16p\x9d\xb6\x0f\xcc\xaf;Y\xd9~\x18\xbd\xc9\xee\x02u=\xd1\xe4FS\x1f\xd1\xff\xc9yF\xca;\xa6\xe4\xa9\xd0i6T\x17\xa2k\xb8\x05\xa9\xbae\xbaS2!]\xa7\x87\xa4\xb26$\xd7\x90f\x1d\x83\xc6xg\x9cot\xee\x89\xb5zk}\xba \x08\xfa\x82y\xd9\xd0\xd8\x0b\x1b\xad\xedrs7\xb7\x807\xd9\xce\xd6,^\x83N\xc8\xd0W\x8cB_x\xb8\xd9h\n}\x12\xd8\xb7\xfc\x9f\xb0([F\xfa\x97\xa7\x13[w\xe9\xa29\x95]\x18\xad]dy:\x11\xc8\x89\xc5&\xcf;?T\x06)\xe64\xd1\x88R\xaf<\x14B\xda\x1e\xd0\xfb\x9c\xfa\xcbU\x91\xef\xfd\"Q\x8d\xd5>\xaa\x8e\xf2\x89\xfd\xac\xcc\x9eU4{\xa2\xd9\x03\xd1\xecA\x81\xb88izi4{\x80\xceR\xa0\x9fO\xd1\xec\xe9\x01e\x12\x807\x11\xc0\x99\x8ch\xf6P\xbf\x1e\xcd\x9e\x1a8\xc7T4{f\xe6e4{p\x98\xc0H\xff\xf2tb\x8bf\x0f\x0e3\x99=\xea\x9c^\xde\xe4U\x9am\x97\x87\xfc\xb3]a ,(\xff\xd9\xdc\n\xf2\xd3\x7f\xcb{F2\xbe\xe2:\x1b)S\xff\xc2\xb8\xef\xe4\xfc\xbf\xac\x9dw\xad#\xd3\xb8\xf3\xb4\xd7\xbaa\x12\x8a\xaa\xb6?\xaa\xcf\xb9|\xffj\x97\xeaN\xdbr\xc5 s\xbc\x93Z\xfdR7\xc2X\xaa\xe8\xd1O\xa7t\x1ev(ZZB\xe74\x10\xd4N\xdf\xb7\xa0a\x06A\xd5%|\x0f\x88\xdf\x04$z\x11\x07\xe2G\x81\xf1a\xb0\xc5?\xe2@\x89\x8a\xb4\xbcI\xa7\x1d\x98\xf4\x83=\xae\x12\x07\xc2F\x1d\x82\xd9\xb8h\x0c&\x0ehd&\x0e\xf7A\x10E\xac\x0c\x81\x1e\xf1IB\x87F\x85\xfa\xe2@q\xe0D\x87\x92\x10\x0e#H\xdd1\xa38P\"Iq\xc0\xe3Kq`-\x16\xff5\x8c\x01\x16Z\xcay\xd9\x85q4\xab\xe5\xb90\"\xfc\xa6\xa6\x01G<,\x0e'\x96[\xd4\x0b\x05\xe03\x07\xe8\xeax\x0b\xcc\xdb\x1e\x03L.A\x00\xa7\x00\x18\xb7@\x06\xa8\xd6\xfb\x10x\xab\xdb\x00g2!lB!dR\xd9\xb7F\x83\xd7|\xb7G\x06\xdcQ\xc880y\xc0\x1c;-\x8e\x19\x07Kt3\x0e\xa7\x1c\x863\x16\x19\x87S\x92\x83W\xa5\xb0\x035\x10\x9b\x84l\x18\xac\x8d\x83?\x84\x1b\x87S\xb2\xcd\x15\x04\x8e\xc3)\xa9\xc1\xc3\xc8q8%\x1d\x9e@t\x1cNI\x90#\x94\x1d\x87S\x12\xe3\x0f\x86\xc7\xc1\x1d\"\x8f\xc3\xe9\xc61C\x90=\x0e\xfa\xa8\xf1\x0d\x8e\xa1\x9bpt\x92/D\xb3\xf6:>\x0dpU!\x9aC\xc3@T\xa9\xad\x10Uj\x05\xbcem\x803\x99\x106\xa1\x102\xa9\xf7\xa5R\xb7}\xa4)\\\xd0\xa3\x1fg\x8e\xe0\x80\xe6\x93\xe0\xc0^\x8c\xfc\xa5h$\xc8\xf2j\x97l\xa9/\x05N\xb8?\xe0\xa9\x0f_\xc3\xb3Wo\x9e\xff\xb8\xbcx\xb1\xfc\xee\xd5\xf9\xf7\x84\xe0\xa0!\x0c1\x9c?{\xff\xf2\xb5;\x9e\xa9\x0fC\x04\x84\x80\xa8>\x0c\x11\xbc\xbep\xc5E\xf5\xa1\x89\x92\x9a\xc6\x06\x9e\xdd\xa0Ao\x94\xcdw\xbbd\x0bi\xb6QN\x8f\xbaS\x81\xd9D\xde\x80\xa9>\xb4\x0e\xc4\x94~u\xc9\x0cV\xe8C\xd0\x1a\x0d\x12I\x84(\x8e>L\"\x8d~\xed\xa6\x81\xe4h\xee\xc3$\xfa\xc8\xac\x0b\xb9\x1b\x07x\xae\xd4\xcf\xf7\xe9V\x07\xf4\xc9s\xde\\\x1e+\xb7\xacI\x1b$\xa2K3Hj\x9c\xbe\x0bc.\xbd\x1ak?\xd1\xb1\xf1\x11\xea\x12\x8a\xb5\xda\xfd9\xf1D\x056jw\xa5c\x19\x12\x931\xd9\x9a\xdbv\xea\xdb=T\nBl\xa0\xf7\xbc\xa1\x9e2-m\xbe\x95G?A\x89\xa7'q$\x1a\xa8\xe3\xd1\xc0\x92C\xec\x8d\xc4\xdcD\x87\xe3j\x89\xd4Y\xc2\x81\xc5\x14`3\x06\xb028>`3\x08\xf8L\x02\xbc\xcc\x8e\x0f\xee\x874\xee\xe9L\xad\xf7CD\x87W\x05\xf2\x01%\xd2\xa4\x0flfr\x0d\x97\xe6\xf2\xe5P\xa4y\x91V\xac=q\x12\xba\x0cE>B\x18\xdb\x92\xb3!\x19r\x8a\xc9\x04\xd6\x1agH(\x06#\x80\xc9\x0c\xe0\xcb&&S\x80\xcb\x18\x08\x91J\xa7'\x8a'\x8f\xa8\xd2Hu\"\xf0!\x03\xd35\x87!\x8b\xb8\x92\x88\xc9@\xfan\x87P\x19t2\x8a\xe8A\x81\xcd\x1btR\xfcdH}5\xcf\x96\xee\x0b[\xc2\x17\xfd_Z\xdd\xfd-\xc9\xaa4\x13K\xbf\xc6\xe9\xd74=\x1a&IH\xd1D\x13IB\x138\xa4\x81\xb8\xcfI\xf2\x984H \x0f\x148\xd2\x97<`\xa0\x0f\x1ax\xb2\xf64$P%+G\xa6\xea\xc6sn|$iJ\x17\x13d\xe6\xf87\xae\x06\xa6\xd4\x9c\xf1\xfbt I\xf8(\xe1s\xbe\x8b\"\xc6W\xa6\x862\xbf\x92R\xf9\xb9\n(>W\xf1\xc4\xbepf}\xdf\x80\xe2\xea\x04\xb1'U%\xf6\x07\x15\xca\\\xe5\xb0O\xcb\x9dH6\x90\xe8\x00f\xd0\x01\xcc\xe6\xa2\xa2\x13\xb7\xd22\x04\x95<\xb8\x94\x99\xa5\xe0#\xe2\xc8\xd380W\x8b\xcd9\x17+=\xf6~\xb2\xf2\xcf\x80o\xab|y\x95\x1em\x0e!\x9b:1g\xd10\xaf\x8b\xc6\xc3\x14\xbb\xdb\x85\xe3`a\xb8R\x18N\x13\x9a{\x84\xed\x08\xe9\xcd\xa3\xd7\x8b\xe1\xf7M\x90\xbc\x10\x9ei\xf0\xacL\xc7\xd1@Dl?\x12\x9c\x1e\x00\"v\x84\xec\xde9C\xbd\x96\xc7/\xdc\xedG\x16\xeb\x12\x1d\xbf$\xef`\xeb_\x97\xe3\xc5\xaf/^|\xd7l\xb4\x11s\xba\x9b\xc9\xbd}\x9c\x1b\xc6\xb9El\x9b\x82\xb0\x0d\xa6/\xfc\x11O\x9ewN\xe8\x91\x04\x1b\xcb\xad\xe1\xa9\x8c./\xec\x00\x18\x9c\xc4\xf8)\x82\x9d\xc0\xe3\xd3\x97\xa3DL.\x9d\xea<e\x03t\x00\xcb\xc9\xea>U]'\xea\x9cJ\x85\xf3\x04EOO\xec\xe4\xc4N\xcd\xa9\xdd&\x9c\xa7\xa4c\xb0\xf8\xe9H=\x19\x89\xa7\"\xf1D\xf4\x9f\x86\x04\x11\xd0\xc2ta\xd0\x82\xf7\x04t\xb0\xd8\xb1\x9a,\xa7\x1e\x01\x19~\xdaYO:\x02\xc6\x01y3\x9dn\xf8\xc96\xdf\xa9\xe69\xd1\x1a\xc2\xc9\x02\xdc\xb2\x91P\x06\x0e7\x8f\x7f\xdbx7\x8cw\xab\xb86 q{\xcc\xb31\x1c[\xc2y\xe8u\xd6\x19\xb2\x01\x9c\xaf\x0e\x17=\xb2\xdci\x9f\x9eeq\x8f\x16\xdb\x8b\xa6(7a\x9d\xf5\nq3N\x84\xd1\x1eF\xf7\xaf]\xa1\x9cXp{R\xb1m]^\xbbK\xfb\xa8\xd0\xf6\xb4\"\xdb\xb3\x14\xd8\x1e\xcf+\x96\xf7N\x9e\xe8a)j\x86v\xa6\x1e\xed\xfc\xdb!\xc7\xb1s\x9cZ?\x8dZ1\x8d^#\x8dX\x15\x8dU\x07\x0do9e\x80[\xeb\xccU\xcf\x8c[\xc1\x8c[\xb3,\xde\xdcA\xbc\xb9\x1b\xc2\x89n\xee,:\xa6w\xb9a\xfa\xa5G \xf6\xe2\x1c\x0c\xcdY\x0f\x8b\xbf\x96-\xba/\x97*\x9f\xff \xa4ZU\xaf\"\xd5\x00\x9f\xa5>\x95\xab\"\x95\xa5\x06\xd5IF\xca\xa8%\xd5\x96\x1c\x1ang[\xf5(\xac\x1e\x91\xb7B\xd4\xc4a\x8eN\x0ev\xa5\xa7Q5\xa7>>J\xf9\xa6\xfe\x1b\x8czM\xf6\xa1pk2\x0dk/!\x030\x9f\x1dV\x95\x8d\x1aL\x03Q\x83i\xc0\xbb/\xa3\x06\xd3\x81\xa8\xc1D\x0d&j0Q\x83 \x18f\xd4`\xd8\x1a\x8c+\xd2 \x9d\x0dLLZ\xcb>\x921L\xbb\xef\xc4\xd7zXQ\xc6N\x01\xc6\x1a\x0fZ\x86qt\x15\xc6\xbe\xfd\xf2\xb6|c(\x93XS\xb7\x80\x93~\xac\x93\x82\xefx\xb3\xc5\x90P\xf5S\xfcY{_\x02\xba\x9ej{\xda\xd2\x83\x80\xa5\xaf\x82W\xf2\xc0\xccz+\x04\xe8\xae\xb6w|]\x03l\x91\xd9$\x95\x0fS\x9f,E1\xdc:\x99M\x17\x00gy\x8b \xda\xe3\xa9\x14<\x82\xce\x0b>\xca\xc1K=\xb8\xf5_\xf0\xf2\xdb\x80O\x0f\x06o\x19\x08/\xbb\xc0\xcf2\x82^\x0c.\xdd\x18\xec\xfa1\xf8Ht\xe9\xc9\xe0\xd7\x95\x81\x8a\x1f\x19\xbaSo\x06\xef\x1c\xba\xf6\x8c#\xd6+\x94Z\x9f\x96 \xe1:5\x82\x89T\xb9\xde\xa7\x8f9\xaa\xd4\x9f\x9c\x0bs\xe8\xdb\xe0\xd2\xb9\xc1Qi\xde\xab{\xc3\xfd\xb2\x80\xb9$\x10\x84x\xb5x\x8a\x8a\x8e\xbc\xc6\xd0\xd3\xc1{\xf8\xcf\xa7\xaf\x83\xad\xc4;\xd6\xcf*j|Q\xe3\x8b\x1a_\x0f\xa2\xc6\x175\xbe\xfa'\xcaR\x8e\x1a\x1f\xf8&\x8ax\xd03\x8f\xf7\xa8\xf1E\x8d/j|\x06P\x8d\xcf\x97\x93j\x9dI\x9bx\xb7\xde\xda\x06a\x9b\xcf\x19e_Xs\xdd\xe8\x82\xedV\x17\xc8-u\xd0\xb3\x1b?\xaf=Ms\x02\xb4\xf6\xd2\xdd\x16g\x8aFtZu\xc5\xdb\xda\x86\xdb\xd0\xc6K\x13\x90\xe8\x02Z\xcb\x1a\x92\x9a\x03\x9d\xc5\xed\xed\x06\xe3mJ3\xf7'\xfdR\xdb\x00\xbd\xd9\x0c\xb4\x8dd\\Cm\xe6\x13*z\x8b\x19Nc\x19\x85WQ\xe5@\xc8m'\xc3m\"\xe3o\x1dC\x98R_1k\x02\n\x9aZ\xefn\x04\xc3\xfa\x8c\xaf\xfa$\xb1\xd5\xcb\x8c;\xda_\xac\x984@\xf0iB-\x90\xcc>\x03\xa4\x91\x02y\xb4\xe07\x07\x9b\xc7Hf\xa1\x01\xca:2\xe0g9p\xd8\x0et\xd6\x13\xcd\xc7\xc1\xc3\xee\xba\xcf\xf4\x06*\xa4\x11\x91F\xc2o\x91Bh\x8c2\x17y\xad\xd6zO\x1f\x1c\xf2\xc3\xdb\xb5\xa4\xc9U\xc1\x80\xd7\x87d\xae1P;\x8d\xcc\xf5=\x7f/\x91\xb9\xbe\xc4\xe8\x162\xd7'\x89\xfd@\xe6\xfa\x1c\xb0:~\x1c\xc8}>\xe6\xa1\xaf\xa7\xccM\xef\xe4\xe1\xea\xdf\xe1=\xac\xfc\x87\xd4\xbd)5\x9e\x1e\x1c\xb4\xd3\xcfu\xb1f j3-\x90F\n\xe4\xd1B\xd4f\xe6\xd6fl\xa5\x8a\xba\xa0\xc7\xe2\xae\xb7\xed\xad\xb4M\\\n\xd4\x85\xe0-s\xd4\x05\xc6d\xd0\xbaN\xf83\xd7i\xef\x11;Lx\xb3\xdci\xaf\xf9\xbbI\x103\xe2q\xa0V,\x9c\xaf_\x84\xb7\x12S\x17\x08\xee\x9a>0V\x0dc\x03\x13\xbb?\x04|\xdcgkkpVw\xeaB\x00\x05\x9e\xe1\xd3\xaf\x99\xe8}\x1bT\x95\x01\x02&\xfcf\x86FQx\xf9\x0d\x0bBB?\x86v\xb5\xa2]\x18\x9c\xd2\xd4-C\xdbo\xba\x94:\xbb\xb4wJz\x82\x94\xa7Hx\xc2\x0e%.O\xd2\xd2$T\xb9%\x0c\x0c\x88\x83\x03z}[\xe2 \x81:P\xe0T\xb6\x9d\xff\xe3\xb4\x13b\xde\x8a\xb6\x84z\xb6\x94\x92\xae@g\x08M\x99<p\xea\xd8\xce\xf4\xe5\x83\xb3\xc7\x80w\x89\xfb\x17\xb7w\xdf\x92\x06BXM\xde\x1d\xeb\x1d\x0c\x90\x06\x04\xd4\xbdJ\x1a\x18\xd0\x06\x07\xf4]:\xefg)\xfbs\xce\xdd\xe9\xdd\x9b\xb4\x9dIb\x82oo\x00oO\xce\xf2M\x9f\xf7\xbey\xce\xf71\xdb\x87\x1cU\xf5\xad8m\xb8\xfcu\xf3m\x9a\xc3\x9c\xe5mOTQ\xd5!O<\x92\xc4'C<\xd2\xc3;\xb5\x84\xad\xeb\x95\x15\xd3?b.\x1e\xb8\x9b\xdf\xb5\xc5}\xeb\x9e8\x9f\xf8\xe6\"m\xe5\xc0/\xf8\xb6-{k\xddG\x98L` \xf7\x8e\xb9\xd0AF-\xdcnM\x88|\x95\x96\xf4\"\xb1\xb6@\x1bR\x01\xb8\xd1\xc6\xb5mXo\xea\xa5\x13\xab\x0b3X\x9215L\x94/\xea\xf5\xf0}\xef\xbe\xef\xe2\x84\xef\xdb\xde\xb0\x07\xf1;\xde\xf0\xdcp1\x02\xfa5\xb0\xc3\xfa\xcdk\x94\xfb\x01~\x88\xbf\x15\x91'\xf4_CH\x02\x80\xfdM_\x1a\x80\x86{h\xcc\xe3\xf4\xd0\xe8/\xb8\xef\xf3\xfd\xde\x19\x9fo\x86`5\xf8\xf6#\x10\\\x04\x04v\x81\xffL\xd6\xc0\xf0\xc7\x10F\x07\xc4\x11\x02\x10=1\x94y3\xe0_\"\x06|\x0c\x06:\x93\x81\xcah\x96\xf7\x85\xe0{\xf1^\x05\x13\x06@\xbb\xfa%\xdf|3\xbehe\x957uA\x03e]\xf8\xf7\xb3\xf72{\x8e\x11\xd1\x8f\x81\xf9\x92\x1c4\x90R\x1d4\xf8\x12\x1e48\xd2\x1e4\xfc\x02\xfcb\xa7CX\xd1\xf5\"\xf6\xed\xac\xb2\xa5Fh %Hh\xf8E\x99\xe5_fVL\xc3\xe5G_\x7f\xb4$\n\x0d\xccT\n\x0d\x14fLH\xab@\xf1]\xe5\x05>\n4\xe3B\x03\x96i\xab!\xaa\xf3Q\x9do \xaa\xf3\xce/L=\xfe\xa3:\x1f\xd5y\x04H\x8c\x8e\xea<PX\x15\xd5y\xaf\x9e\x15\xd5\xf9\x1a\xa2:\x1f\xce,\xff2\xb3b\x8a\xea|\x0fB\xd4y\x9fG\xa7~\xca\xbd@\xdc\xe7\x9d3\xb1Z\xc3$\xfc\xa7\xec \xe9\x9b\xc6I)\xd8\xe3\x91|\xce\xed\x89\xd8\x1ah\xe9\xd85:\xbb\x9a\xe4R\x8d< \xda\x1a&\x1a{\x9e\x94m\x0d\x045\xcf\xf7\x1d\xf0$qk |\x08\x88\x1f\x03JZ\xb7\x06nrw\xfd\x16\x8dV`\xd0\x0b\xb4to\x0d\x84\xb3\xa2\x0bf\x83yS\xbf5x\x13\xc05\x9c\x92\x08\xdf\x96\x1f\x02=1\xdc\x8b\xaaM\x1c\x0fL\x0f\xd7\xc0M\x12\xf7\"\xd4#\xe0\xa6\x8ak\xe0&\x8ck\xf0\xa7\x8dk /\x04_\xb6\x95\x062:\xdf\x99\xd4\x05wRy\xfd\x0c\xff\xc3\xb4\xa0wb\x9a\xb9\x86\x13\xc9\x16\x8a\x91\x0b<&\x00M%m\x81q\xbb`\x80\xc1\x0d`r\x04\x80x\xeb`\x80be\x0e\x81\xbeB\x0dP'\n\xf8\x93\x05\xdc c\xddR\x0c^q'~i\xa0'\xb3k`\x8c\x971N~z\xbb\x06B\x92\xbb\x86S\x90MN\x19\xd7p\n\x12\xe6M\x84\xd7\xc0K\x87\xd7p\x8a\xb1Q\x13\xe45\x9c\x82\x02\x7f\xca\xbc\x86S|\x9b\x91D\xaf\xe1\x14D\x10\xd3\xea5\x9c\x82\x00^\xa2\xbd\x06z\xba\xbd\x86\xf9\xe9\x9e9\x01_\x83+\x0d_\x03\xf1\xa0\xa6\x1e\xd0\xbf\xa0\xaa\xe8I\xd5\xd7\xc0\xd1\x05\xfc7\xcf\x06\xa2\x8e\x18uD\xdf\xd3\xc0\x98(\xe0O\x16p'\xec\xd4:\"\xa5D\x80\x06=Rw\xa1\x00\x0d\xder\x01\x1aX\x0b\x8b\xb7\xacX\x05\x044\xb0'\x92VL@ChI\x01\x0d\x81\x85\x054\x04\x96\x17\xd0\xc0/2\xa0aR\xa9\x01\x0d\x94t\xb5.\xccUv@\x03\xab\xf8\x80\x06\xb2\xe7\xb6\x0f\xecu\xc7\x16\x1f\xc4\xa2\x04\x1a\x82\xc9\xa1\xdd\xd5h\xf0z\xeb\xfa\x10L\x13\x89E\xdc\xcb\xd09\xcb\x17t\xf1\xb9n\x0b94\xb2\n\x1a81u\x8b\x1dP\xca\x1ah\xf0\x147\xd0@\x90\xfd\x14\x89\xef+w\xa0\x81vr\x11N-\x02\xd5\x1a(\xb4k \xcb\n\xd6&`l\x00o\xb2\xb5\x01\xf2\xe0\x81\xc5\x00\xf0\xa7Q\xf6\x81\xc5\x08\xe01\x03( \x97}8-9\x9cS\x90\x93\xbfI@\xe7\xcb\xf0\xec\x83\xcf\xbd\xde\x07\x16\xd38\n<)3\xb4\x0f'\xa0\xc5]\x8aA\x03q;Q7\x12Q\x8e0\x06K^\xa7D B\x1c00\x06\x0d<\xd9\xc1\x18<p\x18\x00\\\xa9q:B\xe8\xf2bVi\xc1\x91\x15\x1cI\xc1`\x14mgB\x88\x8c\x98\x9d\nZDR\xf34\xed\xf3\xeeO;\x8aEh\xf0|\xc5\x8d\xdd_>B\x83[\x13sh`^\xe1\xe1\x17\x19^ I\xe23a/z\xe5\xa1w0@\x1a\x10P\xa5\x1fi`@\x1b\x1c\xd0e\xdd\xbc\x9f\xa5H6\x8eL\x8b\xe5k\\\xdf\xa4I\xa8I2\xe3\x97\x8ci\x0c\xac\x971\xc2\xd3J\xbb\xf0\xaa\x19\x8a\x96gml\xdaH:\x8c%\x81%\xb4\x10\x95+\xb8\x1c\xc1\xae\xff\xadb\xc9.\x8a\xaca\x80\xd4\xc0?\xa7(t\x8b@G8\x9fw\x03\x98\xf5c\x8d\x96\xb3\x06\xe9ME\xed[\x99\x9c`;$\x98\x0e\xc1G\x0b\xaf\xe3\x06\xd4\xf5\x02\xe6p\x06\xbaC\xe8\xa8As\xf609\xc7T\xcc\xde\xdd\x12\x0fp#\xa1\xb3\xc9(O\xd8\xda\x84\x9da\xf7_\x91W\xaf\xe5(&\xb9\x0f\xbd\xea\x8d_\xb5\x89M.{\xe0\x0f\xe4\"\xadD\x94Bzx\x96# +\xf4\xf3\xdeP\xa4P\xc4\xf3\x04O\xd1\xc2\xa5Bi\xf4\x05A\x85\xe2\xb5\x876\x85b$\x04,\x85\xa2\xf6\x84!\x85\xa2\xa5\x05\x17\xf9\xc3\x89\xc2\xbe?S\x90\x10\x16\x16\x14\xa0\xa4\xcd~\x18\xc6V\xcf\xf1\x14\x1c\xc2=\x9c\x82\xaeP\x15M#~\xb1d\xbdV\xf2L\x91o\x82HA&\x04\xe6\xf9\xcaz\xf0b(\x98\xc1\"\xcc\xf0\x10z@HP\x08Ho\xfe\xbd\xb1\x1c\xb4(\x0dr\\\x06a\xaa\x08\xab\xfc\xbe\n\x05xc(\x18_\xb2\x0c\xa7w\x8c\xb1\x82\x1e\xd0\x90\x06\xb7\xe9\xcb\n[@B\x13\x06\xe8\xd0@\x05Kh\x02*\x07\xf0\xdd\x1f\xab#w\xdf\xf4\x08\xc8X\x1d\xf9\x7f]ud\xdc\xb3\x1d\xa0\x94\xce\xacq;\x96\xf1\x04\x15\xd2\xb9\x80\xbd+\xcb\xb3\xae<Kw\x1a\xfa\xf9\x17\xad{\xc9\x92f\x0d[\xae\x84\xc5\x1a\x84\xdb\xe7\xc0\xb0\"\x1d\"\xc4\xef\xeb1\xdf\x81\xfe\xc0h\xb9\x8d\x97\x98\xa3\xfa\x00\xe3(r\xd4\x17\x08\xd8\x8f'\xe8,\xef\xac\x11@u\x10\x80\x8f\x06\xf0\xd2\x01\xfe\xdc\x7f\xeff\x83\xce\xcap\xa6\xd8;\xb3\xfb\xe7\xfa\x8c\xdf\x89\x00\xe1\x8e\x04\x17\x07\x89\xce\x04\x98\xe2P\xb0\xe0#\xe7\xe5S\x1d\x0b\xe0\xcd\xc1\xf7L\x97+\x89\xca;\xd3>\xb3\xdc\x9eQOF\xed\xb2\x1f\x089\xf33\xec\xba\xfb\xb8W ^\xc7\x00eD@\x1a\x15\x80\xf7j\x06\x9a\xaf\xf9\xaeg\x80\xb0\x16\x0c\xf8\xf3\x92H,\x05\x1a[\x89W6\x9d\x07\xed\xf9F~\x07\x06P\xa8\xf7RMwf\x80?\xc3|*9^\xc7\x01\xcc\xf0\x91y\x1c\x1d@vv\xc0\x0c4\xfb\x1c\x1f0\xc37\xdc\xf9\xddS\xb1\x13\x1c\"0\xc3g\x089\xdaS?As\x94\x00\xc9Y\x02\x93\xe9\x99\xc9q\x02\x8e\x9c\xea \n\xedI\x0f|G^\xb4\xff$\xe9 Gs\xa0\xe3I\x8f\x80\x7fT\x10Oz\xfcA\xfbI\xef\xcb'\xd6t\xff\xb2\x0dhI\x8e\x1b\xa03\xd9\x9f \xccu\xe2`\xef\x10\xb2~\x99\xce\x1c\xec\x15w\x86o\x90S\x07\x80\x16\xbdK\xce\xe1\xed\xf9}|\x8b\xdf\xfa;\xd9/\x04\xf4\x95@\xdcl\x84\x8c\\\xe6\x07\xfd\xd9\xb7^\x7f\x11\xf0\xbf\xea\x18\xe6\xcc\xbe\xa3\x11JK\xe8d\xb8\x0f \x93e\xae\x84WG\x9a\xabUL9\x02i\x1di\x13.\x91y*\xdf\xf6=\xb8J=i\x123\xc9zB\x82\x04a0@\x19\x10\xf8/\xf55\xcc\xf7A\xbfXe{\x00\xac\x98< \x11>\x97\x16\xd0\x06\xee\xd7\x90\x08\x1e\x03\x0d\x13\xbf\x86\xbb\xba\xc0\xb74\xdd\x8b\xf2\x84\xb6\x93gGy\xf7\x93\x7f7y\xf7\x92w\x00\xe0\x1f\x04\xd0v\xd1<\x9f\xf2\xed\x9f\xb9v\x8fs\xef\xf8w\x8ew\xb0\xbe]C\xdc3\x93\xbe\xe3\xf3\xb8\x81\xef\x03\x18rK\xda\"\x8a\x07{\xdf\x9d\x98\x88\x9d\xacS;\xcdZv\xb8c\xe4\xd6Uj\xd9\xcf\x8e\x9d\xec\xda\xc3\x8e\xdd\xeb\x99w\xe76r\xee\xd5p\xc4s;\xb0]\xeb\x9207\xe3\x05\xef\xddRL\xac\xae\xedC^\xee\x88i\xe1|\xb7o6\xe0\nv`\xae\xdc\xb8\x93Cp\x86\x9c\xee\xd8\xf5C\xe7\xceg\xb4\x05\xc6\x0b\x7fBr\x1c\xea\xb8\xa68\xac\x03\x14\x7f\x8bc\x9a$(Q\x0f1\xea\x80\x0eE\xe7\x0b\xd9\x0br07\xdc\x1bn\x18\xb7c9\xd8\xa1\x8cd\xa89\x1d\xc9\x14\x072\xee8\xb6\xb0\x19\xbb7\xb6\xce\x88M\xe2\x8c\x1d\xc2^\x14\xd8\xa5\x80\xc3\xf1\x1b\xb0z\xe7M\xda\xf0^\xefNP\xbc\x1d\xd7\xb8\x1a+\xf1z\x1dU\xafN\xe5\x9e\xf1^\xcbZ\xafc\xdd\x0eW\xef\xca\x19QCs\xacZ\x1c\xaa\xdc\xcf9\x9d\x90\\d\xd3\x1d\xa4~\xc7(\x97&\x97\x03\x94\x8b\x0bwtr\xb1x\x1c\x9a\\t\x0e\xc7%\x17\x95\xdfA\xe9vL\xf2\xbe7\x83\x03r\xe8xd(\x1e\xb3\x1c\x14\x88#\xd1.\xe1:Hz\x8e\xc3xB\xf4~\xfa_xB\xd8\x1cu\x9a\x9e\xd3f2x\x1dp\x1e\xa6\xd8\x1dn\x1cG\x1b\xc3\xc1\xc6p\xac\xd1\x1cjlG\xda\xdc\x99Q$\xef\x97g\x1a<+\xf3t\xe5]<\xde,\"v\x84\xec\x19\xbdVv\xd3i\x8a\x97j\\\x88\xa6\xef\x9d\xb2\xd8\xceu\xb7k\xcd\xac\x11{\xba\xdb\xc9\xd7E\xdc\xd73\xdc\xdf!\xdc\xd3\x0f\x9c\xd4\xfd\xbb\xc7\xdc\xff6\xcc\xe5v\xf6\xc6:xS\xfbuS\xbbs\x8f&\xa4\xb9\x9f\xeaN\x86\xf3&c\xb4A\xd1\xf5\x8d\xac\xea\xd1\xfd!C\x15Ao\x0b\xbd\xba\xc8`KY\xee\x06yh\xe6\xbb \x9cx\xb9\xe6\xb8\xf1#\xe1\xb0/\x85\xf7\xc6\x83LX\x0d\xf1\x1e;\xdec\x7f\xc9\xf7\xd8c\xb7)C\xea\xcc`\xc1Y\x96\x9bu\xb1\xd9\x97\x9au\xa19W\x83c-8\x96X\x18\xcay\x17\xd7\x0c\xc9r\x06<\x8b\x8a\x85o\xb2cd,w\xf3\x8a\x9e\xacW5z\x93\xf5\x83Cs\xc4\xa7C\xe1\xcf\xf4\xf5(\xeb3#\xd3\xc3\xa3O\x01U\xa7\x02\xab^\x053\xe9V\xd61!\xfa\x95\xedYL\xc7\x02\xe4\xea\x84\xb42`|]\xa2\xdf\x1b\x9a\xfa\xd85\xc9\xf8\x8a\x84!\xe8\xa6\xdf\x8b9\xafB\x02\xa4\x9d\xe5\xfa\x03\xe7\x87\x01\xd7\xb5\xc7\x9c7?\xcek\x0e\xf4\x8ac\x9a'\xd4i\x1f;\xf1tHoQ\xa4\xd9F\xdc\x86\xac1\xc4\xcc\xa5~\xdde\x81*\xf3\xb5\xbd\"X\xdd\xa9\x1d\xdb\xf6nO\x95\x95{\xa7\xd6X\xbaN\x0fI\xa5\xad\xdc\xf6\n\xb6\x7f\xa5P]\x8b\xee&O\xca2_\xa7\xea%\xb5I\x8cQ,n+\x91\xf5=\xab\x81\xa3\xf9\xef\xd1h\x1a\xdcr\x89Kczc\x86\xd5\xf1\xf5-\xe0M\xb6\xbb\xd3\x03\x05\xed\x96\x14\xda\xbe\xee\xa0\xab\xe5X9\xa2z9\xdfl\xb8\xe8\xe7\xcfK\x07Wo\x86\xf4\xf0-\x93!\xc1\xc6\x8d\x01\x0fp\xd2\x15\xd9\x858\x14\xa2\x14Y\xa5nH\nq#\xff\xd8C\xa5\xfe\xa2\x1c,\x9db\xb9\xed\xf2\xe9\x1c\x13\xf2\x1f\xe5>/\x17\xab\xa4\x14\x8b\xce\xa9}\xf3d%\xaa\xe4\xc9\xe2\xfc\xd9\xf3\x8b\x7f?\x8a\xe2\xee\x9d(\x0f\xf2=\xf2!\xbe\xce7\xa3Is\xec\xbfF\x96\xed\xf2\xads\xae\xd3\xec*\xf7<\x80\xec|\xc2\xa9\x84\x98\xed\xfeEv\x93\xec\x8e\x01k\xf3P\xe4\xf9\xd52?\x8cD\x1c\xe9$\xeb\xbd\xd7\xbe{\xda\x0b\xe4\xbeR6\xf8\xbb\xedtq\x16\xb9 \xb1\xed\xb4\xc3s^\x9c\xbe \xf7\xb7r\xb2\xde\x1c\x1aM?\xc9@\xb2I\x897\xa9\xdf\xeb\x9d\xbcNv\xeb\xe3.Q\xb16?\x89\xe2\xd3N@\x91\xe7HL\xfd\xe5\xb5\xd0\xf1\x13\xeb\xfc\xb8\xdb\x8cS\xeaW\x02\x92b\x95VER\xdc\xd5d\x9f\xd5\x12V\xe2\xce\xc4ZJ\x8a\xe2N#\x91\x9f\x16\xb7\xc9\xfe\xb0\x1b\xb3*\x93\n\xda*?\x16\xea\xbd|#\xc6\x1f\x93\x1a\xc3\xe2W\xe3\xbf\xbf\x96\xfa:\\^\xa7\xa5\xd69\x95\xf6\xb99j\xb1.\xcc\x9d\xac\xe1\xcc\xa1\xc8\xab\\?\xa8\x99\xb4\x19!L3\xb8l\xc5K\xf3\xb3\x9d\xf75\xeeR~\xba\xe6\xa7\xda5\xe6\x0bFT\xef\xd2R\xdd\x11\x9b\xe7\xfb\xa3a\x8d\xa3D\x06\xd2\x97\xf5\xe3!\x04+\xc1R>\x96\x87d\xed\x92\x1e8wF2\xb9g\x83\x16\xe6\x8f\xad\xdf\xd4\x9cK\xcd\x8b\xb0}\xf7\xf6y\x8d\xedg\xf9\x87\x96i4\x86\x99/kl8\xd7j\x84}\x96y\x8e\x1b^M\xf6\x18o\xd6\x81Pt1\xde,\xc6\x9b\xb9V\xef\x9c6e\x8c&\x18\x8f78\x9a \xc6\x9bu\xde\x88\xf1f^,\xff?\x8c7s\x9fmC\xa4R\xd7\x91+$/\xd2m\x9a%\xf5\x01\xd4<f<%g\xf50\xaa\x91\x96\x9bH]\xe9\x99X_\xff\xee\x9b\x9a\x9a\xc5\xf0\xe0\xb9\xe8\xaa\xc1gPu\xf5\xac\x8f\x92-\xe5\xc73X\x1d+s\xa5\xfb\xfe\xc5\x8fg\xf0Y\x1d\xb87\xa2\xa8 \x1d\n\xc5*\x1f~s\xf8Iy6\xafDU\x89\x02>\xfc\xd9\xa2y\xfb\xc3\xeeZ\xaa\xd1\x08\xbc\xbeU\xc6P\xc4\xaa\xdb\xe9\xb6,*{\xadk\xcd\xbd(.oK\x1d\x10\xf29\x95*H}\x97\xa5\xcd\x0d\xad5\xfck}\xa9\xf3\x83:\xf2\x7f\xf3d4\xc7\xaf\xd5\xd5z\x96WJ\x8b\xa9nK\xb8\x16\x854\xea\xea{\xa5\x05\xc0\x9f\xc4\xc3B\xc0\x7f\x1e\xcb\n\x92m!\x84Ty\xf2\x0c\xd1b\xf2B\xce\xcbUZ\x94\xd5\xe8;JI\xdf\x8b$\xab)\xd6d\x9d\x1f\x0e?$\xe55lrQ*\"\xea\x98\x19\x89\xbc\x14\x92\x9cv\x0d\xd4\xdb\xee\x85\xb6F;\xb11u>\x89R\x90\x92\xb5dU\xd9\x8b\xbdi\xf4\xb8\x1a\x95\xe8\xd5c\x04\xde\x12\x18\xbf\x0ca\xeb\x80}\xa7\xd1\xd85\xcb\x9b\xbc\x12K\x9c\x10\x0dN\xbd\xc4\xa7\x99(G\x9fX\xa2\xf7\x16\xe0G\x0e\x84\x0f\x80Ac\xfd\x95\xa0\xa9h\xa0\xd4\xd6\xf0y\xb5ho\x8d\xfdo\xc4\xb7HU6\xbc>\xba1\x90\xbdv\xd8\xab\xbeR -p={Nd\x16\xaf\xdf\x188~@\xda\xdb6\xcf\xe0\x18\\u\x9c4\x10\x17\xa7OO\xd7\xe0\xa8\xec\xa4\xc1o\x10h\xc0<Dcp\xd7z\xd2@\xd8\xe3@\xdc\xe7@*WDf)\xf8l\x94.x\x0d\xb8>\x10G\x0d\x8c\x91\x03\x90*D\xd5\x0f\x12\xe7\xd9\x00my\x19\xa0L\x02\xf0&\x028\x93A0\x1f\xd1\xc7\xed\xb5\xa4\xccc\xbfD\xb9\x1cR|\xb4\x01\xe6\xd7\x9d\xac\xb4z\x8d\xc7@]O4\xb9q\xcf\x05\x82\x80yL\x85\xf8\xac\x9d\x08\x87\xfe\xec\xa1\x17{\x0c.Wj\x1f\x10O\xf7\x18~a^2<\xe6Nd\x987\xdd\xf9\xc2\xd0\xc1>\x06\xa7\xcb}\x0c_\x0c#\xfd\xcb\xd3\x89m\xe8\xd6w>L\xf1\xf4;\x11\x10\x9d\xffc\xa02\x88\x1b \xe0\x17\x89:p\xc0\xfa\\/\x96`\x0c\xca\xecYE\xb3'\x9a=\x10\xcd\x1e\x14\x88\x8b\x93\xa6\x97F\xb3\x07\xe8,\x05\xfa\xf9\x14\xcd\x9e\x1eP&\x01x\x13\x01\x9c\xc9\x88f\x0f\xf5\xeb\xd1\xec\xa9\x81sLE\xb3gf^F\xb3\x07\x87 \x8c\xf4/O'\xb6h\xf6\xe00\x93\xd9C\xa9\xcbX?\xe9_P\xfe\xb3\xb9\x15\xe4\xa7\xff\x96\xf7\x8cd|\xc5u6R\xa6\xfe\x85q\xdf\xc9\xf9\xf7\x95\xc8k\x98\x84\xa2\xaa\xed\x8f\xeas\xdem\x15\xa7V\x0c2\xc7\xaa|\xdeR\x97\xcf[&\xaaB\xdf)\x9d\x87\x8e\xe6u} \xa8\x9d\xbeo\x81\xbb\xcd]\x1f\x08\xdf\x03\xe27\xc1\xd1\x10\xaf\x0f\xc4\x8f\x02\xe3\xc3\xe0k\x9d\xd7\x07J\x9c\xa8\xe5M:\xed\xc0\xa4\x1f\xfc-\xf7\xfa@\xd8\xa8C0\x1b\xd7\xd9\x8e\xaf\x0f\xce\xe6|}\xb8\x0f\x82(be\x08\xf4\x18X\x12:4N\xd6\x17\x19\x8b\x03'^\x96\x84p\x18SKk\xff\xd7\x07Jl-\x0e\xee\xd6\x80}`-\x16\xff5\x8c\x01\x16Z\xcay\xd9\x05{\x83\xc1\xc1saD\xf8MM\x03\x84V\x84}8\xb1\xdc\xa2^(\x00\x9f9@W\xc7[`\xde\xf6\x18`r \x028\x05\xc0\xb8\x052@\xb5\xde\x87\xc0[\xdd\x068\x93 a\x13\n!\x93\xca\xbe5\x1a\xbc\xe6\xbb=2@k\xbc\xd8\x07&\x0f\x98c\xa7Ev\xe3\xe0i\xd8\xd8\x87S\x0e\xc3\x19\x9d\x8d\xc3)\xc9\x01o#\x83>PC\xd3I\xc8\x86\xe1\xeb8\xf8\x83\xdaq8%\xdb(}(\xfbpJj\xdc\x1d+\xfbpJ:\x88\xbd-\xfbpJ\x82\x08]0\xfbpJb\xfc\xe9\x018\xb8\x93\x06p8\xdd8\x98\xf1\xf6X\x90=\x0e\xb6\xae\x9b}`\xe8&\x1c\x9d\xe4\x0b\xd1\xac\xbd\x8eO\x03\\U\x88\xe6\xd00\x10Uj+D\x95Z\x01oY\x1b\xe0L&\x84M(\x84L\xea}\xa9\xd4\xbe\x0e\xa7}\xd0\xa3\xb7\xf7;\xed\x83\xb3\xfbi\x1f\xd8\x8b\x91\xbf\x14\x8d\x04\xf1\xf6I\xedC\xd0\x84\xfb\x03\x9e\xfa\xc0)\xf4\x8c\x03\xa3\xfc3\x0e\x8c\xa2\xd08\xd0JE\xe3\xc0. \x8d\x03\xcfn\xd0@\xacA\xcd\xc0\xe8\xadV\x8d\x03+X\xa1\x0fAk4H$\x11\xa28\xfa0\x894\xfa\xb5\x9b\x06\x92\xa3\xb9\x0f\x93\xe8#\xb3.\xe4n\x1c\xc8%\xbb\x89\xe8\x9c\xedh\xfb\xc0\xa5\x97U\x04\xdc\x8b\x0d-\x12>(\x0d\x8eC\xbb\x87Fml\xfb@<o\xa8\xa7\x0cV\xc6\x18\x07\xfa J<=\x89#\xd1@\x1d\x8f\x06\x96\x1cbo$\xe6&\xf24\xd8\xed\x03\x8b)\xc0f\x0cP\xda\x87\x0e\x81\xcd \xe03 |\xa5\x9fq\xb8\x1f\xd2\xb8\xa73\xb5\x100\x11\x9d\xaf\x165\x0e\x94H\x93>\xb0\x99\xc95\\\x0e\xbe\x1a\xd78\x9c\x90\xae\x83\xb5\xb9p\x1f\x18\xdb\x92\xb3!\x19r\x8a\xc9\x04\xd6\x1agH(\x06#\x80\xc9\x0c\xe0\xcb&&S\x80\xcb\x18\x08\x91J\xa7'\x8a'\x8f\xa8\xd2H\xca\x19\x12B\xae,\xe2J\"&\x03\xe9\xbb\x1dBe\xd0\xc9(\xa2\x07\x056o\xd0I\xf1\x93ai\xeb\xdc\x07\xc2\x17\xfd_r7\x80\xee\x83_\xd3\xf4h\x98$!E\x13M$ M\xe0\x90\x06\xe2>'\xc9c\xd2 \x81<P\xe0H_\xf2\x80\x81>h\xe0\xc9\xda\xd3\x90@\x95\xac\x1c\x99\xeajHo\x80$M\xe9b\x82\xcc\x1c\xff\xc6\xd5\xc0\x94\x9a3~\x9f.! \x1f%|\xcewQ\xc4\xf8\xca\xd4P\xe6\xc0\x8e\xdf(\xaeN\x10;\xb5\xff7\xf4\xe3VZ\x86\xa0\x92\x07\x972\xb3\x94\xc0\x8c\x9d4c\xed\xcb\xd1\x03\xb1\x93\xa6\xff\xd9\xd8Is\xf4Q\xf74xVf\xec\xa4y\xff\x9d4mm/\x9e\xe9 \xf9\xb2\xd3VJ\xb1I\xffp\xa6\x8dTIH\x1dVs\x18T\xec\xac\xd1\\\xa5b\xb71\x954\xc5F\x9e\x88\xab~\xb1No}\xf2\xefE\xa5\xbe\xf9\xecNW\x7fdw\xc5\x18\x1fM\x9c\x13vr\xa5\xd5\xd8\xc1h\xf0c\xffh\x19\xe4\xcf\xd4\xcf<|!\x0e\x85\x90\xc2j\xf3\x14\x0e;\x91\x94B\xe9\xfa\x1f\xcb\xcd'\x1dE\xff\x11\xd2\xac\xacD\xb2y\x184\xad\xf3\xcc\x855\x81\x89\x9a\xae4A\xfdp$\x1e\x91U\x04k\x0e\x8f5\x85h*j\xbfbNO\xfdA\xd2z\x10|\xb4D\x1fNZ\xcf(e\x07g\xa0;\x89\x87\x9a\xb2cO\xd0qL\x85\xed\xc6\x89\xb4\xa9\xb1\x89\xc3\xd3hH\xe8lg\xb2'!f\xc2\xce8\x95\xeeL0'\xc0G9x\xa9\x07\xbb\x8co~\xf6\x9a\x17@01\xc0\x1b\xe5\xe6e\x17\xf8YF09\xc0v6\x18\xf0\xa7w\x90V\xa2\xcb \"$j8\xd22B?\xef\xcd\x14\x08E<\x1c\x977\x07\x02\x15\x9f\xb4l\x86P\x1a}y \xa1x\xed\x19\x06\xa1\x18 \xb9\x02\xa1\xa8=Q\xff\xa1hi\xf1\xfb\xfeh\xfd\xb0\xef\xcf\x14w?n;\x16\xa0\xa2\x8d\x8a\xddC\x83\x07w\x81X\x9d\x1f\xe1V\"E\xed\x99\xa1\x08>\xcc\\\x08\x1f<\xc5\xf0a\x96\x82\xf8\xd0.\xd6\xe9E\xf1\xc1S\xdb\x9e\xb5t\xec\xe5%&\xac\x9f\xe0\x8a\x14\x8c\xc2\xf9\xe0\xff\x1a\x10\xbe\x08\xde\"\xfa@\xfb\x10\x10?\x06\x06\x9d\xf3 \xefN\xec\x02-\xe0:\xac\xca$\xfe&\xa5\xd2\xa4\xf5MbpuP\xc5I\x98Vu\x12Hb\xac\x0f\xb3V\x9f\x04N\x05J\x98\\\x85\xd2\x86\x81^\x89\x12\xc8\xc9Z\x8c\x05M\xd1\xea5\x90\x12\xb4h\xa6\x84\x06\x9b\xefg\x0c\xd4\xa4,\xa2\xec\x00\x86\xfc\x00\xafU\xd3\x02\x83\xed\xe0;\xe1\x87@2\x15\xfb\xc0\xe0\x0609\"\x81\x95p\xc5Y\x17\x06\xe8K\xd3\x00u\xa2\x80?Y\xc0\x9d0\xa2\xa1\x8a\xbeBI\xaa\xf2\xba\xbe\x9b\x07\xe9\x03\xf5\xdd\xb1\xf4\x81\xe4\xc2\xe9B\x00%^V3*`\x02s\x1d\xd2\xe5\x139\x1f\xe4\x14\x1c\xe0\x1f\xa3\xc4\xea\x98^<\xceF\xf7\xe0\xad\x90 \xac*\x99@\xad\x94 _\x16\x9f\xe7\xaa\x9c !\xd53\x81TA\x13\xf8U4\xe1Ke\xb2sY{\x91\x8d\x8a\xc2z+k\xc2\x1c\xd55aJ\x85M`2m\xb6J\x9b\xc0\xa8\xb6 \xfe\x8a\x9b\xe0m6\x00t\xa5\x86\xaa\xccD\xf30\x9a\x87v\x88\xe6!]\x07\x8f\xe6\xa1\x0f\x18l\x07\xde\x99\x19\xcdC\xd2;\xd4\x89\x02\xfed\x01w\xc2\xa2y8\x82\x00J\xbc\xac\x8e\xe6!\xff\x18\x8d\xe6a\x07N\xcd\xe7h\x1e\xde+\x93\xa3y\xe8c\xda\x97l\x1e\xd2\xb3\x8b\x80\xbe\x00iz\x04\xb1A\x03\xcc\xfd]\xd29\xce\xfc\xa2\xef\xfc\xa6.\x97\x19\x9b7\x00\xbb\x81\x03\x044q\x00\x9a\xdaKQu\xc9\x0d\x1d\x80\xf6M ~\x178\xcd\x1d\x80\xfem`|\x1f\xc8\x8d\x1e\x80G\x000\x89\x00^\xd3\x07\x00z$5\x0e\xcc\xb1@\xc0x\x80\xdb\x04\x02\xe8\x02`\x08F \x90{/h`4\x84\x80{&\x8e*\xba\x86@\x8b\x12'\xa3\xc3\xa3\xc9\xa9\xd7N\x06<1\xe68P#\xcf\xc9\x08\xb1\x08u\x7f<:\x0e\xd4(u\x1c8\xcd% d\xe1\xd1\xae\xcf\x0c\xb0\xd1S\xcf\xfc.P\x1bN\xc04\x82|*A\x1f\xd8\xcd'\xe0\xfed'\xe7\x92\x07\xc2\x98\x06<\x93\xa5\x85\x80[:\x03\x01\xdc\x83@\x0e\x020o\xef\x0cpnO\x86\xc0\xdf\x19\x06\xb8\x13\x0e\xe1\x93\x0e\xa1\x13\x1ft\xdbg\x80q\xebg\xc0\x9f\xe1\x80C\x00_\x02\xf8A\xcf\x91\xc0\x81\xd5\xd0\x02\xeeiX\xde\xbc\x06\x1c\xee\x834z\xa1\x94\x16\xa8\x89\x1ed\x84\xb6|\xba1\xd0\xd2Dp\xb8\x0fv\xfa\x12Mp\xb8\x0f\xca8\xcd0\xe0\x9eh\"$\xbb\xe0p\x1f\xc4\xb1\x9bd\xc0=\x11FK\xb8\xc1\xc1\x9f\x86\x83\xc3\xe9\xc7\x15b\x9d\x11\xf3}H\xb8(\xbd8\x80\xdc\x8f\x03\xf8j\x19W\x1d\xfb\x02\x0d\x12\x92\x9f\xdf@\x88FH\xf7\xab\x19\x88\x96\x08c\x0fj\x88\x96\x88\x15\xf8[\xc2\x00w\xc2!|\xd2!t\xe2\xef\xdb\x12\xe1\xf5\xfd\x80\x86#\x94\xca\xe5\x06\x88\x15\xcc\x0d\x04-\xe0\xb0\xe5k$\x13\xb3\x17\x08LY\x18\xb4\x18\xc4>p\xcaV\xd9\x81Q\xd0\xca\x0e\x8cRWv\xa0\x15\xc1\xb2\x03\xbb<\x96\x1d\xf8\xa6\x97\x06b\xa5-&Vo].;\xb0\xe3y\xfa\x10\xbc\x9e\x83\xc5\x1c\xc1q:\x86\xc9d\xf2nR5\x90c*\xfa0\x99V\x16KC\x94w\x0d\xd4Bf\x0c\x94\x8c\x1e#\x10H;\xb9L\x1a \x9b\xb5\x94\x1a\xa9\xdf\x08pz\x8e\x00\xef\x8c\xe3\x9cl\xfej\xd0]\xe0\x9d\xe4\x8cS\x9c1:\x0d\x9c1j`\xcb\xb8\xa0\xcd\x18\xb0\x11I\xd5\xa6\xbb\xc0f\x16\x041\x0c8\x15\xa9\xbb\x10\xc48\x08c\x1e\xf0\xaaVw\xe1~\xc9\x0c\xd1\x1a\xa8U\xae\x19(\xc3z\x99\x00\xab\xfau\x17\x82\x98\x1cb\xb0\x1dx\x15\xb2\xbbp\x0f4\x1e\x88}N\x80\xbf\xbd\xb9\x1b\x9b)\x07\x03\x98\xc3\xde\x1fL \xc8d\x10\x040 \xc2d_\x00\xb3 \x84a\x10*\xf5\xee\x8f@\xbe\xbc\x9b]\xda\x85\xca\xba\x10I\x17\xc0X\x9e\x04\x81)2\xee\xe4\xd4\xf1\xe2x\x9b\xb7xd\xd1H\"\xf5T\x01\xfa\xd7i_\xe5\xf4W\x01\xb2&M\xd0\xa0\xc9\xc2\x90.\x02\xc9'\x04\x91\x83\x1a\x182\x84|\x1e\x90\x07\x0f,\x06\x00W\xfa\xb3\x18\x01<f\x00_\xd6\x9f\x96\x1c\x8ed\xa7\xcatb\xef+\x9e4\xe7\x89#\x16\xd3hBAC\x80\xd4>\x01-< M$\x80\xf8i\xca\xc5\x1d\xf3\x8b\xbeK9\xea\xfd\xd0\x9c=^ \xbc\xcf\x0b\xd8z\xbd\x80K\xca\xd9%\xda\xec\xf5\x9d-Nb\x8d\x8fPT~\xe4\xf8\x8d\x85\x9dQ\x88\x85\x9d{\xe0r6\xbaT\xa8S\xd5\xd8$\xb9\xff\x08\xccs\xbb\xf4\xb8\xce;\xa6\x9b\x8e\xe9\x90\xa3\xbb\xde\x82\x9cls\xf7\xa1\x01\x8eg\x8b0U\x84U~?-\xcb\x08^%\xc6\x97,\xc3\x99\xb1_\xcd\x08\xdd\xe8\x18&;d,\xce\x96\x01:\xd4\xf5\xd2\xf4\x03iyfZ\x88\xbcO\xb3\xb5\n\xc8+\xf7y\xf9u\xb9\xf9\x04\xbf]\xfc\xfe\x9fb\xbb\x90\x11x\x97\x95YT\xb1]H\xfb\x14-i+\xb6\x0b\xe9\xfe\x95\x82.\xb6\x0b\x19\x82Oi\x89Z%\xb6Tb\xbb\x90\xe1\x8f\x8cqy\xb3Hb\xbb\x10\x07FB\x06E(\xea\xff\xc9\xedB\xfcg\xf9\xf0\x03\xaa\xff\xe0\xb5\x80\xbcH\xb7i\x96\xd4\x07m\xf3\x98\xb9\xc9>CP\xe9\xc1Jm2\x91\xba\xed\xb3~\xd3A\xe4\x85\x8b\x0c.\x85i>x\x06\xd5\xb5\xfcv]\x96\xf0\xa3dY\xf9\xf1\x0cV\xc7\xca(\x08\xef_\xfcx\x06\x9f1\x11Vw;\x84\xb4\x82*\x1f~\x1b\xfb\xb4\xd4MV\xa2\xaaD\x01\x1f\xfe\xecP\xb0\xfd\x99\x15\xed\x08bS\x15\x88MUbS\x15\x9f\xee\x14\x9b\xaa\xf4\x9f\xf1io\x1ah\x11\xeb\xb1j.m\xbc~1\xd6\x87X5\xd7\xef\xfc\x07\xde\x82\xa6\xd8>\x1aH\xd9t4\x83K\x83\xcb\x89\xd2\x07j\xd6\x1cQv\x00C~\x80\xd7\xf6k\x81\xc1v\xf0\x9d\xf0C \x19\xd4}`p\x03\x98\x1c\x91\xc0\xcav\xe3\xac\x0b\x03\xf4\xa5i\x80:Q\xc0\x9f,\xe0N\x18\xd1\x9cG_\xa1d\xady/\xe7\x9b\x07\xe9\x03\xf5\xddD\xf5\x81\xec\x8b0\x10@\x89\x97\xd5\xb1j.\xff\x18\x8dUs;pj>\xc7\xaa\xb9\xf7\xca\xe4X5\xd7\xc7\xb4/\xb9jnl\xaa\xc2}3\x9a\x87-D\xf30\x9a\x87. \xca\x0e`\xc8\x0f`X\x1d\x0c\xb6\x03\xef\xcc\x8c\xe6!\xe9\x1d\xeaD\x01\x7f\xb2\x80;a\xd1<\x1cA\x00%^VG\xf3\x90\x7f\x8cF\xf3\xb0\x03\xa7\xe6s4\x0f\xef\x95\xc9\xd1<\xf41\xedK6\x0f\x7f\xc1T\x9f\xd8Te\x0c\xb1\xa9Jl\xaa\xe2{\x8eE\x000\x89\x80\xd8TE\x03Q\x00\x0c\xc1\x08\x04V\xdf\x92\xd8T\xc5\x0f\xb1\xa9\n\x0e\xd4X~\x1cbS\x157L \xc8\xa7\x12\xf4!6U\xe1\x98,-\x04\xdc\xd2\x19\x08\xe0\x1e\x04r\x10\x80y{g\x80s{2\x04\xfe\xce0\xc0\x9dp\x08\x9ft\x08\x9d\xf8\xa0\xdb>\x03\x8c[?\x03\xfe<\x10\x1c\x02\xf8\x12\xc0\x0fz& \x0e\xb1\xa9\n\x8f4^e\x13\x0d\xd4t\x182Bz\xfdQZ2\x0d\x0e\xf7\xc1N_:\x0e\x0e\xf7AYl\xaa\xc2$.6U\xe9\xc0\xe9\xc7\x15b\x9d\xf9S\x7f\xe8\x92%6U\x19\x02_\xed\"\xf9\xf9\x0d\x84h\x84t\xbf\x9a\x81h\x890\xf6\xa0\x86h\x89X\x81\xbf%\x0cp'\x1c\xc2'\x1dB'\xfe\xbe-\x91\xd8T\xc5[U \x87\xe0\x85A\x8bA\xec\x03\xb7.\x13\x0e\xccjM80k8\xe1@\xaf\xec\x84CP\xbd'\x1c\xf8\xa6\x97\x06b\xd9(&VR\x91)\x1c\xd8\xf1<}\x08^\xcf\xc1b\x8e\xe08\x1d\xc3d2y7\xa9\x1a\xc81\x15}\x98L+\x8b\xa5!\xca\xbb\x06j\xb5-\x06\xca\xd8T\xc5\xf5(\xeb\x8c\xe3\x9cl\xb4\x12\xd0\x06x'9\xe3\x14g\x8cN\x03g\x8c\x1a\xd82.h3\x06lDr i\x03lfA\x10\xc3\x80[Z\xda@\x10\xe3 \x8cy\xc0/9m\xe0~\xc9\x0c\xd1\x1a\xa8%\xa9\x19(C\x1b\x0dpKT\x1b\x08br\x88\xc1v\xe0\x97\xae6p\x0f4\x1ebS\x15\x070% \x93A\x10\xc0$\x08\x93}\x01\xcc\x82\x10\x86A\xa8\xd4\xbb?\x02\xf9\xf2nvi\x17*\xebB$]\x00cy\x12\x04\xa6\xc8\xb8\x93S\xc7\x8b\xe3m\xde\xe2\x91E#)6U\xc1\x81.\x02\xc9'\x04\x91\x83\x1a\x182\x84|\x1e\x90\x07\x0f,\x06\x00W\xfa\xb3\x18\x01<f\x00_\xd6\x9f\x96\x1c\x8ed\xa7\xca\xf4\xd8T\xa5\x07'\xa0\x85'\xa1\x89\x04\x10?M\xb9\xb8c~\xd1w)G\xbd\x1f\x8aMUZp\xcdfl\xaaBp\xafz\x8f#\xff\x11\x14\xcb_\xf7 6U\xa1x\xa9\x98n:\xa6C\x8e\xeez\x0br\xb2\xc5\xa6*\xe4c\xcd\xebUb|\xc92\x9c\xffuMU\x064\xfcw\x97\x86g:\x87\xa7\x84J4\xb5\xa6%\x0b\xf5\x0fgZ\xdd\x94D\xd5!k\x87A\xb1\xee\x0e\xaa\xabT\xec6\xa6\\\xb6\xd8\xc8\x13\x7f\xd5\xaf\xd3=\"\xa5a\xc7\xf7\xa2R\x1f|v\xa7+7\xbf\x13\xe5!\xcfJaJ\x86\x17\xe6\xdf\x8a6\x93j\xaf\xdf\xfd\xf7\xa3(\xee\x1e\x0f1\xc0\xbb\xb7\xcfa/\xaa\xeb|#?\xac\xdb\xc6,VI)\x16\xedP\x177OV\xa2J\x9e,\xbe\x17\xd5+\xb9\xdb4\x0e\xf3u\xbd\xc6F\xf2r,!\xc7'9*dq\xd1:>\x86\xack\xd8\xb2r\x9d's\x80\xead9\x81\xc9\x9a\xce\xe8\xc4\x9d\xb3\xbc\xbd\xf3DEO\xd2A\xe6\xa1i(\xf4B\x1c\n!e\xec\xe6)\x1cv\")\x85\xba.\xfb\xd8\xf4 \xfa\x08iVV\"\xd9\xc4&C#\xf0\x8aY3\x7f\xb1\xc9P\xfb\x14-\x8916\x19\xea\xfe\x95\x82.6\x19\x1a\x82O\x89\x8fV\x16\xb6Tb\x93\xa1\xe1\x8f\x8cqy\xb3\xaaP\xf1I\xcb\x8b\n\xa5\xd1\x97\xd5\x14\x8a76\x19\x02\xa0e\xf3\xf8\xf3v\xc2\xbe\xcf\xec\xa4\xa3w\\l\x9f\x13\xdb\xe7\xc4\xf69v\xad \xb6\xcf\xe9?\xe3\xd3K4\xd0r\x13b}d\xdax\xfdb\xac\x0f\xb1>\xb2?\xcc\x03x\x0b\x9a\xa2\xd5k \xe5M\xd2L \x0d.wY\x1f\xa8\xf9\x91D\xd9\x01\x0c\xf9\x01^\xab\xa6\x05\x06\xdb\xc1w\xc2\x0f\x81d*\xf6\x81\xc1\x0d`rD\x02+\xaf\x91\xb3.\x0c\xd0\x97\xa6\x01\xeaD\x01\x7f\xb2\x80;aDC\x15}\x85\x92\x9f\xe8u\xc34\x0f\xd2\x07\xea\xbbc\xe9\x03\xd9\xebd \x80\x12/\xabc}d\xfe1\x1a\xeb#w\xe0\xd4|\x8e\xf5\x91\xef\x95\xc9\xb1>\xb2\x8fi_r}\xe4\xd8>\x87\xfbf4\x0f[\x88\xe6a4\x0f]@\x94\x1d\xc0\x90\x1f\xc0\xb0:\x18l\x07\xde\x99\x19\xcdC\xd2;\xd4\x89\x02\xfed\x01w\xc2\xa2y8\x82\x00J\xbc\xac\x8e\xe6!\xff\x18\x8d\xe6a\x07N\xcd\xe7h\x1e\xde+\x93\xa3y\xe8c\xda\x97l\x1e\xfe\x82I]\xb1}\xce\x18b\xfb\x9c\xd8>\xc7\xf7\x1c\x8b\x00`\x12\x01\xb1}\x8e\x06\xa2\x00\x18\x82\x11\x08\xac\x0e5\xb1}\x8e\x1fb\xfb\x1c\x1c\xa8Q\xea8\xc4\xf69n\x98@\x90O%\xe8Cl\x9f\xc31YZ\x08\xb8\xa53\x10\xc0=\x08\xe4 \x00\xf3\xf6\xce\x00\xe7\xf6d\x08\xfc\x9da\x80;\xe1\x10>\xe9\x10:\xf1A\xb7}\x06\x18\xb7~\x06\xfc\x19\x0e8\x04\xf0%\x80\x1f\xf4\x1c \x1cb\xfb\x1c\x1ei\xbc\x1a6\x1a\xa8\x89\x1ed\x84\xb6|\xba1\xd0\xd2Dp\xb8\x0fv\xfa\x12Mp\xb8\x0f\xcab\xfb\x1c&q\xb1}N\x07N?\xae\x10\xeb\x8c\x98\xefC\xc2\x15\xdb\xe7\x0c\x81\xafv\x91\xfc\xfc\x06B4B\xba_\xcd@\xb4D\x18{PC\xb4D\xac\xc0\xdf\x12\x06\xb8\x13\x0e\xe1\x93\x0e\xa1\x13\x7f\xdf\x96Hl\x9f\xe3\xad\x9f\x85C\xf0\xc2\xa0\xc5 \xf6\x81[\x81\x0b\x07f].\x1c\x98\xd5\xbap\xa0\xd7\xf0\xc2!\xa8\xb2\x17\x0e|\xd3K\x03\xb1@\x18\x13+\xa9\x9c\x18\x0e\xecx\x9e>\x04\xaf\xe7`1Gp\x9c\x8ea2\x99\xbc\x9bT\x0d\xe4\x98\x8a>L\xa6\x95\xc5\xd2\x10\xe5]\x03\xb5\xae\x1a\x03el\x9f\xe3z\x94u\xc6qN6Z\xb1o\x03\xbc\x93\x9cq\x8a3F\xa7\x813F\x0dl\x19\x17\xb4\x19\x036\"\xb9X\xb8\x016\xb3 \x88a\xc0-\"n \x88q\x10\xc6<\xe0\x17\x177p\xbfd\x86h\x0d\xd4\xe2\xe3\x0c\x94\xa1-%\xb8\xc5\xc8\x0d\x0419\xc4`;\xf0\x8b\x94\x1b\xb8\x07\x1a\x0f\xb1}\x8e\x03\x98\x12\x90\xc9 \x08`\x12\x84\xc9\xbe\x00fA\x08\xc3 T\xea\xdd\x1f\x81|y7\xbb\xb4\x0b\x95u!\x92.\x80\xb1< \x02Sd\xdc\xc9\xa9\xe3\xc5\xf16o\xf1\xc8\xa2\x91\x14\xdb\xe7\xe0@\x17\x81\xe4\x13\x82\xc8A\x0d\x0c\x19B>\x0f\xc8\x83\x07\x16\x03\x80+\xfdY\x8c\x00\x1e3\x80/\xebOK\x0eG\xb2Sezl\x9f\xd3\x83\x13\xd0\xc2\x93\xd0D\x02\x88\x9f\xa6\\\xdc1\xbf\xe8\xbb\x94\xa3\xde\x0f\xc5\xf69-\xb8f3\xb6\xcf!\xb8W\xbd\xc7\x91\xff\x08\x8a\x85\x9d{\x10\xdb\xe7P\xbcTL7\x1d\xd3!Gw\xbd\x059\xd9b\xfb\x1c\xf2\xb1\xe6\xf5*1\xbed\x19\xce\xff\xba\xf69M?\x90\x96g\xa6\x85\xc8\xfb4[\xab\x80\xbcr\x9f\x97_\x97\x9bO\xf0\xdb\xc5\xef\xff)\xb6\x0b\x19\x81wY\x99E\x15\xdb\x85\xb4O\xd1\x92\xb6b\xbb\x90\xee_)\xe8b\xbb\x90!\xf8\x94\x96\xa8UbK%\xb6\x0b\x19\xfe\xc8\x18\x977\x8b$\xb6\x0bq`$dP\x84\xa2\xfe\x9f\xdc.\xc4\x7f\x96\x0f?`\x1a\x0c\xe6E\xbaM\xb3\xa4>h\x9b\xc7\xccM\xf6\x19\x82J\x0fVj\x93\x89\xd4m\x9f\xf5{\x1d\"/\\dp)L\xeb\xc13\xa8\xae\xe5\xb7\xeb\xb2\x84\x1f%\xcb\xca\x8fg\xb0:VFAx\xff\xe2\xc73\xf8\x8c\x89\xb0\xba\xc9\"\xa4\x15T\xf9\xf0\xdb\xd8\xa7\xa5n\xb2\x12U%\n\xf8\xf0g\x87\x82\xed\xcf\xachG\x10\x9b\xaa@l\xaa\x12\x9b\xaa\xf8t\xa7\xd8T\xa5\xff\x8cO{\xd3@\x8bX\x8fUsi\xe3\xf5\x8b\xb1>\xc4\xaa\xb9~\xe7?\xf0\x164\xc5\xf6\xd1@\xca\xa6\xa3\x19\\\x1a\\N\x94>P\xb3\xe6\x88\xb2\x03\x18\xf2\x03\xbc\xb6_\x0b\x0c\xb6\x83\xef\x84\x1f\x02\xc9\xa0\xee\x03\x83\x1b\xc0\xe4\x88\x04V\xb6\x1bg]\x18\xa0/M\x03\xd4\x89\x02\xfed\x01w\xc2\x88\xe6<\xfa\n%k\xcd{9\xdf<H\x1f\xa8\xef&\xaa\x0fd_\x84\x81\x00J\xbc\xac\x8eUs\xf9\xc7h\xac\x9a\xdb\x81S\xf39V\xcd\xbdW&\xc7\xaa\xb9>\xa6}\xc9UscS\x15\xee\x9b\xd1<l!\x9a\x87\xd1<t\x01Qv\x00C~\x00\xc3\xea`\xb0\x1dxgf4\x0fI\xefP'\n\xf8\x93\x05\xdc \x8b\xe6\xe1\x08\x02(\xf1\xb2:\x9a\x87\xfcc4\x9a\x87\x1d85\x9f\xa3yx\xafL\x8e\xe6\xa1\x8fi_\xb2y\xf8\x0b\xa6\xfa\xc4\xa6*c\x88MUbS\x15\xdfs,\x02\x80I\x04\xc4\xa6*\x1a\x88\x02`\x08F \xb0\xfa\x96\xc4\xa6*~\x88MUp\xa0\xc6\xf2\xe3\x10\x9b\xaa\xb8a\x02A>\x95\xa0\x0f\xb1\xa9\n\xc7di!\xe0\x96\xce@\x00\xf7 \x90\x83\x00\xcc\xdb;\x03\x9c\xdb\x93!\xf0w\x86\x01\xee\x84C\xf8\xa4C\xe8\xc4\x07\xdd\xf6\x19`\xdc\xfa\x19\xf0\xe7\x81\xe0\x10\xc0\x97\x00~\xd03Ip\x88MUx\xa4\xf1*\x9bh\xa0\xa6\xc3\x90\x11\xd2\xeb\x8f\xd2\x92ip\xb8\x0fv\xfa\xd2qp\xb8\x0f\xcabS\x15&q\xb1\xa9J\x07N?\xae\x10\xeb\xcc\x9f\xfaC\x97,\xb1\xa9\xca\x10\xf8j\x17\xc9\xcfo D#\xa4\xfb\xd5\x0cDK\x84\xb1\x075DK\xc4\n\xfc-a\x80;\xe1\x10>\xe9\x10:\xf1\xf7m\x89\xc4\xa6*\xde\xaaJ8\x04/\x0cZ\x0cb\x1f\xb8u\x99p`Vk\xc2\x81Y\xc3 \x07ze'\x1c\x82\xea=\xe1\xc07\xbd4\x10\xcbF1\xb1\x92\x8aL\xe1\xc0\x8e\xe7\xe9C\xf0z\x0e\x16s\x04\xc7\xe9\x18&\x93\xc9\xbbI\xd5@\x8e\xa9\xe8\xc3dZY,\x0dQ\xde5P\xabm1P\xc6\xa6*\xaeGYg\x1c\xe7d\xa3\x95\x806\xc0;\xc9\x19\xa78ct\x1a8c\xd4\xc0\x96qA\x9b1`#\x92KH\x1b`3\x0b\x82\x18\x06\xdc\xd2\xd2\x06\x82\x18\x07a\xcc\x03~\xc9i\x03\xf7Kf\x88\xd6@-I\xcd@\x19\xdah\x80[\xa2\xda@\x10\x93C\x0c\xb6\x03\xbft\xb5\x81{\xa0\xf1\x10\x9b\xaa8\x80)\x01\x99\x0c\x82\x00&A\x98\xec\x0b`\x16\x840\x0cB\xa5\xde\xfd\x11\xc8\x97w\xb3K\xbbPY\x17\"\xe9\x02\x18\xcb\x93 0E\xc6\x9d\x9c:^\x1co\xf3\x16\x8f,\x1aI\xb1\xa9\n\x0et\x11H>!\x88\x1c\xd4\xc0\x90!\xe4\xf3\x80<x`1\x00\xb8\xd2\x9f\xc5\x08\xe01\x03\xf8\xb2\xfe\xb4\xe4p$;U\xa6\xc7\xa6*=8\x01-< M$\x80\xf8i\xca\xc5\x1d\xf3\x8b\xbeK9\xea\xfdPl\xaa\xd2\x82k6cS\x15\x82{\xd5{\x1c\xf9\x8f\xa0X\xfe\xba\x07\xb1\xa9\n\xc5K\xc5t\xd31\x1drt\xd7[\x90\x93-6U!\x1fk^\xaf\x12\xe3K\x96\xe1\xfc\xafk\xaa2\xa0\xe1\xbf\xbb4<\xd39<%T\xa2\xa95-Y\xa8\x7f8\xd3\xea\xa6$\xaa\x0eY;\x0c\x8auwP]\xa5b\xb71\xe5\xb2\xc5F\x9e\xf8\xab~\x9d\xee\x11)\x0d;\xbe\x17\xd5+\xb9\xda+\xf5\xd9w\xa2<\xe4Y)L\xc1\xf0\xc2\xfc[Qf\x12\x8e\xff\xfd(\x8a\xbb\xc7\xfd7kt\xef\xde>\x87\xbd\xa8\xae\xf3\x8d\xfc\xa8n\x19\xb3X%\xa5X\xb4\xc3\\\xdc<Y\x89*y\xb2h04Z\xf5{Q\x19\x12\xf42\x1b\x89\xcc\xb1\x90\xd4bq\xa8t\xa0\xab\x11;\x9b0\x93\x19\x93\xee#\xa9n\x91\xe66)n\x11\x06\xd6]c\xb1C\x1dg\x88\xeb\xfc\x90\xaf-\x8f\x05z\xba{6.E\x9b=\x87\x0f\xef^=.D\x99\x1f\x8b\xb5\x80,\xd9\xd7{\xe8\x98\xa5?\x1f\xc5\xee\x0e\xe4\xc6\xaa\xd2\xab\xb4\xb6\xc2\xaa\xba\x92\x92-\xe6\xa0\x14E\x9a\xec\xd2\xbf\x89\x0d\x9e\x0ev(\xf2*_\xe7;X\x1d\xaf\xaeDa\xf2\xd6\x17\xba\xe4\xb7\x1e\x0b\xec\x8fe\xb3\xc1!\xa9`'\x92\xd2R\xc3 \xcf\x04<x\xfc\x00\xd6\xd7I\x91\xac+QHLB\xa9\xc5P\x8a\xed^d\x8d\xf4\xf9\xf0\xee\xd5\xc3\x12\x0eIu\xad>\x80\xa2k2\xde\xf1\xafI4W\xc7\xdd\xee\x0e~>&;\xc9\x95\x8d\xe6Y\xfd \xc5\x9dGIi-\x08\xf0Q~\xfe\xf16\xcf\xb7;\xb1P\xbcX\x1d\xaf\x16/\x8e\x85\xca\xa1\xfb\xf8\x95\xa6^\xa1,\xaf\xf3\xe3n\x03+U\xa6\n\xcf\x88X'Y\x9e\xa5\xebd\xa76\x08\xfe\xc5Gb\xb1]\x9cI\x16\xaal\xc0\x07\x8b\x07RF\xa8R\xee\xeb\xb58Tb\xf3\xd5\xe2W\xf8\xab\x17\x19\x1c$S\xd3\xb58\x83J$\xfb\x12\x8e\xe51\x91\xc3\xd7\x15\x00\x0e\xe9NRW\xe5j\xf0\xab4K\x8a;Hv;\x9cww\x07Q\x97sWuC\xd0\x87\xc4\xedA\xacM\xe7\x80ciJt\xa9\xc5 n\xd5T\x9egw\x0b\xf8!\xff,nDq\xa6D\xdb\x87w\xafp\xab^+\x02\x12\x8d\xb5\xccH\xb9\xbe\x16{\x01\x1f\xaf\xab\xea\xf0\xf1L\xff\xb7\xfcx\x06y\x01Y^\xffz\xa6V\xd9:\xc9 W\xbbIq`|\x92h8\x1e\xeazc\x96\xef\x89\xe2F\x14\x9a\x0d\xfb\xe4P\xb7X\x90#P\xf6^]\x98L\xdd{\xa4\xba0}\x82\x8f\xed*\xdf\xed\xf2\xcf\xe5S\xcb\xdc\xfd\x1a.\xae\xda\x11\xc8)7\x85E\x9aA\xaa\xf3\xb9,\x8f{\xb1\xb1T\x9e\xf85\x9cg\xf0\xc3\xe5\xe5[\xf8\xfe\xe5e]\xcd_\xd2\xaa7\xe8\x9d:\xbd\xf0\x95\xf9\x97\xe1\x12\xbf\xbc;\x88\xbf\xfe\xe5\xaf\xe8\xc3J\x96\x1f\xd5\\\xd7kH\xcb\xfb3]k\"\xdf\x1c\xd7\x02\x92\x0cDQ\xe4\x96\xb0\xed_\xc3y\x9b\x8aZ\xaa\xc6\x04\x89\xe4\x8f>T\xd7\xc9Z\xca\x84<\xfft<@\x9d\x84\x00\xf2p\xdb@\x9e\xd96\xba\x85\xd4\x0f\xef^)\xba\xae\x93\x1b\xb5\xac\xf6\x9d\xbd\xb0\xd1\x9b!1\xc3\x90\xff\x7f\x93\xa7\x1bH2\xdb\x85\xad&Jm\xfbB\\\xe5\x8583/K\x9cI\x95\xae\xd2]Z\xddA&\xc4\xa6\xd4\n\x02(\x11U\xdcX#e\xf2L\x8a\xc3l+\xd4\x0bj\xdf-\xe0\xd1\x87R\x98,y\xc9\x15\xb9\xec\xa4\x9c\xd1\xeb.\xc9\x92\xadm\xc4\xabB$\x9f\xa4\xec\xa8\x91.\xbe\xc2W\xcb\xeb\xbc\x12Ou\xdf\x90\xabc\xb6\xd6;E\xd2^\xcb\x9b\xf5\xb1(DV\xed\xee:\xb7x\x8eT\xe8\xfc\xea*]\xa7\xc9\xceq\x8e\xac\x8eWP\x08y:\x883\x95\xa0\x9cV\xe6cG9\xb9J\xefi\xf6\xd7Jl\xd3,\xb3)\xb9Rm\xb3\x08\xfd\xbb\x83X\xe8\xf5\x9c\x1c\xd2r\xb1\xce\xf76\x89\xf9^\xed\xb6\x12\xf2\xeaZo\xf2l(Y\xe0Q\xad\x8b\x89\xfd\xa1\xba\xab\xb7\xe7W(\xb2\xbd\xba\xf2YY\x04\x89\x1a\xa0\xd25\xd3\xfda'\xe4A\xa7\x16?\x94\x07\xb1N\xaf\xd25\x94b\x9fdU\xbaF\x02\x8a\xd4~\x0bP)8v\x80E\xe3\xf8I\x8a\x8e\x950\xa5@:\n\xc3H70I\xe6\xab\xfc\xc6\xa2l\xe8\xa1\xd6\xcby8L\x1f5\x1f\xcf\xb3\xbb\x8f\xad\x1d\x91d\x90\x14\xab\xb4*\xe4\xe6sPU\xcb\xe8\x11\xbad\x97g[=#\xc9x\xca\xa4\xd4TB_S\xb5\x1a\xabS\xddo\x1a\xad\x08Yfo\xcd\xc2\xdf\xa5+Ej-\xd7K(\x8f\x87C^\xa8\x93\xf3\x90\xac?=>f\xf2?\xf2\xbc\xd4\xf3\xad\xb4\x92!:\xa5\xd1\xa0\xcaC~\x05\xc7J\x0b\x1f\xb3\x9dK)\xf8\x92\xcd&\xd5{\x1b\xb6\"\x13\x85\xaa_\xa4M\x87\xa6.\xc09\"\xef\xf4\x14\x8d\xbf\xf3\xf26\x91\x0b\x18\x9e<\x85\xb7\x92^\xb9\x8fk\xd2\x93n\xa5\xce\xe7\xbf\xf9\x8d\xe5\x98\xfa.\xcf\xe1*\xcf\xe1[X,\x16\xff\x17}D2!\xc9\xee\xf0\x1f\x93\xecn!?\xfd]\x91\xef\x1f]\xe5\xf9W\xf8c\x8b\x05~\xf6\xa4W\xf0H\xa2\xf8\xa0\x88\xbe\xcc\x1f\xfd\x83\xc4\xf1\x15\xfc\x97E\x9e\xda\xf0\xfc\xdd\xce\x9bo<\xbc\xf9\xb7\xe4&\x99\xcc\x1c\xf8V\xe9V\x12\xfb\x04.\xa4\xe5\xa3\xef\xf2|\xb1\xde%e\xe9`\x82&I\xbe\xa0\xc7\xd3y \xff\xee\xdf\xd1\xbf>~,\x97\xa4\x9f\xa6\xf7\xc9^H\x15\xe4\\S\xb7\x15\xd5\x0b}\xedt\x91\x95U\x92\xad\xc5\xa3\xaf\xb8\xc4\xa28l\xb4[g\xf6w\x9e\x99}{W]\xe7\x99en5]\xdf\xe5\xf9\xa3\xc5b\x81\x1f\"\xcd\xbc>\xb2\xfe\xae\xd6\xbe\x9aq\xee\x84\xcb\x97/4G_\xbc|\xff\xfc\xdd\xc5\xdb\xcb7\xef\xbe\xb2\xdd3\xb5{\xc4\xfe1\xfd9+\xb7~\xef\xe1\xd6\xf7\xb9\xa5\x08\x89\xe4\xd4\xd3o\xe1\x1f\x0e\xab\xc5wy\xfe_\x8b\xc5\x02_O\x92\xc83\xa9h\xca\xa7\x93\xec\xee\xb0Z\xbc\x16\x9f\x1d\xf4\xa6W\xea\xe9\xff\xf3-d\xe9\xce\xba\x80\xacL\xb4,k\xfb\xf3\x83\x81X^\xaf\xa9\xd2cX|\xc8\xf6IQ^'\xbb\xcb\\o\xec\xa9$\x8f\xfe.\x8dV5\x1b\xe6\x1c\xe8V1<\x0cO,\xdd\x8b\xec\xce\xdc\xfc\x8e\xb0\x1dKD\xe7y\x88\xa8a\x8f\xa5-\xbeP?HU\xf6!$\x9dSU\x9e\xb8u\xd1\x9a\xf1\x17\xd4\xda\x19\x7f\xa49\xc6\xb2\xdd\x9d\xb1\x1bG\x06\x7f\xa3:CrU \xad\xcd\xed\x12\xe4B\xe1\xe1\xe3\x87\xe3O\xd4\x06\xad!Q[\xb0\xa2^\xdf\x0f\xae\xf2|\xb1J\n5\xb8\xdb\xc7w\x8b\xbf=\xd0\xdc\xd2\xb6\x16nV*R\x1e\xc8g\xb1\xe3\xf5\xdf\xde\xbfy\x8d\xfcY\xce\x98\xfc\xa9\xbd\xf1\xd0\xdac.wu\xad\x1ai\xab\xecX\ns\xa7\xb8=\xee\x12\xa4|\xdf\x18\x85||#Z\x85\xe6\x0c\xc4~%6\x9bV\xb5\xa9\xefI\x13\xe4\x9e\xa4\xa3`\xe8\x0b\xd2\x8f\xff*\x07\xfe\xb16\xe7{\x17\xbf\x86\x8d\x0b#\"\x9eZ\xcc\x85d\xfdI\xca\x88\xd6,\xbdJw\x02\x97\xd6F\x9e\xbc\x15E\x99g\xd6\x0dR\xdfU\xa9&vK5\x07\xdf\xc2\x13\x1cc\xf3\xb0\xf2\xd6\xd6\xcf~C>+$\xd8\xa8x\xa0x\xf3\xe0)<\xc0\xf6G\x7f\xb8\x0b=\xa2\x07X\xbbH\x85K\x8d\xe5u\xb2\x97\xf8\xfe\x9f&\xf9_\xac\x0f\xcb\xb1\x0c\x9e\xa5\x0e\xe8\xe2\xaa6\x81\xfakB\xcffZ\xc2g\xb1\xdb}\xfd)\xcb?gj\x07_\xab\x0e\x96\xebcY\xe5\xfbz=\x0f1\xf6\x97\xe0\x99V\xb5\x07\xeb\xd2\xb4@l>+\x17Z\xb6En0\xd4\xb2\x1b\x7f\xe4\xa3\xda\x10f\x1d^\xe7\xbbM]\x1e\xac\xa5L\xdd\xd5\xd5\xeb\x17\xea{\xb1z\xf9\x8e\xf1\xa9\xcf4+\x17\x1eII`X1\xba@1w\x84\x7f\xfd\xcb_\xbf\xb2,\xf2\xa9k\xa4\xff!\xfb2Ql\x90\xe8\x9e,\xbey\xf2M\xf9\xc02\xed\xdd\x7f\xb9BH\x1c6\xa7\xdd'\xed\x8d\x8f \xc0\xda3\x18\xff\xd8V\x84\xed\x88\x1a\xe3Ii\x9c\x0f_\x97\xa2\xf1^\x1d\x92m\x9a)\xde\xb5\xc4\xf4p\xb6\x0f4\x91MI\xd6\xfd\xabAo\xdc7\xed \\a\xee\x03\xdcq\xa0\n\xa7\x8c<\x10V~Xmz\xbb\x0b\x0c:_1\xec\x91\xff[_O%e\xa9\xef\xdd\xde&[\xf1N\xfc|\x14e\xb5\xd0\xbf\x0f\x90\xfc|\x14\x85.\xc0+\xd1IN\x08\xd8\xe7e\x05B]\xfe\xa8\xdb\xa2\x05\\T\x9d\xbd{\xa8\xee\xc65z\xab\xa6\x1di\x96\xc3>/\x84\xb9\xe5\xeb\xaa0H\x94\x84\x97)H\xd5A[$\x9bB\xaf\xb8\xa1\xfe';\xeeW\xfa\x0e\xc3\\8vn\xbd\x86\xf4w\x19\xb5\xce\x8fY\xb5TH\x86\xdb\xfcsRB)\xaa3H\xab\xd2\xdc\x99\x96p\xcc\xf4b\xda\xe8k\xa7\xcfi\x1d\x15\xe7\xf1\x1bb\xbe;\xa7\xfb\xb0F\xd08\x11\xbb\x08\x9e\xdd\xe9\xfe\xb1l?\xe2\xeb|#.\xb2\xab\x9c\xed=\xac\x95\xc7e\x96o\xc42\xcd\xae\xf2\xa1\x17\x90\xb4W\xcc\xe5\xce\x12\xad\x1f\x8a\"\xb2#S\xbf|\x83x\xf4\x9d\xb7j\x8e\xa5f-\x01\x1a\x8e\x10-\xda\x19\x86\xae?\x03\x1b\xd2\xce\xda\xa5e%2\x15`Az>\x13\xd5\xe7\xbc\xf8Dz\xd61\x85\xa3g\xd7\xd7I\x96\x89]Iz\xd8*#\xf7y\x96~\x1a\x1eh\x16$joN^^\xd5\xad\xad\x83\x81c\x0e\x8b\xc3\x9a\xd5\xb1\xbcS\xd5s\xbc/\x18\x9bK*\xba$\xde$\x87\xc3\x92\xfc0g\x9a\xb7\xa9+8r\xf4\xf8\xea\x98\xee6\xcb*\xd9\xd2\xd6\xc56w\x89\x0d\x0b\xf6\x8d8\xa0\xd8\xc7!ih8\x9au\xcd\xb8\xc3\x08\x0eI\x85\x06\xee9w~s\xd6\xed\xf3\xcdq'\x14\x92\xd1C\x8e\xc2\xcb,\xe45\x9e\xd1s%\x1e\xf3F\xc3\xbd\xbe\x16\xebO\xe5qX\x9d\xbe\xfe\xf5'\xfd\xe5\xa1~\xf7GM\xc9E\xbf\xd0\x96>\xca\x96\xe5\xe6\x13k\xd2\x9b\x8f=|\x9ffkU\xc9K\xe2\xf9\xba\xdc|\x82\xdf.~\xff\xbb\x87\xcd\xb3}\xed\xb3\xa5\x01\xd5?\x91\x93\xb3u\x1a\x8c\xb0u\x0f\xff\xd1k\xb4\x88!\xf3\x9a<\xe0kd\x9cc\xfe\xfd]\xb6N\xb3-\xfb\x94/\xf5{C\xf1\xb3\xca\xf3\x9dH2\xf7H\x07\xdf$\x0e\xb4~+p\x9c\x98N\xc4\x1et\x0c\x8c2o\xc4\xc0\xa8\x18\x18\x15\x03\xa3 \x06F\xc5\xc0\xa8\x18\x18\x15\x03\xa34\xc4\xc0\xa8\x18\x18\xa58\x15\x03\xa3\xba\x10\x03\xa3F@\x8f\xfd\x89\x81Q\xd8#10*\x06F\xc5\xc0(\x0d10\xca@\x0c\x8c\x8a\x81Q10*\x06F\xd9\x1e\x8e\x81Q10*\x06F\xc5\xc0\xa8\x18\x18U\xff\xfd\x7fL`\x94\xcb{w\xcf\xa1Q?t*\x06\x8d\x96\xf8xy\x8f\xc34<\x0d\x8e\x19\xdb\x06\x89A\xe2/\x8fQ\xdc\x11\x17\x85\xfd\xd2\x8a\xd6\xb4\x17\xa8\xcdx-\xedv\xa9\x0du\xd1F\xb9}F\xe0-s}Mq\xc7mo\x11\x16\x06;\x8d\xfb\x0df\x9d\xaf\x0d\xcb\xcdX\xda\xc02V\xd8\xb8\xac\x94wu\x0c\x84\xb2\xb3\xd2\x16J \xb8\xe3\xac\xf0\x8aZ\x1a\x13\xa1r\xd9(\xee\x0e\xaf\x9c\xe58\x8b\x1d\xe7\x8f\xb3B\x16Z\x19\xcb\xde\x08\xd49\xd3\xbd/\xfb\xdbu\"\x0d9\xa9\xe8\xad}\x1e\xa9\x08\x86\xf4y;V\xf6\x9a6\xb8{MRi\xb0u\x84\xa4\xbe?\xee\xdbH}\xd3\xd1]\x91\x8a\xc2\xd2\x03\x91\xfa\xba\xbbS\xe1\xc1\xda\x8b\x10\xc5o\x97\xf5CD\xe6T\xce\x8bT\xea\x8a\xb5`\x86a\xcd\xa5\xb3\x9a\xe4J\x1a7]\xb7q\x02\xcf\xfa\x05\x97:\xbf]dp\xd9\x1c\xccg\xda\x7fg\x0c\xb1\x8fr\xe8\xe5\xc73X\x1d+ss\xf1\xfe\xc5\x8fg\xf0Y\x98zN\xdaWo\xffV\xf7S\xf2lZ\x89\xaa\x12\x05|\xf83\x12\xc0\xe5\xef~\xd8RZ\xb3\xa0mr\xe8\xd14t\x14\x1cY\xd3\xe8G\x12\xa2\xd3g\x8d\x1a\xb4\x04\x93:_\xef\xc7\x05\xf6\xa2\x01]o\xf7\"\xff8\xf1~\x1en\xbd-\xf2\xfc\xea\xcd\x81\xcc.\xf5\x88\x8b\xe2\x9e=B\xddmR\xd2r\xdf\xc27U=\x9e\xae\xd9%\x87\xa0\xad\xae\xc6W\xbcNv\xeb\xe3.QeI\x7f\x12\xc5\xa7\x9d\x80\"\xcf+\x1d\x94\xd39\x01\xd6\xf9\xb1\xbd\x1fX\x89\x8e\xdf\xd0\x04.\xe8\xfbO\x89'\x13R\x15\x93\xbf)\x0d\xaa{\xdb\x97I-f\x95\x1f;\x03\xca\xf2Ms\xc3'%T{\xa3\xa7\xbd\xeb\x97\xdd\xdd\x99\xc0\xe6\xa8\xb5\xac\xc6\x87h\xc6\xa9\xacy\xfd\xa01\x0e\x1a\xe7_\xbb\x87\x08\xdb\xa6FX\x92WB~8q<^\x7f\xa9uQ \n\x865\x10\xcfy106\x85{\x0b1\x14\x8f\xcb!=}\x81\x8e\x08\xee/S\x0d\xc1\x8b\xb5\x87\xa5\xbbp{KVC\x7f\xe1j\x98o\xf9j\xe8/b\xcf\xb6W\xe7g\xcd\xaf\x83\xfcS\x83u\xa5o\x1fvi\xa9b\xcb\xcc\xf3\x81\xdb\xae\x9co\xdf5\xa65y\xe3Qt\x8eQl*\xba\xf7\xf0\x9dW\xa1\x91\xa8\xd6]\xe0\x8e\xbe\x981\xee\xd4\x1eq:_\xac\xe9lQ\xa6\xd6\xf8R\xcc\xd1D\x8c,\x9d+\xa6\xd4\x1dM\x1a\x14G\x1a\x1cA\xaa\xc6;\x0c|\xb4\xc6\x8e\x06G\x8d\xea\xab\xfc\x016K\xbc\xe8\x94HQ\x15\x15:\x1c\x0d\xe2\xcc\x0b\x89\x0e\xb5G\x82N\x8c\x01%E\x7f\xd2#='\xc4xN\x88\xeeD\x04\xc6\x8c1\x9c\xf3Fo\xce\x16\xb7\xe9\x8f\xd8\x9c-V\xd3\x16\xa59%>\x13\x8d\xc5\xac(Q\x98\xa1\xf1\x97\xd6X\xcb\xc0(K$\xbe\xd2zP\xd2\xfc/\xa3\x1340\x8e\xb2\x8d\x99\xc4\xf8\xfb+\xff\xb7\xa7EM\xea(\xc9\x0e\xbaq\xbc\xe4\x0c\x91\x92\xd3b$\x07\xab|x\x18N\x8c\x8b\xac\x19\xdd\xc58%\x02\xd2\x19\xdeg\x89z\xf4\xc6;\x8eC\x7f\xe81\x8e\xe3w\xff\x8e\x8d5(\xa2\x912X_\x14\xa3}l\xde\xc8EF\xcc\xe20.\xcb\x16\xa78=B1<6\x11\x9d\x97\xc0xDg$\xa2=\x06\xd1\x15}\x882\x8b\x1aq\xe8\x8b5\x1cD\x19N\x88/$D\x16\xd2c\n\xbd\xd1\x84HP\xde\xe8s\xc83\xbe\xa8\xc1i\xf1\x82(Q\x9d\xbfL\x8a\x0e\x1cF\x03N\x89\x03D\xe2\xfe&E\xfc\x0d#\xfc\xe6\x8c\xed\xb3E\xf5\x8d\xe2\xf9\xe6\x89\xe4\x9b-\x86o\xde\xe8=Z\xdc\x9e7b\xaf\xb6\xf5}\xb1z\xf5c\xce(\xbdQ8\xdb\xf8k\xd4x+wL\x1e1\x1a\x8f\x10\x87\xd7#y\xce\xd8\xbbIQw\xe3(\xbb\xf9\xe2\xeb\xe6\x8b\xac\x0b\x9f]o4\x9d/\x8e\xceHi<v\x0e\xb5'0\xd7\xbc#R\x8e\x88cJ\\\x9c\xef\x9a\xb3uJ\x91/:\xfb%T\x901\x8c\xeb\xac \x0fQ\x9ctX]\x15\xe41\xac\x9e\n\x86\x0d\xa9\xa3b\xc5\xd6\xaf\x9fR\x9d\xc0\x8f\x82\xd5J\xb1\x1a\xa9\xde\x1a)\x96\xfa(d\x84X]\x14\xa4&\x8a\x1f\x1fR\x0b\x85\xe3\x17\x05O\x0d\x14\x94\x00J\xed\x939\xeb\x9et6\xd2\xe1\x9b\xc3\xa2V\xf5\xcd\x1b\xe4\x8dd\xaf\n\x86.%Ki\xb1a%0\xeb\x14Y\x83\xe6\xbe\x84\xc8;k\x95/\x04\x0dZ\xdd\x0bynT\xd5+P\x0c\x8d\xabx9\x05w\xe7\"iT\xb9\x0byqP\xb1\x8b1\xf5x\x95.\x0b\xdf\xad\xd5\xb9\x06\xcf\xbb\xd7\xf6\x9b\x96X\xc2\x02\x1f\x13\x88\x10\x87\x12\xe6&\xeam\xbdq\xfe\xd8\x9d<\x02=\xbd\xbd\xe2\x9c\xc3\xde\xda\x1c\xec\x0f\xfa\x8b\xbd=Ay\xed\xff\x0b\x00\x00\xff\xffPK\x07\x08\xdc\xce%2\x89\xaa\x02\x00\x1a\xe5%\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb1\xf1mT\x02\x00\x008\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81k \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(-\xe3\xb5\x97=9\x05\x00\xf7\x0c\x1b\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xef\x0c\x00\x00swagger-ui-bundle.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(v\xf2\x8aA\x86\xba\x01\x00\xc5\x87\x08\x00\x1f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81wF\x05\x00swagger-ui-standalone-preset.jsUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(_;\x94/\xe8Y\x00\x00\xa8X\x02\x00\x0e\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81S\x01\x07\x00swagger-ui.cssUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xdc\xce%2\x89\xaa\x02\x00\x1a\xe5%\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x80[\x07\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x08\x00\x08\x00E\x02\x00\x00L\x06\n\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index f9a07a8c1..a66195677 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -10838,12 +10838,15 @@ paths: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -10852,6 +10855,8 @@ paths: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -10898,6 +10903,15 @@ paths: channel_id: type: string title: channel identifier + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt + performed by this channel + + the value of 0 indicates the channel has never been + upgraded description: >- IdentifiedChannel defines a channel with additional port and channel @@ -11241,12 +11255,15 @@ paths: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -11255,6 +11272,8 @@ paths: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -11294,6 +11313,15 @@ paths: title: >- opaque channel version, which is agreed upon during the handshake + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt + performed by this channel + + the value of 0 indicates the channel has never been + upgraded description: >- Channel defines pipeline for exactly-once packet delivery between specific @@ -12497,7 +12525,7 @@ paths: gets reset title: |- - QuerySequenceResponse is the request type for the + QuerySequenceResponse is the response type for the Query/QueryNextSequenceReceiveResponse RPC method default: description: An unexpected error response. @@ -13913,86 +13941,622 @@ paths: in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks: + get: + summary: >- + UnreceivedAcks returns all the unreceived IBC acknowledgements + associated + + with a channel and sequences. + operationId: UnreceivedAcks + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived acknowledgement sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedAcksResponse is the response type for the + Query/UnreceivedAcks RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": <string>, + "lastName": <string> + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_ack_sequences + description: list of acknowledgement sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 + tags: + - Query + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets: + get: + summary: >- + UnreceivedPackets returns all the unreceived IBC packets associated with + a + + channel and sequences. + operationId: UnreceivedPackets + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequences: + type: array + items: + type: string + format: uint64 + title: list of unreceived packet sequences + height: + title: query block height + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: |- + QueryUnreceivedPacketsResponse is the response type for the + Query/UnreceivedPacketCommitments RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": <string>, + "lastName": <string> + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: channel_id + description: channel unique identifier + in: path + required: true + type: string + - name: port_id + description: port unique identifier + in: path + required: true + type: string + - name: packet_commitment_sequences + description: list of packet sequences + in: path + required: true + type: array + items: + type: string + format: uint64 + collectionFormat: csv + minItems: 1 tags: - Query - /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks: + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}: get: - summary: >- - UnreceivedAcks returns all the unreceived IBC acknowledgements - associated - - with a channel and sequences. - operationId: UnreceivedAcks + summary: PacketCommitment queries a stored packet commitment hash. + operationId: PacketCommitment responses: '200': description: A successful response. schema: type: object properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height + commitment: + type: string + format: byte + title: packet associated with the request fields + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved type: object properties: revision_number: @@ -14020,9 +14584,14 @@ paths: RevisionHeight gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method + title: >- + QueryPacketCommitmentResponse defines the client query response + for a packet + + which also includes a proof and the height from which the proof + was + + retrieved default: description: An unexpected error response. schema: @@ -14228,40 +14797,37 @@ paths: in: path required: true type: string - - name: packet_ack_sequences - description: list of acknowledgement sequences + - name: sequence + description: packet sequence in: path required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 + type: string + format: uint64 tags: - Query - /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets: + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}: get: summary: >- - UnreceivedPackets returns all the unreceived IBC packets associated with - a + PacketReceipt queries if a given packet sequence has been received on + the - channel and sequences. - operationId: UnreceivedPackets + queried chain + operationId: PacketReceipt responses: '200': description: A successful response. schema: type: object properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height + received: + type: boolean + title: success flag for if receipt exists + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved type: object properties: revision_number: @@ -14289,9 +14855,14 @@ paths: RevisionHeight gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method + title: >- + QueryPacketReceiptResponse defines the client query response for a + packet + + receipt which also includes a proof, and the height from which the + proof was + + retrieved default: description: An unexpected error response. schema: @@ -14497,32 +15068,122 @@ paths: in: path required: true type: string - - name: packet_commitment_sequences - description: list of packet sequences + - name: sequence + description: packet sequence in: path required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 + type: string + format: uint64 tags: - Query - /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}: + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade: get: - summary: PacketCommitment queries a stored packet commitment hash. - operationId: PacketCommitment + summary: Upgrade returns the upgrade for a given port and channel id. + operationId: Upgrade responses: '200': description: A successful response. schema: type: object properties: - commitment: - type: string - format: byte - title: packet associated with the request fields + upgrade: + type: object + properties: + fields: + type: object + properties: + ordering: + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: >- + - ORDER_NONE_UNSPECIFIED: zero-value for channel + ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + title: Order defines if a channel is ORDERED or UNORDERED + connection_hops: + type: array + items: + type: string + version: + type: string + description: >- + UpgradeFields are the fields in a channel end which may be + changed + + during a channel upgrade. + timeout: + type: object + properties: + height: + title: >- + block height after which the packet or upgrade times + out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each + height while keeping + + RevisionNumber the same. However some consensus + algorithms may choose to + + reset the height in certain conditions e.g. hard + forks, state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even + as the RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the + packet or upgrade times out + description: >- + Timeout defines an execution deadline structure for + 04-channel handlers. + + This includes packet lifecycle handlers as well as the + upgrade handshake handlers. + + A valid Timeout contains either one or both of a timestamp + and block height (sequence). + next_sequence_send: + type: string + format: uint64 + description: >- + Upgrade is a verifiable type which contains the relevant + information + + for an attempted upgrade. It provides the proposed changes to + the channel + + end, the timeout for this upgrade attempt and the next packet + sequence + + which allows the counterparty to efficiently know the highest + sequence it has received. + + The next sequence send is used for pruning and upgrading from + unordered to ordered channels. proof: type: string format: byte @@ -14557,13 +15218,8 @@ paths: gets reset title: >- - QueryPacketCommitmentResponse defines the client query response - for a packet - - which also includes a proof and the height from which the proof - was - - retrieved + QueryUpgradeResponse is the response type for the + QueryUpgradeResponse RPC method default: description: An unexpected error response. schema: @@ -14760,40 +15416,43 @@ paths: } parameters: - name: channel_id - description: channel unique identifier in: path required: true type: string - name: port_id - description: port unique identifier in: path required: true type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 tags: - Query - /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}: + /ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/upgrade_error: get: - summary: >- - PacketReceipt queries if a given packet sequence has been received on - the - - queried chain - operationId: PacketReceipt + summary: UpgradeError returns the error receipt if the upgrade handshake failed. + operationId: UpgradeError responses: '200': description: A successful response. schema: type: object properties: - received: - type: boolean - title: success flag for if receipt exists + error_receipt: + type: object + properties: + sequence: + type: string + format: uint64 + title: the channel upgrade sequence + message: + type: string + title: the error message detailing the cause of failure + description: >- + ErrorReceipt defines a type which encapsulates the upgrade + sequence and error associated with the + + upgrade handshake failure. When a channel upgrade handshake is + aborted both chains are expected to increment to the + + next sequence. proof: type: string format: byte @@ -14828,13 +15487,8 @@ paths: gets reset title: >- - QueryPacketReceiptResponse defines the client query response for a - packet - - receipt which also includes a proof, and the height from which the - proof was - - retrieved + QueryUpgradeErrorResponse is the response type for the + Query/QueryUpgradeError RPC method default: description: An unexpected error response. schema: @@ -15031,21 +15685,13 @@ paths: } parameters: - name: channel_id - description: channel unique identifier in: path required: true type: string - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence in: path required: true type: string - format: uint64 tags: - Query /ibc/core/channel/v1/connections/{connection}/channels: @@ -15074,12 +15720,15 @@ paths: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -15088,6 +15737,8 @@ paths: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -15134,6 +15785,15 @@ paths: channel_id: type: string title: channel identifier + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt + performed by this channel + + the value of 0 indicates the channel has never been + upgraded description: >- IdentifiedChannel defines a channel with additional port and channel @@ -15459,6 +16119,268 @@ paths: type: boolean tags: - Query + /ibc/core/channel/v1/params: + get: + summary: ChannelParams queries all parameters of the ibc channel submodule. + operationId: ChannelParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + upgrade_timeout: + type: object + properties: + height: + title: >- + block height after which the packet or upgrade times + out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each + height while keeping + + RevisionNumber the same. However some consensus + algorithms may choose to + + reset the height in certain conditions e.g. hard + forks, state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even + as the RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the + packet or upgrade times out + description: >- + Timeout defines an execution deadline structure for + 04-channel handlers. + + This includes packet lifecycle handlers as well as the + upgrade handshake handlers. + + A valid Timeout contains either one or both of a timestamp + and block height (sequence). + description: >- + QueryChannelParamsResponse is the response type for the + Query/ChannelParams RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": <string>, + "lastName": <string> + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query /cosmos/auth/v1beta1/account_info/{address}: get: summary: AccountInfo queries account info which is common to all account types. @@ -46162,10 +47084,12 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: |- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -46174,6 +47098,8 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -46209,6 +47135,14 @@ definitions: version: type: string title: opaque channel version, which is agreed upon during the handshake + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt performed by + this channel + + the value of 0 indicates the channel has never been upgraded description: |- Channel defines pipeline for exactly-once packet delivery between specific modules on separate blockchains, which has at least one end capable of @@ -46225,6 +47159,24 @@ definitions: type: string title: channel end on the counterparty chain title: Counterparty defines a channel end counterparty + ibc.core.channel.v1.ErrorReceipt: + type: object + properties: + sequence: + type: string + format: uint64 + title: the channel upgrade sequence + message: + type: string + title: the error message detailing the cause of failure + description: >- + ErrorReceipt defines a type which encapsulates the upgrade sequence and + error associated with the + + upgrade handshake failure. When a channel upgrade handshake is aborted + both chains are expected to increment to the + + next sequence. ibc.core.channel.v1.IdentifiedChannel: type: object properties: @@ -46237,10 +47189,12 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: |- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -46249,6 +47203,8 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -46290,6 +47246,14 @@ definitions: channel_id: type: string title: channel identifier + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt performed by + this channel + + the value of 0 indicates the channel has never been upgraded description: |- IdentifiedChannel defines a channel with additional port and channel identifier fields. @@ -46328,6 +47292,57 @@ definitions: packet commitments, acknowledgements, and receipts. Caller is responsible for knowing the context necessary to interpret this state as a commitment, acknowledgement, or a receipt. + ibc.core.channel.v1.Params: + type: object + properties: + upgrade_timeout: + type: object + properties: + height: + title: block height after which the packet or upgrade times out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is incremented + so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the packet or upgrade + times out + description: >- + Timeout defines an execution deadline structure for 04-channel + handlers. + + This includes packet lifecycle handlers as well as the upgrade + handshake handlers. + + A valid Timeout contains either one or both of a timestamp and block + height (sequence). + description: Params defines the set of IBC channel parameters. ibc.core.channel.v1.QueryChannelClientStateResponse: type: object properties: @@ -46753,6 +47768,63 @@ definitions: title: |- QueryChannelClientStateResponse is the Response type for the Query/QueryChannelClientState RPC method + ibc.core.channel.v1.QueryChannelParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + upgrade_timeout: + type: object + properties: + height: + title: block height after which the packet or upgrade times out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the packet or + upgrade times out + description: >- + Timeout defines an execution deadline structure for 04-channel + handlers. + + This includes packet lifecycle handlers as well as the upgrade + handshake handlers. + + A valid Timeout contains either one or both of a timestamp and + block height (sequence). + description: >- + QueryChannelParamsResponse is the response type for the + Query/ChannelParams RPC method. ibc.core.channel.v1.QueryChannelResponse: type: object properties: @@ -46769,10 +47841,14 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- + description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -46781,6 +47857,8 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -46818,6 +47896,14 @@ definitions: version: type: string title: opaque channel version, which is agreed upon during the handshake + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt performed by + this channel + + the value of 0 indicates the channel has never been upgraded description: >- Channel defines pipeline for exactly-once packet delivery between specific @@ -46881,10 +47967,14 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- + description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -46893,6 +47983,8 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -46938,6 +48030,14 @@ definitions: channel_id: type: string title: channel identifier + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt performed + by this channel + + the value of 0 indicates the channel has never been upgraded description: |- IdentifiedChannel defines a channel with additional port and channel identifier fields. @@ -47017,10 +48117,14 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- + description: >- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or + UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -47029,6 +48133,8 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. ordering: title: whether the channel is ordered or unordered type: string @@ -47074,6 +48180,14 @@ definitions: channel_id: type: string title: channel identifier + upgrade_sequence: + type: string + format: uint64 + title: >- + upgrade sequence indicates the latest upgrade attempt performed + by this channel + + the value of 0 indicates the channel has never been upgraded description: |- IdentifiedChannel defines a channel with additional port and channel identifier fields. @@ -47176,7 +48290,7 @@ definitions: gets reset title: |- - QuerySequenceResponse is the request type for the + QuerySequenceResponse is the response type for the Query/QueryNextSequenceReceiveResponse RPC method ibc.core.channel.v1.QueryNextSequenceSendResponse: type: object @@ -47612,6 +48726,191 @@ definitions: title: |- QueryUnreceivedPacketsResponse is the response type for the Query/UnreceivedPacketCommitments RPC method + ibc.core.channel.v1.QueryUpgradeErrorResponse: + type: object + properties: + error_receipt: + type: object + properties: + sequence: + type: string + format: uint64 + title: the channel upgrade sequence + message: + type: string + title: the error message detailing the cause of failure + description: >- + ErrorReceipt defines a type which encapsulates the upgrade sequence + and error associated with the + + upgrade handshake failure. When a channel upgrade handshake is aborted + both chains are expected to increment to the + + next sequence. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryUpgradeErrorResponse is the response type for the + Query/QueryUpgradeError RPC method + ibc.core.channel.v1.QueryUpgradeResponse: + type: object + properties: + upgrade: + type: object + properties: + fields: + type: object + properties: + ordering: + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + title: Order defines if a channel is ORDERED or UNORDERED + connection_hops: + type: array + items: + type: string + version: + type: string + description: |- + UpgradeFields are the fields in a channel end which may be changed + during a channel upgrade. + timeout: + type: object + properties: + height: + title: block height after which the packet or upgrade times out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height + while keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is + incremented so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the packet or + upgrade times out + description: >- + Timeout defines an execution deadline structure for 04-channel + handlers. + + This includes packet lifecycle handlers as well as the upgrade + handshake handlers. + + A valid Timeout contains either one or both of a timestamp and + block height (sequence). + next_sequence_send: + type: string + format: uint64 + description: >- + Upgrade is a verifiable type which contains the relevant information + + for an attempted upgrade. It provides the proposed changes to the + channel + + end, the timeout for this upgrade attempt and the next packet sequence + + which allows the counterparty to efficiently know the highest sequence + it has received. + + The next sequence send is used for pruning and upgrading from + unordered to ordered channels. + proof: + type: string + format: byte + title: merkle proof of existence + proof_height: + title: height at which the proof was retrieved + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + title: >- + QueryUpgradeResponse is the response type for the QueryUpgradeResponse RPC + method ibc.core.channel.v1.State: type: string enum: @@ -47620,10 +48919,12 @@ definitions: - STATE_TRYOPEN - STATE_OPEN - STATE_CLOSED + - STATE_FLUSHING + - STATE_FLUSHCOMPLETE default: STATE_UNINITIALIZED_UNSPECIFIED description: |- State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. + CLOSED, INIT, TRYOPEN, OPEN, FLUSHING, FLUSHCOMPLETE or UNINITIALIZED. - STATE_UNINITIALIZED_UNSPECIFIED: Default State - STATE_INIT: A channel has just started the opening handshake. @@ -47632,6 +48933,168 @@ definitions: ready to send and receive packets. - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive packets. + - STATE_FLUSHING: A channel has just accepted the upgrade handshake attempt and is flushing in-flight packets. + - STATE_FLUSHCOMPLETE: A channel has just completed flushing any in-flight packets. + ibc.core.channel.v1.Timeout: + type: object + properties: + height: + title: block height after which the packet or upgrade times out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may choose + to + + reset the height in certain conditions e.g. hard forks, state-machine + + breaking changes In these cases, the RevisionNumber is incremented so + that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the packet or upgrade + times out + description: >- + Timeout defines an execution deadline structure for 04-channel handlers. + + This includes packet lifecycle handlers as well as the upgrade handshake + handlers. + + A valid Timeout contains either one or both of a timestamp and block + height (sequence). + ibc.core.channel.v1.Upgrade: + type: object + properties: + fields: + type: object + properties: + ordering: + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + title: Order defines if a channel is ORDERED or UNORDERED + connection_hops: + type: array + items: + type: string + version: + type: string + description: |- + UpgradeFields are the fields in a channel end which may be changed + during a channel upgrade. + timeout: + type: object + properties: + height: + title: block height after which the packet or upgrade times out + type: object + properties: + revision_number: + type: string + format: uint64 + title: the revision that the client is currently on + revision_height: + type: string + format: uint64 + title: the height within the given revision + description: >- + Normally the RevisionHeight is incremented at each height while + keeping + + RevisionNumber the same. However some consensus algorithms may + choose to + + reset the height in certain conditions e.g. hard forks, + state-machine + + breaking changes In these cases, the RevisionNumber is incremented + so that + + height continues to be monitonically increasing even as the + RevisionHeight + + gets reset + timestamp: + type: string + format: uint64 + title: >- + block timestamp (in nanoseconds) after which the packet or upgrade + times out + description: >- + Timeout defines an execution deadline structure for 04-channel + handlers. + + This includes packet lifecycle handlers as well as the upgrade + handshake handlers. + + A valid Timeout contains either one or both of a timestamp and block + height (sequence). + next_sequence_send: + type: string + format: uint64 + description: >- + Upgrade is a verifiable type which contains the relevant information + + for an attempted upgrade. It provides the proposed changes to the channel + + end, the timeout for this upgrade attempt and the next packet sequence + + which allows the counterparty to efficiently know the highest sequence it + has received. + + The next sequence send is used for pruning and upgrading from unordered to + ordered channels. + ibc.core.channel.v1.UpgradeFields: + type: object + properties: + ordering: + type: string + enum: + - ORDER_NONE_UNSPECIFIED + - ORDER_UNORDERED + - ORDER_ORDERED + default: ORDER_NONE_UNSPECIFIED + description: |- + - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering + - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in + which they were sent. + - ORDER_ORDERED: packets are delivered exactly in the order which they were sent + title: Order defines if a channel is ORDERED or UNORDERED + connection_hops: + type: array + items: + type: string + version: + type: string + description: |- + UpgradeFields are the fields in a channel end which may be changed + during a channel upgrade. cosmos.auth.v1beta1.AddressBytesToStringResponse: type: object properties: diff --git a/proto/buf.yaml b/proto/buf.yaml index faf79bc46..3fe9ade62 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,6 +1,6 @@ version: v1 deps: - - buf.build/cosmos/cosmos-sdk:v0.50.5 + - buf.build/cosmos/cosmos-sdk:v0.50.6 - buf.build/cosmos/cosmos-proto - buf.build/cosmos/gogo-proto - buf.build/googleapis/googleapis diff --git a/proto/canto/csr/v1/tx.proto b/proto/canto/csr/v1/tx.proto index 997b850e7..8e728cf86 100644 --- a/proto/canto/csr/v1/tx.proto +++ b/proto/canto/csr/v1/tx.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package canto.csr.v1; -import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/canto/erc20/v1/erc20.proto b/proto/canto/erc20/v1/erc20.proto index 0194689ef..d271b4d7a 100644 --- a/proto/canto/erc20/v1/erc20.proto +++ b/proto/canto/erc20/v1/erc20.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package canto.erc20.v1; import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; import "cosmos/bank/v1beta1/bank.proto"; option go_package = "github.com/Canto-Network/Canto/v7/x/erc20/types"; @@ -65,7 +64,7 @@ message ToggleTokenConversionProposal { option deprecated = true; option (gogoproto.equal) = false; // title of the proposal - string Title = 1; + string title = 1; // proposal description string description = 2; // token identifier can be either the hex contract address of the ERC20 or the diff --git a/proto/canto/erc20/v1/tx.proto b/proto/canto/erc20/v1/tx.proto index bea0a09d8..a18bb5182 100644 --- a/proto/canto/erc20/v1/tx.proto +++ b/proto/canto/erc20/v1/tx.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package canto.erc20.v1; -import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/bank/v1beta1/bank.proto"; @@ -155,7 +154,7 @@ message MsgToggleTokenConversion { option (amino.name) = "canto/MsgToggleTokenConversion"; option (gogoproto.equal) = true; // title of the proposal - string Title = 2; + string title = 2; // proposal description string description = 3; // token identifier can be either the hex contract address of the ERC20 or the diff --git a/proto/canto/inflation/v1/tx.proto b/proto/canto/inflation/v1/tx.proto index f611d9a09..12a3dd69d 100644 --- a/proto/canto/inflation/v1/tx.proto +++ b/proto/canto/inflation/v1/tx.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package canto.inflation.v1; -import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/canto/onboarding/v1/tx.proto b/proto/canto/onboarding/v1/tx.proto index 5266fe3ea..5e05f1b7e 100644 --- a/proto/canto/onboarding/v1/tx.proto +++ b/proto/canto/onboarding/v1/tx.proto @@ -1,7 +1,6 @@ syntax = "proto3"; package canto.onboarding.v1; -import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/scripts/protoc-swagger-gen.sh b/scripts/protoc-swagger-gen.sh index b7292660b..a47322059 100755 --- a/scripts/protoc-swagger-gen.sh +++ b/scripts/protoc-swagger-gen.sh @@ -4,8 +4,8 @@ set -eo pipefail mkdir -p ./third_party cd third_party -git clone --branch v0.50.5 --single-branch --depth 1 https://github.com/cosmos/cosmos-sdk -git clone --branch v8.0.0 --single-branch --depth 1 https://github.com/cosmos/ibc-go +git clone --branch v0.50.6 --single-branch --depth 1 https://github.com/cosmos/cosmos-sdk +git clone --branch v8.2.1 --single-branch --depth 1 https://github.com/cosmos/ibc-go git clone --branch dudong2/feat/cosmos-sdk@v0.50.x-cometbft@v0.38.0-2 --single-branch --depth 1 https://github.com/b-harvest/ethermint cd .. diff --git a/x/coinswap/keeper/msg_server.go b/x/coinswap/keeper/msg_server.go index 853e1adc0..8844501af 100644 --- a/x/coinswap/keeper/msg_server.go +++ b/x/coinswap/keeper/msg_server.go @@ -170,9 +170,6 @@ func (k msgServer) UpdateParams(goCtx context.Context, req *types.MsgUpdateParam ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - //if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - //} return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/coinswap/module.go b/x/coinswap/module.go index 8004993b1..fc42cfe2a 100644 --- a/x/coinswap/module.go +++ b/x/coinswap/module.go @@ -56,11 +56,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod return types.ValidateGenesis(data) } -// RegisterRESTRoutes registers the REST routes for the coinswap module. -//func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { -// rest.RegisterHandlers(clientCtx, rtr) -//} - // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the coinswap module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { diff --git a/x/coinswap/spec/01_state.md b/x/coinswap/spec/01_state.md index db0f16fdb..963e72dd4 100644 --- a/x/coinswap/spec/01_state.md +++ b/x/coinswap/spec/01_state.md @@ -10,10 +10,10 @@ Params is a module-wide configuration structure that stores system parameters an ```go type Params struct { - Fee sdk.Dec + Fee sdkmath.LegacyDec PoolCreationFee sdk.Coin - TaxRate sdk.Dec - MaxStandardCoinPerPool sdk.Int + TaxRate sdkmath.LegacyDec + MaxStandardCoinPerPool sdkmath.Int MaxSwapAmount sdk.Coins } ``` diff --git a/x/coinswap/spec/02_messages.md b/x/coinswap/spec/02_messages.md index b65df2e96..4e59cd2d0 100644 --- a/x/coinswap/spec/02_messages.md +++ b/x/coinswap/spec/02_messages.md @@ -39,8 +39,8 @@ The liquidity can be added using the `MsgAddLiquidity` message ```go type MsgAddLiquidity struct { MaxToken types.Coin - ExactStandardAmt sdk.Int - MinLiquidity sdk.Int + ExactStandardAmt sdkmath.Int + MinLiquidity sdkmath.Int Deadline int64 Sender string } @@ -53,8 +53,8 @@ The liquidity can be removed using the `MsgAddLiquidity` message ```go type MsgRemoveLiquidity struct { WithdrawLiquidity types.Coin - MinToken sdk.Int - MinStandardAmt sdk.Int + MinToken sdkmath.Int + MinStandardAmt sdkmath.Int Deadline int64 Sender string } diff --git a/x/csr/module.go b/x/csr/module.go index cc69cb6cb..93a38acbd 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -7,7 +7,6 @@ import ( // this line is used by starport scaffolding # 1 - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/Canto-Network/Canto/v7/x/csr/keeper" @@ -67,10 +66,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod return genState.Validate() } -// RegisterRESTRoutes registers the csr module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { -} - // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { diff --git a/x/csr/types/tx.pb.go b/x/csr/types/tx.pb.go index 0449cb007..4cdcf1a71 100644 --- a/x/csr/types/tx.pb.go +++ b/x/csr/types/tx.pb.go @@ -12,7 +12,6 @@ import ( _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -137,31 +136,29 @@ func init() { func init() { proto.RegisterFile("canto/csr/v1/tx.proto", fileDescriptor_249005a6451fe2d1) } var fileDescriptor_249005a6451fe2d1 = []byte{ - // 372 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x51, 0x3d, 0x4b, 0x03, 0x41, - 0x10, 0xbd, 0x55, 0x0c, 0xe4, 0x0c, 0x88, 0x47, 0x24, 0xc9, 0xa1, 0x67, 0x08, 0x08, 0x21, 0x90, - 0x5b, 0x12, 0xc1, 0x80, 0x9d, 0xb1, 0xb0, 0x8a, 0x48, 0xd4, 0xc6, 0x46, 0x36, 0x97, 0x63, 0x73, - 0xe8, 0xdd, 0x1c, 0x3b, 0x9b, 0x98, 0x74, 0x62, 0x69, 0xe5, 0xcf, 0xb0, 0xb0, 0x48, 0xe1, 0x8f, - 0x48, 0x19, 0xac, 0xac, 0x44, 0x92, 0x22, 0x7f, 0x43, 0xee, 0x43, 0xf3, 0x51, 0xd8, 0x2c, 0x33, - 0xf3, 0xde, 0xbc, 0x7d, 0xfb, 0x56, 0xdd, 0xb1, 0x98, 0x27, 0x81, 0x5a, 0x28, 0x68, 0xaf, 0x42, - 0x65, 0xdf, 0xf4, 0x05, 0x48, 0xd0, 0x52, 0xe1, 0xd8, 0xb4, 0x50, 0x98, 0xbd, 0x8a, 0xbe, 0xcb, - 0x01, 0xf8, 0xbd, 0x4d, 0x99, 0xef, 0x50, 0xe6, 0x79, 0x20, 0x99, 0x74, 0xc0, 0xc3, 0x88, 0xab, - 0xa7, 0x39, 0x70, 0x08, 0x4b, 0x1a, 0x54, 0xf1, 0x34, 0x63, 0x01, 0xba, 0x80, 0xd4, 0x45, 0x1e, - 0x28, 0xbb, 0xc8, 0x63, 0x20, 0x17, 0x01, 0xb7, 0xd1, 0x46, 0xd4, 0xc4, 0xd0, 0x36, 0x73, 0x1d, - 0x0f, 0x68, 0x78, 0xfe, 0xb1, 0x17, 0xfd, 0xf9, 0x4c, 0x30, 0x37, 0x66, 0x17, 0xde, 0x88, 0xba, - 0xd5, 0x40, 0x7e, 0xed, 0xb7, 0x99, 0xb4, 0x2f, 0x42, 0x44, 0x3b, 0x52, 0x93, 0xac, 0x2b, 0x3b, - 0x20, 0x1c, 0x39, 0xc8, 0x92, 0x3c, 0x29, 0x26, 0xeb, 0xd9, 0x8f, 0xf7, 0x72, 0x3a, 0xbe, 0xe6, - 0xa4, 0xdd, 0x16, 0x36, 0xe2, 0xa5, 0x14, 0x8e, 0xc7, 0x9b, 0x73, 0xaa, 0x56, 0x53, 0x13, 0x91, - 0x76, 0x76, 0x2d, 0x4f, 0x8a, 0x9b, 0xd5, 0xb4, 0xb9, 0x18, 0x80, 0x19, 0xa9, 0xd7, 0x93, 0xa3, - 0xaf, 0x7d, 0xe5, 0x75, 0x36, 0x2c, 0x91, 0x66, 0x4c, 0x3f, 0x2e, 0x3e, 0xcd, 0x86, 0xa5, 0xb9, - 0xd0, 0xf3, 0x6c, 0x58, 0x8a, 0x23, 0x5d, 0xb1, 0x56, 0xc8, 0xa9, 0x99, 0x95, 0x51, 0xd3, 0x46, - 0x1f, 0x3c, 0xb4, 0xab, 0x2d, 0x75, 0xbd, 0x81, 0x5c, 0xbb, 0x52, 0x53, 0x4b, 0x8f, 0xd9, 0x5b, - 0x36, 0xb1, 0xb2, 0xad, 0x1f, 0xfc, 0x0b, 0xff, 0x8a, 0xeb, 0x1b, 0x8f, 0x81, 0xe1, 0xfa, 0xd9, - 0x68, 0x62, 0x90, 0xf1, 0xc4, 0x20, 0xdf, 0x13, 0x83, 0xbc, 0x4c, 0x0d, 0x65, 0x3c, 0x35, 0x94, - 0xcf, 0xa9, 0xa1, 0xdc, 0x94, 0xb9, 0x23, 0x3b, 0xdd, 0x96, 0x69, 0x81, 0x4b, 0x4f, 0x03, 0xc5, - 0xf2, 0xb9, 0x2d, 0x1f, 0x40, 0xdc, 0x45, 0x1d, 0xed, 0xd5, 0x68, 0x3f, 0xfc, 0x00, 0x39, 0xf0, - 0x6d, 0x6c, 0x25, 0xc2, 0xf4, 0x0f, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xe6, 0xae, 0x5a, - 0x3a, 0x02, 0x00, 0x00, + // 347 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x4e, 0xcc, 0x2b, + 0xc9, 0xd7, 0x4f, 0x2e, 0x2e, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, + 0xc9, 0x17, 0xe2, 0x01, 0x0b, 0xeb, 0x25, 0x17, 0x17, 0xe9, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, + 0xa7, 0xe7, 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x29, 0xf1, 0xe4, 0xfc, 0xe2, 0xdc, 0xfc, + 0x62, 0xfd, 0xdc, 0xe2, 0x74, 0x90, 0xde, 0xdc, 0xe2, 0x74, 0xa8, 0x84, 0x24, 0x44, 0x22, 0x1e, + 0xa2, 0x03, 0xc2, 0x81, 0x4a, 0x09, 0x26, 0xe6, 0x66, 0xe6, 0xe5, 0xeb, 0x83, 0x49, 0xb8, 0x6a, + 0x64, 0x17, 0x14, 0x24, 0x16, 0x25, 0xe6, 0x42, 0x55, 0x2b, 0xad, 0x61, 0xe4, 0xe2, 0xf7, 0x2d, + 0x4e, 0x0f, 0x2d, 0x48, 0x49, 0x2c, 0x49, 0x0d, 0x00, 0xcb, 0x08, 0x99, 0x71, 0x71, 0x26, 0x96, + 0x96, 0x64, 0xe4, 0x17, 0x65, 0x96, 0x54, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x3a, 0x49, 0x5c, + 0xda, 0xa2, 0x2b, 0x02, 0xb5, 0xc6, 0x31, 0x25, 0xa5, 0x28, 0xb5, 0xb8, 0x38, 0xb8, 0xa4, 0x28, + 0x33, 0x2f, 0x3d, 0x08, 0xa1, 0x54, 0xc8, 0x9c, 0x8b, 0x0d, 0x62, 0xb6, 0x04, 0x93, 0x02, 0xa3, + 0x06, 0xb7, 0x91, 0x88, 0x1e, 0xb2, 0x17, 0xf5, 0x20, 0xa6, 0x3b, 0x71, 0x9e, 0xb8, 0x27, 0xcf, + 0xb0, 0xe2, 0xf9, 0x06, 0x2d, 0xc6, 0x20, 0xa8, 0x72, 0x2b, 0x8d, 0xa6, 0xe7, 0x1b, 0xb4, 0x10, + 0x06, 0x75, 0x3d, 0xdf, 0xa0, 0x05, 0x0d, 0x34, 0x34, 0xa7, 0x29, 0x49, 0x72, 0x89, 0xa3, 0x09, + 0x05, 0xa5, 0x16, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x1a, 0x25, 0x71, 0x31, 0xfb, 0x16, 0xa7, 0x0b, + 0x85, 0x70, 0xf1, 0xa0, 0x78, 0x46, 0x16, 0xd5, 0x11, 0x68, 0xba, 0xa5, 0x54, 0xf1, 0x4a, 0xc3, + 0x0c, 0x97, 0x62, 0x6d, 0x00, 0x39, 0xd8, 0xc9, 0xfd, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, + 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, + 0xe5, 0x18, 0xa2, 0x74, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x9d, + 0x41, 0x26, 0xea, 0xfa, 0xa5, 0x96, 0x94, 0xe7, 0x17, 0x65, 0x43, 0x78, 0xfa, 0x65, 0xe6, 0xfa, + 0x15, 0xe0, 0x08, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0x87, 0xbe, 0x31, 0x20, 0x00, + 0x00, 0xff, 0xff, 0x44, 0xa0, 0x85, 0xe5, 0x1c, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/epochs/module.go b/x/epochs/module.go index e8d279b7d..25bd52de5 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -9,7 +9,6 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" abci "github.com/cometbft/cometbft/abci/types" @@ -68,9 +67,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod return genState.Validate() } -// RegisterRESTRoutes registers the epochs module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {} - // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) diff --git a/x/erc20/keeper/evm_hooks_test.go b/x/erc20/keeper/evm_hooks_test.go index e1cc54f3a..7763f0e5f 100644 --- a/x/erc20/keeper/evm_hooks_test.go +++ b/x/erc20/keeper/evm_hooks_test.go @@ -51,7 +51,6 @@ func (suite *KeeperTestSuite) setupRegisterCoin() (banktypes.Metadata, *types.To err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) suite.Require().NoError(err) - // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) suite.Require().NoError(err) suite.Commit() diff --git a/x/erc20/keeper/integration_test.go b/x/erc20/keeper/integration_test.go index d4ad59a32..763fe0acf 100644 --- a/x/erc20/keeper/integration_test.go +++ b/x/erc20/keeper/integration_test.go @@ -103,8 +103,6 @@ var _ = Describe("ERC20: Converting", Ordered, func() { BeforeEach(func() { _, pair = s.setupRegisterCoin() coin = sdk.NewCoin(pair.Denom, amt) - - // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom denom := "acanto" err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdk.TokensFromConsensusPower(100, ethermint.PowerReduction)))) @@ -164,8 +162,6 @@ var _ = Describe("ERC20: Converting", Ordered, func() { id := s.app.Erc20Keeper.GetTokenPairID(s.ctx, contract.String()) tokenPair, _ = s.app.Erc20Keeper.GetTokenPair(s.ctx, id) coin = sdk.NewCoin(tokenPair.Denom, amt) - - // denom := s.app.ClaimsKeeper.GetParams(s.ctx).ClaimsDenom denom := "acanto" //use default denom for claimsDenom err := testutil.FundAccount(s.app.BankKeeper, s.ctx, accAddr, sdk.NewCoins(sdk.NewCoin(denom, sdkmath.NewIntWithDecimal(1, 17)))) diff --git a/x/erc20/keeper/msg_server.go b/x/erc20/keeper/msg_server.go index f9d20a996..a8e9a3312 100644 --- a/x/erc20/keeper/msg_server.go +++ b/x/erc20/keeper/msg_server.go @@ -574,9 +574,6 @@ func (k Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) ctx := sdk.UnwrapSDKContext(goCtx) k.SetParams(ctx, req.Params) - //if err := k.SetParams(ctx, req.Params); err != nil { - // return nil, err - //} return &types.MsgUpdateParamsResponse{}, nil } diff --git a/x/erc20/keeper/msg_server_test.go b/x/erc20/keeper/msg_server_test.go index 98a0ce898..c23982c5a 100644 --- a/x/erc20/keeper/msg_server_test.go +++ b/x/erc20/keeper/msg_server_test.go @@ -71,7 +71,6 @@ func (suite *KeeperTestSuite) setupRegisterIBCVoucher() (banktypes.Metadata, *ty err := suite.app.BankKeeper.MintCoins(suite.ctx, inflationtypes.ModuleName, sdk.Coins{sdk.NewInt64Coin(validMetadata.Base, 1)}) suite.Require().NoError(err) - // pair := types.NewTokenPair(contractAddr, cosmosTokenBase, true, types.OWNER_MODULE) pair, err := suite.app.Erc20Keeper.RegisterCoin(suite.ctx, validMetadata) suite.Require().NoError(err) suite.Commit() diff --git a/x/erc20/module.go b/x/erc20/module.go index 0ff6065e3..34d7167e0 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -14,7 +14,6 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/Canto-Network/Canto/v7/x/erc20/keeper" @@ -65,10 +64,6 @@ func (b AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEnc return genesisState.Validate() } -// RegisterRESTRoutes performs a no-op as the erc20 module doesn't expose REST -// endpoints -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {} - func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), serveMux, types.NewQueryClient(c)); err != nil { panic(err) diff --git a/x/erc20/types/erc20.pb.go b/x/erc20/types/erc20.pb.go index e227de644..e5386699e 100644 --- a/x/erc20/types/erc20.pb.go +++ b/x/erc20/types/erc20.pb.go @@ -5,7 +5,6 @@ package types import ( fmt "fmt" - _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" @@ -272,7 +271,7 @@ func (m *RegisterERC20Proposal) GetErc20Address() string { // Deprecated: Do not use. type ToggleTokenConversionProposal struct { // title of the proposal - Title string `protobuf:"bytes,1,opt,name=Title,proto3" json:"Title,omitempty"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` // proposal description Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` // token identifier can be either the hex contract address of the ERC20 or the @@ -345,39 +344,39 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/erc20.proto", fileDescriptor_5c364669f6882b8b) } var fileDescriptor_5c364669f6882b8b = []byte{ - // 512 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0x31, 0x6b, 0xdb, 0x40, - 0x14, 0xc7, 0x75, 0x89, 0x93, 0x26, 0x97, 0xc4, 0xb8, 0x87, 0x0d, 0xaa, 0x21, 0xb2, 0x71, 0x17, - 0x53, 0xa8, 0x14, 0xbb, 0x43, 0x21, 0x14, 0x4a, 0xe2, 0xa8, 0xe0, 0x92, 0xd8, 0x46, 0x75, 0x68, - 0xe9, 0x62, 0xce, 0xd2, 0xa1, 0x0a, 0xdb, 0xf7, 0xcc, 0xe9, 0xa2, 0xb4, 0xf4, 0x0b, 0x74, 0xec, - 0xd6, 0x35, 0xd0, 0x7e, 0x98, 0x8c, 0x19, 0x3b, 0x95, 0x62, 0x2f, 0xf9, 0x18, 0x45, 0x77, 0x52, - 0x70, 0xb6, 0x42, 0xb6, 0xfb, 0xff, 0xff, 0x4f, 0x7a, 0x3f, 0xbd, 0x77, 0xc2, 0x55, 0x9f, 0x72, - 0x09, 0x0e, 0x13, 0x7e, 0xfb, 0xc0, 0x49, 0x5a, 0xfa, 0x60, 0xcf, 0x05, 0x48, 0x20, 0x45, 0x95, - 0xd9, 0xda, 0x4a, 0x5a, 0xd5, 0x72, 0x08, 0x21, 0xa8, 0xc8, 0x49, 0x4f, 0xba, 0xaa, 0xfa, 0xc4, - 0x87, 0x78, 0x06, 0xf1, 0x48, 0x07, 0x5a, 0x64, 0x91, 0xa5, 0x95, 0x33, 0xa6, 0x7c, 0xe2, 0x24, - 0xad, 0x31, 0x93, 0xb4, 0xa5, 0x84, 0xce, 0x1b, 0xbf, 0x10, 0xde, 0x1e, 0xc2, 0x84, 0xf1, 0x01, - 0x8d, 0x04, 0x79, 0x8a, 0xf7, 0x54, 0xab, 0x11, 0x0d, 0x02, 0xc1, 0xe2, 0xd8, 0x44, 0x75, 0xd4, - 0xdc, 0xf6, 0x76, 0x95, 0x79, 0xa4, 0x3d, 0x52, 0xc6, 0x1b, 0x01, 0xe3, 0x30, 0x33, 0xd7, 0x54, - 0xa8, 0x05, 0x31, 0xf1, 0x23, 0xc6, 0xe9, 0x78, 0xca, 0x02, 0x73, 0xbd, 0x8e, 0x9a, 0x5b, 0x5e, - 0x2e, 0xc9, 0x2b, 0x5c, 0xf4, 0x81, 0x4b, 0x41, 0x7d, 0x39, 0x82, 0x4b, 0xce, 0x84, 0x59, 0xa8, - 0xa3, 0x66, 0xb1, 0x5d, 0xb1, 0xef, 0x7f, 0x9c, 0xdd, 0x4f, 0x43, 0x6f, 0x2f, 0x2f, 0x56, 0xf2, - 0xb0, 0x70, 0x7b, 0x55, 0x43, 0x8d, 0x1f, 0x08, 0x97, 0x3d, 0x16, 0x46, 0xb1, 0x64, 0xa2, 0x03, - 0x11, 0x1f, 0x08, 0x98, 0x43, 0x4c, 0xa7, 0x29, 0x8c, 0x8c, 0xe4, 0x94, 0x65, 0xa4, 0x5a, 0x90, - 0x3a, 0xde, 0x09, 0x58, 0xec, 0x8b, 0x68, 0x2e, 0x23, 0xe0, 0x19, 0xe8, 0xaa, 0x45, 0x5e, 0xe3, - 0xad, 0x19, 0x93, 0x34, 0xa0, 0x92, 0x2a, 0xde, 0x9d, 0xf6, 0xbe, 0x9d, 0x0d, 0x4e, 0x4d, 0x27, - 0x1b, 0x95, 0x7d, 0x96, 0x15, 0x1d, 0x17, 0xae, 0xff, 0xd4, 0x0c, 0xef, 0xee, 0xa1, 0xc3, 0xcd, - 0xdb, 0xab, 0x9a, 0x61, 0xa2, 0xc6, 0x57, 0x5c, 0xc9, 0xc1, 0x5c, 0xaf, 0xd3, 0x3e, 0x78, 0x30, - 0x59, 0x03, 0xeb, 0x71, 0xe7, 0x2b, 0x58, 0x5f, 0x59, 0x41, 0xe6, 0xdd, 0x35, 0xbf, 0xc0, 0xfb, - 0x43, 0x08, 0xc3, 0x29, 0x53, 0x2b, 0xec, 0x00, 0x4f, 0x98, 0x88, 0x23, 0xb8, 0x37, 0x9e, 0xe1, - 0x2a, 0xc4, 0xf0, 0x3f, 0x21, 0x52, 0xf8, 0xf4, 0x95, 0x59, 0x77, 0x2d, 0xf2, 0xb6, 0xcf, 0xde, - 0xe2, 0x0d, 0xb5, 0x1c, 0x52, 0xc1, 0x8f, 0xfb, 0xef, 0x7b, 0xae, 0x37, 0x3a, 0xef, 0xbd, 0x1b, - 0xb8, 0x9d, 0xee, 0x9b, 0xae, 0x7b, 0x52, 0x32, 0x48, 0x09, 0xef, 0x6a, 0xfb, 0xac, 0x7f, 0x72, - 0x7e, 0xea, 0x96, 0x10, 0x21, 0xb8, 0xa8, 0x1d, 0xf7, 0xc3, 0xd0, 0xf5, 0x7a, 0x47, 0xa7, 0xa5, - 0xb5, 0x6a, 0xe1, 0xdb, 0x4f, 0xcb, 0x38, 0xee, 0x5e, 0x2f, 0x2c, 0x74, 0xb3, 0xb0, 0xd0, 0xdf, - 0x85, 0x85, 0xbe, 0x2f, 0x2d, 0xe3, 0x66, 0x69, 0x19, 0xbf, 0x97, 0x96, 0xf1, 0xd1, 0x09, 0x23, - 0xf9, 0xe9, 0x62, 0x6c, 0xfb, 0x30, 0x73, 0x3a, 0xe9, 0x4d, 0x79, 0xde, 0x63, 0xf2, 0x12, 0xc4, - 0x44, 0x2b, 0x27, 0x79, 0xe9, 0x7c, 0xce, 0xfe, 0x1a, 0xf9, 0x65, 0xce, 0xe2, 0xf1, 0xa6, 0xba, - 0xd2, 0x2f, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0xeb, 0x27, 0x63, 0x4b, 0x51, 0x03, 0x00, 0x00, + // 497 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x41, 0x6b, 0xdb, 0x30, + 0x14, 0xb6, 0xda, 0xb4, 0x6b, 0xd5, 0x36, 0x64, 0x22, 0x01, 0x13, 0xa8, 0x13, 0xb2, 0x4b, 0x18, + 0xcc, 0x6e, 0xb2, 0xc3, 0xa0, 0x0c, 0x46, 0x9b, 0x7a, 0x90, 0xd1, 0x26, 0xc1, 0x4b, 0xd9, 0xd8, + 0x25, 0xc8, 0xb6, 0xf0, 0x4c, 0x12, 0xbd, 0x20, 0xab, 0xee, 0xc6, 0xfe, 0xc0, 0x8e, 0xbb, 0xed, + 0x5a, 0xd8, 0x7e, 0x4c, 0x8f, 0x3d, 0xee, 0x34, 0x46, 0x72, 0xe9, 0xcf, 0x18, 0x96, 0xec, 0xd2, + 0x9e, 0x7b, 0xd3, 0xf7, 0x7d, 0x4f, 0x7a, 0x9f, 0xbf, 0xf7, 0x8c, 0xeb, 0x01, 0xe5, 0x12, 0x1c, + 0x26, 0x82, 0xee, 0x81, 0x93, 0x76, 0xf4, 0xc1, 0x5e, 0x08, 0x90, 0x40, 0xca, 0x4a, 0xb3, 0x35, + 0x95, 0x76, 0xea, 0xd5, 0x08, 0x22, 0x50, 0x92, 0x93, 0x9d, 0x74, 0x55, 0xdd, 0x0a, 0x20, 0x99, + 0x43, 0xe2, 0xf8, 0x94, 0x4f, 0x9d, 0xb4, 0xe3, 0x33, 0x49, 0x3b, 0x0a, 0x68, 0xbd, 0xf5, 0x1b, + 0xe1, 0xed, 0x31, 0x4c, 0x19, 0x1f, 0xd1, 0x58, 0x90, 0x67, 0x78, 0x4f, 0xbd, 0x37, 0xa1, 0x61, + 0x28, 0x58, 0x92, 0x98, 0xa8, 0x89, 0xda, 0xdb, 0xde, 0xae, 0x22, 0x8f, 0x34, 0x47, 0xaa, 0x78, + 0x23, 0x64, 0x1c, 0xe6, 0xe6, 0x9a, 0x12, 0x35, 0x20, 0x26, 0x7e, 0xc2, 0x38, 0xf5, 0x67, 0x2c, + 0x34, 0xd7, 0x9b, 0xa8, 0xbd, 0xe5, 0x15, 0x90, 0xbc, 0xc6, 0xe5, 0x00, 0xb8, 0x14, 0x34, 0x90, + 0x13, 0xb8, 0xe4, 0x4c, 0x98, 0xa5, 0x26, 0x6a, 0x97, 0xbb, 0x35, 0xfb, 0xe1, 0x17, 0xd8, 0xc3, + 0x4c, 0xf4, 0xf6, 0x8a, 0x62, 0x05, 0x0f, 0x4b, 0xb7, 0x57, 0x0d, 0xd4, 0xfa, 0x89, 0x70, 0xd5, + 0x63, 0x51, 0x9c, 0x48, 0x26, 0x7a, 0x10, 0xf3, 0x91, 0x80, 0x05, 0x24, 0x74, 0x96, 0x99, 0x91, + 0xb1, 0x9c, 0xb1, 0xdc, 0xa9, 0x06, 0xa4, 0x89, 0x77, 0x42, 0x96, 0x04, 0x22, 0x5e, 0xc8, 0x18, + 0x78, 0x6e, 0xf4, 0x3e, 0x45, 0xde, 0xe0, 0xad, 0x39, 0x93, 0x34, 0xa4, 0x92, 0x2a, 0xbf, 0x3b, + 0xdd, 0x7d, 0x5b, 0x47, 0x65, 0xab, 0x74, 0xf2, 0xa8, 0xec, 0xb3, 0xbc, 0xe8, 0xb8, 0x74, 0xfd, + 0xb7, 0x61, 0x78, 0x77, 0x97, 0x0e, 0x37, 0x6f, 0xaf, 0x1a, 0x86, 0x89, 0x5a, 0xdf, 0x70, 0xad, + 0x30, 0xe6, 0x7a, 0xbd, 0xee, 0xc1, 0xa3, 0x9d, 0xb5, 0xb0, 0x8e, 0xbb, 0x18, 0xc1, 0xfa, 0xbd, + 0x11, 0xe4, 0xdc, 0x5d, 0xf3, 0x0b, 0xbc, 0x3f, 0x86, 0x28, 0x9a, 0x31, 0x35, 0xc2, 0x1e, 0xf0, + 0x94, 0x89, 0x24, 0x86, 0xc7, 0xc7, 0x93, 0xdd, 0xcb, 0x9e, 0xcc, 0xbb, 0x6b, 0x50, 0xb4, 0x7d, + 0xfe, 0x0e, 0x6f, 0xa8, 0xe1, 0x90, 0x1a, 0x7e, 0x3a, 0xfc, 0x30, 0x70, 0xbd, 0xc9, 0xf9, 0xe0, + 0xfd, 0xc8, 0xed, 0xf5, 0xdf, 0xf6, 0xdd, 0x93, 0x8a, 0x41, 0x2a, 0x78, 0x57, 0xd3, 0x67, 0xc3, + 0x93, 0xf3, 0x53, 0xb7, 0x82, 0x08, 0xc1, 0x65, 0xcd, 0xb8, 0x1f, 0xc7, 0xae, 0x37, 0x38, 0x3a, + 0xad, 0xac, 0xd5, 0x4b, 0xdf, 0x7f, 0x59, 0xc6, 0x71, 0xff, 0x7a, 0x69, 0xa1, 0x9b, 0xa5, 0x85, + 0xfe, 0x2d, 0x2d, 0xf4, 0x63, 0x65, 0x19, 0x37, 0x2b, 0xcb, 0xf8, 0xb3, 0xb2, 0x8c, 0x4f, 0x4e, + 0x14, 0xcb, 0xcf, 0x17, 0xbe, 0x1d, 0xc0, 0xdc, 0xe9, 0x65, 0x9b, 0xf2, 0x62, 0xc0, 0xe4, 0x25, + 0x88, 0xa9, 0x46, 0x4e, 0xfa, 0xca, 0xf9, 0x92, 0xff, 0x1a, 0xf2, 0xeb, 0x82, 0x25, 0xfe, 0xa6, + 0x5a, 0xe9, 0x97, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x14, 0x66, 0x54, 0x36, 0x36, 0x03, 0x00, + 0x00, } func (this *TokenPair) Equal(that interface{}) bool { diff --git a/x/erc20/types/tx.pb.go b/x/erc20/types/tx.pb.go index 67578147f..4a2cf4225 100644 --- a/x/erc20/types/tx.pb.go +++ b/x/erc20/types/tx.pb.go @@ -15,7 +15,6 @@ import ( _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -567,7 +566,7 @@ type MsgToggleTokenConversion struct { // overwritten). Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` // title of the proposal - Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` // proposal description Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // token identifier can be either the hex contract address of the ERC20 or the @@ -690,61 +689,60 @@ func init() { func init() { proto.RegisterFile("canto/erc20/v1/tx.proto", fileDescriptor_3cff33f93a8dd3e5) } var fileDescriptor_3cff33f93a8dd3e5 = []byte{ - // 863 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xc7, 0x63, 0x9a, 0x8d, 0x36, 0x93, 0xd5, 0xee, 0x62, 0xa5, 0x69, 0x6a, 0xed, 0x3a, 0x51, - 0x84, 0x20, 0x14, 0x62, 0x37, 0x59, 0x01, 0x22, 0x17, 0x44, 0x22, 0x0e, 0x3d, 0x14, 0x55, 0x26, - 0x95, 0x10, 0x97, 0x32, 0x71, 0x46, 0xae, 0x95, 0x78, 0xc6, 0xf2, 0x4c, 0x43, 0x2b, 0x2e, 0x88, - 0x23, 0x27, 0xfe, 0x03, 0x7a, 0xe4, 0x84, 0x7a, 0xe8, 0x1f, 0xd1, 0x63, 0xa9, 0x84, 0x40, 0x20, - 0x55, 0xa8, 0x3d, 0xb4, 0x47, 0xfe, 0x04, 0x34, 0x3f, 0xe2, 0xd8, 0xa9, 0xfb, 0x43, 0x20, 0xed, - 0x25, 0xca, 0x7b, 0xdf, 0x37, 0x6f, 0xde, 0xe7, 0xcd, 0x9b, 0x91, 0xc1, 0x8a, 0x0b, 0x31, 0x23, - 0x36, 0x8a, 0xdc, 0xce, 0xba, 0x3d, 0x6d, 0xdb, 0x6c, 0xdf, 0x0a, 0x23, 0xc2, 0x88, 0xfe, 0x54, - 0x08, 0x96, 0x10, 0xac, 0x69, 0xdb, 0x78, 0xe1, 0x11, 0xe2, 0x4d, 0x90, 0x0d, 0x43, 0xdf, 0x86, - 0x18, 0x13, 0x06, 0x99, 0x4f, 0x30, 0x95, 0xd1, 0x46, 0xd9, 0x23, 0x1e, 0x11, 0x7f, 0x6d, 0xfe, - 0x4f, 0x79, 0x4d, 0x97, 0xd0, 0x80, 0x50, 0x7b, 0x08, 0x29, 0xb2, 0xa7, 0xed, 0x21, 0x62, 0xb0, - 0x6d, 0xbb, 0xc4, 0xc7, 0x37, 0x74, 0x3c, 0x8e, 0x75, 0x6e, 0x28, 0x7d, 0x55, 0xea, 0x3b, 0x32, - 0xb1, 0x34, 0x94, 0xb4, 0xa2, 0x96, 0x06, 0xd4, 0xe3, 0x65, 0x07, 0xd4, 0x53, 0xc2, 0x9b, 0x30, - 0xf0, 0x31, 0xb1, 0xc5, 0xaf, 0x72, 0xbd, 0x58, 0x60, 0xf4, 0x10, 0x46, 0xd4, 0x57, 0x99, 0x1a, - 0x3f, 0x69, 0xe0, 0xe9, 0x26, 0xf5, 0xfa, 0x04, 0x4f, 0x51, 0xc4, 0xfa, 0xc4, 0xc7, 0xfa, 0x2b, - 0x90, 0xe7, 0x55, 0x56, 0xb5, 0xba, 0xd6, 0x2c, 0x75, 0x56, 0x2d, 0xb5, 0x33, 0xc7, 0xb0, 0x54, - 0x99, 0x16, 0x0f, 0xec, 0xe5, 0x4f, 0xce, 0x6b, 0x39, 0x47, 0x04, 0xeb, 0x06, 0x78, 0x1c, 0x21, - 0x17, 0xf9, 0x53, 0x14, 0x55, 0xdf, 0xa8, 0x6b, 0xcd, 0xa2, 0x13, 0xdb, 0x7a, 0x05, 0x14, 0x28, - 0xc2, 0x23, 0x14, 0x55, 0x97, 0x84, 0xa2, 0xac, 0xee, 0x5b, 0xdf, 0x5f, 0x1d, 0xad, 0x29, 0xe3, - 0x87, 0xab, 0xa3, 0xb5, 0xb2, 0xac, 0x34, 0x5d, 0x4e, 0xa3, 0x0a, 0x2a, 0x69, 0x8f, 0x83, 0x68, - 0x48, 0x30, 0x45, 0x8d, 0x5f, 0x35, 0xf0, 0x6c, 0x2e, 0x7d, 0xe6, 0xf4, 0x3b, 0xeb, 0xfa, 0xbb, - 0xe0, 0xb9, 0x4b, 0x30, 0x8b, 0xa0, 0xcb, 0x76, 0xe0, 0x68, 0x14, 0x21, 0x4a, 0x05, 0x48, 0xd1, - 0x79, 0x36, 0xf3, 0x7f, 0x2a, 0xdd, 0x7a, 0x1f, 0x14, 0x60, 0x40, 0xf6, 0x30, 0x93, 0x05, 0xf7, - 0xde, 0xe3, 0x38, 0x7f, 0x9e, 0xd7, 0x96, 0x25, 0x30, 0x1d, 0x8d, 0x2d, 0x9f, 0xd8, 0x01, 0x64, - 0xbb, 0xd6, 0x06, 0x66, 0x67, 0xc7, 0x2d, 0xa0, 0x3a, 0xb1, 0x81, 0x99, 0xa3, 0x96, 0xa6, 0xb8, - 0x97, 0x6e, 0xe5, 0xce, 0xa7, 0xb8, 0x0d, 0x0e, 0xbb, 0xbc, 0x08, 0x2b, 0xea, 0x6f, 0xac, 0x82, - 0x95, 0x05, 0x57, 0x8c, 0xfb, 0x8b, 0xc4, 0xdd, 0x0e, 0x47, 0x90, 0xa1, 0x2d, 0x18, 0xc1, 0x80, - 0xea, 0x1f, 0x82, 0x22, 0xdc, 0x63, 0xbb, 0x24, 0xf2, 0xd9, 0x81, 0xe4, 0xec, 0x55, 0xcf, 0x8e, - 0x5b, 0x65, 0x55, 0xa9, 0x42, 0xfd, 0x82, 0x45, 0x3e, 0xf6, 0x9c, 0x79, 0xa8, 0xfe, 0x31, 0x28, - 0x84, 0x22, 0x83, 0x60, 0x2f, 0x75, 0x2a, 0x56, 0x7a, 0xe0, 0x2d, 0x99, 0xbf, 0x57, 0xe4, 0x3d, - 0xf9, 0xf9, 0xea, 0x68, 0x4d, 0x73, 0xd4, 0x82, 0x6e, 0x93, 0x9f, 0xda, 0x3c, 0x55, 0x9a, 0x25, - 0x59, 0x9c, 0x62, 0x49, 0xba, 0x62, 0x96, 0x7f, 0x24, 0x8b, 0x83, 0x3c, 0x9f, 0x32, 0x14, 0x89, - 0xb9, 0xfb, 0xaf, 0x2c, 0x65, 0xf0, 0x88, 0xf9, 0x6c, 0x82, 0xd4, 0xdc, 0x49, 0x43, 0xaf, 0x83, - 0xd2, 0x08, 0x51, 0x37, 0xf2, 0x43, 0x7e, 0x53, 0xd5, 0xd9, 0x24, 0x5d, 0xfa, 0x27, 0xe0, 0x71, - 0x80, 0x18, 0x1c, 0x41, 0x06, 0xc5, 0x01, 0x95, 0x3a, 0x2f, 0xe7, 0xb3, 0x8e, 0xc7, 0xf1, 0xac, - 0x6f, 0xaa, 0x20, 0x35, 0xef, 0xf1, 0xa2, 0xee, 0xfb, 0xd7, 0x87, 0xb5, 0xdc, 0x5d, 0xdd, 0x48, - 0xe2, 0xa9, 0x6e, 0x24, 0x5d, 0x71, 0x37, 0x7e, 0xd3, 0xc0, 0xf3, 0x84, 0x26, 0x27, 0xf9, 0x75, - 0xb7, 0xa3, 0x01, 0x9e, 0x88, 0xd3, 0x9f, 0xdd, 0x1a, 0x39, 0xb3, 0x29, 0x5f, 0xb7, 0x95, 0x4d, - 0x5c, 0xb9, 0x41, 0x2c, 0x87, 0xd9, 0x00, 0xd5, 0x45, 0x5f, 0xcc, 0xfc, 0xbb, 0x26, 0xc4, 0x01, - 0xf1, 0xbc, 0x09, 0x1a, 0x90, 0x31, 0xc2, 0x72, 0xe8, 0x29, 0xaf, 0xe5, 0x7f, 0xb0, 0x0f, 0x92, - 0xec, 0x83, 0x07, 0xb2, 0xf3, 0x9e, 0xf1, 0x12, 0x14, 0xb4, 0x34, 0xba, 0x1f, 0x5c, 0x1f, 0xd6, - 0xb4, 0x9b, 0xb4, 0x66, 0x4c, 0x9b, 0x59, 0x7c, 0xa3, 0x01, 0xea, 0xb7, 0x69, 0x33, 0xfa, 0xce, - 0x5f, 0x79, 0xb0, 0xb4, 0x49, 0x3d, 0x7d, 0x1b, 0x94, 0x92, 0x4f, 0xaf, 0xb9, 0x78, 0x0d, 0xd3, - 0x2f, 0x9f, 0xf1, 0xf6, 0xdd, 0xfa, 0x2c, 0xbd, 0xfe, 0x25, 0x78, 0x92, 0x7a, 0x15, 0x6b, 0xb7, - 0xaf, 0x13, 0x01, 0xc6, 0x3b, 0xf7, 0x04, 0x24, 0x33, 0xa7, 0x1e, 0xa0, 0xac, 0xcc, 0xc9, 0x80, - 0xcc, 0xcc, 0x59, 0x4f, 0x82, 0xfe, 0x35, 0x28, 0x27, 0x2f, 0xc7, 0x56, 0x44, 0x42, 0x42, 0xe1, - 0x24, 0x73, 0x87, 0x64, 0x60, 0xe6, 0x0e, 0x59, 0xd7, 0x4c, 0x77, 0xc1, 0x72, 0x6a, 0x16, 0xe3, - 0x2d, 0xea, 0x77, 0x64, 0x90, 0xfd, 0x69, 0xde, 0x17, 0x11, 0x6f, 0xf2, 0x2d, 0x78, 0x99, 0x79, - 0xf4, 0xf1, 0x66, 0x59, 0xa9, 0x32, 0x57, 0x18, 0xeb, 0x0f, 0x8d, 0x9c, 0x6d, 0x6e, 0x3c, 0xfa, - 0x8e, 0x3f, 0xd5, 0xbd, 0x8d, 0x93, 0x0b, 0x53, 0x3b, 0xbd, 0x30, 0xb5, 0xbf, 0x2f, 0x4c, 0xed, - 0xc7, 0x4b, 0x33, 0x77, 0x7a, 0x69, 0xe6, 0xfe, 0xb8, 0x34, 0x73, 0x5f, 0xd9, 0x9e, 0xcf, 0x76, - 0xf7, 0x86, 0x96, 0x4b, 0x02, 0xbb, 0xcf, 0x93, 0xb7, 0x3e, 0x47, 0xec, 0x1b, 0x12, 0x8d, 0xa5, - 0x65, 0x4f, 0x3f, 0xb2, 0xf7, 0xd5, 0xa7, 0x02, 0x3b, 0x08, 0x11, 0x1d, 0x16, 0xc4, 0x67, 0xc2, - 0xab, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xd3, 0x50, 0x09, 0x2a, 0x09, 0x00, 0x00, + // 839 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0x41, 0x4f, 0x1b, 0x47, + 0x14, 0xc7, 0xbd, 0xc5, 0x58, 0x78, 0x8c, 0x80, 0xae, 0x8c, 0x31, 0xab, 0xb2, 0xb6, 0xac, 0xaa, + 0x75, 0x69, 0xbd, 0x8b, 0x8d, 0xda, 0xaa, 0xbe, 0x54, 0xb5, 0xd5, 0x03, 0x07, 0x2a, 0xb4, 0x05, + 0xa9, 0xea, 0x85, 0x8e, 0xd7, 0xa3, 0x65, 0x65, 0x76, 0xc6, 0xda, 0x19, 0x5c, 0x50, 0x2e, 0x51, + 0x8e, 0x39, 0xe5, 0x1b, 0x84, 0x63, 0x4e, 0x11, 0x07, 0x3e, 0x04, 0x47, 0x82, 0x14, 0x25, 0x4a, + 0x24, 0x14, 0xc1, 0x01, 0x8e, 0xf9, 0x08, 0xd1, 0xce, 0x8c, 0xd7, 0xbb, 0x66, 0x81, 0x28, 0x07, + 0x2e, 0x96, 0xdf, 0xfb, 0xbf, 0x79, 0xf3, 0x7e, 0x6f, 0xde, 0x8c, 0x16, 0x2c, 0xd8, 0x10, 0x33, + 0x62, 0x22, 0xdf, 0x6e, 0xac, 0x98, 0x83, 0xba, 0xc9, 0xf6, 0x8d, 0xbe, 0x4f, 0x18, 0x51, 0x67, + 0xb8, 0x60, 0x70, 0xc1, 0x18, 0xd4, 0xb5, 0xbc, 0x43, 0x1c, 0xc2, 0x25, 0x33, 0xf8, 0x27, 0xa2, + 0x34, 0xdd, 0x26, 0xd4, 0x23, 0xd4, 0xec, 0x40, 0x8a, 0xcc, 0x41, 0xbd, 0x83, 0x18, 0xac, 0x9b, + 0x36, 0x71, 0xf1, 0x0d, 0x1d, 0xf7, 0x42, 0x3d, 0x30, 0xa4, 0xbe, 0x28, 0xf4, 0x6d, 0x91, 0x58, + 0x18, 0x52, 0x5a, 0x90, 0x4b, 0x3d, 0xea, 0x04, 0x85, 0x79, 0xd4, 0x91, 0xc2, 0xd7, 0xd0, 0x73, + 0x31, 0x31, 0xf9, 0xaf, 0x74, 0x7d, 0x33, 0x46, 0xe1, 0x20, 0x8c, 0xa8, 0x2b, 0x33, 0x55, 0x9e, + 0x2b, 0x60, 0x66, 0x9d, 0x3a, 0x6d, 0x82, 0x07, 0xc8, 0x67, 0x6d, 0xe2, 0x62, 0x75, 0x15, 0xa4, + 0x83, 0x2a, 0x8b, 0x4a, 0x59, 0xa9, 0xe6, 0x1a, 0x8b, 0x86, 0xdc, 0x39, 0xc0, 0x30, 0x64, 0x99, + 0x46, 0x10, 0xd8, 0x4a, 0x9f, 0x9c, 0x97, 0x52, 0x16, 0x0f, 0x56, 0x35, 0x30, 0xe5, 0x23, 0x1b, + 0xb9, 0x03, 0xe4, 0x17, 0xbf, 0x2a, 0x2b, 0xd5, 0xac, 0x15, 0xda, 0x6a, 0x01, 0x64, 0x28, 0xc2, + 0x5d, 0xe4, 0x17, 0x27, 0xb8, 0x22, 0xad, 0xe6, 0xb7, 0x4f, 0xae, 0x8e, 0x96, 0xa5, 0xf1, 0xf4, + 0xea, 0x68, 0x39, 0x2f, 0x2a, 0x8d, 0x97, 0x53, 0x29, 0x82, 0x42, 0xdc, 0x63, 0x21, 0xda, 0x27, + 0x98, 0xa2, 0xca, 0x2b, 0x05, 0xcc, 0x8e, 0xa4, 0x3f, 0xad, 0x76, 0x63, 0x45, 0xfd, 0x01, 0xcc, + 0xd9, 0x04, 0x33, 0x1f, 0xda, 0x6c, 0x1b, 0x76, 0xbb, 0x3e, 0xa2, 0x94, 0x83, 0x64, 0xad, 0xd9, + 0xa1, 0xff, 0x0f, 0xe1, 0x56, 0xdb, 0x20, 0x03, 0x3d, 0xb2, 0x87, 0x99, 0x28, 0xb8, 0xf5, 0x63, + 0x80, 0xf3, 0xee, 0xbc, 0x34, 0x2f, 0x80, 0x69, 0xb7, 0x67, 0xb8, 0xc4, 0xf4, 0x20, 0xdb, 0x31, + 0xd6, 0x30, 0x3b, 0x3b, 0xae, 0x01, 0xd9, 0x89, 0x35, 0xcc, 0x2c, 0xb9, 0x34, 0xc6, 0x3d, 0x71, + 0x2b, 0x77, 0x3a, 0xc6, 0xad, 0x05, 0xb0, 0xf3, 0xe3, 0xb0, 0xbc, 0xfe, 0xca, 0x22, 0x58, 0x18, + 0x73, 0x85, 0xb8, 0x2f, 0x05, 0xee, 0x56, 0xbf, 0x0b, 0x19, 0xda, 0x80, 0x3e, 0xf4, 0xa8, 0xfa, + 0x0b, 0xc8, 0xc2, 0x3d, 0xb6, 0x43, 0x7c, 0x97, 0x1d, 0x08, 0xce, 0x56, 0xf1, 0xec, 0xb8, 0x96, + 0x97, 0x95, 0x4a, 0xd4, 0xbf, 0x99, 0xef, 0x62, 0xc7, 0x1a, 0x85, 0xaa, 0xbf, 0x81, 0x4c, 0x9f, + 0x67, 0xe0, 0xec, 0xb9, 0x46, 0xc1, 0x88, 0x8f, 0xb4, 0x21, 0xf2, 0xb7, 0xb2, 0x41, 0x4f, 0x5e, + 0x5c, 0x1d, 0x2d, 0x2b, 0x96, 0x5c, 0xd0, 0xac, 0x06, 0xa7, 0x36, 0x4a, 0x15, 0x67, 0x89, 0x16, + 0x27, 0x59, 0xa2, 0xae, 0x90, 0xe5, 0xa3, 0x60, 0xb1, 0x90, 0xe3, 0x52, 0x86, 0x7c, 0x3e, 0x77, + 0x5f, 0xca, 0x92, 0x07, 0x93, 0xcc, 0x65, 0xbb, 0x48, 0xce, 0x9d, 0x30, 0xd4, 0x32, 0xc8, 0x75, + 0x11, 0xb5, 0x7d, 0xb7, 0xcf, 0x5c, 0x82, 0xe5, 0xd9, 0x44, 0x5d, 0xea, 0xef, 0x60, 0xca, 0x43, + 0x0c, 0x76, 0x21, 0x83, 0xfc, 0x80, 0x72, 0x8d, 0xa5, 0xd1, 0xac, 0xe3, 0x5e, 0x38, 0xeb, 0xeb, + 0x32, 0x48, 0xce, 0x7b, 0xb8, 0xa8, 0xf9, 0xd3, 0xf5, 0x61, 0x29, 0x75, 0x57, 0x37, 0xa2, 0x78, + 0xb2, 0x1b, 0x51, 0x57, 0xd8, 0x8d, 0xd7, 0x0a, 0x98, 0x8b, 0x68, 0x62, 0x92, 0x1f, 0xba, 0x1d, + 0x15, 0x30, 0xcd, 0x4f, 0x7f, 0x78, 0x6b, 0xc4, 0xcc, 0xc6, 0x7c, 0xcd, 0x5a, 0x32, 0x71, 0xe1, + 0x06, 0xb1, 0x18, 0x66, 0x0d, 0x14, 0xc7, 0x7d, 0x21, 0xf3, 0x1b, 0x85, 0x8b, 0x9b, 0xc4, 0x71, + 0x76, 0xd1, 0x26, 0xe9, 0x21, 0x2c, 0x86, 0x9e, 0x06, 0xb5, 0x3c, 0x34, 0x7b, 0xb0, 0x2e, 0x28, + 0x41, 0x42, 0x0b, 0xa3, 0xf9, 0xf3, 0xf5, 0x61, 0x49, 0xb9, 0x49, 0xab, 0x87, 0xb4, 0x89, 0xc5, + 0x57, 0x2a, 0xa0, 0x7c, 0x9b, 0x36, 0xa4, 0x6f, 0xbc, 0x4f, 0x83, 0x89, 0x75, 0xea, 0xa8, 0x5b, + 0x20, 0x17, 0x7d, 0x7a, 0xf5, 0xf1, 0x6b, 0x18, 0x7f, 0xf9, 0xb4, 0xef, 0xee, 0xd6, 0x87, 0xe9, + 0xd5, 0x7f, 0xc0, 0x74, 0xec, 0x55, 0x2c, 0xdd, 0xbe, 0x8e, 0x07, 0x68, 0xdf, 0xdf, 0x13, 0x10, + 0xcd, 0x1c, 0x7b, 0x80, 0x92, 0x32, 0x47, 0x03, 0x12, 0x33, 0x27, 0x3d, 0x09, 0xea, 0x7f, 0x20, + 0x1f, 0xbd, 0x1c, 0x1b, 0x3e, 0xe9, 0x13, 0x0a, 0x77, 0x13, 0x77, 0x88, 0x06, 0x26, 0xee, 0x90, + 0x74, 0xcd, 0x54, 0x1b, 0xcc, 0xc7, 0x66, 0x31, 0xdc, 0xa2, 0x7c, 0x47, 0x06, 0xd1, 0x9f, 0xea, + 0x7d, 0x11, 0xe1, 0x26, 0x8f, 0xc0, 0x52, 0xe2, 0xd1, 0x87, 0x9b, 0x25, 0xa5, 0x4a, 0x5c, 0xa1, + 0xad, 0x7c, 0x6e, 0xe4, 0x70, 0x73, 0x6d, 0xf2, 0x71, 0xf0, 0x54, 0xb7, 0xd6, 0x4e, 0x2e, 0x74, + 0xe5, 0xf4, 0x42, 0x57, 0x3e, 0x5c, 0xe8, 0xca, 0xb3, 0x4b, 0x3d, 0x75, 0x7a, 0xa9, 0xa7, 0xde, + 0x5e, 0xea, 0xa9, 0x7f, 0x4d, 0xc7, 0x65, 0x3b, 0x7b, 0x1d, 0xc3, 0x26, 0x9e, 0xd9, 0x0e, 0x92, + 0xd7, 0xfe, 0x42, 0xec, 0x7f, 0xe2, 0xf7, 0x84, 0x65, 0x0e, 0x7e, 0x35, 0xf7, 0xe5, 0xa7, 0x02, + 0x3b, 0xe8, 0x23, 0xda, 0xc9, 0xf0, 0xcf, 0x84, 0xd5, 0x4f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf2, + 0x95, 0xf4, 0xf9, 0x0c, 0x09, 0x00, 0x00, } func (this *MsgToggleTokenConversion) Equal(that interface{}) bool { diff --git a/x/govshuttle/keeper/keeper.go b/x/govshuttle/keeper/keeper.go index 0b888c392..6d5571370 100644 --- a/x/govshuttle/keeper/keeper.go +++ b/x/govshuttle/keeper/keeper.go @@ -55,7 +55,7 @@ func NewKeeper( } } -// GetAuthority returns the x/erc20 module's authority. +// GetAuthority returns the x/govshuttle module's authority. func (k Keeper) GetAuthority() string { return k.authority } diff --git a/x/govshuttle/module.go b/x/govshuttle/module.go index 8402d8aba..fc03d0060 100644 --- a/x/govshuttle/module.go +++ b/x/govshuttle/module.go @@ -6,7 +6,6 @@ import ( // this line is used by starport scaffolding # 1 - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" abci "github.com/cometbft/cometbft/abci/types" @@ -71,10 +70,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod return genState.Validate() } -// RegisterRESTRoutes registers the capability module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { -} - // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { // this line is used by starport scaffolding # 2 diff --git a/x/govshuttle/types/proposal.go b/x/govshuttle/types/proposal.go index ead5d9db6..93bd05b74 100644 --- a/x/govshuttle/types/proposal.go +++ b/x/govshuttle/types/proposal.go @@ -24,8 +24,6 @@ var ( func init() { govv1beta1.RegisterProposalType(ProposalTypeLendingMarket) govv1beta1.RegisterProposalType(ProposalTypeTreasury) - //govtypes.RegisterProposalTypeCodec(&LendingMarketProposal{}, "govshuttle/LendingMarketProposal") - //govtypes.RegisterProposalTypeCodec(&TreasuryProposal{}, "govshuttle/TreasuryProposal") } func NewLendingMarketProposal(title, description string, m *LendingMarketMetadata) govv1beta1.Content { diff --git a/x/inflation/keeper/integration_test.go b/x/inflation/keeper/integration_test.go index fb4ae33df..8388c53ac 100644 --- a/x/inflation/keeper/integration_test.go +++ b/x/inflation/keeper/integration_test.go @@ -221,8 +221,7 @@ var _ = Describe("Inflation", Ordered, func() { provision, _ := s.app.InflationKeeper.GetEpochMintProvision(s.ctx) s.CommitAfter(time.Minute) s.CommitAfter(time.Hour * 25) // epoch will have ended - //s.app.DistrKeeper.GetFeePoolCommunityCoins(s.ctx) //Get Fee Pool befor - // + valAddr, _ := sdk.ValAddressFromBech32(v.OperatorAddress) valBal, err := s.app.DistrKeeper.GetValidatorCurrentRewards(s.ctx, valAddr) s.Require().NoError(err) diff --git a/x/inflation/module.go b/x/inflation/module.go index bef6627d4..e8bff07eb 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -16,7 +16,6 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/Canto-Network/Canto/v7/x/inflation/keeper" @@ -70,10 +69,6 @@ func (b AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEnc return genesisState.Validate() } -// RegisterRESTRoutes performs a no-op as the inflation module doesn't expose REST -// endpoints -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {} - // RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the inflation module. func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), serveMux, types.NewQueryClient(c)); err != nil { diff --git a/x/inflation/types/tx.pb.go b/x/inflation/types/tx.pb.go index c8a2c4a90..c545a7f3f 100644 --- a/x/inflation/types/tx.pb.go +++ b/x/inflation/types/tx.pb.go @@ -12,7 +12,6 @@ import ( _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -137,31 +136,30 @@ func init() { func init() { proto.RegisterFile("canto/inflation/v1/tx.proto", fileDescriptor_3cd435bd13fdf9eb) } var fileDescriptor_3cd435bd13fdf9eb = []byte{ - // 379 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x51, 0xcf, 0x4b, 0x3a, 0x41, - 0x14, 0xdf, 0xf9, 0x7e, 0x49, 0x70, 0x0b, 0xa2, 0xc5, 0x50, 0xb7, 0xd8, 0xc4, 0x2e, 0x62, 0xb8, - 0x83, 0x0a, 0x05, 0x41, 0x87, 0xec, 0x6c, 0x84, 0xd1, 0xa5, 0x4b, 0x8d, 0x3a, 0x8d, 0x43, 0xee, - 0xbc, 0x65, 0x67, 0x34, 0xbd, 0x45, 0xc7, 0x4e, 0xfd, 0x19, 0x1d, 0x25, 0xfa, 0x23, 0x3c, 0x4a, - 0xa7, 0x4e, 0x11, 0x7a, 0xf0, 0xdf, 0x88, 0xfd, 0x51, 0x96, 0x79, 0xe8, 0xb2, 0xbc, 0xf7, 0x3e, - 0xef, 0xf3, 0x63, 0xe7, 0xe9, 0x1b, 0x0d, 0x22, 0x14, 0x60, 0x2e, 0xae, 0xda, 0x44, 0x71, 0x10, - 0xb8, 0x5b, 0xc4, 0xaa, 0x67, 0xbb, 0x1e, 0x28, 0x30, 0x8c, 0x00, 0xb4, 0xbf, 0x40, 0xbb, 0x5b, - 0x34, 0x37, 0x19, 0x00, 0x6b, 0x53, 0x4c, 0x5c, 0x8e, 0x89, 0x10, 0xa0, 0x02, 0x44, 0x86, 0x0c, - 0x33, 0xc1, 0x80, 0x41, 0x50, 0x62, 0xbf, 0x8a, 0xa6, 0xc9, 0x06, 0x48, 0x07, 0x24, 0x76, 0x24, - 0xf3, 0xf5, 0x1d, 0xc9, 0x22, 0x20, 0x1d, 0x02, 0x17, 0x21, 0x23, 0x6c, 0x22, 0x68, 0x8d, 0x38, - 0x5c, 0x00, 0x0e, 0xbe, 0xd1, 0x28, 0xb3, 0x20, 0x2b, 0xa3, 0x82, 0x4a, 0x1e, 0x91, 0xb2, 0x4f, - 0x48, 0x5f, 0xad, 0x4a, 0x76, 0xe6, 0x36, 0x89, 0xa2, 0x27, 0xc4, 0x23, 0x8e, 0x34, 0x76, 0xf5, - 0x38, 0xe9, 0xa8, 0x16, 0x78, 0x5c, 0xf5, 0x53, 0x28, 0x83, 0x72, 0xf1, 0x4a, 0xea, 0xe5, 0xb9, - 0x90, 0x88, 0xdc, 0x0e, 0x9b, 0x4d, 0x8f, 0x4a, 0x79, 0xaa, 0x3c, 0x2e, 0x58, 0x6d, 0xb6, 0x6a, - 0x1c, 0xe8, 0x31, 0x37, 0x50, 0x48, 0xfd, 0xcb, 0xa0, 0xdc, 0x72, 0xc9, 0xb4, 0x7f, 0xbf, 0x86, - 0x1d, 0x7a, 0x54, 0xe2, 0xc3, 0xb7, 0x2d, 0xed, 0x71, 0x3a, 0xc8, 0xa3, 0x5a, 0x44, 0xda, 0xcf, - 0xdd, 0x4d, 0x07, 0xf9, 0x99, 0xdc, 0xfd, 0x74, 0x90, 0x5f, 0x0f, 0xf3, 0xcf, 0x05, 0xcc, 0xa6, - 0xf5, 0xe4, 0xdc, 0xa8, 0x46, 0xa5, 0x0b, 0x42, 0xd2, 0x92, 0xd0, 0xff, 0x57, 0x25, 0x33, 0x2e, - 0xf5, 0x95, 0x1f, 0xbf, 0xb4, 0xbd, 0x28, 0xca, 0x9c, 0x86, 0xb9, 0xf3, 0x87, 0xa5, 0x4f, 0x23, - 0x73, 0xe9, 0xd6, 0x0f, 0x5f, 0xa9, 0x0e, 0xc7, 0x16, 0x1a, 0x8d, 0x2d, 0xf4, 0x3e, 0xb6, 0xd0, - 0xc3, 0xc4, 0xd2, 0x46, 0x13, 0x4b, 0x7b, 0x9d, 0x58, 0xda, 0x79, 0x99, 0x71, 0xd5, 0xea, 0xd4, - 0xed, 0x06, 0x38, 0xf8, 0xc8, 0xd7, 0x2d, 0x1c, 0x53, 0x75, 0x03, 0xde, 0x75, 0xd8, 0xe1, 0xee, - 0x1e, 0xee, 0x7d, 0xbb, 0x8c, 0xea, 0xbb, 0x54, 0xd6, 0x63, 0xc1, 0x55, 0xca, 0x1f, 0x01, 0x00, - 0x00, 0xff, 0xff, 0xaa, 0xc5, 0xe1, 0x5f, 0x65, 0x02, 0x00, 0x00, + // 360 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x4e, 0xcc, 0x2b, + 0xc9, 0xd7, 0xcf, 0xcc, 0x4b, 0xcb, 0x49, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0xd4, 0x2f, + 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x02, 0x4b, 0xea, 0xc1, 0x25, 0xf5, 0xca, + 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0xd2, 0xfa, 0x20, 0x16, 0x44, 0xa5, 0x94, 0x78, + 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0xb1, 0x7e, 0x6e, 0x71, 0x3a, 0xc8, 0x84, 0xdc, 0xe2, 0x74, 0xa8, + 0x84, 0x24, 0x44, 0x22, 0x1e, 0xa2, 0x03, 0xc2, 0x81, 0x4a, 0x09, 0x26, 0xe6, 0x66, 0xe6, 0xe5, + 0xeb, 0x83, 0x49, 0xa8, 0x90, 0x02, 0x16, 0xd7, 0xa4, 0xa7, 0xe6, 0xa5, 0x16, 0x67, 0x42, 0x35, + 0x29, 0x6d, 0x62, 0xe4, 0xe2, 0xf7, 0x2d, 0x4e, 0x0f, 0x2d, 0x48, 0x49, 0x2c, 0x49, 0x0d, 0x48, + 0x2c, 0x4a, 0xcc, 0x2d, 0x16, 0x32, 0xe3, 0xe2, 0x4c, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0xca, 0x2c, + 0xa9, 0x94, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x74, 0x92, 0xb8, 0xb4, 0x45, 0x57, 0x04, 0x6a, 0x9b, + 0x63, 0x4a, 0x4a, 0x51, 0x6a, 0x71, 0x71, 0x70, 0x49, 0x51, 0x66, 0x5e, 0x7a, 0x10, 0x42, 0xa9, + 0x90, 0x2d, 0x17, 0x5b, 0x01, 0xd8, 0x04, 0x09, 0x26, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x29, 0x3d, + 0x4c, 0xff, 0xea, 0x41, 0xec, 0x70, 0xe2, 0x3c, 0x71, 0x4f, 0x9e, 0x61, 0xc5, 0xf3, 0x0d, 0x5a, + 0x8c, 0x41, 0x50, 0x4d, 0x56, 0x1a, 0x4d, 0xcf, 0x37, 0x68, 0x21, 0x8c, 0xeb, 0x7a, 0xbe, 0x41, + 0x4b, 0x14, 0xe2, 0x7e, 0x34, 0x07, 0x2a, 0x49, 0x72, 0x89, 0xa3, 0x09, 0x05, 0xa5, 0x16, 0x17, + 0xe4, 0xe7, 0x15, 0xa7, 0x1a, 0xe5, 0x71, 0x31, 0xfb, 0x16, 0xa7, 0x0b, 0x25, 0x70, 0xf1, 0xa0, + 0x78, 0x49, 0x19, 0x9b, 0x53, 0xd0, 0xcc, 0x90, 0xd2, 0x26, 0x42, 0x11, 0xcc, 0x22, 0x29, 0xd6, + 0x06, 0x90, 0xe3, 0x9d, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, + 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, + 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0xdf, 0x19, 0x64, 0xae, 0xae, + 0x5f, 0x6a, 0x49, 0x79, 0x7e, 0x51, 0x36, 0x84, 0xa7, 0x5f, 0x66, 0xae, 0x5f, 0x81, 0x14, 0x33, + 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0x58, 0x31, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, + 0x57, 0x98, 0x79, 0x4c, 0x47, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/onboarding/ibc_module_test.go b/x/onboarding/ibc_module_test.go index 6b525c355..5dc9f870a 100644 --- a/x/onboarding/ibc_module_test.go +++ b/x/onboarding/ibc_module_test.go @@ -173,7 +173,7 @@ func (suite *TransferTestSuite) TestHandleMsgTransfer() { suite.Require().Equal(coinSentFromAToB.Amount.Sub(swapAmount), sdkmath.NewIntFromBigInt(balanceErc20)) // IBC transfer to blocked address - blockedAddr := "canto15jtrcjvkrtajx76zfnuf76vfnse4m4m7rhv5sc" // onboarding module + blockedAddr := "canto10d07y265gmmuvt4z0w9aw880jnsr700jg5j4zm" // gov module coinToSendToB = suite.chainA.GetSimApp().BankKeeper.GetBalance(suite.chainA.GetContext(), suite.chainA.SenderAccount.GetAddress(), sdk.DefaultBondDenom) msg = types.NewMsgTransfer(path.EndpointA.ChannelConfig.PortID, path.EndpointA.ChannelID, coinToSendToB, suite.chainA.SenderAccount.GetAddress().String(), blockedAddr, timeoutHeight, 0, "") diff --git a/x/onboarding/module.go b/x/onboarding/module.go index 4db847368..99527a41c 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -7,7 +7,6 @@ import ( "math/rand" "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" abci "github.com/cometbft/cometbft/abci/types" @@ -68,10 +67,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod return genesisState.Validate() } -// RegisterRESTRoutes performs a no-op as the onboarding module doesn't expose REST -// endpoints -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) {} - func (AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *runtime.ServeMux) { if err := types.RegisterQueryHandlerClient(context.Background(), serveMux, types.NewQueryClient(c)); err != nil { panic(err) diff --git a/x/onboarding/types/tx.pb.go b/x/onboarding/types/tx.pb.go index 93a36e65f..9618b7ebe 100644 --- a/x/onboarding/types/tx.pb.go +++ b/x/onboarding/types/tx.pb.go @@ -12,7 +12,6 @@ import ( _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -137,31 +136,30 @@ func init() { func init() { proto.RegisterFile("canto/onboarding/v1/tx.proto", fileDescriptor_245e19fcd2c68f2c) } var fileDescriptor_245e19fcd2c68f2c = []byte{ - // 383 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x51, 0x4f, 0x4b, 0x32, 0x41, - 0x18, 0xdf, 0x79, 0x5f, 0x5e, 0xc1, 0x7d, 0x83, 0x68, 0x33, 0xd4, 0x4d, 0x36, 0x93, 0x0e, 0x22, - 0xb9, 0x83, 0x16, 0x05, 0x1d, 0x82, 0xec, 0xac, 0x84, 0xd1, 0xa5, 0x4b, 0xcc, 0xba, 0xc3, 0x38, - 0xd4, 0xce, 0xb3, 0xec, 0x8c, 0xa6, 0xb7, 0xe8, 0xd8, 0xa9, 0x8f, 0xd1, 0x51, 0xa8, 0x0f, 0xe1, - 0x51, 0x3a, 0x75, 0x8a, 0xd0, 0x83, 0x5f, 0x23, 0xdc, 0xdd, 0xb0, 0xc4, 0x43, 0x97, 0x65, 0x9e, - 0xe7, 0xf7, 0xfc, 0xfe, 0x3c, 0xfb, 0xe8, 0xb9, 0x16, 0x11, 0x0a, 0x30, 0x08, 0x07, 0x48, 0xe0, - 0x72, 0xc1, 0x70, 0xb7, 0x82, 0x55, 0xcf, 0xf6, 0x03, 0x50, 0x60, 0xac, 0x87, 0xa8, 0x3d, 0x47, - 0xed, 0x6e, 0xc5, 0xcc, 0x31, 0x00, 0x76, 0x43, 0x31, 0xf1, 0x39, 0x26, 0x42, 0x80, 0x22, 0x8a, - 0x83, 0x90, 0x11, 0xc5, 0x4c, 0x31, 0x60, 0x10, 0x3e, 0xf1, 0xec, 0x15, 0x77, 0xd3, 0x2d, 0x90, - 0x1e, 0x48, 0xec, 0xc9, 0xd0, 0xc0, 0x93, 0x2c, 0x06, 0xb2, 0x11, 0x70, 0x15, 0x31, 0xa2, 0x22, - 0x86, 0xd6, 0x88, 0xc7, 0x05, 0xe0, 0xf0, 0x1b, 0xb7, 0xb6, 0x97, 0xa5, 0x65, 0x54, 0x50, 0xc9, - 0x63, 0x56, 0xe1, 0x19, 0xe9, 0xab, 0x75, 0xc9, 0x2e, 0x7c, 0x97, 0x28, 0x7a, 0x46, 0x02, 0xe2, - 0x49, 0xe3, 0x40, 0x4f, 0x92, 0x8e, 0x6a, 0x43, 0xc0, 0x55, 0x3f, 0x83, 0xf2, 0xa8, 0x98, 0xac, - 0x65, 0x5e, 0x5f, 0xca, 0xa9, 0xd8, 0xee, 0xc4, 0x75, 0x03, 0x2a, 0xe5, 0xb9, 0x0a, 0xb8, 0x60, - 0xcd, 0xf9, 0xa8, 0x71, 0xac, 0x27, 0xfc, 0x50, 0x21, 0xf3, 0x27, 0x8f, 0x8a, 0xff, 0xab, 0x9b, - 0xf6, 0x92, 0xff, 0x61, 0x47, 0x26, 0xb5, 0xe4, 0xf0, 0x7d, 0x4b, 0x7b, 0x9a, 0x0e, 0x4a, 0xa8, - 0x19, 0xb3, 0x8e, 0x8a, 0xf7, 0xd3, 0x41, 0x69, 0xae, 0xf7, 0x30, 0x1d, 0x94, 0x36, 0xa2, 0x0d, - 0x16, 0x12, 0x16, 0xb2, 0x7a, 0x7a, 0xa1, 0xd5, 0xa4, 0xd2, 0x07, 0x21, 0x69, 0xd5, 0xd7, 0xff, - 0xd6, 0x25, 0x33, 0x1c, 0x7d, 0xe5, 0xc7, 0x4e, 0x3b, 0x4b, 0xb3, 0x2c, 0x88, 0x98, 0xbb, 0xbf, - 0x99, 0xfa, 0xb2, 0x32, 0xff, 0xdd, 0xcd, 0xe2, 0xd7, 0x1a, 0xc3, 0xb1, 0x85, 0x46, 0x63, 0x0b, - 0x7d, 0x8c, 0x2d, 0xf4, 0x38, 0xb1, 0xb4, 0xd1, 0xc4, 0xd2, 0xde, 0x26, 0x96, 0x76, 0xb9, 0xcf, - 0xb8, 0x6a, 0x77, 0x1c, 0xbb, 0x05, 0x1e, 0x3e, 0x9d, 0x09, 0x97, 0x1b, 0x54, 0xdd, 0x42, 0x70, - 0x1d, 0x55, 0xb8, 0x7b, 0x88, 0x7b, 0xdf, 0xaf, 0xa3, 0xfa, 0x3e, 0x95, 0x4e, 0x22, 0xbc, 0xcc, - 0xde, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x02, 0xa9, 0xfe, 0x6c, 0x02, 0x00, 0x00, + // 360 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcc, 0x2b, + 0xc9, 0xd7, 0xcf, 0xcf, 0x4b, 0xca, 0x4f, 0x2c, 0x4a, 0xc9, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0xd4, + 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x06, 0xcb, 0xea, 0x21, 0x64, 0xf5, + 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0xf2, 0xfa, 0x20, 0x16, 0x44, 0xa9, 0x94, + 0x78, 0x72, 0x7e, 0x71, 0x6e, 0x7e, 0xb1, 0x7e, 0x6e, 0x31, 0xd8, 0x88, 0xdc, 0xe2, 0x74, 0xa8, + 0x84, 0x24, 0x44, 0x22, 0x1e, 0xa2, 0x03, 0xc2, 0x81, 0x4a, 0x09, 0x26, 0xe6, 0x66, 0xe6, 0xe5, + 0xeb, 0x83, 0x49, 0xa8, 0x90, 0x22, 0x36, 0xf7, 0xa4, 0xa7, 0xe6, 0xa5, 0x16, 0x67, 0x42, 0x75, + 0x29, 0x6d, 0x66, 0xe4, 0xe2, 0xf7, 0x2d, 0x4e, 0x0f, 0x2d, 0x48, 0x49, 0x2c, 0x49, 0x0d, 0x48, + 0x2c, 0x4a, 0xcc, 0x2d, 0x16, 0x32, 0xe3, 0xe2, 0x4c, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0xca, 0x2c, + 0xa9, 0x94, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x74, 0x92, 0xb8, 0xb4, 0x45, 0x57, 0x04, 0x6a, 0x9d, + 0x63, 0x4a, 0x4a, 0x51, 0x6a, 0x71, 0x71, 0x70, 0x49, 0x51, 0x66, 0x5e, 0x7a, 0x10, 0x42, 0xa9, + 0x90, 0x1d, 0x17, 0x5b, 0x01, 0xd8, 0x04, 0x09, 0x26, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x69, 0x3d, + 0x2c, 0x3e, 0xd6, 0x83, 0x58, 0xe2, 0xc4, 0x79, 0xe2, 0x9e, 0x3c, 0xc3, 0x8a, 0xe7, 0x1b, 0xb4, + 0x18, 0x83, 0xa0, 0xba, 0xac, 0x34, 0x9a, 0x9e, 0x6f, 0xd0, 0x42, 0x98, 0xd7, 0xf5, 0x7c, 0x83, + 0x96, 0x28, 0xc4, 0x07, 0x68, 0x2e, 0x54, 0x92, 0xe4, 0x12, 0x47, 0x13, 0x0a, 0x4a, 0x2d, 0x2e, + 0xc8, 0xcf, 0x2b, 0x4e, 0x35, 0x2a, 0xe0, 0x62, 0xf6, 0x2d, 0x4e, 0x17, 0x4a, 0xe2, 0xe2, 0x41, + 0xf1, 0x93, 0x0a, 0x56, 0xb7, 0xa0, 0x19, 0x22, 0xa5, 0x43, 0x8c, 0x2a, 0x98, 0x55, 0x52, 0xac, + 0x0d, 0x20, 0xe7, 0x3b, 0xf9, 0x9d, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, + 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, + 0x49, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0xbe, 0x33, 0xc8, 0x60, 0x5d, + 0xbf, 0xd4, 0x92, 0xf2, 0xfc, 0xa2, 0x6c, 0x08, 0x4f, 0xbf, 0xcc, 0x5c, 0xbf, 0x02, 0x39, 0x76, + 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x31, 0x63, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, + 0xf5, 0xc3, 0xb9, 0x64, 0x4e, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From 36053ab74ff89f69258480fd83266c1e127e4200 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Sun, 12 May 2024 22:20:24 +0900 Subject: [PATCH 88/96] chore: Bump up ethermint --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 04cc873d0..63752f95d 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index d075b7583..ed360263b 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927 h1:S6t+7hP138ag45KCxrUnKif/gMumkjr6LiiQVz6vCa4= -github.com/b-harvest/ethermint v0.0.0-20240510033229-2bfcbf4da927/go.mod h1:rDpY5NJw21HOAkydMFeexE2jmvKtZXhP9ycsvGC42WA= +github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233 h1:go6Ub71i/QNsQqUZP24v5sFNQTuu2Txe68I7XirdCWI= +github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233/go.mod h1:rDpY5NJw21HOAkydMFeexE2jmvKtZXhP9ycsvGC42WA= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From 38a6092436d892d92c684e96050e505eedb2a3c6 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Mon, 13 May 2024 12:52:26 +0900 Subject: [PATCH 89/96] feat: Remove NewValidatorCommissionDecorator and set min_commission_rate to upgrade handler --- app/ante/comission.go | 85 ------------------------------------- app/ante/handler_options.go | 3 -- app/app.go | 1 + app/upgrades/v8/upgrades.go | 13 ++++++ 4 files changed, 14 insertions(+), 88 deletions(-) delete mode 100644 app/ante/comission.go diff --git a/app/ante/comission.go b/app/ante/comission.go deleted file mode 100644 index db246f7e1..000000000 --- a/app/ante/comission.go +++ /dev/null @@ -1,85 +0,0 @@ -package ante - -import ( - errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/authz" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -var minCommission = sdkmath.LegacyNewDecWithPrec(5, 2) // 5% - -// TODO: remove once Cosmos SDK is upgraded to v0.46 - -// ValidatorCommissionDecorator validates that the validator commission is always -// greater or equal than the min commission rate -type ValidatorCommissionDecorator struct { - cdc codec.BinaryCodec -} - -// NewValidatorCommissionDecorator creates a new NewValidatorCommissionDecorator -func NewValidatorCommissionDecorator(cdc codec.BinaryCodec) ValidatorCommissionDecorator { - return ValidatorCommissionDecorator{ - cdc: cdc, - } -} - -// AnteHandle checks if the tx contains a staking create validator or edit validator. -// It errors if the the commission rate is below the min threshold. -func (vcd ValidatorCommissionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { - for _, msg := range tx.GetMsgs() { - switch msg := msg.(type) { - case *authz.MsgExec: - // Check for bypassing authorization - if err := vcd.validateAuthz(ctx, msg); err != nil { - return ctx, err - } - - default: - if err := vcd.validateMsg(ctx, msg); err != nil { - return ctx, err - } - } - } - - return next(ctx, tx, simulate) -} - -// validateAuthz validates the authorization internal message -func (vcd ValidatorCommissionDecorator) validateAuthz(ctx sdk.Context, execMsg *authz.MsgExec) error { - for _, v := range execMsg.Msgs { - var innerMsg sdk.Msg - err := vcd.cdc.UnpackAny(v, &innerMsg) - if err != nil { - return errorsmod.Wrap(err, "cannot unmarshal authz exec msgs") - } - - if err := vcd.validateMsg(ctx, innerMsg); err != nil { - return err - } - } - - return nil -} - -// validateMsg checks that the commission rate is over 5% for create and edit validator msgs -func (vcd ValidatorCommissionDecorator) validateMsg(_ sdk.Context, msg sdk.Msg) error { - switch msg := msg.(type) { - case *stakingtypes.MsgCreateValidator: - if msg.Commission.Rate.LT(minCommission) { - return errorsmod.Wrapf( - sdkerrors.ErrInvalidRequest, - "validator commission %s be lower than minimum of %s", msg.Commission.Rate, minCommission) - } - case *stakingtypes.MsgEditValidator: - if msg.CommissionRate != nil && msg.CommissionRate.LT(minCommission) { - return errorsmod.Wrapf( - sdkerrors.ErrInvalidRequest, - "validator commission %s be lower than minimum of %s", msg.CommissionRate, minCommission) - } - } - return nil -} diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index f71b53ca7..365ecd915 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -87,7 +87,6 @@ func newCosmosAnteHandler(options HandlerOptions) sdk.AnteHandler { ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), - NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), @@ -114,7 +113,6 @@ func newCosmosSimulationAnteHandler(options HandlerOptions) sdk.AnteHandler { ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), // NewParamChangeLimitDecorator(options.SlashingKeeper, options.Cdc), ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), - // NewValidatorCommissionDecorator(options.Cdc), //ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), //ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), @@ -138,7 +136,6 @@ func newCosmosAnteHandlerEip712(options HandlerOptions) sdk.AnteHandler { ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, nil), - NewValidatorCommissionDecorator(options.Cdc), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), diff --git a/app/app.go b/app/app.go index b83c728a0..ce44812ff 100644 --- a/app/app.go +++ b/app/app.go @@ -1392,6 +1392,7 @@ func (app *Canto) setupUpgradeHandlers() { app.ConsensusParamsKeeper.ParamsStore, app.configurator, app.IBCKeeper.ClientKeeper, + app.StakingKeeper, ), ) diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 7c3d73264..13ee260da 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -4,12 +4,14 @@ import ( "context" "cosmossdk.io/collections" + sdkmath "cosmossdk.io/math" upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/cometbft/cometbft/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" clientkeeper "github.com/cosmos/ibc-go/v8/modules/core/02-client/keeper" "github.com/cosmos/ibc-go/v8/modules/core/exported" ) @@ -21,6 +23,7 @@ func CreateUpgradeHandler( consensusParamsStore collections.Item[types.ConsensusParams], configurator module.Configurator, clientKeeper clientkeeper.Keeper, + stakingKeeper *stakingkeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { sdkCtx := sdk.UnwrapSDKContext(ctx) @@ -47,6 +50,16 @@ func CreateUpgradeHandler( return vm, err } + // canto v8 custom + { + params, err := stakingKeeper.GetParams(ctx) + if err != nil { + return vm, err + } + params.MinCommissionRate = sdkmath.LegacyNewDecWithPrec(5, 2) // 5% + stakingKeeper.SetParams(ctx, params) + } + // Leave modules are as-is to avoid running InitGenesis. logger.Debug("running module migrations ...") return mm.RunMigrations(ctx, configurator, vm) From e2b7df2edfdf9bf33abbcdc2d95a4dd1a8e2eca4 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Mon, 13 May 2024 16:28:50 +0900 Subject: [PATCH 90/96] test: Add v7 -> v8 upgrade unit test --- app/upgrades/v7/upgrades_test.go | 73 ++++++++++------ app/upgrades/v8/upgrades.go | 4 +- app/upgrades/v8/upgrades_test.go | 145 +++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 28 deletions(-) create mode 100644 app/upgrades/v8/upgrades_test.go diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index 75c70f859..cdd811d74 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -48,14 +48,13 @@ func (s *UpgradeTestSuite) SetupTest() { // Set Validator valAddr := sdk.ValAddress(s.consAddress.Bytes()) validator, err := stakingtypes.NewValidator(valAddr.String(), priv.PubKey(), stakingtypes.Description{}) - s.NoError(err) + s.Require().NoError(err) validator = stakingkeeper.TestingUpdateValidator(s.app.StakingKeeper, s.ctx, validator, true) valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) - s.NoError(err) + s.Require().NoError(err) s.app.StakingKeeper.Hooks().AfterValidatorCreated(s.ctx, valbz) err = s.app.StakingKeeper.SetValidatorByConsAddr(s.ctx, validator) - s.NoError(err) - + s.Require().NoError(err) } func TestKeeperTestSuite(t *testing.T) { @@ -76,22 +75,15 @@ func (s *UpgradeTestSuite) TestUpgradeV7() { func() {}, func() { coinswapParams := s.app.CoinswapKeeper.GetParams(s.ctx) - s.Require().EqualValues( - coinswapParams.PoolCreationFee, coinswaptypes.DefaultPoolCreationFee) - s.Require().EqualValues( - coinswapParams.MaxSwapAmount, coinswaptypes.DefaultMaxSwapAmount) - s.Require().EqualValues( - coinswapParams.MaxStandardCoinPerPool, coinswaptypes.DefaultMaxStandardCoinPerPool) - s.Require().EqualValues( - coinswapParams.Fee, coinswaptypes.DefaultFee) - s.Require().EqualValues( - coinswapParams.TaxRate, coinswaptypes.DefaultTaxRate) + s.Require().Equal(coinswapParams.PoolCreationFee, coinswaptypes.DefaultPoolCreationFee) + s.Require().Equal(coinswapParams.MaxSwapAmount, coinswaptypes.DefaultMaxSwapAmount) + s.Require().Equal(coinswapParams.MaxStandardCoinPerPool, coinswaptypes.DefaultMaxStandardCoinPerPool) + s.Require().Equal(coinswapParams.Fee, coinswaptypes.DefaultFee) + s.Require().Equal(coinswapParams.TaxRate, coinswaptypes.DefaultTaxRate) onboardingParams := s.app.OnboardingKeeper.GetParams(s.ctx) - s.Require().EqualValues( - onboardingParams.AutoSwapThreshold, onboardingtypes.DefaultAutoSwapThreshold) - s.Require().EqualValues( - onboardingParams.WhitelistedChannels, onboardingtypes.DefaultWhitelistedChannels) + s.Require().Equal(onboardingParams.AutoSwapThreshold, onboardingtypes.DefaultAutoSwapThreshold) + s.Require().Equal(onboardingParams.WhitelistedChannels, onboardingtypes.DefaultWhitelistedChannels) }, true, }, @@ -100,25 +92,52 @@ func (s *UpgradeTestSuite) TestUpgradeV7() { for _, tc := range testCases { s.Run(tc.title, func() { s.SetupTest() - tc.before() - s.ctx = s.ctx.WithBlockHeight(testUpgradeHeight - 1) + // proceed with the block until the test upgrade height + for s.ctx.BlockHeight() < testUpgradeHeight { + err := s.Commit() + s.Require().NoError(err) + } + + // simulate binary upgrade plan := upgradetypes.Plan{Name: v7.UpgradeName, Height: testUpgradeHeight} err := s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, plan) s.Require().NoError(err) _, err = s.app.UpgradeKeeper.GetUpgradePlan(s.ctx) s.Require().NoError(err) - s.ctx = s.ctx.WithBlockHeight(testUpgradeHeight) - s.Require().NotPanics(func() { - s.ctx.WithProposer(s.consAddress) - s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ - Height: s.app.LastBlockHeight() + 1, - }) - }) + // execute upgrade handler + err = s.Commit() + s.Require().NoError(err) tc.after() }) } } + +func (s *UpgradeTestSuite) Commit() error { + header := s.ctx.BlockHeader() + if _, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }); err != nil { + return err + } + + if _, err := s.app.Commit(); err != nil { + return err + } + + header.Height += 1 + if _, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }); err != nil { + return err + } + + // update ctx + s.ctx = s.app.BaseApp.NewContextLegacy(false, header) + + return nil +} diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 13ee260da..2cebc8e38 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -16,6 +16,8 @@ import ( "github.com/cosmos/ibc-go/v8/modules/core/exported" ) +var MinCommissionRate = sdkmath.LegacyNewDecWithPrec(5, 2) // 5% + // CreateUpgradeHandler creates an SDK upgrade handler for v8 func CreateUpgradeHandler( mm *module.Manager, @@ -56,7 +58,7 @@ func CreateUpgradeHandler( if err != nil { return vm, err } - params.MinCommissionRate = sdkmath.LegacyNewDecWithPrec(5, 2) // 5% + params.MinCommissionRate = MinCommissionRate stakingKeeper.SetParams(ctx, params) } diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go new file mode 100644 index 000000000..d78439067 --- /dev/null +++ b/app/upgrades/v8/upgrades_test.go @@ -0,0 +1,145 @@ +package v8_test + +import ( + "testing" + "time" + + "github.com/stretchr/testify/suite" + + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + + "github.com/evmos/ethermint/crypto/ethsecp256k1" + feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" + + abci "github.com/cometbft/cometbft/abci/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + + chain "github.com/Canto-Network/Canto/v7/app" + v8 "github.com/Canto-Network/Canto/v7/app/upgrades/v8" +) + +type UpgradeTestSuite struct { + suite.Suite + ctx sdk.Context + app *chain.Canto + consAddress sdk.ConsAddress +} + +func (s *UpgradeTestSuite) SetupTest() { + // consensus key + priv, err := ethsecp256k1.GenerateKey() + s.Require().NoError(err) + s.consAddress = sdk.ConsAddress(priv.PubKey().Address()) + + s.app = chain.Setup(false, feemarkettypes.DefaultGenesisState()) + + s.ctx = s.app.BaseApp.NewContextLegacy(false, cmtproto.Header{ + ChainID: "canto_9001-1", + Height: 1, + Time: time.Date(2023, 5, 9, 8, 0, 0, 0, time.UTC), + ProposerAddress: s.consAddress.Bytes(), + }) + + // In the upgrade to comsos-sdk v0.47.x, the migration from subspace + // to ParamsStore of the consensus module should be performed. Since + // the upgrade of binaries does not happen in unittest, it is necessary + // to set the required values into subspace to prevent panic. + bz := s.app.AppCodec().MustMarshalJSON(chain.DefaultConsensusParams.Block) + sp, ok := s.app.ParamsKeeper.GetSubspace(baseapp.Paramspace) + s.Require().True(ok) + err = sp.Update(s.ctx, baseapp.ParamStoreKeyBlockParams, bz) + s.Require().NoError(err) + + // Set Validator + valAddr := sdk.ValAddress(s.consAddress.Bytes()) + validator, err := stakingtypes.NewValidator(valAddr.String(), priv.PubKey(), stakingtypes.Description{}) + s.Require().NoError(err) + validator = stakingkeeper.TestingUpdateValidator(s.app.StakingKeeper, s.ctx, validator, true) + valbz, err := s.app.StakingKeeper.ValidatorAddressCodec().StringToBytes(validator.GetOperator()) + s.Require().NoError(err) + s.app.StakingKeeper.Hooks().AfterValidatorCreated(s.ctx, valbz) + err = s.app.StakingKeeper.SetValidatorByConsAddr(s.ctx, validator) + s.Require().NoError(err) +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +const testUpgradeHeight = 10 + +func (s *UpgradeTestSuite) TestUpgradeV8() { + testCases := []struct { + title string + before func() + after func() + expPass bool + }{ + { + "v8 upgrade min_commission_rate", + func() {}, + func() { + params, err := s.app.StakingKeeper.GetParams(s.ctx) + s.Require().NoError(err) + s.Require().Equal(v8.MinCommissionRate, params.MinCommissionRate) + }, + true, + }, + } + + for _, tc := range testCases { + s.Run(tc.title, func() { + s.SetupTest() + tc.before() + + // proceed with the block until the test upgrade height + for s.ctx.BlockHeight() < testUpgradeHeight { + err := s.Commit() + s.Require().NoError(err) + } + + // simulate binary upgrade + plan := upgradetypes.Plan{Name: v8.UpgradeName, Height: testUpgradeHeight} + err := s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, plan) + s.Require().NoError(err) + _, err = s.app.UpgradeKeeper.GetUpgradePlan(s.ctx) + s.Require().NoError(err) + + // execute upgrade handler + err = s.Commit() + s.Require().NoError(err) + + tc.after() + }) + } +} + +func (s *UpgradeTestSuite) Commit() error { + header := s.ctx.BlockHeader() + if _, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + }); err != nil { + return err + } + + if _, err := s.app.Commit(); err != nil { + return err + } + + header.Height += 1 + if _, err := s.app.FinalizeBlock(&abci.RequestFinalizeBlock{ + Height: header.Height, + Time: header.Time, + }); err != nil { + return err + } + + // update ctx + s.ctx = s.app.BaseApp.NewContextLegacy(false, header) + + return nil +} From 37b9b93c4e880a6ef0cdc4c1aea50711472e6a5e Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Mon, 13 May 2024 17:16:47 +0900 Subject: [PATCH 91/96] Revert "feat: Apply autocli" This reverts commit fad4908e41d4aaa8b457422f7bc801adb9146c4e. --- x/coinswap/autocli.go | 84 ----- x/coinswap/client/cli/query.go | 155 ++++++++++ x/coinswap/client/cli/tx.go | 173 +++++++++++ x/coinswap/module.go | 13 + x/csr/autocli.go | 68 ----- x/csr/client/cli/query.go | 194 ++++++++++++ x/csr/client/cli/tx.go | 23 ++ x/csr/module.go | 12 + x/epochs/autocli.go | 40 --- x/epochs/client/cli/query.go | 109 +++++++ x/epochs/module.go | 12 + x/erc20/autocli.go | 80 ----- x/erc20/client/cli/query.go | 128 ++++++++ x/erc20/client/cli/tx.go | 391 ++++++++++++++++++++++++ x/erc20/client/cli/utils.go | 25 ++ x/erc20/module.go | 12 + x/govshuttle/autocli.go | 27 -- x/govshuttle/client/cli/query.go | 31 ++ x/govshuttle/client/cli/query_params.go | 34 +++ x/govshuttle/client/cli/tx.go | 204 +++++++++++++ x/govshuttle/client/cli/utils.go | 55 ++++ x/govshuttle/module.go | 12 + x/inflation/autocli.go | 52 ---- x/inflation/client/cli/query.go | 206 +++++++++++++ x/inflation/module.go | 10 + x/onboarding/autocli.go | 27 -- x/onboarding/client/cli/query.go | 58 ++++ x/onboarding/module.go | 10 + 28 files changed, 1867 insertions(+), 378 deletions(-) delete mode 100644 x/coinswap/autocli.go create mode 100644 x/coinswap/client/cli/query.go create mode 100644 x/coinswap/client/cli/tx.go delete mode 100644 x/csr/autocli.go create mode 100644 x/csr/client/cli/query.go create mode 100644 x/csr/client/cli/tx.go delete mode 100644 x/epochs/autocli.go create mode 100644 x/epochs/client/cli/query.go delete mode 100644 x/erc20/autocli.go create mode 100644 x/erc20/client/cli/query.go create mode 100644 x/erc20/client/cli/tx.go create mode 100644 x/erc20/client/cli/utils.go delete mode 100644 x/govshuttle/autocli.go create mode 100644 x/govshuttle/client/cli/query.go create mode 100644 x/govshuttle/client/cli/query_params.go create mode 100644 x/govshuttle/client/cli/tx.go create mode 100644 x/govshuttle/client/cli/utils.go delete mode 100644 x/inflation/autocli.go create mode 100644 x/inflation/client/cli/query.go delete mode 100644 x/onboarding/autocli.go create mode 100644 x/onboarding/client/cli/query.go diff --git a/x/coinswap/autocli.go b/x/coinswap/autocli.go deleted file mode 100644 index bb2bd12ce..000000000 --- a/x/coinswap/autocli.go +++ /dev/null @@ -1,84 +0,0 @@ -package coinswap - -import ( - "fmt" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - "github.com/cosmos/cosmos-sdk/version" - - coinswapv1 "github.com/Canto-Network/Canto/v7/api/canto/coinswap/v1" - "github.com/Canto-Network/Canto/v7/x/coinswap/types" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: coinswapv1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "Params", - Use: "params", - Short: "Query the current coinswap parameters information", - Example: fmt.Sprintf("%s query %s params", version.AppName, types.ModuleName), - }, - { - RpcMethod: "LiquidityPool", - Use: "liquidity-pool [liquidity pool denom]", - Short: "Query proposals with optional filters", - Example: fmt.Sprintf("%s query %s liquidity-pool lpt-1", version.AppName, types.ModuleName), - }, - { - RpcMethod: "LiquidityPools", - Use: "liquidity-pools", - Short: "query all liquidity pools", - Example: fmt.Sprintf("%s query %s liquidity-pools", version.AppName, types.ModuleName), - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - Service: coinswapv1.Msg_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "AddLiquidity", - Use: "add-liquidity [max-coin] [standard-coin-amount] [minimum-liquidity] [duration]", - Short: "Add liquidity to a pool", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "max_token"}, - {ProtoField: "exact_standard_amt"}, - {ProtoField: "min_liquidity"}, - {ProtoField: "deadline"}, - }, - }, - { - RpcMethod: "RemoveLiquidity", - Use: "remove-liquidity [min output coin amount] [liquidity coin to withdraw] [min output standard coin amount] [duration]", - Short: "Remove liquidity from a pair", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "withdraw_liquidity"}, - {ProtoField: "min_token"}, - {ProtoField: "min_standard_amt"}, - {ProtoField: "deadline"}, - }, - }, - { - RpcMethod: "SwapCoin", - Use: "swap [input coin] [output coin] [isBuyOrder] [duration]", - Short: "Remove liquidity from a pair", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "input"}, - {ProtoField: "output"}, - {ProtoField: "deadline"}, - {ProtoField: "is_buy_order"}, - }, - }, - { - RpcMethod: "UpdateParams", - Skip: true, - }, - }, - }, - } -} diff --git a/x/coinswap/client/cli/query.go b/x/coinswap/client/cli/query.go new file mode 100644 index 000000000..5b85ebc32 --- /dev/null +++ b/x/coinswap/client/cli/query.go @@ -0,0 +1,155 @@ +package cli + +import ( + "fmt" + "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/version" + + "github.com/Canto-Network/Canto/v7/x/coinswap/types" +) + +// GetQueryCmd returns the cli query commands for this module +func GetQueryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + NewQueryParamsCmd(), + GetCmdQueryLiquidityPools(), + GetCmdQueryLiquidityPool(), + ) + + return cmd +} + +// NewQueryParamsCmd implements the params query command. +func NewQueryParamsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Args: cobra.NoArgs, + Short: "Query the current coinswap parameters information", + Long: strings.TrimSpace( + fmt.Sprintf(`Query values set as coinswap parameters. + +Example: +$ %s query %s params +`, + version.AppName, types.ModuleName, + ), + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + resp, err := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + + return clientCtx.PrintProto(&resp.Params) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func GetCmdQueryLiquidityPools() *cobra.Command { + cmd := &cobra.Command{ + Use: "liquidity-pools", + Short: "query all liquidity pools", + Long: strings.TrimSpace( + fmt.Sprintf(`Query all liquidity pools. + +Example: +$ %s query %s liquidity-pools +`, + version.AppName, types.ModuleName, + ), + ), + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + res, err := queryClient.LiquidityPools(cmd.Context(), &types.QueryLiquidityPoolsRequest{ + Pagination: pageReq, + }) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "liquidity-pools") + + return cmd +} + +func GetCmdQueryLiquidityPool() *cobra.Command { + cmd := &cobra.Command{ + Use: "liquidity-pool [liquidity pool denom]", + Short: "query a specific liquidity pool", + Long: strings.TrimSpace( + fmt.Sprintf(`Query details of a liquidity pool . + +Example: +$ %s query %s liquidity-pool +`, + version.AppName, types.ModuleName, + ), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + lptDenom := args[0] + if err := sdk.ValidateDenom(lptDenom); err != nil { + return err + } + + res, err := queryClient.LiquidityPool(cmd.Context(), &types.QueryLiquidityPoolRequest{ + LptDenom: lptDenom, + }) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/coinswap/client/cli/tx.go b/x/coinswap/client/cli/tx.go new file mode 100644 index 000000000..f221cda84 --- /dev/null +++ b/x/coinswap/client/cli/tx.go @@ -0,0 +1,173 @@ +package cli + +import ( + "fmt" + "strconv" + "time" + + "github.com/spf13/cobra" + + sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Canto-Network/Canto/v7/x/coinswap/types" +) + +// GetTxCmd returns the transaction commands for this module +func GetTxCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetAddLiquidityCmd(), + GetRemoveLiquidityCmd(), + GetSwapCmd(), + ) + + return cmd +} + +func GetAddLiquidityCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-liquidity [max-coin] [standard-coin-amount] [minimum-liquidity] [duration]", + Args: cobra.ExactArgs(4), + Short: "Add liquidity to a pool", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + depositCoin, err := sdk.ParseCoinNormalized(args[0]) + if err != nil { + return fmt.Errorf("invalid coins: %w", err) + } + + standardCoinAmt, ok := sdkmath.NewIntFromString(args[1]) + if !ok { + return fmt.Errorf("invalid standard coin amount: %s", args[1]) + } + + minLiquidity, ok := sdkmath.NewIntFromString(args[2]) + if !ok { + return fmt.Errorf("invalid minimum liquidity: %s", args[2]) + } + + duration, err := time.ParseDuration(args[3]) + if err != nil { + return fmt.Errorf("invalid duration: %s", err) + } + + deadline := time.Now().Add(duration) + + msg := types.NewMsgAddLiquidity(depositCoin, standardCoinAmt, minLiquidity, deadline.Unix(), clientCtx.GetFromAddress().String()) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func GetRemoveLiquidityCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "remove-liquidity [min output coin amount] [liquidity coin to withdraw] [min output standard coin amount] [duration]", + Args: cobra.ExactArgs(4), + Short: "Remove liquidity from a pair", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + minOutputCoin, ok := sdkmath.NewIntFromString(args[0]) + if !ok { + return fmt.Errorf("invalid output coin amount: %s", args[1]) + } + + liquidityCoin, err := sdk.ParseCoinNormalized(args[1]) + if err != nil { + return fmt.Errorf("invalid liquidity coin: %w", err) + } + + minOutputStandardCoin, ok := sdkmath.NewIntFromString(args[2]) + if !ok { + return fmt.Errorf("invalid output standard coin amount: %s", args[2]) + } + + duration, err := time.ParseDuration(args[3]) + if err != nil { + return fmt.Errorf("invalid duration: %s", err) + } + + deadline := time.Now().Add(duration) + + msg := types.NewMsgRemoveLiquidity(minOutputCoin, liquidityCoin, minOutputStandardCoin, deadline.Unix(), clientCtx.GetFromAddress().String()) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +func GetSwapCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "swap [input coin] [output coin] [isBuyOrder] [duration]", + Args: cobra.ExactArgs(4), + Short: "Remove liquidity from a pair", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + inputCoin, err := sdk.ParseCoinNormalized(args[0]) + if err != nil { + return fmt.Errorf("invalid input coin: %w", err) + } + + outputCoin, err := sdk.ParseCoinNormalized(args[1]) + if err != nil { + return fmt.Errorf("invalid output coin: %w", err) + } + + isBuyOrder, err := strconv.ParseBool(args[2]) + if err != nil { + return fmt.Errorf("invalid isBuyOrder value: %s", args[2]) + } + + duration, err := time.ParseDuration(args[3]) + if err != nil { + return fmt.Errorf("invalid duration: %s", err) + } + + deadline := time.Now().Add(duration) + + msg := types.NewMsgSwapOrder( + types.Input{Address: clientCtx.GetFromAddress().String(), Coin: inputCoin}, + types.Output{Address: clientCtx.GetFromAddress().String(), Coin: outputCoin}, + deadline.Unix(), + isBuyOrder, + ) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/coinswap/module.go b/x/coinswap/module.go index fc42cfe2a..42c682419 100644 --- a/x/coinswap/module.go +++ b/x/coinswap/module.go @@ -7,6 +7,7 @@ import ( "math/rand" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -17,6 +18,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/Canto-Network/Canto/v7/x/coinswap/client/cli" "github.com/Canto-Network/Canto/v7/x/coinswap/keeper" "github.com/Canto-Network/Canto/v7/x/coinswap/simulation" "github.com/Canto-Network/Canto/v7/x/coinswap/types" @@ -63,6 +65,17 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } +// GetTxCmd returns the root tx command for the coinswap module. +func (AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd() +} + +// GetQueryCmd returns no root query command for the coinswap module. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + // TODO: add cmd + return cli.GetQueryCmd() +} + // RegisterInterfaces registers interfaces and implementations of the coinswap module. func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { types.RegisterInterfaces(registry) diff --git a/x/csr/autocli.go b/x/csr/autocli.go deleted file mode 100644 index 32f9c63bd..000000000 --- a/x/csr/autocli.go +++ /dev/null @@ -1,68 +0,0 @@ -package csr - -import ( - "fmt" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - "github.com/cosmos/cosmos-sdk/version" - - csrv1 "github.com/Canto-Network/Canto/v7/api/canto/csr/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: csrv1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "Params", - Use: "params", - Short: "Query the current parameters of the CSR module", - }, - { - RpcMethod: "CSRs", - Use: "csrs", - Short: "Query all registered contracts and NFTs for the CSR module", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "pagination"}, - }, - }, - { - RpcMethod: "CSRByNFT", - Use: "nft [nftID]", - Short: "Query the CSR associated with a given NFT ID", - Example: fmt.Sprintf("%s query csr nft <address>", version.AppName), - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "nftId"}, - }, - }, - { - RpcMethod: "CSRByContract", - Use: "contract [address]", - Short: "Query the CSR associated with a given smart contract adddress", - Example: fmt.Sprintf("%s query csr contract <address>", version.AppName), - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "address"}, - }, - }, - { - RpcMethod: "Turnstile", - Use: "turnstile", - Short: "Query the address of the turnstile smart contract deployed by the module account", - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - Service: csrv1.Msg_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "UpdateParams", - Skip: true, - }, - }, - }, - } -} diff --git a/x/csr/client/cli/query.go b/x/csr/client/cli/query.go new file mode 100644 index 000000000..6a3178967 --- /dev/null +++ b/x/csr/client/cli/query.go @@ -0,0 +1,194 @@ +package cli + +import ( + "context" + "fmt" + "strconv" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/version" + + "github.com/Canto-Network/Canto/v7/x/csr/types" +) + +// GetQueryCmd returns the cli query commands for the CSR module +func GetQueryCmd(queryRoute string) *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + CmdQueryParams(), + CmdQueryCSRs(), + CmdQueryCSRByNFT(), + CmdQueryCSRByContract(), + CmdQueryTurnstile(), + ) + + return cmd +} + +// CmdQueryParams implements a command that will return the current parameters of the +// CSR module. +func CmdQueryParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Query the current parameters of the CSR module", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + request := &types.QueryParamsRequest{} + + // Query store + response, err := queryClient.Params(context.Background(), request) + if err != nil { + return err + } + + return clientCtx.PrintProto(&response.Params) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// CmdQueryCSRs implements a command that will return the CSRs from the CSR store +func CmdQueryCSRs() *cobra.Command { + cmd := &cobra.Command{ + Use: "csrs", + Short: "Query all registered contracts and NFTs for the CSR module", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + pageRequest, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + request := &types.QueryCSRsRequest{ + Pagination: pageRequest, + } + + // Query store + response, err := queryClient.CSRs(context.Background(), request) + if err != nil { + return err + } + + return clientCtx.PrintProto(response) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// CmdQueryCSRByNFT implements a command that will return a CSR given a NFT ID +func CmdQueryCSRByNFT() *cobra.Command { + cmd := &cobra.Command{ + Use: "nft [nftID]", + Args: cobra.ExactArgs(1), + Short: "Query the CSR associated with a given NFT ID", + Long: "Query the CSR associated with a given NFT ID", + Example: fmt.Sprintf("%s query csr nft <address>", version.AppName), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + // arg must be converted to a uint + nftID, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + request := &types.QueryCSRByNFTRequest{NftId: nftID} + // Query store + response, err := queryClient.CSRByNFT(context.Background(), request) + if err != nil { + return err + } + + return clientCtx.PrintProto(response) + }, + } + flags.AddQueryFlagsToCmd(cmd) + return cmd +} + +// CmdQueryCSRByContract implements a cobra command that will return the CSR associated +// given a smart contract address +func CmdQueryCSRByContract() *cobra.Command { + cmd := &cobra.Command{ + Use: "contract [address]", + Args: cobra.ExactArgs(1), + Short: "Query the CSR associated with a given smart contract adddress", + Long: "Query the CSR associated with a given smart contract adddress", + Example: fmt.Sprintf("%s query csr contract <address>", version.AppName), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + request := &types.QueryCSRByContractRequest{Address: args[0]} + + // Query store + response, err := queryClient.CSRByContract(context.Background(), request) + if err != nil { + return err + } + + return clientCtx.PrintProto(response) + }, + } + flags.AddQueryFlagsToCmd(cmd) + return cmd +} + +// CmdQueryTurnstile implements a cobra command that will return the Turnstile address that was deployed by the module account +func CmdQueryTurnstile() *cobra.Command { + cmd := &cobra.Command{ + Use: "turnstile", + Short: "Query the address of the turnstile smart contract deployed by the module account", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + request := &types.QueryTurnstileRequest{} + + // Query store + response, err := queryClient.Turnstile(context.Background(), request) + if err != nil { + return err + } + + return clientCtx.PrintProto(response) + }, + } + flags.AddQueryFlagsToCmd(cmd) + return cmd +} diff --git a/x/csr/client/cli/tx.go b/x/csr/client/cli/tx.go new file mode 100644 index 000000000..c7a6243dc --- /dev/null +++ b/x/csr/client/cli/tx.go @@ -0,0 +1,23 @@ +package cli + +import ( + "fmt" + + "github.com/spf13/cobra" + + "github.com/Canto-Network/Canto/v7/x/csr/types" + "github.com/cosmos/cosmos-sdk/client" +) + +// GetTxCmd returns the transaction methods allowed for the CLI. However, currently all transaction or state transition +// functionality is triggered through the Turnstile Smart Contract. +func GetTxCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("%s has no transaction commands (everything transaction is triggered via the Turnstile Smart Contract)", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + return cmd +} diff --git a/x/csr/module.go b/x/csr/module.go index 93a38acbd..1a20eaabc 100644 --- a/x/csr/module.go +++ b/x/csr/module.go @@ -8,7 +8,9 @@ import ( // this line is used by starport scaffolding # 1 "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + "github.com/Canto-Network/Canto/v7/x/csr/client/cli" "github.com/Canto-Network/Canto/v7/x/csr/keeper" "github.com/Canto-Network/Canto/v7/x/csr/types" abci "github.com/cometbft/cometbft/abci/types" @@ -73,6 +75,16 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } +// GetTxCmd returns the csr module's root tx command. +func (a AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd() +} + +// GetQueryCmd returns the csr module's root query command. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd(types.StoreKey) +} + // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/epochs/autocli.go b/x/epochs/autocli.go deleted file mode 100644 index 559ec84bc..000000000 --- a/x/epochs/autocli.go +++ /dev/null @@ -1,40 +0,0 @@ -package epochs - -import ( - "fmt" - - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - "github.com/cosmos/cosmos-sdk/version" - - epochsv1 "github.com/Canto-Network/Canto/v7/api/canto/epochs/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: epochsv1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "EpochInfos", - Use: "epoch-infos", - Short: "Query running epochInfos", - Example: fmt.Sprintf("%s query epochs epoch-infos", version.AppName), - }, - { - RpcMethod: "CurrentEpoch", - Use: "current-epoch", - Short: "Query current epoch by specified identifier", - Example: fmt.Sprintf("%s query epochs current-epoch week", version.AppName), - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "identifier"}, - }, - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - EnhanceCustomCommand: false, - }, - } -} diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go new file mode 100644 index 000000000..3852a7643 --- /dev/null +++ b/x/epochs/client/cli/query.go @@ -0,0 +1,109 @@ +package cli + +import ( + "fmt" + "strings" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/version" + "github.com/spf13/cobra" + + "github.com/Canto-Network/Canto/v7/x/epochs/types" +) + +// GetQueryCmd returns the cli query commands for this module +func GetQueryCmd() *cobra.Command { + // Group epochs queries under a subcommand + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetCmdEpochsInfos(), + GetCmdCurrentEpoch(), + ) + + return cmd +} + +// GetCmdEpochsInfos provide running epochInfos +func GetCmdEpochsInfos() *cobra.Command { + cmd := &cobra.Command{ + Use: "epoch-infos", + Short: "Query running epochInfos", + Example: strings.TrimSpace( + fmt.Sprintf(`$ %s query epochs epoch-infos`, + version.AppName, + ), + ), + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + req := &types.QueryEpochsInfoRequest{ + Pagination: pageReq, + } + + res, err := queryClient.EpochInfos(cmd.Context(), req) + if err != nil { + return err + } + + // return clientCtx.PrintProto(res) + return clientCtx.PrintObjectLegacy(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCmdCurrentEpoch provides current epoch by specified identifier +func GetCmdCurrentEpoch() *cobra.Command { + cmd := &cobra.Command{ + Use: "current-epoch", + Short: "Query current epoch by specified identifier", + Example: strings.TrimSpace( + fmt.Sprintf(`$ %s query epochs current-epoch week`, + version.AppName, + ), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.CurrentEpoch(cmd.Context(), &types.QueryCurrentEpochRequest{ + Identifier: args[0], + }) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/epochs/module.go b/x/epochs/module.go index 25bd52de5..06cad8fe2 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -10,6 +10,7 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -19,6 +20,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/Canto-Network/Canto/v7/x/epochs/client/cli" "github.com/Canto-Network/Canto/v7/x/epochs/keeper" "github.com/Canto-Network/Canto/v7/x/epochs/types" ) @@ -75,6 +77,16 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r } } +// GetTxCmd returns the epochs module's root tx command. +func (AppModuleBasic) GetTxCmd() *cobra.Command { + return nil +} + +// GetQueryCmd returns the epochs module's root query command. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/erc20/autocli.go b/x/erc20/autocli.go deleted file mode 100644 index ac8aea6aa..000000000 --- a/x/erc20/autocli.go +++ /dev/null @@ -1,80 +0,0 @@ -package erc20 - -import ( - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - - erc20v1 "github.com/Canto-Network/Canto/v7/api/canto/erc20/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: erc20v1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "TokenPairs", - Use: "token-pairs", - Short: "Gets registered token pairs", - }, - { - RpcMethod: "TokenPair", - Use: "token-pair [token]", - Short: "Get a registered token pair", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "token"}, - }, - }, - { - RpcMethod: "Params", - Use: "params", - Short: "Gets erc20 params", - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - Service: erc20v1.Msg_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "ConvertCoin", - Use: "convert-coin [coin] [receiver_hex]", - Short: "Convert a Cosmos coin to ERC20. When the receiver [optional] is omitted, the ERC20 tokens are transferred to the sender.", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "coin"}, - {ProtoField: "receiver"}, - {ProtoField: "sender"}, - }, - }, - { - RpcMethod: "ConvertERC20", - Use: "convert-erc20 [contract-address] [amount] [receiver]", - Short: "Convert an ERC20 token to Cosmos coin. When the receiver [optional] is omitted, the Cosmos coins are transferred to the sender.", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{ - {ProtoField: "contract_address"}, - {ProtoField: "amount"}, - {ProtoField: "receiver"}, - {ProtoField: "sender"}, - }, - }, - { - RpcMethod: "RegisterCoinProposal", - Skip: true, - }, - { - RpcMethod: "RegisterERC20Proposal", - Skip: true, - }, - { - RpcMethod: "ToggleTokenConversionProposal", - Skip: true, - }, - { - RpcMethod: "UpdateParams", - Skip: true, - }, - }, - }, - } -} diff --git a/x/erc20/client/cli/query.go b/x/erc20/client/cli/query.go new file mode 100644 index 000000000..2f977d60a --- /dev/null +++ b/x/erc20/client/cli/query.go @@ -0,0 +1,128 @@ +package cli + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" + + "github.com/Canto-Network/Canto/v7/x/erc20/types" +) + +// GetQueryCmd returns the parent command for all erc20 CLI query commands +func GetQueryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Querying commands for the erc20 module", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetTokenPairsCmd(), + GetTokenPairCmd(), + GetParamsCmd(), + ) + return cmd +} + +// GetTokenPairsCmd queries all registered token pairs +func GetTokenPairsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "token-pairs", + Short: "Gets registered token pairs", + Long: "Gets registered token pairs", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + + req := &types.QueryTokenPairsRequest{ + Pagination: pageReq, + } + + res, err := queryClient.TokenPairs(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + return cmd +} + +// GetTokenPairsCmd queries a registered token pair +func GetTokenPairCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "token-pair [token]", + Short: "Get a registered token pair", + Long: "Get a registered token pair", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + req := &types.QueryTokenPairRequest{ + Token: args[0], + } + + res, err := queryClient.TokenPair(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + return cmd +} + +// GetParamsCmd queries erc20 module params +func GetParamsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Gets erc20 params", + Long: "Gets erc20 params", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + req := &types.QueryParamsRequest{} + + res, err := queryClient.Params(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + return cmd +} diff --git a/x/erc20/client/cli/tx.go b/x/erc20/client/cli/tx.go new file mode 100644 index 000000000..93ff13e7d --- /dev/null +++ b/x/erc20/client/cli/tx.go @@ -0,0 +1,391 @@ +package cli + +import ( + "fmt" + + "github.com/spf13/cobra" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/ethereum/go-ethereum/common" + + ethermint "github.com/evmos/ethermint/types" + + "github.com/Canto-Network/Canto/v7/x/erc20/types" +) + +// NewTxCmd returns a root CLI command handler for erc20 transaction commands +func NewTxCmd() *cobra.Command { + txCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "erc20 subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + txCmd.AddCommand( + NewConvertCoinCmd(), + NewConvertERC20Cmd(), + ) + return txCmd +} + +// NewConvertCoinCmd returns a CLI command handler for converting a Cosmos coin +func NewConvertCoinCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "convert-coin [coin] [receiver_hex]", + Short: "Convert a Cosmos coin to ERC20. When the receiver [optional] is omitted, the ERC20 tokens are transferred to the sender.", + Args: cobra.RangeArgs(1, 2), + RunE: func(cmd *cobra.Command, args []string) error { + cliCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + coin, err := sdk.ParseCoinNormalized(args[0]) + if err != nil { + return err + } + + var receiver string + sender := cliCtx.GetFromAddress() + + if len(args) == 2 { + receiver = args[1] + if err := ethermint.ValidateAddress(receiver); err != nil { + return fmt.Errorf("invalid receiver hex address %w", err) + } + } else { + receiver = common.BytesToAddress(sender).Hex() + } + + msg := &types.MsgConvertCoin{ + Coin: coin, + Receiver: receiver, + Sender: sender.String(), + } + + if err := types.ValidateErc20Denom(msg.Coin.Denom); err != nil { + if err := ibctransfertypes.ValidateIBCDenom(msg.Coin.Denom); err != nil { + return err + } + } + + if !msg.Coin.Amount.IsPositive() { + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err = sdk.AccAddressFromBech32(msg.Sender) + if err != nil { + return errorsmod.Wrap(err, "invalid sender address") + } + + if !common.IsHexAddress(msg.Receiver) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver hex address %s", msg.Receiver) + } + + return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} + +// NewConvertERC20Cmd returns a CLI command handler for converting an ERC20 +func NewConvertERC20Cmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "convert-erc20 [contract-address] [amount] [receiver]", + Short: "Convert an ERC20 token to Cosmos coin. When the receiver [optional] is omitted, the Cosmos coins are transferred to the sender.", + Args: cobra.RangeArgs(2, 3), + RunE: func(cmd *cobra.Command, args []string) error { + cliCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + contract := args[0] + if err := ethermint.ValidateAddress(contract); err != nil { + return fmt.Errorf("invalid ERC20 contract address %w", err) + } + + amount, ok := sdkmath.NewIntFromString(args[1]) + if !ok { + return fmt.Errorf("invalid amount %s", args[1]) + } + + from := common.BytesToAddress(cliCtx.GetFromAddress().Bytes()) + + receiver := cliCtx.GetFromAddress() + if len(args) == 3 { + receiver, err = sdk.AccAddressFromBech32(args[2]) + if err != nil { + return err + } + } + + msg := &types.MsgConvertERC20{ + ContractAddress: contract, + Amount: amount, + Receiver: receiver.String(), + Sender: from.Hex(), + } + + if !common.IsHexAddress(msg.ContractAddress) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid contract hex address '%s'", msg.ContractAddress) + } + + if !msg.Amount.IsPositive() { + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "cannot mint a non-positive amount") + } + + _, err = sdk.AccAddressFromBech32(msg.Receiver) + if err != nil { + return errorsmod.Wrap(err, "invalid receiver address") + } + + if !common.IsHexAddress(msg.Sender) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender hex address %s", msg.Sender) + } + + return tx.GenerateOrBroadcastTxCLI(cliCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} + +//// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal +//func NewRegisterCoinProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "register-coin [metadata]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a register coin proposal", +// Long: `Submit a proposal to register a Cosmos coin to the erc20 along with an initial deposit. +//Upon passing, the +//The proposal details must be supplied via a JSON file.`, +// Example: fmt.Sprintf(`$ %s tx gov submit-proposal register-coin <path/to/metadata.json> --from=<key_or_address> +// +//Where metadata.json contains (example): +// +//{ +// "description": "The native staking and governance token of the Osmosis chain", +// "denom_units": [ +// { +// "denom": "ibc/<HASH>", +// "exponent": 0, +// "aliases": ["ibcuosmo"] +// }, +// { +// "denom": "OSMO", +// "exponent": 6 +// } +// ], +// "base": "ibc/<HASH>", +// "display": "OSMO", +// "name": "Osmo", +// "symbol": "OSMO" +//}`, version.AppName, +// ), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// metadata, err := ParseMetadata(clientCtx.Codec, args[0]) +// if err != nil { +// return err +// } +// +// from := clientCtx.GetFromAddress() +// +// content := types.NewRegisterCoinProposal(title, description, metadata) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} +// +//// NewRegisterERC20ProposalCmd implements the command to submit a community-pool-spend proposal +//func NewRegisterERC20ProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "register-erc20 [erc20-address]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a proposal to register an ERC20 token", +// Long: "Submit a proposal to register an ERC20 token to the erc20 along with an initial deposit.", +// Example: fmt.Sprintf("$ %s tx gov submit-proposal register-erc20 <contract-address> --from=<key_or_address>", version.AppName), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// erc20Addr := args[0] +// from := clientCtx.GetFromAddress() +// content := types.NewRegisterERC20Proposal(title, description, erc20Addr) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} +// +//// NewToggleTokenConversionProposalCmd implements the command to submit a community-pool-spend proposal +//func NewToggleTokenConversionProposalCmd() *cobra.Command { +// cmd := &cobra.Command{ +// Use: "toggle-token-conversion [token]", +// Args: cobra.ExactArgs(1), +// Short: "Submit a toggle token conversion proposal", +// Long: "Submit a proposal to toggle the conversion of a token pair along with an initial deposit.", +// Example: fmt.Sprintf("$ %s tx gov submit-proposal toggle-token-conversion <denom_or_contract> --from=<key_or_address>", version.AppName), +// RunE: func(cmd *cobra.Command, args []string) error { +// clientCtx, err := client.GetClientTxContext(cmd) +// if err != nil { +// return err +// } +// +// title, err := cmd.Flags().GetString(cli.FlagTitle) +// if err != nil { +// return err +// } +// +// description, err := cmd.Flags().GetString(cli.FlagDescription) +// if err != nil { +// return err +// } +// +// depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) +// if err != nil { +// return err +// } +// +// deposit, err := sdk.ParseCoinsNormalized(depositStr) +// if err != nil { +// return err +// } +// +// from := clientCtx.GetFromAddress() +// token := args[0] +// content := types.NewToggleTokenConversionProposal(title, description, token) +// +// msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) +// if err != nil { +// return err +// } +// +// //if err := msg.ValidateBasic(); err != nil { +// // return err +// //} +// +// return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) +// }, +// } +// +// cmd.Flags().String(cli.FlagTitle, "", "title of proposal") +// cmd.Flags().String(cli.FlagDescription, "", "description of proposal") +// cmd.Flags().String(cli.FlagDeposit, "1acanto", "deposit of proposal") +// if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { +// panic(err) +// } +// if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { +// panic(err) +// } +// return cmd +//} diff --git a/x/erc20/client/cli/utils.go b/x/erc20/client/cli/utils.go new file mode 100644 index 000000000..f9f77de39 --- /dev/null +++ b/x/erc20/client/cli/utils.go @@ -0,0 +1,25 @@ +package cli + +import ( + "io/ioutil" + "path/filepath" + + "github.com/cosmos/cosmos-sdk/codec" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" +) + +// ParseRegisterCoinProposal reads and parses a ParseRegisterCoinProposal from a file. +func ParseMetadata(cdc codec.JSONCodec, metadataFile string) (banktypes.Metadata, error) { + metadata := banktypes.Metadata{} + + contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) + if err != nil { + return metadata, err + } + + if err = cdc.UnmarshalJSON(contents, &metadata); err != nil { + return metadata, err + } + + return metadata, nil +} diff --git a/x/erc20/module.go b/x/erc20/module.go index 34d7167e0..468f315a4 100644 --- a/x/erc20/module.go +++ b/x/erc20/module.go @@ -15,7 +15,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + "github.com/Canto-Network/Canto/v7/x/erc20/client/cli" "github.com/Canto-Network/Canto/v7/x/erc20/keeper" "github.com/Canto-Network/Canto/v7/x/erc20/types" ) @@ -70,6 +72,16 @@ func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *ru } } +// GetTxCmd returns the root tx command for the erc20 module. +func (AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.NewTxCmd() +} + +// GetQueryCmd returns no root query command for the erc20 module. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + type AppModule struct { AppModuleBasic keeper keeper.Keeper diff --git a/x/govshuttle/autocli.go b/x/govshuttle/autocli.go deleted file mode 100644 index 0de231179..000000000 --- a/x/govshuttle/autocli.go +++ /dev/null @@ -1,27 +0,0 @@ -package govshuttle - -import ( - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - - govshuttlev1 "github.com/Canto-Network/Canto/v7/api/canto/govshuttle/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: govshuttlev1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "Params", - Use: "params", - Short: "shows the parameters of the module", - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - EnhanceCustomCommand: false, - }, - } -} diff --git a/x/govshuttle/client/cli/query.go b/x/govshuttle/client/cli/query.go new file mode 100644 index 000000000..d649d7fa3 --- /dev/null +++ b/x/govshuttle/client/cli/query.go @@ -0,0 +1,31 @@ +package cli + +import ( + "fmt" + // "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + // "github.com/cosmos/cosmos-sdk/client/flags" + // sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Canto-Network/Canto/v7/x/govshuttle/types" +) + +// GetQueryCmd returns the cli query commands for this module +func GetQueryCmd(queryRoute string) *cobra.Command { + // Group govshuttle queries under a subcommand + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand(CmdQueryParams()) + // this line is used by starport scaffolding # 1 + + return cmd +} diff --git a/x/govshuttle/client/cli/query_params.go b/x/govshuttle/client/cli/query_params.go new file mode 100644 index 000000000..9a02f25be --- /dev/null +++ b/x/govshuttle/client/cli/query_params.go @@ -0,0 +1,34 @@ +package cli + +import ( + "context" + + "github.com/Canto-Network/Canto/v7/x/govshuttle/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdQueryParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "shows the parameters of the module", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/govshuttle/client/cli/tx.go b/x/govshuttle/client/cli/tx.go new file mode 100644 index 000000000..e0db33d8c --- /dev/null +++ b/x/govshuttle/client/cli/tx.go @@ -0,0 +1,204 @@ +package cli + +import ( + "fmt" + "time" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/version" + "github.com/cosmos/cosmos-sdk/x/gov/client/cli" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + + errorsmod "cosmossdk.io/errors" + + "github.com/Canto-Network/Canto/v7/x/govshuttle/types" +) + +var ( + DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds()) +) + +// NewTxCmd returns a root CLI command handler for certain modules/govshuttle transaction commands. +func NewTxCmd() *cobra.Command { + txCmd := &cobra.Command{ + Use: types.ModuleName, + Short: "govshuttle subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + txCmd.AddCommand() + return txCmd +} + +// NewRegisterCoinProposalCmd implements the command to submit a community-pool-spend proposal +func NewLendingMarketProposalCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "lending-market [metadata]", + Args: cobra.ExactArgs(1), + Short: "Submit a lending market proposal", + Long: `Submit a proposal for the Canto Lending Market along with an initial deposit. +Upon passing, the +The proposal details must be supplied via a JSON file.`, + Example: fmt.Sprintf(`$ %s tx gov submit-proposal lending-market <path/to/metadata.json> --from=<key_or_address> --title=<title> --description=<description> + +Where metadata.json contains (example): + +{ + "Account": ["address_1", "address_2"], + "PropId": 1, + "values": ["canto", "osmo"], + "calldatas: ["calldata1", "calldata2"], + "signatures": ["func1", "func2"] +}`, version.AppName, + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + title, err := cmd.Flags().GetString(cli.FlagTitle) + if err != nil { + return err + } + + description, err := cmd.Flags().GetString(cli.FlagDescription) + if err != nil { + return err + } + + depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) + if err != nil { + return err + } + + deposit, err := sdk.ParseCoinsNormalized(depositStr) + if err != nil { + return err + } + + propMetaData, err := ParseLendingMarketMetadata(clientCtx.Codec, args[0]) + if err != nil { + return errorsmod.Wrap(err, "Failure to parse JSON object") + } + + from := clientCtx.GetFromAddress() + + content := types.NewLendingMarketProposal(title, description, &propMetaData) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) + if err != nil { + return err + } + + //if err := msg.ValidateBasic(); err != nil { + // return err + //} + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + cmd.Flags().String(cli.FlagTitle, "", "title of proposal") + cmd.Flags().String(cli.FlagDescription, "", "description of proposal") + cmd.Flags().String(cli.FlagDeposit, "1aevmos", "deposit of proposal") + if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { + panic(err) + } + if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { + panic(err) + } + if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { + panic(err) + } + return cmd +} + +// Register TreasuryProposal submit cmd +func NewTreasuryProposalCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "treasury-proposal [metadata]", + Args: cobra.ExactArgs(1), + Short: "Submit a proposal to the Canto Treasury", + Long: `Submit a proposal for the Canto Treasury along with an initial deposit. +Upon passing, the +The proposal details must be supplied via a JSON file.`, + Example: fmt.Sprintf(`$ %s tx gov submit-proposal treasury-proposal <path/to/metadata.json> --from=<key_or_address> --title=<title> --description=<description> + +Where metadata.json contains (example): + +{ + "recipient": "0xfffffff...", + "PropID": 1, + "amount": 1, + "denom": "canto/note" +}`, version.AppName, + ), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + title, err := cmd.Flags().GetString(cli.FlagTitle) + if err != nil { + return err + } + + description, err := cmd.Flags().GetString(cli.FlagDescription) + if err != nil { + return err + } + + depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) + if err != nil { + return err + } + + deposit, err := sdk.ParseCoinsNormalized(depositStr) + if err != nil { + return err + } + + propMetaData, err := ParseTreasuryMetadata(clientCtx.Codec, args[0]) + if err != nil { + return errorsmod.Wrap(err, "Failure to parse JSON object") + } + + from := clientCtx.GetFromAddress() + + content := types.NewTreasuryProposal(title, description, &propMetaData) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) + if err != nil { + return err + } + + //if err := msg.ValidateBasic(); err != nil { + // return err + //} + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + cmd.Flags().String(cli.FlagTitle, "", "title of proposal") + cmd.Flags().String(cli.FlagDescription, "", "description of proposal") + cmd.Flags().String(cli.FlagDeposit, "1aevmos", "deposit of proposal") + if err := cmd.MarkFlagRequired(cli.FlagTitle); err != nil { + panic(err) + } + if err := cmd.MarkFlagRequired(cli.FlagDescription); err != nil { + panic(err) + } + if err := cmd.MarkFlagRequired(cli.FlagDeposit); err != nil { + panic(err) + } + return cmd +} diff --git a/x/govshuttle/client/cli/utils.go b/x/govshuttle/client/cli/utils.go new file mode 100644 index 000000000..91ec5835b --- /dev/null +++ b/x/govshuttle/client/cli/utils.go @@ -0,0 +1,55 @@ +package cli + +import ( + "encoding/json" + "io/ioutil" + "path/filepath" + + "github.com/Canto-Network/Canto/v7/x/govshuttle/types" + "github.com/cosmos/cosmos-sdk/codec" +) + +// PARSING METADATA ACCORDING TO PROPOSAL STRUCT IN GOVTYPES TYPE IN govshuttle + +// ParseRegisterCoinProposal reads and parses a ParseRegisterCoinProposal from a file. +func ParseLendingMarketMetadata(cdc codec.JSONCodec, metadataFile string) (types.LendingMarketMetadata, error) { + propMetaData := types.LendingMarketMetadata{} + + contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) + if err != nil { + return propMetaData, err + } + + // if err = cdc.UnmarshalJSON(contents, &propMetaData); err != nil { + // return propMetaData, err + // } + + if err = json.Unmarshal(contents, &propMetaData); err != nil { + return types.LendingMarketMetadata{}, err + } + + propMetaData.PropId = 0 + + return propMetaData, nil +} + +func ParseTreasuryMetadata(cdc codec.JSONCodec, metadataFile string) (types.TreasuryProposalMetadata, error) { + propMetaData := types.TreasuryProposalMetadata{} + + contents, err := ioutil.ReadFile(filepath.Clean(metadataFile)) + if err != nil { + return propMetaData, err + } + + // if err = cdc.UnmarshalJSON(contents, &propMetaData); err != nil { + // return propMetaData, err + // } + + if err = json.Unmarshal(contents, &propMetaData); err != nil { + return types.TreasuryProposalMetadata{}, err + } + + propMetaData.PropID = 0 + + return propMetaData, nil +} diff --git a/x/govshuttle/module.go b/x/govshuttle/module.go index fc03d0060..37bcf9e15 100644 --- a/x/govshuttle/module.go +++ b/x/govshuttle/module.go @@ -7,9 +7,11 @@ import ( // this line is used by starport scaffolding # 1 "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" + "github.com/Canto-Network/Canto/v7/x/govshuttle/client/cli" "github.com/Canto-Network/Canto/v7/x/govshuttle/keeper" "github.com/Canto-Network/Canto/v7/x/govshuttle/types" "github.com/cosmos/cosmos-sdk/client" @@ -75,6 +77,16 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *r // this line is used by starport scaffolding # 2 } +// GetTxCmd returns the capability module's root tx command. +func (a AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.NewTxCmd() +} + +// GetQueryCmd returns the capability module's root query command. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd(types.StoreKey) +} + // ---------------------------------------------------------------------------- // AppModule // ---------------------------------------------------------------------------- diff --git a/x/inflation/autocli.go b/x/inflation/autocli.go deleted file mode 100644 index fb42769ef..000000000 --- a/x/inflation/autocli.go +++ /dev/null @@ -1,52 +0,0 @@ -package inflation - -import ( - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - - inflationv1 "github.com/Canto-Network/Canto/v7/api/canto/inflation/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: inflationv1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "Period", - Use: "period", - Short: "Query the current inflation period", - }, - { - RpcMethod: "EpochMintProvision", - Use: "epoch-mint-provision", - Short: "Query the current inflation epoch provisions value", - }, - { - RpcMethod: "SkippedEpochs", - Use: "skipped-epochs", - Short: "Query the current number of skipped epochs", - }, - { - RpcMethod: "CirculatingSupply", - Use: "circulating-supply", - Short: "Query the current supply of tokens in circulation", - }, - { - RpcMethod: "InflationRate", - Use: "inflation-rate", - Short: "Query the inflation rate of the current period", - }, - { - RpcMethod: "Params", - Use: "params", - Short: "Query the current inflation parameters", - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - EnhanceCustomCommand: false, - }, - } -} diff --git a/x/inflation/client/cli/query.go b/x/inflation/client/cli/query.go new file mode 100644 index 000000000..13fd81cbb --- /dev/null +++ b/x/inflation/client/cli/query.go @@ -0,0 +1,206 @@ +package cli + +import ( + "context" + "fmt" + + "github.com/spf13/cobra" + + "github.com/Canto-Network/Canto/v7/x/inflation/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" +) + +// GetQueryCmd returns the cli query commands for the inflation module. +func GetQueryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Querying commands for the inflation module", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetPeriod(), + GetEpochMintProvision(), + GetSkippedEpochs(), + GetCirculatingSupply(), + GetInflationRate(), + GetParams(), + ) + + return cmd +} + +// GetPeriod implements a command to return the current inflation +// period +func GetPeriod() *cobra.Command { + cmd := &cobra.Command{ + Use: "period", + Short: "Query the current inflation period", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryPeriodRequest{} + res, err := queryClient.Period(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintString(fmt.Sprintf("%v\n", res.Period)) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetEpochMintProvision implements a command to return the current inflation +// epoch provisions value. +func GetEpochMintProvision() *cobra.Command { + cmd := &cobra.Command{ + Use: "epoch-mint-provision", + Short: "Query the current inflation epoch provisions value", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryEpochMintProvisionRequest{} + res, err := queryClient.EpochMintProvision(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintString(fmt.Sprintf("%s\n", res.EpochMintProvision)) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetSkippedEpochs implements a command to return the current inflation +// period +func GetSkippedEpochs() *cobra.Command { + cmd := &cobra.Command{ + Use: "skipped-epochs", + Short: "Query the current number of skipped epochs", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QuerySkippedEpochsRequest{} + res, err := queryClient.SkippedEpochs(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintString(fmt.Sprintf("%v\n", res.SkippedEpochs)) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCirculatingSupply implements a command to return the current circulating supply +func GetCirculatingSupply() *cobra.Command { + cmd := &cobra.Command{ + Use: "circulating-supply", + Short: "Query the current supply of tokens in circulation", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryCirculatingSupplyRequest{} + res, err := queryClient.CirculatingSupply(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintString(fmt.Sprintf("%s\n", res.CirculatingSupply)) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetInflationRate implements a command to return the inflation rate in % +func GetInflationRate() *cobra.Command { + cmd := &cobra.Command{ + Use: "inflation-rate", + Short: "Query the inflation rate of the current period", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryInflationRateRequest{} + res, err := queryClient.InflationRate(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintString(fmt.Sprintf("%s%%\n", res.InflationRate)) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetParams implements a command to return the current inflation +// parameters. +func GetParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Query the current inflation parameters", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryParamsRequest{} + res, err := queryClient.Params(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(&res.Params) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/inflation/module.go b/x/inflation/module.go index e8bff07eb..090125675 100644 --- a/x/inflation/module.go +++ b/x/inflation/module.go @@ -17,7 +17,9 @@ import ( authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + "github.com/Canto-Network/Canto/v7/x/inflation/client/cli" "github.com/Canto-Network/Canto/v7/x/inflation/keeper" "github.com/Canto-Network/Canto/v7/x/inflation/types" ) @@ -76,6 +78,14 @@ func (b AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *ru } } +// GetTxCmd returns the root tx command for the inflation module. +func (AppModuleBasic) GetTxCmd() *cobra.Command { return nil } + +// GetQueryCmd returns no root query command for the inflation module. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + // ___________________________________________________________________________ // AppModule implements an application module for the inflation module. diff --git a/x/onboarding/autocli.go b/x/onboarding/autocli.go deleted file mode 100644 index d44fc533a..000000000 --- a/x/onboarding/autocli.go +++ /dev/null @@ -1,27 +0,0 @@ -package onboarding - -import ( - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - - onboardingv1 "github.com/Canto-Network/Canto/v7/api/canto/onboarding/v1" -) - -// AutoCLIOptions implements the autocli.HasAutoCLIConfig interface. -func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { - return &autocliv1.ModuleOptions{ - Query: &autocliv1.ServiceCommandDescriptor{ - Service: onboardingv1.Query_ServiceDesc.ServiceName, - EnhanceCustomCommand: false, - RpcCommandOptions: []*autocliv1.RpcCommandOptions{ - { - RpcMethod: "Params", - Use: "params", - Short: "Gets onboarding params", - }, - }, - }, - Tx: &autocliv1.ServiceCommandDescriptor{ - EnhanceCustomCommand: false, - }, - } -} diff --git a/x/onboarding/client/cli/query.go b/x/onboarding/client/cli/query.go new file mode 100644 index 000000000..a5112adb2 --- /dev/null +++ b/x/onboarding/client/cli/query.go @@ -0,0 +1,58 @@ +package cli + +import ( + "context" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + + "github.com/Canto-Network/Canto/v7/x/onboarding/types" +) + +// GetQueryCmd returns the parent command for all onboarding CLI query commands. +func GetQueryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Querying commands for the onboarding module", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetParamsCmd(), + ) + return cmd +} + +// GetParamsCmd queries the module parameters +func GetParamsCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "Gets onboarding params", + Long: "Gets onboarding params", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(clientCtx) + + req := &types.QueryParamsRequest{} + + res, err := queryClient.Params(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + return cmd +} diff --git a/x/onboarding/module.go b/x/onboarding/module.go index 99527a41c..7cbac3883 100644 --- a/x/onboarding/module.go +++ b/x/onboarding/module.go @@ -8,6 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" abci "github.com/cometbft/cometbft/abci/types" @@ -18,6 +19,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/Canto-Network/Canto/v7/x/onboarding/client/cli" "github.com/Canto-Network/Canto/v7/x/onboarding/keeper" "github.com/Canto-Network/Canto/v7/x/onboarding/types" ) @@ -73,6 +75,14 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(c client.Context, serveMux *runt } } +// GetTxCmd returns the root tx command for the onboarding module. +func (AppModuleBasic) GetTxCmd() *cobra.Command { return nil } + +// GetQueryCmd returns no root query command for the onboarding module. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + type AppModule struct { AppModuleBasic keeper keeper.Keeper From 08a40222b20bbf7bf787e438e49f44fb16fd6e41 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Tue, 21 May 2024 16:04:43 +0900 Subject: [PATCH 92/96] fix: Upgrade handler bug fix --- app/upgrades/v8/upgrades.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 2cebc8e38..b3f249076 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -31,6 +31,12 @@ func CreateUpgradeHandler( sdkCtx := sdk.UnwrapSDKContext(ctx) logger := sdkCtx.Logger().With("upgrade: ", UpgradeName) + // Leave modules are as-is to avoid running InitGenesis. + logger.Debug("running module migrations ...") + if vm, err := mm.RunMigrations(ctx, configurator, vm); err != nil { + return vm, err + } + // ibc-go vX -> v6 // - skip // - not implement an ICS27 controller module @@ -62,8 +68,6 @@ func CreateUpgradeHandler( stakingKeeper.SetParams(ctx, params) } - // Leave modules are as-is to avoid running InitGenesis. - logger.Debug("running module migrations ...") - return mm.RunMigrations(ctx, configurator, vm) + return vm, nil } } From cf253a9cbff875fb227b022e01f7cf79bf232a07 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Tue, 21 May 2024 16:23:08 +0900 Subject: [PATCH 93/96] feat: bump up ethermint --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 63752f95d..3fb509143 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index ed360263b..885565e3d 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233 h1:go6Ub71i/QNsQqUZP24v5sFNQTuu2Txe68I7XirdCWI= -github.com/b-harvest/ethermint v0.0.0-20240512131823-0f395e7a7233/go.mod h1:rDpY5NJw21HOAkydMFeexE2jmvKtZXhP9ycsvGC42WA= +github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0 h1:NafSVwlLDjntFod++cNlmkhLVzqWq+hgFpr1YoSO2rY= +github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0/go.mod h1:yIntu4jTOBVrMeRL7/tBJtM0Cm/OzTiWUfy6DKtZyn0= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From eb41c9f47872279584cc2450f47a1e5b108544c4 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Wed, 22 May 2024 16:14:28 +0900 Subject: [PATCH 94/96] docs: changelog --- CHANGELOG.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..0e18fa109 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,57 @@ +<!-- +Guiding Principles: + +Changelogs are for humans, not machines. +There should be an entry for every single version. +The same types of changes should be grouped. +Versions and sections should be linkable. +The latest version comes first. +The release date of each version is displayed. +Mention whether you follow Semantic Versioning. + +Usage: + +Change log entries are to be added to the Unreleased section under the +appropriate stanza (see below). Each entry should ideally include a tag and +the Github issue reference in the following format: + +* (<tag>) \#<issue-number> message + +The issue numbers will later be link-ified during the release process so you do +not have to worry about including a link manually, but you can if you wish. + +Types of changes (Stanzas): + +"Features" for new features. +"Improvements" for changes in existing functionality. +"Deprecated" for soon-to-be removed features. +"Bug Fixes" for any bug fixes. +"Client Breaking" for breaking CLI commands and REST routes used by end-users. +"API Breaking" for breaking exported APIs used by developers building on SDK. +"State Machine Breaking" for any changes that result in a different AppState given same genesisState and txList. + +Ref: https://keepachangelog.com/en/1.0.0/ +--> + +# CHANGELOG + +## Unreleased + +### State Machine Breaking + +- (deps) [#126](https://github.com/Canto-Network/Canto/pull/126) Bump Comsos-SDK to v0.50.6, CometBFT to v0.38.6, ibc-go to v8.2.1 + <!-- add ethermint bump up info after release --> + +### Improvements + +- (ante) [#126](https://github.com/Canto-Network/Canto/pull/126) +- (x/*) [#126](https://github.com/Canto-Network/Canto/pull/126) Apply Cosmos-SDK improvements. + - Remove `Type()` and `Route()` methods from all msgs + - Remove `GetSigner()` methods from all msgs, move their logic to protobuf and define a custom GetSigner func if needed. + - `authority` has been added to the required module to execute proposal msgs. + +### Client Breaking + +- (x/*) [#126](https://github.com/Canto-Network/Canto/pull/126) `MsgUpdateParams` have been added to support msgs-based gov proposals. + +<!-- Release links --> diff --git a/go.mod b/go.mod index 3fb509143..0ecda19cc 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ require ( replace ( cosmossdk.io/core => cosmossdk.io/core v0.11.0 github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0 + github.com/evmos/ethermint => github.com/b-harvest/ethermint v0.0.0-20240522071332-141696ab0067 // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index 885565e3d..1cb21913b 100644 --- a/go.sum +++ b/go.sum @@ -272,8 +272,8 @@ github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0 h1:NafSVwlLDjntFod++cNlmkhLVzqWq+hgFpr1YoSO2rY= -github.com/b-harvest/ethermint v0.0.0-20240521071952-c1afd132ffa0/go.mod h1:yIntu4jTOBVrMeRL7/tBJtM0Cm/OzTiWUfy6DKtZyn0= +github.com/b-harvest/ethermint v0.0.0-20240522071332-141696ab0067 h1:uKcNTyo9thx/pTwhLDF0BhLHH6QOQYckdyscDlOBwQY= +github.com/b-harvest/ethermint v0.0.0-20240522071332-141696ab0067/go.mod h1:yIntu4jTOBVrMeRL7/tBJtM0Cm/OzTiWUfy6DKtZyn0= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= From f57919390ad1fc3cb91ef8653daf47b1ed4b7641 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Wed, 22 May 2024 16:18:41 +0900 Subject: [PATCH 95/96] docs: changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e18fa109..7103e95a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements -- (ante) [#126](https://github.com/Canto-Network/Canto/pull/126) +- (ante) [#126](https://github.com/Canto-Network/Canto/pull/126) Remove NewValidatorCommissionDecorator because its logic is duplicated with the logic implemented in the staking module's msg server. - (x/*) [#126](https://github.com/Canto-Network/Canto/pull/126) Apply Cosmos-SDK improvements. - Remove `Type()` and `Route()` methods from all msgs - Remove `GetSigner()` methods from all msgs, move their logic to protobuf and define a custom GetSigner func if needed. @@ -52,6 +52,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Client Breaking -- (x/*) [#126](https://github.com/Canto-Network/Canto/pull/126) `MsgUpdateParams` have been added to support msgs-based gov proposals. +- (x/*) [#126](https://github.com/Canto-Network/Canto/pull/126) module-specific proposal and update params is moved to msg levelto to support msgs-based gov proposals. <!-- Release links --> From f982413df78017d6a4f83f3b1214b00c1b61dc19 Mon Sep 17 00:00:00 2001 From: dudong2 <leesj9476lsj@gmail.com> Date: Thu, 30 May 2024 15:42:01 +0900 Subject: [PATCH 96/96] test: Fix sim_test using TestFullAppSimulation func --- Makefile | 3 ++- app/sim_test.go | 7 ++++--- init.sh | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 983459587..54943d30c 100755 --- a/Makefile +++ b/Makefile @@ -390,7 +390,8 @@ test-sim-nondeterminism-long: test-sim-custom-genesis-fast: @echo "Running custom genesis simulation..." @echo "By default, ${HOME}/.$(canto_DIR)/config/genesis.json will be used." - @go test -mod=readonly $(SIMAPP) -run TestFullAppSimulation -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=5 -Period=1 -v -timeout 1h + @go test -mod=readonly $(SIMAPP) -run TestFullAppSimulation -Genesis=${HOME}/.$(canto_DIR)/config/genesis.json \ + -Enabled=true -NumBlocks=100 -BlockSize=200 -Commit=true -Seed=5 -Period=1 -v -timeout 1h test-sim-import-export: runsim @echo "Running application import/export simulation. This may take several minutes..." diff --git a/app/sim_test.go b/app/sim_test.go index 9050c565c..974b7b758 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -69,7 +69,10 @@ func interBlockCacheOpt() func(app *baseapp.BaseApp) { func TestFullAppSimulation(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = types.TestnetChainID + "-1" - sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) + + if simcli.FlagGenesisFileValue == "" { + sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) + } db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { @@ -118,8 +121,6 @@ func TestAppImportExport(t *testing.T) { config := simcli.NewConfigFromFlags() config.ChainID = types.TestnetChainID + "-1" - sdk.DefaultPowerReduction = sdkmath.NewIntFromUint64(1000000) - db, dir, logger, skip, err := simtestutil.SetupSimulation(config, "leveldb-app-sim", "Simulation", simcli.FlagVerboseValue, simcli.FlagEnabledValue) if skip { t.Skip("skipping application import/export simulation") diff --git a/init.sh b/init.sh index f10730dd0..fd9793517 100755 --- a/init.sh +++ b/init.sh @@ -1,4 +1,5 @@ KEY="mykey" +KEY1="mykey1" CHAINID="canto_9000-1" MONIKER="localtestnet" KEYRING="test" @@ -21,6 +22,7 @@ cantod config set client keyring-backend $KEYRING # if $KEY exists it should be deleted cantod keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO +cantod keys add $KEY1 --keyring-backend $KEYRING --algo $KEYALGO # Set moniker and chain-id for canto (Moniker can be anything, chain-id must be an integer) cantod init $MONIKER --chain-id $CHAINID @@ -85,12 +87,13 @@ fi # Allocate genesis accounts (cosmos formatted addresses) cantod add-genesis-account $KEY 100000000000000000000010000acanto --keyring-backend $KEYRING +cantod add-genesis-account $KEY1 100000000000000000000000000acanto --keyring-backend $KEYRING # Update total supply with claim values validators_supply=$(cat $HOME/.cantod/config/genesis.json | jq -r '.app_state["bank"]["supply"][0]["amount"]') # Bc is required to add this big numbers # total_supply=$(bc <<< "$amount_to_claim+$validators_supply") -total_supply=100000000000000000000010000 +total_supply=200000000000000000000010000 cat $HOME/.cantod/config/genesis.json | jq -r --arg total_supply "$total_supply" '.app_state["bank"]["supply"][0]["amount"]=$total_supply' > $HOME/.cantod/config/tmp_genesis.json && mv $HOME/.cantod/config/tmp_genesis.json $HOME/.cantod/config/genesis.json # Sign genesis transaction